eula.txt0000644€­ Q01134020000000277115113665770011441 0ustar aakkasmklCopyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. EXAMPLES/0002755€­ Q01134020000000000015113665770011163 5ustar aakkasmklEXAMPLES/windowsbuild_clang.bat0000755€­ Q01134020000001126315113665770015535 0ustar aakkasmklecho "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 000 **************************" echo "" echo "" copy /Y main.c_000 main.c copy /Y decimal.h_000 decimal.h copy /Y ..\LIBRARY\clang000libbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 001 **************************" echo "" echo "" copy /Y main.c_001 main.c copy /Y decimal.h_001 decimal.h copy /Y ..\LIBRARY\clang001libbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 010 **************************" echo "" echo "" copy /Y main.c_010 main.c copy /Y decimal.h_010 decimal.h copy /Y ..\LIBRARY\clang010libbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 011 **************************" echo "" echo "" copy /Y main.c_011 main.c copy /Y decimal.h_011 decimal.h copy /Y ..\LIBRARY\clang011libbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 100 **************************" echo "" echo "" copy /Y main.c_100 main.c copy /Y decimal.h_100 decimal.h copy /Y ..\LIBRARY\clang100libbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 101 **************************" echo "" echo "" copy /Y main.c_101 main.c copy /Y decimal.h_101 decimal.h copy /Y ..\LIBRARY\clang101libbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 110 **************************" echo "" echo "" copy /Y main.c_110 main.c copy /Y decimal.h_110 decimal.h copy /Y ..\LIBRARY\clang110libbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 111 **************************" echo "" echo "" copy /Y main.c_111 main.c copy /Y decimal.h_111 decimal.h copy /Y ..\LIBRARY\clang111libbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe del main.exe main.c decimal.h del ..\LIBRARY\libbid.lib echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 000b **************************" echo "" echo "" copy /Y main.c_000 main.c copy /Y decimal.h_000 decimal.h copy /Y ..\LIBRARY\clang000blibbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 001b **************************" echo "" echo "" copy /Y main.c_001 main.c copy /Y decimal.h_001 decimal.h copy /Y ..\LIBRARY\clang001blibbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 010b **************************" echo "" echo "" copy /Y main.c_010 main.c copy /Y decimal.h_010 decimal.h copy /Y ..\LIBRARY\clang010blibbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 011b **************************" echo "" echo "" copy /Y main.c_011 main.c copy /Y decimal.h_011 decimal.h copy /Y ..\LIBRARY\clang011blibbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 100b **************************" echo "" echo "" copy /Y main.c_100 main.c copy /Y decimal.h_100 decimal.h copy /Y ..\LIBRARY\clang100blibbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 101b **************************" echo "" echo "" copy /Y main.c_101 main.c copy /Y decimal.h_101 decimal.h copy /Y ..\LIBRARY\clang101blibbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 110b **************************" echo "" echo "" copy /Y main.c_110 main.c copy /Y decimal.h_110 decimal.h copy /Y ..\LIBRARY\clang110blibbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 111b **************************" echo "" echo "" copy /Y main.c_111 main.c copy /Y decimal.h_111 decimal.h copy /Y ..\LIBRARY\clang111blibbid.lib ..\LIBRARY\libbid.lib clang -o main.exe main.c ..\LIBRARY\libbid.lib %1 main.exe del main.exe main.c decimal.h del ..\LIBRARY\libbid.lib EXAMPLES/main.c_1100000644€­ Q01134020000001231215113665770012631 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 110: // 1 arguments passed by reference // 1 rounding mode passed in a global variable // 0 pointer to status flags passed as argument #include #include #include "decimal.h" int main () { Decimal128 x, y, z; _IDEC_flags my_fpsf = _IDEC_allflagsclear; printf ("Begin Decimal Floating-Point Sanity Check\n"); // 2 * 3 = 6 __bid_IDEC_glbround = _IDEC_nearesteven; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x3040000000000000ull; x.w[LOW_128W] = 0x0000000000000002ull; // x = 2 y.w[HIGH_128W] = 0x3040000000000000ull; y.w[LOW_128W] = 0x0000000000000003ull; // y = 3 __bid128_mul (&z, &x, &y, &my_fpsf); if (z.w[HIGH_128W] != 0x3040000000000000ull || z.w[LOW_128W] != 0x0000000000000006ull || my_fpsf != _IDEC_allflagsclear) { printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=3040000000000000 0000000000000006 my_fpsf=00000000\n"); printf ("ERROR: TEST CASE 1 FOR __bid128_mul 110 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 1 FOR __bid128_mul 110 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint __bid_IDEC_glbround = _IDEC_nearesteven; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits __bid128_mul (&z, &x, &y, &my_fpsf); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000051 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec33ull || my_fpsf != _IDEC_inexact) { // 9999999999999998570002110000000051 * 10^212, inexact printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec33 my_fpsf=00000020\n"); printf ("ERROR: TEST CASE 2 FOR __bid128_mul 110 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 2 FOR __bid128_mul 110 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint __bid_IDEC_glbround = _IDEC_towardzero; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits __bid128_mul (&z, &x, &y, &my_fpsf); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000050 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec32ull || my_fpsf != _IDEC_inexact) { // 9999999999999998570002110000000050 * 10^212, inexact printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec32 my_fpsf=00000020\n"); printf ("ERROR: TEST CASE 3 FOR __bid128_mul 110 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 3 FOR __bid128_mul 110 () PASSED\n"); } printf ("End Decimal Floating-Point Sanity Check\n"); } EXAMPLES/windowsbuild_cl.bat0000755€­ Q01134020000001100315113665770015037 0ustar aakkasmklecho "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 000 **************************" echo "" echo "" copy /Y main.c_000 main.c copy /Y decimal.h_000 decimal.h copy /Y ..\LIBRARY\cl000libbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 001 **************************" echo "" echo "" copy /Y main.c_001 main.c copy /Y decimal.h_001 decimal.h copy /Y ..\LIBRARY\cl001libbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 010 **************************" echo "" echo "" copy /Y main.c_010 main.c copy /Y decimal.h_010 decimal.h copy /Y ..\LIBRARY\cl010libbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 011 **************************" echo "" echo "" copy /Y main.c_011 main.c copy /Y decimal.h_011 decimal.h copy /Y ..\LIBRARY\cl011libbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 100 **************************" echo "" echo "" copy /Y main.c_100 main.c copy /Y decimal.h_100 decimal.h copy /Y ..\LIBRARY\cl100libbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 101 **************************" echo "" echo "" copy /Y main.c_101 main.c copy /Y decimal.h_101 decimal.h copy /Y ..\LIBRARY\cl101libbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 110 **************************" echo "" echo "" copy /Y main.c_110 main.c copy /Y decimal.h_110 decimal.h copy /Y ..\LIBRARY\cl110libbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 111 **************************" echo "" echo "" copy /Y main.c_111 main.c copy /Y decimal.h_111 decimal.h copy /Y ..\LIBRARY\cl111libbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe del main.exe main.c decimal.h del ..\LIBRARY\libbid.lib echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 000b **************************" echo "" echo "" copy /Y main.c_000 main.c copy /Y decimal.h_000 decimal.h copy /Y ..\LIBRARY\cl000blibbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 001b **************************" echo "" echo "" copy /Y main.c_001 main.c copy /Y decimal.h_001 decimal.h copy /Y ..\LIBRARY\cl001blibbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 010b **************************" echo "" echo "" copy /Y main.c_010 main.c copy /Y decimal.h_010 decimal.h copy /Y ..\LIBRARY\cl010blibbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 011b **************************" echo "" echo "" copy /Y main.c_011 main.c copy /Y decimal.h_011 decimal.h copy /Y ..\LIBRARY\cl011blibbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 100b **************************" echo "" echo "" copy /Y main.c_100 main.c copy /Y decimal.h_100 decimal.h copy /Y ..\LIBRARY\cl100blibbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 101b **************************" echo "" echo "" copy /Y main.c_101 main.c copy /Y decimal.h_101 decimal.h copy /Y ..\LIBRARY\cl101blibbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 110b **************************" echo "" echo "" copy /Y main.c_110 main.c copy /Y decimal.h_110 decimal.h copy /Y ..\LIBRARY\cl110blibbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR cl 111b **************************" echo "" echo "" copy /Y main.c_111 main.c copy /Y decimal.h_111 decimal.h copy /Y ..\LIBRARY\cl111blibbid.lib ..\LIBRARY\libbid.lib cl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe del main.exe main.c decimal.h del ..\LIBRARY\libbid.lib EXAMPLES/RUNLINUXINTEL64_GCC0000755€­ Q01134020000000045615113665770014022 0ustar aakkasmklecho "BEGIN BUILDING AND RUNNING EXAMPLES IN LINUX..." rm linuxout a.out ./linuxbuild_gcc > linuxout # grep PASS linuxout cat linuxout grep FAIL linuxout rm linuxout main.c decimal.h echo "END BUILDING AND RUNNING EXAMPLES IN LINUX..." echo "THE TESTS PASSED IF THE WORD 'FAIL' WAS NOT PRINTED ABOVE" EXAMPLES/RUNWINDOWSINTEL64_ICL.bat0000755€­ Q01134020000000031315113665770015025 0ustar aakkasmklecho "BEGIN BUILDING AND RUNNING EXAMPLES IN WINDOWS..." call windowsbuild_icl.bat echo "END BUILDING AND RUNNING EXAMPLES IN WINDOWS..." echo "THE TESTS PASSED IF THE WORD 'FAIL' WAS NOT PRINTED ABOVE" EXAMPLES/RUNWINDOWSINTEL64_ICX.bat0000755€­ Q01134020000000031315113665770015041 0ustar aakkasmklecho "BEGIN BUILDING AND RUNNING EXAMPLES IN WINDOWS..." call windowsbuild_icx.bat echo "END BUILDING AND RUNNING EXAMPLES IN WINDOWS..." echo "THE TESTS PASSED IF THE WORD 'FAIL' WAS NOT PRINTED ABOVE" EXAMPLES/RUNWINDOWSINTEL64_CL.bat0000755€­ Q01134020000000031215113665770014713 0ustar aakkasmklecho "BEGIN BUILDING AND RUNNING EXAMPLES IN WINDOWS..." call windowsbuild_cl.bat echo "END BUILDING AND RUNNING EXAMPLES IN WINDOWS..." echo "THE TESTS PASSED IF THE WORD 'FAIL' WAS NOT PRINTED ABOVE" EXAMPLES/linuxbuild_icc0000755€­ Q01134020000001020015113665770014075 0ustar aakkasmklecho "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 000 **************************" echo "" echo "" cp main.c_000 main.c cp decimal.h_000 decimal.h cp ../LIBRARY/icc000libbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 001 **************************" echo "" echo "" cp main.c_001 main.c cp decimal.h_001 decimal.h cp ../LIBRARY/icc001libbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 010 **************************" echo "" echo "" cp main.c_010 main.c cp decimal.h_010 decimal.h cp ../LIBRARY/icc010libbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 011 **************************" echo "" echo "" cp main.c_011 main.c cp decimal.h_011 decimal.h cp ../LIBRARY/icc011libbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 100 **************************" echo "" echo "" cp main.c_100 main.c cp decimal.h_100 decimal.h cp ../LIBRARY/icc100libbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 101 **************************" echo "" echo "" cp main.c_101 main.c cp decimal.h_101 decimal.h cp ../LIBRARY/icc101libbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 110 **************************" echo "" echo "" cp main.c_110 main.c cp decimal.h_110 decimal.h cp ../LIBRARY/icc110libbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 111 **************************" echo "" echo "" cp main.c_111 main.c cp decimal.h_111 decimal.h cp ../LIBRARY/icc111libbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out rm ../LIBRARY/libbid.a echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 000b **************************" echo "" echo "" cp main.c_000 main.c cp decimal.h_000 decimal.h cp ../LIBRARY/icc000blibbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 001b **************************" echo "" echo "" cp main.c_001 main.c cp decimal.h_001 decimal.h cp ../LIBRARY/icc001blibbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 010b **************************" echo "" echo "" cp main.c_010 main.c cp decimal.h_010 decimal.h cp ../LIBRARY/icc010blibbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 011b **************************" echo "" echo "" cp main.c_011 main.c cp decimal.h_011 decimal.h cp ../LIBRARY/icc011blibbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 100b **************************" echo "" echo "" cp main.c_100 main.c cp decimal.h_100 decimal.h cp ../LIBRARY/icc100blibbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 101b **************************" echo "" echo "" cp main.c_101 main.c cp decimal.h_101 decimal.h cp ../LIBRARY/icc101blibbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 110b **************************" echo "" echo "" cp main.c_110 main.c cp decimal.h_110 decimal.h cp ../LIBRARY/icc110blibbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icc 111b **************************" echo "" echo "" cp main.c_111 main.c cp decimal.h_111 decimal.h cp ../LIBRARY/icc111blibbid.a ../LIBRARY/libbid.a icc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out rm ../LIBRARY/libbid.a EXAMPLES/main.c_1000000644€­ Q01134020000001237715113665770012643 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 100: // 1 arguments passed by reference // 0 rounding mode passed as argument // 0 pointer to status flags passed as argument #include #include #include "decimal.h" int main () { Decimal128 x, y, z; _IDEC_round my_rnd_mode = _IDEC_dflround; _IDEC_flags my_fpsf = _IDEC_allflagsclear; printf ("Begin Decimal Floating-Point Sanity Check\n"); // 2 * 3 = 6 my_rnd_mode = _IDEC_nearesteven; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x3040000000000000ull; x.w[LOW_128W] = 0x0000000000000002ull; // x = 2 y.w[HIGH_128W] = 0x3040000000000000ull; y.w[LOW_128W] = 0x0000000000000003ull; // y = 3 __bid128_mul (&z, &x, &y, &my_rnd_mode, &my_fpsf); if (z.w[HIGH_128W] != 0x3040000000000000ull || z.w[LOW_128W] != 0x0000000000000006ull || my_fpsf != _IDEC_allflagsclear) { printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=3040000000000000 0000000000000006 my_fpsf=00000000\n"); printf ("ERROR: TEST CASE 1 FOR __bid128_mul 100 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 1 FOR __bid128_mul 100 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint my_rnd_mode = _IDEC_nearesteven; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits __bid128_mul (&z, &x, &y, &my_rnd_mode, &my_fpsf); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000051 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec33ull || my_fpsf != _IDEC_inexact) { // 9999999999999998570002110000000051 * 10^212, inexact printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec33 my_fpsf=00000020\n"); printf ("ERROR: TEST CASE 2 FOR __bid128_mul 100 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 2 FOR __bid128_mul 100 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint my_rnd_mode = _IDEC_towardzero; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits __bid128_mul (&z, &x, &y, &my_rnd_mode, &my_fpsf); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000050 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec32ull || my_fpsf != _IDEC_inexact) { // 9999999999999998570002110000000050 * 10^212, inexact printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec32 my_fpsf=00000020\n"); printf ("ERROR: TEST CASE 3 FOR __bid128_mul 100 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 3 FOR __bid128_mul 100 () PASSED\n"); } printf ("End Decimal Floating-Point Sanity Check\n"); } EXAMPLES/decimal.h_0010000644€­ Q01134020000000702215113665770013311 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 001: // 0 arguments passed by value (except fpsf) // 0 rounding mode passed as argument // 1 status flags in global variable #if defined(__clang__) #define LX "%llx" #else #ifdef WINDOWS #define LX "%I64x" #else #if defined(HPUX_OS) #define LX "%llx" #else #define LX "%Lx" #endif #endif #endif #ifndef BID_THREAD #if defined (_MSC_VER) //Windows #define BID_THREAD __declspec(thread) #else #if !defined(__APPLE__) //Linux, FreeBSD #define BID_THREAD __thread #else //Mac OSX, TBD #define BID_THREAD #endif //Linux or Mac #endif //Windows #endif //BID_THREAD /* basic decimal floating-point types */ #if defined _MSC_VER #if defined _M_IX86 && !defined __INTEL_COMPILER // Win IA-32, MS compiler #define ALIGN(n) #else #define ALIGN(n) __declspec(align(n)) #endif #else #define ALIGN(n) __attribute__ ((aligned(n))) #endif typedef unsigned int Decimal32; typedef unsigned long long Decimal64; typedef struct ALIGN(16) { unsigned long long w[2]; } Decimal128; /* rounding modes */ typedef enum _IDEC_roundingmode { _IDEC_nearesteven = 0, _IDEC_downward = 1, _IDEC_upward = 2, _IDEC_towardzero = 3, _IDEC_nearestaway = 4, _IDEC_dflround = _IDEC_nearesteven } _IDEC_roundingmode; typedef unsigned int _IDEC_round; /* exception flags */ typedef enum _IDEC_flagbits { _IDEC_invalid = 0x01, _IDEC_zerodivide = 0x04, _IDEC_overflow = 0x08, _IDEC_underflow = 0x10, _IDEC_inexact = 0x20, _IDEC_allflagsclear = 0x00 } _IDEC_flagbits; typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info extern BID_THREAD _IDEC_flags __bid_IDEC_glbflags; extern Decimal128 __bid128_mul ( Decimal128, Decimal128, _IDEC_round ); #if BID_BIG_ENDIAN #define HIGH_128W 0 #define LOW_128W 1 #else #define HIGH_128W 1 #define LOW_128W 0 #endif EXAMPLES/decimal.h_1000000644€­ Q01134020000000637315113665770013321 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 100: // 1 arguments passed by reference // 0 rounding mode passed as argument // 0 pointer to status flags passed as argument #if defined(__clang__) #define LX "%llx" #else #ifdef WINDOWS #define LX "%I64x" #else #if defined(HPUX_OS) #define LX "%llx" #else #define LX "%Lx" #endif #endif #endif /* basic decimal floating-point types */ #if defined _MSC_VER #if defined _M_IX86 && !defined __INTEL_COMPILER // Win IA-32, MS compiler #define ALIGN(n) #else #define ALIGN(n) __declspec(align(n)) #endif #else #define ALIGN(n) __attribute__ ((aligned(n))) #endif typedef unsigned int Decimal32; typedef unsigned long long Decimal64; typedef struct ALIGN(16) { unsigned long long w[2]; } Decimal128; /* rounding modes */ typedef enum _IDEC_roundingmode { _IDEC_nearesteven = 0, _IDEC_downward = 1, _IDEC_upward = 2, _IDEC_towardzero = 3, _IDEC_nearestaway = 4, _IDEC_dflround = _IDEC_nearesteven } _IDEC_roundingmode; typedef unsigned int _IDEC_round; /* exception flags */ typedef enum _IDEC_flagbits { _IDEC_invalid = 0x01, _IDEC_zerodivide = 0x04, _IDEC_overflow = 0x08, _IDEC_underflow = 0x10, _IDEC_inexact = 0x20, _IDEC_allflagsclear = 0x00 } _IDEC_flagbits; typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info extern void __bid128_mul ( Decimal128 *, Decimal128 *, Decimal128 *, _IDEC_round *, _IDEC_flags * ); #if BID_BIG_ENDIAN #define HIGH_128W 0 #define LOW_128W 1 #else #define HIGH_128W 1 #define LOW_128W 0 #endif EXAMPLES/windowsbuild_icx.bat0000755€­ Q01134020000001106315113665770015232 0ustar aakkasmklecho "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 000 **************************" echo "" echo "" copy /Y main.c_000 main.c copy /Y decimal.h_000 decimal.h copy /Y ..\LIBRARY\icx000libbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 001 **************************" echo "" echo "" copy /Y main.c_001 main.c copy /Y decimal.h_001 decimal.h copy /Y ..\LIBRARY\icx001libbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 010 **************************" echo "" echo "" copy /Y main.c_010 main.c copy /Y decimal.h_010 decimal.h copy /Y ..\LIBRARY\icx010libbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 011 **************************" echo "" echo "" copy /Y main.c_011 main.c copy /Y decimal.h_011 decimal.h copy /Y ..\LIBRARY\icx011libbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 100 **************************" echo "" echo "" copy /Y main.c_100 main.c copy /Y decimal.h_100 decimal.h copy /Y ..\LIBRARY\icx100libbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 101 **************************" echo "" echo "" copy /Y main.c_101 main.c copy /Y decimal.h_101 decimal.h copy /Y ..\LIBRARY\icx101libbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 110 **************************" echo "" echo "" copy /Y main.c_110 main.c copy /Y decimal.h_110 decimal.h copy /Y ..\LIBRARY\icx110libbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 111 **************************" echo "" echo "" copy /Y main.c_111 main.c copy /Y decimal.h_111 decimal.h copy /Y ..\LIBRARY\icx111libbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe del main.exe main.c decimal.h del ..\LIBRARY\libbid.lib echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 000b **************************" echo "" echo "" copy /Y main.c_000 main.c copy /Y decimal.h_000 decimal.h copy /Y ..\LIBRARY\icx000blibbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 001b **************************" echo "" echo "" copy /Y main.c_001 main.c copy /Y decimal.h_001 decimal.h copy /Y ..\LIBRARY\icx001blibbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 010b **************************" echo "" echo "" copy /Y main.c_010 main.c copy /Y decimal.h_010 decimal.h copy /Y ..\LIBRARY\icx010blibbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 011b **************************" echo "" echo "" copy /Y main.c_011 main.c copy /Y decimal.h_011 decimal.h copy /Y ..\LIBRARY\icx011blibbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 100b **************************" echo "" echo "" copy /Y main.c_100 main.c copy /Y decimal.h_100 decimal.h copy /Y ..\LIBRARY\icx100blibbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 101b **************************" echo "" echo "" copy /Y main.c_101 main.c copy /Y decimal.h_101 decimal.h copy /Y ..\LIBRARY\icx101blibbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 110b **************************" echo "" echo "" copy /Y main.c_110 main.c copy /Y decimal.h_110 decimal.h copy /Y ..\LIBRARY\icx110blibbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 111b **************************" echo "" echo "" copy /Y main.c_111 main.c copy /Y decimal.h_111 decimal.h copy /Y ..\LIBRARY\icx111blibbid.lib ..\LIBRARY\libbid.lib icx main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe del main.exe main.c decimal.h del ..\LIBRARY\libbid.lib EXAMPLES/decimal.h_0100000644€­ Q01134020000000704415113665770013315 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 010: // 0 arguments passed by value (except fpsf) // 1 rounding mode passed in global variable // 0 pointer to status flags passed as argument #if defined(__clang__) #define LX "%llx" #else #ifdef WINDOWS #define LX "%I64x" #else #if defined(HPUX_OS) #define LX "%llx" #else #define LX "%Lx" #endif #endif #endif #ifndef BID_THREAD #if defined (_MSC_VER) //Windows #define BID_THREAD __declspec(thread) #else #if !defined(__APPLE__) //Linux, FreeBSD #define BID_THREAD __thread #else //Mac OSX, TBD #define BID_THREAD #endif //Linux or Mac #endif //Windows #endif //BID_THREAD /* basic decimal floating-point types */ #if defined _MSC_VER #if defined _M_IX86 && !defined __INTEL_COMPILER // Win IA-32, MS compiler #define ALIGN(n) #else #define ALIGN(n) __declspec(align(n)) #endif #else #define ALIGN(n) __attribute__ ((aligned(n))) #endif typedef unsigned int Decimal32; typedef unsigned long long Decimal64; typedef struct ALIGN(16) { unsigned long long w[2]; } Decimal128; /* rounding modes */ typedef enum _IDEC_roundingmode { _IDEC_nearesteven = 0, _IDEC_downward = 1, _IDEC_upward = 2, _IDEC_towardzero = 3, _IDEC_nearestaway = 4, _IDEC_dflround = _IDEC_nearesteven } _IDEC_roundingmode; typedef unsigned int _IDEC_round; extern BID_THREAD _IDEC_round __bid_IDEC_glbround; /* exception flags */ typedef enum _IDEC_flagbits { _IDEC_invalid = 0x01, _IDEC_zerodivide = 0x04, _IDEC_overflow = 0x08, _IDEC_underflow = 0x10, _IDEC_inexact = 0x20, _IDEC_allflagsclear = 0x00 } _IDEC_flagbits; typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info extern Decimal128 __bid128_mul ( Decimal128, Decimal128, _IDEC_flags * ); #if BID_BIG_ENDIAN #define HIGH_128W 0 #define LOW_128W 1 #else #define HIGH_128W 1 #define LOW_128W 0 #endif EXAMPLES/main.c_1110000644€­ Q01134020000001254015113665770012635 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 111: // 1 arguments passed by reference // 1 rounding mode passed in global variable // 1 status flags in global variable #include #include #include "decimal.h" int main () { Decimal128 x, y, z; printf ("Begin Decimal Floating-Point Sanity Check\n"); // 2 * 3 = 6 __bid_IDEC_glbround = _IDEC_nearesteven; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x3040000000000000ull; x.w[LOW_128W] = 0x0000000000000002ull; // x = 2 y.w[HIGH_128W] = 0x3040000000000000ull; y.w[LOW_128W] = 0x0000000000000003ull; // y = 3 __bid128_mul (&z, &x, &y); if (z.w[HIGH_128W] != 0x3040000000000000ull || z.w[LOW_128W] != 0x0000000000000006ull || __bid_IDEC_glbflags != _IDEC_allflagsclear) { printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=3040000000000000 0000000000000006 " "__bid_IDEC_glbflags=00000000\n"); printf ("ERROR: TEST CASE 1 FOR __bid128_mul 111 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 1 FOR __bid128_mul 111 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint __bid_IDEC_glbround = _IDEC_nearesteven; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits __bid128_mul (&z, &x, &y); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000051 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec33ull || __bid_IDEC_glbflags != _IDEC_inexact) { // 9999999999999998570002110000000051 * 10^212, inexact printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec33 " "__bid_IDEC_glbflags=00000020\n"); printf ("ERROR: TEST CASE 2 FOR __bid128_mul 111 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 2 FOR __bid128_mul 111 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint __bid_IDEC_glbround = _IDEC_towardzero; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits __bid128_mul (&z, &x, &y); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000050 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec32ull || __bid_IDEC_glbflags != _IDEC_inexact) { // 9999999999999998570002110000000050 * 10^212, inexact printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec32 " "__bid_IDEC_glbflags=00000020\n"); printf ("ERROR: TEST CASE 3 FOR __bid128_mul 111 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 3 FOR __bid128_mul 111 () PASSED\n"); } printf ("End Decimal Floating-Point Sanity Check\n"); } EXAMPLES/main.c_1010000644€­ Q01134020000001263515113665770012641 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 101: // 1 arguments passed by value reference // 0 rounding mode passed as argument // 1 status flags in global variable #include #include #include "decimal.h" int main () { Decimal128 x, y, z; _IDEC_round my_rnd_mode = _IDEC_dflround; printf ("Begin Decimal Floating-Point Sanity Check\n"); // 2 * 3 = 6 my_rnd_mode = _IDEC_nearesteven; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x3040000000000000ull; x.w[LOW_128W] = 0x0000000000000002ull; // x = 2 y.w[HIGH_128W] = 0x3040000000000000ull; y.w[LOW_128W] = 0x0000000000000003ull; // y = 3 __bid128_mul (&z, &x, &y, &my_rnd_mode); if (z.w[HIGH_128W] != 0x3040000000000000ull || z.w[LOW_128W] != 0x0000000000000006ull || __bid_IDEC_glbflags != _IDEC_allflagsclear) { printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=3040000000000000 0000000000000006 " "__bid_IDEC_glbflags=00000000\n"); printf ("ERROR: TEST CASE 1 FOR __bid128_mul 101 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 1 FOR __bid128_mul 101 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint my_rnd_mode = _IDEC_nearesteven; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits __bid128_mul (&z, &x, &y, &my_rnd_mode); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000051 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec33ull || __bid_IDEC_glbflags != _IDEC_inexact) { // 9999999999999998570002110000000051 * 10^212, inexact printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec33 " "__bid_IDEC_glbflags=00000020\n"); printf ("ERROR: TEST CASE 2 FOR __bid128_mul 101 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 2 FOR __bid128_mul 101 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint my_rnd_mode = _IDEC_towardzero; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits __bid128_mul (&z, &x, &y, &my_rnd_mode); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000050 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec32ull || __bid_IDEC_glbflags != _IDEC_inexact) { // 9999999999999998570002110000000050 * 10^212, inexact printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec32 " "__bid_IDEC_glbflags=00000020\n"); printf ("ERROR: TEST CASE 3 FOR __bid128_mul 101 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 3 FOR __bid128_mul 101 () PASSED\n"); } printf ("End Decimal Floating-Point Sanity Check\n"); } EXAMPLES/linuxbuild_icx0000755€­ Q01134020000001020015113665770014122 0ustar aakkasmklecho "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 000 **************************" echo "" echo "" cp main.c_000 main.c cp decimal.h_000 decimal.h cp ../LIBRARY/icx000libbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 001 **************************" echo "" echo "" cp main.c_001 main.c cp decimal.h_001 decimal.h cp ../LIBRARY/icx001libbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 010 **************************" echo "" echo "" cp main.c_010 main.c cp decimal.h_010 decimal.h cp ../LIBRARY/icx010libbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 011 **************************" echo "" echo "" cp main.c_011 main.c cp decimal.h_011 decimal.h cp ../LIBRARY/icx011libbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 100 **************************" echo "" echo "" cp main.c_100 main.c cp decimal.h_100 decimal.h cp ../LIBRARY/icx100libbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 101 **************************" echo "" echo "" cp main.c_101 main.c cp decimal.h_101 decimal.h cp ../LIBRARY/icx101libbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 110 **************************" echo "" echo "" cp main.c_110 main.c cp decimal.h_110 decimal.h cp ../LIBRARY/icx110libbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 111 **************************" echo "" echo "" cp main.c_111 main.c cp decimal.h_111 decimal.h cp ../LIBRARY/icx111libbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out rm ../LIBRARY/libbid.a echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 000b **************************" echo "" echo "" cp main.c_000 main.c cp decimal.h_000 decimal.h cp ../LIBRARY/icx000blibbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 001b **************************" echo "" echo "" cp main.c_001 main.c cp decimal.h_001 decimal.h cp ../LIBRARY/icx001blibbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 010b **************************" echo "" echo "" cp main.c_010 main.c cp decimal.h_010 decimal.h cp ../LIBRARY/icx010blibbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 011b **************************" echo "" echo "" cp main.c_011 main.c cp decimal.h_011 decimal.h cp ../LIBRARY/icx011blibbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 100b **************************" echo "" echo "" cp main.c_100 main.c cp decimal.h_100 decimal.h cp ../LIBRARY/icx100blibbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 101b **************************" echo "" echo "" cp main.c_101 main.c cp decimal.h_101 decimal.h cp ../LIBRARY/icx101blibbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 110b **************************" echo "" echo "" cp main.c_110 main.c cp decimal.h_110 decimal.h cp ../LIBRARY/icx110blibbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icx 111b **************************" echo "" echo "" cp main.c_111 main.c cp decimal.h_111 decimal.h cp ../LIBRARY/icx111blibbid.a ../LIBRARY/libbid.a icx $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out rm ../LIBRARY/libbid.a EXAMPLES/decimal.h_1010000644€­ Q01134020000000703415113665770013315 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 101: // 1 arguments passed by reference // 0 rounding mode passed as argument // 1 status flags in global variable #if defined(__clang__) #define LX "%llx" #else #ifdef WINDOWS #define LX "%I64x" #else #if defined(HPUX_OS) #define LX "%llx" #else #define LX "%Lx" #endif #endif #endif #ifndef BID_THREAD #if defined (_MSC_VER) //Windows #define BID_THREAD __declspec(thread) #else #if !defined(__APPLE__) //Linux, FreeBSD #define BID_THREAD __thread #else //Mac OSX, TBD #define BID_THREAD #endif //Linux or Mac #endif //Windows #endif //BID_THREAD /* basic decimal floating-point types */ #if defined _MSC_VER #if defined _M_IX86 && !defined __INTEL_COMPILER // Win IA-32, MS compiler #define ALIGN(n) #else #define ALIGN(n) __declspec(align(n)) #endif #else #define ALIGN(n) __attribute__ ((aligned(n))) #endif typedef unsigned int Decimal32; typedef unsigned long long Decimal64; typedef struct ALIGN(16) { unsigned long long w[2]; } Decimal128; /* rounding modes */ typedef enum _IDEC_roundingmode { _IDEC_nearesteven = 0, _IDEC_downward = 1, _IDEC_upward = 2, _IDEC_towardzero = 3, _IDEC_nearestaway = 4, _IDEC_dflround = _IDEC_nearesteven } _IDEC_roundingmode; typedef unsigned int _IDEC_round; /* exception flags */ typedef enum _IDEC_flagbits { _IDEC_invalid = 0x01, _IDEC_zerodivide = 0x04, _IDEC_overflow = 0x08, _IDEC_underflow = 0x10, _IDEC_inexact = 0x20, _IDEC_allflagsclear = 0x00 } _IDEC_flagbits; typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info extern BID_THREAD _IDEC_flags __bid_IDEC_glbflags; extern void __bid128_mul ( Decimal128 *, Decimal128 *, Decimal128 *, _IDEC_round * ); #if BID_BIG_ENDIAN #define HIGH_128W 0 #define LOW_128W 1 #else #define HIGH_128W 1 #define LOW_128W 0 #endif EXAMPLES/RUNLINUXINTEL64_ICC0000755€­ Q01134020000000045615113665770014024 0ustar aakkasmklecho "BEGIN BUILDING AND RUNNING EXAMPLES IN LINUX..." rm linuxout a.out ./linuxbuild_icc > linuxout # grep PASS linuxout cat linuxout grep FAIL linuxout rm linuxout main.c decimal.h echo "END BUILDING AND RUNNING EXAMPLES IN LINUX..." echo "THE TESTS PASSED IF THE WORD 'FAIL' WAS NOT PRINTED ABOVE" EXAMPLES/decimal.h_1110000644€­ Q01134020000000707715113665770013325 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 111: // 1 arguments passed by reference // 1 rounding mode passed in global variable // 1 status flags in global variable #if defined(__clang__) #define LX "%llx" #else #ifdef WINDOWS #define LX "%I64x" #else #if defined(HPUX_OS) #define LX "%llx" #else #define LX "%Lx" #endif #endif #endif #ifndef BID_THREAD #if defined (_MSC_VER) //Windows #define BID_THREAD __declspec(thread) #else #if !defined(__APPLE__) //Linux, FreeBSD #define BID_THREAD __thread #else //Mac OSX, TBD #define BID_THREAD #endif //Linux or Mac #endif //Windows #endif //BID_THREAD /* basic decimal floating-point types */ #if defined _MSC_VER #if defined _M_IX86 && !defined __INTEL_COMPILER // Win IA-32, MS compiler #define ALIGN(n) #else #define ALIGN(n) __declspec(align(n)) #endif #else #define ALIGN(n) __attribute__ ((aligned(n))) #endif typedef unsigned int Decimal32; typedef unsigned long long Decimal64; typedef struct ALIGN(16) { unsigned long long w[2]; } Decimal128; /* rounding modes */ typedef enum _IDEC_roundingmode { _IDEC_nearesteven = 0, _IDEC_downward = 1, _IDEC_upward = 2, _IDEC_towardzero = 3, _IDEC_nearestaway = 4, _IDEC_dflround = _IDEC_nearesteven } _IDEC_roundingmode; typedef unsigned int _IDEC_round; extern BID_THREAD _IDEC_round __bid_IDEC_glbround; /* exception flags */ typedef enum _IDEC_flagbits { _IDEC_invalid = 0x01, _IDEC_zerodivide = 0x04, _IDEC_overflow = 0x08, _IDEC_underflow = 0x10, _IDEC_inexact = 0x20, _IDEC_allflagsclear = 0x00 } _IDEC_flagbits; typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info extern BID_THREAD _IDEC_flags __bid_IDEC_glbflags; extern void __bid128_mul ( Decimal128 *, Decimal128 *, Decimal128 * ); #if BID_BIG_ENDIAN #define HIGH_128W 0 #define LOW_128W 1 #else #define HIGH_128W 1 #define LOW_128W 0 #endif EXAMPLES/RUNWINDOWSINTEL64_CLANG.bat0000755€­ Q01134020000000031515113665770015244 0ustar aakkasmklecho "BEGIN BUILDING AND RUNNING EXAMPLES IN WINDOWS..." call windowsbuild_clang.bat echo "END BUILDING AND RUNNING EXAMPLES IN WINDOWS..." echo "THE TESTS PASSED IF THE WORD 'FAIL' WAS NOT PRINTED ABOVE" EXAMPLES/RUNLINUXINTEL64_ICX0000755€­ Q01134020000000045615113665770014051 0ustar aakkasmklecho "BEGIN BUILDING AND RUNNING EXAMPLES IN LINUX..." rm linuxout a.out ./linuxbuild_icx > linuxout # grep PASS linuxout cat linuxout grep FAIL linuxout rm linuxout main.c decimal.h echo "END BUILDING AND RUNNING EXAMPLES IN LINUX..." echo "THE TESTS PASSED IF THE WORD 'FAIL' WAS NOT PRINTED ABOVE" EXAMPLES/decimal.h_1100000644€­ Q01134020000000705315113665770013316 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 110: // 1 arguments passed by reference // 1 rounding mode passed in global variable // 0 pointer to status flags passed as argument #if defined(__clang__) #define LX "%llx" #else #ifdef WINDOWS #define LX "%I64x" #else #if defined(HPUX_OS) #define LX "%llx" #else #define LX "%Lx" #endif #endif #endif #ifndef BID_THREAD #if defined (_MSC_VER) //Windows #define BID_THREAD __declspec(thread) #else #if !defined(__APPLE__) //Linux, FreeBSD #define BID_THREAD __thread #else //Mac OSX, TBD #define BID_THREAD #endif //Linux or Mac #endif //Windows #endif //BID_THREAD /* basic decimal floating-point types */ #if defined _MSC_VER #if defined _M_IX86 && !defined __INTEL_COMPILER // Win IA-32, MS compiler #define ALIGN(n) #else #define ALIGN(n) __declspec(align(n)) #endif #else #define ALIGN(n) __attribute__ ((aligned(n))) #endif typedef unsigned int Decimal32; typedef unsigned long long Decimal64; typedef struct ALIGN(16) { unsigned long long w[2]; } Decimal128; /* rounding modes */ typedef enum _IDEC_roundingmode { _IDEC_nearesteven = 0, _IDEC_downward = 1, _IDEC_upward = 2, _IDEC_towardzero = 3, _IDEC_nearestaway = 4, _IDEC_dflround = _IDEC_nearesteven } _IDEC_roundingmode; typedef unsigned int _IDEC_round; extern BID_THREAD _IDEC_round __bid_IDEC_glbround; /* exception flags */ typedef enum _IDEC_flagbits { _IDEC_invalid = 0x01, _IDEC_zerodivide = 0x04, _IDEC_overflow = 0x08, _IDEC_underflow = 0x10, _IDEC_inexact = 0x20, _IDEC_allflagsclear = 0x00 } _IDEC_flagbits; typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info extern void __bid128_mul ( Decimal128 *, Decimal128 *, Decimal128 *, _IDEC_flags * ); #if BID_BIG_ENDIAN #define HIGH_128W 0 #define LOW_128W 1 #else #define HIGH_128W 1 #define LOW_128W 0 #endif EXAMPLES/main.c_0100000644€­ Q01134020000001231615113665770012634 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 010: // 0 arguments passed by value (except fpsf) // 1 rounding mode passed in a global variable // 0 pointer to status flags passed as argument #include #include #include "decimal.h" int main () { Decimal128 x, y, z; _IDEC_flags my_fpsf = _IDEC_allflagsclear; printf ("Begin Decimal Floating-Point Sanity Check\n"); // 2 * 3 = 6 __bid_IDEC_glbround = _IDEC_nearesteven; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x3040000000000000ull; x.w[LOW_128W] = 0x0000000000000002ull; // x = 2 y.w[HIGH_128W] = 0x3040000000000000ull; y.w[LOW_128W] = 0x0000000000000003ull; // y = 3 z = __bid128_mul (x, y, &my_fpsf); if (z.w[HIGH_128W] != 0x3040000000000000ull || z.w[LOW_128W] != 0x0000000000000006ull || my_fpsf != _IDEC_allflagsclear) { printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=3040000000000000 0000000000000006 my_fpsf=00000000\n"); printf ("ERROR: TEST CASE 1 FOR __bid128_mul 010 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 1 FOR __bid128_mul 010 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint __bid_IDEC_glbround = _IDEC_nearesteven; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits z = __bid128_mul (x, y, &my_fpsf); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000051 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec33ull || my_fpsf != _IDEC_inexact) { // 9999999999999998570002110000000051 * 10^212, inexact printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec33 my_fpsf=00000020\n"); printf ("ERROR: TEST CASE 2 FOR __bid128_mul 010 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 2 FOR __bid128_mul 010 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint __bid_IDEC_glbround = _IDEC_towardzero; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits z = __bid128_mul (x, y, &my_fpsf); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000050 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec32ull || my_fpsf != _IDEC_inexact) { // 9999999999999998570002110000000050 * 10^212, inexact printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec32 my_fpsf=00000020\n"); printf ("ERROR: TEST CASE 3 FOR __bid128_mul 010 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 3 FOR __bid128_mul 010 () PASSED\n"); } printf ("End Decimal Floating-Point Sanity Check\n"); } EXAMPLES/decimal.h_0000000644€­ Q01134020000000636315113665770013317 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 000: // 0 arguments passed by value (except fpsf) // 0 rounding mode passed as argument // 0 pointer to status flags passed as argument #if defined(__clang__) #define LX "%llx" #else #ifdef WINDOWS #define LX "%I64x" #else #if defined(HPUX_OS) #define LX "%llx" #else #define LX "%Lx" #endif #endif #endif /* basic decimal floating-point types */ #if defined _MSC_VER #if defined _M_IX86 && !defined __INTEL_COMPILER // Win IA-32, MS compiler #define ALIGN(n) #else #define ALIGN(n) __declspec(align(n)) #endif #else #define ALIGN(n) __attribute__ ((aligned(n))) #endif typedef unsigned int Decimal32; typedef unsigned long long Decimal64; typedef struct ALIGN(16) { unsigned long long w[2]; } Decimal128; /* rounding modes */ typedef enum _IDEC_roundingmode { _IDEC_nearesteven = 0, _IDEC_downward = 1, _IDEC_upward = 2, _IDEC_towardzero = 3, _IDEC_nearestaway = 4, _IDEC_dflround = _IDEC_nearesteven } _IDEC_roundingmode; typedef unsigned int _IDEC_round; /* exception flags */ typedef enum _IDEC_flagbits { _IDEC_invalid = 0x01, _IDEC_zerodivide = 0x04, _IDEC_overflow = 0x08, _IDEC_underflow = 0x10, _IDEC_inexact = 0x20, _IDEC_allflagsclear = 0x00 } _IDEC_flagbits; typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info extern Decimal128 __bid128_mul ( Decimal128, Decimal128, _IDEC_round, _IDEC_flags * ); #if BID_BIG_ENDIAN #define HIGH_128W 0 #define LOW_128W 1 #else #define HIGH_128W 1 #define LOW_128W 0 #endif EXAMPLES/RUNLINUXMACOSINTEL64_CLANG0000755€­ Q01134020000000046015113665770015030 0ustar aakkasmklecho "BEGIN BUILDING AND RUNNING EXAMPLES IN LINUX..." rm linuxout a.out ./linuxbuild_clang > linuxout # grep PASS linuxout cat linuxout grep FAIL linuxout rm linuxout main.c decimal.h echo "END BUILDING AND RUNNING EXAMPLES IN LINUX..." echo "THE TESTS PASSED IF THE WORD 'FAIL' WAS NOT PRINTED ABOVE" EXAMPLES/main.c_0110000644€­ Q01134020000001254415113665770012640 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 011: // 0 arguments passed by value (except fpsf) // 1 rounding mode passed in global variable // 1 status flags in global variable #include #include #include "decimal.h" int main () { Decimal128 x, y, z; printf ("Begin Decimal Floating-Point Sanity Check\n"); // 2 * 3 = 6 __bid_IDEC_glbround = _IDEC_nearesteven; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x3040000000000000ull; x.w[LOW_128W] = 0x0000000000000002ull; // x = 2 y.w[HIGH_128W] = 0x3040000000000000ull; y.w[LOW_128W] = 0x0000000000000003ull; // y = 3 z = __bid128_mul (x, y); if (z.w[HIGH_128W] != 0x3040000000000000ull || z.w[LOW_128W] != 0x0000000000000006ull || __bid_IDEC_glbflags != _IDEC_allflagsclear) { printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=3040000000000000 0000000000000006 " "__bid_IDEC_glbflags=00000000\n"); printf ("ERROR: TEST CASE 1 FOR __bid128_mul 011 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 1 FOR __bid128_mul 011 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint __bid_IDEC_glbround = _IDEC_nearesteven; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits z = __bid128_mul (x, y); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000051 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec33ull || __bid_IDEC_glbflags != _IDEC_inexact) { // 9999999999999998570002110000000051 * 10^212, inexact printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec33 " "__bid_IDEC_glbflags=00000020\n"); printf ("ERROR: TEST CASE 2 FOR __bid128_mul 011 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 2 FOR __bid128_mul 011 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint __bid_IDEC_glbround = _IDEC_towardzero; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits z = __bid128_mul (x, y); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000050 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec32ull || __bid_IDEC_glbflags != _IDEC_inexact) { // 9999999999999998570002110000000050 * 10^212, inexact printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec32 " "__bid_IDEC_glbflags=00000020\n"); printf ("ERROR: TEST CASE 3 FOR __bid128_mul 011 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 3 FOR __bid128_mul 011 () PASSED\n"); } printf ("End Decimal Floating-Point Sanity Check\n"); } EXAMPLES/linuxbuild_clang0000755€­ Q01134020000001040015113665770014425 0ustar aakkasmklecho "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 000 **************************" echo "" echo "" cp main.c_000 main.c cp decimal.h_000 decimal.h cp ../LIBRARY/clang000libbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 001 **************************" echo "" echo "" cp main.c_001 main.c cp decimal.h_001 decimal.h cp ../LIBRARY/clang001libbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 010 **************************" echo "" echo "" cp main.c_010 main.c cp decimal.h_010 decimal.h cp ../LIBRARY/clang010libbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 011 **************************" echo "" echo "" cp main.c_011 main.c cp decimal.h_011 decimal.h cp ../LIBRARY/clang011libbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 100 **************************" echo "" echo "" cp main.c_100 main.c cp decimal.h_100 decimal.h cp ../LIBRARY/clang100libbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 101 **************************" echo "" echo "" cp main.c_101 main.c cp decimal.h_101 decimal.h cp ../LIBRARY/clang101libbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 110 **************************" echo "" echo "" cp main.c_110 main.c cp decimal.h_110 decimal.h cp ../LIBRARY/clang110libbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 111 **************************" echo "" echo "" cp main.c_111 main.c cp decimal.h_111 decimal.h cp ../LIBRARY/clang111libbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out rm ../LIBRARY/libbid.a echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 000b **************************" echo "" echo "" cp main.c_000 main.c cp decimal.h_000 decimal.h cp ../LIBRARY/clang000blibbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 001b **************************" echo "" echo "" cp main.c_001 main.c cp decimal.h_001 decimal.h cp ../LIBRARY/clang001blibbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 010b **************************" echo "" echo "" cp main.c_010 main.c cp decimal.h_010 decimal.h cp ../LIBRARY/clang010blibbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 011b **************************" echo "" echo "" cp main.c_011 main.c cp decimal.h_011 decimal.h cp ../LIBRARY/clang011blibbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 100b **************************" echo "" echo "" cp main.c_100 main.c cp decimal.h_100 decimal.h cp ../LIBRARY/clang100blibbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 101b **************************" echo "" echo "" cp main.c_101 main.c cp decimal.h_101 decimal.h cp ../LIBRARY/clang101blibbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 110b **************************" echo "" echo "" cp main.c_110 main.c cp decimal.h_110 decimal.h cp ../LIBRARY/clang110blibbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR clang 111b **************************" echo "" echo "" cp main.c_111 main.c cp decimal.h_111 decimal.h cp ../LIBRARY/clang111blibbid.a ../LIBRARY/libbid.a clang $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out rm ../LIBRARY/libbid.a EXAMPLES/main.c_0010000644€­ Q01134020000001263015113665770012633 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 001: // 0 arguments passed by value (except fpsf) // 0 rounding mode passed as argument // 1 status flags in global variable #include #include #include "decimal.h" int main () { Decimal128 x, y, z; _IDEC_round my_rnd_mode = _IDEC_dflround; printf ("Begin Decimal Floating-Point Sanity Check\n"); // 2 * 3 = 6 my_rnd_mode = _IDEC_nearesteven; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x3040000000000000ull; x.w[LOW_128W] = 0x0000000000000002ull; // x = 2 y.w[HIGH_128W] = 0x3040000000000000ull; y.w[LOW_128W] = 0x0000000000000003ull; // y = 3 z = __bid128_mul (x, y, my_rnd_mode); if (z.w[HIGH_128W] != 0x3040000000000000ull || z.w[LOW_128W] != 0x0000000000000006ull || __bid_IDEC_glbflags != _IDEC_allflagsclear) { printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=3040000000000000 0000000000000006 " "__bid_IDEC_glbflags=00000000\n"); printf ("ERROR: TEST CASE 1 FOR __bid128_mul 001 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 1 FOR __bid128_mul 001 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint my_rnd_mode = _IDEC_nearesteven; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits z = __bid128_mul (x, y, my_rnd_mode); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000051 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec33ull || __bid_IDEC_glbflags != _IDEC_inexact) { // 9999999999999998570002110000000051 * 10^212, inexact printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec33 " "__bid_IDEC_glbflags=00000020\n"); printf ("ERROR: TEST CASE 2 FOR __bid128_mul 001 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 2 FOR __bid128_mul 001 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint my_rnd_mode = _IDEC_towardzero; __bid_IDEC_glbflags = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits z = __bid128_mul (x, y, my_rnd_mode); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000050 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec32ull || __bid_IDEC_glbflags != _IDEC_inexact) { // 9999999999999998570002110000000050 * 10^212, inexact printf ("RECEIVED z="LX" "LX" __bid_IDEC_glbflags=%x\n", z.w[HIGH_128W], z.w[LOW_128W], __bid_IDEC_glbflags); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec32 " "__bid_IDEC_glbflags=00000020\n"); printf ("ERROR: TEST CASE 3 FOR __bid128_mul 001 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 3 FOR __bid128_mul 001 () PASSED\n"); } printf ("End Decimal Floating-Point Sanity Check\n"); } EXAMPLES/windowsbuild_icl.bat0000755€­ Q01134020000001106315113665770015216 0ustar aakkasmklecho "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 000 **************************" echo "" echo "" copy /Y main.c_000 main.c copy /Y decimal.h_000 decimal.h copy /Y ..\LIBRARY\icl000libbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 001 **************************" echo "" echo "" copy /Y main.c_001 main.c copy /Y decimal.h_001 decimal.h copy /Y ..\LIBRARY\icl001libbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 010 **************************" echo "" echo "" copy /Y main.c_010 main.c copy /Y decimal.h_010 decimal.h copy /Y ..\LIBRARY\icl010libbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 011 **************************" echo "" echo "" copy /Y main.c_011 main.c copy /Y decimal.h_011 decimal.h copy /Y ..\LIBRARY\icl011libbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 100 **************************" echo "" echo "" copy /Y main.c_100 main.c copy /Y decimal.h_100 decimal.h copy /Y ..\LIBRARY\icl100libbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 101 **************************" echo "" echo "" copy /Y main.c_101 main.c copy /Y decimal.h_101 decimal.h copy /Y ..\LIBRARY\icl101libbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 110 **************************" echo "" echo "" copy /Y main.c_110 main.c copy /Y decimal.h_110 decimal.h copy /Y ..\LIBRARY\icl110libbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 111 **************************" echo "" echo "" copy /Y main.c_111 main.c copy /Y decimal.h_111 decimal.h copy /Y ..\LIBRARY\icl111libbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe del main.exe main.c decimal.h del ..\LIBRARY\libbid.lib echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 000b **************************" echo "" echo "" copy /Y main.c_000 main.c copy /Y decimal.h_000 decimal.h copy /Y ..\LIBRARY\icl000blibbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 001b **************************" echo "" echo "" copy /Y main.c_001 main.c copy /Y decimal.h_001 decimal.h copy /Y ..\LIBRARY\icl001blibbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 010b **************************" echo "" echo "" copy /Y main.c_010 main.c copy /Y decimal.h_010 decimal.h copy /Y ..\LIBRARY\icl010blibbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 011b **************************" echo "" echo "" copy /Y main.c_011 main.c copy /Y decimal.h_011 decimal.h copy /Y ..\LIBRARY\icl011blibbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 100b **************************" echo "" echo "" copy /Y main.c_100 main.c copy /Y decimal.h_100 decimal.h copy /Y ..\LIBRARY\icl100blibbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 101b **************************" echo "" echo "" copy /Y main.c_101 main.c copy /Y decimal.h_101 decimal.h copy /Y ..\LIBRARY\icl101blibbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 110b **************************" echo "" echo "" copy /Y main.c_110 main.c copy /Y decimal.h_110 decimal.h copy /Y ..\LIBRARY\icl110blibbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe echo "" echo "" echo "***************** RUNNING EXAMPLE FOR icl 111b **************************" echo "" echo "" copy /Y main.c_111 main.c copy /Y decimal.h_111 decimal.h copy /Y ..\LIBRARY\icl111blibbid.lib ..\LIBRARY\libbid.lib icl main.c /DWINDOWS ..\LIBRARY\libbid.lib %1 main.exe del main.exe main.c decimal.h del ..\LIBRARY\libbid.lib EXAMPLES/decimal.h_0110000644€­ Q01134020000000707115113665770013316 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 011: // 0 arguments passed by value (except fpsf) // 1 rounding mode passed in global variable // 1 status flags in global variable #if defined(__clang__) #define LX "%llx" #else #ifdef WINDOWS #define LX "%I64x" #else #if defined(HPUX_OS) #define LX "%llx" #else #define LX "%Lx" #endif #endif #endif #ifndef BID_THREAD #if defined (_MSC_VER) //Windows #define BID_THREAD __declspec(thread) #else #if !defined(__APPLE__) //Linux, FreeBSD #define BID_THREAD __thread #else //Mac OSX, TBD #define BID_THREAD #endif //Linux or Mac #endif //Windows #endif //BID_THREAD /* basic decimal floating-point types */ #if defined _MSC_VER #if defined _M_IX86 && !defined __INTEL_COMPILER // Win IA-32, MS compiler #define ALIGN(n) #else #define ALIGN(n) __declspec(align(n)) #endif #else #define ALIGN(n) __attribute__ ((aligned(n))) #endif typedef unsigned int Decimal32; typedef unsigned long long Decimal64; typedef struct ALIGN(16) { unsigned long long w[2]; } Decimal128; /* rounding modes */ typedef enum _IDEC_roundingmode { _IDEC_nearesteven = 0, _IDEC_downward = 1, _IDEC_upward = 2, _IDEC_towardzero = 3, _IDEC_nearestaway = 4, _IDEC_dflround = _IDEC_nearesteven } _IDEC_roundingmode; typedef unsigned int _IDEC_round; extern BID_THREAD _IDEC_round __bid_IDEC_glbround; /* exception flags */ typedef enum _IDEC_flagbits { _IDEC_invalid = 0x01, _IDEC_zerodivide = 0x04, _IDEC_overflow = 0x08, _IDEC_underflow = 0x10, _IDEC_inexact = 0x20, _IDEC_allflagsclear = 0x00 } _IDEC_flagbits; typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info extern BID_THREAD _IDEC_flags __bid_IDEC_glbflags; extern Decimal128 __bid128_mul ( Decimal128, Decimal128 ); #if BID_BIG_ENDIAN #define HIGH_128W 0 #define LOW_128W 1 #else #define HIGH_128W 1 #define LOW_128W 0 #endif EXAMPLES/linuxbuild_gcc0000755€­ Q01134020000001024015113665770014077 0ustar aakkasmklecho "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 000 **************************" echo "" echo "" cp main.c_000 main.c cp decimal.h_000 decimal.h cp ../LIBRARY/gcc000libbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 001 **************************" echo "" echo "" cp main.c_001 main.c cp decimal.h_001 decimal.h cp ../LIBRARY/gcc001libbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 010 **************************" echo "" echo "" cp main.c_010 main.c cp decimal.h_010 decimal.h cp ../LIBRARY/gcc010libbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 011 **************************" echo "" echo "" cp main.c_011 main.c cp decimal.h_011 decimal.h cp ../LIBRARY/gcc011libbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 100 **************************" echo "" echo "" cp main.c_100 main.c cp decimal.h_100 decimal.h cp ../LIBRARY/gcc100libbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 101 **************************" echo "" echo "" cp main.c_101 main.c cp decimal.h_101 decimal.h cp ../LIBRARY/gcc101libbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 110 **************************" echo "" echo "" cp main.c_110 main.c cp decimal.h_110 decimal.h cp ../LIBRARY/gcc110libbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 111 **************************" echo "" echo "" cp main.c_111 main.c cp decimal.h_111 decimal.h cp ../LIBRARY/gcc111libbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a ./a.out rm a.out rm ../LIBRARY/libbid.a echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 000b **************************" echo "" echo "" cp main.c_000 main.c cp decimal.h_000 decimal.h cp ../LIBRARY/gcc000blibbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 001b **************************" echo "" echo "" cp main.c_001 main.c cp decimal.h_001 decimal.h cp ../LIBRARY/gcc001blibbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 010b **************************" echo "" echo "" cp main.c_010 main.c cp decimal.h_010 decimal.h cp ../LIBRARY/gcc010blibbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 011b **************************" echo "" echo "" cp main.c_011 main.c cp decimal.h_011 decimal.h cp ../LIBRARY/gcc011blibbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 100b **************************" echo "" echo "" cp main.c_100 main.c cp decimal.h_100 decimal.h cp ../LIBRARY/gcc100blibbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 101b **************************" echo "" echo "" cp main.c_101 main.c cp decimal.h_101 decimal.h cp ../LIBRARY/gcc101blibbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 110b **************************" echo "" echo "" cp main.c_110 main.c cp decimal.h_110 decimal.h cp ../LIBRARY/gcc110blibbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out echo "" echo "" echo "***************** RUNNING EXAMPLE FOR gcc 111b **************************" echo "" echo "" cp main.c_111 main.c cp decimal.h_111 decimal.h cp ../LIBRARY/gcc111blibbid.a ../LIBRARY/libbid.a gcc $1 main.c ../LIBRARY/libbid.a -lm ./a.out rm a.out rm ../LIBRARY/libbid.a EXAMPLES/README0000644€­ Q01134020000000414415113665770012044 0ustar aakkasmklNote: 000, 001, ..., 111 are associated with the following three conditions: bit 2 [msb]: 0 = call by value (except for the pointer to the status flags, passed by reference unless global) 1 = call by reference; bit 1 : 0 = rounding mode passed as a parameter 1 = rounding mode passed in global variable _IDEC_glbround (fixed name) bit 0 [lsb]: 0 = pointer to status flags passed as a parameter 1 = status flags passed in global variable _IDEC_glbflags (fixed name) Example (one of eight possible, for Linux only; similar for other OS-es): Build libbid.a in ../LIBRARY with '...CALL_BY_REF=0 GLOBAL_RND=0 GLOBAL_FLAGS=0' $ cp main.c_000 main.c $ cp decimal.h_000 decimal.h $ icc main.c ../LIBRARY/libbid.a $ ./a.out Begin Decimal Floating-Point Sanity Check TEST CASE 1 FOR bid128_mul 000 () PASSED TEST CASE 2 FOR bid128_mul 000 () PASSED TEST CASE 3 FOR bid128_mul 000 () PASSED End Decimal Floating-Point Sanity Check $ rm main.c decimal.h a.out Note: The scripts and makefiles provided here may need adjustments, depending on the environment in which they are used; for example if moving files from Windows to Linux, running dos2unix on the Linux script files may be necessary. Note: For other operating systems and architecture combinations see for example the following command files (or other RUN* command files provided here), as well as any command files invoked from these ones: RUNLINUXINTEL64_ICX RUNWINDOWSINTEL64_CL.bat These command files build and run all eight examples from this directory, possibly using more than one compiler. Changes may be needed for certain environments. However, prior to building these examples the similar RUN* command has to be executed in ../LIBRARY/ in order to build all the necessary versions of the Intel(R) Decimal Floating-Point Math Library V2.4 (Version 2, Update 4). The tests [when built correctly] pass if the word FAIL does not appear in the output. * Other names and brands may be claimed as the property of others. EXAMPLES/main.c_0000000644€­ Q01134020000001240015113665770012625 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // 000: // 0 arguments passed by value (except fpsf) // 0 rounding mode passed as argument // 0 pointer to status flags passed as argument #include #include #include "decimal.h" int main () { Decimal128 x, y, z; _IDEC_round my_rnd_mode = _IDEC_dflround; _IDEC_flags my_fpsf = _IDEC_allflagsclear; printf ("Begin Decimal Floating-Point Sanity Check\n"); // 2 * 3 = 6 my_rnd_mode = _IDEC_nearesteven; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x3040000000000000ull; x.w[LOW_128W] = 0x0000000000000002ull; // x = 2 y.w[HIGH_128W] = 0x3040000000000000ull; y.w[LOW_128W] = 0x0000000000000003ull; // y = 3 z = __bid128_mul (x, y, my_rnd_mode, &my_fpsf); if (z.w[HIGH_128W] != 0x3040000000000000ull || z.w[LOW_128W] != 0x0000000000000006ull || my_fpsf != _IDEC_allflagsclear) { printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=3040000000000000 0000000000000006 my_fpsf=00000000\n"); printf ("ERROR: TEST CASE 1 FOR __bid128_mul 000 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 1 FOR __bid128_mul 000 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint my_rnd_mode = _IDEC_nearesteven; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits z = __bid128_mul (x, y, my_rnd_mode, &my_fpsf); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000051 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec33ull || my_fpsf != _IDEC_inexact) { // 9999999999999998570002110000000051 * 10^212, inexact printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec33 my_fpsf=00000020\n"); printf ("ERROR: TEST CASE 2 FOR __bid128_mul 000 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 2 FOR __bid128_mul 000 () PASSED\n"); } // (x * y)RN is inexact and > MidPoint my_rnd_mode = _IDEC_towardzero; my_fpsf = _IDEC_allflagsclear; z.w[HIGH_128W] = 0xbaddbaddbaddbaddull; z.w[LOW_128W] = 0xbaddbaddbaddbaddull; x.w[HIGH_128W] = 0x310800000000021eull; x.w[LOW_128W] = 0x19e0c9bab235ede1ull; // x = 9999999999999999340001 * 10^100; q1 = 22 <- 128 bits y.w[HIGH_128W] = 0x310800000000d3c2ull; y.w[LOW_128W] = 0x1bcecced9c69132full; // y = 999999999999999923000111 * 10^100; q2 = 24 <- 128 bits z = __bid128_mul (x, y, my_rnd_mode, &my_fpsf); // 9999999999999999340001 * 10^100 * 999999999999999923000111 * 10^100 =(RN) // 9999999999999998570002110000000050 * 10^200 if (z.w[HIGH_128W] != 0x31e9ed09bead87c0ull || z.w[LOW_128W] != 0x23b52ee2d8fdec32ull || my_fpsf != _IDEC_inexact) { // 9999999999999998570002110000000050 * 10^212, inexact printf ("RECEIVED z="LX" "LX" my_fpsf=%x\n", z.w[HIGH_128W], z.w[LOW_128W], my_fpsf); printf ("EXPECTED z=31e9ed09bead87c0 23b52ee2d8fdec32 my_fpsf=00000020\n"); printf ("ERROR: TEST CASE 3 FOR __bid128_mul 000 () FAILED\n\n"); exit (1); } else { printf ("TEST CASE 3 FOR __bid128_mul 000 () PASSED\n"); } printf ("End Decimal Floating-Point Sanity Check\n"); } LIBRARY/0002755€­ Q01134020000000000015113665770011051 5ustar aakkasmklLIBRARY/windowsbuild_clang.bat0000755€­ Q01134020000000453215113665770015424 0ustar aakkasmkldel *.obj *.lib make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=0 GLOBAL_RND=0 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib clang000libbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=0 GLOBAL_RND=0 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib clang001libbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=0 GLOBAL_RND=1 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib clang010libbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=0 GLOBAL_RND=1 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib clang011libbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=1 GLOBAL_RND=0 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib clang100libbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=1 GLOBAL_RND=0 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib clang101libbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=1 GLOBAL_RND=1 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib clang110libbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=1 GLOBAL_RND=1 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib clang111libbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=0 GLOBAL_RND=0 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib clang000blibbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=0 GLOBAL_RND=0 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib clang001blibbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=0 GLOBAL_RND=1 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib clang010blibbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=0 GLOBAL_RND=1 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib clang011blibbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=1 GLOBAL_RND=0 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib clang100blibbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=1 GLOBAL_RND=0 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib clang101blibbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=1 GLOBAL_RND=1 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib clang110blibbid.lib make clean make _HOST_OS=Windows_NT CC=clang CALL_BY_REF=1 GLOBAL_RND=1 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib clang111blibbid.lib make clean LIBRARY/windowsbuild_cl.bat0000755€­ Q01134020000000437215113665770014740 0ustar aakkasmkldel *.obj *.lib make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=0 GLOBAL_RND=0 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib cl000libbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=0 GLOBAL_RND=0 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib cl001libbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=0 GLOBAL_RND=1 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib cl010libbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=0 GLOBAL_RND=1 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib cl011libbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=1 GLOBAL_RND=0 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib cl100libbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=1 GLOBAL_RND=0 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib cl101libbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=1 GLOBAL_RND=1 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib cl110libbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=1 GLOBAL_RND=1 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=0 ren libbid.lib cl111libbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=0 GLOBAL_RND=0 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib cl000blibbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=0 GLOBAL_RND=0 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib cl001blibbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=0 GLOBAL_RND=1 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib cl010blibbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=0 GLOBAL_RND=1 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib cl011blibbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=1 GLOBAL_RND=0 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib cl100blibbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=1 GLOBAL_RND=0 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib cl101blibbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=1 GLOBAL_RND=1 GLOBAL_FLAGS=0 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib cl110blibbid.lib make clean make _HOST_OS=Windows_NT CC=cl CALL_BY_REF=1 GLOBAL_RND=1 GLOBAL_FLAGS=1 UNCHANGED_BINARY_FLAGS=1 ren libbid.lib cl111blibbid.lib make clean LIBRARY/RUNLINUXINTEL64_GCC0000755€­ Q01134020000000015315113665770013702 0ustar aakkasmklecho "BEGIN BUILDING LIBRARY IN LINUX..." rm *.a ./linuxbuild_gcc echo "END BUILDING LIBRARY IN LINUX..." LIBRARY/RUNWINDOWSINTEL64_ICL.bat0000755€­ Q01134020000000017215113665770014716 0ustar aakkasmklecho "BEGIN BUILDING LIBRARY IN WINDOWS..." del *.lib call windowsbuild_icl.bat echo "END BUILDING LIBRARY IN WINDOWS..." LIBRARY/RUNWINDOWSINTEL64_ICX.bat0000755€­ Q01134020000000017215113665770014732 0ustar aakkasmklecho "BEGIN BUILDING LIBRARY IN WINDOWS..." del *.lib call windowsbuild_icx.bat echo "END BUILDING LIBRARY IN WINDOWS..." LIBRARY/src/0002755€­ Q01134020000000000015113665770011640 5ustar aakkasmklLIBRARY/src/bid_gcc_intrinsics.h0000644€­ Q01134020000002415615113665770015636 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef _BID_GCC_INTRINSICS_H #define _BID_GCC_INTRINSICS_H #ifdef IN_LIBGCC2 #include "tconfig.h" #include "coretypes.h" #include "tm.h" #ifndef LIBGCC2_WORDS_BIG_ENDIAN #define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN #endif #ifndef LIBGCC2_FLOAT_WORDS_BIG_ENDIAN #define LIBGCC2_FLOAT_WORDS_BIG_ENDIAN LIBGCC2_WORDS_BIG_ENDIAN #endif #ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE #endif #ifndef LIBGCC2_HAS_XF_MODE #define LIBGCC2_HAS_XF_MODE \ (BITS_PER_UNIT == 8 && LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 80) #endif #ifndef LIBGCC2_HAS_TF_MODE #define LIBGCC2_HAS_TF_MODE \ (BITS_PER_UNIT == 8 && LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128) #endif #ifndef BID_HAS_XF_MODE #define BID_HAS_XF_MODE LIBGCC2_HAS_XF_MODE #endif #ifndef BID_HAS_TF_MODE #define BID_HAS_TF_MODE LIBGCC2_HAS_TF_MODE #endif /* Some handy typedefs. */ typedef float SFtype __attribute__ ((mode (SF))); typedef float DFtype __attribute__ ((mode (DF))); #if LIBGCC2_HAS_XF_MODE typedef float XFtype __attribute__ ((mode (XF))); #endif /* LIBGCC2_HAS_XF_MODE */ #if LIBGCC2_HAS_TF_MODE typedef float TFtype __attribute__ ((mode (TF))); #endif /* LIBGCC2_HAS_XF_MODE */ typedef int SItype __attribute__ ((mode (SI))); typedef int DItype __attribute__ ((mode (DI))); typedef unsigned int USItype __attribute__ ((mode (SI))); typedef unsigned int UDItype __attribute__ ((mode (DI))); /* The type of the result of a decimal float comparison. This must match `word_mode' in GCC for the target. */ typedef int CMPtype __attribute__ ((mode (word))); typedef int BID_SINT8 __attribute__ ((mode (QI))); typedef unsigned int BID_UINT8 __attribute__ ((mode (QI))); typedef USItype BID_UINT32; typedef SItype BID_SINT32; typedef UDItype BID_UINT64; typedef DItype BID_SINT64; /* It has to be identical to the one defined in bid_functions.h. */ typedef __attribute__ ((aligned(16))) struct { BID_UINT64 w[2]; } BID_UINT128; #else /* if not IN_LIBGCC2 */ #ifndef BID_HAS_XF_MODE #define BID_HAS_XF_MODE 1 #endif #ifndef BID_HAS_TF_MODE #if defined __i386__ #define BID_HAS_TF_MODE 0 #else #define BID_HAS_TF_MODE 1 #endif #endif #ifndef SFtype #define SFtype float #endif #ifndef DFtype #define DFtype double #endif #if BID_HAS_XF_MODE #ifndef XFtype #define XFtype long double #endif #endif /* IN_LIBGCC2 */ #if BID_HAS_TF_MODE #ifndef TFtype #define TFtype __float128 #endif #endif #ifndef SItype #define SItype BID_SINT32 #endif #ifndef DItype #define DItype BID_SINT64 #endif #ifndef USItype #define USItype BID_UINT32 #endif #ifndef UDItype #define UDItype BID_UINT64 #endif #ifndef CMPtype #define CMPtype long #endif #endif /* IN_LIBGCC2 */ #if BID_HAS_GCC_DECIMAL_INTRINSICS /* Prototypes for gcc instrinsics */ BID_EXTERN_C _Decimal64 __bid_adddd3 (_Decimal64, _Decimal64); BID_EXTERN_C _Decimal64 __bid_subdd3 (_Decimal64, _Decimal64); BID_EXTERN_C _Decimal32 __bid_addsd3 (_Decimal32, _Decimal32); BID_EXTERN_C _Decimal32 __bid_subsd3 (_Decimal32, _Decimal32); BID_EXTERN_C _Decimal128 __bid_addtd3 (_Decimal128, _Decimal128); BID_EXTERN_C _Decimal128 __bid_subtd3 (_Decimal128, _Decimal128); BID_EXTERN_C DFtype __bid_truncdddf (_Decimal64); BID_EXTERN_C DItype __bid_fixdddi (_Decimal64); BID_EXTERN_C _Decimal32 __bid_truncddsd2 (_Decimal64); BID_EXTERN_C SFtype __bid_truncddsf (_Decimal64); BID_EXTERN_C SItype __bid_fixddsi (_Decimal64); BID_EXTERN_C _Decimal128 __bid_extendddtd2 (_Decimal64); #if BID_HAS_TF_MODE BID_EXTERN_C TFtype __bid_extendddtf (_Decimal64); #endif BID_EXTERN_C UDItype __bid_fixunsdddi (_Decimal64); BID_EXTERN_C USItype __bid_fixunsddsi (_Decimal64); #if BID_HAS_XF_MODE BID_EXTERN_C XFtype __bid_extendddxf (_Decimal64); #endif BID_EXTERN_C _Decimal64 __bid_extenddfdd (DFtype); BID_EXTERN_C _Decimal32 __bid_truncdfsd (DFtype); BID_EXTERN_C _Decimal128 __bid_extenddftd (DFtype); BID_EXTERN_C _Decimal64 __bid_floatdidd (DItype); BID_EXTERN_C _Decimal32 __bid_floatdisd (DItype); BID_EXTERN_C _Decimal128 __bid_floatditd (DItype); BID_EXTERN_C _Decimal64 __bid_divdd3 (_Decimal64, _Decimal64); BID_EXTERN_C _Decimal32 __bid_divsd3 (_Decimal32, _Decimal32); BID_EXTERN_C _Decimal128 __bid_divtd3 (_Decimal128, _Decimal128); BID_EXTERN_C CMPtype __bid_eqdd2 (_Decimal64, _Decimal64); BID_EXTERN_C CMPtype __bid_eqsd2 (_Decimal32, _Decimal32); BID_EXTERN_C CMPtype __bid_eqtd2 (_Decimal128, _Decimal128); BID_EXTERN_C CMPtype __bid_gedd2 (_Decimal64, _Decimal64); BID_EXTERN_C CMPtype __bid_gesd2 (_Decimal32, _Decimal32); BID_EXTERN_C CMPtype __bid_getd2 (_Decimal128, _Decimal128); BID_EXTERN_C CMPtype __bid_gtdd2 (_Decimal64, _Decimal64); BID_EXTERN_C CMPtype __bid_gtsd2 (_Decimal32, _Decimal32); BID_EXTERN_C CMPtype __bid_gttd2 (_Decimal128, _Decimal128); BID_EXTERN_C CMPtype __bid_ledd2 (_Decimal64, _Decimal64); BID_EXTERN_C CMPtype __bid_lesd2 (_Decimal32, _Decimal32); BID_EXTERN_C CMPtype __bid_letd2 (_Decimal128, _Decimal128); BID_EXTERN_C CMPtype __bid_ltdd2 (_Decimal64, _Decimal64); BID_EXTERN_C CMPtype __bid_ltsd2 (_Decimal32, _Decimal32); BID_EXTERN_C CMPtype __bid_lttd2 (_Decimal128, _Decimal128); BID_EXTERN_C CMPtype __bid_nedd2 (_Decimal64, _Decimal64); BID_EXTERN_C CMPtype __bid_nesd2 (_Decimal32, _Decimal32); BID_EXTERN_C CMPtype __bid_netd2 (_Decimal128, _Decimal128); BID_EXTERN_C CMPtype __bid_unorddd2 (_Decimal64, _Decimal64); BID_EXTERN_C CMPtype __bid_unordsd2 (_Decimal32, _Decimal32); BID_EXTERN_C CMPtype __bid_unordtd2 (_Decimal128, _Decimal128); BID_EXTERN_C _Decimal64 __bid_muldd3 (_Decimal64, _Decimal64); BID_EXTERN_C _Decimal32 __bid_mulsd3 (_Decimal32, _Decimal32); BID_EXTERN_C _Decimal128 __bid_multd3 (_Decimal128, _Decimal128); BID_EXTERN_C _Decimal64 __bid_extendsddd2 (_Decimal32); BID_EXTERN_C DFtype __bid_extendsddf (_Decimal32); BID_EXTERN_C DItype __bid_fixsddi (_Decimal32); BID_EXTERN_C SFtype __bid_truncsdsf (_Decimal32); BID_EXTERN_C SItype __bid_fixsdsi (_Decimal32); BID_EXTERN_C _Decimal128 __bid_extendsdtd2 (_Decimal32); #if BID_HAS_TF_MODE BID_EXTERN_C TFtype __bid_extendsdtf (_Decimal32); #endif BID_EXTERN_C UDItype __bid_fixunssddi (_Decimal32); BID_EXTERN_C USItype __bid_fixunssdsi (_Decimal32); #if BID_HAS_XF_MODE BID_EXTERN_C XFtype __bid_extendsdxf (_Decimal32); #endif BID_EXTERN_C _Decimal64 __bid_extendsfdd (SFtype); BID_EXTERN_C _Decimal32 __bid_extendsfsd (SFtype); BID_EXTERN_C _Decimal128 __bid_extendsftd (SFtype); BID_EXTERN_C _Decimal64 __bid_floatsidd (SItype); BID_EXTERN_C _Decimal32 __bid_floatsisd (SItype); BID_EXTERN_C _Decimal128 __bid_floatsitd (SItype); BID_EXTERN_C _Decimal64 __bid_trunctddd2 (_Decimal128); BID_EXTERN_C DFtype __bid_trunctddf (_Decimal128); BID_EXTERN_C DItype __bid_fixtddi (_Decimal128); BID_EXTERN_C _Decimal32 __bid_trunctdsd2 (_Decimal128); BID_EXTERN_C SFtype __bid_trunctdsf (_Decimal128); BID_EXTERN_C SItype __bid_fixtdsi (_Decimal128); #if BID_HAS_TF_MODE BID_EXTERN_C TFtype __bid_trunctdtf (_Decimal128); #endif BID_EXTERN_C UDItype __bid_fixunstddi (_Decimal128); BID_EXTERN_C USItype __bid_fixunstdsi (_Decimal128); #if BID_HAS_XF_MODE BID_EXTERN_C XFtype __bid_trunctdxf (_Decimal128); #endif #if BID_HAS_TF_MODE BID_EXTERN_C _Decimal64 __bid_trunctfdd (TFtype); BID_EXTERN_C _Decimal32 __bid_trunctfsd (TFtype); BID_EXTERN_C _Decimal128 __bid_extendtftd (TFtype); #endif BID_EXTERN_C _Decimal64 __bid_floatunsdidd (UDItype); BID_EXTERN_C _Decimal32 __bid_floatunsdisd (UDItype); BID_EXTERN_C _Decimal128 __bid_floatunsditd (UDItype); BID_EXTERN_C _Decimal64 __bid_floatunssidd (USItype); BID_EXTERN_C _Decimal32 __bid_floatunssisd (USItype); BID_EXTERN_C _Decimal128 __bid_floatunssitd (USItype); #if BID_HAS_XF_MODE BID_EXTERN_C _Decimal64 __bid_truncxfdd (XFtype); BID_EXTERN_C _Decimal32 __bid_truncxfsd (XFtype); BID_EXTERN_C _Decimal128 __bid_extendxftd (XFtype); #endif BID_EXTERN_C int isinfd32 (_Decimal32); BID_EXTERN_C int isinfd64 (_Decimal64); BID_EXTERN_C int isinfd128 (_Decimal128); #endif /* BID_HAS_GCC_DECIMAL_INTRINSICS */ BID_EXTERN_C void __dfp_set_round (int); BID_EXTERN_C int __dfp_get_round (void); BID_EXTERN_C void __dfp_clear_except (void); BID_EXTERN_C int __dfp_test_except (int); BID_EXTERN_C void __dfp_raise_except (int); #if BID_HAS_GCC_DECIMAL_INTRINSICS /* Used by gcc intrinsics. We have to define them after BID_UINT128 is defined. */ union decimal32 { _Decimal32 d; BID_UINT32 i; }; union decimal64 { _Decimal64 d; BID_UINT64 i; }; union decimal128 { _Decimal128 d; BID_UINT128 i; }; #if BID_HAS_TF_MODE union float128 { TFtype f; BID_UINT128 i; }; #endif #endif /* BID_HAS_GCC_DECIMAL_INTRINSICS */ #endif /* _BID_GCC_INTRINSICS_H */ LIBRARY/src/bid128_nexttowardd.c0000644€­ Q01134020000000441415113665770015421 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID128 nexttowardd ****************************************************************************/ // Note: same as bid128_nextafter BID128_FUNCTION_ARG2_NORND(bid128_nexttoward, x, y) BID_UINT128 res; // BIDECIMAL_CALL2_NORND (bid128_nextafter, res, x, y); #if DECIMAL_CALL_BY_REFERENCE bid128_nextafter (&res, &x, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid128_nextafter (x, y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } LIBRARY/src/bid32_fma.c0000644€­ Q01134020000003651415113665770013541 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID32 fma ***************************************************************************** * * Algorithm description: * * if multiplication is guranteed exact (short coefficients) * call the unpacked arg. equivalent of bid32_add(x*y, z) * else * get full coefficient_x*coefficient_y product * call subroutine to perform addition of 32-bit argument * to 128-bit product * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" ////////////////////////////////////////////////////////////////////////// // // 0*10^ey + cz*10^ez, ey> 52) - 0x3ff; scale_cz = bid_estimate_decimal_digits[bin_expon]; if (coefficient_z >= bid_power10_table_128[scale_cz].w[0]) scale_cz++; scale_k = 7 - scale_cz; if (diff_expon < scale_k) scale_k = diff_expon; coefficient_z *= bid_power10_table_128[scale_k].w[0]; return get_BID32 (sign_z, exponent_z - scale_k, coefficient_z, *prounding_mode, fpsc); } #if DECIMAL_CALL_BY_REFERENCE BID_EXTERN_C void bid32_mul (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); #else BID_EXTERN_C BID_UINT32 bid32_mul (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); #endif BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_ARGTYPE3(BID_UINT32, bid32_fma, BID_UINT32, x, BID_UINT32, y, BID_UINT32, z) BID_UINT128 P, Tmp, CB, Q_high, Q_low, Stemp, C128; BID_UINT64 P0, C64, remainder_h, rem_l, carry, CY, coefficient_a, coefficient_b, sign_ab; BID_UINT32 sign_x, sign_y, coefficient_x, coefficient_y, sign_z, coefficient_z, R; BID_UINT32 sign_a, sign_b, res; BID_UINT32 valid_x, valid_y, valid_z; int_double tempx; int extra_digits, exponent_x, exponent_y, exponent_z, bin_expon, rmode, inexact=0; int n_digits, amount, status, exponent_a, exponent_b, diff_dec_expon, d2, scale_ca; BID_OPT_SAVE_BINARY_FLAGS() valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID32 (&sign_y, &exponent_y, &coefficient_y, y); valid_z = unpack_BID32 (&sign_z, &exponent_z, &coefficient_z, z); // unpack arguments, check for NaN, Infinity, or 0 if (!valid_x || !valid_y || !valid_z) { if ((y & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK32) == SNAN_MASK32) // sNaN || ((y & SNAN_MASK32) == SNAN_MASK32)|| ((z & SNAN_MASK32) == SNAN_MASK32)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_y & QUIET_MASK32; BID_RETURN (res); } if ((z & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK32) == SNAN_MASK32) // sNaN || ((z & SNAN_MASK32) == SNAN_MASK32)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_z & QUIET_MASK32; BID_RETURN (res); } if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK32) == SNAN_MASK32)) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_x & QUIET_MASK32; BID_RETURN (res); } if (!valid_x) { // x is Inf. or 0 // x is Infinity? if ((x & 0x78000000) == 0x78000000) { // check if y is 0 if (!coefficient_y) { // y==0, return NaN #ifdef BID_SET_STATUS_FLAGS if ((z & 0x7e000000) != 0x7c000000) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (0x7c000000); } // test if z is Inf of oposite sign if (((z & 0x7c000000) == 0x78000000) && (((x ^ y) ^ z) & 0x80000000)) { // return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (0x7c000000); } // otherwise return +/-Inf BID_RETURN (((x ^ y) & 0x80000000) | 0x78000000); } // x is 0 if (((y & 0x78000000) != 0x78000000) && ((z & 0x78000000) != 0x78000000)) { if (coefficient_z) { exponent_y = exponent_x - DECIMAL_EXPONENT_BIAS_32 + exponent_y; sign_z = z & 0x80000000; if (exponent_y >= exponent_z) BID_RETURN (z); res = add_zero32 (exponent_y, sign_z, exponent_z, coefficient_z, &rnd_mode, pfpsf); BID_RETURN (res); } } } if (!valid_y) { // y is Inf. or 0 // y is Infinity? if ((y & 0x78000000) == 0x78000000) { // check if x is 0 if (!coefficient_x) { // y==0, return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (0x7c000000); } // test if z is Inf of oposite sign if (((z & 0x7c000000) == 0x78000000) && (((x ^ y) ^ z) & 0x80000000)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // return NaN BID_RETURN (0x7c000000); } // otherwise return +/-Inf BID_RETURN (((x ^ y) & 0x80000000) | 0x78000000); } // y is 0 if (((z & 0x78000000) != 0x78000000)) { if (coefficient_z) { exponent_y += exponent_x - DECIMAL_EXPONENT_BIAS_32; sign_z = z & 0x80000000; if (exponent_y >= exponent_z) BID_RETURN (z); res = add_zero32 (exponent_y, sign_z, exponent_z, coefficient_z, &rnd_mode, pfpsf); BID_RETURN (res); } } } if (!valid_z) { // y is Inf. or 0 // test if y is NaN/Inf if ((z & 0x78000000) == 0x78000000) { BID_RETURN (coefficient_z & QUIET_MASK32); } // z is 0, return x*y if ((!coefficient_x) || (!coefficient_y)) { //0+/-0 exponent_x += exponent_y - DECIMAL_EXPONENT_BIAS_32; if (exponent_x > DECIMAL_MAX_EXPON_32) exponent_x = DECIMAL_MAX_EXPON_32; else if (exponent_x < 0) exponent_x = 0; if (exponent_x <= exponent_z) res = ((BID_UINT32) exponent_x) << 23; else res = ((BID_UINT32) exponent_z) << 23; if ((sign_x ^ sign_y) == sign_z) res |= sign_z; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST else if (rnd_mode == BID_ROUNDING_DOWN) res |= 0x80000000; #endif #endif BID_RETURN (res); } d2 = exponent_x + exponent_y - DECIMAL_EXPONENT_BIAS_32; if(exponent_z>d2) exponent_z = d2; } } P0 = (BID_UINT64)coefficient_x * (BID_UINT64)coefficient_y; exponent_x += exponent_y - DECIMAL_EXPONENT_BIAS_32; // sort arguments by exponent if (exponent_x < exponent_z) { sign_a = sign_z; exponent_a = exponent_z; coefficient_a = coefficient_z; sign_b = sign_x ^ sign_y; exponent_b = exponent_x; coefficient_b = P0; } else { sign_a = sign_x ^ sign_y; exponent_a = exponent_x; coefficient_a = P0; sign_b = sign_z; exponent_b = exponent_z; coefficient_b = coefficient_z; } // exponent difference diff_dec_expon = exponent_a - exponent_b; if (diff_dec_expon > 17) { tempx.d = (double) coefficient_a; bin_expon = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; scale_ca = bid_estimate_decimal_digits[bin_expon]; d2 = 31 - scale_ca; if(diff_dec_expon > d2) { diff_dec_expon = d2; exponent_b = exponent_a - diff_dec_expon; } if(coefficient_b) inexact=1; } sign_ab = ((BID_SINT64)(sign_a ^ sign_b))<<32; sign_ab = ((BID_SINT64) sign_ab) >> 63; CB.w[0] = (coefficient_b + sign_ab) ^ sign_ab; CB.w[1] = ((BID_SINT64)CB.w[0]) >> 63; __mul_64x128_low(Tmp, coefficient_a, bid_power10_table_128[diff_dec_expon]); __add_128_128(P, Tmp, CB); if(((BID_SINT64)P.w[1])<0) { sign_a ^= 0x80000000; P.w[1] = 0 - P.w[1]; if(P.w[0]) P.w[1]--; P.w[0] = 0 - P.w[0]; } if(P.w[1]) { tempx.d = (double) P.w[1]; bin_expon = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff + 64; n_digits = bid_estimate_decimal_digits[bin_expon]; if(__unsigned_compare_ge_128 (P, bid_power10_table_128[n_digits])) n_digits ++; } else { if(P.w[0]) { tempx.d = (double) P.w[0]; bin_expon = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; n_digits = bid_estimate_decimal_digits[bin_expon]; if(P.w[0] >= bid_power10_table_128[n_digits].w[0]) n_digits++; } else { // result = 0 sign_a = 0; if(rnd_mode == BID_ROUNDING_DOWN) sign_a = 0x80000000; if(!coefficient_a) sign_a = sign_x; n_digits=0; }} if(n_digits <= MAX_FORMAT_DIGITS_32) { res = get_BID32_UF (sign_a, exponent_b, (BID_UINT32)P.w[0], 0, rnd_mode, pfpsf); BID_RETURN (res); } extra_digits = n_digits - 7; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_a && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif if(exponent_b+extra_digits<0) rmode=3; // RZ // add a constant to P, depending on rounding mode // 0.5*10^(digits_p - 16) for round-to-nearest if(extra_digits <= 18) { __add_128_64 (P, P, bid_round_const_table[rmode][extra_digits]); } else { __mul_64x64_to_128(Stemp, bid_round_const_table[rmode][18], bid_power10_table_128[extra_digits-18].w[0]); __add_128_128 (P, P, Stemp); if(rmode == BID_ROUNDING_UP) { __add_128_64 (P, P, bid_round_const_table[rmode][extra_digits-18]); } } // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Q_high, Q_low, P, bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; __shr_128_long (C128, Q_high, amount); C64 = __low_64 (C128); #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if ((C64 & 1)) { // check whether fractional part of initial_P/10^extra_digits // is exactly .5 // this is the same as fractional part of // (initial_P + 0.5*10^extra_digits)/10^extra_digits is exactly zero // get remainder rem_l = Q_high.w[0]; if(amount<64) { remainder_h = Q_high.w[0] << (64 - amount); rem_l = 0;} else remainder_h = Q_high.w[1] << (128 - amount); // test whether fractional part is 0 if (!(remainder_h | rem_l) && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) { C64--; } } #endif status = BID_INEXACT_EXCEPTION; // get remainder rem_l = Q_high.w[0]; if(amount<64) { remainder_h = Q_high.w[0] << (64 - amount); rem_l = 0;} else remainder_h = Q_high.w[1] << (128 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if ((remainder_h == 0x8000000000000000ull && !rem_l) && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!(remainder_h|rem_l) && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], CY, Q_low.w[0], bid_reciprocals10_128[extra_digits].w[0]); __add_carry_in_out (Stemp.w[1], carry, Q_low.w[1], bid_reciprocals10_128[extra_digits].w[1], CY); if(amount<64) { if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) if(!inexact) status = BID_EXACT_STATUS; } else { rem_l += carry; remainder_h >>= (128 - amount); if(carry && (!rem_l)) remainder_h++; if((remainder_h >= (((BID_UINT64) 1) << (amount-64))) && !inexact) status = BID_EXACT_STATUS; } } #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, status); #endif R = (status!=BID_EXACT_STATUS); #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if(((BID_UINT32)C64==9999999) && (exponent_b+extra_digits==-1) && (rnd_mode!=BID_ROUNDING_TO_ZERO)) { rmode = rnd_mode; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_a && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif if(extra_digits <= 18) { __add_128_64 (P, P, bid_round_const_table[rmode][extra_digits]); } else { __mul_64x64_to_128(Stemp, bid_round_const_table[rmode][18], bid_power10_table_128[extra_digits-18].w[0]); __add_128_128 (P, P, Stemp); if(rmode == BID_ROUNDING_UP) { __add_128_64 (P, P, bid_round_const_table[rmode][extra_digits-18]); } } // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Q_high, Q_low, P, bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; __shr_128_long (C128, Q_high, amount); C64 = __low_64 (C128); if(C64==10000000) { res = sign_a | 1000000; BID_RETURN (res); } } #endif res = get_BID32_UF (sign_a, exponent_b+extra_digits, (BID_UINT32)C64, (BID_UINT32)R, rnd_mode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid32_exp.c0000644€­ Q01134020000000636515113665770013573 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double exp(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_exp, BID_UINT32, x) BID_UINT32 res; double xd, rd; int z; // test if x is NaN if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK32) == SNAN_MASK32) // sNaN ) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0fffff; //quiet and make combination 0 (canonize) if ((res & 0x000fffff) > 999999) { // payload res &= ~0x000fffff; } BID_RETURN (res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid32_isZero, z, x); if (z) { // 1 according C99 res = 0x32800001; BID_RETURN (res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid32_isInf, z, x); if (z) { // 0 or Inf according C99 if (x & MASK_SIGN32) { res = 0x32800000; } else { res = 0x78000000; } #ifdef BID_SET_STATUS_FLAGS *pfpsf = 0; #endif BID_RETURN (res); } // Otherwise just do the operation "naively". // We inherit the special cases from the binary function, // but deal with overflowing finite inputs carefully so // things work in directed rounding modes. BIDECIMAL_CALL1(bid32_to_binary64,xd,x); if (xd > 700.0) rd = 1.0e200; else if (xd < -700.0) rd = 1.0e-200; else rd = exp(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,rd); BID_RETURN (res); } LIBRARY/src/bid64_atan.c0000644€­ Q01134020000000505115113665770013716 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_atan, BID_UINT64, x) // Declare local variables BID_UINT64 res; BID_F80_TYPE xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Otherwise just do the operation "naively". // We inherit the atan([-]inf) = [-]pi/2 case from the binary function // rather than having a special case for it. BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_atan( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } LIBRARY/src/bid128_llrintd.c0000644€­ Q01134020000000650015113665770014524 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID128_llrintd ****************************************************************************/ /* DESCRIPTION: The llrint function rounds its argument to the nearest integer value of type long long int, rounding according to the current rounding direction. RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid and inexact */ #if DECIMAL_CALL_BY_REFERENCE void bid128_llrint (long long int *pres, BID_UINT128 *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else RES_WRAPFN_DFP(long long int, bid128_llrint, 128); long long int bid128_llrint (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif long long int res; // assume sizeof (long long) = 8 if (rnd_mode == BID_ROUNDING_TO_NEAREST) BIDECIMAL_CALL1_NORND (bid128_to_int64_xrnint, res, x); else if (rnd_mode == BID_ROUNDING_TIES_AWAY) BIDECIMAL_CALL1_NORND (bid128_to_int64_xrninta, res, x); else if (rnd_mode == BID_ROUNDING_DOWN) BIDECIMAL_CALL1_NORND (bid128_to_int64_xfloor, res, x); else if (rnd_mode == BID_ROUNDING_UP) BIDECIMAL_CALL1_NORND (bid128_to_int64_xceil, res, x); else // if (rnd_mode == BID_ROUNDING_TO_ZERO) BIDECIMAL_CALL1_NORND (bid128_to_int64_xint, res, x); BID_RETURN (res); } LIBRARY/src/bid_from_int.c0000644€­ Q01134020000006666315113665770014456 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_round_integral_exact ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_from_int32 (BID_UINT64 * pres, int *px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { int x = *px; #else DFP_WRAPFN_OTHERTYPE(64, bid64_from_int32, int) BID_UINT64 bid64_from_int32 (int x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; // if integer is negative, put the absolute value // in the lowest 32bits of the result if ((x & SIGNMASK32) == SIGNMASK32) { // negative int32 x = ~x + 1; // 2's complement of x res = (unsigned int) x | 0xb1c0000000000000ull; // (exp << 53)) = biased exp. is 0 } else { // positive int32 res = x | 0x31c0000000000000ull; // (exp << 53)) = biased exp. is 0 } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_from_uint32 (BID_UINT64 * pres, unsigned int *px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { unsigned int x = *px; #else DFP_WRAPFN_OTHERTYPE(64, bid64_from_uint32, unsigned int) BID_UINT64 bid64_from_uint32 (unsigned int x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; res = x | 0x31c0000000000000ull; // (exp << 53)) = biased exp. is 0 BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_from_int64 (BID_UINT64 * pres, BID_SINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_SINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else DFP_WRAPFN_OTHERTYPE(64, bid64_from_int64, BID_SINT64) BID_UINT64 bid64_from_int64 (BID_SINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign, C; unsigned int q, ind; int incr_exp = 0; int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0; int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; x_sign = x & 0x8000000000000000ull; // if the integer is negative, use the absolute value if (x_sign) C = ~((BID_UINT64) x) + 1; else C = x; if (C <= BID64_SIG_MAX) { // |C| <= 10^16-1 and the result is exact if (C < 0x0020000000000000ull) { // C < 2^53 res = x_sign | 0x31c0000000000000ull | C; } else { // C >= 2^53 res = x_sign | 0x6c70000000000000ull | (C & 0x0007ffffffffffffull); } } else { // |C| >= 10^16 and the result may be inexact // the smallest |C| is 10^16 which has 17 decimal digits // the largest |C| is 0x8000000000000000 = 9223372036854775808 w/ 19 digits if (C < 0x16345785d8a0000ull) { // x < 10^17 q = 17; ind = 1; // number of digits to remove for q = 17 } else if (C < 0xde0b6b3a7640000ull) { // C < 10^18 q = 18; ind = 2; // number of digits to remove for q = 18 } else { // C < 10^19 q = 19; ind = 3; // number of digits to remove for q = 19 } // overflow and underflow are not possible // Note: performance can be improved by inlining this call bid_round64_2_18 ( // will work for 19 digits too if C fits in 64 bits q, ind, C, &res, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); if (incr_exp) ind++; // set the inexact flag if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) *pfpsf |= BID_INEXACT_EXCEPTION; // general correction from RN to RA, RM, RP, RZ; result uses ind for exp if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((!x_sign && ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even))) || (x_sign && ((rnd_mode == BID_ROUNDING_DOWN && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_DOWN) && is_midpoint_gt_even)))) { res = res + 1; if (res == 0x002386f26fc10000ull) { // res = 10^16 => rounding overflow res = 0x00038d7ea4c68000ull; // 10^15 ind = ind + 1; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && ((x_sign && (rnd_mode == BID_ROUNDING_UP || rnd_mode == BID_ROUNDING_TO_ZERO)) || (!x_sign && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)))) { res = res - 1; // check if we crossed into the lower decade if (res == 0x00038d7ea4c67fffull) { // 10^15 - 1 res = 0x002386f26fc0ffffull; // 10^16 - 1 ind = ind - 1; } } else { ; // exact, the result is already correct } } if (res < 0x0020000000000000ull) { // res < 2^53 res = x_sign | (((BID_UINT64) ind + 398) << 53) | res; } else { // res >= 2^53 res = x_sign | 0x6000000000000000ull | (((BID_UINT64) ind + 398) << 51) | (res & 0x0007ffffffffffffull); } } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_from_uint64 (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else DFP_WRAPFN_OTHERTYPE(64, bid64_from_uint64, BID_UINT64) BID_UINT64 bid64_from_uint64 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT128 x128, res128; unsigned int q, ind; int incr_exp = 0; int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0; int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; if (x <= BID64_SIG_MAX) { // x <= 10^16-1 and the result is exact if (x < 0x0020000000000000ull) { // x < 2^53 res = 0x31c0000000000000ull | x; } else { // x >= 2^53 res = 0x6c70000000000000ull | (x & 0x0007ffffffffffffull); } } else { // x >= 10^16 and the result may be inexact // the smallest x is 10^16 which has 17 decimal digits // the largest x is 0xffffffffffffffff = 18446744073709551615 w/ 20 digits if (x < 0x16345785d8a0000ull) { // x < 10^17 q = 17; ind = 1; // number of digits to remove for q = 17 } else if (x < 0xde0b6b3a7640000ull) { // x < 10^18 q = 18; ind = 2; // number of digits to remove for q = 18 } else if (x < 0x8ac7230489e80000ull) { // x < 10^19 q = 19; ind = 3; // number of digits to remove for q = 19 } else { // x < 10^20 q = 20; ind = 4; // number of digits to remove for q = 20 } // overflow and underflow are not possible // Note: performance can be improved by inlining this call if (q <= 19) { bid_round64_2_18 ( // will work for 20 digits too if x fits in 64 bits q, ind, x, &res, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); } else { // q = 20 x128.w[1] = 0x0; x128.w[0] = x; bid_round128_19_38 (q, ind, x128, &res128, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res = res128.w[0]; // res.w[1] is 0 } if (incr_exp) ind++; // set the inexact flag if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) *pfpsf |= BID_INEXACT_EXCEPTION; // general correction from RN to RA, RM, RP, RZ; result uses ind for exp if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even)) { res = res + 1; if (res == 0x002386f26fc10000ull) { // res = 10^16 => rounding overflow res = 0x00038d7ea4c68000ull; // 10^15 ind = ind + 1; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)) { res = res - 1; // check if we crossed into the lower decade if (res == 0x00038d7ea4c67fffull) { // 10^15 - 1 res = 0x002386f26fc0ffffull; // 10^16 - 1 ind = ind - 1; } } else { ; // exact, the result is already correct } } if (res < 0x0020000000000000ull) { // res < 2^53 res = (((BID_UINT64) ind + 398) << 53) | res; } else { // res >= 2^53 res = 0x6000000000000000ull | (((BID_UINT64) ind + 398) << 51) | (res & 0x0007ffffffffffffull); } } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_from_int32 (BID_UINT128 * pres, int *px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { int x = *px; #else DFP_WRAPFN_OTHERTYPE(128, bid128_from_int32, int) BID_UINT128 bid128_from_int32 (int x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res; // if integer is negative, use the absolute value if ((x & SIGNMASK32) == SIGNMASK32) { res.w[BID_HIGH_128W] = 0xb040000000000000ull; res.w[BID_LOW_128W] = ~((unsigned int) x) + 1; // 2's complement of x } else { res.w[BID_HIGH_128W] = 0x3040000000000000ull; res.w[BID_LOW_128W] = (unsigned int) x; } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_from_uint32 (BID_UINT128 * pres, unsigned int *px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { unsigned int x = *px; #else DFP_WRAPFN_OTHERTYPE(128, bid128_from_uint32, unsigned int) BID_UINT128 bid128_from_uint32 (unsigned int x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res; res.w[BID_HIGH_128W] = 0x3040000000000000ull; res.w[BID_LOW_128W] = x; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_from_int64 (BID_UINT128 * pres, BID_SINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_SINT64 x = *px; #else DFP_WRAPFN_OTHERTYPE(128, bid128_from_int64, BID_SINT64) BID_UINT128 bid128_from_int64 (BID_SINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res; // if integer is negative, use the absolute value if ((x & SIGNMASK64) == SIGNMASK64) { res.w[BID_HIGH_128W] = 0xb040000000000000ull; res.w[BID_LOW_128W] = ~x + 1; // 2's complement of x } else { res.w[BID_HIGH_128W] = 0x3040000000000000ull; res.w[BID_LOW_128W] = x; } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_from_uint64 (BID_UINT128 * pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else DFP_WRAPFN_OTHERTYPE(128, bid128_from_uint64, BID_UINT64) BID_UINT128 bid128_from_uint64 (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res; res.w[BID_HIGH_128W] = 0x3040000000000000ull; res.w[BID_LOW_128W] = x; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_from_int32 (BID_UINT32 * pres, BID_SINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_SINT32 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else DFP_WRAPFN_OTHERTYPE(32, bid32_from_int32, BID_SINT32) BID_UINT32 bid32_from_int32 (BID_SINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 res; BID_UINT64 res64; BID_UINT32 x_sign; BID_UINT32 C; unsigned int q, ind; int incr_exp = 0; int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0; int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; x_sign = x & MASK_SIGN32; // if the integer is negative, use the absolute value if (x_sign) C = ~((BID_UINT32) x) + 1; else C = x; if (C <= BID32_SIG_MAX) { // |C| <= 10^7-1 and the result is exact if (C < 0x00800000) { // C < 2^23 res = x_sign | 0x32800000 | C; } else { // C >= 2^23 res = x_sign | 0x6ca00000 | (C & 0x001fffff); } } else { // |C| >= 10^7 and the result may be inexact // the smallest |C| is 10^7 which has 8 decimal digits // the largest |C| is 0x80000000 = 2147483648 w/ 10 digits if (C < 0x05f5e100) { // x < 10^8 q = 8; ind = 1; // number of digits to remove for q = 8 } else if (C < 0x3b9aca00) { // C < 10^9 q = 9; ind = 2; // number of digits to remove for q = 9 } else { // C < 10^10 q = 10; ind = 3; // number of digits to remove for q = 10 } // overflow and underflow are not possible // Note: performance can be improved by inlining this call bid_round64_2_18 (q, ind, C, &res64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res = (BID_UINT32)res64; if (incr_exp) ind++; // set the inexact flag if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) *pfpsf |= BID_INEXACT_EXCEPTION; // general correction from RN to RA, RM, RP, RZ; result uses ind for exp if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((!x_sign && ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even))) || (x_sign && ((rnd_mode == BID_ROUNDING_DOWN && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_DOWN) && is_midpoint_gt_even)))) { res = res + 1; if (res == 10000000) { // res = 10^7 => rounding overflow res = 1000000; // 10^6 ind = ind + 1; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && ((x_sign && (rnd_mode == BID_ROUNDING_UP || rnd_mode == BID_ROUNDING_TO_ZERO)) || (!x_sign && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)))) { res = res - 1; // check if we crossed into the lower decade if (res == 999999) { // 10^6 - 1 res = 9999999; // 10^7 - 1 ind = ind - 1; } } else { ; // exact, the result is already correct } } if (res < 0x00800000) { // res < 2^23 res = x_sign | ((ind + 101) << 23) | res; } else { // res >= 2^23 res = x_sign | 0x60000000 | ((ind + 101) << 21) | (res & 0x001fffff); } } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_from_uint32 (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else DFP_WRAPFN_OTHERTYPE(32, bid32_from_uint32, BID_UINT32) BID_UINT32 bid32_from_uint32 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 res; BID_UINT64 res64; unsigned int q, ind; int incr_exp = 0; int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0; int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; if (x <= BID32_SIG_MAX) { // x <= 10^7-1 and the result is exact if (x < 0x00800000) { // x < 2^23 res = 0x32800000 | x; } else { // x >= 2^23 res = 0x6ca00000 | (x & 0x001fffff); } } else { // x >= 10^7 and the result may be inexact // the smallest x is 10^7 which has 8 decimal digits // the largest x is 0xffffffff = 4294967295 w/ 10 digits if (x < 0x05f5e100) { // x < 10^8 q = 8; ind = 1; // number of digits to remove for q = 8 } else if (x < 0x3b9aca00) { // x < 10^9 q = 9; ind = 2; // number of digits to remove for q = 9 } else { // x < 10^10 q = 10; ind = 3; // number of digits to remove for q = 10 } // overflow and underflow are not possible // Note: performance can be improved by inlining this call bid_round64_2_18 ( // would work for 20 digits too if x fits in 64 bits q, ind, x, &res64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res = (BID_UINT32)res64; if (incr_exp) ind++; // set the inexact flag if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) *pfpsf |= BID_INEXACT_EXCEPTION; // general correction from RN to RA, RM, RP, RZ; result uses ind for exp if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even)) { res = res + 1; if (res == 10000000) { // res = 10^7 => rounding overflow res = 1000000; // 10^6 ind = ind + 1; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)) { res = res - 1; // check if we crossed into the lower decade if (res == 999999) { // 10^6 - 1 res = 9999999; // 10^7 - 1 ind = ind - 1; } } else { ; // exact, the result is already correct } } if (res < 0x00800000) { // res < 2^23 res = ((ind + 101) << 23) | res; } else { // res >= 2^23 res = 0x60000000 | ((ind + 101) << 21) | (res & 0x001fffff); } } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_from_int64 (BID_UINT32 * pres, BID_SINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_SINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else DFP_WRAPFN_OTHERTYPE(32, bid32_from_int64, BID_SINT64) BID_UINT32 bid32_from_int64 (BID_SINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 res; BID_UINT32 x_sign32; BID_UINT64 x_sign; BID_UINT64 C, res64; unsigned int q, ind; int incr_exp = 0; int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0; int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; x_sign = x & 0x8000000000000000ull; x_sign32 = (x_sign ? 0x80000000 : 0x00000000); // if the integer is negative, use the absolute value if (x_sign) C = ~((BID_UINT64) x) + 1; else C = x; if (C <= (BID_UINT64)BID32_SIG_MAX) { // |C| <= 10^7-1 and the result is exact if (C < (BID_UINT64)0x00800000) { // C < 2^23 res = x_sign32 | 0x32800000 | (BID_UINT32)(C & 0x007fffff); } else { // C >= 2^23 res = x_sign32 | 0x6ca00000 | (BID_UINT32)(C & 0x001fffff); } } else { // |C| >= 10^7 and the result may be inexact // the smallest |C| is 10^7 which has 8 decimal digits // the largest |C| is 0x8000000000000000 = 9223372036854775808 w/ 19 digits if (C < (BID_UINT64)0x05f5e100) { // x < 10^8 q = 8; ind = 1; // number of digits to remove for q = 8 } else if (C < (BID_UINT64)0x3b9aca00) { // C < 10^9 q = 9; ind = 2; // number of digits to remove for q = 9 } else if (C < 10000000000ull) { // C < 10^10 q = 10; ind = 3; // number of digits to remove for q = 10 } else if (C < 100000000000ull) { // C < 10^11 q = 11; ind = 4; // number of digits to remove for q = 11 } else if (C < 1000000000000ull) { // C < 10^12 q = 12; ind = 5; // number of digits to remove for q = 12 } else if (C < 10000000000000ull) { // C < 10^13 q = 13; ind = 6; // number of digits to remove for q = 13 } else if (C < 100000000000000ull) { // C < 10^14 q = 14; ind = 7; // number of digits to remove for q = 14 } else if (C < 1000000000000000ull) { // C < 10^15 q = 15; ind = 8; // number of digits to remove for q = 15 } else if (C < 10000000000000000ull) { // C < 10^16 q = 16; ind = 9; // number of digits to remove for q = 16 } else if (C < 100000000000000000ull) { // C < 10^17 q = 17; ind = 10; // number of digits to remove for q = 17 } else if (C < 1000000000000000000ull) { // C < 10^18 q = 18; ind = 11; // number of digits to remove for q = 18 } else { // C < 10^19 q = 19; ind = 12; // number of digits to remove for q = 19 } // overflow and underflow are not possible // Note: performance can be improved by inlining this call bid_round64_2_18 ( // will work for 19 digits too if C fits in 64 bits q, ind, C, &res64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res = (BID_UINT32)res64; if (incr_exp) ind++; // set the inexact flag if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) *pfpsf |= BID_INEXACT_EXCEPTION; // general correction from RN to RA, RM, RP, RZ; result uses ind for exp if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((!x_sign && ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even))) || (x_sign && ((rnd_mode == BID_ROUNDING_DOWN && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_DOWN) && is_midpoint_gt_even)))) { res = res + 1; if (res == 10000000) { // res = 10^7 => rounding overflow res = 1000000; // 10^6 ind = ind + 1; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && ((x_sign && (rnd_mode == BID_ROUNDING_UP || rnd_mode == BID_ROUNDING_TO_ZERO)) || (!x_sign && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)))) { res = res - 1; // check if we crossed into the lower decade if (res == 999999) { // 10^6 - 1 res = 9999999; // 10^7 - 1 ind = ind - 1; } } else { ; // exact, the result is already correct } } if (res < 0x00800000) { // res < 2^23 res = x_sign32 | ((ind + 101) << 23) | res; } else { // res >= 2^23 res = x_sign32 | 0x60000000 | ((ind + 101) << 21) | (res & 0x001fffff); } } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_from_uint64 (BID_UINT32 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else DFP_WRAPFN_OTHERTYPE(32, bid32_from_uint64, BID_UINT64) BID_UINT32 bid32_from_uint64 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 res; BID_UINT64 res64; BID_UINT128 x128, res128; unsigned int q, ind; int incr_exp = 0; int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0; int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; if (x <= (BID_UINT64)BID32_SIG_MAX) { // x <= 10^7-1 and the result is exact if (x < (BID_UINT64)0x00800000) { // x < 2^23 res = 0x32800000 | (BID_UINT32)(x & 0x007fffff); } else { // x >= 2^23 res = 0x6ca00000 | (BID_UINT32)(x & 0x001fffff); } } else { // x >= 10^7 and the result may be inexact // the smallest x is 10^7 which has 8 decimal digits // the largest x is 0xffffffffffffffff = 18446744073709551615 w/ 20 digits if (x < (BID_UINT64)0x05f5e100) { // x < 10^8 q = 8; ind = 1; // number of digits to remove for q = 8 } else if (x < (BID_UINT64)0x3b9aca00) { // x < 10^9 q = 9; ind = 2; // number of digits to remove for q = 9 } else if (x < 10000000000ull) { // x < 10^10 q = 10; ind = 3; // number of digits to remove for q = 10 } else if (x < 100000000000ull) { // x < 10^11 q = 11; ind = 4; // number of digits to remove for q = 11 } else if (x < 1000000000000ull) { // x < 10^12 q = 12; ind = 5; // number of digits to remove for q = 12 } else if (x < 10000000000000ull) { // x < 10^13 q = 13; ind = 6; // number of digits to remove for q = 13 } else if (x < 100000000000000ull) { // x < 10^14 q = 14; ind = 7; // number of digits to remove for q = 14 } else if (x < 1000000000000000ull) { // x < 10^15 q = 15; ind = 8; // number of digits to remove for q = 15 } else if (x < 10000000000000000ull) { // x < 10^16 q = 16; ind = 9; // number of digits to remove for q = 16 } else if (x < 100000000000000000ull) { // x < 10^17 q = 17; ind = 10; // number of digits to remove for q = 17 } else if (x < 1000000000000000000ull) { // x < 10^18 q = 18; ind = 11; // number of digits to remove for q = 18 } else if (x < 10000000000000000000ull) { // x < 10^19 q = 19; ind = 12; // number of digits to remove for q = 19 } else { // x < 10^20 q = 20; ind = 13; // number of digits to remove for q = 20 } // overflow and underflow are not possible // Note: performance can be improved by inlining this call if (q <= 19) { bid_round64_2_18 ( // would work for 20 digits too if x fits in 64 bits q, ind, x, &res64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res = (BID_UINT32)res64; } else { // q = 20 x128.w[1] = 0x0; x128.w[0] = x; bid_round128_19_38 (q, ind, x128, &res128, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res = (BID_UINT32)res128.w[0]; // res.w[1] is 0 } if (incr_exp) ind++; // set the inexact flag if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) *pfpsf |= BID_INEXACT_EXCEPTION; // general correction from RN to RA, RM, RP, RZ; result uses ind for exp if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even)) { res= res+ 1; if (res== 10000000) { // res = 10^7 => rounding overflow res = 1000000; // 10^6 ind = ind + 1; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)) { res = res - 1; // check if we crossed into the lower decade if (res == 999999) { // 10^6 - 1 res = 9999999; // 10^7 - 1 ind = ind - 1; } } else { ; // exact, the result is already correct } } if (res < 0x00800000) { // res < 2^23 res = ((ind + 101) << 23) | res; } else { // res >= 2^23 res = 0x60000000 | ((ind + 101) << 21) | (res & 0x001fffff); } } BID_RETURN (res); } LIBRARY/src/bid128_div.c0000644€­ Q01134020000015553515113665770013653 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_div_macros.h" #include BID_EXTERN_C const BID_UINT32 bid_convert_table[5][128][2]; BID_EXTERN_C const BID_SINT8 bid_factors[][2]; BID_EXTERN_C const BID_UINT8 bid_packed_10000_zeros[]; BID128_FUNCTION_ARG2 (bid128_div, x, y) BID_UINT256 CA4, CA4r, P256; BID_UINT128 CX, CY, T128, CQ, CR, CA, TP128, Qh, Ql, res; BID_UINT64 sign_x, sign_y, T, carry64, D, Q_high, Q_low, QX, PD, valid_y; int_float fx, fy, f64; BID_UINT32 QX32, tdigit[3], digit, digit_h, digit_low; int exponent_x, exponent_y, bin_index, bin_expon, diff_expon, ed2, digits_q, amount; int nzeros, i, j, k, d5; unsigned rmode; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } valid_y = unpack_BID128_value (&sign_y, &exponent_y, &CY, y); // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN if ((x.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull || // sNaN (y.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = (CX.w[1]) & QUIET_MASK64; res.w[0] = CX.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x is Infinity? if ((x.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is Inf. if (((y.w[1] & 0x7c00000000000000ull) == 0x7800000000000000ull)) // return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is NaN? if (((y.w[1] & 0x7c00000000000000ull) != 0x7c00000000000000ull)) // return NaN { // return +/-Inf res.w[1] = ((x.w[1] ^ y.w[1]) & 0x8000000000000000ull) | 0x7800000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } // x is 0 if ((y.w[1] & 0x7800000000000000ull) < 0x7800000000000000ull) { if ((!CY.w[0]) && !(CY.w[1] & 0x0001ffffffffffffull)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=y=0, return NaN res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // return 0 res.w[1] = (x.w[1] ^ y.w[1]) & 0x8000000000000000ull; exponent_x = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS_128; if (exponent_x > DECIMAL_MAX_EXPON_128) exponent_x = DECIMAL_MAX_EXPON_128; else if (exponent_x < 0) exponent_x = 0; res.w[1] |= (((BID_UINT64) exponent_x) << 49); res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = CY.w[1] & QUIET_MASK64; res.w[0] = CY.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is Infinity? if ((y.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // return +/-0 res.w[1] = sign_x ^ sign_y; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is 0, return +/-Inf #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif res.w[1] = ((x.w[1] ^ y.w[1]) & 0x8000000000000000ull) | 0x7800000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif diff_expon = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS_128; if (__unsigned_compare_gt_128 (CY, CX)) { // CX < CY // 2^64 f64.i = 0x5f800000; // fx ~ CX, fy ~ CY fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; fy.d = (float) CY.w[1] * f64.d + (float) CY.w[0]; // expon_cy - expon_cx bin_index = (fy.i - fx.i) >> 23; if (CX.w[1]) { T = bid_power10_index_binexp_128[bin_index].w[0]; __mul_64x128_short (CA, T, CX); } else { T128 = bid_power10_index_binexp_128[bin_index]; __mul_64x128_short (CA, CX.w[0], T128); } ed2 = 33; if (__unsigned_compare_gt_128 (CY, CA)) ed2++; T128 = bid_power10_table_128[ed2]; __mul_128x128_to_256 (CA4, CA, T128); ed2 += bid_estimate_decimal_digits[bin_index]; CQ.w[0] = CQ.w[1] = 0; diff_expon = diff_expon - ed2; } else { // get CQ = CX/CY bid___div_128_by_128 (&CQ, &CR, CX, CY); if (!CR.w[1] && !CR.w[0]) { bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // get number of decimal digits in CQ // 2^64 f64.i = 0x5f800000; fx.d = (float) CQ.w[1] * f64.d + (float) CQ.w[0]; // binary expon. of CQ bin_expon = (fx.i - 0x3f800000) >> 23; digits_q = bid_estimate_decimal_digits[bin_expon]; TP128.w[0] = bid_power10_index_binexp_128[bin_expon].w[0]; TP128.w[1] = bid_power10_index_binexp_128[bin_expon].w[1]; if (__unsigned_compare_ge_128 (CQ, TP128)) digits_q++; ed2 = 34 - digits_q; T128.w[0] = bid_power10_table_128[ed2].w[0]; T128.w[1] = bid_power10_table_128[ed2].w[1]; __mul_128x128_to_256 (CA4, CR, T128); diff_expon = diff_expon - ed2; __mul_128x128_low (CQ, CQ, T128); } bid___div_256_by_128 (&CQ, &CA4, CY); #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #ifndef LEAVE_TRAILING_ZEROS else #endif #else #ifndef LEAVE_TRAILING_ZEROS if (!CA4.w[0] && !CA4.w[1]) #endif #endif #ifndef LEAVE_TRAILING_ZEROS // check whether result is exact { // check whether CX, CY are short if (!CX.w[1] && !CY.w[1] && (CX.w[0] <= 1024) && (CY.w[0] <= 1024)) { i = (int) CY.w[0] - 1; j = (int) CX.w[0] - 1; // difference in powers of 2 bid_factors for Y and X nzeros = ed2 - bid_factors[i][0] + bid_factors[j][0]; // difference in powers of 5 bid_factors d5 = ed2 - bid_factors[i][1] + bid_factors[j][1]; if (d5 < nzeros) nzeros = d5; // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128_long (CQ, Qh, amount); diff_expon += nzeros; } else { // decompose Q as Qh*10^17 + Ql //T128 = bid_reciprocals10_128[17]; T128.w[0] = 0x44909befeb9fad49ull; T128.w[1] = 0x000b877aa3236a4bull; __mul_128x128_to_256 (P256, CQ, T128); //amount = bid_recip_scale[17]; Q_high = (P256.w[2] >> 44) | (P256.w[3] << (64 - 44)); Q_low = CQ.w[0] - Q_high * 100000000000000000ull; if (!Q_low) { diff_expon += 17; tdigit[0] = Q_high & 0x3ffffff; tdigit[1] = 0; QX = Q_high >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } if (tdigit[1] >= 100000000) { tdigit[1] -= 100000000; if (tdigit[1] >= 100000000) tdigit[1] -= 100000000; } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { __mul_64x64_to_128 (CQ, Q_high, bid_reciprocals10_64[nzeros]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-64 amount = bid_short_recip_scale[nzeros]; CQ.w[0] = CQ.w[1] >> amount; } else CQ.w[0] = Q_high; CQ.w[1] = 0; diff_expon += nzeros; } else { tdigit[0] = Q_low & 0x3ffffff; tdigit[1] = 0; QX = Q_low >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } if (tdigit[1] >= 100000000) { tdigit[1] -= 100000000; if (tdigit[1] >= 100000000) tdigit[1] -= 100000000; } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); //now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128 (CQ, Qh, amount); } diff_expon += nzeros; } } bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #endif if (diff_expon >= 0) { #ifdef IEEE_ROUND_NEAREST // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else #ifdef IEEE_ROUND_NEAREST_TIES_AWAY // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else rmode = rnd_mode; if (sign_x ^ sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; switch (rmode) { case BID_ROUNDING_TO_NEAREST: // round to nearest code // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_TIES_AWAY: // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: break; default: // rounding up CQ.w[0]++; if (!CQ.w[0]) CQ.w[1]++; break; } #endif #endif } else { #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #endif bid_handle_UF_128_rem (&res, sign_x ^ sign_y, diff_expon, CQ, CA4.w[1] | CA4.w[0], &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } //#define LEAVE_TRAILING_ZEROS BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2 (BID_UINT128, bid128dd_div, BID_UINT64, x, BID_UINT64, y) BID_UINT256 CA4, CA4r, P256; BID_UINT128 CX, CY, T128, CQ, CR, CA, TP128, Qh, Ql, res; BID_UINT64 sign_x, sign_y, carry64, D, Q_high, Q_low, QX, PD, valid_y; int_float fx, fy, f64; BID_UINT32 QX32, tdigit[3], digit, digit_h, digit_low; int exponent_x, exponent_y, bin_index, bin_expon, diff_expon, ed2, digits_q, amount; int nzeros, i, j, k, d5; unsigned rmode; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } valid_y = unpack_BID64 (&sign_y, &exponent_y, &CY.w[0], y); // unpack arguments, check for NaN or Infinity CX.w[1] = 0; if (!unpack_BID64 (&sign_x, &exponent_x, &CX.w[0], (x))) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[0] = (CX.w[0] & 0x0003ffffffffffffull); __mul_64x64_to_128 (res, res.w[0], bid_power10_table_128[18].w[0]); res.w[1] |= ((CX.w[0]) & 0xfc00000000000000ull); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x is Infinity? if (((x) & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is Inf. if ((((y) & 0x7c00000000000000ull) == 0x7800000000000000ull)) // return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } if ((((y) & 0x7c00000000000000ull) != 0x7c00000000000000ull)) { // otherwise return +/-Inf res.w[1] = (((x) ^ (y)) & 0x8000000000000000ull) | 0x7800000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } // x is 0 if ((((y) & 0x7800000000000000ull) != 0x7800000000000000ull)) { if(!CY.w[0]) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=y=0, return NaN res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // return 0 res.w[1] = ((x) ^ (y)) & 0x8000000000000000ull; if (((y) & 0x6000000000000000ull) == 0x6000000000000000ull) exponent_y = ((BID_UINT32) ((y) >> 51)) & 0x3ff; else exponent_y = ((BID_UINT32) ((y) >> 53)) & 0x3ff; exponent_x = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS_128; res.w[1] |= (((BID_UINT64) exponent_x) << 49); res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } CY.w[1] = 0; if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[0] = (CY.w[0] & 0x0003ffffffffffffull); __mul_64x64_to_128 (res, res.w[0], bid_power10_table_128[18].w[0]); res.w[1] |= ((CY.w[0]) & 0xfc00000000000000ull); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is Infinity? if (((y) & 0x7800000000000000ull) == 0x7800000000000000ull) { // return +/-0 res.w[1] = sign_x ^ sign_y; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is 0, return +/-Inf res.w[1] = (((x) ^ (y)) & 0x8000000000000000ull) | 0x7800000000000000ull; res.w[0] = 0; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif diff_expon = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS_128; if (__unsigned_compare_gt_128 (CY, CX)) { // CX < CY // 2^64 f64.i = 0x5f800000; // fx ~ CX, fy ~ CY fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; fy.d = (float) CY.w[1] * f64.d + (float) CY.w[0]; // expon_cy - expon_cx bin_index = (fy.i - fx.i) >> 23; T128 = bid_power10_index_binexp_128[bin_index]; __mul_64x128_short (CA, CX.w[0], T128); ed2 = 33; if (__unsigned_compare_gt_128 (CY, CA)) ed2++; T128 = bid_power10_table_128[ed2]; __mul_128x128_to_256 (CA4, CA, T128); ed2 += bid_estimate_decimal_digits[bin_index]; CQ.w[0] = CQ.w[1] = 0; diff_expon = diff_expon - ed2; } else { // get CQ = CX/CY bid___div_128_by_128 (&CQ, &CR, CX, CY); if (!CR.w[1] && !CR.w[0]) { bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // get number of decimal digits in CQ // 2^64 f64.i = 0x5f800000; fx.d = (float) CQ.w[1] * f64.d + (float) CQ.w[0]; // binary expon. of CQ bin_expon = (fx.i - 0x3f800000) >> 23; digits_q = bid_estimate_decimal_digits[bin_expon]; TP128.w[0] = bid_power10_index_binexp_128[bin_expon].w[0]; TP128.w[1] = bid_power10_index_binexp_128[bin_expon].w[1]; if (__unsigned_compare_ge_128 (CQ, TP128)) digits_q++; ed2 = 34 - digits_q; T128.w[0] = bid_power10_table_128[ed2].w[0]; T128.w[1] = bid_power10_table_128[ed2].w[1]; __mul_128x128_to_256 (CA4, CR, T128); diff_expon = diff_expon - ed2; __mul_128x128_low (CQ, CQ, T128); } bid___div_256_by_128 (&CQ, &CA4, CY); #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #ifndef LEAVE_TRAILING_ZEROS else #endif #else #ifndef LEAVE_TRAILING_ZEROS if (!CA4.w[0] && !CA4.w[1]) #endif #endif #ifndef LEAVE_TRAILING_ZEROS // check whether result is exact { // check whether CX, CY are short if (!CX.w[1] && !CY.w[1] && (CX.w[0] <= 1024) && (CY.w[0] <= 1024)) { i = (int) CY.w[0] - 1; j = (int) CX.w[0] - 1; // difference in powers of 2 bid_factors for Y and X nzeros = ed2 - bid_factors[i][0] + bid_factors[j][0]; // difference in powers of 5 bid_factors d5 = ed2 - bid_factors[i][1] + bid_factors[j][1]; if (d5 < nzeros) nzeros = d5; // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); //__mul_128x128_to_256(P256, CQ, bid_reciprocals10_128[nzeros]);Qh.w[1]=P256.w[3];Qh.w[0]=P256.w[2]; // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128_long (CQ, Qh, amount); diff_expon += nzeros; } else { // decompose Q as Qh*10^17 + Ql //T128 = bid_reciprocals10_128[17]; T128.w[0] = 0x44909befeb9fad49ull; T128.w[1] = 0x000b877aa3236a4bull; __mul_128x128_to_256 (P256, CQ, T128); //amount = bid_recip_scale[17]; Q_high = (P256.w[2] >> 44) | (P256.w[3] << (64 - 44)); Q_low = CQ.w[0] - Q_high * 100000000000000000ull; if (!Q_low) { diff_expon += 17; tdigit[0] = Q_high & 0x3ffffff; tdigit[1] = 0; QX = Q_high >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } if (tdigit[1] >= 100000000) { tdigit[1] -= 100000000; if (tdigit[1] >= 100000000) tdigit[1] -= 100000000; } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { __mul_64x64_to_128 (CQ, Q_high, bid_reciprocals10_64[nzeros]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-64 amount = bid_short_recip_scale[nzeros]; CQ.w[0] = CQ.w[1] >> amount; } else CQ.w[0] = Q_high; CQ.w[1] = 0; diff_expon += nzeros; } else { tdigit[0] = Q_low & 0x3ffffff; tdigit[1] = 0; QX = Q_low >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } if (tdigit[1] >= 100000000) { tdigit[1] -= 100000000; if (tdigit[1] >= 100000000) tdigit[1] -= 100000000; } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128 (CQ, Qh, amount); } diff_expon += nzeros; } } bid_get_BID128(&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode,pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #endif if (diff_expon >= 0) { #ifdef IEEE_ROUND_NEAREST // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else #ifdef IEEE_ROUND_NEAREST_TIES_AWAY // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else rmode = rnd_mode; if (sign_x ^ sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; switch (rmode) { case BID_ROUNDING_TO_NEAREST: // round to nearest code // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_TIES_AWAY: // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: break; default: // rounding up CQ.w[0]++; if (!CQ.w[0]) CQ.w[1]++; break; } #endif #endif } else { #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #endif bid_handle_UF_128_rem (&res, sign_x ^ sign_y, diff_expon, CQ, CA4.w[1] | CA4.w[0], &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } BID128_FUNCTION_ARGTYPE1_ARG128 (bid128dq_div, BID_UINT64, x, y) BID_UINT256 CA4, CA4r, P256; BID_UINT128 CX, CY, T128, CQ, CR, CA, TP128, Qh, Ql, res; BID_UINT64 sign_x, sign_y, carry64, D, Q_high, Q_low, QX, valid_y, PD; int_float fx, fy, f64; BID_UINT32 QX32, tdigit[3], digit, digit_h, digit_low; int exponent_x, exponent_y, bin_index, bin_expon, diff_expon, ed2, digits_q, amount; int nzeros, i, j, k, d5; unsigned rmode; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } valid_y = unpack_BID128_value (&sign_y, &exponent_y, &CY, y); // unpack arguments, check for NaN or Infinity CX.w[1] = 0; if (!unpack_BID64 (&sign_x, &exponent_x, &CX.w[0], x)) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[1] & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[0] = (CX.w[0] & 0x0003ffffffffffffull); __mul_64x64_to_128 (res, res.w[0], bid_power10_table_128[18].w[0]); res.w[1] |= ((CX.w[0]) & 0xfc00000000000000ull); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x is Infinity? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is Inf. if (((y.w[1] & 0x7c00000000000000ull) == 0x7800000000000000ull)) // return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } if (((y.w[1] & 0x7c00000000000000ull) != 0x7c00000000000000ull)) { // otherwise return +/-Inf res.w[1] = ((x ^ y.w[1]) & 0x8000000000000000ull) | 0x7800000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } // x is 0 if ((y.w[1] & INFINITY_MASK64) != INFINITY_MASK64) { if ((!CY.w[0]) && !(CY.w[1] & 0x0001ffffffffffffull)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=y=0, return NaN res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // return 0 res.w[1] = (x ^ y.w[1]) & 0x8000000000000000ull; exponent_x = exponent_x - exponent_y + (DECIMAL_EXPONENT_BIAS_128<<1) - DECIMAL_EXPONENT_BIAS; if (exponent_x > DECIMAL_MAX_EXPON_128) exponent_x = DECIMAL_MAX_EXPON_128; else if (exponent_x < 0) exponent_x = 0; res.w[1] |= (((BID_UINT64) exponent_x) << 49); res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } exponent_x += (DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS); if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = CY.w[1] & QUIET_MASK64; res.w[0] = CY.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is Infinity? if ((y.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // return +/-0 res.w[1] = sign_x ^ sign_y; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is 0, return +/-Inf res.w[1] = ((x ^ y.w[1]) & 0x8000000000000000ull) | 0x7800000000000000ull; res.w[0] = 0; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif diff_expon = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS_128; if (__unsigned_compare_gt_128 (CY, CX)) { // CX < CY // 2^64 f64.i = 0x5f800000; // fx ~ CX, fy ~ CY fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; fy.d = (float) CY.w[1] * f64.d + (float) CY.w[0]; // expon_cy - expon_cx bin_index = (fy.i - fx.i) >> 23; T128 = bid_power10_index_binexp_128[bin_index]; __mul_64x128_short (CA, CX.w[0], T128); ed2 = 33; if (__unsigned_compare_gt_128 (CY, CA)) ed2++; T128 = bid_power10_table_128[ed2]; __mul_128x128_to_256 (CA4, CA, T128); ed2 += bid_estimate_decimal_digits[bin_index]; CQ.w[0] = CQ.w[1] = 0; diff_expon = diff_expon - ed2; } else { // get CQ = CX/CY bid___div_128_by_128 (&CQ, &CR, CX, CY); if (!CR.w[1] && !CR.w[0]) { bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // get number of decimal digits in CQ // 2^64 f64.i = 0x5f800000; fx.d = (float) CQ.w[1] * f64.d + (float) CQ.w[0]; // binary expon. of CQ bin_expon = (fx.i - 0x3f800000) >> 23; digits_q = bid_estimate_decimal_digits[bin_expon]; TP128.w[0] = bid_power10_index_binexp_128[bin_expon].w[0]; TP128.w[1] = bid_power10_index_binexp_128[bin_expon].w[1]; if (__unsigned_compare_ge_128 (CQ, TP128)) digits_q++; ed2 = 34 - digits_q; T128.w[0] = bid_power10_table_128[ed2].w[0]; T128.w[1] = bid_power10_table_128[ed2].w[1]; __mul_128x128_to_256 (CA4, CR, T128); diff_expon = diff_expon - ed2; __mul_128x128_low (CQ, CQ, T128); } bid___div_256_by_128 (&CQ, &CA4, CY); #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #ifndef LEAVE_TRAILING_ZEROS else #endif #else #ifndef LEAVE_TRAILING_ZEROS if (!CA4.w[0] && !CA4.w[1]) #endif #endif #ifndef LEAVE_TRAILING_ZEROS // check whether result is exact { //printf("ed2=%d,nz=%d,a=%d,CQ="BID_LX16","BID_LX16", RH="BID_LX16", RL="BID_LX16"\n",ed2,nzeros,amount,CQ.w[1],CQ.w[0],reciprocals10_128[nzeros].w[1],reciprocals10_128[nzeros].w[0]);fflush(stdout); // check whether CX, CY are short if (!CX.w[1] && !CY.w[1] && (CX.w[0] <= 1024) && (CY.w[0] <= 1024)) { i = (int) CY.w[0] - 1; j = (int) CX.w[0] - 1; // difference in powers of 2 bid_factors for Y and X nzeros = ed2 - bid_factors[i][0] + bid_factors[j][0]; // difference in powers of 5 bid_factors d5 = ed2 - bid_factors[i][1] + bid_factors[j][1]; if (d5 < nzeros) nzeros = d5; // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); //__mul_128x128_to_256(P256, CQ, bid_reciprocals10_128[nzeros]);Qh.w[1]=P256.w[3];Qh.w[0]=P256.w[2]; // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128_long (CQ, Qh, amount); diff_expon += nzeros; } else { // decompose Q as Qh*10^17 + Ql //T128 = bid_reciprocals10_128[17]; T128.w[0] = 0x44909befeb9fad49ull; T128.w[1] = 0x000b877aa3236a4bull; __mul_128x128_to_256 (P256, CQ, T128); //amount = bid_recip_scale[17]; Q_high = (P256.w[2] >> 44) | (P256.w[3] << (64 - 44)); Q_low = CQ.w[0] - Q_high * 100000000000000000ull; if (!Q_low) { diff_expon += 17; tdigit[0] = Q_high & 0x3ffffff; tdigit[1] = 0; QX = Q_high >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } if (tdigit[1] >= 100000000) { tdigit[1] -= 100000000; if (tdigit[1] >= 100000000) tdigit[1] -= 100000000; } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); //printf("i=%d, nz=%d, digit=%d (%d, %016I64x %016I64x)\n",i,nzeros,digit_h,digit,PD,digit_h);fflush(stdout); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { __mul_64x64_to_128 (CQ, Q_high, bid_reciprocals10_64[nzeros]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-64 amount = bid_short_recip_scale[nzeros]; CQ.w[0] = CQ.w[1] >> amount; } else CQ.w[0] = Q_high; CQ.w[1] = 0; diff_expon += nzeros; } else { tdigit[0] = Q_low & 0x3ffffff; tdigit[1] = 0; QX = Q_low >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } if (tdigit[1] >= 100000000) { tdigit[1] -= 100000000; if (tdigit[1] >= 100000000) tdigit[1] -= 100000000; } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); //printf("i=%d, nz=%d, digit=%d (%d, %016I64x %016I64x)\n",i,nzeros,digit_h,digit,PD,digit_h);fflush(stdout); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128 (CQ, Qh, amount); } diff_expon += nzeros; } } bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #endif if (diff_expon >= 0) { #ifdef IEEE_ROUND_NEAREST // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else #ifdef IEEE_ROUND_NEAREST_TIES_AWAY // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else rmode = rnd_mode; if (sign_x ^ sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; switch (rmode) { case BID_ROUNDING_TO_NEAREST: // round to nearest code // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_TIES_AWAY: // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: break; default: // rounding up CQ.w[0]++; if (!CQ.w[0]) CQ.w[1]++; break; } #endif #endif } else { #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #endif bid_handle_UF_128_rem (&res, sign_x ^ sign_y, diff_expon, CQ, CA4.w[1] | CA4.w[0], &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif BID_RETURN (res); } BID128_FUNCTION_ARG128_ARGTYPE2 (bid128qd_div, x, BID_UINT64, y) BID_UINT256 CA4, CA4r, P256; BID_UINT128 CX, CY, T128, CQ, CR, CA, TP128, Qh, Ql, res; BID_UINT64 sign_x, sign_y, carry64, D, Q_high, Q_low, QX, PD, valid_y; int_float fx, fy, f64; BID_UINT32 QX32, tdigit[3], digit, digit_h, digit_low; int exponent_x, exponent_y, bin_index, bin_expon, diff_expon, ed2, digits_q, amount; int nzeros, i, j, k, d5, rmode; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } valid_y = unpack_BID64 (&sign_y, &exponent_y, &CY.w[0], y); // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN if ((x.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull || // sNaN (y & 0x7e00000000000000ull) == 0x7e00000000000000ull) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = (CX.w[1]) & QUIET_MASK64; res.w[0] = CX.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x is Infinity? if ((x.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is Inf. if (((y & 0x7c00000000000000ull) == 0x7800000000000000ull)) // return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is NaN? if (((y & 0x7c00000000000000ull) != 0x7c00000000000000ull)) // return NaN { // return +/-Inf res.w[1] = ((x.w[1] ^ y) & 0x8000000000000000ull) | 0x7800000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } // x is 0 if ((y & 0x7800000000000000ull) < 0x7800000000000000ull) { if (!CY.w[0]) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=y=0, return NaN res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // return 0 res.w[1] = (x.w[1] ^ y) & 0x8000000000000000ull; exponent_x = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS; if (exponent_x > DECIMAL_MAX_EXPON_128) exponent_x = DECIMAL_MAX_EXPON_128; else if (exponent_x < 0) exponent_x = 0; res.w[1] |= (((BID_UINT64) exponent_x) << 49); res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } CY.w[1] = 0; if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[0] = (CY.w[0] & 0x0003ffffffffffffull); __mul_64x64_to_128 (res, res.w[0], bid_power10_table_128[18].w[0]); res.w[1] |= ((CY.w[0]) & 0xfc00000000000000ull); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is Infinity? if ((y & INFINITY_MASK64) == INFINITY_MASK64) { // return +/-0 res.w[1] = ((x.w[1] ^ y) & 0x8000000000000000ull); res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is 0 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif res.w[1] = (sign_x ^ sign_y) | INFINITY_MASK64; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif diff_expon = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS; if (__unsigned_compare_gt_128 (CY, CX)) { // CX < CY // 2^64 f64.i = 0x5f800000; // fx ~ CX, fy ~ CY fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; fy.d = (float) CY.w[1] * f64.d + (float) CY.w[0]; // expon_cy - expon_cx bin_index = (fy.i - fx.i) >> 23; T128 = bid_power10_index_binexp_128[bin_index]; __mul_64x128_short (CA, CX.w[0], T128); ed2 = 33; if (__unsigned_compare_gt_128 (CY, CA)) ed2++; T128 = bid_power10_table_128[ed2]; __mul_128x128_to_256 (CA4, CA, T128); ed2 += bid_estimate_decimal_digits[bin_index]; CQ.w[0] = CQ.w[1] = 0; diff_expon = diff_expon - ed2; } else { // get CQ = CX/CY bid___div_128_by_128 (&CQ, &CR, CX, CY); if (!CR.w[1] && !CR.w[0]) { bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // get number of decimal digits in CQ // 2^64 f64.i = 0x5f800000; fx.d = (float) CQ.w[1] * f64.d + (float) CQ.w[0]; // binary expon. of CQ bin_expon = (fx.i - 0x3f800000) >> 23; digits_q = bid_estimate_decimal_digits[bin_expon]; TP128.w[0] = bid_power10_index_binexp_128[bin_expon].w[0]; TP128.w[1] = bid_power10_index_binexp_128[bin_expon].w[1]; if (__unsigned_compare_ge_128 (CQ, TP128)) digits_q++; ed2 = 34 - digits_q; T128.w[0] = bid_power10_table_128[ed2].w[0]; T128.w[1] = bid_power10_table_128[ed2].w[1]; __mul_128x128_to_256 (CA4, CR, T128); diff_expon = diff_expon - ed2; __mul_128x128_low (CQ, CQ, T128); } bid___div_256_by_128 (&CQ, &CA4, CY); #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #ifndef LEAVE_TRAILING_ZEROS else #endif #else #ifndef LEAVE_TRAILING_ZEROS if (!CA4.w[0] && !CA4.w[1]) #endif #endif #ifndef LEAVE_TRAILING_ZEROS // check whether result is exact { // check whether CX, CY are short if (!CX.w[1] && !CY.w[1] && (CX.w[0] <= 1024) && (CY.w[0] <= 1024)) { i = (int) CY.w[0] - 1; j = (int) CX.w[0] - 1; // difference in powers of 2 bid_factors for Y and X nzeros = ed2 - bid_factors[i][0] + bid_factors[j][0]; // difference in powers of 5 bid_factors d5 = ed2 - bid_factors[i][1] + bid_factors[j][1]; if (d5 < nzeros) nzeros = d5; // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); //__mul_128x128_to_256(P256, CQ, bid_reciprocals10_128[nzeros]);Qh.w[1]=P256.w[3];Qh.w[0]=P256.w[2]; // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128_long (CQ, Qh, amount); diff_expon += nzeros; } else { // decompose Q as Qh*10^17 + Ql //T128 = bid_reciprocals10_128[17]; T128.w[0] = 0x44909befeb9fad49ull; T128.w[1] = 0x000b877aa3236a4bull; __mul_128x128_to_256 (P256, CQ, T128); //amount = bid_recip_scale[17]; Q_high = (P256.w[2] >> 44) | (P256.w[3] << (64 - 44)); Q_low = CQ.w[0] - Q_high * 100000000000000000ull; if (!Q_low) { diff_expon += 17; tdigit[0] = Q_high & 0x3ffffff; tdigit[1] = 0; QX = Q_high >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } if (tdigit[1] >= 100000000) { tdigit[1] -= 100000000; if (tdigit[1] >= 100000000) tdigit[1] -= 100000000; } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { __mul_64x64_to_128 (CQ, Q_high, bid_reciprocals10_64[nzeros]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-64 amount = bid_short_recip_scale[nzeros]; CQ.w[0] = CQ.w[1] >> amount; } else CQ.w[0] = Q_high; CQ.w[1] = 0; diff_expon += nzeros; } else { tdigit[0] = Q_low & 0x3ffffff; tdigit[1] = 0; QX = Q_low >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } if (tdigit[1] >= 100000000) { tdigit[1] -= 100000000; if (tdigit[1] >= 100000000) tdigit[1] -= 100000000; } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128 (CQ, Qh, amount); } diff_expon += nzeros; } } bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode,pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #endif if (diff_expon >= 0) { #ifdef IEEE_ROUND_NEAREST // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else #ifdef IEEE_ROUND_NEAREST_TIES_AWAY // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else rmode = rnd_mode; if (sign_x ^ sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; switch (rmode) { case BID_ROUNDING_TO_NEAREST: // round to nearest code // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_TIES_AWAY: // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: break; default: // rounding up CQ.w[0]++; if (!CQ.w[0]) CQ.w[1]++; break; } #endif #endif } else { #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #endif bid_handle_UF_128_rem (&res, sign_x ^ sign_y, diff_expon, CQ, CA4.w[1] | CA4.w[0], &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } bid_get_BID128 (&res, sign_x ^ sign_y, diff_expon, CQ, &rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } LIBRARY/src/bid32_acos.c0000644€­ Q01134020000000716415113665770013722 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double acos(double); double asin(double); double fabs(double); double sqrt(double); #define BID32_1 0x32800001ul #define BID32_0 0x00000000ul // NaN for inputs |x| > 1 #define BID32_NAN 0x7c000000ul BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_acos, BID_UINT32, x) // Declare local variables BID_UINT32 res, t, t1 = BID32_1; double xd, td, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Convert to binary BIDECIMAL_CALL1(bid32_to_binary64,xd,x); // If the input is not too close to +/- 1 then do it "naively" if (fabs(xd) <= 0.9) { yd = acos(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } // If the input is > 1 in magnitude, fail else if (fabs(xd) > 1.0) { res = BID32_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(res) } // If the input is exactly 1, return a canonical zero with minimal exponent // Uses >= 1 instead of == 1 to avoid compiler warnings... else if (xd >= 1.0) { res = BID32_0; BID_RETURN(res); } // Otherwise compute sqrt(1 - x^2) accurately and use asin instead. // Use 1 - |x| as direct decimal computation, since direct fma would // give only about working precision error near +1 else { BIDECIMAL_CALL1_NORND_NOSTAT(bid32_abs,t,x); BIDECIMAL_CALL2(bid32_sub,t,t1,t); BIDECIMAL_CALL1(bid32_to_binary64,td,t); td = (2.0 - td) * td; yd = asin(sqrt(td)); if (xd < 0.0) yd = 3.1415926535897932384626433832795028842 - yd; BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } } LIBRARY/src/bid64_quantexpd.c0000644€­ Q01134020000000454315113665770015011 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_quantexpd ****************************************************************************/ /* Exceptions signaled: invalid */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND(int, bid64_quantexp, BID_UINT64, x) int res; // quantum if (((x & MASK_INF) == MASK_INF) || ((x & MASK_NAN) == MASK_NAN)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; res = 0x80000000; BID_RETURN (res); } if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) res = (int)((x >> 51) & 0x3ff) - 398; else res = ((int)(x >> 53) & 0x3ff) - 398; BID_RETURN (res); } LIBRARY/src/bid64_nearbyintd.c0000644€­ Q01134020000003445215113665770015141 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_nearbyintd ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_nearbyint, BID_UINT64, x) BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT64 x_sign; int exp; // unbiased exponent // Note: C1 represents the significand (BID_UINT64) BID_UI64DOUBLE tmp1; int x_nr_bits; int q, ind, shift; BID_UINT64 C1; // BID_UINT64 res is C* at first - represents up to 16 decimal digits <= 54 bits BID_UINT128 fstar = { {0x0ull, 0x0ull} }; BID_UINT128 P128; x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // check for NaNs and infinities if ((x & MASK_NAN) == MASK_NAN) { // check for NaN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffffffffffffull; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity res = x_sign | 0x7800000000000000ull; BID_RETURN (res); } // unpack x if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:w+1] exp = ((x & MASK_BINARY_EXPONENT2) >> 51) - 398; C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical C1 = 0; } } else { // if ((x & MASK_STEERING_BITS) != MASK_STEERING_BITS) exp = ((x & MASK_BINARY_EXPONENT1) >> 53) - 398; C1 = (x & MASK_BINARY_SIG1); } // if x is 0 or non-canonical return 0 preserving the sign bit and // the preferred exponent of MAX(Q(x), 0) if (C1 == 0) { if (exp < 0) exp = 0; res = x_sign | (((BID_UINT64) exp + 398) << 53); BID_RETURN (res); } // x is a finite non-zero number (not 0, non-canonical, or special) switch (rnd_mode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // return 0 if (exp <= -(p+1)) if (exp <= -17) { res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } break; case BID_ROUNDING_DOWN: // return 0 if (exp <= -p) if (exp <= -16) { if (x_sign) { res = 0xb1c0000000000001ull; } else { res = 0x31c0000000000000ull; } BID_RETURN (res); } break; case BID_ROUNDING_UP: // return 0 if (exp <= -p) if (exp <= -16) { if (x_sign) { res = 0xb1c0000000000000ull; } else { res = 0x31c0000000000001ull; } BID_RETURN (res); } break; case BID_ROUNDING_TO_ZERO: // return 0 if (exp <= -p) if (exp <= -16) { res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } break; default: break; // default added to avoid compiler warning } // end switch () // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 q = 16; } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } } if (exp >= 0) { // -exp <= 0 // the argument is an integer already res = x; BID_RETURN (res); } switch (rnd_mode) { case BID_ROUNDING_TO_NEAREST: if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 64 bits // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // if (0 < f* < 10^(-x)) then the result is a midpoint // since round_to_even, subtract 1 if current result is odd if ((res & 0x0000000000000001ull) && (fstar.w[1] == 0) && (fstar.w[0] < bid_ten2mk64[ind - 1])) { res--; } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp < 0 // the result is +0 or -0 res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } break; case BID_ROUNDING_TIES_AWAY: if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 64 bits // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // if (0 < f* < 10^(-x)) then the result is a midpoint // C* = floor(C*) - logical right shift; C* has p decimal digits, // correct by Prop. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); } res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp < 0 // the result is +0 or -0 res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } break; case BID_ROUNDING_DOWN: if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // if (0 < f* < 10^(-x)) then the result is exact // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // if (f* > 10^(-x)) then the result is inexact if ((fstar.w[1] != 0) || (fstar.w[0] >= bid_ten2mk64[ind - 1])) { if (x_sign) { // if negative and not exact, increment magnitude res++; } } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 // the result is +0 or -1 if (x_sign) { res = 0xb1c0000000000001ull; } else { res = 0x31c0000000000000ull; } BID_RETURN (res); } break; case BID_ROUNDING_UP: if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // if (0 < f* < 10^(-x)) then the result is exact // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // if (f* > 10^(-x)) then the result is inexact if ((fstar.w[1] != 0) || (fstar.w[0] >= bid_ten2mk64[ind - 1])) { if (!x_sign) { // if positive and not exact, increment magnitude res++; } } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 // the result is -0 or +1 if (x_sign) { res = 0xb1c0000000000000ull; } else { res = 0x31c0000000000001ull; } BID_RETURN (res); } break; case BID_ROUNDING_TO_ZERO: if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // if (0 < f* < 10^(-x)) then the result is exact // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp < 0 // the result is +0 or -0 res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } break; default: break; // default added to avoid compiler warning } // end switch () BID_RETURN (res); } LIBRARY/src/bid_conf.h0000644€­ Q01134020000025327615113665770013571 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if defined(__cplusplus) #define BID_EXTERN_C extern "C" #else #define BID_EXTERN_C extern #endif #ifndef _BID_CONF_H #define _BID_CONF_H // Name Changes #define _IDEC_glbflags __bid_IDEC_glbflags #define _IDEC_glbround __bid_IDEC_glbround #define _IDEC_glbexcepthandling __bid_IDEC_glbexcepthandling #define _IDEC_glbexceptionmasks __bid_IDEC_glbexceptionmasks #define bid32_inf __bid32_inf #define bid64_inf __bid64_inf #define bid128_inf __bid128_inf #define bid32_exp __bid32_exp #define bid32_log __bid32_log #define bid32_pow __bid32_pow #define bid64_exp __bid64_exp #define bid64_log __bid64_log #define bid64_pow __bid64_pow #define bid128_exp __bid128_exp #define bid128_log __bid128_log #define bid128_pow __bid128_pow #define bid32_cbrt __bid32_cbrt #define bid64_cbrt __bid64_cbrt #define bid128_cbrt __bid128_cbrt #define bid32_atan2 __bid32_atan2 #define bid64_atan2 __bid64_atan2 #define bid128_atan2 __bid128_atan2 #define bid32_fmod __bid32_fmod #define bid64_fmod __bid64_fmod #define bid128_fmod __bid128_fmod #define bid32_modf __bid32_modf #define bid64_modf __bid64_modf #define bid128_modf __bid128_modf #define bid32_hypot __bid32_hypot #define bid64_hypot __bid64_hypot #define bid128_hypot __bid128_hypot #define bid32_sin __bid32_sin #define bid64_sin __bid64_sin #define bid128_sin __bid128_sin #define bid32_cos __bid32_cos #define bid64_cos __bid64_cos #define bid128_cos __bid128_cos #define bid32_tan __bid32_tan #define bid64_tan __bid64_tan #define bid128_tan __bid128_tan #define bid32_asin __bid32_asin #define bid64_asin __bid64_asin #define bid128_asin __bid128_asin #define bid32_acos __bid32_acos #define bid64_acos __bid64_acos #define bid128_acos __bid128_acos #define bid32_atan __bid32_atan #define bid64_atan __bid64_atan #define bid128_atan __bid128_atan #define bid32_sinh __bid32_sinh #define bid64_sinh __bid64_sinh #define bid128_sinh __bid128_sinh #define bid32_cosh __bid32_cosh #define bid64_cosh __bid64_cosh #define bid128_cosh __bid128_cosh #define bid32_tanh __bid32_tanh #define bid64_tanh __bid64_tanh #define bid128_tanh __bid128_tanh #define bid32_asinh __bid32_asinh #define bid64_asinh __bid64_asinh #define bid128_asinh __bid128_asinh #define bid32_acosh __bid32_acosh #define bid64_acosh __bid64_acosh #define bid128_acosh __bid128_acosh #define bid32_atanh __bid32_atanh #define bid64_atanh __bid64_atanh #define bid128_atanh __bid128_atanh #define bid32_log1p __bid32_log1p #define bid64_log1p __bid64_log1p #define bid128_log1p __bid128_log1p #define bid32_exp2 __bid32_exp2 #define bid64_exp2 __bid64_exp2 #define bid128_exp2 __bid128_exp2 #define bid32_exp10 __bid32_exp10 #define bid64_exp10 __bid64_exp10 #define bid128_exp10 __bid128_exp10 #define bid32_expm1 __bid32_expm1 #define bid64_expm1 __bid64_expm1 #define bid128_expm1 __bid128_expm1 #define bid32_log10 __bid32_log10 #define bid64_log10 __bid64_log10 #define bid128_log10 __bid128_log10 #define bid32_log2 __bid32_log2 #define bid64_log2 __bid64_log2 #define bid128_log2 __bid128_log2 #define bid32_erf __bid32_erf #define bid64_erf __bid64_erf #define bid128_erf __bid128_erf #define bid32_erfc __bid32_erfc #define bid64_erfc __bid64_erfc #define bid128_erfc __bid128_erfc #define bid32_tgamma __bid32_tgamma #define bid64_tgamma __bid64_tgamma #define bid128_tgamma __bid128_tgamma #define bid32_lgamma __bid32_lgamma #define bid64_lgamma __bid64_lgamma #define bid128_lgamma __bid128_lgamma #define bid32_frexp __bid32_frexp #define bid64_frexp __bid64_frexp #define bid128_frexp __bid128_frexp #define bid32_logb __bid32_logb #define bid64_logb __bid64_logb #define bid128_logb __bid128_logb #define bid32_scalbln __bid32_scalbln #define bid64_scalbln __bid64_scalbln #define bid128_scalbln __bid128_scalbln #define bid32_nearbyint __bid32_nearbyint #define bid64_nearbyint __bid64_nearbyint #define bid128_nearbyint __bid128_nearbyint #define bid32_lrint __bid32_lrint #define bid64_lrint __bid64_lrint #define bid128_lrint __bid128_lrint #define bid32_llrint __bid32_llrint #define bid64_llrint __bid64_llrint #define bid128_llrint __bid128_llrint #define bid32_lround __bid32_lround #define bid64_lround __bid64_lround #define bid128_lround __bid128_lround #define bid32_llround __bid32_llround #define bid64_llround __bid64_llround #define bid128_llround __bid128_llround #define bid32_nan __bid32_nan #define bid64_nan __bid64_nan #define bid128_nan __bid128_nan #define bid32_nexttoward __bid32_nexttoward #define bid64_nexttoward __bid64_nexttoward #define bid128_nexttoward __bid128_nexttoward #define bid32_fdim __bid32_fdim #define bid64_fdim __bid64_fdim #define bid128_fdim __bid128_fdim #define bid32_quantexp __bid32_quantexp #define bid64_quantexp __bid64_quantexp #define bid128_quantexp __bid128_quantexp #define bid32_quantum __bid32_quantum #define bid64_quantum __bid64_quantum #define bid128_quantum __bid128_quantum #define bid32_llquantexp __bid32_llquantexp #define bid64_llquantexp __bid64_llquantexp #define bid128_llquantexp __bid128_llquantexp #define bid32_add __bid32_add #define bid32_sub __bid32_sub #define bid32_mul __bid32_mul #define bid32_div __bid32_div #define bid32_fma __bid32_fma #define bid32_sqrt __bid32_sqrt #define bid32_rem __bid32_rem #define bid32_ilogb __bid32_ilogb #define bid32_scalbn __bid32_scalbn #define bid32_ldexp __bid32_ldexp #define bid32_to_string __bid32_to_string #define bid32_from_string __bid32_from_string #define bid32_quantize __bid32_quantize #define bid32_nextup __bid32_nextup #define bid32_nextdown __bid32_nextdown #define bid32_minnum __bid32_minnum #define bid32_minnum_mag __bid32_minnum_mag #define bid32_maxnum __bid32_maxnum #define bid32_maxnum_mag __bid32_maxnum_mag #define bid32_from_int32 __bid32_from_int32 #define bid32_from_uint32 __bid32_from_uint32 #define bid32_from_int64 __bid32_from_int64 #define bid32_from_uint64 __bid32_from_uint64 #define bid32_isSigned __bid32_isSigned #define bid32_isNormal __bid32_isNormal #define bid32_isSubnormal __bid32_isSubnormal #define bid32_isFinite __bid32_isFinite #define bid32_isZero __bid32_isZero #define bid32_isInf __bid32_isInf #define bid32_isSignaling __bid32_isSignaling #define bid32_isNaN __bid32_isNaN #define bid32_copy __bid32_copy #define bid32_negate __bid32_negate #define bid32_abs __bid32_abs #define bid32_copySign __bid32_copySign #define bid32_class __bid32_class #define bid32_sameQuantum __bid32_sameQuantum #define bid32_totalOrder __bid32_totalOrder #define bid32_totalOrderMag __bid32_totalOrderMag #define bid32_radix __bid32_radix #define bid32_quiet_equal __bid32_quiet_equal #define bid32_quiet_greater __bid32_quiet_greater #define bid32_quiet_greater_equal __bid32_quiet_greater_equal #define bid32_quiet_greater_unordered __bid32_quiet_greater_unordered #define bid32_quiet_less __bid32_quiet_less #define bid32_quiet_less_equal __bid32_quiet_less_equal #define bid32_quiet_less_unordered __bid32_quiet_less_unordered #define bid32_quiet_not_equal __bid32_quiet_not_equal #define bid32_quiet_not_greater __bid32_quiet_not_greater #define bid32_quiet_not_less __bid32_quiet_not_less #define bid32_quiet_ordered __bid32_quiet_ordered #define bid32_quiet_unordered __bid32_quiet_unordered #define bid32_signaling_greater __bid32_signaling_greater #define bid32_signaling_greater_equal __bid32_signaling_greater_equal #define bid32_signaling_greater_unordered __bid32_signaling_greater_unordered #define bid32_signaling_less __bid32_signaling_less #define bid32_signaling_less_equal __bid32_signaling_less_equal #define bid32_signaling_less_unordered __bid32_signaling_less_unordered #define bid32_signaling_not_greater __bid32_signaling_not_greater #define bid32_signaling_not_less __bid32_signaling_not_less #define bid32_isCanonical __bid32_isCanonical #define bid32_nextafter __bid32_nextafter #define bid32_round_integral_exact __bid32_round_integral_exact #define bid32_round_integral_nearest_away __bid32_round_integral_nearest_away #define bid32_round_integral_nearest_even __bid32_round_integral_nearest_even #define bid32_round_integral_negative __bid32_round_integral_negative #define bid32_round_integral_positive __bid32_round_integral_positive #define bid32_round_integral_zero __bid32_round_integral_zero #define bid32_to_int16_ceil __bid32_to_int16_ceil #define bid32_to_int16_floor __bid32_to_int16_floor #define bid32_to_int16_int __bid32_to_int16_int #define bid32_to_int16_rnint __bid32_to_int16_rnint #define bid32_to_int16_rninta __bid32_to_int16_rninta #define bid32_to_int16_xceil __bid32_to_int16_xceil #define bid32_to_int16_xfloor __bid32_to_int16_xfloor #define bid32_to_int16_xint __bid32_to_int16_xint #define bid32_to_int16_xrnint __bid32_to_int16_xrnint #define bid32_to_int16_xrninta __bid32_to_int16_xrninta #define bid32_to_int32_ceil __bid32_to_int32_ceil #define bid32_to_int32_floor __bid32_to_int32_floor #define bid32_to_int32_int __bid32_to_int32_int #define bid32_to_int32_rnint __bid32_to_int32_rnint #define bid32_to_int32_rninta __bid32_to_int32_rninta #define bid32_to_int32_xceil __bid32_to_int32_xceil #define bid32_to_int32_xfloor __bid32_to_int32_xfloor #define bid32_to_int32_xint __bid32_to_int32_xint #define bid32_to_int32_xrnint __bid32_to_int32_xrnint #define bid32_to_int32_xrninta __bid32_to_int32_xrninta #define bid32_to_int64_ceil __bid32_to_int64_ceil #define bid32_to_int64_floor __bid32_to_int64_floor #define bid32_to_int64_int __bid32_to_int64_int #define bid32_to_int64_rnint __bid32_to_int64_rnint #define bid32_to_int64_rninta __bid32_to_int64_rninta #define bid32_to_int64_xceil __bid32_to_int64_xceil #define bid32_to_int64_xfloor __bid32_to_int64_xfloor #define bid32_to_int64_xint __bid32_to_int64_xint #define bid32_to_int64_xrnint __bid32_to_int64_xrnint #define bid32_to_int64_xrninta __bid32_to_int64_xrninta #define bid32_to_int8_ceil __bid32_to_int8_ceil #define bid32_to_int8_floor __bid32_to_int8_floor #define bid32_to_int8_int __bid32_to_int8_int #define bid32_to_int8_rnint __bid32_to_int8_rnint #define bid32_to_int8_rninta __bid32_to_int8_rninta #define bid32_to_int8_xceil __bid32_to_int8_xceil #define bid32_to_int8_xfloor __bid32_to_int8_xfloor #define bid32_to_int8_xint __bid32_to_int8_xint #define bid32_to_int8_xrnint __bid32_to_int8_xrnint #define bid32_to_int8_xrninta __bid32_to_int8_xrninta #define bid32_to_uint16_ceil __bid32_to_uint16_ceil #define bid32_to_uint16_floor __bid32_to_uint16_floor #define bid32_to_uint16_int __bid32_to_uint16_int #define bid32_to_uint16_rnint __bid32_to_uint16_rnint #define bid32_to_uint16_rninta __bid32_to_uint16_rninta #define bid32_to_uint16_xceil __bid32_to_uint16_xceil #define bid32_to_uint16_xfloor __bid32_to_uint16_xfloor #define bid32_to_uint16_xint __bid32_to_uint16_xint #define bid32_to_uint16_xrnint __bid32_to_uint16_xrnint #define bid32_to_uint16_xrninta __bid32_to_uint16_xrninta #define bid32_to_uint32_ceil __bid32_to_uint32_ceil #define bid32_to_uint32_floor __bid32_to_uint32_floor #define bid32_to_uint32_int __bid32_to_uint32_int #define bid32_to_uint32_rnint __bid32_to_uint32_rnint #define bid32_to_uint32_rninta __bid32_to_uint32_rninta #define bid32_to_uint32_xceil __bid32_to_uint32_xceil #define bid32_to_uint32_xfloor __bid32_to_uint32_xfloor #define bid32_to_uint32_xint __bid32_to_uint32_xint #define bid32_to_uint32_xrnint __bid32_to_uint32_xrnint #define bid32_to_uint32_xrninta __bid32_to_uint32_xrninta #define bid32_to_uint64_ceil __bid32_to_uint64_ceil #define bid32_to_uint64_floor __bid32_to_uint64_floor #define bid32_to_uint64_int __bid32_to_uint64_int #define bid32_to_uint64_rnint __bid32_to_uint64_rnint #define bid32_to_uint64_rninta __bid32_to_uint64_rninta #define bid32_to_uint64_xceil __bid32_to_uint64_xceil #define bid32_to_uint64_xfloor __bid32_to_uint64_xfloor #define bid32_to_uint64_xint __bid32_to_uint64_xint #define bid32_to_uint64_xrnint __bid32_to_uint64_xrnint #define bid32_to_uint64_xrninta __bid32_to_uint64_xrninta #define bid32_to_uint8_ceil __bid32_to_uint8_ceil #define bid32_to_uint8_floor __bid32_to_uint8_floor #define bid32_to_uint8_int __bid32_to_uint8_int #define bid32_to_uint8_rnint __bid32_to_uint8_rnint #define bid32_to_uint8_rninta __bid32_to_uint8_rninta #define bid32_to_uint8_xceil __bid32_to_uint8_xceil #define bid32_to_uint8_xfloor __bid32_to_uint8_xfloor #define bid32_to_uint8_xint __bid32_to_uint8_xint #define bid32_to_uint8_xrnint __bid32_to_uint8_xrnint #define bid32_to_uint8_xrninta __bid32_to_uint8_xrninta #define bid64_add __bid64_add #define bid64_sub __bid64_sub #define bid64_mul __bid64_mul #define bid64_div __bid64_div #define bid64dq_div __bid64dq_div #define bid64qd_div __bid64qd_div #define bid64qq_div __bid64qq_div #define bid64q_sqrt __bid64q_sqrt #define bid64_sqrt __bid64_sqrt #define bid64_rem __bid64_rem #define bid64_fma __bid64_fma #define bid64_scalbn __bid64_scalbn #define bid64_ldexp __bid64_ldexp #define bid_round128_19_38 __bid_round128_19_38 #define bid_round192_39_57 __bid_round192_39_57 #define bid_round256_58_76 __bid_round256_58_76 #define bid_round64_2_18 __bid_round64_2_18 #define bid64_nextafter __bid64_nextafter #define bid64_nextdown __bid64_nextdown #define bid64_nextup __bid64_nextup #define bid_b2d __bid_b2d #define bid_b2d2 __bid_b2d2 #define bid_b2d3 __bid_b2d3 #define bid_b2d4 __bid_b2d4 #define bid_b2d5 __bid_b2d5 #define bid_to_dpd128 __bid_to_dpd128 #define bid_to_dpd32 __bid_to_dpd32 #define bid_to_dpd64 __bid_to_dpd64 #define bid_d2b __bid_d2b #define bid_d2b2 __bid_d2b2 #define bid_d2b3 __bid_d2b3 #define bid_d2b4 __bid_d2b4 #define bid_d2b5 __bid_d2b5 #define bid_d2b6 __bid_d2b6 #define bid_dpd_to_bid128 __bid_dpd_to_bid128 #define bid_dpd_to_bid32 __bid_dpd_to_bid32 #define bid_dpd_to_bid64 __bid_dpd_to_bid64 #define bid128_nextafter __bid128_nextafter #define bid128_nextdown __bid128_nextdown #define bid128_nextup __bid128_nextup #define bid64_ilogb __bid64_ilogb #define bid64_quantize __bid64_quantize #define bid_estimate_bin_expon __bid_estimate_bin_expon #define bid_estimate_decimal_digits __bid_estimate_decimal_digits #define bid_power10_index_binexp __bid_power10_index_binexp #define bid_power10_index_binexp_128 __bid_power10_index_binexp_128 #define bid_power10_table_128 __bid_power10_table_128 #define bid_reciprocals10_128 __bid_reciprocals10_128 #define bid_reciprocals10_64 __bid_reciprocals10_64 #define bid_recip_scale __bid_recip_scale #define bid_round_const_table __bid_round_const_table #define bid_round_const_table_128 __bid_round_const_table_128 #define bid_short_recip_scale __bid_short_recip_scale #define bid64_from_string __bid64_from_string #define bid64_to_string __bid64_to_string #define bid_Inv_Tento9 __bid_Inv_Tento9 #define bid_midi_tbl __bid_midi_tbl #define bid_Tento3 __bid_Tento3 #define bid_Tento6 __bid_Tento6 #define bid_Tento9 __bid_Tento9 #define bid_Twoto30_m_10to9 __bid_Twoto30_m_10to9 #define bid_Twoto60 __bid_Twoto60 #define bid_Twoto60_m_10to18 __bid_Twoto60_m_10to18 #define bid_convert_table __bid_convert_table #define bid_factors __bid_factors #define bid_packed_10000_zeros __bid_packed_10000_zeros #define bid_char_table2 __bid_char_table2 #define bid_char_table3 __bid_char_table3 #define bid_Ex128m128 __bid_Ex128m128 #define bid_Ex192m192 __bid_Ex192m192 #define bid_Ex256m256 __bid_Ex256m256 #define bid_Ex64m64 __bid_Ex64m64 #define bid_half128 __bid_half128 #define bid_half192 __bid_half192 #define bid_half256 __bid_half256 #define bid_half64 __bid_half64 #define bid_Kx128 __bid_Kx128 #define bid_Kx192 __bid_Kx192 #define bid_Kx256 __bid_Kx256 #define bid_Kx64 __bid_Kx64 #define bid_mask128 __bid_mask128 #define bid_mask192 __bid_mask192 #define bid_mask256 __bid_mask256 #define bid_mask64 __bid_mask64 #define bid_maskhigh128 __bid_maskhigh128 #define bid_maskhigh128M __bid_maskhigh128M #define bid_maskhigh192M __bid_maskhigh192M #define bid_maskhigh256M __bid_maskhigh256M #define bid_midpoint128 __bid_midpoint128 #define bid_midpoint192 __bid_midpoint192 #define bid_midpoint256 __bid_midpoint256 #define bid_midpoint64 __bid_midpoint64 #define bid_nr_digits __bid_nr_digits #define bid_onehalf128 __bid_onehalf128 #define bid_onehalf128M __bid_onehalf128M #define bid_onehalf192M __bid_onehalf192M #define bid_onehalf256M __bid_onehalf256M #define bid_shiftright128 __bid_shiftright128 #define bid_shiftright128M __bid_shiftright128M #define bid_shiftright192M __bid_shiftright192M #define bid_shiftright256M __bid_shiftright256M #define bid_shift_ten2m3k128 __bid_shift_ten2m3k128 #define bid_shift_ten2m3k64 __bid_shift_ten2m3k64 #define bid_ten2k128 __bid_ten2k128 #define bid_ten2k256 __bid_ten2k256 #define bid_ten2k64 __bid_ten2k64 #define bid_ten2m3k128 __bid_ten2m3k128 #define bid_ten2m3k64 __bid_ten2m3k64 #define bid_ten2mk128 __bid_ten2mk128 #define bid_ten2mk128M __bid_ten2mk128M #define bid_ten2mk128trunc __bid_ten2mk128trunc #define bid_ten2mk128truncM __bid_ten2mk128truncM #define bid_ten2mk192M __bid_ten2mk192M #define bid_ten2mk192truncM __bid_ten2mk192truncM #define bid_ten2mk256M __bid_ten2mk256M #define bid_ten2mk256truncM __bid_ten2mk256truncM #define bid_ten2mk64 __bid_ten2mk64 #define bid_ten2mxtrunc128 __bid_ten2mxtrunc128 #define bid_ten2mxtrunc192 __bid_ten2mxtrunc192 #define bid_ten2mxtrunc256 __bid_ten2mxtrunc256 #define bid_ten2mxtrunc64 __bid_ten2mxtrunc64 #define bid128_add __bid128_add #define bid128dd_add __bid128dd_add #define bid128dd_sub __bid128dd_sub #define bid128dq_add __bid128dq_add #define bid128dq_sub __bid128dq_sub #define bid128qd_add __bid128qd_add #define bid128qd_sub __bid128qd_sub #define bid128_sub __bid128_sub #define bid64dq_add __bid64dq_add #define bid64dq_sub __bid64dq_sub #define bid64qd_add __bid64qd_add #define bid64qd_sub __bid64qd_sub #define bid64qq_add __bid64qq_add #define bid64qq_sub __bid64qq_sub #define bid128dd_mul __bid128dd_mul #define bid128dq_mul __bid128dq_mul #define bid128_mul __bid128_mul #define bid128qd_mul __bid128qd_mul #define bid64dq_mul __bid64dq_mul #define bid64qd_mul __bid64qd_mul #define bid64qq_mul __bid64qq_mul #define bid128dd_div __bid128dd_div #define bid128_div __bid128_div #define bid128dq_div __bid128dq_div #define bid128qd_div __bid128qd_div #define bid128d_sqrt __bid128d_sqrt #define bid128_sqrt __bid128_sqrt #define bid128ddd_fma __bid128ddd_fma #define bid128ddq_fma __bid128ddq_fma #define bid128dqd_fma __bid128dqd_fma #define bid128dqq_fma __bid128dqq_fma #define bid128_fma __bid128_fma #define bid128qdd_fma __bid128qdd_fma #define bid128qdq_fma __bid128qdq_fma #define bid128qqd_fma __bid128qqd_fma #define bid64ddq_fma __bid64ddq_fma #define bid64dqd_fma __bid64dqd_fma #define bid64dqq_fma __bid64dqq_fma #define bid64qdd_fma __bid64qdd_fma #define bid64qdq_fma __bid64qdq_fma #define bid64qqd_fma __bid64qqd_fma #define bid64qqq_fma __bid64qqq_fma #define bid128_round_integral_exact __bid128_round_integral_exact #define bid128_round_integral_nearest_away __bid128_round_integral_nearest_away #define bid128_round_integral_nearest_even __bid128_round_integral_nearest_even #define bid128_round_integral_negative __bid128_round_integral_negative #define bid128_round_integral_positive __bid128_round_integral_positive #define bid128_round_integral_zero __bid128_round_integral_zero #define bid64_round_integral_exact __bid64_round_integral_exact #define bid64_round_integral_nearest_away __bid64_round_integral_nearest_away #define bid64_round_integral_nearest_even __bid64_round_integral_nearest_even #define bid64_round_integral_negative __bid64_round_integral_negative #define bid64_round_integral_positive __bid64_round_integral_positive #define bid64_round_integral_zero __bid64_round_integral_zero #define bid128_quantize __bid128_quantize #define bid128_scalbn __bid128_scalbn #define bid128_ldexp __bid128_ldexp #define bid64_maxnum __bid64_maxnum #define bid64_maxnum_mag __bid64_maxnum_mag #define bid64_minnum __bid64_minnum #define bid64_minnum_mag __bid64_minnum_mag #define bid128_maxnum __bid128_maxnum #define bid128_maxnum_mag __bid128_maxnum_mag #define bid128_minnum __bid128_minnum #define bid128_minnum_mag __bid128_minnum_mag #define bid128_rem __bid128_rem #define bid128_ilogb __bid128_ilogb #define bid_getDecimalRoundingDirection __bid_getDecimalRoundingDirection #define bid_is754 __bid_is754 #define bid_is754R __bid_is754R #define bid_signalException __bid_signalException #define bid_lowerFlags __bid_lowerFlags #define bid_restoreFlags __bid_restoreFlags #define bid_saveFlags __bid_saveFlags #define bid_setDecimalRoundingDirection __bid_setDecimalRoundingDirection #define bid_testFlags __bid_testFlags #define bid_testSavedFlags __bid_testSavedFlags #define bid32_to_bid64 __bid32_to_bid64 #define bid64_to_bid32 __bid64_to_bid32 #define bid128_to_string __bid128_to_string #define mod10_18_tbl __bid_mod10_18_tbl #define bid128_to_bid32 __bid128_to_bid32 #define bid32_to_bid128 __bid32_to_bid128 #define bid128_to_bid64 __bid128_to_bid64 #define bid64_to_bid128 __bid64_to_bid128 #define bid128_from_string __bid128_from_string #define bid128_from_int32 __bid128_from_int32 #define bid128_from_int64 __bid128_from_int64 #define bid128_from_uint32 __bid128_from_uint32 #define bid128_from_uint64 __bid128_from_uint64 #define bid64_from_int32 __bid64_from_int32 #define bid64_from_int64 __bid64_from_int64 #define bid64_from_uint32 __bid64_from_uint32 #define bid64_from_uint64 __bid64_from_uint64 #define bid64_abs __bid64_abs #define bid64_class __bid64_class #define bid64_copy __bid64_copy #define bid64_copySign __bid64_copySign #define bid64_isCanonical __bid64_isCanonical #define bid64_isFinite __bid64_isFinite #define bid64_isInf __bid64_isInf #define bid64_isNaN __bid64_isNaN #define bid64_isNormal __bid64_isNormal #define bid64_isSignaling __bid64_isSignaling #define bid64_isSigned __bid64_isSigned #define bid64_isSubnormal __bid64_isSubnormal #define bid64_isZero __bid64_isZero #define bid64_negate __bid64_negate #define bid64_radix __bid64_radix #define bid64_sameQuantum __bid64_sameQuantum #define bid64_totalOrder __bid64_totalOrder #define bid64_totalOrderMag __bid64_totalOrderMag #define bid128_abs __bid128_abs #define bid128_class __bid128_class #define bid128_copy __bid128_copy #define bid128_copySign __bid128_copySign #define bid128_isCanonical __bid128_isCanonical #define bid128_isFinite __bid128_isFinite #define bid128_isInf __bid128_isInf #define bid128_isNaN __bid128_isNaN #define bid128_isNormal __bid128_isNormal #define bid128_isSignaling __bid128_isSignaling #define bid128_isSigned __bid128_isSigned #define bid128_isSubnormal __bid128_isSubnormal #define bid128_isZero __bid128_isZero #define bid128_negate __bid128_negate #define bid128_radix __bid128_radix #define bid128_sameQuantum __bid128_sameQuantum #define bid128_totalOrder __bid128_totalOrder #define bid128_totalOrderMag __bid128_totalOrderMag #define bid64_quiet_equal __bid64_quiet_equal #define bid64_quiet_greater __bid64_quiet_greater #define bid64_quiet_greater_equal __bid64_quiet_greater_equal #define bid64_quiet_greater_unordered __bid64_quiet_greater_unordered #define bid64_quiet_less __bid64_quiet_less #define bid64_quiet_less_equal __bid64_quiet_less_equal #define bid64_quiet_less_unordered __bid64_quiet_less_unordered #define bid64_quiet_not_equal __bid64_quiet_not_equal #define bid64_quiet_not_greater __bid64_quiet_not_greater #define bid64_quiet_not_less __bid64_quiet_not_less #define bid64_quiet_ordered __bid64_quiet_ordered #define bid64_quiet_unordered __bid64_quiet_unordered #define bid64_signaling_greater __bid64_signaling_greater #define bid64_signaling_greater_equal __bid64_signaling_greater_equal #define bid64_signaling_greater_unordered __bid64_signaling_greater_unordered #define bid64_signaling_less __bid64_signaling_less #define bid64_signaling_less_equal __bid64_signaling_less_equal #define bid64_signaling_less_unordered __bid64_signaling_less_unordered #define bid64_signaling_not_greater __bid64_signaling_not_greater #define bid64_signaling_not_less __bid64_signaling_not_less #define bid128_quiet_equal __bid128_quiet_equal #define bid128_quiet_greater __bid128_quiet_greater #define bid128_quiet_greater_equal __bid128_quiet_greater_equal #define bid128_quiet_greater_unordered __bid128_quiet_greater_unordered #define bid128_quiet_less __bid128_quiet_less #define bid128_quiet_less_equal __bid128_quiet_less_equal #define bid128_quiet_less_unordered __bid128_quiet_less_unordered #define bid128_quiet_not_equal __bid128_quiet_not_equal #define bid128_quiet_not_greater __bid128_quiet_not_greater #define bid128_quiet_not_less __bid128_quiet_not_less #define bid128_quiet_ordered __bid128_quiet_ordered #define bid128_quiet_unordered __bid128_quiet_unordered #define bid128_signaling_greater __bid128_signaling_greater #define bid128_signaling_greater_equal __bid128_signaling_greater_equal #define bid128_signaling_greater_unordered __bid128_signaling_greater_unordered #define bid128_signaling_less __bid128_signaling_less #define bid128_signaling_less_equal __bid128_signaling_less_equal #define bid128_signaling_less_unordered __bid128_signaling_less_unordered #define bid128_signaling_not_greater __bid128_signaling_not_greater #define bid128_signaling_not_less __bid128_signaling_not_less #define bid64_to_int32_ceil __bid64_to_int32_ceil #define bid64_to_int32_floor __bid64_to_int32_floor #define bid64_to_int32_int __bid64_to_int32_int #define bid64_to_int32_rnint __bid64_to_int32_rnint #define bid64_to_int32_rninta __bid64_to_int32_rninta #define bid64_to_int32_xceil __bid64_to_int32_xceil #define bid64_to_int32_xfloor __bid64_to_int32_xfloor #define bid64_to_int32_xint __bid64_to_int32_xint #define bid64_to_int32_xrnint __bid64_to_int32_xrnint #define bid64_to_int32_xrninta __bid64_to_int32_xrninta #define bid64_to_uint32_ceil __bid64_to_uint32_ceil #define bid64_to_uint32_floor __bid64_to_uint32_floor #define bid64_to_uint32_int __bid64_to_uint32_int #define bid64_to_uint32_rnint __bid64_to_uint32_rnint #define bid64_to_uint32_rninta __bid64_to_uint32_rninta #define bid64_to_uint32_xceil __bid64_to_uint32_xceil #define bid64_to_uint32_xfloor __bid64_to_uint32_xfloor #define bid64_to_uint32_xint __bid64_to_uint32_xint #define bid64_to_uint32_xrnint __bid64_to_uint32_xrnint #define bid64_to_uint32_xrninta __bid64_to_uint32_xrninta #define bid64_to_int64_ceil __bid64_to_int64_ceil #define bid64_to_int64_floor __bid64_to_int64_floor #define bid64_to_int64_int __bid64_to_int64_int #define bid64_to_int64_rnint __bid64_to_int64_rnint #define bid64_to_int64_rninta __bid64_to_int64_rninta #define bid64_to_int64_xceil __bid64_to_int64_xceil #define bid64_to_int64_xfloor __bid64_to_int64_xfloor #define bid64_to_int64_xint __bid64_to_int64_xint #define bid64_to_int64_xrnint __bid64_to_int64_xrnint #define bid64_to_int64_xrninta __bid64_to_int64_xrninta #define bid64_to_uint64_ceil __bid64_to_uint64_ceil #define bid64_to_uint64_floor __bid64_to_uint64_floor #define bid64_to_uint64_int __bid64_to_uint64_int #define bid64_to_uint64_rnint __bid64_to_uint64_rnint #define bid64_to_uint64_rninta __bid64_to_uint64_rninta #define bid64_to_uint64_xceil __bid64_to_uint64_xceil #define bid64_to_uint64_xfloor __bid64_to_uint64_xfloor #define bid64_to_uint64_xint __bid64_to_uint64_xint #define bid64_to_uint64_xrnint __bid64_to_uint64_xrnint #define bid64_to_uint64_xrninta __bid64_to_uint64_xrninta #define bid128_to_int32_ceil __bid128_to_int32_ceil #define bid128_to_int32_floor __bid128_to_int32_floor #define bid128_to_int32_int __bid128_to_int32_int #define bid128_to_int32_rnint __bid128_to_int32_rnint #define bid128_to_int32_rninta __bid128_to_int32_rninta #define bid128_to_int32_xceil __bid128_to_int32_xceil #define bid128_to_int32_xfloor __bid128_to_int32_xfloor #define bid128_to_int32_xint __bid128_to_int32_xint #define bid128_to_int32_xrnint __bid128_to_int32_xrnint #define bid128_to_int32_xrninta __bid128_to_int32_xrninta #define bid128_to_uint32_ceil __bid128_to_uint32_ceil #define bid128_to_uint32_floor __bid128_to_uint32_floor #define bid128_to_uint32_int __bid128_to_uint32_int #define bid128_to_uint32_rnint __bid128_to_uint32_rnint #define bid128_to_uint32_rninta __bid128_to_uint32_rninta #define bid128_to_uint32_xceil __bid128_to_uint32_xceil #define bid128_to_uint32_xfloor __bid128_to_uint32_xfloor #define bid128_to_uint32_xint __bid128_to_uint32_xint #define bid128_to_uint32_xrnint __bid128_to_uint32_xrnint #define bid128_to_uint32_xrninta __bid128_to_uint32_xrninta #define bid128_to_int64_ceil __bid128_to_int64_ceil #define bid128_to_int64_floor __bid128_to_int64_floor #define bid128_to_int64_int __bid128_to_int64_int #define bid128_to_int64_rnint __bid128_to_int64_rnint #define bid128_to_int64_rninta __bid128_to_int64_rninta #define bid128_to_int64_xceil __bid128_to_int64_xceil #define bid128_to_int64_xfloor __bid128_to_int64_xfloor #define bid128_to_int64_xint __bid128_to_int64_xint #define bid128_to_int64_xrnint __bid128_to_int64_xrnint #define bid128_to_int64_xrninta __bid128_to_int64_xrninta #define bid128_to_uint64_ceil __bid128_to_uint64_ceil #define bid128_to_uint64_floor __bid128_to_uint64_floor #define bid128_to_uint64_int __bid128_to_uint64_int #define bid128_to_uint64_rnint __bid128_to_uint64_rnint #define bid128_to_uint64_rninta __bid128_to_uint64_rninta #define bid128_to_uint64_xceil __bid128_to_uint64_xceil #define bid128_to_uint64_xfloor __bid128_to_uint64_xfloor #define bid128_to_uint64_xint __bid128_to_uint64_xint #define bid128_to_uint64_xrnint __bid128_to_uint64_xrnint #define bid128_to_uint64_xrninta __bid128_to_uint64_xrninta #define bid128_to_binary128 __bid128_to_binary128 #define bid128_to_binary32 __bid128_to_binary32 #define bid128_to_binary64 __bid128_to_binary64 #define bid128_to_binary80 __bid128_to_binary80 #define bid32_to_binary128 __bid32_to_binary128 #define bid32_to_binary32 __bid32_to_binary32 #define bid32_to_binary64 __bid32_to_binary64 #define bid32_to_binary80 __bid32_to_binary80 #define bid64_to_binary128 __bid64_to_binary128 #define bid64_to_binary32 __bid64_to_binary32 #define bid64_to_binary64 __bid64_to_binary64 #define bid64_to_binary80 __bid64_to_binary80 #define binary128_to_bid128 __binary128_to_bid128 #define binary128_to_bid32 __binary128_to_bid32 #define binary128_to_bid64 __binary128_to_bid64 #define binary32_to_bid128 __binary32_to_bid128 #define binary32_to_bid32 __binary32_to_bid32 #define binary32_to_bid64 __binary32_to_bid64 #define binary64_to_bid128 __binary64_to_bid128 #define binary64_to_bid32 __binary64_to_bid32 #define binary64_to_bid64 __binary64_to_bid64 #define binary80_to_bid128 __binary80_to_bid128 #define binary80_to_bid32 __binary80_to_bid32 #define binary80_to_bid64 __binary80_to_bid64 #define bid64_to_uint16_ceil __bid64_to_uint16_ceil #define bid64_to_uint16_floor __bid64_to_uint16_floor #define bid64_to_uint16_int __bid64_to_uint16_int #define bid64_to_uint16_rnint __bid64_to_uint16_rnint #define bid64_to_uint16_rninta __bid64_to_uint16_rninta #define bid64_to_uint16_xceil __bid64_to_uint16_xceil #define bid64_to_uint16_xfloor __bid64_to_uint16_xfloor #define bid64_to_uint16_xint __bid64_to_uint16_xint #define bid64_to_uint16_xrnint __bid64_to_uint16_xrnint #define bid64_to_uint16_xrninta __bid64_to_uint16_xrninta #define bid64_to_int16_ceil __bid64_to_int16_ceil #define bid64_to_int16_floor __bid64_to_int16_floor #define bid64_to_int16_int __bid64_to_int16_int #define bid64_to_int16_rnint __bid64_to_int16_rnint #define bid64_to_int16_rninta __bid64_to_int16_rninta #define bid64_to_int16_xceil __bid64_to_int16_xceil #define bid64_to_int16_xfloor __bid64_to_int16_xfloor #define bid64_to_int16_xint __bid64_to_int16_xint #define bid64_to_int16_xrnint __bid64_to_int16_xrnint #define bid64_to_int16_xrninta __bid64_to_int16_xrninta #define bid128_to_uint16_ceil __bid128_to_uint16_ceil #define bid128_to_uint16_floor __bid128_to_uint16_floor #define bid128_to_uint16_int __bid128_to_uint16_int #define bid128_to_uint16_rnint __bid128_to_uint16_rnint #define bid128_to_uint16_rninta __bid128_to_uint16_rninta #define bid128_to_uint16_xceil __bid128_to_uint16_xceil #define bid128_to_uint16_xfloor __bid128_to_uint16_xfloor #define bid128_to_uint16_xint __bid128_to_uint16_xint #define bid128_to_uint16_xrnint __bid128_to_uint16_xrnint #define bid128_to_uint16_xrninta __bid128_to_uint16_xrninta #define bid128_to_int16_ceil __bid128_to_int16_ceil #define bid128_to_int16_floor __bid128_to_int16_floor #define bid128_to_int16_int __bid128_to_int16_int #define bid128_to_int16_rnint __bid128_to_int16_rnint #define bid128_to_int16_rninta __bid128_to_int16_rninta #define bid128_to_int16_xceil __bid128_to_int16_xceil #define bid128_to_int16_xfloor __bid128_to_int16_xfloor #define bid128_to_int16_xint __bid128_to_int16_xint #define bid128_to_int16_xrnint __bid128_to_int16_xrnint #define bid128_to_int16_xrninta __bid128_to_int16_xrninta #define bid64_to_uint8_ceil __bid64_to_uint8_ceil #define bid64_to_uint8_floor __bid64_to_uint8_floor #define bid64_to_uint8_int __bid64_to_uint8_int #define bid64_to_uint8_rnint __bid64_to_uint8_rnint #define bid64_to_uint8_rninta __bid64_to_uint8_rninta #define bid64_to_uint8_xceil __bid64_to_uint8_xceil #define bid64_to_uint8_xfloor __bid64_to_uint8_xfloor #define bid64_to_uint8_xint __bid64_to_uint8_xint #define bid64_to_uint8_xrnint __bid64_to_uint8_xrnint #define bid64_to_uint8_xrninta __bid64_to_uint8_xrninta #define bid64_to_int8_ceil __bid64_to_int8_ceil #define bid64_to_int8_floor __bid64_to_int8_floor #define bid64_to_int8_int __bid64_to_int8_int #define bid64_to_int8_rnint __bid64_to_int8_rnint #define bid64_to_int8_rninta __bid64_to_int8_rninta #define bid64_to_int8_xceil __bid64_to_int8_xceil #define bid64_to_int8_xfloor __bid64_to_int8_xfloor #define bid64_to_int8_xint __bid64_to_int8_xint #define bid64_to_int8_xrnint __bid64_to_int8_xrnint #define bid64_to_int8_xrninta __bid64_to_int8_xrninta #define bid128_to_uint8_ceil __bid128_to_uint8_ceil #define bid128_to_uint8_floor __bid128_to_uint8_floor #define bid128_to_uint8_int __bid128_to_uint8_int #define bid128_to_uint8_rnint __bid128_to_uint8_rnint #define bid128_to_uint8_rninta __bid128_to_uint8_rninta #define bid128_to_uint8_xceil __bid128_to_uint8_xceil #define bid128_to_uint8_xfloor __bid128_to_uint8_xfloor #define bid128_to_uint8_xint __bid128_to_uint8_xint #define bid128_to_uint8_xrnint __bid128_to_uint8_xrnint #define bid128_to_uint8_xrninta __bid128_to_uint8_xrninta #define bid128_to_int8_ceil __bid128_to_int8_ceil #define bid128_to_int8_floor __bid128_to_int8_floor #define bid128_to_int8_int __bid128_to_int8_int #define bid128_to_int8_rnint __bid128_to_int8_rnint #define bid128_to_int8_rninta __bid128_to_int8_rninta #define bid128_to_int8_xceil __bid128_to_int8_xceil #define bid128_to_int8_xfloor __bid128_to_int8_xfloor #define bid128_to_int8_xint __bid128_to_int8_xint #define bid128_to_int8_xrnint __bid128_to_int8_xrnint #define bid128_to_int8_xrninta __bid128_to_int8_xrninta #define bid32_inf __bid32_inf #define bid64_inf __bid64_inf #define bid128_inf __bid128_inf #define bid_feclearexcept __bid_feclearexcept #define bid_fegetexceptflag __bid_fegetexceptflag #define bid_feraiseexcept __bid_feraiseexcept #define bid_fesetexceptflag __bid_fesetexceptflag #define bid_fetestexcept __bid_fetestexcept #define bid_strtod128 __bid_strtod128 #define bid_strtod64 __bid_strtod64 #define bid_strtod32 __bid_strtod32 #define bid_wcstod128 __bid_wcstod128 #define bid_wcstod64 __bid_wcstod64 #define bid_wcstod32 __bid_wcstod32 /////////////////////////////////////////////////////////////// #ifdef IN_LIBGCC2 #if !defined ENABLE_DECIMAL_BID_FORMAT || !ENABLE_DECIMAL_BID_FORMAT #error BID not enabled in libbid #endif #ifndef BID_BIG_ENDIAN #define BID_BIG_ENDIAN LIBGCC2_FLOAT_WORDS_BIG_ENDIAN #endif #ifndef BID_THREAD #if defined (HAVE_CC_TLS) && defined (USE_TLS) #define BID_THREAD __thread #endif #endif #define BID__intptr_t_defined #define DECIMAL_CALL_BY_REFERENCE 0 #define DECIMAL_GLOBAL_ROUNDING 1 #define DECIMAL_GLOBAL_ROUNDING_ACCESS_FUNCTIONS 1 #define DECIMAL_GLOBAL_EXCEPTION_FLAGS 1 #define DECIMAL_GLOBAL_EXCEPTION_FLAGS_ACCESS_FUNCTIONS 1 #define BID_HAS_GCC_DECIMAL_INTRINSICS 1 #endif /* IN_LIBGCC2 */ // Configuration Options #define DECIMAL_TINY_DETECTION_AFTER_ROUNDING 0 #define BINARY_TINY_DETECTION_AFTER_ROUNDING 1 #define BID_SET_STATUS_FLAGS #ifndef BID_THREAD #if defined (_MSC_VER) //Windows #define BID_THREAD __declspec(thread) #else #if !defined(__APPLE__) //Linux, FreeBSD #define BID_THREAD __thread #else //Mac OSX, TBD #define BID_THREAD #endif //Linux or Mac #endif //Windows #endif //BID_THREAD #ifndef BID_HAS_GCC_DECIMAL_INTRINSICS #define BID_HAS_GCC_DECIMAL_INTRINSICS 0 #endif // set sizeof (long) here, for bid32_lrint(), bid64_lrint(), bid128_lrint(), // and for bid32_lround(), bid64_lround(), bid128_lround() #ifndef BID_SIZE_LONG #if defined(WINDOWS) #define BID_SIZE_LONG 4 #else #if defined(__x86_64__) || defined (__ia64__) || defined(HPUX_OS_64) #define BID_SIZE_LONG 8 #else #define BID_SIZE_LONG 4 #endif #endif #endif #if !defined(WINDOWS) || defined(__INTEL_COMPILER) // #define UNCHANGED_BINARY_STATUS_FLAGS #endif // #define HPUX_OS // If DECIMAL_CALL_BY_REFERENCE is defined then numerical arguments and results // are passed by reference otherwise they are passed by value (except that // a pointer is always passed to the status flags) #ifndef DECIMAL_CALL_BY_REFERENCE #define DECIMAL_CALL_BY_REFERENCE 0 #endif // If DECIMAL_GLOBAL_ROUNDING is defined then the rounding mode is a global // variable _IDEC_glbround, otherwise it is passed as a parameter when needed #ifndef DECIMAL_GLOBAL_ROUNDING #define DECIMAL_GLOBAL_ROUNDING 0 #endif #ifndef DECIMAL_GLOBAL_ROUNDING_ACCESS_FUNCTIONS #define DECIMAL_GLOBAL_ROUNDING_ACCESS_FUNCTIONS 0 #endif // If DECIMAL_GLOBAL_EXCEPTION_FLAGS is defined then the exception status flags // are represented by a global variable _IDEC_glbflags, otherwise they are // passed as a parameter when needed #ifndef DECIMAL_GLOBAL_EXCEPTION_FLAGS #define DECIMAL_GLOBAL_EXCEPTION_FLAGS 0 #endif #ifndef DECIMAL_GLOBAL_EXCEPTION_FLAGS_ACCESS_FUNCTIONS #define DECIMAL_GLOBAL_EXCEPTION_FLAGS_ACCESS_FUNCTIONS 0 #endif // If DECIMAL_ALTERNATE_EXCEPTION_HANDLING is defined then the exception masks // are examined and exception handling information is provided to the caller // if alternate exception handling is necessary #ifndef DECIMAL_ALTERNATE_EXCEPTION_HANDLING #define DECIMAL_ALTERNATE_EXCEPTION_HANDLING 0 #endif typedef unsigned int _IDEC_round; typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info #if DECIMAL_ALTERNATE_EXCEPTION_HANDLING // If DECIMAL_GLOBAL_EXCEPTION_MASKS is defined then the exception mask bits // are represented by a global variable _IDEC_exceptionmasks, otherwise they // are passed as a parameter when needed; DECIMAL_GLOBAL_EXCEPTION_MASKS is // ignored // if DECIMAL_ALTERNATE_EXCEPTION_HANDLING is not defined // ************************************************************************** #define DECIMAL_GLOBAL_EXCEPTION_MASKS 0 // ************************************************************************** // If DECIMAL_GLOBAL_EXCEPTION_INFO is defined then the alternate exception // handling information is represented by a global data structure // _IDEC_glbexcepthandling, otherwise it is passed by reference as a // parameter when needed; DECIMAL_GLOBAL_EXCEPTION_INFO is ignored // if DECIMAL_ALTERNATE_EXCEPTION_HANDLING is not defined // ************************************************************************** #define DECIMAL_GLOBAL_EXCEPTION_INFO 0 // ************************************************************************** #endif // Notes: 1) rnd_mode from _RND_MODE_ARG is used by the caller of a function // from this library, and can be any name // 2) rnd_mode and prnd_mode from _RND_MODE_PARAM are fixed names // and *must* be used in the library functions // 3) _IDEC_glbround is the fixed name for the global variable holding // the rounding mode #if !DECIMAL_GLOBAL_ROUNDING #if DECIMAL_CALL_BY_REFERENCE #define _RND_MODE_ARG , &rnd_mode #define _RND_MODE_PARAM , _IDEC_round *prnd_mode #define _RND_MODE_PARAM_0 _IDEC_round *prnd_mode #define _RND_MODE_ARG_ALONE &rnd_mode #define _RND_MODE_PARAM_ALONE _IDEC_round *prnd_mode #else #define _RND_MODE_ARG , rnd_mode #define _RND_MODE_PARAM , _IDEC_round rnd_mode #define _RND_MODE_PARAM_0 _IDEC_round rnd_mode #define _RND_MODE_ARG_ALONE rnd_mode #define _RND_MODE_PARAM_ALONE _IDEC_round rnd_mode #endif #else #define _RND_MODE_ARG #define _RND_MODE_PARAM #define _RND_MODE_ARG_ALONE #define _RND_MODE_PARAM_ALONE #define rnd_mode _IDEC_glbround #endif // Notes: 1) pfpsf from _EXC_FLAGS_ARG is used by the caller of a function // from this library, and can be any name // 2) pfpsf from _EXC_FLAGS_PARAM is a fixed name and *must* be used // in the library functions // 3) _IDEC_glbflags is the fixed name for the global variable holding // the floating-point status flags #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS #define _EXC_FLAGS_ARG , pfpsf #define _EXC_FLAGS_PARAM , _IDEC_flags *pfpsf #else #define _EXC_FLAGS_ARG #define _EXC_FLAGS_PARAM #define pfpsf &_IDEC_glbflags #endif #if DECIMAL_GLOBAL_ROUNDING BID_EXTERN_C BID_THREAD _IDEC_round _IDEC_glbround; #endif #if DECIMAL_GLOBAL_EXCEPTION_FLAGS BID_EXTERN_C BID_THREAD _IDEC_flags _IDEC_glbflags; #endif #if DECIMAL_ALTERNATE_EXCEPTION_HANDLING #if DECIMAL_GLOBAL_EXCEPTION_MASKS BID_EXTERN_C BID_THREAD _IDEC_exceptionmasks _IDEC_glbexceptionmasks; #endif #if DECIMAL_GLOBAL_EXCEPTION_INFO BID_EXTERN_C BID_THREAD _IDEC_excepthandling _IDEC_glbexcepthandling; #endif #endif #if DECIMAL_ALTERNATE_EXCEPTION_HANDLING // Notes: 1) exc_mask from _EXC_MASKS_ARG is used by the caller of a function // from this library, and can be any name // 2) exc_mask and pexc_mask from _EXC_MASKS_PARAM are fixed names // and *must* be used in the library functions // 3) _IDEC_glbexceptionmasks is the fixed name for the global // variable holding the floating-point exception masks #if !DECIMAL_GLOBAL_EXCEPTION_MASKS #if DECIMAL_CALL_BY_REFERENCE #define _EXC_MASKS_ARG , &exc_mask #define _EXC_MASKS_PARAM , _IDEC_exceptionmasks *pexc_mask #else #define _EXC_MASKS_ARG , exc_mask #define _EXC_MASKS_PARAM , _IDEC_exceptionmasks exc_mask #endif #else #define _EXC_MASKS_ARG #define _EXC_MASKS_PARAM #define exc_mask _IDEC_glbexceptionmasks #endif // Notes: 1) BID_pexc_info from _EXC_INFO_ARG is used by the caller of a function // from this library, and can be any name // 2) BID_pexc_info from _EXC_INFO_PARAM is a fixed name and *must* be // used in the library functions // 3) _IDEC_glbexcepthandling is the fixed name for the global // variable holding the floating-point exception information #if !DECIMAL_GLOBAL_EXCEPTION_INFO #define _EXC_INFO_ARG , BID_pexc_info #define _EXC_INFO_PARAM , _IDEC_excepthandling *BID_pexc_info #else #define _EXC_INFO_ARG #define _EXC_INFO_PARAM #define BID_pexc_info &_IDEC_glbexcepthandling #endif #else #define _EXC_MASKS_ARG #define _EXC_MASKS_PARAM #define _EXC_INFO_ARG #define _EXC_INFO_PARAM #endif #ifndef BID_BIG_ENDIAN #define BID_BIG_ENDIAN 0 #endif #if BID_BIG_ENDIAN #define BID_SWAP128(x) { \ BID_UINT64 sw; \ sw = (x).w[1]; \ (x).w[1] = (x).w[0]; \ (x).w[0] = sw; \ } #else #define BID_SWAP128(x) #endif #if DECIMAL_CALL_BY_REFERENCE #define BID_RETURN_VAL(x) { BID_OPT_RESTORE_BINARY_FLAGS() *pres = (x); return; } #if BID_BIG_ENDIAN && defined BID_128RES #define BID_RETURN(x) { BID_OPT_RESTORE_BINARY_FLAGS() BID_SWAP128(x); *pres = (x); return; } #define BID_RETURN_NOFLAGS(x) { BID_SWAP128(x); *pres = (x); return; } #else #define BID_RETURN(x) { BID_OPT_RESTORE_BINARY_FLAGS() *pres = (x); return; } #define BID_RETURN_NOFLAGS(x) { *pres = (x); return; } #endif #else #define BID_RETURN_VAL(x) { BID_OPT_RESTORE_BINARY_FLAGS() return(x); } #if BID_BIG_ENDIAN && defined BID_128RES #define BID_RETURN(x) { BID_OPT_RESTORE_BINARY_FLAGS() BID_SWAP128(x); return(x); } #define BID_RETURN_NOFLAGS(x) { BID_SWAP128(x); return(x); } #else #define BID_RETURN(x) { BID_OPT_RESTORE_BINARY_FLAGS() return(x); } #define BID_RETURN_NOFLAGS(x) { return(x); } #endif #endif #if DECIMAL_CALL_BY_REFERENCE #define BIDECIMAL_CALL1(_FUNC, _RES, _OP1) \ _FUNC(&(_RES), &(_OP1) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_NORND(_FUNC, _RES, _OP1) \ _FUNC(&(_RES), &(_OP1) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL2(_FUNC, _RES, _OP1, _OP2) \ _FUNC(&(_RES), &(_OP1), &(_OP2) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL2_YPTR_NORND(_FUNC, _RES, _OP1, _OP2) \ _FUNC(&(_RES), &(_OP1), &(_OP2) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL2_NORND(_FUNC, _RES, _OP1, _OP2) \ _FUNC(&(_RES), &(_OP1), &(_OP2) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_NORND_RESREF(_FUNC, _RES, _OP1) \ _FUNC((_RES), &(_OP1) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_RESARG(_FUNC, _RES, _OP1) \ _FUNC(&(_RES), (_OP1) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_RESREF(_FUNC, _RES, _OP1) \ _FUNC((_RES), &(_OP1) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_NORND_NOSTAT(_FUNC, _RES, _OP1) \ _FUNC(&(_RES), &(_OP1) _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL2_NORND_NOSTAT(_FUNC, _RES, _OP1, _OP2) \ _FUNC(&(_RES), &(_OP1), &(_OP2) _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL3(_FUNC, _RES, _OP1, _OP2, _OP3) \ _FUNC(&(_RES), &(_OP1), &(_OP2), &(_OP3) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_NORND_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ _FUNC(&(_RES), &(_OP1) _EXC_FLAGS_ARG ) #define BIDECIMAL_CALL1_NORND_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ _FUNC(&(_RES), &(_OP1) ) #define BIDECIMAL_CALL1_NORND_NOFLAGS_NOMASK_NOINFO_ARGREF(_FUNC, _RES, _OP1) \ _FUNC(&(_RES), (_OP1) ) #define BIDECIMAL_CALL2_NORND_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1, _OP2) \ _FUNC(&(_RES), &(_OP1), &(_OP2) ) #define BIDECIMAL_CALL2_NORND_NOFLAGS_NOMASK_NOINFO_ARG2REF(_FUNC, _RES, _OP1, _OP2) \ _FUNC(&(_RES), &(_OP1), (_OP2) ) #define BIDECIMAL_CALL1_NORND_NOMASK_NOINFO_RESVOID(_FUNC, _OP1) \ _FUNC(&(_OP1) _EXC_FLAGS_ARG ) #define BIDECIMAL_CALL2_NORND_NOMASK_NOINFO_RESVOID(_FUNC, _OP1, _OP2) \ _FUNC(&(_OP1), &(_OP2) _EXC_FLAGS_ARG ) #define BIDECIMAL_CALLV_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES) \ _FUNC(&(_RES) _RND_MODE_ARG) #define BIDECIMAL_CALL1_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ _FUNC(&(_OP1) _RND_MODE_ARG) #define BIDECIMAL_CALLV_EMPTY(_FUNC, _RES) \ _FUNC(&(_RES)) #else #define BIDECIMAL_CALL1(_FUNC, _RES, _OP1) \ _RES = _FUNC((_OP1) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_NORND(_FUNC, _RES, _OP1) \ _RES = _FUNC((_OP1) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL2(_FUNC, _RES, _OP1, _OP2) \ _RES = _FUNC((_OP1), (_OP2) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL2_YPTR_NORND(_FUNC, _RES, _OP1, _OP2) \ _RES = _FUNC((_OP1), &(_OP2) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL2_NORND(_FUNC, _RES, _OP1, _OP2) \ _RES = _FUNC((_OP1), (_OP2) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_NORND_RESREF(_FUNC, _RES, _OP1) \ _FUNC((_RES), _OP1 _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_RESARG(_FUNC, _RES, _OP1) \ _RES = _FUNC((_OP1) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_RESREF(_FUNC, _RES, _OP1) \ _FUNC((_RES), _OP1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_NORND_NOSTAT(_FUNC, _RES, _OP1) \ _RES = _FUNC((_OP1) _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL2_NORND_NOSTAT(_FUNC, _RES, _OP1, _OP2) \ _RES = _FUNC((_OP1), (_OP2) _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL3(_FUNC, _RES, _OP1, _OP2, _OP3) \ _RES = _FUNC((_OP1), (_OP2), (_OP3) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) #define BIDECIMAL_CALL1_NORND_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ _RES = _FUNC((_OP1) _EXC_FLAGS_ARG) #define BIDECIMAL_CALL1_NORND_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ _RES = _FUNC((_OP1) ) #define BIDECIMAL_CALL1_NORND_NOFLAGS_NOMASK_NOINFO_ARGREF(_FUNC, _RES, _OP1) \ _RES = _FUNC((_OP1) ) #define BIDECIMAL_CALL2_NORND_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1, _OP2) \ _RES = _FUNC((_OP1), (_OP2) ) #define BIDECIMAL_CALL2_NORND_NOFLAGS_NOMASK_NOINFO_ARG2REF(_FUNC, _RES, _OP1, _OP2) \ _RES = _FUNC((_OP1), (_OP2) ) #define BIDECIMAL_CALL1_NORND_NOMASK_NOINFO_RESVOID(_FUNC, _OP1) \ _FUNC((_OP1) _EXC_FLAGS_ARG) #define BIDECIMAL_CALL2_NORND_NOMASK_NOINFO_RESVOID(_FUNC, _OP1, _OP2) \ _FUNC((_OP1), (_OP2) _EXC_FLAGS_ARG) #define BIDECIMAL_CALLV_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES) \ _RES = _FUNC(_RND_MODE_ARG_ALONE) #if !DECIMAL_GLOBAL_ROUNDING #define BIDECIMAL_CALL1_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ _RES = _FUNC((_OP1) _RND_MODE_ARG) #else #define BIDECIMAL_CALL1_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ _FUNC((_OP1) _RND_MODE_ARG) #endif #define BIDECIMAL_CALLV_EMPTY(_FUNC, _RES) \ _RES=_FUNC() #endif /////////////////////////////////////////////////////////////////////////// // // Wrapper macros for ICL // /////////////////////////////////////////////////////////////////////////// #if defined (__INTEL_COMPILER) && (__DFP_WRAPPERS_ON) && (!DECIMAL_CALL_BY_REFERENCE) && (DECIMAL_GLOBAL_ROUNDING) && (DECIMAL_GLOBAL_EXCEPTION_FLAGS) #include "bid_wrap_names.h" #define DECLSPEC_OPT __declspec(noinline) #define bit_size_BID_UINT128 128 #define bit_size_BID_UINT64 64 #define bit_size_BID_SINT64 64 #define bit_size_BID_UINT32 32 #define bit_size_BID_SINT32 32 #define bidsize(x) bit_size_##x #define form_type(type, size) type##size #define wrapper_name(x) __wrap_##x #define DFP_WRAPFN_OTHERTYPE(rsize, fn_name, othertype)\ form_type(_Decimal,rsize) wrapper_name(fn_name) (othertype __wraparg1)\ {\ union {\ form_type(_Decimal, rsize) d;\ form_type(BID_UINT, rsize) i;\ } r;\ \ \ r.i = fn_name(__wraparg1);\ return r.d;\ } #define DFP_WRAPFN_DFP(rsize, fn_name, isize1)\ form_type(_Decimal,rsize) wrapper_name(fn_name) (form_type(_Decimal, isize1) __wraparg1)\ {\ union {\ form_type(_Decimal, rsize) d;\ form_type(BID_UINT, rsize) i;\ } r;\ \ union {\ form_type(_Decimal, isize1) d;\ form_type(BID_UINT, isize1) i;\ } in1 = { __wraparg1};\ \ \ r.i = fn_name(in1.i);\ \ return r.d;\ } #define DFP_WRAPFN_DFP_DFP(rsize, fn_name, isize1, isize2)\ form_type(_Decimal, rsize) wrapper_name(fn_name) (form_type(_Decimal, isize1) __wraparg1, form_type(_Decimal, isize2) __wraparg2)\ {\ union {\ form_type(_Decimal, rsize) d;\ form_type(BID_UINT, rsize) i;\ } r;\ \ union {\ form_type(_Decimal, isize1) d;\ form_type(BID_UINT, isize1) i;\ } in1 = { __wraparg1};\ \ union {\ form_type(_Decimal, isize2) d;\ form_type(BID_UINT, isize2) i;\ } in2 = { __wraparg2};\ \ \ r.i = fn_name(in1.i, in2.i);\ \ return r.d;\ } #define DFP_WRAPFN_DFP_DFP_POINTER(rsize, fn_name, isize1, isize2)\ form_type(_Decimal, rsize) wrapper_name(fn_name) (form_type(_Decimal, isize1) __wraparg1, form_type(_Decimal, isize2) *__wraparg2)\ {\ union {\ form_type(_Decimal, rsize) d;\ form_type(BID_UINT, rsize) i;\ } r;\ \ union {\ form_type(_Decimal, isize1) d;\ form_type(BID_UINT, isize1) i;\ } in1 = { __wraparg1};\ \ union {\ form_type(_Decimal, isize2) d;\ form_type(BID_UINT, isize2) i;\ } out2;\ \ \ r.i = fn_name(in1.i, &out2.i); *__wraparg2 = out2.d;\ \ return r.d;\ } #define DFP_WRAPFN_DFP_DFP_DFP(rsize, fn_name, isize1, isize2, isize3)\ form_type(_Decimal, rsize) wrapper_name(fn_name) (form_type(_Decimal, isize1) __wraparg1, form_type(_Decimal, isize2) __wraparg2, form_type(_Decimal, isize3) __wraparg3)\ {\ union {\ form_type(_Decimal, rsize) d;\ form_type(BID_UINT, rsize) i;\ } r;\ \ union {\ form_type(_Decimal, isize1) d;\ form_type(BID_UINT, isize1) i;\ } in1 = { __wraparg1};\ \ union {\ form_type(_Decimal, isize2) d;\ form_type(BID_UINT, isize2) i;\ } in2 = { __wraparg2};\ \ union {\ form_type(_Decimal, isize3) d;\ form_type(BID_UINT, isize3) i;\ } in3 = { __wraparg3};\ \ \ r.i = fn_name(in1.i, in2.i, in3.i);\ \ return r.d;\ } #define RES_WRAPFN_DFP(restype, fn_name, isize1)\ restype wrapper_name(fn_name) (form_type(_Decimal, isize1) __wraparg1)\ {\ union {\ form_type(_Decimal, isize1) d;\ form_type(BID_UINT, isize1) i;\ } in1 = { __wraparg1};\ \ \ return fn_name(in1.i);\ } #define RES_WRAPFN_DFP_DFP(restype, fn_name, isize1, isize2)\ restype wrapper_name(fn_name) (form_type(_Decimal, isize1) __wraparg1, form_type(_Decimal, isize2) __wraparg2)\ {\ union {\ form_type(_Decimal, isize1) d;\ form_type(BID_UINT, isize1) i;\ } in1 = { __wraparg1};\ \ union {\ form_type(_Decimal, isize2) d;\ form_type(BID_UINT, isize2) i;\ } in2 = { __wraparg2};\ \ \ return fn_name(in1.i, in2.i);\ } #define DFP_WRAPFN_DFP_OTHERTYPE(rsize, fn_name, isize1, othertype)\ form_type(_Decimal, rsize) wrapper_name(fn_name) (form_type(_Decimal, isize1) __wraparg1, othertype __wraparg2)\ {\ union {\ form_type(_Decimal, rsize) d;\ form_type(BID_UINT, rsize) i;\ } r;\ \ union {\ form_type(_Decimal, isize1) d;\ form_type(BID_UINT, isize1) i;\ } in1 = { __wraparg1};\ \ \ r.i = fn_name(in1.i, __wraparg2);\ \ return r.d;\ } #define VOID_WRAPFN_OTHERTYPERES_DFP(fn_name, othertype, isize1)\ void wrapper_name(fn_name) (othertype *__wrapres, form_type(_Decimal, isize1) __wraparg1)\ {\ union {\ form_type(_Decimal, isize1) d;\ form_type(BID_UINT, isize1) i;\ } in1 = { __wraparg1};\ \ \ fn_name(__wrapres, in1.i);\ \ } #define DFP_WRAPFN_TYPE1_TYPE2(rsize, fn_name, type1, type2)\ form_type(_Decimal, rsize) wrapper_name(fn_name) (type1 __wraparg1, type2 __wraparg2)\ {\ union {\ form_type(_Decimal, rsize) d;\ form_type(BID_UINT, rsize) i;\ } r;\ \ \ r.i = fn_name(__wraparg1, __wraparg2);\ \ return r.d;\ } #else #define DECLSPEC_OPT #define DFP_WRAPFN_OTHERTYPE(rsize, fn_name, othertype) #define DFP_WRAPFN_DFP(rsize, fn_name, isize1) #define DFP_WRAPFN_DFP_DFP(rsize, fn_name, isize1, isize2) #define RES_WRAPFN_DFP(rsize, fn_name, isize1) #define RES_WRAPFN_DFP_DFP(rsize, fn_name, isize1, isize2) #define DFP_WRAPFN_DFP_DFP_DFP(rsize, fn_name, isize1, isize2, isize3) #define DFP_WRAPFN_DFP_OTHERTYPE(rsize, fn_name, isize1, othertype) #define DFP_WRAPFN_DFP_DFP_POINTER(rsize, fn_name, isize1, isize2) #define VOID_WRAPFN_OTHERTYPERES_DFP(fn_name, othertype, isize1) #define DFP_WRAPFN_TYPE1_TYPE2(rsize, fn_name, type1, type2) #endif /////////////////////////////////////////////////////////////////////////// #if BID_BIG_ENDIAN #define BID_HIGH_128W 0 #define BID_LOW_128W 1 #else #define BID_HIGH_128W 1 #define BID_LOW_128W 0 #endif #if (BID_BIG_ENDIAN) && defined(BID_128RES) #define BID_COPY_ARG_REF(arg_name) \ BID_UINT128 arg_name={{ pbid_##arg_name->w[1], pbid_##arg_name->w[0]}}; #define BID_COPY_ARG_VAL(arg_name) \ BID_UINT128 arg_name={{ bid_##arg_name.w[1], bid_##arg_name.w[0]}}; #else #define BID_COPY_ARG_REF(arg_name) \ BID_UINT128 arg_name=*pbid_##arg_name; #define BID_COPY_ARG_VAL(arg_name) \ BID_UINT128 arg_name= bid_##arg_name; #endif #define BID_COPY_ARG_TYPE_REF(type, arg_name) \ type arg_name=*pbid_##arg_name; #define BID_COPY_ARG_TYPE_VAL(type, arg_name) \ type arg_name= bid_##arg_name; #if !DECIMAL_GLOBAL_ROUNDING #define BID_SET_RND_MODE() \ _IDEC_round rnd_mode = *prnd_mode; #else #define BID_SET_RND_MODE() #endif #if !defined(BID_MS_FLAGS) && (defined(_MSC_VER) && !defined(__INTEL_COMPILER)) # define BID_MS_FLAGS #endif #if (defined(_MSC_VER) && !defined(__INTEL_COMPILER)) # include // needed for MS build of some BID32 transcendentals (hypot) #endif #if defined (UNCHANGED_BINARY_STATUS_FLAGS) && defined (BID_FUNCTION_SETS_BINARY_FLAGS) # if defined( BID_MS_FLAGS ) # include extern unsigned int __bid_ms_restore_flags(unsigned int*); # define BID_OPT_FLAG_DECLARE() \ unsigned int binaryflags = 0; # define BID_OPT_SAVE_BINARY_FLAGS() \ binaryflags = _statusfp(); # define BID_OPT_RESTORE_BINARY_FLAGS() \ __bid_ms_restore_flags(&binaryflags); # else # include # define BID_FE_ALL_FLAGS FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW|FE_UNDERFLOW|FE_INEXACT # define BID_OPT_FLAG_DECLARE() \ fexcept_t binaryflags = 0; # define BID_OPT_SAVE_BINARY_FLAGS() \ (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); # define BID_OPT_RESTORE_BINARY_FLAGS() \ (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); # endif #else # define BID_OPT_FLAG_DECLARE() # define BID_OPT_SAVE_BINARY_FLAGS() # define BID_OPT_RESTORE_BINARY_FLAGS() #endif #define BID_PROLOG_REF(arg_name) \ BID_COPY_ARG_REF(arg_name) #define BID_PROLOG_VAL(arg_name) \ BID_COPY_ARG_VAL(arg_name) #define BID_PROLOG_TYPE_REF(type, arg_name) \ BID_COPY_ARG_TYPE_REF(type, arg_name) #define BID_PROLOG_TYPE_VAL(type, arg_name) \ BID_COPY_ARG_TYPE_VAL(type, arg_name) #define OTHER_BID_PROLOG_REF() BID_OPT_FLAG_DECLARE() #define OTHER_BID_PROLOG_VAL() BID_OPT_FLAG_DECLARE() #if DECIMAL_CALL_BY_REFERENCE #define BID128_FUNCTION_ARG1(fn_name, arg_name)\ void fn_name (BID_UINT128 * pres, \ BID_UINT128 * \ pbid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARG1_NORND(fn_name, arg_name)\ void fn_name (BID_UINT128 * pres, \ BID_UINT128 * \ pbid_##arg_name _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name) \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name)\ void fn_name (restype * pres, \ BID_UINT128 * \ pbid_##arg_name _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name) \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARG2(fn_name, arg_name1, arg_name2)\ void fn_name (BID_UINT128 * pres, \ BID_UINT128 *pbid_##arg_name1, BID_UINT128 *pbid_##arg_name2 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name1) \ BID_PROLOG_REF(arg_name2) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARG2_NORND(fn_name, arg_name1, arg_name2)\ void fn_name (BID_UINT128 * pres, \ BID_UINT128 *pbid_##arg_name1, BID_UINT128 *pbid_##arg_name2 \ _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name1) \ BID_PROLOG_REF(arg_name2) \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name1, arg_name2)\ void fn_name (restype * pres, \ BID_UINT128 *pbid_##arg_name1, BID_UINT128 *pbid_##arg_name2 \ _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name1) \ BID_PROLOG_REF(arg_name2) \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARG2P_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name1, arg_name2)\ void fn_name (restype * pres, \ BID_UINT128 *pbid_##arg_name1, BID_UINT128 *arg_name2 \ _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name1) \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARG3P_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name1, arg_name2, res_name3)\ void fn_name (restype * pres, \ BID_UINT128 *pbid_##arg_name1, BID_UINT128 *pbid_##arg_name2, BID_UINT128 *res_name3 \ _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name1) \ BID_PROLOG_REF(arg_name2) \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARG128_ARGTYPE2(fn_name, arg_name1, type2, arg_name2)\ void fn_name (BID_UINT128 * pres, \ BID_UINT128 *pbid_##arg_name1, type2 *pbid_##arg_name2 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name1) \ BID_PROLOG_TYPE_REF(type2, arg_name2) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARG128_CUSTOMARGTYPE2(fn_name, arg_name1, type2, arg_name2) BID128_FUNCTION_ARG128_ARGTYPE2(fn_name, arg_name1, type2, arg_name2) #define BID128_FUNCTION_ARG128_CUSTOMARGTYPE2_PLAIN(fn_name, arg_name1, type2, arg_name2)\ void fn_name (BID_UINT128 * pres, \ BID_UINT128 *pbid_##arg_name1, type2 arg_name2 \ ) {\ BID_PROLOG_REF(arg_name1) \ OTHER_BID_PROLOG_REF() #define BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2(type0, fn_name, type1, arg_name1, type2, arg_name2)\ void fn_name (type0 *pres, \ type1 *pbid_##arg_name1, type2 *pbid_##arg_name2 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type1, arg_name1) \ BID_PROLOG_TYPE_REF(type2, arg_name2) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID_TYPE0_FUNCTION_ARGTYPE1_OTHER_ARGTYPE2 BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2 #define BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_ARGTYPE3(type0, fn_name, type1, arg_name1, type2, arg_name2, type3, arg_name3)\ void fn_name (type0 *pres, \ type1 *pbid_##arg_name1, type2 *pbid_##arg_name2, type3 *pbid_##arg_name3 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type1, arg_name1) \ BID_PROLOG_TYPE_REF(type2, arg_name2) \ BID_PROLOG_TYPE_REF(type3, arg_name3) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID_TYPE_FUNCTION_ARG2(type0, fn_name, arg_name1, arg_name2)\ void fn_name (type0 *pres, \ type0 *pbid_##arg_name1, type0 *pbid_##arg_name2 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type0, arg_name1) \ BID_PROLOG_TYPE_REF(type0, arg_name2) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(typeres, fn_name, type0, arg_name1, arg_name2)\ void fn_name (typeres *pres, \ type0 *pbid_##arg_name1, type0 *pbid_##arg_name2 \ _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type0, arg_name1) \ BID_PROLOG_TYPE_REF(type0, arg_name2) \ OTHER_BID_PROLOG_REF() #define BID_TYPE_FUNCTION_ARG1(type0, fn_name, arg_name1)\ void fn_name (type0 *pres, \ type0 *pbid_##arg_name1 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type0, arg_name1) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARGTYPE1_ARG128(fn_name, type1, arg_name1, arg_name2)\ void fn_name (BID_UINT128 * pres, \ type1 *pbid_##arg_name1, BID_UINT128 *pbid_##arg_name2 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type1, arg_name1) \ BID_PROLOG_REF(arg_name2) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID_TYPE0_FUNCTION_ARG128_ARGTYPE2(type0, fn_name, arg_name1, type2, arg_name2)\ void fn_name (type0 *pres, \ BID_UINT128 *pbid_##arg_name1, type2 *pbid_##arg_name2 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name1) \ BID_PROLOG_TYPE_REF(type2, arg_name2) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID_TYPE0_FUNCTION_ARGTYPE1_ARG128(type0, fn_name, type1, arg_name1, arg_name2)\ void fn_name (type0 *pres, \ type1 *pbid_##arg_name1, BID_UINT128 *pbid_##arg_name2 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type1, arg_name1) \ BID_PROLOG_REF(arg_name2) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID_TYPE0_FUNCTION_ARG128_ARG128(type0, fn_name, arg_name1, arg_name2)\ void fn_name (type0 * pres, \ BID_UINT128 *pbid_##arg_name1, BID_UINT128 *pbid_##arg_name2 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name1) \ BID_PROLOG_REF(arg_name2) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID_TYPE0_FUNCTION_ARG1(type0, fn_name, arg_name)\ void fn_name (type0 * pres, \ BID_UINT128 * \ pbid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_REF(arg_name) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID128_FUNCTION_ARGTYPE1(fn_name, type1, arg_name)\ void fn_name (BID_UINT128 * pres, \ type1 * \ pbid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type1, arg_name) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID_TYPE0_FUNCTION_ARGTYPE1(type0, fn_name, type1, arg_name)\ void fn_name (type0 * pres, \ type1 * \ pbid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type1, arg_name) \ BID_SET_RND_MODE() \ OTHER_BID_PROLOG_REF() #define BID_RESTYPE0_FUNCTION_ARGTYPE1 BID_TYPE0_FUNCTION_ARGTYPE1 #define BID_TYPE0_FUNCTION_ARGTYPE1_NORND(type0, fn_name, type1, arg_name)\ void fn_name (type0 * pres, \ type1 * \ pbid_##arg_name _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type1, arg_name) \ OTHER_BID_PROLOG_REF() #define BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP BID_TYPE0_FUNCTION_ARGTYPE1_NORND #define BID_TYPE0_FUNCTION_ARGTYPE1_NORND_NOFLAGS(type0, fn_name, type1, arg_name)\ void fn_name (type0 * pres, \ type1 * \ pbid_##arg_name _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type1, arg_name) #define BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(type0, fn_name, type1, arg_name1, type2, arg_name2)\ void fn_name (type0 * pres, \ type1 * \ pbid_##arg_name1, type2 * pbid_##arg_name2 _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ _EXC_INFO_PARAM) {\ BID_PROLOG_TYPE_REF(type1, arg_name1) \ BID_PROLOG_TYPE_REF(type2, arg_name2) \ OTHER_BID_PROLOG_REF() ////////////////////////////////////////// ///////////////////////////////////////// //////////////////////////////////////// #else ////////////////////////////////////////// ///////////////////////////////////////// //////////////////////////////////////// // BID args and result #define BID128_FUNCTION_ARG1(fn_name, arg_name)\ DFP_WRAPFN_DFP(128, fn_name, 128); \ \ DECLSPEC_OPT BID_UINT128 \ fn_name (BID_UINT128 bid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID128_FUNCTION_ARG1_NORND(fn_name, arg_name)\ DFP_WRAPFN_DFP(128, fn_name, 128); \ DECLSPEC_OPT BID_UINT128 \ fn_name (BID_UINT128 bid_##arg_name _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name) \ OTHER_BID_PROLOG_VAL() // result is not BID type #define BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name)\ RES_WRAPFN_DFP(restype, fn_name, 128); \ DECLSPEC_OPT restype \ fn_name (BID_UINT128 bid_##arg_name _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID128_FUNCTION_ARG2(fn_name, arg_name1, arg_name2)\ DFP_WRAPFN_DFP_DFP(128, fn_name, 128, 128); \ \ DECLSPEC_OPT BID_UINT128 \ fn_name (BID_UINT128 bid_##arg_name1, \ BID_UINT128 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name1) \ BID_PROLOG_VAL(arg_name2) \ OTHER_BID_PROLOG_VAL() // fmod, rem #define BID128_FUNCTION_ARG2_NORND(fn_name, arg_name1, arg_name2)\ DFP_WRAPFN_DFP_DFP(128, fn_name, 128, 128); \ \ DECLSPEC_OPT BID_UINT128 \ fn_name (BID_UINT128 bid_##arg_name1, \ BID_UINT128 bid_##arg_name2 _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name1) \ BID_PROLOG_VAL(arg_name2) \ OTHER_BID_PROLOG_VAL() // compares #define BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name1, arg_name2)\ RES_WRAPFN_DFP_DFP(restype, fn_name, 128, 128); \ DECLSPEC_OPT restype \ fn_name (BID_UINT128 bid_##arg_name1, \ BID_UINT128 bid_##arg_name2 _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name1) \ BID_PROLOG_VAL(arg_name2) \ OTHER_BID_PROLOG_VAL() // not currently used #define BID128_FUNCTION_ARG2P_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name1, res_name2)\ RES_WRAPFN_DFP_DFP(restype, fn_name, 128, 128); \ DECLSPEC_OPT restype \ fn_name (BID_UINT128 bid_##arg_name1, \ BID_UINT128* res_name2 _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name1) \ OTHER_BID_PROLOG_VAL() // not currently used #define BID128_FUNCTION_ARG3P_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name1, arg_name2, res_name3)\ RES_WRAPFN_DFP_DFP_DFP(restype, fn_name, 128, 128, 128); \ DECLSPEC_OPT restype \ fn_name (BID_UINT128 bid_##arg_name1, \ BID_UINT128 bid_##arg_name2, BID_UINT128* res_name3 _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name1) \ BID_PROLOG_VAL(arg_name2) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID128_FUNCTION_ARG128_ARGTYPE2(fn_name, arg_name1, type2, arg_name2)\ DFP_WRAPFN_DFP_DFP(128, fn_name, 128, bidsize(type2)); \ DECLSPEC_OPT BID_UINT128 \ fn_name (BID_UINT128 bid_##arg_name1, \ type2 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name1) \ BID_PROLOG_TYPE_VAL(type2, arg_name2) \ OTHER_BID_PROLOG_VAL() // scalb, ldexp #define BID128_FUNCTION_ARG128_CUSTOMARGTYPE2(fn_name, arg_name1, type2, arg_name2)\ DFP_WRAPFN_DFP_OTHERTYPE(128, fn_name, 128, type2); \ DECLSPEC_OPT BID_UINT128 \ fn_name (BID_UINT128 bid_##arg_name1, \ type2 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name1) \ BID_PROLOG_TYPE_VAL(type2, arg_name2) \ OTHER_BID_PROLOG_VAL() // frexp #define BID128_FUNCTION_ARG128_CUSTOMARGTYPE2_PLAIN(fn_name, arg_name1, type2, arg_name2)\ DFP_WRAPFN_DFP_OTHERTYPE(128, fn_name, 128, type2); \ DECLSPEC_OPT BID_UINT128 \ fn_name (BID_UINT128 bid_##arg_name1, \ type2 arg_name2 \ ) { \ BID_PROLOG_VAL(arg_name1) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2(type0, fn_name, type1, arg_name1, type2, arg_name2)\ DFP_WRAPFN_DFP_DFP(bidsize(type0), fn_name, bidsize(type1), bidsize(type2)); \ DECLSPEC_OPT type0 \ fn_name (type1 bid_##arg_name1, \ type2 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name1) \ BID_PROLOG_TYPE_VAL(type2, arg_name2) \ OTHER_BID_PROLOG_VAL() // BID arg1 and result #define BID_TYPE0_FUNCTION_ARGTYPE1_OTHER_ARGTYPE2(type0, fn_name, type1, arg_name1, type2, arg_name2)\ DFP_WRAPFN_DFP_OTHERTYPE(bidsize(type0), fn_name, bidsize(type1), type2); \ DECLSPEC_OPT type0 \ fn_name (type1 bid_##arg_name1, \ type2 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name1) \ BID_PROLOG_TYPE_VAL(type2, arg_name2) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_ARGTYPE3(type0, fn_name, type1, arg_name1, type2, arg_name2, type3, arg_name3)\ DFP_WRAPFN_DFP_DFP_DFP(bidsize(type0), fn_name, bidsize(type1), bidsize(type2), bidsize(type3)); \ DECLSPEC_OPT type0 \ fn_name (type1 bid_##arg_name1, \ type2 bid_##arg_name2, type3 bid_##arg_name3 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name1) \ BID_PROLOG_TYPE_VAL(type2, arg_name2) \ BID_PROLOG_TYPE_VAL(type3, arg_name3) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID_TYPE_FUNCTION_ARG2(type0, fn_name, arg_name1, arg_name2)\ DFP_WRAPFN_DFP_DFP(bidsize(type0), fn_name, bidsize(type0), bidsize(type0)); \ DECLSPEC_OPT type0 \ fn_name (type0 bid_##arg_name1, \ type0 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type0, arg_name1) \ BID_PROLOG_TYPE_VAL(type0, arg_name2) \ OTHER_BID_PROLOG_VAL() // BID args, result a different type (e.g. for compares) #define BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(typeres, fn_name, type0, arg_name1, arg_name2)\ RES_WRAPFN_DFP_DFP(typeres, fn_name, bidsize(type0), bidsize(type0)); \ DECLSPEC_OPT typeres \ fn_name (type0 bid_##arg_name1, \ type0 bid_##arg_name2 _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type0, arg_name1) \ BID_PROLOG_TYPE_VAL(type0, arg_name2) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID_TYPE_FUNCTION_ARG1(type0, fn_name, arg_name1)\ DFP_WRAPFN_DFP(bidsize(type0), fn_name, bidsize(type0)); \ DECLSPEC_OPT type0 \ fn_name (type0 bid_##arg_name1 \ _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type0, arg_name1) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID128_FUNCTION_ARGTYPE1_ARG128(fn_name, type1, arg_name1, arg_name2)\ DFP_WRAPFN_DFP_DFP(128, fn_name, bidsize(type1), 128); \ DECLSPEC_OPT BID_UINT128 \ fn_name (type1 bid_##arg_name1, \ BID_UINT128 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name1) \ BID_PROLOG_VAL(arg_name2) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID_TYPE0_FUNCTION_ARG128_ARGTYPE2(type0, fn_name, arg_name1, type2, arg_name2)\ DFP_WRAPFN_DFP_DFP(bidsize(type0), fn_name, 128, bidsize(type2)); \ DECLSPEC_OPT type0 \ fn_name (BID_UINT128 bid_##arg_name1, \ type2 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name1) \ BID_PROLOG_TYPE_VAL(type2, arg_name2) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID_TYPE0_FUNCTION_ARGTYPE1_ARG128(type0, fn_name, type1, arg_name1, arg_name2)\ DFP_WRAPFN_DFP_DFP(bidsize(type0), fn_name, bidsize(type1), 128); \ DECLSPEC_OPT type0 \ fn_name (type1 bid_##arg_name1, \ BID_UINT128 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name1) \ BID_PROLOG_VAL(arg_name2) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID_TYPE0_FUNCTION_ARG128_ARG128(type0, fn_name, arg_name1, arg_name2)\ DFP_WRAPFN_DFP_DFP(bidsize(type0), fn_name, 128, 128); \ DECLSPEC_OPT type0 \ fn_name (BID_UINT128 bid_##arg_name1, \ BID_UINT128 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name1) \ BID_PROLOG_VAL(arg_name2) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID_TYPE0_FUNCTION_ARG1(type0, fn_name, arg_name)\ DFP_WRAPFN_DFP(bidsize(type0), fn_name, 128); \ DECLSPEC_OPT type0 \ fn_name (BID_UINT128 bid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_VAL(arg_name) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID128_FUNCTION_ARGTYPE1(fn_name, type1, arg_name)\ DFP_WRAPFN_DFP(128, fn_name, bidsize(type1)); \ DECLSPEC_OPT BID_UINT128 \ fn_name (type1 bid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID_TYPE0_FUNCTION_ARGTYPE1(type0, fn_name, type1, arg_name)\ DFP_WRAPFN_DFP(bidsize(type0), fn_name, bidsize(type1)) \ DECLSPEC_OPT type0 \ fn_name (type1 bid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name) \ OTHER_BID_PROLOG_VAL() // BID args and result #define BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(type0, fn_name, type1, arg_name)\ DFP_WRAPFN_DFP(bidsize(type0), fn_name, bidsize(type1)) \ DECLSPEC_OPT type0 \ fn_name (type1 bid_##arg_name _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name) \ OTHER_BID_PROLOG_VAL() // BID args, different type result #define BID_RESTYPE0_FUNCTION_ARGTYPE1(type0, fn_name, type1, arg_name)\ RES_WRAPFN_DFP(type0, fn_name, bidsize(type1)) \ DECLSPEC_OPT type0 \ fn_name (type1 bid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name) \ OTHER_BID_PROLOG_VAL() // BID to int/uint functions #define BID_TYPE0_FUNCTION_ARGTYPE1_NORND(type0, fn_name, type1, arg_name)\ RES_WRAPFN_DFP(type0, fn_name, bidsize(type1)); \ DECLSPEC_OPT type0 \ fn_name (type1 bid_##arg_name _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name) \ OTHER_BID_PROLOG_VAL() // used for BID-to-BID conversions #define BID_TYPE0_FUNCTION_ARGTYPE1_NORND_NOFLAGS(type0, fn_name, type1, arg_name)\ DFP_WRAPFN_DFP(bidsize(type0), fn_name, bidsize(type1)); \ DECLSPEC_OPT type0 \ fn_name (type1 bid_##arg_name _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name) // fmod, rem #define BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(type0, fn_name, type1, arg_name1, type2, arg_name2)\ DFP_WRAPFN_DFP_DFP(bidsize(type0), fn_name, bidsize(type1), bidsize(type2)); \ DECLSPEC_OPT type0 \ fn_name (type1 bid_##arg_name1, type2 bid_##arg_name2 _EXC_FLAGS_PARAM \ _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ BID_PROLOG_TYPE_VAL(type1, arg_name1) \ BID_PROLOG_TYPE_VAL(type2, arg_name2) \ OTHER_BID_PROLOG_VAL() #endif #define BID_TO_SMALL_BID_UINT_CVT_FUNCTION(type0, fn_name, type1, arg_name, cvt_fn_name, type2, size_mask, invalid_res)\ BID_TYPE0_FUNCTION_ARGTYPE1_NORND(type0, fn_name, type1, arg_name)\ type2 res; \ _IDEC_flags saved_fpsc=*pfpsf; \ BIDECIMAL_CALL1_NORND(cvt_fn_name, res, arg_name); \ if(res & size_mask) { \ *pfpsf = saved_fpsc | BID_INVALID_EXCEPTION; \ res = invalid_res; } \ BID_RETURN_VAL((type0)res); \ } #define BID_TO_SMALL_INT_CVT_FUNCTION(type0, fn_name, type1, arg_name, cvt_fn_name, type2, size_mask, invalid_res)\ BID_TYPE0_FUNCTION_ARGTYPE1_NORND(type0, fn_name, type1, arg_name)\ type2 res, sgn_mask; \ _IDEC_flags saved_fpsc=*pfpsf; \ BIDECIMAL_CALL1_NORND(cvt_fn_name, res, arg_name); \ sgn_mask = res & size_mask; \ if(sgn_mask && (sgn_mask != (type2)size_mask)) { \ *pfpsf = saved_fpsc | BID_INVALID_EXCEPTION; \ res = invalid_res; } \ BID_RETURN_VAL((type0)res); \ } #endif LIBRARY/src/bid32_cos.c0000644€­ Q01134020000002770615113665770013565 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" // Extra macros #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll192_short(hi,med,lo,c) \ ((hi) = ((hi) << (c)) + ((med)>>(64-(c))), \ (med) = ((med) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) double sin(double); double cos(double); #define BID32_1 0x32800001ul #define BID32_NAN 0x7c000000ul // Values of (10^a / 2 pi) mod 1 for -8 <= a <= 90 // Each one is a 128-bit binary fraction. // Maybe it would be just about OK to use 64-bit fractions? static BID_UINT128 bid_decimal32_moduli[] = { {{ 0xd1ec52e455229a49ull, 0x00000006d5ed56c8ull }}, {{ 0x333b3ceb535a06d8ull, 0x000000445b4563d8ull }}, {{ 0x0050613141844470ull, 0x000002ab90b5e672ull }}, {{ 0x0323cbec8f2aac65ull, 0x00001ab3a71b0074ull }}, {{ 0x1f65f73d97aabbefull, 0x00010b04870e0488ull }}, {{ 0x39fba867ecab575aull, 0x000a6e2d468c2d51ull }}, {{ 0x43d4940f3eb16984ull, 0x00684dc4c179c52cull }}, {{ 0xa64dc89872ee1f25ull, 0x041309af8ec1b3baull }}, {{ 0x7f09d5f47d4d3770ull, 0x28be60db9391054aull }}, {{ 0xf6625b8ce5042a62ull, 0x976fc893c3aa34e8ull }}, {{ 0x9fd79380f229a7d5ull, 0xea5dd5c5a4a61119ull }}, {{ 0x3e6bc30975a08e56ull, 0x27aa59b86e7cab00ull }}, {{ 0x70359e5e98458f5eull, 0x8ca7813450deae02ull }}, {{ 0x62182fb1f2b799b0ull, 0x7e8b0c0b28b2cc18ull }}, {{ 0xd4f1dcf37b2c00e3ull, 0xf16e786f96fbf8f3ull }}, {{ 0x5172a182cfb808e1ull, 0x6e50b45be5d7b986ull }}, {{ 0x2e7a4f1c1d3058c6ull, 0x4f270b96fa6d3f3full }}, {{ 0xd0c7171923e377b9ull, 0x178673e5c8447877ull }}, {{ 0x27c6e6fb66e2ad3aull, 0xeb4086f9d2acb4aeull }}, {{ 0x8dc505d204dac446ull, 0x308545c23abf0ecdull }}, {{ 0x89b23a34308baac1ull, 0xe534b9964b769407ull }}, {{ 0x60f64609e574ab85ull, 0xf40f3fdef2a1c84bull }}, {{ 0xc99ebc62f68eb334ull, 0x88987eb57a51d2f1ull }}, {{ 0xe0335bdda193000cull, 0x55f4f316c7323d71ull }}, {{ 0xc20196a84fbe0075ull, 0x5b917ee3c7f66672ull }}, {{ 0x940fe2931d6c0490ull, 0x93aef4e5cfa0007bull }}, {{ 0xc89ed9bf26382da2ull, 0xc4d590fa1c4004d3ull }}, {{ 0xd63481777e31c854ull, 0xb057a9c51a803045ull }}, {{ 0x5e0d0eaaedf1d34cull, 0xe36ca1b30901e2baull }}, {{ 0xac8292ad4b7240f5ull, 0xe23e50fe5a12db47ull }}, {{ 0xbd19bac4f276898full, 0xd66f29ef84bc90ccull }}, {{ 0x63014bb178a15f9bull, 0x6057a35b2f5da7ffull }}, {{ 0xde0cf4eeb64dbc0bull, 0xc36c618fd9a88ff9ull }}, {{ 0xac8191531f095870ull, 0xa23bcf9e80959fc2ull }}, {{ 0xbd0fad3f365d7461ull, 0x56561c3105d83d9aull }}, {{ 0x629cc4781fa68bcdull, 0x5f5d19ea3a72680bull }}, {{ 0xda1facb13c817602ull, 0xb9a3032648781071ull }}, {{ 0x853cbeec5d0e9c19ull, 0x405e1f7ed4b0a472ull }}, {{ 0x345f753ba29218f7ull, 0x83ad3af44ee66c79ull }}, {{ 0x0bba945459b4f9a8ull, 0x24c44d8b15003cbcull }}, {{ 0x7549cb4b8111c093ull, 0x6fab076ed2025f58ull }}, {{ 0x94e1f0f30ab185baull, 0x5cae4a543417b974ull }}, {{ 0xd0d3697e6aef3943ull, 0x9ecee74a08ed3e8dull }}, {{ 0x28421ef02d583ca2ull, 0x341508e45944718aull }}, {{ 0x92953561c5725e56ull, 0x08d258eb7cac6f65ull }}, {{ 0xb9d415d1b677af57ull, 0x58377932debc59f7ull }}, {{ 0x4248da3120acd968ull, 0x722abbfcb35b83adull }}, {{ 0x96d885eb46c07e11ull, 0x75ab57df019324c4ull }}, {{ 0xe4753b30c384eca7ull, 0x98b16eb60fbf6fadull }}, {{ 0xec944fe7a3313e81ull, 0xf6ee531c9d7a5ccaull }}, {{ 0x3dcb1f0c5fec710eull, 0xa54f3f1e26c79fedull }}, {{ 0x69ef367bbf3c6a88ull, 0x7518772d83cc3f44ull }}, {{ 0x235820d5785c2951ull, 0x92f4a7c725fa78acull }}, {{ 0x61714856b3999d26ull, 0xbd8e8dc77bc8b6b9ull }}, {{ 0xce6cd3630400237eull, 0x679189cad5d7233dull }}, {{ 0x104041de280162ecull, 0x0baf61ec5a67606aull }}, {{ 0xa28292ad900ddd37ull, 0x74d9d33b8809c424ull }}, {{ 0x5919bac7a08aa429ull, 0x908240535061a96eull }}, {{ 0x7b014bcc456a699cull, 0xa516834123d09e4full }}, {{ 0xce0cf5fab6282016ull, 0x72e1208b66262f1aull }}, {{ 0x0c819bcb1d9140ddull, 0x7ccb4571fd7dd70cull }}, {{ 0x7d1015ef27ac88a1ull, 0xdff0b673e6ea6678ull }}, {{ 0xe2a0db578cbd5648ull, 0xbf672087052800b4ull }}, {{ 0xda48916b7f655ecfull, 0x7a07454633900710ull }}, {{ 0x86d5ae32f9f5b41bull, 0xc448b4be03a046a8ull }}, {{ 0x4458cdfdc399090dull, 0xaad70f6c2442c295ull }}, {{ 0xab780be9a3fa5a80ull, 0xac669a396a9b99d4ull }}, {{ 0xb2b0772067c78903ull, 0xbc02063e2a14024eull }}, {{ 0xfae4a7440dcb5a19ull, 0x58143e6da4c81712ull }}, {{ 0xccee88a889f184fdull, 0x70ca70486fd0e6bdull }}, {{ 0x01515695636f31e6ull, 0x67e862d45e29036aull }}, {{ 0x0d2d61d5e257f300ull, 0x0f13dc4bad9a2224ull }}, {{ 0x83c5d25ad76f7dffull, 0x96c69af4c8055568ull }}, {{ 0x25ba378c6a5aebfaull, 0xe3c20d8fd0355615ull }}, {{ 0x79462b7c278d37c5ull, 0xe594879e22155cd3ull }}, {{ 0xbcbdb2d98b842db5ull, 0xf7cd4c2d54d5a042ull }}, {{ 0x5f68fc7f7329c90eull, 0xae04f9c55058429bull }}, {{ 0xba19dcfa7fa1da8cull, 0xcc31c1b523729a11ull }}, {{ 0x4502a1c8fc52897bull, 0xf9f19113627a04b1ull }}, {{ 0xb21a51d9db395ed1ull, 0xc36faac1d8c42eecull }}, {{ 0xf5073282903db429ull, 0xa25cab9277a9d53eull }}, {{ 0x9247f919a2690997ull, 0x579eb3b8aca25475ull }}, {{ 0xb6cfbb00581a5fe4ull, 0x6c330536be574c97ull }}, {{ 0x241d4e037107beeaull, 0x39fe34236f68fdedull }}, {{ 0x69250c226a4d7526ull, 0x43ee09625a19eb43ull }}, {{ 0x1b7279582706937cull, 0xa74c5dd7850330a2ull }}, {{ 0x1278bd718641c2d4ull, 0x88fbaa6b321fe655ull }}, {{ 0xb8b7666f3e919c45ull, 0x59d4a82ff53eff52ull }}, {{ 0x372a005871b01ab6ull, 0x824e91df9475f93bull }}, {{ 0x27a4037470e10b1eull, 0x1711b2bbcc9bbc50ull }}, {{ 0x8c68228c68ca6f2full, 0xe6b0fb55fe155b21ull }}, {{ 0x7c11597c17e857d2ull, 0x02e9d15becd58f4full }}, {{ 0xd8ad7ed8ef136e34ull, 0x1d222d974057991aull }}, {{ 0x76c6f47956c24e0aull, 0x2355c7e8836bfb0cull }}, {{ 0xa3c58cbd63970c5full, 0x6159cf152237ce7cull }}, {{ 0x65b77f65e3e67bb7ull, 0xcd8216d3562e10deull }}, {{ 0xf92af9fae700d527ull, 0x0714e4415dcca8afull }}, {{ 0xbbadc3cd06085386ull, 0x46d0ea8da9fe96dfull }}, {{ 0x54c9a6023c53433bull, 0xc4292988a3f1e4bdull }} }; BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_cos, BID_UINT32, x) // Local variables. BID_UINT32 res; int s, e; BID_UINT64 c; double xd, yd = 0.0; BID_UINT128 m; BID_UINT192 p; int sf, k, ef, el; // Decompose the input and check for NaN and infinity. s = x >> 31; if ((x & (3ul<<29)) == (3ul<<29)) { if ((x & (0xFul<<27)) == (0xFul<<27)) { if ((x & (0x1Ful<<26)) != (0x1Full<<26)) { // input is infinite, so return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = BID32_NAN; BID_RETURN (res); } else { // input is NaN, so quiet/canonize it etc. #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } } else { // "large coefficient" input e = ((x >> 21) & ((1ul<<8)-1)) - 101; c = (1ul<<23) + (x & ((1ul<<21)-1)); if ((unsigned long)(c) > 9999999ul) c = 0ull; } } else { // "small coefficient" input e = ((x >> 23) & ((1ul<<8)-1)) - 101; c = x & ((1ul<<23)-1); } // Make sure we treat zero even with huge exponent as small if (c == 0) e = -9; // If the input is trivially <= 1/10, just do the naive computation // since no range reduction is needed and the function is well-conditioned if (e < -8) { BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = cos(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN(res); } // Pick out the appropriate modulus for the exponent and multiply by coeff // Since we discard the top word p.w[3], we could specially optimize this. m = bid_decimal32_moduli[e+8]; __mul_64x128_to_192(p,c,m); // Shift up by two bits to give an integer part k and a fraction // modulo (pi/2). Note that we have to do this afterwards rather than // use modulo (pi/2) reduction at the start to keep integer parities. k = p.w[1] >> 62; sll128_short(p.w[1],p.w[0],2); // If the fraction is >= 1/2, add 1 to integer and complement the fraction // with an appropriate sign change so we have a "rounded to nearest" version // (Complementing is slightly different from negation but it's negligible.) // Set "sf" to the correct sign for the fraction if (p.w[1] >= 0x8000000000000000ull) { k = (k + 1) & 3; p.w[1] = ~p.w[1]; p.w[0] = ~p.w[0]; sf = 1 - s; } else { sf = s; } // Also correct k to take into account the sign if (s) k = (-k) & 3; // Normalize the binary fraction with exponent ef el = clz64_nz(p.w[1]); ef = 1022 - el; if (el != 0) sll128_short(p.w[1],p.w[0],el); // Now shift right and mask off integer bit for double coefficient // and package up as a double-precision number { union { double d; BID_UINT64 i; } di; di.i = (((BID_UINT64) sf) << 63) + ((BID_UINT64) ef << 52) + ((p.w[1] >> 11) & ((1ull<<52)-1)); xd = di.d; } // Multiply by pi/2 so we can use regular binary trig functions. xd = 1.570796326794896619231321691639751442098584699687552910487472296 * xd; // Now use the trig function depending on k: switch(k) { case 0: yd = cos(xd); break; case 1: yd = -sin(xd); break; case 2: yd = -cos(xd); break; case 3: yd = sin(xd); break; default: break; // default added to avoid compiler warning } BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN(res); } LIBRARY/src/bid32_atan2.c0000644€­ Q01134020000000720115113665770013772 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_EXTERN_C double atan2(double, double); BID_TYPE_FUNCTION_ARG2(BID_UINT32, bid32_atan2, x, y) BID_UINT32 sign_x, sign_y, coefficient_x, coefficient_y; BID_UINT32 valid_x, valid_y, res; double xd, yd, zd; int exponent_x, exponent_y; valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID32 (&sign_y, &exponent_y, &coefficient_y, y); if (!valid_x) { // x is Inf. or NaN #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK32) == SNAN_MASK32) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (coefficient_x & QUIET_MASK32); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK32) == SNAN_MASK32) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (coefficient_y & QUIET_MASK32); } if (((x & INFINITY_MASK32) == INFINITY_MASK32) && // x is Infinity ((y & INFINITY_MASK32) == INFINITY_MASK32)) // y is also Infinity { if ((x & SIGNMASK32) == 0 && (y & SIGNMASK32) == 0) // x positive, y positive zd = atan2(1.0, 1.0); else if ((x & SIGNMASK32) == SIGNMASK32 && (y & SIGNMASK32) == 0) // x negative, y positive zd = atan2(-1.0, 1.0); else if ((x & SIGNMASK32) == SIGNMASK32 && (y & SIGNMASK32) == SIGNMASK32) // x negative, y negative zd = atan2(-1.0, -1.0); else zd = atan2(1.0, -1.0); BIDECIMAL_CALL1(binary64_to_bid32,res,zd); BID_RETURN (res); } } BIDECIMAL_CALL1(bid32_to_binary64,xd,x); BIDECIMAL_CALL1(bid32_to_binary64,yd,y); zd = atan2(xd,yd); BIDECIMAL_CALL1(binary64_to_bid32,res,zd); BID_RETURN (res); } LIBRARY/src/bid_internal.h0000644€­ Q01134020000026773615113665770014466 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef __BIDECIMAL_H #define __BIDECIMAL_H #define _CRT_SECURE_NO_DEPRECATE #if defined(_MSC_VER) && !defined(__INTEL_COMPILER) # pragma warning( disable: 4996 ) #endif #include "bid_conf.h" #include "bid_functions.h" #define __BID_INLINE__ static __inline #if defined (__INTEL_COMPILER) #define FENCE __fence #else #define FENCE #endif /********************************************************************* * * Logical Shift Macros * *********************************************************************/ #define __shr_128(Q, A, k) \ { \ (Q).w[0] = (A).w[0] >> k; \ (Q).w[0] |= (A).w[1] << (64-k); \ (Q).w[1] = (A).w[1] >> k; \ } #define __shr_128_long(Q, A, k) \ { \ if((k)<64) { \ (Q).w[0] = (A).w[0] >> k; \ (Q).w[0] |= (A).w[1] << (64-k); \ (Q).w[1] = (A).w[1] >> k; \ } \ else { \ (Q).w[0] = (A).w[1]>>((k)-64); \ (Q).w[1] = 0; \ } \ } #define __shl_128_long(Q, A, k) \ { \ if((k)<64) { \ (Q).w[1] = (A).w[1] << k; \ (Q).w[1] |= (A).w[0] >> (64-k); \ (Q).w[0] = (A).w[0] << k; \ } \ else { \ (Q).w[1] = (A).w[0]<<((k)-64); \ (Q).w[0] = 0; \ } \ } #define __low_64(Q) (Q).w[0] /********************************************************************* * * String Macros * *********************************************************************/ #define tolower_macro(x) (((unsigned char)((x)-'A')<=('Z'-'A'))?((x)-'A'+'a'):(x)) /********************************************************************* * * Compare Macros * *********************************************************************/ // greater than // return 0 if A<=B // non-zero if A>B #define __unsigned_compare_gt_128(A, B) \ ((A.w[1]>B.w[1]) || ((A.w[1]==B.w[1]) && (A.w[0]>B.w[0]))) // greater-or-equal #define __unsigned_compare_ge_128(A, B) \ ((A.w[1]>B.w[1]) || ((A.w[1]==B.w[1]) && (A.w[0]>=B.w[0]))) #define __test_equal_128(A, B) (((A).w[1]==(B).w[1]) && ((A).w[0]==(B).w[0])) // tighten exponent range #define __tight_bin_range_128(bp, P, bin_expon) \ { \ BID_UINT64 M; \ M = 1; \ (bp) = (bin_expon); \ if((bp)<63) { \ M <<= ((bp)+1); \ if((P).w[0] >= M) (bp)++; } \ else if((bp)>64) { \ M <<= ((bp)+1-64); \ if(((P).w[1]>M) ||((P).w[1]==M && (P).w[0]))\ (bp)++; } \ else if((P).w[1]) (bp)++; \ } /********************************************************************* * * Add/Subtract Macros * *********************************************************************/ // add 64-bit value to 128-bit #define __add_128_64(R128, A128, B64) \ { \ BID_UINT64 R64H; \ R64H = (A128).w[1]; \ (R128).w[0] = (B64) + (A128).w[0]; \ if((R128).w[0] < (B64)) \ R64H ++; \ (R128).w[1] = R64H; \ } // subtract 64-bit value from 128-bit #define __sub_128_64(R128, A128, B64) \ { \ BID_UINT64 R64H; \ R64H = (A128).w[1]; \ if((A128).w[0] < (B64)) \ R64H --; \ (R128).w[1] = R64H; \ (R128).w[0] = (A128).w[0] - (B64); \ } // add 128-bit value to 128-bit // assume no carry-out #define __add_128_128(R128, A128, B128) \ { \ BID_UINT128 Q128; \ Q128.w[1] = (A128).w[1]+(B128).w[1]; \ Q128.w[0] = (B128).w[0] + (A128).w[0]; \ if(Q128.w[0] < (B128).w[0]) \ Q128.w[1] ++; \ (R128).w[1] = Q128.w[1]; \ (R128).w[0] = Q128.w[0]; \ } #define __sub_128_128(R128, A128, B128) \ { \ BID_UINT128 Q128; \ Q128.w[1] = (A128).w[1]-(B128).w[1]; \ Q128.w[0] = (A128).w[0] - (B128).w[0]; \ if((A128).w[0] < (B128).w[0]) \ Q128.w[1] --; \ (R128).w[1] = Q128.w[1]; \ (R128).w[0] = Q128.w[0]; \ } #define __add_carry_out(S, CY, X, Y) \ { \ BID_UINT64 X1=X; \ S = X + Y; \ CY = (SX1) ? 1 : 0; \ } #define __sub_borrow_in_out(S, CY, X, Y, CI) \ { \ BID_UINT64 X1, X0=X; \ X1 = X - CI; \ S = X1 - Y; \ CY = ((S>X1) || (X1>X0)) ? 1 : 0; \ } // increment C128 and check for rounding overflow: // if (C_128) = 10^34 then (C_128) = 10^33 and increment the exponent #define INCREMENT(C_128, exp) \ { \ C_128.w[0]++; \ if (C_128.w[0] == 0) C_128.w[1]++; \ if (C_128.w[1] == 0x0001ed09bead87c0ull && \ C_128.w[0] == 0x378d8e6400000000ull) { \ exp++; \ C_128.w[1] = 0x0000314dc6448d93ull; \ C_128.w[0] = 0x38c15b0a00000000ull; \ } \ } // decrement C128 and check for rounding underflow, but only at the // boundary: if C_128 = 10^33 - 1 and exp > 0 then C_128 = 10^34 - 1 // and decrement the exponent #define DECREMENT(C_128, exp) \ { \ C_128.w[0]--; \ if (C_128.w[0] == 0xffffffffffffffffull) C_128.w[1]--; \ if (C_128.w[1] == 0x0000314dc6448d93ull && \ C_128.w[0] == 0x38c15b09ffffffffull && exp > 0) { \ exp--; \ C_128.w[1] = 0x0001ed09bead87c0ull; \ C_128.w[0] = 0x378d8e63ffffffffull; \ } \ } /********************************************************************* * * Multiply Macros * *********************************************************************/ #define __mul_64x64_to_64(P64, CX, CY) (P64) = (CX) * (CY) /*************************************** * Signed, Full 64x64-bit Multiply ***************************************/ #define __imul_64x64_to_128(P, CX, CY) \ { \ BID_UINT64 SX, SY; \ __mul_64x64_to_128(P, CX, CY); \ \ SX = ((BID_SINT64)(CX))>>63; \ SY = ((BID_SINT64)(CY))>>63; \ SX &= CY; SY &= CX; \ \ (P).w[1] = (P).w[1] - SX - SY; \ } /*************************************** * Signed, Full 64x128-bit Multiply ***************************************/ #define __imul_64x128_full(Ph, Ql, A, B) \ { \ BID_UINT128 ALBL, ALBH, QM2, QM; \ \ __imul_64x64_to_128(ALBH, (A), (B).w[1]); \ __imul_64x64_to_128(ALBL, (A), (B).w[0]); \ \ (Ql).w[0] = ALBL.w[0]; \ QM.w[0] = ALBL.w[1]; \ QM.w[1] = ((BID_SINT64)ALBL.w[1])>>63; \ __add_128_128(QM2, ALBH, QM); \ (Ql).w[1] = QM2.w[0]; \ Ph = QM2.w[1]; \ } /***************************************************** * Unsigned Multiply Macros *****************************************************/ // get full 64x64bit product // #define __mul_64x64_to_128(P, CX, CY) \ { \ BID_UINT64 CXH, CXL, CYH,CYL,PL,PH,PM,PM2;\ CXH = (CX) >> 32; \ CXL = (BID_UINT32)(CX); \ CYH = (CY) >> 32; \ CYL = (BID_UINT32)(CY); \ \ PM = CXH*CYL; \ PH = CXH*CYH; \ PL = CXL*CYL; \ PM2 = CXL*CYH; \ PH += (PM>>32); \ PM = (BID_UINT64)((BID_UINT32)PM)+PM2+(PL>>32); \ \ (P).w[1] = PH + (PM>>32); \ (P).w[0] = (PM<<32)+(BID_UINT32)PL; \ } // get full 64x64bit product // Note: // This macro is used for CX < 2^61, CY < 2^61 // #define __mul_64x64_to_128_fast(P, CX, CY) \ { \ BID_UINT64 CXH, CXL, CYH, CYL, PL, PH, PM; \ CXH = (CX) >> 32; \ CXL = (BID_UINT32)(CX); \ CYH = (CY) >> 32; \ CYL = (BID_UINT32)(CY); \ \ PM = CXH*CYL; \ PL = CXL*CYL; \ PH = CXH*CYH; \ PM += CXL*CYH; \ PM += (PL>>32); \ \ (P).w[1] = PH + (PM>>32); \ (P).w[0] = (PM<<32)+(BID_UINT32)PL; \ } // used for CX< 2^60 #define __sqr64_fast(P, CX) \ { \ BID_UINT64 CXH, CXL, PL, PH, PM; \ CXH = (CX) >> 32; \ CXL = (BID_UINT32)(CX); \ \ PM = CXH*CXL; \ PL = CXL*CXL; \ PH = CXH*CXH; \ PM += PM; \ PM += (PL>>32); \ \ (P).w[1] = PH + (PM>>32); \ (P).w[0] = (PM<<32)+(BID_UINT32)PL; \ } // get full 64x64bit product // Note: // This implementation is used for CX < 2^61, CY < 2^61 // #define __mul_64x64_to_64_high_fast(P, CX, CY) \ { \ BID_UINT64 CXH, CXL, CYH, CYL, PL, PH, PM; \ CXH = (CX) >> 32; \ CXL = (BID_UINT32)(CX); \ CYH = (CY) >> 32; \ CYL = (BID_UINT32)(CY); \ \ PM = CXH*CYL; \ PL = CXL*CYL; \ PH = CXH*CYH; \ PM += CXL*CYH; \ PM += (PL>>32); \ \ (P) = PH + (PM>>32); \ } // get full 64x64bit product // #define __mul_64x64_to_128_full(P, CX, CY) \ { \ BID_UINT64 CXH, CXL, CYH,CYL,PL,PH,PM,PM2;\ CXH = (CX) >> 32; \ CXL = (BID_UINT32)(CX); \ CYH = (CY) >> 32; \ CYL = (BID_UINT32)(CY); \ \ PM = CXH*CYL; \ PH = CXH*CYH; \ PL = CXL*CYL; \ PM2 = CXL*CYH; \ PH += (PM>>32); \ PM = (BID_UINT64)((BID_UINT32)PM)+PM2+(PL>>32); \ \ (P).w[1] = PH + (PM>>32); \ (P).w[0] = (PM<<32)+(BID_UINT32)PL; \ } #define __mul_128x128_high(Q, A, B) \ { \ BID_UINT128 ALBL, ALBH, AHBL, AHBH, QM, QM2; \ \ __mul_64x64_to_128(ALBH, (A).w[0], (B).w[1]); \ __mul_64x64_to_128(AHBL, (B).w[0], (A).w[1]); \ __mul_64x64_to_128(ALBL, (A).w[0], (B).w[0]); \ __mul_64x64_to_128(AHBH, (A).w[1],(B).w[1]); \ \ __add_128_128(QM, ALBH, AHBL); \ __add_128_64(QM2, QM, ALBL.w[1]); \ __add_128_64((Q), AHBH, QM2.w[1]); \ } #define __mul_128x128_full(Qh, Ql, A, B) \ { \ BID_UINT128 ALBL, ALBH, AHBL, AHBH, QM, QM2; \ \ __mul_64x64_to_128(ALBH, (A).w[0], (B).w[1]); \ __mul_64x64_to_128(AHBL, (B).w[0], (A).w[1]); \ __mul_64x64_to_128(ALBL, (A).w[0], (B).w[0]); \ __mul_64x64_to_128(AHBH, (A).w[1],(B).w[1]); \ \ __add_128_128(QM, ALBH, AHBL); \ (Ql).w[0] = ALBL.w[0]; \ __add_128_64(QM2, QM, ALBL.w[1]); \ __add_128_64((Qh), AHBH, QM2.w[1]); \ (Ql).w[1] = QM2.w[0]; \ } #define __mul_128x128_low(Ql, A, B) \ { \ BID_UINT128 ALBL; \ BID_UINT64 QM64; \ \ __mul_64x64_to_128(ALBL, (A).w[0], (B).w[0]); \ QM64 = (B).w[0]*(A).w[1] + (A).w[0]*(B).w[1]; \ \ (Ql).w[0] = ALBL.w[0]; \ (Ql).w[1] = QM64 + ALBL.w[1]; \ } #define __mul_64x128_low(Ql, A, B) \ { \ BID_UINT128 ALBL, ALBH, QM2; \ __mul_64x64_to_128(ALBH, (A), (B).w[1]); \ __mul_64x64_to_128(ALBL, (A), (B).w[0]); \ (Ql).w[0] = ALBL.w[0]; \ __add_128_64(QM2, ALBH, ALBL.w[1]); \ (Ql).w[1] = QM2.w[0]; \ } #define __mul_64x128_full(Ph, Ql, A, B) \ { \ BID_UINT128 ALBL, ALBH, QM2; \ \ __mul_64x64_to_128(ALBH, (A), (B).w[1]); \ __mul_64x64_to_128(ALBL, (A), (B).w[0]); \ \ (Ql).w[0] = ALBL.w[0]; \ __add_128_64(QM2, ALBH, ALBL.w[1]); \ (Ql).w[1] = QM2.w[0]; \ Ph = QM2.w[1]; \ } #define __mul_64x128_to_192(Q, A, B) \ { \ BID_UINT128 ALBL, ALBH, QM2; \ \ __mul_64x64_to_128(ALBH, (A), (B).w[1]); \ __mul_64x64_to_128(ALBL, (A), (B).w[0]); \ \ (Q).w[0] = ALBL.w[0]; \ __add_128_64(QM2, ALBH, ALBL.w[1]); \ (Q).w[1] = QM2.w[0]; \ (Q).w[2] = QM2.w[1]; \ } #define __mul_64x128_to192(Q, A, B) \ { \ BID_UINT128 ALBL, ALBH, QM2; \ \ __mul_64x64_to_128(ALBH, (A), (B).w[1]); \ __mul_64x64_to_128(ALBL, (A), (B).w[0]); \ \ (Q).w[0] = ALBL.w[0]; \ __add_128_64(QM2, ALBH, ALBL.w[1]); \ (Q).w[1] = QM2.w[0]; \ (Q).w[2] = QM2.w[1]; \ } #define __mul_128x128_to_256(P256, A, B) \ { \ BID_UINT128 Qll, Qlh; \ BID_UINT64 Phl, Phh, CY1, CY2; \ \ __mul_64x128_full(Phl, Qll, A.w[0], B); \ __mul_64x128_full(Phh, Qlh, A.w[1], B); \ (P256).w[0] = Qll.w[0]; \ __add_carry_out((P256).w[1],CY1, Qlh.w[0], Qll.w[1]); \ __add_carry_in_out((P256).w[2],CY2, Qlh.w[1], Phl, CY1); \ (P256).w[3] = Phh + CY2; \ } // // For better performance, will check A.w[1] against 0, // but not B.w[1] // Use this macro accordingly #define __mul_128x128_to_256_check_A(P256, A, B) \ { \ BID_UINT128 Qll, Qlh; \ BID_UINT64 Phl, Phh, CY1, CY2; \ \ __mul_64x128_full(Phl, Qll, A.w[0], B); \ (P256).w[0] = Qll.w[0]; \ if(A.w[1]) { \ __mul_64x128_full(Phh, Qlh, A.w[1], B); \ __add_carry_out((P256).w[1],CY1, Qlh.w[0], Qll.w[1]); \ __add_carry_in_out((P256).w[2],CY2, Qlh.w[1], Phl, CY1); \ (P256).w[3] = Phh + CY2; } \ else { \ (P256).w[1] = Qll.w[1]; \ (P256).w[2] = Phl; \ (P256).w[3] = 0; } \ } #define __mul_64x192_to_256(lP, lA, lB) \ { \ BID_UINT128 lP0,lP1,lP2; \ BID_UINT64 lC; \ __mul_64x64_to_128(lP0, lA, (lB).w[0]); \ __mul_64x64_to_128(lP1, lA, (lB).w[1]); \ __mul_64x64_to_128(lP2, lA, (lB).w[2]); \ (lP).w[0] = lP0.w[0]; \ __add_carry_out((lP).w[1],lC,lP1.w[0],lP0.w[1]); \ __add_carry_in_out((lP).w[2],lC,lP2.w[0],lP1.w[1],lC); \ (lP).w[3] = lP2.w[1] + lC; \ } #define __mul_64x256_to_320(P, A, B) \ { \ BID_UINT128 lP0,lP1,lP2,lP3; \ BID_UINT64 lC; \ __mul_64x64_to_128(lP0, A, (B).w[0]); \ __mul_64x64_to_128(lP1, A, (B).w[1]); \ __mul_64x64_to_128(lP2, A, (B).w[2]); \ __mul_64x64_to_128(lP3, A, (B).w[3]); \ (P).w[0] = lP0.w[0]; \ __add_carry_out((P).w[1],lC,lP1.w[0],lP0.w[1]); \ __add_carry_in_out((P).w[2],lC,lP2.w[0],lP1.w[1],lC); \ __add_carry_in_out((P).w[3],lC,lP3.w[0],lP2.w[1],lC); \ (P).w[4] = lP3.w[1] + lC; \ } #define __mul_192x192_to_384(P, A, B) \ { \ BID_UINT256 P0,P1,P2; \ BID_UINT64 CY; \ __mul_64x192_to_256(P0, (A).w[0], B); \ __mul_64x192_to_256(P1, (A).w[1], B); \ __mul_64x192_to_256(P2, (A).w[2], B); \ (P).w[0] = P0.w[0]; \ __add_carry_out((P).w[1],CY,P1.w[0],P0.w[1]); \ __add_carry_in_out((P).w[2],CY,P1.w[1],P0.w[2],CY); \ __add_carry_in_out((P).w[3],CY,P1.w[2],P0.w[3],CY); \ (P).w[4] = P1.w[3] + CY; \ __add_carry_out((P).w[2],CY,P2.w[0],(P).w[2]); \ __add_carry_in_out((P).w[3],CY,P2.w[1],(P).w[3],CY); \ __add_carry_in_out((P).w[4],CY,P2.w[2],(P).w[4],CY); \ (P).w[5] = P2.w[3] + CY; \ } #define __mul_64x320_to_384(P, A, B) \ { \ BID_UINT128 lP0,lP1,lP2,lP3,lP4; \ BID_UINT64 lC; \ __mul_64x64_to_128(lP0, A, (B).w[0]); \ __mul_64x64_to_128(lP1, A, (B).w[1]); \ __mul_64x64_to_128(lP2, A, (B).w[2]); \ __mul_64x64_to_128(lP3, A, (B).w[3]); \ __mul_64x64_to_128(lP4, A, (B).w[4]); \ (P).w[0] = lP0.w[0]; \ __add_carry_out((P).w[1],lC,lP1.w[0],lP0.w[1]); \ __add_carry_in_out((P).w[2],lC,lP2.w[0],lP1.w[1],lC); \ __add_carry_in_out((P).w[3],lC,lP3.w[0],lP2.w[1],lC); \ __add_carry_in_out((P).w[4],lC,lP4.w[0],lP3.w[1],lC); \ (P).w[5] = lP4.w[1] + lC; \ } // A*A // Full 128x128-bit product #define __sqr128_to_256(P256, A) \ { \ BID_UINT128 Qll, Qlh, Qhh; \ BID_UINT64 TMP_C1, TMP_C2; \ \ __mul_64x64_to_128(Qhh, A.w[1], A.w[1]); \ __mul_64x64_to_128(Qlh, A.w[0], A.w[1]); \ Qhh.w[1] += (Qlh.w[1]>>63); \ Qlh.w[1] = (Qlh.w[1]+Qlh.w[1])|(Qlh.w[0]>>63); \ Qlh.w[0] += Qlh.w[0]; \ __mul_64x64_to_128(Qll, A.w[0], A.w[0]); \ \ __add_carry_out((P256).w[1],TMP_C1, Qlh.w[0], Qll.w[1]); \ (P256).w[0] = Qll.w[0]; \ __add_carry_in_out((P256).w[2],TMP_C2, Qlh.w[1], Qhh.w[0], TMP_C1); \ (P256).w[3] = Qhh.w[1]+TMP_C2; \ } #define __mul_128x128_to_256_low_high(PQh, PQl, A, B) \ { \ BID_UINT128 Qll, Qlh; \ BID_UINT64 Phl, Phh, C1, C2; \ \ __mul_64x128_full(Phl, Qll, A.w[0], B); \ __mul_64x128_full(Phh, Qlh, A.w[1], B); \ (PQl).w[0] = Qll.w[0]; \ __add_carry_out((PQl).w[1],C1, Qlh.w[0], Qll.w[1]); \ __add_carry_in_out((PQh).w[0],C2, Qlh.w[1], Phl, C1); \ (PQh).w[1] = Phh + C2; \ } #define __mul_256x256_to_512(P, A, B) \ { \ BID_UINT512 P0,P1,P2,P3; \ BID_UINT64 CY; \ __mul_64x256_to_320(P0, (A).w[0], B); \ __mul_64x256_to_320(P1, (A).w[1], B); \ __mul_64x256_to_320(P2, (A).w[2], B); \ __mul_64x256_to_320(P3, (A).w[3], B); \ (P).w[0] = P0.w[0]; \ __add_carry_out((P).w[1],CY,P1.w[0],P0.w[1]); \ __add_carry_in_out((P).w[2],CY,P1.w[1],P0.w[2],CY); \ __add_carry_in_out((P).w[3],CY,P1.w[2],P0.w[3],CY); \ __add_carry_in_out((P).w[4],CY,P1.w[3],P0.w[4],CY); \ (P).w[5] = P1.w[4] + CY; \ __add_carry_out((P).w[2],CY,P2.w[0],(P).w[2]); \ __add_carry_in_out((P).w[3],CY,P2.w[1],(P).w[3],CY); \ __add_carry_in_out((P).w[4],CY,P2.w[2],(P).w[4],CY); \ __add_carry_in_out((P).w[5],CY,P2.w[3],(P).w[5],CY); \ (P).w[6] = P2.w[4] + CY; \ __add_carry_out((P).w[3],CY,P3.w[0],(P).w[3]); \ __add_carry_in_out((P).w[4],CY,P3.w[1],(P).w[4],CY); \ __add_carry_in_out((P).w[5],CY,P3.w[2],(P).w[5],CY); \ __add_carry_in_out((P).w[6],CY,P3.w[3],(P).w[6],CY); \ (P).w[7] = P3.w[4] + CY; \ } #define __mul_192x256_to_448(P, A, B) \ { \ BID_UINT512 P0,P1,P2; \ BID_UINT64 CY; \ __mul_64x256_to_320(P0, (A).w[0], B); \ __mul_64x256_to_320(P1, (A).w[1], B); \ __mul_64x256_to_320(P2, (A).w[2], B); \ (P).w[0] = P0.w[0]; \ __add_carry_out((P).w[1],CY,P1.w[0],P0.w[1]); \ __add_carry_in_out((P).w[2],CY,P1.w[1],P0.w[2],CY); \ __add_carry_in_out((P).w[3],CY,P1.w[2],P0.w[3],CY); \ __add_carry_in_out((P).w[4],CY,P1.w[3],P0.w[4],CY); \ (P).w[5] = P1.w[4] + CY; \ __add_carry_out((P).w[2],CY,P2.w[0],(P).w[2]); \ __add_carry_in_out((P).w[3],CY,P2.w[1],(P).w[3],CY); \ __add_carry_in_out((P).w[4],CY,P2.w[2],(P).w[4],CY); \ __add_carry_in_out((P).w[5],CY,P2.w[3],(P).w[5],CY); \ (P).w[6] = P2.w[4] + CY; \ } #define __mul_320x320_to_640(P, A, B) \ { \ BID_UINT512 P0,P1,P2,P3; \ BID_UINT64 CY; \ __mul_256x256_to_512((P), (A), B); \ __mul_64x256_to_320(P1, (A).w[4], B); \ __mul_64x256_to_320(P2, (B).w[4], A); \ __mul_64x64_to_128(P3, (A).w[4], (B).w[4]); \ __add_carry_out((P0).w[0],CY,P1.w[0],P2.w[0]); \ __add_carry_in_out((P0).w[1],CY,P1.w[1],P2.w[1],CY); \ __add_carry_in_out((P0).w[2],CY,P1.w[2],P2.w[2],CY); \ __add_carry_in_out((P0).w[3],CY,P1.w[3],P2.w[3],CY); \ __add_carry_in_out((P0).w[4],CY,P1.w[4],P2.w[4],CY); \ P3.w[1] += CY; \ __add_carry_out((P).w[4],CY,(P).w[4],P0.w[0]); \ __add_carry_in_out((P).w[5],CY,(P).w[5],P0.w[1],CY); \ __add_carry_in_out((P).w[6],CY,(P).w[6],P0.w[2],CY); \ __add_carry_in_out((P).w[7],CY,(P).w[7],P0.w[3],CY); \ __add_carry_in_out((P).w[8],CY,P3.w[0],P0.w[4],CY); \ (P).w[9] = P3.w[1] + CY; \ } #define __mul_384x384_to_768(P, A, B) \ { \ BID_UINT512 P0,P1,P2,P3; \ BID_UINT64 CY; \ __mul_320x320_to_640((P), (A), B); \ __mul_64x320_to_384(P1, (A).w[5], B); \ __mul_64x320_to_384(P2, (B).w[5], A); \ __mul_64x64_to_128(P3, (A).w[5], (B).w[5]); \ __add_carry_out((P0).w[0],CY,P1.w[0],P2.w[0]); \ __add_carry_in_out((P0).w[1],CY,P1.w[1],P2.w[1],CY); \ __add_carry_in_out((P0).w[2],CY,P1.w[2],P2.w[2],CY); \ __add_carry_in_out((P0).w[3],CY,P1.w[3],P2.w[3],CY); \ __add_carry_in_out((P0).w[4],CY,P1.w[4],P2.w[4],CY); \ __add_carry_in_out((P0).w[5],CY,P1.w[5],P2.w[5],CY); \ P3.w[1] += CY; \ __add_carry_out((P).w[5],CY,(P).w[5],P0.w[0]); \ __add_carry_in_out((P).w[6],CY,(P).w[6],P0.w[1],CY); \ __add_carry_in_out((P).w[7],CY,(P).w[7],P0.w[2],CY); \ __add_carry_in_out((P).w[8],CY,(P).w[8],P0.w[3],CY); \ __add_carry_in_out((P).w[9],CY,(P).w[9],P0.w[4],CY); \ __add_carry_in_out((P).w[10],CY,P3.w[0],P0.w[5],CY); \ (P).w[11] = P3.w[1] + CY; \ } #define __mul_64x128_short(Ql, A, B) \ { \ BID_UINT64 ALBH_L; \ \ __mul_64x64_to_64(ALBH_L, (A),(B).w[1]); \ __mul_64x64_to_128((Ql), (A), (B).w[0]); \ \ (Ql).w[1] += ALBH_L; \ } #define __scale128_10(D,_TMP) \ { \ BID_UINT128 _TMP2,_TMP8; \ _TMP2.w[1] = (_TMP.w[1]<<1)|(_TMP.w[0]>>63); \ _TMP2.w[0] = _TMP.w[0]<<1; \ _TMP8.w[1] = (_TMP.w[1]<<3)|(_TMP.w[0]>>61); \ _TMP8.w[0] = _TMP.w[0]<<3; \ __add_128_128(D, _TMP2, _TMP8); \ } // 64x64-bit product #define __mul_64x64_to_128MACH(P128, CX64, CY64) \ { \ BID_UINT64 CXH,CXL,CYH,CYL,PL,PH,PM,PM2; \ CXH = (CX64) >> 32; \ CXL = (BID_UINT32)(CX64); \ CYH = (CY64) >> 32; \ CYL = (BID_UINT32)(CY64); \ PM = CXH*CYL; \ PH = CXH*CYH; \ PL = CXL*CYL; \ PM2 = CXL*CYH; \ PH += (PM>>32); \ PM = (BID_UINT64)((BID_UINT32)PM)+PM2+(PL>>32); \ (P128).w[1] = PH + (PM>>32); \ (P128).w[0] = (PM<<32)+(BID_UINT32)PL; \ } // 64x64-bit product #define __mul_64x64_to_128HIGH(P64, CX64, CY64) \ { \ BID_UINT64 CXH,CXL,CYH,CYL,PL,PH,PM,PM2; \ CXH = (CX64) >> 32; \ CXL = (BID_UINT32)(CX64); \ CYH = (CY64) >> 32; \ CYL = (BID_UINT32)(CY64); \ PM = CXH*CYL; \ PH = CXH*CYH; \ PL = CXL*CYL; \ PM2 = CXL*CYH; \ PH += (PM>>32); \ PM = (BID_UINT64)((BID_UINT32)PM)+PM2+(PL>>32); \ P64 = PH + (PM>>32); \ } #define __mul_128x64_to_128(Q128, A64, B128) \ { \ BID_UINT64 ALBH_L; \ ALBH_L = (A64) * (B128).w[1]; \ __mul_64x64_to_128MACH((Q128), (A64), (B128).w[0]); \ (Q128).w[1] += ALBH_L; \ } // might simplify by calculating just QM2.w[0] #define __mul_64x128_to_128(Ql, A, B) \ { \ BID_UINT128 ALBL, ALBH, QM2; \ __mul_64x64_to_128(ALBH, (A), (B).w[1]); \ __mul_64x64_to_128(ALBL, (A), (B).w[0]); \ (Ql).w[0] = ALBL.w[0]; \ __add_128_64(QM2, ALBH, ALBL.w[1]); \ (Ql).w[1] = QM2.w[0]; \ } /********************************************************************* * * BID Pack/Unpack Macros * *********************************************************************/ ///////////////////////////////////////// // BID64 definitions //////////////////////////////////////// #define DECIMAL_MAX_EXPON_64 767 #define DECIMAL_EXPONENT_BIAS 398 #define MAX_FORMAT_DIGITS 16 ///////////////////////////////////////// // BID128 definitions //////////////////////////////////////// #define DECIMAL_MAX_EXPON_128 12287 #define DECIMAL_EXPONENT_BIAS_128 6176 #define MAX_FORMAT_DIGITS_128 34 ///////////////////////////////////////// // BID32 definitions //////////////////////////////////////// #define DECIMAL_MAX_EXPON_32 191 #define DECIMAL_EXPONENT_BIAS_32 101 #define MAX_FORMAT_DIGITS_32 7 //////////////////////////////////////// // Constant Definitions /////////////////////////////////////// #define SPECIAL_ENCODING_MASK64 0x6000000000000000ull #define INFINITY_MASK64 0x7800000000000000ull #define SINFINITY_MASK64 0xf800000000000000ull #define SSNAN_MASK64 0xfc00000000000000ull #define NAN_MASK64 0x7c00000000000000ull #define SNAN_MASK64 0x7e00000000000000ull #define QUIET_MASK64 0xfdffffffffffffffull #define LARGE_COEFF_MASK64 0x0007ffffffffffffull #define LARGE_COEFF_HIGH_BIT64 0x0020000000000000ull #define SMALL_COEFF_MASK64 0x001fffffffffffffull #define EXPONENT_MASK64 0x3ff #define EXPONENT_SHIFT_LARGE64 51 #define EXPONENT_SHIFT_SMALL64 53 #define LARGEST_BID64 0x77fb86f26fc0ffffull #define SMALLEST_BID64 0xf7fb86f26fc0ffffull #define SMALL_COEFF_MASK128 0x0001ffffffffffffull #define LARGE_COEFF_MASK128 0x00007fffffffffffull #define EXPONENT_MASK128 0x3fff #define LARGEST_BID128_HIGH 0x5fffed09bead87c0ull #define LARGEST_BID128_LOW 0x378d8e63ffffffffull #define SPECIAL_ENCODING_MASK32 0x60000000ul #define SINFINITY_MASK32 0xf8000000ul #define INFINITY_MASK32 0x78000000ul #define LARGE_COEFF_MASK32 0x007ffffful #define LARGE_COEFF_HIGH_BIT32 0x00800000ul #define SMALL_COEFF_MASK32 0x001ffffful #define EXPONENT_MASK32 0xff #define LARGEST_BID32 0x77f8967f #define NAN_MASK32 0x7c000000 #define SNAN_MASK32 0x7e000000 #define SSNAN_MASK32 0xfc000000 #define QUIET_MASK32 0xfdffffff #define MASK_BINARY_EXPONENT 0x7ff0000000000000ull #define BINARY_EXPONENT_BIAS 0x3ff #define UPPER_EXPON_LIMIT 51 // data needed for BID pack/unpack macros BID_EXTERN_C BID_UINT64 bid_round_const_table[][19]; BID_EXTERN_C BID_UINT128 bid_reciprocals10_128[]; BID_EXTERN_C int bid_recip_scale[]; BID_EXTERN_C BID_UINT128 bid_power10_table_128[]; BID_EXTERN_C int bid_estimate_decimal_digits[]; BID_EXTERN_C int bid_estimate_bin_expon[]; BID_EXTERN_C BID_UINT64 bid_power10_index_binexp[]; BID_EXTERN_C int bid_short_recip_scale[]; BID_EXTERN_C int bid_bid_bid_recip_scale32[]; BID_EXTERN_C BID_UINT64 bid_reciprocals10_64[]; BID_EXTERN_C BID_UINT64 bid_bid_reciprocals10_32[]; BID_EXTERN_C BID_UINT128 bid_power10_index_binexp_128[]; BID_EXTERN_C BID_UINT128 bid_round_const_table_128[][36]; ////////////////////////////////////////////// // Status Flag Handling ///////////////////////////////////////////// #define __set_status_flags(fpsc, status) *(fpsc) |= status #define is_inexact(fpsc) ((*(fpsc))&BID_INEXACT_EXCEPTION) __BID_INLINE__ BID_UINT64 unpack_BID64 (BID_UINT64 * psign_x, int *pexponent_x, BID_UINT64 * pcoefficient_x, BID_UINT64 x) { BID_UINT64 tmp, coeff; *psign_x = x & 0x8000000000000000ull; if ((x & SPECIAL_ENCODING_MASK64) == SPECIAL_ENCODING_MASK64) { // special encodings // coefficient coeff = (x & LARGE_COEFF_MASK64) | LARGE_COEFF_HIGH_BIT64; if ((x & INFINITY_MASK64) == INFINITY_MASK64) { *pexponent_x = 0; *pcoefficient_x = x & 0xfe03ffffffffffffull; if ((x & 0x0003ffffffffffffull) >= 1000000000000000ull) *pcoefficient_x = x & 0xfe00000000000000ull; if ((x & NAN_MASK64) == INFINITY_MASK64) *pcoefficient_x = x & SINFINITY_MASK64; return 0; // NaN or Infinity } // check for non-canonical values if (coeff >= 10000000000000000ull) coeff = 0; *pcoefficient_x = coeff; // get exponent tmp = x >> EXPONENT_SHIFT_LARGE64; *pexponent_x = (int) (tmp & EXPONENT_MASK64); return coeff; } // exponent tmp = x >> EXPONENT_SHIFT_SMALL64; *pexponent_x = (int) (tmp & EXPONENT_MASK64); // coefficient *pcoefficient_x = (x & SMALL_COEFF_MASK64); return *pcoefficient_x; } // // BID64 pack macro (general form) // __BID_INLINE__ BID_UINT64 get_BID64 (BID_UINT64 sgn, int expon, BID_UINT64 coeff, int rmode, unsigned *fpsc) { BID_UINT128 Stemp, Q_low; BID_UINT64 QH, r, mask, _C64, remainder_h, CY, carry; int extra_digits, amount, amount2; unsigned status; if (coeff > 9999999999999999ull) { expon++; coeff = 1000000000000000ull; } // check for possible underflow/overflow if (((unsigned) expon) >= 3 * 256) { if (expon < 0) { // underflow if (expon + MAX_FORMAT_DIGITS < 0) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == BID_ROUNDING_DOWN && sgn) return 0x8000000000000001ull; if (rmode == BID_ROUNDING_UP && !sgn) return 1ull; #endif #endif // result is 0 return sgn; } #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (sgn && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #endif #endif // get digits to be shifted out extra_digits = -expon; coeff += bid_round_const_table[rmode][extra_digits]; // get coeff*(2^M[extra_digits])/10^extra_digits __mul_64x128_full (QH, Q_low, coeff, bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; _C64 = QH >> amount; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if (_C64 & 1) { // check whether fractional part of initial_P/10^extra_digits is exactly .5 // get remainder amount2 = 64 - amount; remainder_h = 0; remainder_h--; remainder_h >>= amount2; remainder_h = remainder_h & QH; if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) { _C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS if (is_inexact (fpsc)) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION); else { status = BID_INEXACT_EXCEPTION; // get remainder remainder_h = QH << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (remainder_h == 0x8000000000000000ull && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], CY, Q_low.w[0], bid_reciprocals10_128[extra_digits].w[0]); __add_carry_in_out (Stemp.w[1], carry, Q_low.w[1], bid_reciprocals10_128[extra_digits].w[1], CY); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; } if (status != BID_EXACT_STATUS) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | status); } #endif return sgn | _C64; } if(!coeff) { if(expon > DECIMAL_MAX_EXPON_64) expon = DECIMAL_MAX_EXPON_64; } while (coeff < 1000000000000000ull && expon >= 3 * 256) { expon--; coeff = (coeff << 3) + (coeff << 1); } if (expon > DECIMAL_MAX_EXPON_64) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_OVERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif // overflow r = sgn | INFINITY_MASK64; switch (rmode) { case BID_ROUNDING_DOWN: if (!sgn) r = LARGEST_BID64; break; case BID_ROUNDING_TO_ZERO: r = sgn | LARGEST_BID64; break; case BID_ROUNDING_UP: // round up if (sgn) r = SMALLEST_BID64; default: break; } return r; } } mask = 1; mask <<= EXPONENT_SHIFT_SMALL64; // check whether coefficient fits in 10*5+3 bits if (coeff < mask) { r = expon; r <<= EXPONENT_SHIFT_SMALL64; r |= (coeff | sgn); return r; } // special format // eliminate the case coeff==10^16 after rounding if (coeff == 10000000000000000ull) { r = expon + 1; r <<= EXPONENT_SHIFT_SMALL64; r |= (1000000000000000ull | sgn); return r; } r = expon; r <<= EXPONENT_SHIFT_LARGE64; r |= (sgn | SPECIAL_ENCODING_MASK64); // add coeff, without leading bits mask = (mask >> 2) - 1; coeff &= mask; r |= coeff; return r; } // // No overflow/underflow checking // __BID_INLINE__ BID_UINT64 fast_get_BID64 (BID_UINT64 sgn, int expon, BID_UINT64 coeff) { BID_UINT64 r, mask; mask = 1; mask <<= EXPONENT_SHIFT_SMALL64; // check whether coefficient fits in 10*5+3 bits if (coeff < mask) { r = expon; r <<= EXPONENT_SHIFT_SMALL64; r |= (coeff | sgn); return r; } // special format // eliminate the case coeff==10^16 after rounding if (coeff == 10000000000000000ull) { r = expon + 1; r <<= EXPONENT_SHIFT_SMALL64; r |= (1000000000000000ull | sgn); return r; } r = expon; r <<= EXPONENT_SHIFT_LARGE64; r |= (sgn | SPECIAL_ENCODING_MASK64); // add coeff, without leading bits mask = (mask >> 2) - 1; coeff &= mask; r |= coeff; return r; } // // no underflow checking // __BID_INLINE__ BID_UINT64 fast_get_BID64_check_OF (BID_UINT64 sgn, int expon, BID_UINT64 coeff, int rmode, unsigned *fpsc) { BID_UINT64 r, mask; if (((unsigned) expon) >= 3 * 256 - 1) { if ((expon == 3 * 256 - 1) && coeff == 10000000000000000ull) { expon = 3 * 256; coeff = 1000000000000000ull; } if (((unsigned) expon) >= 3 * 256) { while (coeff < 1000000000000000ull && expon >= 3 * 256) { expon--; coeff = (coeff << 3) + (coeff << 1); } if (expon > DECIMAL_MAX_EXPON_64) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_OVERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif // overflow r = sgn | INFINITY_MASK64; switch (rmode) { case BID_ROUNDING_DOWN: if (!sgn) r = LARGEST_BID64; break; case BID_ROUNDING_TO_ZERO: r = sgn | LARGEST_BID64; break; case BID_ROUNDING_UP: // round up if (sgn) r = SMALLEST_BID64; default: break; } return r; } } } mask = 1; mask <<= EXPONENT_SHIFT_SMALL64; // check whether coefficient fits in 10*5+3 bits if (coeff < mask) { r = expon; r <<= EXPONENT_SHIFT_SMALL64; r |= (coeff | sgn); return r; } // special format // eliminate the case coeff==10^16 after rounding if (coeff == 10000000000000000ull) { r = expon + 1; r <<= EXPONENT_SHIFT_SMALL64; r |= (1000000000000000ull | sgn); return r; } r = expon; r <<= EXPONENT_SHIFT_LARGE64; r |= (sgn | SPECIAL_ENCODING_MASK64); // add coeff, without leading bits mask = (mask >> 2) - 1; coeff &= mask; r |= coeff; return r; } // // No overflow/underflow checking // or checking for coefficients equal to 10^16 (after rounding) // __BID_INLINE__ BID_UINT64 very_fast_get_BID64 (BID_UINT64 sgn, int expon, BID_UINT64 coeff) { BID_UINT64 r, mask; mask = 1; mask <<= EXPONENT_SHIFT_SMALL64; // check whether coefficient fits in 10*5+3 bits if (coeff < mask) { r = expon; r <<= EXPONENT_SHIFT_SMALL64; r |= (coeff | sgn); return r; } // special format r = expon; r <<= EXPONENT_SHIFT_LARGE64; r |= (sgn | SPECIAL_ENCODING_MASK64); // add coeff, without leading bits mask = (mask >> 2) - 1; coeff &= mask; r |= coeff; return r; } // // No overflow/underflow checking or checking for coefficients above 2^53 // __BID_INLINE__ BID_UINT64 very_fast_get_BID64_small_mantissa (BID_UINT64 sgn, int expon, BID_UINT64 coeff) { // no UF/OF BID_UINT64 r; r = expon; r <<= EXPONENT_SHIFT_SMALL64; r |= (coeff | sgn); return r; } // // This pack macro is used when underflow is known to occur // __BID_INLINE__ BID_UINT64 get_BID64_UF (BID_UINT64 sgn, int expon, BID_UINT64 coeff, BID_UINT64 R, int rmode, unsigned *fpsc) { BID_UINT128 C128, Q_low, Stemp; BID_UINT64 _C64, remainder_h, QH, carry, CY; int extra_digits, amount, amount2; unsigned status; // underflow if (expon + MAX_FORMAT_DIGITS < 0) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == BID_ROUNDING_DOWN && sgn) return 0x8000000000000001ull; if (rmode == BID_ROUNDING_UP && !sgn) return 1ull; #endif #endif // result is 0 return sgn; } // 10*coeff coeff = (coeff << 3) + (coeff << 1); #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (sgn && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #endif #endif if (R) coeff |= 1; // get digits to be shifted out extra_digits = 1 - expon; C128.w[0] = coeff + bid_round_const_table[rmode][extra_digits]; // get coeff*(2^M[extra_digits])/10^extra_digits __mul_64x128_full (QH, Q_low, C128.w[0], bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; _C64 = QH >> amount; //__shr_128(C128, Q_high, amount); #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if (_C64 & 1) { // check whether fractional part of initial_P/10^extra_digits is exactly .5 // get remainder amount2 = 64 - amount; remainder_h = 0; remainder_h--; remainder_h >>= amount2; remainder_h = remainder_h & QH; if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) { _C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS if (is_inexact (fpsc)) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION); else { status = BID_INEXACT_EXCEPTION; // get remainder remainder_h = QH << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (remainder_h == 0x8000000000000000ull && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], CY, Q_low.w[0], bid_reciprocals10_128[extra_digits].w[0]); __add_carry_in_out (Stemp.w[1], carry, Q_low.w[1], bid_reciprocals10_128[extra_digits].w[1], CY); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; } if (status != BID_EXACT_STATUS) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | status); } #endif return sgn | _C64; } // // This pack macro doesnot check for coefficients above 2^53 // __BID_INLINE__ BID_UINT64 get_BID64_small_mantissa (BID_UINT64 sgn, int expon, BID_UINT64 coeff, int rmode, unsigned *fpsc) { BID_UINT128 C128, Q_low, Stemp; BID_UINT64 r, mask, _C64, remainder_h, QH, carry, CY; int extra_digits, amount, amount2; unsigned status; // check for possible underflow/overflow if (((unsigned) expon) >= 3 * 256) { if (expon < 0) { // underflow if (expon + MAX_FORMAT_DIGITS < 0) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == BID_ROUNDING_DOWN && sgn) return 0x8000000000000001ull; if (rmode == BID_ROUNDING_UP && !sgn) return 1ull; #endif #endif // result is 0 return sgn; } #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (sgn && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #endif #endif // get digits to be shifted out extra_digits = -expon; C128.w[0] = coeff + bid_round_const_table[rmode][extra_digits]; // get coeff*(2^M[extra_digits])/10^extra_digits __mul_64x128_full (QH, Q_low, C128.w[0], bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; _C64 = QH >> amount; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if (_C64 & 1) { // check whether fractional part of initial_P/10^extra_digits is exactly .5 // get remainder amount2 = 64 - amount; remainder_h = 0; remainder_h--; remainder_h >>= amount2; remainder_h = remainder_h & QH; if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) { _C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS if (is_inexact (fpsc)) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION); else { status = BID_INEXACT_EXCEPTION; // get remainder remainder_h = QH << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (remainder_h == 0x8000000000000000ull && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], CY, Q_low.w[0], bid_reciprocals10_128[extra_digits].w[0]); __add_carry_in_out (Stemp.w[1], carry, Q_low.w[1], bid_reciprocals10_128[extra_digits].w[1], CY); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; } if (status != BID_EXACT_STATUS) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | status); } #endif return sgn | _C64; } while (coeff < 1000000000000000ull && expon >= 3 * 256) { expon--; coeff = (coeff << 3) + (coeff << 1); } if (expon > DECIMAL_MAX_EXPON_64) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_OVERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif // overflow r = sgn | INFINITY_MASK64; switch (rmode) { case BID_ROUNDING_DOWN: if (!sgn) r = LARGEST_BID64; break; case BID_ROUNDING_TO_ZERO: r = sgn | LARGEST_BID64; break; case BID_ROUNDING_UP: // round up if (sgn) r = SMALLEST_BID64; } return r; } else { mask = 1; mask <<= EXPONENT_SHIFT_SMALL64; if (coeff >= mask) { r = expon; r <<= EXPONENT_SHIFT_LARGE64; r |= (sgn | SPECIAL_ENCODING_MASK64); // add coeff, without leading bits mask = (mask >> 2) - 1; coeff &= mask; r |= coeff; return r; } } } r = expon; r <<= EXPONENT_SHIFT_SMALL64; r |= (coeff | sgn); return r; } /***************************************************************************** * * BID128 pack/unpack macros * *****************************************************************************/ // // Macro for handling BID128 underflow // sticky bit given as additional argument // __BID_INLINE__ BID_UINT128 * bid_handle_UF_128_rem (BID_UINT128 * pres, BID_UINT64 sgn, int expon, BID_UINT128 CQ, BID_UINT64 R, unsigned *prounding_mode, unsigned *fpsc) { BID_UINT128 T128, TP128, Qh, Ql, Qh1, Stemp, Tmp, Tmp1, CQ2, CQ8; BID_UINT64 carry, CY; int ed2, amount; unsigned rmode, status; // UF occurs if (expon + MAX_FORMAT_DIGITS_128 < 0) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif pres->w[1] = sgn; pres->w[0] = 0; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if ((sgn && *prounding_mode == BID_ROUNDING_DOWN) || (!sgn && *prounding_mode == BID_ROUNDING_UP)) pres->w[0] = 1ull; #endif #endif return pres; } // CQ *= 10 CQ2.w[1] = (CQ.w[1] << 1) | (CQ.w[0] >> 63); CQ2.w[0] = CQ.w[0] << 1; CQ8.w[1] = (CQ.w[1] << 3) | (CQ.w[0] >> 61); CQ8.w[0] = CQ.w[0] << 3; __add_128_128 (CQ, CQ2, CQ8); // add remainder if (R) CQ.w[0] |= 1; ed2 = 1 - expon; // add rounding constant to CQ #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = *prounding_mode; if (sgn && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif T128 = bid_round_const_table_128[rmode][ed2]; __add_carry_out (CQ.w[0], carry, T128.w[0], CQ.w[0]); CQ.w[1] = CQ.w[1] + T128.w[1] + carry; TP128 = bid_reciprocals10_128[ed2]; __mul_128x128_full (Qh, Ql, CQ, TP128); amount = bid_recip_scale[ed2]; if (amount >= 64) { CQ.w[0] = Qh.w[1] >> (amount - 64); CQ.w[1] = 0; } else { __shr_128 (CQ, Qh, amount); } expon = 0; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (!(*prounding_mode)) #endif if (CQ.w[0] & 1) { // check whether fractional part of initial_P/10^ed1 is exactly .5 // get remainder __shl_128_long (Qh1, Qh, (128 - amount)); if (!Qh1.w[1] && !Qh1.w[0] && (Ql.w[1] < bid_reciprocals10_128[ed2].w[1] || (Ql.w[1] == bid_reciprocals10_128[ed2].w[1] && Ql.w[0] < bid_reciprocals10_128[ed2].w[0]))) { CQ.w[0]--; } } #endif #ifdef BID_SET_STATUS_FLAGS if (is_inexact (fpsc)) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION); else { status = BID_INEXACT_EXCEPTION; // get remainder __shl_128_long (Qh1, Qh, (128 - amount)); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (Qh1.w[1] == 0x8000000000000000ull && (!Qh1.w[0]) && (Ql.w[1] < bid_reciprocals10_128[ed2].w[1] || (Ql.w[1] == bid_reciprocals10_128[ed2].w[1] && Ql.w[0] < bid_reciprocals10_128[ed2].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if ((!Qh1.w[1]) && (!Qh1.w[0]) && (Ql.w[1] < bid_reciprocals10_128[ed2].w[1] || (Ql.w[1] == bid_reciprocals10_128[ed2].w[1] && Ql.w[0] < bid_reciprocals10_128[ed2].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], CY, Ql.w[0], bid_reciprocals10_128[ed2].w[0]); __add_carry_in_out (Stemp.w[1], carry, Ql.w[1], bid_reciprocals10_128[ed2].w[1], CY); __shr_128_long (Qh, Qh1, (128 - amount)); Tmp.w[0] = 1; Tmp.w[1] = 0; __shl_128_long (Tmp1, Tmp, amount); Qh.w[0] += carry; if (Qh.w[0] < carry) Qh.w[1]++; if (__unsigned_compare_ge_128 (Qh, Tmp1)) status = BID_EXACT_STATUS; } if (status != BID_EXACT_STATUS) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | status); } #endif pres->w[1] = sgn | CQ.w[1]; pres->w[0] = CQ.w[0]; return pres; } // // Macro for handling BID128 underflow // __BID_INLINE__ BID_UINT128 * handle_UF_128 (BID_UINT128 * pres, BID_UINT64 sgn, int expon, BID_UINT128 CQ, unsigned *prounding_mode, unsigned *fpsc) { BID_UINT128 T128, TP128, Qh, Ql, Qh1, Stemp, Tmp, Tmp1; BID_UINT64 carry, CY; int ed2, amount; unsigned rmode, status; // UF occurs if (expon + MAX_FORMAT_DIGITS_128 < 0) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif pres->w[1] = sgn; pres->w[0] = 0; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if ((sgn && *prounding_mode == BID_ROUNDING_DOWN) || (!sgn && *prounding_mode == BID_ROUNDING_UP)) pres->w[0] = 1ull; #endif #endif return pres; } ed2 = 0 - expon; // add rounding constant to CQ #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = *prounding_mode; if (sgn && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif T128 = bid_round_const_table_128[rmode][ed2]; __add_carry_out (CQ.w[0], carry, T128.w[0], CQ.w[0]); CQ.w[1] = CQ.w[1] + T128.w[1] + carry; TP128 = bid_reciprocals10_128[ed2]; __mul_128x128_full (Qh, Ql, CQ, TP128); amount = bid_recip_scale[ed2]; if (amount >= 64) { CQ.w[0] = Qh.w[1] >> (amount - 64); CQ.w[1] = 0; } else { __shr_128 (CQ, Qh, amount); } expon = 0; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (!(*prounding_mode)) #endif if (CQ.w[0] & 1) { // check whether fractional part of initial_P/10^ed1 is exactly .5 // get remainder __shl_128_long (Qh1, Qh, (128 - amount)); if (!Qh1.w[1] && !Qh1.w[0] && (Ql.w[1] < bid_reciprocals10_128[ed2].w[1] || (Ql.w[1] == bid_reciprocals10_128[ed2].w[1] && Ql.w[0] < bid_reciprocals10_128[ed2].w[0]))) { CQ.w[0]--; } } #endif #ifdef BID_SET_STATUS_FLAGS if (is_inexact (fpsc)) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION); else { status = BID_INEXACT_EXCEPTION; // get remainder __shl_128_long (Qh1, Qh, (128 - amount)); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (Qh1.w[1] == 0x8000000000000000ull && (!Qh1.w[0]) && (Ql.w[1] < bid_reciprocals10_128[ed2].w[1] || (Ql.w[1] == bid_reciprocals10_128[ed2].w[1] && Ql.w[0] < bid_reciprocals10_128[ed2].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if ((!Qh1.w[1]) && (!Qh1.w[0]) && (Ql.w[1] < bid_reciprocals10_128[ed2].w[1] || (Ql.w[1] == bid_reciprocals10_128[ed2].w[1] && Ql.w[0] < bid_reciprocals10_128[ed2].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], CY, Ql.w[0], bid_reciprocals10_128[ed2].w[0]); __add_carry_in_out (Stemp.w[1], carry, Ql.w[1], bid_reciprocals10_128[ed2].w[1], CY); __shr_128_long (Qh, Qh1, (128 - amount)); Tmp.w[0] = 1; Tmp.w[1] = 0; __shl_128_long (Tmp1, Tmp, amount); Qh.w[0] += carry; if (Qh.w[0] < carry) Qh.w[1]++; if (__unsigned_compare_ge_128 (Qh, Tmp1)) status = BID_EXACT_STATUS; } if (status != BID_EXACT_STATUS) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | status); } #endif pres->w[1] = sgn | CQ.w[1]; pres->w[0] = CQ.w[0]; return pres; } // // BID128 unpack, input passed by value (used in transcendental functions only) // __BID_INLINE__ BID_UINT64 unpack_BID128_value_BLE (BID_UINT64 * psign_x, int *pexponent_x, BID_UINT128 * pcoefficient_x, BID_UINT128 x) { BID_UINT128 coeff, T33, T34; BID_UINT64 ex; *psign_x = (x.w[BID_HIGH_128W]) & 0x8000000000000000ull; // special encodings if ((x.w[BID_HIGH_128W] & INFINITY_MASK64) >= SPECIAL_ENCODING_MASK64) { if ((x.w[BID_HIGH_128W] & INFINITY_MASK64) < INFINITY_MASK64) { // non-canonical input pcoefficient_x->w[BID_LOW_128W] = 0; pcoefficient_x->w[BID_HIGH_128W] = 0; ex = (x.w[BID_HIGH_128W]) >> 47; *pexponent_x = ((int) ex) & EXPONENT_MASK128; return 0; } // 10^33 T33 = bid_power10_table_128[33]; pcoefficient_x->w[BID_LOW_128W] = x.w[BID_LOW_128W]; pcoefficient_x->w[BID_HIGH_128W] = (x.w[BID_HIGH_128W]) & 0x00003fffffffffffull; if ((pcoefficient_x->w[BID_HIGH_128W]>T33.w[1]) || ((pcoefficient_x->w[BID_HIGH_128W]==T33.w[1]) && (pcoefficient_x->w[BID_LOW_128W]>=T33.w[0]))) // non-canonical { pcoefficient_x->w[BID_HIGH_128W] = (x.w[BID_HIGH_128W]) & 0xfe00000000000000ull; pcoefficient_x->w[BID_LOW_128W] = 0; } else pcoefficient_x->w[BID_HIGH_128W] = (x.w[BID_HIGH_128W]) & 0xfe003fffffffffffull; if ((x.w[BID_HIGH_128W] & NAN_MASK64) == INFINITY_MASK64) { pcoefficient_x->w[BID_LOW_128W] = 0; pcoefficient_x->w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & SINFINITY_MASK64; } *pexponent_x = 0; return 0; // NaN or Infinity } coeff.w[BID_LOW_128W] = x.w[BID_LOW_128W]; coeff.w[BID_HIGH_128W] = (x.w[BID_HIGH_128W]) & SMALL_COEFF_MASK128; // 10^34 T34 = bid_power10_table_128[34]; // check for non-canonical values if ((coeff.w[BID_HIGH_128W]>T34.w[1]) || ((coeff.w[BID_HIGH_128W]==T34.w[1]) && (coeff.w[BID_LOW_128W]>=T34.w[0]))) { coeff.w[BID_LOW_128W] = coeff.w[BID_HIGH_128W] = 0;} pcoefficient_x->w[BID_LOW_128W] = coeff.w[BID_LOW_128W]; pcoefficient_x->w[BID_HIGH_128W] = coeff.w[BID_HIGH_128W]; ex = (x.w[BID_HIGH_128W]) >> 49; *pexponent_x = ((int) ex) & EXPONENT_MASK128; return coeff.w[BID_LOW_128W] | coeff.w[BID_HIGH_128W]; } // // BID128 unpack, input passed by value // __BID_INLINE__ BID_UINT64 unpack_BID128_value (BID_UINT64 * psign_x, int *pexponent_x, BID_UINT128 * pcoefficient_x, BID_UINT128 x) { BID_UINT128 coeff, T33, T34; BID_UINT64 ex; *psign_x = (x.w[1]) & 0x8000000000000000ull; // special encodings if ((x.w[1] & INFINITY_MASK64) >= SPECIAL_ENCODING_MASK64) { if ((x.w[1] & INFINITY_MASK64) < INFINITY_MASK64) { // non-canonical input pcoefficient_x->w[0] = 0; pcoefficient_x->w[1] = 0; ex = (x.w[1]) >> 47; *pexponent_x = ((int) ex) & EXPONENT_MASK128; return 0; } // 10^33 T33 = bid_power10_table_128[33]; /*coeff.w[0] = x.w[0]; coeff.w[1] = (x.w[1]) & LARGE_COEFF_MASK128; pcoefficient_x->w[0] = x.w[0]; pcoefficient_x->w[1] = x.w[1]; if (__unsigned_compare_ge_128 (coeff, T33)) // non-canonical pcoefficient_x->w[1] &= (~LARGE_COEFF_MASK128); */ pcoefficient_x->w[0] = x.w[0]; pcoefficient_x->w[1] = (x.w[1]) & 0x00003fffffffffffull; if (__unsigned_compare_ge_128 ((*pcoefficient_x), T33)) // non-canonical { pcoefficient_x->w[1] = (x.w[1]) & 0xfe00000000000000ull; pcoefficient_x->w[0] = 0; } else pcoefficient_x->w[1] = (x.w[1]) & 0xfe003fffffffffffull; if ((x.w[1] & NAN_MASK64) == INFINITY_MASK64) { pcoefficient_x->w[0] = 0; pcoefficient_x->w[1] = x.w[1] & SINFINITY_MASK64; } *pexponent_x = 0; return 0; // NaN or Infinity } coeff.w[0] = x.w[0]; coeff.w[1] = (x.w[1]) & SMALL_COEFF_MASK128; // 10^34 T34 = bid_power10_table_128[34]; // check for non-canonical values if (__unsigned_compare_ge_128 (coeff, T34)) coeff.w[0] = coeff.w[1] = 0; pcoefficient_x->w[0] = coeff.w[0]; pcoefficient_x->w[1] = coeff.w[1]; ex = (x.w[1]) >> 49; *pexponent_x = ((int) ex) & EXPONENT_MASK128; return coeff.w[0] | coeff.w[1]; } // // BID128 unpack, input passed by value // __BID_INLINE__ void quick_unpack_BID128_em (int *pexponent_x, BID_UINT128 * pcoefficient_x, BID_UINT128 x) { BID_UINT64 ex; pcoefficient_x->w[0] = x.w[0]; pcoefficient_x->w[1] = (x.w[1]) & SMALL_COEFF_MASK128; ex = (x.w[1]) >> 49; *pexponent_x = ((int) ex) & EXPONENT_MASK128; } // // BID128 unpack, input pased by reference // __BID_INLINE__ BID_UINT64 unpack_BID128 (BID_UINT64 * psign_x, int *pexponent_x, BID_UINT128 * pcoefficient_x, BID_UINT128 * px) { BID_UINT128 coeff, T33, T34; BID_UINT64 ex; *psign_x = (px->w[1]) & 0x8000000000000000ull; // special encodings if ((px->w[1] & INFINITY_MASK64) >= SPECIAL_ENCODING_MASK64) { if ((px->w[1] & INFINITY_MASK64) < INFINITY_MASK64) { // non-canonical input pcoefficient_x->w[0] = 0; pcoefficient_x->w[1] = 0; ex = (px->w[1]) >> 47; *pexponent_x = ((int) ex) & EXPONENT_MASK128; return 0; } // 10^33 T33 = bid_power10_table_128[33]; coeff.w[0] = px->w[0]; coeff.w[1] = (px->w[1]) & LARGE_COEFF_MASK128; pcoefficient_x->w[0] = px->w[0]; pcoefficient_x->w[1] = px->w[1]; if (__unsigned_compare_ge_128 (coeff, T33)) { // non-canonical pcoefficient_x->w[1] &= (~LARGE_COEFF_MASK128); pcoefficient_x->w[0] = 0; } *pexponent_x = 0; return 0; // NaN or Infinity } coeff.w[0] = px->w[0]; coeff.w[1] = (px->w[1]) & SMALL_COEFF_MASK128; // 10^34 T34 = bid_power10_table_128[34]; // check for non-canonical values if (__unsigned_compare_ge_128 (coeff, T34)) coeff.w[0] = coeff.w[1] = 0; pcoefficient_x->w[0] = coeff.w[0]; pcoefficient_x->w[1] = coeff.w[1]; ex = (px->w[1]) >> 49; *pexponent_x = ((int) ex) & EXPONENT_MASK128; return coeff.w[0] | coeff.w[1]; } // // Pack macro checks for overflow, but not underflow // __BID_INLINE__ BID_UINT128 * bid_get_BID128_very_fast_OF (BID_UINT128 * pres, BID_UINT64 sgn, int expon, BID_UINT128 coeff, unsigned *prounding_mode, unsigned *fpsc) { BID_UINT128 T; BID_UINT64 tmp, tmp2; if ((unsigned) expon > DECIMAL_MAX_EXPON_128) { if (expon - MAX_FORMAT_DIGITS_128 <= DECIMAL_MAX_EXPON_128) { T = bid_power10_table_128[MAX_FORMAT_DIGITS_128 - 1]; while (__unsigned_compare_gt_128 (T, coeff) && expon > DECIMAL_MAX_EXPON_128) { coeff.w[1] = (coeff.w[1] << 3) + (coeff.w[1] << 1) + (coeff.w[0] >> 61) + (coeff.w[0] >> 63); tmp2 = coeff.w[0] << 3; coeff.w[0] = (coeff.w[0] << 1) + tmp2; if (coeff.w[0] < tmp2) coeff.w[1]++; expon--; } } if ((unsigned) expon > DECIMAL_MAX_EXPON_128) { // OF #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_OVERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (*prounding_mode == BID_ROUNDING_TO_ZERO || (sgn && *prounding_mode == BID_ROUNDING_UP) || (!sgn && *prounding_mode == BID_ROUNDING_DOWN)) { pres->w[1] = sgn | LARGEST_BID128_HIGH; pres->w[0] = LARGEST_BID128_LOW; } else #endif #endif { pres->w[1] = sgn | INFINITY_MASK64; pres->w[0] = 0; } return pres; } } pres->w[0] = coeff.w[0]; tmp = expon; tmp <<= 49; pres->w[1] = sgn | tmp | coeff.w[1]; return pres; } // // No overflow/underflow checks // No checking for coefficient == 10^34 (rounding artifact) // __BID_INLINE__ BID_UINT128 * bid_get_BID128_very_fast (BID_UINT128 * pres, BID_UINT64 sgn, int expon, BID_UINT128 coeff) { BID_UINT64 tmp; pres->w[0] = coeff.w[0]; tmp = expon; tmp <<= 49; pres->w[1] = sgn | tmp | coeff.w[1]; return pres; } // same as above, but for either endian mode __BID_INLINE__ BID_UINT128 * bid_get_BID128_very_fast_BLE (BID_UINT128 * pres, BID_UINT64 sgn, int expon, BID_UINT128 coeff) { BID_UINT64 tmp; pres->w[BID_LOW_128W] = coeff.w[BID_LOW_128W]; tmp = expon; tmp <<= 49; pres->w[BID_HIGH_128W] = sgn | tmp | coeff.w[BID_HIGH_128W]; return pres; } // // No overflow/underflow checks // __BID_INLINE__ BID_UINT128 * bid_get_BID128_fast (BID_UINT128 * pres, BID_UINT64 sgn, int expon, BID_UINT128 coeff) { BID_UINT64 tmp; // coeff==10^34? if (coeff.w[1] == 0x0001ed09bead87c0ull && coeff.w[0] == 0x378d8e6400000000ull) { expon++; // set coefficient to 10^33 coeff.w[1] = 0x0000314dc6448d93ull; coeff.w[0] = 0x38c15b0a00000000ull; } pres->w[0] = coeff.w[0]; tmp = expon; tmp <<= 49; pres->w[1] = sgn | tmp | coeff.w[1]; return pres; } // // General BID128 pack macro // __BID_INLINE__ BID_UINT128 * bid_get_BID128 (BID_UINT128 * pres, BID_UINT64 sgn, int expon, BID_UINT128 coeff, unsigned *prounding_mode, unsigned *fpsc) { BID_UINT128 T; BID_UINT64 tmp, tmp2; // coeff==10^34? if (coeff.w[1] == 0x0001ed09bead87c0ull && coeff.w[0] == 0x378d8e6400000000ull) { expon++; // set coefficient to 10^33 coeff.w[1] = 0x0000314dc6448d93ull; coeff.w[0] = 0x38c15b0a00000000ull; } // check OF, UF if (expon < 0 || expon > DECIMAL_MAX_EXPON_128) { // check UF if (expon < 0) { return handle_UF_128 (pres, sgn, expon, coeff, prounding_mode, fpsc); } if (expon - MAX_FORMAT_DIGITS_128 <= DECIMAL_MAX_EXPON_128) { T = bid_power10_table_128[MAX_FORMAT_DIGITS_128 - 1]; while (__unsigned_compare_gt_128 (T, coeff) && expon > DECIMAL_MAX_EXPON_128) { coeff.w[1] = (coeff.w[1] << 3) + (coeff.w[1] << 1) + (coeff.w[0] >> 61) + (coeff.w[0] >> 63); tmp2 = coeff.w[0] << 3; coeff.w[0] = (coeff.w[0] << 1) + tmp2; if (coeff.w[0] < tmp2) coeff.w[1]++; expon--; } } if (expon > DECIMAL_MAX_EXPON_128) { if (!(coeff.w[1] | coeff.w[0])) { pres->w[1] = sgn | (((BID_UINT64) DECIMAL_MAX_EXPON_128) << 49); pres->w[0] = 0; return pres; } // OF #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_OVERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (*prounding_mode == BID_ROUNDING_TO_ZERO || (sgn && *prounding_mode == BID_ROUNDING_UP) || (!sgn && *prounding_mode == BID_ROUNDING_DOWN)) { pres->w[1] = sgn | LARGEST_BID128_HIGH; pres->w[0] = LARGEST_BID128_LOW; } else #endif #endif { pres->w[1] = sgn | INFINITY_MASK64; pres->w[0] = 0; } return pres; } } pres->w[0] = coeff.w[0]; tmp = expon; tmp <<= 49; pres->w[1] = sgn | tmp | coeff.w[1]; return pres; } // // Macro used for conversions from string // (no additional arguments given for rounding mode, status flags) // __BID_INLINE__ BID_UINT128 * bid_get_BID128_string (BID_UINT128 * pres, BID_UINT64 sgn, int expon, BID_UINT128 coeff) { BID_UINT128 D2, D8; BID_UINT64 tmp; unsigned rmode = 0, status; // coeff==10^34? if (coeff.w[1] == 0x0001ed09bead87c0ull && coeff.w[0] == 0x378d8e6400000000ull) { expon++; // set coefficient to 10^33 coeff.w[1] = 0x0000314dc6448d93ull; coeff.w[0] = 0x38c15b0a00000000ull; } // check OF, UF if ((unsigned) expon > DECIMAL_MAX_EXPON_128) { // check UF if (expon < 0) return handle_UF_128 (pres, sgn, expon, coeff, &rmode, &status); // OF if (expon < DECIMAL_MAX_EXPON_128 + 34) { while (expon > DECIMAL_MAX_EXPON_128 && (coeff.w[1] < bid_power10_table_128[33].w[1] || (coeff.w[1] == bid_power10_table_128[33].w[1] && coeff.w[0] < bid_power10_table_128[33].w[0]))) { D2.w[1] = (coeff.w[1] << 1) | (coeff.w[0] >> 63); D2.w[0] = coeff.w[0] << 1; D8.w[1] = (coeff.w[1] << 3) | (coeff.w[0] >> 61); D8.w[0] = coeff.w[0] << 3; __add_128_128 (coeff, D2, D8); expon--; } } else if (!(coeff.w[0] | coeff.w[1])) expon = DECIMAL_MAX_EXPON_128; if (expon > DECIMAL_MAX_EXPON_128) { pres->w[1] = sgn | INFINITY_MASK64; pres->w[0] = 0; switch (rmode) { case BID_ROUNDING_DOWN: if (!sgn) { pres->w[1] = LARGEST_BID128_HIGH; pres->w[0] = LARGEST_BID128_LOW; } break; case BID_ROUNDING_TO_ZERO: pres->w[1] = sgn | LARGEST_BID128_HIGH; pres->w[0] = LARGEST_BID128_LOW; break; case BID_ROUNDING_UP: // round up if (sgn) { pres->w[1] = sgn | LARGEST_BID128_HIGH; pres->w[0] = LARGEST_BID128_LOW; } break; } return pres; } } pres->w[0] = coeff.w[0]; tmp = expon; tmp <<= 49; pres->w[1] = sgn | tmp | coeff.w[1]; return pres; } /***************************************************************************** * * BID32 pack/unpack macros * *****************************************************************************/ __BID_INLINE__ BID_UINT32 unpack_BID32 (BID_UINT32 * psign_x, int *pexponent_x, BID_UINT32 * pcoefficient_x, BID_UINT32 x) { BID_UINT32 tmp; *psign_x = x & 0x80000000; if ((x & SPECIAL_ENCODING_MASK32) == SPECIAL_ENCODING_MASK32) { // special encodings if ((x & INFINITY_MASK32) == INFINITY_MASK32) { *pcoefficient_x = x & 0xfe0fffff; if ((x & 0x000fffff) >= 1000000) *pcoefficient_x = x & 0xfe000000; if ((x & NAN_MASK32) == INFINITY_MASK32) *pcoefficient_x = x & 0xf8000000; *pexponent_x = 0; return 0; // NaN or Infinity } // coefficient *pcoefficient_x = (x & SMALL_COEFF_MASK32) | LARGE_COEFF_HIGH_BIT32; // check for non-canonical value if (*pcoefficient_x >= 10000000) *pcoefficient_x = 0; // get exponent tmp = x >> 21; *pexponent_x = tmp & EXPONENT_MASK32; return *pcoefficient_x; } // exponent tmp = x >> 23; *pexponent_x = tmp & EXPONENT_MASK32; // coefficient *pcoefficient_x = (x & LARGE_COEFF_MASK32); return *pcoefficient_x; } // // General pack macro for BID32 // __BID_INLINE__ BID_UINT32 get_BID32 (BID_UINT32 sgn, int expon, BID_UINT64 coeff, int rmode, unsigned *fpsc) { BID_UINT128 Q; BID_UINT64 _C64, remainder_h, carry, Stemp; BID_UINT32 r, mask; int extra_digits, amount, amount2; unsigned status; if (coeff > 9999999ull) { expon++; coeff = 1000000ull; } // check for possible underflow/overflow if (((unsigned) expon) > DECIMAL_MAX_EXPON_32) { if (expon < 0) { // underflow if (expon + MAX_FORMAT_DIGITS_32 < 0) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == BID_ROUNDING_DOWN && sgn) return 0x80000001; if (rmode == BID_ROUNDING_UP && !sgn) return 1; #endif #endif // result is 0 return sgn; } // get digits to be shifted out #ifdef IEEE_ROUND_NEAREST_TIES_AWAY rmode = 0; #endif #ifdef IEEE_ROUND_NEAREST rmode = 0; #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (sgn && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #endif #endif extra_digits = -expon; coeff += bid_round_const_table[rmode][extra_digits]; // get coeff*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (Q, coeff, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; _C64 = Q.w[1] >> amount; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if (_C64 & 1) { // check whether fractional part of initial_P/10^extra_digits is exactly .5 // get remainder amount2 = 64 - amount; remainder_h = 0; remainder_h--; remainder_h >>= amount2; remainder_h = remainder_h & Q.w[1]; if (!remainder_h && (Q.w[0] < bid_reciprocals10_64[extra_digits])) { _C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS if (is_inexact (fpsc)) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION); else { status = BID_INEXACT_EXCEPTION; // get remainder remainder_h = Q.w[1] << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (remainder_h == 0x8000000000000000ull && (Q.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (Q.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp, carry, Q.w[0], bid_reciprocals10_64[extra_digits]); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; } if (status != BID_EXACT_STATUS) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | status); } #endif return sgn | (BID_UINT32) _C64; } if(!coeff) { if(expon > DECIMAL_MAX_EXPON_32) expon = DECIMAL_MAX_EXPON_32; } while (coeff < 1000000 && expon > DECIMAL_MAX_EXPON_32) { coeff = (coeff << 3) + (coeff << 1); expon--; } if (((unsigned) expon) > DECIMAL_MAX_EXPON_32) { __set_status_flags (fpsc, BID_OVERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); // overflow r = sgn | INFINITY_MASK32; switch (rmode) { case BID_ROUNDING_DOWN: if (!sgn) r = LARGEST_BID32; break; case BID_ROUNDING_TO_ZERO: r = sgn | LARGEST_BID32; break; case BID_ROUNDING_UP: // round up if (sgn) r = sgn | LARGEST_BID32; } return r; } } mask = 1 << 23; // check whether coefficient fits in DECIMAL_COEFF_FIT bits if (coeff < mask) { r = expon; r <<= 23; r |= ((BID_UINT32) coeff | sgn); return r; } // special format r = expon; r <<= 21; r |= (sgn | SPECIAL_ENCODING_MASK32); // add coeff, without leading bits mask = (1 << 21) - 1; r |= (((BID_UINT32) coeff) & mask); return r; } // // General pack macro for BID32 // __BID_INLINE__ BID_UINT32 get_BID32_UF (BID_UINT32 sgn, int expon, BID_UINT64 coeff, BID_UINT32 R, int rmode, unsigned *fpsc) { BID_UINT128 Q; BID_UINT64 _C64, remainder_h, carry, Stemp; BID_UINT32 r, mask; int extra_digits, amount, amount2; unsigned status; if (coeff > 9999999ull) { expon++; coeff = 1000000ull; } // check for possible underflow/overflow if (((unsigned) expon) > DECIMAL_MAX_EXPON_32) { if (expon < 0) { // underflow if (expon + MAX_FORMAT_DIGITS_32 < 0) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == BID_ROUNDING_DOWN && sgn) return 0x80000001; if (rmode == BID_ROUNDING_UP && !sgn) return 1; #endif #endif // result is 0 return sgn; } // get digits to be shifted out #ifdef IEEE_ROUND_NEAREST_TIES_AWAY rmode = 0; #endif #ifdef IEEE_ROUND_NEAREST rmode = 0; #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (sgn && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #endif #endif // 10*coeff coeff = (coeff << 3) + (coeff << 1); if (R) coeff |= 1; extra_digits = 1-expon; coeff += bid_round_const_table[rmode][extra_digits]; // get coeff*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (Q, coeff, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; _C64 = Q.w[1] >> amount; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if (_C64 & 1) { // check whether fractional part of initial_P/10^extra_digits is exactly .5 // get remainder amount2 = 64 - amount; remainder_h = 0; remainder_h--; remainder_h >>= amount2; remainder_h = remainder_h & Q.w[1]; if (!remainder_h && (Q.w[0] < bid_reciprocals10_64[extra_digits])) { _C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS if (is_inexact (fpsc)){ __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION);} else { status = BID_INEXACT_EXCEPTION; // get remainder remainder_h = Q.w[1] << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (remainder_h == 0x8000000000000000ull && (Q.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (Q.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp, carry, Q.w[0], bid_reciprocals10_64[extra_digits]); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; } if (status != BID_EXACT_STATUS) { __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION|status); } } #endif return sgn | (BID_UINT32) _C64; } while (coeff < 1000000 && expon > DECIMAL_MAX_EXPON_32) { coeff = (coeff << 3) + (coeff << 1); expon--; } if (((unsigned) expon) > DECIMAL_MAX_EXPON_32) { __set_status_flags (fpsc, BID_OVERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); // overflow r = sgn | INFINITY_MASK32; switch (rmode) { case BID_ROUNDING_DOWN: if (!sgn) r = LARGEST_BID32; break; case BID_ROUNDING_TO_ZERO: r = sgn | LARGEST_BID32; break; case BID_ROUNDING_UP: // round up if (sgn) r = sgn | LARGEST_BID32; } return r; } } mask = 1 << 23; // check whether coefficient fits in DECIMAL_COEFF_FIT bits if (coeff < mask) { r = expon; r <<= 23; r |= ((BID_UINT32) coeff | sgn); return r; } // special format r = expon; r <<= 21; r |= (sgn | SPECIAL_ENCODING_MASK32); // add coeff, without leading bits mask = (1 << 21) - 1; r |= (((BID_UINT32) coeff) & mask); return r; } // // no overflow/underflow checks // __BID_INLINE__ BID_UINT32 very_fast_get_BID32 (BID_UINT32 sgn, int expon, BID_UINT32 coeff) { BID_UINT32 r, mask; mask = 1 << 23; // check whether coefficient fits in 10*2+3 bits if (coeff < mask) { r = expon; r <<= 23; r |= (coeff | sgn); return r; } // special format r = expon; r <<= 21; r |= (sgn | SPECIAL_ENCODING_MASK32); // add coeff, without leading bits mask = (1 << 21) - 1; coeff &= mask; r |= coeff; return r; } __BID_INLINE__ BID_UINT32 fast_get_BID32 (BID_UINT32 sgn, int expon, BID_UINT32 coeff) { BID_UINT32 r, mask; mask = 1 << 23; if (coeff > 9999999ul) { expon++; coeff = 1000000ul; } // check whether coefficient fits in 10*2+3 bits if (coeff < mask) { r = expon; r <<= 23; r |= (coeff | sgn); return r; } // special format r = expon; r <<= 21; r |= (sgn | SPECIAL_ENCODING_MASK32); // add coeff, without leading bits mask = (1 << 21) - 1; coeff &= mask; r |= coeff; return r; } /************************************************************* * *************************************************************/ typedef struct BID_ALIGN (16) { BID_UINT64 w[6]; } BID_UINT384; typedef struct BID_ALIGN (16) { BID_UINT64 w[8]; } BID_UINT512; // #define P 34 #define MASK_STEERING_BITS 0x6000000000000000ull #define MASK_BINARY_EXPONENT1 0x7fe0000000000000ull #define MASK_BINARY_SIG1 0x001fffffffffffffull #define MASK_BINARY_EXPONENT2 0x1ff8000000000000ull //used to take G[2:w+3] (sec 3.3) #define MASK_BINARY_SIG2 0x0007ffffffffffffull //used to mask out G4:T0 (sec 3.3) #define MASK_BINARY_OR2 0x0020000000000000ull //used to prefix 8+G4 to T (sec 3.3) #define UPPER_EXPON_LIMIT 51 #define MASK_EXP 0x7ffe000000000000ull #define MASK_EXP2 0x1fff800000000000ull #define MASK_SPECIAL 0x7800000000000000ull #define MASK_NAN 0x7c00000000000000ull #define MASK_SNAN 0x7e00000000000000ull #define MASK_ANY_INF 0x7c00000000000000ull #define MASK_INF 0x7800000000000000ull #define MASK_SIGN 0x8000000000000000ull #define MASK_COEFF 0x0001ffffffffffffull #define BIN_EXP_BIAS (0x1820ull << 49) #define EXP_MIN32 0x00000000 #define EXP_MAX32 0x5f800000 #define EXP_MIN 0x0000000000000000ull // EXP_MIN = (-6176 + 6176) << 49 #define EXP_MAX 0x5ffe000000000000ull // EXP_MAX = (6111 + 6176) << 49 #define EXP_MAX_P1 0x6000000000000000ull // EXP_MAX + 1 = (6111 + 6176 + 1) << 49 #define EXP_P1 0x0002000000000000ull // EXP_ P1= 1 << 49 #define expmin -6176 // min unbiased exponent #define expmax 6111 // max unbiased exponent #define expmin16 -398 // min unbiased exponent #define expmax16 369 // max unbiased exponent #define expmin7 -101 // min unbiased exponent #define expmax7 90 // max unbiased exponent #define MASK_INF32 0x78000000 #define MASK_ANY_INF32 0x7c000000 #define MASK_SIGN32 0x80000000 #define MASK_NAN32 0x7c000000 #define MASK_SNAN32 0x7e000000 #define SIGNMASK32 0x80000000 #define BID32_SIG_MAX 0x0098967f #define BID64_SIG_MAX 0x002386F26FC0ffffull #define SIGNMASK64 0x8000000000000000ull #define MASK_STEERING_BITS32 0x60000000 #define MASK_BINARY_EXPONENT1_32 0x7f800000 #define MASK_BINARY_SIG1_32 0x007fffff #define MASK_BINARY_EXPONENT2_32 0x1fe00000 //used to take G[2:w+3] (sec 3.3) #define MASK_BINARY_SIG2_32 0x001fffff //used to mask out G4:T0 (sec 3.3) #define MASK_BINARY_OR2_32 0x00800000 #define MASK_SPECIAL32 0x78000000 // typedef unsigned int BID_FPSC; // floating-point status and control // bit31: // bit30: // bit29: // bit28: // bit27: // bit26: // bit25: // bit24: // bit23: // bit22: // bit21: // bit20: // bit19: // bit18: // bit17: // bit16: // bit15: // bit14: RC:2 // bit13: RC:1 // bit12: RC:0 // bit11: PM // bit10: UM // bit9: OM // bit8: ZM // bit7: DM // bit6: IM // bit5: PE // bit4: UE // bit3: OE // bit2: ZE // bit1: DE // bit0: IE #define ROUNDING_BID_MODE_MASK 0x00007000 typedef struct _DEC_DIGITS { unsigned int digits; BID_UINT64 threshold_hi; BID_UINT64 threshold_lo; unsigned int digits1; } DEC_DIGITS; BID_EXTERN_C DEC_DIGITS bid_nr_digits[]; BID_EXTERN_C BID_UINT64 bid_midpoint64[]; BID_EXTERN_C BID_UINT128 bid_midpoint128[]; BID_EXTERN_C BID_UINT192 bid_midpoint192[]; BID_EXTERN_C BID_UINT256 bid_midpoint256[]; BID_EXTERN_C BID_UINT64 bid_ten2k64[]; BID_EXTERN_C BID_UINT128 bid_ten2k128[]; BID_EXTERN_C BID_UINT256 bid_ten2k256[]; BID_EXTERN_C BID_UINT128 bid_ten2mk128[]; BID_EXTERN_C BID_UINT64 bid_ten2mk64[]; BID_EXTERN_C BID_UINT128 bid_ten2mk128trunc[]; BID_EXTERN_C int bid_shiftright128[]; BID_EXTERN_C BID_UINT64 bid_maskhigh128[]; BID_EXTERN_C BID_UINT64 bid_maskhigh128M[]; BID_EXTERN_C BID_UINT64 bid_maskhigh192M[]; BID_EXTERN_C BID_UINT64 bid_maskhigh256M[]; BID_EXTERN_C BID_UINT64 bid_onehalf128[]; BID_EXTERN_C BID_UINT64 bid_onehalf128M[]; BID_EXTERN_C BID_UINT64 bid_onehalf192M[]; BID_EXTERN_C BID_UINT64 bid_onehalf256M[]; BID_EXTERN_C BID_UINT128 bid_ten2mk128M[]; BID_EXTERN_C BID_UINT128 bid_ten2mk128truncM[]; BID_EXTERN_C BID_UINT192 bid_ten2mk192truncM[]; BID_EXTERN_C BID_UINT256 bid_ten2mk256truncM[]; BID_EXTERN_C int bid_shiftright128M[]; BID_EXTERN_C int bid_shiftright192M[]; BID_EXTERN_C int bid_shiftright256M[]; BID_EXTERN_C BID_UINT192 bid_ten2mk192M[]; BID_EXTERN_C BID_UINT256 bid_ten2mk256M[]; BID_EXTERN_C unsigned char bid_char_table2[]; BID_EXTERN_C unsigned char bid_char_table3[]; BID_EXTERN_C BID_UINT64 bid_ten2m3k64[]; BID_EXTERN_C unsigned int bid_shift_ten2m3k64[]; BID_EXTERN_C BID_UINT128 bid_ten2m3k128[]; BID_EXTERN_C unsigned int bid_shift_ten2m3k128[]; /*************************************************************************** *************** TABLES FOR GENERAL ROUNDING FUNCTIONS ********************* ***************************************************************************/ BID_EXTERN_C BID_UINT64 bid_Kx64[]; BID_EXTERN_C unsigned int bid_Ex64m64[]; BID_EXTERN_C BID_UINT64 bid_half64[]; BID_EXTERN_C BID_UINT64 bid_mask64[]; BID_EXTERN_C BID_UINT64 bid_ten2mxtrunc64[]; BID_EXTERN_C BID_UINT128 bid_Kx128[]; BID_EXTERN_C unsigned int bid_Ex128m128[]; BID_EXTERN_C BID_UINT64 bid_half128[]; BID_EXTERN_C BID_UINT64 bid_mask128[]; BID_EXTERN_C BID_UINT128 bid_ten2mxtrunc128[]; BID_EXTERN_C BID_UINT192 bid_Kx192[]; BID_EXTERN_C unsigned int bid_Ex192m192[]; BID_EXTERN_C BID_UINT64 bid_half192[]; BID_EXTERN_C BID_UINT64 bid_mask192[]; BID_EXTERN_C BID_UINT192 bid_ten2mxtrunc192[]; BID_EXTERN_C BID_UINT256 bid_Kx256[]; BID_EXTERN_C unsigned int bid_Ex256m256[]; BID_EXTERN_C BID_UINT64 bid_half256[]; BID_EXTERN_C BID_UINT64 bid_mask256[]; BID_EXTERN_C BID_UINT256 bid_ten2mxtrunc256[]; typedef union BID_ALIGN (16) __bid64_128 { BID_UINT64 b64; BID_UINT128 b128; } BID64_128; BID64_128 bid_fma (unsigned int P0, BID64_128 x1, unsigned int P1, BID64_128 y1, unsigned int P2, BID64_128 z1, unsigned int P3, unsigned int rnd_mode, BID_FPSC * fpsc); #define P7 7 #define P16 16 #define P34 34 union __int_double { BID_UINT64 i; double d; }; typedef union __int_double int_double; union __int_float { BID_UINT32 i; float d; }; typedef union __int_float int_float; #define SWAP(A,B,T) {\ T = A; \ A = B; \ B = T; \ } // this macro will find coefficient_x to be in [2^A, 2^(A+1) ) // ie it knows that it is A bits long #define NUMBITS(A, coefficient_x, tempx){\ temp_x.d=(float)coefficient_x;\ A=((tempx.i >>23) & EXPONENT_MASK32) - 0x7f;\ } typedef union { BID_UINT32 ui32; float f; } BID_UI32FLOAT; typedef union { BID_UINT64 ui64; double d; } BID_UI64DOUBLE; ////////////////////////////////////////////////// // Macros for raising exceptions / setting flags ///////////////////////////////////////////////// #define bid_raise_except(x) __set_status_flags (pfpsf, (x)) #define get_bid_sw() (*pfpsf) #define set_bid_sw(x) (*pfpsf) = (x) #endif LIBRARY/src/bid128_to_int64.c0000644€­ Q01134020000032620515113665770014531 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" /***************************************************************************** * BID128_to_int64_rnint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_SINT64, bid128_to_int64_rnint, x) BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 5*(2^64+1), 1<=q<=34 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000005, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0000000000000005ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64-1), 1<=q<=34 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=34 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } } // n is not too large to be converted to int64: -2^63-1/2 <= n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point // Restore C1 which may have been modified above C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] <= bid_midpoint64[ind])) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] <= bid_midpoint128[ind - 19].w[0]))) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } } else { // if (1 <= q + exp <= 19, 1 <= q <= 34, -33 <= exp <= 18) // -2^63-1/2 <= x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 19 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp>0) => 1 <= exp <= 18, 1 <= q < 18, 2 <= q + exp <= 19 // res = +/-C * 10^exp (exact) where this fits in 64-bit integer if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int64_xrnint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_SINT64, bid128_to_int64_xrnint, x) BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 5*(2^64+1), 1<=q<=34 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000005, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0000000000000005ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64-1), 1<=q<=34 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=34 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } } // n is not too large to be converted to int64: -2^63-1/2 <= n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point // Restore C1 which may have been modified above C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] <= bid_midpoint64[ind])) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] <= bid_midpoint128[ind - 19].w[0]))) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 19, 1 <= q <= 34, -33 <= exp <= 18) // -2^63-1/2 <= x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 19 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp>0) => 1 <= exp <= 18, 1 <= q < 18, 2 <= q + exp <= 19 // res = +/-C * 10^exp (exact) where this fits in 64-bit integer if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int64_floor ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_SINT64, bid128_to_int64_floor, x) BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 10*2^63, 1<=q<=34 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000000, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*2^64, 1<=q<=34 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } } // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point // Restore C1 which may have been modified above C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return -1 or 0 if (x_sign) res = 0xffffffffffffffffull; else res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 34, -33 <= exp <= 18) // -2^63 <= x <= -1 or 1 <= x < 2^63 so x can be rounded // toward zero to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result is negative and inexact, need to add 1 to it // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } } // else the result is exact } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } } // else the result is exact } else { // if 22 <= ind <= 33 if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } } // else the result is exact } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 19 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp>0) => 1 <= exp <= 18, 1 <= q < 18, 2 <= q + exp <= 19 // res = +/-C * 10^exp (exact) where this fits in 64-bit integer if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int64_xfloor ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_SINT64, bid128_to_int64_xfloor, x) BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 10*2^63, 1<=q<=34 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000000, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*2^64, 1<=q<=34 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } } // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point // Restore C1 which may have been modified above C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return -1 or 0 if (x_sign) res = 0xffffffffffffffffull; else res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 34, -33 <= exp <= 18) // -2^63 <= x <= -1 or 1 <= x < 2^63 so x can be rounded // toward zero to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result is negative and inexact, need to add 1 to it // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 22 <= ind <= 33 if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 19 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp>0) => 1 <= exp <= 18, 1 <= q < 18, 2 <= q + exp <= 19 // res = +/-C * 10^exp (exact) where this fits in 64-bit integer if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int64_ceil ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_SINT64, bid128_to_int64_ceil, x) BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 5*(2^64+2), 1<=q<=34 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x5000000000000000a, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x000000000000000aull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n > 2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63 - 1 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 > 10*(2^63-1), 1<=q<=34 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 > 0x4fffffffffffffff6, 1<=q<=34 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffff6ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } } // n is not too large to be converted to int64: -2^63-1 < n <= 2^63 - 1 // Note: some of the cases tested for above fall through to this point // Restore C1 which may have been modified above C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 or 1 if (x_sign) res = 0x0000000000000000ull; else res = 0x0000000000000001ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 34, -33 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x <= 2^63 - 1 so x can be rounded // up to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result is positive and inexact, need to add 1 to it // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } } // else the result is exact } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } } // else the result is exact } else { // if 22 <= ind <= 33 if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } } // else the result is exact } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 19 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp>0) => 1 <= exp <= 18, 1 <= q < 18, 2 <= q + exp <= 19 // res = +/-C * 10^exp (exact) where this fits in 64-bit integer if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int64_xceil ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_SINT64, bid128_to_int64_xceil, x) BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 5*(2^64+2), 1<=q<=34 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x5000000000000000a, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x000000000000000aull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n > 2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63 - 1 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 > 10*(2^63-1), 1<=q<=34 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 > 0x4fffffffffffffff6, 1<=q<=34 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffff6ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } } // n is not too large to be converted to int64: -2^63-1 < n <= 2^63 - 1 // Note: some of the cases tested for above fall through to this point // Restore C1 which may have been modified above C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 or 1 if (x_sign) res = 0x0000000000000000ull; else res = 0x0000000000000001ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 34, -33 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x <= 2^63 - 1 so x can be rounded // up to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result is positive and inexact, need to add 1 to it // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 22 <= ind <= 33 if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 19 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp>0) => 1 <= exp <= 18, 1 <= q < 18, 2 <= q + exp <= 19 // res = +/-C * 10^exp (exact) where this fits in 64-bit integer if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int64_int ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_SINT64, bid128_to_int64_int, x) BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64+2), 1<=q<=34 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x5000000000000000a, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x000000000000000aull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*2^64, 1<=q<=34 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } } // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point // Restore C1 which may have been modified above C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 34, -33 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x < 2^63 so x can be rounded // toward zero to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 19 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp>0) => 1 <= exp <= 18, 1 <= q < 18, 2 <= q + exp <= 19 // res = +/-C * 10^exp (exact) where this fits in 64-bit integer if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_xint64_xint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_SINT64, bid128_to_int64_xint, x) BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64+2), 1<=q<=34 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x5000000000000000a, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x000000000000000aull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*2^64, 1<=q<=34 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } } // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point // Restore C1 which may have been modified above C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 34, -33 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x < 2^63 so x can be rounded // toward zero to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 22 <= ind <= 33 if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 19 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp>0) => 1 <= exp <= 18, 1 <= q < 18, 2 <= q + exp <= 19 // res = +/-C * 10^exp (exact) where this fits in 64-bit integer if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int64_rninta ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_SINT64, bid128_to_int64_rninta, x) BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64+1), 1<=q<=34 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000005, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0000000000000005ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64-1), 1<=q<=34 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=34 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } } // n is not too large to be converted to int64: -2^63-1/2 <= n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point // Restore C1 which may have been modified above C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] < bid_midpoint64[ind])) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] < bid_midpoint128[ind - 19].w[0]))) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } } else { // if (1 <= q + exp <= 19, 1 <= q <= 34, -33 <= exp <= 18) // -2^63-1/2 <= x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint it was rounded away from zero if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 19 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp>0) => 1 <= exp <= 18, 1 <= q < 18, 2 <= q + exp <= 19 // res = +/-C * 10^exp (exact) where this fits in 64-bit integer if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int64_xrninta ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_SINT64, bid128_to_int64_xrninta, x) BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64+1), 1<=q<=34 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000005, 1<=q<=34 C.w[1] = 0x0000000000000005ull; C.w[0] = 0000000000000005ull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64-1), 1<=q<=34 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=34 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; if (q <= 19) { // 1 <= q <= 19 => 1 <= 20-q <= 19 => // 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[20 - q]); } else if (q == 20) { ; // C1 * 10^0 = C1 } else { // if 21 <= q <= 34 __mul_128x64_to_128 (C, bid_ten2k64[q - 20], C); // max 47-bit x 67-bit } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } } // n is not too large to be converted to int64: -2^63-1/2 <= n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point // Restore C1 which may have been modified above C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] < bid_midpoint64[ind])) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] < bid_midpoint128[ind - 19].w[0]))) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 19, 1 <= q <= 34, -33 <= exp <= 18) // -2^63-1/2 <= x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 19 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp>0) => 1 <= exp <= 18, 1 <= q < 18, 2 <= q + exp <= 19 // res = +/-C * 10^exp (exact) where this fits in 64-bit integer if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } LIBRARY/src/bid64_hypot.c0000644€­ Q01134020000000711415113665770014140 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE_FUNCTION_ARG2(BID_UINT64, bid64_hypot, x, y) BID_UINT64 sign_x, sign_y, coefficient_x, coefficient_y; BID_UINT64 valid_x, valid_y, res; BID_F80_TYPE xd, yd, zd; int exponent_x, exponent_y; valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID64 (&sign_y, &exponent_y, &coefficient_y, y); if (!valid_x) { if ((x & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e00000000000000ull) == 0x7e00000000000000ull || // sNaN (y & 0x7e00000000000000ull) == 0x7e00000000000000ull) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if (((x & 0x7e00000000000000ull) == 0x7e00000000000000ull) || ((y & 0x7c00000000000000ull) != 0x7800000000000000ull)) res = (coefficient_x) & QUIET_MASK64; else res = 0x7800000000000000ull; BID_RETURN (res); } // x is Infinity? if (((x & 0x7800000000000000ull) == 0x7800000000000000ull) && ((y & 0x7e00000000000000ull) != 0x7e00000000000000ull)) { res = 0x7800000000000000ull; BID_RETURN (res); } // x is 0 if (valid_y) { res = y & 0x7fffffffffffffffull; BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((y & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_y & QUIET_MASK64; BID_RETURN (res); } if ((y & 0x7800000000000000ull) == 0x7800000000000000ull) { res = 0x7800000000000000ull; BID_RETURN (res); } // y is 0 if (valid_x) { res = x & 0x7fffffffffffffffull; BID_RETURN (res); } } BIDECIMAL_CALL1(bid64_to_binary80,xd,x); BIDECIMAL_CALL1(bid64_to_binary80,yd,y); __bid_f80_hypot( zd, xd, yd ); BIDECIMAL_CALL1(binary80_to_bid64,res,zd); BID_RETURN (res); } LIBRARY/src/bid32_add.c0000644€­ Q01134020000001631015113665770013516 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" BID_TYPE_FUNCTION_ARG2(BID_UINT32, bid32_add, x, y) BID_UINT128 Tmp; BID_SINT64 S, sign_ab; BID_UINT64 SU, CB, P, Q, R; BID_UINT32 sign_x, sign_y, coefficient_x, coefficient_y, res; BID_UINT32 sign_a, sign_b, coefficient_a, coefficient_b; BID_UINT32 valid_x, valid_y; int exponent_x, exponent_y, bin_expon, amount, n_digits, extra_digits, status, rmode; int exponent_a, exponent_b, scale_ca, diff_dec_expon, d2; int_double tempx; BID_OPT_SAVE_BINARY_FLAGS() valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID32 (&sign_y, &exponent_y, &coefficient_y, y); // unpack arguments, check for NaN or Infinity if (!valid_x) { // x is Inf. or NaN // test if x is NaN if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK32) == SNAN_MASK32) // sNaN || ((y & SNAN_MASK32) == SNAN_MASK32)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_x & QUIET_MASK32; BID_RETURN (res); } // x is Infinity? if ((x & INFINITY_MASK32) == INFINITY_MASK32) { // check if y is Inf if (((y & NAN_MASK32) == INFINITY_MASK32)) { if (sign_x == (y & 0x80000000)) { res = coefficient_x; BID_RETURN (res); } // return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = NAN_MASK32; BID_RETURN (res); } } // check if y is NaN if (((y & NAN_MASK32) == NAN_MASK32)) { res = coefficient_y & QUIET_MASK32; #ifdef BID_SET_STATUS_FLAGS if (((y & SNAN_MASK32) == SNAN_MASK32)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } // otherwise return +/-Inf { res = coefficient_x; BID_RETURN (res); } } // x is 0 { if (((y & INFINITY_MASK32) != INFINITY_MASK32) && coefficient_y) { if (exponent_y <= exponent_x) { res = y; BID_RETURN (res); } } } } if (!valid_y) { // y is Inf. or NaN? if (((y & INFINITY_MASK32) == INFINITY_MASK32)) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK32) == SNAN_MASK32) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_y & QUIET_MASK32; BID_RETURN (res); } // y is 0 if (!coefficient_x) { // x==0 if (exponent_x <= exponent_y) res = ((BID_UINT32) exponent_x) << 23; else res = ((BID_UINT32) exponent_y) << 23; if (sign_x == sign_y) res |= sign_x; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rnd_mode == BID_ROUNDING_DOWN && sign_x != sign_y) res |= 0x80000000; #endif #endif BID_RETURN (res); } else if (exponent_y >= exponent_x) { res = x; BID_RETURN (res); } } // sort arguments by exponent if (exponent_x < exponent_y) { sign_a = sign_y; exponent_a = exponent_y; coefficient_a = coefficient_y; sign_b = sign_x; exponent_b = exponent_x; coefficient_b = coefficient_x; } else { sign_a = sign_x; exponent_a = exponent_x; coefficient_a = coefficient_x; sign_b = sign_y; exponent_b = exponent_y; coefficient_b = coefficient_y; } // exponent difference diff_dec_expon = exponent_a - exponent_b; if (diff_dec_expon > MAX_FORMAT_DIGITS_32) { tempx.d = (double) coefficient_a; bin_expon = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; scale_ca = bid_estimate_decimal_digits[bin_expon]; d2 = 16 - scale_ca; if(diff_dec_expon > d2) { diff_dec_expon = d2; exponent_b = exponent_a - diff_dec_expon; } } sign_ab = ((BID_SINT64)(sign_a ^ sign_b))<<32; sign_ab = ((BID_SINT64) sign_ab) >> 63; CB = ((BID_UINT64)coefficient_b + sign_ab) ^ sign_ab; SU = (BID_UINT64)coefficient_a * bid_power10_table_128[diff_dec_expon].w[0]; S = SU + CB; if(S<0) { sign_a ^= 0x80000000; S = -S; } P = S; if(!P) { sign_a = 0; if(rnd_mode == BID_ROUNDING_DOWN) sign_a = 0x80000000; if(!coefficient_a) sign_a = sign_x; n_digits=0; } else { tempx.d = (double) P; bin_expon = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; n_digits = bid_estimate_decimal_digits[bin_expon]; if(P >=bid_power10_table_128[n_digits].w[0]) n_digits++; } if(n_digits <= MAX_FORMAT_DIGITS_32) { res = get_BID32 (sign_a, exponent_b, (BID_UINT32)P, rnd_mode, pfpsf); BID_RETURN (res); } extra_digits = n_digits - 7; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_a && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif // add a constant to P, depending on rounding mode // 0.5*10^(digits_p - 16) for round-to-nearest P += bid_round_const_table[rmode][extra_digits]; __mul_64x64_to_128(Tmp, P, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-64 amount = bid_short_recip_scale[extra_digits]; Q = Tmp.w[1] >> amount; // remainder R = P - Q * bid_power10_table_128[extra_digits].w[0]; if(R==bid_round_const_table[rmode][extra_digits]) status = 0; else status = BID_INEXACT_EXCEPTION; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, status); #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if(R==0) Q &= 0xfffffffe; #endif res = get_BID32 (sign_a, exponent_b+extra_digits, Q, rnd_mode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid32_to_uint16.c0000644€­ Q01134020000000656015113665770014624 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffff0000 #define INVALID_RESULT 0x8000 BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid32_to_uint16_rnint, BID_UINT32, x, bid32_to_uint32_rnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid32_to_uint16_xrnint, BID_UINT32, x, bid32_to_uint32_xrnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid32_to_uint16_rninta, BID_UINT32, x, bid32_to_uint32_rninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid32_to_uint16_xrninta, BID_UINT32, x, bid32_to_uint32_xrninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid32_to_uint16_int, BID_UINT32, x, bid32_to_uint32_int, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid32_to_uint16_xint, BID_UINT32, x, bid32_to_uint32_xint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid32_to_uint16_floor, BID_UINT32, x, bid32_to_uint32_floor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid32_to_uint16_ceil, BID_UINT32, x, bid32_to_uint32_ceil, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid32_to_uint16_xfloor, BID_UINT32, x, bid32_to_uint32_xfloor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid32_to_uint16_xceil, BID_UINT32, x, bid32_to_uint32_xceil, unsigned int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid_wrap_names.h0000644€­ Q01134020000007056615113665770014777 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define m(x) x #define __wrap___bid64_from_int32 m(int32_to_decimal64) //#define __wrap___bid64_from_uint32 //#define __wrap___bid64_from_int64 //#define __wrap___bid64_from_uint64 #define __wrap___bid128_from_int32 m(int32_to_decimal128) //#define __wrap___bid128_from_uint32 //#define __wrap___bid128_from_int64 //#define __wrap___bid128_from_uint64 #define __wrap___bid32_from_int32 m(int32_to_decimal32) //#define __wrap___bid32_from_uint32 //#define __wrap___bid32_from_int64 //#define __wrap___bid32_from_uint64 #define __wrap___bid_to_dpd32 m(decimal32_to_dpd32) #define __wrap___bid_to_dpd64 m(decimal64_to_dpd64) #define __wrap___bid_dpd_to_bid32 m(dpd32_to_decimal32) #define __wrap___bid_dpd_to_bid64 m(dpd64_to_decimal64) #define __wrap___bid_to_dpd128 m(decimal128_to_dpd128) #define __wrap___bid_dpd_to_bid128 m(dpd128_to_decimal128) #define __wrap___bid32_to_binary32 m(decimal32_to_float) #define __wrap___bid64_to_binary32 m(decimal64_to_float) #define __wrap___bid128_to_binary32 m(decimal128_to_float) #define __wrap___bid32_to_binary64 m(decimal32_to_double) #define __wrap___bid64_to_binary64 m(decimal64_to_double) #define __wrap___bid128_to_binary64 m(decimal128_to_double) #define __wrap___bid32_to_binary80 m(decimal32_to_long_double) #define __wrap___bid64_to_binary80 m(decimal64_to_long_double) #define __wrap___bid128_to_binary80 m(decimal128_to_long_double) #define __wrap___bid32_to_binary128 m(decimal32_to_quad) #define __wrap___bid64_to_binary128 m(decimal64_to_quad) #define __wrap___bid128_to_binary128 m(decimal128_to_quad) #define __wrap___binary32_to_bid32 m(float_to_decimal32) #define __wrap___binary64_to_bid32 m(double_to_decimal32) #define __wrap___binary80_to_bid32 m(long_double_to_decimal32) #define __wrap___binary128_to_bid32 m(quad_to_decimal32) #define __wrap___binary32_to_bid64 m(float_to_decimal64) #define __wrap___binary64_to_bid64 m(double_to_decimal64) #define __wrap___binary80_to_bid64 m(long_double_to_decimal64) #define __wrap___binary128_to_bid64 m(quad_to_decimal64) #define __wrap___binary32_to_bid128 m(float_to_decimal128) #define __wrap___binary64_to_bid128 m(double_to_decimal128) #define __wrap___binary80_to_bid128 m(long_double_to_decimal128) #define __wrap___binary128_to_bid128 m(quad_to_decimal128) //#define __wrap___bid64_to_bid128 //#define __wrap___bid128_to_bid64 //#define __wrap___bid32_to_bid64 //#define __wrap___bid64_to_bid32 //#define __wrap___bid32_to_bid128 //#define __wrap___bid128_to_bid32 //#define __wrap___bid32_sub #define __wrap___bid32_tgamma m(tgammad32) #define __wrap___bid32_tanh m(tanhd32) #define __wrap___bid32_tan m(tand32) #define __wrap___bid32_sinh m(sinhd32) #define __wrap___bid32_sin m(sind32) #define __wrap___bid32_pow m(powd32) #define __wrap___bid32_log2 m(log2d32) #define __wrap___bid32_log1p m(log1pd32) #define __wrap___bid32_log10 m(log10d32) #define __wrap___bid32_log m(logd32) #define __wrap___bid32_lgamma m(lgammad32) #define __wrap___bid32_hypot m(hypotd32) #define __wrap___bid32_expm1 m(expm1d32) #define __wrap___bid32_exp2 m(exp2d32) #define __wrap___bid32_exp10 m(exp10d32) #define __wrap___bid32_exp m(expd32) #define __wrap___bid32_erfc m(erfcd32) #define __wrap___bid32_erf m(erfd32) #define __wrap___bid32_cosh m(coshd32) #define __wrap___bid32_cos m(cosd32) #define __wrap___bid32_cbrt m(cbrtd32) #define __wrap___bid32_atanh m(atanhd32) #define __wrap___bid32_atan2 m(atan2d32) #define __wrap___bid32_atan m(atand32) #define __wrap___bid32_asinh m(asinhd32) #define __wrap___bid32_asin m(asind32) #define __wrap___bid32_acosh m(acoshd32) #define __wrap___bid32_acos m(acosd32) #define __wrap___bid_wcstod128 m(wcstod128) #define __wrap___bid_wcstod64 m(wcstod64) #define __wrap___bid_wcstod32 m(wcstod32) #define __wrap___bid_strtod128 m(strtod128) #define __wrap___bid_strtod64 m(strtod64) #define __wrap___bid_strtod32 m(strtod32) //#define __wrap___bid128_to_uint8_rnint //#define __wrap___bid128_to_uint8_xrnint //#define __wrap___bid128_to_uint8_rninta //#define __wrap___bid128_to_uint8_xrninta //#define __wrap___bid128_to_uint8_int //#define __wrap___bid128_to_uint8_xint //#define __wrap___bid128_to_uint8_floor //#define __wrap___bid128_to_uint8_ceil //#define __wrap___bid128_to_uint8_xfloor //#define __wrap___bid128_to_uint8_xceil //#define __wrap___bid128_to_uint64_rnint //#define __wrap___bid128_to_uint64_xrnint //#define __wrap___bid128_to_uint64_floor //#define __wrap___bid128_to_uint64_xfloor //#define __wrap___bid128_to_uint64_ceil //#define __wrap___bid128_to_uint64_xceil //#define __wrap___bid128_to_uint64_int //#define __wrap___bid128_to_uint64_xint //#define __wrap___bid128_to_uint64_rninta //#define __wrap___bid128_to_uint64_xrninta //#define __wrap___bid128_to_uint32_rnint //#define __wrap___bid128_to_uint32_xrnint //#define __wrap___bid128_to_uint32_floor //#define __wrap___bid128_to_uint32_xfloor //#define __wrap___bid128_to_uint32_ceil //#define __wrap___bid128_to_uint32_xceil //#define __wrap___bid128_to_uint32_int //#define __wrap___bid128_to_uint32_xint //#define __wrap___bid128_to_uint32_rninta //#define __wrap___bid128_to_uint32_xrninta //#define __wrap___bid128_to_uint16_rnint //#define __wrap___bid128_to_uint16_xrnint //#define __wrap___bid128_to_uint16_rninta //#define __wrap___bid128_to_uint16_xrninta //#define __wrap___bid128_to_uint16_int //#define __wrap___bid128_to_uint16_xint //#define __wrap___bid128_to_uint16_floor //#define __wrap___bid128_to_uint16_ceil //#define __wrap___bid128_to_uint16_xfloor //#define __wrap___bid128_to_uint16_xceil //#define __wrap___bid128_to_int8_rnint //#define __wrap___bid128_to_int8_xrnint //#define __wrap___bid128_to_int8_rninta //#define __wrap___bid128_to_int8_xrninta //#define __wrap___bid128_to_int8_int //#define __wrap___bid128_to_int8_xint //#define __wrap___bid128_to_int8_floor //#define __wrap___bid128_to_int8_ceil //#define __wrap___bid128_to_int8_xfloor //#define __wrap___bid128_to_int8_xceil #define __wrap___bid128_to_int64_rnint m(decimal128_to_int64_rnint) //#define __wrap___bid128_to_int64_xrnint //#define __wrap___bid128_to_int64_floor //#define __wrap___bid128_to_int64_xfloor //#define __wrap___bid128_to_int64_ceil //#define __wrap___bid128_to_int64_xceil //#define __wrap___bid128_to_int64_int //#define __wrap___bid128_to_int64_xint //#define __wrap___bid128_to_int64_rninta //#define __wrap___bid128_to_int64_xrninta //#define __wrap___bid128_to_int32_rnint //#define __wrap___bid128_to_int32_xrnint //#define __wrap___bid128_to_int32_floor //#define __wrap___bid128_to_int32_xfloor //#define __wrap___bid128_to_int32_ceil //#define __wrap___bid128_to_int32_xceil //#define __wrap___bid128_to_int32_int //#define __wrap___bid128_to_int32_xint //#define __wrap___bid128_to_int32_rninta //#define __wrap___bid128_to_int32_xrninta //#define __wrap___bid128_to_int16_rnint //#define __wrap___bid128_to_int16_xrnint //#define __wrap___bid128_to_int16_rninta //#define __wrap___bid128_to_int16_xrninta //#define __wrap___bid128_to_int16_int //#define __wrap___bid128_to_int16_xint //#define __wrap___bid128_to_int16_floor //#define __wrap___bid128_to_int16_ceil //#define __wrap___bid128_to_int16_xfloor //#define __wrap___bid128_to_int16_xceil #define __wrap___bid128_to_string m(decimal128_to_string) #define __wrap___bid128_from_string m(string_to_decimal128) #define __wrap___bid128_sqrt m(sqrtd128) //#define __wrap___bid128d_sqrt #define __wrap___bid128_scalbln m(scalblnd128) #define __wrap___bid128_scalbn m(scalbnd128) #define __wrap___bid128_round_integral_exact m(rintd128) //#define __wrap___bid128_round_integral_nearest_even #define __wrap___bid128_round_integral_zero m(truncd128) #define __wrap___bid128_round_integral_nearest_away m(roundd128) #define __wrap___bid128_rem m(remainderd128) #define __wrap___bid128_quantize m(quantized128) #define __wrap___bid128_quantexp m(quantexpd128) #define __wrap___bid128_llquantexp m(llquantexpd128) #define __wrap___bid128_quantum m(quantumd128) #define __wrap___bid128_isSigned m(signbitd128) #define __wrap___bid128_isNormal m(isnormald128) //#define __wrap___bid128_isSubnormal #define __wrap___bid128_isZero m(iszerod128) #define __wrap___bid128_isInf m(isinfd128) //#define __wrap___bid128_isSignaling //#define __wrap___bid128_isCanonical #define __wrap___bid128_isNaN m(isnand128) //#define __wrap___bid128_copy #define __wrap___bid128_negate m(negated128) #define __wrap___bid128_abs m(fabsd128) #define __wrap___bid128_copySign m(copysignd128) #define __wrap___bid128_class m(fpclassifyd128) //#define __wrap___bid128_sameQuantum //#define __wrap___bid128_totalOrder //#define __wrap___bid128_totalOrderMag //#define __wrap___bid128_radix #define __wrap___bid128_isFinite m(isfinited128) #define __wrap___bid128_nexttoward m(nexttoward128) #define __wrap___bid128_nextup m(nextupd128) #define __wrap___bid128_nextdown m(nextdownd128) #define __wrap___bid128_nextafter m(nextafterd128) #define __wrap___bid128_nearbyint m(nearbyintd128) //#define __wrap___bid128_mul #define __wrap___bid128_modf m(modf128) #define __wrap___bid128_minnum m(fmind128) //#define __wrap___bid128_minnum_mag #define __wrap___bid128_maxnum m(fmaxd128) //#define __wrap___bid128_maxnum_mag #define __wrap___bid128_lround m(lroundd128) #define __wrap___bid128_llround m(llroundd128) #define __wrap___bid128_lrint m(lrintd128) #define __wrap___bid128_logb m(logbd128) #define __wrap___bid128_ilogb m(ilogbd128) #define __wrap___bid128_llrint m(llrintd128) #define __wrap___bid128_ldexp m(ldexpd128) #define __wrap___bid128_frexp m(frexpd128) #define __wrap___bid128_fmod m(fmodd128) #define __wrap___bid128_fma m(fmad128) #define __wrap___bid128_fdim m(fdimd128) //#define __wrap___bid128_div //#define __wrap___bid128dd_div //#define __wrap___bid128dq_div //#define __wrap___bid128qd_div #define __wrap___bid128_quiet_equal m(isequald128) #define __wrap___bid128_quiet_greater m(isgreaterd128) #define __wrap___bid128_quiet_greater_equal m(isgreaterequald128) //#define __wrap___bid128_quiet_greater_unordered #define __wrap___bid128_quiet_less m(islessd128) #define __wrap___bid128_quiet_less_equal m(islessequald128) //#define __wrap___bid128_quiet_less_unordered #define __wrap___bid128_quiet_not_equal m(isnotequald128) //#define __wrap___bid128_quiet_not_greater //#define __wrap___bid128_quiet_not_less //#define __wrap___bid128_quiet_ordered #define __wrap___bid128_quiet_unordered m(isunorderedd128) //#define __wrap___bid128_signaling_greater //#define __wrap___bid128_signaling_greater_equal //#define __wrap___bid128_signaling_greater_unordered //#define __wrap___bid128_signaling_less //#define __wrap___bid128_signaling_less_equal //#define __wrap___bid128_signaling_less_unordered //#define __wrap___bid128_signaling_not_greater //#define __wrap___bid128_signaling_not_less //#define __wrap___bid128_add //#define __wrap___bid128_sub //#define __wrap___bid64_to_uint8_rnint //#define __wrap___bid64_to_uint8_xrnint //#define __wrap___bid64_to_uint8_rninta //#define __wrap___bid64_to_uint8_xrninta //#define __wrap___bid64_to_uint8_int //#define __wrap___bid64_to_uint8_xint //#define __wrap___bid64_to_uint8_floor //#define __wrap___bid64_to_uint8_ceil //#define __wrap___bid64_to_uint8_xfloor //#define __wrap___bid64_to_uint8_xceil //#define __wrap___bid64_to_uint64_rnint //#define __wrap___bid64_to_uint64_xrnint //#define __wrap___bid64_to_uint64_floor //#define __wrap___bid64_to_uint64_xfloor //#define __wrap___bid64_to_uint64_ceil //#define __wrap___bid64_to_uint64_xceil //#define __wrap___bid64_to_uint64_int //#define __wrap___bid64_to_uint64_xint //#define __wrap___bid64_to_uint64_rninta //#define __wrap___bid64_to_uint64_xrninta //#define __wrap___bid64_to_uint32_rnint //#define __wrap___bid64_to_uint32_xrnint //#define __wrap___bid64_to_uint32_floor //#define __wrap___bid64_to_uint32_xfloor //#define __wrap___bid64_to_uint32_ceil //#define __wrap___bid64_to_uint32_xceil //#define __wrap___bid64_to_uint32_int //#define __wrap___bid64_to_uint32_xint //#define __wrap___bid64_to_uint32_rninta //#define __wrap___bid64_to_uint32_xrninta //#define __wrap___bid64_to_uint16_rnint //#define __wrap___bid64_to_uint16_xrnint //#define __wrap___bid64_to_uint16_rninta //#define __wrap___bid64_to_uint16_xrninta //#define __wrap___bid64_to_uint16_int //#define __wrap___bid64_to_uint16_xint //#define __wrap___bid64_to_uint16_floor //#define __wrap___bid64_to_uint16_ceil //#define __wrap___bid64_to_uint16_xfloor //#define __wrap___bid64_to_uint16_xceil //#define __wrap___bid64_to_int8_rnint //#define __wrap___bid64_to_int8_xrnint //#define __wrap___bid64_to_int8_rninta //#define __wrap___bid64_to_int8_xrninta //#define __wrap___bid64_to_int8_int //#define __wrap___bid64_to_int8_xint //#define __wrap___bid64_to_int8_floor //#define __wrap___bid64_to_int8_ceil //#define __wrap___bid64_to_int8_xfloor //#define __wrap___bid64_to_int8_xceil #define __wrap___bid64_to_int64_rnint m(decimal64_to_int64_rnint) //#define __wrap___bid64_to_int64_xrnint //#define __wrap___bid64_to_int64_floor //#define __wrap___bid64_to_int64_xfloor //#define __wrap___bid64_to_int64_ceil //#define __wrap___bid64_to_int64_xceil //#define __wrap___bid64_to_int64_int //#define __wrap___bid64_to_int64_xint //#define __wrap___bid64_to_int64_rninta //#define __wrap___bid64_to_int64_xrninta //#define __wrap___bid64_to_int32_rnint //#define __wrap___bid64_to_int32_xrnint //#define __wrap___bid64_to_int32_floor //#define __wrap___bid64_to_int32_xfloor //#define __wrap___bid64_to_int32_ceil //#define __wrap___bid64_to_int32_xceil //#define __wrap___bid64_to_int32_int //#define __wrap___bid64_to_int32_xint //#define __wrap___bid64_to_int32_rninta //#define __wrap___bid64_to_int32_xrninta //#define __wrap___bid64_to_int16_rnint //#define __wrap___bid64_to_int16_xrnint //#define __wrap___bid64_to_int16_rninta //#define __wrap___bid64_to_int16_xrninta //#define __wrap___bid64_to_int16_int //#define __wrap___bid64_to_int16_xint //#define __wrap___bid64_to_int16_floor //#define __wrap___bid64_to_int16_ceil //#define __wrap___bid64_to_int16_xfloor //#define __wrap___bid64_to_int16_xceil #define __wrap___bid64_to_string m(decimal64_to_string) #define __wrap___bid64_from_string m(string_to_decimal64) #define __wrap___bid64_sqrt m(sqrtd64) //#define __wrap___bid64q_sqrt #define __wrap___bid64_scalbln m(scalblnd64) #define __wrap___bid64_scalbn m(scalbnd64) #define __wrap___bid64_round_integral_exact m(rintd64) //#define __wrap___bid64_round_integral_nearest_even #define __wrap___bid64_round_integral_zero m(truncd64) #define __wrap___bid64_round_integral_nearest_away m(roundd64) #define __wrap___bid64_rem m(remainderd64) #define __wrap___bid64_quantize m(quantized64) #define __wrap___bid64_quantexp m(quantexpd64) #define __wrap___bid64_llquantexp m(llquantexpd64) #define __wrap___bid64_quantum m(quantumd64) #define __wrap___bid64_isSigned m(signbitd64) #define __wrap___bid64_isNormal m(isnormald64) //#define __wrap___bid64_isSubnormal #define __wrap___bid64_isZero m(iszerod64) #define __wrap___bid64_isInf m(isinfd64) //#define __wrap___bid64_isSignaling //#define __wrap___bid64_isCanonical #define __wrap___bid64_isNaN m(isnand64) //#define __wrap___bid64_copy #define __wrap___bid64_negate m(negated64) #define __wrap___bid64_abs m(fabsd64) #define __wrap___bid64_copySign m(copysignd64) #define __wrap___bid64_class m(fpclassifyd64) //#define __wrap___bid64_sameQuantum //#define __wrap___bid64_totalOrder //#define __wrap___bid64_totalOrderMag //#define __wrap___bid64_radix #define __wrap___bid64_isFinite m(isfinited64) #define __wrap___bid64_nexttoward m(nexttoward64) #define __wrap___bid64_nextup m(nextupd64) #define __wrap___bid64_nextdown m(nextdownd64) #define __wrap___bid64_nextafter m(nextafterd64) #define __wrap___bid64_nearbyint m(nearbyintd64) //#define __wrap___bid64_mul #define __wrap___bid64_modf m(modfd64) #define __wrap___bid64_minnum m(fmind64) //#define __wrap___bid64_minnum_mag #define __wrap___bid64_maxnum m(fmaxd64) //#define __wrap___bid64_maxnum_mag #define __wrap___bid64_lround m(lroundd64) #define __wrap___bid64_llround m(llroundd64) #define __wrap___bid64_lrint m(lrintd64) #define __wrap___bid64_logb m(logbd64) #define __wrap___bid64_ilogb m(ilogbd64) #define __wrap___bid64_llrint m(llrintd64) #define __wrap___bid64_ldexp m(ldexpd64) #define __wrap___bid64_frexp m(frexpd64) #define __wrap___bid64_fmod m(fmodd64) #define __wrap___bid64_fma m(fmad64) #define __wrap___bid64_fdim m(fdimd64) //#define __wrap___bid64_div //#define __wrap___bid64dq_div //#define __wrap___bid64qd_div //#define __wrap___bid64qq_div #define __wrap___bid64_quiet_equal m(isequald64) #define __wrap___bid64_quiet_greater m(isgreaterd64) #define __wrap___bid64_quiet_greater_equal m(isgreaterequald64) //#define __wrap___bid64_quiet_greater_unordered #define __wrap___bid64_quiet_less m(islessd64) #define __wrap___bid64_quiet_less_equal m(islessequald64) //#define __wrap___bid64_quiet_less_unordered #define __wrap___bid64_quiet_not_equal m(isnotequald64) //#define __wrap___bid64_quiet_not_greater //#define __wrap___bid64_quiet_not_less //#define __wrap___bid64_quiet_ordered #define __wrap___bid64_quiet_unordered m(isunorderedd64) //#define __wrap___bid64_signaling_greater //#define __wrap___bid64_signaling_greater_equal //#define __wrap___bid64_signaling_greater_unordered //#define __wrap___bid64_signaling_less //#define __wrap___bid64_signaling_less_equal //#define __wrap___bid64_signaling_less_unordered //#define __wrap___bid64_signaling_not_greater //#define __wrap___bid64_signaling_not_less //#define __wrap___bid64_sub //#define __wrap___bid64_add //#define __wrap___bid32_to_uint8_rnint //#define __wrap___bid32_to_uint8_xrnint //#define __wrap___bid32_to_uint8_rninta //#define __wrap___bid32_to_uint8_xrninta //#define __wrap___bid32_to_uint8_int //#define __wrap___bid32_to_uint8_xint //#define __wrap___bid32_to_uint8_floor //#define __wrap___bid32_to_uint8_ceil //#define __wrap___bid32_to_uint8_xfloor //#define __wrap___bid32_to_uint8_xceil //#define __wrap___bid32_to_uint64_rnint //#define __wrap___bid32_to_uint64_xrnint //#define __wrap___bid32_to_uint64_floor //#define __wrap___bid32_to_uint64_xfloor //#define __wrap___bid32_to_uint64_ceil //#define __wrap___bid32_to_uint64_xceil //#define __wrap___bid32_to_uint64_int //#define __wrap___bid32_to_uint64_xint //#define __wrap___bid32_to_uint64_rninta //#define __wrap___bid32_to_uint64_xrninta //#define __wrap___bid32_to_uint32_rnint //#define __wrap___bid32_to_uint32_xrnint //#define __wrap___bid32_to_uint32_floor //#define __wrap___bid32_to_uint32_xfloor //#define __wrap___bid32_to_uint32_ceil //#define __wrap___bid32_to_uint32_xceil //#define __wrap___bid32_to_uint32_int //#define __wrap___bid32_to_uint32_xint //#define __wrap___bid32_to_uint32_rninta //#define __wrap___bid32_to_uint32_xrninta //#define __wrap___bid32_to_uint16_rnint //#define __wrap___bid32_to_uint16_xrnint //#define __wrap___bid32_to_uint16_rninta //#define __wrap___bid32_to_uint16_xrninta //#define __wrap___bid32_to_uint16_int //#define __wrap___bid32_to_uint16_xint //#define __wrap___bid32_to_uint16_floor //#define __wrap___bid32_to_uint16_ceil //#define __wrap___bid32_to_uint16_xfloor //#define __wrap___bid32_to_uint16_xceil //#define __wrap___bid32_to_int8_rnint //#define __wrap___bid32_to_int8_xrnint //#define __wrap___bid32_to_int8_rninta //#define __wrap___bid32_to_int8_xrninta //#define __wrap___bid32_to_int8_int //#define __wrap___bid32_to_int8_xint //#define __wrap___bid32_to_int8_floor //#define __wrap___bid32_to_int8_ceil //#define __wrap___bid32_to_int8_xfloor //#define __wrap___bid32_to_int8_xceil #define __wrap___bid32_to_int64_rnint m(decimal32_to_int64_rnint) //#define __wrap___bid32_to_int64_xrnint //#define __wrap___bid32_to_int64_floor //#define __wrap___bid32_to_int64_xfloor //#define __wrap___bid32_to_int64_ceil //#define __wrap___bid32_to_int64_xceil //#define __wrap___bid32_to_int64_int //#define __wrap___bid32_to_int64_xint //#define __wrap___bid32_to_int64_rninta //#define __wrap___bid32_to_int64_xrninta //#define __wrap___bid32_to_int32_rnint //#define __wrap___bid32_to_int32_xrnint //#define __wrap___bid32_to_int32_floor //#define __wrap___bid32_to_int32_xfloor //#define __wrap___bid32_to_int32_ceil //#define __wrap___bid32_to_int32_xceil //#define __wrap___bid32_to_int32_int //#define __wrap___bid32_to_int32_xint //#define __wrap___bid32_to_int32_rninta //#define __wrap___bid32_to_int32_xrninta //#define __wrap___bid32_to_int16_rnint //#define __wrap___bid32_to_int16_xrnint //#define __wrap___bid32_to_int16_rninta //#define __wrap___bid32_to_int16_xrninta //#define __wrap___bid32_to_int16_int //#define __wrap___bid32_to_int16_xint //#define __wrap___bid32_to_int16_floor //#define __wrap___bid32_to_int16_ceil //#define __wrap___bid32_to_int16_xfloor //#define __wrap___bid32_to_int16_xceil #define __wrap___bid32_to_string m(decimal32_to_string) #define __wrap___bid32_from_string m(string_to_decimal32) #define __wrap___bid32_sqrt m(sqrtd32) #define __wrap___bid32_scalbln m(scalblnd32) #define __wrap___bid32_scalbn m(scalbnd32) #define __wrap___bid32_round_integral_exact m(rintd32) //#define __wrap___bid32_round_integral_nearest_even #define __wrap___bid32_round_integral_zero m(truncd32) #define __wrap___bid32_round_integral_nearest_away m(roundd32) #define __wrap___bid32_rem m(remainderd32) #define __wrap___bid32_quantize m(quantized32) #define __wrap___bid32_quantexp m(quantexpd32) #define __wrap___bid32_llquantexp m(llquantexpd32) #define __wrap___bid32_quantum m(quantumd32) #define __wrap___bid32_isSigned m(signbitd32) #define __wrap___bid32_isNormal m(isnormald32) //#define __wrap___bid32_isSubnormal #define __wrap___bid32_isZero m(iszerod32) #define __wrap___bid32_isInf m(isinfd32) //#define __wrap___bid32_isSignaling //#define __wrap___bid32_isCanonical #define __wrap___bid32_isNaN m(isnand32) //#define __wrap___bid32_copy #define __wrap___bid32_negate m(negated32) #define __wrap___bid32_abs m(fabsd32) #define __wrap___bid32_copySign m(copysignd32) #define __wrap___bid32_class m(fpclassifyd32) //#define __wrap___bid32_sameQuantum //#define __wrap___bid32_totalOrder //#define __wrap___bid32_totalOrderMag //#define __wrap___bid32_radix #define __wrap___bid32_nan m(nand32) #define __wrap___bid64_nan m(nand64) #define __wrap___bid128_nan m(nand128) #define __wrap___bid32_isFinite m(isfinited32) #define __wrap___bid32_nexttoward m(nexttoward32) #define __wrap___bid32_nextup m(nextupd32) #define __wrap___bid32_nextdown m(nextdownd32) #define __wrap___bid32_nextafter m(nextafterd32) #define __wrap___bid32_nearbyint m(nearbyintd32) //#define __wrap___bid32_mul #define __wrap___bid32_modf m(modfd32) #define __wrap___bid32_minnum m(fmind32) //#define __wrap___bid32_minnum_mag #define __wrap___bid32_maxnum m(fmaxd32) //#define __wrap___bid32_maxnum_mag #define __wrap___bid32_lround m(lroundd32) #define __wrap___bid32_llround m(llroundd32) #define __wrap___bid32_lrint m(lrintd32) #define __wrap___bid32_logb m(logbd32) #define __wrap___bid32_ilogb m(ilogbd32) #define __wrap___bid32_llrint m(llrintd32) #define __wrap___bid32_ldexp m(ldexpd32) #define __wrap___bid32_frexp m(frexpd32) #define __wrap___bid32_fmod m(fmodd32) #define __wrap___bid32_fma m(fmad32) #define __wrap___bid32_fdim m(fdimd32) //#define __wrap___bid32_div #define __wrap___bid32_quiet_equal m(isequald32) #define __wrap___bid32_quiet_greater m(isgreaterd32) #define __wrap___bid32_quiet_greater_equal m(isgreaterequald32) //#define __wrap___bid32_quiet_greater_unordered #define __wrap___bid32_quiet_less m(islessd32) #define __wrap___bid32_quiet_less_equal m(islessequald32) //#define __wrap___bid32_quiet_less_unordered #define __wrap___bid32_quiet_not_equal m(isnotequald32) //#define __wrap___bid32_quiet_not_greater //#define __wrap___bid32_quiet_not_less //#define __wrap___bid32_quiet_ordered #define __wrap___bid32_quiet_unordered m(isunorderedd32) //#define __wrap___bid32_signaling_greater //#define __wrap___bid32_signaling_greater_equal //#define __wrap___bid32_signaling_greater_unordered //#define __wrap___bid32_signaling_less //#define __wrap___bid32_signaling_less_equal //#define __wrap___bid32_signaling_less_unordered //#define __wrap___bid32_signaling_not_greater //#define __wrap___bid32_signaling_not_less //#define __wrap___bid32_add #define __wrap___bid128_tgamma m(tgammad128) #define __wrap___bid128_tanh m(tanhd128) #define __wrap___bid128_tan m(tand128) #define __wrap___bid128_sinh m(sinhd128) #define __wrap___bid128_sin m(sind128) #define __wrap___bid128_pow m(powd128) #define __wrap___bid128_log2 m(log2d128) #define __wrap___bid128_log1p m(log1pd128) #define __wrap___bid128_log10 m(log10d128) #define __wrap___bid128_log m(logd128) #define __wrap___bid128_lgamma m(lgammad128) #define __wrap___bid128_hypot m(hypotd128) #define __wrap___bid128_expm1 m(expm1d128) #define __wrap___bid128_exp2 m(exp2d128) #define __wrap___bid128_exp10 m(exp10d128) #define __wrap___bid128_exp m(expd128) #define __wrap___bid128_erfc m(erfcd128) #define __wrap___bid128_erf m(erfd128) #define __wrap___bid128_cosh m(coshd128) #define __wrap___bid128_cos m(cosd128) #define __wrap___bid128_cbrt m(cbrtd128) #define __wrap___bid128_atanh m(atanhd128) #define __wrap___bid128_atan2 m(atan2d128) #define __wrap___bid128_atan m(atand128) #define __wrap___bid128_asinh m(asinhd128) #define __wrap___bid128_asin m(asind128) #define __wrap___bid128_acosh m(acoshd128) #define __wrap___bid128_acos m(acosd128) #define __wrap___bid64_tgamma m(tgammad64) #define __wrap___bid64_tanh m(tanhd64) #define __wrap___bid64_tan m(tand64) #define __wrap___bid64_sinh m(sinhd64) #define __wrap___bid64_sin m(sind64) #define __wrap___bid64_pow m(powd64) #define __wrap___bid64_log2 m(log2d64) #define __wrap___bid64_log1p m(log1pd64) #define __wrap___bid64_log10 m(log10d64) #define __wrap___bid64_log m(logd64) #define __wrap___bid64_lgamma m(lgammad64) #define __wrap___bid64_hypot m(hypotd64) #define __wrap___bid64_expm1 m(expm1d64) #define __wrap___bid64_exp2 m(exp2d64) #define __wrap___bid64_exp10 m(exp10d64) #define __wrap___bid64_exp m(expd64) #define __wrap___bid64_erfc m(erfcd64) #define __wrap___bid64_erf m(erfd64) #define __wrap___bid64_cosh m(coshd64) #define __wrap___bid64_cos m(cosd64) #define __wrap___bid64_cbrt m(cbrtd64) #define __wrap___bid64_atanh m(atanhd64) #define __wrap___bid64_atan2 m(atan2d64) #define __wrap___bid64_atan m(atand64) #define __wrap___bid64_asinh m(asinhd64) #define __wrap___bid64_asin m(asind64) #define __wrap___bid64_acosh m(acoshd64) #define __wrap___bid64_acos m(acosd64) #include "dfp754.h" LIBRARY/src/bid128_logbd.c0000644€­ Q01134020000000566215113665770014153 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID128_FUNCTION_ARG1_NORND (bid128_logb, x) int ires, exponent_x; BID_UINT64 sign_x; BID_UINT128 res, CX; BID_SWAP128 (x); if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN/Inf BID_SWAP128 (x); if ((x.w[BID_HIGH_128W] & 0x7800000000000000ull) == 0x7800000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = (CX.w[1]) & QUIET_MASK64; res.w[BID_LOW_128W] = CX.w[0]; if ((x.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7800000000000000ull) res.w[BID_HIGH_128W] &= 0x7fffffffffffffffull; BID_RETURN (res); } // x is 0 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif res.w[BID_HIGH_128W] = 0xf800000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } BID_SWAP128 (x); BIDECIMAL_CALL1_NORND (bid128_ilogb, ires, x); if (ires & 0x80000000) { res.w[BID_HIGH_128W] = 0xb040000000000000ull; res.w[BID_LOW_128W] = (BID_UINT64)(-ires); } else { res.w[BID_HIGH_128W] = 0x3040000000000000ull; res.w[BID_LOW_128W] = (BID_UINT64)ires; } BID_RETURN (res); } LIBRARY/src/bid128_tanh.c0000644€­ Q01134020000001016115113665770014004 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // -10^-40, used in trivial path static BID_UINT128 BID128_10PM40 = {{ 0x0000000000000001ull, 0xaff0000000000000ull }}; // 1 for dummy canonizing operation static BID_UINT128 BID128_1 = {{ 0x0000000000000001ull, 0x3040000000000000ull }}; BID_F128_CONST_DEF( c_1em40, 3f7a16c262777579, c58c46475896767b); // 1e-40 BID128_FUNCTION_ARG1 (bid128_tanh, x) // Declare local variables BID_UINT128 res; BID_F128_TYPE xd, yd, abs_xd; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // Otherwise just do the operation "naively". // // However, we need to handle the case of very small inputs, which can // underflow to zero in quad and incorrectly return zero instead of the // argument. Trap this after conversion and do a crude operation to get // appropriate directed rounding. // // Note that for very large decimal128 inputs, the result of conversion // will be infinity. However, since the binary tanh function will return // the right answer of +/- 1 in such cases, it hardly seems worth putting // in a special-case check, which will rarely be needed and slows down // the usual cases. BIDECIMAL_CALL1(bid128_to_binary128,xd,x); __bid_f128_fabs(abs_xd, xd); if (__bid_f128_lt(abs_xd, c_1em40.v)) { int zf; BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isZero,zf,x); if (zf) { BIDECIMAL_CALL2(bid128_mul,res,x,BID128_1); } else { BIDECIMAL_CALL3(bid128_fma,res,x,BID128_10PM40,x); } BID_RETURN(res); } else { __bid_f128_tanh(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } } LIBRARY/src/bid32_log.c0000644€­ Q01134020000000544715113665770013560 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double log(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_log, BID_UINT32, x) BID_UINT32 res; double xd, rd; int z; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid32_isZero, z, x); if (z) { // -Infinite and Divide by Zero according C99 res = 0xf8000000; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } if (x & MASK_SIGN32) { // QNaN Indefinite res = 0x7c000000; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } BIDECIMAL_CALL1 (bid32_to_binary64, xd, x); rd = log(xd); BIDECIMAL_CALL1 (binary64_to_bid32, res, rd); BID_RETURN (res); } LIBRARY/src/bid64_cos.c0000644€­ Q01134020000011266115113665770013565 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // Extra macros #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll192_short(hi,med,lo,c) \ ((hi) = ((hi) << (c)) + ((med)>>(64-(c))), \ (med) = ((med) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define BID64_NAN 0x7c00000000000000ull // Values of (10^a / 2 pi) mod 1 for -17 <= a <= 369 // Each one is a 192-bit binary fraction static BID_UINT192 bid_decimal64_moduli[] = { {{ 0x82d9e5c60f747619ull, 0x5be1334254ee2dfaull, 0x000000000000001dull }}, {{ 0x1c82f9bc9a8c9cf5ull, 0x96cc0097514dcbc9ull, 0x0000000000000125ull }}, {{ 0x1d1dc15e097e2197ull, 0xe3f805e92d09f5dbull, 0x0000000000000b77ull }}, {{ 0x23298dac5eed4fe5ull, 0xe7b03b1bc2639a8full, 0x00000000000072aeull }}, {{ 0x5f9f88bbb5451ef6ull, 0x0ce24f1597e40997ull, 0x0000000000047ad5ull }}, {{ 0xbc3b575514b3359bull, 0x80d716d7eee85fe9ull, 0x00000000002ccc52ull }}, {{ 0x5a516952cf00180bull, 0x0866e46f5513bf21ull, 0x0000000001bffb39ull }}, {{ 0x872e1d3c1600f06full, 0x5404ec5952c5774dull, 0x00000000117fd03aull }}, {{ 0x47cd2458dc096459ull, 0x48313b7d3bb6a907ull, 0x00000000aefe2247ull }}, {{ 0xce036b78985deb7bull, 0xd1ec52e455229a48ull, 0x00000006d5ed56c8ull }}, {{ 0x0c2232b5f3ab32cdull, 0x333b3ceb535a06d8ull, 0x000000445b4563d8ull }}, {{ 0x7955fb1b84affc02ull, 0x0050613141844470ull, 0x000002ab90b5e672ull }}, {{ 0xbd5bcf132edfd811ull, 0x0323cbec8f2aac64ull, 0x00001ab3a71b0074ull }}, {{ 0x659616bfd4be70aaull, 0x1f65f73d97aabbefull, 0x00010b04870e0488ull }}, {{ 0xf7dce37e4f7066a1ull, 0x39fba867ecab5759ull, 0x000a6e2d468c2d51ull }}, {{ 0xaea0e2ef1a640248ull, 0x43d4940f3eb16983ull, 0x00684dc4c179c52cull }}, {{ 0xd248dd5707e816ceull, 0xa64dc89872ee1f24ull, 0x041309af8ec1b3baull }}, {{ 0x36d8a5664f10e410ull, 0x7f09d5f47d4d3770ull, 0x28be60db9391054aull }}, {{ 0x247675ff16a8e8a5ull, 0xf6625b8ce5042a62ull, 0x976fc893c3aa34e8ull }}, {{ 0x6ca09bf6e2991672ull, 0x9fd79380f229a7d5ull, 0xea5dd5c5a4a61119ull }}, {{ 0x3e4617a4d9fae072ull, 0x3e6bc30975a08e56ull, 0x27aa59b86e7cab00ull }}, {{ 0x6ebcec7083ccc478ull, 0x70359e5e98458f5eull, 0x8ca7813450deae02ull }}, {{ 0x53613c6525ffacacull, 0x62182fb1f2b799b0ull, 0x7e8b0c0b28b2cc18ull }}, {{ 0x41cc5bf37bfcbeb5ull, 0xd4f1dcf37b2c00e3ull, 0xf16e786f96fbf8f3ull }}, {{ 0x91fb9782d7df7316ull, 0x5172a182cfb808e0ull, 0x6e50b45be5d7b986ull }}, {{ 0xb3d3eb1c6eba7ed7ull, 0x2e7a4f1c1d3058c5ull, 0x4f270b96fa6d3f3full }}, {{ 0x06472f1c5348f467ull, 0xd0c7171923e377b9ull, 0x178673e5c8447877ull }}, {{ 0x3ec7d71b40d98c03ull, 0x27c6e6fb66e2ad3aull, 0xeb4086f9d2acb4aeull }}, {{ 0x73ce6710887f781eull, 0x8dc505d204dac446ull, 0x308545c23abf0ecdull }}, {{ 0x861006a554fab12aull, 0x89b23a34308baac0ull, 0xe534b9964b769407ull }}, {{ 0x3ca0427551caeba0ull, 0x60f64609e574ab85ull, 0xf40f3fdef2a1c84bull }}, {{ 0x5e42989531ed3443ull, 0xc99ebc62f68eb334ull, 0x88987eb57a51d2f1ull }}, {{ 0xae99f5d3f3440a9cull, 0xe0335bdda193000bull, 0x55f4f316c7323d71ull }}, {{ 0xd2039a4780a86a14ull, 0xc20196a84fbe0074ull, 0x5b917ee3c7f66672ull }}, {{ 0x342406cb069424c4ull, 0x940fe2931d6c0490ull, 0x93aef4e5cfa0007bull }}, {{ 0x096843ee41c96faaull, 0xc89ed9bf26382da2ull, 0xc4d590fa1c4004d3ull }}, {{ 0x5e12a74e91de5ca6ull, 0xd63481777e31c854ull, 0xb057a9c51a803045ull }}, {{ 0xacba8911b2af9e80ull, 0x5e0d0eaaedf1d34bull, 0xe36ca1b30901e2baull }}, {{ 0xbf495ab0fadc30ffull, 0xac8292ad4b7240f4ull, 0xe23e50fe5a12db47ull }}, {{ 0x78dd8ae9cc99e9f7ull, 0xbd19bac4f276898full, 0xd66f29ef84bc90ccull }}, {{ 0xb8a76d21fe0323a8ull, 0x63014bb178a15f9aull, 0x6057a35b2f5da7ffull }}, {{ 0x368a4353ec1f648dull, 0xde0cf4eeb64dbc0bull, 0xc36c618fd9a88ff9ull }}, {{ 0x2166a1473939ed82ull, 0xac8191531f095870ull, 0xa23bcf9e80959fc2ull }}, {{ 0x4e024cc83c434711ull, 0xbd0fad3f365d7461ull, 0x56561c3105d83d9aull }}, {{ 0x0c16ffd25aa0c6a8ull, 0x629cc4781fa68bcdull, 0x5f5d19ea3a72680bull }}, {{ 0x78e5fe378a47c294ull, 0xda1facb13c817602ull, 0xb9a3032648781071ull }}, {{ 0xb8fbee2b66cd99c5ull, 0x853cbeec5d0e9c18ull, 0x405e1f7ed4b0a472ull }}, {{ 0x39d74db2040801aeull, 0x345f753ba29218f7ull, 0x83ad3af44ee66c79ull }}, {{ 0x426908f4285010d0ull, 0x0bba945459b4f9a8ull, 0x24c44d8b15003cbcull }}, {{ 0x981a59899320a825ull, 0x7549cb4b8111c092ull, 0x6fab076ed2025f58ull }}, {{ 0xf1077f5fbf469170ull, 0x94e1f0f30ab185b9ull, 0x5cae4a543417b974ull }}, {{ 0x6a4af9bd78c1ae63ull, 0xd0d3697e6aef3943ull, 0x9ecee74a08ed3e8dull }}, {{ 0x26edc166b790cfdaull, 0x28421ef02d583ca2ull, 0x341508e45944718aull }}, {{ 0x85498e032ba81e83ull, 0x92953561c5725e55ull, 0x08d258eb7cac6f65ull }}, {{ 0x34df8c1fb4913120ull, 0xb9d415d1b677af57ull, 0x58377932debc59f7ull }}, {{ 0x10bb793d0dabeb3dull, 0x4248da3120acd968ull, 0x722abbfcb35b83adull }}, {{ 0xa752bc6288b7305full, 0x96d885eb46c07e10ull, 0x75ab57df019324c4ull }}, {{ 0x893b5bd95727e3b2ull, 0xe4753b30c384eca6ull, 0x98b16eb60fbf6fadull }}, {{ 0x5c51967d678ee4f8ull, 0xec944fe7a3313e81ull, 0xf6ee531c9d7a5ccaull }}, {{ 0x9b2fe0e60b94f1b0ull, 0x3dcb1f0c5fec710dull, 0xa54f3f1e26c79fedull }}, {{ 0x0fdec8fc73d170e4ull, 0x69ef367bbf3c6a88ull, 0x7518772d83cc3f44ull }}, {{ 0x9eb3d9dc862e68e9ull, 0x235820d5785c2950ull, 0x92f4a7c725fa78acull }}, {{ 0x3306829d3dd01918ull, 0x61714856b3999d26ull, 0xbd8e8dc77bc8b6b9ull }}, {{ 0xfe411a246a20faf1ull, 0xce6cd3630400237dull, 0x679189cad5d7233dull }}, {{ 0xee8b056c2549cd66ull, 0x104041de280162ebull, 0x0baf61ec5a67606aull }}, {{ 0x516e363974e205ffull, 0xa28292ad900ddd37ull, 0x74d9d33b8809c424ull }}, {{ 0x2e4e1e3e90d43bf3ull, 0x5919bac7a08aa429ull, 0x908240535061a96eull }}, {{ 0xcf0d2e71a84a5783ull, 0x7b014bcc456a699bull, 0xa516834123d09e4full }}, {{ 0x1683d07092e76b1eull, 0xce0cf5fab6282016ull, 0x72e1208b66262f1aull }}, {{ 0xe1262465bd0a2f28ull, 0x0c819bcb1d9140dcull, 0x7ccb4571fd7dd70cull }}, {{ 0xcb7d6bf96265d78eull, 0x7d1015ef27ac88a0ull, 0xdff0b673e6ea6678ull }}, {{ 0xf2e637bdd7fa6b88ull, 0xe2a0db578cbd5647ull, 0xbf672087052800b4ull }}, {{ 0x7cfe2d6a6fc83354ull, 0xda48916b7f655ecfull, 0x7a07454633900710ull }}, {{ 0xe1edc6285dd20144ull, 0x86d5ae32f9f5b41aull, 0xc448b4be03a046a8ull }}, {{ 0xd349bd93aa340cacull, 0x4458cdfdc399090cull, 0xaad70f6c2442c295ull }}, {{ 0x40e167c4a6087eb4ull, 0xab780be9a3fa5a80ull, 0xac669a396a9b99d4ull }}, {{ 0x88ce0dae7c54f308ull, 0xb2b0772067c78902ull, 0xbc02063e2a14024eull }}, {{ 0x580c88d0db517e53ull, 0xfae4a7440dcb5a19ull, 0x58143e6da4c81712ull }}, {{ 0x707d5828912eef41ull, 0xccee88a889f184fdull, 0x70ca70486fd0e6bdull }}, {{ 0x64e57195abd55888ull, 0x01515695636f31e6ull, 0x67e862d45e29036aull }}, {{ 0xf0f66fd8b6557554ull, 0x0d2d61d5e257f2ffull, 0x0f13dc4bad9a2224ull }}, {{ 0x69a05e771f56954dull, 0x83c5d25ad76f7dffull, 0x96c69af4c8055568ull }}, {{ 0x2043b0a73961d4feull, 0x25ba378c6a5aebfaull, 0xe3c20d8fd0355615ull }}, {{ 0x42a4e6883dd251e8ull, 0x79462b7c278d37c5ull, 0xe594879e22155cd3ull }}, {{ 0x9a7101526a373314ull, 0xbcbdb2d98b842db4ull, 0xf7cd4c2d54d5a042ull }}, {{ 0x086a0d382627fecaull, 0x5f68fc7f7329c90eull, 0xae04f9c55058429bull }}, {{ 0x542484317d8ff3e5ull, 0xba19dcfa7fa1da8cull, 0xcc31c1b523729a11ull }}, {{ 0x496d29eee79f86f2ull, 0x4502a1c8fc52897bull, 0xf9f19113627a04b1ull }}, {{ 0xde43a3550c3b4579ull, 0xb21a51d9db395ed0ull, 0xc36faac1d8c42eecull }}, {{ 0xaea461527a50b6b7ull, 0xf5073282903db428ull, 0xa25cab9277a9d53eull }}, {{ 0xd26bcd38c727232aull, 0x9247f919a2690996ull, 0x579eb3b8aca25475ull }}, {{ 0x38360437c7875fa5ull, 0xb6cfbb00581a5fe4ull, 0x6c330536be574c97ull }}, {{ 0x321c2a2dcb49bc6full, 0x241d4e037107beeaull, 0x39fe34236f68fdedull }}, {{ 0xf519a5c9f0e15c56ull, 0x69250c226a4d7525ull, 0x43ee09625a19eb43ull }}, {{ 0x930079e368cd9b60ull, 0x1b7279582706937bull, 0xa74c5dd7850330a2ull }}, {{ 0xbe04c2e2180811c2ull, 0x1278bd718641c2d3ull, 0x88fbaa6b321fe655ull }}, {{ 0x6c2f9cd4f050b192ull, 0xb8b7666f3e919c45ull, 0x59d4a82ff53eff52ull }}, {{ 0x39dc20516326efb7ull, 0x372a005871b01ab6ull, 0x824e91df9475f93bull }}, {{ 0x4299432ddf855d22ull, 0x27a4037470e10b1eull, 0x1711b2bbcc9bbc50ull }}, {{ 0x99fc9fcabb35a357ull, 0x8c68228c68ca6f2eull, 0xe6b0fb55fe155b21ull }}, {{ 0x03de3deb50186164ull, 0x7c11597c17e857d2ull, 0x02e9d15becd58f4full }}, {{ 0x26ae6b3120f3cde8ull, 0xd8ad7ed8ef136e34ull, 0x1d222d974057991aull }}, {{ 0x82d02feb49860b15ull, 0x76c6f47956c24e09ull, 0x2355c7e8836bfb0cull }}, {{ 0x1c21df30df3c6ed0ull, 0xa3c58cbd63970c5full, 0x6159cf152237ce7cull }}, {{ 0x1952b7e8b85c541cull, 0x65b77f65e3e67bb7ull, 0xcd8216d3562e10deull }}, {{ 0xfd3b2f17339b491aull, 0xf92af9fae700d526ull, 0x0714e4415dcca8afull }}, {{ 0xe44fd6e80410db03ull, 0xbbadc3cd06085385ull, 0x46d0ea8da9fe96dfull }}, {{ 0xeb1e651028a88e1cull, 0x54c9a6023c53433aull, 0xc4292988a3f1e4bdull }}, {{ 0x2f2ff2a196958d19ull, 0x4fe07c165b40a04dull, 0xa99b9f566772ef65ull }}, {{ 0xd7df7a4fe1d782f7ull, 0x1ec4d8df90864303ull, 0xa01439600a7d59f5ull }}, {{ 0x6ebac71ed26b1da8ull, 0x33b078bba53e9e26ull, 0x40ca3dc068e58393ull }}, {{ 0x534bc734382f2893ull, 0x04e4b75474722d80ull, 0x87e6698418f723c0ull }}, {{ 0x40f5c80a31d795b9ull, 0x30ef294c8c75c703ull, 0x4f001f28f9a76580ull }}, {{ 0x8999d065f26bd93cull, 0xe9579cfd7c99c620ull, 0x16013799c089f701ull }}, {{ 0x600223fb78367c58ull, 0x1d6c21e6de01bd45ull, 0xdc0c2c018563a613ull }}, {{ 0xc01567d2b220db73ull, 0x26395304ac1164b5ull, 0x9879b80f35e47cbfull }}, {{ 0x80d60e3af548927full, 0x7e3d3e2eb8adef19ull, 0xf4c130981aecdf77ull }}, {{ 0x085c8e4d94d5b8f5ull, 0xee646dd336cb56ffull, 0x8f8be5f10d40baaaull }}, {{ 0x539d8f07d059398eull, 0x4fec4a4023f165f6ull, 0x9b76fb6a84874aadull }}, {{ 0x4427964e237c3f90ull, 0x1f3ae681676dfb9full, 0x12a5d2292d48eac5ull }}, {{ 0xa98bdf0d62da7ba2ull, 0x384d010e0a4bd438ull, 0xba7a359bc4d92bb3ull }}, {{ 0x9f76b685dc88d453ull, 0x33020a8c66f64a36ull, 0x48c61815b07bb500ull }}, {{ 0x3aa3213a9d584b3full, 0xfe14697c059ee622ull, 0xd7bcf0d8e4d51201ull }}, {{ 0x4a5f4c4a2572f075ull, 0xeccc1ed83834fd56ull, 0x6d616878f052b413ull }}, {{ 0xe7b8fae5767d6496ull, 0x3ff934723211e55eull, 0x45ce14b9633b08c7ull }}, {{ 0x0d39ccf6a0e5eddfull, 0x7fbc0c75f4b2f5b5ull, 0xba0ccf3de04e57c8ull }}, {{ 0x844201a248fb4ab1ull, 0xfd587c9b8efd9912ull, 0x4480186ac30f6dd4ull }}, {{ 0x2a941056d9d0eaeeull, 0xe574de1395e7fab9ull, 0xad00f42b9e9a4a51ull }}, {{ 0xa9c8a36482292d4bull, 0xf690acc3db0fcb3bull, 0xc20989b43206e732ull }}, {{ 0xa1d661ed159bc4edull, 0xa1a6bfa68e9df054ull, 0x945f6109f44507fdull }}, {{ 0x525fd342d815b147ull, 0x50837c81922b634eull, 0xcbb9ca638ab24fe8ull }}, {{ 0x37be409c70d8ecc4ull, 0x2522dd0fb5b1e10full, 0xf541e7e36af71f13ull }}, {{ 0x2d6e861c68793fa9ull, 0x735ca29d18f2ca98ull, 0x94930ee22da736bfull }}, {{ 0xc6513d1c14bc7c9bull, 0x819e5a22f97be9f1ull, 0xcdbe94d5c888237aull }}, {{ 0xbf2c6318cf5cde10ull, 0x102f855dbed72371ull, 0x0971d059d55162c9ull }}, {{ 0x77bbdef819a0aca3ull, 0xa1db35a974676271ull, 0x5e722382552ddbdaull }}, {{ 0xad56b5b10046be5bull, 0x5290189e8c09d86eull, 0xb075631753ca968aull }}, {{ 0xc56318ea02c36f8dull, 0x39a0f63178627452ull, 0xe495dee945e9e167ull }}, {{ 0xb5def9241ba25b85ull, 0x40499deeb3d88b3bull, 0xeddab51cbb22ce08ull }}, {{ 0x1ab5bb6914579333ull, 0x82e02b5306757055ull, 0x4a8b131f4f5c0c52ull }}, {{ 0x0b19521acb6bc000ull, 0x1cc1b13e40966353ull, 0xe96ebf3919987b39ull }}, {{ 0x6efd350bf2358002ull, 0x1f90ec6e85dfe13eull, 0x1e53783afff4d03bull }}, {{ 0x55e412777617000full, 0x3ba93c513abecc70ull, 0x2f42b24dff90224full }}, {{ 0x5ae8b8aa9ce6009aull, 0x549c5b2c4b73fc63ull, 0xd89af70bfba15718ull }}, {{ 0x8d1736aa20fc0604ull, 0x4e1b8fbaf287dbe1ull, 0x760da677d44d66f3ull }}, {{ 0x82e822a549d83c27ull, 0x0d139d4d794e96cfull, 0x9c8880ae4b060581ull }}, {{ 0x1d115a74e2725984ull, 0x82c42506bd11e41bull, 0x1d5506ceee3c370aull }}, {{ 0x22ad8890d8777f2bull, 0x1ba9724362b2e90full, 0x255244154e5a2669ull }}, {{ 0x5ac755a874aaf7aaull, 0x149e76a1dafd1a97ull, 0x7536a8d50f85801bull }}, {{ 0x8bc958948eadaca7ull, 0xce30a2528de309e9ull, 0x942298529b37010eull }}, {{ 0x75dd75cd92c8be8aull, 0x0de657398ade631full, 0xc959f33a10260a94ull }}, {{ 0x9aa69a07bbd77163ull, 0x8aff683f6cafdf3aull, 0xdd838044a17c69c8ull }}, {{ 0x0a82044d566a6de1ull, 0x6dfa127a3edeb84aull, 0xa72302ae4edc21d5ull }}, {{ 0x69142b0560284acbull, 0x4bc4b8c674b332e4ull, 0x875e1acf14995256ull }}, {{ 0x1ac9ae35c192ebecull, 0xf5af37c08efffcecull, 0x49ad0c16cdfd375eull }}, {{ 0x0be0ce198fbd3737ull, 0x98d82d8595ffe139ull, 0xe0c278e40be429b5ull }}, {{ 0x76c80cff9d64282aull, 0xf871c737dbfecc3aull, 0xc798b8e876e9a117ull }}, {{ 0xa3d081fc25e991a8ull, 0xb471c82e97f3fa48ull, 0xcbf73914a5204aefull }}, {{ 0x662513d97b1fb090ull, 0x0c71d1d1ef87c6d6ull, 0xf7a83ace7342ed5dull }}, {{ 0xfd72c67ecf3ce59dull, 0x7c7232335b4dc45full, 0xac924c10809d45a2ull }}, {{ 0xe67bc0f41860f81full, 0xdc75f6019109abbfull, 0xbdb6f8a50624b858ull }}, {{ 0x00d58988f3c9b134ull, 0x9c9b9c0faa60b57full, 0x6925b6723d6f3378ull }}, {{ 0x08575f5985e0ec04ull, 0x1e14189ca7c716f6ull, 0x1b792076665802b6ull }}, {{ 0x5369b97f3ac93829ull, 0x2cc8f61e8dc6e59cull, 0x12bb449fff701b1dull }}, {{ 0x42213ef84bdc3197ull, 0xbfd99d3189c4f81bull, 0xbb50ae3ffa610f23ull }}, {{ 0x954c75b2f699efe1ull, 0x7e8023ef61b1b110ull, 0x5126ce7fc7ca9765ull }}, {{ 0xd4fc98fda2035ecfull, 0xf1016759d0f0eaa5ull, 0x2b8410fdcde9e9f6ull }}, {{ 0x51ddf9e85421b411ull, 0x6a0e098229692a7aull, 0xb328a9ea0b2323a5ull }}, {{ 0x32abc313495108acull, 0x248c5f159e1ba8c7ull, 0xff96a3246f5f6476ull }}, {{ 0xfab59ec0dd2a56b6ull, 0x6d7bb6d82d1497c7ull, 0xfbe25f6c59b9ec9dull }}, {{ 0xcb183388a3a7631eull, 0x46d52471c2cdedcfull, 0xd6d7ba3b81433e26ull }}, {{ 0xeef203566489df2aull, 0xc4536c719c0b4a1dull, 0x646d46530ca06d7eull }}, {{ 0x5574215fed62b7a7ull, 0xab423c701870e52bull, 0xec44bf3e7e4446f3ull }}, {{ 0x56894dbf45db2c85ull, 0xb0965c60f468f3b1ull, 0x3aaf7870eeaac584ull }}, {{ 0x615d0978ba8fbd37ull, 0xe5df9bc98c1984edull, 0x4adab46952abb72eull }}, {{ 0xcda25eb7499d6422ull, 0xfabc15df78ff3145ull, 0xec8b0c1d3ab527d4ull }}, {{ 0x0857b328e025e950ull, 0xcb58dabab9f7ecbaull, 0x3d6e79244b138e51ull }}, {{ 0x536cff98c17b1d20ull, 0xf1788b4b43af3f44ull, 0x6650bb6aeec38f31ull }}, {{ 0x4241fbf78ecf2342ull, 0x6eb570f0a4d878abull, 0xff27522d53a397f3ull }}, {{ 0x9693d7ab94176092ull, 0x531669667074b6b0ull, 0xf78935c54463ef82ull }}, {{ 0xe1c66cb3c8e9c5b5ull, 0x3ee01e00648f22e5ull, 0xab5c19b4abe75b17ull }}, {{ 0xd1c03f05d921b916ull, 0x74c12c03ed975cfaull, 0xb199010eb7098ee8ull }}, {{ 0x3182763a7b513ad9ull, 0x8f8bb82747e9a1ccull, 0xeffa0a93265f9514ull }}, {{ 0xef189e48d12c4c76ull, 0x9b753188cf2051f9ull, 0x5fc469bf7fbbd2cdull }}, {{ 0x56f62ed82bbafc98ull, 0x1293ef58174333c3ull, 0xbdac217afd563c08ull }}, {{ 0x659dd471b54dddf4ull, 0xb9c75970e8a005a1ull, 0x68b94ecde55e5850ull }}, {{ 0xf82a4c71150aab84ull, 0x41c97e691640384dull, 0x173d140af5af7327ull }}, {{ 0xb1a6fc6ad26ab328ull, 0x91def01ade82330bull, 0xe862c86d98da7f88ull }}, {{ 0xf085dc2c382aff8eull, 0xb2b5610cb115fe74ull, 0x13dbd447f888fb55ull }}, {{ 0x653a99ba31adfb8cull, 0xfb15ca7eeadbf091ull, 0xc6964acfb559d158ull }}, {{ 0xf44a0145f0cbd377ull, 0xced9e8f52c9765adull, 0xc1deec1d15822d79ull }}, {{ 0x8ae40cbb67f642a8ull, 0x14831993bde9f8cbull, 0x92b53922d715c6c2ull }}, {{ 0x6ce87f520f9e9a92ull, 0xcd1effc56b23b7f3ull, 0xbb143b5c66d9c394ull }}, {{ 0x4114f9349c3209afull, 0x0335fdb62f652f82ull, 0x4eca519c0481a3d0ull }}, {{ 0x8ad1bc0e19f460daull, 0x201be91dd9f3db16ull, 0x13e730182d106620ull }}, {{ 0x6c31588d038bc888ull, 0x41171b2a83868ee1ull, 0xc707e0f1c2a3fd41ull }}, {{ 0x39ed75822375d54bull, 0x8ae70fa9234194ceull, 0xc64ec9719a67e48cull }}, {{ 0x43469715629a54efull, 0x6d069c9b608fd00eull, 0xbf13de70080eed7dull }}, {{ 0xa0c1e6d5da075157ull, 0x42421e11c59e208eull, 0x76c6b060509546e6ull }}, {{ 0x4793045a84492d63ull, 0x96952cb1b82d4592ull, 0xa3c2e3c325d4c4feull }}, {{ 0xcbbe2b892adbc5daull, 0xe1d3bef131c4b7b6ull, 0x659ce59f7a4fb1f1ull }}, {{ 0xf56db35bac95ba86ull, 0xd245756bf1af2d23ull, 0xf820f83ac71cf372ull }}, {{ 0x96490194bdd9493dull, 0x36b6963770d7c367ull, 0xb149b24bc721827cull }}, {{ 0xdeda0fcf6a7cdc62ull, 0x2321de2a686da20bull, 0xece0f6f5c74f18daull }}, {{ 0xb4849e1a28e09bd3ull, 0x5f52ada814485476ull, 0x40c9a599c916f885ull }}, {{ 0x0d2e2d0598c61642ull, 0xb93ac890cad34ca3ull, 0x87e07801dae5b535ull }}, {{ 0x83cdc237f7bcde94ull, 0x3c4bd5a7ec40fe5eull, 0x4ec4b0128cf91419ull }}, {{ 0x2609962fad60b1c6ull, 0x5af6588f3a89efb1ull, 0x13aee0b981bac8fcull }}, {{ 0x7c5fdddcc5c6f1bfull, 0x8d9f759849635cebull, 0xc4d4c73f114bd9dbull }}, {{ 0xdbbeaa9fb9c5717aull, 0x883a97f2dde1a132ull, 0xb04fc876acf68293ull }}, {{ 0x9572aa3d41b66ec8ull, 0x5249ef7caad04bfcull, 0xe31dd4a2c1a119c3ull }}, {{ 0xd67aa664912053ccull, 0x36e35adeac22f7ddull, 0xdf2a4e5b904b01a1ull }}, {{ 0x60ca7fedab4345f6ull, 0x24e18cb2b95daeaaull, 0xb7a70f93a2ee104cull }}, {{ 0xc7e8ff48b0a0bb9dull, 0x70cf7efb3da8d2a7ull, 0x2c869bc45d4ca2f9ull }}, {{ 0xcf19f8d6e6475422ull, 0x681af5d068983a8dull, 0xbd4215aba4fe5dbeull }}, {{ 0x1703b864fec94951ull, 0x110d9a2415f2498aull, 0x6494d8b471efa970ull }}, {{ 0xe62533f1f3dcdd25ull, 0xaa880568db76df64ull, 0xedd0770c735c9e60ull }}, {{ 0xfd74077386a0a376ull, 0xa950361892a4b9f0ull, 0x4a24a67c819e2fc6ull }}, {{ 0xe6884a8342466298ull, 0x9d221cf5ba6f4369ull, 0xe56e80dd102dddc2ull }}, {{ 0x0152e92096bfd9eeull, 0x235521994858a223ull, 0xf65108a2a1caa99aull }}, {{ 0x0d3d1b45e37e8347ull, 0x61534ffcd376555eull, 0x9f2a565a51eaa005ull }}, {{ 0x846310bae2f120c8ull, 0xcd411fe0429f55acull, 0x37a75f87332a4035ull }}, {{ 0x2bdea74cdd6b47d4ull, 0x048b3ec29a3958bdull, 0x2c89bb47ffa6821aull }}, {{ 0xb6b28900a630ce4bull, 0x2d70739a063d7763ull, 0xbd6150cffc811504ull }}, {{ 0x22f95a067de80ef1ull, 0xc66484043e66a9e5ull, 0x65cd281fdd0ad229ull }}, {{ 0x5dbd8440eb109565ull, 0xbfed282a7002a2f3ull, 0xfa03913ea26c35a1ull }}, {{ 0xa9672a892ea5d5f6ull, 0x7f4391a8601a5d81ull, 0xc423ac72583a1851ull }}, {{ 0x9e07a95bd27a5b9cull, 0xf8a3b093c107a710ull, 0xa964bc777244f32eull }}, {{ 0x2c4c9d9638c7941bull, 0xb664e5c58a4c86a6ull, 0x9def5caa76b17fd5ull }}, {{ 0xbafe27de37cbc90cull, 0x1ff0f9b766fd427dull, 0x2b599ea8a2eefe59ull }}, {{ 0x4ded8eae2df5da7cull, 0x3f69c12a05e498e9ull, 0xb18032965d55ef7bull }}, {{ 0x0b4792cdcb9a88d4ull, 0x7a218ba43aedf91dull, 0xef01f9dfa55b5ad0ull }}, {{ 0x70cbbc09f4095845ull, 0xc54f746a4d4bbb22ull, 0x5613c2bc75918c24ull }}, {{ 0x67f55863885d72aeull, 0xb51a8c2704f54f58ull, 0x5cc59b5c97af796full }}, {{ 0x0f9573e353a67acbull, 0x1309798631951974ull, 0x9fb8119decdabe5dull }}, {{ 0x9bd686e14480cbf2ull, 0xbe5ebf3defd2fe88ull, 0x3d30b02b408b6fa2ull }}, {{ 0x166144ccad07f76full, 0x6fb3786b5e3df156ull, 0x63e6e1b085725c5bull }}, {{ 0xdfccaffec24faa58ull, 0x5d02b431ae6b6d5cull, 0xe704d0e536779b92ull }}, {{ 0xbdfedff3971ca775ull, 0xa21b09f0d03245a0ull, 0x063028f420ac13b7ull }}, {{ 0x6bf4bf83e71e8a90ull, 0x550e636821f6b847ull, 0x3de1998946b8c52cull }}, {{ 0x378f7b270731699dull, 0x528fe21153a332caull, 0x6acfff5cc337b3bbull }}, {{ 0x2b9acf8647ee2021ull, 0x399ed4ad445ffbe6ull, 0x2c1ff99fa02d0551ull }}, {{ 0xb40c1b3ecf4d4146ull, 0x40344ec4abbfd6fdull, 0xb93fc03c41c2352cull }}, {{ 0x0879107419048cc0ull, 0x820b13aeb57e65e9ull, 0x3c7d825a919613baull }}, {{ 0x54baa488fa2d7f7eull, 0x146ec4d316effb1aull, 0x5ce71789afdcc549ull }}, {{ 0x4f4a6d59c5c6faf0ull, 0xcc53b03ee55fcf07ull, 0xa106eb60de9fb4daull }}, {{ 0x18e84581b9c5cd61ull, 0xfb44e274f5be1649ull, 0x4a4531c8b23d108bull }}, {{ 0xf912b71141ba05caull, 0xd0b0d891996cdedaull, 0xe6b3f1d6f662a577ull }}, {{ 0xbabb26ac914439e5ull, 0x26e875affe40b48dull, 0x030772659fda76aeull }}, {{ 0x4b4f82bdacaa42f2ull, 0x851498dfee870d89ull, 0x1e4a77f83e88a2cdull }}, {{ 0xf11b1b68bea69d6full, 0x32cdf8bf5146875cull, 0x2ee8afb271565c07ull }}, {{ 0x6b0f12177282265aull, 0xfc0bb7792cc149a1ull, 0xd516dcf86d5f9847ull }}, {{ 0x2e96b4ea79157f87ull, 0xd8752abbbf8ce04eull, 0x52e4a1b445bbf2cfull }}, {{ 0xd1e31128bad6fb4bull, 0x7493ab557b80c30dull, 0x3cee510ab9577c1eull }}, {{ 0x32deab974c65d0ecull, 0x8dc4b156d3079e8aull, 0x614f2a6b3d6ad930ull }}, {{ 0xfcb2b3e8fbfa2937ull, 0x89aeed643e4c3165ull, 0xcd17a830662c7be5ull }}, {{ 0xdefb0719d7c59c23ull, 0x60d545ea6ef9edfbull, 0x02ec91e3fdbcd6f7ull }}, {{ 0xb5ce47026db81962ull, 0xc854bb2855c34bd6ull, 0x1d3db2e7e96065a9ull }}, {{ 0x1a0ec6184930fdd1ull, 0xd34f4f9359a0f663ull, 0x2468fd0f1dc3f8a1ull }}, {{ 0x0493bcf2dbe9ea29ull, 0x41191bc180499fdfull, 0x6c19e29729a7b652ull }}, {{ 0x2dc5617c9723259aull, 0x8afb158f02e03eb6ull, 0x3902d9e7a08d1f36ull }}, {{ 0xc9b5cedde75f77ffull, 0x6dced7961cc2731dull, 0x3a1c830c45833821ull }}, {{ 0xe11a14ab09baaffaull, 0x4a146bdd1f987f29ull, 0x451d1e7ab720314eull }}, {{ 0xcb04ceae614adfc5ull, 0xe4cc36a33bf4f7a2ull, 0xb32330cb2741ed0eull }}, {{ 0xee3012cfccecbdafull, 0xeffa22605791ac5bull, 0xff5fe7ef88934294ull }}, {{ 0x4de0bc1e013f68d3ull, 0x5fc557c36bb0bb97ull, 0xf9bf0f5b55c099d1ull }}, {{ 0x0ac7592c0c7a1842ull, 0xbdb56da234e753e9ull, 0xc17699915986022dull }}, {{ 0x6bc97bb87cc4f297ull, 0x691648561109471aull, 0x8ea1ffad7f3c15c9ull }}, {{ 0x35ded534dfb179ebull, 0x1aded35caa5cc708ull, 0x9253fcc6f858d9deull }}, {{ 0x1ab45410bceec32eull, 0x0cb4419ea79fc652ull, 0xb747dfc5b37882adull }}, {{ 0x0b0b48a761539fc8ull, 0x7f0a90328c3dbf35ull, 0x28cebdb902b51ac2ull }}, {{ 0x6e70d689cd443dd3ull, 0xf669a1f97a697812ull, 0x9813693a1b130b98ull }}, {{ 0x5068616204aa6a42ull, 0xa02053bec81eb0b8ull, 0xf0c21c450ebe73f9ull }}, {{ 0x2413cdd42ea82691ull, 0x41434573d132e733ull, 0x67951ab2937087c0ull }}, {{ 0x68c60a49d29181abull, 0x8ca0b6862bfd07ffull, 0x0bd30af9c2654d82ull }}, {{ 0x17bc66e239af10a9ull, 0x7e47213db7e24ffaull, 0x763e6dc197f50719ull }}, {{ 0xed5c04d640d6a69bull, 0xeec74c692ed71fc4ull, 0x9e70498fef9246feull }}, {{ 0x4598305e88628212ull, 0x53c8fc1bd4673db1ull, 0x3062df9f5bb6c5f5ull }}, {{ 0xb7f1e3b153d914b3ull, 0x45d9d9164c0868ecull, 0xe3dcbc399523bb95ull }}, {{ 0x2f72e4ed467acefeull, 0xba827adef854193full, 0xe69f5a3fd36553d4ull }}, {{ 0xda7cf144c0cc15eaull, 0x4918ccb5b348fc77ull, 0x0239867e41f5464full }}, {{ 0x88e16caf87f8db29ull, 0xdaf7ff1900d9dcaeull, 0x163f40ee9394bf18ull }}, {{ 0x58ce3edb4fb88f96ull, 0x8daff6fa08829ed1ull, 0xde788951c3cf76f8ull }}, {{ 0x780e74911d359bdbull, 0x88dfa5c4551a342dull, 0xb0b55d31a61aa5b5ull }}, {{ 0xb0908dab2418168aull, 0x58bc79ab530609c6ull, 0xe715a3f07d0a7917ull }}, {{ 0xe5a588af68f0e167ull, 0x775cc0b13e3c61c2ull, 0x06d86764e268bae9ull }}, {{ 0xf87756da1968ce01ull, 0xa99f86ec6e5bd19cull, 0x447409f0d8174d1eull }}, {{ 0xb4a96484fe180c0bull, 0xa03b453c4f963021ull, 0xac88636870e90332ull }}, {{ 0x0e9ded31ecf07870ull, 0x4250b45b1bdde151ull, 0xbd53e214691a1ffaull }}, {{ 0x922b43f34164b462ull, 0x97270b8f16aacd2aull, 0x6546d4cc1b053fc6ull }}, {{ 0xb5b0a7808def0bd8ull, 0xe7867396e2ac03a9ull, 0xf4c44ff90e347dc1ull }}, {{ 0x18e68b058b56766cull, 0x0b4083e4dab824a1ull, 0x8fab1fba8e0ce993ull }}, {{ 0xf9016e377160a03cull, 0x708526f08b316e4aull, 0x9caf3d498c811fbeull }}, {{ 0xba0e4e2a6dc64255ull, 0x653385656fee4eedull, 0x1ed864df7d0b3d70ull }}, {{ 0x448f0da849be9755ull, 0xf40335f65f4f1549ull, 0x3473f0bae2706663ull }}, {{ 0xad968892e171e956ull, 0x88201b9fb916d4dcull, 0x0c87674cd863ffe7ull }}, {{ 0xc7e155bcce731d58ull, 0x5141143d3ae4509eull, 0x7d4a090073e7ff0bull }}, {{ 0xcecd5960107f2575ull, 0x2c8aca644ceb2633ull, 0xe4e45a04870ff671ull }}, {{ 0x14057dc0a4f7768eull, 0xbd6be7eb012f7e06ull, 0xf0eb842d469fa06bull }}, {{ 0xc836e98671aaa18eull, 0x66370f2e0bdaec3cull, 0x693329c4c23c4435ull }}, {{ 0xd2251f4070aa4f8bull, 0xfe2697cc768d3a5full, 0x1bffa1af965aaa15ull }}, {{ 0x3573388466a71b6cull, 0xed81edfca18447beull, 0x17fc50dbdf8aa4dbull }}, {{ 0x1680352c02871238ull, 0x47134bde4f2acd6eull, 0xefdb2896bb6a7097ull }}, {{ 0xe10213b81946b62cull, 0xc6c0f6af17ac064cull, 0x5e8f95e3522865e8ull }}, {{ 0xca14c530fcc31db5ull, 0xc389a2d6ecb83f00ull, 0xb19bdae13593fb17ull }}, {{ 0xe4cfb3e9df9f2914ull, 0xa3605c653f327607ull, 0xf0168ccc17c7ceedull }}, {{ 0xf01d0722bc379ac8ull, 0x61c39bf477f89c4eull, 0x60e17ff8edce1548ull }}, {{ 0x6122475b5a2c0bccull, 0xd1a4178cafb61b15ull, 0xc8ceffb94a0cd4d3ull }}, {{ 0xcb56c99185b875fbull, 0x3068eb7edd1d0ed5ull, 0xd815fd3ce4805046ull }}, {{ 0xf163dfaf39349bcdull, 0xe41932f4a3229459ull, 0x70dbe460ed0322bdull }}, {{ 0x6de6bcd83c0e1600ull, 0xe8fbfd8e5f59cb83ull, 0x6896ebc9421f5b6aull }}, {{ 0x4b036072588cdbfdull, 0x19d7e78fb981f322ull, 0x15e535dc9539922dull }}, {{ 0xee21c477758097e3ull, 0x026f0b9d3f137f56ull, 0xdaf41a9dd43fb5c3ull }}, {{ 0x4d51acaa9705eedfull, 0x1856742476c2f965ull, 0x8d890a2a4a7d199eull }}, {{ 0x0530bea9e63b54b8ull, 0xf360896ca39dbdf5ull, 0x875a65a6e8e3002cull }}, {{ 0x33e772a2fe514f31ull, 0x81c55e3e64296b92ull, 0x4987f88518de01c1ull }}, {{ 0x070a7a5def2d17e6ull, 0x11b5ae6fe99e33b6ull, 0xdf4fb532f8ac118full }}, {{ 0x4668c7ab57c2eefeull, 0xb118d05f202e051cull, 0xb91d13fdb6b8af96ull }}, {{ 0xc017ccb16d9d55ecull, 0xeaf823b741cc331aull, 0x3b22c7e92336dbe2ull }}, {{ 0x80edfeee48255b36ull, 0x2db1652891f9ff0bull, 0x4f5bcf1b602496ddull }}, {{ 0x094bf54ed175901full, 0xc8edf395b3c3f673ull, 0x19961711c16de4a3ull }}, {{ 0x5cf795142e97a136ull, 0xd94b83d905a7a07eull, 0xffdce6b18e4aee65ull }}, {{ 0xa1abd2c9d1ec4c1aull, 0x7cf3267a388c44efull, 0xfea102ef8eed4ffaull }}, {{ 0x50b63be2333af905ull, 0xe17f80c6357ab15cull, 0xf24a1d5b95451fc8ull }}, {{ 0x271e56d6004dba32ull, 0xcefb07be16caed9bull, 0x76e52593d4b33dd8ull }}, {{ 0x872f645c030945f7ull, 0x15ce4d6ce3ed480full, 0xa4f377c64f006a78ull }}, {{ 0x47d9eb981e5cbba2ull, 0xda0f0640e744d09bull, 0x7182adbf160428b0ull }}, {{ 0xce8333f12f9f5451ull, 0x84963e8908b02610ull, 0x6f1ac976dc2996e8ull }}, {{ 0x1120076bdc394b26ull, 0x2dde715a56e17ca8ull, 0x570bdea4999fe515ull }}, {{ 0xab404a369a3cef7bull, 0xcab06d8764cede90ull, 0x6676b26e003ef2d3ull }}, {{ 0xb082e62206615aceull, 0xeae44749f014b1a6ull, 0x00a2f84c02757c45ull }}, {{ 0xe51cfd543fcd8c0bull, 0x2ceac8e360cef082ull, 0x065db2f81896dabbull }}, {{ 0xf321e54a7e077872ull, 0xc12bd8e1c815651cull, 0x3fa8fdb0f5e48b4full }}, {{ 0x7f52f4e8ec4ab472ull, 0x8bb678d1d0d5f321ull, 0x7c99e8e99aed711dull }}, {{ 0xf93d91193aeb0c72ull, 0x7520b832285b7f4eull, 0xde0319200d466b27ull }}, {{ 0xbc67aafc4d2e7c75ull, 0x934731f59392f915ull, 0xac1efb4084c02f8aull }}, {{ 0x5c0caddb03d0dc95ull, 0xc0c7f397c3bdbad9ull, 0xb935d0852f81db69ull }}, {{ 0x987eca8e26289dd1ull, 0x87cf83eda5694c7dull, 0x3c1a2533db129221ull }}, {{ 0xf4f3e98d7d962a25ull, 0x4e1b2748761cfce7ull, 0x590574068eb9b54full }}, {{ 0x91871f86e7dda573ull, 0x0d0f88d49d21e10full, 0x7a36884193411519ull }}, {{ 0xaf473b450ea8767cull, 0x829b584e2352ca9bull, 0xc621528fc08ad2faull }}, {{ 0xd8c850b29294a0d5ull, 0x1a11730d613bea14ull, 0xbd4d399d856c3dc9ull }}, {{ 0x77d326f9b9ce4855ull, 0x04ae7e85cc5724d0ull, 0x65044027363a69dbull }}, {{ 0xae3f85c1420ed354ull, 0x2ed0f139fb677024ull, 0xf22a81881e48228eull }}, {{ 0xce7b398c94944143ull, 0xd4296c43d20a616eull, 0x75a90f512ed1598dull }}, {{ 0x10d03f7dcdca8ca2ull, 0x499e3aa63467ce54ull, 0x989a992bd42d7f8aull }}, {{ 0xa8227aea09e97e51ull, 0xe02e4a7e0c0e0f48ull, 0xf609fbb649c6fb66ull }}, {{ 0x9158cd24631eef28ull, 0xc1cee8ec788c98d6ull, 0x9c63d51ee1c5d204ull }}, {{ 0xad78036bdf355794ull, 0x9215193cb57df861ull, 0x1be65334d1ba342full }}, {{ 0xc6b02236b8156bcdull, 0xb4d2fc5f16ebb3d0ull, 0x16ff4010314609dbull }}, {{ 0xc2e1562330d635feull, 0x103ddbb6e5350627ull, 0xe5f880a1ecbc6295ull }}, {{ 0x9ccd5d5fe85e1beeull, 0xa26a9524f4123d8dull, 0xfbb506533f5bd9d2ull }}, {{ 0x2005a5bf13ad1748ull, 0x5829d37188b66788ull, 0xd5123f407996823aull }}, {{ 0x40387976c4c2e8d3ull, 0x71a2426f57200b51ull, 0x52b67884bfe11647ull }}, {{ 0x8234bea3af9d1842ull, 0x705698596740712cull, 0x3b20b52f7ecadecaull }}, {{ 0x160f7264dc22f291ull, 0x6361f37e08846bbdull, 0x4f4713daf3ecb3e8ull }}, {{ 0xdc9a77f0995d79a6ull, 0xe1d382ec552c3562ull, 0x18c6c68d873f0713ull }}, {{ 0x9e08af65fda6c07cull, 0xd2431d3b53ba15dcull, 0xf7c3c187487646c6ull }}, {{ 0x2c56d9fbe88384d9ull, 0x369f24514544da9eull, 0xada58f48d49ec3c4ull }}, {{ 0xbb6483d715233075ull, 0x22376b2cb4b08a2dull, 0xc87798d84e33a5aaull }}, {{ 0x51ed2666d35fe497ull, 0x562a2fbf0ee565c9ull, 0xd4abf8730e0478a5ull }}, {{ 0x3343800441beede5ull, 0x5da5dd7694f5f9ddull, 0x4eb7b47e8c2cb675ull }}, {{ 0x00a3002a91754af2ull, 0xa87aa6a1d19bc2a4ull, 0x132d0cf179bf2095ull }}, {{ 0x065e01a9ae94ed70ull, 0x94ca825230159a68ull, 0xbfc2816ec17745d8ull }}, {{ 0x3fac10a0d1d1465full, 0xcfe91735e0d80810ull, 0x7d990e538ea8ba75ull }}, {{ 0x7cb8a648322cbfb4ull, 0x1f1ae81ac87050a2ull, 0xe7fa8f439297489aull }}, {{ 0xdf367ed1f5bf7d06ull, 0x370d110bd4632658ull, 0x0fc998a3b9e8d605ull }}, {{ 0xb820f433997ae238ull, 0x2682aa764bdf7f78ull, 0x9ddff66543185c34ull }}, {{ 0x31498a03feccd62bull, 0x811aa89ef6bafab7ull, 0x2abf9ff49ef39a09ull }}, {{ 0xecdf6427f4005db0ull, 0x0b0a9635a34dcb27ull, 0xab7c3f8e3584045full }}, {{ 0x40b9e98f8803a8e5ull, 0x6e69de186109ef8full, 0xb2da7b8e17282bb6ull }}, {{ 0x87431f9b502498eeull, 0x5022acf3ca635b98ull, 0xfc88d38ce791b520ull }}, {{ 0x489f3c11216df949ull, 0x215ac185e7e193f5ull, 0xdd5843810bb11343ull }}, {{ 0xd63858ab4e4bbcddull, 0x4d8b8f3b0ecfc794ull, 0xa572a30a74eac09full }}, {{ 0x5e3376b10ef560a2ull, 0x0773984e941dcbd0ull, 0x767a5e68912b8639ull }}, {{ 0xae02a2ea9595c658ull, 0x4a83f311c929f623ull, 0xa0c7b015abb33e3aull }}, {{ 0xcc1a5d29d7d9bf70ull, 0xe9277eb1dba39d64ull, 0x47cce0d8b5006e46ull }}, {{ 0xf907a3a26e817a5full, 0x1b8af2f2946425efull, 0xce00c87712044ec5ull }}, {{ 0xba4c6458510ec7b4ull, 0x136d7d79cbe97b5full, 0x0c07d4a6b42b13b3ull }}, {{ 0x46fbeb732a93cd03ull, 0xc246e6c1f71ed1bdull, 0x784e4e8309aec4feull }}, {{ 0xc5d7327fa9c6021full, 0x96c50393a7343164ull, 0xb30f111e60d3b1f3ull }}, {{ 0xba67f8fca1bc1535ull, 0xe3b223c48809edefull, 0xfe96ab2fc844f383ull }}, {{ 0x480fb9de5158d410ull, 0xe4f565ad50634b5dull, 0xf1e2afddd2b18326ull }}, {{ 0xd09d42af2d78489full, 0xf195f8c523e0f1a4ull, 0x72dadeaa3aef1f84ull }}, {{ 0x26249ad7c6b2d63aull, 0x6fdbb7b366c97070ull, 0x7c8cb2a64d573b31ull }}, {{ 0x7d6e0c6dc2fc5e48ull, 0x5e952d0203de6461ull, 0xdd7efa7f05684feeull }}, {{ 0xe64c7c499ddbaed1ull, 0xb1d3c21426afebceull, 0xa6f5c8f636131f4full }} }; BID_F80_CONST_DEF( c_zero, 0000000000000000, 0000000000000000 ); // 0.0 BID_F80_CONST_DEF( c_pi_ov_2, 3fff921fb54442d1, 8469898cc51701b8); // pi/2 #if 0 BID_F80_CONST_DEF( c_pi_ov_2, 3fff921fb54442d1, 8469898cc51701b8); // pi/2 BID_F80_CONST_DEF( c_pi, 4000921fb54442d1, 8469898cc51701b8); // pi BID_F80_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F80_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 BID_F80_CONST_DEF( c_8000, 400bf40000000000, 0000000000000000); // 8000 BID_F80_CONST_DEF( c_1e2000, 59f2cf6c9c9bc5f8, 84a294e53edc955f); // 1e2000 BID_F80_CONST_DEF( c_neg_8000, c00bf40000000000, 0000000000000000); //-8000 BID_F80_CONST_DEF( c_1em2000, 260b1ad56d712a5d, 7f02384e5ded39be); // 1e-2000 BID_F80_CONST_DEF( c_12000, 400c770000000000, 0000000000000000); // 12000 BID_F80_CONST_DEF( c_neg_12000, c00c770000000000, 0000000000000000); // -12000 BID_F80_CONST_DEF( c_1_ov_ln_2, 3fff71547652b82f, e1777d0ffda0d23a); // 1/ln(2) BID_F80_CONST_DEF(c_ln_10, 400026bb1bbb5551, 582dd4adac5705a6); // ln(10) BID_F80_CONST_DEF( c_ln_pi, 3fff250d048e7a1b, d0bd5f956c6a843f); // ln(pi) BID_F80_CONST_DEF( c_385, 4007810000000000, 0000000000000000); // 385. BID_F80_CONST_DEF( c_neg_398, c0078e0000000000, 0000000000000000); // -398 BID_F80_CONST_DEF( c_9_10ths, 3ffecccccccccccc, cccccccccccccccd); // .9 BID_F80_CONST_DEF( c_zero, 0000000000000000, 0000000000000000); // 0.0 BID_F80_CONST_DEF( c_two, 4000000000000000, 0000000000000000); // 2.0 #endif BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_cos, BID_UINT64, x) // Local variables. BID_UINT64 res; int s, e; BID_UINT64 c; BID_F80_TYPE xd, yd; BID_UINT192 m; BID_UINT256 p; int sf, k, ef, el; BID_F80_ASSIGN( yd, c_zero ); // Decompose the input and check for NaN and infinity. s = x >> 63; if ((x & (3ull<<61)) == (3ull<<61)) { if ((x & (0xFull<<59)) == (0xFull<<59)) { if ((x & (0x1Full<<58)) != (0x1Full<<58)) { // input is infinite, so return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = BID64_NAN; BID_RETURN (res); } else { // input is NaN, so quiet/canonize it etc. #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } } else { // "large coefficient" input e = ((x >> 51) & ((1ull<<10)-1)) - 398; c = (1ull<<53) + (x & ((1ull<<51)-1)); if ((unsigned long long)(c) > 9999999999999999ull) c = 0ull; } } else { // "small coefficient" input e = ((x >> 53) & ((1ull<<10)-1)) - 398; c = x & ((1ull<<53)-1); } // Make sure we treat zero even with huge exponent as small if (c == 0) e = -18; // If the input is trivially <= 1/10, just do the naive computation // since no range reduction is needed and the function is well-conditioned if (e < -17) { BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_cos( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN(res); } // Pick out the appropriate modulus for the exponent and multiply by coeff // Since we discard the top word p.w[3], we could specially optimize this. m = bid_decimal64_moduli[e+17]; __mul_64x192_to_256(p,c,m); // Shift up by two bits to give an integer part k and a fraction // modulo (pi/2). Note that we have to do this afterwards rather than // use modulo (pi/2) reduction at the start to keep integer parities. k = p.w[2] >> 62; sll192_short(p.w[2],p.w[1],p.w[0],2); // If the fraction is >= 1/2, add 1 to integer and complement the fraction // with an appropriate sign change so we have a "rounded to nearest" version // (Complementing is slightly different from negation but it's negligible.) // Set "sf" to the correct sign for the fraction if (p.w[2] >= 0x8000000000000000ull) { k = (k + 1) & 3; p.w[2] = ~p.w[2]; p.w[1] = ~p.w[1]; p.w[0] = ~p.w[0]; sf = 1 - s; } else { sf = s; } // Also correct k to take into account the sign if (s) k = (-k) & 3; // Normalize the binary fraction with exponent ef if (p.w[2] == 0) // This probably can't happen but I'm not quite sure { ef = 16382-64; p.w[2] = p.w[1]; p.w[1] = p.w[0]; } else ef = 16382; el = clz64_nz(p.w[2]); ef = ef - el; if (el != 0) sll128_short(p.w[2],p.w[1],el); // Now package it as a double-extended number. { BID_F80_CONST tmp; BID_F80_PACK_TRIG( tmp, sf, ef, p.w[2] ); BID_F80_ASSIGN( xd, tmp ); } // Multiply by pi/2 so we can use regular binary trig functions. __bid_f80_mul( xd, c_pi_ov_2.v, xd); // Now use the trig function depending on k: switch(k) { case 0: __bid_f80_cos( yd, xd ); break; case 1: __bid_f80_sin( yd, xd ); __bid_f80_neg( yd, yd); break; case 2: __bid_f80_cos( yd, xd ); __bid_f80_neg( yd, yd); break; case 3: __bid_f80_sin( yd, xd); break; default: break; // default added to avoid compiler warning } BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN(res); } LIBRARY/src/bid64_log10.c0000644€­ Q01134020000000711715113665770013722 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" #define BID64_1 0x31c0000000000001ull BID_F80_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F80_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 BID_F80_CONST_DEF(c_ln_10, 400026bb1bbb5551, 582dd4adac5705a6); // ln(10) BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_log10, BID_UINT64, x) BID_UINT64 res; BID_F80_TYPE xd, rd, e_bin, abs_e_bin, rt; int z; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid64_isZero, z, x); if (z) { // -Infinite and Divide by Zero according C99 res = 0xf800000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } if (x & MASK_SIGN) { // QNaN Indefinite res = 0x7c00000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } BIDECIMAL_CALL1 (bid64_to_binary80, xd, x); __bid_f80_log10( rd, xd ); __bid_f80_sub( e_bin, xd, c_one.v); __bid_f80_fabs( abs_e_bin, e_bin); if (__bid_f80_lt(abs_e_bin, c_half.v ) ) { BID_F80_TYPE tmp_e; BID_UINT64 e; BID_UINT64 b64 = (BID_UINT64) BID64_1; BIDECIMAL_CALL2 (bid64_sub, e, x, b64); BIDECIMAL_CALL1 (bid64_to_binary80, tmp_e, e); __bid_f80_mul( rt, c_ln_10.v, xd ); __bid_f80_sub( tmp_e, e_bin, tmp_e); __bid_f80_div( tmp_e, tmp_e, rt); __bid_f80_sub( rd, rd, tmp_e); } BIDECIMAL_CALL1 (binary80_to_bid64, res, rd); BID_RETURN (res); } LIBRARY/src/bid128_round_integral.c0000644€­ Q01134020000021212515113665770016072 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" /***************************************************************************** * BID128_round_integral_exact ****************************************************************************/ BID128_FUNCTION_ARG1 (bid128_round_integral_exact, x) BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits = 0; int q, ind, shift; BID_UINT128 C1; BID_UINT256 fstar; BID_UINT256 P256; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; } BID_RETURN (res) } else { // x is not a NaN, so it must be infinity if ((x.w[1] & MASK_SIGN) == 0x0ull) { // x is +inf // return +inf res.w[1] = 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // x is -inf // return -inf res.w[1] = 0xf800000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN (res); } } // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for non-canonical values (treated as zero) if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } // test for input equal to zero if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 // return 0 preserving the sign bit and the preferred exponent // of MAX(Q(x), 0) if (x_exp <= (0x1820ull << 49)) { res.w[1] = (x.w[1] & 0x8000000000000000ull) | 0x3040000000000000ull; } else { res.w[1] = x_sign | x_exp; } res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero switch (rnd_mode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // if (exp <= -(p+1)) return 0.0 if (x_exp <= 0x2ffa000000000000ull) { // 0x2ffa000000000000ull == -35 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_DOWN: // if (exp <= -p) return -1.0 or +0.0 if (x_exp <= 0x2ffc000000000000ull) { // 0x2ffa000000000000ull == -34 if (x_sign) { // if negative, return negative 1, because we know coefficient // is non-zero (would have been caught above) res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000001ull; } else { // if positive, return positive 0, because we know coefficient is // non-zero (would have been caught above) res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; } *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_UP: // if (exp <= -p) return -0.0 or +1.0 if (x_exp <= 0x2ffc000000000000ull) { // 0x2ffc000000000000ull == -34 if (x_sign) { // if negative, return negative 0, because we know the coefficient // is non-zero (would have been caught above) res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // if positive, return positive 1, because we know coefficient is // non-zero (would have been caught above) res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000001ull; } *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_TO_ZERO: // if (exp <= -p) return -0.0 or +0.0 if (x_exp <= 0x2ffc000000000000ull) { // 0x2ffc000000000000ull == -34 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; default: break; // default added to avoid compiler warning } // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if (exp >= 0) { // -exp <= 0 // the argument is an integer already res.w[1] = x.w[1]; res.w[0] = x.w[0]; BID_RETURN (res); } // exp < 0 switch (rnd_mode) { case BID_ROUNDING_TO_NEAREST: if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); // determine the value of res and fstar // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact // Note: we are going to use bid_ten2mk128[] instead of bid_ten2mk128trunc[] if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 // redundant shift = bid_shiftright128[ind - 1]; // shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* < 10^(-x) <=> midpoint // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] // if 0 < fstar < 10^(-x), subtract 1 if odd (for rounding to even) if ((res.w[0] & 0x0000000000000001ull) && // is result odd, and from MP? ((fstar.w[1] < (bid_ten2mk128[ind - 1].w[1])) || ((fstar.w[1] == bid_ten2mk128[ind - 1].w[1]) && (fstar.w[0] < bid_ten2mk128[ind - 1].w[0])))) { // subtract 1 to make even res.w[0]--; } if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128[ind - 1].w[1] || (tmp64 == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* < 10^(-x) <=> midpoint // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((res.w[0] & 0x0000000000000001ull) && // is result odd, and from MP? fstar.w[2] == 0 && (fstar.w[1] < bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] < bid_ten2mk128[ind - 1].w[0]))) { // subtract 1 to make even res.w[0]--; } if (fstar.w[2] > bid_onehalf128[ind - 1] || (fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* < 10^(-x) <=> midpoint // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((res.w[0] & 0x0000000000000001ull) && // is result odd, and from MP? fstar.w[3] == 0 && fstar.w[2] == 0 && (fstar.w[1] < bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] < bid_ten2mk128[ind - 1].w[0]))) { // subtract 1 to make even res.w[0]--; } if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN (res); } else { // if ((q + exp) < 0) <=> q < -exp // the result is +0 or -0 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_TIES_AWAY: if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // determine also the inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact // Note: we are going to use bid_ten2mk128[] instead of bid_ten2mk128trunc[] // shift right C* by Ex-128 = bid_shiftright128[ind] if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 // redundant shift = bid_shiftright128[ind - 1]; // shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128[ind - 1].w[1] || (tmp64 == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0]))) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; if (fstar.w[2] > bid_onehalf128[ind - 1] || (fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint, it was already rounded away from zero res.w[1] |= x_sign | 0x3040000000000000ull; BID_RETURN (res); } else { // if ((q + exp) < 0) <=> q < -exp // the result is +0 or -0 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_DOWN: if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // (number of digits to be chopped off) // chop off ind digits from the lower part of C1 // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate // FOR ROUND_TO_ZERO, WE DON'T NEED TO ADD 1/2 ULP // FOR ROUND_TO_POSITIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF POSITIVE // FOR ROUND_TO_NEGATIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF NEGATIVE // tmp64 = C1.w[0]; // if (ind <= 19) { // C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; // } else { // C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; // C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; // } // if (C1.w[0] < tmp64) C1.w[1]++; // if carry-out from C1.w[0], increment C1.w[1] // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; // redundant fstar.w[1] = P256.w[1]; // redundant fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((P256.w[1] > bid_ten2mk128[ind - 1].w[1]) || (P256.w[1] == bid_ten2mk128[ind - 1].w[1] && (P256.w[0] >= bid_ten2mk128[ind - 1].w[0]))) { *pfpsf |= BID_INEXACT_EXCEPTION; // if positive, the truncated value is already the correct result if (x_sign) { // if negative if (++res.w[0] == 0) { res.w[1]++; } } } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { *pfpsf |= BID_INEXACT_EXCEPTION; // if positive, the truncated value is already the correct result if (x_sign) { // if negative if (++res.w[0] == 0) { res.w[1]++; } } } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { *pfpsf |= BID_INEXACT_EXCEPTION; // if positive, the truncated value is already the correct result if (x_sign) { // if negative if (++res.w[0] == 0) { res.w[1]++; } } } } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 if (x_sign) { // negative rounds down to -1.0 res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000001ull; } else { // positive rpunds down to +0.0 res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; } *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_UP: if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // (number of digits to be chopped off) // chop off ind digits from the lower part of C1 // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate // FOR ROUND_TO_ZERO, WE DON'T NEED TO ADD 1/2 ULP // FOR ROUND_TO_POSITIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF POSITIVE // FOR ROUND_TO_NEGATIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF NEGATIVE // tmp64 = C1.w[0]; // if (ind <= 19) { // C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; // } else { // C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; // C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; // } // if (C1.w[0] < tmp64) C1.w[1]++; // if carry-out from C1.w[0], increment C1.w[1] // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; // redundant fstar.w[1] = P256.w[1]; // redundant fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((P256.w[1] > bid_ten2mk128[ind - 1].w[1]) || (P256.w[1] == bid_ten2mk128[ind - 1].w[1] && (P256.w[0] >= bid_ten2mk128[ind - 1].w[0]))) { *pfpsf |= BID_INEXACT_EXCEPTION; // if negative, the truncated value is already the correct result if (!x_sign) { // if positive if (++res.w[0] == 0) { res.w[1]++; } } } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { *pfpsf |= BID_INEXACT_EXCEPTION; // if negative, the truncated value is already the correct result if (!x_sign) { // if positive if (++res.w[0] == 0) { res.w[1]++; } } } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { *pfpsf |= BID_INEXACT_EXCEPTION; // if negative, the truncated value is already the correct result if (!x_sign) { // if positive if (++res.w[0] == 0) { res.w[1]++; } } } } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 if (x_sign) { // negative rounds up to -0.0 res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // positive rpunds up to +1.0 res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000001ull; } *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_TO_ZERO: if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // (number of digits to be chopped off) // chop off ind digits from the lower part of C1 // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate // FOR ROUND_TO_ZERO, WE DON'T NEED TO ADD 1/2 ULP // FOR ROUND_TO_POSITIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF POSITIVE // FOR ROUND_TO_NEGATIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF NEGATIVE //tmp64 = C1.w[0]; // if (ind <= 19) { // C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; // } else { // C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; // C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; // } // if (C1.w[0] < tmp64) C1.w[1]++; // if carry-out from C1.w[0], increment C1.w[1] // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; // redundant fstar.w[1] = P256.w[1]; // redundant fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((P256.w[1] > bid_ten2mk128[ind - 1].w[1]) || (P256.w[1] == bid_ten2mk128[ind - 1].w[1] && (P256.w[0] >= bid_ten2mk128[ind - 1].w[0]))) { *pfpsf |= BID_INEXACT_EXCEPTION; } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { *pfpsf |= BID_INEXACT_EXCEPTION; } } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 the result is +0 or -0 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; default: break; // default added to avoid compiler warning } BID_RETURN (res); } /***************************************************************************** * BID128_round_integral_nearest_even ****************************************************************************/ BID128_FUNCTION_ARG1_NORND (bid128_round_integral_nearest_even, x) BID_UINT128 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits = 0; int q, ind, shift; BID_UINT128 C1; // BID_UINT128 res is C* at first - represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; } BID_RETURN (res) } else { // x is not a NaN, so it must be infinity if ((x.w[1] & MASK_SIGN) == 0x0ull) { // x is +inf // return +inf res.w[1] = 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // x is -inf // return -inf res.w[1] = 0xf800000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN (res); } } // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for non-canonical values (treated as zero) if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } // test for input equal to zero if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 // return 0 preserving the sign bit and the preferred exponent // of MAX(Q(x), 0) if (x_exp <= (0x1820ull << 49)) { res.w[1] = (x.w[1] & 0x8000000000000000ull) | 0x3040000000000000ull; } else { res.w[1] = x_sign | x_exp; } res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // if (exp <= -(p+1)) return 0 if (x_exp <= 0x2ffa000000000000ull) { // 0x2ffa000000000000ull == -35 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if (exp >= 0) { // -exp <= 0 // the argument is an integer already res.w[1] = x.w[1]; res.w[0] = x.w[0]; BID_RETURN (res); } else if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; the exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); // determine the value of res and fstar if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 // redundant shift = bid_shiftright128[ind - 1]; // shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; // redundant fstar.w[1] = P256.w[1]; // redundant fstar.w[0] = P256.w[0]; // fraction f* < 10^(-x) <=> midpoint // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] // if 0 < fstar < 10^(-x), subtract 1 if odd (for rounding to even) if ((res.w[0] & 0x0000000000000001ull) && // is result odd, and from MP? ((P256.w[1] < (bid_ten2mk128[ind - 1].w[1])) || ((P256.w[1] == bid_ten2mk128[ind - 1].w[1]) && (P256.w[0] < bid_ten2mk128[ind - 1].w[0])))) { // subtract 1 to make even res.w[0]--; } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* < 10^(-x) <=> midpoint // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((res.w[0] & 0x0000000000000001ull) && // is result odd, and from MP? fstar.w[2] == 0 && (fstar.w[1] < bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] < bid_ten2mk128[ind - 1].w[0]))) { // subtract 1 to make even res.w[0]--; } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* < 10^(-x) <=> midpoint // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((res.w[0] & 0x0000000000000001ull) && // is result odd, and from MP? fstar.w[3] == 0 && fstar.w[2] == 0 && (fstar.w[1] < bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] < bid_ten2mk128[ind - 1].w[0]))) { // subtract 1 to make even res.w[0]--; } } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN (res); } else { // if ((q + exp) < 0) <=> q < -exp // the result is +0 or -0 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } } /***************************************************************************** * BID128_round_integral_negative ****************************************************************************/ BID128_FUNCTION_ARG1_NORND (bid128_round_integral_negative, x) BID_UINT128 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo // (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits = 0; int q, ind, shift; BID_UINT128 C1; // BID_UINT128 res is C* at first - represents up to 34 decimal digits ~ // 113 bits BID_UINT256 fstar; BID_UINT256 P256; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; } BID_RETURN (res) } else { // x is not a NaN, so it must be infinity if ((x.w[1] & MASK_SIGN) == 0x0ull) { // x is +inf // return +inf res.w[1] = 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // x is -inf // return -inf res.w[1] = 0xf800000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN (res); } } // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for non-canonical values (treated as zero) if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } // test for input equal to zero if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 // return 0 preserving the sign bit and the preferred exponent // of MAX(Q(x), 0) if (x_exp <= (0x1820ull << 49)) { res.w[1] = (x.w[1] & 0x8000000000000000ull) | 0x3040000000000000ull; } else { res.w[1] = x_sign | x_exp; } res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // if (exp <= -p) return -1.0 or +0.0 if (x_exp <= 0x2ffc000000000000ull) { // 0x2ffc000000000000ull == -34 if (x_sign) { // if negative, return negative 1, because we know the coefficient // is non-zero (would have been caught above) res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000001ull; } else { // if positive, return positive 0, because we know coefficient is // non-zero (would have been caught above) res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN (res); } // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if (exp >= 0) { // -exp <= 0 // the argument is an integer already res.w[1] = x.w[1]; res.w[0] = x.w[0]; BID_RETURN (res); } else if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; the exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // (number of digits to be chopped off) // chop off ind digits from the lower part of C1 // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate // FOR ROUND_TO_ZERO, WE DON'T NEED TO ADD 1/2 ULP // FOR ROUND_TO_POSITIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF POSITIVE // FOR ROUND_TO_NEGATIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF NEGATIVE //tmp64 = C1.w[0]; // if (ind <= 19) { // C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; // } else { // C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; // C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; // } // if (C1.w[0] < tmp64) C1.w[1]++; // if carry-out from C1.w[0], increment C1.w[1] // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // if positive, the truncated value is already the correct result if (x_sign) { // if negative // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; // redundant fstar.w[1] = P256.w[1]; // redundant fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((P256.w[1] > bid_ten2mk128[ind - 1].w[1]) || (P256.w[1] == bid_ten2mk128[ind - 1].w[1] && (P256.w[0] >= bid_ten2mk128[ind - 1].w[0]))) { if (++res.w[0] == 0) { res.w[1]++; } } } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // if positive, the truncated value is already the correct result if (x_sign) { // if negative // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { if (++res.w[0] == 0) { res.w[1]++; } } } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; // if positive, the truncated value is already the correct result if (x_sign) { // if negative fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { if (++res.w[0] == 0) { res.w[1]++; } } } } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 if (x_sign) { // negative rounds down to -1.0 res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000001ull; } else { // positive rpunds down to +0.0 res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN (res); } } /***************************************************************************** * BID128_round_integral_positive ****************************************************************************/ BID128_FUNCTION_ARG1_NORND (bid128_round_integral_positive, x) BID_UINT128 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo // (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits = 0; int q, ind, shift; BID_UINT128 C1; // BID_UINT128 res is C* at first - represents up to 34 decimal digits ~ // 113 bits BID_UINT256 fstar; BID_UINT256 P256; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; } BID_RETURN (res) } else { // x is not a NaN, so it must be infinity if ((x.w[1] & MASK_SIGN) == 0x0ull) { // x is +inf // return +inf res.w[1] = 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // x is -inf // return -inf res.w[1] = 0xf800000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN (res); } } // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for non-canonical values (treated as zero) if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } // test for input equal to zero if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 // return 0 preserving the sign bit and the preferred exponent // of MAX(Q(x), 0) if (x_exp <= (0x1820ull << 49)) { res.w[1] = (x.w[1] & 0x8000000000000000ull) | 0x3040000000000000ull; } else { res.w[1] = x_sign | x_exp; } res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // if (exp <= -p) return -0.0 or +1.0 if (x_exp <= 0x2ffc000000000000ull) { // 0x2ffc000000000000ull == -34 if (x_sign) { // if negative, return negative 0, because we know the coefficient // is non-zero (would have been caught above) res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // if positive, return positive 1, because we know coefficient is // non-zero (would have been caught above) res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000001ull; } BID_RETURN (res); } // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if (exp >= 0) { // -exp <= 0 // the argument is an integer already res.w[1] = x.w[1]; res.w[0] = x.w[0]; BID_RETURN (res); } else if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // (number of digits to be chopped off) // chop off ind digits from the lower part of C1 // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate // FOR ROUND_TO_ZERO, WE DON'T NEED TO ADD 1/2 ULP // FOR ROUND_TO_POSITIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF POSITIVE // FOR ROUND_TO_NEGATIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF NEGATIVE // tmp64 = C1.w[0]; // if (ind <= 19) { // C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; // } else { // C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; // C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; // } // if (C1.w[0] < tmp64) C1.w[1]++; // if carry-out from C1.w[0], increment C1.w[1] // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // if negative, the truncated value is already the correct result if (!x_sign) { // if positive // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; // redundant fstar.w[1] = P256.w[1]; // redundant fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((P256.w[1] > bid_ten2mk128[ind - 1].w[1]) || (P256.w[1] == bid_ten2mk128[ind - 1].w[1] && (P256.w[0] >= bid_ten2mk128[ind - 1].w[0]))) { if (++res.w[0] == 0) { res.w[1]++; } } } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // if negative, the truncated value is already the correct result if (!x_sign) { // if positive // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { if (++res.w[0] == 0) { res.w[1]++; } } } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; // if negative, the truncated value is already the correct result if (!x_sign) { // if positive fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* > 10^(-x) <=> inexact // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { if (++res.w[0] == 0) { res.w[1]++; } } } } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 if (x_sign) { // negative rounds up to -0.0 res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // positive rpunds up to +1.0 res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000001ull; } BID_RETURN (res); } } /***************************************************************************** * BID128_round_integral_zero ****************************************************************************/ BID128_FUNCTION_ARG1_NORND (bid128_round_integral_zero, x) BID_UINT128 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo // (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits = 0; int q, ind, shift; BID_UINT128 C1; // BID_UINT128 res is C* at first - represents up to 34 decimal digits ~ // 113 bits BID_UINT256 P256; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; } BID_RETURN (res) } else { // x is not a NaN, so it must be infinity if ((x.w[1] & MASK_SIGN) == 0x0ull) { // x is +inf // return +inf res.w[1] = 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // x is -inf // return -inf res.w[1] = 0xf800000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN (res); } } // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for non-canonical values (treated as zero) if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } // test for input equal to zero if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 // return 0 preserving the sign bit and the preferred exponent // of MAX(Q(x), 0) if (x_exp <= (0x1820ull << 49)) { res.w[1] = (x.w[1] & 0x8000000000000000ull) | 0x3040000000000000ull; } else { res.w[1] = x_sign | x_exp; } res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // if (exp <= -p) return -0.0 or +0.0 if (x_exp <= 0x2ffc000000000000ull) { // 0x2ffc000000000000ull == -34 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if (exp >= 0) { // -exp <= 0 // the argument is an integer already res.w[1] = x.w[1]; res.w[0] = x.w[0]; BID_RETURN (res); } else if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; the exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // (number of digits to be chopped off) // chop off ind digits from the lower part of C1 // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate // FOR ROUND_TO_ZERO, WE DON'T NEED TO ADD 1/2 ULP // FOR ROUND_TO_POSITIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF POSITIVE // FOR ROUND_TO_NEGATIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF NEGATIVE //tmp64 = C1.w[0]; // if (ind <= 19) { // C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; // } else { // C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; // C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; // } // if (C1.w[0] < tmp64) C1.w[1]++; // if carry-out from C1.w[0], increment C1.w[1] // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 the result is +0 or -0 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } } /***************************************************************************** * BID128_round_integral_nearest_away ****************************************************************************/ BID128_FUNCTION_ARG1_NORND (bid128_round_integral_nearest_away, x) BID_UINT128 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo // (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits = 0; int q, ind, shift; BID_UINT128 C1; // BID_UINT128 res is C* at first - represents up to 34 decimal digits ~ // 113 bits // BID_UINT256 fstar; BID_UINT256 P256; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; } BID_RETURN (res) } else { // x is not a NaN, so it must be infinity if ((x.w[1] & MASK_SIGN) == 0x0ull) { // x is +inf // return +inf res.w[1] = 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // x is -inf // return -inf res.w[1] = 0xf800000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN (res); } } // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for non-canonical values (treated as zero) if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } // test for input equal to zero if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 // return 0 preserving the sign bit and the preferred exponent // of MAX(Q(x), 0) if (x_exp <= (0x1820ull << 49)) { res.w[1] = (x.w[1] & 0x8000000000000000ull) | 0x3040000000000000ull; } else { res.w[1] = x_sign | x_exp; } res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // if (exp <= -(p+1)) return 0.0 if (x_exp <= 0x2ffa000000000000ull) { // 0x2ffa000000000000ull == -35 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if (exp >= 0) { // -exp <= 0 // the argument is an integer already res.w[1] = x.w[1]; res.w[0] = x.w[0]; BID_RETURN (res); } else if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; the exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); res.w[1] = (P256.w[3] >> shift); } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1]; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = (P256.w[3] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint, it was already rounded away from zero res.w[1] |= x_sign | 0x3040000000000000ull; BID_RETURN (res); } else { // if ((q + exp) < 0) <=> q < -exp // the result is +0 or -0 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } } LIBRARY/src/bid128_quantize.c0000644€­ Q01134020000002156215113665770014721 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #define BID_128RES #include "bid_internal.h" BID128_FUNCTION_ARG2 (bid128_quantize, x, y) BID_UINT256 CT; BID_UINT128 CX, CY, T, CX2, CR, Stemp, res, REM_H, C2N; BID_UINT64 sign_x, sign_y, remainder_h, carry, CY64, valid_x; int_float tempx; int exponent_x, exponent_y, digits_x, extra_digits, amount; int expon_diff, total_digits, bin_expon_cx, rmode, status; BID_OPT_SAVE_BINARY_FLAGS() valid_x = unpack_BID128_value (&sign_x, &exponent_x, &CX, x); // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value (&sign_y, &exponent_y, &CY, y)) { // y is Inf. or NaN #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if y is NaN if ((y.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull) { // set status flags __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); } #endif if ((x.w[1] & 0x7c00000000000000ull) != 0x7c00000000000000ull) { res.w[1] = CY.w[1] & QUIET_MASK64; res.w[0] = CY.w[0]; } else { res.w[1] = CX.w[1] & QUIET_MASK64; res.w[0] = CX.w[0]; } BID_RETURN (res); } // y is Infinity? if ((y.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if x is not Inf. if (((x.w[1] & 0x7c00000000000000ull) < 0x7800000000000000ull)) { // return NaN #ifdef BID_SET_STATUS_FLAGS // set status flags __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; BID_RETURN (res); } else if (((x.w[1] & 0x7c00000000000000ull) <= 0x7800000000000000ull)) { res.w[1] = CX.w[1] & QUIET_MASK64; res.w[0] = CX.w[0]; BID_RETURN (res); } } } if (!valid_x) { // test if x is NaN or Inf if ((x.w[1] & 0x7c00000000000000ull) == 0x7800000000000000ull) { #ifdef BID_SET_STATUS_FLAGS // set status flags __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; BID_RETURN (res); } else if ((x.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { if ((x.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS // set status flags __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif } res.w[1] = CX.w[1] & QUIET_MASK64; res.w[0] = CX.w[0]; BID_RETURN (res); } if (!CX.w[1] && !CX.w[0]) { bid_get_BID128_very_fast (&res, sign_x, exponent_y, CX); BID_RETURN (res); } } // get number of decimal digits in coefficient_x if (CX.w[1]) { tempx.d = (float) CX.w[1]; bin_expon_cx = ((tempx.i >> 23) & 0xff) - 0x7f + 64; } else { tempx.d = (float) CX.w[0]; bin_expon_cx = ((tempx.i >> 23) & 0xff) - 0x7f; } digits_x = bid_estimate_decimal_digits[bin_expon_cx]; if (CX.w[1] > bid_power10_table_128[digits_x].w[1] || (CX.w[1] == bid_power10_table_128[digits_x].w[1] && CX.w[0] >= bid_power10_table_128[digits_x].w[0])) digits_x++; expon_diff = exponent_x - exponent_y; total_digits = digits_x + expon_diff; if ((BID_UINT32) total_digits <= 34) { if (expon_diff >= 0) { T = bid_power10_table_128[expon_diff]; __mul_128x128_low (CX2, T, CX); bid_get_BID128_very_fast (&res, sign_x, exponent_y, CX2); BID_RETURN (res); } #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_x && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif // must round off -expon_diff digits extra_digits = -expon_diff; __add_128_128 (CX, CX, bid_round_const_table_128[rmode][extra_digits]); // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_to_256 (CT, CX, bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; CX2.w[0] = CT.w[2]; CX2.w[1] = CT.w[3]; if (amount >= 64) { CR.w[1] = 0; CR.w[0] = CX2.w[1] >> (amount - 64); } else { __shr_128 (CR, CX2, amount); } #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rnd_mode == 0) #endif if (CR.w[0] & 1) { // check whether fractional part of initial_P/10^extra_digits is // exactly .5 this is the same as fractional part of // (initial_P + 0.5*10^extra_digits)/10^extra_digits is exactly zero // get remainder if (amount >= 64) { remainder_h = CX2.w[0] | (CX2.w[1] << (128 - amount)); } else remainder_h = CX2.w[0] << (64 - amount); // test whether fractional part is 0 if (!remainder_h && (CT.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (CT.w[1] == bid_reciprocals10_128[extra_digits].w[1] && CT.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) { CR.w[0]--; } } #endif #ifdef BID_SET_STATUS_FLAGS status = BID_INEXACT_EXCEPTION; // get remainder if (amount >= 64) { REM_H.w[1] = (CX2.w[1] << (128 - amount)); REM_H.w[0] = CX2.w[0]; } else { REM_H.w[1] = CX2.w[0] << (64 - amount); REM_H.w[0] = 0; } switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (REM_H.w[1] == 0x8000000000000000ull && !REM_H.w[0] && (CT.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (CT.w[1] == bid_reciprocals10_128[extra_digits].w[1] && CT.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!(REM_H.w[1] | REM_H.w[0]) && (CT.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (CT.w[1] == bid_reciprocals10_128[extra_digits].w[1] && CT.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], CY64, CT.w[0], bid_reciprocals10_128[extra_digits].w[0]); __add_carry_in_out (Stemp.w[1], carry, CT.w[1], bid_reciprocals10_128[extra_digits].w[1], CY64); if (amount < 64) { C2N.w[1] = 0; C2N.w[0] = ((BID_UINT64) 1) << amount; REM_H.w[0] = REM_H.w[1] >> (64 - amount); REM_H.w[1] = 0; } else { C2N.w[1] = ((BID_UINT64) 1) << (amount - 64); C2N.w[0] = 0; REM_H.w[1] >>= (128 - amount); } REM_H.w[0] += carry; if (REM_H.w[0] < carry) REM_H.w[1]++; if (__unsigned_compare_ge_128 (REM_H, C2N)) status = BID_EXACT_STATUS; } __set_status_flags (pfpsf, status); #endif bid_get_BID128_very_fast (&res, sign_x, exponent_y, CR); BID_RETURN (res); } if (total_digits < 0) { CR.w[1] = CR.w[0] = 0; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_x && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; if (rmode == BID_ROUNDING_UP) CR.w[0] = 1; #endif #endif #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif bid_get_BID128_very_fast (&res, sign_x, exponent_y, CR); BID_RETURN (res); } // else more than 34 digits in coefficient #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; BID_RETURN (res); } LIBRARY/src/bid64_acosh.c0000644€­ Q01134020000000701615113665770014073 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_acosh, BID_UINT64, x) BID_UINT64 sign_x, coefficient_x, near_one, one; BID_UINT64 valid_x, res, z, z2; BID_F80_TYPE xd, zd; int exponent_x, cmp_res; valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN if ((x & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK64; BID_RETURN (res); } // x is Infinity? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if (sign_x) // -Inf __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = sign_x? 0x7c00000000000000ull : 0x7800000000000000ull; BID_RETURN (res); } // x is 0 } // calculate asinh(sqrt(x*x-1)) for x near 1 (x<1+1/32 = (10^5 + 5^5)/10^5 ) near_one = 0x31200000000192d5ull; BIDECIMAL_CALL2_NORND (bid64_quiet_less, cmp_res, x, near_one); if(cmp_res) { // x<1+1/32 one = 0x31c0000000000001ull; BIDECIMAL_CALL2_NORND (bid64_quiet_greater, cmp_res, one, x); if(cmp_res) { // x < 1 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c00000000000000ull; BID_RETURN (res); } // -1 one = 0xb1c0000000000001ull; // x*x-1 BIDECIMAL_CALL3(bid64_fma, z2, x, x, one); // sqrt(x*x-1) BIDECIMAL_CALL1 (bid64_sqrt, z, z2); BIDECIMAL_CALL1 (bid64_to_binary80, xd, z); __bid_f80_asinh(zd, xd); BIDECIMAL_CALL1 (binary80_to_bid64, res, zd); BID_RETURN (res); } BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_acosh(zd,xd); BIDECIMAL_CALL1(binary80_to_bid64,res,zd); BID_RETURN (res); } LIBRARY/src/bid64_log.c0000644€­ Q01134020000000674215113665770013564 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" #define BID64_1 0x31c0000000000001ull BID_F80_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F80_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_log, BID_UINT64, x) BID_UINT64 res; BID_F80_TYPE xd, rd, e_bin, abs_e_bin; int z; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid64_isZero, z, x); if (z) { // -Infinite and Divide by Zero according C99 res = 0xf800000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } if (x & MASK_SIGN) { // QNaN Indefinite res = 0x7c00000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } BIDECIMAL_CALL1 (bid64_to_binary80, xd, x); __bid_f80_log( rd, xd ); __bid_f80_sub( e_bin, xd, c_one.v ); __bid_f80_fabs( abs_e_bin, e_bin ); if ( __bid_f80_lt( abs_e_bin, c_half.v ) ) { BID_F80_TYPE tmp_e; BID_UINT64 e; BID_UINT64 b64 = (BID_UINT64) BID64_1; BIDECIMAL_CALL2 (bid64_sub, e, x, b64); BIDECIMAL_CALL1 (bid64_to_binary80, tmp_e, e); __bid_f80_sub( tmp_e, e_bin, tmp_e ); __bid_f80_div( tmp_e, tmp_e, xd ); __bid_f80_sub( rd, rd, tmp_e ); } BIDECIMAL_CALL1 (binary80_to_bid64, res, rd); BID_RETURN (res); } LIBRARY/src/bid64_exp10.c0000644€­ Q01134020000000607515113665770013737 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_F80_CONST_DEF( c_385, 4007810000000000, 0000000000000000); // 385. BID_F80_CONST_DEF( c_neg_398, c0078e0000000000, 0000000000000000); // -398 BID_F80_CONST_DEF( c_1e2000, 59f2cf6c9c9bc5f8, 84a294e53edc955f); // 1e2000 BID_F80_CONST_DEF( c_1em2000, 260b1ad56d712a5d, 7f02384e5ded39be); // 1e-2000 BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_exp10, BID_UINT64, x) BID_UINT64 sign_x, coefficient_x; BID_UINT64 valid_x, res; BID_F80_TYPE xd, zd; int exponent_x; valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN if ((x & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK64; BID_RETURN (res); } // x is Infinity? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { res = sign_x ? 0ull : 0x7800000000000000ull; BID_RETURN (res); } // x is 0 res = 0x31c0000000000001ull; BID_RETURN (res); } BIDECIMAL_CALL1(bid64_to_binary80,xd,x); if (__bid_f80_ge( xd, c_385.v)) { BID_F80_ASSIGN( zd, c_1e2000 ); } else if (__bid_f80_lt( xd, c_neg_398.v)) { BID_F80_ASSIGN( zd, c_1em2000 ); } else __bid_f80_exp10( zd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,zd); BID_RETURN (res); } LIBRARY/src/bid64_to_int32.c0000644€­ Q01134020000026172415113665770014447 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_to_int32_rnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int32_rnint (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_to_int32_rnint, 64) int bid64_to_int32_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000005, 1<=q<=16 // <=> C * 10^(11-q) > 0x500000005, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) > 0x500000005 <=> // C > 0x500000005 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31+1/2 up) // Note: 0x500000005*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x500000005ull * bid_ten2k64[q - 11]; if (C1 > tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb, 1<=q<=16 // <=> C * 10^(11-q) >= 0x4fffffffb, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x4fffffffb <=> // C >= 0x4fffffffb * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31-1/2 up) // Note: 0x4fffffffb*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x4fffffffbull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1/2 <= n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (C1 <= bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^31-1/2 <= x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int32_xrnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int32_xrnint (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_to_int32_xrnint, 64) int bid64_to_int32_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000005, 1<=q<=16 // <=> C * 10^(11-q) > 0x500000005, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) > 0x500000005 <=> // C > 0x500000005 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31+1/2 up) // Note: 0x500000005*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x500000005ull * bid_ten2k64[q - 11]; if (C1 > tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb, 1<=q<=16 // <=> C * 10^(11-q) >= 0x4fffffffb, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x4fffffffb <=> // C >= 0x4fffffffb * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31-1/2 up) // Note: 0x4fffffffb*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x4fffffffbull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1/2 < n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (C1 <= bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^31-1/2 <= x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int32_floor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int32_floor (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_to_int32_floor, 64) int bid64_to_int32_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000000, 1<=q<=16 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) > 0x500000000 <=> // C > 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31+1 up) // Note: 0x500000000*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x500000000ull * bid_ten2k64[q - 11]; if (C1 > tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000, 1<=q<=16 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x500000000 <=> // C >= 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31-1 up) // Note: 0x500000000*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x500000000ull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 <= n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return -1 or 0 if (x_sign) res = 0xffffffff; else res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x < 2^31 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int32_xfloor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int32_xfloor (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_to_int32_xfloor, 64) int bid64_to_int32_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000000, 1<=q<=16 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) > 0x500000000 <=> // C > 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31+1 up) // Note: 0x500000000*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x500000000ull * bid_ten2k64[q - 11]; if (C1 > tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000, 1<=q<=16 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x500000000 <=> // C >= 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31-1 up) // Note: 0x500000000*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x500000000ull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 <= n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return -1 or 0 if (x_sign) res = 0xffffffff; else res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x < 2^31 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int32_ceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int32_ceil (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_to_int32_ceil, 64) int bid64_to_int32_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x50000000a, 1<=q<=16 // <=> C * 10^(11-q) >= 0x50000000a, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x50000000a has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x50000000a <=> // C >= 0x50000000a * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31+1 up) // Note: 0x50000000a*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x50000000aull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n > 2^31 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31 - 1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x4fffffff6, 1<=q<=16 // <=> C * 10^(11-q) > 0x4fffffff6, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x4fffffff6 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x4fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) > 0x4fffffff6 <=> // C > 0x4fffffff6 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31-1 up) // Note: 0x4fffffff6*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x4fffffff6ull * bid_ten2k64[q - 11]; if (C1 > tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1 < n <= 2^31 - 1 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x <= 2^31-1 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int32_xceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int32_xceil (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_to_int32_xceil, 64) int bid64_to_int32_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x50000000a, 1<=q<=16 // <=> C * 10^(11-q) >= 0x50000000a, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x50000000a has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x50000000a <=> // C >= 0x50000000a * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31+1 up) // Note: 0x50000000a*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x50000000aull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n > 2^31 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31 - 1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x4fffffff6, 1<=q<=16 // <=> C * 10^(11-q) > 0x4fffffff6, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x4fffffff6 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x4fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) > 0x4fffffff6 <=> // C > 0x4fffffff6 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31-1 up) // Note: 0x4fffffff6*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x4fffffff6ull * bid_ten2k64[q - 11]; if (C1 > tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1 < n <= 2^31 - 1 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x <= 2^31-1 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int32_int ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int32_int (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_to_int32_int, 64) int bid64_to_int32_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x50000000a, 1<=q<=16 // <=> C * 10^(11-q) >= 0x50000000a, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x50000000a has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x50000000a <=> // C >= 0x50000000a * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31+1 up) // Note: 0x50000000a*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x50000000aull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000, 1<=q<=16 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x500000000 <=> // C >= 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31-1 up) // Note: 0x500000000*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x500000000ull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1 < n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x < 2^31 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int32_xint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int32_xint (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_to_int32_xint, 64) int bid64_to_int32_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x50000000a, 1<=q<=16 // <=> C * 10^(11-q) >= 0x50000000a, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x50000000a has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x50000000a <=> // C >= 0x50000000a * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31+1 up) // Note: 0x50000000a*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x50000000aull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000, 1<=q<=16 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x500000000 <=> // C >= 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31-1 up) // Note: 0x500000000*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x500000000ull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1 < n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x < 2^31 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int32_rninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int32_rninta (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_to_int32_rninta, 64) int bid64_to_int32_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000005, 1<=q<=16 // <=> C * 10^(11-q) >= 0x500000005, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x500000005 <=> // C >= 0x500000005 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31+1/2 up) // Note: 0x500000005*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x500000005ull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb, 1<=q<=16 // <=> C * 10^(11-q) >= 0x4fffffffb, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x4fffffffb <=> // C >= 0x4fffffffb * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31-1/2 up) // Note: 0x4fffffffb*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x4fffffffbull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1/2 < n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (C1 < bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^31-1/2 <= x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest away to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*)-1 (logical right shift; C* has p decimal digits, // correct by Pr. 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int32_xrninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int32_xrninta (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_to_int32_xrninta, 64) int bid64_to_int32_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000005, 1<=q<=16 // <=> C * 10^(11-q) >= 0x500000005, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x500000005 <=> // C >= 0x500000005 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31+1/2 up) // Note: 0x500000005*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x500000005ull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb, 1<=q<=16 // <=> C * 10^(11-q) >= 0x4fffffffb, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x4fffffffb <=> // C >= 0x4fffffffb * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^31-1/2 up) // Note: 0x4fffffffb*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x4fffffffbull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1/2 < n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (C1 < bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^31-1/2 <= x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest away to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*)-1 (logical right shift; C* has p decimal digits, // correct by Pr. 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } LIBRARY/src/bid32_quantumd.c0000644€­ Q01134020000000530015113665770014621 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_quantumd ****************************************************************************/ /* Exceptions signaled: none The quantumdN functions compute the quantum of a finite argument. If x is infinite, the result is +Inf. If x is NaN, the result is NaN. */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT32, bid32_quantum, BID_UINT32, x) BID_UINT32 res; int int_exp; // If x is infinite, the result is +Inf. If x is NaN, the result is NaN if ((x & MASK_INF32) == MASK_INF32) { res = x & ~SIGNMASK32; BID_RETURN (res); } else if ((x & MASK_NAN32) == MASK_NAN32) { res = x & QUIET_MASK32; BID_RETURN (res); } // Extract exponent if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { int_exp = ((x >> 21) & 0xff) - 101; } else { int_exp = ((x >> 23) & 0xff) - 101; } // Form 10^new_exponent*1 res = (int_exp << 23) + 0x32800001ull; BID_RETURN (res); } LIBRARY/src/bid32_modf.c0000644€­ Q01134020000000470615113665770013721 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #if DECIMAL_CALL_BY_REFERENCE void bid32_modf (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * iptr _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM){ BID_UINT32 x=*px; #else DFP_WRAPFN_DFP_DFP_POINTER(32, bid32_modf, 32, 32) BID_UINT32 bid32_modf (BID_UINT32 x, BID_UINT32 * iptr _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM){ #endif BID_UINT32 xi, res; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = 0; #else rnd_mode=0; #endif BIDECIMAL_CALL1_NORND(bid32_round_integral_zero, xi, x); // check for Infinity if((x & 0x7c000000) == 0x78000000) res = (x & 0x80000000) | 0x5f800000; else BIDECIMAL_CALL2 (bid32_sub, res, x, xi); *iptr = (xi) | (x & 0x80000000); res |= (x & 0x80000000); BID_RETURN (res); } LIBRARY/src/bid_fegetexceptflag.c0000644€­ Q01134020000000442315113665770015760 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if !defined (_MSC_VER) || defined (__INTEL_COMPILER) #include #endif #include "bid_internal.h" void bid_fegetexceptflag( fexcept_t *flagp, int excepts _EXC_FLAGS_PARAM ) { _IDEC_flags new_sw; /* Take only supported exceptions */ excepts &= DEC_FE_ALL_EXCEPT; if( excepts ) { /* Do we have anything to do? */ /* Erase the old state of specified exception flags */ *flagp &= ~excepts; /* Read status word */ new_sw = get_bid_sw(); /* Store the current state of specified exception flags */ *flagp |= new_sw & excepts; } } LIBRARY/src/bid32_lround.c0000644€­ Q01134020000000510515113665770014271 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_lround ****************************************************************************/ /* DESCRIPTION: The lround function rounds its argument to the nearest integer value of type long int, using rounding to nearest-away RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND(long int, bid32_lround, BID_UINT32, x) #if BID_SIZE_LONG==4 BID_SINT32 res; BIDECIMAL_CALL1_NORND (bid32_to_int32_rninta, res, x); #else // if BID_SIZE_LONG==8 BID_SINT64 res; BIDECIMAL_CALL1_NORND (bid32_to_int64_rninta, res, x); #endif BID_RETURN ((long int)res); } LIBRARY/src/bid128_sin.c0000644€­ Q01134020000345371015113665770013661 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // Extra macros #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define lt128(x_hi,x_lo,y_hi,y_lo) \ (((x_hi) < (y_hi)) || (((x_hi) == (y_hi)) && ((x_lo) < (y_lo)))) #define sll192_short(hi,med,lo,c) \ ((hi) = ((hi) << (c)) + ((med)>>(64-(c))), \ (med) = ((med) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll256_short(hi,mhi,mlo,lo,c) \ ((hi) = ((hi) << (c)) + ((mhi)>>(64-(c))), \ (mhi) = ((mhi) << (c)) + ((mlo)>>(64-(c))), \ (mlo) = ((mlo) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define srl128_short(hi,lo,c) \ ((lo) = ((hi) << (64 - (c))) + ((lo) >> (c)), \ (hi) = (hi) >> (c) \ ) typedef struct { BID_UINT64 w[7]; } BID_UINT448; #define __mul_64x384_to_448(P, A, B) \ { BID_UINT128 lP0,lP1,lP2,lP3,lP4,lP5; \ BID_UINT64 lC; \ __mul_64x64_to_128(lP0, A, (B).w[0]); \ __mul_64x64_to_128(lP1, A, (B).w[1]); \ __mul_64x64_to_128(lP2, A, (B).w[2]); \ __mul_64x64_to_128(lP3, A, (B).w[3]); \ __mul_64x64_to_128(lP4, A, (B).w[4]); \ __mul_64x64_to_128(lP5, A, (B).w[5]); \ (P).w[0] = lP0.w[0]; \ __add_carry_out((P).w[1],lC,lP1.w[0],lP0.w[1]); \ __add_carry_in_out((P).w[2],lC,lP2.w[0],lP1.w[1],lC); \ __add_carry_in_out((P).w[3],lC,lP3.w[0],lP2.w[1],lC); \ __add_carry_in_out((P).w[4],lC,lP4.w[0],lP3.w[1],lC); \ __add_carry_in_out((P).w[5],lC,lP5.w[0],lP4.w[1],lC); \ (P).w[6] = lP5.w[1] + lC; \ } #define __mul_128x384_to_512(P, A, B) \ { BID_UINT448 P0,P1; \ BID_UINT64 CY; \ __mul_64x384_to_448(P0,(A).w[0],B); \ __mul_64x384_to_448(P1,(A).w[1],B); \ (P).w[0] = P0.w[0]; \ __add_carry_out((P).w[1],CY,P1.w[0],P0.w[1]); \ __add_carry_in_out((P).w[2],CY,P1.w[1],P0.w[2],CY); \ __add_carry_in_out((P).w[3],CY,P1.w[2],P0.w[3],CY); \ __add_carry_in_out((P).w[4],CY,P1.w[3],P0.w[4],CY); \ __add_carry_in_out((P).w[5],CY,P1.w[4],P0.w[5],CY); \ __add_carry_in_out((P).w[6],CY,P1.w[5],P0.w[6],CY); \ (P).w[7] = P1.w[6] + CY; \ } // Standard NaN static BID_UINT128 BID128_NAN = {BID128_LH_INIT( 0x0000000000000000ull, 0x7c00000000000000ull )}; // -10^-40, used in trivial path static BID_UINT128 BID128_10PM40 = {BID128_LH_INIT( 0x0000000000000001ull, 0xaff0000000000000ull )}; // 1 for dummy canonizing operation static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; // Values of (10^a / 2 pi) mod 1 for -35 <= a <= 6111 // Each one is a 384-bit binary fraction. This may be a bit too much! // My rough guideline is a bit more than 3x the working precision // (you multiply by that order, the reduced argument can be as small // as that order, and you want accuracy of that order). But I may well // be able to get away with 5 chunks. Probably not 4? static BID_UINT384 bid_decimal128_moduli[] = { {{ 0x4abfd0d644dca156ull, 0xe9cf4c5596df69ecull, 0xd5ccdc56a81e2464ull, 0x9382546d1dfa1e2aull, 0x000000000000021dull, 0x0000000000000000ull }}, {{ 0xeb7e285eb09e4d57ull, 0x2218fb57e4ba233aull, 0x5a009b62912d6bf1ull, 0xc3174c432bc52dacull, 0x0000000000001527ull, 0x0000000000000000ull }}, {{ 0x32ed93b2e62f0569ull, 0x54f9d16eef45604dull, 0x840611d9abc6376bull, 0x9ee8fa9fb5b3c8bbull, 0x000000000000d38dull, 0x0000000000000000ull }}, {{ 0xfd47c4fcfdd63618ull, 0x51c22e5558b5c303ull, 0x283cb280b5be2a31ull, 0x3519ca3d1905d753ull, 0x0000000000084388ull, 0x0000000000000000ull }}, {{ 0xe4cdb1e1ea5e1ceeull, 0x3195cf5577199e27ull, 0x925ef907196da5edull, 0x1301e662fa3a693full, 0x000000000052a352ull, 0x0000000000000000ull }}, {{ 0xf008f2d327ad214eull, 0xefda1956a7002d8eull, 0xb7b5ba46fe487b43ull, 0xbe12ffddc6481c7bull, 0x00000000033a6134ull, 0x0000000000000000ull }}, {{ 0x60597c3f8cc34d0cull, 0x5e84fd628601c795ull, 0x2d1946c5eed4d0a7ull, 0x6cbdfea9bed11cd5ull, 0x000000002047cc0full, 0x0000000000000000ull }}, {{ 0xc37eda7b7fa1027cull, 0xb131e5d93c11cbd5ull, 0xc2fcc3bb54502689ull, 0x3f6bf2a1742b2053ull, 0x0000000142cdf89aull, 0x0000000000000000ull }}, {{ 0xa2f488d2fc4a18d5ull, 0xebf2fa7c58b1f659ull, 0x9ddfa5514b218160ull, 0x7a377a4e89af4345ull, 0x0000000c9c0bb606ull, 0x0000000000000000ull }}, {{ 0x5d8d583ddae4f84full, 0x377dc8db76f39f80ull, 0x2abc752cef4f0dc9ull, 0xc62ac71160d8a0b8ull, 0x0000007e18751c40ull, 0x0000000000000000ull }}, {{ 0xa785726a8cf1b319ull, 0x2ae9d892a5843b03ull, 0xab5c93c1591689dcull, 0xbdabc6adc8764731ull, 0x000004ecf4931a87ull, 0x0000000000000000ull }}, {{ 0x8b3678298170fefcull, 0xad2275ba772a4e24ull, 0xb19dc58d7ae16299ull, 0x68b5c2c9d49ec7f0ull, 0x000031418dbf094dull, 0x0000000000000000ull }}, {{ 0x7020b19f0e69f5d6ull, 0xc3589948a7a70d6dull, 0xf029b786cccdda00ull, 0x17199be24e33cf66ull, 0x0001ec8f89765d06ull, 0x0000000000000000ull }}, {{ 0x6146f03690239a60ull, 0xa175fcd68c868646ull, 0x61a12b44000a8407ull, 0xe70016d70e061a05ull, 0x00133d9b5e9fa23cull, 0x0000000000000000ull }}, {{ 0xccc56221a16407c3ull, 0x4e9be0617d413ebfull, 0xd04bb0a80069284cull, 0x0600e4668c3d0435ull, 0x00c06811b23c5661ull, 0x0000000000000000ull }}, {{ 0xffb5d5504de84da0ull, 0x1216c3cee48c737dull, 0x22f4e690041b92fbull, 0x3c08ec017a622a1aull, 0x078410b0f65b5fcaull, 0x0000000000000000ull }}, {{ 0xfd1a55230b13083bull, 0xb4e3a614ed7c82ebull, 0x5d9101a02913bdceull, 0x5859380ec7d5a505ull, 0x4b28a6e99f91bde6ull, 0x0000000000000000ull }}, {{ 0xe307535e6ebe5250ull, 0x10e47cd146dd1d37ull, 0xa7aa10419ac56a13ull, 0x737c3093ce587235ull, 0xef9685203bb16affull, 0x0000000000000002ull }}, {{ 0xde4941b0536f3722ull, 0xa8ece02cc4a3242eull, 0x8ca4a2900bb624beull, 0x82d9e5c60f747618ull, 0x5be1334254ee2dfaull, 0x000000000000001dull }}, {{ 0xaedc90e342582755ull, 0x9940c1bfae5f69d4ull, 0x7e6e59a0751d6f72ull, 0x1c82f9bc9a8c9cf5ull, 0x96cc0097514dcbc9ull, 0x0000000000000125ull }}, {{ 0xd49da8e09771894dull, 0xfc87917ccfba224eull, 0xf04f804493265a79ull, 0x1d1dc15e097e2196ull, 0xe3f805e92d09f5dbull, 0x0000000000000b77ull }}, {{ 0x4e2898c5ea6f5d02ull, 0xdd4baee01d455714ull, 0x631b02adbf7f88c3ull, 0x23298dac5eed4fe5ull, 0xe7b03b1bc2639a8full, 0x00000000000072aeull }}, {{ 0x0d95f7bb2859a218ull, 0xa4f4d4c124b566cbull, 0xdf0e1ac97afb57a6ull, 0x5f9f88bbb5451ef5ull, 0x0ce24f1597e40997ull, 0x0000000000047ad5ull }}, {{ 0x87dbad4f938054f1ull, 0x71904f8b6f1603eeull, 0xb68d0bdecdd16c82ull, 0xbc3b575514b3359aull, 0x80d716d7eee85fe9ull, 0x00000000002ccc52ull }}, {{ 0x4e94c51bc303516bull, 0x6fa31b7256dc2751ull, 0x218276b40a2e3d18ull, 0x5a516952cf00180bull, 0x0866e46f5513bf21ull, 0x0000000001bffb39ull }}, {{ 0x11cfb3159e212e29ull, 0x5c5f12776499892dull, 0x4f18a30865ce62f4ull, 0x872e1d3c1600f06full, 0x5404ec5952c5774dull, 0x00000000117fd03aull }}, {{ 0xb21cfed82d4bcd9cull, 0x9bb6b8a9edff5bc2ull, 0x16f65e53fa0fdd8bull, 0x47cd2458dc096459ull, 0x48313b7d3bb6a907ull, 0x00000000aefe2247ull }}, {{ 0xf521f471c4f6081aull, 0x152336a34bf9959aull, 0xe59faf47c49ea774ull, 0xce036b78985deb7aull, 0xd1ec52e455229a48ull, 0x00000006d5ed56c8ull }}, {{ 0x93538c71b19c5108ull, 0xd3602260f7bfd80dull, 0xf83cd8cdae328a88ull, 0x0c2232b5f3ab32ccull, 0x333b3ceb535a06d8ull, 0x000000445b4563d8ull }}, {{ 0xc1437c70f01b2a51ull, 0x41c157c9ad7e7087ull, 0xb2607808cdf96958ull, 0x7955fb1b84affc01ull, 0x0050613141844470ull, 0x000002ab90b5e672ull }}, {{ 0x8ca2dc69610fa72bull, 0x918d6de0c6f0654dull, 0xf7c4b0580bbe1d72ull, 0xbd5bcf132edfd810ull, 0x0323cbec8f2aac64ull, 0x00001ab3a71b0074ull }}, {{ 0x7e5c9c1dca9c87b1ull, 0xaf864ac7c563f507ull, 0xadaee370756d2679ull, 0x659616bfd4be70a9ull, 0x1f65f73d97aabbefull, 0x00010b04870e0488ull }}, {{ 0xef9e1929ea1d4ce7ull, 0xdb3eebcdb5e7924aull, 0xc8d4e264964380c0ull, 0xf7dce37e4f7066a0ull, 0x39fba867ecab5759ull, 0x000a6e2d468c2d51ull }}, {{ 0x5c2cfba325250101ull, 0x907536091b0bb6edull, 0xd850d7eddea30788ull, 0xaea0e2ef1a640247ull, 0x43d4940f3eb16983ull, 0x00684dc4c179c52cull }}, {{ 0x99c1d45f73720a0eull, 0xa4941c5b0e752545ull, 0x73286f4ab25e4b55ull, 0xd248dd5707e816ceull, 0xa64dc89872ee1f24ull, 0x041309af8ec1b3baull }}, {{ 0x01924bba82746487ull, 0x6dc91b8e909374b8ull, 0x7f9458eaf7aef158ull, 0x36d8a5664f10e410ull, 0x7f09d5f47d4d3770ull, 0x28be60db9391054aull }}, {{ 0x0fb6f549188bed48ull, 0x49db1391a5c28f30ull, 0xfbcb792dacd56d74ull, 0x247675ff16a8e8a4ull, 0xf6625b8ce5042a62ull, 0x976fc893c3aa34e8ull }}, {{ 0x9d2594daf57744d5ull, 0xe28ec3b0799997e0ull, 0xd5f2bbc8c056468aull, 0x6ca09bf6e2991671ull, 0x9fd79380f229a7d5ull, 0xea5dd5c5a4a61119ull }}, {{ 0x2377d08d96a8b050ull, 0xd993a4e4bfffeec6ull, 0x5b7b55d7835ec16cull, 0x3e4617a4d9fae072ull, 0x3e6bc30975a08e56ull, 0x27aa59b86e7cab00ull }}, {{ 0x62ae2587e296e322ull, 0x7fc470ef7fff53bdull, 0x92d15a6b21b38e40ull, 0x6ebcec7083ccc477ull, 0x70359e5e98458f5eull, 0x8ca7813450deae02ull }}, {{ 0xdacd774ed9e4df50ull, 0xfdac695afff94565ull, 0xbc2d882f51038e84ull, 0x53613c6525ffacabull, 0x62182fb1f2b799b0ull, 0x7e8b0c0b28b2cc18ull }}, {{ 0x8c06a91482f0b921ull, 0xe8bc1d8dffbcb5faull, 0x59c751d92a239131ull, 0x41cc5bf37bfcbeb5ull, 0xd4f1dcf37b2c00e3ull, 0xf16e786f96fbf8f3ull }}, {{ 0x78429acd1d673b4aull, 0x1759278bfd5f1bc9ull, 0x81c9327ba563abf3ull, 0x91fb9782d7df7315ull, 0x5172a182cfb808e0ull, 0x6e50b45be5d7b986ull }}, {{ 0xb29a0c03260850e4ull, 0xe97b8b77e5b715deull, 0x11dbf8d475e4b77eull, 0xb3d3eb1c6eba7ed7ull, 0x2e7a4f1c1d3058c5ull, 0x4f270b96fa6d3f3full }}, {{ 0xfa04781f7c5328edull, 0x1ed372aef926dab2ull, 0xb297b84c9aef2af5ull, 0x06472f1c5348f466ull, 0xd0c7171923e377b9ull, 0x178673e5c8447877ull }}, {{ 0xc42cb13adb3f993full, 0x34427ad5bb848afdull, 0xf9ed32fe0d57ad93ull, 0x3ec7d71b40d98c02ull, 0x27c6e6fb66e2ad3aull, 0xeb4086f9d2acb4aeull }}, {{ 0xa9beec4c907bfc72ull, 0x0a98cc59532d6de9ull, 0xc343fdec856cc7c0ull, 0x73ce6710887f781dull, 0x8dc505d204dac446ull, 0x308545c23abf0ecdull }}, {{ 0xa1753afda4d7dc78ull, 0x69f7fb7d3fc64b20ull, 0xa0a7eb3d363fcd80ull, 0x861006a554fab129ull, 0x89b23a34308baac0ull, 0xe534b9964b769407ull }}, {{ 0x4e944de8706e9cadull, 0x23afd2e47dbeef46ull, 0x468f30641e7e0704ull, 0x3ca0427551caeba0ull, 0x60f64609e574ab85ull, 0xf40f3fdef2a1c84bull }}, {{ 0x11cb0b1464521ec0ull, 0x64de3cece97558bfull, 0xc197e3e930ec4629ull, 0x5e42989531ed3442ull, 0xc99ebc62f68eb334ull, 0x88987eb57a51d2f1ull }}, {{ 0xb1ee6ecbeb353380ull, 0xf0ae61411e957776ull, 0x8feee71be93abd9dull, 0xae99f5d3f3440a9bull, 0xe0335bdda193000bull, 0x55f4f316c7323d71ull }}, {{ 0xf35053f730140303ull, 0x66cfcc8b31d6aaa2ull, 0x9f5507171c4b682bull, 0xd2039a4780a86a13ull, 0xc20196a84fbe0074ull, 0x5b917ee3c7f66672ull }}, {{ 0x812347a7e0c81e20ull, 0x041dfd6ff262aa5dull, 0x395246e71af211b2ull, 0x342406cb069424c4ull, 0x940fe2931d6c0490ull, 0x93aef4e5cfa0007bull }}, {{ 0x0b60cc8ec7d12d41ull, 0x292be65f77daa7a7ull, 0x3d36c5070d74b0f4ull, 0x096843ee41c96faaull, 0xc89ed9bf26382da2ull, 0xc4d590fa1c4004d3ull }}, {{ 0x71c7fd93ce2bc489ull, 0x9bb6ffbaae8a8c86ull, 0x6423b246868ee989ull, 0x5e12a74e91de5ca6ull, 0xd63481777e31c854ull, 0xb057a9c51a803045ull }}, {{ 0x71cfe7c60db5ad5aull, 0x1525fd4ad1697d40ull, 0xe964f6c141951f60ull, 0xacba8911b2af9e7full, 0x5e0d0eaaedf1d34bull, 0xe36ca1b30901e2baull }}, {{ 0x721f0dbc8918c57full, 0xd37be4ec2e1ee484ull, 0x1df1a38c8fd339c0ull, 0xbf495ab0fadc30ffull, 0xac8292ad4b7240f4ull, 0xe23e50fe5a12db47ull }}, {{ 0x7536895d5af7b6f8ull, 0x42d6f139cd34ed2cull, 0x2b70637d9e404188ull, 0x78dd8ae9cc99e9f7ull, 0xbd19bac4f276898full, 0xd66f29ef84bc90ccull }}, {{ 0x94215da58dad25adull, 0x9c656c42041143bcull, 0xb263e2e82e828f52ull, 0xb8a76d21fe0323a7ull, 0x63014bb178a15f9aull, 0x6057a35b2f5da7ffull }}, {{ 0xc94da87788c378c4ull, 0x1bf63a9428aca55dull, 0xf7e6dd11d119993aull, 0x368a4353ec1f648cull, 0xde0cf4eeb64dbc0bull, 0xc36c618fd9a88ff9ull }}, {{ 0xdd0894ab57a2b7adull, 0x179e49c996be75a9ull, 0xaf04a2b22afffc45ull, 0x2166a1473939ed81ull, 0xac8191531f095870ull, 0xa23bcf9e80959fc2ull }}, {{ 0xa255ceb16c5b2cc2ull, 0xec2ee1dfe37098a2ull, 0xd62e5af5adffdab2ull, 0x4e024cc83c434710ull, 0xbd0fad3f365d7461ull, 0x56561c3105d83d9aull }}, {{ 0x575a12ee3b8fbf91ull, 0x39d4d2bee265f65aull, 0x5dcf8d98cbfe8afdull, 0x0c16ffd25aa0c6a8ull, 0x629cc4781fa68bcdull, 0x5f5d19ea3a72680bull }}, {{ 0x6984bd4e539d7ba6ull, 0x42503b74d7fb9f87ull, 0xaa1b87f7f7f16de4ull, 0x78e5fe378a47c293ull, 0xda1facb13c817602ull, 0xb9a3032648781071ull }}, {{ 0x1f2f650f4426d47full, 0x972252906fd43b4aull, 0xa5134fafaf6e4aeaull, 0xb8fbee2b66cd99c4ull, 0x853cbeec5d0e9c18ull, 0x405e1f7ed4b0a472ull }}, {{ 0x37d9f298a9844cf4ull, 0xe75739a45e4a50e5ull, 0x72c11cdcda4eed29ull, 0x39d74db2040801aeull, 0x345f753ba29218f7ull, 0x83ad3af44ee66c79ull }}, {{ 0x2e8379f69f2b0185ull, 0x0968406baee728f4ull, 0x7b8b20a0871543a3ull, 0x426908f4285010d0ull, 0x0bba945459b4f9a8ull, 0x24c44d8b15003cbcull }}, {{ 0xd122c3a237ae0f2full, 0x5e128434d5079989ull, 0xd36f464546d4a45eull, 0x981a59899320a824ull, 0x7549cb4b8111c092ull, 0x6fab076ed2025f58ull }}, {{ 0x2b5ba4562ccc97d2ull, 0xacb92a10524bff62ull, 0x4258beb4c44e6bafull, 0xf1077f5fbf469170ull, 0x94e1f0f30ab185b9ull, 0x5cae4a543417b974ull }}, {{ 0xb1946b5dbffdee33ull, 0xbf3ba4a336f7f9d5ull, 0x9777730fab1034dcull, 0x6a4af9bd78c1ae62ull, 0xd0d3697e6aef3943ull, 0x9ecee74a08ed3e8dull }}, {{ 0xefcc31a97feb4e00ull, 0x78546e6025afc258ull, 0xeaaa7e9caea2109full, 0x26edc166b790cfd9ull, 0x28421ef02d583ca2ull, 0x341508e45944718aull }}, {{ 0x5df9f09eff310bfeull, 0xb34c4fc178dd9779ull, 0x2aa8f21ed254a63aull, 0x85498e032ba81e83ull, 0x92953561c5725e55ull, 0x08d258eb7cac6f65ull }}, {{ 0xabc36635f7ea77e7ull, 0x00fb1d8eb8a7eabdull, 0xaa997534374e7e4bull, 0x34df8c1fb491311full, 0xb9d415d1b677af57ull, 0x58377932debc59f7ull }}, {{ 0xb5a1fe1baf28af0bull, 0x09cf2793368f2b68ull, 0xa9fe940a2910eeeeull, 0x10bb793d0dabeb3cull, 0x4248da3120acd968ull, 0x722abbfcb35b83adull }}, {{ 0x1853ed14d796d669ull, 0x62178bc02197b217ull, 0xa3f1c8659aa9554cull, 0xa752bc6288b7305eull, 0x96d885eb46c07e10ull, 0x75ab57df019324c4ull }}, {{ 0xf34742d06be4601dull, 0xd4eb75814fecf4e6ull, 0x6771d3f80a9d54fbull, 0x893b5bd95727e3b2ull, 0xe4753b30c384eca6ull, 0x98b16eb60fbf6fadull }}, {{ 0x80c89c2436ebc122ull, 0x5132970d1f419105ull, 0x0a7247b06a2551d6ull, 0x5c51967d678ee4f8ull, 0xec944fe7a3313e81ull, 0xf6ee531c9d7a5ccaull }}, {{ 0x07d6196a25358b58ull, 0x2bf9e683388faa37ull, 0x6876cce42575325full, 0x9b2fe0e60b94f1b0ull, 0x3dcb1f0c5fec710dull, 0xa54f3f1e26c79fedull }}, {{ 0x4e5cfe2574177172ull, 0xb7c30120359ca626ull, 0x14a400e97693f7b7ull, 0x0fdec8fc73d170e4ull, 0x69ef367bbf3c6a88ull, 0x7518772d83cc3f44ull }}, {{ 0x0fa1ed7688ea6e76ull, 0x2d9e0b42181e7d7full, 0xce68091ea1c7ad2dull, 0x9eb3d9dc862e68e8ull, 0x235820d5785c2950ull, 0x92f4a7c725fa78acull }}, {{ 0x9c5346a15928509bull, 0xc82c7094f130e6f6ull, 0x10105b3251ccc3c3ull, 0x3306829d3dd01918ull, 0x61714856b3999d26ull, 0xbd8e8dc77bc8b6b9ull }}, {{ 0x1b40c24d7b932609ull, 0xd1bc65d16be905a2ull, 0xa0a38ff731ffa5a5ull, 0xfe411a246a20faf0ull, 0xce6cd3630400237dull, 0x679189cad5d7233dull }}, {{ 0x10879706d3bf7c5cull, 0x315bfa2e371a3855ull, 0x46639fa7f3fc787aull, 0xee8b056c2549cd66ull, 0x104041de280162ebull, 0x0baf61ec5a67606aull }}, {{ 0xa54be644457adb97ull, 0xed97c5ce27063352ull, 0xbfe43c8f87dcb4c5ull, 0x516e363974e205feull, 0xa28292ad900ddd37ull, 0x74d9d33b8809c424ull }}, {{ 0x74f6feaab6cc93e2ull, 0x47edba0d863e013aull, 0x7eea5d9b4e9f0fbbull, 0x2e4e1e3e90d43bf3ull, 0x5919bac7a08aa429ull, 0x908240535061a96eull }}, {{ 0x91a5f2ab23fdc6d5ull, 0xcf4944873e6c0c48ull, 0xf527a81112369d50ull, 0xcf0d2e71a84a5782ull, 0x7b014bcc456a699bull, 0xa516834123d09e4full }}, {{ 0xb07b7aaf67e9c450ull, 0x18dcad4870387ad5ull, 0x938c90aab6222528ull, 0x1683d07092e76b1dull, 0xce0cf5fab6282016ull, 0x72e1208b66262f1aull }}, {{ 0xe4d2cada0f21ab1full, 0xf89ec4d46234cc58ull, 0xc37da6ab1d557390ull, 0xe1262465bd0a2f27ull, 0x0c819bcb1d9140dcull, 0x7ccb4571fd7dd70cull }}, {{ 0xf03bec849750af33ull, 0xb633b04bd60ffb78ull, 0xa2e882af255683a9ull, 0xcb7d6bf96265d78dull, 0x7d1015ef27ac88a0ull, 0xdff0b673e6ea6678ull }}, {{ 0x62573d2de926d7feull, 0x1e04e2f65c9fd2b9ull, 0x5d151ad7756124a1ull, 0xf2e637bdd7fa6b88ull, 0xe2a0db578cbd5647ull, 0xbf672087052800b4ull }}, {{ 0xd76863cb1b846fe9ull, 0x2c30dd9f9e3e3b3dull, 0xa2d30c6a95cb6e4bull, 0x7cfe2d6a6fc83353ull, 0xda48916b7f655ecfull, 0x7a07454633900710ull }}, {{ 0x6a13e5ef132c5f1aull, 0xb9e8a83c2e6e506aull, 0x5c3e7c29d9f24eefull, 0xe1edc6285dd20144ull, 0x86d5ae32f9f5b41aull, 0xc448b4be03a046a8ull }}, {{ 0x24c6fb56bfbbb707ull, 0x43169259d04f2428ull, 0x9a70d9a28377155dull, 0xd349bd93aa340cabull, 0x4458cdfdc399090cull, 0xaad70f6c2442c295ull }}, {{ 0x6fc5d1637d55264aull, 0x9ee1b78223176991ull, 0x0868805922a6d5a4ull, 0x40e167c4a6087eb4ull, 0xab780be9a3fa5a80ull, 0xac669a396a9b99d4ull }}, {{ 0x5dba2de2e5537ee4ull, 0x34d12b155eea1faeull, 0x5415037b5a84586eull, 0x88ce0dae7c54f308ull, 0xb2b0772067c78902ull, 0xbc02063e2a14024eull }}, {{ 0xa945cadcf542f4e3ull, 0x102baed5b5253ccfull, 0x48d222d1892b744eull, 0x580c88d0db517e53ull, 0xfae4a7440dcb5a19ull, 0x58143e6da4c81712ull }}, {{ 0x9cb9eca1949d90e1ull, 0xa1b4d4591374601cull, 0xd8355c2f5bb28b0cull, 0x707d5828912eef40ull, 0xccee88a889f184fdull, 0x70ca70486fd0e6bdull }}, {{ 0x1f433e4fce27a8caull, 0x51104b7ac28bc11eull, 0x721599d994f96e7eull, 0x64e57195abd55888ull, 0x01515695636f31e6ull, 0x67e862d45e29036aull }}, {{ 0x38a06f1e0d8c97e9ull, 0x2aa2f2cb99758b2dull, 0x74d8027fd1be50efull, 0xf0f66fd8b6557554ull, 0x0d2d61d5e257f2ffull, 0x0f13dc4bad9a2224ull }}, {{ 0x3644572c877def17ull, 0xaa5d7bf3fe976fc4ull, 0x907018fe316f2957ull, 0x69a05e771f56954cull, 0x83c5d25ad76f7dffull, 0x96c69af4c8055568ull }}, {{ 0x1eab67bd4aeb56e7ull, 0xa7a6d787f1ea5daaull, 0xa460f9edee579d6cull, 0x2043b0a73961d4fdull, 0x25ba378c6a5aebfaull, 0xe3c20d8fd0355615ull }}, {{ 0x32b20d64ed316504ull, 0x8c846b4f7327a8a5ull, 0x6bc9c34b4f6c263eull, 0x42a4e6883dd251e8ull, 0x79462b7c278d37c5ull, 0xe594879e22155cd3ull }}, {{ 0xfaf485f143edf22cull, 0x7d2c311a7f8c9673ull, 0x35e1a0f11a397e71ull, 0x9a7101526a373314ull, 0xbcbdb2d98b842db4ull, 0xf7cd4c2d54d5a042ull }}, {{ 0xcd8d3b6ca74b75b6ull, 0xe3b9eb08fb7de087ull, 0x1ad0496b063ef06eull, 0x086a0d382627fecaull, 0x5f68fc7f7329c90eull, 0xae04f9c55058429bull }}, {{ 0x0784523e88f29918ull, 0xe5432e59d2eac54eull, 0x0c22de2e3e756454ull, 0x542484317d8ff3e5ull, 0xba19dcfa7fa1da8cull, 0xcc31c1b523729a11ull }}, {{ 0x4b2b36715979faf3ull, 0xf49fcf823d2bb50cull, 0x795cadce7095eb50ull, 0x496d29eee79f86f2ull, 0x4502a1c8fc52897bull, 0xf9f19113627a04b1ull }}, {{ 0xefb0206d7ec3cd7full, 0x8e3e1b1663b5127aull, 0xbd9eca1065db3129ull, 0xde43a3550c3b4578ull, 0xb21a51d9db395ed0ull, 0xc36faac1d8c42eecull }}, {{ 0x5ce14446f3a606f7ull, 0x8e6d0edfe512b8cdull, 0x6833e4a3fa8feb9full, 0xaea461527a50b6b7ull, 0xf5073282903db428ull, 0xa25cab9277a9d53eull }}, {{ 0xa0ccaac5847c45a3ull, 0x904294bef2bb3805ull, 0x1206ee67c99f343bull, 0xd26bcd38c727232aull, 0x9247f919a2690996ull, 0x579eb3b8aca25475ull }}, {{ 0x47feabb72cdab85dull, 0xa299cf757b503038ull, 0xb445500de0380a53ull, 0x38360437c7875fa4ull, 0xb6cfbb00581a5fe4ull, 0x6c330536be574c97ull }}, {{ 0xcff2b527c08b339eull, 0x5a021a96d121e232ull, 0x0ab5208ac2306744ull, 0x321c2a2dcb49bc6full, 0x241d4e037107beeaull, 0x39fe34236f68fdedull }}, {{ 0x1f7b138d8570042cull, 0x841509e42b52d5fcull, 0x6b13456b95e408abull, 0xf519a5c9f0e15c56ull, 0x69250c226a4d7525ull, 0x43ee09625a19eb43ull }}, {{ 0x3acec387366029b7ull, 0x28d262e9b13c5bd9ull, 0x2ec0b633dae856b3ull, 0x930079e368cd9b60ull, 0x1b7279582706937bull, 0xa74c5dd7850330a2ull }}, {{ 0x4c13a3481fc1a129ull, 0x9837dd20ec5b967cull, 0xd3871e068d1362ffull, 0xbe04c2e2180811c1ull, 0x1278bd718641c2d3ull, 0x88fbaa6b321fe655ull }}, {{ 0xf8c460d13d904b9cull, 0xf22ea3493b93e0daull, 0x43472c4182c1ddfbull, 0x6c2f9cd4f050b192ull, 0xb8b7666f3e919c45ull, 0x59d4a82ff53eff52ull }}, {{ 0xb7abc82c67a2f417ull, 0x75d260dc53c6c88dull, 0xa0c7ba8f1b92abd7ull, 0x39dc20516326efb6ull, 0x372a005871b01ab6ull, 0x824e91df9475f93bull }}, {{ 0x2cb5d1bc0c5d88e5ull, 0x9a37c89b45c3d589ull, 0x47cd499713bab66aull, 0x4299432ddf855d22ull, 0x27a4037470e10b1eull, 0x1711b2bbcc9bbc50ull }}, {{ 0xbf1a31587ba758eeull, 0x062dd610b9a6575bull, 0xce04dfe6c54b202aull, 0x99fc9fcabb35a356ull, 0x8c68228c68ca6f2eull, 0xe6b0fb55fe155b21ull }}, {{ 0x7705ed74d4897949ull, 0x3dca5ca7407f6995ull, 0x0c30bf03b4ef41a4ull, 0x03de3deb50186164ull, 0x7c11597c17e857d2ull, 0x02e9d15becd58f4full }}, {{ 0xa63b46904d5ebcd6ull, 0x69e79e8884fa1fd6ull, 0x79e776251158906aull, 0x26ae6b3120f3cde8ull, 0xd8ad7ed8ef136e34ull, 0x1d222d974057991aull }}, {{ 0x7e50c1a305b3605eull, 0x230c315531c53e62ull, 0xc30a9d72ad75a428ull, 0x82d02feb49860b14ull, 0x76c6f47956c24e09ull, 0x2355c7e8836bfb0cull }}, {{ 0xef27905e3901c3a8ull, 0x5e79ed53f1b46fd8ull, 0x9e6a267ac6986991ull, 0x1c21df30df3c6ecfull, 0xa3c58cbd63970c5full, 0x6159cf152237ce7cull }}, {{ 0x578ba3ae3a11a48dull, 0xb0c34547710c5e79ull, 0x302580cbc1f41fadull, 0x1952b7e8b85c541cull, 0x65b77f65e3e67bb7ull, 0xcd8216d3562e10deull }}, {{ 0x6b7464ce44b06d81ull, 0xe7a0b4ca6a7bb0bdull, 0xe17707f593893cc8ull, 0xfd3b2f17339b4919ull, 0xf92af9fae700d526ull, 0x0714e4415dcca8afull }}, {{ 0x328bf00eaee4470eull, 0x0c470fe828d4e766ull, 0xcea64f97c35c5fd9ull, 0xe44fd6e80410db02ull, 0xbbadc3cd06085385ull, 0x46d0ea8da9fe96dfull }}, {{ 0xf9776092d4eac688ull, 0x7ac69f11985109fdull, 0x127f1beda19bbe7aull, 0xeb1e651028a88e1cull, 0x54c9a6023c53433aull, 0xc4292988a3f1e4bdull }}, {{ 0xbea9c5bc512bc14cull, 0xcbc236aff32a63ebull, 0xb8f71748501570c8ull, 0x2f2ff2a196958d18ull, 0x4fe07c165b40a04dull, 0xa99b9f566772ef65ull }}, {{ 0x72a1b95b2bb58cfbull, 0xf59622df7fa7e735ull, 0x39a6e8d320d667d7ull, 0xd7df7a4fe1d782f7ull, 0x1ec4d8df90864303ull, 0xa01439600a7d59f5ull }}, {{ 0x7a513d8fb51781ceull, 0x97dd5cbafc8f0816ull, 0x4085183f48600e6full, 0x6ebac71ed26b1da8ull, 0x33b078bba53e9e26ull, 0x40ca3dc068e58393ull }}, {{ 0xc72c679d12eb120full, 0xeea59f4ddd9650e0ull, 0x8532f278d3c0905bull, 0x534bc734382f2892ull, 0x04e4b75474722d80ull, 0x87e6698418f723c0ull }}, {{ 0xc7bc0c22bd2eb498ull, 0x5278390aa7df28c7ull, 0x33fd78b84585a397ull, 0x40f5c80a31d795b9ull, 0x30ef294c8c75c703ull, 0x4f001f28f9a76580ull }}, {{ 0xcd58795b63d30df4ull, 0x38b23a6a8eb797cdull, 0x07e6b732b73863e9ull, 0x8999d065f26bd93cull, 0xe9579cfd7c99c620ull, 0x16013799c089f701ull }}, {{ 0x0574bd91e63e8b85ull, 0x36f64829932bee0aull, 0x4f0327fb2833e71cull, 0x600223fb78367c58ull, 0x1d6c21e6de01bd45ull, 0xdc0c2c018563a613ull }}, {{ 0x368f67b2fe71732dull, 0x259ed19fbfb74c64ull, 0x161f8fcf9207071aull, 0xc01567d2b220db73ull, 0x26395304ac1164b5ull, 0x9879b80f35e47cbfull }}, {{ 0x219a0cfdf06e7fc4ull, 0x7834303d7d28fbeaull, 0xdd3b9e1bb4464705ull, 0x80d60e3af548927eull, 0x7e3d3e2eb8adef19ull, 0xf4c130981aecdf77ull }}, {{ 0x500481eb6450fdadull, 0xb209e266e399d725ull, 0xa4542d150abec636ull, 0x085c8e4d94d5b8f4ull, 0xee646dd336cb56ffull, 0x8f8be5f10d40baaaull }}, {{ 0x202d1331eb29e8c1ull, 0xf462d804e4026775ull, 0x6b49c2d26b73be22ull, 0x539d8f07d059398eull, 0x4fec4a4023f165f6ull, 0x9b76fb6a84874aadull }}, {{ 0x41c2bff32fa31787ull, 0x8bdc7030e8180a93ull, 0x30e19c3832856d5dull, 0x4427964e237c3f90ull, 0x1f3ae681676dfb9full, 0x12a5d2292d48eac5ull }}, {{ 0x919b7f7fdc5eeb48ull, 0x769c61e910f069c0ull, 0xe8d01a31f93645a7ull, 0xa98bdf0d62da7ba1ull, 0x384d010e0a4bd438ull, 0xba7a359bc4d92bb3ull }}, {{ 0xb012fafe9bb530ccull, 0xa21bd31aa9642185ull, 0x182105f3bc1eb88aull, 0x9f76b685dc88d453ull, 0x33020a8c66f64a36ull, 0x48c61815b07bb500ull }}, {{ 0xe0bdcdf21513e7fcull, 0x55163f0a9de94f38ull, 0xf14a3b855933356aull, 0x3aa3213a9d584b3eull, 0xfe14697c059ee622ull, 0xd7bcf0d8e4d51201ull }}, {{ 0xc76a0b74d2c70fd8ull, 0x52de766a2b1d1838ull, 0x6ce653357c001627ull, 0x4a5f4c4a2572f075ull, 0xeccc1ed83834fd56ull, 0x6d616878f052b413ull }}, {{ 0xca2472903bc69e6full, 0x3cb0a025af22f237ull, 0x40ff4016d800dd89ull, 0xe7b8fae5767d6496ull, 0x3ff934723211e55eull, 0x45ce14b9633b08c7ull }}, {{ 0xe56c79a255c23059ull, 0x5ee64178d75d762dull, 0x89f880e47008a75cull, 0x0d39ccf6a0e5eddeull, 0x7fbc0c75f4b2f5b5ull, 0xba0ccf3de04e57c8ull }}, {{ 0xf63cc0575995e37cull, 0xb4fe8eb869a69dcaull, 0x63b508ec6056899bull, 0x844201a248fb4ab1ull, 0xfd587c9b8efd9912ull, 0x4480186ac30f6dd4ull }}, {{ 0x9e5f83697fdae2d5ull, 0x11f19334208229edull, 0xe512593bc3616015ull, 0x2a941056d9d0eaedull, 0xe574de1395e7fab9ull, 0xad00f42b9e9a4a51ull }}, {{ 0x2fbb221efe8cdc51ull, 0xb36fc0094515a348ull, 0xf2b77c55a1cdc0d2ull, 0xa9c8a36482292d4aull, 0xf690acc3db0fcb3bull, 0xc20989b43206e732ull }}, {{ 0xdd4f5535f1809b2dull, 0x025d805cb2d860d1ull, 0x7b2adb585209883bull, 0xa1d661ed159bc4edull, 0xa1a6bfa68e9df054ull, 0x945f6109f44507fdull }}, {{ 0xa519541b6f060fc2ull, 0x17a7039efc73c832ull, 0xcfac9173345f524eull, 0x525fd342d815b146ull, 0x50837c81922b634eull, 0xcbb9ca638ab24fe8ull }}, {{ 0x72fd4912563c9d95ull, 0xec862435dc85d1faull, 0x1cbdae800bb9370cull, 0x37be409c70d8ecc4ull, 0x2522dd0fb5b1e10full, 0xf541e7e36af71f13ull }}, {{ 0x7de4dab75e5e27d6ull, 0x3d3d6a1a9d3a33c8ull, 0x1f68d100753c2681ull, 0x2d6e861c68793fa9ull, 0x735ca29d18f2ca98ull, 0x94930ee22da736bfull }}, {{ 0xeaf08b29afad8e5cull, 0x6466250a244605d4ull, 0x3a182a049459810cull, 0xc6513d1c14bc7c9bull, 0x819e5a22f97be9f1ull, 0xcdbe94d5c888237aull }}, {{ 0x2d656fa0dcc78f98ull, 0xebfd72656abc3a51ull, 0x44f1a42dcb7f0a7bull, 0xbf2c6318cf5cde10ull, 0x102f855dbed72371ull, 0x0971d059d55162c9ull }}, {{ 0xc5f65c489fcb9becull, 0x37e677f62b5a472bull, 0xb17069c9f2f668d7ull, 0x77bbdef819a0aca2ull, 0xa1db35a974676271ull, 0x5e722382552ddbdaull }}, {{ 0xbb9f9ad63df4173dull, 0x2f00af9db186c7b5ull, 0xee6421e37da01868ull, 0xad56b5b10046be5aull, 0x5290189e8c09d86eull, 0xb075631753ca968aull }}, {{ 0x543c0c5e6b88e85dull, 0xd606dc28ef43cd19ull, 0x4fe952e2e840f411ull, 0xc56318ea02c36f8dull, 0x39a0f63178627452ull, 0xe495dee945e9e167ull }}, {{ 0x4a587bb0335913a6ull, 0x5c44999958a602fdull, 0x1f1d3cdd128988b2ull, 0xb5def9241ba25b85ull, 0x40499deeb3d88b3bull, 0xeddab51cbb22ce08ull }}, {{ 0xe774d4e2017ac47full, 0x9aadfffd767c1de4ull, 0x372460a2b95f56f7ull, 0x1ab5bb6914579333ull, 0x82e02b5306757055ull, 0x4a8b131f4f5c0c52ull }}, {{ 0x0a9050d40ecbacf7ull, 0x0acbffe6a0d92af1ull, 0x276bc65b3db965acull, 0x0b19521acb6bc000ull, 0x1cc1b13e40966353ull, 0xe96ebf3919987b39ull }}, {{ 0x69a3284893f4c1a9ull, 0x6bf7ff02487bad6aull, 0x8a35bf90693df8b8ull, 0x6efd350bf2358001ull, 0x1f90ec6e85dfe13eull, 0x1e53783afff4d03bull }}, {{ 0x205f92d5c78f909full, 0x37aff616d4d4c628ull, 0x66197ba41c6bb734ull, 0x55e412777617000full, 0x3ba93c513abecc70ull, 0x2f42b24dff90224full }}, {{ 0x43bbbc59cb9ba634ull, 0x2cdf9ce4504fbd91ull, 0xfcfed4691c35280aull, 0x5ae8b8aa9ce60099ull, 0x549c5b2c4b73fc63ull, 0xd89af70bfba15718ull }}, {{ 0xa5555b81f4147e04ull, 0xc0bc20eb231d67acull, 0xe1f44c1b1a139065ull, 0x8d1736aa20fc0603ull, 0x4e1b8fbaf287dbe1ull, 0x760da677d44d66f3ull }}, {{ 0x7555931388ccec29ull, 0x8759492f5f260cbeull, 0xd38af90f04c3a3f9ull, 0x82e822a549d83c26ull, 0x0d139d4d794e96cfull, 0x9c8880ae4b060581ull }}, {{ 0x9557bec35801399bull, 0x497cdbd9b77c7f70ull, 0x436dba962fa467bfull, 0x1d115a74e2725984ull, 0x82c42506bd11e41bull, 0x1d5506ceee3c370aull }}, {{ 0xd56d73a1700c400cull, 0xdee096812adcfa65ull, 0xa24949dddc6c0d78ull, 0x22ad8890d8777f2aull, 0x1ba9724362b2e90full, 0x255244154e5a2669ull }}, {{ 0x5646844e607a807aull, 0xb4c5e10baca1c7faull, 0x56dce2aa9c3886b8ull, 0x5ac755a874aaf7aaull, 0x149e76a1dafd1a97ull, 0x7536a8d50f85801bull }}, {{ 0x5ec12b0fc4c904c2ull, 0x0fbaca74be51cfc7ull, 0x64a0daaa1a354337ull, 0x8bc958948eadaca7ull, 0xce30a2528de309e9ull, 0x942298529b37010eull }}, {{ 0xb38bae9dafda2f94ull, 0x9d4be88f6f321dc9ull, 0xee488aa50614a026ull, 0x75dd75cd92c8be89ull, 0x0de657398ade631full, 0xc959f33a10260a94ull }}, {{ 0x0374d228de85dbc4ull, 0x24f7159a57f529e1ull, 0x4ed56a723cce4182ull, 0x9aa69a07bbd77163ull, 0x8aff683f6cafdf3aull, 0xdd838044a17c69c8ull }}, {{ 0x22903598b13a95a8ull, 0x71a6d8076f93a2caull, 0x14562876600e8f15ull, 0x0a82044d566a6de1ull, 0x6dfa127a3edeb84aull, 0xa72302ae4edc21d5ull }}, {{ 0x59a217f6ec49d88full, 0x7084704a5bc45be5ull, 0xcb5d949fc09196d6ull, 0x69142b0560284acaull, 0x4bc4b8c674b332e4ull, 0x875e1acf14995256ull }}, {{ 0x8054efa53ae27596ull, 0x652c62e795ab96f5ull, 0xf1a7ce3d85afe460ull, 0x1ac9ae35c192ebebull, 0xf5af37c08efffcecull, 0x49ad0c16cdfd375eull }}, {{ 0x03515c744cd897dfull, 0xf3bbdd0bd8b3e597ull, 0x708e0e6738deebc3ull, 0x0be0ce198fbd3737ull, 0x98d82d8595ffe139ull, 0xe0c278e40be429b5ull }}, {{ 0x212d9c8b0075eeb2ull, 0x8556a2767706f7e6ull, 0x658c900838b535a7ull, 0x76c80cff9d64282aull, 0xf871c737dbfecc3aull, 0xc798b8e876e9a117ull }}, {{ 0x4bc81d6e049b52f3ull, 0x356258a0a645aefdull, 0xf77da0523714188bull, 0xa3d081fc25e991a7ull, 0xb471c82e97f3fa48ull, 0xcbf73914a5204aefull }}, {{ 0xf5d1264c2e113d83ull, 0x15d776467eb8d5e4ull, 0xaae8433626c8f570ull, 0x662513d97b1fb08full, 0x0c71d1d1ef87c6d6ull, 0xf7a83ace7342ed5dull }}, {{ 0x9a2b7ef9ccac671aull, 0xda6a9ec0f3385af1ull, 0xad12a01d83d99660ull, 0xfd72c67ecf3ce59cull, 0x7c7232335b4dc45full, 0xac924c10809d45a2ull }}, {{ 0x05b2f5c1febc0707ull, 0x882a338980338d70ull, 0xc2ba4127267fdfc8ull, 0xe67bc0f41860f81eull, 0xdc75f6019109abbfull, 0xbdb6f8a50624b858ull }}, {{ 0x38fd9993f3584647ull, 0x51a6035f02038660ull, 0x9b468b8780febdd5ull, 0x00d58988f3c9b133ull, 0x9c9b9c0faa60b57full, 0x6925b6723d6f3378ull }}, {{ 0x39e7ffc78172becaull, 0x307c21b614233fc2ull, 0x10c1734b09f36a55ull, 0x08575f5985e0ec04ull, 0x1e14189ca7c716f6ull, 0x1b792076665802b6ull }}, {{ 0x430ffdcb0e7b73dfull, 0xe4d9511cc9607d96ull, 0xa78e80ee63822753ull, 0x5369b97f3ac93828ull, 0x2cc8f61e8dc6e59cull, 0x12bb449fff701b1dull }}, {{ 0x9e9fe9ee90d286b9ull, 0xf07d2b1fddc4e7deull, 0x8b91094fe3158946ull, 0x42213ef84bdc3196ull, 0xbfd99d3189c4f81bull, 0xbb50ae3ffa610f23ull }}, {{ 0x323f2351a8394337ull, 0x64e3af3ea9b10eb2ull, 0x73aa5d1eded75cc5ull, 0x954c75b2f699efe1ull, 0x7e8023ef61b1b110ull, 0x5126ce7fc7ca9765ull }}, {{ 0xf6776130923ca025ull, 0xf0e4d872a0ea92f5ull, 0x84a7a334b4699fb5ull, 0xd4fc98fda2035eceull, 0xf1016759d0f0eaa5ull, 0x2b8410fdcde9e9f6ull }}, {{ 0xa0a9cbe5b65e4172ull, 0x68f0747a4929bd9bull, 0x2e8c600f0c203d1bull, 0x51ddf9e85421b411ull, 0x6a0e098229692a7aull, 0xb328a9ea0b2323a5ull }}, {{ 0x46a1f6f91fae8e75ull, 0x19648cc6dba16814ull, 0xd17bc09679426312ull, 0x32abc313495108abull, 0x248c5f159e1ba8c7ull, 0xff96a3246f5f6476ull }}, {{ 0xc253a5bb3cd1908eull, 0xfded7fc4944e10caull, 0x2ed585e0bc97deb4ull, 0xfab59ec0dd2a56b6ull, 0x6d7bb6d82d1497c7ull, 0xfbe25f6c59b9ec9dull }}, {{ 0x97447950602fa588ull, 0xeb46fdadcb0ca7ebull, 0xd4573ac75deeb311ull, 0xcb183388a3a7631dull, 0x46d52471c2cdedcfull, 0xd6d7ba3b81433e26ull }}, {{ 0xe8acbd23c1dc774full, 0x30c5e8c9ee7e8f33ull, 0x4b684bc9ab52feb3ull, 0xeef203566489df2aull, 0xc4536c719c0b4a1dull, 0x646d46530ca06d7eull }}, {{ 0x16bf6365929ca915ull, 0xe7bb17e350f19807ull, 0xf212f5e0b13df2ffull, 0x5574215fed62b7a6ull, 0xab423c701870e52bull, 0xec44bf3e7e4446f3ull }}, {{ 0xe379e1f7ba1e9aceull, 0x0d4eeee1296ff046ull, 0x74bd9ac6ec6b7dffull, 0x56894dbf45db2c85ull, 0xb0965c60f468f3b1ull, 0x3aaf7870eeaac584ull }}, {{ 0xe2c2d3ad45320c0aull, 0x851554cb9e5f62c4ull, 0x8f680bc53c32ebf6ull, 0x615d0978ba8fbd36ull, 0xe5df9bc98c1984edull, 0x4adab46952abb72eull }}, {{ 0xdb9c44c4b3f47864ull, 0x32d54ff42fb9dbb0ull, 0x9a1075b459fd37a1ull, 0xcda25eb7499d6421ull, 0xfabc15df78ff3145ull, 0xec8b0c1d3ab527d4ull }}, {{ 0x941aafaf078cb3e8ull, 0xfc551f89dd4294e8ull, 0x04a4990b83e42c4bull, 0x0857b328e025e950ull, 0xcb58dabab9f7ecbaull, 0x3d6e79244b138e51ull }}, {{ 0xc90adcd64b7f0714ull, 0xdb533b62a499d115ull, 0x2e6dfa7326e9baf7ull, 0x536cff98c17b1d20ull, 0xf1788b4b43af3f44ull, 0x6650bb6aeec38f31ull }}, {{ 0xda6ca05ef2f646cbull, 0x914051da6e022ad9ull, 0xd04bc87f85214daeull, 0x4241fbf78ecf2341ull, 0x6eb570f0a4d878abull, 0xff27522d53a397f3ull }}, {{ 0x883e43b57d9ec3ebull, 0xac8332884c15ac82ull, 0x22f5d4fb334d08d1ull, 0x9693d7ab94176092ull, 0x531669667074b6b0ull, 0xf78935c54463ef82ull }}, {{ 0x526ea516e833a732ull, 0xbd1ff952f8d8bd19ull, 0x5d9a51d001025830ull, 0xe1c66cb3c8e9c5b5ull, 0x3ee01e00648f22e5ull, 0xab5c19b4abe75b17ull }}, {{ 0x385272e5120487f5ull, 0x633fbd3db87762fdull, 0xa80732200a1771e7ull, 0xd1c03f05d921b915ull, 0x74c12c03ed975cfaull, 0xb199010eb7098ee8ull }}, {{ 0x33387cf2b42d4f95ull, 0xe07d646934a9dde4ull, 0x9047f54064ea7309ull, 0x3182763a7b513ad8ull, 0x8f8bb82747e9a1ccull, 0xeffa0a93265f9514ull }}, {{ 0x0034e17b09c51bd1ull, 0xc4e5ec1c0ea2aaeaull, 0xa2cf9483f1287e62ull, 0xef189e48d12c4c75ull, 0x9b753188cf2051f9ull, 0x5fc469bf7fbbd2cdull }}, {{ 0x0210cece61b3162dull, 0xb0fb3918925aad24ull, 0x5c1bcd276b94efdbull, 0x56f62ed82bbafc98ull, 0x1293ef58174333c3ull, 0xbdac217afd563c08ull }}, {{ 0x14a8140fd0feddc3ull, 0xe9d03af5b78ac368ull, 0x9916038a33d15e94ull, 0x659dd471b54dddf3ull, 0xb9c75970e8a005a1ull, 0x68b94ecde55e5850ull }}, {{ 0xce90c89e29f4a99full, 0x22224d992b6ba210ull, 0xfadc2366062db1d1ull, 0xf82a4c71150aab83ull, 0x41c97e691640384dull, 0x173d140af5af7327ull }}, {{ 0x11a7d62da38ea038ull, 0x555707fbb23454a8ull, 0xcc9961fc3dc8f22bull, 0xb1a6fc6ad26ab327ull, 0x91def01ade82330bull, 0xe862c86d98da7f88ull }}, {{ 0xb08e5dc86392422cull, 0x55664fd4f60b4e90ull, 0xfdfdd3da69d975b1ull, 0xf085dc2c382aff8dull, 0xb2b5610cb115fe74ull, 0x13dbd447f888fb55ull }}, {{ 0xe58fa9d3e3b695b8ull, 0x55ff1e519c7111a6ull, 0xebea4688227e98edull, 0x653a99ba31adfb8bull, 0xfb15ca7eeadbf091ull, 0xc6964acfb559d158ull }}, {{ 0xf79ca246e521d934ull, 0x5bf72f301c6ab084ull, 0x3726c15158f1f945ull, 0xf44a0145f0cbd377ull, 0xced9e8f52c9765adull, 0xc1deec1d15822d79ull }}, {{ 0xac1e56c4f3527c0dull, 0x97a7d7e11c2ae531ull, 0x27838d2d7973bcb5ull, 0x8ae40cbb67f642a8ull, 0x14831993bde9f8cbull, 0x92b53922d715c6c2ull }}, {{ 0xb92f63b18138d880ull, 0xec8e6ecb19acf3f0ull, 0x8b2383c6be855f17ull, 0x6ce87f520f9e9a91ull, 0xcd1effc56b23b7f3ull, 0xbb143b5c66d9c394ull }}, {{ 0x3bd9e4ef0c387503ull, 0x3d9053ef00c18767ull, 0x6f6325c37135b6efull, 0x4114f9349c3209afull, 0x0335fdb62f652f82ull, 0x4eca519c0481a3d0ull }}, {{ 0x5682f1567a34921bull, 0x67a34756078f4a08ull, 0x59df79a26c192558ull, 0x8ad1bc0e19f460daull, 0x201be91dd9f3db16ull, 0x13e730182d106620ull }}, {{ 0x611d6d60c60db512ull, 0x0c60c95c4b98e453ull, 0x82bac05838fb7574ull, 0x6c31588d038bc887ull, 0x41171b2a83868ee1ull, 0xc707e0f1c2a3fd41ull }}, {{ 0xcb2645c7bc8912b2ull, 0x7bc7dd9af3f8eb41ull, 0x1b4b837239d29688ull, 0x39ed75822375d54bull, 0x8ae70fa9234194ceull, 0xc64ec9719a67e48cull }}, {{ 0xef7eb9cd5d5abaf1ull, 0xd5cea80d87b93091ull, 0x10f322764239e154ull, 0x43469715629a54efull, 0x6d069c9b608fd00eull, 0xbf13de70080eed7dull }}, {{ 0x5af34205a58b4d6dull, 0x5a1290874d3be5b3ull, 0xa97f589e9642cd50ull, 0xa0c1e6d5da075156ull, 0x42421e11c59e208eull, 0x76c6b060509546e6ull }}, {{ 0x8d80943877710645ull, 0x84b9a5490456f901ull, 0x9ef97631de9c0523ull, 0x4793045a84492d62ull, 0x96952cb1b82d4592ull, 0xa3c2e3c325d4c4feull }}, {{ 0x8705ca34aa6a3eb2ull, 0x2f4074da2b65ba0full, 0x35be9df2b2183363ull, 0xcbbe2b892adbc5daull, 0xe1d3bef131c4b7b6ull, 0x659ce59f7a4fb1f1ull }}, {{ 0x4639e60ea82672f2ull, 0xd8849085b1f9449bull, 0x19722b7af4f201dfull, 0xf56db35bac95ba86ull, 0xd245756bf1af2d23ull, 0xf820f83ac71cf372ull }}, {{ 0xbe42fc9291807d75ull, 0x752da538f3bcae10ull, 0xfe75b2cd917412beull, 0x96490194bdd9493cull, 0x36b6963770d7c367ull, 0xb149b24bc721827cull }}, {{ 0x6e9dddb9af04e692ull, 0x93c87439855ecca7ull, 0xf098fc07ae88bb70ull, 0xdeda0fcf6a7cdc61ull, 0x2321de2a686da20bull, 0xece0f6f5c74f18daull }}, {{ 0x522aa940d63101b0ull, 0xc5d48a3f35b3fe8aull, 0x65f9d84cd1575265ull, 0xb4849e1a28e09bd3ull, 0x5f52ada814485476ull, 0x40c9a599c916f885ull }}, {{ 0x35aa9c885dea10dcull, 0xba4d66781907f167ull, 0xfbc273002d6937f9ull, 0x0d2e2d0598c61641ull, 0xb93ac890cad34ca3ull, 0x87e07801dae5b535ull }}, {{ 0x18aa1d53ab24a895ull, 0x470600b0fa4f6e08ull, 0xd5987e01c61c2fc1ull, 0x83cdc237f7bcde93ull, 0x3c4bd5a7ec40fe5eull, 0x4ec4b0128cf91419ull }}, {{ 0xf6a52544af6e95d1ull, 0xc63c06e9c71a4c50ull, 0x57f4ec11bd19dd8cull, 0x2609962fad60b1c6ull, 0x5af6588f3a89efb1ull, 0x13aee0b981bac8fcull }}, {{ 0xa27374aeda51da2full, 0xbe584521c706fb29ull, 0x6f9138b16302a77full, 0x7c5fdddcc5c6f1bfull, 0x8d9f759849635cebull, 0xc4d4c73f114bd9dbull }}, {{ 0x58828ed4873285d6ull, 0x6f72b351c645cfa0ull, 0x5bac36edde1a8afdull, 0xdbbeaa9fb9c5717aull, 0x883a97f2dde1a132ull, 0xb04fc876acf68293ull }}, {{ 0x7519944d47f93a5bull, 0x5a7b0131beba1c43ull, 0x94ba254aad096de6ull, 0x9572aa3d41b66ec7ull, 0x5249ef7caad04bfcull, 0xe31dd4a2c1a119c3ull }}, {{ 0x92ffcb04cfbc4792ull, 0x88ce0bf173451aa2ull, 0xcf4574eac25e4affull, 0xd67aa664912053cbull, 0x36e35adeac22f7ddull, 0xdf2a4e5b904b01a1ull }}, {{ 0xbdfdee301d5acbb8ull, 0x580c776e80b30a59ull, 0x18b6912b97aeedfbull, 0x60ca7fedab4345f6ull, 0x24e18cb2b95daeaaull, 0xb7a70f93a2ee104cull }}, {{ 0x6beb4de1258bf533ull, 0x707caa5106fe6781ull, 0xf721abb3ecd54bd1ull, 0xc7e8ff48b0a0bb9cull, 0x70cf7efb3da8d2a7ull, 0x2c869bc45d4ca2f9ull }}, {{ 0x37310acb77779401ull, 0x64dea72a45f00b0eull, 0xa750b5074054f62eull, 0xcf19f8d6e6475421ull, 0x681af5d068983a8dull, 0xbd4215aba4fe5dbeull }}, {{ 0x27ea6bf2aaabc807ull, 0xf0b287a6bb606e8eull, 0x8927124883519dcfull, 0x1703b864fec94950ull, 0x110d9a2415f2498aull, 0x6494d8b471efa970ull }}, {{ 0x8f28377aaab5d043ull, 0x66f94c8351c4518dull, 0x5b86b6d521302a1full, 0xe62533f1f3dcdd25ull, 0xaa880568db76df64ull, 0xedd0770c735c9e60ull }}, {{ 0x97922acaab1a229aull, 0x05bcfd2131ab2f87ull, 0x934324534be1a53aull, 0xfd74077386a0a375ull, 0xa950361892a4b9f0ull, 0x4a24a67c819e2fc6ull }}, {{ 0xebb5abeaaf055a04ull, 0x3961e34bf0afdb4bull, 0xc09f6b40f6d07444ull, 0xe6884a8342466297ull, 0x9d221cf5ba6f4369ull, 0xe56e80dd102dddc2ull }}, {{ 0x3518b72ad635842bull, 0x3dd2e0f766de90f7ull, 0x863a3089a4248aaaull, 0x0152e92096bfd9edull, 0x235521994858a223ull, 0xf65108a2a1caa99aull }}, {{ 0x12f727ac5e1729adull, 0x6a3cc9aa04b1a9a8ull, 0x3e45e560696d6aa6ull, 0x0d3d1b45e37e8347ull, 0x61534ffcd376555eull, 0x9f2a565a51eaa005ull }}, {{ 0xbda78cbbace7a0c5ull, 0x265fe0a42ef0a090ull, 0x6ebaf5c41e462a80ull, 0x846310bae2f120c8ull, 0xcd411fe0429f55acull, 0x37a75f87332a4035ull }}, {{ 0x688b7f54c10c47b1ull, 0x7fbec669d56645a7ull, 0x534d99a92ebda901ull, 0x2bdea74cdd6b47d4ull, 0x048b3ec29a3958bdull, 0x2c89bb47ffa6821aull }}, {{ 0x1572f94f8a7acce9ull, 0xfd73c02255feb88aull, 0x4108009bd3689a0eull, 0xb6b28900a630ce4bull, 0x2d70739a063d7763ull, 0xbd6150cffc811504ull }}, {{ 0xd67dbd1b68cc0115ull, 0xe68581575bf33564ull, 0x8a50061642160495ull, 0x22f95a067de80ef0ull, 0xc66484043e66a9e5ull, 0x65cd281fdd0ad229ull }}, {{ 0x60e9631217f80ad6ull, 0x01370d69978015f0ull, 0x67203cde94dc2ddbull, 0x5dbd8440eb109565ull, 0xbfed282a7002a2f3ull, 0xfa03913ea26c35a1ull }}, {{ 0xc91ddeb4efb06c5full, 0x0c26861feb00db63ull, 0x074260b1d099ca8eull, 0xa9672a892ea5d5f6ull, 0x7f4391a8601a5d81ull, 0xc423ac72583a1851ull }}, {{ 0xdb2ab3115ce43bb6ull, 0x79813d3f2e0891e5ull, 0x4897c6f22601e98cull, 0x9e07a95bd27a5b9cull, 0xf8a3b093c107a710ull, 0xa964bc777244f32eull }}, {{ 0x8faafeada0ea551eull, 0xbf0c6477cc55b2faull, 0xd5edc5757c131f7cull, 0x2c4c9d9638c7941aull, 0xb664e5c58a4c86a6ull, 0x9def5caa76b17fd5ull }}, {{ 0x9cadf2c84927532full, 0x767becadfb58fdc9ull, 0x5b49b696d8bf3adfull, 0xbafe27de37cbc90cull, 0x1ff0f9b766fd427dull, 0x2b599ea8a2eefe59ull }}, {{ 0x1ecb7bd2db893fd8ull, 0xa0d73ecbd179e9e0ull, 0x90e121e477784cbaull, 0x4ded8eae2df5da7bull, 0x3f69c12a05e498e9ull, 0xb18032965d55ef7bull }}, {{ 0x33f2d63c935c7e71ull, 0x486873f62ec322c1ull, 0xa8cb52ecaab2ff4aull, 0x0b4792cdcb9a88d3ull, 0x7a218ba43aedf91dull, 0xef01f9dfa55b5ad0ull }}, {{ 0x077c5e5dc19cf066ull, 0xd414879dd39f5b8cull, 0x97f13d3eaafdf8e6ull, 0x70cbbc09f4095844ull, 0xc54f746a4d4bbb22ull, 0x5613c2bc75918c24ull }}, {{ 0x4adbafa9902163ffull, 0x48cd4c2a44399378ull, 0xef6c6472adebb904ull, 0x67f55863885d72adull, 0xb51a8c2704f54f58ull, 0x5cc59b5c97af796full }}, {{ 0xec94dc9fa14de7f5ull, 0xd804f9a6aa3fc2b2ull, 0x5a3bec7acb353a2aull, 0x0f9573e353a67acbull, 0x1309798631951974ull, 0x9fb8119decdabe5dull }}, {{ 0x3dd09e3c4d0b0f96ull, 0x7031c082a67d9afdull, 0x86573ccbf01445acull, 0x9bd686e14480cbf1ull, 0xbe5ebf3defd2fe88ull, 0x3d30b02b408b6fa2ull }}, {{ 0x6a262e5b026e9bddull, 0x61f1851a80e80de4ull, 0x3f685ff760cab8bcull, 0x166144ccad07f76full, 0x6fb3786b5e3df156ull, 0x63e6e1b085725c5bull }}, {{ 0x257dcf8e185216a7ull, 0xd36f330909108aecull, 0x7a13bfa9c7eb375bull, 0xdfccaffec24faa58ull, 0x5d02b431ae6b6d5cull, 0xe704d0e536779b92ull }}, {{ 0x76ea1b8cf334e282ull, 0x4257fe5a5aa56d39ull, 0xc4c57ca1cf302996ull, 0xbdfedff3971ca774ull, 0xa21b09f0d03245a0ull, 0x063028f420ac13b7ull }}, {{ 0xa52513818010d916ull, 0x976fef878a76443eull, 0xafb6de5217e19fdeull, 0x6bf4bf83e71e8a8full, 0x550e636821f6b847ull, 0x3de1998946b8c52cull }}, {{ 0x7372c30f00a87adfull, 0xea5f5b4b689eaa72ull, 0xdd24af34eed03eb1ull, 0x378f7b270731699cull, 0x528fe21153a332caull, 0x6acfff5cc337b3bbull }}, {{ 0x827b9e960694ccb7ull, 0x27b990f21632a878ull, 0xa36ed811542272f3ull, 0x2b9acf8647ee2020ull, 0x399ed4ad445ffbe6ull, 0x2c1ff99fa02d0551ull }}, {{ 0x18d431dc41cfff28ull, 0x8d3fa974ddfa94b5ull, 0x625470ad49587d7full, 0xb40c1b3ecf4d4146ull, 0x40344ec4abbfd6fdull, 0xb93fc03c41c2352cull }}, {{ 0xf849f29a921ff793ull, 0x847c9e90abc9cf12ull, 0xd74c66c4dd74e6fbull, 0x0879107419048cbfull, 0x820b13aeb57e65e9ull, 0x3c7d825a919613baull }}, {{ 0xb2e37a09b53fabbdull, 0x2cde31a6b5e216bdull, 0x68fc03b0a69105d3ull, 0x54baa488fa2d7f7eull, 0x146ec4d316effb1aull, 0x5ce71789afdcc549ull }}, {{ 0xfce2c461147cb564ull, 0xc0adf0831ad4e368ull, 0x19d824e681aa3a3full, 0x4f4a6d59c5c6faf0ull, 0xcc53b03ee55fcf07ull, 0xa106eb60de9fb4daull }}, {{ 0xe0dbabcaccdf15e4ull, 0x86cb651f0c50e219ull, 0x0271710110a6467dull, 0x18e84581b9c5cd61ull, 0xfb44e274f5be1649ull, 0x4a4531c8b23d108bull }}, {{ 0xc894b5ec00b6dae6ull, 0x43f1f3367b28d502ull, 0x186e6a0aa67ec0e7ull, 0xf912b71141ba05caull, 0xd0b0d891996cdedaull, 0xe6b3f1d6f662a577ull }}, {{ 0xd5cf1b3807248cfbull, 0xa7738020cf98521bull, 0xf450246a80f38908ull, 0xbabb26ac914439e4ull, 0x26e875affe40b48dull, 0x030772659fda76aeull }}, {{ 0x5a171030476d81d0ull, 0x8a8301481bf33516ull, 0x8b216c2909835a56ull, 0x4b4f82bdacaa42f1ull, 0x851498dfee870d89ull, 0x1e4a77f83e88a2cdull }}, {{ 0x84e6a1e2ca471222ull, 0x691e0cd1178012dfull, 0x6f4e399a5f218761ull, 0xf11b1b68bea69d6full, 0x32cdf8bf5146875cull, 0x2ee8afb271565c07ull }}, {{ 0x310252dbe6c6b555ull, 0x1b2c802aeb00bcbbull, 0x590e4007b74f49ceull, 0x6b0f12177282265aull, 0xfc0bb7792cc149a1ull, 0xd516dcf86d5f9847ull }}, {{ 0xea173c9703c31550ull, 0x0fbd01ad2e075f4full, 0x7a8e804d2918e20dull, 0x2e96b4ea79157f87ull, 0xd8752abbbf8ce04eull, 0x52e4a1b445bbf2cfull }}, {{ 0x24e85de6259ed51cull, 0x9d6210c3cc49b91full, 0xc99103039af8d482ull, 0xd1e31128bad6fb4aull, 0x7493ab557b80c30dull, 0x3cee510ab9577c1eull }}, {{ 0x7113aafd78345317ull, 0x25d4a7a5fae13b37ull, 0xdfaa1e240db84d1aull, 0x32deab974c65d0ebull, 0x8dc4b156d3079e8aull, 0x614f2a6b3d6ad930ull }}, {{ 0x6ac4ade6b20b3ee3ull, 0x7a4e8c7bcccc502aull, 0xbca52d6889330305ull, 0xfcb2b3e8fbfa2936ull, 0x89aeed643e4c3165ull, 0xcd17a830662c7be5ull }}, {{ 0x2baecb02f47074dbull, 0xc7117cd5fffb21a8ull, 0x5e73c6155bfe1e36ull, 0xdefb0719d7c59c23ull, 0x60d545ea6ef9edfbull, 0x02ec91e3fdbcd6f7ull }}, {{ 0xb4d3ee1d8c64908bull, 0xc6aee05bffcf5091ull, 0xb085bcd597ed2e23ull, 0xb5ce47026db81961ull, 0xc854bb2855c34bd6ull, 0x1d3db2e7e96065a9ull }}, {{ 0x10474d277beda56full, 0xc2d4c397fe1925b1ull, 0xe5396057ef43cd65ull, 0x1a0ec6184930fdd0ull, 0xd34f4f9359a0f663ull, 0x2468fd0f1dc3f8a1ull }}, {{ 0xa2c9038ad7487659ull, 0x9c4fa3efecfb78eaull, 0xf43dc36f58a605f9ull, 0x0493bcf2dbe9ea28ull, 0x41191bc180499fdfull, 0x6c19e29729a7b652ull }}, {{ 0x5bda236c68d49f7bull, 0x1b1c675f41d2b92aull, 0x8a69a259767c3bc0ull, 0x2dc5617c97232599ull, 0x8afb158f02e03eb6ull, 0x3902d9e7a08d1f36ull }}, {{ 0x9685623c184e3ad3ull, 0x0f1c09b8923b3ba7ull, 0x6820577ea0da5581ull, 0xc9b5cedde75f77ffull, 0x6dced7961cc2731dull, 0x3a1c830c45833821ull }}, {{ 0xe135d658f30e4c3dull, 0x97186135b650548bull, 0x11436af24887570aull, 0xe11a14ab09baaffaull, 0x4a146bdd1f987f29ull, 0x451d1e7ab720314eull }}, {{ 0xcc1a5f797e8efa60ull, 0xe6f3cc191f234d76ull, 0xaca22d76d5496669ull, 0xcb04ceae614adfc4ull, 0xe4cc36a33bf4f7a2ull, 0xb32330cb2741ed0eull }}, {{ 0xf907babef195c7c1ull, 0x0585f8fb376106a3ull, 0xbe55c6a454de0023ull, 0xee3012cfccecbdaeull, 0xeffa22605791ac5bull, 0xff5fe7ef88934294ull }}, {{ 0xba4d4b756fd9cd89ull, 0x373bb9d029ca4267ull, 0x6f59c26b50ac015eull, 0x4de0bc1e013f68d3ull, 0x5fc557c36bb0bb97ull, 0xf9bf0f5b55c099d1ull }}, {{ 0x4704f2965e82075bull, 0x28554221a1e6980dull, 0x5981983126b80daeull, 0x0ac7592c0c7a1842ull, 0xbdb56da234e753e9ull, 0xc17699915986022dull }}, {{ 0xc63179dfb1144991ull, 0x935495505301f084ull, 0x7f0ff1eb833088cdull, 0x6bc97bb87cc4f297ull, 0x691648561109471aull, 0x8ea1ffad7f3c15c9ull }}, {{ 0xbdeec2bceacadfa9ull, 0xc14dd5233e13652full, 0xf69f73331fe55807ull, 0x35ded534dfb179eaull, 0x1aded35caa5cc708ull, 0x9253fcc6f858d9deull }}, {{ 0x6b539b612becbc9aull, 0x8d0a53606cc1f3ddull, 0xa23a7fff3ef5704dull, 0x1ab45410bceec32dull, 0x0cb4419ea79fc652ull, 0xb747dfc5b37882adull }}, {{ 0x314411cbb73f5e03ull, 0x826741c43f9386a6ull, 0x5648fff875966307ull, 0x0b0b48a761539fc8ull, 0x7f0a90328c3dbf35ull, 0x28cebdb902b51ac2ull }}, {{ 0xeca8b1f52879ac1aull, 0x180891aa7bc3427dull, 0x5ed9ffb497dfde4bull, 0x6e70d689cd443dd3ull, 0xf669a1f97a697812ull, 0x9813693a1b130b98ull }}, {{ 0x3e96f39394c0b904ull, 0xf055b0a8d5a098ebull, 0xb483fd0deebeaeeeull, 0x5068616204aa6a41ull, 0xa02053bec81eb0b8ull, 0xf0c21c450ebe73f9ull }}, {{ 0x71e583c3cf873a2bull, 0x6358e6985845f930ull, 0x0d27e28b5372d555ull, 0x2413cdd42ea82691ull, 0x41434573d132e733ull, 0x67951ab2937087c0ull }}, {{ 0x72f725a61b4845b1ull, 0xe17901f372bbbbe4ull, 0x838ed971427c5555ull, 0x68c60a49d29181aaull, 0x8ca0b6862bfd07ffull, 0x0bd30af9c2654d82ull }}, {{ 0x7da7787d10d2b8e6ull, 0xceba13827b5556ecull, 0x23947e6c98db555aull, 0x17bc66e239af10a9ull, 0x7e47213db7e24ffaull, 0x763e6dc197f50719ull }}, {{ 0xe88ab4e2a83b38fcull, 0x1344c318d155653cull, 0x63ccf03df891558cull, 0xed5c04d640d6a69bull, 0xeec74c692ed71fc4ull, 0x9e70498fef9246feull }}, {{ 0x156b10da925039dbull, 0xc0af9ef82d55f461ull, 0xe601626bb5ad5778ull, 0x4598305e88628211ull, 0x53c8fc1bd4673db1ull, 0x3062df9f5bb6c5f5ull }}, {{ 0xd62ea889b722428dull, 0x86dc35b1c55b8bcaull, 0xfc0dd83518c56ab7ull, 0xb7f1e3b153d914b2ull, 0x45d9d9164c0868ecull, 0xe3dcbc399523bb95ull }}, {{ 0x5dd2956127569986ull, 0x449a18f1b59375ecull, 0xd88a7212f7b62b2bull, 0x2f72e4ed467acefdull, 0xba827adef854193full, 0xe69f5a3fd36553d4ull }}, {{ 0xaa39d5cb8961ff3cull, 0xae04f97117c29b3bull, 0x756874bdad1dafb0ull, 0xda7cf144c0cc15eaull, 0x4918ccb5b348fc77ull, 0x0239867e41f5464full }}, {{ 0xa64259f35dd3f85bull, 0xcc31be6aed9a1054ull, 0x96148f68c328dce6ull, 0x88e16caf87f8db28ull, 0xdaf7ff1900d9dcaeull, 0x163f40ee9394bf18ull }}, {{ 0x7e978381aa47b391ull, 0xf9f1702d4804a34eull, 0xdccd9a179f98a103ull, 0x58ce3edb4fb88f95ull, 0x8daff6fa08829ed1ull, 0xde788951c3cf76f8ull }}, {{ 0xf1eb2310a6cd03a9ull, 0xc36e61c4d02e6110ull, 0xa00804ec3bf64a27ull, 0x780e74911d359bdaull, 0x88dfa5c4551a342dull, 0xb0b55d31a61aa5b5ull }}, {{ 0x732f5ea68402249bull, 0xa24fd1b021cfcaa9ull, 0x4050313a579ee58dull, 0xb0908dab2418168aull, 0x58bc79ab530609c6ull, 0xe715a3f07d0a7917ull }}, {{ 0x7fd9b28128156e09ull, 0x571e30e1521dea9eull, 0x8321ec476c34f788ull, 0xe5a588af68f0e166ull, 0x775cc0b13e3c61c2ull, 0x06d86764e268bae9ull }}, {{ 0xfe80f90b90d64c5full, 0x672de8cd352b2a30ull, 0x1f533aca3a11ab53ull, 0xf87756da1968ce01ull, 0xa99f86ec6e5bd19cull, 0x447409f0d8174d1eull }}, {{ 0xf109ba73a85efbb2ull, 0x07cb180413afa5e9ull, 0x39404be644b0b142ull, 0xb4a96484fe180c0bull, 0xa03b453c4f963021ull, 0xac88636870e90332ull }}, {{ 0x6a61488493b5d4f3ull, 0x4deef028c4dc7b23ull, 0x3c82f6feaee6ec94ull, 0x0e9ded31ecf07870ull, 0x4250b45b1bdde151ull, 0xbd53e214691a1ffaull }}, {{ 0x27ccd52dc51a517eull, 0x0b556197b09ccf62ull, 0x5d1da5f2d5053dcbull, 0x922b43f34164b462ull, 0x97270b8f16aacd2aull, 0x6546d4cc1b053fc6ull }}, {{ 0x8e0053c9b3072eefull, 0x7155cfece62019d5ull, 0xa3287b7c523469eeull, 0xb5b0a7808def0bd7ull, 0xe7867396e2ac03a9ull, 0xf4c44ff90e347dc1ull }}, {{ 0x8c0345e0fe47d558ull, 0x6d5a1f40fd410257ull, 0x5f94d2db360c2350ull, 0x18e68b058b56766cull, 0x0b4083e4dab824a1ull, 0x8fab1fba8e0ce993ull }}, {{ 0x7820bac9eece5572ull, 0x45853889e48a176bull, 0xbbd03c901c796124ull, 0xf9016e377160a03bull, 0x708526f08b316e4aull, 0x9caf3d498c811fbeull }}, {{ 0xb1474be3540f5678ull, 0xb7343562ed64ea32ull, 0x56225da11cbdcb6aull, 0xba0e4e2a6dc64255ull, 0x653385656fee4eedull, 0x1ed864df7d0b3d70ull }}, {{ 0xecc8f6e1489960b1ull, 0x280a15dd45f125faull, 0x5d57a84b1f69f22bull, 0x448f0da849be9755ull, 0xf40335f65f4f1549ull, 0x3473f0bae2706663ull }}, {{ 0x3fd9a4ccd5fdc6e9ull, 0x9064daa4bb6b7bcdull, 0xa56c92ef3a2375afull, 0xad968892e171e955ull, 0x88201b9fb916d4dcull, 0x0c87674cd863ffe7ull }}, {{ 0x7e8070005be9c51eull, 0xa3f08a6f5232d604ull, 0x763dbd58456298dbull, 0xc7e155bcce731d58ull, 0x5141143d3ae4509eull, 0x7d4a090073e7ff0bull }}, {{ 0xf10460039721b32bull, 0x6765685935fc5c2cull, 0x9e696572b5d9f894ull, 0xcecd5960107f2574ull, 0x2c8aca644ceb2633ull, 0xe4e45a04870ff671ull }}, {{ 0x6a2bc023e750ffaeull, 0x09f6137c1bdb99c1ull, 0x301df67b1a83b5ccull, 0x14057dc0a4f7768eull, 0xbd6be7eb012f7e06ull, 0xf0eb842d469fa06bull }}, {{ 0x25b581670929fcd0ull, 0x639cc2d91694018eull, 0xe12ba0cf092519f8ull, 0xc836e98671aaa18dull, 0x66370f2e0bdaec3cull, 0x693329c4c23c4435ull }}, {{ 0x79170e065ba3e01cull, 0xe41f9c7ae1c80f8dull, 0xcbb448165b7303b3ull, 0xd2251f4070aa4f8aull, 0xfe2697cc768d3a5full, 0x1bffa1af965aaa15ull }}, {{ 0xbae68c3f9466c11cull, 0xe93c1cccd1d09b86ull, 0xf50ad0df927e2506ull, 0x3573388466a71b6bull, 0xed81edfca18447beull, 0x17fc50dbdf8aa4dbull }}, {{ 0x4d017a7bcc038b1aull, 0x1c59200032261343ull, 0x926c28bbb8ed7245ull, 0x1680352c02871237ull, 0x47134bde4f2acd6eull, 0xefdb2896bb6a7097ull }}, {{ 0x020ec8d5f8236f04ull, 0x1b7b4001f57cc0a1ull, 0xb8399755394676b3ull, 0xe10213b81946b62bull, 0xc6c0f6af17ac064cull, 0x5e8f95e3522865e8ull }}, {{ 0x1493d85bb1625625ull, 0x12d0801396df864aull, 0x323fe9543cc0a2ffull, 0xca14c530fcc31db5ull, 0xc389a2d6ecb83f00ull, 0xb19bdae13593fb17ull }}, {{ 0xcdc67394edd75d6eull, 0xbc2500c3e4bb3ee4ull, 0xf67f1d4a5f865df6ull, 0xe4cfb3e9df9f2913ull, 0xa3605c653f327607ull, 0xf0168ccc17c7ceedull }}, {{ 0x09c083d14a69a648ull, 0x597207a6ef5074f0ull, 0xa0f724e7bb3faba3ull, 0xf01d0722bc379ac7ull, 0x61c39bf477f89c4eull, 0x60e17ff8edce1548ull }}, {{ 0x6185262ce8207ed5ull, 0x7e744c8559249160ull, 0x49a7710d507cb461ull, 0x6122475b5a2c0bccull, 0xd1a4178cafb61b15ull, 0xc8ceffb94a0cd4d3ull }}, {{ 0xcf337dc11144f450ull, 0xf08afd357b6dadc3ull, 0xe08a6a8524df0bceull, 0xcb56c99185b875faull, 0x3068eb7edd1d0ed5ull, 0xd815fd3ce4805046ull }}, {{ 0x1802e98aacb18b1full, 0x656de416d248c9a6ull, 0xc568293370b67615ull, 0xf163dfaf39349bccull, 0xe41932f4a3229459ull, 0x70dbe460ed0322bdull }}, {{ 0xf01d1f6abeef6f3aull, 0xf64ae8e436d7e07cull, 0xb6119c0267209cd5ull, 0x6de6bcd83c0e15ffull, 0xe8fbfd8e5f59cb83ull, 0x6896ebc9421f5b6aull }}, {{ 0x61233a2b755a5840ull, 0x9eed18ea246ec4e1ull, 0x1cb018180746205bull, 0x4b036072588cdbfdull, 0x19d7e78fb981f322ull, 0x15e535dc9539922dull }}, {{ 0xcb6045b29587727bull, 0x3542f9256c53b0cdull, 0x1ee0f0f048bd4394ull, 0xee21c477758097e3ull, 0x026f0b9d3f137f56ull, 0xdaf41a9dd43fb5c3ull }}, {{ 0xf1c2b8f9d74a78d1ull, 0x149dbb763b44e809ull, 0x34c96962d764a3caull, 0x4d51acaa9705eedfull, 0x1856742476c2f965ull, 0x8d890a2a4a7d199eull }}, {{ 0x719b39c268e8b82cull, 0xce29529e50b11063ull, 0x0fde1ddc69ee65e4ull, 0x0530bea9e63b54b8ull, 0xf360896ca39dbdf5ull, 0x875a65a6e8e3002cull }}, {{ 0x70104198191731b3ull, 0x0d9d3a2f26eaa3e2ull, 0x9ead2a9c234ffaf0ull, 0x33e772a2fe514f30ull, 0x81c55e3e64296b92ull, 0x4987f88518de01c1ull }}, {{ 0x60a28ff0fae7f100ull, 0x882445d7852a66d8ull, 0x32c3aa19611fcd60ull, 0x070a7a5def2d17e6ull, 0x11b5ae6fe99e33b6ull, 0xdf4fb532f8ac118full }}, {{ 0xc6599f69cd0f69feull, 0x516aba6b33a80473ull, 0xfba4a4fdcb3e05c5ull, 0x4668c7ab57c2eefdull, 0xb118d05f202e051cull, 0xb91d13fdb6b8af96ull }}, {{ 0xbf803a22029a23e9ull, 0x2e2b483004902c85ull, 0xd46e71e9f06c39b5ull, 0xc017ccb16d9d55ebull, 0xeaf823b741cc331aull, 0x3b22c7e92336dbe2ull }}, {{ 0x7b0245541a056718ull, 0xcdb0d1e02da1bd39ull, 0x4c507323643a4113ull, 0x80edfeee48255b36ull, 0x2db1652891f9ff0bull, 0x4f5bcf1b602496ddull }}, {{ 0xce16b549043606eeull, 0x08e832c1c851643eull, 0xfb247f61ea468ac6ull, 0x094bf54ed175901eull, 0xc8edf395b3c3f673ull, 0x19961711c16de4a3ull }}, {{ 0x0ce314da2a1c454dull, 0x5911fb91d32dea74ull, 0xcf6cf9d326c16bbcull, 0x5cf795142e97a135ull, 0xd94b83d905a7a07eull, 0xffdce6b18e4aee65ull }}, {{ 0x80ded085a51ab505ull, 0x7ab3d3b23fcb2888ull, 0x1a41c23f838e355bull, 0xa1abd2c9d1ec4c1aull, 0x7cf3267a388c44efull, 0xfea102ef8eed4ffaull }}, {{ 0x08b42538730b1233ull, 0xcb0644f67def9555ull, 0x0691967b238e1592ull, 0x50b63be2333af905ull, 0xe17f80c6357ab15cull, 0xf24a1d5b95451fc8ull }}, {{ 0x570974347e6eb601ull, 0xee3eb1a0eb5bd552ull, 0x41afe0cf638cd7bbull, 0x271e56d6004dba32ull, 0xcefb07be16caed9bull, 0x76e52593d4b33dd8ull }}, {{ 0x665e8a0cf0531c0eull, 0x4e72f04931965537ull, 0x90dec819e3806d57ull, 0x872f645c030945f6ull, 0x15ce4d6ce3ed480full, 0xa4f377c64f006a78ull }}, {{ 0xffb16481633f1891ull, 0x107d62dbefdf5429ull, 0xa8b3d102e3044569ull, 0x47d9eb981e5cbba1ull, 0xda0f0640e744d09bull, 0x7182adbf160428b0ull }}, {{ 0xfceded0de076f5aaull, 0xa4e5dc975eb949a3ull, 0x97062a1cde2ab61aull, 0xce8333f12f9f5450ull, 0x84963e8908b02610ull, 0x6f1ac976dc2996e8ull }}, {{ 0xe14b428ac4a598a3ull, 0x70fa9de9b33ce067ull, 0xe63da520adab1d0aull, 0x1120076bdc394b25ull, 0x2dde715a56e17ca8ull, 0x570bdea4999fe515ull }}, {{ 0xccf0996bae77f65bull, 0x69ca2b210060c40eull, 0xfe687346c8af2268ull, 0xab404a369a3cef7aull, 0xcab06d8764cede90ull, 0x6676b26e003ef2d3ull }}, {{ 0x0165fe34d0af9f8bull, 0x21e5af4a03c7a894ull, 0xf01480c3d6d75814ull, 0xb082e62206615acdull, 0xeae44749f014b1a6ull, 0x00a2f84c02757c45ull }}, {{ 0x0dfbee1026dc3b6full, 0x52f8d8e425cc95c8ull, 0x60cd07a6646970c9ull, 0xe51cfd543fcd8c0bull, 0x2ceac8e360cef082ull, 0x065db2f81896dabbull }}, {{ 0x8bd74ca1849a5255ull, 0x3db878e979fdd9d0ull, 0xc8024c7fec1e67ddull, 0xf321e54a7e077871ull, 0xc12bd8e1c815651cull, 0x3fa8fdb0f5e48b4full }}, {{ 0x7668fe4f2e07374full, 0x6934b91ec3ea8225ull, 0xd016fcff39300ea4ull, 0x7f52f4e8ec4ab471ull, 0x8bb678d1d0d5f321ull, 0x7c99e8e99aed711dull }}, {{ 0xa019ef17cc482914ull, 0x1c0f3b33a7291576ull, 0x20e5e1f83be0926cull, 0xf93d91193aeb0c72ull, 0x7520b832285b7f4eull, 0xde0319200d466b27ull }}, {{ 0x410356edfad19ac4ull, 0x18985004879ad6a2ull, 0x48fad3b256c5b839ull, 0xbc67aafc4d2e7c75ull, 0x934731f59392f915ull, 0xac1efb4084c02f8aull }}, {{ 0x8a21654bcc300ba7ull, 0xf5f3202d4c0c6256ull, 0xd9cc44f763b9323aull, 0x5c0caddb03d0dc94ull, 0xc0c7f397c3bdbad9ull, 0xb935d0852f81db69ull }}, {{ 0x654df4f5f9e07487ull, 0x9b7f41c4f87bd761ull, 0x81fab1a9e53bf64dull, 0x987eca8e26289dd0ull, 0x87cf83eda5694c7dull, 0x3c1a2533db129221ull }}, {{ 0xf50b919bc2c48d4aull, 0x12f891b1b4d669cdull, 0x13caf0a2f4579f08ull, 0xf4f3e98d7d962a25ull, 0x4e1b2748761cfce7ull, 0x590574068eb9b54full }}, {{ 0x9273b0159bad84e7ull, 0xbdb5b0f11060220bull, 0xc5ed665d8b6c3650ull, 0x91871f86e7dda572ull, 0x0d0f88d49d21e10full, 0x7a36884193411519ull }}, {{ 0xb884e0d814c7310aull, 0x6918e96aa3c15473ull, 0xbb45ffa7723a1f27ull, 0xaf473b450ea8767bull, 0x829b584e2352ca9bull, 0xc621528fc08ad2faull }}, {{ 0x3530c870cfc7ea66ull, 0x1af91e2a658d4c85ull, 0x50bbfc8a7645378aull, 0xd8c850b29294a0d5ull, 0x1a11730d613bea14ull, 0xbd4d399d856c3dc9ull }}, {{ 0x13e7d4681dcf2801ull, 0x0dbb2da7f784fd34ull, 0x2757dd689eb42b65ull, 0x77d326f9b9ce4855ull, 0x04ae7e85cc5724d0ull, 0x65044027363a69dbull }}, {{ 0xc70e4c112a179007ull, 0x894fc88fab31e408ull, 0x896ea6163309b1f2ull, 0xae3f85c1420ed353ull, 0x2ed0f139fb677024ull, 0xf22a81881e48228eull }}, {{ 0xc68ef8aba4eba048ull, 0x5d1dd59caff2e857ull, 0x5e527cddfe60f379ull, 0xce7b398c94944143ull, 0xd4296c43d20a616eull, 0x75a90f512ed1598dull }}, {{ 0xc195b6b4713442ceull, 0xa32a581edf7d136dull, 0xaf38e0abefc982bdull, 0x10d03f7dcdca8ca1ull, 0x499e3aa63467ce54ull, 0x989a992bd42d7f8aull }}, {{ 0x8fd9230c6c0a9c0cull, 0x5fa77134bae2c249ull, 0xd838c6b75ddf1b68ull, 0xa8227aea09e97e50ull, 0xe02e4a7e0c0e0f48ull, 0xf609fbb649c6fb66ull }}, {{ 0x9e7b5e7c386a1875ull, 0xbc8a6c0f4cdb96dfull, 0x7237c329aab71213ull, 0x9158cd24631eef28ull, 0xc1cee8ec788c98d6ull, 0x9c63d51ee1c5d204ull }}, {{ 0x30d1b0da3424f497ull, 0x5d6838990093e4bcull, 0x762d9fa0ab26b4c5ull, 0xad78036bdf355794ull, 0x9215193cb57df861ull, 0x1be65334d1ba342full }}, {{ 0xe830e88609718de5ull, 0xa61235fa05c6ef59ull, 0x9dc83c46af830fb5ull, 0xc6b02236b8156bccull, 0xb4d2fc5f16ebb3d0ull, 0x16ff4010314609dbull }}, {{ 0x11e9153c5e6f8af6ull, 0x7cb61bc439c55983ull, 0x29d25ac2db1e9d18ull, 0xc2e1562330d635feull, 0x103ddbb6e5350627ull, 0xe5f880a1ecbc6295ull }}, {{ 0xb31ad45bb05b6d9full, 0xdf1d15aa41b57f1eull, 0xa2378b9c8f3222f4ull, 0x9ccd5d5fe85e1bedull, 0xa26a9524f4123d8dull, 0xfbb506533f5bd9d2ull }}, {{ 0xff0c4b94e392483aull, 0xb722d8a69116f732ull, 0x562b741d97f55d90ull, 0x2005a5bf13ad1748ull, 0x5829d37188b66788ull, 0xd5123f407996823aull }}, {{ 0xf67af3d0e3b6d242ull, 0x275c7681aae5a7fdull, 0x5db28927ef95a7a7ull, 0x40387976c4c2e8d3ull, 0x71a2426f57200b51ull, 0x52b67884bfe11647ull }}, {{ 0xa0cd8628e5243693ull, 0x899ca110acf88febull, 0xa8f95b8f5bd88c87ull, 0x8234bea3af9d1841ull, 0x705698596740712cull, 0x3b20b52f7ecadecaull }}, {{ 0x48073d98f36a21bdull, 0x601e4aa6c1b59f34ull, 0x99bd939996757d4bull, 0x160f7264dc22f290ull, 0x6361f37e08846bbdull, 0x4f4713daf3ecb3e8ull }}, {{ 0xd04867f982255167ull, 0xc12eea839118380aull, 0x0167c3ffe096e4f1ull, 0xdc9a77f0995d79a6ull, 0xe1d382ec552c3562ull, 0x18c6c68d873f0713ull }}, {{ 0x22d40fbf15752e04ull, 0x8bd52923aaf2306cull, 0x0e0da7fec5e4f171ull, 0x9e08af65fda6c07cull, 0xd2431d3b53ba15dcull, 0xf7c3c187487646c6ull }}, {{ 0x5c489d76d693cc25ull, 0x76539b64ad75e439ull, 0x8c888ff3baf16e6full, 0x2c56d9fbe88384d8ull, 0x369f24514544da9eull, 0xada58f48d49ec3c4ull }}, {{ 0x9ad626a461c5f977ull, 0x9f4411eec69aea3dull, 0x7d559f854d6e505aull, 0xbb6483d715233075ull, 0x22376b2cb4b08a2dull, 0xc87798d84e33a5aaull }}, {{ 0x0c5d826bd1bbbea2ull, 0x38a8b353c20d2668ull, 0xe5583b35064f238aull, 0x51ed2666d35fe496ull, 0x562a2fbf0ee565c9ull, 0xd4abf8730e0478a5ull }}, {{ 0x7ba7183631557253ull, 0x3697014594838010ull, 0xf57250123f176366ull, 0x3343800441beede4ull, 0x5da5dd7694f5f9ddull, 0x4eb7b47e8c2cb675ull }}, {{ 0xd486f21ded56773cull, 0x21e60cb7cd2300a4ull, 0x967720b676e9e1feull, 0x00a3002a91754af1ull, 0xa87aa6a1d19bc2a4ull, 0x132d0cf179bf2095ull }}, {{ 0x4d45752b4560a85aull, 0x52fc7f2e035e0670ull, 0xe0a74720a522d3edull, 0x065e01a9ae94ed6full, 0x94ca825230159a68ull, 0xbfc2816ec17745d8ull }}, {{ 0x04b693b0b5c69382ull, 0x3ddcf7cc21ac4063ull, 0xc688c746735c4745ull, 0x3fac10a0d1d1465eull, 0xcfe91735e0d80810ull, 0x7d990e538ea8ba75ull }}, {{ 0x2f21c4e719c1c318ull, 0x6aa1adf950ba83deull, 0xc157c8c0819ac8b4ull, 0x7cb8a648322cbfb3ull, 0x1f1ae81ac87050a2ull, 0xe7fa8f439297489aull }}, {{ 0xd751b10701919ef2ull, 0x2a50cbbd274926adull, 0x8d6dd785100bd70cull, 0xdf367ed1f5bf7d05ull, 0x370d110bd4632658ull, 0x0fc998a3b9e8d605ull }}, {{ 0x6930ea460fb03571ull, 0xa727f56388db82caull, 0x864a6b32a0766679ull, 0xb820f433997ae237ull, 0x2682aa764bdf7f78ull, 0x9ddff66543185c34ull }}, {{ 0x1be926bc9ce21665ull, 0x878f95e358931be8ull, 0x3ee82ffa44a000c0ull, 0x31498a03feccd62bull, 0x811aa89ef6bafab7ull, 0x2abf9ff49ef39a09ull }}, {{ 0x171b835e20d4dff7ull, 0x4b9bdae175bf1711ull, 0x7511dfc6ae400785ull, 0xecdf6427f4005db0ull, 0x0b0a9635a34dcb27ull, 0xab7c3f8e3584045full }}, {{ 0xe71321ad4850bfa1ull, 0xf4168cce9976e6aaull, 0x92b2bdc2ce804b34ull, 0x40b9e98f8803a8e4ull, 0x6e69de186109ef8full, 0xb2da7b8e17282bb6ull }}, {{ 0x06bf50c4d3277c4dull, 0x88e18011fea502adull, 0xbafb699c1102f011ull, 0x87431f9b502498edull, 0x5022acf3ca635b98ull, 0xfc88d38ce791b520ull }}, {{ 0x437927b03f8adb03ull, 0x58cf00b3f2721ac2ull, 0x4dd22018aa1d60afull, 0x489f3c11216df949ull, 0x215ac185e7e193f5ull, 0xdd5843810bb11343ull }}, {{ 0xa2bb8ce27b6c8e20ull, 0x7816070778750b96ull, 0x0a3540f6a525c6d9ull, 0xd63858ab4e4bbcddull, 0x4d8b8f3b0ecfc794ull, 0xa572a30a74eac09full }}, {{ 0x5b5380d8d23d8d42ull, 0xb0dc464ab49273e2ull, 0x661489a27379c47eull, 0x5e3376b10ef560a2ull, 0x0773984e941dcbd0ull, 0x767a5e68912b8639ull }}, {{ 0x9143087836678499ull, 0xe89abeeb0db886d7ull, 0xfccd605882c1acf2ull, 0xae02a2ea9595c657ull, 0x4a83f311c929f623ull, 0xa0c7b015abb33e3aull }}, {{ 0xac9e54b2200b2df9ull, 0x160b752e8935446bull, 0xe005c3751b90c17dull, 0xcc1a5d29d7d9bf6full, 0xe9277eb1dba39d64ull, 0x47cce0d8b5006e46ull }}, {{ 0xbe2f4ef5406fcbbbull, 0xdc7293d15c14ac34ull, 0xc039a29313a78ee2ull, 0xf907a3a26e817a5eull, 0x1b8af2f2946425efull, 0xce00c87712044ec5ull }}, {{ 0x6dd91594845df551ull, 0x9c79c62d98ceba0full, 0x824059bec48b94dcull, 0xba4c6458510ec7b3ull, 0x136d7d79cbe97b5full, 0x0c07d4a6b42b13b3ull }}, {{ 0x4a7ad7cd2bab9527ull, 0x1cc1bdc7f813449aull, 0x16838173ad73d09eull, 0x46fbeb732a93cd03ull, 0xc246e6c1f71ed1bdull, 0x784e4e8309aec4feull }}, {{ 0xe8cc6e03b4b3d386ull, 0x1f9169cfb0c0ae06ull, 0xe1230e84c686262dull, 0xc5d7327fa9c6021eull, 0x96c50393a7343164ull, 0xb30f111e60d3b1f3ull }}, {{ 0x17fc4c250f064338ull, 0x3bae221ce786cc45ull, 0xcb5e912fc13d7dc3ull, 0xba67f8fca1bc1534ull, 0xe3b223c48809edefull, 0xfe96ab2fc844f383ull }}, {{ 0xefdaf972963ea033ull, 0x54cd55210b43fab2ull, 0xf1b1abdd8c66e9a0ull, 0x480fb9de5158d40full, 0xe4f565ad50634b5dull, 0xf1e2afddd2b18326ull }}, {{ 0x5e8dbe79de7241fdull, 0x5005534a70a7cafdull, 0x70f0b6a77c052043ull, 0xd09d42af2d78489full, 0xf195f8c523e0f1a4ull, 0x72dadeaa3aef1f84ull }}, {{ 0xb18970c2b07693ddull, 0x203540e8668dede5ull, 0x6967228ad83342a1ull, 0x26249ad7c6b2d63aull, 0x6fdbb7b366c97070ull, 0x7c8cb2a64d573b31ull }}, {{ 0xef5e679ae4a1c6a3ull, 0x42148914018b4af8ull, 0x1e07596c72009a4bull, 0x7d6e0c6dc2fc5e48ull, 0x5e952d0203de6461ull, 0xdd7efa7f05684feeull }}, {{ 0x59b00c0cee51c263ull, 0x94cd5ac80f70edb9ull, 0x2c497e3c740606f0ull, 0xe64c7c499ddbaed1ull, 0xb1d3c21426afebceull, 0xa6f5c8f636131f4full }}, {{ 0x80e078814f3197dcull, 0xd0058bd09a69493dull, 0xbadeee5c883c4565ull, 0xfefcdae02a94d42bull, 0xf24594c982df3614ull, 0x8599d99e1cbf391cull }}, {{ 0x08c4b50d17efee9aull, 0x20377626081cdc67ull, 0x4cb54f9d525ab5faull, 0xf5e08cc1a9d049b5ull, 0x76b7cfdf1cb81cd1ull, 0x3802802d1f783b21ull }}, {{ 0x57af1282ef5f5206ull, 0x422a9d7c51209c06ull, 0xff151c25378b1bc5ull, 0x9ac57f90a222e114ull, 0xa32e1eb71f312033ull, 0x301901c33ab24f4eull }}, {{ 0x6cd6b91d59b9343cull, 0x95aa26db2b46183full, 0xf6d319742b6f15b4ull, 0x0bb6fba6555ccad1ull, 0x5fcd332737eb4204ull, 0xe0fa11a04af71912ull }}, {{ 0x40633b25813c0a54ull, 0xd8a5848fb0bcf27aull, 0xa43efe89b256d90dull, 0x7525d47f559fec33ull, 0xbe03ff882f309428ull, 0xc9c4b042eda6fab7ull }}, {{ 0x83e04f770c586745ull, 0x76772d9ce76178c6ull, 0x6a75f160f7647a8aull, 0x937a4cf9583f3a04ull, 0x6c27fb51d7e5c994ull, 0xe1aee29d4885cb2dull }}, {{ 0x26c31aa67b7408b2ull, 0xa0a7c82109ceb7c1ull, 0x289b6dc9a9ecc968ull, 0xc2c701bd7278442cull, 0x398fd1326ef9dfcdull, 0xd0d4da24d539efc6ull }}, {{ 0x839f0a80d28856f0ull, 0x468dd14a62132d8bull, 0x961249e0a33fde16ull, 0x9bc6116678b2a9b9ull, 0x3f9e2bf855c2be09ull, 0x2850857054435dbeull }}, {{ 0x2436690839536560ull, 0xc18a2ce7d4bfc773ull, 0xdcb6e2c6607eacdeull, 0x15bcae00b6faa13full, 0x7c2db7b3599b6c60ull, 0x932536634aa1a96eull }}, {{ 0x6a201a523d41f5c0ull, 0x8f65c10e4f7dca7full, 0x9f24dbbfc4f2c0b3ull, 0xd95ecc0725ca4c7eull, 0xd9c92d0180123bc0ull, 0xbf741fe0ea509e50ull }}, {{ 0x2541073664939980ull, 0x99f98a8f1ae9e8faull, 0x3770957db17b8703ull, 0x7db3f84779e6fcf2ull, 0x81dbc20f00b65588ull, 0x7a893ec927262f28ull }}, {{ 0x748a481fedc3ff00ull, 0x03bf69970d2319c5ull, 0x2a65d6e8eed34624ull, 0xe907b2cac305e176ull, 0x12959496071f5754ull, 0xc95c73db877dd795ull }}, {{ 0x8d66d13f49a7f5ffull, 0x257a1fe6835f01b6ull, 0xa7fa65195440bd68ull, 0x1a4cfbeb9e3ace9dull, 0xb9d7cddc47396951ull, 0xdd9c86934aea6bd2ull }}, {{ 0x86042c78e08f9bf1ull, 0x76c53f0121b61121ull, 0x8fc7f2fd4a876611ull, 0x0701d7342e4c1228ull, 0x426e0a9ac83e1d2bull, 0xa81d41c0ed28363bull }}, {{ 0x3c29bcb8c59c176eull, 0xa3b4760b511cab4full, 0x9dcf7de4e949fcaeull, 0x46126809cef8b595ull, 0x984c6a0bd26d23aeull, 0x9124918943921e50ull }}, {{ 0x59a15f37b818ea49ull, 0x650c9c712b1eb118ull, 0x2a1aeaf11ce3ded2ull, 0xbcb8106215b717d8ull, 0xf2fc2476384364ceull, 0xab6daf5ca3b52f25ull }}, {{ 0x804db82d30f926deull, 0xf27e1c6baf32eaf3ull, 0xa50d2d6b20e6b437ull, 0x5f30a3d4d926ee71ull, 0x7dd96c9e32a1f013ull, 0xb248d99e6513d77bull }}, {{ 0x030931c3e9bb84aaull, 0x78ed1c34d7fd2d83ull, 0x7283c62f49030a2full, 0xb7e666507b855070ull, 0xea7e3e2dfa5360c1ull, 0xf6d8802ff2c66ad2ull }}, {{ 0x1e5bf1a721532ea1ull, 0xb9431a106fe3c71eull, 0x7925bdd8da1e65daull, 0x2effff24d3352464ull, 0x28ee6dcbc741c791ull, 0xa47501df7bc02c3dull }}, {{ 0x2f9770874d3fd24cull, 0x3c9f04a45ee5c72dull, 0xbb796a78852ffa8bull, 0xd5fff77040136becull, 0x995049f5c891cbabull, 0x6c9212bad581ba63ull }}, {{ 0xdbea6549047e36fcull, 0x5e362e6bb4f9c7c3ull, 0x52be28b533dfc970ull, 0x5bffaa6280c2373full, 0xfd22e399d5b1f4b6ull, 0x3db4bb4c571147e3ull }}, {{ 0x9727f4da2cee25dcull, 0xae1dd03511c1cda6ull, 0x3b6d971406bdde63ull, 0x97fca7d907962879ull, 0xe35ce40258f38f1full, 0x690f50fb66accee7ull }}, {{ 0xe78f9085c14d7a9cull, 0xcd2a2212b1920881ull, 0x5247e6c8436aafe4ull, 0xefde8e7a4bdd94bcull, 0xe1a0e8177983973bull, 0x1a9929d202c0150eull }}, {{ 0x0b9ba5398d06ca1bull, 0x03a554baefb45513ull, 0x36cf03d2a22adef0ull, 0x5eb190c6f6a7cf5bull, 0xd04910eabf23e857ull, 0x09fba2341b80d294ull }}, {{ 0x7414743f8243e50cull, 0x24754f4d5d0b52beull, 0x2416263a55acb560ull, 0xb2efa7c5a28e1990ull, 0x22daa92b77671369ull, 0x63d45609130839d0ull }}, {{ 0x88cc8a7b16a6f27cull, 0x6c951905a2713b70ull, 0x68dd7e4758bf15c1ull, 0xfd5c8db8598cffa1ull, 0x5c8a9bb2aa06c220ull, 0xe64b5c5abe524221ull }}, {{ 0x57fd68cee28578d7ull, 0x3dd2fa38586c5265ull, 0x18a6eec97776d98eull, 0xe59d89337f81fc4eull, 0x9d6a14faa4439549ull, 0xfef19b8b6f36954dull }}, {{ 0x6fe61814d936b864ull, 0x6a3dc633743b37f5ull, 0xf68553deaaa47f8eull, 0xf8275c02fb13db0cull, 0x2624d1ca6aa3d4e2ull, 0xf57013725821d508ull }}, {{ 0x5efcf0d07c2333e5ull, 0x2669be028a502f96ull, 0xa13546b2aa6cfb90ull, 0xb189981dcec68e81ull, 0x7d7031e82a6650ddull, 0x9660c27771525251ull }}, {{ 0xb5e16824d96006f3ull, 0x80216c196721dbdfull, 0x4c14c2faa841d3a1ull, 0xef5ff12a13c19110ull, 0xe661f311a7ff28a8ull, 0xdfc798aa6d37372eull }}, {{ 0x1ace11707dc0457bull, 0x014e38fe075296bdull, 0xf8cf9dca9292444full, 0x59bf6ba4c58faaa2ull, 0xffd37eb08ff79699ull, 0xbdcbf6a8442827d4ull }}, {{ 0x0c0cae64e982b6cfull, 0x0d0e39ec4939e363ull, 0xb81c29e9b9b6ab16ull, 0x817a346fb79caa5dull, 0xfe42f2e59fabe1fdull, 0x69f7a292a9918e51ull }}, {{ 0x787ecff11f1b2414ull, 0x828e433adc42e1deull, 0x3119a3214122aedcull, 0x0ec60c5d2c1ea7a9ull, 0xee9d7cf83cb6d3e7ull, 0x23ac59ba9faf8f33ull }}, {{ 0xb4f41f6b370f68c8ull, 0x198ea04c9a9cd2b0ull, 0xeb005f4c8b5ad49dull, 0x93bc7ba3b9328c9bull, 0x5226e1b25f244706ull, 0x64bb814a3cdb9807ull }}, {{ 0x11893a30269a17ccull, 0xff9242fe0a203ae7ull, 0x2e03b8fd718c4e22ull, 0xc55cd4653bf97e17ull, 0x3584d0f7b76ac641ull, 0xef530ce66093f049ull }}, {{ 0xaf5c45e18204edfbull, 0xfbb69dec65424d06ull, 0xcc2539e66f7b0d5dull, 0xb5a04bf457beece7ull, 0x173029ad2a2bbe91ull, 0x593e80ffc5c762dcull }}, {{ 0xd99abacf14314bceull, 0xd5222b3bf4970242ull, 0xf97443005ace85abull, 0x1842f78b6d75410dull, 0xe7e1a0c3a5b571b1ull, 0x7c7109fdb9c9dc98ull }}, {{ 0x800b4c16c9ecf609ull, 0x5355b0578de6169cull, 0xbe8a9e038c1138b6ull, 0xf29dab7246948a8bull, 0x0ed047a4791670eaull, 0xdc6a63e941e29df9ull }}, {{ 0x0070f8e3e3419c5full, 0x4158e36b8afce21dull, 0x716a2c2378ac371full, 0x7a28b276c1cd6975ull, 0x9422cc6cbae0692dull, 0x9c27e71c92da2bbaull }}, {{ 0x0469b8e6e0901bb5ull, 0x8d78e2336de0d522ull, 0x6e25b962b6ba2738ull, 0xc596f8a392061e96ull, 0xc95bfc3f4cc41bc6ull, 0x198f071dbc85b549ull }}, {{ 0x2c213904c5a11513ull, 0x86b8d6024ac85354ull, 0x4d793ddb23458835ull, 0xb7e5b663b43d31e0ull, 0xdd97da78ffa915c3ull, 0xff9647295d3914e1ull }}, {{ 0xb94c3a2fb84ad2bcull, 0x43385c16ebd34149ull, 0x06bc6a8f60b75217ull, 0x2ef91fe50a63f2c3ull, 0xa7ee88b9fc9ad9a5ull, 0xfbdec79da43ad0d2ull }}, {{ 0x3cfa45dd32ec3b54ull, 0xa03398e536408ce1ull, 0x435c2999c72934e8ull, 0xd5bb3ef267e77b9eull, 0x8f515743de0c8073ull, 0xd6b3cc286a4c283aull }}, {{ 0x61c6baa3fd3a514dull, 0x4203f8f41e8580ccull, 0xa199a001c79c1116ull, 0x595075780f0ad42eull, 0x992d68a6ac7d0486ull, 0x6305f99426f99249ull }}, {{ 0xd1c34a67e4472d02ull, 0x9427b989313707fbull, 0x50004011cc18aadeull, 0x7d2496b0966c49d2ull, 0xfbc61682bce22d3full, 0xde3bbfc985bfb6dfull }}, {{ 0x31a0e80eeac7c211ull, 0xc98d3f5bec264fd6ull, 0x200280b1f8f6acb1ull, 0xe36de2e5e03ae237ull, 0xd5bce11b60d5c47aull, 0xae557ddf397d24bfull }}, {{ 0xf04910952bcd94a6ull, 0xdf847997397f1e5dull, 0x401906f3b9a2bef1ull, 0xe24adcfac24cd627ull, 0x5960cb11c859acccull, 0xcf56eab83ee36f7eull }}, {{ 0x62daa5d3b607ce77ull, 0xbb2cbfe83ef72fabull, 0x80fa4585405b7572ull, 0xd6eca1cb97005d88ull, 0x7dc7eeb1d380c000ull, 0x19652b3274e25aefull }}, {{ 0xdc8a7a451c4e10a7ull, 0x4fbf7f1275a7dcb1ull, 0x09c6b7348392967bull, 0x653e51f3e603a755ull, 0xe9cf52f243078008ull, 0xfdf3aff890d78d5aull }}, {{ 0x9d68c6b31b0ca688ull, 0x1d7af6b8988e9ef2ull, 0x61c3280d23b9e0d1ull, 0xf46f3386fc248952ull, 0x22193d769e4b0053ull, 0xeb84dfb5a86b858dull }}, {{ 0x2617c2ff0e7e814dull, 0x26cda335f592357aull, 0xd19f90836542c82bull, 0x8c580345d96d5d37ull, 0x54fc66a22eee0347ull, 0x3330bd1894333783ull }}, {{ 0x7ced9df690f10d03ull, 0x8408601b97b616c5ull, 0x303ba521f49bd1afull, 0x7b7020ba7e45a42eull, 0x51dc0255d54c20cbull, 0xffe762f5ca002b21ull }}, {{ 0xe1482ba1a96a821cull, 0x2853c113ed1ce3b6ull, 0xe25473538e1630dbull, 0xd2614748eeb869cdull, 0x3298175a54f947f2ull, 0xff09dd99e401af4dull }}, {{ 0xccd1b4509e29151aull, 0x93458ac74320e524ull, 0xd74c81438cdde88full, 0x37ccc8d95334220aull, 0xf9f0e98751bccf7cull, 0xf662a802e810d903ull }}, {{ 0x00310b262d9ad307ull, 0xc0b76bc89f48f370ull, 0x68fd0ca380ab159bull, 0x2dffd87d4009546cull, 0xc3691f4931601adaull, 0x9fda901d10a87a27ull }}, {{ 0x01ea6f7dc80c3e42ull, 0x872a35d638d98260ull, 0x19e27e6306aed815ull, 0xcbfe74e4805d4c3cull, 0xa21b38dbedc10c85ull, 0x3e89a122a694c58dull }}, {{ 0x13285ae9d07a6e90ull, 0x47a61a5e387f17c0ull, 0x02d8efde42d470d7ull, 0xf7f090ed03a4fa59ull, 0x55103897498a7d39ull, 0x71604b5a81cfb788ull }}, {{ 0xbf938d2224c851a0ull, 0xcc7d07ae34f6ed80ull, 0x1c795eae9c4c6868ull, 0xaf65a9422471c77aull, 0x52a235e8df68e443ull, 0x6dc2f189121d2b53ull }}, {{ 0x7bc383556fd3303dull, 0xfce24cce11a54707ull, 0x1cbdb2d21afc1417ull, 0xd9f89c956c71cac5ull, 0x3a561b18ba18eaa4ull, 0x499d6f5ab523b141ull }}, {{ 0xd5a321565e3fe261ull, 0xe0d7000cb074c64aull, 0x1f68fc350dd8c8efull, 0x83b61dd63c71ebb3ull, 0x475d0ef744f92a70ull, 0xe026598b1364ec8cull }}, {{ 0x585f4d5fae7ed7cbull, 0xc866007ee48fbeecull, 0x3a19da128a77d95eull, 0x251d2a5e5c7334ffull, 0xc9a295a8b1bba865ull, 0xc17f7f6ec1f13d7aull }}, {{ 0x73b905bcd0f46decull, 0xd3fc04f4ed9d753bull, 0x450284b968ae7db3ull, 0x7323a7af9c8011f8ull, 0xe059d896f15493f3ull, 0x8efafa53936c66cbull }}, {{ 0x853a3960298c4b38ull, 0x47d8319148269452ull, 0xb2192f3e16d0e906ull, 0x7f648cdc1d00b3b2ull, 0xc38275e56d4dc782ull, 0x95cdc743c23c03f6ull }}, {{ 0x34463dc19f7af032ull, 0xce71efacd181cb39ull, 0xf4fbd86ce4291a3eull, 0xf9ed8099220704faull, 0xa3189af64509cb18ull, 0xda09c8a5965827a3ull }}, {{ 0x0abe69903acd61f3ull, 0x10735cc02f11f03cull, 0x91d67440e99b0674ull, 0xc34705fb544631cdull, 0x5ef60d9eb261eef9ull, 0x8461d677df718c64ull }}, {{ 0x6b701fa24c05d379ull, 0xa4819f81d6b36258ull, 0xb2608a89200e4088ull, 0xa0c63bd14abdf207ull, 0xb59c8832f7d355c1ull, 0x2bd260aeba6f7bebull }}, {{ 0x32613c56f83a42beull, 0x6d103b126301d774ull, 0xf7c5695b408e8556ull, 0x47be562ceb6b744cull, 0x181d51fdae415990ull, 0xb637c6d3485ad735ull }}, {{ 0xf7cc5b65b2469b6eull, 0x42a24eb7de126a89ull, 0xadb61d9085913560ull, 0xcd6f5dc132328b01ull, 0xf12533e8ce8d7fa2ull, 0x1e2dc440d38c6812ull }}, {{ 0xadfb91f8f6c2124cull, 0x9a57132eacb82963ull, 0xc91d27a537ac15c2ull, 0x0659a98bf5f96e10ull, 0x6b7407181186fc5cull, 0x2dc9aa88437c10bdull }}, {{ 0xcbd3b3b9a394b6fcull, 0x0766bfd2bf319de4ull, 0xdb238c742cb8d99aull, 0x3f809f779bbe4ca7ull, 0x328846f0af45db98ull, 0xc9e0a952a2d8a766ull }}, {{ 0xf645054063cf25d5ull, 0x4a037e3b77f02aefull, 0x8f637c89bf388004ull, 0x7b063aac156efe8eull, 0xf952c566d8ba93f2ull, 0xe2c69d3a5c7689fdull }}, {{ 0x9eb23483e6177a52ull, 0xe422ee52af61ad5full, 0x99e2dd617835002aull, 0xce3e4ab8d655f191ull, 0xbd3bb6047749c778ull, 0xdbc224479ca163ebull }}, {{ 0x32f60d26fceac736ull, 0xe95d4f3ad9d0c5bcull, 0x02dca5ceb21201acull, 0x0e6eeb385f5b6fb0ull, 0x64551c2ca8e1cab8ull, 0x95956acc1e4de735ull }}, {{ 0xfd9c8385e12bc81eull, 0x1da5184c8227b959ull, 0x1c9e7a12f4b410c1ull, 0x90553033b9925ce0ull, 0xeb5319be98d1eb30ull, 0xd7d62bf92f0b0815ull }}, {{ 0xe81d233acbb5d12aull, 0x2872f2fd158d3d83ull, 0x1e30c4bd8f08a78bull, 0xa353e2053fb7a0c1ull, 0x313f0171f8332fe5ull, 0x6e5db7bbd66e50dbull }}, {{ 0x1123604bf51a2ba5ull, 0x947d7de2d7846727ull, 0x2de7af6796568b6full, 0x6146d4347d2c478bull, 0xec760e73b1ffdef8ull, 0x4fa92d56604f288full }}, {{ 0xab61c2f79305b470ull, 0xcce6eadc6b2c0786ull, 0xcb0cda0bdf61725bull, 0xccc44a0ce3bacb6full, 0x3c9c9084f3feb5b3ull, 0x1c9bc55fc317959full }}, {{ 0xb1d19dabbe390c5cull, 0x01052c9c2fb84b42ull, 0xee808476b9ce7796ull, 0xffaae480e54bf25dull, 0x5e1da53187f31905ull, 0x1e15b5bd9eebd838ull }}, {{ 0xf23028b56e3a7b97ull, 0x0a33be19dd32f09aull, 0x51052ca34210abdcull, 0xfcaced08f4f777abull, 0xad2873ef4f7efa3bull, 0x2cd9196835367233ull }}, {{ 0x75e197164e48d3e7ull, 0x66056d02a3fd660dull, 0x2a33be6094a6b698ull, 0xdec1425991aaacb1ull, 0xc39487591af5c657ull, 0xc07afe1214207604ull }}, {{ 0x9acfe6df0ed8470aull, 0xfc36421a67e5fc86ull, 0xa6056fc5ce8321f3ull, 0xb38c977fb0aabeebull, 0xa3cd497b0d99bf6eull, 0x84cdecb4c9449c2full }}, {{ 0x0c1f04b69472c665ull, 0xda1e95080efbdd42ull, 0x7c365dba111f5387ull, 0x037deafce6ab7534ull, 0x6604dece88017a53ull, 0x300b3f0fdcae19dcull }}, {{ 0x79362f21cc7bbff4ull, 0x8531d25095d6a494ull, 0xda1fa944ab39434eull, 0x22eb2de102b2940cull, 0xfc30b411500ec73eull, 0xe070769e9ecd029bull }}, {{ 0xbc1dd751fcd57f84ull, 0x33f23725da626dccull, 0x853c9caeb03ca111ull, 0x5d2fcaca1af9c880ull, 0xd9e708ad2093c86dull, 0xc464a23234021a17ull }}, {{ 0x592a6933e056fb2bull, 0x0776277a87d849ffull, 0x345e1ed2e25e4aacull, 0xa3ddebe50dc1d505ull, 0x830656c345c5d445ull, 0xabee55f6081504eeull }}, {{ 0x7ba81c06c365cfb2ull, 0x4a9d8ac94e72e3f9ull, 0x0bad343cd7aeeab8ull, 0x66ab36f289925234ull, 0x1e3f63a0b9ba4ab8ull, 0xb74f5b9c50d23151ull }}, {{ 0xd4911843a1fa1cf2ull, 0xea276bdd107ce7beull, 0x74c40a606cd52b32ull, 0x02b025795fb73608ull, 0x2e79e4474146eb34ull, 0x2919941b2835ed2bull }}, {{ 0x4daaf2a453c52177ull, 0x258a36a2a4e10d74ull, 0x8fa867c44053affdull, 0x1ae176bdbd281c54ull, 0xd0c2eac88cc53008ull, 0x9affc90f921b43afull }}, {{ 0x08ad7a6b45b34ea3ull, 0x7766225a70ca868bull, 0x9c940daa8344dfe3ull, 0x0ccea36963911b4dull, 0x279d2bd57fb3e051ull, 0x0dfdda9bb510a4deull }}, {{ 0x56c6c830b9011262ull, 0xa9fd578867e9416eull, 0x1dc888a920b0bee2ull, 0x8012621de3ab1108ull, 0x8c23b656fd06c32aull, 0x8bea8a1512a670adull }}, {{ 0x63c3d1e73a0ab7d3ull, 0xa3e56b540f1c8e4full, 0x29d5569b46e774daull, 0x00b7d52ae4aeaa51ull, 0x79651f65e2439fa9ull, 0x772964d2ba8066c7ull }}, {{ 0xe5a63308446b2e41ull, 0x66f63148971d8f19ull, 0xa2556210c50a908aull, 0x072e53aceed2a72bull, 0xbdf339fad6a43c9aull, 0xa79df03b490403caull }}, {{ 0xf87dfe52ac2fce89ull, 0x059decd5e7279702ull, 0x5755d4a7b269a568ull, 0x47cf44c1543a87b4ull, 0x6b8043cc626a5e04ull, 0x8c2b6250da2825ebull }}, {{ 0xb4ebef3ab9de1155ull, 0x382b405b078be61dull, 0x695a4e8cf8207610ull, 0xce18af8d4a494d0bull, 0x3302a5fbd827ac2aull, 0x79b1d72885917b32ull }}, {{ 0x1137584b42acad57ull, 0x31b0838e4b76fd29ull, 0x1d871181b1449ca2ull, 0x0cf6db84e6dd0272ull, 0xfe1a7bd6718cb9acull, 0xc0f2679537aecff5ull }}, {{ 0xac2972f09abec562ull, 0xf0e5238ef2a5e39aull, 0x2746af10ecae1e55ull, 0x81a4933104a21875ull, 0xed08d6606f7f40b8ull, 0x89780bd42cd41f9bull }}, {{ 0xb99e7d660b73b5d2ull, 0x68f363957a7ae40aull, 0x88c2d6a93ecd2f5bull, 0x106dbfea2e54f493ull, 0x42585fc45af88735ull, 0x5eb07649c0493c17ull }}, {{ 0x4030e5fc72851a33ull, 0x1981e3d6c8cce86bull, 0x579c629c7403d992ull, 0xa4497f25cf518dc3ull, 0x9773bdab8db54812ull, 0xb2e49ee182dc58e8ull }}, {{ 0x81e8fbdc79330603ull, 0xff12e663d8011430ull, 0x6c1bda1c88267fb4ull, 0x6adef77a192f89a1ull, 0xea8568b38914d0baull, 0xfcee34cf1c9b7915ull }}, {{ 0x1319d69cbbfe3c1aull, 0xf6bcffe6700ac9e5ull, 0x3916851d5180fd11ull, 0x2cb5aac4fbdb604eull, 0x293617035ad02748ull, 0xe14e10171e12badbull }}, {{ 0xbf02621f57ee5907ull, 0xa361ff00606be2f2ull, 0x3ae133252f09e2b3ull, 0xbf18abb1d691c30eull, 0x9c1ce6218c2188d1ull, 0xcd0ca0e72cbb4c8full }}, {{ 0x7617d5396f4f7a49ull, 0x61d3f603c436dd7bull, 0x4ccbff73d662db04ull, 0x76f6b4f261b19e8eull, 0x1920fd4f794f5831ull, 0x027e4907bf50fd9cull }}, {{ 0x9cee543e591ac6d6ull, 0xd2479c25aa24a6d2ull, 0xfff7fa865fdc8e2bull, 0xa5a31177d0f0318eull, 0xfb49e51abd1971eeull, 0x18eeda4d7929e818ull }}, {{ 0x214f4a6f7b0bc45cull, 0x36cc1978a56e843aull, 0xffafc93fbe9d8db6ull, 0x785eaeae2961ef95ull, 0xd0e2f30b62fe7352ull, 0xf9548706bba310f9ull }}, {{ 0x4d18e85ace75ab97ull, 0x23f8feb676512a45ull, 0xfcdddc7d7227891eull, 0xb3b2d2cd9dd35bdbull, 0x28dd7e71ddf08138ull, 0xbd4d4643545ea9c2ull }}, {{ 0x02f9138c1098b3e4ull, 0x67b9f3209f2ba6b5ull, 0xe0aa9ce6758b5b2dull, 0x04fc3c082a419697ull, 0x98a6f072ab650c37ull, 0x6504bea14bb2a195ull }}, {{ 0x1dbac378a5f706edull, 0x0d437f4637b48312ull, 0xc6aa210097718fc6ull, 0x31da5851a68fe1eeull, 0xf685647ab1f27a26ull, 0xf22f724cf4fa4fd7ull }}, {{ 0x294ba2b67ba6453full, 0x84a2f8be2d0d1eb5ull, 0xc2a54a05ea6f9dbcull, 0xf2877330819ed353ull, 0xa135eccaf378c57dull, 0x75da770191c71e6full }}, {{ 0x9cf45b20d47eb472ull, 0x2e5db76dc2833313ull, 0x9a74e43b285c295dull, 0x794a7fe510344145ull, 0x4c1b3fed82b7b6ebull, 0x9a88a60fb1c7305cull }}, {{ 0x218b8f484cf30c71ull, 0xcfa92a49991ffec4ull, 0x0890ea4f93999da3ull, 0xbce8fef2a20a8cb8ull, 0xf9107f471b2d2532ull, 0x09567c9cf1c7e39aull }}, {{ 0x4f7398d3017e7c6cull, 0x1c9ba6dffb3ff3a9ull, 0x55a9271bc4002866ull, 0x6119f57a54697f30ull, 0xbaa4f8c70fc373fbull, 0x5d60de2171cee40dull }}, {{ 0x1a83f83e0ef0dc3bull, 0x1e1484bfd07f849dull, 0x589b8715a80193fdull, 0xcb0396c74c1ef7e3ull, 0x4a71b7c69da287d1ull, 0xa5c8ad4e7214e889ull }}, {{ 0x0927b26c95689a53ull, 0x2ccd2f7e24fb2e23ull, 0x761346d8900fc7e3ull, 0xee23e3c8f935aee1ull, 0xe8712dc228594e31ull, 0x79d6c51074d1155cull }}, {{ 0x5b8cf83dd616073bull, 0xc003daed71cfcd5eull, 0x9cc0c475a09dcedfull, 0x4d66e5d9bc18d4ceull, 0x146bc995937d0df3ull, 0xc263b2a4902ad5a1ull }}, {{ 0x9381b26a5cdc4850ull, 0x80268d46721e05afull, 0x1f87ac98462a14bdull, 0x0604fa8158f85012ull, 0xcc35dfd7c2e28b81ull, 0x97e4fa6da1ac584aull }}, {{ 0xc310f827a09ad31full, 0x018184c0752c38dbull, 0x3b4cbdf2bda4cf67ull, 0x3c31c90d79b320b5ull, 0xfa1abe6d9cd9730aull, 0xeef1c84850bb72ebull }}, {{ 0x9ea9b18c460c3f36ull, 0x0f0f2f8493ba3895ull, 0x50ff6b7b68701a06ull, 0x59f1da86c0ff4714ull, 0xc50b7048207e7e66ull, 0x5571d2d327527d37ull }}, {{ 0x32a0ef7abc7a7818ull, 0x9697db2dc54635d8ull, 0x29fa32d21461043cull, 0x8372894389f8c6cbull, 0xb27262d144f0efffull, 0x56723c3f8938e42dull }}, {{ 0xfa495acb5cc8b0f3ull, 0xe1ee8fc9b4be1a71ull, 0xa3c5fc34cbca2a5dull, 0x22795ca363b7c3efull, 0xf877dc2cb1695ffbull, 0x60765a7b5c38e9c8ull }}, {{ 0xc6dd8bf19fd6e980ull, 0xd3519de10f6d0873ull, 0x65bbda0ff5e5a7aaull, 0x58bd9e61e52da75cull, 0xb4ae99beee1dbfcfull, 0xc49f88d19a3921d9ull }}, {{ 0xc4a777703e651effull, 0x41302aca9a425485ull, 0xf956849f9af88cacull, 0x77682fd2f3c8899bull, 0x0ed201754d297e19ull, 0xae3b5830063b5281ull }}, {{ 0xae8aaa626ff335f4ull, 0x8be1abea06974d39ull, 0xbd612e3c0db57ebaull, 0xaa11de3d85d56017ull, 0x94340e95039eecfeull, 0xce5171e03e51390aull }}, {{ 0xd16aa7d85f801b8cull, 0x76d0b72441e90440ull, 0x65cbce588916f349ull, 0xa4b2ae673a55c0edull, 0xca0891d2243541f2ull, 0x0f2e72c26f2c3a69ull }}, {{ 0x2e2a8e73bb011379ull, 0xa427276a931a2a88ull, 0xf9f60f755ae580deull, 0x6efad00847598945ull, 0xe455b2356a14937aull, 0x97d07b9857ba4821ull }}, {{ 0xcda990854e0ac2bbull, 0x69878a29bf05a951ull, 0xc39c9a958cf708b2ull, 0x55cc2052c97f5cbbull, 0xeb58f61624cdc2c8ull, 0xee24d3f36d46d152ull }}, {{ 0x089fa5350c6b9b51ull, 0x1f4b65a176389d32ull, 0xa41e09d781a656f8ull, 0x59f9433bdef99f55ull, 0x31799cdd70099bd3ull, 0x4d70478244c42d3dull }}, {{ 0x563c74127c341125ull, 0x38f1f84e9e3623f4ull, 0x692c626b107f65b1ull, 0x83bca056b5c03958ull, 0xeec020a660601641ull, 0x0662cb16afa9c463ull }}, {{ 0x5e5c88b8da08ab74ull, 0x3973b3122e1d678bull, 0x1bbbd82ea4f9f8ecull, 0x255e436319823d74ull, 0x5381467fc3c0de8full, 0x3fdbeee2dca1abe7ull }}, {{ 0xaf9d57388456b288ull, 0x3e84feb5cd260b71ull, 0x155671d271c3b93aull, 0x75aea1deff166689ull, 0x430cc0fda588b197ull, 0x7e9754dc9e50b709ull }}, {{ 0xdc2568352b62f954ull, 0x7131f31a037c7270ull, 0xd560723871a53c46ull, 0x98d252b5f6e0015aull, 0x9e7f89e87756efeaull, 0xf1e9509e2f27265cull }}, {{ 0x99761213b1ddbd48ull, 0x6bf37f0422dc7868ull, 0x55c4763470745ac0ull, 0xf8373b1ba4c00d8cull, 0x30fb6314a9655f29ull, 0x731d262dd7877f9eull }}, {{ 0xfe9cb4c4f2a964ceull, 0x3782f6295c9cb415ull, 0x59ac9e0c648b8b84ull, 0xb2284f146f80877bull, 0xe9d1dece9df5b7a3ull, 0x7f237dca6b4afc2dull }}, {{ 0xf21f0fb17a9df00cull, 0x2b1d9d9d9e1f08dbull, 0x80be2c7bed73732aull, 0xf59316cc5b054ad1ull, 0x2232b4122b992c64ull, 0xf762e9e830edd9cbull }}, {{ 0x75369ceeca2b607bull, 0xaf2828282d365897ull, 0x076dbcd746827fa5ull, 0x97bee3fb8e34ec2full, 0x55fb08b5b3fbbbf1ull, 0xa9dd2311e94a81efull }}, {{ 0x94222153e5b1c4caull, 0xd7919191c41f75eaull, 0x4a496068c118fc78ull, 0xed74e7d38e1139d6ull, 0x5bce571907d5576full, 0xa2a35eb31ce91359ull }}, {{ 0xc9554d46f8f1afe9ull, 0x6bafafb1a93a9b29ull, 0xe6ddc4178af9dcb8ull, 0x46910e438cac425eull, 0x960f66fa4e556a5full, 0x5a61b2ff211ac17dull }}, {{ 0xdd5504c5b970df16ull, 0x34dcdcf09c4a0fa1ull, 0x04a9a8eb6dc29f34ull, 0xc1aa8ea37eba97b5ull, 0xdc9a05c70f5627b8ull, 0x87d0fdf74b0b8ee7ull }}, {{ 0xa5522fb93e68b6ddull, 0x10a0a1661ae49c52ull, 0x2ea09932499a380aull, 0x90a99262f349ed12ull, 0x9e0439c6995d8d37ull, 0x4e29eba8ee73950eull }}, {{ 0x7535dd3c701724a6ull, 0xa6464dfd0cee1b3aull, 0xd245fbf6e0063064ull, 0xa69fb7dd80e342b5ull, 0x2c2a41c1fda7842bull, 0x0da334995083d292ull }}, {{ 0x941aa45c60e76e7aull, 0x7ebf0be2814d1048ull, 0x36bbd7a4c03de3eeull, 0x823d2ea708e09b1aull, 0xb9a69193e88b29b4ull, 0x88600dfd252639b5ull }}, {{ 0xc90a6b9bc90a50c3ull, 0xf37676d90d02a2d5ull, 0x23566c6f826ae750ull, 0x1663d28658c60f06ull, 0x4081afc7156fa10dull, 0x53c08be3737e4119ull }}, {{ 0xda683415da67279cull, 0x82a0a47a821a5c59ull, 0x61603c5b182d0929ull, 0xdfe6393f77bc963dull, 0x8510ddc6d65c4a82ull, 0x458576e282ee8afcull }}, {{ 0x881208da88078c1dull, 0x1a466cc915079b82ull, 0xcdc25b8ef1c25b9full, 0xbefe3c7aad5dde65ull, 0x32a8a9c45f9ae91cull, 0xb736a4d91d516dddull }}, {{ 0x50b45889504b7920ull, 0x06c03fdad24c1319ull, 0x0997939571979437ull, 0x75ee5ccac5aaaffaull, 0xfa96a1abbc0d1b1full, 0x2822707b252e4aa3ull }}, {{ 0x270b755d22f2bb40ull, 0x43827e8c36f8befdull, 0x5febc3d66febca26ull, 0x9b4f9febb8aadfc4ull, 0xc9e250b558830f3aull, 0x915864cf73ceea67ull }}, {{ 0x867295a35d7b5083ull, 0xa318f17a25b775e3ull, 0xbf35a6605f35e57eull, 0x111c3f3536acbdabull, 0xe2d72715751e984aull, 0xad73f01a8615280dull }}, {{ 0x4079d861a6d1251bull, 0x5ef96ec5792a9ae3ull, 0x78187fc3b81af6f2ull, 0xab1a781422bf68b5ull, 0xdc6786d69331f2e4ull, 0xc68761093cd3908aull }}, {{ 0x84c273d0842b730full, 0xb5be53b6bbaa0ce0ull, 0xb0f4fda5310da577ull, 0xaf08b0c95b7a1716ull, 0x9c0b4461bff37ceeull, 0xc149ca5c6043a56cull }}, {{ 0x2f98862529b27e92ull, 0x196f452354a480c5ull, 0xe991e873ea8876adull, 0xd656e7dd92c4e6e2ull, 0x1870abd17f82e152ull, 0x8ce1e79bc2a4763eull }}, {{ 0xdbf53d73a0f8f1afull, 0xfe58b3614e6d07b3ull, 0x1fb314872954a2c2ull, 0x5f650ea7bbb104ddull, 0xf466b62efb1ccd3cull, 0x80d30c159a6c9e6cull }}, {{ 0x9794668449b970dbull, 0xef7701cd10424d06ull, 0x3cfecd479d4e5b9dull, 0xb9f2928d54ea30a3ull, 0x8c031dd5cf20045bull, 0x083e78d8083e3041ull }}, {{ 0xebcc012ae13e6889ull, 0x5aa61202a2970241ull, 0x61f404cc250f942bull, 0x4379b9855125e660ull, 0x781f2a5a17402b95ull, 0x5270b870526de28full }}, {{ 0x35f80baccc70155cull, 0x8a7cb41a59e61693ull, 0xd3882ff9729bc9b1ull, 0xa2c13f352b7affc3ull, 0xb137a784e881b3d4ull, 0x38673463384ad99aull }}, {{ 0x1bb074bffc60d597ull, 0x68df090782fce1c0ull, 0x4351dfbe7a15e0efull, 0x5b8c7813b2cdfda6ull, 0xec2c8b311511064eull, 0x34080be032ec800aull }}, {{ 0x14e48f7fdbc857e9ull, 0x18b65a4b1de0d181ull, 0xa132bd70c4dac95aull, 0x937cb0c4fc0be87eull, 0x39bd6fead2aa3f0full, 0x085076c1fd3d006dull }}, {{ 0xd0ed9afe95d36f1cull, 0xf71f86ef2ac82f0aull, 0x4bfb6667b08bdd84ull, 0xc2dee7b1d87714f2ull, 0x41665f2c3aa6769bull, 0x5324a393e4620444ull }}, {{ 0x29480df1da425714ull, 0xa73b4557abd1d66cull, 0xf7d2000ce576a731ull, 0x9cb50cf274a6d176ull, 0x8dffb7ba4a80a215ull, 0x3f6e63c6ebd42aaaull }}, {{ 0x9cd08b72869766c6ull, 0x8850b56cb6326039ull, 0xae340080f6a287f0ull, 0x1f1281788e842ea5ull, 0x8bfd2d46e90654d8ull, 0x7a4fe5c53649aaa9ull }}, {{ 0x2025727941ea03bcull, 0x5327163f1df7c240ull, 0xce080509a2594f65ull, 0x36b90eb59129d278ull, 0x77e3c4c51a3f5071ull, 0xc71ef9b41ee0aa9full }}, {{ 0x417678bc93242555ull, 0x3f86de772bad9681ull, 0x0c503260577d19f5ull, 0x233a9317aba238b8ull, 0xaee5afb30679246cull, 0xc735c10934c6aa3aull }}, {{ 0x8ea0b75dbf697557ull, 0x7b44b0a7b4c7e10cull, 0x7b21f7c36ae30394ull, 0x6049beecb4563730ull, 0xd4f8dcfe40bb6c39ull, 0xc8198a5c0fc2a64aull }}, {{ 0x924729a97a1e9565ull, 0xd0aee68d0fceca7dull, 0xcf53ada22cde23ccull, 0xc2e1753f0b5e27e4ull, 0x51b8a1ee87523a3dull, 0xd0ff67989d9a7eecull }}, {{ 0xb6c7a09ec531d5eeull, 0x26d501829e13e8e7ull, 0x1944c855c0ad6600ull, 0x9cce947671ad8ef0ull, 0x3136535149364669ull, 0x29fa0bf62808f53bull }}, {{ 0x23cc4633b3f25b4aull, 0x84520f1a2cc7190dull, 0xfcafd35986c5fc01ull, 0x2011cca070c79560ull, 0xec1f412cdc1ec020ull, 0xa3c4779d9059944full }}, {{ 0x65fabe05077790e6ull, 0x2b349705bfc6fa83ull, 0xdede417f43bbd80full, 0x40b1fe4467cbd5c9ull, 0x39388bc099338141ull, 0x65acac27a37fcb1full }}, {{ 0xfbcb6c324aaba8feull, 0xb00de6397dc5c921ull, 0xb4ae8ef8a5567097ull, 0x86f3eeac0df659e2ull, 0x3c357585fc030c8cull, 0xf8beb98c62fdef38ull }}, {{ 0xd5f239f6eab499efull, 0xe08afe3ee9b9db53ull, 0x0ed195b6756065ecull, 0x458752b88b9f82dbull, 0x5a16973bd81e7d7dull, 0xb7733f7bddeb5832ull }}, {{ 0x5b7643a52b0e0359ull, 0xc56dee7521429146ull, 0x942fd92095c3fb40ull, 0xb7493b35743b1c8eull, 0x84e1e8567130e6e4ull, 0x2a807ad6ab3171f7ull }}, {{ 0x929ea473ae8c217cull, 0xb64b50934c99acbfull, 0xc9de7b45d9a7d087ull, 0x28dc50168a4f1d91ull, 0x30d313606be904efull, 0xa904cc62afee73abull }}, {{ 0xba326c84d1794edbull, 0x1ef125c0fe00bf7bull, 0xe2b0d0ba808e254dull, 0x989b20e1671727b1ull, 0xe83ec1c4371a3157ull, 0x9a2ffbdadf5084afull }}, {{ 0x45f83d302ebd148bull, 0x356b7989ec077ad5ull, 0xdae82749058d7503ull, 0xf60f48ce06e78cf2ull, 0x127391aa2705ed6bull, 0x05dfd68cb9252edfull }}, {{ 0xbbb263e1d362cd6cull, 0x1632bf63384acc54ull, 0x8d1188da37869220ull, 0x9c98d80c450b817cull, 0xb883b0a5863b4637ull, 0x3abe617f3b73d4b6ull }}, {{ 0x54f7e6d241dc0637ull, 0xddfb79e032ebfb4full, 0x82af58862b41b540ull, 0x1df8707ab2730eddull, 0x3524e6773e50be2cull, 0x4b6fcef852864f23ull }}, {{ 0x51af043692983e24ull, 0xabd2c2c1fd37d119ull, 0x1ad9753db0911488ull, 0x2bb464caf87e94a7ull, 0x137100a86f276db9ull, 0xf25e15b3393f1760ull }}, {{ 0x30d62a21b9f26d68ull, 0xb63b9b93e42e2afdull, 0x0c7e9468e5aacd56ull, 0xb50befedb4f1ce87ull, 0xc26a0694578a493bull, 0x77acd9003c76e9c0ull }}, {{ 0xe85da5514378460full, 0x1e5413c6e9cdade3ull, 0x7cf1cc18f8ac0563ull, 0x12775f4911721146ull, 0x982441cb6b66dc55ull, 0xacc07a025ca52187ull }}, {{ 0x13a8752ca2b2bc92ull, 0x2f48c5c52208cae7ull, 0xe171f8f9b6b835dfull, 0xb8a9b8daae74acc0ull, 0xf16a91f232049b52ull, 0xbf84c4179e734f4bull }}, {{ 0xc49493be5afb5db7ull, 0xd8d7b9b35457ed06ull, 0xce73b9c123321ab7ull, 0x36a1388ad08ebf88ull, 0x6e29b375f42e113bull, 0x7b2fa8ec308118f7ull }}, {{ 0xadcdc56f8dd1a92aull, 0x786d41014b6f4243ull, 0x1085418b5ff50b2eull, 0x224c356c25937b58ull, 0x4da1029b89ccac50ull, 0xcfdc9939e50af9aaull }}, {{ 0xca09b65b8a309ba4ull, 0xb4448a0cf25896a4ull, 0xa5348f71bf926fd0ull, 0x56fa163977c2d170ull, 0x084a1a1361febb21ull, 0x1e9dfc42f26dc0a7ull }}, {{ 0xe4611f9365e6146aull, 0x0aad64817775e26full, 0x740d9a717bb85e27ull, 0x65c4de3ead9c2e66ull, 0x52e504c1d3f34f4dull, 0x322bda9d78498686ull }}, {{ 0xebcb3bc1fafccc22ull, 0x6ac5ed0eaa9ad85eull, 0x8888086ed533ad86ull, 0xf9b0ae72c819d000ull, 0x3cf22f9247811905ull, 0xf5b68a26b2df413full }}, {{ 0x35f05593cddff94full, 0x2bbb4292aa0c73b5ull, 0x555054545404c740ull, 0xc0e6d07bd1022005ull, 0x6175dbb6cb0afa3bull, 0x99216582fcb88c78ull }}, {{ 0x1b6357c60abfbd18ull, 0xb55099baa47c8514ull, 0x55234b4b482fc881ull, 0x890424d62a154035ull, 0xce9a9523ee6dc655ull, 0xfb4df71ddf357cb3ull }}, {{ 0x11e16dbc6b7d62ebull, 0x1526014a6cdd32c9ull, 0x5360f0f0d1ddd511ull, 0x5a29705da4d48215ull, 0x1209d3675049bf57ull, 0xd10ba72ab816df06ull }}, {{ 0xb2ce495c32e5dd30ull, 0xd37c0ce840a3fbdaull, 0x41c9696832aa52aaull, 0x859e63a8704d14d5ull, 0xb462420922e17969ull, 0x2a7487ab30e4b63cull }}, {{ 0xfc0edd99fcfaa3e4ull, 0x42d881128667d68aull, 0x91de1e11faa73aacull, 0x382fe4946302d054ull, 0x0bd6945b5ccebe1full, 0xa88d4cafe8ef1e5full }}, {{ 0xd894a803e1ca66ebull, 0x9c750ab9400e616dull, 0xb2ad2cb3ca884abaull, 0x31deedcbde1c234dull, 0x7661cb91a0136d38ull, 0x9584fedf19572fb6ull }}, {{ 0x75ce9026d1e80530ull, 0x1c926b3c808fce4aull, 0xfac3bf05e952eb4aull, 0xf2b549f6ad196108ull, 0x9fd1f3b040c24431ull, 0xd731f4b6fd67dd20ull }}, {{ 0x9a11a184331033e2ull, 0x1db8305d059e0ee8ull, 0xcba5763b1d3d30e5ull, 0x7b14e3a2c2fdca59ull, 0x3e3384e28796a9f3ull, 0x67f38f25e60ea346ull }}, {{ 0x04b04f29fea206d2ull, 0x2931e3a2382c9516ull, 0xf4769e4f2463e8f3ull, 0xced0e45b9de9e781ull, 0x6e0330d94be2a382ull, 0x0f83977afc9260beull }}, {{ 0x2ee317a3f2544432ull, 0x9bf2e45631bdd2dcull, 0x8ca22f176be7197full, 0x1428eb942b230b13ull, 0x4c1fe87cf6da631cull, 0x9b23eacdddb7c770ull }}, {{ 0xd4deec67774aa9f0ull, 0x177ceb5df16a3c99ull, 0x7e55d6ea3706fefcull, 0xc99933c9af5e6ec3ull, 0xf93f14e1a487df18ull, 0x0f672c0aa92dca62ull }}, {{ 0x50b53c0aa8eaa35dull, 0xeae131ab6e265e02ull, 0xef5a65262645f5d8ull, 0xdffc05e0d9b053a2ull, 0xbc76d0d06d4eb6f7ull, 0x9a07b86a9bc9e7ddull }}, {{ 0x2714586a992a61a1ull, 0x2ccbf0b24d7fac17ull, 0x5987f37d7ebb9a79ull, 0xbfd83ac880e3445dull, 0x5ca42824451325aeull, 0x044d342a15e30ea9ull }}, {{ 0x86cb7429fba7d047ull, 0xbff766f706fcb8e7ull, 0x7f4f82e6f35408bbull, 0x7e724bd508e0aba5ull, 0x9e69916ab2bf78d3ull, 0x2b0409a4dade929dull }}, {{ 0x43f289a3d48e22c6ull, 0x7faa05a645df390bull, 0xf91b1d0581485755ull, 0xf076f65258c6b476ull, 0x301fae2afb7ab842ull, 0xae2860708cb1ba28ull }}, {{ 0xa77960664d8d5bb8ull, 0xfca4387ebab83a70ull, 0xbb0f22370cd36956ull, 0x64a59f3777c30ca5ull, 0xe13ccdadd2cb329dull, 0xcd93c4657ef14591ull }}, {{ 0x8abdc3ff07859531ull, 0xde6a34f34b324866ull, 0x4e97562680421d65ull, 0xee78382aad9e7e79ull, 0xcc6008ca3beffa25ull, 0x07c5abf6f56cb7b2ull }}, {{ 0x6b69a7f64b37d3e6ull, 0xb0261180eff6d401ull, 0x11e95d81029525faull, 0x50b231aac830f0bdull, 0xfbc057e6575fc57bull, 0x4db8b7a5963f2cfbull }}, {{ 0x32208f9ef02e46f8ull, 0xe17caf095fa4480eull, 0xb31da70a19d37bcaull, 0x26f5f0abd1e96762ull, 0xd5836eff69bdb6d1ull, 0x09372c77de77c1d7ull }}, {{ 0xf5459c3561cec5b4ull, 0xceded65dbc6ad08dull, 0xff2886650242d5ecull, 0x859b66b6331e09daull, 0x572255fa2169242bull, 0x5c27bcaeb0ad926eull }}, {{ 0x94b81a15d213b908ull, 0x14b45fa95c2c258bull, 0xf7953ff2169c5b40ull, 0x3812031dff2c628dull, 0x67575bc54e1b69b3ull, 0x998d5ed2e6c7b84full }}, {{ 0xcf3104da34c53a4full, 0xcf0bbc9d99b97773ull, 0xabd47f74e21b9080ull, 0x30b41f2bf7bbd98bull, 0x096995b50d122100ull, 0xff85b43d03cd331aull }}, {{ 0x17ea30860fb44713ull, 0x16755e28013eaa86ull, 0xb64cfa90d513a508ull, 0xe70937b7ad567f74ull, 0x5e1fd91282b54a01ull, 0xfb390a622603ff04ull }}, {{ 0xef25e53c9d0ac6beull, 0xe095ad900c72a93cull, 0x1f01c9a852c47250ull, 0x065c2d2cc560fa8full, 0xad3e7ab91b14e413ull, 0xd03a67d57c27f62bull }}, {{ 0x577af45e226bc369ull, 0xc5d8c7a07c7a9c61ull, 0x3611e0933bac7728ull, 0x3f99c3bfb5c9c997ull, 0xc470cb3b0ed0e8beull, 0x22480e56d98f9db4ull }}, {{ 0x6acd8bad5835a216ull, 0xba77cc44dcca1bcdull, 0x1cb2c5c054bca797ull, 0x7c01a57d19e1dfe8ull, 0xac67f04e9429176eull, 0x56d08f647f9c290full }}, {{ 0x2c0774c5721854dfull, 0x48adfab09fe51606ull, 0x1efbb9834f5e8bedull, 0xd81076e302d2bf11ull, 0xbc0f6311c99aea50ull, 0x642599ecfc199a9cull }}, {{ 0xb84a8fb674f350b3ull, 0xd6cbcae63ef2dc3dull, 0x35d53f2119b17744ull, 0x70a4a4de1c3b76abull, 0x5899deb1e00d2728ull, 0xe9780341d9000a1full }}, {{ 0x32e99d2091812701ull, 0x63f5ecfe757c9a69ull, 0x1a54774b00eea8b0ull, 0x666e70ad1a52a2b0ull, 0x7602b2f2c0838794ull, 0x1eb020927a006539ull }}, {{ 0xfd202345af0b8608ull, 0xe79b41f096de081bull, 0x074ca8ee095296e3ull, 0x005066c3073a5ae1ull, 0x9c1afd7b85234bccull, 0x32e145b8c403f43eull }}, {{ 0xe34160b8d6733c4full, 0x0c109365e4ac5117ull, 0x48fe994c5d39e4e7ull, 0x0324039e48478ccaull, 0x190de6d33360f5f8ull, 0xfcccb937a8278a72ull }}, {{ 0xe08dc73860805b11ull, 0x78a5c1faeebb2aeeull, 0xd9f1fcfba442f106ull, 0x1f68242ed2cb7fe6ull, 0xfa8b044001c99bb0ull, 0xdfff3c2c918b6874ull }}, {{ 0xc589c833c5038eadull, 0xb67993cd534fad54ull, 0x8373e1d46a9d6a40ull, 0x3a1169d43bf2ff04ull, 0xc96e2a8011e014e1ull, 0xbff859bdaf721491ull }}, {{ 0xb761d205b22392bdull, 0x20bfc605411cc54full, 0x2286d24c2a262687ull, 0x44ae224a577df62dull, 0xde4da900b2c0d0ccull, 0x7fb38168da74cdb1ull }}, {{ 0x29d23438f563bb63ull, 0x477dbc348b1fb51dull, 0x594436f9a57d8147ull, 0xaecd56e76aeb9dc3ull, 0xaf089a06fb8827faull, 0xfd030e18889008f2ull }}, {{ 0xa2360a3995e551daull, 0xcae95a0d6f3d1323ull, 0x7caa25c076e70cc8ull, 0xd405650a2d3429a1ull, 0xd6560445d3518fcaull, 0xe21e8cf555a0597aull }}, {{ 0x561c663fdaf5327full, 0xed1d84865862bf64ull, 0xdea57984a5067fd7ull, 0x4835f265c409a04eull, 0x5f5c2aba412f9decull, 0xd531819558437eccull }}, {{ 0x5d1bfe7e8d93f8f7ull, 0x43272d3f73db79ebull, 0xb276bf2e7240fe6full, 0xd21b77f9a8604314ull, 0xb999ab468bdc2b3aull, 0x53ef0fd572a2f3fbull }}, {{ 0xa317f0f187c7b9a2ull, 0x9f87c47a8692c331ull, 0xf8a377d07689f058ull, 0x3512afc093c29eceull, 0x4000b0c17699b04cull, 0x47569e567a5d87d5ull }}, {{ 0x5eef696f4dcd4053ull, 0x3b4dacc941bb9ff0ull, 0xb662ae24a1636376ull, 0x12badd85c59a3415ull, 0x8006e78ea200e2faull, 0xc9622f60c7a74e54ull }}, {{ 0xb55a1e590a04833aull, 0x5108bfdc91543f63ull, 0x1fdacd6e4de1e29eull, 0xbb4ca739b80608d9ull, 0x00450b925408ddc4ull, 0xddd5d9c7cc890f4dull }}, {{ 0x15852f7a642d2047ull, 0x2a577e9dad4a79e5ull, 0x3e8c064f0ad2da2full, 0x50fe8841303c587bull, 0x02b273b74858a9afull, 0xaa5a81cdfd5a9902ull }}, {{ 0xd733dac7e9c342c4ull, 0xa76af228c4e8c2f2ull, 0x71783f166c3c85d7ull, 0x29f1528be25b74d0ull, 0x1af88528d376a0d9ull, 0xa789120be589fa14ull }}, {{ 0x68068bcf21a09babull, 0x8a2d7597b1179d7cull, 0x6eb276e03a5d3a6cull, 0xa36d3976d7929024ull, 0x0db5339842a2487bull, 0x8b5ab476f763c4c9ull }}, {{ 0x10417617504614afull, 0x65c697eceaec26dcull, 0x52f8a4c247a4483dull, 0x62443ea46bb9a16cull, 0x891403f29a56d4d4ull, 0x718b0ca5a9e5afdaull }}, {{ 0xa28e9ce922bcced4ull, 0xf9c1ef412d398498ull, 0x3db66f96cc6ad265ull, 0xd6aa726c35404e3bull, 0x5ac8277a0764504bull, 0x6f6e7e78a2f8de89ull }}, {{ 0x5992211b5b601449ull, 0xc193588bc43f2df6ull, 0x69205be3fc2c37fbull, 0x62a8783a14830e50ull, 0x8bd18ac449eb22f6ull, 0x5a50f0b65db8b15dull }}, {{ 0x7fb54b1191c0cad7ull, 0x8fc17575aa77cb9full, 0x1b4396e7d9ba2fd5ull, 0xda94b244cd1e8f24ull, 0x762f6baae32f5d9full, 0x8729671fa936eda7ull }}, {{ 0xfd14eeafb187ec67ull, 0x9d8e9698a8adf43aull, 0x10a3e50e8145de57ull, 0x89cef6b003319769ull, 0x9dda34acdfd9a83eull, 0x479e073c9c25488aull }}, {{ 0xe2d152dcef4f3c05ull, 0x2791e1f696cb8a4dull, 0xa666f2910cbaaf6cull, 0x6215a2e01fefea1aull, 0x2a860ec0be809271ull, 0xcc2c485e1974d56aull }}, {{ 0xdc2d3ca15918582dull, 0x8bb2d3a1e3f3670aull, 0x800579aa7f4ada39ull, 0xd4d85cc13f5f250aull, 0xa93c93877105b86dull, 0xf9bad3acfe905625ull }}, {{ 0x99c45e4d7af371c3ull, 0x74fc4452e782066cull, 0x0036c0a8f8ec863full, 0x50739f8c79b77269ull, 0x9c5dc34a6a39344aull, 0xc14c44c1f1a35d78ull }}, {{ 0x01abaf06cd8271a2ull, 0x91daab3d0b14403eull, 0x02238699b93d3e7aull, 0x24843b7cc12a781aull, 0x1ba9a0e8263c0ae7ull, 0x8cfaaf937061a6b6ull }}, {{ 0x10b4d64407187051ull, 0xb28ab0626eca826cull, 0x156342013c6470c9ull, 0x6d2a52df8ba8b104ull, 0x14a049117e586d07ull, 0x81cadbc263d0831dull }}, {{ 0xa7105ea846f4632cull, 0xf96ae3d853e91838ull, 0xd5e0940c5bec67e0ull, 0x43a73cbb7496ea28ull, 0xce42daaeef74424aull, 0x11ec9597e6251f22ull }}, {{ 0x86a3b292c58bdfbaull, 0xbe2ce673471af236ull, 0x5ac5c87b973c0ec9ull, 0xa4885f528de52598ull, 0x0e9c8ad55a8a96e6ull, 0xb33dd7eefd73375cull }}, {{ 0x4264f9bbb776bd45ull, 0x6dc10080c70d7621ull, 0x8bb9d4d3e85893e1ull, 0x6d53b9398af377f3ull, 0x921d6c558969e502ull, 0x006a6f55e6802998ull }}, {{ 0x97f1c1552aa364b3ull, 0x498a0507c6869d4cull, 0x754250471375c6ceull, 0x45453c3f6d82af83ull, 0xb5263b575e22f218ull, 0x0428595b01019ff5ull }}, {{ 0xef718d53aa61ef01ull, 0xdf64324dc14224fdull, 0x949722c6c299c40eull, 0xb4b45a7a471adb22ull, 0x137e5169ad5d74f2ull, 0x29937d8e0a103f99ull }}, {{ 0x5a6f8544a7d3560aull, 0xb9e9f7098c9571ebull, 0xcde75bc39a01a894ull, 0x0f0b88c6c70c8f59ull, 0xc2ef2e20c5a6917bull, 0x9fc2e78c64a27bfaull }}, {{ 0x885b34ae8e415c60ull, 0x4323a65f7dd67331ull, 0x0b0995a4041095cfull, 0x967357c3c67d9982ull, 0x9d57cd47b881aeceull, 0x3d9d0b7bee58d7cbull }}, {{ 0x53900ed18e8d9bc4ull, 0x9f647fbaea607fefull, 0x6e5fd86828a5da18ull, 0xe0816da5c0e7ff14ull, 0x256e04cd3510d411ull, 0x682272d74f786df4ull }}, {{ 0x43a0942f918815adull, 0x39ecfd4d27c4ff59ull, 0x4fbe7411967a84f6ull, 0xc50e4879890ff6ccull, 0x764c300412a848b2ull, 0x11587c691ab44b89ull }}, {{ 0xa445c9dbaf50d8bfull, 0x4341e5038db1f97cull, 0x1d7088afe0c9319eull, 0xb28ed4bf5a9fa3fbull, 0x9ef9e028ba92d6fbull, 0xad74dc1b0b0af35eull }}, {{ 0x6ab9e294d9287779ull, 0xa092f22388f3bedeull, 0x266556dec7dbf02eull, 0xf9944f798a3c67cfull, 0x35c2c19749bc65d4ull, 0xc690990e6e6d81b2ull }}, {{ 0x2b42d9d07b94aabeull, 0x45bd7563598574b0ull, 0x7ff564b3ce9761d2ull, 0xbfcb1abf665c0e17ull, 0x199b8fe8e15bfa51ull, 0xc1a5fa90504710f6ull }}, {{ 0xb09c8224d3ceab6eull, 0xb96695e17f368ee1ull, 0xff95ef0611e9d236ull, 0x7def0b79ff988ceaull, 0x00139f18cd97c731ull, 0x907bc9a322c6a99dull }}, {{ 0xe61d15704612b247ull, 0x3e01dacef82194d0ull, 0xfbdb563cb3223623ull, 0xeb5672c3fbf5812dull, 0x00c436f807edc7eeull, 0xa4d5e05f5bc2a022ull }}, {{ 0xfd22d662bcbaf6c7ull, 0x6c128c15b14fd028ull, 0xd6915e5eff561d60ull, 0x31607ba7d7970bcbull, 0x07aa25b04f49cf55ull, 0x705ac3b9959a4154ull }}, {{ 0xe35c5fdb5f4da3c4ull, 0x38b978d8ed1e2199ull, 0x61adafb5f95d25c4ull, 0xedc4d48e6be675f6ull, 0x4ca578e318e21953ull, 0x638ba53fd8068d48ull }}, {{ 0xe19bbe91b90865acull, 0x373eb879432d5002ull, 0xd0c8dd1bbda379aaull, 0x49b04d9037009b9full, 0xfe76b8def8d4fd47ull, 0xe374747e704184d2ull }}, {{ 0xd01571b13a53f8b5ull, 0x287334bc9fc5201cull, 0x27d8a3156862c0a6ull, 0xe0e307a22606143eull, 0xf0a338b5b851e4c8ull, 0xe28c8cf0628f303dull }}, {{ 0x20d670ec4747b70dull, 0x94800f5e3db34120ull, 0x8e765ed613db867dull, 0xc8de4c557c3cca6dull, 0x666037193332efd8ull, 0xd97d8163d997e26bull }}, {{ 0x4860693ac8cd2684ull, 0xcd0099ae69008b41ull, 0x909fb45cc69340e7ull, 0xd8aefb56da5fe847ull, 0xffc226fbfffd5e77ull, 0x7ee70de67feed831ull }}, {{ 0xd3c41c4bd8038129ull, 0x020600d01a05708cull, 0xa63d0b9fc1c0890eull, 0x76d5d16487bf12cbull, 0xfd9585d7ffe5b0aeull, 0xf5068b00ff5471f3ull }}, {{ 0x45a91af670230b96ull, 0x143c082104366580ull, 0x7e62743d91855a8cull, 0xa45a2ded4d76bbf4ull, 0xe7d73a6ffef8e6d0ull, 0x92416e09f94c7387ull }}, {{ 0xb89b0da0615e73daull, 0xca58514a2a1ff702ull, 0xefd88a67af358978ull, 0x6b85cb4506a3578cull, 0x0e68485ff5b90426ull, 0xb68e4c63bcfc834full }}, {{ 0x360e8843cdb08680ull, 0xe7732ce5a53fa61bull, 0x5e75680cd8175eb7ull, 0x3339f0b242616b81ull, 0x9012d3bf993a2980ull, 0x218efbe561dd2116ull }}, {{ 0x1c9152a608e540feull, 0x0a7fc0f8747c7d10ull, 0xb096108070e9b32full, 0x004366f697ce330dull, 0xa0bc457bfc459f02ull, 0x4f95d6f5d2a34ae1ull }}, {{ 0x1dad3a7c58f489e9ull, 0x68fd89b48cdce2a1ull, 0xe5dca5046920ffd6ull, 0x02a205a1ee0dfe88ull, 0x475ab6d7dab83614ull, 0x1bda659a3a60ecd0ull }}, {{ 0x28c448db798d631full, 0x19e7610d80a0da4bull, 0xfa9e722c1b49fe60ull, 0x1a5438534c8bf158ull, 0xc98b246e8b321cc8ull, 0x1687f80647c94022ull }}, {{ 0x97aad892bf85df34ull, 0x0309ca87064886efull, 0xca3075b910e3efc1ull, 0x074a3340fd776d79ull, 0xdf6f6c516ff51fd1ull, 0xe14fb03ecddc815bull }}, {{ 0xecac75bb7b3ab80aull, 0x1e61e9463ed5455bull, 0xe5e4993aa8e75d8aull, 0x48e60089e6aa46c1ull, 0xba5a3b2e5f933e2aull, 0xcd1ce2740a9d0d96ull }}, {{ 0x3ebc9952d04b3066ull, 0x2fd31cbe7454b597ull, 0xfaedfc4a9909a765ull, 0xd8fc056302a6c392ull, 0x47864fcfbbc06da6ull, 0x0320d8886a2287e3ull }}, {{ 0x735dfd3c22efe3f7ull, 0xde3f1f708b4f17e8ull, 0xcd4bdae9fa6089f3ull, 0x79d835de1a83a3bdull, 0xcb3f1e1d55844884ull, 0x1f48755425594ee0ull }}, {{ 0x81abe4595d5ee7a8ull, 0xae773a657116ef14ull, 0x04f68d23c7c56386ull, 0xc2721aad0924656aull, 0xf0772d25572ad52cull, 0x38d49549757d14c7ull }}, {{ 0x10b6eb7da5b50c8eull, 0xd0a847f66ae556cdull, 0x31a18365cdb5e342ull, 0x98750ac25b6bf624ull, 0x64a7c37567ac53bfull, 0x384dd4de96e2cfcfull }}, {{ 0xa72532e879127d8cull, 0x2692cfa02cf56402ull, 0xf04f21fa091ae09cull, 0xf4926b9792379d69ull, 0xee8da2960cbb457bull, 0x330a50b1e4dc1e19ull }}, {{ 0x8773fd14bab8e776ull, 0x81bc1c41c195e81aull, 0x631753c45b0cc619ull, 0x8db833ebb62c2623ull, 0x518859dc7f50b6d7ull, 0xfe6726f2f0992d03ull }}, {{ 0x4a87e2cf4b390a9eull, 0x11591a918fdb1109ull, 0xdee945ab8e7fbcffull, 0x893207351db97d61ull, 0x2f53829cf927246bull, 0xf007857d65fbc221ull }}, {{ 0xe94edc18f03a6a2cull, 0xad7b09af9e8eaa5cull, 0xb51cb8b390fd61f6ull, 0x5bf44813293ee5d2ull, 0xd9431a21bb876c33ull, 0x604b36e5fbd5954bull }}, {{ 0x1d1498f9624825b9ull, 0xc6ce60dc3192a7a1ull, 0x131f3703a9e5d3a2ull, 0x978ad0bf9c74fa3bull, 0x7c9f0551534a3a01ull, 0xc2f024fbd657d4f6ull }}, {{ 0x22cdf9bdd6d17939ull, 0xc40fc899efba8c4bull, 0xbf382624a2fa445bull, 0xeb6c277c1c91c64eull, 0xde36352d40e6440full, 0x9d6171d65f6e51a0ull }}, {{ 0x5c0bc16a642ebc37ull, 0xa89dd6035d497aefull, 0x78317d6e5dc6ab95ull, 0x32398ad91db1bf13ull, 0xae1e13c488fea89full, 0x25ce725fba4f3048ull }}, {{ 0x98758e27e9d35a29ull, 0x962a5c21a4decd59ull, 0xb1eee64fa9c2b3d8ull, 0xf63f6c7b28f176c2ull, 0xcd2cc5ad59f29637ull, 0x7a1077bd4717e2d6ull }}, {{ 0xf4978d8f22418599ull, 0xdda7995070b4057full, 0xf354ff1ca19b0675ull, 0x9e7a3ccf996ea39aull, 0x03bfb8c58379de2full, 0xc4a4ad64c6eedc64ull }}, {{ 0x8deb8797568f37f7ull, 0xa88bfd24670836ffull, 0x8151f71e500e409aull, 0x30c6601bfe52640dull, 0x257d37b722c2addcull, 0xae6ec5efc5549be8ull }}, {{ 0x8b334be961982fa7ull, 0x9577e36c065225fbull, 0x0d33a72f208e860aull, 0xe7bfc117ef37e887ull, 0x76e42d275b9aca99ull, 0xd053bb5db54e1711ull }}, {{ 0x7000f71dcff1dc82ull, 0xd6aee2383f357bd3ull, 0x840487d745913c69ull, 0x0d7d8aef582f1546ull, 0xa4e9c389940bea03ull, 0x234551a9150ce6aeull }}, {{ 0x6009a72a1f729d16ull, 0x62d4d6327816d642ull, 0x282d4e68b7ac5c22ull, 0x86e76d5971d6d4c1ull, 0x7121a35fc877241eull, 0x60b5309ad28102d2ull }}, {{ 0xc06087a53a7a22deull, 0xdc505df8b0e45e97ull, 0x91c510172cbb9957ull, 0x450a457e72644f8bull, 0x6b5061bdd4a76931ull, 0xc713e60c390a1c38ull }}, {{ 0x83c54c7448c55ca9ull, 0x9b23abb6e8ebb1edull, 0xb1b2a0e7bf53fd6eull, 0xb266b6f077eb1b73ull, 0x3123d16a4e8a1becull, 0xc6c6fc7a3a651a34ull }}, {{ 0x25b4fc8ad7b59e99ull, 0x0f64b5251934f347ull, 0xf0fa490d7947e652ull, 0xf8032564af2f1284ull, 0xeb662e271165173eull, 0xc3c5dcc647f30609ull }}, {{ 0x7911dd6c6d1831fbull, 0x99ef1372fc1180c7ull, 0x69c6da86bcceff34ull, 0xb01f75eed7d6b931ull, 0x31fdcd86adf2e875ull, 0xa5ba9fbecf7e3c63ull }}, {{ 0xbab2a63c42f1f3d3ull, 0x0356c27dd8af07caull, 0x21c489436015f80eull, 0xe13a9b546e633beeull, 0xf3ea0742cb7d1498ull, 0x794a3d741aee5bdfull }}, {{ 0x4afa7e5a9d73863eull, 0x216398ea76d64debull, 0x51ad5ca1c0dbb08cull, 0xcc4a114c4fe0574dull, 0x8724489bf2e2cdf8ull, 0xbce666890d4f96bfull }}, {{ 0xedc8ef8a26833e69ull, 0x4de3f928a45f0b30ull, 0x30c59e518894e579ull, 0xfae4acfb1ec36905ull, 0x476ad6177cdc0bb7ull, 0x6100015a851be37bull }}, {{ 0x49d95b6581207016ull, 0x0ae7bb966bb66fe9ull, 0xe7b82f2f55d0f6bdull, 0xcceec1cf33a21a33ull, 0xca2c5ceae098752full, 0xca000d893316e2d0ull }}, {{ 0xe27d91f70b4460dbull, 0x6d0d53e035205f1cull, 0x0d31d7d95a29a362ull, 0x0153921804550607ull, 0xe5bba12cc5f493deull, 0xe400875bfee4dc27ull }}, {{ 0xd8e7b3a670abc88full, 0x428546c21343b720ull, 0x83f26e7d85a061d8ull, 0x0d43b4f02b523c46ull, 0xf9544bbfbb8dc6acull, 0xe8054997f4f0998eull }}, {{ 0x790d048066b5d597ull, 0x9934c394c0a52748ull, 0x277850e73843d272ull, 0x84a51161b1365ac1ull, 0xbd4af57d5389c2b8ull, 0x1034dfef9165ff95ull }}, {{ 0xba822d04031a57e9ull, 0xfc0fa3cf867388d4ull, 0x8ab3290832a63879ull, 0x2e72add0ec1f8b8bull, 0x64ed96e543619b35ull, 0xa210bf5badfbfbd9ull }}, {{ 0x4915c2281f076f15ull, 0xd89c661b4083584full, 0x6aff9a51fa7e34c3ull, 0xd07aca29393b7373ull, 0xf147e4f4a1d01013ull, 0x54a77994cbd7d67dull }}, {{ 0xdad99591364a56d7ull, 0x761bfd1085217318ull, 0x2dfc0733c8ee0fa6ull, 0x24cbe59c3c528282ull, 0x6ccef18e5220a0c6ull, 0x4e8abfcff66e60ebull }}, {{ 0x8c7fd7ac1ee76464ull, 0x9d17e2a5334e7ef8ull, 0xcbd84805d94c9c80ull, 0x6ff6f81a5b391915ull, 0x40156f8f354647bdull, 0x116b7e1fa04fc932ull }}, {{ 0x7cfe6cb93509ebe7ull, 0x22eeda740110f5b5ull, 0xf672d03a7cfe1d06ull, 0x5fa5b107903afad9ull, 0x80d65b9814becd66ull, 0xae32ed3c431ddbf6ull }}, {{ 0xe1f03f3c12633708ull, 0x5d5488880aa99916ull, 0xa07c2248e1ed223dull, 0xbc78ea4ba24dcc83ull, 0x085f93f0cf7405ffull, 0xcdfd445a9f2a97a1ull }}, {{ 0xd3627858b7e0264full, 0xa54d55506a9ffae4ull, 0x44d956d8d3435665ull, 0x5cb926f45709fd24ull, 0x53bbc7681a883bfdull, 0x0be4ab8a37a9ec4aull }}, {{ 0x41d8b3772ec17f17ull, 0x750555242a3fccf0ull, 0xb07d647840a15ff8ull, 0x9f3b858b6663e36aull, 0x4555ca11095257e5ull, 0x76eeb3662ca33ae7ull }}, {{ 0x927702a7d38ef6e3ull, 0x92355369a67e0162ull, 0xe4e5ecb2864dbfb4ull, 0x38533771ffe6e22aull, 0xb559e4aa5d376ef8ull, 0xa55301fdbe604d08ull }}, {{ 0xb8a61a8e4395a4e0ull, 0xb615422080ec0dd9ull, 0xf0fb3ef93f097d0dull, 0x33402a73ff04d5acull, 0x1582eea7a42a55b2ull, 0x753e13e96fc30257ull }}, {{ 0x367d098ea3d870c0ull, 0x1cd4954509388a81ull, 0x69d075bc765ee289ull, 0x0081a887f63058c1ull, 0xd71d528c69a758f6ull, 0x946cc71e5d9e1766ull }}, {{ 0x20e25f9266746782ull, 0x204dd4b25c35690cull, 0x2224995c9fb4d95bull, 0x0510954f9de3778eull, 0x6725397c2089799cull, 0xcc3fc72fa82cea04ull }}, {{ 0x48d7bbb8008c0b13ull, 0x430a4ef79a161a79ull, 0x556dfd9e3d107d8full, 0x32a5d51c2ae2ab8dull, 0x07743ed9455ec018ull, 0xfa7dc7dc91c1242cull }}, {{ 0xd86d553005786ec3ull, 0x9e6715ac04dd08bcull, 0x564be82e62a4e798ull, 0xfa7a5319acdab385ull, 0x4a8a747cb5b380f1ull, 0xc8e9ce9db18b69b8ull }}, {{ 0x744553e036b4539eull, 0x3006d8b830a25760ull, 0x5ef711cfda710bf6ull, 0xc8c73f00c08b0335ull, 0xe9688cdf19030973ull, 0xd9221228ef722132ull }}, {{ 0x8ab546c2230b4427ull, 0xe0447731e65769c4ull, 0xb5a6b21e886a779dull, 0xd7c87607856e2015ull, 0x1e1580b6fa1e5e85ull, 0x7b54b5995a754bfdull }}, {{ 0x6b14c3955e70a988ull, 0xc2aca7f2ff6a21adull, 0x1882f5315428ac2aull, 0x6dd49c4b364d40d9ull, 0x2cd70725c52fb13aull, 0xd14f17fd8894f7e3ull }}, {{ 0x2ecfa3d5b0669f4cull, 0x9abe8f7dfa2550c6ull, 0xf51d93ed4996b9abull, 0x4a4e1af01f04887aull, 0xc0664779b3dcec48ull, 0x2d16efe755d1aedfull }}, {{ 0xd41c6658e40238faull, 0x0b719aebc57527bdull, 0x9327c744dfe340b4ull, 0xe70d0d61362d54cdull, 0x83fecac106a13ad2ull, 0xc2e55f095a30d4bdull }}, {{ 0x491bff78e81639c5ull, 0x72700d35b6938d6aull, 0xbf8dc8b0bee08708ull, 0x068285cc1dc55007ull, 0x27f3eb8a424c4c3dull, 0x9cf5b65d85e84f67ull }}, {{ 0xdb17fab910de41b6ull, 0x7860841921c38626ull, 0x7b89d6e774c54654ull, 0x411939f929b5204dull, 0x8f87336696fafa62ull, 0x21991fa73b131a07ull }}, {{ 0x8eefcb3aa8ae9120ull, 0xb3c528fb51a33d84ull, 0xd362650a8fb4bf4cull, 0x8afc43bba1134306ull, 0x9b480201e5cdc7d6ull, 0x4ffb3c884ebf044bull }}, {{ 0x955df04a96d1ab3cull, 0x05b399d13060672dull, 0x41d7f2699d0f78ffull, 0x6ddaa5544ac09e44ull, 0x10d01412fa09ce61ull, 0x1fd05d5313762af4ull }}, {{ 0xd5ab62e9e430b055ull, 0x3904022be3c407c7ull, 0x926f7820229ab9f6ull, 0x4a8a754aeb862eaaull, 0xa820c8bdc4620fceull, 0x3e23a53ec29dad88ull }}, {{ 0x58b1dd22e9e6e350ull, 0x3a2815b6e5a84dceull, 0xb85ab1415a0b439eull, 0xe96894ed333dd2a9ull, 0x9147d769abd49e0eull, 0x6d6474739a28c756ull }}, {{ 0x76f2a35d2304e122ull, 0x4590d924f8930a0full, 0x338aec8d8470a42eull, 0x1e15d144006a3aa1ull, 0xacce6a20b64e2c95ull, 0x45ec8c840597c961ull }}, {{ 0xa57a61a35e30cb59ull, 0xb7a87b71b5be649aull, 0x036d3d872c6669ceull, 0x2cda2ca804264a4cull, 0xc01025471f0dbdd3ull, 0xbb3d7d2837edddd0ull }}, {{ 0x76c7d061ade7f176ull, 0x2c94d271196fee0aull, 0x22446747bc002213ull, 0xc085be90297ee6f8ull, 0x80a174c736896a3full, 0x5066e3922f4aaa27ull }}, {{ 0xa3ce23d0cb0f6e9dull, 0xbdd0386afe5f4c68ull, 0x56ac08cd580154bfull, 0x853971a19ef505b1ull, 0x064e8fc8215e267dull, 0x2404e3b5d8eaa58bull }}, {{ 0x660d6627ee9a521full, 0x6a22342defb8fc16ull, 0x62b85805700d4f7dull, 0x343e7050359238edull, 0x3f119dd14dad80e7ull, 0x6830e51a792a776eull }}, {{ 0xfc85fd8f52073535ull, 0x255609cb5d39d8dfull, 0xdb33703660851ae6ull, 0x0a70632217b63945ull, 0x76b02a2d08c70908ull, 0x11e8f308bba8aa4eull }}, {{ 0xdd3be79934481416ull, 0x755c61f1a44278bfull, 0x9002621fc5330cfdull, 0x6863df54ed1e3cbaull, 0xa2e1a5c257c65a50ull, 0xb3197e575496a710ull }}, {{ 0xa4570bfc0ad0c8dfull, 0x959bd3706a98b77eull, 0xa017d53db3fe81e6ull, 0x13e6b951432e5f49ull, 0x5cd079976dbf8724ull, 0xfefeef694de286a6ull }}, {{ 0x6b6677d86c27d8bbull, 0xd816426429f72af2ull, 0x40ee546907f11301ull, 0xc7033d2c9fcfb8e0ull, 0xa024bfea497b4768ull, 0xf5f55a1d0ad9427full }}, {{ 0x3200ae74398e774bull, 0x70de97e9a3a7ad78ull, 0x894f4c1a4f6abe12ull, 0xc62063be3e1d38c2ull, 0x416f7f26ded0ca17ull, 0x9b9585226c7c98fcull }}, {{ 0xf406d08a3f90a8eaull, 0x68b1ef20648cc6b1ull, 0x5d18f9071a2b6cb8ull, 0xbd43e56e6d243799ull, 0x8e5af784b427e4edull, 0x13d733583cddf9daull }}, {{ 0x884425667ba69926ull, 0x16f35743ed7fc2f3ull, 0xa2f9ba4705b23f34ull, 0x64a6f650436a2bfdull, 0x8f8dab2f098ef149ull, 0xc668017260abc289ull }}, {{ 0x52a97600d481fb7cull, 0xe58168a746fd9d83ull, 0x5dc146c638f67808ull, 0xee859f22a225b7e8ull, 0x9b88afd65f956cddull, 0xc0100e77c6b5995full }}, {{ 0x3a9e9c084d13d2d7ull, 0xf70e1688c5e82721ull, 0xa98cc3be39a0b058ull, 0x5138375a55792f13ull, 0x1356de5fbbd640abull, 0x80a090adc317fdbcull }}, {{ 0x4a32185302c63c62ull, 0xa68ce157bb11874cull, 0x9f7fa56e4046e379ull, 0x2c32298756bbd6c4ull, 0xc164afbd565e86b1ull, 0x0645a6c99eefe958ull }}, {{ 0xe5f4f33e1bbe5bd6ull, 0x8180cd6d4eaf48faull, 0x3afc764e82c4e2c0ull, 0xb9f59f49635663aeull, 0x8deedd655fb142ebull, 0x3eb883e0355f1d77ull }}, {{ 0xfb91806d156f965eull, 0x0f08064512d8d9ccull, 0x4ddc9f111bb0db85ull, 0x439838dde15fe4ceull, 0x8b54a5f5bcec9d35ull, 0x733526c215b726abull }}, {{ 0xd3af0442d65bdfadull, 0x96503eb2bc788201ull, 0x0a9e36ab14e89332ull, 0xa3f238aacdbef00full, 0x714e7b99613e2414ull, 0x80138394d92782b3ull }}, {{ 0x44d62a9c5f96bcc1ull, 0xdf2272fb5cb51412ull, 0x6a2e22aed115bff9ull, 0x677636ac09756096ull, 0x6d10d3fdcc6d68ceull, 0x00c323d07b8b1b02ull }}, {{ 0xb05daa1bbbe35f88ull, 0xb7587dd19f12c8b6ull, 0x25cd5ad42ad97fc2ull, 0x0a9e22b85e95c5e0ull, 0x42a847e9fc461810ull, 0x079f6624d36f0e18ull }}, {{ 0xe3a8a51556e1bb4dull, 0x2974ea3036bbd722ull, 0x7a058c49ac7efd9bull, 0x6a2d5b33b1d9bac1ull, 0x9a92cf23dabcf0a0ull, 0x4c39fd7042568cf2ull }}, {{ 0xe49672d564d15105ull, 0x9e9125e22356675cull, 0xc4377ae0bcf5e80full, 0x25c59004f2814b8eull, 0x09bc17668b616644ull, 0xfa43e6629761817aull }}, {{ 0xede07c55f02d2a33ull, 0x31ab7ad5616009a0ull, 0xaa2accc7619b109cull, 0x79b7a031790cf393ull, 0x6158ea0171cdfea9ull, 0xc6a6ffd9e9cf0ec4ull }}, {{ 0x4ac4db5b61c3a601ull, 0xf0b2cc55cdc06049ull, 0xa5abffc9d00ea619ull, 0xc12c41eeba8183c4ull, 0xcd79240e720bf29eull, 0xc285fe83221693abull }}, {{ 0xebb09191d1a47c0eull, 0x66fbfb5a0983c2dcull, 0x78b7fde220927d03ull, 0x8bba9353490f25aeull, 0x06bb689074777a33ull, 0x993bf11f54e1c4b6ull }}, {{ 0x34e5afb2306cd88dull, 0x05d7d1845f259ca1ull, 0xb72fead545b8e222ull, 0x7549c140da9778d0ull, 0x435215a48caac603ull, 0xfc576b3950d1af1cull }}, {{ 0x10f8dcf5e4407585ull, 0x3a6e2f2bb7781e4cull, 0x27df2c54b938d554ull, 0x94e18c8889eab827ull, 0xa134d86d7eabbc22ull, 0xdb6a303d2830d71aull }}, {{ 0xa9b8a19aea849736ull, 0x484dd7b52ab12ef8ull, 0x8eb7bb4f3c38554aull, 0xd0cf7d55632b3187ull, 0x4c107446f2b55959ull, 0x9225e26391e8670aull }}, {{ 0xa136500d292de81dull, 0xd30a6d13aaebd5b6ull, 0x932d51185a3354e6ull, 0x281ae555dfafef4bull, 0xf8a48ac57b157d82ull, 0xb57ad7e3b3140666ull }}, {{ 0x4c1f20839bcb1120ull, 0x3e6842c4ad365922ull, 0xbfc52af386015104ull, 0x910cf55abcdf58f3ull, 0xb66d6bb6ced6e715ull, 0x16cc6ee4fec84005ull }}, {{ 0xf937452415eeab3eull, 0x70129baec41f7b56ull, 0x7db3ad833c0d2a2aull, 0xaa81958b60b97985ull, 0x20463524146506d7ull, 0xe3fc54f1f3d28039ull }}, {{ 0xbc28b368db52b071ull, 0x60ba14d3a93ad165ull, 0xe904c7205883a5a8ull, 0xa90fd771c73ebf36ull, 0x42be1368cbf2446cull, 0xe7db51738639023bull }}, {{ 0x59970218913ae46aull, 0xc744d0449c4c2df9ull, 0x1a2fc74375247893ull, 0x9a9e6a71c8737825ull, 0x9b6cc217f776ac3eull, 0x0e912e833e3a1650ull }}, {{ 0x7fe614f5ac4cec23ull, 0xc8b022ae1af9cbbdull, 0x05ddc8a2936cb5c5ull, 0x0a302871d482b173ull, 0x123f94efaaa2ba72ull, 0x91abd1206e44df26ull }}, {{ 0xfefcd198bb013961ull, 0xd6e15acd0dc1f566ull, 0x3aa9d659c23f19b9ull, 0x65e194724d1aee7eull, 0xb67bd15caa5b4874ull, 0xb0b62b444eb0b77cull }}, {{ 0xf5e02ff74e0c3dceull, 0x64cd8c0289939605ull, 0x4aa25f8196770142ull, 0xfacfcc77030d50eeull, 0x20d62d9ea790d48bull, 0xe71db0ab12e72adfull }}, {{ 0x9ac1dfa90c7a6a0eull, 0xf00778195fc3dc3bull, 0xea57bb0fe0a60c97ull, 0xcc1dfca61e85294eull, 0x485dc8328ba84d77ull, 0x0728e6aebd07acb7ull }}, {{ 0x0b92bc9a7cc82491ull, 0x604ab0fdbda69a54ull, 0x276d4e9ec67c7defull, 0xf92bde7d31339d15ull, 0xd3a9d1f9749306adull, 0x479902d3624cbf28ull }}, {{ 0x73bb5e08dfd16da6ull, 0xc2eae9e968820748ull, 0x8a451233c0dceb59ull, 0xbbb6b0e3ec0422d3ull, 0x44a233be8dbe42cbull, 0xcbfa1c41d6ff7798ull }}, {{ 0x8551ac58be2e487aull, 0x9d2d231e151448d4ull, 0x66b2b60588a13181ull, 0x5522e8e738295c43ull, 0xae560571896e9bf5ull, 0xf7c51a9265faabf2ull }}, {{ 0x3530bb776dced4c8ull, 0x23c35f2cd2cad84dull, 0x02fb1c37564bef10ull, 0x535d1908319d9aa2ull, 0xcf5c366f5e521795ull, 0xadb309b7fbcab77aull }}, {{ 0x13e752aa4a144fcdull, 0x65a1b7c03bec7304ull, 0x1dcf1a295ef756a1ull, 0x41a2fa51f0280a54ull, 0x199a2059af34ebd5ull, 0xc8fe612fd5eb2accull }}, {{ 0xc7093aa6e4cb1e00ull, 0xf8512d82573c7e28ull, 0x2a17059db5a9624dull, 0x905dc73361906749ull, 0x00054380d8113654ull, 0xd9efcbde5b2fabf9ull }}, {{ 0xc65c4a84efef2bfcull, 0xb32bc717685ced97ull, 0xa4e63829189dd70bull, 0xa3a9c801cfa408dbull, 0x0034a30870ac1f4dull, 0x835df6af8fdcb7baull }}, {{ 0xbf9ae9315f57b7d6ull, 0xffb5c6ea13a147edull, 0x70fe319af62a6674ull, 0x64a1d0121c685894ull, 0x020e5e5466b93908ull, 0x21aba2db9e9f2d44ull }}, {{ 0x7c0d1bedb96d2e59ull, 0xfd19c524c44ccf49ull, 0x69edf00d9da80091ull, 0xee5220b51c1375ccull, 0x148faf4c033c3a53ull, 0x50b45c943237c4a8ull }}, {{ 0xd88317493e43cf7aull, 0xe301b36fab0018deull, 0x234b6088289005b3ull, 0x4f35471318c299fcull, 0xcd9cd8f8205a4747ull, 0x270b9dc9f62dae90ull }}, {{ 0x751ee8dc6ea61ac7ull, 0xde11025cae00f8b4ull, 0x60f1c55195a03906ull, 0x1814c6bef79a03d9ull, 0x082079b14386c8c9ull, 0x867429e39dc8d1a8ull }}, {{ 0x9335189c527d0bcaull, 0xacaa179ecc09b70cull, 0xc971b52fd8423a44ull, 0xf0cfc375ac04267dull, 0x5144c0eca343d7daull, 0x4089a2e429d83090ull }}, {{ 0xc012f61b38e275e1ull, 0xbea4ec33f861267dull, 0xde7113de729646aeull, 0x681da298b82980e9ull, 0x2caf893e60a66e8dull, 0x85605ce9a271e5a3ull }}, {{ 0x80bd9d1038d89accull, 0x72713a07b3cb80e9ull, 0xb06ac6b079dec2d3ull, 0x112859f7319f0922ull, 0xbedb5c6fc6805186ull, 0x35c3a1205872f85full }}, {{ 0x076822a238760bfbull, 0x786c444d05f3091full, 0xe42bc2e4c2b39c42ull, 0xab9383a7f0365b5aull, 0x74919c5dc1032f3cull, 0x19a44b43747db3bdull }}, {{ 0x4a115a56349c77cfull, 0xb43aab023b7e5b36ull, 0xe9b59cef9b041a98ull, 0xb3c3248f621f918cull, 0x8db01ba98a1fd85eull, 0x006af0a28ce90566ull }}, {{ 0xe4ad875e0e1cae19ull, 0x0a4aae1652ef901eull, 0x2118215c0e2909f7ull, 0x059f6d99d53baf81ull, 0x88e1149f653e73b3ull, 0x042d6659811a3601ull }}, {{ 0xeec749ac8d1eccfaull, 0x66eaccdf3d5ba134ull, 0x4af14d988d9a63a6ull, 0x383a48025454db0bull, 0x58cace39f47084feull, 0x29c5ff7f0b061c0full }}, {{ 0x53c8e0bd833401c9ull, 0x052c00b865944c11ull, 0xed6d07f58807e480ull, 0x3246d0174b508e70ull, 0x77ec0e438c6531eeull, 0xa1bbfaf66e3d1899ull }}, {{ 0x45d8c767200811d8ull, 0x33b80733f7caf8adull, 0x46424f97504eed00ull, 0xf6c420e8f1259069ull, 0xaf388ea37bf3f34dull, 0x5157cda04e62f5feull }}, {{ 0xba77ca074050b26eull, 0x05304807adedb6c4ull, 0xbe971be923154202ull, 0xa3a949196b77a41cull, 0xd8359262d787810bull, 0x2d6e08430fdd9bf2ull }}, {{ 0x48ade4488326f84bull, 0x33e2d04ccb4923afull, 0x71e7171b5ed49414ull, 0x649cdafe32ac691full, 0x7217b7dc6b4b0a74ull, 0xc64c529e9ea8177cull }}, {{ 0xd6caead51f85b2efull, 0x06dc22fff0db64d8ull, 0x7306e711b44dc8caull, 0xee208dedfabc1b3aull, 0x74ed2e9c30ee688bull, 0xbefb3a323290eadcull }}, {{ 0x63ed2c533b38fd51ull, 0x44995dff6891f078ull, 0x7e4506b10b09d7e4ull, 0x4d458b4bcb591048ull, 0x9143d219e9501577ull, 0x75d045f5f9a92c9cull }}, {{ 0xe743bb405039e52bull, 0xadfdabfa15b364b3ull, 0xeeb242ea6e626eeaull, 0x04b770f5f17aa2d4ull, 0xaca635031d20d6a9ull, 0x9a22bb9bc09bbe1dull }}, {{ 0x08a550832242f3a9ull, 0xcbe8b7c4d901ef07ull, 0x52f69d284fd8552aull, 0x2f2a699b6eca5c51ull, 0xbe7e121f2348629aull, 0x055b541586156d28ull }}, {{ 0x5675251f569d849eull, 0xf7172db07a135646ull, 0x3da223931e7353abull, 0xd7a8201253e79b2dull, 0x70ecb53760d3da05ull, 0x359148d73cd64397ull }}, {{ 0x6093733962272e27ull, 0xa6e7c8e4c4c15ebfull, 0x685563bf308144b7ull, 0x6c9140b7470c0fc4ull, 0x693f1429c846843aull, 0x17acd868605ea3eaull }}, {{ 0xc5c2803dd587cd8bull, 0x850dd8efaf8db379ull, 0x1355e577e50caf2cull, 0x3dac8728c6789dacull, 0x1c76c9a1d2c12a48ull, 0xecc07413c3b26728ull }}, {{ 0xb999026a574e076dull, 0x328a795cdb8902c1ull, 0xc15af6aef27ed7bdull, 0x68bd4797c0b628b8ull, 0x1ca3e0523b8ba6d2ull, 0x3f8488c5a4f80791ull }}, {{ 0x3ffa1827690c4a44ull, 0xf968bda0935a1b91ull, 0x8d8da2d578f46d63ull, 0x1764cbed871d9737ull, 0x1e66c33653748438ull, 0x7b2d57b871b04babull }}, {{ 0x7fc4f18a1a7ae6a9ull, 0xbe176845c18513acull, 0x87885c56b98c45e7ull, 0xe9eff7474727e82bull, 0x3003a01f428d2a30ull, 0xcfc56d3470e2f4afull }}, {{ 0xfdb16f6508cd029dull, 0x6cea12b98f32c4bcull, 0x4b539b633f7abb0dull, 0x235fa8c8c78f11b3ull, 0xe02441389983a5e9ull, 0x1db6440c68dd8ed7ull }}, {{ 0xe8ee59f258021a1full, 0x4124bb3f97fbaf61ull, 0xf14411e07acb4e86ull, 0x61bc97d7cb96b100ull, 0xc16a8c35ff247b1bull, 0x291ea87c18a7946eull }}, {{ 0x194f837770150538ull, 0x8b6f507befd4d9d3ull, 0x6ca8b2c4cbf1113eull, 0xd15dee6df3e2ea09ull, 0x8e297a1bf76ccf11ull, 0x9b3294d8f68bcc53ull }}, {{ 0xfd1b22aa60d2342eull, 0x725924d75e50823eull, 0x3e96fbaff76aac71ull, 0x2dab504b86dd245eull, 0x8d9ec517aa4016b2ull, 0x0ff9d079a175fb43ull }}, {{ 0xe30f5aa7c83609c9ull, 0x777b7069af251675ull, 0x71e5d4dfaa2abc6eull, 0xc8b122f344a36baeull, 0x8833b2eca680e2f5ull, 0x9fc224c04e9bd0a3ull }}, {{ 0xde998a8dd21c61daull, 0xaad26420d772e09aull, 0x72fa50bca5ab5c50ull, 0xd6eb5d80ae6234d0ull, 0x5204fd3e8108dd99ull, 0x3d956f8312162663ull }}, {{ 0xb1ff698a351bd280ull, 0xac37e9486a7cc60cull, 0x7dc7275e78b19b26ull, 0x6531a706cfd61024ull, 0x3431e4710a58a802ull, 0x67d65b1eb4dd7fe1ull }}, {{ 0xf3fa1f6613163900ull, 0xba2f1cd428dfbc7eull, 0xe9c789b0b6f00f82ull, 0xf3f086441e5ca16cull, 0x09f2ec6a67769017ull, 0x0e5f8f3310a6feccull }}, {{ 0x87c539fcbede39fbull, 0x45d7204998bd5cf5ull, 0x21cb60e725609b1bull, 0x87653ea92f9e4e41ull, 0x637d3c280aa1a0efull, 0x8fbb97fea685f3f8ull }}, {{ 0x4db443df74ae43d1ull, 0xba6742dff765a197ull, 0x51f1c90775c60f10ull, 0x49f4729bdc2f0e8bull, 0xe2e459906a50495bull, 0x9d53eff2813b87b3ull }}, {{ 0x090aa6ba8ecea62bull, 0x48089cbfa9f84fe9ull, 0x3371da4a99bc96a7ull, 0xe38c7a1699d69171ull, 0xdceb7fa42722dd90ull, 0x25475f790c534d06ull }}, {{ 0x5a6a834994127dafull, 0xd0561f7ca3b31f1aull, 0x027286ea015de288ull, 0xe37cc4e20261ae6cull, 0xa132fc69875ca7a8ull, 0x74c9baba7b410244ull }}, {{ 0x882920dfc8b8e8d3ull, 0x235d3ade64ff3707ull, 0x187945240daad958ull, 0xe2dfb0d417d0d038ull, 0x4bfddc1f499e8c98ull, 0x8fe14b48d08a16aeull }}, {{ 0x519b48bdd7391841ull, 0x61a44caff1f8264bull, 0xf4bcb36888ac7d71ull, 0xdcbce848ee282230ull, 0xf7ea9938e0317df8ull, 0x9eccf0d82564e2ceull }}, {{ 0x3010d76a683af28eull, 0xd06afedf73b17ef1ull, 0x8f5f021556bce66dull, 0x9f6112d94d9155e9ull, 0xaf29fc38c1eeebb8ull, 0x3401687175f0dc15ull }}, {{ 0xe0a86a28124d798bull, 0x242df4ba84eef56bull, 0x99b614d56361004aull, 0x39cabc7d07ad5b1full, 0xd7a3da3793553536ull, 0x080e146e9b6898d8ull }}, {{ 0xc6942590b706bf6bull, 0x69cb8f4931559636ull, 0x011cd055e1ca02e5ull, 0x41eb5ce24cc58f3cull, 0x6c66862bc154141eull, 0x508ccc521215f878ull }}, {{ 0xc1c977a726437a2dull, 0x21f398dbed57de23ull, 0x0b20235ad1e41cf6ull, 0x9331a0d6ffb79858ull, 0x3c013db58d48c92eull, 0x257ffb34b4dbb4b4ull }}, {{ 0x91deac877ea2c5beull, 0x5383f897456ead65ull, 0x6f41618c32e9219dull, 0xbff04865fd2bf370ull, 0x580c691784d7dbd1ull, 0x76ffd00f10950f0aull }}, {{ 0xb2b2bd4af25bb970ull, 0x4327b5e8b652c5f7ull, 0x588dcf79fd1b5025ull, 0x7f62d3fbe3b78264ull, 0x707c1aeb306e9631ull, 0xa5fe2096a5d29667ull }}, {{ 0xfafb64ed77953e5full, 0x9f8d1b171f3bbbacull, 0x758a1ac3e3112174ull, 0xf9dc47d6e52b17ebull, 0x64d90d2fe451ddeeull, 0x7bed45e27a39e00aull }}, {{ 0xcdd1f146abd46fb3ull, 0x3b830ee7385554c1ull, 0x97650ba6deab4e8eull, 0xc29ace64f3aeef32ull, 0xf07a83deeb32ab55ull, 0xd744bad8c642c067ull }}, {{ 0x0a336cc2b64c5cfbull, 0x531e950833554f92ull, 0xe9f27484b2b1118eull, 0x9a0c0ff184d557f9ull, 0x64c926b52ffab159ull, 0x68af4c77be9b840full }}, {{ 0x66023f9b1efba1caull, 0x3f31d25201551bb4ull, 0x23788d2efaeaaf8full, 0x04789f6f30556fc3ull, 0xefdb8313dfcaed80ull, 0x16d8fcad72132899ull }}, {{ 0xfc167c0f35d451e3ull, 0x77f237340d53150bull, 0x62b583d5cd2adb98ull, 0x2cb63a57e3565d9full, 0x5e931ec6bded4700ull, 0xe479dec674bf9603ull }}, {{ 0xd8e0d8981a4b32e3ull, 0xaf762808853ed277ull, 0xdb17265a03ac93f4ull, 0xbf1e476ee15fa839ull, 0xb1bf33c36b44c601ull, 0xecc2b3c08f7bdc21ull }}, {{ 0x78c875f106effcdaull, 0xda9d9055347438aeull, 0x8ee77f8424bdc78eull, 0x772eca54cdbc9242ull, 0xf17805a230afbc11ull, 0x3f9b05859ad69950ull }}, {{ 0xb7d49b6a455fe084ull, 0x8a27a3540c8a36d0ull, 0x950afb296f69cb94ull, 0xa7d3e750095db699ull, 0x6eb03855e6dd58aeull, 0x7c0e37380c61fd29ull }}, {{ 0x2e4e1226b5bec526ull, 0x658c61487d662427ull, 0xd26dcf9e5a21f3cdull, 0x8e4709205da921ffull, 0x52e2335b04a576d2ull, 0xd88e28307bd3e39eull }}, {{ 0xcf0cb5831973b37dull, 0xf77bccd4e5fd6987ull, 0x384a1c2f85538605ull, 0x8ec65b43a89b53feull, 0x3cd6018e2e76a439ull, 0x758d91e4d646e42full }}, {{ 0x167f171efe8502e1ull, 0xaad60050fbe61f4eull, 0x32e519db35433c3bull, 0x93bf90a4961147eeull, 0x605c0f8dd0a26a3full, 0x9787b2f05ec4e9d8ull }}, {{ 0xe0f6e735f1321ccbull, 0xac5c0329d6fd390cull, 0xfcf3029014a05a54ull, 0xc57ba66ddcaccf4dull, 0xc3989b8a2658267bull, 0xeb4cfd63b3b12273ull }}, {{ 0xc9a5081b6bf51fefull, 0xbb981fa265e43a80ull, 0xe17e19a0ce43874eull, 0xb6d4804a9ec0190bull, 0xa3f613657f7180d5ull, 0x3101e5e504eb5885ull }}, {{ 0xe072511237933f58ull, 0x53f13c57faea4907ull, 0xceed00480ea34913ull, 0x244d02ea3380fa76ull, 0x679cc1f6fa6f0859ull, 0xea12faf231317538ull }}, {{ 0xc4772ab62bc0796eull, 0x476c5b6fcd26da4eull, 0x154202d09260dac1ull, 0x6b021d260309c8a4ull, 0x0c1f93a5c856537bull, 0x24bdcd75ebee9434ull }}, {{ 0xaca7ab1db584be4full, 0xca3b925e03848713ull, 0xd4941c25b7c88b8cull, 0x2e15237c1e61d668ull, 0x793bc479d35f42d2ull, 0x6f6a069b3751ca08ull }}, {{ 0xbe8caf29172f6f12ull, 0xe653b7ac232d46c4ull, 0x4dc919792dd5737full, 0xccd362d92fd26018ull, 0xbc55acc241b89c35ull, 0x5a2442102931e454ull }}, {{ 0x717ed79ae7da56b7ull, 0xff452cb95fc4c3afull, 0x09dafebbca5682feull, 0x0041dc7bde37c0f3ull, 0x5b58bf9691361a1aull, 0x856a94a19bf2eb4full }}, {{ 0x6ef46c0d0e876321ull, 0xf8b3bf3dbdafa4daull, 0x628df355e7611df5ull, 0x02929cd6ae2d897eull, 0x91777be1ac1d0504ull, 0x3629ce50177d3119ull }}, {{ 0x558c38829149df4eull, 0xb705786968dc7088ull, 0xd98b815b09cb2b9bull, 0x19ba2062cdc75eefull, 0xaeaad6d0b9223228ull, 0x1da20f20eae3eaffull }}, {{ 0x577a3519ace2b910ull, 0x2636b41e189c6553ull, 0x7f730d8e61efb415ull, 0x014543dc09c9b55eull, 0xd2ac64273b55f591ull, 0x285497492ce72dfcull }}, {{ 0x6ac61300c0db3a9full, 0x7e23092cf61bf541ull, 0xfa7e878fd35d08d3ull, 0x0cb4a69861e115b0ull, 0x3abbe988515b97aaull, 0x934de8dbc107cbe0ull }}, {{ 0x2bbcbe0788904a31ull, 0xed5e5bc19d17948eull, 0xc8f14b9e41a25842ull, 0x7f0e81f3d2cad8e9ull, 0x4b571f532d93eca4ull, 0xc10b18958a4df6c2ull }}, {{ 0xb55f6c4b55a2e5efull, 0x45af959022ebcd8dull, 0xd96cf42e9057729dull, 0xf69113863bec7921ull, 0xf167393fc7c73e6cull, 0x8a6ef5d7670ba396ull }}, {{ 0x15ba3af1585cfb55ull, 0xb8dbd7a15d360789ull, 0x7e4189d1a36a7a24ull, 0xa1aac33e573cbb52ull, 0x6e083c7dcdc87041ull, 0x68559a6a067463e5ull }}, {{ 0xd9464d6d73a1d154ull, 0x38966c4da41c4b5aull, 0xee8f62306228c56full, 0x50aba06f685f5138ull, 0x4c525cea09d46290ull, 0x13580824408be6f6ull }}, {{ 0x7cbf064684522d4bull, 0x35e03b08691af18cull, 0x5199d5e3d597b658ull, 0x26b4445a13b92c39ull, 0xfb37a124624bd9a3ull, 0xc170516a8577059eull }}, {{ 0xdf763ec12b35c4edull, 0x1ac24e541b0d6f7cull, 0x30025ae657ed1f72ull, 0x830aab84c53bba3dull, 0xd02c4b6bd6f6805full, 0x8e632e2936a63835ull }}, {{ 0xba9e738bb019b13full, 0x0b970f490e865ae0ull, 0xe0178cff6f433a75ull, 0x1e6ab32fb4554663ull, 0x21baf23665a103bbull, 0x8fdfcd9c227e321aull }}, {{ 0x4a308374e100ec71ull, 0x73e698da913f8cc7ull, 0xc0eb81fa58a04892ull, 0x302affdd0b54bfe6ull, 0x514d761ff84a254full, 0x9ebe081958edf505ull }}, {{ 0xe5e52290ca093c6bull, 0x8701f889ac7b7fc8ull, 0x893313c77642d5b8ull, 0xe1adfea2714f7f03ull, 0x2d069d3fb2e57517ull, 0x336c50fd794b9235ull }}, {{ 0xfaf359a7e45c5c2cull, 0x4613b560bcd2fdd8ull, 0x5bfec5ca9e9c5935ull, 0xd0cbf2586d1af623ull, 0xc242247cfcf692eeull, 0x023b29e6bcf3b613ull }}, {{ 0xcd81808eeb9b99bcull, 0xbcc515c7603dea79ull, 0x97f3b9ea321b7c14ull, 0x27f77774430d9d61ull, 0x96956ce1e1a1bd54ull, 0x164fa30361851cc5ull }}, {{ 0x070f059534140156ull, 0x5fb2d9c9c26b28c2ull, 0xef854325f512d8cfull, 0x8faaaa8a9e8825cfull, 0xe1d640d2d0516549ull, 0xdf1c5e21cf331fb7ull }}, {{ 0x469637d408c80d57ull, 0xbcfc81e1982f9794ull, 0x5b349f7b92bc7819ull, 0x9caaa96a31517a1full, 0xd25e883c232df4dfull, 0xb71bad5217ff3d2eull }}, {{ 0xc1de2e4857d08567ull, 0x61dd12cff1dbebcaull, 0x900e3ad3bb5cb101ull, 0x1eaa9e25ed2ec539ull, 0x37b152595fcb90bcull, 0x2714c534eff863d4ull }}, {{ 0x92adced36e253603ull, 0xd2a2bc1f729735ebull, 0xa08e4c45519eea0dull, 0x32aa2d7b43d3b43full, 0x2ced377dbdf3a759ull, 0x86cfb4115fb3e64aull }}, {{ 0xbaca14424d741c1full, 0x3a5b593a79e81b33ull, 0x458efab53035248aull, 0xfaa5c6d0a6450a7cull, 0xc1442ae96b84897bull, 0x441d08adbd06fee5ull }}, {{ 0x4be4ca9706891936ull, 0x47917c48c3111005ull, 0xb795cb13e2136d66ull, 0xca79c4267eb268daull, 0x8ca9ad1e332d5ed7ull, 0xa92256c96245f4f9ull }}, {{ 0xf6efe9e6415afc20ull, 0xcbaedad79eaaa034ull, 0x2bd9eec6d4c245feull, 0xe8c1a980f2f8188bull, 0x7ea0c32dffc5b46dull, 0x9b5763ddd6bb91bfull }}, {{ 0xa55f22fe8d8dd93cull, 0xf4d48c6c32aa4211ull, 0xb68353c44f96bbf3ull, 0x17909f097db0f56full, 0xf2479fcbfdb90c4bull, 0x1169e6aa6353b17aull }}, {{ 0x75b75df1878a7c5cull, 0x904d7c39faa694b0ull, 0x212145ab1be35787ull, 0xeba6365ee8e9965dull, 0x76cc3df7e93a7aeeull, 0xae2302a7e144eecdull }}, {{ 0x9929ab6f4b68db95ull, 0xa306da43ca81cee4ull, 0x4b4cb8af16e16b4bull, 0x347e1fb5191fdfa3ull, 0xa3fa6baf1c48cd55ull, 0xcd5e1a8eccb15406ull }}, {{ 0xfba0b258f21893d1ull, 0x5e4486a5e91214edull, 0xf0ff36d6e4ce30f4ull, 0x0ced3d12fb3ebc60ull, 0x67c834d71ad80554ull, 0x05ad0993feed4842ull }}, {{ 0xd446f77974f5c62eull, 0xaead427b1ab4d14bull, 0x69f82464f00de98bull, 0x814462bdd0735bc9ull, 0x0dd210670c703548ull, 0x38c25fc7f544d298ull }}, {{ 0x4ac5aabe9199bdcfull, 0xd2c498cf0b102cf6ull, 0x23b16bf1608b1f74ull, 0x0cabdb6a248195deull, 0x8a34a4067c6214d5ull, 0x3797bdcf94b039f0ull }}, {{ 0xebb8ab71b0016a18ull, 0x3badf8166ea1c19eull, 0x64ee376dc56f3a90ull, 0x7eb692256d0fdaadull, 0x660e6840dbd4d052ull, 0x2bed6a1bcee24365ull }}, {{ 0x3536b270e00e24edull, 0x54cbb0e052519035ull, 0xf14e2a49b65849a2ull, 0xf321b576429e8ac5ull, 0xfc90128896502338ull, 0xb746251614d6a1f5ull }}, {{ 0x1422f868c08d7141ull, 0x4ff4e8c3372fa214ull, 0x6d0da6e11f72e057ull, 0x7f51169e9a316bbbull, 0xdda0b955df216039ull, 0x28bd72dcd062539bull }}, {{ 0xc95db41785866c86ull, 0x1f9117a027dc54c8ull, 0x428884cb3a7cc369ull, 0xf92ae23205ee3552ull, 0xa8473d5ab74dc23eull, 0x97667ca023d74416ull }}, {{ 0xdda908eb37403d41ull, 0x3baaec418e9b4fd7ull, 0x99552ff048dfa21bull, 0xbbacd5f43b4e1536ull, 0x92c8658b29099675ull, 0xea00de416668a8e2ull }}, {{ 0xa89a593028826488ull, 0x54ad3a8f92111e6eull, 0xfd53df62d8bc5510ull, 0x54c05b8a510cd421ull, 0xbbd3f76f9a5fe099ull, 0x2408ae8e001698d9ull }}, {{ 0x96077be19517ed51ull, 0x4ec4499bb4ab3052ull, 0xe546b9dc775b52a3ull, 0x4f8393672a804953ull, 0x5647aa5c07bec5fdull, 0x6856d18c00e1f881ull }}, {{ 0xdc4ad6cfd2ef452aull, 0x13aae0150eafe339ull, 0xf4c3429ca9913a61ull, 0x1b23c207a902dd46ull, 0x5ecca7984d73bbe5ull, 0x13642f7808d3b50dull }}, {{ 0x9aec641e3d58b3a8ull, 0xc4acc0d292dee042ull, 0x8fa09a1e9fac47caull, 0x0f65944c9a1ca4c5ull, 0xb3fe8bf3068556f3ull, 0xc1e9dab058451285ull }}, {{ 0x0d3be92e65770490ull, 0xaebf8839bcb4c29aull, 0x9c4605323cbacdebull, 0x99f7cafe051e6fb7ull, 0x07f1777e4135657eull, 0x93228ae372b2b939ull }}, {{ 0x84571bcff6a62d9cull, 0xd37b52415f0f9a04ull, 0x1abc33f65f4c0b34ull, 0x03adedec33305d2cull, 0x4f6eaaee8c15f6f2ull, 0xbf596ce27afb3c3aull }}, {{ 0x2b67161fa27dc819ull, 0x42d1368db69c042dull, 0x0b5a079fb8f87010ull, 0x24cb4b39ffe3a3b9ull, 0x1a52ad5178dba574ull, 0x797e40d8cdd05a47ull }}, {{ 0xb206dd3c58e9d0fbull, 0x9c2c2189221829c3ull, 0x71844c3d39b460a2ull, 0x6ff0f043fee4653aull, 0x073ac52eb8947689ull, 0xbeee88780a2386c7ull }}, {{ 0xf444a45b792229d2ull, 0x19b94f5b54f1a1a4ull, 0x6f2afa64410bc65aull, 0x5f6962a7f4ebf448ull, 0x484bb3d335cca15eull, 0x755154b0656343c6ull }}, {{ 0x8aae6b92bb55a236ull, 0x013d199151705071ull, 0x57adc7ea8a75bf85ull, 0xba1dda8f91378ad4ull, 0xd2f5064019fe4dafull, 0x952d4ee3f5e0a5beull }}, {{ 0x6ad033bb51585618ull, 0x0c62ffad2e63246full, 0x6cc9cf2968997b32ull, 0x452a899bac2b6c4bull, 0x3d923e8103ef08ddull, 0xd3c514e79ac67974ull }}, {{ 0x2c2205512d735cf1ull, 0x7bddfcc3cfdf6c5aull, 0x3fe2179e15fecff4ull, 0xb3a96014b9b23af2ull, 0x67b6710a275658a4ull, 0x45b2d10c0bc0be8aull }}, {{ 0xb954352bc681a16cull, 0xd6abdfa61eba3b85ull, 0x7ed4ec2cdbf41f8cull, 0x049dc0cf40f64d76ull, 0x0d206a65895f766full, 0xb8fc2a7875877168ull }}, {{ 0x3d4a13b5c1104e39ull, 0x62b6bc7d33465339ull, 0xf45139c097893b80ull, 0x2e298818899f06a0ull, 0x834427f75dbaa056ull, 0x39d9a8b4974a6e10ull }}, {{ 0x64e4c5198aa30e36ull, 0xdb235ce400bf403cull, 0x8b2c4185eb5c5303ull, 0xcd9f50f560364249ull, 0x20a98fa9a94a435dull, 0x4280970de8e84ca5ull }}, {{ 0xf0efb2ff6a5e8e1full, 0x8f61a0e80778825bull, 0x6fba8f3b319b3e26ull, 0x08392995c21e96dfull, 0x469f9ca09ce6a1aaull, 0x9905e68b1912fe73ull }}, {{ 0x695cfdfa27b18d35ull, 0x99d049104ab51797ull, 0x5d49984ff0106d81ull, 0x523b9fd99531e4baull, 0xc23c1e46210250a4ull, 0xfa3b016efabdf080ull }}, {{ 0x1da1ebc58cef840dull, 0x0222daa2eb12ebeaull, 0xa4dff31f60a44710ull, 0x36543e7fd3f2ef47ull, 0x96592ebd4a17266bull, 0xc64e0e55cb6b6507ull }}, {{ 0x285335b7815b2882ull, 0x155c8a5d2ebd3725ull, 0x70bf7f39c66ac6a0ull, 0x1f4a70fe477d58ccull, 0xdf7bd364e4e78030ull, 0xbf0c8f59f231f24bull }}, {{ 0x9340192b0d8f9518ull, 0xd59d67a3d3642773ull, 0x677af841c02bc240ull, 0x38e869eecae577fcull, 0xbad641f0f10b01e1ull, 0x767d998375f376f6ull }}, {{ 0xc080fbae879bd2ecull, 0x58260c6641e98a83ull, 0x0acdb29181b59688ull, 0x39142353ecf6afdcull, 0x4c5e93696a6e12ccull, 0xa0e7ff229b82a5a3ull }}, {{ 0x8509d4d14c163d39ull, 0x717c7bfe931f6925ull, 0x6c08f9af1117e153ull, 0x3ac9614741a2de98ull, 0xfbb1c21e284cbbfaull, 0x490ff75a131a7860ull }}, {{ 0x3262502cf8de6438ull, 0x6edcd7f1bf3a1b77ull, 0x3859c0d6aaeecd42ull, 0x4bddccc8905cb1f4ull, 0xd4f1952d92ff57c6ull, 0xda9fa984bf08b3c9ull }}, {{ 0xf7d721c1b8afea30ull, 0x54a06f71784512a7ull, 0x33818862ad540498ull, 0xf6a9ffd5a39ef38aull, 0x516fd3c7bdf96dbeull, 0x8a3c9f2f765705e2ull }}, {{ 0xae67519136df25dbull, 0x4e445a6eb2b2ba8full, 0x030f53dac5482df3ull, 0xa2a3fe5864358366ull, 0x2e5e45cd6bbe4975ull, 0x665e37da9f663ad7ull }}, {{ 0xd0092fac24b77a8eull, 0x0eab8852fafb499cull, 0x1e99468bb4d1cb81ull, 0x5a67ef73ea1721fcull, 0xcfaeba06356ede98ull, 0xffae2e8a39fe4c67ull }}, {{ 0x205bdcb96f2ac98cull, 0x92b3533dcdd0e020ull, 0x31fcc1751031f30aull, 0x880f5a8724e753d9ull, 0x1cd3443e1654b1f3ull, 0xfccdd16643eefc0eull }}, {{ 0x43969f3e57abdf7aull, 0xbb01406a0a28c141ull, 0xf3df8e92a1f37e69ull, 0x509989477109467bull, 0x2040aa6cdf4ef383ull, 0xe00a2dfea755d88dull }}, {{ 0xa3e2386f6cb6bac7ull, 0x4e0c842465978c8cull, 0x86bb91ba5382f021ull, 0x25ff5cca6a5cc0d7ull, 0x4286a840b9158321ull, 0xc065cbf2895a7583ull }}, {{ 0x66d6345a3f234bc7ull, 0x0c7d296bf7eb7d7eull, 0x4353b147431d614dull, 0x7bf99fe8279f886bull, 0x994292873ad71f4bull, 0x83f9f7795d889720ull }}, {{ 0x045e0b867760f5c2ull, 0x7ce39e37af32e6f0ull, 0xa144ecc89f25cd02ull, 0xd7c03f118c3b5430ull, 0xfc99b9484c6738f2ull, 0x27c3aabda755e745ull }}, {{ 0x2bac7340a9c99998ull, 0xe0e42e2cd7fd0560ull, 0x4cb13fd6377a0218ull, 0x6d8276af7a5149e6ull, 0xde013cd2fc08397cull, 0x8da4ab68895b08bbull }}, {{ 0xb4bc8086a1dffff0ull, 0xc8e9cdc06fe235c1ull, 0xfeec7e5e2ac414f8ull, 0x4718a2dac72ce2feull, 0xac0c603dd8523edcull, 0x886eb2155d8e5756ull }}, {{ 0x0f5d054252bfff5eull, 0xd92209845ed61991ull, 0xf53cefadaba8d1b7ull, 0xc6f65c8bc7c0ddf5ull, 0xb87bc26a7336749aull, 0x5452f4d5a78f6962ull }}, {{ 0x99a234973b7ff9aeull, 0x7b545f2bb45cffaaull, 0x94615cc8b498312eull, 0xc59f9d75cd88ab9bull, 0x34d5982880208e0bull, 0x4b3d90588b9a1ddbull }}, {{ 0x00560de852ffc0d0ull, 0xd14bb7b50ba1fcaaull, 0xcbcd9fd70df1ebd0ull, 0xb83c269a0756b413ull, 0x1057f19501458c75ull, 0xf067a37574052a90ull }}, {{ 0x035c8b133dfd881dull, 0x2cf52d127453dea4ull, 0xf6083e668b733628ull, 0x32598204496308c5ull, 0xa36f6fd20cb77c99ull, 0x640c62968833a9a0ull }}, {{ 0x219d6ec06be7511dull, 0xc193c2b88b46b268ull, 0x9c52700172801d91ull, 0xf77f142addde57bbull, 0x625a5e347f2addfbull, 0xe87bd9e15204a046ull }}, {{ 0x5026538437092b26ull, 0x8fc59b3570c2f811ull, 0x1b38600e790127b1ull, 0xaaf6c9acaaaf6d54ull, 0xd787ae0cf7acabd7ull, 0x14d682cd342e42bfull }}, {{ 0x217f432a265baf7cull, 0x9db81016679db0adull, 0x1033c090ba0b8cefull, 0xada3e0beaada4549ull, 0x6b4ccc81acbeb66cull, 0xd0611c0409ce9b7eull }}, {{ 0x4ef89fa57f94dad7ull, 0x2930a0e00c28e6c3ull, 0xa20585a74473815cull, 0xc866c772ac86b4daull, 0x30fffd10bf73203eull, 0x23cb1828621212f0ull }}, {{ 0x15b63c76fbd08c67ull, 0x9be648c0799903a1ull, 0x54373888ac830d99ull, 0xd403ca7abd43108aull, 0xe9ffe2a77a7f4273ull, 0x65eef193d4b4bd61ull }}, {{ 0xd91e5ca5d6257c09ull, 0x16fed784bffa244aull, 0x4a283556bd1e8800ull, 0x4825e8cb649ea567ull, 0x23feda8ac8f89886ull, 0xfb556fc64f0f65d3ull }}, {{ 0x7b2f9e7a5d76d858ull, 0xe5f46b2f7fc56aecull, 0xe592156363315000ull, 0xd17b17f1ee327608ull, 0x67f4896bd9b5f53eull, 0xd1565dbf1699fa3full }}, {{ 0xcfdc30c7a6a47371ull, 0xfb8c2fdafdb62d3cull, 0xf7b4d5e1dfed2008ull, 0x2eceef734df89c58ull, 0x0f8d5e36811b9474ull, 0x2d5fa976e203c67aull }}, {{ 0x1e99e7cc826c8269ull, 0xd379de8de91dc460ull, 0xad105ad2bf434059ull, 0xd4155a810bb61b79ull, 0x9b85ae210b13cc89ull, 0xc5bc9ea4d425c0c4ull }}, {{ 0x32030dfd183d181dull, 0x42c2b18b1b29abc1ull, 0xc2a38c3b78a08382ull, 0x48d5890a751d12c0ull, 0x1338cd4a6ec5fd62ull, 0xb95e3270497987aeull }}, {{ 0xf41e8be2f262f123ull, 0x9b9aef6f0fa0b58bull, 0x9a637a52b6452316ull, 0xd8575a689322bb87ull, 0xc03804e853bbe5d6ull, 0x3dadf862debf4cccull }}, {{ 0x893176dd77dd6b5dull, 0x140d5a569c471777ull, 0x07e2c73b1eb35ee2ull, 0x73698815bf5b534cull, 0x823031134556fa64ull, 0x68cbb3dcb378ffffull }}, {{ 0x5beea4a6aea631a7ull, 0xc88587621ac6eaabull, 0x4edbc84f3301b4d4ull, 0x821f50d9799140f8ull, 0x15e1eac0b565c7ecull, 0x17f5069f02b9fffbull }}, {{ 0x97526e82d27df084ull, 0xd53749d50bc52ab1ull, 0x1495d317fe11104full, 0x1539287ebfac89b3ull, 0xdad32b8715f9cf3dull, 0xef9242361b43ffceull }}, {{ 0xe938511c38eb652aull, 0x5428e25275b3aaefull, 0xcdda3eefecaaa31eull, 0xd43b94f37cbd60feull, 0x8c3fb346dbc21862ull, 0x5bb6961d10a7fe14ull }}, {{ 0x1c332b1a3931f3a7ull, 0x4998d7389904ad5full, 0x0a86755f3eaa5f2full, 0x4a53d182df65c9f4ull, 0x7a7d00c49594f3dcull, 0x9521dd22a68feccdull }}, {{ 0x19ffaf063bf38489ull, 0xdff86835fa2ec5b7ull, 0x694095b872a7b7d8ull, 0xe7462f1cb9f9e388ull, 0xc8e207add7d1869aull, 0xd352a35a819f4006ull }}, {{ 0x03fcd63e57832d5dull, 0xbfb4121bc5d3b927ull, 0x1c85d9347a8d2e78ull, 0x08bdd71f43c2e354ull, 0xd8d44cca6e2f420dull, 0x413a618910388043ull }}, {{ 0x27e05e6f6b1fc59dull, 0x7d08b515ba453b86ull, 0x1d3a7c0cc983d0b7ull, 0x576a6738a59ce149ull, 0x784affe84dd89482ull, 0x8c47cf5aa23502a6ull }}, {{ 0x8ec3b05a2f3db827ull, 0xe25712d946b4533dull, 0x2448d87fdf26272aull, 0x6a2808367820ccdbull, 0xb2edff130a75cd17ull, 0x7ace198a56121a80ull }}, {{ 0x93a4e385d8693185ull, 0xd766bc7cc30b4067ull, 0x6ad874feb77d87acull, 0x25905220b148008full, 0xfd4bf6be689a02eaull, 0xcc0cff675cb50906ull }}, {{ 0xc470e33a741bef32ull, 0x6a035cdf9e70840bull, 0x2c7491f32ae74cc0ull, 0x77a33546ecd0059aull, 0xe4f7a37016041d25ull, 0xf881fa099f125a45ull }}, {{ 0xac68e048891757f6ull, 0x2421a0bc30652875ull, 0xbc8db37fad08ff84ull, 0xac6014c540203805ull, 0xf1ac6260dc292376ull, 0xb513c46036b786baull }}, {{ 0xbc18c2d55ae96f9aull, 0x69504759e3f39498ull, 0x5d8902fcc259fb29ull, 0xbbc0cfb481423039ull, 0x70bbd7c8999b62a2ull, 0x12c5abc2232b434dull }}, {{ 0x58f79c558d1e5c04ull, 0x1d22c982e783cdf7ull, 0xa75a1ddf9783cf9eull, 0x55881d0d0c95e23dull, 0x67566dd60011da5bull, 0xbbb8b5955fb0a106ull }}, {{ 0x79ac1b57832f982aull, 0x235bdf1d0b260ba9ull, 0x89852abbeb261c2dull, 0x575122827ddad668ull, 0x09604a5c00b28791ull, 0x553717d5bce64a40ull }}, {{ 0xc0b9116b1fdbf1a9ull, 0x6196b7226f7c749eull, 0x5f33ab572f7d19c3ull, 0x692b5918ea8c6015ull, 0x5dc2e79806f94badull, 0x5426ee5960fee680ull }}, {{ 0x873aae2f3e977097ull, 0xcfe327585adc8e33ull, 0xb804b167dae301a1ull, 0x1bb17af9297bc0d5ull, 0xa99d0bf045bcf4c6ull, 0x49854f7dc9f50103ull }}, {{ 0x484acdd871ea65e2ull, 0x1edf89738c9d8e03ull, 0x302eee0e8cde1052ull, 0x14eecdbb9ed58859ull, 0xa0227762b9618fbdull, 0xdf351ae9e3920a24ull }}, {{ 0xd2ec0a747327fad9ull, 0x34bb5e837e278c20ull, 0xe1d54c9180aca335ull, 0xd15409543457537bull, 0x4158a9db3dcf9d62ull, 0xb8130d22e3b4656eull }}, {{ 0x3d38688c7f8fcc75ull, 0x0f51b122ed8b7948ull, 0xd254fdaf06be6014ull, 0x2d485d4a0b6942d6ull, 0x8d76a2906a1c25dcull, 0x30be835ce50bf64eull }}, {{ 0x6434157cfb9dfc96ull, 0x9930eb5d4772bcd2ull, 0x3751e8d6436fc0c8ull, 0xc4d3a4e4721c9c64ull, 0x86a259a425197a99ull, 0xe77121a0f2779f11ull }}, {{ 0xea08d6e1d42bddd8ull, 0xfbe931a4ca7b6037ull, 0x2933185ea25d87d5ull, 0xb04470ec751e1beaull, 0x4257806972feca01ull, 0x0a6b504978ac36afull }}, {{ 0x245864d249b6aa72ull, 0xd71bf06fe8d1c22full, 0x9bfef3b257a74e5bull, 0xe2ac693c932d1725ull, 0x976b041e7df3e410ull, 0x683122deb6ba22d8ull }}, {{ 0x6b73f036e122a877ull, 0x6717645f183195d7ull, 0x17f584f76c890f96ull, 0xdabc1c5dbfc2e778ull, 0xea2e2930eb86e8a8ull, 0x11eb5cb323455c75ull }}, {{ 0x32876224cb5a94a4ull, 0x06e9ebb6f1efda6aull, 0xef9731aa3d5a9be0ull, 0x8b591ba97d9d0ab0ull, 0x25cd9be933451698ull, 0xb3319eff60b59c9bull }}, {{ 0xf949d56ff189ce6bull, 0x45233525735e8825ull, 0x5be7f0a6658a16c0ull, 0x717b149ee8226ae9ull, 0x7a08171c00b2e1f5ull, 0xfff035f9c7181e0full }}, {{ 0xbce2565f6f62102bull, 0xb360137681b1517bull, 0x970f667ff764e382ull, 0x6ecece3511582d1dull, 0xc450e71806fcd396ull, 0xff621bc1c6f12c9aull }}, {{ 0x60d75fba59d4a1aaull, 0x01c0c2a110ed2ed5ull, 0xe69a00ffa9f0e31bull, 0x54140e12ad71c327ull, 0xab2906f045e043e0ull, 0xf9d51591c56bbe0bull }}, {{ 0xc869bd47824e50a5ull, 0x11879a4aa943d455ull, 0x020409fca368df0eull, 0x48c88cbac6719f8full, 0xaf9a4562bac2a6c3ull, 0xc252d7b1b6356c74ull }}, {{ 0xd42164cb170f2672ull, 0xaf4c06ea9ca64b59ull, 0x142863de6218b68cull, 0xd7d57f4bc0703b96ull, 0xdc06b5db4b9a83a0ull, 0x973c6cf11e163c8eull }}, {{ 0x494defeee6978074ull, 0xd8f8452a1e7ef182ull, 0xc993e6afd4f7217eull, 0x6e56f8f5846253dcull, 0x98431a90f4092448ull, 0xe85c416b2cde5d94ull }}, {{ 0xdd0b5f5501eb0489ull, 0x79b2b3a530f56f16ull, 0xdfc702de51a74ef4ull, 0x4f65b9972bd7469full, 0xf29f09a9885b6ad4ull, 0x139a8e2fc0afa7cdull }}, {{ 0xa271b952132e2d59ull, 0xc0fb0473e99656e4ull, 0xbdc61caf3089158cull, 0x19f93fe7b668c23eull, 0x7a36609f53922c4bull, 0xc4098ddd86dc8e0bull }}, {{ 0x58713d34bfcdc577ull, 0x89ce2c871fdf64eeull, 0x69bd1ed7e55ad77full, 0x03bc7f0d20179673ull, 0xc61fc63943b5baefull, 0xa85f8aa7449d8c72ull }}, {{ 0x746c640f7e09b6a6ull, 0x620dbd473eb9f14full, 0x2163346ef58c6afbull, 0x255cf68340ebe082ull, 0xbd3dbe3ca5194d56ull, 0x93bb6a88ae277c7bull }}, {{ 0x8c3be89aec61227aull, 0xd48964c873436d1aull, 0x4de00c55977c2dd1ull, 0x75a1a1208936c515ull, 0x64696e5e72fd055dull, 0xc5522956cd8adcd5ull }}, {{ 0x7a57160d3bcb58c3ull, 0x4d5defd480a24309ull, 0x0ac07b57ead9ca32ull, 0x98504b455c23b2d5ull, 0xec1e4fb07de235a6ull, 0xb5359d64076ca055ull }}, {{ 0xc766dc8455f177a2ull, 0x05ab5e4d06569e5eull, 0x6b84d16f2c81e5f7ull, 0xf322f0b59964fc52ull, 0x392f1ce4ead61881ull, 0x141825e84a3e435bull }}, {{ 0xca049d2b5b6eac52ull, 0x38b1af023f622fb3ull, 0x33302e57bd12fba6ull, 0x7f5d6717fdf1db38ull, 0x3bd720f12c5cf513ull, 0xc8f17b12e66ea190ull }}, {{ 0xe42e23b19252bb30ull, 0x36f0d61679d5dd05ull, 0xffe1cf6d62bdd47eull, 0xf9a606efeb729031ull, 0x5667496bbba192c2ull, 0xd96ecebd00524fa2ull }}, {{ 0xe9cd64efb73b4fe1ull, 0x25685ce0c25aa23aull, 0xfed21a45db6a4ceeull, 0xc07c455f3279a1f3ull, 0x6008de35544fbb9dull, 0x7e54136203371c57ull }}, {{ 0x2205f15d28511ec6ull, 0x7613a0c7978a564dull, 0xf43506ba9227014dull, 0x84dab5b7f8c05387ull, 0xc058ae154b1d5429ull, 0xef48c1d420271b69ull }}, {{ 0x543b6da3932b33beull, 0x9cc447cbeb675f03ull, 0x8a124349b5860d06ull, 0x308b192fb783434full, 0x8376ccd4ef25499full, 0x58d7924941871221ull }}, {{ 0x4a524863bfb0056full, 0x1faacdf73209b621ull, 0x64b6a0e1173c8242ull, 0xe56efbdd2b20a11bull, 0x22a400515774e037ull, 0x786bb6dc8f46b54full }}, {{ 0xe736d3e57ce03657ull, 0x3cac0ba7f4611d4cull, 0xef2248cae85d1695ull, 0xf655d6a3af464b11ull, 0x5a68032d6a90c22eull, 0xb435249d98c31517ull }}, {{ 0x082446f6e0c21f63ull, 0x5eb8748f8bcb2501ull, 0x5756d7ed13a2e1d4ull, 0x9f5a6264d8beeeb3ull, 0x88101fc629a795d5ull, 0x0a136e27f79ed2e9ull }}, {{ 0x516ac5a4c79539ddull, 0xb3348d9b75ef720aull, 0x69646f42c45cd24bull, 0x3987d7f077755301ull, 0x50a13dbda08bda58ull, 0x64c24d8fac343d1full }}, {{ 0x2e2bb86fcbd442a1ull, 0x000d88129b5a7467ull, 0x1dec589baba036f5ull, 0x3f4e6f64aa953e0eull, 0x264c696845768772ull, 0xef97079cba0a6339ull }}, {{ 0xcdb5345df64a9a4cull, 0x008750ba11888c07ull, 0x2b3b7614b4422592ull, 0x791059eea9d46c8dull, 0x7efc1e12b6a14a76ull, 0x5be64c1f4467e03bull }}, {{ 0x09140bab9eea06f9ull, 0x05492744af55784eull, 0xb0529ccf0a9577b4ull, 0xbaa38352a24c3d83ull, 0xf5d92cbb224ce8a0ull, 0x96fef938ac0ec252ull }}, {{ 0x5ac874b4352445b8ull, 0x34db88aed956b30cull, 0xe33a201669d6ad08ull, 0x4a63213a56fa6724ull, 0x9a7bbf4f57011647ull, 0xe5f5bc36b893973dull }}, {{ 0x8bd48f0a136ab932ull, 0x109356d47d62fe7bull, 0xe04540e02262c252ull, 0xe7df4c4765c80770ull, 0x08d57919660adec8ull, 0xfb995a2335c3e868ull }}, {{ 0x764d9664c22b3bf3ull, 0xa5c1644ce5ddf0d3ull, 0xc2b488c157db9734ull, 0x0eb8fac9f9d04a68ull, 0x5856bafdfc6cb3d9ull, 0xd3fd856019a71410ull }}, {{ 0x9f07dfef95b05780ull, 0x798deb00faab6842ull, 0x9b0d578d6e93e80eull, 0x9339cbe3c222e817ull, 0x73634debdc3f067aull, 0x47e735c10086c8a3ull }}, {{ 0x364ebf5bd8e36afeull, 0xbf8b2e09cab2129aull, 0x0e856b8651c71090ull, 0xc041f6e5955d10ecull, 0x81e10b369a7640c9ull, 0xcf08198a0543d662ull }}, {{ 0x1f13799678e22debull, 0x7b6fcc61eaf4ba06ull, 0x9136333f31c6a5a7ull, 0x8293a4f7d5a2a938ull, 0x12ca7022089e87e1ull, 0x1650ff6434a65fd9ull }}, {{ 0x36c2bfe0b8d5cb31ull, 0xd25dfbd32d8f443dull, 0xac1e0077f1c2788aull, 0x19c471ae585a9c35ull, 0xbbe8615456314ecfull, 0xdf29f9ea0e7fbe7aull }}, {{ 0x239b7ec73859efe6ull, 0x37abd63fc798aa64ull, 0xb92c04af7198b56cull, 0x01ac70cf738a1a18ull, 0x5713cd4b5ded1417ull, 0xb7a3c32490fd70cbull }}, {{ 0x6412f3c833835ef7ull, 0x2cb65e7dcbf6a7e9ull, 0x3bb82eda6ff7163aull, 0x10bc681a836504f7ull, 0x66c604f1ab42c8e6ull, 0x2c659f6da9e667f1ull }}, {{ 0xe8bd85d20321b5a6ull, 0xbf1fb0e9f7a28f1dull, 0x5531d4885fa6de45ull, 0xa75c110921f231a8ull, 0x03bc3170b09bd8fcull, 0xbbf83a48a3000f6eull }}, {{ 0x17673a341f51187eull, 0x773ce923ac59972bull, 0x53f24d53bc84aeb9ull, 0x8998aa5b5375f093ull, 0x2559ee66e61679deull, 0x57b246d65e009a4cull }}, {{ 0xea084609392af4e8ull, 0xa8611b64bb7fe7aeull, 0x477705455d2ed33eull, 0x5ff6a791429b65c1ull, 0x75835004fce0c2b1ull, 0x6cf6c45fac0606f9ull }}, {{ 0x2452bc5c3bad9111ull, 0x93cb11ef52ff0cd5ull, 0xcaa634b5a3d44072ull, 0xbfa28bac9a11f98cull, 0x97212031e0c79aedull, 0x41a3abbcb83c45beull }}, {{ 0x6b3b5b9a54c7aaa7ull, 0xc5eeb3593df68053ull, 0xea7e0f18664a8479ull, 0x7c5974be04b3bf7full, 0xe74b41f2c7cc0d49ull, 0x9064b55f325ab971ull }}, {{ 0x305194074fccaa84ull, 0xbb53017c6ba10342ull, 0x28ec96f3fee92cc1ull, 0xdb7e8f6c2f057affull, 0x08f0937bcdf884deull, 0xa3ef15b7f78b3e73ull }}, {{ 0xe32fc8491dfea927ull, 0x513e0edc344a2095ull, 0x993de587f51bbf91ull, 0x92f19a39d636cdf7ull, 0x5965c2d60bb530b4ull, 0x6756d92fab70707eull }}, {{ 0xdfddd2db2bf29b87ull, 0x2c6c949a0ae545daull, 0xfc6af74f93157badull, 0xbd7006425e240babull, 0x7df99c5c7513e70dull, 0x09647bdcb26464efull }}, {{ 0xbeaa3c8fb77a1344ull, 0xbc3dce046cf4ba8cull, 0xdc2da91bbed6d4c3ull, 0x66603e97ad6874b7ull, 0xebc01b9c92c70689ull, 0x5decd69ef7ebf15aull }}, {{ 0x72a65d9d2ac4c0a8ull, 0x5a6a0c2c418f497full, 0x99c89b1574644fa5ull, 0xffc271ecc6148f2eull, 0x3581141dbbc6415dull, 0xab406235af376d8dull }}, {{ 0x7a7fa823abaf868dull, 0x882479ba8f98defaull, 0x01d60ed68beb1c75ull, 0xfd98733fbccd97d2ull, 0x170ac92955be8dabull, 0xb083d618d82a4784ull }}, {{ 0xc8fc9164b4db4182ull, 0x516cc1499bf8b5c8ull, 0x125c9461772f1c97ull, 0xe7f4807d6007ee34ull, 0xe66bdb9d597188b7ull, 0xe5265cf871a6cb28ull }}, {{ 0xd9ddadef10908f16ull, 0x2e3f8ce017b719d7ull, 0xb79dcbcea7d71de9ull, 0x0f8d04e5c04f4e08ull, 0x003694257e6f572full, 0xf37fa1b47083ef99ull }}, {{ 0x82a8cb56a5a596ddull, 0xce7b80c0ed27026eull, 0x2c29f6128e672b1bull, 0x9b8230f983190c57ull, 0x0221c976f05967d6ull, 0x82fc510c65275bfaull }}, {{ 0x1a97f1627877e4a6ull, 0x10d3078943861851ull, 0xb9a39cb99007af16ull, 0x1315e9bf1efa7b67ull, 0x1551dea5637e0e62ull, 0x1ddb2a7bf38997c4ull }}, {{ 0x09ef6dd8b4aeee7aull, 0xa83e4b5ca33cf32bull, 0x40641f3fa04cd6dcull, 0xbedb217735c8d20dull, 0xd532b275e2ec8fd4ull, 0x2a8fa8d7835feda8ull }}, {{ 0x635a4a770ed550c6ull, 0x926ef19e60617faeull, 0x83e9387c4300649eull, 0x748f4ea819d83484ull, 0x53faf89add3d9e4full, 0xa99c986b21bf4898ull }}, {{ 0xe186e8a6945527baull, 0xb855702fc3cefccfull, 0x271c34da9e03ee31ull, 0x8d99129102720d2dull, 0x47cdb60ca4682f1aull, 0xa01df42f5178d5f3ull }}, {{ 0xcf451681cb538d43ull, 0x335661dda615e01eull, 0x871a108a2c274df1ull, 0x87fab9aa187483c3ull, 0xce091c7e6c11d709ull, 0x412b89d92eb85b80ull }}, {{ 0x18b2e111f143849aull, 0x015fd2a87cdac134ull, 0x4704a565b9890b6cull, 0x4fcb40a4f48d25a3ull, 0x0c5b1cf038b2665full, 0x8bb3627bd3339308ull }}, {{ 0xf6fccab36ca32e08ull, 0x0dbe3a94e08b8c08ull, 0xc62e75f93f5a7238ull, 0x1df086718d837860ull, 0x7b8f216236f7ffb9ull, 0x7501d8d64003be50ull }}, {{ 0xa5dfeb023e5fcc4cull, 0x896e49d0c5737859ull, 0xbdd09bbc79887630ull, 0x2b65406f8722b3c7ull, 0xd3974dd625affd3bull, 0x9212785e80256f24ull }}, {{ 0x7abf2e166fbdfaf7ull, 0x5e4ee227b682b380ull, 0x6a26155cbf549de5ull, 0xb1f4845b475b05cdull, 0x43e90a5d78dfe44full, 0xb4b8b3b101765770ull }}, {{ 0xcb77cce05d6bcda9ull, 0xaf14d58d211b0304ull, 0x257cd59f794e2af5ull, 0xf38d2b90c98e3a06ull, 0xa71a67a6b8beeb1cull, 0x0f3704ea0e9f6a62ull }}, {{ 0xf2ae00c3a636089aull, 0xd6d057834b0e1e2full, 0x76e0583abd0dad98ull, 0x8383b3a7df8e443dull, 0x87080c8337752f21ull, 0x98263124923a27daull }}, {{ 0x7acc07a47e1c5600ull, 0x64236b20ee8d2ddfull, 0xa4c3724b6288c7f8ull, 0x2325048ebb8eaa66ull, 0x46507d202a93d74full, 0xf17deb6db6458e89ull }}, {{ 0xcbf84c6ced1b5c02ull, 0xe9622f495183cabaull, 0x6fa276f1d957cfb3ull, 0x5f722d935392a802ull, 0xbf24e341a9c66917ull, 0x6eeb32491eb7915cull }}, {{ 0xf7b2fc4143119813ull, 0x1dd5d8dd2f25eb4bull, 0x5c58a5727d6e1d07ull, 0xba75c7c143ba9018ull, 0x7770e090a1c01ae9ull, 0x552ff6db332bad9full }}, {{ 0xacfdda8c9eaff0bcull, 0x2a5a78a3d77b30f7ull, 0x9b767678e64d2247ull, 0x4899cd8ca549a0f3ull, 0xaa68c5a651810d21ull, 0x53dfa48fffb4c83aull }}, {{ 0xc1ea897e32df6754ull, 0xa788b6666acfe9acull, 0x12a0a0b8ff0356c7ull, 0xd602077e74e04984ull, 0xa817b87f2f0a834cull, 0x46bc6d9ffd0fd24aull }}, {{ 0x93295eedfcba094bull, 0x8b5720002c1f20bfull, 0xba464739f62163ccull, 0x5c144af090c2df28ull, 0x90ed34f7d6692100ull, 0xc35c483fe29e36eaull }}, {{ 0xbf9db54bdf445cf0ull, 0x71674001b937477bull, 0x46bec8439d4de5fdull, 0x98caed65a79cb797ull, 0xa94411ae601b4a03ull, 0xa19ad27eda2e2529ull }}, {{ 0x7c2914f6b8aba164ull, 0x6e0880113c28cad5ull, 0xc373d2a4250afbe6ull, 0xf7ed45f88c1f2be8ull, 0x9ca8b0cfc110e423ull, 0x500c38f485cd73a0ull }}, {{ 0xd99ad1a336b44de6ull, 0x4c5500ac5997ec56ull, 0xa2863a69726dd700ull, 0xaf44bbb57937b717ull, 0x1e96e81d8aa8e967ull, 0x207a398d3a068446ull }}, {{ 0x800c3060230b0afbull, 0xfb5206bb7fef3b64ull, 0x593e481e784a6602ull, 0xd8af5516bc2d26ecull, 0x31e511276a991e0cull, 0x44c63f8444412abdull }}, {{ 0x0079e3c15e6e6dccull, 0xd1344352ff5851edull, 0x7c6ed130b2e7fc1dull, 0x76d952e359c3853bull, 0xf2f2ab8a29fb2c80ull, 0xafbe7b2aaa8bab63ull }}, {{ 0x04c2e58db05049f5ull, 0x2c0aa13df9733342ull, 0xdc542be6fd0fd92aull, 0xa47d3ce181a33452ull, 0x7d7ab365a3cfbd04ull, 0xdd70cfaaa974b1e7ull }}, {{ 0x2f9cf788e322e38eull, 0xb86a4c6bbe800094ull, 0x9b49b705e29e7ba5ull, 0x6ce460cf10600b3cull, 0xe6cb01f8661d622eull, 0xa6681caa9e8ef30aull }}, {{ 0xdc21ab58df5ce38full, 0x3426fc35710005c9ull, 0x10e1263ada30d479ull, 0x40ebc816a3c0705eull, 0x03ee13b3fd25d5d0ull, 0x80111eaa31957e6dull }}, {{ 0x9950b178b9a0e398ull, 0x0985da166a0039e2ull, 0xa8cb7e4c85e84cbcull, 0x8935d0e2658463acull, 0x274cc507e37a5a22ull, 0x00ab32a5efd6f042ull }}, {{ 0xfd26eeb74048e3edull, 0x5f3a84e0240242d9ull, 0x97f2eefd3b12ff58ull, 0x5c1a28d7f72be4beull, 0x88ffb24ee2c78559ull, 0x06affa7b5e656295ull }}, {{ 0xe385532882d8e745ull, 0xb84930c168169c83ull, 0xef7d55e44ebdf973ull, 0x9905986fa7b6ef71ull, 0x59fcf714dbcb357dull, 0x42dfc8d1aff5d9d7ull }}, {{ 0xe3353f951c7908b4ull, 0x32dbe78e10e21d26ull, 0x5ae55aeb136bbe85ull, 0xfa37f45c8d255a73ull, 0x83e1a6d095f016e7ull, 0x9cbdd830df9a8269ull }}, {{ 0xe0147bd31cba5706ull, 0xfc970b8ca8d52384ull, 0x8cf58d2ec2357133ull, 0xc62f8b9d83758881ull, 0x26d08425db60e50full, 0x1f6a71e8bc09181full }}, {{ 0xc0ccd63f1f476638ull, 0xdde6737e98536330ull, 0x819783d396166c07ull, 0xbddb74272297550full, 0x8425297a91c8f29dull, 0x3a287317585af137ull }}, {{ 0x88005e7738c9fe2full, 0xab0082f1f341dfe7ull, 0x0feb2643dce0384eull, 0x6a92898759e9529bull, 0x29739ec9b1d97a29ull, 0x45947ee9738d6c2bull }}, {{ 0x5003b0a837e3edd6ull, 0xae051d738092bf0bull, 0x9f2f7ea6a0c23312ull, 0x29b95f49831d3a0eull, 0x9e8433e0f27ec59eull, 0xb7ccf51e838639afull }}, {{ 0x2024e6922ee74a5aull, 0xcc33268305bb7671ull, 0x37daf2824795febaull, 0xa13db8df1f244492ull, 0x312a06c978f3b82dull, 0x2e019331233e40dcull }}, {{ 0x417101b5d508e789ull, 0xf9ff811e3952a06bull, 0x2e8d7916cbdbf34bull, 0x4c6938b7376aadb6ull, 0xeba443deb98531c8ull, 0xcc0fbfeb606e8899ull }}, {{ 0x8e6a111a52590b55ull, 0xc3fb0b2e3d3a4430ull, 0xd186bae3f69780f7ull, 0xfc1c37282a2ac91dull, 0x346aa6b33f33f1d2ull, 0xf89d7f31c4515603ull }}, {{ 0x9024ab07377a7156ull, 0xa7ce6fce6446a9e5ull, 0x2f434ce7a1eb09adull, 0xd91a2791a5abdb2aull, 0x0c2a83007807723dull, 0xb626f7f1ab2d5c20ull }}, {{ 0xa16eae482ac86d5cull, 0x8e105e0feac2a2f7ull, 0xd8a1010c532e60c8ull, 0x7b058bb078b68fa5ull, 0x79a91e04b04a766aull, 0x1d85af70afc59940ull }}, {{ 0x4e52ced1abd4459aull, 0x8ca3ac9f2b9a5dacull, 0x764a0a7b3fcfc7d5ull, 0xce3774e4b7219c7aull, 0xc09b2c2ee2e8a028ull, 0x2738da66ddb7fc84ull }}, {{ 0x0f3c1430b64ab807ull, 0x7e64be37b407a8bbull, 0x9ee468d07e1dce57ull, 0x0e2a90ef27501cc8ull, 0x860fb9d4dd164198ull, 0x88388804a92fdd2full }}, {{ 0x9858c9e71eeb3043ull, 0xefef6e2d084c974eull, 0x34ec1824ed2a0f6aull, 0x8da9a95789211fd6ull, 0x3c9d4250a2de8ff0ull, 0x5235502e9bdea3dbull }}, {{ 0xf377e307352fe29dull, 0x5f5a4dc252fde911ull, 0x1138f17143a49a2dull, 0x88a09d6b5b4b3e5eull, 0x5e2497265cb19f65ull, 0x361521d216b26690ull }}, {{ 0x82aede4813deda1eull, 0xb98709973deb1ab3ull, 0xac396e6ca46e05c5ull, 0x5646263190f06facull, 0xad6de77f9ef039f7ull, 0x1cd35234e2f801a3ull }}, {{ 0x1ad4aed0c6b4852full, 0x3f465fe86b2f0b03ull, 0xba3e503e6c4c39b9ull, 0x5ebd7defa9645cbeull, 0xc64b0afc356243a9ull, 0x20413610ddb01064ull }}, {{ 0x0c4ed427c30d33d6ull, 0x78bfbf142fd66e1full, 0x466f22703afa413cull, 0xb366eb5c9deb9f73ull, 0xbeee6dda15d6a49dull, 0x428c1ca8a8e0a3efull }}, {{ 0x7b14498d9e84065cull, 0xb77d76c9de604d36ull, 0xc05758624dc68c5cull, 0x0205319e2b343a80ull, 0x75504a84da626e29ull, 0x99791e9698c6675dull }}, {{ 0xcecadf8831283f95ull, 0x2ae6a3e2afc30420ull, 0x836973d709c17b9full, 0x1433f02db00a4907ull, 0x9522e93087d84d9aull, 0xfebb31e1f7c009a6ull }}, {{ 0x13ecbb51eb927bd4ull, 0xad0266dadd9e2948ull, 0x221e8666618ed437ull, 0xca0761c8e066da4bull, 0xd35d1be54e730804ull, 0xf34ff2d3ad806081ull }}, {{ 0xc73f513333b8d64bull, 0xc218048ca82d9cd0ull, 0x55313fffcf944a2cull, 0xe449d1d8c40486efull, 0x41a316f5107e502full, 0x811f7c44c703c512ull }}, {{ 0xc8792c0005385eebull, 0x94f02d7e91c82027ull, 0x53ec7ffe1bcae5bfull, 0xeae23277a82d4559ull, 0x905ee592a4ef21deull, 0x0b3adaafc625b2b6ull }}, {{ 0xd4bbb8003433b529ull, 0xd161c6f1b1d1418dull, 0x473cffed15ecf97bull, 0x2cd5f8ac91c4b57dull, 0xa3b4f7ba715752b5ull, 0x704c8addbd78fb21ull }}, {{ 0x4f5530020a05139bull, 0x2dd1c570f22c8f8aull, 0xc861ff42db41bed6ull, 0xc05bb6bdb1af16e4ull, 0x6511ad486d693b13ull, 0x62fd6ca966b9cf50ull }}, {{ 0x1953e0146432c411ull, 0xca31b66975bd9b67ull, 0xd3d3f89c9091745dull, 0x83952368f0d6e4efull, 0xf2b0c4d4461c4ec5ull, 0xdde63e9e03421923ull }}, {{ 0xfd46c0cbe9fba8a8ull, 0xe5f1201e99681206ull, 0x4647b61da5ae8ba9ull, 0x23d362196864f15eull, 0x7ae7b04abd1b13b7ull, 0xaafe722c2094fb67ull }}, {{ 0xe4c387f723d4968eull, 0xfb6b4131fe10b445ull, 0xbecd1d2878d174a2ull, 0x6641d4fe13f16daeull, 0xcd0ce2eb630ec527ull, 0xadf075b945d1d20aull }}, {{ 0xefa34fa7664de18dull, 0xd2308bf3eca70abaull, 0x74032394b82e8e5dull, 0xfe9251ecc76e48d3ull, 0x0280dd31de93b389ull, 0xcb64993cba32346cull }}, {{ 0x5c611c89ff0acf84ull, 0x35e577873e866b4dull, 0x881f63cf31d18faaull, 0xf1b7333fca4ed842ull, 0x1908a3f2b1c50363ull, 0xf1edfc5f45f60c38ull }}, {{ 0x9bcb1d63f66c1b28ull, 0x1af6ab4871403105ull, 0x5139e617f22f9ca6ull, 0x7128007de7147299ull, 0xfa56677af1b221e7ull, 0x734bdbb8bb9c7a30ull }}, {{ 0x15ef25e7a0390f92ull, 0x0da2b0d46c81ea38ull, 0x2c42fcef75dc1e7dull, 0x6b9004eb06cc79fdull, 0xc7600acd70f5530aull, 0x80f69537541cc5e9ull }}, {{ 0xdb577b0c423a9bb8ull, 0x885ae84c3d132630ull, 0xba9de15a9a9930e2ull, 0x33a0312e43fcc3e3ull, 0xc9c06c0669953e68ull, 0x09a1d429491fbb21ull }}, {{ 0x916ace7a964a1534ull, 0x538d12fa62bf7de8ull, 0x4a2acd8a09fbe8d9ull, 0x0441ebcea7dfa6e5ull, 0xe18438401fd47012ull, 0x6052499cdb3d4f51ull }}, {{ 0xae2c10c9dee4d407ull, 0x4382bdc7db7aeb15ull, 0xe5ac076463d7187dull, 0x2a9336128ebc84f4ull, 0xcf2a32813e4c60b4ull, 0xc336e02090651932ull }}, {{ 0xcdb8a7e2b4f04846ull, 0xa31b69ce92cd2ed8ull, 0xf8b849ebe666f4e4ull, 0xa9c01cb9935d3190ull, 0x17a5f90c6efbc709ull, 0xa024c145a3f2fbfcull }}, {{ 0x09368edb1162d2b8ull, 0x5f122211bc03d478ull, 0xb732e337000590eeull, 0xa1811f3fc1a3efa9ull, 0xec7bba7c55d5c660ull, 0x416f8cb8677dd7d8ull }}, {{ 0x5c21948eaddc3b30ull, 0xb6b554b158264cb0ull, 0x27fce0260037a94full, 0x4f0b387d90675ca1ull, 0x3cd548db5a59bfc6ull, 0x8e5b7f340aea6e79ull }}, {{ 0x994fcd92ca9a4fe4ull, 0x23154eed717efee3ull, 0x8fe0c17c022c9d1dull, 0x167034e7a4099e4bull, 0x6054d89187817dbfull, 0x8f92f8086d2850bcull }}, {{ 0xfd1e07bbea071ee4ull, 0x5ed515466ef5f4e3ull, 0x9ec78ed815be2323ull, 0xe062110c68602ef3ull, 0xc35075af4b0ee976ull, 0x9bbdb0544393275bull }}, {{ 0xe32c4d57244734e5ull, 0xb452d4c0559b90e7ull, 0x33cb9470d96d5f61ull, 0xc3d4aa7c13c1d584ull, 0xa12498d8ee951ea4ull, 0x1568e34aa3bf8995ull }}, {{ 0xdfbb05676ac810eeull, 0x0b3c4f835813a90eull, 0x05f3cc687e45b9d1ull, 0xa64ea8d8c592572aull, 0x4b6df87951d3326full, 0xd618e0ea657b5fd8ull }}, {{ 0xbd4e360a2bd0a94dull, 0x705b1b2170c49a94ull, 0x3b85fc14eeb9422aull, 0x7f129877b7b767a4ull, 0xf24bb4bd323ff85cull, 0x5cf8c927f6d1be72ull }}, {{ 0x650e1c65b6269d03ull, 0x638f0f4e67ae09cfull, 0x533bd8d1533c95a8ull, 0xf6b9f4ad2d2a0c6aull, 0x76f50f63f67fb39cull, 0xa1b7db8fa431707dull }}, {{ 0xf28d1bf91d82221full, 0xe39699100ccc6219ull, 0x4056782d405dd893ull, 0xa3438ec3c3a47c27ull, 0xa59299e7a0fd0421ull, 0x512e939c69ee64e6ull }}, {{ 0x798317bb27155539ull, 0xe3e1faa07ffbd503ull, 0x8360b1c483aa75c6ull, 0x60a393a5a46cd988ull, 0x77ba030c49e22950ull, 0x2bd1c41c234ff102ull }}, {{ 0xbf1eed4f86d55437ull, 0xe6d3ca44ffd65222ull, 0x21c6f1ad24a899c4ull, 0xc663c4786c407f55ull, 0xad441e7ae2d59d23ull, 0xb631a919611f6a18ull }}, {{ 0x7735451b44554a26ull, 0x0445e6b1fe5f355bull, 0x51c570c36e9601b1ull, 0xbfe5acb43a84f953ull, 0xc4a930ccdc582365ull, 0x1df09afdcb3a24f6ull }}, {{ 0xa814b310ab54e57bull, 0x2abb02f3efb81592ull, 0x31b667a251dc10eaull, 0x7ef8bf0a4931bd41ull, 0xae9be8009b7161f9ull, 0x2b660de9f04571a3ull }}, {{ 0x90cefea6b150f6caull, 0xab4e1d875d30d7baull, 0xf1200c573298a925ull, 0xf5b77666dbf1648bull, 0xd2171006126dd3beull, 0xb1fc8b2362b67064ull }}, {{ 0xa815f282ed29a3dfull, 0xb10d2749a3e86d49ull, 0x6b407b67f9f69b78ull, 0x992aa004976ded77ull, 0x34e6a03cb84a4575ull, 0xf3dd6f61db2063f0ull }}, {{ 0x90db791d43a066b6ull, 0xea8388e0671444e0ull, 0x3084d20fc3a212b6ull, 0xfbaa402dea4b46aaull, 0x1102425f32e6b697ull, 0x86a659d28f43e762ull }}, {{ 0xa892bb24a444031dull, 0x292358c406cab0c5ull, 0xe530349da454bb25ull, 0xd4a681cb26f0c2a5ull, 0xaa1697b7fd0321efull, 0x427f823998a709d4ull }}, {{ 0x95bb4f6e6aa81f22ull, 0x9b6177a843eae7b8ull, 0xf3e20e286b4f4f73ull, 0x4e8111ef85679a7aull, 0xa4e1ed2fe21f535eull, 0x98fb163ff686624eull }}, {{ 0xd9511a502a913756ull, 0x11ceac92a72d0d35ull, 0x86d48d9431191a84ull, 0x110ab35b360c08cdull, 0x70d343ded53941afull, 0xf9cede7fa13fd712ull }}, {{ 0x7d2b0721a9ac295bull, 0xb212bdba87c2841aull, 0x444d87c9eafb0928ull, 0xaa6b01901c785807ull, 0x6840a6b4543c90d6ull, 0xc214b0fc4c7e66b8ull }}, {{ 0xe3ae4750a0b99d8eull, 0xf4bb69494d992908ull, 0xab074de32dce5b96ull, 0xa82e0fa11cb37048ull, 0x1286830b4a5da862ull, 0x94cee9dafcf00334ull }}, {{ 0xe4cec9264740278bull, 0x8f521cdd07fb9a58ull, 0xae490adfca0f93e5ull, 0x91cc9c4b1f0262d6ull, 0xb9411e70e7a893daull, 0xd015228de1602008ull }}, {{ 0xf013db7ec8818b6bull, 0x993520a24fd40778ull, 0xceda6cbde49bc6f7ull, 0xb1fe1aef3617dc62ull, 0x3c8b30690c95c689ull, 0x20d3598acdc14057ull }}, {{ 0x60c692f3d50f722eull, 0xfc1346571e484ab9ull, 0x14883f6aee15c5abull, 0xf3ed0d581cee9bdcull, 0x5d6fe41a7dd9c160ull, 0x48417f6c098c8368ull }}, {{ 0xc7c1bd86529a75d0ull, 0xd8c0bf672ed2eb3dull, 0xcd527a2d4cd9b8b7ull, 0x8742857121521698ull, 0xa65ee908ea818dc9ull, 0xd28efa385f7d2213ull }}, {{ 0xcd91673f3a089a1full, 0x77877a07d43d3069ull, 0x0538c5c50081372eull, 0x4899366b4d34e1f8ull, 0x7fb51a59290f89dfull, 0x3995c633bae354c4ull }}, {{ 0x07ae087844560533ull, 0xab4ac44e4a63e422ull, 0x3437b9b2050c27d0ull, 0xd5fc20310410d3b0ull, 0xfd13077b9a9b62b8ull, 0x3fd9be054ce14facull }}, {{ 0x4ccc54b2ab5c3403ull, 0xb0ebab0ee7e6e954ull, 0x0a2d40f432798e26ull, 0x5bd941ea28a844e2ull, 0xe2be4ad40a11db38ull, 0x7e816c3500cd1cc1ull }}, {{ 0xfffb4efab19a081eull, 0xe934ae950f051d4aull, 0x65c48989f8bf8d82ull, 0x967c93259692b0d4ull, 0xdb6eec4864b29033ull, 0xf10e3a1208031f92ull }}, {{ 0xffd115caf004512cull, 0x1c0ed1d2963324edull, 0xf9ad5f63b77b871dull, 0xe0ddbf77e1bae84bull, 0x92553ad3eef9a203ull, 0x6a8e44b4501f3bbcull }}, {{ 0xfe2ad9ed602b2bb6ull, 0x18943239ddff714bull, 0xc0c5b9e52ad34723ull, 0xc8a97aaed14d12f7ull, 0xb7544c4755c05426ull, 0x298eaf0b2138555dull }}, {{ 0xedac8345c1afb520ull, 0xf5c9f642abfa6cf7ull, 0x87b942f3ac40c75eull, 0xd69ecad42d02bdadull, 0x294afac959834983ull, 0x9f92d66f4c3355a9ull }}, {{ 0x48bd20b990dd1345ull, 0x99e39e9ab7c841afull, 0x4d3c9d84ba87c9b5ull, 0x6233ec49c21b68c7ull, 0x9cedcbdd7f20df26ull, 0x3bbc6058fa01589bull }}, {{ 0xd763473fa8a2c0aeull, 0x02e4320b2dd290d8ull, 0x045e272f494de118ull, 0xd6073ae1951217c9ull, 0x2149f6a6f748b77full, 0x555bc379c40d7614ull }}, {{ 0x69e0c87c965b86ceull, 0x1ce9f46fca39a878ull, 0x2bad87d8dd0acaf0ull, 0x5c484ccfd2b4eddaull, 0x4ce3a285a8d72afeull, 0x5595a2c1a8869cc9ull }}, {{ 0x22c7d4dddf93440eull, 0x21238c5de64094b4ull, 0xb4c74e78a26bed61ull, 0x9ad3001e3b114a85ull, 0x00e459389867adefull, 0x57d85b9095421fddull }}, {{ 0x5bce50aabbc0a88eull, 0x4b637baafe85cf09ull, 0x0fc910b6583745cbull, 0x0c3e012e4eace939ull, 0x08eb7c35f40ccb5cull, 0x6e7393a5d4953ea2ull }}, {{ 0x960f26ab55869589ull, 0xf1e2d4adf13a165dull, 0x9ddaa71f7228b9f0ull, 0x7a6c0bcf12c11c3aull, 0x5932da1b887ff198ull, 0x5083c47a4dd47254ull }}, {{ 0xdc9782b15741d75aull, 0x72dc4ecb6c44dfa7ull, 0x2a8a873a75974369ull, 0xc8387616bb8b1a4aull, 0x7bfc851354ff6ff4ull, 0x2525acc70a4c774bull }}, {{ 0x9deb1aed68926986ull, 0x7c9b13f23ab0bc8eull, 0xa969484897e8a21eull, 0xd2349ce3536f06e5ull, 0xd7dd32c151fa5f8full, 0x7378bfc666fca8f2ull }}, {{ 0x2b2f0d4615b81f3bull, 0xde0ec7764ae75d92ull, 0x9e1cd2d5ef165530ull, 0x360e20e1425644f8ull, 0x6ea3fb8d33c7bb9eull, 0x82b77dc005de997cull }}, {{ 0xafd684bcd931384dull, 0xac93ca9eed09a7b5ull, 0x2d203c5b56df53e8ull, 0x1c8d48cc975eb1b6ull, 0x5267d38405cd542eull, 0x1b2ae9803ab1fedcull }}, {{ 0xde612f607bec32fdull, 0xbdc5ea3542608d18ull, 0xc3425b9164b94716ull, 0x1d84d7fde9b2f11dull, 0x380e43283a0549cdull, 0x0fad1f024af3f49bull }}, {{ 0xafcbd9c4d739fde6ull, 0x69bb261497c582f8ull, 0xa09793adef3cc6e3ull, 0x27306feb20fd6b29ull, 0x308e9f924434e203ull, 0x9cc33616ed878e10ull }}, {{ 0xddf681b06843eaf7ull, 0x214f7ccdedb71db6ull, 0x45ebc4cb585fc4e2ull, 0x87e45f2f49e62fa0ull, 0xe5923bb6aa10d41full, 0x1fa01ce5474b8ca1ull }}, {{ 0xaba110e412a72daaull, 0x4d1ae00b49272924ull, 0xbb35aff173bdb0d5ull, 0x4eebb7d8e2fddc42ull, 0xf7b65522a4a8493bull, 0x3c4120f4c8f37e52ull }}, {{ 0xb44aa8e8ba87c8a3ull, 0x030cc070db879b6eull, 0x5018df6e8568e855ull, 0x15352e78ddea9a9bull, 0xad1f535a6e92dc51ull, 0x5a8b498fd982ef3dull }}, {{ 0x0aea9917494dd65full, 0x1e7f8468934c1253ull, 0x20f8ba5136191352ull, 0xd413d0b8ab2a0a11ull, 0xc339418851bc9b2aull, 0x8970df9e7f1d5868ull }}, {{ 0x6d29fae8dd0a5fb3ull, 0x30fb2c15c0f8b73eull, 0x49b7472c1cfac135ull, 0x48c62736afa464abull, 0xa03c8f53315e0facull, 0x5e68bc30f7257417ull }}, {{ 0x43a3cd18a267bcfbull, 0xe9cfb8d989b72870ull, 0xe128c7b921cb8c13ull, 0xd7bd8822dc6beeb0ull, 0x425d993fedac9cbaull, 0xb01759e9a77688ecull }}, {{ 0xa46602f6580d61d1ull, 0x221d387f61279462ull, 0xcb97cd3b51f378c7ull, 0x6d67515c9c3752e8ull, 0x97a7fc7f48be1f4cull, 0xe0e983208aa1593aull }}, {{ 0x6bfc1d9f7085d22bull, 0x552434f9cb8bcbdaull, 0xf3ee04513382b7c7ull, 0x46092d9e1a293d17ull, 0xec8fdcf8d76d38fcull, 0xc91f1f456a4d7c49ull }}, {{ 0x37d9283a653a35aaull, 0x536a11c1f375f688ull, 0x874c2b2c031b2dc9ull, 0xbc5bc82d059c62efull, 0x3d9ea1b86a4439daull, 0xdb3738b62706dae3ull }}, {{ 0x2e7b9247f44618a4ull, 0x4224b193829ba152ull, 0x48f9afb81f0fc9ddull, 0x5b95d1c2381bdd5bull, 0x6832513426aa428bull, 0x9028371d86448ce0ull }}, {{ 0xd0d3b6cf8abcf66cull, 0x956eefc31a144d35ull, 0xd9c0dd31369de2a4ull, 0x93da31963116a590ull, 0x11f72c0982a69971ull, 0xa19227273ead80c4ull }}, {{ 0x2845241b6b61a037ull, 0xd6555d9f04cb041aull, 0x8188a3ec222ada6dull, 0xc685efddeae277a8ull, 0xb3a7b85f1a81fe6full, 0x4fb5878872c707a8ull }}, {{ 0x92b3691231d04225ull, 0x5f55a8362fee2905ull, 0x0f56673955ac884aull, 0xc13b5eab2cd8ac95ull, 0x048d33b70913f05dull, 0x1d174b547bc64c97ull }}, {{ 0xbb021ab5f2229574ull, 0xb958921ddf4d9a37ull, 0x9960083d58bd52e7ull, 0x8c51b2afc076bdd2ull, 0x2d8405265ac763a9ull, 0x22e8f14cd5befde6ull }}, {{ 0x4e150b1b7559d687ull, 0x3d75b52ab908062dull, 0xfdc0526577653d0dull, 0x7b30fadd84a36a39ull, 0xc728337f8bc9e49full, 0x5d196d005975eafdull }}, {{ 0x0cd26f1295826142ull, 0x669913ab3a503dc5ull, 0xe98337f6a9f46284ull, 0xcfe9cca72e622643ull, 0xc79202fb75e2ee3aull, 0xa2fe42037e9b2de9ull }}, {{ 0x803856b9d717cc93ull, 0x01fac4b0472269b2ull, 0x1f202fa2a38bd92cull, 0x1f21fe87cfd57ea7ull, 0xcbb41dd29add4e4cull, 0x5dee9422f20fcb21ull }}, {{ 0x0233634266edfdc2ull, 0x13cbaee2c75820f9ull, 0x3741dc5a63767bb8ull, 0x3753f14e1e56f287ull, 0xf5092a3a0ca50ef9ull, 0xab51c95d749def51ull }}, {{ 0x1601e098054be98full, 0xc5f4d4dbc97149baull, 0x28929b87e2a0d530ull, 0x29476d0d2f657948ull, 0x925ba6447e7295bcull, 0xb131dda68e2b5933ull }}, {{ 0xdc12c5f034f71f97ull, 0xbb905095de6ce144ull, 0x95ba134eda4853e7ull, 0x9cca4283d9f6bcd1ull, 0xb7947eacf079d959ull, 0xebf2a8818db17c03ull }}, {{ 0x98bbbb6211a73be8ull, 0x53a325dab040ccb0ull, 0xd944c11486d3470dull, 0x1fe6992683a3602full, 0x2bccf2c164c27d80ull, 0x377a950f88eed825ull }}, {{ 0xf75551d4b0885711ull, 0x445f7a8ae287fee5ull, 0x7caf8acd4440c685ull, 0x3f01fb812461c1deull, 0xb6017b8def98e701ull, 0x2ac9d29b59547173ull }}, {{ 0xa955324ee55366adull, 0xabbac96cd94ff4fbull, 0xdedb6c04aa87c134ull, 0x7613d30b6bd192b0ull, 0x1c0ed38b5bf9060cull, 0xabe23a117d4c6e85ull }}, {{ 0x9d53f714f54202c3ull, 0xb54bde407d1f91d4ull, 0xb492382ea94d8c0eull, 0x9cc63e72362fbae8ull, 0x1894437197ba3c7cull, 0xb6d644aee4fc5133ull }}, {{ 0x2547a6d194941b9dull, 0x14f6ae84e33bb24eull, 0x0db631d29d077893ull, 0x1fbe70761ddd4d17ull, 0xf5caa26fed465cdeull, 0x245eaed4f1db2bfeull }}, {{ 0x74cc842fcdc91426ull, 0xd1a2d130e054f70dull, 0x891df23a224ab5beull, 0x3d70649d2aa502e6ull, 0x99ea585f44bfa0adull, 0x6bb2d451728fb7f5ull }}, {{ 0x8ffd29de09dac97dull, 0x305c2be8c351a686ull, 0x5b2b764556eb1974ull, 0x6663ee23aa721d01ull, 0x032773b8af7c46c4ull, 0x34fc4b2e799d2f98ull }}, {{ 0x9fe3a2ac628bdee6ull, 0xe399b717a1308141ull, 0x8fb29eb5652efe89ull, 0xffe74d64a875220dull, 0x1f8a8536dadac3abull, 0x11daefd0c023dbf0ull }}, {{ 0x3ee45abbd976b4fcull, 0xe40126ec4be50c90ull, 0x9cfa3315f3d5f162ull, 0xff0905ee94935487ull, 0x3b6934248c8ba4b7ull, 0xb28d5e2781669761ull }}, {{ 0x74eb8b567ea311daull, 0xe80b853af6f27da2ull, 0x21c5fedb865b6ddcull, 0xf65a3b51cdc14d4cull, 0x521c096d7d746f2full, 0xf985ad8b0e01e9ccull }}, {{ 0x91337160f25eb283ull, 0x1073344da578e858ull, 0x51bbf4933f924aa1ull, 0x9f865132098d04f9ull, 0x35185e46e68c57dfull, 0xbf38c76e8c1321fbull }}, {{ 0xac026dc977b2f91aull, 0xa4800b0876b91375ull, 0x31578dc07bb6ea4aull, 0x3b3f2bf45f8231bdull, 0x12f3aec5017b6ebcull, 0x7837ca5178bf53d0ull }}, {{ 0xb81849deacfdbb06ull, 0x6d006e54a33ac298ull, 0xed6b8984d52526eaull, 0x5077b78bbb15f163ull, 0xbd84d3b20ed2535aull, 0xb22de72eb7794620ull }}, {{ 0x30f2e2b2c1e94e41ull, 0x42044f4e604b99f7ull, 0x46335f3053738528ull, 0x24ad2b754edb6de7ull, 0x673044f494374187ull, 0xf5cb07d32abcbd47ull }}, {{ 0xe97cdafb931d0e89ull, 0x942b190fc2f403a7ull, 0xbe01b7e342833392ull, 0x6ec3b29514924b08ull, 0x07e2b18dca288f47ull, 0x99ee4e3fab5f64caull }}, {{ 0x1ee08dd3bf229156ull, 0xc9aefa9d9d88248full, 0x6c112ee0992003b9ull, 0x53a4f9d2cdb6ee57ull, 0x4edaef89e59598caull, 0x034f0e7cb1b9efe4ull }}, {{ 0x34c58a457759ad5eull, 0xe0d5ca2827516d97ull, 0x38abd4c5fb402541ull, 0x4471c23c09254f6aull, 0x148d5b62f7d7f7e7ull, 0x211690def1435eebull }}, {{ 0x0fb766b6a980c5abull, 0xc859e591892e47e8ull, 0x36b64fbbd0817492ull, 0xac7196585b751a26ull, 0xcd8591ddae6faf08ull, 0x4ae1a8b56ca1b52eull }}, {{ 0x9d2a03229f07b8afull, 0xd382f7af5bcecf10ull, 0x231f1d56250e8dbbull, 0xbc6fdf739293057eull, 0x0737b2a8d05cd656ull, 0xecd097163e5113d4ull }}, {{ 0x23a41f5a364d36d4ull, 0x431dacd9961416a6ull, 0x5f37255d72918956ull, 0x5c5eba83b9be36edull, 0x482cfa9823a05f63ull, 0x4025e6de6f2ac648ull }}, {{ 0x646939861f042443ull, 0x9f28c07fdcc8e27dull, 0xb82775a679af5d5eull, 0x9bb34925416e2545ull, 0xd1c1c9f16443b9e1ull, 0x817b04b057abbed2ull }}, {{ 0xec1c3f3d36296aa1ull, 0x379784fe9fd8d8e5ull, 0x318a9880c0d9a5b2ull, 0x1500db748e4d74b9ull, 0x3191e36deaa542d0ull, 0x0ece2ee36cb5743cull }}, {{ 0x391a78641d9e2a46ull, 0x2beb31f23e7878fbull, 0xef69f507888078f6ull, 0xd208928d8f068f3bull, 0xefb2e24b2a749c20ull, 0x940dd4e23f168a59ull }}, {{ 0x3b08b3e9282da6baull, 0xb72ff37670b4b9d0ull, 0x5a23924b5504b99dull, 0x3455b98796419857ull, 0x5cfcd6efa88e1948ull, 0xc88a50d676e16783ull }}, {{ 0x4e57071b91c88347ull, 0x27df82a0670f4222ull, 0x8563b6f1522f4029ull, 0x0b593f4bde8ff369ull, 0xa1e0655c958cfcd2ull, 0xd5672860a4ce0b21ull }}, {{ 0x0f664713b1d520c4ull, 0x8ebb1a4406989557ull, 0x35e5256d35d8819bull, 0x717c78f6b19f821full, 0x52c3f59dd781e034ull, 0x560793c6700c6f50ull }}, {{ 0x99fec6c4f25347a8ull, 0x934f06a841f5d566ull, 0x1af376441a751013ull, 0x6edcb9a2f03b1538ull, 0x3ba7982a6b12c20cull, 0x5c4bc5c0607c5923ull }}, {{ 0x03f3c3b17740cc95ull, 0xc1164292939a5602ull, 0x0d829ea90892a0c3ull, 0x549f405d624ed431ull, 0x548bf1a82ebb947cull, 0x9af5b983c4db7b60ull }}, {{ 0x2785a4eea887fdcdull, 0x8ade99b9c4075c14ull, 0x871a329a55ba47a5ull, 0x4e3883a5d71449eaull, 0x4d777091d353ccdbull, 0x0d993f25b092d1c3ull }}, {{ 0x8b387152954fea05ull, 0x6cb20141a84998c9ull, 0x4705fa075946cc77ull, 0x0e35247a66cae329ull, 0x06aa65b241460091ull, 0x87fc7778e5bc31a1ull }}, {{ 0x70346d39d51f2436ull, 0x3ef40c9092dff7dfull, 0xc63bc4497cc3fcaaull, 0x8e136cc803ecdf9cull, 0x42a7f8f68cbc05aaull, 0x4fdcaab8f959f04aull }}, {{ 0x620c444253376a1eull, 0x75887da5bcbfaebaull, 0xbe55aadedfa7dea6ull, 0x8cc23fd02740bc1full, 0x9a8fb9a17f5838a9ull, 0x1e9eab39bd8362e6ull }}, {{ 0xd47aaa97402a2529ull, 0x9754e8795f7cd347ull, 0x6f58acb4bc8eb280ull, 0x7f967e218887593dull, 0x099d404ef972369full, 0x3232b0416721dd02ull }}, {{ 0x4ccaa9e881a57397ull, 0xe95114bdbae040ceull, 0x5976bf0f5d92f905ull, 0xfbe0ed4f55497c66ull, 0x60248315be76223aull, 0xf5fae28e0752a214ull }}, {{ 0xffeaa315107683e7ull, 0x1d2acf694cc2880eull, 0x7ea37699a7bdba3bull, 0xd6c9451954dedbffull, 0xc16d1ed9709d564dull, 0x9bccd98c493a54cbull }}, {{ 0xff2a5ed2a4a12705ull, 0x23ac1a1cff995095ull, 0xf262a2008d69464full, 0x63dcb2fd50b497faull, 0x8e43347e66255f0aull, 0x16007f7adc474ff5ull }}, {{ 0xf7a7b43a6e4b8633ull, 0x64b90521fbfd25dbull, 0x77da5405861cbf17ull, 0xe69efde5270defcdull, 0x8ea00ceffd75b667ull, 0xdc04facc9ac91f97ull }}, {{ 0xac8d0a484ef33dffull, 0xef3a3353d7e37a97ull, 0xae8748373d1f76e9ull, 0x0235eaf3868b5e06ull, 0x9240815fe699200full, 0x9831cbfe0bdb3bebull }}, {{ 0xbd8266d315806bf5ull, 0x584601466ee2c9ecull, 0xd148d228633aa523ull, 0x161b2d834171ac42ull, 0xb6850dbf01fb4096ull, 0xf1f1f7ec76905733ull }}, {{ 0x6718043ed7043794ull, 0x72bc0cc054dbe33full, 0x2cd83593e04a7361ull, 0xdd0fc7208e70ba9cull, 0x2132897613d085dcull, 0x7373af3ca1a36805ull }}, {{ 0x06f02a74662a2bcbull, 0x7b587f835096e07aull, 0xc07217c6c2e881ceull, 0xa29dc74590674a19ull, 0x4bf95e9cc6253aa0ull, 0x8284d85e50621033ull }}, {{ 0x4561a88bfda5b5f2ull, 0xd174fb2125e4c4c4ull, 0x8474edc39d151210ull, 0x5a29c8b7a408e501ull, 0xf7bdb21fbd744a46ull, 0x193073af23d4a200ull }}, {{ 0xb5d09577e8791b75ull, 0x2e91cf4b7aefafaaull, 0x2c9149a422d2b4a8ull, 0x85a1d72c6858f20full, 0xad68f53d668ae6bfull, 0xfbe484d7664e5409ull }}, {{ 0x1a25d6af14bb128dull, 0xd1b218f2cd5cdcabull, 0xbdace0695c3b0e91ull, 0x385267bc13797497ull, 0xc6199466016d037bull, 0xd6ed3069ff0f4860ull }}, {{ 0x057a62d6cf4eb985ull, 0x30f4f97c05a09eafull, 0x68c0c41d9a4e91b2ull, 0x33380d58c2be8dedull, 0xbcffcbfc0e4222d0ull, 0x6543e423f698d3c7ull }}, {{ 0x36c7dc6419133f2eull, 0xe991bed8384632d6ull, 0x1787a9280711b0f5ull, 0x003085779b718b46ull, 0x61fdf7d88e955c22ull, 0xf4a6e967a1f845cdull }}, {{ 0x23ce9be8fac077ceull, 0x1fb1747232bdfc5eull, 0xeb4c9b9046b0e99bull, 0x01e536ac126f70bcull, 0xd3ebae7591d59954ull, 0x8e851e0c53b2ba05ull }}, {{ 0x66121719cb84ae0bull, 0x3cee8c75fb6bdbadull, 0x30fe13a2c2e9200full, 0x12f422b8b85a6761ull, 0x4734d097b257fd48ull, 0x91332c7b44fb443aull }}, {{ 0xfcb4e701f32ecc6eull, 0x61517c9bd23694c5ull, 0xe9ecc45b9d1b4098ull, 0xbd895b37338809cbull, 0xc81025ecf76fe4d0ull, 0xabffbcd0b1d0aa46ull }}, {{ 0xdf1106137fd3fc4cull, 0xcd2ede163621cfbbull, 0x233fab94231085f3ull, 0x675d9028035061f7ull, 0xd0a17b41aa5ef027ull, 0xb7fd6026f226a6c3ull }}, {{ 0xb6aa3cc2fe47daf6ull, 0x03d4acde1d521d56ull, 0x607cb3c95ea53b86ull, 0x09a7a1902123d3a7ull, 0x264ed090a7b5618aull, 0x2fe5c185758283a6ull }}, {{ 0x22a65f9deece8da0ull, 0x264ec0ad25352563ull, 0xc4df05ddb274533cull, 0x608c4fa14b664489ull, 0x7f1425a68d15cf64ull, 0xdef98f369719247dull }}, {{ 0x5a7fbc2b5411883cull, 0x7f1386c3741375dfull, 0xb0b63aa8f88b4059ull, 0xc57b1c4cf1fead61ull, 0xf6c9788182da19ebull, 0xb5bf9821e6fb6ce6ull }}, {{ 0x88fd59b148af525cull, 0xf6c343a288c29ab9ull, 0xe71e4a99b570837eull, 0xb6cf1b0173f2c5d0ull, 0xa3deb50f1c850335ull, 0x197bf15305d24105ull }}, {{ 0x59e580ecd6d93799ull, 0xa3a0a459579a0b3full, 0x072eea01166522f5ull, 0x24170e0e877bba29ull, 0x66b312971d322019ull, 0xfed76d3e3a368a38ull }}, {{ 0x82f70940647c2bfbull, 0x64466b7d6c047079ull, 0x47d5240adff35d98ull, 0x68e68c914ad5459aull, 0x02feb9e723f540fbull, 0xf46a446e46216634ull }}, {{ 0x1da65c83ecd9b7ceull, 0xeac032e6382c64bfull, 0xce53686cbf81a7f3ull, 0x19017dacec54b806ull, 0x1df34307679489d2ull, 0x8c26ac4ebd4dfe08ull }}, {{ 0x287f9d2740812e0bull, 0x2b81fcfe31bbef77ull, 0x0f42143f7b108f87ull, 0xfa0ee8c13b4f3044ull, 0x2b809e4a0bcd6234ull, 0x7982bb13650bec51ull }}, {{ 0x94fc2388850bcc6bull, 0xb313e1edf1575aa7ull, 0x9894ca7acea59b47ull, 0xc495178c5117e2a8ull, 0xb3062ee47605d611ull, 0xbf1b4ec1f2773b2bull }}, {{ 0xd1d963553275fc2cull, 0xfec6d34b6d698a8bull, 0xf5cfe8cc127810ccull, 0xadd2eb7b2aeeda95ull, 0xfe3dd4ec9c3a5cb1ull, 0x7711139378a84fb4ull }}, {{ 0x327de153f89bd9bcull, 0xf3c440f2461f6976ull, 0x9a1f17f8b8b0a801ull, 0xca3d32cfad5489dbull, 0xee6a513e1a479ef0ull, 0xa6aac3c2b6931d11ull }}, {{ 0xf8eacd47b6168159ull, 0x85aa8976bd3a1e9dull, 0x0536efb736e69013ull, 0xe663fc1cc54d6294ull, 0x50272c6d06cc3567ull, 0x82aba59b21bf22b3ull }}, {{ 0xb92c04cd1ce10d77ull, 0x38a95ea36445322bull, 0x34255d282501a0c3ull, 0xffe7d91fb505d9c8ull, 0x2187bc4243fa160eull, 0x1ab4780f51775b01ull }}, {{ 0x3bb8300320ca86a7ull, 0x369db261eab3f5b5ull, 0x0975a391721047a0ull, 0xff0e7b3d123a81d2ull, 0x4f4d5a96a7c4dc95ull, 0x0b0cb0992ea98e0bull }}, {{ 0x5531e01f47e94287ull, 0x2228f7d32b079914ull, 0x5e9863ae74a2cc42ull, 0xf690d062b6491234ull, 0x190589e28db09ddbull, 0x6e7ee5fbd29f8c71ull }}, {{ 0x53f2c138cf1c9942ull, 0x5599ae3fae4bfacbull, 0xb1f3e4d08e5bfa95ull, 0xa1a823db1edab60bull, 0xfa3762d988e62a97ull, 0x50f4fbd63a3b7c6aull }}, {{ 0x477b8c38171dfc98ull, 0x5800ce7ccef7cbf1ull, 0xf386f0258f97c9d5ull, 0x5091668f348b1c74ull, 0xc629dc7f58fda9ecull, 0x2991d65e4652dc2dull }}, {{ 0xcad37a30e72bddeeull, 0x700810e015adf76cull, 0x834561779bede255ull, 0x25ae01980d6f1c91ull, 0xbda29cf979e8a33bull, 0x9fb25faebf3c99c9ull }}, {{ 0xec42c5e907b6ab48ull, 0x6050a8c0d8cbaa3full, 0x20b5ceac174ad756ull, 0x78cc0ff086571dafull, 0x685a21bec316604full, 0x3cf7bcd3785e01e1ull }}, {{ 0x3a9bbb1a4d22b0d5ull, 0xc326978877f4a67full, 0x471a12b8e8ec695full, 0xb7f89f653f6728d7ull, 0x138551739edfc31aull, 0x61ad6042b3ac12ceull }}, {{ 0x4a154f07035ae850ull, 0x9f81eb54af8e80f8ull, 0xc704bb39193c1dbdull, 0x2fb639f47a079868ull, 0xc3352e8434bd9f0bull, 0xd0c5c29b04b8bc0cull }}, {{ 0xe4d51646218d131cull, 0x3b13314edb9109b2ull, 0xc62f503afc592968ull, 0xdd1e438cc44bf417ull, 0xa013d12a0f68366full, 0x27b99a0e2f37587full }}, {{ 0xf052debd4f82bf1bull, 0x4ebfed1493aa60fcull, 0xbdd9224ddb7b9e12ull, 0xa32ea37faaf788edull, 0x40c62ba49a12205eull, 0x8d40048dd82974fcull }}, {{ 0x633cb3651b1b7712ull, 0x137f42cdc4a7c9e1ull, 0x6a7b570a92d42cb7ull, 0x5fd262fcadab5949ull, 0x87bdb46e04b543b2ull, 0x84802d8a719e91daull }}, {{ 0xe05f01f30f12a6b7ull, 0xc2f89c09ae8de2cdull, 0x28d16669bc49bf26ull, 0xbe37dddec8b17cdeull, 0x4d690c4c2f14a4f7ull, 0x2d01c7687031b289ull }}, {{ 0xc3b6137e96ba8326ull, 0x9db61860d18adc0aull, 0x982e00215ae17783ull, 0x6e2eaab3d6eee0adull, 0x061a7af9d6ce71adull, 0xc211ca1461f0f95dull }}, {{ 0xa51cc2f1e3491f77ull, 0x291cf3c82f6c986bull, 0xf1cc014d8cceab24ull, 0x4dd2ab066554c6c7ull, 0x3d08cdc2641070c6ull, 0x94b1e4cbd369bda2ull }}, {{ 0x731f9d72e0db3aabull, 0x9b2185d1da3df434ull, 0x71f80d078012af69ull, 0x0a3aae3ff54fc3cfull, 0x62580997e8a467bfull, 0xcef2eff642216856ull }}, {{ 0x7f3c267cc8904aaaull, 0x0f4f3a32866b8a0cull, 0x73b0824b00bada20ull, 0x664ace7f951da61aull, 0xd7705fef166c0d76ull, 0x157d5f9e954e135full }}, {{ 0xf85980dfd5a2eaa7ull, 0x991845f94033647cull, 0x84e516ee074c8540ull, 0xfeec10fbd3287d08ull, 0x6a63bf56e038869full, 0xd6e5bc31d50cc1beull }}, {{ 0xb37f08be585d2a89ull, 0xfaf2bbbc8201ece1ull, 0x30f2e54c48fd3485ull, 0xf538a9d63f94e255ull, 0x27e57964c235423full, 0x64f959f2527f9170ull }}, {{ 0x02f6576f73a3a95bull, 0xcd7b555d141340d1ull, 0xe97cf4fad9e40d3bull, 0x9436a25e7bd0d753ull, 0x8ef6bdef9614967full, 0xf1bd837738fbae61ull }}, {{ 0x1d9f6a5a84649d8cull, 0x06d155a2c8c0882aull, 0x1ee191cc82e88456ull, 0xca2257b0d6286947ull, 0x95a36b5bdccde0fbull, 0x716722a839d4cfcfull }}, {{ 0x283a27892bee2777ull, 0x442d585bd78551a5ull, 0x34cfb1fd1d152b5cull, 0xe5576ce85d941cc7ull, 0xd8623196a00ac9d5ull, 0x6e075a9242501e1bull }}, {{ 0x92458b5bb74d8aabull, 0xa9c573966b353073ull, 0x101cf3e322d3b19aull, 0xf56a4113a7c91fc8ull, 0x73d5efe2406be25aull, 0x4c4989b697212d16ull }}, {{ 0xb6b7719529076aabull, 0xa1b683e03013e483ull, 0xa12186df5c44f00aull, 0x96268ac48ddb3dd0ull, 0x865b5ed68436d78dull, 0xfadf6121e74bc2e0ull }}, {{ 0x232a6fd39a4a2aafull, 0x512126c1e0c6ed25ull, 0x4b4f44b99ab1606aull, 0xdd816bad8a906a26ull, 0x3f91b4612a246b87ull, 0xccb9cb5308f59cc5ull }}, {{ 0x5fa85e4406e5aad6ull, 0x2b4b8392c7c54373ull, 0xf118af400aedc427ull, 0xa70e34c769a4257eull, 0x7bb10bcba56c334eull, 0xff41f13e59981fb4ull }}, {{ 0xbc93aea844f8ac57ull, 0xb0f323bbcdb4a281ull, 0x6af6d8806d49a987ull, 0x868e0fca206976f5ull, 0xd4ea75f4763a0112ull, 0xf8936c6f7ff13d0cull }}, {{ 0x5dc4d292b1b6bb6bull, 0xe97f6556090e5911ull, 0x2da4750444e09f4cull, 0x418c9de5441ea596ull, 0x51289b8c9e440ab9ull, 0xb5c23c5aff6c6280ull }}, {{ 0xa9b039baf123522dull, 0x1ef9f55c5a8f7aadull, 0xc86c922ab0c63901ull, 0x8f7e2af4a93277ddull, 0x2b96137e2ea86b3cull, 0x19965b8dfa3bd903ull }}, {{ 0xa0e2414d6b6135c3ull, 0x35c3959b899acac8ull, 0xd43db5aae7be3a0bull, 0x9aedad8e9bf8aea9ull, 0xb3dcc2edd294305dull, 0xffdf938bc6567a1full }}, {{ 0x48d68d0631cc19a3ull, 0x19a3d813600bebd6ull, 0x4a6918ad0d6e4470ull, 0x0d48c79217b6d2a2ull, 0x069f9d4a39c9e3a8ull, 0xfebbc375bf60c53dull }}, {{ 0xd861823df1f9005cull, 0x006670c1c077365eull, 0xe81af6c2864eac61ull, 0x84d7cbb4ed243a56ull, 0x423c24e641e2e490ull, 0xf355a29979c7b462ull }}, {{ 0x73cf166b73ba039cull, 0x0400679184a81fb4ull, 0x110da3993f12bbcaull, 0x306df511436a4765ull, 0x965970fe92dceda5ull, 0x815859fec1cd0bd6ull }}, {{ 0x8616e03285442418ull, 0x28040baf2e913d0cull, 0xaa8863fc76bb55e4ull, 0xe44b92aca226c9f2ull, 0xdf7e69f1bca14873ull, 0x0d7383f392027661ull }}, {{ 0x3ce4c1f934a968ecull, 0x902874d7d1ac627dull, 0xa953e7dca3515ae9ull, 0xeaf3babe5583e37aull, 0xbaf023715e4cd486ull, 0x86832783b4189fd2ull }}, {{ 0x60ef93bc0e9e1938ull, 0xa194906e30bbd8e4ull, 0x9d470e9e612d8d1full, 0x2d854b6f5726e2caull, 0x4d61626daf004d45ull, 0x411f8b2508f63e3bull }}, {{ 0xc95bc558922cfc30ull, 0x4fcda44de75678ebull, 0x24c6922fcbc7833cull, 0xc734f2596784dbeaull, 0x05cdd848d60304b3ull, 0x8b3b6f72599e6e51ull }}, {{ 0xdd95b575b5c1d9dcull, 0x1e086b0b0960b935ull, 0x6fc1b5ddf5cb205bull, 0xc811777e0b309725ull, 0x3a0a72d85c1e2f05ull, 0x70525a7780304f2aull }}, {{ 0xa7d9169919928294ull, 0x2c542e6e5dc73c1aull, 0x5d911aab99ef438full, 0xd0aeaaec6fe5e776ull, 0x44687c73992dd639ull, 0x633788ab01e317a6ull }}, {{ 0x8e7ae1faffb919cdull, 0xbb49d04fa9c8590aull, 0xa7ab0ab40358a397ull, 0x26d2ad3c5efb0a9full, 0xac14dc83fbca5e42ull, 0xe02b56ae12deec7eull }}, {{ 0x90ccd3cdfd3b01fdull, 0x50e2231ca1d37a69ull, 0x8cae6b08217663edull, 0x843ac45bb5ce6a3cull, 0xb8d09d27d5e7ae95ull, 0xc1b162ccbcb53cf2ull }}, {{ 0xa800460be44e13e4ull, 0x28d55f1e5242c81full, 0x7ed02e514e9fe745ull, 0x2a4bab951a10265dull, 0x3826238e5b0cd1d7ull, 0x90eddbff5f14617bull }}, {{ 0x9002bc76eb0cc6e4ull, 0x9855b72f369bd13cull, 0xf421cf2d123f08b3ull, 0xa6f4b3d304a17fa6ull, 0x317d638f8e803267ull, 0xa94a97f9b6cbced0ull }}, {{ 0xa01b5ca52e7fc4e6ull, 0xf35927d822162c5dull, 0x895217c2b6765703ull, 0x858f063e2e4efc85ull, 0xeee5e39b9101f80cull, 0x9ce9efc123f61421ull }}, {{ 0x41119e73d0fdb0faull, 0x817b8e7154ddbba8ull, 0x5d34ed9b209f6627ull, 0x37963e6dcf15dd37ull, 0x54fae413aa13b07dull, 0x21235d8b679cc953ull }}, {{ 0x8ab0308629e8e9c2ull, 0x0ed3906d50a95492ull, 0xa411480f4639fd8bull, 0x2bde704a16daa429ull, 0x51cce8c4a4c4e4e4ull, 0x4b61a7720c1fdd41ull }}, {{ 0x6ae1e53da3192195ull, 0x9443a445269d4db9ull, 0x68acd098be43e76eull, 0xb6b062e4e48a69a0ull, 0x320117ae6fb0f0e9ull, 0xf1d08a74793ea48dull }}, {{ 0x2cd2f4685efb4fcdull, 0xcaa46ab38225093eull, 0x16c025f76ea70a51ull, 0x22e3dcf0ed682044ull, 0xf40aecd05ce96921ull, 0x7225688cbc726d83ull }}, {{ 0xc03d8c13b5d11e02ull, 0xea6c2b0315725c6dull, 0xe3817baa52866731ull, 0x5ce6a169461142a8ull, 0x886d4023a11e1b4bull, 0x7576157f5c784727ull }}, {{ 0x826778c51a2b2c18ull, 0x2839ae1ed6779c49ull, 0xe30ed4a7394007f3ull, 0xa1024e1cbcac9a98ull, 0x544481644b2d10f1ull, 0x969cd6f99cb2c78bull }}, {{ 0x180ab7b305afb8f3ull, 0x9240cd3460ac1adfull, 0xde944e883c804f7full, 0x4a170d1f5ebe09f8ull, 0x4aad0deaefc2a970ull, 0xe22065c01efbcb71ull }}, {{ 0xf06b2cfe38dd397cull, 0xb688040bc6b90cb6ull, 0xb1cb11525d031afbull, 0xe4e68339b36c63b8ull, 0xeac28b2d5d9a9e62ull, 0xd543f98135d5f26cull }}, {{ 0x642fc1ee38a43ed8ull, 0x21502875c33a7f25ull, 0xf1eead37a21f0dd5ull, 0xf1012041023be536ull, 0x2b996fc5a80a2fdcull, 0x54a7bf0c1a5b7841ull }}, {{ 0xe9dd934e366a7473ull, 0x4d219499a048f775ull, 0x7352c42c55368a53ull, 0x6a0b428a1656f425ull, 0xb3fe5db89065dea1ull, 0x4e8d76790792b28bull }}, {{ 0x22a7c10e20288c7aull, 0x034fce0042d9aa9bull, 0x813ba9bb54216741ull, 0x24709964df658976ull, 0x07efa935a3fab24eull, 0x1186a0ba4bbaf975ull }}, {{ 0x5a8d8a8d41957cc3ull, 0x211e0c029c80aa0full, 0x0c54a151494e088aull, 0x6c65fdf0b9f75ea1ull, 0x4f5c9c1867caf70dull, 0xaf424746f54dbe92ull }}, {{ 0x898769848fd6df9eull, 0x4b2c781a1d06a499ull, 0x7b4e4d2cdd0c5565ull, 0x3bfbeb6743a9b24aull, 0x199e18f40deda686ull, 0xd896c8c5950971b7ull }}, {{ 0x5f4a1f2d9e64bc30ull, 0xefbcb10522426dffull, 0xd10f03c0a27b55f4ull, 0x57d73208a4a0f6e8ull, 0x002cf9888b48813eull, 0x75e3d7b7d25e7127ull }}, {{ 0xb8e537c82fef59dfull, 0x5d5eea3356984bf9ull, 0x2a96258658d15b91ull, 0x6e67f4566e49a518ull, 0x01c1bf5570d50c6full, 0x9ae66d2e37b06b86ull }}, {{ 0x38f42dd1df5982b9ull, 0xa5b5260161f2f7c1ull, 0xa9dd773f782d93adull, 0x500f8b604ee072f1ull, 0x1191795668527c5aull, 0x0d0043ce2ce4333cull }}, {{ 0x3989ca32b97f1b3eull, 0x79137c0dd37dad8cull, 0xa2a6a87ab1c7c4c8ull, 0x209b71c314c47d70ull, 0xafaebd601338db87ull, 0x8202a60dc0ea0058ull }}, {{ 0x3f61e5fb3ef7106full, 0xbac2d88a42e8c77aull, 0x5a8294caf1cdafd4ull, 0x4612719ecface666ull, 0xdcd365c0c0389347ull, 0x141a7c8989240376ull }}, {{ 0x79d2fbd075a6a454ull, 0x4b9c75669d17cac6ull, 0x8919cfed7208de4full, 0xbcb870341cc0ffffull, 0xa041f9878235c0c8ull, 0xc908dd5f5b6822a4ull }}, {{ 0xc23dd62498826b4bull, 0xf41c960222edebc0ull, 0x5b021f467458af18ull, 0x5f3462091f89fffbull, 0x4293bf4b161987d7ull, 0xda58a5b992115a6eull }}, {{ 0x966a5d6df51830efull, 0x891ddc155d4b3587ull, 0x8e1538c08b76d6f9ull, 0xb80bd45b3b63ffd1ull, 0x99c578eedcff4e69ull, 0x8776793fb4ad884eull }}, {{ 0xe027a64b92f1e956ull, 0x5b2a98d5a4f0174bull, 0x8cd4378572a465bfull, 0x30764b9051e7fe2full, 0x01b6b954a1f91021ull, 0x4aa0bc7d0ec75312ull }}, {{ 0xc18c7ef3bd731d5bull, 0x8fa9f8587160e8f6ull, 0x804a2b367a6bf979ull, 0xe49ef3a3330feddbull, 0x11233d4e53baa14bull, 0xea475ce293c93eb4ull }}, {{ 0x8f7cf585667f2589ull, 0x9ca3b3746dc919a3ull, 0x02e5b020c837bebfull, 0xee35845ffe9f4a93ull, 0xab60650f454a4cf6ull, 0x26c9a0d9c5dc7308ull }}, {{ 0x9ae1973600f7775eull, 0x1e65028c49db0063ull, 0x1cf8e147d22d737cull, 0x4e172bbff238e9beull, 0xb1c3f298b4e701a5ull, 0x83e04881ba9c7e56ull }}, {{ 0x0ccfe81c09aaa9b0ull, 0x2ff2197ae28e03e4ull, 0x21b8ccce35c682d9ull, 0x0ce7b57f7639216dull, 0xf1a779f711061075ull, 0x26c2d5114a1cef62ull }}, {{ 0x801f111860aaa0e4ull, 0xdf74feccd98c26e8ull, 0x5138000e19c11c7bull, 0x810d16fa9e3b4e43ull, 0x708ac3a6aa3ca492ull, 0x839c52ace52159ddull }}, {{ 0x0136aaf3c6aa48eaull, 0xba91f4007f798515ull, 0x2c30008d018b1cd6ull, 0x0a82e5ca2e510ea1ull, 0x656ba482a65e6db9ull, 0x241b3ac0f34d82a6ull }}, {{ 0x0c22ad85c2a6d924ull, 0x49b38804fabf32d2ull, 0xb9e005820f6f2063ull, 0x691cf9e5cf2a924bull, 0xf6346d1a7fb0493aull, 0x69104b8981071a7full }}, {{ 0x795ac7399a847b65ull, 0xe1035031cb77fc34ull, 0x42c037149a5743e0ull, 0x1b21c2fa17a9b6f5ull, 0x9e0c4308fce2dc48ull, 0x1aa2f35f0a4708ffull }}, {{ 0xbd8bc840092cd1efull, 0xca2121f1f2afda0cull, 0x9b8226ce0768a6c8ull, 0x0f519dc4eca12594ull, 0x2c7a9e59e0dc9ad1ull, 0x0a5d81b666c659fcull }}, {{ 0x6775d2805bc03359ull, 0xe54b53737ade847full, 0x1315840c4a1683d7ull, 0x993029b13e4b77ceull, 0xbcca2f82c89e0c2aull, 0x67a7112003bf83d9ull }}, {{ 0x0a9a390395820176ull, 0xf4f14282ccb12cfaull, 0xbed7287ae4e1266eull, 0xfbe1a0ec6ef2ae0cull, 0x5fe5db1bd62c79a9ull, 0x0c86ab40257b2681ull }}, {{ 0x6a063a23d7140ea1ull, 0x916c991bfeebc1c4ull, 0x746794ccf0cb8055ull, 0xd6d0493c557acc7full, 0xbefa8f165dbcc0a3ull, 0x7d42b08176cf810dull }}, {{ 0x243e456666c89248ull, 0xae3dfb17f53591acull, 0x8c0bd00167f30357ull, 0x6422dc5b56cbfcfaull, 0x75c996dfa95f8666ull, 0xe49ae50ea41b0a89ull }}, {{ 0x6a6eb60003d5b6d2ull, 0xce6bceef9417b0b9ull, 0x7876200e0f7e216cull, 0xe95c9b9163f7e1c9ull, 0x99dfe4bc9dbb3fffull, 0xee0cf292690e695eull }}, {{ 0x28531c0026592433ull, 0x1036155bc8ece73eull, 0xb49d408c9aed4e40ull, 0x1d9e13ade7aed1deull, 0x02beef5e29507fffull, 0x4c8179b81a901db2ull }}, {{ 0x933f18017f7b6a02ull, 0xa21cd595d941086dull, 0x0e24857e0d450e80ull, 0x282cc4cb0cd432b3ull, 0x1b7559ad9d24fff7ull, 0xfd0ec13109a128f4ull }}, {{ 0xc076f00efad2240full, 0x552057da7c8a5447ull, 0x8d6d36ec84b29106ull, 0x91bfafee8049fafeull, 0x129580c82371ffa7ull, 0xe2938bea604b9989ull }}, {{ 0x84a56095cc356899ull, 0x53436e88dd674acdull, 0x8644253d2ef9aa3full, 0xb17cdf5102e3cdf1ull, 0xb9d707d16273fc8bull, 0xd9c37727c2f3ff5aull }}, {{ 0x2e75c5d9fa1615fcull, 0x40a25158a608ec07ull, 0x3ea97463d5c0a679ull, 0xeee0b92a1ce60b6full, 0x42664e2dd887dd74ull, 0x81a2a78d9d87f98bull }}, {{ 0xd099ba83c4dcdbdaull, 0x86572d767c593847ull, 0x729e8be6598680bcull, 0x54c73ba520fc7258ull, 0x97ff0dca754ea691ull, 0x105a8b88274fbf70ull }}, {{ 0x26014925b0a09685ull, 0x3f67c6a0db7c32ceull, 0x7a3176ff7f41075dull, 0x4fc8547349dc7774ull, 0xeff689e8951281adull, 0xa3897351891d7a65ull }}, {{ 0x7c0cdb78e645e12full, 0x7a0dc24892d9fc0dull, 0xc5eea5faf88a49a4ull, 0x1dd34c80e29caa8cull, 0x5fa16315d2b910c5ull, 0x635e812f5b26c7fbull }}, {{ 0xd88092b8febacbd2ull, 0xc48996d5bc83d886ull, 0xbb527bcdb566e06cull, 0x2a40fd08da1ea97full, 0xbc4ddeda3b3aa7b3ull, 0xe1b10bd98f83cfd1ull }}, {{ 0x7505bb39f34bf637ull, 0xad5fe4595d267544ull, 0x5138d6091604c43full, 0xa689e25885329efdull, 0x5b0ab486504a8cffull, 0xd0ea767f9b261e31ull }}, {{ 0x9239504380f79e21ull, 0xc5beeb7da38094acull, 0x2c385c5adc2faa7cull, 0x8162d77533fa35e5ull, 0x8e6b0d3f22e981fcull, 0x2928a0fc0f7d2dedull }}, {{ 0xb63d22a309ac2d4eull, 0xb97532e86305cebdull, 0xba339b8c99dca8dfull, 0x0ddc6a9407c61af3ull, 0x902e84775d1f13ddull, 0x9b9649d89ae3cb47ull }}, {{ 0x1e635a5e60b9c50aull, 0x3e93fd13de3a1369ull, 0x4604137e029e98bdull, 0x8a9c29c84dbd0d85ull, 0xa1d12ca9a336c6a2ull, 0x13dee2760ce5f0cbull }}, {{ 0x2fe187afc741b260ull, 0x71c7e2c6ae44c21bull, 0xbc28c2ec1a31f764ull, 0x6a19a1d309628734ull, 0x522bbea06023c259ull, 0xc6b4d89c80fb67f4ull }}, {{ 0xdecf4cddc890f7bbull, 0x71cedbc2ceaf950full, 0x59979d3905f3a9ecull, 0x2500523e5dd9480full, 0x35b57243c165977eull, 0xc310761d09d20f8bull }}, {{ 0xb41900a9d5a9ad50ull, 0x7214959c12dbd29eull, 0x7fec243a3b84a33cull, 0x7203366faa7cd099ull, 0x191676a58df7eaedull, 0x9ea49d2262349b70ull }}, {{ 0x08fa06a258a0c520ull, 0x74cdd818bc963a33ull, 0xff396a46532e605cull, 0x7420205ca8e025feull, 0xfae0a2778baf2d46ull, 0x326e2357d60e1260ull }}, {{ 0x59c442577647b340ull, 0x900a70f75dde45feull, 0xf83e26bf3fcfc39cull, 0x8941439e98c17bf5ull, 0xccc658ab74d7c4c0ull, 0xf84d616e5c8cb7c9ull }}, {{ 0x81aa976a9ecd0084ull, 0xa06869a9aaaebbefull, 0xb26d83787e1da41dull, 0x5c8ca431f78ed79bull, 0xffbf76b2906daf85ull, 0xb305ce4f9d7f2de1ull }}, {{ 0x10a9ea2a34020524ull, 0x441420a0aad3575bull, 0xf84722b4ed286928ull, 0x9d7e69f3ab946c14ull, 0xfd7aa2f9a448db35ull, 0xfe3a0f1c26f7cad3ull }}, {{ 0xa6a325a60814336dull, 0xa8c94646ac41698eull, 0xb2c75b1143941b92ull, 0x26f02384b3cc38d1ull, 0xe6ca5dc06ad89018ull, 0xee44971985adec47ull }}, {{ 0x825f787c50ca023full, 0x97dcbec2ba8e1f92ull, 0xfbc98eaca3c913baull, 0x8561632f05fa3830ull, 0x03e7a9842c75a0f1ull, 0x4eade6ff38cb3acfull }}, {{ 0x17bab4db27e41672ull, 0xee9f739b498d3bb9ull, 0xd5df92be65dac549ull, 0x35cddfd63bc631e9ull, 0x270c9f29bc98496full, 0x12cb05f837f04c16ull }}, {{ 0xed4b108f8ee8e073ull, 0x523a8410df84553aull, 0x5abbbb6ffa8bb4e3ull, 0x1a0abe5e55bdf322ull, 0x867e37a15df2de58ull, 0xbbee3bb22f62f8ddull }}, {{ 0x44eea59b9518c482ull, 0x364928a8bb2b544dull, 0x8b55525fc97510e1ull, 0x046b6faf596b7f57ull, 0x40ee2c4dab7caf71ull, 0x574e54f5d9ddb8a7ull }}, {{ 0xb1527813d2f7ad17ull, 0x1edb96974fb14b04ull, 0x715537bdde92a8ccull, 0x2c325cd97e32f96bull, 0x894dbb08b2deda6aull, 0x690f519a82a93688ull }}, {{ 0xed38b0c63dacc2e6ull, 0x3493e1e91cecee2eull, 0x6d542d6ab1ba97f9ull, 0xb9f7a07eedfdbe32ull, 0x5d094e56fcb48825ull, 0x1a9930091a9c2155ull }}, {{ 0x4436e7be68bf9cf9ull, 0x0dc6d31b21414dd5ull, 0x4549c62af149efbcull, 0x43ac44f54be96df8ull, 0xa25d0f65df0d5179ull, 0x09fbe05b0a194d55ull }}, {{ 0xaa250d70177c21b7ull, 0x89c43f0f4c8d0a54ull, 0xb4e1bdad6ce35d58ull, 0xa4bab194f71e4bb2ull, 0x57a299fab6852ebcull, 0x63d6c38e64fd0558ull }}, {{ 0xa5728660ead95121ull, 0x61aa7698fd82674eull, 0x10d168c640e1a575ull, 0x6f4aefd1a72ef4fbull, 0x6c5a03cb2133d35eull, 0xe663a38ff1e23573ull }}, {{ 0x76793fc92c7d2b4aull, 0xd0a8a1f9e7180912ull, 0xa82e17be88d07695ull, 0x58ed5e3087d591ceull, 0x3b8425ef4c0641b0ull, 0xffe4639f72d61682ull }}, {{ 0xa0bc7ddbbce3b0e5ull, 0x269653c306f05ab8ull, 0x91cced715824a1daull, 0x7945ade54e57b212ull, 0x53297b58f83e90e3ull, 0xfeebe43a7c5ce116ull }}, {{ 0x475cea9560e4e8f7ull, 0x81df459e45638b36ull, 0xb201466d716e5285ull, 0xbcb8caf50f6cf4b9ull, 0x3f9ed179b271a8e2ull, 0xf536ea48dba0cadfull }}, {{ 0xc9a129d5c8f119a2ull, 0x12b8b82eb5e3701eull, 0xf40cc0466e4f3937ull, 0x5f37ed929a418f40ull, 0x7c342ec0f87098dbull, 0x942526d89447ecb8ull }}, {{ 0xe04ba259d96b0054ull, 0xbb3731d31ae26133ull, 0x887f82c04f183c26ull, 0xb82f47ba068f9889ull, 0xda09d389b465f891ull, 0xc9738475cacf3f34ull }}, {{ 0xc2f457827e2e034bull, 0x5027f23f0cd7cc06ull, 0x54fb1b8316f25983ull, 0x31d8cd44419bf55full, 0x846243610bfbb5b1ull, 0xde832c99ec187810ull }}, {{ 0x9d8b6b18edcc20f2ull, 0x218f7676806df843ull, 0x51cf131ee5777f21ull, 0xf27804aa901795b9ull, 0x2bd6a1ca77d518ebull, 0xb11fbe0338f4b0a5ull }}, {{ 0x27722ef949f94975ull, 0x4f9aa0a1044bb2a4ull, 0x3216bf34f6aaf74bull, 0x78b02ea9a0ebd93dull, 0xb66251e8ae52f937ull, 0xeb3d6c20398ee673ull }}, {{ 0x8a75d5bce3bcde95ull, 0x1c0a464a2af4fa69ull, 0xf4e37811a2ada8f1ull, 0xb6e1d2a049367c63ull, 0x1fd73316cf3dbc2aull, 0x306639423f950085ull }}, {{ 0x689a5960e560b1cfull, 0x1866bee5ad91c81full, 0x90e2b0b05ac8996bull, 0x24d23a42dc20dbe7ull, 0x3e67fee4186959abull, 0xe3fe3c967bd20533ull }}, {{ 0x16077dc8f5c6f214ull, 0xf40374f8c7b1d13aull, 0xa8dae6e38bd5fe2eull, 0x7036469c9948970bull, 0x700ff4e8f41d80afull, 0xe7ee5de0d6343400ull }}, {{ 0xdc4ae9d999c574c8ull, 0x882291b7ccf22c44ull, 0x988d04e3765bedd5ull, 0x621ec21dfcd5e674ull, 0x609f9119892706daull, 0x0f4faac85e0a0804ull }}, {{ 0x9aed228001b68fcbull, 0x5159b12e0175bab0ull, 0xf58230e29f974a57ull, 0xd533952be05b008dull, 0xc63baaff5b864487ull, 0x991cabd3ac64502bull }}, {{ 0x0d43590011219deeull, 0x2d80ebcc0e994ae6ull, 0x9715e8da3be8e769ull, 0x5403d3b6c38e058bull, 0xbe54adf9933ead4eull, 0xfb1eb644bbeb21b5ull }}, {{ 0x84a17a00ab502b51ull, 0xc70935f891fcecfcull, 0xe6db188657190a1bull, 0x48264523a38c3773ull, 0x6f4ecbbfc072c50full, 0xcf331eaf572f5119ull }}, {{ 0x2e4ec406b121b12aull, 0xc65c1bb5b3e141ddull, 0x048ef53f66fa6515ull, 0xd17eb364637a2a87ull, 0x5913f57d847bb298ull, 0x17ff32d967d92afeull }}, {{ 0xcf13a842eb50eba2ull, 0xbf99151906cc92a3ull, 0x2d95947a05c7f2d9ull, 0x2ef301ebe2c5a946ull, 0x7ac796e72cd4f9f8ull, 0xeff7fc7e0e7badefull }}, {{ 0x16c4929d31293456ull, 0x7bfad2fa43fdba66ull, 0xc7d7ccc439cf7c81ull, 0xd57e1336dbb89cbdull, 0xcbcbe507c051c3b1ull, 0x5fafdcec90d4cb5aull }}, {{ 0xe3adba23eb9c0b59ull, 0xd7cc3dc6a7e947fcull, 0xce6dffaa421add0eull, 0x56ecc02495361f69ull, 0xf5f6f24d8331a4f2ull, 0xbcdea13da84ff18bull }}, {{ 0xe4c9456734187178ull, 0x6dfa69c28f1ccfe0ull, 0x104bfca6950ca294ull, 0x653f816dd41d3a22ull, 0x9ba577071ff07177ull, 0x60b24c68931f6f77ull }}, {{ 0xefdcb60808f46eb3ull, 0x4bc8219997201ec8ull, 0xa2f7de81d27e59ccull, 0xf47b0e4a49244554ull, 0x1476a6473f646ea9ull, 0xc6f6fc15bf3a5aacull }}, {{ 0x5e9f1c50598c5300ull, 0xf5d14fffe74133d9ull, 0x5daeb11238ef81faull, 0x8cce8ee6db6ab54eull, 0xcca27ec879ec52a3ull, 0xc5a5d8d978478ab8ull }}, {{ 0xb2371b237f7b3e05ull, 0x9a2d1fff088c067dull, 0xa8d2eab6395b13cdull, 0x80119504922b150full, 0xfe58f3d4c33b3a63ull, 0xb87a787eb2cb6b37ull }}, {{ 0xf6270f62fad06c2eull, 0x05c33ff6557840e8ull, 0x983d2b1e3d8ec608ull, 0x00afd22db5aed29cull, 0xef79864fa05047e3ull, 0x34c8b4f2fbf2302full }}, {{ 0x9d8699ddcc2439cfull, 0x39a07f9f56b28919ull, 0xf263af2e6793bc50ull, 0x06de35c918d43a1dull, 0x5abf3f1c4322cedeull, 0x0fd7117dd775e1dfull }}, {{ 0x274202a9f96a4211ull, 0x4044fc3962f95b00ull, 0x77e4d7d00bc55b22ull, 0x44ae19daf84a452bull, 0x8b78771a9f5c14acull, 0x9e66aeea6a9ad2b9ull }}, {{ 0x88941aa3be2694adull, 0x82b1da3dddbd8e01ull, 0xaef06e2075b58f56ull, 0xaecd028db2e6b3b2ull, 0x72b4a70a3998cebaull, 0x3002d5282a0c3b3full }}, {{ 0x55c90a656d81cec6ull, 0x1af2866aa9678c0full, 0xd5644d4499179961ull, 0xd4021988fd0304faull, 0x7b0e86663ff8134aull, 0xe01c5391a47a507aull }}, {{ 0x59da67f6471213b9ull, 0x0d79402a9e0b7899ull, 0x55eb04adfaebfdcbull, 0x4814ff59e21e31ccull, 0xce913ffe7fb0c0ecull, 0xc11b43b06cc724c8ull }}, {{ 0x82880f9ec6b4c53aull, 0x86bc81aa2c72b5fdull, 0x5b2e2ecbcd37e9eeull, 0xd0d1f982d52df1fbull, 0x11ac7ff0fce7893aull, 0x8b10a4e43fc76fd8ull }}, {{ 0x19509c33c30fb443ull, 0x435d10a5bc7b1be7ull, 0x8fcdd3f6042f2351ull, 0x2833bf1c53cb73d1ull, 0xb0bcff69e10b5c4cull, 0x6ea670ea7dca5e70ull }}, {{ 0xfd261a059e9d0a9bull, 0xa1a2a6795ccf1706ull, 0x9e0a479c29d7612cull, 0x9205771b45f2862full, 0xe761fa22ca719af9ull, 0x52806928e9e7b066ull }}, {{ 0xe37d043832226a11ull, 0x505a80bda016e645ull, 0x2c66cc19a269cbbeull, 0xb436a710bb793ddcull, 0x09d3c55be8700dbfull, 0x39041b99230ce405ull }}, {{ 0xe2e22a31f55824a8ull, 0x2389076840e4febaull, 0xbc03f9005821f56full, 0x0a2286a752bc6a99ull, 0x6245b5971460897dull, 0x3a2913fb5e80e832ull }}, {{ 0xdcd5a5f395716e94ull, 0x635a4a1288f1f34cull, 0x5827ba0371539657ull, 0x655942893b5c2a01ull, 0xd6b917e6cbc55ee2ull, 0x459ac7d1b10911f7ull }}, {{ 0xa0587b83d66e51c4ull, 0xe186e4b959738100ull, 0x718d44226d43df69ull, 0xf57c995c5199a40dull, 0x633aef03f5b5b4d7ull, 0xb80bce30ea5ab3aeull }}, {{ 0x4374d326604f31a5ull, 0xcf44ef3d7e830a06ull, 0x6f84a95844a6ba22ull, 0x96ddfd9b30006886ull, 0xe04d56279919106full, 0x30760de9278b04cfull }}, {{ 0xa2903f7fc317f071ull, 0x18b15866f11e643eull, 0x5b2e9d72ae83455cull, 0xe4abe80fe0041540ull, 0xc3055d8bfafaa45bull, 0xe49c8b1b8b6e301eull }}, {{ 0x59a27afd9eef646dull, 0xf6ed74056b2fea72ull, 0x8fd2267ad120b598ull, 0xeeb7109ec028d483ull, 0x9e35a777cdca6b96ull, 0xee1d6f13724de133ull }}, {{ 0x8058cde83559ec3eull, 0xa54688362fdf2877ull, 0x9e3580cc2b4717f9ull, 0x5326a63381984d23ull, 0x2e188aae09e833e5ull, 0x4d2656c2770acc04ull }}, {{ 0x03780b1215833a6cull, 0x74c1521ddeb794abull, 0x2e1707f9b0c6efc0ull, 0x3f827e030ff30364ull, 0xccf56acc631206f5ull, 0x037f6398a66bf829ull }}, {{ 0x22b06eb4d720483aull, 0x8f8d352ab32bceaeull, 0xcce64fc0e7c55d84ull, 0x7b18ec1e9f7e21e9ull, 0x01962bfbdeb44594ull, 0x22f9e3f68037b1a2ull }}, {{ 0x5ae453106742d247ull, 0x9b8413aaffb612cdull, 0x00ff1d890db5a72dull, 0xcef939323aed5322ull, 0x0fddb7d6b30ab7ccull, 0x5dc2e7a1022cf054ull }}, {{ 0x8ceb3ea4089c36c4ull, 0x1328c4adfd1cbc05ull, 0x09f7275a891887c8ull, 0x15bc3bf64d453f54ull, 0x9ea92e62fe6b2e00ull, 0xa99d0c4a15c16348ull }}, {{ 0x81307268561a23a7ull, 0xbf97aecbe31f5837ull, 0x63a789895af54dd0ull, 0xd95a579f04b47948ull, 0x329bcfddf02fcc00ull, 0xa0227ae4d98de0d6ull }}, {{ 0x0be478135d056489ull, 0x7becd3f6df39722bull, 0xe48b5f5d8d950a27ull, 0x7d876c362f0cbcd3ull, 0xfa161eab61ddf808ull, 0x4158ccf07f8ac85dull }}, {{ 0x76ecb0c1a235ed5full, 0xd74047a4b83e75aeull, 0xed71b9a787d2658aull, 0xe74a3a1dd67f6046ull, 0xc4dd32b1d2abb054ull, 0x8d780164fb6bd3abull }}, {{ 0xa53ee790561b45b1ull, 0x6882cc6f327098d0ull, 0x4671408b4e37f76cull, 0x08e6452a60f9c2c5ull, 0xb0a3faf23ab4e351ull, 0x86b00df1d23644b5ull }}, {{ 0x74750ba35d10b8eeull, 0x151bfc57f865f826ull, 0xc06c85710e2faa3cull, 0x58feb3a7c9c19bb4ull, 0xe667cd764b10e12aull, 0x42e08b72361eaf18ull }}, {{ 0x8c927461a2a7394full, 0xd317db6fb3fbb180ull, 0x843d366a8ddca658ull, 0x79f3048de190150full, 0x000e069eeea8cba7ull, 0x9cc572761d32d6f9ull }}, {{ 0x7db88bd05a883d16ull, 0x3eee925d07d4ef05ull, 0x2a6420298a9e7f78ull, 0xc37e2d8acfa0d29bull, 0x008c42355297f48aull, 0x1fb6789d23fc65baull }}, {{ 0xe9357623895262daull, 0x7551b7a24e515636ull, 0xa7e9419f6a30fab2ull, 0xa2edc76c1c483a0full, 0x057a961539ef8d6bull, 0x3d20b62367dbf944ull }}, {{ 0x1c169d635d37dc84ull, 0x95312c570f2d5e25ull, 0x8f1c903a25e9caf8ull, 0x5d49ca391ad2449cull, 0x36c9dcd4435b8634ull, 0x63471d620e97bca8ull }}, {{ 0x18e225e1a42e9d2cull, 0xd3ebbb6697c5ad73ull, 0x971da2457b21edb5ull, 0xa4e1e63b0c36ae1dull, 0x23e2a04aa1933e0bull, 0xe0c725d491ed5e92ull }}, {{ 0xf8d57ad069d223b5ull, 0x47355201edb8c67eull, 0xe72856b6cf53491aull, 0x70d2fe4e7a22cd27ull, 0x66da42ea4fc06c74ull, 0xc7c77a4db345b1b5ull }}, {{ 0xb856cc2422356512ull, 0xc81534134937c0f5ull, 0x079363241940db06ull, 0x683def10c55c038full, 0x04869d271d843c8cull, 0xcdcac70900b8f116ull }}, {{ 0x3363f9695615f2b3ull, 0xd0d408c0dc2d8999ull, 0x4bc1df68fc888e43ull, 0x126b56a7b5982396ull, 0x2d422387272a5d7cull, 0x09ebc65a07396adcull }}, {{ 0x01e7be1d5cdb7afaull, 0x2848578899c75ffcull, 0xf592ba19dd558ea6ull, 0xb831628d17f163deull, 0xc495634787a7a6d8ull, 0x6335bf84483e2c99ull }}, {{ 0x130d6d25a092cdc6ull, 0x92d36b5601c9bfd8ull, 0x97bb4502a557927dull, 0x31edd982ef6de6b5ull, 0xadd5e0cb4c8c8477ull, 0xe0197b2ad26dbe01ull }}, {{ 0xbe86437845bc09b8ull, 0xbc42315c11e17e70ull, 0xed50b21a756bb8e7ull, 0xf34a7f1d5a4b0317ull, 0xca5ac7f0fd7d2ca7ull, 0xc0fecfac38496c10ull }}, {{ 0x713ea2b2b9586135ull, 0x5a95ed98b2cef067ull, 0x4526f5089635390dull, 0x80e8f72586ee1eefull, 0xe78bcf69e6e3be8full, 0x89f41cba32de38a7ull }}, {{ 0x6c725afb3d73cc11ull, 0x89db47f6fc15640aull, 0xb3859255de143a85ull, 0x0919a777454d3558ull, 0x0b761a2304e5719bull, 0x63891f45fcae368full }}, {{ 0x3c778dd06685f8abull, 0x6290cfa5d8d5e868ull, 0x0337b75aacca4937ull, 0x5b008aa8b5041577ull, 0x729d055e30f6700eull, 0xe35b38bbdece2196ull }}, {{ 0x5cab8a24013bb6b0ull, 0xd9a81c7a785b1412ull, 0x202d298abfe6dc29ull, 0x8e056a971228d6a6ull, 0x7a2235ade9a0608full, 0xe1903756b40d4fe0ull }}, {{ 0x9eb365680c5522e1ull, 0x80911cc8b38ec8b7ull, 0x41c39f6b7f0499a2ull, 0x8c3629e6b598627dull, 0xc55618cb2043c59bull, 0xcfa2296308851ec4ull }}, {{ 0x3301f6107b535cc9ull, 0x05ab1fd70393d72cull, 0x91a43a32f62e0059ull, 0x7a1da30317f3d8e4ull, 0xb55cf7ef42a5b813ull, 0x1c559dde553333afull }}, {{ 0xfe139ca4d1419fdfull, 0x38af3e6623c667b9ull, 0xb06a45fd9dcc037aull, 0xc5285e1eef8678edull, 0x15a1af589a7930c2ull, 0x1b582aaf540004ddull }}, {{ 0xecc41e702c903eb5ull, 0x36d86ffd65c00d43ull, 0xe426bbe829f822c6ull, 0xb393ad355b40b948ull, 0xd850d97608bbe79bull, 0x1171aad9480030a2ull }}, {{ 0x3fa93061bda27313ull, 0x24745fe5f98084a7ull, 0xe9835711a3b15bbeull, 0x03c4c41590873cd8ull, 0x73287e9c57570c15ull, 0xae70ac7cd001e65cull }}, {{ 0x7c9be3d168587ebbull, 0x6c8bbefbbf052e88ull, 0x1f2166b064ed956dull, 0x25afa8d7a5486079ull, 0x7f94f21b696678d2ull, 0xd066bce02012ff9cull }}, {{ 0xde16e62e1374f34full, 0x3d7575d57633d154ull, 0x374e02e3f147d646ull, 0x78dc986c74d3c4bbull, 0xfbd175121e00b835ull, 0x240360c140bdfc1cull }}, {{ 0xace4fdccc291811aull, 0x66969a569e062d50ull, 0x290c1ce76cce5ebeull, 0xb89df43c9045af50ull, 0xd62e92b52c073216ull, 0x6821c78c876bd921ull }}, {{ 0xc0f1e9ff99af0b02ull, 0x01e207622c3dc526ull, 0x9a79210a400fb370ull, 0x362b8a5da2b8d921ull, 0x5dd1bb13b847f4e3ull, 0x1151cb7d4a367b52ull }}, {{ 0x897323fc00d66e15ull, 0x12d449d5ba69b383ull, 0x08bb4a66809d0260ull, 0x1db367a85b387b50ull, 0xaa314ec532cf90e0ull, 0xad31f2e4e620d137ull }}, {{ 0x5e7f67d808604cd2ull, 0xbc4ae25948210323ull, 0x5750e801062217c0ull, 0x29020c939034d120ull, 0xa5ed13b3fc1ba8c1ull, 0xc3f37cf0fd482c2cull }}, {{ 0xb0fa0e7053c30035ull, 0x5aecd77cd14a1f61ull, 0x6929100a3d54ed87ull, 0x9a147dc3a2102b43ull, 0x7b42c507d914978bull, 0xa782e169e4d1b9beull }}, {{ 0xe9c49063459e0216ull, 0x8d406ae02ce539d0ull, 0x1b9aa06665514749ull, 0x04cce9a454a1b0a2ull, 0xd09bb24e7acdeb74ull, 0x8b1cce22f0314170ull }}, {{ 0x21ada3e0b82c14d8ull, 0x84842cc1c0f44229ull, 0x140a43fff52cc8dfull, 0x3001206b4e50e655ull, 0x2614f710cc0b3288ull, 0x6f200d5d61ec8e68ull }}, {{ 0x50c866c731b8d06cull, 0x2d29bf91898a959bull, 0xc866a7ff93bfd8bbull, 0xe00b44310f28ff52ull, 0x7cd1a6a7f86ff951ull, 0x574085a5d33d9011ull }}, {{ 0x27d403c7f138243dull, 0xc3a17baf5f69d811ull, 0xd4028ffbc57e774full, 0xc070a9ea9799f93bull, 0xe030828fb45fbd32ull, 0x6885387a4067a0aeull }}, {{ 0x8e4825cf6c316a5full, 0xa44ed4d9ba2270abull, 0x48199fd5b6f0a91dull, 0x8466a329ec03bc56ull, 0xc1e5199d0bbd63fbull, 0x153434c6840c46d4ull }}, {{ 0x8ed17a1a39ee27b2ull, 0x6b145081455866b3ull, 0xd1003e5925669b28ull, 0x2c025fa338255b5eull, 0x92f300227565e7d3ull, 0xd40a0fc1287ac44full }}, {{ 0x942ec506434d8cefull, 0x2ecb250cb5740303ull, 0x2a026f7b76020f94ull, 0xb817bc60317591b4ull, 0xbd7e015895fb0e3full, 0x48649d8b94cbab1bull }}, {{ 0xc9d3b23ea1078159ull, 0xd3ef727f16881e23ull, 0xa4185ad29c149bc9ull, 0x30ed5bc1ee97b109ull, 0x66ec0d75dbce8e7dull, 0xd3ee2773cff4af15ull }}, {{ 0xe244f6724a4b0d77ull, 0x475a78f6e1512d65ull, 0x68f38c3a18ce15e2ull, 0xe945959351ecea60ull, 0x0538869a961190e3ull, 0x474d8a861f8ed6d6ull }}, {{ 0xd6b1a076e6ee86a5ull, 0xc988b9a4cd2bc5faull, 0x19837a44f80cdad6ull, 0x1cb7d7c1334127c4ull, 0x34354209dcafa8e7ull, 0xc907693d3b94645cull }}, {{ 0x62f044a50551426eull, 0xdf57407003b5bbccull, 0xff22c6b1b0808c63ull, 0x1f2e6d8c008b8da8ull, 0x0a1494629edc9907ull, 0xda4a1c6453cbeb9aull }}, {{ 0xdd62ae72352c984eull, 0xb9688460251955fbull, 0xf75bc2f0e5057be6ull, 0x37d0477805738899ull, 0x64cdcbda349dfa47ull, 0x86e51beb45f73404ull }}, {{ 0xa5dad07613bdf30eull, 0x3e152bc172fd5bd6ull, 0xa9959d68f236d703ull, 0x2e22cab036835603ull, 0xf009f6860e2bc6c8ull, 0x44f31730bba8082bull }}, {{ 0x7a8c249cc56b7e8aull, 0x6cd3b58e7de59662ull, 0x9fd8261976246620ull, 0xcd5beae221215c24ull, 0x6063a13c8db5c3d1ull, 0xb17ee7e7549051b7ull }}, {{ 0xc9796e1fb632f162ull, 0x40451790eaf7dfd8ull, 0x3e717cfe9d6bfd44ull, 0x05972cd54b4d996eull, 0xc3e44c5d8919a632ull, 0xeef50f094da33129ull }}, {{ 0xdebe4d3d1dfd6dd8ull, 0x82b2eba92daebe77ull, 0x706ee1f22637e4aaull, 0x37e7c054f107fe4eull, 0xa6eafba75b007df4ull, 0x5592965d085feba1ull }}, {{ 0xb36f04632be64a6full, 0x1afd349bc8d370aeull, 0x6454d3757e2eeea9ull, 0x2f0d83516a4fef10ull, 0x852dd4898e04eb8aull, 0x57b9dfa253bf3450ull }}, {{ 0x02562bdfb6fee858ull, 0x0de40e15d84266d3ull, 0xeb504296edd5529bull, 0xd687212e271f56a3ull, 0x33ca4d5f8c313365ull, 0x6d42bc5745780b25ull }}, {{ 0x175db6bd25f5136dull, 0x8ae88cda7298043eull, 0x312299e54a553a0eull, 0x61474bcd87396267ull, 0x05e705bb79ec01faull, 0x449b5b68b6b06f74ull }}, {{ 0xe9a923637b92c241ull, 0x6d15808879f02a6cull, 0xeb5a02f4e7544491ull, 0xccc8f607483dd807ull, 0x3b063952c33813c7ull, 0xae11921722e45a88ull }}, {{ 0x209b61e2d3bb968dull, 0x42d70554c361a841ull, 0x31841d91094aadaeull, 0xffd99c48d26a704full, 0x4e3e3d3ba030c5cdull, 0xccafb4e75ceb8952ull }}, {{ 0x4611d2dc4553e181ull, 0x9c66354fa1d0928bull, 0xef2927aa5ceac8ceull, 0xfe801ad838286317ull, 0x0e6e645441e7ba0bull, 0xfedd1109a1335d37ull }}, {{ 0xbcb23c9ab546cf08ull, 0x1bfe151c5225b970ull, 0x579b8ca7a12bd812ull, 0xf1010c723193deefull, 0x904feb4a930d4477ull, 0xf4a2aa604c01a426ull }}, {{ 0x5ef65e0b14c4164bull, 0x17ecd31b35793e67ull, 0x6c137e8c4bb670b5ull, 0x6a0a7c75efc6b559ull, 0xa31f30e9be84acafull, 0x8e5aa7c2f8106981ull }}, {{ 0xb59fac6ecfa8def2ull, 0xef403f1016bc7009ull, 0x38c2f17af5206712ull, 0x2468dc9b5dc3157eull, 0x5f37e921712ebedaull, 0x8f8a8d9db0a41f10ull }}, {{ 0x183cbc541c98b574ull, 0x588276a0e35c6061ull, 0x379d6ecd934406bdull, 0x6c189e11a99ed6eeull, 0xb82f1b4e6bd37485ull, 0x9b698828e66936a3ull }}, {{ 0xf25f5b491df71686ull, 0x7518a248e19bc3caull, 0x2c265407c0a84365ull, 0x38f62cb0a034654eull, 0x31d7111036428d36ull, 0x121f5199001c2265ull }}, {{ 0x77b990db2ba6e13cull, 0x92f656d8d015a5edull, 0xb97f484d8692a1f6ull, 0x399dbee6420bf50dull, 0xf266aaa21e99841eull, 0xb5392ffa011957f3ull }}, {{ 0xad3fa88fb484cc5bull, 0xbd9f647820d87b46ull, 0x3ef8d30741ba53a1ull, 0x402974fe94779289ull, 0x7802aa5531ff292eull, 0x143bdfc40afd6f87ull }}, {{ 0xc47c959d0d2ffb8dull, 0x6839ecb14874d0c2ull, 0x75b83e4891474451ull, 0x819e91f1ccabb95cull, 0xb01aa753f3f79bceull, 0xca56bda86de65b4aull }}, {{ 0xacddd82283dfd37full, 0x12433eecd490279bull, 0x99326ed5acc8ab2eull, 0x1031b371feb53d9cull, 0xe10a894787ac1611ull, 0xe76368944aff90eaull }}, {{ 0xc0aa715926be42faull, 0xb6a075404da18c14ull, 0xfbf85458bfd6afccull, 0xa1f10273f314681dull, 0xca695ccb4cb8dcaaull, 0x09e215caedfba92cull }}, {{ 0x86a86d7b836e9dc0ull, 0x22449483084f78cfull, 0xd7b34b777e62ddffull, 0x536a18877ecc112bull, 0xe81d9ff0ff389eaaull, 0x62d4d9ed4bd49bbfull }}, {{ 0x429446d32252297eull, 0x56adcd1e531ab81bull, 0x6d00f2aaefdcabf7ull, 0x4224f54af3f8abb6ull, 0x11283f69f83632a7ull, 0xdc508344f64e157full }}, {{ 0x99cac43f57359ef1ull, 0x62ca032f3f0b3110ull, 0x42097aad5e9eb7a9ull, 0x957194ed87b6b520ull, 0xab927a23b21dfa88ull, 0x9b2520b19f0cd6f6ull }}, {{ 0x01ebaa7968183566ull, 0xdbe41fd8766feaa6ull, 0x945ecac5b2332c9dull, 0xd66fd1474d231342ull, 0xb3b8c564f52bc955ull, 0x0f7346f0368065a2ull }}, {{ 0x1334a8be10f215fbull, 0x96e93e74a05f2a7cull, 0xcbb3ebb8f5ffbe2aull, 0x605e2cc9035ec099ull, 0x0537b5f193b5dd5aull, 0x9a80c5622103f85bull }}, {{ 0xc00e976ca974dbd1ull, 0xe51c708e43b7a8d8ull, 0xf50735399bfd6da9ull, 0xc3adbfda21b38601ull, 0x342d1b6fc51aa587ull, 0x0907b5d54a27b38eull }}, {{ 0x8091ea3e9e90962bull, 0xf31c658ea52c9877ull, 0x9248144017e648a2ull, 0xa4c97e8551033c13ull, 0x09c3125db30a774dull, 0x5a4d1a54e58d038eull }}, {{ 0x05b3267231a5ddaeull, 0x7f1bf79273bdf4abull, 0xb6d0ca80eefed65dull, 0x6fdef1352a2058c3ull, 0x619eb7a8fe68a908ull, 0x87030750f782238cull }}, {{ 0x38ff8075f07aa8c8ull, 0xf717abb8856b8eaeull, 0x2427e90955f45fa6ull, 0x5eb56c13a54377a5ull, 0xd0332c99f0169a54ull, 0x461e4929ab15637bull }}, {{ 0x39fb049b64ca97d5ull, 0xa6ecb535363392ceull, 0x698f1a5d5b8bbc85ull, 0xb31638c474a2ac73ull, 0x21ffbe0360e2074bull, 0xbd2edba0aed5e2d6ull }}, {{ 0x43ce2e11efe9ee4dull, 0x853f14141e03bc0eull, 0x1f9707a593755d38ull, 0xfede37ac8e5abc82ull, 0x53fd6c21c8d448f4ull, 0x63d49446d45adc5dull }}, {{ 0xa60dccb35f234f03ull, 0x3476c8c92c25588eull, 0x3be64c77c295a435ull, 0xf4ae2cbd8f8b5d15ull, 0x47e63951d84ad991ull, 0xe64dcac44b8c9ba5ull }}, {{ 0x7c89ff01b7611622ull, 0x0ca3d7dbb9757592ull, 0x56fefcad99d86a14ull, 0x8ecdbf679b71a2d4ull, 0xcefe3d3272ec7fb3ull, 0xff09ebaaf37e1474ull }}, {{ 0xdd63f61129cadd55ull, 0x7e666e953e9697b8ull, 0x65f5dec8027424c8ull, 0x94097a0c12705c4bull, 0x15ee63f87d3cfd03ull, 0xf66334ad82eccc90ull }}, {{ 0xa5e79caba1eca550ull, 0xf00051d471e1ed38ull, 0xfb9ab3d018896fd4ull, 0xc85ec478b8639af1ull, 0xdb4fe7b4e461e223ull, 0x9fe00ec71d3ffda0ull }}, {{ 0x7b0c1eb4533e7520ull, 0x6003324c72d34436ull, 0xd40b0620f55e5e51ull, 0xd3b3acb733e40d73ull, 0x911f0d10ebd2d565ull, 0x3ec093c7247fe848ull }}, {{ 0xce79330b4070933dull, 0xc01ff6fc7c40aa20ull, 0x486e3d4995afaf2dull, 0x4504bf2806e88686ull, 0xab3682a9363c55faull, 0x7385c5c76cff12d5ull }}, {{ 0x10bbfe708465c064ull, 0x813fa5dcda86a548ull, 0xd44e64dfd8dcd7c9ull, 0xb22f77904515413eull, 0xb0211a9c1e5b5bc6ull, 0x8339b9ca41f6bc58ull }}, {{ 0xa757f0652bf983e6ull, 0x0c7c7aa0894274d0ull, 0x4b0ff0be78a06ddfull, 0xf5daaba2b2d48c74ull, 0xe14b0a192f9195c2ull, 0x204141e693a35b76ull }}, {{ 0x896f63f3b7bf26f7ull, 0x7cdcca455c989026ull, 0xee9f6770b6444ab6ull, 0x9a8ab45afc4d7c8aull, 0xccee64fbdbafd99dull, 0x428c9301c46192a4ull }}, {{ 0x5e59e7852d7785a8ull, 0xe09fe6b59df5a181ull, 0x523a0a671eaaeb20ull, 0x096b0b8ddb06dd6dull, 0x014ff1d694de8028ull, 0x997dbe11abcfba70ull }}, {{ 0xaf830b33c6ab3893ull, 0xc63f03182b984f0dull, 0x3644680732ad2f48ull, 0x5e2e738a8e44a645ull, 0x0d1f7261d0b10190ull, 0xfee96cb0b61d4860ull }}, {{ 0xdb1e7005c2b035c2ull, 0xbe761ef1b3f31688ull, 0x1eac1047fac3d8d7ull, 0xadd083698eae7eb4ull, 0x833a77d226ea0fa3ull, 0xf51e3ee71d24d3c0ull }}, {{ 0x8f3060399ae21997ull, 0x709d3571077ee158ull, 0x32b8a2cfcba6786dull, 0xca25221f92d0f309ull, 0x2048ae3585249c64ull, 0x932e750723704585ull }}, {{ 0x97e3c2400cd4ffe3ull, 0x6624166a4af4cd75ull, 0xfb365c1df480b446ull, 0xe573553bbc297e5bull, 0x42d6ce17336e1befull, 0xbfd092476262b733ull }}, {{ 0xeee596808051fedaull, 0xfd68e026ed900697ull, 0xd01f992b8d070abfull, 0xf6815455599eef97ull, 0x9c640ce8024d175eull, 0x7e25b6c9d7db2800ull }}, {{ 0x54f7e1050333f480ull, 0xe618c18547a041efull, 0x213bfbb382466b7full, 0xa10d4b5580355beeull, 0x1be881101702e9b5ull, 0xed7923e26e8f9006ull }}, {{ 0x51aeca3220078d00ull, 0xfcf78f34cc429359ull, 0x4c57d50316c032feull, 0x4a84f1570215974dull, 0x17150aa0e61d2118ull, 0x46bb66d8519ba03dull }}, {{ 0x30d3e5f5404b8201ull, 0xe1ab980ffa99c17dull, 0xfb6e521ee381fdf5ull, 0xe9316d6614d7e904ull, 0xe6d26a48fd234af2ull, 0xc352047330144262ull }}, {{ 0xe846fb9482f3140aull, 0xd0b3f09fca018ee3ull, 0xd24f3534e313eb9aull, 0x1bee45fcd06f1a31ull, 0x043826d9e360ed7dull, 0xa1342c7fe0ca97ddull }}, {{ 0x12c5d3cd1d7ec864ull, 0x2707663de40f94e7ull, 0x37181410dec7340cull, 0x174ebbe0245705f2ull, 0x2a318482e1c946e3ull, 0x4c09bcfec7e9eea2ull }}, {{ 0xbbba460326f3d3e9ull, 0x8649fe6ae89bd106ull, 0x26f0c8a8b3c80879ull, 0xe91356c16b663b76ull, 0xa5ef2d1cd1dcc4deull, 0xf86161f3cf235255ull }}, {{ 0x5546bc1f85864718ull, 0x3ee3f02d16162a43ull, 0x8567d69705d054bfull, 0x1ac1638e31fe529dull, 0x7b57c320329fb0b5ull, 0xb3cdd38617613758ull }}, {{ 0x54c3593b373ec6f1ull, 0x74e761c2dcdda6a1ull, 0x360e61e63a234f78ull, 0x0b8de38df3ef3a27ull, 0xd16d9f41fa3ce713ull, 0x060a433ce9cc2974ull }}, {{ 0x4fa17c502873c567ull, 0x9109d19ca0a8824dull, 0x1c8fd2fe45611ab4ull, 0x738ae38b87584588ull, 0x2e483893c66106beull, 0x3c66a06121f99e90ull }}, {{ 0x1c4edb219485b60bull, 0xaa62301e46951705ull, 0x1d9e3deeb5cb0b0dull, 0x836ce3734972b751ull, 0xced235c5bfca4370ull, 0x5c0243cb53c031a1ull }}, {{ 0x1b148f4fcd391c69ull, 0xa7d5e12ec1d2e633ull, 0x282e6b5319ee6e88ull, 0x2240e280de7b292bull, 0x143619b97de6a265ull, 0x9816a5f14581f052ull }}, {{ 0x0ecd991e043b1c1aull, 0x8e5acbd3923cfdffull, 0x91d0313f03505156ull, 0x5688d908b0cf9bafull, 0xca1d013eeb0257f3ull, 0xf0e27b6cb7136334ull }}, {{ 0x9407fb2c2a4f1908ull, 0x8f8bf643b661ebf6ull, 0xb221ec7621232d61ull, 0x61587a56e81c14dbull, 0xe5220c752e176f81ull, 0x68d8d23f26c1e00full }}, {{ 0xc84fcfb9a716fa50ull, 0x9b779ea51fd337a1ull, 0xf5533c9d4b5fc5cfull, 0xcd74c7651118d094ull, 0xf3547c93ccea5b0dull, 0x187836778392c09eull }}, {{ 0xd31e1d4086e5c71cull, 0x12ac32733e402c51ull, 0x95405e24f1bdba1cull, 0x068fc9f2aaf825d1ull, 0x814cddc601278e8aull, 0xf4b220ab23bb8635ull }}, {{ 0x3f2d248544f9c713ull, 0xbab9f8806e81bb32ull, 0xd483ad7171694518ull, 0x419de37aadb17a2full, 0x0d00a9bc0b8b9164ull, 0x8ef546af65533e17ull }}, {{ 0x77c36d34b1c1c6c1ull, 0x4b43b50451114ff6ull, 0x4d24c66e6e1cb2f7ull, 0x902ae2cac8eec5deull, 0x8206a1587373adeaull, 0x9594c2d9f5406ce6ull }}, {{ 0xada2440ef191c38bull, 0xf0a5122b2aad1fa0ull, 0x036fc0504d1efda8ull, 0xa1acdbebd953baafull, 0x14424d748284cb29ull, 0xd7cf9c8394844101ull }}, {{ 0xc856a8956fb1a36aull, 0x6672b5afaac33c46ull, 0x225d83230335e899ull, 0x50c097367d454ad6ull, 0xca97068d192fefa0ull, 0x6e1c1d23cd2a8a0aull }}, {{ 0xd36295d65cf06224ull, 0x007b18dcaba05ac3ull, 0x57a71f5e201b15feull, 0x2785e820e4b4ec5dull, 0xe9e64182fbdf5c43ull, 0x4d19236603a9646bull }}, {{ 0x41d9da5fa163d569ull, 0x04cef89eb4438ba6ull, 0x6c8739ad410edbecull, 0x8b3b1148ef113ba5ull, 0x22fe8f1dd6b99a9full, 0x02fb61fc249dec37ull }}, {{ 0x928287bc4de65618ull, 0x3015b6330aa3747eull, 0x3d4840c48a949738ull, 0x704eacd956ac5476ull, 0x5df1972a63400a3bull, 0x1dd1d3d96e2b3a27ull }}, {{ 0xb9194d5b0aff5cefull, 0xe0d91dfe6a628cf1ull, 0x64d287ad69cde831ull, 0x6312c07d62bb4c9eull, 0xab6fe7a7e0806652ull, 0x2a32467e4db04589ull }}, {{ 0x3afd058e6df9a157ull, 0xc87b2bf027d98171ull, 0xf0394cc6220b11f2ull, 0xdebb84e5db50fe2full, 0xb25f0c8ec503ff37ull, 0xa5f6c0ef08e2b760ull }}, {{ 0x4de237904bc04d69ull, 0xd4cfb7618e7f0e6cull, 0x623cffbd546eb37bull, 0xb35330fa9129eddfull, 0xf7b67d93b227f82eull, 0x7ba3895658db29c6ull }}, {{ 0x0ad62ba2f583061cull, 0x501d29cf90f6903bull, 0xd661fd654c5302d6ull, 0x013fe9c9aba34ab9ull, 0xad20e7c4f58fb1d3ull, 0xd4635d5f788fa1c5ull }}, {{ 0x6c5db45d971e3d14ull, 0x2123a21ba9a1a24eull, 0x5fd3e5f4fb3e1c5full, 0x0c7f21e0b460eb42ull, 0xc3490db1979cf23eull, 0x4be1a5bab59c51b8ull }}, {{ 0x3ba90ba7e72e62c7ull, 0x4b645514a0505710ull, 0xbe46fb91d06d1bb7ull, 0x7cf752c70bc93097ull, 0xa0da88efec21766cull, 0xf6d0794b181b3137ull }}, {{ 0x549a748f07cfdbc6ull, 0xf1eb52ce432366a2ull, 0x6ec5d3b224431528ull, 0xe1a93bc675dbe5edull, 0x4889595f394ea03cull, 0xa424bceef10fec2cull }}, {{ 0x4e088d964e1e95b9ull, 0x73313c0e9f620257ull, 0x53ba44f56a9ed399ull, 0xd09c55c09a96fb46ull, 0xd55d7db83d124260ull, 0x696f61556a9f39baull }}, {{ 0x0c5587df0d31d938ull, 0x7fec589239d41769ull, 0x4546b1962a3443feull, 0x261b598609e5d0bfull, 0x55a6e93262b697c8ull, 0x1e59cd562a38414cull }}, {{ 0x7b574eb683f27c2full, 0xff3b75b64248ea1aull, 0xb4c2efdda60aa7f0ull, 0x7d117f3c62fa2778ull, 0x58851bf7db21edd1ull, 0x2f82055da6328cfbull }}, {{ 0xd16913212778d9d7ull, 0xf852991e96d92508ull, 0x0f9d5ea87c6a8f69ull, 0xe2aef85bddc58ab7ull, 0x753317ae8f534a2eull, 0xdb1435a87df981d1ull }}, {{ 0x2e1abf4b8ab88265ull, 0xb339fb31e47b7258ull, 0x9c25b294dc299a23ull, 0xdad5b396a9b76b26ull, 0x93feecd19940e5d4ull, 0x8eca1894ebbf122eull }}, {{ 0xcd0b78f36b3517f1ull, 0x0043cff2ecd27771ull, 0x1978f9d099a00565ull, 0x8c5903e2a12a2f82ull, 0xc7f5402ffc88fa50ull, 0x93e4f5d13576b5d1ull }}, {{ 0x0272b9823012ef6dull, 0x02a61f7d4038aa72ull, 0xfeb9c226004035f2ull, 0x7b7a26da4ba5db14ull, 0xcf9481dfdd59c725ull, 0xc6f19a2c16a31a31ull }}, {{ 0x187b3f15e0bd5a41ull, 0x1a7d3ae48236a874ull, 0xf341957c02821b74ull, 0xd2c58486f47a8ed1ull, 0x1bcd12bea581c776ull, 0xc57005b8e25f05f2ull }}, {{ 0xf4d076dac765868dull, 0x08e44ced16229488ull, 0x808fd6d819151289ull, 0x3bb72d458cc99433ull, 0x1602bb727711caa4ull, 0xb6603938d7b63b75ull }}, {{ 0x9024a48bc9f74183ull, 0x58eb0142dd59cd59ull, 0x059e6470fad2b95aull, 0x5527c4b77fdfca03ull, 0xdc1b5278a6b1ea6aull, 0x1fc23c386d1e5292ull }}, {{ 0xa16e6d75e3a88f1cull, 0x792e0c9ca582057full, 0x382fec69cc3b3d87ull, 0x538daf2afebde41eull, 0x991138b682f32827ull, 0x3d965a34432f39bcull }}, {{ 0x4e50469ae495971dull, 0xbbcc7e1e771436fcull, 0x31df3c21fa50674aull, 0x4388d7adf36ae92eull, 0xfaac37211d7f9189ull, 0x67df860a9fd8415dull }}, {{ 0x0f22c20cedd7e720ull, 0x55fced30a6ca25dbull, 0xf2b85953c72408ebull, 0xa3586ccb822d1bcdull, 0xcaba274b26fbaf5cull, 0x0ebb3c6a3e728dabull }}, {{ 0x975b94814a6f0743ull, 0x5be143e683e57a8eull, 0x7b337d45c7685931ull, 0x61743ff315c3160bull, 0xeb4588ef85d4d99eull, 0x93505c26707988b5ull }}, {{ 0xe993cd0ce856489dull, 0x96cca70126f6c991ull, 0xd002e4b9ca137bedull, 0xce8a7f7ed99edc72ull, 0x30b7595b3a50802full, 0xc123998064bf571bull }}, {{ 0x1fc60281135ed621ull, 0xe3fe860b85a3dfb3ull, 0x201cef41e4c2d747ull, 0x1168faf480349c7cull, 0xe7297d90472501deull, 0x8b63ff03ef79670full }}, {{ 0x3dbc190ac1b45d4dull, 0xe7f13c733866bcffull, 0x41215892ef9c68ceull, 0xae19cd8d020e1cd9ull, 0x079ee7a2c77212acull, 0x71e7f6275abe069full }}, {{ 0x6958fa6b910ba4feull, 0x0f6c5c80340361f8ull, 0x8b4d75bd5c1c1815ull, 0xcd020782148d207cull, 0x4c350c5bca74babeull, 0x730f9d898b6c4236ull }}, {{ 0x1d79c833aa7471e9ull, 0x9a3b9d020821d3b4ull, 0x710699659918f0d2ull, 0x02144b14cd8344ddull, 0xfa127b95e88f4b74ull, 0x7e9c275f723a961eull }}, {{ 0x26c1d204a88c731aull, 0x0654221451524509ull, 0x6a41fdf7faf9683aull, 0x14caeed00720b0a6ull, 0xc4b8d3db1598f288ull, 0xf21989ba7649dd35ull }}, {{ 0x8392342e957c7f03ull, 0x3f4954cb2d36b25bull, 0x2693ebafcdbe1244ull, 0xcfed54204746e680ull, 0xaf38468ed7f97950ull, 0x74ff61489ee2a419ull }}, {{ 0x23b609d1d6dcf61eull, 0x78dd4fefc422f793ull, 0x81c734de096cb6aaull, 0x1f454942c8c50101ull, 0xd832c1946fbebd28ull, 0x91f9ccd634da6900ull }}, {{ 0x651c623264a19d2dull, 0xb8a51f5da95dabbfull, 0x11c810ac5e3f22a8ull, 0x38b4dc9bd7b20a0full, 0x71fb8fcc5d736391ull, 0xb3c2005e10881a08ull }}, {{ 0xf31bd5f7ee5023c5ull, 0x367339a89da8b579ull, 0xb1d0a6bbae775a97ull, 0x37109e166cf46496ull, 0x73d39dfba681e3acull, 0x059403aca5510454ull }}, {{ 0x7f165baf4f2165b5ull, 0x20804096289716c3ull, 0xf2268354d0a989e8ull, 0x26a62ce0418bede2ull, 0x86442bd48112e4baull, 0x37c824be752a2b4cull }}, {{ 0xf6df94d9174df916ull, 0x450285dd95e6e3a2ull, 0x75812150269f6311ull, 0x827dc0c28f774addull, 0x3ea9b64d0abcef45ull, 0x2dd16f7093a5b0fdull }}, {{ 0xa4bbd07ae90bbae0ull, 0xb2193aa7db04e45dull, 0x970b4d218239deacull, 0x18e987999aa8eca6ull, 0x72a11f026b6158b7ull, 0xca2e5a65c478e9e4ull }}, {{ 0x6f5624cd1a754cc5ull, 0xf4fc4a8e8e30eba8ull, 0xe671034f1642b2beull, 0xf91f4c000a993e81ull, 0x7a4b361831cd7726ull, 0xe5cf87f9acb922ecull }}, {{ 0x595d70030894ffaeull, 0x91dae9918de93494ull, 0x006a2116de9afb75ull, 0xbb38f80069fc7113ull, 0xc6f01cf1f206a785ull, 0xfa1b4fc0bf3b5d3cull }}, {{ 0x7da6601e55d1fccfull, 0xb28d1faf8b1c0dcbull, 0x04254ae4b20dd297ull, 0x5039b00423dc6abeull, 0xc561217374428b39ull, 0xc5111d877851a45full }}, {{ 0xe87fc12f5a33e013ull, 0xf9833cdb6f1889f2ull, 0x2974eceef48a39ecull, 0x2240e029669c2b6cull, 0xb5cb4e828a99703dull, 0xb2ab274ab3306bbdull }}, {{ 0x14fd8bd98606c0baull, 0xbf20609256f5637dull, 0x9e9141558d664341ull, 0x5688c19e0219b239ull, 0x19f1111969fe6263ull, 0xfaaf88eaffe43569ull }}, {{ 0xd1e7767f3c43873full, 0x7743c5b76595e2e2ull, 0x31ac8d5785fea091ull, 0x6157902c1500f640ull, 0x036aaafe23efd7e1ull, 0xcadb592dfeea161bull }}, {{ 0x330aa0f85aa3487bull, 0xa8a5b929f7dadcdcull, 0xf0bd856b3bf245aeull, 0xcd6ba1b8d2099e81ull, 0x222aaded675e6ecdull, 0xec917bcbf524dd0eull }}, {{ 0xfe6a49b38a60d4ccull, 0x96793ba3ae8ca099ull, 0x676736305776b8d2ull, 0x0634513834603113ull, 0x55aacb4609b0540aull, 0x3daed5f79370a28dull }}, {{ 0xf026e10367c84ffbull, 0xe0bc5464d17e4603ull, 0x0a081de36aa33839ull, 0x3e0b2c320bc1eac2ull, 0x58abf0bc60e34864ull, 0x68d45babc2665985ull }}, {{ 0x6184ca220dd31fcdull, 0xc75b4bf02eeebc27ull, 0x64512ae22a603242ull, 0x6c6fb9f475932b94ull, 0x76b7675bc8e0d3eaull, 0x184b94b597ff7f35ull }}, {{ 0xcf2fe5548a3f3e01ull, 0xc990f761d5535989ull, 0xeb2bacd5a7c1f69bull, 0x3c5d438c97bfb3cbull, 0xa32a0995d8c84728ull, 0xf2f3cf17effaf816ull }}, {{ 0x17def54d66786c08ull, 0xdfa9a9d255417f62ull, 0x2fb4c0588d93a215ull, 0x5ba4a37ded7d05f7ull, 0x5fa45fda77d2c792ull, 0x7d8616ef5fcdb0e2ull }}, {{ 0xeeb5950600b4384eull, 0xbca0a237548ef9d4ull, 0xdd0f837587c454daull, 0x946e62eb46e23ba7ull, 0xbc6bbe88ae3bcbb7ull, 0xe73ce559be08e8d7ull }}, {{ 0x5317d23c070a330cull, 0x5e4656294d95c251ull, 0xa29b22974dab508bull, 0xcc4fdd30c4d6548eull, 0x5c357156ce55f52bull, 0x0860f5816c59186dull }}, {{ 0x3eee36584665fe79ull, 0xaebf5d9d07d9972dull, 0x5a0f59e908b12571ull, 0xfb1ea3e7b05f4d92ull, 0x9a166d640f5b93b5ull, 0x53c9970e3b7af445ull }}, {{ 0x754e1f72bffbf0beull, 0xd379a8224e7fe7c4ull, 0x8499831a56eb7670ull, 0xcf32670ce3b907b7ull, 0x04e045e89993c51bull, 0x45dfe68e52cd8ab8ull }}, {{ 0x950d3a7b7fd7676cull, 0x42c0915710ff0dacull, 0x2dff1f076532a068ull, 0x17f80680e53a4d2bull, 0x30c2bb15ffc5b316ull, 0xbabf018f3c076b30ull }}, {{ 0xd28448d2fe6a0a3cull, 0x9b85ad66a9f688bdull, 0xcbf73649f3fa4412ull, 0xefb04108f44703afull, 0xe79b4edbfdb8fedcull, 0x4b760f98584a2fe1ull }}, {{ 0x392ad83df0246659ull, 0x1338c602a3a1576aull, 0xf7a81ee387c6a8baull, 0x5ce28a598ac624ddull, 0x0c111497e939f4a1ull, 0xf29c9bf372e5ded3ull }}, {{ 0x3bac726b616bff79ull, 0xc037bc1a644d6a26ull, 0xac9134e34dc29744ull, 0xa0d9677f6bbd70abull, 0x78aacdef1c438e4dull, 0x7a1e17827cfab43eull }}, {{ 0x54bc7831ce37fab7ull, 0x822d5907eb06257eull, 0xbdac10e10999e8afull, 0x487e0afa356666b4ull, 0xb6ac0b571aa38f08ull, 0xc52ceb18e1cb0a70ull }}, {{ 0x4f5cb1f20e2fcb29ull, 0x15c57a4f2e3d76efull, 0x68b8a8ca600316dbull, 0xd4ec6dc61600030full, 0x22b871670a639652ull, 0xb3c12ef8d1ee6867ull }}, {{ 0x199ef3748dddef9eull, 0xd9b6c717ce66a559ull, 0x173697e7c01ee48eull, 0x513c49bcdc001e9aull, 0x5b346e0667e3df3cull, 0x058bd5b833501407ull }}, {{ 0x0035828d8aab5c2bull, 0x8123c6ee1002757bull, 0xe821ef0d8134ed94ull, 0x2c5ae16098013204ull, 0x900c4c400ee6b85bull, 0x377659320120c849ull }}, {{ 0x021719876ab199b0ull, 0x0b65c54ca01896ceull, 0x115356870c1147cdull, 0xbb8ccdc5f00bf431ull, 0xa07afa809503338full, 0x2a9f7bf40b47d2dfull }}, {{ 0x14e6ff4a2af000dfull, 0x71f9b4fe40f5e40cull, 0xad41614678acce02ull, 0x538009bb607789eaull, 0x44cdc905d220039dull, 0xaa3ad78870ce3cbcull }}, {{ 0xd105f8e5ad6008b3ull, 0x73c111ee899ae878ull, 0xc48dccc0b6c00c18ull, 0x43006151c4ab632aull, 0xb009da3a35402425ull, 0xa64c6b54680e5f5aull }}, {{ 0x2a3bb8f8c5c05703ull, 0x858ab351600d14b8ull, 0xad89ff87238078f4ull, 0x9e03cd31aeb1dfabull, 0xe062864614816974ull, 0x7efc314c108fb98aull }}, {{ 0xa65539b7b9836619ull, 0x376b012dc082cf31ull, 0xc763fb476304b98dull, 0x2c2603f0d2f2bcb4ull, 0xc3d93ebccd0e1e8eull, 0xf5d9ecf8a59d3f6cull }}, {{ 0x7f54412d3f21fcfeull, 0x2a2e0bc9851c17f0ull, 0xc9e7d0c9de2f3f84ull, 0xb97c27683d7b5f0full, 0xa67c7360028d318dull, 0x9a8341b678247a3full }}, {{ 0xf94a8bc47753e1e9ull, 0xa5cc75df3318ef64ull, 0xe30e27e2add87b29ull, 0x3ed98a1266d1b69dull, 0x80dc81c01983ef89ull, 0x09209120b16cc67cull }}, {{ 0xbce975aca946d31cull, 0x79fc9ab7fef959f1ull, 0xde8d8edaca74cfa0ull, 0x747f64b80431222aull, 0x089d1180ff275b5cull, 0x5b45ab46ee3fc0ddull }}, {{ 0x611e98be9cc43f14ull, 0xc3de0b2ff5bd8371ull, 0xb187948be8901c44ull, 0x8cf9ef3029eb55acull, 0x5622af09f789919cull, 0x90b8b0c54e7d88a2ull }}, {{ 0xcb31f7721faa76c9ull, 0xa6ac6fdf9967226dull, 0xef4bcd7715a11aafull, 0x81c357e1a33158beull, 0x5d5ad663ab5fb01dull, 0xa736e7b510e75657ull }}, {{ 0xeff3aa753ca8a3d9ull, 0x82bc5ebbfe075849ull, 0x58f606a6d84b0adcull, 0x11a16ed05fed7775ull, 0xa58c5fe4b1bce127ull, 0x88250d12a9095f69ull }}, {{ 0x5f84a8945e966677ull, 0x1b5bb357ec4972e3ull, 0x799c428472ee6c9dull, 0xb04e5423bf46aa95ull, 0x777bbeeef160cb86ull, 0x517282ba9a5dba20ull }}, {{ 0xbb2e95cbb1e000a9ull, 0x1195016f3ade7ce1ull, 0xc01a992c7d503e23ull, 0xe30f496578c2a9d6ull, 0xaad575556dc7f342ull, 0x2e791b4a07a94544ull }}, {{ 0x4fd1d9f4f2c0069cull, 0xafd20e584cb0e0d1ull, 0x8109fbbce5226d5eull, 0xde98ddf6b79aa263ull, 0xac56955649cf809cull, 0xd0bb10e44c9cb4aeull }}, {{ 0x1e3283917b80421bull, 0xde348f72fee8c82dull, 0x0a63d560f35845b2ull, 0xb1f8aba32c0a57e3ull, 0xbb61d55ee21b0620ull, 0x274ea8eafe1f0ed2ull }}, {{ 0x2df923aed302950aull, 0xae0d9a7df517d1c3ull, 0x67e655c98172b8fcull, 0xf3b6b45fb8676edeull, 0x51d255b4d50e3d46ull, 0x8912992ded36943bull }}, {{ 0xcbbb64d43e19d267ull, 0xcc8808eb92ee319full, 0x0eff59df0e7b39deull, 0x85230bbd340a54b0ull, 0x32375910528e64c5ull, 0x5ab9fbcb4421ca51ull }}, {{ 0xf551f04a6d023803ull, 0xfd505933bd4df03dull, 0x95f982b690d042b3ull, 0x335e756408674ee0ull, 0xf6297aa3398fefb7ull, 0x8b43d5f0a951e72bull }}, {{ 0x953362e84216301dull, 0xe5237c05650b626bull, 0xdbbf1b21a8229b07ull, 0x01b095e8540914c5ull, 0x9d9eca603f9f5d28ull, 0x70a65b669d3307b7ull }}, {{ 0xd401dd1294dde120ull, 0xf362d835f271d833ull, 0x95770f50915a0e4eull, 0x10e5db13485acfbaull, 0x2833e7c27c39a390ull, 0x667f920223fe4d2cull }}, {{ 0x4812a2b9d0aacb3full, 0x81dc721b78727206ull, 0xd6a69925ad848f15ull, 0xa8fa8ec0d38c1d49ull, 0x92070d98da4063a0ull, 0x00fbb41567ef03b9ull }}, {{ 0xd0ba5b4226abf075ull, 0x129c7512b478743eull, 0x6281fb78c72d96d7ull, 0x99c99388437924e2ull, 0xb44687f88683e446ull, 0x09d508d60f56253full }}, {{ 0x2747909582b7648eull, 0xba1c92bb0cb48a74ull, 0xd913d2b7c7c7e466ull, 0x01dfc352a2bb70d7ull, 0x0ac14fb54126eac2ull, 0x6252585c995d747dull }}, {{ 0x88cba5d71b29ed88ull, 0x451dbb4e7f0d6889ull, 0x7ac63b2dcdceec03ull, 0x12bda13a5b52686eull, 0x6b8d1d148b852b94ull, 0xd737739dfda68ce2ull }}, {{ 0x57f47a670fa3474dull, 0xb3295110f686155full, 0xcbbe4fca0a153820ull, 0xbb684c4791381450ull, 0x338322cd7333b3c8ull, 0x682a842be88180d8ull }}, {{ 0x6f8cc8069c60c904ull, 0xff9d2aa9a13cd5b9ull, 0xf56f1de464d43146ull, 0x5212facbac30cb27ull, 0x031f5c06800505d7ull, 0x11a929b7150f0872ull }}, {{ 0x5b7fd0421bc7da2aull, 0xfc23aaa04c60593eull, 0x96572aebf049ecc5ull, 0x34bdcbf4b9e7ef8full, 0x1f39984100323a69ull, 0xb09ba126d2965474ull }}, {{ 0x92fe229515ce85a3ull, 0xd964aa42fbc37c6full, 0xdf67ad3762e33fbbull, 0x0f69f78f430f5b9bull, 0x383ff28a01f6481cull, 0xe6144b8439df4c89ull }}, {{ 0xbded59d2da11385full, 0x7deea69dd5a2dc5bull, 0xba0cc429dce07d56ull, 0x9a23ab989e999416ull, 0x327f7964139ed118ull, 0xfccaf32a42b8fd5cull }}, {{ 0x6b45823c84ac33b9ull, 0xeb52822a585c9b95ull, 0x447fa9a2a0c4e560ull, 0x0564b3f631ffc8e3ull, 0xf8fabde8c4342af6ull, 0xdfed7fa69b39e599ull }}, {{ 0x30b7165d2eba053full, 0x313915a7739e13d6ull, 0xacfca05a47b0f5c9ull, 0x35ef079df3fdd8e0ull, 0xb9cb6b17aa09ad9cull, 0xbf46fc821042f803ull }}, {{ 0xe726dfa3d3443473ull, 0xec3ad88a842cc65dull, 0xc1de4386cce999dbull, 0x1b564c2b87ea78c6ull, 0x41f22eeca460c81aull, 0x78c5dd14a29db025ull }}, {{ 0x0784bc6640aa0c7bull, 0x3a4c756929bfbfabull, 0x92aea34401200297ull, 0x115ef9b34f28b7c3ull, 0x9375d53e6bc7d105ull, 0xb7baa2ce5a28e174ull }}, {{ 0x4b2f5bfe86a47ccaull, 0x46fc961ba17d7caeull, 0xbad260a80b4019e8ull, 0xadb5c10117972da3ull, 0xc29a547035ce2a32ull, 0x2d4a5c0f8598ce8dull }}, {{ 0xefd997f1426cdfe8ull, 0xc5dddd144ee6deceull, 0x4c37c69070810312ull, 0xc9198a0aebe7c865ull, 0x9a074c621a0da5faull, 0xc4e7989b37f81189ull }}, {{ 0x5e7fef6c9840bf0eull, 0xbaaaa2cb1504b415ull, 0xfa2dc1a4650a1ebbull, 0xdaff646d370dd3f4ull, 0x0448fbd504887bcbull, 0xb10bf6102fb0af60ull }}, {{ 0xb0ff5a3df287768aull, 0x4aaa5beed22f08d5ull, 0xc5c9906bf2653355ull, 0x8df9ec44268a4791ull, 0x2ad9d6522d54d5f6ull, 0xea779ca1dce6d9c0ull }}, {{ 0xe9f9866b794aa163ull, 0xeaa7975435d65858ull, 0xb9dfa43777f40154ull, 0x8bc33aa98166cbb1ull, 0xac825f35c5505ba1ull, 0x28ac1e52a1048181ull }}, {{ 0x23bf4032bcea4de1ull, 0x2a8be94a1a5f7379ull, 0x42bc6a2aaf880d51ull, 0x75a04a9f0e03f4f1ull, 0xbd17b819b523944full, 0x96b92f3a4a2d0f10ull }}, {{ 0x657881fb61270ac7ull, 0xa9771ce507ba82bbull, 0x9b5c25aadb50852bull, 0x9842ea368c27916cull, 0x62ed31011363cb1aull, 0xe33bd846e5c296a7ull }}, {{ 0xf6b513d1cb866bc9ull, 0x9ea720f24d491b51ull, 0x119978ac912533b4ull, 0xf29d2621798bae3eull, 0xdd43ea0ac1e5ef09ull, 0xe05672c4f999e289ull }}, {{ 0xa312c631f34035daull, 0x3287497704db1133ull, 0xaffeb6bdab74050eull, 0x7a237d4ebf74ce6cull, 0xa4a7246b92fb5663ull, 0xc3607bb1c002d962ull }}, {{ 0x5ebbbdf380821a87ull, 0xf948dea6308eac04ull, 0xdff32368b288328dull, 0xc562e5137a90103eull, 0x6e876c33bdd15fe2ull, 0xa1c4d4f1801c7ddaull }}, {{ 0xb3556b8305150942ull, 0xbcd8b27de592b82bull, 0xbf7f6216f951f98bull, 0xb5dcf2c2c9a0a274ull, 0x514a3a056a2dbedbull, 0x51b0516f011cea88ull }}, {{ 0x0156331e32d25c99ull, 0x6076f8eaf7bb31b5ull, 0x7af9d4e5bd33bf75ull, 0x1aa17b9be046588full, 0x2ce6443625c97495ull, 0x30e32e560b212953ull }}, {{ 0x0d5dff2dfc379df7ull, 0xc4a5b92dad4ff112ull, 0xcdc250f964057a95ull, 0x0a4ed416c2bf759aull, 0xc0feaa1d79de8dd3ull, 0xe8dfcf5c6f4b9d3full }}, {{ 0x85abf7cbda2c2ba4ull, 0xae793bc8c51f6ab4ull, 0x099729bde836c9d9ull, 0x671448e39b7a980cull, 0x89f2a526c2b18a3eull, 0x18be199c58f4247dull }}, {{ 0x38b7adf685b9b463ull, 0xd0bc55d7b33a2b0dull, 0x5fe7a16b1223e280ull, 0x06cad8e412c9f078ull, 0x637a73839aef6670ull, 0xf76d001b79896ce7ull }}, {{ 0x372ccba139410be2ull, 0x275b5a6d0045ae84ull, 0xbf0c4e2eb566d908ull, 0x43ec78e8bbe364b3ull, 0xe2c883240d5a0060ull, 0xaa420112bf5e4109ull }}, {{ 0x27bff44c3c8a76d3ull, 0x8991884202b8d12aull, 0x767b0dd316047a51ull, 0xa73cb91756e1ef05ull, 0xdbd51f68858403c2ull, 0xa6940abb79ae8a62ull }}, {{ 0x8d7f8afa5d68a43aull, 0x5faf52941b382ba5ull, 0xa0ce8a3edc2cc72full, 0x885f3ae964d35636ull, 0x96533a153728259aull, 0x81c86b52c0d167dcull }}, {{ 0x86fb6dc7a6166a46ull, 0xbcd939c91031b477ull, 0x4811667499bfc7d9ull, 0x53b84d1df0415e22ull, 0xdf4044d427917809ull, 0x11d4313b882e0e9dull }}, {{ 0x45d249cc7ce026bbull, 0x607c41daa1f10cabull, 0xd0ae008e017dce81ull, 0x4533032b628dad56ull, 0xb882b0498baeb05dull, 0xb249ec5351cc922aull }}, {{ 0xba36e1fce0c1834aull, 0xc4da928a536a7eb0ull, 0x26cc058c0eea110dull, 0xb3fe1fb1d988c564ull, 0x351ae2df74d2e3a4ull, 0xf6e33b4131fdb5abull }}, {{ 0x4624d3e0c78f20e6ull, 0xb089b9674228f2e7ull, 0x83f837789524aa89ull, 0x07ed3cf27f57b5e9ull, 0x130cdcba903ce46full, 0xa4e0508bf3e918b0ull }}, {{ 0xbd7046c7cb974901ull, 0xe5613e0895997d08ull, 0x27b22ab5d36ea960ull, 0x4f446178f96d1b1full, 0xbe809f49a260ec56ull, 0x70c32577871af6e0ull }}, {{ 0x6662c3cdf3e8da07ull, 0xf5cc6c55d7fee257ull, 0x8cf5ab1a42529dc8ull, 0x18abceb9be430f37ull, 0x710638e057c93b5full, 0x679f76ab470da4c7ull }}, {{ 0xffdba60b87188447ull, 0x99fc3b5a6ff4d769ull, 0x8198af06973a29d9ull, 0xf6b613416e9e982bull, 0x6a3e38c36ddc51b6ull, 0x0c3aa2b0c6886fcaull }}, {{ 0xfe947c7346f52ac3ull, 0x03da51885f906a23ull, 0x0ff6d641e845a280ull, 0xa31cc08e5231f1b3ull, 0x266e37a24a9b3125ull, 0x7a4a5ae7c1545de8ull }}, {{ 0xf1ccdc80c593ab9bull, 0x26872f53bba42567ull, 0x9fa45e9312b85900ull, 0x5f1f858f35f370feull, 0x804e2c56ea0feb78ull, 0xc6e78d0d8d4bab11ull }}, {{ 0x72009d07b7c4b40eull, 0x8147d9455469760full, 0x3c6bb1bebb337a01ull, 0xb73b37981b8269f2ull, 0x030dbb65249f32b3ull, 0xc50b828784f4aeafull }}, {{ 0x7406224d2daf0889ull, 0x0cce7cb54c1e9c9aull, 0x5c34f1735002c40full, 0x28502bf113182376ull, 0x1e8951f36e37fb05ull, 0xb273194b318ed2d6ull }}, {{ 0x883d5703c8d65558ull, 0x8010df14f9321e08ull, 0x9a116e81201ba896ull, 0x9321b76abef1629full, 0x315d33824e2fce33ull, 0xf87efcefef943c5dull }}, {{ 0x52656625d85f556cull, 0x00a8b6d1bbf52c55ull, 0x04ae510b411495e1ull, 0xbf512a2b756dda3cull, 0xeda403170dde0e03ull, 0xb4f5e15f5bca5ba3ull }}, {{ 0x37f5fd7a73b95633ull, 0x069724315793bb55ull, 0x2ecf2a708acddacaull, 0x792ba5b2964a8658ull, 0x48681ee68aac8c25ull, 0x119acdb995e79467ull }}, {{ 0x2f9be6c8853d5dffull, 0x41e769ed6bc55154ull, 0xd417a8656c0a8be4ull, 0xbbb478f9dee93f71ull, 0xd41135016abd7976ull, 0xb00c093fdb0bcc08ull }}, {{ 0xdc1703d53465abfaull, 0x930a234635b52d49ull, 0x48ec93f6386976eaull, 0x550cb9c2b51c7a72ull, 0x48ac120e2b66bea3ull, 0xe0785c7e8e75f858ull }}, {{ 0x98e626540bf8b7c1ull, 0xbe6560be1913c4e2ull, 0xd93dc79e341ea529ull, 0x527f419b131cc876ull, 0xd6b8b48db2037261ull, 0xc4b39cf1909bb372ull }}, {{ 0xf8fd7f4877b72d85ull, 0x6ff5c76cfac5b0d9ull, 0x7c69cc2e093273a1ull, 0x38f8900ebf1fd4a4ull, 0x63370d88f42277cdull, 0xaf04216fa615027cull }}, {{ 0xb9e6f8d4ad27c735ull, 0x5f99ca41cbb8e883ull, 0xdc21f9cc5bf8844eull, 0x39b5a093773e4e6cull, 0xe02687598958ae04ull, 0xd6294e5c7cd218dbull }}, {{ 0x4305b84ec38dc815ull, 0xbc01e691f5391525ull, 0x9953c1fb97b52b0full, 0x411845c2a86f1040ull, 0xc181497f5d76cc2aull, 0x5d9d0f9ce034f896ull }}, {{ 0x9e393313a389d0cfull, 0x581301b3943ad374ull, 0xfd4593d3ed13ae9dull, 0x8af2b99a9456a285ull, 0x8f0cdef9a6a3f9a6ull, 0xa8229c20c211b5e3ull }}, {{ 0x2e3bfec463622811ull, 0x70be1103ca4c428eull, 0xe4b7c64742c4d225ull, 0x6d7b4009cb62593bull, 0x9680b5c08267c081ull, 0x915a194794b11ae3ull }}, {{ 0xce57f3abe1d590aeull, 0x676caa25e6fa998dull, 0xef2dbec89bb03576ull, 0x46d08061f1d77c56ull, 0xe1071985180d850eull, 0xad84fccbceeb0ce3ull }}, {{ 0x0f6f84b6d257a6ceull, 0x0a3ea57b05c9ff8aull, 0x57c973d614e216a0ull, 0xc42503d3726adb65ull, 0xca46ff32f087328eull, 0xc731dff6152e80e6ull }}, {{ 0x9a5b2f24376c840aull, 0x667276ce39e3fb64ull, 0x6dde865cd0d4e240ull, 0xa9722642782c91f5ull, 0xe6c5f7fd6547f993ull, 0xc7f2bf9cd3d10903ull }}, {{ 0x078fd76a2a3d2865ull, 0x0078a40e42e7d1eeull, 0x4ab13fa02850d684ull, 0x9e757e98b1bdb396ull, 0x03bbafe5f4cfbfc4ull, 0xcf7b7c20462a5a27ull }}, {{ 0x4b9e6a25a66393efull, 0x04b6688e9d0e334cull, 0xeaec7c4193286128ull, 0x3096f1f6f16903deull, 0x2554defb901d7daeull, 0x1ad2d942bda78586ull }}, {{ 0xf43025787fe3c759ull, 0x2f201592228e00faull, 0x2d3cda8fbf93cb90ull, 0xe5e573a56e1a26b5ull, 0x7550b5d3a126e8cdull, 0x0c3c7c9b688b373dull }}, {{ 0x89e176b4fee5c97eull, 0xd740d7b5598c09cdull, 0xc460899d7bc5f3a1ull, 0xfaf684764d058313ull, 0x95271a444b85180aull, 0x7a5cde1215702866ull }}, {{ 0x62cea311f4f9def0ull, 0x68886d157f786207ull, 0xabc56026d5bb8452ull, 0xcda12c9f02371ec5ull, 0xd38706aaf332f06dull, 0xc7a0acb4d6619401ull }}, {{ 0xdc125eb391c2b55bull, 0x155442d6fab3d449ull, 0xb5b5c18459532b38ull, 0x084bbe36162733b8ull, 0x434642ad7ffd644aull, 0xcc46bf105fcfc812ull }}, {{ 0x98b7b303b19b1590ull, 0xd54a9c65cb064ae2ull, 0x19198f2b7d3fb030ull, 0x52f56e1cdd880537ull, 0xa0be9ac6ffe5eae4ull, 0xfac376a3be1dd0b6ull }}, {{ 0xf72cfe24f00ed79bull, 0x54ea1bf9ee3eecd9ull, 0xfaff97b2e47ce1e8ull, 0x3d964d20a7503426ull, 0x47720bc5fefb2cebull, 0xcba2a2656d2a2722ull }}, {{ 0xa7c1ed7160946c11ull, 0x512517c34e754083ull, 0xcdfbecfcece0d313ull, 0x67df034689220985ull, 0xca7475bbf5cfc130ull, 0xf45a57f643a58756ull }}, {{ 0x8d93466dc5cc38acull, 0x2b72eda110948524ull, 0x0bd741e140c83ec1ull, 0x0eb620c15b545f3aull, 0xe88c99579a1d8be4ull, 0x8b876f9ea4774963ull }}, {{ 0x87c0c049b9fa36b8ull, 0xb27d484aa5cd336dull, 0x766892cc87d2738bull, 0x931d478d914bb844ull, 0x157dfd6c052776e8ull, 0x734a5c326ca8dde7ull }}, {{ 0x4d8782e143c62332ull, 0xf8e4d2ea7a040247ull, 0xa015bbfd4e388374ull, 0xbf24cb87acf532acull, 0xd6ebe638338aa515ull, 0x80e799f83e98ab06ull }}, {{ 0x074b1ccca5bd5ff1ull, 0xb8f03d28c42816c9ull, 0x40d957e50e352291ull, 0x776ff34cc193fabeull, 0x6536fe32036a72d9ull, 0x090c03b271f6ae44ull }}, {{ 0x48ef1ffe7965bf6dull, 0x39626397a990e3daull, 0x887d6ef28e1359b1ull, 0xaa5f80ff8fc7cb6eull, 0xf425edf422287c7eull, 0x5a7824f873a2ceabull }}, {{ 0xd9573ff0bdf97a46ull, 0x3dd7e3ec9fa8e686ull, 0x54e655798cc180ecull, 0xa7bb09fb9dcdf251ull, 0x897b4b895594dcf2ull, 0x88b171b4845c12b7ull }}, {{ 0x7d687f676bbec6b9ull, 0x6a6ee73e3c990144ull, 0x50ff56bf7f8f093aull, 0x8d4e63d42a0b772dull, 0x5ed0f35d57d0a17aull, 0x56ee710d2b98bb2bull }}, {{ 0xe614fa0a3573c338ull, 0x2855086e5dfa0cacull, 0x29f9637afb965c48ull, 0x850fe649a472a7c5ull, 0xb42981a56e264ec9ull, 0x65506a83b3f74fb1ull }}, {{ 0xfcd1c4661685a035ull, 0x9352544fabc47ec0ull, 0xa3bde2cdd3df9ad1ull, 0x329efee06c7a8db3ull, 0x099f10764d7f13dfull, 0xf524292507a91cf1ull }}, {{ 0xe031abfce138420eull, 0xc1374b1cb5acf389ull, 0x656adc0a46bc0c2full, 0xfa35f4c43cc98904ull, 0x6036a49f06f6c6b7ull, 0x93699b724c9b216aull }}, {{ 0xc1f0b7e0cc32948aull, 0x8c28ef1f18c18362ull, 0xf62c9866c35879ddull, 0xc61b8faa5fdf5a2bull, 0xc2226e3645a3c32full, 0xc2201276fe0f4e27ull }}, {{ 0x93672ec7f9f9cd63ull, 0x79995736f78f21dbull, 0x9dbdf403a174c2a7ull, 0xbd139ca7beb985b7ull, 0x95584e1eb8659fddull, 0x9540b8a5ec990d8dull }}, {{ 0xc207d3cfc3c205dfull, 0xbffd6825ab975293ull, 0x296b88244e8f9a8aull, 0x62c41e8d733f392cull, 0xd5730d3333f83ea9ull, 0xd487367b3dfa8787ull }}, {{ 0x944e461da5943ab3ull, 0x7fe61178b3e939c5ull, 0x9e33516b119c096bull, 0xdba9318680783bb9ull, 0x567e840007b2729dull, 0x4d4820d06bc94b4eull }}, {{ 0xcb0ebd2877ca4afbull, 0xfefcaeb7071c41b7ull, 0x2e012e2eb0185e32ull, 0x949bef4104b25540ull, 0x60f128004cf87a2aull, 0x04d1482435dcf10full }}, {{ 0xee936394ade6edcfull, 0xf5ded326471a912dull, 0xcc0bcdd2e0f3adfdull, 0xce17588a2ef75481ull, 0xc96b900301b4c5a9ull, 0x302cd16a1aa16a99ull }}, {{ 0x51c1e3cecb054a15ull, 0x9ab43f7ec709abcbull, 0xf8760a3cc984cbebull, 0x0ce97565d5a94d11ull, 0xde33a01e110fb8a2ull, 0xe1c02e250a4e2a01ull }}, {{ 0x3192e613ee34e4ceull, 0x0b0a7af3c660b5f1ull, 0xb49c665fdf2ff734ull, 0x811e95fa589d02b3ull, 0xae04412caa9d3654ull, 0xd181cd72670da412ull }}, {{ 0xefbcfcc74e10f00full, 0x6e68cd85bfc71b6bull, 0x0e1bffbeb7dfa808ull, 0x0b31dbc776221b05ull, 0xcc2a8bbeaa241f4dull, 0x2f120678068868baull }}, {{ 0x5d61dfc90ca96099ull, 0x501807397dc71237ull, 0x8d17fd732ebc9054ull, 0x6ff295ca9d550e32ull, 0xf9a97572a5693902ull, 0xd6b440b04154174bull }}, {{ 0xa5d2bdda7e9dc5faull, 0x20f0483ee9c6b629ull, 0x82efe67fd35da34bull, 0x5f79d9ea25528df9ull, 0xc09e967a761c3a18ull, 0x630a86e28d48e8f7ull }}, {{ 0x7a3b6a88f229bbc0ull, 0x4962d27521c31da0ull, 0x1d5f00fe41a860efull, 0xbac2832575398bbfull, 0x8631e0c89d1a44f3ull, 0xde6944d984d919adull }}, {{ 0xc652295975a15581ull, 0xdddc3893519f2844ull, 0x25b609ee9093c958ull, 0x4b991f76943f7577ull, 0x3df2c7d62306b185ull, 0xb01cb07f307b00c7ull }}, {{ 0xbf359d7e984d570dull, 0xaa9a35c1303792afull, 0x791c6351a5c5dd78ull, 0xf3fb3aa1ca7a96a7ull, 0x6b7bce5d5e42ef34ull, 0xe11ee4f7e4ce07c8ull }}, {{ 0x781826f1f3056682ull, 0xaa06198be22bbaddull, 0xbb1be13079baa6b6ull, 0x87d04a51e8c9e28aull, 0x32d60fa5ae9d5811ull, 0xcb34f1aef00c4dd4ull }}, {{ 0xb0f185737e360119ull, 0xa43cff76d5b54ca6ull, 0x4f16cbe4c14a8322ull, 0x4e22e73317e2d96bull, 0xfc5c9c78d22570afull, 0xf01170d5607b0a49ull }}, {{ 0xe96f3682ee1c0af7ull, 0x6a61faa45914fe82ull, 0x16e3f6ef8ce91f5aull, 0x0d5d07feeedc7e31ull, 0xdb9e1cb8357666d9ull, 0x60ae6855c4ce66e3ull }}, {{ 0x1e58211d4d186da6ull, 0x27d3ca6b7ad1f11dull, 0xe4e7a55b811b3988ull, 0x85a24ff5549cedeaull, 0x942d1f3216a0047aull, 0xc6d01359b01004e6ull }}, {{ 0x2f714b2502f44878ull, 0x8e45e832cc336b23ull, 0xf10c75930b103f51ull, 0x38571f954e214b2cull, 0xc9c337f4e2402cc9ull, 0xc420c180e0a03101ull }}, {{ 0xda6cef721d8ad4abull, 0x8ebb11fbfa022f5full, 0x6a7c97be6ea2792full, 0x33673bd50d4cefc1ull, 0xe1a02f90d681bfdcull, 0xa9478f08c641ea11ull }}, {{ 0x88415a75276c4eb0ull, 0x934eb3d7c415d9beull, 0x28dded705258bbdbull, 0x0208565285015d8eull, 0xd041dba861117e9aull, 0x9ccb9657be9324b2ull }}, {{ 0x528d88938a3b12dbull, 0xc113066da8da8171ull, 0x98ab466337775693ull, 0x14535f39320da78dull, 0x22929493caaef204ull, 0x1ff3df6d71bf6efcull }}, {{ 0x398755c3664ebc8full, 0x8abe404898890e6dull, 0xf6b0bfe02aa961c5ull, 0xcb41b83bf4888b87ull, 0x59b9cdc5ead57428ull, 0x3f86ba46717a55d9ull }}, {{ 0x3f4959a1ff135d93ull, 0x6b6e82d5f55a9044ull, 0xa2e77ec1aa9dd1b7ull, 0xf09132578d55734full, 0x814209bb2c568997ull, 0x7b4346c06ec75a7dull }}, {{ 0x78dd8053f6c1a7c0ull, 0x32511c5b9589a2aaull, 0x5d0af390aa2a312aull, 0x65abf76b8556811cull, 0x0c94614fbb615fefull, 0xd0a0c38453c988e7ull }}, {{ 0xb8a70347a3908d81ull, 0xf72b1b93d7605aa8ull, 0xa26d83a6a5a5eba5ull, 0xf8b7aa3335610b1bull, 0x7dcbcd1d51cdbf59ull, 0x2647a32b45df5906ull }}, {{ 0x368620cc63a5870dull, 0xa7af13c669c38a97ull, 0x58472482787b347bull, 0xb72ca60015ca6f14ull, 0xe9f6032532097983ull, 0x7ecc5fb0bab97a40ull }}, {{ 0x213d47fbe4774680ull, 0x8cd6c5c021a369e8ull, 0x72c76d18b4d00cd4ull, 0x27be7c00d9e856cbull, 0x239c1f73f45ebf25ull, 0xf3fbbce74b3ec689ull }}, {{ 0x4c64cfd6eca8c0fcull, 0x8063b98150622311ull, 0x7bca42f71020804dull, 0x8d70d808831363f2ull, 0x64193a878bb37773ull, 0x87d56108f073c15bull }}, {{ 0xfbf01e653e9789d5ull, 0x03e53f0d23d55eacull, 0xd5e69da6a1450307ull, 0x866870551ec1e778ull, 0xe8fc494b7502aa83ull, 0x4e55ca5964858d91ull }}, {{ 0xd7612ff471eb6255ull, 0x26f476836655b2c1ull, 0x5b0228824cb21e46ull, 0x4014635333930ab8ull, 0x19dadcf2921aa923ull, 0x0f59e77ded3787b3ull }}, {{ 0x69cbdf8c7331d755ull, 0x858ca121ff58fb92ull, 0x8e159516fef52ebdull, 0x80cbe14003be6b33ull, 0x028ca179b50a9b60ull, 0x99830aeb442b4cffull }}, {{ 0x21f6bb7c7ff26954ull, 0x377e4b53f979d3b8ull, 0x8cd7d2e5f593d367ull, 0x07f6cc8025703003ull, 0x197e4ec1126a11c5ull, 0xff1e6d30a9b101f6ull }}, {{ 0x53a352dcff781d4aull, 0x2aeef147bec24531ull, 0x806e3cfb97c64208ull, 0x4fa3fd017661e023ull, 0xfeef138ab824b1b2ull, 0xf73043e6a0ea139cull }}, {{ 0x44613ca1fab124e3ull, 0xad556ccd7396b3edull, 0x044e61d3edbe9451ull, 0x1c67e20e9fd2c163ull, 0xf556c36b316ef0f7ull, 0xa7e2a7024924c421ull }}, {{ 0xabcc5e53caeb70dbull, 0xc556400683e30744ull, 0x2b0fd2474971cb30ull, 0x1c0ed4923e3b8ddeull, 0x9563a22fee5569a7ull, 0x8eda8616db6fa953ull }}, {{ 0xb5fbaf45ed32688cull, 0xb55e804126de48aeull, 0xae9e36c8de71efe7ull, 0x18944db66e538aadull, 0xd5e455df4f562087ull, 0x94893ce4925c9d43ull }}, {{ 0x1bd4d8bb43f8157bull, 0x15b1028b84aed6d3ull, 0xd22e23d8b0735f0dull, 0xf5cb09204f436ac8ull, 0x5aeb5ab9195d4546ull, 0xcd5c60edb79e24a6ull }}, {{ 0x16507750a7b0d6d0ull, 0xd8ea19732ed4643full, 0x35cd6676e481b682ull, 0x99ee5b4318a22bd8ull, 0x8d318b3afda4b4c5ull, 0x059bc9492c2d6e7full }}, {{ 0xdf24a9268ce8641dull, 0x7924fe7fd44bea76ull, 0x1a0600a4ed11211cull, 0x034f909ef655b672ull, 0x83ef704de86f0fb8ull, 0x3815dcdbb9c650fbull }}, {{ 0xb76e9b818113e922ull, 0xbb71f0fe4af728a4ull, 0x043c067142ab4b1cull, 0x211ba6359f592075ull, 0x275a630b14569d30ull, 0x30daa09541bf29d3ull }}, {{ 0x2a52130f0ac71b52ull, 0x527369eeeda7966full, 0x2a58406c9ab0ef1full, 0x4b147e18397b4492ull, 0x8987de6ecb6223e1ull, 0xe88a45d49177a23full }}, {{ 0xa734be966bc71133ull, 0x38822355488be057ull, 0xa772843e0ae95739ull, 0xeeccecf23ed0adb5ull, 0x5f4eb053f1d566ccull, 0x1566ba4daeac567bull }}, {{ 0x880f71e035c6ac02ull, 0x35156154d576c36cull, 0x8a792a6c6d1d683cull, 0x540141767426c918ull, 0xb912e34772560401ull, 0xd6034708d2bb60d1ull }}, {{ 0x509a72c219c2b813ull, 0x12d5cd5056a3a23dull, 0x68bba83c4326125aull, 0x480c8ea08983daf5ull, 0x3abce0ca775c280dull, 0x5c20c6583b51c831ull }}, {{ 0x26087b95019b30c3ull, 0xbc5a052362645665ull, 0x1754925a9f7cb784ull, 0xd07d92455f268d96ull, 0x4b60c7e8a9999084ull, 0x9947bf725131d1ecull }}, {{ 0x7c54d3d2100fe79bull, 0x5b843361d7eb5ff3ull, 0xe94db78a3adf2b2full, 0x24e7b6b5b78187dcull, 0xf1c7cf169fffa530ull, 0xfccd7a772bf2333aull }}, {{ 0xdb504634a09f0c0dull, 0x932a01d26f31bf82ull, 0x1d092b664cb7afd9ull, 0x710d23192b0f4ea1ull, 0x71ce16e23ffc73e1ull, 0xe006c8a7b776004dull }}, {{ 0x9122be0e46367887ull, 0xbfa4123857f17b1cull, 0x225bb1feff2cde7full, 0x6a835efbae99124bull, 0x720ce4d67fdc86ceull, 0xc043d68d2a9c0306ull }}, {{ 0xab5b6c8ebe20b545ull, 0x7c68b6336f6ecf1dull, 0x5794f3f5f7c0b0fdull, 0x2921b5d4d1fab6efull, 0x7480f060fe9d4410ull, 0x82a66183aa181e40ull }}, {{ 0xb1923d936d4714b7ull, 0xdc171e025a541728ull, 0x6bd1879bad86e9e6ull, 0x9b511a5033cb2559ull, 0x8d0963c9f224a8a1ull, 0x1a7fcf24a4f12e84ull }}, {{ 0xefb667c244c6cf25ull, 0x98e72c178748e796ull, 0x362f4c14c7452304ull, 0x112b072205ef757eull, 0x825de5e3756e9650ull, 0x08fe176e716bd12dull }}, {{ 0x5d200d96afc41775ull, 0xf907b8eb48d90be5ull, 0x1dd8f8cfc8b35e2dull, 0xabae47543b5a96eeull, 0x17aafae29651df20ull, 0x59ecea506e362bc7ull }}, {{ 0xa34087e2dda8ea93ull, 0xba4d3930d87a76f5ull, 0x2a79b81dd701adcbull, 0xb4cec94a5189e54dull, 0xecadccd9df32b746ull, 0x834127244e1db5c6ull }}, {{ 0x60854edca89929bbull, 0x47043be874c8a598ull, 0xa8c1312a6610c9f5ull, 0x1013dce72f62f503ull, 0x3eca0082b7fb28c3ull, 0x208b876b0d2919c5ull }}, {{ 0xc535149e95fba151ull, 0xc62a57148fd677f3ull, 0x978beba7fca7e394ull, 0xa0c6a107d9dd9224ull, 0x73e4051b2fcf979eull, 0x45734a2e839b01b4ull }}, {{ 0xb412ce31dbd44d25ull, 0xbda766cd9e60af85ull, 0xeb77348fde8ee3cfull, 0x47c24a4e82a7b56dull, 0x86e8330fde1bec32ull, 0xb680e5d1240e110cull }}, {{ 0x08bc0df2964b0372ull, 0x688a04082fc6db39ull, 0x32a80d9eb194e61dull, 0xcd96e7111a8d164bull, 0x4511fe9ead1739f6ull, 0x2108fa2b688caa7dull }}, {{ 0x57588b79deee2275ull, 0x15642851ddc4903aull, 0xfa908832efd0fd26ull, 0x07e506ab0982deefull, 0xb2b3f232c2e843a4ull, 0x4a59c5b2157ea8e4ull }}, {{ 0x697572c2b54d5892ull, 0xd5e99332a9ada247ull, 0xc9a551fd5e29e37cull, 0x4ef242ae5f1cb55full, 0xfb0775fb9d12a468ull, 0xe781b8f4d6f298eeull }}, {{ 0x1e967b9b150575b4ull, 0x5b1fbffaa0c856caull, 0xe07533e5ada2e2e0ull, 0x15769acfb71f15bdull, 0xce4a9bd422ba6c13ull, 0x0b1139906579f955ull }}, {{ 0x31e0d40ed236990cull, 0x8f3d7fca47d363e5ull, 0xc49406f8c85cdcc3ull, 0xd6a20c1d2736d96aull, 0x0eea16495b4838beull, 0x6eac3fa3f6c3bd5aull }}, {{ 0xf2c848943621fa7bull, 0x9866fde6ce41e6f3ull, 0xadc845b7d3a09fa3ull, 0x6254792388247e2bull, 0x9524dedd90d23774ull, 0x52ba7c67a3a56584ull }}, {{ 0x7bd2d5ca1d53c8caull, 0xf405eb040e930587ull, 0xc9d2b92e44463c63ull, 0xd74cbb63516cedb4ull, 0xd370b4a7a8362a8bull, 0x3b48dc0c6475f72dull }}, {{ 0xd63c59e52545d7e6ull, 0x883b2e2891be374aull, 0xe23b3bceaabe5be7ull, 0x68ff51e12e41490full, 0x42670e8c921da976ull, 0x50d8987bec9ba7caull }}, {{ 0x5e5b82f374ba6efcull, 0x524fcd95b16e28ecull, 0xd6505612ab6f970bull, 0x19f932cbce8cda9eull, 0x9806917db5289ea0ull, 0x2875f4d73e148de6ull }}, {{ 0xaf931d828f4855d8ull, 0x371e07d8ee4d993bull, 0x5f235cbab25be671ull, 0x03bbfbf611808a34ull, 0xf041aee913963241ull, 0x949b90686ccd8b01ull }}, {{ 0xdbbf271998d35a70ull, 0x272c4e794f07fc54ull, 0xb7619f4af797006cull, 0x2557d79caf05660bull, 0x6290d51ac3ddf68aull, 0xce13a41440076e13ull }}, {{ 0x957786fff841885full, 0x87bb10bd164fdb50ull, 0x29d038edabe60439ull, 0x756e6c1ed635fc75ull, 0xd9a8530ba6aba165ull, 0x0cc468ca804a4cc1ull }}, {{ 0xd6ab45ffb28f53b9ull, 0x4d4ea762df1e9125ull, 0xa2223948b6fc2a3full, 0x965039345e1bdc93ull, 0x80933e7482b44df6ull, 0x7fac17e902e6ff92ull }}, {{ 0x62b0bbfcf999453cull, 0x051289dcb731ab7aull, 0x55563cd725d9a679ull, 0xdf223c0bad169dc4ull, 0x05c0708d1b0b0ba1ull, 0xfcb8ef1a1d05fbb9ull }}, {{ 0xdae757e1bffcb456ull, 0x32b9629f27f0b2c7ull, 0x555e60677a8080baull, 0xb7565874c2e229abull, 0x398465830e6e7452ull, 0xdf395705223bd53aull }}, {{ 0x8d096ed17fdf0b5bull, 0xfb3dda378f66fbceull, 0x55afc40ac9050745ull, 0x295f748f9cd5a0b1ull, 0x3f2bf71e90508b3bull, 0xb83d663356565446ull }}, {{ 0x825e542efeb6718dull, 0xd06a862b9a05d611ull, 0x58dda86bda3248bbull, 0x9dba8d9c205846edull, 0x77b7a731a325704full, 0x3265fe015f5f4abeull }}, {{ 0x17af49d5f3206f87ull, 0x24293db4043a5cafull, 0x78a8943685f6d756ull, 0x294988194372c545ull, 0xad2c87f05f76631cull, 0xf7fbec0db9b8eb70ull }}, {{ 0xecd8e25b7f445b46ull, 0x699c69082a479ed6ull, 0xb695ca213ba4695dull, 0x9cdf50fca27bb4b6ull, 0xc3bd4f63ba9fdf19ull, 0xafd7388941393266ull }}, {{ 0x4078d792f8ab90b9ull, 0x201c1a51a6cc3465ull, 0x21d9e54c546c1da6ull, 0x20b929de58d50f23ull, 0xa56519e54a3eb700ull, 0xde68355c8c3bf803ull }}, {{ 0x84b86bbdb6b3a737ull, 0x4119073083fa0bf4ull, 0x5282f4fb4c39287dull, 0x473ba2af7852975full, 0x75f302f4e6732601ull, 0xb012159d7a57b024ull }}, {{ 0x2f34356923048825ull, 0x8afa47e527c4778dull, 0x391d91d0fa3b94e4ull, 0xc8545adab339e9b9ull, 0x9b7e1d91007f7c0cull, 0xe0b4d826c76ce16cull }}, {{ 0xd80a161b5e2d5176ull, 0x6dc6cef38dacab83ull, 0x3b27b229c653d0edull, 0xd34b8c8b0043213cull, 0x12ed27aa04fad87full, 0xc7107183ca40ce3eull }}, {{ 0x7064dd11adc52e98ull, 0x49c4158388beb326ull, 0x4f8cf5a1bf462946ull, 0x40f37d6e029f4c5aull, 0xbd438ca431cc74feull, 0xc6a46f25e6880e6cull }}, {{ 0x63f0a2b0c9b3d1edull, 0xe1a8d7235772ff80ull, 0x1b81985178bd9cbeull, 0x8982e64c1a38fb87ull, 0x64a37e69f1fc91eeull, 0xc26c577b0150903full }}, {{ 0xe7665ae7e1063341ull, 0xd09867616a7dfb03ull, 0x130ff32eb7681f74ull, 0x5f1cfef90639d347ull, 0xee62f02373ddb351ull, 0x983b6ace0d25a279ull }}, {{ 0x09ff8d0eca3e008eull, 0x25f409ce28ebce27ull, 0xbe9f7fd32a113a90ull, 0xb721f5ba3e4240c6ull, 0x4fdd616286a9012dull, 0xf2522c0c837858c3ull }}, {{ 0x63fb8293e66c058bull, 0x7b88620d99360d86ull, 0x723afe3fa4ac49a1ull, 0x275399466e9687c3ull, 0x1ea5cdd9429a0bc9ull, 0x7735b87d22b377a1ull }}, {{ 0xe7d319c70038376eull, 0xd353d487fc1c873full, 0x764dee7c6ebae04eull, 0x8943fcc051e14da2ull, 0x327a0a7c9a0475dbull, 0xa81934e35b02ac4bull }}, {{ 0x0e3f01c602322a4eull, 0x41464d4fd91d487full, 0x9f0b50dc534cc314ull, 0x5ca7df8332cd0858ull, 0xf8c468de042c9a93ull, 0x90fc10e18e1abaefull }}, {{ 0x8e7611bc15f5a70cull, 0x8cbf051e7b24d4f6ull, 0x3671289b40ff9ecaull, 0x9e8ebb1ffc025376ull, 0xb7ac18ac29be09c1ull, 0xa9d8a8cf8d0b4d5full }}, {{ 0x909cb158db988679ull, 0x7f763330cf7051a1ull, 0x206b961089fc33e9ull, 0x31934f3fd817429eull, 0x2cb8f6b9a16c6190ull, 0xa276981b827105bdull }}, {{ 0xa61eed7893f540bbull, 0xfa9dffe81a63304full, 0x4433dca563da071eull, 0xefc1187e70e89a2dull, 0xbf39a3404e3bcfa1ull, 0x58a1f113186a3963ull }}, {{ 0x7d3546b5c794874full, 0xca2bff1107dfe31cull, 0xaa069e75e6844735ull, 0x5d8af4f0691605c4ull, 0x784060830e561c53ull, 0x76536abef4263de5ull }}, {{ 0xe414c319cbcd4915ull, 0xe5b7f6aa4ebedf1cull, 0xa442309b012ac819ull, 0xa76d91641adc39aeull, 0xb283c51e8f5d1b41ull, 0x9f422b75897e6af6ull }}, {{ 0xe8cf9f01f604dad0ull, 0xf92fa2a71374b720ull, 0x6a95e60e0babd102ull, 0x8a47ade90c9a40d2ull, 0xf925b33199a31090ull, 0x3895b2975ef02da2ull }}, {{ 0x181c36139c308c1dull, 0xbbdc5a86c28f2749ull, 0x29dafc8c74b62a1dull, 0x66cccb1a7e068838ull, 0xbb78fff0005ea5a5ull, 0x35d8f9e9b561c85dull }}, {{ 0xf11a1cc419e57925ull, 0x569b8943999788daull, 0xa28ddd7c8f1da529ull, 0x03ffef08ec415231ull, 0x52b9ff6003b27876ull, 0x1a79c32115d1d3a9ull }}, {{ 0x6b051fa902f6bb76ull, 0x62135ca3ffeb588dull, 0x598aa6dd9728739dull, 0x27ff56593a8d35f0ull, 0x3b43f9c024f8b49cull, 0x08c19f4ada32449dull }}, {{ 0x2e333c9a1da3529full, 0xd4c19e67ff317586ull, 0x7f6a84a7e7948425ull, 0x8ff95f7c49841b63ull, 0x50a7c18171b70e19ull, 0x579038ec85f6ae24ull }}, {{ 0xce005e0528613a33ull, 0x4f90300ff7ee973dull, 0xfa292e8f0bcd297aull, 0x9fbdbadadf2911e2ull, 0x268d8f0e71268cffull, 0x6ba2393d3ba2cd6bull }}, {{ 0x0c03ac3393cc45feull, 0x1ba1e09faf51e86aull, 0xc59bd19676039ec7ull, 0x3d694c8cb79ab2ddull, 0x818796906b8181fcull, 0x34563c64545c062full }}, {{ 0x7824ba03c5fabbebull, 0x1452c63cd9331424ull, 0xb8162fe09c2433c7ull, 0x661cfd7f2c0afca9ull, 0x0f4be1a4330f13daull, 0x0b5e5beb4b983ddbull }}, {{ 0xb16f4425bbcb5730ull, 0xcb3bbe607bfec96cull, 0x30dddec6196a05c6ull, 0xfd21e6f7b86ddea1ull, 0x98f6d069fe96c687ull, 0x71af9730f3f26a8eull }}, {{ 0xee58a97955f167deull, 0xf0556fc4d7f3de3eull, 0xe8aab3bcfe2439c3ull, 0xe35305ad344ab24bull, 0xf9a42423f1e3c14full, 0x70dbe7e987782991ull }}, {{ 0x4f769ebd5b6e0eabull, 0x63565db06f86ae75ull, 0x16ab0561ed6a41a7ull, 0xe13e38c40aeaf6f7ull, 0xc069696772e58d1eull, 0x68970f1f4ab19fb3ull }}, {{ 0x1aa23365924c92aeull, 0xe15fa8e45b42d095ull, 0xe2ae35d346269089ull, 0xcc6e37a86d2da5a6ull, 0x841e1e0a7cf78334ull, 0x15e69738eaf03d05ull }}, {{ 0x0a5601f7b6fdbaccull, 0xcdbc98eb909c25d3ull, 0xdace1a40bd81a562ull, 0xfc4e2c9443c87884ull, 0x292d2c68e1ab200full, 0xdb01e8392d626237ull }}, {{ 0x675c13ad25e94bf8ull, 0x095df933a6197a3eull, 0x8c0d0687671075dcull, 0xdb0dbdcaa5d4b530ull, 0x9bc3bc18d0af409full, 0x8e13123bc5d7d627ull }}, {{ 0x0998c4c37b1cf7b0ull, 0x5dabbc047cfec670ull, 0x7882414a06a49a98ull, 0x8e8969ea7a4f13e5ull, 0x15a558f826d8863eull, 0x8cbeb655ba6e5d8cull }}, {{ 0x5ff7afa2cf21acddull, 0xa8b5582ce1f3c060ull, 0xb5168ce4426e09f3ull, 0x915e2328c716c6f6ull, 0xd87579b184753e71ull, 0x7f731f59484fa778ull }}, {{ 0xbfacdc5c1750c09eull, 0x971571c0d38583c3ull, 0x12e180ea984c6384ull, 0xadad5f97c6e3c5a3ull, 0x7496c0ef2c94706full, 0xfa7f397cd31c8ab8ull }}, {{ 0x7cc09b98e9278628ull, 0xe6d67188433725a5ull, 0xbccf0929f2fbe32dull, 0xc8c5bbedc4e5b85eull, 0x8de38957bdcc645cull, 0xc8f83ee03f1d6b34ull }}, {{ 0xdf8613f91b8b3d8dull, 0x04606f52a0277876ull, 0x60165ba37dd6dfcbull, 0xd7b95749b0f933b3ull, 0x8ae35d6d69fbeb9full, 0xd9b274c27726300dull }}, {{ 0xbb3cc7bb13706785ull, 0x2bc4593a418ab4a4ull, 0xc0df9462ea64bdeeull, 0x6d3d68e0e9bc0501ull, 0x6ce1a64623d7343eull, 0x80f88f98a77de087ull }}, {{ 0x505fcd4ec2640b30ull, 0xb5ab7c468f6b0e6full, 0x88bbcbdd27ef6b4dull, 0x446618c921583211ull, 0x40d07ebd66680a70ull, 0x09b59bf68aeac54aull }}, {{ 0x23be051397e86fdfull, 0x18b2dac19a2e9059ull, 0x5755f6a38f5a3109ull, 0xabfcf7db4d71f4afull, 0x8824f36600106862ull, 0x611817a16d2bb4e6ull }}, {{ 0x656c32c3ef145eb7ull, 0xf6fc8b9005d1a37bull, 0x695ba2639985ea5aull, 0xb7e1ae9106738ed9ull, 0x517181fc00a413daull, 0xcaf0ec4e43b51101ull }}, {{ 0xf639fba756cbb323ull, 0xa5dd73a03a3062d1ull, 0x1d9457e3ff3b278dull, 0x2ed0d1aa4083947eull, 0x2e6f13d80668c68bull, 0xed693b0ea512aa0dull }}, {{ 0x9e43d48963f4ff5cull, 0x7aa6844245e3dc33ull, 0x27cb6ee7f84f8b88ull, 0xd42830a68523ccedull, 0xd056c6704017c16full, 0x461c4e9272baa483ull }}, {{ 0x2ea64d5de791f997ull, 0xca812a96bae69a04ull, 0x8df2550fb31b7354ull, 0x4991e68133660143ull, 0x2363c06280ed8e5eull, 0xbd1b11b87b4a6d26ull }}, {{ 0xd27f05ab0bb3bfe4ull, 0xe90ba9e34d020429ull, 0x8b77529cff12814full, 0xdfb3010c01fc0ca3ull, 0x61e583d909478faeull, 0x630eb134d0e8437dull }}, {{ 0x38f638ae75057eebull, 0x1a74a2e1021429a2ull, 0x72a93a21f6b90d1full, 0xbcfe0a7813d87e63ull, 0xd2f7267a5ccb9cd4ull, 0xde92ec102912a2e5ull }}, {{ 0x399e36d09236f52cull, 0x088e5cca14c9a056ull, 0x7a9c4553a33a8337ull, 0x61ec68b0c674efe2ull, 0x3da780c79ff4204full, 0xb1bd38a19aba5cfaull }}, {{ 0x402e2425b62593b3ull, 0x558f9fe4cfe0435eull, 0xca1ab54460492026ull, 0xd33c16e7c0915ed8ull, 0x688b07cc3f894319ull, 0xf16436500b47a1c6ull }}, {{ 0x81cd69791d77c500ull, 0x579c3ef01ec2a1aeull, 0xe50b14abc2db417full, 0x4058e50d85adb477ull, 0x156e4dfa7b5c9f02ull, 0x6dea1f2070cc51c0ull }}, {{ 0x12061ebb26adb1fdull, 0x6c1a7561339a50d1ull, 0xf26eceb59c908ef9ull, 0x8378f28738c90caeull, 0xd64f0bc8d19e3616ull, 0x4b25374467fb3180ull }}, {{ 0xb43d334f82c8f3e3ull, 0x390895cc0407282aull, 0x785413181da595beull, 0x22b9794837da7ed5ull, 0x5f1675d8302e1ce1ull, 0xef7428ac0fcfef08ull }}, {{ 0x0a64011b1bd986e1ull, 0x3a55d9f8284791abull, 0xb348bef12877d96eull, 0x5b3ebcd22e88f456ull, 0xb6e09a71e1cd20cbull, 0x5a8996b89e1f5653ull }}, {{ 0x67e80b0f167f44ccull, 0x475a83b192cbb0aeull, 0x00d7756b94ae7e4eull, 0x90736035d1598b63ull, 0x24c60872d20347f1ull, 0x895fe3362d395f45ull }}, {{ 0x0f106e96e0f8affcull, 0xc98924efbbf4e6d0ull, 0x086a9633ced0ef0eull, 0xa481c21a2d7f71deull, 0x6fbc547c3420cf6full, 0x5dbee01dc43db8b3ull }}, {{ 0x96a451e4c9b6dfd4ull, 0xdf5b715d57910420ull, 0x5429de0614295693ull, 0x6d119505c6fa72acull, 0x5d5b4cda09481a5cull, 0xa974c129aa693702ull }}, {{ 0xe26b32efe124be4aull, 0xb9926da56baa2945ull, 0x49a2ac3cc99d61c6ull, 0x42afd239c5c87abbull, 0xa59100845cd1079cull, 0x9e8f8ba0a81c2617ull }}, {{ 0xd82ffd5ecb6f6ee7ull, 0x3fb8487634a59cbaull, 0xe05aba5fe025d1c3ull, 0x9ade3641b9d4cb50ull, 0x77aa052ba02a4c1aull, 0x319b744691197cecull }}, {{ 0x71dfe5b3f25a5506ull, 0x7d32d49e0e781f4cull, 0xc38b47bec17a31a0ull, 0x0cae1e91424ff128ull, 0xaca433b441a6f90aull, 0xf0128ac1aafee13cull }}, {{ 0x72bef90777875239ull, 0xe3fc4e2c90b138fcull, 0xa370cd738ec5f044ull, 0x7ecd31ac971f6b97ull, 0xbe6a050a9085ba64ull, 0x60b96b90adf4cc5eull }}, {{ 0x7b75ba4aab49363bull, 0xe7db0dbda6ec39dcull, 0x6268068393bb62b0ull, 0xf403f0bde73a33ecull, 0x70243269a53947ecull, 0xc73e33a6cb8ffbb3ull }}, {{ 0xd29946eab0dc1e51ull, 0x0e8e8968853a429cull, 0xd8104123c551dae9ull, 0x8827676b0846073bull, 0x6169f820743ccf41ull, 0xc86e0483f39fd502ull }}, {{ 0x39fcc52ae8992f27ull, 0x91915e1534469a20ull, 0x70a28b65b5328d1aull, 0x518a0a2e52bc4856ull, 0xce23b1448a60188full, 0xd44c2d27843e5217ull }}, {{ 0x43dfb3ad15fbd785ull, 0xafadacd40ac20542ull, 0x665971f913f98309ull, 0x2f6465cf3b5ad360ull, 0x0d64ecad67c0f599ull, 0x4af9c38b2a6f34eeull }}, {{ 0xa6bd04c2dbd66b30ull, 0xdcc8c0486b943496ull, 0xff7e73bac7bf1e60ull, 0xd9ebfa18518c41c3ull, 0x85f13ec60d8997fbull, 0xedc1a36fa858114cull }}, {{ 0x83622f9c96602fddull, 0x9fd782d433ca0de2ull, 0xfaf0854bcd772fc8ull, 0x8337c4f32f7a91a7ull, 0x3b6c73bc875fefd6ull, 0x4990625c9370acfdull }}, {{ 0x21d5dc1ddfc1dea1ull, 0x3e6b1c4a05e48ad9ull, 0xcd6534f606a7ddd6ull, 0x202db17fdac9b08full, 0x523c855d49bf5e61ull, 0xdfa3d79dc266c1e4ull }}, {{ 0x525a992abd92b24dull, 0x702f1ae43aed6c7bull, 0x05f4119c428eaa5eull, 0x41c8eefe8be0e59eull, 0x365d35a4e179afcbull, 0xbc666c29980392ebull }}, {{ 0x3789fbab67baf702ull, 0x61d70cea4d463cd1ull, 0x3b88b01a9992a7b0ull, 0x91d955f176c8f82cull, 0x1fa41870cec0ddf0ull, 0x5c00399ff023bd30ull }}, {{ 0x2b63d4b20d4da619ull, 0xd266812704be602cull, 0x5356e109ffba8ce3ull, 0xb27d5b6ea3d9b1baull, 0x3c68f4681388ab65ull, 0x9802403f616563e1ull }}, {{ 0xb1e64ef485087cf8ull, 0x38010b862f6fc1b9ull, 0x4164ca63fd4980e6ull, 0xf8e592526680f147ull, 0x5c198c10c356b1f8ull, 0xf0168279cdf5e6ccull }}, {{ 0xf2ff158d3254e1b4ull, 0x300a733dda5d9140ull, 0x8defe7e7e4df08feull, 0xb8f7b73801096cc8ull, 0x98ff78a7a162f3b9ull, 0x60e118c20b9b03fbull }}, {{ 0x7df6d783f750d104ull, 0xe068806a87a7ac89ull, 0x8b5f0f0ef0b659edull, 0x39ad28300a5e3fd5ull, 0xf9fab68c4ddd8541ull, 0xc8caf794740e27d3ull }}, {{ 0xeba46b27a9282a24ull, 0xc41504294c8cbd5eull, 0x71b69695671f834aull, 0x40c391e067ae7e57ull, 0xc3cb217b0aa7348cull, 0xd7edabcc888d8e47ull }}, {{ 0x346c2f8c9b91a569ull, 0xa8d2299cfd7f65b5ull, 0x7121e1d6073b20ebull, 0x87a3b2c40cd0ef6aull, 0xa5ef4ece6a880d7aull, 0x6f48b5fd55878ecdull }}, {{ 0x0c39db7e13b07617ull, 0x9835a021e6f9f914ull, 0x6b52d25c484f4934ull, 0x4c64fba880295a28ull, 0x7b591410295086c9ull, 0x58d71be5574b9408ull }}, {{ 0x7a4292ecc4e49ce7ull, 0xf218415305c3bac8ull, 0x313c379ad318dc0dull, 0xfbf1d495019d8594ull, 0xd17ac8a19d2543dcull, 0x786716f568f3c854ull }}, {{ 0xc699bd3fb0ee2103ull, 0x74f28d3e39a54bd4ull, 0xec5a2c0c3ef8988bull, 0xd7724dd2102737c9ull, 0x2ecbd6502374a6a1ull, 0xb406e5961985d350ull }}, {{ 0xc201647ce94d4a1bull, 0x9179846e4074f64full, 0x3b85b87a75b5f572ull, 0x6a770a34a1882de3ull, 0xd3f65f21628e8252ull, 0x0844f7dcff3a4121ull }}, {{ 0x940dece11d04e510ull, 0xaebf2c4e84919f1dull, 0x533934c8991b9679ull, 0x28a6660e4f51cae0ull, 0x479fb74dd9911738ull, 0x52b1aea1f8468b52ull }}, {{ 0xc88b40cb2230f2a2ull, 0xd377bb112db03727ull, 0x403c0fd5fb13e0c0ull, 0x967ffc8f1931ecc3ull, 0xcc3d290a7faae831ull, 0x3af0d253b2c17136ull }}, {{ 0xd57087ef55e97a59ull, 0x42ad4eabc8e2278dull, 0x82589e5bcec6c788ull, 0xe0ffdd96fbf33fa0ull, 0xfa639a68fcad11efull, 0x4d683744fb8e6c23ull }}, {{ 0x56654f595b1ec777ull, 0x9ac512b5d8d58b8aull, 0x17762f9613c3cb52ull, 0xc9fea7e5d7807c45ull, 0xc7e40819dec2b35eull, 0x061228b1d3903967ull }}, {{ 0x5ff5197d8f33caa2ull, 0x0bb2bb1a78577367ull, 0xea9ddbdcc5a5f13aull, 0xe3f28efa6b04dab2ull, 0xcee85102b39b01b3ull, 0x3cb596f243a23e0dull }}, {{ 0xbf92fee79805ea53ull, 0x74fb4f08b36a8209ull, 0x2a2a969fb87b6c44ull, 0xe77995c82e308afdull, 0x15132a1b040e1106ull, 0x5f17e576a4566c8aull }}, {{ 0x7bbdf50bf03b273bull, 0x91d1165702291461ull, 0xa5a9e23d34d23aacull, 0x0abfd9d1cde56de3ull, 0xd2bfa50e288caa45ull, 0xb6eef6a26b603d64ull }}, {{ 0xd56b9277624f8852ull, 0xb22adf66159acbceull, 0x78a2d66410364abdull, 0x6b7e82320af64ae4ull, 0x3b7c728d957ea6b2ull, 0x2555a25831c265f0ull }}, {{ 0x5633b8a9d71b5330ull, 0xf5acb9fcd80bf614ull, 0xb65c5fe8a21eeb68ull, 0x32f115f46d9eececull, 0x52dc7987d6f282f8ull, 0x75585771f197fb62ull }}, {{ 0x5e0536a267113fe5ull, 0x98bf43e070779ccbull, 0x1f9bbf1655353219ull, 0xfd6adb8c4835413full, 0x3c9cbf4e65791db1ull, 0x95736a736fefd1d7ull }}, {{ 0xac34225806ac7ef1ull, 0xf778a6c464ac1ff1ull, 0x3c1576df5413f4ffull, 0xe62c937ad2148c77ull, 0x5e1f790ff6bb28f3ull, 0xd68228825f5e3268ull }}, {{ 0xba09577042bcf565ull, 0xaab683abeeb93f70ull, 0x58d6a4b948c791ffull, 0xfdbdc2cc34cd7ca8ull, 0xad3aba9fa34f9986ull, 0x61159517b9adf813ull }}, {{ 0x445d6a629b6195f7ull, 0xab2124b7533c7a67ull, 0x78626f3cd7cbb3fcull, 0xe9699bfa1006de93ull, 0xc44b4a3c611bff45ull, 0xcad7d2ed40cbb0c4ull }}, {{ 0xaba627da11cfdba4ull, 0xaf4b6f29405cc808ull, 0xb3d858606df507deull, 0x1e2017c4a044b1c2ull, 0xaaf0e65bcb17f8bbull, 0xec6e3d4487f4e7afull }}, {{ 0xb47d8e84b21e9465ull, 0xd8f2579c839fd056ull, 0x067373c44b924eb2ull, 0x2d40edae42aef19bull, 0xad68ff95eeefb74full, 0x3c4e64ad4f910cdcull }}, {{ 0x0ce7912ef531cbf7ull, 0x79776c1d243e2363ull, 0x408285aaf3b712fcull, 0xc48948ce9ad5700eull, 0xc619fbdb555d2917ull, 0x5b0feec51baa809eull }}, {{ 0x810babd593f1f7a4ull, 0xbeaa39236a6d61deull, 0x851938ad8526bddcull, 0xad5cd8120c56608eull, 0xbd03d69155a39aedull, 0x8e9f53b314a90633ull }}, {{ 0x0a74b657c773ac66ull, 0x72a63b622845d2b1ull, 0x32fc36c733836a9full, 0xc5a070b47b5fc591ull, 0x622661ad58640d48ull, 0x923944fece9a3e05ull }}, {{ 0x688f1f6dca84bc00ull, 0x7a7e51d592ba3aeaull, 0xfdda23c803222a3aull, 0xb844670cd1bdb7abull, 0xd57fd0c573e884d7ull, 0xb63cb1f412066c35ull }}, {{ 0x15973a49e92f57ffull, 0xc8ef3257bb464d28ull, 0xea8565d01f55a648ull, 0x32ac068031692cb7ull, 0x56fe27b68715306dull, 0x1e5ef388b4403a1aull }}, {{ 0xd7e846e31bd96ff5ull, 0xd957f76d50bf0390ull, 0x2935fa2139587ed7ull, 0xfab84101ee1bbf2full, 0x65ed8d2146d3e443ull, 0x2fb583570a824507ull }}, {{ 0x6f12c4df167e5f94ull, 0x7d6faa45277623a8ull, 0x9c1bc54c3d74f46eull, 0xcb328a134d1577d7ull, 0xfb47834cc446eaa7ull, 0xdd1721666916b249ull }}, {{ 0x56bbb0b6e0efbbc5ull, 0xe65ca6b38a9d6494ull, 0x1915b4fa66918c50ull, 0xeff964c102d6ae6cull, 0xd0cb20ffaac52a8dull, 0xa2e74e001ae2f6e3ull }}, {{ 0x6354e724c95d55b4ull, 0xff9e83036a25edcbull, 0xfad911c801af7b28ull, 0x5fbdef8a1c62d038ull, 0x27ef49fcabb3a98bull, 0x5d090c010cdda4e6ull }}, {{ 0xe151076fdda55908ull, 0xfc311e22257b49f1ull, 0xcc7ab1d010dacf99ull, 0xbd6b5b651bdc2239ull, 0x8f58e3deb5049f71ull, 0xa25a780a80a870fdull }}, {{ 0xcd2a4a5ea8757a4dull, 0xd9eb2d5576d0e372ull, 0xfccaf220a88c1c03ull, 0x663191f316995641ull, 0x9978e6b3122e3a71ull, 0x5788b069069469e7ull }}, {{ 0x03a6e7b29496c6feull, 0x832fc556a428e27cull, 0xdfed754695791826ull, 0xfdefb37ee1fd5e93ull, 0xfeb902feb5ce486dull, 0x6b56e41a41cc230bull }}, {{ 0x24850cf9cde3c5ebull, 0x1fddb5626998d8d8ull, 0xbf4694c1d6baf181ull, 0xeb5d02f4d3e5b1c6ull, 0xf33a1df31a0ed44bull, 0x3164e90691f95e77ull }}, {{ 0x6d3281c20ae5bb30ull, 0x3ea915d81ff87871ull, 0x78c1cf92634d6f0bull, 0x31a21d9046f8f1c3ull, 0x80452b7f04944af7ull, 0xedf11a41b3bdb0afull }}, {{ 0x43f911946cf94fe2ull, 0x729ada713fb4b46eull, 0xb7921bb7e1065670ull, 0xf05527a2c5b971a2ull, 0x02b3b2f62dcaeda7ull, 0x4b6b06910568e6dbull }}, {{ 0xa7baafcc41bd1ed5ull, 0x7a0c886c7d0f0c4eull, 0x2bb5152eca3f6064ull, 0x63538c5bb93e705bull, 0x1b04fd9dc9ed488full, 0xf22e41aa3619048eull }}, {{ 0x8d4addfa91633456ull, 0xc47d543ce2967b12ull, 0xb512d3d3e679c3ecull, 0xe1437b953c70638full, 0x0e31e829e344d599ull, 0x75ce90a61cfa2d8dull }}, {{ 0x84ecabc9ade00b57ull, 0xace54a60d9e0ceb9ull, 0x12bc464700c1a73full, 0xcca2d3d45c63e39dull, 0x8df311a2e0b05802ull, 0x9a11a67d21c5c782ull }}, {{ 0x313eb5e0cac07169ull, 0xc0f4e7c882c8133full, 0xbb5abec60790887cull, 0xfe5c464b9be6e422ull, 0x8b7eb05cc6e3701bull, 0x04b080e351b9cb19ull }}, {{ 0xec731ac7eb846e1dull, 0x89910dd51bd0c077ull, 0x518b73bc4ba554dfull, 0xef9abef41704e95bull, 0x72f2e39fc4e26117ull, 0x2ee508e13141eeffull }}, {{ 0x3c7f0bcf332c4d23ull, 0x5faa8a53162784afull, 0x2f72855af47550bbull, 0x5c0b7588e6311d91ull, 0x7d7ce43db0d7caefull, 0xd4f258cbec9355faull }}, {{ 0x5cf67617ffbb0362ull, 0xbca9673edd8b2ed8ull, 0xda79358d8c952751ull, 0x98729758fdeb27abull, 0xe6e0ea68e86ded59ull, 0x517777f73dc15bc8ull }}, {{ 0xa1a09ceffd4e21d6ull, 0x5e9e0874a76fd473ull, 0x88bc17877dd38931ull, 0xf479e979eb2f8cb6ull, 0x04c92819144b457full, 0x2eaaafa8698d95d9ull }}, {{ 0x5046215fe50d5260ull, 0xb22c548e8a5e4c84ull, 0x5758eb4aea435bedull, 0x8cc31ec32fdb7f21ull, 0x2fdb90facaf0b6ffull, 0xd2aadc941f87da7aull }}, {{ 0x22bd4dbef28537c2ull, 0xf5bb4d9167aefd2bull, 0x697930ed26a19748ull, 0x7f9f339fde92f74dull, 0xde93a9cbed6725fbull, 0x3aac9dc93b4e88c5ull }}, {{ 0x5b65097579342d98ull, 0x995107ae0cd5e3afull, 0x1ebbe943824fe8d9ull, 0xfc38043eb1bda906ull, 0xb1c4a1f746077bd2ull, 0x4abe29dc511157baull }}, {{ 0x91f25e96bc09c7edull, 0xfd2a4ccc805ae4d9ull, 0x33571ca3171f187full, 0xda302a72f1689a3dull, 0xf1ae53a8bc4ad63dull, 0xeb6da29b2aad6d4aull }}, {{ 0xb377b1e35861cf44ull, 0xe3a6fffd038cf07full, 0x01671e5ee736f4ffull, 0x85e1a87d6e160664ull, 0x70cf44975aec5e6aull, 0x32485a0faac644edull }}, {{ 0x02acf2e173d218a4ull, 0xe485ffe2238164fdull, 0x0e072fb5082591feull, 0x3ad094e64cdc3fe8ull, 0x6818ade98d3bb029ull, 0xf6d3849cabbeb146ull }}, {{ 0x1ac17cce8634f66bull, 0xed3bfed5630df1e2ull, 0x8c47dd125177b3f4ull, 0x4c25d0ff009a7f10ull, 0x10f6cb1f8454e19cull, 0xa4432e1eb572ecc0ull }}, {{ 0x0b8ee0113e11a02bull, 0x4457f455de8b72d5ull, 0x7acea2b72ead0791ull, 0xf97a29f60608f6a5ull, 0xa9a3ef3b2b50d01aull, 0x6a9fcd33167d3f80ull }}, {{ 0x7394c0ac6cb041a9ull, 0xab6f8b5ab1727c52ull, 0xcc125b27d2c24bacull, 0xbec5a39c3c59a276ull, 0xa067584fb128210dull, 0x2a3e03fee0e47b06ull }}, {{ 0x83cf86bc3ee2909dull, 0xb25b718aee78db38ull, 0xf8b78f8e3b96f4beull, 0x73b8641a5b8058a3ull, 0x4409731ceb914a89ull, 0xa66c27f4c8ecce42ull }}, {{ 0x261b435a74d9a627ull, 0xf7926f6d50b89035ull, 0xb72b9b8e53e58f72ull, 0x8533e90793037667ull, 0xa85e7f2133ace95eull, 0x80398f8fd9400e96ull }}, {{ 0x7d10a18890807d85ull, 0xabb85a452735a213ull, 0x27b4138f46f79a7dull, 0x34071a4bbe22a00dull, 0x93b0f74c04c11db1ull, 0x023f9b9e7c8091e2ull }}, {{ 0xe2a64f55a504e72full, 0xb53386b3881854c2ull, 0x8d08c398c5ac08e8ull, 0x084706f56d5a4083ull, 0xc4e9a8f82f8b28ecull, 0x167c1430dd05b2d9ull }}, {{ 0xda7f1958723107d8ull, 0x1403430350f34f9cull, 0x8257a3f7b8b85917ull, 0x52c6459645868523ull, 0xb12099b1db6f9938ull, 0xe0d8c9e8a238fc81ull }}, {{ 0x88f6fd7475ea4e72ull, 0xc8209e2129811c20ull, 0x176c67ad37337ae6ull, 0x3bbeb7deb7413363ull, 0xeb4600f2925bfc33ull, 0xc877e3165639dd10ull }}, {{ 0x59a5e68c9b271077ull, 0xd1462d4b9f0b1945ull, 0xea3c0cc42802cd03ull, 0x55732eb3288c01deull, 0x30bc0979b797da00ull, 0xd4aededf5e42a2a9ull }}, {{ 0x807b017e0f86a4a9ull, 0x2cbdc4f4366efcb5ull, 0x26587fa9901c0226ull, 0x567fd2ff957812b5ull, 0xe7585ec12bee8403ull, 0x4ed4b4b9ae9a5a9bull }}, {{ 0x04ce0eec9b426e9aull, 0xbf69b18a2055df17ull, 0x7f74fc9fa118157dull, 0x60fe3dfbd6b0bb13ull, 0x0973b38bb7512821ull, 0x144f0f40d2078a17ull }}, {{ 0x300c953e10985200ull, 0x7a20ef65435ab6e6ull, 0xfa91de3c4af0d6e9ull, 0xc9ee6bd662e74ec2ull, 0x5e850375292b914dull, 0xcb169888344b64e6ull }}, {{ 0xe07dd46ca5f333fcull, 0xc54959f4a18b24fdull, 0xc9b2ae5aed68651eull, 0xe350365fdd09139dull, 0xb13222939bb3ad09ull, 0xeee1f5520af1f0ffull }}, {{ 0xc4ea4c3e7b8007d4ull, 0xb4dd838e4f6f71eaull, 0xe0facf8d4613f333ull, 0xe1221fbea25ac429ull, 0xebf559c41504c262ull, 0x54d395346d7369fcull }}, {{ 0xb126fa70d3004e46ull, 0x10a7238f1a5a732bull, 0xc9cc1b84bcc78005ull, 0xcb553d72578ba9a2ull, 0x379581a8d22f97dcull, 0x5043d40c468223e1ull }}, {{ 0xeb85c8683e030eb9ull, 0xa687639707887fb4ull, 0xe1f9132f5fcb0032ull, 0xf15466776b74a05bull, 0x2bd7109835dbee9full, 0x22a6487ac11566ccull }}, {{ 0x3339d4126c1e933dull, 0x8149e3e64b54fd11ull, 0xd3babfd9bdee01faull, 0x6d4c00aa328e4396ull, 0xb666a5f21a97523full, 0x5a7ed4cb8ad603f9ull }}, {{ 0x004248b83931c067ull, 0x0ce2e6fef151e2acull, 0x454b7e816b4c13c9ull, 0x44f806a5f98ea3e4ull, 0x20027b7509e9367aull, 0x88f44ff36c5c27c1ull }}, {{ 0x0296d7323bf18401ull, 0x80dd05f56d32dab8ull, 0xb4f2f10e30f8c5daull, 0xb1b0427bbf9266eaull, 0x4018d292631c20c6ull, 0x598b1f823b998d8bull }}, {{ 0x19e467f6576f280bull, 0x08a23b9643fc8b30ull, 0x117d6a8de9b7ba89ull, 0xf0e298d57bb8052bull, 0x80f839b7df1947c2ull, 0x7f6f3b1653ff8770ull }}, {{ 0x02ec0f9f6a57906dull, 0x565653dea7dd6fe1ull, 0xaee6298b212d495aull, 0x68d9f856d53033aeull, 0x09b2412eb6fccd9dull, 0xfa584edf47fb4a65ull }}, {{ 0x1d389c3a276ba43dull, 0x5f5f46b28ea65ecaull, 0xd4fd9f6f4bc4dd87ull, 0x1883b36453e204d2ull, 0x60f68bd325e00826ull, 0xc77314b8cfd0e7f2ull }}, {{ 0x24361a458a346a63ull, 0xb9b8c2f9927fb3e5ull, 0x51e83a58f5b0a749ull, 0xf52501eb46d4303cull, 0xc9a1763f7ac0517cull, 0xca7ecf381e290f77ull }}, {{ 0x6a1d06b7660c27deull, 0x41379dbfb8fd06f3ull, 0x3312477998e688e1ull, 0x93721330c449e25bull, 0xe04e9e7acb832ee1ull, 0xe8f418312d9a9aadull }}, {{ 0x25224329fc798ea9ull, 0x8c2c297d39e24582ull, 0xfeb6cabff90158ccull, 0xc274bfe7aae2d78full, 0xc31230cbf31fd4cfull, 0x1988f1ebc80a0acaull }}, {{ 0x73569fa3dcbf9297ull, 0x79b99ee442d6b715ull, 0xf323eb7fba0d77fdull, 0x988f7f0cacdc6b9full, 0x9eb5e7f77f3e501dull, 0xff597335d0646bebull }}, {{ 0x81623c669f7bb9e6ull, 0xc14034ea9c6326d6ull, 0x7f6732fd4486afe6ull, 0xf59af67ec09c343full, 0x331b0faaf86f2127ull, 0xf97e801a23ec3734ull }}, {{ 0x0dd65c023ad542ffull, 0x8c82112a1bdf8461ull, 0xfa07fde4ad42df03ull, 0x980da0f3861a0a7aull, 0xff0e9cadb4574b8full, 0xbef10105673a2809ull }}, {{ 0x8a5f98164c549df5ull, 0x7d14aba516bb2bcaull, 0xc44feaeec49cb623ull, 0xf08849833d0468cdull, 0xf6921ec90b68f39bull, 0x756a0a3608459063ull }}, {{ 0x67bbf0defb4e2b90ull, 0xe2ceb472e34fb5e9ull, 0xab1f2d53ae1f1d62ull, 0x6552df20622c1809ull, 0xa1b533da72198417ull, 0x9624661c52b7a3e7ull }}, {{ 0x0d5768b5d10db3a3ull, 0xdc130c7ce11d1b1eull, 0xaf37c544cd3725dcull, 0xf53cb743d5b8f060ull, 0x5114068874ff28e9ull, 0xdd6bfd1b3b2c670cull }}, {{ 0x856a171a2a890463ull, 0x98be7ce0cb230f2cull, 0xd82db4b004277aa0ull, 0x945f28a6593963c6ull, 0x2ac8415491f79923ull, 0xa637e3104fbc067bull }}, {{ 0x3624e705a95a2bddull, 0xf770e0c7ef5e97bdull, 0x71c90ee0298aca45ull, 0xcbb7967f7c3de5c4ull, 0xabd28d4db3abfb63ull, 0x7e2edea31d5840cfull }}, {{ 0x1d7106389d85b69dull, 0xaa68c7cf59b1ed64ull, 0x71da94c19f6be6bbull, 0xf52be0fada6af9acull, 0xb639850904b7d1e5ull, 0xedd4b25f2572881cull }}, {{ 0x266a3e3627392225ull, 0xa817ce1980f345e9ull, 0x7289cf903a370354ull, 0x93b6c9cc882dc0bcull, 0x1e3f325a2f2e32fbull, 0x4a4ef7b77679511full }}, {{ 0x80266e1d883b556full, 0x90ee0cff0980bb1bull, 0x79621ba24626214eull, 0xc523e1fd51c9875cull, 0x2e77f785d7cdfdd3ull, 0xe715ad2aa0bd2b37ull }}, {{ 0x01804d2752515654ull, 0xa94c81f65f074f13ull, 0xbdd51456bd7d4d11ull, 0xb366d3e531df499cull, 0xd0afab3a6e0bea45ull, 0x06d8c3aa4763b027ull }}, {{ 0x0f030389372d5f4aull, 0x9cfd139fb64916beull, 0x6a52cb6366e502b0ull, 0x020446f3f2b8e01full, 0x26dcb0484c7726b9ull, 0x4477a4a6c9e4e18eull }}, {{ 0x961e235c27c5b8e4ull, 0x21e2c43d1edae36cull, 0x273bf1e204f21ae6ull, 0x142ac5877b38c13aull, 0x849ee2d2fca7833aull, 0xacac6e83e2f0cf8dull }}, {{ 0xdd2d61998db938e9ull, 0x52dbaa63348ce23dull, 0x885772d431750cfdull, 0xc9abb74ad0378c45ull, 0x2e34dc3dde8b2044ull, 0xbebc5126dd681b87ull }}, {{ 0xa3c5cfff893c3919ull, 0x3c94a7e00d80d66aull, 0x536a7c49ee9281e5ull, 0xe0b528ec222b7ab7ull, 0xce109a6ab16f42afull, 0x735b2b84a6111347ull }}, {{ 0x65ba1ffb5c5a3af9ull, 0x5dce8ec08708602aull, 0x4228dae351b912f4ull, 0xc713993955b2cb29ull, 0x0ca6082aee589adeull, 0x818fb32e7caac0ceull }}, {{ 0xf9453fd19b864dbdull, 0xaa1193854653c1a7ull, 0x95988ce1313abd8bull, 0xc6c3fc3d58fbef9cull, 0x7e7c51ad4f760cb3ull, 0x0f9cffd0deab880cull }}, {{ 0xbcb47e30133f0965ull, 0xa4afc334bf45908full, 0xd7f580cbec4b6774ull, 0xc3a7da6579d75c1dull, 0xf0db30c51a9c7f05ull, 0x9c21fe28b2b3507cull }}, {{ 0x5f0cede0c0765df4ull, 0x6edda00f78b7a59dull, 0x6f9707f73af20a8eull, 0xa48e87f6c269992aull, 0x688fe7b30a1cf639ull, 0x1953ed96fb0124e1ull }}, {{ 0xb6814ac7849fab87ull, 0x54a8409ab72c7825ull, 0x5be64fa84d746990ull, 0x6d914fa3981ffba8ull, 0x159f0cfe65219e40ull, 0xfd4747e5ce0b70ceull }}, {{ 0x210cebcb2e3cb346ull, 0x4e92860b27bcb179ull, 0x96ff1c93068c1fa3ull, 0x47ad1c63f13fd493ull, 0xd83681eff3502e84ull, 0xe4c8cefa0c72680cull }}, {{ 0x4a8135efce5f00bdull, 0x11b93c6f8d5eeebbull, 0xe5f71dbe41793c61ull, 0xccc31be76c7e4dc3ull, 0x7221135f8121d12aull, 0xefd815c47c781080ull }}, {{ 0xe90c1b5e0fb60762ull, 0xb13c5c5b85b55350ull, 0xfba7296e8ebc5bcaull, 0xff9f170a3cef09a6ull, 0x754ac1bb0b522babull, 0x5e70d9acdcb0a504ull }}, {{ 0x1a7911ac9d1c49d4ull, 0xec5b9b9339154129ull, 0xd4879e51935b95eaull, 0xfc36e66661566085ull, 0x94eb914e7135b4b7ull, 0xb06880c09ee6722cull }}, {{ 0x08bab0be231ae244ull, 0x3b9413c03ad48b9bull, 0x4d4c2f2fc193db2dull, 0xda24ffffcd5fc53aull, 0xd133ad106c190f2full, 0xe4150786350075bdull }}, {{ 0x574ae76d5f0cd6abull, 0x53c8c5824c4d740eull, 0x04f9d7dd8fc68fc4ull, 0x8571fffe05bdb447ull, 0x2c04c2a438fa97deull, 0xe8d24b3e1204996aull }}, {{ 0x68ed0a45b68062b3ull, 0x45d7b716fb06888full, 0x31c26ea79dc19dabull, 0x3673ffec39690ac6ull, 0xb82f9a6a39c9eeb1ull, 0x1836f06cb42dfe25ull }}, {{ 0x194266b92103dafbull, 0xba6d26e5ce41559aull, 0xf198528c299028b0ull, 0x2087ff3a3e1a6bbdull, 0x31dc082641e352ecull, 0xf225643f09cbed79ull }}, {{ 0xfc98033b4a268dd1ull, 0x484384fa0e8d5804ull, 0x6ff339799fa196e7ull, 0x454ff8466d08356bull, 0xf298517e92e13d39ull, 0x7575ea7661f746bbull }}, {{ 0xddf02050e5818a29ull, 0xd2a331c491857031ull, 0x5f803ec03c4fe508ull, 0xb51fb2c042521632ull, 0x79f32ef1bccc643cull, 0x969b289fd3a8c357ull }}, {{ 0xab614328f70f659bull, 0x3a5ff1adaf3661f2ull, 0xbb0273825b1ef258ull, 0x133cfb829734ddf7ull, 0xc37fd5715ffbea5full, 0xe20f963e4497a16aull }}, {{ 0xb1cc9f99a699f811ull, 0x47bf70c8d81fd37aull, 0x4e1883178f357772ull, 0xc061d319e810abadull, 0xa2fe566dbfd727b6ull, 0xd49bde6eadec4e2bull }}, {{ 0xf1fe3c008203b0a6ull, 0xcd7a67d8713e42caull, 0x0cf51eeb9816aa76ull, 0x83d23f0310a6b4c5ull, 0x5def60497e678d23ull, 0x4e16b052cb3b0db4ull }}, {{ 0x73ee58051424e67full, 0x06c80e746c6e9bedull, 0x81933533f0e2a8a4ull, 0x2636761ea6830fb2ull, 0xab59c2def00b8363ull, 0x0ce2e33bf04e890bull }}, {{ 0x874f7032c97100f7ull, 0x43d0908c3c521746ull, 0x0fc0140768da9668ull, 0x7e209d32811e9cf9ull, 0xb1819cb5607321dfull, 0x80dce05763115a74ull }}, {{ 0x491a61fbde6a09a2ull, 0xa625a57a5b34e8c1ull, 0x9d80c84a1889e012ull, 0xed4623f90b3221baull, 0xef101f15c47f52baull, 0x08a0c369dead888eull }}, {{ 0xdb07d3d6b0246059ull, 0x7d7876c79011178cull, 0x2707d2e4f562c0baull, 0x44bd67ba6ff5514aull, 0x56a136d9acf93b4dull, 0x5647a222b2c75595ull }}, {{ 0x8e4e4662e16bc379ull, 0xe6b4a3cba0aaeb80ull, 0x864e3cf195db8748ull, 0xaf660d485f952ce5ull, 0x624c2480c1bc5104ull, 0x5ecc555afbc957d5ull }}, {{ 0x8f0ebfdcce35a2b5ull, 0x030e65f446ad3305ull, 0x3f0e616fda9348d9ull, 0xd9fc84d3bbd3c0f7ull, 0xd6f96d07915b2a2eull, 0xb3fb558dd5dd6e55ull }}, {{ 0x96937ea00e185b13ull, 0x1e8ffb8ac2c3fe37ull, 0x768fce5e89c0d87aull, 0x83dd3045564589a8ull, 0x65be424bad8fa5d4ull, 0x07d1578a5aa64f5aull }}, {{ 0xe1c2f2408cf38ebaull, 0x319fd36b9ba7ee2bull, 0xa19e0fb1618874c5ull, 0x26a3e2b55eb76094ull, 0xf96e96f4c79c7a4dull, 0x4e2d6b678a7f1987ull }}, {{ 0xd19d768581839341ull, 0xf03e4234148f4db6ull, 0x502c9cedcf548fb3ull, 0x8266db15b329c5ceull, 0xbe51e58fcc1cc703ull, 0x0dc6320b68f6ff4full }}, {{ 0x3026a1370f23c089ull, 0x626e9608cd990924ull, 0x21be214a194d9d07ull, 0x18048ed8ffa1ba0full, 0x6f32f79df91fc623ull, 0x89bdf47219a5f91dull }}, {{ 0xe1824c269765855aull, 0xd851dc5807fa5b69ull, 0x516d4ce4fd082249ull, 0xf02d9479fc514497ull, 0x57fdac2bbb3dbd5eull, 0x616b8c75007bbb26ull }}, {{ 0xcf16f981e9f73588ull, 0x73329b704fc79222ull, 0x2e4500f1e25156e2ull, 0x61c7ccc3db2cade9ull, 0x6fe8b9b5506965b5ull, 0xce337c9204d54f7full }}, {{ 0x16e5bf1323a81750ull, 0x7ffa12631dcbb55cull, 0xceb20972d72d64d8ull, 0xd1cdffa68fbecb1bull, 0x5f174115241df915ull, 0x0e02ddb430551afaull }}, {{ 0xe4f976bf6490e920ull, 0xffc4b7df29f51598ull, 0x12f45e7c67c5f074ull, 0x320bfc819d73ef16ull, 0xb6e88ad3692bbadaull, 0x8c1ca909e3530dc7ull }}, {{ 0xf1bea379eda91b42ull, 0xfdaf2eb7a392d7f8ull, 0xbd8bb0dc0dbb6491ull, 0xf477dd10268756dcull, 0x25156c421bb54c85ull, 0x791e9a62e13e89cdull }}, {{ 0x717262c3489b1096ull, 0xe8d7d32c63bc6fb9ull, 0x6774e8988951edb3ull, 0x8caea2a18149649full, 0x72d63a951514fd3bull, 0xbb3207dccc716203ull }}, {{ 0x6e77dba0d60ea5dbull, 0x186e3fbbe55c5d3eull, 0x0a9115f55d334907ull, 0x7ed25a4f0cddee3aull, 0x7c5e49d2d2d1e453ull, 0x4ff44e9ffc6dd422ull }}, {{ 0x50ae94485c927a8bull, 0xf44e7d56f59ba470ull, 0x69aadb95a400da46ull, 0xf437871680ab4e44ull, 0xdbaee23c3c32eb42ull, 0x1f8b123fdc4a4958ull }}, {{ 0x26d1cad39db8c96cull, 0x8b10e56598146c63ull, 0x20ac93d8680886c5ull, 0x8a2b46e106b10eacull, 0x94d4d65a59fd309dull, 0x3b6eb67e9ae6dd78ull }}, {{ 0x8431ec442937de37ull, 0x6ea8f5f7f0cc3bdfull, 0x46bdc674105543b7ull, 0x65b0c4ca42ea92b9ull, 0xd0505f8783e3e627ull, 0x525320f20d04a6b5ull }}, {{ 0x29f33aa99c2eae27ull, 0x52999baf67fa56bbull, 0xc369c088a354a52aull, 0xf8e7afe69d29bb3cull, 0x2323bb4b26e6fd89ull, 0x373f4974822e831aull }}, {{ 0xa3804aa019d2cd89ull, 0x3a0014da0fc7634full, 0xa2218556614e73a7ull, 0xb90cdf0223a1505full, 0x5f6550ef8505e763ull, 0x2878de8d15d11f05ull }}, {{ 0x6302ea41023c0758ull, 0x4400d0849dc9e11cull, 0x554f355fcd108488ull, 0x3a80b615644d23bcull, 0xb9f5295b323b09e5ull, 0x94b8b182da2b3635ull }}, {{ 0xde1d268a16584974ull, 0xa808252e29e2cb1bull, 0x551815be02a52d52ull, 0x49071cd5eb03655bull, 0x43939d8ff64e62f4ull, 0xcf36ef1c85b01e19ull }}, {{ 0xad238164df72de8dull, 0x905173cda2dbef16ull, 0x52f0d96c1a73c53aull, 0xda47205b2e21f591ull, 0xa3c4279f9f0fdd8aull, 0x1825571d38e12cfcull }}, {{ 0xc3630df0ba7cb17eull, 0xa32e86085c9756e2ull, 0x3d687e390885b449ull, 0x86c7438fcd5397adull, 0x65a98c3c369ea76cull, 0xf175672438cbc1deull }}, {{ 0xa1de8b6748deeeeeull, 0x5fd13c539de964dbull, 0x6614ee3a55390ae0ull, 0x43c8a39e0543ecc4ull, 0xf89f7a5a22328a3dull, 0x6e96076a37f592afull }}, {{ 0x52b17208d8b55548ull, 0xbe2c5b442b1df094ull, 0xfcd14e47543a6cc3ull, 0xa5d6642c34a73fabull, 0xb63ac78555f96664ull, 0x51dc4a262f97badfull }}, {{ 0x3aee7458771554ceull, 0x6dbb90a9af2b65cbull, 0xe02d0ec94a483fa5ull, 0x7a5fe9ba0e887cb7ull, 0x1e4bcb355bbdffeeull, 0x329ae57ddbed4cbdull }}, {{ 0x4d508b74a6d5500eull, 0x4953a6a0d7b1f9f0ull, 0xc1c293dce6d27c76ull, 0xc7bf21449154df2eull, 0x2ef5f015956bff50ull, 0xfa0cf6ea9744ff63ull }}, {{ 0x0525728e8455208cull, 0xdd4482486cf3c363ull, 0x9199c6a10438dc9eull, 0xcd774cadad50b7d3ull, 0xd59b60d7d637f927ull, 0xc481a529e8b1f9dfull }}, {{ 0x337679912b534578ull, 0xa4ad16d44185a1deull, 0xb001c24a2a389e34ull, 0x06a8fec8c5272e43ull, 0x5811c86e5e2fbb8eull, 0xad1073a316f3c2beull }}, {{ 0x02a0bfabb140b6afull, 0x6ec2e44a8f3852aeull, 0xe01196e5a6362e0eull, 0x4299f3d7b387cea4ull, 0x70b1d44faddd538cull, 0xc2a4845ee5859b6full }}, {{ 0x1a477cb4ec8722d6ull, 0x539ceae998333accull, 0xc0afe4f87e1dcc90ull, 0x9a03866d034e1270ull, 0x66f24b1ccaa5437aull, 0x9a6d2bb4f738125aull }}, {{ 0x06cadf113d475c57ull, 0x44212d1ff2004bf9ull, 0x86def1b4ed29fda3ull, 0x04234042210cb867ull, 0x0576ef1fea74a2caull, 0x0843b511a830b788ull }}, {{ 0x43ecb6ac64c99b6aull, 0xa94bc33f7402f7baull, 0x44b5711143a3e860ull, 0x296082954a7f340bull, 0x36a5573f288e5be4ull, 0x52a512b091e72b50ull }}, {{ 0xa73f22bbefe01221ull, 0x9cf5a07a881dad46ull, 0xaf166aaca46713c6ull, 0x9dc519d4e8f80870ull, 0x22756877958f96e9ull, 0x3a72bae5b307b122ull }}, {{ 0x88775b575ec0b548ull, 0x219844c95128c4c2ull, 0xd6e02abe6c06c5c2ull, 0x29b3025119b05466ull, 0x589614abd79be520ull, 0x487b4cf8fe4ceb55ull }}, {{ 0x54a99169b38714cdull, 0x4ff2afdd2b97af99ull, 0x64c1ab703843b995ull, 0xa0fe172b00e34c04ull, 0x75dcceb66c16f341ull, 0xd4d101b9ef013155ull }}, {{ 0x4e9fae210346d001ull, 0x1f7adea3b3ecdbfdull, 0xef90b26232a53fd5ull, 0x49ece7ae08e0f82bull, 0x9aa0132038e58090ull, 0x502a1143560bed56ull }}, {{ 0x123ccd4a20c4200cull, 0x3accb265074097e5ull, 0x5ba6f7d5fa747e53ull, 0xe3410ccc58c9b1b7ull, 0x0a40bf4238f705a2ull, 0x21a4aca15c774562ull }}, {{ 0xb66004e547a9407aull, 0x4bfef7f24885eef2ull, 0x9485ae5bc88cef40ull, 0xe08a7ffb77e0f129ull, 0x6687789639a6385cull, 0x506ebe4d9ca8b5d4ull }}, {{ 0x1fc030f4cc9c84c0ull, 0xf7f5af76d53b557bull, 0xcd38cf95d5815882ull, 0xc568ffd2aec96b9full, 0x014ab5de407e33a0ull, 0x24536f081e971a4cull }}, {{ 0x3d81e98ffe1d2f82ull, 0xaf98daa4545156cfull, 0x04381bda570d751dull, 0xb619fe3ad3de343eull, 0x0ceb1aae84ee0447ull, 0x6b42565131e706f8ull }}, {{ 0x67131f9fed23db17ull, 0xdbf88a6b4b2d6418ull, 0x2a31168766869328ull, 0x1d03ee4c46ae0a6cull, 0x812f0ad1314c2acdull, 0x30975f2bf30645b0ull }}, {{ 0x06bf3c3f43668ee1ull, 0x97b56830efc5e8f4ull, 0xa5eae14a0141bf98ull, 0x22274efac2cc6839ull, 0x0bd66c2becf9ac03ull, 0xe5e9b7b77e3eb8e5ull }}, {{ 0x43785a78a20194ccull, 0xed1611e95dbb1988ull, 0x7b2ccce40c917bf5ull, 0x558915cb9bfc1240ull, 0x766039b741c0b81full, 0xfb212d2aee7338f2ull }}, {{ 0xa2b388b6540fcffbull, 0x42dcb31da94eff52ull, 0xcfc000e87daed79bull, 0x575ad9f417d8b684ull, 0x9fc2412891873139ull, 0xcf4bc3ad50803978ull }}, {{ 0x5b03571f489e1fd1ull, 0x9c9eff289d15f93aull, 0x1d800914e8d46c10ull, 0x698c8388ee772130ull, 0x3d968b95af47ec3dull, 0x18f5a4c525023eb6ull }}, {{ 0x8e216738d62d3e29ull, 0x1e35f79622dbbc47ull, 0x27005ad1184c38a6ull, 0x1f7d235950a74be1ull, 0x67e173d8d8cf3a66ull, 0xf9986fb37216731eull }}, {{ 0x8d4e08385dc46d99ull, 0x2e1babdd5c955acbull, 0x86038c2af2fa367dull, 0x3ae3617d2688f6cbull, 0x0ece8678781847fdull, 0xbff45d0274e07f30ull }}, {{ 0x850c5233a9ac47ffull, 0xcd14b6a59dd58bf3ull, 0x3c2379ad7dc620e3ull, 0x4ce1cee38159a3f3ull, 0x941140b4b0f2cfe4ull, 0x7f8ba21890c4f7e0ull }}, {{ 0x327b3604a0bacff5ull, 0x02cf22782a577783ull, 0x5962c0c6e9bd48e6ull, 0x00d214e30d806780ull, 0xc8ac870ee97c1eebull, 0xfb7454f5a7b1aec5ull }}, {{ 0xf8d01c2e474c1f8eull, 0x1c1758b1a76aab1full, 0x7ddb87c52164d8fcull, 0x0834d0de87040b03ull, 0xd6bd46951ed9352eull, 0xd28b51988cf0d3b9ull }}, {{ 0xb82119cec8f93b8eull, 0x18e976f08a2aaf3full, 0xea934db34df079d9ull, 0x521028b146286e22ull, 0x6364c1d3347c13ccull, 0x39712ff581684542ull }}, {{ 0x314b0213d9bc5387ull, 0xf91ea56565aad87dull, 0x29c109010b64c27aull, 0x34a196ecbd944d5dull, 0xe1ef92400cd8c5fbull, 0x3e6bdf970e12b497ull }}, {{ 0xecee14c6815b434aull, 0xbb3275f5f8ac74e3ull, 0xa18a5a0a71ef98cdull, 0x0e4fe53f67cb05a3ull, 0xd35bb6808077bbd0ull, 0x7036bbe68cbb0deeull }}, {{ 0x414ccfc10d90a0e4ull, 0x4ff89b9bb6bc90e7ull, 0x4f678468735bf809ull, 0x8f1ef47a0dee3864ull, 0x4195210504ad5620ull, 0x622357017f4e8b54ull }}, {{ 0x8d001d8a87a648ecull, 0x1fb61415235da908ull, 0x1a0b2c148197b05dull, 0x97358cc48b4e33ebull, 0x8fd34a322ec55d45ull, 0xd561660ef911714aull }}, {{ 0x820127694c7ed935ull, 0x3d1cc8d361a89a55ull, 0x046fb8cd0fece3a3ull, 0xe8177fad710e072full, 0x9e40e5f5d3b5a4b7ull, 0x55cdfc95baae6ce9ull }}, {{ 0x140b8a1cfcf47c11ull, 0x631fd841d0960757ull, 0x2c5d38029f40e460ull, 0x10eafcc66a8c47d6ull, 0x2e88fb9a45186f2full, 0x5a0bddd94ad04120ull }}, {{ 0xc8736521e18cd8a8ull, 0xdf3e729225dc4966ull, 0xbba4301a3888ebc3ull, 0xa92ddfc0297ace5dull, 0xd159d406b2f457d6ull, 0x8476aa7cec228b41ull }}, {{ 0xd481f352cf807695ull, 0xb87079b57a9ade03ull, 0x5469e106355935a6ull, 0x9bcabd819ecc0fa9ull, 0x2d824842fd8b6e62ull, 0x2ca2a8e139597092ull }}, {{ 0x4d13813c1b04a1ceull, 0x3464c116ca0cac26ull, 0x4c22ca3e157c1883ull, 0x15eb671033f89c9dull, 0xc716d29de7724fdaull, 0xbe5a98cc3d7e65b5ull }}, {{ 0x02c30c590e2e520dull, 0x0bef8ae3e47eb97full, 0xf95be66cd6d8f520ull, 0xdb3206a207b61e24ull, 0xc6e43a2b0a771e84ull, 0x6f89f7fa66eff919ull }}, {{ 0x1b9e7b7a8dcf3485ull, 0x775b6ce6ecf33ef6ull, 0xbd97004064799340ull, 0x8ff442544d1d2d71ull, 0xc4ea45ae68a73130ull, 0x5b63afc8055fbb01ull }}, {{ 0x1430d2c98a180d37ull, 0xa99241054180759dull, 0x67e60283ecbfc084ull, 0x9f8a974b0323c671ull, 0xb126b8d01687ebe5ull, 0x91e4ddd035bd4e11ull }}, {{ 0xc9e83bdf64f08422ull, 0x9fb68a348f049822ull, 0x0efc19273f7d852eull, 0x3b69e8ee1f65c06eull, 0xeb833820e14f36f8ull, 0xb2f0aa2219650cb0ull }}, {{ 0xe31256b9f1652954ull, 0x3d21660d962df15bull, 0x95d8fb887ae733d2ull, 0x5223194d39f9844cull, 0x33203148cd1825b2ull, 0xfd66a554fdf27ee9ull }}, {{ 0xdeb763436df39d49ull, 0x634dfc87ddcb6d96ull, 0xda79d354cd080636ull, 0x355efd0443bf2afdull, 0xff41ecd802f178f7ull, 0xe6027551eb78f51bull }}, {{ 0xb329e0a24b8424d5ull, 0xe10bdd4ea9f247e4ull, 0x88c2415002503e1full, 0x15b5e22aa577adeaull, 0xf89340701d6eb9a8ull, 0xfc18953332b99317ull }}, {{ 0xffa2c656f3297053ull, 0xca76a512a376ceeeull, 0x57968d2017226d3eull, 0xd91ad5aa76accb29ull, 0xb5c0846126534090ull, 0xd8f5d3fffb3fbeefull }}, {{ 0xfc5bbf657f9e633dull, 0xe8a272ba62a41555ull, 0x6be18340e7584473ull, 0x7b0c58a8a2bfef9dull, 0x19852bcb7f4085a8ull, 0x799a47ffd07d755dull }}, {{ 0xdb9579f6fc2fe063ull, 0x16587b47da68d55bull, 0x36cf20890972ac87ull, 0xce7b76965b7f5c26ull, 0xff33b5f2f8853894ull, 0xc006cffe24e695a2ull }}, {{ 0x93d6c3a5d9dec3daull, 0xdf74d0ce88185596ull, 0x2417455a5e7abd46ull, 0x10d2a1df92f9997eull, 0xf8051b7db53435d0ull, 0x80441fed7101d85dull }}, {{ 0xc663a47a82b3a680ull, 0xba90281150f357e1ull, 0x68e8b587b0cb64c4ull, 0xa83a52bbbdbffeedull, 0xb03312e9140a1a20ull, 0x02a93f466a1273abull }}, {{ 0xbfe46cc91b0480ffull, 0x49a190ad29816ed1ull, 0x1917174ce7f1efafull, 0x92473b55697ff546ull, 0xe1febd1ac8650546ull, 0x1a9c78c024b884b4ull }}, {{ 0x7eec3fdb0e2d09f4ull, 0xe04fa6c39f0e5431ull, 0xfae6e9010f735cd8ull, 0xb6c851561eff94bcull, 0xd3f3630bd3f234c1ull, 0x0a1cb7816f352f10ull }}, {{ 0xf53a7e8e8dc2638aull, 0xc31c83a4368f49eeull, 0xcd051a0a9a81a078ull, 0x23d32d5d35fbcf61ull, 0x4781de7647760f91ull, 0x651f2b0e5813d6a8ull }}, {{ 0x9448f1918997e360ull, 0x9f1d246a2198e355ull, 0x0233046a091044b7ull, 0x663fc5a41bd619d2ull, 0xcb12b09eca9c9babull, 0xf337ae8f70c66292ull }}, {{ 0xcad96faf5feee1bdull, 0x37236c254ff8e157ull, 0x15fe2c245aa2af2cull, 0xfe7db869165d0234ull, 0xeebae633ea1e14b1ull, 0x802cd19a67bfd9bbull }}, {{ 0xec7e5cd9bf54d163ull, 0x276239751fb8cd6dull, 0xdbedb96b8a5ad7baull, 0xf0e9341adfa21608ull, 0x534cfe07252ccef3ull, 0x01c030080d7e8157ull }}, {{ 0x3cefa08179502ddbull, 0x89d63e933d38064bull, 0x97493e33678c6d45ull, 0x691c090cbc54dc58ull, 0x4101ec4773c01587ull, 0x1181e05086f10d69ull }}, {{ 0x615c450ebd21ca8aull, 0x625e71c064303ef0ull, 0xe8dc6e020b7c44b7ull, 0x1b185a7f5b509b75ull, 0x8a133aca8580d74aull, 0xaf12c325456a861cull }}, {{ 0xcd9ab2936351e960ull, 0xd7b07183e9e27563ull, 0x189c4c1472daaf29ull, 0x0ef388f99126129bull, 0x64c04be9370868e5ull, 0xd6bb9f74b6293d1dull }}, {{ 0x080af9c1e1331dc1ull, 0x6ce46f2722d895e6ull, 0xf61af8cc7c8ad7a2ull, 0x958359bfab7cba0eull, 0xef82f71c265418f2ull, 0x63543a8f1d9c6325ull }}, {{ 0x506dc192cbff2985ull, 0x40ec57875c75dafcull, 0x9d0db7fcdd6c6c58ull, 0xd721817cb2df4495ull, 0x5b1da7197f48f979ull, 0xe14a4997281bdf7bull }}, {{ 0x24498fbbf7f79f37ull, 0x893b6b499c9a8ddbull, 0x22892fe0a63c3b72ull, 0x674f0edefcb8add8ull, 0x8f2886fef8d9bec2ull, 0xcce6dfe79116bad1ull }}, {{ 0x6adf9d57afac3822ull, 0x5c5230e01e098a8full, 0x595bdec67e5a5279ull, 0x091694b5df36ca71ull, 0x979545f5b8817398ull, 0x0104bf0baae34c2full }}, {{ 0x2cbc256cdcba3153ull, 0x9b35e8c12c5f699aull, 0x7d96b3c0ef8738bdull, 0x5ae1cf1ab823e86dull, 0xebd4bb99350e83f0ull, 0x0a2f7674ace0f9dbull }}, {{ 0xbf5976409f45ed3cull, 0x101b178bbbba2005ull, 0xe7e305895b483768ull, 0x8cd2170b31671446ull, 0x364f53fc12912763ull, 0x65daa08ec0c9c297ull }}, {{ 0x797e9e8638bb4458ull, 0xa10eeb7555454039ull, 0x0ede375d90d22a10ull, 0x8034e66fee06cac5ull, 0x1f1947d8b9ab89e3ull, 0xfa8a459387e199e8ull }}, {{ 0xbef2313e3750ab71ull, 0x4a95329554b4823eull, 0x94ae29a7a835a4a6ull, 0x0211005f4c43ebb2ull, 0x36fcce7740b362e3ull, 0xc966b7c34ed00311ull }}, {{ 0x7575ec6e2926b265ull, 0xe9d3f9d54f0d1673ull, 0xcecda08c92186e7eull, 0x14aa03b8faa734f9ull, 0x25e010a88701dcdeull, 0xde032da114201eacull }}, {{ 0x969b3c4d9b82f7f6ull, 0x2247c2551682e082ull, 0x1408457db4f450f5ull, 0xcea42539ca8811c2ull, 0x7ac0a6954612a0acull, 0xac1fc84ac94132b9ull }}, {{ 0xe2105b08131daf99ull, 0x56cd9752e11cc519ull, 0xc852b6e9118b2993ull, 0x12697441e950b194ull, 0xcb8681d4bcba46c0ull, 0xb93dd2ebdc8bfb3eull }}, {{ 0xd4a38e50bf28dbfbull, 0x6407e93ccb1fb302ull, 0xd33b251aaf6f9fc1ull, 0xb81e8a931d26efcfull, 0xf341124f5f46c380ull, 0x3c6a3d369d77d073ull }}, {{ 0x4e638f27779897cbull, 0xe84f1c5fef3cfe1cull, 0x404f730ada5c3d8dull, 0x313169bf23855e1eull, 0x808ab719b8c3a307ull, 0x5c26642226ae2487ull }}, {{ 0x0fe3978aabf5edeaull, 0x13171bbf5861ed1bull, 0x831a7e6c879a678bull, 0xebee21776335ad2eull, 0x056b270137a45e47ull, 0x997fe95582cd6d4bull }}, {{ 0x9ee3eb6ab79b4b23ull, 0xbee7157973d3430eull, 0x1f08f03d4c080b6eull, 0x374d4ea9e018c3d1ull, 0x362f860c2c6baecfull, 0xfeff1d571c0644eeull }}, {{ 0x34e7322b2c10ef59ull, 0x7506d6be86409e92ull, 0x36596264f8507253ull, 0x290512a2c0f7a62bull, 0x1ddb3c79bc34d418ull, 0xf5f72567183eb14eull }}, {{ 0x1107f5afb8a9597full, 0x924463713e8631b6ull, 0x1f7dd7f1b3247742ull, 0x9a32ba5b89ac7db0ull, 0x2a905cc15a1048f1ull, 0x9ba77606f272ed0dull }}, {{ 0xaa4f98dd369d7ef4ull, 0xb6abe26c713df11cull, 0x3aea6f70ff6ca899ull, 0x05fb479360bce8e1ull, 0xa9a39f8d84a2d970ull, 0x148a9c45787d4283ull }}, {{ 0xa71bf8a42226f58aull, 0x22b6d83c6c6b6b1eull, 0x4d285a69fa3e9601ull, 0x3bd0cbc1c76118ccull, 0xa0643b872e5c7e60ull, 0xcd6a1ab6b4e49924ull }}, {{ 0x8717b66955859761ull, 0x5b24725c3c322f32ull, 0x03938823c671dc0bull, 0x5627f591c9caf7fbull, 0x43ea5347cf9cefc2ull, 0x06250b2310edfb6eull }}, {{ 0x46ed201d5737e9c8ull, 0x8f6c779a59f5d7f9ull, 0x23c35165c0729871ull, 0x5d8f97b1e1edafceull, 0xa72740ce1c215d97ull, 0x3d726f5ea94bd24eull }}, {{ 0xc5434125682f21d2ull, 0x9a3cac07839a6fbcull, 0x65a12df98479f46full, 0xa79becf2d348de0dull, 0x8788880d194da7e9ull, 0x667859b29cf63712ull }}, {{ 0xb4a08b7611d75238ull, 0x065eb84b24085d5full, 0xf84bcbbf2cc38c5cull, 0x8c17417c40d8ac85ull, 0x4b555082fd088f20ull, 0x00b380fa219e26b9ull }}, {{ 0x0e45729cb269362eull, 0x3fb332ef6853a5bdull, 0xb2f5f577bfa37b98ull, 0x78e88eda8876bd3bull, 0xf155251de2559745ull, 0x070309c5502d833cull }}, {{ 0x8eb67a1ef81c1dceull, 0x7cfffd5a13447962ull, 0xfd9b96ad7c62d3f2ull, 0xb915948954a36454ull, 0x6d53732ad757e8b6ull, 0x461e61b521c72061ull }}, {{ 0x9320c535b1192a0aull, 0xe1ffe584c0acbdd9ull, 0xe813e2c6dbdc4778ull, 0x3ad7cd5d4e61eb51ull, 0x45427fac696f1723ull, 0xbd2fd11351c743ceull }}, {{ 0xbf47b418eafba468ull, 0xd3fef72f86bf6a7full, 0x10c6dbc4969acab8ull, 0x4c6e05a50fd33133ull, 0xb498fcbc1e56e760ull, 0x63de2ac131c8a60eull }}, {{ 0x78cd08f92dd46c11ull, 0x47f5a7db437a28fdull, 0xa7c495ade20beb38ull, 0xfc4c38729e3febfeull, 0x0df9df592f6509c2ull, 0xe6adab8bf1d67c93ull }}, {{ 0xb80259bbca4c38a8ull, 0xcf988e90a2c599e6ull, 0x8dadd8cad4773032ull, 0xdafa347a2e7f37f2ull, 0x8bc2b97bd9f2619dull, 0x02c8b3777260ddbeull }}, {{ 0x30178155e6fa368eull, 0x1bf591a65bb80303ull, 0x88ca77ec4ca7e1fcull, 0x8dc60cc5d0f82f79ull, 0x759b3ed68377d02aull, 0x1bd702aa77c8a971ull }}, {{ 0xe0eb0d5b05c6218cull, 0x1797b07f95301e1full, 0x57e8af3afe8ed3d9ull, 0x89bc7fba29b1dabfull, 0x9810746122ae21a9ull, 0x16661aa8add69e6eull }}, {{ 0xc92e858e39bd4f74ull, 0xebece4fbd3e12d3eull, 0x6f16d84df194467aull, 0x615cfd45a0f28b79ull, 0xf0a48bcb5acd509full, 0xdffd0a96ca623051ull }}, {{ 0xdbd1378e41651a89ull, 0x3740f1d646cbc473ull, 0x56e4730b6fcac0cdull, 0xcda1e4b8497972beull, 0x666d75f18c052639ull, 0xbfe269e3e7d5e333ull }}, {{ 0x962c2b8e8df30956ull, 0x2889725ec3f5ac86ull, 0x64ec7e725deb8804ull, 0x0852ef32debe7b6full, 0x00469b6f78337e42ull, 0x7ed822e70e5ae002ull }}, {{ 0xddb9b3918b7e5d5eull, 0x955e77b3a798bd41ull, 0xf13cf077ab335029ull, 0x533d57fcb370d259ull, 0x02c2125ab202ee94ull, 0xf4715d068f8cc014ull }}, {{ 0xa94103af72efa5aeull, 0xd5b0ad048bf76492ull, 0x6c6164acb001219full, 0x40656fdf02683783ull, 0x1b94b78af41d51cbull, 0x8c6da2419b7f80c8ull }}, {{ 0x9c8a24da7d5c78cbull, 0x58e6c22d77a9edbaull, 0x3bcdeebee00b503eull, 0x83f65eb618122b22ull, 0x13cf2b6d892531f0ull, 0x7c48569012fb07d1ull }}, {{ 0x1d657088e59cb7f3ull, 0x790395c6aca3494aull, 0x560b5374c071226full, 0x279fb31cf0b5af56ull, 0xc617b2475b73f365ull, 0xdad361a0bdce4e2aull }}, {{ 0x25f66558f81f2f7dull, 0xba23d9c2be60dce5ull, 0x5c71428f846b585aull, 0x8c3cff216718d95full, 0xbcecf6c9928781f3ull, 0x8c41d0476a0f0dabull }}, {{ 0x7b9ff579b137daddull, 0x4566819b6fc8a0f3ull, 0x9c6c999b2c31738bull, 0x7a61f74e06f87db9ull, 0x6141a3dfb94b1383ull, 0x7a9222ca249688b5ull }}, {{ 0xd43f96c0ec2e8ca7ull, 0xb60110125dd64982ull, 0x1c3e000fb9ee8370ull, 0xc7d3a90c45b4e940ull, 0xcc9066bd3ceec322ull, 0xc9b55be56de15715ull }}, {{ 0x4a7be38939d17e83ull, 0x1c0aa0b7aa5edf1cull, 0x1a6c009d43512267ull, 0xce449a7ab9111c81ull, 0xfda4036461539f5bull, 0xe11596f64acd66d9ull }}, {{ 0xe8d6e35c422ef11eull, 0x186a472ca7b4b71aull, 0x08380624a12b5807ull, 0x0eae08cb3aab1d0bull, 0xe86821ebcd443996ull, 0xcad7e59eec060483ull }}, {{ 0x1864e19a95d56b2aull, 0xf426c7be8d0f270dull, 0x52303d6e4bb17046ull, 0x92cc57f04aaf226eull, 0x1411533604aa3fdcull, 0xec6ef835383c2d27ull }}, {{ 0xf3f0d009da562fa7ull, 0x8983cd7182978682ull, 0x35e2664ef4ee62c5ull, 0xbbfb6f62ead7584full, 0xc8ad401c2ea67e9dull, 0x3c55b2143259c386ull }}, {{ 0x87682062875ddc82ull, 0x5f26066f19eb411dull, 0x1ad7ff15914fdbb7ull, 0x57d259dd2c697318ull, 0xd6c48119d280f229ull, 0x5b58f4c9f781a343ull }}, {{ 0x4a1143d949aa9d13ull, 0xb77c405703308b27ull, 0x0c6ff6d7ad1e9529ull, 0x6e3782a3bc1e7ef1ull, 0x63ad0b023909759dull, 0x91798fe3ab1060a6ull }}, {{ 0xe4aca67ce0aa22bdull, 0x2ada83661fe56f88ull, 0x7c5fa46cc331d3a1ull, 0x4e2b1a655930f56aull, 0xe4c26e163a5e9826ull, 0xaebf9ee4aea3c67full }}, {{ 0xeebe80e0c6a55b65ull, 0xac8921fd3ef65b58ull, 0xdbbc6c3f9ff2444bull, 0x0daf07f57be99628ull, 0xef984cde47b1f17full, 0xd37c34eed265c0feull }}, {{ 0x537108c7c27591eeull, 0xbd5b53e4759f9179ull, 0x955c3a7c3f76aaf4ull, 0x88d64f96d71fdd98ull, 0x5bf300aeccf36ef6ull, 0x42da115437f989f5ull }}, {{ 0x426a57cd9897b349ull, 0x659146ec983baebdull, 0xd59a48da7aa2ad8full, 0x585f1be4673ea7f5ull, 0x977e06d4018255a1ull, 0x9c84ad4a2fbf6395ull }}, {{ 0x98276e07f5ed00dfull, 0xf7acc53df254d364ull, 0x5806d888ca5ac799ull, 0x73b716ec08728f9aull, 0xeaec44480f17584dull, 0x1d2ec4e5dd79e3d7ull }}, {{ 0xf18a4c4f9b4208b5ull, 0xacbfb46b775041edull, 0x70447557e78bcc03ull, 0x8526e53854799c07ull, 0x2d3aaad096e97306ull, 0x23d3b0faa6c2e66full }}, {{ 0x6f66fb1c10945713ull, 0xbf7d0c32a922934bull, 0x62ac956f0b75f824ull, 0x3384f4334cc0184aull, 0xc44aac25e51e7e41ull, 0x6644e9ca839d0057ull }}, {{ 0x5a05cf18a5cb66bfull, 0x7ae279fa9b59c0f2ull, 0xdabdd656729bb16full, 0x03318a00ff80f2e7ull, 0xaaeab97af330ee8cull, 0xfeb121e92422036dull }}, {{ 0x843a16f679f20377ull, 0xccd8c3ca11818977ull, 0x8b6a5f607a14ee5aull, 0x1fef6409fb097d0eull, 0xad2b3ecd7fe95178ull, 0xf2eb531b69542248ull }}, {{ 0x2a44e5a0c37422a7ull, 0x0077a5e4af0f5eabull, 0x7227b9c4c4d14f8cull, 0x3f59e863ce5ee291ull, 0xc3b07406ff1d2eb1ull, 0x7d313f121d4956d6ull }}, {{ 0xa6b0f847a2895a87ull, 0x04ac7aeed699b2afull, 0x758d41afb02d1b78ull, 0x798313e60fb4d9aeull, 0xa4e48845f723d2ecull, 0xe3ec76b524dd6463ull }}, {{ 0x82e9b2cc595d8948ull, 0x2ebccd546200fadcull, 0x978490dce1c312b0ull, 0xbf1ec6fc9d1080d0ull, 0x70ed52bba7663d3cull, 0xe73ca31370a5ebe4ull }}, {{ 0x1d20fbfb7da75cccull, 0xd360054bd409cc9dull, 0xeb2da8a0d19ebae1ull, 0x7733c5de22a50825ull, 0x69453b5489fe645full, 0x085e5ec2667b36ecull }}, {{ 0x2349d7d2e8899ffdull, 0x41c034f64861fe23ull, 0x2fc8964830334cd2ull, 0xa805baad5a72517bull, 0x1cb4514d63efebbaull, 0x53afb39800d0253cull }}, {{ 0x60e26e3d15603fddull, 0x9182119ed3d3ed5full, 0xddd5ded1e2010036ull, 0x90394ac588772ecfull, 0x1f0b2d05e75f354aull, 0x44dd03f008217459ull }}, {{ 0xc8d84e62d5c27ea7ull, 0xaf14b034464745b9ull, 0xaa5ab432d40a0221ull, 0xa23cebb754a7d41eull, 0x366fc23b09b814e9ull, 0xb0a22760514e8b7bull }}, {{ 0xd8730fdc5998f281ull, 0xd6cee20abec8b941ull, 0xa78b09fc48641550ull, 0x566135294e8e4932ull, 0x205d964e6130d120ull, 0xe65589c32d1172d0ull }}, {{ 0x747e9e9b7ff9790cull, 0x6414d46b73d73c92ull, 0x8b6e63dad3e8d528ull, 0x5fcc139d118edbfaull, 0x43a7df0fcbe82b43ull, 0xff57619fc2ae7c21ull }}, {{ 0x8cf23212ffbeba76ull, 0xe8d04c3286685db8ull, 0x724fe68c47185393ull, 0xbdf8c422af9497c9ull, 0xa48eb69df711b0a1ull, 0xf969d03d9ad0d94cull }}, {{ 0x8175f4bdfd73489cull, 0x1822f9f94013a935ull, 0x771f017ac6f343c7ull, 0x6bb7a95adbcdeddeull, 0x6d93222ba6b0e651ull, 0xbe2222680c287cfeull }}, {{ 0x0e9b8f6be680d61bull, 0xf15dc3bc80c49c17ull, 0xa7360ecbc580a5c6ull, 0x352c9d8c960b4ab0ull, 0x47bf55b482e8ff2eull, 0x6d5558107994e1f0ull }}, {{ 0x92139a3701085d12ull, 0x6da9a55d07ae18e6ull, 0x881c93f5b70679c5ull, 0x13be277ddc70eae6ull, 0xcd79590d1d19f7ceull, 0x455570a4bfd0d362ull }}, {{ 0xb4c406260a53a2b6ull, 0x48a075a24cccf901ull, 0x511dc7992640c1b6ull, 0xc56d8aea9c692d01ull, 0x06bd7a832303ae0cull, 0xb556666f7e2841dcull }}, {{ 0x0fa83d7c67445b21ull, 0xd64498570001ba11ull, 0x2b29cbfb7e87911eull, 0xb6476d2a1c1bc20dull, 0x4366c91f5e24cc7full, 0x1560005aed929298ull }}, {{ 0x9c9266dc08ab8f49ull, 0x5eadf366001144aaull, 0xafa1f7d2f14bab34ull, 0x1eca43a519159483ull, 0xa203db39ad6ffcfdull, 0xd5c0038d47b9b9f2ull }}, {{ 0x1db8049856b398d7ull, 0xb2cb81fc00acaeaaull, 0xdc53ae3d6cf4b00bull, 0x33e6a472fad7cd24ull, 0x54269040c65fe1e3ull, 0x59802384cd41437aull }}, {{ 0x29302df36303f869ull, 0xfbf313d806bed2a5ull, 0x9b44ce66418ee074ull, 0x07026c7dcc6e0370ull, 0x4981a287bfbed2e0ull, 0x7f016330048ca2c7ull }}, {{ 0x9be1cb81de27b41bull, 0xd77ec67043743a73ull, 0x10b00ffe8f94c491ull, 0x46183ce9fc4c2266ull, 0xdf10594d7d743cc0ull, 0xf60ddfe02d7e5bc8ull }}, {{ 0x16d1f312ad8d090cull, 0x6af3c062a28a4884ull, 0xa6e09ff19bcfadb2ull, 0xbcf26123daf957fcull, 0xb6a37d06e68a5f82ull, 0x9c8abec1c6ef95d8ull }}, {{ 0xe4337ebac7825a79ull, 0x2d8583da5966d528ull, 0x84c63f70161cc8f8ull, 0x6177cb668dbd6fdeull, 0x2262e2450167bb1bull, 0x1d6b7391c55bda77ull }}, {{ 0xea02f34bcb1788beull, 0xc73726877e045398ull, 0x2fbe7a60dd1fd9b1ull, 0xceadf20189665eb1ull, 0x57dcd6b20e0d4f11ull, 0x263283b1b59688a7ull }}, {{ 0x241d80f5eeeb5770ull, 0xc827814aec2b43f9ull, 0xdd70c7c8a33e80f1ull, 0x12cb740f5dffb2ebull, 0x6ea062f48c8516b2ull, 0x7df924f117e15689ull }}, {{ 0x6927099b55316a5dull, 0xd18b0ced39b0a7bbull, 0xa667cdd660710971ull, 0xbbf28899abfcfd36ull, 0x5243dd8d7d32e2f4ull, 0xebbb716aeecd615eull }}, {{ 0x1b86601153ee27a3ull, 0x2f6e814440e68d52ull, 0x800e0a5fc46a5e72ull, 0x57795600b7e1e422ull, 0x36a6a786e3fcdd8full, 0x35526e2d5405cdafull }}, {{ 0x133fc0ad474d8c5aull, 0xda510caa89018535ull, 0x008c67bdac27b075ull, 0x6abd5c072ed2e959ull, 0x22828b44e7e0a799ull, 0x15384dc5483a08d8ull }}, {{ 0xc07d86c4c9077b83ull, 0x872a7ea95a0f3412ull, 0x057c0d68b98ce49aull, 0x2b659847d43d1d7aull, 0x591970b10ec68bfeull, 0xd43309b4d2445871ull }}, {{ 0x84e743afda4ad321ull, 0x47a8f29d849808bbull, 0x36d886173f80ee09ull, 0xb1f7f2ce4a6326c4ull, 0x7afe66ea93c177edull, 0x49fe611036ab746dull }}, {{ 0x3108a4de86ec3f4bull, 0xcc997a272df05753ull, 0x24753ce87b094c5cull, 0xf3af7c0ee7df83aaull, 0xcdf00529c58eaf48ull, 0xe3efcaa222b28c46ull }}, {{ 0xea5670b1453a78f1ull, 0xfdfec587cb63693full, 0x6c946114ce5cfb9full, 0x84dad8950ebb24a5ull, 0x0b6033a1b792d8d9ull, 0xe75dea555af97ac4ull }}, {{ 0x276066ecb448b967ull, 0xebf3b74df1e21c7full, 0x3dcbcad00fa1d43full, 0x308c75d2934f6e76ull, 0x71c204512bbc787full, 0x09ab27558dbecba8ull }}, {{ 0x89c4053f0ad73e09ull, 0x3785290b72d51cf7ull, 0x69f5ec209c524a7full, 0xe57c9a39c11a509eull, 0x71942b2bb55cb4f7ull, 0x60af89578973f494ull }}, {{ 0x61a834766c686c57ull, 0x2b339a727c5321abull, 0x239b39461b36e8f8ull, 0xf6de06418b072630ull, 0x6fc9afb5159f11aeull, 0xc6db5d6b5e878dccull }}, {{ 0xd0920ca03c143b63ull, 0xb0040878db3f50b1ull, 0x64103cbd102519b1ull, 0xa4ac3e8f6e477de1ull, 0x5de0dd12d836b0d5ull, 0xc491a631b14b89fcull }}, {{ 0x25b47e4258ca51dbull, 0xe02854b8907926f2ull, 0xe8a25f62a17300f0ull, 0x6eba719a4ecaeacdull, 0xaac8a2bc7222e858ull, 0xadb07df0ecf363dbull }}, {{ 0x790cee9777e7328eull, 0xc1934f35a4bb8575ull, 0x1657b9da4e7e0968ull, 0x5348700713ed2c0bull, 0xabd65b5c755d1374ull, 0xc8e4eb694181e694ull }}, {{ 0xba8151eaaf07f98eull, 0x8fc118186f533696ull, 0xdf6d428710ec5e17ull, 0x40d46046c743b86eull, 0xb65f919c95a2c28bull, 0xd8f1321c8f1301ceull }}, {{ 0x490d332ad64fbf8cull, 0x9d8af0f4594021e3ull, 0xba449946a93bacebull, 0x884bc2c3c8a53454ull, 0x1fbbb01dd85b9970ull, 0x796bf51d96be1213ull }}, {{ 0xda83ffac5f1d7b75ull, 0x276d698b7c8152e0ull, 0x46adfcc29c54c134ull, 0x52f59ba5d6740b4full, 0x3d54e12a7393fe65ull, 0xbe379327e36cb4bfull }}, {{ 0x8927fcbbb726d290ull, 0x8a461f72dd0d3cc8ull, 0xc2cbdf9a1b4f8c09ull, 0x3d98147a60887118ull, 0x6550cba883c7eff5ull, 0x6e2bbf8ee23f0f78ull }}, {{ 0x5b8fdf55278439a0ull, 0x66bd3a7ca2845fd5ull, 0x9bf6bc05111b785full, 0x67f0ccc7c5546af7ull, 0xf527f49525cf5f94ull, 0x4db57b94d6769ab3ull }}, {{ 0x939eb9538b2a403cull, 0x036448de592bbe55ull, 0x17a35832ab12b3baull, 0x0f67ffcdb54c2dacull, 0x938f8dd37a19bbccull, 0x0916d3d060a20b07ull }}, {{ 0xc4333d436fa6825bull, 0x21ead8af7bb56f57ull, 0xec6171faaebb0544ull, 0x9a0ffe0914f9c8b8ull, 0xc39b8a42c50155f8ull, 0x5ae44623c6546e4bull }}, {{ 0xaa0064a25c81178dull, 0x532c76dad516596dull, 0x3bce73cad34e34a9ull, 0x049fec5ad1c1d739ull, 0xa413669bb20d5bb6ull, 0x8ceabd65bf4c4ef5ull }}, {{ 0xa403ee579d0aeb80ull, 0x3fbca48c52df7e48ull, 0x561085ec410e0e9dull, 0x2e3f3b8c3192683cull, 0x68c20214f485951cull, 0x812b65f978fb1598ull }}, {{ 0x68274f6c226d32fcull, 0x7d5e6d7b3cbaeed6ull, 0x5ca53b3a8a8c9224ull, 0xce785379efb8125bull, 0x179414d18d37d319ull, 0x0bb1fbbeb9ced7f4ull }}, {{ 0x11891a395843fdd8ull, 0xe5b046d05f4d5460ull, 0x9e745049697db56cull, 0x10b342c35d30b791ull, 0xebc8d02f842e3f02ull, 0x74f3d57342146f88ull }}, {{ 0xaf5b063d72a7ea71ull, 0xf8e2c423b9054bc0ull, 0x308b22de1ee91640ull, 0xa7009ba1a3e72bb0ull, 0x35d821db29ce7614ull, 0x9186568094cc5b59ull }}, {{ 0xd98e3e667a8f2865ull, 0xb8dba9653a34f586ull, 0xe56f5cad351ade89ull, 0x860614506707b4e1ull, 0x1a71528fa2109cceull, 0xaf3f6105cffb917cull }}, {{ 0x7f8e7000c99793f4ull, 0x38949df446119744ull, 0xf6599ec4130cb161ull, 0x3c3ccb24064d10d2ull, 0x086d399c54a62011ull, 0xd879ca3a1fd3aed9ull }}, {{ 0xfb906007dfebc78bull, 0x35ce2b8abcafe8acull, 0x9f8033a8be7eedccull, 0x5a5fef683f02a83dull, 0x5444401b4e7d40acull, 0x74c1e6453e44d47aull }}, {{ 0xd3a3c04ebf35cb6dull, 0x1a0db36b5edf16c1ull, 0x3b02049770f549faull, 0x87bf5a12761a9268ull, 0x4aaa811110e486bbull, 0x8f92feb46eb04cc7ull }}, {{ 0x446583137819f240ull, 0x04890231b4b6e392ull, 0x4e142dea6994e3c5ull, 0x4d7984b89d09b812ull, 0xeaa90aaaa8ed4353ull, 0x9bbdf30c52e2ffc8ull }}, {{ 0xabf71ec2b103767eull, 0x2d5a15f10f24e3b6ull, 0x0cc9cb281fd0e5b2ull, 0x06bf2f36226130b7ull, 0x2a9a6aaa9944a141ull, 0x156b7e7b3cddfdd9ull }}, {{ 0xb7a7339aea22a0e9ull, 0xc584db6a9770e522ull, 0x7fe1ef913e28f8f5ull, 0x4377d81d57cbe726ull, 0xaa082aa9fcae4c8aull, 0xd632f0d060abea7bull }}, {{ 0x2c88040d255a491dull, 0xb7309229ea68f35bull, 0xfed35bac6d99b999ull, 0xa2ae71256df70780ull, 0xa451aaa3decefd66ull, 0x5dfd6823c6b728d4ull }}, {{ 0xbd5028837586db23ull, 0x27e5b5a32819818full, 0xf44194bc48014001ull, 0x5ad06b764ba64b09ull, 0x6b30aa66b415e602ull, 0xabe61165c327984eull }}, {{ 0x6521952297448f60ull, 0x8ef9185f90ff0f9dull, 0x8a8fcf5ad00c800bull, 0x8c24329ef47eee63ull, 0x2fe6a80308dafc17ull, 0xb6fcadf99f8bf310ull }}, {{ 0xf34fd359e8ad99bcull, 0x95baf3bba9f69c25ull, 0x699e198c207d0073ull, 0x7969fa358cf54fe3ull, 0xdf02901e588dd8ebull, 0x25decbc03b777ea1ull }}, {{ 0x811e418316c80159ull, 0xd94d8554a3a2197bull, 0x202cff7944e20483ull, 0xbe23c61781951ee2ull, 0xb619a12f758a7932ull, 0x7ab3f58252aaf252ull }}, {{ 0x0b2e8f1ee3d00d77ull, 0x7d07354e6454fed3ull, 0x41c1fabcb0d42d26ull, 0x6d65bceb0fd334d5ull, 0x1d004bda9768bbfbull, 0xcb0797173aad773bull }}, {{ 0x6fd19734e62086aaull, 0xe248150feb51f43eull, 0x9193cb5ee849c380ull, 0x45f9612e9e401054ull, 0x2202f689ea1757d2ull, 0xee4be6e84ac6a84full }}, {{ 0x5e2fe810fd4542a6ull, 0xd6d0d29f31338a70ull, 0xafc5f1b512e1a308ull, 0xbbbdcbd22e80a34dull, 0x541da16324e96e36ull, 0x4ef70512ebc29317ull }}, {{ 0xaddf10a9e4b49a7dull, 0x64283a37ec036863ull, 0xddbb7112bcd05e58ull, 0x5569f635d1066108ull, 0x49284ddf711e4e23ull, 0x15a632bd3599bee9ull }}, {{ 0xcab6a6a2ef0e08e6ull, 0xe992462f382213e4ull, 0xa9526abb6023af73ull, 0x56239e1a2a3fca58ull, 0xdb930aba6b2f0d61ull, 0xd87dfb641801751cull }}, {{ 0xeb22825d568c58fbull, 0x1fb6bdd83154c6efull, 0x9d382b51c164da87ull, 0x5d642d05a67de776ull, 0x93be6b482fd685cdull, 0x74ebd1e8f00e9320ull }}, {{ 0x2f5917a5617b79d2ull, 0x3d236a71ed4fc55full, 0x2431b1318df08947ull, 0xa5e9c23880eb0aa2ull, 0xc57030d1de613a05ull, 0x913633196091bf45ull }}, {{ 0xd97aec75ced2c238ull, 0x63622873451db5b7ull, 0x69f0ebef8b655cc8ull, 0x7b219635092e6a55ull, 0xb661e832afcc4438ull, 0xac1dfefdc5b178b9ull }}, {{ 0x7ecd3c9a143b962cull, 0xe1d59480b329192eull, 0x2369375b71f59fd3ull, 0xcf4fde125bd02756ull, 0x1fd311faddfaaa34ull, 0xb92bf5e9b8eeb741ull }}, {{ 0xf4045e04ca53ddb9ull, 0xd257cd06ff9afbd0ull, 0x621c299273983e46ull, 0x191eacb79621895dull, 0x3e3eb3ccabcaa610ull, 0x3bb79b213953288bull }}, {{ 0x882bac2fe746a93eull, 0x376e0245fc0dd629ull, 0xd5199fb883f26ec4ull, 0xfb32bf2bdd4f5da5ull, 0x6e7305feb5ea7ca0ull, 0x552c0f4c3d3f9570ull }}, {{ 0x51b4b9df08c29c6dull, 0x2a4c16bbd88a5d9full, 0x53003d35277853aaull, 0xcffb77b6a519a87aull, 0x507e3bf31b28de49ull, 0x53b898fa647bd664ull }}, {{ 0x310f42b6579a1c41ull, 0xa6f8e3567567a839ull, 0x3e0264138ab344a5ull, 0x1fd2ad22730094c7ull, 0x24ee577f0f98aee2ull, 0x4535f9c7ecd65febull }}, {{ 0xea989b1f6c051a8dull, 0x85b8e160960c923bull, 0x6c17e8c36b00ae78ull, 0x3e3ac3587e05cfc8ull, 0x714f6af69bf6d4d5ull, 0xb41bc1cf405fbf2full }}, {{ 0x29f60f3a3833097eull, 0x3938cdc5dc7db657ull, 0x38ef17a22e06d0b5ull, 0x6e4ba174ec3a1dd4ull, 0x6d1a2da217a45054ull, 0x0915921883bd77daull }}, {{ 0xa39c984631fe5eeeull, 0x3c3809ba9ce91f67ull, 0x3956ec55cc442714ull, 0x4ef44e913a452a4aull, 0x4305c854ec6b234cull, 0x5ad7b4f52566ae88ull }}, {{ 0x641df2bdf3efb54eull, 0x5a30614a211b3a0cull, 0x3d653b59faa986caull, 0x158b11ac46b3a6e6ull, 0x9e39d3513c2f60fbull, 0x8c6d11937602d152ull }}, {{ 0xe92b7b6b875d150bull, 0x85e3cce54b10447bull, 0x65f45183ca9f43e7ull, 0xd76eb0bac30484feull, 0x2e42412c59d9c9ceull, 0x7c42afc29c1c2d3aull }}, {{ 0x1bb2d23349a2d26eull, 0x3ae600f4eea2acd7ull, 0xfb8b2f25ea38a70bull, 0x6a52e74b9e2d31efull, 0xce968bbb8281e214ull, 0xda9add9a1919c445ull }}, {{ 0x14fc3600e05c384eull, 0x4cfc0991525ac067ull, 0xd36fd77b26368670ull, 0x273d08f42dc3f35full, 0x11e175531912d4ccull, 0x8a0ca804fb01aabaull }}, {{ 0xd1da1c08c39a330cull, 0x01d85fad378b8406ull, 0x425e6acf7e214063ull, 0x88625989c9a781beull, 0xb2ce953efabc4ff9ull, 0x647e9031ce10ab44ull }}, {{ 0x32851857a405fe76ull, 0x1273bcc42b732844ull, 0x97b02c1aed4c83deull, 0x53d77f61e08b116eull, 0xfc11d475cb5b1fbfull, 0xecf1a1f20ca6b0aeull }}, {{ 0xf932f36c683bf098ull, 0xb8855fa9b27f92a9ull, 0xece1b90d44fd26acull, 0x466af9d2c56eae51ull, 0xd8b24c99f18f3d79ull, 0x417053747e82e6d5ull }}, {{ 0xbbfd823c125765f1ull, 0x3535bca0f8fbbaa3ull, 0x40d13a84b1e382bfull, 0xc02dc23bb652cf33ull, 0x76f6fe036f9866bcull, 0x8e63428cf11d045aull }}, {{ 0x57e71658b769fb67ull, 0x14195e49b9d54a65ull, 0x882c492ef2e31b78ull, 0x81c996551f3c1800ull, 0xa5a5ec225bf4035full, 0x8fe099816b222b88ull }}, {{ 0x6f06df772a23d204ull, 0xc8fdaee14254e7f5ull, 0x51badbd57cdf12b0ull, 0x11dfdf533858f005ull, 0x787b3957978821bbull, 0x9ec5ff0e2f55b356ull }}, {{ 0x5644baa7a5663427ull, 0xd9e8d4cc97510f96ull, 0x314c9656e0b6bae7ull, 0xb2beb94033796035ull, 0xb4d03d6beb51514eull, 0x33bbf68dd9590160ull }}, {{ 0x5eaf4a8c75fe0986ull, 0x83184ffde92a9bdfull, 0xecfddf64c7234d0eull, 0xfb733c8202bdc213ull, 0x10226637312d2d12ull, 0x0557a18a7d7a0dc7ull }}, {{ 0xb2d8e97c9bec5f3eull, 0x1ef31feb1baa16b9ull, 0x41eab9efc7610291ull, 0xd2805d141b6994c7ull, 0xa157fe27ebc3c2bdull, 0x356c4f68e6c489c6ull }}, {{ 0xfc791ede173bb86dull, 0x357f3f2f14a4e340ull, 0x932b435dc9ca19abull, 0x3903a2c9121fcfc8ull, 0x4d6fed8f35a59b6aull, 0x163b1a1903ad61c2ull }}, {{ 0xdcbb34ace8553441ull, 0x16f877d6ce70e089ull, 0xbfb0a1a9e1e500b0ull, 0x3a245bdab53e1dd5ull, 0x065f479818781226ull, 0xde4f04fa24c5d197ull }}, {{ 0x9f500ec113540a8aull, 0xe5b4ae641068c562ull, 0x7ce650a2d2f206e0ull, 0x456b968b146d2a59ull, 0x3fb8cbf0f4b0b57eull, 0xaf1631c56fba2fe6ull }}, {{ 0x3920938ac1486966ull, 0xf90ecfe8a417b5daull, 0xe0ff265c3d7444c8ull, 0xb633e16ecc43a77eull, 0x7d37f7698ee716eeull, 0xd6ddf1b65d45defeull }}, {{ 0x3b45c36b8cd41df8ull, 0xba941f1668ed1a86ull, 0xc9f77f9a668aafd9ull, 0x1e06ce53faa48af4ull, 0xe42faa1f9506e553ull, 0x64ab711fa4bab5f0ull }}, {{ 0x50b9a23380492bacull, 0x49c936e01943093eull, 0xe3aafc08016ade81ull, 0x2c440f47ca6d6d8full, 0xe9dca53bd244f53full, 0xeeb26b3c6f4b1b68ull }}, {{ 0x2740560302dbb4bbull, 0xe1dc24c0fc9e5c6full, 0xe4add8500e2cb10cull, 0xbaa898cde846479eull, 0x229e745636b19477ull, 0x52f8305c58ef1219ull }}, {{ 0x88835c1e1c950f50ull, 0xd2996f89de2f9c57ull, 0xeeca73208dbeea80ull, 0x4a95f80b12becc34ull, 0x5a308b5e22efccadull, 0x3db1e39b7956b4fbull }}, {{ 0x5521992d1dd2991full, 0x39fe5b62addc1b6bull, 0x53e87f4589752908ull, 0xe9dbb06ebb73fa11ull, 0x85e571ad5d5dfec4ull, 0x68f2e412bd6311d1ull }}, {{ 0x534ffbc32a39fb35ull, 0x43ef91daca991231ull, 0x4714f8b75e939a52ull, 0x2294e4535287c4adull, 0x3af670c5a5abf3b1ull, 0x197ce8bb65deb22full }}, {{ 0x411fd59fa643d012ull, 0xa75bb28be9fab5edull, 0xc6d1b729b1c40736ull, 0x59d0eb41394daec4ull, 0x4da067b878b784ebull, 0xfee11751fab2f5d8ull }}, {{ 0x8b3e583c7ea620b6ull, 0x8994f97723cb1b44ull, 0xc43127a0f1a84822ull, 0x8229308c3d08d3afull, 0x08440d34b72b3131ull, 0xf4cae933cafd9a73ull }}, {{ 0x706f725cf27d4719ull, 0x5fd1bea765ef10adull, 0xa9eb8c497092d159ull, 0x159be57a625844ddull, 0x52a8840f27afebefull, 0x8fed1c05ede8087eull }}, {{ 0x645a77a178e4c6f5ull, 0xbe317289fb56a6c6ull, 0xa3337ade65bc2d7dull, 0xd816f6c7d772b0a8ull, 0x3a9528978cdf3756ull, 0x9f43183b4b1054efull }}, {{ 0xeb88ac4eb8efc594ull, 0x6dee7963d16283bfull, 0x6002ccaff959c6e9ull, 0x70e5a3ce6a7ae696ull, 0x49d395eb80b82964ull, 0x389ef250eea35158ull }}, {{ 0x3356bb13395db7c9ull, 0x4b50bde62dd9257full, 0xc01bfedfbd81c51eull, 0x68f8661028cd01dfull, 0xe243db3307319decull, 0x3635772952612d72ull }}, {{ 0x01634ec03da92ddaull, 0xf1276afdca7b76f8ull, 0x8117f4bd6711b32eull, 0x19b3fca1980212bdull, 0xd6a68ffe47f02b3cull, 0x1e16a79d37cbc67cull }}, {{ 0x0de11382689bca82ull, 0x6b8a2de9e8d2a5b0ull, 0x0aef8f6606b0ffd5ull, 0x0107de4ff014bb67ull, 0x62819feecf61b059ull, 0x2ce28c242df5c0e0ull }}, {{ 0x8acac3181615e917ull, 0x3365cb23183a78e0ull, 0x6d5b99fc42e9fe56ull, 0x0a4eaf1f60cf5206ull, 0xd9103f5419d0e37aull, 0xc0d97969cb9988c3ull }}, {{ 0x6beb9ef0dcdb1ae5ull, 0x01f9ef5ef248b8c5ull, 0x459403da9d23ef5eull, 0x6712d739c8193440ull, 0x7aa279490228e2c4ull, 0x887ebe21f3ff57a6ull }}, {{ 0x37343568a08f0cf2ull, 0x13c359b576d737b6ull, 0xb7c8268a236759acull, 0x06bc6841d0fc0a82ull, 0xca58bcda1598dbacull, 0x54f36d5387f96c80ull }}, {{ 0x280a16164596816full, 0xc5a18116a4682d1eull, 0x2dd18165620980b8ull, 0x435c129229d8691bull, 0xe7776084d7f894b8ull, 0x518245434fbe3d07ull }}, {{ 0x9064dcdeb7e10e5bull, 0xb84f0ae26c11c32dull, 0xca2f0df5d45f0737ull, 0xa198b9b5a2741b0full, 0x0aa9c5306fb5cf32ull, 0x2f16b4a11d6e624full }}, {{ 0xa3f0a0b32eca8f8eull, 0x33166cd838b19fc7ull, 0xe5d68b9a4bb6482dull, 0x4ff7411858890e9dull, 0x6aa1b3e45d1a17faull, 0xd6e30e4b264fd716ull }}, {{ 0x676646ffd3e99b89ull, 0xfee0407236f03dccull, 0xfa617406f51ed1c3ull, 0x1fa88af3755a922aull, 0x2a5106eba304efc7ull, 0x64de8eef7f1e66e0ull }}, {{ 0x09fec5fe4720135cull, 0xf4c28476256269fcull, 0xc7ce8845933431a7ull, 0x3c956d829589b5adull, 0xa72a45345e315dc7ull, 0xf0b1955af73004c1ull }}, {{ 0x63f3bbeec740c199ull, 0x8f992c9d75d823d8ull, 0xce1152b7c009f08full, 0x5dd64719d76118c9ull, 0x87a6b40badeda9c8ull, 0x66efd58da7e02f90ull }}, {{ 0xe7855753c8878ffbull, 0x9bfbbe269a716673ull, 0x0cad3b2d8063659bull, 0xaa5ec70269caf7e2ull, 0x4c830874cb48a1d3ull, 0x055e57888ec1dba5ull }}, {{ 0x0b356945d54b9fd3ull, 0x17d56d82086e0087ull, 0x7ec44fc703e1f814ull, 0xa7b3c61821edaed4ull, 0xfd1e548ff0d65244ull, 0x35af6b5593929474ull }}, {{ 0x70161cba54f43e3eull, 0xee564714544c0546ull, 0xf3ab1dc626d3b0c8ull, 0x8d05bcf15348d44cull, 0xe32f4d9f685f36aeull, 0x18da3157c3b9cc91ull }}, {{ 0x60dd1f47518a6e69ull, 0x4f5ec6cb4af834c0ull, 0x84af29bd8444e7d9ull, 0x8239616d40d84b01ull, 0xdfd9083a13b822d1ull, 0xf885ed6da541fdb2ull }}, {{ 0xc8a338c92f68501cull, 0x19b3c3f0edb20f83ull, 0x2ed7a1672ab10e7dull, 0x163dce448872ee0full, 0xbe7a5244c5315c2full, 0xb53b46487493e8fcull }}, {{ 0xd66037dbda132118ull, 0x0105a76948f49b25ull, 0xd46c4e07aaea90e3ull, 0xde6a0ead547d4c97ull, 0x70c736afb3ed99d6ull, 0x1450bed48dc719dfull }}, {{ 0x5fc22e9684bf4aefull, 0x0a388a1cd98e0f7aull, 0x4c3b0c4cad29a8deull, 0xb02492c54ce4fdeeull, 0x67c822dd07480264ull, 0xcb27744d89c702baull }}, {{ 0xbd95d1e12f78ed59ull, 0x663565207f8c9ac7ull, 0xfa4e7afec3a098acull, 0xe16dbbb500f1eb4eull, 0x0dd15ca248d017eeull, 0xef8a8b0761c61b48ull }}, {{ 0x67da32cbdab9457bull, 0xfe15f344fb7e0bcdull, 0xc710cdf3a445f6bbull, 0xce49551209733115ull, 0x8a2d9e56d820ef54ull, 0x5b696e49d1bd10d0ull }}, {{ 0x0e85fbf68b3cb6d1ull, 0xecdb80b1d2ec7606ull, 0xc6a80b846abba357ull, 0x0edd52b45e7fead9ull, 0x65c82f6471495950ull, 0x921e4ee23162a825ull }}, {{ 0x913bd7a1705f242bull, 0x409306f23d3c9c3cull, 0xc290732c2b54616full, 0x94a53b0bb0ff2c81ull, 0xf9d1d9ec6cdd7d20ull, 0xb52f14d5edda9175ull }}, {{ 0xac566c4e63b769aaull, 0x85be4576645e1a5dull, 0x99a47fb9b14bce58ull, 0xce744e74e9f7bd11ull, 0xc232833c40a6e345ull, 0x13d6d05b4a89ae9bull }}, {{ 0xbb603b0fe52a20a3ull, 0x396eb69febad07a8ull, 0x006cfd40ecf60f75ull, 0x108b109123ad62b0ull, 0x95f9205a8684e0baull, 0xc6642390e960d215ull }}, {{ 0x51c24e9ef3a54663ull, 0x3e53223f34c24c97ull, 0x0441e489419c9a94ull, 0xa56ea5ab64c5dae0ull, 0xdbbb43894130c744ull, 0xbfe963a91dc834d7ull }}, {{ 0x319712358474bfddull, 0x6f3f56780f96fde9ull, 0x2a92ed5c901e09caull, 0x765278b1efba8cc0ull, 0x9550a35c8be7c8aeull, 0x7f1de49b29d2106eull }}, {{ 0xefe6b6172c8f7ea3ull, 0x587960b09be5eb1bull, 0xa9bd459da12c61e8ull, 0x9f38b6f35d497f81ull, 0xd526619d770dd6d0ull, 0xf72aee0fa234a451ull }}, {{ 0x5f031ce7bd9af25eull, 0x74bdc6e616fb2f17ull, 0xa164b8284bbbd313ull, 0x38372581a4defb10ull, 0x537fd026a68a6426ull, 0xa7ad4c9c560e6b32ull }}, {{ 0xb61f210d680d77adull, 0x8f69c4fce5cfd6e9ull, 0x4def3192f5563ec2ull, 0x3227771070b5cea6ull, 0x42fe21828167e97eull, 0x8cc4fe1b5c902ff7ull }}, {{ 0x1d374a861086acc0ull, 0x9a21b1e0fa1e6521ull, 0x0b57efbd955e7399ull, 0xf58aa6a4671a127full, 0x9ded4f190e0f1eedull, 0x7fb1ed119da1dfa8ull }}, {{ 0x2428e93ca542bf7cull, 0x0550f2c9c52ff34bull, 0x716f5d67d5b08400ull, 0x976a826c0704b8f6ull, 0x2b4516fa8c97354bull, 0xfcf342b02852bc96ull }}, {{ 0x69991c5e749b7ad5ull, 0x35297be1b3df80efull, 0x6e59a60e58e52800ull, 0xea291838462f39a0ull, 0xb0b2e5c97de814f3ull, 0xe1809ae1933b5dddull }}, {{ 0x1ffb1bb08e12cc57ull, 0x139ed6d106bb095aull, 0x4f807c8f78f39002ull, 0x259af232bdd84044ull, 0xe6fcf9deeb10d187ull, 0xcf060ccfc051aaa8ull }}, {{ 0x3fcf14e58cbbfb65ull, 0xc434642a434e5d85ull, 0x1b04dd9ab983a014ull, 0x780d75fb6a7282abull, 0x05e1c2b52ea82f47ull, 0x163c801d8330aa99ull }}, {{ 0x7e16d0f77f57d1f0ull, 0xaa0be9a6a10fa734ull, 0x0e30a80b3f2440cfull, 0xb0869bd228791aafull, 0x3ad19b13d291d8caull, 0xde5d01271fe6a9faull }}, {{ 0xece429aaf96e3361ull, 0xa47720824a9c880cull, 0x8de69070776a881cull, 0xe542163594bb0ad6ull, 0x4c300ec639b277eaull, 0xafa20b873f02a3c6ull }}, {{ 0x40e9a0adbe4e01ccull, 0x6ca74516ea1d5081ull, 0x8b01a464aa29511eull, 0xf494de17cf4e6c61ull, 0xf9e093be40f8af2cull, 0xdc547348761a65beull }}, {{ 0x892046c96f0c11fbull, 0x3e88b2e52525250cull, 0x6e106beea59d2b30ull, 0x8dd0acee19103bcfull, 0xc2c5c56e89b6d7c1ull, 0x9b4c80d49d07f975ull }}, {{ 0x5b42c3de5678b3d1ull, 0x7156fcf37373727dull, 0x4ca437527823afe2ull, 0x8a26c14cfaa2561aull, 0x9bb9b65161246d8full, 0x10fd084e224fbe99ull }}, {{ 0x909ba6af60b7062eull, 0x6d65e182828278e5ull, 0xfe6a2938b164ded8ull, 0x65838d01ca575d06ull, 0x15411f2dcb6c479bull, 0xa9e2530d571d7200ull }}, {{ 0xa61482d9c7263dccull, 0x45facf191918b8f7ull, 0xf0259c36edf0b474ull, 0xf7238211e769a245ull, 0xd48b37c9f23acc11ull, 0xa2d73e8567267400ull }}, {{ 0x7ccd1c81c77e69f9ull, 0xbbcc16fafaf739acull, 0x61781a254b670c8aull, 0xa76314b30a2056bbull, 0x4d702de3764bf8b3ull, 0x5c68713607808808ull }}, {{ 0xe0031d11caf023bdull, 0x55f8e5cdcda840bcull, 0xceb10574f2067d6bull, 0x89decefe65436351ull, 0x0661cae29ef7b704ull, 0x9c146c1c4b055053ull }}, {{ 0xc01f22b1ed616563ull, 0x5bb8fa0a08928760ull, 0x12ea36917440e631ull, 0x62b415eff4a1e132ull, 0x3fd1ecda35ad262dull, 0x18cc391aee35233eull }}, {{ 0x81375af345cdf5e1ull, 0x9539c46455b949c7ull, 0xbd2621ae8a88fdedull, 0xdb08db5f8e52cbf4ull, 0x7e33408618c37dc5ull, 0xf7fa3b0d4e13606eull }}, {{ 0x0c298d80ba0b9acdull, 0xd441abeb593ce1cbull, 0x637d50d16959eb47ull, 0x8e5891bb8f3bf78full, 0xee00853cf7a2e9baull, 0xafc64e850cc1c450ull }}, {{ 0x799f870744740bfeull, 0x4a90b7317c60d1eeull, 0xe2e5282e1d8330ceull, 0x8f75b1539857ab99ull, 0x4c053461ac5d2149ull, 0xddbf11327f91ab29ull }}, {{ 0xc03b4648ac8877eeull, 0xe9a727eedbc83350ull, 0xdcf391cd271fe80eull, 0x9a98ed43f36cb402ull, 0xf8340bd0bba34cdfull, 0xa976abf8fbb0af9cull }}, {{ 0x8250bed6bd54af49ull, 0x20878f5495d20127ull, 0xa183b203873f1095ull, 0x09f944a7823f081cull, 0xb2087627546100bcull, 0x9ea2b7b9d4e6dc21ull }}, {{ 0x17277463654ed8ddull, 0x454b994dda340b8bull, 0x4f24f4234876a5d3ull, 0x63bcae8b1676511eull, 0xf4549d894bca0758ull, 0x325b2d4251049950ull }}, {{ 0xe78a8be1f51478a6ull, 0xb4f3fd0a8608736eull, 0x17718960d4a27a40ull, 0xe55ed16ee09f2b2full, 0x8b4e275cf5e44973ull, 0xf78fc4972a2dfd29ull }}, {{ 0x0b6976d392ccb67eull, 0x1187e2693c548255ull, 0xea6f5dc84e58c687ull, 0xf5b42e54c637afd6ull, 0x710d89a19aeade86ull, 0xab9dade7a5cbe39full }}, {{ 0x721ea443bbff20eeull, 0xaf4ed81c5b4d1752ull, 0x2859a9d30f77c146ull, 0x9909cf4fbe2cde65ull, 0x6a8760500d2cb145ull, 0xb428cb0c79f6e43aull }}, {{ 0x75326aa557f7494aull, 0xd914711b9102e938ull, 0x9380a23e9aad8cc2ull, 0xfa62191d6dc0aff3ull, 0x2949c32083beecb7ull, 0x0997ee7cc3a4ea48ull }}, {{ 0x93f82a756fa8dce3ull, 0x7acc6b13aa1d1c34ull, 0xc30656720ac77f9cull, 0xc7d4fb264986df83ull, 0x9ce19f4525753f2full, 0x5fef50dfa47126d1ull }}, {{ 0xc7b1a8965c98a0dfull, 0xcbfc2ec4a5231a0dull, 0x9e3f60746bcafc1cull, 0xce51cf7edf44bb25ull, 0x20d038b3769477ddull, 0xbf5928bc6c6b8430ull }}, {{ 0xccf095df9df648b9ull, 0xf7d9d3ae735f0489ull, 0x2e79c48c35edd91full, 0x0f321af4b8af4f78ull, 0x48223702a1ccaeaaull, 0x797b975c3c3329e1ull }}, {{ 0x0165dabc2b9ed736ull, 0xae8244d081b62d62ull, 0xd0c1ad7a1b4a7b3full, 0x97f50d8f36d91ab1ull, 0xd156261a51fed2a4ull, 0xbed3e99a59ffa2ccull }}, {{ 0x0dfa8b59b4346817ull, 0xd116b025111dc5d4ull, 0x2790c6c510e8d07cull, 0xef928798247b0af2ull, 0x2d5d7d0733f43a6dull, 0x7447200783fc5c00ull }}, {{ 0x8bc971810a0c10e8ull, 0x2ae2e172ab29ba48ull, 0x8ba7c3b2a91824e0ull, 0x5bb94bf16cce6d75ull, 0xc5a6e248078a484bull, 0x8ac7404b27db9801ull }}, {{ 0x75de6f0a6478a911ull, 0xacdcce7aafa146d5ull, 0x748da4fa9af170c1ull, 0x953cf76e40104697ull, 0xb884d6d04b66d2f1ull, 0x6bc882ef8e93f011ull }}, {{ 0x9ab05667ecb69aacull, 0xc0a010cadc4cc456ull, 0x8d8871ca0d6e6790ull, 0xd461aa4e80a2c1eaull, 0x35306422f2043d6full, 0x35d51d5b91c760b1ull }}, {{ 0x0ae3600f3f220ab4ull, 0x8640a7ec9affab62ull, 0x875471e486500ba7ull, 0x4bd0a711065b9329ull, 0x13e3e95d742a665eull, 0x1a532593b1c9c6ecull }}, {{ 0x6ce1c09877546b08ull, 0x3e868f3e0dfcb1d4ull, 0x494c72ed3f20748bull, 0xf62686aa3f93bf9full, 0xc6e71da689a7ffaeull, 0x073f77c4f1e1c538ull }}, {{ 0x40d185f4a94c2e52ull, 0x7141986c8bdef24cull, 0xdcfc7d4477448d70ull, 0x9d8142a67bc57c38ull, 0xc5072881608ffcd5ull, 0x487aadb172d1b437ull }}, {{ 0x882f3b8e9cf9cf34ull, 0x6c8ff43d76b576faull, 0xa1dce4aca8ad8664ull, 0x270c9a80d5b6da38ull, 0xb247950dc59fe058ull, 0xd4cac8ee7c310a2dull }}, {{ 0x51d8539221c21806ull, 0x3d9f8a66a316a5c9ull, 0x52a0eebe96c73fecull, 0x867e090859248636ull, 0xf6cbd289b83ec371ull, 0x4febd950d9ea65c8ull }}, {{ 0x327343b55194f040ull, 0x683b68025ee279ddull, 0x3a495371e3c87f3aull, 0x40ec5a537b6d3e1full, 0xa3f639613273a26full, 0x1f367d288327f9d9ull }}, {{ 0xf880a5152fd16284ull, 0x12521017b4d8c2a3ull, 0x46dd4272e5d4f848ull, 0x893b8742d2446d38ull, 0x679e3dcbf8845858ull, 0x3820e3951f8fc280ull }}, {{ 0xb50672d3de2dd92bull, 0xb734a0ed10779a67ull, 0xc4a4987cfa51b2d0ull, 0x5c53489c36ac4432ull, 0x0c2e69f7b52b7375ull, 0x3148e3d33b9d9904ull }}, {{ 0x12407c46adca7babull, 0x280e4942a4ac080dull, 0xae6df4e1c730fc27ull, 0x9b40d61a22baa9fbull, 0x79d023ad13b28295ull, 0xecd8e6405427fa28ull }}, {{ 0xb684dac2c9e8d4b1ull, 0x908edc9a6eb85082ull, 0xd04b90d1c7e9d987ull, 0x10885d055b4aa3d4ull, 0xc22164c2c4f919d8ull, 0x4078fe83498fc594ull }}, {{ 0x21308b9be3184ee8ull, 0xa5949e085333251bull, 0x22f3a831cf227f4bull, 0xa553a23590ea6650ull, 0x954def9bb1bb0270ull, 0x84b9f120df9db7cfull }}, {{ 0x4be57416def31511ull, 0x77ce2c533fff730full, 0x5d8491f21758f8f4ull, 0x75445617a927ff21ull, 0xd50b5c14f14e1866ull, 0x2f436b48bc292e1bull }}, {{ 0xf6f688e4b57ed2adull, 0xae0dbb407ffa7e98ull, 0xa72db374e979b98cull, 0x94ab5cec9b8ff74dull, 0x527198d16d0cf400ull, 0xd8a230d7599bcd16ull }}, {{ 0xa5a158ef16f43ac4ull, 0xcc895084ffc8f1f9ull, 0x87c902911ec13f7eull, 0xceb1a13e139fa908ull, 0x386ff82e42818805ull, 0x7655e869801602dfull }}, {{ 0x784d7956e58a4ba5ull, 0xfd5d2531fdd973c0ull, 0x4dda19ab338c7af3ull, 0x12f04c6cc43c9a55ull, 0x345fb1ce990f503aull, 0x9f5b141f00dc1cb8ull }}, {{ 0xb306bd64f766f46eull, 0xe5a373f3ea7e8584ull, 0x0a8500b0037ccd87ull, 0xbd62fc3faa5e0755ull, 0x0bbcf211fa992244ull, 0x398ec93608991f32ull }}, {{ 0xfe4365f1aa058c4full, 0xf862878728f1372eull, 0x693206e022e0074eull, 0x65ddda7ca7ac4952ull, 0x756174b3c9fb56afull, 0x3f93dc1c55fb37f4ull }}, {{ 0xeea1fb70a4377b18ull, 0xb3d94b47996c27d5ull, 0x1bf444c15cc04915ull, 0xfaaa88de8cbadd38ull, 0x95ce8f05e3d162d9ull, 0x7bc6991b5bd02f8cull }}, {{ 0x5253d2666a2aceebull, 0x067cf0cbfe398e5bull, 0x178aaf8d9f82dad9ull, 0xcaa958b17f4ca431ull, 0xda11963ae62ddc83ull, 0xd5c1fb119621db7dull }}, {{ 0x3746380025ac1530ull, 0x40e167f7ee3f8f91ull, 0xeb6adb883b1c8c7aull, 0xea9d76eef8fe69eaull, 0x84afde4cfdca9d25ull, 0x5993ceafdd5292eaull }}, {{ 0x28be300178b8d3e3ull, 0x88ce0faf4e7b9bacull, 0x322c93524f1d7cc6ull, 0x2a26a555b9f0232dull, 0x2edeaf01e9ea237bull, 0x7fc612dea539bd29ull }}, {{ 0x976de00eb73846dcull, 0x580c9cd910d414b9ull, 0xf5bdc1371726dfc1ull, 0xa582755943615fc3ull, 0xd4b2d613232562cfull, 0xfdbcbcb27441639bull }}, {{ 0xea4ac0932832c496ull, 0x707e207aa848cf3full, 0x99698c26e784bd8dull, 0x7718957ca1cdbda7ull, 0x4efc5cbf5f75dc1cull, 0xe95f5ef88a8de416ull }}, {{ 0x26eb85bf91fbaddfull, 0x64ed44ca92d8187full, 0xfe1f79850b2f6786ull, 0xa6f5d6de5209688bull, 0x15db9f79ba9a991cull, 0x1db9b5b5698ae8dfull }}, {{ 0x8533397bb3d4cab6ull, 0xf144afe9bc70f4f7ull, 0xed3abf326fda0b3full, 0x859a64af345e1577ull, 0xda943ac14a09fb1eull, 0x294119161f6d18b6ull }}, {{ 0x34003ed5064feb1dull, 0x6caedf215c6991abull, 0x444b77f85e84707full, 0x3807eed80bacd6afull, 0x89ca4b8ce463cf31ull, 0x9c8afadd3a42f724ull }}, {{ 0x080274523f1f2f20ull, 0x3ed4b74d9c1fb0b0ull, 0xaaf2afb3b12c64faull, 0x304f547074c062d8ull, 0x61e6f380ebe617ecull, 0x1d6dcca4469da76dull }}, {{ 0x50188b367737d742ull, 0x744f2908193ce6e0ull, 0xad7add04ebbbf1c6ull, 0xe3194c648f83dc76ull, 0xd305830936fcef39ull, 0x2649fe6ac2288a45ull }}, {{ 0x20f57020a82e6891ull, 0x8b179a50fc6104c3ull, 0xc6cca231355771c0ull, 0xdefcfbed9b269ca2ull, 0x3e371e5c25e15842ull, 0x7ee3f02b959566baull }}, {{ 0x4996614691d015aaull, 0x6eec0729dbca2f9full, 0xc3fe55ec156a7185ull, 0xb5e1d7480f821e5bull, 0x6e272f997acd729cull, 0xf4e761b3d7d60346ull }}, {{ 0xdfdfccc1b220d8a2ull, 0x553847a295e5dc38ull, 0xa7ef5b38d6286f36ull, 0x1ad268d09b152f95ull, 0x4d87dbfecc067a1full, 0x9109d1066e5c20c0ull }}, {{ 0xbebdff90f5487650ull, 0x5432cc59dafa9a38ull, 0x8f5990385d94581full, 0x0c3818260ed3dbd8ull, 0x074e97f3f840c537ull, 0xaa622a404f994783ull }}, {{ 0x736bfba994d49f21ull, 0x49fbfb828dca0637ull, 0x997fa233a7cb7139ull, 0x7a30f17c94469675ull, 0x4911ef87b287b426ull, 0xa7d5a6831bfccb1eull }}, {{ 0x8237d49fd04e374aull, 0xe3d7d31989e43e2aull, 0xfefc56048df26c3cull, 0xc5e96eddcac1e097ull, 0xdab35b4cf94d0980ull, 0x8e58811f17dfef2eull }}, {{ 0x162e4e3e230e28e2ull, 0xe66e3eff62ea6da9ull, 0xf5db5c2d8b783a60ull, 0xbb1e54a9eb92c5efull, 0x8b019101bd025f07ull, 0x8f750b36eebf57d4ull }}, {{ 0xddcf0e6d5e8d98d2ull, 0x004e75f9dd28489aull, 0x9a9199c772b247c9ull, 0x4f2f4ea333bbbb5full, 0x6e0faa116217b64dull, 0x9a92702553796e4dull }}, {{ 0xaa169045b187f838ull, 0x03109bc2a392d60cull, 0x09b001ca7af6cddaull, 0x17d91260055551bcull, 0x4c9ca4add4ed1f05ull, 0x09b8617542be4f06ull }}, {{ 0xa4e1a2b8ef4fb233ull, 0x1ea6159a63bc5c7eull, 0x60e011e8cda40a84ull, 0xee7ab7c035553158ull, 0xfe1e6eca51433632ull, 0x6133ce949b6f163eull }}, {{ 0x70d05b39591cf5fcull, 0x327cd807e55b9cf2ull, 0xc8c0b31808686929ull, 0x50cb2d821553ed73ull, 0xed3053e72ca01dfdull, 0xcc0611ce1256de75ull }}, {{ 0x6823903d7b219bd7ull, 0xf8e0704ef5942178ull, 0xd786fef054141b9bull, 0x27efc714d5474685ull, 0x43e34707be412be5ull, 0xf83cb20cb764b09bull }}, {{ 0x1163a266cf501669ull, 0xb8c4631597c94eb4ull, 0x6b45f56348c91417ull, 0x8f5dc6d054c8c13aull, 0xa6e0c64d6e8bb6f3ull, 0xb25ef47f29eee610ull }}, {{ 0xade458041920e018ull, 0x37abded7eddd1308ull, 0x30bb95e0d7dac8edull, 0x99a9c4234fd78c48ull, 0x84c7bf0651752583ull, 0xf7b58cf7a354fca6ull }}, {{ 0xcaeb7028fb48c0f0ull, 0x2cb6b46f4aa2be56ull, 0xe753dac86e8bd944ull, 0x00a1a9611e6b7ad1ull, 0x2fcd763f2e937724ull, 0xad1781ac6151de81ull }}, {{ 0xed326199d0d7895bull, 0xbf230c58ea5b6f63ull, 0x09468bd451767ca9ull, 0x06509dcb3032cc33ull, 0xde069e77d1c2a768ull, 0xc2eb10bbcd32b10bull }}, {{ 0x43f7d002286b5d8full, 0x775e7b79279259e7ull, 0x5cc1764b2ea0dea1ull, 0x3f2629efe1fbf9feull, 0xac4230ae319a8a10ull, 0x9d2ea75603faea76ull }}, {{ 0xa7ae20159431a797ull, 0xa9b0d2bb8bb78308ull, 0x9f8e9eefd248b24eull, 0x777da35ed3d7c3efull, 0xba95e6cdf00964a2ull, 0x23d2895c27cd28a2ull }}, {{ 0x8ccd40d7c9f08be3ull, 0xa0e83b53752b1e56ull, 0x3b92355e36d6f712ull, 0xaae861b4466da75cull, 0x49db040b605dee58ull, 0x66395d998e03965bull }}, {{ 0x8004886de36576e1ull, 0x4912514293af2f61ull, 0x53b615ae2465a6baull, 0xad13d10ac048899aull, 0xe28e2871c3ab4f76ull, 0xfe3da7ff8c23df90ull }}, {{ 0x002d544ae1f6a4c6ull, 0xdab72c99c4d7d9cfull, 0x451cd8cd6bf88346ull, 0xc2c62a6b82d56007ull, 0xd98d9471a4b11aa2ull, 0xee688ffb7966bba8ull }}, {{ 0x01c54aecd3a26fbfull, 0x8b27be01b06e8216ull, 0xb320780637b520c4ull, 0x9bbda8331c55c048ull, 0x7f87cc706eeb0a5bull, 0x50159fd2be035498ull }}, {{ 0x11b4ed4044585d72ull, 0x6f8d6c10e45114dcull, 0xff44b03e2d1347adull, 0x156891ff1b5982d6ull, 0xfb4dfc64552e6794ull, 0x20d83e3b6c214df4ull }}, {{ 0xb1114482ab73a676ull, 0x5b8638a8eb2ad098ull, 0xf8aee26dc2c0ccc6ull, 0xd615b3f7117f1c65ull, 0xd10bdbeb53d00bc8ull, 0x48726e52394d0b91ull }}, {{ 0xeaacad1ab284809aull, 0x933e36992fac25f6ull, 0xb6d4d8499b87ffbfull, 0x5cd907a6aef71bfbull, 0x2a769731462075d8ull, 0xd4784f363d0273b2ull }}, {{ 0x2abec30af92d0600ull, 0xc06e21fbdcb97ba5ull, 0x245072e0134ffd7bull, 0xa07a4c82d5a717d5ull, 0xa8a1e7ecbd449a73ull, 0x4cb3181e621884f5ull }}, {{ 0xab739e6dbbc23c03ull, 0x844d53d69f3ed473ull, 0x6b247cc0c11fe6d5ull, 0x44c6fd1c5886ee53ull, 0x96530f3f64ae0884ull, 0xfefef12fd4f53198ull }}, {{ 0xb28430495596581cull, 0x2b05466238744c84ull, 0x2f6cdf878b3f0457ull, 0xafc5e31b75454f42ull, 0xdf3e9879eecc552aull, 0xf5f56bde5193eff5ull }}, {{ 0xf929e2dd57df7117ull, 0xae34bfd6348afd2eull, 0xda40bb4b70762b67ull, 0xddbadf1294b51895ull, 0xb871f4c353fb53aaull, 0x9b9636af2fc75f9aull }}, {{ 0xbba2dca56eba6ae5ull, 0xce0f7e5e0d6de3d5ull, 0x868750f2649db20cull, 0xa94cb6b9cf12f5daull, 0x34738fa147d144acull, 0x13de22d7ddc9bc0bull }}, {{ 0x545c9e7653482cf0ull, 0x0c9aefac864ae659ull, 0x41492977ee28f480ull, 0x9cff234216bd9a89ull, 0x0c839c4cce2caebeull, 0xc6ad5c6ea9e15870ull }}, {{ 0x4b9e309f40d1c162ull, 0x7e0d5cbd3eecff7dull, 0x8cdb9eaf4d998d00ull, 0x21f76094e368095cull, 0x7d241b000dbed372ull, 0xc2c59c52a2cd7460ull }}, {{ 0xf42de63888318dd7ull, 0xec859f647541fae4ull, 0x809432d907ff8204ull, 0x53a9c5d0e2105d9dull, 0xe3690e0089744275ull, 0x9bb81b3a5c068bc4ull }}, {{ 0x89cafe3551ef8a62ull, 0x3d3839ec9493ccf1ull, 0x05c9fc7a4ffb1431ull, 0x44a1ba28d4a3a827ull, 0xe21a8c055e8a9895ull, 0x15311047984175b0ull }}, {{ 0x61edee15335b67d1ull, 0x6432433dcdc6016full, 0x39e3dcc71fcec9ecull, 0xae5145984e649186ull, 0xd5097835b169f5d4ull, 0xd3eaa2cbf28e98e8ull }}, {{ 0xd34b4cd401920e28ull, 0xe9f6a06a09bc0e59ull, 0x42e69fc73e13e33bull, 0xcf2cb7f30fedaf3eull, 0x525eb218ee239a4eull, 0x472a5bf77991f918ull }}, {{ 0x40f100480fb48d8dull, 0x23a2442461588f82ull, 0x9d023dc86cc6e057ull, 0x17bf2f7e9f48d86eull, 0x37b2f4f94d640714ull, 0xc7a797aabfb3baf3ull }}, {{ 0x896a02d09d0d8784ull, 0x6456a96bcd759b16ull, 0x221669d43fc4c367ull, 0xed77daf238d87452ull, 0x2cfd91bd05e846c8ull, 0xcc8becab7d054d80ull }}, {{ 0x5e241c2622874b2aull, 0xeb629e3606980ee1ull, 0x54e0224a7dafa209ull, 0x46ae8d7638748b35ull, 0xc1e7b1623b12c3d9ull, 0xfd773eb2e2350701ull }}, {{ 0xad69197d5948efa0ull, 0x31da2e1c41f094cdull, 0x50c156e8e8dc5463ull, 0xc2d1869e348d7015ull, 0x930cedd64ebba67cull, 0xe6a872fcd6124611ull }}, {{ 0xc61afee57cd95c3dull, 0xf285cd1a9365d008ull, 0x278d6519189b4bdfull, 0x9c2f422e0d8660d5ull, 0xbe814a5f135480dfull, 0x02947de05cb6bcafull }}, {{ 0xbd0df4f6e07d9a5dull, 0x793a0309c1fa2057ull, 0x8b85f2faf610f6bfull, 0x19d895cc873fc853ull, 0x710ce7b6c14d08bcull, 0x19cceac39f235eddull }}, {{ 0x628b91a4c4e807a5ull, 0xbc441e6193c5436dull, 0x733b7dcd9ca9a37aull, 0x0275d9fd487dd343ull, 0x6a810d238d025759ull, 0x02012ba43761b4a6ull }}, {{ 0xd973b06fb1104c71ull, 0x5aa92fcfc5b4a245ull, 0x8052ea081ea062cbull, 0x189a83e4d4ea40a2ull, 0x290a83638217697aull, 0x140bb46a29d10e80ull }}, {{ 0x7e84e45ceaa2fc6cull, 0x8a9bde1db90e56baull, 0x033d24513243dbf1ull, 0xf60926f051268659ull, 0x9a6921e314ea1ec4ull, 0xc8750c25a22a9101ull }}, {{ 0xf130eba12a5ddc36ull, 0x6a16ad293a8f6348ull, 0x20636b2bf6a6976full, 0x9c5b85632b813f7aull, 0x081b52ded12533b1ull, 0xd492797855a9aa10ull }}, {{ 0x6be9344ba7aa9a1dull, 0x24e2c39c4999e0d9ull, 0x43e22fb7a281ea5aull, 0x1b9335dfb30c7ac5ull, 0x51113cb42b7404f0ull, 0x4db8beb358a0a4a0ull }}, {{ 0x371c0af48caa0525ull, 0x70dba41ae002c87eull, 0xa6d5dd2c59132785ull, 0x13c01abcfe7ccbb4ull, 0x2aac5f09b2883161ull, 0x0937730176466e43ull }}, {{ 0x27186d8d7ea43370ull, 0x6894690cc01bd4eeull, 0x845aa3bb7abf8b36ull, 0xc5810b61f0dff50eull, 0xaabbb660f951edcaull, 0x5c2a7e0e9ec04e9full }}, {{ 0x86f44786f26a0264ull, 0x15cc1a7f8116514dull, 0x2b8a6552cb7b7020ull, 0xb70a71d368bf9291ull, 0xab551fc9bd3349ebull, 0x99a8ec923383123cull }}, {{ 0x458acb45782417e6ull, 0xd9f908fb0adf2d07ull, 0xb367f53bf2d26140ull, 0x26687242177bb9abull, 0xb1533de16400e335ull, 0x00993db6031eb65eull }}, {{ 0xb76bf0b6b168eefdull, 0x83ba59ce6cb7c248ull, 0x020f94577c37cc88ull, 0x80147694ead540b5ull, 0xed406acde808e013ull, 0x05fc691c1f331fb2ull }}, {{ 0x2a376722ee1955deull, 0x254782103f2d96d7ull, 0x149bcb6ada2dfd55ull, 0x00cca1d12c548712ull, 0x44842c0b1058c0c3ull, 0x3bdc1b1937ff3cfdull }}, {{ 0xa62a075d4cfd5aa9ull, 0x74cb14a277c7e467ull, 0xce15f22c85cbe553ull, 0x07fe522bbb4d46b4ull, 0xad29b86ea377879eull, 0x56990efc2ff861e4ull }}, {{ 0x7da449a501e58a96ull, 0x8feece58adceec0cull, 0x0cdb75bd39f6f542ull, 0x4fef35b55104c310ull, 0xc3a1345262ab4c2cull, 0x61fa95d9dfb3d2eeull }}, {{ 0xe86ae07212f769e0ull, 0x9f540f76ca15387cull, 0x8092996443a59499ull, 0x1f5819152a2f9ea0ull, 0xa44c0b37dab0f9bbull, 0xd3c9da82bd063d53ull }}, {{ 0x142cc474bdaa22bdull, 0x39489aa3e4d434e1ull, 0x05b9fdeaa477ce00ull, 0x3970fad3a5dc3245ull, 0x6af8702e8ae9c14full, 0x45e2891b623e6544ull }}, {{ 0xc9bfac8f68a55b5eull, 0x3cd60a66f04a10caull, 0x3943eb2a6cae0c02ull, 0x3e69cc447a99f6b2ull, 0x2db461d16d218d18ull, 0xbad95b11d66ff4acull }}, {{ 0xe17cbd9a167591abull, 0x605c680562e4a7ebull, 0x3ca72fa83ecc7816ull, 0x7021faacca03a2f6ull, 0xc90bd22e434f82f2ull, 0x4c7d8eb2605f8eb9ull }}, {{ 0xcedf6804e097b0b2ull, 0xc39c1035dcee8f36ull, 0x5e87dc9273fcb0dfull, 0x6153cabfe4245d9eull, 0xda7635cea11b1d78ull, 0xfce792f7c3bb9341ull }}, {{ 0x14ba1030c5ece6f8ull, 0xa418a21aa1519824ull, 0xb14e9db887dee8bdull, 0xcd45eb7ee96ba82full, 0x889e1a124b0f26b3ull, 0xe10bbdada553c092ull }}, {{ 0xcf44a1e7bb4105afull, 0x68f6550a4d2ff168ull, 0xed1229354eb51768ull, 0x04bb32f51e3491dcull, 0x562d04b6ee978306ull, 0xca7568c8754585b9ull }}, {{ 0x18ae530d508a38d3ull, 0x199f526703df6e18ull, 0x42b59c151312ea14ull, 0x2f4ffd932e0db2a1ull, 0x5dc22f2551eb1e3cull, 0xe89617d494b7393dull }}, {{ 0xf6cf3e8525663839ull, 0x0039380626ba4cf0ull, 0x9b1818d2bebd24c9ull, 0xd91fe7bfcc88fa4cull, 0xa995d775332f2e59ull, 0x15dcee4dcf283c65ull }}, {{ 0xa418713375fe323cull, 0x023c303d83470169ull, 0x0ef0f83b73636fdaull, 0x7b3f0d7dfd59c6feull, 0x9fda6a93ffd7cf82ull, 0xdaa14f0a17925bf8ull }}, {{ 0x68f46c029bedf65bull, 0x1659e26720c60e20ull, 0x9569b25281e25e84ull, 0xd07686ebe581c5ecull, 0x3e8829c7fe6e1b18ull, 0x8a4d1664ebb797b6ull }}, {{ 0x198c381a174b9f91ull, 0xdf82d80747bc8d44ull, 0xd620f73912d7b128ull, 0x24a14536f711bb3dull, 0x7151a1cff04d0ef8ull, 0x6702dff1352bed1eull }}, {{ 0xff7a3104e8f43ba6ull, 0xbb1c7048cd5d84a8ull, 0x5d49a83abc6ceb98ull, 0x6e4cb425a6b1506aull, 0x6d30521f630295b1ull, 0x061cbf6c13b74330ull }}, {{ 0xfac5ea31198a547aull, 0x4f1c62d805a72e99ull, 0xa4e0924b5c4133f7ull, 0x4eff097882ed2427ull, 0x43e33539de19d8eeull, 0x3d1f7a38c5289fe4ull }}, {{ 0xcbbb25eaff674cc7ull, 0x171bdc703887d203ull, 0x70c5b6f19a8c07a9ull, 0x15f65eb51d43698cull, 0xa6e01442ad02794full, 0x633ac637b3963eeaull }}, {{ 0xf54f7b2dfa08ffc7ull, 0xe7169c62354e3425ull, 0x67b9257009784c9aull, 0xdb9fb31324a21f7cull, 0x84c0ca9ac218bd16ull, 0xe04bbe2d03de752aull }}, {{ 0x951acfcbc459fdc5ull, 0x06e21bd6150e097bull, 0x0d3b76605eb2fe0dull, 0x943cfebf6e553adcull, 0x2f87ea0b94f762e4ull, 0xc2f56dc226b093a9ull }}, {{ 0xd30c1df5ab83e9b4ull, 0x44d5165cd28c5ed3ull, 0x84529fc3b2fdec82ull, 0xca61f37a4f544c98ull, 0xdb4f2473d1a9dcedull, 0x9d96499582e5c49bull }}, {{ 0x3e792b98b327210dull, 0xb052dfa0397bb446ull, 0x2b3a3da4fdeb3d16ull, 0xe7d382c7194afdf5ull, 0x91176c8630a2a149ull, 0x27dedfd71cf9ae16ull }}, {{ 0x70bbb3f6ff874a81ull, 0xe33cbc423ed50abeull, 0xb0466871eb3062e2ull, 0x0e431bc6fcedeb93ull, 0xaaea3d3de65a4ce3ull, 0x8eb4be6721c0cce1ull }}, {{ 0x675507a5fb48e908ull, 0xe05f5a9674526b70ull, 0xe2c014732fe3dcdcull, 0x8e9f15c5e14b33c4ull, 0xad26646aff8700deull, 0x930f7007518800d0ull }}, {{ 0x09524c7bd0d91a4dull, 0xc3b989e08b383264ull, 0xdb80cc7fdee6a0a0ull, 0x9236d9baccf005b0ull, 0xc37fec2dfb4608b1ull, 0xbe9a60492f500826ull }}, {{ 0x5d36fcd6287b0702ull, 0xa53f62c57031f7e8ull, 0x9307fcfeb5024647ull, 0xb624814c016038e8ull, 0xa2ff39cbd0bc56efull, 0x7207c2dbd9205183ull }}, {{ 0xa425e05d94ce460full, 0x7479dbb661f3af13ull, 0xbe4fe1f31216beccull, 0x1d6d0cf80dc23915ull, 0x5df841f6275b655dull, 0x744d9c967b432f24ull }}, {{ 0x697ac3a7d00ebc98ull, 0x8cc2951fd384d6c4ull, 0x6f1ed37eb4e373fcull, 0x264281b089963ad9ull, 0xabb2939d8991f5a3ull, 0x8b081de0d09fd76bull }}, {{ 0x1ecba48e20935deeull, 0x7f99d33e433063acull, 0x573442f310e287ddull, 0x7e9910e55fde4c7eull, 0xb4f9c4275fb3985full, 0x6e512ac8263e6a34ull }}, {{ 0x33f46d8d45c1ab4bull, 0xfc02406e9fe3e4b9ull, 0x680a9d7ea8d94ea6ull, 0xf1faa8f5beaefcefull, 0x11c1a989bd03f3baull, 0x4f2babd17e70260full }}, {{ 0x078c4784b990b0ecull, 0xd81684523ee6ef3cull, 0x106a26f2987d1285ull, 0x73ca999972d5e15aull, 0xb1909f616227854dull, 0x17b4b62ef0617c96ull }}, {{ 0x4b7acb2f3fa6e93aull, 0x70e12b3675055858ull, 0xa4258579f4e2b93aull, 0x85e9fffe7c5acd84ull, 0xefa639cdd58b3506ull, 0xed0f1dd563cedde2ull }}, {{ 0xf2cbefd87c851c41ull, 0x68cbb02092357372ull, 0x697736c390db3c48ull, 0x3b23fff0db8c072eull, 0x5c7e420a57701241ull, 0x42972a55e614aaddull }}, {{ 0x7bf75e74dd331a89ull, 0x17f4e145b616827dull, 0x1ea823a3a8905ad4ull, 0x4f67ff68937847d0ull, 0x9cee94676a60b68cull, 0x99e7a75afcceaca5ull }}, {{ 0xd7a9b090a3ff095aull, 0xef90ccb91ce118e6ull, 0x3291646495a38c48ull, 0x1a0ffa15c2b2ce21ull, 0x2151cc0a27c7217bull, 0x030c898de012be78ull }}, {{ 0x6ca0e5a667f65d88ull, 0x5ba7ff3b20caf904ull, 0xf9adebedd8637ad9ull, 0x049fc4d99afc0d4bull, 0x4d31f8658dc74ecfull, 0x1e7d5f8ac0bb70b1ull }}, {{ 0x3e48f8800f9fa753ull, 0x948ff84f47edba2cull, 0xc0cb374a73e2cc7dull, 0x2e3db0800dd884f7ull, 0x03f3b3f789c91416ull, 0x30e5bb6b875266edull }}, {{ 0x6ed9b5009c3c8942ull, 0xcd9fb318cf4945baull, 0x87f028e886dbfce7ull, 0xce68e5008a7531adull, 0x278507ab61dac8ddull, 0xe8f9523349380542ull }}, {{ 0x548112061a5d5c96ull, 0x083cfef818dcb948ull, 0x4f6199154497e10eull, 0x1018f2056893f0c7ull, 0x8b324cb1d28bd8aaull, 0x19bd3600dc303495ull }}, {{ 0x4d0ab43d07a59ddeull, 0x5261f5b0f89f3cd3ull, 0x19cffad4adeeca8cull, 0xa0f9743615c767c9ull, 0x6ff6fef2397676a4ull, 0x01641c0899e20dd7ull }}, {{ 0x026b0a624c782aadull, 0x37d398e9b6386041ull, 0x021fcc4ecb53e97bull, 0x49be8a1cd9ca0ddbull, 0x5fa5f5763ea0a26eull, 0x0de9185602d48a6aull }}, {{ 0x182e67d6fcb1aac6ull, 0x2e43f9211e33c28aull, 0x153dfb13f1471ed0ull, 0xe171652081e48a8eull, 0xbc7b969e7246584eull, 0x8b1af35c1c4d6827ull }}, {{ 0xf1d00e65def0abc1ull, 0xcea7bb4b2e059964ull, 0xd46bcec76cc73421ull, 0xce6df34512ed698cull, 0x5cd3e23076bf7314ull, 0x6f0d81991b06118dull }}, {{ 0x72208ffab566b587ull, 0x128d50efcc37fdf1ull, 0x4c3613ca3fc80952ull, 0x104b80b2bd461f80ull, 0xa046d5e4a37a7ed0ull, 0x56870ffb0e3caf85ull }}, {{ 0x75459fcb1603174aull, 0xb985295dfa2feb6eull, 0xfa1cc5e67dd05d34ull, 0xa2f306fb64bd3b02ull, 0x42c45aee62c8f420ull, 0x61469fce8e5edb38ull }}, {{ 0x94b83deedc1ee8e5ull, 0x3f339dabc5df3250ull, 0xc51fbb00ea23a40full, 0x5d7e45d1ef644e1dull, 0x9bab8d4fdbd98946ull, 0xccc23e118fb49032ull }}, {{ 0xcf326b54993518f1ull, 0x780428b5bab7f725ull, 0xb33d4e0925646898ull, 0xa6eeba3359eb0d29ull, 0x14b3851e967f5cbfull, 0xff966caf9d0da1faull }}, {{ 0x17f8314dfc12f967ull, 0xb02997194b2fa77aull, 0x00650c5b75ec15f4ull, 0x85534601832e83a1ull, 0xcf033331e0f99f7cull, 0xfbe03edc228853c4ull }}, {{ 0xefb1ed0bd8bdbe03ull, 0xe19fe6fcefdc8ac4ull, 0x03f27b929b38db8eull, 0x3540bc0f1fd1244aull, 0x161ffff2c9c03addull, 0xd6c27499595345b0ull }}, {{ 0x5cf3427677696c21ull, 0xd03f05e15e9d6bb1ull, 0x2778d3ba10389394ull, 0x148758973e2b6ae4ull, 0xdd3fff7be1824ca4ull, 0x63988dfd7d40b8e0ull }}, {{ 0xa18098a0aa1e394full, 0x22763acdb22634edull, 0x8ab84544a235c3d0ull, 0xcd4975e86db22ce9ull, 0xa47ffad6cf16fe68ull, 0xe3f58be6e48738c8ull }}, {{ 0x4f05f646a52e3d14ull, 0x589e4c08f57e1148ull, 0x6b32b4ae5619a621ull, 0x04de9b1448f5c11full, 0x6cffcc6416e5f018ull, 0xe7977704ed4837d6ull }}, {{ 0x163b9ec273ce62cdull, 0x762ef85996ecacd3ull, 0x2ffb0ecf5d007d4dull, 0x30b20ecad9998b3aull, 0x41fdfbe8e4fb60f0ull, 0x0beaa63144d22e60ull }}, {{ 0xde543398860fdbffull, 0x9dd5b37fe53ec03eull, 0xdfce9419a204e506ull, 0xe6f493ec7fff7045ull, 0x93ebd718f1d1c961ull, 0x772a7decb035cfc2ull }}, {{ 0xaf4a03f53c9e97f2ull, 0x2a5902fef4738274ull, 0xbe11c9005430f242ull, 0x058dc73cfffa62baull, 0xc73666f97231ddd3ull, 0xa7a8eb3ee21a1d99ull }}, {{ 0xd8e427945e31ef77ull, 0xa77a1df58c83188eull, 0x6cb1da0349e97695ull, 0x3789c861ffc7db4bull, 0xc82005be75f2aa3eull, 0x8c993074d5052801ull }}, {{ 0x78e98bcbadf35aaaull, 0x8ac52b977d1ef594ull, 0x3ef28420e31ea1d8ull, 0x2b61d3d3fdce90f2ull, 0xd14039709b7aa66eull, 0x7dfbe49052339011ull }}, {{ 0xb91f75f4cb818aa3ull, 0x6bb3b3eae33597ccull, 0x75792948df325275ull, 0xb1d24647ea11a976ull, 0x2c823e6612ca804dull, 0xebd6eda33603a0b2ull }}, {{ 0x3b3a9b8ff30f6a61ull, 0x3505072ce017edffull, 0x96bb9cd8b7f73896ull, 0xf236becf24b09ea0ull, 0xbd166ffcbbe90308ull, 0x366548601c2446f5ull }}, {{ 0x504a139f7e9a27c6ull, 0x123247c0c0ef4bf8ull, 0xe35420772fa835deull, 0x762374176ee63245ull, 0x62e05fdf571a1e59ull, 0x1ff4d3c1196ac599ull }}, {{ 0x22e4c43af2058db8ull, 0xb5f6cd878958f7b3ull, 0xe14944a7dc921aacull, 0x9d6288ea54fdf6baull, 0xdcc3beb967052f7eull, 0x3f90458afe2bb7fdull }}, {{ 0x5cefaa4d7437892full, 0x1ba4074b5d79acffull, 0xccdcae8e9db50abfull, 0x25d9592751eba34cull, 0x9fa5733e0633daf2ull, 0x7ba2b76dedb52feaull }}, {{ 0xa15ca7068a2b5bd3ull, 0x146848f1a6c0c1f9ull, 0x009ed19229126b77ull, 0x7a7d7b8933346100ull, 0x3c76806c3e068d75ull, 0xd45b2a4b4913df2aull }}, {{ 0x4d9e864165b1963aull, 0xcc12d970838793c0ull, 0x06342fb59ab832a6ull, 0xc8e6d35c000bca00ull, 0x5ca1043a6c418696ull, 0x4b8fa6f0dac6b7a6ull }}, {{ 0x08313e8df8efde45ull, 0xf8bc7e65234bc583ull, 0x3e09dd180b31fa83ull, 0xd90441980075e400ull, 0x9e4a2a483a8f41e3ull, 0xf39c85688bc32c7full }}, {{ 0x51ec718bb95eaeb4ull, 0xb75ceff360f5b71eull, 0x6c62a2f06ff3c927ull, 0x7a2a8ff0049ae802ull, 0x2ee5a6d2499892e6ull, 0x841d3615759fbcfcull }}, {{ 0x333c6f753db2d306ull, 0x29a15f81c999272full, 0x3bda5d645f85db8dull, 0xc5a99f602e0d1018ull, 0xd4f88436dff5bd00ull, 0x29241cd6983d61d9ull }}, {{ 0x005c5a9468fc3e3full, 0xa04dbb11dffb87d8ull, 0x5687a5ebbb3a9383ull, 0xb8a039c1cc82a0f2ull, 0x51b52a24bf996207ull, 0x9b692061f265d282ull }}, {{ 0x039b89cc19da6e7bull, 0x43094eb2bfd34e70ull, 0x614c7b355049c324ull, 0x36424191fd1a4977ull, 0x3113a56f7bfdd44dull, 0x121b43d377fa3917ull }}, {{ 0x241361f9028850c9ull, 0x9e5d12fb7e411060ull, 0xccfcd01522e19f6aull, 0x1e968fb3e306dea9ull, 0xeac4765ad7ea4b04ull, 0xb510a642afc63ae7ull }}, {{ 0x68c1d3ba195327ddull, 0x2fa2bdd2ee8aa3c1ull, 0x01e020d35cd03a2aull, 0x31e19d06de44b2a2ull, 0x2bac9f8c6f26ee29ull, 0x12a67e9addbe4d0full }}, {{ 0x17924544fd3f8ea2ull, 0xdc5b6a3d516a658eull, 0x12c14841a02245a5ull, 0xf2d02244aeaefa54ull, 0xb4be3b7c57854d9bull, 0xba80f20ca96f0297ull }}, {{ 0xebb6b4b1e47b9252ull, 0x9b9226652e27f78cull, 0xbb8cd2904156b87aull, 0x7c2156aed2d5c748ull, 0x0f6e52db6b350817ull, 0x4909747e9e5619edull }}, {{ 0x35230ef2ecd3b738ull, 0x13b57ff3cd8fab81ull, 0x538039a28d6334caull, 0xd94d62d43c59c8d7ull, 0x9a4f3c92301250eaull, 0xda5e8cf22f5d0342ull }}, {{ 0x135e957d4045282cull, 0xc516ff86079cb30cull, 0x4302405985e00fe4ull, 0x7d05dc4a5b81d869ull, 0x07185db5e0b7292cull, 0x87b18175d9a2209aull }}, {{ 0xc1b1d6e482b391bbull, 0xb2e5fb3c4c1efe78ull, 0x9e16837f3ac09eefull, 0xe23a9ae79312741cull, 0x46f3a91ac7279bbcull, 0x4cef0e9a80554604ull }}, {{ 0x90f264ed1b03b14bull, 0xfcfbd05af935f0b7ull, 0x2ce122f84b86355cull, 0xd64a0d0bbeb8891eull, 0xc5849b0bc78c1560ull, 0x015692090354bc2aull }}, {{ 0xa977f1430e24ecebull, 0xe1d6238dbc1b672bull, 0xc0cb5db2f33e15a1ull, 0x5ee4827573355b2dull, 0xb72e0e75cb78d5c8ull, 0x0d61b45a214f59abull }}, {{ 0x9eaf6c9e8d714132ull, 0xd25d6389591207b4ull, 0x87f1a8fd806cd852ull, 0xb4ed189680158fc9ull, 0x27cc9099f2b859d3ull, 0x85d10b854d1980b5ull }}, {{ 0x32da3e31866c8bf7ull, 0x37a5e35d7ab44d0eull, 0x4f7099e70440733cull, 0x1142f5e100d79ddfull, 0x8dfda6037b338245ull, 0x3a2a733502ff0713ull }}, {{ 0xfc866def403d77a5ull, 0x2c7ae1a6cb0b028dull, 0x1a6603062a84805aull, 0xac9d9aca086c2ab9ull, 0x8be87c22d00316b2ull, 0x45a880121df646c3ull }}, {{ 0xdd404b588266ac72ull, 0xbcccd083ee6e198bull, 0x07fc1e3da92d0385ull, 0xbe280be45439ab3bull, 0x7714d95c201ee2faull, 0xb89500b52b9ec3a3ull }}, {{ 0xa482f1751802bc75ull, 0x60002527504cff76ull, 0x4fd92e689bc22339ull, 0x6d9076eb4a40b04eull, 0xa6d07d994134ddcbull, 0x35d20713b433a462ull }}, {{ 0x6d1d6e92f01b5c95ull, 0xc00173892301faa2ull, 0x1e7bd0161595603dull, 0x47a4a530e686e30full, 0x8424e7fc8c10a9f2ull, 0x1a3446c50a046bdaull }}, {{ 0x432651bd61119dceull, 0x800e835b5e13ca58ull, 0x30d620dcd7d5c269ull, 0xcc6e73e90144de97ull, 0x29710fdd78a6a376ull, 0x060ac3b2642c3689ull }}, {{ 0x9f7f3165cab02a0cull, 0x00912191acc5e772ull, 0xe85d48a06e59981full, 0xfc50871a0cb0b1e7ull, 0x9e6a9ea6b68262a3ull, 0x3c6ba4f7e9ba215bull }}, {{ 0x3af7edf9eae1a479ull, 0x05ab4fb0bfbb0a7aull, 0x13a4d6444f7ff136ull, 0xdb2547047ee6f30full, 0x302a32832117da67ull, 0x5c3471af21454d94ull }}, {{ 0x4daf4bc32cd06cb9ull, 0x38b11ce77d4e68c6ull, 0xc4705eab1aff6c1cull, 0x8f74c62cf5057e96ull, 0xe1a5f91f4aee880eull, 0x9a0c70d74cb507c9ull }}, {{ 0x08d8f59fc0243f3dull, 0x36eb210ae51017bfull, 0xac63b2af0dfa391aull, 0x9a8fbdc19236f1e3ull, 0xd07bbb38ed515091ull, 0x047c6868ff124de2ull }}, {{ 0x5879983d816a7864ull, 0x252f4a6cf2a0ed76ull, 0xbbe4fad68bc63b06ull, 0x099d698fb62572e4ull, 0x24d55039452d25b0ull, 0x2cdc1419f6b70adcull }}, {{ 0x74bff2670e28b3ecull, 0x73d8e8417a49469full, 0x56f1cc6175be4e3dull, 0x60261f9d1d767cefull, 0x7055223cb3c378e0ull, 0xc098c903a3266c99ull }}, {{ 0x8f7f78068d970736ull, 0x8679128ec6dcc23aull, 0x6571fbce996f0e66ull, 0xc17d3c2326a0e159ull, 0x6353565f05a2b8c3ull, 0x85f7da245f803dfeull }}, {{ 0x9afab04187e6481dull, 0x40bab993c49f9649ull, 0xf673d611fe569001ull, 0x8ee4595f8248cd7dull, 0xe1415fb6385b37a5ull, 0x3bae856bbb026befull }}, {{ 0x0dcae28f4efed11full, 0x874b3fc5ae3bdee0ull, 0xa0865cb3ef61a00cull, 0x94eb7dbb16d806ebull, 0xcc8dbd1e33902c77ull, 0x54d136354e18375eull }}, {{ 0x89ecd99915f42b38ull, 0x48f07db8ce56b4c0ull, 0x453f9f0759d0407dull, 0xd132e94ee4704534ull, 0xfd89632e03a1bcabull, 0x502c1e150cf229b3ull }}, {{ 0x63407ffadb89b033ull, 0xd964e9380f630f85ull, 0xb47c3649822284e4ull, 0x2bfd1d14ec62b40aull, 0xe75ddfcc24515eb6ull, 0x21b92cd28175a107ull }}, {{ 0xe084ffcc9360e1fcull, 0x7df11c3099de9b35ull, 0x0cda1edf155930f0ull, 0xb7e322d13bdb086bull, 0x09aabdf96b2db31dull, 0x513bc0390e984a4full }}, {{ 0xc531fdfdc1c8d3d8ull, 0xeb6b19e602b2101aull, 0x808534b6d57be964ull, 0x2edf5c2c568e542eull, 0x60ab6bbe2fc8ff29ull, 0x2c55823a91f2e716ull }}, {{ 0xb3f3ebe991d8466cull, 0x322f02fc1af4a10bull, 0x05340f2456d71df1ull, 0xd4b999bb618f49d1ull, 0xc6b2356dddd9f79bull, 0xbb571649b37d06dfull }}, {{ 0x0787371fb272c036ull, 0xf5d61dd90d8e4a75ull, 0x3408976b64672b6bull, 0x4f400151cf98e22aull, 0xc2f6164aaa83ac16ull, 0x5166dee102e244bdull }}, {{ 0x4b48273cf87b8220ull, 0x9a5d2a7a878ee892ull, 0x0855ea31ec07b237ull, 0x18800d321bf8d5a6ull, 0x9d9cdeeaa924b8dfull, 0x2e04b4ca1cd6af69ull }}, {{ 0xf0d18861b4d31544ull, 0x07a3a8c94b9515b6ull, 0x535b25f3384cf62cull, 0xf50083f517b8587cull, 0x2820b52a9b6f38b6ull, 0xcc2f0fe52062da20ull }}, {{ 0x682f53d1103ed4a7ull, 0x4c6497dcf3d2d925ull, 0x418f7b8033019db8ull, 0x92052792ed3374dbull, 0x914713aa12583725ull, 0xf9d69ef343dc8541ull }}, {{ 0x11d9462aa2744e83ull, 0xfbedeea1863c7b76ull, 0x8f9ad301fe102932ull, 0xb4338bbd44029090ull, 0xacc6c4a4b7722777ull, 0xc2623580a69d348full }}, {{ 0xb27cbdaa588b1122ull, 0xd74b524f3e5cd29cull, 0x9c0c3e13eca19bfdull, 0x0a037564a819a5a5ull, 0xbfc3ae6f2a758aadull, 0x97d6170682240d9cull }}, {{ 0xf8df68a7756eab53ull, 0x68f137186fa03a1eull, 0x187a6cc73e5017eaull, 0x642295ee91007878ull, 0x7da4d057a8976ac2ull, 0xee5ce6411568881full }}, {{ 0xb8ba168a9652b13full, 0x196c26f45c424535ull, 0xf4c83fc86f20ef28ull, 0xe959db51aa04b4b0ull, 0xe870236c95ea2b97ull, 0x4fa0fe8ad615513aull }}, {{ 0x3744e169df3aec72ull, 0xfe39858b9a96b419ull, 0x8fd27dd457495790ull, 0x1d829130a42f0ee9ull, 0x1461623ddb25b3efull, 0x1c49f16c5cd52c4dull }}, {{ 0x28b0ce22b84d3c78ull, 0xee3f377409e308fcull, 0x9e38ea4b68dd6ba9ull, 0x2719abe669d6951full, 0xcbcdd66a8f790757ull, 0x1ae36e3ba053bb02ull }}, {{ 0x96e80d5b33045cacull, 0x4e782a8862de59d9ull, 0x2e3926f218a634a3ull, 0x8700b7002261d33cull, 0xf60a60299aba4967ull, 0x0ce24e5443454e1bull }}, {{ 0xe510858ffe2b9eb6ull, 0x10b1a953dcaf827full, 0xce3b8574f67e0e61ull, 0x4607260157d24059ull, 0x9c67c1a00b46de0bull, 0x80d70f4aa0b50d17ull }}, {{ 0xf2a5379fedb4331full, 0xa6f09d469edb18feull, 0x0e533691a0ec8fcaull, 0xbc477c0d6e368382ull, 0x1c0d904070c4ac70ull, 0x086698ea471282ecull }}, {{ 0x7a742c3f4909ff35ull, 0x856624c2348ef9f5ull, 0x8f4021b0493d9deaull, 0x5acad8864e212314ull, 0x1887a28467aebc67ull, 0x5401f926c6b91d39ull }}, {{ 0xc889ba78da63f80dull, 0x35fd6f960d95c396ull, 0x988150e2dc682b29ull, 0x8bec753f0d4b5ecdull, 0xf54c592c0cd35c09ull, 0x4813bb83c33b243aull }}, {{ 0xd56148b887e7b086ull, 0x1be65bdc87d9a3e3ull, 0xf50d28dc9c11af9cull, 0x773c947684f1b407ull, 0x94fb7bb88041985full, 0xd0c55325a04f6a4dull }}, {{ 0x55ccd7354f0ce53full, 0x16ff969d4e8066e6ull, 0x9283989e18b0dc19ull, 0xa85dcca13171084full, 0xd1d2d535028ff3baull, 0x27b53f78431a2707ull }}, {{ 0x5a0068151680f479ull, 0xe5fbe225110404ffull, 0xb923f62cf6e898faull, 0x93a9fe4bee6a531bull, 0x323c5412199f854aull, 0x8d147ab29f05864eull }}, {{ 0x840410d2e1098cb6ull, 0xfbd6d572aa2831f9ull, 0x3b679dc1a515f9ccull, 0xc4a3eef750273f15ull, 0xf65b48b5003b34e9ull, 0x82cccafa36373f0dull }}, {{ 0x2828a83cca5f7f1eull, 0xd664567aa591f3bfull, 0x520c299072dbc201ull, 0xae6755a9218876d4ull, 0x9f90d71202501121ull, 0x1bffedc61e28768bull }}, {{ 0x9196925fe7baf730ull, 0x5feb60ca77b38577ull, 0x34799fa47c959412ull, 0xd009589b4f54a44bull, 0x3ba866b41720ab50ull, 0x17ff49bd2d94a174ull }}, {{ 0xafe1b7bf0d4da7e5ull, 0xbf31c7e8ad0336abull, 0x0cc03c6cddd7c8b7ull, 0x205d7611194e6af0ull, 0x54940308e746b128ull, 0xeff8e163c7ce4e8aull }}, {{ 0xded12d7685088ef2ull, 0x77f1cf16c22022b4ull, 0x7f825c40aa6dd72dull, 0x43a69caafd102d60ull, 0x4dc81e5908c2eb91ull, 0x5fb8cde5ce0f1167ull }}, {{ 0xb42bc6a132559570ull, 0xaf7216e395415b10ull, 0xfb179a86a84a67c6ull, 0xa4821eade2a1c5c4ull, 0x09d12f7a579d33acull, 0xbd380afa0c96ae09ull }}, {{ 0x09b5c24bf757d664ull, 0xda74e4e3d48d8ea7ull, 0xceec094292e80dc2ull, 0x6d1532cada51b9b1ull, 0x622bdac76c2404beull, 0x64306dc47de2cc5aull }}, {{ 0x611996f7a96e5fe4ull, 0x8890f0e64d879286ull, 0x15385c99bd10899cull, 0x42d3fbec873140f2ull, 0xd5b68bca39682f70ull, 0xe9e449aceadbfb87ull }}, {{ 0xcaffe5ac9e4fbee7ull, 0x55a968ff074bb93full, 0xd4339e0162a5601dull, 0x9c47d73d47ec8974ull, 0x592175e63e11da62ull, 0x22eae0c12c97d34eull }}, {{ 0xedfef8be2f1d7505ull, 0x589e19f648f53c7dull, 0x4a042c0dda75c125ull, 0x1ace6864cf3d5e90ull, 0x7b4e9afe6cb287daull, 0x5d2cc78bbdee410full }}, {{ 0x4bf5b76dd7269234ull, 0x762d039ed9945cebull, 0xe429b88a88998b75ull, 0x0c1013f01865b1a2ull, 0xd1120df03ef94e85ull, 0xa3bfcb756b4e8a9aull }}, {{ 0xf7992a4a6781b60bull, 0x9dc224347fcba130ull, 0xe9a1356955ff7296ull, 0x78a0c760f3f8f05cull, 0x2ab48b6275bd1132ull, 0x657df29631116a0cull }}, {{ 0xabfba6e80b111c6aull, 0x29956a0cfdf44be9ull, 0x204c161d5bfa79e2ull, 0xb647c9c987b963a1ull, 0xab0d71d89962abf8ull, 0xf6eb79ddeaae2479ull }}, {{ 0xb7d485106eab1c21ull, 0x9fd62481eb8af720ull, 0x42f8dd2597c8c2d5ull, 0x1ecde1df4d3de44bull, 0xae867275fddab7b7ull, 0xa532c2ab2acd6cc0ull }}, {{ 0x2e4d32a452af1947ull, 0x3e5d6d13336da747ull, 0x9db8a377edd79c58ull, 0x340ad2b9046aeaf0ull, 0xd140789bea8b2d27ull, 0x73fb9aafac063f86ull }}, {{ 0xcf03fa6b3ad6fcc5ull, 0x6fa642c0024888c7ull, 0x293662af4a6c1b72ull, 0x086c3b3a2c2d2d66ull, 0x2c84b617296fc388ull, 0x87d40adcb83e7b44ull }}, {{ 0x1627c8304c65dfb6ull, 0x5c7e9b8016d557ceull, 0x9c1fdad8e8391278ull, 0x543a5045b9c3c5fdull, 0xbd2f1ce79e5da350ull, 0x4e486c9f3270d0a9ull }}, {{ 0xdd8dd1e2fbfabd19ull, 0x9cf21300e4556e0cull, 0x193e8c79123ab8b3ull, 0x4a4722b941a5bbe8ull, 0x63d7210c2fa86123ull, 0x0ed43e37f86826a1ull }}, {{ 0xa78a32ddd7cb62f8ull, 0x2174be08eb564c80ull, 0xfc717cbab64b3704ull, 0xe6c75b3c90795710ull, 0xe6674a79dc93cb60ull, 0x944a6e2fb411824dull }}, {{ 0x8b65fcaa6df1ddafull, 0x4e8f6c59315efd06ull, 0xdc6edf4b1ef02629ull, 0x03c9905da4bd66a9ull, 0x0008e8c29dc5f1c9ull, 0xcae84ddd08af170bull }}, {{ 0x71fbdea84b72a8d6ull, 0x119a3b7bedb5e241ull, 0x9c54b8ef35617d9dull, 0x25dfa3a86f6602a2ull, 0x0059179a29bb71daull, 0xed130aa256d6e66eull }}, {{ 0x73d6b292f27a9861ull, 0xb00652d7491ad68eull, 0x1b4f395815cee822ull, 0x7abc649459fc1a5aull, 0x037aec05a1527285ull, 0x42be6a576465004cull }}, {{ 0x8662f9bd78c9f3c6ull, 0xe03f3c68db0c6190ull, 0x11183d70da15115aull, 0xcb5bedcb83d90785ull, 0x22cd38384d387936ull, 0x9b702769ebf202f8ull }}, {{ 0x3fddc166b7e385c0ull, 0xc2785c188e7bcfa5ull, 0xaaf2666884d2ad8cull, 0xf19749f3267a4b32ull, 0x5c0432330434bc23ull, 0x12618a2337741db1ull }}, {{ 0x7ea98e032ee3397bull, 0x98b398f590d61c74ull, 0xad780015303ac77full, 0x6fe8e37f80c6effaull, 0x9829f5fe2a0f5967ull, 0xb7cf65602a8928edull }}, {{ 0xf29f8c1fd4e03ecfull, 0xf703f997a85d1c8cull, 0xc6b000d3e24bcafbull, 0x5f18e2fb07c55fcaull, 0xf1a39beda4997e0aull, 0x2e19f5c1a95b9947ull }}, {{ 0x7a3b793e50c2741aull, 0xa627bfec93a31d81ull, 0xc2e00846d6f5edd7ull, 0xb6f8ddce4db5bdebull, 0x706417486dfeec67ull, 0xcd0399909d93fccfull }}, {{ 0xc652bc6f279888ffull, 0x7d8d7f3dc45f270eull, 0x9cc052c4659b4a6cull, 0x25b8aa0f09196b35ull, 0x63e8e8d44bf53c0dull, 0x0223ffa627c7e01aull }}, {{ 0xbf3b5c578bf559f9ull, 0xe786f869abb78693ull, 0x1f833babf810e83cull, 0x7936a4965afe3018ull, 0xe719184af7945883ull, 0x1567fc7d8dcec107ull }}, {{ 0x78519b6b779583baull, 0x0b45b420b52b41c5ull, 0x3b2054b7b0a91261ull, 0xbc226ddf8dede0f1ull, 0x06faf2edabcb7522ull, 0xd60fdce78a138a4full }}, {{ 0xb3301232abd72543ull, 0x70b9094713b091b6ull, 0x4f434f2ce69ab7caull, 0x59584abb8b4ac96cull, 0x45cd7d48b5f2935bull, 0x5c9ea10b64c36716ull }}, {{ 0xffe0b5fab667749eull, 0x673a5cc6c4e5b122ull, 0x18a117c1020b2de8ull, 0x7d72eb5370ebde3bull, 0xba06e4d71b79c191ull, 0x9e324a71efa206deull }}, {{ 0xfec71bcb200a8e2cull, 0x08479fc3b0f8eb5dull, 0xf64aed8a146fcb14ull, 0xe67d31426936ae4eull, 0x4444f06712c18faeull, 0x2df6e8735c5444b3ull }}, {{ 0xf3c715ef40698dbaull, 0x52cc3da4e9b931abull, 0x9eed4764cc5deec8ull, 0x00e3ec981c22cf15ull, 0xaab16406bb8f9cd5ull, 0xcba514819b4aaf00ull }}, {{ 0x85c6db58841f8943ull, 0x3bfa6871213bf0b7ull, 0x3544c9effbab53d3ull, 0x08e73df1195c16d8ull, 0xaaede843539c2052ull, 0xf472cd1010ead606ull }}, {{ 0x39c49175293b5c9eull, 0x57c8146b4c57672bull, 0x14afe35fd4b14640ull, 0x59086b6afd98e472ull, 0xad4b12a144194334ull, 0x8c7c02a0a92c5c42ull }}, {{ 0x41adae939c519e2bull, 0x6dd0cc30fb6a07b0ull, 0xcedee1be4eecbe83ull, 0x7a54322de7f8ec74ull, 0xc4eeba4ca8fca00bull, 0x7cd81a469bbb9a9aull }}, {{ 0x90c8d1c41b302dafull, 0x4a27f9e9d2244ce2ull, 0x14b4d16f153f7122ull, 0xc749f5cb0fb93c90ull, 0xb15346fe99de4072ull, 0xe07106c215540a0bull }}, {{ 0xa7d831a90fe1c8d8ull, 0xe58fc322356b00d9ull, 0xcf102e56d47a6b56ull, 0xc8e399ee9d3c5da0ull, 0xed40c5f202ae847bull, 0xc46a4394d5486474ull }}, {{ 0x8e71f09a9ed1d871ull, 0xf79d9f56162e0880ull, 0x16a1cf644cc83164ull, 0xd8e40352245ba848ull, 0x4487bb741ad12cd5ull, 0xac26a3d054d3ec91ull }}, {{ 0x9073660a34327469ull, 0xac28395cddcc5505ull, 0xe25219eaffd1edf1ull, 0x78e821356b9492d0ull, 0xad4d52890c2bc05aull, 0xb982662350473dacull }}, {{ 0xa481fc6609f88c1dull, 0xb9923da0a9fb5237ull, 0xd735032dfe334b70ull, 0xb9114c1633cdbc28ull, 0xc505395a79b58388ull, 0x3f17fd6122c868beull }}, {{ 0x6d13dbfc63b5791full, 0x3fb66846a3d1362cull, 0x68121fcbee00f267ull, 0x3aacf8de06095998ull, 0xb2343d88c1172357ull, 0x76efe5cb5bd41773ull }}, {{ 0x42c697dbe516bb39ull, 0x7d2012c2662c1dbcull, 0x10b53df74c097808ull, 0x4ac1b8ac3c5d7ff4ull, 0xf60a67578ae76168ull, 0xa55ef9f19648ea84ull }}, {{ 0x9bc1ee96f2e3503aull, 0xe340bb97fdb9295aull, 0xa7146ba8f85eb054ull, 0xeb9136ba5ba6ff88ull, 0x9c68096b6d09ce12ull, 0x75b5c36fded92931ull }}, {{ 0x159351e57ce12247ull, 0xe08753efe93b9d8aull, 0x86cc3499b3b2e350ull, 0x33ac23479485fb56ull, 0x1c105e3242620cbdull, 0x9919a25eb47b9bf0ull }}, {{ 0xd7c132f6e0cb56c6ull, 0xc549475f1c542764ull, 0x43fa0e0104fce128ull, 0x04b960cbcd3bd161ull, 0x18a3adf697d47f64ull, 0xfb0057b30cd41761ull }}, {{ 0x6d8bfda4c7f163bfull, 0xb4dcc9b71b4989f0ull, 0xa7c48c0a31e0cb97ull, 0x2f3dc7f604562dccull, 0xf664cba1ee4cf9e8ull, 0xce036cfe8048e9caull }}, {{ 0x4777e86fcf6de578ull, 0x109fe12710df6364ull, 0x8dad7865f2c7f3edull, 0xd869cf9c2b5dc9feull, 0x9feff4534f01c311ull, 0x0c2241f102d921edull }}, {{ 0xcaaf145e1a4af6aeull, 0xa63ecb86a8b9e1eaull, 0x88c6b3fb7bcf8742ull, 0x74221c19b1a9e3f1ull, 0x3f5f8b4116119eb2ull, 0x7956936a1c7b5348ull }}, {{ 0xead6cbad06eda2caull, 0x7e73f3429742d32bull, 0x57c307d2d61b489aull, 0x89551900f0a2e76full, 0x79bb708adcb032f8ull, 0xbd61c2251cd140d2ull }}, {{ 0x2c63f4c245485be9ull, 0xf0878099e89c3fb7ull, 0x6d9e4e3c5d10d608ull, 0x5d52fa09665d0a59ull, 0xc152656c9ee1fdb5ull, 0x65d19573202c8838ull }}, {{ 0xbbe78f96b4d39716ull, 0x654b0603161a7d27ull, 0x482f0e5ba2a85c59ull, 0xa53dc45dffa2677eull, 0x8d37f63e34d3e915ull, 0xfa2fd67f41bd5237ull }}, {{ 0x570b9be31043e6d9ull, 0xf4ee3c1edd08e38dull, 0xd1d68f945a939b7dull, 0x7469ababfc580aeeull, 0x842f9e6e10471ad8ull, 0xc5de60f89165362bull }}, {{ 0x667416dea2a7047bull, 0x914e5934a258e385ull, 0x32619bcb89c412ebull, 0x8c20b4b7db706d54ull, 0x29dc304ca2c70c74ull, 0xbaafc9b5adf41db3ull }}, {{ 0x0088e4b25a862cd0ull, 0xad0f7c0e5778e336ull, 0xf7d015f361a8bd33ull, 0x79470f2e92644549ull, 0xa299e2fe5bc67c8dull, 0x4adde118cb8928ffull }}, {{ 0x0558eef7893dc023ull, 0xc29ad88f6ab8e01cull, 0xae20db81d0976404ull, 0xbcc697d1b7eab4e3ull, 0x5a02ddef95c0dd86ull, 0xecaacaf7f35b99fcull }}, {{ 0x357955ab5c698162ull, 0x9a0c759a2b38c118ull, 0xcd48931225e9e82full, 0x5fc1ee312f2b10e4ull, 0x841cab5bd988a743ull, 0x3eabedaf819403dbull }}, {{ 0x16bd58b19c1f0dd0ull, 0x047c9805b0378af2ull, 0x04d5beb57b2311dcull, 0xbd934debd7aea8f0ull, 0x291eb1967f5688a1ull, 0x72b748db0fc82693ull }}, {{ 0xe36576f019368a21ull, 0x2cddf038e22b6d74ull, 0x30597316cf5eb298ull, 0x67c10b366cd29960ull, 0x9b32efe0f9615651ull, 0x7b28d88e9dd181bfull }}, {{ 0xe1f6a560fc21654bull, 0xc0ab6238d5b24690ull, 0xe37e7ee419b2f9f1ull, 0x0d8a70204039fdc1ull, 0x0ffd5ec9bdcd5f2eull, 0xcf9875922a2f117cull }}, {{ 0xd3a275c9d94df4eeull, 0x86b1d63858f6c1a8ull, 0xe2f0f4e900fdc371ull, 0x876861428243e992ull, 0x9fe5b3e16a05b7ccull, 0x1bf497b5a5d6aed8ull }}, {{ 0x445899e27d0b914dull, 0x42f25e3379a39098ull, 0xdd69911a09e9a26full, 0x4a13cc9916a71fbcull, 0x3ef906ce24392dfdull, 0x178ded187a62d476ull }}, {{ 0xab7602d8e273ad06ull, 0x9d77ae02c063a5f2ull, 0xa61fab0463205858ull, 0xe4c5fdfae2873d60ull, 0x75ba440d6a3bcbe4ull, 0xeb8b42f4c7dc4c9eull }}, {{ 0xb29c1c78d884c241ull, 0x26accc1b83e47b7aull, 0x7d3cae2bdf437376ull, 0xefbbebccd94865c6ull, 0x9946a8862655f6f0ull, 0x33709d8fce9afe30ull }}, {{ 0xfa191cb8752f968aull, 0x82bff91326ecd2caull, 0xe45ecdb6b8a2829dull, 0x5d5736007cd3f9c0ull, 0xfcc2953d7f5ba569ull, 0x0266279e120dede5ull }}, {{ 0xc4fb1f3493dbe162ull, 0x1b7fbabf85403bedull, 0xebb4092336591a27ull, 0xa5681c04e047c188ull, 0xdf99d466f994761dull, 0x17fd8c2cb48b4afbull }}, {{ 0xb1cf380dc696cdd2ull, 0x12fd4b7b34825749ull, 0x35085b601f7b0587ull, 0x76111830c2cd8f59ull, 0xbc024c05bfcc9d28ull, 0xefe779bf0d70edd6ull }}, {{ 0xf2183089c1e40a2full, 0xbde4f2d00d1768e0ull, 0x125391c13ace3746ull, 0x9caaf1e79c07997cull, 0x5816f8397dfe2394ull, 0x5f0ac17686694a63ull }}, {{ 0x74f1e56192e865daull, 0x6af17c2082ea18c9ull, 0xb743b18c4c0e28c3ull, 0x1ead730c184bfed8ull, 0x70e5b23eebed63ceull, 0xb66b8ea1401ce7e1ull }}, {{ 0x9172f5cfbd13fa81ull, 0x2d6ed9451d24f7deull, 0x28a4ef7af88d97a2ull, 0x32c67e78f2f7f477ull, 0x68f8f6753745e60dull, 0x2033924c81210eceull }}, {{ 0xae7d9a1d62c7c90eull, 0xc6547cb32371aeb1ull, 0x96715acdb587ec55ull, 0xfbc0f0b97daf8ca7ull, 0x19b9a09428bafc83ull, 0x4203b6fd0b4a9410ull }}, {{ 0xd0e80525dbcdda89ull, 0xbf4cdeff6270d2f0ull, 0xe06d8c09174f3b59ull, 0xd589673ee8db7e8bull, 0x014045c9974ddd27ull, 0x942525e270e9c8a1ull }}, {{ 0x2910337a960a8958ull, 0x7900b5f9d8683d68ull, 0xc447785ae9185181ull, 0x575e08751892f176ull, 0x0c82b9dfe90aa38eull, 0xc9737ad86921d64aull }}, {{ 0x9aa202c9dc695d6eull, 0xba071bc274126611ull, 0xaacab38d1af32f0eull, 0x69ac5492f5bd6ea3ull, 0x7d1b42bf1a6a638full, 0xde82cc741b525ee4ull }}, {{ 0x0a541be29c1da64cull, 0x4447159888b7fcb0ull, 0xabeb03830d7fd693ull, 0x20bb4dbd99665264ull, 0xe3109b770827e39aull, 0xb11bfc891137b4ecull }}, {{ 0x674916da19287efbull, 0xaac6d7f5572fdee0ull, 0xb72e231e86fe61c0ull, 0x47510967fdff37eeull, 0xdea612a6518ee405ull, 0xeb17dd5aac2d1140ull }}, {{ 0x08dae484fb94f5ceull, 0xabc46f9567deb4c4ull, 0x27cd5f3145efd186ull, 0xc92a5e0febf82f53ull, 0xb27cba7f2f94e834ull, 0x2eeea58ab9c2ac88ull }}, {{ 0x588ced31d3d19a0dull, 0xb5ac5bd60eb30fa8ull, 0x8e05b7ecbb5e2f42ull, 0xdba7ac9f37b1d93full, 0xf8df48f7dbd1120full, 0xd552776b419abd56ull }}, {{ 0x758143f246300486ull, 0x18bb965c92fe9c93ull, 0x8c392f3f51add89bull, 0x948cbe382cf27c7bull, 0xb8b8d9ae962ab49eull, 0x5538aa30900b6565ull }}, {{ 0x970ca776bde02d3eull, 0xf753df9dbdf21dc2ull, 0x7a3bd87930ca760eull, 0xcd7f6e31c178dcd3ull, 0x373880d1ddab0e31ull, 0x5436a5e5a071f5f9ull }}, {{ 0xe67e8aa36ac1c46full, 0xa946bc296b752999ull, 0xc65674bbe7e89c95ull, 0x06fa4df18eb8a042ull, 0x28350832a8ae8df2ull, 0x4a227af844739bbcull }}, {{ 0x00f16a622b91ac52ull, 0x9cc3599e3293a003ull, 0xbf608f570f161dd8ull, 0x45c70b6f9336429bull, 0x921251fa96d18b74ull, 0xe558cdb2ac841559ull }}, {{ 0x096e27d5b3b0bb36ull, 0x1fa1802df9c4401eull, 0x79c5996696dd2a76ull, 0xb9c6725bc01e9a15ull, 0xb4b733c9e42f728aull, 0xf57808fabd28d57full }}, {{ 0x5e4d8e5904e7501bull, 0x3c4f01cbc1aa812cull, 0xc1b7fe01e4a3a89dull, 0x41c07795813204d6ull, 0x0f2805e2e9da796bull, 0x96b059cb639856fdull }}, {{ 0xaf078f7a3109210cull, 0x5b1611f590a90bbbull, 0x912fec12ee649624ull, 0x9184abd70bf43063ull, 0x97903add2288be30ull, 0xe2e381f1e3f365e2ull }}, {{ 0xd64b9ac5ea5b4a74ull, 0x8edcb397a69a7554ull, 0xabdf38bd4feddd6bull, 0xaf2eb6667789e3e3ull, 0xeba24ca359576de5ull, 0xdce31372e781fad9ull }}, {{ 0x5ef40bbb2790e885ull, 0x949f03ec82089550ull, 0xb6b837651f4aa633ull, 0xd7d32000ab62e6e4ull, 0x3456fe617d6a4af8ull, 0xa0dec27d0b13cc83ull }}, {{ 0xb588754f8ba91536ull, 0xce36273d1455d523ull, 0x233229f338ea7e03ull, 0x6e3f4006b1dd04efull, 0x0b65efcee626edb8ull, 0x48b398e26ec5fd20ull }}, {{ 0x1754951b749ad41bull, 0x0e1d8862cb5a5365ull, 0x5ff5a3803928ec26ull, 0x4e788042f2a23157ull, 0x71fb5e14fd854934ull, 0xd703f8d853bbe340ull }}, {{ 0xe94dd3128e0c490cull, 0x8d2753dbf18741f2ull, 0xbf9863023b99397cull, 0x10b5029d7a55ed69ull, 0x73d1acd1e734dc0bull, 0x6627b8734556e084ull }}, {{ 0x1d0a3eb98c7ada7dull, 0x838946976f48937dull, 0x7bf3de1653fc3eddull, 0xa7121a26c75b4621ull, 0x8630c0330810986eull, 0xfd8d3480b564c52cull }}, {{ 0x2266733f7ccc88e2ull, 0x235cc1ea58d5c2e3ull, 0xd786acdf47da74a7ull, 0x86b50583c990bd4eull, 0x3de781fe50a5f452ull, 0xe7840d0715efb3bdull }}, {{ 0x5800807adffd58d3ull, 0x619f932778599cdfull, 0x6b42c0b8ce888e87ull, 0x43123725dfa76514ull, 0x6b0b13ef267b8b39ull, 0x0b288246db5d0564ull }}, {{ 0x700504ccbfe57839ull, 0xd03bbf8ab38020b9ull, 0x309b873811559149ull, 0x9eb6277abc89f2ccull, 0x2e6ec75780d3703cull, 0x6f9516c491a235ecull }}, {{ 0x60322fff7ef6b23cull, 0x22557b6b0301473eull, 0xe6134830ad57ace2ull, 0x331d8acb5d637bf9ull, 0xd053c96b0842625eull, 0x5bd2e3adb0561b39ull }}, {{ 0xc1f5dffaf5a2f655ull, 0x5756d22e1e0cc86full, 0xfcc0d1e6c56cc0d5ull, 0xff276bf1a5e2d7c2ull, 0x2345de2e5297d7adull, 0x963ce4c8e35d1042ull }}, {{ 0x939abfcd985d9f4eull, 0x696435cd2c7fd45dull, 0xdf883303b63f8855ull, 0xf78a37707adc6d9dull, 0x60baadcf39ee6ccbull, 0xde60efd8e1a2a295ull }}, {{ 0xc40b7e07f3a83909ull, 0x1dea1a03bcfe4ba7ull, 0xbb51fe251e7b5356ull, 0xab662a64cc9c482aull, 0xc74aca1843503ff7ull, 0xafc95e78d05a59d5ull }}, {{ 0xa872ec4f84923a5full, 0x2b25042561eef48dull, 0x5133ed7330d1415dull, 0xb1fda7effe1ad1abull, 0xc8ebe4f2a1227facull, 0xddddb0b823878259ull }}, {{ 0x947d3b1b2db647b3ull, 0xaf722975d3558d88ull, 0x2c07467fe82c8da3ull, 0xf3e88f5fed0c30b1ull, 0xd936f17a4b58fcbeull, 0xaaa8e731634b1781ull }}, {{ 0xcce44f0fc91ecd01ull, 0xda759e9a41578755ull, 0xb848c0ff11bd8864ull, 0x871599bf4279e6ebull, 0x7c256ec6f179df75ull, 0xaa9907ede0eeeb12ull }}, {{ 0x00eb169ddb340207ull, 0x889832068d6b495aull, 0x32d789f6b16753f0ull, 0x46d8017898c30535ull, 0xd97653c56ec2ba97ull, 0xa9fa4f4ac9552eb8ull }}, {{ 0x092ee22a90081441ull, 0x55f1f4418630dd84ull, 0xfc6b63a2ee094765ull, 0xc4700eb5f79e3413ull, 0x7e9f45b6539b49e8ull, 0xa3c718ebdd53d338ull }}, {{ 0x5bd4d5a9a050ca8full, 0x5b738a8f3de8a728ull, 0xdc31e45d4c5cc9f5ull, 0xac60931bac2e08c7ull, 0xf238b91f4410e317ull, 0x65c6f936a5464034ull }}, {{ 0x965058a04327e992ull, 0x928369986b168793ull, 0x99f2eba4fb9fe395ull, 0xbbc5bf14b9cc57ceull, 0x76373b38a8a8deecull, 0xf9c5bc2274be8211ull }}, {{ 0xdf2376429f8f1fb8ull, 0xb9221ff42ee14bc3ull, 0x037d3471d43ee3d7ull, 0x55b976cf41fb6e12ull, 0x9e2850369698b53full, 0xc1b959588f7114aeull }}, {{ 0xb7629e9a3b973d2full, 0x3b553f89d4ccf5a6ull, 0x22e40c724a74e66dull, 0x593ea41893d24cb4ull, 0x2d932221e1f71479ull, 0x913d7d759a6aced2ull }}, {{ 0x29da320653e863d9ull, 0x51547b6250019883ull, 0x5ce87c76e8910044ull, 0x7c7268f5c636ff09ull, 0xc7bf5552d3a6ccbdull, 0xac66e698082c1435ull }}, {{ 0xa285f43f4713e679ull, 0x2d4cd1d7200ff51full, 0xa114dca515aa02abull, 0xdc781999be25f65dull, 0xcd79553c4483ff66ull, 0xbc0501f051b8ca19ull }}, {{ 0x593b8a78c6c700b8ull, 0xc5003267409f933cull, 0x4ad09e72d8a41aafull, 0x9cb100016d7b9fa8ull, 0x06bd545aad27fa04ull, 0x583213633137e502ull }}, {{ 0x7c5368b7c3c60731ull, 0xb201f808863bc05bull, 0xec26307c76690addull, 0x1eea000e46d43c92ull, 0x43654b8ac38fc42eull, 0x71f4c1dfec2ef214ull }}, {{ 0xdb42172da5bc47eaull, 0xf413b0553e558392ull, 0x397de4dca01a6ca8ull, 0x3524008ec44a5dbdull, 0xa1f4f36ba39da9cdull, 0x738f92bf39d574caull }}, {{ 0x9094e7c8795acf25ull, 0x88c4e3546f5723bcull, 0x3eeaf09e41083e99ull, 0x13680593aae7a964ull, 0x539182346428a204ull, 0x839bbb7842568feaull }}, {{ 0xa5d10dd4bd8c1775ull, 0x57b0e14c5967655dull, 0x752d662e8a5271ffull, 0xc21037c4ad0c9deaull, 0x43af160be9965428ull, 0x241552b297619f27ull }}, {{ 0x7a2a8a4f6778ea91ull, 0x6ce8ccfb7e09f5a8ull, 0x93c5fdd1673873f9ull, 0x94a22daec27e2b28ull, 0xa4d6dc771fdf4997ull, 0x68d53af9e9d03788ull }}, {{ 0xc5a9671a0ab929adull, 0x411801d2ec639894ull, 0xc5bbea2e083487beull, 0xce55c8d398edaf95ull, 0x70649ca73eb8dfebull, 0x18544dc322222b56ull }}, {{ 0xb89e07046b3ba0c3ull, 0x8af0123d3be3f5cfull, 0xb95725cc520d4d6eull, 0x0f59d843f948dbd9ull, 0x63ee1e887338bf36ull, 0xf34b099f5555b160ull }}, {{ 0x362c462c305447a0ull, 0x6d60b66456e79a1dull, 0x3d6779fb34850651ull, 0x998272a7bcd89681ull, 0xe74d31548037781cull, 0x80ee60395558edc3ull }}, {{ 0x1dbabdb9e34acc42ull, 0x45c71feb650c0524ull, 0x660ac3d00d323f2eull, 0xff187a8d6075e10cull, 0x0903ed4d022ab11dull, 0x094fc23d557949a7ull }}, {{ 0x294b6942e0ebfa97ull, 0xb9c73f31f2783369ull, 0xfc6ba62083f677ceull, 0xf6f4c985c49aca7bull, 0x5a27450215aaeb2bull, 0x5d1d966556bce086ull }}, {{ 0x9cf21c9cc937c9e8ull, 0x41c877f378b2021bull, 0xdc347d4527a0ae13ull, 0xa58fdf39ae0be8d7ull, 0x8588b214d8ad2fb7ull, 0xa327dff56360c53full }}, {{ 0x21751e1fdc2de30dull, 0x91d4af82b6f41514ull, 0x9a0ce4b38c46ccc0ull, 0x779eb840cc77186eull, 0x3756f4d076c3dd2cull, 0x5f8ebf95e1c7b47bull }}, {{ 0x4e932d3e99cade7eull, 0xb24edb1b2588d2c9ull, 0x0480ef037ac3ff85ull, 0xac333287fca6f452ull, 0x29659024a3a6a3bcull, 0xbb937bdad1cd0cd0ull }}, {{ 0x11bfc47201ecb0eaull, 0xf7148f0f77583bddull, 0x2d095622cba7fb38ull, 0xb9fff94fde858b34ull, 0x9df7a16e6482655eull, 0x53c2d68c32028021ull }}, {{ 0xb17dac74133ee920ull, 0xa6cd969aa97256a2ull, 0xc25d5d5bf48fd039ull, 0x43ffbd1eb1377009ull, 0x2bac4e4fed17f5b3ull, 0x459c6179f4190150ull }}, {{ 0xeee8bc88c0751b3cull, 0x8407e20a9e77625aull, 0x97a5a5978d9e2240ull, 0xa7fd6332ec2a6061ull, 0xb4bb0f1f42ef9900ull, 0xb81bcec388fa0d21ull }}, {{ 0x55175d578493105aull, 0x284ed46a30a9d78dull, 0xec7877eb882d5685ull, 0x8fe5dffd39a7c3cfull, 0x0f4e97389d5bfa06ull, 0x311613a359c48351ull }}, {{ 0x52e9a56b2dbea385ull, 0x93144c25e6a26b85ull, 0x3cb4af3351c56133ull, 0x9efabfe4408da61full, 0x9911e8362597c441ull, 0xeadcc46181ad212aull }}, {{ 0x3d20762fc972632full, 0xbecaf97b02583335ull, 0x5f0ed80131b5cc03ull, 0x35cb7eea85887d38ull, 0xfab3121d77edaa90ull, 0x2c9fabcf10c34ba9ull }}, {{ 0x63449dddde77dfd9ull, 0x73edbece17720014ull, 0xb694700bf119f825ull, 0x19f2f5293754e433ull, 0xcafeb526af48a9a2ull, 0xbe3cb616a7a0f4a3ull }}, {{ 0xe0ae2aaab0aebe7bull, 0x8749740cea7400cbull, 0x21cc60776b03b176ull, 0x037d939c2950ea05ull, 0xedf31382d8d6a055ull, 0x6e5f1ce28c498e65ull }}, {{ 0xc6cdaaaae6d370cdull, 0x48de8881288807f6ull, 0x51fbc4aa2e24eea1ull, 0x22e7c4199d292433ull, 0x4b7ec31c78624352ull, 0x4fb720d97adf8ffbull }}, {{ 0xc408aaad044267feull, 0xd8b1550b95504fa3ull, 0x33d5aea5cd71524cull, 0x5d0da900239b6a01ull, 0xf2f39f1cb3d6a135ull, 0x1d27487eccbb9fd0ull }}, {{ 0xa856aac22a980febull, 0x76ed5273d5231c65ull, 0x0658d27a066d3700ull, 0xa2889a016412240cull, 0x7d84371f06624c15ull, 0x2388d4f3ff543e29ull }}, {{ 0x9362ab95a9f09f31ull, 0xa5453886535f1bf8ull, 0x3f7838c440442604ull, 0x5956040de8b56878ull, 0xe72a27363fd6f8d8ull, 0x63585187f94a6d9eull }}, {{ 0xc1dab3d8a36637ebull, 0x74b4353f41b717b5ull, 0x7ab237aa82a97c2eull, 0x7d5c288b171614b2ull, 0x07a5881e7e65b873ull, 0xe1732f4fbce84835ull }}, {{ 0x928b067661fe2f33ull, 0x8f0a14789126ed19ull, 0xcaf62ca91a9ed9d0ull, 0xe599956ee6dccef8ull, 0x4c775130eff93482ull, 0xce7fd91d6112d212ull }}, {{ 0xb96e409fd3edd7fbull, 0x9664ccb5ab8542ffull, 0xed9dbe9b0a348225ull, 0xf7ffd65504a015b7ull, 0xfca92be95fbc0d1cull, 0x10fe7b25cabc34b6ull }}, {{ 0x3e4e863e474a6fcbull, 0xdfefff18b3349dfdull, 0x4829720e660d1577ull, 0xaffe5f522e40d92full, 0xde9bb71dbd588321ull, 0xa9f0cf79eb5a0f25ull }}, {{ 0x6f113e6ec8e85debull, 0xbf5ff6f7000e2be4ull, 0xd19e748ffc82d6aeull, 0xdfefb935ce887bd8ull, 0xb215272965751f50ull, 0xa3681ac33184977aull }}, {{ 0x56ac7053d913ab32ull, 0x79bfa5a6008db6ecull, 0x30308d9fdd1c62d3ull, 0xbf5d3c1a1154d678ull, 0xf4d3879df6933928ull, 0x62110b9fef2deacaull }}, {{ 0x62bc63467ac4aff7ull, 0xc17c787c0589253bull, 0xe1e5883ea31bdc42ull, 0x79a45904ad5060b1ull, 0x90434c2ba1c03b97ull, 0xd4aa743f57cb2bedull }}, {{ 0xdb5be0c0cbaedfa5ull, 0x8edcb4d8375b7451ull, 0xd2f752725f169a9bull, 0xc06b7a2ec523c6f2ull, 0xa2a0f9b4518253eaull, 0x4ea88a796defb747ull }}, {{ 0x9196c787f4d4bc72ull, 0x949f107229928b32ull, 0x3da93877b6e20a13ull, 0x8432c5d3b365c57cull, 0x5a49c10b2f17472bull, 0x129568be4b5d28ccull }}, {{ 0xafe3cb4f904f5c70ull, 0xce36a4759fb96ff9ull, 0x689c34ad24d464c3ull, 0x29fbba4501f9b6daull, 0x86e18a6fd6e8c7b3ull, 0xb9d6176ef1a397fbull }}, {{ 0xdee5f11ba3199c62ull, 0x0e226c983d3e5fc0ull, 0x161a0ec3704befa6ull, 0xa3d546b213c12488ull, 0x44cf685e6517ccffull, 0x425cea557063efd3ull }}, {{ 0xb4fb6b145f001bd6ull, 0x8d583df2646fbd88ull, 0xdd0493a262f75c7cull, 0x6654c2f4c58b6d50ull, 0xb01a13aff2ee01fcull, 0x97a1275663e75e40ull }}, {{ 0x11d22ecbb6011659ull, 0x85726b77ec5d6757ull, 0xa22dc457dda99cddull, 0xff4f9d8fb7724528ull, 0xe104c4df7d4c13dbull, 0xec4b895fe709ae86ull }}, {{ 0xb235d3f51c0adf77ull, 0x367832af3ba60966ull, 0x55c9ab6ea8a020a7ull, 0xf91c279d2a76b396ull, 0xca2fb0bae4f8c697ull, 0x3af35dbf0660d144ull }}, {{ 0xf61a4793186cbaa4ull, 0x20b1fad8547c5e02ull, 0x59e0b25296414688ull, 0xbb198c23a8a303dfull, 0xe5dce74cf1b7c1efull, 0x4d81a9763fc82cafull }}, {{ 0x9d06cbbef43f4a67ull, 0x46f3cc734cdbac1dull, 0x82c6f739de8cc151ull, 0x4eff7964965e26b9ull, 0xfaa10901712d935dull, 0x07109e9e7dd1bedeull }}, {{ 0x2243f5758a78e809ull, 0xc585fc810094b928ull, 0x1bc5a842b17f8d2cull, 0x15fabdeddfad833full, 0xca4a5a0e6bc7c1a5ull, 0x46a63230ea3174b5ull }}, {{ 0x56a7969768b91058ull, 0xb73bdd0a05cf3b91ull, 0x15b8929aeefb83bfull, 0xdbcb6b4abcc72077ull, 0xe6e7849035cd9072ull, 0xc27df5e925ee8f19ull }}, {{ 0x628be1ea173aa374ull, 0x2856a2643a1853adull, 0xd935ba0d55d3257dull, 0x95f230eb5fc744a6ull, 0x050b2da21a07a47cull, 0x98eb9b1b7b519703ull }}, {{ 0xd976d324e84a6287ull, 0x936257ea44f344c5ull, 0x7c1944855a3f76e3ull, 0xdb75e931bdc8ae84ull, 0x326fc855044c6cddull, 0xf9340f12d12fe61eull }}, {{ 0x7ea43f7112e7d949ull, 0xc1d76f26b180afbaull, 0xd8fcad35867aa4e3ull, 0x929b1bf169d6d12cull, 0xf85dd3522afc40aaull, 0xbc0896bc2bdefd2dull }}, {{ 0xf26a7a6abd0e7cdeull, 0x926a5782ef06dd48ull, 0x79dec41740ca70e5ull, 0xba0f176e22642bc0ull, 0xb3aa4135adda86a9ull, 0x5855e359b6b5e3cbull }}, {{ 0x7828c82b6290e0acull, 0xb8276b1d5644a4d9ull, 0xc2b3a8e887e868f7ull, 0x4496ea4d57e9b584ull, 0x04a68c18ca8942a1ull, 0x735ae181231ae5f5ull }}, {{ 0xb197d1b1d9a8c6b6ull, 0x318a2f255eae707eull, 0x9b0499154f1419adull, 0xade527056f21172full, 0x2e8178f7e95c9a4cull, 0x818ccf0b5f0cfb92ull }}, {{ 0xefee30f28097c31dull, 0xef65d775b2d064f2ull, 0x0e2dfad516c900c3ull, 0xcaf38636574ae7dcull, 0xd10eb9af1d9e06feull, 0x0f801671b681d3b5ull }}, {{ 0x5f4de97905ed9f22ull, 0x59fa6a98fc23f17dull, 0x8dcbcc52e3da07a7ull, 0xed833e1f68ed0e98ull, 0x2a9340d7282c45f3ull, 0x9b00e0712112451aull }}, {{ 0xb90b1eba3b483753ull, 0x83c829f9d9676ee5ull, 0x89f5fb3ce6844c89ull, 0x47206d3a194291f5ull, 0xa9c0886791babb87ull, 0x0e08c46b4ab6b305ull }}, {{ 0x3a6f334650d2293aull, 0x25d1a3c27e0a54f9ull, 0x639bd061012afd5full, 0xc7444444fc99b397ull, 0xa185540bb14b5348ull, 0x8c57ac30eb22fe38ull }}, {{ 0x485800bf28359c44ull, 0x7a306598ec6751bcull, 0xe41623ca0bade5b7ull, 0xc8aaaab1de0103e9ull, 0x4f354874ecf140d7ull, 0x7b6cb9e92f5dee36ull }}, {{ 0xd370077792181aa9ull, 0xc5e3f7f93c09315aull, 0xe8dd65e474caf92aull, 0xd6aaaaf2ac0a2722ull, 0x1814d491416c886dull, 0xd23f431bd9ab4e1full }}, {{ 0x42604aabb4f10a99ull, 0xbae7afbc585bed8cull, 0x18a5faec8fedbbabull, 0x62aaad7ab865875dull, 0xf0d04dac8e3d544aull, 0x36789f1680b10d36ull }}, {{ 0x97c2eab5116a69f5ull, 0x4d0cdd5b7397477aull, 0xf67bcd3d9f4954b5ull, 0xdaaac6cb33f749a2ull, 0x682308bd8e654ae7ull, 0x20b636e106ea8425ull }}, {{ 0xed9d2b12ae282395ull, 0x0280a59283e8cac9ull, 0xa0d6046838dd4f15ull, 0x8aabc3f007a8e05dull, 0x115e57678ff4ed0eull, 0x471e24ca45292976ull }}, {{ 0x4823aebacd9163d6ull, 0x190677b92717ebe3ull, 0x485c2c1238a516d2ull, 0x6ab5a7604c98c3a8ull, 0xadaf6a0b9f914291ull, 0xc72d6fe6b39b9e9cull }}, {{ 0xd164d34c07ade65dull, 0xfa40ad3b86ef36e0ull, 0xd399b8b63672e434ull, 0x2b1889c2fdf7a492ull, 0xc8da24743bac99aeull, 0xc7c65f030414321eull }}, {{ 0x2df040f84ccaffa3ull, 0xc686c453455824c8ull, 0x4401371e207cea11ull, 0xaef5619debac6dbcull, 0xd8856c8a54be00cdull, 0xcdbfb61e28c9f533ull }}, {{ 0xcb6289b2ffedfc5cull, 0xc143ab40b5716fd1ull, 0xa80c272d44e124b1ull, 0xd595d02b34bc495aull, 0x75363d674f6c0808ull, 0x097d1d2d97e39406ull }}, {{ 0xf1d960fdff4bdb98ull, 0x8ca4b087166e5e31ull, 0x907987c4b0cb6ef1ull, 0x57da21b00f5add8aull, 0x941e66091a385058ull, 0x5ee323c7eee3c840ull }}, {{ 0x727dc9ebf8f693f3ull, 0x7e6ee546e04fadf3ull, 0xa4bf4daee7f2556full, 0x6e8550e0998ca769ull, 0xc92ffc5b06332373ull, 0xb4df65cf54e5d285ull }}, {{ 0x78e9e337b9a1c77bull, 0xf054f4c4c31ccb82ull, 0x6f7908d50f77565aull, 0x513528c5ff7e8a20ull, 0xdbdfdb8e3dff6282ull, 0x10b9fa1950fa3939ull }}, {{ 0xb922e02d4051cad3ull, 0x63518faf9f1ff318ull, 0x5aba58529aa95f8dull, 0x2c1397bbfaf16544ull, 0x96be938e6bf9d917ull, 0xa743c4fd29c63c42ull }}, {{ 0x3b5cc1c48331ec3dull, 0xe12f9cdc373f7ef7ull, 0x8b47733a0a9dbb85ull, 0xb8c3ed57cd6df4abull, 0xe371c39037c27ae7ull, 0x88a5b1e3a1be5a99ull }}, {{ 0x519f91ad1ff33a64ull, 0xcbdc209a287af5a8ull, 0x70ca80446a29533aull, 0x37a7456e064b8eb3ull, 0xe271a3a22d98cd0dull, 0x5678f2e4516f8a02ull }}, {{ 0x303bb0c33f8047eaull, 0xf699460594cd9893ull, 0x67e902ac259d404bull, 0x2c88b64c3ef39302ull, 0xd8706455c7f80284ull, 0x60b97ceb2e5b641cull }}, {{ 0xe254e7a07b02cf24ull, 0xa1fcbc37d007f5bfull, 0x0f1a1ab9782482f7ull, 0xbd571efa7583be18ull, 0x7463eb59cfb01929ull, 0xc73ee12fcf91e920ull }}, {{ 0xd7510c44ce1c176cull, 0x53df5a2e204f997eull, 0x97050b3eb16d1dacull, 0x656735c897256cf0ull, 0x8be731821ce0fba1ull, 0xc874cbde1bb31b44ull }}, {{ 0x692a7ab00d18ea34ull, 0x46b985cd431bfef4ull, 0xe6327072ee4328bbull, 0xf60819d5e7764165ull, 0x7707ef1520c9d44dull, 0xd48ff6ad14ff10adull }}, {{ 0x1ba8cae082f9260bull, 0xc33f3a049f17f58cull, 0xfdf8647d4e9f9750ull, 0x9c51025b0a9e8dfaull, 0xa64f56d347e24b0bull, 0x4d9fa2c2d1f6a6c6ull }}, {{ 0x1497ecc51dbb7c6bull, 0xa078442e36ef9779ull, 0xebb3ece5123be927ull, 0x1b2a178e6a318bcdull, 0x7f196440ced6ee74ull, 0x083c5b9c33a283c2ull }}, {{ 0xcdef3fb32952dc30ull, 0x44b2a9ce255beabaull, 0x350740f2b6571b8cull, 0x0fa4eb9025ef760bull, 0xf6fdea8814655089ull, 0x525b941a04592598ull }}, {{ 0x0b587cff9d3c99dfull, 0xaefaa20d75972b4cull, 0x1248897b1f67137aull, 0x9c7133a17b5a9c70ull, 0xa5eb2950cbf5255aull, 0x3793c9042b7b77f9ull }}, {{ 0x7174e1fc245e02b3ull, 0xd5ca548697e7b0f8ull, 0xb6d55ecf3a06c2caull, 0x1c6c044ed18a1c60ull, 0x7b2f9d27f793758aull, 0x2bc5da29b2d2afc0ull }}, {{ 0x6e90d3d96bac1b03ull, 0x59e74d41ef0ce9b4ull, 0x2455b41844439becull, 0x1c382b142f651bc7ull, 0xcfdc238fabc29765ull, 0xb5ba85a0fc3add84ull }}, {{ 0x51a8467e34b90e19ull, 0x830904935681210cull, 0x6b5908f2aaa4173bull, 0x1a31aec9d9f315c7ull, 0x1e99639cb599e9f3ull, 0x19493849da4ca730ull }}, {{ 0x3092c0ee0f3a8cfaull, 0x1e5a2dc1610b4a7bull, 0x317a597aaa68e853ull, 0x05f0d3e2837ed9caull, 0x31fde41f1803237full, 0xfcdc32e286fe87e1ull }}, {{ 0xe5bb894c984981c5ull, 0x2f85c98dca70e8cfull, 0xeec77ecaa819133full, 0x3b6846d922f481e5ull, 0xf3eae936f01f62f6ull, 0xe099fcd945f14ecbull }}, {{ 0xf9535cfdf2df11b0ull, 0xdb39df89e869181eull, 0x53caf3ea90fac077ull, 0x5212c47b5d8d12fbull, 0x872d1c256139dd9eull, 0xc603e07cbb6d13f7ull }}, {{ 0xbd41a1eb7cb6b0e0ull, 0x9042bb63141af135ull, 0x45ed8729a9cb84aeull, 0x34bbacd1a782bdd1ull, 0x47c31975cc42a82full, 0xbc26c4df5242c7abull }}, {{ 0x64905332df22e8bdull, 0xa29b51dec90d6c19ull, 0xbb4747a0a1f32ed1ull, 0x0f54c0308b1b6a2cull, 0xcd9efe99fa9a91d8ull, 0x5983b0b9369bccb0ull }}, {{ 0xeda33ffcb75d1767ull, 0x5a1132b3da8638fdull, 0x50c8cc46537fd430ull, 0x994f81e56f1225bfull, 0x0835f203ca09b270ull, 0x7f24e73c2215fee8ull }}, {{ 0x48607fdf29a2ea03ull, 0x84abfb06893e39ebull, 0x27d7fabf42fe49e3ull, 0xfd1b12f656b57979ull, 0x521b7425e460f865ull, 0xf771085954dbf510ull }}, {{ 0xd3c4feb7a05d241eull, 0x2eb7ce415c6e4330ull, 0x8e6fcb789deee2e3ull, 0xe30ebd9f6316bebbull, 0x3512897aebc9b3fbull, 0xaa6a537d509792a3ull }}, {{ 0x45b1f32c43a36928ull, 0xd32e0e8d9c4e9fe8ull, 0x905df2b62b54dcdfull, 0xde936839dee37353ull, 0x12b95ecd35e107d6ull, 0xa82742e525ebba60ull }}, {{ 0xb8f37fbaa4621b8dull, 0x3fcc91881b123f12ull, 0xa3ab7b1db150a0beull, 0xb1c21242b4e28143ull, 0xbb3db4041aca4e64ull, 0x91889cf37b3547c0ull }}, {{ 0x3982fd4a6bd5137full, 0x7dfdaf510eb676bbull, 0x64b2cf28ed26476eull, 0xf194b69b10d90ca4ull, 0x506908290be70feeull, 0xaf562182d014cd87ull }}, {{ 0x3f1de4e83652c2faull, 0xebe8d92a9320a350ull, 0xeefc1799437eca50ull, 0x6fcf220ea87a7e6bull, 0x241a519a77069f55ull, 0xd95d4f1c20d00749ull }}, {{ 0x772af1121f3b9dc5ull, 0x37187ba9bf466122ull, 0x55d8ebfca2f3e729ull, 0x5e17549294c8f037ull, 0x69073008a6423956ull, 0x7da51719482048dbull }}, {{ 0xa7ad6ab5385429aeull, 0x26f4d4a178bfcb58ull, 0x5a7937de5d87079cull, 0xace94db9cfd96229ull, 0x1a47e0567e963d5full, 0xe872e6fcd142d892ull }}, {{ 0x8cc62b143349a0caull, 0x85904e4eb77df176ull, 0x88bc2eafa7464c19ull, 0xc11d09421e7dd59dull, 0x06cec360f1de65bcull, 0x147d05e02c9c75b5ull }}, {{ 0x7fbdaeca00e047e5ull, 0x37a30f132aeb6ea1ull, 0x5759d2dc88bef8ffull, 0x8b225c9530ea5827ull, 0x4413a1c972aff95full, 0xcce23ac1be1c9912ull }}, {{ 0xfd68d3e408c2cef0ull, 0x2c5e96bfad32524eull, 0x69823c9d5775b9f8ull, 0x6f579dd3e9277189ull, 0xa8c451de7adfbdbbull, 0x00d64b916d1dfab6ull }}, {{ 0xe61846e8579c155cull, 0xbbb1e37cc3f73715ull, 0x1f165e256a9943b1ull, 0x596c2a471b8a6f5eull, 0x97ab32b0ccbd6952ull, 0x085ef3ae432bcb22ull }}, {{ 0xfcf2c5136c18d59cull, 0x54f2e2dfa7a826daull, 0x36dfad7629fca4f1ull, 0x7e39a6c7136859adull, 0xecaffae7ff661d37ull, 0x53b584ce9fb5ef59ull }}, {{ 0xe17bb2c238f8581bull, 0x517cdcbc8c91848dull, 0x24bcc69da3de716dull, 0xee4083c6c21380c4ull, 0x3edfcd0ff9fd242aull, 0x451730123d1b5983ull }}, {{ 0xced4fb9639b3710aull, 0x2ee09f5d7daf2d8aull, 0x6f5fc22866b06e45ull, 0x4e8525c394c307a9ull, 0x74be029fc3e369adull, 0xb2e7e0b663117f20ull }}, {{ 0x1451d3de41026a65ull, 0xd4c639a6e8d7c76cull, 0x59bd959402e44eb3ull, 0x113379a3cf9e4c9eull, 0x8f6c1a3da6e220c5ull, 0xfd0ec71fdeaef744ull }}, {{ 0xcb3246ae8a1827f7ull, 0x4fbe4085186dca38ull, 0x8167d7c81ceb1306ull, 0xac02c0661c2efe2full, 0x9a39066884d547b2ull, 0xe293c73eb2d5a8adull }}, {{ 0xeff6c2d164f18fa2ull, 0x1d6e8532f449e637ull, 0x0e0e6dd1212ebe3full, 0xb81b83fd19d5eddbull, 0x063a40153054ccfaull, 0xd9c5c872fc5896c8ull }}, {{ 0x5fa39c2df16f9c53ull, 0x265133fd8ae2fe2full, 0x8c904a2b4bd36e77ull, 0x311327e3025b4a8eull, 0x3e4680d3e35001cbull, 0x81b9d47ddb75e3d0ull }}, {{ 0xbc6419cb6e5c1b41ull, 0x7f2c07e76cddedd9ull, 0x7da2e5b0f64250a7ull, 0xeabf8ede1790e991ull, 0x6ec10846e12011efull, 0x11424cea929ae622ull }}, {{ 0x5be901f24f991089ull, 0xf7b84f0a40ab4a81ull, 0xe85cf8e99e97268aull, 0x2b7b94aceba91faeull, 0x538a52c4cb40b35full, 0xac970129ba0cfd58ull }}, {{ 0x971a13771bfaa555ull, 0xad33166686b0e90dull, 0x13a1b92031e7816dull, 0xb2d3cec1349b3cd5ull, 0x43673baff08701b7ull, 0xbde60ba14481e573ull }}, {{ 0xe704c2a717ca7555ull, 0xc3fee00142e91a87ull, 0xc4513b41f30b0e48ull, 0xfc46138c0e106052ull, 0xa20854df6546112cull, 0x6afc744cad12f680ull }}, {{ 0x062f9a86ede8954eull, 0xa7f4c00c9d1b094full, 0xab2c50937e6e8ed7ull, 0xdabcc3788ca3c33bull, 0x545350b9f4bcabc1ull, 0x2ddc8afec2bda106ull }}, {{ 0x3ddc09454b15d510ull, 0x8f8f807e230e5d16ull, 0xafbb25c2f051946cull, 0x8b5fa2b57e65a054ull, 0x4b4127438f5eb592ull, 0xca9d6df39b684a3full }}, {{ 0x6a985cb4eeda52a3ull, 0x9b9b04ed5e8fa2deull, 0xdd4f799d632fcc3dull, 0x71bc5b16eff8434eull, 0xf08b88a399b317b9ull, 0xea264b841212e678ull }}, {{ 0x29f39f1154873a5eull, 0x140e3145b19c5cb0ull, 0xa51ac025dfddfa68ull, 0x715b8ee55fb2a114ull, 0x6573566400feed3eull, 0x257ef328b4bd00b9ull }}, {{ 0xa38436ad4d4847abull, 0xc88decb8f01b9ee1ull, 0x730b817abeabc810ull, 0x6d9394f5bcfa4aceull, 0xf6815fe809f54470ull, 0x76f57f970f62073dull }}, {{ 0x632a22c504d2ccaeull, 0xd58b3f39611434d0ull, 0x7e730ecb72b5d0a7ull, 0x47c3d19961c6ec10ull, 0xa10dbf106394ac64ull, 0xa596fbe699d4486bull }}, {{ 0xdfa55bb2303bfecaull, 0x5770783dcaca1023ull, 0xf07e93f27b1a268eull, 0xcda62ffdd1c538a4ull, 0x4a8976a3e3cebbeaull, 0x77e5d702024ad434ull }}, {{ 0xbc7594f5e257f3e8ull, 0x6a64b269ebe4a166ull, 0x64f1c778cf05818full, 0x087ddfea31b43671ull, 0xe95ea266e613572cull, 0xaefa661416ec4a0aull }}, {{ 0x5c97d19ad76f870full, 0x27eef82336ee4e03ull, 0xf171cab816370f9aull, 0x54eabf25f10a206dull, 0x1db25804fcc167b8ull, 0xd5c7fcc8e53ae46dull }}, {{ 0x9dee300c6a5b4696ull, 0x8f55b160254f0c21ull, 0x6e71eb30de269c05ull, 0x512b777b6a65444bull, 0x28f77031df8e0d33ull, 0x59cfdfd8f44cec43ull }}, {{ 0x2b4de07c2790c1ddull, 0x9958edc175167950ull, 0x50732fe8ad821837ull, 0x2bb2aad227f4aaf2ull, 0x99aa61f2bb8c8401ull, 0x821ebe798b013a9full }}, {{ 0xb10ac4d98ba792a1ull, 0xfd79498e92e0bd21ull, 0x247fdf16c714f22bull, 0xb4faac358f8ead77ull, 0x00a7d37b537d280bull, 0x153370bf6e0c4a3cull }}, {{ 0xea6bb07f748bba4dull, 0xe6bcdf91bcc76350ull, 0x6cfeb6e3c6d175b7ull, 0x11caba179b92c6a7ull, 0x068e42d142e39075ull, 0xd402677a4c7ae658ull }}, {{ 0x2834e4fa8d754706ull, 0x0360bbb15fc9e129ull, 0x41f324e5c42e992full, 0xb1eb44ec13bbc28aull, 0x418e9c2c9ce3a492ull, 0x48180ac6fcccff70ull }}, {{ 0x9210f1c98694c63dull, 0x21c754edbde2cb9bull, 0x937f70f9a9d1fbd6ull, 0xf330b138c5559966ull, 0x8f9219be20e46dbaull, 0xd0f06bc5e001fa62ull }}, {{ 0xb4a971df41cfbe62ull, 0x51c951496adbf413ull, 0xc2fa69c0a233d65dull, 0x7fe6ec37b557fe01ull, 0x9bb5016d48ec494dull, 0x296435bac013c7d9ull }}, {{ 0x0e9e72b8921d6fd2ull, 0x31dd2cde2c9788c5ull, 0x9dc8218656065fa5ull, 0xff053a2d156fec11ull, 0x15120e44d93add06ull, 0x9dea194b80c5ce80ull }}, {{ 0x92307b35b5265e30ull, 0xf2a3c0adbdeb57b2ull, 0x29d14f3f5c3fbc73ull, 0xf63445c2d65f38b0ull, 0xd2b48eb07c4ca245ull, 0x2b24fcf307ba1100ull }}, {{ 0xb5e4d019137faddeull, 0x7a6586c96b316cf9ull, 0xa22d18799a7d5c87ull, 0x9e0ab99c5fb836e1ull, 0x3b0d92e4dafe56bbull, 0xaf71e17e4d44aa08ull }}, {{ 0x1af020fac2fccaafull, 0xc7f743de2fee41c1ull, 0x55c2f4c008e59d4aull, 0x2c6b401bbd3224d0ull, 0x4e87bcf08def6354ull, 0xda72ceef04aea452ull }}, {{ 0x0d6149cb9ddfead6ull, 0xcfa8a6addf4e918bull, 0x599d8f8058f824ebull, 0xbc30811563f57023ull, 0x114d61658b59e149ull, 0x887c15562ed26b37ull }}, {{ 0x85cce1f42abf2c5bull, 0x1c9682cab911af6eull, 0x80279b0379b17136ull, 0x59e50ad5e7966161ull, 0xad05cdf77182cce1ull, 0x54d8d55dd4383026ull }}, {{ 0x3a00d389ab77bb8aull, 0x1de11beb3ab0da51ull, 0x018c0e22c0ee6c1dull, 0x82f26c5b0bdfcdcfull, 0xc23a0baa6f1c00cdull, 0x507855aa4a31e182ull }}, {{ 0x44084360b2ad535full, 0x2acb17304ae8872cull, 0x0f788d5b89503923ull, 0x1d783b8e76be0a16ull, 0x964474a857180807ull, 0x24b358a6e5f2cf1bull }}, {{ 0xa852a1c6fac541b8ull, 0xabeee7e2ed1547baull, 0x9ab585935d223b5full, 0x26b25390a36c64dcull, 0xdeac8e9366f05047ull, 0x6f017684fb7c1713ull }}, {{ 0x933a51c5cbb49132ull, 0xb7550edd42d4cd4aull, 0x0b1737c1a35651bcull, 0x82f743a6623bf09eull, 0xb2bd91c2056322c7ull, 0x560ea131d2d8e6c6ull }}, {{ 0xc04731b9f50dabf3ull, 0x295294a49c5004e9ull, 0x6ee82d90615f315full, 0x1da8a47fd657662cull, 0xfb67b19435df5bcbull, 0x5c924bf23c7903c2ull }}, {{ 0x82c7f1439288b77eull, 0x9d39ce6e1b203121ull, 0x5511c7a3cdb7edb7ull, 0x28966cfe5f69fdbcull, 0xd20cefca1ab995efull, 0x9db6f7765cba259dull }}, {{ 0x1bcf6ca3b9572af0ull, 0x2442104d0f41eb4full, 0x52b1cc66092f492cull, 0x95e041efba23e95bull, 0x34815de50b3fdb57ull, 0x2925aa9f9f45782aull }}, {{ 0x161a3e653d67ad5bull, 0x6a94a30298933117ull, 0x3af1fbfc5bd8dbb9ull, 0xdac2935d45671d91ull, 0x0d0daaf2707e916bull, 0x9b78aa3c38b6b1a6ull }}, {{ 0xdd066ff4660cc58full, 0x29ce5e19f5bfeae6ull, 0x4d73d7db9678953eull, 0x8b99c1a4b60727acull, 0x8288ad7864f1ae36ull, 0x12b6a65a3722f07cull }}, {{ 0xa2405f8bfc7fb798ull, 0xa20fad03997f2d04ull, 0x06866e93e0b5d46dull, 0x7401906f1c478cbbull, 0x1956c6b3f170ce21ull, 0xbb227f86275d64ddull }}, {{ 0x5683bb77dcfd2bf2ull, 0x549cc223fef7c22eull, 0x414051c6c71a4c48ull, 0x880fa4571acb7f4eull, 0xfd63c3076e680d4eull, 0x4f58fb3d89a5f0a2ull }}, {{ 0x612552aea1e3b776ull, 0x4e1f9567f5ad95cfull, 0x8c8331c3c706fad3ull, 0x509c6b670bf2f90eull, 0xe5e59e4a50108511ull, 0x1979d067607b665dull }}, {{ 0xcb753ad252e52a9dull, 0x0d3bd60f98c7da19ull, 0x7d1ff1a5c645cc41ull, 0x261c3206777dba91ull, 0xfaf82ee720a532adull, 0xfec22409c4d1ffaaull }}, {{ 0xf2944c373cf3aa21ull, 0x84565c9bf7ce8501ull, 0xe33f7079beb9fa8aull, 0x7d19f440aae949aeull, 0xcdb1d5074673fac3ull, 0xf3956861b033fcadull }}, {{ 0x79cafa286184a548ull, 0x2b5f9e17ae113213ull, 0xe07a64c17343c969ull, 0xe3038a86ad1ce0d4ull, 0x08f25248c087cba2ull, 0x83d613d0e207decaull }}, {{ 0xc1edc593cf2e74cdull, 0xb1bc2cecccabf4c2ull, 0xc4c7ef8e80a5de1bull, 0xde236942c320c850ull, 0x597736d7854df45cull, 0x265cc628d44eb3e4ull }}, {{ 0x9349b7c617d09007ull, 0xf159c13ffeb78f9bull, 0xafcf5b91067aad14ull, 0xad621c9b9f47d327ull, 0x7ea8246b350b8ba0ull, 0x7f9fbd984b1306ebull }}, {{ 0xc0e12dbcee25a045ull, 0x6d818c7ff32b9c13ull, 0xde1993aa40cac2d1ull, 0xc5d51e1438ce3f8cull, 0xf2916c3012737446ull, 0xfc3d67f2eebe4532ull }}, {{ 0x88cbc9614d7842b6ull, 0x470f7cff7fb418c5ull, 0xacffc4a687eb9c2eull, 0xba532cca380e7b80ull, 0x79ae39e0b8828ac3ull, 0xda660f7d536eb3fdull }}, {{ 0x57f5ddcd06b29b20ull, 0xc69ae1fafd08f7b7ull, 0xc1fdae814f3419ceull, 0x473fbfe63090d306ull, 0xc0ce42c735196ba5ull, 0x87fc9ae5425307e6ull }}, {{ 0x6f9aaa0242fa0f3cull, 0xc20cd3cde259ad29ull, 0x93e8d10d18090213ull, 0xc87d7efde5a83e43ull, 0x880e9bc812fe3474ull, 0x4fde0cf4973e4f03ull }}, {{ 0x5c0aa4169dc49857ull, 0x9480460ad780c39eull, 0xc7182a82f05a14c5ull, 0xd4e6f5eaf8926ea3ull, 0x509215d0bdee0c8full, 0x1eac818de86f1623ull }}, {{ 0x986a68e229adf366ull, 0xcd02bc6c6b07a42full, 0xc6f1a91d6384cfb7ull, 0x51059b2db5b85265ull, 0x25b4da276b4c7d9eull, 0x32bd0f8b1456dd61ull }}, {{ 0xf42818d5a0cb81ffull, 0x021b5c3c2e4c69dbull, 0xc5709b25e3301d2eull, 0x2a380fc9193337f9ull, 0x7910858a30fce82full, 0xfb629b6ecb64a5cbull }}, {{ 0x8990f85847f313f7ull, 0x15119a59cefc2297ull, 0xb6660f7adfe123ccull, 0xa6309ddafc002fc1ull, 0xbaa53765e9e111d7ull, 0xd1da1253f1ee79f2ull }}, {{ 0x5fa9b372cf7ec7a6ull, 0xd2b0078215d959ebull, 0x1ffc9accbecb65f8ull, 0x7de62a8dd801dd91ull, 0x4a7429fb22cab26cull, 0x3284b7477350c37bull }}, {{ 0xbca1027c1af3cc79ull, 0x3ae04b14da7d8331ull, 0x3fde0bff73f1fbb8ull, 0xeafda98a7012a7abull, 0xe889a3cf5beaf83cull, 0xf92f28ca8127a2d0ull }}, {{ 0x5e4a18d90d85fcb6ull, 0x4cc2eed088e71ff1ull, 0x7eac77fa8773d532ull, 0x2de89f6860ba8cb0ull, 0x15606619972db261ull, 0xbbd797e90b8c5c29ull }}, {{ 0xaee4f87a873bdf1full, 0xff9d542559073f6dull, 0xf2bcafc94a8653f6ull, 0xcb163a13c7497ee4ull, 0xd5c3fcffe7c8f7cbull, 0x566bef1a737b999aull }}, {{ 0xd4f1b4c94856b73bull, 0xfc2549757a487a48ull, 0x7b5edddce93f47a5ull, 0xeede44c5c8def4f1ull, 0x59a7e1ff0dd9adf5ull, 0x6037570882d4000cull }}, {{ 0x51710fdcd363284cull, 0xd974de96c6d4c6d8ull, 0xd1b4aaa11c78cc7bull, 0x54aeafb9d8b5916eull, 0x808ed3f68a80cb9bull, 0xc22966551c48007bull }}, {{ 0x2e6a9ea041df92faull, 0x7e90b1e3c44fc473ull, 0x310eaa4b1cb7fcd6ull, 0x4ed2dd427717ae54ull, 0x059447a16907f411ull, 0x959dff531ad004d3ull }}, {{ 0xd02a324292bbbdc3ull, 0xf1a6f2e5ab1dac7full, 0xea92a6ef1f2fe060ull, 0x143ca498a6eccf49ull, 0x37cacc4e1a4f88adull, 0xd82bf93f0c20303eull }}, {{ 0x21a5f699bb5569a3ull, 0x70857cf8af28bcfeull, 0x29ba855737dec3c9ull, 0xca5e6df6854018e3ull, 0x2debfb0d071b56c2ull, 0x71b7bc767941e26eull }}, {{ 0x507ba2015156205dull, 0x6536e1b6d79761edull, 0xa14935682eb3a5deull, 0xe7b04ba13480f8dfull, 0xcb37ce824711639bull, 0x712d5ca0bc92d84dull }}, {{ 0x24d4540d2d5d439eull, 0xf424d1246be9d345ull, 0x4cdc1611d3047aafull, 0x0ce2f44c0d09b8bcull, 0xf02e1116c6ade417ull, 0x6bc59e475dbc7309ull }}, {{ 0x704b4883c5a4a427ull, 0x89702b6c372240b3ull, 0x0098dcb23e2ccadfull, 0x80dd8af88261375bull, 0x61ccaae3c2cae8e6ull, 0x35b82ec9a95c7e63ull }}, {{ 0x62f0d525b86e6988ull, 0x5e61b23a27568702ull, 0x05f89ef66dbfecbbull, 0x08a76db517cc298eull, 0xd1feace59bed1901ull, 0x1931d3e09d9cefe1ull }}, {{ 0xdd68537934501f4full, 0xafd0f64589614617ull, 0x3bb635a0497f3f51ull, 0x568a4912edf99f8cull, 0x33f2c0f81742fa0aull, 0xfbf246c628215ed2ull }}, {{ 0xa61342bc0b213916ull, 0xde299eb75dccbceeull, 0x551e1842def87930ull, 0x6166dabd4bc03b7aull, 0x077b89b0e89dc467ull, 0xd776c3bd914db436ull }}, {{ 0x7cc09b586f4c3ae1ull, 0xada03329a9ff6152ull, 0x532cf29cb5b4bbe8ull, 0xce048b64f58252c7ull, 0x4ad360e91629ac09ull, 0x6aa3a567ad090a1cull }}, {{ 0xdf86117458fa4cc8ull, 0xc841ffa0a3f9cd38ull, 0x3fc17a1f190f5716ull, 0x0c2d71f197173bc9ull, 0xec41c91adda0b862ull, 0x2a64760cc25a651aull }}, {{ 0xbb3cae8b79c6ffd1ull, 0xd293fc4667c20438ull, 0x7d8ec536fa9966e3ull, 0x79c6736fe6e855dcull, 0x3a91db0ca84733d4ull, 0xa7ec9c7f9787f30dull }}, {{ 0x505ed172c1c5fe29ull, 0x39c7dac00d942a37ull, 0xe793b425c9fe04e6ull, 0xc1c0825f05135a9cull, 0x49b28e7e92c8064cull, 0x8f3e1cfbeb4f7e84ull }}, {{ 0x23b42e7b91bbed99ull, 0x41ce8b8087c9a629ull, 0x0bc50979e3ec30feull, 0x918517b632c18a21ull, 0xe0f990f1bbd03effull, 0x986d21d7311af12aull }}, {{ 0x6509d0d3b15747feull, 0x921173054de07d9bull, 0x75b25ec2e739e9eeull, 0xaf32ed1dfb8f654aull, 0xc9bfa971562275fbull, 0xf4435267eb0d6bacull }}, {{ 0xf2622844ed68cfe9ull, 0xb4ae7e350ac4e811ull, 0x98f7b39d08432351ull, 0xd7fd432bd399f4e8ull, 0xe17c9e6d5d589bd4ull, 0x8aa1380f2e8634bfull }}, {{ 0x77d592b146181f1dull, 0x0ed0ee126bb110b3ull, 0xf9ad0422529f6131ull, 0x6fe49fb644039115ull, 0xcede3045a5761650ull, 0x6a4c3097d13e0f7eull }}, {{ 0xae57baecbcf13726ull, 0x94294cb834eaa702ull, 0xc0c229573a39cbeaull, 0x5eee3d1ea823aadbull, 0x14ade2b8769cdf24ull, 0x26f9e5ee2c6c9af4ull }}, {{ 0xcf6d4d3f616c2780ull, 0xc99cff32112a861aull, 0x87959d684641f729ull, 0xb54e63329164ac95ull, 0xcecadb34a220b76bull, 0x85c2fb4dbc3e0d88ull }}, {{ 0x1a450479ce398b05ull, 0xe021f7f4aba93d0cull, 0x4bd82612be93a7a1ull, 0x150fdff9adeebdd7ull, 0x13ec900e55472a35ull, 0x399dd1095a6c8758ull }}, {{ 0x06b22cc20e3f6e2eull, 0xc153af8eb49c6279ull, 0xf6717cbb71c48c52ull, 0xd29ebfc0cb536a68ull, 0xc73da08f54c7a612ull, 0x402a2a5d883d4970ull }}, {{ 0x42f5bf948e7a4dceull, 0x8d44db930e1bd8baull, 0xa06edf5271ad7b3bull, 0x3a337d87f1422819ull, 0xc86845994fcc7cbcull, 0x81a5a7a75264de67ull }}, {{ 0x9d997bcd90c70a0bull, 0x84b093be8d167746ull, 0x4454b93870c6d053ull, 0x4602e74f6c959100ull, 0xd412b7fd1dfcdf5aull, 0x10788c8937f0b00dull }}, {{ 0x27fed607a7c66473ull, 0x2ee5c57182e0a8c2ull, 0xab4f3c3467c42343ull, 0xbc1d091a3dd7aa02ull, 0x48bb2fe32be0b986ull, 0xa4b57d5c2f66e08aull }}, {{ 0x8ff45c4c8dbfec7dull, 0xd4f9b66f1cc69795ull, 0xb1185a0c0da9609full, 0x59225b066a6ca41aull, 0xd74fdedfb6c73f43ull, 0x6f16e599da04c566ull }}, {{ 0x9f8b9afd897f3cdeull, 0x51c120571fc1ebd7ull, 0xeaf38478889dc63eull, 0x7b578e40283e690aull, 0x691eb4bd23c878a1ull, 0x56e4f802842fb604ull }}, {{ 0x3b740de75ef860a8ull, 0x318b43673d93366cull, 0x2d832cb55629be6full, 0xd16b8e8192701a6dull, 0x1b330f6365d4b64eull, 0x64f1b01929dd1c2cull }}, {{ 0x52888b09b5b3c694ull, 0xef70a20867c0203aull, 0xc71fbf155da17057ull, 0x2e33910fb8610843ull, 0x0ffe99e1fa4f1f14ull, 0xf170e0fba2a319b9ull }}, {{ 0x39556e611905c1c4ull, 0x5a6654540d814247ull, 0xc73d76d5a84e636full, 0xce03aa9d33ca52a5ull, 0x9ff202d3c71736c9ull, 0x6e68c9d45a5f013aull }}, {{ 0x3d564fcafa3991abull, 0x87ff4b48870c96c8ull, 0xc866a458930fe259ull, 0x0c24aa2405e73a79ull, 0x3f741c45c6e823e2ull, 0x5017e24b87b60c4aull }}, {{ 0x655f1dedc63fb0b3ull, 0x4ff8f0d5467de3d2ull, 0xd4026b75be9ed77full, 0x796ea5683b0848c1ull, 0x7a891ab9c51166d4ull, 0x20eed6f34d1c7ae6ull }}, {{ 0xf5b72b49be7ce6f9ull, 0x1fb96854c0eae637ull, 0x4818329972346af9ull, 0xbe5276124e52d792ull, 0xc95b0b41b2ae044cull, 0x49546581031ccd00ull }}, {{ 0x9927b0e170e105baull, 0x3d3e134f892cfe2full, 0xd0f1f9fe760c2dbbull, 0x6f389cb70f3c6bb6ull, 0xdd8e7090facc2affull, 0xdd4bf70a1f200207ull }}, {{ 0xfb8ce8ce68ca3947ull, 0x646cc11b5bc1eddbull, 0x2973c3f09c79c950ull, 0x58361f26985c3524ull, 0xa79065a9cbf9adfaull, 0xa4f7a6653740144eull }}, {{ 0xd381181017e63cc7ull, 0xec3f8b1195934a97ull, 0x9e85a7661cc1dd23ull, 0x721d3781f39a1369ull, 0x8ba3f8a1f7c0cbc7ull, 0x71ac7ff42880cb12ull }}, {{ 0x430af0a0eefe5fc9ull, 0x3a7b6eafd7c0e9eeull, 0x313889fd1f92a367ull, 0x75242b138404c220ull, 0x7467b653ad87f5caull, 0x70bcff899507eeb9ull }}, {{ 0x9e6d664955efbddeull, 0x48d252de6d89234eull, 0xec3563e33bba6208ull, 0x9369aec3282f9541ull, 0x8c0d1f44c74f99e8ull, 0x6761fb5fd24f533eull }}, {{ 0x3045fedd5b5d6ab0ull, 0xd8373cb0475b6112ull, 0x3a15e6e05547d452ull, 0xc220d39f91dbd493ull, 0x788338afc91c0315ull, 0x09d3d1be37194071ull }}, {{ 0xe2bbf4a591a62adfull, 0x72285ee2c991cab5ull, 0x44db04c354ce4b3cull, 0x9548443bb2964dc0ull, 0xb52036dddb181ed9ull, 0x6246316e26fc846eull }}, {{ 0xdb578e77b07dacb8ull, 0x7593b4dbdfb1eb1aull, 0xb08e2fa1500ef05cull, 0xd4d2aa54f9df0982ull, 0x134224aa8ef1347full, 0xd6bdee4d85dd2c53ull }}, {{ 0x916b90ace4e8bf2cull, 0x97c51096bcf32f0cull, 0xe58ddc4d2095639cull, 0x503aa751c2b65f1aull, 0xc0956ea9956c0cfeull, 0x636b4f073aa3bb3eull }}, {{ 0xae33a6c0f11777b7ull, 0xedb2a5e3617fd67dull, 0xf78a9b0345d5e41dull, 0x224a89319b1fb70cull, 0x85d6529fd63881efull, 0xe23116484a655073ull }}, {{ 0xce0483896aeaad22ull, 0x48fa7ae1cefe60e8ull, 0xab6a0e20ba5ae92bull, 0x56e95bf00f3d2681ull, 0x3a5f3a3e5e351357ull, 0xd5eaded2e7f52483ull }}, {{ 0x0c2d235e2d2ac358ull, 0xd9c8ccd215efc918ull, 0xb2248d47478d1bb0ull, 0x651d976098638110ull, 0x47b8466fae12c169ull, 0x5b2cb43d0f936d20ull }}, {{ 0x79c361adc3aba16dull, 0x81d80034db5ddaf0ull, 0xf56d84c8cb8314e8ull, 0xf327e9c5f3e30aa6ull, 0xcd32c05cccbb8e1dull, 0x8fbf0a629bc24342ull }}, {{ 0xc1a1d0c9a4b44e41ull, 0x1270021091aa8d64ull, 0x96472fd7f31ed115ull, 0x7f8f21bb86de6a85ull, 0x03fb839fff538d2bull, 0x9d7667da1596a09cull }}, {{ 0x905227e06f0b0e88ull, 0xb86014a5b0a985efull, 0xdec7de6f7f342ad2ull, 0xfb97515344b02937ull, 0x27d3243ff94383b2ull, 0x26a00e84d7e24618ull }}, {{ 0xa3358ec4566e914dull, 0x33c0ce78e69f3b5bull, 0xb3ceb05af809ac3bull, 0xd3e92d40aee19c2eull, 0x8e3f6a7fbca324fdull, 0x824091306ed6bcf1ull }}, {{ 0x601793ab6051ad07ull, 0x058810b902385194ull, 0x0612e38db060ba50ull, 0x471bc486d4d019d3ull, 0x8e7a28fd5e5f71eaull, 0x1685abe45463616full }}, {{ 0xc0ebc4b1c330c243ull, 0x3750a73a16332fcbull, 0x3cbce388e3c74720ull, 0xc715ad445021023eull, 0x90c599e5afba7326ull, 0xe138b6eb4be1ce5bull }}, {{ 0x8935aef19fe796a0ull, 0x29268844ddffddf5ull, 0x5f60e358e5c8c742ull, 0xc6d8c4ab214a166eull, 0xa7b802f8dd487f83ull, 0xcc372530f6d20f93ull }}, {{ 0x5c18d5703f0be243ull, 0x9b8152b0abfeab97ull, 0xb9c8e178f9d7c895ull, 0xc477aeaf4ce4e04full, 0x8d301db8a4d4fb25ull, 0xfa2773e9a4349bc4ull }}, {{ 0x98f856627676d69eull, 0x130d3ae6b7f2b3e9ull, 0x41d8ceb9c26dd5d8ull, 0xacacd2d900f0c31dull, 0x83e129367051cf79ull, 0xc58a87206a0e15adull }}, {{ 0xf9b35fd8a0a46229ull, 0xbe844d032f7b071full, 0x92781341984a5a70ull, 0xbec03c7a09679f24ull, 0x26cb9c2063321ac0ull, 0xb7694744248cd8c7ull }}, {{ 0xc101be76466bd59aull, 0x712b021fdace473full, 0xb8b0c08ff2e78867ull, 0x73825cc45e0c376dull, 0x83f41943dff50b87ull, 0x2a1cc8a96d8077c7ull }}, {{ 0x8a11709ec0365802ull, 0x6bae153e8c0ec87dull, 0x36e7859f7d0b540aull, 0x83179fabac7a2a49ull, 0x2788fca6bf92734aull, 0xa51fd69e4704adcbull }}, {{ 0x64ae6633821f7017ull, 0x34ccd4717893d4e7ull, 0x250b383ae2714868ull, 0x1eec3cb4bcc5a6dcull, 0x8b59de837bb880e9ull, 0x733e622ec62ec9efull }}, {{ 0xeecffe03153a60eaull, 0x10004c6eb5c65109ull, 0x7270324cd86cd412ull, 0x353a5f0f5fb88499ull, 0x7182b122d535091bull, 0x806fd5d3bdd3e35bull }}, {{ 0x541fec1ed447c921ull, 0xa002fc5319bf2a63ull, 0x7861f700744048b4ull, 0x1447b699bd352dfeull, 0x6f1aeb5c54125b10ull, 0x045e5a456a46e192ull }}, {{ 0x493f39344acddb4eull, 0x401ddb3f0177a7e1ull, 0xb3d3a6048a82d70eull, 0xcacd22016413cbf0ull, 0x570d319b48b78ea0ull, 0x2baf86b626c4cfb8ull }}, {{ 0xdc783c0aec0a910aull, 0x812a90760eac8eccull, 0x06447c2d691c668eull, 0xec03540de8c5f767ull, 0x6683f010d72b9247ull, 0xb4db431d83b01d33ull }}, {{ 0x9cb2586d3869aa68ull, 0x0ba9a49c92bd9400ull, 0x3eacd9c61b1c0191ull, 0x3821488b17bbaa06ull, 0x012760a867b3b6cfull, 0x10909f2724e12402ull }}, {{ 0x1ef774443420a813ull, 0x74a06e1dbb67c806ull, 0x72c081bd0f180faaull, 0x314cd56eed54a43eull, 0x0b89c6940d052418ull, 0xa5a6378770cb6814ull }}, {{ 0x35aa8aaa094690baull, 0x8e444d29520dd03dull, 0x7b85116296f09ca8ull, 0xed005655454e6a70ull, 0x7361c1c8823368f1ull, 0x787e2b4a67f210c8ull }}, {{ 0x18a96aa45cc1a746ull, 0x8eab039d348a2264ull, 0xd332add9e5661e95ull, 0x42035f54b5102864ull, 0x81d191d516021973ull, 0xb4edb0e80f74a7d4ull }}, {{ 0xf69e2a6b9f9088bcull, 0x92ae24240d6557e8ull, 0x3ffaca82f5fd31d7ull, 0x9421b94f12a193f0ull, 0x122fb252dc14fe80ull, 0x1148e9109a8e8e4dull }}, {{ 0xa22da8343ba55755ull, 0xbacd696885f56f19ull, 0x7fcbe91d9be3f26bull, 0xc9513d16ba4fc762ull, 0xb5dcf73c98d1f105ull, 0xacd91aa609918f02ull }}, {{ 0x55c8920a54756952ull, 0x4c061e153b965700ull, 0xfdf71b2816e77835ull, 0xdd2c62e3471dc9d8ull, 0x1aa1a85df8336a39ull, 0xc07b0a7c5faf961bull }}, {{ 0x59d5b4674c961d33ull, 0xf83d2cd453df6603ull, 0xeba70f90e50ab214ull, 0xa3bbdce0c729e279ull, 0x0a5093abb2022642ull, 0x84ce68dbbcdbdd0full }}, {{ 0x82590c08fddd23fbull, 0xb263c04b46b9fc21ull, 0x34869ba8f26af4d1ull, 0x6556a0c7c7a2d8c3ull, 0x6725c4b4f4157e9aull, 0x301018956096a296ull }}, {{ 0x177a7859eaa367cfull, 0xf7e582f0c343d94full, 0x0d421499782d9030ull, 0xf56247cdcc5c77a0ull, 0x0779af1188d6f207ull, 0xe0a0f5d5c5e259e0ull }}, {{ 0xeac8b3832a620e14ull, 0xaef71d67a0a67d16ull, 0x8494cdfeb1c7a1e9ull, 0x95d6ce09fb9cac40ull, 0x4ac0d6af5865744full, 0xc6499a59bad782c0ull }}, {{ 0x2bd7031fa7d48cccull, 0xd5a7260c4680e2e5ull, 0x2dd00bf2f1cc5320ull, 0xda640c63d41eba85ull, 0xeb8862d973f68b1bull, 0xbee007814c6b1b82ull }}, {{ 0xb6661f3c8e4d7ff5ull, 0x58877c7ac108dcf3ull, 0xca20777d71fb3f48ull, 0x87e87be649334933ull, 0x3353dc7e87a16f16ull, 0x74c04b0cfc2f131dull }}, {{ 0x1ffd385d8f06ff8eull, 0x754adccb8a58a185ull, 0xe544aae673d078d3ull, 0x4f14d6fedc00dc05ull, 0x01469cf14c4e56e1ull, 0x8f82ee81d9d6bf24ull }}, {{ 0x3fe433a79645fb87ull, 0x94ec9ff367764f33ull, 0xf4aead008624b842ull, 0x16d065f49808983aull, 0x0cc2216cfb0f64cdull, 0x9b1d511282637768ull }}, {{ 0x7eea048bdebbd347ull, 0xd13e3f820a9f1800ull, 0x8ed2c2053d6f3299ull, 0xe423fb8df055f24dull, 0x7f954e41ce99f002ull, 0x0f252ab917e2aa10ull }}, {{ 0xf5242d76b35640c6ull, 0x2c6e7b146a36f004ull, 0x943b94346657fa02ull, 0xe967d38b635b7707ull, 0xfbd50e921203601cull, 0x9773ab3aeedaa4a4ull }}, {{ 0x9369c6a3015e87c0ull, 0xbc50cecc26256031ull, 0xca53ca0bff6fc415ull, 0x1e0e4371e192a64bull, 0xd65291b4b421c121ull, 0xea84b04d548a6e71ull }}, {{ 0xc221c25e0db14d7eull, 0x5b2813f97d75c1efull, 0xe745e477fa5da8d9ull, 0x2c8ea272cfba7ef5ull, 0x5f39b10f09518b4bull, 0x292ee3054d685072ull }}, {{ 0x955197ac88ed06efull, 0x8f90c7bee699935dull, 0x08baecafc7a8987dull, 0xbd92587c1d48f59bull, 0xb840ea965d2f70efull, 0x9bd4de3506132477ull }}, {{ 0xd52fecbd59424559ull, 0x9ba7cd7501ffc1a7ull, 0x574d3eddcc95f4e7ull, 0x67b774d924d9980eull, 0x328929dfa3da695dull, 0x1650ae123cbf6cadull }}, {{ 0x53df3f657c96b57aull, 0x148e069213fd908eull, 0x690474a9fddb910cull, 0x0d2a907b707ff08full, 0xf95ba2bc66881da6ull, 0xdf26ccb65f7a3ec3ull }}, {{ 0x46b879f6dde316bfull, 0xcd8c41b4c7e7a58full, 0x1a2c8ea3ea93aa78ull, 0x83a9a4d264ff659aull, 0xbd945b5c0151287cull, 0xb783ff1fbac673a7ull }}, {{ 0xc334c3a4aadee377ull, 0x077a910fcf0c7798ull, 0x05bd926729c4a8b8ull, 0x24a07037f1f9f805ull, 0x67cb91980d2b94ddull, 0x2b27f73d4bc0848dull }}, {{ 0xa00fa46eacb4e2a2ull, 0x4ac9aa9e167cabf7ull, 0x3967b807a1ae9730ull, 0x6e44622f73c3b032ull, 0x0df3aff083b3d0a3ull, 0xaf8fa864f5852d86ull }}, {{ 0x409c6c52bf10da59ull, 0xebe0aa2ce0deb7acull, 0x3e0d304c50d1e7e2ull, 0x4eabd5da85a4e1f6ull, 0x8b84df6525062662ull, 0xdb9c93f19733c73cull }}, {{ 0x861c3b3b76a88778ull, 0x36c6a5c0c8b32cbaull, 0x6c83e2fb28330eddull, 0x12b65a893870d39eull, 0x7330b9f3723d7fd7ull, 0x941dc76fe805c85dull }}, {{ 0x3d1a5052a2954aafull, 0x23c27987d6ffbf49ull, 0x3d26ddcf91fe94a4ull, 0xbb1f895c34684430ull, 0x7fe743827666fe66ull, 0xc929ca5f1039d3a6ull }}, {{ 0x6307233a59d4ead3ull, 0x6598bf4e65fd78dcull, 0x6384aa1bb3f1ce69ull, 0x4f3b5d9a0c12a9e2ull, 0xff08a318a005f003ull, 0xdba1e7b6a2424480ull }}, {{ 0xde47604782512c3aull, 0xf7f7790ffbe6b89bull, 0xe32ea5150772101dull, 0x1851a80478baa2d7ull, 0xf6565ef6403b6021ull, 0x94530d225696ad09ull }}, {{ 0xaec9c2cb172bba47ull, 0xafaaba9fd7033616ull, 0xdfd272d24a74a12bull, 0xf330902cb74a5c6eull, 0x9f5fb59e8251c14aull, 0xcb3e835761e2c263ull }}, {{ 0xd3e19beee7b546caull, 0xdcab4a3e66201ce2ull, 0xbe387c36e88e4bb4ull, 0x7fe5a1bf28e79c54ull, 0x39bd183117318cedull, 0xf0712169d2db97e4ull }}, {{ 0x46d017550d14c3dfull, 0x9eb0e66ffd4120dcull, 0x6e34da25158ef510ull, 0xfef85177990c1b4full, 0x4162f1eae7ef8146ull, 0x646b4e223c93eeeaull }}, {{ 0xc420e95282cfa6b9ull, 0x32e9005fe48b489aull, 0x4e108572d79592a6ull, 0xf5b32eabfa79111aull, 0x8ddd732d0f5b0cc5ull, 0xec310d565dc75526ull }}, {{ 0xa9491d391c1c833cull, 0xfd1a03beed70d60bull, 0x0ca5367c6bd7ba7dull, 0x98ffd2b7c8baab07ull, 0x8aa67fc2998e7fbbull, 0x39ea855fa9c95381ull }}, {{ 0x9cdb243b191d2057ull, 0xe304257546685c74ull, 0x7e7420dc366d48ebull, 0xf9fe3b2dd74aae46ull, 0x6a80fd99ff90fd53ull, 0x432935bca1dd430full }}, {{ 0x208f6a4efb234361ull, 0xde297694c0139c8eull, 0xf089489a2044d936ull, 0xc3ee4fca68eacec0ull, 0x2909e803fba9e547ull, 0x9f9c195e52a49e9aull }}, {{ 0x459a2715cf60a1cbull, 0xad9ea1cf80c41d8dull, 0x655cd60542b07c24ull, 0xa74f1de8192c1389ull, 0x9a631027d4a2f4cdull, 0x3c18fdaf3a6e3205ull }}, {{ 0xb80586da19c651edull, 0xc832521b07a92784ull, 0xf5a05c349ae4d96eull, 0x89172b10fbb8c35dull, 0x07dea18e4e5d9008ull, 0x58f9e8d8484df438ull }}, {{ 0x3037448501bf333dull, 0xd1f7350e4c9b8b2full, 0x98439a0e0cf07e53ull, 0x5ae7aea9d537a1abull, 0x4eb24f8f0fa7a055ull, 0x79c31872d30b8a30ull }}, {{ 0xe228ad3211780067ull, 0x33a8128efe136fd7ull, 0xf2a4048c8164ef46ull, 0x8d0cd2a2542c50b3ull, 0x12f71b969c8c4355ull, 0xc19ef47c3e7365e3ull }}, {{ 0xd596c3f4aeb00404ull, 0x0490b995ecc25e6eull, 0x7a682d7d0df158beull, 0x82803a5749bb2707ull, 0xbda713e21d7aa157ull, 0x90358cda7081fadeull }}, {{ 0x57e3a78ed2e0282aull, 0x2da73fdb3f97b054ull, 0xc811c6e28b6d776cull, 0x19024768e14f864aull, 0x6886c6d526ca4d6bull, 0xa21780886513ccb3ull }}, {{ 0x6ee48b943cc191a6ull, 0xc8887e907bece34bull, 0xd0b1c4d97246aa39ull, 0xfa16ca18cd1b3eebull, 0x1543c45383e7062eull, 0x54eb0553f2c5ff02ull }}, {{ 0x54ed73ca5f8fb081ull, 0xd554f1a4d740e0f2ull, 0x26f1b07e76c2a641ull, 0xc4e3e4f803107536ull, 0xd4a5ab4327063dd5ull, 0x512e35477bbbf614ull }}, {{ 0x514685e7bb9ce508ull, 0x555170706888c977ull, 0x8570e4f0a39a7e92ull, 0xb0e6f1b01ea4941dull, 0x4e78b09f863e6a59ull, 0x2bce14cad5579cd0ull }}, {{ 0x2cc13b0d5420f250ull, 0x552e64641557dea9ull, 0x3668f1666408f1b7ull, 0xe90570e1326dc927ull, 0x10b6e63b3e702780ull, 0xb60ccfec556c2023ull }}, {{ 0xbf8c4e854949771eull, 0x53cfebe8d56eb29bull, 0x20196dffe8597129ull, 0x1a3668cbf849db88ull, 0xa724fe5070618b09ull, 0x1c801f3b5639415eull }}, {{ 0x7b7b1134dcdea72aull, 0x461f37185652fa15ull, 0x40fe4bff137e6b9dull, 0x062017f7b2e29351ull, 0x8771ef2463cf6e5bull, 0x1d0138515e3c8db2ull }}, {{ 0xd2ceac10a0b287a5ull, 0xbd3826f35f3dc4d6ull, 0x89eef7f6c2f03424ull, 0x3d40efacfcd9c12cull, 0x4a73576be61a4f8eull, 0x220c332dae5d88f9ull }}, {{ 0x3c12b8a646f94c72ull, 0x64318581b869b064ull, 0x6355afa39d62096full, 0x64895cc1e0818bbdull, 0xe8816a36fd071b8eull, 0x5479ffc8cfa759bcull }}, {{ 0x58bb367ec5bcfc71ull, 0xe9ef37113420e3eaull, 0xe158dc6425d45e59ull, 0xed5d9f92c50f7565ull, 0x150e2625e247138full, 0x4cc3fdd81c898161ull }}, {{ 0x775020f3b961dc6aull, 0x235826ac0948e727ull, 0xcd789be97a4baf83ull, 0x45a83bbbb29a95faull, 0xd28d7d7ad6c6c39full, 0xffa7ea711d5f0dcaull }}, {{ 0xa92149853dd29c21ull, 0x617182b85cd9078aull, 0x06b6171ec6f4db1full, 0xb8925554fa09dbccull, 0x3986e6cc63c3a438ull, 0xfc8f286b25b689ecull }}, {{ 0x9b4cdf346a3a194cull, 0xce6f1b33a07a4b6aull, 0x431ce733c5908f39ull, 0x35b75551c46295f8ull, 0x3f4503fbe5a46a37ull, 0xdd97942f7921633aull }}, {{ 0x1100b80c2644fcf9ull, 0x1057100444c6f22aull, 0x9f210805b7a59842ull, 0x19295531abd9dbb2ull, 0x78b227d6f86c2628ull, 0xa7ebc9dabb4de046ull }}, {{ 0xaa0730797eb1e1b6ull, 0xa366a02aafc575a4ull, 0x374a50392c77f294ull, 0xfb9d53f0b68294faull, 0xb6f58e65b4397d90ull, 0x8f35e28b510ac2c0ull }}, {{ 0xa447e4bef2f2d11bull, 0x620241aaddb6986eull, 0x28e7223bbcaf79ceull, 0xd42547672119d1c6ull, 0x25978ff90a3ee7a9ull, 0x981ad9712a6b9b87ull }}, {{ 0x6aceef757d7c2b11ull, 0xd41690aca921f452ull, 0x990756555edac20full, 0x4974ca074b0231bdull, 0x77eb9fba66750ca2ull, 0xf10c7e6ba8341347ull }}, {{ 0x2c155a96e6d9aea8ull, 0x48e1a6be9b538b38ull, 0xfa495f55b48b949eull, 0xde8fe448ee15f167ull, 0xaf343d4800927e56ull, 0x6a7cf0349208c0caull }}, {{ 0xb8d589e50480d28cull, 0xd8d0837211437031ull, 0xc6ddb9590d73ce2eull, 0xb19eead94cdb6e0full, 0xd80a64d005b8ef64ull, 0x28e1620db45787eaull }}, {{ 0x385762f22d083975ull, 0x78252274aca261f1ull, 0xc4a93d7a86860dd4ull, 0xf0352c7d00924c9dull, 0x7067f020393959eeull, 0x98cdd4890b6b4f2cull }}, {{ 0x3369dd75c2523e90ull, 0xb173588ebe57d36cull, 0xae9c66c9413c8a4cull, 0x6213bce205b6fe29ull, 0x640f61423c3d8355ull, 0xf80a4d5a723117bcull }}, {{ 0x0222a699973671a2ull, 0xee8175936f6e423aull, 0xd21c03dc8c5d66feull, 0xd4c560d43925eda0ull, 0xe899cc965a672155ull, 0xb067058875eaed5bull }}, {{ 0x155a81ffe8207059ull, 0x510e97c25a4e9644ull, 0x3518269d7ba605f5ull, 0x4fb5c84a3b7b4848ull, 0x1601fddf88074d5aull, 0xe40637549b2d4597ull }}, {{ 0xd58913ff11446378ull, 0x2a91ed978711dea8ull, 0x12f18226d47c3b95ull, 0x1d19d2e652d0d2d2ull, 0xdc13eabb50490587ull, 0xe83e294e0fc4b7e6ull }}, {{ 0x575ac7f6acabe2acull, 0xa9b347eb46b2b298ull, 0xbd6f15844cda53d3ull, 0x23023cff3c283c34ull, 0x98c72b5122da3747ull, 0x126d9d0c9daf2f04ull }}, {{ 0x698bcfa2beb6dab4ull, 0xa100cf30c2faf9f3ull, 0x6656d72b00874644ull, 0x5e1661f859925a0full, 0xf7c7b12b5c8628c7ull, 0xb848227e28d7d62dull }}, {{ 0x1f761c5b73248b07ull, 0x4a0817e79dcdc382ull, 0xff6467ae0548beaeull, 0xacdfd3b37fb78499ull, 0xadccebb19d3d97c9ull, 0x32d158ed986e5dcbull }}, {{ 0x3a9d1b927f6d6e46ull, 0xe450ef0c2a09a315ull, 0xf9ec0ccc34d772ceull, 0xc0be4502fd2b2e03ull, 0xca0134f02467ede0ull, 0xfc2d7947f44fa9f4ull }}, {{ 0x4a2313b8fa464ebbull, 0xeb295679a4605ed4ull, 0xc3387ffa106a7c14ull, 0x876eb21de3afcc27ull, 0xe40c11616c0f4ac7ull, 0xd9c6bccf8b1ca38full }}, {{ 0xe55ec539c6bf134full, 0x2f9d60c06bc3b44aull, 0xa034ffc4a428d8d1ull, 0x4a52f52ae4ddf98dull, 0xe878adce3898ebcbull, 0x81c3601b6f1e639eull }}, {{ 0xf5b3b441c376c116ull, 0xdc25c78435a50aecull, 0x4211fdae6998782bull, 0xe73d93acf0abbf88ull, 0x14b6ca0e35f935f0ull, 0x11a1c112572fe435ull }}, {{ 0x99050a91a2a38ad7ull, 0x9979cb2a18726d41ull, 0x94b3e8d01ff4b1b6ull, 0x0867c4c166b57b52ull, 0xcf23e48e1bbc1b69ull, 0xb0518ab767deea12ull }}, {{ 0xfa3269b05a636c66ull, 0xfec1efa4f478448full, 0xcf0718213f8ef121ull, 0x540daf8e0316d139ull, 0x1766ed8d1559121aull, 0xe32f6b2a0eb524bcull }}, {{ 0xc5f820e387e23bffull, 0xf3935c718cb2ad9full, 0x1646f14c7b956b53ull, 0x4888db8c1ee42c42ull, 0xea054782d57ab507ull, 0xdfda2fa493136f58ull }}, {{ 0xbbb148e34ed657f4ull, 0x83c19c6f7efac83dull, 0xdec56cfcd3d63147ull, 0xd558937934e9ba94ull, 0x2434cb1c56cb1248ull, 0xbe85dc6dbec25979ull }}, {{ 0x54ecd8e1145f6f8bull, 0x25901c5af5cbd269ull, 0xb3b641e0465deccbull, 0x5575c2bc112149d0ull, 0x6a0fef1b63eeb6d8ull, 0x713a9c4973977ebbull }}, {{ 0x514078cacbba5b6eull, 0x77a11b8d99f6381dull, 0x051e92c2bfab3fefull, 0x56999b58ab4ce227ull, 0x249f5711e7532473ull, 0x6c4a1ade83eaf352ull }}, {{ 0x2c84b7ebf547924bull, 0xac4b1388039e3125ull, 0x3331bb9b7cb07f5aull, 0x62001176b100d586ull, 0x6e3966b3093f6c81ull, 0x3ae50cb1272d8135ull }}, {{ 0xbd2f2f3794cbb6f0ull, 0xbaeec350242deb73ull, 0xfff15412dee4f98aull, 0xd400aea2ea08573dull, 0x4e3e02fe5c7a3d0dull, 0x4cf27eeb87c70c16ull }}, {{ 0x63d7d82bcff5255cull, 0x4d53a12169cb3285ull, 0xff6d48bcb4f1bf6bull, 0x4806d25d2453686bull, 0x0e6c1def9cc6628aull, 0x0178f5334dc678dfull }}, {{ 0xe66e71b61f937598ull, 0x05444b4e21eff935ull, 0xfa44d75f11717a31ull, 0xd04437a36b421437ull, 0x90392b5c1fbfd966ull, 0x0eb9940109c0b8b6ull }}, {{ 0x0050711d3bc297f2ull, 0x34aaf10d535fbc1bull, 0xc6b069b6ae6ec5eaull, 0x22aa2c623094ca2full, 0xa23bb1993d7e7e04ull, 0x933fc80a61873721ull }}, {{ 0x03246b245599ef76ull, 0x0ead6a8541bd590eull, 0xc2e42122d053bb26ull, 0x5aa5bbd5e5cfe5ddull, 0x5654effc66f0ec29ull, 0xc07dd067cf482750ull }}, {{ 0x1f6c2f6b58035a9eull, 0x92c6293491657a8cull, 0x9ce94b5c23454f7cull, 0x8a79565afa1efaa9ull, 0x5f515fdc0569399dull, 0x84ea240e18d18923ull }}, {{ 0x3a39da3170218a2full, 0xbbbd9c0dadf6c979ull, 0x211cf19960b51addull, 0x68bd5f8dc535caa0ull, 0xb92dbe98361c4027ull, 0x3125688cf82f5b61ull }}, {{ 0x464285ee614f65d5ull, 0x55681888cba3debcull, 0x4b216ffdc7130ca9ull, 0x1765bb89b419ea41ull, 0x3bc971f21d1a818aull, 0xeb761581b1d991d1ull }}, {{ 0xbe993b4fcd19fa4eull, 0x5610f557f466b35aull, 0xef4e5fe9c6be7e9dull, 0xe9f953610903268cull, 0x55de737523090f64ull, 0x329cd710f27fb22cull }}, {{ 0x71fc511e0303c70full, 0x5ca9956f8c03018bull, 0x590fbf21c370f225ull, 0x23bd41ca5a1f8181ull, 0x5ab082935e5a99f1ull, 0xfa2066a978fcf5bbull }}, {{ 0x73db2b2c1e25c698ull, 0x9e9fd65b781e0f72ull, 0x7a9d7751a2697575ull, 0x656491e7853b0f0dull, 0x8ae519c1af8a036bull, 0xc544029eb9e19951ull }}, {{ 0x868fafb92d79c1ecull, 0x323e5f92b12c9a78ull, 0xca26a930581e9698ull, 0xf5edb30b344e9686ull, 0x6cf30190db642231ull, 0xb4a81a3342cffd2full }}, {{ 0x419cdd3bc6c1933aull, 0xf66fbbbaebbe08b5ull, 0xe5829be37131e1f1ull, 0x9b48fe700b11e143ull, 0x417e0fa891e955f3ull, 0x0e9106009c1fe3daull }}, {{ 0x9020a455c38fc045ull, 0xa05d554d356c5714ull, 0xf71a16e26bf2d373ull, 0x10d9f0606eb2cca6ull, 0x8eec9c95b31d5b84ull, 0x91aa3c06193ee686ull }}, {{ 0xa1466b59a39d82b4ull, 0x43a55504163b66cdull, 0xa704e4d8377c4284ull, 0xa88363c452fbfe85ull, 0x953e1dd8ff259328ull, 0xb0a6583cfc750141ull }}, {{ 0x4cc0318064271b0bull, 0xa4755228de520408ull, 0x8630f0722ada992aull, 0x9521e5ab3dd7f138ull, 0xd46d2a79f777bf96ull, 0xe67f7261dc920c8full }}, {{ 0xff81ef03e9870e71ull, 0x6c953598af342852ull, 0x3de96475ac89fbaaull, 0xd352f8b06a6f6c35ull, 0x4c43a8c3aaad7be1ull, 0x00fa77d29db47d9eull }}, {{ 0xfb1356271f469068ull, 0x3dd417f6d809933dull, 0x6b1dec98bd63d4a8ull, 0x413db6e4285a3a14ull, 0xfaa497a4aac6d6d2ull, 0x09c8ae3a290ce82eull }}, {{ 0xcec15d8738c1a410ull, 0x6a48efa4705fc06bull, 0x2f2b3df765e64e92ull, 0x8c6924e9938644ccull, 0xca6dec6eabc46436ull, 0x61d6ce459a8111d5ull }}, {{ 0x138da7483790689cull, 0x26d95c6c63bd8436ull, 0xd7b06ba9faff11b8ull, 0x7c1b711fc33eaff9ull, 0xe84b3c52b5abea21ull, 0xd2640eb8090ab259ull }}, {{ 0xc38888d22ba41617ull, 0x847d9c3be5672a1cull, 0x6ce434a3cdf6b131ull, 0xd9126b3da072dfc2ull, 0x12f05b3b18b7254eull, 0x37e893305a6af783ull }}, {{ 0xa3555835b468dce3ull, 0x2ce81a56f607a51full, 0x40ea0e660ba2ebefull, 0x7ab83068447cbd98ull, 0xbd63904ef7277514ull, 0x2f15bfe3882dab1eull }}, {{ 0x615572190c18a0e2ull, 0xc11107659c4c733cull, 0x89248ffc745d3757ull, 0xcb31e412acdf67f2ull, 0x65e3a315a78a92ccull, 0xd6d97ee351c8af33ull }}, {{ 0xcd5674fa78f648d5ull, 0x8aaa49f81afc805bull, 0x5b6d9fdc8ba4296dull, 0xeff2e8bac0ba0f79ull, 0xfae45ed88b69bbffull, 0x647ef4e131d6d801ull }}, {{ 0x056091c8b99ed854ull, 0x6aa6e3b10ddd0396ull, 0x92483e9d74699e47ull, 0x5f7d174b87449abdull, 0xccebb475722157ffull, 0xecf590cbf2647013ull }}, {{ 0x35c5b1d740347347ull, 0x2a84e4ea8aa223dcull, 0xb6d272268c202ecaull, 0xbae2e8f348ae0b67ull, 0x01350c96754d6ff9ull, 0x4197a7f777ec60c6ull }}, {{ 0x19b8f268820c80c2ull, 0xa930f1296a55669aull, 0x243875817941d3e5ull, 0x4cdd1980d6cc720dull, 0x0c127de095065fc1ull, 0x8fec8faaaf3bc7bcull }}, {{ 0x01397815147d0792ull, 0x9be96b9e27560205ull, 0x6a34970ebc9246f8ull, 0x00a2ff0863fc7483ull, 0x78b8eac5d23fbd8dull, 0x9f3d9caad855cd58ull }}, {{ 0x0c3eb0d2cce24bb5ull, 0x171e342d895c1432ull, 0x260de6935db6c5b6ull, 0x065df653e7dc8d22ull, 0xb7392bba367d6782ull, 0x38681eac735a0574ull }}, {{ 0x7a72e83c00d6f513ull, 0xe72e09c75d98c9f4ull, 0x7c8b01c1a923b91cull, 0x3fab9f470e9d8355ull, 0x283bb54620e60b14ull, 0x341132bc8184368full }}, {{ 0xc87d1258086592baull, 0x07cc61c9a7f7e38cull, 0xdd6e11909b653b21ull, 0x7cb438c692272156ull, 0x925514bd48fc6ecaull, 0x08abfb5d0f2a2197ull }}, {{ 0xd4e2b77053f7bb40ull, 0x4dfbd1e08faee37full, 0xa64cafa611f44f4aull, 0xdf0a37c1b5874d64ull, 0xb752cf64d9dc53e8ull, 0x56b7d1a297a54febull }}, {{ 0x50db2a6347ad5081ull, 0x0bd632c59cd4e2feull, 0x7efedc7cb38b18e7ull, 0xb6662d91174905eeull, 0x293c19f0829b4718ull, 0x632e3059ec751f35ull }}, {{ 0x288fa7e0ccc52507ull, 0x765dfbb82050ddefull, 0xf5f49cdf036ef906ull, 0x1ffdc7aae8da3b50ull, 0x9c5903651a10c6f7ull, 0xdfcde3833c933813ull }}, {{ 0x959c8ec7ffb37245ull, 0x9fabd5314328ab57ull, 0x9b8e20b62255ba40ull, 0x3fe9ccad18865129ull, 0x1b7a21f304a7c5a7ull, 0xbe0ae3205dc030c4ull }}, {{ 0xd81d93cffd0276afull, 0x3cb653ec9f96b16bull, 0x138d471d57594686ull, 0x7f21fec2f53f2ba0ull, 0x12c5537e2e8db888ull, 0x6c6cdf43a981e7a9ull }}, {{ 0x7127c61fe218a2d6ull, 0x5f1f473e3be2ee36ull, 0xc384c725697cc13eull, 0xf753f39d9477b440ull, 0xbbb542edd1893554ull, 0x3c40b8a49f130c9aull }}, {{ 0x6b8dbd3ed4f65c5bull, 0xb738c86e56dd4e20ull, 0xa32fc7761edf8c6full, 0xa9478427ccad0a87ull, 0x55149d4a2f5c1551ull, 0x5a87366e36be7e0bull }}, {{ 0x33896474519f9b8bull, 0x2837d44f64a50d44ull, 0x5fddca9d34bb7c5dull, 0x9ccb298dfec2694cull, 0x52ce24e5d998d530ull, 0x8948204e2370ec71ull }}, {{ 0x035dec8b303c1373ull, 0x922e4b19ee7284aaull, 0xbea9ea240f52dba3ull, 0x1fef9f8bf3981cfbull, 0x3c0d70fa7ff853e6ull, 0x5cd1430d62693c6dull }}, {{ 0x21ab3d6fe258c27dull, 0xb5ceef0350792ea4ull, 0x72a32568993c9463ull, 0x3f5c3b7783f121d5ull, 0x588669c8ffb346fdull, 0xa02c9e85d81c5c44ull }}, {{ 0x50b0665ed77798e7ull, 0x1a15562124bbd269ull, 0x7a5f7615fc5dcbe5ull, 0x799a52ab276b5256ull, 0x754021d9fd00c5e4ull, 0x41be313a711b9aabull }}, {{ 0x26e3ffb46aabf905ull, 0x04d55d4b6f56381dull, 0xc7ba9cdbdba9f6f3ull, 0xc0073aaf8a313760ull, 0x94815283e207baecull, 0x916dec486b140ab2ull }}, {{ 0x84e7fd0c2ab7ba35ull, 0x3055a4f2595e3123ull, 0xcd4a209694a3a57eull, 0x80484adb65ec29c7ull, 0xcd0d3926d44d4d3full, 0xae4b3ad42ec86af9ull }}, {{ 0x310fe279ab2d4616ull, 0xe35871777dadeb63ull, 0x04e545e1ce6476edull, 0x02d2ec91fb39a1ceull, 0x02843b844b05047bull, 0xcef04c49d3d42dc2ull }}, {{ 0xea9ed8c0afc4bcdfull, 0xe1746eaae8cb31dfull, 0x30f4bad20feca54aull, 0x1c3d3db3d040520cull, 0x192a532aee322cceull, 0x1562fae24649c994ull }}, {{ 0x2a347786ddaf60b8ull, 0xce8c52ad17eff2bfull, 0xe98f4c349f3e74ecull, 0x1a64690622833479ull, 0xfba73fad4df5c00dull, 0xd5ddccd6bee1dfc8ull }}, {{ 0xa60cab44a8d9c731ull, 0x117b3ac2ef5f7b77ull, 0x1f98fa0e38709140ull, 0x07ec1a3d59200cc3ull, 0xd4887cc50b998083ull, 0x5aaa006374d2bdd9ull }}, {{ 0x7c7eb0ae9881c7e7ull, 0xaed04b9d59bad2acull, 0x3bf9c48e3465ac80ull, 0x4f3906657b407f9full, 0x4d54dfb273ff051eull, 0x8aa403e2903b6a82ull }}, {{ 0xdcf2e6d1f511cf01ull, 0xd422f425814c3abcull, 0x57c1ad8e0bf8bd06ull, 0x183a3ff6d084fc38ull, 0x0550bcf887f6332full, 0x6a6826d9a2522917ull }}, {{ 0xa17d043392b2160bull, 0x495d89770cfa4b60ull, 0x6d90c78c77b76244ull, 0xf2467fa42531da33ull, 0x352761b54f9dffd6ull, 0x2811848057359ae6ull }}, {{ 0x4ee22a03baf4dc6bull, 0xdda75ea681c6f1c6ull, 0x47a7cb7cad29d6aaull, 0x76c0fc6973f28602ull, 0x1389d1151c2bfe65ull, 0x90af2d0368180cfeull }}, {{ 0x14d5a4254d909c2cull, 0xa889b28111c571bfull, 0xcc8df2dec3a262acull, 0xa389dc1e87793c16ull, 0xc3622ad319b7eff6ull, 0xa6d7c22210f081ecull }}, {{ 0xd058697507a619b7ull, 0x9560f90ab1b67176ull, 0xfd8b7cb3a457dabeull, 0x636299314abc58e3ull, 0xa1d5ac3f012f5fa2ull, 0x846d9554a965133full }}, {{ 0x23741e924c7d0123ull, 0xd5c9ba6af1206ea4ull, 0xe772df046b6e8b71ull, 0xe1d9fbeceb5b78e7ull, 0x5258ba760bd9bc57ull, 0x2c47d54e9df2c07cull }}, {{ 0x628931b6fce20b5dull, 0x59e1482d6b445269ull, 0x0a7cb62c32517272ull, 0xd283d7413192b90full, 0x3777489c76815b6eull, 0xbace55122b7b84dbull }}, {{ 0xd95bf125e0d471a4ull, 0x82ccd1c630ab381dull, 0x68df1db9f72e7877ull, 0x3926688befbb3a96ull, 0x2aa8d61ca10d9254ull, 0x4c0f52b5b2d33090ull }}, {{ 0x7d976b7ac84c7069ull, 0x1c0031bde6b0312aull, 0x18b72943a7d0b4abull, 0x3b8015775d5049e0ull, 0xaa985d1e4a87b74aull, 0xf8993b18fc3fe5a1ull }}, {{ 0xe7ea32cbd2fc641aull, 0x1801f16b02e1eba8ull, 0xf7279ca48e270eafull, 0x5300d6a9a522e2c0ull, 0xa9f3a32ee94d28e6ull, 0xb5fc4ef9da7ef850ull }}, {{ 0x0f25fbf63ddbe902ull, 0xf0136e2e1cd33499ull, 0xa78c1e6d8d8692d6ull, 0x3e0862a0735cdb89ull, 0xa3845fd51d0398ffull, 0x1bdb15c288f5b326ull }}, {{ 0x977bd79e6a971a14ull, 0x60c24dcd20400dfaull, 0x8b7930478741bc65ull, 0x6c53da4481a09360ull, 0x632bbe532223f9f8ull, 0x168ed9995998ff82ull }}, {{ 0xead66c3029e704c3ull, 0xc7970a0342808bc9ull, 0x72bbe2cb48915bf5ull, 0x3b4686ad1045c1c5ull, 0xdfb56f3f5567c3b4ull, 0xe1947ffd7ff9fb17ull }}, {{ 0x2c6039e1a3062f9full, 0xcbe66420990575e3ull, 0x7b56dbf0d5ad9799ull, 0x50c142c2a2b991b6ull, 0xbd165879560da50aull, 0xcfccffe6ffc3ceeeull }}, {{ 0xbbc242d05e3ddc38ull, 0xf6ffe945fa369adfull, 0xd164976858c7ec01ull, 0x278c9b9a5b3fb120ull, 0x62df74bd5c887267ull, 0x1e01ff05fda61553ull }}, {{ 0x55969c23ae6a9a2eull, 0xa5ff1cbbc6220cbdull, 0x2dedea1377cf3813ull, 0x8b7e1407907ceb48ull, 0xdcba8f659d547807ull, 0x2c13f63be87cd541ull }}, {{ 0x57e21964d02a05d0ull, 0x7bf71f55bd547f65ull, 0xcb4b24c2ae1830c4ull, 0x72ecc84ba4e130d1ull, 0x9f4999f8254cb04bull, 0xb8c79e5714e05492ull }}, {{ 0x6ed4fdf021a43a1dull, 0xd7a73959654cf9f5ull, 0xf0ef6f9accf1e7acull, 0x7d3fd2f470cbe831ull, 0x38e003b174fee2f2ull, 0x37cc2f66d0c34dbaull }}, {{ 0x5451eb61506a4525ull, 0x6c883d7df501c396ull, 0x695a5c0c01730cc0ull, 0xe47e3d8c67f711f3ull, 0x38c024ee91f4dd78ull, 0x2df9da0427a10946ull }}, {{ 0x4b3331cd2426b373ull, 0x3d5266eb9211a3dfull, 0x1d8798780e7e7f84ull, 0xecee677c0fa6b382ull, 0x37817151b390a6b8ull, 0xcbc284298c4a5cbeull }}, {{ 0xeffff2036983027bull, 0x65380533b4b066b8ull, 0x274bf4b090f0fb2aull, 0x41500ad89c830315ull, 0x2b0e6d3103a68339ull, 0xf599299f7ae79f6eull }}, {{ 0x5fff74221f1e18cdull, 0xf43034050ee40339ull, 0x88f78ee5a969cfa7ull, 0x8d206c761d1e1ed3ull, 0xae9043ea2481203cull, 0x97fba03acd0c3a4dull }}, {{ 0xbffa8955372cf801ull, 0x89e2083294e8203dull, 0x59ab94f89e221c8full, 0x83443c9d232d3443ull, 0xd1a2a7256d0b425dull, 0xefd4424c027a4708ull }}, {{ 0x7fc95d5427c1b008ull, 0x62d451f9d1114269ull, 0x80b3d1b62d551d9bull, 0x20aa5e235fc40aa1ull, 0x305a8776427097a7ull, 0x5e4a96f818c6c658ull }}, {{ 0xfddda5498d90e051ull, 0xdc4b33c22aac981eull, 0x0706311dc5532811ull, 0x46a7ad61bda86a4full, 0xe3894a9e9865ec87ull, 0xaee9e5b0f7c3bf71ull }}, {{ 0xeaa874df87a8c32bull, 0x9af00595aabdf135ull, 0x463deb29b53f90b2ull, 0xc28cc5d168942716ull, 0xe35cea31f3fb3d48ull, 0xd522f8e9ada57a72ull }}, {{ 0x2a9490bb4c979facull, 0x0d6037d8ab6b6c1bull, 0xbe6b2fa1147ba6faull, 0x997fba2e15c986deull, 0xe1a125f387d064d7ull, 0x535db920c876c87cull }}, {{ 0xa9cda750fdec3cbcull, 0x85c22e76b232390full, 0x702fdc4accd485c4ull, 0xfefd45ccd9df44b3ull, 0xd04b7b834e23f06bull, 0x41a93b47d4a3d4e0ull }}, {{ 0xa2088929eb3a5f55ull, 0x3995d0a2f5f63a9cull, 0x61de9aec004d39adull, 0xf5e4ba0082b8af02ull, 0x22f2d3210d676437ull, 0x909c50ce4e6650c8ull }}, {{ 0x54555ba33047b94dull, 0x3fda265d9b9e4a1eull, 0xd2b20d38030440c4ull, 0x9aef44051b36d617ull, 0x5d7c3f4a8609ea2full, 0xa61b280f0fff27d1ull }}, {{ 0x4b55945fe2cd3d04ull, 0x7e857fa8142ee52full, 0x3af484301e2a87aaull, 0x0d58a83310245ceeull, 0xa6da78e93c6325dcull, 0x7d0f90969ff78e2dull }}, {{ 0xf157cbbedc04622bull, 0xf136fc90c9d4f3d8ull, 0x4d8d29e12da94ca8ull, 0x857691fea16ba14eull, 0x8488b91c5bdf7a98ull, 0xe29ba5e23fab8dc8ull }}, {{ 0x6d6df574982bd5abull, 0x6c25dda7e2518679ull, 0x0783a2cbc89cfe99ull, 0x36a1b3f24e344d0full, 0x2d573b1b96bac9f5ull, 0xda147ad67cb389d5ull }}, {{ 0x464b968df1b658b0ull, 0x397aa88ed72f40beull, 0x4b245bf5d621f1feull, 0x225107770e0b0296ull, 0xc5684f13e34be394ull, 0x84cccc60df036253ull }}, {{ 0xbef3e18b711f76dbull, 0x3eca959467d8876eull, 0xef6b979a5d5373eeull, 0x572a4aa68c6e19deull, 0xb61316c6e0f6e3c9ull, 0x2ffffbc8b621d745ull }}, {{ 0x7586cf726b3aa491ull, 0x73e9d7cc0e754a53ull, 0x5a33ec07a542874eull, 0x67a6ea817c4d02b5ull, 0x1cbee3c4c9a4e5ddull, 0xdfffd5d71d5268b9ull }}, {{ 0x97441a78304a6daaull, 0x87226df89094e742ull, 0x8607384c74994910ull, 0x0c85290edb021b15ull, 0x1f74e5afe070faa6ull, 0xbffe5a672538173bull }}, {{ 0xe8a908b1e2e848a3ull, 0x47584bb5a5d10899ull, 0x3c4832fc8dfcdaa5ull, 0x7d339a948e150ed7ull, 0x3a90f8dec469ca7cull, 0x7fef88077430e84full }}, {{ 0x169a56f2dd12d65cull, 0xc972f5187a2a5603ull, 0x5ad1fddd8be08a74ull, 0xe40409cd8cd29468ull, 0x49a9b8b3ac21e8dcull, 0xff5b504a89e91318ull }}, {{ 0xe207657ca2bc5f9aull, 0xde7d92f4c5a75c1eull, 0x8c33eaa776c5688full, 0xe82862078039cc13ull, 0xe0a13704b95318a0ull, 0xf99122e9631abef2ull }}, {{ 0xd449f6de5b5bbc08ull, 0xb0e7bd8fb8899934ull, 0x7a072a8aa3b6159eull, 0x1193d44b0241f8c3ull, 0xc64c262f3d3ef649ull, 0xbfab5d1ddf0b757cull }}, {{ 0x4ae3a4af91955850ull, 0xe90d679d355ffc10ull, 0xc447a96a651cd832ull, 0xafc64aee1693b7a2ull, 0xbef97dd864759edaull, 0x7cb1a32ab67296dfull }}, {{ 0xece46edbafd57323ull, 0x1a860c2415bfd8a2ull, 0xaacc9e27f32071fdull, 0xddbeed4ce1c52c5bull, 0x75beea73ec98348aull, 0xdef05fab2079e4bdull }}, {{ 0x40ec5494de567f5dull, 0x093c7968d97e765dull, 0xabfe2d8f7f4473e3ull, 0xa9754500d1b3bb94ull, 0x997528873df20d6cull, 0xb563bcaf44c2ef66ull }}, {{ 0x893b4dd0af60f9a6ull, 0x5c5cbe187ef09fa4ull, 0xb7edc79af8ac86deull, 0x9e94b208310553ceull, 0xfe9395486b74863eull, 0x15e55ed8af9d5a01ull }}, {{ 0x5c510a26d9c9c07cull, 0x9b9f6cf4f5663c6dull, 0x2f49cc0db6bd44afull, 0x31cef451ea354613ull, 0xf1c3d4d4328d3e72ull, 0xdaf5b476dc258413ull }}, {{ 0x9b2a658481e184d7ull, 0x143a419195fe5c45ull, 0xd8e1f8892364aedcull, 0xf2158b332614bcbfull, 0x71a65049f9847075ull, 0x8d990ca4997728c7ull }}, {{ 0x0fa7f72d12cf3069ull, 0xca468fafdbef9ab8ull, 0x78d3b55b61eed498ull, 0x74d76fff7ccf5f7eull, 0x707f22e3bf2c649bull, 0x87fa7e6dfea797caull }}, {{ 0x9c8fa7c2bc17e416ull, 0xe6c19cde975c0b30ull, 0xb8451591d3544df7ull, 0x906a5ffae019baf0ull, 0x64f75ce577bbee12ull, 0x4fc8f04bf28bede8ull }}, {{ 0x1d9c8d9b58eee8dfull, 0x039020b1e9986fe6ull, 0x32b2d7b2414b0bafull, 0xa427bfccc1014d67ull, 0xf1a9a0f6ad574cb9ull, 0x1dd962f779774b13ull }}, {{ 0x281d8811795518b5ull, 0x23a146f31ff45efdull, 0xfafc6cf68cee74d6ull, 0x698d7dff8a0d0607ull, 0x70a049a2c568ff40ull, 0x2a7dddaabea8eec7ull }}, {{ 0x912750aebd52f713ull, 0x644cc57f3f8bb5e3ull, 0xcddc41a18150905dull, 0x1f86ebfb64823c4full, 0x6642e05bb619f884ull, 0xa8eaa8ab729953caull }}, {{ 0xab8926d3653da6beull, 0xeaffb6f87b751ae3ull, 0x0a9a904f0d25a3a5ull, 0x3b4537d1ed165b1eull, 0xfe9cc3951d03b529ull, 0x992a96b279fd45e7ull }}, {{ 0xb35b8441f4688369ull, 0x2dfd25b4d2930ce4ull, 0x6a09a3168378647bull, 0x50b42e3342df8f2cull, 0xf21fa3d32225139cull, 0xfba9e2f8c3e4bb0full }}, {{ 0x01932a938c152219ull, 0xcbe3791039be80efull, 0x24605ee122b3eccfull, 0x2709ce009cbb97bcull, 0x753c663f5572c41bull, 0xd4a2ddb7a6ef4e9full }}, {{ 0x0fbfa9c378d354f7ull, 0xf6e2baa241710956ull, 0x6bc3b4cb5b07401dull, 0x86620c061f53ed59ull, 0x945bfe79567ba90full, 0x4e5ca92c8559123aull }}, {{ 0x9d7ca1a2b84151a6ull, 0xa4db4a568e6a5d5cull, 0x35a50ff18e48812bull, 0x3fd4783d3947457eull, 0xcb97f0bd60d49a9bull, 0x0f9e9bbd357ab649ull }}, {{ 0x26de505b328d3080ull, 0x7090e7619027a59eull, 0x18729f6f8ed50bb4ull, 0x7e4cb2643cc8b6eeull, 0xf3ef6765c84e0a10ull, 0x9c32156416cb1ee1ull }}, {{ 0x84af238ff983e4feull, 0x65a909cfa18c782dull, 0xf47a3a5b9452750cull, 0xeefef7ea5fd7254cull, 0x875a09f9d30c64a4ull, 0x19f4d5e8e3ef34d3ull }}, {{ 0x2ed7639fbf26f1efull, 0xf89a621c4f7cb1c7ull, 0x8cc64793cb38927bull, 0x55f5af27be677501ull, 0x498463c23e7bee71ull, 0x03905b18e7581043ull }}, {{ 0xd469e43d77857354ull, 0xb607d51b1adef1c7ull, 0x7fbecbc5f035b8d7ull, 0x5b98d78d700a920full, 0xdf2be59670d7506dull, 0x23a38ef90970a2a0ull }}, {{ 0x4c22ea66ab36814bull, 0x1c4e530f0cb571ceull, 0xfd73f5bb6219386dull, 0x93f86b866069b49aull, 0xb7b6f7e068692445ull, 0x646395ba5e665a48ull }}, {{ 0xf95d2802b0210cedull, 0x1b0f3e967f16720eull, 0xe6879951d4fc3443ull, 0xc7b4333fc4210e0dull, 0x2d25aec4141b6ab7ull, 0xebe3d947afff86d7ull }}, {{ 0xbda3901ae14a813full, 0x0e9871e0f6e07495ull, 0x014bfd3251da0a9full, 0xcd0a007da94a8c8bull, 0xc378d3a8c9122b2dull, 0x36e67cccdffb4467ull }}, {{ 0x6863a10ccce90c78ull, 0x91f472c9a4c48dd9ull, 0x0cf7e3f732846a36ull, 0x026404e89ce97d6eull, 0xa2b84497dab5afcaull, 0x2500e000bfd0ac0dull }}, {{ 0x13e44a80011a7cb3ull, 0xb38c7be06fad8a7eull, 0x81aee7a7f92c2621ull, 0x17e83116211ee64cull, 0x5b32adee8b18dde4ull, 0x7208c0077e26b888ull }}, {{ 0xc6eae9000b08defeull, 0x037cd6c45cc768ecull, 0x10d50c8fbbb97d51ull, 0xef11eadd4b34fefdull, 0x8ffacb516ef8aae8ull, 0x7457804aed833553ull }}, {{ 0xc52d1a006e58b5f0ull, 0x22e063ab9fca193full, 0xa8527d9d553ee52aull, 0x56b32ca4f011f5e2ull, 0x9fcbf12e55b6ad19ull, 0x8b6b02ed47201543ull }}, {{ 0xb3c304044f771b63ull, 0x5cc3e4b43de4fc7dull, 0x9338e8255474f3a5ull, 0x62ffbe7160b39adaull, 0x3df76bcf5922c2fdull, 0x722e1d44c740d4a4ull }}, {{ 0x059e282b1aa711e1ull, 0x9fa6ef0a6af1dce9ull, 0xc03911754c918475ull, 0xddfd706dc7040c89ull, 0x6baa36197b5b9de5ull, 0x75cd24afc8884e6aull }}, {{ 0x382d91af0a86b2ccull, 0x3c8556682d72a11aull, 0x823aae94fdaf2c98ull, 0xabe66449c6287d61ull, 0x34a61cfed1942afaull, 0x9a036eddd5531028ull }}, {{ 0x31c7b0d66942fbf6ull, 0x5d356011c67a4b06ull, 0x164ad1d1e8d7bdf2ull, 0xb6ffeae1bd94e5cfull, 0x0e7d21f42fc9adcaull, 0x042254aa553ea192ull }}, {{ 0xf1cce8601c9dd79aull, 0xa415c0b1c0c6ee3dull, 0xdeec3233186d6b77ull, 0x25ff2cd167d0fa16ull, 0x90e35389dde0c9ebull, 0x29574ea754724fb4ull }}, {{ 0x720113c11e2a6c06ull, 0x68d986f187c54e6bull, 0xb539f5fef44632acull, 0x7bf7c02e0e29c4e4ull, 0xa8e14362aac7e32full, 0x9d6912894c771d0dull }}, {{ 0x740ac58b2da83838ull, 0x187f456f4db51032ull, 0x14439bf58abdfabcull, 0xd7ad81cc8da1b0efull, 0x98cca1daabcedfdaull, 0x261ab95cfca72288ull }}, {{ 0x886bb76fc892322eull, 0xf4f8b6590912a1f8ull, 0xcaa417976b6bcb58ull, 0x6cc711fd8850e956ull, 0xf7fe528ab614be8cull, 0x7d0b3da1de875955ull }}, {{ 0x54352a5dd5b5f5d1ull, 0x91b71f7a5aba53b5ull, 0xea68ebea3235f179ull, 0x3fc6b3e753291d63ull, 0xafef396b1ccf717cull, 0xe2706852b1497d5bull }}, {{ 0x4a13a7aa591b9a28ull, 0xb1273ac78b474515ull, 0x28193725f61b6ebfull, 0x7dc307093f9b25e7ull, 0xdf583e2f201a6edaull, 0xd864133aecdee594ull }}, {{ 0xe4c48ca77b140590ull, 0xeb884bcb70c8b2d4ull, 0x90fc277b9d12537cull, 0xe99e465c7c0f7b07ull, 0xb9726dd741085488ull, 0x73e8c04d40b4f7d0ull }}, {{ 0xefad7e8acec837a2ull, 0x3352f5f267d6fc50ull, 0xa9d98ad422b742e1ull, 0x202ebf9cd89ace4bull, 0x3e784a688a534d59ull, 0x871783048711ae27ull }}, {{ 0x5cc6f16c13d22c51ull, 0x013d9b780e65db29ull, 0xa27f6c495b289cccull, 0x41d37c20760c0ef4ull, 0x70b2e8156741057bull, 0x46eb1e2d46b0cd88ull }}, {{ 0x9fc56e38c635bb2aull, 0x0c6812b08ffa8f9dull, 0x58fa3add8f961ff8ull, 0x9242d9449c78958eull, 0x66fd10d6088a36d0ull, 0xc52f2dc4c2e80754ull }}, {{ 0x3db64e37be194fa7ull, 0x7c10bae59fc99c28ull, 0x79c64ca79bdd3fb0ull, 0xb69c7cae1cb5d78full, 0x05e2a85c55662425ull, 0xb3d7c9af9d10494cull }}, {{ 0x691f0e2d6cfd1c81ull, 0xd8a74cf83de01992ull, 0xc1befe8c16a47ce4ull, 0x221cdecd1f1a6b9aull, 0x3ada939b55fd6979ull, 0x066de0dc22a2dcf8ull }}, {{ 0x1b368dc641e31d0dull, 0x768901b26ac0ffb8ull, 0x9175f178e26ce0f0ull, 0x5520b4033708340bull, 0x4c89c4115be61ebbull, 0x404ac8995a5ca1b2ull }}, {{ 0x102189be92df227eull, 0xa15a10f82b89fd31ull, 0xae9b6eb8d840c964ull, 0x5347082026520873ull, 0xfd61a8ad96fd3351ull, 0x82ebd5fd879e50f6ull }}, {{ 0xa14f6171bcb758e9ull, 0x4d84a9b1b363e3eaull, 0xd21253387287ddeeull, 0x40c651417f345484ull, 0xe5d096c7e5e4012dull, 0x1d365be74c2f29a5ull }}, {{ 0x4d19ce715f29791aull, 0x072ea0f101e6e72aull, 0x34b74034794eab4full, 0x87bf2c8ef80b4d30ull, 0xfa25e3cefae80bc4ull, 0x241f9708f9d7a07aull }}, {{ 0x0302106db79ebb09ull, 0x47d2496a130507a7ull, 0x0f28820cbd12b116ull, 0x4d77bd95b07103e2ull, 0xc57ae615cd1075adull, 0x693be659c26c44cdull }}, {{ 0x1e14a4492c334e58ull, 0xce36de24be324c86ull, 0x9795147f62baeadeull, 0x06ad67d8e46a26d4ull, 0xb6ccfcda02a498c5ull, 0x1c56ff81983ab009ull }}, {{ 0x2cce6adbba010f6dull, 0x0e24ad6f6df6fd3dull, 0xebd2ccf9db4d2cb4ull, 0x42c60e78ec25844dull, 0x2401e0841a6df7b2ull, 0x1b65fb0ff24ae061ull }}, {{ 0xc0102c95440a9a46ull, 0x8d6ec65a4ba5e463ull, 0x363c01c29103bf08ull, 0x9bbc90b939772b0bull, 0x6812c529084bacf6ull, 0x11fbce9f76ecc3cbull }}, {{ 0x80a1bdd4a86a06bbull, 0x8653bf86f47aebe5ull, 0x1e581199aa257655ull, 0x155da73c3ea7ae70ull, 0x10bbb39a52f4c1a2ull, 0xb3d6123aa53fa5f2ull }}, {{ 0x06516a4e9424434aull, 0x3f457b458ccd36f7ull, 0x2f70b000a5769f57ull, 0xd5a8885a728cd061ull, 0xa75504073d8f9054ull, 0x065cb64a747c7b74ull }}, {{ 0x3f2e2711c96aa0e5ull, 0x78b6d0b7800425a6ull, 0xda66e00676a23968ull, 0x58955388798023cbull, 0x89522848679ba350ull, 0x3f9f1ee88cdcd28eull }}, {{ 0x77cd86b1de2a48eeull, 0xb724272b0029787eull, 0x8804c040a2563e14ull, 0x75d54354bf0165f6ull, 0x5d3592d40c146123ull, 0x7c37351580a03991ull }}, {{ 0xae0742f2ada6d949ull, 0x276987ae019eb4f0ull, 0x502f8286575e6ccfull, 0x9a54a14f760dfba1ull, 0xa417bc4878cbcb62ull, 0xda2812d706423fadull }}, {{ 0xcc489d7ac8847cd7ull, 0x8a1f4ccc10331166ull, 0x21db193f69b04017ull, 0x074e4d1a9c8bd44dull, 0x68ed5ad4b7f5f1daull, 0x8590bc663e967cc8ull }}, {{ 0xfad626cbd52ce064ull, 0x6538fff8a1feae03ull, 0x528efc7a20e280ebull, 0x490f030a1d764b03ull, 0x19458c4f2f9b7284ull, 0x37a75bfe71e0dfd4ull }}, {{ 0xcc5d83f653c0c3e5ull, 0xf439ffb653f2cc27ull, 0x3995dcc548d90931ull, 0xda961e65269eee21ull, 0xfcb77b17dc12792aull, 0x2c8997f072c8be48ull }}, {{ 0xfba7279f4587a6f7ull, 0x8a43fd1f477bf98dull, 0x3fda9fb4d87a5bf3ull, 0x89dd2ff382354d4cull, 0xdf2aceee98b8bbacull, 0xbd5fef647bd76ed9ull }}, {{ 0xd4878c38b74c85a2ull, 0x66a7e338cad7bf8bull, 0x7e8a3d1074c79783ull, 0x62a3df83161504faull, 0xb7ac1551f73754bdull, 0x65bf59ecd66a5482ull }}, {{ 0x4d4b7a3728fd3854ull, 0x028ee037ec6d7b76ull, 0xf16662a48fcbeb22ull, 0xda66bb1edcd231c8ull, 0x2cb8d533a8294f65ull, 0xf979834060274d1bull }}, {{ 0x04f2c62799e4334aull, 0x1994c22f3c46d29full, 0x6dffda6d9df72f54ull, 0x88034f34a035f1d9ull, 0xbf385404919d19faull, 0xbebf2083c189030full }}, {{ 0x317bbd8c02ea00dfull, 0xffcf95d85ac43a36ull, 0x4bfe88482ba7d948ull, 0x5021180e421b727eull, 0x7833482db02303c9ull, 0x737745258f5a1e9dull }}, {{ 0xeed567781d2408baull, 0xfe1bda738baa461dull, 0xf7f152d1b48e7cd9ull, 0x214af08e951278eeull, 0xb200d1c8e15e25ddull, 0x82a8b37799853226ull }}, {{ 0x54560ab123685748ull, 0xed16888374a6bd2bull, 0xaf6d3c310d90e083ull, 0x4ced6591d2b8b955ull, 0xf40831d8cdad7aa3ull, 0x1a9702abff33f582ull }}, {{ 0x4b5c6aeb621368d2ull, 0x42e155228e8363b1ull, 0xda4459ea87a8c527ull, 0x0145f7b23b373d58ull, 0x8851f27808c6ca61ull, 0x09e61ab7f807971dull }}, {{ 0xf19c2d31d4c21835ull, 0x9ccd53599121e4ecull, 0x86ab83294c97b388ull, 0x0cbbacf650286578ull, 0x533378b057c3e7caull, 0x62fd0b2fb04be727ull }}, {{ 0x7019c3f24f94f20full, 0x2005417fab52f141ull, 0x42b31f9cfded0356ull, 0x7f54c19f2193f6b5ull, 0x4002b6e36da70de4ull, 0xdde26fdce2f70789ull }}, {{ 0x6101a7771bd17497ull, 0x40348efcb13d6c8eull, 0x9aff3c21eb42215dull, 0xf94f90374fc7a314ull, 0x801b24e248868aecull, 0xaad85ea0dda64b5cull }}, {{ 0xca108aa7162e8de8ull, 0x820d95deec663d8full, 0x0df8595330954da4ull, 0xbd1ba2291dcc5eceull, 0x010f70d6d5416d41ull, 0xac73b248a87ef19dull }}, {{ 0xe4a56a86ddd18b0cull, 0x1487dab53bfe679dull, 0x8bb37d3fe5d5086dull, 0x6314559b29fbb40cull, 0x0a9a6864548e4491ull, 0xbc84f6d694f57022ull }}, {{ 0xee762944aa2f6e76ull, 0xcd4e8b1457f00c2aull, 0x7502e47efa525442ull, 0xdecb580fa3d5087dull, 0x6a0813eb4d8eadadull, 0x5d31a461d1966154ull }}, {{ 0x509d9caea5da509full, 0x05116ecb6f6079adull, 0x921cecf5c7374a9cull, 0xb3f1709c665254e6ull, 0x2450c7310792c8caull, 0xa3f06bd22fdfcd4cull }}, {{ 0x26281ed27a872631ull, 0x32ae53f259c4c0c5ull, 0xb5214199c828ea18ull, 0x076e661bff375101ull, 0x6b27c7ea4bbbd7ebull, 0x67643635debe04f9ull }}, {{ 0x7d913438c9477debull, 0xfacf477781af87b3ull, 0x134c9001d19924f1ull, 0x4a4ffd17f8292a11ull, 0x2f8dcf26f5566f2eull, 0x09ea1e1ab36c31beull }}, {{ 0xe7ac0a37dccaeb33ull, 0xcc18caab10db4d02ull, 0xc0fda0122ffb7173ull, 0xe71fe2efb19ba4aaull, 0xdb8a1785956057ceull, 0x63252d0b0239f16dull }}, {{ 0x0cb8662e9fed2ffbull, 0xf8f7eaaea891021dull, 0x89e840b5dfd26e85ull, 0x073edd5cf0146eabull, 0x9364eb37d5c36e15ull, 0xdf73c26e16436e4aull }}, {{ 0x7f33fdd23f43dfd2ull, 0xb9af2ad295aa1522ull, 0x6312871abe38513bull, 0x4874a5a160cc52b3ull, 0xc1f1302e59a24cd2ull, 0xba85984cdea24ee9ull }}, {{ 0xf807ea3678a6be31ull, 0x40d7ac39d8a4d358ull, 0xdeb9470b6e332c55ull, 0xd48e784dc7fb3b01ull, 0x936be1cf80570036ull, 0x4937f300b2571521ull }}, {{ 0xb04f2620b6836de9ull, 0x886cba4276704179ull, 0xb33cc6724dffbb54ull, 0x4d90b309cfd04e12ull, 0xc236d21b03660224ull, 0xdc2f7e06f766d34full }}, {{ 0xe3177d4721224b1dull, 0x543f4698a0628ec0ull, 0x005fc0770bfd514dull, 0x07a6fe621e230cbbull, 0x9624350e21fc156bull, 0x99daec45aa04411dull }}, {{ 0xdeeae4c74b56ef25ull, 0x4a78c1f643d99388ull, 0x03bd84a677e52d05ull, 0x4c85efd52d5e7f4eull, 0xdd6a128d53d8d62eull, 0x028d3ab8a42a8b27ull }}, {{ 0xb52cefc8f1655770ull, 0xe8b7939ea67fc358ull, 0x25672e80aef3c234ull, 0xfd3b5e53c5b0f90cull, 0xa624b98546785dceull, 0x19844b3669a96f8eull }}, {{ 0x13c15dd96df56a5eull, 0x172bc43280fda177ull, 0x7607d106d5859611ull, 0xe451af45b8e9ba79ull, 0x7d6f3f34c0b3aa15ull, 0xff2af020209e5b92ull }}, {{ 0xc58daa7e4b9627acull, 0xe7b5a9f909e84ea6ull, 0x9c4e2a445737dcaaull, 0xeb30d8b9392148beull, 0xe658780f8704a4daull, 0xf7ad6141462f93b8ull }}, {{ 0xb788a8eef3dd8cbcull, 0x0d18a3ba63131283ull, 0x1b0da6ab682e9eadull, 0x2fe8773c3b4cd772ull, 0xff74b09b462e708dull, 0xacc5cc8cbddbc538ull }}, {{ 0x2b56995586a77f56ull, 0x82f66547debeb925ull, 0x0e8882b211d232c2ull, 0xdf14a85a51006a75ull, 0xfa8ee610bdd06583ull, 0xbfb9fd7f6a95b439ull }}, {{ 0xb161fd57428af95bull, 0x1d9ff4ceb3733b73ull, 0x91551af4b235fb99ull, 0xb6ce93872a042892ull, 0xc994fca76a23f726ull, 0x7d43e6fa29d90a43ull }}, {{ 0xedd3e568996dbd8full, 0x283f901302805284ull, 0xad530d8ef61bd3fbull, 0x2411c347a42995b9ull, 0xdfd1de8a2567a783ull, 0xe4a705c5a27a66a5ull }}, {{ 0x4a46f615fe496793ull, 0x927ba0be19033931ull, 0xc53e87959d1647cfull, 0x68b1a0cc699fd940ull, 0xbe32b165760c8b1full, 0xee8639b858c8027aull }}, {{ 0xe6c59cdbeede0bb9ull, 0xb8d4476cfa203becull, 0xb4714bd822dece1bull, 0x16f047fc203e7c87ull, 0x6dfaedf69c7d6f3aull, 0x513e413377d018cbull }}, {{ 0x03b8209754ac753bull, 0x384aca41c5425741ull, 0x0c6cf6715cb40d15ull, 0xe562cfd94270dd4dull, 0x4bcd4ba21ce65844ull, 0x2c6e8c02ae20f7f2ull }}, {{ 0x253145e94ebc9451ull, 0x32ebe691b497688aull, 0x7c41a06d9f0882d4ull, 0xf5dc1e7c9868a502ull, 0xf604f45520ff72b0ull, 0xbc51781acd49af76ull }}, {{ 0x73ecbb1d135dcb29ull, 0xfd3701b10dea1565ull, 0xda90444836551c49ull, 0x9a9930ddf4167218ull, 0x9c318b5349fa7ae9ull, 0x5b2eb10c04e0daa5ull }}, {{ 0x873f4f22c1a9ef96ull, 0xe42610ea8b24d5f6ull, 0x89a2aad21f531ae3ull, 0x09fbe8ab88e074f8ull, 0x19ef7140e3c8cd20ull, 0x8fd2ea7830c88a78ull }}, {{ 0x4879175b90a35bdaull, 0xe97ca9296f705ba1ull, 0x605aac35393f0ce6ull, 0x63d716b358c491b5ull, 0x035a6c88e5d80340ull, 0x9e3d28b1e7d568b1ull }}, {{ 0xd4bae993a6619680ull, 0x1ede9b9e5a63944cull, 0xc38aba143c768105ull, 0xe666e30177adb115ull, 0x21883d58fa702083ull, 0x2e6396f30e5616eaull }}, {{ 0x4f4d1fc47fcfe103ull, 0x34b2142f87e3cb00ull, 0xa36b44ca5ca10a33ull, 0x0004de0eacc8ead9ull, 0x4f526579c8614527ull, 0xcfe3e57e8f5ce525ull }}, {{ 0x19033dacfe1eca1eull, 0x0ef4c9db4ee5ee03ull, 0x6230afe79e4a6600ull, 0x0030ac92bfd92c80ull, 0x1937f6c1d3ccb386ull, 0x1ee6f6f199a0f375ull }}, {{ 0xfa2068c1ed33e52dull, 0x958fe29114fb4c1eull, 0xd5e6df0c2ee7fc00ull, 0x01e6bdbb7e7bbd03ull, 0xfc2fa39245ff033cull, 0x3505a57000498292ull }}, {{ 0xc54417934406f3c0ull, 0xd79ed9aad1d0f935ull, 0x5b04b679d50fd805ull, 0x13036952f0d56226ull, 0xd9dc63b6bbf62058ull, 0x1238766002df19bdull }}, {{ 0xb4a8ebc0a8458582ull, 0x6c3480ac3229bc19ull, 0x8e2f20c2529e703aull, 0xbe221d3d6855d57full, 0x829be523579d4370ull, 0xb6349fc01cb7016aull }}, {{ 0x0e99358692b73717ull, 0x3a0d06b9f5a15901ull, 0x8dd747973a306248ull, 0x6d552466135a56fbull, 0x1a16f3616c24a267ull, 0x1e0e3d811f260e29ull }}, {{ 0x91fc1741bb2826e2ull, 0x44824343984d7a0aull, 0x8a68cbe845e3d6d2ull, 0x45536bfcc18765d3ull, 0x04e581ce396e580aull, 0x2c8e670b377c8d9bull }}, {{ 0xb3d8e8914f9184d2ull, 0xad16a0a3f306c469ull, 0x6817f712bae66436ull, 0xb54237df8f49fa43ull, 0x30f7120e3e4f7066ull, 0xbd9006702add880eull }}, {{ 0x067915ad1baf3034ull, 0xc2e246677e43ac21ull, 0x10efa6bb4cffea22ull, 0x14962ebb98e3c6a2ull, 0xe9a6b48e6f1a6403ull, 0x67a04061aca7508dull }}, {{ 0x40bad8c314d7e205ull, 0x9cd6c00aeea4b94aull, 0xa95c835101ff255bull, 0xcdddd353f8e5c254ull, 0x20830d905707e81eull, 0x0c4283d0be89258bull }}, {{ 0x874c779ed06ed432ull, 0x2063806d526f3ce6ull, 0x9d9d212a13f77594ull, 0x0aaa4147b8f9974eull, 0x451e87a3664f1134ull, 0x7a992627715b776full }}, {{ 0x48fcac34245449f7ull, 0x43e3044538586101ull, 0x28234ba4c7aa97c9ull, 0x6aa68ccd39bfe912ull, 0xb3314c61ff16ac08ull, 0xc9fb7d8a6d92aa58ull }}, {{ 0xd9deba096b4ae3a7ull, 0xa6de2ab43373ca0cull, 0x9160f46fcca9eddcull, 0x2a818004417f1ab5ull, 0xffecfbd3f6e2b854ull, 0xe3d2e76847baa776ull }}, {{ 0x82b3445e30ece487ull, 0x84adab0a0285e480ull, 0xadc98c5dfea34a9eull, 0xa90f002a8ef70b17ull, 0xff41d647a4db3349ull, 0xe63d0a12cd4a8aa5ull }}, {{ 0x1b00abade940ed49ull, 0x2ec8ae64193aed05ull, 0xc9df7babf260ea31ull, 0x9a9601a995a66eecull, 0xf8925ecc709000e0ull, 0xfe6264bc04e96a7bull }}, {{ 0x0e06b4cb1c8944deull, 0xd3d6cfe8fc4d4233ull, 0xe2bad4b777c925ebull, 0x09dc109fd880553full, 0xb5b7b3fc65a008c6ull, 0xefd7ef58311e28d7ull }}, {{ 0x8c430fef1d5cb0b0ull, 0x46641f19db0495feull, 0xdb4c4f2aaddb7b36ull, 0x6298a63e7503547eull, 0x192d07dbf84057bcull, 0x5e6f5971eb2d986dull }}, {{ 0x7a9e9f57259ee6e2ull, 0xbfe937028e2ddbf1ull, 0x90fb17aaca92d01eull, 0xd9f67e7092214cf4ull, 0xfbc24e97b2836d5bull, 0xb0597e732fc7f442ull }}, {{ 0xca323967783504d7ull, 0x7f1c26198dca976eull, 0xa9ceecabe9bc2133ull, 0x83a0f065b54d018dull, 0xd59711ecf9224596ull, 0xe37ef07fddcf8a9dull }}, {{ 0xe5f63e0ab2123067ull, 0xf7197cff89e9ea53ull, 0xa2153eb721594c02ull, 0x244963f915020f88ull, 0x57e6b341bb56b7e1ull, 0xe2f564feaa1b6a2aull }}, {{ 0xfb9e6c6af4b5e408ull, 0xa6fee1fb63232746ull, 0x54d473274d7cf81dull, 0x6adde7bad2149b56ull, 0x6f03009151632ecbull, 0xdd95f1f2a51225a7ull }}, {{ 0xd4303c2d8f1ae855ull, 0x85f4d3d1df5f88c5ull, 0x504c7f8906e1b128ull, 0x2cab0d4c34ce115full, 0x561e05ad2ddfd3f2ull, 0xa7db737a72b5788aull }}, {{ 0x49e259c7970d1352ull, 0x3b904632b9bb57baull, 0x22fcfb5a44d0eb95ull, 0xbeae84fa100cadb9ull, 0x5d2c38c3cabe4775ull, 0x8e9282c87b16b567ull }}, {{ 0xe2d781cbe682c12full, 0x53a2bdfb41516d46ull, 0x5de1d186b02933d4ull, 0x72d131c4a07ec93bull, 0xa3ba37a5eb6eca99ull, 0x91b91bd4cee31609ull }}, {{ 0xdc6b11f7011b8bdaull, 0x445b6bd08d2e44c4ull, 0xaad22f42e19c064bull, 0x7c2bf1ae44f3dc51ull, 0x65462c7b3253e9feull, 0xb13b165014dedc60ull }}, {{ 0x9c2eb3a60b137688ull, 0xab92362583ceafb0ull, 0xac35d89cd0183ef0ull, 0xd9b770ceb1869b30ull, 0xf4bdbccff74723f0ull, 0xec4edf20d0b49bc3ull }}, {{ 0x19d3047c6ec2a14dull, 0xb3b61d772612dce6ull, 0xba1a762020f27566ull, 0x812a6812ef420fe6ull, 0x8f69601fa8c76768ull, 0x3b14b748270e15a7ull }}, {{ 0x023e2cdc539a4d01ull, 0x051d26a77cbca0fdull, 0x45089d4149789603ull, 0x0ba810bd58949f03ull, 0x9a1dc13c97ca0a15ull, 0x4ecf28d1868cd88bull }}, {{ 0x166dc09b4407020eull, 0x3323828adf5e49e2ull, 0xb256248cdeb5dc1eull, 0x7490a76575ce3620ull, 0x05298c5dede464d2ull, 0x1417982f41807574ull }}, {{ 0xe0498610a846148cull, 0xff63196cb9aee2d4ull, 0xf75d6d80b31a992dull, 0x8da689f69a0e1d46ull, 0x339f7bab4aebf038ull, 0xc8ebf1d88f049688ull }}, {{ 0xc2df3ca692bccd76ull, 0xf9defe3f40d4dc50ull, 0xa9a64706ff09fbcbull, 0x888163a2048d24c5ull, 0x043ad4b0ed376235ull, 0xd9377275962de152ull }}, {{ 0x9cb85e81bb60069eull, 0xc2b5ee7888509b27ull, 0xa07ec645f663d5f7ull, 0x550de4542d836fb8ull, 0x2a4c4ee94429d617ull, 0x7c2a7897ddcacd34ull }}, {{ 0x1f33b11151c04230ull, 0x9b1b50b553260f8cull, 0x44f3bebb9fe65badull, 0x528aeb49c7225d36ull, 0xa6fb151ca9a25ce9ull, 0xd9a8b5eea9ec0409ull }}, {{ 0x3804eaad318295dcull, 0x0f1127153f7c9b79ull, 0xb18573543eff94c8ull, 0x396d30e1c757a41eull, 0x85ced31ea057a11dull, 0x80971b52a3382860ull }}, {{ 0x30312ac3ef19da98ull, 0x96ab86d47ade12bcull, 0xef36814a75fbcfd0ull, 0x3e43e8d1c96c6932ull, 0x3a143f32436c4b24ull, 0x05e7113a603193c5ull }}, {{ 0xe1ebaba7570289edull, 0xe2b3444cccacbb59ull, 0x58210ce89bd61e25ull, 0x6ea71831de3c1bfdull, 0x44ca77f6a23aef6aull, 0x3b06ac47c1efc5b4ull }}, {{ 0xd334b48966196344ull, 0xdb00aafffebf5182ull, 0x714a8116165d2d7aull, 0x5286f1f2ae5917e5ull, 0xafe8afa2564d5a28ull, 0x4e42bacd935db90aull }}, {{ 0x400f0d5dfcfde0aaull, 0x8e06adfff3792f1cull, 0x6ce90adcdfa3c6ccull, 0x3945737acf7aeef6ull, 0xdf16dc575f058593ull, 0x0e9b4c07c1a93a6aull }}, {{ 0x809685abe1eac6a2ull, 0x8c42cbff82bbd71aull, 0x411a6ca0bc65c3fdull, 0x3cb682cc1acd55a0ull, 0xb6e49b69b63737c0ull, 0x9210f84d909c482cull }}, {{ 0x05e138b6d32bc259ull, 0x7a9bf7fb1b566709ull, 0x8b083e475bf9a7e7ull, 0x5f211bf90c055842ull, 0x24ee12211e282d82ull, 0xb4a9b307a61ad1bfull }}, {{ 0x3acc37243fb59779ull, 0xca17afcf1160065aull, 0x6e526ec997c08f0aull, 0xb74b17ba78357299ull, 0x714cb54b2d91c717ull, 0x0ea0fe4c7d0c3177ull }}, {{ 0x4bfa276a7d17eabaull, 0xe4ecde16adc03f86ull, 0x4f3853dfed85966bull, 0x28eeed48b21679feull, 0x6cff14efc7b1c6edull, 0x9249eefce279eeaaull }}, {{ 0xf7c58a28e2ef2b48ull, 0xf140ace2c9827b3eull, 0x183346bf4737e036ull, 0x995544d6f4e0c3efull, 0x41f6d15dccf1c543ull, 0xb6e355e0d8c352a8ull }}, {{ 0xadb76598dd57b0d3ull, 0x6c86c0dbdf18d075ull, 0xf200c378c82ec225ull, 0xfd54b06590c7a756ull, 0x93a42daa0171b4a3ull, 0x24e15ac877a13a92ull }}, {{ 0xc929f7f8a56ce83full, 0x3d438896b6f82498ull, 0x7407a2b7d1d39576ull, 0xe54ee3f7a7cc8965ull, 0xc469c8a40e710e67ull, 0x70cd8bd4ac4c49b9ull }}, {{ 0xdba3afb67641127aull, 0x64a355e325b16df7ull, 0x884c5b2e3243d69eull, 0xf514e7ac8dfd5df6ull, 0xac21d668906a900eull, 0x6807764ebafae141ull }}, {{ 0x9464dd209e8ab8c0ull, 0xee615adf78ee4baeull, 0x52fb8fcdf6a6622full, 0x92d10cbd8be5aba1ull, 0xb9526015a429a095ull, 0x104a9f134dcccc90ull }}, {{ 0xcbf0a346316b377eull, 0x4fcd8cbab94ef4d1ull, 0x3dd39e0ba27fd5dfull, 0xbc2a7f6776f8b44dull, 0x3d37c0d869a045d7ull, 0xa2ea36c109fffda7ull }}, {{ 0xf76660bdee302ae8ull, 0x1e077f4b3d159031ull, 0x6a442c7458fe5ab9ull, 0x59a8fa0aa5b70b04ull, 0x642d88742042ba6dull, 0x5d26238a63ffe888ull }}, {{ 0xa9ffc76b4de1ad0full, 0x2c4af8f062d7a1f3ull, 0x26a9bc8b79ef8b3bull, 0x8099c46a79266e2cull, 0xe9c75489429b4845ull, 0xa37d6367e7ff1553ull }}, {{ 0xa3fdca310ad0c296ull, 0xbaedb963dc6c5384ull, 0x82a15d72c35b704full, 0x0601ac28bb804db9ull, 0x21c94d5c9a10d2b7ull, 0x62e5e20f0ff6d547ull }}, {{ 0x67e9e5ea6c2799dcull, 0x4d493de69c3b432eull, 0x1a4da67ba192631dull, 0x3c10b9975303093full, 0x51dd059e04a83b26ull, 0xdcfad4969fa454c7ull }}, {{ 0x0f22fb28398c029aull, 0x04dc6b021a509fd0ull, 0x070880d44fb7df25ull, 0x58a73fe93e1e5c77ull, 0x32a2382c2e924f7eull, 0xa1cc4de23c6b4fc9ull }}, {{ 0x975dcf923f781a05ull, 0x309c2e1507263e20ull, 0x4655084b1d2eb772ull, 0x76887f1c6d2f9ca6ull, 0xfa5631b9d1b71aefull, 0x51fb0ad65c311ddbull }}, {{ 0xe9aa1bb67ab1042full, 0xe619ccd2477e6d45ull, 0xbf5252ef23d32a75ull, 0xa154f71c43dc1e7eull, 0xc75df14231270d5aull, 0x33ce6c5f99eb2a97ull }}, {{ 0x20a51520caea29dbull, 0xfd020036caf044bbull, 0x79373d57663fa89aull, 0x4d51a71aa69930f3ull, 0xc9ab6c95eb86858aull, 0x06103bbc032fa9edull }}, {{ 0x4672d347ed25a28dull, 0xe2140223ed62af4full, 0xbc286569fe7c960dull, 0x0530870a81fbe982ull, 0xe0b23ddb33413767ull, 0x3ca255581fdca349ull }}, {{ 0xc07c40cf43785982ull, 0xd4c8156745dad918ull, 0x5993f623f0dddc8aull, 0x33e5466913d71f1bull, 0xc6f66a90008c2a06ull, 0x5e5755713e9e60e2ull }}, {{ 0x84da8818a2b37f12ull, 0x4fd0d608ba8c7af7ull, 0x7fc79d6768aa9d6cull, 0x06f4c01ac6673711ull, 0xc5a029a00579a43eull, 0xaf69566c722fc8dbull }}, {{ 0x308950f65b02f6b1ull, 0x1e285c57497ccdabull, 0xfdcc260a16aa263bull, 0x458f810bc00826aeull, 0xb841a04036c06a6cull, 0xda1d603c75ddd895ull }}, {{ 0xe55d299f8e1da2eaull, 0x2d939b68dee008afull, 0xe9f97c64e2a57e4full, 0xb79b0a75805182d5ull, 0x329042822384283aull, 0x8525c25c9aaa75d9ull }}, {{ 0xf5a3a03b8d285d28ull, 0xc7c41218b4c056deull, 0x23bedbf0da76ef17ull, 0x2c0e6897032f1c5bull, 0xf9a299156329924bull, 0x3379979e0aa89a7bull }}, {{ 0x986442538393a38eull, 0xcda8b4f70f8364b5ull, 0x6574976888a556edull, 0xb89015e61fd71b8full, 0xc059fad5df9fb6efull, 0x02bfec2c6a9608d7ull }}, {{ 0xf3ea974323c46388ull, 0x089711a69b21ef17ull, 0xf68dea155675654aull, 0x35a0dafd3e671399ull, 0x8383cc5abc3d255dull, 0x1b7f39bc29dc586dull }}, {{ 0x8729e89f65abe34bull, 0x55e6b0820f5356efull, 0xa18b24d56095f4e4ull, 0x18488de47006c403ull, 0x2325fb8b5a6375a4ull, 0x12f84159a29b7447ull }}, {{ 0x47a31639f8b6e0f3ull, 0x5b02e5149941655bull, 0x4f6f7055c5db90ebull, 0xf2d58aec6043a824ull, 0x5f7bd37187e29868ull, 0xbdb28d805a128ac7ull }}, {{ 0xcc5ede43b724c97dull, 0x8e1cf2cdfc8df590ull, 0x1a5a6359ba93a931ull, 0x7c576d3bc2a4916bull, 0xbad6426f4ed9f419ull, 0x68f9870384b96bc9ull }}, {{ 0xfbb4aea5276fdee0ull, 0x8d217c0bdd8b97a7ull, 0x0787e18149c49befull, 0xdb6a44559a6dae2full, 0x4c5e9859148388feull, 0x19bf46232f3e35e1ull }}, {{ 0xd50ed2738a5eb4bfull, 0x834ed876a773ec8full, 0x4b4ecf0ce1ae175bull, 0x9226ab580848cdd6ull, 0xfbb1f37acd2359f4ull, 0x0178bd5fd86e1accull }}, {{ 0x5294388367b30f72ull, 0x211474a28a873d9eull, 0xf1141680d0cce993ull, 0xb582b17052d80a5eull, 0xd4f382cc0361838dull, 0x0eb765be744d0c01ull }}, {{ 0x39ca35220cfe9a76ull, 0x4acc8e596948682full, 0x6ac8e10828011fbfull, 0x171aee633c7067b5ull, 0x51831bf821cf2389ull, 0x9329f9708b027812ull }}, {{ 0x41e6135481f208a0ull, 0xebfd8f7e1cd411d8ull, 0x2bd8ca51900b3d78ull, 0xe70d4fe05c640d16ull, 0x2f1f17b15217635aull, 0xbfa3be656e18b0b7ull }}, {{ 0x92fcc14d13745643ull, 0x37e79aed2048b272ull, 0xb677e72fa07066b9ull, 0x06851ec39be882ddull, 0xd736eced34e9e18dull, 0x7c656ff64cf6e727ull }}, {{ 0xbddf8d02c28b5e9bull, 0x2f0c0d4342d6f879ull, 0x20af07dc4464033cull, 0x413333a417151ca9ull, 0x682541441122cf82ull, 0xdbf65f9f01a5078eull }}, {{ 0x6abb821b9971b20cull, 0xd67884a09c65b4c1ull, 0x46d64e9aabe82059ull, 0x8c000468e6d31e9bull, 0x11748ca8ab5c1b16ull, 0x979fbc3610724b90ull }}, {{ 0x2b531513fe70f474ull, 0x60b52e461bf90f8eull, 0xc45f120ab7114382ull, 0x78002c19043f3210ull, 0xae8d7e96b1990ee1ull, 0xec3d5a1ca476f3a0ull }}, {{ 0xb13ed2c7f0698c8dull, 0xc713cebd17ba9b8dull, 0xabb6b46b26aca317ull, 0xb001b8fa2a77f4a7ull, 0xd186f1e2effa94ceull, 0x3a65851e6ca58446ull }}, {{ 0xec743bcf641f7d7eull, 0xc6c61362ed4a1388ull, 0xb5230c2f82be5eedull, 0xe01139c5a8af8e8cull, 0x2f4572dd5fc9d012ull, 0x47f733303e772ac4ull }}, {{ 0x3c8a5619e93ae6eaull, 0xc3bcc1dd44e4c359ull, 0x135e79db1b6fb549ull, 0xc0ac41b896db917full, 0xd8b67ca5bde220bcull, 0xcfa7ffe270a7aba9ull }}, {{ 0x5d675d031c4d0528ull, 0xa55f92a4b0efa17cull, 0xc1b0c28f125d14e1ull, 0x86ba9135e493aef6ull, 0x7720de796ad5475full, 0x1c8ffed8668cb4a2ull }}, {{ 0xa609a21f1b02338dull, 0x75bbba6ee95c4edbull, 0x90e79996b7a2d0d0ull, 0x4349ac1aedc4d5a3ull, 0xa748b0be2c54c9bbull, 0x1d9ff474017f0e58ull }}, {{ 0x7c6055370e160386ull, 0x995548551d9b1494ull, 0xa90bffe32c5c2824ull, 0xa0e0b90d49b05863ull, 0x88d6e76dbb4fe150ull, 0x283f8c880ef68f76ull }}, {{ 0xdbc354268cdc233full, 0xfd54d353280ecdccull, 0x9a77fedfbb99916dull, 0x48c73a84e0e373e4ull, 0x58650a49511ecd26ull, 0x927b7d5095a19aa1ull }}, {{ 0x95a1498180996076ull, 0xe550413f90940a00ull, 0x08aff4bd53ffae4bull, 0xd7c84930c8e286eeull, 0x73f266dd2b34037eull, 0xb8d2e525d8500a4dull }}, {{ 0xd84cdf0f05fdc497ull, 0xf5228c7ba5c86405ull, 0x56df8f6547fccef6ull, 0x6dd2dbe7d8d9454cull, 0x877804a3b00822f4ull, 0x383cf37a73206706ull }}, {{ 0x7300b6963be9adeaull, 0x93597cd479d3e83aull, 0x64bb99f4cfe015a5ull, 0x4a3c970e787cb4fbull, 0x4ab02e64e0515d8cull, 0x326182c87f440641ull }}, {{ 0x7e0721de5720cb20ull, 0xc17ee04cc2471248ull, 0xef5403901ec0d877ull, 0xe65de690b4df11d1ull, 0xeae1cff0c32da77aull, 0xf7cf1bd4f8a83e8cull }}, {{ 0xec4752af6747ef3full, 0x8ef4c2ff96c6b6d4ull, 0x594823a1338874adull, 0xffab01a710b6b233ull, 0x2cd21f679fc88accull, 0xae171651b6927181ull }}, {{ 0x3ac93ada08cf5876ull, 0x958f9dfbe3c32451ull, 0x7cd1644c03548ec7ull, 0xfcae1086a722f601ull, 0xc0353a0c3dd56c01ull, 0xcce6df3121b86f0bull }}, {{ 0x4bdc4c845819749full, 0xd79c2bd6e59f6b2cull, 0xe02deaf8214d93cbull, 0xdecca542875d9c0eull, 0x8214447a6a563813ull, 0x0104b7eb51345675ull }}, {{ 0xf69afd2b70fe8e37ull, 0x6c19b664f83a2fbaull, 0xc1cb2db14d07c5f6ull, 0xb3fe749949a81894ull, 0x14caacc8275e30c6ull, 0x0a2f2f312c0b6097ull }}, {{ 0xa20de3b269f18e2bull, 0x39011ff1b245dd4dull, 0x91efc8ed024dbba0ull, 0x07f08dfce090f5cfull, 0xcfeabfd189ade7c3ull, 0x65d7d7ebb871c5e6ull }}, {{ 0x548ae4f8236f8dabull, 0x3a0b3f70f6baa508ull, 0xb35dd94217095442ull, 0x4f658be0c5a99a1bull, 0x1f2b7e2f60cb0d9eull, 0xfa6e6f353471bb04ull }}, {{ 0x4d6cf1b1625b88adull, 0x44707a69a34a7253ull, 0x01aa7c94e65d4a96ull, 0x19f776c7b8a00515ull, 0x37b2edd9c7ee882full, 0xc85058140c714e29ull }}, {{ 0x064170edd79356bdull, 0xac64c82060e87741ull, 0x10a8ddd0ffa4e9deull, 0x03aaa3cd364032d2ull, 0x2cfd4a81cf5151d7ull, 0xd32370c87c6d0d9cull }}, {{ 0x3e8e694a6bc16364ull, 0xbbefd143c914a88aull, 0xa698aa29fc7122b2ull, 0x24aa66041e81fc34ull, 0xc1e4e912192d3266ull, 0x3f6267d4dc428819ull }}, {{ 0x71901ce8358de1ecull, 0x575e2ca5dace9566ull, 0x81f6a5a3dc6b5afbull, 0x6ea7fc293113da0eull, 0x92f11ab4fbc3f7fdull, 0x79d80e509a995101ull }}, {{ 0x6fa12112178ad334ull, 0x69adbe7a8c11d600ull, 0x13a278669c318dd1ull, 0x528fd99beac68491ull, 0xbd6b0b11d5a7afe6ull, 0xc2708f2609fd2a0full }}, {{ 0x5c4b4ab4eb6c4008ull, 0x20c970c978b25c04ull, 0xc458b40219ef8a2eull, 0x399e80172bc12daaull, 0x662e6eb2588cdeffull, 0x9865977c63e3a49dull }}, {{ 0x9af0eb11323a804full, 0x47de67deb6f7982bull, 0xab770815035b65cdull, 0x403100e7b58bc8abull, 0xfdd052f77580b5f8ull, 0xf3f7eadbe6e46e25ull }}, {{ 0x0d692eabf6490318ull, 0xceb00eb325abf1b4ull, 0xb2a650d22191fa04ull, 0x81ea090d1775d6b4ull, 0xea233daa97071bb2ull, 0x87af2c9704ec4d7bull }}, {{ 0x861bd2b79eda1ef0ull, 0x12e092ff78b77108ull, 0xfa7f28354fb3c430ull, 0x13245a82ea9a630eull, 0x256068a9e64714f9ull, 0x4cd7bde6313b06d7ull }}, {{ 0x3d163b2c3485355cull, 0xbcc5bdfab72a6a55ull, 0xc8f792151d05a9e0ull, 0xbf6b891d2a07de95ull, 0x75c416a2fec6d1baull, 0x006d6afdec4e4467ull }}, {{ 0x62de4fba0d341599ull, 0x5fb96bcb27a82754ull, 0xd9abb4d32238a2c7ull, 0x7a335b23a44eb1d9ull, 0x99a8e25df3c4314bull, 0x04462deb3b0eac0aull }}, {{ 0xdcaf1d448408d7f9ull, 0xbd3e35ef8c91894bull, 0x80b5103f56365bc9ull, 0xc6018f646b12f282ull, 0x0098d7ab85a9ecf2ull, 0x2abdcb304e92b86aull }}, {{ 0x9ed724ad28586fb7ull, 0x646e1b5b7daf5cf6ull, 0x0712a2795e1f95e1ull, 0xbc0f99ec2ebd7919ull, 0x05f86cb338a3417bull, 0xab69efe311bb3424ull }}, {{ 0x34676ec393745d2bull, 0xec4d1192e8d9a1a2ull, 0x46ba58bdad3bdacdull, 0x589c0339d366bafaull, 0x3bb43f0036608ed5ull, 0xb2235edeb1500968ull }}, {{ 0x0c0a53a3c28ba3acull, 0x3b02afbd18805056ull, 0xc3477768c4568c0bull, 0x7618204242034dc6ull, 0x550a76021fc59455ull, 0xf561b4b2ed205e12ull }}, {{ 0x78674465997464b9ull, 0x4e1add62f503235cull, 0xa0caaa17ab617870ull, 0x9cf14296942109c3ull, 0x52689c153db7cb56ull, 0x95d10efd4343acb7ull }}, {{ 0xb408abf7fe8bef3eull, 0x0d0ca5dd921f619cull, 0x47eaa4ecb1ceb463ull, 0x216c99e1c94a61a4ull, 0x381618d4692df162ull, 0xda2a95e4a0a4bf29ull }}, {{ 0x0856b7aff177586aull, 0x827e7aa7b539d01full, 0xcf2a713ef2130bdeull, 0x4e3e02d1dce7d06aull, 0x30dcf84c1bcb6dd5ull, 0x85a9daee466f779cull }}, {{ 0x53632cdf6ea97427ull, 0x18f0ca8d14422136ull, 0x17a86c7574be76b1ull, 0x0e6c1c32a10e242cull, 0xe8a1b2f915f24a55ull, 0x38a28d4ec05aac19ull }}, {{ 0x41dfc0ba529e8988ull, 0xf967e982ca954c1full, 0xec943c968f70a2eaull, 0x903919fa4a8d69b8ull, 0x1650fdbadb76e752ull, 0x36598513838ab903ull }}, {{ 0x92bd87473a315f4cull, 0xbe0f1f1be9d4f938ull, 0x3dca5de19a665d2dull, 0xa23b03c6e9862139ull, 0xdf29e94c92a50939ull, 0x1f7f32c3236b3a1eull }}, {{ 0xbb6748c845edb8f7ull, 0x6c9737172251bc35ull, 0x69e7aad007ffa3c9ull, 0x564e25c51f3d4c3cull, 0xb7a31cfdba725c40ull, 0x3af7fb9f62304534ull }}, {{ 0x5208d7d2bb4939a6ull, 0x3de826e757315a19ull, 0x230cac204ffc65deull, 0x5f0d79b33864fa5cull, 0x2c5f21e948779a83ull, 0x4dafd439d5e2b40full }}, {{ 0x34586e3b50dc4079ull, 0x6b11850967ed84fdull, 0x5e7eb9431fdbfaaeull, 0xb686c10033f1c799ull, 0xbbb7531cd4ac0921ull, 0x08de4a425adb0897ull }}, {{ 0x0b744e51289a84b5ull, 0x2eaf325e0f4731e4ull, 0xb0f33c9f3e97cad0ull, 0x21438a020771cbfdull, 0x55293f204eb85b51ull, 0x58aee6978c8e55edull }}, {{ 0x728b0f2b96092f16ull, 0xd2d7f7ac98c7f2e8ull, 0xe9805e3871edec21ull, 0x4ca364144a71f7e8ull, 0x539c77431333912bull, 0x76d501eb7d8f5b45ull }}, {{ 0x796e97b3dc5bd6e1ull, 0x3c6facbdf7cf7d14ull, 0x1f03ae34734b3952ull, 0xfe61e8cae873af19ull, 0x441ca89ec003abb0ull, 0xa4521332e79990b5ull }}, {{ 0xbe51ed069b9664c8ull, 0x5c5cbf6bae1ae2ccull, 0x3624ce0c80f03d36ull, 0xefd317ed1484d6fbull, 0xa91e96338024b4e9ull, 0x6b34bffd0bffa714ull }}, {{ 0x6f33424213dfefd2ull, 0x9b9f7a34cd0cdbffull, 0x1d700c7d0962641full, 0x5e3eef42cd3065d0ull, 0x9b31de03016f1123ull, 0x300f7fe277fc86ceull }}, {{ 0x58009694c6bf5e38ull, 0x143ac610028097faull, 0x26607ce25dd7e93cull, 0xae75589c03e3fa21ull, 0x0ff2ac1e0e56ab61ull, 0xe09afed8afdd4412ull }}, {{ 0x7005e1cfc379ae2dull, 0xca4bbca01905efc7ull, 0x7fc4e0d7aa6f1c58ull, 0xd095761826e7c54bull, 0x9f7ab92c8f62b1d0ull, 0xc60df476dea4a8b4ull }}, {{ 0x603ad21da2c0cdbeull, 0xe6f55e40fa3b5dcaull, 0xfdb0c86ca8571b77ull, 0x25d69cf1850db4f2ull, 0x3acb3bbd99daf228ull, 0xbc8b8ca4b26e970eull }}, {{ 0xc24c35285b88096aull, 0x0595ae89c651a9e7ull, 0xe8e7d43e936712afull, 0x7a62216f3289117dull, 0x4bf05568028d7591ull, 0x5d737e6ef851e68eull }}, {{ 0x96fa139393505e23ull, 0x37d8d161bf30a30dull, 0x190e4a71c206bad6ull, 0xc7d54e57f95aaeebull, 0xf7635610198697aeull, 0xa682f055b333018eull }}, {{ 0xe5c4c3c3c123ad63ull, 0x2e782dd177e65e87ull, 0xfa8ee87194434c5eull, 0xce550f6fbd8ad52eull, 0xa9e15ca0ff41ecd3ull, 0x811d6358fffe0f95ull }}, {{ 0xf9afa5a58b64c5dbull, 0xd0b1ca2eaeffb14eull, 0xc995146fcaa0fbadull, 0x0f529a5d676c53d5ull, 0xa2cd9e49f8934046ull, 0x0b25e179ffec9bd8ull }}, {{ 0xc0dc787771efba8cull, 0x26f1e5d2d5fced15ull, 0xdfd2cc5dea49d4caull, 0x993a07a60a3b4659ull, 0x5c082ee3b5c082bcull, 0x6f7acec3ff3e1676ull }}, {{ 0x889cb4aa735d4976ull, 0x8572fa3c5be142d9ull, 0xbe3bfbab26e24fe5ull, 0xfc444c7c6650bf82ull, 0x9851d4e519851b5dull, 0x5acc13a7f86ce09full }}, {{ 0x561f0ea881a4de9cull, 0x367dc65b96cc9c7full, 0x6e57d4af84d71ef7ull, 0xdaaafcdbff277b1bull, 0xf33250f2ff3311abull, 0x8bf8c48fb440c63bull }}, {{ 0x5d3692951070b21cull, 0x20e9bf93e3fe1cf9ull, 0x4f6e4edb306735a8ull, 0x8aade097f78acf12ull, 0x7ff7297df7feb0b6ull, 0x77b7ad9d0a87be57ull }}, {{ 0xa421b9d2a466f517ull, 0x49217bc6e7ed21bdull, 0x1a4f148fe4081891ull, 0x6acac5efab6c16b7ull, 0xffa79eebaff2e721ull, 0xad2cc822694d6f6aull }}, {{ 0x6951423a6c0592e2ull, 0xdb4ed5c50f435168ull, 0x0716cd9ee850f5acull, 0x2bebbb5cb238e327ull, 0xfc8c3534df7d074eull, 0xc3bfd1581d065a2dull }}, {{ 0x1d2c96483837bcd6ull, 0x911459b298a12e14ull, 0x46e40835132998c0ull, 0xb735519ef638df86ull, 0xdd7a1410bae2490dull, 0xa57e2d71223f85cbull }}, {{ 0x23bdded2322d6058ull, 0xaacb80f9f64bccc9ull, 0xc4e85212bf9ff785ull, 0x281530359e38bb3eull, 0xa6c4c8a74cd6da89ull, 0x76edc66b567b39f6ull }}, {{ 0x656ab435f5c5c370ull, 0xabf309c39ef5ffdbull, 0xb11334bb7c3fab38ull, 0x90d3e2182e375073ull, 0x83afd6890064895bull, 0xa549c03160d043a2ull }}, {{ 0xf62b0a1b99b9a262ull, 0xb77e61a4359bfe91ull, 0xeac00f52da7cb036ull, 0xa846d4f1ce292484ull, 0x24de615a03ed5d93ull, 0x74e181edc822a459ull }}, {{ 0x9dae6514014057d1ull, 0x2aefd06a1817f1b3ull, 0x2b80993c88dee223ull, 0x92c451720d9b6d31ull, 0x70afcd842745a7c4ull, 0x90cf1349d15a6b7bull }}, {{ 0x28cff2c80c836e2bull, 0xad5e2424f0ef7104ull, 0xb305fc5d58b4d55full, 0xbbab2e74881243ebull, 0x66de072988b88dadull, 0xa816c0e22d8832d2ull }}, {{ 0x981f7bd07d224db2ull, 0xc5ad6971695a6a29ull, 0xfe3bdba5771055bcull, 0x54afd08d50b6a734ull, 0x04ac479f573588c9ull, 0x90e388d5c751fc38ull }}, {{ 0xf13ad624e35708f4ull, 0xb8c61e6e1d88259full, 0xee569476a6a3595full, 0x4ede258527228811ull, 0x2ebacc39681757ddull, 0xa8e35859c933da30ull }}, {{ 0x6c4c5d70e1665986ull, 0x37bd304d2751783full, 0x4f61cca282617dbdull, 0x14ad7733875950b3ull, 0xd34bfa3e10e96ea5ull, 0x98e17381dc0685e1ull }}, {{ 0x3afba668cdff7f38ull, 0x2d63e303892eb27aull, 0x19d1fe5917cee964ull, 0xcec6a803497d2701ull, 0x40f7c66ca91e5272ull, 0xf8ce831298413ad2ull }}, {{ 0x4dd480180bfaf830ull, 0xc5e6de235bd2f8c6ull, 0x0233ef7aee151de9ull, 0x13c29020dee3860bull, 0x89adc03e9b2f387cull, 0xb8111eb9f28c4c36ull }}, {{ 0x0a4d00f077cdb1deull, 0xbb04ad61963db7bfull, 0x16075acd4cd32b21ull, 0xc599a148b4e33c6eull, 0x60c982720fd834d8ull, 0x30ab3343797afa21ull }}, {{ 0x67020964ae08f2b0ull, 0x4e2ec5cfde692d76ull, 0xdc498c05003faf51ull, 0xb8004cd710e05c4cull, 0xc7df18749e721077ull, 0xe6b000a2becdc54dull }}, {{ 0x06145deecc597adcull, 0x0dd3ba1eb01bc6a0ull, 0x9adf7832027cd92dull, 0x30030066a8c39b00ull, 0xceb6f48e3074a4adull, 0x02e0065b7409b509ull }}, {{ 0x3ccbab53fb7ecc96ull, 0x8a454532e115c240ull, 0x0cbab1f418e07bc2ull, 0xe01e040297a40e06ull, 0x13258d8de48e6ec3ull, 0x1cc03f9288611262ull }}, {{ 0x5ff4b147d2f3fddbull, 0x66b4b3fccad99682ull, 0x7f4af388f8c4d599ull, 0xc12c2819ec688c3cull, 0xbf77878aed9053a6ull, 0x1f827bb953cab7d4ull }}, {{ 0xbf8eecce3d87ea91ull, 0x030f07dfec7fe117ull, 0xf8ed8359b7b057feull, 0x8bb991033c157a5cull, 0x7aab4b6d47a34483ull, 0x3b18d53d45eb2e4full }}, {{ 0x7b95400e674f29a7ull, 0x1e964ebf3cfecaedull, 0xb94721812ce36fecull, 0x753faa2058d6c7a1ull, 0xcab0f244cc60ad23ull, 0x4ef85464bb2fcf1aull }}, {{ 0xd3d480900917a083ull, 0x31df137861f3ed46ull, 0x3cc74f0bc0e25f39ull, 0x947ca5437863cc51ull, 0xeae976affbc6c362ull, 0x15b34bef4fde170bull }}, {{ 0x464d05a05aec451cull, 0xf2b6c2b3d38744c4ull, 0x5fc9167588d7b83bull, 0xccde74a2b3e5fb2cull, 0x2d1ea2dfd5c3a1d9ull, 0xd900f7591eace677ull }}, {{ 0xbf0238438d3ab316ull, 0x7b239b064348afaaull, 0xbddae097586d3257ull, 0x00b08e5b06fbcfbbull, 0xc3325cbe59a45282ull, 0x7a09a97b32c100a7ull }}, {{ 0x761632a3844afee1ull, 0xcf640e3ea0d6dcabull, 0x6a8cc5e97443f76aull, 0x06e58f8e45d61d55ull, 0x9ff79f6f806b3914ull, 0xc4609ecffb8a068dull }}, {{ 0x9cddfa632aedf4c9ull, 0x19e88e7248649eb2ull, 0x297fbb1e8aa7aa2cull, 0x44f79b8eba5d2556ull, 0x3fac3a5b04303ac8ull, 0xabc6341fd3644188ull }}, {{ 0x20abc7dfad4b8fd9ull, 0x03159076d3ee32faull, 0x9efd4f316a8ca5b9ull, 0xb1ac139347a3755dull, 0x7cba478e29e24bd2ull, 0xb5be093e41ea8f52ull }}, {{ 0x46b5cebcc4f39e75ull, 0x1ed7a4a4474dfdc5ull, 0x35e517ee297e793aull, 0xf0b8c3c0cc6295a8ull, 0xdf46cb8da2d6f63aull, 0x196c5c6e93299938ull }}, {{ 0xc31a135fb1843095ull, 0x346c6e6ac90be9b4ull, 0x1af2ef4d9ef0bc45ull, 0x6737a587fbd9d892ull, 0xb8c3f3885c659e4dull, 0xfe3b9c51bf9ffc38ull }}, {{ 0x9f04c1bcef29e5d5ull, 0x0c3c502bda77210full, 0x0d7d590835675ab4ull, 0x082c774fd68275b5ull, 0x37a783539bf82f06ull, 0xee541b317c3fda37ull }}, {{ 0x362f916157a2fa4full, 0x7a5b21b688a74a9cull, 0x86e57a5216098b08ull, 0x51bca91e61189912ull, 0x2c8b214417b1d63cull, 0x4f490feeda7e8628ull }}, {{ 0x1ddbadcd6c5dc717ull, 0xc78f51215688ea1aull, 0x44f6c734dc5f6e54ull, 0x315e9b2fcaf5fab9ull, 0xbd6f4ca8ecf25e5bull, 0x18da9f5488f13d91ull }}, {{ 0x2a94ca063ba9c6e7ull, 0xcb992b4d61592505ull, 0xb1a3c8109bba4f4full, 0xedb20fdded9bcb3cull, 0x6658fe994177af8full, 0xf88a394d596c67b1ull }}, {{ 0xa9cfe43e54a1c502ull, 0xf3fbb105cd7b7233ull, 0xf065d0a61547191dull, 0x48f49eab4815f05eull, 0xff79f1fc8eacdb9full, 0xb5663d057e3c0cedull }}, {{ 0xa21eea6f4e51b215ull, 0x87d4ea3a06d27604ull, 0x63fa267cd4c6fb2bull, 0xd98e32b0d0db63b5ull, 0xfac373dd92c09438ull, 0x15fe6236ee58814bull }}, {{ 0x553528590f30f4d1ull, 0x4e51264444389c2eull, 0xe7c580e04fc5cfb3ull, 0x7f8dfae82891e515ull, 0xcba286a7bb85ca38ull, 0xdbefd6254f750cf7ull }}, {{ 0x5413937a97e99027ull, 0x0f2b7eaaaa3619cfull, 0x0db708c31dba1d01ull, 0xfb8bcd1195b2f2dbull, 0xf459428d5339e634ull, 0x975e5d751a9281adull }}, {{ 0x48c3c2c9ef1fa184ull, 0x97b2f2aaa61d0219ull, 0x8926579f2945220aull, 0xd37602afd8fd7c8eull, 0x8b7c99854042fe11ull, 0xe9afa69309b910cbull }}, {{ 0xd7a59be3573c4f25ull, 0xecfd7aaa7d2214fcull, 0x5b7f6c379cb35469ull, 0x429c1ade79e6dd91ull, 0x72ddff34829decb2ull, 0x20dc81be613aa7f3ull }}, {{ 0x6c7816e1685b1770ull, 0x41e6caa8e354d1e0ull, 0x92fa3a2c1f014c23ull, 0x9a190cb0c304a7adull, 0x7cabf80d1a2b3ef6ull, 0x489d116fcc4a8f82ull }}, {{ 0x3cb0e4ce138eea5dull, 0x9303ea98e15032c4ull, 0xbdc645b9360cf960ull, 0x04fa7ee79e2e8cc7ull, 0xdeb7b08305b075a2ull, 0xd622ae5dfae99b18ull }}, {{ 0x5ee8f00cc39527a6ull, 0xbe2729f8cd21fbaaull, 0x69beb93c1c81bdc5ull, 0x31c8f50c2dd17fcdull, 0xb32ce51e38e49854ull, 0x5d5acfabcd200ef8ull }}, {{ 0xb519607fa3d38c7bull, 0x6d87a3b80353d4a7ull, 0x21733c591d1169b9ull, 0xf1d99279ca2efe06ull, 0xffc0f32e38edf349ull, 0xa58c1cb6034095b6ull }}, {{ 0x12fdc4fc66437cd0ull, 0x474c653021464e8dull, 0x4e805b7b22ae213eull, 0x727fb8c1e5d5ec3dull, 0xfd897fce394b80e3ull, 0x77791f1c2085d925ull }}, {{ 0xbde9b1dbfea2e021ull, 0xc8fbf3e14cbf1182ull, 0x110392cf5acd4c6eull, 0x78fd3792fa5b3a65ull, 0xe75efe0e3cf308e2ull, 0xaabb3719453a7b7bull }}, {{ 0x6b20f297f25cc14aull, 0xd9d786ccff76af1bull, 0xaa23bc198c04fc53ull, 0xb9e42bbdc79047f2ull, 0x09b5ec8e617e58d8ull, 0xab5026fcb448d2d7ull }}, {{ 0x2f4979ef779f8ce6ull, 0x826b4401faa2d712ull, 0xa56558ff7831db46ull, 0x42e9b569cba2cf7aull, 0x611b3d8fceef7877ull, 0xb12185df0ad83c66ull }}, {{ 0xd8dec35aac3b80f9ull, 0x1830a813ca5c66b5ull, 0x75f579fab1f290c1ull, 0x9d211621f45c1acaull, 0xcb10679e155ab4a8ull, 0xeb4f3ab66c725bffull }}, {{ 0x78b3a18aba5309beull, 0xf1e690c5e79c031aull, 0x9b96c3caf379a78aull, 0x234add538b990be8ull, 0xeea40c2cd58b0e96ull, 0x31184b203c7797fdull }}, {{ 0xb7044f6b473e6170ull, 0x7301a7bb0c181f08ull, 0x13e3a5ed82c08b6dull, 0x60eca54373fa7716ull, 0x526879c0576e91ddull, 0xeaf2ef425cabefebull }}, {{ 0x262b1a30c86fce5full, 0x7e108d4e78f13657ull, 0xc6e47b471b857246ull, 0xc93e74a287c8a6dcull, 0x3814c1836a51b2a5ull, 0x2d7d58979eb75f31ull }}, {{ 0x7daf05e7d45e0fb7ull, 0xeca58510b96c1f67ull, 0xc4ecd0c7133676c0ull, 0xdc708e594dd6849full, 0x30cf8f222730fa79ull, 0xc6e575ec3329b7ecull }}, {{ 0xe8d63b0e4bac9d24ull, 0x3e7732a73e393a0aull, 0xb14027c6c020a389ull, 0x9c658f7d0a612e3dull, 0xe81b975587e9c8c2ull, 0xc4f69b39ffa12f39ull }}, {{ 0x185e4e8ef4be2368ull, 0x70a7fa886e3c446dull, 0xec818dc38146635cull, 0x1bf79ae267cbce68ull, 0x1113e9574f21d79aull, 0xb1a21043fc4bd843ull }}, {{ 0xf3af11958f6d620bull, 0x668fc9544e5aac42ull, 0x3d0f89a30cbfe19cull, 0x17ac0cd80df61019ull, 0xaac71d6917526c05ull, 0xf054a2a7daf6729eull }}, {{ 0x84d6afd79a45d46full, 0x019ddd4b0f8aba9dull, 0x629b605e7f7ed01cull, 0xecb880708b9ca0fcull, 0xabc7261ae9383832ull, 0x634e5a8e8da07a32ull }}, {{ 0x3062de6c06ba4c53ull, 0x102aa4ee9b6b4a27ull, 0xda11c3b0faf42118ull, 0x3f350465741e49dbull, 0xb5c77d0d1c3231fdull, 0xe10f89918844c5faull }}, {{ 0xe3dcb0384346fb3cull, 0xa1aa71521230e587ull, 0x84b1a4e9cd894af0ull, 0x78122bf6892ee296ull, 0x19cae28319f5f3e4ull, 0xca9b5faf52afbbcbull }}, {{ 0xe69ee232a0c5d059ull, 0x50a86d34b5e8f74eull, 0x2ef07122075ced66ull, 0xb0b5b7a15bd4d9e1ull, 0x01ecd91f039b86ecull, 0xea11bcd93add55efull }}, {{ 0x0234d5fa47ba2375ull, 0x2694440f1b19a915ull, 0xd5646b5449a145ffull, 0xe7192c4d965082cbull, 0x13407b362413453eull, 0x24b1607c4ca55b56ull }}, {{ 0x16105bc6cd456294ull, 0x81caa8970f009ad2ull, 0x55ec314ae04cbbf7ull, 0x06fbbb07df251bf6ull, 0xc084d01d68c0b475ull, 0x6eedc4dafe75915cull }}, {{ 0xdca395c404b5d9c4ull, 0x11ea95e696060c34ull, 0x5b39ececc2ff57abull, 0x45d54e4eb773179full, 0x8530212617870c92ull, 0x5549b08df097ad9full }}, {{ 0x9e63d9a82f1a81acull, 0xb329db01dc3c7a10ull, 0x9043413f9df96caeull, 0xba550f132a7eec39ull, 0x33e14b7ceb467db6ull, 0x54e0e58b65ecc83bull }}, {{ 0x2fe68091d70910b6ull, 0xffa28e129a5cc4a6ull, 0xa2a08c7c2bbe3ed2ull, 0x475296bfa8f53a3full, 0x06ccf2e130c0e923ull, 0x50c8f771fb3fd250ull }}, {{ 0xdf0105b2665aa71eull, 0xfc598cba079fae7dull, 0x5a457cd9b56e743dull, 0xc939e37c9994467cull, 0x44017ccbe7891b60ull, 0x27d9aa73d07e3720ull }}, {{ 0xb60a38f7ff8a8727ull, 0xdb7f7f444c3cd0eaull, 0x86b6e08116508a6bull, 0xdc42e2ddffcac0dbull, 0xa80edff70b5b11c7ull, 0x8e80a88624ee2742ull }}, {{ 0x1c6639affb694787ull, 0x92faf8aafa60292bull, 0x4324c50adf256836ull, 0x9a9cdcabfdeb8893ull, 0x9094bfa6718eb1ceull, 0x9106953d714d889aull }}, {{ 0x1bfe40dfd21ccb41ull, 0xbdcdb6adc7c19bafull, 0x9f6fb26cb7761221ull, 0x0a209eb7eb3355c0ull, 0xa5cf7c806f92f212ull, 0xaa41d4666d075609ull }}, {{ 0x17ee88be351ff08bull, 0x6a0922c9cd9014d7ull, 0x3a5cf83f2a9cb551ull, 0x6546332f30015986ull, 0x7a1add045bbd74b4ull, 0xa6924c0042495c60ull }}, {{ 0xef51576e133f6572ull, 0x245b5be207a0d066ull, 0x47a1b277aa1f152eull, 0xf4bdffd7e00d7f3eull, 0xc50ca22b95668f0bull, 0x81b6f80296dd9bc4ull }}, {{ 0x592d6a4cc079f678ull, 0x6b9196d44c482405ull, 0xcc50f8aca536d3cdull, 0x8f6bfe6ec086f86eull, 0xb27e55b3d6019677ull, 0x1125b019e4a815afull }}, {{ 0x7bc626ff84c3a0adull, 0x33afe44afad16835ull, 0xfb29b6be74244606ull, 0x9a37f0538545b453ull, 0xf8ef59065c0fe0abull, 0xab78e102ee90d8dcull }}, {{ 0xd5bd85fb2fa446c2ull, 0x04deeaedcc2e1216ull, 0xcfa12370896abc3eull, 0x062f634334b90b47ull, 0xb9597a3f989ec6b4ull, 0xb2b8ca1d51a878a1ull }}, {{ 0x59673bcfdc6ac392ull, 0x30b52d49f9ccb4e4ull, 0x1c4b62655e2b5a6cull, 0x3dd9e0a00f3a70ceull, 0x3d7ec67bf633c308ull, 0xfb37e5253094b651ull }}, {{ 0x7e08561e9c2ba3b9ull, 0xe713c4e3c1ff10ebull, 0x1af1d7f5adb18839ull, 0x6a82c6409848680dull, 0x66f3c0d79e059e52ull, 0xd02ef373e5cf1f2cull }}, {{ 0xec535d3219b46536ull, 0x06c5b0e593f6a932ull, 0x0d726f98c8ef5243ull, 0x291bbe85f2d41083ull, 0x0585886c2c382f38ull, 0x21d58286fa1737bcull }}, {{ 0x3b41a3f5010bf41bull, 0x43b8e8f7c7a29bfdull, 0x86785bf7d959369eull, 0x9b15713b7c48a51eull, 0x37375439ba31d831ull, 0x52571945c4e82d58ull }}, {{ 0x509067920a77890dull, 0xa53919adcc5a17e4ull, 0x40b397ae7d7c222eull, 0x0ed66c52dad67331ull, 0x28294a4145f271f0ull, 0x3766fcb9b111c572ull }}, {{ 0x25a40bb468ab5a83ull, 0x743b00c9fb84eeebull, 0x8703ecd0e6d955d2ull, 0x94603b3c8c607fecull, 0x919ce68cbb787360ull, 0x2a05df40eab1b675ull }}, {{ 0x7868750c16b1891eull, 0x8a4e07e3d331552full, 0x46274029047d5a38ull, 0xcbc2505d7bc4ff3dull, 0xb021017f52b481c5ull, 0xa43ab8892af12097ull }}, {{ 0xb4149278e2ef5b30ull, 0x670c4ee63fed53daull, 0xbd88819a2ce58635ull, 0xf59723a6d5b1f864ull, 0xe14a0ef93b0d11b9ull, 0x6a4b355bad6b45ecull }}, {{ 0x08cdb8b8dd598fe2ull, 0x067b14fe7f45468bull, 0x67551005c0f73e16ull, 0x97e7648458f3b3efull, 0xcce495bc4e82b143ull, 0x26f01594c630bb40ull }}, {{ 0x58093738a57f9ed8ull, 0x40ced1f0f8b4c16eull, 0x0952a03989a86cdcull, 0xef09ed2b7985075aull, 0x00edd95b111aeca3ull, 0x8560d7cfbde75088ull }}, {{ 0x705c283676fc3474ull, 0x88143369b70f8e4full, 0x5d3a423f6094409aull, 0x566343b2bf324984ull, 0x094a7d8eab0d3e67ull, 0x35c86e1d6b092550ull }}, {{ 0x63999220a5da0c88ull, 0x50ca0221269b8f1aull, 0xa4469679c5ca8609ull, 0x5fe0a4fb77f6df2bull, 0x5ce8e792ae847009ull, 0x19d44d262e5b7520ull }}, {{ 0xe3ffb5467a847d4dull, 0x27e4154b82139707ull, 0x6ac1e0c1b9e93c5dull, 0xbec671d2afa4b7b4ull, 0xa1190bbad12c605dull, 0x024b037dcf929343ull }}, {{ 0xe7fd14c0c92ce4ffull, 0x8ee8d4f314c3e64eull, 0x2b92c791431c5ba3ull, 0x73c0723adc6f2d0cull, 0x4afa754c2bbbc3a9ull, 0x16ee22ea1bb9c0a4ull }}, {{ 0x0fe2cf87dbc0f1f4ull, 0x9518517ecfa6ff15ull, 0xb3bbcbac9f1b9463ull, 0x8584764c9c57c279ull, 0xedc894f9b555a49eull, 0xe54d5d251541866aull }}, {{ 0x9edc1b4e95897388ull, 0xd2f32ef41c85f6d2ull, 0x0555f4be3713cbe3ull, 0x372c9efe1b6d98c1ull, 0x49d5d1c115586e31ull, 0xf505a372d48f402dull }}, {{ 0x34991111d75e834full, 0x3d7fd5891d3ba43aull, 0x355b8f6e26c5f6e6ull, 0x27be35ed1247f78aull, 0xe25a318ad5744decull, 0x9238627c4d9881c4ull }}, {{ 0x0dfaaab269b12111ull, 0x66fe575b24546a46ull, 0x15939a4d83bba4feull, 0x8d6e1b42b6cfab66ull, 0xd785ef6c568b0b39ull, 0xb633d8db07f511b0ull }}, {{ 0x8bcaaaf820eb4aabull, 0x05ef698f6b4c26bcull, 0xd7c40707255471f0ull, 0x864d109b241cb1fcull, 0x6b3b5a3b616e703full, 0x1e06788e4f92b0e8ull }}, {{ 0x75eaadb14930eaaeull, 0x3b5a1f9a30f9835dull, 0x6da84647754c7360ull, 0x3f02a60f691ef3e0ull, 0x30518651ce50627bull, 0x2c40b58f1bbae914ull }}, {{ 0x9b2ac8ecdbe92acfull, 0x51853c05e9bf21a6ull, 0x4892beca94fc81c2ull, 0x761a7c9a1b3586c4ull, 0xe32f3f320f23d8d0ull, 0xba871797154d1ac9ull }}, {{ 0x0fabd940971bac17ull, 0x2f34583b21775082ull, 0xd5bb73e9d1dd1197ull, 0x9d08de05101743aaull, 0xdfd877f497667824ull, 0x4946ebe6d5030be2ull }}, {{ 0x9cb67c85e714b8e4ull, 0xd80b724f4ea92514ull, 0x5952872232a2afe7ull, 0x2258ac32a0e8a4acull, 0xbe74af8dea00b16eull, 0xdcc53704521e76dcull }}, {{ 0x1f20dd3b06cf38e3ull, 0x70727719129b72ceull, 0x7d394755fa5adf0eull, 0x5776b9fa49166ebbull, 0x708edb8b2406ee4dull, 0x9fb4262b3530a49full }}, {{ 0x3748a44e441838e1ull, 0x6478a6faba127c0dull, 0xe43cc95bc78cb690ull, 0x6aa343c6dae05352ull, 0x6594936f68454f05ull, 0x3d097db013e66e3aull }}, {{ 0x28d66b0ea8f238cbull, 0xecb685cb44b8d884ull, 0xea5fdd95cb7f21a3ull, 0x2a60a5c48cc3413cull, 0xf7cdc25a12b51636ull, 0x625ee8e0c7004e47ull }}, {{ 0x98602e92997637ebull, 0x3f2139f0af387529ull, 0x27bea7d9f2f75067ull, 0xa7c679ad7fa08c61ull, 0xae099784bb12de1dull, 0xd7b518c7c6030ecfull }}, {{ 0xf3c1d1b9fe9e2f29ull, 0x774c4366d834939full, 0x8d728e837da92408ull, 0x8dc0c0c6fc457bcbull, 0xcc5feb2f4ebcad28ull, 0x6d12f7cdbc1e941cull }}, {{ 0x85923143f22dd79cull, 0xa8faa204720dc43full, 0x86799122e89b6854ull, 0x898787c5dab6d5f3ull, 0xfbbf2fd9135ec395ull, 0x42bdae095931c91full }}, {{ 0x37b5eca775ca6c1bull, 0x99ca542c7489aa7bull, 0x40bfab5d1612134eull, 0x5f4b4dba8b245b83ull, 0xd577de7ac1b3a3d7ull, 0x9b68cc5d7bf1db3full }}, {{ 0x2d1b3e8a99e8390aull, 0x01e749bc8d60a8d0ull, 0x877cb1a2dcb4c112ull, 0xb8f109496f6b9320ull, 0x56aeb0cb91046669ull, 0x1217fba6d772907eull }}, {{ 0xc310716a03123a68ull, 0x1308e15d85c69821ull, 0x4adef05c9f0f8ab4ull, 0x396a5cde5a33bf45ull, 0x62d2e7f3aa2c0021ull, 0xb4efd4846a79a4efull }}, {{ 0x9ea46e241eb6480dull, 0xbe58cda739c1f151ull, 0xecb5639e369b6b08ull, 0x3e27a0af860578b4ull, 0xdc3d0f84a5b8014cull, 0x115e4d2c28c07159ull }}, {{ 0x326c4d69331ed080ull, 0x6f78088841936d30ull, 0x3f15e42e22122e57ull, 0x6d8c46db3c36b711ull, 0x9a629b2e79300cfaull, 0xadaf03b997846d82ull }}, {{ 0xf83b061bff342504ull, 0x5ab055528fc243e1ull, 0x76dae9cd54b5cf6aull, 0x477ac4905a2326acull, 0x07da0fd0bbe081c8ull, 0xc8d6253feb2c471aull }}, {{ 0xb24e3d17f8097226ull, 0x8ae355399d96a6d3ull, 0xa48d22054f1a1a27ull, 0xcacbada3855f82bcull, 0x4e849e2756c511d2ull, 0xd85d747f2fbac704ull }}, {{ 0xf70e62efb05e757dull, 0x6ce1544027e28444ull, 0x6d8354351705058bull, 0xebf4c86335bb1b5eull, 0x112e2d8963b2b23bull, 0x73a68cf7dd4bc62bull }}, {{ 0xa68fdd5ce3b096e2ull, 0x40cd4a818ed92ab1ull, 0x47214a12e6323772ull, 0x378fd3e0194f11b0ull, 0xabcdc75de4faf657ull, 0x848181aea4f5bdaeull }}, {{ 0x819ea5a0e4e5e4d5ull, 0x8804e90f947baaf0ull, 0xc74ce4bcfdf62a76ull, 0x2b9e46c0fd16b0e2ull, 0xb609c9aaf1cd9f68ull, 0x2d0f10d2719968d2ull }}, {{ 0x10327848f0faf04full, 0x50311a9bccd4ad65ull, 0xc900ef61eb9da8a1ull, 0xb42ec389e2e2e8dbull, 0x1c61e0ad72083a11ull, 0xc296a8386ffe183bull }}, {{ 0xa1f8b2d969cd6317ull, 0x21eb0a16004ec5f2ull, 0xda0959d33428964dull, 0x09d3a362dcdd1895ull, 0x1bd2c6c6745244b1ull, 0x99e292345fecf24full }}, {{ 0x53b6fc7e2205dee8ull, 0x532e64dc0313bb7aull, 0x845d82400995df03ull, 0x624461dca0a2f5daull, 0x163bc3c08b36aeeaull, 0x02d9b60bbf417717ull }}, {{ 0x4525dced543ab510ull, 0x3fcff0981ec552c7ull, 0x2ba716805fdab621ull, 0xd6abd29e465d9a89ull, 0xde55a5857022d527ull, 0x1c811c75788ea6e6ull }}, {{ 0xb37aa1454a4b129dull, 0x7e1f65f133b53bc8ull, 0xb486e103be8b1d4cull, 0x62b63a2ebfa8095bull, 0xaf587736615c538eull, 0x1d0b1c96b5928504ull }}, {{ 0x02ca4cb4e6eeba24ull, 0xed39fb6c051455d7ull, 0x0d44ca25716f24fcull, 0xdb1e45d37c905d95ull, 0xd974a81fcd9b438full, 0x226f1de317b9322eull }}, {{ 0x1be6ff110553456aull, 0x4443d23832cb5a66ull, 0x84afe5766e5771e1ull, 0x8f2eba42dda3a7d2ull, 0x7e8e913e0810a39eull, 0x58572adeed3bf5d4ull }}, {{ 0x1705f6aa3540b628ull, 0xaaa63631fbf187fdull, 0x2edef6a04f6a72ccull, 0x97d3469ca8648e39ull, 0xf191ac6c50a66431ull, 0x7367acb544579a4cull }}, {{ 0xe63ba2a614871d94ull, 0xaa7e1df3d76f4fe2ull, 0xd4b5a2431a287bfeull, 0xee40c21e93ed8e3bull, 0x6fb0bc3b267fe9efull, 0x820cbf14ab6c0701ull }}, {{ 0xfe545a7ccd4727cbull, 0xa8ed2b866a591edcull, 0x4f18569f0594d7f2ull, 0x4e879531c7478e56ull, 0x5ce75a4f80ff235full, 0x147f76ceb238460eull }}, {{ 0xef4b88e004c78df2ull, 0x9943b340277b34a1ull, 0x16f3623637d06f7aull, 0x114bd3f1c8cb8f5full, 0xa109871b09f761b9ull, 0xccfaa412f632bc8full }}, {{ 0x58f358c02fcb8b76ull, 0xfca500818ad00e53ull, 0xe581d61e2e245ac9ull, 0xacf64771d7f399b6ull, 0x4a5f470e63a9d13aull, 0x01ca68bd9dfb5d9cull }}, {{ 0x79817781ddf3729cull, 0xde72050f6c208f41ull, 0xf7125d2dcd6b8be3ull, 0xc19eca726f840124ull, 0xe7b8c68fe4a22c4aull, 0x11e817682bd1a81aull }}, {{ 0xbf0eab12ab827a1cull, 0xb074329a3945988eull, 0xa6b7a3ca063376e6ull, 0x9033e8785b280b71ull, 0x0d37c19eee55baebull, 0xb310ea11b630910dull }}, {{ 0x7692aebab318c519ull, 0xe489fa063cb7f593ull, 0x832c65e43e02a502ull, 0xa20714b38f907270ull, 0x842d90354f594d33ull, 0xfea924b11de5aa82ull }}, {{ 0xa1bad34afef7b2fcull, 0xed63c43e5f2f97c2ull, 0x1fbbfaea6c1a721cull, 0x5446cf039ba47865ull, 0x29c7a215197d0404ull, 0xf29b6eeb2af8a919ull }}, {{ 0x514c40edf5acfdd5ull, 0x45e5aa6fb7dbed9aull, 0x3d57cd2839087521ull, 0x4ac41624146cb3f3ull, 0xa1cc54d2fee2282bull, 0x7a12552fadb69afbull }}, {{ 0x2cfa894b98c1ea51ull, 0xbaf8a85d2e974807ull, 0x656e03923a54934cull, 0xeba8dd68cc3f0780ull, 0x51fb503df4d591b0ull, 0xc4b753dcc9220dd4ull }}, {{ 0xc1c95cf3f7932726ull, 0x4db693a3d1e8d047ull, 0xf64c23b6474dc0ffull, 0x3498a617fa764b03ull, 0x33d1226b9057b0e9ull, 0xaf29469fdb548a4bull }}, {{ 0x91dda187abbf8780ull, 0x0921c466331822cdull, 0x9ef9651ec90989f9ull, 0x0df67cefc89eee27ull, 0x062b5833a36ce91cull, 0xd79cc23e914d66f0ull }}, {{ 0xb2a84f4cb57b4afeull, 0x5b51abfdfef15c07ull, 0x35bdf333da5f63baull, 0x8ba0e15dd6354d8cull, 0x3db1720462411b18ull, 0x6c1f9671ad060560ull }}, {{ 0xfa9318ff16d0edf1ull, 0x9130b7ebf56d984cull, 0x196b800687b9e547ull, 0x7448cdaa5e15077aull, 0x68ee742bd68b0ef5ull, 0x393be070c23c35c2ull }}, {{ 0xc9bef9f6e4294b69ull, 0xabe72f379647f301ull, 0xfe3300414d42f4cbull, 0x8ad808a7acd24ac4ull, 0x195089b6616e9596ull, 0x3c56c467965a1998ull }}, {{ 0xe175c3a4e99cf21aull, 0xb707d82bdecf7e11ull, 0xedfe028d049d8ff4ull, 0x6c70568cc036ebb1ull, 0xfd25611fce51d7e1ull, 0x5b63ac0bdf84fff0ull }}, {{ 0xce99a47120217500ull, 0x264e71b6b41aecb2ull, 0x4bec19822e279f8full, 0x3c63617f822534f3ull, 0xe375cb3e0f326eceull, 0x91e4b876bb31ff69ull }}, {{ 0x12006c6b414e91feull, 0x7f107123090d3efcull, 0xf738ff15cd8c3b97ull, 0x5be1cefb15741180ull, 0xe299f06c97f8540eull, 0xb2ef34a34ff3fa22ull }}, {{ 0xb4043c308d11b3eeull, 0xf6a46b5e5a8475d8ull, 0xa839f6da077a53eaull, 0x96d215ced688af09ull, 0xda03643defb3488full, 0xfd580e611f87c55cull }}, {{ 0x082a59e582b1074aull, 0xa26c31af892c9a77ull, 0x9243a4844ac7472dull, 0xe434da146156d660ull, 0x8421ea6b5d00d59bull, 0xe5708fcb3b4db5a0ull }}, {{ 0x51a782f71aea48e3ull, 0x5839f0db5bbe08a6ull, 0xb6a46d2aebc8c7c8ull, 0xea1084cbcd645fc5ull, 0x29532831a2085816ull, 0xf6659df051091845ull }}, {{ 0x308b1da70d26d8daull, 0x72436891956c567full, 0x226c43ad35d7cdd3ull, 0x24a52ff605ebbdb9ull, 0x9d3f91f0545370e5ull, 0x9ff82b632a5af2b3ull }}, {{ 0xe56f288683847882ull, 0x76a215afd63b60f7ull, 0x583aa4c41a6e0a42ull, 0x6e73df9c3b35693bull, 0x247bb3634b4268f3ull, 0x3fb1b1dfa78d7b04ull }}, {{ 0xf6579541232cb518ull, 0xa254d8de5e51c9aeull, 0x724a6fa9084c6698ull, 0x5086bc1a50161c51ull, 0x6cd501e0f0981982ull, 0x7cf0f2bc8b86ce29ull }}, {{ 0x9f6bd48b5fbf12eeull, 0x575078afaf31e0d5ull, 0x76e85c9a52fc01f6ull, 0x2543590720dd1b2eull, 0x405212c965f0ff17ull, 0xe1697b5d73440d9eull }}, {{ 0x3a364d71bd76bd50ull, 0x6924b6dcd7f2c858ull, 0xa5139e073dd8139full, 0x74a17a4748a30fd0ull, 0x8334bbddfb69f6e7ull, 0xce1ed1a680a8882eull }}, {{ 0x461f067166a3651eull, 0x1b6f24a06f7bd372ull, 0x72c42c486a70c43aull, 0x8e4ec6c8d65e9e26ull, 0x200f56abd223a50aull, 0x0d343081069551d1ull }}, {{ 0xbd36406e0261f32full, 0x12576e445ad64276ull, 0x7ba9bad42867aa45ull, 0x8f13c3d85fb22d80ull, 0x409962b635647269ull, 0x8409e50a41d5322bull }}, {{ 0x641e844c17d37fd6ull, 0xb76a4eab8c5e98a3ull, 0xd4a14c49940ca6b2ull, 0x96c5a673bcf5c704ull, 0x85fddb1e15ec781full, 0x2862f2669253f5b0ull }}, {{ 0xe9312af8ee42fe59ull, 0x2a2712b37bb1f661ull, 0x4e4cfadfc87e82fbull, 0xe3b880856199c630ull, 0x3bea8f2cdb3cb13bull, 0x93dd7801b74798e5ull }}, {{ 0x1bebadb94e9def77ull, 0xa586bb02d4f39fd3ull, 0x0f01ccbdd4f11dcfull, 0xe5350535d001bde3ull, 0x572997c0905eec56ull, 0xc6a6b01128cbf8f4ull }}, {{ 0x1734c93d122b5aa1ull, 0x77434e1c51843e3full, 0x9611ff6a516b2a1cull, 0xf412341a20116adeull, 0x679fed85a3b53b64ull, 0xc282e0ab97f7b98bull }}, {{ 0xe80fdc62b5b18a4dull, 0xa8a10d1b2f2a6e76ull, 0xdcb3fa272e2fa51cull, 0x88b6090540ae2cb1ull, 0x0c3f4738651451f1ull, 0x991cc6b3efad3f72ull }}, {{ 0x109e9bdb18ef6706ull, 0x964a830fd7a850a5ull, 0x9f07c587cddc731eull, 0x571c5a3486cdbef2ull, 0x7a78c833f2cb336full, 0xfb1fc3075cc47a74ull }}, {{ 0xa632168ef95a063eull, 0xdee91e9e6c932672ull, 0x364db74e0a9c7f31ull, 0x671b860d4409757aull, 0xc8b7d2077bf00259ull, 0xcf3d9e499facc88cull }}, {{ 0x7df4e195bd843e69ull, 0xb51b32303dbf807aull, 0x1f09290c6a1cf7f2ull, 0x07133c84a85e96c6ull, 0xd72e344ad760177eull, 0x18682ee03cbfd57full }}, {{ 0xeb90cfd9672a701aull, 0x130ff5e2697b04c8ull, 0x365b9a7c2521af7bull, 0x46c05d2e93b1e3bdull, 0x67ce0aec69c0eaecull, 0xf411d4c25f7e56feull }}, {{ 0x33a81e7e07a86109ull, 0xbe9f9ad81ece2fd9ull, 0x1f9408d97350daceull, 0xc383a3d1c4f2e564ull, 0x0e0c6d3c21892d3aull, 0x88b24f97baef65f0ull }}, {{ 0x049130ec4c93ca59ull, 0x723c0c71340dde7cull, 0x3bc8587e81288c13ull, 0xa3246631b17cf5e9ull, 0x8c7c44594f5bc44bull, 0x56f71bed4d59fb60ull }}, {{ 0x2dabe93afdc5e778ull, 0x76587c6c088ab0d8ull, 0x55d374f10b9578c2ull, 0x5f6bfdf0eee19b1cull, 0x7cdaab7d1995aaf4ull, 0x65a717450583d1c5ull }}, {{ 0xc8b71c4de9bb0ab1ull, 0x9f74dc38556ae871ull, 0x5a42916a73d6b798ull, 0xba37eb6954d00f1bull, 0xe08ab2e2ffd8ad8bull, 0xf886e8b2372631b6ull }}, {{ 0xd7271b0b214e6ae9ull, 0x3a909a33562d1471ull, 0x8699ae2886632bf6ull, 0x462f321d50209711ull, 0xc56afcddfe76c775ull, 0xb54516f6277df124ull }}, {{ 0x67870e6f4d102d1bull, 0x49a606015dc2cc72ull, 0x4200cd953fdfb79eull, 0xbdd7f5252145e6afull, 0xb62de0abf0a3ca94ull, 0x14b2e59d8aeb6b6full }}, {{ 0x0b46905902a1c30eull, 0xe07c3c0da99bfc78ull, 0x940807d47ebd2c2eull, 0x6a6f93734cbb02d8ull, 0x1dcac6b76665e9cfull, 0xcefcf8276d32325dull }}, {{ 0x70c1a37a1a519e8full, 0xc4da5888a017dcb0ull, 0xc8504e4cf363b9d4ull, 0x285bc280ff4e1c75ull, 0x29ebc329fffb221aull, 0x15e1b18a43f5f7a3ull }}, {{ 0x679062c507303197ull, 0xb087755640ee9ee4ull, 0xd3230f0181e5424full, 0x93959909f90d1c99ull, 0xa3359fa3ffcf5505ull, 0xdad0ef66a79bac5full }}, {{ 0x0ba3dbb247e1efe1ull, 0xe54a955e895234ecull, 0x3f5e960f12f4971cull, 0xc3d7fa63ba831e02ull, 0x60183c67fe195237ull, 0x8c295a028c14bbbcull }}, {{ 0x746694f6ced35eccull, 0xf4e9d5b15d361138ull, 0x79b1dc96bd8de720ull, 0xa66fc7e5491f2c16ull, 0xc0f25c0fecfd362dull, 0x799d841978cf555bull }}, {{ 0x8c01d1a41441b3f4ull, 0x912258eda41cac34ull, 0xc0f29de3678b0749ull, 0x805dcef4db37b8e0ull, 0x8977989f41e41dc8ull, 0xc02728feb8195595ull }}, {{ 0x78123068ca910787ull, 0xab577948691eba0dull, 0x897a2ae20b6e48dfull, 0x03aa1590902d38c7ull, 0x5eabf63892e929d5ull, 0x818799f330fd57d7ull }}, {{ 0xb0b5e417e9aa4b43ull, 0xb16abcd41b334486ull, 0x5ec5acd4724ed8bcull, 0x24a4d7a5a1c437cbull, 0xb2b79e35bd1ba252ull, 0x0f4c037fe9e56e69ull }}, {{ 0xe71ae8ef20a6f09aull, 0xee2b60491000ad42ull, 0xb3b8c04c7714775eull, 0x6e706c7851aa2df1ull, 0xfb2c2e1963145735ull, 0x98f822ff22f65020ull }}, {{ 0x070d1957468565ffull, 0x4db1c2daa006c49dull, 0x053782fca6cca9b5ull, 0x50643cb330a5cb71ull, 0xcfb9ccfddecb6816ull, 0xf9b15df75d9f2149ull }}, {{ 0x4682fd68c135fbf8ull, 0x08f19c8a4043ae22ull, 0x342b1dde83fea115ull, 0x23ea5effe679f26aull, 0x1d4201eab3f210dfull, 0xc0edaba9a8374ce2ull }}, {{ 0xc11de6178c1bd7b2ull, 0x59701d6682a4cd56ull, 0x09af2ab127f24ad2ull, 0x6727b5ff00c37826ull, 0x2494132b0774a8b7ull, 0x8948b4a0922900d5ull }}, {{ 0x8b2afceb79166cf0ull, 0x7e6126011a700563ull, 0x60d7aaeb8f76ec37ull, 0x078d1bf607a2b17cull, 0x6dc8bfae4a8e972aull, 0x5cd70e45b59a0853ull }}, {{ 0x6fade132bae04161ull, 0xefcb7c0b086035e3ull, 0xc86cad339aa53a2aull, 0x4b83179c4c5aeedbull, 0x49d77ccee991e7a4ull, 0xa0668eb918045342ull }}, {{ 0x5ccacbfb4cc28dcaull, 0x5df2d86e53c21ae2ull, 0xd43ec4040a7445adull, 0xf31eec1afb8d5495ull, 0xe26ae0151fb30c6aull, 0x4401933af02b4096ull }}, {{ 0x9febf7d0ff9989e4ull, 0xab7c744f45950cd7ull, 0x4a73a828688ab8c5ull, 0x7f35390dd3854ddaull, 0xd82cc0d33cfe7c2dull, 0xa80fc04d61b085e4ull }}, {{ 0x3f37ae29fbff62e7ull, 0xb2dc8b18b7d2806cull, 0xe8849194156b37b8ull, 0xf8143a8a43350a86ull, 0x71bf884061f0d9c6ull, 0x909d8305d0e53af0ull }}, {{ 0x782ccda3d7f9dd07ull, 0xfc9d6ef72e39043aull, 0x152dafc8d6302d36ull, 0xb0ca4966a0126945ull, 0x717b5283d36881c5ull, 0xa6271e3a28f44d64ull }}, {{ 0xb1c008666fc2a249ull, 0xde2655a7ce3a2a48ull, 0xd3c8ddd85de1c425ull, 0xe7e6de0240b81cb2ull, 0x6ed13926421511b8ull, 0x7d872e45998b05ecull }}, {{ 0xf18054005d9a56deull, 0xad7f588e0e45a6d6ull, 0x45d8aa73aad1a97aull, 0x0f04ac1687311efcull, 0x542c3b7e94d2b139ull, 0xe747ceb7ff6e3b3cull }}, {{ 0x6f034803a80764acull, 0xc6f9758c8eb88465ull, 0xba76a884ac309ecaull, 0x962eb8e147eb35daull, 0x49ba52f1d03aec3aull, 0x08ce132ffa4e505bull }}, {{ 0x5620d0249049eeb7ull, 0xc5be977d93352bf6ull, 0x48a2952eb9e633ebull, 0xddd338cccf301a8bull, 0xe1473d72224d3a49ull, 0x580cbfdfc70f2390ull }}, {{ 0x5d48216da2e35323ull, 0xb971eae7c013b79full, 0xd659d3d342fe0735ull, 0xaa40380017e10970ull, 0xccc86675570446e2ull, 0x707f7ebdc69763a8ull }}, {{ 0xa4d14e485ce13f61ull, 0x3e732d0d80c52c39ull, 0x5f8246409dec4819ull, 0xa6823000eeca5e68ull, 0xffd40095662ac4daull, 0x64faf369c1e9e497ull }}, {{ 0x702d0ed3a0cc79c6ull, 0x707fc28707b3ba40ull, 0xbb16be862b3ad0fcull, 0x8115e00953e7b013ull, 0xfe4805d5fdabb08aull, 0xf1cd82219322edefull }}, {{ 0x61c2944447fcc1baull, 0x64fd99464d054684ull, 0x4ee3713db04c29dcull, 0x0adac05d470ce0c5ull, 0xeed03a5be8b4e569ull, 0x7207154fbf5d4b5full }}, {{ 0xd199caaacfdf9147ull, 0xf1e7fcbf0234c12bull, 0x14e26c68e2f9a29bull, 0x6c8b83a4c680c7b5ull, 0x542247971710f61aull, 0x7446d51d79a4f1bfull }}, {{ 0x3001eaac1ebbacc3ull, 0x730fdf76160f8bb6ull, 0xd0d83c18ddc05a17ull, 0x3d73246fc107cd12ull, 0x4956cbe6e6a99d08ull, 0x8ac45326c0717179ull }}, {{ 0xe0132ab93354bfa1ull, 0x7e9eba9cdc9b751dull, 0x287258f8a98384eaull, 0x667f6c5d8a4e02bcull, 0xdd63f70502a02252ull, 0x6bab3f83846e6ebcull }}, {{ 0xc0bfab3c014f7c49ull, 0xf2334a209e12932aull, 0x947779b69f233128ull, 0x00fa3ba7670c1b59ull, 0xa5e7a6321a415738ull, 0x34b07b232c505360ull }}, {{ 0x877cb0580d1adad8ull, 0x7600e5462cb9bfabull, 0xccaac122375feb99ull, 0x09c6548a0679117full, 0x7b0c7df5068d6830ull, 0x0ee4cf5fbb2341c6ull }}, {{ 0x4adee370830c8c71ull, 0x9c08f4bdbf417cb3ull, 0xfeab8b5629bf33feull, 0x61bf4d6440baaefdull, 0xce7ceb92418611e0ull, 0x94f019bd4f6091c0ull }}, {{ 0xecb4e2651e7d7c6cull, 0x18598f69788edf00ull, 0xf2b3715da17807f2ull, 0xd17905ea874ad5ebull, 0x10e133b68f3cb2c3ull, 0xd161016519c5b188ull }}, {{ 0x3f10d7f330e6dc39ull, 0xf37f9a1eb594b609ull, 0x7b026da84eb04f74ull, 0x2eba3b2948ec5b37ull, 0xa8cc0521985efba6ull, 0x2dca0df301b8ef50ull }}, {{ 0x76a86f7fe9049a38ull, 0x82fc053317cf1c5cull, 0xce18489312e31a91ull, 0xd3464f9cd93b902aull, 0x97f8334ff3b5d47dull, 0xc9e48b7e11395926ull }}, {{ 0xa2945aff1a2e062eull, 0x1dd833feee171b9cull, 0x0cf2d5bebcdf09afull, 0x40bf1c207c53a1acull, 0xefb2011f851a4ceaull, 0xe2ed72ecac3d7b81ull }}, {{ 0x59cb8df705cc3dc8ull, 0x2a7207f54ce7141eull, 0x817c597360b660d7ull, 0x87771944db4450b8ull, 0x5cf40b3b33070126ull, 0xdd467d3eba66d313ull }}, {{ 0x81f38ba639fa69d0ull, 0xa8744f950106c92full, 0x0edb7e81c71fc867ull, 0x4aa6fcb090ab2735ull, 0xa188704ffe460b81ull, 0xa4c0e47348043ec1ull }}, {{ 0x1383747e43c82222ull, 0x948b1bd20a43dbdbull, 0x9492f111c73dd40cull, 0xea85dee5a6af8812ull, 0x4f54631feebc730cull, 0x6f88ec80d02a7390ull }}, {{ 0xc3228ceea5d15557ull, 0xcd6f163466a6968eull, 0xcdbd6ab1c86a487dull, 0x293ab4f882db50b9ull, 0x194bdf3f535c7e81ull, 0x5b593d0821a883a3ull }}, {{ 0x9f5981527a2d5568ull, 0x0656de0c0281e193ull, 0x09662af1d426d4eaull, 0x9c4b11b51c912742ull, 0xfcf6b879419cf10bull, 0x917c62515095245eull }}, {{ 0x397f0d38c5c5560eull, 0x3f64ac781912cfc4ull, 0x5dfdad7249845124ull, 0x1aeeb1131dab8894ull, 0xe1a334bc90216a74ull, 0xaedbd72d25d36bb5ull }}, {{ 0x3ef68437b9b55c8eull, 0x79eebcb0fabc1daaull, 0xabe8c676df2b2b6aull, 0x0d52eabf28b355cbull, 0xd0600f5da14e2889ull, 0xd49667c37a42351aull }}, {{ 0x75a12a2d41159d8bull, 0xc3535ee9cb5928a6ull, 0xb717c0a4b7afb228ull, 0x853d2b77970159f4ull, 0x23c099a84d0d955aull, 0x4de00da2c696130cull }}, {{ 0x984ba5c48ad8276eull, 0xa141b521f17b9680ull, 0x26ed866f2cdcf597ull, 0x3463b2abe60d838full, 0x658600930287d589ull, 0x0ac0885bc1dcbe79ull }}, {{ 0xf2f479ad6c718a4full, 0x4c9113536ed3e105ull, 0x85474057c0a197ecull, 0x0be4fab6fc872397ull, 0xf73c05be194e575cull, 0x6b855395929f70bdull }}, {{ 0x7d8cc0c63c6f6712ull, 0xfdaac1425446ca3bull, 0x34c8836d864fef3aull, 0x76f1cb25dd4763ebull, 0xa858396cfd0f6998ull, 0x333543d7ba3a676bull }}, {{ 0xe77f87be5c5a06b5ull, 0xe8ab8c974ac3e652ull, 0x0fd522473f1f584dull, 0xa571ef7aa4c9e730ull, 0x93723e41e29a1ff4ull, 0x0014a66d46480a34ull }}, {{ 0x0afb4d6f9b84430eull, 0x16b37de8eba6ff3dull, 0x9e5356c87739730bull, 0x76735aca6fe307e0ull, 0xc2766e92da053f8eull, 0x00ce8044bed0660dull }}, {{ 0x6dd1065c132a9e91ull, 0xe302eb193485f862ull, 0x2f4163d4a83e7e6eull, 0xa0818be85ede4ec6ull, 0x98a051bc84347b90ull, 0x081102af7423fc89ull }}, {{ 0x4a2a3f98bfaa31aaull, 0xde1d2efc0d3bb3d8ull, 0xd88de64e9270f054ull, 0x450f7713b4af13bdull, 0xf643315d2a0cd3a6ull, 0x50aa1ada8967dd5full }}, {{ 0xe5a67bf77ca5f0a4ull, 0xad23d5d884550672ull, 0x758aff11b8696350ull, 0xb29aa6c50ed6c56aull, 0x9e9feda3a480447eull, 0x26a50c895e0ea5bfull }}, {{ 0xf880d7aade7b6663ull, 0xc3665a752b52407cull, 0x976df6b1341de126ull, 0xfa0a83b29463b628ull, 0x323f48646d02acf2ull, 0x82727d5dac92797cull }}, {{ 0xb5086cacb0d1ffe2ull, 0xa1ff8893b13684e1ull, 0xea4ba2ec092acb83ull, 0xc46924f9cbe51d95ull, 0xf678d3ec421ac17dull, 0x1878e5a8bdb8bed9ull }}, {{ 0x12543ebee833fed7ull, 0x53fb55c4ec2130d1ull, 0x26f45d385babf324ull, 0xac1b71c1f6f327dbull, 0xa0b8473a950b8ee9ull, 0xf4b8f89769377483ull }}, {{ 0xb74a73751207f465ull, 0x47d159b1394be82aull, 0x858ba43394b77f6bull, 0xb9127193a57f8e8full, 0x4732c849d2739520ull, 0x8f39b5ea1c2a8d24ull }}, {{ 0x28e88292b44f8bf2ull, 0xce2d80ec3cf711abull, 0x37746a03cf2afa30ull, 0x3ab86fc476fb919bull, 0xc7fbd2e23883d347ull, 0x98411b2519a9836aull }}, {{ 0x991519bb0b1b7776ull, 0x0dc7093a61a6b0afull, 0x2a8c242617adc5e8ull, 0x4b345daca5d3b010ull, 0xcfd63cd6352640c8ull, 0xf28b0f73009f222bull }}, {{ 0xfad3014e6f12aa9bull, 0x89c65c47d082e6dbull, 0xa979697cecc9bb10ull, 0xf00ba8be7a44e0a1ull, 0x1e5e605e137e87d2ull, 0x796e9a7e063755b6ull }}, {{ 0xcc3e0d1056baaa12ull, 0x61bf9ace251d0497ull, 0x9ebe1ee13fe14ea5ull, 0x60749770c6b0c650ull, 0x2fafc3acc2f14e3dull, 0xbe5208ec3e29591dull }}, {{ 0xfa6c82a3634aa4b1ull, 0xd17c0c0d73222dedull, 0x336d34cc7ecd1275ull, 0xc48dea67c2e7bf26ull, 0xdcdda4bf9d6d0e65ull, 0x6f34593a6d9d7b23ull }}, {{ 0xc83d1a61e0ea6ee7ull, 0x2ed878867f55cb4bull, 0x02440ffcf402b89aull, 0xad8b280d9d0d777eull, 0xa0a86f7c26428ff9ull, 0x580b7c484826cf66ull }}, {{ 0xd26307d2c9285507ull, 0xd474b540f959f0f5ull, 0x16a89fe1881b3605ull, 0xc76f90882286aaecull, 0x46945ad97e999fc0ull, 0x7072dad2d1841a02ull }}, {{ 0x37de4e3bdb935245ull, 0x4c8f1489bd83699aull, 0xe2963ecf51101c3aull, 0xca5ba5515942ad38ull, 0xc1cb8c7ef2003d87ull, 0x647c8c3c2f290416ull }}, {{ 0x2eaf0e5693c136b0ull, 0xfd96cd6167222006ull, 0xd9de74192aa11a46ull, 0xe794752d7c9ac438ull, 0x91f37cf57402674dull, 0xecdd7a59d79a28e3ull }}, {{ 0xd2d68f61c58c22ddull, 0xe7e405ce0755403dull, 0x82b088fbaa4b06c5ull, 0x0bcc93c6de0baa38ull, 0xb382e1968818090bull, 0x40a6c7826c0598e3ull }}, {{ 0x3c6199d1b7795ca2ull, 0x0ee83a0c4954826aull, 0x1ae559d4a6ee43bbull, 0x75fdc5c4ac74a635ull, 0x031ccfe150f05a6eull, 0x8683cb183837f8e5ull }}, {{ 0x5bd002312abd9e4full, 0x9512447add4d1826ull, 0x0cf5824e854ea54eull, 0x9be9b9aebc8e7e13ull, 0x1f201ecd29638850ull, 0x4125eef2322fb8f2ull }}, {{ 0x962015ebab682f18ull, 0xd2b6accca502f17full, 0x8197171135127511ull, 0x172140d35d90ecbeull, 0x374134039de35326ull, 0x8b7b5575f5dd3975ull }}, {{ 0xdd40db34b211d6edull, 0x3b22bffe721d6efbull, 0x0fe6e6ac12b892b2ull, 0xe74c8841a7a93f71ull, 0x288c08242ae13f7cull, 0x72d1569b9aa43e94ull }}, {{ 0xa488900ef4b26543ull, 0x4f5b7ff0752655d6ull, 0x9f0502b8bb35baf6ull, 0x08fd52908c9c7a6aull, 0x95785169accc7ae1ull, 0x7c2d62140a6a71c9ull }}, {{ 0x6d55a0958ef7f49bull, 0x1992ff64937f5a62ull, 0x36321b3750194d9full, 0x59e539a57e1cc82aull, 0xd6b32e20bffccccaull, 0xd9c5d4c8682871dfull }}, {{ 0x455845d795af8e0aull, 0xffbdf9edc2f987d8ull, 0x1df5102920fd0836ull, 0x82f44076ed1fd1a6ull, 0x62ffcd477fdfffe7ull, 0x81ba4fd4119472beull }}, {{ 0xb572ba6bd8db8c61ull, 0xfd6bc3499dbf4e72ull, 0x2b92a19b49e25225ull, 0x1d8a84a5433e307dull, 0xddfe04cafebfff0bull, 0x11471e48afcc7b6full }}, {{ 0x167b483678937bcaull, 0xe635a0e02979107bull, 0xb3ba5010e2d7357bull, 0x27692e74a06de4e3ull, 0xabec2fedf37ff66full, 0xacc72ed6ddfcd25eull }}, {{ 0xe0d0d220b5c2d5e0ull, 0xfe1848c19ebaa4ceull, 0x054720a8dc6816d6ull, 0x8a1bd08e444af0e5ull, 0xb739df4b82ffa057ull, 0xbfc7d464abe037b2ull }}, {{ 0xc8283547199c5ac1ull, 0xecf2d790334a7014ull, 0x34c746989c10e465ull, 0x6516258eaaed68f2ull, 0x2842b8f31dfc436bull, 0x7dce4beeb6c22cfbull }}, {{ 0xd19214c7001b8b8full, 0x417c6ba200e860cfull, 0x0fc8c1f618a8ebfbull, 0xf2dd7792ad461976ull, 0x929b397f2bdaa231ull, 0xea0ef7532395c1cfull }}, {{ 0x2fb4cfc601137395ull, 0x8edc34540913c81eull, 0x9dd7939cf69937d0ull, 0x7ca6abbac4bcfe9cull, 0xba103ef7b68a55f3ull, 0x2495a93f63d9921bull }}, {{ 0xdd101dbc0ac283d6ull, 0x949a0b485ac5d12dull, 0x2a6bc421a1fc2e25ull, 0xde82b54baf61f21eull, 0x44a275ad21675b82ull, 0x6dd89c79e67fb515ull }}, {{ 0xa2a129586b99265cull, 0xce0470d38bba2bcaull, 0xa835a95053d9cd77ull, 0xb11b14f4d9d3752dull, 0xae5898c34e09931cull, 0x4a761cc300fd12d4ull }}, {{ 0x5a4b9d7433fb7f96ull, 0x0c2c68437545b5eaull, 0x92189d23468206aeull, 0xeb0ed190824293c8ull, 0xcf75f7a10c5fbf1eull, 0xe89d1f9e09e2bc4eull }}, {{ 0x86f4268a07d2fbdeull, 0x79bc12a294b91b27ull, 0xb4f62360c11442ccull, 0x2e942fa51699c5d5ull, 0x1a9bac4a7bbd7735ull, 0x16233c2c62db5b14ull }}, {{ 0x458981644e3dd6b0ull, 0xc158ba59cf3b0f8bull, 0x119d61c78aca9bfcull, 0xd1c9dc72e201ba59ull, 0x0a14bae8d566a813ull, 0xdd6059bbdc918ec9ull }}, {{ 0xb75f0deb0e6a62deull, 0x8d774782184e9b70ull, 0xb025d1cb6bea17dfull, 0x31e29c7cd411477aull, 0x64cf4d18560290c6ull, 0xa5c381569daf93daull }}, {{ 0x29b68b2e9027dca8ull, 0x86a8cb14f3121267ull, 0xe17a31f23724eebbull, 0xf2da1ce048accacaull, 0xf01902f35c19a7bdull, 0x79a30d6228dbc687ull }}, {{ 0xa1216fd1a18e9e91ull, 0x4297eed17eb4b807ull, 0xcec5f37627715353ull, 0x7c8520c2d6bfebecull, 0x60fa1d8199008d6bull, 0xc05e85d59895c14full }}, {{ 0x4b4e5e304f9231afull, 0x99ef542ef30f304cull, 0x13bb829d8a6d4140ull, 0xdd33479c637f3740ull, 0xc9c5270ffa058632ull, 0x83b13a57f5d98d19ull }}, {{ 0xf10fade31bb5f0d4ull, 0x035949d57e97e2faull, 0xc5531a2768448c86ull, 0xa400cc1be2f82880ull, 0xe1b3869fc4373dfcull, 0x24ec476f9a7f8301ull }}, {{ 0x6a9ccadf151b684cull, 0x217ce256f1eeddcdull, 0xb53f058a12ad7d3cull, 0x6807f916ddb19507ull, 0xd103423daa286bdeull, 0x713aca5c08fb1e12ull }}, {{ 0x2a1fecb6d31212f6ull, 0x4ee0d7657354aa06ull, 0x14763764bac6e459ull, 0x104fbae4a8efd24dull, 0x2a209668a59436b0ull, 0x6c4be79859cf2cbcull }}, {{ 0xa53f3f243eb4bd9aull, 0x14c869f6814ea43dull, 0xcc9e29ef4bc4eb7dull, 0xa31d4cee995e3702ull, 0xa545e01677ca22e0ull, 0x3af70bf38217bf59ull }}, {{ 0x7478776a730f6809ull, 0xcfd423a10d126a68ull, 0xfe2da358f5b132e2ull, 0x5f250151fdae261bull, 0x74bac0e0ade55cc6ull, 0x4da6778314ed7980ull }}, {{ 0x8cb4aa287e9a1056ull, 0x1e49644a82b82814ull, 0xedc8617998ebfcdcull, 0xb7720d33e8cd7d17ull, 0x8f4b88c6caf59fbfull, 0x0880ab1ed146bf04ull }}, {{ 0x7f0ea594f204a358ull, 0x2eddeae91b3190cdull, 0x49d3cebff937e099ull, 0x2a7484071806e2efull, 0x98f357c3ed983d7dull, 0x5506af342cc3762dull }}, {{ 0xf69277d1742e6173ull, 0xd4ab2d1b0fefa806ull, 0xe246137fbc2ec5fbull, 0xa88d2846f044dd58ull, 0xf9816da747f266e3ull, 0x5242d809bfa29dc7ull }}, {{ 0xa1b8ae2e89cfce7aull, 0x4eafc30e9f5c9045ull, 0xd6bcc2fd59d3bbd6ull, 0x958392c562b0a578ull, 0xbf0e4888cf7804e4ull, 0x369c70617c5a29cfull }}, {{ 0x5136cdd1621e10c1ull, 0x12dd9e92399da2b8ull, 0x635f9de58245565full, 0xd723bbb5dae676b8ull, 0x768ed5581ab030edull, 0x221c63cedb85a21dull }}, {{ 0x2c240a2dd52ca78dull, 0xbca831b640285b33ull, 0xe1bc2af716b55fb6ull, 0x6765551a8d00a333ull, 0xa19455710ae1e94aull, 0x551be61493385526ull }}, {{ 0xb96865ca53be8b84ull, 0x5e91f11e81938fffull, 0xd159ada6e315bd23ull, 0x09f5530982066006ull, 0x4fcb566a6cd31ce8ull, 0x5316fccdc0335382ull }}, {{ 0x3e13f9e745717324ull, 0xb1b36b310fc39ffdull, 0x2d80c884ded96361ull, 0x63953e5f143fc044ull, 0x1df16028403f2110ull, 0x3ee5e00982014317ull }}, {{ 0x6cc7c308b66e7f6dull, 0xf1022fea9da43fe4ull, 0xc707d530b47de1d0ull, 0xe3d46fb6ca7d82a9ull, 0x2b6dc19282774aa3ull, 0x74fac05f140c9ee7ull }}, {{ 0x3fcd9e572050fa42ull, 0x6a15df2a286a7eecull, 0xc64e53e70cead229ull, 0xe64c5d23e8e71aa1ull, 0xb2498fb918a8ea66ull, 0x91cb83b6c87e3507ull }}, {{ 0x7e082f674329c694ull, 0x24dab7a59428f53aull, 0xbf0f4706812c359eull, 0xfefba36719070a51ull, 0xf6df9d3af6992804ull, 0xb1f32523d4ee124cull }}, {{ 0xec51da089fa1c1c7ull, 0x708b2c77c9999448ull, 0x7698c6410bba182dull, 0xf5d46206fa466731ull, 0xa4bc244da1fb9031ull, 0xf37f7366514cb701ull }}, {{ 0x3b3284563c5191c8ull, 0x656fbcaddfffcad9ull, 0xa1f7be8a7544f1c6ull, 0x9a4bd445c6c007eeull, 0x6f596b0853d3a1f3ull, 0x82fa81ff2cff2610ull }}, {{ 0x4ff92b5e5b2fb1d1ull, 0xf65d5ecabffdec7cull, 0x53ad716894b171bfull, 0x06f64ab9c3804f52ull, 0x597e2e5346445384ull, 0x1dc913f7c1f77ca4ull }}, {{ 0x1fbbb1af8fdcf226ull, 0x9fa5b3eb7feb3cdbull, 0x44c66e15ceee717full, 0x459eeb41a3031937ull, 0x7eedcf40beab4328ull, 0x29dac7ad93aade6bull }}, {{ 0x3d54f0db9ea1757eull, 0x3c790732ff30608full, 0xafc04cda15506efcull, 0xb83530905e1efc28ull, 0xf54a188772b09f92ull, 0xa28bccc7c4acb032ull }}, {{ 0x65516894324e96edull, 0x5cba47fdf7e3c598ull, 0xdd830084d52455daull, 0x3213e5a3ad35d996ull, 0x94e4f54a7ae63bbbull, 0x5975ffcdaebee1fdull }}, {{ 0xf52e15c9f711e541ull, 0x9f46cfebaee5b7f3ull, 0xa71e0530536b5a87ull, 0xf4c6f864c41a7fe4ull, 0xd0f194e8ccfe554full, 0x7e9bfe08d374d3e7ull }}, {{ 0x93ccd9e3a6b2f48bull, 0x38c41f34d4f92f87ull, 0x872c33e34231894cull, 0x8fc5b3efa908feeeull, 0x296fd11801ef551full, 0xf217ec584290470eull }}, {{ 0xc60082e482fd8d72ull, 0x37a9381051bbdb4bull, 0x47ba06e095ef5cfaull, 0x9db9075c9a59f551ull, 0x9e5e2af01359533bull, 0x74ef3b7299a2c68dull }}, {{ 0xbc051ced1de78678ull, 0x2c9c30a3315690f5ull, 0xcd4444c5db59a1c6ull, 0x293a499e0783952cull, 0x2fadad60c17d4054ull, 0x9158527a005bc188ull }}, {{ 0x583321432b0b40b3ull, 0xbe19e65fed61a999ull, 0x04aaafba918051bdull, 0x9c46e02c4b23d3c0ull, 0xdcc8c5c78ee48349ull, 0xad7338c403958f51ull }}, {{ 0x71ff4c9fae7086f9ull, 0x6d02ffbf45d09ffdull, 0x2eaadd49af033169ull, 0x1ac4c1baef664580ull, 0x9fd7b9cb94ed20e0ull, 0xc68037a823d79932ull }}, {{ 0x73f8fe3cd06545bcull, 0x421dfd78ba263fe6ull, 0xd2aca4e0d61fee1eull, 0x0baf914d59feb701ull, 0x3e6d41f3d14348c1ull, 0xc1022c91666bfbfaull }}, {{ 0x87b9ee6023f4b955ull, 0x952be6b7457e7f00ull, 0x3abe70c85d3f4d2eull, 0x74dbad0583f32612ull, 0x704493862ca0d78aull, 0x8a15bdae0037d7c6ull }}, {{ 0x4d434fc1678f3d53ull, 0xd3b70328b6f0f605ull, 0x4b7067d3a47903d1ull, 0x9094c237277f7cb6ull, 0x62adc33dbe486b68ull, 0x64d968cc022e6dc0ull }}, {{ 0x04a11d8e0b98653aull, 0x45261f9725699c35ull, 0xf2640e446cba2632ull, 0xa5cf96278afadf1eull, 0xdac9a0696ed43215ull, 0xf07e17f815d04983ull }}, {{ 0x2e4b278c73f3f448ull, 0xb37d3be776201a12ull, 0x77e88eac3f457df6ull, 0x7a1bdd8b6dccb735ull, 0x8be0441e5449f4d8ull, 0x64ecefb0da22df26ull }}, {{ 0xceef8b7c87878ad5ull, 0x02e4570a9d4104b5ull, 0xaf1592ba78b6eba3ull, 0xc516a77249ff2816ull, 0x76c2a92f4ae39074ull, 0xf1415ce8855cb781ull }}, {{ 0x155b72dd4b4b6c51ull, 0x1ceb666a248a2f1aull, 0xd6d7bb48b725345eull, 0xb2e28a76e3f790e2ull, 0xa39a9bd8ece3a48full, 0x6c8da115359f2b0eull }}, {{ 0xd5927ca4f0f23b2eull, 0x213200256d65d704ull, 0x646d50d727740badull, 0xfcd968a4e7aba8dcull, 0x640a167940e46d9cull, 0x3d884ad41837ae92ull }}, {{ 0x57b8de7169764fcbull, 0x4bf4017645fa6630ull, 0xec4528678a8874c3ull, 0xe07e16710cb4989bull, 0xe864e0bc88ec4821ull, 0x6752ec48f22cd1b7ull }}, {{ 0x6d38b06e1e9f1df1ull, 0xf7880e9ebbc7fde3ull, 0x3ab3940b69548fa0ull, 0xc4ece06a7f0df617ull, 0x13f0c75d593ad152ull, 0x093d3ad975c0312full }}, {{ 0x4436e44d32372b6dull, 0xab50923355cfeae2ull, 0x4b03c8721d4d9c49ull, 0xb140c428f68b9ce8ull, 0xc767c9a57c4c2d3bull, 0x5c644c7e9981ebd6ull }}, {{ 0xaa24eb03f627b244ull, 0xb125b6015a1f2cd6ull, 0xee25d47525081ae0ull, 0xec87a999a1742112ull, 0xca0de076daf9c454ull, 0x9beafcf1ff133663ull }}, {{ 0xa5712e279d8cf6acull, 0xeb791c0d8537c062ull, 0x4d7a4c9372510cc6ull, 0x3d4ca0004e894abdull, 0xe48ac4a48dc1ab51ull, 0x172de173f6c01fe5ull }}, {{ 0x766bcd8c2781a2b8ull, 0x32bb1887342d83daull, 0x06c6fdc2772a7fc5ull, 0x64fe4003115ceb65ull, 0xed6bae6d8990b12cull, 0xe7cace87a3813efaull }}, {{ 0xa03607798b105b2full, 0xfb4ef54809c72688ull, 0x43c5e998a7a8fdb3ull, 0xf1ee801eada131f2ull, 0x4634d0475fa6ebbbull, 0x0dec114c630c75cdull }}, {{ 0x421c4abf6ea38fd3ull, 0xd11594d061c78156ull, 0xa5bb1ff68c99e907ull, 0x73510132c84bf376ull, 0xbe1022c9bc853557ull, 0x8b38acfbde7c9a04ull }}, {{ 0x951aeb7a52639e41ull, 0x2ad7d023d1cb0d5eull, 0x794f3fa17e031a4eull, 0x812a0bfbd2f782a2ull, 0x6ca15be15d34156aull, 0x7036c1d6b0de042full }}, {{ 0xd30d32c737e42e8dull, 0xac6e216631ee85b1ull, 0xbd187c4eec1f070dull, 0x0ba477d63dab1a58ull, 0x3e4d96cda408d629ull, 0x62239262e8ac29daull }}, {{ 0x3e83fbc82ee9d181ull, 0xbc4d4dfdf35138f2ull, 0x62f4db1539364688ull, 0x746cae5e68af0777ull, 0x6f07e40868585d9aull, 0xd563b7dd16b9a286ull }}, {{ 0x7127d5d1d5222f06ull, 0x5b050beb812c3976ull, 0xdd908ed43c1ec157ull, 0x8c3ecfb016d64aa9ull, 0x564ee8541373a808ull, 0x55e52ea2e3405940ull }}, {{ 0x6b8e5a325355d63cull, 0x8e3277330bba3ea0ull, 0xa7a5944a59338d69ull, 0x7a741ce0e45eeaa2ull, 0x5f151348c2849055ull, 0x5af3d25ce0837c83ull }}, {{ 0x338f85f7415a5e5cull, 0x8df8a7fe75467244ull, 0x8c77cae77c03861full, 0xc88920c8ebb52a5aull, 0xb6d2c0d7992da356ull, 0x8d8637a0c522dd21ull }}, {{ 0x039b3ba88d87af9bull, 0x8bb68ff094c076aaull, 0x7caded0ad8233d3bull, 0xd55b47d93513a789ull, 0x243b886bfbc86163ull, 0x873e2c47b35ca351ull }}, {{ 0x24105495874cdc11ull, 0x75219f65cf84a2a4ull, 0xdecb426c71606453ull, 0x5590ce7c12c48b5eull, 0x6a535437d5d3cde6ull, 0x486dbacd019e612bull }}, {{ 0x68a34dd7490098a9ull, 0x935039fa1b2e5a69ull, 0xb3f0983c6dc3eb42ull, 0x57a810d8bbad71b4ull, 0x27414a2e5a460affull, 0xd4494c02102fcbb2ull }}, {{ 0x16610a68da05f696ull, 0xc12243c50fcf881eull, 0x0765f25c49a73099ull, 0x6c90a87754c6710full, 0x888ce5cf86bc6df9ull, 0x4adcf814a1ddf4f5ull }}, {{ 0xdfca6818843ba1dfull, 0x8b56a5b29e1b512cull, 0x49fb779ae087e601ull, 0x3da694a94fc06a96ull, 0x5580fa1b435c4bbeull, 0xeca1b0ce52ab9197ull }}, {{ 0xbde810f52a5452b7ull, 0x716278fa2d112bc0ull, 0xe3d2ac0cc54efc0full, 0x6881ce9d1d8429deull, 0x5709c510a19af56eull, 0x3e50e80f3ab3afe9ull }}, {{ 0x6b10a993a74b3b22ull, 0x6dd8b9c5c2abb587ull, 0xe63ab87fb515d89aull, 0x151212232729a2b4ull, 0x6661b2a6500d9650ull, 0x6f2910984b04df1dull }}, {{ 0x2ea69fc488f04f50ull, 0x4a7741b99ab5174aull, 0xfe4b34fd12da7608ull, 0xd2b4b55f87a05b10ull, 0xffd0fa7f2087df20ull, 0x579aa5f2ee30b725ull }}, {{ 0xd2823dad5963191full, 0xe8a891400b12e8e5ull, 0xeef011e2bc889c52ull, 0x3b0f15bb4c438ea9ull, 0xfe29c8f7454eb748ull, 0x6c0a7b7d4de7277bull }}, {{ 0x391668c57ddefb38ull, 0x1695ac806ebd18faull, 0x5560b2db5d561b3dull, 0x4e96d950faa392a3ull, 0xeda1d9a8b51328d2ull, 0x3868d2e50b078ad7ull }}, {{ 0x3ae017b6eab5d032ull, 0xe1d8bd045362f9c6ull, 0x55c6fc91a55d1062ull, 0x11e47d29ca63ba61ull, 0x4852809712bf9837ull, 0x34183cf26e4b6c6full }}, {{ 0x4cc0ed252b1a21f8ull, 0xd277622b41ddc1beull, 0x59c5ddb075a2a3dcull, 0xb2ece3a1e7e547cdull, 0xd33905e6bb7bf226ull, 0x08f261784ef23c58ull }}, {{ 0xff894373af0553acull, 0x38a9d5b092a9916eull, 0x81baa8e4985a66a0ull, 0xfd40e4530ef4ce05ull, 0x403a3b0352d77582ull, 0x5977ceb315765b78ull }}, {{ 0xfb5ca284d63544b4ull, 0x36a258e5ba9fae55ull, 0x114a98edf3880242ull, 0xe488eb3e95900c37ull, 0x82464e213c6a971dull, 0x7eae12fed69f92b2ull }}, {{ 0xd19e59305e14af0cull, 0x225778f94a3ccf5bull, 0xace9f94b83501696ull, 0xed593071d7a07a26ull, 0x16bf0d4c5c29e72aull, 0xf2ccbdf4623bbaf9ull }}, {{ 0x302f7be3acced67cull, 0x576ab9bce6601996ull, 0xc123bcf32120e1ddull, 0x457be4726c44c582ull, 0xe37684fb99a307adull, 0x7bff6b8bd6554dbaull }}, {{ 0xe1dad6e4c01460d3ull, 0x6a2b4160ffc0ffddull, 0x8b65617f4b48d2a5ull, 0xb6d6ec783aafb71bull, 0xe2a131d4005e4cc4ull, 0xd7fa33765f55094cull }}, {{ 0xd28c64ef80cbc840ull, 0x25b08dc9fd89feaaull, 0x71f5cef8f0d83a76ull, 0x24653cb24add2713ull, 0xda4bf24803aeffafull, 0x6fc6029fb9525d00ull }}, {{ 0x397bf15b07f5d284ull, 0x78e589e3e763f2acull, 0x739a15b96872489dull, 0x6bf45ef6eca386c2ull, 0x86f776d024d5fcd7ull, 0x5dbc1a3d3d37a208ull }}, {{ 0x3ed76d8e4f9a3929ull, 0xb8f762e709e77abaull, 0x8404d93e1476d626ull, 0x378bb5a53e634398ull, 0x45aaa421705be06aull, 0xa9590664642c5455ull }}, {{ 0x746a478f1c063b99ull, 0x39a9dd06630acb46ull, 0x28307c6ccca45d83ull, 0x2b7518746fe0a3f5ull, 0xb8aa694e6396c426ull, 0x9d7a3febe9bb4b54ull }}, {{ 0x8c26cb97183e53f7ull, 0x40a2a23fde6bf0c0ull, 0x91e4dc3ffe6ba720ull, 0xb292f48c5ec66793ull, 0x36a81d0fe3e3a97dull, 0x26c67f372150f14full }}, {{ 0x7983f3e6f26f47a2ull, 0x865a567eb0376785ull, 0xb2f09a7ff0348742ull, 0xf9bd8d7bb3c00bc3ull, 0x2291229ee6e49ee8ull, 0x83c0f8274d296d18ull }}, {{ 0xbf2787057858cc53ull, 0x3f8760f2e22a0b36ull, 0xfd6608ff620d4899ull, 0xc16786d5058075a4ull, 0x59ab5a3504ee3519ull, 0x2589b189039e42f1ull }}, {{ 0x778b4636b377fb3cull, 0x7b49c97cd5a47023ull, 0xe5fc59f9d484d5fcull, 0x8e0b445237049871ull, 0x80b18612314e1301ull, 0x7760ef5a242e9d6dull }}, {{ 0xab70be2302afd05cull, 0xd0e1dee0586c6162ull, 0xfbdb83c24d305bdcull, 0x8c70ab36262df472ull, 0x06ef3cb5ed0cbe0full, 0xa9c9598569d22647ull }}, {{ 0xb2676d5e1ade2394ull, 0x28d2b4c3743bcddaull, 0xd693259703e396a0ull, 0x7c66b01d7dcb8c7dull, 0x45585f1b427f6c9bull, 0xa1dd7f3622357ec6ull }}, {{ 0xf80a45ad0cad63c8ull, 0x983b0fa28a560a8aull, 0x61bf77e626e3e241ull, 0xdc02e126e9f37ceaull, 0xb573b71098fa3e12ull, 0x52a6f81d5616f3beull }}, {{ 0xb066b8c27ec5e5d3ull, 0xf24e9c59675c696dull, 0xd17aaefd84e6d68full, 0x981ccb852382e127ull, 0x168526a5f9c66cbcull, 0x3a85b1255ce58573ull }}, {{ 0xe4033798f3bafa3eull, 0x77121b7e099c1e48ull, 0x2ecad5e73104619full, 0xf11ff333631ccb8eull, 0xe133827bc1c03f5dull, 0x4938eb75a0f7367eull }}, {{ 0xe8202bf9854dc66cull, 0xa6b512ec60192ed8ull, 0xd3ec5b07ea2bd03aull, 0x6b3f8001df1ff38dull, 0xcc0318d5918279abull, 0xdc39329849a820f4ull }}, {{ 0x1141b7bf3509c036ull, 0x8312bd3bc0fbd479ull, 0x473b8e4f25b6224aull, 0x307b0012b73f838aull, 0xf81ef857af18c0b2ull, 0x9a3bf9f2e091498full }}, {{ 0xac912d7812618219ull, 0x1ebb645589d64cbaull, 0xc8538f17791d56e9ull, 0xe4ce00bb287b2366ull, 0xb135b36cd6f786f5ull, 0x0657c37cc5acdf9full }}, {{ 0xbdabc6b0b7cf14fbull, 0x3351eb57625eff4aull, 0xd34396eabb25651bull, 0xf00c074f94cf6203ull, 0xec19024065ab459aull, 0x3f6da2dfb8c0bc3cull }}, {{ 0x68b5c2e72e16d1d2ull, 0x01333169d7b5f8ebull, 0x40a3e52b4f75f310ull, 0x6078491bd019d426ull, 0x38fa1683f8b0b80dull, 0x7a485cbd37875a61ull }}, {{ 0x17199d07cce43236ull, 0x0bffee226d1bb932ull, 0x8666f3b11a9b7ea0ull, 0xc4b2db162102497eull, 0x39c4e127b6e73085ull, 0xc6d39f642b4987ccull }}, {{ 0xe700224e00e9f621ull, 0x77ff4d5843153bf4ull, 0x400584eb0a12f240ull, 0xaefc8edd4a16def1ull, 0x41b0cb8d2507e539ull, 0xc44439e9b0df4dfaull }}, {{ 0x0601570c09239d48ull, 0xaff905729ed45791ull, 0x8037312e64bd7684ull, 0xd5dd94a4e4e4b56cull, 0x90e7f383724ef440ull, 0xaaaa4320e8b90bc6ull }}, {{ 0x3c0d66785b6424d5ull, 0xdfba367a344b6baaull, 0x0227ebcfef66a12eull, 0x5aa7ce70f0ef163dull, 0xa90f832277158a88ull, 0xaaa69f49173a75c1ull }}, {{ 0x588600b391e9704eull, 0xbd4620c60af234a6ull, 0x158f361f5a024bd4ull, 0x8a8e10696956de62ull, 0x9a9b1f58a6d76953ull, 0xaa8238dae8489990ull }}, {{ 0x753c0703b31e6307ull, 0x64bd47bc6d760e7full, 0xd7981d398416f64full, 0x698ca41e1d64afd4ull, 0x0a0f3976846a1d43ull, 0xa916388d12d5ffa6ull }}, {{ 0x94584624ff2fde4aull, 0xef64cd5c469c90faull, 0x6bf1243f28e59f19ull, 0x1f7e692d25eede50ull, 0x64983ea12c2524a2ull, 0x9ade3582bc5bfc7cull }}, {{ 0xcb72bd71f7deaee0ull, 0x59f0059ac21da9c9ull, 0x376b6a7798f83703ull, 0x3af01bc37b54af24ull, 0xedf2724bb9736e55ull, 0x0cae171b5b97dcdbull }}, {{ 0xf27b6673aeb2d4bdull, 0x8360380b9528a1e1ull, 0x2a3228abf9b22621ull, 0x4d6115a2d14ed76aull, 0x4b7876f53e824f54ull, 0x7ecce71193eea097ull }}, {{ 0x78d20084d2fc4f60ull, 0x21c23073d39652d3ull, 0xa5f596b7c0f57d4full, 0x05cad85c2d146a25ull, 0xf2b4a5947117194bull, 0xf40106afc75245e8ull }}, {{ 0xb83405303ddb19bcull, 0x5195e48643df3c42ull, 0x7b97e32d8996e517ull, 0x39ec7399c2cc2578ull, 0x7b0e77cc6ae6fceeull, 0x880a42ddc936bb19ull }}, {{ 0x320833e26a8f0155ull, 0x2fdaed3ea6b85a9bull, 0xd3eedfc75fe4f2e9ull, 0x433c84019bf976b4ull, 0xce90adfc2d05e14eull, 0x50669ca9dc234efeull }}, {{ 0xf45206d829960d54ull, 0xde8d447283338a0full, 0x4754bdc9bef17d1bull, 0xa05d281017bea310ull, 0x11a6cbd9c23acd0eull, 0x24021ea2996115f4ull }}, {{ 0x8b3444719fdc8548ull, 0xb184ac792003649full, 0xc94f69e1756ee316ull, 0x43a390a0ed725ea2ull, 0xb083f681964c0292ull, 0x68153259fdcadb88ull }}, {{ 0x700aac703e9d34d5ull, 0xef2ebcbb4021ee3bull, 0xdd1a22ce9654dee2ull, 0xa463a6494677b25bull, 0xe527a10fdef819b6ull, 0x10d3f783e9ec9356ull }}, {{ 0x606abc627224104full, 0x57d35f5081534e52ull, 0xa3055c11df50b4ddull, 0x6be47edcc0acf796ull, 0xf38c4a9eb5b10122ull, 0xa847ab27233dc164ull }}, {{ 0xc42b5bd87568a316ull, 0x6e41b9250d410f37ull, 0x5e3598b2b92710a5ull, 0x36ecf49f86c1abe2ull, 0x837aea3318ea0b58ull, 0x92ccaf8760698df1ull }}, {{ 0xa9b1967496165edfull, 0x4e913b72848a982dull, 0xae17f6fb3b86a676ull, 0x25418e3b4390b6d7ull, 0x22cd25fef9247172ull, 0xbbfedb49c41f8b6full }}, {{ 0xa0efe08ddcdfb4b6ull, 0x11ac52792d69f1c8ull, 0xccefa5d05342809full, 0x748f8e50a3a7246cull, 0x5c037bf5bb6c6e75ull, 0x57f490e1a93b7257ull }}, {{ 0x495ec58aa0bd0f21ull, 0xb0bb38bbc62371d6ull, 0x015c7a2340990636ull, 0x8d9b8f2664876c40ull, 0x9822d799523c5096ull, 0x6f8da8d09c527769ull }}, {{ 0xddb3b76a47629749ull, 0xe7503755bd62725eull, 0x0d9cc56085fa3e22ull, 0x8813977fed4a3a80ull, 0xf15c6bfd365b25e1ull, 0x5b8898261b38aa1full }}, {{ 0xa9052a26c9d9e8dfull, 0x0922295965d877b4ull, 0x881fb5c53bc66d5dull, 0x50c3eaff44e64900ull, 0x6d9c37e41f8f7acfull, 0x9355f17d1036a53full }}, {{ 0x9a33a583e28318b5ull, 0x5b559d7dfa74ad0eull, 0x513d19b455c045a2ull, 0x27a72df8b0feda05ull, 0x481a2ee93b9acc19ull, 0xc15b6ee2a222747aull }}, {{ 0x06047726d91ef70eull, 0x915826ebc88ec292ull, 0x2c63010b5982b857ull, 0x8c87cbb6e9f48435ull, 0xd105d51c540bf8fbull, 0x8d9254da55588cc6ull }}, {{ 0x3c2ca7847b35a690ull, 0xad718535d59399b4ull, 0xbbde0a717f1b336bull, 0x7d4df525238d2a13ull, 0x2a3a531b4877b9d3ull, 0x87b7508755757fc4ull }}, {{ 0x59be8b2cd018819eull, 0xc66f341a57c4010aull, 0x56ac686ef7100234ull, 0xe50b93736383a4c5ull, 0xa6473f10d4ad4242ull, 0x4d2925495696fda9ull }}, {{ 0x81716fc020f5102eull, 0xc05809076da80a67ull, 0x62bc1455a6a0160full, 0xf273c281e3246fb5ull, 0x7ec876a84ec4969cull, 0x039b74dd61e5e8a0ull }}, {{ 0x0e6e5d814992a1caull, 0x83705a4a4890680bull, 0xdb58cb588240dc9dull, 0x78859912df6c5d15ull, 0xf3d4a29313ade221ull, 0x241290a5d2fb1644ull }}, {{ 0x904fa70cdfba51e6ull, 0x226386e6d5a4106eull, 0x9177f17516889e27ull, 0xb537fabcba3ba2daull, 0x864e59bec4cad54eull, 0x68b9a67a3dcedeb1ull }}, {{ 0xa31c8680bd4732faull, 0x57e345045868a451ull, 0xaeaf6e92e1562d87ull, 0x142fcb5f46545c89ull, 0x3f0f8173afec5513ull, 0x174080c66a14b2efull }}, {{ 0x5f1d410764c7fdc6ull, 0x6ee0b22b74166b30ull, 0xd2da51bccd5dc749ull, 0xc9ddf1b8bf4b9d60ull, 0x769b0e84df3b52beull, 0xe88507c024cefd58ull }}, {{ 0xb7248a49efcfe9b9ull, 0x54c6f5b288e02fe3ull, 0x3c87316005a9c8deull, 0xe2ab713778f425c8ull, 0xa20e9130b8513b73ull, 0x15324d817015e574ull }}, {{ 0x276d66e35e1f213cull, 0x4fc598f958c1dee5ull, 0x5d47edc038a1d8afull, 0xdab26c2ab98979d2ull, 0x5491abe7332c5286ull, 0xd3f7070e60daf68eull }}, {{ 0x8a4604e1ad374c5cull, 0x1db7f9bd7792b4f3ull, 0xa4cf4982365276d9ull, 0x8af839ab3f5ec237ull, 0x4db0b707ffbb3944ull, 0x47a6468fc88da18full }}, {{ 0x66bc30d0c428fb94ull, 0x292fc166abbb1183ull, 0x7018df161f38a47bull, 0x6db240b079b3962cull, 0x08e7264ffd503cadull, 0xcc7ec19dd5884f99ull }}, {{ 0x0359e827a999d3c8ull, 0x9bdd8e02b54eaf22ull, 0x60f8b6dd38366ccfull, 0x48f686e4c103ddbcull, 0x59077f1fe5225ec6ull, 0xfcf3902a57531bfaull }}, {{ 0x2183118ca00245cdull, 0x16a78c1b1512d754ull, 0xc9b724a43220401cull, 0xd9a144ef8a26a95bull, 0x7a4af73ef357b3beull, 0xe183a1a7693f17c7ull }}, {{ 0x4f1eaf7e4016ba01ull, 0xe28b790ed2bc6949ull, 0xe1276e69f5428118ull, 0x804cb15b65829d95ull, 0xc6eda875816d0574ull, 0xcf24508a1c76edcaull }}, {{ 0x1732daee80e3440cull, 0xd972ba943b5c1cddull, 0xcb8a502394990af8ull, 0x02feed91f71a27daull, 0xc54894970e42368dull, 0x176b25651ca549ebull }}, {{ 0xe7fc8d5108e0a874ull, 0x7e7b49ca519920a2ull, 0xf3672163cdfa6db8ull, 0x1df547b3a7058e8bull, 0xb4d5cde68e962182ull, 0xea2f75f31e74e335ull }}, {{ 0x0fdd852a58c69489ull, 0xf0d0e1e72ffb465dull, 0x82074de60bc84934ull, 0x2b94cd0486379177ull, 0x105a0b0191dd4f15ull, 0x25da9b7f3090e019ull }}, {{ 0x9ea733a777c1cd5cull, 0x6828d307dfd0bfa2ull, 0x14490afc75d2dc11ull, 0xb3d0022d3e2baeabull, 0xa3846e0fb2a516d3ull, 0x7a8a12f7e5a8c0faull }}, {{ 0x3288048aad920598ull, 0x11983e4ebe277c5aull, 0xcada6ddc9a3c98aeull, 0x062015c46db4d2aeull, 0x632c4c9cfa72e445ull, 0xc964bdaef89789caull }}, {{ 0xf9502d6ac7b437efull, 0xaff26f136d8adb85ull, 0xec884a9e065df6ccull, 0x3d40d9ac49103ad3ull, 0xdfbafe21c87ceab2ull, 0xddef68d5b5eb61e7ull }}, {{ 0xbd21c62bcd0a2f56ull, 0xdf7856c2476c933bull, 0x3d52ea2c3faba3feull, 0x648880badaa24c47ull, 0xbd4ded51d4e12af6ull, 0xab5a18591b31d30eull }}, {{ 0x6351bdb60265d958ull, 0xbab36396ca3dc055ull, 0x653d25ba7cb467f4ull, 0xed55074c8a56fac8ull, 0x650b453250cbad9full, 0xb184f37b0ff23e93ull }}, {{ 0xe131691c17fa7d73ull, 0x4b01e3e3e6698355ull, 0xf4637948df0c0f8full, 0x455248fd6765cbd3ull, 0xf270b3f727f4c83full, 0xef3182ce9f7671c1ull }}, {{ 0xcbee1b18efc8e681ull, 0xee12e6e7001f215aull, 0x8be2bcd8b6789b98ull, 0xb536d9e609f9f647ull, 0x786707a78f8fd278ull, 0x57ef1c123aa07193ull }}, {{ 0xf74d0ef95dd90108ull, 0x4cbd050601374d8bull, 0x76db607720b613f9ull, 0x142482fc63c39ecbull, 0xb4064c8b9b9e38b7ull, 0x6f5718b64a446fc2ull }}, {{ 0xa90295bdaa7a0a4eull, 0xff62323c0c290777ull, 0xa491c4a7471cc7bcull, 0xc96d1ddbe5a433f2ull, 0x083efd74142e3726ull, 0x5966f71ee6ac5d9bull }}, {{ 0x9a19d968a8c46709ull, 0xf9d5f658799a4aacull, 0x6db1ae88c71fcd61ull, 0xde432a96f86a077aull, 0x5275e688c9ce2783ull, 0x7e05a73502bba80eull }}, {{ 0x05027e1697ac0659ull, 0xc25b9f74c006eabeull, 0x48f0d157c73e05d3ull, 0xae9fa9e5b4244ac8ull, 0x389b0157e20d8b26ull, 0xec3888121b54908full }}, {{ 0x3218ece1ecb83f76ull, 0x97943a8f80452b6cull, 0xd9682d6dc86c3a45ull, 0xd23ca2f9096aebd2ull, 0x360e0d6ed4876f82ull, 0x3a3550b5114da598ull }}, {{ 0xf4f940d33f327a9dull, 0xebca499b02b3b239ull, 0x7e11c649d43a46b7ull, 0x365e5dba5e2d363cull, 0x1c8c86544d4a5b1cull, 0x46152712ad0877f2ull }}, {{ 0x91bc884077f8ca20ull, 0x35e6e00e1b04f643ull, 0xecb1bee24a46c32full, 0x1fafa947adc41e5cull, 0x1d7d3f4b04e78f1aull, 0xbcd386bac254af75ull }}, {{ 0xb15d5284afb7e53eull, 0x1b04c08d0e319ea3ull, 0x3ef174d6e6c39fd8ull, 0x3cdc9cccc9a92fa1ull, 0x26e478ee310b9705ull, 0x6043434b974eda93ull }}, {{ 0xeda5392edd2ef46cull, 0x0e2f85828df03264ull, 0x756e906503a43e71ull, 0x609e1fffe09bdc4cull, 0x84ecb94dea73e634ull, 0xc2a0a0f3e91489bfull }}, {{ 0x48743bd4a3d58c36ull, 0x8ddb37198b61f7f1ull, 0x9651a3f2246a706aull, 0xc62d3ffec6169afcull, 0x313f3d0b2886fe0bull, 0x9a4649871acd617bull }}, {{ 0xd48a564e66577a19ull, 0x8a9026ff71d3af6cull, 0xdf3067756c286429ull, 0xbdc47ff3bce20dddull, 0xec78626f9545ec75ull, 0x06bedf470c05cecfull }}, {{ 0x4d675f0fff6ac4faull, 0x69a185fa7244da40ull, 0xb7e40a963993e99full, 0x69acff8560d48aaaull, 0x3cb3d85bd4bb3c99ull, 0x4374b8c6783a141full }}, {{ 0x0609b69ffa2bb1c3ull, 0x204f3bc876b08683ull, 0x2ee869de3fc7203aull, 0x20c1fb35c84d6aabull, 0x5f0673964f505dfeull, 0xa28f37c0b244c938ull }}, {{ 0x3c61223fc5b4f1a2ull, 0x431855d4a2e5411eull, 0xd51422ae7dc74245ull, 0x4793d019d3062aafull, 0xb64083df1923abedull, 0x59982d86f6afdc33ull }}, {{ 0x5bcb567db911704full, 0x9ef35a4e5cf48b2eull, 0x52c95ad0e9c896b4ull, 0xcbc621023e3daadeull, 0x1e8526b6fb64b744ull, 0x7ff1c745a2de9a05ull }}, {{ 0x95f160e93aae6319ull, 0x3581870fa18d6fcfull, 0x3bdd8c2921d5e30eull, 0xf5bd4a166e68acafull, 0x31338325d1ef28afull, 0xff71c8b85cb20433ull }}, {{ 0xdb6dc91c4acfdefdull, 0x170f469c4f865e1bull, 0x56a7799b525ade8eull, 0x9964e4e05016bed8ull, 0xec031f7a335796dfull, 0xfa71d7339ef429ffull }}, {{ 0x9249db1aec1eb5dfull, 0xe698c21b1b3fad16ull, 0x628ac011378cb18cull, 0xfdf0f0c320e37473ull, 0x381f3ac6016be4bbull, 0xc87268043589a3ffull }}, {{ 0xb6e28f0d39331ab3ull, 0x01f7950f107cc2e1ull, 0xd96b80ac2b7eef81ull, 0xeb69679f48e28c81ull, 0x31384bbc0e36ef57ull, 0xd478102a176067f8ull }}, {{ 0x24d996843bff0afaull, 0x13abd296a4df9cd1ull, 0x7e3306b9b2f55b0aull, 0x321e0c38d8d97d12ull, 0xec32f5588e25596full, 0x4cb0a1a4e9c40fb1ull }}, {{ 0x707fe12a57f66dc0ull, 0xc4b639e270bc202bull, 0xedfe4340fd958e64ull, 0xf52c7a38787ee2b8ull, 0x39fd95758d757e57ull, 0xfee6507121a89cf3ull }}, {{ 0x64fecba76fa0497full, 0xaf1e42d8675941b2ull, 0x4beea089e7d78fefull, 0x93bcc634b4f4db39ull, 0x43e7d6978696ef6full, 0xf4ff246b50962180ull }}, {{ 0xf1f3f48a5c42defaull, 0xd72e9c74097c90f7ull, 0xf75245630e6b9f5cull, 0xc55fbe0f1190903cull, 0xa70e61eb41e55a5bull, 0x91f76c3125dd4f02ull }}, {{ 0x73878d679a9cb5c1ull, 0x67d21c885edda9afull, 0xa936b5de903439a0ull, 0xb5bd6c96afa5a261ull, 0x868fd33092f58795ull, 0xb3aa39eb7aa5161aull }}, {{ 0x834b860c0a1f198dull, 0x0e351d53b4a8a0daull, 0x9c231ab1a20a4044ull, 0x19663de2dc7857d0ull, 0x419e3fe5bd974bd9ull, 0x04a64332ca72dd09ull }}, {{ 0x20f33c786536ff85ull, 0x8e1325450e964889ull, 0x195f0af0546682a8ull, 0xfdfe6adc9cb36e26ull, 0x902e7ef967e8f67aull, 0x2e7e9ffbe87ca25cull }}, {{ 0x49805cb3f425fb2full, 0x8cbf74b291ded55bull, 0xfdb66d634c011a95ull, 0xebf02c9e1f024d7cull, 0xa1d0f5be0f19a0cdull, 0xd0f23fd714de579dull }}, {{ 0xdf039f07897bcfd8ull, 0x7f7a8ef9b2b45590ull, 0xe92045e0f80b09d7ull, 0x3761be2d361706e1ull, 0x5229996c9700480bull, 0x29767e66d0af6c28ull }}, {{ 0xb624364b5ed61e6eull, 0xfac995c0fb0b57a8ull, 0x1b42bac9b06e626aull, 0x29d16dc41ce644d3ull, 0x359ffe3de602d070ull, 0x9ea0f00426da3993ull }}, {{ 0x1d6a1ef1b45d304dull, 0xcbdfd989ce716c97ull, 0x109b4be0e44fd82dull, 0xa22e49a920feb03full, 0x183fee6afc1c2461ull, 0x3249602984863fc0ull }}, {{ 0x262535710ba3e2ffull, 0xf6be7f62106e3de7ull, 0xa610f6c8eb1e71c9ull, 0x55cee09b49f2e276ull, 0xf27f502dd9196bd0ull, 0xf6ddc19f2d3e7d80ull }}, {{ 0x7d74166a7466ddfaull, 0xa370f9d4a44e6b07ull, 0x7ca9a3d92f3071e3ull, 0x5a14c610e37cd8a2ull, 0x78f921ca7afe3623ull, 0xa4a99037c470e709ull }}, {{ 0xe688e0288c04abc0ull, 0x6269c24e6b102e4aull, 0xdea0667bd7e472e4ull, 0x84cfbca8e2e07658ull, 0xb9bb51e8cdee1d61ull, 0x6e9fa22dac69065eull }}, {{ 0x0158c195782eb57cull, 0xd82197102ea1ceedull, 0xb24400d66eec7cebull, 0x301d5e98dcc49f78ull, 0x415133180b4d25cfull, 0x523c55c8bc1a3fb3ull }}, {{ 0x0d778fd6b1d316d6ull, 0x714fe6a1d2521542ull, 0xf6a80860553ce136ull, 0xe125b1f89fae3ab6ull, 0x8d2bfef071037a17ull, 0x365b59d759067d00ull }}, {{ 0x86ab9e62f23ee45eull, 0x6d1f02523734d494ull, 0xa29053c35460cc20ull, 0xcb78f3b63cce4b25ull, 0x83b7f5646a22c4eeull, 0x1f9182697a40e205ull }}, {{ 0x42b42fdd7674ebb0ull, 0x4336173628104dcdull, 0x59a345a14bc7f944ull, 0xf2b9851e600eef78ull, 0x252f95ec255bb153ull, 0x3baf181ec688d437ull }}, {{ 0x9b09dea6a09134e4ull, 0xa01ce81d90a30a04ull, 0x8060b84cf5cfbcaaull, 0x7b3f332fc0955ab3ull, 0x73dbdb397594ed47ull, 0x54d6f133c1584a27ull }}, {{ 0x0e62b28245ac10ebull, 0x41211127a65e642eull, 0x03c733019a1d5eaaull, 0xd077ffdd85d58b03ull, 0x8696903e97d144caull, 0x50656c058d72e58aull }}, {{ 0x8fdaf916b8b8a930ull, 0x8b4aab8c7fafe9ccull, 0x25c7fe100525b2a6ull, 0x24affea73a576e1eull, 0x41e1a271ee2cafecull, 0x23f63837867cf769ull }}, {{ 0x9e8dbae337369be2ull, 0x70eab37cfcdf21fdull, 0x79cfeca03378fa81ull, 0x6edff288476a4d2dull, 0x92d058734dbedf39ull, 0x679e322b40e1aa1cull }}, {{ 0x31894ce0282216d1ull, 0x692b02e1e0b753e8ull, 0xc21f3e4202b9c90eull, 0x54bf7952ca2703c6ull, 0xbc2374810974b83eull, 0x0c2df5b088d0a51dull }}, {{ 0xef5d00c19154e429ull, 0x1bae1cd2c7294711ull, 0x95386e941b41da90ull, 0x4f7abd3be58625c3ull, 0x59628d0a5e8f326full, 0x79cb98e558267329ull }}, {{ 0x59a2078fad50e99aull, 0x14cd203bc79cc6b3ull, 0xd43451c9109289a1ull, 0x1acb6456f73d79a3ull, 0x7dd98267b197f859ull, 0xc1f3f8f571807f9dull }}, {{ 0x80544b9cc5292005ull, 0xd0034255cc1fc301ull, 0x4a0b31daa5b9604aull, 0x0bf1eb65a866c066ull, 0xea7f180cefefb37bull, 0x9387b9966f04fc26ull }}, {{ 0x034af41fb39b4033ull, 0x20209759f93d9e0full, 0xe46ff28a793dc2ecull, 0x777331f8940383feull, 0x28f6f0815f5d02ceull, 0xc34d3fe05631d985ull }}, {{ 0x20ed893d041081faull, 0x4145e983bc682c96ull, 0xec5f7968bc699d39ull, 0xaa7ff3b5c82327f4ull, 0x99a5650db9a21c10ull, 0xa1047ec35df27f33ull }}, {{ 0x49475c6228a513c7ull, 0x8cbb1f255c11bdddull, 0x3bbabe175c20243cull, 0xa8ff8519d15f8f91ull, 0x0075f289405518a6ull, 0x4a2cf3a1ab78f804ull }}, {{ 0xdcc99bd59672c5c5ull, 0x7f4f377598b16aa4ull, 0x554b6ce999416a5dull, 0x99fb33022dbb9bacull, 0x049b795c8352f682ull, 0xe5c18450b2b9b028ull }}, {{ 0x9fe01657e07bb9b3ull, 0xf9182a97f6ee2a70ull, 0x54f2411ffc8e27a6ull, 0x03cffe15c95414bbull, 0x2e12bd9d213da11aull, 0xf98f2b26fb40e190ull }}, {{ 0x3ec0df6ec4d540feull, 0xbaf1a9efa54da866ull, 0x51768b3fdd8d8c85ull, 0x261fecd9dd48cf51ull, 0xccbb68234c684b04ull, 0xbf97af85d088cfa1ull }}, {{ 0x7388ba53b05489ecull, 0x4d70a35c750893feull, 0x2ea1707ea7877d39ull, 0x7d3f4082a4d8192dull, 0xff521160fc12ee29ull, 0x7becdb3a25581c51ull }}, {{ 0x83574744e34d6333ull, 0x0666619c9255c7f0ull, 0xd24e64f28b4ae43dull, 0xe478851a7070fbc3ull, 0xf934adc9d8bd4d9eull, 0xd740904575711b33ull }}, {{ 0x2168c8b0e105e000ull, 0x3fffd01db759cf65ull, 0x370ff17970ecea62ull, 0xecb533086469d5a6ull, 0xbc0ec9e277650834ull, 0x6885a2b6966b1007ull }}, {{ 0x4e17d6e8ca3ac004ull, 0x7ffe2129298219f3ull, 0x269f6ebe694127d6ull, 0x3f13fe53ec22587eull, 0x5893e2d8a9f25211ull, 0x15385b21e02ea04dull }}, {{ 0x0cee6517e64b8027ull, 0xffed4b9b9f150381ull, 0x823a53701c8b8e60ull, 0x76c7ef47395774edull, 0x75c6dc76a37734acull, 0xd4338f52c1d24305ull }}, {{ 0x814ff2eefef30184ull, 0xff44f41436d2230aull, 0x164742611d738fc9ull, 0xa3cf58c83d6a9147ull, 0x99c49ca262a80ebcull, 0x4a03993b92369e36ull }}, {{ 0x0d1f7d55f57e0f2cull, 0xf8b188ca24355e69ull, 0xdec897cb26839de3ull, 0x661977d26629acc6ull, 0x01ae1e57da90935eull, 0xe423fc53b6222e22ull }}, {{ 0x833ae55b96ec97bbull, 0xb6ef57e56a15b01aull, 0xb3d5edef81242ae7ull, 0xfcfeae37fda0bfc4ull, 0x10cd2f6e89a5c1afull, 0xe967db451d55cd54ull }}, {{ 0x204cf593e53ded4aull, 0x25596ef624d8e109ull, 0x065b4b5b0b69ad0dull, 0xe1f2ce2fe8477dafull, 0xa803da51607990dfull, 0x1e0e90b3255a0548ull }}, {{ 0x430197c6f46b44e1ull, 0x757e559d7078ca5bull, 0x3f90f18e7220c283ull, 0xd37c0ddf12cae8d6ull, 0x9026872dc4bfa8beull, 0x2c91a6ff758434d6ull }}, {{ 0x9e0fedc58c30b0ceull, 0x96ef582664b7e790ull, 0x7ba96f9075479922ull, 0x42d88ab6bbed185eull, 0xa18147c9af7c9774ull, 0xbdb085fa972a1061ull }}, {{ 0x2c9f49b779e6e809ull, 0xe559717fef2f0ba6ull, 0xd49e5ba494cbfb59ull, 0x9c756b235742f3b0ull, 0x4f0ccde0daddea8aull, 0x68e53bc9e7a4a3d0ull }}, {{ 0xbe38e12ac305105cull, 0xf57e6eff57d6747dull, 0x4e2f946dcff7d182ull, 0x1c962f61689d84e8ull, 0x16800ac88cab296aull, 0x18f455e30c6e6623ull }}, {{ 0x6e38cbab9e32a396ull, 0x96f055f96e608ce9ull, 0x0ddbcc4a1fae2f1dull, 0x1dddd9ce16273113ull, 0xe1006bd57eaf9e25ull, 0xf98b5ade7c4ffd5eull }}, {{ 0x4e37f4b42dfa63dcull, 0xe5635bbe4fc5811eull, 0x8a95fae53ccdd727ull, 0x2aaa820cdd87eabeull, 0xca043656f2dc2d73ull, 0xbf718cb0db1fe5b4ull }}, {{ 0x0e2f8f09cbc7e693ull, 0xf5e1956f1db70b2full, 0x69dbccf4600a678eull, 0xaaa91480a74f2b71ull, 0xe42a1f657c99c67full, 0x7a6f7ee88f3ef90full }}, {{ 0x8ddb9661f5cf01c3ull, 0x9acfd65729266fd6ull, 0x2296018bc0680b95ull, 0xaa9acd068917b26eull, 0xe9a539f6de01c0fcull, 0xc85af5159875ba9eull }}, {{ 0x8a93dfd39a161199ull, 0x0c1e5f679b805e61ull, 0x59dc0f75841073d8ull, 0xaa0c02415aecf84dull, 0x207443a4ac1189deull, 0xd38d92d7f4994a35ull }}, {{ 0x69c6be4404dcaffbull, 0x792fba0c1303afcfull, 0x82989a9728a48670ull, 0xa478168d8d41b305ull, 0x448aa46eb8af62b2ull, 0x4387bc6f8dfce613ull }}, {{ 0x21c36ea8309edfc9ull, 0xbbdd4478be24de1aull, 0x19f609e7966d4064ull, 0x6cb0e1878490fe37ull, 0xad6a6c5336d9dafaull, 0xa34d5c5b8be0fcc0ull }}, {{ 0x51a25291e634bddbull, 0x56a4acb76d70ad05ull, 0x039c630be04483efull, 0x3ee8cf4b2da9ee27ull, 0xc6283b4024828dc8ull, 0x61059b9376c9df86ull }}, {{ 0x305739b2fe0f6a91ull, 0x626ebf2a4666c235ull, 0x241bde76c2ad2759ull, 0x751818efc8a34d86ull, 0xbd9250816d1989d2ull, 0xca3813c2a3e2bb43ull }}, {{ 0xe36840fdec9a29aaull, 0xd85377a6c0039613ull, 0x6916b0a39ac3897dull, 0x92f0f95dd661073dull, 0x67b7250e42ff6238ull, 0xe630c59a66db50a5ull }}, {{ 0xe21289eb3e05a0a0ull, 0x7342ac838023dcc6ull, 0x1ae2e6640ba35eeaull, 0xbd69bdaa5fca4866ull, 0x0d27728e9df9d635ull, 0xfde7b80804912676ull }}, {{ 0xd4b963306c38463cull, 0x809abd2301669fc4ull, 0x0cdcffe87461b528ull, 0x662168a7bde6d3fdull, 0x838a79922bc25e19ull, 0xeb0d30502dab809cull }}, {{ 0x4f3ddfe43a32be58ull, 0x060b635e0e023db0ull, 0x80a1ff148bd11395ull, 0xfd4e168d6b0447e2ull, 0x2368bfb5b597acfdull, 0x2e83e321c8b3061dull }}, {{ 0x186abeea45fb6f70ull, 0x3c71e1ac8c1668e3ull, 0x0653f6cd762ac3d2ull, 0xe50ce1862e2aced9ull, 0x62177d1917ecc1ebull, 0xd126df51d6fe3d23ull }}, {{ 0xf42b7526bbd25a5bull, 0x5c72d0bd78e018deull, 0x3f47a4069daba636ull, 0xf280cf3dcdac147aull, 0xd4eae2faef3f9336ull, 0x2b84b93265ee6361ull }}, {{ 0x89b2938356378793ull, 0x9c7c2766b8c0f8b5ull, 0x78cc684228b47e1full, 0x7908186a08b8ccc6ull, 0x512cddcd587bc025ull, 0xb32f3bf7fb4fe1d2ull }}, {{ 0x60f9c3215e2b4bbcull, 0x1cd98a033789b717ull, 0xb7fc1295970ced3cull, 0xba50f4245737ffc0ull, 0x2bc0aa0574d58176ull, 0xffd857afd11ed237ull }}, {{ 0xc9c19f4dadb0f55aull, 0x207f64202b6126e9ull, 0x2fd8b9d7e6814459ull, 0x4729896b682ffd87ull, 0xb586a43690570ea3ull, 0xfe736cde2b343627ull }}, {{ 0xe1903908c8e99584ull, 0x44f9e941b1cb8521ull, 0xde77426f010cab7bull, 0xc79f5e3211dfe747ull, 0x17426a21a3669260ull, 0xf08240adb00a1d8dull }}, {{ 0xcfa23a57d91fd72cull, 0xb1c31c90f1f33352ull, 0xb0a898560a7eb2d0ull, 0xcc39adf4b2bf08ceull, 0xe89825506201b7c7ull, 0x651686c8e0652782ull }}, {{ 0x1c56476e7b3e67bcull, 0xf19f1da97380013cull, 0xe695f35c68f2fc26ull, 0xfa40cb8efb765812ull, 0x15f17523d4112dcdull, 0xf2e143d8c3f38b1dull }}, {{ 0x1b5eca50d0700d55ull, 0x7037289e83000c59ull, 0x01db819c197dd985ull, 0xc687f395d29f70bdull, 0xdb6e936648abca0bull, 0x7ccca677a7836f22ull }}, {{ 0x11b3e72824608550ull, 0x622796311e007b7bull, 0x12931018feea7f36ull, 0xc14f83da3a3a6762ull, 0x9251c1fed6b5e475ull, 0xdffe80ac8b22575cull }}, {{ 0xb10707916bc53523ull, 0xd58bddeb2c04d2ceull, 0xb9bea0f9f528f81full, 0x8d1b2686464809d4ull, 0xb73193f4631aec99ull, 0xbff106bd6f57699dull }}, {{ 0xea464bae35b4135bull, 0x5776ab2fb8303c12ull, 0x417249c39399b13eull, 0x830f813ebed0624full, 0x27efc78bdf0d3dffull, 0x7f6a4366596a2029ull }}, {{ 0x26bef4ce1908c18aull, 0x6aa2afdd31e258bdull, 0x8e76e1a3c400ec6full, 0x1e9b0c737423d718ull, 0x8f5dcb76b6846bfbull, 0xfa26a1ff7e25419bull }}, {{ 0x8375900cfa578f69ull, 0x2a5adea3f2d77763ull, 0x90a4d065a8093c5aull, 0x320e7c82896666f5ull, 0x99a9f2a3212c37cfull, 0xc58253faed749013ull }}, {{ 0x2297a081c76b9a18ull, 0xa78cb2677c6aa9e3ull, 0xa67023f8905c5b85ull, 0xf490dd195e000597ull, 0x00a37a5f4bba2e17ull, 0xb71747cd468da0c4ull }}, {{ 0x59ec4511ca3404f1ull, 0x8b7ef80adc2aa2dfull, 0x806167b5a39b9338ull, 0x8da8a2fdac0037ecull, 0x0662c7b8f545ccefull, 0x26e8ce04c18847a8ull }}, {{ 0x833ab2b1e6083166ull, 0x72f5b06c99aa5cb9ull, 0x03ce0d186413c035ull, 0x88965de8b8022f3dull, 0x3fdbcd3994ba015bull, 0x85180c2f8f52cc90ull }}, {{ 0x204afaf2fc51edf9ull, 0x7d98e43e00a79f3full, 0x260c82f3e8c58216ull, 0x55dfab173015d862ull, 0x7e96043fcf440d93ull, 0x32f079db993bfda2ull }}, {{ 0x42edcd7ddb334bb8ull, 0xe7f8ea6c068c3877ull, 0x7c7d1d8717b714e0ull, 0x5abcaee7e0da73d5ull, 0xf1dc2a7e18a887c1ull, 0xfd64c293fc57e858ull }}, {{ 0x9d4a06ea9000f52dull, 0x0fb92838417a34a8ull, 0xdce32746ed26d0c9ull, 0x8b5ed50ec8888656ull, 0x7299a8ecf6954d8dull, 0xe5ef99c7db6f1379ull }}, {{ 0x24e44529a00993bfull, 0x9d3b92328ec60e96ull, 0xa0df88c5438427daull, 0x71b45293d5553f64ull, 0x7a009941a1d50787ull, 0xfb5c01ce9256c2beull }}, {{ 0x70eab3a0405fc571ull, 0x2453b5f993bc91ddull, 0x48bb57b4a3298e8aull, 0x710b39c6555479eeull, 0xc405fc9052524b4aull, 0xd1981211b7639b70ull }}, {{ 0x692b044283bdb66dull, 0x6b451bbfc55db2a6ull, 0xd7516d0e5f9f9165ull, 0x6a7041bf554cc34eull, 0xa83bdda33736f0e8ull, 0x2ff0b4b129e41267ull }}, {{ 0x1bae2a992569203full, 0x30b3157db5a8fa80ull, 0x692e428fbc3badf6ull, 0x2862917954ffa114ull, 0x9256a86028256914ull, 0xdf670eeba2e8b80cull }}, {{ 0x14cda9fb761b4271ull, 0xe6fed6e91899c901ull, 0x1bce999d5a54cb9dull, 0x93d9aebd51fc4accull, 0xb76293c191761ac9ull, 0xba0695345d17307dull }}, {{ 0xd008a3d29d10986dull, 0x05f4651af601da0aull, 0x16120025874ff42bull, 0xc680d36533daebf9ull, 0x29d9c58fae9d0bdfull, 0x4441d40ba2e7e4e9ull }}, {{ 0x2056663a22a5f445ull, 0x3b8bf30d9c12846cull, 0xdcb40177491f89aeull, 0xc10841f4068d37baull, 0xa281b79cd22276bdull, 0xaa9248745d0ef11bull }}, {{ 0x435ffe455a7b8aaeull, 0x53777e8818b92c39ull, 0x9f080ea8db3b60ceull, 0x8a52938841842d4cull, 0x59112c203558a369ull, 0xa9b6d48ba2956b14ull }}, {{ 0xa1bfeeb588d36aceull, 0x42aaf150f73bba3cull, 0x365092989051c80full, 0x6739c3528f29c4feull, 0x7aabb9421576621full, 0xa1244d7459d62ecbull }}, {{ 0x517f531758422c09ull, 0x9aad6d29a855465eull, 0x1f25b9f5a331d098ull, 0x0841a13997a1b1eeull, 0xcab53c94d69fd53aull, 0x4b6b068b825dd3f2ull }}, {{ 0x2ef93ee97295b857ull, 0x0ac643a09354bfafull, 0x377943985ff225f6ull, 0x52904c3fec50f34dull, 0xeb145dd0623e5444ull, 0xf22e417317aa477bull }}, {{ 0xd5bc751e79d93362ull, 0x6bbea445c14f7cd7ull, 0x2abca3f3bf757b9cull, 0x39a2fa7f3b298104ull, 0x2ecbaa23d66f4aabull, 0x75ce8e7eeca6cad7ull }}, {{ 0x595c9330c27c01d2ull, 0x35726ab98d1ae06eull, 0xab5e67857a96d41cull, 0x405dc8f84f9f0a29ull, 0xd3f4a5666058eab0ull, 0x9a1190f53e83ec67ull }}, {{ 0x7d9dbfe798d81236ull, 0x16782b3f830cc44full, 0xb1b00b36c9e4491aull, 0x83a9d9b31c3665a0ull, 0x478e75ffc3792ae2ull, 0x04afa99471273c0eull }}, {{ 0xe8297f0bf870b61aull, 0xe0b1b07b1e7fab1aull, 0xf0e07023e2eadb04ull, 0x24a280ff1a1ff846ull, 0xcb909bfda2bbacd9ull, 0x2edc9fcc6b88588eull }}, {{ 0x119ef677b4671d01ull, 0xc6f0e4cf30fcaf0dull, 0x68c46166dd2c8e30ull, 0x6e5909f7053fb2c5ull, 0xf3a617e85b54c07bull, 0xd49e3dfc33537593ull }}, {{ 0xb035a0ad0c072207ull, 0xc568f017e9ded682ull, 0x17abce04a3bd8de7ull, 0x4f7a63a6347cfbb6ull, 0x847cef13914f84d2ull, 0x4e2e6bda014297c7ull }}, {{ 0xe21846c278475442ull, 0xb61960ef22b4611aull, 0xecb60c2e65678b0dull, 0x1ac7e47e0ce1d51cull, 0x2ce156c3ad1b3037ull, 0x0dd036840c99edcbull }}, {{ 0xd4f2c398b2c94a90ull, 0x1cfdc9575b0bcb0cull, 0x3f1c79cff60b6e89ull, 0x0bceecec80d25321ull, 0xc0cd63a4c30fe227ull, 0x8a2221287e0349efull }}, {{ 0x517ba3f6fbdce9a2ull, 0x21e9dd698e75ee80ull, 0x771cc21f9c72515bull, 0x7615413d08373f4cull, 0x8805e46f9e9ed586ull, 0x65554b94ec20e35dull }}, {{ 0x2ed467a5d6a12053ull, 0x5322a61f909b5103ull, 0xa71f953c1c772d8full, 0x9cd48c62522878fcull, 0x503aec5c32345740ull, 0xf554f3d13948e1a7ull }}, {{ 0xd44c0c7a624b433full, 0x3f5a7d3ba6112a1full, 0x873bd4591ca7c799ull, 0x204d7bd73594b9deull, 0x224d3b99f60b6886ull, 0x9551862c3cd8d089ull }}, {{ 0x4af87cc7d6f0a075ull, 0x7988e4547caba53eull, 0x48564b7b1e8dcbfcull, 0x4306d66817cf42b1ull, 0x570454039c72153dull, 0xd52f3dba6078255bull }}, {{ 0xedb4dfce65664490ull, 0xbf58eb4cdeb4746eull, 0xd35ef2cf3189f7dcull, 0x9e446010ee189aecull, 0x662b48241c74d464ull, 0x53d86947c4b17591ull }}, {{ 0x4910be0ff5feada0ull, 0x79793100b30c8c55ull, 0x41b57c17ef63ae9full, 0x2eabc0a94cf60d40ull, 0xfdb0d1691c904beeull, 0x46741ccdaeee97adull }}, {{ 0xdaa76c9f9bf2c83eull, 0xbebbea06fe7d7b54ull, 0x9116d8ef59e4d23aull, 0xd2b5869d019c8482ull, 0xe8e82e1b1da2f74dull, 0xc0892008d551eccbull }}, {{ 0x8a8a3e3c177bd268ull, 0x73572445f0e6d150ull, 0xaae4795982f0364bull, 0x3b174222101d2d19ull, 0x1911cd0f285da90aull, 0x855b405855333ff7ull }}, {{ 0x69666e58ead6380eull, 0x81676abb69042d25ull, 0xacecbd7f1d621ef2ull, 0x4ee89554a123c300ull, 0xfab2029793a89a66ull, 0x3590837354007fa6ull }}, {{ 0x1e004f792c5e3090ull, 0x0e0a2b521a29c376ull, 0xc13f66f725d53579ull, 0x1515d54e4b659e06ull, 0xcaf419ebc49607ffull, 0x17a522814804fc85ull }}, {{ 0x2c031abbbbade59full, 0x8c65b13505a1a29dull, 0x8c7a05a77a5416baull, 0xd2da550ef1f82c43ull, 0xed890335addc4ff6ull, 0xec73590cd031dd39ull }}, {{ 0xb81f0b5554caf83bull, 0x7bf8ec1238505a23ull, 0x7cc4388ac748e349ull, 0x3c87529573b1baa3ull, 0x475a2018ca9b1fa4ull, 0x3c817a8021f2a443ull }}, {{ 0x313671554fedb24dull, 0xd7b938b633238565ull, 0xdfaa356bc8d8e0deull, 0x5d4939d684f14a62ull, 0xc98540f7ea0f3c6aull, 0x5d0ec901537a6aa0ull }}, {{ 0xec206d551f48f6fdull, 0x6d3c371dff6335f3ull, 0xbca61635d878c8b4ull, 0xa4dc4261316ce7dcull, 0xdf3489af24985c27ull, 0xa293da0d42c82a47ull }}, {{ 0x3944455338d9a5e7ull, 0x445a272bf9e01b87ull, 0x5e7cde1a74b7d70cull, 0x709a97cbee410e9full, 0xb80d60d76df3998cull, 0x59c684849bd1a6ceull }}, {{ 0x3caab54038807b04ull, 0xab8587b7c2c11348ull, 0xb0e0ad088f2e667aull, 0x6609edf74e8a9239ull, 0x3085c86a4b83ff7cull, 0x81c12d2e16308413ull }}, {{ 0x5eab14823504ce2bull, 0xb3374d2d9b8ac0d2ull, 0xe8c6c25597d000caull, 0xfc634ba91169b640ull, 0xe539d426f327fadbull, 0x118bc3ccdde528bfull }}, {{ 0xb2aecd1612300dafull, 0x002903c8136b8837ull, 0x17c39757ee2007ebull, 0xdbe0f49aae211e89ull, 0xf44249857f8fcc97ull, 0xaf75a600aaf3977eull }}, {{ 0xfad402dcb5e088d7ull, 0x019a25d0c233522cull, 0xeda3e96f4d404f2eull, 0x96c98e0acd4b315aull, 0x8a96df36fb9dfdeeull, 0xda987c06ad83eaf5ull }}, {{ 0xcc481c9f1ac55867ull, 0x10057a27960135c1ull, 0x48671e59048317ccull, 0xe3df8c6c04efed8dull, 0x69e4b825d42beb51ull, 0x89f4d842c7272d97ull }}, {{ 0xfad11e370bb57404ull, 0xa036c58bdc0c1991ull, 0xd4072f7a2d1eedf8ull, 0xe6bb7c38315f4784ull, 0x22ef317a49b73132ull, 0x6390729bc787c7eaull }}, {{ 0xcc2b2e2675168828ull, 0x4223b7769878ffb3ull, 0x4847dac5c3354bb6ull, 0x0352da31edb8cb30ull, 0x5d57eec6e127ebfdull, 0xe3a47a15cb4dcf25ull }}, {{ 0xf9afcd8092e1518bull, 0x95652aa1f4b9fd05ull, 0xd2ce8bb9a014f51eull, 0x213c85f34937efe2ull, 0xa56f53c4cb8f37e2ull, 0xe46cc4d9f10a1775ull }}, {{ 0xc0de0705bccd2f73ull, 0xd5f3aa538f43e23bull, 0x3c11754040d19331ull, 0x4c5d3b80dc2f5edcull, 0x765945aff3982ed5ull, 0xec3fb0836a64ea98ull }}, {{ 0x88ac46396003da7cull, 0x5b84a74398a6d655ull, 0x58ae9482882fbff2ull, 0xfba4530899d9b49aull, 0x9f7cb8df83f1d454ull, 0x3a7ce52227f129f4ull }}, {{ 0x56babe3dc02688d3ull, 0x932e88a3f6845f57ull, 0x76d1cd1951dd7f77ull, 0xd46b3e5602810e07ull, 0x3adf38bb27724b51ull, 0x48e0f3558f6ba38eull }}, {{ 0x634b6e6981815841ull, 0xbfd15667a12bb969ull, 0xa43202fd32a6faabull, 0x4c306f5c190a8c4aull, 0x4cb8374f8a76f132ull, 0xd8c981579a34638eull }}, {{ 0xe0f2501f0f0d728cull, 0x7e2d600c4bb53e1dull, 0x69f41de3fa85cab5ull, 0xf9e45998fa697aeaull, 0xff32291b68a56bf6ull, 0x77df0d6c060be38eull }}, {{ 0xc97721369686797cull, 0xedc5c07af5146d2aull, 0x23892ae7c939eb16ull, 0xc2eb7ff9c81ecd28ull, 0xf7f59b12167637a5ull, 0xaeb686383c76e395ull }}, {{ 0xdea74c21e140bed5ull, 0x49b984cd92cc43abull, 0x635bad0ddc432ee5ull, 0x9d32ffc1d1340391ull, 0xaf980eb4e09e2c79ull, 0xd3213e325ca4e3dbull }}, {{ 0xb288f952cc877457ull, 0xe13f3007bbfaa4b6ull, 0xe194c28a9a9fd4f4ull, 0x23fdfd922c0823adull, 0xdbf09310c62dbcc0ull, 0x3f4c6df79e70e694ull }}, {{ 0xf959bd3bfd4a8b62ull, 0xcc77e04d57ca6f22ull, 0xcfcf996a0a3e5190ull, 0x67ebe7b5b85164caull, 0x9765bea7bdc95f81ull, 0x78fc4bac306901d0ull }}, {{ 0xbd816457e4e971d7ull, 0xfcaec3056de8575dull, 0x1e1bfe24666f2fa7ull, 0x0f370d19332defecull, 0xe9f9728d69ddbb0eull, 0xb9daf4b9e41a1225ull }}, {{ 0x670deb6ef11e7269ull, 0xded39e364b1369a9ull, 0x2d17ed6c0057dc8full, 0x982682fbffcb5f39ull, 0x23be798622a94e8cull, 0x428d8f42e904b57bull }}, {{ 0x068b32556b30781aull, 0xb4442e1eeec2209eull, 0xc2ef4638036e9d9eull, 0xf1811dd7fdf1b83bull, 0x6570bf3d5a9d117dull, 0x9987989d1a2f16cfull }}, {{ 0x416ff7562fe4b100ull, 0x0aa9cd355395462cull, 0x9d58be3022522833ull, 0x6f0b2a6feb713255ull, 0xf66778658a22aeebull, 0xff4bf62305d6e419ull }}, {{ 0x8e5fa95ddeeeea04ull, 0x6aa2041543d4bdbaull, 0x25776de1573591feull, 0x566fa85f326bf758ull, 0xa00ab3f7655ad532ull, 0xf8f79d5e3a64e903ull }}, {{ 0x8fbc9daab5552427ull, 0x2a5428d4a64f6949ull, 0x76aa4acd6817b3f0ull, 0x605c93b7f837a971ull, 0x406b07a9f58c53f7ull, 0xb9ac25ae47f11a24ull }}, {{ 0x9d5e28ab15536986ull, 0xa749984e7f1a1cdfull, 0xa2a6ec0610ed0761ull, 0xc39dc52fb22c9e6eull, 0x842e4ca3977b47a9ull, 0x40b978cecf6b056aull }}, {{ 0x25ad96aed5421f37ull, 0x88dff310f70520bcull, 0x5a85383ca94249d0ull, 0xa429b3dcf5be3052ull, 0x29cefe63ead0cca1ull, 0x873eb8141a2e3629ull }}, {{ 0x78c7e2d454953827ull, 0x58bf7ea9a6334759ull, 0x8934325e9c96e225ull, 0x69a106a1996de337ull, 0xa215efe72c27fe50ull, 0x487330c905ce1d9bull }}, {{ 0xb7cedc4b4dd43186ull, 0x777af2a07e00c97eull, 0x5c09f7b21de4d575ull, 0x204a424ffe4ae02bull, 0x54db5f07b98fef24ull, 0xd47fe7da3a0d2814ull }}, {{ 0x2e149af10a49ef37ull, 0xaacd7a44ec07def3ull, 0x9863acf52af05696ull, 0x42e6971feeecc1b1ull, 0x5091b64d3f9f5769ull, 0x4cff0e86448390cbull }}, {{ 0xccce0d6a66e35829ull, 0xac06c6b1384eb57full, 0xf3e4c193ad6361e2ull, 0x9d01e73f553f90efull, 0x25b11f047c396a1cull, 0x01f6913ead23a7f1ull }}, {{ 0x000c862804e17196ull, 0xb843c2ec331316feull, 0x86ef8fc4c5e1d2daull, 0x22130879547ba95full, 0x78eb362cda3e251eull, 0x13a1ac72c3648f6bull }}, {{ 0x007d3d9030ce6fddull, 0x32a59d39febee5ecull, 0x455b9dafbad23c8bull, 0x54be54bd4cd49dbbull, 0xb9301dc0866d732dull, 0xc450bc7ba1ed9a32ull }}, {{ 0x04e467a1e8105ea1ull, 0xfa782443f374fb38ull, 0xb59428dd4c365d6full, 0x4f6f4f65004e2950ull, 0x3be1298540467fc5ull, 0xab275cd4534805fbull }}, {{ 0x30ec0c5310a3b24full, 0xc8b16aa78291d030ull, 0x17c998a4fa1fa65full, 0x1a5919f2030d9d27ull, 0x56cb9f3482c0fdb5ull, 0xaf89a04b40d03bd0ull }}, {{ 0xe9387b3ea664f713ull, 0xd6ee2a8b19b221e1ull, 0xeddff671c53c7fbdull, 0x077b03741e882386ull, 0x63f4380d1b89e913ull, 0xdb6042f088225623ull }}, {{ 0x1c34d0727ff1a6beull, 0x654da96f00f552d3ull, 0x4abfa071b45cfd6aull, 0x4ace228931516345ull, 0xe78a308313631abeull, 0x91c29d6551575d61ull }}, {{ 0x1a102478ff708368ull, 0xf5089e5609953c3full, 0xeb7c44710ba1e627ull, 0xec0d595bed2de0b4ull, 0x0b65e51ec1df0b6eull, 0xb19a25f52d69a5d3ull }}, {{ 0x04a16cb9fa65220full, 0x92562f5c5fd45a77ull, 0x32daac6a7452fd8full, 0x38857d9743cac711ull, 0x71faf33392b67255ull, 0xf0057b93c6207a3eull }}, {{ 0x2e4e3f43c7f35493ull, 0xb75dd99bbe4b88a6ull, 0xfc8abc288b3de79bull, 0x3536e7e8a5ebc6abull, 0x73cd8003bb207754ull, 0x6036d3c5bd44c670ull }}, {{ 0xcf0e78a5cf814dbdull, 0x29aa80156ef3567dull, 0xdd6b5995706b0c15ull, 0x14250f167b35c2b7ull, 0x860700254f44a94aull, 0xc22445b964afc064ull }}, {{ 0x1690b67a1b0d0966ull, 0xa0a900d6558160eaull, 0xa6317fd6642e78d3ull, 0xc97296e0d0199b2eull, 0x3c46017518ae9ce4ull, 0x956ab93deedd83edull }}, {{ 0xe1a720c50e825df8ull, 0x469a085f570dc924ull, 0x7deefe5fe9d0b844ull, 0xde79e4c821000fd2ull, 0x5abc0e92f6d220efull, 0xd62b3c6b54a72744ull }}, {{ 0xd08747b29117abb2ull, 0xc20453b96689db70ull, 0xeb55efbf222732aaull, 0xb0c2efd14a009e38ull, 0x8b5891bda435495eull, 0x5db05c314e8788abull }}, {{ 0x2548ccf9aaecb4f8ull, 0x942b453e01629268ull, 0x315b5d775587faabull, 0xe79d5e2ce4062e39ull, 0x7175b1686a14ddb2ull, 0xa8e399ed114b56b3ull }}, {{ 0x74d801c0ad3f11b3ull, 0xc9b0b46c0dd9b811ull, 0xed91a6a9574fcab3ull, 0x0c25adc0e83dce3bull, 0x6e98ee1424d0a8fdull, 0x98e40342acf16302ull }}, {{ 0x90701186c476b101ull, 0xe0e70c388a8130aeull, 0x47b0829d691deb05ull, 0x7978c989126a0e57ull, 0x51f94cc9702699e2ull, 0xf8e8209ac16dde18ull }}, {{ 0xa460af43aca2ea0eull, 0xc9067a35690be6d1ull, 0xcce51a261b2b2e3aull, 0xbeb7df5ab8248f68ull, 0x33bcffde618202d8ull, 0xb911460b8e4aacf3ull }}, {{ 0x6bc6d8a4be5d248eull, 0xda40c6161a770430ull, 0x00f3057d0fafce4bull, 0x732eb98b316d9a18ull, 0x0561feafcf141c77ull, 0x3aacbc738eeac180ull }}, {{ 0x35c4766f6fa36d90ull, 0x8687bcdd08a629e4ull, 0x097e36e29cde0ef6ull, 0x7fd33f6fee4804f0ull, 0x35d3f2de16c91caaull, 0x4abf5c83952b8f00ull }}, {{ 0x19aca05a5c6247a2ull, 0x414d60a2567da2eaull, 0x5eee24da20ac95a1ull, 0xfe407a5f4ed03160ull, 0x1a477cace3db1ea8ull, 0xeb799d23d3b39602ull }}, {{ 0x00be43879bd6cc55ull, 0x8d05c65760e85d25ull, 0xb54d708546bdd84cull, 0xee84c7b91421edc3ull, 0x06cadec0e68f3299ull, 0x32c023664503dc15ull }}, {{ 0x076ea34c1663fb53ull, 0x8239bf69c913a372ull, 0x15066534c36a72fdull, 0x512fcd3ac95349a5ull, 0x43ecb3890197fa03ull, 0xfb8161feb22698d2ull }}, {{ 0x4a5260f8dfe7d139ull, 0x16417a21dac46274ull, 0xd23ff40fa2287de7ull, 0x2bde044bdd40e072ull, 0xa73f035a0fefc421ull, 0xd30dd3f2f581f836ull }}, {{ 0xe737c9b8bf0e2c3bull, 0xde8ec5528babd88aull, 0x367f889c5594eb06ull, 0xb6ac2af6a488c47cull, 0x887621849f5da94bull, 0x3e8a477d9713b222ull }}, {{ 0x082de137768dba52ull, 0xb193b53974b6756dull, 0x20fb561b57d12e44ull, 0x22b9ada26d57acdaull, 0x549d4f2e39a89cf5ull, 0x7166cae7e6c4f559ull }}, {{ 0x51cacc2aa1894734ull, 0xefc5143e8f209642ull, 0x49d15d116e2bceaeull, 0x5b40c858456cc085ull, 0x4e2517ce40962193ull, 0x6e03ed0f03b1957dull }}, {{ 0x31ebf9aa4f5cc809ull, 0x5db2ca719745de97ull, 0xe22da2ae4db612d5ull, 0x9087d372b63f8534ull, 0x0d72ee0e85dd4fc1ull, 0x4c27429624efd6e5ull }}, {{ 0xf337c0a7199fd055ull, 0xa8fbe86fe8bab1e7ull, 0xd5c85acf091cbc55ull, 0xa54e427b1e7b3410ull, 0x867d4c913aa51d8full, 0xf98899dd715e64f2ull }}, {{ 0x802d8687003e2353ull, 0x99d7145f174af30full, 0x59d38c165b1f5b58ull, 0x750e98cf30d008a8ull, 0x40e4fdac4a73279cull, 0xbf5602a66daff179ull }}, {{ 0x01c74146026d6141ull, 0x0266cbb6e8ed7e9bull, 0x824378df8f399176ull, 0x9291f817e8205693ull, 0x88f1e8bae87f8c1cull, 0x795c1a8048df6ebcull }}, {{ 0x11c88cbc1845cc8cull, 0x1803f5251946f20eull, 0x16a2b8bb983fae9cull, 0xb9b3b0ef114361c3ull, 0x5973174d14fb791dull, 0xbd990902d8ba535dull }}, {{ 0xb1d57f58f2b9fd77ull, 0xf0279372fcc5748cull, 0xe25b3753f27cd218ull, 0x4104e956aca1d19eull, 0x7e7ee902d1d2bb29ull, 0x67fa5a1c774741a5ull }}, {{ 0xf256f9797b43e6a7ull, 0x618bc27ddfb68d7eull, 0xd790294778e034f9ull, 0x8a311d62be523034ull, 0xf0f51a1c323b4f9cull, 0x0fc7851ca8c89076ull }}, {{ 0x7765bebed0a70285ull, 0xcf7598eabd2186f5ull, 0x6ba19ccab8c211bdull, 0x65eb25db6f35e210ull, 0x69930519f6511c1dull, 0x9dcb331e97d5a4a5ull }}, {{ 0xa9f9737426861932ull, 0x1a97f92b634f4596ull, 0x34501feb3794b16aull, 0xfb2f7a92581ad4a4ull, 0x1fbe33039f2b1925ull, 0x29efff31ee586e76ull }}, {{ 0xa3be8289813cfbf5ull, 0x09efbbb1e118b7e2ull, 0x0b213f302bceee25ull, 0xcfdac9b7710c4e6aull, 0x3d6dfe2437aefb7bull, 0xa35ff7f34f74509dull }}, {{ 0x6571195f0c61d794ull, 0x635d54f2caf72edaull, 0x6f4c77e1b6154d72ull, 0x1e8be12a6a7b1024ull, 0x664bed6a2cd5d2d6ull, 0x61bfaf811a8b2624ull }}, {{ 0xf66afdb67bd26bc9ull, 0xe1a5517beda7d487ull, 0x58fcaed11cd50677ull, 0x3176cba828cea16cull, 0xfef74625c05a3c5dull, 0xd17cdb0b096f7d6bull }}, {{ 0xa02de920d63835d6ull, 0xd0752ed7488e4d4full, 0x79ded42b205240aeull, 0xeea3f49198124e3bull, 0xf5a8bd7983865ba3ull, 0x2ee08e6e5e5ae637ull }}, {{ 0x41cb1b485e321a5aull, 0x2493d468d58f051cull, 0xc2b449af433686d4ull, 0x52678daff0b70e52ull, 0x989766bf233f9467ull, 0xd4c5904faf8cfe2full }}, {{ 0x91ef10d3adf50782ull, 0x6dc64c185796331aull, 0x9b0ae0d8a0214449ull, 0x380b88df67268f3bull, 0xf5ea0377607bcc09ull, 0x4fb7a31cdb81eddbull }}, {{ 0xb356a844cb924b14ull, 0x49bef8f36bddff09ull, 0x0e6cc876414caadeull, 0x307358ba07819854ull, 0x9b2422a9c4d5f85cull, 0x1d2c5f2093134a97ull }}, {{ 0x016292aff3b6eec8ull, 0xe175b98236abf661ull, 0x903fd49e8cfeacaeull, 0xe48177444b0ff348ull, 0x0f695aa1b05bb399ull, 0x23bbb745bec0e9ecull }}, {{ 0x0dd9badf852553d4ull, 0xce993f1622b79fcaull, 0xa27e4e3181f2bed4ull, 0xed0ea8aaee9f80d5ull, 0x9a1d8a50e3950402ull, 0x655528b973892338ull }}, {{ 0x8a814cbb3375464bull, 0x11fc76dd5b2c3de4ull, 0x58ef0def137b7450ull, 0x429296ad523b0858ull, 0x05276728e3d2281dull, 0xf553973e835b6036ull }}, {{ 0x690cff500294beebull, 0xb3dca4a58fba6aedull, 0x79568b56c2d28b20ull, 0x99b9e2c5364e5373ull, 0x338a0798e6359124ull, 0x9543e8712191c21cull }}, {{ 0x1a81f92019cf752eull, 0x069e6e779d482d46ull, 0xbd6171639c396f47ull, 0x0142dbb41f0f4282ull, 0x03644bf8fe17ab6eull, 0xd4a7146b4fb1951aull }}, {{ 0x0913bb41021a93d0ull, 0x423050ac24d1c4bdull, 0x65ce6de41a3e58c6ull, 0x0c9c95093698991bull, 0x21eaf7b9ececb24cull, 0x4e86cc311cefd304ull }}, {{ 0x5ac5508a1509c624ull, 0x95e326b97031af62ull, 0xfa104ae9066f77beull, 0x7e1dd25c21f5fb11ull, 0x532dad43413ef6f8ull, 0x1143f9eb215e3e29ull }}, {{ 0x8bb52564d261bd66ull, 0xdadf833e61f0d9d7ull, 0xc4a2ed1a405aad71ull, 0xed2a3799539bceb3ull, 0x3fc8c4a08c75a5b4ull, 0xaca7c32f4dae6d9dull }}, {{ 0x751375f037d16600ull, 0x8cbb206fd368826bull, 0xae5d4306838ac672ull, 0x43a62bfd44161305ull, 0x7dd7ae457c987911ull, 0xbe8d9fd908d04824ull }}, {{ 0x92c29b622e2dfc01ull, 0x7f4f445e42151832ull, 0xcfa49e41236bc079ull, 0xa47db7e4a8dcbe38ull, 0xea6cceb6ddf4baacull, 0x71883e7a5822d16cull }}, {{ 0xbb9a11d5cdcbd80bull, 0xf918abae94d2f1f9ull, 0x1c6e2e8b623584beull, 0x6ce92eee989f6e38ull, 0x28401324ab8f4abeull, 0x6f5270c7715c2e41ull }}, {{ 0x5404b25a09f67073ull, 0xbaf6b4d1d03d73c1ull, 0x1c4dd171d6172f75ull, 0x411bd551f63a4e31ull, 0x9280bf6eb398eb70ull, 0x593867ca6d99ce8bull }}, {{ 0x482ef78463a0647dull, 0x4da310322266858dull, 0x1b0a2e725ce7da99ull, 0x8b1655339e470debull, 0xb9077a5303f93262ull, 0x7c340de848021173ull }}, {{ 0xd1d5ab2be443ece4ull, 0x085ea1f558013784ull, 0x0e65d077a10e89fdull, 0x6edf54042ec68b2full, 0x3a4ac73e27bbf7d9ull, 0xda088b12d014ae85ull }}, {{ 0x3258afb6eaa740eaull, 0x53b25395700c2b30ull, 0x8ffa24ac4a9163e2ull, 0x54b94829d3c16fd6ull, 0x46ebc86d8d57ae7eull, 0x84556ebc20ced134ull }}, {{ 0xf776dd252a888924ull, 0x44f743d66079afe1ull, 0x9fc56ebae9ade6d7ull, 0x4f3cd1a2458e5e61ull, 0xc535d447856cd0efull, 0x2b56535948142c0aull }}, {{ 0xaaa4a373a9555b6bull, 0xb1a8a65fc4c0ded3ull, 0x3db6534d20cb0468ull, 0x18603056b78fafd0ull, 0xb41a4acb36402959ull, 0xb15f417cd0c9b86bull }}, {{ 0xaa6e62849d55922bull, 0xf0967fbdaf88b444ull, 0x691f410347ee2c16ull, 0xf3c1e3632b9cde22ull, 0x0906ebf01e819d7aull, 0xedb88ee027e13435ull }}, {{ 0xa84fd92e2557b5adull, 0x65e0fd68db570aaeull, 0x1b388a20cf4db8e5ull, 0x8592e1dfb420ad58ull, 0x5a453761311026cdull, 0x493594c18ecc0a12ull }}, {{ 0x931e7bcd756d18c6ull, 0xfac9e61891666ad2ull, 0x10356548190938f5ull, 0x37bcd2bd0946c571ull, 0x86b429cbeaa18407ull, 0xdc17cf8f93f864b7ull }}, {{ 0xbf30d6069642f7bbull, 0xcbe2fcf5ae002c39ull, 0xa215f4d0fa5c399bull, 0x2d603b625cc3b66aull, 0x4309a1f72a4f2848ull, 0x98ee1b9bc7b3ef2bull }}, {{ 0x77e85c41de9dad4aull, 0xf6dde198cc01ba41ull, 0x54db9029c79a4015ull, 0xc5c251d79fa5202aull, 0x9e6053a7a71792d1ull, 0xf94d1415cd0757b0ull }}, {{ 0xaf139a92b228c4e6ull, 0xa4aacff7f811468eull, 0x5093a1a1cc0680dbull, 0xb997326c3c7341a7ull, 0x2fc3448c86ebbc31ull, 0xbd02c8da02496ce6ull }}, {{ 0xd6c409baf597b0faull, 0x6eac1fafb0acc192ull, 0x25c45051f8410894ull, 0x3fe7f83a5c809089ull, 0xdda0ad7d453559f1ull, 0x621bd88416de40fdull }}, {{ 0x63a8614d97ece9c7ull, 0x52b93cdce6bf8fbcull, 0x79ab2333b28a55ccull, 0x7f0fb2479d05a55bull, 0xa846c6e4b415836cull, 0xd5167528e4ae89eaull }}, {{ 0xe493cd07ef4121c2ull, 0x3b3c60a1037b9d5bull, 0xc0af6004f96759fbull, 0xf69cf6cc22387592ull, 0x92c3c4ef08d7223cull, 0x52e09398eed1632aull }}, {{ 0xedc6024f588b5192ull, 0x505bc64a22d42596ull, 0x86d9c031be0983d0ull, 0xa221a3f9563497bbull, 0xbba5b15658675661ull, 0x3cc5c3f9542ddfa9ull }}, {{ 0x49bc171975712fb3ull, 0x2395bee55c4977e5ull, 0x448181f16c5f2623ull, 0x555067bd5e0ded53ull, 0x5478ed5f74095fd0ull, 0x5fb9a7bd49cabca1ull }}, {{ 0xe158e6fe966bdcfeull, 0x63d974f59adeaef4ull, 0xad0f136e3bb77d5full, 0x55240d65ac8b4540ull, 0x4cb945ba885dbe23ull, 0xbd408d64e1eb5e4dull }}, {{ 0xcd7905f1e036a1e8ull, 0xe67e91980cb2d590ull, 0xc296c24e552ae5b9ull, 0x536885f8bd70b486ull, 0xff3cb94953a96d61ull, 0x648585f0d331af04ull }}, {{ 0x06ba3b72c2225310ull, 0x00f1aff07efc57a8ull, 0x99e3970f53acf943ull, 0x42153bb766670d43ull, 0xf85f3cdd449e45cdull, 0xed373b683ff0d631ull }}, {{ 0x4346527b95573e9dull, 0x0970df64f5db6c90ull, 0x02e3e69944c1bc9eull, 0x94d4552a000684a4ull, 0xb3b860a4ae2eba04ull, 0x442852127f685df3ull }}, {{ 0xa0bf38d3d568721dull, 0x5e68b9f19a923da2ull, 0x1ce701fcaf915e2cull, 0xd04b53a400412e68ull, 0x0533c66ecdd3442dull, 0xa99334b8fa13ab85ull }}, {{ 0x4778384656147524ull, 0xb017437009b6685aull, 0x210613dedbadadbbull, 0x22f14468028bd011ull, 0x3405c0540a40a9caull, 0x9fc00f39c4c4b332ull }}, {{ 0xcab232bf5ccc9369ull, 0xe0e8a26061201386ull, 0x4a3cc6b494c8c954ull, 0x5d6cac10197620abull, 0x083983486686a1e5ull, 0x3d809841afaefff6ull }}, {{ 0xeaf5fb799ffdc217ull, 0xc91657c3cb40c343ull, 0xe65fc30dcfd7dd50ull, 0xa63eb8a0fe9d46b0ull, 0x523f20d4014252f5ull, 0x6705f290dcd5ff9cull }}, {{ 0x2d9bd2c03fe994e2ull, 0xdadf6da5f087a0a7ull, 0xffbd9e8a1e6ea527ull, 0x7e733649f224c2e8ull, 0x367748480c973d98ull, 0x063b79a8a05bfc1bull }}, {{ 0xc8163b827f1fd0cfull, 0x8cba487b654c4687ull, 0xfd6831653052738eull, 0xf0801ee3756f9d19ull, 0x20a8d2d07de867f4ull, 0x3e52c0964397d910ull }}, {{ 0xd0de5318f73e2819ull, 0x7f46d4d1f4fac14dull, 0xe611edf3e3388391ull, 0x650134e2965c2303ull, 0x46983c24eb140f91ull, 0x6f3b85dea3ee7aa1ull }}, {{ 0x28af3ef9a86d90feull, 0xf8c4503391cb8d0aull, 0xfcb34b86e03523aeull, 0xf20c10d9df995e26ull, 0xc1f259712ec89badull, 0x58533ab26750ca4cull }}, {{ 0x96d875c09447a9e9ull, 0xb7ab2203b1f38265ull, 0xdf00f344c21364d5ull, 0x7478a882bbfdad85ull, 0x93777e6bd3d614cbull, 0x73404af80927e6ffull }}, {{ 0xe4749985cacca31bull, 0x2caf5424f38317f7ull, 0xb60980af94c1f059ull, 0x8cb6951b57e8c73aull, 0xc2aaf036465ccff2ull, 0x8082edb05b8f05fbull }}, {{ 0xec8dff39ebfe5f0aull, 0xbed94971831eefaeull, 0x1c5f06dbcf93637bull, 0x7f21d3116f17c84bull, 0x9aad621ebfa01f79ull, 0x051d48e393963bd5ull }}, {{ 0x3d8bf84337efb662ull, 0x747cde6f1f355cd5ull, 0x1bb644961bc1e2d5ull, 0xf7523eae56edd2efull, 0x0ac5d5337c413abeull, 0x3324d8e3c3de5658ull }}, {{ 0x6777b2a02f5d1fd8ull, 0x8ce0b0573815a054ull, 0x151eaddd1592dc56ull, 0xa93672cf654a3d57ull, 0x6bba5402da8c4b75ull, 0xff7078e5a6af5f70ull }}, {{ 0x0aacfa41d9a33e6full, 0x80c6e36830d8434cull, 0xd332caa2d7bc9b61ull, 0x9c207c19f4e66566ull, 0x3547481c897af298ull, 0xfa64b8f882d9ba64ull }}, {{ 0x6ac1c69280607051ull, 0x07c4e211e872a0f8ull, 0x3ffbea5c6d5e11cfull, 0x1944d90390fff604ull, 0x14c8d11d5ecd79f6ull, 0xc7ef39b51c8147eaull }}, {{ 0x2b91c1b903c4632dull, 0x4db0d4b3147a49b4ull, 0x7fd7279c45acb216ull, 0xfcb07a23a9ff9c2aull, 0xcfd82b25b406c39cull, 0xcf5841131d0ccf24ull }}, {{ 0xb3b1913a25abdfc1ull, 0x08e84efeccc6e109ull, 0xfe678c1ab8bef4dfull, 0xdee4c564a3fc19a8ull, 0x1e71af790843a421ull, 0x19728abf22801770ull }}, {{ 0x04efac4578b6bd87ull, 0x591315f3ffc4ca61ull, 0xf00b790b377590b6ull, 0xb4efb5ee67d90099ull, 0x3070daba52a46952ull, 0xfe796b775900ea61ull }}, {{ 0x315cbab6b7236745ull, 0x7abedb87fdafe7caull, 0x6072ba702a97a71full, 0x115d1b500e7a0603ull, 0xe4688b473a6c1d3bull, 0xf0be32a97a0927cbull }}, {{ 0xed9f4b23276208aeull, 0xcb74934fe8df0de5ull, 0xc47b4861a9ec873aull, 0xada3112090c43c21ull, 0xec1570c84839244eull, 0x676dfa9ec45b8df6ull }}, {{ 0x4838ef5f89d456cdull, 0xf28dc11f18b68afbull, 0xacd0d3d0a33d484bull, 0xc85eab45a7aa5951ull, 0x38d667d2d23b6b12ull, 0x0a4bca33ab938ba5ull }}, {{ 0xd23959bb624b63ffull, 0x79898b36f7216dd0ull, 0xc02846266064d2f7ull, 0xd3b2b0b88ca77d30ull, 0x38600e3c36522ebbull, 0x66f5e604b3c37474ull }}, {{ 0x363d8151d6f1e7f3ull, 0xbf5f7025a74e4a28ull, 0x8192bd7fc3f03daaull, 0x44fae7357e8ae3e7ull, 0x33c08e5a1f35d356ull, 0x059afc2f05a28c8aull }}, {{ 0x1e670d3265730f80ull, 0x79ba6178890ee592ull, 0x0fbb66fda76268abull, 0xb1cd0816f16ce70bull, 0x05858f85381a415eull, 0x380dd9d638597d66ull }}, {{ 0x300683f7f67e9afeull, 0xc147ceb55a94f7b5ull, 0x9d5205e889d816b2ull, 0xf20250e56e41066eull, 0x37379b3431068db2ull, 0x308a825e337ee5fcull }}, {{ 0xe04127afa0f20debull, 0x8cce131589d1ad13ull, 0x25343b156270e2fbull, 0x741728f64e8a4052ull, 0x282c1009ea4188fdull, 0xe56917ae02f4fbdaull }}, {{ 0xc28b8cdc49748b2dull, 0x800cbed76230c2c6ull, 0x740a4ed5d868ddd3ull, 0x88e7999f11668335ull, 0x91b8a063268f59e6ull, 0xf61aeccc1d91d685ull }}, {{ 0x9973809ade8d6fc3ull, 0x007f7469d5e79bc3ull, 0x8867145a7418aa43ull, 0x590c0036ae012016ull, 0xb13643df81998301ull, 0x9d0d3ff927b26137ull }}, {{ 0xfe83060cb1865da1ull, 0x04fa8c225b0c15a3ull, 0x5406cb8888f6a69eull, 0x7a780222cc0b40e1ull, 0xec1ea6bb0fff1e0dull, 0x22847fbb8cf7cc2cull }}, {{ 0xf11e3c7eef3fa84dull, 0x31c979578e78d867ull, 0x4843f35559a2822cull, 0xc8b0155bf87088cdull, 0x3932834e9ff72c86ull, 0x592cfd5381adf9c1ull }}, {{ 0x6b2e5cf5587c9304ull, 0xf1debd6b90b8740full, 0xd2a78155805915b9ull, 0xd6e0d597b4655804ull, 0x3bf921123fa7bd43ull, 0x7bc1e54310cbc18cull }}, {{ 0x2fcfa19574ddbe26ull, 0x72b36633a734889aull, 0x3a8b0d57037ad943ull, 0x64c857ed0bf57030ull, 0x57bb4ab67c8d64a6ull, 0xd592f49ea7f58f7aull }}, {{ 0xde1c4fd690a96d7bull, 0x7b01fe04880d5605ull, 0x496e856622cc7ca2ull, 0xefd36f42779661e2ull, 0x6d50eb20dd85ee7full, 0x57bd8e328f979ac7ull }}, {{ 0xad1b1e61a69e46caull, 0xce13ec2d50855c3aull, 0xde5135fd5bfcde58ull, 0x5e425898abdfd2d6ull, 0x45292f48a73b50ffull, 0x6d678df99bec0bcaull }}, {{ 0xc30f2fd0822ec3e1ull, 0x0cc739c525359a4aull, 0xaf2c1be597e0af78ull, 0xae9775f6b6be3c64ull, 0xb39bd8d6885129f9ull, 0x460b8bc0173875e6ull }}, {{ 0x9e97de2515d3a6c7ull, 0x7fc841b3741806ebull, 0xd7b916f7eec6dab0ull, 0xd1ea9ba3236e5beeull, 0x04167861532ba3c0ull, 0xbc737580e8349b03ull }}, {{ 0x31eead72da4483c7ull, 0xfdd2910288f04534ull, 0x6d3ae5af53c48ae4ull, 0x332a145f624f9754ull, 0x28e0b3cd3fb46588ull, 0x5c829709120e0e1eull }}, {{ 0xf352c67c86ad25caull, 0xea39aa195962b409ull, 0x444cf8d945ad6cf1ull, 0xffa4cbb9d71be94cull, 0x98c706047d0bf751ull, 0x9d19e65ab48c8d2dull }}, {{ 0x813bc0dd42c379e8ull, 0x2640a4fd7ddb0863ull, 0xab01b87cb8c64173ull, 0xfc6ff54267171cfaull, 0xf7c63c2ce277a933ull, 0x2302ff8b0d7d83c7ull }}, {{ 0x0c5588a49ba2c30full, 0x7e8671e6ea8e53e3ull, 0xae1134df37be8e7full, 0xdc5f949806e721caull, 0xadbe59c0d8ac9c07ull, 0x5e1dfb6e86e725cfull }}, {{ 0x7b57566e145b9e96ull, 0xf1407305298f46deull, 0xccac10b82d7190faull, 0x9bbbcdf0450751eaull, 0xc96f818876be184eull, 0xad2bd25145077a1cull }}, {{ 0xd169604ccb9431deull, 0x6c847e339f98c4b0ull, 0xfeb8a731c66fa9cdull, 0x15560b62b249332bull, 0xde5b0f54a36cf312ull, 0xc3b6372cb24ac51full }}, {{ 0x2e1dc2fff3c9f2aaull, 0x3d2cee043bf7aee8ull, 0xf33687f1c05ca206ull, 0xd55c71daf6dbffb7ull, 0xaf8e994e62417eb4ull, 0xa51e27bef6ebb33eull }}, {{ 0xcd299dff85e37aa1ull, 0x63c14c2a57acd511ull, 0x80214f71839e543eull, 0x559c728da497fd2full, 0xdb91fd0fd68ef310ull, 0x732d8d75a5350072ull }}, {{ 0x03a02bfb3ae2ca4dull, 0xe58cf9a76cc052b2ull, 0x014d1a6f242f4a6full, 0x581c79886defe3dbull, 0x93b3e29e61957ea3ull, 0x7fc786987412047cull }}, {{ 0x2441b7d04cdbe6fdull, 0xf781c08a3f833af4ull, 0x0d03085769d8e85eull, 0x711cbf544b5ee68eull, 0xc506da2fcfd6f261ull, 0xfdcb41f488b42cddull }}, {{ 0x6a912e23009705e3ull, 0xab1185667b204d89ull, 0x821e536a227913b5ull, 0x6b1f794af1b5018cull, 0xb24485de1e6577ceull, 0xe9f0938d5709c0a9ull }}, {{ 0x29abcd5e05e63adbull, 0xaeaf3600cf43075eull, 0x152f422558bac518ull, 0x2f3abced71120f7dull, 0xf6ad3aad2ff6ae10ull, 0x2365c385666186a0ull }}, {{ 0xa0b605ac3afe4c90ull, 0xd2d81c08189e49adull, 0xd3d89575774bb2f6ull, 0xd84b61466ab49ae2ull, 0xa2c44ac3dfa2cca1ull, 0x61f9a335ffcf4249ull }}, {{ 0x471c38ba4deefda0ull, 0x3c711850f62ee0c8ull, 0x4675d696a8f4fda4ull, 0x72f1ccc02b0e0cdcull, 0x5baaeba6bc5bfe52ull, 0xd3c0601bfe1896e0ull }}, {{ 0xc71a37470b55e842ull, 0x5c6af3299dd4c7d2ull, 0xc09a61e29991e86aull, 0x7d71ff81ae8c809aull, 0x94ad34835b97ef38ull, 0x4583c117ecf5e4c3ull }}, {{ 0xc70628c6715b128full, 0x9c2d7fa02a4fce3bull, 0x8607d2d9ffb31427ull, 0xe673fb10d17d060bull, 0xcec40d2193ef5834ull, 0xb7258aef419aefa3ull }}, {{ 0xc63d97c06d8eb99bull, 0x19c6fc41a71e0e55ull, 0x3c4e3c83fcfec98cull, 0x0087cea82ee23c73ull, 0x13a8834fc7597211ull, 0x27776d58900d5c66ull }}, {{ 0xbe67ed844793400aull, 0x01c5da90872c8f59ull, 0x5b0e5d27e1f3df79ull, 0x054e1291d4d65c80ull, 0xc495211dc97e74aaull, 0x8aaa4575a0859bfcull }}, {{ 0x700f472acbc08064ull, 0x11ba89a547bd9981ull, 0x8e8fa38ed386babaull, 0x350cb9b2505f9d03ull, 0xadd34b29def08ea4ull, 0x6aa6b698453817dfull }}, {{ 0x6098c7abf58503e5ull, 0xb1496074cd67ff0eull, 0x919c639443434b44ull, 0x127f40f723bc2223ull, 0xca40efa2b565926aull, 0x2a8321f2b430eebcull }}, {{ 0xc5f7ccb7973226f3ull, 0xecddc490060ff68full, 0xb01be3caa0a0f0aeull, 0xb8f889a765595563ull, 0xe6895c5b15f7b824ull, 0xa91f537b09e9535full }}, {{ 0xbbadff2be7f58580ull, 0x40a9ada03c9fa19dull, 0xe116e5ea464966d5ull, 0x39b56089f57d55e4ull, 0x015d9b8edbad316full, 0x9b3942ce631d41bfull }}, {{ 0x54cbf7b70f973704ull, 0x86a0c8425e3c5029ull, 0xcae4fb26bede0454ull, 0x4115c56396e55af0ull, 0x0da8139494c3ee58ull, 0x103c9c0fdf249176ull }}, {{ 0x4ff7ad269be82629ull, 0x4247d297ae5b219dull, 0xecf1cf8374ac2b4dull, 0x8ad9b5e3e4f58d67ull, 0x8890c3cdcfa74f72ull, 0xa25e189eb76dae9cull }}, {{ 0x1facc38217117d98ull, 0x96ce39eccf8f5025ull, 0x41721b228eb9b104ull, 0x6c811ae6f197860full, 0x55a7a60a1c891a79ull, 0x57acf6332a48d21dull }}, {{ 0x3cbfa314e6aee7efull, 0xe40e43401b992173ull, 0x8e750f599340ea2dull, 0x3d0b0d056feb3c98ull, 0x588c7c651d5b08beull, 0x6cc19dffa6d83525ull }}, {{ 0x5f7c5ed102d50f52ull, 0xe88ea08113fb4e80ull, 0x9092997fc08925caull, 0x626e82365f305df5ull, 0x757cdbf3258e576eull, 0x3f902bfc84721375ull }}, {{ 0xbadbb42a1c529933ull, 0x1592450ac7d11103ull, 0xa5b9fefd855b79edull, 0xd851161fb7e3ab97ull, 0x96e0977f778f6a4full, 0x7ba1b7dd2c74c296ull }}, {{ 0x4c9509a51b39fbfcull, 0xd7b6b26bce2aaa25ull, 0x7943f5e73592c342ull, 0x732add3d2ee4b3ecull, 0xe4c5eafaab9a271eull, 0xd4512ea3bc8f99e1ull }}, {{ 0xfdd260731043d7dcull, 0x6d22f8360daaa574ull, 0xbca79b0817bba09cull, 0x7faca463d4ef073cull, 0xefbb2dcab4058730ull, 0x4b2bd2655d9c02d2ull }}, {{ 0xea37c47ea2a66e97ull, 0x435db21c88aa7691ull, 0x5e8c0e50ed54461cull, 0xfcbe6be65156485full, 0x5d4fc9eb083747e4ull, 0xefb637f5a8181c3dull }}, {{ 0x262dacf25a8051e6ull, 0xa1a8f51d56a8a1b3ull, 0xb1788f29454abd1aull, 0xdf7036ff2d5ed3b9ull, 0xa51de32e5228cef1ull, 0x5d1e2f9890f11a65ull }}, {{ 0x7dc8c177890332f8ull, 0x50999325629650ffull, 0xeeb5979cb4eb630aull, 0xba6225f7c5b44540ull, 0x732adfcf35981572ull, 0xa32ddbf5a96b07f8ull }}, {{ 0xe9d78eab5a1ffdafull, 0x25ffbf75d9df29faull, 0x5317ec1f1131de67ull, 0x47d57badb90ab489ull, 0x7facbe1817f0d67bull, 0x5fca97989e2e4fb4ull }}, {{ 0x226b92b1853fe8d7ull, 0x7bfd7a9a82b7a3cdull, 0x3eef3936abf2b007ull, 0xce56d4c93a6b0d5dull, 0xfcbf6cf0ef6860d0ull, 0xbde9ebf62dcf1d0cull }}, {{ 0x5833baef347f1865ull, 0xd7e6ca091b2c6603ull, 0x75583c22b77ae04aull, 0x0f644fdc482e85a4ull, 0xdf7a41695a13c828ull, 0x6b23379dca172281ull }}, {{ 0x72054d580cf6f3f1ull, 0x6f03e45b0fbbfc21ull, 0x9572595b2accc2ecull, 0x99eb1e9ad1d1386cull, 0xbac68e1d84c5d190ull, 0x2f602c29e4e75912ull }}, {{ 0x7435057081a5876eull, 0x5626eb8e9d57d94eull, 0xd6777d8fabff9d3cull, 0x032f320c322c343dull, 0x4bc18d272fba2fa6ull, 0xd9c1b9a2f1097abbull }}, {{ 0x8a12366510774a4dull, 0x5d853392256e7d10ull, 0x60aae79cb7fc245bull, 0x1fd7f479f5ba0a6aull, 0xf58f8387dd45dc7cull, 0x8191405d6a5ecb50ull }}, {{ 0x64b61ff2a4a8e704ull, 0xa73403b57650e2a5ull, 0xc6ad0c1f2fd96b91ull, 0x3e6f8cc399446827ull, 0x979b234ea4ba9cd9ull, 0x0fac83a627b3f129ull }}, {{ 0xef1d3f7a6e990625ull, 0x880825169f28da75ull, 0xc2c27937de7e33b0ull, 0x705b7fa3fcac118dull, 0xec0f61126f4a207cull, 0x9cbd247d8d076b9full }}, {{ 0x57247ac851fa3d71ull, 0x505172e23798889bull, 0x9b98bc2eb0ee04e5ull, 0x6392fc67deb8af89ull, 0x3899cab858e544dcull, 0x1f636ce7824a343full }}, {{ 0x676ccbd333c66669ull, 0x232e7cd62bf55611ull, 0x13f759d2e94c30f5ull, 0xe3bddc0eb336db60ull, 0x3601eb3378f4b09bull, 0x39e2410b16e60a78ull }}, {{ 0x0a3ff64005c00017ull, 0x5fd0e05db7955caeull, 0xc7a9823d1cf9e993ull, 0xe56a9893002491c0ull, 0x1c133002b98ee616ull, 0x42d68a6ee4fc68b2ull }}, {{ 0x667f9e80398000e5ull, 0xbe28c3a92bd59eccull, 0xcc9f166321c31fc1ull, 0xf629f5be016db187ull, 0x18bfe01b3f94fce4ull, 0x9c616854f1dc16f5ull }}, {{ 0x00fc31023f0008f2ull, 0x6d97a49bb65833fcull, 0xfe36dfdf519f3d91ull, 0x9da3996c0e48ef4dull, 0xf77ec1107bd1e0f1ull, 0x1bce13517298e592ull }}, {{ 0x09d9ea1676005974ull, 0x47ec6e151f7207d8ull, 0xee24beb9303867aeull, 0x2863fe388ed9590bull, 0xaaf38aa4d632c970ull, 0x160cc12e79f8f7bdull }}, {{ 0x628324e09c037e8aull, 0xcf3c4cd33a744e70ull, 0x4d6f733be2340cceull, 0x93e7ee35947d7a77ull, 0xad836a705dfbde61ull, 0xdc7f8bd0c3b9ad68ull }}, {{ 0xd91f70c61822f167ull, 0x185b0040488b1063ull, 0x065a8056d6088014ull, 0xc70f4e17cce6c8a9ull, 0xc7222863abd6afcfull, 0x9cfb7627a540c616ull }}, {{ 0x7b3a67bcf15d6e0aull, 0xf38e0282d56ea3e6ull, 0x3f8903645c5500c8ull, 0xc6990cee0103d69aull, 0xc75593e4b662de1dull, 0x21d29d8c7487bce3ull }}, {{ 0xd0480d616da64c65ull, 0x838c191c56526700ull, 0x7b5a21eb9b5207d9ull, 0xc1fa814c0a266206ull, 0xc957c6ef1fdcad29ull, 0x523a277c8d4d60e5ull }}, {{ 0x22d085ce487efbf0ull, 0x2378fb1b5f380608ull, 0xd185533411344e7full, 0x93c90cf8657fd440ull, 0xdd6dc5573e9ec3a1ull, 0x36458add8505c8f9ull }}, {{ 0x5c253a0ed4f5d75eull, 0x62b9cf11b8303c51ull, 0x2f354008ac0b10f7ull, 0xc5da81b3f6fe4a88ull, 0xa649b5687233a44full, 0x1eb76ca73239d9c2ull }}, {{ 0x99744494519a69aaull, 0xdb4216b131e25b2dull, 0xd8148056b86ea9a9ull, 0xba891107a5eee951ull, 0x7ee1161476046b1dull, 0x332a3e87f642819aull }}, {{ 0xfe8aadcb300820a2ull, 0x9094e2ebf2d78fc7ull, 0x70cd03633452a0a2ull, 0x495aaa4c7b551d32ull, 0xf4cadccc9c2c2f29ull, 0xffa6714f9e991008ull }}, {{ 0xf16ac9efe0514656ull, 0xa5d0dd377c6b9dcfull, 0x680221e00b3a4659ull, 0xdd8aa6fcd15323f8ull, 0x8fec9ffe19b9d79cull, 0xfc806d1c31faa059ull }}, {{ 0x6e2be35ec32cbf5cull, 0x7a28a42adc342a1full, 0x101552c07046bf80ull, 0xa76a85e02d3f67b4ull, 0x9f3e3fed01426c20ull, 0xdd044319f3ca437full }}, {{ 0x4db6e1b39fbf7997ull, 0xc59669ac9a09a53aull, 0xa0d53b8462c37b04ull, 0x8a293ac1c47a0d08ull, 0x386e7f420c983946ull, 0xa22a9f0385e6a2fcull }}, {{ 0x0924d1043d7abfe6ull, 0xb7e020be04607447ull, 0x4854532bdba2ce2full, 0x659c4b91acc48256ull, 0x3450f8947df23cc1ull, 0x55aa36233b025ddaull }}, {{ 0x5b702a2a66cb7efcull, 0x2ec1476c2bc48ac6ull, 0xd34b3fb6945c0dddull, 0xf81af3b0bfad175eull, 0x0b29b5cceb765f8dull, 0x58a61d604e17aa86ull }}, {{ 0x9261a5a803f2f5dbull, 0xd38cca39b5ad6bbfull, 0x40f07d21cb988aa3ull, 0xb10d84e77cc2e9b4ull, 0x6fa11a01329fbb8bull, 0x767d25c30ceca93cull }}, {{ 0xb7d07890277d9a8bull, 0x437fe64118c6357bull, 0x8964e351f3f56a66ull, 0xea87310adf9d210aull, 0x5c4b040bfa3d5374ull, 0xa0e3799e813e9c5cull }}, {{ 0x2e24b5a18ae8096dull, 0xa2fefe8af7be16d5ull, 0x5df0e133879627feull, 0x2947ea6cbc234a69ull, 0x9aee2877c6654291ull, 0x48e2c0310c721b9bull }}, {{ 0xcd6f184f6d105e3full, 0x5df5f16dad6ce453ull, 0xab68cc034bdd8ff2ull, 0x9ccf283f5960e81dull, 0x0d4d94adbff499abull, 0xd8db81ea7c751414ull }}, {{ 0x0656f31a42a3ae79ull, 0xab9b6e48c640eb46ull, 0xb217f820f6a79f77ull, 0x201792797dc91128ull, 0x8507cec97f8e00b4ull, 0x78931328dc92c8c8ull }}, {{ 0x3f657f069a64d0bdull, 0xb4124ed7be8930bcull, 0xf4efb149a28c3aacull, 0x40ebb8bee9daab96ull, 0x324e13defb8c0709ull, 0xb5bebf989dbbd7d5ull }}, {{ 0x79f6f64207f02764ull, 0x08b7146d715be75aull, 0x915cece0597a4abfull, 0x89353775228ab3e5ull, 0xf70cc6b5d378465cull, 0x19737bf629566e53ull }}, {{ 0xc3a59e944f6189ecull, 0x5726cc466d970988ull, 0xada140c37ec6eb76ull, 0x5c142a93596b06f7ull, 0xa67fc31a42b2bf9dull, 0xfe82d79d9d604f47ull }}, {{ 0xa47831cb19cf633cull, 0x6783fac047e65f57ull, 0xc84c87a2f3c5329full, 0x98c9a9c17e2e45acull, 0x80fd9f069afb7c25ull, 0xf11c6c2825c318ccull }}, {{ 0x6cb1f1ef0219e05bull, 0x0b27cb82ceffb96cull, 0xd2fd4c5d85b3fa3aull, 0xf7e0a18eedceb8bfull, 0x09e836420dd2d977ull, 0x6b1c3991799ef7fdull }}, {{ 0x3ef373561502c389ull, 0x6f8df31c15fd3e3cull, 0x3de4fba73907c644ull, 0xaec64f954a13377eull, 0x63121e948a3c7eafull, 0x2f1a3faec035afe2ull }}, {{ 0x7582815cd21ba35bull, 0x5b8b7f18dbe46e5aull, 0x6af1d4883a4dbeacull, 0xd3bf1bd4e4c02aeeull, 0xdeb531cd665cf2dcull, 0xd7067cd38218ded7ull }}, {{ 0x97190da03514618bull, 0x9372f6f896ec4f88ull, 0x2d724d52470972bbull, 0x45771650ef81ad50ull, 0xb313f205ffa17ca0ull, 0x6640e04314f8b46eull }}, {{ 0xe6fa884212cbcf6eull, 0xc27da5b5e53b1b55ull, 0xc6770536c65e7b53ull, 0xb6a6df295b10c521ull, 0xfec7743bfc4ede42ull, 0xfe88c29ed1b70c52ull }}, {{ 0x05c95294bbf61a4cull, 0x98e8791af44f115bull, 0xc0a63423bfb0d145ull, 0x2284b79d8ea7b351ull, 0xf3ca8a57db14ae9bull, 0xf1579a3431267b3dull }}, {{ 0x39dd39cf579d06f7ull, 0xf914bb0d8b16ad8eull, 0x867e09657ce82cb7ull, 0x592f2c27928d0131ull, 0x85e9676e8eced20full, 0x6d6c0609eb80d06bull }}, {{ 0x42a442196c2245a3ull, 0xbacf4e876ee2c78eull, 0x40ec5df6e111bf2full, 0x7bd7b98bb9820befull, 0x3b1e0a5194143499ull, 0x46383c6333082433ull }}, {{ 0x9a6a94fe3956b861ull, 0x4c19114a54dbcb8eull, 0x893baba4cab177ddull, 0xd66d3f753f147758ull, 0x4f2c672fc8ca0dfeull, 0xbe325bdffe516a00ull }}, {{ 0x0829d1ee3d6333c8ull, 0xf8faace75095f392ull, 0x5c54b46feaeeaea4ull, 0x60447a9476cca975ull, 0x17bc07ddd7e48bf4ull, 0x6df796bfef2e2403ull }}, {{ 0x51a2334e65e005d1ull, 0xb9cac10925db83b4ull, 0x9b4f0c5f2d52d271ull, 0xc2acc9cca3fe9e95ull, 0xed584eaa6eed778bull, 0x4babe37f57cd681eull }}, {{ 0x3056010ffac03a2cull, 0x41eb8a5b7a93250bull, 0x11167bb7c53c3871ull, 0x9abfe1fe67f231d8ull, 0x457312a85546ab75ull, 0xf4b6e2f96e061135ull }}, {{ 0xe35c0a9fcb8245b8ull, 0x93336792c9bf726full, 0xaae0d52db45a346cull, 0x0b7ed3f00f75f270ull, 0xb67eba9354c2b298ull, 0x8f24ddbe4c3cac14ull }}, {{ 0xe1986a3df316b935ull, 0xc0020bbbe17a785eull, 0xacc853c90b860c3dull, 0x72f447609a9b7866ull, 0x20f349c14f9af9f0ull, 0x9770a96efa5eb8cfull }}, {{ 0xcff4266b7ee33c12ull, 0x80147556cec8b3b4ull, 0xbfd345da733c7a69ull, 0x7d8ac9c60a12b402ull, 0x4980e18d1c0dc364ull, 0xea669e55c7b33817ull }}, {{ 0x1f898032f4e058b0ull, 0x00cc956413d70510ull, 0x7e40ba88805cc81full, 0xe76be1bc64bb081bull, 0xdf08cf831889a1ecull, 0x28022f59cd0030e8ull }}, {{ 0x3b5f01fd90c376e2ull, 0x07fdd5e8c66632a1ull, 0xee874955039fd136ull, 0x0a36d15bef4e5112ull, 0xb6581b1ef5605341ull, 0x9015d9820201e918ull }}, {{ 0x51b613e7a7a2a4d6ull, 0x4fea5b17bffdfa4cull, 0x5148dd52243e2c1cull, 0x66242d97590f2abdull, 0x1f710f3595c3408aull, 0xa0da7f1414131af7ull }}, {{ 0x311cc70c8c5a7059ull, 0x1f278eed7febc6fbull, 0x2cd8a5356a6db91bull, 0xfd69c7e97a97ab65ull, 0x3a6a9817d9a08567ull, 0x4888f6c8c8bf0da7ull }}, {{ 0xeb1fc67d7b886375ull, 0x378b9546ff35c5cfull, 0xc076741628493b0full, 0xe621cf1ec9ecb1f3ull, 0x4829f0ee8045360full, 0xd559a3d7d7768888ull }}, {{ 0x2f3dc0e6d353e295ull, 0x2b73d4c5f819ba1full, 0x84a088dd92dc4e98ull, 0xfd521733e33ef385ull, 0xd1a3695102b41c9eull, 0x5580666e6aa15552ull }}, {{ 0xd86989044146d9d6ull, 0xb2864fbbb1014537ull, 0x2e4558a7bc9b11f1ull, 0xe534e806e0758337ull, 0x30621d2a1b091e35ull, 0x570400502a4d553cull }}, {{ 0x741f5a2a8cc48257ull, 0xf93f1d54ea0cb42eull, 0xceb5768d5e0eb370ull, 0xf4111044c4972027ull, 0xe3d523a50e5b2e1aull, 0x66280321a7055459ull }}, {{ 0x893985a97fad1768ull, 0xbc772551247f09d0ull, 0x1316a185ac930269ull, 0x88aaa2afade7418eull, 0xe65364728f8fcd0dull, 0xfd901f5086354b82ull }}, {{ 0x5c3f389efcc2ea11ull, 0x5ca7752b6cf66225ull, 0xbee24f38bdbe1821ull, 0x56aa5adccb088f8cull, 0xff41ec799b9e0287ull, 0xe7a139253e14f31cull }}, {{ 0x9a783635df9d24a5ull, 0x9e8a93b2419fd575ull, 0x74d71837696cf14dull, 0x62a78c9fee559b7full, 0xf8933cc0142c1949ull, 0x0c4c3b746cd17f21ull }}, {{ 0x08b21e1abc236e75ull, 0x3169c4f6903e5698ull, 0x9066f22a1e416d08ull, 0xda8b7e3f4f5812faull, 0xb5c05f80c9b8fcddull, 0x7afa528c402ef753ull }}, {{ 0x56f52d0b5962508dull, 0xee21b1a1a26f61f0ull, 0xa40575a52e8e4251ull, 0x8972ee791970bdc9ull, 0x1983bb07e139e0aaull, 0xcdc7397a81d5a945ull }}, {{ 0x6593c2717dd72586ull, 0x4d50f0505859d363ull, 0x68369873d18e9733ull, 0x5e7d50bafe6769e0ull, 0xff254e4ecc42c6a9ull, 0x09c83ec912589cb2ull }}, {{ 0xf7c5986eea677739ull, 0x05296323738241e1ull, 0x1221f4862f91e801ull, 0xb0e5274df00a22c4ull, 0xf7750f13fa9bc29dull, 0x61d273dab7761efdull }}, {{ 0xadb7f455280aa836ull, 0x339ddf62831692d3ull, 0xb5538d3ddbb3100aull, 0xe8f3890b60655ba8ull, 0xaa9296c7ca159a28ull, 0xd238868b2a9d35ebull }}, {{ 0xc92f8b53906a921cull, 0x042ab9d91ee1bc44ull, 0x1543846a94fea066ull, 0x19835a71c3f59497ull, 0xa9b9e3cde4d80599ull, 0x3635416faa241b34ull }}, {{ 0xdbdb7143a429b51cull, 0x29ab427b34d15aafull, 0xd4a32c29d1f243fcull, 0xff218871a797cde6ull, 0xa142e60af07037faull, 0x1e148e5ca569100eull }}, {{ 0x96926ca469a1131bull, 0xa0b098d0102d8adeull, 0x4e5fb9a23376a7d9ull, 0xf74f54708bee0b04ull, 0x4c9cfc6d64622fcdull, 0x2ccd8f9e761aa092ull }}, {{ 0xe1b83e6c204abf12ull, 0x46e5f820a1c76cb1ull, 0x0fbd405602a28e80ull, 0xa9194c65774c6e2bull, 0xfe21dc45ebd5de0bull, 0xc0079c309d0a45b6ull }}, {{ 0xd132703942eb76b2ull, 0xc4fbb14651ca3ef2ull, 0x9d64835c1a599102ull, 0x9afcfbf6a8fc4daeull, 0xed529abb365aac74ull, 0x804c19e62266b925ull }}, {{ 0x2bf8623c9d32a2f5ull, 0xb1d4ecbf31e6757cull, 0x25ed2199077faa1bull, 0x0de1d7a299db08d2ull, 0x453a0b501f8abc8eull, 0x02f902fd58033b7bull }}, {{ 0xb7b3d65e23fa5d96ull, 0xf2513f77f30096d9ull, 0x7b434ffa4afca514ull, 0x8ad26c5a028e5835ull, 0xb44471213b6b5d8cull, 0x1dba1de5702052d0ull }}, {{ 0x2d065fad67c7a7deull, 0x772c7aaf7e05e481ull, 0xd0a11fc6edde72d1ull, 0x6c383b84198f7216ull, 0x0aac6b4c5231a77dull, 0x29452af661433c27ull }}, {{ 0xc23fbcc60dcc8eb0ull, 0xa7bccadaec3aed0bull, 0x264b3dc54ab07c2eull, 0x3a325328ff9a74e4ull, 0x6abc30fb35f08ae6ull, 0x9cb3ad9fcca05986ull }}, {{ 0x967d5fbc89fd92e2ull, 0x8d5fec8d3a4d4275ull, 0x7ef069b4eae4d9d2ull, 0x45f73f99fc0890e9ull, 0x2b59e9d01b656cfeull, 0x1f04c83dfe437f40ull }}, {{ 0xe0e5bd5d63e7bcd0ull, 0x85bf3d8447049897ull, 0xf56421112cf08239ull, 0xbba87c03d855a91eull, 0xb183222111f641eeull, 0x362fd26beea2f881ull }}, {{ 0xc8f965a5e70d6020ull, 0x3978672ac62df5eeull, 0x95e94aabc165163full, 0x5494d82673589b35ull, 0xef1f554ab39e9353ull, 0x1dde3837525db510ull }}, {{ 0xd9bdf87b0685c145ull, 0x3eb407abbdcb9b53ull, 0xdb1ceab58df2de78ull, 0x4dd0718081761017ull, 0x573954eb0431c141ull, 0x2aae322937a912a9ull }}, {{ 0x816bb4ce41398cb0ull, 0x73084cb569f41146ull, 0x8f212b178b7cb0b2ull, 0x0a246f050e9ca0eeull, 0x683d512e29f18c8dull, 0xaacdf59c2c9aba9dull }}, {{ 0x0e35100e8c3f7ee3ull, 0x7e52ff162388acc1ull, 0x974baeeb72dee6f8ull, 0x656c5632921e4951ull, 0x12652bcda36f7d82ull, 0xac0b9819be0b4a26ull }}, {{ 0x8e12a0917a7af4e0ull, 0xef3df6dd6356bf8aull, 0xe8f4d5327cb505b4ull, 0xf63b5df9b52edd2full, 0xb7f3b608625ae717ull, 0xb873f1016c70e57cull }}, {{ 0x8cba45aec8cd90c1ull, 0x586ba4a5e1637b69ull, 0x199053f8df123911ull, 0x9e51abc113d4a3dfull, 0x2f851c53d78d06efull, 0x34876a0e3c68f6dfull }}, {{ 0x7f46b8d3d807a785ull, 0x74346e7acde2d21full, 0xffa347b8b6b63aadull, 0x2f30b58ac64e66b6ull, 0xdb331b466b82455cull, 0x0d4a248e5c19a4b7ull }}, {{ 0xf8c33846704c8b33ull, 0x8a0c50cc0adc353aull, 0xfc60cd37231e4ac6ull, 0xd7e7176bbf100325ull, 0x8fff10c03316b599ull, 0x84e56d8f99006f2eull }}, {{ 0xb7a032c062fd6ff9ull, 0x647b27f86c9a144dull, 0xdbc804275f2eebc1ull, 0x6f06ea3576a01f7bull, 0x9ff6a781fee31802ull, 0x30f6479bfa0457d1ull }}, {{ 0x2c41fb83dde65fbdull, 0xeccf8fb43e04cb09ull, 0x95d02989b7d5358dull, 0x56452616a2413ad6ull, 0x3fa28b13f4def018ull, 0xe99ecc17c42b6e30ull }}, {{ 0xba93d326aaffbd64ull, 0x401b9d0a6c2fee5bull, 0xda219f612e54178bull, 0x5eb37ce2568c4c61ull, 0x7c596ec790b560f3ull, 0x2033f8eda9b24de2ull }}, {{ 0x49c63f82adfd65e9ull, 0x8114226839df4f95ull, 0x855039cbcf48eb70ull, 0xb302e0d7617afbd2ull, 0xdb7e53cba715c981ull, 0x4207b948a0f70ad8ull }}, {{ 0xe1be7b1acbe5fb1eull, 0x0ac9581242b91bd4ull, 0x352241f618d93265ull, 0xfe1cc869cecdd639ull, 0x92ef45f486d9df10ull, 0x944d3cd649a66c78ull }}, {{ 0xd170cf0bf6fbcf2full, 0x6bdd70b69b3b1650ull, 0x1356939cf87bf7f2ull, 0xed1fd422140a5e3cull, 0xbd58bb8d4482b6a9ull, 0xcb04605ee0803cb5ull }}, {{ 0x2e681677a5d617d7ull, 0x36a66722104edf28ull, 0xc161c421b4d7af78ull, 0x433e4954c867ae58ull, 0x65775384ad1b22a3ull, 0xee2bc3b4c5025f19ull }}, {{ 0xd010e0ac7a5cee6aull, 0x22800754a314b791ull, 0x8dd1a951106cdab2ull, 0xa06edd4fd40ccf77ull, 0xf6a9432ec30f5a60ull, 0x4db5a50fb217b6fdull }}, {{ 0x20a8c6bcc7a15020ull, 0x5900494e5ecf2bb2ull, 0x8a309d2aa4408af5ull, 0x4454a51e48801aabull, 0xa29c9fd39e9987c6ull, 0x0918729cf4ed25ebull }}, {{ 0x4697c35fcc4d2141ull, 0x7a02dd0fb417b4f5ull, 0x65e623aa6a856d95ull, 0xab4e732ed5010ab3ull, 0x5a1e3e4431ff4dbeull, 0x5af47a2191437b34ull }}, {{ 0xc1eda1bdfb034c8bull, 0xc41ca29d08ed1194ull, 0xfafd64a8293647d6ull, 0xb1107fd4520a6b01ull, 0x852e6ea9f3f90972ull, 0x8d8cc54faca2d00bull }}, {{ 0x9348516bce20fd6cull, 0xa91e5a225942afcfull, 0xcde5ee919c1ece63ull, 0xeaa4fe4b34682e13ull, 0x33d052a387ba5e7aull, 0x877fb51cbe5c2073ull }}, {{ 0xc0d32e360d49e63aull, 0x9b2f85577c9ade1bull, 0x0afb51b019340fe4ull, 0x2a71eef00c11ccc6ull, 0x06233a634d47b0cdull, 0x4afd131f6f994480ull }}, {{ 0x883fce1c84e2fe41ull, 0x0fdb356ade0cad15ull, 0x6dd130e0fc089eeeull, 0xa873556078b1ffbcull, 0x3d6047e104cce803ull, 0xede2bf3a5bfcad00ull }}, {{ 0x527e0d1d30ddee8aull, 0x9e90162cac7ec2d7ull, 0x4a2be8c9d856354cull, 0x948155c4b6f3fd5cull, 0x65c2ceca30011024ull, 0x4adb784797dec202ull }}, {{ 0x38ec8323e8ab5160ull, 0x31a0ddbebcf39c69ull, 0xe5b717e2735e14feull, 0xcd0d59af2587e59aull, 0xf99c13e5e00aa16dull, 0xec92b2cbeeb39417ull }}, {{ 0x393d1f6716b12dbcull, 0xf048a97361841c1cull, 0xf926eed881acd1edull, 0x028580d7774ef80cull, 0xc018c6fac06a4e4aull, 0x3dbafbf75303c8efull }}, {{ 0x3c633a06e2ebc957ull, 0x62d69e81cf29191aull, 0xbb85547510c0334bull, 0x1937086aa915b081ull, 0x80f7c5cb84270ee4ull, 0x694dd7a93e25d95dull }}, {{ 0x5be04444dd35dd63ull, 0xdc623112179afb06ull, 0x53354c92a78200f1ull, 0xfc26542a9ad8e511ull, 0x09adb9f3298694e8ull, 0x1d0a6c9c6d7a7da7ull }}, {{ 0x96c2aab0a41aa5ddull, 0x9bd5eab4ec0dce3full, 0x4014fdba8b140972ull, 0xd97f49aa0c78f2adull, 0x60c9437f9f41d119ull, 0x22683e1c46c8e886ull }}, {{ 0xe39aaae6690a7aa3ull, 0x165b2b11388a0e7bull, 0x80d1e9496ec85e7aull, 0x7ef8e0a47cb97ac4ull, 0xc7dca2fc38922b02ull, 0x58126d1ac3d9153full }}, {{ 0xe40aad001a68ca60ull, 0xdf8faeac356490d6ull, 0x08331cde53d3b0c4ull, 0xf5b8c66cdf3ecbadull, 0xce9e5dda35b5ae18ull, 0x70b8430ba67ad47dull }}, {{ 0xe86ac2010817e7c5ull, 0xbb9cd2ba15eda864ull, 0x51ff20af4644e7b0ull, 0x9937c040b873f4c2ull, 0x122faa861918ccf9ull, 0x67329e7480cc4ceaull }}, {{ 0x142b940a50ef0dafull, 0x54203b44db4893f1ull, 0x33f746d8beb10ce7ull, 0xfc2d828734878f97ull, 0xb5dca93cfaf801bfull, 0x07fa308d07fb0124ull }}, {{ 0xc9b3c867295688d8ull, 0x494250b090d5c76aull, 0x07a8c47772ea8109ull, 0xd9c719480d4b9be8ull, 0x1a9e9c61cdb0117full, 0x4fc5e5824fce0b6full }}, {{ 0xe105d4079d61586dull, 0xdc9726e5a859ca2bull, 0x4c97acaa7d290a5cull, 0x81c6fcd084f41710ull, 0x0a321bd208e0aefeull, 0x1dbaf7171e0c7257ull }}, {{ 0xca3a484c25cd7441ull, 0x9de784f89381e5b6ull, 0xfdecbea8e39a67a0ull, 0x11c5e0253188e6a2ull, 0x65f5163458c6d5f1ull, 0x294da6e72c7c7766ull }}, {{ 0xe646d2f97a068a87ull, 0x2b0b31b5c312f923ull, 0xeb3f7298e4080c46ull, 0xb1bac173ef59025dull, 0xfb92de0b77c45b6aull, 0x9d088507bcdca9ffull }}, {{ 0xfec43dbec441694aull, 0xae6ff1199ebdbb66ull, 0x307a79f8e8507abdull, 0xf14b8e87597a17abull, 0xd3bcac72adab922aull, 0x2255324d609ea3ffull }}, {{ 0xf3aa6973aa8e1cdfull, 0xd05f6b0033695205ull, 0xe4c8c3b91324cb68ull, 0x6cf391497ec4ecafull, 0x455ebc7ac8b3b5adull, 0x5753f705c63267feull }}, {{ 0x84a81e84a98d20b9ull, 0x23ba2e02021d343bull, 0xefd7a53abf6ff218ull, 0x4183acdef3b13edeull, 0xb5b35ccbd70518c6ull, 0x6947a639bdf80feeull }}, {{ 0x2e91312e9f83473bull, 0x6545cc1415240a53ull, 0x5e6c744b7a5f74f1ull, 0x8f24c0b584ec74b5ull, 0x19019ff66632f7beull, 0x1ccc7e416bb09f53ull }}, {{ 0xd1abebd23b20c851ull, 0xf4b9f8c8d368673full, 0xb03c8af2c7ba916dull, 0x976f8717313c8f15ull, 0xfa103f9ffdfdad71ull, 0x1ffcee8e34e6393eull }}, {{ 0x30b736364f47d32bull, 0x8f43b7d84214087eull, 0xe25d6d7bcd49ae4bull, 0xea5b46e7ec5d96d8ull, 0xc4a27c3febe8c66full, 0x3fe1518e10fe3c75ull }}, {{ 0xe7281e1f18ce3faeull, 0x98a52e7294c854edull, 0xd7a646d604e0cef3ull, 0x2790c50f3ba7e478ull, 0xae58da7f3717c05full, 0x7ecd2f8ca9ee5c99ull }}, {{ 0x07912d36f80e7cceull, 0xf673d079cfd3514bull, 0x6c7ec45c30c81583ull, 0x8ba7b298548eecb8ull, 0xcf7888f826ed83b7ull, 0xf403db7ea34f9e00ull }}, {{ 0x4babc425b090e00dull, 0xa08624c21e412ceeull, 0x3cf3ab99e7d0d727ull, 0x748cf9f34d953f34ull, 0x1ab559b18547252bull, 0x882692f2611c2c08ull }}, {{ 0xf4b5a978e5a8c07dull, 0x453d6f952e8bc14eull, 0x6184b4030e28678cull, 0x8d81c38107d4780aull, 0x0b1580ef34c773b2ull, 0x5181bd77cb19b851ull }}, {{ 0x8f189eb8f89784e4ull, 0xb4665bd3d1758d15ull, 0xcf2f081e8d940b7aull, 0x8711a30a4e4cb067ull, 0x6ed709580fca84f9ull, 0x2f1166adef01332aull }}, {{ 0x96f63339b5eb30e9ull, 0x0bff96462e9782d7ull, 0x17d6513187c872cbull, 0x46b05e670efee40eull, 0x54665d709de931bfull, 0xd6ae02cb560bffa8ull }}, {{ 0xe59e00411b2fe91aull, 0x77fbdebdd1eb1c6bull, 0xee5f2bef4dd47beeull, 0xc2e3b00695f4e88cull, 0x4bffa6662b1bf178ull, 0x62cc1bf15c77fc93ull }}, {{ 0xf82c028b0fdf1b07ull, 0xafd6b36a332f1c36ull, 0x4fb7b7590a4cd750ull, 0x9ce4e041db911581ull, 0xf7fc7ffdaf176eb7ull, 0xdbf9176d9cafddc0ull }}, {{ 0xb1b8196e9eb70e45ull, 0xde630225ffd71a25ull, 0x1d2d297a67006926ull, 0x20f0c29293aad70dull, 0xafdcffe8d6ea532cull, 0x97baea481edea989ull }}, {{ 0xf130fe5233268eb7ull, 0xafde157bfe670578ull, 0x23c39ec806041b84ull, 0x496799b9c4ac6683ull, 0xdea1ff1865273fb9ull, 0xed4d26d134b29f60ull }}, {{ 0x6be9ef35ff819324ull, 0xdeacd6d7f00636b9ull, 0x65a433d03c29132eull, 0xde0c0141aebc011full, 0xb253f6f3f3887d3cull, 0x4503842c0efa39c8ull }}, {{ 0x3723581bfb0fbf6aull, 0xb2c0646f603e233eull, 0xf86a0622599abfd4ull, 0xac780c90d3580b39ull, 0xf747a5878354e460ull, 0xb22329b895c641d6ull }}, {{ 0x27617117ce9d7a21ull, 0xfb83ec59c26d606eull, 0xb4243d57800b7e4eull, 0xbcb07da841707043ull, 0xa8cc774b2150ebc6ull, 0xf55fa135d9be9265ull }}, {{ 0x89ce6aee1226c549ull, 0xd3273b819845c44dull, 0x096a656b0072ef15ull, 0x5ee4e8928e6462a5ull, 0x97fca8ef4d2935c3ull, 0x95bc4c1a8171b7f8ull }}, {{ 0x62102d4cb583b4daull, 0x3f88530ff2b9ab07ull, 0x5e27f62e047d56daull, 0xb4f115b98febda72ull, 0xefde9959039c19a1ull, 0xd95af9090e712fb5ull }}, {{ 0xd4a1c4ff17251083ull, 0x7b533e9f7b40ae49ull, 0xad8f9dcc2ce56486ull, 0x116ad93f9f368877ull, 0x5eb1fd7a24190051ull, 0x7d8dba5a906bdd1bull }}, {{ 0x4e51b1f6e772a521ull, 0xd140723ad086cee2ull, 0xc79c29f9c0f5ed40ull, 0xae2c7c7c382154acull, 0xb2f3e6c568fa032aull, 0xe7894789a436a311ull }}, {{ 0x0f30f3a50a7a734dull, 0x2c84764c254414d7ull, 0xcc19a3c1899b4488ull, 0xcdbcdcda314d4ebfull, 0xfd8703b619c41faaull, 0x0b5ccb606a225eb0ull }}, {{ 0x97e9847268c88104ull, 0xbd2c9ef974a8d066ull, 0xf900658f6010ad51ull, 0x0960a085ed05137dull, 0xe746251d01a93cacull, 0x719ff1c42557b2e9ull }}, {{ 0xef1f2c7817d50a25ull, 0x63be35be8e982401ull, 0xba03f799c0a6c531ull, 0x5dc6453b4232c2ebull, 0x08bd7322109c5eb8ull, 0x703f71a9756cfd23ull }}, {{ 0x5737bcb0ee526574ull, 0xe56e197191f16813ull, 0x4427ac018683b3edull, 0xa9beb45095fb9d35ull, 0x57667f54a61bb333ull, 0x627a709e9641e35eull }}, {{ 0x682d5ee94f37f689ull, 0xf64cfe6fb36e10c1ull, 0xa98cb80f4125074aull, 0xa1730b25dbd42414ull, 0x6a00f94e7d150004ull, 0xd8c86631de92e1afull }}, {{ 0x11c5b51d182fa15bull, 0x9f01f05d024ca78eull, 0x9f7f30988b7248edull, 0x4e7e6f7a964968ceull, 0x2409bd10e2d2002eull, 0x77d3fdf2b1bcd0daull }}, {{ 0xb1b91322f1dc4d8aull, 0x361363a216fe8b8cull, 0x3af7e5f57276d948ull, 0x10f05ac9dede1812ull, 0x686162a8dc3401cfull, 0xae47eb7af1602885ull }}, {{ 0xf13abf5d729b0761ull, 0x1cc1e454e5f1737eull, 0x4daefb9678a47cd2ull, 0xa9638be2b4acf0b6ull, 0x13cdda989a081216ull, 0xcecf32cd6dc19536ull }}, {{ 0x6c4b79a67a0e49c7ull, 0x1f92eb50fb6e82f5ull, 0x08d5d3e0b66ce035ull, 0x9de376db0ec1671full, 0xc60a89f60450b4e2ull, 0x1417fc06498fd41cull }}, {{ 0x3af2c080c48ee1c9ull, 0x3bbd3129d2511d96ull, 0x585a46c72040c213ull, 0x2ae2a48e938e0736ull, 0xbc69639c2b2710daull, 0xc8efd83edf9e491full }}, {{ 0x4d7b8507ad94d1deull, 0x5563eba2372b27deull, 0x7386c3c7428794c0ull, 0xacda6d91c38c481full, 0x5c1de419af86a885ull, 0xd95e7274bc2edb3dull }}, {{ 0x06d3324cc7d032aeull, 0x55e7345627af8eafull, 0x8343a5c8994bcf83ull, 0xc08847b1a37ad13aull, 0x992ae900db429538ull, 0x7db0788f59d49065ull }}, {{ 0x443ff6ffce21fac8ull, 0x5b080b5d8cdb92d6ull, 0x20a479d5fcf61b21ull, 0x8552ccf062cc2c49ull, 0xfbad1a089099d437ull, 0xe8e4b599824da3f7ull }}, {{ 0xaa7fa5fe0d53cbd1ull, 0x8e5071a78093bc5eull, 0x466cc25be19d0f4dull, 0x353c0163dbf9badbull, 0xd4c30455a6024a2bull, 0x18ef17ff170867afull }}, {{ 0xa8fc7bec8545f62full, 0x8f24708b05c55bb2ull, 0xc03f9796d0229907ull, 0x14580de697c14c90ull, 0x4f9e2b587c16e5b0ull, 0xf956eff6e6540cdeull }}, {{ 0x99dcd73d34bb9dd4ull, 0x976c656e39b594faull, 0x827bebe42159fa4bull, 0xcb708b01ed8cfda7ull, 0x1c2db174d8e4f8e0ull, 0xbd655fa4ff4880afull }}, {{ 0x02a068640f542a4cull, 0xea3bf64e4117d1caull, 0x18d736e94d83c6f3ull, 0xf2656e134781e88bull, 0x19c8ee9078f1b8c7ull, 0x65f5bc71f8d506d7ull }}, {{ 0x1a4413e89949a6fcull, 0x26579f0e8aee31e4ull, 0xf868251d0725c587ull, 0x77f64cc0cb13156eull, 0x01d951a4b97137cfull, 0xfb995c73b8524467ull }}, {{ 0x06a8c715fce085d7ull, 0x7f6c36916d4df2e9ull, 0xb41173224779b747ull, 0xaf9eff87eebed655ull, 0x127d306f3e6c2e1aull, 0xd3fd9c853336ac06ull }}, {{ 0x4297c6dbe0c53a6bull, 0xfa3a21ae450b7d1aull, 0x08ae7f56cac128caull, 0xdc35fb4f53745f59ull, 0xb8e3e4587039cd0aull, 0x47e81d340022b83cull }}, {{ 0x99edc496c7b44829ull, 0xc64550ceb272e306ull, 0x56d0f963eb8b97edull, 0x9a1bd119428bb97aull, 0x38e6eb746242026cull, 0xcf112408015b325full }}, {{ 0x0349ade3cd0ad19aull, 0xbeb52812f87cde42ull, 0x6429bde73373ef49ull, 0x05162afc99753ec7ull, 0x3905328bd694183eull, 0x16ab68500d8ff7b8ull }}, {{ 0x20e0cae6026c3008ull, 0x731390bdb4e0ae94ull, 0xe9a16b08028758e1ull, 0x32ddadddfe9473c9ull, 0x3a33f97661c8f26cull, 0xe2b21320879fad32ull }}, {{ 0x48c7ecfc1839e04cull, 0x7ec3a76910c6d1c9ull, 0x204e2e50194978ceull, 0xfca8caabf1cc85e3ull, 0x4607be9fd1d97839ull, 0xdaf4bf454c3cc3f6ull }}, {{ 0xd7cf41d8f242c2f8ull, 0xf3a48a1aa7c431dcull, 0x430dcf20fcdeb810ull, 0xde97eab771fd3adfull, 0xbc4d723e327eb243ull, 0x8d8f78b4fa5fa79eull }}, {{ 0x6e189279769b9dafull, 0x846d650a8da9f2a0ull, 0x9e8a1749e0b330a9ull, 0xb1ef2b2a73e44cb8ull, 0x5b06766df8f2f6a6ull, 0x879ab711c7bc8c33ull }}, {{ 0x4cf5b8bea21428d5ull, 0x2c45f26988a37a44ull, 0x3164e8e2c6ffe69full, 0xf357afa886eaff36ull, 0x8e40a04bb97da282ull, 0x4c0b26b1cd5d7a01ull }}, {{ 0x0199377254c9984dull, 0xbabb781f5662c6abull, 0xedf118dbc5ff0237ull, 0x816cdc95452df81dull, 0x8e8642f53ee8591dull, 0xf86f82f205a6c40full }}, {{ 0x0ffc2a774fdff304ull, 0x4b52b1395fdbc2aeull, 0x4b6af895bbf6162dull, 0x0e409dd4b3cbb12bull, 0x913e9d9475137b27ull, 0xb45b1d743883a89bull }}, {{ 0x9fd9a8a91ebf7e28ull, 0xf13aec3dbe959accull, 0xf22db5d9579cddc4ull, 0x8e862a4f05f4ebb0ull, 0xac7227cc92c2cf86ull, 0x0b8f268a35249613ull }}, {{ 0x3e80969b337aed8dull, 0x6c4d3a6971d80bfeull, 0x75c91a7d6c20a9b1ull, 0x913da7163b9134e9ull, 0xbc758dfdbb9c1b41ull, 0x73978166136ddcc4ull }}, {{ 0x7105e21002cd4783ull, 0x3b04481e727077eeull, 0x99db08e63946a0eeull, 0xac6886de53ac111eull, 0x5c978be95419108full, 0x83eb0dfcc24a9fafull }}, {{ 0x6a3ad4a01c04cb1aull, 0x4e2ad1307864af50ull, 0x028e58fe3cc2494eull, 0xbc1544af44b8ab32ull, 0x9deb771d48faa59cull, 0x272e8bdf96ea3cd9ull }}, {{ 0x264c4e41182fef08ull, 0x0dac2be4b3eed924ull, 0x198f79ee5f96dd0full, 0x58d4aed8af36aff4ull, 0x2b32a724d9ca781full, 0x87d176bbe5266080ull }}, {{ 0x7efb0e8af1df564cull, 0x88b9b6ef07547b69ull, 0xff9ac34fbbe4a296ull, 0x784ed476d822df88ull, 0xaffa877081e8b139ull, 0x4e2ea356f37fc501ull }}, {{ 0xf5ce916d72b95efaull, 0x57412556494cd21eull, 0xfc0ba11d56ee59e1ull, 0xb3144ca4715cbb59ull, 0xdfc94a651316ec3eull, 0x0dd2616582fdb210ull }}, {{ 0x9a11ae467b3db5c0ull, 0x688b755edd003535ull, 0xd8744b25654f82cdull, 0xfecafe6c6d9f5183ull, 0xbddce7f2bee53a72ull, 0x8a37cdf71de8f4a8ull }}, {{ 0x04b0cec0d0691984ull, 0x157295b4a2021418ull, 0x748aef75f51b1c06ull, 0xf3edf03c48392f26ull, 0x6aa10f7b74f4487dull, 0x662e0ba72b198e97ull }}, {{ 0x2ee81388241aff24ull, 0xd679d90e5414c8f0ull, 0x8d6d5a9b930f183cull, 0x874b625ad23bd780ull, 0x2a4a9ad2918ad4ebull, 0xfdcc7487aeff91eaull }}, {{ 0xd510c351690df76bull, 0x60c27a8f48cfd961ull, 0x86458a13be96f260ull, 0x48f1d78c36566b05ull, 0xa6ea0c39af6c5133ull, 0xe9fc8d4cd5fbb325ull }}, {{ 0x52a7a12e1a8baa29ull, 0xc798c998d81e7dd2ull, 0x3eb764c571e577c3ull, 0xd9726b7a1f602e37ull, 0x85247a40da3b2c00ull, 0x23dd85005bd4ff78ull }}, {{ 0x3a8c4bcd0974a59bull, 0xcbf7dff87130ea37ull, 0x7329efb672f6ada5ull, 0x7e7832c539c1ce28ull, 0x336cc688864fb808ull, 0x66a732039651fab5ull }}, {{ 0x497af6025e8e780bull, 0xf7aebfb46be92628ull, 0x7fa35d207da2c879ull, 0xf0b1fbb441920d94ull, 0x023fc1553f1d3054ull, 0x0287f423df33cb14ull }}, {{ 0xdecd9c17b190b06eull, 0xacd37d0c371b7d92ull, 0xfc61a344e85bd4c3ull, 0x66f3d50a8fb487ccull, 0x167d8d547723e351ull, 0x194f8966b805eec8ull }}, {{ 0xb40818ecefa6e447ull, 0xc042e27a2712e7bcull, 0xdbd060b113964fa4ull, 0x058652699d0d4e01ull, 0xe0e7854ca766e12eull, 0xfd1b5e03303b53d0ull }}, {{ 0x0850f9415c84eac9ull, 0x829cd8c586bd0d5full, 0x9623c6eac3df1c6full, 0x373f382022850c12ull, 0xc90b34fe8a04cbccull, 0xe311ac1fe2514628ull }}, {{ 0x5329bc8d9d312bddull, 0x1a2077b7436285b6ull, 0xdd65c52ba6b71c5bull, 0x28783141593278b9ull, 0xda7011f1642ff5faull, 0xdeb0b93ed72cbd97ull }}, {{ 0x3fa15d8823ebb6a0ull, 0x0544ad28a1d9391full, 0xa5f9b3b483271b8full, 0x94b1ec8d7bf8b742ull, 0x8860b36de9df9bc5ull, 0xb2e73c7467bf67eeull }}, {{ 0x7c4da7516735223dull, 0x34aec396527c3b38ull, 0x7bc1050d1f871396ull, 0xcef33d86d7b7289aull, 0x53c7024b22bc15b7ull, 0xfd085c8c0d7a0f51ull }}, {{ 0xdb08892e0813565dull, 0x0ed3a3df38da5034ull, 0xd58a32833b46c3deull, 0x158067446d279608ull, 0x45c616ef5b58d92eull, 0xe2539d7886c4992dull }}, {{ 0x8e555bcc50c15fa4ull, 0x944466b838872210ull, 0x5765f92050c3a6acull, 0xd70408ac438bdc58ull, 0xb9bce55991787bccull, 0xd74426b543adfbc4ull }}, {{ 0x8f5595fb278dbc6aull, 0xcaac0332354754a5ull, 0x69fbbb4327a482bdull, 0x662856baa3769b73ull, 0x4160f57faeb4d600ull, 0x68a98314a4cbd5afull }}, {{ 0x9957dbcf8b895c28ull, 0xeab81ff614c94e77ull, 0x23d5509f8c6d1b69ull, 0xfd93634a62a21282ull, 0x8dc996fcd3105c03ull, 0x169f1ece6ff658d8ull }}, {{ 0xfd6e961b735d9995ull, 0x2b313f9ccfdd10abull, 0x6655263b7c431223ull, 0xe7c1e0e7da54b915ull, 0x89dfe5e03ea39827ull, 0xe23734105f9f7875ull }}, {{ 0xe651dd1281a7ffcfull, 0xafec7c201ea2a6b7ull, 0xff537e52da9eb55full, 0x0d92c90e874f3ad5ull, 0x62befac27263f18full, 0xd62808a3bc3ab497ull }}, {{ 0xff32a2b9108ffe17ull, 0xdf3cd941325a832eull, 0xf942ef3c8a3315bcull, 0x87bbda9149184c5bull, 0xdb75cb9877e76f96ull, 0x5d9056655a4b0de9ull }}, {{ 0xf7fa5b3aa59fece5ull, 0xb8607c8bf7891fd5ull, 0xbc9d585d65fed960ull, 0x4d5689acdaf2fb97ull, 0x9299f3f4af0a5be1ull, 0xa7a35ff586ee8b22ull }}, {{ 0xafc7904a783f40f5ull, 0x33c4dd77ab5b3e5bull, 0x5e2573a5fbf47dc7ull, 0x056160c08d7dd3edull, 0xba03878ed66796cdull, 0x8c61bf9745516f59ull }}, {{ 0xddcba2e8b278898dull, 0x05b0a6acb1906f94ull, 0xad76847bd78ce9c8ull, 0x35cdc78586ea4745ull, 0x44234b94600be402ull, 0x7bd17be8b52e5981ull }}, {{ 0xa9f45d16f8b55f85ull, 0x38e682beefa45bd0ull, 0xc6a12cd66b8121d0ull, 0x1a09cb374526c8b8ull, 0xa960f3cbc076e816ull, 0xd62ed71713cf7f0cull }}, {{ 0xa38ba2e5b715bb37ull, 0x39011b755c6b9626ull, 0xc24bc060330b5222ull, 0x0461f028b383d737ull, 0x9dc985f584a510ddull, 0x5dd466e6c61af67eull }}, {{ 0x63745cf926d95024ull, 0x3a0b12959c33dd82ull, 0x96f583c1fe713556ull, 0x2bd361970326682dull, 0x29df3b972e72a8a2ull, 0xaa4c0503bd0da0f2ull }}, {{ 0xe28ba1bb847d216cull, 0x446eb9d81a06a717ull, 0xe5972593f06c155eull, 0xb641cfe61f8011c7ull, 0xa2b853e7d07a9655ull, 0xa6f8322562884975ull }}, {{ 0xd97451532ce34e35ull, 0xac534271044286eeull, 0xf7e777c76438d5aeull, 0x1e921efd3b00b1ceull, 0x5b33470e24c9df59ull, 0x85b1f575d952de98ull }}, {{ 0x7e8b2d3fc0e10e14ull, 0xbb40986a2a994554ull, 0xaf0aadc9ea3858d2ull, 0x31b535e44e06f215ull, 0x9000c68d6fe2b97bull, 0x38f3969a7d3cb1f3ull }}, {{ 0xf16fc47d88ca8ccaull, 0x5085f425a9fcb54cull, 0xd66ac9e32633783bull, 0xf1141aeb0c4574d8ull, 0xa007c1865edb3ecfull, 0x3983e208e45ef383ull }}, {{ 0x6e5dace757e97fe6ull, 0x253b8978a3df1501ull, 0x602be2df7e02b251ull, 0x6ac90d2e7ab69078ull, 0x404d8f3fb490741full, 0x3f26d458ebb58324ull }}, {{ 0x4fa8c1096f1efefcull, 0x74535eb666b6d20eull, 0xc1b6dcbaec1af72bull, 0x2bda83d0cb21a4b3ull, 0x8307987d0da4893aull, 0x77844b7935171f6aull }}, {{ 0x1c978a5e5735f5d9ull, 0x8b41b3200324348full, 0x91249f4d390da7b2ull, 0xb6892627ef506f05ull, 0x1e4bf4e2886d5c45ull, 0xab2af2bc12e73a29ull }}, {{ 0x1deb67af681b9a7aull, 0x7090ff401f6a0d97ull, 0xab6e39043a888cf9ull, 0x215b7d8f59245637ull, 0x2ef790d954459ab9ull, 0xafad7b58bd08459bull }}, {{ 0x2b320cda111408c2ull, 0x65a9f8813a2487e7ull, 0xb24e3a2a495581beull, 0x4d92e7997b6b5e2cull, 0xd5aba87d4ab80b3bull, 0xdcc6d1776252b80full }}, {{ 0xaff48084aac85796ull, 0xf8a3b50c456d4f07ull, 0xf70e45a6dd57116full, 0x07bd0bfed231adbeull, 0x58b494e4eb307051ull, 0x9fc42ea9d73b309eull }}, {{ 0xdf8d052eabd36bdaull, 0xb665127ab645164cull, 0xa68eb884a566ae5full, 0x4d6277f435f0c975ull, 0x770dd0f12fe4632aull, 0x3da9d2a2684fe62full }}, {{ 0xbb8233d2b6423685ull, 0x1ff2b8cb1eb2df00ull, 0x8193352e7602cfbdull, 0x05d8af8a1b67de98ull, 0xa68a296bdeebdfa7ull, 0x68a23a58131efddaull }}, {{ 0x5316063b1e962136ull, 0x3f7b37ef32fcb607ull, 0x0fc013d09c1c1d63ull, 0x3a76db65120eb1f5ull, 0x81659e36b536bc86ull, 0x16564770bf35ea8aull }}, {{ 0x3edc3e4f31dd4c18ull, 0x7ad02f57fddf1c49ull, 0x9d80c626191925e0ull, 0x48a491f2b492f392ull, 0x0df82e2314235d3eull, 0xdf5eca67781b2969ull }}, {{ 0x749a6f17f2a4f8efull, 0xcc21d96feab71adcull, 0x2707bd7cfafb7ac4ull, 0xd66db37b0dbd83baull, 0x8bb1cd5ec961a46eull, 0xb9b3e80ab10f9e1aull }}, {{ 0x8e0856ef7a71b957ull, 0xf9527e5f2b270c9cull, 0x864d66e1cdd2cbafull, 0x604902ce89672545ull, 0x74f205b3ddd06c54ull, 0x4107106aea9c2d09ull }}, {{ 0x8c53655ac8713d61ull, 0xbd38efb7af867e1dull, 0x3f0604d20a3bf4dfull, 0xc2da1c115e0774b7ull, 0x91743906aa243b4bull, 0x8a46a42d2a19c25eull }}, {{ 0x7b41f58bd46c65cdull, 0x64395d2cdb40ed27ull, 0x763c3034665790bdull, 0x9c8518adac4a8f28ull, 0xae8a3a42a56a50f5ull, 0x66c269c3a50197b1ull }}, {{ 0xd09397764c3bfa05ull, 0xea3da3c09089438aull, 0x9e59e20bff6ba765ull, 0x1d32f6c8bae99794ull, 0xd166469a76272998ull, 0x039821a4720fecf0ull }}, {{ 0x25c3ea9efa57c433ull, 0x26686585a55ca36cull, 0x2f82d477fa3489fbull, 0x23fda3d74d1febceull, 0x2dfec2089d879ff1ull, 0x23f1506c749f4168ull }}, {{ 0x79a72a35c76da9ffull, 0x8013f738759e6239ull, 0xdb1c4cafc60d63cfull, 0x67e86669033f360dull, 0xcbf39456274c3f6bull, 0x676d243c8e388e11ull }}, {{ 0xc087a619ca48a3f6ull, 0x00c7a834982fd63eull, 0x8f1afeddbc85e61bull, 0x0f14001a20781c8aull, 0xf783cb5d88fa7a32ull, 0x0a436a5d8e358cb1ull }}, {{ 0x854c7d01e6d6679bull, 0x07cc920df1de5e73ull, 0x970df4a95d3afd0eull, 0x96c8010544b11d69ull, 0xab25f1a759c8c5f4ull, 0x66a227a78e177ef3ull }}, {{ 0x34fce21304600c0full, 0x4dfdb48b72afb083ull, 0xe68b8e9da44de28cull, 0xe3d00a34aeeb261full, 0xaf7b708981d7bb8dull, 0x02558c8b8ceaf584ull }}, {{ 0x11e0d4be2bc07898ull, 0x0be90d727adce520ull, 0x017392286b0ad97bull, 0xe620660ed52f7d3full, 0xdad2655f126d538aull, 0x17577d73812d972eull }}, {{ 0xb2c84f6db584b5f1ull, 0x771a8678cca0f340ull, 0x0e83b5942e6c7eceull, 0xfd43fc9453dae476ull, 0x8c37f5b6b845436cull, 0xe96ae6830bc7e7d4ull }}, {{ 0xfbd31a49172f1b6dull, 0xa70940b7fe498086ull, 0x912517c9d03cf410ull, 0xe4a7ddcb468cec9cull, 0x7a2f992332b4a241ull, 0x1e2d011e75cf0e4dull }}, {{ 0xd63f06dae7d71244ull, 0x865c872feedf0545ull, 0xab72ede2226188a6ull, 0xee8ea9f0c1813e1dull, 0xc5dbfb5ffb0e5692ull, 0x2dc20b309a168f06ull }}, {{ 0x5e76448d0e66b6abull, 0x3f9d47df54b634baull, 0xb27d4ad557cf5681ull, 0x5192a3678f0c6d28ull, 0xba97d1bfce8f61bdull, 0xc9946fe604e19643ull }}, {{ 0xb09ead82900322b3ull, 0x7c24ceb94f1e0f47ull, 0xf8e4ec556e19610cull, 0x2fba620b967c4396ull, 0x49ee317e1199d165ull, 0xdfcc5efc30cfdea5ull }}, {{ 0xe632c719a01f5afeull, 0xd970133d172c98ccull, 0xb8f13b564cfdca7cull, 0xdd47d473e0daa3e5ull, 0xe34deeecb0022df3ull, 0xbdfbb5d9e81eb274ull }}, {{ 0xfdfbc70041398de8ull, 0x7e60c062e7bdf800ull, 0x396c515f01e9e8e0ull, 0xa4ce4c86c88a66f9ull, 0xe10b553ee015cb86ull, 0x6bd51a831132f890ull }}, {{ 0xebd5c6028c3f8b0bull, 0xefc783dd0d6bb009ull, 0x3e3b2db6132318c4ull, 0x700efd43d56805bcull, 0xca715474c0d9f342ull, 0x3653091eabfdb5a8ull }}, {{ 0x3659bc197a7b6e70ull, 0x5dcb26a28634e063ull, 0x6e4fc91cbf5ef7b1ull, 0x6095e4a65610395aull, 0xe86d4c8f88838098ull, 0x1f3e5b32b7e91897ull }}, {{ 0x1f8158fec8d25063ull, 0xa9ef82593e10c3e0ull, 0x4f1ddb1f79b5acedull, 0xc5daee7f5ca23d88ull, 0x1444fd9b552305f3ull, 0x386f8ffb2f1af5efull }}, {{ 0x3b0d79f3d83723deull, 0xa35b177c6ca7a6c1ull, 0x172a8f3ac118c148ull, 0xba8d50f99e566753ull, 0xcab1e811535e3b85ull, 0x345b9fcfd70d9b56ull }}, {{ 0x4e86c386722766aaull, 0x618eeadc3e8c838cull, 0xe7a9984b8af78cd6ull, 0x498529c02f60093eull, 0xeaf310ad41ae5339ull, 0x0b943e1e66881163ull }}, {{ 0x1143a340758a02a2ull, 0xcf952c9a717d237bull, 0x0c9ff2f36dab805full, 0xdf33a181d9c05c75ull, 0x2d7ea6c490cf403cull, 0x73ca6d300150ade7ull }}, {{ 0xaca4608497641a55ull, 0x1bd3be086ee362ceull, 0x7e3f7d8248b303beull, 0xb8044f1281839c92ull, 0xc6f283ada8188260ull, 0x85e843e00d26cb07ull }}, {{ 0xbe6bc52de9e90756ull, 0x16456c5454e1dc12ull, 0xee7ae716d6fe256dull, 0x302b16b90f241db8ull, 0xc57924c890f517c7ull, 0x3b12a6c08383ee4dull }}, {{ 0x7035b3cb231a495cull, 0xdeb63b4b50d298bbull, 0x50cd06e465ed7642ull, 0xe1aee33a97692939ull, 0xb6bb6fd5a992edc7ull, 0x4eba838523274f09ull }}, {{ 0x621905ef5f06dd99ull, 0xb31e50f12839f752ull, 0x280244ebfb469e9cull, 0xd0d4e049ea1b9c3dull, 0x23525e589fbd49ceull, 0x134923335f891661ull }}, {{ 0xd4fa3b59b644a7ffull, 0xff2f296b9243a937ull, 0x9016b137d0c2321eull, 0x2850c2e325141a63ull, 0x6137af763d64e214ull, 0xc0db6001bb5adfcbull }}, {{ 0x51c651811eae8ff2ull, 0xf7d79e33b6a49c2eull, 0xa0e2ec2e2795f535ull, 0x93279cdf72c907e3ull, 0xcc2cda9e65f0d4c9ull, 0x8891c011518cbdf1ull }}, {{ 0x31bf2f0b32d19f77ull, 0xae6c2e05226e19cfull, 0x48dd39cd8bdb941bull, 0xbf8c20ba7bda4ee4ull, 0xf9c08a2ffb684fdfull, 0x55b180ad2f7f6b71ull }}, {{ 0xf177d66ffc303aa6ull, 0xd039cc33584d0217ull, 0xd8a442077693c914ull, 0x7b794748d68714eaull, 0xc18565dfd2131ebdull, 0x58ef06c3dafa3273ull }}, {{ 0x6eae605fd9e24a78ull, 0x2241fa01730214efull, 0x766a944aa1c5dad0ull, 0xd2bcc8d86146d12cull, 0x8f35fabe34bf3366ull, 0x795643a68dc5f885ull }}, {{ 0x52cfc3be82d6e8b1ull, 0x5693c40e7e14d15aull, 0xa029caea51ba8c21ull, 0x3b5fd873ccc42bbcull, 0x981bcb6e0f780204ull, 0xbd5ea48189bbb537ull }}, {{ 0x3c1da5711c6516e7ull, 0x61c5a890ecd02d87ull, 0x41a1ed273149794dull, 0x51be7485ffa9b55eull, 0xf115f24c9ab0142aull, 0x65b26d0f6155142bull }}, {{ 0x5928766b1bf2e506ull, 0xd1b895a94021c748ull, 0x90534387ecdebd05ull, 0x31708d3bfca115aeull, 0x6adb76fe0ae0c9a7ull, 0xf8f84299cd52c9b7ull }}, {{ 0x7b94a02f177cf23cull, 0x3135d89c8151c8d3ull, 0xa340a34f40b3623aull, 0xee658457de4ad8d1ull, 0x2c92a5ec6cc7e087ull, 0xb9b29a02053be12aull }}, {{ 0xd3ce41d6eae1765bull, 0xec1a761d0d31d842ull, 0x608661188701d645ull, 0x4ff72b6eaeec7830ull, 0xbdba7b3c3fcec54full, 0x40fa04143456cba5ull }}, {{ 0x460e92652cce9f93ull, 0x39089d2283f2729cull, 0xc53fcaf546125ebbull, 0x1fa7b252d53cb1e3ull, 0x6948d05a7e13b519ull, 0x89c428ca0b63f479ull }}, {{ 0xbc91b7f3c0123bb9ull, 0x3a56235927787a1aull, 0xb47ded94bcb7b350ull, 0x3c8cf73c545ef2e5ull, 0x1cd82388ecc512fbull, 0x61a997e471e78cbeull }}, {{ 0x5db12f8580b6553cull, 0x475d617b8ab4c50bull, 0x0ceb47cf5f2d0122ull, 0x5d81a85b4bb57cf9ull, 0x207163593fb2bdd0ull, 0xd09feeec730b7f6dull }}, {{ 0xa8ebdb37071f545cull, 0xc9a5ced36b0fb271ull, 0x8130ce19b7c20b56ull, 0xa7109390f516e1baull, 0x446de17c7cfb6a23ull, 0x263f553c7e72fa43ull }}, {{ 0x9936902647394b95ull, 0xe07a14422e9cf870ull, 0x0be80d012d947163ull, 0x86a5c3a992e4d149ull, 0xac4acedce1d22564ull, 0x7e79545cf07dc6a0ull }}, {{ 0xfc21a17ec83cf3ceull, 0xc4c4ca95d221b465ull, 0x7710820bc7cc6de6ull, 0x4279a49fbcf02cdaull, 0xbaec14a0d23575edull, 0xf0bd4ba164e9c246ull }}, {{ 0xd9504ef3d2618610ull, 0xafafe9da35510bfbull, 0xa6a51475cdfc4b03ull, 0x98c06e3d6161c088ull, 0x4d38ce4836169b44ull, 0x6764f44df12196c3ull }}, {{ 0x7d23158637cf3c9cull, 0xdcdf2286152a77d6ull, 0x8272cc9a0bdaee24ull, 0xf7844e65cdd18556ull, 0x04380ed21ce210adull, 0x09f18b0b6b4fe3a1ull }}, {{ 0xe35ed73e2e185e14ull, 0xa0b7593cd3a8ae60ull, 0x187bfe04768d4d70ull, 0xab2b0ffa0a2f3561ull, 0x2a30943520d4a6cbull, 0x636f6e72311ee44aull }}, {{ 0xe1b4686dccf3acc9ull, 0x47297c604496cfc8ull, 0xf4d7ec2ca1850666ull, 0xafae9fc465d815caull, 0xa5e5ca13484e83f4ull, 0xe25a5075eb34eae5ull }}, {{ 0xd10c144a0184bfd7ull, 0xc79edbc2ade41dd8ull, 0x906f39be4f323ffeull, 0xdcd23dabfa70d9edull, 0x7af9e4c0d311278eull, 0xd787249b30112cf8ull }}, {{ 0x2a78cae40f2f7e69ull, 0xcc34959acae92a78ull, 0xa458416f17f67ff3ull, 0xa03668b7c8688347ull, 0xcdc2ef883eab8b94ull, 0x6b476e0fe0abc1b4ull }}, {{ 0xa8b7ece897daf01eull, 0xfa0dd80bed1ba8b1ull, 0x6b728e56efa0ff85ull, 0x4220172dd41520ccull, 0x099d5b5272b373ceull, 0x30ca4c9ec6b59110ull }}, {{ 0x972f4115ee8d612eull, 0xc48a7077431496f0ull, 0x32798f655c49fb3bull, 0x9540e7ca48d347fcull, 0x602591387b02860eull, 0xe7e6fe33c317aaa0ull }}, {{ 0xe7d88adb5185cbcfull, 0xad6864a89ecde565ull, 0xf8bf99f59ae3d055ull, 0xd4890de6d840cfd9ull, 0xc177ac34ce193c91ull, 0x0f05ee059eecaa43ull }}, {{ 0x0e756c912f39f613ull, 0xc613ee96340af5fbull, 0xb77c03980ce62358ull, 0x4d5a8b0472881e83ull, 0x8eacba100cfc5db2ull, 0x963b4c38353ea6a5ull }}, {{ 0x90963dabd8439cbaull, 0xbcc751de086d9bceull, 0x2ad823f080fd6177ull, 0x05896e2c79513125ull, 0x92bf44a081dba8f7ull, 0xde50fa3214728277ull }}, {{ 0xa5de68b672a41f45ull, 0x5fc932ac54481611ull, 0xac71676509e5ceadull, 0x375e4dbcbd2beb73ull, 0xbb78ae45129499a6ull, 0xaf29c5f4cc7918abull }}, {{ 0x7ab017207a6938b3ull, 0xbddbfabb4ad0dcb0ull, 0xbc6e09f262fa12c5ull, 0x29af095f63b73284ull, 0x52b6ceb2b9ce007eull, 0xd7a1bb8ffcbaf6b5ull }}, {{ 0xcae0e744c81c3702ull, 0x6a97cb50ec289ee4ull, 0x5c4c6377ddc4bbb9ull, 0xa0d65db9e527f92full, 0x3b2412fb420c04edull, 0x6c51539fdf4da315ull }}, {{ 0xecc908afd11a2616ull, 0x29edf129399634efull, 0x9afbe2aea9af553eull, 0x485fa942f38fbbd9ull, 0x4f68bdd094783148ull, 0x3b2d443eb9085ed4ull }}, {{ 0x3fda56de2b057cdbull, 0xa34b6b9c3fde115full, 0x0dd6dad2a0d9546dull, 0xd3bc9c9d839d5680ull, 0x1a176a25ccb1ecd2ull, 0x4fc4aa733a53b44bull }}, {{ 0x7e8764adae36e092ull, 0x60f2341a7eacadb8ull, 0x8a648c3a487d4c48ull, 0x455e1e2724256100ull, 0x04ea2579fef3403cull, 0x1daea88047450aefull }}, {{ 0xf149eec8ce24c5b2ull, 0xc9760908f2bec934ull, 0x67ed7a46d4e4fad3ull, 0xb5ad2d876975ca05ull, 0x312576c3f580825aull, 0x28d29502c8b26d56ull }}, {{ 0x6ce353d80d6fb8f0ull, 0xde9c5a597b73dc11ull, 0x0f46c6c450f1cc45ull, 0x18c3c74a1e99e436ull, 0xeb76a3a79705178bull, 0x9839d21bd6f8455dull }}, {{ 0x40e14670865d3961ull, 0xb21b877ed28698aeull, 0x98c3c3ab2971fabaull, 0xf7a5c8e53202ea1cull, 0x32a2648be632eb6eull, 0xf242351665b2b5abull }}, {{ 0x88ccc0653fa43dc9ull, 0xf5134af43941f6ceull, 0xf7a5a4af9e73cb4aull, 0xac79d8f3f41d251dull, 0xfa57ed76fdfd3255ull, 0x769612dff8fb18afull }}, {{ 0x57ff83f47c6a69ddull, 0x92c0ed8a3c93a411ull, 0xac786edc3085f0edull, 0xbcc279878923732bull, 0xc76f46a5ebe3f758ull, 0xa1dcbcbfb9cef6dfull }}, {{ 0x6ffb278cdc2822a6ull, 0xbb8947665dc468adull, 0xbcb45499e53b6947ull, 0x5f98bf4b5b627fb4ull, 0xca58c27b36e7a977ull, 0x529f5f7d4215a4bdull }}, {{ 0x5fcf8b8099915a7full, 0x535cc9ffa9ac16c6ull, 0x5f0b4e02f4521ccdull, 0xbbf778f191d8fd0full, 0xe77798d0250c9ea9ull, 0x3a39bae494d86f69ull }}, {{ 0xbe1b7305ffad88faull, 0x419fe3fca0b8e3bfull, 0xb6710c1d8b352005ull, 0x57aab96fb279e299ull, 0x0aabf821727e32a1ull, 0x46414cedd0745a23ull }}, {{ 0x6d127e3bfcc759c4ull, 0x903ee7de4738e57dull, 0x206a792770134034ull, 0x6cab3e5cf8c2da01ull, 0x6ab7b14e78edfa4dull, 0xbe8d014a248b855eull }}, {{ 0x42b8ee57dfc981a5ull, 0xa2750eaec838f6e6ull, 0x4428bb8a60c0820dull, 0x3eb06fa1b79c840bull, 0x2b2ced10b94bc706ull, 0x71820ce56d7335b0ull }}, {{ 0x9b394f6ebddf1071ull, 0x589292d3d239a4feull, 0xa9975367c7851488ull, 0x72e45c512c1d2870ull, 0xafc142a73cf5c63eull, 0x6f1480f6468018e1ull }}, {{ 0x103d1a536ab6a468ull, 0x75b9bc46364071f2ull, 0x9fe9420dcb32cd53ull, 0x7ceb9b2bb9239466ull, 0xdd8c9a886199be70ull, 0x56cd099ec100f8d0ull }}, {{ 0xa26307422b226c13ull, 0x99415abe1e847374ull, 0x3f1c9489effc0542ull, 0xe1340fb53b63cc02ull, 0xa77e0953d0017064ull, 0x640260338a09b828ull }}, {{ 0x57de4895af5838bcull, 0xfc8d8b6d312c828eull, 0x771dcd635fd83499ull, 0xcc089d1451e5f816ull, 0x8aec5d46200e63f0ull, 0xe817c20364613196ull }}, {{ 0x6eaed5d8d972375bull, 0xdd877243ebbd198full, 0xa72a05e1be720e03ull, 0xf85622cb32fbb0e0ull, 0x6d3ba4bd408fe767ull, 0x10ed9421ebcbefe1ull }}, {{ 0x52d45a787e76298eull, 0xa74a76a73562ff9aull, 0x87a43ad170748c26ull, 0xb35d5beffdd4e8c6ull, 0x44546f64859f0a0full, 0xa947c95335f75eceull }}, {{ 0x3c4b88b4f09d9f8cull, 0x88e8a28815ddfc07ull, 0x4c6a4c2e648d7982ull, 0x01a5975fea5117c1ull, 0xab4c59ed3836649dull, 0x9ccddd401ba9b40eull }}, {{ 0x5af3571166283b79ull, 0x59165950daabd848ull, 0xfc26f9cfed86bf19ull, 0x1077e9bf272aed8cull, 0xb0fb8344321fee22ull, 0x200aa48114a10892ull }}, {{ 0x8d8166adfd9252bcull, 0x7adf7d288ab672d3ull, 0xd985c21f474376fdull, 0xa4af217787ad4781ull, 0xe9d320a9f53f4d54ull, 0x406a6d0ace4a55baull }}, {{ 0x870e02cbe7b73b55ull, 0xccbae3956b207c43ull, 0x7f399538c8a2a5e6ull, 0x6ed74eab4cc4cb12ull, 0x223f46a39479054eull, 0x8428426c0ee7594dull }}, {{ 0x468c1bf70d285152ull, 0xff4ce3d62f44daa3ull, 0xf83fd437d65a7b03ull, 0x546912b0ffafeeb8ull, 0x5678c263ccba3510ull, 0x2992983895097d03ull }}, {{ 0xc17917a683932d2full, 0xf900e65dd8b08a60ull, 0xb27e4a2e5f88ce27ull, 0x4c1abae9fcdf5339ull, 0x60b797e5ff4612a3ull, 0x9fb9f235d25ee221ull }}, {{ 0x8ebaec8123bfc3daull, 0xba08ffaa76e567c7ull, 0xf8eee5cfbb580d8full, 0xf90b4d23e0b94040ull, 0xc72beefbf8bcba60ull, 0x3d43761a37b4d54dull }}, {{ 0x934d3d0b657da683ull, 0x4459fca8a4f60dcbull, 0xb954fa1d5170879dull, 0xba710366c73c8289ull, 0xc7b755d7b75f47c9ull, 0x64a29d062d105509ull }}, {{ 0xc1046271f6e8811bull, 0xab83de96719c89f3ull, 0x3d51c5252e654c24ull, 0x486a2203c85d1961ull, 0xcd295a6d29b8cde1ull, 0xee5a223dc2a35261ull }}, {{ 0x8a2bd873a5150b13ull, 0xb326b1e0701d6385ull, 0x6531b373cff4f96eull, 0xd4255425d3a2fdccull, 0x039d8843a1380accull, 0x4f8556699a6137d2ull }}, {{ 0x65b6748472d26ebdull, 0xff82f2c46125e337ull, 0xf3f102861f91be52ull, 0x4975497a445de9fbull, 0x242752a44c306c00ull, 0x1b35602007cc2e34ull }}, {{ 0xf9208d2c7c38535eull, 0xfb1d7babcb7ae029ull, 0x876a193d3bb16f3dull, 0xde94dec6abab23d7ull, 0x69893a6af9e43802ull, 0x1015c1404df9ce09ull }}, {{ 0xbb4583bcda3341a9ull, 0xcf26d4b5f2ccc1a3ull, 0x4a24fc6454ee586bull, 0xb1d0b3c2b4af666bull, 0x1f5c482dc2ea301cull, 0xa0d98c830bc20c5eull }}, {{ 0x50b7256086009096ull, 0x17844f1b7bff9065ull, 0xe571dbeb514f7436ull, 0xf227059b0eda0030ull, 0x399ad1c99d25e11eull, 0x487f7d1e75947badull }}, {{ 0x272775c53c05a5dbull, 0xeb2b1712d7fba3f5ull, 0xf67297312d1a8a1cull, 0x7586380e948401e8ull, 0x400c31e0237acb35ull, 0xd4fae33097ccd4c4ull }}, {{ 0x878a99b458387a89ull, 0x2faee6bc6fd46793ull, 0xa079e7ebc3096521ull, 0x973e3091cd281319ull, 0x8079f2c162cbf016ull, 0x51ccdfe5ee004faaull }}, {{ 0x4b6a010b7234c95full, 0xdcd5035c5e4c0bc3ull, 0x44c30f359e5df34bull, 0xe86de5b20390bf00ull, 0x04c37b8ddbf760e1ull, 0x3200befb4c031ca9ull }}, {{ 0xf2240a72760fddb3ull, 0xa052219baef875a0ull, 0xaf9e98182fab80f6ull, 0x144af8f423a77602ull, 0x2fa2d38a97a9c8d3ull, 0xf40775d0f81f1e9aull }}, {{ 0x756868789c9ea8ffull, 0x43355014d5b49849ull, 0xdc31f0f1dcb309a2ull, 0xcaedb989648a9c1aull, 0xdc5c4369eca1d83eull, 0x884a9a29b1373205ull }}, {{ 0x961414b61e3299f2ull, 0xa01520d0590df2deull, 0x99f369729efe6056ull, 0xed493f5ded6a190cull, 0x9b9aa2233e527273ull, 0x52ea05a0ec27f43aull }}, {{ 0xdcc8cf1d2dfa0375ull, 0x40d348237a8b7cb1ull, 0x03821e7a35efc362ull, 0x44dc79ab4624fa7eull, 0x140a55606f387887ull, 0x3d243849398f8a4aull }}, {{ 0x9fd81723cbc42296ull, 0x8840d162c972def2ull, 0x231530c61b5da1d6ull, 0xb09cc0b0bd71c8ecull, 0xc86755c45834b548ull, 0x636a32dc3f9b66e4ull }}, {{ 0x3e70e765f5a959d7ull, 0x52882ddbde7cb57aull, 0x5ed3e7bd11a85261ull, 0xe61f86e76671d939ull, 0xd40959ab720f14d6ull, 0xe225fc9a7c1204efull }}, {{ 0x706909fb989d826bull, 0x3951ca96b0df16c6ull, 0xb4470d62b09337cdull, 0xfd3b450a00727c3dull, 0x485d80b27496d064ull, 0xd57bde08d8b4315eull }}, {{ 0x641a63d3f627182dull, 0x3d31e9e2e8b6e3c0ull, 0x0ac685dae5c02e04ull, 0xe450b2640478da69ull, 0xd3a706f88de423f1ull, 0x56d6ac587709edaeull }}, {{ 0xe907e6479d86f1c0ull, 0x63f322dd1724e583ull, 0x6bc13a8cf981cc2aull, 0xeb26f7e82cb8881aull, 0x448645b58ae96772ull, 0x6462bb74a66348d4ull }}, {{ 0x1a4efecc27457183ull, 0xe77f5ca2e770f727ull, 0x358c4981bf11f9a7ull, 0x2f85af11bf355108ull, 0xad3eb9176d1e0a7dull, 0xebdb528e7fe0d84aull }}, {{ 0x0715f3f988b66f1dull, 0x0af99e5d0a69a787ull, 0x177adf1176b3c08full, 0xdb38d6b178152a52ull, 0xc4733aea432c68e3ull, 0x36913990fec872eaull }}, {{ 0x46db87bf57205726ull, 0x6dc02fa268208b46ull, 0xeaccb6aea3058596ull, 0x903862eeb0d3a734ull, 0xac804d269fbc18e6ull, 0x21ac3fa9f3d47d2bull }}, {{ 0xc4934d7967436778ull, 0x4981dc58114570beull, 0x2bff22d25e3737e0ull, 0xa233dd52e8448811ull, 0xbd0303823d58f901ull, 0x50ba7ca3864ce3b4ull }}, {{ 0xadc106be08a20ab3ull, 0xdf129b70acb66773ull, 0xb7f75c37ae282ec2ull, 0x5606a53d12ad50abull, 0x621e23166579ba10ull, 0x2748de633f00e50full }}, {{ 0xc98a436c56546afcull, 0xb6ba1266bf200a84ull, 0x2fa99a2ccd91d39cull, 0x5c427462bac526b5ull, 0xd52d5edff6c144a3ull, 0x88d8afe07608f299ull }}, {{ 0xdf66a23b5f4c2dd4ull, 0x2344b8037740692full, 0xdca005c007b2441full, 0x9a988bdb4bb38313ull, 0x53c5b4bfa38cae61ull, 0x5876dec49c597a02ull }}, {{ 0xba025651b8f9ca48ull, 0x60af3022a8841bdeull, 0x9e4039804cf6a937ull, 0x09f57690f5031ec6ull, 0x45b90f7c637ecfd0ull, 0x74a4b3ae1b7ec417ull }}, {{ 0x44175f3139c1e6d2ull, 0xc6d7e15a952916b3ull, 0x2e823f0301a29c29ull, 0x6396a1a9921f33c2ull, 0xb93a9adbe2f41e20ull, 0x8e6f04cd12f3a8e8ull }}, {{ 0xa8e9b7ec41930431ull, 0xc46ecd89d39ae300ull, 0xd116761e105a19a1ull, 0xe3e2509fb5380595ull, 0x3c4a0c96dd892d43ull, 0x90563002bd849917ull }}, {{ 0x99212f3a8fbe29eeull, 0xac540762440cde06ull, 0x2ae09d2ca3850051ull, 0xe6d7263d143037daull, 0x5ae47de4a75bc4a6ull, 0xa35de01b672dfae8ull }}, {{ 0xfb4bd8499d6da347ull, 0xbb4849d6a880ac41ull, 0xacc623be63320330ull, 0x04677e62c9e22e85ull, 0x8ceceaee8995ae85ull, 0x61aac11207cbcd13ull }}, {{ 0xd0f672e0264860c6ull, 0x50d2e2629506ba93ull, 0xbfbd656fdff41fe7ull, 0x2c0aefdbe2d5d138ull, 0x81412d515fd8d132ull, 0xd0ab8ab44df602c3ull }}, {{ 0x29a07cc17ed3c7beull, 0x283cd7d9d24349c6ull, 0x7d65f65ebf893f09ull, 0xb86d5e96dc5a2c37ull, 0x0c8bc52dbe782bf5ull, 0x26b36b0b0b9c1ba3ull }}, {{ 0xa044df8ef445cd71ull, 0x92606e8236a0e1bdull, 0xe5fb9fb37b5c765bull, 0x3445b1e49b85ba2aull, 0x7d75b3c970b1b799ull, 0x83022e6e7419145eull }}, {{ 0x42b0bb958aba0666ull, 0xb7c451162248d168ull, 0xfbd43d02d19c9f93ull, 0x0ab8f2ee133945acull, 0xe69905de66f12bfcull, 0x1e15d05088facbb0ull }}, {{ 0x9ae753d76b443ffeull, 0x2dab2add56d82e12ull, 0xd64a621c301e3bc5ull, 0x6b397d4cc03cb8c1ull, 0x01fa3ab0056bb7d8ull, 0x2cda232559cbf4e9ull }}, {{ 0x0d09466a30aa7fe7ull, 0xc8afaca56471ccbaull, 0x5ee7d519e12e55b3ull, 0x303ee4ff825f3792ull, 0x13c64ae036352e74ull, 0xc0855f7581f7911aull }}, {{ 0x825cc025e6a8ff09ull, 0xd6dcbe75ec71ff44ull, 0xb50e5302cbcf5905ull, 0xe274f1fb17b82bb7ull, 0xc5beecc21e13d089ull, 0x8535ba9713abab04ull }}, {{ 0x179f817b0299f659ull, 0x649f709b3c73f8adull, 0x128f3e1bf6197a3aull, 0xd89173ceed31b52dull, 0xb9753f952cc62562ull, 0x341949e6c4b4ae2full }}, {{ 0xec3b0ece1a039f7full, 0xee3a66105c87b6c2ull, 0xb9986d179cfec647ull, 0x75ae861543f113c2ull, 0x3e947bd3bfbd75dcull, 0x08fce303af0ecdddull }}, {{ 0x3a4e940d04243af2ull, 0x4e47fca39d4d239dull, 0x3ff442ec21f3becfull, 0x98d13cd4a76ac59bull, 0x71ccd6457d669a9cull, 0x59e0de24d6940aa4ull }}, {{ 0x4711c882296a4d75ull, 0x0ecfde6425036424ull, 0x7f8a9d3953857419ull, 0xf82c604e8a2bb810ull, 0x72005eb6e6020a1dull, 0x82c8ad7061c86a6cull }}, {{ 0xc6b1d5159e270697ull, 0x941eafe97221e96aull, 0xfb6a243d433688faull, 0xb1bbc31165b530a4ull, 0x7403b324fc14652bull, 0x1bd6c663d1d4283cull }}, {{ 0xc2f252d82d8641e2ull, 0xc932df1e75531e2bull, 0xd2256a64a02159c9ull, 0xf1559eadf913e671ull, 0x8824ff71d8cbf3b4ull, 0x1663bfe63249925cull }}, {{ 0x9d773c71c73e92d3ull, 0xdbfcb730953f2db5ull, 0x357627ee414d81e1ull, 0x6d5832cbbac70072ull, 0x5171fa7277f78511ull, 0xdfe57efdf6dfb79dull }}, {{ 0x26a85c71c871bc40ull, 0x97df27e5d477c918ull, 0x169d8f4e8d0712d2ull, 0x4571fbf54bc60476ull, 0x2e73c878afab32aeull, 0xbef6f5eba4bd2c25ull }}, {{ 0x82939c71d4715a7full, 0xeeb78efa4caddaf1ull, 0xe22799118246bc39ull, 0xb673d794f5bc2c9cull, 0xd085d4b6dcaffaceull, 0x75a59b346f63b973ull }}, {{ 0x19c41c724c6d88fbull, 0x532b95c6feca8d6full, 0xd58bfaaf16c35a43ull, 0x20866bd19959be20ull, 0x253a4f249edfcc13ull, 0x9878100c59e53e86ull }}, {{ 0x01a91c76fc4759ceull, 0x3fb3d9c5f3e98657ull, 0x5777cad6e3a186a1ull, 0x4540362ffd816d48ull, 0x7447176e34bdf8bfull, 0xf4b0a07b82f4713dull }}, {{ 0x109b1ca5dac98208ull, 0x7d0681bb871f3f66ull, 0x6aadec64e44f424cull, 0xb4821ddfe70e44d3ull, 0x8ac6ea4e0f6bb778ull, 0x8ee644d31d8c6c66ull }}, {{ 0xa60f1e7a8bdf144bull, 0xe2411153473879fcull, 0x2acb3bf0eb1896fcull, 0x0d152abf068eb042ull, 0x6bc5270c9a352ab7ull, 0x94feb03f277c3c01ull }}, {{ 0x7c9730c976b6caefull, 0xd68aad40c834c3deull, 0xabf057692ef5e5e0ull, 0x82d3ab764192e295ull, 0x35b3867e0613ab26ull, 0xd1f2e2778ada580eull }}, {{ 0xdde7e7dea323ed56ull, 0x616ac487d20fa6b0ull, 0xb7636a1bd59afac8ull, 0x1c44b29e8fbcd9d8ull, 0x190340ec3cc4af81ull, 0x337cd8ab6c87708eull }}, {{ 0xab0f0eb25f67455full, 0xce2bad4e349c82e8ull, 0x29e22516580dcbd3ull, 0x1aaefa319d608277ull, 0xfa20893a5faedb0bull, 0x02e076b23d4a658cull }}, {{ 0xae9692f7ba08b5baull, 0x0db4c50e0e1d1d16ull, 0xa2d572df7089f646ull, 0x0ad5c5f025c518a7ull, 0xc5455c47bcd48e6full, 0x1cc4a2f664e7f781ull }}, {{ 0xd1e1bdad44571940ull, 0x890fb28c8d2322e2ull, 0x5c567cba65639ebcull, 0x6c59bb6179b2f68cull, 0xb4b59acd604d9056ull, 0x1fae5d9ff10fab11ull }}, {{ 0x32d168c4ab66fc7dull, 0x5a9cf97d835f5cdcull, 0x9b60df47f5e4335dull, 0x3b8151cec0fda17bull, 0x0f180c05c307a360ull, 0x3ccfa83f6a9caeb1ull }}, {{ 0xfc2e17aeb205dcdeull, 0x8a21bee721b9a099ull, 0x11c8b8cf9aea01a5ull, 0x530d321389e84ed4ull, 0x96f078399e4c61c2ull, 0x601c927a2a1ed2eaull }}, {{ 0xd9ccecd2f43aa0adull, 0x6551750751404603ull, 0xb1d7381c0d241077ull, 0x3e83f4c363131448ull, 0xe564b2402efbd197ull, 0xc11db8c5a5343d29ull }}, {{ 0x8201403d8a4a46c2ull, 0xf52e92492c82bc26ull, 0xf26831188368a4a9ull, 0x71278fa1debecad6ull, 0xf5eef681d5d62fe8ull, 0x8b2937b8740a63a2ull }}, {{ 0x140c826766e6c390ull, 0x93d1b6dbbd1b5981ull, 0x7811eaf522166ea3ull, 0x6b8b9c52b373ec65ull, 0x9b55a1125a5ddf14ull, 0x6f9c2d348867e45dull }}, {{ 0xc87d180a0503a3a0ull, 0xc631249563117f0aull, 0xb0b32d9354e05263ull, 0x33741b3b02873bf6ull, 0x11584ab787aab6ccull, 0x5c19c40d540eeba8ull }}, {{ 0xd4e2f0643224643eull, 0xbdeb6dd5deaef66bull, 0xe6ffc7c150c337e5ull, 0x0289104e194857a2ull, 0xad72eb2b4cab23faull, 0x9901a88548953490ull }}, {{ 0x50dd63e9f56bea6aull, 0x6b324a5ab2d5a036ull, 0x05fdcd8d27a02ef9ull, 0x195aa30cfcd36c5dull, 0xc67d2fb0feaf67c4ull, 0xfa109534d5d40da6ull }}, {{ 0x28a5e72396372827ull, 0x2ff6e78afc58421full, 0x3bea07838c41d5beull, 0xfd8a5e81e0423ba2ull, 0xc0e3dce9f2da0da8ull, 0xc4a5d4105a488883ull }}, {{ 0x967b0763de279189ull, 0xdfa50b6ddb729537ull, 0x57244b237a92596dull, 0xe767b112c2965456ull, 0x88e6a1237c848899ull, 0xae7a48a386d55525ull }}, {{ 0xe0ce49e6ad8baf5eull, 0xbc72724a9279d42bull, 0x676aef62c9b77e4aull, 0x0a0ceabb99df4b5full, 0x59024b62dd2d5603ull, 0xd0c6d66344555377ull }}, {{ 0xc80ee302c774d9acull, 0x5c7876e9b8c249b6ull, 0x0a2d59dbe12aeeebull, 0x64812b5402b8f1baull, 0x7a16f1dca3c55c1eull, 0x27c45fe0ab5542a9ull }}, {{ 0xd094de1bca9080bcull, 0x9cb4a5213796e123ull, 0x65c58296cbad5531ull, 0xed0bb1481b397144ull, 0xc4e5729e65b5992full, 0x8dabbec6b1549a9eull }}, {{ 0x25d0ad15e9a5075aull, 0x1f0e734c2be4cb66ull, 0xf9b719e3f4c553f0ull, 0x4274ecd1103e6cabull, 0xb0f67a2ff917fbdfull, 0x88b573c2ed4e0a33ull }}, {{ 0x7a26c2db20724984ull, 0x369080f9b6eff1fdull, 0xc12702e78fb54761ull, 0x9891402aa2703eb7ull, 0xe9a0c5dfbaefd6b8ull, 0x5716859d450c6604ull }}, {{ 0xc5839c8f4476df27ull, 0x21a509c1255f73e6ull, 0x8b861d0b9d14c9ccull, 0xf5ac81aa5862732dull, 0x2047babd4d5e6335ull, 0x66e13824b27bfc31ull }}, {{ 0xb7241d98aca4b783ull, 0x5072618b75ba8703ull, 0x733d227422cfe1f9ull, 0x98bd10a773d87fc7ull, 0x42cd4b6505afe01bull, 0x04cc316ef8d7d9ebull }}, {{ 0x276927f6be6f2b19ull, 0x2477cf7299494625ull, 0x806358895c1ed3bdull, 0xf762a68a8674fdcaull, 0x9c04f1f238dec113ull, 0x2ff9ee55b86e8330ull }}, {{ 0x8a1b8fa37057aefeull, 0x6cae1a79fcdcbd73ull, 0x03e1755d99344563ull, 0xa9da81694091e9e9ull, 0x1831737638b38ac7ull, 0xdfc34f5934511fe6ull }}, {{ 0x65139c62636cd5f1ull, 0x3ecd08c3e09f6683ull, 0x26ce95a7fc0ab5e2ull, 0xa2890e1c85b3231aull, 0xf1ee829e37036bccull, 0xbda1197c0b2b3efcull }}, {{ 0xf2c41bd7e2405b69ull, 0x740257a6c63a0121ull, 0x8411d88fd86b1ad6ull, 0x595a8d1d38ff5f05ull, 0x73511a2e262235feull, 0x684afed86fb075e1ull }}, {{ 0x7ba9166ed683921eull, 0x88176c83be440b53ull, 0x28b2759e742f0c60ull, 0x7d89832439f9b637ull, 0x812b05cd7d561befull, 0x12edf4745ce49aceull }}, {{ 0xd49ae0546123b528ull, 0x50ea3d256ea87142ull, 0x96f8983089d67bc5ull, 0xe75f1f6a43c11e27ull, 0x0bae3a06e55d175aull, 0xbd4b8c8ba0ee0c11ull }}, {{ 0x4e0cc34bcb65138eull, 0x2926637652946c9cull, 0xe5b5f1e56260d5b5ull, 0x09b73a26a58b2d8bull, 0x74ce4444f5a2e98dull, 0x64f37d74494c78aaull }}, {{ 0x0c7fa0f5f1f2c38dull, 0x9b7fe29f39cc3e1bull, 0xf91b72f5d7c85913ull, 0x61284582776fc776ull, 0x900eaab1985d1f82ull, 0xf182e68adcfcb6a8ull }}, {{ 0x7cfc499b737ba37full, 0x12feda3841fa6d0eull, 0xbb127d9a6dd37ac4ull, 0xcb92b718aa5dcaa5ull, 0xa092aaeff3a33b17ull, 0x6f1d016ca1df2295ull }}, {{ 0xe1dae01282d462f8ull, 0xbdf4863293c84290ull, 0x4eb8e8084a42cba8ull, 0xf3bb26f6a7a9ea79ull, 0x45baad5f84604eedull, 0x57220e3e52b759d8ull }}, {{ 0xd28cc0b91c4bddacull, 0x6b8d3df9c5d299a8ull, 0x13391052e69bf497ull, 0x854f85a28ca328bdull, 0xb94ac5bb2bc3154bull, 0x67548e6f3b298272ull }}, {{ 0x397f873b1af6a8bbull, 0x33846bc1ba3a0098ull, 0xc03aa33d02178deaull, 0x351b38597e5f9762ull, 0x3cebb94fb59ed4f3ull, 0x094d90584f9f187bull }}, {{ 0x3efb484f0da29753ull, 0x032c3591464405f2ull, 0x824a606214eb8b26ull, 0x1310337eefbbe9dbull, 0x61353d1d18345180ull, 0x5d07a3731c36f4d0ull }}, {{ 0x75d0d3168859e93cull, 0x1fba17acbea83b76ull, 0x16e7c3d4d1336f7cull, 0xbea202f55d572293ull, 0xcc146322f20b2f00ull, 0xa24c627f1a259023ull }}, {{ 0x9a283ee153831c56ull, 0x3d44ecbf729252a0ull, 0xe50da6502c025ad9ull, 0x72541d95a56759beull, 0xf8cbdf5d746fd607ull, 0x56fbd8f70577a165ull }}, {{ 0x059274cd431f1b60ull, 0x64b13f7a79b73a46ull, 0xf2887f21b8178c7cull, 0x774927d876098174ull, 0xb7f6b9a68c5e5c4aull, 0x65d679a636ac4dfbull }}, {{ 0x37b890049f3711bdull, 0xeeec7ac8c12846bcull, 0x7954f75130eb7cdbull, 0xa8db8e749c5f0e91ull, 0x2fa340817baf9ae8ull, 0xfa60c07e22bb0bd5ull }}, {{ 0x2d35a02e3826b166ull, 0x553ccbd78b92c35aull, 0xbd51a92be932e097ull, 0x9893908e1bb691aeull, 0xdc60850ed4dc0d16ull, 0xc7c784ed5b4e7653ull }}, {{ 0xc41841ce3182edfdull, 0x545ff66b73bba185ull, 0x65309bb71bfcc5e9ull, 0xf5c3a58d1521b0d3ull, 0x9bc53294509882e1ull, 0xcdcb314591109f46ull }}, {{ 0xa8f2920def1d4bddull, 0x4bbfa03285544f39ull, 0xf3e6152717dfbb1dull, 0x99a47782d350e841ull, 0x15b3f9cb25f51cd3ull, 0x09efecb7aaa638c2ull }}, {{ 0x9979b48b5724f6a5ull, 0xf57c41f9354b1840ull, 0x86fcd386eebd4f24ull, 0x006cab1c41291293ull, 0xd907c1ef7b932044ull, 0x635f3f2caa7e3794ull }}, {{ 0xfec10d716771a272ull, 0x96da93bc14eef285ull, 0x45e0434553651771ull, 0x043eaf1a8b9ab9c3ull, 0x7a4d935ad3bf42a8ull, 0xe1b877bea8ee2bd0ull }}, {{ 0xf38a866e0a705871ull, 0xe489c558d155793bull, 0xbac2a0b541f2ea6full, 0x2a72d709740b41a0ull, 0xc707c18c45789a90ull, 0xd134ad72994db624ull }}, {{ 0x8369404c68637467ull, 0xed61b5782d56bc57ull, 0x4b9a4714937d285eull, 0xa87c665e88709047ull, 0xc64d8f7ab6b609a1ull, 0x2c0ec679fd091d6full }}, {{ 0x221c82fc13e28c08ull, 0x45d116b1c5635b6bull, 0xf406c6cdc2e393b5ull, 0x94dbffb15465a2c8ull, 0xbf079acb231c6050ull, 0xb893c0c3e25b265dull }}, {{ 0x551d1dd8c6d97854ull, 0xba2ae2f1b5e1922full, 0x8843c4099ce3c514ull, 0xd097fced4bf85bd9ull, 0x764c0bef5f1bc325ull, 0x35c587a6d78f7fa9ull }}, {{ 0x53232a77c47eb346ull, 0x45acdd711acfb5d9ull, 0x52a5a86020e5b2cfull, 0x25efe144f7b3967full, 0x9ef87759b7159f7aull, 0x19b74c846b9afc9eull }}, {{ 0x3f5fa8adacf300c0ull, 0xb8c0a66b0c1d1a7dull, 0x3a7893c148f8fc18ull, 0x7b5eccb1ad03e0f9ull, 0x35b4a98126d83ac5ull, 0x0128fd2c340dde32ull }}, {{ 0x79bc96c8c17e077cull, 0x3786802e792308e4ull, 0x48b5c58cd9b9d8f7ull, 0xd1b3fef0c226c9bcull, 0x190e9f0b84724bb6ull, 0x0b99e3ba088aadf6ull }}, {{ 0xc15de3d78eec4ad5ull, 0x2b4101d0bb5e58ecull, 0xd719b780814279a8ull, 0x3107f5679583e15aull, 0xfa9236732c76f524ull, 0x7402e544556acb9cull }}, {{ 0x8daae66b953aec51ull, 0xb08a122751af793full, 0x67012b050c98c091ull, 0xea4f960bd726cd8cull, 0xc9b6207fbca59369ull, 0x881cf4ab562bf421ull }}, {{ 0x88ad0033d44d3b28ull, 0xe564b58930dabc7bull, 0x060bae327df785b0ull, 0x271bdc766784077cull, 0xe11d44fd5e77c223ull, 0x51218eb15db78951ull }}, {{ 0x56c202064b044f95ull, 0xf5ef175be88b5cd3ull, 0x3c74cdf8ebab38e8ull, 0x87169ca00b284ad8ull, 0xcb24b1e5b0ad955full, 0x2b4f92eda92b5d32ull }}, {{ 0x6394143eee2b1bcfull, 0x9b56e9971571a041ull, 0x5c900bb934b03919ull, 0x46e21e406f92ec72ull, 0xef6ef2f8e6c7d5bbull, 0xb11bbd489bb1a3fbull }}, {{ 0xe3c8ca754daf1612ull, 0x11651fe6d670428dull, 0x9da0753c0ee23b00ull, 0xc4d52e845bbd3c77ull, 0x5a557db903ce5950ull, 0xeb1564d614f067d7ull }}, {{ 0xe5d7e89508d6dcb5ull, 0xadf33f046062998aull, 0x2844945894d64e00ull, 0xb053d12b95645cacull, 0x8756e93a260f7d27ull, 0x2ed5f05cd1640e69ull }}, {{ 0xfa6f15d258649f0eull, 0xcb80762bc3d9ff6cull, 0x92adcb75d05f0c06ull, 0xe3462bb3d5eb9eb9ull, 0x49651c457c9ae38cull, 0xd45b63a02de8901full }}, {{ 0xc856da3773ee368eull, 0xf3049db5a683fa41ull, 0xbac9f29a23b67843ull, 0xe0bdb5065b34333full, 0xddf31ab6de0ce380ull, 0x4b91e441cb15a138ull }}, {{ 0xd364862a874e2189ull, 0x7e2e29188127c691ull, 0x4be37a056520b2a7ull, 0xc769123f900a007dull, 0xab7f0b24ac80e308ull, 0xf3b2ea91eed84c38ull }}, {{ 0x41ed3da9490d4f5aull, 0xedcd9af50b8dc1b2ull, 0xf6e2c435f346fa8aull, 0xca1ab67ba06404e4ull, 0xb2f66f6ebd08de57ull, 0x84fd29b35472fa36ull }}, {{ 0x9344689cda851981ull, 0x4a080d92738990f6ull, 0xa4dbaa1b80c5c96dull, 0xe50b20d443e830f1ull, 0xfda05a536258af6dull, 0x31e3a1014c7dc622ull }}, {{ 0xc0ac16208932ff09ull, 0xe45087b8835fa9a1ull, 0x7094a51307b9de44ull, 0xf26f484aa711e970ull, 0xe8438741d776da4aull, 0xf2e44a0cfce9bd5dull }}, {{ 0x86b8dd455bfdf65bull, 0xeb254d3521bca051ull, 0x65ce72be4d42aeb0ull, 0x7858d2ea86b31e64ull, 0x12a348926aa486edull, 0x7ceae481e12165abull }}, {{ 0x4338a4b597eb9f8dull, 0x2f750413515e432full, 0xfa107b6f049ad2e9ull, 0xb3783d2942ff2febull, 0xba60d5b82a6d4546ull, 0xe12ced12cb4df8aeull }}, {{ 0xa0366f17ef343b80ull, 0xda9228c12dae9fd8ull, 0xc4a4d2562e0c3d1bull, 0x02b2639c9df7df37ull, 0x47c85931a844b4c3ull, 0xcbc142bbf10bb6d3ull }}, {{ 0x422056ef580a5303ull, 0x89b5978bc8d23e76ull, 0xae70375dcc7a6316ull, 0x1af7e41e2baeb82dull, 0xcdd37bf092af0f9eull, 0xf58c9b576a752440ull }}, {{ 0x9543655970673e1full, 0x6117eb75d836709eull, 0xd06229a9fcc7dee1ull, 0x0daee92db4d331c8ull, 0x0a42d765bad69c2dull, 0x977e116a28936a88ull }}, {{ 0xd4a1f57e64086d39ull, 0xcaef329a72206631ull, 0x23d5a0a3dfceb4cdull, 0x88d51bc9103ff1d8ull, 0x669c69f94c6219c2ull, 0xeaecae2595c22950ull }}, {{ 0x4e5396efe854443eull, 0xed57fa087543fdf2ull, 0x66584666be131009ull, 0x585315daa27f7271ull, 0x021c23bcfbd50199ull, 0x2d3ecd77d9959d24ull }}, {{ 0x0f43e55f134aaa6full, 0x456fc45494a7eb77ull, 0xff72c0036cbea063ull, 0x733eda8a58fa786dull, 0x15196561d6520ffdull, 0xc47406ae7fd82368ull }}, {{ 0x98a6f5b6c0eaa856ull, 0xb65dab4dce8f32a6ull, 0xfa7b80223f7243e0ull, 0x8074896779c8b44bull, 0xd2fdf5d25f349fe6ull, 0xac8842d0fe716210ull }}, {{ 0xf6859923892a935aull, 0x1fa8b10a1197fa81ull, 0xc8d301567a76a6c7ull, 0x048d5e0ac1d70af7ull, 0x3deb9a37b80e3f01ull, 0xbd529c29f06dd4a8ull }}, {{ 0xa137fb635ba9c181ull, 0x3c96ea64afefc913ull, 0xd83e0d60c8a283c7ull, 0x2d85ac6b92666dadull, 0x6b34062d308e760aull, 0x653a19a3644a4e92ull }}, {{ 0x4c2fd1e194a18f09ull, 0x5de527eedf5ddac4ull, 0x726c85c7d65925c8ull, 0xc738bc33b80048caull, 0x30083dc3e5909c65ull, 0xf4450061eae711b8ull }}, {{ 0xf9de32cfce4f965full, 0xaaf38f54b9aa8baaull, 0x783d39ce5f7b79d3ull, 0xc8375a053002d7e8ull, 0xe05269a6f7a61bf9ull, 0x8ab203d32d06b131ull }}, {{ 0xc2adfc1e0f1bdfb5ull, 0xad83994f40a974adull, 0xb264420fbad2c244ull, 0xd2298433e01c6f14ull, 0xc3382085ac7d17c1ull, 0x6af4263fc242ebf2ull }}, {{ 0x9acbd92c9716bd15ull, 0xc723fd18869e8ec9ull, 0xf7ea949d4c3b96aeull, 0x359f2a06c11c56ceull, 0xa0314538bce2ed92ull, 0x2d897e7d969d377bull }}, {{ 0x0bf67bbde6e362d4ull, 0xc767e2f5423193e0ull, 0xaf29ce24fa53e2d3ull, 0x1837a4438b1b6415ull, 0x41ecb43760dd47b6ull, 0xc75ef0e7e2242ad4ull }}, {{ 0x77a0d56b04e1dc47ull, 0xca0edd9495efc6c0ull, 0xd7a20d71c746dc45ull, 0xf22c6aa36f11e8d8ull, 0x933f0a29c8a4cd1cull, 0xc9b5690ed569ac4aull }}, {{ 0xac48562e30d29ac6ull, 0xe494a7cddb5dc384ull, 0x6c548671c8c49ab9ull, 0x75bc2a6256b31878ull, 0xc07665a1d6700321ull, 0xe1161a945620bae9ull }}, {{ 0xbad35dcde83a0bbbull, 0xedce8e0a91a9a32eull, 0x3b4d4071d7ae0b42ull, 0x9959a7d762fef4b4ull, 0x849ff85260601f4eull, 0xcadd09cb5d474d21ull }}, {{ 0x4c41aa0b1244754cull, 0x4a118c69b0a05fd3ull, 0x510484726ccc709dull, 0xfd808e69ddf58f0aull, 0x2e3fb337c3c13911ull, 0xeca261f1a4c9034full }}, {{ 0xfa90a46eb6ac94faull, 0xe4af7c20e643be40ull, 0x2a2d2c783ffc6624ull, 0xe7059022ab979667ull, 0xce7d002da58c3ab3ull, 0x3e57d3706fda2117ull }}, {{ 0xc9a66c5322bdd1c1ull, 0xeedad948fea56e89ull, 0xa5c3bcb27fdbfd70ull, 0x0637a15ab3ebe007ull, 0x10e201c8777a4b07ull, 0x6f6e42645e854aeeull }}, {{ 0xe0803b3f5b6a3187ull, 0x548c7cd9f2765161ull, 0x79a55ef8fe97e669ull, 0x3e2c4d8b0736c04cull, 0xa8d411d4aac6ee46ull, 0x5a4e97ebb134ed4cull }}, {{ 0xc50250799225ef43ull, 0x4d7ce083789f2dd2ull, 0xc075b5b9f1ef001dull, 0x6dbb076e482382fcull, 0x9848b24eabc54ebeull, 0x8711ef34ec1144feull }}, {{ 0xb21724bfb57b589eull, 0x06e0c522b637ca3bull, 0x8499194373560125ull, 0x494e4a4ed1631ddfull, 0xf2d6f712b5b51370ull, 0x46b3581138acb1f1ull }}, {{ 0xf4e76f7d16d1762full, 0x44c7b35b1e2de654ull, 0x2dfafca2815c0b72ull, 0xdd0ee7142ddf2abbull, 0x7c65a6bb1912c262ull, 0xc30170ac36bef373ull }}, {{ 0x910a5ae2e42e9ddaull, 0xafcd018f2dcaff51ull, 0xcbcdde590d987276ull, 0xa29506c9cab7ab4full, 0xdbf8834efabb97dcull, 0x9e0e66ba23758282ull }}, {{ 0xaa678cdce9d22a87ull, 0xde020f97c9edf92full, 0xf60aaf7a87f478a2ull, 0x59d243e1eb2cb11dull, 0x97b52115cb53ee9eull, 0x2c9003456297191cull }}, {{ 0xa80b80a12235a947ull, 0xac149bede34bbbdcull, 0x9c6adac94f8cb65cull, 0x8236a6d32fbeeb2bull, 0xed134ad9f147522full, 0xbda020b5d9e6fb1dull }}, {{ 0x9073064b56189cc2ull, 0xb8ce174ae0f5569eull, 0x1c2c8bdd1b7f1f9eull, 0x1622843fdd752fb4ull, 0x42c0ec836cc935dbull, 0x6841471a8305cf2bull }}, {{ 0xa47e3ef15cf61f91ull, 0x380ce8ecc9956231ull, 0x19bd76a312f73c33ull, 0xdd592a7ea693dd09ull, 0x9b893d223fdc1a8eull, 0x128cc7091e3a17b0ull }}, {{ 0x6cee756da19d3baeull, 0x3081193fdfd5d5f0ull, 0x0166a25ebda85a00ull, 0xa57ba8f281c6a25bull, 0x135c63567e990994ull, 0xb97fc65b2e44ece6ull }}, {{ 0x41509648502454c7ull, 0xe50afc7ebe5a5b64ull, 0x0e0257b368938401ull, 0x76d4997911c2578eull, 0xc19be160f1fa5fceull, 0x3efdbf8fceb140fcull }}, {{ 0x8d25ded3216b4fc7ull, 0xf26ddcf36f8791eaull, 0x8c176d0215c32812ull, 0xa44dfebab1976b8cull, 0x9016cdc973c7be10ull, 0x75e97b9e12ec89dfull }}, {{ 0x837ab43f4e311dc7ull, 0x784aa1825b4bb329ull, 0x78ea4214d99f90bdull, 0x6b0bf34aefea337dull, 0xa0e409de85cd6ca6ull, 0x9b1ed42cbd3d62bbull }}, {{ 0x22cb0a790deb29c3ull, 0xb2ea4f1790f4ff9full, 0xb92694d0803ba766ull, 0x2e7780ed5f2602e6ull, 0x48e862b13a063e80ull, 0x0f3449bf6465db54ull }}, {{ 0x5bee68ba8b2fa19bull, 0xfd2716eba991fc37ull, 0x3b81d02502548a02ull, 0xd0ab0945b77c1d03ull, 0xd913daec443e7101ull, 0x980ae179ebfa914aull }}, {{ 0x975017496fdc5010ull, 0xe386e5349fb3da29ull, 0x53122172174d641dull, 0x26ae5cb92ad92220ull, 0x7ac68d3aaa706a12ull, 0xf06ccec337c9acecull }}, {{ 0xe920e8de5e9b209eull, 0xe344f40e3d06859full, 0x3eb54e74e905e92aull, 0x82cf9f3bac7b5543ull, 0xcbc1844aa86424b5ull, 0x644013a02de0c13cull }}, {{ 0x1b4918afb20f462cull, 0xe0b1888e6241383full, 0x731510911a3b1bacull, 0x1c1c3854bcd154a0ull, 0xf58f2aea93e96f17ull, 0xea80c441cac78c5full }}, {{ 0x10daf6dcf498bdb8ull, 0xc6ef558fd68c3277ull, 0x7ed2a5ab064f14c0ull, 0x191a334f602d4e44ull, 0x9797ad29c71e56e7ull, 0x2907aa91ebcb7bbfull }}, {{ 0xa88da4a18df76934ull, 0xc559579e6179f8a6ull, 0xf43a78ae3f16cf87ull, 0xfb060119c1c50eacull, 0xebecc3a1c72f6506ull, 0x9a4ca9b335f2d57bull }}, {{ 0x95886e4f8baa1c09ull, 0xb57d6c2fcec3b682ull, 0x8a48b6ce76e41b4dull, 0xce3c0b0191b292c1ull, 0x373fa451c7d9f245ull, 0x06fea1001b7c56d7ull }}, {{ 0xd7544f1b74a5185bull, 0x16e639de13a52119ull, 0x66d72410a4e91109ull, 0x0e586e0fb0f9bb8full, 0x287c6b31ce8376baull, 0x45f24a0112db6468ull }}, {{ 0x694b17128e72f38dull, 0xe4fe42acc4734b02ull, 0x046768a6711aaa5aull, 0x8f744c9ce9c1539aull, 0x94dc2ff21122a344ull, 0xbb76e40abc91ec11ull }}, {{ 0x1ceee6b9907d8385ull, 0xf1ee9abfac80ee18ull, 0x2c0a16806b0aa78cull, 0x9a8afe21218d4404ull, 0xd099df74ab5a60adull, 0x52a4e86b5db338afull }}, {{ 0x2155033fa4e72334ull, 0x73520b7cbd094cf1ull, 0xb864e1042e6a8b81ull, 0x096ded4b4f84a829ull, 0x2602ba8eb187c6c8ull, 0x3a711431a90036deull }}, {{ 0x4d52207c71076007ull, 0x813472df625d016bull, 0x33f0ca29d029730eull, 0x5e4b44f11b2e91a1ull, 0x7c1b4992ef4dc3d0ull, 0x486ac9f09a0224adull }}, {{ 0x053544dc6a49c048ull, 0x0c0c7cb9d7a20e31ull, 0x0767e5a2219e7e91ull, 0xaef0b16b0fd1b04cull, 0xd910dfbd5909a623ull, 0xd42be36604156ec6ull }}, {{ 0x3414b09c26e182d1ull, 0x787cdf426c548deaull, 0x4a0ef8555030f1aaull, 0xd566ee2e9e30e2f8ull, 0x7aa8bd657a607d64ull, 0x49b6e1fc28d653c4ull }}, {{ 0x08cee61984cf1c26ull, 0xb4e0b8983b4d8b26ull, 0xe495b35521e970a8ull, 0x56054dd22de8ddb2ull, 0xca9765f6c7c4e5f0ull, 0xe124d3d9985f45acull }}, {{ 0x5814fcff30171979ull, 0x10c735f251076f7cull, 0xedd90153531e6697ull, 0x5c350a35cb18a8fcull, 0xe9e9fba3cdb0fb63ull, 0xcb70467ff3b8b8bfull }}, {{ 0x70d1e1f7e0e6feb9ull, 0xa7c81b772a4a5adbull, 0x4a7a0d413f3001e6ull, 0x9a126619eef699e1ull, 0x2323d46608e9d1e1ull, 0xf262c0ff8537377full }}, {{ 0x6832d3aec905f338ull, 0x8dd112a7a6e78c92ull, 0xe8c4848c77e01302ull, 0x04b7fd0355a202ccull, 0x5f664bfc592232d0ull, 0x77db89fb34282af7ull }}, {{ 0x11fc44d3da3b802eull, 0x8a2aba8c850b7db8ull, 0x17ad2d7caec0be19ull, 0x2f2fe22158541c01ull, 0xb9fef7db7b55fc20ull, 0xae9363d00991ada9ull }}, {{ 0xb3dab046865301ccull, 0x65ab497d3272e930ull, 0xecc3c6ded3876cffull, 0xd7ded54d7349180aull, 0x43f5ae92d15bd941ull, 0xd1c1e6205fb0c8a1ull }}, {{ 0x068ae2c13f3e11f4ull, 0xf8b0dee3f87d1be7ull, 0x3fa5c4b4434a41f9ull, 0x6eb4550680daf06dull, 0xa798d1bc2d967c92ull, 0x3192fd43bce7d64cull }}, {{ 0x416cdb8c786cb389ull, 0xb6e8b4e7b4e31706ull, 0x7c79af0aa0e693c3ull, 0x530b5241088d6444ull, 0x8bf83159c7e0ddb8ull, 0xefbde4a5610e5efeull }}, {{ 0x8e40937cb43f035aull, 0x2517110d10dee63eull, 0xdcc0d66a4901c5a5ull, 0x3e71368a5585eaacull, 0x77b1ed81cec8a933ull, 0x5d6aee75ca8fb5f1ull }}, {{ 0x8e85c2df0a762184ull, 0x72e6aa82a8b4fe71ull, 0x9f886026da11b873ull, 0x706c2167573b2ac0ull, 0xacf3471213d69c00ull, 0xa62d5099e99d1b6eull }}, {{ 0x91399cb6689d4f29ull, 0x7d02a91a9711f06full, 0x3b53c18484b13482ull, 0x64394e09684fab86ull, 0xc180c6b4c6621804ull, 0x7dc5260320231252ull }}, {{ 0xac401f2016251799ull, 0xe21a9b09e6b3645bull, 0x51458f2d2eec0d18ull, 0xea3d0c5e131cb33eull, 0x8f07c30fbfd4f02bull, 0xe9b37c1f415eb73bull }}, {{ 0xba813740dd72ebf5ull, 0xd50a0e630301eb94ull, 0x2cb797c3d53882f8ull, 0x26627bacbf1f006full, 0x964d9e9d7e5161b7ull, 0x2102d9388db32853ull }}, {{ 0x490c2888a67d3794ull, 0x52648fde1e1333cfull, 0xbf2beda654351db8ull, 0x7fd8d4bf77360457ull, 0xdf083226ef2dd127ull, 0x4a1c7c3588ff9343ull }}, {{ 0xda79955680e42bccull, 0x37ed9ead2cc00618ull, 0x77b7487f4a132933ull, 0xfe784f7aa81c2b6dull, 0xb651f58557ca2b8aull, 0xe51cda1759fbc0a6ull }}, {{ 0x88bfd56108e9b5faull, 0x2f4832c3bf803cf8ull, 0xad28d4f8e4bf9c00ull, 0xf0b31aca9119b246ull, 0x1f3397356de5b36dull, 0xf32084e983d58683ull }}, {{ 0x577e55ca59211bc2ull, 0xd8d1fba57b0261b5ull, 0xc39851b8ef7c1801ull, 0x66ff0be9ab00f6c2ull, 0x3803e8164af9024bull, 0x7f45311f2657411full }}, {{ 0x6aef59e77b4b1598ull, 0x7833d476ce17d115ull, 0xa3f331395ad8f012ull, 0x05f67720ae09a39bull, 0x302710deedba16f2ull, 0xf8b3eb377f688b38ull }}, {{ 0x2d59830ad0eed7f2ull, 0xb2064ca40cee2ad6ull, 0x677fec3d8c7960b8ull, 0x3ba0a746cc606414ull, 0xe186a8b54944e574ull, 0xb707302afa157031ull }}, {{ 0xc57f1e6c29546f74ull, 0xf43efe68814dac5dull, 0x0aff3a677cbdc736ull, 0x544688c3fbc3e8ccull, 0xcf429714dcb0f68aull, 0x2647e1adc4d661f2ull }}, {{ 0xb6f730399d4c5a85ull, 0x8a75f0150d08bba9ull, 0x6df8480adf69c825ull, 0x4ac157a7d5a717f8ull, 0x1899e6d09ee9a167ull, 0x7eced0c9b05fd37cull }}, {{ 0x25a7e24024fb8932ull, 0x689b60d2825754a1ull, 0x4bb2d06cba21d177ull, 0xeb8d6c8e5886efb4ull, 0xf603042635204e08ull, 0xf41427e0e3be42d8ull }}, {{ 0x788ed68171d35bf4ull, 0x1611c83917694e4bull, 0xf4fc243f45522eaaull, 0x33863d8f75455d0aull, 0x9c1e297e13430c59ull, 0x88c98ec8e56e9c79ull }}, {{ 0xb594610e72419789ull, 0xdcb1d23aea1d0ef2ull, 0x91d96a78b535d2a4ull, 0x033e679a94b5a26dull, 0x192d9eecc09e7b7cull, 0x57df93d8f6521cc0ull }}, {{ 0x17cbca90768feb5bull, 0x9ef2364d2522957bull, 0xb27e28b7141a3a70ull, 0x20700c09cf185847ull, 0xfbc8353f8630d2d8ull, 0x6ebbc6799f351f80ull }}, {{ 0xedf5e9a4a19f318eull, 0x35761f037359d6ceull, 0xf8ed9726c9064866ull, 0x4460786216f372ccull, 0xd5d2147b3de83c71ull, 0x5355c0c038133b09ull }}, {{ 0x4b9b206e5037ef8full, 0x169d362281826415ull, 0xb947e783da3ed3feull, 0xabc4b3d4e5827c01ull, 0x5a34ccd06b125c6cull, 0x4159878230c04e62ull }}, {{ 0xf40f444f222f5b98ull, 0xe2241d590f17e8d4ull, 0x3ccf0b26867447ecull, 0xb5af0650f718d811ull, 0x861000242eb79c3eull, 0x8d7f4b15e7830fd7ull }}, {{ 0x8898ab1755d993ecull, 0xd569257a96ef1851ull, 0x60166f81408acf40ull, 0x18d63f29a6f870acull, 0x3ca00169d32c1a73ull, 0x86f8eedb0b1e9e6bull }}, {{ 0x55f6aee95a7fc734ull, 0x561b76c9e556f32full, 0xc0e05b0c856c1888ull, 0xf85e77a085b466bbull, 0x5e400e223fb9087eull, 0x45b9548e6f323030ull }}, {{ 0x5ba2d51d88fdc80cull, 0x5d12a3e2f5657fd9ull, 0x88c38e7d3638f553ull, 0xb3b0ac45390c0355ull, 0xae808d567d3a54f5ull, 0xb93d4d9057f5e1e3ull }}, {{ 0x945c532759e9d073ull, 0xa2ba66dd95f6fe7dull, 0x57a390e41e399541ull, 0x04e6bab43a782157ull, 0xd1058560e4475199ull, 0x3c6507a36f9ad2e4ull }}, {{ 0xcb9b3f8983222481ull, 0x5b4804a7dba5f0e7ull, 0x6c63a8e92e3fd490ull, 0x31034b0a48b14d69ull, 0x2a3735c8eac92ffaull, 0x5bf24c625c0c3cf0ull }}, {{ 0xf4107b5f1f556d07ull, 0x90d02e8e947b690dull, 0x3be4991bce7e4da3ull, 0xea20ee66d6ed061eull, 0xa62819d92bdbdfc5ull, 0x9776fbd7987a6161ull }}, {{ 0x88a4d1b73956424aull, 0xa821d191ccd21a8bull, 0x56edfb1610ef0863ull, 0x2549500465423d2eull, 0x7d91027bb696bdbbull, 0xeaa5d66bf4c7cdd0ull }}, {{ 0x567031283d5e96e6ull, 0x91522fb200350973ull, 0x654bcedca95653e4ull, 0x74dd202bf49663cfull, 0xe7aa18d521e3694full, 0x2a7a60378fce0a24ull }}, {{ 0x6061eb9265b1e4fcull, 0xad35dcf402125e81ull, 0xf4f6149e9d5f46edull, 0x90a341b78ddfe619ull, 0x0ca4f85352e21d1aull, 0xa8c7c22b9e0c6571ull }}, {{ 0xc3d333b7f8f2f1d7ull, 0xc41aa18814b7b10dull, 0x919cce3225b8c548ull, 0xa660912b8abefd03ull, 0x7e71b3413cd52309ull, 0x97cd95b42c7bf66aull }}, {{ 0xa640052fb97d7266ull, 0xa90a4f50cf2cea89ull, 0xb0200df57937b4d7ull, 0x7fc5abb36b75e223ull, 0xf071008c60535e60ull, 0xee07d909bcd7a028ull }}, {{ 0x7e8033dd3ee67801ull, 0x9a67192817c12960ull, 0xe1408b96bc2d106cull, 0xfdb8b502329ad564ull, 0x646a057bc341afc4ull, 0x4c4e7a61606c4199ull }}, {{ 0xf10206a47500b008ull, 0x0806fb90ed8b9dc4ull, 0xcc8573e359c2a43eull, 0xe9371215fa0c55f0ull, 0xec2436d5a090ddb1ull, 0xfb10c7cdc43a8ffdull }}, {{ 0x6a14426c9206e055ull, 0x5045d3a9477429b1ull, 0xfd3686e1819a6a6cull, 0x1c26b4dbc47b5b67ull, 0x396a245845a8a8f3ull, 0xcea7ce09aa499febull }}, {{ 0x24ca983db444c34eull, 0x22ba449cca89a0eeull, 0xe42144cf1008283bull, 0x19831095acd1920full, 0x3e256b72b896997full, 0x128e0c60a6e03f30ull }}, {{ 0x6fe9f2690aafa10full, 0x5b46ae1fe960494dull, 0xe94cb016a051924full, 0xff1ea5d8c02fb49eull, 0x6d76327b35e1fef6ull, 0xb98c7bc684c277e2ull }}, {{ 0x5f23781a6adc4a98ull, 0x90c2cd3f1dc2dd06ull, 0x1cfee0e2432fb719ull, 0xf7327a7781dd0e35ull, 0x469df8d01ad3f5a5ull, 0x3f7cd5c12f98aed8ull }}, {{ 0xb762b1082c9ae9f1ull, 0xa79c0477299ca23full, 0x21f4c8d69fdd26ffull, 0xa7f8c8ab12a28e13ull, 0xc22bb8210c47987bull, 0x7ae0598bdbf6d472ull }}, {{ 0x29daea51be0d2365ull, 0x8c182ca7a01e567dull, 0x538fd8623ea385fcull, 0x8fb7d6aeba598cbfull, 0x95b5314a7acbf4d4ull, 0xccc37f7697a44c7bull }}, {{ 0xa28d27316c8361f4ull, 0x78f1be8c412f60e3ull, 0x439e73d672633bddull, 0x9d2e62d3477f7f79ull, 0xd913ece8cbf7904dull, 0xffa2faa1ec6afcd3ull }}, {{ 0x598387ee3d21d384ull, 0xb971717a8bd9c8e4ull, 0xa430866077e056a6ull, 0x23cfdc40cafafabcull, 0x7ac74117f7aba308ull, 0xfc5dca533c2de046ull }}, {{ 0x7f234f4e63524328ull, 0x3e6e6ec97681d8ebull, 0x69e53fc4aec36283ull, 0x661e9a87edcdcb5eull, 0xcbc88aefacb45e51ull, 0xdba9e74059cac2c0ull }}, {{ 0xf761190fe1369f8eull, 0x705053dea1127932ull, 0x22f47daed3a1d920ull, 0xfd32094f4a09f1b0ull, 0xf5d56d5cbf0baf2dull, 0x94a3088381eb9b87ull }}, {{ 0xa9cafa9ecc223b88ull, 0x632346b24ab8bbfdull, 0x5d8ce8d444527b44ull, 0xe3f45d18e46370e1ull, 0x9a56459f7674d7cbull, 0xce5e55231334134full }}, {{ 0xa1edca33f9565351ull, 0xdf60c2f6eb3757e8ull, 0xa781184aab38d0abull, 0xe78ba2f8ebe268cdull, 0x075eb83aa0906df6ull, 0x0faf535ec008c11cull }}, {{ 0x5349e607bd5f4129ull, 0xb9c79da530296f16ull, 0x8b0af2eab03826b6ull, 0x0b745db936d81808ull, 0x49b3324a45a44ba5ull, 0x9cd941b380578b18ull }}, {{ 0x40e2fc4d65b88b9cull, 0x41cc2873e19e56dfull, 0x6e6d7d2ae2318323ull, 0x728ba93c2470f055ull, 0xe0fff6e6b86af472ull, 0x207c9103036b6ef2ull }}, {{ 0x88dddb05f9357416ull, 0x91f99486d02f64b8ull, 0x5046e3acd5ef1f60ull, 0x79749c596c696356ull, 0xc9ffa503342d8c78ull, 0x44ddaa1e2232557cull }}, {{ 0x58aa8e3bbc1688dfull, 0xb3bfcd4421d9ef35ull, 0x22c4e4c05b5739c5ull, 0xbe8e1b7e3c1de15full, 0xe3fc722009c77cb4ull, 0xb0a8a52d55f756dfull }}, {{ 0x76a98e5558e158b6ull, 0x057e04a952835815ull, 0x5bb0ef83916841b9ull, 0x718d12ee592acdb7ull, 0xe7dc754061cadf0full, 0xe69673c55ba964beull }}, {{ 0xa29f8f5578cd7719ull, 0x36ec2e9d392170d6ull, 0x94e95b23ae12913aull, 0x6f82bd4f7bac0929ull, 0x0e9c9483d1ecb69aull, 0x01e085b5949def75ull }}, {{ 0x5a3b9956b806a6f9ull, 0x2539d2243b4e6862ull, 0xd11d8f64ccb9ac46ull, 0x5b1b651ad4b85b9full, 0x921dcd26333f2208ull, 0x12c53917ce2b5a92ull }}, {{ 0x8653fd63304285b8ull, 0x7442356a511013d7ull, 0x2b2799efff40babdull, 0x8f11f30c4f33943eull, 0xb52a037e00775453ull, 0xbbb43aee0db189b9ull }}, {{ 0x3f47e5dfe2993934ull, 0x8a9616272aa0c66bull, 0xaf8c035ff8874b66ull, 0x96b37e7b1803ca6dull, 0x13a422ec04a94b43ull, 0x550a4d4c88ef6141ull }}, {{ 0x78cefabed9fc3c04ull, 0x69dcdd87aa47c030ull, 0xdb7821bfb548f201ull, 0xe302f0cef025e848ull, 0xc4695d382e9cf0a3ull, 0x526704fd5959cc8aull }}, {{ 0xb815cb7483da5827ull, 0x22a0a74ca6cd81e4ull, 0x92b1517d14d9740eull, 0xde1d6815617b12d8ull, 0xac1da431d2216666ull, 0x380631e57d81fd6bull }}, {{ 0x30d9f28d26877185ull, 0x5a4688fe840712efull, 0xbaed2ee2d07e888dull, 0xad2610d5cecebc75ull, 0xb92869f2354e0004ull, 0x303df2f6e713e634ull }}, {{ 0xe8837983814a6f2eull, 0x86c159f12846bd57ull, 0x4d43d4dc24f15585ull, 0xc37ca85a14135c99ull, 0x3b942376150c002eull, 0xe26b7da506c6fe0full }}, {{ 0x1522bf230ce857caull, 0x438d836b92c3656full, 0x04a65099716d5737ull, 0xa2de9384c8c19dfdull, 0x53c9629cd27801d3ull, 0xd832e87243c5ec98ull }}, {{ 0xd35b775e81136de9ull, 0xa3872233bba1f656ull, 0x2e7f25fe6e456828ull, 0x5cb1c32fd7902be2ull, 0x45ddda2038b01244ull, 0x71fd1476a5bb3df3ull }}, {{ 0x4192a9b10ac24b19ull, 0x6347560554539f64ull, 0xd0f77bf04eb61196ull, 0x9ef19fde6ba1b6d5ull, 0xbaaa854236e0b6abull, 0x73e2cca279506b80ull }}, {{ 0x8fbaa0ea6b96eefdull, 0xe0c95c354b4439eaull, 0x29aad763131cafdfull, 0x35703eb03451245aull, 0x4aa9349624c722b4ull, 0x86dbfe58bd243307ull }}, {{ 0x9d4a492833e555e4ull, 0xc7dd9a14f0aa4329ull, 0xa0ac69debf1edebeull, 0x166272e20b2b6b85ull, 0xea9c0ddd6fc75b0aull, 0x4497ef776369fe48ull }}, {{ 0x24e6db9206f55ae6ull, 0xcea804d166a69fa0ull, 0x46bc22b37734b373ull, 0xdfd87cd46fb23338ull, 0x2a188aa65dc98e64ull, 0xadef5aa9e223eed9ull }}, {{ 0x710493b445958cffull, 0x1290302e02823c41ull, 0xc3595b02a80f0286ull, 0xbe74e04c5cf60032ull, 0xa4f56a7fa9df8ff0ull, 0xcb598aa2d567547bull }}, {{ 0x6a2dc50ab7d781f8ull, 0xb9a1e1cc19165a8eull, 0xa17d8e1a9096193cull, 0x7090c2fba19c01fbull, 0x719628fca2bb9f67ull, 0xf17f6a5c56094cd4ull }}, {{ 0x25c9b26b2e6b13b3ull, 0x4052d1f8fadf8990ull, 0x4ee78d09a5dcfc5full, 0x65a79dd4501813d4ull, 0x6fdd99de5b543a0aull, 0x6efa279b5c5d004cull }}, {{ 0x79e0f82fd02ec4feull, 0x833c33b9ccbb5fa1ull, 0x150b82607aa1dbb8ull, 0xf88c2a4b20f0c64bull, 0x5ea802af914a4467ull, 0x55c58c119ba202fcull }}, {{ 0xc2c9b1de21d3b1e9ull, 0x205a0541ff51bc4eull, 0xd27317c4ca529535ull, 0xb579a6ef4967beeeull, 0xb2901adbace6ac0full, 0x59b778b014541ddbull }}, {{ 0x9be0f2ad5244f317ull, 0x43843493f9315b13ull, 0x387eedafe739d413ull, 0x16c08558de0d7554ull, 0xf9a10c94c102b89dull, 0x812ab6e0cb492a94ull }}, {{ 0x16c97ac536b17ee5ull, 0xa32a0dc7bbed8ec4ull, 0x34f548df084248c0ull, 0xe3853578ac86954aull, 0xc04a7dcf8a1b3622ull, 0x0bab24c7f0dba9d1ull }}, {{ 0xe3decbb422eef4f7ull, 0x5fa489cd574793a8ull, 0x1194d8b65296d786ull, 0xe33416b6bd41d4e6ull, 0x82e8ea1b65101d5cull, 0x74af6fcf6894a231ull }}, {{ 0xe6b3f5095d5591a3ull, 0xbc6d620568cbc498ull, 0xafd0771f39e46b3full, 0xe008e323649250fcull, 0x1d192511f2a125a0ull, 0x8eda5e1a15ce55efull }}, {{ 0x0307925da557b060ull, 0x5c45d43617f5adf9ull, 0xde24a73842ec307dull, 0xc058df61edb729deull, 0x22fb72b37a4b7848ull, 0x9487ad04da0f5b57ull }}, {{ 0x1e4bb7a8756ce3c2ull, 0x9aba4a1cef98cbbaull, 0xad6e88329d39e4e5ull, 0x8378b9d34927a2b4ull, 0x5dd27b02c6f2b2d7ull, 0xcd4cc23084999167ull }}, {{ 0x2ef52c949640e593ull, 0x0b46e5215bf7f545ull, 0xc65151fa2442f0f8ull, 0x22b74240db8c5b0eull, 0xaa38ce1bc57afc6bull, 0x04ff95e52dffae09ull }}, {{ 0xd593bdcdde88f7c0ull, 0x70c4f34d97af94b3ull, 0xbf2d33c56a9d69b0ull, 0x5b289688937b8e93ull, 0xa6380d15b6cddc2full, 0x31fbdaf3cbfccc60ull }}, {{ 0x57c56a0ab159ad80ull, 0x67b18107ecdbcf06ull, 0x77c405b62a2620e4ull, 0x8f95e155c2d391c5ull, 0x7e3082d9240a99d9ull, 0xf3d68d85f7dffbc6ull }}, {{ 0x6db6246aed80c704ull, 0x0cef0a4f4096163full, 0xada8391da57d48ecull, 0x9bdacd599c43b1b6ull, 0xede51c7b686a027full, 0x8661873baebfd5c0ull }}, {{ 0x491d6c2d4707c62bull, 0x8156671885dcde7aull, 0xc8923b2876e4d938ull, 0x168c05801aa4f122ull, 0x4af31cd2142418fcull, 0x3fcf4854d37e5989ull }}, {{ 0xdb2639c4c64dbdadull, 0x0d6006f53aa0b0c6ull, 0xd5b64f94a4f07c35ull, 0xe17837010a716b5bull, 0xed7f2034c968f9d8ull, 0x7e18d35042ef7f5cull }}, {{ 0x8f7e41afbf0968c0ull, 0x85c045944a46e7c4ull, 0x591f1bce7164da12ull, 0xceb2260a686e3196ull, 0x46f7420fde19c278ull, 0xecf841229d5af9a1ull }}, {{ 0x9aee90dd765e177eull, 0x3982b7cae6c50dadull, 0x7b3716106df084b9ull, 0x12f57c68144defdfull, 0xc5a8949ead0198b8ull, 0x41b28b5a258dc04cull }}, {{ 0x0d51a8a69faceaf1ull, 0x3f1b2ded03b288c8ull, 0xd026dca44b652f3cull, 0xbd96dc10cb0b5ebaull, 0xb895ce32c20ff730ull, 0x90f97185778982ffull }}, {{ 0x853096823cc12d69ull, 0x770fcb4224f957d0ull, 0x21849e6af1f3d85aull, 0x67e498a7ee71b34cull, 0x35da0dfb949fa7e7ull, 0xa9be6f36ab5f1dfdull }}, {{ 0x33e5e1165f8bc618ull, 0xa69df09571bd6e25ull, 0x4f2e302d73867388ull, 0x0eedf68f507100f9ull, 0x1a848bd3ce3c8f0aull, 0xa1705822b1b72be4ull }}, {{ 0x06facadfbb75bcf5ull, 0x822b65d671664d74ull, 0x17cde1c683408356ull, 0x954ba199246a09bdull, 0x092d76460e5d9664ull, 0x4e63715af127b6e9ull }}, {{ 0x45cbecbd5299618eull, 0x15b1fa606dff0688ull, 0xee0ad1c120852161ull, 0xd4f44ffb6c246162ull, 0x5bc69ebc8fa7dfedull, 0x0fe26d8d6b8d251aull }}, {{ 0xb9f73f6539fdcf90ull, 0xd8f3c7c44bf64152ull, 0x4c6c318b45334dcaull, 0x518b1fd2396bcdddull, 0x95c2335d9c8ebf4aull, 0x9ed8478633837307ull }}, {{ 0x43a879f443ea1b9bull, 0x7985cdaaf79e8d3bull, 0xfc39ef70b40109ecull, 0x2f6f3e363e360aa4ull, 0xd99601a81d9378e7ull, 0x3472cb3e03227e4bull }}, {{ 0xa494c38aa7251410ull, 0xbf3a08adac318450ull, 0xda435a67080a633cull, 0xda586e1e6e1c6a71ull, 0x7fdc109127c2b907ull, 0x0c7bf06c1f58eef6ull }}, {{ 0x6dcfa36a8772c8a5ull, 0x784456c8b9ef2b26ull, 0x86a188065067e05full, 0x87744d304d1c2872ull, 0xfe98a5ab8d9b3a4eull, 0x7cd76439397955a0ull }}, {{ 0x4a1c62294a7bd670ull, 0xb2ab63d74357af80ull, 0x424f503f240ec3baull, 0x4a8b03e303199479ull, 0xf1f678b388104711ull, 0xe069ea3c3ebd5849ull }}, {{ 0xe51bd59ce8d6605eull, 0xfab1e668a16cdb02ull, 0x971922776893a54aull, 0xe96e26de1effccbcull, 0x73a0b70350a2c6acull, 0xc423265a736572e3ull }}, {{ 0xf3165821185fc3a7ull, 0xcaf300164e408e1cull, 0xe6fb58aa15c474edull, 0x1e4d84ad35fdff5dull, 0x84472621265bc2c1ull, 0xa95f7f8881f67ce2ull }}, {{ 0x7edf714af3bda489ull, 0xed7e00df0e858d21ull, 0x05d176a4d9ac9149ull, 0x2f072ec41bebf9abull, 0x2ac77d4b7f959b8bull, 0x9dbafb5513a0e0d9ull }}, {{ 0xf4ba6ced85686d56ull, 0x46ec08b69137834eull, 0x3a2ea27080bdace3ull, 0xd647d3a91737c0aeull, 0xabcae4f2fbd8136full, 0x294dd152c448c87bull }}, {{ 0x8f4841473614455aull, 0xc5385721ac2b2115ull, 0x45d258650768c0e0ull, 0x5ece449ae82d86ceull, 0xb5ecf17dd670c25eull, 0x9d0a2d3baad7d4d4ull }}, {{ 0x98d28cc81ccab587ull, 0xb4336750b9af4ad7ull, 0xba3773f24a1788c7ull, 0xb40eae0d11c7440eull, 0x1b416eea606797afull, 0x2265c454ac6e504full }}, {{ 0xf8397fd11feb1749ull, 0x0a02092740d8ec6bull, 0x462a8776e4eb57cdull, 0x0892cc82b1c8a893ull, 0x108e5527c40becddull, 0x57f9ab4ebc4f2317ull }}, {{ 0xb23efe2b3f2ee8daull, 0x64145b8888793c37ull, 0xbda94aa4f1316e02ull, 0x55bbfd1af1d695c0ull, 0xa58f538da87740a2ull, 0x6fc0b1135b175ee6ull }}, {{ 0xf675edb077d51885ull, 0xe8cb935554bc5a2cull, 0x689cea716bee4c17ull, 0x5957e30d7261d987ull, 0x7799438894a88657ull, 0x5d86eac18ee9b502ull }}, {{ 0xa09b48e4ae52f52full, 0x17f3c1554f5b85c1ull, 0x1621286e374ef8efull, 0x7d6ede8677d27f4aull, 0xabfca355ce953f69ull, 0xa7452b8f95211218ull }}, {{ 0x4610d8eecf3d93d4ull, 0xef858d5519933990ull, 0xdd4b944e2915b956ull, 0xe654b140ae38f8e4ull, 0xb7de615a11d47a1eull, 0x88b3b39bd34ab4f6ull }}, {{ 0xbca879541867c64bull, 0x5b378552ffc03fa2ull, 0xa4f3cb0d9ad93d65ull, 0xff4eec86ce39b8f0ull, 0x2eafcd84b24cc534ull, 0x5705041640eb11a3ull }}, {{ 0x5e94bd48f40dbeeaull, 0x902b353dfd827c5bull, 0x7185ee880c7c65f5ull, 0xf9153d440e413966ull, 0xd2de072ef6ffb411ull, 0x663228de892eb05full }}, {{ 0xb1cf64d988897522ull, 0xa1b0146be718db91ull, 0x6f3b51507cdbfb97ull, 0xbad464a88e8c3e00ull, 0x3cac47d5a5fd08b3ull, 0xfdf598b15bd2e3beull }}, {{ 0xf219f07f555e9351ull, 0x50e0cc3706f893b0ull, 0x58512d24e097d3ecull, 0x4c4bee95917a6c04ull, 0x5ebace587be25705ull, 0xeb97f6ed963ce56eull }}, {{ 0x750364f955b1c127ull, 0x28c7fa2645b5c4e9ull, 0x732bc370c5ee473bull, 0xfaf751d7aec8382bull, 0xb34c0f74d6d76634ull, 0x33efa547de60f64full }}, {{ 0x9221f1bd58f18b87ull, 0x97cfc57eb919b11eull, 0x7fb5a267bb4ec84full, 0xcda9326cd3d231b2ull, 0x00f89a906469fe11ull, 0x075c74ceafc99f1dull }}, {{ 0xb5537165796f7349ull, 0xee1db6f33b00eb31ull, 0xfd18580d5113d31bull, 0x089bf8404635f0f8ull, 0x09b609a3ec23ecb2ull, 0x499c9012dde03722ull }}, {{ 0x15426df6be5a80daull, 0x4d2925804e092ff1ull, 0xe2f370852ac63f17ull, 0x5617b282be1b69b9ull, 0x611c606739673ef4ull, 0xe01da0bcaac22754ull }}, {{ 0xd4984ba36f890883ull, 0x039b77030c5bdf6aull, 0xdd826533abbe76e9ull, 0x5cecf91b6d122142ull, 0xcb1bc4083e08758bull, 0xc128475eab95894bull }}, {{ 0x4df2f4625b5a551eull, 0x2412a61e7b96ba2cull, 0xa717f404b570a51aull, 0xa141bb1242b54c9cull, 0xef15a8526c549771ull, 0x8b92c9b2b3d75cf5ull }}, {{ 0x0b7d8bd79187532dull, 0x68ba7d30d3e345bbull, 0x86ef882f16667305ull, 0x4c914eb69b14fe1eull, 0x56d893383b4dea70ull, 0x73bbe0fb0669a19bull }}, {{ 0x72e7766baf493fc0ull, 0x1748e3e846e0b94eull, 0x455b51d6e0007e36ull, 0xfdad13220ed1ed31ull, 0x6475c032510b2862ull, 0x8556c9ce40205011ull }}, {{ 0x7d0aa034d8dc7d81ull, 0xe8d8e712c4c73d10ull, 0xb5913264c004ee1cull, 0xe8c2bf54943343ecull, 0xec9981f72a6f93ddull, 0x3563e20e814320adull }}, {{ 0xe26a4210789ce708ull, 0x187906bbafc862a4ull, 0x17abf7ef80314d21ull, 0x179b794dca00a73full, 0x3dff13a7a85bc6abull, 0x15e6d4910c9f46cbull }}, {{ 0xd82694a4b6210654ull, 0xf4ba4354ddd3da70ull, 0xecb7af5b01ed034aull, 0xec12bd09e4068876ull, 0x6bf6c48c9395c2aeull, 0xdb044daa7e38c3f0ull }}, {{ 0x7181ce6f1d4a3f47ull, 0x8f46a150aa468868ull, 0x3f2cd98e134220edull, 0x38bb6262e84154a5ull, 0x37a3ad7dc3d99ad5ull, 0x8e2b08a8ee37a764ull }}, {{ 0x6f12105724e678c2ull, 0x98c24d26a6c15414ull, 0x77c07f8cc0954947ull, 0x3751d7dd128d4e74ull, 0x2c64c6e9a6800c54ull, 0x8dae56994e2c89eaull }}, {{ 0x56b4a3677100b791ull, 0xf7970382838d48ccull, 0xad84fb7f85d4dccbull, 0x29326ea2b985108cull, 0xbbefc52081007b4aull, 0x88cf61fd0dbd6325ull }}, {{ 0x630e620a6a072ba6ull, 0xabe623192384d7fbull, 0xc731d2fb3a509ff7ull, 0x9bf8525b3f32a57eull, 0x575db3450a04d0e5ull, 0x5819d3e28965df79ull }}, {{ 0xde8fd4682447b47aull, 0xb6fd5efb63306fd1ull, 0xc7f23dd047263facull, 0x17b3379077fa76f3ull, 0x69a900b2643028f8ull, 0x710246d95dfababdull }}, {{ 0xb19e4c116acd0cc7ull, 0x25e5b5d1dfe45e32ull, 0xcf766a22c77e7cbfull, 0xed002ba4afc8a585ull, 0x209a06f7e9e199b0ull, 0x6a16c47dabcb4b66ull }}, {{ 0xf02ef8ae2c027fcaull, 0x7af91a32beebadfaull, 0x1aa0255bcaf0df77ull, 0x4201b46eddd6773aull, 0x460445af22d000e9ull, 0x24e3ace8b5f0f1fdull }}, {{ 0x61d5b6cdb818fde7ull, 0xcdbb05fb7534cbcdull, 0x0a417595ed68baaaull, 0x94110c54aa60a845ull, 0xbc2ab8d75c20091cull, 0x70e4c1171b6973e4ull }}, {{ 0xd259240930f9eb03ull, 0x094e3bd2940ff605ull, 0x668e97db46174aacull, 0xc8aa7b4ea7c692b2ull, 0x59ab386999405b1dull, 0x68ef8ae7121e86efull }}, {{ 0x377b685be9c32e21ull, 0x5d0e5639c89f9c3aull, 0x0191ee90bce8eab8ull, 0xd6a8d1128dc1baf8ull, 0x80b0341ffc838f29ull, 0x195b6d06b5314559ull }}, {{ 0x2ad21397219fcd4bull, 0xa28f5e41d63c1a46ull, 0x0fb351a761192b33ull, 0x62982ab989914db0ull, 0x06e2093fdd2397a2ull, 0xfd92424313ecb57full }}, {{ 0xac34c3e7503e04ecull, 0x5999ae925e5906bdull, 0x9d013089cafbb004ull, 0xd9f1ab3f5fad08e0ull, 0x44d45c7ea363ec57ull, 0xe7b6969ec73f16f6ull }}, {{ 0xba0fa709226c3139ull, 0x8000d1b7af7a4368ull, 0x220be561edd4e02bull, 0x8370b079bcc258c6ull, 0xb04b9cf261e73b6eull, 0x0d21e233c876e59eull }}, {{ 0x449c865b5839ec3cull, 0x0008312cdac6a217ull, 0x5476f5d34a50c1b3ull, 0x2266e4c15f9777bdull, 0xe2f42177d3085251ull, 0x8352d605d4a4f832ull }}, {{ 0xae1d3f9172433a55ull, 0x0051ebc08bc254e8ull, 0x4ca59a40e72790feull, 0x5804ef8dbbeaad65ull, 0xdd894eae3e53372bull, 0x213c5c3a4e71b1fcull }}, {{ 0xcd247bae76a04755ull, 0x0333358575975116ull, 0xfe780689078ba9ecull, 0x70315b89572ac5f4ull, 0xa75d12ce6f4027b1ull, 0x4c5b9a471070f3e0ull }}, {{ 0x036cd4d0a242c94eull, 0x2000173697e92ae4ull, 0xf0b0415a4b74a338ull, 0x61ed935d67abbb91ull, 0x89a2bc1058818ceeull, 0xfb9406c6a46986c6ull }}, {{ 0x22405026569bdd0bull, 0x4000e821ef1bace8ull, 0x66e28d86f28e6031ull, 0xd347c1a60cb553b3ull, 0x605b58a3750f814full, 0xd3c843c26c1f43c1ull }}, {{ 0x5683217f6216a271ull, 0x800911535714c111ull, 0x04d98745798fc1ecull, 0x40cd907c7f154502ull, 0xc3917662929b0d1eull, 0x45d2a5983938a58dull }}, {{ 0x611f4ef9d4e25867ull, 0x005aad4166cf8aadull, 0x307f48b6bf9d933dull, 0x8807a4dcf6d4b214ull, 0xa3ae9fd9ba0e832eull, 0xba3a77f23c367789ull }}, {{ 0xcb3915c250d7740aull, 0x038ac48e041b6ac5ull, 0xe4f8d7237c27c062ull, 0x504c70a1a44ef4c9ull, 0x64d23e8144911fd1ull, 0x4648af765a20ab60ull }}, {{ 0xf03ad997286a8868ull, 0x236bad8c29122bb9ull, 0xf1b86762d98d83d4ull, 0x22fc66506b158fe2ull, 0xf036710cadab3e2dull, 0xbed6da9f8546b1c3ull }}, {{ 0x624c7fe79429540cull, 0x6234c7799ab5b543ull, 0x713409dc7f872649ull, 0x5ddbff242ed79eddull, 0x62206a7ec8b06dc3ull, 0x74648a3b34c2f1a7ull }}, {{ 0xd6fcff0bc99d4874ull, 0xd60fcac00b1914a1ull, 0x6c08629cfb477eddull, 0xaa97f769d46c34a6ull, 0xd54428f3d6e449a1ull, 0x8bed66500f9d7089ull }}, {{ 0x65e1f675e024d486ull, 0x5c9deb806eface52ull, 0x3853da21d0caf4aaull, 0xa9efaa224c3a0e80ull, 0x54a9998664eae050ull, 0x7745ff209c266562ull }}, {{ 0xfad3a09ac1704d3full, 0x9e2b330455cc0f37ull, 0x3346855227ed8ea7ull, 0xa35ca556fa449102ull, 0x4e9fff3ff12cc326ull, 0xa8bbf746197ff5d7ull }}, {{ 0xcc44460b8e630479ull, 0x2daffe2b59f8982full, 0x00c135358f47928cull, 0x619e7565c6adaa16ull, 0x123ff87f6bbf9f82ull, 0x9757a8bcfeff9a69ull }}, {{ 0xfaaabc738fde2cb9ull, 0xc8dfedb183b5f1ddull, 0x078c141798cbb979ull, 0xd03095f9c2c8a4dcull, 0xb67fb4fa357c3b17ull, 0xe96c9761f5fc081aull }}, {{ 0xcaab5c839eadbf3aull, 0xd8bf48ef251b72abull, 0x4b78c8ebf7f53ec1ull, 0x21e5dbc19bd67098ull, 0x20fd11c616da4eeeull, 0x1e3de9d39bd8510bull }}, {{ 0xeab19d2432c97847ull, 0x7778d95773127ab5ull, 0xf2b7d937af947392ull, 0x52fa9590166065f2ull, 0x49e2b1bce487154dull, 0x2e6b224416732a6full }}, {{ 0x2af02369fbdeb2c8ull, 0xaab87d6a7eb8cb1bull, 0x7b2e7c2cdbcc83b8ull, 0x3dc9d7a0dfc3fb7dull, 0xe2daf160ed46d505ull, 0xd02f56a8e07fa858ull }}, {{ 0xad616223d6b2fbccull, 0xab34e628f337ef0full, 0xcfd0d9c095fd2536ull, 0x69e26c48bda7d2e6ull, 0xdc8d6dc944c45234ull, 0x21d96298c4fc9378ull }}, {{ 0xc5cdd56662fdd5f3ull, 0xb010fd99802f569cull, 0x1e288185dbe37422ull, 0x22d83ad7688e3d04ull, 0x9d8649dcafab360cull, 0x527dd9f7b1ddc2b8ull }}, {{ 0xba0a55ffddea5b7full, 0xe0a9e7ff01d9621full, 0x2d950f3a96e2895aull, 0x5c724c6a158e6229ull, 0x273ee29edcb01c79ull, 0x38ea83acf2a99b36ull }}, {{ 0x44675bfeab2792f9ull, 0xc6a30ff6127dd53dull, 0xc7d29849e4d95d8cull, 0x9c76fc24d78fd59bull, 0x8874da349ee11cbdull, 0x392924c17aa0101dull }}, {{ 0xac0997f2af8bbdbbull, 0xc25e9f9cb8ea5464ull, 0xce39f2e2f07da77full, 0x1ca5d9706b9e5815ull, 0x5490860e34cb1f68ull, 0x3b9b6f8eca40a127ull }}, {{ 0xb85fef7adb75694cull, 0x97b23c1f39274beeull, 0x0e437cdd64e88afdull, 0x1e7a7e64342f70daull, 0x4da53c8e0fef3a11ull, 0x54125b93e6864b89ull }}, {{ 0x33bf5acc92961cfcull, 0xecf659383b88f753ull, 0x8ea2e0a5f1156de7ull, 0x30c8efea09da6884ull, 0x08745d8c9f5844abull, 0x48b793c7013ef35dull }}, {{ 0x05798bfdb9dd21d6ull, 0x419f7c325359a940ull, 0x925cc67b6ad64b0full, 0xe7d95f246288152dull, 0x548ba77e3972aeafull, 0xd72bc5c60c7581a2ull }}, {{ 0x36bf77e942a3525cull, 0x903ad9f741809c80ull, 0xb79fc0d22c5eee98ull, 0x0e7db76bd950d3c7ull, 0x4d748aee3e7ad2dfull, 0x67b5b9bc7c971057ull }}, {{ 0x237aaf1c9a613793ull, 0xa24c83a88f061d02ull, 0x2c3d8835bbb551f5ull, 0x90e92a367d2845cdull, 0x068d6d4e70cc3cb6ull, 0x0d19415cdde6a369ull }}, {{ 0x62cad71e07cc2bc3ull, 0x56fd2495963d2215ull, 0xba67521955153398ull, 0xa91ba620e392ba03ull, 0x4186451067fa5f21ull, 0x82fc8da0ab02621aull }}, {{ 0xdbec672c4df9b599ull, 0x65e36dd7de6354d5ull, 0x480934fd52d403f3ull, 0x9b147d48e3bb4425ull, 0x8f3eb2a40fc7b750ull, 0x1ddd8846ae17d506ull }}, {{ 0x973c07bb0bc117fbull, 0xfae24a6eafe1505aull, 0xd05c11e53c482781ull, 0x0ecce4d8e550a974ull, 0x9872fa689dcd2926ull, 0x2aa752c2ccee5241ull }}, {{ 0xe8584d4e758aefd2ull, 0xccd6e852decd2389ull, 0x2398b2f45ad18b13ull, 0x9400f078f5269e90ull, 0xf47dc8162a039b7cull, 0xaa893b9c014f368full }}, {{ 0x13730510976d5e36ull, 0x0065133cb4036363ull, 0x63f6fd8b8c2f6ec6ull, 0xc80964b9938231a1ull, 0x8ce9d0dda42412ddull, 0xa95c54180d18219full }}, {{ 0xc27e32a5ea45ae20ull, 0x03f2c05f0821e1deull, 0xe7a5e77379da53bcull, 0xd05def3fc315f04dull, 0x812228a86968bca9ull, 0x9d9b48f082f1503bull }}, {{ 0x98edfa7b26b8cd45ull, 0x277b83b65152d2b3ull, 0x0c7b0a82c2874558ull, 0x23ab587d9edb630bull, 0x0b5596941e175ea2ull, 0x2810d9651d6d2253ull }}, {{ 0xf94bc8cf833804afull, 0x8ad3251f2d3c3b03ull, 0x7cce691b9948b571ull, 0x64b174e83491de6eull, 0x7157e1c92ce9b255ull, 0x90a87df32643573eull }}, {{ 0xbcf5d81b20302ed5ull, 0x6c3f7337c45a4e27ull, 0xe0101b13fcd7166full, 0xeeee91120db2b050ull, 0x6d6ed1dbc120f755ull, 0xa694eb7f7ea16870ull }}, {{ 0x619a710f41e1d44full, 0x3a7a802dab870d8dull, 0xc0a10ec7e066e05aull, 0x5551aab488fae328ull, 0x465432958b49a95bull, 0x81d132faf24e1464ull }}, {{ 0xd0086a9892d24b15ull, 0x48c901c8b3468785ull, 0x864a93cec404c386ull, 0x5530ab0d59ccdf97ull, 0xbf49f9d770e09d91ull, 0x122bfdcd770ccbeaull }}, {{ 0x205429f5bc36eed6ull, 0xd7da11d700c14b3aull, 0x3ee9c613a82fa33eull, 0x53e6ae858200bbebull, 0x78e3c26a68c627adull, 0xb5b7ea06a67ff72bull }}, {{ 0x4349a3995a25545cull, 0x6e84b266078cf045ull, 0x7521bcc491dc6074ull, 0x4702d13714075730ull, 0xb8e5982817bd8cc5ull, 0x192f244280ffa7b2ull }}, {{ 0xa0e063fd85754b9aull, 0x512ef7fc4b8162b4ull, 0x93515fadb29bc48cull, 0xc61c2c26c84967e4ull, 0x38f7f190ed677fb4ull, 0xfbd76a9909fc8cfbull }}, {{ 0x48c3e7e73694f401ull, 0x2bd5afdaf30ddb0eull, 0xc12dbcc8fa15ad7bull, 0xbd19b983d2de0eedull, 0x39af6fa9460afd0full, 0xd66a29fa63dd81d0ull }}, {{ 0xd7a70f0821d1880dull, 0xb658de8d7e8a8e8eull, 0x8bc95fd9c4d8c6cfull, 0x63013f263cac9549ull, 0x40da5c9cbc6de29dull, 0x6025a3c7e6a71222ull }}, {{ 0x6c869651522f5084ull, 0x1f78b186f1699194ull, 0x75ddbe81b077c41dull, 0xde0c777e5ebdd4dfull, 0x88879e1f5c4ada25ull, 0xc17865cf0286b556ull }}, {{ 0x3d41df2d35d92527ull, 0x3ab6ef456e1fafccull, 0x9aa97110e4ada923ull, 0xac7caaefb36a50baull, 0x554c2d399aec857aull, 0x8eb3fa1619431561ull }}, {{ 0x6492b7c41a7b7386ull, 0x4b2558b64d3cddfaull, 0x0a9e6aa8eec89b60ull, 0xbcdead5d0227274aull, 0x54f9c4400d3d36caull, 0x9307c4dcfc9ed5cdull }}, {{ 0xedbb2da908d28337ull, 0xef75771f0460abc7ull, 0x6a302a9953d611c2ull, 0x60b2c5a2158788e4ull, 0x51c1aa80846423ebull, 0xbe4db0a1de345a05ull }}, {{ 0x494fc89a58392029ull, 0x5a96a7362bc6b5cfull, 0x25e1a9fd465cb19dull, 0xc6fbb854d74b58ecull, 0x3190a9052be96731ull, 0x6f08e652ae0b8435ull }}, {{ 0xdd1dd607723b4198ull, 0x89e2881db5c31a18ull, 0x7ad0a3e4bf9ef025ull, 0xc5d5335068f17939ull, 0xefa69a33b71e07f1ull, 0x5658ff3acc732a13ull }}, {{ 0xa32a5c4a76508fedull, 0x62d95129199f04f8ull, 0xcc2666ef7c356177ull, 0xba540124196ebc3eull, 0x5c820605272c4f71ull, 0x5f79f84bfc7fa4c7ull }}, {{ 0x5fa79ae89f259f44ull, 0xdc7d2b9b003631b6ull, 0xf980055ada15cea9ull, 0x47480b68fe535a73ull, 0x9d143c3387bb1a71ull, 0xbac3b2f7dcfc6fc9ull }}, {{ 0xbc8c0d16377838a8ull, 0x9ce3b40e021df11full, 0xbf00358c84da12a2ull, 0xc8d07219ef418887ull, 0x22ca5a034d4f086cull, 0x4ba4fdaea1dc5de0ull }}, {{ 0x5d7882de2ab23691ull, 0x20e5088c152b6b3dull, 0x7602177d3084ba5aull, 0xd8247503588f554dull, 0x5be784210516543full, 0xf471e8d2529baac1ull }}, {{ 0xa6b51cadaaf621adull, 0x48f25578d3b23065ull, 0x9c14eae3e52f4785ull, 0x716c922175995506ull, 0x970b294a32df4a7eull, 0x8c7318373a14ab8dull }}, {{ 0x83131ec8ad9d50beull, 0xd97756b844f5e3f8ull, 0x18d12ce6f3d8cb34ull, 0x6e3db54e97fd5242ull, 0xe66f9ce5fcb8e8f0ull, 0x7c7ef22844ceb387ull }}, {{ 0x1ebf33d6c825276full, 0x7ea96332b19ae7b5ull, 0xf82bc1058677f010ull, 0x4e691511efe53694ull, 0x005c20fbdf391964ull, 0xdcf57592b013034full }}, {{ 0x33780663d1738a51ull, 0xf29ddffaf00d0d13ull, 0xb1b58a3740af60a4ull, 0x101ad2b35ef421d1ull, 0x039949d6b83afdebull, 0xa19697bae0be2116ull }}, {{ 0x02b03fe62e83672aull, 0x7a2abfcd608282c0ull, 0xf117662886d9c671ull, 0xa10c3b01b5895230ull, 0x23fce263324deb2eull, 0x4fe1ed4cc76d4adcull }}, {{ 0x1ae27efdd12207a6ull, 0xc5ab7e05c5191b80ull, 0x6ae9fd954481c06eull, 0x4a7a4e11175d35e9ull, 0x67e0d7dff70b2fd2ull, 0x1ed344ffca44ec99ull }}, {{ 0x0cd8f5ea2b544c7eull, 0xb8b2ec39b2fb1301ull, 0x2d23e7d4ad118453ull, 0xe8c70caae9a41b1eull, 0x0ec86ebfa66fde36ull, 0x3440b1fde6b13dfeull }}, {{ 0x80799b25b14afcefull, 0x36fd3a40fdcebe0aull, 0xc3670e4ec2af2b45ull, 0x17c67ead20690f2dull, 0x93d4537c805eae25ull, 0x0a86f3eb02ec6becull }}, {{ 0x04c00f78ecede153ull, 0x25e44689ea136c69ull, 0xa2068f139ad7b0b4ull, 0xedc0f2c3441a97c9ull, 0xc64b42dd03b2cd72ull, 0x6945872e1d3c373dull }}, {{ 0x2f809ab9414acd39ull, 0x7aeac16324c23c1aull, 0x544196c40c6ce709ull, 0x49897ba0a909ede0ull, 0xbef09ca224fc067dull, 0x1cb747cd245a2869ull }}, {{ 0xdb060b3c8cec043dull, 0xcd2b8ddf6f965905ull, 0x4a8fe3a87c41065eull, 0xdf5ed4469a634ac3ull, 0x75661e5571d840e4ull, 0x1f28ce036b859421ull }}, {{ 0x8e3c705d81382a5eull, 0x03b38aba5bdf7a3aull, 0xe99ee494da8a3fb4ull, 0xb9b44ac207e0eba0ull, 0x95fd2f56727288f0ull, 0x37980c223337c94eull }}, {{ 0x8e5c63a70c31a7b1ull, 0x25036b4796bac649ull, 0x2034edd089667d08ull, 0x410aeb944ec93449ull, 0xdbe3d96078795967ull, 0x2bf07956002ddd11ull }}, {{ 0x8f9be48679f08ce9ull, 0x722230cbe34bbedfull, 0x42114a255e00e251ull, 0x8a6d33cb13dc0adbull, 0x96e67dc4b4bd7e08ull, 0xb764bd5c01caa2b2ull }}, {{ 0x9c16ed40c3658119ull, 0x7555e7f6e0f574bbull, 0x94ace575ac08d72eull, 0x684405eec6986c90ull, 0xe500e9af0f66ec55ull, 0x29ef659811ea5af9ull }}, {{ 0x18e54487a1f70af8ull, 0x955b0fa4c9968f54ull, 0xcec0f698b85867d0ull, 0x12a83b53c1f43da5ull, 0xf20920d69a053b56ull, 0xa359f7f0b3278dc2ull }}, {{ 0xf8f4ad4c53a66daeull, 0xd58e9c6fdfe19948ull, 0x1389a1f733740e25ull, 0xba925145938a687aull, 0x745b48620434515cull, 0x6183af66ff8b899dull }}, {{ 0xb98ec4fb448048cfull, 0x57921c5ebecffcd9ull, 0xc36053a802888d7aull, 0x49b72cb7c36814c4ull, 0x8b90d3d42a0b2d9full, 0xcf24da05fb736026ull }}, {{ 0x3f93b1d0ad02d815ull, 0x6bb51bb3741fe081ull, 0xa1c34490195586c7ull, 0xe127bf2da210cfafull, 0x73a84649a46fc838ull, 0x1770843bd281c181ull }}, {{ 0x7bc4f226c21c70d5ull, 0x35131502893ec50cull, 0x51a0ada0fd5743caull, 0xcb8d77c854a81cdcull, 0x8492bee06c5dd238ull, 0xea652a5639118f0eull }}, {{ 0xd5b17583951c6850ull, 0x12bed2195c73b27cull, 0x3046c849e568a5e6ull, 0xf386add34e91209bull, 0x2dbb74c43baa3637ull, 0x27f3a75e3aaf9691ull }}, {{ 0x58ee9723d31c131full, 0xbb7434fd9c84f8e0ull, 0xe2c3d2e2f6167afcull, 0x8342ca4111ab460full, 0xc9528faa54a61e2full, 0x8f8489ae4adbe1abull }}, {{ 0x7951e7663f18bf3aull, 0x528a11e81d31b8c3ull, 0xdba63cdd9ce0cddfull, 0x209be68ab0b0bc9eull, 0xdd399ca74e7d2ddbull, 0x9b2d60ceec96d0b5ull }}, {{ 0xbd3309fe76f77844ull, 0x3964b31123f137a2ull, 0x947e60a820c80ab9ull, 0x4617016ae6e75e34ull, 0xa4401e8910e3ca8full, 0x0fc5c8153de4271aull }}, {{ 0x63fe63f0a5aab2a5ull, 0x3deefeab676c2c5bull, 0xccefc69147d06b3cull, 0xbce60e2d0509ae0dull, 0x6a81315aa8e5e998ull, 0x9db9d0d46ae9870aull }}, {{ 0xe7efe76678aafa6full, 0x6b55f2b20a39bb91ull, 0x015dc1acce24305aull, 0x60fc8dc23260cc8aull, 0x290bed8a98fb1ff7ull, 0x2942284c2d1f4668ull }}, {{ 0x0f5f0a00b6adc855ull, 0x315b7af4664153b3ull, 0x0da990c00d69e388ull, 0xc9dd8995f7c7fd64ull, 0x9a774769f9cf3fa9ull, 0x9c9592f9c338c011ull }}, {{ 0x99b6640722c9d34full, 0xed92cd8bfe8d44feull, 0x889fa7808622e351ull, 0xe2a75fdbadcfe5e8ull, 0x08a8ca23c2187ca1ull, 0x1dd7bdc1a03780b0ull }}, {{ 0x011fe8475be24119ull, 0x47bc0777f184b1f2ull, 0x563c8b053d5ce133ull, 0xda89be94ca1efb15ull, 0x5697e56594f4de52ull, 0x2a6d6990422b06e0ull }}, {{ 0x0b3f12c996d68afaull, 0xcd584aaf6f2ef374ull, 0x5e5d6e3465a0cc00ull, 0x896171cfe535ced5ull, 0x61eef5f7d190af3cull, 0xa8461fa295ae44c3ull }}, {{ 0x7076bbdfe4616dc2ull, 0x0572eada57d58288ull, 0xafa64e0bf847f808ull, 0x5dce721ef41a1455ull, 0xd3559bae2fa6d85dull, 0x92bd3c59d8ceafa1ull }}, {{ 0x64a356beebce4995ull, 0x367d2c876e571954ull, 0xdc7f0c77b2cfb050ull, 0xaa1075358904cb58ull, 0x415814cddc8473a5ull, 0xbb645b827812dc52ull }}, {{ 0xee616375360edfd6ull, 0x20e3bd4a4f66fd4bull, 0x9cf67cacfc1ce322ull, 0xa4a494175a2ff178ull, 0x8d70d00a9d2c8478ull, 0x51eb9318b0bc9b36ull }}, {{ 0x4fcde2941c94be5eull, 0x48e564e71a05e4f7ull, 0x21a0dec1d920df55ull, 0x6e6dc8e985df6eb6ull, 0x8668206a23bd2cb6ull, 0x3333bef6e75e1021ull }}, {{ 0x1e0ad9c91dcf6faeull, 0xd8f5f107043af1a9ull, 0x5048b3927b48b954ull, 0x5049d91f3aba531dull, 0x401144256563bf20ull, 0x000575a509aca14full }}, {{ 0x2c6c81db2a1a5cd0ull, 0x799b6a462a4d709bull, 0x22d703b8d0d73d50ull, 0x22e27b384b473f25ull, 0x80aca975f5e57743ull, 0x0036987260be4d18ull }}, {{ 0xbc3d128fa507a020ull, 0xc01226bda706660full, 0x5c66253828686524ull, 0x5cd8d032f0c87773ull, 0x06be9e9b9af6a89full, 0x0221f477c76f02f5ull }}, {{ 0x5a62b99c724c413full, 0x80b58368863ffc9dull, 0x9bfd74319413f36full, 0xa07821fd67d4aa81ull, 0x437232140da29639ull, 0x15538cadca561d92ull }}, {{ 0x87db401c76fa8c72ull, 0x071722153e7fde25ull, 0x17e689efc8c7825bull, 0x44b153e60e4ea910ull, 0xa275f4c88859de40ull, 0xd5437ec9e75d27b6ull }}, {{ 0x4e90811ca5c97c77ull, 0x46e754d470fead77ull, 0xef01635dd7cb178eull, 0xaeed46fc8f129aa0ull, 0x589b8fd55382ae82ull, 0x54a2f3e309a38d22ull }}, {{ 0x11a50b1e79dedca9ull, 0xc509504c69f2c6a9ull, 0x560de1aa6deeeb8eull, 0xd544c5dd96ba0a49ull, 0x76139e55431ad11aull, 0x4e5d86de60638357ull }}, {{ 0xb0726f30c2b49e9cull, 0xb25d22fc237bc29aull, 0x5c8ad0a84b553393ull, 0x54afbaa7e34466ddull, 0x9cc42f549f0c2b0cull, 0x0fa744afc3e3216aull }}, {{ 0xe47857e79b0e3216ull, 0xf7a35dd962d59a0aull, 0x9d6c2692f15403c4ull, 0x4edd4a8ee0ac04a5ull, 0x1fa9d94e3679ae7bull, 0x9c88aedda6df4e2aull }}, {{ 0xecb36f0c0e8df4ddull, 0xac61aa7ddc58046cull, 0x263981bd6d4825b1ull, 0x14a4e994c6b82e78ull, 0x3ca27d0e20c0d0d1ull, 0x1d56d4a884b90da5ull }}, {{ 0x3f025678918b90a1ull, 0xbbd0a8ea9b702c41ull, 0x7e3f116644d178f0ull, 0xce711fcfc331d0b1ull, 0x5e58e28d4788282aull, 0x25644e952f3a8874ull }}, {{ 0x761760b5af73a649ull, 0x5626992a1261ba8cull, 0xee76adfeb02eb967ull, 0x106b3e1d9ff226eeull, 0xaf78d984cb5191acull, 0x75eb11d3d849548bull }}, {{ 0x9ce9c718da847ed6ull, 0x5d81fba4b7d1497cull, 0x50a2cbf2e1d33e09ull, 0xa4306d283f758555ull, 0xdab87f2ff12fb0b8ull, 0x9b2eb24672dd4d74ull }}, {{ 0x2121c6f8892cf45eull, 0xa713d46f2e2cdedeull, 0x265bf77cd2406c5dull, 0x69e443927a973555ull, 0x8b34f7df6bdce736ull, 0x0fd2f6c07ca50690ull }}, {{ 0x4b51c5b55bc18baaull, 0x86c64c57cdc0b4adull, 0x7f97aae036843ba8ull, 0x22eaa3b8c9e81553ull, 0x7011aeba36a10820ull, 0x9e3da384de7241a5ull }}, {{ 0xf131b915958f74a7ull, 0x43befb6e09870ec4ull, 0xfbecacc2212a5495ull, 0x5d2a6537e310d542ull, 0x60b0d346224a5141ull, 0x2e686330b0769076ull }}, {{ 0x6bf13ad7d79a8e8aull, 0xa575d24c5f4693b1ull, 0xd73ebf954ba74dd4ull, 0xa3a7f42edea8549dull, 0xc6e840bd56e72c8dull, 0xd013dfe6e4a1a49full }}, {{ 0x376c4c6e6c099167ull, 0x769a36fbb8c1c4eeull, 0x68737bd4f4890a4eull, 0x648f89d4b2934e2aull, 0xc51287656507bd88ull, 0x20c6bf04ee506e3dull }}, {{ 0x2a3afc50385fae03ull, 0xa20625d53791b14eull, 0x1482d6518d5a6710ull, 0xed9b624ef9c10da8ull, 0xb2b949f5f24d6753ull, 0x47c376314f244e69ull }}, {{ 0xa64ddb2233bccc1cull, 0x543d7a542bb0ed0dull, 0xcd1c5f2f858806a6ull, 0x4811d715c18a8890ull, 0xfb3ce39b77060947ull, 0xcda29ded176b1020ull }}, {{ 0x7f0a8f56055ff918ull, 0x4a66c749b4e94288ull, 0x031bb7db3750427full, 0xd0b266d98f6955a8ull, 0xd060e412a63c5cc8ull, 0x085a2b42ea2ea149ull }}, {{ 0xf669995c35bfbaedull, 0xe803c8e1111c9954ull, 0x1f152e90292298f8ull, 0x26f8047f9a1d5890ull, 0x23c8e8ba7e5b9fd8ull, 0x5385b09d25d24ce2ull }}, {{ 0xa01ffd9a197d4d42ull, 0x1025d8caab1dfd51ull, 0x36d3d1a19b59f9b9ull, 0x85b02cfc052575a1ull, 0x65d91748ef943e71ull, 0x4338e6237a3700d5ull }}, {{ 0x413fe804fee50499ull, 0xa17a77eaaf2be530ull, 0x244630501183c13aull, 0x38e1c1d83376984cull, 0xfa7ae8d95bca706full, 0xa038fd62c6260855ull }}, {{ 0x8c7f1031f4f22dfaull, 0x4ec8af2ad7b6f3e2ull, 0x6abde320af258c4aull, 0x38d1927202a1f2f9ull, 0xc8cd187d95e86458ull, 0x4239e5dbbd7c535bull }}, {{ 0x7cf6a1f39175cbc0ull, 0x13d6d7ac6d2586d9ull, 0x2b6adf46d7777ae7ull, 0x382fb8741a537dbeull, 0xd802f4e7db13eb72ull, 0x9642fa9566db4195ull }}, {{ 0xe1a25383ae99f585ull, 0xc6646cbc4377447eull, 0xb22cb8c46aaacd06ull, 0x31dd34890742e96dull, 0x701d910e8ec73276ull, 0xde9dc9d604908fdaull }}, {{ 0xd0574324d2039731ull, 0xbfec3f5aa2a8acf4ull, 0xf5bf37ac2aac0243ull, 0xf2a40d5a489d1e48ull, 0x6127aa9193c7f89dull, 0xb229e25c2da59e88ull }}, {{ 0x23689f703423e7e6ull, 0x7f3a798a5a96c190ull, 0x99782cb9aab816a5ull, 0x7a688586d6232ed9ull, 0xcb8ca9afc5cfb62bull, 0xf5a2d799c8783153ull }}, {{ 0x62163a6209670efaull, 0xf848bf6789e38fa1ull, 0xfeb1bf40ab30e276ull, 0xc81537445d5fd47full, 0xf37ea0ddba1d1db2ull, 0x985c6c01d4b1ed45ull }}, {{ 0xd4de47d45e0695c7ull, 0xb2d77a0b62e39c4dull, 0xf2f17886afe8d8a5ull, 0xd0d428aba5be4cffull, 0x82f248a9452328fbull, 0xf39c38124ef344bbull }}, {{ 0x50aece4bac41d9c8ull, 0xfc6ac471dce41b0aull, 0x7d6eb542df187678ull, 0x284996b4796f01ffull, 0x1d76d69cb35f99d6ull, 0x841a30b71580af53ull }}, {{ 0x26d40ef4ba9281ceull, 0xdc2bac72a0e90e67ull, 0xe653149cb6f4a0b9ull, 0x92dfe30cbe5613faull, 0x26a4621f01bc025dull, 0x2905e726d706d93full }}, {{ 0x8448958f49b91208ull, 0x99b4bc7a491a9007ull, 0xff3ece1f258e4742ull, 0xbcbede7f6f5cc7ccull, 0x826bd536115817a7ull, 0x9a3b078466447c77ull }}, {{ 0x2ad5d798e13ab44dull, 0x010f5cc6db09a04bull, 0xf8740d37778ec89aull, 0x5f74b0fa599fce01ull, 0x1836541cad70ec8dull, 0x064e4b2bfeacdcabull }}, {{ 0xac5a6bf8cc4b0afeull, 0x0a999fc48e6042efull, 0xb488842aab93d604ull, 0xba8ee9c7803e0c13ull, 0xf21f491ec6693d85ull, 0x3f0eefb7f2c09eaeull }}, {{ 0xbb8837b7faee6de8ull, 0x6a003dad8fc29d5cull, 0x0d5529aab3c65c28ull, 0x499521cb026c78c5ull, 0x7538db33c01c6739ull, 0x76955d2f7b8632d5ull }}, {{ 0x53522d2fcd504b0full, 0x240268c79d9a259full, 0x8553a0ab05bf9994ull, 0xdfd351ee183cb7b2ull, 0x94389005811c083cull, 0xa1d5a3dad33dfc56ull }}, {{ 0x4135c3de0522ee95ull, 0x681817cc28057839ull, 0x354446ae397bffc9ull, 0xbe41334cf25f2cf9ull, 0xca35a0370b185260ull, 0x5258668c406bdb61ull }}, {{ 0x8c19a6ac335d51d4ull, 0x10f0edf99036b23cull, 0x14aac2ce3ed7fddeull, 0x6e8c010177b7c1bcull, 0xe61842266ef337c7ull, 0x3774017a843691d1ull }}, {{ 0x790082ba01a53245ull, 0xa9694bbfa222f65dull, 0xceab9c0e746feaacull, 0x51780a0ead2d9158ull, 0xfcf2958055802dcaull, 0x2a880ec92a21b232ull }}, {{ 0xba051b441073f6b6ull, 0x9e1cf57c555d9fa6ull, 0x12b418908c5f2abeull, 0x2eb06492c3c7ad78ull, 0xe179d7035701c9e7ull, 0xa95093dba550f5fdull }}, {{ 0x443310a8a487a319ull, 0x2d2196db55a83c83ull, 0xbb08f5a57bb7ab72ull, 0xd2e3edbba5ccc6b0ull, 0xcec266216611e307ull, 0x9d25c69475299beaull }}, {{ 0xa9fea6966d4c5ef5ull, 0xc34fe49158925d20ull, 0x4e599876d52cb275ull, 0x3ce7495479ffc2e7ull, 0x1397fd4dfcb2de4eull, 0x2379c1cc93a0172cull }}, {{ 0xa3f281e044fbb594ull, 0xa11eedad75b7a346ull, 0x0f7ff4a453bef899ull, 0x6108dd4cc3fd9d09ull, 0xc3efe50bdefcaf0eull, 0x62c191fdc440e7b8ull }}, {{ 0x677912c2b1d517cdull, 0x4b3548c6992c60c2ull, 0x9aff8e6b4575b600ull, 0xca58a4ffa7e8225aull, 0xa75ef276b5ded68full, 0xdb8fb3e9aa890d37ull }}, {{ 0x0ababb9af252edffull, 0xf014d7c1fbbbc798ull, 0x0dfb9030b6991c02ull, 0xe77671fc8f11578aull, 0x89b578a31ab4619dull, 0x939d0720a95a842cull }}, {{ 0x6b4b540d773d4bf6ull, 0x60d06d93d555cbf0ull, 0x8bd3a1e721fb181dull, 0x0aa073dd96ad6b64ull, 0x6116b65f0b0bd02bull, 0xc42247469d8929bdull }}, {{ 0x30f14886a864f79full, 0xc82447c65559f764ull, 0x7644530753cef125ull, 0x6a4486a7e2c631edull, 0xcae31fb66e7621aeull, 0xa956c8c2275ba165ull }}, {{ 0xe96cd54293f1ac36ull, 0xd16acdbf5583a9e9ull, 0x9eab3e4946156b79ull, 0x26ad428edbbdf346ull, 0xecdf3d20509d50d0ull, 0x9d63d79589944df9ull }}, {{ 0x1e405499c770ba1cull, 0x2e2c09795724a323ull, 0x32b06edcbcd632c2ull, 0x82c49994956b80c2ull, 0x40b8634326252821ull, 0x25e66bd75fcb0bc3ull }}, {{ 0x2e834e01ca67451aull, 0xcdb85ebd676e5f5full, 0xfae4549f605dfb95ull, 0x1badffcdd6330795ull, 0x8733e09f7d73914full, 0x7b003669bdee75a0ull }}, {{ 0xd1210c11e808b308ull, 0x0933b3660a4fb9b7ull, 0xcceb4e39c3abd3daull, 0x14cbfe0a5dfe4bdbull, 0x4806c63ae683ad17ull, 0xce0220216b509845ull }}, {{ 0x2b4a78b31056fe4cull, 0x5c0501fc671d412eull, 0x01310e41a4b64684ull, 0xcff7ec67abeef696ull, 0xd043be4d0124c2e6ull, 0x0c15414e3125f2b4ull }}, {{ 0xb0e8b6fea365eef7ull, 0x983213dc07248bcdull, 0x0bea8e906f1ec12bull, 0x1faf3c0cb755a1dcull, 0x22a56f020b6f9d04ull, 0x78d48d0deb7b7b10ull }}, {{ 0xe91725f261fb55a2ull, 0xf1f4c698476d7608ull, 0x772991a457338bb3ull, 0x3cd8587f29585298ull, 0x5a765614725c2229ull, 0xb84d828b32d2cea1ull }}, {{ 0x1ae77b77d3d15853ull, 0x738fc1f2ca469c59ull, 0xa79fb06b68037507ull, 0x607374f79d7339f4ull, 0x889f5ccc7799559cull, 0x3307196ffc3c124dull }}, {{ 0x0d0ad2ae462d733eull, 0x839d937be6c21b7bull, 0x8c3ce4321022924aull, 0xc48291ac2680438eull, 0x56399ffcabfd581bull, 0xfe46fe5fda58b707ull }}, {{ 0x826c3acebdc68069ull, 0x2427c2d7039512ceull, 0x7a60e9f4a159b6e9ull, 0xad19b0b98102a391ull, 0x5e403fdeb7e57115ull, 0xeec5efbe87772649ull }}, {{ 0x183a4c1369c1041full, 0x698d9c6623d2bc11ull, 0xc7c9238e4d81251bull, 0xc300e73f0a1a63aeull, 0xae827eb32ef66ad8ull, 0x53bb5d714aa77eddull }}, {{ 0xf246f8c2218a2933ull, 0x1f881bfd663b58aaull, 0xcddb638f070b7312ull, 0x9e0908766507e4d3ull, 0xd118f2ffd5a02c77ull, 0x4551a66cea8af4a8ull }}, {{ 0x76c5b7954f659c00ull, 0x3b5117e5fe5176adull, 0x0a91e39646727eb5ull, 0x2c5a549ff24ef046ull, 0x2af97dfe5841bcacull, 0xb5308041296d8e98ull }}, {{ 0xa3b92bd519f817fdull, 0x512aeefbef2ea2c6ull, 0x69b2e3dec078f314ull, 0xbb874e3f771562bcull, 0xadbeebef72915eb9ull, 0x13e5028b9e4791f1ull }}, {{ 0x653bb65303b0efe4ull, 0x2bad55d757d25bc2ull, 0x20fce6b384b97ecbull, 0x53490e7aa6d5db5cull, 0xc975375a79adb341ull, 0xc6f219742ecbb370ull }}, {{ 0xf4551f3e24e95ee5ull, 0xb4c55a696e379597ull, 0x49e103032f3ef3efull, 0x40da90ca845a9199ull, 0xde942988c0c9008dull, 0xc574fe89d3f50267ull }}, {{ 0x8b53386d711db4f5ull, 0x0fb5881e4e2bd7efull, 0xe2ca1e1fd875875dull, 0x8889a7e92b89affcull, 0xb1c99f5787da0584ull, 0xb691f1624792180eull }}, {{ 0x714034466b291195ull, 0x9d17512f0db66f5bull, 0xdbe52d3e749749a2ull, 0x55608f1bb360dfe0ull, 0xf1e0396b4e84372dull, 0x21b36dd6cbb4f092ull }}, {{ 0x6c820ac02f9aafd0ull, 0x22e92bd689205992ull, 0x96f3c4708de8e05aull, 0x55c5971501c8bec8ull, 0x72c23e31112a27c5ull, 0x51024a63f51165bdull }}, {{ 0x3d146b81dc0ade1cull, 0x5d1bb6615b437fb8ull, 0xe585ac658b18c385ull, 0x59b7e6d211d773d5ull, 0x7b966deaaba58db5ull, 0x2a16e7e792adf966ull }}, {{ 0x62cc3312986cad1aull, 0xa3151fcd90a2fd32ull, 0xf738bbf76ef7a335ull, 0x812f0434b26a865aull, 0xd3e04b2ab4778915ull, 0xa4e50f0bbacbbe00ull }}, {{ 0xdbf9feb9f43ec302ull, 0x5ed33e07a65de3f7ull, 0xa83757aa55ac6018ull, 0x0bd62a0ef8293f8dull, 0x46c2efab0cab5ad7ull, 0x70f296754bf56c08ull }}, {{ 0x97c3f3438a739e10ull, 0xb4406c4c7faae7aeull, 0x92296ca758bbc0f3ull, 0x765da495b19c7b88ull, 0xc39d5cae7eb18c66ull, 0x6979e094f7963852ull }}, {{ 0xeda780a368842c9bull, 0x0a843afcfcad0cd1ull, 0xb59e3e8977558985ull, 0x9fa86dd8f01cd355ull, 0xa4259ed0f2ef7c00ull, 0x1ec2c5d1abde333bull }}, {{ 0x488b06621529be13ull, 0x692a4de1dec28033ull, 0x182e715ea9575f32ull, 0x3c944a7961204159ull, 0x697834297d5ad806ull, 0x339bba30b6ae0054ull }}, {{ 0xd56e3fd4d3a16cbcull, 0x1ba70ad2b3990200ull, 0xf1d06db29d69b7f8ull, 0x5dcae8bdcb428d7aull, 0x1eb2099ee58c703eull, 0x041545e722cc034cull }}, {{ 0x564e7e50444e3f5cull, 0x14866c3b03fa1408ull, 0x722448fa26212fb1ull, 0xa9ed1769f09986cdull, 0x32f46034f77c626full, 0x28d4bb075bf820f9ull }}, {{ 0x5f10ef22ab0e799aull, 0xcd403a4e27c4c853ull, 0x756ad9c57d4bdceaull, 0xa342ea2365ff4406ull, 0xfd8bc211aadbd85cull, 0x984f4e4997b149bbull }}, {{ 0xb6a9575aae90c005ull, 0x0482470d8dafd341ull, 0x962c81b6e4f6a12cull, 0x609d2561fbf8a840ull, 0xe77594b0ac96739eull, 0xf3190edfecece157ull }}, {{ 0x229d698ad1a78030ull, 0x2d16c68788de4091ull, 0xddbd1124f1a24bb8ull, 0xc62375d3d7b69285ull, 0x0a97cee6bde0842full, 0x7efa94bf4140cd6full }}, {{ 0x5a261f6c308b01dcull, 0xc2e3c14b58ae85abull, 0xa962ab717056f531ull, 0xbd629a466d21b93aull, 0x69ee15036ac529ddull, 0xf5c9cf788c880656ull }}, {{ 0x857d3a39e56e129bull, 0x9ce58cf176d138b1ull, 0x9ddab26e636593f1ull, 0x65da06c043513c4aull, 0x234cd2222bb3a2a9ull, 0x99e21ab57d503f60ull }}, {{ 0x36e44642f64cba10ull, 0x20f7816ea42c36efull, 0x2a8af84fe1f7c770ull, 0xfa844382a12c5aeaull, 0x61003555b5045a9dull, 0x02d50b16e52279c1ull }}, {{ 0x24eabe9d9eff449bull, 0x49ab0e5269ba2558ull, 0xa96db31ed3adca61ull, 0xc92aa31a4bbb8d25ull, 0xca021559122b8a2bull, 0x1c526ee4f358c18dull }}, {{ 0x712b722835f8ae12ull, 0xe0ae8f3821457571ull, 0x9e48ff3444c9e7ccull, 0xdbaa5f06f5538378ull, 0xe414d57ab5b365b5ull, 0x1b3854f181778f89ull }}, {{ 0x6bb275921bb6ccb3ull, 0xc6d198314cb6966eull, 0x2ed9f80aafe30e00ull, 0x94a7b645954322b6ull, 0xe8d056cb1901f91aull, 0x1033516f0eab9b62ull }}, {{ 0x34f897b51523ff01ull, 0xc42ff1ecff21e050ull, 0xd483b06adede8c07ull, 0xce8d1eb7d49f5b1dull, 0x182363eefa13bb09ull, 0xa2012e5692b411ddull }}, {{ 0x11b5ed12d367f60bull, 0xa9df7341f752c322ull, 0x4d24e42cb4b1784dull, 0x1183332e4e398f2aull, 0xf161e755c4c54e62ull, 0x540bcf61bb08b2a2ull }}, {{ 0xb11b42bc420f9c6full, 0xa2ba8093a93b9f54ull, 0x0370e9bf0eeeb308ull, 0xaf1fffcf0e3f97a7ull, 0x6dd30959afb50fd4ull, 0x487619d14e56fa5dull }}, {{ 0xeb109b5a949c1c5aull, 0x5b4905c49c54394eull, 0x226921769552fe56ull, 0xd73ffe168e7bec86ull, 0x4a3e5d80dd129e4eull, 0xd49d022d0f65c7a6ull }}, {{ 0x2ea61189ce191b86ull, 0x90da39ae1b4a3d15ull, 0x581b4ea1d53def5full, 0x687fece190d73d3dull, 0xe66fa708a2ba2f14ull, 0x4e2215c299f9cc7eull }}, {{ 0xd27caf620cfb133aull, 0xa88640cd10e662d3ull, 0x71111252546b59bbull, 0x14ff40cfa8686465ull, 0x005c86565b45d6ccull, 0x0d54d99a03c1fcf5ull }}, {{ 0x38ded9d481cec040ull, 0x953e8802a8ffdc46ull, 0x6aaab7374c318154ull, 0xd1f8881c9413ebf6ull, 0x039d3f5f90ba63f8ull, 0x855080042593e192ull }}, {{ 0x38b4824d12138285ull, 0xd471501a99fe9abeull, 0x2aab2828f9ef0d4dull, 0x33b5511dc8c737a0ull, 0x242479bba747e7b8ull, 0x3525002977c6cfb4ull }}, {{ 0x370d1702b4c31931ull, 0x4c6d210a03f20b6eull, 0xaaaf9199c356850aull, 0x05152b29d7c82c41ull, 0x696cc15488cf0d32ull, 0x1372019eadc41d09ull }}, {{ 0x2682e61b0f9efbe8ull, 0xfc434a642774724eull, 0xaadbb001a1613266ull, 0x32d3afa26dd1ba90ull, 0x1e3f8d4d581683f4ull, 0xc2741032c9a9225eull }}, {{ 0x811cfd0e9c35d70dull, 0xdaa0e7e98a8c770dull, 0xac94e0104dcbf805ull, 0xfc44dc584a3149a6ull, 0x2e7b850570e12789ull, 0x9888a1fbe09b57adull }}, {{ 0x0b21e2921a1a6684ull, 0x8a490f1f697ca687ull, 0xbdd0c0a309f7b03aull, 0xdab09b72e5ece082ull, 0xd0d3323668cb8b63ull, 0xf55653d6c6116cc3ull }}, {{ 0x6f52d9b505080129ull, 0x66da973a1ede8146ull, 0x6a27865e63ace249ull, 0x8ae6127cfb40c51bull, 0x283ff62017f371e6ull, 0x955f4663bcae3fa6ull }}, {{ 0x593c811232500b98ull, 0x0489e84534b10cc0ull, 0x258b3fafe4c0d6deull, 0x6cfcb8e1d087b312ull, 0x927f9d40ef827301ull, 0xd5b8bfe55ece7c7dull }}, {{ 0x7c5d0ab5f72073ecull, 0x2d6312b40eea7f83ull, 0x77707cdeef8864acull, 0x41df38d2254cfeb5ull, 0xb8fc24895b187e0eull, 0x59377ef5b410dce7ull }}, {{ 0xdba26b1ba7448736ull, 0xc5debb089528fb22ull, 0xaa64e0b55b53eeb9ull, 0x92b838357501f316ull, 0x39d96d5d8ef4ec8eull, 0x7c2af59908a8a10dull }}, {{ 0x94582f1488ad481aull, 0xbab34e55d399cf5cull, 0xa7f0c71591475341ull, 0xbb32321692137ee2ull, 0x427e45a795913d91ull, 0xd9ad97fa56964a84ull }}, {{ 0xcb71d6cd56c4d108ull, 0x4b010f5a4402199dull, 0x8f67c6d7acc94091ull, 0x4ff5f4e1b4c2f4daull, 0x98eeb88bd7ac67b1ull, 0x80c7efc761dee92aull }}, {{ 0xf272640563b02a4full, 0xee0a9986a8150029ull, 0x9a0dc46cbfdc85acull, 0x1f9b90d10f9d9089ull, 0xf95335766cbc0cedull, 0x07cf5dc9d2b51ba9ull }}, {{ 0x7877e835e4e1a716ull, 0x4c69ff4290d201a3ull, 0x0489ac3f7e9d38c1ull, 0x3c13a82a9c27a560ull, 0xbd4016a03f588143ull, 0x4e19a9e23b1314a3ull }}, {{ 0xb4af121af0d086dcull, 0xfc23f899a8341062ull, 0x2d60ba7af224378cull, 0x58c491aa198c75c0ull, 0x6480e24279750ca0ull, 0x0d00a2d64ebece65ull }}, {{ 0x0ed6b50d6825449dull, 0xd967b6009208a3dbull, 0xc5c748cd756a2b81ull, 0x77adb0a4ff7c9981ull, 0xed08d698be927e43ull, 0x82065c5f13740ff5ull }}, {{ 0x946312861174ae21ull, 0x7e0d1c05b456668eull, 0xb9c8d8069625b312ull, 0xacc8e671faddff11ull, 0x425861f771b8eea2ull, 0x143f9bb6c2889f9bull }}, {{ 0xcbdeb93cae8ecd4dull, 0xec8318390b600191ull, 0x41d87041dd78feb8ull, 0xbfd90073ccabf6b1ull, 0x9773d3aa7139525aull, 0xca7c152399563c10ull }}, {{ 0xf6b33c5ed1940503ull, 0x3d1ef23a71c00fb1ull, 0x92746292a6b9f339ull, 0x7e7a0485feb7a2ecull, 0xea8644a86c3d378bull, 0xe8d8d363fd5e58a5ull }}, {{ 0xa3005bb42fc8321aull, 0x6335764871809cf3ull, 0xb88bd9ba8343803cull, 0xf0c42d3bf32c5d3dull, 0x293eae943a642b72ull, 0x187841e7e5af767bull }}, {{ 0x5e039509ddd1f500ull, 0xe0169ed46f062184ull, 0x3576814920a3025bull, 0x67a9c4577fbba469ull, 0x9c72d1ca47e9b27dull, 0xf4b2930ef8daa0cfull }}, {{ 0xac23d262aa3391ffull, 0xc0e2344c563d4f2bull, 0x16a10cdb465e1796ull, 0x0ca1ab6afd546c1cull, 0x1c7c31e6cf20f8e6ull, 0x8ef9be95b88a481cull }}, {{ 0xb96637daa603b3f7ull, 0x88d60afb5e6517b4ull, 0xe24a8090bfacebe3ull, 0x7e50b22de54c3918ull, 0x1cd9f3041749b8fcull, 0x95c171d93566d119ull }}, {{ 0x3dfe2e8a7c2507a2ull, 0x585c6dd1aff2ed0full, 0xd6e905a77cc136e3ull, 0xef26f5caf4fa3af8ull, 0x20837e28e8e139dcull, 0xd98e727c16042afbull }}, {{ 0x6bedd168d9724c4full, 0x739c4a30df7d4298ull, 0x651a388adf8c24e1ull, 0x578599ed91c64db8ull, 0x4522ed9918cc42a1ull, 0x7f9078d8dc29adcfull }}, {{ 0x374a2e187e76fb16ull, 0x841ae5e8bae499f4ull, 0xf306356cbb7970ceull, 0x6b380347b1bf0933ull, 0xb35d47faf7fa9a4dull, 0xfba4b87899a0ca18ull }}, {{ 0x28e5ccf4f0a5cedeull, 0x290cfb174cee038aull, 0x7e3e163f52be6811ull, 0x303020ccf1765c07ull, 0x01a4cfcdafca0706ull, 0xd46f34b60047e4f7ull }}, {{ 0x98fa0191667a14a9ull, 0x9a81cee9014c2365ull, 0xee6cde793b7010abull, 0xe1e148016e9f984aull, 0x10701e08dde4463dull, 0x4c580f1c02cef1a6ull }}, {{ 0xf9c40fae00c4ce98ull, 0x0912151a0cf961f7ull, 0x5040b0bc5260a6b4ull, 0xd2ccd00e523bf2edull, 0xa4612c58aaeabe6aull, 0xfb7097181c15707cull }}, {{ 0xc1a89ccc07b011ecull, 0x5ab4d30481bdd3afull, 0x2286e75b37c68308ull, 0x3c00208f36577d45ull, 0x6bcbbb76ad2b702cull, 0xd265e6f118d664deull }}, {{ 0x90961ff84ce0b337ull, 0x8b103e2d116a44ddull, 0x594509902dc11e53ull, 0x580145981f6ae4b3ull, 0x35f552a2c3b261baull, 0x37fb056af85ff0b0ull }}, {{ 0xa5dd3fb300c70023ull, 0x6ea26dc2ae26b0a7ull, 0x7cb25fa1c98b2f43ull, 0x700cb7f13a2cef01ull, 0x1b953a5ba4f7d147ull, 0x2fce362db3bf66e2ull }}, {{ 0x7aa47cfe07c60161ull, 0x5258499acd82e68cull, 0xdef7bc51df6fd8a2ull, 0x607f2f6c45c1560eull, 0x13d4479471ae2ccaull, 0xde0e1dc9057a04d5ull }}, {{ 0xca6ce1ec4dbc0dc8ull, 0x3772e00c071d017cull, 0xb5ad5b32ba5e7657ull, 0xc4f7da3ab98d5c94ull, 0xc64acbcc70cdbfe7ull, 0xac8d29da36c43052ull }}, {{ 0xe840d33b095889d2ull, 0x2a7cc07847220edfull, 0x18c58ffb47b09f68ull, 0xb1ae864b3f859dcfull, 0xbeebf5fc68097f0dull, 0xbd83a28623a9e33bull }}, {{ 0x1288404e5d756236ull, 0xa8df84b2c75494bfull, 0xf7b79fd0cce63a11ull, 0xf0d13ef07b382a16ull, 0x75379bdc105ef688ull, 0x6724593d64a2e055ull }}, {{ 0xb952830fa695d61dull, 0x98bb2efbc94dcf76ull, 0xad2c3e2800fe44b0ull, 0x682c7564d031a4e5ull, 0x942c1698a3b5a159ull, 0x076b7c65ee5cc356ull }}, {{ 0x3d391e9c81da5d23ull, 0xf74fd5d5dd0a1aa3ull, 0xc3ba6d9009eeaee5ull, 0x11bc95f021f070f8ull, 0xc9b8e1f665184d7eull, 0x4a32dbfb4f9fa161ull }}, {{ 0x643b321d1287a35aull, 0xa91e5a5aa2650a60ull, 0xa54847a06352d4fbull, 0xb15ddb61536469b7ull, 0xe138d39ff2f306ecull, 0xe5fc97d11c3c4dd1ull }}, {{ 0xea4ff522b94c6186ull, 0x9b2f878a57f267c3ull, 0x74d2cc43e13c51d4ull, 0xedaa91cd41ec212cull, 0xcc38443f7d7e453eull, 0xfbddee2b1a5b0a32ull }}, {{ 0x271f935b3cfbcf3cull, 0x0fdb4b676f780da7ull, 0x903bfaa6cc5b324eull, 0x48a9b20493394bbcull, 0xfa32aa7ae6eeb475ull, 0xd6ab4daf078e65fbull }}, {{ 0x873bc19061d6185aull, 0x9e90f20a5ab08887ull, 0xa257ca83fb8ff70cull, 0xd6a0f42dc03cf55dull, 0xc5faa8cd05530c94ull, 0x62b108d64b8ffbd7ull }}, {{ 0x48558fa3d25cf385ull, 0x31a974678ae5554bull, 0x576de927d39fa67eull, 0x624989c9826195a8ull, 0xbbca9802353e7dd0ull, 0xdaea585ef39fd66dull }}, {{ 0xd3579c6637a18330ull, 0xf09e8c0b6cf554f0ull, 0x6a4b1b8e443c80edull, 0xd6df61df17cfd893ull, 0x55e9f0161470ea23ull, 0x8d2773b5843e6049ull }}, {{ 0x416c1bfe2c4f1fdcull, 0x6631787241955168ull, 0x26ef138eaa5d094bull, 0x64b9d2b6ee1e75c2ull, 0x5b2360dccc692566ull, 0x838a85172a6fc2ddull }}, {{ 0x8e3917edbb173e97ull, 0xfdeeb4768fd52e12ull, 0x8556c392a7a25cf1ull, 0xef423b254d309995ull, 0x8f61c89ffc1b75ffull, 0x236932e7a85d9ca5ull }}, {{ 0x8e3aef494ee871eaull, 0xeb530ca19e53ccb9ull, 0x3563a3ba8c57a173ull, 0x58964f7503e5ffd7ull, 0x99d1d63fd9129bffull, 0x621bfd0c93a81e77ull }}, {{ 0x8e4d58dd15147328ull, 0x313e7e502f45ff3full, 0x15e465497b6c4e87ull, 0x75df1a9226fbfe68ull, 0x02325e7e7aba17f9ull, 0xd517e27dc49130acull }}, {{ 0x8f0578a2d2cc7f8bull, 0xec70ef21d8bbf87bull, 0xdaebf4ded23b1147ull, 0x9ab709b585d7f010ull, 0x15f7b0f0cb44efbeull, 0x52eed8e9adabe6b8ull }}, {{ 0x9636b65c3bfcfb6full, 0x3c6957527757b4d3ull, 0x8d3790b4364eaccfull, 0x0b2661173a6f60a8ull, 0xdbace967f0b15d72ull, 0x3d547920c8b70330ull }}, {{ 0xde231f9a57e1d251ull, 0x5c1d6938a96d1043ull, 0x842ba70a1f12c018ull, 0x6f7fcae84859c695ull, 0x94c11e0f66eda674ull, 0x654cbb47d7261fe8ull }}, {{ 0xad5f3c076ed2372cull, 0x99261c369e42a2a6ull, 0x29b4866536bb80f3ull, 0x5afded12d381c1d7ull, 0xcf8b2c9a0548808cull, 0xf4ff50ce677d3f15ull }}, {{ 0xc5b8584a543627b9ull, 0xfb7d1a222e9a5a82ull, 0xa10d3ff423530983ull, 0x8deb42bc43119267ull, 0x1b6fbe0434d5057bull, 0x91f928100ae476daull }}, {{ 0xb93372e74a1d8d3aull, 0xd2e30555d207891bull, 0x4a847f89613e5f27ull, 0x8b309b5a9eafb80cull, 0x125d6c2a105236d3ull, 0xb3bb90a06ceca485ull }}, {{ 0x3c027d08e5278443ull, 0x3cde355a344b5b15ull, 0xe92cfb5dcc6fb78eull, 0x6fe6118a32dd307aull, 0xb7a639a4a3362443ull, 0x0553a644413e6d32ull }}, {{ 0x5818e258f38b2aa3ull, 0x60ae15860af18ed4ull, 0x1bc1d1a9fc5d2b8eull, 0x5efcaf65fca3e4cdull, 0x2c7e406e601d6aa2ull, 0x35447eaa8c7043fbull }}, {{ 0x70f8d779836faa5bull, 0xc6ccd73c6d6f944bull, 0x159230a3dba3b38full, 0xb5ded9fbde66f003ull, 0xbcee844fc1262a57ull, 0x14acf2a97c62a7cfull }}, {{ 0x69b86abf225ca78full, 0xc400685c465bcaf2ull, 0xd7b5e6669465039dull, 0x1ab483d6b005601eull, 0x61512b1d8b7da76dull, 0xcec17a9edbda8e1dull }}, {{ 0x21342b77579e8b99ull, 0xa804139abf95ed78ull, 0x6d1b0001cbf22429ull, 0x0b0d2662e035c134ull, 0xcd2baf2772e88a43ull, 0x138eca3496898d25ull }}, {{ 0x4c09b2a96c3173f5ull, 0x9028c40b7bdb46b1ull, 0x430e0011f77569a0ull, 0x6e837fdcc2198c0cull, 0x03b4d78a7d15669eull, 0xc393e60de15f837aull }}, {{ 0xf860fa9e39ee8796ull, 0xa197a872d690c2ecull, 0x9e8c00b3aa962045ull, 0x5122fe9f94ff787aull, 0x25106b68e2d60230ull, 0xa3c6fc8acdbb22c4ull }}, {{ 0xb3c9ca2e43514bd9ull, 0x4fec947c61a79d41ull, 0x31780704a9dd42b8ull, 0x2b5df23bd1fab4caull, 0x72a43218dc5c15e3ull, 0x65c5dd6c094f5ba9ull }}, {{ 0x05e1e5cea12cf679ull, 0x1f3dccdbd08c2491ull, 0xeeb0462ea2a49b33ull, 0xb1ab765633cb0fe5ull, 0x7a69f4f89b98dadfull, 0xf9baa6385d19949eull }}, {{ 0x3ad2fa124bc1a0b8ull, 0x386a009625796daaull, 0x52e2bdd25a6e0fffull, 0xf0b29f5e05ee9efbull, 0xc82391b613f88cbcull, 0xc14a7e33a2ffce30ull }}, {{ 0x4c3dc4b6f5904731ull, 0x342405dd76be48a6ull, 0x3cdb6a37884c9ff8ull, 0x66fa39ac3b5235d1ull, 0xd163b11cc7b57f61ull, 0x8ce8ee045dfe0de7ull }}, {{ 0xfa69af2597a2c7e7ull, 0x09683aa6a36ed67eull, 0x6092262b52fe3fb2ull, 0x05c640ba51361a2cull, 0x2de4eb1fcd16f9ceull, 0x81194c2babec8b0eull }}, {{ 0xc820d777ec5bcf03ull, 0x5e124a82625460f5ull, 0xc5b57db13dee7cf4ull, 0x39be87472c1d05bbull, 0xcaf12f3e02e5c20cull, 0x0afcf9b4b73d6e8dull }}, {{ 0xd1486aaf3b96161full, 0xacb6e917d74bc999ull, 0xb916e8ec6b50e18bull, 0x417148c7b9223955ull, 0xed6bd86c1cf9947aull, 0x6de1c10f28665189ull }}, {{ 0x2cd42ad853dcdd36ull, 0xbf251aee68f5e002ull, 0x3ae5193c3128cf74ull, 0x8e6cd7cd3b563d59ull, 0x4636743921bfccc6ull, 0x4ad18a9793ff2f63ull }}, {{ 0xc049ac7346a0a41cull, 0x77730d50199ac015ull, 0x4cf2fc59eb981a8full, 0x90406e04515e657cull, 0xbe208a3b517dffc1ull, 0xec2f69ebc7f7d9e0ull }}, {{ 0x82e0bc80c246691bull, 0xaa7e8521000b80d9ull, 0x017ddb8333f1099aull, 0xa2844c2b2daff6dbull, 0x6d4566512eebfd8full, 0x39da2335cfae82c7ull }}, {{ 0x1cc75d0796c01b0full, 0xa8f1334a0073087full, 0x0eea9320076a600aull, 0x592af9afc8dfa48eull, 0x44b5ff2bd537e79cull, 0x4285601a1cd11bcaull }}, {{ 0x1fc9a24be3810e97ull, 0x996c00e4047e54f7ull, 0x9529bf404a27c06aull, 0x7badc0ddd8bc6d8cull, 0xaf1bf7b6542f0c1bull, 0x9935c105202b15e6ull }}, {{ 0x3de056f6e30a91e8ull, 0xfe3808e82cef51a7ull, 0xd3a17882e58d8429ull, 0xd4c988aa775c477dull, 0xd717ad1f49d67912ull, 0xfc198a3341aedb02ull }}, {{ 0x6ac365a4de69b30full, 0xee305911c1593088ull, 0x444eb51cf78729a3ull, 0x4fdf56a8a99acaeaull, 0x66ecc338e260babcull, 0xd8ff660090d48e1cull }}, {{ 0x2ba1f870b020fe9aull, 0x4de37ab18d7be554ull, 0xab131321ab47a067ull, 0x1eb96296a00bed26ull, 0x053fa038d7c74b5bull, 0x79f9fc05a84d8d1cull }}, {{ 0xb453b466e149f201ull, 0x0ae2caef86d6f549ull, 0xaebebf50b0cc4409ull, 0x333dd9e240774382ull, 0x347c42386dc8f18full, 0xc3c3d83893078318ull }}, {{ 0x0b450c04cce3740dull, 0x6cdbed5b446594e1ull, 0xd3737926e7faa85aull, 0x006a82d684a8a31aull, 0x0cda963449d96f98ull, 0xa5a67235be4b1ef2ull }}, {{ 0x70b2783000e28880ull, 0x40974590abf7d0caull, 0x4282bb850fca9388ull, 0x04291c612e965f0cull, 0x8089de0ae27e5bf0ull, 0x788076196eef3574ull }}, {{ 0x66f8b1e008d954ffull, 0x85e8b7a6b7ae27e8ull, 0x991b53329de9c352ull, 0x299b1bcbd1dfb67aull, 0x0562ac6cd8ef9760ull, 0xb5049cfe5558168dull }}, {{ 0x05b6f2c0587d51f1ull, 0x3b172c832ccd8f14ull, 0xfb113ffa2b21a139ull, 0xa00f15f632bd20c9ull, 0x35dabc40795be9c1ull, 0x122e21ef5570e182ull }}, {{ 0x39257b8374e5336bull, 0x4ee7bd1fc00796c8ull, 0xceac7fc5af504c3cull, 0x4096db9dfb6347e3ull, 0x1a8b5a84bd972190ull, 0xb5cd53595668cf16ull }}, {{ 0x3b76d32290f4022eull, 0x150d633d804be3d2ull, 0x12bcfdb8d922fa5bull, 0x85e4942bd1e0cee6ull, 0x0971892f67e74fa2ull, 0x1a05417d601816ddull }}, {{ 0x52a43f59a98815c9ull, 0xd285e06702f6e636ull, 0xbb61e9387b5dc78eull, 0x3aedc9b632c814fcull, 0x5e6f5bda0f091c59ull, 0x04348ee5c0f0e4a2ull }}, {{ 0x3a6a79809f50d9d9ull, 0x393ac4061da4fe1full, 0x51d31c34d1a9cb94ull, 0x4d49e11dfbd0d1dfull, 0xb0599684965b1b7cull, 0x2a0d94f98968ee57ull }}, {{ 0x4828bf063928827dull, 0x3c4ba83d2871ed38ull, 0x323f1a1030a1f3caull, 0x04e2cb2bd62832b9ull, 0xe37fe12ddf8f12dbull, 0xa487d1bf5e194f6cull }}, {{ 0xd197763e3b9518e3ull, 0x5af4926394734432ull, 0xf67704a1e65385e6ull, 0x30dbefb65d91fb3bull, 0xe2fecbcabb96bc8eull, 0x6d4e3179acfd1a40ull }}, {{ 0x2fea9e6e53d2f8e0ull, 0x8d8db7e3cc80a9fcull, 0xa0a62e52ff433affull, 0xe8975d1fa7b3d057ull, 0xddf3f5eb53e35d8dull, 0x450deec0c1e30688ull }}, {{ 0xdf2a304f463db8c4ull, 0x87892ee5fd06a3d9ull, 0x467dcf3df8a04dfbull, 0x15e9a33c8d06236cull, 0xab879b3146e1a78bull, 0xb28b538792de4158ull }}, {{ 0xb7a5e318be6937a6ull, 0x4b5bd4fbe2426682ull, 0xc0ea186bb6430bd3ull, 0xdb20605d823d623aull, 0xb34c0fecc4d08b6eull, 0xf971434bbcae8d76ull }}, {{ 0x2c7adef7701c2c7full, 0xf19651d6d698011bull, 0x8924f4351e9e7640ull, 0x8f43c3a71665d64bull, 0x00f89f3fb0257254ull, 0xbe6ca0f55ed186a3ull }}, {{ 0xbcccb5aa6119bcf7ull, 0x6fdf326461f00b0full, 0x5b718a1332309e89ull, 0x98a5a486dffa5ef3ull, 0x09b6387ce176774dull, 0x703e4995b42f425eull }}, {{ 0x5fff18a7cb0161abull, 0x5eb7f7ebd3606e9dull, 0x926f64bff5e6315eull, 0xf6786d44bfc7b581ull, 0x611e34e0cea0a907ull, 0x626edfd909d897acull }}, {{ 0xbff6f68dee0dd0aeull, 0xb32faf3641c45225ull, 0xb859ef7f9afdedafull, 0xa0b444af7dcd170full, 0xcb2e10c812469a4full, 0xd854be7a6275ecbbull }}, {{ 0x7fa5a18b4c8a26cbull, 0xffdcd81e91ab3579ull, 0x33835afc0deb48dcull, 0x470aaedaea02e69dull, 0xefcca7d0b6c2071cull, 0x734f70c7d89b3f55ull }}, {{ 0xfc784f70fd6583e9ull, 0xfea07131b0b016beull, 0x03218dd88b30d8a1ull, 0xc66ad48d241d0224ull, 0x5dfe8e272394471aull, 0x811a67ce7610795bull }}, {{ 0xdcb31a69e5f7271eull, 0xf2446bf0e6e0e375ull, 0x1f4f8a756fe87653ull, 0xc02c4d8369221568ull, 0xabf18d8763cac70bull, 0x0b080e109ca4bd91ull }}, {{ 0x9eff0822fba7872aull, 0x76ac376904c8e29aull, 0x391b68965f149f47ull, 0x81bb07221b54d611ull, 0xb76f8749e5ebc675ull, 0x6e508ca61e6f67b0ull }}, {{ 0x35f6515dd48b47a7ull, 0xa2ba2a1a2fd8da0aull, 0x3b1215dfb6ce38caull, 0x114e475511505cacull, 0x2a5b48e2fb35c097ull, 0x4f257e7d305a0ce7ull }}, {{ 0x1b9f2daa4d70cc8aull, 0x5b45a505de788466ull, 0x4eb4dabd240e37eaull, 0xad0ec952ad239ebaull, 0xa790d8ddd01985e6ull, 0x1776f0e3e3848107ull }}, {{ 0x1437c8a70667fd64ull, 0x90b8723ab0b52bfdull, 0x13108b63688e2f27ull, 0xc293dd3ac3643347ull, 0x8ba878aa20ff3b02ull, 0xeaa568e6e32d0a4cull }}, {{ 0xca2dd686400fe5e6ull, 0xa734764ae713b7e2ull, 0xbea571e2158dd78bull, 0x99c6a44ba1ea00c6ull, 0x7494b6a549f84e1bull, 0x2a761904dfc266fdull }}, {{ 0xe5ca613e809efafcull, 0x880c9eed06c52edbull, 0x727672d4d78a6b74ull, 0x01c26af4532407c3ull, 0x8dcf2274e3b30d14ull, 0xa89cfa30bd9805e6ull }}, {{ 0xf9e7cc710635cdd9ull, 0x507e354243b3d496ull, 0x78a07c506b68328dull, 0x11982d8b3f684da2ull, 0x8a175890e4fe82c8ull, 0x9621c5e767f03b01ull }}, {{ 0xc30dfc6a3e1a0a7cull, 0x24ee1496a5064de5ull, 0xb644db243211f985ull, 0xaff1c7707a130858ull, 0x64e975a8f1f11bd0ull, 0xdd51bb0a0f624e0full }}, {{ 0x9e8bdc266d0468dcull, 0x714ccde2723f0af9ull, 0x1eb08f69f4b3bf33ull, 0xdf71ca64c4be5377ull, 0xf11e9899736b1626ull, 0xa5314e6499d70c99ull }}, {{ 0x31769980422c189bull, 0x6d000ad876766dc0ull, 0x32e59a238f057802ull, 0xba71e7efaf6f42a7ull, 0x6b31f5fe822edd84ull, 0x73ed0fee02667e03ull }}, {{ 0xeea1ff0295b8f60dull, 0x42006c74a0a04981ull, 0xfcf805639636b018ull, 0x48730f5cda589a87ull, 0x2ff39bf115d4a72full, 0x87429f4c1800ec22ull }}, {{ 0x5253f619d9399c87ull, 0x94043c8e4642df13ull, 0xe1b035e3de22e0f2ull, 0xd47e99a08776094full, 0xdf84176ada4e87d8ull, 0x489a38f8f0093955ull }}, {{ 0x37479d027c401d44ull, 0xc82a5d8ebe9cb6c1ull, 0xd0e21ae6ad5cc979ull, 0x4cf200454a9c5d1eull, 0xbb28ea2c87114e78ull, 0xd60639b9605c3d5aull }}, {{ 0x28cc2218da8124abull, 0xd1a7a793721f238cull, 0x28d50d02c59fdec1ull, 0x017402b4ea1ba334ull, 0x4f9925bd46ad10b3ull, 0x5c3e413dc39a658bull }}, {{ 0x97f954f8890b6eb1ull, 0x308c8bc275376379ull, 0x9852821bb83eb392ull, 0x0e881b1125146009ull, 0x1bfb7964c2c2a6feull, 0x9a6e8c69a407f771ull }}, {{ 0xefbd51b55a7252e5ull, 0xe57d75989429e2bfull, 0xf3391515327303b5ull, 0x91510eab72cbc05full, 0x17d2bdef9b9a85ecull, 0x08517c20684faa6bull }}, {{ 0x5d65311588773cf6ull, 0xf6e697f5c9a2db7full, 0x803ad2d3f87e251aull, 0xad2a92b27bf583bfull, 0xee3b6b5c14093b3dull, 0x532ed944131ca82eull }}, {{ 0xa5f3ead754a8619dull, 0xa501ef99e05c92f9ull, 0x024c3c47b4ed730dull, 0xc3a9baf8d797257bull, 0x4e523198c85c5068ull, 0x3fd47ca8bf1e91d5ull }}, {{ 0x7b872c694e93d023ull, 0x72135c02c39dbdc0ull, 0x16fa5acd11467e88ull, 0xa4a14db86be776ceull, 0x0f35eff7d39b2417ull, 0x7e4cde977731b255ull }}, {{ 0xd347bc1d11c62161ull, 0x74c1981ba4296984ull, 0xe5c78c02acc0f154ull, 0x6e4d0934370aa40cull, 0x981b5fae440f68ecull, 0xef00b1eaa7f0f752ull }}, {{ 0x40cd5922b1bd4dc7ull, 0x8f8ff114699e1f30ull, 0xf9cb781abf896d4cull, 0x4f025c0a266a6880ull, 0xf111bccea89a193cull, 0x5606f32a8f69a939ull }}, {{ 0x88057b5af16509c6ull, 0x9b9f6acc202d37e2ull, 0xc1f2b10b7b5e44fdull, 0x1617986580281509ull, 0x6ab160129604fc5bull, 0x5c457fa99a209c43ull }}, {{ 0x5036d18d6df261baull, 0x143a2bf941c42ed9ull, 0x937aea72d1aeb1e8ull, 0xdcebf3f70190d261ull, 0x2aedc0b9dc31db8eull, 0x9ab6fca005461aa2ull }}, {{ 0x22242f864b77d148ull, 0xca45b7bc91a9d47dull, 0xc2cd287c30d2f310ull, 0xa13787a60fa837cfull, 0xad49874299f29394ull, 0x0b25de4034bd0a55ull }}, {{ 0x5569db3ef2ae2cd3ull, 0xe6b92d5db0a24ce3ull, 0x9c0394d9e83d7ea7ull, 0x4c2b4c7c9c922e1dull, 0xc4df489a0379c3ceull, 0x6f7aae820f626758ull }}, {{ 0x562290757acdc03eull, 0x033bc5a8e65700e1ull, 0x1823d0831266f28full, 0xf9b0fcde1db5cd28ull, 0xb0b8d60422c1a60eull, 0x5acad11499d80977ull }}, {{ 0x5d59a496cc098268ull, 0x2055b898ff6608cdull, 0xf166251eb8057996ull, 0xc0e9e0ad291a0390ull, 0xe7385c295b907c95ull, 0x8bec2ace02705eacull }}, {{ 0xa5806de3f85f180dull, 0x435935f9f9fc5805ull, 0x6dfd73333036bfddull, 0x8922c6c39b0423a9ull, 0x0833999d93a4ddd9ull, 0x7739ac0c1863b2c1ull }}, {{ 0x77044ae7b3b6f080ull, 0xa17c1bc3c3db7038ull, 0x4be67fffe2237ea4ull, 0x5b5bc3a40e29649eull, 0x52040027c470aa7full, 0xa840b878f3e4fb8aull }}, {{ 0xa62aed0d052564fcull, 0x4ed915a5a6926234ull, 0xf700fffed562f26eull, 0x9195a4688d9dee2eull, 0x3428018dac66a8f9ull, 0x928734b986f1d367ull }}, {{ 0x7dad42823375f1d8ull, 0x147ad87881b7d60eull, 0xa609fff455dd784full, 0xafd86c15882b4dd5ull, 0x09900f88bc0299bfull, 0xb9480f3f45724208ull }}, {{ 0xe8c49916029b726bull, 0xcccc74b5112e5c90ull, 0x7c63ff8b5aa6b316ull, 0xde7438d751b10a58ull, 0x5fa09b57581a017cull, 0x3cd09878b6769450ull }}, {{ 0x17adfadc1a127833ull, 0xfffc8f12abcf9da9ull, 0xdbe7fb718a82fee3ull, 0xb08a386930ea6774ull, 0xbc46116971040ee0ull, 0x6025f4b720a1cb23ull }}, {{ 0xeccbcc9904b8b1faull, 0xffdd96bab61c289aull, 0x970fd26f691df4e7ull, 0xe566341be9280a90ull, 0x5abcae1e6a2894c6ull, 0xc17b8f274651ef65ull }}, {{ 0x3ff5fdfa2f36f3c7ull, 0xfea7e34b1d19960dull, 0xe69e385a1b2b910full, 0xf5fe09171b9069a5ull, 0x8b5ecd302595cfc4ull, 0x8ed39788bf3359f5ull }}, {{ 0x7f9bebc5d82585c6ull, 0xf28ee0ef22ffdc84ull, 0x022e33850fb3aa9full, 0x9bec5ae713a4207bull, 0x71b403e177da1db1ull, 0x9443eb5778018397ull }}, {{ 0xfc1735ba717739c0ull, 0x7994c9575dfe9d2cull, 0x15ce03329d04aa3full, 0x173b8d06c46944ceull, 0x710826ceae8528f0ull, 0xcaa7316ab00f23eaull }}, {{ 0xd8e819486ea84180ull, 0xbfcfdd69abf223c1ull, 0xda0c1ffa222ea67aull, 0xe8538243ac1cb00cull, 0x6a518412d1339960ull, 0xea87ee2ae0976728ull }}, {{ 0x7910fcd452928efdull, 0x7e1ea620b7756592ull, 0x84793fc555d280cbull, 0x134316a4b91ee080ull, 0x272f28bc2c03fdc9ull, 0x294f4dacc5ea0794ull }}, {{ 0xbaa9e04b39b995ddull, 0xed327d472a95f7b8ull, 0x2cbc7db55a3907f2ull, 0xc09ee26f3b34c505ull, 0x87d79759b827e9daull, 0x9d1908bfbb244bc9ull }}, {{ 0x4aa2c2f0413fdaa6ull, 0x43f8e4c7a9dbad37ull, 0xbf5ce915863a4f7dull, 0x8634d858500fb233ull, 0x4e6be981318f228bull, 0x22fa577d4f6af5dfull }}, {{ 0xea5b9d628c7e8a7full, 0xa7b8efcca294c428ull, 0x79a11ad73e471ae4ull, 0x3e107373209cf605ull, 0x10371f0bef975973ull, 0x5dc76ae51a2d9ab9ull }}, {{ 0x279425d97cf168f9ull, 0x8d395dfe59cfa999ull, 0xc04b0c686ec70ceeull, 0x6ca4827f46219c36ull, 0xa22736775be97e80ull, 0xa9ca2cf305c80b3aull }}, {{ 0x8bc97a7ee16e19bfull, 0x843dabef821c9ffbull, 0x82ee7c1453c68151ull, 0x3e6d18f8bd501a23ull, 0x558820a9971ef104ull, 0xa1e5c17e39d0704aull }}, {{ 0x75dec8f4ce4d0175ull, 0x2a68b75b151e3fd3ull, 0x1d50d8cb45c10d2full, 0x7042f9b765210563ull, 0x5751469fe7356a2aull, 0x52f98eee422462e7ull }}, {{ 0x9ab3d9900f020e94ull, 0xa817298ed32e7e42ull, 0x252877f0b98a83d7ull, 0x629dc129f34a35dfull, 0x692cc23f081625a8ull, 0x3dbf954e956bdd09ull }}, {{ 0x0b067fa0961491cbull, 0x90e79f943fd0ee9aull, 0x7394af673f69266cull, 0xda298ba380e61ab7ull, 0x1bbf967650dd7893ull, 0x697bd511d636a25eull }}, {{ 0x6e40fc45dccdb1edull, 0xa90c3bca7e295204ull, 0x83ceda087a1b803dull, 0x859f746308fd0b2aull, 0x157be09f28a6b5c6ull, 0x1ed652b25e2257adull }}, {{ 0x4e89dabaa008f341ull, 0x9a7a55e8ed9d342cull, 0x26148454c5130268ull, 0x383a8bde59e26fa9ull, 0xd6d6c637968319c1ull, 0x345f3af7ad576cc2ull }}, {{ 0x11628b4a4059808dull, 0x08c75b19482409bbull, 0x7ccd2b4fb2be1816ull, 0x324976af82d85c9bull, 0x6463be2be11f018cull, 0x0bb84dacc56a3f9cull }}, {{ 0xadd970e6837f0584ull, 0x57c98efcd168614eull, 0xe003b11cfb6cf0dcull, 0xf6dea2db1c739e12ull, 0xebe56db6cb360f79ull, 0x753308bfb6267c1bull }}, {{ 0xca7e690122f6372bull, 0x6ddf95e02e13cd12ull, 0xc024eb21d241689bull, 0xa4b25c8f1c842cbcull, 0x36f64923f01c9ac3ull, 0x93fe577d1d80d917ull }}, {{ 0xe8f01a0b5d9e27b0ull, 0x4abbdac1ccc602bbull, 0x81712f52368e1612ull, 0x6ef79d971d29bf5full, 0x259edb67611e0ba4ull, 0xc7ef6ae327087ae8ull }}, {{ 0x19610471a82d8ce4ull, 0xeb568b91ffbc1b57ull, 0x0e6bd936218cdcb6ull, 0x55ac27e723a179bbull, 0x78349209cb2c746cull, 0xcf5a2cdf8654cd11ull }}, {{ 0xfdca2c7091c780edull, 0x316173b3fd591166ull, 0x90367c1d4f809f25ull, 0x58b98f07644ec14eull, 0xb20db461efbc8c3bull, 0x1985c0bb3f5002aeull }}, {{ 0xe9e5bc65b1cb0940ull, 0xedce8507e57aae05ull, 0xa220d9251b063773ull, 0x773f9649eb138d11ull, 0xf4890bd35d5d7a51ull, 0xff39875079201ad2ull }}, {{ 0x22f95bf8f1ee5c7dull, 0x4a11324ef6cacc3bull, 0x55487b730e3e2a87ull, 0xa87bdee32ec382b0ull, 0x8d5a7641a5a6c72eull, 0xf83f4924bb410c3dull }}, {{ 0x5dbd97b9734f9ce6ull, 0xe4abf715a3ebfa4full, 0x54d4d27e8e6da948ull, 0x94d6b4dfd3a31ae3ull, 0x85889e907883c7d2ull, 0xb278db6f508a7a67ull }}, {{ 0xa967ed3e811c2100ull, 0xeeb7a6d86737c719ull, 0x505038f190489cd8ull, 0xd06310be445f0ce1ull, 0x375631a4b525ce39ull, 0xf8b892592568c80bull }}, {{ 0x9e0f44710b1949fdull, 0x532c8474082dc700ull, 0x2322396fa2d62079ull, 0x23dea76eabb680cdull, 0x295df06f137a0e42ull, 0xb735b77b7617d070ull }}, {{ 0x2c98ac6a6efce3e2ull, 0x3fbd2c8851c9c606ull, 0x5f563e5c5c5d44bdull, 0x66b28a52b5210803ull, 0x9dab6456c2c48e95ull, 0x28192ad29cee2461ull }}, {{ 0xbdf6bc2855e0e6d2ull, 0x7d63bd5331e1bc3dull, 0xb95e6f9b9ba4af64ull, 0x02f9673b134a5021ull, 0x28b1eb639bad91d6ull, 0x90fbac3a214d6bd0ull }}, {{ 0x6ba359935ac90430ull, 0xe5e5653ff2d15a69ull, 0x3db05c14146ed9ecull, 0x1dbe084ec0e72151ull, 0x96f331e414c7b25cull, 0xa9d4ba454d063621ull }}, {{ 0x34617fc18bda29e0ull, 0xfaf5f47f7c2d881eull, 0x68e398c8cc548340ull, 0x296c531389074d2cull, 0xe57ff2e8cfccf799ull, 0xa24f46b5023e1d4full }}, {{ 0x0bcefd8f7685a2bcull, 0xcd9b8cfad9c7512eull, 0x18e3f7d7fb4d2089ull, 0x9e3b3ec35a4903bcull, 0xf6ff7d181e01abfbull, 0x5718c312166d251eull }}, {{ 0x7615e79aa1385b5cull, 0x081381cc81c92bccull, 0xf8e7ae6fd1034562ull, 0x2e5073a186da2558ull, 0xa5fae2f12c10b7d4ull, 0x66f79eb4e0437335ull }}, {{ 0x9cdb0c0a4c339199ull, 0x50c311fd11dbb5fcull, 0xb90cd05e2a20b5d4ull, 0xcf24844f44857579ull, 0x7bccdd6bb8a72e49ull, 0x05ac3310c2a28018ull }}, {{ 0x208e7866fa03aff7ull, 0x279eb3e2b2951bdeull, 0x3a8023ada5471a4bull, 0x176d2b18ad3696c1ull, 0xd600a6353687cee2ull, 0x38b9fea79a5900f4ull }}, {{ 0x4590b405c424dfa6ull, 0x8c3306daf9d316adull, 0x490164c874c706efull, 0xea43aef6c421e38cull, 0x5c067e14214e14d4ull, 0x3743f28c077a0990ull }}, {{ 0xb7a70839a970bc77ull, 0x79fe448dc23ee2c4ull, 0xda0defd48fc6455bull, 0x26a4d5a3a952e37aull, 0x9840ecc94d0cd051ull, 0x28a779784ac45fa3ull }}, {{ 0x2c8652409e675caaull, 0xc3eead899674dbafull, 0x848b5e4d9dbeb592ull, 0x827058649d3ce2ccull, 0xf2893fdd0280232bull, 0x968abeb2ebabbc63ull }}, {{ 0xbd3f368630099ea5ull, 0xa752c75fe09094d7ull, 0x2d71af08297317bbull, 0x186373ee2460dbfdull, 0x795c7ea219015fb3ull, 0xe16b72fd34b55be7ull }}, {{ 0x6478213de060326full, 0x893bc9bec5a5d06dull, 0xc670d6519e7eed54ull, 0xf3e2874d6bc897e3ull, 0xbd9cf254fa0dbcfeull, 0xce327de40f15970aull }}, {{ 0xecb14c6ac3c1f851ull, 0x5c55e173b87a2445ull, 0xc0685f3030f5454dull, 0x86d9490635d5eee5ull, 0x68217751c48961f5ull, 0x0df8eae896d7e66bull }}, {{ 0x3eecfc2ba593b32cull, 0x9b5ace8534c56abbull, 0x8413b7e1e994b505ull, 0x447cda3e1a5b54f9ull, 0x114ea931ad5dd397ull, 0x8bb92d15e46f0032ull }}, {{ 0x7541d9b477c4ffb3ull, 0x118c11340fb62b50ull, 0x28c52ed31fcf1238ull, 0xace0866d079151bfull, 0xad129bf0c5aa43e8ull, 0x753bc2daec5601f4ull }}, {{ 0x9492810cadb1fd02ull, 0xaf78ac089d1db124ull, 0x97b3d43f3e16b630ull, 0xc0c540424bad3177ull, 0xc2ba1767b8a6a716ull, 0x94559c8d3b5c138eull }}, {{ 0xcdb90a7ec8f3e215ull, 0xdab6b8562328eb6dull, 0xed064a786ce31de6ull, 0x87b48296f4c3eeabull, 0x9b44ea0d368286e3ull, 0xcb581d845198c393ull }}, {{ 0x093a68f3d986d4d3ull, 0x8b23335d5f99324aull, 0x423ee8b440df2b04ull, 0x4d0d19e58fa752b7ull, 0x10b12484211944e3ull, 0xf171272b2ff7a3c4ull }}, {{ 0x5c4819867f445042ull, 0x6f6001a5bbfbf6e4ull, 0x9675170a88b7ae2dull, 0x028302f79c893b28ull, 0xa6eb6d294afcb0e1ull, 0x6e6b87afdfac65a8ull }}, {{ 0x9ad0ff40f8ab2297ull, 0x59c0107957d7a4ebull, 0xe092e669572ccdc6ull, 0x191e1dac1d5c4f95ull, 0x8532439ceddee8caull, 0x50334cdebcbbf896ull }}, {{ 0x0c29f889b6af59e6ull, 0x8180a4bd6e6c7134ull, 0xc5bd001d67c009bfull, 0xfb2d28b9259b1bdaull, 0x33f6a4214ab517e4ull, 0x220100b35f57b5e1ull }}, {{ 0x79a3b56122d982fdull, 0x0f066f66503c6c08ull, 0xb96201260d80617bull, 0xcfc3973b780f168bull, 0x07a2694ceb12eef1ull, 0x540a0701b96d1accull }}, {{ 0xc06515cb5c7f1de2ull, 0x964059ff225c3854ull, 0x3dd40b7c8703ceceull, 0x1da3e852b096e175ull, 0x4c581d012ebd5572ull, 0x486446113e430bf8ull }}, {{ 0x83f2d9f19cf72ad3ull, 0xde8383f7579a334full, 0x6a4872dd46261411ull, 0x2867133ae5e4ce94ull, 0xfb71220bd3655675ull, 0xd3eabcac6e9e77b2ull }}, {{ 0x277c837021a7ac3aull, 0xb12327a96c06011bull, 0x26d47ca4bd7cc8b2ull, 0x9406c04cfaf011ccull, 0xd26b547641f56093ull, 0x472b5ebc5230acfdull }}, {{ 0x8add2261508cba41ull, 0xeb5f8c9e383c0b0full, 0x844cde6f66dfd6faull, 0xc8438301cd60b1f9ull, 0x38314c9e9395c5c3ull, 0xc7b1b35b35e6c1eaull }}, {{ 0x6ca357cd257f4685ull, 0x31bb7e2e32586e9bull, 0x2b00b05a04be65cdull, 0xd2a31e1205c6f3bfull, 0x31ecfe31c3d9b9a5ull, 0xccf101901b039326ull }}, {{ 0x3e616e0376f8c136ull, 0xf152edcdf7745212ull, 0xae06e3842f6ffa03ull, 0x3a5f2cb439c58577ull, 0xf341edf1a681407aull, 0x016a0fa10e23bf7dull }}, {{ 0x6fce4c22a5b78c1dull, 0x6d3d4a0baa8b34b6ull, 0xcc44e329da5fc427ull, 0x47b7bf0a41b736acull, 0x80934b70810c84c6ull, 0x0e249c4a8d657aebull }}, {{ 0x5e0ef95a792b7921ull, 0x4464e474a9700f20ull, 0xfab0dfa287bda98aull, 0xcd2d7666912822bfull, 0x05c0f2650a7d2fbeull, 0x8d6e1ae985f6cd33ull }}, {{ 0xac95bd88bbb2bb47ull, 0xabf0ec8e9e609743ull, 0xcae8bc594d689f66ull, 0x03c6a001ab915b7full, 0x398977f268e3dd74ull, 0x864d0d1f3ba403feull }}, {{ 0xbdd9675754fb50c3ull, 0xb7693d922fc5e8a4ull, 0xed175b7d06163a02ull, 0x25c24010b3ad92fdull, 0x3f5eaf7818e6a688ull, 0x3f028338546827eeull }}, {{ 0x6a7e096951d1279eull, 0x2a1c67b5ddbb166full, 0x42e992e23cde441bull, 0x799680a704c7bdebull, 0x79b2dab0f9028151ull, 0x761920334c118f4eull }}, {{ 0x28ec5e1d322b8c2dull, 0xa51c0d1aa94ee05aull, 0x9d1fbcd660aea90full, 0xbfe106862fcd6b30ull, 0xc0fc8ae9ba190d2eull, 0x9cfb4200f8af9910ull }}, {{ 0x993bad23f5b379c3ull, 0x7318830a9d14c385ull, 0x233d605fc6d29a9cull, 0x7eca413dde062fe6ull, 0x89dd6d2144fa83d3ull, 0x21d09409b6dbfaa7ull }}, {{ 0xfc54c3679902c19aull, 0x7ef51e6a22cfa337ull, 0x6065c3bdc43a0a1cull, 0xf3e68c6aac3ddefdull, 0x62a6434cb1c92642ull, 0x5225c8612497ca8bull }}, {{ 0xdb4fa20bfa1b8fffull, 0xf59330255c1c602full, 0xc3f9a569aa44651cull, 0x87017c2aba6ab5e5ull, 0xda7ea0fef1db7e9dull, 0x3579d3cb6dede971ull }}, {{ 0x911c5477c5139ff8ull, 0x97bfe175991bc1deull, 0xa7c07620a6abf321ull, 0x460ed9ab482b1af9ull, 0x88f249f57292f227ull, 0x16c245f24b4b1e72ull }}, {{ 0xab1b4cadb2c43fb0ull, 0xed7ece97fb1592b1ull, 0x8d849d4682b77f4full, 0xbc9480b0d1af0dc0ull, 0x5976e39679bd7588ull, 0xe396bb76f0ef3079ull }}, {{ 0xaf10fec8fbaa7cdfull, 0x46f411efced7baf0ull, 0x872e24c11b2af91full, 0x5dcd06e830d68985ull, 0x7ea4e3e0c1669757ull, 0xe3e352a56957e4bdull }}, {{ 0xd6a9f3d9d4a8e0b3ull, 0xc588b35e146d4d66ull, 0x47cd6f8b0fadbb38ull, 0xaa024511e8615f37ull, 0xf270e6c78e01e969ull, 0xe6e13a761d6eef66ull }}, {{ 0x62a386824e98c6ffull, 0xb75701accc450604ull, 0xce065b6e9cc95037ull, 0xa416b2b313cdb828ull, 0x786903cb8c131e20ull, 0x04cc489d26555a05ull }}, {{ 0xda63411711f7c5f7ull, 0x296610bffab23c2bull, 0x0c3f92521fdd222dull, 0x68e2fafec6093198ull, 0xb41a25f378bf2d46ull, 0x2ffad6237f558436ull }}, {{ 0x87e08ae6b3adbba3ull, 0x9dfca77fcaf659b6ull, 0x7a7bb7353ea355c3ull, 0x18ddcdf3bc5beff0ull, 0x09057b82b777c4c0ull, 0xdfcc5d62f9572a23ull }}, {{ 0x4ec56d0304c95461ull, 0x2bde8afded9f8121ull, 0xc8d52814726159a4ull, 0xf8aa0b855b975f64ull, 0x5a36d31b2aadaf80ull, 0xbdfba5ddbd67a55eull }}, {{ 0x13b6421e2fdd4bc9ull, 0xb6b16deb483b0b4dull, 0xd85390cc77cd8069ull, 0xb6a4733593e9b9efull, 0x86243f0faac8db09ull, 0x6bd47aa9660c75afull }}, {{ 0xc51e952ddea4f5daull, 0x22ee4b30d24e7102ull, 0x7343a7fcae070421ull, 0x226c8017c721435eull, 0x3d6a769cabd88e61ull, 0x364cca9dfc7c98dbull }}, {{ 0xb331d3cab2719a83ull, 0x5d4eefe837106a1bull, 0x80a48fdecc46294bull, 0x583d00edc74ca1b0ull, 0x6628a21eb6758fcbull, 0x1effea2bdcddf890ull }}, {{ 0xfff245eaf870091full, 0xa5155f1226a42514ull, 0x066d9eb3fabd9cf1ull, 0x72620949c8fe50e5ull, 0xfd96553320979df1ull, 0x35ff25b6a0abb5a3ull }}, {{ 0xff76bb2db4605b39ull, 0x72d5b6b5826972d1ull, 0x40483307cb682170ull, 0x77d45ce1d9ef28f2ull, 0xe7df53ff45ec2b6eull, 0x1bf7792246b51867ull }}, {{ 0xfaa34fc90bc39037ull, 0x7c592317181e7c33ull, 0x82d1fe4df2114e64ull, 0xae4ba0d283579976ull, 0x0eb947f8bb39b250ull, 0x17aabb56c312f40full }}, {{ 0xca611dda75a3a221ull, 0xdb7b5ee6f130da07ull, 0x1c33ef0b74ad0fecull, 0xcef44839216bfea1ull, 0x933ccfb75040f726ull, 0xecab51639ebd8896ull }}, {{ 0xe7cb2a889864554cull, 0x92d1b5056be8844dull, 0x1a0756728ec29f40ull, 0x158ad23b4e37f24bull, 0xc0601d292289a784ull, 0x3eb12de4336755e1ull }}, {{ 0x0defa955f3eb54f9ull, 0xbc31123637152b0bull, 0x04496079939a3885ull, 0xd76c36510e2f76efull, 0x83c1239b59608b28ull, 0x72ebcaea02095ad1ull }}, {{ 0x8b5c9d5b873151bcull, 0x59eab61e26d3ae6eull, 0x2addc4bfc4063539ull, 0x6a3a1f2a8ddaa556ull, 0x258b64117dc56f98ull, 0x7d35ed24145d8c2full }}, {{ 0x719e259347ed3154ull, 0x832b1d2d8444d051ull, 0xaca9af7da83e143dull, 0x264537a98a8a755dull, 0x7771e8aee9b65bf4ull, 0xe41b4368cba779d7ull }}, {{ 0x702d77c0cf43ed47ull, 0x1faf23c72ab0232eull, 0xbea0dae8926cca67ull, 0x7eb42c9f696895a8ull, 0xaa7316d5211f9789ull, 0xe910a217f48ac26aull }}, {{ 0x61c6ad8818a744c7ull, 0x3cd765c7aae15fd0ull, 0x72488d15b83fe807ull, 0xf309be3a1e15d897ull, 0xa87ee4534b3beb5eull, 0x1aa654ef8d6b982aull }}, {{ 0xd1c2c750f688afc3ull, 0x6069f9ccaccdbe23ull, 0x76d582d9327f1048ull, 0x7e616e452cda75eaull, 0x94f4eb40f05731b5ull, 0x0a7f515b8633f1aaull }}, {{ 0x319bc929a156dd9cull, 0xc423c1fec0096d66ull, 0xa4571c7bf8f6a2d3ull, 0xefce4eb3c0889b28ull, 0xd19130896367f116ull, 0x68f92d933e0770a9ull }}, {{ 0xf015dba04d64a816ull, 0xa96593f3805e45fdull, 0x6b671cd7b9a25c45ull, 0x5e0f130585560f96ull, 0x2fabe55de20f6ae5ull, 0x19bbc7c06c4a66a2ull }}, {{ 0x60da944305ee90dbull, 0x9df7c78303aebbebull, 0x3207206d40579ab8ull, 0xac96be37355c9be0ull, 0xdcb6f5aad49a2cf5ull, 0x0155cd843ae80255ull }}, {{ 0xc889ca9e3b51a88aull, 0x2badcb1e24d35731ull, 0xf4474444836c0b36ull, 0xbde36e28159e16c1ull, 0x9f2598ac4e05c198ull, 0x0d5a072a4d10175aull }}, {{ 0xd561ea2e5130955full, 0xb4c9ef2d704167f1ull, 0x8ac8aaad2238701dull, 0x6ae24d90d82ce393ull, 0x3777f6bb0c398ff7ull, 0x858447a702a0e98aull }}, {{ 0x55d325cf2be5d5b9ull, 0x0fe357c6628e0f72ull, 0x6bd6aac356346129ull, 0x2cd707a871c0e3c3ull, 0x2aafa34e7a3f9faaull, 0x372acc861a491f66ull }}, {{ 0x5a3f7a17b6fa593dull, 0x9ee16dbfd98c9a77ull, 0x3662aba15e0bcb9aull, 0xc0664c947188e5a2ull, 0xaadc6110c67c3ca5ull, 0x27abfd3d06db39fdull }}, {{ 0x867ac4ed25c77c66ull, 0x34ce497e7f7e08a9ull, 0x1fdab44dac75f40aull, 0x83fefdcc6f58f856ull, 0xac9bcaa7c0da5e79ull, 0x8cb7e462449043e8ull }}, {{ 0x40cbb14379cadbf7ull, 0x100edef0faec569full, 0x3e8b0b08bc9b8866ull, 0x27f5e9fc5979b35dull, 0xbe15ea8d8887b0bfull, 0x7f2eebd6ada2a716ull }}, {{ 0x87f4eca2c1ec97a9ull, 0xa094b569cd3b6238ull, 0x716e6e575e1353fcull, 0x8f9b23db7ec101a4ull, 0x6cdb2987554ce777ull, 0xf7d53662c85a86e3ull }}, {{ 0x4f913e5b933dec9eull, 0x45cf16220451d635ull, 0x6e504f69acc147deull, 0x9c0f6692f38a106cull, 0x408f9f4955010aabull, 0xae541fdbd38944e2ull }}, {{ 0x1bac6f93c06b3e2aull, 0xba16dd542b325e15ull, 0x4f231a20bf8cceaeull, 0x189a01bd8364a43cull, 0x859c38dd520a6ab4ull, 0xcf493e96435cb0d6ull }}, {{ 0x14bc5bc584306da5ull, 0x44e4a549aff7acd3ull, 0x175f05477b8012d3ull, 0xf604116721ee6a5bull, 0x381a38a534682b08ull, 0x18dc71dea19ee861ull }}, {{ 0xcf5b95b729e44876ull, 0xb0ee74e0dfacc03eull, 0xe9b634cad300bc40ull, 0x9c28ae075350278eull, 0x310636740c11ae59ull, 0xf89c72b2503513ccull }}, {{ 0x1993d927a2ead4a0ull, 0xe95090c8bcbf8274ull, 0x211e0fec3e075a86ull, 0x1996cc4941218b95ull, 0xea3e208878b0cf80ull, 0xb61c7af72212c5f9ull }}, {{ 0xffc67b8c5d2c4e3eull, 0x1d25a7d75f7b1888ull, 0x4b2c9f3a6c498945ull, 0xffe3fadc8b4f73d3ull, 0x266d4554b6e81b00ull, 0x1d1ccda754bbbbc3ull }}, {{ 0xfdc0d37ba3bb0e67ull, 0x23788e69bacef559ull, 0xefbe38483adf5cb3ull, 0xfee7cc9d711a8640ull, 0x8044b54f25110e09ull, 0x232008894f55559full }}, {{ 0xe98842d4654e9009ull, 0x62b590214c159583ull, 0x5d6e32d24cb99effull, 0xf50dfe266b093e89ull, 0x02af151772aa8c63ull, 0x5f40555d1955583bull }}, {{ 0x1f529c4bf511a057ull, 0xdb17a14cf8d7d727ull, 0xa64dfc36ff4035f9ull, 0x928bed802e5c715dull, 0x1ad6d2ea7aa97be7ull, 0xb88355a2fd55724eull }}, {{ 0x393a1af792b04366ull, 0x8eec4d01b86e6787ull, 0x7f0bda25f8821bc2ull, 0xb9774701cf9c6da8ull, 0x0c643d28ca9ed70bull, 0x3521585de556770dull }}, {{ 0x3c450dabbae2a1f9ull, 0x953b021134500b48ull, 0xf676857bb5151599ull, 0x3ea8c6121c1c4894ull, 0x7bea6397ea346675ull, 0x134d73aaf560a682ull }}, {{ 0x5ab288b54cda53bcull, 0xd44e14ac0b2070d2ull, 0xa0a136d512d2d7ffull, 0x7297bcb5191ad5d1ull, 0xd727e3ef260c0094ull, 0xc10684ad95c68118ull }}, {{ 0x8af9571500874553ull, 0x4b0cceb86f446837ull, 0x464c2452bc3c6ffeull, 0x79ed5f12fb0c5a30ull, 0x678ee7577c7805ccull, 0x8a412ec7d9c10af8ull }}, {{ 0x6dbd66d20548b540ull, 0xee80133458ac122bull, 0xbef96b3b5a5c5feeull, 0xc345b6bdce7b85e2ull, 0x0b95096adcb039fcull, 0x668bd3ce818a6db4ull }}, {{ 0x4966043434d71480ull, 0x5100c00b76b8b5b2ull, 0x75be3051879bbf55ull, 0xa0b9236a10d33adbull, 0x73d25e2c9ee243dfull, 0x017646110f684908ull }}, {{ 0xddfc2a0a1066ccfeull, 0x2a078072a33718f6ull, 0x996de32f4c157955ull, 0x473b6224a8404c92ull, 0x8637adbe34d6a6bcull, 0x0e9ebcaa9a12da54ull }}, {{ 0xabd9a464a40401ecull, 0xa44b047a6026f9a4ull, 0xfe4adfd8f8d6bd53ull, 0xc851d56e9282fdb9ull, 0x3e2cc96e1062835aull, 0x92335eaa04bc874dull }}, {{ 0xb6806bee68281335ull, 0x6aee2cc7c185c06eull, 0xeeecbe79b8636544ull, 0xd3325651b91de943ull, 0x6dbfde4ca3d9218bull, 0xb601b2a42f5d4904ull }}, {{ 0x210437501190c012ull, 0x2d4dbfcd8f398453ull, 0x553f70c133e1f4acull, 0x3ff75f313b2b1ca7ull, 0x497eaefe667b4f76ull, 0x1c10fa69d9a4da2cull }}, {{ 0x4a2a2920afa780afull, 0xc5097e07983f2b3full, 0x547a678c06d38eb9ull, 0x7fa9b7ec4faf1e89ull, 0xdef2d5f000d11a9eull, 0x18a9c822807085baull }}, {{ 0xe5a59b46dc8b06d7ull, 0xb25eec4bf277b078ull, 0x4cc80b7844439341ull, 0xfca12f3b1cd7315dull, 0xb57c5b60082b0a30ull, 0xf6a1d1590465394cull }}, {{ 0xf87810c49d6e446bull, 0xf7b53af778ace4b8ull, 0xffd072b2aaa3c090ull, 0xde4bd84f2067eda4ull, 0x16db91c051ae65e9ull, 0xa2522d7a2bf43cffull }}, {{ 0xb4b0a7ae264eac2aull, 0xad144daab6c0ef39ull, 0xfe247afaaa6585a9ull, 0xaef67317440f4871ull, 0xe493b18330cffb22ull, 0x5735c6c5b78a61f6ull }}, {{ 0x0ee68ccd7f12b9a1ull, 0xc2cb08ab23895841ull, 0xed6ccdcaa7f738a0ull, 0xd5a07ee8a898d473ull, 0xedc4ef1fe81fcf5aull, 0x6819c3b92b67d3a4ull }}, {{ 0x95018006f6bb4046ull, 0x9bee56af635d728aull, 0x464009ea8fa83647ull, 0x5844f51695f84c87ull, 0x49b1573f113e198cull, 0x1101a53bb20e4471ull }}, {{ 0xd20f0045a35082baull, 0x174f62d9e1a67969ull, 0xbe8063299c921eccull, 0x72b192e1dbb2fd48ull, 0xe0ed6876ac6cff7bull, 0xaa107454f48eac6cull }}, {{ 0x349602b861251b48ull, 0xe919dc82d080be22ull, 0x7103dfa01db533f8ull, 0x7aefbcd294fde4d7ull, 0xc94614a2bc41fad2ull, 0xa4a48b518d92bc40ull }}, {{ 0x0ddc1b33cb7310d0ull, 0x1b029d1c25076d56ull, 0x6a26bc41291407b9ull, 0xcd5d6039d1eaf06aull, 0xdcbcce5b5a93cc38ull, 0x6e6d712f87bb5a87ull }}, {{ 0x8a991005f27ea823ull, 0x0e1a2319724a455cull, 0x25835a8b9ac84d3bull, 0x05a5c242332d6428ull, 0x9f600f9189c5fa38ull, 0x50466bdb4d51894eull }}, {{ 0x69faa03b78f2915aull, 0x8d055efe76e6b59dull, 0x772189740bd3044eull, 0x38799695ffc5e991ull, 0x39c09baf61bbc630ull, 0x22c03691052f5d12ull }}, {{ 0x23ca4252b979ad87ull, 0x8235b5f0a5031826ull, 0xa74f5e88763e2b11ull, 0x34bfe1dbfdbb1faeull, 0x418614d9d155bde2ull, 0x5b8221aa33d9a2b6ull }}, {{ 0x65e6973b3ec0c746ull, 0x16191b66721ef17dull, 0x8919b1549e6daeafull, 0x0f7ed297e94f3cd2ull, 0x8f3cd0822d596ad6ull, 0x931550a606805b1eull }}, {{ 0xfb01e8507387c8bbull, 0xdcfb120075356ee5ull, 0x5b00ed4e3048d2d6ull, 0x9af439ef1d186039ull, 0x98602515c57e2c5cull, 0xbed5267c41038f31ull }}, {{ 0xce131324834dd753ull, 0xa1ceb404941654fbull, 0x8e09450de2d83c64ull, 0x0d8a435722f3c23dull, 0xf3c172d9b6edbb9eull, 0x745380da8a2397efull }}, {{ 0x0cbebf6d210a6939ull, 0x5213082dc8df51d6ull, 0x8c5cb28adc725beeull, 0x8766a1675d859667ull, 0x858e7c812549542cull, 0x8b4308896563ef5full }}, {{ 0x7f737a434a681c3dull, 0x34be51c9d8b9325cull, 0x7b9ef96c9c77974full, 0x4a024e09a737e00bull, 0x3790dd0b74dd49bdull, 0x709e555df5e759bbull }}, {{ 0xfa82c6a0e8111a60ull, 0x0f6f31e2773bf79cull, 0xd435be3e1cabe918ull, 0xe4170c60882ec072ull, 0x2ba8a27290a4e164ull, 0x662f55ab9b098150ull }}, {{ 0xc91bc24910ab07c4ull, 0x9a57f2d8a857ac21ull, 0x4a196e6d1eb71af0ull, 0xe8e67bc551d3847cull, 0xb4965879a670cdf0ull, 0xfdd958b40e5f0d21ull }}, {{ 0xdb1596daa6ae4da7ull, 0x076f7c76936cb951ull, 0xe4fe504333270d66ull, 0x1900d5b532432cdaull, 0x0ddf74c080680b69ull, 0xea7d77088fb68351ull }}, {{ 0x8ed7e48a82cf0886ull, 0x4a5adca1c23f3d32ull, 0xf1ef229fff8685fcull, 0xfa085913f69fc08cull, 0x8aba8f850410721aull, 0x28e6a6559d21212aull }}, {{ 0x946eed691c165538ull, 0xe78c9e51967863f9ull, 0x73575a3ffb413bdaull, 0xc4537ac7a23d8581ull, 0x6b499b3228a4750dull, 0x99027f58234b4ba9ull }}, {{ 0xcc55461b18df542cull, 0x0b7e2f2fe0b3e7bfull, 0x8169867fd08c568dull, 0xab42cbcc5667370eull, 0x30e00ff5966c9289ull, 0xfa18f97160f0f49eull }}, {{ 0xfb54bd0ef8b949bcull, 0x72edd7dec7070d7dull, 0x0e1f40fe257b6182ull, 0xb09bf5fb60082691ull, 0xe8c09f97e03db960ull, 0xc4f9be6dc9698e2dull }}, {{ 0xd14f6295b73ce15bull, 0x7d4a6eb3c64686ebull, 0x8d3889ed76d1cf18ull, 0xe6179bd1c05181aaull, 0x17863beec2693dc6ull, 0xb1c17049de1f8dcbull }}, {{ 0x2d19d9d92860cd8dull, 0xe4e85305bec14536ull, 0x84356346a43216f4ull, 0xfcec1631832f10a9ull, 0xeb3e5753981c69c4ull, 0xf18e62e2ad3b89eeull }}, {{ 0xc302827b93c80784ull, 0xf1133e39738cb41dull, 0x2a15e0c269f4e590ull, 0xe138ddef1fd6a69full, 0x306f6943f11c21b1ull, 0x6f8fdcdac4536355ull }}, {{ 0x9e1918d3c5d04b26ull, 0x6ac06e3e837f0929ull, 0xa4dac7982390f7a9ull, 0xcc38ab573e628237ull, 0xe45a1ca76b1950f2ull, 0x5b9ea08bab41e153ull }}, {{ 0x2cfaf845ba22ef7dull, 0x2b844e7122f65ba0ull, 0x708bcbf163a9ac9eull, 0xfa36b1686fd9162cull, 0xeb851e8a2efd297bull, 0x94324574b092cd46ull }}, {{ 0xc1cdb2b9455d5adfull, 0xb32b106b5d9f9441ull, 0x6575f76de4a0be2dull, 0xc622ee145e7addbcull, 0x33333165d5e39ed7ull, 0xc9f6b68ee5bc04c5ull }}, {{ 0x9208fb3cb5a58cb5ull, 0xffaea431a83bca91ull, 0xf69baa4aee476dc8ull, 0xbd5d4ccbb0cca95bull, 0xffffedfa5ae4346dull, 0xe3a32194f9582fb3ull }}, {{ 0xb459d05f18777f10ull, 0xfcd269f09255e9afull, 0xa214a6ed4eca49d9ull, 0x65a4fff4e7fe9d97ull, 0xffff4bc78cea0c49ull, 0xe45f4fd1bd71dd07ull }}, {{ 0x0b8223b6f4aaf6a3ull, 0xe0382365b75b20ddull, 0x54ce854513e6e283ull, 0xf871ff910ff227ecull, 0xfff8f5cb81247addull, 0xebb91e316672a24full }}, {{ 0x731565258eada25bull, 0xc23161f9298f48a2ull, 0x501134b2c704d926ull, 0xb473fbaa9f758f3bull, 0xffb999f30b6cccabull, 0x353b2dee007a571full }}, {{ 0x7ed5f37792c8578full, 0x95edd3bb9f98d658ull, 0x20ac0efbc6307b83ull, 0x0c87d4aa3a979851ull, 0xfd40037e723ffeb5ull, 0x144fcb4c04c7673full }}, {{ 0xf45b82abbbd36b92ull, 0xdb4a45543bf85f74ull, 0x46b895d5bde4d323ull, 0x7d4e4ea649ebf32bull, 0xe48022f0767ff312ull, 0xcb1df0f82fca087full }}, {{ 0x8b931ab5564233b2ull, 0x90e6b54a57b3ba91ull, 0xc335da596af03f66ull, 0xe50f127ee3377fb0ull, 0xed015d64a0ff7eb8ull, 0xef2b69b1dde454feull }}, {{ 0x73bf0b155e9604f6ull, 0xa90314e76d0549afull, 0xa01a877e2d627a01ull, 0xf296b8f4e02afce7ull, 0x420da5ee49faf338ull, 0x57b220f2aaeb51f5ull }}, {{ 0x85766ed5b1dc319dull, 0x9a1ed10a4234e0daull, 0x41094aedc5d8c410ull, 0x79e33990c1ade10cull, 0x94887b4ee3cd8039ull, 0x6cf5497aad313394ull }}, {{ 0x36a05458f299f021ull, 0x05342a669610c889ull, 0x8a5ced49ba77a8a6ull, 0xc2e03fa790caca7aull, 0xcd54d114e607023eull, 0x4194decac3ec03cdull }}, {{ 0x22434b797a036147ull, 0x3409a801dca7d55cull, 0x67a144e148ac967cull, 0x9cc27c8ba7ebe8c9ull, 0x05502ad0fc461673ull, 0x8fd0b3eba738260aull }}, {{ 0x56a0f2bec421ccc5ull, 0x086090129e8e5599ull, 0x0c4cb0ccd6bde0daull, 0x1f98dd748f3717deull, 0x3521ac29dabce084ull, 0x9e27073488317c64ull }}, {{ 0x62497b73a951ffb0ull, 0x53c5a0ba318f57fdull, 0x7afee800636ac884ull, 0x3bf8a68d9826eeacull, 0x1350b9a28b60c529ull, 0x2d86480d51eedbeaull }}, {{ 0xd6ded2849d33fcdeull, 0x45b84745ef996fe5ull, 0xcdf51003e22bd52bull, 0x57b68187f18552bcull, 0xc127405971c7b39cull, 0xc73ed08533549724ull }}, {{ 0x64b4392e2407e0b0ull, 0xb932c8bb5bfe5efaull, 0x0b92a026d5b653b0ull, 0x6d210f4f6f353b60ull, 0x8b88837e71cd041bull, 0xc8742534014de76full }}, {{ 0xef0a3bcd684ec6e0ull, 0x3bfbd75197efb5c7ull, 0x73ba4184591f44e7ull, 0x434a991a581451c0ull, 0x735522f072022912ull, 0xd48974080d0b0a5bull }}, {{ 0x566656061313c4c3ull, 0x57d6692fef5d19cfull, 0x85468f2b7b38b108ull, 0xa0e9fb0770cb3184ull, 0x81535d6474159ab6ull, 0x4d5e8850826e6792ull }}, {{ 0x5fff5c3cbec5af9eull, 0x6e601bdf59a30219ull, 0x34c197b2d036ea53ull, 0x4923ce4a67efef2dull, 0x0d41a5ec88d80b22ull, 0x05b1532518500bb9ull }}, {{ 0xbff99a5f73b8dc30ull, 0x4fc116b9805e14fdull, 0x0f8fecfc22252742ull, 0xdb660ee80f5f57c4ull, 0x84907b3d58706f56ull, 0x38ed3f72f320753aull }}, {{ 0x7fc007ba853899dcull, 0x1d8ae33f03acd1e9ull, 0x9b9f41d955738897ull, 0x91fc951099b96da8ull, 0x2da4d06574645964ull, 0x39447a7d7f449449ull }}, {{ 0xfd804d493436029aull, 0x276ce07624c0331eull, 0x1438927d568355e7ull, 0xb3ddd2a6013e4896ull, 0xc87023f68beb7dedull, 0x3cacc8e6f8adcadbull }}, {{ 0xe70304dc0a1c1a06ull, 0x8a40c49d6f81ff35ull, 0xca35b8e561215b07ull, 0x06aa3a7c0c6ed5dcull, 0xd46167a17732eb49ull, 0x5ebfd905b6c9ec95ull }}, {{ 0x061e30986519043dull, 0x6687ae265b13f81bull, 0xe61938f5cb4d8e4bull, 0x42a648d87c545a9full, 0x4bce0c4ea7fd30daull, 0xb37e7a3923e33ddaull }}, {{ 0x3d2de5f3f2fa2a65ull, 0x014ccd7f8ec7b10eull, 0xfcfc3999f1078ef2ull, 0x9a7ed874db4b8a3eull, 0xf60c7b128fe3e886ull, 0x02f0c63b66e06a86ull }}, {{ 0x63cafb877dc5a7f0ull, 0x0d0006fb93ccea8eull, 0xe1da40036a4b9574ull, 0x08f4749090f36675ull, 0x9c7cceb99ee71542ull, 0x1d67be5204c42945ull }}, {{ 0xe5edd34ae9b88f5dull, 0x820045d3c601298full, 0xd286802226f3d688ull, 0x598c8da5a982009aull, 0x1ce013403506d494ull, 0x260d6f342fa99cb8ull }}, {{ 0xfb4a40ed2135999eull, 0x1402ba45bc0b9f9eull, 0x3941015585866155ull, 0x7f7d88789f14060cull, 0x20c0c08212444dcbull, 0x7c865809dca01f31ull }}, {{ 0xd0e689434c18002cull, 0xc81b46b958743c35ull, 0x3c8a0d57373fcd52ull, 0xfae754b636c83c7aull, 0x47878514b6ab09f2ull, 0xdd3f70629e4137ebull }}, {{ 0x29015ca0f8f001baull, 0xd110c33d748a5a1aull, 0x5d648568287e053bull, 0xcd094f1e23d25cc6ull, 0xcb4b32cf22ae637dull, 0xa47a63da2e8c2f30ull }}, {{ 0x9a0d9e49b9601140ull, 0x2aa7a0668d678505ull, 0xa5ed361194ec3456ull, 0x025d172d66379fbfull, 0xf0effc175acfe2eaull, 0x6cc7e685d179d7e7ull }}, {{ 0x04882ee13dc0ac7cull, 0xaa8c4401860b3238ull, 0x7b441cafd13a0b5dull, 0x17a2e7c5fe2c3d7cull, 0x695fd8e98c1edd24ull, 0x3fcf013a2ec26f0full }}, {{ 0x2d51d4cc6986bcdbull, 0xa97aa80f3c6ff630ull, 0xd0a91ede2c4471a8ull, 0xec5d0dbbedba66dcull, 0x1dbe791f7934a368ull, 0x7e160c45d398569aull }}, {{ 0xc5324ffc1f436093ull, 0x9eca90985c5f9de1ull, 0x269b34adbaac7096ull, 0x3ba28957494804a0ull, 0x2970bb3abc0e6219ull, 0xecdc7aba43f36205ull }}, {{ 0xb3f71fd938a1c5beull, 0x33e9a5f39bbc2ad1ull, 0x82100ec94abc65e2ull, 0x54595d68dcd02e41ull, 0x9e67504b588fd4fcull, 0x409ccb46a781d433ull }}, {{ 0x07a73e7c3651b967ull, 0x07207b841559ac31ull, 0x14a093dceb5bfad6ull, 0x4b7da618a021ce8full, 0x300922f1759e51dbull, 0x861ff0c28b124a04ull }}, {{ 0x4c8870da1f313e09ull, 0x4744d328d580b9eaull, 0xce45c6a13197cc5cull, 0xf2e87cf641521196ull, 0xe05b5d6e982f3290ull, 0x3d3f67996eb6e429ull }}, {{ 0xfd54688537ec6c5cull, 0xc8b03f9857074326ull, 0x0eb9c24befedfb9aull, 0x7d14e19e8d34afe4ull, 0xc391a651f1d7f9a9ull, 0x647a0bfe5324e9a2ull }}, {{ 0xe54c15342f3c3b96ull, 0xd6e27bf366489f85ull, 0x934196f75f4bd40bull, 0xe2d0d031840edee8ull, 0xa3b07f33726fc09eull, 0xecc477ef3f71205bull }}, {{ 0xf4f8d409d85a53dfull, 0x64d8d781fed63b3aull, 0xc08fe5a9b8f64876ull, 0xdc2821ef2894b515ull, 0x64e4f802785d8634ull, 0x3facaf587a6b4394ull }}, {{ 0x91b84862738746baull, 0xf0786b13f45e504dull, 0x859ef8a1399ed49full, 0x9991535795cf12d9ull, 0xf0f1b018b3a73e10ull, 0x7cbed974c830a3cbull }}, {{ 0xb132d3d88348c344ull, 0x64b42ec78baf2307ull, 0x3835b64c40344e3full, 0xffad416bda16bc7full, 0x6970e0f704886ca5ull, 0xdf747e8fd1e665f7ull }}, {{ 0xebfc467520d7a0acull, 0xef09d3cb74d75e4cull, 0x32191efa820b0e79ull, 0xfcc48e3684e35cf8ull, 0x1e68c9a62d543e7bull, 0xba8cf19e32fffbaaull }}, {{ 0x37dac093486c46b6ull, 0x566245f29069af01ull, 0xf4fb35c9146e90c3ull, 0xdfad8e2130e1a1b1ull, 0x3017e07dc54a70d7ull, 0x4981702dfdffd4a5ull }}, {{ 0x2e8b85c0d43ac321ull, 0x5fd6bb79a420d60cull, 0x91d019dacc51a7a1ull, 0xbcc78d4be8d050f3ull, 0xe0eec4e9b4e8686eull, 0xdf0e61cbebfe4e73ull }}, {{ 0xd17339884a4b9f48ull, 0xbe6352c069485c79ull, 0xb221028bfb308c4dull, 0x5fcb84f718232983ull, 0xc953b12111141453ull, 0xb68fd1f737ef1086ull }}, {{ 0x2e803f52e6f438cdull, 0x6fe13b841cd39cc2ull, 0xf54a1977cfe57b09ull, 0xbdf331a6f15f9f24ull, 0xdd44eb4aaac8cb41ull, 0x219e33a82f56a543ull }}, {{ 0xd102793d058a3805ull, 0x5ecc532920441f95ull, 0x94e4feae1ef6ce5eull, 0x6b7ff0856dbc3771ull, 0xa4b130eaabd7f091ull, 0x502e0491d96274a6ull }}, {{ 0x2a18bc623766302full, 0xb3fb3f9b42a93bdaull, 0xd0f1f2cd35a40fafull, 0x32ff6536495a2a6full, 0x6eebe92ab66f65aeull, 0x21cc2db27dd88e82ull }}, {{ 0xa4f75bd629fde1d7ull, 0x07d07c109a9c5685ull, 0x29737c0418689cddull, 0xfdf9f41edd85a85eull, 0x55371bab2059f8cdull, 0x51f9c8f8ea759118ull }}, {{ 0x71a9965da3ead263ull, 0x4e24d8a60a1b6138ull, 0x9e82d828f41620a2ull, 0xebc38934a73893adull, 0x542714af4383b80bull, 0x33c1d9b92897aaf3ull }}, {{ 0x709fdfa8672c37e1ull, 0x0d70767c6511cc34ull, 0x311c719988dd4657ull, 0x35a35c0e8835c4c8ull, 0x4986ced8a3253077ull, 0x0592813b95ecad81ull }}, {{ 0x663ebc9407ba2ec9ull, 0x8664a0dbf2b1fa0cull, 0xeb1c6fff58a4bf66ull, 0x186198915219afd1ull, 0xdf4414765f73e4a8ull, 0x37b90c53db3ec70cull }}, {{ 0xfe735dc84d45d3d6ull, 0x3fee48977af3c47bull, 0x2f1c5ff9766f7a01ull, 0xf3cff5ad3500de33ull, 0xb8a8cc9fba86ee90ull, 0x2d3a7b469073c680ull }}, {{ 0xf081a9d304ba4661ull, 0x7f4ed5eacd85acd7ull, 0xd71bbfbea05ac40cull, 0x861f98c41208adffull, 0x3697fe3d494551a9ull, 0xc448d0c1a485c107ull }}, {{ 0x6510a23e2f46bfc9ull, 0xf9145b2c0738c06full, 0x67157d72438ba87cull, 0x3d3bf7a8b456cbfeull, 0x21efee64dcb5309full, 0xaad827906d398a48ull }}, {{ 0xf2a6566dd8c37ddaull, 0xbacb8fb848378459ull, 0x06d6e676a37494e1ull, 0x6457ac970b63f7f0ull, 0x535f4ff09f13e638ull, 0xac718ba4443f66d1ull }}, {{ 0x7a7f604a77a2ea83ull, 0x4bf39d32d22b2b83ull, 0x446500a2628dd0d1ull, 0xeb6cbde671e7af60ull, 0x41b91f6636c6fe33ull, 0xbc6f746aaa7a042dull }}, {{ 0xc8f9c2e8ac5d2922ull, 0xf78423fc35afb322ull, 0xabf20657d98a282cull, 0x323f6b00730cd9c2ull, 0x913b39fe23c5ee07ull, 0x5c5a8c2aa8c429c4ull }}, {{ 0xd9c19d16bba39b59ull, 0xab2967da18dcff5bull, 0xb7743f6e7f6591c1ull, 0xf67a2e047e80819aull, 0xac5043ed65bb4c47ull, 0x9b8979aa97a9a1adull }}, {{ 0x819022e354641178ull, 0xaf9e0e84f8a1f996ull, 0x2a8a7a50f9f7b190ull, 0xa0c5cc2cf105100bull, 0xbb22a745f950facfull, 0x135ec0a9eca050c8ull }}, {{ 0x0fa15ce14be8aeadull, 0xdc2c9131b653bfe1ull, 0xa968c729c3acefa6ull, 0x47b9f9c16a32a06full, 0x4f5a88bbbd29cc1cull, 0xc1b386a33e4327d7ull }}, {{ 0x9c4da0ccf716d2beull, 0x99bdabf11f457ecaull, 0x9e17c7a1a4c15c84ull, 0xcd43c18e25fa445cull, 0x1989575563a1f91aull, 0x910342606e9f8e69ull }}, {{ 0x1b084801a6e43b71ull, 0x0168b76b38b6f3eaull, 0x2cedcc506f8d9d2eull, 0x04a58f8d7bc6ab9eull, 0xff5d6955e453bb0cull, 0xaa2097c4523b901aull }}, {{ 0x0e52d01084ea5267ull, 0x0e172a3037258725ull, 0xc149fb245b8823ccull, 0x2e779b86d5c2b42dull, 0xf9a61d5aeb454e78ull, 0xa545edab3653a10dull }}, {{ 0x8f3c20a531273806ull, 0x8ce7a5e227774772ull, 0x8ce3cf6b935165f8ull, 0xd0ac1344599b09c9ull, 0xc07d258d30b510b1ull, 0x74bb48b01f444a8bull }}, {{ 0x98594673eb883039ull, 0x810c7ad58aa8ca79ull, 0x80e61a33c12dfbb5ull, 0x26b8c0ab800e61dfull, 0x84e37783e712a6f2ull, 0x8f50d6e138aae975ull }}, {{ 0xf37cc0873351e238ull, 0x0a7ccc576a97e8bfull, 0x08fd06058bcbd517ull, 0x833786b3008fd2bbull, 0x30e2ab2706ba8575ull, 0x992864cc36ad1e97ull }}, {{ 0x82df85480132d633ull, 0x68dffb6a29ef177full, 0x59e23c3775f652e6ull, 0x202b42fe059e3b4eull, 0xe8daaf8643493697ull, 0xfb93effa22c331e7ull }}, {{ 0x1cbb34d00bfc5e03ull, 0x18bfd225a356eafbull, 0x82d65a2a9b9f3d00ull, 0x41b09dec382e510full, 0x188adb3ea0dc21e7ull, 0xd3c75fc55b9ff30full }}, {{ 0x1f50102077dbac1aull, 0xf77e357861652dcfull, 0x1c5f85aa14386200ull, 0x90e62b3a31cf2a9bull, 0xf56c907248995308ull, 0x45c9bdb5943f7e96ull }}, {{ 0x3920a144ae94b904ull, 0xaaee16b3cdf3ca17ull, 0x1bbb38a4ca33d409ull, 0xa8fdb045f217aa0full, 0x963da476d5fd3e55ull, 0xb9e16917ca7af1e5ull }}, {{ 0x3b464caed1cf3a29ull, 0xad4ce3060b85e4e8ull, 0x1550366fe6064860ull, 0x99e8e2bb74eca497ull, 0xde686ca45be46f58ull, 0x42ce1aede8cd72f7ull }}, {{ 0x50befed432184598ull, 0xc500de3c733af112ull, 0xd522205efc3ed3c6ull, 0x0318db52913e6de6ull, 0xb0143e6b96ec5976ull, 0x9c0d0d4b18067daeull }}, {{ 0x2775f449f4f2b7edull, 0xb208ae5c804d6ab7ull, 0x535543b5da7445c3ull, 0x1ef89139ac704b04ull, 0xe0ca7033e53b7e9cull, 0x188284eef040e8d2ull }}, {{ 0x8a9b8ae3917b2f40ull, 0xf456cf9d03062b27ull, 0x4154a51a888ab9a4ull, 0x35b5ac40bc62ee2bull, 0xc7e86206f452f219ull, 0xf51931556289183cull }}, {{ 0x6a136ce3aecfd87eull, 0x8b641c221e3daf8bull, 0x8d4e7309556b4071ull, 0x1918ba875bdd4db0ull, 0xcf13d4458b3d74fcull, 0x92fbed55d95af25full }}, {{ 0x24c240e4d41e74ecull, 0x71e919552e68db72ull, 0x85107e5d5630846full, 0xfaf7494996a508e5ull, 0x16c64ab7706691d8ull, 0xbdd7455a7d8d77beull }}, {{ 0x6f9688f049309135ull, 0x731afd53d0189275ull, 0x32a4efa55de52c5aull, 0xcda8dcdfe27258f7ull, 0xe3beeb2a6401b279ull, 0x6a68b588e786ad6cull }}, {{ 0x5be15962dbe5ac17ull, 0x7f0de54620f5b896ull, 0xfa715c75aaf3bb88ull, 0x0898a0bed87779a7ull, 0xe5752fa7e810f8c2ull, 0x281717590b42c640ull }}, {{ 0x96cd7ddc96f8b8e5ull, 0xf68af4bd499935dfull, 0xc86d9c98ad855354ull, 0x55f6477474aac08full, 0xf693dc8f10a9b794ull, 0x90e6e97a709bbe88ull }}, {{ 0xe406ea9de5b738edull, 0xa16d8f64dffc1abbull, 0xd4481df6c7354151ull, 0x5b9eca8c8eab859dull, 0xa1c69d96a6a12bcbull, 0xa9051ec866157159ull }}, {{ 0xe8452a2af9283944ull, 0x4e4799f0bfd90b56ull, 0x4ad12ba3c8148d30ull, 0x9433e97d92b3382aull, 0x51c227e2824bb5f1ull, 0x9a3333d3fcd66d80ull }}, {{ 0x12b3a5adbb923ca6ull, 0x0ecc03677e7a7165ull, 0xec2bb465d0cd83e3ull, 0xca071ee7bb0031a6ull, 0x31958ed916f51b6full, 0x06000647e0604703ull }}, {{ 0xbb0478c953b65e7full, 0x93f8220af0c86df2ull, 0x39b50bfa280726deull, 0xe447350d4e01f085ull, 0xefd7947ae593125dull, 0x3c003ecec3c2c61full }}, {{ 0x4e2cb7dd451fb0f9ull, 0xc7b1546d67d44b7bull, 0x411277c5904784b1ull, 0xeac812850c136534ull, 0x5e6bccccf7beb7aaull, 0x58027413a59bbd3full }}, {{ 0x0dbf2ea4b33ce9b5ull, 0xcced4c460e4af2d1ull, 0x8ab8adb7a2cb2ef1ull, 0x2bd0b93278c1f40aull, 0xb0360001ad732cadull, 0x701888c478156479ull }}, {{ 0x8977d26f00612116ull, 0x0144fabc8eed7c2aull, 0x6b36c92c5befd572ull, 0xb6273bf8b7938869ull, 0xe21c0010c67fbec3ull, 0x60f557acb0d5ecc0ull }}, {{ 0x5eae385603cb4adaull, 0x0cb1cb5d9546d9a9ull, 0x3023dbbb975e5674ull, 0x1d8857b72bc3541eull, 0xd51800a7c0fd73a5ull, 0xc9956cbee85b3f88ull }}, {{ 0xb2ce335c25f0ec84ull, 0x7ef1f1a7d4c4809dull, 0xe1669553e9af6088ull, 0x27536d27b5a1492dull, 0x52f0068d89e68473ull, 0xdfd63f7513907b58ull }}, {{ 0xfc0e01997b693d28ull, 0xf573708e4fad0628ull, 0xce01d54720d9c554ull, 0x8942438d184cdbcaull, 0x3d60418763012c7full, 0xbe5e7a92c3a4d173ull }}, {{ 0xd88c0ffed21c6394ull, 0x9682658f1cc23d99ull, 0x0c1254c74881b551ull, 0x5c96a382f30095ecull, 0x65c28f49de0bbcfbull, 0x6fb0c9bba4702e80ull }}, {{ 0x75789ff4351be3cbull, 0xe117f7971f966802ull, 0x78b74fc8d511152full, 0x9de2631d7e05db38ull, 0xf99998e2ac7561d1ull, 0x5ce7e1546c61d103ull }}, {{ 0x96b63f8a1316e5f2ull, 0xcaefabe73be01018ull, 0xb7291dd852aad3deull, 0x2ad7df26ec3a9034ull, 0xbffff8dabc95d230ull, 0xa10ecd4c3bd22a27ull }}, {{ 0xe31e7b64bee4fb71ull, 0xed5cb70856c0a0f5ull, 0x279b2a733aac46b3ull, 0xac6eb7853a49a20full, 0x7fffb88b5dda35e1ull, 0x4a9404fa5635a58dull }}, {{ 0xdf30d1ef74f1d26eull, 0x459f26536386499aull, 0x8c0fa8804abac307ull, 0xbc532b3446e05497ull, 0xfffd3571aa861ad0ull, 0xe9c831c75e187786ull }}, {{ 0xb7e8335a91723847ull, 0xb8377f41e33ee00cull, 0x789c9502eb4b9e48ull, 0x5b3fb00ac4c34debull, 0xffe41670a93d0c27ull, 0x21d1f1c9acf4ab45ull }}, {{ 0x2f120189ae7632c9ull, 0x322af892e074c07full, 0xb61dd21d30f42ed7ull, 0x907ce06bafa10b32ull, 0xfee8e0669c627989ull, 0x523371e0c18eb0bbull }}, {{ 0xd6b40f60d09dfbd6ull, 0xf5adb5bcc48f84f7ull, 0x1d2a3523e989d467ull, 0xa4e0c434dc4a6ffbull, 0xf518c4021bd8bf5full, 0x360272c78f92e757ull }}, {{ 0x630899c8262bd659ull, 0x98c9195fad9b31aeull, 0x23a613671f624c0full, 0x70c7aa109ae85fcfull, 0x92f7a815167779bcull, 0x1c187bcb9bbd096full }}, {{ 0xde5601d17db65f78ull, 0xf7dafdbcc80ff0cfull, 0x647cc20739d6f89bull, 0x67cca4a60d13be17ull, 0xbdac90d2e0aac15cull, 0x18f4d5f415625e5bull }}, {{ 0xaf5c122ee91fbab5ull, 0xae8de95fd09f681eull, 0xecdf94484265b617ull, 0x0dfe6e7c82c56ce9ull, 0x68bda83cc6ab8d9cull, 0xf9905b88d5d7af95ull }}, {{ 0xd998b5d51b3d4b0dull, 0xd18b1dbe263a1132ull, 0x40bbcad297f91cecull, 0x8bf050dd1bb64123ull, 0x1768925fc2b38818ull, 0xbfa393585a6cdbd6ull }}, {{ 0x7ff71a531064ee83ull, 0x2f6f296d7e44abfcull, 0x8755ec39efbb2140ull, 0x776328a3151e8b60ull, 0xea15b7bd9b0350f5ull, 0x7c63c1738840965cull }}, {{ 0xffa7073ea3f15122ull, 0xda579e46eeaeb7dcull, 0x495b3a435d4f4c81ull, 0xa9df965ed33171c5ull, 0x24d92d680e212996ull, 0xdbe58e835285dfa1ull }}, {{ 0xfc864872676d2b56ull, 0x876c2ec552d32ea1ull, 0xdd9046a1a518fd12ull, 0xa2bbdfb43fee71b4ull, 0x707bc6108d4b9fe2ull, 0x96f79121393abc4bull }}, {{ 0xdd3ed4780a43b158ull, 0x4a39d3b53c3fd253ull, 0xa7a2c25072f9e2b9ull, 0x5b56bd0a7f507110ull, 0x64d5bca584f43edaull, 0xe5abab4c3c4b5af2ull }}, {{ 0xa4744cb066a4ed72ull, 0xe64245145a7e3746ull, 0x8c5b97247dc2db3cull, 0x91636268f9246aa6ull, 0xf0595e77318a7487ull, 0xf8b4b0fa5af18d77ull }}, {{ 0x6c8afee402714675ull, 0xfe96b2cb88ee28c2ull, 0x7b93e76ce99c9060ull, 0xade1d819bb6c2a81ull, 0x637db0a7ef688d4bull, 0xb70ee9c78d6f86afull }}, {{ 0x3d6df4e8186cc096ull, 0xf1e2fbf3594d9798ull, 0xd3c70a41201da3c9ull, 0xcad271015239a90eull, 0xe2e8e68f5a1584f4ull, 0x269521cb865b42d9ull }}, {{ 0x664b9110f43f85daull, 0x72ddd7817d07ebf2ull, 0x45c6668b412865e3ull, 0xec386a0d36409a94ull, 0xdd19019984d7318full, 0x81d351f33f909c82ull }}, {{ 0xfef3aaa98a7b3a82ull, 0x7caa6b0ee24f3777ull, 0xb9c001708b93fae2ull, 0x3a3424841e8609caull, 0xa2fa0fff3067ef9full, 0x124133807ba61d1cull }}, {{ 0xf584aa9f68d04912ull, 0xdea82e94d7182aafull, 0x41800e6573c7ccd8ull, 0x46096d29313c61ebull, 0x5dc49ff7e40f5c38ull, 0xb68c0304d47d231eull }}, {{ 0x972eaa3a1822dab7ull, 0xb291d1d066f1aadfull, 0x8f008ff685ce0078ull, 0xbc5e439bec5bd330ull, 0xa9ae3faee8999a32ull, 0x21781e304ce35f2full }}, {{ 0xe7d2a644f15c8b26ull, 0xf9b232240570acbbull, 0x96059fa13a0c04b6ull, 0x5baea4173b963fe5ull, 0xa0ce7cd5160005fbull, 0x4eb12de300e1b7dcull }}, {{ 0x0e3a7eb16d9d6f7dull, 0xc0f5f5683666bf57ull, 0xdc383c4c44782f25ull, 0x94d268e853de7ef7ull, 0x4810e052dc003bd1ull, 0x12ebcade08d12e9eull }}, {{ 0x8e48f2ee48265ae6ull, 0x899b961220037966ull, 0x9a325afaacb1d779ull, 0xd038191346b0f5aeull, 0xd0a8c33c9802562full, 0xbd35ecac582bd22eull }}, {{ 0x8ed97d4ed17f8d00ull, 0x6013dcb54022be01ull, 0x05f78dcabef26abfull, 0x2230fac0c2e998d2ull, 0x2697a05df0175ddeull, 0x641b3ebb71b635d4ull }}, {{ 0x947ee5142efb8201ull, 0xc0c69f14815b6c0full, 0x3bab89eb75782b79ull, 0x55e9cb879d1ff834ull, 0x81ec43ab60e9aaadull, 0xe9107352711e1a49ull }}, {{ 0xccf4f2c9d5d31409ull, 0x87c236cd0d92389bull, 0x54b3633296b1b2c1ull, 0x5b21f34c233fb20aull, 0x133aa4b1c920aac5ull, 0x1aa481386b2d06dfull }}, {{ 0x01917be25a3ec85cull, 0x4d96240287b63616ull, 0x4f01dff9e2f0fb8full, 0x8f5380f9607cf467ull, 0xc04a6ef1db46abb5ull, 0x0a6d0c342fc244b6ull }}, {{ 0x0faed6d78673d39dull, 0x07dd68194d1e1cdcull, 0x1612bfc2dd69d399ull, 0x994309bdc4e18c09ull, 0x82e8557290c2b517ull, 0x68427a09dd96af23ull }}, {{ 0x9cd4646b40864420ull, 0x4ea610fd032d2098ull, 0xdcbb7d9ca62243faull, 0xfc9e6169b0cf785aull, 0x1d135679a79b12ebull, 0x1298c462a7e2d763ull }}, {{ 0x204bec30853ea93cull, 0x127ca9e21fc345f6ull, 0x9f52e81e7d56a7c7ull, 0xde2fce20e81ab38cull, 0x22c160c08c0ebd37ull, 0xb9f7abda8edc69dfull }}, {{ 0x42f739e534729c58ull, 0xb8dea2d53da0bb9dull, 0x393d1130e5628dc6ull, 0xadde0d49110b037eull, 0x5b8dc7857893642eull, 0x43acb689949c22b7ull }}, {{ 0x9da842f40c7a1b6cull, 0x38b25c5468475424ull, 0x3c62abe8f5d989c3ull, 0xcaac84daaa6e22eeull, 0x9389cb36b5c1e9d2ull, 0xa4bf215fce195b29ull }}, {{ 0x28929d887cc51234ull, 0x36f79b4c12c9496eull, 0x5bdab7199a7f61a0ull, 0xeabd308aa84d5d4eull, 0xc361f0231993223bull, 0x6f774dbe0cfd8f9full }}, {{ 0x95ba2754dfb2b607ull, 0x25ac10f8bbdcde4dull, 0x968b270008f9d042ull, 0x2b63e56a9305a50full, 0xa1d3615effbf5657ull, 0x5aa9096c81e79c3dull }}, {{ 0xd9458950bcfb1c45ull, 0x78b8a9b756a0af07ull, 0xe16f860059c22295ull, 0xb1e6f629be38729bull, 0x5241cdb5fd795f67ull, 0x8a9a5e3d130c1a68ull }}, {{ 0x7cb75d2761cf1aaeull, 0xb736a1296246d64eull, 0xce5b3c03819559d6ull, 0xf3059da16e347a16ull, 0x3692091be6bdba0cull, 0x6a07ae62be790813ull }}, {{ 0xdf29a389d2170ac9ull, 0x28224b9dd6c45f10ull, 0x0f9058230fd58263ull, 0x7e38284e4e0cc4e4ull, 0x21b45b1703694481ull, 0x244ccfdb70ba50c0ull }}, {{ 0xb7a0636234e66bd7ull, 0x9156f42a63abb6a8ull, 0x9ba3715e9e5717dfull, 0xee31930f0c7fb0e8ull, 0x510b8ee6221cad0eull, 0x6b001e9267472781ull }}, {{ 0x2c43e1d611003661ull, 0xad6589a7e4b52297ull, 0x14626db22f66eebbull, 0x4defbe967cfce916ull, 0x2a7394fd551ec295ull, 0x2e0131b808c78b0dull }}, {{ 0xbaa6d25caa021fcdull, 0xc5f7608eef1359e7ull, 0xcbd848f5da055354ull, 0x0b5d71e0e1e11adcull, 0xa883d1e5533399d5ull, 0xcc0bf13057cb6e83ull }}, {{ 0x4a84379ea4153dfeull, 0xbba9c59556c1830dull, 0xf672d99a8435414full, 0x71a672c8d2cb0c9full, 0x952632f540040252ull, 0xf8776be36df25124ull }}, {{ 0xe92a2c3268d46be9ull, 0x54a1b7d5638f1e84ull, 0xa07c80092a148d1dull, 0x70807bd83bee7e3full, 0xd37dfd9480281738ull, 0xb4aa36e24b772b6dull }}, {{ 0x1ba5b9f8184c3719ull, 0x4e512e55e3973131ull, 0x44dd005ba4cd8325ull, 0x6504d6725750ee7cull, 0x42ebe7cd0190e834ull, 0x0ea624d6f2a7b24aull }}, {{ 0x147943b0f2fa26f7ull, 0x0f2bcf5ae3e7ebebull, 0xb0a2039470071f75ull, 0xf2306077692950daull, 0x9d370e020fa9120bull, 0x927d70657a8cf6e6ull }}, {{ 0xccbca4e97dc585a1ull, 0x97b6198ce70f372eull, 0xe65423cc60473a92ull, 0x75e3c4aa1b9d288aull, 0x24268c149c9ab477ull, 0xb8e663f6c981a502ull }}, {{ 0xff5e711ee9b7384eull, 0xed1cff81069827d3ull, 0xff4965fbc2c849b9ull, 0x9ae5aea51423956cull, 0x698178ce1e0b0caaull, 0x38ffe7a3df107215ull }}, {{ 0xf9b06b352128330eull, 0x4321fb0a41f18e47ull, 0xf8ddfbd59bd2e143ull, 0x0cf8d272c963d641ull, 0x1f0eb80d2c6e7eaaull, 0x39ff0c66b6a474d6ull }}, {{ 0xc0e430134b91fe8bull, 0x9f53ce66936f8ecfull, 0xb8abd658163ccca0ull, 0x81b8387bdde65e93ull, 0x36933083bc50f2a4ull, 0x43f67c03226c905dull }}, {{ 0x88e9e0c0f3b3f173ull, 0x39461001c25b941dull, 0x36b65f70de5ffe46ull, 0x113234d6aaffb1c5ull, 0x21bfe5255b297a6dull, 0xa7a0d81f583da3a4ull }}, {{ 0x5922c78985076e7aull, 0x3cbca0119793c927ull, 0x231fba68afbfeebeull, 0xabf61062adfcf1b4ull, 0x517ef3758f9ec842ull, 0x8c48713972686469ull }}, {{ 0x7b5bcb5f324a50c6ull, 0x5f5e40afebc5db89ull, 0x5f3d4816dd7f536eull, 0xb79ca3dacbe17109ull, 0x2ef582979c33d29aull, 0x7ad46c3e7813ec1dull }}, {{ 0xd195f1b7f6e727c1ull, 0xb9ae86df35ba935eull, 0xb864d0e4a6f9424full, 0x2c1e668bf6ce6a5dull, 0xd59719ec1a063a0bull, 0xcc4c3a70b0c73923ull }}, {{ 0x2fdb712fa5078d89ull, 0x40d144b81949c1b4ull, 0x33f028ee85bc971dull, 0xb9300177a41027a9ull, 0x57e70339043e446full, 0xfafa4866e7c83b66ull }}, {{ 0xde926bdc724b8758ull, 0x882caf30fce19109ull, 0x07619951395de724ull, 0x3be00eac68a18c9cull, 0x6f06203a2a6eac5dull, 0xcdc6d4050dd251ffull }}, {{ 0xb1b8369c76f3496full, 0x51bed7e9e0cfaa62ull, 0x49cffd2c3dab076dull, 0x56c092bc164f7e18ull, 0x563d4245a852bba4ull, 0x09c448328a3733faull }}, {{ 0xf132221ca580de55ull, 0x31746f22c81ca7daull, 0xe21fe3ba68ae4a45ull, 0x6385bb58df1aecf2ull, 0x5e6496b8933b546bull, 0x61aad1f9662807c7ull }}, {{ 0x6bf5551e7708af54ull, 0xee8c575bd11e8e8dull, 0xd53ee54816cee6b3ull, 0xe3395178b70d417cull, 0xafede335c0514c31ull, 0xd0ac33bdfd904dc9ull }}, {{ 0x37955330a656d94aull, 0x517b69962b319186ull, 0x5474f4d0e4150307ull, 0xe03d2eb726848ee0ull, 0xdf4ae019832cf9f2ull, 0x26ba056be7a309e0ull }}, {{ 0x2bd53fe67f647ce5ull, 0x2ed21fddafefaf3eull, 0x4c919028e8d21e49ull, 0xc263d327812d94c3ull, 0xb8ecc0ff1fc1c37cull, 0x834436370c5e62c8ull }}, {{ 0xb6547f00f9ece0eeull, 0xd4353ea8df5cd86dull, 0xfdafa19918352edbull, 0x97e63f8b0bc7cfa0ull, 0x393f89f73d91a2dfull, 0x20aa1e267bafdbd7ull }}, {{ 0x1f4cf609c340c94dull, 0x4a147298b9a07449ull, 0xe8dc4ffaf213d496ull, 0xeefe7b6e75ce1c49ull, 0x3c7b63a867b05cbbull, 0x46a52d80d4de9668ull }}, {{ 0x39019c61a087dd02ull, 0xe4cc79f740448adbull, 0x189b1fcd74c64ddeull, 0x55f0d2509a0d1ae3ull, 0x5cd1e4940ce39f57ull, 0xc273c70850b1e012ull }}, {{ 0x3a101bd0454ea211ull, 0xeffcc3a882ad6c90ull, 0xf60f3e068fbf0ab4ull, 0x5b68372604830cdeull, 0xa032edc880e43969ull, 0x9885c65326f2c0b7ull }}, {{ 0x44a11622b51254aaull, 0x5fdfa4951ac63da2ull, 0x9c986c419d766b11ull, 0x9212277c2d1e80b5ull, 0x41fd49d508ea3e1dull, 0xf539bf3f857b872cull }}, {{ 0xae4add5b12b74ea9ull, 0xbebc6dd30bbe6856ull, 0x1df43a9026a02eadull, 0xb4b58ad9c3310718ull, 0x93e4e25259266d27ull, 0x9441787b36d347baull }}, {{ 0xceeca58ebb291296ull, 0x735c4a3e75701362ull, 0x2b8a49a18241d2c9ull, 0x0f176c819fea46f1ull, 0xc6f0d7377b80438dull, 0xca8eb4d02440cd49ull }}, {{ 0x153e77934f9ab9dbull, 0x819ae6709660c1dcull, 0xb366e04f16923bdeull, 0x96ea3d103f26c56bull, 0xc568682ad302a382ull, 0xe99310216a8804e1ull }}, {{ 0xd470abc11c0b4291ull, 0x100d0065dfc79298ull, 0x0204c316e1b656b1ull, 0xe52662a27783b635ull, 0xb61411ac3e1a6319ull, 0x1fbea14e295030d1ull }}, {{ 0x4c66b58b187099acull, 0xa08203fabdcbb9f8ull, 0x142f9ee4d11f62eaull, 0xf37fda58ab251e12ull, 0x1cc8b0ba6d07df02ull, 0x3d724d0d9d21e831ull }}, {{ 0xfc03176ef46600b3ull, 0x451427cb69f543b2ull, 0xc9dc34f02b39dd2aull, 0x82fe8776af732cb4ull, 0x1fd6e748424eb61dull, 0x66770288235311ebull }}, {{ 0xd81eea558bfc06ffull, 0xb2c98df22394a4fdull, 0xe29a1161b042a3a6ull, 0x1df14aa2da7fbf0full, 0x3e6508d297131d27ull, 0x00a61951613eb32full }}, {{ 0x7135275777d845f5ull, 0xfbdf8b7563ce71eaull, 0xda04add0e29a6482ull, 0x2b6cea5c88fd769eull, 0x6ff25839e6bf2387ull, 0x067cfd2dcc72ffd8ull }}, {{ 0x6c13896aae72bb92ull, 0xd6bb7295e6107328ull, 0x842eca28da07ed1dull, 0xb241279d59e6a234ull, 0x5f77724303776347ull, 0x40e1e3c9fc7dfe74ull }}, {{ 0x38c35e2ad07b53b8ull, 0x635279dafca47f94ull, 0x29d3e598844f432aull, 0xf68b8c258302560dull, 0xbaaa769e22a9e0ccull, 0x88d2e5e3dcebf08bull }}, {{ 0x37a1adac24d14534ull, 0xe138c28dde6cfbcaull, 0xa246f7f52b189fa7ull, 0xa17379771e175c83ull, 0x4aa8a22d5aa2c801ull, 0x583cfae6a1376575ull }}, {{ 0x2c50c8b9702cb408ull, 0xcc37998ab041d5e6ull, 0x56c5af93aef63c8eull, 0x4e82bea72ce99d24ull, 0xea9655c58a5bd010ull, 0x7261cd024c29f694ull }}, {{ 0xbb27d73e61bf0850ull, 0xfa2bff6ae2925afdull, 0x63b8dbc4d59e5d93ull, 0x111b7287c120236bull, 0x29df59b7679620a3ull, 0x77d20216f9a3a1d1ull }}, {{ 0x4f8e686fd1765320ull, 0xc5b7fa2cd9b78de9ull, 0xe53895b0582fa7c7ull, 0xab12794d8b416231ull, 0xa2b9812a0bdd465eull, 0xae3414e5c064522bull }}, {{ 0x1b90145e2e9f3f3bull, 0xb92fc5c0812b8b1dull, 0xf435d8e371dc8dcdull, 0xaeb8bd07708dd5f2ull, 0x5b3f0ba476a4bfb2ull, 0xce08d0f983eb35b4ull }}, {{ 0x13a0cbadd238784eull, 0x3bddb9850bb36f23ull, 0x8a1a78e2729d8a09ull, 0xd337624a658a5b7dull, 0x9076746ca26f7cfaull, 0x0c5829bf2730190bull }}, {{ 0xc447f4ca3634b30eull, 0x56a93f327502575eull, 0x6508b8d87a27645cull, 0x4029d6e7f76792e7ull, 0xa4a08c3e585ae1ccull, 0x7b71a17787e0fa73ull }}, {{ 0xaacf8fe61e0efe8aull, 0x629c77f8921769b3ull, 0xf2573874c589eb9bull, 0x81a2650faa0bbd09ull, 0x6e457a6f738cd1faull, 0xd2704eab4ec9c884ull }}, {{ 0xac1b9efd2c95f166ull, 0xda1cafb5b4ea2104ull, 0x7768348fb7633411ull, 0x1057f29ca4756263ull, 0x4eb6c85a838033c9ull, 0x386312b113e1d52cull }}, {{ 0xb91435e3bddb6dfeull, 0x851edd1911254a2eull, 0xaa120d9d29e008b2ull, 0xa36f7a1e6c95d7e2ull, 0x1323d389230205daull, 0x33debaeac6d253bbull }}, {{ 0x3aca1ae56a924be8ull, 0x3334a2faab74e5d3ull, 0xa4b48823a2c056f9ull, 0x625ac5303dda6edaull, 0xbf66435b5e143a8aull, 0x06b34d2bc437454eull }}, {{ 0x4be50cf629b6f70dull, 0x000e5dcab290fa40ull, 0x6f0d51645b8365bcull, 0xd78bb3e26a88548aull, 0x79fea191acca4967ull, 0x430103b5aa28b513ull }}, {{ 0xf6f2819da125a684ull, 0x008fa9eaf9a9c682ull, 0x56852deb9321f958ull, 0x6b7506d829534d68ull, 0xc3f24fb0bfe6de0eull, 0x9e0a2518a59712c2ull }}, {{ 0xa57910284b78812bull, 0x059ca32dc0a1c11dull, 0x6133cb33bf53bd70ull, 0x329244719d410613ull, 0xa7771ce77f04ac90ull, 0x2c6572f677e6bb9bull }}, {{ 0x76baa192f2b50baeull, 0x381e5fc986518b28ull, 0xcc05f00579456660ull, 0xf9b6ac70248a3cc1ull, 0x8aa7210af62ebda1ull, 0xbbf67da0af035414ull }}, {{ 0xa34a4fbd7b1274c9ull, 0x312fbddf3f2f6f94ull, 0xf83b6036bcb5ffc2ull, 0xc122bc616d665f91ull, 0x6a874a6d9dd36853ull, 0x57a0e846d62148cdull }}, {{ 0x60e71d66ceb88fdeull, 0xebdd6ab877da5bceull, 0xb251c2235f1bfd95ull, 0x8b5b5bce45ffbbb3ull, 0x2948e8482a421345ull, 0x6c4912c45d4cd806ull }}, {{ 0xc907260413359eb1ull, 0x36a62b34ae87960full, 0xf7319561b717e7dbull, 0x7191960ebbfd5504ull, 0x9cd912d1a694c0b7ull, 0x3adabbaba500703dull }}, {{ 0xda477c28c01832e8ull, 0x227db00ed14bdc9dull, 0xa7efd5d126ef0e90ull, 0x6fafdc9357e55231ull, 0x207abc3081cf872aull, 0x4c8b54b472046268ull }}, {{ 0x86cad99780f1fd10ull, 0x58e8e0942cf69e2aull, 0x8f5e5a2b855691a1ull, 0x5cde9dc16ef535f0ull, 0x44cb59e5121b47a8ull, 0xfd714f0c742bd811ull }}, {{ 0x43ec7feb0973e29cull, 0x7918c5c9c1a22da9ull, 0x99af85b33561b04dull, 0xa0b2298e55941b65ull, 0xaff182f2b510cc93ull, 0xe66d167c89b670acull }}, {{ 0xa73cff2e5e86da1cull, 0xbaf7b9e19055c89cull, 0x00db390015d0e306ull, 0x46f59f8f57c911f8ull, 0xdf6f1d7b12a7fdc4ull, 0x0042e0dd612066beull }}, {{ 0x8861f7cfb144851aull, 0x4dad42cfa359d61eull, 0x08903a00da28de43ull, 0xc5983b996ddab3b0ull, 0xba5726ceba8fe9aaull, 0x029cc8a5cb440374ull }}, {{ 0x53d3ae1cecad3302ull, 0x08c49c1c61825d31ull, 0x55a244088598aea1ull, 0xb7f253fe4a8b04e0ull, 0x47678413499f20abull, 0x1a1fd679f0a8228full }}, {{ 0x4644cd213ec3fe11ull, 0x57ae191bcf17a3edull, 0x5856a85537f6d24aull, 0x2f7747eee96e30c3ull, 0xca0b28c0e03746b5ull, 0x053e60c366915998ull }}, {{ 0xbeb0034c73a7eca6ull, 0x6cccfb1616ec6744ull, 0x736293542fa436e7ull, 0xdaa8cf551e4de7a1ull, 0xe46f9788c228c313ull, 0x346fc7a201ad7ff7ull }}, {{ 0x72e020fc848f3e7cull, 0x4001cedce53c08afull, 0x81d9c149dc6a250aull, 0x8a9819532f0b0c4eull, 0xec5beb5795979ec6ull, 0x0c5dcc5410c6ffaeull }}, {{ 0x7cc149dd2d9870d9ull, 0x801214a0f45856daull, 0x12818ce29c257266ull, 0x69f0fd3fd66e7b11ull, 0x3b97316bd7ec33c1ull, 0x7ba9fb48a7c5fcd5ull }}, {{ 0xdf8ce2a3c7f46878ull, 0x00b4ce498b736488ull, 0xb90f80da19767801ull, 0x2369e47e6050ceaaull, 0x53e7ee366f3a058eull, 0xd4a3d0d68dbbe054ull }}, {{ 0xbb80da65cf8c14adull, 0x07100edf7281ed58ull, 0x3a9b0884fea0b00aull, 0x6222ecefc32812abull, 0x470f4e205844378dull, 0x4e6628618956c34bull }}, {{ 0x530887fa1b78cec1ull, 0x46a094ba79134577ull, 0x4a0e5531f246e064ull, 0xd55d415d9f90bab0ull, 0xc6990d4372aa2b85ull, 0x0ffd93cf5d63a0f0ull }}, {{ 0x3e554fc512b8138dull, 0xc245cf48bac0b6a9ull, 0xe48f53f376c4c3eaull, 0x55a48da83ba74ae2ull, 0xc1fa84a27aa5b33aull, 0x9fe7c619a5e44967ull }}, {{ 0x6f551db2bb30c37eull, 0x96ba18d74b87229cull, 0xed994782a3afa72bull, 0x586d88925488ecdcull, 0x93c92e58ca790047ull, 0x3f0dbd007aeade0dull }}, {{ 0x595328fb4fe7a2e8ull, 0xe344f868f3475a1cull, 0x47fccb1a64dc87b3ull, 0x744755b74d5940a1ull, 0xc5dbcf77e8ba02c9ull, 0x76896204cd2cac87ull }}, {{ 0x7d3f99d11f0c5d15ull, 0xe0b1b41980c9851bull, 0xcfdfef07f09d4d06ull, 0x8ac95929057c864cull, 0xba961aaf17441bdeull, 0xa15dd43003bebd4dull }}, {{ 0xe47c022b367ba2d1ull, 0xc6f108ff07df3312ull, 0x1ebf564f66250244ull, 0x6bdd7b9a36dd3f00ull, 0x49dd0ad6e8a916b1ull, 0x4daa49e025736509ull }}, {{ 0xecd815b020d45c28ull, 0xc56a59f64eb7febcull, 0x33795f19fd7216afull, 0x36a6d40624a47601ull, 0xe2a26c65169ae2eeull, 0x08a6e2c17681f25cull }}, {{ 0x4070d8e1484b9992ull, 0xb627839f132ff361ull, 0x02bdb703e674e2ddull, 0x2284483d6e6c9c0cull, 0xda583bf2e20cdd4eull, 0x5684db8ea11377a0ull }}, {{ 0x846878ccd2f3ffb2ull, 0x1d8b2436bfdf81ccull, 0x1b6926270090dca9ull, 0x592ad266503e1878ull, 0x8772577cd480a50dull, 0x613093924ac2ac48ull }}, {{ 0x2c14b8003d87fcefull, 0x276f6a237ebb11fdull, 0x121b7d8605a89e9bull, 0x7bac37ff226cf4b1ull, 0x4a776ae04d067285ull, 0xcbe5c3b6eb9abad5ull }}, {{ 0xb8cf3002674fe15aull, 0x8a5a2562f34eb3e3ull, 0xb512e73c3896320full, 0xd4ba2ff758418eeaull, 0xe8aa2cc302407936ull, 0xf6f9a525340b4c54ull }}, {{ 0x3817e018091ecd87ull, 0x678575dd811306e5ull, 0x12bd085a35ddf49bull, 0x4f45dfa9728f952bull, 0x16a5bf9e1684bc24ull, 0xa5c073740870fb51ull }}, {{ 0x30eec0f05b340749ull, 0x0b369aa70abe44f4ull, 0xbb6253861aab8e12ull, 0x18babc9e799bd3aeull, 0xe2797c2ce12f596bull, 0x798482885469d12aull }}, {{ 0xe9538963900848d9ull, 0x70220a866b6eb189ull, 0x51d7433d0ab38cb4ull, 0xf74b5e30c01644d3ull, 0xd8bed9c0cbd97e2eull, 0xbf2d19534c222bacull }}, {{ 0x1d435de3a052d87bull, 0x615469403252ef63ull, 0x3268a0626b037f0cull, 0xa8f1ade780deb041ull, 0x77748187f67eedd5ull, 0x77c2fd40f955b4c0ull }}, {{ 0x24a1aae4433c74d2ull, 0xcd4c1c81f73d59dfull, 0xf81643d82e22f67bull, 0x9970cb0b08b2e28bull, 0xaa8d0f4fa0f54a58ull, 0xad9de489bd590f84ull }}, {{ 0x6e50aceaa05c902full, 0x04f91d13a86582b7ull, 0xb0dea671cd5da0d6ull, 0xfe67ee6e56fcd977ull, 0xa982991c4994e775ull, 0xc82aed61657a9b2eull }}, {{ 0x4f26c12a439da1d7ull, 0x31bb22c493f71b2aull, 0xe8b2807205a8485cull, 0xf00f504f65e07eacull, 0x9f19fb1adfd10a9bull, 0xd1ad45cdf6ca0fd2ull }}, {{ 0x17838ba6a4285263ull, 0xf14f5badc7a70fa7ull, 0x16f904743892d399ull, 0x60992319fac4f2c1ull, 0x3703cf0cbe2a6a17ull, 0x30c4ba0ba3e49e3aull }}, {{ 0xeb237482699337d9ull, 0x6d1994c9cc869c86ull, 0xe5ba2c8a35bc4403ull, 0xc5fb5f03cbb17b8aull, 0x2626167f6da824e9ull, 0xe7af447466ee2e46ull }}, {{ 0x2f628d181fc02e7cull, 0x42ffcfe1fd421d45ull, 0xf945bd66195aa822ull, 0xbbd1b625f4eed36cull, 0x7d7ce0fa48917121ull, 0x0cd8ac8c054dcebdull }}, {{ 0xd9d982f13d81d0dcull, 0x9dfe1ed3e49524b3ull, 0xbcb965fcfd8a9156ull, 0x56311d7b91544241ull, 0xe6e0c9c6d5ae6b51ull, 0x8076bd78350a1366ull }}, {{ 0x827f1d6c67122899ull, 0x2bed3446edd36f06ull, 0x5f3dfbe1e769ad62ull, 0x5deb26d3ad4a9691ull, 0x04c7e1c458d0312dull, 0x04a366b21264c205ull }}, {{ 0x18f7263c06b595feull, 0xb7440ac54a425641ull, 0xb86bd6d30a20c5d5ull, 0xab2f8444c4e9e1adull, 0x2fced1ab7821ebc5ull, 0x2e6202f4b7ef9432ull }}, {{ 0xf9a77e584317dbebull, 0x28a86bb4e6975e8aull, 0x3436643e6547ba59ull, 0xafdb2aafb122d0c9ull, 0xde1430b2b15335b8ull, 0xcfd41d8f2f5bc9f5ull }}, {{ 0xc08aef729eee972bull, 0x9694351101e9b16dull, 0x0a1fea6ff4cd477bull, 0xde8faadceb5c27dcull, 0xacc9e6faed401936ull, 0x1e492797d995e39aull }}, {{ 0x856d5a7a3551e7b2ull, 0xe1ca12aa1320ee49ull, 0x653f285f9004cad3ull, 0xb19caca131998e98ull, 0xbfe305cd4480fc24ull, 0x2edb8bee7fdae40aull }}, {{ 0x364588c615330cf3ull, 0xd1e4baa4bf494edfull, 0xf47793bba02fec46ull, 0xf01ebe4befff91f3ull, 0x7ede3a04ad09d96eull, 0xd4937750fe8ce86bull }}, {{ 0x1eb757bcd3fe817dull, 0x32ef4a6f78dd14b8ull, 0x8cabc55441df3ac4ull, 0x61336ef75ffbb387ull, 0xf4ae442ec2627e55ull, 0x4dc2a929f1811432ull }}, {{ 0x33296d6047f10edeull, 0xfd58e85ab8a2cf31ull, 0x7eb5b54a92b84ba9ull, 0xcc0255a9bfd5034bull, 0x8ecea9d397d8ef55ull, 0x099a9ba36f0ac9fdull }}, {{ 0xff9e45c2cf6a94adull, 0xe579138b365c17ebull, 0xf31914e9bb32f4a3ull, 0xf81758a17e5220f2ull, 0x9412a243ee795959ull, 0x600a1462566be3e7ull }}, {{ 0xfc2eb99c1a29cec2ull, 0xf6bac3701f98ef37ull, 0x7efad1214ffd8e66ull, 0xb0e9764eef35497dull, 0xc8ba56a750bd7d83ull, 0xc064cbd76036e70bull }}, {{ 0xd9d3401905a21396ull, 0xa34ba2613bf9582full, 0xf5cc2b4d1fe79005ull, 0xe91e9f155814dee6ull, 0xd74762892766e724ull, 0x83eff669c2250675ull }}, {{ 0x824080fa3854c3d9ull, 0x60f457cc57bd71deull, 0x99f9b1033f0ba038ull, 0x1b3236d570d0b505ull, 0x68c9d95b8a050771ull, 0x275fa0219572409aull }}, {{ 0x168509c6334fa67eull, 0xc98b6dfb6d6672b1ull, 0x03c0ea2076744233ull, 0x0ff6245668271238ull, 0x17e27d9364324a6bull, 0x89bc414fd6768608ull }}, {{ 0xe13261be011c80ecull, 0xdf724bd246007aeaull, 0x25892544a08a9605ull, 0x9f9d6b601186b630ull, 0xeed8e7c1e9f6e82eull, 0x615a8d1e60a13c50ull }}, {{ 0xcbf7d16c0b1d0937ull, 0xba76f636bc04cd2cull, 0x775b74ae4569dc3aull, 0x3c2631c0af431de1ull, 0x54790d9323a511d2ull, 0xcd89832fc64c5b29ull }}, {{ 0xf7ae2e386f225c25ull, 0x48a59e23583003bfull, 0xa9928eceb6229a4bull, 0x597df186d89f2aceull, 0x4cba87bf6472b236ull, 0x075f1fddbefb8f9dull }}, {{ 0xaccdce345757996dull, 0xd6782d6171e0257full, 0x9fb994131d5a06f0ull, 0x7eeb6f447637ac12ull, 0xff494d79ec7af61full, 0x49b73ea975d39c24ull }}, {{ 0xc00a0e0b696bfe45ull, 0x60b1c5ce72c176fcull, 0x3d3fc8bf25844568ull, 0xf53258ac9e2cb8baull, 0xf8dd06c33ccd9d3aull, 0xe128729e9a441971ull }}, {{ 0x80648c721e37eeb1ull, 0xc6f1ba107b8ea5dfull, 0x647dd777772ab613ull, 0x93f776be2dbf3746ull, 0xb8a243a06008244dull, 0xcb947a3206a8fe73ull }}, {{ 0x03ed7c752e2f52e5ull, 0xc57144a4d3927abbull, 0xecea6aaaa7ab1cc5ull, 0xc7aaa36dc97828bfull, 0x3656a443c0516b07ull, 0xf3ccc5f44299f085ull }}, {{ 0x2746dc93cdd93cf4ull, 0xb66cae7043b8cb4eull, 0x41282aaa8caf1fb9ull, 0xccaa6249deb1977full, 0x1f626aa5832e2e4dull, 0x85ffbb8a9a036534ull }}, {{ 0x88c49dc60a7c6189ull, 0x203ed062a537f10dull, 0x8b91aaa97ed73d41ull, 0xfea7d6e2b2efeaf8ull, 0x39d82a771fcdcf09ull, 0x3bfd536a0421f409ull }}, {{ 0x57ae29bc68dbcf5eull, 0x427423da742f6a87ull, 0x73b0aa9ef468648bull, 0xf28e64dafd5f2db5ull, 0x4271a8a73e0a1663ull, 0x57e542242953885cull }}, {{ 0x6ccda15c189619a9ull, 0x9889668889da2949ull, 0x84e6aa358c13ed70ull, 0x798ff08de5b7c916ull, 0x987096886c64dfe7ull, 0x6ef495699d43539aull }}, {{ 0x40084d98f5dd0097ull, 0xf55e015562859cdeull, 0x3102a61778c74665ull, 0xbf9f658af92ddae1ull, 0xf465e1543bf0bf0aull, 0x558dd62024a14409ull }}, {{ 0x805307f99aa205eaull, 0x95ac0d55d93820aeull, 0xea1a7ceab7c8bffbull, 0x7c39f76dbbca8ccbull, 0x8bfacd4a5767766bull, 0x578a5d416e4ca863ull }}, {{ 0x033e4fc00a543b27ull, 0xd8b8855a7c3146d1ull, 0x2508e12b2dd77fd3ull, 0xda43aa4955e97ff7ull, 0x77cc04e76a0aa032ull, 0x6b67a48e4efe93e3ull }}, {{ 0x206f1d80674a4f85ull, 0x77353588d9ecc42aull, 0x7258cbafca6afe46ull, 0x86a4a6dd5b1effa7ull, 0xadf8310a246a41fcull, 0x320c6d8f15f1c6e2ull }}, {{ 0x4457270408e71b30ull, 0xa8141758833fa9a5ull, 0x7777f4dde82deec0ull, 0x426e84a58f35fc8aull, 0xcbb1ea656c2693ddull, 0xf47c4796db71c4daull }}, {{ 0xab67862859070fddull, 0x90c8e975207ca074ull, 0xaaaf90ab11cb5386ull, 0x98512e77981bdd68ull, 0xf4f327f63981c6a4ull, 0x8cdacbe49271b08bull }}, {{ 0xb20b3d937a469ea5ull, 0xa7d91e9344de448eull, 0xaadba6aeb1f14341ull, 0xf32bd0abf116a616ull, 0x917f8f9e3f11c26dull, 0x808bf6edb870e577ull }}, {{ 0xf47067c2c6c23270ull, 0x8e7b31c0b0aead92ull, 0xac9482d2f36ca090ull, 0x7fb626b76ae27ce2ull, 0xaefb9c2e76b1984bull, 0x0577a5493468f6abull }}, {{ 0x8c640d9bc395f860ull, 0x90cff186e6d2c7bdull, 0xbdcd1c3d823e45a5ull, 0xfd1d832a2cd8e0daull, 0xd5d419d0a2eff2f2ull, 0x36ac74dc0c19a2b4ull }}, {{ 0x7be88815a3dbb3bdull, 0xa81f6f45043bcd67ull, 0x6a031a67166eb877ull, 0xe3271fa5c078c88bull, 0x5a4902265d5f7d7dull, 0x22bc909879005b10ull }}, {{ 0xd71550d866950563ull, 0x913a58b22a56060aull, 0x241f0806e05334acull, 0xdf873c7984b7d572ull, 0x86da157fa5bae6eaull, 0x5b5da5f4ba038ea3ull }}, {{ 0x66d5287401d235deull, 0xac4776f5a75c3c6cull, 0x69365044c3400ebdull, 0xbb485cbf2f2e5675ull, 0x4484d6fc794d052cull, 0x91a87b8f44239263ull }}, {{ 0x0453948812361ab1ull, 0xbacaa598899a5c3cull, 0x1c1f22afa0809368ull, 0x50d39f77d7cf6096ull, 0xad3065dcbd0233bfull, 0xb094d398a963b7e0ull }}, {{ 0x2b43cd50b61d0ae6ull, 0x4bea77f560079a58ull, 0x19375adc4505c217ull, 0x28443aae6e19c5ddull, 0xc3e3fa9f62160579ull, 0xe5d043f69de52ec6ull }}, {{ 0xb0a605271d226d00ull, 0xf728af95c04c0771ull, 0xfc298c9ab23994e8ull, 0x92aa4ad04d01baa2ull, 0xa6e7ca39d4dc36bbull, 0xfa22a7a22af3d3c3ull }}, {{ 0xe67c338723584202ull, 0xa796dbd982f84a70ull, 0xd99f7e0af63fd119ull, 0xbaa6ec2302114a5dull, 0x850de642509a2353ull, 0xc55a8c55ad8645a4ull }}, {{ 0x00da034761729411ull, 0x8be4967f1db2e869ull, 0x803aec6d9e7e2b00ull, 0x4a85395e14ace7aaull, 0x328afe9726056145ull, 0xb5897b58c73eb86dull }}, {{ 0x088420c9ce79c8aaull, 0x76ede0f728fd141aull, 0x024d3c4830edae05ull, 0xe9343daccec10ca9ull, 0xf96df1e77c35ccb4ull, 0x175ed177c8733443ull }}, {{ 0x552947e210c1d6a4ull, 0xa54ac9a799e2c904ull, 0x17045ad1e948cc36ull, 0x1c0a68c0138a7e9aull, 0xbe4b730ada19ff11ull, 0xe9b42eadd4800aa7ull }}, {{ 0x539cced4a7926267ull, 0x74ebe08c02dbda2bull, 0xe62b8c331cd7fa22ull, 0x18681780c368f204ull, 0x6ef27e6c8503f6abull, 0x2109d2ca4d006a8dull }}, {{ 0x4420144e8bb7d803ull, 0x9136c5781c9685b1ull, 0xfdb379ff206fc558ull, 0xf410eb07a2197430ull, 0x5578f03d3227a2aeull, 0x4a623be702042986ull }}, {{ 0xa940cb11752e701cull, 0xac23b6b11de138ecull, 0xe902c3f7445db575ull, 0x88a92e4c54fe89e9ull, 0x56b96263f58c5ad5ull, 0xe7d6570614299f3full }}, {{ 0x9c87eeae93d06114ull, 0xb96522eb2acc393eull, 0x1a1ba7a8aba91698ull, 0x569bcefb51f16323ull, 0x633dd7e7977b8c57ull, 0x0e5f663cc9a03879ull }}, {{ 0x1d4f52d1c623cac5ull, 0x3df35d2fabfa3c72ull, 0x05148c96b49ae1f7ull, 0x621615d1336ddf5full, 0xe06a6f0bead37b69ull, 0x8fb9fe5fe04234bdull }}, {{ 0x25193c31bd65ebb2ull, 0x6b81a3dcb7c65c75ull, 0x32cd7de30e0cd3a8ull, 0xd4dcda2c024ab9b6ull, 0xc42856772c42d21dull, 0x9d43efbec2960f6aull }}, {{ 0x72fc59f165fb34f3ull, 0x3310669f2dbf9c93ull, 0xfc06eade8c804494ull, 0x50a085b816eb411dull, 0xa99360a7ba9c352aull, 0x24a75d7399dc9a2bull }}, {{ 0x7ddb836dfbd01182ull, 0xfea40237c97c1dc2ull, 0xd8452cb17d02adc9ull, 0x26453930e5308b2bull, 0x9fc1c68d4a1a13a7ull, 0x6e89a684029e05b4ull }}, {{ 0xea93224bd620af16ull, 0xf268162dded92998ull, 0x72b3beeee21ac9e3ull, 0x7eb43be8f3e56fb6ull, 0x3d91c184e504c487ull, 0x516081281a2c390eull }}, {{ 0x29bf56f65d46d6d7ull, 0x7810ddcab47b9ff9ull, 0x7b057554d50be2e7ull, 0xf30a571986f65d20ull, 0x67b18f30f22fad4aull, 0x2dc50b9105ba3a8eull }}, {{ 0xa179659fa4c46467ull, 0xb0a8a9eb0cd43fbbull, 0xce3695505276dd0aull, 0x7e6766ff459fa344ull, 0x0cef97e975dcc4edull, 0xc9b273aa39464990ull }}, {{ 0x4ebdf83c6fabec07ull, 0xe696a32e804a7d54ull, 0x0e21d52338a4a26aull, 0xf00a05f8b83c60b0ull, 0x815bef1e9a9fb146ull, 0xe0f884a63cbedfa0ull }}, {{ 0x136bb25c5cb73847ull, 0x01e25fd102e8e54bull, 0x8d525360366e582dull, 0x60643bb7325bc6e0ull, 0x0d9757320a3cecc5ull, 0xc9b52e7e5f74bc45ull }}, {{ 0xc234f79b9f2832c5ull, 0x12d7be2a1d18f4eeull, 0x853741c2204f71c2ull, 0xc3ea5527f795c4c5ull, 0x87e967f466613fb5ull, 0xe113d0efba8f5ab2ull }}, {{ 0x9611ac143791fbb3ull, 0xbc6d6da522f99153ull, 0x34289195431a7194ull, 0xa727538fabd9afb7ull, 0x4f1e0f8bffcc7d19ull, 0xcac6295d49998af9ull }}, {{ 0xdcb0b8ca2bb3d500ull, 0x5c4648735dbfad43ull, 0x0995afd49f086fcfull, 0x8789439cb680dd28ull, 0x172c9b77fdfce300ull, 0xebbd9da4dfff6dbdull }}, {{ 0x9ee737e5b5065205ull, 0x9abed481a97cc4a6ull, 0x5fd8de4e36545e19ull, 0x4b5ca41f2108a390ull, 0xe7be12afebe0de05ull, 0x35682870bffa4962ull }}, {{ 0x35082ef9123f3431ull, 0x0b744d109edfae82ull, 0xbe78af0e1f4bad00ull, 0xf19e69374a5663a3ull, 0x0d6cbadf36c8ac34ull, 0x161194677fc6ddddull }}, {{ 0x1251d5bab67809eeull, 0x728b02a634bcd116ull, 0x70b6d68d38f4c200ull, 0x70301c28e75fe465ull, 0x863f4cb823d6ba11ull, 0xdcafcc0afdc4aaa2ull }}, {{ 0xb732594b20b0634eull, 0x796e1a7e0f602adcull, 0x67246184398f9404ull, 0x61e1199909beebf6ull, 0x3e78ff31666344aeull, 0x9eddf86de9aeaa59ull }}, {{ 0x27f77cef46e3e109ull, 0xbe4d08ec99c1ac9full, 0x076bcf2a3f9bc82cull, 0xd2cafffa617537a0ull, 0x70b9f7edffe0aecfull, 0x34abb44b20d2a77cull }}, {{ 0x8faae158c4e6ca5aull, 0x6f02593e0190be37ull, 0x4a3617a67c15d1bfull, 0x3bedffc7ce942c40ull, 0x6743af4bfec6d41eull, 0x0eb50aef483a8adcull }}, {{ 0x9caccd77b103e785ull, 0x56177c6c0fa76e2bull, 0xe61cec80d8da317aull, 0x574bfdce11c9ba82ull, 0x08a4d8f7f3c4492eull, 0x93126d58d2496c9cull }}, {{ 0x1ec006acea270b36ull, 0x5ceadc389c8a4db4ull, 0xfd213d087885eec7ull, 0x68f7ea0cb1e1491cull, 0x567079af85aadbcfull, 0xbeb8457836de3e18ull }}, {{ 0x338042c125867020ull, 0xa12c9a361d670909ull, 0xe34c6254b53b53c9ull, 0x19af247ef2ccdb21ull, 0x6064c0db38ac961aull, 0x7332b6b224ae6cf3ull }}, {{ 0x03029b8b77406144ull, 0x4bbe061d26065a5cull, 0xe0fbd74f145145e0ull, 0x00d76cf57c008f52ull, 0xc3ef889036bddd05ull, 0x7ffb22f56ed04181ull }}, {{ 0x1e1a1372a883ccaaull, 0xf56c3d237c3f8798ull, 0xc9d66916cb2cbac2ull, 0x086a4196d805993cull, 0xa75b55a2236aa232ull, 0xffcf5d9654228f11ull }}, {{ 0x2d04c27a9525fea8ull, 0x963a6362da7b4bf1ull, 0xe2601ae3efbf4b9dull, 0x54268fe47037fc5full, 0x89915855622a55f4ull, 0xfe19a7df495996b0ull }}, {{ 0xc22f98c9d37bf28dull, 0xde47e1dc88d0f76bull, 0xd7c10ce75d78f427ull, 0x49819eec622fdbbeull, 0x5fad7355d5a75b8bull, 0xed008eb8dd7fe2e5ull }}, {{ 0x95dbf7e242d7797dull, 0xaeced29d5829aa35ull, 0x6d8a8109a6b9898eull, 0xdf10353bd5de9574ull, 0xbcc6815a58899370ull, 0x42059338a6fedcf5ull }}, {{ 0xda97aed69c6abee3ull, 0xd4143a2571a0a617ull, 0x47690a60833f5f92ull, 0xb6a214565ab1d68cull, 0x5fc10d87755fc268ull, 0x9437c03685f4a199ull }}, {{ 0x89ecd4621c2b74e2ull, 0x48ca457670467ceeull, 0xca1a67c52079bbbcull, 0x2254cb5f8af2617aull, 0xbd8a874a95bd9817ull, 0xca2d82213b8e4ffdull }}, {{ 0x63404bd519b290d1ull, 0xd7e6b6a062c0e151ull, 0xe5080db344c1555aull, 0x574ff1bb6d77cecbull, 0x676948e9d967f0e7ull, 0xe5c7154c538f1fe9ull }}, {{ 0xe082f65300f9a827ull, 0x6f032243db88cd2dull, 0xf2508900af8d558cull, 0x691f715246ae13f6ull, 0x0a1cd9227e0f6909ull, 0xf9c6d4fb43973f1eull }}, {{ 0xc51d9f3e09c09181ull, 0x561f56a6935803caull, 0x77255a06db85577cull, 0x1b3a6d36c2ccc7a5ull, 0x65207b58ec9a1a5eull, 0xc1c451d0a3e8772cull }}, {{ 0xb328386c6185af0cull, 0x5d396281c17025ebull, 0xa775844493356adbull, 0x104844239bffcc76ull, 0xf344d1793e0507adull, 0x91ab32266714a7bbull }}, {{ 0xff92343bcf38d675ull, 0xa43dd9118e617b34ull, 0x8a972aadc0162c91ull, 0xa2d2a96417fdfca2ull, 0x80b02ebc6c324cc2ull, 0xb0aff58006ce8d57ull }}, {{ 0xfbb60a5618386092ull, 0x6a6a7aaf8fced011ull, 0x69e7aac980ddbdb0ull, 0x5c3a9de8efebde59ull, 0x06e1d35c39f6ff9aull, 0xe6df97004411856bull }}, {{ 0xd51c675cf233c5b0ull, 0x2828cadb9e1420b3ull, 0x230cabdf08a968e4ull, 0x9a4a2b195f36af7eull, 0x44d2419a43a5fc07ull, 0x04bbe602a8af362eull }}, {{ 0x531c09a17605b8dcull, 0x9197ec942cc94706ull, 0x5e7eb6b6569e18e9ull, 0x06e5aefdb822daedull, 0xb0369006a47bd84cull, 0x2f56fc1a96d81dceull }}, {{ 0x3f18604e9c39389bull, 0xafef3dc9bfdcc63full, 0xb0f3231f622cf91full, 0x44f8d5e9315c8d45ull, 0xe221a0426cd672f8ull, 0xd965d909e4712a12ull }}, {{ 0x76f3c3121a3c360eull, 0xdf5869e17e9fbe78ull, 0xe97f5f39d5c1bb3cull, 0xb1b85b1bed9d84b8ull, 0xd550429840607db2ull, 0x7dfa7a62ec6ba4bcull }}, {{ 0xa5859eb5065a1c8bull, 0xb97422cef23d70b4ull, 0x1ef9b84259915060ull, 0xf1338f1748272f39ull, 0x552299f283c4e8faull, 0xebc8c7dd3c346f60ull }}, {{ 0x773833123f851d6dull, 0x3e895c157666670eull, 0x35c132977fad23c7ull, 0x6c0396e8d187d83bull, 0x535a037925b119cdull, 0x35d7cea45a0c59c3ull }}, {{ 0xa831feb67b33263full, 0x715d98d6a0000690ull, 0x198bf9eafcc365c8ull, 0x3823e5182f4e7250ull, 0x418422bb78eb0206ull, 0x1a6e126b847b81a1ull }}, {{ 0x91f3f320cfff7e79ull, 0x6da7f862400041a6ull, 0xff77c32ddfa1f9d4ull, 0x3166f2f1d9107720ull, 0x8f295b52b92e143eull, 0x084cb8332cd3104cull }}, {{ 0xb3877f481ffaf0b8ull, 0x488fb3d680029081ull, 0xfaad9fcabc53c24cull, 0xee057d727aa4a749ull, 0x979d913b3bccca6dull, 0x52ff31ffc03ea2fdull }}, {{ 0x034af8d13fcd672bull, 0xd59d06610019a511ull, 0xcac83deb5b4596faull, 0x4c36e678ca6e88e3ull, 0xec27ac5055ffe84bull, 0x3df7f3fd82725de7ull }}, {{ 0x20edb82c7e0607b3ull, 0x58223fca010072aaull, 0xebd26b3190b7e5ccull, 0xfa2500b7e85158e5ull, 0x398cbb235bff12f0ull, 0x6baf87e71877ab0full }}, {{ 0x494931bcec3c4cfaull, 0x71567de40a047aa5ull, 0x36382fefa72ef9fbull, 0xc572072f132d78fbull, 0x3f7f4f6197f6bd69ull, 0x34db4f06f4acae98ull }}, {{ 0xdcdbf1613a5b01c0ull, 0x6d60eae8642cca74ull, 0x1e31df5c87d5c3d2ull, 0xb67447d6bfc6b9d0ull, 0x7af919cfefa36621ull, 0x109116458ebed1f2ull }}, {{ 0xa0976dcc478e1183ull, 0x45c92d13e9bfe890ull, 0x2df2b99d4e59a638ull, 0x208ace637dc34221ull, 0xcdbb021f5c61fd51ull, 0xa5aadeb793743378ull }}, {{ 0x45ea49facb8caf1bull, 0xb9dbc2c7217f15a6ull, 0xcb7b40250f807e32ull, 0x456c0fe2e9a0954bull, 0x094e15399bd3e52bull, 0x78acb32bc28a02b8ull }}, {{ 0xbb26e3cbf37ed70full, 0x42959bc74ef6d87eull, 0xf2d081729b04edfbull, 0xb6389edd2045d4f5ull, 0x5d0cd4401646f3b0ull, 0xb6beffb599641b30ull }}, {{ 0x4f84e5f782f46693ull, 0x99d815c915a474f3ull, 0x7c250e7a0e314bd0ull, 0x1e3634a342ba519bull, 0xa2804a80dec584e7ull, 0x2375fd17fde90fe3ull }}, {{ 0x1b30fbab1d8c01bdull, 0x0270d9dad86c9181ull, 0xd97290c48decf626ull, 0x2e1e0e609b473012ull, 0x5902e908b3b73107ull, 0x629be2efeb1a9ee4ull }}, {{ 0x0fe9d4af27781166ull, 0x1868828c743daf0bull, 0x7e79a7ad8b419d7cull, 0xcd2c8fc610c7e0bcull, 0x7a1d1a570527ea47ull, 0xda16dd5f2f0a34ebull }}, {{ 0x9f224ed78ab0adfdull, 0xf415197c8a68d66eull, 0xf0c08cc7709026d8ull, 0x03bd9dbca7cec75cull, 0xc5230766338f26ceull, 0x84e4a5b7d6661132ull }}, {{ 0x3757146b6ae6cbe0ull, 0x88d2fedd68186052ull, 0x67857fca65a18479ull, 0x2568295e8e13c9a1ull, 0xb35e49fe0397840cull, 0x30ee792e5ffcabfbull }}, {{ 0x2966cc322d03f6c4ull, 0x583df4a610f3c336ull, 0x0b36fde7f84f2cbfull, 0x76119db18cc5e04eull, 0x01aee3ec23eb2879ull, 0xe950bbcfbfdeb7d5ull }}, {{ 0x9e03f9f5c227a3a4ull, 0x726b8e7ca985a01dull, 0x7025eb0fb317bf79ull, 0x9cb028ef7fbac30cull, 0x10d4e739672f94beull, 0x1d27561d7eb32e52ull }}, {{ 0x2c27c399958c6464ull, 0x783390de9f384128ull, 0x617b2e9cfeed7abeull, 0x1ee1995afd4b9e7cull, 0xa851083e07dbcf72ull, 0x23895d26f2ffcf34ull }}, {{ 0xb98da3ffd77bebe9ull, 0xb203a8b238328b91ull, 0xcecfd221f546cb70ull, 0x34cffd8de4f430dbull, 0x932a526c4e961a75ull, 0x635da3857dfe180eull }}, {{ 0x3f8867fe6ad7371bull, 0xf42496f631f973b1ull, 0x141e355394c3f266ull, 0x101fe78af189e896ull, 0xbfa7383b11dd0894ull, 0xe1a86336ebecf091ull }}, {{ 0x7b540ff02c68270eull, 0x896de59df3be84ecull, 0xc92e1543cfa77805ull, 0xa13f0b6d6f6315dcull, 0x7c88324eb2a255c8ull, 0xd093e025374165b1ull }}, {{ 0xd1489f61bc11868dull, 0x5e4af82b8571313cull, 0xdbccd4a61c8ab037ull, 0x4c76724659deda9full, 0xdd51f712fa5759d6ull, 0x25c6c174288df8eeull }}, {{ 0x2cd639d158af4180ull, 0xaeedb1b3366bec60ull, 0x96004e7d1d6ae229ull, 0xfca076bf82b48a3eull, 0xa533a6bdc769825eull, 0x79c38e89958bb954ull }}, {{ 0xc05e422d76d88f04ull, 0xd548f10020373bc1ull, 0xdc0310e3262cd5a0ull, 0xde44a37b1b0d6671ull, 0x74048369ca1f17b5ull, 0xc1a3915fd7753d4eull }}, {{ 0x83ae95c6a4759627ull, 0x54d96a0142285591ull, 0x981ea8df7dc05848ull, 0xaeae62cf0e860072ull, 0x882d2221e536ed1aull, 0x9063adbe6a946510ull }}, {{ 0x24d1d9c26c97dd85ull, 0x507e240c959357afull, 0xf13298bae98372d3ull, 0xd2cfdc16913c0479ull, 0x51c35552f425430aull, 0xa3e4c97029cbf2a5ull }}, {{ 0x703281983deea737ull, 0x24ed687dd7c16cd7ull, 0x6bf9f74d1f227c41ull, 0x3c1e98e1ac582cc3ull, 0x31a1553d89749e6cull, 0x66efde61a1f77a75ull }}, {{ 0x61f90ff26b528822ull, 0x714614ea6d8e406aull, 0x37c3a9033758da8bull, 0x5931f8d0bb71bfa2ull, 0xf04d54675e8e303aull, 0x055eafd053aac893ull }}, {{ 0xd3ba9f7831395155ull, 0x6cbcd128478e8427ull, 0x2da49a2029788972ull, 0x7bf3b82752717c56ull, 0x63054c09b18de247ull, 0x35b2de2344abd5c7ull }}, {{ 0x454a3ab1ec3d2d4eull, 0x3f602b92cb91298eull, 0xc86e05419eb55e78ull, 0xd7853189386edb5dull, 0xde34f860ef8ad6caull, 0x18fcad60aeb659c9ull }}, {{ 0xb4e64af33a63c509ull, 0x79c1b3bbf3ab9f8eull, 0xd44c34903315b0b2ull, 0x6b33ef5c345491a9ull, 0xae11b3c95b6c63ecull, 0xf9dec5c6d31f81e2ull }}, {{ 0x10feed8047e5b25bull, 0xc191055784b43b93ull, 0x4afa0da1fed8e6f8ull, 0x3007599a0b4db0a2ull, 0xccb105dd923be73cull, 0xc2b3b9c43f3b12daull }}, {{ 0xa9f54702cef8f790ull, 0x8faa356b2f0a53beull, 0xedc48853f47905b7ull, 0xe04980047108e656ull, 0xfeea3aa7b6570859ull, 0x9b0541aa784ebc8bull }}, {{ 0xa394c61c15b9aba4ull, 0x9ca6162fd6674572ull, 0x49ad53478cba392bull, 0xc2df002c6a58ff65ull, 0xf5264a8d1f665382ull, 0x0e3490a8b3135d77ull }}, {{ 0x63cfbd18d940b46cull, 0x1e7cddde6008b67aull, 0xe0c540cb7f463bb4ull, 0x9cb601bc2779f9f4ull, 0x937ee98339ff431bull, 0x8e0da696fec1a6afull }}, {{ 0xe61d62f87c870c33ull, 0x30e0aaafc05720c7ull, 0xc7b487f2f8be5509ull, 0x1f1c11598ac3c390ull, 0xc2f51f2043f89f14ull, 0x8c8881e5f39082dbull }}, {{ 0xfd25ddb4dd467a00ull, 0xe8c6aadd836747ceull, 0xcd0d4f7db76f525bull, 0x3718ad7f6ba5a3a7ull, 0x9d933742a7b636c9ull, 0x7d5512fb83a51c95ull }}, {{ 0xe37aa910a4c0c3feull, 0x17c2aca72208ce15ull, 0x02851ae92a593797ull, 0x26f6c6fa3478648eull, 0x27c0289a8d1e23dcull, 0xe552bdd324731dd8ull }}, {{ 0xe2ca9aa66f87a7efull, 0xed9abe8754580cdaull, 0x19330d1ba77c2be6ull, 0x85a3c5c60cb3ed8cull, 0x8d819609832d6699ull, 0xf53b6a3f6c7f2a71ull }}, {{ 0xdbea0a805b4c8f5bull, 0x480b71494b70808cull, 0xfbfe83148ad9b705ull, 0x3865b9bc7f074778ull, 0x870fdc5f1fc601ffull, 0x9452267a3cf7a86full }}, {{ 0x9724690390fd998bull, 0xd0726cdcf2650580ull, 0xd7f11ecd6c812634ull, 0x33f9415cf648cab9ull, 0x469e9bb73dbc13f8ull, 0xcb3580c661ac945bull }}, {{ 0xe76c1a23a9e7ff6eull, 0x247840a177f23705ull, 0x6f6b34063d0b7e10ull, 0x07bc8da19ed7eb42ull, 0xc23215286958c7b2ull, 0xf01707bfd0bdcb90ull }}, {{ 0x0a390564a30ffa4eull, 0x6cb2864eaf76263bull, 0x5a30083e6272eca1ull, 0x4d5d8850346f3098ull, 0x95f4d3941d77ccf4ull, 0x60e64d7e2769f3a7ull }}, {{ 0x663a35ee5e9fc70eull, 0x3ef93f12da9d7e4eull, 0x85e0526fd87d3e4eull, 0x05a753220c57e5f3ull, 0xdb9043c926ae018bull, 0xc8ff06ed8a23848bull }}, {{ 0xfe461b4fb23dc688ull, 0x75bc76bc8a26ef0full, 0x3ac3385e74e46f0eull, 0x38893f547b6efb83ull, 0x93a2a5db82cc0f6eull, 0xd9f6454765632d76ull }}, {{ 0xeebd111cf669c14full, 0x995ca35d6585569full, 0x4ba033b090ec5690ull, 0x355c794cd255d320ull, 0xc45a7a931bf89a4eull, 0x839eb4c9f5dfc6a1ull }}, {{ 0x5362ab21a0218d13ull, 0xfd9e61a5f735623full, 0xf44204e5a93b61a5ull, 0x159cbd00375a3f42ull, 0xab88c9bf17b6070eull, 0x24330fe39abdc251ull }}, {{ 0x41daaf50414f82bdull, 0xe82fd07ba815d679ull, 0x8a9430f89c51d07bull, 0xd81f62022986789dull, 0xb357e176ed1c468cull, 0x69fe9ee40b699730ull }}, {{ 0x928ad9228d1b1b5eull, 0x11de24d490da60bcull, 0x69c9e9b61b3224d7ull, 0x7139d4159f40b627ull, 0x016ecea5431ac180ull, 0x23f234e8721fe7e7ull }}, {{ 0xb96c7b59830f11a8ull, 0xb2ad704da887c75dull, 0x21e3211d0ff57066ull, 0x6c4248d838871d8aull, 0x0e5412749f0b8f04ull, 0x67761114753f0f06ull }}, {{ 0x3e3cd17f1e96b08dull, 0xfac66308954dc9a9ull, 0x52df4b229f966402ull, 0x3a96d87235472765ull, 0x8f48b88e3673962cull, 0x0a9caacc9476963cull }}, {{ 0x6e602ef731e2e583ull, 0xcbbfde55d509e09cull, 0x3cb8ef5a3bdfe81dull, 0x49e4747614c789f5ull, 0x98d7358e2083ddbaull, 0x6a1eabfdcca1de5dull }}, {{ 0x4fc1d5a7f2dcf71cull, 0xf57eaf5a5262c61cull, 0x5f39598656bf1129ull, 0xe2ec8c9ccfcb6394ull, 0xf868178d4526a946ull, 0x2532b7e9fe52afa7ull }}, {{ 0x1d92588f7ca1a719ull, 0x96f2d98737dbbd1bull, 0xb83d7f3f6376aba3ull, 0xdd3d7e201df1e3cbull, 0xb410eb84b3829cc4ull, 0x73fb2f23ef3adc8full }}, {{ 0x27b7759ade5086f9ull, 0xe57c7f482e95630full, 0x3266f879e2a2b463ull, 0xa466ed412b72e5f5ull, 0x08a9332f031a1fb0ull, 0x87cfd767584c9d9dull }}, {{ 0x8d2a980caf2545bfull, 0xf6dcf8d1d1d5de97ull, 0xf805b4c2da5b0be6ull, 0x6c05448bb27cfb93ull, 0x569bffd61f053ce6ull, 0x4e1e6a0972fe2822ull }}, {{ 0x83a9f07ed774b974ull, 0xa4a1b832325ab1ebull, 0xb0390f9c878e7705ull, 0x3834ad74f8e1d3c7ull, 0x6217fe5d36346100ull, 0x0d30245e7ded9157ull }}, {{ 0x24a364f46a8f3e8dull, 0x6e5131f5f78af333ull, 0xe23a9c1d4b90a638ull, 0x320ec691b8d245ccull, 0xd4efefa41e0bca02ull, 0x83e16bb0eb47ad69ull }}, {{ 0x6e61f18c2998717full, 0x4f2bf39bab6d7fffull, 0xd64a1924f3a67e34ull, 0xf493c1b13836ba00ull, 0x515f5c692c75e415ull, 0x26ce34e930ccc622ull }}, {{ 0x4fd36f799ff46ef8ull, 0x17b78414b246fffaull, 0x5ee4fb718480ee0bull, 0x8dc590ec32234408ull, 0x2db99c1bbc9ae8dbull, 0x840e111be7ffbd57ull }}, {{ 0x1e425ac03f8c55b5ull, 0xed2b28cef6c5ffc7ull, 0xb4f1d26f2d094c6eull, 0x89b7a939f560a853ull, 0xc94019155e0d1893ull, 0x288cab170ffd6567ull }}, {{ 0x2e978b827b7b5911ull, 0x43af9815a3bbfdc7ull, 0x11723857c25cfc55ull, 0x612c9c4395c69345ull, 0xdc80fad5ac82f5c3ull, 0x957eaee69fe5f60dull }}, {{ 0xd1eb7318d2d17aaaull, 0xa4dbf0d86557e9c7ull, 0xae76336d97a1db54ull, 0xcbbe1aa3d9c1c0b2ull, 0x9d09cc58bd1d99a1ull, 0xd6f2d5023efb9c8aull }}, {{ 0x33327ef83c2ecaa9ull, 0x70976873f56f21ceull, 0xd09e0247ec52914eull, 0xf56d0a66819186faull, 0x2261fb7763280051ull, 0x657c521675d41d6aull }}, {{ 0xfff8f5b259d3ea95ull, 0x65ea14879657520dull, 0x262c16cf3b39ad10ull, 0x964268010faf45ccull, 0x57d3d2a9df900333ull, 0xf6db34e09a492625ull }}, {{ 0xffb998f7824729d4ull, 0xfb24cd4bdf69348bull, 0x7db8e4185040c2a3ull, 0xde98100a9cd8b9f9ull, 0x6e463aa2bba02003ull, 0xa49010c606db7d75ull }}, {{ 0xfd3ff9ab16c7a245ull, 0xcf7004f6ba1c0d77ull, 0xe938e8f322879a67ull, 0xb1f0a06a207743beull, 0x4ebe4a5b54414026ull, 0x6da0a7bc4492e696ull }}, {{ 0xe47fc0aee3cc56b4ull, 0x1a6031a3451886afull, 0x1c39197f594c080eull, 0xf366442544a8a575ull, 0x136ee7914a8c8182ull, 0x48468d5aadbd01dfull }}, {{ 0xecfd86d4e5fb6308ull, 0x07c1f060b2f542deull, 0x1a3afef97cf8508dull, 0x81fea974ae967693ull, 0xc2550bace97d0f1dull, 0xd2c1858ac96212b6ull }}, {{ 0x41e74450fbd1de4eull, 0x4d9363c6fd949cb5ull, 0x064df5bee1b32582ull, 0x13f29e8ed1e0a1bfull, 0x975274c11ee29727ull, 0x3b8f376bddd4bb23ull }}, {{ 0x9308ab29d632af08ull, 0x07c1e5c5e7ce1f14ull, 0x3f0b9974d0ff7717ull, 0xc77a319432c65176ull, 0xe9388f8b34d9e786ull, 0x53982a36aa4f4f63ull }}, {{ 0xbe56afa25dfad653ull, 0x4d92f9bb0e0d36cdull, 0x7673fe9029faa6e6ull, 0xcac5efc9fbbf2e9eull, 0x1c359b7010830b43ull, 0x43f1a622a71919e7ull }}, {{ 0x6f62dc57abcc5f40ull, 0x07bdc14e8c842409ull, 0xa087f1a1a3ca84ffull, 0xebbb5de3d577d230ull, 0x1a181260a51e70a5ull, 0xa7707d5a86fb0307ull }}, {{ 0x59dc9b6cb5fbb87full, 0x4d698d117d29685eull, 0x454f705065e931f6ull, 0x3551aae656ae35e6ull, 0x04f0b7c67330667bull, 0x8a64e58945ce1e47ull }}, {{ 0x829e123f1bd534f9ull, 0x061f82aee39e13afull, 0xb51a6323fb1bf39full, 0x1530acff62ce1afeull, 0x31672dc07fe400d0ull, 0x67f0f75cba0d2ec6ull }}, {{ 0x1a2cb677165411bcull, 0x3d3b1ad4e42cc4dbull, 0x1307df67cf178436ull, 0xd3e6c1f9dc0d0df3ull, 0xee07c984fee80820ull, 0x0f69a99f4483d3bdull }}, {{ 0x05bf20a6df48b158ull, 0x644f0c50e9bfb08full, 0xbe4eba0e16eb2a1eull, 0x470393c298828b7eull, 0x4c4ddf31f5105148ull, 0x9a20a038ad26456bull }}, {{ 0x39774684b8d6ed6eull, 0xeb167b29217ce596ull, 0x6f13448ce52fa52full, 0xc623c599f51972f3ull, 0xfb0ab7f392a32cd2ull, 0x05464236c37eb630ull }}, {{ 0x3ea8c12f3865464eull, 0x2ee0cf9b4ee0f7deull, 0x56c0ad80f3dc73dfull, 0xbd65b80392fe7d82ull, 0xce6b2f83ba5fc03bull, 0x34be9623a2f31de9ull }}, {{ 0x72978bd833f4bf0cull, 0xd4c81c1114c9aeaeull, 0x6386c709869c86b7ull, 0x65f93023bdf0e717ull, 0x102fdb2547bd8255ull, 0x0f71dd645d7f2b22ull }}, {{ 0x79eb7672078f7673ull, 0x4fd118aacfe0d2d0ull, 0xe343c65f421d432eull, 0xfbbbe1656b6906e9ull, 0xa1de8f74cd671755ull, 0x9a72a5eba6f7af54ull }}, {{ 0xc332a0744b9aa07full, 0x1e2af6ac1ec83c24ull, 0xe0a5bfb895249fcfull, 0xd556cdf6321a4522ull, 0x52b19a900606e95bull, 0x087a7b3485acd94eull }}, {{ 0x9ffa448af40a44f5ull, 0x2dada2b933d2596full, 0xc6797d35d36e3e17ull, 0x55640b9df506b35cull, 0x3af009a03c451d96ull, 0x54c8d00d38c07d0full }}, {{ 0x3fc6ad6d8866b192ull, 0xc8c85b3c06377e5cull, 0xc0bee41a424e6ce7ull, 0x55e8742b9243019full, 0x4d6060425ab327dfull, 0x4fd820843784e298ull }}, {{ 0x7dc2c6475402efb1ull, 0xd7d390583e2aef9aull, 0x8774e9069710410dull, 0x5b1489b3b69e103dull, 0x05c3c2978aff8eb9ull, 0x1e71452a2b30d9f3ull }}, {{ 0xe99bbec9481d5ceaull, 0x6e43a3726dad5c08ull, 0x4a911a41e6a28a8aull, 0x8ecd6105222ca267ull, 0x39a599eb6dfb933dull, 0x306cb3a5afe8837eull }}, {{ 0x201573dcd125a125ull, 0x4ea4627848c59859ull, 0xe9ab069302596968ull, 0x9405ca3355be5808ull, 0x407803324bd3c067ull, 0xe43f0478df1522eeull }}, {{ 0x40d686a02b784b71ull, 0x126bd8b2d7b7f37bull, 0x20ae41be177e1e13ull, 0xc839e601596f7059ull, 0x84b01ff6f645840bull, 0xea762cb8b6d35d4eull }}, {{ 0x88614241b2b2f26eull, 0xb83676fc6d2f82d0ull, 0x46ce916ceaed2cbeull, 0xd242fc0d7e5a637bull, 0x2ee13fa59eb72875ull, 0x289dbf372441a511ull }}, {{ 0x53cc9690fafd784bull, 0x3220a5dc43db1c25ull, 0xc411ae412d43bf73ull, 0x369dd886ef87e2d0ull, 0xd4cc7c783327949aull, 0x962978276a9072abull }}, {{ 0x45fde1a9cde6b2eeull, 0xf5467a9aa68f1975ull, 0xa8b0ce8bc4a57a7full, 0x222a75455b4edc27ull, 0x4ffcdcb1ff8bce06ull, 0xdd9eb18a29a47ab6ull }}, {{ 0xbbead0a20b02fd4eull, 0x94c0ca0a8196fe94ull, 0x96e81175ae76c8ffull, 0x55a894b59114998cull, 0x1fe09ef3fb760c3dull, 0xa832ef65a06ccb1full }}, {{ 0x572c26546e1de510ull, 0xcf87e4690fe5f1cfull, 0xe510ae98d0a3d9fbull, 0x5895cf17aacdff7dull, 0x3ec63587d29c7a65ull, 0x91fd59f8443fef37ull }}, {{ 0x67b97f4c4d2af29eull, 0x1b4eec1a9efb7219ull, 0xf2a6d1f8266683d6ull, 0x75da16ecac0bfaeaull, 0x73be174e3a1cc7f5ull, 0xb3e583b2aa7f5828ull }}, {{ 0x0d3ef8fb03ad7a2eull, 0x1115390a35d274feull, 0x7a8433b18001265dull, 0x9a84e53eb877cd2dull, 0x856ce90e451fcf96ull, 0x06f724faa8f97194ull }}, {{ 0x8475b9ce24c6c5ccull, 0xaad43a661a3891ecull, 0xc92a04ef000b7fa2ull, 0x0930f47334ae03c6ull, 0x36411a8eb33e1be2ull, 0x45a771ca99be6fcdull }}, {{ 0x2c99420d6fc3b9fbull, 0xac4a47fd0635b33dull, 0xdba431560072fc5aull, 0x5be98c800ecc25c3ull, 0x1e8b0993006d16d4ull, 0xb88a71ea01705e04ull }}, {{ 0xbdfc94865da543d3ull, 0xbae6cfe23e190063ull, 0x9469ed5c047ddb8aull, 0x971f7d0093f979a6ull, 0x316e5fbe0442e44bull, 0x356873240e63ac29ull }}, {{ 0x6bddcd3fa874a63dull, 0x4d041ed66cfa03e5ull, 0xcc2345982cea936bull, 0xe73ae205c7bec081ull, 0xee4fbd6c2a9ceaf3ull, 0x16147f688fe4b99bull }}, {{ 0x36aa047c948e7e61ull, 0x0229346041c426f6ull, 0xf960b7f1c129c231ull, 0x084cd439cd738511ull, 0x4f1d6639aa212d87ull, 0xdcccfa159eef4017ull }}, {{ 0x22a42cddcd90efcaull, 0x159c0bc291a9859eull, 0xbdc72f718ba195eaull, 0x53004a42068332b3ull, 0x1725fe40a54bc746ull, 0xa001c4d8355880e9ull }}, {{ 0x5a69c0aa07a95de1ull, 0xd8187599b09f382dull, 0x69c7da6f744fdb24ull, 0x3e02e694411ffb05ull, 0xe77bee8674f5c8bfull, 0x4011b0721575091aull }}, {{ 0x882186a44c9daaceull, 0x70f49800e63831c5ull, 0x21ce885a8b1e8f70ull, 0x6c1d01ca8b3fce36ull, 0x0ad751409199d778ull, 0x80b0e474d6925b0dull }}, {{ 0x514f426afe28ac0dull, 0x698df008fe31f1b7ull, 0x521153896f319a64ull, 0x392211e9707e0e1dull, 0x6c692c85b0026ab4ull, 0x06e8ec9061b78e82ull }}, {{ 0x2d18982ded96b886ull, 0x1f8b6059edf37129ull, 0x34ad435e57f007ecull, 0x3b54b31e64ec8d25ull, 0x3c1bbd38e0182b0aull, 0x45193da3d12b9118ull }}, {{ 0xc2f5f1cb47e3353eull, 0x3b71c3834b826b9bull, 0x0ec4a1af6f604f39ull, 0x514eff2ff13d8374ull, 0x59156438c0f1ae66ull, 0xb2fc68662bb3aaf2ull }}, {{ 0x9d9b71f0cee0146eull, 0x5271a320f3183415ull, 0x93ae50da59c3183cull, 0x2d15f7df6c672288ull, 0x7ad5ea378970cfffull, 0xfddc13fdb504ad77ull }}, {{ 0x2812736814c0cc4cull, 0x38705f497ef208d8ull, 0xc4cf2887819ef25bull, 0xc2dbaeba3c075955ull, 0xcc5b262b5e681ff7ull, 0xea98c7e9122ec6aaull }}, {{ 0x90b88210cf87faf5ull, 0x3463b8def5745871ull, 0xb017954b10357790ull, 0x9c94d34658497d59ull, 0xfb8f7db1b0113fadull, 0x29f7cf1ab5d3c2abull }}, {{ 0xa73514a81b4fcd94ull, 0x0be538b5968b746full, 0xe0ebd4eea216aba2ull, 0x1dd040bf72dee580ull, 0xd39ae8f0e0ac7cc8ull, 0xa3ae170b1a459ab7ull }}, {{ 0x8812ce91111e07c6ull, 0x76f43717e1728c5cull, 0xc936515254e2b454ull, 0x2a22877a7cb4f708ull, 0x440d1968c6bcdfd1ull, 0x64cce66f06b80b2eull }}, {{ 0x50bc11aaab2c4db7ull, 0xa58a26eece797b9dull, 0xdc1f2d3750db0b4cull, 0xa5594ac8df11a657ull, 0xa882fe17c360be2bull, 0xf001005643306fceull }}, {{ 0x2758b0aaafbb0928ull, 0x7765855410bed425ull, 0x9937c429288e70feull, 0x757cebd8b6b07f6eull, 0x951deceda1c76db4ull, 0x600a035e9fe45e12ull }}, {{ 0x8976e6aadd4e5b8cull, 0xa9f73548a7744973ull, 0xfc2da99b959069f0ull, 0x96e1367722e4fa51ull, 0xd32b414851ca490cull, 0xc06421b23eebacb9ull }}, {{ 0x5ea502aca50f9375ull, 0xa3a814d68a8ade83ull, 0xd9c8a013d7a42366ull, 0xe4cc20a75cf1c733ull, 0x3fb08cd331e6da7dull, 0x83e950f67534bf42ull }}, {{ 0xb2721abe729bc292ull, 0x6490d061696cb121ull, 0x81d640c66c696202ull, 0xeff94689a171c806ull, 0x7ce5803ff30488eaull, 0x271d29a0940f7896ull }}, {{ 0xf8750b707a1599b3ull, 0xeda823ce1e3eeb50ull, 0x125e87c03c1dd417ull, 0x5fbcc1604e71d041ull, 0xe0f7027f7e2d592dull, 0x8723a045c89ab5e0ull }}, {{ 0xb4927264c4d80100ull, 0x4891660d2e753129ull, 0xb7b14d82592a48efull, 0xbd5f8dc31072228aull, 0xc9a618faedc57bc5ull, 0x476442b9d60b1ac8ull }}, {{ 0x0db877efb0700a04ull, 0xd5adfc83d093eba1ull, 0x2ced07177ba6d958ull, 0x65bb899ea475596bull, 0xe07cf9cd49b6d5b9ull, 0xc9ea9b425c6f0bd7ull }}, {{ 0x8934af5ce460642dull, 0x58cbdd2625c7344aull, 0xc14246ead4847d78ull, 0xf95360326c957e2full, 0xc4e1c204e124593dull, 0xe32a10979c56766eull }}, {{ 0x5c0ed9a0ebc3e9c1ull, 0x77f6a37d79c80ae9ull, 0x8c96c52c4d2ce6b3ull, 0xbd41c1f83dd6edddull, 0xb0d19430cb6b7c6bull, 0xdfa4a5ec1b60a053ull }}, {{ 0x9894804935a7218aull, 0xafa262e6c1d06d1dull, 0x7de3b3bb03c10302ull, 0x649193b26a654aa7ull, 0xe82fc9e7f232dc35ull, 0xbc6e7b3911c64344ull }}, {{ 0xf5cd02dc18874f61ull, 0xdc57dd0392244327ull, 0xeae5054e258a1e1aull, 0xedafc4f827f4ea8aull, 0x11dde30f75fc9a15ull, 0x5c50d03ab1bea0b1ull }}, {{ 0x9a021c98f54919caull, 0x9b6ea223b56a9f8full, 0x2cf2350d77652d0cull, 0x48ddb1b18f91296dull, 0xb2aade9a9bde04dbull, 0x9b28224af17246eaull }}, {{ 0x04151df994db01e0ull, 0x12525565162a3b9cull, 0xc1761286a9f3c27eull, 0xd8a8f0ef9bab9e43ull, 0xfaacb20a16ac3090ull, 0x0f9156ed6e76c52aull }}, {{ 0x28d32bbfd08e12c1ull, 0xb73755f2dda65418ull, 0x8e9cb942a38598ecull, 0x7699695c14b42ea5ull, 0xcabef464e2b9e5a8ull, 0x9bad654650a3b3adull }}, {{ 0x983fb57e258cbb88ull, 0x28295b7ca87f48f1ull, 0x921f3c9a6337f93full, 0xa1fe1d98cf09d277ull, 0xeb758bf0db42f894ull, 0x14c5f4bf266504c9ull }}, {{ 0xf27d16ed777f5353ull, 0x919d92de94f8d96full, 0xb5385e07e02fbc77ull, 0x53ed27f8166238abull, 0x32977768909db5ceull, 0xcfbb8f777ff22fe3ull }}, {{ 0x78e2e546aaf9413full, 0xb027bcb1d1b87e5full, 0x1433ac4ec1dd5cabull, 0x47438fb0dfd636b5ull, 0xf9eaaa15a6291a0full, 0x1d539aaaff75dedfull }}, {{ 0xb8dcf4c2adbc8c74ull, 0xe18d5ef23134efbaull, 0xca04bb1392a59eb4ull, 0xc8a39ce8be5e2312ull, 0xc32aa4d87d9b0498ull, 0x25440aadfa9ab4bfull }}, {{ 0x38a18f9ac95d7c8aull, 0xcf85b575ec115d4bull, 0xe42f4ec3ba783310ull, 0xd66421176fad5ebbull, 0x9faa7074e80e2df7ull, 0x74a86acbca0b0f7dull }}, {{ 0x364f9c0bdda6dd65ull, 0x1b39169b38ada4f0ull, 0xe9d913a548b1fea8ull, 0x5fe94aea5cc5b356ull, 0x3ca86491108dcbaeull, 0x8e942bf5e46e9ae8ull }}, {{ 0x1f1c1876a884a5f1ull, 0x103ae21036c87162ull, 0x227ac474d6f3f291ull, 0xbf1ced279fb90165ull, 0x5e93edaaa589f4cfull, 0x91c9b79aec520d12ull }}, {{ 0x3718f4a2952e7b6bull, 0xa24cd4a223d46dd5ull, 0x58cbac90658779aaull, 0x7721438c3d3a0df3ull, 0xb1c748aa7763901dull, 0xb1e12c0d3b3482b7ull }}, {{ 0x26f98e59d3d0d230ull, 0x57004e55664c4a54ull, 0x77f4bda3f74ac0aaull, 0xa74ca37a64448b81ull, 0xf1c8d6a8a9e3a126ull, 0xf2cbb884500d1b2cull }}, {{ 0x85bf8f82462835dfull, 0x66030f55fefae749ull, 0xaf8f6867a8eb86a7ull, 0x88fe62c7eaad730eull, 0x71d86296a2e44b82ull, 0x7bf5352b20830fc1ull }}, {{ 0x397b9b16bd921ab9ull, 0xfc1e995bf5cd08dfull, 0xdb9a140c99334289ull, 0x59efdbcf2ac67e92ull, 0x7273d9e25ceaf319ull, 0xd79413af451e9d8eull }}, {{ 0x3ed40ee367b50b37ull, 0xd931fd979a0258b8ull, 0x9404c87dfc009963ull, 0x835e9617abc0f1bcull, 0x788682d7a12d7efdull, 0x6bc8c4d8b3322790ull }}, {{ 0x744894e20d127028ull, 0x7bf3e7ec04177732ull, 0xc82fd4ebd805fde6ull, 0x21b1dcecb589715dull, 0xb5411c6c4bc6f5e7ull, 0x35d7b076fff58ba4ull }}, {{ 0x8ad5d0d482b8618dull, 0xd7870f3828eaa7f8ull, 0xd1de5136703beb00ull, 0x50f2a13f175e6da9ull, 0x148b1c3af5c59b07ull, 0x1a6ce4a5ff97746full }}, {{ 0x6c5a284d1b33cf7full, 0x6b469831992a8fb5ull, 0x32af2c2062572e08ull, 0x297a4c76e9b048a2ull, 0xcd6f1a4d99b80e49ull, 0x0840ee7bfbea8c56ull }}, {{ 0x3b85930310061af8ull, 0x30c1f1effba99d16ull, 0xfad7b943d767cc54ull, 0x9ec6fca520e2d655ull, 0x0657070801308edbull, 0x528950d7d7297b64ull }}, {{ 0x5337be1ea03d0db3ull, 0xe793735fd4a022deull, 0xcc6d3ca66a0dfb49ull, 0x33c5de7348dc5f5bull, 0x3f6646500be59494ull, 0x395d286e679ed1e8ull }}, {{ 0x402d6d3242628901ull, 0x0bc281be4e415cafull, 0xfc445e80248bd0e3ull, 0x05bab080d89bb995ull, 0x79febf2076f7cdcaull, 0x3da394500c343312ull }}, {{ 0x81c643f697d95a0dull, 0x7599116f0e8d9ed8ull, 0xdaabb1016d7628deull, 0x394ae50876153fdbull, 0xc3f37744a5ae09e4ull, 0x6863cb207a09feb8ull }}, {{ 0x11bea7a1ee7d847dull, 0x97faae5691883475ull, 0x8ab4ea0e469d98b0ull, 0x3cecf2549cd47e96ull, 0xa782a8ae78cc62eaull, 0x13e5ef44c463f337ull }}, {{ 0xb1728c5350e72ce3ull, 0xefcacf61af520c92ull, 0x6b11248ec227f6e5ull, 0x6141774e204cf1e1ull, 0x8b1a96d0b7fbdd26ull, 0xc6fb58afabe7802cull }}, {{ 0xee797b412907c0deull, 0x5dec19d0d9347dbaull, 0x2eab6d93958fa4fbull, 0xcc8ea90d430172ceull, 0x6f09e4272fd6a37full, 0xc5d176dcb70b01bdull }}, {{ 0x50bed08b9a4d88afull, 0xab3902287c0ce94dull, 0xd2b247c3d79c71d1ull, 0xfd929a849e0e7c0dull, 0x5662e987de6262fdull, 0xba2ea49f266e1166ull }}, {{ 0x27742574070756dbull, 0xb03a1594d8811d05ull, 0x3af6cda66c1c7230ull, 0xe7ba092e2c90d88aull, 0x5fdd1f4eafd7ddebull, 0x45d26e37804cadffull }}, {{ 0x8a8976884649648eull, 0xe244d7d0750b2233ull, 0x4da40880391c75e6ull, 0x0d445bcdbda87566ull, 0xbea33912de6eab37ull, 0xba384e2b02fecbf9ull }}, {{ 0x695ea152bedded8bull, 0xd6b06e24926f5603ull, 0x086855023b1c9b04ull, 0x84ab9609689495ffull, 0x72603abcb052b026ull, 0x46330dae1df3f7c1ull }}, {{ 0x1db24d3b74ab476aull, 0x62e44d6db8595c22ull, 0x541352164f1e0e30ull, 0x2eb3dc5e15cddbf6ull, 0x77c24b5ee33ae181ull, 0xbdfe88cd2b87ad8eull }}, {{ 0x28f704528eb0ca27ull, 0xdceb0649337d9955ull, 0x48c134df172c8de3ull, 0xd3069bacda0a979full, 0xad96f1b4e04ccf0bull, 0x6bf15803b34cc790ull }}, {{ 0x99a62b3992e7e584ull, 0xa12e3edc02e7fd53ull, 0xd78c10b6e7bd8ae6ull, 0x3e4214c08469ec38ull, 0xc7e57110c3001676ull, 0x376d702500ffcba6ull }}, {{ 0x007db03fbd0ef728ull, 0x4bce74981d0fe544ull, 0x6b78a7250d676d02ull, 0x6e94cf852c233a38ull, 0xcef66aa79e00e09eull, 0x2a46617209fdf483ull }}, {{ 0x04e8e27d6295a794ull, 0xf6108df1229ef4a8ull, 0x32b68772860a4216ull, 0x51d01b33b9604634ull, 0x15a02a8c2c08c630ull, 0xa6bfce7463eb8d26ull }}, {{ 0x3118d8e5d9d88bc3ull, 0x9ca58b6b5a358e90ull, 0xfb214a793c6694e5ull, 0x322110053dc2be09ull, 0xd841a979b857bde3ull, 0x837e108be733837cull }}, {{ 0xeaf878fa827575a1ull, 0x1e777231861791a1ull, 0xcf4ce8bc5c01d0f8ull, 0xf54aa034699b6c63ull, 0x72909ec1336d6adfull, 0x22eca577080322e0ull }}, {{ 0x2db4b9c91896984bull, 0x30aa75ef3cebb053ull, 0x1901175b981229b1ull, 0x94ea420c20123be6ull, 0x79a6338c02462cbfull, 0x5d3e76a6501f5cc4ull }}, {{ 0xc90f41daf5e1f2f1ull, 0xe6a89b586134e33full, 0xfa0ae993f0b5a0ebull, 0xd126947940b656fcull, 0xc07e037816bdbf7bull, 0xa470a27f21399facull }}, {{ 0xda98928d9ad37d6eull, 0x02961173cc10e07dull, 0xc46d1fc767184937ull, 0x2b81ccbc871f65e1ull, 0x84ec22b0e3697ad6ull, 0x6c6658f74c403cbfull }}, {{ 0x89f5b9880c42e64bull, 0x19dcae85f8a8c4eaull, 0xac433dca06f2dc26ull, 0xb311ff5d4739fad1ull, 0x31395ae8e21ecc5dull, 0x3bff79a8fa825f7bull }}, {{ 0x63993f507a9cfef0ull, 0x029ed13bb697b129ull, 0xbaa069e4457c997dull, 0xfeb3f9a4c843cc30ull, 0xec3d8d18d533fba8ull, 0x57fac099c917bacfull }}, {{ 0xe3fc7924ca21f563ull, 0x1a342c5521eceb9dull, 0x4a4422eab6ddfee2ull, 0xf307c06fd2a5f9e7ull, 0x3a6782f85407d499ull, 0x6fcb8601daed4c1full }}, {{ 0xe7dcbb6fe55395e3ull, 0x0609bb535341342aull, 0xe6a95d2b24abf4d5ull, 0x7e4d845e3a7bc308ull, 0x480b1db3484e4e03ull, 0x5df33c128d44f938ull }}, {{ 0x0e9f525ef543dadbull, 0x3c615141408c09adull, 0x029da3af6eb79052ull, 0xef072bae48d59e59ull, 0xd06f2900d30f0c22ull, 0xab8058b984b1bc32ull }}, {{ 0x923937b594a68c8dull, 0x5bcd2c8c857860c2ull, 0x1a2864da532ba336ull, 0x5647b4ced8582f7aull, 0x24579a083e96795dull, 0xb303773f2ef159fcull }}, {{ 0xb63c2d17ce817d83ull, 0x9603bd7d36b3c799ull, 0x0593f0873fb4601full, 0x5ecd10147371dac5ull, 0x6b6c045271e0bda5ull, 0xfe22a877d56d83d9ull }}, {{ 0x1e59c2ee110ee719ull, 0xdc2566e42305cc01ull, 0x37c765487d0bc13bull, 0xb402a0cc82728bb2ull, 0x32382b3872c76875ull, 0xed5a94ae5647267eull }}, {{ 0x2f819d4caa9506faull, 0x997604e95e39f80bull, 0x2dc9f4d4e2758c56ull, 0x081a47fd187974f6ull, 0xf631b0347bca1499ull, 0x4589cecf5ec780edull }}, {{ 0xdb1024fea9d245c6ull, 0xfe9c311dae43b06full, 0xc9e39050d8977b61ull, 0x5106cfe2f4be919dull, 0x9df0e20cd5e4cdfaull, 0xb7621419b3cb094bull }}, {{ 0x8ea171f2a236b9b7ull, 0xf219eb28cea4e45eull, 0xe2e3a32875ead1d3ull, 0x2a441edd8f71b029ull, 0x2b68d4805af00bc7ull, 0x29d4c90105ee5cf4ull }}, {{ 0x924e737a56234128ull, 0x75032f981270ebb1ull, 0xdce45f949b2c3247ull, 0xa6a934a79a70e1a2ull, 0xb2184d038d6075c7ull, 0xa24fda0a3b4fa189ull }}, {{ 0xb71082c75d608b8eull, 0x921fdbf0b86934efull, 0xa0ebbbce0fb9f6caull, 0x829c0e8c0868d05cull, 0xf4f3022385c499ccull, 0x571e8466511c4f60ull }}, {{ 0x26a51bc9a5c57387ull, 0xb53e9767341c115dull, 0x4935560c9d43a3e9ull, 0x1a1891785418239eull, 0x917e156339ae01fdull, 0x67312bff2b1b19c9ull }}, {{ 0x827315e079b6834bull, 0x1471ea080918ada3ull, 0xdc155c7e24a46721ull, 0x04f5aeb348f1642eull, 0xaeecd5e040cc13e3ull, 0x07ebb7f7af0f01dfull }}, {{ 0x187edac4c12120ebull, 0xcc7324505af6c863ull, 0x98d59ced6e6c074aull, 0x3198d300d96de9d4ull, 0xd5405ac287f8c6deull, 0x4f352facd69612bcull }}, {{ 0xf4f48baf8b4b4929ull, 0xfc7f6b238da3d3deull, 0xf8582146503848ebull, 0xeff83e087e4b224dull, 0x54838b994fb7c4adull, 0x1813dcc061dcbb60ull }}, {{ 0x918d74db70f0db9cull, 0xdcfa2f63886646b5ull, 0xb3714cbf2232d937ull, 0x5fb26c54eeef570bull, 0x4d2373fd1d2daecbull, 0xf0c69f83d29f51c3ull }}, {{ 0xaf8690926968941cull, 0xa1c5d9e353fec317ull, 0x026cff7755fc7c2eull, 0xbcf83b5155596675ull, 0x036287e323c8d3f1ull, 0x67c23b263a3931a1ull }}, {{ 0xdb41a5b81e15c918ull, 0x51ba82e147f39eecull, 0x1841faa95bdcd9d2ull, 0x61b2512d557e0092ull, 0x21d94edf65d84771ull, 0x0d964f7e463bf04aull }}, {{ 0x909079312cd9daecull, 0x31491ccccf843540ull, 0xf293ca9d96a08237ull, 0xd0f72bc556ec05b4ull, 0x527d14b9fa72ca6dull, 0x87df1aeebe5762e5ull }}, {{ 0xa5a4bbebc0828d38ull, 0xecdb20001b2a1485ull, 0x79c5ea27e2451627ull, 0x29a7b5b565383911ull, 0x38e2cf43c87be84aull, 0x4eb70d536f69dcf5ull }}, {{ 0x786f573585198434ull, 0x408f40010fa4cd38ull, 0xc1bb258ed6b2dd8full, 0xa08d1915f4323aaeull, 0x38dc18a5d4d712e5ull, 0x132685425a22a194ull }}, {{ 0xb459681732ff2a0aull, 0x8598800a9c700434ull, 0x914f779462fca798ull, 0x4582fadb89f64ad3ull, 0x3898f67a5066bcf8ull, 0xbf813497855a4fcaull }}, {{ 0x0b7e10e7fdf7a462ull, 0x37f5006a1c602a0full, 0xad1aabcbddde8bf5ull, 0xb71dcc93639eec43ull, 0x35f9a0c7240361b2ull, 0x7b0c0deb35871de6ull }}, {{ 0x72eca90febac6bd8ull, 0x2f9204251bc1a496ull, 0xc30ab5f6aab17794ull, 0x2729fdc1e4353aa4ull, 0x1bc047c76821d0fbull, 0xce788b3017472afeull }}, {{ 0x7d3e9a9f34bc366full, 0xdbb4297315906de0ull, 0x9e6b1ba2aaeeabc9ull, 0x87a3e992ea144a6full, 0x1582cdca115229cfull, 0x10b56fe0e8c7adedull }}, {{ 0xe4720a380f5a2056ull, 0x95099e7ed7a44ac4ull, 0x302f145aad52b5e2ull, 0x4c671fbd24cae85cull, 0xd71c09e4ad35a21bull, 0xa7165ec917cccb42ull }}, {{ 0xec74663099854359ull, 0xd26030f46c6aebb0ull, 0xe1d6cb8ac53b1ad9ull, 0xfc073d636fed1399ull, 0x671862eec4185510ull, 0x86dfb3daedfff09cull }}, {{ 0x3c8bfde5ff34a17bull, 0x37c1e98c3c2d34e9ull, 0xd263f36bb44f0c82ull, 0xd84865e25f42c402ull, 0x06f3dd53a8f352a9ull, 0x44bd068d4bff661cull }}, {{ 0x5d77eafbf80e4ed2ull, 0x2d931f7a59c4111cull, 0x37e782350b167d16ull, 0x72d3fad7b89ba81cull, 0x4586a54499813aa2ull, 0xaf624184f7f9fd18ull }}, {{ 0xa6af2dd7b08f1434ull, 0xc7bf3ac781a8ab1bull, 0x2f0b16126ee0e2ddull, 0x7c47cc6d3614911aull, 0xb74274adff0c4a58ull, 0xd9d68f31afc3e2f2ull }}, {{ 0x82d7ca6ce596ca04ull, 0xcd784bcb1096af14ull, 0xd66edcb854c8dca9ull, 0xdacdfc441ccdab05ull, 0x28988ecbf67ae774ull, 0x826197f0dda6dd7bull }}, {{ 0x1c6de840f7e3e428ull, 0x06b2f5eea5e2d6cdull, 0x60549f334fd89ea2ull, 0x8c0bdaa92008ae3aull, 0x95f593f7a0cd0a90ull, 0x17cfef68a884a6cfull }}, {{ 0x1c4b1289aee6e991ull, 0x42fd9b527adc6403ull, 0xc34e38011e763254ull, 0x78768a9b4056ce47ull, 0xdb97c7ac480269a5ull, 0xee1f5a16952e841bull }}, {{ 0x1aeeb960d5051fa7ull, 0x9de81138cc9be81full, 0xa10e300b309df74aull, 0xb4a16a1083640ecdull, 0x93edccbad0182076ull, 0x4d3984e1d3d12916ull }}, {{ 0x0d533dc852333c8bull, 0x2b10ac37fe171137ull, 0x4a8de06fe62ba8eaull, 0x0e4e24a521e89408ull, 0xc749ff4c20f144a3ull, 0x043f30d2462b9ae1ull }}, {{ 0x854069d336005d6bull, 0xaea6ba2fece6ac26ull, 0xe98ac45efdb49925ull, 0x8f0d6e735315c852ull, 0xc8e3f8f9496cae5eull, 0x2a77e836bdb40cd1ull }}, {{ 0x348422401c03a62full, 0xd28345df4102b981ull, 0x1f6babb5e90dfb78ull, 0x968650813ed9d33dull, 0xd8e7b9bcde3ecfb1ull, 0xa8af122369088031ull }}, {{ 0x0d29568118247dd8ull, 0x3920bab88a1b3f0cull, 0x3a34b51b1a8bd2b8ull, 0xe13f250c74824063ull, 0x790d4160ae741cefull, 0x96d6b5621a5501f2ull }}, {{ 0x839d610af16cea6full, 0x3b474b3565107678ull, 0x460f130f09763b32ull, 0xcc77727c8d1683e0ull, 0xba848dc6d089215eull, 0xe46315d507521378ull }}, {{ 0x2425ca6d6e41285aull, 0x50c8f015f2a4a0b5ull, 0xbc96be965e9e4ff6ull, 0xfcaa78dd82e126c2ull, 0x492d89c4255b4db3ull, 0xebdeda524934c2b7ull }}, {{ 0x6979e8464e8b9384ull, 0x27d960db7a6e4713ull, 0x5de371dfb22f1f9full, 0xdea8b8a71ccb839bull, 0xdbc761a975910907ull, 0x36b48736dc0f9b28ull }}, {{ 0x1ec312bf1173c32aull, 0x8e7dc892c84ec6c2ull, 0xaae272bcf5d73c37ull, 0xb29736871ff32411ull, 0x95c9d09e97aa5a4eull, 0x230d4824989c0f98ull }}, {{ 0x339ebb76ae859fa2ull, 0x90e9d5bbd313c395ull, 0xacd87b619a685a2bull, 0xf9e821473f7f68b0ull, 0xd9e22631eca78712ull, 0x5e84d16df6189bf5ull }}, {{ 0x043352a2d1383c54ull, 0xa92259563ec5a3d4ull, 0xc074d1d0081385b3ull, 0xc3114cc87afa16e6ull, 0x82d57df33e8b46bdull, 0xb1302e4b9cf6179aull }}, {{ 0x2a013a5c2c325b49ull, 0x9b577d5e73b86648ull, 0x8490322050c33904ull, 0x9eacffd4cdc4e503ull, 0x1c56eb807170c369ull, 0xebe1cef4219cec09ull }}, {{ 0xa40c4799b9f790d5ull, 0x116ae5b08533fed1ull, 0x2da1f54327a03a2eull, 0x32c1fe5009b0f223ull, 0x1b6533046e67a220ull, 0x36d215895021385bull }}, {{ 0x687acc0143aba857ull, 0xae2cf8e53407f430ull, 0xc853949f8c4245ccull, 0xfb93ef2060e9755full, 0x11f3fe2c500c5541ull, 0x2434d75d214c338full }}, {{ 0x14cbf80ca4b49365ull, 0xcdc1b8f4084f89e4ull, 0xd343ce3b7a96b9feull, 0xd3c75743c91e95bdull, 0xb387edbb207b5493ull, 0x6a1069a34cfa0396ull }}, {{ 0xcff7b07e6f0dc1f2ull, 0x09913988531b62e8ull, 0x40a60e52c9e343f4ull, 0x45c968a5db31d96aull, 0x034f494f44d14dc6ull, 0x24a4206101c423e3ull }}, {{ 0x1face4f056899372ull, 0x5fac3f533f11dd18ull, 0x867c8f3be2e0a788ull, 0xb9de167a8ff27e26ull, 0x2118dd18b02d09beull, 0x6e6943ca11a966deull }}, {{ 0x3cc0f163615fc26full, 0xbcba794076b2a2f1ull, 0x40dd9856dcc68b53ull, 0x42ace0c99f78ed81ull, 0x4af8a2f6e1c26173ull, 0x501ca5e4b09e04adull }}, {{ 0x5f896de1cdbd9857ull, 0x5f48bc84a2fa5d6cull, 0x88a7f3649fc17145ull, 0x9ac0c7e03ab9470cull, 0xedb65da4d197ce80ull, 0x211e7aeee62c2ec4ull }}, {{ 0xbb5e4ad20967f366ull, 0xb8d75d2e5dc7a63bull, 0x568f81ee3d8e6cb5ull, 0x0b87cec24b3cc67dull, 0x491fa8702fee1106ull, 0x4b30cd54fdb9d3b1ull }}, {{ 0x51aeec345e0f81f9ull, 0x3869a3cfa9cc7e55ull, 0x619b134e67903f19ull, 0x734e1396f05fc0e5ull, 0xdb3c9461df4caa3cull, 0xefe80551e94244ecull }}, {{ 0x30d53a0bac9b13b9ull, 0x3420661ca1fcef55ull, 0xd00ec1100ba276fcull, 0x810cc3e563bd88f5ull, 0x905dcbd2b8fea65cull, 0x5f1035331c96b140ull }}, {{ 0xe8544474be0ec538ull, 0x0943fd1e53e15953ull, 0x20938aa07458a5daull, 0x0a7fa6f5e567599aull, 0xa3a9f63b39f27f9dull, 0xb6a213ff1de2ec85ull }}, {{ 0x134aac8f6c93b430ull, 0x5ca7e32f46cd7d47ull, 0x45c36a448b767a84ull, 0x68fc859af6098005ull, 0x64a39e504378fc22ull, 0x2254c7f72add3d38ull }}, {{ 0xc0eabd9a3dc509e0ull, 0x9e8edfd8c406e4c6ull, 0xb9a226ad72a0c92bull, 0x19dd380d9c5f0034ull, 0xee642f22a2b9d958ull, 0x574fcfa7aca46433ull }}, {{ 0x892b680669b262c1ull, 0x3194be77a844efc3ull, 0x405582c67a47dbb4ull, 0x02a430881bb6020full, 0x4fe9d75a5b427d71ull, 0x691e1c8cbe6bea07ull }}, {{ 0x5bb2104020f7db87ull, 0xefcf70ac92b15da3ull, 0x83571bc0c6ce9509ull, 0x1a69e551151c1498ull, 0x1f2269879098e66aull, 0x1b2d1d7f70372449ull }}, {{ 0x94f4a28149ae9347ull, 0x5e1a66bdbaeda861ull, 0x21671587c411d263ull, 0x0822f52ad318cdf5ull, 0x37581f4ba5f90025ull, 0x0fc326fa62276adbull }}, {{ 0xd18e590ce0d1c0c8ull, 0xad0803694d4893cfull, 0x4e06d74da8b237e1ull, 0x515d93ac3ef80b93ull, 0x297138f47bba0172ull, 0x9d9f85c7d58a2c90ull }}, {{ 0x2f8f7a80c83187d4ull, 0xc250221d04d5c61eull, 0x0c44690896f62ed0ull, 0x2da7c4ba75b073c1ull, 0x9e6c398cd5440e77ull, 0x283b39ce5765bda1ull }}, {{ 0xdb9ac907d1ef4e44ull, 0x972155223059bd2dull, 0x7aac1a55e59dd427ull, 0xc88daf4898e4858aull, 0x303a3f8054a890a7ull, 0x9250420f69f96850ull }}, {{ 0x940bda4e33590ea6ull, 0xe74d5355e38163caull, 0xcab9075af82a498bull, 0xd588d8d5f8ed3768ull, 0xe2467b034e95a68dull, 0xb722949a23be1321ull }}, {{ 0xc876870e017a927full, 0x0905415ae30de5e9ull, 0xeb3a498db1a6df77ull, 0x5758785bb9442a17ull, 0xd6c0ce2111d8818aull, 0x2759ce05656cbf52ull }}, {{ 0xd4a1468c0ec9b8f7ull, 0x5a348d8cde8afb21ull, 0x3046df88f084baa6ull, 0x6974b3953ca9a4efull, 0x63880d4ab2750f67ull, 0x89820c35f63f793cull }}, {{ 0x4e4cc17893e139a6ull, 0x860d8780b16dcf52ull, 0xe2c4bb59652f4a7full, 0x1e8f03d45ea07157ull, 0xe35084eaf8929a0aull, 0x5f147a1b9e7abc5bull }}, {{ 0x0eff8eb5c6cc4079ull, 0x3c874b06ee4a1937ull, 0xdbaf517df3d8e8fbull, 0x3196264bb2446d6eull, 0xe125312db5ba0465ull, 0xb6ccc51430cb5b96ull }}, {{ 0x95fb9319c3fa84bcull, 0x5d48ee454ee4fc26ull, 0x94d92eeb867919d0ull, 0xefdd7ef4f6ac4654ull, 0xcb73ebc919442bf3ull, 0x23ffb2c9e7f193e4ull }}, {{ 0xdbd3bf01a7c92f5bull, 0xa4d94eb514f1d981ull, 0xd07bd53340bb0223ull, 0x5ea6f591a2babf4dull, 0xf28735dafca9b787ull, 0x67fcfbe30f6fc6efull }}, {{ 0x964576108ddbd98cull, 0x707d1312d1727f12ull, 0x24d65400874e1564ull, 0xb28597b05b4b790aull, 0x79481a8ddea12b49ull, 0x0fe1d6de9a5dc55full }}, {{ 0xdeb69ca58a967f7dull, 0x64e2bebc2e78f6b9ull, 0x705f4805490cd5ecull, 0xf937ece390f2ba65ull, 0xbcd1098ab24bb0e0ull, 0x9ed264b207a9b5baull }}, {{ 0xb3221e7769e0faddull, 0xf0db7359d0b9a342ull, 0x63b8d034da805b3bull, 0xbc2f40e3a97b47f6ull, 0x602a5f6af6f4e8c9ull, 0x3437eef44ca1194bull }}, {{ 0xff5530aa22c9cca3ull, 0x689281822740609aull, 0xe538221089039057ull, 0x59d888e49ed0cf9full, 0xc1a7ba2da59117e1ull, 0x0a2f558afe4afcf1ull }}, {{ 0xf953e6a55be1fe5dull, 0x15b90f158883c60dull, 0xf43154a55a23a36aull, 0x827558ee34281c3eull, 0x908d45c877aaeecdull, 0x65d9576deeede171ull }}, {{ 0xbd47027596d3efa4ull, 0xd93a96d75525bc8bull, 0x89ed4e7585646224ull, 0x1895794e09911a75ull, 0xa584b9d4acad5407ull, 0xfa7d6a4b554ace6full }}, {{ 0x64c61897e4475c65ull, 0x7c49e46953795d75ull, 0x6345109735ebd570ull, 0xf5d6bd0c5fab0897ull, 0x772f424ebec54846ull, 0xc8e626f154ec105cull }}, {{ 0xefbcf5eeeac99bf6ull, 0xdae2ec1d42bda695ull, 0xe0b2a5e81b365664ull, 0x9a63627bbcae55e9ull, 0xa7d8971373b4d2c5ull, 0xd8fd856d5138a39cull }}, {{ 0x5d619b552be017a1ull, 0x8cdd39249b6881dbull, 0xc6fa7b11101f5ff0ull, 0x07e1d8d55ecf5b22ull, 0x8e75e6c285103bb8ull, 0x79e736452c36641eull }}, {{ 0xa5d01153b6c0ec49ull, 0x80a43b6e12151291ull, 0xc5c8ceaaa139bf65ull, 0x4ed27855b4198f5bull, 0x909b039932a25530ull, 0xc3081eb3ba1fe931ull }}, {{ 0x7a20ad4523893adfull, 0x066a524cb4d2b9b0ull, 0xb9d812aa4c4179f7ull, 0x1438b35908ff9995ull, 0xa60e23fbfa5753e3ull, 0x9e513305453f1befull }}, {{ 0xc546c4b3635c4cb4ull, 0x402736ff103b40e4ull, 0x4270baa6fa8ec3a6ull, 0xca37017a59fbffd9ull, 0x7c8d67d7c76946deull, 0x2f2bfe34b477175cull }}, {{ 0xb4c3af01e19aff05ull, 0x818825f6a25088efull, 0x98674a85c993a47eull, 0xe6260ec783d7fe7cull, 0xdd860e6dca1cc4b3ull, 0xd7b7ee0f0ca6e99cull }}, {{ 0x0fa4d612d00df632ull, 0x0f517ba25725595dull, 0xf408e939dfc46cf1ull, 0xfd7c93cb266ff0ddull, 0xa73c9049e51faf06ull, 0x6d2f4c967e852020ull }}, {{ 0x9c705cbc208b9df9ull, 0x992ed45767757da2ull, 0x88591c42bdac416aull, 0xe6ddc5ef805f68abull, 0x885da2e2f33cd645ull, 0x43d8fde0f1334146ull }}, {{ 0x1c639f5945742bb6ull, 0xfbd44b6a0a96e85aull, 0x537b1a9b68ba8e29ull, 0x04a9bb5b03ba16b3ull, 0x53a85cdd80605ebbull, 0xa679eac96c008cc1ull }}, {{ 0x1be4397cb689b51dull, 0xd64af22469e51385ull, 0x42cf0a1217498da3ull, 0x2ea1518e2544e301ull, 0x4493a0a703c3b34eull, 0x80c32bde38057f8dull }}, {{ 0x16ea3edf21611321ull, 0x5eed756c22f2c333ull, 0x9c1664b4e8df8866ull, 0xd24d2f8d74b0de0cull, 0xadc4468625a5010dull, 0x079fb6ae3036fb84ull }}, {{ 0xe52674b74dcabf49ull, 0xb54696395d7b9ffeull, 0x18dfef1118bb53ffull, 0x3703db868ee8ac7eull, 0xc9aac13d78720a8aull, 0x4c3d22cde225d32eull }}, {{ 0xf3808f2909eb78ddull, 0x14c1de3da6d43ff4ull, 0xf8bf56aaf75147fdull, 0x262693419516bcecull, 0xe0ab8c66b4746966ull, 0xfa635c0ad57a3fd3ull }}, {{ 0x8305979a6332b8a7ull, 0xcf92ae68844a7f91ull, 0xb77962ada92ccfe2ull, 0x7d81c08fd2e36141ull, 0xc6b37c030c8c1dfdull, 0xc7e1986c56c67e46ull }}, {{ 0x1e37ec07dffb3684ull, 0x1bbad0152ae8fbafull, 0x2abddac89bc01edcull, 0xe711859e3ce1cc91ull, 0xc302d81e7d792be6ull, 0xcecff43b63c0eec3ull }}, {{ 0x2e2f384ebfd02125ull, 0x154c20d3ad19d4d7ull, 0xab6a8bd615813499ull, 0x06af382e60d1fdabull, 0x9e1c7130e6bbb705ull, 0x141f8a51e58953a5ull }}, {{ 0xcdd833137e214b77ull, 0xd4f94844c3025067ull, 0xb229765cd70c0dfaull, 0x42d831cfc833e8b4ull, 0x2d1c6be903552632ull, 0xc93b6732f75d4478ull }}, {{ 0x0a71fec2ed4cf2a2ull, 0x51bcd2af9e17240eull, 0xf59e9fa066788bccull, 0x9c71f21dd207170eull, 0xc31c371a21537df6ull, 0xdc5207fda9a4acb1ull }}, {{ 0x6873f39d45017a57ull, 0x31603adc2ce7688cull, 0x98323c4400b575fbull, 0x1c73752a3446e695ull, 0x9f1a27054d42eba2ull, 0x9b344fe8a06ebef1ull }}, {{ 0x14878424b20ec766ull, 0xedc24c99c10a157cull, 0xf1f65aa807169bcfull, 0x1c8293a60ac501d7ull, 0x37058635049d3455ull, 0x100b1f1644537570ull }}, {{ 0xcd4b296ef493c9feull, 0x4996fe018a64d6d8ull, 0x739f8a9046e2161full, 0x1d19c47c6bb2126full, 0x26373e122e240b53ull, 0xa06f36deab429662ull }}, {{ 0x04ef9e558dc5e3eeull, 0xdfe5ec0f67f06478ull, 0x843b69a2c4d4dd38ull, 0x2301acdc34f4b85aull, 0x7e286cb5cd68713full, 0x445824b2b099dfd5ull }}, {{ 0x315c2f5789bae74bull, 0xbefb389a0f63ecb0ull, 0x2a52205bb050a438ull, 0x5e10c09a118f3389ull, 0xed943f1a06146c77ull, 0xab716efae602be56ull }}, {{ 0xed99d96b614d08efull, 0x75d0360499e73ee1ull, 0xa7354394e3266a37ull, 0xaca78604af98035bull, 0x47ca77043ccc3ca9ull, 0xb26e55ccfc1b6f65ull }}, {{ 0x48027e31cd025954ull, 0x9a221c2e030874d3ull, 0x8814a3d0df80262aull, 0xbe8b3c2edbf02194ull, 0xcde8a62a5ffa5ea0ull, 0xf84f5a01d91259f4ull }}, {{ 0xd018edf202177d47ull, 0x055519cc1e549040ull, 0x50ce6628bb017daaull, 0x717059d497614fcdull, 0x0b167da7bfc7b247ull, 0xb31984127ab78390ull }}, {{ 0x20f94b7414eae4c8ull, 0x355301f92f4da288ull, 0x280ffd974e0ee8a4ull, 0x6e63824de9cd1e05ull, 0x6ee0e88d7dccf6caull, 0xfeff28b8cb2b23a0ull }}, {{ 0x49bcf288d12cefd2ull, 0x153e13bbd9085951ull, 0x909fe7e90c95166aull, 0x4fe3170b22032c33ull, 0x54c91586ea01a3e8ull, 0xf5f79737efaf6444ull }}, {{ 0xe16179582bc15e33ull, 0xd46cc5567a537d2cull, 0xa63f0f1a7dd2e024ull, 0x1edee66f541fba03ull, 0x4fdad74524106713ull, 0x9babe82f5cd9eaabull }}, {{ 0xcdcebd71b58dadffull, 0x4c3fb560c742e3c0ull, 0x7e769708ea3cc170ull, 0x34b50059493d4424ull, 0x1e8c68b368a406bfull, 0x14b711d9a0832ab1ull }}, {{ 0x0a1366711788cbf6ull, 0xfa7d15c7c89ce588ull, 0xf0a1e659265f8e62ull, 0x0f12037cdc64a96cull, 0x317c170216684378ull, 0xcf26b280451faaebull }}, {{ 0x64c2006aeb57f799ull, 0xc8e2d9cdd620f750ull, 0x6652ff7b7fbb8fddull, 0x96b422e09bee9e41ull, 0xeed8e614e012a2b0ull, 0x1782f902b33cad2full }}, {{ 0xef94042d316fabf5ull, 0xd8dc820a5d49a923ull, 0xff3dfad2fd539ea9ull, 0xe3095cc617522e8dull, 0x5478fcd0c0ba5ae5ull, 0xeb1dba1b005ec3dfull }}, {{ 0x5bc829c3ee5cb797ull, 0x789d1467a4e09b67ull, 0xf86bcc3de54432a2ull, 0xde5d9fbce935d18bull, 0x4cb9e02787478cfaull, 0x2f29450e03b3a6b9ull }}, {{ 0x95d1a1a74f9f2be2ull, 0xb622cc0c70c61209ull, 0xb435fa6af4a9fa58ull, 0xafa83d611c1a2f77ull, 0xff42c18b48cb81ccull, 0xd79cb28c2504833cull }}, {{ 0xda3050891c37b6d9ull, 0x1d5bf87c67bcb45full, 0x0a1bc82d8ea3c777ull, 0xdc9265cb1905daadull, 0xf89b8f70d7f311feull, 0x6c1ef979722d2061ull }}, {{ 0x85e3255b1a2d247aull, 0x2597b4dc0d5f0bbeull, 0x6515d1c79265caa7ull, 0x9db7f9eefa3a8ac2ull, 0xb6139a686f7eb3f4ull, 0x3935bebe75c343d3ull }}, {{ 0x3adf758f05c36cc2ull, 0x77ed109885b67571ull, 0xf2da31cbb7f9ea87ull, 0x292fc355c6496b97ull, 0x1cc408145af3078eull, 0x3c19737099a0a645ull }}, {{ 0x4cba979639a23f94ull, 0xaf42a5f53920966cull, 0x7c85f1f52fc3294aull, 0x9bdda159bede33efull, 0x1fa850cb8d7e4b8dull, 0x58fe826600467eb3ull }}, {{ 0xff49ebde40567bccull, 0xd89a7b943b45e03aull, 0xdd3b7393dd9f9ceaull, 0x16a84d8174ae075aull, 0x3c9327f386eef388ull, 0x79f117fc02c0f2ffull }}, {{ 0xf8e336ae8360d5fdull, 0x7608d3ca50bac24dull, 0xa45283c6a83c212cull, 0xe293070e8ecc498cull, 0x5dbf8f8345558350ull, 0xc36aefd81b897df8ull }}, {{ 0xb8e022d121c85bddull, 0x9c5845e7274b970bull, 0x6b3925c292594bbcull, 0xd9be469193fadf7eull, 0xa97b9b20b5572128ull, 0xa22d5e71135eebb3ull }}, {{ 0x38c15c2b51d396a4ull, 0x1b72bb0788f3e675ull, 0x303b7999b77cf55eull, 0x816ec1afc7ccbaf0ull, 0x9ed40f4715674b98ull, 0x55c5b06ac1b53504ull }}, {{ 0x378d99b13243e264ull, 0x127b4e4b59870094ull, 0xe252c0012ae195adull, 0x0e5390ddcdff4d61ull, 0x344898c6d608f3f5ull, 0x59b8e42b9114122eull }}, {{ 0x2b8800ebf6a6d7e7ull, 0xb8d10ef17f4605caull, 0xd73b800baccfd8c2ull, 0x8f43a8aa0bf905d2ull, 0x0ad5f7c45c598792ull, 0x8138e9b3aac8b5ceull }}, {{ 0xb3500937a2846f0bull, 0x382a956ef8bc39e5ull, 0x68530074c01e779bull, 0x98a496a477ba3a3cull, 0x6c5badab9b7f4bb9ull, 0x0c392104abd71a0cull }}, {{ 0x01205c2c592c566aull, 0x31a9d655b75a42f9ull, 0x133e048f8130ac10ull, 0xf66de26cad46465cull, 0x3b94c8b412f8f53full, 0x7a3b4a2eb667047cull }}, {{ 0x0b4399bb7bbb6028ull, 0xf0a25f5929869dbaull, 0xc06c2d9b0be6b8a1ull, 0xa04ad83ec4bebf98ull, 0x53cfd708bdb9947full, 0xc650e5d320062cdaull }}, {{ 0x70a40152d551c193ull, 0x6657b97b9f422944ull, 0x8439c80e77033653ull, 0x42ec7273af737bf7ull, 0x461e6657693fccfcull, 0xbf28fa3f403dc087ull }}, {{ 0x66680d3c55318fc0ull, 0xff6d3ed438959cacull, 0x2a41d090a6201f41ull, 0x9d3c7884da82d7abull, 0xbd2fff6a1c7e01daull, 0x7799c67882698548ull }}, {{ 0x0010845b53ef9d7cull, 0xfa44744a35d81ebcull, 0xa69225a67d413893ull, 0x245cb530891c6cafull, 0x63dffa251cec128aull, 0xac01c0b5181f34d7ull }}, {{ 0x00a52b91475c26ddull, 0xc6ac8ae61a713358ull, 0x81b57880e48c35c7ull, 0x6b9f13e55b1c3edcull, 0xe6bfc5732138b965ull, 0xb8118712f1381069ull }}, {{ 0x0673b3acc99984a2ull, 0xc2bd6cfd086c0170ull, 0x1116b508ed7a19cdull, 0x3436c6f58f1a749dull, 0x037db67f4c373df6ull, 0x30af46bd6c30a423ull }}, {{ 0x408504bfdfff2e52ull, 0x9b6641e254380e60ull, 0xaae3125946c50209ull, 0x0a23c59797088e22ull, 0x22e920f8fa286b9eull, 0xe6d8c36639e6695eull }}, {{ 0x85322f7ebff7cf35ull, 0x11fe92d74a308fc2ull, 0xacdeb77cc3b21460ull, 0x6565b7ebe6558d5aull, 0x5d1b49b9c594342cull, 0x0477a1fe43001dadull }}, {{ 0x33f5daf37fae1810ull, 0xb3f1bc68e5e59d99ull, 0xc0b32adfa4f4cbc0ull, 0xf5f92f36ff57858aull, 0xa310e141b7ca09bbull, 0x2cac53ee9e0128c5ull }}, {{ 0x079a8d82fcccf09full, 0x07715c18faf827fcull, 0x86ffacbc718ff587ull, 0x9bbbd825f96b376bull, 0x5ea8cc912de46157ull, 0xbebb47522c0b97b8ull }}, {{ 0x4c09871de0016639ull, 0x4a6d98f9cdb18fd8ull, 0x45fcbf5c6f9f9746ull, 0x1556717bbe302a33ull, 0xb297fdabcaebcd6cull, 0x7350c935b873ed33ull }}, {{ 0xf85f472ac00dfe35ull, 0xe847f9c208ef9e72ull, 0xbbdf799c5c3be8beull, 0xd5606ed56de1a600ull, 0xf9efe8b5ed360638ull, 0x8127dc1934874404ull }}, {{ 0xb3b8c7ab808bee14ull, 0x12cfc194595c307dull, 0x56bac01b9a571775ull, 0x55c454564ad07c07ull, 0xc35f171b441c3e38ull, 0x0b8e98fc0d48a831ull }}, {{ 0x0537ccb305774ccaull, 0xbc1d8fcb7d99e4e9ull, 0x634b81140766ea92ull, 0x59ab4b5eec24d849ull, 0xa1b6e710a91a6e33ull, 0x7391f9d884d691f1ull }}, {{ 0x342dfefe36a8ffe4ull, 0x59279df2e802f11aull, 0xe0f30ac84a0529bbull, 0x80b0f1b5397072ddull, 0x512506a69b084e01ull, 0x83b3c2753061b370ull }}, {{ 0x09cbf5ee2299fee5ull, 0x7b8c2b7d101d6b06ull, 0xc97e6bd2e433a151ull, 0x06e971143e647caaull, 0x2b7242820e530c0full, 0x25059893e3d10263ull }}, {{ 0x61f79b4d5a03f4f6ull, 0xd379b2e2a1262e3cull, 0xdef0363cea044d2eull, 0x451e6aca6fecdeabull, 0xb27699148f3e7896ull, 0x7237f5c6e62a17dfull }}, {{ 0xd3ac11058427919full, 0x42c0fcda4b7dce5bull, 0xb5621e61242b03d4ull, 0xb3302be85f40b2b6ull, 0xf8a1facd9870b5deull, 0x762f99c4fda4eebcull }}, {{ 0x44b8aa37298bb035ull, 0x9b89e086f2ea0f96ull, 0x15d52fcb69ae264aull, 0xffe1b713b886fb23ull, 0xb653cc07f4671ab2ull, 0x9ddc01b1e8715361ull }}, {{ 0xaf36a6279f74e210ull, 0x1362c5457d249bdeull, 0xda53ddf220cd7eeaull, 0xfed126c53545cf5eull, 0x1f45f84f8c070afdull, 0x2a9810f3146d41d1ull }}, {{ 0xd8227d8c3a90d49full, 0xc1dbb4b6e36e16b2ull, 0x8746ab754806f524ull, 0xf42b83b414ba19b4ull, 0x38bbb31b78466debull, 0xa9f0a97ecc44922bull }}, {{ 0x7158e77a49a84e3aull, 0x92950f24e24ce2fcull, 0x48c2b294d045936full, 0x89b32508cf45010dull, 0x3754ff12b2c04b37ull, 0xa3669ef3faadb5b0ull }}, {{ 0x6d790ac6e0930e41ull, 0xb9d29770d700dddcull, 0xd79af9d022b7c25bull, 0x60ff725818b20a84ull, 0x2951f6bafb82f02bull, 0x62023587cac918e2ull }}, {{ 0x46ba6bc4c5be8e8full, 0x4239ea686608aa9cull, 0x6c0dc2215b2d9795ull, 0xc9fa7770f6f46930ull, 0x9d33a34dd31d61b1ull, 0xd416174debdaf8d5ull }}, {{ 0xc34835afb9719191ull, 0x96432813fc56aa1aull, 0x3889954d8fc7ebd4ull, 0xe3c8aa69a58c1be4ull, 0x2404610a3f25d0f1ull, 0x48dce90b368db858ull }}, {{ 0xa0d218dd3e6fafadull, 0xde9f90c7db62a50bull, 0x355fd5079dcf364dull, 0xe5d6a820777916eaull, 0x682bca66777a2972ull, 0xd8a11a7021893371ull }}, {{ 0x4834f8a4705cdcbeull, 0xb23ba7ce91da7274ull, 0x15be524c2a181f0aull, 0xfa629144aabae526ull, 0x11b5e800aac59e7cull, 0x764b08614f5c026eull }}, {{ 0xd211b66c63a09f69ull, 0xf6548e11b288788aull, 0xd96f36f9a4f1366aull, 0xc7d9acaeab4cf37cull, 0xb11b1006abb830e1ull, 0x9eee53cd1998184cull }}, {{ 0x34b1203be4463a1dull, 0x9f4d8cb0f954b56cull, 0x7e5825c0716c202dull, 0xce80bed2b10182e0ull, 0xeb0ea042b531e8d1ull, 0x354f4602fff0f2feull }}, {{ 0x0eeb4256eabe4523ull, 0x39077ee9bd4f163aull, 0xef7179846e3941c8ull, 0x1107743aea0f1cc4ull, 0x2e92429b13f31832ull, 0x1518bc1dff697df5ull }}, {{ 0x953097652b6eb362ull, 0x3a4af5216516de44ull, 0x5a6ebf2c4e3c91d2ull, 0xaa4a8a4d24971fb1ull, 0xd1b69a0ec77ef1f4ull, 0xd2f7592bfa1eeb93ull }}, {{ 0xd3e5e9f3b25301d0ull, 0x46ed934df2e4aeadull, 0x885377bb0e5db236ull, 0xa6e967036de73cedull, 0x31220493caf5738eull, 0x3da97bb7c53533c6ull }}, {{ 0x46fb2384f73e121dull, 0xc547c10b7ceed2caull, 0x5342ad4e8fa8f61eull, 0x851e06224b086147ull, 0xeb542dc5ed968392ull, 0x689ed52db41405bdull }}, {{ 0xc5cf6331a86cb523ull, 0xb4cd8a72e1543be6ull, 0x409ac5119c999d33ull, 0x332c3d56ee53ccc9ull, 0x3149c9bb47e123b9ull, 0x163453c908c8396bull }}, {{ 0xba19dff0943f1360ull, 0x1007687ccd4a5703ull, 0x860bb2b01e002405ull, 0xffba65654f45ffdcull, 0xece1e150cecb653bull, 0xde0b45da57d23e2full }}, {{ 0x4502bf65ca76c1c5ull, 0xa04a14e004e76625ull, 0x3c74fae12c016832ull, 0xfd47f5f518bbfe9dull, 0x40d2cd2813f1f457ull, 0xac70ba876e366ddfull }}, {{ 0xb21b79f9e8a391aeull, 0x42e4d0c03109fd74ull, 0x5c91cccbb80e11faull, 0xe4cf9b92f757f224ull, 0x883c0390c7738b6full, 0xbc67494a4e204ab8ull }}, {{ 0xf512c3c31663b0ceull, 0x9cf02781ea63e68eull, 0x9db1fff5308cb3c6ull, 0xf01c13bda96f756bull, 0x525823a7ca83725eull, 0x5c08dce70d42eb35ull }}, {{ 0x92bba59edfe4e808ull, 0x21618b1327e70195ull, 0x28f3ff93e57f05c2ull, 0x6118c5689e5a9634ull, 0x3771648de92277b5ull, 0x9858a106849d3015ull }}, {{ 0xbb547834bef11054ull, 0x4dcf6ebf8f060fd7ull, 0x9987fbc6f6f63995ull, 0xcaf7b6162f89de09ull, 0x2a6ded8b1b58ad15ull, 0xf3764a412e23e0d4ull }}, {{ 0x514cb20f756aa349ull, 0x0a1a537b963c9e6dull, 0xff4fd5c5a59e3fd5ull, 0xedad1cdddb62ac5full, 0xa84b476f1176c2d9ull, 0x829ee68bcd66c849ull }}, {{ 0x2cfef49a962a60d6ull, 0x650742d3de5e3045ull, 0xf91e59b8782e7e52ull, 0x48c320aa91dabbbfull, 0x92f0ca56aea39c83ull, 0x1a3501760603d2e0ull }}, {{ 0xc1f58e09dda7c859ull, 0xf2489c46afade2b3ull, 0xbb2f8134b1d0ef37ull, 0xd79f46a9b28b557full, 0xbd67e762d2641d20ull, 0x06120e9c3c263cc5ull }}, {{ 0x93978c62a88dd37bull, 0x76d61ac2dccadb05ull, 0x4fdb0c0ef229582full, 0x6c38c2a0f97156fdull, 0x660f09dc37e92348ull, 0x3cb4921a597e5fb9ull }}, {{ 0xc3eb7bda958a42caull, 0xa45d0b9c9fec8e37ull, 0x1e8e7895759d71daull, 0x3a379a49be6d65e5ull, 0xfc96629a2f1b60d4ull, 0x5f0db5077eefbd3dull }}, {{ 0xa732d689d7669be7ull, 0x6ba2741e3f3d8e2dull, 0x3190b5d69826728aull, 0x462c06e17045faf3ull, 0xdddfda05d711c84aull, 0xb689124af55d646bull }}, {{ 0x87fc61626a021707ull, 0x3458892e78678dc8ull, 0xefa71a61f1807968ull, 0xbdb844ce62bbcd7full, 0xaabe843a66b1d2e6ull, 0x215ab6ed95a5ec36ull }}, {{ 0x4fdbcdd82414e648ull, 0x0b755bd0b40b89d5ull, 0x5c8707d36f04be12ull, 0x6932b00fdb5606ffull, 0xab712a4802f23d03ull, 0x4d8b2547d87b3a22ull }}, {{ 0x1e960a7168d0fed1ull, 0x7295962708736255ull, 0x9d464e42562f6cb4ull, 0x1bfae09e915c45f9ull, 0xb26ba6d01d766222ull, 0x076f74ce74d0455aull }}, {{ 0x31dc686e1829f428ull, 0x79d7dd865481d753ull, 0x24bf0e975dda3f0cull, 0x17ccc631ad9abbc0ull, 0xf8348421269fd555ull, 0x4a5a90109022b58aull }}, {{ 0xf29c144cf1a3898eull, 0xc26ea73f4d12693full, 0x6f7691e9aa86767cull, 0xedffbdf0c80b5581ull, 0xb20d294b823e5552ull, 0xe789a0a5a15b176dull }}, {{ 0x7a18cb0170635f87ull, 0x9852887902b81c7full, 0x5aa1b320a940a0dfull, 0x4bfd6b67d071570eull, 0xf4839cf3166f553dull, 0x0b6046784d8eea48ull }}, {{ 0xc4f7ee0e63e1bb47ull, 0xf33954ba1b311cfaull, 0x8a50ff469c8648bbull, 0xf7e6320e246d668full, 0x8d24217ee0595464ull, 0x71c2c0b3079526d9ull }}, {{ 0xb1af4c8fe6d150c4ull, 0x803d4f450feb21cbull, 0x6729f8c21d3ed757ull, 0xaefdf48d6c46019bull, 0x83694ef4c37d4bf1ull, 0x719b86fe4bd3847full }}, {{ 0xf0d8fd9f042d27adull, 0x026518b29f2f51f4ull, 0x07a3b7952474696bull, 0xd5eb8d863abc1012ull, 0x221d158fa2e4f770ull, 0x701345eef6432cfbull }}, {{ 0x6879e83629c38cc0ull, 0x17f2f6fa37d93391ull, 0x4c652bd36c8c1e2eull, 0x5b33873e4b58a0b4ull, 0x5522d79c5cf1aa68ull, 0x60c0bb559e9fc1cfull }}, {{ 0x14c3121da1a37f80ull, 0xef7da5c62e7c03aeull, 0xfbf3b6423d792dccull, 0x9003486ef176470aull, 0x535c6c1ba170a813ull, 0xc7875158323d9219ull }}, {{ 0xcf9eb5285062fb05ull, 0x5ae879bdd0d824ccull, 0xd7851e9666bbca01ull, 0xa020d4556e9ec66dull, 0x419c39144e6690c3ull, 0xcb492d71f667b4fdull }}, {{ 0x1c33139323ddce2dull, 0x8d14c16a28717000ull, 0x6b3331e00355e40dull, 0x41484b565233c04aull, 0x901a3acb1001a7a4ull, 0xf0dbc673a00d11e4ull }}, {{ 0x19fec3bf66aa0dc7ull, 0x82cf8e25946e6001ull, 0x2ffff2c0215ae887ull, 0x8cd2f15f360582e8ull, 0xa1064beea0108c6aull, 0x6895c0844082b2edull }}, {{ 0x03f3a57a02a489c2ull, 0x1c1b8d77cc4fc00bull, 0xdfff7b814d8d154bull, 0x803d6db81c371d11ull, 0x4a3ef75240a57c29ull, 0x15d9852a851afd48ull }}, {{ 0x278476c41a6d6194ull, 0x191386adfb1d806eull, 0xbffad30d0782d4efull, 0x026649311a2722b2ull, 0xe675a9368676d99full, 0xda7f33a9330de4d2ull }}, {{ 0x8b2ca3a90845cfcaull, 0xfac342cbcf27044dull, 0x7fcc3e824b1c5156ull, 0x17fedbeb05875afbull, 0x00989c2140a48036ull, 0x88f8049bfe8af03dull }}, {{ 0x6fbe649a52ba1de7ull, 0xcba09bf617862b07ull, 0xfdfa7116ef1b2d65ull, 0xeff4972e37498dd2ull, 0x05f6194c866d021cull, 0x59b02e17f16d6262ull }}, {{ 0x5d6fee073b452b09ull, 0xf446179ceb3dae4aull, 0xebc86ae5570fc5f9ull, 0x5f8de7ce28df8a3dull, 0x3b9cfcfd40421521ull, 0x80e1ccef6e45d7d4ull }}, {{ 0xa65f4c4850b3ae56ull, 0x8abcec213068cee7ull, 0x35d42cf5669dbbc3ull, 0xbb8b0e0d98bb666bull, 0x5421e1e48294d34dull, 0x08d2015a4eba6e4aull }}, {{ 0x7fb8fad32704cf5bull, 0x6b61394be418150cull, 0x1a49c196022955a3ull, 0x536e8c87f7520030ull, 0x4952d2ed19d04109ull, 0x58340d8713484ee7ull }}, {{ 0xfd39cc3f8630198dull, 0x31cc3cf6e8f0d27cull, 0x06e18fdc159d5862ull, 0x42517d4fa93401e1ull, 0xdd3c3d4302228a5dull, 0x72088746c0d31508ull }}, {{ 0xe441fa7b3de0ff7full, 0xf1fa61a5196838e1ull, 0x44cf9e98d82573d5ull, 0x972ee51c9c0812caull, 0xa45a649e155967a4ull, 0x745548c3883ed258ull }}, {{ 0xea93c8d06ac9faf2ull, 0x73c7d072fe1238d2ull, 0xb01c31f87176865bull, 0xe7d4f31e1850bbe6ull, 0x6b87ee2cd57e0c6dull, 0x8b54d7a352743776ull }}, {{ 0x29c5d8242be3cd73ull, 0x85ce247decb6383dull, 0xe119f3b46ea13f92ull, 0x0e517f2cf3275702ull, 0x334f4dc056ec7c4bull, 0x71506c61388a2aa0ull }}, {{ 0xa1ba7169b6e6067eull, 0x3a0d6ceb3f1e3263ull, 0xcb03850c524c7bb9ull, 0x8f2ef7c17f89661cull, 0x01190983653cdaeeull, 0x6d243bcc3565aa42ull }}, {{ 0x51486e2124fc40eeull, 0x44864130772df7e4ull, 0xee23327b36fcd53cull, 0x97d5ad8efb5dfd1full, 0x0afa5f21f4608d51ull, 0x436a55fa15f8a694ull }}, {{ 0x2cd44d4b71da8947ull, 0xad3e8be4a7cbaeebull, 0x4d5ff8d025e0545aull, 0xee58c795d1abe33full, 0x6dc7b7538bc5852full, 0xa2275bc4dbb681c8ull }}, {{ 0xc04b04f272895cc9ull, 0xc47176ee8df4d52full, 0x05bfb8217ac34b8aull, 0x4f77cbda30b6e079ull, 0x49cd294375b733dfull, 0x558995b0952111d4ull }}, {{ 0x82ee3178795d9fdcull, 0xac6ea5518b9053ddull, 0x397d314ecba0f36bull, 0x1aadf685e724c4baull, 0xe2039ca2992806b9ull, 0x575fd8e5d34ab24aull }}, {{ 0x1d4deeb4bda83e99ull, 0xbc52752f73a346a7ull, 0x3ee3ed13f4498234ull, 0x0acba13b076faf46ull, 0xd4241e59fb90433bull, 0x69be78fa40eaf6ecull }}, {{ 0x250b530f689271feull, 0x5b3893da8460c287ull, 0x74e742c78adf160full, 0x6bf44c4e4a5cd8beull, 0x49692f83d3a2a04eull, 0x2170b9c6892da540ull }}, {{ 0x72713e9a15b873f0ull, 0x9035c6892bc79947ull, 0x91089bcb6cb6dc99ull, 0x378afb0ee7a07770ull, 0xde1bdb26445a4310ull, 0x4e6741c15bc87482ull }}, {{ 0x786c7204d934875bull, 0xa219c15bb5cbfccaull, 0xaa5615f23f249dffull, 0x2b6dce950c44aa65ull, 0xad168f7eab869ea2ull, 0x1008918d95d48d1cull }}, {{ 0xb43c74307c0d4993ull, 0x55018d9519f7dfe8ull, 0xa75cdb76776e2bfcull, 0xb24a11d27aaea7f8ull, 0xc2e19af2b3423255ull, 0xa055af87da4d831eull }}, {{ 0x0a5c89e4d884dfbdull, 0x520f87d303aebf17ull, 0x89a092a0aa4db7dbull, 0xf6e4b238cad28fb6ull, 0x9cd00d7b0095f758ull, 0x4358db4e87071f33ull }}, {{ 0x679d62f07530bd67ull, 0x349b4e3e24d376e6ull, 0x6045ba46a7092e91ull, 0xa4eef637ec399d21ull, 0x202086ce05dba979ull, 0xa178911146473804ull }}, {{ 0x0c25dd6493e76605ull, 0x0e110e6d7042a500ull, 0xc2b946c2865bd1acull, 0x71559e2f3a40234dull, 0x4145440c3a949ec0ull, 0x4eb5aaacbec83029ull }}, {{ 0x797aa5edc709fc31ull, 0x8caa9046629a7200ull, 0x9b3cc3993f9630b8ull, 0x6d582dd846816109ull, 0x8cb4a87a49ce3384ull, 0x1318aabf73d1e19cull }}, {{ 0xbeca7b49c663d9eeull, 0x7ea9a2bfda087404ull, 0x105fa3fc7bdde735ull, 0x4571ca72c10dca60ull, 0x7f0e94c6e20e032cull, 0xbef6ab7a8632d01dull }}, {{ 0x73e8d0e1bfe6834cull, 0xf2a05b7e8454882full, 0xa3bc67dcd6ab0816ull, 0xb671e87b8a89e7c0ull, 0xf691cfc4d48c1fbaull, 0x75a2b2c93dfc2126ull }}, {{ 0x871828d17f0120f7ull, 0x7a4392f12b4d51daull, 0x655c0ea062ae50e5ull, 0x207314d369630d86ull, 0xa1b21db04d793d4bull, 0x985afbdc6bd94b85ull }}, {{ 0x46f1982ef60b49a9ull, 0xc6a3bd6bb1053289ull, 0xf5989243dacf28f6ull, 0x447ed0421dde873full, 0x50f528e306bc64efull, 0xf38dd69c367cf338ull }}, {{ 0xc56ff1d59c70e09bull, 0xc2656634ea33f95cull, 0x97f5b6a68c1799a3ull, 0xacf422952ab1487full, 0x299398de435bf158ull, 0x838a621a20e18033ull }}, {{ 0xb65f72581c68c611ull, 0x97f5fe112607bd9full, 0xef99228178ec0065ull, 0xc18959d3aaecd4fbull, 0x9fc3f8aea1976d76ull, 0x2367d50548cf01ffull }}, {{ 0x1fba77711c17bcabull, 0xef9becab7c4d683dull, 0x5bfb590eb93803f7ull, 0x8f5d8244ad4051d7ull, 0x3da7b6d24fea46a3ull, 0x620e5234d81613fcull }}, {{ 0x3d48aa6b18ed5eb1ull, 0x5c173eb2db061263ull, 0x97d17a933c3027afull, 0x99a716aec4833269ull, 0x688d24371f26c263ull, 0xd48f361070dcc7daull }}, {{ 0x64d6a82ef945b2eeull, 0x98e872fc8e3cb7e0ull, 0xee2ec9c059e18cd9ull, 0x0086e2d3ad1ff81full, 0x15836a27378397e4ull, 0x4d981ca4689fce88ull }}, {{ 0xf06291d5bcb8fd4full, 0xf9147ddd8e5f2ec3ull, 0x4dd3e18382cf807full, 0x0544dc44c33fb13full, 0xd72225882b23eee8ull, 0x07f11e6c163e1150ull }}, {{ 0x63d9b2595f39e519ull, 0xbacceaa78fb7d3a7ull, 0x0a46cf231c1b04ffull, 0x34b09aafa07cec79ull, 0x67557751af675510ull, 0x4f6b3038de6cad28ull }}, {{ 0xe680f77db842f2faull, 0x4c012a8b9d2e4489ull, 0x66c4175f190e31fdull, 0x0ee60adc44e13cbaull, 0x0956a930da0952a2ull, 0x1a2fe238b03ec394ull }}, {{ 0x0109aae9329d7dc6ull, 0xf80ba97423cead63ull, 0x03a8e9b6fa8df3e4ull, 0x94fc6c9ab0cc5f48ull, 0x5d629be8845d3a54ull, 0x05ded636e273a3c8ull }}, {{ 0x0a60ad1bfa26e9b7ull, 0xb0749e896612c5deull, 0x24992125c98b86f1ull, 0xd1dc3e0ae7fbb8d0ull, 0xa5da17152ba4474dull, 0x3ab45e24d88465d3ull }}, {{ 0x67c6c317c5852127ull, 0xe48e315dfcbbbaacull, 0x6dfb4b79df734570ull, 0x329a6c6d0fd53821ull, 0x7a84e6d3b46ac90aull, 0x4b0bad70752bfa44ull }}, {{ 0x0dc39eedb7334b83ull, 0xed8dedabdf554abcull, 0x4bd0f2c2ba80b668ull, 0xfa083c429e54314eull, 0xc93104450c2bda65ull, 0xee74c66493b7c6acull }}, {{ 0x89a435492800f322ull, 0x478b48b6b954eb58ull, 0xf6297b9b49072019ull, 0xc4525a9a2f49ed0eull, 0xdbea2ab279b687fbull, 0x508fbfedc52dc2bfull }}, {{ 0x606a14db90097f52ull, 0xcb70d7233d513175ull, 0x9d9ed410da4740fcull, 0xab378a05d8e34295ull, 0x9725aaf8c1214fd5ull, 0x259d7f49b3c99b7eull }}, {{ 0xc424d093a05ef935ull, 0xf2686760652bee95ull, 0x283448a886c889dfull, 0xb02b643a78e099d8ull, 0xe778adb78b4d1e58ull, 0x7826f8e105e012f1ull }}, {{ 0xa97025c443b5bc10ull, 0x781409c3f3b751d9ull, 0x920ad69543d562bfull, 0xe1b1ea48b8c60271ull, 0x0ab6c92b71032f76ull, 0xb185b8ca3ac0bd73ull }}, {{ 0x9e6179aaa519589dull, 0xb0c861a785293280ull, 0xb46c61d4a655db7aull, 0xd0f326d737bc186full, 0x6b23dbb26a1fdaa4ull, 0xef3937e64b87667eull }}, {{ 0x2fcec0aa72fd761full, 0xe7d3d08b339bf906ull, 0x0c3bd24e7f5a92caull, 0x297f84682d58f45dull, 0x2f6694f8253e8a70ull, 0x583c2efef34a00f0ull }}, {{ 0xde1386a87de69d3bull, 0x0e4625700417ba3dull, 0x7a563710f989bbedull, 0x9efb2c11c5798ba2ull, 0xda01d1b174716861ull, 0x7259d5f580e40961ull }}, {{ 0xacc34294eb02244cull, 0x8ebd766028ed466aull, 0xc75e26a9bf615742ull, 0x35cfb8b1b6bf7458ull, 0x841230ee8c6e13d0ull, 0x77825b9708e85dd2ull }}, {{ 0xbfa099d12e156afcull, 0x93669fc19944c02aull, 0xc9ad82a179cd6899ull, 0x1a1d36f1237a8b77ull, 0x28b5e9517c4cc622ull, 0xab1793e65913aa39ull }}, {{ 0x7c46022bccd62ddcull, 0xc2023d8ffcaf81abull, 0xe0c71a4ec20615ffull, 0x0524256b62c972adull, 0x971b1d2edaffbd55ull, 0xaeebc6ff7ac4a63bull }}, {{ 0xdabc15b6005dca98ull, 0x9416679fdedb10b2ull, 0xc7c70713943cdbfdull, 0x33697631dbde7acaull, 0xe70f23d48dfd6552ull, 0xd535c5facbae7e53ull }}, {{ 0x8b58d91c03a9e9eeull, 0xc8e00c3eb48ea6fcull, 0xcdc646c3ca6097e7ull, 0x021e9df296b0cbebull, 0x0697664d8be5f536ull, 0x5419bbcbf4d0ef47ull }}, {{ 0x71787b1824a32349ull, 0xd8c07a730d9285ddull, 0x09bec3a5e7c5ef0dull, 0x15322b79e2e7f736ull, 0x41e9ff0776fb941cull, 0x490155f7902958c6ull }}, {{ 0x6eb4cef16e5f60d9ull, 0x7784c87e87b93aa6ull, 0x6173a47b0dbb568aull, 0xd3f5b2c2dd0fa81cull, 0x9323f64aa5d3c918ull, 0xda0d5baba19d77beull }}, {{ 0x5310156e4fb9c879ull, 0xab2fd4f14d3c4a80ull, 0xce846cce89516168ull, 0x4798fb9ca29c911bull, 0xbf679eea7a45daf8ull, 0x848594b45026ad71ull }}, {{ 0x3ea0d64f1d41d4beull, 0xafde516d045ae903ull, 0x112c40115d2dce16ull, 0xcbf9d41e5a1dab16ull, 0x7a0c3528c6ba8db2ull, 0x2d37cf0b2182c671ull }}, {{ 0x72485f1724924f6bull, 0xdeaf2e422b8d1a20ull, 0xabba80ada3ca0ce2ull, 0xf7c2492f8528aedcull, 0xc47a1397c34988fbull, 0xc42e166f4f1bc06eull }}, {{ 0x76d3b6e76db71a31ull, 0xb2d7ce95b3830544ull, 0xb54906c865e480dcull, 0xad96dbdb3396d49eull, 0xacc4c3eda0df59d7ull, 0xa9cce05917158453ull }}, {{ 0xa445250a492705eeull, 0xfc6e11d9031e34acull, 0x14da43d3faed089eull, 0xc7e4969003e44e33ull, 0xbfafa74848b9826cull, 0xa200c37ae6d72b44ull }}, {{ 0x6ab37266db863b4eull, 0xdc4cb27a1f2e0ebeull, 0xd086a647cd425635ull, 0xceede1a026eb0dfeull, 0x7cdc88d2d73f183full, 0x5407a2cd0467b0afull }}, {{ 0x2b027804933e5108ull, 0x9afef8c537cc9370ull, 0x25427ece04975e1aull, 0x154ad041852e8bf4ull, 0xe09d583c6876f27eull, 0x484c5c022c0ce6daull }}, {{ 0xae18b02dc06f2a54ull, 0x0df5b7b42dfdc261ull, 0x7498f40c2de9ad0aull, 0xd4ec228f33d17789ull, 0xc625725c14a578ecull, 0xd2fb9815b881048cull }}, {{ 0xccf6e1c98457a74dull, 0x8b992d09cbe997d0ull, 0x8df98879cb20c264ull, 0x51395998062eab5eull, 0xbd767798ce76b940ull, 0x3dd3f0d9350a2d7full }}, {{ 0x01a4d1df2b6c8901ull, 0x73fbc261f71fee28ull, 0x8bbf54c1ef4797edull, 0x2c3d7ff03dd2b1b1ull, 0x66a0abf810a33c83ull, 0x6a47687c1265c6fdull }}, {{ 0x107032b7b23d5a0dull, 0x87d597d3a73f4d90ull, 0x75794f9358cbef46ull, 0xba66ff626a3af0efull, 0x0246b7b0a6605d1full, 0x26ca14d8b7f9c5e6ull }}, {{ 0xa461fb2cf6658483ull, 0x4e57ee44887907a0ull, 0x96bd1bc177f758c1ull, 0x4805f9d8264d695aull, 0x16c32ce67fc3a33dull, 0x83e4d0772fc1bafcull }}, {{ 0x6bd3cfc19ff72d1full, 0x0f6f4ead54ba4c46ull, 0xe363158eafa9778dull, 0xd03bc2717f061d89ull, 0xe39fc100fda46064ull, 0x26f024a7dd914dd8ull }}, {{ 0x36461d903fa7c337ull, 0x9a5912c54f46fac0ull, 0xe1ded792dc9eab82ull, 0x2255986ef63d2762ull, 0xe43d8a09e86bc3f0ull, 0x85616e8ea7ad0a78ull }}, {{ 0x1ebd27a27c8da021ull, 0x077abbb518c5cb82ull, 0xd2b46bbc9e32b31aull, 0x5757f4559e6389dcull, 0xea6764631435a761ull, 0x35ce51928cc268b8ull }}, {{ 0x33638c58dd88414full, 0x4acb5512f7b9f315ull, 0x3b0c355e2dfaff04ull, 0x696f8b582fe362a0ull, 0x2809ebdeca1889cdull, 0x1a0f2fb97f981739ull }}, {{ 0x01e37b78a7528d12ull, 0xebf152bdad437ed4ull, 0x4e7a15adcbcdf62aull, 0x1e5b7171dee1da42ull, 0x906336b3e4f56206ull, 0x0497dd3efbf0e83bull }}, {{ 0x12e2d2b6893982b1ull, 0x376d3b68c4a2f448ull, 0x10c4d8c9f60b9dadull, 0x2f926e72b4d28697ull, 0xa3e02306f195d43dull, 0x2deea475d7691253ull }}, {{ 0xbcdc3b215c3f1aeeull, 0x2a445217ae5d8ad0ull, 0xa7b077e39c7428c4ull, 0xdbb8507b103941e6ull, 0x66c15e456fda4a63ull, 0xcb526c9a6a1ab744ull }}, {{ 0x609a4f4d9a770d4dull, 0xa6ab34eccfa76c27ull, 0x8ce4aee41c8997a9ull, 0x953324cea23c9302ull, 0x038daeb65e86e7e6ull, 0xf1383e08250b28acull }}, {{ 0xc607190808a68500ull, 0x82b011401c8a3989ull, 0x80eed4e91d5feca0ull, 0xd3ff7012565dbe19ull, 0x2388d31fb1450f01ull, 0x6c326c51726f96b8ull }}, {{ 0xbc46fa5056813204ull, 0x1ae0ac811d663f61ull, 0x0954511b25bf3e45ull, 0x47fa60b75fa96cffull, 0x63583f3cecb29612ull, 0x39f83b2e785be331ull }}, {{ 0x5ac5c723610bf42cull, 0x0cc6bd0b25fe79d1ull, 0x5d4b2b0f79786eb3ull, 0xcfc7c729bc9e41f6ull, 0xe17278613ef9dcb6ull, 0x43b24fd0b396dfedull }}, {{ 0x8bb9c761ca7789bcull, 0x7fc3626f7bf0c22dull, 0xa4efae9abeb452feull, 0x1dcdc7a15e2e939full, 0xce78b3cc75c29f24ull, 0xa4f71e2703e4bf4aull }}, {{ 0x7541c9d1e8ab6157ull, 0xfda1d85ad76795c7ull, 0x715cd20b730b3df0ull, 0x2a09cc4dadd1c43cull, 0x10b705fc999a3769ull, 0x71a72d8626ef78ecull }}, {{ 0x9491e23316b1cd6bull, 0xe852738c6a0bd9caull, 0x6da034727e706b69ull, 0xa461fb08ca31aa5cull, 0xa7263bde00062a1bull, 0x7087c73d855ab938ull }}, {{ 0xcdb2d5fee2f2062dull, 0x1338837c247681e9ull, 0x48420c78f0643223ull, 0x6bd3ce57e5f0a79cull, 0x877e56ac003da514ull, 0x654dc867358b3c36ull }}, {{ 0x08fc5bf4dd743dc7ull, 0xc03522d96ca11322ull, 0xd2947cb963e9f55eull, 0x36460f6efb668c1aull, 0x4aef62b8026872ccull, 0xf509d40817705a21ull }}, {{ 0x59db9790a68a69c4ull, 0x82135c7e3e4abf54ull, 0x39ccdf3de72395b3ull, 0x1ebc9a55d201790cull, 0xed59db3018147bfaull, 0x92624850ea63854cull }}, {{ 0x8293eba6816821acull, 0x14c19cee6eeb794bull, 0x4200b86b0763d903ull, 0x335e075a340eba7aull, 0x45828fe0f0ccd7c5ull, 0xb7d6d32927e33501ull }}, {{ 0x19c734810e1150b8ull, 0xcf9021505532bcf3ull, 0x9407342e49e67a1eull, 0x01ac4986089348c6ull, 0xb7199ec968006db4ull, 0x2e643f9b8ee0120cull }}, {{ 0x01c80d0a8cad2732ull, 0x1ba14d2353fb617full, 0xc84809cee300c534ull, 0x10badf3c55c0d7c1ull, 0x270033de10044908ull, 0xcfea7c1394c0b47full }}, {{ 0x11d082697ec387efull, 0x144d036147d1cef6ull, 0xd2d06214de07b409ull, 0xa74cb85b59886d91ull, 0x860206aca02ada50ull, 0x1f28d8c3cf870cf7ull }}, {{ 0xb225181ef3a34f58ull, 0xcb0221ccce32159cull, 0x3c23d4d0ac4d085aull, 0x88ff33917f5447b2ull, 0x3c1442be41ac8726ull, 0x379877a61b4681abull }}, {{ 0xf572f13584611973ull, 0xee1552000df4d81eull, 0x59665026bb02538bull, 0x59f803aef94accf6ull, 0x58ca9b6e90bd4781ull, 0x2bf4ac7d10c110b0ull }}, {{ 0x967d6c172bcafe7bull, 0x4cd534008b907135ull, 0x7dff21834e174377ull, 0x83b024d5bcec019full, 0x77ea1251a764cb0dull, 0xb78ebce2a78aa6e3ull }}, {{ 0xe0e638e7b5edf0caull, 0x0054080573a46c17ull, 0xebf74f210ce8a2a9ull, 0x24e170596138103aull, 0xaf24b73089efee87ull, 0x2b9360da8b6a84e2ull }}, {{ 0xc8fe390d1b4b67e3ull, 0x03485036846c38eeull, 0x37a9174a81165a9aull, 0x70ce637dcc30a24dull, 0xd76f27e5635f5147ull, 0xb3c1c889722930daull }}, {{ 0xd9ee3a8310f20edcull, 0x20d322212c3a3953ull, 0x2c9ae8e90adf8a04ull, 0x680fe2e9f9e65704ull, 0x6a578ef5e1b92ccaull, 0x0591d55e759be88cull }}, {{ 0x834e491ea974949aull, 0x483f554bba463d46ull, 0xbe0d191a6cbb6429ull, 0x109edd23c2ff6629ull, 0x276b959ad13bbfe8ull, 0x37b255b09817157cull }}, {{ 0x210edb329e8dce03ull, 0xd27954f546be64c1ull, 0x6c82fb083f51e99cull, 0xa634a3659df9fda1ull, 0x8a33d80c2c557f10ull, 0x2cf758e5f0e6d6d9ull }}, {{ 0x4a948ffa318a0c1eull, 0x38bd5194c36fef8bull, 0x3d1dce5279332020ull, 0x7e0e61f82bc3e84eull, 0x66067079bb56f6a6ull, 0xc1a978fb6904647full }}, {{ 0xe9cd9fc5ef64792full, 0x37652fcfa25f5b70ull, 0x632a0f38bbff4142ull, 0xec8fd3b1b5a7130eull, 0xfc4064c15165a280ull, 0x909eb9d21a2becf9ull }}, {{ 0x22083dbb59ecbbd2ull, 0x29f3de1c57b99269ull, 0xdfa4983757f88c96ull, 0x3d9e44f11886be8full, 0xda83ef8d2df85909ull, 0xa633423505b741c3ull }}, {{ 0x54526951833f5634ull, 0xa386ad1b6d3fb81bull, 0xbc6df2296fb57dddull, 0x682eb16af543719eull, 0x89275b83cbb37a5cull, 0x7e009612392891a6ull }}, {{ 0x4b381d2f20795e05ull, 0x6342c312447d3111ull, 0x5c4b759e5d16eaa8ull, 0x11d2ee2d94a27033ull, 0x5b899325f502c79cull, 0xec05dcb63b95b081ull }}, {{ 0xf03123d744bdac35ull, 0xe09b9eb6ace3eaacull, 0x9af2982fa2e52a93ull, 0xb23d4dc7ce586201ull, 0x935fbf7b921bcc18ull, 0x383a9f1e53d8e50dull }}, {{ 0x61eb6668af68ba16ull, 0xc6143322c0e72ac1ull, 0x0d79f1dc5cf3a9c6ull, 0xf66509ce0f73d410ull, 0xc1bd7ad3b515f8f6ull, 0x324a372f4678f287ull }}, {{ 0xd3320016da1744dcull, 0xbcc9ff5b8907ab8dull, 0x86c3729ba184a1c3ull, 0x9ff2620c9a8648a0ull, 0x9166cc4512dbb9a5ull, 0xf6e627d8c0b9794dull }}, {{ 0x3ff400e484e8b096ull, 0x5fe3f9935a4cb38aull, 0x43a27a144f2e51a5ull, 0x3f77d47e093ed645ull, 0xae03fab2bc954078ull, 0xa4fd8e77873ebd07ull }}, {{ 0x7f8808ed3116e5d8ull, 0xbee7bfc186ff0366ull, 0xa458c4cb17cf3075ull, 0x7aae4cec5c745eb4ull, 0xcc27cafb5dd484b2ull, 0x71e790ab4873624cull }}, {{ 0xfb505943eae4fa6full, 0x750d7d8f45f62200ull, 0x6b77afeeee17e499ull, 0xcacf013b9c8bb30eull, 0xf98dedd1aa4d2ef8ull, 0x730ba6b0d481d6ffull }}, {{ 0xd1237ca72cf1c85aull, 0x9286e798bb9d5409ull, 0x32acdf554ceeedfeull, 0xec160c541d74fe90ull, 0xbf8b4a30a703d5b7ull, 0x7e7482e84d1265ffull }}, {{ 0x2b62de87c171d389ull, 0xb9450bf754254862ull, 0xfac0b95501554bf1ull, 0x38dc7b492691f1a1ull, 0x7b70e5e68626592full, 0xf08d1d1302b7fbfdull }}, {{ 0xb1dcb14d8e724358ull, 0x3cb277a94974d3d5ull, 0xcb873d520d54f771ull, 0x389cd0db81b37053ull, 0xd268fb013d7f7bd8ull, 0x658322be1b2fd7e6ull }}, {{ 0xf29eed079076a16bull, 0x5ef8ac9cde904658ull, 0xf34865348551aa6cull, 0x3620289311026345ull, 0x3819ce0c66fad672ull, 0xf71f5b6d0fde6f04ull }}, {{ 0x7a35424ba4a24e30ull, 0xb5b6be20b1a2bf79ull, 0x80d3f40d3530a83bull, 0x1d4195beaa17e0bbull, 0x31020c7c05cc6076ull, 0xa73992429eb0562aull }}, {{ 0xc61496f46e570ddbull, 0x19236d46f05b7abeull, 0x0847888413e69255ull, 0x248fd972a4eec753ull, 0xea147cd839fbc49dull, 0x883fb69a32e35da5ull }}, {{ 0xbccde58c4f668a8full, 0xfb6244c56392cb73ull, 0x52cb5528c701b752ull, 0x6d9e7e7a7153c93eull, 0x24cce07243d5ae23ull, 0x527d2205fce1a87bull }}, {{ 0x600af77b1a01699bull, 0xd1d6afb5e3bbf285ull, 0x3bf15397c611293dull, 0x4830f0c86d45dc6full, 0x7000c476a658cd62ull, 0x38e3543be0d094cfull }}, {{ 0xc06daacf040e200aull, 0x3262dd1ae5577935ull, 0x576d43edbcab9c6aull, 0xd1e967d444ba9c58ull, 0x6007aca27f7805d6ull, 0x38e14a56c825d01aull }}, {{ 0x8448ac16288d4066ull, 0xf7dca30cf56abc19ull, 0x6a44a7495eb41c25ull, 0x331e0e4aaf4a1b73ull, 0xc04cbe58fab03a64ull, 0x38cce763d17a2107ull }}, {{ 0x2ad6b8dd958483f8ull, 0xae9e5e81962b58ffull, 0x26ae88ddb309197bull, 0xff2c8eead8e51282ull, 0x82ff6f79cae247e9ull, 0x380109e62ec54a4dull }}, {{ 0xac6338a7d72d27b3ull, 0xd22fb10fddb179f7ull, 0x82d158a8fe5afed4ull, 0xf7bd952c78f2b915ull, 0x1dfa5ac1ecd6cf23ull, 0x300a62fdd3b4e707ull }}, {{ 0xbbe0368e67c38cfaull, 0x35dcea9ea8eec3acull, 0x1c2d7699ef8df450ull, 0xad67d3bcb97b3ad7ull, 0x2bc78b9340641767ull, 0xe067ddea45110647ull }}, {{ 0x56c221900da381c7ull, 0x1aa12a329953a4bfull, 0x19c6a2035b8b8b22ull, 0xc60e455f3ed04c67ull, 0xb5cb73c083e8ea0cull, 0xc40eab26b2aa3ec7ull }}, {{ 0x63954fa0886311c4ull, 0x0a4ba5f9fd446f79ull, 0x01c2542193736f55ull, 0xbc8eb5b87422fc07ull, 0x19f285852719247full, 0xa892af82faa673cdull }}, {{ 0xe3d51c4553deb1a3ull, 0x66f47bc3e4ac5abdull, 0x1197494fc2825952ull, 0x5d931934895dd846ull, 0x0379373386fb6cfdull, 0x95badb1dca808603ull }}, {{ 0xe6531ab546b2f05eull, 0x058cd5a6eebb8b6aull, 0xafe8dd1d99177d38ull, 0xa7befc0d5daa72bcull, 0x22bc280345d241e5ull, 0xd94c8f29e9053c1eull }}, {{ 0xff3f0b14c2fd63aeull, 0x378058855353722cull, 0xdf18a327faeae430ull, 0x8d75d885a8a87b5eull, 0x5b599020ba3692f8ull, 0x7cfd97a31a34592dull }}, {{ 0xf8766ecf9de5e4caull, 0x2b037535414275c1ull, 0xb6f65f8fcd2ce9e2ull, 0x869a75389694d1b4ull, 0x917fa1474621bdb5ull, 0xe1e7ec5f060b7bc5ull }}, {{ 0xb4a0541c2afaefe8ull, 0xae2294148c989993ull, 0x259fbb9e03c122d5ull, 0x42089435e1d0310full, 0xaefc4cc8bd516917ull, 0xd30f3bb63c72d5b7ull }}, {{ 0x0e434919adcd5f0dull, 0xcd59c8cd7df5ffc5ull, 0x783d542c258b5c58ull, 0x9455ca1ad221ea97ull, 0xd5daffd7652e1ae8ull, 0x3e98551e5c7c592cull }}, {{ 0x8ea0db00ca05b67eull, 0x0581d806eb9bfdb2ull, 0xb26549b977719b78ull, 0xcb59e50c355329eaull, 0x5a8dfe69f3cd0d15ull, 0x71f3532f9cdb7bc0ull }}, {{ 0x92488e07e43920e8ull, 0x371270453417e8f9ull, 0xf7f4e13eaa7012b0ull, 0xf182f27a153fa32aull, 0x898bf023860282d9ull, 0x73813fdc2092d583ull }}, {{ 0xb6d58c4eea3b4913ull, 0x26b862b408ef19bfull, 0xaf90cc72a860bae2ull, 0x6f1d78c4d47c5fadull, 0x5f7761633c191c83ull, 0x830c7e9945bc5723ull }}, {{ 0x24577b152650dac3ull, 0x8333db085957017dull, 0xdba7fc7a93c74cd5ull, 0x5726b7b04cdbbcc8ull, 0xbaa9cde058fb1d22ull, 0x1e7cf1fcb95b6761ull }}, {{ 0x6b6aced37f288b9aull, 0x20068e537d660ee3ull, 0x948fdcc9c5c90057ull, 0x67832ce300955fd8ull, 0x4aa20ac379cf2357ull, 0x30e173df3d9209d1ull }}, {{ 0x322c1442f7957404ull, 0x40418f42e5fc94e2ull, 0xcd9e9fe1b9da0367ull, 0x0b1fc0de05d5be75ull, 0xea546ba2c217616aull, 0xe8ce86b867b4622cull }}, {{ 0xf5b8ca9dabd68825ull, 0x828f989cfbddd0d5ull, 0x08323ed142842208ull, 0x6f3d88ac3a59709aull, 0x274c345b94e9ce24ull, 0x181143340d0bd5c1ull }}, {{ 0x9937ea28b6615173ull, 0x199bf621d6aa285bull, 0x51f6742c99295455ull, 0x586756ba477e6604ull, 0x88fa0b93d1220d6cull, 0xf0aca0088276598bull }}, {{ 0xfc2f25971fcd2e7bull, 0x00179d5262a59393ull, 0x33a089bdfb9d4b53ull, 0x74096346caeffc2bull, 0x59c473c62b54863bull, 0x66be4055189f7f73ull }}, {{ 0xd9d777e73e03d0c9ull, 0x00ec2537da77c3c7ull, 0x0445616bd424f13eull, 0x885de0c3ed5fd9b0ull, 0x81ac85bdb14d3e52ull, 0x036e8352f63afa81ull }}, {{ 0x826aaf086c2627ddull, 0x0939742e88ada5ceull, 0x2ab5ce3649716c6cull, 0x53aac7a745be80e0ull, 0x10bd3968ed046f39ull, 0x2251213d9e4dc90full }}, {{ 0x182ad654397d8ea2ull, 0x5c3e89d156c87a11ull, 0xab1a0e1ede6e3c38ull, 0x44abcc88b97108c1ull, 0xa7643e19422c583dull, 0x572b4c682f09da96ull }}, {{ 0xf1ac5f4a3ee79255ull, 0x9a71622d63d4c4aaull, 0xaf048d34b04e5a33ull, 0xaeb5fd573e6a5790ull, 0x89ea6cfc95bb7264ull, 0x67b0fc11d66289e2ull }}, {{ 0x70bbb8e6750bb750ull, 0x086dd5c5e64faeadull, 0xd62d840ee30f8604ull, 0xd31be56870276ba6ull, 0x632841ddd95277eeull, 0x0ce9d8b25fd962d9ull }}, {{ 0x675539009275291bull, 0x544a59baff1cd2c6ull, 0x5dc72894de9b3c28ull, 0x3f16f614618a3484ull, 0xdf9292aa7d38af54ull, 0x812276f7be7ddc7dull }}, {{ 0x09543a05b8939b11ull, 0x4ae7814df7203bc0ull, 0xa9c795d0b2105993ull, 0x76e59ccbcf660d2bull, 0xbbb9baa8e436d94aull, 0x0b58a5ad70ea9ceaull }}, {{ 0x5d4a443935c40ea6ull, 0xed0b0d0ba7425580ull, 0xa1cbda26f4a37fc0ull, 0xa4f81ff619fc83b4ull, 0x55414a98ea247ce8ull, 0x717678c6692a212bull }}, {{ 0xa4e6aa3c19a8927aull, 0x426e827488975703ull, 0x51f685858e62fd89ull, 0x71b13f9d03dd250eull, 0x548ce9f9256ce116ull, 0x6ea0b7c01ba54bb1ull }}, {{ 0x7102a6590095b8c7ull, 0x9851188d55e96624ull, 0x33a137378fdde75cull, 0x70ec7c2226a3728full, 0x4d8123bb7640cae0ull, 0x52472d811474f4edull }}, {{ 0x6a1a7f7a05d937c6ull, 0xf32af5855b1dfd6cull, 0x044c282b9eab099dull, 0x693cd95582627998ull, 0x070b65529e87ecc4ull, 0x36c7c70acc919145ull }}, {{ 0x2508fac43a7c2dbeull, 0x7fad97358f2be63cull, 0x2af991b432ae602bull, 0x1c607d5717d8bff0ull, 0x4671f53a314f3facull, 0x23cdc66bfdafacb2ull }}, {{ 0x7259cbaa48d9c96bull, 0xfcc7e81797b6fe59ull, 0xadbfb109facfc1b2ull, 0x1bc4e566ee777f61ull, 0xc0739445ed187cb9ull, 0x6609c037e8dcbef6ull }}, {{ 0x7781f4a6d881de32ull, 0xdfcf10ebed25ef7eull, 0xc97cea63cc1d90fdull, 0x15b0f60550aaf9d0ull, 0x8483cabb42f4df3bull, 0xfc61822f189f75a3ull }}, {{ 0xab138e847512adf6ull, 0xbe16a937437b5af0ull, 0xdee127e5f927a9eaull, 0xd8e99c3526adc227ull, 0x2d25eb509d90b84eull, 0xdbcf15d6f63a9863ull }}, {{ 0xaec3912c92bacb9aull, 0x6ce29c28a2d18d66ull, 0xb4cb8efbbb8ca32bull, 0x79201a1382c9958eull, 0xc37b312627a73314ull, 0x9616da659e49f3dfull }}, {{ 0xd3a3abbdbb4bf404ull, 0x40da19965c2f8602ull, 0x0ff395d5537e5fb2ull, 0xbb4104c31bdfd793ull, 0xa2cfeb7d8c87feccull, 0xdce487f82ee386bdull }}, {{ 0x4464b56950f78826ull, 0x8884ffdf99db3c1cull, 0x9f83da5542efbcf6ull, 0x508a2f9f16be6bbeull, 0x5c1f32e77d4ff3ffull, 0xa0ed4fb1d4e34368ull }}, {{ 0xabef161d29ab517eull, 0x5531febc0290591aull, 0x3b2687549d5d61a1ull, 0x2565dc36e3703572ull, 0x9937fd0ae51f87f9ull, 0x49451cf250e0a213ull }}, {{ 0xb756dd23a0b12ef0ull, 0x53f3f35819a37b0aull, 0x4f81494e25a5d04dull, 0x75fa9a24e2621676ull, 0xfc2fe26cf33b4fbbull, 0xdcb3217728c654c3ull }}, {{ 0x2964a36446ebd55eull, 0x478781710062ce6bull, 0x1b0cdd0d787a2305ull, 0x9bca0570d7d4e09full, 0xd9ded84180511d52ull, 0x9eff4ea797bf4fa7ull }}, {{ 0x9dee61eac53655a7ull, 0xcb4b0e6a03dc102full, 0x0e80a286b4c55e34ull, 0x15e436686e50c637ull, 0x82b4728f032b253aull, 0x35f9128bed791c8eull }}, {{ 0x2b4fd32bb41f5887ull, 0xf0ee90242698a1dcull, 0x910659430fb5ae0full, 0xdaea20144f27be26ull, 0x1b0c79961faf7444ull, 0x1bbab97746bb1d91ull }}, {{ 0xb11e3fb509397547ull, 0x6951a16981f65299ull, 0xaa3f7c9e9d18cc9full, 0x8d2540cb178d6d81ull, 0x0e7cbfdd3cda8ab0ull, 0x154b3ea8c34f27abull }}, {{ 0xeb2e7d125c3e94c5ull, 0x1d304e1f139f3a00ull, 0xa67ade3222f7fe3aull, 0x837487eeeb864710ull, 0x90df7ea460896ae5ull, 0xd4f07297a1178caeull }}, {{ 0x2fd0e2b79a71cfadull, 0x23e30d36c4384409ull, 0x80ccadf55dafee45ull, 0x228d4f55333ec6a6ull, 0xa8baf26bc55e2cf7ull, 0x516479ec4aeb7ed1ull }}, {{ 0xde28db2c08721cc2ull, 0x66de8423aa32a85bull, 0x07fecb95a8df4eb3ull, 0x598519540073c281ull, 0x974d7835b5adc1a7ull, 0x2decc33aed32f430ull }}, {{ 0xad988fb854751f96ull, 0x04b12964a5fa9396ull, 0x4ff3f3d898b91302ull, 0x7f32fd480485990aull, 0xe906b21918c99089ull, 0xcb3fa04d43fd89e5ull }}, {{ 0xc7f59d334c933bd9ull, 0x2eeb9dee7bc9c3e2ull, 0x1f878675f73abe14ull, 0xf7fde4d02d37fa67ull, 0x1a42f4faf7dfa55eull, 0xf07c4304a7e762fbull }}, {{ 0xcf982400fdc05677ull, 0xd5342b50d5e1a6dbull, 0x3b4b409ba84b6cc9ull, 0xafeaf021c42fc807ull, 0x069d91cdaebc75b5ull, 0x64da9e2e8f09ddcfull }}, {{ 0x1bf16809e98360abull, 0x5409b1285ad08496ull, 0x50f0861492f23fe2ull, 0xdf2d6151a9ddd048ull, 0x4227b208d35c9918ull, 0xf08a2dd19662aa16ull }}, {{ 0x176e10631f21c6acull, 0x4860eb938c252dddull, 0x29653ccdbd767ed7ull, 0xb7c5cd30a2aa22d3ull, 0x958cf458419dfaf8ull, 0x6565ca2fdfdaa4deull }}, {{ 0xea4ca3df3751c2b8ull, 0xd3c933c37973caa2ull, 0x9df4600966a0f468ull, 0x2dba03e65aa55c3full, 0xd7818b72902bcdb7ull, 0xf5f9e5debe8a70b1ull }}, {{ 0x26fe66b829319b33ull, 0x45dc05a2be85ea5dull, 0x2b8bc05e02498c18ull, 0xc94426ff8a759a7cull, 0x6b0f7279a1b60927ull, 0x9bc2fab3716866f2ull }}, {{ 0x85f003319bf00ffeull, 0xba98385b713b27a3ull, 0xb37583ac16df78f2ull, 0xdca985fb689808d9ull, 0x2e9a78c0511c5b8dull, 0x159dcb026e140578ull }}, {{ 0x3b601ff017609feeull, 0x49f233926c4f8c63ull, 0x029724b8e4bab97bull, 0x9e9f3bd215f05881ull, 0xd208b7832b1b938aull, 0xd829ee184cc836b1ull }}, {{ 0x51c13f60e9c63f4dull, 0xe37603b83b1b7be0ull, 0x19e76f38ef4b3ed0ull, 0x32385634db63750aull, 0x34572b1faf13c36aull, 0x71a34cf2ffd222f2ull }}, {{ 0x318c79c921be7902ull, 0xe29c25324f12d6c3ull, 0x030a583958f07428ull, 0xf6335e1091e29265ull, 0x0b67af3cd6c5a225ull, 0x7061017dfe355d76ull }}, {{ 0xef7cc1db5170ba14ull, 0xda1973f716bc639full, 0x1e67723d79648998ull, 0x9e01aca5b2d9b7f2ull, 0x720cd86063b8557bull, 0x63ca0eebee15a69cull }}, {{ 0x5adf92912e6744c6ull, 0x84fe87a6e35be43full, 0x300a7666bded5ff8ull, 0x2c10be78fc812f75ull, 0x748073c3e53356d4ull, 0xe5e495374cd8821cull }}, {{ 0x8cbbb9abd008afbaull, 0x31f14c84e196ea79ull, 0xe068a0036b45bfb5ull, 0xb8a770b9dd0bda93ull, 0x8d0485a6f4016449ull, 0xfaedd4290075151cull }}, {{ 0x7f5540b62056dd47ull, 0xf36cfd30cfe528bfull, 0xc416402230b97d13ull, 0x368a6742a27689c6ull, 0x822d3885880deae1ull, 0xcd4a499a0492d31dull }}, {{ 0xf954871d4364a4c7ull, 0x8241e3e81ef3977aull, 0xa8de8155e73ee2c7ull, 0x2168089a58a161c3ull, 0x15c43537508b2cccull, 0x04e6e0042dbc3f27ull }}, {{ 0xbd4d4724a1ee6fcaull, 0x1692e7113583eacdull, 0x98b10d5b0874dbcbull, 0x4e105607764dd1a4ull, 0xd9aa1429256fbff9ull, 0x3104c029c95a7786ull }}, {{ 0x6504c76e53505de1ull, 0xe1bd06ac17272c09ull, 0xf6ea858e549095eeull, 0x0ca35c4a9f0a306dull, 0x80a4c99b765d7fbdull, 0xea2f81a1dd88ab44ull }}, {{ 0xf22fca4f4123aac8ull, 0xd16242b8e787b85dull, 0xa529378f4da5db54ull, 0x7e619aea3665e44bull, 0x066fe0129fa6fd62ull, 0x25db1052a756b0adull }}, {{ 0x75dde7188b64abcdull, 0x2dd69b390b4d33abull, 0x739c2b99087a9150ull, 0xefd00d261ffaeaf4ull, 0x405ec0ba3c85e5d8ull, 0x7a8ea33a8962e6c2ull }}, {{ 0x9aab06f571eeb5fdull, 0xca62103a710404b2ull, 0x8419b3fa54c9ad21ull, 0x5e20837d3fcd2d8cull, 0x83b387465d3afa79ull, 0xc99260495ddd0396ull }}, {{ 0x0aae459673531be2ull, 0xe7d4a2486a282efaull, 0x290107c74fe0c351ull, 0xad4522e47e03c77dull, 0x250348bfa44dc8bdull, 0xdfb7c2ddaaa223e1ull }}, {{ 0x6aceb7e0813f16d5ull, 0x0e4e56d42591d5c4ull, 0x9a0a4dc91ec7a133ull, 0xc4b35cecec25cae3ull, 0x7220d77c6b09d768ull, 0xbd2d9ca8aa5566cbull }}, {{ 0x2c132ec50c76e44eull, 0x8f0f644977b259acull, 0x046709db33cc4bfeull, 0xaf01a1413979ece4ull, 0x75486adc2e626a17ull, 0x63c81e96a75603f2ull }}, {{ 0xb8bfd3b27ca4eb10ull, 0x9699eadeacf780b9ull, 0x2c06629005faf7f1ull, 0xd6104c8c3ec340e8ull, 0x94d42c99cfd824ecull, 0xe5d131e2895c2778ull }}, {{ 0x377e44f8de712e9bull, 0xe2032cb2c1ab0741ull, 0xb83fd9a03bcdaf6full, 0x5ca2fd7a73a08911ull, 0xd049be021e717140ull, 0xfa2bf2d95d998ab5ull }}, {{ 0x2aeeb1b8b06bd210ull, 0xd41fbefb90ae488cull, 0x327e80425608da5eull, 0x9e5de6c884455ab1ull, 0x22e16c15306e6c83ull, 0xc5b77c7da7ff6b1aull }}, {{ 0xad52f136e43634a0ull, 0x493d75d3a6ced579ull, 0xf8f102975c5887b4ull, 0x2fab03d52ab58aebull, 0x5cce38d3e4503d24ull, 0xb92adce88ffa2f05ull }}, {{ 0xc53d6c24ea1e0e45ull, 0xdc669a44841456c0ull, 0xb96a19e99b754d0aull, 0xdcae2653ab176d37ull, 0xa00e3846eb226369ull, 0x3baca1159fc5d635ull }}, {{ 0xb4663971252c8eb1ull, 0x9c0206ad28cb6387ull, 0x3e2503201295026cull, 0x9ecd7f44aeea442dull, 0x408e32c52f57e222ull, 0x54be4ad83dba5e18ull }}, {{ 0x0bfe3e6b73bd92e8ull, 0x181442c397f1e34dull, 0x6d721f40b9d2183eull, 0x3406f8aed526a9c4ull, 0x858dfbb3d96ed55aull, 0x4f6eec726947acf2ull }}, {{ 0x77ee70328567bd12ull, 0xf0ca9ba3ef72e102ull, 0x467538874234f26cull, 0x0845b6d45382a1acull, 0x378bd5067e545586ull, 0x1a553c781cccc179ull }}, {{ 0xaf5061f9360d62b2ull, 0x67ea14675a7cca18ull, 0xc094354896117841ull, 0x52b9244b431a50baull, 0x2b765240ef4b573cull, 0x07545cb11fff8ebcull }}, {{ 0xd923d3bc1c85daf8ull, 0x0f24cc0988dfe4f6ull, 0x85ca14d5dcaeb28eull, 0x3b3b6af09f07274bull, 0xb29f368958f1685bull, 0x494b9eeb3ffb9359ull }}, {{ 0x7b6645591d3a8db5ull, 0x976ff85f58bef1a4ull, 0x39e4d05a9ed2f98cull, 0x50522d66364788f3ull, 0xfa38215d796e1390ull, 0xdcf435307fd3c180ull }}, {{ 0xd1feb57b2449890dull, 0xea5fb3b97775706cull, 0x42f0238a343dbf7dull, 0x2335c5fe1ecb5980ull, 0xc6314da6be4cc3a3ull, 0xa18a13e4fe458f09ull }}, {{ 0x33f316cf6adf5a85ull, 0x27bd053eaa966440ull, 0x9d6163660a697aebull, 0x6019bbed33f17f02ull, 0xbded08836effa45full, 0x4f64c6f1eeb79661ull }}, {{ 0x077ee41a2cb98935ull, 0x8d623472a9dfea82ull, 0x25cde1fc681ecd2full, 0xc1015744076ef61aull, 0x6b42552255fc6bb9ull, 0x19efc573532bdfd1ull }}, {{ 0x4af4e905bf3f5c12ull, 0x85d60c7aa2bf2914ull, 0x7a0ad3dc113403dbull, 0x8a0d68a84a559d05ull, 0x309753575bdc3541ull, 0x035db6813fb6be2eull }}, {{ 0xed911a39787998b3ull, 0x3a5c7cca5b779acaull, 0xc46c4698ac082693ull, 0x64861692e7582236ull, 0xe5e94169969a148full, 0x21a9210c7d236dcdull }}, {{ 0x47ab063eb4bff702ull, 0x479cdfe792ac0bedull, 0xac3ac1f6b85181c0ull, 0xed3ce1bd09715623ull, 0xfb1c8e1fe204cd99ull, 0x509b4a7ce3624a0aull }}, {{ 0xccae3e730f7fa611ull, 0xcc20bf0bbab87744ull, 0xba4b93a3332f1182ull, 0x4460d1625e6d5d64ull, 0xcf1d8d3ed4300803ull, 0x2610e8e0e1d6e46dull }}, {{ 0xfece707e9afc7ca8ull, 0xf94776754b34a8afull, 0x46f3c45fffd6af1bull, 0xabc82dd7b045a5efull, 0x1727847449e05020ull, 0x7ca918c8d264ec4aull }}, {{ 0xf41064f20ddcde95ull, 0xbccaa094f00e96dfull, 0xc585abbffe62d717ull, 0xb5d1ca6ce2b87b58ull, 0xe78b2c8ae2c32146ull, 0xde9af7d837f13ae4ull }}, {{ 0x88a3f1748aa0b1cdull, 0x5fea45d16091e4bfull, 0xb738b57fefdc66edull, 0x1a31e840db34d177ull, 0x0b6fbd6cdb9f4cc3ull, 0xb20dae722f6c4cf1ull }}, {{ 0x56676e8d6a46f205ull, 0xbf26ba2dc5b2ef7bull, 0x283716ff5e9c0545ull, 0x05f3128890102eadull, 0x725d66409438ff9full, 0xf488d075da3b016aull }}, {{ 0x600a518626c5742full, 0x778345c9b8fd5ad1ull, 0x9226e5f9b21834b9ull, 0x3b7eb955a0a1d2c3ull, 0x77a5fe85ca39fc36ull, 0x8d58249a864e0e28ull }}, {{ 0xc0672f3d83b689d3ull, 0xab20b9e139e58c2dull, 0xb584fbc0f4f20f3eull, 0x52f33d5846523ba3ull, 0xac7bf139e643da1eull, 0x85716e093f0c8d94ull }}, {{ 0x8407d8672521623cull, 0xaf4742cc42f779c9ull, 0x1731d58991749872ull, 0x3d806572bf365465ull, 0xbcd76c42fea6852full, 0x366e4c5c767d87ceull }}, {{ 0x284e7407734dd658ull, 0xd8c89bfa9daac1dfull, 0xe7f2575fae8df47aull, 0x6703f67b781f4bf2ull, 0x606a3a9df28133d8ull, 0x204efb9ca0e74e13ull }}, {{ 0x9310884a810a5f75ull, 0x77d617ca28ab92b7ull, 0x0f7769bcd18b8cccull, 0x0627a0d2b138f77dull, 0xc4264a2b790c0674ull, 0x4315d41e49090cc1ull }}, {{ 0xbea552e90a67ba8eull, 0xae5cede596b3bb2bull, 0x9aaa21602f737ffcull, 0x3d8c483aec39aae2ull, 0xa97ee5b2ba784088ull, 0x9eda492eda5a7f91ull }}, {{ 0x72753d1a680d498full, 0xcfa14af7e3054fb5ull, 0x0aa54dc1da82ffdeull, 0x677ad24d3a40acdaull, 0x9ef4f8fb48b28552ull, 0x3486dbd48788fbb0ull }}, {{ 0x789463081084df95ull, 0x1c4cedaede351d16ull, 0x6a750992891dfeb4ull, 0x0acc37044686c084ull, 0x3591b9d0d6f93538ull, 0x0d44964d4b59d4e6ull }}, {{ 0xb5cbde50a530bbd5ull, 0x1b0148d4ae1322e0ull, 0x28925fb95b2bf309ull, 0x6bfa262ac143852cull, 0x17b1422865bc1430ull, 0x84addf04f18250feull }}, {{ 0x19f6af2673e75650ull, 0x0e0cd84eccbf5cc7ull, 0x95b7bd3d8fb77e5bull, 0x37c57dab8ca333b9ull, 0xecec9593f958c9e4ull, 0x2ecab6316f1729ecull }}, {{ 0x03a2d78087095f21ull, 0x8c807313ff799fc7ull, 0xd92d64679d2aef8eull, 0x2db6e8b37e60053full, 0x413dd7c7bd77e2eaull, 0xd3eb1dee56e7a341ull }}, {{ 0x245c6b05465db74aull, 0x7d047ec7fac03dc6ull, 0x7bc5ec0c23ad5b91ull, 0xc9251702efc0347eull, 0x8c6a6dcd66aedd25ull, 0x472f2b4f650c608cull }}, {{ 0x6b9c2e34bfa928e3ull, 0xe22cf3cfcb8269bdull, 0xd5bb387964c593aeull, 0xdb72e61d5d820cf0ull, 0x7c284a0602d4a379ull, 0xc7d7b119f27bc57dull }}, {{ 0x3419ce0f7c9b98e0ull, 0xd5c1861df3182166ull, 0x595034bdefb7c4d4ull, 0x927cfd25a7148168ull, 0xd992e43c1c4e62c2ull, 0xce6ceb0378d5b6e6ull }}, {{ 0x09020c9ade13f8bdull, 0x598f3d2b7ef14dfeull, 0x7d220f6b5d2db050ull, 0xb8e1e37886cd0e13ull, 0x7fbcea591b0fdb99ull, 0x10412e22b8592504ull }}, {{ 0x5a147e0cacc7b75full, 0x7f9863b2f56d0becull, 0xe3549a31a3c8e323ull, 0x38d2e2b544028cc2ull, 0xfd61277b0e9e9401ull, 0xa28bcd5b337b722cull }}, {{ 0x84ccec7ebfcd29baull, 0xfbf3e4fd9642773bull, 0xe14e05f065d8df62ull, 0x383cdb14a8197f9cull, 0xe5cb8ace9231c80cull, 0x5976059002d275c1ull }}, {{ 0x30013cf37e03a141ull, 0xd786f1e7de98a853ull, 0xcd0c3b63fa78b9ddull, 0x32608ece90fefc20ull, 0xf9f36c11b5f1d07aull, 0x7e9c37a01c389992ull }}, {{ 0xe00c6182ec244c86ull, 0x6b45730eb1f6933full, 0x027a51e7c8b742aaull, 0xf7c59411a9f5d948ull, 0xc38238b11b7224c5ull, 0xf21a2c411a35ffbdull }}, {{ 0xc07bcf1d396afd3aull, 0x30b67e92f3a1c07eull, 0x18c7330dd7289aa8ull, 0xadb7c8b0a39a7cd0ull, 0xa31636eb12756fbbull, 0x7505ba8b061bfd69ull }}, {{ 0x84d617243e2de443ull, 0xe720f1bd845184f3ull, 0xf7c7fe8a67960a91ull, 0xc92dd6e66408e020ull, 0x5ede252eb8965d54ull, 0x9239496e3d17e620ull }}, {{ 0x305ce76a6dcaea9cull, 0x074971672b2f3183ull, 0xadcff1680bdc69b3ull, 0xdbca64ffe858c149ull, 0xb4ad73d335dfa54full, 0xb63cde4e62eefd43ull }}, {{ 0xe3a10a2849ed2a1aull, 0x48de6e07afd7ef1full, 0xca1f6e10769c20feull, 0x95e7f1ff13778ce0ull, 0x0ec686401abc751eull, 0x1e60af0fdd55e4a5ull }}, {{ 0xe44a6592e343a504ull, 0xd8b04c4cde6f573eull, 0xe53a4ca4a21949eeull, 0xdb0f73f6c2ab80c7ull, 0x93c13e810b5c9331ull, 0x2fc6d69ea55aee72ull }}, {{ 0xeae7f7bce0a47229ull, 0x76e2fb00b0596874ull, 0xf446fe6e54fce354ull, 0x8e9a87a39ab307ceull, 0xc58c710a719dbff2ull, 0xddc46232758d5079ull }}, {{ 0x2d0fad60c66c759eull, 0xa4ddce06e37e1491ull, 0x8ac5f04f51e0e14cull, 0x92094c640afe4e15ull, 0xb77c6a6870297f79ull, 0xa9abd5f8978524c1ull }}, {{ 0xc29cc5c7c03c9829ull, 0x70aa0c44e2eccdabull, 0x6bbb631932c8ccfeull, 0xb45cfbe86def0cd7ull, 0x2adc2814619efabfull, 0xa0b65bb5eb336f91ull }}, {{ 0x9a1fb9cd825df19eull, 0x66a47ab0dd4008b5ull, 0x3551defbfbd801f0ull, 0x0ba1d7144b56806aull, 0xac9990cbd035cb7dull, 0x471f951b30025babull }}, {{ 0x053d420717ab7031ull, 0x026ccae8a4805718ull, 0x1532b5d7d6701364ull, 0x745266caf1610426ull, 0xbdffa7f62219f2e2ull, 0xc73bd30fe01794b4ull }}, {{ 0x34649446ecb261e9ull, 0x183fed166d0366f0ull, 0xd3fb1a6e6060c1e8ull, 0x8b3803ed6dca297cull, 0x6bfc8f9d55037cd8ull, 0xc8563e9ec0ebcf0full }}, {{ 0x0bedcac53ef7d31full, 0xf27f42e042220562ull, 0x47cf084fc3c79310ull, 0x7030274649e59ee0ull, 0x37dd9c255222e075ull, 0xd35e72338936169aull }}, {{ 0x7749ebb475ae3f34ull, 0x78f89cc2955435d4ull, 0xce16531da5cbbea9ull, 0x61e188bee2f834c2ull, 0x2ea81975355cc496ull, 0x41b076035c1ce206ull }}, {{ 0xa8e3350c98ce780bull, 0xb9b61f99d54a1a4cull, 0x0cdf3f2879f5729eull, 0xd2cf5774ddb20f9cull, 0xd290fe94159faddfull, 0x90e49c219920d43dull }}, {{ 0x98e0127df810b06cull, 0x411d3c0254e506feull, 0x80b87794c3967a33ull, 0x3c196a90a8f49c18ull, 0x39a9f1c8d83ccabeull, 0xa8ee194ffb484a6aull }}, {{ 0xf8c0b8ebb0a6e437ull, 0x8b24581750f245f1ull, 0x0734abcfa3e0c600ull, 0x58fe29a6998e18f5ull, 0x40a371d8725feb6eull, 0x994cfd1fd0d2e826ull }}, {{ 0xb7873934e684ea21ull, 0x6f6b70e92976bb73ull, 0x480eb61c66c7bc05ull, 0x79eda081ff8cf992ull, 0x8662727477bf324full, 0xfd01e33e283d117eull }}, {{ 0x2b483c110131254bull, 0x5a32691b9ea35285ull, 0xd0931d1c03cd5836ull, 0xc3484513fb81bfb6ull, 0x3fd8788cad77f71aull, 0xe212e06d9262aef1ull }}, {{ 0xb0d258aa0beb74f0ull, 0x85f81b1432613933ull, 0x25bf23182605721full, 0xa0d2b2c7d3117d24ull, 0x7e74b57ec6afa70bull, 0xd4bcc447b7dad56cull }}, {{ 0xe83776a47732915eull, 0x3bb10ec9f7cc3c04ull, 0x79775ef17c36753bull, 0x483afbce3eaee369ull, 0xf08f16f3c2dc8674ull, 0x4f5faacd2e8c563cull }}, {{ 0x122aa26ca7f9adabull, 0x54ea93e3adfa5831ull, 0xbea9b56eda209450ull, 0xd24dd60e72d4e21eull, 0x6596e5859c9d408aull, 0x19bcac03d17b5e61ull }}, {{ 0xb5aa583e8fc0c8a9ull, 0x5129c6e4cbc771eaull, 0x72a116548545cb23ull, 0x370a5c907c50d533ull, 0xf7e4f7381e24856cull, 0x015eb8262ed1afcdull }}, {{ 0x18a772719d87d69bull, 0x2ba1c4eff5ca732bull, 0x7a4adf4d34b9ef61ull, 0x26679da4db285402ull, 0xaef1a8312d6d363aull, 0x0db3317dd430de0bull }}, {{ 0xf68a7870274e6213ull, 0xb451b15f99e87faeull, 0xc6ecb9040f4359cbull, 0x800c28708f934818ull, 0xd57091ebc6441e45ull, 0x88ffeeea49e8ac74ull }}, {{ 0xa168b461890fd4bdull, 0x0b30edbc0314fcd5ull, 0xc53f3a2898a181f5ull, 0x007994659bc0d0f7ull, 0x5665b335bea92eb7ull, 0x59ff5526e316bc90ull }}, {{ 0x4e170bcf5a9e4f60ull, 0x6fe949581ed1e058ull, 0xb4784595f64f1392ull, 0x04bfcbf8158829adull, 0x5ff90019729bd326ull, 0x83f95384dee35da3ull }}, {{ 0x0ce676198a2f19c0ull, 0x5f1cdd713432c373ull, 0x0cb2b7db9f16c3b8ull, 0x2f7df7b0d751a0c9ull, 0xbfba00fe7a163f7cull, 0x27bd4330b4e1a861ull }}, {{ 0x81009cff65d7017cull, 0xb720a66c09fba27eull, 0x7efb2e9436e3a533ull, 0xdaebace8693047daull, 0x7d4409f0c4de7ad9ull, 0x8d649fe710d093d1ull }}, {{ 0x0a0621f9fa660edaull, 0x2746803863d458f1ull, 0xf5cfd1ca24e47405ull, 0x8d34c1141be2ce88ull, 0xe4a86367b0b0cc82ull, 0x85ee3f06a825c62eull }}, {{ 0x643d53c3c7fc9484ull, 0x88c10233e64b796aull, 0x9a1e31e570ec8833ull, 0x840f8ac916dc1159ull, 0xee93e20ce6e7fd19ull, 0x3b4e76429179bdd4ull }}, {{ 0xea6545a5cfddcd29ull, 0x578a1606fef2be27ull, 0x052df2f6693d5203ull, 0x289b6bdae498ad80ull, 0x51c6d481050fe2ffull, 0x51109e99aec16a51ull }}, {{ 0x27f4b87a1eaa039eull, 0x6b64dc45f57b6d8full, 0x33cb7da01c653421ull, 0x9612368cedf6c700ull, 0x31c44d0a329eddf7ull, 0x2aa63200d38e272dull }}, {{ 0x8f8f34c532a4242eull, 0x31f09abb96d24797ull, 0x05f2e8411bf4094eull, 0xdcb621814ba3c602ull, 0xf1ab0265fa34ababull, 0xaa7df408438d87c3ull }}, {{ 0x9b980fb3fa6969d1ull, 0xf3660b53e436cbebull, 0x3b7d128b17885d0dull, 0x9f1d4f0cf465bc14ull, 0x70ae17fbc60eb4b6ull, 0xa8eb8852a3874da7ull }}, {{ 0x13f09d07c81e2229ull, 0x81fc7146ea23f734ull, 0x52e2b96eeb53a28bull, 0x372516818bf958caull, 0x66ccefd5bc930f22ull, 0x9933533a6349088aull }}, {{ 0xc766224dd12d5598ull, 0x13dc6cc52567a808ull, 0x3cdb3e5531445973ull, 0x2772e10f77bd77e7ull, 0x04015e595dbe9756ull, 0xfc014047e0da5568ull }}, {{ 0xc9fd570a2bc557ecull, 0xc69c3fb3760c9057ull, 0x60906f53ecab7e7eull, 0x8a7cca9aad66af08ull, 0x280daf7da971e95dull, 0xd80c82cec8875610ull }}, {{ 0xe3e56665b5b56f37ull, 0xc21a7d029c7da36dull, 0xc5a459473eb2f0f3ull, 0x68dfea0ac602d653ull, 0x9088dae89e731da7ull, 0x707d1c13d5495ca1ull }}, {{ 0xe6f5fff919165821ull, 0x9508e21a1ce8624aull, 0xb86b7cc872fd6985ull, 0x18bf246bbc1c5f45ull, 0xa5588d16307f288aull, 0x64e318c654dd9e4full }}, {{ 0x059bffbafadf714full, 0xd258d5052113d6edull, 0x3432dfd47de61f37ull, 0xf7776c35591bb8b9ull, 0x757582dde4f79564ull, 0xf0def7bf50a82f1cull }}, {{ 0x3817fd4dccba6d15ull, 0x377852334ac66542ull, 0x09fcbe4ceafd382eull, 0xaaaa3a157b15373cull, 0x96971caaf1abd5f1ull, 0x68b5ad792691d71cull }}, {{ 0x30efe509ff4842d4ull, 0x2ab33600ebbff496ull, 0x63df6f012de431ceull, 0xaaa644d6ced42858ull, 0xe1e71ead70b65b70ull, 0x1718c6bb81b2671dull }}, {{ 0xe95ef263f8d29c44ull, 0xab001c09357f8dddull, 0xe6ba560bcae9f20dull, 0xaa7eb06414499373ull, 0xd30732c6671f9266ull, 0xe6f7c35310f8072aull }}, {{ 0x1db577e7b83a1aa6ull, 0xae01185c16fb8aabull, 0x03475c75ed237488ull, 0xa8f2e3e8cadfc287ull, 0x3e47fbc0073bb802ull, 0x05ada13ea9b047acull }}, {{ 0x2916af0d32450a7cull, 0xcc0af398e5d36aafull, 0x20c99c9b43628d56ull, 0x997ce717ecbd9946ull, 0x6ecfd5804855301aull, 0x38c84c72a0e2ccbaull }}, {{ 0x9ae2d683f6b268d4ull, 0xf86d83f8fa422ad7ull, 0x47e01e10a1d98563ull, 0xfee106ef3f67fcbdull, 0x541e5702d353e109ull, 0x37d2fc7a48dbff48ull }}, {{ 0x0cdc6127a2f81843ull, 0xb44727b9c695ac6cull, 0xcec12ca6527f35e7ull, 0xf4ca45587a0fdf64ull, 0x492f661c4146ca63ull, 0x2e3ddcc6d897f8d3ull }}, {{ 0x809bcb8c5db0f2a0ull, 0x0ac78d41c1d8bc38ull, 0x138bbe7f38f81b0dull, 0x8fe6b574c49eb9f0ull, 0xdbd9fd1a8cc3e7e7ull, 0xce6a9fc475efb840ull }}, {{ 0x0615f37ba8e97a42ull, 0x6bcb849192775a35ull, 0xc37570f839b10e82ull, 0x9f03168fae334360ull, 0x9683e3097fa70f0bull, 0x102a3dac9b5d3288ull }}, {{ 0x3cdb82d4991ec698ull, 0x35f32dafb8a98612ull, 0xa29669b240ea9118ull, 0x361ee19cce00a1c7ull, 0xe126de5efc869674ull, 0xa1a668be11a3f955ull }}, {{ 0x60931c4dfb33c1f1ull, 0x1b7fc8dd369f3cb6ull, 0x59e020f68929aaf2ull, 0x1d34d0200c0651ccull, 0xcb84afb5dd41e08aull, 0x5080176cb067bd5aull }}, {{ 0xc5bf1b0bd0059369ull, 0x12fdd8a422385f1full, 0x82c149a15ba0ad75ull, 0x24102140783f31fbull, 0xf32edd1aa492c565ull, 0x2500ea3ee40d658bull }}, {{ 0xb9770e762037c216ull, 0xbdea76695633b73dull, 0x1b8ce04d9446c692ull, 0x68a14c84b277f3d3ull, 0x7fd4a30a6dbbb5f3ull, 0x72092674e885f777ull }}, {{ 0x3ea6909d422d94d8ull, 0x6b28a01d5e052869ull, 0x1380c307cac3c1bbull, 0x164cfd2ef8af863full, 0xfe4e5e6849551b82ull, 0x745b8091153baaaaull }}, {{ 0x7281a62495c7d06dull, 0x2f964125ac33941cull, 0xc3079e4deba59152ull, 0xdf01e3d5b6db3e76ull, 0xef0fb012dd531314ull, 0x8b9305aad454aaadull }}, {{ 0x79107d6dd9ce243dull, 0xdbde8b78ba03c91cull, 0x9e4c2f0b3477ad35ull, 0xb612e659249070a3ull, 0x569ce0bca53ebed0ull, 0x73be38ac4b4eaacbull }}, {{ 0xbaa4e64a820d6a65ull, 0x96b172b74425db1cull, 0x2ef9d6700cacc41aull, 0x1cbcff7b6da46664ull, 0x6220c75e74737427ull, 0x856e36baf112abf1ull }}, {{ 0x4a70fee9148627f0ull, 0xe2ee7b28a97a8f1full, 0xd5c260607ebfa909ull, 0x1f61fad2486bffe9ull, 0xd547c9b08c828987ull, 0x364e234d6abab76dull }}, {{ 0xe869f51acd3d8f63ull, 0xdd50cf969ec99738ull, 0x5997c3c4f37c9a62ull, 0x39d3cc36d437ff22ull, 0x54cde0e57d195f47ull, 0x1f0d61062b4b2a4aull }}, {{ 0x1423930c046799deull, 0xa5281be233dfe839ull, 0x7feda5b182de07dcull, 0x4245fa244a2ff757ull, 0x500ac8f6e2fdb8c8ull, 0x3685ca3db0efa6e7ull }}, {{ 0xc963be782c0c02abull, 0x739116d606bf123aull, 0xff4878ef1cac4e9eull, 0x96bbc56ae5dfa96aull, 0x206bd9a4dde937d2ull, 0x2139e668e95c8509ull }}, {{ 0xdde570b1b8781aabull, 0x83aae45c4376b64bull, 0xf8d4b9571ebb1230ull, 0xe355b62cfabc9e2dull, 0x44368070ab1c2e39ull, 0x4c4300191d9d325bull }}, {{ 0xaaf666f134b10aabull, 0x24aceb9aa2a31ef6ull, 0xb84f3d67334eb5e5ull, 0xe1591dc1cb5e2dcbull, 0xaa210466af19ce42ull, 0xfa9e00fb2823f790ull }}, {{ 0xada0056c0eea6aaaull, 0x6ec1340a5a5f35a2ull, 0x3318660801131af3ull, 0xcd7b2991f1adc9f5ull, 0xa54a2c02d7020e9cull, 0xca2c09cf9167aba6ull }}, {{ 0xc840363895282aa4ull, 0x538c086787b8185aull, 0xfef3fc500abf0d82ull, 0x06cf9fb370c9e393ull, 0x74e5b81c66149220ull, 0xe5b8621bae0cb482ull }}, {{ 0xd2821e35d391aa6aull, 0x4378540b4d30f38bull, 0xf587db206b768717ull, 0x441c3d0267e2e3c7ull, 0x90f9311bfccdb540ull, 0xf933d514cc7f0d18ull }}, {{ 0x39152e1a43b0a822ull, 0xa2b3487103e98376ull, 0x974e8f4432a146e8ull, 0xa91a62180edce5cfull, 0xa9bbeb17e0091482ull, 0xbc0652cffcf682f5ull }}, {{ 0x3ad3cd06a4e6914full, 0x5b00d46a271f229eull, 0xe91198a9fa4cc516ull, 0x9b07d4f094a0fa1bull, 0xa1572eeec05acd1aull, 0x583f3c1fe1a11d98ull }}, {{ 0x4c4602427101ad18ull, 0x8e084c2587375a2eull, 0x1aaff6a3c6ffb2dfull, 0x0e4e5165ce49c517ull, 0x4d67d553838c030aull, 0x7278593ed04b27f6ull }}, {{ 0xfabc16986a10c2f0ull, 0x8c52f977482985ceull, 0x0adfa265c5fcfcbbull, 0x8f0f2dfa0ee1b2e7ull, 0x060e554323781e64ull, 0x78b37c7422ef8f9full }}, {{ 0xcb58e1f424a79d5full, 0x7b3dbea8d19f3a15ull, 0x6cbc57f9bbe1df53ull, 0x9697cbc494d0fd06ull, 0x3c8f549f62b12fedull, 0xb702dc895d5b9c36ull }}, {{ 0xf178d3896e8c25b2ull, 0xd0697298303844d9ull, 0x3f5b6fc156d2b942ull, 0xe1edf5add029e240ull, 0x5d994e39daebdf47ull, 0x261c9d5da5941a1eull }}, {{ 0x6eb8435e517978f1ull, 0x241e79f1e232b083ull, 0x79925d8d643b3c9cull, 0xd34b98ca21a2d682ull, 0xa7fd0e428d36b8ceull, 0x7d1e25a877c9052full }}, {{ 0x5332a1af2ebeb967ull, 0x6930c372d5fae522ull, 0xbfb7a785ea505e19ull, 0x40f3f7e5505c6118ull, 0x8fe28e9984233814ull, 0xe32d7894adda33dcull }}, {{ 0x3ffa50d7d3733e05ull, 0x1be7a27c5bccf357ull, 0x7d2c8b3b2723acfeull, 0x8987aef5239bcaf7ull, 0x9ed991ff296030caull, 0xdfc6b5ceca86069dull }}, {{ 0x7fc7286e42806c33ull, 0x170c58db96018168ull, 0xe3bd704f8764c1edull, 0x5f4cd5936415edaaull, 0x347fb3f79dc1e7e9ull, 0xbdc31a13e93c4228ull }}, {{ 0xfdc7944e990439faull, 0xe67b7893dc0f0e14ull, 0xe566631b49ef9342ull, 0xb90057c1e8db48acull, 0x0cfd07ac29930f1dull, 0x699f04c71c5a9592ull }}, {{ 0xe9cbcb11fa2a43c5ull, 0x00d2b5c698968cd1ull, 0xf5ffdf10e35bc09dull, 0x3a036d931890d6c0ull, 0x81e24cb99fbe9729ull, 0x20362fc71b89d7b4ull }}, {{ 0x21f5eeb3c5a6a5b0ull, 0x083b19c1f5e18033ull, 0x9bfeb6a8e1958622ull, 0x442247bef5a86389ull, 0x12d6ff403d71e79cull, 0x421dddc713626d0dull }}, {{ 0x539b5305b88278e4ull, 0x524f01939acf01ffull, 0x17f32298cfd73d54ull, 0xa956cd759893e360ull, 0xbc65f88266730c1aull, 0x952aa9c6c1d84282ull }}, {{ 0x44113e393518b8e8ull, 0x37160fc40c1613f9ull, 0xef7f59f81e68654bull, 0x9d640697f5c6e1c0ull, 0x5bfbb518007e790aull, 0xd3aaa1c39272991bull }}, {{ 0xa8ac6e3c12f73910ull, 0x26dc9da878dcc7bcull, 0x5af983b13013f4f0ull, 0x25e841ef99c4d189ull, 0x97d512f004f0ba6aull, 0x44aa51a3b879fb11ull }}, {{ 0x96bc4e58bda83a9eull, 0x849e2894b89fcd5eull, 0x8dbf24ebe0c79161ull, 0x7b12935c01b02f5dull, 0xee52bd6031674825ull, 0xaea7306534c3ceafull }}, {{ 0xe35b0f7768924a2dull, 0x2e2d95cf363e05b1ull, 0x89777136c7cbadcfull, 0xceb9c19810e1d9a7ull, 0x4f3b65c1ee08d176ull, 0xd287e3f40fa612dfull }}, {{ 0xe18e9aaa15b6e5c5ull, 0xcdc7da181e6c38f2ull, 0x5eaa6c23cdf4ca17ull, 0x13418ff0a8d2808bull, 0x1851f9934c582ea4ull, 0x394ee7889c7cbcb9ull }}, {{ 0xcf920aa4d924f9b2ull, 0x09ce84f1303a397cull, 0xb2a839660b8fe4eeull, 0xc08f9f6698390571ull, 0xf333bfc0fb71d268ull, 0x3d150b561cdf5f3aull }}, {{ 0x1bb46a707b71c0f1ull, 0x6211316be2463ee0ull, 0xfa923dfc739ef14cull, 0x859c3a01f23a3670ull, 0x80057d89d2723817ull, 0x62d2715d20b9b84dull }}, {{ 0x150c2864d2718965ull, 0xd4abee36d6be74c1ull, 0xc9b66bdc84356cfbull, 0x381a441376462069ull, 0x0036e762387630ebull, 0xdc386da347413307ull }}, {{ 0xd27993f0386f5df2ull, 0x4eb74e2463708f8aull, 0xe120369d2a1641d6ull, 0x3106a8c29ebd4421ull, 0x022509d6349de930ull, 0x9a344860c88bfe46ull }}, {{ 0x38bfc7623459ab78ull, 0x13290d6be2659b6cull, 0xcb422223a4de925full, 0xea42979a3364a952ull, 0x1572625e0e2b1be1ull, 0x060ad3c7d577eebcull }}, {{ 0x377dc9d60b80b2aeull, 0xbf9a8636d7f8123aull, 0xf095556470b1b7b6ull, 0x2699ec0601ee9d3bull, 0xd677d7ac8daf16d3ull, 0x3c6c45ce56af5358ull }}, {{ 0x2ae9e25c7306fac8ull, 0x7c093e246fb0b646ull, 0x65d555ec66f12d23ull, 0x8203383c13522457ull, 0x60ae6cbd88d6e43full, 0x5c3aba0f62d94178ull }}, {{ 0xad22d79c7e45cbd2ull, 0xd85c6d6c5ce71ebdull, 0xfa555b3c056bc362ull, 0x14203258c1356b69ull, 0xc6d03f675864ea7bull, 0x9a4b4499dc7c8eb3ull }}, {{ 0xc35c6c1ceeb9f630ull, 0x739c463ba1073368ull, 0xc75590583635a1dcull, 0xc941f7778c163223ull, 0xc4227a0973f128ceull, 0x06f0ae029cdd9305ull }}, {{ 0xa19c392153439ddcull, 0x841abe544a480217ull, 0xc957a3721e18529cull, 0xdc93aaab78ddf565ull, 0xa958c45e876b9813ull, 0x4566cc1a20a7be39ull }}, {{ 0x501a3b4d40a42a9bull, 0x290b6f4ae6d014ecull, 0xdd6c62752cf33a1dull, 0x9dc4aab2b8ab95f9ull, 0x9d77abb14a33f0c6ull, 0xb603f905468d6e40ull }}, {{ 0x210651048669aa12ull, 0x9a7258ed0420d13bull, 0xa63bd893c1804523ull, 0x29aeaafb36b3dbc2ull, 0x26acb4ece60767c2ull, 0x1c27ba34c1864e86ull }}, {{ 0x4a3f2a2d4020a4b3ull, 0x0877794229482c4full, 0x7e5675c58f02b364ull, 0xa0d2add02306959aull, 0x82bf1140fc4a0d95ull, 0x198d460f8f3f113dull }}, {{ 0xe677a5c481466ef9ull, 0x54aabc959cd1bb18ull, 0xef6099b7961b01e8ull, 0x483aca215e41d808ull, 0x1b76ac89dae487d8ull, 0xff84bc9b9876ac67ull }}, {{ 0x00ac79ad0cc055bcull, 0x4eab5dd820314ef9ull, 0x59c6012bdd0e1313ull, 0xd24be54dae927059ull, 0x12a2bd628ced4e72ull, 0xfb2f5e13f4a2bc07ull }}, {{ 0x06bcc0c27f835958ull, 0x12b1aa7141ed15baull, 0x81bc0bb6a28cbec1ull, 0x36f6f508d1b8637dull, 0xba5b65d98145107cull, 0xcfd9acc78e5b5846ull }}, {{ 0x435f8798fb217d6cull, 0xbaf0a86c9342d944ull, 0x11587522597f738aull, 0x25a592583133e2e7ull, 0x4791fa7f0cb2a4daull, 0x1e80bfcb8f9172c3ull }}, {{ 0xa1bb4bf9cf4ee633ull, 0x4d66943dc09c7caaull, 0xad7493577efa836bull, 0x7877b771ec06dd06ull, 0xcbb3c8f67efa7085ull, 0x31077df39bae7ba0ull }}, {{ 0x5150f7c21914fdffull, 0x0601ca69861cdeaaull, 0xc68dc16af5c92231ull, 0xb4ad2a733844a242ull, 0xf505d9a0f5c86536ull, 0xea4aeb8414d0d447ull }}, {{ 0x2d29ad94fad1ebf6ull, 0x3c11e81f3d20b2a7ull, 0xc1898e2d99db55eaull, 0x0ec3a88032ae569bull, 0x923a804999d3f423ull, 0x26ed3328d0284acfull }}, {{ 0xc3a0c7d1cc3337a0ull, 0x58b311386346fa87ull, 0x8f5f8dc802915b26ull, 0x93a49501facf6215ull, 0xb64902e00247895eull, 0x8543ff982192ec1bull }}, {{ 0xa447ce31fa002c3eull, 0x76feac33e0c5c94dull, 0x99bb89d019ad8f7full, 0xc46dd213cc19d4d7ull, 0x1eda1cc016cb5db1ull, 0x34a7fbf14fbd3915ull }}, {{ 0x6ace0df3c401ba71ull, 0xa5f2ba06c7b9dd08ull, 0x0153622100c79afaull, 0xac4a34c5f902506cull, 0x34851f80e3f1a8f1ull, 0x0e8fd76d1d643ad3ull }}, {{ 0x2c0c8b85a8114868ull, 0x7b7b4443cd42a254ull, 0x0d41d54a07cc0dcaull, 0xbae60fbbba172438ull, 0x0d333b08e7709970ull, 0x919e6a4325ea4c40ull }}, {{ 0xb87d733890acd410ull, 0xd2d0aaa6049a5749ull, 0x849254e44df889e8ull, 0x4cfc9d5544e76a30ull, 0x84004e590a65fe67ull, 0xb030269f7b26fa80ull }}, {{ 0x34e68035a6c048a0ull, 0x3c26aa7c2e0768e1ull, 0x2db750eb0bb56318ull, 0x01de2554b10a25e5ull, 0x28030f7a67fbf009ull, 0xe1e1823acf85c905ull }}, {{ 0x110102188382d63eull, 0x5982a8d9cc4a18ccull, 0xc929292e7515def2ull, 0x12ad754eea657af3ull, 0x901e9ac80fd7605aull, 0xd2cf164c1b39da33ull }}, {{ 0xaa0a14f5231c5e6cull, 0x7f1a9881fae4f7f8ull, 0xdb9b9bd092dab577ull, 0xbac6951527f6cd85ull, 0xa1320bd09e69c384ull, 0x3c16def910428603ull }}, {{ 0xa464d1935f1bb03aull, 0xf709f513ccf1afb6ull, 0x94141625bc8b16aaull, 0x4bc1d2d38fa4073aull, 0x4bf476263021a32full, 0x58e4b5baa2993c24ull }}, {{ 0x6bf02fc1b714e243ull, 0xa66392c60170dd22ull, 0xc8c8dd795d6ee2adull, 0xf5923c439c684849ull, 0xf78c9d7de1505fd8ull, 0x78ef194a59fc596aull }}, {{ 0x3761dd9126d0d69aull, 0x7fe3bbbc0e68a358ull, 0xd7d8a6bda654dac8ull, 0x97b65aa41c12d2e1ull, 0xab7e26eacd23be79ull, 0xb956fce783db7e2dull }}, {{ 0x29d2a7ab84286207ull, 0xfee5555890166172ull, 0x6e7683687f508bd4ull, 0xed1f8a6918bc3cd2ull, 0xb2ed852c036570bfull, 0x3d65e10b2692edc8ull }}, {{ 0xa23a8cb32993d44bull, 0xf4f55575a0dfce75ull, 0x50a12214f9257651ull, 0x433b681af75a6038ull, 0xfd4733b821f6677full, 0x65faca6f81bd49d6ull }}, {{ 0x56497eff9fc64aeeull, 0x9195569848be1098ull, 0x264b54d1bb769f33ull, 0xa052110da987c233ull, 0xe4c8053153a00af8ull, 0xfbcbe85b1164e265ull }}, {{ 0x5edef5fc3dbeed48ull, 0xafd561f2d76ca5f3ull, 0x7ef1503152a23803ull, 0x4334aa889f4d95ffull, 0xefd033ed44406db6ull, 0xd5f7138eadf0d7faull }}, {{ 0xb4b59bda697544ccull, 0xde55d37c6a3e7b81ull, 0xf56d21ed3a563024ull, 0xa00ea9563907dbfaull, 0x5e220744aa84491eull, 0x5ba6c392cb686fcdull }}, {{ 0x0f1816881e94aff5ull, 0xaf5a42dc2670d311ull, 0x96435344475de170ull, 0x40929d5e3a4e97cdull, 0xad5448aea92adb32ull, 0x9483a3bbf2145e05ull }}, {{ 0x96f0e15131cedf91ull, 0xd9869c9980683eaaull, 0xdea140aac9aace66ull, 0x85ba25ae4711ee07ull, 0xc54ad6d29bac8ff6ull, 0xcd24655774cbac38ull }}, {{ 0xe568cd2bf214bbacull, 0x7f421dff041272a9ull, 0xb24c86abe0ac1004ull, 0x394578cec6b34c4eull, 0xb4ec643a14bd9fa1ull, 0x036bf56a8ff4ba37ull }}, {{ 0xf61803b774cf54b8ull, 0xf8952bf628b87aa2ull, 0xf6fd42b6c6b8a02cull, 0x3cb6b813c300fb12ull, 0x113bea44cf683c4cull, 0x223796299f8f462dull }}, {{ 0x9cf0252a90194f35ull, 0xb5d3b79d9734ca5dull, 0xa5e49b23c33641c1ull, 0x5f2330c59e09cebdull, 0xac5726b01a125afaull, 0x562bdda03b98bdc2ull }}, {{ 0x216173a9a0fd1811ull, 0x1a452c27e80fe7a8ull, 0x7aee0f65a01e9191ull, 0xb75fe7b82c621368ull, 0xbb6782e104b78dc7ull, 0x5db6a84253f7699aull }}, {{ 0x4dce84a049e2f0a8ull, 0x06b3b98f109f0c91ull, 0xcd4c99f84131afabull, 0x29bf0d31bbd4c214ull, 0x520b1cca2f2b89cdull, 0xa922929747aa200bull }}, {{ 0x0a112e42e2dd6692ull, 0x43053f96a6367dadull, 0x04fe03b28bf0dcaeull, 0xa17683f1564f94d0ull, 0x346f1fe5d7b36203ull, 0x9b59b9e8cca54071ull }}, {{ 0x64abce9cdca601b0ull, 0x9e347be27e20e8c2ull, 0x31ec24f977689eceull, 0x4ea1276d5f1bd020ull, 0x0c573efa6d01d424ull, 0x11814317fe74846cull }}, {{ 0xeeb612209e7c10e3ull, 0x2e0cd6d8ed491797ull, 0xf33971beaa163412ull, 0x124b8a45b7162141ull, 0x7b6875c84212496bull, 0xaf0c9eeff08d2c38ull }}, {{ 0x531cb54630d8a8dfull, 0xcc80647944daebefull, 0x803e7172a4de08b5ull, 0xb6f366b926dd4c93ull, 0xd21499d294b6de2eull, 0xd67e355f6583ba34ull }}, {{ 0x3f1f14bde87698b9ull, 0xfd03ecbcb08d3759ull, 0x02706e7a70ac5719ull, 0x2582033b84a4fdc3ull, 0x34ce0239cf24add3ull, 0x60ee15b9f7254610ull }}, {{ 0x7736cf6b14a1f736ull, 0xe2273f5ee584297cull, 0x186450c866bb6703ull, 0x771420532e71e99eull, 0x100c1642176eca3full, 0xc94cd943a774bca2ull }}, {{ 0xa8241a2ece53a81aull, 0xd58879b4f7299edcull, 0xf3eb27d403520626ull, 0xa6c9433fd073202cull, 0xa078de94ea53e67aull, 0xdd007ca48a8f5e54ull }}, {{ 0x916905d40f449105ull, 0x5754c111a7a0349eull, 0x872f8e4821343d84ull, 0x83dca07e247f41c1ull, 0x44b8b1d1274700caull, 0xa204de6d6999af4eull }}, {{ 0xae1a3a4898adaa2eull, 0x694f8ab08c420e31ull, 0x47db8ed14c0a672bull, 0x269e44ed6cf8918full, 0xaf36f22b88c607e9ull, 0x5430b0462000d90eull }}, {{ 0xcd0646d5f6c8a5c9ull, 0x1d1b6ae57a948df0ull, 0xce93942cf86807b2ull, 0x822eb14641b5af98ull, 0xd82575b357bc4f1bull, 0x49e6e2bd40087a92ull }}, {{ 0x023ec45ba3d679d6ull, 0x23122cf6c9cd8b68ull, 0x11c3c9c1b4104cf5ull, 0x15d2ecbe9118dbf8ull, 0x717699016d5b1713ull, 0xe304db648054c9bcull }}, {{ 0x1673ab946660c25bull, 0x5eb5c1a3e2077210ull, 0xb1a5e19108a30193ull, 0xda3d3f71aaf897b0ull, 0x6ea1fa0e458ee6beull, 0xde3091ed034fe15cull }}, {{ 0xe084b3cbffc79791ull, 0xb3199066d44a74a0ull, 0xf07acfaa565e0fc1ull, 0x86647a70adb5ece6ull, 0x5253c48eb7950374ull, 0xade5b342211ecd9cull }}, {{ 0xc52f05f7fdcbeba6ull, 0xfeffa4044ae88e48ull, 0x64cc1ca75fac9d90ull, 0x3fecc866c91b4105ull, 0x3745ad932bd2228dull, 0xcaf900954b34081bull }}, {{ 0xb3d63bafe9f7347eull, 0xf5fc682aed158ed7ull, 0xeff91e89bcbe27a9ull, 0x7f3fd403db108a35ull, 0x28b8c7bfb6355984ull, 0xedba05d4f0085110ull }}, {{ 0x065e54df23a80ce9ull, 0x9bdc11ad42d7946dull, 0x5fbb31615f6d8ca3ull, 0xf87e48268ea5661bull, 0x9737cd7d1e157f2cull, 0x49443a5160532aa1ull }}, {{ 0x3faf50b76490811dull, 0x1698b0c49c6bcc42ull, 0xbd4fedcdba477e64ull, 0xb4eed1819275fd11ull, 0xe82e06e32cd6f7c1ull, 0xdcaa472dc33faa4full }}, {{ 0x7cd92729eda50b24ull, 0xe1f6e7ae1c35fa96ull, 0x651f4a0946caefe8ull, 0x11542f0fb89be2b1ull, 0x11cc44dfc065ad91ull, 0x9ea6c7c9a07ca71full }}, {{ 0xe07b87a348726f69ull, 0xd3a50ccd1a1bc9e0ull, 0xf338e45cc3ed5f18ull, 0xad49d69d3616daedull, 0xb1fab0bd83f8c7aaull, 0x3283cde044de8736ull }}, {{ 0xc4d34c60d4785a19ull, 0x447280030515e2c8ull, 0x8038eb9fa745b6f8ull, 0xc4e262241ce48d4bull, 0xf3cae76727b7ccaaull, 0xf9260ac2b0b14822ull }}, {{ 0xb040fbc84cb384feull, 0xac79001e32dadbd7ull, 0x0239343c88b925b2ull, 0xb0d7d56920ed84f3ull, 0x85ed0a078d2dfeabull, 0xbb7c6b9ae6ecd15dull }}, {{ 0xe289d5d2ff0331f0ull, 0xbcba012dfc8c966cull, 0x163c0a5d573b78faull, 0xe86e561b4947317eull, 0x3b42644b83cbf2b4ull, 0x52dc340d05402da7ull }}, {{ 0xd9625a3df61ff362ull, 0x5f440bcbdd7de040ull, 0xde5867a56852b9cbull, 0x144f5d10dcc7eeecull, 0x5097eaf325f77b11ull, 0x3c9a08823481c888ull }}, {{ 0x7dd7866b9d3f81d8ull, 0xb8a875f6a6eac288ull, 0xaf740c76133b41f1ull, 0xcb19a2a89fcf5540ull, 0x25ef2d7f7baaceaaull, 0x5e0455160d11d553ull }}, {{ 0xea6b4034247b1272ull, 0x36949ba2852b9954ull, 0xda887c9cc0509371ull, 0xef005a963e195486ull, 0x7b57c6fad4ac12abull, 0xac2b52dc82b2553full }}, {{ 0x283082096cceb870ull, 0x21ce145933b3fd51ull, 0x8954de1f8325c26cull, 0x560389de6cfd4d44ull, 0xd16dc5cc4eb8bab7ull, 0xb9b13c9d1af7547aull }}, {{ 0x91e5145e4013345eull, 0x520ccb7c0507e52bull, 0x5d50ad3b1f799839ull, 0x5c2362b041e504adull, 0x2e49b9fb13374b29ull, 0x40ec5e230da94cccull }}, {{ 0xb2f2cbae80c00bafull, 0x347ff2d8324ef3b3ull, 0xa526c44f3abff23dull, 0x9961dae292f22ec5ull, 0xcee143cec028ef9dull, 0x893bad5e889cfff9ull }}, {{ 0xfd7bf4d1078074d3ull, 0x0cff7c71f7158504ull, 0x7383ab184b7f7664ull, 0xfdd28cd9bd75d3b8ull, 0x14cca61381995c27ull, 0x5c54c5b15621ffc2ull }}, {{ 0xe6d7902a4b04903cull, 0x81fadc73a6d73231ull, 0x8324aef2f2fa9fe8ull, 0xea398081669a4534ull, 0xcffe7cc30ffd998full, 0x9b4fb8ed5d53fd94ull }}, {{ 0x046ba1a6ee2da25cull, 0x13cc9c848467f5f3ull, 0x1f6ed57d7dca3f15ull, 0x263f050e0206b40dull, 0x1ff0df9e9fe7ff9full, 0x111d3945a547e7d0ull }}, {{ 0x2c3450854dc8579bull, 0xc5fe1d2d2c0f9b7eull, 0x3a5456e6e9e676d2ull, 0x7e76328c14430883ull, 0x3f68bc323f0ffc37ull, 0xab243cb874cf0e21ull }}, {{ 0xba0b253509d36c10ull, 0xbbed23c3b89c12edull, 0x474b65052300a43bull, 0xf09df978ca9e5520ull, 0x7a1759f6769fda2aull, 0xaf6a5f3490168d4cull }}, {{ 0x446f7412624238a3ull, 0x574365a53618bd49ull, 0xc8f1f2335e066a55ull, 0x662bbeb7ea2f5342ull, 0xc4e983a0a23e85adull, 0xda27b80da0e184fcull }}, {{ 0xac5a88b7d6963662ull, 0x68a1f8741cf764dcull, 0xd9737601ac402755ull, 0xfdb5732f25d9409bull, 0xb11f2446567138c5ull, 0x858d308848cf31dfull }}, {{ 0xbb89572e61de1fcfull, 0x1653b48921a9f09eull, 0x7e829c10ba818956ull, 0xe9167fd77a7c8616ull, 0xeb376abf606c37bbull, 0x3783e552d817f2bcull }}, {{ 0x535d67cfd2ad3e19ull, 0xdf450d5b50a36633ull, 0xf11a18a7490f5d5cull, 0x1ae0fe6ac8dd3ce0ull, 0x302a2b79c43a2d57ull, 0x2b26f53c70ef7b61ull }}, {{ 0x41a60e1e3ac46cfaull, 0xb8b285912661fe01ull, 0x6b04f688da99a5a0ull, 0x0cc9f02bd8a460c9ull, 0xe1a5b2c1aa45c567ull, 0xaf85945c695ad1cbull }}, {{ 0x907c8d2e4bac41bfull, 0x36f937ab7fd3ec0cull, 0x2e31a1588a007847ull, 0x7fe361b6766bc7deull, 0xd078fb90a6b9b606ull, 0xdb37cb9c1d8c31f6ull }}, {{ 0xa4dd83cef4ba9177ull, 0x25bc2cb2fe47387dull, 0xcdf04d756404b2c8ull, 0xfee1d120a035ceadull, 0x24b9d3a683411c40ull, 0x902df4192779f3a4ull }}, {{ 0x70a726158f49aea6ull, 0x7959befdeec834e8ull, 0x0b630695e82efbd1ull, 0xf4d22b46421a12caull, 0x6f424481208b1a89ull, 0xa1cb88fb8ac38469ull }}, {{ 0x66877cd798e0d277ull, 0xbd8175eb53d21114ull, 0x71de41db11d5d62eull, 0x9035b0be9504bbe4ull, 0x5896ad0b456f0963ull, 0x51f359d36ba32c1eull }}, {{ 0x014ae06bf8c838a8ull, 0x670e9b314634aaccull, 0x72ae928eb25a5dd3ull, 0xa218e771d22f56ecull, 0x75e2c270b6565de3ull, 0x33818242345fb92full }}, {{ 0x0cecc437b7d2368cull, 0x06920fecbe0eabf8ull, 0x7ad1b992f787aa42ull, 0x54f90a7235d9653cull, 0x9adb98671f5faae4ull, 0x030f16960bbd3bdaull }}, {{ 0x813faa2d2e36217bull, 0x41b49f3f6c92b7b0ull, 0xcc313fbdab4ca694ull, 0x51ba68761a7df45cull, 0x0c93f40739bcacebull, 0x1e96e1dc7564568aull }}, {{ 0x0c7ca5c3ce1d4ed1ull, 0x910e387a3dbb2ce5ull, 0xf9ec7d68b0fe81caull, 0x3148149d08eb8b9full, 0x7dc78848415ec131ull, 0x31e4d29c95eb6164ull }}, {{ 0x7cde79a60d25142cull, 0xaa8e34c6694fc0f2ull, 0xc33ce616e9f111e9ull, 0xecd0ce225933743full, 0xe9cb52d28db38bebull, 0xf2f03a1ddb31cdecull }}, {{ 0xe0b0c07c8372c9b3ull, 0xa98e0fc01d1d8978ull, 0xa060fce5236ab320ull, 0x40280d577c028a7dull, 0x21f13c3989037737ull, 0x7d62452a8ff20b41ull }}, {{ 0xc6e784dd227be103ull, 0x9f8c9d8123275eb8ull, 0x43c9e0f3622aff46ull, 0x8190856ad81968e8ull, 0x536c5a3f5a22a828ull, 0xe5d6b3a99f74708bull }}, {{ 0xc50b30a358d6ca1aull, 0x3b7e270b5f89b337ull, 0xa5e2c981d5adf8c2ull, 0x0fa5362c70fe1912ull, 0x423b8679855a9195ull, 0xfa6304a03a8c6571ull }}, {{ 0xb26fe6617863e505ull, 0x52ed8671bb61002dull, 0x7adbdf1258cbb796ull, 0x9c741dbc69ecfabaull, 0x965340bf3589afd2ull, 0xc7de2e42497bf66cull }}, {{ 0xf85effceb3e6f22eull, 0x3d47407151ca01c8ull, 0xcc96b6b777f52bdfull, 0x1c89295c2341cb48ull, 0xdf4087781760de3aull, 0xceadce96ded7a03dull }}, {{ 0xb3b5fe13070575cfull, 0x64c8846d31e411d9ull, 0xfde3232aaf93b6b8ull, 0x1d5b9d996091f0d7ull, 0xb8854ab0e9c8ae45ull, 0x12ca11e4b46c426aull }}, {{ 0x051becbe46369a11ull, 0xefd52c43f2e8b281ull, 0xeadf5faadbc52333ull, 0x259427fdc5b3686full, 0x3534eae921d6ceb3ull, 0xbbe4b2ef0c3a982bull }}, {{ 0x33173f6ebe2204abull, 0x5e53baa77d16f90aull, 0x2cb9bcac95b36007ull, 0x77c98fe9b902145full, 0x14112d1b526412ffull, 0x56eefd567a49f1b0ull }}, {{ 0xfee87a536d542ea9ull, 0xaf454a8ae2e5ba65ull, 0xbf415ebdd901c049ull, 0xaddf9f213a14cbb7ull, 0xc8abc31137e8bdfaull, 0x6555e560c6e370e0ull }}, {{ 0xf514c7424549d29dull, 0xd8b4e96cdcf947fbull, 0x788db36a7a1182e0ull, 0xcabc374c44cff52dull, 0xd6b59eac2f176bcaull, 0xf55af5c7c4e268c7ull }}, {{ 0x92cfc896b4e23a24ull, 0x77111e40a1bccfd7ull, 0xb5890228c4af1cc8ull, 0xeb5a28fab01f93c6ull, 0x631832b9d6ea35ebull, 0x958d99cdb0d817ceull }}, {{ 0xbc1dd5e310d64568ull, 0xa6ab2e8651601e6bull, 0x175a1597aed71fd4ull, 0x318599cae13bc5c3ull, 0xdef1fb4265261b37ull, 0xd7880208e870ee0full }}, {{ 0x592a5adea85eb60eull, 0x82afd13f2dc13035ull, 0xe984d7ecd4673e4eull, 0xef3801eccc55b99eull, 0xb573d097f37d1027ull, 0x6b50145914694c9eull }}, {{ 0x7ba78cb293b31c88ull, 0x1ade2c77c98be215ull, 0x1f306f404c086f11ull, 0x5830133ffb594035ull, 0x168625ef82e2a18full, 0x3120cb7acc1cfe33ull }}, {{ 0xd48b7ef9c4ff1d54ull, 0x0cadbcaddf76d4d6ull, 0x37e45882f85456abull, 0x71e0c07fd17c8213ull, 0xe13d7b5b1cda4f99ull, 0xeb47f2cbf921edfeull }}, {{ 0x4d72f5c1b1f72546ull, 0x7ec95ecabaa45064ull, 0x2eeb751db34b62aeull, 0x72c784fe2edd14c0ull, 0xcc66d18f20871bfeull, 0x30cf7bf7bb534bf4ull }}, {{ 0x067d9990f3a774b8ull, 0xf3ddb3eb4a6b23ebull, 0xd532932900f1dad0ull, 0x7bcb31edd4a2cf81ull, 0xfc042f97454717f0ull, 0xe81ad7ad5140f78full }}, {{ 0x40e7ffa9848a8f32ull, 0x86a90730e82f672eull, 0x53f9bf9a09728c29ull, 0xd5eff34a4e5c1b12ull, 0xd829dbe8b4c6ef64ull, 0x110c6cc52c89ab9full }}, {{ 0x890ffc9f2d6997efull, 0x429a47e911da07ceull, 0x47c17c045e79799full, 0x5b5f80e70f990eb7ull, 0x71a297170fc559f0ull, 0xaa7c3fb3bd60b43eull }}, {{ 0x5a9fde37c61fef59ull, 0x9a06cf1ab2844e11ull, 0xcd8ed82bb0bec038ull, 0x91bb09069bfa9328ull, 0x7059e6e69db58363ull, 0xa8da7d0565c70a70ull }}, {{ 0x8a3eae2dbd3f5975ull, 0x0444170af92b0cadull, 0x079471b4e7738236ull, 0xb14e5a4217c9bf98ull, 0x63830502291721e3ull, 0x9888e235f9c66864ull }}, {{ 0x6672cdc964797e97ull, 0x2aa8e66dbbae7ec7ull, 0x4bcc71110a83161cull, 0xed0f8694ede17bf0ull, 0xe31e32159ae752e4ull, 0xf558d61bc1c013ebull }}, {{ 0x007c09ddecbef1e6ull, 0xaa99004954d0f3caull, 0xf5fc6aaa691edd19ull, 0x429b41d14aced762ull, 0xdf2df4d80d093cf1ull, 0x95785d159180c736ull }}, {{ 0x04d862ab3f7572fbull, 0xa9fa02dd502985e4ull, 0x9bdc2aa81b34a300ull, 0x9a10922cec1469ddull, 0xb7cb9070825c616cull, 0xd6b3a2d7af07c824ull }}, {{ 0x3073dab07a967dcdull, 0xa3c41ca5219f3ae8ull, 0x1699aa91100e5e06ull, 0x04a5b5c138cc22a8ull, 0x2df3a465179bce3eull, 0x63045c6cd64dd16full }}, {{ 0xe4868ae4c9e0ea06ull, 0x65a91e7350384d11ull, 0xe200a9aaa08fac42ull, 0x2e79198c37f95a90ull, 0xcb846bf2ec160e6cull, 0xde2b9c405f0a2e57ull }}, {{ 0xed416cefe2c9243full, 0xf89b3081223302b2ull, 0xd406a0aa459cba97ull, 0xd0baff7a2fbd89a8ull, 0xf32c377d38dc9039ull, 0xadb41a83b665cf6dull }}, {{ 0x448e415edbdb6a77ull, 0xb60fe50b55fe1afdull, 0x484246a6b81f49efull, 0x274dfac5dd676098ull, 0x7fba2ae4389da242ull, 0xc90909251ffa1a4bull }}, {{ 0xad8e8db4969228a3ull, 0x1c9ef2715bed0de4ull, 0xd296c2833138e35dull, 0x890bcbbaa609c5f2ull, 0xfd45acea36285695ull, 0xda5a5b733fc506f2ull }}, {{ 0xc791890de1b59661ull, 0x1e35786d97428aeeull, 0x39e3991fec38e1a3ull, 0x5a75f54a7c61bb7cull, 0xe4b8c1261d9361d7ull, 0x878792807db2457dull }}, {{ 0xcbaf5a8ad117dfceull, 0x2e16b447e8996d53ull, 0x42e3fb3f3a38d05full, 0x889b94e8dbd152daull, 0xef378b7d27c1d269ull, 0x4b4bb904e8f6b6eaull }}, {{ 0xf4d9896c2aeebe08ull, 0xcce30acf15fe4545ull, 0x9ce7d078463823b7ull, 0x5613d118962d3c86ull, 0x582b72e38d92381full, 0xf0f53a3119a3252dull }}, {{ 0x907f5e39ad536c4full, 0x00de6c16dbeeb4bbull, 0x210e24b2be31652eull, 0x5cc62af5ddc45d42ull, 0x71b27ce387b63139ull, 0x699445eb005f73c5ull }}, {{ 0xa4f9ae40c5423b17ull, 0x08b038e497530f53ull, 0x4a8d6efb6dedf3ccull, 0x9fbdad9aa9aba495ull, 0x70f8e0e34d1dec3dull, 0x1fcabb2e03ba85b6ull }}, {{ 0x71c0ce87b4964ee9ull, 0x56e238ede93e9944ull, 0xe98655d24b4b85f8ull, 0x3d68c80aa0b46dd4ull, 0x69b8c8e1032b3a68ull, 0x3deb4fcc25493920ull }}, {{ 0x7188114d0ddf151bull, 0x64d6394b1c71fcacull, 0x1f3f5a36f0f33bb3ull, 0x6617d06a470c4a51ull, 0x2137d8ca1fb04812ull, 0x6b311df974dc3b44ull }}, {{ 0x6f50ad028ab6d30dull, 0xf05e3cef1c73debcull, 0x3879862569805501ull, 0xfcee2426c67ae72bull, 0x4c2e77e53ce2d0b7ull, 0x2feb2bbe909a50a9ull }}, {{ 0x5926c2196b243e84ull, 0x63ae61571c86b35cull, 0x34bf3d761f035213ull, 0xe14d6983c0cd07b0ull, 0xf9d0aef460dc272full, 0xdf2fb571a607269cull }}, {{ 0x7b8394fe2f6a712bull, 0xe4cfcd671d43019bull, 0x0f78669d362134c1ull, 0xcd061f2588024ce2ull, 0xc226d58bc89987deull, 0xb7dd16707c478221ull }}, {{ 0xd323d1edda286badull, 0xf01e0607249e1012ull, 0x9ab402241d4c0f92ull, 0x023d3777501700d4ull, 0x95845775d5ff4eb4ull, 0x2ea2e064dacb1551ull }}, {{ 0x3f66334a859434c2ull, 0x612c3c476e2ca0bcull, 0x0b08156924f89bbdull, 0x16642aa920e6084eull, 0xd72b6a9a5bf91308ull, 0xd25cc3f08beed52full }}, {{ 0x79fe00e937ca0f90ull, 0xcbba5aca4dbe475aull, 0x6e50d61b71b61565ull, 0xdfe9aa9b48fc530cull, 0x67b22a0797babe50ull, 0x379fa765775453deull }}, {{ 0xc3ec091c2de49b9cull, 0xf5478be7096ec988ull, 0x4f285d12711cd5f9ull, 0xbf20aa10d9db3e7cull, 0x0cf5a44bed4b6f28ull, 0x2c3c89f6a94b46b0ull }}, {{ 0xa7385b19caee1416ull, 0x94cb77065e53df57ull, 0x1793a2b86b205bc3ull, 0x7746a4a8829070dbull, 0x81986af744f25797ull, 0xba5d63a29cf0c2e0ull }}, {{ 0x88338f01ed4cc8daull, 0xcff2a63faf46b96cull, 0xebc45b342f4395a3ull, 0xa8c26e9519a4688eull, 0x0ff42da8b1776beaull, 0x47a5e45a21679cc5ull }}, {{ 0x5203961344ffd885ull, 0x1f7a7e7cd8c33e3dull, 0x35ab9009d8a3d866ull, 0x979851d3006c1595ull, 0x9f89c896eeaa372aull, 0xcc7aeb854e0c1fb2ull }}, {{ 0x3423dcc0b1fe7532ull, 0x3ac8f0e077a06e65ull, 0x18b3a062766673fdull, 0xebf3323e0438d7d4ull, 0x3b61d5e552a627a9ull, 0xfccd33350c793cfaull }}, {{ 0x09669f86f3f093f8ull, 0x4bd968c4ac444ff4ull, 0xf70443d8a00087e4ull, 0x377ff66c2a386e48ull, 0x51d25af53a7d8ca3ull, 0xe00400127cbc61c6ull }}, {{ 0x5e023b458765c7adull, 0xf67e17aebaab1f88ull, 0xa62aa67640054eeaull, 0x2affa039a6344ed9ull, 0x32378d9448e77e60ull, 0xc02800b8df5bd1bfull }}, {{ 0xac1650b749f9ccc2ull, 0xa0ececd34aaf3b53ull, 0x7daa809e8035152dull, 0xadfc42407e0b1480ull, 0xf62b87cad90aefc1ull, 0x81900738b9963177ull }}, {{ 0xb8df2728e3c1ff91ull, 0x49414040ead85144ull, 0xe8a906310212d3c8ull, 0xcbda9684ec6ecd04ull, 0x9db34dec7a6d5d90ull, 0x0fa048373fddeeafull }}, {{ 0x38b78798e593fbaaull, 0xdc8c82892c732cafull, 0x169a3dea14bc45d2ull, 0xf689e1313c540231ull, 0x29010b3cc845a7a7ull, 0x9c42d2287eab52dcull }}, {{ 0x372b4bf8f7c7d4a2ull, 0x9d7d195bbc7fbed8ull, 0xe2066b24cf5aba3cull, 0xa162cbec5b4815eaull, 0x9a0a705fd2b88c8full, 0x1a9c3594f2b13c99ull }}, {{ 0x27b0f7b9adce4e50ull, 0x26e2fd955cfd7472ull, 0xd4402f70198b465eull, 0x4ddbf73b90d0db2cull, 0x046863be3b357d9cull, 0x0a1a17d17aec5e00ull }}, {{ 0x8ce9ad40ca0f0f1eull, 0x84dde7d5a1e68c75ull, 0x4a81da60ff70bfadull, 0x0a97a853a8288fc0ull, 0x2c13e56e5016e81bull, 0x6504ee2ecd3bac00ull }}, {{ 0x8120c487e496972eull, 0x30ab0e5853017c97ull, 0xe91287c9fa677cc7ull, 0x69ec934491959d82ull, 0xb8c6f64f20e5110eull, 0xf2314dd40454b801ull }}, {{ 0x0b47ad4eede1e7caull, 0xe6ae8f733e0eddebull, 0x1ab94de3c80adfc7ull, 0x233dc0adafd8271dull, 0x37c59f1748f2aa90ull, 0x75ed0a482b4f3011ull }}, {{ 0x70ccc5154ad30de0ull, 0x02d19a806c94ab2eull, 0x0b3d0ae5d06cbdcfull, 0x606986c8de718723ull, 0x2db836e8d97aa9a1ull, 0x9b4266d1b117e0acull }}, {{ 0x67ffb2d4ec3e8ac3ull, 0x1c3009043dceafd0ull, 0x70626cfa243f6a16ull, 0xc41f43d8b06f475eull, 0xc93225187ecaa04dull, 0x10980430eaeec6b9ull }}, {{ 0x0ffcfc513a716ba3ull, 0x19e05a2a6a12de24ull, 0x63d841c56a7a24ddull, 0xa938a676e458c9b0ull, 0xdbf572f4f3ea4309ull, 0xa5f029e92d53c341ull }}, {{ 0x9fe1db2c486e345aull, 0x02c385a824bcad68ull, 0xe67291b628c570a3ull, 0x9c3680a4eb77e0e3ull, 0x97967d9187269e60ull, 0x7b61a31bc545a092ull }}, {{ 0x3ed28fbad44e0b87ull, 0x1ba338916f5ec616ull, 0x0079b11d97b6665eull, 0x1a21067132aec8e7ull, 0xebe0e7af47822fc6ull, 0xd1d05f15b4b845b9ull }}, {{ 0x74399d4c4b0c7347ull, 0x146035ae59b3bcdeull, 0x04c0eb27ed1fffadull, 0x054a406bfad3d906ull, 0x36c90cd8cb15ddbdull, 0x3223b6d90f32b943ull }}, {{ 0x8a4024faee7c80c5ull, 0xcbc218cf810560b0ull, 0x2f892f8f433ffcc2ull, 0x34e68437cc467a3cull, 0x23da8077eedaa962ull, 0xf565247a97fb3ca0ull }}, {{ 0x668171cd50dd07b1ull, 0xf594f81b0a35c6e5ull, 0xdb5bdb98a07fdf9bull, 0x11012a2dfac0c659ull, 0x668904af548a9dd6ull, 0x95f36cc9efd05e41ull }}, {{ 0x010e720528a24ce9ull, 0x97d1b10e6619c4f6ull, 0x919693f644febc17ull, 0xaa0ba5cbcb87bf82ull, 0x015a2ed94d6a2a5cull, 0xdb823fe35e23ae8eull }}, {{ 0x0a90743396570115ull, 0xee30ea8ffd01b19cull, 0xafe1c79eb1f358ebull, 0xa47479f5f34d7b19ull, 0x0d85d47d0625a79eull, 0x93167ee1ad64d18cull }}, {{ 0x69a48a03df660ad5ull, 0x4de9299fe210f018ull, 0xded1cc32f3817937ull, 0x6c8cc39b8106cf00ull, 0x873a4ce23d788c32ull, 0xbee0f4d0c5f02f78ull }}, {{ 0x206d6426b9fc6c56ull, 0x0b1ba03ed4a960f4ull, 0xb431f9fd830ebc29ull, 0x3d7fa4130a441608ull, 0x484700d666b579f8ull, 0x74c99027bb61dab5ull }}, {{ 0x4445e98343dc3b5aull, 0x6f1442744e9dc989ull, 0x09f3c3e71e93599aull, 0x66fc68be66a8dc57ull, 0xd2c608600316c3b2ull, 0x8fdfa18d51d28b14ull }}, {{ 0xaabb1f20a69a5184ull, 0x56ca988b1229df5cull, 0x6385a70731c18008ull, 0x05dc177002989b66ull, 0x3bbc53c01ee3a4f8ull, 0x9ebc4f8532396ed0ull }}, {{ 0xab4f374682072f2cull, 0x63e9f56eb5a2b99eull, 0xe3388647f18f0053ull, 0x3a98ea6019f611ffull, 0x555b458134e471b0ull, 0x335b1b33f63e5422ull }}, {{ 0xb11828c11447d7b5ull, 0xe7239653185b4032ull, 0xe0353ecf6f960341ull, 0x49f927c1039cb3feull, 0x5590b70c10ec70e2ull, 0x018f10079e6f4957ull }}, {{ 0xeaf1978acace6d10ull, 0x0763df3ef39081faull, 0xc214741a5bdc2093ull, 0xe3bb8d8a241f07f4ull, 0x57a72678a93c68d6ull, 0x0f96a04c3058dd69ull }}, {{ 0x2d6feb6bec10429cull, 0x49e6b87583a513cdull, 0x94cc8907969945beull, 0xe553876569364f8full, 0x6c8780b69c5c1864ull, 0x9be242f9e378a61dull }}, {{ 0xc65f323738a29a14ull, 0xe30334972472c603ull, 0xcffd5a4be1fcb96eull, 0xf54349f61c1f1b9bull, 0x3d4b07221b98f3f0ull, 0x16d69dc2e2b67d26ull }}, {{ 0xbfb7f628365a04c9ull, 0xde200de76c7bbc25ull, 0x1fe586f6d3df3e54ull, 0x94a0e39d19371416ull, 0x64ee475513f98769ull, 0xe462299cdb20e37eull }}, {{ 0x7d2f9d921f842fd6ull, 0xad408b0a3cd55979ull, 0x3ef745a446b86f50ull, 0xce48e422fc26c8ddull, 0xf14ec952c7bf4a1full, 0xebd5a0208f48e2efull }}, {{ 0xe3dc27b53b29de5bull, 0xc4856e6660557ebeull, 0x75a8b86ac3345926ull, 0x0ed8e95dd983d8a4ull, 0x6d13dd3bcd78e53eull, 0x3658414598d8dd5full }}, {{ 0xe6998d144fa2af8aull, 0xad364fffc356f374ull, 0x9897342ba00b7b83ull, 0x94791daa7f26766cull, 0x42c6a45606b8f46cull, 0x1f728cb7f878a5baull }}, {{ 0x01ff82cb1c5adb60ull, 0xc41f1ffda1658291ull, 0xf5e809b44072d324ull, 0xccbb28a8f780a03dull, 0x9bc26b5c43398c3dull, 0x3a797f2fb4b67946ull }}, {{ 0x13fb1bef1b8c91bcull, 0xa9373fe84df719aaull, 0x9b10610a847c3f6full, 0xff4f9699ab06426bull, 0x1598319aa03f7a69ull, 0x48bef7dd0f20bcc2ull }}, {{ 0xc7cf1757137db15cull, 0x9c287f130ba700a4ull, 0x0ea3ca692cda7a5cull, 0xf91be200ae3e9834ull, 0xd7f1f00a427ac823ull, 0xd775aea297475f94ull }}, {{ 0xce16e966c2e8ed9cull, 0x1994f6be7486066full, 0x9265e81bc088c79eull, 0xbb16d406ce71f208ull, 0x6f73606698cbd167ull, 0x6a98d259e8c9bbd0ull }}, {{ 0x0ce51e039d194814ull, 0xffd1a3708d3c405eull, 0xb7fb11158557cc2cull, 0x4ee4484410737455ull, 0x5a81c401f7f62e0dull, 0x29f8378317e15624ull }}, {{ 0x80f32c2422fcd0c3ull, 0xfe306265845a83acull, 0x2fceaad7356df9c1ull, 0x14ead2a8a4828b59ull, 0x8911a813af9dcc85ull, 0xa3b22b1eeecd5d6bull }}, {{ 0x097fb9695de027a1ull, 0xede3d7f72b8924bdull, 0xde12ac68164bc193ull, 0xd12c3a966d19717bull, 0x5ab090c4dc29fd32ull, 0x64f5af355405a633ull }}, {{ 0x5efd3e1daac18c4cull, 0x4ae66fa7b35b6f62ull, 0xacbabc10def58fc7ull, 0x2bba49e042fe6ed6ull, 0x8ae5a7b099a3e3fcull, 0xf198d81548387e01ull }}, {{ 0xb5e46d28ab8f7afdull, 0xed005c8d019259d7ull, 0xbf4b58a8b5979dc8ull, 0xb546e2c29df05462ull, 0x6cf88ce60066e7d9ull, 0x6ff870d4d234ec0full }}, {{ 0x1aec4396b39acddeull, 0x42039d820fb7826dull, 0x78f1769717ec29d9ull, 0x14c4db9a2b634bdbull, 0x41b580fc04050e81ull, 0x5fb468503611389aull }}, {{ 0x0d3aa3e3040c0ab1ull, 0x942427149d2b1843ull, 0xb96ea1e6ef39a27cull, 0xcfb09405b1e0f692ull, 0x911709d82832910aull, 0xbd0c13221cac3606ull }}, {{ 0x844a66de28786ae8ull, 0xc96986ce23aef29eull, 0x3e525305584058ddull, 0x1ce5c838f2c9a1bbull, 0xaae6627191f9aa6cull, 0x6278bf551eba1c41ull }}, {{ 0x2ae804ad94b42d0eull, 0xde1f440d64d57a31ull, 0x6f373e35728378a9ull, 0x20f9d2397be05150ull, 0xacffd86fb3c0a839ull, 0xd8b7795333451a90ull }}, {{ 0xad102ec7cf09c28eull, 0xad38a885f056c5ebull, 0x58286e167922b6a2ull, 0x49c2363ed6c32d24ull, 0xc1fe745d0586923bull, 0x772abd4000b309a6ull }}, {{ 0xc2a1d3ce16619988ull, 0xc436953b6363bb34ull, 0x71944ce0bb5b225aull, 0xe1961e74639fc36bull, 0x93f08ba23741b650ull, 0xa7ab648006fe6083ull }}, {{ 0x9a52460cdfcfff52ull, 0xaa21d451e1e5500full, 0x6fcb00c7518f578bull, 0xcfdd308be43da232ull, 0xc765745628911f28ull, 0x8cb1ed0045efc523ull }}, {{ 0x0736bc80be1ff937ull, 0xa5524b32d2f5209cull, 0x5dee07c92f996b74ull, 0x1ea3e576ea6855f8ull, 0xc9f68b5d95ab3798ull, 0x7ef34202bb5db365ull }}, {{ 0x48235d076d3fbc22ull, 0x7536effc3d934618ull, 0xab4c4ddbdbfe328eull, 0x3266f6a528135bb3ull, 0xe3a171a7d8b02bf1ull, 0xf580941b51a901f9ull }}, {{ 0xd161a24a447d5958ull, 0x94255fda67c0bcf2ull, 0xb0fb0a9697edf990ull, 0xf805a27390c19504ull, 0xe44e708e76e1b76bull, 0x9705c911309a13c2ull }}, {{ 0x2dd056e6ace57d72ull, 0xc975be880d87617cull, 0xe9ce69e1ef4bbfa5ull, 0xb0385883a78fd22eull, 0xeb106590a4d12a37ull, 0xe639daabe604c59cull }}, {{ 0xca236502c0f6e675ull, 0xde9971508749ced9ull, 0x221022d358f57c79ull, 0xe23375248b9e35d5ull, 0x2ea3f7a6702ba62cull, 0xfe428ab6fc2fb821ull }}, {{ 0xe561f21b89a50095ull, 0xb1fe6d2548e21481ull, 0x54a15c417996dcc2ull, 0xd602936d742e1a53ull, 0xd267ac8061b47dc0ull, 0xee996b25d9dd314bull }}, {{ 0xf5d37513607205d1ull, 0xf3f04374d8d4cd12ull, 0x4e4d9a8ebfe49f9aull, 0x5c19c24689cd0741ull, 0x380cbd03d10ce988ull, 0x51fe2f7a82a3ecf6ull }}, {{ 0x9a4292c1c4743a27ull, 0x8762a290785002bdull, 0x0f0809937eee3c0dull, 0x990196c16202488dull, 0x307f62262a811f53ull, 0x33eddac91a67419eull }}, {{ 0x0699bb91ac8a4581ull, 0x49da59a4b3201b68ull, 0x96505fc2f54e5887ull, 0xfa0fe38dd416d582ull, 0xe4f9d57da90b3943ull, 0x074a8bdb0808902dull }}, {{ 0x420153b0bd66b70cull, 0xe287806eff411210ull, 0xdf23bd9d950f7548ull, 0xc49ee38a48e45719ull, 0xf1c256e89a703ca7ull, 0x48e9768e5055a1caull }}, {{ 0x940d44e76603267cull, 0xd94b0455f88ab4a2ull, 0xb7656827d29a94d8ull, 0xae34e366d8eb6702ull, 0x7197651608625e8dull, 0xd91ea18f235851edull }}, {{ 0xc884b109fc1f80d4ull, 0x7cee2b5bb56b0e59ull, 0x29f6118e3a09d078ull, 0xce10e2047932061bull, 0x6fe9f2dc53d7b188ull, 0x7b324f9761733346ull }}, {{ 0xd52eea63d93b0844ull, 0xe14db195162e8f81ull, 0xa39caf8e446224b4ull, 0x0ca8d42cbbf43d0full, 0x5f237c9b466cef58ull, 0xcff71be9ce8000c0ull }}, {{ 0x53d527e67c4e52acull, 0xcd08efd2ddd19b12ull, 0x641edb8eabd56f10ull, 0x7e9849bf578a629cull, 0xb762de10c0415970ull, 0x1fa7172211000783ull }}, {{ 0x46538f00db0f3ab8ull, 0x02595e3caa300eb7ull, 0xe9349392b65656a8ull, 0xf1f2e1796b67da1bull, 0x29dcaca7828d7e64ull, 0x3c86e754aa004b25ull }}, {{ 0xbf4396088e984b35ull, 0x177dae5ea5e09328ull, 0x1c0dc3bb1f5f6290ull, 0x737ccebe320e8517ull, 0xa29ebe8b1986eff1ull, 0x5d45094ea402ef73ull }}, {{ 0x78a3dc5591f2f010ull, 0xeae8cfb27ac5bf97ull, 0x1889a54f39b9d9a0ull, 0x82e0136df49132e7ull, 0x5a33716eff455f6eull, 0xa4b25d12681d5a84ull }}, {{ 0xb6669b57b37d60a2ull, 0x2d181cf8cbb97beaull, 0xf560751841428049ull, 0x1cc0c24b8dabfd06ull, 0x86026e55f8b5ba51ull, 0x6ef7a2b81125892bull }}, {{ 0x2002116d02e5c656ull, 0xc2f121b7f53ed72bull, 0x95c492f28c9902dbull, 0x1f8796f388b7e245ull, 0x3c184f5bb719472bull, 0x55ac5b30ab775bb3ull }}, {{ 0x4014ae421cf9bf5full, 0x9d6b512f947467afull, 0xd9adbd797dfa1c95ull, 0x3b4be583572ed6b7ull, 0x58f3199526fcc7afull, 0x58bb8fe6b2a99500ull }}, {{ 0x80cece9521c179b8ull, 0x26312bdbcc8c0cd8ull, 0x80c966beebc51dd8ull, 0x50f6f72167d4632eull, 0x797effd385dfccd8ull, 0x77539f02fa9fd203ull }}, {{ 0x081411d3518ec12dull, 0x7debb695fd788075ull, 0x07de037535b32a71ull, 0x29a5a74e0e4bdfd1ull, 0xbef5fe433abe0073ull, 0xa944361dca3e3422ull }}, {{ 0x50c8b2412f938bc4ull, 0xeb3521dbe6b50492ull, 0x4eac229418ffa86eull, 0xa078890c8ef6be2aull, 0x759beea04b6c047full, 0x9caa1d29e66e095bull }}, {{ 0x27d6f68bdbc375a9ull, 0x3013529703122db7ull, 0x12b959c8f9fc9455ull, 0x44b55a7d95a36da7ull, 0x98175242f2382cfcull, 0x1ea523a3004c5d92ull }}, {{ 0x8e65a17695a29897ull, 0xe0c139e61eb5c927ull, 0xbb3d81d9c3ddcb53ull, 0xaf1588e7d8624886ull, 0xf0e9369d7631c1daull, 0x3273645e02fba7b9ull }}, {{ 0x8ff84ea1d859f5e3ull, 0xc78c42fd3319db8bull, 0x50671281a6a9f146ull, 0xd6d7590e73d6d543ull, 0x691c22269df1928aull, 0xf881ebac1dd48d43ull }}, {{ 0x9fb3125273839ae1ull, 0xcb7a9de3ff029373ull, 0x2406b91082a36cc3ull, 0x64697a90866454a1ull, 0x1b1955822b6fb96cull, 0xb51334b92a4d84a2ull }}, {{ 0x3cfeb73883240cc9ull, 0xf2ca2ae7f619c284ull, 0x68433aa51a623fa5ull, 0xec1ec9a53feb4e4bull, 0x0efd5715b25d3e3bull, 0x12c00f3ba7072e55ull }}, {{ 0x61f328351f687fd9ull, 0x7be5ad0f9d01992aull, 0x12a04a7307d67c7bull, 0x3933e0747f310ef2ull, 0x95e566d8f7a46e57ull, 0xbb8098548647cf52ull }}, {{ 0xd37f92133a14fe7dull, 0xd6f8c29c220ffba7ull, 0xba42e87e4e60dcd2ull, 0x3c06c48cf7ea9574ull, 0xdaf60479ac6c4f68ull, 0x5305f34d3ece1939ull }}, {{ 0x42fbb4c044d1f0dfull, 0x65b79a19549fd48eull, 0x469d14ef0fc8a03cull, 0x5843ad81af29d68full, 0x8d9c2cc0bc3b1a12ull, 0x3e3b8104740cfc42ull }}, {{ 0x9dd50f82b03368b5ull, 0xf92c04fd4e3e4d8eull, 0xc222d1569dd6425bull, 0x72a4c710d7a26198ull, 0x8819bf875a4f04b7ull, 0x6e530a2c8881da99ull }}, {{ 0x2a529b1ae2021712ull, 0xbbb831e50e6f0792ull, 0x955c2d622a5e9797ull, 0x7a6fc6a86c57cff7ull, 0x51017b4987162f2aull, 0x4f3e65bd551289ffull }}, {{ 0xa73a0f0cd414e6b5ull, 0x5531f2f290564bb5ull, 0xd599c5d5a7b1ebedull, 0xc85dc2943b6e1fabull, 0x2a0ed0df46ddd7a8ull, 0x186ff96552b963f9ull }}, {{ 0x8844968048d10314ull, 0x53f37d79a35ef518ull, 0x5801ba588cf33745ull, 0xd3a999ca524d3cb6ull, 0xa49428b8c4aa6c97ull, 0xf45fbdf53b3de7bbull }}, {{ 0x52ade102d82a1ecbull, 0x4782e6c061b592f5ull, 0x70114775818028b5ull, 0x44a001e737045f1full, 0x6dc99737aea83deeull, 0x8bbd6b94506b0d54ull }}, {{ 0x3acaca1c71a533e9ull, 0xcb1d0383d117bd95ull, 0x60acca970f019714ull, 0xae401308262bb73aull, 0x49dfe82cd2926b4eull, 0x756633cb242e854cull }}, {{ 0x4bebe51c7074071bull, 0xef2223262aed67d4ull, 0xc6bfe9e6960fe6cfull, 0xce80be517db52847ull, 0xe2bf11c039b83112ull, 0x95fe05ef69d134faull }}, {{ 0xf736f31c6488470cull, 0x57555f7dad460e4aull, 0xc37f2301dc9f041full, 0x11076f2ee91392cdull, 0xdb76b1824131eabcull, 0xdbec3b5a222c11ccull }}, {{ 0xa8257f1bed52c675ull, 0x6955bae8c4bc8eedull, 0xa2f75e129e362939ull, 0xaa4a57d51ac3bc09ull, 0x92a2ef168bf32b58ull, 0x973a518555b8b200ull }}, {{ 0x9176f717453bc08dull, 0x1d594d17af5d9548ull, 0x5da9acba2e1d9c3eull, 0xa6e76e530ba55860ull, 0xba5d56e1777fb176ull, 0xe8472f355936f405ull }}, {{ 0xaea5a6e8b4558583ull, 0x257d02ecd9a7d4d5ull, 0xa8a0bf45cd281a6dull, 0x850a4f3e747573c3ull, 0x47a564ceaafceea2ull, 0x12c7d8157c258839ull }}, {{ 0xd27885170b573721ull, 0x76e21d40808e5058ull, 0x964778ba03910843ull, 0x326718708c9685a4ull, 0xcc75f012ade15259ull, 0xbbce70d6d977523cull }}, {{ 0x38b532e67168274dull, 0xa4d52485058f2378ull, 0xdecab74423aa52a2ull, 0xf806f4657de1386dull, 0xfc9b60bacacd377bull, 0x561068647ea9365full }}, {{ 0x3713fd006e1188feull, 0x70536d32379762b2ull, 0xb3eb28a964a73a5aull, 0xb0458bf6eacc344aull, 0xde11c74bec042ad7ull, 0x5ca413ecf29c1fbfull }}, {{ 0x26c7e2044caf59ecull, 0x634243f62be9daf6ull, 0x072f969dee884788ull, 0xe2b777a52bfa0aebull, 0xacb1c8f73829ac6cull, 0x9e68c7417a193d7eull }}, {{ 0x83ced42afed98334ull, 0xe096a79db7228d9dull, 0x47dbe22b5152cb53ull, 0xdb2aac73b7c46d2eull, 0xbef1d9a831a0bc40ull, 0x3017c88ec4fc66f2ull }}, {{ 0x261449adf47f2006ull, 0xc5e28c2927598827ull, 0xce96d5b12d3bf146ull, 0x8faabc852dac43ceull, 0x75728091f0475a88ull, 0xe0edd593b1dc057bull }}, {{ 0x7ccae0cb8cf7403full, 0xbad9799b897f5187ull, 0x11e458ebc4576cc3ull, 0x9cab5d33c8baa614ull, 0x967905b362c98955ull, 0xc94a57c4f29836d2ull }}, {{ 0xdfecc7f381a88273ull, 0x4c7ec0135ef92f4aull, 0xb2eb7935ab6a3fa5ull, 0x1eb1a405d74a7cc8ull, 0xe0ba3901dbdf5d58ull, 0xdce76db179f22439ull }}, {{ 0xbf3fcf831095187full, 0xfcf380c1b5bbd8ecull, 0xfd32bc18b2267c74ull, 0x32f0683a68e8dfd6ull, 0xc7463a1296b9a571ull, 0xa10a48eec3756a42ull }}, {{ 0x787e1b1ea5d2f4f5ull, 0xe18307911956793full, 0xe3fb58f6f580dc91ull, 0xfd6412481918be65ull, 0xc8be44b9e340766bull, 0x4a66d953a296269bull }}, {{ 0xb4ed0f327a3d9195ull, 0xcf1e4baafd60bc7aull, 0xe7d179a597089db2ull, 0xe5e8b6d0faf76ffaull, 0xd76eaf42e084a037ull, 0xe8047d4459dd8215ull }}, {{ 0x114297f8c667afcfull, 0x172ef4ade5c75ccbull, 0x0e2ec077e65628fcull, 0xfb172429cdaa5fcdull, 0x6a52d89cc52e422eull, 0x102ce4ab82a714daull }}, {{ 0xac99efb7c00cde17ull, 0xe7d58ecaf9c99feeull, 0x8dd384aeff5d99d8ull, 0xcee769a208a7be02ull, 0x273c761fb3ce95d5ull, 0xa1c0eeb31a86d088ull }}, {{ 0xbe035d2d8080ace9ull, 0x0e5793edc1e03f52ull, 0x8a432ed5f9a80279ull, 0x150a2054568d6c19ull, 0x885c9d3d0611da5aull, 0x518952ff09442551ull }}, {{ 0x6c21a3c70506c11aull, 0x8f6bc74992c2793bull, 0x669fd45bc09018baull, 0xd265434b618638ffull, 0x539e24623cb28784ull, 0x2f5d3df65ca9752full }}, {{ 0x395065c632438b02ull, 0x9a35c8dfbb98bc52ull, 0x023e4b9585a0f749ull, 0x37f4a0f1cf3e39faull, 0x442d6bd65ef94b30ull, 0xd9a46b9f9e9e93d9ull }}, {{ 0x3d23f9bdf6a36e14ull, 0x0619d8bd53f75b36ull, 0x166ef3d73849a8e0ull, 0x2f8e4972186e43c4ull, 0xa9c6365fb5bcefe2ull, 0x806c343c3231c67cull }}, {{ 0x6367c16ba2624ccbull, 0x3d02776547a9901eull, 0xe055866832e098c0ull, 0xdb8ede74f44ea5a8ull, 0xa1be1fbd19615ed5ull, 0x043a0a59f5f1c0deull }}, {{ 0xe20d8e3457d6fff1ull, 0x6218a9f4cc9fa12full, 0xc3574011fcc5f782ull, 0x9394b0918b127898ull, 0x516d3d62fdcdb45aull, 0x2a4467839b7188b2ull }}, {{ 0xd4878e0b6e65ff6cull, 0xd4f6a38ffe3c4bdeull, 0xa16880b3dfbbab17ull, 0xc3cee5af6eb8b5f7ull, 0x2e4465ddea090b89ull, 0xa6ac0b24126f56f7ull }}, {{ 0x4d4b8c724ffbfa39ull, 0x51a2639fee5af6b4ull, 0x4e150706bd54aeeeull, 0xa614f8da53371bacull, 0xceabfaab245a7361ull, 0x82b86f68b85965a7ull }}, {{ 0x04f37c771fd7c63full, 0x3057e43f4f8da30bull, 0x0cd24643654ed54full, 0x7cd1b887402714bbull, 0x12b7caaf6b8881d0ull, 0x1b345a17337df88eull }}, {{ 0x3182dca73e6dbe74ull, 0xe36eea791b885e6eull, 0x8036bea1f5145517ull, 0xe03135488186cf4eull, 0xbb2deada33551224ull, 0x100b84e802ebb58cull }}, {{ 0xef1c9e8870497083ull, 0xe25528bb1353b04dull, 0x0223725392cb52eeull, 0xc1ec14d50f441911ull, 0x4fcb2c860152b570ull, 0xa07331101d35177full }}, {{ 0x571e315462de651eull, 0xd753974ec144e30bull, 0x15627743bbf13d54ull, 0x9338d05298a8faaaull, 0x1defbd3c0d3b1667ull, 0x447feaa12412eaf9ull }}, {{ 0x672ded4bdcaff32dull, 0x6943e9138cb0de71ull, 0xd5d8a8a5576c6550ull, 0xc0382339f699caa4ull, 0x2b5d6458844ee00bull, 0xacff2a4b68bd2dbbull }}, {{ 0x07cb44f69edf7fc3ull, 0x1ca71ac37ee8b06eull, 0x5a7696756a3bf524ull, 0x82316043a201ea70ull, 0xb1a5eb752b14c075ull, 0xc1f7a6f21763c94full }}, {{ 0x4df0b1a234bafd9eull, 0x1e870ba2f516e44cull, 0x88a1e09626579369ull, 0x15edc2a454132863ull, 0xf07b3293aecf8497ull, 0x93ac8574e9e5dd1cull }}, {{ 0x0b66f0560f4de82eull, 0x3146745d92e4eafbull, 0x5652c5dd7f6bc21bull, 0xdb499a6b48bf93e3ull, 0x64cff9c4d41b2de6ull, 0xc4bd369122faa321ull }}, {{ 0x7205635c990b11c8ull, 0xecc08ba7bcf12dceull, 0x5f3bbaa6fa35950full, 0x90e00830d77bc6e1ull, 0xf01fc1b0490fcb04ull, 0xaf6421ab5dca5f4dull }}, {{ 0x7435e19dfa6eb1d0ull, 0x3f85748d616bca10ull, 0xb8554a85c617d29full, 0xa8c051e86ad5c4cdull, 0x613d90e2da9dee2dull, 0xd9e950b1a9e7b90bull }}, {{ 0x8a1ad02bc852f225ull, 0x7b368d85ce35e4a4ull, 0x3354e939bcee3a38ull, 0x978333142c59b009ull, 0xcc67a8dc8a2b4dc8ull, 0x831d26f0a30d3a71ull }}, {{ 0x650c21b5d33d756full, 0xd021873a0e1aee6dull, 0x01511c41614e4634ull, 0xeb1ffec9bb80e05cull, 0xfc0c989d65b109d5ull, 0x1f2385665e844871ull }}, {{ 0xf279511a4066965bull, 0x214f48448d0d5045ull, 0x0d2b1a8dcd0ebe10ull, 0x2f3ff3e15308c398ull, 0xd87df625f8ea625bull, 0x376335ffb12ad473ull }}, {{ 0x78bd2b068401df8aull, 0x4d18d2ad828522bbull, 0x83af098a02936ca1ull, 0xd87f86cd3e57a3f0ull, 0x74eb9d7bb927d78full, 0x29e01bfcebac4c86ull }}, {{ 0xb763ae412812bb63ull, 0x02f83ac719335b52ull, 0x24d65f6419c23e4dull, 0x74fb44046f6c6765ull, 0x913426d53b8e6b9eull, 0xa2c117e134bafd40ull }}, {{ 0x29e4ce8b90bb51e2ull, 0x1db24bc6fc01913bull, 0x705fb9e901966f02ull, 0x91d0a82c5a3c09f3ull, 0xac09845453903430ull, 0x5b8aeecc0f4de485ull }}, {{ 0xa2f01173a75132d4ull, 0x28f6f5c5d80fac4full, 0x63bd431a0fe05615ull, 0xb22691bb86586382ull, 0xb85f2b4b43a209e5ull, 0x936d53f8990aed38ull }}, {{ 0x5d60ae84892bfc48ull, 0x99a599ba709cbb1cull, 0xe5649f049ec35cd3ull, 0xf581b1533f73e317ull, 0x33b7b0f0a45462f8ull, 0xc24547b5fa6d4437ull }}, {{ 0xa5c6d12d5bb7daccull, 0x00780148661f4f1bull, 0xf5ee362e33a1a044ull, 0x9710ed407a86deeeull, 0x052ce9666b4bddb9ull, 0x96b4cd1bc844aa28ull }}, {{ 0x79c42bc5952e8bf9ull, 0x04b00cd3fd391714ull, 0x9b4e1dce045042a8ull, 0xe6a94484c944b555ull, 0x33c11e0030f6a93full, 0xe3100315d2aea590ull }}, {{ 0xc1a9b5b7d3d177bcull, 0x2ee08047e43ae6ccull, 0x110d2a0c2b229a90ull, 0x029cad2fdcaf1558ull, 0x058b2c01e9a29c7full, 0xdea01eda3ad277a2ull }}, {{ 0x90a1192e462ead53ull, 0xd4c502ceea4d03ffull, 0xaa83a479af5a09a1ull, 0x1a1ec3de9ed6d570ull, 0x376fb813205a1cf6ull, 0xb24134864c38ac54ull }}, {{ 0xa64afbcebdd2c542ull, 0x4fb21c15270227fbull, 0xa9246cc0d9846052ull, 0x0533a6b234645666ull, 0x2a5d30bf4385219dull, 0xf68c0d3efa36bb4aull }}, {{ 0x7eedd6136a3bb497ull, 0x1cf518d386158fd4ull, 0x9b6c3f887f2bc337ull, 0x340482f60beb6002ull, 0xa7a3e778a3335022ull, 0xa1788475c62350e5ull }}, {{ 0xf54a5cc226550de4ull, 0x2192f8433cd79e4cull, 0x123a7b54f7b5a027ull, 0x082d1d9c7731c01aull, 0x8c670ab660012156ull, 0x4eb52c99bd6128f8ull }}, {{ 0x94e79f957f528aecull, 0x4fbdb2a0606c2f01ull, 0xb648d151ad184187ull, 0x51c3281ca7f18104ull, 0x7c066b1fc00b4d5cull, 0x1313be0165cb99b5ull }}, {{ 0xd10c3bd6f9396d3bull, 0x1d68fa43c439d60full, 0x1ed82d30c2f28f49ull, 0x319f911e8f6f0a2full, 0xd8402f3d8071059bull, 0xbec56c0df9f40116ull }}, {{ 0x2a7a5665bc3e4452ull, 0x2619c6a5aa425c9eull, 0x3471c3e79d7998dbull, 0xf03bab319a5665d7ull, 0x7281d867046a380full, 0x73b6388bc3880ae4ull }}, {{ 0xa8c75ff95a6eab37ull, 0x7d01c278a6979e2dull, 0x0c71a70c26bff88full, 0x6254aff0075ffa68ull, 0x791274062c26309full, 0x851e3575a3506cecull }}, {{ 0x97c9bfbd8852b026ull, 0xe21198b681ec2dc8ull, 0x7c708679837fb59aull, 0xd74edf6049bfc810ull, 0xbab8883db97de639ull, 0x332e16986124413cull }}, {{ 0xede17d67533ae17dull, 0xd4aff7211339c9d5ull, 0xdc6540bf22fd180cull, 0x6914b9c2e17dd0a4ull, 0x4b3552693eeafe42ull, 0xffcce1f3cb6a8c5full }}, {{ 0x4acee609404ccee4ull, 0x4edfa74ac041e25bull, 0x9bf487775de2f080ull, 0x1acf419cceea2670ull, 0xf015381c752dee98ull, 0xfe00d385f2297bb8ull }}, {{ 0xec14fc5c830014e6ull, 0x14bc88eb8292d790ull, 0x178d4aa9aadd6503ull, 0x0c18902015258066ull, 0x60d4311c93cb51f1ull, 0xec08433b759ed539ull }}, {{ 0x38d1db9d1e00d0fdull, 0xcf5d593319bc6ba9ull, 0xeb84eaa0aca5f21eull, 0x78f5a140d37703fcull, 0xc849eb1dc5f1336aull, 0x3852a0529834543dull }}, {{ 0x383294232c0829e4ull, 0x19a57bff015c349cull, 0x33312a46be7b7534ull, 0xb9984c8842a627e1ull, 0xd2e32f29bb6c0228ull, 0x333a4339f20b4a69ull }}, {{ 0x31f9c95fb851a2e5ull, 0x0076d7f60d9a0e1aull, 0xffeba6c370d29409ull, 0x3ff2fd529a7d8ecbull, 0x3cdfd7a152381597ull, 0x0046a0437470e822ull }}, {{ 0xf3c1ddbd33305cf2ull, 0x04a46f9c88048d05ull, 0xff3483a26839c85aull, 0x7f7de53a08e793f7ull, 0x60be6c4d3630d7e8ull, 0x02c242a28c691156ull }}, {{ 0x8592a963ffe3a175ull, 0x2e6c5c1d502d823bull, 0xf80d24581241d384ull, 0xfaeaf444590bc7afull, 0xc7703b041de86f14ull, 0x1b969a597c1aad5full }}, {{ 0x37ba9de7fee44e8eull, 0xd03b992521c71653ull, 0xb0836b70b6924329ull, 0xcd2d8aab7a75ccdfull, 0xca624e292b1456d1ull, 0x13e2077ed90ac5bdull }}, {{ 0x2d4a2b0ff4eb118aull, 0x2253fb7351c6df40ull, 0xe522326721b69fa2ull, 0x03c76ab2c89a00bcull, 0xe7d70d9baecb6432ull, 0xc6d44af47a6bb969ull }}, {{ 0xc4e5ae9f912eaf63ull, 0x5747d28131c4b881ull, 0xf355f80751223c55ull, 0x25ca2afbd6040760ull, 0x0e668814d3f1e9f4ull, 0xc44aed8cc8353e23ull }}, {{ 0xb0f8d23babd2d9e1ull, 0x68ce390bf1af3511ull, 0x815bb0492b565b55ull, 0x79e5add65c2849c9ull, 0x900150d047732389ull, 0xaaed477fd2146d5eull }}, {{ 0xe9b83654b63c82c7ull, 0x180e3a7770d812b0ull, 0x0d94e2dbb15f9156ull, 0xc2f8ca5f9992e1dfull, 0xa00d2822ca7f635eull, 0xad44cafe34cc45b1ull }}, {{ 0x21321f4f1e5d1bc1ull, 0xf08e48aa6870bae9ull, 0x87d0dc94edbbad5cull, 0x9db7e7bbffbcd2b6ull, 0x4083915be8f9e1b3ull, 0xc4afedee0ffab8f0ull }}, {{ 0x4bf539172fa3158dull, 0x658ed6a814674d1bull, 0x4e289dd14954c5a1ull, 0x292f0d57fd603b21ull, 0x8523ad9719c2d104ull, 0xaedf4b4c9fcb3962ull }}, {{ 0xf7943ae7dc5ed77eull, 0xf7946290cc090310ull, 0x0d962a2cdd4fb84dull, 0x9bd6856fe5c24f4dull, 0x3364c7e7019c2a29ull, 0xd4b8f0fe3df03dd9ull }}, {{ 0xabca4d0e9bb46af0ull, 0xabcbd9a7f85a1ea9ull, 0x87dda5c0a51d330bull, 0x1661365ef9971902ull, 0x01efcf061019a5a0ull, 0x4f3969ee6b626a7cull }}, {{ 0xb5e70292150c2d64ull, 0xb5f6808fb38532a0ull, 0x4ea879867323fe74ull, 0xdfcc1fb5bfe6fa19ull, 0x135e163ca1007840ull, 0x183e235031d828d8ull }}, {{ 0x1b0619b4d279c5e7ull, 0x1ba1059d0333fa47ull, 0x1294bf407f67f08full, 0xbdf93d197f05c4fdull, 0xc1acde5e4a04b288ull, 0xf26d6121f2719870ull }}, {{ 0x0e3d011038c1bb08ull, 0x144a38222007c6c7ull, 0xb9cf7884fa0f6597ull, 0x6bbc62fef639b1e2ull, 0x90c0afaee42ef957ull, 0x7845cb53786ff467ull }}, {{ 0x8e620aa237914e4full, 0xcae63155404dc3c6ull, 0x421ab531c499f7e6ull, 0x355bddf59e40f2dbull, 0xa786dcd4e9d5bd6aull, 0xb2b9f142b45f8c0bull }}, {{ 0x8fd46a562bad0f13ull, 0xecfded548309a5c1ull, 0x950b13f1ae03af03ull, 0x1596ab982e897c90ull, 0x8b44a05122596626ull, 0xfb436c9b0bbb7874ull }}, {{ 0x9e4c275db4c296c0ull, 0x41eb454d1e60798full, 0xd26ec770cc24d627ull, 0xd7e2b3f1d15edda5ull, 0x70ae432b577dfd7cull, 0xd0a23e0e7552b48dull }}, {{ 0x2ef989a90f99e37dull, 0x9330b5032fc4bf9cull, 0x3853ca67f9705d88ull, 0x6edb07722db4a87aull, 0x66ce9fb16aebe6e0ull, 0x26566c90953b0d86ull }}, {{ 0xd5bf609a9c02e2e0ull, 0xbfe7121fddaf7c19ull, 0x3345e80fbe63a755ull, 0x548e4a75c90e94c6ull, 0x04123cee2d3704c4ull, 0x7f603da5d44e8740ull }}, {{ 0x5979c60a181cdcc0ull, 0x7f06b53ea8dad902ull, 0x00bb109d6fe48959ull, 0x4d8ee899da91cfbeull, 0x28b6614dc4262fabull, 0xf9c2687a4b114880ull }}, {{ 0x7ec1bc64f1209f81ull, 0xf6431472988c7a17ull, 0x074ea6265eed5d7eull, 0x0795160289b21d6cull, 0x971fcd09a97ddcb1ull, 0xc19814c6eeacd501ull }}, {{ 0xf3915bf16b463b0eull, 0x9e9ecc79f57cc4eaull, 0x49127d7fb545a6f5ull, 0x4bd2dc1960f52638ull, 0xe73e02609eea9eeaull, 0x8ff0cfc552c0520full }}, {{ 0x83ad976e30be4e8dull, 0x3233fcc396dfb12dull, 0xdab8e6fd14b88598ull, 0xf63c98fdc9937e32ull, 0x086c17c6352a3526ull, 0x9f681db53b83349full }}, {{ 0x24c7ea4de76f117full, 0xf607dfa3e4bcebc7ull, 0x8b3905e2cf3537f1ull, 0x9e5df9e9dfc2edfcull, 0x5438edbe13a61385ull, 0x3a11291453200e36ull }}, {{ 0x6fcf270b0a56aef7ull, 0x9c4ebc66ef6135c7ull, 0x703a3adc18142f73ull, 0x2fabc322bd9d4bddull, 0x4a39496cc47cc338ull, 0x44ab9acb3f408e1full }}, {{ 0x5e17866e6762d5a7ull, 0x1b135c0559cc19caull, 0x62464c98f0c9da84ull, 0xdcb59f5b6824f6a6ull, 0xe63cde3facdfa031ull, 0xaeb40bf078858d38ull }}, {{ 0xaceb405009dc5882ull, 0x0ec1983581f901e7ull, 0xd6befdf967e28929ull, 0x9f1839921171a27full, 0xfe60ae7cc0bc41f2ull, 0xd3087764b5378438ull }}, {{ 0xc1308320629b7518ull, 0x938ff21713ba130cull, 0x6375ebbe0ed95b9aull, 0x36f23fb4ae7058feull, 0xefc6d0df875a937aull, 0x3e54a9ef142b2a39ull }}, {{ 0x8be51f43da1292efull, 0xc39f74e6c544be7full, 0xe29b356c947d9409ull, 0x25767d0ed06379efull, 0x5dc428bb4989c2c6ull, 0x6f4ea356c9afa643ull }}, {{ 0x76f338a684b9bd56ull, 0xa43a9103b4af70fbull, 0xda10163dcce7c861ull, 0x76a0e29423e2c35eull, 0xa9a99750df619bbdull, 0x59126163e0dc7ea1ull }}, {{ 0xa58036812f41655bull, 0x6a49aa250eda69d2ull, 0x84a0de6a010dd3d0ull, 0xa248d9c966dba1b4ull, 0xa09fe928b9d01566ull, 0x7ab7cde6c89cf250ull }}, {{ 0x7702210bd88df58eull, 0x26e0a5729488223aull, 0x2e48b0240a8a4624ull, 0x56d881de0494510dull, 0x463f1b974220d602ull, 0xcb2e0b03d6217726ull }}, {{ 0xa6154a76758b9790ull, 0x84c67679cd515648ull, 0xced6e1686966bd69ull, 0x647512ac2dcb2a83ull, 0xbe7713e895485c17ull, 0xefcc6e265d4ea77eull }}, {{ 0x7cd4e8a09773eb9dull, 0x2fc0a0c2052d5ed6ull, 0x1464ce141e03661full, 0xec92bab9c9efa926ull, 0x70a6c715d4d398e9ull, 0x5dfc4d7fa5128af3ull }}, {{ 0xe0511645ea873421ull, 0xdd86479433c5b460ull, 0xcbf00cc92c21fd37ull, 0x3dbb4b41e35c9b7cull, 0x6683c6da5043f923ull, 0xabdb06fc72b96d82ull }}, {{ 0xc32adebb29480949ull, 0xa73ecbca05b90bc8ull, 0xf7607fdbb953e42eull, 0x6950f092e19e12dfull, 0x0125c48722a7bb60ull, 0xb68e45dc7b3e4718ull }}, {{ 0x9facb34f9cd05cd9ull, 0x8873f5e4393a75d7ull, 0xa9c4fe953d46e9d2ull, 0x1d2965bcd02cbcbfull, 0x0b79ad475a8d51c4ull, 0x218eba9cd06ec6f0ull }}, {{ 0x3cbf011c2023a077ull, 0x54879aea3c489a6cull, 0xa1b1f1d464c52239ull, 0x239df96021bf5f7cull, 0x72c0c4c9898531a9ull, 0x4f934a202453c560ull }}, {{ 0x5f760b19416444a8ull, 0x4d4c0d265ad6083aull, 0x50f3724befb3563dull, 0x642bbdc15179badeull, 0x7b87afdf5f33f09bull, 0x1bc0e5416b45b5c4ull }}, {{ 0xba9c6efc8deaae92ull, 0x04f8837f8c5c5247ull, 0x298276f75d015e65ull, 0xe9b5698d2ec14cafull, 0xd34cdeb9b8076611ull, 0x1588f48e30b919acull }}, {{ 0x4a1c55dd8b2ad1b8ull, 0x31b522fb7b9b36cdull, 0x9f18a5a9a20daff2ull, 0x21161f83d38cfed7ull, 0x4100b3413049fcb3ull, 0xd7598d8de73b00c0ull }}, {{ 0xe51b5aa76fac3130ull, 0xf1135dd2d4102404ull, 0x36f678a05488df75ull, 0x4add3b264381f46cull, 0x8a07008be2e3deffull, 0x697f878b084e0782ull }}, {{ 0xf3118a8a5cb9ebe0ull, 0x6ac1aa3c48a16830ull, 0x25a0b6434d58ba9bull, 0xeca44f7ea3138c3aull, 0x64460576dce6b5f8ull, 0x1efb4b6e530c4b19ull }}, {{ 0x7eaf69679f4336beull, 0x2b90a65ad64e11e9ull, 0x78471ea105774a12ull, 0x3e6b1af25ec37a45ull, 0xeabc36a4a1031bb9ull, 0x35d0f24f3e7aeefdull }}, {{ 0xf2da1e0c38a0236full, 0xb3a67f8c5f0cb31eull, 0xb2c7324a36a8e4b5ull, 0x702f0d77b3a2c6b6ull, 0x2b5a226e4a1f153cull, 0x1a29771870cd55ebull }}, {{ 0x7c852c7a36416256ull, 0x0480fb7bb67eff35ull, 0xfbc7f6e62298ef19ull, 0x61d686ad045bc322ull, 0xb185584ee536d45cull, 0x059ea6f468055b2full }}, {{ 0xdd33bcc61e8dd759ull, 0x2d09d2d520f5f816ull, 0xd5cfa4fd59f956faull, 0xd26142c22b959f5dull, 0xef357314f4244b9bull, 0x3832858c10358fdcull }}, {{ 0xa4055fbd318a697aull, 0xc2623c53499bb0e4ull, 0x5a1c71e583bd65c5ull, 0x37cc9b95b3d839aaull, 0x58167ed1896af416ull, 0x31f93778a2179ea1ull }}, {{ 0x6835bd63ef681ec1ull, 0x97d65b40e014e8eeull, 0x851c72f72565f9b9ull, 0x2dfe13d9067240a7ull, 0x70e0f42f5e2d88deull, 0xf3bc2ab654ec324dull }}, {{ 0x121965e75a113388ull, 0xee5f9088c0d11950ull, 0x331c7da775fbc13full, 0xcbecc67a4076868bull, 0x68c989d9adc758adull, 0x8559ab1f5139f706ull }}, {{ 0xb4fdfb0984ac0352ull, 0x4fbba557882afd20ull, 0xff1ce88a9bd58c7full, 0xf73fc0c684a1416full, 0x17df6280c9c976c9ull, 0x3580af392c43a640ull }}, {{ 0x11ebce5f2eb82135ull, 0x1d54756b51ade347ull, 0xf721156a16577cf9ull, 0xa87d87c12e4c8e5full, 0xeeb9d907e1dea3e3ull, 0x1706d83bbaa47e80ull }}, {{ 0xb3360fb7d3314c11ull, 0x254c963130cae0c6ull, 0xa74ad624df6ae1bbull, 0x94e74d8bcefd8fbfull, 0x53427a4ed2b266e4ull, 0xe64472554a6cf109ull }}, {{ 0x001c9d2e3fecf8acull, 0x74fdddebe7ecc7c3ull, 0x88ec5d70ba2cd14full, 0xd109077615e79d7cull, 0x4098c7143af804edull, 0xfeac7754e8416a5dull }}, {{ 0x011e23ce7f41b6bdull, 0x91eaab370f3fcd9eull, 0x593ba66745c02d1aull, 0x2a5a4a9cdb0c26ddull, 0x85f7c6ca4db0314aull, 0xf2bca951128e27a4ull }}, {{ 0x0b2d6610f891235dull, 0xb32ab026987e082cull, 0x7c548008b981c309ull, 0xa786ea208e7984a5ull, 0x3badc3e708e1ece5ull, 0x7b5e9d2ab98d8c6dull }}, {{ 0x6fc5fca9b5ab61a3ull, 0xffaae181f4ec51b8ull, 0xdb4d00573f119e60ull, 0x8b45254590bf2e76ull, 0x54c9a70658d340f8ull, 0xd1b223ab3f877c44ull }}, {{ 0x5dbbdea118b1d05dull, 0xfcaccf13913b3134ull, 0x9102036876b02fc9ull, 0x70b374b7a777d0a4ull, 0x4fe0863f784089b5ull, 0x30f564b07b4adaabull }}, {{ 0xa956b24af6f2239dull, 0xdec016c3ac4fec0bull, 0xaa142214a2e1dde3ull, 0x67028f2c8aae266dull, 0x1ec53e7ab2856116ull, 0xe995eee4d0ec8ab1ull }}, {{ 0x9d62f6eda5756425ull, 0xb380e3a4bb1f3874ull, 0xa4c954ce5cd2aae6ull, 0x061997bd6acd8048ull, 0x33b470caf935cae0ull, 0x1fdb54f0293d6aebull }}, {{ 0x25dda5487695e973ull, 0x0308e46f4f38348eull, 0x6fdd500fa03aad03ull, 0x3cffed662c0702d6ull, 0x050c67edbc19ecc0ull, 0x3e9151619c662d30ull }}, {{ 0x7aa874d4a1db1e7eull, 0x1e58ec5918320d8dull, 0x5ea5209c424ac21eull, 0x61ff45fdb8461c60ull, 0x327c0f4959033f82ull, 0x71ad2dd01bfdc3e0ull }}, {{ 0xca94904e528f30eaull, 0x2f793b7af1f48786ull, 0xb273461a96eb952dull, 0xd3f8bbe932bd1bc3ull, 0xf8d898dd7a207b17ull, 0x70c3ca2117e9a6c1ull }} }; BID_F128_CONST_DEF( c_pi_ov_2, 3fff921fb54442d1, 8469898cc51701b8); // pi/2 BID128_FUNCTION_ARG1 (bid128_sin, x) // Local variables. BID_UINT128 res; int s, e; BID_UINT128 c; BID_F128_TYPE xd, yd; BID_UINT384 m; BID_UINT512 p; int sf, k, ef, el; // Decompose the input and check for NaN and infinity. s = x.w[BID_HIGH_128W] >> 63; if ((x.w[BID_HIGH_128W] & (3ull<<61)) == (3ull<<61)) { if ((x.w[BID_HIGH_128W] & (0xFull<<59)) == (0xFull<<59)) { if ((x.w[BID_HIGH_128W] & (0x1Full<<58)) != (0x1Full<<58)) { // input is infinite, so return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = BID128_NAN; BID_RETURN (res); } else { // input is NaN, so quiet/canonize it etc. #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64) __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN (res); } } else { // "large coefficient" input, which is always non-canonical here e = 0; c.w[1] = c.w[0] = 0ull; } } else { // "small coefficient" input, the normal case for finite numbers e = ((x.w[BID_HIGH_128W] >> 49) & ((1ull<<14)-1)) - 6176; c.w[1] = x.w[BID_HIGH_128W] & ((1ull<<49)-1); c.w[0] = x.w[BID_LOW_128W]; if (lt128(542101086242752ull,4003012203950112767ull,c.w[1],c.w[0])) { c.w[1] = 0ull; c.w[0] = 0ull; } } // Make sure we treat zero even with huge exponent as small if ((c.w[1] == 0) && (c.w[0] == 0)) e = -99999; // If the input is <= 1/10 in magnitude, don't use the main path. // // If it's very small indeed, < 10^-18, use a trivial computation just to // ensure that we get sensible inclusions in directed rounding modes; in any // case this should be more efficient than the main path. // // Otherwise just call the conversion and sin function directly, // since no range reduction is needed and the function is well-conditioned if (e < -35) { if (e == -99999) { BIDECIMAL_CALL2(bid128_mul,res,x,BID128_1); BID_RETURN(res); } else if (e < -52) { BIDECIMAL_CALL3(bid128_fma,res,x,BID128_10PM40,x); BID_RETURN(res); } else { BIDECIMAL_CALL1(bid128_to_binary128,xd,x); __bid_f128_sin(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } } // Pick out the appropriate modulus for the exponent and multiply by coeff // Since we discard the top word p.w[3], we could specially optimize this. m = bid_decimal128_moduli[e+35]; __mul_128x384_to_512(p,c,m); // Shift up by two bits to give an integer part k and a fraction // modulo (pi/2). Note that we have to do this afterwards rather than // use modulo (pi/2) reduction at the start to keep integer parities. k = p.w[5] >> 62; sll256_short(p.w[5],p.w[4],p.w[3],p.w[2],2); // If the fraction is >= 1/2, add 1 to integer and complement the fraction // with an appropriate sign change so we have a "rounded to nearest" version // (Complementing is slightly different from negation but it's negligible.) // Set "sf" to the correct sign for the fraction if (p.w[5] >= 0x8000000000000000ull) { k = (k + 1) & 3; p.w[5] = ~p.w[5]; p.w[4] = ~p.w[4]; p.w[3] = ~p.w[3]; p.w[2] = ~p.w[2]; sf = 1 - s; } else { sf = s; } // Also correct k to take into account the sign if (s) k = (-k) & 3; // Normalize the binary fraction with exponent ef if (p.w[5] == 0) // Could we even have two clears? Marginal... { ef = 16382-64; p.w[5] = p.w[4]; p.w[4] = p.w[3]; p.w[3] = p.w[2]; } else ef = 16382; el = clz64_nz(p.w[5]); ef = ef - el; if (el != 0) sll192_short(p.w[5],p.w[4],p.w[3],el); // Shift right to be in the right place for a quad coefficient srl128_short(p.w[5],p.w[4],15); // Mask off integer bit and set up as quad precision number { union { BID_F128_TYPE d; BID_UINT128 i; } di; di.i.w[BID_LOW_128W] = p.w[4]; di.i.w[BID_HIGH_128W] = (((BID_UINT64) sf) << 63) + (((BID_UINT64)(ef)) << 48) + (p.w[5] & ((1ull<<48)-1)); xd = di.d; } // Multiply by pi/2 so we can use regular binary trig functions. __bid_f128_mul(xd, c_pi_ov_2.v, xd); // Now use the trig function depending on k: switch(k) { case 0: __bid_f128_sin(yd, xd); break; case 1: __bid_f128_cos(yd, xd); break; case 2: __bid_f128_sin(yd, xd); __bid_f128_neg(yd, yd); break; case 3: __bid_f128_cos(yd, xd); __bid_f128_neg(yd, yd); break; default: break; // default added to avoid compiler warning } BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } LIBRARY/src/bid64_cbrt.c0000644€­ Q01134020000000515115113665770013726 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_cbrt, BID_UINT64, x) BID_UINT64 sign_x, coefficient_x; BID_UINT64 valid_x, res; BID_F80_TYPE xd, zd; int exponent_x; valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN if ((x & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK64; BID_RETURN (res); } // x is Infinity? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { res = sign_x | 0x7800000000000000ull; BID_RETURN (res); } // x is 0 res = sign_x | coefficient_x; BID_RETURN (res); } BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_cbrt( zd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,zd); BID_RETURN (res); } LIBRARY/src/bid64_frexp.c0000644€­ Q01134020000001134015113665770014115 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #if DECIMAL_CALL_BY_REFERENCE void bid64_frexp (BID_UINT64 *pres, BID_UINT64 *px, int *exp) { BID_UINT64 x = *px; #else DFP_WRAPFN_DFP_OTHERTYPE(64, bid64_frexp, 64, int*) BID_UINT64 bid64_frexp (BID_UINT64 x, int *exp) { #endif /* If x is not a floating-point number, the results are unspecified (this implementation returns x and *exp = 0). Otherwise, the frexp function returns the value res, such that res has a magnitude in the interval [1/10, 1) or zero, and x = res*2^*exp. If x is zero, both parts of the result are zero frexp does not raise any exceptions */ BID_UINT64 res; BID_UINT64 sig_x; unsigned int exp_x; BID_UI64DOUBLE tmp; int x_nr_bits, q; if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // if NaN or infinity *exp = 0; res = x; // the binary frexp quitetizes SNaNs, so do the same if ((x & MASK_SNAN) == MASK_SNAN) { // x is SNAN // // set invalid flag // *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res = x & 0xfdffffffffffffffull; } BID_RETURN (res); } else { // x is 0, non-canonical, normal, or subnormal // unpack x // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; // biased if (sig_x > 9999999999999999ull || sig_x == 0) { // non-canonical or zero *exp = 0; res = (x & 0x8000000000000000ull) | ((BID_UINT64)exp_x << 53); // zero of same sign BID_RETURN (res); } } else { sig_x = x & MASK_BINARY_SIG1; exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; // biased if (sig_x == 0x0ull) { *exp = 0; res = x; // same zero BID_RETURN (res); } } // x is normal or subnormal, with exp_x=biased exponent & sig_x=coefficient // determine the number of decimal digits in sig_x, which fits in 54 bits // q = nr. of decimal digits in sig_x (1 <= q <= 16) // determine first the nr. of bits in sig_x // determine first the nr. of bits in x if (sig_x >= 0x0020000000000000ull) { // x >= 2^53 q = 16; } else { // if x < 2^53 tmp.d = (double) sig_x; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (sig_x >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } } // Do not add trailing zeros if q < 16; leave sig_x with q digits *exp = exp_x - 398 + q; // assemble the result if (sig_x < 0x0020000000000000ull) { // sig_x < 2^53 (fits in 53 bits) res = (x & 0x801fffffffffffffull) | ((-q + 398ull) << 53); // replace exp. } else { // sig_x fits in 54 bits, but not in 53 res = (x & 0xe007ffffffffffffull) | ((-q + 398ull) << 51); // replace exp. } BID_RETURN (res); } } LIBRARY/src/bid32_acosh.c0000644€­ Q01134020000000670115113665770014066 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_EXTERN_C double asinh(double); BID_EXTERN_C double acosh(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_acosh, BID_UINT32, x) BID_UINT32 sign_x, coefficient_x, near_one, one; BID_UINT32 valid_x, res, z, z2; double xd, zd; int exponent_x, cmp_res; valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN if ((x & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e000000) == 0x7e000000) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK32; BID_RETURN (res); } // x is Infinity? if ((x & 0x78000000) == 0x78000000) { #ifdef BID_SET_STATUS_FLAGS if (sign_x) // -Inf __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = sign_x? 0x7c000000 : 0x78000000; BID_RETURN (res); } // x is 0 } // calculate asinh(sqrt(x*x-1)) for x near 1 (x<1+1/32 = (10^5 + 5^5)/10^5 ) near_one = 0x300192d5; BIDECIMAL_CALL2_NORND (bid32_quiet_less, cmp_res, x, near_one); if(cmp_res) { // x<1+1/32 one = 0x32800001; BIDECIMAL_CALL2_NORND (bid32_quiet_greater, cmp_res, one, x); if(cmp_res) { // x < 1 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c000000; BID_RETURN (res); } // -1 one = 0xb2800001; // x*x-1 BIDECIMAL_CALL3(bid32_fma, z2, x, x, one); // sqrt(x*x-1) BIDECIMAL_CALL1 (bid32_sqrt, z, z2); BIDECIMAL_CALL1 (bid32_to_binary64, xd, z); zd = asinh(xd); BIDECIMAL_CALL1 (binary64_to_bid32, res, zd); BID_RETURN (res); } BIDECIMAL_CALL1(bid32_to_binary64,xd,x); zd = acosh(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,zd); BID_RETURN (res); } LIBRARY/src/bid64_string.c0000644€­ Q01134020000003634115113665770014307 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include #include "bid_internal.h" #include "bid128_2_str.h" #include "bid128_2_str_macros.h" #define MAX_FORMAT_DIGITS 16 #define DECIMAL_EXPONENT_BIAS 398 #define MAX_DECIMAL_EXPONENT 767 #if DECIMAL_CALL_BY_REFERENCE void bid64_to_string (char *ps, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x; #else VOID_WRAPFN_OTHERTYPERES_DFP(bid64_to_string, char, 64) void bid64_to_string (char *ps, BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif // the destination string (pointed to by ps) must be pre-allocated BID_UINT64 sign_x, coefficient_x, D, ER10; int istart, exponent_x, j, digits_x, bin_expon_cx; int_float tempx; BID_UINT32 MiDi[12], *ptr; BID_UINT64 HI_18Dig, LO_18Dig, Tmp; char *c_ptr_start, *c_ptr; int midi_ind, k_lcv, len; unsigned int save_fpsf; #if DECIMAL_CALL_BY_REFERENCE x = *px; #endif save_fpsf = *pfpsf; // place holder only // unpack arguments, check for NaN or Infinity if (!unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x)) { // x is Inf. or NaN or 0 // Inf or NaN? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { if ((x & 0x7c00000000000000ull) == 0x7c00000000000000ull) { ps[0] = (sign_x) ? '-' : '+'; ps[1] = 'S'; j = ((x & MASK_SNAN) == MASK_SNAN)? 2: 1; ps[j++] = 'N'; ps[j++] = 'a'; ps[j++] = 'N'; ps[j++] = 0; return; } // x is Inf ps[0] = (sign_x) ? '-' : '+'; ps[1] = 'I'; ps[2] = 'n'; ps[3] = 'f'; ps[4] = 0; return; } // 0 istart = 1; ps[0] = (sign_x)? '-': '+'; ps[istart++] = '0'; ps[istart++] = 'E'; exponent_x -= 398; if (exponent_x < 0) { ps[istart++] = '-'; exponent_x = -exponent_x; } else ps[istart++] = '+'; if (exponent_x) { // get decimal digits in coefficient_x tempx.d = (float) exponent_x; bin_expon_cx = ((tempx.i >> 23) & 0xff) - 0x7f; digits_x = bid_estimate_decimal_digits[bin_expon_cx]; if ((BID_UINT64)exponent_x >= bid_power10_table_128[digits_x].w[0]) digits_x++; j = istart + digits_x - 1; istart = j + 1; // 2^32/10 ER10 = 0x1999999a; while (exponent_x > 9) { D = (BID_UINT64) exponent_x *ER10; D >>= 32; exponent_x = exponent_x - (D << 1) - (D << 3); ps[j--] = '0' + (char) exponent_x; exponent_x = D; } ps[j] = '0' + (char) exponent_x; } else { ps[istart++] = '0'; } ps[istart] = 0; return; } // convert expon, coeff to ASCII exponent_x -= DECIMAL_EXPONENT_BIAS; ER10 = 0x1999999a; istart = 1; ps[0] = (sign_x)? '-': '+'; // if zero or non-canonical, set coefficient to '0' if ((coefficient_x > 9999999999999999ull) || // non-canonical ((coefficient_x == 0)) // significand is zero ) { ps[istart++] = '0'; } else { /* **************************************************** This takes a bid coefficient in C1.w[1],C1.w[0] and put the converted character sequence at location starting at &(str[k]). The function returns the number of MiDi returned. Note that the character sequence does not have leading zeros EXCEPT when the input is of zero value. It will then output 1 character '0' The algorithm essentailly tries first to get a sequence of Millenial Digits "MiDi" and then uses table lookup to get the character strings of these MiDis. **************************************************** */ /* Algorithm first decompose possibly 34 digits in hi and lo 18 digits. (The high can have at most 16 digits). It then uses macro that handle 18 digit portions. The first step is to get hi and lo such that 2^(64) C1.w[1] + C1.w[0] = hi * 10^18 + lo, 0 <= lo < 10^18. We use a table lookup method to obtain the hi and lo 18 digits. [C1.w[1],C1.w[0]] = c_8 2^(107) + c_7 2^(101) + ... + c_0 2^(59) + d where 0 <= d < 2^59 and each c_j has 6 bits. Because d fits in 18 digits, we set hi = 0, and lo = d to begin with. We then retrieve from a table, for j = 0, 1, ..., 8 that gives us A and B where c_j 2^(59+6j) = A * 10^18 + B. hi += A ; lo += B; After each accumulation into lo, we normalize immediately. So at the end, we have the decomposition as we need. */ Tmp = coefficient_x >> 59; LO_18Dig = (coefficient_x << 5) >> 5; HI_18Dig = 0; k_lcv = 0; while (Tmp) { midi_ind = (int) (Tmp & 0x000000000000003FLL); midi_ind <<= 1; Tmp >>= 6; HI_18Dig += mod10_18_tbl[k_lcv][midi_ind++]; LO_18Dig += mod10_18_tbl[k_lcv++][midi_ind]; __L0_Normalize_10to18 (HI_18Dig, LO_18Dig); } ptr = MiDi; __L1_Split_MiDi_6_Lead (LO_18Dig, ptr); len = ptr - MiDi; c_ptr_start = &(ps[istart]); c_ptr = c_ptr_start; /* now convert the MiDi into character strings */ __L0_MiDi2Str_Lead (MiDi[0], c_ptr); for (k_lcv = 1; k_lcv < len; k_lcv++) { __L0_MiDi2Str (MiDi[k_lcv], c_ptr); } istart = istart + (c_ptr - c_ptr_start); } ps[istart++] = 'E'; if (exponent_x < 0) { ps[istart++] = '-'; exponent_x = -exponent_x; } else ps[istart++] = '+'; if (exponent_x) { // get decimal digits in coefficient_x tempx.d = (float) exponent_x; bin_expon_cx = ((tempx.i >> 23) & 0xff) - 0x7f; digits_x = bid_estimate_decimal_digits[bin_expon_cx]; if ((BID_UINT64)exponent_x >= bid_power10_table_128[digits_x].w[0]) digits_x++; j = istart + digits_x - 1; istart = j + 1; // 2^32/10 ER10 = 0x1999999a; while (exponent_x > 9) { D = (BID_UINT64) exponent_x *ER10; D >>= 32; exponent_x = exponent_x - (D << 1) - (D << 3); ps[j--] = '0' + (char) exponent_x; exponent_x = D; } ps[j] = '0' + (char) exponent_x; } else { ps[istart++] = '0'; } ps[istart] = 0; return; } #if DECIMAL_CALL_BY_REFERENCE void bid64_from_string (BID_UINT64 * pres, char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #else DFP_WRAPFN_OTHERTYPE(64, bid64_from_string, char*) BID_UINT64 bid64_from_string (char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 sign_x, coefficient_x = 0, rounded = 0, res; int expon_x = 0, sgn_expon, ndigits, add_expon = 0, midpoint = 0, rounded_up = 0, dround = 0; int dec_expon_scale = 0, right_radix_leading_zeros = 0, rdx_pt_enc = 0; char c; unsigned int save_fpsf; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif save_fpsf = *pfpsf; // place holder only // eliminate leading whitespace while (((*ps == ' ') || (*ps == '\t')) && (*ps)) ps++; // get first non-whitespace character c = *ps; // detect special cases (INF or NaN) if (!c || (c != '.' && c != '-' && c != '+' && (c < '0' || c > '9'))) { // Infinity? if ((tolower_macro (ps[0]) == 'i' && tolower_macro (ps[1]) == 'n' && tolower_macro (ps[2]) == 'f') && (!ps[3] || (tolower_macro (ps[3]) == 'i' && tolower_macro (ps[4]) == 'n' && tolower_macro (ps[5]) == 'i' && tolower_macro (ps[6]) == 't' && tolower_macro (ps[7]) == 'y' && !ps[8]))) { res = 0x7800000000000000ull; BID_RETURN (res); } // return sNaN if (tolower_macro (ps[0]) == 's' && tolower_macro (ps[1]) == 'n' && tolower_macro (ps[2]) == 'a' && tolower_macro (ps[3]) == 'n') { // case insensitive check for snan res = 0x7e00000000000000ull; BID_RETURN (res); } else { // return qNaN res = 0x7c00000000000000ull; BID_RETURN (res); } } // detect +INF or -INF if ((tolower_macro (ps[1]) == 'i' && tolower_macro (ps[2]) == 'n' && tolower_macro (ps[3]) == 'f') && (!ps[4] || (tolower_macro (ps[4]) == 'i' && tolower_macro (ps[5]) == 'n' && tolower_macro (ps[6]) == 'i' && tolower_macro (ps[7]) == 't' && tolower_macro (ps[8]) == 'y' && !ps[9]))) { if (c == '+') res = 0x7800000000000000ull; else if (c == '-') res = 0xf800000000000000ull; else res = 0x7c00000000000000ull; BID_RETURN (res); } // if +sNaN, +SNaN, -sNaN, or -SNaN if (tolower_macro (ps[1]) == 's' && tolower_macro (ps[2]) == 'n' && tolower_macro (ps[3]) == 'a' && tolower_macro (ps[4]) == 'n') { if (c == '-') res = 0xfe00000000000000ull; else res = 0x7e00000000000000ull; BID_RETURN (res); } // determine sign if (c == '-') sign_x = 0x8000000000000000ull; else sign_x = 0; // get next character if leading +/- sign if (c == '-' || c == '+') { ps++; c = *ps; } // if c isn't a decimal point or a decimal digit, return NaN if (c != '.' && (c < '0' || c > '9')) { // return NaN res = 0x7c00000000000000ull | sign_x; BID_RETURN (res); } rdx_pt_enc = 0; // detect zero (and eliminate/ignore leading zeros) if (*(ps) == '0' || *(ps) == '.') { if (*(ps) == '.') { rdx_pt_enc = 1; ps++; } // if all numbers are zeros (with possibly 1 radix point, the number is zero // should catch cases such as: 000.0 while (*ps == '0') { ps++; // for numbers such as 0.0000000000000000000000000000000000001001, // we want to count the leading zeros if (rdx_pt_enc) { right_radix_leading_zeros++; } // if this character is a radix point, make sure we haven't already // encountered one if (*(ps) == '.') { if (rdx_pt_enc == 0) { rdx_pt_enc = 1; // if this is the first radix point, and the next character is NULL, // we have a zero if (!*(ps + 1)) { res = ((BID_UINT64) (398 - right_radix_leading_zeros) << 53) | sign_x; BID_RETURN (res); } ps = ps + 1; } else { // if 2 radix points, return NaN res = 0x7c00000000000000ull | sign_x; BID_RETURN (res); } } else if (!*(ps)) { //pres->w[1] = 0x3040000000000000ull | sign_x; res = ((BID_UINT64) (398 - right_radix_leading_zeros) << 53) | sign_x; BID_RETURN (res); } } } c = *ps; ndigits = 0; while ((c >= '0' && c <= '9') || c == '.') { if (c == '.') { if (rdx_pt_enc) { // return NaN res = 0x7c00000000000000ull | sign_x; BID_RETURN (res); } rdx_pt_enc = 1; ps++; c = *ps; continue; } dec_expon_scale += rdx_pt_enc; ndigits++; if (ndigits <= 16) { coefficient_x = (coefficient_x << 1) + (coefficient_x << 3); coefficient_x += (BID_UINT64) (c - '0'); } else if (ndigits == 17) { // coefficient rounding switch(rnd_mode){ case BID_ROUNDING_TO_NEAREST: midpoint = (c == '5' && !(coefficient_x & 1)) ? 1 : 0; // if coefficient is even and c is 5, prepare to round up if // subsequent digit is nonzero // if str[MAXDIG+1] > 5, we MUST round up // if str[MAXDIG+1] == 5 and coefficient is ODD, ROUND UP! if (c > '5' || (c == '5' && (coefficient_x & 1))) { coefficient_x++; rounded_up = 1; break; case BID_ROUNDING_DOWN: if(sign_x) { if(c>'0') {coefficient_x++; rounded_up=1;} else dround=1; } break; case BID_ROUNDING_UP: if(!sign_x) { if(c>'0') {coefficient_x++; rounded_up=1;} else dround=1; } break; case BID_ROUNDING_TIES_AWAY: if(c>='5') { coefficient_x++; rounded_up=1; } break; } if (coefficient_x == 10000000000000000ull) { coefficient_x = 1000000000000000ull; add_expon = 1; } } if (c > '0') rounded = 1; add_expon += 1; } else { // ndigits > 17 add_expon++; if (midpoint && c > '0') { coefficient_x++; midpoint = 0; rounded_up = 1; } if (c > '0') { rounded = 1; if(dround) { dround = 0; coefficient_x ++; rounded_up = 1; if (coefficient_x == 10000000000000000ull) { coefficient_x = 1000000000000000ull; add_expon++; } } } } ps++; c = *ps; } add_expon -= (dec_expon_scale + right_radix_leading_zeros); if (!c) { #ifdef BID_SET_STATUS_FLAGS if(rounded) __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif res = fast_get_BID64_check_OF (sign_x, add_expon + DECIMAL_EXPONENT_BIAS, coefficient_x, 0, pfpsf); BID_RETURN (res); } if (c != 'E' && c != 'e') { // return NaN res = 0x7c00000000000000ull | sign_x; BID_RETURN (res); } ps++; c = *ps; sgn_expon = (c == '-') ? 1 : 0; if (c == '-' || c == '+') { ps++; c = *ps; } if (!c || c < '0' || c > '9') { // return NaN res = 0x7c00000000000000ull | sign_x; BID_RETURN (res); } while ((c >= '0') && (c <= '9')) { if(expon_x<(1<<20)) { expon_x = (expon_x << 1) + (expon_x << 3); expon_x += (int) (c - '0'); } ps++; c = *ps; } if (c) { // return NaN res = 0x7c00000000000000ull | sign_x; BID_RETURN (res); } #ifdef BID_SET_STATUS_FLAGS if(rounded) __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif if (sgn_expon) expon_x = -expon_x; expon_x += add_expon + DECIMAL_EXPONENT_BIAS; if (expon_x < 0) { if (rounded_up) coefficient_x--; rnd_mode = 0; res = get_BID64_UF (sign_x, expon_x, coefficient_x, rounded, rnd_mode, pfpsf); BID_RETURN (res); } res = get_BID64 (sign_x, expon_x, coefficient_x, rnd_mode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid128_exp.c0000644€­ Q01134020000001331315113665770013650 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ // _Quad type not supported in GCC? #include "bid_trans.h" // 2-part conversion. BID_EXTERN_C void bid128_to_binary128_2part(BID_F128_TYPE *,BID_F128_TYPE *,BID_UINT128); static BID_UINT128 BID128_EXP_11000 = {BID128_LH_INIT( 0xd43ede775707fd0aull, 0x5550558ada285f8bull )}; static BID_UINT128 BID128_EXP_M11000 = {BID128_LH_INIT( 0x995ab6781dd4b6f5ull, 0x0aab1c2bbc58f8f5ull )}; static BID_UINT128 BID128_0 = {BID128_LH_INIT( 0x0000000000000000ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_INF = {BID128_LH_INIT( 0x0000000000000000ull, 0x7800000000000000ull )}; static BID_UINT128 BID128_15000 = {BID128_LH_INIT( 0x0000000000003a98ull,0x3040000000000000ull )}; static BID_UINT128 BID128_N15000 = {BID128_LH_INIT( 0x0000000000003a98ull,0xb040000000000000ull )}; static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; // 10^-6000, to create dummy underflowing computation static BID_UINT128 BID128_10POWN6000 = {BID128_LH_INIT( 0x0000000000000001ull, 0x0160000000000000ull )}; BID_F128_CONST_DEF(c_11000, 400c57c000000000, 0000000000000000); // +11000 BID_F128_CONST_DEF(c_neg_11000, c00c57c000000000, 0000000000000000); // -11000 BID128_FUNCTION_ARG1 (bid128_exp, x) BID_F128_TYPE rq; BID_UINT128 res; BID_F128_TYPE mq, nq, rt; int z, cmp_res; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // If the input is actually infinity, return +inf or 0 if ((x.w[BID_HIGH_128W] & MASK_ANY_INF) == MASK_INF) { if ((x.w[BID_HIGH_128W] & MASK_SIGN) != 0) res = BID128_0; else res = BID128_INF; BID_RETURN(res); } // For x = 0, return 1 exactly in all rounding modes. BIDECIMAL_CALL1_NORND_NOSTAT (bid128_isZero, z, x); if (z) { res = BID128_1; BID_RETURN(res); } // For large positive inputs, use a dummy overflowing computation // to ensure things work correctly in all rounding modes (clamping to max etc.) BIDECIMAL_CALL2_NORND (bid128_quiet_greater, cmp_res, x, BID128_15000); if (cmp_res) { BIDECIMAL_CALL2(bid128_mul,res,BID128_EXP_11000,BID128_EXP_11000); BID_RETURN(res); } // For large negative inputs, use a dummy underflowing computation BIDECIMAL_CALL2_NORND (bid128_quiet_less, cmp_res, x, BID128_N15000); if (cmp_res) { BIDECIMAL_CALL2(bid128_mul,res,BID128_10POWN6000,BID128_10POWN6000); BID_RETURN (res); } // Do a 2-part input conversion into x = nq + mq [nq being high] bid128_to_binary128_2part(&nq,&mq,x); // Handle case where quad exponential would overflow or underflow // Otherwise, do the obvious thing. if (__bid_f128_gt(nq, c_11000.v)) { __bid_f128_sub(nq, nq, c_11000.v); __bid_f128_exp(rq, nq); __bid_f128_mul(rt, rq, mq); __bid_f128_add(rq, rq, rt); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BIDECIMAL_CALL2 (bid128_mul, res, res, BID128_EXP_11000); } else if (__bid_f128_lt(nq, c_neg_11000.v)) { __bid_f128_add(nq, nq, c_11000.v); __bid_f128_exp(rq, nq); __bid_f128_mul(rt, rq, mq); __bid_f128_add(rq, rq, rt); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BIDECIMAL_CALL2 (bid128_mul, res, res, BID128_EXP_M11000); } else { __bid_f128_exp(rq, nq); __bid_f128_mul(rt, rq, mq); __bid_f128_add(rq, rq, rt); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); } BID_RETURN (res); } LIBRARY/src/bid64_llround.c0000644€­ Q01134020000000500215113665770014446 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_llroundd ****************************************************************************/ /* DESCRIPTION: The llround function rounds its argument to the nearest integer value of type long long int, using rounding to nearest-away RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND(long long int, bid64_llround, BID_UINT64, x) // the sizeof (long long) = 8 (BID_SIZE_LONG==8) BID_SINT64 res; BIDECIMAL_CALL1_NORND (bid64_to_int64_rninta, res, x); BID_RETURN ((long long int)res); } LIBRARY/src/bid128_llquantexpd.c0000644€­ Q01134020000000465715113665770015430 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" /***************************************************************************** * BID128_llquantexpd ****************************************************************************/ /* Exceptions signaled: invalid */ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE(long long int, bid128_llquantexp, x) long long int res; // quantum if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; res = 0x8000000000000000ull; BID_RETURN_VAL (res); } if ((x.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) res = (long long int)((x.w[1] >> 47) & 0x3fff) - 6176; else res = (long long int)((x.w[1] >> 49) & 0x3fff) - 6176; BID_RETURN_VAL (res); } LIBRARY/src/bid64_to_int64.c0000644€­ Q01134020000025067615113665770014460 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_to_int64_rnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int64_rnint (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid64_to_int64_rnint, 64) BID_SINT64 bid64_to_int64_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 5*(2^64+1), 1<=q<=16 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000005, 1<=q<=16 // <=> C * 10^(20-q) > 0x50000000000000005, 1<=q<=16 // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x50000000000000005, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] > 0x05ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64-1), 1<=q<=16 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=16 // <=> if C * 10^(20-q) >= 0x4fffffffffffffffb, 1<=q<=16 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1/2 <= n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; // 0 <= ind <= 15 if (C1 <= bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } else { // if (1 <= q + exp <= 19, 1 <= q <= 16, -15 <= exp <= 18) // -2^63-1/2 <= x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 16 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 16, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int64_xrnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int64_xrnint (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid64_to_int64_xrnint, 64) BID_SINT64 bid64_to_int64_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 5*(2^64+1), 1<=q<=16 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000005, 1<=q<=16 // <=> C * 10^(20-q) > 0x50000000000000005, 1<=q<=16 // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x50000000000000005, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] > 0x05ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64-1), 1<=q<=16 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=16 // <=> if C * 10^(20-q) >= 0x4fffffffffffffffb, 1<=q<=16 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1/2 <= n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; // 0 <= ind <= 15 if (C1 <= bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 19, 1 <= q <= 16, -15 <= exp <= 18) // -2^63-1/2 <= x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 16 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 16, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int64_floor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int64_floor (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid64_to_int64_floor, 64) BID_SINT64 bid64_to_int64_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*2^64, 1<=q<=16 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000000, 1<=q<=16 // <=> C * 10^(20-q) > 0x50000000000000000, 1<=q<=16 // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] != 0)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*2^64, 1<=q<=16 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=16 // <=> if C * 10^(20-q) >= 0x50000000000000000, 1<=q<=16 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); if (C.w[1] >= 0x05ull) { // actually C.w[1] == 0x05ull && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63 <= n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return -1 or 0 if (x_sign) res = 0xffffffffffffffffull; else res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 16, -15 <= exp <= 18) // -2^63 <= x <= -1 or 1 <= x < 2^63 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 16 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 16, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int64_xfloor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int64_xfloor (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid64_to_int64_xfloor, 64) BID_SINT64 bid64_to_int64_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*2^64, 1<=q<=16 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000000, 1<=q<=16 // <=> C * 10^(20-q) > 0x50000000000000000, 1<=q<=16 // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] != 0)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*2^64, 1<=q<=16 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=16 // <=> if C * 10^(20-q) >= 0x50000000000000000, 1<=q<=16 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); if (C.w[1] >= 0x05ull) { // actually C.w[1] == 0x05ull && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63 <= n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return -1 or 0 if (x_sign) res = 0xffffffffffffffffull; else res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 16, -15 <= exp <= 18) // -2^63 <= x <= -1 or 1 <= x < 2^63 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 16 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 16, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int64_ceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int64_ceil (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid64_to_int64_ceil, 64) BID_SINT64 bid64_to_int64_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64+2), 1<=q<=16 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x5000000000000000a, 1<=q<=16 // <=> C * 10^(20-q) >= 0x5000000000000000a, 1<=q<=16 // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x0aull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n > 2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63 - 1 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 > 5*(2^64-2), 1<=q<=16 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 > 0x4fffffffffffffff6, 1<=q<=16 // <=> if C * 10^(20-q) > 0x4fffffffffffffff6, 1<=q<=16 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffff6ull; // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 16, -15 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x <= 2^63 - 1 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 16 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 16, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int64_xceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int64_xceil (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid64_to_int64_xceil, 64) BID_SINT64 bid64_to_int64_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64+2), 1<=q<=16 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x5000000000000000a, 1<=q<=16 // <=> C * 10^(20-q) >= 0x5000000000000000a, 1<=q<=16 // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x0aull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n > 2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) > 2^63 - 1 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 > 5*(2^64-2), 1<=q<=16 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 > 0x4fffffffffffffff6, 1<=q<=16 // <=> if C * 10^(20-q) > 0x4fffffffffffffff6, 1<=q<=16 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffff6ull; // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 16, -15 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x <= 2^63 - 1 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 16 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 16, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int64_int ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int64_int (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid64_to_int64_int, 64) BID_SINT64 bid64_to_int64_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64+2), 1<=q<=16 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x5000000000000000a, 1<=q<=16 // <=> C * 10^(20-q) >= 0x5000000000000000a, 1<=q<=16 // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x0aull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*2^64, 1<=q<=16 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=16 // <=> if C * 10^(20-q) >= 0x50000000000000000, 1<=q<=16 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); if (C.w[1] >= 0x05ull) { // actually C.w[1] == 0x05ull && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 16, -15 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x < 2^63 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 16 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 16, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int64_xint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int64_xint (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid64_to_int64_xint, 64) BID_SINT64 bid64_to_int64_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64+2), 1<=q<=16 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x5000000000000000a, 1<=q<=16 // <=> C * 10^(20-q) >= 0x5000000000000000a, 1<=q<=16 // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x0aull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*2^64, 1<=q<=16 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=16 // <=> if C * 10^(20-q) >= 0x50000000000000000, 1<=q<=16 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); if (C.w[1] >= 0x05ull) { // actually C.w[1] == 0x05ull && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 16, -15 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x < 2^63 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 16 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 16, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int64_rninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int64_rninta (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid64_to_int64_rninta, 64) BID_SINT64 bid64_to_int64_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64+1), 1<=q<=16 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000005, 1<=q<=16 // <=> C * 10^(20-q) >= 0x50000000000000005, 1<=q<=16 // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x50000000000000005, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x05ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64-1), 1<=q<=16 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=16 // <=> if C * 10^(20-q) >= 0x4fffffffffffffffb, 1<=q<=16 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1/2 < n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; // 0 <= ind <= 15 if (C1 < bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } else { // if (1 <= q + exp <= 19, 1 <= q <= 16, -15 <= exp <= 18) // -2^63-1/2 < x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 16 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 16, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID64_to_int64_xrninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_int64_xrninta (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid64_to_int64_xrninta, 64) BID_SINT64 bid64_to_int64_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(18).c(19)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64+1), 1<=q<=16 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000005, 1<=q<=16 // <=> C * 10^(20-q) >= 0x50000000000000005, 1<=q<=16 // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x50000000000000005, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x05ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // too large if c(0)c(1)...c(18).c(19)...c(q-1) >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 5*(2^64-1), 1<=q<=16 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=16 // <=> if C * 10^(20-q) >= 0x4fffffffffffffffb, 1<=q<=16 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; // 1 <= q <= 16 => 4 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1/2 < n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; // 0 <= ind <= 15 if (C1 < bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 19, 1 <= q <= 16, -15 <= exp <= 18) // -2^63-1/2 < x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 16 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 16, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } LIBRARY/src/bid64_log1p.c0000644€­ Q01134020000000645515113665770014026 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" static BID_UINT64 BID64_MINUS_HALF = 0xb1a0000000000005ull; static BID_UINT64 BID64_1 = 0x31c0000000000001ull; static BID_UINT64 BID64_NAN = 0x7c00000000000000ull; BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_log1p, BID_UINT64, x) // Declare local variables BID_UINT64 res, y; int sm; BID_F80_TYPE xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // If x < -1/2 we have condition issues with the naive computation. // Instead, do y = 1 + x exactly in decimal and call usual log function. BIDECIMAL_CALL2_NORND(bid64_quiet_less,sm,x,BID64_MINUS_HALF); if (sm) { BIDECIMAL_CALL2(bid64_add,y,x,BID64_1); if ((y & SIGNMASK64) == SIGNMASK64) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(BID64_NAN); } BIDECIMAL_CALL1(bid64_to_binary80,xd,y); __bid_f80_log( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN(res); } // Otherwise just do the operation "naively". // Inherit all other special cases (infinity, negative,...) from binary. else { BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_log1p( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } } LIBRARY/src/bid_dpd.c0000644€­ Q01134020000003714415113665770013400 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define DECNUMDIGITS 34 // work with up to 34 digits #include "bid_internal.h" #include "bid_b2d.h" #if DECIMAL_CALL_BY_REFERENCE void bid_to_dpd32 (BID_UINT32 * pres, BID_UINT32 * pba) { BID_UINT32 ba = *pba; #else DFP_WRAPFN_DFP(32, bid_to_dpd32, 32) BID_UINT32 bid_to_dpd32 (BID_UINT32 ba) { #endif BID_UINT32 res; BID_UINT32 sign, comb, exp, trailing; BID_UINT32 b0, b1, b2; BID_UINT32 bcoeff, dcoeff; BID_UINT32 nanb = 0; sign = (ba & 0x80000000); comb = (ba & 0x7ff00000) >> 20; trailing = (ba & 0xfffff); // Detect infinity, and return canonical infinity if ((comb & 0x7c0) == 0x780) { res = sign | 0x78000000; BID_RETURN (res); // Detect NaN, and canonicalize trailing } else if ((comb & 0x7c0) == 0x7c0) { if (trailing > 999999) trailing = 0; nanb = ba & 0xfe000000; exp = 0; bcoeff = trailing; } else { // Normal number if ((comb & 0x600) == 0x600) { // G0..G1 = 11 -> exp is G2..G11 exp = (comb >> 1) & 0xff; bcoeff = ((8 + (comb & 1)) << 20) | trailing; } else { exp = (comb >> 3) & 0xff; bcoeff = ((comb & 7) << 20) | trailing; } // Zero the coefficient if non-canonical (>= 10^7) if (bcoeff >= 10000000) bcoeff = 0; } b0 = bcoeff / 1000000; b1 = (bcoeff / 1000) % 1000; b2 = bcoeff % 1000; dcoeff = (bid_b2d[b1] << 10) | bid_b2d[b2]; if (b0 >= 8) // is b0 8 or 9? res = sign | ((0x600 | ((exp >> 6) << 7) | ((b0 & 1) << 6) | (exp & 0x3f)) << 20) | dcoeff; else // else b0 is 0..7 res = sign | ((((exp >> 6) << 9) | (b0 << 6) | (exp & 0x3f)) << 20) | dcoeff; res |= nanb; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid_to_dpd64 (BID_UINT64 * pres, BID_UINT64 * pba) { BID_UINT64 ba = *pba; #else DFP_WRAPFN_DFP(64, bid_to_dpd64, 64) BID_UINT64 bid_to_dpd64 (BID_UINT64 ba) { #endif BID_UINT64 res; BID_UINT64 sign, comb, exp; BID_UINT64 trailing; BID_UINT32 b0, b1, b2, b3, b4, b5; BID_UINT64 bcoeff; BID_UINT64 dcoeff; BID_UINT32 yhi, ylo; BID_UINT64 nanb = 0; //printf("arg bid "BID_FMT_LLX16" \n", ba); sign = (ba & 0x8000000000000000ull); comb = (ba & 0x7ffc000000000000ull) >> 50; trailing = (ba & 0x0003ffffffffffffull); // Detect infinity, and return canonical infinity if ((comb & 0x1f00) == 0x1e00) { res = sign | 0x7800000000000000ull; BID_RETURN (res); // Detect NaN, and canonicalize trailing } else if ((comb & 0x1e00) == 0x1e00) { if (trailing > 999999999999999ull) trailing = 0; nanb = ba & 0xfe00000000000000ull; exp = 0; bcoeff = trailing; } else { // Normal number if ((comb & 0x1800) == 0x1800) { // G0..G1 = 11 -> exp is G2..G11 exp = (comb >> 1) & 0x3ff; bcoeff = ((8 + (comb & 1)) << 50) | trailing; } else { exp = (comb >> 3) & 0x3ff; bcoeff = ((comb & 7) << 50) | trailing; } // Zero the coefficient if it is non-canonical (>= 10^16) if (bcoeff >= 10000000000000000ull) bcoeff = 0; } // Floor(2^61 / 10^9) #define D61 (2305843009ull) // Multipy the binary coefficient by ceil(2^64 / 1000), and take the upper // 64-bits in order to compute a division by 1000. #if 1 yhi = ((BID_UINT64) D61 * (BID_UINT64) (BID_UINT32) (bcoeff >> (BID_UINT64) 27)) >> (BID_UINT64) 34; ylo = bcoeff - 1000000000ull * yhi; if (ylo >= 1000000000) { ylo = ylo - 1000000000; yhi = yhi + 1; } #else yhi = bcoeff / 1000000000ull; ylo = bcoeff % 1000000000ull; #endif // yhi = ABBBCCC ylo = DDDEEEFFF b5 = ylo % 1000; // b5 = FFF b3 = ylo / 1000000; // b3 = DDD b4 = (ylo / 1000) - (1000 * b3); // b4 = EEE b2 = yhi % 1000; // b2 = CCC b0 = yhi / 1000000; // b0 = A b1 = (yhi / 1000) - (1000 * b0); // b1 = BBB dcoeff = bid_b2d[b5] | bid_b2d2[b4] | bid_b2d3[b3] | bid_b2d4[b2] | bid_b2d5[b1]; if (b0 >= 8) // is b0 8 or 9? res = sign | ((0x1800 | ((exp >> 8) << 9) | ((b0 & 1) << 8) | (exp & 0xff)) << 50) | dcoeff; else // else b0 is 0..7 res = sign | ((((exp >> 8) << 11) | (b0 << 8) | (exp & 0xff)) << 50) | dcoeff; res |= nanb; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid_dpd_to_bid32 (BID_UINT32 * pres, BID_UINT32 * pda) { BID_UINT32 da = *pda; #else DFP_WRAPFN_DFP(32, bid_dpd_to_bid32, 32) BID_UINT32 bid_dpd_to_bid32 (BID_UINT32 da) { #endif BID_UINT32 in = *(BID_UINT32 *) & da; BID_UINT32 res; BID_UINT32 sign, comb, exp; BID_UINT32 trailing; BID_UINT32 d0 = 0, d1, d2; BID_UINT64 bcoeff; BID_UINT32 nanb = 0; sign = (in & 0x80000000); comb = (in & 0x7ff00000) >> 20; trailing = (in & 0x000fffff); if ((comb & 0x7c0) == 0x780) { // G0..G4 = 11110 -> Inf res = in & 0xf8000000; BID_RETURN (res); } else if ((comb & 0x7c0) == 0x7c0) { // G0..G5 = 11111 -> NaN nanb = in & 0xfe000000; exp = 0; } else { // Normal number if ((comb & 0x600) == 0x600) { // G0..G1 = 11 -> d0 = 8 + G4 d0 = ((comb >> 6) & 1) | 8; exp = ((comb & 0x180) >> 1) | (comb & 0x3f); } else { d0 = (comb >> 6) & 0x7; exp = ((comb & 0x600) >> 3) | (comb & 0x3f); } } d1 = bid_d2b2[(trailing >> 10) & 0x3ff]; d2 = bid_d2b[(trailing) & 0x3ff]; bcoeff = d2 + d1 + (1000000 * d0); if (bcoeff < 0x800000) { res = (exp << 23) | bcoeff | sign; } else { res = (exp << 21) | sign | 0x60000000 | (bcoeff & 0x1fffff); } res |= nanb; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid_dpd_to_bid64 (BID_UINT64 * pres, BID_UINT64 * pda) { BID_UINT64 da = *pda; #else DFP_WRAPFN_DFP(64, bid_dpd_to_bid64, 64) BID_UINT64 bid_dpd_to_bid64 (BID_UINT64 da) { #endif BID_UINT64 in = *(BID_UINT64 *) & da; BID_UINT64 res; BID_UINT64 sign, comb, exp; BID_UINT64 trailing; // BID_UINT64 d0, d1, d2, d3, d4, d5; BID_UINT64 d1, d2; BID_UINT32 d0, d3, d4, d5; BID_UINT64 bcoeff; BID_UINT64 nanb = 0; //printf("arg dpd "BID_FMT_LLX16" \n", in); sign = (in & 0x8000000000000000ull); comb = (in & 0x7ffc000000000000ull) >> 50; trailing = (in & 0x0003ffffffffffffull); if ((comb & 0x1f00) == 0x1e00) { // G0..G4 = 11110 -> Inf res = in & 0xf800000000000000ull; BID_RETURN (res); } else if ((comb & 0x1f00) == 0x1f00) { // G0..G5 = 11111 -> NaN nanb = in & 0xfe00000000000000ull; exp = 0; d0 = 0; } else { // Normal number if ((comb & 0x1800) == 0x1800) { // G0..G1 = 11 -> d0 = 8 + G4 d0 = ((comb >> 8) & 1) | 8; // d0 = (comb & 0x0100 ? 9 : 8); exp = (comb & 0x600) >> 1; // exp = (comb & 0x0400 ? 1 : 0) * 0x200 + (comb & 0x0200 ? 1 : 0) * 0x100; // exp leading bits are G2..G3 } else { d0 = (comb >> 8) & 0x7; exp = (comb & 0x1800) >> 3; // exp = (comb & 0x1000 ? 1 : 0) * 0x200 + (comb & 0x0800 ? 1 : 0) * 0x100; // exp loading bits are G0..G1 } } d1 = bid_d2b5[(trailing >> 40) & 0x3ff]; d2 = bid_d2b4[(trailing >> 30) & 0x3ff]; d3 = bid_d2b3[(trailing >> 20) & 0x3ff]; d4 = bid_d2b2[(trailing >> 10) & 0x3ff]; d5 = bid_d2b[(trailing) & 0x3ff]; bcoeff = (d5 + d4 + d3) + d2 + d1 + (1000000000000000ull * d0); exp += (comb & 0xff); res = very_fast_get_BID64 (sign, exp, bcoeff); res |= nanb; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid_to_dpd128 (BID_UINT128 * pres, BID_UINT128 * pba) { BID_UINT128 ba = *pba; #else DFP_WRAPFN_DFP(128, bid_to_dpd128, 128) BID_UINT128 bid_to_dpd128 (BID_UINT128 ba) { #endif BID_UINT128 res; BID_UINT128 sign; BID_UINT32 comb, exp; BID_UINT128 trailing; BID_UINT128 d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11; BID_UINT128 bcoeff; BID_UINT128 dcoeff; BID_UINT64 nanb = 0; sign.w[1] = (ba.w[BID_HIGH_128W] & 0x8000000000000000ull); sign.w[0] = 0; comb = (ba.w[BID_HIGH_128W] & 0x7fffc00000000000ull) >> 46; trailing.w[1] = (ba.w[BID_HIGH_128W] & 0x00003fffffffffffull); trailing.w[0] = ba.w[BID_LOW_128W]; exp = 0; if ((comb & 0x1f000) == 0x1e000) { // G0..G4 = 11110 -> Inf res.w[BID_HIGH_128W] = ba.w[BID_HIGH_128W] & 0xf800000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); // Detect NaN, and canonicalize trailing } else if ((comb & 0x1f000) == 0x1f000) { if ((trailing.w[1] > 0x0000314dc6448d93ULL) || // significand is non-canonical ((trailing.w[1] == 0x0000314dc6448d93ULL) && (trailing.w[0] >= 0x38c15b0a00000000ULL)) // significand is non-canonical ) { trailing.w[1] = trailing.w[0] = 0ull; } bcoeff.w[1] = trailing.w[1]; bcoeff.w[0] = trailing.w[0]; nanb = ba.w[BID_HIGH_128W] & 0xfe00000000000000ull; exp = 0; } else { // Normal number if ((comb & 0x18000) == 0x18000) { // G0..G1 = 11 -> exp is G2..G11 exp = (comb >> 1) & 0x3fff; bcoeff.w[1] = ((BID_UINT64) (8 + (comb & 1)) << (BID_UINT64) 46) | trailing.w[1]; bcoeff.w[0] = trailing.w[0]; } else { exp = (comb >> 3) & 0x3fff; bcoeff.w[1] = ((BID_UINT64) (comb & 7) << (BID_UINT64) 46) | trailing.w[1]; bcoeff.w[0] = trailing.w[0]; } // Zero the coefficient if non-canonical (>= 10^34) if (bcoeff.w[1] > 0x1ed09bead87c0ull || (bcoeff.w[1] == 0x1ed09bead87c0ull && bcoeff.w[0] >= 0x378D8E6400000000ull)) { bcoeff.w[0] = bcoeff.w[1] = 0; } } // Constant 2^128 / 1000 + 1 { BID_UINT128 t; BID_UINT64 t2; BID_UINT128 d1000; BID_UINT128 b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1; d1000.w[1] = 0x4189374BC6A7EFull; d1000.w[0] = 0x9DB22D0E56041894ull; __mul_128x128_high (b11, bcoeff, d1000); __mul_128x128_high (b10, b11, d1000); __mul_128x128_high (b9, b10, d1000); __mul_128x128_high (b8, b9, d1000); __mul_128x128_high (b7, b8, d1000); __mul_128x128_high (b6, b7, d1000); __mul_128x128_high (b5, b6, d1000); __mul_128x128_high (b4, b5, d1000); __mul_128x128_high (b3, b4, d1000); __mul_128x128_high (b2, b3, d1000); __mul_128x128_high (b1, b2, d1000); __mul_64x128_full (t2, t, 1000ull, b11); __sub_128_128 (d11, bcoeff, t); __mul_64x128_full (t2, t, 1000ull, b10); __sub_128_128 (d10, b11, t); __mul_64x128_full (t2, t, 1000ull, b9); __sub_128_128 (d9, b10, t); __mul_64x128_full (t2, t, 1000ull, b8); __sub_128_128 (d8, b9, t); __mul_64x128_full (t2, t, 1000ull, b7); __sub_128_128 (d7, b8, t); __mul_64x128_full (t2, t, 1000ull, b6); __sub_128_128 (d6, b7, t); __mul_64x128_full (t2, t, 1000ull, b5); __sub_128_128 (d5, b6, t); __mul_64x128_full (t2, t, 1000ull, b4); __sub_128_128 (d4, b5, t); __mul_64x128_full (t2, t, 1000ull, b3); __sub_128_128 (d3, b4, t); __mul_64x128_full (t2, t, 1000ull, b2); __sub_128_128 (d2, b3, t); __mul_64x128_full (t2, t, 1000ull, b1); __sub_128_128 (d1, b2, t); d0 = b1; } dcoeff.w[0] = bid_b2d[d11.w[0]] | (bid_b2d[d10.w[0]] << 10) | (bid_b2d[d9.w[0]] << 20) | (bid_b2d[d8.w[0]] << 30) | (bid_b2d[d7.w[0]] << 40) | (bid_b2d[d6.w[0]] << 50) | (bid_b2d[d5.w[0]] << 60); dcoeff.w[1] = (bid_b2d[d5.w[0]] >> 4) | (bid_b2d[d4.w[0]] << 6) | (bid_b2d[d3.w[0]] << 16) | (bid_b2d[d2.w[0]] << 26) | (bid_b2d[d1.w[0]] << 36); res.w[0] = dcoeff.w[0]; if (d0.w[0] >= 8) { res.w[1] = sign. w[1] | ((0x18000 | ((exp >> 12) << 13) | ((d0.w[0] & 1) << 12) | (exp & 0xfff)) << 46) | dcoeff.w[1]; } else { res.w[1] = sign. w[1] | ((((exp >> 12) << 15) | (d0.w[0] << 12) | (exp & 0xfff)) << 46) | dcoeff.w[1]; } res.w[1] |= nanb; BID_SWAP128 (res); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid_dpd_to_bid128 (BID_UINT128 * pres, BID_UINT128 * pda) { BID_UINT128 da = *pda; #else DFP_WRAPFN_DFP(128, bid_dpd_to_bid128, 128) BID_UINT128 bid_dpd_to_bid128 (BID_UINT128 da) { #endif BID_UINT128 in = *(BID_UINT128 *) & da; BID_UINT128 res; BID_UINT128 sign; BID_UINT64 exp, comb; BID_UINT128 trailing; BID_UINT64 d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11; BID_UINT128 bcoeff; BID_UINT64 tl, th; BID_UINT64 nanb = 0; sign.w[1] = (in.w[BID_HIGH_128W] & 0x8000000000000000ull); sign.w[0] = 0; comb = (in.w[BID_HIGH_128W] & 0x7fffc00000000000ull) >> 46; trailing.w[1] = (in.w[BID_HIGH_128W] & 0x00003fffffffffffull); trailing.w[0] = in.w[BID_LOW_128W]; exp = 0; if ((comb & 0x1f000) == 0x1e000) { // G0..G4 = 11110 -> Inf res.w[BID_HIGH_128W] = in.w[BID_HIGH_128W] & 0xf800000000000000ull; res.w[BID_LOW_128W] = 0ull; BID_RETURN (res); } else if ((comb & 0x1f000) == 0x1f000) { // G0..G4 = 11111 -> NaN nanb = in.w[BID_HIGH_128W] & 0xfe00000000000000ull; exp = 0; d0 = 0; } else { // Normal number if ((comb & 0x18000) == 0x18000) { // G0..G1 = 11 -> d0 = 8 + G4 d0 = 8 + (comb & 0x01000 ? 1 : 0); exp = (comb & 0x04000 ? 1 : 0) * 0x2000 + (comb & 0x02000 ? 1 : 0) * 0x1000; // exp leading bits are G2..G3 } else { d0 = 4 * (comb & 0x04000 ? 1 : 0) + 2 * (comb & 0x2000 ? 1 : 0) + (comb & 0x1000 ? 1 : 0); exp = (comb & 0x10000 ? 1 : 0) * 0x2000 + (comb & 0x08000 ? 1 : 0) * 0x1000; // exp loading bits are G0..G1 } } d11 = bid_d2b[(trailing.w[0]) & 0x3ff]; d10 = bid_d2b[(trailing.w[0] >> 10) & 0x3ff]; d9 = bid_d2b[(trailing.w[0] >> 20) & 0x3ff]; d8 = bid_d2b[(trailing.w[0] >> 30) & 0x3ff]; d7 = bid_d2b[(trailing.w[0] >> 40) & 0x3ff]; d6 = bid_d2b[(trailing.w[0] >> 50) & 0x3ff]; d5 = bid_d2b[(trailing.w[0] >> 60) | ((trailing.w[1] & 0x3f) << 4)]; d4 = bid_d2b[(trailing.w[1] >> 6) & 0x3ff]; d3 = bid_d2b[(trailing.w[1] >> 16) & 0x3ff]; d2 = bid_d2b[(trailing.w[1] >> 26) & 0x3ff]; d1 = bid_d2b[(trailing.w[1] >> 36) & 0x3ff]; tl = d11 + (d10 * 1000ull) + (d9 * 1000000ull) + (d8 * 1000000000ull) + (d7 * 1000000000000ull) + (d6 * 1000000000000000ull); th = d5 + (d4 * 1000ull) + (d3 * 1000000ull) + (d2 * 1000000000ull) + (d1 * 1000000000000ull) + (d0 * 1000000000000000ull); __mul_64x64_to_128 (bcoeff, th, 1000000000000000000ull); __add_128_64 (bcoeff, bcoeff, tl); if (!nanb) exp += (comb & 0xfff); res.w[0] = bcoeff.w[0]; res.w[1] = (exp << 49) | sign.w[1] | bcoeff.w[1]; res.w[1] |= nanb; BID_SWAP128 (res); BID_RETURN (res); } LIBRARY/src/bid128_atanh.c0000644€­ Q01134020000001022115113665770014142 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_F128_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 BID128_FUNCTION_ARG1 (bid128_atanh, x) BID_UINT128 CX, xn, one, one_m_x, res, tmp, y; BID_UINT64 sign_x; int exponent_x; BID_F128_TYPE rq, xq; // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value_BLE (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN if ((x.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = (CX.w[BID_HIGH_128W]) & QUIET_MASK64; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; BID_RETURN (res); } // x is Infinity? if ((x.w[BID_HIGH_128W] & 0x7800000000000000ull) == 0x7800000000000000ull) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = 0x7c00000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } // x is 0 res.w[BID_HIGH_128W] = sign_x | CX.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; BID_RETURN (res); } if(exponent_x <= DECIMAL_EXPONENT_BIAS_128 - 51) { res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; BID_RETURN (res); } // |x| xn.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0x7fffffffffffffffull; xn.w[BID_LOW_128W] = x.w[BID_LOW_128W]; // 1.0 one.w[BID_HIGH_128W] = 0x3040000000000000ull; one.w[BID_LOW_128W] = 1; // 1 - |x| BIDECIMAL_CALL2 (bid128_sub, one_m_x, one, xn); if(one_m_x.w[BID_HIGH_128W] & 0x8000000000000000ull) { // |x|>1 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = 0x7c00000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } if((!one_m_x.w[BID_LOW_128W]) && !(one_m_x.w[BID_HIGH_128W]<<15)) { // |x|==1 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif res.w[BID_HIGH_128W] = sign_x | 0x7800000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } // (2*|x|)/(1-|x|) BIDECIMAL_CALL2 (bid128_div, tmp, xn, one_m_x); BIDECIMAL_CALL2 (bid128_add, y, tmp, tmp); BIDECIMAL_CALL1 (bid128_to_binary128, xq, y); __bid_f128_log1p(rq, xq); __bid_f128_mul(rq, rq, c_half.v); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); res.w[BID_HIGH_128W] ^= sign_x; BID_RETURN (res); } LIBRARY/src/bid_div_macros.h0000644€­ Q01134020000003441715113665770014764 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef _DIV_MACROS_H_ #define _DIV_MACROS_H_ #include "bid_internal.h" //#define DOUBLE_EXTENDED_ON #if DOUBLE_EXTENDED_ON __BID_INLINE__ void bid___div_128_by_128 (BID_UINT128 * pCQ, BID_UINT128 * pCR, BID_UINT128 CX, BID_UINT128 CY) { BID_UINT128 CB2, CB4, CB8, CQB, CA; int_double d64, dm64, ds; int_float t64; double dx, dq, dqh; BINARY80 lq, lx, ly; BID_UINT64 Rh, Ph, Ql, Ql2, carry, Qh; if (!CY.w[1]) { pCR->w[1] = 0; if (!CX.w[1]) { pCQ->w[0] = CX.w[0] / CY.w[0]; pCQ->w[1] = 0; pCR->w[1] = 0; pCR->w[0] = CX.w[0] - pCQ->w[0] * CY.w[0]; return; } else if(CY.w[0]<0xd000000000000000ull) { // This path works for CX<2^116 only // 2^64 d64.i = 0x43f0000000000000ull; // 2^64 dm64.i = 0x3bf0000000000000ull; // 1.5*2^(-52) ds.i = 0x3cb8000000000000ull; dx = (BINARY80) CX.w[1] * d64.d + (BINARY80) CX.w[0]; dq = dx / (BINARY80) CY.w[0]; dq -= dq * (ds.d); dqh = dq * dm64.d; Qh = (BID_UINT64) dqh; Ql = (BID_UINT64) (dq - ((double) Qh) * d64.d); //printf("Qh=%016I64x, Ql=%016I64x\n",Qh, Ql); Rh = CX.w[0] - Ql * CY.w[0]; Ql2 = Rh / CY.w[0]; pCR->w[0] = Rh - Ql2 * CY.w[0]; __add_carry_out ((pCQ->w[0]), carry, Ql, Ql2); pCQ->w[1] = Qh + carry; return; } } // now CY.w[1] > 0 or CY.[0]>=13*2^(60) // 2^64 t64.i = 0x5f800000; lx = (BINARY80) CX.w[1] * (BINARY80) t64.d + (BINARY80) CX.w[0]; ly = (BINARY80) CY.w[1] * (BINARY80) t64.d + (BINARY80) CY.w[0]; lq = lx / ly; pCQ->w[0] = (BID_UINT64) lq; pCQ->w[1] = 0; if (!pCQ->w[0]) { /*if(__unsigned_compare_ge_128(CX,CY)) { pCQ->w[0] = 1; __sub_128_128((*pCR), CX, CY); } else */ { pCR->w[1] = CX.w[1]; pCR->w[0] = CX.w[0]; } return; } if (CY.w[1] >= 16 || pCQ->w[0] <= 0x1000000000000000ull) { pCQ->w[0] = (BID_UINT64) lq - 1; __mul_64x128_full (Ph, CQB, (pCQ->w[0]), CY); __sub_128_128 (CA, CX, CQB); if (__unsigned_compare_ge_128 (CA, CY)) { __sub_128_128 (CA, CA, CY); pCQ->w[0]++; if (__unsigned_compare_ge_128 (CA, CY)) { __sub_128_128 (CA, CA, CY); pCQ->w[0]++; } } pCR->w[1] = CA.w[1]; pCR->w[0] = CA.w[0]; } else { pCQ->w[0] = (BID_UINT64) lq - 6; __mul_64x128_full (Ph, CQB, (pCQ->w[0]), CY); __sub_128_128 (CA, CX, CQB); CB8.w[1] = (CY.w[1] << 3) | (CY.w[0] >> 61); CB8.w[0] = CY.w[0] << 3; CB4.w[1] = (CY.w[1] << 2) | (CY.w[0] >> 62); CB4.w[0] = CY.w[0] << 2; CB2.w[1] = (CY.w[1] << 1) | (CY.w[0] >> 63); CB2.w[0] = CY.w[0] << 1; if (__unsigned_compare_ge_128 (CA, CB8)) { pCQ->w[0] += 8; __sub_128_128 (CA, CA, CB8); } if (__unsigned_compare_ge_128 (CA, CB4)) { pCQ->w[0] += 4; __sub_128_128 (CA, CA, CB4); } if (__unsigned_compare_ge_128 (CA, CB2)) { pCQ->w[0] += 2; __sub_128_128 (CA, CA, CB2); } if (__unsigned_compare_ge_128 (CA, CY)) { pCQ->w[0] += 1; __sub_128_128 (CA, CA, CY); } pCR->w[1] = CA.w[1]; pCR->w[0] = CA.w[0]; } } __BID_INLINE__ void bid___div_256_by_128 (BID_UINT128 * pCQ, BID_UINT256 * pCA4, BID_UINT128 CY) { BID_UINT256 CQ2Y; BID_UINT128 CQ2, CQ3Y; BID_UINT64 Q3, carry64; int_double d64; BINARY80 lx, ly, lq, l64, l128; // 2^64 d64.i = 0x43f0000000000000ull; l64 = (BINARY80) d64.d; // 2^128 l128 = l64 * l64; lx = ((BINARY80) (*pCA4).w[3] * l64 + (BINARY80) (*pCA4).w[2]) * l128 + (BINARY80) (*pCA4).w[1] * l64 + (BINARY80) (*pCA4).w[0]; ly = (BINARY80) CY.w[1] * l128 + (BINARY80) CY.w[0] * l64; lq = lx / ly; CQ2.w[1] = (BID_UINT64) lq; lq = (lq - CQ2.w[1]) * l64; CQ2.w[0] = (BID_UINT64) lq; // CQ2*CY __mul_128x128_to_256 (CQ2Y, CY, CQ2); // CQ2Y <= (*pCA4) ? if (CQ2Y.w[3] < (*pCA4).w[3] || (CQ2Y.w[3] == (*pCA4).w[3] && (CQ2Y.w[2] < (*pCA4).w[2] || (CQ2Y.w[2] == (*pCA4).w[2] && (CQ2Y.w[1] < (*pCA4).w[1] || (CQ2Y.w[1] == (*pCA4).w[1] && (CQ2Y.w[0] <= (*pCA4).w[0]))))))) { // (*pCA4) -CQ2Y, guaranteed below 5*2^49*CY < 5*2^(49+128) __sub_borrow_out ((*pCA4).w[0], carry64, (*pCA4).w[0], CQ2Y.w[0]); __sub_borrow_in_out ((*pCA4).w[1], carry64, (*pCA4).w[1], CQ2Y.w[1], carry64); (*pCA4).w[2] = (*pCA4).w[2] - CQ2Y.w[2] - carry64; lx = ((BINARY80) (*pCA4).w[2] * l128 + ((BINARY80) (*pCA4).w[1] * l64 + (BINARY80) (*pCA4).w[0])) * l64; lq = lx / ly; Q3 = (BID_UINT64) lq; if (Q3) { Q3--; __mul_64x128_short (CQ3Y, Q3, CY); __sub_borrow_out ((*pCA4).w[0], carry64, (*pCA4).w[0], CQ3Y.w[0]); (*pCA4).w[1] = (*pCA4).w[1] - CQ3Y.w[1] - carry64; if ((*pCA4).w[1] > CY.w[1] || ((*pCA4).w[1] == CY.w[1] && (*pCA4).w[0] >= CY.w[0])) { Q3++; __sub_borrow_out ((*pCA4).w[0], carry64, (*pCA4).w[0], CY.w[0]); (*pCA4).w[1] = (*pCA4).w[1] - CY.w[1] - carry64; if ((*pCA4).w[1] > CY.w[1] || ((*pCA4).w[1] == CY.w[1] && (*pCA4).w[0] >= CY.w[0])) { Q3++; __sub_borrow_out ((*pCA4).w[0], carry64, (*pCA4).w[0], CY.w[0]); (*pCA4).w[1] = (*pCA4).w[1] - CY.w[1] - carry64; } } // add Q3 to Q2 __add_carry_out (CQ2.w[0], carry64, Q3, CQ2.w[0]); CQ2.w[1] += carry64; } } else { // CQ2Y - (*pCA4), guaranteed below 5*2^(49+128) __sub_borrow_out ((*pCA4).w[0], carry64, CQ2Y.w[0], (*pCA4).w[0]); __sub_borrow_in_out ((*pCA4).w[1], carry64, CQ2Y.w[1], (*pCA4).w[1], carry64); (*pCA4).w[2] = CQ2Y.w[2] - (*pCA4).w[2] - carry64; lx = ((BINARY80) (*pCA4).w[2] * l128 + (BINARY80) (*pCA4).w[1] * l64 + (BINARY80) (*pCA4).w[0]) * l64; lq = lx / ly; Q3 = 1 + (BID_UINT64) lq; __mul_64x128_short (CQ3Y, Q3, CY); __sub_borrow_out ((*pCA4).w[0], carry64, CQ3Y.w[0], (*pCA4).w[0]); (*pCA4).w[1] = CQ3Y.w[1] - (*pCA4).w[1] - carry64; if ((BID_SINT64) (*pCA4).w[1] > (BID_SINT64) CY.w[1] || ((*pCA4).w[1] == CY.w[1] && (*pCA4).w[0] >= CY.w[0])) { Q3--; __sub_borrow_out ((*pCA4).w[0], carry64, (*pCA4).w[0], CY.w[0]); (*pCA4).w[1] = (*pCA4).w[1] - CY.w[1] - carry64; } else if ((BID_SINT64) (*pCA4).w[1] < 0) { Q3++; __add_carry_out ((*pCA4).w[0], carry64, (*pCA4).w[0], CY.w[0]); (*pCA4).w[1] = (*pCA4).w[1] + CY.w[1] + carry64; } // subtract Q3 from Q2 __sub_borrow_out (CQ2.w[0], carry64, CQ2.w[0], Q3); CQ2.w[1] -= carry64; } // (*pCQ) + CQ2 + carry __add_carry_out ((*pCQ).w[0], carry64, CQ2.w[0], (*pCQ).w[0]); (*pCQ).w[1] = (*pCQ).w[1] + CQ2.w[1] + carry64; } #else __BID_INLINE__ void bid___div_128_by_128 (BID_UINT128 * pCQ, BID_UINT128 * pCR, BID_UINT128 CX0, BID_UINT128 CY) { BID_UINT128 CY36, CY51, CQ, A2, CX, CQT; BID_UINT64 Q; int_double t64, d49, d60; double lx, ly, lq; if (!CX0.w[1] && !CY.w[1]) { pCQ->w[0] = CX0.w[0] / CY.w[0]; pCQ->w[1] = 0; pCR->w[1] = pCR->w[0] = 0; pCR->w[0] = CX0.w[0] - pCQ->w[0] * CY.w[0]; return; } CX.w[1] = CX0.w[1]; CX.w[0] = CX0.w[0]; // 2^64 t64.i = 0x43f0000000000000ull; lx = (double) CX.w[1] * t64.d + (double) CX.w[0]; ly = (double) CY.w[1] * t64.d + (double) CY.w[0]; lq = lx / ly; CY36.w[1] = CY.w[0] >> (64 - 36); CY36.w[0] = CY.w[0] << 36; CQ.w[1] = CQ.w[0] = 0; // Q >= 2^100 ? if (!CY.w[1] && !CY36.w[1] && (CX.w[1] >= CY36.w[0])) { // then Q >= 2^100 // 2^(-60)*CX/CY d60.i = 0x3c30000000000000ull; lq *= d60.d; Q = (BID_UINT64) lq - 4ull; // Q*CY __mul_64x64_to_128 (A2, Q, CY.w[0]); // A2 <<= 60 A2.w[1] = (A2.w[1] << 60) | (A2.w[0] >> (64 - 60)); A2.w[0] <<= 60; __sub_128_128 (CX, CX, A2); lx = (double) CX.w[1] * t64.d + (double) CX.w[0]; lq = lx / ly; CQ.w[1] = Q >> (64 - 60); CQ.w[0] = Q << 60; } CY51.w[1] = (CY.w[1] << 51) | (CY.w[0] >> (64 - 51)); CY51.w[0] = CY.w[0] << 51; if (CY.w[1] < (BID_UINT64) (1 << (64 - 51)) && (__unsigned_compare_gt_128 (CX, CY51))) { // Q > 2^51 // 2^(-49)*CX/CY d49.i = 0x3ce0000000000000ull; lq *= d49.d; Q = (BID_UINT64) lq - 1ull; // Q*CY __mul_64x64_to_128 (A2, Q, CY.w[0]); A2.w[1] += Q * CY.w[1]; // A2 <<= 49 A2.w[1] = (A2.w[1] << 49) | (A2.w[0] >> (64 - 49)); A2.w[0] <<= 49; __sub_128_128 (CX, CX, A2); CQT.w[1] = Q >> (64 - 49); CQT.w[0] = Q << 49; __add_128_128 (CQ, CQ, CQT); lx = (double) CX.w[1] * t64.d + (double) CX.w[0]; lq = lx / ly; } Q = (BID_UINT64) lq; __mul_64x64_to_128 (A2, Q, CY.w[0]); A2.w[1] += Q * CY.w[1]; __sub_128_128 (CX, CX, A2); if ((BID_SINT64) CX.w[1] < 0) { Q--; CX.w[0] += CY.w[0]; if (CX.w[0] < CY.w[0]) CX.w[1]++; CX.w[1] += CY.w[1]; if ((BID_SINT64) CX.w[1] < 0) { Q--; CX.w[0] += CY.w[0]; if (CX.w[0] < CY.w[0]) CX.w[1]++; CX.w[1] += CY.w[1]; } } else if (__unsigned_compare_ge_128 (CX, CY)) { Q++; __sub_128_128 (CX, CX, CY); } __add_128_64 (CQ, CQ, Q); pCQ->w[1] = CQ.w[1]; pCQ->w[0] = CQ.w[0]; pCR->w[1] = CX.w[1]; pCR->w[0] = CX.w[0]; return; } __BID_INLINE__ void bid___div_256_by_128 (BID_UINT128 * pCQ, BID_UINT256 * pCA4, BID_UINT128 CY) { BID_UINT256 CA4, CA2, CY51, CY36; BID_UINT128 CQ, A2, A2h, CQT; BID_UINT64 Q, carry64; int_double t64, d49, d60; double lx, ly, lq, d128, d192; // the quotient is assumed to be at most 113 bits, // as needed by BID128 divide routines // initial dividend CA4.w[3] = (*pCA4).w[3]; CA4.w[2] = (*pCA4).w[2]; CA4.w[1] = (*pCA4).w[1]; CA4.w[0] = (*pCA4).w[0]; CQ.w[1] = (*pCQ).w[1]; CQ.w[0] = (*pCQ).w[0]; // 2^64 t64.i = 0x43f0000000000000ull; d128 = t64.d * t64.d; d192 = d128 * t64.d; lx = (double) CA4.w[3] * d192 + ((double) CA4.w[2] * d128 + ((double) CA4.w[1] * t64.d + (double) CA4.w[0])); ly = (double) CY.w[1] * t64.d + (double) CY.w[0]; lq = lx / ly; CY36.w[2] = CY.w[1] >> (64 - 36); CY36.w[1] = (CY.w[1] << 36) | (CY.w[0] >> (64 - 36)); CY36.w[0] = CY.w[0] << 36; //CQ.w[1] = (*pCQ).w[1]; //CQ.w[0] = (*pCQ).w[0]; // Q >= 2^100 ? if (CA4.w[3] > CY36.w[2] || (CA4.w[3] == CY36.w[2] && (CA4.w[2] > CY36.w[1] || (CA4.w[2] == CY36.w[1] && CA4.w[1] >= CY36.w[0])))) { // 2^(-60)*CA4/CY d60.i = 0x3c30000000000000ull; lq *= d60.d; Q = (BID_UINT64) lq - 4ull; // Q*CY __mul_64x128_to_192 (CA2, Q, CY); // CA2 <<= 60 // CA2.w[3] = CA2.w[2] >> (64-60); CA2.w[2] = (CA2.w[2] << 60) | (CA2.w[1] >> (64 - 60)); CA2.w[1] = (CA2.w[1] << 60) | (CA2.w[0] >> (64 - 60)); CA2.w[0] <<= 60; // CA4 -= CA2 __sub_borrow_out (CA4.w[0], carry64, CA4.w[0], CA2.w[0]); __sub_borrow_in_out (CA4.w[1], carry64, CA4.w[1], CA2.w[1], carry64); CA4.w[2] = CA4.w[2] - CA2.w[2] - carry64; lx = ((double) CA4.w[2] * d128 + ((double) CA4.w[1] * t64.d + (double) CA4.w[0])); lq = lx / ly; CQT.w[1] = Q >> (64 - 60); CQT.w[0] = Q << 60; __add_128_128 (CQ, CQ, CQT); } CY51.w[2] = CY.w[1] >> (64 - 51); CY51.w[1] = (CY.w[1] << 51) | (CY.w[0] >> (64 - 51)); CY51.w[0] = CY.w[0] << 51; if (CA4.w[2] > CY51.w[2] || ((CA4.w[2] == CY51.w[2]) && (__unsigned_compare_gt_128 (CA4, CY51)))) { // Q > 2^51 // 2^(-49)*CA4/CY d49.i = 0x3ce0000000000000ull; lq *= d49.d; Q = (BID_UINT64) lq - 1ull; // Q*CY __mul_64x64_to_128 (A2, Q, CY.w[0]); __mul_64x64_to_128 (A2h, Q, CY.w[1]); A2.w[1] += A2h.w[0]; if (A2.w[1] < A2h.w[0]) A2h.w[1]++; // A2 <<= 49 CA2.w[2] = (A2h.w[1] << 49) | (A2.w[1] >> (64 - 49)); CA2.w[1] = (A2.w[1] << 49) | (A2.w[0] >> (64 - 49)); CA2.w[0] = A2.w[0] << 49; __sub_borrow_out (CA4.w[0], carry64, CA4.w[0], CA2.w[0]); __sub_borrow_in_out (CA4.w[1], carry64, CA4.w[1], CA2.w[1], carry64); CA4.w[2] = CA4.w[2] - CA2.w[2] - carry64; CQT.w[1] = Q >> (64 - 49); CQT.w[0] = Q << 49; __add_128_128 (CQ, CQ, CQT); lx = ((double) CA4.w[2] * d128 + ((double) CA4.w[1] * t64.d + (double) CA4.w[0])); lq = lx / ly; } Q = (BID_UINT64) lq; __mul_64x64_to_128 (A2, Q, CY.w[0]); A2.w[1] += Q * CY.w[1]; __sub_128_128 (CA4, CA4, A2); if ((BID_SINT64) CA4.w[1] < 0) { Q--; CA4.w[0] += CY.w[0]; if (CA4.w[0] < CY.w[0]) CA4.w[1]++; CA4.w[1] += CY.w[1]; if ((BID_SINT64) CA4.w[1] < 0) { Q--; CA4.w[0] += CY.w[0]; if (CA4.w[0] < CY.w[0]) CA4.w[1]++; CA4.w[1] += CY.w[1]; } } else if (__unsigned_compare_ge_128 (CA4, CY)) { Q++; __sub_128_128 (CA4, CA4, CY); } __add_128_64 (CQ, CQ, Q); pCQ->w[1] = CQ.w[1]; pCQ->w[0] = CQ.w[0]; pCA4->w[1] = CA4.w[1]; pCA4->w[0] = CA4.w[0]; return; } #endif #endif LIBRARY/src/bid128_2_str_tables.c0000644€­ Q01134020000007647515113665770015461 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_UINT64 bid_Twoto60_m_10to18 = 152921504606846976LL; BID_UINT64 bid_Twoto60 = 0x1000000000000000LL; BID_UINT64 bid_Inv_Tento9 = 2305843009LL; /* floor(2^61/10^9) */ BID_UINT32 bid_Twoto30_m_10to9 = 73741824; BID_UINT32 bid_Tento9 = 1000000000; BID_UINT32 bid_Tento6 = 1000000; BID_UINT32 bid_Tento3 = 1000; const char bid_midi_tbl[1000][3] = { "000", "001", "002", "003", "004", "005", "006", "007", "008", "009", "010", "011", "012", "013", "014", "015", "016", "017", "018", "019", "020", "021", "022", "023", "024", "025", "026", "027", "028", "029", "030", "031", "032", "033", "034", "035", "036", "037", "038", "039", "040", "041", "042", "043", "044", "045", "046", "047", "048", "049", "050", "051", "052", "053", "054", "055", "056", "057", "058", "059", "060", "061", "062", "063", "064", "065", "066", "067", "068", "069", "070", "071", "072", "073", "074", "075", "076", "077", "078", "079", "080", "081", "082", "083", "084", "085", "086", "087", "088", "089", "090", "091", "092", "093", "094", "095", "096", "097", "098", "099", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", "210", "211", "212", "213", "214", "215", "216", "217", "218", "219", "220", "221", "222", "223", "224", "225", "226", "227", "228", "229", "230", "231", "232", "233", "234", "235", "236", "237", "238", "239", "240", "241", "242", "243", "244", "245", "246", "247", "248", "249", "250", "251", "252", "253", "254", "255", "256", "257", "258", "259", "260", "261", "262", "263", "264", "265", "266", "267", "268", "269", "270", "271", "272", "273", "274", "275", "276", "277", "278", "279", "280", "281", "282", "283", "284", "285", "286", "287", "288", "289", "290", "291", "292", "293", "294", "295", "296", "297", "298", "299", "300", "301", "302", "303", "304", "305", "306", "307", "308", "309", "310", "311", "312", "313", "314", "315", "316", "317", "318", "319", "320", "321", "322", "323", "324", "325", "326", "327", "328", "329", "330", "331", "332", "333", "334", "335", "336", "337", "338", "339", "340", "341", "342", "343", "344", "345", "346", "347", "348", "349", "350", "351", "352", "353", "354", "355", "356", "357", "358", "359", "360", "361", "362", "363", "364", "365", "366", "367", "368", "369", "370", "371", "372", "373", "374", "375", "376", "377", "378", "379", "380", "381", "382", "383", "384", "385", "386", "387", "388", "389", "390", "391", "392", "393", "394", "395", "396", "397", "398", "399", "400", "401", "402", "403", "404", "405", "406", "407", "408", "409", "410", "411", "412", "413", "414", "415", "416", "417", "418", "419", "420", "421", "422", "423", "424", "425", "426", "427", "428", "429", "430", "431", "432", "433", "434", "435", "436", "437", "438", "439", "440", "441", "442", "443", "444", "445", "446", "447", "448", "449", "450", "451", "452", "453", "454", "455", "456", "457", "458", "459", "460", "461", "462", "463", "464", "465", "466", "467", "468", "469", "470", "471", "472", "473", "474", "475", "476", "477", "478", "479", "480", "481", "482", "483", "484", "485", "486", "487", "488", "489", "490", "491", "492", "493", "494", "495", "496", "497", "498", "499", "500", "501", "502", "503", "504", "505", "506", "507", "508", "509", "510", "511", "512", "513", "514", "515", "516", "517", "518", "519", "520", "521", "522", "523", "524", "525", "526", "527", "528", "529", "530", "531", "532", "533", "534", "535", "536", "537", "538", "539", "540", "541", "542", "543", "544", "545", "546", "547", "548", "549", "550", "551", "552", "553", "554", "555", "556", "557", "558", "559", "560", "561", "562", "563", "564", "565", "566", "567", "568", "569", "570", "571", "572", "573", "574", "575", "576", "577", "578", "579", "580", "581", "582", "583", "584", "585", "586", "587", "588", "589", "590", "591", "592", "593", "594", "595", "596", "597", "598", "599", "600", "601", "602", "603", "604", "605", "606", "607", "608", "609", "610", "611", "612", "613", "614", "615", "616", "617", "618", "619", "620", "621", "622", "623", "624", "625", "626", "627", "628", "629", "630", "631", "632", "633", "634", "635", "636", "637", "638", "639", "640", "641", "642", "643", "644", "645", "646", "647", "648", "649", "650", "651", "652", "653", "654", "655", "656", "657", "658", "659", "660", "661", "662", "663", "664", "665", "666", "667", "668", "669", "670", "671", "672", "673", "674", "675", "676", "677", "678", "679", "680", "681", "682", "683", "684", "685", "686", "687", "688", "689", "690", "691", "692", "693", "694", "695", "696", "697", "698", "699", "700", "701", "702", "703", "704", "705", "706", "707", "708", "709", "710", "711", "712", "713", "714", "715", "716", "717", "718", "719", "720", "721", "722", "723", "724", "725", "726", "727", "728", "729", "730", "731", "732", "733", "734", "735", "736", "737", "738", "739", "740", "741", "742", "743", "744", "745", "746", "747", "748", "749", "750", "751", "752", "753", "754", "755", "756", "757", "758", "759", "760", "761", "762", "763", "764", "765", "766", "767", "768", "769", "770", "771", "772", "773", "774", "775", "776", "777", "778", "779", "780", "781", "782", "783", "784", "785", "786", "787", "788", "789", "790", "791", "792", "793", "794", "795", "796", "797", "798", "799", "800", "801", "802", "803", "804", "805", "806", "807", "808", "809", "810", "811", "812", "813", "814", "815", "816", "817", "818", "819", "820", "821", "822", "823", "824", "825", "826", "827", "828", "829", "830", "831", "832", "833", "834", "835", "836", "837", "838", "839", "840", "841", "842", "843", "844", "845", "846", "847", "848", "849", "850", "851", "852", "853", "854", "855", "856", "857", "858", "859", "860", "861", "862", "863", "864", "865", "866", "867", "868", "869", "870", "871", "872", "873", "874", "875", "876", "877", "878", "879", "880", "881", "882", "883", "884", "885", "886", "887", "888", "889", "890", "891", "892", "893", "894", "895", "896", "897", "898", "899", "900", "901", "902", "903", "904", "905", "906", "907", "908", "909", "910", "911", "912", "913", "914", "915", "916", "917", "918", "919", "920", "921", "922", "923", "924", "925", "926", "927", "928", "929", "930", "931", "932", "933", "934", "935", "936", "937", "938", "939", "940", "941", "942", "943", "944", "945", "946", "947", "948", "949", "950", "951", "952", "953", "954", "955", "956", "957", "958", "959", "960", "961", "962", "963", "964", "965", "966", "967", "968", "969", "970", "971", "972", "973", "974", "975", "976", "977", "978", "979", "980", "981", "982", "983", "984", "985", "986", "987", "988", "989", "990", "991", "992", "993", "994", "995", "996", "997", "998", "999" }; const BID_UINT64 mod10_18_tbl[9][128] = { // 2^59 = 576460752303423488, A and B breakdown, where data = A*10^18 + B { 0LL, 0LL, 0LL, 576460752303423488LL, // 0*2^59, 1*2^59 1LL, 152921504606846976LL, 1LL, 729382256910270464LL, // 2*2^59, 3*2^59 2LL, 305843009213693952LL, 2LL, 882303761517117440LL, // 4*2^59, 5*2^59 3LL, 458764513820540928LL, 4LL, 35225266123964416LL, // 6*2^59, 7*2^59 4LL, 611686018427387904LL, 5LL, 188146770730811392LL, // 8*2^59, 9*2^59 5LL, 764607523034234880LL, 6LL, 341068275337658368LL, // 10*2^59, 11*2^59 6LL, 917529027641081856LL, 7LL, 493989779944505344LL, // 12*2^59, 13*2^59 8LL, 70450532247928832LL, 8LL, 646911284551352320LL, // 14*2^59, 15*2^59 9LL, 223372036854775808LL, 9LL, 799832789158199296LL, // 16*2^59, 17*2^59 10LL, 376293541461622784LL, 10LL, 952754293765046272LL, // 18*2^59, 19*2^59 11LL, 529215046068469760LL, 12LL, 105675798371893248LL, // 20*2^59, 21*2^59 12LL, 682136550675316736LL, 13LL, 258597302978740224LL, // 22*2^59, 23*2^59 13LL, 835058055282163712LL, 14LL, 411518807585587200LL, // 24*2^59, 25*2^59 14LL, 987979559889010688LL, 15LL, 564440312192434176LL, // 26*2^59, 27*2^59 16LL, 140901064495857664LL, 16LL, 717361816799281152LL, // 28*2^59, 29*2^59 17LL, 293822569102704640LL, 17LL, 870283321406128128LL, // 30*2^59, 31*2^59 18LL, 446744073709551616LL, 19LL, 23204826012975104LL, // 32*2^59, 33*2^59 19LL, 599665578316398592LL, 20LL, 176126330619822080LL, // 34*2^59, 35*2^59 20LL, 752587082923245568LL, 21LL, 329047835226669056LL, // 36*2^59, 37*2^59 21LL, 905508587530092544LL, 22LL, 481969339833516032LL, // 38*2^59, 39*2^59 23LL, 58430092136939520LL, 23LL, 634890844440363008LL, // 40*2^59, 41*2^59 24LL, 211351596743786496LL, 24LL, 787812349047209984LL, // 42*2^59, 43*2^59 25LL, 364273101350633472LL, 25LL, 940733853654056960LL, // 44*2^59, 45*2^59 26LL, 517194605957480448LL, 27LL, 93655358260903936LL, // 46*2^59, 47*2^59 27LL, 670116110564327424LL, 28LL, 246576862867750912LL, // 48*2^59, 49*2^59 28LL, 823037615171174400LL, 29LL, 399498367474597888LL, // 50*2^59, 51*2^59 29LL, 975959119778021376LL, 30LL, 552419872081444864LL, // 52*2^59, 53*2^59 31LL, 128880624384868352LL, 31LL, 705341376688291840LL, // 54*2^59, 55*2^59 32LL, 281802128991715328LL, 32LL, 858262881295138816LL, // 56*2^59, 57*2^59 33LL, 434723633598562304LL, 34LL, 11184385901985792LL, // 58*2^59, 59*2^59 34LL, 587645138205409280LL, 35LL, 164105890508832768LL, // 60*2^59, 61*2^59 35LL, 740566642812256256LL, 36LL, 317027395115679744LL, // 62*2^59, 63*2^59 }, { // 2^65 = 36*10^18 + 893488147419103232 0LL, 0LL, 36LL, 893488147419103232LL, // 0*2^65, 1*2^65 73LL, 786976294838206464LL, 110LL, 680464442257309696LL, // 2*2^65, 3*2^65 147LL, 573952589676412928LL, 184LL, 467440737095516160LL, // 4*2^65, 5*2^65 221LL, 360928884514619392LL, 258LL, 254417031933722624LL, // 6*2^65, 7*2^65 295LL, 147905179352825856LL, 332LL, 41393326771929088LL, // 8*2^65, 9*2^65 368LL, 934881474191032320LL, 405LL, 828369621610135552LL, // 0*2^65, 1*2^65 442LL, 721857769029238784LL, 479LL, 615345916448342016LL, // 2*2^65, 3*2^65 516LL, 508834063867445248LL, 553LL, 402322211286548480LL, // 4*2^65, 5*2^65 590LL, 295810358705651712LL, 627LL, 189298506124754944LL, // 6*2^65, 7*2^65 664LL, 82786653543858176LL, 700LL, 976274800962961408LL, // 8*2^65, 9*2^65 737LL, 869762948382064640LL, 774LL, 763251095801167872LL, // 0*2^65, 1*2^65 811LL, 656739243220271104LL, 848LL, 550227390639374336LL, // 2*2^65, 3*2^65 885LL, 443715538058477568LL, 922LL, 337203685477580800LL, // 4*2^65, 5*2^65 959LL, 230691832896684032LL, 996LL, 124179980315787264LL, // 6*2^65, 7*2^65 1033LL, 17668127734890496LL, 1069LL, 911156275153993728LL, // 8*2^65, 9*2^65 1106LL, 804644422573096960LL, 1143LL, 698132569992200192LL, // 0*2^65, 1*2^65 1180LL, 591620717411303424LL, 1217LL, 485108864830406656LL, // 2*2^65, 3*2^65 1254LL, 378597012249509888LL, 1291LL, 272085159668613120LL, // 4*2^65, 5*2^65 1328LL, 165573307087716352LL, 1365LL, 59061454506819584LL, // 6*2^65, 7*2^65 1401LL, 952549601925922816LL, 1438LL, 846037749345026048LL, // 8*2^65, 9*2^65 1475LL, 739525896764129280LL, 1512LL, 633014044183232512LL, // 0*2^65, 1*2^65 1549LL, 526502191602335744LL, 1586LL, 419990339021438976LL, // 2*2^65, 3*2^65 1623LL, 313478486440542208LL, 1660LL, 206966633859645440LL, // 4*2^65, 5*2^65 1697LL, 100454781278748672LL, 1733LL, 993942928697851904LL, // 6*2^65, 7*2^65 1770LL, 887431076116955136LL, 1807LL, 780919223536058368LL, // 8*2^65, 9*2^65 1844LL, 674407370955161600LL, 1881LL, 567895518374264832LL, // 0*2^65, 1*2^65 1918LL, 461383665793368064LL, 1955LL, 354871813212471296LL, // 2*2^65, 3*2^65 1992LL, 248359960631574528LL, 2029LL, 141848108050677760LL, // 4*2^65, 5*2^65 2066LL, 35336255469780992LL, 2102LL, 928824402888884224LL, // 6*2^65, 7*2^65 2139LL, 822312550307987456LL, 2176LL, 715800697727090688LL, // 8*2^65, 9*2^65 2213LL, 609288845146193920LL, 2250LL, 502776992565297152LL, // 0*2^65, 1*2^65 2287LL, 396265139984400384LL, 2324LL, 289753287403503616LL, // 2*2^65, 3*2^65 }, { 0LL, 0LL, 2361LL, 183241434822606848LL, 4722LL, 366482869645213696LL, 7083LL, 549724304467820544LL, 9444LL, 732965739290427392LL, 11805LL, 916207174113034240LL, 14167LL, 99448608935641088LL, 16528LL, 282690043758247936LL, 18889LL, 465931478580854784LL, 21250LL, 649172913403461632LL, 23611LL, 832414348226068480LL, 25973LL, 15655783048675328LL, 28334LL, 198897217871282176LL, 30695LL, 382138652693889024LL, 33056LL, 565380087516495872LL, 35417LL, 748621522339102720LL, 37778LL, 931862957161709568LL, 40140LL, 115104391984316416LL, 42501LL, 298345826806923264LL, 44862LL, 481587261629530112LL, 47223LL, 664828696452136960LL, 49584LL, 848070131274743808LL, 51946LL, 31311566097350656LL, 54307LL, 214553000919957504LL, 56668LL, 397794435742564352LL, 59029LL, 581035870565171200LL, 61390LL, 764277305387778048LL, 63751LL, 947518740210384896LL, 66113LL, 130760175032991744LL, 68474LL, 314001609855598592LL, 70835LL, 497243044678205440LL, 73196LL, 680484479500812288LL, 75557LL, 863725914323419136LL, 77919LL, 46967349146025984LL, 80280LL, 230208783968632832LL, 82641LL, 413450218791239680LL, 85002LL, 596691653613846528LL, 87363LL, 779933088436453376LL, 89724LL, 963174523259060224LL, 92086LL, 146415958081667072LL, 94447LL, 329657392904273920LL, 96808LL, 512898827726880768LL, 99169LL, 696140262549487616LL, 101530LL, 879381697372094464LL, 103892LL, 62623132194701312LL, 106253LL, 245864567017308160LL, 108614LL, 429106001839915008LL, 110975LL, 612347436662521856LL, 113336LL, 795588871485128704LL, 115697LL, 978830306307735552LL, 118059LL, 162071741130342400LL, 120420LL, 345313175952949248LL, 122781LL, 528554610775556096LL, 125142LL, 711796045598162944LL, 127503LL, 895037480420769792LL, 129865LL, 78278915243376640LL, 132226LL, 261520350065983488LL, 134587LL, 444761784888590336LL, 136948LL, 628003219711197184LL, 139309LL, 811244654533804032LL, 141670LL, 994486089356410880LL, 144032LL, 177727524179017728LL, 146393LL, 360968959001624576LL, 148754LL, 544210393824231424LL, }, { 0LL, 0LL, 151115LL, 727451828646838272LL, 302231LL, 454903657293676544LL, 453347LL, 182355485940514816LL, 604462LL, 909807314587353088LL, 755578LL, 637259143234191360LL, 906694LL, 364710971881029632LL, 1057810LL, 92162800527867904LL, 1208925LL, 819614629174706176LL, 1360041LL, 547066457821544448LL, 1511157LL, 274518286468382720LL, 1662273LL, 1970115115220992LL, 1813388LL, 729421943762059264LL, 1964504LL, 456873772408897536LL, 2115620LL, 184325601055735808LL, 2266735LL, 911777429702574080LL, 2417851LL, 639229258349412352LL, 2568967LL, 366681086996250624LL, 2720083LL, 94132915643088896LL, 2871198LL, 821584744289927168LL, 3022314LL, 549036572936765440LL, 3173430LL, 276488401583603712LL, 3324546LL, 3940230230441984LL, 3475661LL, 731392058877280256LL, 3626777LL, 458843887524118528LL, 3777893LL, 186295716170956800LL, 3929008LL, 913747544817795072LL, 4080124LL, 641199373464633344LL, 4231240LL, 368651202111471616LL, 4382356LL, 96103030758309888LL, 4533471LL, 823554859405148160LL, 4684587LL, 551006688051986432LL, 4835703LL, 278458516698824704LL, 4986819LL, 5910345345662976LL, 5137934LL, 733362173992501248LL, 5289050LL, 460814002639339520LL, 5440166LL, 188265831286177792LL, 5591281LL, 915717659933016064LL, 5742397LL, 643169488579854336LL, 5893513LL, 370621317226692608LL, 6044629LL, 98073145873530880LL, 6195744LL, 825524974520369152LL, 6346860LL, 552976803167207424LL, 6497976LL, 280428631814045696LL, 6649092LL, 7880460460883968LL, 6800207LL, 735332289107722240LL, 6951323LL, 462784117754560512LL, 7102439LL, 190235946401398784LL, 7253554LL, 917687775048237056LL, 7404670LL, 645139603695075328LL, 7555786LL, 372591432341913600LL, 7706902LL, 100043260988751872LL, 7858017LL, 827495089635590144LL, 8009133LL, 554946918282428416LL, 8160249LL, 282398746929266688LL, 8311365LL, 9850575576104960LL, 8462480LL, 737302404222943232LL, 8613596LL, 464754232869781504LL, 8764712LL, 192206061516619776LL, 8915827LL, 919657890163458048LL, 9066943LL, 647109718810296320LL, 9218059LL, 374561547457134592LL, 9369175LL, 102013376103972864LL, 9520290LL, 829465204750811136LL, }, { 0LL, 0LL, 9671406LL, 556917033397649408LL, 19342813LL, 113834066795298816LL, 29014219LL, 670751100192948224LL, 38685626LL, 227668133590597632LL, 48357032LL, 784585166988247040LL, 58028439LL, 341502200385896448LL, 67699845LL, 898419233783545856LL, 77371252LL, 455336267181195264LL, 87042659LL, 12253300578844672LL, 96714065LL, 569170333976494080LL, 106385472LL, 126087367374143488LL, 116056878LL, 683004400771792896LL, 125728285LL, 239921434169442304LL, 135399691LL, 796838467567091712LL, 145071098LL, 353755500964741120LL, 154742504LL, 910672534362390528LL, 164413911LL, 467589567760039936LL, 174085318LL, 24506601157689344LL, 183756724LL, 581423634555338752LL, 193428131LL, 138340667952988160LL, 203099537LL, 695257701350637568LL, 212770944LL, 252174734748286976LL, 222442350LL, 809091768145936384LL, 232113757LL, 366008801543585792LL, 241785163LL, 922925834941235200LL, 251456570LL, 479842868338884608LL, 261127977LL, 36759901736534016LL, 270799383LL, 593676935134183424LL, 280470790LL, 150593968531832832LL, 290142196LL, 707511001929482240LL, 299813603LL, 264428035327131648LL, 309485009LL, 821345068724781056LL, 319156416LL, 378262102122430464LL, 328827822LL, 935179135520079872LL, 338499229LL, 492096168917729280LL, 348170636LL, 49013202315378688LL, 357842042LL, 605930235713028096LL, 367513449LL, 162847269110677504LL, 377184855LL, 719764302508326912LL, 386856262LL, 276681335905976320LL, 396527668LL, 833598369303625728LL, 406199075LL, 390515402701275136LL, 415870481LL, 947432436098924544LL, 425541888LL, 504349469496573952LL, 435213295LL, 61266502894223360LL, 444884701LL, 618183536291872768LL, 454556108LL, 175100569689522176LL, 464227514LL, 732017603087171584LL, 473898921LL, 288934636484820992LL, 483570327LL, 845851669882470400LL, 493241734LL, 402768703280119808LL, 502913140LL, 959685736677769216LL, 512584547LL, 516602770075418624LL, 522255954LL, 73519803473068032LL, 531927360LL, 630436836870717440LL, 541598767LL, 187353870268366848LL, 551270173LL, 744270903666016256LL, 560941580LL, 301187937063665664LL, 570612986LL, 858104970461315072LL, 580284393LL, 415022003858964480LL, 589955799LL, 971939037256613888LL, 599627206LL, 528856070654263296LL, 609298613LL, 85773104051912704LL, }, { 0LL, 0LL, 618970019LL, 642690137449562112LL, 1237940039LL, 285380274899124224LL, 1856910058LL, 928070412348686336LL, 2475880078LL, 570760549798248448LL, 3094850098LL, 213450687247810560LL, 3713820117LL, 856140824697372672LL, 4332790137LL, 498830962146934784LL, 4951760157LL, 141521099596496896LL, 5570730176LL, 784211237046059008LL, 6189700196LL, 426901374495621120LL, 6808670216LL, 69591511945183232LL, 7427640235LL, 712281649394745344LL, 8046610255LL, 354971786844307456LL, 8665580274LL, 997661924293869568LL, 9284550294LL, 640352061743431680LL, 9903520314LL, 283042199192993792LL, 10522490333LL, 925732336642555904LL, 11141460353LL, 568422474092118016LL, 11760430373LL, 211112611541680128LL, 12379400392LL, 853802748991242240LL, 12998370412LL, 496492886440804352LL, 13617340432LL, 139183023890366464LL, 14236310451LL, 781873161339928576LL, 14855280471LL, 424563298789490688LL, 15474250491LL, 67253436239052800LL, 16093220510LL, 709943573688614912LL, 16712190530LL, 352633711138177024LL, 17331160549LL, 995323848587739136LL, 17950130569LL, 638013986037301248LL, 18569100589LL, 280704123486863360LL, 19188070608LL, 923394260936425472LL, 19807040628LL, 566084398385987584LL, 20426010648LL, 208774535835549696LL, 21044980667LL, 851464673285111808LL, 21663950687LL, 494154810734673920LL, 22282920707LL, 136844948184236032LL, 22901890726LL, 779535085633798144LL, 23520860746LL, 422225223083360256LL, 24139830766LL, 64915360532922368LL, 24758800785LL, 707605497982484480LL, 25377770805LL, 350295635432046592LL, 25996740824LL, 992985772881608704LL, 26615710844LL, 635675910331170816LL, 27234680864LL, 278366047780732928LL, 27853650883LL, 921056185230295040LL, 28472620903LL, 563746322679857152LL, 29091590923LL, 206436460129419264LL, 29710560942LL, 849126597578981376LL, 30329530962LL, 491816735028543488LL, 30948500982LL, 134506872478105600LL, 31567471001LL, 777197009927667712LL, 32186441021LL, 419887147377229824LL, 32805411041LL, 62577284826791936LL, 33424381060LL, 705267422276354048LL, 34043351080LL, 347957559725916160LL, 34662321099LL, 990647697175478272LL, 35281291119LL, 633337834625040384LL, 35900261139LL, 276027972074602496LL, 36519231158LL, 918718109524164608LL, 37138201178LL, 561408246973726720LL, 37757171198LL, 204098384423288832LL, 38376141217LL, 846788521872850944LL, 38995111237LL, 489478659322413056LL, }, { 0LL, 0LL, 39614081257LL, 132168796771975168LL, 79228162514LL, 264337593543950336LL, 118842243771LL, 396506390315925504LL, 158456325028LL, 528675187087900672LL, 198070406285LL, 660843983859875840LL, 237684487542LL, 793012780631851008LL, 277298568799LL, 925181577403826176LL, 316912650057LL, 57350374175801344LL, 356526731314LL, 189519170947776512LL, 396140812571LL, 321687967719751680LL, 435754893828LL, 453856764491726848LL, 475368975085LL, 586025561263702016LL, 514983056342LL, 718194358035677184LL, 554597137599LL, 850363154807652352LL, 594211218856LL, 982531951579627520LL, 633825300114LL, 114700748351602688LL, 673439381371LL, 246869545123577856LL, 713053462628LL, 379038341895553024LL, 752667543885LL, 511207138667528192LL, 792281625142LL, 643375935439503360LL, 831895706399LL, 775544732211478528LL, 871509787656LL, 907713528983453696LL, 911123868914LL, 39882325755428864LL, 950737950171LL, 172051122527404032LL, 990352031428LL, 304219919299379200LL, 1029966112685LL, 436388716071354368LL, 1069580193942LL, 568557512843329536LL, 1109194275199LL, 700726309615304704LL, 1148808356456LL, 832895106387279872LL, 1188422437713LL, 965063903159255040LL, 1228036518971LL, 97232699931230208LL, 1267650600228LL, 229401496703205376LL, 1307264681485LL, 361570293475180544LL, 1346878762742LL, 493739090247155712LL, 1386492843999LL, 625907887019130880LL, 1426106925256LL, 758076683791106048LL, 1465721006513LL, 890245480563081216LL, 1505335087771LL, 22414277335056384LL, 1544949169028LL, 154583074107031552LL, 1584563250285LL, 286751870879006720LL, 1624177331542LL, 418920667650981888LL, 1663791412799LL, 551089464422957056LL, 1703405494056LL, 683258261194932224LL, 1743019575313LL, 815427057966907392LL, 1782633656570LL, 947595854738882560LL, 1822247737828LL, 79764651510857728LL, 1861861819085LL, 211933448282832896LL, 1901475900342LL, 344102245054808064LL, 1941089981599LL, 476271041826783232LL, 1980704062856LL, 608439838598758400LL, 2020318144113LL, 740608635370733568LL, 2059932225370LL, 872777432142708736LL, 2099546306628LL, 4946228914683904LL, 2139160387885LL, 137115025686659072LL, 2178774469142LL, 269283822458634240LL, 2218388550399LL, 401452619230609408LL, 2258002631656LL, 533621416002584576LL, 2297616712913LL, 665790212774559744LL, 2337230794170LL, 797959009546534912LL, 2376844875427LL, 930127806318510080LL, 2416458956685LL, 62296603090485248LL, 2456073037942LL, 194465399862460416LL, 2495687119199LL, 326634196634435584LL, }, { 0LL, 0LL, 2535301200456LL, 458802993406410752LL, 5070602400912LL, 917605986812821504LL, 7605903601369LL, 376408980219232256LL, 10141204801825LL, 835211973625643008LL, 12676506002282LL, 294014967032053760LL, 15211807202738LL, 752817960438464512LL, 17747108403195LL, 211620953844875264LL, 20282409603651LL, 670423947251286016LL, 22817710804108LL, 129226940657696768LL, 25353012004564LL, 588029934064107520LL, 27888313205021LL, 46832927470518272LL, 30423614405477LL, 505635920876929024LL, 32958915605933LL, 964438914283339776LL, 35494216806390LL, 423241907689750528LL, 38029518006846LL, 882044901096161280LL, 40564819207303LL, 340847894502572032LL, 43100120407759LL, 799650887908982784LL, 45635421608216LL, 258453881315393536LL, 48170722808672LL, 717256874721804288LL, 50706024009129LL, 176059868128215040LL, 53241325209585LL, 634862861534625792LL, 55776626410042LL, 93665854941036544LL, 58311927610498LL, 552468848347447296LL, 60847228810955LL, 11271841753858048LL, 63382530011411LL, 470074835160268800LL, 65917831211867LL, 928877828566679552LL, 68453132412324LL, 387680821973090304LL, 70988433612780LL, 846483815379501056LL, 73523734813237LL, 305286808785911808LL, 76059036013693LL, 764089802192322560LL, 78594337214150LL, 222892795598733312LL, 81129638414606LL, 681695789005144064LL, 83664939615063LL, 140498782411554816LL, 86200240815519LL, 599301775817965568LL, 88735542015976LL, 58104769224376320LL, 91270843216432LL, 516907762630787072LL, 93806144416888LL, 975710756037197824LL, 96341445617345LL, 434513749443608576LL, 98876746817801LL, 893316742850019328LL, 101412048018258LL, 352119736256430080LL, 103947349218714LL, 810922729662840832LL, 106482650419171LL, 269725723069251584LL, 109017951619627LL, 728528716475662336LL, 111553252820084LL, 187331709882073088LL, 114088554020540LL, 646134703288483840LL, 116623855220997LL, 104937696694894592LL, 119159156421453LL, 563740690101305344LL, 121694457621910LL, 22543683507716096LL, 124229758822366LL, 481346676914126848LL, 126765060022822LL, 940149670320537600LL, 129300361223279LL, 398952663726948352LL, 131835662423735LL, 857755657133359104LL, 134370963624192LL, 316558650539769856LL, 136906264824648LL, 775361643946180608LL, 139441566025105LL, 234164637352591360LL, 141976867225561LL, 692967630759002112LL, 144512168426018LL, 151770624165412864LL, 147047469626474LL, 610573617571823616LL, 149582770826931LL, 69376610978234368LL, 152118072027387LL, 528179604384645120LL, 154653373227843LL, 986982597791055872LL, 157188674428300LL, 445785591197466624LL, 159723975628756LL, 904588584603877376LL, }, { 0LL, 0LL, 162259276829213LL, 363391578010288128LL, 324518553658426LL, 726783156020576256LL, 486777830487640LL, 90174734030864384LL, 649037107316853LL, 453566312041152512LL, 811296384146066LL, 816957890051440640LL, 973555660975280LL, 180349468061728768LL, 1135814937804493LL, 543741046072016896LL, 1298074214633706LL, 907132624082305024LL, 1460333491462920LL, 270524202092593152LL, 1622592768292133LL, 633915780102881280LL, 1784852045121346LL, 997307358113169408LL, 1947111321950560LL, 360698936123457536LL, 2109370598779773LL, 724090514133745664LL, 2271629875608987LL, 87482092144033792LL, 2433889152438200LL, 450873670154321920LL, 2596148429267413LL, 814265248164610048LL, 2758407706096627LL, 177656826174898176LL, 2920666982925840LL, 541048404185186304LL, 3082926259755053LL, 904439982195474432LL, 3245185536584267LL, 267831560205762560LL, 3407444813413480LL, 631223138216050688LL, 3569704090242693LL, 994614716226338816LL, 3731963367071907LL, 358006294236626944LL, 3894222643901120LL, 721397872246915072LL, 4056481920730334LL, 84789450257203200LL, 4218741197559547LL, 448181028267491328LL, 4381000474388760LL, 811572606277779456LL, 4543259751217974LL, 174964184288067584LL, 4705519028047187LL, 538355762298355712LL, 4867778304876400LL, 901747340308643840LL, 5030037581705614LL, 265138918318931968LL, 5192296858534827LL, 628530496329220096LL, 5354556135364040LL, 991922074339508224LL, 5516815412193254LL, 355313652349796352LL, 5679074689022467LL, 718705230360084480LL, 5841333965851681LL, 82096808370372608LL, 6003593242680894LL, 445488386380660736LL, 6165852519510107LL, 808879964390948864LL, 6328111796339321LL, 172271542401236992LL, 6490371073168534LL, 535663120411525120LL, 6652630349997747LL, 899054698421813248LL, 6814889626826961LL, 262446276432101376LL, 6977148903656174LL, 625837854442389504LL, 7139408180485387LL, 989229432452677632LL, 7301667457314601LL, 352621010462965760LL, 7463926734143814LL, 716012588473253888LL, 7626186010973028LL, 79404166483542016LL, 7788445287802241LL, 442795744493830144LL, 7950704564631454LL, 806187322504118272LL, 8112963841460668LL, 169578900514406400LL, 8275223118289881LL, 532970478524694528LL, 8437482395119094LL, 896362056534982656LL, 8599741671948308LL, 259753634545270784LL, 8762000948777521LL, 623145212555558912LL, 8924260225606734LL, 986536790565847040LL, 9086519502435948LL, 349928368576135168LL, 9248778779265161LL, 713319946586423296LL, 9411038056094375LL, 76711524596711424LL, 9573297332923588LL, 440103102606999552LL, 9735556609752801LL, 803494680617287680LL, 9897815886582015LL, 166886258627575808LL, 10060075163411228LL, 530277836637863936LL, 10222334440240441LL, 893669414648152064LL} }; LIBRARY/src/bid64_asin.c0000644€­ Q01134020000000744515113665770013736 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" #define BID64_1 0x31c0000000000001ull // NaN for values |x| > 1 #define BID64_NAN 0x7c00000000000000ull BID_F80_CONST_DEF( c_9_10ths, 3ffecccccccccccc, cccccccccccccccd); // .9 BID_F80_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F80_CONST_DEF( c_two, 4000000000000000, 0000000000000000); // 2.0 BID_F80_CONST_DEF( c_zero, 0000000000000000, 0000000000000000); // 0.0 BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_asin, BID_UINT64, x) // Declare local variables BID_UINT64 res, t, t1 = BID64_1; BID_F80_TYPE xd, td, yd, abs_xd, rt; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Convert to binary BIDECIMAL_CALL1(bid64_to_binary80,xd,x); // If the input is not too close to +/- 1 then do it "naively" __bid_f80_fabs(abs_xd, xd); if (__bid_f80_le(abs_xd, c_9_10ths.v)) { __bid_f80_asin( yd, xd); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } // If the input is > 1 in magnitude, fail else if (__bid_f80_gt(abs_xd, c_one.v)) { res = BID64_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(res) } // Otherwise compute sqrt(1 - x^2) accurately and use acos instead. // Use 1 - |x| as direct decimal computation, since direct fma would // give only about working precision error near +1 else { BIDECIMAL_CALL1_NORND_NOSTAT(bid64_abs,t,x); BIDECIMAL_CALL2(bid64_sub,t,t1,t); BIDECIMAL_CALL1(bid64_to_binary80,td,t); __bid_f80_sub(rt, c_two.v, td); __bid_f80_mul(td, rt, td); __bid_f80_sqrt(yd, td); __bid_f80_acos(yd, yd); if (__bid_f80_lt(xd, c_zero.v) ) __bid_f80_neg(yd, yd); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } } LIBRARY/src/bid64_logb.c0000644€­ Q01134020000000533015113665770013716 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define MAX_FORMAT_DIGITS 16 #define DECIMAL_EXPONENT_BIAS 398 BID_TYPE0_FUNCTION_ARGTYPE1_NORND(int, bid64_ilogb, BID_UINT64, x) BID_UINT64 sign_x, coefficient_x; int_double dx; int exponent_x, bin_expon_cx, digits, res; // unpack arguments, check for NaN or Infinity if (!unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x)) { // x is Inf. or NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = ((x & 0x7c00000000000000ull) == 0x7800000000000000ull) ? 0x7fffffff : 0x80000000; BID_RETURN (res); } // find number of digits in coefficient if (coefficient_x >= 1000000000000000ull) { digits = 16; } else { dx.d = (double)coefficient_x; // exact conversion; bin_expon_cx = (int)(dx.i >> 52) - 1023; digits = bid_estimate_decimal_digits[bin_expon_cx]; if (coefficient_x >= bid_power10_table_128[digits].w[0]) digits++; } exponent_x = exponent_x - DECIMAL_EXPONENT_BIAS + digits - 1; BID_RETURN (exponent_x); } LIBRARY/src/bid128_logb.c0000644€­ Q01134020000000546215113665770014005 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #define BID_128RES #include "bid_internal.h" BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE(int, bid128_ilogb, x) BID_UINT128 CX; BID_UINT64 sign_x; BID_SINT64 D; int_float f64, fx; int exponent_x, bin_expon_cx, digits, res; BID_OPT_SAVE_BINARY_FLAGS() if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = ((x.w[1] & 0x7c00000000000000ull) == 0x7800000000000000ull)? 0x7fffffff : 0x80000000; BID_RETURN_VAL (res); } // find number of digits in coefficient // 2^64 f64.i = 0x5f800000; // fx ~ CX fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; bin_expon_cx = ((fx.i >> 23) & 0xff) - 0x7f; digits = bid_estimate_decimal_digits[bin_expon_cx]; // scale = 38-estimate_decimal_digits[bin_expon_cx]; D = CX.w[1] - bid_power10_index_binexp_128[bin_expon_cx].w[1]; if (D > 0 || (!D && CX.w[0] >= bid_power10_index_binexp_128[bin_expon_cx].w[0])) { digits++; } exponent_x = exponent_x - DECIMAL_EXPONENT_BIAS_128 - 1 + digits; BID_RETURN_VAL (exponent_x); } LIBRARY/src/bid128_fdimd.c0000644€­ Q01134020000000604115113665770014137 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID128 fdim ****************************************************************************/ /* fdim returns x - y if x > y, and +0 is x <= y Exceptions: P, O, I (U could only be unmasked, which is not supported) */ BID128_FUNCTION_ARG2 (bid128_fdim, x, y) BID_UINT128 res; int cmpres; BID_FPSC tmp_fpsf = 0; // dummy fpsf for calls to comparison functions tmp_fpsf = *pfpsf; // save fpsf #if DECIMAL_CALL_BY_REFERENCE bid128_quiet_greater (&cmpres, &x, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else cmpres = bid128_quiet_greater (x, y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif *pfpsf = tmp_fpsf; // restore fpsf if (((x.w[BID_HIGH_128W] & MASK_NAN) != MASK_NAN) && ((y.w[BID_HIGH_128W] & MASK_NAN) != MASK_NAN) && !cmpres) { // if x != NaN and y != NaN and x <= y return +0 res.w[BID_HIGH_128W] = 0x3040000000000000ull; res.w[BID_LOW_128W] = 0x0000000000000000ull; BID_RETURN (res); } // else if x = NaN or y = NaN or x > y return x - y #if DECIMAL_CALL_BY_REFERENCE bid128_sub (&res, &x, &y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid128_sub (x, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } LIBRARY/src/bid_fesetexceptflag.c0000644€­ Q01134020000000434315113665770015775 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if !defined (_MSC_VER) || defined (__INTEL_COMPILER) #include #endif #include "bid_internal.h" void bid_fesetexceptflag( const fexcept_t *flagp, int excepts _EXC_FLAGS_PARAM ) { _IDEC_flags new_sw; /* Take only supported exceptions */ excepts &= DEC_FE_ALL_EXCEPT; if( excepts ) { /* Do we have anything to do? */ // clear exceptions in the given mask new_sw = get_bid_sw() & ~excepts; // set flags according to *flagp parameter new_sw |= (*flagp & excepts); // set BID status word set_bid_sw(new_sw); } } LIBRARY/src/bid64_quantumd.c0000644€­ Q01134020000000530015113665770014626 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_quantumd ****************************************************************************/ /* Exceptions signaled: none The quantumdN functions compute the quantum of a finite argument. If x is infinite, the result is +Inf. If x is NaN, the result is NaN. */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT64, bid64_quantum, BID_UINT64, x) BID_UINT64 res; int int_exp; // If x is infinite, the result is +Inf. If x is NaN, the result is NaN if ((x & MASK_INF) == MASK_INF) { res = x & ~SIGNMASK64; BID_RETURN (res); } else if ((x & MASK_NAN) == MASK_NAN) { res = x & QUIET_MASK64; BID_RETURN (res); } // Extract exponent if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { int_exp = (int)((x >> 51) & 0x3ff) - 398; } else { int_exp = ((int)(x >> 53) & 0x3ff) - 398; } res = (((long long int) int_exp) << 53 ) + 0x31c0000000000001ull; BID_RETURN (res); } LIBRARY/src/bid128_string.c0000644€­ Q01134020000005315715113665770014374 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID128_to_string ****************************************************************************/ #define BID_128RES #include #include "bid_internal.h" #include "bid128_2_str.h" #include "bid128_2_str_macros.h" #define MIN_DIGITS(a,b) ((a) < (b) ? (a) : (b)) BID_EXTERN_C int bid128_bid_coeff_2_string (BID_UINT64 X_hi, BID_UINT64 X_lo, char *char_ptr); #if DECIMAL_CALL_BY_REFERENCE void bid128_to_string (char *str, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x; #else VOID_WRAPFN_OTHERTYPERES_DFP(bid128_to_string, char, 128) void bid128_to_string (char *str, BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) int ind; BID_UINT128 C1; unsigned int k = 0; // pointer in the string unsigned int d0, d123; unsigned int zero_digit = (unsigned int) '0'; BID_UINT64 HI_18Dig, LO_18Dig, Tmp; BID_UINT32 MiDi[12], *ptr; char *c_ptr_start, *c_ptr; int midi_ind, k_lcv, len; int save_fpsf; #if DECIMAL_CALL_BY_REFERENCE x = *px; #endif save_fpsf = *pfpsf; // dummy BID_SWAP128(x); // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag str[0] = ((BID_SINT64)x.w[1]<0)? '-':'+'; str[1] = 'S'; str[2] = 'N'; str[3] = 'a'; str[4] = 'N'; str[5] = '\0'; } else { // x is QNaN str[0] = ((BID_SINT64)x.w[1]<0)? '-':'+'; str[1] = 'N'; str[2] = 'a'; str[3] = 'N'; str[4] = '\0'; } } else { // x is not a NaN, so it must be infinity if ((x.w[1] & MASK_SIGN) == 0x0ull) { // x is +inf str[0] = '+'; str[1] = 'I'; str[2] = 'n'; str[3] = 'f'; str[4] = '\0'; } else { // x is -inf str[0] = '-'; str[1] = 'I'; str[2] = 'n'; str[3] = 'f'; str[4] = '\0'; } } return; } else if (((x.w[1] & MASK_COEFF) == 0x0ull) && (x.w[0] == 0x0ull)) { // x is 0 len = 0; //determine if +/- if (x.w[1] & MASK_SIGN) str[len++] = '-'; else str[len++] = '+'; str[len++] = '0'; str[len++] = 'E'; // extract the exponent and print exp = (int) (((x.w[1] & MASK_EXP) >> 49) - 6176); if(exp > (((0x5ffe)>>1) - (6176))) { exp = (int) ((((x.w[1]<<2) & MASK_EXP) >> 49) - 6176); } if (exp >= 0) { str[len++] = '+'; len += sprintf (str + len, "%u", exp);// should not use sprintf (should // use sophisticated algorithm, since we know range of exp is limited) str[len++] = '\0'; } else { len += sprintf (str + len, "%d", exp);// should not use sprintf (should // use sophisticated algorithm, since we know range of exp is limited) str[len++] = '\0'; } return; } else { // x is not special and is not zero // unpack x x_sign = x.w[1] & MASK_SIGN;// 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP;// biased and shifted left 49 bit positions if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) x_exp = (x.w[1]<<2) & MASK_EXP;// biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; exp = (x_exp >> 49) - 6176; // determine sign's representation as a char if (x_sign) str[k++] = '-';// negative number else str[k++] = '+';// positive number // determine coefficient's representation as a decimal string // if zero or non-canonical, set coefficient to '0' if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) || ((C1.w[1] == 0) && (C1.w[0] == 0))) { str[k++] = '0'; } else { /* **************************************************** This takes a bid coefficient in C1.w[1],C1.w[0] and put the converted character sequence at location starting at &(str[k]). The function returns the number of MiDi returned. Note that the character sequence does not have leading zeros EXCEPT when the input is of zero value. It will then output 1 character '0' The algorithm essentailly tries first to get a sequence of Millenial Digits "MiDi" and then uses table lookup to get the character strings of these MiDis. **************************************************** */ /* Algorithm first decompose possibly 34 digits in hi and lo 18 digits. (The high can have at most 16 digits). It then uses macro that handle 18 digit portions. The first step is to get hi and lo such that 2^(64) C1.w[1] + C1.w[0] = hi * 10^18 + lo, 0 <= lo < 10^18. We use a table lookup method to obtain the hi and lo 18 digits. [C1.w[1],C1.w[0]] = c_8 2^(107) + c_7 2^(101) + ... + c_0 2^(59) + d where 0 <= d < 2^59 and each c_j has 6 bits. Because d fits in 18 digits, we set hi = 0, and lo = d to begin with. We then retrieve from a table, for j = 0, 1, ..., 8 that gives us A and B where c_j 2^(59+6j) = A * 10^18 + B. hi += A ; lo += B; After each accumulation into lo, we normalize immediately. So at the end, we have the decomposition as we need. */ Tmp = C1.w[0] >> 59; LO_18Dig = (C1.w[0] << 5) >> 5; Tmp += (C1.w[1] << 5); HI_18Dig = 0; k_lcv = 0; // Tmp = {C1.w[1]{49:0}, C1.w[0]{63:59}} // Lo_18Dig = {C1.w[0]{58:0}} while (Tmp) { midi_ind = (int) (Tmp & 0x000000000000003FLL); midi_ind <<= 1; Tmp >>= 6; HI_18Dig += mod10_18_tbl[k_lcv][midi_ind++]; LO_18Dig += mod10_18_tbl[k_lcv++][midi_ind]; __L0_Normalize_10to18 (HI_18Dig, LO_18Dig); } ptr = MiDi; if (HI_18Dig == 0LL) { __L1_Split_MiDi_6_Lead (LO_18Dig, ptr); } else { __L1_Split_MiDi_6_Lead (HI_18Dig, ptr); __L1_Split_MiDi_6 (LO_18Dig, ptr); } len = ptr - MiDi; c_ptr_start = &(str[k]); c_ptr = c_ptr_start; /* now convert the MiDi into character strings */ __L0_MiDi2Str_Lead (MiDi[0], c_ptr); for (k_lcv = 1; k_lcv < len; k_lcv++) { __L0_MiDi2Str (MiDi[k_lcv], c_ptr); } k = k + (c_ptr - c_ptr_start); } // print E and sign of exponent str[k++] = 'E'; if (exp < 0) { exp = -exp; str[k++] = '-'; } else { str[k++] = '+'; } // determine exponent's representation as a decimal string // d0 = exp / 1000; // Use Property 1 d0 = (exp * 0x418a) >> 24;// 0x418a * 2^-24 = (10^(-3))RP,15 d123 = exp - 1000 * d0; if (d0) { // 1000 <= exp <= 6144 => 4 digits to return str[k++] = d0 + zero_digit; // ASCII for decimal digit d0 ind = 3 * d123; str[k++] = bid_char_table3[ind]; str[k++] = bid_char_table3[ind + 1]; str[k++] = bid_char_table3[ind + 2]; } else { // 0 <= exp <= 999 => d0 = 0 if (d123 < 10) { // 0 <= exp <= 9 => 1 digit to return str[k++] = d123 + zero_digit; // ASCII } else if (d123 < 100) { // 10 <= exp <= 99 => 2 digits to return ind = 2 * (d123 - 10); str[k++] = bid_char_table2[ind]; str[k++] = bid_char_table2[ind + 1]; } else { // 100 <= exp <= 999 => 3 digits to return ind = 3 * d123; str[k++] = bid_char_table3[ind]; str[k++] = bid_char_table3[ind + 1]; str[k++] = bid_char_table3[ind + 2]; } } str[k] = '\0'; } return; } #define MAX_FORMAT_DIGITS_128 34 #define MAX_STRING_DIGITS_128 100 #define MAX_SEARCH MAX_STRING_DIGITS_128-MAX_FORMAT_DIGITS_128-1 #if DECIMAL_CALL_BY_REFERENCE void bid128_from_string (BID_UINT128 * pres, char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #else DFP_WRAPFN_OTHERTYPE(128, bid128_from_string, char*) BID_UINT128 bid128_from_string (char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 CX, res; BID_UINT64 sign_x, coeff_high, coeff_low, coeff2, coeff_l2, carry = 0x0ull, scale_high, right_radix_leading_zeros; int ndigits_before, ndigits_after, ndigits_total, dec_expon, sgn_exp, i, d2, rdx_pt_enc, set_inexact=0; char c, buffer[MAX_STRING_DIGITS_128]; int save_rnd_mode; int save_fpsf; int min_digits, sticky_bit=0; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif save_rnd_mode = rnd_mode; // dummy save_fpsf = *pfpsf; // dummy right_radix_leading_zeros = rdx_pt_enc = 0; // if null string, return NaN if (!ps) { res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; BID_RETURN (res); } // eliminate leading white space while ((*ps == ' ') || (*ps == '\t')) ps++; // c gets first character c = *ps; // if c is null or not equal to a (radix point, negative sign, // positive sign, or number) it might be SNaN, sNaN, Infinity if (!c || (c != '.' && c != '-' && c != '+' && ((unsigned) (c - '0') > 9))) { res.w[0] = 0; // Infinity? if ((tolower_macro (ps[0]) == 'i' && tolower_macro (ps[1]) == 'n' && tolower_macro (ps[2]) == 'f') && (!ps[3] || (tolower_macro (ps[3]) == 'i' && tolower_macro (ps[4]) == 'n' && tolower_macro (ps[5]) == 'i' && tolower_macro (ps[6]) == 't' && tolower_macro (ps[7]) == 'y' && !ps[8]) )) { res.w[1] = 0x7800000000000000ull; BID_RETURN (res); } // return sNaN if (tolower_macro (ps[0]) == 's' && tolower_macro (ps[1]) == 'n' && tolower_macro (ps[2]) == 'a' && tolower_macro (ps[3]) == 'n') { // case insensitive check for snan res.w[1] = 0x7e00000000000000ull; BID_RETURN (res); } else { // return qNaN res.w[1] = 0x7c00000000000000ull; BID_RETURN (res); } } // if +Inf, -Inf, +Infinity, or -Infinity (case insensitive check for inf) if ((tolower_macro (ps[1]) == 'i' && tolower_macro (ps[2]) == 'n' && tolower_macro (ps[3]) == 'f') && (!ps[4] || (tolower_macro (ps[4]) == 'i' && tolower_macro (ps[5]) == 'n' && tolower_macro (ps[6]) == 'i' && tolower_macro (ps[7]) == 't' && tolower_macro (ps[8]) == 'y' && !ps[9]))) { // ci check for infinity res.w[0] = 0; if (c == '+') res.w[1] = 0x7800000000000000ull; else if (c == '-') res.w[1] = 0xf800000000000000ull; else res.w[1] = 0x7c00000000000000ull; BID_RETURN (res); } // if +sNaN, +SNaN, -sNaN, or -SNaN if (tolower_macro (ps[1]) == 's' && tolower_macro (ps[2]) == 'n' && tolower_macro (ps[3]) == 'a' && tolower_macro (ps[4]) == 'n') { res.w[0] = 0; if (c == '-') res.w[1] = 0xfe00000000000000ull; else res.w[1] = 0x7e00000000000000ull; BID_RETURN (res); } // set up sign_x to be OR'ed with the upper word later if (c == '-') sign_x = 0x8000000000000000ull; else sign_x = 0; // go to next character if leading sign if (c == '-' || c == '+') ps++; c = *ps; // if c isn't a decimal point or a decimal digit, return NaN if (c != '.' && ((unsigned) (c - '0') > 9)) { res.w[1] = 0x7c00000000000000ull | sign_x; res.w[0] = 0; BID_RETURN (res); } if(c=='.') { rdx_pt_enc=1; ps++; } // detect zero (and eliminate/ignore leading zeros) if (*(ps) == '0') { // if all numbers are zeros (with possibly 1 radix point, the number is zero // should catch cases such as: 000.0 while (*ps == '0') { ps++; // for numbers such as 0.0000000000000000000000000000000000001001, // we want to count the leading zeros if (rdx_pt_enc) { right_radix_leading_zeros++; } // if this character is a radix point, make sure we haven't already // encountered one if (*(ps) == '.') { if (rdx_pt_enc == 0) { rdx_pt_enc = 1; // if this is the first radix point, and the next character is NULL, // we have a zero if (!*(ps + 1)) { res.w[1] = (0x3040000000000000ull - (right_radix_leading_zeros << 49)) | sign_x; res.w[0] = 0; BID_RETURN (res); } ps = ps + 1; } else { // if 2 radix points, return NaN res.w[1] = 0x7c00000000000000ull | sign_x; res.w[0] = 0; BID_RETURN (res); } } else if (!*(ps)) { if(right_radix_leading_zeros>6176) right_radix_leading_zeros=6176; res.w[1] = (0x3040000000000000ull - (right_radix_leading_zeros << 49)) | sign_x; res.w[0] = 0; BID_RETURN (res); } } } c = *ps; // initialize local variables ndigits_before = ndigits_after = ndigits_total = 0; sgn_exp = 0; // pstart_coefficient = ps; if (!rdx_pt_enc) { // investigate string (before radix point) while ((unsigned) (c - '0') <= 9 /*&& ndigits_before < MAX_STRING_DIGITS_128*/) { if(ndigits_before < MAX_FORMAT_DIGITS_128) buffer[ndigits_before] = c; else if(ndigits_before < MAX_STRING_DIGITS_128) { buffer[ndigits_before] = c; if(c>'0') set_inexact=1; } else if(c>'0') { set_inexact=1; sticky_bit = 1; } ps++; c = *ps; ndigits_before++; } ndigits_total = ndigits_before; if (c == '.') { ps++; if ((c = *ps)) { // investigate string (after radix point) while ((unsigned) (c - '0') <= 9 /*&& ndigits_total < MAX_STRING_DIGITS_128*/) { if(ndigits_total < MAX_FORMAT_DIGITS_128) buffer[ndigits_total] = c; else if(ndigits_total < MAX_STRING_DIGITS_128) { buffer[ndigits_total] = c; if(c>'0') set_inexact=1; } else if(c>'0') { set_inexact=1; sticky_bit = 1; } ps++; c = *ps; ndigits_total++; } ndigits_after = ndigits_total - ndigits_before; } } } else { // we encountered a radix point while detecting zeros //if (c = *ps){ c = *ps; ndigits_total = 0; // investigate string (after radix point) while ((unsigned) (c - '0') <= 9 /*&& ndigits_total < MAX_STRING_DIGITS_128*/) { if(ndigits_total < MAX_FORMAT_DIGITS_128) buffer[ndigits_total] = c; else if(ndigits_total < MAX_STRING_DIGITS_128) { buffer[ndigits_total] = c; if(c>'0') set_inexact=1; } else if(c>'0') { set_inexact=1; sticky_bit = 1; } ps++; c = *ps; ndigits_total++; } ndigits_after = ndigits_total - ndigits_before; } // get exponent dec_expon = 0; /*if (ndigits_total < MAX_STRING_DIGITS_128)*/ { if (c) { if (c != 'e' && c != 'E') { // return NaN res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; BID_RETURN (res); } ps++; c = *ps; if (((unsigned) (c - '0') > 9) && ((c != '+' && c != '-') || (unsigned) (ps[1] - '0') > 9)) { // return NaN res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; BID_RETURN (res); } if (c == '-') { sgn_exp = -1; ps++; c = *ps; } else if (c == '+') { ps++; c = (*ps); } dec_expon = c - '0'; i = 1; ps++; if(!dec_expon) { while((*ps)=='0') ps++; } c = (*ps) - '0'; while (((unsigned) c) <= 9 && i < 7) { d2 = dec_expon + dec_expon; dec_expon = (d2 << 2) + d2 + c; ps++; c = *ps - '0'; i++; } } dec_expon = (dec_expon + sgn_exp) ^ sgn_exp; } if (ndigits_total <= MAX_FORMAT_DIGITS_128) { dec_expon += DECIMAL_EXPONENT_BIAS_128 - ndigits_after - right_radix_leading_zeros; if (dec_expon < 0) { res.w[1] = 0 | sign_x; res.w[0] = 0; } if (ndigits_total == 0) { CX.w[0] = 0; CX.w[1] = 0; } else if (ndigits_total <= 19) { coeff_high = buffer[0] - '0'; for (i = 1; i < ndigits_total; i++) { coeff2 = coeff_high + coeff_high; coeff_high = (coeff2 << 2) + coeff2 + buffer[i] - '0'; } CX.w[0] = coeff_high; CX.w[1] = 0; } else { coeff_high = buffer[0] - '0'; for (i = 1; i < ndigits_total - 17; i++) { coeff2 = coeff_high + coeff_high; coeff_high = (coeff2 << 2) + coeff2 + buffer[i] - '0'; } coeff_low = buffer[i] - '0'; i++; for (; i < ndigits_total; i++) { coeff_l2 = coeff_low + coeff_low; coeff_low = (coeff_l2 << 2) + coeff_l2 + buffer[i] - '0'; } // now form the coefficient as coeff_high*10^19+coeff_low+carry scale_high = 100000000000000000ull; __mul_64x64_to_128_fast (CX, coeff_high, scale_high); CX.w[0] += coeff_low; if (CX.w[0] < coeff_low) CX.w[1]++; } bid_get_BID128 (&res, sign_x, dec_expon, CX,&rnd_mode,pfpsf); BID_RETURN (res); } else { // simply round using the digits that were read dec_expon += ndigits_before + DECIMAL_EXPONENT_BIAS_128 - MAX_FORMAT_DIGITS_128 - right_radix_leading_zeros; if (dec_expon < 0) { res.w[1] = 0 | sign_x; res.w[0] = 0; } coeff_high = buffer[0] - '0'; for (i = 1; i < MAX_FORMAT_DIGITS_128 - 17; i++) { coeff2 = coeff_high + coeff_high; coeff_high = (coeff2 << 2) + coeff2 + buffer[i] - '0'; } coeff_low = buffer[i] - '0'; i++; for (; i < MAX_FORMAT_DIGITS_128; i++) { coeff_l2 = coeff_low + coeff_low; coeff_low = (coeff_l2 << 2) + coeff_l2 + buffer[i] - '0'; } switch(rnd_mode) { case BID_ROUNDING_TO_NEAREST: carry = ((unsigned) ('4' - buffer[i])) >> 31; if ((buffer[i] == '5' && !(coeff_low & 1) && !sticky_bit) || dec_expon < 0) { if (dec_expon >= 0) { carry = 0; i++; } min_digits = MIN_DIGITS(ndigits_total, MAX_STRING_DIGITS_128); for (carry=sticky_bit; (!carry) && (i < min_digits); i++) { if (buffer[i] > '0') { carry = 1; break; } } } break; case BID_ROUNDING_DOWN: if(sign_x) { min_digits = MIN_DIGITS(ndigits_total, MAX_STRING_DIGITS_128); for (carry=sticky_bit; (!carry) && (i < min_digits); i++) { if (buffer[i] > '0') { carry = 1; break; } } } break; case BID_ROUNDING_UP: if(!sign_x) { min_digits = MIN_DIGITS(ndigits_total, MAX_STRING_DIGITS_128); for (carry=sticky_bit; (!carry) && (i < min_digits); i++) { if (buffer[i] > '0') { carry = 1; break; } } } break; case BID_ROUNDING_TO_ZERO: carry=0; break; case BID_ROUNDING_TIES_AWAY: carry = ((unsigned) ('4' - buffer[i])) >> 31; if (dec_expon < 0) { min_digits = MIN_DIGITS(ndigits_total, MAX_STRING_DIGITS_128); for (carry=sticky_bit; (!carry) && (i < min_digits); i++) { if (buffer[i] > '0') { carry = 1; break; } } } break; default: break; // default added to avoid compiler warning } // now form the coefficient as coeff_high*10^17+coeff_low+carry scale_high = 100000000000000000ull; if (dec_expon < 0) { if (dec_expon > -MAX_FORMAT_DIGITS_128) { scale_high = 1000000000000000000ull; coeff_low = (coeff_low << 3) + (coeff_low << 1); dec_expon--; } if (dec_expon == -MAX_FORMAT_DIGITS_128 && coeff_high > 50000000000000000ull) carry = 0; } __mul_64x64_to_128_fast (CX, coeff_high, scale_high); coeff_low += carry; CX.w[0] += coeff_low; if (CX.w[0] < coeff_low) CX.w[1]++; #ifdef BID_SET_STATUS_FLAGS if(set_inexact) __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif bid_get_BID128(&res, sign_x, dec_expon, CX, &rnd_mode, pfpsf); BID_RETURN (res); } } LIBRARY/src/bid32_fmod.c0000644€­ Q01134020000001463615113665770013724 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID64 remainder ***************************************************************************** * * Algorithm description: * * if(exponent_x < exponent_y) * scale coefficient_y so exponents are aligned * perform coefficient divide (64-bit integer divide), unless * coefficient_y is longer than 64 bits (clearly larger * than coefficient_x) * else // exponent_x > exponent_y * use a loop to scale coefficient_x to 18_digits, divide by * coefficient_y (64-bit integer divide), calculate remainder * as new_coefficient_x and repeat until final remainder is obtained * (when new_exponent_x < exponent_y) * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT32, bid32_fmod, BID_UINT32, x, BID_UINT32, y) BID_UINT64 CX, Q64, CYL; BID_UINT32 CY, sign_x, sign_y, coefficient_x, coefficient_y, res; BID_UINT32 Q, R, T, valid_y, valid_x; int_float tempx; int exponent_x, exponent_y, bin_expon, e_scale; int digits_x, diff_expon; BID_OPT_SAVE_BINARY_FLAGS() valid_y = unpack_BID32 (&sign_y, &exponent_y, &coefficient_y, y); valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); // unpack arguments, check for NaN or Infinity if (!valid_x) { // x is Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK32) == SNAN_MASK32) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK32) == SNAN_MASK32)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_x & QUIET_MASK32;; BID_RETURN (res); } // x is Infinity? if ((x & 0x78000000) == 0x78000000) { if (((y & NAN_MASK32) != NAN_MASK32)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // return NaN res = 0x7c000000; BID_RETURN (res); } } // x is 0 // return x if y != 0 if (((y & 0x78000000) < 0x78000000) && coefficient_y) { if ((y & 0x60000000) == 0x60000000) exponent_y = (y >> 21) & 0xff; else exponent_y = (y >> 23) & 0xff; if (exponent_y < exponent_x) exponent_x = exponent_y; x = exponent_x; x <<= 23; res = x | sign_x; BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if (((y & SNAN_MASK32) == SNAN_MASK32)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_y & QUIET_MASK32;; BID_RETURN (res); } // y is Infinity? if ((y & 0x78000000) == 0x78000000) { res = very_fast_get_BID32 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } // y is 0, return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c000000; BID_RETURN (res); } } diff_expon = exponent_x - exponent_y; if (diff_expon <= 0) { diff_expon = -diff_expon; if (diff_expon > 7) { // |x|<|y| in this case res = x; BID_RETURN (res); } // set exponent of y to exponent_x, scale coefficient_y T = bid_power10_table_128[diff_expon].w[0]; CYL = ((BID_UINT64)coefficient_y) * T; if (CYL > (BID_UINT64)(coefficient_x)) { res = x; BID_RETURN (res); } CY = CYL; Q = coefficient_x / CY; R = coefficient_x - Q * CY; res = very_fast_get_BID32 (sign_x, exponent_x, R); BID_RETURN (res); } CX = coefficient_x; while (diff_expon > 0) { // get number of digits in coeff_x tempx.d = (float) CX; bin_expon = ((tempx.i >> 23) & 0xff) - 0x7f; digits_x = bid_estimate_decimal_digits[bin_expon]; // will not use this test, dividend will have 18 or 19 digits //if(CX >= bid_power10_table_128[digits_x].w[0]) // digits_x++; e_scale = 18 - digits_x; if (diff_expon >= e_scale) { diff_expon -= e_scale; } else { e_scale = diff_expon; diff_expon = 0; } // scale dividend to 18 or 19 digits CX *= bid_power10_table_128[e_scale].w[0]; // quotient Q64 = CX / coefficient_y; // remainder CX -= Q64 * (BID_UINT64)coefficient_y; // check for remainder == 0 if (!CX) { res = very_fast_get_BID32 (sign_x, exponent_y, 0); BID_RETURN (res); } } coefficient_x = (BID_UINT32)CX; res = very_fast_get_BID32 (sign_x, exponent_y, coefficient_x); BID_RETURN (res); } LIBRARY/src/bid32_logbd.c0000644€­ Q01134020000000544615113665770014065 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #if DECIMAL_CALL_BY_REFERENCE void bid32_logb (BID_UINT32 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else DFP_WRAPFN_DFP(32, bid32_logb, 32) BID_UINT32 bid32_logb (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int ires, exponent_x; BID_UINT32 sign_x, coefficient_x; BID_UINT32 valid_x, res; valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN/Inf if ((x & 0x78000000) == 0x78000000) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e000000) == 0x7e000000) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK32; if ((x & 0x7c000000) == 0x78000000) res &= 0x7fffffff; BID_RETURN (res); } // x is 0 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif res = 0xf8000000; BID_RETURN (res); } BIDECIMAL_CALL1_NORND (bid32_ilogb, ires, x); if (ires & 0x80000000) res = 0xb2800000 | (-ires); else res = 0x32800000 | ires; BID_RETURN (res); } LIBRARY/src/bid32_llround.c0000644€­ Q01134020000000477515113665770014461 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_llround ****************************************************************************/ /* DESCRIPTION: The llround function rounds its argument to the nearest integer value of type long int, using rounding to nearest-away RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND(long long int, bid32_llround, BID_UINT32, x) // the sizeof (long long) = 8 (BID_SIZE_LONG==8) BID_SINT64 res; BIDECIMAL_CALL1_NORND (bid32_to_int64_rninta, res, x); BID_RETURN ((long long int)res); } LIBRARY/src/bid128_log10.c0000644€­ Q01134020000001252515113665770014002 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_10POW4464 = {BID128_LH_INIT( 0x0000000000000001ull, 0x5320000000000000ull )}; static BID_UINT128 BID128_10POWN4464 = {BID128_LH_INIT( 0x0000000000000001ull, 0x0d60000000000000ull )}; BID_F128_CONST_DEF(c_inv_log10, 3ffdbcb7b1526e50, e32a6ab7555f5a68); // 1/log10 BID_F128_CONST_DEF(c_4464, 400b170000000000, 0000000000000000); // 4464 BID_F128_CONST_DEF(c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F128_CONST_DEF(c_half, 3ffe000000000000, 0000000000000000); // 1.0 BID128_FUNCTION_ARG1 (bid128_log10, x) BID_F128_TYPE xq, rq; BID_UINT128 res; int z, cmp_res; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid128_isZero, z, x); if (z) { // -Infinite and Divide by Zero according C99 res.w[BID_HIGH_128W] = 0xf800000000000000ull; res.w[BID_LOW_128W] = 0ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN(res); } if (x.w[BID_HIGH_128W] & MASK_SIGN) { // QNaN Indefinite res.w[BID_HIGH_128W] = 0x7c00000000000000ull; res.w[BID_LOW_128W] = 0ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } // Inputs too large to fit in quad. BIDECIMAL_CALL2_NORND(bid128_quiet_greater,cmp_res, x, BID128_10POW4464); if (cmp_res) { BID_UINT128 x_mod; BIDECIMAL_CALL2 (bid128_mul, x_mod, x, BID128_10POWN4464); BIDECIMAL_CALL1 (bid128_to_binary128, xq, x_mod); __bid_f128_log(rq, xq); __bid_f128_mul(rq, rq, c_inv_log10.v); __bid_f128_add(rq, rq, c_4464.v); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } // Inputs so small they underflow to zero in quad. BIDECIMAL_CALL2_NORND(bid128_quiet_less,cmp_res,x,BID128_10POWN4464); if (cmp_res) { BID_UINT128 x_mod; BIDECIMAL_CALL2(bid128_mul, x_mod, x, BID128_10POW4464); BIDECIMAL_CALL1(bid128_to_binary128, xq, x_mod); __bid_f128_log(rq, xq); __bid_f128_mul(rq, rq, c_inv_log10.v); __bid_f128_sub(rq, rq, c_4464.v); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } // Ordinary inputs else { BID_F128_TYPE e_bin, e_bin_a; BIDECIMAL_CALL1 (bid128_to_binary128, xq, x); __bid_f128_log(rq, xq); __bid_f128_sub(e_bin, xq, c_one.v); __bid_f128_fabs(e_bin_a, e_bin); if (__bid_f128_lt(e_bin_a, c_half.v)) { BID_F128_TYPE tmp_e_bin, rt; BID_UINT128 e; BIDECIMAL_CALL2 (bid128_sub, e, x, BID128_1); BIDECIMAL_CALL1 (bid128_to_binary128, tmp_e_bin, e); __bid_f128_sub(rt, e_bin, tmp_e_bin); __bid_f128_div(rt, rt, xq); __bid_f128_sub(rq, rq, rt); } __bid_f128_mul(rq, rq, c_inv_log10.v); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } } LIBRARY/src/bid32_to_bid128.c0000644€­ Q01134020000002037615113665770014470 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #define BID_128RES #include "bid_internal.h" /* * Takes a BID32 as input and converts it to a BID128 and returns it. */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_NOFLAGS (BID_UINT128, bid32_to_bid128, BID_UINT32, x) BID_UINT128 new_coeff, res; BID_UINT32 sign_x; int exponent_x; BID_UINT32 coefficient_x; if (!unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x)) { if (((x) & 0x78000000) == 0x78000000) { #ifdef BID_SET_STATUS_FLAGS if (((x) & 0x7e000000) == 0x7e000000) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[0] = (coefficient_x & 0x000fffff); __mul_64x128_low (res, res.w[0], bid_power10_table_128[27]); res.w[1] |= ((((BID_UINT64) coefficient_x) << 32) & 0xfc00000000000000ull); BID_RETURN_NOFLAGS (res); } } new_coeff.w[0] = coefficient_x; new_coeff.w[1] = 0; bid_get_BID128_very_fast (&res, ((BID_UINT64) sign_x) << 32, exponent_x + DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS_32, new_coeff); BID_RETURN_NOFLAGS (res); } // convert_bid32_to_bid128 /* * Takes a BID128 as input and converts it to a BID32 and returns it. */ BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid128_to_bid32, BID_UINT128, x) BID_UINT128 CX, T128, TP128, Qh, Ql, Qh1, Stemp, Tmp, Tmp1, CX1; BID_UINT64 sign_x, carry, cy; BID_SINT64 D; BID_UINT32 res; int_float f64, fx; int exponent_x, extra_digits, amount, bin_expon_cx, uf_check = 0; unsigned rmode, status; BID_OPT_SAVE_BINARY_FLAGS() BID_SWAP128 (x); // unpack arguments, check for NaN or Infinity or 0 if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { if (((x.w[1]) & 0x7800000000000000ull) == 0x7800000000000000ull) { Tmp.w[1] = (CX.w[1] & 0x00003fffffffffffull); Tmp.w[0] = CX.w[0]; TP128 = bid_reciprocals10_128[27]; __mul_128x128_full (Qh, Ql, Tmp, TP128); amount = bid_recip_scale[27] - 64; res = ((CX.w[1] >> 32) & 0xfc000000) | (Qh.w[1] >> amount); #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN_VAL (res); } // x is 0 exponent_x = exponent_x - DECIMAL_EXPONENT_BIAS_128 + DECIMAL_EXPONENT_BIAS_32; if (exponent_x < 0) exponent_x = 0; if (exponent_x > DECIMAL_MAX_EXPON_32) exponent_x = DECIMAL_MAX_EXPON_32; res = (sign_x >> 32) | (exponent_x << 23); BID_RETURN_VAL (res); } if (CX.w[1] || (CX.w[0] >= 10000000)) { // find number of digits in coefficient // 2^64 f64.i = 0x5f800000; // fx ~ CX fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; bin_expon_cx = ((fx.i >> 23) & 0xff) - 0x7f; extra_digits = bid_estimate_decimal_digits[bin_expon_cx] - 7; // scale = 38-estimate_decimal_digits[bin_expon_cx]; D = CX.w[1] - bid_power10_index_binexp_128[bin_expon_cx].w[1]; if (D > 0 || (!D && CX.w[0] >= bid_power10_index_binexp_128[bin_expon_cx].w[0])) extra_digits++; exponent_x += extra_digits; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_x && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif if (exponent_x < DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS_32) { uf_check = 1; if (-extra_digits + exponent_x - DECIMAL_EXPONENT_BIAS_128 + DECIMAL_EXPONENT_BIAS_32 + 35 >= 0) { if (exponent_x == DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS_32 - 1) { T128 = bid_round_const_table_128[rmode][extra_digits]; __add_carry_out (CX1.w[0], carry, T128.w[0], CX.w[0]); CX1.w[1] = CX.w[1] + T128.w[1] + carry; #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (__unsigned_compare_ge_128 (CX1, bid_power10_table_128[extra_digits + 7])) uf_check = 0; #endif } extra_digits = extra_digits + DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS_32 - exponent_x; exponent_x = DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS_32; } else rmode = BID_ROUNDING_TO_ZERO; } T128 = bid_round_const_table_128[rmode][extra_digits]; __add_carry_out (CX.w[0], carry, T128.w[0], CX.w[0]); CX.w[1] = CX.w[1] + T128.w[1] + carry; TP128 = bid_reciprocals10_128[extra_digits]; __mul_128x128_full (Qh, Ql, CX, TP128); amount = bid_recip_scale[extra_digits]; if (amount >= 64) { CX.w[0] = Qh.w[1] >> (amount - 64); CX.w[1] = 0; } else { __shr_128 (CX, Qh, amount); } #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (!(rnd_mode)) #endif if (CX.w[0] & 1) { // check whether fractional part of initial_P/10^ed1 is exactly .5 // get remainder __shl_128_long (Qh1, Qh, (128 - amount)); if (!Qh1.w[1] && !Qh1.w[0] && (Ql.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Ql.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Ql.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) { CX.w[0]--; } } #endif { status = BID_INEXACT_EXCEPTION; // get remainder __shl_128_long (Qh1, Qh, (128 - amount)); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (Qh1.w[1] == 0x8000000000000000ull && (!Qh1.w[0]) && (Ql.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Ql.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Ql.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if ((!Qh1.w[1]) && (!Qh1.w[0]) && (Ql.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Ql.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Ql.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], cy, Ql.w[0], bid_reciprocals10_128[extra_digits].w[0]); __add_carry_in_out (Stemp.w[1], carry, Ql.w[1], bid_reciprocals10_128[extra_digits].w[1], cy); __shr_128_long (Qh, Qh1, (128 - amount)); Tmp.w[0] = 1; Tmp.w[1] = 0; __shl_128_long (Tmp1, Tmp, amount); Qh.w[0] += carry; if (Qh.w[0] < carry) Qh.w[1]++; if (__unsigned_compare_ge_128 (Qh, Tmp1)) status = BID_EXACT_STATUS; } if (status != BID_EXACT_STATUS) { if (uf_check) { status |= BID_UNDERFLOW_EXCEPTION; } #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, status); #endif } } } res = get_BID32 ((BID_UINT32) (sign_x >> 32), exponent_x - DECIMAL_EXPONENT_BIAS_128 + DECIMAL_EXPONENT_BIAS_32, CX.w[0], rnd_mode, pfpsf); BID_RETURN_VAL (res); } LIBRARY/src/bid128_expm1.c0000644€­ Q01134020000001021715113665770014106 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" static BID_UINT128 BID128_1 = {{ 0x0000000000000001ull, 0x3040000000000000ull }}; BID_F128_CONST_DEF( c_1em40, 3f7a16c262777579, c58c46475896767b); // 1e-40 BID_F128_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID128_FUNCTION_ARG1 (bid128_expm1, x) // Declare local variables BID_UINT128 res, t; BID_F128_TYPE xd, yd, abs_xd; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // Convert to binary BIDECIMAL_CALL1(bid128_to_binary128,xd,x); // If the input is really small, the result is about x + x^2/2, which // we do weakly just to make sure all the directed roundings are OK. // Treat zero specially to copy its sign __bid_f128_fabs(abs_xd, xd); if (__bid_f128_le(abs_xd, c_1em40.v)) { int zf; BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isZero,zf,x); if (zf) { BIDECIMAL_CALL2(bid128_mul,res,x,BID128_1); } else { BIDECIMAL_CALL3(bid128_fma,res,x,x,x); } BID_RETURN(res); BID_RETURN(res); } // Otherwise if the input is <= 1, the naive computation is well-conditioned // and will neither overflow nor underflow else if (__bid_f128_le(xd, c_one.v)) { __bid_f128_expm1(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } // Otherwise it's not bad to just call exp and subtract 1. For // moderate results, this will be exact, and for large results, it // will be irrelevant. Even in the awkward middle ground where // ulp(y) is about 2, it will be OK, just another ulp at most. else { BIDECIMAL_CALL1(bid128_exp,t,x); BIDECIMAL_CALL2(bid128_sub,res,t,BID128_1); BID_RETURN(res); } } LIBRARY/src/bid64_sinh.c0000644€­ Q01134020000000467115113665770013743 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_sinh, BID_UINT64, x) // Declare local variables BID_UINT64 res; BID_F80_TYPE xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Convert to binary and do the operation "naively" BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_sinh(yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } LIBRARY/src/bid32_hypot.c0000644€­ Q01134020000000653015113665770014134 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_EXTERN_C double hypot(double, double); BID_TYPE_FUNCTION_ARG2(BID_UINT32, bid32_hypot, x, y) BID_UINT32 sign_x, sign_y, coefficient_x, coefficient_y; BID_UINT32 valid_x, valid_y, res; double xd, yd, zd; int exponent_x, exponent_y; valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID32 (&sign_y, &exponent_y, &coefficient_y, y); if (!valid_x) { if ((x & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e000000) == 0x7e000000 || // sNaN (y & 0x7e000000) == 0x7e000000) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if (((x & 0x7e000000) == 0x7e000000) || ((y & 0x7c000000) != 0x78000000)) res = (coefficient_x) & QUIET_MASK32; else res = 0x78000000; BID_RETURN (res); } // x is Infinity? if (((x & 0x78000000) == 0x78000000) && ((y & 0x7e000000) != 0x7e000000)) { res = 0x78000000; BID_RETURN (res); } // x is 0 if (valid_y) { res = y & 0x7fffffff; BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if ((y & 0x7e000000) == 0x7e000000) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_y & QUIET_MASK32; BID_RETURN (res); } if ((y & 0x78000000) == 0x78000000) { res = 0x78000000; BID_RETURN (res); } // y is 0 if (valid_x) { res = x & 0x7fffffff; BID_RETURN (res); } } BIDECIMAL_CALL1(bid32_to_binary64,xd,x); BIDECIMAL_CALL1(bid32_to_binary64,yd,y); zd = hypot(xd,yd); BIDECIMAL_CALL1(binary64_to_bid32,res,zd); BID_RETURN (res); } LIBRARY/src/bid64_tanh.c0000644€­ Q01134020000000504515113665770013730 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_tanh, BID_UINT64, x) // Declare local variables BID_UINT64 res; BID_F80_TYPE xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Otherwise just do the operation "naively". // We inherit the tanh([-]inf) = [-]1 case from the binary function // rather than having a special case for it. BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_tanh( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } LIBRARY/src/bid32_lrintd.c0000644€­ Q01134020000000676215113665770014274 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_lrint ****************************************************************************/ /* DESCRIPTION: The lrint function rounds its argument to the nearest integer value of type long int, rounding according to the current rounding direction. RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid and inexact */ BID_RESTYPE0_FUNCTION_ARGTYPE1(long int, bid32_lrint, BID_UINT32, x) #if BID_SIZE_LONG==4 BID_SINT32 res; if (rnd_mode == BID_ROUNDING_TO_NEAREST) BIDECIMAL_CALL1_NORND (bid32_to_int32_xrnint, res, x); else if (rnd_mode == BID_ROUNDING_TIES_AWAY) BIDECIMAL_CALL1_NORND (bid32_to_int32_xrninta, res, x); else if (rnd_mode == BID_ROUNDING_DOWN) BIDECIMAL_CALL1_NORND (bid32_to_int32_xfloor, res, x); else if (rnd_mode == BID_ROUNDING_UP) BIDECIMAL_CALL1_NORND (bid32_to_int32_xceil, res, x); else // if (rnd_mode == BID_ROUNDING_TO_ZERO) BIDECIMAL_CALL1_NORND (bid32_to_int32_xint, res, x); #else // if BID_SIZE_LONG==8 BID_SINT64 res; if (rnd_mode == BID_ROUNDING_TO_NEAREST) BIDECIMAL_CALL1_NORND (bid32_to_int64_xrnint, res, x); else if (rnd_mode == BID_ROUNDING_TIES_AWAY) BIDECIMAL_CALL1_NORND (bid32_to_int64_xrninta, res, x); else if (rnd_mode == BID_ROUNDING_DOWN) BIDECIMAL_CALL1_NORND (bid32_to_int64_xfloor, res, x); else if (rnd_mode == BID_ROUNDING_UP) BIDECIMAL_CALL1_NORND (bid32_to_int64_xceil, res, x); else // if (rnd_mode == BID_ROUNDING_TO_ZERO) BIDECIMAL_CALL1_NORND (bid32_to_int64_xint, res, x); #endif BID_RETURN ((long int)res); } LIBRARY/src/bid64_to_uint64.c0000644€­ Q01134020000024174615113665770014643 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_to_uint64_rnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint64_rnint (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid64_to_uint64_rnint, 64) BID_UINT64 bid64_to_uint64_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=16 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 16) => 5 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffffb // has 21 digits __mul_64x64_to_128MACH (C, C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 <= n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; // 0 <= ind <= 15 if (C1 <= bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x0000000000000001ull; // return +1 } else { // if n < 0 res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN (res); } } else { // if (1 <= q + exp <= 20, 1 <= q <= 16, -15 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint64_xrnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint64_xrnint (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid64_to_uint64_xrnint, 64) BID_UINT64 bid64_to_uint64_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=16 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 16) => 5 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffffb // has 21 digits __mul_64x64_to_128MACH (C, C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 <= n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; // 0 <= ind <= 15 if (C1 <= bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x0000000000000001ull; // return +1 } else { // if n < 0 res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN (res); } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 20, 1 <= q <= 16, -15 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint64_floor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint64_floor (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid64_to_uint64_floor, 64) BID_UINT64 bid64_to_uint64_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero if (x_sign) { // if n < 0 the conversion is invalid // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' // n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65) // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=16 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 16) => 5 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0xa0000000000000000 // has 21 digits __mul_64x64_to_128MACH (C, C1, bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 16, -15 <= exp <= 19) // 1 <= x < 2^64 so x can be rounded // to nearest to a 64-bit unsigned signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint64_xfloor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint64_xfloor (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid64_to_uint64_xfloor, 64) BID_UINT64 bid64_to_uint64_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero if (x_sign) { // if n < 0 the conversion is invalid // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' // n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65) // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=16 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 16) => 5 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0xa0000000000000000 // has 21 digits __mul_64x64_to_128MACH (C, C1, bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 16, -15 <= exp <= 19) // 1 <= x < 2^64 so x can be rounded // to nearest to a 64-bit unsigned signed integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint64_ceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint64_ceil (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid64_to_uint64_ceil, 64) BID_UINT64 bid64_to_uint64_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n > 2^64 - 1 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) > 2^64 - 1 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 > 2^64 - 1 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65 - 2) // <=> C * 10^(21-q) > 0x9fffffffffffffff6, 1<=q<=16 if (q == 1) { // C * 10^20 > 0x9fffffffffffffff6 __mul_128x64_to_128 (C, C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 16) => 5 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffff6 // has 21 digits __mul_64x64_to_128MACH (C, C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 or 1 if (x_sign) res = 0x0000000000000000ull; else res = 0x0000000000000001ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 16, -15 <= exp <= 19) // x <= -1 or 1 <= x <= 2^64 - 1 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x <= 2^64 - 1 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint64_xceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint64_xceil (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid64_to_uint64_xceil, 64) BID_UINT64 bid64_to_uint64_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n > 2^64 - 1 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) > 2^64 - 1 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 > 2^64 - 1 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65 - 2) // <=> C * 10^(21-q) > 0x9fffffffffffffff6, 1<=q<=16 if (q == 1) { // C * 10^20 > 0x9fffffffffffffff6 __mul_128x64_to_128 (C, C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 16) => 5 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffff6 // has 21 digits __mul_64x64_to_128MACH (C, C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 or 1 if (x_sign) res = 0x0000000000000000ull; else res = 0x0000000000000001ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 16, -15 <= exp <= 19) // x <= -1 or 1 <= x <= 2^64 - 1 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x <= 2^64 - 1 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint64_int ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint64_int (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid64_to_uint64_int, 64) BID_UINT64 bid64_to_uint64_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65) // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=16 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 16) => 5 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0xa0000000000000000 // has 21 digits __mul_64x64_to_128MACH (C, C1, bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 16, -15 <= exp <= 19) // x <= -1 or 1 <= x < 2^64 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint64_xint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint64_xint (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid64_to_uint64_xint, 64) BID_UINT64 bid64_to_uint64_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65) // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=16 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 16) => 5 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0xa0000000000000000 // has 21 digits __mul_64x64_to_128MACH (C, C1, bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 16, -15 <= exp <= 19) // x <= -1 or 1 <= x < 2^64 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint64_rninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint64_rninta (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid64_to_uint64_rninta, 64) BID_UINT64 bid64_to_uint64_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=16 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 16) => 5 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffffb // has 21 digits __mul_64x64_to_128MACH (C, C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 <= n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; // 0 <= ind <= 15 if (C1 < bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x0000000000000001ull; // return +1 } else { // if n < 0 res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN (res); } } else { // if (1 <= q + exp <= 20, 1 <= q <= 16, -15 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint64_xrninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint64_xrninta (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid64_to_uint64_xrninta, 64) BID_UINT64 bid64_to_uint64_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=16 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 16) => 5 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffffb // has 21 digits __mul_64x64_to_128MACH (C, C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 <= n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; // 0 <= ind <= 15 if (C1 < bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x0000000000000001ull; // return +1 } else { // if n < 0 res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN (res); } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 20, 1 <= q <= 16, -15 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } LIBRARY/src/bid128_erf.c0000644€­ Q01134020000000704515113665770013635 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // 2/sqrt(pi), used for cases where conversion would underflow static BID_UINT128 BID128_2_OVER_SQRTPI = {BID128_LH_INIT( 0xf009a099f5c1b689ull, 0x2ffe37a225baa150ull )}; BID_F128_CONST_DEF( c_1em2000, 260b1ad56d712a5d, 7f02384e5ded39be); // 1e-2000 BID128_FUNCTION_ARG1 (bid128_erf, x) // Declare local variables BID_UINT128 res; BID_F128_TYPE xd, yd, abs_xd; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // Otherwise just do the operation "naively". // We inherit the erf([-]inf) = [-]1 case from the binary function, // rather than having a special case for it. This applies to the cases // where the input is actually an infinity, or where it is so large // that it overflows or underflows in quad. // // The only special treatment is for the case where we'd underflow // in quad; but then the answer is just [2/sqrt(pi)] * x BIDECIMAL_CALL1(bid128_to_binary128,xd,x); __bid_f128_fabs(abs_xd, xd); if (__bid_f128_lt(abs_xd, c_1em2000.v)) { BIDECIMAL_CALL2(bid128_mul,res,BID128_2_OVER_SQRTPI,x); } else { __bid_f128_erf(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); } BID_RETURN(res); } LIBRARY/src/bid32_cbrt.c0000644€­ Q01134020000000506415113665770013724 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_EXTERN_C double cbrt(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_cbrt, BID_UINT32, x) BID_UINT32 sign_x, coefficient_x; BID_UINT32 valid_x, res; double xd, zd; int exponent_x; valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN if ((x & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e000000) == 0x7e000000) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK32; BID_RETURN (res); } // x is Infinity? if ((x & 0x78000000) == 0x78000000) { res = sign_x | 0x78000000; BID_RETURN (res); } // x is 0 res = sign_x | coefficient_x; BID_RETURN (res); } BIDECIMAL_CALL1(bid32_to_binary64,xd,x); zd = cbrt(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,zd); BID_RETURN (res); } LIBRARY/src/wcstod64.c0000644€­ Q01134020000000436615113665770013470 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_strtod.h" DFP_WRAPFN_TYPE1_TYPE2(64, bid_wcstod64, const wchar_t* RESTRICT , wchar_t** RESTRICT) BID_UINT64 bid_wcstod64(const wchar_t* RESTRICT ps_in, wchar_t** RESTRICT endptr) { char* ps0_c; BID_UINT64 DR; #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS unsigned fpsc=0, *pfpsf=&fpsc; #endif #if !DECIMAL_GLOBAL_ROUNDING unsigned rnd_mode=0; #endif ps0_c = wcstod_conversion(ps_in, endptr); if(!ps0_c) return 0x31c0000000000000ull; // 0.0 BIDECIMAL_CALL1_RESARG (bid64_from_string, DR, (char*)ps0_c); free(ps0_c); return DR; } LIBRARY/src/bid_sqrt_macros.h0000644€­ Q01134020000002151715113665770015170 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef _SQRT_MACROS_H_ #define _SQRT_MACROS_H_ #include "bid_internal.h" #if DOUBLE_EXTENDED_ON BID_EXTERN_C BINARY80 SQRT80 (BINARY80); __BID_INLINE__ BID_UINT64 short_sqrt128 (BID_UINT128 A10) { BINARY80 lx, ly, l64; int_float f64; // 2^64 f64.i = 0x5f800000; l64 = (BINARY80) f64.d; lx = (BINARY80) A10.w[1] * l64 + (BINARY80) A10.w[0]; ly = SQRT80 (lx); return (BID_UINT64) ly; } typedef union BID_ALIGN (16) { BID_UINT64 w[2]; long double d; } int_dext; __BID_INLINE__ void bid_long_sqrt128 (BID_UINT128 * pCS, BID_UINT256 C256) { BID_UINT128 CS; BID_UINT64 X; BID_SINT64 SE; BINARY80 l64, lm64, l128, lxL, lx, lS, lSH, lSL, lE, l3, l2, l1, l0, lp, lCl; int_float f64, fm64; int_dext tmp_dext; // 2^64 f64.i = 0x5f800000; l64 = (BINARY80) f64.d; l128 = l64 * l64; lx = l3 = (BINARY80) C256.w[3] * l64 * l128; l2 = (BINARY80) C256.w[2] * l128; lx = FENCE (lx + l2); l1 = (BINARY80) C256.w[1] * l64; lx = FENCE (lx + l1); l0 = (BINARY80) C256.w[0]; lx = FENCE (lx + l0); // sqrt(C256) lS = SQRT80 (lx); // get coefficient // 2^(-64) fm64.i = 0x1f800000; lm64 = (BINARY80) fm64.d; CS.w[1] = (BID_UINT64) (lS * lm64); CS.w[0] = (BID_UINT64) (lS - (BINARY80) CS.w[1] * l64); //printf("C256=%016I64x %016I64x %016I64x %016I64x, CS=%016I64x %016I64x \n",C256.w[3],C256.w[2],C256.w[1],C256.w[0],CS.w[1],CS.w[0]); /////////////////////////////////////// // CAUTION! // little endian code only // add solution for big endian ////////////////////////////////////// tmp_dext.d = lS; #if BID_BIG_ENDIAN tmp_dext.w[0] &= 0xffffffffffff0000ull; tmp_dext.w[1] = 0; #else //lSH = lS; //*((BID_UINT64 *) & lSH) &= 0xffffffff00000000ull; tmp_dext.w[0] &= 0xffffffff00000000ull; #endif lSH = tmp_dext.d; // correction for C256 rounding lCl = FENCE (l3 - lx); lCl = FENCE (lCl + l2); lCl = FENCE (lCl + l1); lCl = FENCE (lCl + l0); lSL = lS - lSH; ////////////////////////////////////////// // Watch for compiler re-ordering // ///////////////////////////////////////// // C256-S^2 lxL = FENCE (lx - lSH * lSH); lp = lSH * lSL; lp += lp; lxL = FENCE (lxL - lp); lSL *= lSL; lxL = FENCE (lxL - lSL); lCl += lxL; // correction term lE = lCl / (lS + lS); // get low part of coefficient X = CS.w[0]; if (lCl >= 0) { SE = (BID_SINT64) (lE); CS.w[0] += SE; if (CS.w[0] < X) CS.w[1]++; } else { SE = (BID_SINT64) (-lE); CS.w[0] -= SE; if (CS.w[0] > X) CS.w[1]--; } pCS->w[0] = CS.w[0]; pCS->w[1] = CS.w[1]; } #else BID_EXTERN_C double sqrt (double); __BID_INLINE__ BID_UINT64 short_sqrt128 (BID_UINT128 A10) { BID_UINT256 ARS, ARS0, AE0, AE, S; BID_UINT64 MY, ES, CY; double lx, l64; int_double f64, ly; int ey, k; // 2^64 f64.i = 0x43f0000000000000ull; l64 = f64.d; lx = (double) A10.w[1] * l64 + (double) A10.w[0]; ly.d = 1.0 / sqrt (lx); MY = (ly.i & 0x000fffffffffffffull) | 0x0010000000000000ull; ey = 0x3ff - (ly.i >> 52); // A10*RS^2 __mul_64x128_to_192 (ARS0, MY, A10); __mul_64x192_to_256 (ARS, MY, ARS0); // shr by 2*ey+40, to get a 64-bit value k = (ey << 1) + 104 - 64; if (k >= 128) { if (k > 128) ES = (ARS.w[2] >> (k - 128)) | (ARS.w[3] << (192 - k)); else ES = ARS.w[2]; } else { if (k >= 64) { ARS.w[0] = ARS.w[1]; ARS.w[1] = ARS.w[2]; k -= 64; } if (k) { __shr_128 (ARS, ARS, k); } ES = ARS.w[0]; } ES = ((BID_SINT64) ES) >> 1; if (((BID_SINT64) ES) < 0) { ES = -ES; // A*RS*eps (scaled by 2^64) __mul_64x192_to_256 (AE0, ES, ARS0); AE.w[0] = AE0.w[1]; AE.w[1] = AE0.w[2]; AE.w[2] = AE0.w[3]; __add_carry_out (S.w[0], CY, ARS0.w[0], AE.w[0]); __add_carry_in_out (S.w[1], CY, ARS0.w[1], AE.w[1], CY); S.w[2] = ARS0.w[2] + AE.w[2] + CY; } else { // A*RS*eps (scaled by 2^64) __mul_64x192_to_256 (AE0, ES, ARS0); AE.w[0] = AE0.w[1]; AE.w[1] = AE0.w[2]; AE.w[2] = AE0.w[3]; __sub_borrow_out (S.w[0], CY, ARS0.w[0], AE.w[0]); __sub_borrow_in_out (S.w[1], CY, ARS0.w[1], AE.w[1], CY); S.w[2] = ARS0.w[2] - AE.w[2] - CY; } k = ey + 51; if (k >= 64) { if (k >= 128) { S.w[0] = S.w[2]; S.w[1] = 0; k -= 128; } else { S.w[0] = S.w[1]; S.w[1] = S.w[2]; } k -= 64; } if (k) { __shr_128 (S, S, k); } return (BID_UINT64) ((S.w[0] + 1) >> 1); } __BID_INLINE__ void bid_long_sqrt128 (BID_UINT128 * pCS, BID_UINT256 C256) { BID_UINT512 ARS0, ARS; BID_UINT256 ARS00, AE, AE2, S; BID_UINT128 ES, ES2, ARS1; BID_UINT64 ES32, CY, MY; double l64, l128, lx, l2, l1, l0; int_double f64, ly; int ey, k, k2; // 2^64 f64.i = 0x43f0000000000000ull; l64 = f64.d; l128 = l64 * l64; lx = (double) C256.w[3] * l64 * l128; l2 = (double) C256.w[2] * l128; lx = FENCE (lx + l2); l1 = (double) C256.w[1] * l64; lx = FENCE (lx + l1); l0 = (double) C256.w[0]; lx = FENCE (lx + l0); // sqrt(C256) ly.d = 1.0 / sqrt (lx); MY = (ly.i & 0x000fffffffffffffull) | 0x0010000000000000ull; ey = 0x3ff - (ly.i >> 52); // A10*RS^2, scaled by 2^(2*ey+104) __mul_64x256_to_320 (ARS0, MY, C256); __mul_64x320_to_384 (ARS, MY, ARS0); // shr by k=(2*ey+104)-128 // expect k is in the range (192, 256) if result in [10^33, 10^34) // apply an additional signed shift by 1 at the same time (to get eps=eps0/2) k = (ey << 1) + 104 - 128 - 192; k2 = 64 - k; ES.w[0] = (ARS.w[3] >> (k + 1)) | (ARS.w[4] << (k2 - 1)); ES.w[1] = (ARS.w[4] >> k) | (ARS.w[5] << k2); ES.w[1] = ((BID_SINT64) ES.w[1]) >> 1; // A*RS >> 192 (for error term computation) ARS1.w[0] = ARS0.w[3]; ARS1.w[1] = ARS0.w[4]; // A*RS>>64 ARS00.w[0] = ARS0.w[1]; ARS00.w[1] = ARS0.w[2]; ARS00.w[2] = ARS0.w[3]; ARS00.w[3] = ARS0.w[4]; if (((BID_SINT64) ES.w[1]) < 0) { ES.w[0] = -ES.w[0]; ES.w[1] = -ES.w[1]; if (ES.w[0]) ES.w[1]--; // A*RS*eps __mul_128x128_to_256 (AE, ES, ARS1); __add_carry_out (S.w[0], CY, ARS00.w[0], AE.w[0]); __add_carry_in_out (S.w[1], CY, ARS00.w[1], AE.w[1], CY); __add_carry_in_out (S.w[2], CY, ARS00.w[2], AE.w[2], CY); S.w[3] = ARS00.w[3] + AE.w[3] + CY; } else { // A*RS*eps __mul_128x128_to_256 (AE, ES, ARS1); __sub_borrow_out (S.w[0], CY, ARS00.w[0], AE.w[0]); __sub_borrow_in_out (S.w[1], CY, ARS00.w[1], AE.w[1], CY); __sub_borrow_in_out (S.w[2], CY, ARS00.w[2], AE.w[2], CY); S.w[3] = ARS00.w[3] - AE.w[3] - CY; } // 3/2*eps^2, scaled by 2^128 ES32 = ES.w[1] + (ES.w[1] >> 1); __mul_64x64_to_128 (ES2, ES32, ES.w[1]); // A*RS*3/2*eps^2 __mul_128x128_to_256 (AE2, ES2, ARS1); // result, scaled by 2^(ey+52-64) __add_carry_out (S.w[0], CY, S.w[0], AE2.w[0]); __add_carry_in_out (S.w[1], CY, S.w[1], AE2.w[1], CY); __add_carry_in_out (S.w[2], CY, S.w[2], AE2.w[2], CY); S.w[3] = S.w[3] + AE2.w[3] + CY; // k in (0, 64) k = ey + 51 - 128; k2 = 64 - k; S.w[0] = (S.w[1] >> k) | (S.w[2] << k2); S.w[1] = (S.w[2] >> k) | (S.w[3] << k2); // round to nearest S.w[0]++; if (!S.w[0]) S.w[1]++; pCS->w[0] = (S.w[1] << 63) | (S.w[0] >> 1); pCS->w[1] = S.w[1] >> 1; } #endif #endif LIBRARY/src/bid64_compare.c0000644€­ Q01134020000026307715113665770014437 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" static const BID_UINT64 bid_mult_factor[16] = { 1ull, 10ull, 100ull, 1000ull, 10000ull, 100000ull, 1000000ull, 10000000ull, 100000000ull, 1000000000ull, 10000000000ull, 100000000000ull, 1000000000000ull, 10000000000000ull, 100000000000000ull, 1000000000000000ull }; BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_equal, BID_UINT64, x, y) int res; int exp_x, exp_y, exp_t; BID_UINT64 sig_x, sig_y, sig_t; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y, lcv; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equivalent. if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if (((x & MASK_INF) == MASK_INF) && ((y & MASK_INF) == MASK_INF)) { res = (((x ^ y) & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // ONE INFINITY (CASE3') if (((x & MASK_INF) == MASK_INF) || ((y & MASK_INF) == MASK_INF)) { res = 0; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } else if ((x_is_zero && !y_is_zero) || (!x_is_zero && y_is_zero)) { res = 0; BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ => not equal : return 0 if ((x ^ y) & MASK_SIGN) { res = 0; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) if (exp_x > exp_y) { // to simplify the loop below, SWAP (exp_x, exp_y, exp_t); // put the larger exp in y, SWAP (sig_x, sig_y, sig_t); // and the smaller exp in x } if (exp_y - exp_x > 15) { res = 0; // difference cannot be greater than 10^15 BID_RETURN (res); } for (lcv = 0; lcv < (exp_y - exp_x); lcv++) { // recalculate y's significand upwards sig_y = sig_y * 10; if (sig_y > 9999999999999999ull) { res = 0; BID_RETURN (res); } } res = (sig_y == sig_x); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_greater, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, rather than equal : // return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x & MASK_SIGN) == MASK_SIGN)) { res = 0; BID_RETURN (res); } else { // x is pos infinity, it is greater, unless y is positive // infinity => return y!=pos_infinity res = (((y & MASK_INF) != MASK_INF) || ((y & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: //(+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater //(ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore ignore the // exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } else if (x_is_zero) { // is x is zero, it is greater if Y is negative res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } else if (y_is_zero) { // is y is zero, X is greater if it is positive res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x > exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x < exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { // difference cannot be greater than 10^15 if (x & MASK_SIGN) // if both are negative res = 0; else // if both are positive res = 1; BID_RETURN (res); } // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { if (x & MASK_SIGN) // if both are negative res = 1; else // if both are positive res = 0; BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // if postitive, return whichever significand is larger (converse if neg.) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 0; BID_RETURN (res); } res = (((sig_n_prime.w[1] > 0) || sig_n_prime.w[0] > sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 0; BID_RETURN (res); } res = (((sig_n_prime.w[1] == 0) && (sig_x > sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_greater_equal, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 1 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN (res) } if ((x & MASK_SIGN) == MASK_SIGN) { // x is -inf, so it is less than y unless y is -inf res = (((y & MASK_INF) == MASK_INF) && (y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } else { // x is pos_inf, no way for it to be less than y res = 1; BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so: // if y is +inf, xy res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, they are equal res = 1; BID_RETURN (res); } else if (x_is_zero) { // if x is zero, it is lessthan if Y is positive res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } else if (y_is_zero) { // if y is zero, X is less if it is negative res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); // difference cannot be greater than 10^15 BID_RETURN (res); } // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 1 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) != MASK_SIGN)); BID_RETURN (res); } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) != MASK_SIGN)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_greater_unordered, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, rather than equal : // return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x & MASK_SIGN) == MASK_SIGN)) { res = 0; BID_RETURN (res); } else { // x is pos infinity, it is greater, unless y is positive infinity => // return y!=pos_infinity res = (((y & MASK_INF) != MASK_INF) || ((y & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } else if (x_is_zero) { // is x is zero, it is greater if Y is negative res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } else if (y_is_zero) { // is y is zero, X is greater if it is positive res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { // difference cannot be greater than 10^15 res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 0; BID_RETURN (res); } res = (((sig_n_prime.w[1] > 0) || sig_n_prime.w[0] > sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // if postitive, return whichever significand is larger (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 0; BID_RETURN (res); } res = (((sig_n_prime.w[1] == 0) && (sig_x > sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_less, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?0:1; BID_RETURN (res) } if ((x & MASK_SIGN) == MASK_SIGN) { // x is -inf, so it is less than y unless y is -inf res = (((y & MASK_INF) != MASK_INF) || (y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } else { // x is pos_inf, no way for it to be less than y res = 0; BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so: // if y is +inf, xy res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, they are equal res = 0; BID_RETURN (res); } else if (x_is_zero) { // if x is zero, it is lessthan if Y is positive res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } else if (y_is_zero) { // if y is zero, X is less if it is negative res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); // difference cannot be greater than 10^15 BID_RETURN (res); } // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 0; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 0; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_less_equal, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, rather than equal : // return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (LESSEQUAL). if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { if (((x & MASK_SIGN) == MASK_SIGN)) { // if x is neg infinity, it must be lessthan or equal to y return 1 res = 1; BID_RETURN (res); } else { // x is pos infinity, it is greater, unless y is positive infinity => // return y==pos_infinity res = !(((y & MASK_INF) != MASK_INF) || ((y & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 1 // if y is negative infinity, then x is greater, return 0 res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, they are equal -> return 1 res = 1; BID_RETURN (res); } else if (x_is_zero) { // if x is zero, it is lessthan if Y is positive res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } else if (y_is_zero) { // if y is zero, X is less if it is negative res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); // difference cannot be greater than 10^15 BID_RETURN (res); } // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 1 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 1 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_less_unordered, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?0:1; BID_RETURN (res) } if ((x & MASK_SIGN) == MASK_SIGN) { // x is -inf, so it is less than y unless y is -inf res = (((y & MASK_INF) != MASK_INF) || (y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } else { // x is pos_inf, no way for it to be less than y res = 0; BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so: // if y is +inf, xy res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, they are equal res = 0; BID_RETURN (res); } else if (x_is_zero) { // if x is zero, it is lessthan if Y is positive res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } else if (y_is_zero) { // if y is zero, X is less if it is negative res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); // difference cannot be greater than 10^15 BID_RETURN (res); } // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 0; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 0; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_not_equal, BID_UINT64, x, y) int res; int exp_x, exp_y, exp_t; BID_UINT64 sig_x, sig_y, sig_t; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y, lcv; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 1 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equivalent. if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if (((x & MASK_INF) == MASK_INF) && ((y & MASK_INF) == MASK_INF)) { res = (((x ^ y) & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // ONE INFINITY (CASE3') if (((x & MASK_INF) == MASK_INF) || ((y & MASK_INF) == MASK_INF)) { res = 1; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } else if ((x_is_zero && !y_is_zero) || (!x_is_zero && y_is_zero)) { res = 1; BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ => not equal : return 1 if ((x ^ y) & MASK_SIGN) { res = 1; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) if (exp_x > exp_y) { // to simplify the loop below, SWAP (exp_x, exp_y, exp_t); // put the larger exp in y, SWAP (sig_x, sig_y, sig_t); // and the smaller exp in x } if (exp_y - exp_x > 15) { res = 1; BID_RETURN (res); } // difference cannot be greater than 10^16 for (lcv = 0; lcv < (exp_y - exp_x); lcv++) { // recalculate y's significand upwards sig_y = sig_y * 10; if (sig_y > 9999999999999999ull) { res = 1; BID_RETURN (res); } } { res = sig_y != sig_x; BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_not_greater, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (LESSEQUAL). if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x is neg infinity, it must be lessthan or equal to y return 1 if (((x & MASK_SIGN) == MASK_SIGN)) { res = 1; BID_RETURN (res); } // x is pos infinity, it is greater, unless y is positive // infinity => return y==pos_infinity else { res = !(((y & MASK_INF) != MASK_INF) || ((y & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 1 // if y is negative infinity, then x is greater, return 0 { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither // number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal -> return 1 if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // difference cannot be greater than 10^15 // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 1 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 1 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_not_less, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 1 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN (res) } if ((x & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y & MASK_INF) == MASK_INF) && (y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } else // x is pos_inf, no way for it to be less than y { res = 1; BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so: // if y is +inf, xy { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither // number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // difference cannot be greater than 10^15 // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) != MASK_SIGN)); BID_RETURN (res); } } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) != MASK_SIGN)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_ordered, BID_UINT64, x, y) int res; // NaN (CASE1) // if either number is NAN, the comparison is ordered, rather than equal : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } else { res = 1; BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_quiet_unordered, BID_UINT64, x, y) int res; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { if ((x & MASK_SNAN) == MASK_SNAN || (y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } else { res = 0; BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_signaling_greater, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x & MASK_SIGN) == MASK_SIGN)) { res = 0; BID_RETURN (res); } // x is pos infinity, it is greater, // unless y is positive infinity => return y!=pos_infinity else { res = (((y & MASK_INF) != MASK_INF) || ((y & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // difference cannot be greater than 10^15 // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 0; BID_RETURN (res); } { res = (((sig_n_prime.w[1] > 0) || sig_n_prime.w[0] > sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 0; BID_RETURN (res); } { res = (((sig_n_prime.w[1] == 0) && (sig_x > sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_signaling_greater_equal, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 1 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN (res) } if ((x & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y & MASK_INF) == MASK_INF) && (y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } else // x is pos_inf, no way for it to be less than y { res = 1; BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so: // if y is +inf, xy { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // difference cannot be greater than 10^15 // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 1 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) != MASK_SIGN)); BID_RETURN (res); } } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) != MASK_SIGN)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_signaling_greater_unordered, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x & MASK_SIGN) == MASK_SIGN)) { res = 0; BID_RETURN (res); } // x is pos infinity, it is greater, // unless y is positive infinity => return y!=pos_infinity else { res = (((y & MASK_INF) != MASK_INF) || ((y & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // difference cannot be greater than 10^15 // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 0; BID_RETURN (res); } { res = (((sig_n_prime.w[1] > 0) || sig_n_prime.w[0] > sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 0; BID_RETURN (res); } { res = (((sig_n_prime.w[1] == 0) && (sig_x > sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_signaling_less, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?0:1; BID_RETURN (res) } if ((x & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y & MASK_INF) != MASK_INF) || (y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } else // x is pos_inf, no way for it to be less than y { res = 0; BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so: // if y is +inf, xy { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // difference cannot be greater than 10^15 // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 0; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 0; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_signaling_less_equal, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (LESSEQUAL). if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x is neg infinity, it must be lessthan or equal to y return 1 if (((x & MASK_SIGN) == MASK_SIGN)) { res = 1; BID_RETURN (res); } // x is pos infinity, it is greater, // unless y is positive infinity => return y==pos_infinity else { res = !(((y & MASK_INF) != MASK_INF) || ((y & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 1 // if y is negative infinity, then x is greater, return 0 { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal -> return 1 if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // difference cannot be greater than 10^15 // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 1 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 1 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_signaling_less_unordered, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?0:1; BID_RETURN (res) } if ((x & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y & MASK_INF) != MASK_INF) || (y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } else // x is pos_inf, no way for it to be less than y { res = 0; BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so: // if y is +inf, xy { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // difference cannot be greater than 10^15 // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 0; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 0; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_signaling_not_greater, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (LESSEQUAL). if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x is neg infinity, it must be lessthan or equal to y return 1 if (((x & MASK_SIGN) == MASK_SIGN)) { res = 1; BID_RETURN (res); } // x is pos infinity, it is greater, // unless y is positive infinity => return y==pos_infinity else { res = !(((y & MASK_INF) != MASK_INF) || ((y & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 1 // if y is negative infinity, then x is greater, return 0 { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal -> return 1 if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // difference cannot be greater than 10^15 // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 1 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 1 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid64_signaling_not_less, BID_UINT64, x, y) int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 1 if (((x & MASK_NAN) == MASK_NAN) || ((y & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN (res) } if ((x & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y & MASK_INF) == MASK_INF) && (y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } else // x is pos_inf, no way for it to be less than y { res = 1; BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so: // if y is +inf, xy { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // difference cannot be greater than 10^15 // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) != MASK_SIGN)); BID_RETURN (res); } } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // return 0 if values are equal if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = (((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) != MASK_SIGN)); BID_RETURN (res); } } LIBRARY/src/bid64_next.c0000644€­ Q01134020000004062515113665770013757 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64 nextup ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_nextup (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else DFP_WRAPFN_DFP(64, bid64_nextup, 64) BID_UINT64 bid64_nextup (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; BID_UI64DOUBLE tmp1; int x_nr_bits; int q1, ind; BID_UINT64 C1; // C1 represents x_signif (BID_UINT64) // check for NaNs and infinities if ((x & MASK_NAN) == MASK_NAN) { // check for NaN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffffffffffffull; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity if (!(x & 0x8000000000000000ull)) { // x is +inf res = 0x7800000000000000ull; } else { // x is -inf res = 0xf7fb86f26fc0ffffull; // -MAXFP = -999...99 * 10^emax } BID_RETURN (res); } // unpack the argument x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x0000000000000001ull; // MINFP = 1 * 10^emin } else { // x is not special and is not zero if (x == 0x77fb86f26fc0ffffull) { // x = +MAXFP = 999...99 * 10^emax res = 0x7800000000000000ull; // +inf } else if (x == 0x8000000000000001ull) { // x = -MINFP = 1...99 * 10^emin res = 0x8000000000000000ull; // -0 } else { // -MAXFP <= x <= -MINFP - 1 ulp OR MINFP <= x <= MAXFP - 1 ulp // can add/subtract 1 ulp to the significand // Note: we could check here if x >= 10^16 to speed up the case q1 =16 // q1 = nr. of decimal digits in x (1 <= q1 <= 54) // determine first the nr. of bits in x if (C1 >= MASK_BINARY_OR2) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors if (C1 >= 0x0000000100000000ull) { // x >= 2^32 tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // x < 2^32 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q1 = bid_nr_digits[x_nr_bits - 1].digits; if (q1 == 0) { q1 = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q1++; } // if q1 < P16 then pad the significand with zeros if (q1 < P16) { if (x_exp > (BID_UINT64) (P16 - q1)) { ind = P16 - q1; // 1 <= ind <= P16 - 1 // pad with P16 - q1 zeros, until exponent = emin // C1 = C1 * 10^ind C1 = C1 * bid_ten2k64[ind]; x_exp = x_exp - ind; } else { // pad with zeros until the exponent reaches emin ind = x_exp; C1 = C1 * bid_ten2k64[ind]; x_exp = EXP_MIN; } } if (!x_sign) { // x > 0 // add 1 ulp (add 1 to the significand) C1++; if (C1 == 0x002386f26fc10000ull) { // if C1 = 10^16 C1 = 0x00038d7ea4c68000ull; // C1 = 10^15 x_exp++; } // Ok, because MAXFP = 999...99 * 10^emax was caught already } else { // x < 0 // subtract 1 ulp (subtract 1 from the significand) C1--; if (C1 == 0x00038d7ea4c67fffull && x_exp != 0) { // if C1 = 10^15 - 1 C1 = 0x002386f26fc0ffffull; // C1 = 10^16 - 1 x_exp--; } } // assemble the result // if significand has 54 bits if (C1 & MASK_BINARY_OR2) { res = x_sign | (x_exp << 51) | MASK_STEERING_BITS | (C1 & MASK_BINARY_SIG2); } else { // significand fits in 53 bits res = x_sign | (x_exp << 53) | C1; } } // end -MAXFP <= x <= -MINFP - 1 ulp OR MINFP <= x <= MAXFP - 1 ulp } // end x is not special and is not zero BID_RETURN (res); } /***************************************************************************** * BID64 nextdown ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_nextdown (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else DFP_WRAPFN_DFP(64, bid64_nextdown, 64) BID_UINT64 bid64_nextdown (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; BID_UI64DOUBLE tmp1; int x_nr_bits; int q1, ind; BID_UINT64 C1; // C1 represents x_signif (BID_UINT64) // check for NaNs and infinities if ((x & MASK_NAN) == MASK_NAN) { // check for NaN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffffffffffffull; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity if (x & 0x8000000000000000ull) { // x is -inf res = 0xf800000000000000ull; } else { // x is +inf res = 0x77fb86f26fc0ffffull; // +MAXFP = +999...99 * 10^emax } BID_RETURN (res); } // unpack the argument x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x8000000000000001ull; // -MINFP = -1 * 10^emin } else { // x is not special and is not zero if (x == 0xf7fb86f26fc0ffffull) { // x = -MAXFP = -999...99 * 10^emax res = 0xf800000000000000ull; // -inf } else if (x == 0x0000000000000001ull) { // x = +MINFP = 1...99 * 10^emin res = 0x0000000000000000ull; // -0 } else { // -MAXFP + 1ulp <= x <= -MINFP OR MINFP + 1 ulp <= x <= MAXFP // can add/subtract 1 ulp to the significand // Note: we could check here if x >= 10^16 to speed up the case q1 =16 // q1 = nr. of decimal digits in x (1 <= q1 <= 16) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid // rounding errors if (C1 >= 0x0000000100000000ull) { // x >= 2^32 tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // x < 2^32 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q1 = bid_nr_digits[x_nr_bits - 1].digits; if (q1 == 0) { q1 = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q1++; } // if q1 < P16 then pad the significand with zeros if (q1 < P16) { if (x_exp > (BID_UINT64) (P16 - q1)) { ind = P16 - q1; // 1 <= ind <= P16 - 1 // pad with P16 - q1 zeros, until exponent = emin // C1 = C1 * 10^ind C1 = C1 * bid_ten2k64[ind]; x_exp = x_exp - ind; } else { // pad with zeros until the exponent reaches emin ind = x_exp; C1 = C1 * bid_ten2k64[ind]; x_exp = EXP_MIN; } } if (x_sign) { // x < 0 // add 1 ulp (add 1 to the significand) C1++; if (C1 == 0x002386f26fc10000ull) { // if C1 = 10^16 C1 = 0x00038d7ea4c68000ull; // C1 = 10^15 x_exp++; // Ok, because -MAXFP = -999...99 * 10^emax was caught already } } else { // x > 0 // subtract 1 ulp (subtract 1 from the significand) C1--; if (C1 == 0x00038d7ea4c67fffull && x_exp != 0) { // if C1 = 10^15 - 1 C1 = 0x002386f26fc0ffffull; // C1 = 10^16 - 1 x_exp--; } } // assemble the result // if significand has 54 bits if (C1 & MASK_BINARY_OR2) { res = x_sign | (x_exp << 51) | MASK_STEERING_BITS | (C1 & MASK_BINARY_SIG2); } else { // significand fits in 53 bits res = x_sign | (x_exp << 53) | C1; } } // end -MAXFP <= x <= -MINFP - 1 ulp OR MINFP <= x <= MAXFP - 1 ulp } // end x is not special and is not zero BID_RETURN (res); } /***************************************************************************** * BID64 nextafter ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_nextafter (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; BID_UINT64 y = *py; #else DFP_WRAPFN_DFP_DFP(64, bid64_nextafter, 64, 64) BID_UINT64 bid64_nextafter (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT64 tmp1, tmp2; BID_FPSC tmp_fpsf = 0; // dummy fpsf for calls to comparison functions int res1, res2; // check for NaNs or infinities if (((x & MASK_SPECIAL) == MASK_SPECIAL) || ((y & MASK_SPECIAL) == MASK_SPECIAL)) { // x is NaN or infinity or y is NaN or infinity if ((x & MASK_NAN) == MASK_NAN) { // x is NAN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res = x & 0xfdffffffffffffffull; } else { // x is QNaN if ((y & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } // return x res = x; } BID_RETURN (res); } else if ((y & MASK_NAN) == MASK_NAN) { // y is NAN if ((y & 0x0003ffffffffffffull) > 999999999999999ull) y = y & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else y = y & 0xfe03ffffffffffffull; // clear G6-G12 if ((y & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (y) res = y & 0xfdffffffffffffffull; } else { // y is QNaN // return y res = y; } BID_RETURN (res); } else { // at least one is infinity if ((x & MASK_ANY_INF) == MASK_INF) { // x = inf x = x & (MASK_SIGN | MASK_INF); } if ((y & MASK_ANY_INF) == MASK_INF) { // y = inf y = y & (MASK_SIGN | MASK_INF); } } } // neither x nor y is NaN // if not infinity, check for non-canonical values x (treated as zero) if ((x & MASK_ANY_INF) != MASK_INF) { // x != inf // unpack x if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:w+1] if (((x & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull) { // non-canonical x = (x & MASK_SIGN) | ((x & MASK_BINARY_EXPONENT2) << 2); } } else { // if ((x & MASK_STEERING_BITS) != MASK_STEERING_BITS) x is unch. ; // canonical } } // no need to check for non-canonical y // neither x nor y is NaN tmp_fpsf = *pfpsf; // save fpsf #if DECIMAL_CALL_BY_REFERENCE bid64_quiet_equal (&res1, px, py _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_quiet_greater (&res2, px, py _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res1 = bid64_quiet_equal (x, y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res2 = bid64_quiet_greater (x, y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif *pfpsf = tmp_fpsf; // restore fpsf if (res1) { // x = y // return x with the sign of y res = (y & 0x8000000000000000ull) | (x & 0x7fffffffffffffffull); } else if (res2) { // x > y #if DECIMAL_CALL_BY_REFERENCE bid64_nextdown (&res, px _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid64_nextdown (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif } else { // x < y #if DECIMAL_CALL_BY_REFERENCE bid64_nextup (&res, px _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid64_nextup (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif } // if the operand x is finite but the result is infinite, signal // overflow and inexact if (((x & MASK_INF) != MASK_INF) && ((res & MASK_INF) == MASK_INF)) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; } // if the result is in (-10^emin, 10^emin), and is different from the // operand x, signal underflow and inexact tmp1 = 0x00038d7ea4c68000ull; // +100...0[16] * 10^emin tmp2 = res & 0x7fffffffffffffffull; tmp_fpsf = *pfpsf; // save fpsf #if DECIMAL_CALL_BY_REFERENCE bid64_quiet_greater (&res1, &tmp1, &tmp2 _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_quiet_not_equal (&res2, &x, &res _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res1 = bid64_quiet_greater (tmp1, tmp2 _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res2 = bid64_quiet_not_equal (x, res _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif *pfpsf = tmp_fpsf; // restore fpsf if (res1 && res2) { // if (bid64_quiet_greater (tmp1, tmp2, &tmp_fpsf) && // bid64_quiet_not_equal (x, res, &tmp_fpsf)) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the underflow flag *pfpsf |= BID_UNDERFLOW_EXCEPTION; } BID_RETURN (res); } LIBRARY/src/bid128_minmax.c0000644€­ Q01134020000011365015113665770014352 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" /***************************************************************************** * BID128 minimum number *****************************************************************************/ BID128_FUNCTION_ARG2_NORND(bid128_minnum, x, y) BID_UINT128 res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0; //BID_SWAP128 (x); //BID_SWAP128 (y); // check for non-canonical x if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN x.w[1] = x.w[1] & 0xfe003fffffffffffull; // clear out G[6]-G[16] // check for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } } else if ((x.w[1] & MASK_ANY_INF) == MASK_INF) { // x = inf x.w[1] = x.w[1] & (MASK_SIGN | MASK_INF); x.w[0] = 0x0ull; } else { // x is not special // check for non-canonical values - treated as zero if ((x.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // G0_G1=11 // non-canonical x.w[1] = (x.w[1] & MASK_SIGN) | ((x.w[1] << 2) & MASK_EXP); x.w[0] = 0x0ull; } else { // G0_G1 != 11 if ((x.w[1] & MASK_COEFF) > 0x0001ed09bead87c0ull || ((x.w[1] & MASK_COEFF) == 0x0001ed09bead87c0ull && x.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 x.w[1] = (x.w[1] & MASK_SIGN) | (x.w[1] & MASK_EXP); x.w[0] = 0x0ull; } else { // canonical ; } } } // check for non-canonical y if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN y.w[1] = y.w[1] & 0xfe003fffffffffffull; // clear out G[6]-G[16] // check for non-canonical NaN payload if (((y.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((y.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (y.w[0] > 0x38c15b09ffffffffull))) { y.w[1] = y.w[1] & 0xffffc00000000000ull; y.w[0] = 0x0ull; } } else if ((y.w[1] & MASK_ANY_INF) == MASK_INF) { // y = inf y.w[1] = y.w[1] & (MASK_SIGN | MASK_INF); y.w[0] = 0x0ull; } else { // y is not special // check for non-canonical values - treated as zero if ((y.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // G0_G1=11 // non-canonical y.w[1] = (y.w[1] & MASK_SIGN) | ((y.w[1] << 2) & MASK_EXP); y.w[0] = 0x0ull; } else { // G0_G1 != 11 if ((y.w[1] & MASK_COEFF) > 0x0001ed09bead87c0ull || ((y.w[1] & MASK_COEFF) == 0x0001ed09bead87c0ull && y.w[0] > 0x378d8e63ffffffffull)) { // y is non-canonical if coefficient is larger than 10^34 -1 y.w[1] = (y.w[1] & MASK_SIGN) | (y.w[1] & MASK_EXP); y.w[0] = 0x0ull; } else { // canonical ; } } } // NaN (CASE1) if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x.w[1] = x.w[1] & 0xfdffffffffffffffull; // quietize x res = x; } else { // x is QNaN if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NaN, but x is not if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y.w[1] = y.w[1] & 0xfdffffffffffffffull; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = x; BID_RETURN (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 0 res = (((x.w[1] & MASK_SIGN) == MASK_SIGN)) ? x : y; BID_RETURN (res); } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => ignore the exponent // field // (Any non-canonical # is considered 0) if ((sig_x.w[1] == 0) && (sig_x.w[0] == 0)) { x_is_zero = 1; } if ((sig_y.w[1] == 0) && (sig_y.w[0] == 0)) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, neither is greater => return either number res = x; BID_RETURN (res); } else if (x_is_zero) { // is x is zero, it is greater if Y is negative res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } else if (y_is_zero) { // is y is zero, X is greater if it is positive res = ((x.w[1] & MASK_SIGN) != MASK_SIGN) ? y : x; BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison of // the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)) ? y : x; BID_RETURN (res); } // if both components are either bigger or smaller, it is clear what // needs to be done if (sig_x.w[1] >= sig_y.w[1] && sig_x.w[0] >= sig_y.w[0] && exp_x > exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN) ? y : x; BID_RETURN (res); } if (sig_x.w[1] <= sig_y.w[1] && sig_x.w[0] <= sig_y.w[0] && exp_x < exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { // difference cannot be greater than 10^33 res = ((x.w[1] & MASK_SIGN) != MASK_SIGN) ? y : x; BID_RETURN (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)) ? y : x; BID_RETURN (res); } __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)) ? y : x; BID_RETURN (res); } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)) ? x : y; BID_RETURN (res); } // adjust the y significand upwards __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger (converse if negative) res = ((sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)) ? x : y; BID_RETURN (res); } /***************************************************************************** * BID128 minimum magnitude function - returns greater of two numbers *****************************************************************************/ BID128_FUNCTION_ARG2_NORND(bid128_minnum_mag, x, y) BID_UINT128 res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; //BID_SWAP128 (x); //BID_SWAP128 (y); // check for non-canonical x if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN x.w[1] = x.w[1] & 0xfe003fffffffffffull; // clear out G[6]-G[16] // check for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } } else if ((x.w[1] & MASK_ANY_INF) == MASK_INF) { // x = inf x.w[1] = x.w[1] & (MASK_SIGN | MASK_INF); x.w[0] = 0x0ull; } else { // x is not special // check for non-canonical values - treated as zero if ((x.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // G0_G1=11 // non-canonical x.w[1] = (x.w[1] & MASK_SIGN) | ((x.w[1] << 2) & MASK_EXP); x.w[0] = 0x0ull; } else { // G0_G1 != 11 if ((x.w[1] & MASK_COEFF) > 0x0001ed09bead87c0ull || ((x.w[1] & MASK_COEFF) == 0x0001ed09bead87c0ull && x.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 x.w[1] = (x.w[1] & MASK_SIGN) | (x.w[1] & MASK_EXP); x.w[0] = 0x0ull; } else { // canonical ; } } } // check for non-canonical y if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN y.w[1] = y.w[1] & 0xfe003fffffffffffull; // clear out G[6]-G[16] // check for non-canonical NaN payload if (((y.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((y.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (y.w[0] > 0x38c15b09ffffffffull))) { y.w[1] = y.w[1] & 0xffffc00000000000ull; y.w[0] = 0x0ull; } } else if ((y.w[1] & MASK_ANY_INF) == MASK_INF) { // y = inf y.w[1] = y.w[1] & (MASK_SIGN | MASK_INF); y.w[0] = 0x0ull; } else { // y is not special // check for non-canonical values - treated as zero if ((y.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // G0_G1=11 // non-canonical y.w[1] = (y.w[1] & MASK_SIGN) | ((y.w[1] << 2) & MASK_EXP); y.w[0] = 0x0ull; } else { // G0_G1 != 11 if ((y.w[1] & MASK_COEFF) > 0x0001ed09bead87c0ull || ((y.w[1] & MASK_COEFF) == 0x0001ed09bead87c0ull && y.w[0] > 0x378d8e63ffffffffull)) { // y is non-canonical if coefficient is larger than 10^34 -1 y.w[1] = (y.w[1] & MASK_SIGN) | (y.w[1] & MASK_EXP); y.w[0] = 0x0ull; } else { // canonical ; } } } // NaN (CASE1) if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x.w[1] = x.w[1] & 0xfdffffffffffffffull; // quietize x res = x; } else { // x is QNaN if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NaN, but x is not if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y.w[1] = y.w[1] & 0xfdffffffffffffffull; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = y; BID_RETURN (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x infinity, it has maximum magnitude. // Check if magnitudes are equal. If x is negative, return it. res = ((x.w[1] & MASK_SIGN) == MASK_SIGN && (y.w[1] & MASK_INF) == MASK_INF) ? x : y; BID_RETURN (res); } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is infinity, then x is less in magnitude res = x; BID_RETURN (res); } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if ((sig_x.w[1] == 0) && (sig_x.w[0] == 0)) { res = x; BID_RETURN (res); } if ((sig_y.w[1] == 0) && (sig_y.w[0] == 0)) { res = y; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // check if exponents are the same and significands are the same if (exp_y == exp_x && sig_x.w[1] == sig_y.w[1] && sig_x.w[0] == sig_y.w[0]) { if (x.w[1] & 0x8000000000000000ull) { // x is negative res = x; BID_RETURN (res); } else { res = y; BID_RETURN (res); } } else if (((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x == exp_y) || ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) && exp_x > exp_y)) { // if both components are either bigger or smaller, it is clear what // needs to be done; also if the magnitudes are equal res = y; BID_RETURN (res); } else if (((sig_y.w[1] > sig_x.w[1] || (sig_y.w[1] == sig_x.w[1] && sig_y.w[0] > sig_x.w[0])) && exp_y == exp_x) || ((sig_y.w[1] > sig_x.w[1] || (sig_y.w[1] == sig_x.w[1] && sig_y.w[0] >= sig_x.w[0])) && exp_y > exp_x)) { res = x; BID_RETURN (res); } else { ; // continue } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = y; // difference cannot be greater than 10^33 BID_RETURN (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if positive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? y : x; // if equal BID_RETURN (res); } res = (((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ? y : x; BID_RETURN (res); } __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if positive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { // if = in magnitude, return +, (if possible) res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } res = ((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ? y : x; BID_RETURN (res); } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = x; BID_RETURN (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if positive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { // if = in magnitude, return +, (if possible) res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } res = (sig_n_prime256.w[3] == 0 && sig_n_prime256.w[2] == 0 && (sig_n_prime256.w[1] < sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] < sig_x.w[0]))) ? y : x; BID_RETURN (res); } // adjust the y significand upwards __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if positive, return whichever significand is larger (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { // if = in magnitude, return +, if possible) res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } res = (sig_n_prime192.w[2] == 0 && (sig_n_prime192.w[1] < sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] < sig_x.w[0]))) ? y : x; BID_RETURN (res); } /***************************************************************************** * BID128 maximum function - returns greater of two numbers *****************************************************************************/ BID128_FUNCTION_ARG2_NORND(bid128_maxnum, x, y) BID_UINT128 res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0; //BID_SWAP128 (x); //BID_SWAP128 (y); // check for non-canonical x if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN x.w[1] = x.w[1] & 0xfe003fffffffffffull; // clear out G[6]-G[16] // check for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } } else if ((x.w[1] & MASK_ANY_INF) == MASK_INF) { // x = inf x.w[1] = x.w[1] & (MASK_SIGN | MASK_INF); x.w[0] = 0x0ull; } else { // x is not special // check for non-canonical values - treated as zero if ((x.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // G0_G1=11 // non-canonical x.w[1] = (x.w[1] & MASK_SIGN) | ((x.w[1] << 2) & MASK_EXP); x.w[0] = 0x0ull; } else { // G0_G1 != 11 if ((x.w[1] & MASK_COEFF) > 0x0001ed09bead87c0ull || ((x.w[1] & MASK_COEFF) == 0x0001ed09bead87c0ull && x.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 x.w[1] = (x.w[1] & MASK_SIGN) | (x.w[1] & MASK_EXP); x.w[0] = 0x0ull; } else { // canonical ; } } } // check for non-canonical y if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN y.w[1] = y.w[1] & 0xfe003fffffffffffull; // clear out G[6]-G[16] // check for non-canonical NaN payload if (((y.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((y.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (y.w[0] > 0x38c15b09ffffffffull))) { y.w[1] = y.w[1] & 0xffffc00000000000ull; y.w[0] = 0x0ull; } } else if ((y.w[1] & MASK_ANY_INF) == MASK_INF) { // y = inf y.w[1] = y.w[1] & (MASK_SIGN | MASK_INF); y.w[0] = 0x0ull; } else { // y is not special // check for non-canonical values - treated as zero if ((y.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // G0_G1=11 // non-canonical y.w[1] = (y.w[1] & MASK_SIGN) | ((y.w[1] << 2) & MASK_EXP); y.w[0] = 0x0ull; } else { // G0_G1 != 11 if ((y.w[1] & MASK_COEFF) > 0x0001ed09bead87c0ull || ((y.w[1] & MASK_COEFF) == 0x0001ed09bead87c0ull && y.w[0] > 0x378d8e63ffffffffull)) { // y is non-canonical if coefficient is larger than 10^34 -1 y.w[1] = (y.w[1] & MASK_SIGN) | (y.w[1] & MASK_EXP); y.w[0] = 0x0ull; } else { // canonical ; } } } // NaN (CASE1) if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x.w[1] = x.w[1] & 0xfdffffffffffffffull; // quietize x res = x; } else { // x is QNaN if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NaN, but x is not if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y.w[1] = y.w[1] & 0xfdffffffffffffffull; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = x; BID_RETURN (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if ((sig_x.w[1] == 0) && (sig_x.w[0] == 0)) { x_is_zero = 1; } if ((sig_y.w[1] == 0) && (sig_y.w[0] == 0)) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, neither is greater => return either number res = x; BID_RETURN (res); } else if (x_is_zero) { // is x is zero, it is greater if Y is negative res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } else if (y_is_zero) { // is y is zero, X is greater if it is positive res = ((x.w[1] & MASK_SIGN) != MASK_SIGN) ? x : y; BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison of // the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)) ? x : y; BID_RETURN (res); } // if both components are either bigger or smaller, it is clear what // needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN) ? x : y; BID_RETURN (res); } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { // difference cannot be greater than 10^33 res = ((x.w[1] & MASK_SIGN) != MASK_SIGN) ? x : y; BID_RETURN (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)) ? x : y; BID_RETURN (res); } __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)) ? x : y; BID_RETURN (res); } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) != MASK_SIGN)) ? x : y; BID_RETURN (res); } // adjust the y significand upwards __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger (converse if negative) res = ((sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)) ? x : y; BID_RETURN (res); } /***************************************************************************** * BID128 maximum magnitude function - returns greater of two numbers *****************************************************************************/ BID128_FUNCTION_ARG2_NORND(bid128_maxnum_mag, x, y) BID_UINT128 res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; //BID_SWAP128 (x); //BID_SWAP128 (y); // check for non-canonical x if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN x.w[1] = x.w[1] & 0xfe003fffffffffffull; // clear out G[6]-G[16] // check for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } } else if ((x.w[1] & MASK_ANY_INF) == MASK_INF) { // x = inf x.w[1] = x.w[1] & (MASK_SIGN | MASK_INF); x.w[0] = 0x0ull; } else { // x is not special // check for non-canonical values - treated as zero if ((x.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // G0_G1=11 // non-canonical x.w[1] = (x.w[1] & MASK_SIGN) | ((x.w[1] << 2) & MASK_EXP); x.w[0] = 0x0ull; } else { // G0_G1 != 11 if ((x.w[1] & MASK_COEFF) > 0x0001ed09bead87c0ull || ((x.w[1] & MASK_COEFF) == 0x0001ed09bead87c0ull && x.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 x.w[1] = (x.w[1] & MASK_SIGN) | (x.w[1] & MASK_EXP); x.w[0] = 0x0ull; } else { // canonical ; } } } // check for non-canonical y if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN y.w[1] = y.w[1] & 0xfe003fffffffffffull; // clear out G[6]-G[16] // check for non-canonical NaN payload if (((y.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((y.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (y.w[0] > 0x38c15b09ffffffffull))) { y.w[1] = y.w[1] & 0xffffc00000000000ull; y.w[0] = 0x0ull; } } else if ((y.w[1] & MASK_ANY_INF) == MASK_INF) { // y = inf y.w[1] = y.w[1] & (MASK_SIGN | MASK_INF); y.w[0] = 0x0ull; } else { // y is not special // check for non-canonical values - treated as zero if ((y.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // G0_G1=11 // non-canonical y.w[1] = (y.w[1] & MASK_SIGN) | ((y.w[1] << 2) & MASK_EXP); y.w[0] = 0x0ull; } else { // G0_G1 != 11 if ((y.w[1] & MASK_COEFF) > 0x0001ed09bead87c0ull || ((y.w[1] & MASK_COEFF) == 0x0001ed09bead87c0ull && y.w[0] > 0x378d8e63ffffffffull)) { // y is non-canonical if coefficient is larger than 10^34 -1 y.w[1] = (y.w[1] & MASK_SIGN) | (y.w[1] & MASK_EXP); y.w[0] = 0x0ull; } else { // canonical ; } } } // NaN (CASE1) if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x.w[1] = x.w[1] & 0xfdffffffffffffffull; // quietize x res = x; } else { // x is QNaN if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NaN, but x is not if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y.w[1] = y.w[1] & 0xfdffffffffffffffull; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = y; BID_RETURN (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x infinity, it has maximum magnitude res = ((x.w[1] & MASK_SIGN) == MASK_SIGN && (y.w[1] & MASK_INF) == MASK_INF) ? y : x; BID_RETURN (res); } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 res = y; BID_RETURN (res); } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if ((sig_x.w[1] == 0) && (sig_x.w[0] == 0)) { res = y; BID_RETURN (res); } if ((sig_y.w[1] == 0) && (sig_y.w[0] == 0)) { res = x; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) if (exp_y == exp_x && sig_x.w[1] == sig_y.w[1] && sig_x.w[0] == sig_y.w[0]) { // check if exponents are the same and significands are the same if (x.w[1] & 0x8000000000000000ull) { // x is negative res = y; BID_RETURN (res); } else { res = x; BID_RETURN (res); } } else if (((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x == exp_y) || ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) && exp_x > exp_y)) { // if both components are either bigger or smaller, it is clear what // needs to be done; also if the magnitudes are equal res = x; BID_RETURN (res); } else if (((sig_y.w[1] > sig_x.w[1] || (sig_y.w[1] == sig_x.w[1] && sig_y.w[0] > sig_x.w[0])) && exp_y == exp_x) || ((sig_y.w[1] > sig_x.w[1] || (sig_y.w[1] == sig_x.w[1] && sig_y.w[0] >= sig_x.w[0])) && exp_y > exp_x)) { res = y; BID_RETURN (res); } else { ; // continue } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = x; // difference cannot be greater than 10^33 BID_RETURN (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? x : y; // if equal BID_RETURN (res); } res = (((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ? x : y; BID_RETURN (res); } __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { // if equal, return positive magnitude res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } res = ((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ? x : y; BID_RETURN (res); } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = y; BID_RETURN (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { // if equal, return positive (if possible) res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } res = (sig_n_prime256.w[3] == 0 && sig_n_prime256.w[2] == 0 && (sig_n_prime256.w[1] < sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] < sig_x.w[0]))) ? x : y; BID_RETURN (res); } // adjust the y significand upwards __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { // if equal, return positive (if possible) res = ((y.w[1] & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } res = (sig_n_prime192.w[2] == 0 && (sig_n_prime192.w[1] < sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] < sig_x.w[0]))) ? x : y; BID_RETURN (res); } LIBRARY/src/bid64_to_int16.c0000644€­ Q01134020000000635615113665770014447 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffff8000 #define INVALID_RESULT 0x8000 BID_TO_SMALL_INT_CVT_FUNCTION (short, bid64_to_int16_rnint, BID_UINT64, x, bid64_to_int32_rnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid64_to_int16_xrnint, BID_UINT64, x, bid64_to_int32_xrnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid64_to_int16_rninta, BID_UINT64, x, bid64_to_int32_rninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid64_to_int16_xrninta, BID_UINT64, x, bid64_to_int32_xrninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid64_to_int16_int, BID_UINT64, x, bid64_to_int32_int, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid64_to_int16_xint, BID_UINT64, x, bid64_to_int32_xint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid64_to_int16_floor, BID_UINT64, x, bid64_to_int32_floor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid64_to_int16_ceil, BID_UINT64, x, bid64_to_int32_ceil, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid64_to_int16_xfloor, BID_UINT64, x, bid64_to_int32_xfloor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid64_to_int16_xceil, BID_UINT64, x, bid64_to_int32_xceil, int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid32_scalbl.c0000644€­ Q01134020000000430615113665770014230 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_TYPE0_FUNCTION_ARGTYPE1_OTHER_ARGTYPE2(BID_UINT32, bid32_scalbln, BID_UINT32, x, long int, n) BID_UINT32 res; int n1; n1 = (int)n; n1 = n1 < n ? (int)0x7fffffff : n1 > n ? (int)0x80000000 : n1; /* treat overflow/underflow */ #if DECIMAL_CALL_BY_REFERENCE bid32_scalbn (&res, &x, &n1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid32_scalbn (x, n1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } LIBRARY/src/bid64_to_int8.c0000644€­ Q01134020000000633215113665770014362 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffffff80 #define INVALID_RESULT 0x80 BID_TO_SMALL_INT_CVT_FUNCTION (char, bid64_to_int8_rnint, BID_UINT64, x, bid64_to_int32_rnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid64_to_int8_xrnint, BID_UINT64, x, bid64_to_int32_xrnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid64_to_int8_rninta, BID_UINT64, x, bid64_to_int32_rninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid64_to_int8_xrninta, BID_UINT64, x, bid64_to_int32_xrninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid64_to_int8_int, BID_UINT64, x, bid64_to_int32_int, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid64_to_int8_xint, BID_UINT64, x, bid64_to_int32_xint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid64_to_int8_floor, BID_UINT64, x, bid64_to_int32_floor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid64_to_int8_ceil, BID_UINT64, x, bid64_to_int32_ceil, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid64_to_int8_xfloor, BID_UINT64, x, bid64_to_int32_xfloor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid64_to_int8_xceil, BID_UINT64, x, bid64_to_int32_xceil, int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid_functions.h0000644€­ Q01134020000113707215113665770014650 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if defined(__cplusplus) #define BID_EXTERN_C extern "C" #else #define BID_EXTERN_C extern #endif #ifndef _BID_FUNCTIONS_H #define _BID_FUNCTIONS_H #if !defined (__GNUC__) || defined(__QNX__) #include #endif #include // Fix system header issue on Sun solaris and define required type by ourselves #if !defined(_WCHAR_T) && !defined(_WCHAR_T_DEFINED) && !defined(__QNX__) typedef int wchar_t; #endif #ifdef IN_LIBGCC2 // When we are built as the part of the gcc runtime library, libgcc, // we will use gcc types defined in bid_gcc_intrinsics.h. #include "bid_gcc_intrinsics.h" #define BID_ALIGN(n) __attribute__ ((aligned(n))) #else typedef char BID_SINT8; typedef unsigned char BID_UINT8; typedef unsigned BID_UINT32; typedef signed BID_SINT32; #ifdef __GNUC__ #define bid__int64 long long #else #define bid__int64 __int64 #endif #if defined __GNUC__ || defined LINUX || defined SUNOS typedef unsigned long long BID_UINT64; typedef signed long long BID_SINT64; #else typedef unsigned bid__int64 BID_UINT64; typedef signed bid__int64 BID_SINT64; #endif #if defined _MSC_VER #if defined _M_IX86 && !defined __INTEL_COMPILER // Win IA-32, MS compiler #define BID_ALIGN(n) #else #define BID_ALIGN(n) __declspec(align(n)) #endif #else #if !defined HPUX_OS #define BID_ALIGN(n) __attribute__ ((aligned(n))) #else #define BID_ALIGN(n) #endif #endif // bid_gcc_intrinsics.h will also define this. typedef struct BID_ALIGN (16) { BID_UINT64 w[2]; } BID_UINT128; #endif #if !((defined __INTEL_COMPILER) || (defined __INTEL_LLVM_COMPILER)) typedef BID_UINT128 _Quad; #endif #if defined __NO_BINARY80__ #define __ENABLE_BINARY80__ 0 #else #if !defined _MSC_VER || defined __INTEL_COMPILER || defined __INTEL_LLVM_COMPILER #define __ENABLE_BINARY80__ 1 #endif #endif #ifndef HPUX_OS #define BINARY80 long double #if ((defined __INTEL_COMPILER) || (defined __INTEL_LLVM_COMPILER)) && USE_COMPILER_F128_TYPE #define BINARY128 _Quad #else #define BINARY128 BID_UINT128 #endif #define SQRT80 sqrtl #else #define BINARY80 __float80 //#define BINARY128 __float128 #define BINARY128 BID_UINT128 #define SQRT80 sqrtw #endif typedef struct BID_ALIGN (16) { BID_UINT64 w[3]; } BID_UINT192; typedef struct BID_ALIGN (16) { BID_UINT64 w[4]; } BID_UINT256; typedef unsigned int BID_FPSC; // floating-point status and control // TYPE parameters #define BID128_MAXDIGITS 34 #define BID64_MAXDIGITS 16 #define BID32_MAXDIGITS 7 // rounding modes #define BID_ROUNDING_TO_NEAREST 0x00000 #define BID_ROUNDING_DOWN 0x00001 #define BID_ROUNDING_UP 0x00002 #define BID_ROUNDING_TO_ZERO 0x00003 #define BID_ROUNDING_TIES_AWAY 0x00004 #define BID_RMODE_MASK (BID_ROUNDING_TO_NEAREST | BID_ROUNDING_DOWN | BID_ROUNDING_UP | BID_ROUNDING_TO_ZERO | BID_ROUNDING_TIES_AWAY) // status #define BID_FLAG_MASK 0x0000003f #define DEC_FE_ALL_EXCEPT 0x0000003f #define BID_IEEE_FLAGS 0x0000003d #define BID_EXACT_STATUS 0x00000000 /////////////////////////////////////////////////////// // This section may move to fenv_support.h #if !defined(__FENV_H_INCLUDED) && !defined (_FENV_H) && !defined(_FENV_INCLUDED) /* Otherwise we already defined fexcept_t type */ #if defined(__ECL) || defined(__ECC) /* Intel(R) Itanium(R) architecture */ /* Default 64-bit Floating Point Status Register */ #if defined(__linux__) typedef unsigned long fexcept_t; #else typedef unsigned bid__int64 fexcept_t; #endif #else #ifdef __QNX__ #include #else #if (defined(_WIN32) || defined(_WIN64)) typedef unsigned long fexcept_t; #else typedef unsigned short int fexcept_t; #endif #endif #endif #endif typedef enum class_types { signalingNaN, quietNaN, negativeInfinity, negativeNormal, negativeSubnormal, negativeZero, positiveZero, positiveSubnormal, positiveNormal, positiveInfinity } class_t; #define DEC_FE_INVALID 0x01 #define DEC_FE_UNNORMAL 0x02 #define DEC_FE_DIVBYZERO 0x04 #define DEC_FE_OVERFLOW 0x08 #define DEC_FE_UNDERFLOW 0x10 #define DEC_FE_INEXACT 0x20 //////////////////////////////////////////////////////// #define BID_INEXACT_EXCEPTION DEC_FE_INEXACT #define BID_UNDERFLOW_EXCEPTION DEC_FE_UNDERFLOW #define BID_OVERFLOW_EXCEPTION DEC_FE_OVERFLOW #define BID_ZERO_DIVIDE_EXCEPTION DEC_FE_DIVBYZERO #define BID_DENORMAL_EXCEPTION DEC_FE_UNNORMAL #define BID_INVALID_EXCEPTION DEC_FE_INVALID #define BID_UNDERFLOW_INEXACT_EXCEPTION (DEC_FE_UNDERFLOW|DEC_FE_INEXACT) #define BID_OVERFLOW_INEXACT_EXCEPTION (DEC_FE_OVERFLOW|DEC_FE_INEXACT) #define BID_MODE_MASK 0x00001f80 #define BID_INEXACT_MODE 0x00001000 #define BID_UNDERFLOW_MODE 0x00000800 #define BID_OVERFLOW_MODE 0x00000400 #define BID_ZERO_DIVIDE_MODE 0x00000200 #define BID_DENORMAL_MODE 0x00000100 #define BID_INVALID_MODE 0x00000080 #if defined LINUX || defined SUNOS #define BID_LX16 "%016llx" #define BID_LX "%llx" #define BID_LD4 "%4llu" #define BID_LD16 "%016lld" #define BID_LD "%lld" #define BID_LUD "%llu" #define BID_LUD16 "%016llu" #define BID_X8 "%08x" #define BID_X4 "%04x" #define BID_FMT_LLX16 "%016llx" #define BID_FMT_LLX "%llx" #define BID_FMT_LLU4 "%4llu" #define BID_FMT_LLD16 "%016lld" #define BID_FMT_LLD "%lld" #define BID_FMT_LLU "%llu" #define BID_FMT_LLU16 "%016llu" #define BID_FMT_X8 "%08x" #define BID_FMT_X4 "%04x" #else #define BID_LX16 "%016I64x" #define BID_LX "%I64x" #define BID_LD16 "%016I64d" #define BID_LD4 "%4I64u" #define BID_LD "%I64d" #define BID_LUD "%I64u" #define BID_LUD16 "%016I64u" #define BID_X8 "%08x" #define BID_X4 "%04x" #define BID_FMT_LLX16 "%016I64x" #define BID_FMT_LLX "%I64x" #define BID_FMT_LLD16 "%016I64d" #define BID_FMT_LLU4 "%4I64u" #define BID_FMT_LLD "%I64d" #define BID_FMT_LLU "%I64u" #define BID_FMT_LLU16 "%016I64u" #define BID_FMT_X8 "%08x" #define BID_FMT_X4 "%04x" #endif /* rounding modes */ // typedef unsigned int _IDEC_round; /*#if DECIMAL_GLOBAL_ROUNDING BID_EXTERN_C _IDEC_round _IDEC_glbround; // initialized to BID_ROUNDING_TO_NEAREST #endif*/ /* exception flags */ // typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info /*#if DECIMAL_GLOBAL_EXCEPTION_FLAGS BID_EXTERN_C _IDEC_flags _IDEC_glbflags; // initialized to BID_EXACT_STATUS #endif*/ /* exception masks */ typedef unsigned int _IDEC_exceptionmasks; /*#if DECIMAL_ALTERNATE_EXCEPTION_HANDLING #if DECIMAL_GLOBAL_EXCEPTION_MASKS BID_EXTERN_C _IDEC_exceptionmasks _IDEC_glbexceptionmasks; // initialized to BID_MODE_MASK #endif #endif*/ #if DECIMAL_ALTERNATE_EXCEPTION_HANDLING /* exception information */ typedef struct { unsigned int inexact_result:1; unsigned int underflow:1; unsigned int overflow:1; unsigned int zero_divide:1; unsigned int invalid_operation:1; } BID_fpieee_exception_flags_t; typedef enum { _fp_round_nearest, _fp_round_minus_infinity, _fp_round_plus_infinity, _fp_round_chopped, _fp_round_away } BID_fpieee_rounding_mode_t; typedef enum { _fp_precision24, _fp_precision63, _fp_precision64, _fp_precision7, _fp_precision16, _fp_precision34 } _fpieee_precision_t; typedef enum { _fp_code_unspecified, _fp_code_add, _fp_code_subtract, _fp_code_multiply, _fp_code_divide, _fp_code_square_root, _fp_code_compare, _fp_code_convert, _fp_code_convert_to_integer_neareven, _fp_code_convert_to_integer_down, _fp_code_convert_to_integer_up, _fp_code_convert_to_integer_truncate, _fp_code_convert_to_integer_nearaway, _fp_code_fma, _fp_code_fmin, _fp_code_fmax, _fp_code_famin, _fp_code_famax, _fp_code_round_to_integral, _fp_code_minnum, _fp_code_maxnum, _fp_code_minnummag, _fp_code_maxnummag, _fp_code_quantize, _fp_code_logb, _fp_code_scaleb, _fp_code_remainder, _fp_code_nextup, _fp_code_nextdown, _fp_code_nextafter, } BID_fp_operation_code_t; typedef enum { _fp_compare_equal, _fp_compare_greater, _fp_compare_less, _fp_compare_unordered } fpieee_compare_result_t; typedef enum { _fp_format_fp32, _fp_format_fp64, _fp_format_fp80, _fp_format_fp128, _fp_format_dec_fp32, _fp_format_dec_fp64, _fp_format_dec_fp128, _fp_format_i8, /* 8-bit integer */ _fp_format_i16, /* 16-bit integer */ _fp_format_i32, /* 32-bit integer */ _fp_format_i64, /* 64-bit integer */ _fp_format_u8, /* 8-bit unsigned integer */ _fp_format_u16, /* 16-bit unsigned integer */ _fp_format_u32, /* 32-bit unsigned integer */ _fp_format_u64, /* 64-bit unsigned integer */ _fp_format_compare, /* compare value format */ _fp_format_decimal_char, /* decimal character */ _fp_format_string /* string */ } BID_fpieee_format_t; typedef struct { unsigned short W[5]; } _float80_t; typedef struct { unsigned int W[4]; } _float128_t; typedef struct { union { float fp32_value; double fp64_value; _float80_t fp80_value; _float128_t fp128_value; BID_UINT32 decfp32_value; BID_UINT64 decfp64_value; BID_UINT128 decfp128_value; char i8_value; short i16_value; int i32_value; BID_SINT64 i64_value; unsigned char u8_value; unsigned short u16_value; unsigned int u32_value; unsigned long u64_value; fpieee_compare_result_t compare_value; unsigned char s[256]; } value; unsigned int operand_valid:1; BID_fpieee_format_t format:5; } BID_fpieee_value_t; typedef struct { unsigned int rounding_mode:3; unsigned int precision:3; unsigned int operation:26; BID_fpieee_exception_flags_t cause; BID_fpieee_exception_flags_t enable; BID_fpieee_exception_flags_t status; BID_fpieee_value_t operand1; BID_fpieee_value_t operand2; BID_fpieee_value_t operand3; BID_fpieee_value_t result; } _IDEC_excepthandling; BID_EXTERN_C _IDEC_excepthandling _IDEC_glbexcepthandling; #endif #if DECIMAL_CALL_BY_REFERENCE BID_EXTERN_C void bid_to_dpd32 (BID_UINT32 * pres, BID_UINT32 * px); BID_EXTERN_C void bid_to_dpd64 (BID_UINT64 * pres, BID_UINT64 * px); BID_EXTERN_C void bid_to_dpd128 (BID_UINT128 * pres, BID_UINT128 * px); BID_EXTERN_C void bid_dpd_to_bid32 (BID_UINT32 * pres, BID_UINT32 * px); BID_EXTERN_C void bid_dpd_to_bid64 (BID_UINT64 * pres, BID_UINT64 * px); BID_EXTERN_C void bid_dpd_to_bid128 (BID_UINT128 * pres, BID_UINT128 * px); BID_EXTERN_C void bid128dd_add (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128dq_add (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128qd_add (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_add (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128dd_sub (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128dq_sub (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128qd_sub (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_sub (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128dd_mul (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128dq_mul (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128qd_mul (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_mul (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_div (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128dd_div (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128dq_div (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128qd_div (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_fma (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128ddd_fma (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128ddq_fma (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128dqd_fma (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128dqq_fma (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128qdd_fma (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128qdq_fma (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128qqd_fma (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); // Note: bid128qqq_fma is represented by bid128_fma // Note: bid64ddd_fma is represented by bid64_fma BID_EXTERN_C void bid64ddq_fma (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64dqd_fma (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64dqq_fma (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qdd_fma (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qdq_fma (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qqd_fma (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qqq_fma (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_sqrt (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128d_sqrt (BID_UINT128 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_cbrt (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_exp (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_log (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_pow (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_atan2 (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_fmod (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_modf (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_hypot (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_sin (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_cos (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_tan (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_asin (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_acos (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_atan (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_sinh (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_cosh (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_tanh (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_asinh (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_acosh (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_atanh (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_log1p (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_expm1 (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_log10 (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_log2 (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_exp2 (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_exp10 (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_erf (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_erfc (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_tgamma (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_lgamma (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_exp (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_log (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_pow (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_atan2 (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_fmod (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_modf (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_hypot (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_sin (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_cos (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_tan (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_asin (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_acos (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_atan (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_sinh (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_cosh (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_tanh (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_asinh (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_acosh (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_atanh (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_log1p (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_expm1 (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_log10 (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_log2 (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_exp2 (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_exp10 (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_erf (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_erfc (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_tgamma (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_lgamma (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_exp (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_log (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_pow (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_atan2 (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_fmod (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_modf (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_hypot (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_sin (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_cos (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_tan (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_asin (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_acos (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_atan (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_sinh (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_cosh (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_tanh (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_asinh (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_acosh (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_atanh (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_log1p (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_expm1 (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_log10 (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_log2 (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_exp2 (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_exp10 (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_erf (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_erfc (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_tgamma (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_lgamma (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_add (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64dq_add (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qd_add (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qq_add (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_sub (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64dq_sub (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qd_sub (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qq_sub (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_mul (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64dq_mul (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qd_mul (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qq_mul (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_div (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64dq_div (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qd_div (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64qq_div (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_fma (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_sqrt (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64q_sqrt (BID_UINT64 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_cbrt (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int8_rnint (char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int8_xrnint (char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int8_rninta (char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int8_xrninta (char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int8_int (char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int8_xint (char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int8_floor (char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int8_xfloor (char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int8_ceil (char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int8_xceil (char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int16_rnint (short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int16_xrnint (short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int16_rninta (short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int16_xrninta (short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int16_int (short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int16_xint (short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int16_floor (short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int16_xfloor (short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int16_ceil (short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int16_xceil (short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint8_rnint (unsigned char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint8_xrnint (unsigned char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint8_rninta (unsigned char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint8_xrninta (unsigned char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint8_int (unsigned char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint8_xint (unsigned char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint8_floor (unsigned char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint8_xfloor (unsigned char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint8_ceil (unsigned char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint8_xceil (unsigned char *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint16_rnint (unsigned short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint16_xrnint (unsigned short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint16_rninta (unsigned short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint16_xrninta (unsigned short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint16_int (unsigned short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint16_xint (unsigned short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint16_floor (unsigned short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint16_xfloor (unsigned short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint16_ceil (unsigned short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint16_xceil (unsigned short *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int32_rnint (int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int32_xrnint (int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int32_rninta (int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int32_xrninta (int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int32_int (int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int32_xint (int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int32_floor (int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int32_xfloor (int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int32_ceil (int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int32_xceil (int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint32_rnint (unsigned int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint32_xrnint (unsigned int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint32_rninta (unsigned int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint32_xrninta (unsigned int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint32_int (unsigned int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint32_xint (unsigned int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint32_floor (unsigned int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint32_xfloor (unsigned int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint32_ceil (unsigned int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint32_xceil (unsigned int *pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int64_rnint (BID_SINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int64_xrnint (BID_SINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int64_rninta (BID_SINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int64_xrninta (BID_SINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int64_int (BID_SINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int64_xint (BID_SINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int64_floor (BID_SINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int64_xfloor (BID_SINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int64_ceil (BID_SINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_int64_xceil (BID_SINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint64_rnint (BID_UINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint64_xrnint (BID_UINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint64_rninta (BID_UINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint64_xrninta (BID_UINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint64_int (BID_UINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint64_xint (BID_UINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint64_floor (BID_UINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint64_xfloor (BID_UINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint64_ceil (BID_UINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_uint64_xceil (BID_UINT64 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int32_rnint (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int32_xrnint (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int32_rninta (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int32_xrninta (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int32_int (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int32_xint (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int32_floor (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int32_xfloor (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int32_ceil (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int32_xceil (int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int8_rnint (char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int8_xrnint (char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int8_rninta (char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int8_xrninta (char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int8_int (char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int8_xint (char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int8_floor (char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int8_xfloor (char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int8_ceil (char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int8_xceil (char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int16_rnint (short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int16_xrnint (short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int16_rninta (short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int16_xrninta (short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int16_int (short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int16_xint (short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int16_floor (short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int16_xfloor (short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int16_ceil (short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int16_xceil (short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint8_rnint (unsigned char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint8_xrnint (unsigned char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint8_rninta (unsigned char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint8_xrninta (unsigned char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint8_int (unsigned char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint8_xint (unsigned char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint8_floor (unsigned char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint8_xfloor (unsigned char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint8_ceil (unsigned char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint8_xceil (unsigned char *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint16_rnint (unsigned short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint16_xrnint (unsigned short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint16_rninta (unsigned short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint16_xrninta (unsigned short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint16_int (unsigned short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint16_xint (unsigned short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint16_floor (unsigned short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint16_xfloor (unsigned short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint16_ceil (unsigned short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint16_xceil (unsigned short *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint32_rnint (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint32_xrnint (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint32_rninta (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint32_xrninta (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint32_int (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint32_xint (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint32_floor (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint32_xfloor (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint32_ceil (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint32_xceil (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int64_rnint (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int64_xrnint (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int64_rninta (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int64_xrninta (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int64_int (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int64_xint (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int64_floor (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int64_xfloor (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int64_ceil (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_int64_xceil (BID_SINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint64_rnint (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint64_xrnint (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint64_rninta (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint64_xrninta (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint64_int (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint64_xint (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint64_floor (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint64_xfloor (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint64_ceil (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_uint64_xceil (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int32_rnint (int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int32_xrnint (int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int32_rninta (int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int32_xrninta (int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int32_int (int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int32_xint (int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int32_floor (int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int32_xfloor (int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int32_ceil (int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int32_xceil (int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int8_rnint (char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int8_xrnint (char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int8_rninta (char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int8_xrninta (char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int8_int (char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int8_xint (char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int8_floor (char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int8_xfloor (char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int8_ceil (char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int8_xceil (char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int16_rnint (short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int16_xrnint (short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int16_rninta (short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int16_xrninta (short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int16_int (short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int16_xint (short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int16_floor (short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int16_xfloor (short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int16_ceil (short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int16_xceil (short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint8_rnint (unsigned char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint8_xrnint (unsigned char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint8_rninta (unsigned char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint8_xrninta (unsigned char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint8_int (unsigned char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint8_xint (unsigned char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint8_floor (unsigned char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint8_xfloor (unsigned char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint8_ceil (unsigned char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint8_xceil (unsigned char *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint16_rnint (unsigned short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint16_xrnint (unsigned short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint16_rninta (unsigned short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint16_xrninta (unsigned short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint16_int (unsigned short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint16_xint (unsigned short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint16_floor (unsigned short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint16_xfloor (unsigned short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint16_ceil (unsigned short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint16_xceil (unsigned short *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint32_rnint (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint32_xrnint (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint32_rninta (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint32_xrninta (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint32_int (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint32_xint (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint32_floor (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint32_xfloor (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint32_ceil (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint32_xceil (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int64_rnint (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int64_xrnint (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int64_rninta (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int64_xrninta (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int64_int (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int64_xint (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int64_floor (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int64_xfloor (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int64_ceil (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_int64_xceil (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint64_rnint (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint64_xrnint (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint64_rninta (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint64_xrninta (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint64_int (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint64_xint (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint64_floor (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint64_xfloor (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint64_ceil (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_uint64_xceil (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_equal (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_greater (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_greater_equal (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_greater_unordered (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_less (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_less_equal (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_less_unordered (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_not_equal (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_not_greater (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_not_less (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_ordered (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quiet_unordered (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_signaling_greater (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_signaling_greater_equal (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_signaling_greater_unordered (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_signaling_less (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_signaling_less_equal (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_signaling_less_unordered (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_signaling_not_greater (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_signaling_not_less (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_equal (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_greater (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_greater_equal (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_greater_unordered (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_less (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_less_equal (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_less_unordered (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_not_equal (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_not_greater (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_not_less (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_ordered (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quiet_unordered (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_signaling_greater (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_signaling_greater_equal (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_signaling_greater_unordered (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_signaling_less (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_signaling_less_equal (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_signaling_less_unordered (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_signaling_not_greater (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_signaling_not_less (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_round_integral_exact (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_round_integral_nearest_even (BID_UINT32 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_round_integral_negative (BID_UINT32 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_round_integral_positive (BID_UINT32 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_round_integral_zero (BID_UINT32 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_round_integral_nearest_away (BID_UINT32 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_round_integral_exact (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_round_integral_nearest_even (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_round_integral_negative (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_round_integral_positive (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_round_integral_zero (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_round_integral_nearest_away (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_round_integral_exact (BID_UINT128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_round_integral_nearest_even (BID_UINT128 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_round_integral_negative (BID_UINT128 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_round_integral_positive (BID_UINT128 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_round_integral_zero (BID_UINT128 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_round_integral_nearest_away (BID_UINT128 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_nextup (BID_UINT32 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_nextdown (BID_UINT32 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_nextafter (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_nextup (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_nextdown (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_nextafter (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_nextup (BID_UINT128 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_nextdown (BID_UINT128 * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_nextafter (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_minnum (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_minnum_mag (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_maxnum (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_maxnum_mag (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_minnum (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_minnum_mag (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_maxnum (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_maxnum_mag (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_minnum (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_minnum_mag (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_maxnum (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_maxnum_mag (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_from_int32 (BID_UINT32 * pres, int *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_from_uint32 (BID_UINT32 * pres, unsigned int *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_from_int64 (BID_UINT32 * pres, BID_SINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_from_uint64 (BID_UINT32 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_from_int32 (BID_UINT64 * pres, int *px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_from_uint32 (BID_UINT64 * pres, unsigned int *px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_from_int64 (BID_UINT64 * pres, BID_SINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_from_uint64 (BID_UINT64 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_from_int32 (BID_UINT128 * pres, int *px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_from_uint32 (BID_UINT128 * pres, unsigned int *px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_from_int64 (BID_UINT128 * pres, BID_SINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_from_uint64 (BID_UINT128 * pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_isSigned (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_isNormal (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_isSubnormal (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_isFinite (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_isZero (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_isInf (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_isSignaling (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_isCanonical (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_isNaN (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_copy (BID_UINT32 * pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_negate (BID_UINT32 * pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_abs (BID_UINT32 * pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_copySign (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_class (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_sameQuantum (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_totalOrder (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_totalOrderMag (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_radix (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_isSigned (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_isNormal (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_isSubnormal (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_isFinite (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_isZero (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_isInf (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_isSignaling (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_isCanonical (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_isNaN (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_copy (BID_UINT64 * pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_negate (BID_UINT64 * pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_abs (BID_UINT64 * pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_copySign (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_class (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_sameQuantum (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_totalOrder (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_totalOrderMag (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_radix (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_isSigned (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_isNormal (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_isSubnormal (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_isFinite (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_isZero (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_isInf (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_isSignaling (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_isCanonical (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_isNaN (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_copy (BID_UINT128 * pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_negate (BID_UINT128 * pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_abs (BID_UINT128 * pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_copySign (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_class (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_sameQuantum (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_totalOrder (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_totalOrderMag (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_radix (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_rem (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_ilogb (int * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_scalbn (BID_UINT32 * pres, BID_UINT32 * px, int *pn _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_ldexp (BID_UINT32 * pres, BID_UINT32 * px, int *pn _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_rem (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_ilogb (int * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_scalbn (BID_UINT64 * pres, BID_UINT64 * px, int *pn _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_ldexp (BID_UINT64 * pres, BID_UINT64 * px, int *pn _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_rem (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_ilogb (int * pres, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_scalbn (BID_UINT128 * pres, BID_UINT128 * px, int *pn _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_ldexp (BID_UINT128 * pres, BID_UINT128 * px, int *pn _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_bid64 (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_bid128 (BID_UINT128 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_bid128 (BID_UINT128 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_bid32 (BID_UINT32 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_bid32 (BID_UINT32 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_bid64 (BID_UINT64 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_from_string (BID_UINT32 * pres, char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_string (char *ps, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_from_string (BID_UINT64 * pres, char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_string (char *ps, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_from_string (BID_UINT128 * pres, char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_string (char *str, BID_UINT128 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quantize (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quantize (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quantize (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_binary32 (float *pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_binary64 (double *pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_binary80 (BINARY80 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_binary128 (BINARY128 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary128_to_bid32 (BID_UINT32 * pres, BINARY128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary128_to_bid64 (BID_UINT64 * pres, BINARY128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary128_to_bid128 (BID_UINT128 * pres, BINARY128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_binary32 (float *pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_binary64 (double *pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_binary80 (BINARY80 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_binary128 (BINARY128 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary64_to_bid32 (BID_UINT32 * pres, double *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary64_to_bid64 (BID_UINT64 * pres, double *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary64_to_bid128 (BID_UINT128 * pres, double *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_binary32 (float *pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_binary64 (double *pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_binary80 (BINARY80 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_binary128 (BINARY128 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary32_to_bid32 (BID_UINT32 * pres, float *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary32_to_bid64 (BID_UINT64 * pres, float *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary32_to_bid128 (BID_UINT128 * pres, float *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary80_to_bid32 (BID_UINT32 * pres, BINARY80 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary80_to_bid64 (BID_UINT64 * pres, BINARY80 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void binary80_to_bid128 (BID_UINT128 * pres, BINARY80 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid_is754 (int *retval); BID_EXTERN_C void bid_is754R (int *retval); BID_EXTERN_C void bid_signalException (_IDEC_flags * pflagsmask _EXC_FLAGS_PARAM); BID_EXTERN_C void bid_lowerFlags (_IDEC_flags * pflagsmask _EXC_FLAGS_PARAM); BID_EXTERN_C void bid_testFlags (_IDEC_flags * praised, _IDEC_flags * pflagsmask _EXC_FLAGS_PARAM); BID_EXTERN_C void bid_testSavedFlags (_IDEC_flags * praised, _IDEC_flags * psavedflags, _IDEC_flags * pflagsmask); BID_EXTERN_C void bid_restoreFlags (_IDEC_flags * pflagsvalues, _IDEC_flags * pflagsmask _EXC_FLAGS_PARAM); BID_EXTERN_C void bid_saveFlags (_IDEC_flags * pflagsvalues, _IDEC_flags * pflagsmask _EXC_FLAGS_PARAM); BID_EXTERN_C void bid_getDecimalRoundingDirection (_IDEC_round * rounding_mode _RND_MODE_PARAM); BID_EXTERN_C void bid_setDecimalRoundingDirection (_IDEC_round * rounding_mode _RND_MODE_PARAM); BID_EXTERN_C void bid32_add (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_sub (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_mul (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_div (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_fma (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py, BID_UINT32 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_sqrt (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_cbrt (BID_UINT32 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_equal (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_greater (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_greater_equal (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_greater_unordered (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_less (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_less_equal (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_less_unordered (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_not_equal (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_not_greater (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_not_less (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_ordered (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quiet_unordered (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_signaling_greater (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_signaling_greater_equal (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_signaling_greater_unordered (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_signaling_less (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_signaling_less_equal (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_signaling_less_unordered (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_signaling_not_greater (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_signaling_not_less (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_frexp (BID_UINT32 *pres, BID_UINT32 *px, int *exp); BID_EXTERN_C void bid64_frexp (BID_UINT64 *pres, BID_UINT64 *px, int *exp); BID_EXTERN_C void bid128_frexp (BID_UINT128 *pres, BID_UINT128 *px, int *exp); BID_EXTERN_C void bid32_logb (BID_UINT32 *pres, BID_UINT32 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_logb (BID_UINT64 *pres, BID_UINT64 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_logb (BID_UINT128 *pres, BID_UINT128 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_scalbln (BID_UINT32 *pres, BID_UINT32 *px, long int *pn _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_scalbln (BID_UINT64 *pres, BID_UINT64 *px, long int *pn _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_scalbln (BID_UINT128 *pres, BID_UINT128 *px, long int *pn _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_nearbyint (BID_UINT32 *pres, BID_UINT32 *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_nearbyint (BID_UINT64 *pres, BID_UINT64 *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_nearbyint (BID_UINT128 *pres, BID_UINT128 *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_lrint (long int *pres, BID_UINT32 *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_lrint (long int *pres, BID_UINT64 *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_lrint (long int *pres, BID_UINT128 *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_llrint (long long int *pres, BID_UINT32 *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_llrint (long long int *pres, BID_UINT64 *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_llrint (long long int *pres, BID_UINT128 *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_lround (long int *pres, BID_UINT32 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_lround (long int *pres, BID_UINT64 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_lround (long int *pres, BID_UINT128 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_llround (long long int *pres, BID_UINT32 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_llround (long long int *pres, BID_UINT64 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_llround (long long int *pres, BID_UINT128 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_nan (BID_UINT32 *pres, const char *tagp); BID_EXTERN_C void bid64_nan (BID_UINT64 *pres, const char *tagp); BID_EXTERN_C void bid128_nan (BID_UINT128 *pres, const char *tagp); BID_EXTERN_C void bid32_nexttoward (BID_UINT32 *pres, BID_UINT32 *px, BID_UINT128 *py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_nexttoward (BID_UINT64 *pres, BID_UINT64 *px, BID_UINT128 *py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_nexttoward (BID_UINT128 *pres, BID_UINT128 *px, BID_UINT128 *py _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_fdim (BID_UINT32 *pres, BID_UINT32 *px, BID_UINT32 *py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_fdim (BID_UINT64 *pres, BID_UINT64 *px, BID_UINT64 *py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_fdim (BID_UINT128 *pres, BID_UINT128 *px, BID_UINT128 *py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quantexp (int *pres, BID_UINT32 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quantexp (int *pres, BID_UINT64 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quantexp (int *pres, BID_UINT128 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_quantum (BID_UINT32 *pres, BID_UINT32 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_quantum (BID_UINT64 *pres, BID_UINT64 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_quantum (BID_UINT128 *pres, BID_UINT128 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_llquantexp (long long int *pres, BID_UINT32 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_llquantexp (long long int *pres, BID_UINT64 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_llquantexp (long long int *pres, BID_UINT128 *px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_inf (BID_UINT32 *pres); BID_EXTERN_C void bid64_inf (BID_UINT64 *pres); BID_EXTERN_C void bid128_inf (BID_UINT128 *pres); #else BID_EXTERN_C BID_UINT32 bid_to_dpd32 (BID_UINT32 px); BID_EXTERN_C BID_UINT64 bid_to_dpd64 (BID_UINT64 px); BID_EXTERN_C BID_UINT128 bid_to_dpd128 (BID_UINT128 px); BID_EXTERN_C BID_UINT32 bid_dpd_to_bid32 (BID_UINT32 px); BID_EXTERN_C BID_UINT64 bid_dpd_to_bid64 (BID_UINT64 px); BID_EXTERN_C BID_UINT128 bid_dpd_to_bid128 (BID_UINT128 px); BID_EXTERN_C BID_UINT128 bid128dd_add (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128dq_add (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128qd_add (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_add (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128dd_sub (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128dq_sub (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128qd_sub (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_sub (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128dd_mul (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128dq_mul (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128qd_mul (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_mul (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_div (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128dd_div (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128dq_div (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128qd_div (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_fma (BID_UINT128 x, BID_UINT128 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128ddd_fma (BID_UINT64 x, BID_UINT64 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128ddq_fma (BID_UINT64 x, BID_UINT64 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128dqd_fma (BID_UINT64 x, BID_UINT128 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128dqq_fma (BID_UINT64 x, BID_UINT128 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128qdd_fma (BID_UINT128 x, BID_UINT64 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128qdq_fma (BID_UINT128 x, BID_UINT64 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128qqd_fma (BID_UINT128 x, BID_UINT128 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); // Note: bid128qqq_fma is represented by bid128_fma // Note: bid64ddd_fma is represented by bid64_fma BID_EXTERN_C BID_UINT64 bid64ddq_fma (BID_UINT64 x, BID_UINT64 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64dqd_fma (BID_UINT64 x, BID_UINT128 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64dqq_fma (BID_UINT64 x, BID_UINT128 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qdd_fma (BID_UINT128 x, BID_UINT64 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qdq_fma (BID_UINT128 x, BID_UINT64 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qqd_fma (BID_UINT128 x, BID_UINT128 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qqq_fma (BID_UINT128 x, BID_UINT128 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_sqrt (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128d_sqrt (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_cbrt (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_exp (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_log (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_pow (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_atan2 (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_fmod (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_modf (BID_UINT32 x, BID_UINT32 * y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_hypot (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_sin (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_cos (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_tan (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_asin (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_acos (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_atan (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_sinh (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_cosh (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_tanh (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_asinh (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_acosh (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_atanh (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_log1p (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_expm1 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_log10 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_log2 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_exp2 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_exp10 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_erf (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_erfc (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_tgamma (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_lgamma (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_exp (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_log (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_pow (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_atan2 (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_fmod (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_modf (BID_UINT64 x, BID_UINT64 * y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_hypot (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_sin (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_cos (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_tan (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_asin (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_acos (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_atan (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_sinh (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_cosh (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_tanh (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_asinh (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_acosh (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_atanh (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_log1p (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_expm1 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_log10 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_log2 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_exp2 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_exp10 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_erf (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_erfc (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_tgamma (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_lgamma (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_exp (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_log (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_pow (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_atan2 (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_fmod (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_modf (BID_UINT128 x, BID_UINT128 * y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_hypot (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_sin (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_cos (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_tan (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_asin (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_acos (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_atan (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_sinh (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_cosh (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_tanh (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_asinh (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_acosh (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_atanh (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_log1p (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_expm1 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_log10 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_log2 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_exp2 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_exp10 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_erf (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_erfc (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_tgamma (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_lgamma (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_add (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64dq_add (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qd_add (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qq_add (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_sub (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64dq_sub (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qd_sub (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qq_sub (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_mul (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64dq_mul (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qd_mul (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qq_mul (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_div (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64dq_div (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qd_div (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64qq_div (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_fma (BID_UINT64 x, BID_UINT64 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_sqrt (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64q_sqrt (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_cbrt (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid128_to_int8_rnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid128_to_int8_xrnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid128_to_int8_rninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid128_to_int8_xrninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid128_to_int8_int (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid128_to_int8_xint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid128_to_int8_floor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid128_to_int8_xfloor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid128_to_int8_ceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid128_to_int8_xceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid128_to_int16_rnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid128_to_int16_xrnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid128_to_int16_rninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid128_to_int16_xrninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid128_to_int16_int (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid128_to_int16_xint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid128_to_int16_floor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid128_to_int16_xfloor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid128_to_int16_ceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid128_to_int16_xceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid128_to_uint8_rnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid128_to_uint8_xrnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid128_to_uint8_rninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid128_to_uint8_xrninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid128_to_uint8_int (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid128_to_uint8_xint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid128_to_uint8_floor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid128_to_uint8_xfloor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid128_to_uint8_ceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid128_to_uint8_xceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid128_to_uint16_rnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid128_to_uint16_xrnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid128_to_uint16_rninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid128_to_uint16_xrninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid128_to_uint16_int (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid128_to_uint16_xint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid128_to_uint16_floor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid128_to_uint16_xfloor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid128_to_uint16_ceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid128_to_uint16_xceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_to_int32_rnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_to_int32_xrnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_to_int32_rninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_to_int32_xrninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_to_int32_int (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_to_int32_xint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_to_int32_floor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_to_int32_xfloor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_to_int32_ceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_to_int32_xceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid128_to_uint32_rnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid128_to_uint32_xrnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid128_to_uint32_rninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid128_to_uint32_xrninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid128_to_uint32_int (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid128_to_uint32_xint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid128_to_uint32_floor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid128_to_uint32_xfloor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid128_to_uint32_ceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid128_to_uint32_xceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid128_to_int64_rnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid128_to_int64_xrnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid128_to_int64_rninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid128_to_int64_xrninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid128_to_int64_int (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid128_to_int64_xint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid128_to_int64_floor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid128_to_int64_xfloor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid128_to_int64_ceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid128_to_int64_xceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_uint64_rnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_uint64_xrnint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_uint64_rninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_uint64_xrninta (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_uint64_int (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_uint64_xint (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_uint64_floor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_uint64_xfloor (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_uint64_ceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_uint64_xceil (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_to_int32_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_to_int32_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_to_int32_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_to_int32_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_to_int32_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_to_int32_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_to_int32_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_to_int32_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_to_int32_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_to_int32_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid64_to_int8_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid64_to_int8_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid64_to_int8_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid64_to_int8_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid64_to_int8_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid64_to_int8_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid64_to_int8_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid64_to_int8_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid64_to_int8_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid64_to_int8_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid64_to_int16_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid64_to_int16_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid64_to_int16_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid64_to_int16_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid64_to_int16_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid64_to_int16_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid64_to_int16_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid64_to_int16_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid64_to_int16_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid64_to_int16_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid64_to_uint8_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid64_to_uint8_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid64_to_uint8_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid64_to_uint8_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid64_to_uint8_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid64_to_uint8_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid64_to_uint8_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid64_to_uint8_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid64_to_uint8_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid64_to_uint8_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid64_to_uint16_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid64_to_uint16_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid64_to_uint16_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid64_to_uint16_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid64_to_uint16_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid64_to_uint16_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid64_to_uint16_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid64_to_uint16_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid64_to_uint16_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid64_to_uint16_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid64_to_uint32_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid64_to_uint32_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid64_to_uint32_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid64_to_uint32_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid64_to_uint32_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid64_to_uint32_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid64_to_uint32_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid64_to_uint32_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid64_to_uint32_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid64_to_uint32_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid64_to_int64_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid64_to_int64_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid64_to_int64_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid64_to_int64_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid64_to_int64_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid64_to_int64_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid64_to_int64_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid64_to_int64_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid64_to_int64_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid64_to_int64_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_to_uint64_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_to_uint64_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_to_uint64_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_to_uint64_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_to_uint64_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_to_uint64_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_to_uint64_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_to_uint64_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_to_uint64_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_to_uint64_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid32_to_int8_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid32_to_int8_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid32_to_int8_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid32_to_int8_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid32_to_int8_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid32_to_int8_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid32_to_int8_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid32_to_int8_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid32_to_int8_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C char bid32_to_int8_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid32_to_int16_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid32_to_int16_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid32_to_int16_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid32_to_int16_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid32_to_int16_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid32_to_int16_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid32_to_int16_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid32_to_int16_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid32_to_int16_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C short bid32_to_int16_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid32_to_uint8_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid32_to_uint8_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid32_to_uint8_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid32_to_uint8_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid32_to_uint8_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid32_to_uint8_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid32_to_uint8_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid32_to_uint8_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid32_to_uint8_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned char bid32_to_uint8_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid32_to_uint16_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid32_to_uint16_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid32_to_uint16_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid32_to_uint16_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid32_to_uint16_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid32_to_uint16_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid32_to_uint16_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid32_to_uint16_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid32_to_uint16_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned short bid32_to_uint16_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_to_int32_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_to_int32_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_to_int32_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_to_int32_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_to_int32_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_to_int32_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_to_int32_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_to_int32_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_to_int32_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_to_int32_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid32_to_uint32_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid32_to_uint32_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid32_to_uint32_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid32_to_uint32_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid32_to_uint32_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid32_to_uint32_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid32_to_uint32_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid32_to_uint32_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid32_to_uint32_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C unsigned int bid32_to_uint32_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid32_to_int64_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid32_to_int64_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid32_to_int64_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid32_to_int64_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid32_to_int64_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid32_to_int64_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid32_to_int64_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid32_to_int64_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid32_to_int64_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_SINT64 bid32_to_int64_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_uint64_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_uint64_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_uint64_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_uint64_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_uint64_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_uint64_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_uint64_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_uint64_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_uint64_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_uint64_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_equal (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_greater (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_greater_equal (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_greater_unordered (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_less (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_less_equal (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_less_unordered (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_not_equal (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_not_greater (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_not_less (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_ordered (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quiet_unordered (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_signaling_greater (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_signaling_greater_equal (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_signaling_greater_unordered (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_signaling_less (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_signaling_less_equal (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_signaling_less_unordered (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_signaling_not_greater (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_signaling_not_less (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_equal (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_greater (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_greater_equal (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_greater_unordered (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_less (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_less_equal (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_less_unordered (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_not_equal (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_not_greater (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_not_less (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_ordered (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quiet_unordered (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_signaling_greater (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_signaling_greater_equal (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_signaling_greater_unordered (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_signaling_less (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_signaling_less_equal (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_signaling_less_unordered (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_signaling_not_greater (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_signaling_not_less (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_greater (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_greater_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_greater_unordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_less (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_less_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_less_unordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_not_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_not_greater (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_not_less (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_ordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_unordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_greater (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_greater_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_greater_unordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_less (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_less_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_less_unordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_not_greater (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_not_less (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_round_integral_exact (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_round_integral_nearest_even (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_round_integral_negative (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_round_integral_positive (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_round_integral_zero (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_round_integral_nearest_away (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_round_integral_exact (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_round_integral_nearest_even (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_round_integral_negative (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_round_integral_positive (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_round_integral_zero (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_round_integral_nearest_away (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_round_integral_exact (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_round_integral_nearest_even (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_round_integral_negative (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_round_integral_positive (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_round_integral_zero (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_round_integral_nearest_away (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_nextup (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_nextdown (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_nextafter (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_nextup (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_nextdown (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_nextafter (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_nextup (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_nextdown (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_nextafter (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_minnum (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_minnum_mag (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_maxnum (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_maxnum_mag (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_minnum (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_minnum_mag (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_maxnum (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_maxnum_mag (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_minnum (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_minnum_mag (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_maxnum (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_maxnum_mag (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_from_int32 (int x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_from_uint32 (unsigned int x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_from_int64 (BID_SINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_from_uint64 (BID_UINT64 _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_from_int32 (int x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_from_uint32 (unsigned int x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_from_int64 (BID_SINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_from_uint64 (BID_UINT64 _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_from_int32 (int x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_from_uint32 (unsigned int x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_from_int64 (BID_SINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_from_uint64 (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_isSigned (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_isNormal (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_isSubnormal (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_isFinite (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_isZero (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_isInf (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_isSignaling (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_isCanonical (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_isNaN (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_copy (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_negate (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_abs (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_copySign (BID_UINT32 x, BID_UINT32 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C class_t bid32_class (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_sameQuantum (BID_UINT32 x, BID_UINT32 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_totalOrder (BID_UINT32 x, BID_UINT32 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_totalOrderMag (BID_UINT32 x, BID_UINT32 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_radix (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_isSigned (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_isNormal (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_isSubnormal (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_isFinite (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_isZero (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_isInf (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_isSignaling (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_isCanonical (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_isNaN (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_copy (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_negate (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_abs (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_copySign (BID_UINT64 x, BID_UINT64 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C class_t bid64_class (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_sameQuantum (BID_UINT64 x, BID_UINT64 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_totalOrder (BID_UINT64 x, BID_UINT64 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_totalOrderMag (BID_UINT64 x, BID_UINT64 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_radix (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_isSigned (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_isNormal (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_isSubnormal (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_isFinite (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_isZero (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_isInf (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_isSignaling (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_isCanonical (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_isNaN (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_copy (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_negate (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_abs (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_copySign (BID_UINT128 x, BID_UINT128 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C class_t bid128_class (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_sameQuantum (BID_UINT128 x, BID_UINT128 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_totalOrder (BID_UINT128 x, BID_UINT128 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_totalOrderMag (BID_UINT128 x, BID_UINT128 y _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_radix (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_rem (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_ilogb (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_scalbn (BID_UINT32 x, int n _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_ldexp (BID_UINT32 x, int n _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_rem (BID_UINT64 x, BID_UINT64 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_ilogb (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_scalbn (BID_UINT64 x, int n _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_ldexp (BID_UINT64 x, int n _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_rem (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_ilogb (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_scalbn (BID_UINT128 x, int n _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_ldexp (BID_UINT128 x, int n _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid32_to_bid64 (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid32_to_bid128 (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid64_to_bid128 (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid64_to_bid32 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid128_to_bid32 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid128_to_bid64 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid32_to_string (char *ps, BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_from_string (char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid64_to_string (char *ps, BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_from_string (char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C void bid128_to_string (char *str, BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_from_string (char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_quantize (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_quantize (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_quantize (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 binary128_to_bid32 (BINARY128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 binary128_to_bid64 (BINARY128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 binary128_to_bid128 (BINARY128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 binary64_to_bid32 (double x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 binary64_to_bid64 (double x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 binary64_to_bid128 (double x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 binary80_to_bid32 (BINARY80 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 binary80_to_bid64 (BINARY80 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 binary80_to_bid128 (BINARY80 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 binary32_to_bid32 (float x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 binary32_to_bid64 (float x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 binary32_to_bid128 (float x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C float bid128_to_binary32 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C double bid128_to_binary64 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BINARY80 bid128_to_binary80 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BINARY128 bid128_to_binary128 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C float bid64_to_binary32 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C double bid64_to_binary64 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BINARY80 bid64_to_binary80 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BINARY128 bid64_to_binary128 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C float bid32_to_binary32 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C double bid32_to_binary64 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BINARY80 bid32_to_binary80 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BINARY128 bid32_to_binary128 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid_is754 (void); BID_EXTERN_C int bid_is754R (void); BID_EXTERN_C void bid_signalException (_IDEC_flags flagsmask _EXC_FLAGS_PARAM); BID_EXTERN_C void bid_lowerFlags (_IDEC_flags flagsmask _EXC_FLAGS_PARAM); BID_EXTERN_C _IDEC_flags bid_testFlags (_IDEC_flags flagsmask _EXC_FLAGS_PARAM); BID_EXTERN_C _IDEC_flags bid_testSavedFlags (_IDEC_flags savedflags, _IDEC_flags flagsmask); BID_EXTERN_C void bid_restoreFlags (_IDEC_flags flagsvalues, _IDEC_flags flagsmask _EXC_FLAGS_PARAM); BID_EXTERN_C _IDEC_flags bid_saveFlags (_IDEC_flags flagsmask _EXC_FLAGS_PARAM); #if !DECIMAL_GLOBAL_ROUNDING BID_EXTERN_C _IDEC_round bid_getDecimalRoundingDirection (_IDEC_round rnd_mode); #else BID_EXTERN_C _IDEC_round bid_getDecimalRoundingDirection (void); #endif #if !DECIMAL_GLOBAL_ROUNDING BID_EXTERN_C _IDEC_round bid_setDecimalRoundingDirection (_IDEC_round rounding_mode _RND_MODE_PARAM); #else BID_EXTERN_C void bid_setDecimalRoundingDirection (_IDEC_round rounding_mode); #endif BID_EXTERN_C BID_UINT32 bid32_add (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_sub (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_mul (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_div (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_fma (BID_UINT32 x, BID_UINT32 y, BID_UINT32 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_sqrt (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_cbrt (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_greater (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_greater_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_greater_unordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_less (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_less_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_less_unordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_not_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_not_greater (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_not_less (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_ordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quiet_unordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_greater (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_greater_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_greater_unordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_less (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_less_equal (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_less_unordered (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_not_greater (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_signaling_not_less (BID_UINT32 x, BID_UINT32 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_frexp (BID_UINT32 x, int *exp); BID_EXTERN_C BID_UINT64 bid64_frexp (BID_UINT64 x, int *exp); BID_EXTERN_C BID_UINT128 bid128_frexp (BID_UINT128 x, int *exp); BID_EXTERN_C BID_UINT32 bid32_logb (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_logb (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_logb (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_scalbln (BID_UINT32 x, long int n _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_scalbln (BID_UINT64 x, long int n _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_scalbln (BID_UINT128 x, long int n _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_nearbyint (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_nearbyint (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_nearbyint (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long int bid32_lrint (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long int bid64_lrint (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long int bid128_lrint (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long long int bid32_llrint (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long long int bid64_llrint (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long long int bid128_llrint (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long int bid32_lround (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long int bid64_lround (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long int bid128_lround (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long long int bid32_llround (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long long int bid64_llround (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long long int bid128_llround (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_nan (const char *tagp); BID_EXTERN_C BID_UINT64 bid64_nan (const char *tagp); BID_EXTERN_C BID_UINT128 bid128_nan (const char *tagp); BID_EXTERN_C BID_UINT32 bid32_nexttoward (BID_UINT32 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_nexttoward (BID_UINT64 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_nexttoward (BID_UINT128 x, BID_UINT128 y _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_fdim (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_fdim (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_fdim (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid32_quantexp (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid64_quantexp (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C int bid128_quantexp (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_quantum (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT64 bid64_quantum (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT128 bid128_quantum (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long long int bid32_llquantexp (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long long int bid64_llquantexp (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C long long int bid128_llquantexp (BID_UINT128 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); BID_EXTERN_C BID_UINT32 bid32_inf (void); BID_EXTERN_C BID_UINT64 bid64_inf (void); BID_EXTERN_C BID_UINT128 bid128_inf (void); #endif // Functions not dependent on different parameters BID_EXTERN_C BID_UINT32 bid_strtod32(const char* ps_in, char** endptr); BID_EXTERN_C BID_UINT64 bid_strtod64(const char* ps_in, char** endptr); BID_EXTERN_C BID_UINT128 bid_strtod128(const char* ps_in, char** endptr); BID_EXTERN_C BID_UINT32 bid_wcstod32(const wchar_t* ps_in, wchar_t** endptr); BID_EXTERN_C BID_UINT64 bid_wcstod64(const wchar_t* ps_in, wchar_t** endptr); BID_EXTERN_C BID_UINT128 bid_wcstod128(const wchar_t* ps_in, wchar_t** endptr); BID_EXTERN_C void bid_feclearexcept( int excepts _EXC_FLAGS_PARAM ); BID_EXTERN_C void bid_fegetexceptflag( fexcept_t *flagp, int excepts _EXC_FLAGS_PARAM ); BID_EXTERN_C void bid_feraiseexcept( int excepts _EXC_FLAGS_PARAM ); BID_EXTERN_C void bid_fesetexceptflag( const fexcept_t *flagp, int excepts _EXC_FLAGS_PARAM ); BID_EXTERN_C int bid_fetestexcept( int excepts _EXC_FLAGS_PARAM ); // Internal Functions BID_EXTERN_C void bid_round64_2_18 (int q, int x, BID_UINT64 C, BID_UINT64 * ptr_Cstar, int *delta_exp, int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint); BID_EXTERN_C void bid_round128_19_38 (int q, int x, BID_UINT128 C, BID_UINT128 * ptr_Cstar, int *delta_exp, int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint); BID_EXTERN_C void bid_round192_39_57 (int q, int x, BID_UINT192 C, BID_UINT192 * ptr_Cstar, int *delta_exp, int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint); BID_EXTERN_C void bid_round256_58_76 (int q, int x, BID_UINT256 C, BID_UINT256 * ptr_Cstar, int *delta_exp, int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint); #endif LIBRARY/src/bid64_noncomp.c0000644€­ Q01134020000007474415113665770014463 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" static const BID_UINT64 bid_mult_factor[16] = { 1ull, 10ull, 100ull, 1000ull, 10000ull, 100000ull, 1000000ull, 10000000ull, 100000000ull, 1000000000ull, 10000000000ull, 100000000000ull, 1000000000000ull, 10000000000000ull, 100000000000000ull, 1000000000000000ull }; /***************************************************************************** * BID64 non-computational functions: * - bid64_isSigned * - bid64_isNormal * - bid64_isSubnormal * - bid64_isFinite * - bid64_isZero * - bid64_isInf * - bid64_isSignaling * - bid64_isCanonical * - bid64_isNaN * - bid64_copy * - bid64_negate * - bid64_abs * - bid64_copySign * - bid64_class * - bid64_sameQuantum * - bid64_totalOrder * - bid64_totalOrderMag * - bid64_radix ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_isSigned (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_isSigned, 64) int bid64_isSigned (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // return 1 iff x is not zero, nor NaN nor subnormal nor infinity #if DECIMAL_CALL_BY_REFERENCE void bid64_isNormal (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_isNormal, 64) int bid64_isNormal (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT128 sig_x_prime; BID_UINT64 sig_x; unsigned int exp_x; if ((x & MASK_INF) == MASK_INF) { // x is either INF or NaN res = 0; } else { // decode number into exponent and significand if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; // check for zero or non-canonical if (sig_x > 9999999999999999ull || sig_x == 0) { res = 0; // zero or non-canonical BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; } else { sig_x = (x & MASK_BINARY_SIG1); if (sig_x == 0) { res = 0; // zero BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; } // if exponent is less than -383, the number may be subnormal // if (exp_x - 398 = -383) the number may be subnormal if (exp_x < 15) { __mul_64x64_to_128MACH (sig_x_prime, sig_x, bid_mult_factor[exp_x]); if (sig_x_prime.w[1] == 0 && sig_x_prime.w[0] < 1000000000000000ull) { res = 0; // subnormal } else { res = 1; // normal } } else { res = 1; // normal } } BID_RETURN (res); } // return 1 iff x is not zero, nor NaN nor normal nor infinity #if DECIMAL_CALL_BY_REFERENCE void bid64_isSubnormal (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_isSubnormal, 64) int bid64_isSubnormal (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT128 sig_x_prime; BID_UINT64 sig_x; unsigned int exp_x; if ((x & MASK_INF) == MASK_INF) { // x is either INF or NaN res = 0; } else { // decode number into exponent and significand if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; // check for zero or non-canonical if (sig_x > 9999999999999999ull || sig_x == 0) { res = 0; // zero or non-canonical BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; } else { sig_x = (x & MASK_BINARY_SIG1); if (sig_x == 0) { res = 0; // zero BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; } // if exponent is less than -383, the number may be subnormal // if (exp_x - 398 = -383) the number may be subnormal if (exp_x < 15) { __mul_64x64_to_128MACH (sig_x_prime, sig_x, bid_mult_factor[exp_x]); if (sig_x_prime.w[1] == 0 && sig_x_prime.w[0] < 1000000000000000ull) { res = 1; // subnormal } else { res = 0; // normal } } else { res = 0; // normal } } BID_RETURN (res); } //iff x is zero, subnormal or normal (not infinity or NaN) #if DECIMAL_CALL_BY_REFERENCE void bid64_isFinite (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_isFinite, 64) int bid64_isFinite (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x & MASK_INF) != MASK_INF); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_isZero (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_isZero, 64) int bid64_isZero (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; // if infinity or nan, return 0 if ((x & MASK_INF) == MASK_INF) { res = 0; } else if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] // => sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; // if(sig_x > 9999999999999999ull) {return 1;} res = (((x & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull); } else { res = ((x & MASK_BINARY_SIG1) == 0); } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_isInf (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_isInf, 64) int bid64_isInf (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x & MASK_INF) == MASK_INF) && ((x & MASK_NAN) != MASK_NAN); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_isSignaling (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_isSignaling, 64) int bid64_isSignaling (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x & MASK_SNAN) == MASK_SNAN); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_isCanonical (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_isCanonical, 64) int bid64_isCanonical (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; if ((x & MASK_NAN) == MASK_NAN) { // NaN if (x & 0x01fc000000000000ull) { res = 0; } else if ((x & 0x0003ffffffffffffull) > 999999999999999ull) { // payload res = 0; } else { res = 1; } } else if ((x & MASK_INF) == MASK_INF) { if (x & 0x03ffffffffffffffull) { res = 0; } else { res = 1; } } else if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // 54-bit coeff. res = (((x & MASK_BINARY_SIG2) | MASK_BINARY_OR2) <= 9999999999999999ull); } else { // 53-bit coeff. res = 1; } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_isNaN (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_isNaN, 64) int bid64_isNaN (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x & MASK_NAN) == MASK_NAN); BID_RETURN (res); } // copies a floating-point operand x to destination y, with no change #if DECIMAL_CALL_BY_REFERENCE void bid64_copy (BID_UINT64 * pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else DFP_WRAPFN_DFP(64, bid64_copy, 64) BID_UINT64 bid64_copy (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; res = x; BID_RETURN (res); } // copies a floating-point operand x to destination y, reversing the sign #if DECIMAL_CALL_BY_REFERENCE void bid64_negate (BID_UINT64 * pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else DFP_WRAPFN_DFP(64, bid64_negate, 64) BID_UINT64 bid64_negate (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; res = x ^ MASK_SIGN; BID_RETURN (res); } // copies a floating-point operand x to destination y, changing the sign to positive #if DECIMAL_CALL_BY_REFERENCE void bid64_abs (BID_UINT64 * pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else DFP_WRAPFN_DFP(64, bid64_abs, 64) BID_UINT64 bid64_abs (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; res = x & ~MASK_SIGN; BID_RETURN (res); } // copies operand x to destination in the same format as x, but // with the sign of y #if DECIMAL_CALL_BY_REFERENCE void bid64_copySign (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; BID_UINT64 y = *py; #else DFP_WRAPFN_DFP_DFP(64, bid64_copySign, 64, 64) BID_UINT64 bid64_copySign (BID_UINT64 x, BID_UINT64 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; res = (x & ~MASK_SIGN) | (y & MASK_SIGN); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_class (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_class, 64) class_t bid64_class (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT128 sig_x_prime; BID_UINT64 sig_x; int exp_x; if ((x & MASK_NAN) == MASK_NAN) { // is the NaN signaling? if ((x & MASK_SNAN) == MASK_SNAN) { res = signalingNaN; BID_RETURN (res); } // if NaN and not signaling, must be quietNaN res = quietNaN; BID_RETURN (res); } else if ((x & MASK_INF) == MASK_INF) { // is the Infinity negative? if ((x & MASK_SIGN) == MASK_SIGN) { res = negativeInfinity; } else { // otherwise, must be positive infinity res = positiveInfinity; } BID_RETURN (res); } else if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // decode number into exponent and significand sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; // check for zero or non-canonical if (sig_x > 9999999999999999ull || sig_x == 0) { if ((x & MASK_SIGN) == MASK_SIGN) { res = negativeZero; } else { res = positiveZero; } BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; } else { sig_x = (x & MASK_BINARY_SIG1); if (sig_x == 0) { res = ((x & MASK_SIGN) == MASK_SIGN) ? negativeZero : positiveZero; BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; } // if exponent is less than -383, number may be subnormal // if (exp_x - 398 < -383) if (exp_x < 15) { // sig_x *10^exp_x __mul_64x64_to_128MACH (sig_x_prime, sig_x, bid_mult_factor[exp_x]); if (sig_x_prime.w[1] == 0 && (sig_x_prime.w[0] < 1000000000000000ull)) { res = ((x & MASK_SIGN) == MASK_SIGN) ? negativeSubnormal : positiveSubnormal; BID_RETURN (res); } } // otherwise, normal number, determine the sign res = ((x & MASK_SIGN) == MASK_SIGN) ? negativeNormal : positiveNormal; BID_RETURN (res); } // true if the exponents of x and y are the same, false otherwise. // The special cases of sameQuantum (NaN, NaN) and sameQuantum (Inf, Inf) are // true. // If exactly one operand is infinite or exactly one operand is NaN, then false #if DECIMAL_CALL_BY_REFERENCE void bid64_sameQuantum (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; BID_UINT64 y = *py; #else RES_WRAPFN_DFP_DFP(int, bid64_sameQuantum, 64, 64) int bid64_sameQuantum (BID_UINT64 x, BID_UINT64 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; unsigned int exp_x, exp_y; // if both operands are NaN, return true; if just one is NaN, return false if ((x & MASK_NAN) == MASK_NAN || ((y & MASK_NAN) == MASK_NAN)) { res = ((x & MASK_NAN) == MASK_NAN && (y & MASK_NAN) == MASK_NAN); BID_RETURN (res); } // if both operands are INF, return true; if just one is INF, return false if ((x & MASK_INF) == MASK_INF || (y & MASK_INF) == MASK_INF) { res = ((x & MASK_INF) == MASK_INF && (y & MASK_INF) == MASK_INF); BID_RETURN (res); } // decode exponents for both numbers, and return true if they match if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; } if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; } res = (exp_x == exp_y); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_totalOrder (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; BID_UINT64 y = *py; #else RES_WRAPFN_DFP_DFP(int, bid64_totalOrder, 64, 64) int bid64_totalOrder (BID_UINT64 x, BID_UINT64 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y, pyld_y, pyld_x; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0; // NaN (CASE1) // if x and y are unordered numerically because either operand is NaN // (1) totalOrder(-NaN, number) is true // (2) totalOrder(number, +NaN) is true // (3) if x and y are both NaN: // i) negative sign bit < positive sign bit // ii) signaling < quiet for +NaN, reverse for -NaN // iii) lesser payload < greater payload for +NaN (reverse for -NaN) // iv) else if bitwise identical (in canonical form), return 1 if ((x & MASK_NAN) == MASK_NAN) { // if x is -NaN if ((x & MASK_SIGN) == MASK_SIGN) { // return true, unless y is -NaN also if ((y & MASK_NAN) != MASK_NAN || (y & MASK_SIGN) != MASK_SIGN) { res = 1; // y is a number, return 1 BID_RETURN (res); } else { // if y and x are both -NaN // if x and y are both -sNaN or both -qNaN, we have to compare payloads // this xnor statement evaluates to true if both are sNaN or qNaN if (! (((y & MASK_SNAN) == MASK_SNAN) ^ ((x & MASK_SNAN) == MASK_SNAN))) { // it comes down to the payload. we want to return true if x has a // larger payload, or if the payloads are equal (canonical forms // are bitwise identical) pyld_y = y & 0x0003ffffffffffffull; pyld_x = x & 0x0003ffffffffffffull; if (pyld_y > 999999999999999ull || pyld_y == 0) { // if y is zero, x must be less than or numerically equal // y's payload is 0 res = 1; BID_RETURN (res); } // if x is zero and y isn't, x has the smaller payload // definitely (since we know y isn't 0 at this point) if (pyld_x > 999999999999999ull || pyld_x == 0) { // x's payload is 0 res = 0; BID_RETURN (res); } res = (pyld_x >= pyld_y); BID_RETURN (res); } else { // either x = -sNaN and y = -qNaN or x = -qNaN and y = -sNaN res = (y & MASK_SNAN) == MASK_SNAN; // totalOrder(-qNaN, -sNaN) == 1 BID_RETURN (res); } } } else { // x is +NaN // return false, unless y is +NaN also if ((y & MASK_NAN) != MASK_NAN || (y & MASK_SIGN) == MASK_SIGN) { res = 0; // y is a number, return 1 BID_RETURN (res); } else { // x and y are both +NaN; // must investigate payload if both quiet or both signaling // this xnor statement will be true if both x and y are +qNaN or +sNaN if (! (((y & MASK_SNAN) == MASK_SNAN) ^ ((x & MASK_SNAN) == MASK_SNAN))) { // it comes down to the payload. we want to return true if x has a // smaller payload, or if the payloads are equal (canonical forms // are bitwise identical) pyld_y = y & 0x0003ffffffffffffull; pyld_x = x & 0x0003ffffffffffffull; // if x is zero and y isn't, x has the smaller // payload definitely (since we know y isn't 0 at this point) if (pyld_x > 999999999999999ull || pyld_x == 0) { res = 1; BID_RETURN (res); } if (pyld_y > 999999999999999ull || pyld_y == 0) { // if y is zero, x must be less than or numerically equal res = 0; BID_RETURN (res); } res = (pyld_x <= pyld_y); BID_RETURN (res); } else { // return true if y is +qNaN and x is +sNaN // (we know they're different bc of xor if_stmt above) res = ((x & MASK_SNAN) == MASK_SNAN); BID_RETURN (res); } } } } else if ((y & MASK_NAN) == MASK_NAN) { // x is certainly not NAN in this case. // return true if y is positive res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 1; BID_RETURN (res); } // OPPOSITE SIGNS (CASE 3) // if signs are opposite, return 1 if x is negative // (if xy res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull || sig_x == 0) { x_is_zero = 1; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); if (sig_x == 0) { x_is_zero = 1; } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull || sig_y == 0) { y_is_zero = 1; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); if (sig_y == 0) { y_is_zero = 1; } } // ZERO (CASE 5) // if x and y represent the same entities, and // both are negative , return true iff exp_x <= exp_y if (x_is_zero && y_is_zero) { if (!((x & MASK_SIGN) == MASK_SIGN) ^ ((y & MASK_SIGN) == MASK_SIGN)) { // if signs are the same: // totalOrder(x,y) iff exp_x >= exp_y for negative numbers // totalOrder(x,y) iff exp_x <= exp_y for positive numbers if (exp_x == exp_y) { res = 1; BID_RETURN (res); } res = (exp_x <= exp_y) ^ ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } else { // signs are different. // totalOrder(-0, +0) is true // totalOrder(+0, -0) is false res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } } // if x is zero and y isn't, clearly x has the smaller payload. if (x_is_zero) { res = ((y & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if y is zero, and x isn't, clearly y has the smaller payload. if (y_is_zero) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 greater than exp_y, it is // definitely larger, so no need for compensation if (exp_x - exp_y > 15) { // difference cannot be greater than 10^15 res = ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if exp_x is 15 less than exp_y, it is // definitely smaller, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down // to the compensated significand if (exp_x > exp_y) { // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // if x and y represent the same entities, // and both are negative, return true iff exp_x <= exp_y if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { // case cannot occure, because all bits must // be the same - would have been caught if (x==y) res = (exp_x <= exp_y) ^ ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // if positive, return 1 if adjusted x is smaller than y res = ((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // if x and y represent the same entities, // and both are negative, return true iff exp_x <= exp_y if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { // Cannot occur, because all bits must be the same. // Case would have been caught if (x==y) res = (exp_x <= exp_y) ^ ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // values are not equal, for positive numbers return 1 // if x is less than y. 0 otherwise res = ((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // totalOrderMag is TotalOrder(abs(x), abs(y)) #if DECIMAL_CALL_BY_REFERENCE void bid64_totalOrderMag (int *pres, BID_UINT64 * px, BID_UINT64 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; BID_UINT64 y = *py; #else RES_WRAPFN_DFP_DFP(int, bid64_totalOrderMag, 64, 64) int bid64_totalOrderMag (BID_UINT64 x, BID_UINT64 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y, pyld_y, pyld_x; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0; // NaN (CASE 1) // if x and y are unordered numerically because either operand is NaN // (1) totalOrder(number, +NaN) is true // (2) if x and y are both NaN: // i) signaling < quiet for +NaN // ii) lesser payload < greater payload for +NaN // iii) else if bitwise identical (in canonical form), return 1 if ((x & MASK_NAN) == MASK_NAN) { // x is +NaN // return false, unless y is +NaN also if ((y & MASK_NAN) != MASK_NAN) { res = 0; // y is a number, return 1 BID_RETURN (res); } else { // x and y are both +NaN; // must investigate payload if both quiet or both signaling // this xnor statement will be true if both x and y are +qNaN or +sNaN if (! (((y & MASK_SNAN) == MASK_SNAN) ^ ((x & MASK_SNAN) == MASK_SNAN))) { // it comes down to the payload. we want to return true if x has a // smaller payload, or if the payloads are equal (canonical forms // are bitwise identical) pyld_y = y & 0x0003ffffffffffffull; pyld_x = x & 0x0003ffffffffffffull; // if x is zero and y isn't, x has the smaller // payload definitely (since we know y isn't 0 at this point) if (pyld_x > 999999999999999ull || pyld_x == 0) { res = 1; BID_RETURN (res); } if (pyld_y > 999999999999999ull || pyld_y == 0) { // if y is zero, x must be less than or numerically equal res = 0; BID_RETURN (res); } res = (pyld_x <= pyld_y); BID_RETURN (res); } else { // return true if y is +qNaN and x is +sNaN // (we know they're different bc of xor if_stmt above) res = ((x & MASK_SNAN) == MASK_SNAN); BID_RETURN (res); } } } else if ((y & MASK_NAN) == MASK_NAN) { // x is certainly not NAN in this case. // return true if y is positive res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits (except sign bit) are the same, // these numbers are equal. if ((x & ~MASK_SIGN) == (y & ~MASK_SIGN)) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // x is positive infinity, only return1 // if y is positive infinity as well res = ((y & MASK_INF) == MASK_INF); BID_RETURN (res); } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so: // if y is +inf, x if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_x > 9999999999999999ull || sig_x == 0) { x_is_zero = 1; } } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); if (sig_x == 0) { x_is_zero = 1; } } // if steering bits are 11 (condition will be 0), // then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (sig_y > 9999999999999999ull || sig_y == 0) { y_is_zero = 1; } } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); if (sig_y == 0) { y_is_zero = 1; } } // ZERO (CASE 5) // if x and y represent the same entities, // and both are negative , return true iff exp_x <= exp_y if (x_is_zero && y_is_zero) { // totalOrder(x,y) iff exp_x <= exp_y for positive numbers res = (exp_x <= exp_y); BID_RETURN (res); } // if x is zero and y isn't, clearly x has the smaller payload. if (x_is_zero) { res = 1; BID_RETURN (res); } // if y is zero, and x isn't, clearly y has the smaller payload. if (y_is_zero) { res = 0; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = 0; BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = 1; BID_RETURN (res); } // if exp_x is 15 greater than exp_y, it is definitely // larger, so no need for compensation if (exp_x - exp_y > 15) { res = 0; // difference cannot be greater than 10^15 BID_RETURN (res); } // if exp_x is 15 less than exp_y, it is definitely // smaller, no need for compensation if (exp_y - exp_x > 15) { res = 1; BID_RETURN (res); } // if |exp_x - exp_y| <= 15, it comes down // to the compensated significand if (exp_x > exp_y) { // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // if x and y represent the same entities, // and both are negative, return true iff exp_x <= exp_y if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { // case cannot occur, because all bits // must be the same - would have been caught if (x==y) res = 0; // res = (exp_x <= exp_y); but exp_x > exp_y BID_RETURN (res); } // if positive, return 1 if adjusted x is smaller than y res = ((sig_n_prime.w[1] == 0) && sig_n_prime.w[0] < sig_y); BID_RETURN (res); } // from this point on -15 <= exp_x - exp_y <= 0 // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // if x and y represent the same entities, // and both are negative, return true iff exp_x <= exp_y if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = 1; // res = (exp_x <= exp_y); but -15 <= exp_x - exp_y <= 0 BID_RETURN (res); } // values are not equal, for positive numbers // return 1 if x is less than y. 0 otherwise res = ((sig_n_prime.w[1] > 0) || (sig_x < sig_n_prime.w[0])); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_radix (int *pres, BID_UINT64 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(int, bid64_radix, 64) int bid64_radix (BID_UINT64 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; if (x) // dummy test res = 10; else res = 10; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_inf (BID_UINT64 *pres) { #else BID_UINT64 bid64_inf (void) { #endif BID_UINT64 res; res = 0x7800000000000000ull; // +inf BID_RETURN(res); } #if DECIMAL_CALL_BY_REFERENCE void bid64_nan (BID_UINT64 *pres, const char *tagp) { #else DFP_WRAPFN_OTHERTYPE(64, bid64_nan, const char *) BID_UINT64 bid64_nan (const char *tagp) { #endif BID_UINT64 res, x; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = BID_ROUNDING_TO_NEAREST; #endif #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS unsigned int fpsf; unsigned int *pfpsf = &fpsf; #endif res = 0x7c00000000000000ull; // +QNaN if (!tagp) BID_RETURN(res); #if DECIMAL_CALL_BY_REFERENCE bid64_from_string (&x, (char *)tagp _RND_MODE_ARG _EXC_FLAGS_ARG); #else x = bid64_from_string ((char *)tagp _RND_MODE_ARG _EXC_FLAGS_ARG); #endif x = x & 0x0003ffffffffffffull; // valid values fit in 50 bits res = res | x; BID_RETURN(res); } LIBRARY/src/bid32_next.c0000644€­ Q01134020000003515515113665770013754 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32 nextup ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_nextup (BID_UINT32 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else DFP_WRAPFN_DFP(32, bid32_nextup, 32) BID_UINT32 bid32_nextup (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 res; BID_UINT32 x_sign; BID_UINT32 x_exp; BID_UI32FLOAT tmp1; int x_nr_bits; int q1, ind; BID_UINT32 C1; // C1 represents x_signif (BID_UINT32) // check for NaNs and infinities if ((x & MASK_NAN32) == MASK_NAN32) { // check for NaN if ((x & 0x000fffff) > 999999) x = x & 0xfe000000; // clear G6-G10 and the payload bits else x = x & 0xfe0fffff; // clear G6-G10 if ((x & MASK_SNAN32) == MASK_SNAN32) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffff; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF32) == MASK_INF32) { // check for Infinity if (!(x & 0x80000000)) { // x is +inf res = 0x78000000; } else { // x is -inf res = 0xf7f8967f; // -MAXFP = -9999999 * 10^emax } BID_RETURN (res); } // unpack the argument x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:7] if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000001; // MINFP = 1 * 10^emin } else { // x is not special and is not zero if (x == 0x77f8967f) { // x = +MAXFP = 9999999 * 10^emax res = 0x78000000; // +inf } else if (x == 0x80000001) { // x = -MINFP = 1...99 * 10^emin res = 0x80000000; // -0 } else { // -MAXFP <= x <= -MINFP - 1 ulp OR MINFP <= x <= MAXFP - 1 ulp // can add/subtract 1 ulp to the significand // Note: we could check here if x >= 10^7 to speed up the case q1 = 7 // q1 = nr. of decimal digits in x (1 <= q1 <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q1 = bid_nr_digits[x_nr_bits - 1].digits; if (q1 == 0) { q1 = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q1++; } // if q1 < P7 then pad the significand with zeros if (q1 < P7) { if (x_exp > (BID_UINT32)(P7 - q1)) { ind = P7 - q1; // 1 <= ind <= P7 - 1 // pad with P7 - q1 zeros, until exponent = emin // C1 = C1 * 10^ind C1 = C1 * bid_ten2k64[ind]; x_exp = x_exp - ind; } else { // pad with zeros until the exponent reaches emin ind = x_exp; C1 = C1 * bid_ten2k64[ind]; x_exp = EXP_MIN32; } } if (!x_sign) { // x > 0 // add 1 ulp (add 1 to the significand) C1++; if (C1 == 0x989680) { // if C1 = 10^7 C1 = 0x0f4240; // C1 = 10^6 x_exp++; } // Ok, because MAXFP = 9999999 * 10^emax was caught already } else { // x < 0 // subtract 1 ulp (subtract 1 from the significand) C1--; if (C1 == 0x0f423f && x_exp != 0) { // if C1 = 10^6 - 1 C1 = 0x98967f; // C1 = 10^7 - 1 x_exp--; } } // assemble the result // if significand has 24 bits if (C1 & MASK_BINARY_OR2_32) { res = x_sign | (x_exp << 21) | MASK_STEERING_BITS32 | (C1 & MASK_BINARY_SIG2_32); } else { // significand fits in 23 bits res = x_sign | (x_exp << 23) | C1; } } // end -MAXFP <= x <= -MINFP - 1 ulp OR MINFP <= x <= MAXFP - 1 ulp } // end x is not special and is not zero BID_RETURN (res); } /***************************************************************************** * BID32 nextdown ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_nextdown (BID_UINT32 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else DFP_WRAPFN_DFP(32, bid32_nextdown, 32) BID_UINT32 bid32_nextdown (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 res; BID_UINT32 x_sign; BID_UINT32 x_exp; BID_UI32FLOAT tmp1; int x_nr_bits; int q1, ind; BID_UINT32 C1; // C1 represents x_signif (BID_UINT32) // check for NaNs and infinities if ((x & MASK_NAN32) == MASK_NAN32) { // check for NaN if ((x & 0x000fffff) > 999999) x = x & 0xfe000000; // clear G6-G10 and the payload bits else x = x & 0xfe0fffff; // clear G6-G10 if ((x & MASK_SNAN32) == MASK_SNAN32) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffff; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF32) == MASK_INF32) { // check for Infinity if (x & 0x80000000) { // x is -inf res = 0xf8000000; } else { // x is +inf res = 0x77f8967f; // +MAXFP = +9999999 * 10^emax } BID_RETURN (res); } // unpack the argument x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:7] if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x80000001; // -MINFP = -1 * 10^emin } else { // x is not special and is not zero if (x == 0xf7f8967f) { // x = -MAXFP = -9999999 * 10^emax res = 0xf8000000; // -inf } else if (x == 0x00000001) { // x = +MINFP = 1 * 10^emin res = 0x00000000; // +0 } else { // -MAXFP + 1ulp <= x <= -MINFP OR MINFP + 1 ulp <= x <= MAXFP // can add/subtract 1 ulp to the significand // Note: we could check here if x >= 10^7 to speed up the case q1 = 7 // q1 = nr. of decimal digits in x (1 <= q1 <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q1 = bid_nr_digits[x_nr_bits - 1].digits; if (q1 == 0) { q1 = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q1++; } // if q1 < P7 then pad the significand with zeros if (q1 < P7) { if (x_exp > (BID_UINT32)(P7 - q1)) { ind = P7 - q1; // 1 <= ind <= P7 - 1 // pad with P7 - q1 zeros, until exponent = emin // C1 = C1 * 10^ind C1 = C1 * bid_ten2k64[ind]; x_exp = x_exp - ind; } else { // pad with zeros until the exponent reaches emin ind = x_exp; C1 = C1 * bid_ten2k64[ind]; x_exp = EXP_MIN32; } } if (x_sign) { // x < 0 // add 1 ulp (add 1 to the significand) C1++; if (C1 == 0x989680) { // if C1 = 10^7 C1 = 0x0f4240; // C1 = 10^6 x_exp++; } // Ok, because -MAXFP = -9999999 * 10^emax was caught already } else { // x > 0 // subtract 1 ulp (subtract 1 from the significand) C1--; if (C1 == 0x0f423f && x_exp != 0) { // if C1 = 10^6 - 1 C1 = 0x98967f; // C1 = 10^7 - 1 x_exp--; } } // assemble the result // if significand has 24 bits if (C1 & MASK_BINARY_OR2_32) { res = x_sign | (x_exp << 21) | MASK_STEERING_BITS32 | (C1 & MASK_BINARY_SIG2_32); } else { // significand fits in 23 bits res = x_sign | (x_exp << 23) | C1; } } // end -MAXFP <= x <= -MINFP - 1 ulp OR MINFP <= x <= MAXFP - 1 ulp } // end x is not special and is not zero BID_RETURN (res); } /***************************************************************************** * BID32 nextafter ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT32, bid32_nextafter, BID_UINT32, x, BID_UINT32, y) BID_UINT32 res; BID_UINT32 tmp1, tmp2; BID_FPSC tmp_fpsf = 0; // dummy fpsf for calls to comparison functions int res1, res2; // check for NaNs or infinities if (((x & MASK_SPECIAL32) == MASK_SPECIAL32) || ((y & MASK_SPECIAL32) == MASK_SPECIAL32)) { // x is NaN or infinity or y is NaN or infinity if ((x & MASK_NAN32) == MASK_NAN32) { // x is NAN if ((x & 0x000fffff) > 999999) x = x & 0xfe000000; // clear G6-G10 and the payload bits else x = x & 0xfe0fffff; // clear G6-G10 if ((x & MASK_SNAN32) == MASK_SNAN32) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res = x & 0xfdffffff; } else { // x is QNaN if ((y & MASK_SNAN32) == MASK_SNAN32) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } // return x res = x; } BID_RETURN (res); } else if ((y & MASK_NAN32) == MASK_NAN32) { // y is NAN if ((y & 0x000fffff) > 999999) y = y & 0xfe000000; // clear G6-G10 and the payload bits else y = y & 0xfe0fffff; // clear G6-G10 if ((y & MASK_SNAN32) == MASK_SNAN32) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (y) res = y & 0xfdffffff; } else { // y is QNaN // return y res = y; } BID_RETURN (res); } else { // at least one is infinity if ((x & MASK_ANY_INF32) == MASK_INF32) { // x = inf x = x & (MASK_SIGN32 | MASK_INF32); } if ((y & MASK_ANY_INF32) == MASK_INF32) { // y = inf y = y & (MASK_SIGN32 | MASK_INF32); } } } // neither x nor y is NaN // if not infinity, check for non-canonical values x (treated as zero) if ((x & MASK_ANY_INF32) != MASK_INF32) { // x != inf // unpack x if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:7] if (((x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999) { // non-canonical x = (x & MASK_SIGN32) | ((x & MASK_BINARY_EXPONENT2_32) << 2); } } else { // if ((x & MASK_STEERING_BITS32) != MASK_STEERING_BITS32) x is unchanged ; // canonical } } // no need to check for non-canonical y // neither x nor y is NaN tmp_fpsf = *pfpsf; // save fpsf #if DECIMAL_CALL_BY_REFERENCE bid32_quiet_equal (&res1, &x, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid32_quiet_greater (&res2, &x, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res1 = bid32_quiet_equal (x, y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res2 = bid32_quiet_greater (x, y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif *pfpsf = tmp_fpsf; // restore fpsf if (res1) { // x = y // return x with the sign of y res = (y & 0x80000000) | (x & 0x7fffffff); } else if (res2) { // x > y #if DECIMAL_CALL_BY_REFERENCE bid32_nextdown (&res, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid32_nextdown (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif } else { // x < y #if DECIMAL_CALL_BY_REFERENCE bid32_nextup (&res, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid32_nextup (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif } // if the operand x is finite but the result is infinite, signal // overflow and inexact if (((x & MASK_INF32) != MASK_INF32) && ((res & MASK_INF32) == MASK_INF32)) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; } // if the result is in (-10^emin, 10^emin), and is different from the // operand x, signal underflow and inexact tmp1 = 0x0f4240; // +1000000 * 10^emin tmp2 = res & 0x7fffffff; tmp_fpsf = *pfpsf; // save fpsf #if DECIMAL_CALL_BY_REFERENCE bid32_quiet_greater (&res1, &tmp1, &tmp2 _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid32_quiet_not_equal (&res2, &x, &res _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res1 = bid32_quiet_greater (tmp1, tmp2 _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res2 = bid32_quiet_not_equal (x, res _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif *pfpsf = tmp_fpsf; // restore fpsf if (res1 && res2) { // if (bid32_quiet_greater (tmp1, tmp2, &tmp_fpsf) && // bid32_quiet_not_equal (x, res, &tmp_fpsf)) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the underflow flag *pfpsf |= BID_UNDERFLOW_EXCEPTION; } BID_RETURN (res); } LIBRARY/src/bid128_quantumd.c0000644€­ Q01134020000000556215113665770014721 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" #include "bid_trans.h" /***************************************************************************** * BID64_quantumd ****************************************************************************/ /* Exceptions signaled: none The quantumdN functions compute the quantum of a finite argument. If x is infinite, the result is +Inf. If x is NaN, the result is NaN. */ BID128_FUNCTION_ARG1_NORND (bid128_quantum, x) BID_UINT128 res; int int_exp; // If x is infinite, the result is +Inf. If x is NaN, the result is NaN if ((x.w[1] & MASK_ANY_INF) == MASK_INF) { res.w[1] = 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } else if ((x.w[1] & NAN_MASK64) == NAN_MASK64) { res.w[1] = x.w[1] & QUIET_MASK64; BID_RETURN (res); } // Extract exponent if ((x.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) { int_exp = (int)((x.w[1] >> 47) & 0x3fff) - 6176; } else { int_exp = ((int)(x.w[1] >> 49) & 0x3fff) - 6176; } // Form 10^new_exponent*1 res.w[1] = (((long long int) int_exp) << 49 ) + 0x3040000000000000ull; res.w[0] = 0x0000000000000001ull; BID_RETURN (res); } LIBRARY/src/bid64_tgamma.c0000644€­ Q01134020000001301715113665770014242 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" #define BID64_NAN 0x7c00000000000000ull #define BID64_SHIFTER 0x31c0000000010000ull #define BID64_INF 0x7800000000000000ull BID_F80_CONST_DEF( c_pi, 4000921fb54442d1, 8469898cc51701b8); // pi BID_F80_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F80_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 BID_F80_CONST_DEF( c_8000, 400bf40000000000, 0000000000000000); // 8000 BID_F80_CONST_DEF( c_1e2000, 59f2cf6c9c9bc5f8, 84a294e53edc955f); // 1e2000 BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_tgamma, BID_UINT64, x) // Declare local variables BID_UINT64 res, x_int, x_frac; BID_F80_TYPE xd, fd, yd, rt; int cmp_res, e; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // If the input is 0, return signed infinity BIDECIMAL_CALL1_NORND_NOSTAT(bid64_isZero,cmp_res,x); if (cmp_res) { res = BID64_INF ^ (x & SIGNMASK64); *pfpsf |= BID_ZERO_DIVIDE_EXCEPTION; BID_RETURN (res); } // For infinite inputs, return NaN or infinity BIDECIMAL_CALL1_NORND_NOSTAT(bid64_isInf,cmp_res,x); if (cmp_res) { if ((x & SIGNMASK64) != 0) { res = BID64_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif } else res = BID64_INF; BID_RETURN (res); } // Convert to binary BIDECIMAL_CALL1(bid64_to_binary80,xd,x); // If x >= 1/2 then we're very safe doing the operation naively. // However, separate out very large inputs for appropriate // clamping in directed rounding modes. if (__bid_f80_ge( xd, c_half.v ) ) { if (__bid_f80_ge( xd, c_8000.v ) ) { BID_F80_ASSIGN( yd, c_1e2000); } else { __bid_f80_tgamma( yd, xd ); } BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } // Otherwise, even with the extra precision, we may need to worry // about the singularities at nonnegative integers. So we use the reflection // formula // // Gamma(x) = pi / (sin (pi * x) * Gamma(1 - x)) // // Form the integer and fractional parts of x, and convert fractional // part to double. BIDECIMAL_CALL1_NORND(bid64_round_integral_nearest_even, x_int, x); BIDECIMAL_CALL2(bid64_sub,x_frac,x,x_int); // If the fractional part is 0, return a NaN BIDECIMAL_CALL1_NORND_NOSTAT(bid64_isZero,cmp_res,x_frac); if (cmp_res) { res = BID64_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } // Otherwise do the main computation in double. BIDECIMAL_CALL1(bid64_to_binary80,fd,x_frac); __bid_f80_sub( rt, c_one.v, xd ); __bid_f80_mul( yd, c_pi.v, fd ); __bid_f80_sin( yd, yd ); __bid_f80_tgamma( rt, rt ); __bid_f80_mul( yd, yd, rt ); __bid_f80_div( yd, c_pi.v, yd ); // If the integer part is odd, negate the result since // sin(pi * x) = -sin(pi * xf) // // To avoid relying on the fact that bid64_round_integral_nearest_even // gives a canonical integer, add a shifter where it might be needed. // If the exponent is -ve then |x| < 10^6, so adding to 2 * 10^6 will // give something with exactly the complement of digits. e = (((x_int & (3ull<<61)) == (3ull<<61)) ? (x_int >> 51) : (x_int >> 53)) & ((1ull<<10)-1); if (e <= 398) { if (e < 398) { BID_UINT64 localshifter = BID64_SHIFTER; BIDECIMAL_CALL2 (bid64_add, x_int, localshifter, x_int); } if (x_int & 1) __bid_f80_neg( yd, yd); } // Convert back and return BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } LIBRARY/src/strtod64.c0000644€­ Q01134020000000431515113665770013476 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_strtod.h" DFP_WRAPFN_TYPE1_TYPE2(64, bid_strtod64, const char* RESTRICT , char** RESTRICT) BID_UINT64 bid_strtod64(const char* RESTRICT ps_in, char** RESTRICT endptr) { char * ps0; BID_UINT64 DR; #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS unsigned fpsc=0, *pfpsf=&fpsc; #endif #if !DECIMAL_GLOBAL_ROUNDING unsigned rnd_mode=0; #endif ps0 = strtod_conversion(ps_in, endptr); if(!ps0) return 0x31c0000000000000ull; // 0.0 BIDECIMAL_CALL1_RESARG (bid64_from_string, DR, ps0); free(ps0); return DR; } LIBRARY/src/bid_fetestexcept.c0000644€­ Q01134020000000357015113665770015330 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" int bid_fetestexcept( int excepts _EXC_FLAGS_PARAM ) { /* Take only supported exceptions */ excepts &= DEC_FE_ALL_EXCEPT; return get_bid_sw() & excepts; } LIBRARY/src/bid32_quantexpd.c0000644€­ Q01134020000000454315113665770015004 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_quantexpd ****************************************************************************/ /* Exceptions signaled: invalid */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND(int, bid32_quantexp, BID_UINT32, x) int res; // quantum if (((x & MASK_INF32) == MASK_INF32) || ((x & MASK_NAN32) == MASK_NAN32)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; res = 0x80000000; BID_RETURN (res); } if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) res = ((x >> 21) & 0xff) - 101; else res = ((x >> 23) & 0xff) - 101; BID_RETURN (res); } LIBRARY/src/bid64_to_bid128.c0000644€­ Q01134020000002033215113665770014465 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #define BID_128RES #include "bid_internal.h" /* * Takes a BID64 as input and converts it to a BID128 and returns it. */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_NOFLAGS (BID_UINT128, bid64_to_bid128, BID_UINT64, x) BID_UINT128 new_coeff, res; BID_UINT64 sign_x; int exponent_x; BID_UINT64 coefficient_x; if (!unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x)) { if (((x) << 1) >= 0xf000000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if (((x) & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[0] = (coefficient_x & 0x0003ffffffffffffull); __mul_64x64_to_128 (res, res.w[0], bid_power10_table_128[18].w[0]); res.w[1] |= ((coefficient_x) & 0xfc00000000000000ull); BID_RETURN_NOFLAGS (res); } } new_coeff.w[0] = coefficient_x; new_coeff.w[1] = 0; bid_get_BID128_very_fast (&res, sign_x, exponent_x + DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS, new_coeff); BID_RETURN_NOFLAGS (res); } // convert_bid64_to_bid128 /* * Takes a BID128 as input and converts it to a BID64 and returns it. */ BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid128_to_bid64, BID_UINT128, x) BID_UINT128 CX, T128, TP128, Qh, Ql, Qh1, Stemp, Tmp, Tmp1, CX1; BID_UINT64 sign_x, carry, cy, res; BID_SINT64 D; int_float f64, fx; int exponent_x, extra_digits, amount, bin_expon_cx; unsigned rmode, status, uf_check = 0; BID_OPT_SAVE_BINARY_FLAGS() BID_SWAP128 (x); // unpack arguments, check for NaN or Infinity or 0 if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { if ((x.w[1] << 1) >= 0xf000000000000000ull) { Tmp.w[1] = (CX.w[1] & 0x00003fffffffffffull); Tmp.w[0] = CX.w[0]; TP128 = bid_reciprocals10_128[18]; __mul_128x128_full (Qh, Ql, Tmp, TP128); amount = bid_recip_scale[18]; __shr_128 (Tmp, Qh, amount); res = (CX.w[1] & 0xfc00000000000000ull) | Tmp.w[0]; #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN_VAL (res); } exponent_x = exponent_x - DECIMAL_EXPONENT_BIAS_128 + DECIMAL_EXPONENT_BIAS; if (exponent_x < 0) { res = sign_x; BID_RETURN_VAL (res); } if (exponent_x > DECIMAL_MAX_EXPON_64) exponent_x = DECIMAL_MAX_EXPON_64; res = sign_x | (((BID_UINT64) exponent_x) << 53); BID_RETURN_VAL (res); } if (CX.w[1] || (CX.w[0] >= 10000000000000000ull)) { // find number of digits in coefficient // 2^64 f64.i = 0x5f800000; // fx ~ CX fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; bin_expon_cx = ((fx.i >> 23) & 0xff) - 0x7f; extra_digits = bid_estimate_decimal_digits[bin_expon_cx] - 16; // scale = 38-estimate_decimal_digits[bin_expon_cx]; D = CX.w[1] - bid_power10_index_binexp_128[bin_expon_cx].w[1]; if (D > 0 || (!D && CX.w[0] >= bid_power10_index_binexp_128[bin_expon_cx].w[0])) extra_digits++; exponent_x += extra_digits; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_x && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif if (exponent_x < DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS) { uf_check = 1; if (-extra_digits + exponent_x - DECIMAL_EXPONENT_BIAS_128 + DECIMAL_EXPONENT_BIAS + 35 >= 0) { if (exponent_x == DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS - 1) { T128 = bid_round_const_table_128[rmode][extra_digits]; __add_carry_out (CX1.w[0], carry, T128.w[0], CX.w[0]); CX1.w[1] = CX.w[1] + T128.w[1] + carry; #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (__unsigned_compare_ge_128 (CX1, bid_power10_table_128[extra_digits + 16])) uf_check = 0; #endif } extra_digits = extra_digits + DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS - exponent_x; exponent_x = DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS; //uf_check = 2; } else rmode = BID_ROUNDING_TO_ZERO; } T128 = bid_round_const_table_128[rmode][extra_digits]; __add_carry_out (CX.w[0], carry, T128.w[0], CX.w[0]); CX.w[1] = CX.w[1] + T128.w[1] + carry; TP128 = bid_reciprocals10_128[extra_digits]; __mul_128x128_full (Qh, Ql, CX, TP128); amount = bid_recip_scale[extra_digits]; if (amount >= 64) { CX.w[0] = Qh.w[1] >> (amount - 64); CX.w[1] = 0; } else { __shr_128 (CX, Qh, amount); } #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (!(rmode)) #endif if (CX.w[0] & 1) { // check whether fractional part of initial_P/10^ed1 is exactly .5 // get remainder __shl_128_long (Qh1, Qh, (128 - amount)); if (!Qh1.w[1] && !Qh1.w[0] && (Ql.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Ql.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Ql.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) { CX.w[0]--; } } #endif { status = BID_INEXACT_EXCEPTION; // get remainder __shl_128_long (Qh1, Qh, (128 - amount)); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (Qh1.w[1] == 0x8000000000000000ull && (!Qh1.w[0]) && (Ql.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Ql.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Ql.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if ((!Qh1.w[1]) && (!Qh1.w[0]) && (Ql.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Ql.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Ql.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], cy, Ql.w[0], bid_reciprocals10_128[extra_digits].w[0]); __add_carry_in_out (Stemp.w[1], carry, Ql.w[1], bid_reciprocals10_128[extra_digits].w[1], cy); __shr_128_long (Qh, Qh1, (128 - amount)); Tmp.w[0] = 1; Tmp.w[1] = 0; __shl_128_long (Tmp1, Tmp, amount); Qh.w[0] += carry; if (Qh.w[0] < carry) Qh.w[1]++; if (__unsigned_compare_ge_128 (Qh, Tmp1)) status = BID_EXACT_STATUS; } if (status != BID_EXACT_STATUS) { if (uf_check) status |= BID_UNDERFLOW_EXCEPTION; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, status); #endif } } } res = get_BID64 (sign_x, exponent_x - DECIMAL_EXPONENT_BIAS_128 + DECIMAL_EXPONENT_BIAS, CX.w[0], rnd_mode, pfpsf); BID_RETURN_VAL (res); } LIBRARY/src/bid32_nearbyintd.c0000644€­ Q01134020000000424415113665770015130 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_nearbyintd ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_nearbyint, BID_UINT32, x) BID_UINT64 x64, res64; BID_UINT32 res; BIDECIMAL_CALL1_NORND (bid32_to_bid64, x64, x); BIDECIMAL_CALL1 (bid64_nearbyint, res64, x64); BIDECIMAL_CALL1 (bid64_to_bid32, res, res64); BID_RETURN (res); } LIBRARY/src/bid_trans.h0000644€­ Q01134020000004476315113665770013772 0ustar aakkasmkl// bid_trans.h // ============================================================================ /* Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // ============================================================================= // // Abstract: // --------- // // This file contains the macro definitions to allow the bid transcendental // functions to be build in one of four ways depending on how the 80 and 128 // bit floating point types are supported. The f80 type can be supported // as either a native compiler f80 type, a native compiler F128 bit type or // emulated. The f128 type can be supported as either an native compiler f128 // type or emulated. The support method is determined by the values of the // preprocessor symbols USE_COMPILER_F80_TYPE and USE_COMPILER_F128_TYPE as // follows: // // +-------------+------------+-----------+------------+ // | f80 | f128 | *F80_TYPE | *F128_TYPE | // +-------------+------------+-----------+------------+ // | native f80 | native 128 | 1 | 1 | // | native f80 | emulated | 1 | 0 | // | native f128 | native 128 | 0 | 1 | // | emulated | emulated | 0 | 0 | // +-------------+------------+------------------------+ // // Edit History: // ------------- // // 1-0001 Initial version. RNH 31-Aug-2010 // // ============================================================================= #include "bid_internal.h" // ============================================================================= // Get the default setting for the F80 and F128 support // ============================================================================= #if !defined USE_COMPILER_F128_TYPE # define USE_COMPILER_F128_TYPE 0 #elif USE_COMPILER_F128_TYPE != 0 # undef USE_COMPILER_F128_TYPE # define USE_COMPILER_F128_TYPE 1 #endif #if !defined USE_COMPILER_F80_TYPE # define USE_COMPILER_F80_TYPE 0 #elif USE_COMPILER_F80_TYPE != 0 # undef USE_COMPILER_F80_TYPE # define USE_COMPILER_F80_TYPE 1 #endif // ============================================================================= // Based on the evaluation method, define the basic data types // ============================================================================= #if !USE_COMPILER_F128_TYPE # define BID_F128_TYPE BID_UINT128 #else # if (defined __INTEL_COMPILER) || (defined __INTEL_LLVM_COMPILER) # define BID_F128_TYPE _Quad # else # error "128-bit floating point type for this compiler is unknown" # endif #endif #if !USE_COMPILER_F80_TYPE # define BID_F80_TYPE BID_F128_TYPE #else # if (defined __INTEL_COMPILER) || (defined __INTEL_LLVM_COMPILER) # define BID_F80_TYPE long double # else # error "80-bit floating point type for this compiler is unknown" # endif #endif // ============================================================================= // Support macros for token pasting. These should be moved to a more general // locaiton // ============================================================================= #define GLUE(a,b) a ## b #define PASTE(a,b) GLUE(a,b) #define PASTE2(a,b) PASTE(a,b) #define PASTE3(a,b,c) PASTE2(a,PASTE2(b,c)) // ============================================================================= // Data structures and macros used to initial f80 or f128 constants. The // constants are specified via their f128 hex encoding and the macros will // convert the f128 format to the f80 format as required. Also, these macros // take care of endian issues // ============================================================================= typedef union { BID_UINT64 w[2]; BID_F128_TYPE v; } BID_F128_CONST; typedef union BID_ALIGN (16) { BID_UINT64 w[2]; BID_F80_TYPE v; } BID_F80_CONST; #define SUF64 ull #define HEX64(a) PASTE3(0x,a,SUF64) #if BID_BIG_ENDIAN # define ENDIAN128(hi,lo) hi , lo # define HI 0 # define LO 1 #define BID128_LH_INIT(lo,hi) { hi, lo } #else # define ENDIAN128(hi,lo) lo , hi # define HI 1 # define LO 0 #define BID128_LH_INIT(lo,hi) { lo, hi } #endif #define F128_TO_F80_HI(hi,lo) _F128_TO_F80_HI(HEX64(hi),HEX64(lo)) #define F128_TO_F80_LO(hi,lo) _F128_TO_F80_LO(HEX64(hi),HEX64(lo)) #define _F128_TO_F80_HI(hi,lo) (hi >> 48) #define _F128_TO_F80_LO(hi,lo) (((hi << 15) | HEX64(8000000000000000) | (lo >> 49)) + ((lo >> 48) & 1)) #define BID_INIT_F128(hi,lo) { ENDIAN128( HEX64(hi), HEX64(lo)) } #if USE_COMPILER_F80_TYPE # define BID_INIT_F80(hi,lo) { ENDIAN128( F128_TO_F80_HI(hi,lo), F128_TO_F80_LO(hi,lo)) } #else # define BID_INIT_F80(hi,lo) BID_INIT_F128(hi, lo) #endif #define BID_F128_CONST_DEF(name,hi,lo) static const BID_F128_CONST name = \ BID_INIT_F128(hi,lo) #define BID_F80_CONST_DEF(name,hi,lo) static const BID_F80_CONST name = \ BID_INIT_F80(hi,lo) // ============================================================================= // The following macros are used to switch the bid function invocation macros // between compiler supported f128 arithment and function calls and emulated // arithmetic // ============================================================================= #if USE_COMPILER_F128_TYPE # define __BID_F128_NAME(name) __ ## name ## q # define __BID_F128_CMP(a,b,op,mask) ((a) op (b)) # define __BID_F128_F_I_OP(r,a,op,name) ((r) = (op (a))) # define __BID_F128_F_F_OP(r,a,op,name) ((r) = (op (a))) # define __BID_F128_F_FF_OP(r,a,b,op,name) ((r) = ((a) op (b))) # define __BID_F128_F_F_FUNC(r,a,name) ((r) = __BID_F128_NAME(name)(a)) # define __BID_F128_F_FF_FUNC(r,a,b,name) ((r) = __BID_F128_NAME(name)(a,b)) # define __BID_F128_F_F_DECL(name) extern BID_F128_TYPE __BID_F128_NAME(name) ( BID_F128_TYPE ) # define __BID_F128_F_FF_DECL(name) extern BID_F128_TYPE __BID_F128_NAME(name) ( BID_F128_TYPE, BID_F128_TYPE ) # define BID_F128_ASSIGN(name,con) name = con.v #else # define __b(x) ((BID_F128_TYPE *) &(x)) # define __BID_F128_NAME(name) bid_f128_ ## name # define __BID_F128_CMP(a,b,op,mask) (bid_f128_cmp(__b(a), __b(b), (mask))) # define __BID_F128_F_I_OP(r,a,op,name) __BID_F128_NAME(name)( __b(r), a) # define __BID_F128_F_F_OP(r,a,op,name) __BID_F128_NAME(name)( __b(r), __b(a)) # define __BID_F128_F_FF_OP(r,a,b,op,name) __BID_F128_NAME(name)( __b(r), __b(a), __b(b)) # define __BID_F128_F_F_FUNC(r,a,name) __BID_F128_NAME(name)( __b(r), __b(a)) # define __BID_F128_F_FF_FUNC(r,a,b,name) __BID_F128_NAME(name)( __b(r), __b(a), __b(b)) # define __BID_F128_F_F_DECL(name) extern void __BID_F128_NAME(name)( BID_F128_TYPE*, BID_F128_TYPE*) # define __BID_F128_F_FF_DECL(name) extern void __BID_F128_NAME(name)( BID_F128_TYPE*, BID_F128_TYPE*, BID_F128_TYPE*) # define BID_F128_ASSIGN(name,con) name.w[HI] = con.w[HI]; name.w[LO] = con.w[LO] #endif // ============================================================================= // The F128 function macros // ============================================================================= #define __bid_f128_lt(a, b) __BID_F128_CMP( a, b, <, 1) #define __bid_f128_eq(a, b) __BID_F128_CMP( a, b, ==, 2) #define __bid_f128_le(a, b) __BID_F128_CMP( a, b, <=, 3) #define __bid_f128_gt(a, b) __BID_F128_CMP( a, b, >, 4) #define __bid_f128_ne(a, b) __BID_F128_CMP( a, b, !=, 5) #define __bid_f128_ge(a, b) __BID_F128_CMP( a, b, >=, 6) #define __bid_f128_neg(res, a) __BID_F128_F_F_OP(res,a,-, neg) #define __bid_f128_itof(res, a) __BID_F128_F_I_OP(res,a,(_Quad),itof) #define __bid_f128_add(res, a, b) __BID_F128_F_FF_OP(res,a,b,+,add) #define __bid_f128_div(res, a, b) __BID_F128_F_FF_OP(res,a,b,/,div) #define __bid_f128_sub(res, a, b) __BID_F128_F_FF_OP(res,a,b,-,sub) #define __bid_f128_mul(res, a, b) __BID_F128_F_FF_OP(res,a,b,*,mul) #define __bid_f128_acos(res, a) __BID_F128_F_F_FUNC(res, a, acos) #define __bid_f128_acosh(res, a) __BID_F128_F_F_FUNC(res, a, acosh) #define __bid_f128_asin(res, a) __BID_F128_F_F_FUNC(res, a, asin) #define __bid_f128_asinh(res, a) __BID_F128_F_F_FUNC(res, a, asinh) #define __bid_f128_atan(res, a) __BID_F128_F_F_FUNC(res, a, atan) #define __bid_f128_cbrt(res, a) __BID_F128_F_F_FUNC(res, a, cbrt) #define __bid_f128_cos(res, a) __BID_F128_F_F_FUNC(res, a, cos) #define __bid_f128_cosh(res, a) __BID_F128_F_F_FUNC(res, a, cosh) #define __bid_f128_erf(res, a) __BID_F128_F_F_FUNC(res, a, erf) #define __bid_f128_erfc(res, a) __BID_F128_F_F_FUNC(res, a, erfc) #define __bid_f128_exp(res, a) __BID_F128_F_F_FUNC(res, a, exp) #define __bid_f128_exp10(res, a) __BID_F128_F_F_FUNC(res, a, exp10) #define __bid_f128_exp2(res, a) __BID_F128_F_F_FUNC(res, a, exp2) #define __bid_f128_expm1(res, a) __BID_F128_F_F_FUNC(res, a, expm1) #define __bid_f128_fabs(res, a) __BID_F128_F_F_FUNC(res, a, fabs) #define __bid_f128_lgamma(res, a) __BID_F128_F_F_FUNC(res, a, lgamma) #define __bid_f128_log(res, a) __BID_F128_F_F_FUNC(res, a, log) #define __bid_f128_log1p(res, a) __BID_F128_F_F_FUNC(res, a, log1p) #define __bid_f128_log2(res, a) __BID_F128_F_F_FUNC(res, a, log2) #define __bid_f128_sin(res, a) __BID_F128_F_F_FUNC(res, a, sin) #define __bid_f128_sinh(res, a) __BID_F128_F_F_FUNC(res, a, sinh) #define __bid_f128_sqrt(res, a) __BID_F128_F_F_FUNC(res, a, sqrt) #define __bid_f128_tan(res, a) __BID_F128_F_F_FUNC(res, a, tan) #define __bid_f128_tanh(res, a) __BID_F128_F_F_FUNC(res, a, tanh) #define __bid_f128_hypot(res, a, b) __BID_F128_F_FF_FUNC(res, a, b, hypot) #define __bid_f128_nextafter(res, a, b) __BID_F128_F_FF_FUNC(res, a, b, nextafter) // ============================================================================= // The f128 function declarations // ============================================================================= #if !USE_COMPILER_F128_TYPE extern int bid_f128_cmp( BID_UINT128*, BID_UINT128*, int ); extern void bid_f128_itof( BID_UINT128*, int ); __BID_F128_F_FF_DECL(add); __BID_F128_F_FF_DECL(div); __BID_F128_F_FF_DECL(sub); __BID_F128_F_FF_DECL(mul); __BID_F128_F_F_DECL(neg); #endif __BID_F128_F_F_DECL(acos); __BID_F128_F_F_DECL(acosh); __BID_F128_F_F_DECL(asin); __BID_F128_F_F_DECL(asinh); __BID_F128_F_F_DECL(atan); __BID_F128_F_F_DECL(cbrt); __BID_F128_F_F_DECL(cos); __BID_F128_F_F_DECL(cosh); __BID_F128_F_F_DECL(erf); __BID_F128_F_F_DECL(erfc); __BID_F128_F_F_DECL(exp); __BID_F128_F_F_DECL(exp10); __BID_F128_F_F_DECL(exp2); __BID_F128_F_F_DECL(expm1); __BID_F128_F_F_DECL(fabs); __BID_F128_F_F_DECL(lgamma); __BID_F128_F_F_DECL(log); __BID_F128_F_F_DECL(log1p); __BID_F128_F_F_DECL(log10); __BID_F128_F_F_DECL(log2); __BID_F128_F_F_DECL(sin); __BID_F128_F_F_DECL(sinh); __BID_F128_F_F_DECL(sqrt); __BID_F128_F_F_DECL(tan); __BID_F128_F_F_DECL(tanh); __BID_F128_F_F_DECL(tgamma); __BID_F128_F_FF_DECL(atan2); __BID_F128_F_FF_DECL(hypot); __BID_F128_F_FF_DECL(nextafter); // ============================================================================= // The following macros are used to switch the bid function invocation macros // between compiler supported f80 arithment and function calls and emulated // arithmetic // ============================================================================= #if USE_COMPILER_F80_TYPE # define __BID_F80_NAME(name) name ## l # define __BID_F80_CMP(a,b,op,mask) ((a) op (b)) # define __BID_F80_F_I_OP(r,a,op,name) ((r) = (op (a))) # define __BID_F80_F_F_OP(r,a,op,name) ((r) = (op (a))) # define __BID_F80_F_FF_OP(r,a,b,op,name) ((r) = ((a) op (b))) # define __BID_F80_F_F_FUNC(r,a,name) ((r) = __BID_F80_NAME(name)(a)) # define __BID_F80_F_FF_FUNC(r,a,b,name) ((r) = __BID_F80_NAME(name)(a,b)) # define __BID_F80_F_F_DECL(name) extern BID_F80_TYPE __BID_F80_NAME(name) ( BID_F80_TYPE ) # define __BID_F80_F_FF_DECL(name) extern BID_F80_TYPE __BID_F80_NAME(name) ( BID_F80_TYPE, BID_F80_TYPE ) # define BID_F80_ASSIGN(name,con) name = con.v # define BID_F80_PACK_TRIG(t,sf,ef,p) t.w[HI] = (((BID_UINT64)(sf)) << 15) | (ef); t.w[LO] = (p) #else # define __BID_F80_NAME(name) __BID_F128_NAME(name) # define __BID_F80_CMP(a,b,op,mask) __BID_F128_CMP(a,b,op,mask) # define __BID_F80_F_I_OP(r,a,op,name) __BID_F128_F_I_OP(r,a,op,name) # define __BID_F80_F_F_OP(r,a,op,name) __BID_F128_F_F_OP(r,a,op,name) # define __BID_F80_F_FF_OP(r,a,b,op,name) __BID_F128_F_FF_OP(r,a,b,op,name) # define __BID_F80_F_F_FUNC(r,a,name) __BID_F128_F_F_FUNC(r,a,name) # define __BID_F80_F_FF_FUNC(r,a,b,name) __BID_F128_F_FF_FUNC(r,a,b,name) # define __BID_F80_F_F_DECL(name) __BID_F128_F_F_DECL(name) # define __BID_F80_F_FF_DECL(name) __BID_F128_F_FF_DECL(name) # define BID_F80_ASSIGN(name,con) BID_F128_ASSIGN(name,con) # define BID_F80_PACK_TRIG(t,sf,ef,p) t.w[HI] = (((((BID_UINT64)(sf)) << 15) | (ef)) << 48) | (((p) << 1) >> 16); \ t.w[LO] = ((p) << 49) # undef binary80_to_bid64 # undef bid64_to_binary80 # define binary80_to_bid64 binary128_to_bid64 # define bid64_to_binary80 bid64_to_binary128 #endif // ============================================================================= // The f80 function definitions // ============================================================================= #define __bid_f80_lt(a, b) __BID_F80_CMP( a, b, <, 1) #define __bid_f80_eq(a, b) __BID_F80_CMP( a, b, ==, 2) #define __bid_f80_le(a, b) __BID_F80_CMP( a, b, <=, 3) #define __bid_f80_gt(a, b) __BID_F80_CMP( a, b, >, 4) #define __bid_f80_ne(a, b) __BID_F80_CMP( a, b, !=, 5) #define __bid_f80_ge(a, b) __BID_F80_CMP( a, b, >=, 6) #define __bid_f80_neg(res, a) __BID_F80_F_F_OP(res,a,-, neg) #define __bid_f80_itof(res, a) __BID_F80_F_I_OP(res,a,(_Quad),itof) #define __bid_f80_add(res, a, b) __BID_F80_F_FF_OP(res,a,b,+,add) #define __bid_f80_div(res, a, b) __BID_F80_F_FF_OP(res,a,b,/,div) #define __bid_f80_sub(res, a, b) __BID_F80_F_FF_OP(res,a,b,-,sub) #define __bid_f80_mul(res, a, b) __BID_F80_F_FF_OP(res,a,b,*,mul) #define __bid_f80_acos(res, a) __BID_F80_F_F_FUNC(res, a, acos) #define __bid_f80_acosh(res, a) __BID_F80_F_F_FUNC(res, a, acosh) #define __bid_f80_asin(res, a) __BID_F80_F_F_FUNC(res, a, asin) #define __bid_f80_asinh(res, a) __BID_F80_F_F_FUNC(res, a, asinh) #define __bid_f80_atan(res, a) __BID_F80_F_F_FUNC(res, a, atan) #define __bid_f80_cbrt(res, a) __BID_F80_F_F_FUNC(res, a, cbrt) #define __bid_f80_cos(res, a) __BID_F80_F_F_FUNC(res, a, cos) #define __bid_f80_cosh(res, a) __BID_F80_F_F_FUNC(res, a, cosh) #define __bid_f80_erf(res, a) __BID_F80_F_F_FUNC(res, a, erf) #define __bid_f80_erfc(res, a) __BID_F80_F_F_FUNC(res, a, erfc) #define __bid_f80_exp(res, a) __BID_F80_F_F_FUNC(res, a, exp) #define __bid_f80_exp10(res, a) __BID_F80_F_F_FUNC(res, a, exp10) #define __bid_f80_exp2(res, a) __BID_F80_F_F_FUNC(res, a, exp2) #define __bid_f80_expm1(res, a) __BID_F80_F_F_FUNC(res, a, expm1) #define __bid_f80_fabs(res, a) __BID_F80_F_F_FUNC(res, a, fabs) #define __bid_f80_lgamma(res, a) __BID_F80_F_F_FUNC(res, a, lgamma) #define __bid_f80_log(res, a) __BID_F80_F_F_FUNC(res, a, log) #define __bid_f80_log10(res, a) __BID_F80_F_F_FUNC(res, a, log10) #define __bid_f80_log1p(res, a) __BID_F80_F_F_FUNC(res, a, log1p) #define __bid_f80_log2(res, a) __BID_F80_F_F_FUNC(res, a, log2) #define __bid_f80_sin(res, a) __BID_F80_F_F_FUNC(res, a, sin) #define __bid_f80_sinh(res, a) __BID_F80_F_F_FUNC(res, a, sinh) #define __bid_f80_sqrt(res, a) __BID_F80_F_F_FUNC(res, a, sqrt) #define __bid_f80_tan(res, a) __BID_F80_F_F_FUNC(res, a, tan) #define __bid_f80_tanh(res, a) __BID_F80_F_F_FUNC(res, a, tanh) #define __bid_f80_tgamma(res, a) __BID_F80_F_F_FUNC(res, a, tgamma) #define __bid_f80_atan2(res, a, b) __BID_F80_F_FF_FUNC(res, a, b, atan2) #define __bid_f80_hypot(res, a, b) __BID_F80_F_FF_FUNC(res, a, b, hypot) // ============================================================================= // The f80 function declarations // ============================================================================= #if USE_COMPILER_F80_TYPE __BID_F80_F_F_DECL(acos); __BID_F80_F_F_DECL(acosh); __BID_F80_F_F_DECL(asin); __BID_F80_F_F_DECL(asinh); __BID_F80_F_F_DECL(atan); __BID_F80_F_F_DECL(cbrt); __BID_F80_F_F_DECL(cos); __BID_F80_F_F_DECL(cosh); __BID_F80_F_F_DECL(erf); __BID_F80_F_F_DECL(erfc); __BID_F80_F_F_DECL(exp); __BID_F80_F_F_DECL(exp10); __BID_F80_F_F_DECL(exp2); __BID_F80_F_F_DECL(expm1); __BID_F80_F_F_DECL(fabs); __BID_F80_F_F_DECL(lgamma); __BID_F80_F_F_DECL(log); __BID_F80_F_F_DECL(log10); __BID_F80_F_F_DECL(log1p); __BID_F80_F_F_DECL(log2); __BID_F80_F_F_DECL(sin); __BID_F80_F_F_DECL(sinh); __BID_F80_F_F_DECL(sqrt); __BID_F80_F_F_DECL(tan); __BID_F80_F_F_DECL(tanh); __BID_F80_F_F_DECL(tgamma); __BID_F80_F_FF_DECL(atan2); __BID_F80_F_FF_DECL(hypot); #endif LIBRARY/src/bid64_div.c0000644€­ Q01134020000015240415113665770013562 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID64 divide ***************************************************************************** * * Algorithm description: * * if(coefficient_x=B, 1 otherwise * Q = 0 * else * get Q=(int)(coefficient_x/coefficient_y) * (based on double precision divide) * check for exact divide case * Let R = coefficient_x - Q*coefficient_y * Let m=16-number_digits(Q) * CA=R*10^m, Q=Q*10^m * B = coefficient_y * endif * if (CA<2^64) * Q += CA/B (64-bit unsigned divide) * else * get final Q using double precision divide, followed by 3 integer * iterations * if exact result, eliminate trailing zeros * check for underflow * round coefficient to nearest * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #define BID_128RES #include "bid_internal.h" #include "bid_div_macros.h" #include BID_EXTERN_C const BID_UINT32 bid_convert_table[5][128][2]; BID_EXTERN_C const BID_SINT8 bid_factors[][2]; BID_EXTERN_C const BID_UINT8 bid_packed_10000_zeros[]; BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2(BID_UINT64, bid64_div, BID_UINT64, x, BID_UINT64, y) BID_UINT128 CA, CT; BID_UINT64 sign_x, sign_y, coefficient_x, coefficient_y, A, B, QX, PD; BID_UINT64 A2, Q, Q2, B2, B4, B5, R, T, DU, res; BID_UINT64 valid_x, valid_y; BID_SINT64 D; int_double t_scale, tempq, temp_b; int_float tempx, tempy; double da, db, dq, da_h, da_l; int exponent_x, exponent_y, bin_expon_cx; int diff_expon, ed1, ed2, bin_index; int rmode, amount; int nzeros, i, j, k, d5; BID_UINT32 QX32, tdigit[3], digit, digit_h, digit_low; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID64 (&sign_y, &exponent_y, &coefficient_y, y); // unpack arguments, check for NaN or Infinity if (!valid_x) { // x is Inf. or NaN #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (coefficient_x & QUIET_MASK64); } // x is Infinity? if ((x & INFINITY_MASK64) == INFINITY_MASK64) { // check if y is Inf or NaN if ((y & INFINITY_MASK64) == INFINITY_MASK64) { // y==Inf, return NaN if ((y & NAN_MASK64) == INFINITY_MASK64) { // Inf/Inf #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (NAN_MASK64); } } else { // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); // otherwise return +/-Inf BID_RETURN_VAL (((x ^ y) & 0x8000000000000000ull) | INFINITY_MASK64); } } // x==0 if (((y & INFINITY_MASK64) != INFINITY_MASK64) && !(coefficient_y)) { // y==0 , return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (NAN_MASK64); } if (((y & INFINITY_MASK64) != INFINITY_MASK64)) { if ((y & SPECIAL_ENCODING_MASK64) == SPECIAL_ENCODING_MASK64) exponent_y = ((BID_UINT32) (y >> 51)) & 0x3ff; else exponent_y = ((BID_UINT32) (y >> 53)) & 0x3ff; sign_y = y & 0x8000000000000000ull; exponent_x = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS; if (exponent_x > DECIMAL_MAX_EXPON_64) exponent_x = DECIMAL_MAX_EXPON_64; else if (exponent_x < 0) exponent_x = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL ((sign_x ^ sign_y) | (((BID_UINT64) exponent_x) << 53)); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (coefficient_y & QUIET_MASK64); } // y is Infinity? if ((y & INFINITY_MASK64) == INFINITY_MASK64) { // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); // return +/-0 BID_RETURN_VAL (((x ^ y) & 0x8000000000000000ull)); } // y is 0 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL ((sign_x ^ sign_y) | INFINITY_MASK64); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif diff_expon = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS; if (coefficient_x < coefficient_y) { // get number of decimal digits for c_x, c_y //--- get number of bits in the coefficients of x and y --- tempx.d = (float) coefficient_x; tempy.d = (float) coefficient_y; bin_index = (tempy.i - tempx.i) >> 23; A = coefficient_x * bid_power10_index_binexp[bin_index]; B = coefficient_y; temp_b.d = (double) B; // compare A, B DU = (A - B) >> 63; ed1 = 15 + (int) DU; ed2 = bid_estimate_decimal_digits[bin_index] + ed1; T = bid_power10_table_128[ed1].w[0]; __mul_64x64_to_128 (CA, A, T); Q = 0; diff_expon = diff_expon - ed2; // adjust double precision db, to ensure that later A/B - (int)(da/db) > -1 if (coefficient_y < 0x0020000000000000ull) { temp_b.i += 1; db = temp_b.d; } else db = (double) (B + 2 + (B & 1)); } else { // get c_x/c_y // set last bit before conversion to DP A2 = coefficient_x | 1; da = (double) A2; db = (double) coefficient_y; tempq.d = da / db; Q = (BID_UINT64) tempq.d; R = coefficient_x - coefficient_y * Q; // will use to get number of dec. digits of Q bin_expon_cx = (tempq.i >> 52) - 0x3ff; // R<0 ? D = ((BID_SINT64) R) >> 63; Q += D; R += (coefficient_y & D); // exact result ? if (((BID_SINT64) R) <= 0) { // can have R==-1 for coeff_y==1 res = get_BID64 (sign_x ^ sign_y, diff_expon, (Q + R), rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // get decimal digits of Q DU = bid_power10_index_binexp[bin_expon_cx] - Q - 1; DU >>= 63; ed2 = 16 - bid_estimate_decimal_digits[bin_expon_cx] - (int) DU; T = bid_power10_table_128[ed2].w[0]; __mul_64x64_to_128 (CA, R, T); B = coefficient_y; Q *= bid_power10_table_128[ed2].w[0]; diff_expon -= ed2; } if (!CA.w[1]) { Q2 = CA.w[0] / B; B2 = B + B; B4 = B2 + B2; R = CA.w[0] - Q2 * B; Q += Q2; } else { // 2^64 t_scale.i = 0x43f0000000000000ull; // convert CA to DP da_h = CA.w[1]; da_l = CA.w[0]; da = da_h * t_scale.d + da_l; // quotient dq = da / db; Q2 = (BID_UINT64) dq; // get w[0] remainder R = CA.w[0] - Q2 * B; // R<0 ? D = ((BID_SINT64) R) >> 63; Q2 += D; R += (B & D); // now R<6*B // quick divide // 4*B B2 = B + B; B4 = B2 + B2; R = R - B4; // R<0 ? D = ((BID_SINT64) R) >> 63; // restore R if negative R += (B4 & D); Q2 += ((~D) & 4); R = R - B2; // R<0 ? D = ((BID_SINT64) R) >> 63; // restore R if negative R += (B2 & D); Q2 += ((~D) & 2); R = R - B; // R<0 ? D = ((BID_SINT64) R) >> 63; // restore R if negative R += (B & D); Q2 += ((~D) & 1); Q += Q2; } #ifdef BID_SET_STATUS_FLAGS if (R) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #ifndef LEAVE_TRAILING_ZEROS else #endif #else #ifndef LEAVE_TRAILING_ZEROS if (!R) #endif #endif #ifndef LEAVE_TRAILING_ZEROS { // eliminate trailing zeros // check whether CX, CY are short if ((coefficient_x <= 1024) && (coefficient_y <= 1024)) { i = (int) coefficient_y - 1; j = (int) coefficient_x - 1; // difference in powers of 2 bid_factors for Y and X nzeros = ed2 - bid_factors[i][0] + bid_factors[j][0]; // difference in powers of 5 bid_factors d5 = ed2 - bid_factors[i][1] + bid_factors[j][1]; if (d5 < nzeros) nzeros = d5; __mul_64x64_to_128 (CT, Q, bid_reciprocals10_64[nzeros]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[nzeros]; Q = CT.w[1] >> amount; diff_expon += nzeros; } else { tdigit[0] = Q & 0x3ffffff; tdigit[1] = 0; QX = Q >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { __mul_64x64_to_128 (CT, Q, bid_reciprocals10_64[nzeros]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[nzeros]; Q = CT.w[1] >> amount; } diff_expon += nzeros; } if (diff_expon >= 0) { res = fast_get_BID64_check_OF (sign_x ^ sign_y, diff_expon, Q, rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } #endif if (diff_expon >= 0) { #ifdef IEEE_ROUND_NEAREST // round to nearest code // R*10 R += R; R = (R << 2) + R; B5 = B4 + B; // compare 10*R to 5*B R = B5 - R; // correction for (R==0 && (Q&1)) R -= (Q & 1); // R<0 ? D = ((BID_UINT64) R) >> 63; Q += D; #else #ifdef IEEE_ROUND_NEAREST_TIES_AWAY // round to nearest code // R*10 R += R; R = (R << 2) + R; B5 = B4 + B; // compare 10*R to 5*B R = B5 - R; // correction for (R==0 && (Q&1)) R -= (Q & 1); // R<0 ? D = ((BID_UINT64) R) >> 63; Q += D; #else rmode = rnd_mode; if (sign_x ^ sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; switch (rmode) { case 0: // round to nearest code case BID_ROUNDING_TIES_AWAY: // R*10 R += R; R = (R << 2) + R; B5 = B4 + B; // compare 10*R to 5*B R = B5 - R; // correction for (R==0 && (Q&1)) R -= ((Q | (rmode >> 2)) & 1); // R<0 ? D = ((BID_UINT64) R) >> 63; Q += D; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: break; default: // rounding up Q++; break; } #endif #endif res = fast_get_BID64_check_OF (sign_x ^ sign_y, diff_expon, Q, rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } else { // UF occurs #ifdef BID_SET_STATUS_FLAGS if ((diff_expon + 16 < 0)) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #endif rmode = rnd_mode; res = get_BID64_UF (sign_x ^ sign_y, diff_expon, Q, R, rmode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } BID_TYPE0_FUNCTION_ARGTYPE1_ARG128 (BID_UINT64, bid64dq_div, BID_UINT64, x, y) BID_UINT256 CA4 = { {0x0ull, 0x0ull, 0x0ull, 0x0ull} }, CA4r; BID_UINT128 CX, CY, T128, CQ, CR, CA, TP128, Qh, Ql, Tmp; BID_UINT64 sign_x, sign_y, carry64, D, Q_low, QX, valid_y, PD, res; int_float fx, fy, f64; BID_UINT32 QX32, tdigit[3], digit, digit_h, digit_low; int exponent_x, exponent_y, bin_index, bin_expon, diff_expon, ed2, digits_q, amount; int nzeros, i, j, k, d5, done = 0; unsigned rmode; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } valid_y = unpack_BID128_value (&sign_y, &exponent_y, &CY, y); // unpack arguments, check for NaN or Infinity CX.w[1] = 0; if (!unpack_BID64 (&sign_x, &exponent_x, &CX.w[0], (x))) { #ifdef BID_SET_STATUS_FLAGS if (((y.w[1] & SNAN_MASK64) == SNAN_MASK64) || // y is sNaN ((x & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if (((x) & 0x7c00000000000000ull) == 0x7c00000000000000ull) { res = CX.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res & QUIET_MASK64); } // x is Infinity? if (((x) & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is Inf. if (((y.w[1] & 0x7c00000000000000ull) == 0x7800000000000000ull)) // return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c00000000000000ull; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } if (((y.w[1] & 0x7c00000000000000ull) != 0x7c00000000000000ull)) { // otherwise return +/-Inf res = (((x) ^ y.w[1]) & 0x8000000000000000ull) | 0x7800000000000000ull; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } // x is 0 if ((y.w[1] & INFINITY_MASK64) != INFINITY_MASK64) { if ((!CY.w[0]) && !(CY.w[1] & 0x0001ffffffffffffull)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=y=0, return NaN res = 0x7c00000000000000ull; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // return 0 res = ((x) ^ y.w[1]) & 0x8000000000000000ull; exponent_x = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS_128; if (exponent_x > DECIMAL_MAX_EXPON_64) exponent_x = DECIMAL_MAX_EXPON_64; else if (exponent_x < 0) exponent_x = 0; res |= (((BID_UINT64) exponent_x) << 53); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } exponent_x += (DECIMAL_EXPONENT_BIAS_128 - DECIMAL_EXPONENT_BIAS); if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif Tmp.w[1] = (CY.w[1] & 0x00003fffffffffffull); Tmp.w[0] = CY.w[0]; TP128 = bid_reciprocals10_128[18]; __mul_128x128_full (Qh, Ql, Tmp, TP128); amount = bid_recip_scale[18]; __shr_128 (Tmp, Qh, amount); res = (CY.w[1] & 0xfc00000000000000ull) | Tmp.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // y is Infinity? if ((y.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // return +/-0 res = sign_x ^ sign_y; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // y is 0, return +/-Inf res = (((x) ^ y.w[1]) & 0x8000000000000000ull) | 0x7800000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif diff_expon = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS; if (__unsigned_compare_gt_128 (CY, CX)) { // CX < CY // 2^64 f64.i = 0x5f800000; // fx ~ CX, fy ~ CY fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; fy.d = (float) CY.w[1] * f64.d + (float) CY.w[0]; // expon_cy - expon_cx bin_index = (fy.i - fx.i) >> 23; // Code redundant as agreed Jul 25 2008. To be removed after verification // if (CX.w[1]) { // T = bid_power10_index_binexp_128[bin_index].w[0]; // __mul_64x128_short (CA, T, CX); // } else { T128 = bid_power10_index_binexp_128[bin_index]; __mul_64x128_short (CA, CX.w[0], T128); // } ed2 = 15; if (__unsigned_compare_gt_128 (CY, CA)) ed2++; T128 = bid_power10_table_128[ed2]; __mul_128x128_to_256 (CA4, CA, T128); ed2 += bid_estimate_decimal_digits[bin_index]; CQ.w[0] = CQ.w[1] = 0; diff_expon = diff_expon - ed2; } else { // get CQ = CX/CY bid___div_128_by_128 (&CQ, &CR, CX, CY); // get number of decimal digits in CQ // 2^64 f64.i = 0x5f800000; fx.d = (float) CQ.w[1] * f64.d + (float) CQ.w[0]; // binary expon. of CQ bin_expon = (fx.i - 0x3f800000) >> 23; digits_q = bid_estimate_decimal_digits[bin_expon]; TP128.w[0] = bid_power10_index_binexp_128[bin_expon].w[0]; TP128.w[1] = bid_power10_index_binexp_128[bin_expon].w[1]; if (__unsigned_compare_ge_128 (CQ, TP128)) digits_q++; // Code redundant as agreed Jul 25 2008. To be removed after verification // if (digits_q <= 16) { if (!CR.w[1] && !CR.w[0]) { res = get_BID64 (sign_x ^ sign_y, diff_expon, CQ.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } ed2 = 16 - digits_q; T128.w[0] = bid_power10_table_128[ed2].w[0]; __mul_64x128_to_192 (CA4, (T128.w[0]), CR); diff_expon = diff_expon - ed2; CQ.w[0] *= T128.w[0]; } if (!done) { bid___div_256_by_128 (&CQ, &CA4, CY); } #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #ifndef LEAVE_TRAILING_ZEROS else #endif #else #ifndef LEAVE_TRAILING_ZEROS if (!CA4.w[0] && !CA4.w[1]) #endif #endif #ifndef LEAVE_TRAILING_ZEROS // check whether result is exact { // check whether CX, CY are short if (!CX.w[1] && !CY.w[1] && (CX.w[0] <= 1024) && (CY.w[0] <= 1024)) { i = (int) CY.w[0] - 1; j = (int) CX.w[0] - 1; // difference in powers of 2 bid_factors for Y and X nzeros = ed2 - bid_factors[i][0] + bid_factors[j][0]; // difference in powers of 5 bid_factors d5 = ed2 - bid_factors[i][1] + bid_factors[j][1]; if (d5 < nzeros) nzeros = d5; // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128_long (CQ, Qh, amount); diff_expon += nzeros; } else { // decompose Q as Qh*10^17 + Ql Q_low = CQ.w[0]; { tdigit[0] = Q_low & 0x3ffffff; tdigit[1] = 0; QX = Q_low >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128 (CQ, Qh, amount); } diff_expon += nzeros; } } if(diff_expon>=0){ res = fast_get_BID64_check_OF (sign_x ^ sign_y, diff_expon, CQ.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } #endif if (diff_expon >= 0) { #ifdef IEEE_ROUND_NEAREST // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; #else #ifdef IEEE_ROUND_NEAREST_TIES_AWAY // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else rmode = rnd_mode; if (sign_x ^ sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; switch (rmode) { case BID_ROUNDING_TO_NEAREST: // round to nearest code // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_TIES_AWAY: // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: break; default: // rounding up CQ.w[0]++; if (!CQ.w[0]) CQ.w[1]++; break; } #endif #endif res = fast_get_BID64_check_OF (sign_x ^ sign_y, diff_expon, CQ.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } else { // UF occurs #ifdef BID_SET_STATUS_FLAGS if ((diff_expon + 16 < 0)) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #endif rmode = rnd_mode; res = get_BID64_UF (sign_x ^ sign_y, diff_expon, CQ.w[0], CA4.w[1] | CA4.w[0], rmode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } //#define LEAVE_TRAILING_ZEROS BID_TYPE0_FUNCTION_ARG128_ARGTYPE2 (BID_UINT64, bid64qd_div, x, BID_UINT64, y) BID_UINT256 CA4 = { {0x0ull, 0x0ull, 0x0ull, 0x0ull} }, CA4r, P256, QB256; BID_UINT128 CX, CY, T128, CQ, CQ2, CR, CA, TP128, Qh, Ql, Tmp; BID_UINT64 sign_x, sign_y, carry64, D, Q_low, QX, PD, res, valid_y; int_float fx, fy, f64; BID_UINT32 QX32, tdigit[3], digit, digit_h, digit_low; int exponent_x, exponent_y, bin_index, bin_expon, diff_expon, ed2, digits_q, amount; int nzeros, i, j, k, d5, done = 0; unsigned rmode; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } valid_y = unpack_BID64 (&sign_y, &exponent_y, &CY.w[0], (y)); // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN if ((x.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull || // sNaN (y & 0x7e00000000000000ull) == 0x7e00000000000000ull) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif Tmp.w[1] = (CX.w[1] & 0x00003fffffffffffull); Tmp.w[0] = CX.w[0]; TP128 = bid_reciprocals10_128[18]; __mul_128x128_full (Qh, Ql, Tmp, TP128); amount = bid_recip_scale[18]; __shr_128 (Tmp, Qh, amount); res = (CX.w[1] & 0xfc00000000000000ull) | Tmp.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // x is Infinity? if ((x.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is Inf. if (((y & 0x7c00000000000000ull) == 0x7800000000000000ull)) // return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c00000000000000ull; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } if (((y & 0x7c00000000000000ull) != 0x7c00000000000000ull)) { // otherwise return +/-Inf res = ((x.w[1] ^ (y)) & 0x8000000000000000ull) | 0x7800000000000000ull; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } // x is 0 if (((y & INFINITY_MASK64) != INFINITY_MASK64)) { if (!CY.w[0]) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=y=0, return NaN res = 0x7c00000000000000ull; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } exponent_x = exponent_x - exponent_y - DECIMAL_EXPONENT_BIAS_128 + (DECIMAL_EXPONENT_BIAS << 1); if (exponent_x > DECIMAL_MAX_EXPON_64) exponent_x = DECIMAL_MAX_EXPON_64; else if (exponent_x < 0) exponent_x = 0; res = (sign_x ^ sign_y) | (((BID_UINT64) exponent_x) << 53); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } CY.w[1] = 0; if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (CY.w[0] & QUIET_MASK64); } // y is Infinity? if (((y) & 0x7800000000000000ull) == 0x7800000000000000ull) { // return +/-0 res = sign_x ^ sign_y; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // y is 0, return +/-Inf res = ((x.w[1] ^ (y)) & 0x8000000000000000ull) | 0x7800000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif diff_expon = exponent_x - exponent_y - DECIMAL_EXPONENT_BIAS_128 + (DECIMAL_EXPONENT_BIAS << 1); if (__unsigned_compare_gt_128 (CY, CX)) { // CX < CY // 2^64 f64.i = 0x5f800000; // fx ~ CX, fy ~ CY fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; fy.d = (float) CY.w[1] * f64.d + (float) CY.w[0]; // expon_cy - expon_cx bin_index = (fy.i - fx.i) >> 23; // Code redundant as agreed Jul 25 2008. To be removed after verification // if (CX.w[1]) { // T = bid_power10_index_binexp_128[bin_index].w[0]; // __mul_64x128_short (CA, T, CX); // } else { T128 = bid_power10_index_binexp_128[bin_index]; __mul_64x128_short (CA, CX.w[0], T128); // } ed2 = 15; if (__unsigned_compare_gt_128 (CY, CA)) ed2++; T128 = bid_power10_table_128[ed2]; __mul_128x128_to_256 (CA4, CA, T128); ed2 += bid_estimate_decimal_digits[bin_index]; CQ.w[0] = CQ.w[1] = 0; diff_expon = diff_expon - ed2; } else { // get CQ = CX/CY bid___div_128_by_128 (&CQ, &CR, CX, CY); //printf("CQ=%016I64x,%016I64x, CR=%016I64x %016I64x, p=%I64x\n",CQ.w[1], CQ.w[0],CR.w[1],CR.w[0],power10_table_128[0].w[0]); //printf("CX=%016I64x,%016I64x, CY=%016I64x %016I64x, p=%I64x\n",CX.w[1], CX.w[0],CY.w[1],CY.w[0],power10_table_128[0].w[0]); // get number of decimal digits in CQ // 2^64 f64.i = 0x5f800000; fx.d = (float) CQ.w[1] * f64.d + (float) CQ.w[0]; // binary expon. of CQ bin_expon = (fx.i - 0x3f800000) >> 23; digits_q = bid_estimate_decimal_digits[bin_expon]; TP128.w[0] = bid_power10_index_binexp_128[bin_expon].w[0]; TP128.w[1] = bid_power10_index_binexp_128[bin_expon].w[1]; if (__unsigned_compare_ge_128 (CQ, TP128)) digits_q++; if (digits_q <= 16) { if (!CR.w[1] && !CR.w[0]) { res = get_BID64 (sign_x ^ sign_y, diff_expon, CQ.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } ed2 = 16 - digits_q; T128.w[0] = bid_power10_table_128[ed2].w[0]; __mul_64x128_to_192 (CA4, (T128.w[0]), CR); diff_expon = diff_expon - ed2; CQ.w[0] *= T128.w[0]; } else { ed2 = digits_q - 16; diff_expon += ed2; T128 = bid_reciprocals10_128[ed2]; __mul_128x128_to_256 (P256, CQ, T128); amount = bid_recip_scale[ed2]; CQ.w[0] = (P256.w[2] >> amount) | (P256.w[3] << (64 - amount)); CQ.w[1] = 0; //printf("CQ=%016I64x,%016I64x, CR=%016I64x %016I64x, p=%I64x\n",CQ.w[1], CQ.w[0],CR.w[1],CR.w[0],power10_table_128[0].w[0]); __mul_64x64_to_128 (CQ2, CQ.w[0], (bid_power10_table_128[ed2].w[0])); __mul_64x64_to_128 (QB256, CQ2.w[0], CY.w[0]); QB256.w[1] += CQ2.w[0] * CY.w[1] + CQ2.w[1] * CY.w[0]; //printf("CQ2=%016I64x,%016I64x, CB=%016I64x %016I64x, p=%I64x\n",CQ2.w[1], CQ2.w[0],QB256.w[1],QB256.w[0],power10_table_128[0].w[0]); CA4.w[1] = CX.w[1] - QB256.w[1]; CA4.w[0] = CX.w[0] - QB256.w[0]; if (CX.w[0] < QB256.w[0]) CA4.w[1]--; //printf("CA4_0=%016I64x,%016I64x, CY=%016I64x %016I64x, p=%I64x\n",CA4.w[1], CA4.w[0],CY.w[1],CY.w[0],power10_table_128[ed2].w[0]); /*if (CR.w[0] || CR.w[1]) CA4.w[0] |= 1;*/ done = 1; //printf("CA4=%016I64x,%016I64x, CY=%016I64x %016I64x, p=%I64x\n",CA4.w[1], CA4.w[0],CY.w[1],CY.w[0],power10_table_128[ed2].w[0]); if(CA4.w[1]|CA4.w[0]) { __mul_64x128_low(CY, (bid_power10_table_128[ed2].w[0]),CY); } } } if (!done) { bid___div_256_by_128 (&CQ, &CA4, CY); } #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #ifndef LEAVE_TRAILING_ZEROS else #endif #else #ifndef LEAVE_TRAILING_ZEROS if (!CA4.w[0] && !CA4.w[1]) #endif #endif #ifndef LEAVE_TRAILING_ZEROS // check whether result is exact { if(!done) { // check whether CX, CY are short if (!CX.w[1] && !CY.w[1] && (CX.w[0] <= 1024) && (CY.w[0] <= 1024)) { i = (int) CY.w[0] - 1; j = (int) CX.w[0] - 1; // difference in powers of 2 bid_factors for Y and X nzeros = ed2 - bid_factors[i][0] + bid_factors[j][0]; // difference in powers of 5 bid_factors d5 = ed2 - bid_factors[i][1] + bid_factors[j][1]; if (d5 < nzeros) nzeros = d5; // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); //__mul_128x128_to_256(P256, CQ, bid_reciprocals10_128[nzeros]);Qh.w[1]=P256.w[3];Qh.w[0]=P256.w[2]; // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128_long (CQ, Qh, amount); diff_expon += nzeros; } else { // decompose Q as Qh*10^17 + Ql //T128 = bid_reciprocals10_128[17]; Q_low = CQ.w[0]; { tdigit[0] = Q_low & 0x3ffffff; tdigit[1] = 0; QX = Q_low >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128 (CQ, Qh, amount); } diff_expon += nzeros; } } } if(diff_expon>=0){ res = fast_get_BID64_check_OF (sign_x ^ sign_y, diff_expon, CQ.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } #endif if (diff_expon >= 0) { #ifdef IEEE_ROUND_NEAREST // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; //if(CQ.w[0]> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else rmode = rnd_mode; if (sign_x ^ sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; switch (rmode) { case BID_ROUNDING_TO_NEAREST: // round to nearest code // rounding // 2*CA4 - CY //printf("CA4=%016I64x,%016I64x\n",CA4.w[1], CA4.w[0]); CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); //printf("CQ=%016I64x, carry=%I64x\n",CQ.w[0], carry64); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_TIES_AWAY: // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: break; default: // rounding up CQ.w[0]++; if (!CQ.w[0]) CQ.w[1]++; break; } #endif #endif res = fast_get_BID64_check_OF (sign_x ^ sign_y, diff_expon, CQ.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } else { // UF occurs #ifdef BID_SET_STATUS_FLAGS if ((diff_expon + 16 < 0)) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #endif rmode = rnd_mode; res = get_BID64_UF (sign_x ^ sign_y, diff_expon, CQ.w[0], CA4.w[1] | CA4.w[0], rmode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } //#define LEAVE_TRAILING_ZEROS BID_EXTERN_C const BID_UINT32 bid_convert_table[5][128][2]; BID_EXTERN_C const BID_SINT8 bid_factors[][2]; BID_EXTERN_C const BID_UINT8 bid_packed_10000_zeros[]; //BID_UINT64* bid64_div128x128(BID_UINT64 res, BID_UINT128 *px, BID_UINT128 *py, unsigned rnd_mode, unsigned *pfpsf) BID_TYPE0_FUNCTION_ARG128_ARG128 (BID_UINT64, bid64qq_div, x, y) BID_UINT256 CA4 = { {0x0ull, 0x0ull, 0x0ull, 0x0ull} }, CA4r, P256, QB256; BID_UINT128 CX, CY, T128, CQ, CQ2, CR, CA, TP128, Qh, Ql, Tmp; BID_UINT64 sign_x, sign_y, T, carry64, D, Q_low, QX, valid_y, PD, res; int_float fx, fy, f64; BID_UINT32 QX32, tdigit[3], digit, digit_h, digit_low; int exponent_x, exponent_y, bin_index, bin_expon, diff_expon, ed2, digits_q, amount; int nzeros, i, j, k, d5, done = 0; unsigned rmode; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } valid_y = unpack_BID128_value (&sign_y, &exponent_y, &CY, y); // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN if ((x.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull || // sNaN (y.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif Tmp.w[1] = (CX.w[1] & 0x00003fffffffffffull); Tmp.w[0] = CX.w[0]; TP128 = bid_reciprocals10_128[18]; __mul_128x128_full (Qh, Ql, Tmp, TP128); amount = bid_recip_scale[18]; __shr_128 (Tmp, Qh, amount); res = (CX.w[1] & 0xfc00000000000000ull) | Tmp.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // x is Infinity? if ((x.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is Inf. if (((y.w[1] & 0x7c00000000000000ull) == 0x7800000000000000ull)) // return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c00000000000000ull; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } if (((y.w[1] & 0x7c00000000000000ull) != 0x7c00000000000000ull)) { // otherwise return +/-Inf res = ((x.w[1] ^ y. w[1]) & 0x8000000000000000ull) | 0x7800000000000000ull; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } // x is 0 if (((y.w[1] & 0x7800000000000000ull) != 0x7800000000000000ull)) { if ((!CY.w[0]) && !(CY.w[1] & 0x0001ffffffffffffull)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=y=0, return NaN res = 0x7c00000000000000ull; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // return 0 res = (x.w[1] ^ y.w[1]) & 0x8000000000000000ull; exponent_x = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS; if (exponent_x > DECIMAL_MAX_EXPON_64) exponent_x = DECIMAL_MAX_EXPON_64; else if (exponent_x < 0) exponent_x = 0; res |= (((BID_UINT64) exponent_x) << 53); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif Tmp.w[1] = (CY.w[1] & 0x00003fffffffffffull); Tmp.w[0] = CY.w[0]; TP128 = bid_reciprocals10_128[18]; __mul_128x128_full (Qh, Ql, Tmp, TP128); amount = bid_recip_scale[18]; __shr_128 (Tmp, Qh, amount); res = (CY.w[1] & 0xfc00000000000000ull) | Tmp.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // y is Infinity? if ((y.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // return +/-0 res = sign_x ^ sign_y; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // y is 0, return +/-Inf res = ((x.w[1] ^ y.w[1]) & 0x8000000000000000ull) | 0x7800000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif diff_expon = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS; if (__unsigned_compare_gt_128 (CY, CX)) { // CX < CY // 2^64 f64.i = 0x5f800000; // fx ~ CX, fy ~ CY fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; fy.d = (float) CY.w[1] * f64.d + (float) CY.w[0]; // expon_cy - expon_cx bin_index = (fy.i - fx.i) >> 23; if (CX.w[1]) { T = bid_power10_index_binexp_128[bin_index].w[0]; __mul_64x128_short (CA, T, CX); } else { T128 = bid_power10_index_binexp_128[bin_index]; __mul_64x128_short (CA, CX.w[0], T128); } ed2 = 15; if (__unsigned_compare_gt_128 (CY, CA)) ed2++; T128 = bid_power10_table_128[ed2]; __mul_128x128_to_256 (CA4, CA, T128); ed2 += bid_estimate_decimal_digits[bin_index]; CQ.w[0] = CQ.w[1] = 0; diff_expon = diff_expon - ed2; } else { // get CQ = CX/CY bid___div_128_by_128 (&CQ, &CR, CX, CY); // get number of decimal digits in CQ // 2^64 f64.i = 0x5f800000; fx.d = (float) CQ.w[1] * f64.d + (float) CQ.w[0]; // binary expon. of CQ bin_expon = (fx.i - 0x3f800000) >> 23; digits_q = bid_estimate_decimal_digits[bin_expon]; TP128.w[0] = bid_power10_index_binexp_128[bin_expon].w[0]; TP128.w[1] = bid_power10_index_binexp_128[bin_expon].w[1]; if (__unsigned_compare_ge_128 (CQ, TP128)) digits_q++; if (digits_q <= 16) { if (!CR.w[1] && !CR.w[0]) { res = get_BID64 (sign_x ^ sign_y, diff_expon, CQ.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } ed2 = 16 - digits_q; T128.w[0] = bid_power10_table_128[ed2].w[0]; __mul_64x128_to_192 (CA4, (T128.w[0]), CR); diff_expon = diff_expon - ed2; CQ.w[0] *= T128.w[0]; } else { ed2 = digits_q - 16; diff_expon += ed2; T128 = bid_reciprocals10_128[ed2]; __mul_128x128_to_256 (P256, CQ, T128); amount = bid_recip_scale[ed2]; CQ.w[0] = (P256.w[2] >> amount) | (P256.w[3] << (64 - amount)); CQ.w[1] = 0; __mul_64x64_to_128 (CQ2, CQ.w[0], (bid_power10_table_128[ed2].w[0])); __mul_64x64_to_128 (QB256, CQ2.w[0], CY.w[0]); QB256.w[1] += CQ2.w[0] * CY.w[1] + CQ2.w[1] * CY.w[0]; CA4.w[1] = CX.w[1] - QB256.w[1]; CA4.w[0] = CX.w[0] - QB256.w[0]; if (CX.w[0] < QB256.w[0]) CA4.w[1]--; /*if (CR.w[0] || CR.w[1]) CA4.w[0] |= 1;*/ done = 1; if(CA4.w[1]|CA4.w[0]) { __mul_64x128_low(CY, (bid_power10_table_128[ed2].w[0]),CY); } } } if (!done) { bid___div_256_by_128 (&CQ, &CA4, CY); } #ifdef BID_SET_STATUS_FLAGS if (CA4.w[0] || CA4.w[1]) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #ifndef LEAVE_TRAILING_ZEROS else #endif #else #ifndef LEAVE_TRAILING_ZEROS if (!CA4.w[0] && !CA4.w[1]) #endif #endif #ifndef LEAVE_TRAILING_ZEROS // check whether result is exact { if(!done) { // check whether CX, CY are short if (!CX.w[1] && !CY.w[1] && (CX.w[0] <= 1024) && (CY.w[0] <= 1024)) { i = (int) CY.w[0] - 1; j = (int) CX.w[0] - 1; // difference in powers of 2 bid_factors for Y and X nzeros = ed2 - bid_factors[i][0] + bid_factors[j][0]; // difference in powers of 5 bid_factors d5 = ed2 - bid_factors[i][1] + bid_factors[j][1]; if (d5 < nzeros) nzeros = d5; // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); //__mul_128x128_to_256(P256, CQ, bid_reciprocals10_128[nzeros]);Qh.w[1]=P256.w[3];Qh.w[0]=P256.w[2]; // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128_long (CQ, Qh, amount); diff_expon += nzeros; } else { // decompose Q as Qh*10^17 + Ql //T128 = bid_reciprocals10_128[17]; Q_low = CQ.w[0]; { tdigit[0] = Q_low & 0x3ffffff; tdigit[1] = 0; QX = Q_low >> 26; QX32 = QX; nzeros = 0; for (j = 0; QX32; j++, QX32 >>= 7) { k = (QX32 & 127); tdigit[0] += bid_convert_table[j][k][0]; tdigit[1] += bid_convert_table[j][k][1]; if (tdigit[0] >= 100000000) { tdigit[0] -= 100000000; tdigit[1]++; } } digit = tdigit[0]; if (!digit && !tdigit[1]) nzeros += 16; else { if (!digit) { nzeros += 8; digit = tdigit[1]; } // decompose digit PD = (BID_UINT64) digit *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = digit - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Qh, Ql, CQ, bid_reciprocals10_128[nzeros]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[nzeros]; __shr_128 (CQ, Qh, amount); } diff_expon += nzeros; } } } if(diff_expon>=0){ res = fast_get_BID64_check_OF (sign_x ^ sign_y, diff_expon, CQ.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } #endif if(diff_expon>=0) { #ifdef IEEE_ROUND_NEAREST // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; //if(CQ.w[0]> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; #else rmode = rnd_mode; if (sign_x ^ sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; switch (rmode) { case BID_ROUNDING_TO_NEAREST: // round to nearest code // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 1 : 0; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) & ((CQ.w[0]) | D); CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_TIES_AWAY: // rounding // 2*CA4 - CY CA4r.w[1] = (CA4.w[1] + CA4.w[1]) | (CA4.w[0] >> 63); CA4r.w[0] = CA4.w[0] + CA4.w[0]; __sub_borrow_out (CA4r.w[0], carry64, CA4r.w[0], CY.w[0]); CA4r.w[1] = CA4r.w[1] - CY.w[1] - carry64; D = (CA4r.w[1] | CA4r.w[0]) ? 0 : 1; carry64 = (1 + (((BID_SINT64) CA4r.w[1]) >> 63)) | D; CQ.w[0] += carry64; if (CQ.w[0] < carry64) CQ.w[1]++; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: break; default: // rounding up CQ.w[0]++; if (!CQ.w[0]) CQ.w[1]++; break; } #endif #endif res = fast_get_BID64_check_OF (sign_x ^ sign_y, diff_expon, CQ.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } else { // UF occurs #ifdef BID_SET_STATUS_FLAGS if ((diff_expon + 16 < 0)) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #endif rmode = rnd_mode; res = get_BID64_UF (sign_x ^ sign_y, diff_expon, CQ.w[0], CA4.w[1] | CA4.w[0], rmode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } LIBRARY/src/wcstod32.c0000644€­ Q01134020000000435315113665770013457 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_strtod.h" DFP_WRAPFN_TYPE1_TYPE2(32, bid_wcstod32, const wchar_t* RESTRICT , wchar_t** RESTRICT) BID_UINT32 bid_wcstod32(const wchar_t* RESTRICT ps_in, wchar_t** RESTRICT endptr) { char* ps0_c; BID_UINT32 DR; #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS unsigned fpsc=0, *pfpsf=&fpsc; #endif #if !DECIMAL_GLOBAL_ROUNDING unsigned rnd_mode=0; #endif ps0_c = wcstod_conversion(ps_in, endptr); if(!ps0_c) return 0x32800000; // 0.0 BIDECIMAL_CALL1_RESARG (bid32_from_string, DR, (char*)ps0_c); free(ps0_c); return DR; } LIBRARY/src/bid32_log10.c0000644€­ Q01134020000000545615113665770013721 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double log10(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_log10, BID_UINT32, x) BID_UINT32 res; double xd, rd; int z; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid32_isZero, z, x); if (z) { // -Infinite and Divide by Zero according C99 res = 0xf8000000; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } if (x & MASK_SIGN32) { // QNaN Indefinite res = 0x7c000000; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } BIDECIMAL_CALL1 (bid32_to_binary64, xd, x); rd = log10(xd); BIDECIMAL_CALL1 (binary64_to_bid32, res, rd); BID_RETURN (res); } LIBRARY/src/bid128_ldexp.c0000644€­ Q01134020000000717515113665770014201 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" #define DECIMAL_EXPONENT_BIAS_128 6176 #define MAX_DECIMAL_EXPONENT_128 12287 BID128_FUNCTION_ARG128_CUSTOMARGTYPE2 (bid128_ldexp, x, int, n) BID_UINT128 CX, CX2, CBID_X8, res; BID_SINT64 exp64; BID_UINT64 sign_x; int exponent_x, rmode; // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { // x is Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = CX.w[1] & QUIET_MASK64; res.w[0] = CX.w[0]; if (!CX.w[1]) { exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; if(exp64<0) exp64=0; if(exp64>MAX_DECIMAL_EXPONENT_128) exp64=MAX_DECIMAL_EXPONENT_128; exponent_x = exp64; bid_get_BID128_very_fast (&res, sign_x, exponent_x, CX); } BID_RETURN (res); } exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; exponent_x = exp64; if ((BID_UINT32) exponent_x <= MAX_DECIMAL_EXPONENT_128) { bid_get_BID128_very_fast (&res, sign_x, exponent_x, CX); BID_RETURN (res); } // check for overflow if (exp64 > MAX_DECIMAL_EXPONENT_128) { if (CX.w[1] < 0x314dc6448d93ull) { // try to normalize coefficient do { CBID_X8.w[1] = (CX.w[1] << 3) | (CX.w[0] >> 61); CBID_X8.w[0] = CX.w[0] << 3; CX2.w[1] = (CX.w[1] << 1) | (CX.w[0] >> 63); CX2.w[0] = CX.w[0] << 1; __add_128_128 (CX, CX2, CBID_X8); exponent_x--; exp64--; } while (CX.w[1] < 0x314dc6448d93ull && exp64 > MAX_DECIMAL_EXPONENT_128); } if (exp64 <= MAX_DECIMAL_EXPONENT_128) { bid_get_BID128_very_fast (&res, sign_x, exponent_x, CX); BID_RETURN (res); } else exponent_x = 0x7fffffff; // overflow } // exponent < 0 // the BID pack routine will round the coefficient rmode = rnd_mode; bid_get_BID128 (&res, sign_x, exponent_x, CX, (unsigned int *) &rmode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid64_exp.c0000644€­ Q01134020000000745615113665770013602 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_F80_CONST_DEF( c_8000, 400bf40000000000, 0000000000000000); // 8000 BID_F80_CONST_DEF( c_neg_8000, c00bf40000000000, 0000000000000000); //-8000 BID_F80_CONST_DEF( c_1e2000, 59f2cf6c9c9bc5f8, 84a294e53edc955f); // 1e2000 BID_F80_CONST_DEF( c_1em2000, 260b1ad56d712a5d, 7f02384e5ded39be); // 1e-2000 // TODO need to set up as hex #if __ENABLE_BINARY80__ #define EXPL_OVERFL 1.0e2000l #else #define EXPL_OVERFL 1.0e200 #endif BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_exp, BID_UINT64, x) BID_UINT64 res; BID_F80_TYPE xd, rd; int z; // test if x is NaN if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK64) == SNAN_MASK64) // sNaN ) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; //quiet and make combination 0 (canonize) if ((res & 0x0003ffffffffffffull) > 999999999999999ull) { // payload res &= ~0x0003ffffffffffffull; } BID_RETURN (res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid64_isZero, z, x); if (z) { // 1 according C99 res = 0x31c0000000000001ull; BID_RETURN (res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid64_isInf, z, x); if (z) { // 0 or Inf according C99 if (x & MASK_SIGN) { res = 0x31c0000000000000ull; } else { res = 0x7800000000000000ull; } #ifdef BID_SET_STATUS_FLAGS *pfpsf = 0; #endif BID_RETURN (res); } // Otherwise just do the operation "naively". // We inherit the special cases from the binary function // except for ensuring correct overflow behaviour in // directed rounding modes. BIDECIMAL_CALL1(bid64_to_binary80,xd,x); if (__bid_f80_gt( xd, c_8000.v ) ) { BID_F80_ASSIGN(rd, c_1e2000 ); } else if (__bid_f80_lt( xd, c_neg_8000.v ) ) { BID_F80_ASSIGN(rd, c_1em2000); } else __bid_f80_exp( rd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,rd); BID_RETURN (res); } LIBRARY/src/bid64_atan2.c0000644€­ Q01134020000000573415113665770014010 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE_FUNCTION_ARG2(BID_UINT64, bid64_atan2, x, y) BID_UINT64 sign_x, sign_y, coefficient_x, coefficient_y; BID_UINT64 valid_x, valid_y, res; BID_F80_TYPE xd, yd, zd; int exponent_x, exponent_y; valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID64 (&sign_y, &exponent_y, &coefficient_y, y); if (!valid_x) { // x is Inf. or NaN #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (coefficient_x & QUIET_MASK64); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (coefficient_y & QUIET_MASK64); } } BIDECIMAL_CALL1(bid64_to_binary80,xd,x); BIDECIMAL_CALL1(bid64_to_binary80,yd,y); __bid_f80_atan2(zd, xd, yd); BIDECIMAL_CALL1(binary80_to_bid64,res,zd); BID_RETURN (res); } LIBRARY/src/bid32_to_uint64.c0000644€­ Q01134020000023333215113665770014626 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_to_uint64_rnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint64_rnint (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid32_to_uint64_rnint, 32) BID_UINT64 bid32_to_uint64_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(q-1)00...0 (20 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[20 dec. digits] >= 2^64-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=7 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, (BID_UINT64)C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 7) => 14 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffffb // has 21 digits __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 <= n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; // 0 <= ind <= 6 if ((BID_UINT64)C1 <= bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x0000000000000001ull; // return +1 } else { // if n < 0 res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN (res); } } else { // if (1 <= q + exp <= 20, 1 <= q <= 7, -6 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 6 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint64_xrnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint64_xrnint (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid32_to_uint64_xrnint, 32) BID_UINT64 bid32_to_uint64_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(q-1)00...0 (20 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[20 dec. digits] >= 2^64-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=7 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, (BID_UINT64)C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 7) => 14 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffffb // has 21 digits __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 <= n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; // 0 <= ind <= 6 if ((BID_UINT64)C1 <= bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x0000000000000001ull; // return +1 } else { // if n < 0 res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN (res); } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 20, 1 <= q <= 7, -6 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 6 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint64_floor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint64_floor (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid32_to_uint64_floor, 32) BID_UINT64 bid32_to_uint64_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero if (x_sign) { // if n < 0 the conversion is invalid // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(q-1)00...0 (20 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' // n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(q-1)00...0[20 dec. digits] >= 2^64 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 5*(2^65) // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=7 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, (BID_UINT64)C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 7) => 14 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0xa0000000000000000 // has 21 digits __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 7, -6 <= exp <= 19) // 1 <= x < 2^64 so x can be rounded // to nearest to a 64-bit unsigned signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 6 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint64_xfloor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint64_xfloor (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid32_to_uint64_xfloor, 32) BID_UINT64 bid32_to_uint64_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero if (x_sign) { // if n < 0 the conversion is invalid // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(q-1)00...0 (20 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' // n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(q-1)00...0[20 dec. digits] >= 2^64 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 5*(2^65) // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=7 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, (BID_UINT64)C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 7) => 14 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0xa0000000000000000 // has 21 digits __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 7, -6 <= exp <= 19) // 1 <= x < 2^64 so x can be rounded // to nearest to a 64-bit unsigned signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 6 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint64_ceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint64_ceil (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid32_to_uint64_ceil, 32) BID_UINT64 bid32_to_uint64_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(q-1)00...0 (20 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n > 2^64 - 1 then n is too large // <=> c(0)c(1)...c(q-1)00...0[20 dec. digits] > 2^64 - 1 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 5*(2^65 - 2) // <=> C * 10^(21-q) > 0x9fffffffffffffff6, 1<=q<=7 if (q == 1) { // C * 10^20 > 0x9fffffffffffffff6 __mul_128x64_to_128 (C, (BID_UINT64)C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 7) => 14 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffff6 // has 21 digits __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 or 1 if (x_sign) res = 0x0000000000000000ull; else res = 0x0000000000000001ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 7, -6 <= exp <= 19) // x <= -1 or 1 <= x <= 2^64 - 1 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x <= 2^64 - 1 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 6 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint64_xceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint64_xceil (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid32_to_uint64_xceil, 32) BID_UINT64 bid32_to_uint64_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(q-1)00...0 (20 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n > 2^64 - 1 then n is too large // <=> c(0)c(1)...c(q-1)00...0[20 dec. digits] > 2^64 - 1 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 5*(2^65 - 2) // <=> C * 10^(21-q) > 0x9fffffffffffffff6, 1<=q<=7 if (q == 1) { // C * 10^20 > 0x9fffffffffffffff6 __mul_128x64_to_128 (C, (BID_UINT64)C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 7) => 14 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffff6 // has 21 digits __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 or 1 if (x_sign) res = 0x0000000000000000ull; else res = 0x0000000000000001ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 7, -6 <= exp <= 19) // x <= -1 or 1 <= x <= 2^64 - 1 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x <= 2^64 - 1 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 6 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint64_int ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint64_int (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid32_to_uint64_int, 32) BID_UINT64 bid32_to_uint64_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(q-1)00...0 (20 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(q-1)00...0[20 dec. digits] >= 2^64 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 5*(2^65) // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=7 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, (BID_UINT64)C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 7) => 14 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0xa0000000000000000 // has 21 digits __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 7, -6 <= exp <= 19) // x <= -1 or 1 <= x < 2^64 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 6 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint64_xint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint64_xint (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid32_to_uint64_xint, 32) BID_UINT64 bid32_to_uint64_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(q-1)00...0 (20 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(q-1)00...0[20 dec. digits] >= 2^64 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 5*(2^65) // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=7 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, (BID_UINT64)C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 7) => 14 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0xa0000000000000000 // has 21 digits __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 7, -6 <= exp <= 19) // x <= -1 or 1 <= x < 2^64 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 6 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint64_rninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint64_rninta (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid32_to_uint64_rninta, 32) BID_UINT64 bid32_to_uint64_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(q-1)00...0 (20 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[20 dec. digits] >= 2^64-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=7 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, (BID_UINT64)C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 7) => 14 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffffb // has 21 digits __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 <= n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; // 0 <= ind <= 6 if (C1 < bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x0000000000000001ull; // return +1 } else { // if n < 0 res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN (res); } } else { // if (1 <= q + exp <= 20, 1 <= q <= 7, -6 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 6 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint64_xrninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint64_xrninta (BID_UINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_UINT64, bid32_to_uint64_xrninta, 32) BID_UINT64 bid32_to_uint64_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(q-1)00...0 (20 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[20 dec. digits] >= 2^64-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=7 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, (BID_UINT64)C1, bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if (2 <= q <= 7) => 14 <= 21 - q <= 19 // Note: C * 10^(21-q) has 20 or 21 digits; 0x9fffffffffffffffb // has 21 digits __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 <= n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; // 0 <= ind <= 6 if (C1 < bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x0000000000000001ull; // return +1 } else { // if n < 0 res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN (res); } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 20, 1 <= q <= 7, -6 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 6 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } LIBRARY/src/bid128_2_str_macros.h0000644€­ Q01134020000001716715113665770015471 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define __L0_Normalize_10to18( X_hi, X_lo ) \ { \ BID_UINT64 L0_tmp; \ L0_tmp = (X_lo) + bid_Twoto60_m_10to18; \ if (L0_tmp & bid_Twoto60) \ {(X_hi)=(X_hi)+1;(X_lo)=((L0_tmp<<4)>>4);} \ } #define __L0_Normalize_10to9( X_hi, X_lo ) \ { \ BID_UINT32 L0_tmp; \ L0_tmp = (X_lo) + bid_Twoto30_m_10to9; \ if (L0_tmp & 0x40000000) \ {(X_hi)=(X_hi)+1;(X_lo)=((L0_tmp<<2)>>2);} \ } #define __L0_Split_MiDi_2( X, ptr ) \ { \ BID_UINT32 L0_head, L0_tail, L0_tmp; \ L0_head = (X) >> 10; \ L0_tail = ((X)&(0x03FF))+(L0_head<<5)-(L0_head<<3); \ L0_tmp = (L0_tail)>>10; L0_head += L0_tmp; \ L0_tail = (L0_tail&(0x03FF))+(L0_tmp<<5)-(L0_tmp<<3); \ if (L0_tail > 999){L0_tail -= 1000; L0_head += 1;} \ *((ptr)++) = L0_head; *((ptr)++) = L0_tail; \ } #define __L0_Split_MiDi_3( X, ptr ) \ { \ BID_UINT32 L0_X, L0_head, L0_mid, L0_tail, L0_tmp; \ L0_X = (BID_UINT32)((X)); \ L0_head = ((L0_X>>17)*34359)>>18; \ L0_X -= L0_head*1000000; \ if (L0_X >= 1000000){L0_X -= 1000000;L0_head+=1;} \ L0_mid = L0_X >> 10; \ L0_tail = (L0_X & (0x03FF))+(L0_mid<<5)-(L0_mid<<3); \ L0_tmp = (L0_tail)>>10; L0_mid += L0_tmp; \ L0_tail = (L0_tail&(0x3FF))+(L0_tmp<<5)-(L0_tmp<<3); \ if (L0_tail>999){L0_tail-=1000;L0_mid+=1;} \ *((ptr)++)=L0_head;*((ptr)++)=L0_mid; \ *((ptr)++)=L0_tail; \ } #define __L1_Split_MiDi_6( X, ptr ) \ { \ BID_UINT32 L1_X_hi, L1_X_lo; \ BID_UINT64 L1_Xhi_64, L1_Xlo_64; \ L1_Xhi_64 = ( ((X)>>28)*bid_Inv_Tento9 ) >> 33; \ L1_Xlo_64 = (X) - L1_Xhi_64*(BID_UINT64)bid_Tento9; \ if (L1_Xlo_64 >= (BID_UINT64)bid_Tento9) \ {L1_Xlo_64-=(BID_UINT64)bid_Tento9;L1_Xhi_64+=1;} \ L1_X_hi=(BID_UINT32)L1_Xhi_64; L1_X_lo=(BID_UINT32)L1_Xlo_64; \ __L0_Split_MiDi_3(L1_X_hi,(ptr)); \ __L0_Split_MiDi_3(L1_X_lo,(ptr)); \ } #define __L1_Split_MiDi_6_Lead( X, ptr ) \ { \ BID_UINT32 L1_X_hi, L1_X_lo; \ BID_UINT64 L1_Xhi_64, L1_Xlo_64; \ if ((X)>=(BID_UINT64)bid_Tento9){ \ L1_Xhi_64 = ( ((X)>>28)*bid_Inv_Tento9 ) >> 33; \ L1_Xlo_64 = (X) - L1_Xhi_64*(BID_UINT64)bid_Tento9; \ if (L1_Xlo_64 >= (BID_UINT64)bid_Tento9) \ {L1_Xlo_64-=(BID_UINT64)bid_Tento9;L1_Xhi_64+=1;} \ L1_X_hi=(BID_UINT32)L1_Xhi_64; \ L1_X_lo=(BID_UINT32)L1_Xlo_64; \ if (L1_X_hi>=bid_Tento6){ \ __L0_Split_MiDi_3(L1_X_hi,(ptr)); \ __L0_Split_MiDi_3(L1_X_lo,(ptr)); \ } \ else if (L1_X_hi>=bid_Tento3){ \ __L0_Split_MiDi_2(L1_X_hi,(ptr)); \ __L0_Split_MiDi_3(L1_X_lo,(ptr)); \ } \ else { \ *((ptr)++) = L1_X_hi; \ __L0_Split_MiDi_3(L1_X_lo,(ptr)); \ } \ } \ else { \ L1_X_lo = (BID_UINT32)(X); \ if (L1_X_lo>=bid_Tento6){ \ __L0_Split_MiDi_3(L1_X_lo,(ptr)); \ } \ else if (L1_X_lo>=bid_Tento3){ \ __L0_Split_MiDi_2(L1_X_lo,(ptr)); \ } \ else { \ *((ptr)++) = L1_X_lo; \ } \ } \ } #define __L0_MiDi2Str( X, c_ptr ) \ { \ const char *L0_src; \ L0_src = bid_midi_tbl[(X)]; \ *((c_ptr)++) = *(L0_src++); \ *((c_ptr)++) = *(L0_src++); \ *((c_ptr)++) = *(L0_src); \ } #define __L0_MiDi2Str_Lead( X, c_ptr ) \ { \ const char *L0_src; \ L0_src = bid_midi_tbl[(X)]; \ if ((X)>=100){ \ *((c_ptr)++) = *(L0_src++); \ *((c_ptr)++) = *(L0_src++); \ *((c_ptr)++) = *(L0_src); \ } \ else if ((X)>=10){ \ L0_src++; \ *((c_ptr)++) = *(L0_src++); \ *((c_ptr)++) = *(L0_src); \ } \ else { \ L0_src++;L0_src++; \ *((c_ptr)++) = *(L0_src); \ } \ } LIBRARY/src/bid128_erfc.c0000644€­ Q01134020000002206615113665770014000 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // 2-part conversion. BID_EXTERN_C void bid128_to_binary128_2part(BID_F128_TYPE *,BID_F128_TYPE *,BID_UINT128); // 10^-6000, to create dummy underflowing computation static BID_UINT128 BID128_10POWN6000 = {BID128_LH_INIT( 0x0000000000000001ull, 0x0160000000000000ull )}; static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; // Miscellaneous constants BID_F128_CONST_DEF( c_2_ov_sqrt_pi, 3fff20dd750429b6, d11ae3a914fed7fe); // 2/sqrt(pi) BID_F128_CONST_DEF( c_1_ov_sqrt_pi, 3ffe20dd750429b6, d11ae3a914fed7fe); // 1/sqrt(pi) BID_F128_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F128_CONST_DEF( c_105, 4005a40000000000, 0000000000000000); // 105 BID_F128_CONST_DEF( c_120, 4005e00000000000, 0000000000000000); // 120 BID_F128_CONST_DEF( c_1em40, 3f7a16c262777579, c58c46475896767b); // 1E-40 // Polynomial constants BID_F128_CONST_DEF(c12, 401926841857e3ff, fff920c8098a1091); // 77205601.3732910156Q BID_F128_CONST_DEF(c11, c01599c2ea378000, 0000000000000000); // -6713530.55419921875Q BID_F128_CONST_DEF(c10, 40123832fb980000, 0000000000000000); // 639383.8623046875Q BID_F128_CONST_DEF( c9, c00f06e790800000, 0000000000000000); // -67303.564453125Q BID_F128_CONST_DEF( c8, 400beee110000000, 0000000000000000); // 7918.06640625Q BID_F128_CONST_DEF( c7, c00907ef80000000, c00907ef80000000); // -1055.7421875Q BID_F128_CONST_DEF( c6, 400644d800000000, 0000000000000000); // 162.421875Q BID_F128_CONST_DEF( c5, c003d88000000000, 0000000000000000); // -29.53125Q BID_F128_CONST_DEF( c4, 4001a40000000000, 0000000000000000); // 6.5625Q BID_F128_CONST_DEF( c3, bfffe00000000000, 0000000000000000); // -1.875Q BID_F128_CONST_DEF( c2, 3ffe800000000000, 0000000000000000); // 0.75Q BID_F128_CONST_DEF( c1, bffe000000000000, 0000000000000000); // -0.5Q BID128_FUNCTION_ARG1 (bid128_erfc, x) // Declare local variables BID_UINT128 res, x2_hi, x2_lo, y_hi, y_lo; BID_F128_TYPE xd, ed, yd, xdi, xi2, pd; int cmp_res; BID_F128_TYPE rt, abs_xd; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // If the input is exactly zero, return 1 BIDECIMAL_CALL1_NORND_NOSTAT (bid128_isZero,cmp_res,x); if (cmp_res) { res = BID128_1; BID_RETURN(res); } // Convert now, for more convenience BIDECIMAL_CALL1(bid128_to_binary128,xd,x); // If the input is very small, just do 1 - x to get directed rounding __bid_f128_fabs(abs_xd, xd); if (__bid_f128_lt(abs_xd, c_1em40.v)) { BIDECIMAL_CALL2(bid128_sub,res,BID128_1,x); BID_RETURN(res); } // Check if the input is negative. If it is, then the operation is // wellconditioned and we can do it naively. if (x.w[BID_HIGH_128W] & (1ull<<63)) { BIDECIMAL_CALL1(bid128_to_binary128,xd,x); __bid_f128_erfc(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } // Otherwise, if 0 <= x <= 105, the computation in quad does not underflow. // However, it's badly conditioned near the top so we always correct it // using a derivative approximation erfc'(x) = [-2/sqrt(pi)] * exp(-x^2). if (__bid_f128_lt(xd, c_105.v)) { BID_F128_TYPE rt, rd; bid128_to_binary128_2part(&xd,&ed,x); __bid_f128_mul(rt, xd, xd); __bid_f128_neg(rt, rt); __bid_f128_exp(rt, rt); __bid_f128_mul(rt, c_2_ov_sqrt_pi.v, rt); __bid_f128_mul(rt, rt, ed); __bid_f128_erfc(rd, xd); __bid_f128_sub(yd, rd, rt); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } // Otherwise if x >= 120 then we underflow to zero, so just do // a dummy underflowing computation for the sake of flags and rounding modes. if (__bid_f128_gt(xd, c_120.v)) { BIDECIMAL_CALL2(bid128_mul,res,BID128_10POWN6000,BID128_10POWN6000); BID_RETURN (res); } // In the tricky zone 105 <= x <= 120 there seems to be no easy way of // using the binary function, so we explicitly use the asymptotic // expansion. // // erfc(z) = [1 / (sqrt(pi) * x e^{x^2})] * // [c_0 + c_1 / x^2 + c_2 / (x^2)^ 2 + ...] // // where c_n = (-1)^n (1 * 3 * ... * (2 n - 1)) / 2^n // // We're OK by using terms up to the 11th, I believe. The coefficients are: // // c_0 = 1 // c_1 = -1/2 // c_2 = 3/4 // c_3 = -15/8 // c_4 = 105/16 // c_5 = -945/32 // c_6 = 10395/64 // c_7 = -135135/128 // c_8 = 2027025/256 // c_9 = -34459425/512 // c_10 = 654729075/1024 // c_11 = -13749310575/2048 // c_12 = 316234143225/4096 // // Note that even the computation of e^{-x^2} itself is illconditioned. // We need to keep extra precision when squaring. BIDECIMAL_CALL2(bid128_mul,x2_hi,x,x); // x2_hi =~= x^2 x2_hi.w[BID_HIGH_128W] ^= (1ull<<63); // x2_hi =~= -x^2 BIDECIMAL_CALL3(bid128_fma,x2_lo,x,x,x2_hi); // x2_hi - x2_lo = -x^2 x2_lo.w[BID_HIGH_128W] ^= (1ull<<63); // x2_hi + x2_lo = -x^2 BIDECIMAL_CALL1(bid128_exp,y_hi,x2_hi); // y_hi =~= e^{-x^2} BIDECIMAL_CALL3(bid128_fma,y_hi,y_hi,x2_lo,y_hi); // y_hi = e^{-x^2} // Compute all the other components but the e^{-x^2} in quad and // then convert back. __bid_f128_div(xdi, c_one.v, xd); // xdi = 1.0Q / xd; __bid_f128_mul(xi2, xdi, xdi); // xi2 = xdi * xdi; __bid_f128_mul(pd, xi2, c12.v); // pd = -6713530.55419921875Q + xi2 * 77205601.3732910156Q; __bid_f128_add(pd, c11.v, pd); __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c10.v, pd); // pd = 639383.8623046875Q + xi2 * pd; __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c9.v, pd); // pd = -67303.564453125Q + xi2 * pd; __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c8.v, pd); // pd = 7918.06640625Q + xi2 * pd; __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c7.v, pd); // pd = -1055.7421875Q + xi2 * pd; __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c6.v, pd); // pd = 162.421875Q + xi2 * pd; __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c5.v, pd); // pd = -29.53125Q + xi2 * pd; __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c4.v, pd); // pd = 6.5625Q + xi2 * pd; __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c3.v, pd); // pd = -1.875Q + xi2 * pd; __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c2.v, pd); // pd = 0.75Q + xi2 * pd; __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c1.v, pd); // pd = -0.5Q + xi2 * pd; __bid_f128_mul(pd, xi2, pd); __bid_f128_add(pd, c_one.v, pd); // pd = 1.0Q + xi2 * pd; __bid_f128_mul(rt, xdi, c_1_ov_sqrt_pi.v); // rt = xdi / sqrt(pi) __bid_f128_mul(pd, rt, pd); // pd = pd*xdi/sqrt(pi) BIDECIMAL_CALL1(binary128_to_bid128,y_lo,pd); // Multiply them together. BIDECIMAL_CALL2(bid128_mul,res,y_hi,y_lo); BID_RETURN (res); } LIBRARY/src/bid64_scalbl.c0000644€­ Q01134020000000430415113665770014233 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_TYPE0_FUNCTION_ARGTYPE1_OTHER_ARGTYPE2(BID_UINT64, bid64_scalbln, BID_UINT64, x, long int, n) BID_UINT64 res; int n1; n1 = (int)n; n1 = n1 < n ? (int)0x7fffffff : n1 > n ? (int)0x80000000 : n1; /* treat overflow/underflow */ #if DECIMAL_CALL_BY_REFERENCE bid64_scalbn (&res, &x, &n1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid64_scalbn (x, n1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } LIBRARY/src/bid128_to_int8.c0000644€­ Q01134020000000636615113665770014452 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffffff80 #define INVALID_RESULT 0x80 BID_TO_SMALL_INT_CVT_FUNCTION (char, bid128_to_int8_rnint, BID_UINT128, x, bid128_to_int32_rnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid128_to_int8_xrnint, BID_UINT128, x, bid128_to_int32_xrnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid128_to_int8_rninta, BID_UINT128, x, bid128_to_int32_rninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid128_to_int8_xrninta, BID_UINT128, x, bid128_to_int32_xrninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid128_to_int8_int, BID_UINT128, x, bid128_to_int32_int, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid128_to_int8_xint, BID_UINT128, x, bid128_to_int32_xint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid128_to_int8_floor, BID_UINT128, x, bid128_to_int32_floor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid128_to_int8_ceil, BID_UINT128, x, bid128_to_int32_ceil, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid128_to_int8_xfloor, BID_UINT128, x, bid128_to_int32_xfloor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid128_to_int8_xceil, BID_UINT128, x, bid128_to_int32_xceil, int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid64_rem.c0000644€­ Q01134020000001612115113665770013556 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID64 remainder ***************************************************************************** * * Algorithm description: * * if(exponent_x < exponent_y) * scale coefficient_y so exponents are aligned * perform coefficient divide (64-bit integer divide), unless * coefficient_y is longer than 64 bits (clearly larger * than coefficient_x) * else // exponent_x > exponent_y * use a loop to scale coefficient_x to 18_digits, divide by * coefficient_y (64-bit integer divide), calculate remainder * as new_coefficient_x and repeat until final remainder is obtained * (when new_exponent_x < exponent_y) * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" #define MAX_FORMAT_DIGITS 16 #define DECIMAL_EXPONENT_BIAS 398 #define MASK_BINARY_EXPONENT 0x7ff0000000000000ull #define BINARY_EXPONENT_BIAS 0x3ff #define UPPER_EXPON_LIMIT 51 BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT64, bid64_rem, BID_UINT64, x, BID_UINT64, y) BID_UINT128 CY; BID_UINT64 sign_x, sign_y, coefficient_x, coefficient_y, res; BID_UINT64 Q, R, R2, T, valid_y, valid_x; int_float tempx; int exponent_x, exponent_y, bin_expon, e_scale; int digits_x, diff_expon; BID_OPT_SAVE_BINARY_FLAGS() valid_y = unpack_BID64 (&sign_y, &exponent_y, &coefficient_y, y); valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); // unpack arguments, check for NaN or Infinity if (!valid_x) { // x is Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_x & QUIET_MASK64;; BID_RETURN (res); } // x is Infinity? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { if (((y & NAN_MASK64) != NAN_MASK64)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // return NaN res = 0x7c00000000000000ull; BID_RETURN (res); } } // x is 0 // return x if y != 0 if (((y & 0x7800000000000000ull) < 0x7800000000000000ull) && coefficient_y) { if ((y & 0x6000000000000000ull) == 0x6000000000000000ull) exponent_y = (y >> 51) & 0x3ff; else exponent_y = (y >> 53) & 0x3ff; if (exponent_y < exponent_x) exponent_x = exponent_y; x = exponent_x; x <<= 53; res = x | sign_x; BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if (((y & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_y & QUIET_MASK64;; BID_RETURN (res); } // y is Infinity? if ((y & 0x7800000000000000ull) == 0x7800000000000000ull) { res = very_fast_get_BID64 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } // y is 0, return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c00000000000000ull; BID_RETURN (res); } } diff_expon = exponent_x - exponent_y; if (diff_expon <= 0) { diff_expon = -diff_expon; if (diff_expon > 16) { // |x|<|y| in this case res = x; BID_RETURN (res); } // set exponent of y to exponent_x, scale coefficient_y T = bid_power10_table_128[diff_expon].w[0]; __mul_64x64_to_128 (CY, coefficient_y, T); if (CY.w[1] || CY.w[0] > (coefficient_x << 1)) { res = x; BID_RETURN (res); } Q = coefficient_x / CY.w[0]; R = coefficient_x - Q * CY.w[0]; R2 = R + R; if (R2 > CY.w[0] || (R2 == CY.w[0] && (Q & 1))) { R = CY.w[0] - R; sign_x ^= 0x8000000000000000ull; } res = very_fast_get_BID64 (sign_x, exponent_x, R); BID_RETURN (res); } while (diff_expon > 0) { // get number of digits in coeff_x tempx.d = (float) coefficient_x; bin_expon = ((tempx.i >> 23) & 0xff) - 0x7f; digits_x = bid_estimate_decimal_digits[bin_expon]; // will not use this test, dividend will have 18 or 19 digits //if(coefficient_x >= bid_power10_table_128[digits_x].w[0]) // digits_x++; e_scale = 18 - digits_x; if (diff_expon >= e_scale) { diff_expon -= e_scale; } else { e_scale = diff_expon; diff_expon = 0; } // scale dividend to 18 or 19 digits coefficient_x *= bid_power10_table_128[e_scale].w[0]; // quotient Q = coefficient_x / coefficient_y; // remainder coefficient_x -= Q * coefficient_y; // check for remainder == 0 if (!coefficient_x) { res = very_fast_get_BID64_small_mantissa (sign_x, exponent_y, 0); BID_RETURN (res); } } R2 = coefficient_x + coefficient_x; if (R2 > coefficient_y || (R2 == coefficient_y && (Q & 1))) { coefficient_x = coefficient_y - coefficient_x; sign_x ^= 0x8000000000000000ull; } res = very_fast_get_BID64 (sign_x, exponent_y, coefficient_x); BID_RETURN (res); } LIBRARY/src/bid32_log2.c0000644€­ Q01134020000000604115113665770013631 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define BID32_NAN 0x7c000000ul #if (defined(_MSC_VER) && !defined(__INTEL_COMPILER)) double log(double); #else double log2(double); #endif BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_log2, BID_UINT32, x) // Declare local variables BID_UINT32 res; double xd, rd; int z; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid32_isZero, z, x); if (z) { // -Infinite and Divide by Zero according C99 res = 0xf8000000; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } if (x & MASK_SIGN32) { // QNaN Indefinite res = 0x7c000000; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } BIDECIMAL_CALL1 (bid32_to_binary64, xd, x); #if (defined(_MSC_VER) && !defined(__INTEL_COMPILER)) rd = log(xd)*(1.0/log(2.0)); #else rd = log2(xd); #endif BIDECIMAL_CALL1 (binary64_to_bid32, res, rd); BID_RETURN (res); } LIBRARY/src/bid128_cos.c0000644€­ Q01134020000345347215113665770013661 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // Extra macros #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define lt128(x_hi,x_lo,y_hi,y_lo) \ (((x_hi) < (y_hi)) || (((x_hi) == (y_hi)) && ((x_lo) < (y_lo)))) #define sll192_short(hi,med,lo,c) \ ((hi) = ((hi) << (c)) + ((med)>>(64-(c))), \ (med) = ((med) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll256_short(hi,mhi,mlo,lo,c) \ ((hi) = ((hi) << (c)) + ((mhi)>>(64-(c))), \ (mhi) = ((mhi) << (c)) + ((mlo)>>(64-(c))), \ (mlo) = ((mlo) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define srl128_short(hi,lo,c) \ ((lo) = ((hi) << (64 - (c))) + ((lo) >> (c)), \ (hi) = (hi) >> (c) \ ) typedef struct { BID_UINT64 w[7]; } BID_UINT448; #define __mul_64x384_to_448(P, A, B) \ { BID_UINT128 lP0,lP1,lP2,lP3,lP4,lP5; \ BID_UINT64 lC; \ __mul_64x64_to_128(lP0, A, (B).w[0]); \ __mul_64x64_to_128(lP1, A, (B).w[1]); \ __mul_64x64_to_128(lP2, A, (B).w[2]); \ __mul_64x64_to_128(lP3, A, (B).w[3]); \ __mul_64x64_to_128(lP4, A, (B).w[4]); \ __mul_64x64_to_128(lP5, A, (B).w[5]); \ (P).w[0] = lP0.w[0]; \ __add_carry_out((P).w[1],lC,lP1.w[0],lP0.w[1]); \ __add_carry_in_out((P).w[2],lC,lP2.w[0],lP1.w[1],lC); \ __add_carry_in_out((P).w[3],lC,lP3.w[0],lP2.w[1],lC); \ __add_carry_in_out((P).w[4],lC,lP4.w[0],lP3.w[1],lC); \ __add_carry_in_out((P).w[5],lC,lP5.w[0],lP4.w[1],lC); \ (P).w[6] = lP5.w[1] + lC; \ } #define __mul_128x384_to_512(P, A, B) \ { BID_UINT448 P0,P1; \ BID_UINT64 CY; \ __mul_64x384_to_448(P0,(A).w[0],B); \ __mul_64x384_to_448(P1,(A).w[1],B); \ (P).w[0] = P0.w[0]; \ __add_carry_out((P).w[1],CY,P1.w[0],P0.w[1]); \ __add_carry_in_out((P).w[2],CY,P1.w[1],P0.w[2],CY); \ __add_carry_in_out((P).w[3],CY,P1.w[2],P0.w[3],CY); \ __add_carry_in_out((P).w[4],CY,P1.w[3],P0.w[4],CY); \ __add_carry_in_out((P).w[5],CY,P1.w[4],P0.w[5],CY); \ __add_carry_in_out((P).w[6],CY,P1.w[5],P0.w[6],CY); \ (P).w[7] = P1.w[6] + CY; \ } // Standard NaN static BID_UINT128 BID128_NAN = {BID128_LH_INIT( 0x0000000000000000ull, 0x7c00000000000000ull )}; // 1 and -10^-40, used in trivial path static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_10PM40 = {BID128_LH_INIT( 0x0000000000000001ull, 0xaff0000000000000ull )}; // Values of (10^a / 2 pi) mod 1 for -35 <= a <= 6111 // Each one is a 384-bit binary fraction. This may be a bit too much! // My rough guideline is a bit more than 3x the working precision // (you multiply by that order, the reduced argument can be as small // as that order, and you want accuracy of that order). But I may well // be able to get away with 5 chunks. Probably not 4? static BID_UINT384 bid_decimal128_moduli[] = { {{ 0x4abfd0d644dca156ull, 0xe9cf4c5596df69ecull, 0xd5ccdc56a81e2464ull, 0x9382546d1dfa1e2aull, 0x000000000000021dull, 0x0000000000000000ull }}, {{ 0xeb7e285eb09e4d57ull, 0x2218fb57e4ba233aull, 0x5a009b62912d6bf1ull, 0xc3174c432bc52dacull, 0x0000000000001527ull, 0x0000000000000000ull }}, {{ 0x32ed93b2e62f0569ull, 0x54f9d16eef45604dull, 0x840611d9abc6376bull, 0x9ee8fa9fb5b3c8bbull, 0x000000000000d38dull, 0x0000000000000000ull }}, {{ 0xfd47c4fcfdd63618ull, 0x51c22e5558b5c303ull, 0x283cb280b5be2a31ull, 0x3519ca3d1905d753ull, 0x0000000000084388ull, 0x0000000000000000ull }}, {{ 0xe4cdb1e1ea5e1ceeull, 0x3195cf5577199e27ull, 0x925ef907196da5edull, 0x1301e662fa3a693full, 0x000000000052a352ull, 0x0000000000000000ull }}, {{ 0xf008f2d327ad214eull, 0xefda1956a7002d8eull, 0xb7b5ba46fe487b43ull, 0xbe12ffddc6481c7bull, 0x00000000033a6134ull, 0x0000000000000000ull }}, {{ 0x60597c3f8cc34d0cull, 0x5e84fd628601c795ull, 0x2d1946c5eed4d0a7ull, 0x6cbdfea9bed11cd5ull, 0x000000002047cc0full, 0x0000000000000000ull }}, {{ 0xc37eda7b7fa1027cull, 0xb131e5d93c11cbd5ull, 0xc2fcc3bb54502689ull, 0x3f6bf2a1742b2053ull, 0x0000000142cdf89aull, 0x0000000000000000ull }}, {{ 0xa2f488d2fc4a18d5ull, 0xebf2fa7c58b1f659ull, 0x9ddfa5514b218160ull, 0x7a377a4e89af4345ull, 0x0000000c9c0bb606ull, 0x0000000000000000ull }}, {{ 0x5d8d583ddae4f84full, 0x377dc8db76f39f80ull, 0x2abc752cef4f0dc9ull, 0xc62ac71160d8a0b8ull, 0x0000007e18751c40ull, 0x0000000000000000ull }}, {{ 0xa785726a8cf1b319ull, 0x2ae9d892a5843b03ull, 0xab5c93c1591689dcull, 0xbdabc6adc8764731ull, 0x000004ecf4931a87ull, 0x0000000000000000ull }}, {{ 0x8b3678298170fefcull, 0xad2275ba772a4e24ull, 0xb19dc58d7ae16299ull, 0x68b5c2c9d49ec7f0ull, 0x000031418dbf094dull, 0x0000000000000000ull }}, {{ 0x7020b19f0e69f5d6ull, 0xc3589948a7a70d6dull, 0xf029b786cccdda00ull, 0x17199be24e33cf66ull, 0x0001ec8f89765d06ull, 0x0000000000000000ull }}, {{ 0x6146f03690239a60ull, 0xa175fcd68c868646ull, 0x61a12b44000a8407ull, 0xe70016d70e061a05ull, 0x00133d9b5e9fa23cull, 0x0000000000000000ull }}, {{ 0xccc56221a16407c3ull, 0x4e9be0617d413ebfull, 0xd04bb0a80069284cull, 0x0600e4668c3d0435ull, 0x00c06811b23c5661ull, 0x0000000000000000ull }}, {{ 0xffb5d5504de84da0ull, 0x1216c3cee48c737dull, 0x22f4e690041b92fbull, 0x3c08ec017a622a1aull, 0x078410b0f65b5fcaull, 0x0000000000000000ull }}, {{ 0xfd1a55230b13083bull, 0xb4e3a614ed7c82ebull, 0x5d9101a02913bdceull, 0x5859380ec7d5a505ull, 0x4b28a6e99f91bde6ull, 0x0000000000000000ull }}, {{ 0xe307535e6ebe5250ull, 0x10e47cd146dd1d37ull, 0xa7aa10419ac56a13ull, 0x737c3093ce587235ull, 0xef9685203bb16affull, 0x0000000000000002ull }}, {{ 0xde4941b0536f3722ull, 0xa8ece02cc4a3242eull, 0x8ca4a2900bb624beull, 0x82d9e5c60f747618ull, 0x5be1334254ee2dfaull, 0x000000000000001dull }}, {{ 0xaedc90e342582755ull, 0x9940c1bfae5f69d4ull, 0x7e6e59a0751d6f72ull, 0x1c82f9bc9a8c9cf5ull, 0x96cc0097514dcbc9ull, 0x0000000000000125ull }}, {{ 0xd49da8e09771894dull, 0xfc87917ccfba224eull, 0xf04f804493265a79ull, 0x1d1dc15e097e2196ull, 0xe3f805e92d09f5dbull, 0x0000000000000b77ull }}, {{ 0x4e2898c5ea6f5d02ull, 0xdd4baee01d455714ull, 0x631b02adbf7f88c3ull, 0x23298dac5eed4fe5ull, 0xe7b03b1bc2639a8full, 0x00000000000072aeull }}, {{ 0x0d95f7bb2859a218ull, 0xa4f4d4c124b566cbull, 0xdf0e1ac97afb57a6ull, 0x5f9f88bbb5451ef5ull, 0x0ce24f1597e40997ull, 0x0000000000047ad5ull }}, {{ 0x87dbad4f938054f1ull, 0x71904f8b6f1603eeull, 0xb68d0bdecdd16c82ull, 0xbc3b575514b3359aull, 0x80d716d7eee85fe9ull, 0x00000000002ccc52ull }}, {{ 0x4e94c51bc303516bull, 0x6fa31b7256dc2751ull, 0x218276b40a2e3d18ull, 0x5a516952cf00180bull, 0x0866e46f5513bf21ull, 0x0000000001bffb39ull }}, {{ 0x11cfb3159e212e29ull, 0x5c5f12776499892dull, 0x4f18a30865ce62f4ull, 0x872e1d3c1600f06full, 0x5404ec5952c5774dull, 0x00000000117fd03aull }}, {{ 0xb21cfed82d4bcd9cull, 0x9bb6b8a9edff5bc2ull, 0x16f65e53fa0fdd8bull, 0x47cd2458dc096459ull, 0x48313b7d3bb6a907ull, 0x00000000aefe2247ull }}, {{ 0xf521f471c4f6081aull, 0x152336a34bf9959aull, 0xe59faf47c49ea774ull, 0xce036b78985deb7aull, 0xd1ec52e455229a48ull, 0x00000006d5ed56c8ull }}, {{ 0x93538c71b19c5108ull, 0xd3602260f7bfd80dull, 0xf83cd8cdae328a88ull, 0x0c2232b5f3ab32ccull, 0x333b3ceb535a06d8ull, 0x000000445b4563d8ull }}, {{ 0xc1437c70f01b2a51ull, 0x41c157c9ad7e7087ull, 0xb2607808cdf96958ull, 0x7955fb1b84affc01ull, 0x0050613141844470ull, 0x000002ab90b5e672ull }}, {{ 0x8ca2dc69610fa72bull, 0x918d6de0c6f0654dull, 0xf7c4b0580bbe1d72ull, 0xbd5bcf132edfd810ull, 0x0323cbec8f2aac64ull, 0x00001ab3a71b0074ull }}, {{ 0x7e5c9c1dca9c87b1ull, 0xaf864ac7c563f507ull, 0xadaee370756d2679ull, 0x659616bfd4be70a9ull, 0x1f65f73d97aabbefull, 0x00010b04870e0488ull }}, {{ 0xef9e1929ea1d4ce7ull, 0xdb3eebcdb5e7924aull, 0xc8d4e264964380c0ull, 0xf7dce37e4f7066a0ull, 0x39fba867ecab5759ull, 0x000a6e2d468c2d51ull }}, {{ 0x5c2cfba325250101ull, 0x907536091b0bb6edull, 0xd850d7eddea30788ull, 0xaea0e2ef1a640247ull, 0x43d4940f3eb16983ull, 0x00684dc4c179c52cull }}, {{ 0x99c1d45f73720a0eull, 0xa4941c5b0e752545ull, 0x73286f4ab25e4b55ull, 0xd248dd5707e816ceull, 0xa64dc89872ee1f24ull, 0x041309af8ec1b3baull }}, {{ 0x01924bba82746487ull, 0x6dc91b8e909374b8ull, 0x7f9458eaf7aef158ull, 0x36d8a5664f10e410ull, 0x7f09d5f47d4d3770ull, 0x28be60db9391054aull }}, {{ 0x0fb6f549188bed48ull, 0x49db1391a5c28f30ull, 0xfbcb792dacd56d74ull, 0x247675ff16a8e8a4ull, 0xf6625b8ce5042a62ull, 0x976fc893c3aa34e8ull }}, {{ 0x9d2594daf57744d5ull, 0xe28ec3b0799997e0ull, 0xd5f2bbc8c056468aull, 0x6ca09bf6e2991671ull, 0x9fd79380f229a7d5ull, 0xea5dd5c5a4a61119ull }}, {{ 0x2377d08d96a8b050ull, 0xd993a4e4bfffeec6ull, 0x5b7b55d7835ec16cull, 0x3e4617a4d9fae072ull, 0x3e6bc30975a08e56ull, 0x27aa59b86e7cab00ull }}, {{ 0x62ae2587e296e322ull, 0x7fc470ef7fff53bdull, 0x92d15a6b21b38e40ull, 0x6ebcec7083ccc477ull, 0x70359e5e98458f5eull, 0x8ca7813450deae02ull }}, {{ 0xdacd774ed9e4df50ull, 0xfdac695afff94565ull, 0xbc2d882f51038e84ull, 0x53613c6525ffacabull, 0x62182fb1f2b799b0ull, 0x7e8b0c0b28b2cc18ull }}, {{ 0x8c06a91482f0b921ull, 0xe8bc1d8dffbcb5faull, 0x59c751d92a239131ull, 0x41cc5bf37bfcbeb5ull, 0xd4f1dcf37b2c00e3ull, 0xf16e786f96fbf8f3ull }}, {{ 0x78429acd1d673b4aull, 0x1759278bfd5f1bc9ull, 0x81c9327ba563abf3ull, 0x91fb9782d7df7315ull, 0x5172a182cfb808e0ull, 0x6e50b45be5d7b986ull }}, {{ 0xb29a0c03260850e4ull, 0xe97b8b77e5b715deull, 0x11dbf8d475e4b77eull, 0xb3d3eb1c6eba7ed7ull, 0x2e7a4f1c1d3058c5ull, 0x4f270b96fa6d3f3full }}, {{ 0xfa04781f7c5328edull, 0x1ed372aef926dab2ull, 0xb297b84c9aef2af5ull, 0x06472f1c5348f466ull, 0xd0c7171923e377b9ull, 0x178673e5c8447877ull }}, {{ 0xc42cb13adb3f993full, 0x34427ad5bb848afdull, 0xf9ed32fe0d57ad93ull, 0x3ec7d71b40d98c02ull, 0x27c6e6fb66e2ad3aull, 0xeb4086f9d2acb4aeull }}, {{ 0xa9beec4c907bfc72ull, 0x0a98cc59532d6de9ull, 0xc343fdec856cc7c0ull, 0x73ce6710887f781dull, 0x8dc505d204dac446ull, 0x308545c23abf0ecdull }}, {{ 0xa1753afda4d7dc78ull, 0x69f7fb7d3fc64b20ull, 0xa0a7eb3d363fcd80ull, 0x861006a554fab129ull, 0x89b23a34308baac0ull, 0xe534b9964b769407ull }}, {{ 0x4e944de8706e9cadull, 0x23afd2e47dbeef46ull, 0x468f30641e7e0704ull, 0x3ca0427551caeba0ull, 0x60f64609e574ab85ull, 0xf40f3fdef2a1c84bull }}, {{ 0x11cb0b1464521ec0ull, 0x64de3cece97558bfull, 0xc197e3e930ec4629ull, 0x5e42989531ed3442ull, 0xc99ebc62f68eb334ull, 0x88987eb57a51d2f1ull }}, {{ 0xb1ee6ecbeb353380ull, 0xf0ae61411e957776ull, 0x8feee71be93abd9dull, 0xae99f5d3f3440a9bull, 0xe0335bdda193000bull, 0x55f4f316c7323d71ull }}, {{ 0xf35053f730140303ull, 0x66cfcc8b31d6aaa2ull, 0x9f5507171c4b682bull, 0xd2039a4780a86a13ull, 0xc20196a84fbe0074ull, 0x5b917ee3c7f66672ull }}, {{ 0x812347a7e0c81e20ull, 0x041dfd6ff262aa5dull, 0x395246e71af211b2ull, 0x342406cb069424c4ull, 0x940fe2931d6c0490ull, 0x93aef4e5cfa0007bull }}, {{ 0x0b60cc8ec7d12d41ull, 0x292be65f77daa7a7ull, 0x3d36c5070d74b0f4ull, 0x096843ee41c96faaull, 0xc89ed9bf26382da2ull, 0xc4d590fa1c4004d3ull }}, {{ 0x71c7fd93ce2bc489ull, 0x9bb6ffbaae8a8c86ull, 0x6423b246868ee989ull, 0x5e12a74e91de5ca6ull, 0xd63481777e31c854ull, 0xb057a9c51a803045ull }}, {{ 0x71cfe7c60db5ad5aull, 0x1525fd4ad1697d40ull, 0xe964f6c141951f60ull, 0xacba8911b2af9e7full, 0x5e0d0eaaedf1d34bull, 0xe36ca1b30901e2baull }}, {{ 0x721f0dbc8918c57full, 0xd37be4ec2e1ee484ull, 0x1df1a38c8fd339c0ull, 0xbf495ab0fadc30ffull, 0xac8292ad4b7240f4ull, 0xe23e50fe5a12db47ull }}, {{ 0x7536895d5af7b6f8ull, 0x42d6f139cd34ed2cull, 0x2b70637d9e404188ull, 0x78dd8ae9cc99e9f7ull, 0xbd19bac4f276898full, 0xd66f29ef84bc90ccull }}, {{ 0x94215da58dad25adull, 0x9c656c42041143bcull, 0xb263e2e82e828f52ull, 0xb8a76d21fe0323a7ull, 0x63014bb178a15f9aull, 0x6057a35b2f5da7ffull }}, {{ 0xc94da87788c378c4ull, 0x1bf63a9428aca55dull, 0xf7e6dd11d119993aull, 0x368a4353ec1f648cull, 0xde0cf4eeb64dbc0bull, 0xc36c618fd9a88ff9ull }}, {{ 0xdd0894ab57a2b7adull, 0x179e49c996be75a9ull, 0xaf04a2b22afffc45ull, 0x2166a1473939ed81ull, 0xac8191531f095870ull, 0xa23bcf9e80959fc2ull }}, {{ 0xa255ceb16c5b2cc2ull, 0xec2ee1dfe37098a2ull, 0xd62e5af5adffdab2ull, 0x4e024cc83c434710ull, 0xbd0fad3f365d7461ull, 0x56561c3105d83d9aull }}, {{ 0x575a12ee3b8fbf91ull, 0x39d4d2bee265f65aull, 0x5dcf8d98cbfe8afdull, 0x0c16ffd25aa0c6a8ull, 0x629cc4781fa68bcdull, 0x5f5d19ea3a72680bull }}, {{ 0x6984bd4e539d7ba6ull, 0x42503b74d7fb9f87ull, 0xaa1b87f7f7f16de4ull, 0x78e5fe378a47c293ull, 0xda1facb13c817602ull, 0xb9a3032648781071ull }}, {{ 0x1f2f650f4426d47full, 0x972252906fd43b4aull, 0xa5134fafaf6e4aeaull, 0xb8fbee2b66cd99c4ull, 0x853cbeec5d0e9c18ull, 0x405e1f7ed4b0a472ull }}, {{ 0x37d9f298a9844cf4ull, 0xe75739a45e4a50e5ull, 0x72c11cdcda4eed29ull, 0x39d74db2040801aeull, 0x345f753ba29218f7ull, 0x83ad3af44ee66c79ull }}, {{ 0x2e8379f69f2b0185ull, 0x0968406baee728f4ull, 0x7b8b20a0871543a3ull, 0x426908f4285010d0ull, 0x0bba945459b4f9a8ull, 0x24c44d8b15003cbcull }}, {{ 0xd122c3a237ae0f2full, 0x5e128434d5079989ull, 0xd36f464546d4a45eull, 0x981a59899320a824ull, 0x7549cb4b8111c092ull, 0x6fab076ed2025f58ull }}, {{ 0x2b5ba4562ccc97d2ull, 0xacb92a10524bff62ull, 0x4258beb4c44e6bafull, 0xf1077f5fbf469170ull, 0x94e1f0f30ab185b9ull, 0x5cae4a543417b974ull }}, {{ 0xb1946b5dbffdee33ull, 0xbf3ba4a336f7f9d5ull, 0x9777730fab1034dcull, 0x6a4af9bd78c1ae62ull, 0xd0d3697e6aef3943ull, 0x9ecee74a08ed3e8dull }}, {{ 0xefcc31a97feb4e00ull, 0x78546e6025afc258ull, 0xeaaa7e9caea2109full, 0x26edc166b790cfd9ull, 0x28421ef02d583ca2ull, 0x341508e45944718aull }}, {{ 0x5df9f09eff310bfeull, 0xb34c4fc178dd9779ull, 0x2aa8f21ed254a63aull, 0x85498e032ba81e83ull, 0x92953561c5725e55ull, 0x08d258eb7cac6f65ull }}, {{ 0xabc36635f7ea77e7ull, 0x00fb1d8eb8a7eabdull, 0xaa997534374e7e4bull, 0x34df8c1fb491311full, 0xb9d415d1b677af57ull, 0x58377932debc59f7ull }}, {{ 0xb5a1fe1baf28af0bull, 0x09cf2793368f2b68ull, 0xa9fe940a2910eeeeull, 0x10bb793d0dabeb3cull, 0x4248da3120acd968ull, 0x722abbfcb35b83adull }}, {{ 0x1853ed14d796d669ull, 0x62178bc02197b217ull, 0xa3f1c8659aa9554cull, 0xa752bc6288b7305eull, 0x96d885eb46c07e10ull, 0x75ab57df019324c4ull }}, {{ 0xf34742d06be4601dull, 0xd4eb75814fecf4e6ull, 0x6771d3f80a9d54fbull, 0x893b5bd95727e3b2ull, 0xe4753b30c384eca6ull, 0x98b16eb60fbf6fadull }}, {{ 0x80c89c2436ebc122ull, 0x5132970d1f419105ull, 0x0a7247b06a2551d6ull, 0x5c51967d678ee4f8ull, 0xec944fe7a3313e81ull, 0xf6ee531c9d7a5ccaull }}, {{ 0x07d6196a25358b58ull, 0x2bf9e683388faa37ull, 0x6876cce42575325full, 0x9b2fe0e60b94f1b0ull, 0x3dcb1f0c5fec710dull, 0xa54f3f1e26c79fedull }}, {{ 0x4e5cfe2574177172ull, 0xb7c30120359ca626ull, 0x14a400e97693f7b7ull, 0x0fdec8fc73d170e4ull, 0x69ef367bbf3c6a88ull, 0x7518772d83cc3f44ull }}, {{ 0x0fa1ed7688ea6e76ull, 0x2d9e0b42181e7d7full, 0xce68091ea1c7ad2dull, 0x9eb3d9dc862e68e8ull, 0x235820d5785c2950ull, 0x92f4a7c725fa78acull }}, {{ 0x9c5346a15928509bull, 0xc82c7094f130e6f6ull, 0x10105b3251ccc3c3ull, 0x3306829d3dd01918ull, 0x61714856b3999d26ull, 0xbd8e8dc77bc8b6b9ull }}, {{ 0x1b40c24d7b932609ull, 0xd1bc65d16be905a2ull, 0xa0a38ff731ffa5a5ull, 0xfe411a246a20faf0ull, 0xce6cd3630400237dull, 0x679189cad5d7233dull }}, {{ 0x10879706d3bf7c5cull, 0x315bfa2e371a3855ull, 0x46639fa7f3fc787aull, 0xee8b056c2549cd66ull, 0x104041de280162ebull, 0x0baf61ec5a67606aull }}, {{ 0xa54be644457adb97ull, 0xed97c5ce27063352ull, 0xbfe43c8f87dcb4c5ull, 0x516e363974e205feull, 0xa28292ad900ddd37ull, 0x74d9d33b8809c424ull }}, {{ 0x74f6feaab6cc93e2ull, 0x47edba0d863e013aull, 0x7eea5d9b4e9f0fbbull, 0x2e4e1e3e90d43bf3ull, 0x5919bac7a08aa429ull, 0x908240535061a96eull }}, {{ 0x91a5f2ab23fdc6d5ull, 0xcf4944873e6c0c48ull, 0xf527a81112369d50ull, 0xcf0d2e71a84a5782ull, 0x7b014bcc456a699bull, 0xa516834123d09e4full }}, {{ 0xb07b7aaf67e9c450ull, 0x18dcad4870387ad5ull, 0x938c90aab6222528ull, 0x1683d07092e76b1dull, 0xce0cf5fab6282016ull, 0x72e1208b66262f1aull }}, {{ 0xe4d2cada0f21ab1full, 0xf89ec4d46234cc58ull, 0xc37da6ab1d557390ull, 0xe1262465bd0a2f27ull, 0x0c819bcb1d9140dcull, 0x7ccb4571fd7dd70cull }}, {{ 0xf03bec849750af33ull, 0xb633b04bd60ffb78ull, 0xa2e882af255683a9ull, 0xcb7d6bf96265d78dull, 0x7d1015ef27ac88a0ull, 0xdff0b673e6ea6678ull }}, {{ 0x62573d2de926d7feull, 0x1e04e2f65c9fd2b9ull, 0x5d151ad7756124a1ull, 0xf2e637bdd7fa6b88ull, 0xe2a0db578cbd5647ull, 0xbf672087052800b4ull }}, {{ 0xd76863cb1b846fe9ull, 0x2c30dd9f9e3e3b3dull, 0xa2d30c6a95cb6e4bull, 0x7cfe2d6a6fc83353ull, 0xda48916b7f655ecfull, 0x7a07454633900710ull }}, {{ 0x6a13e5ef132c5f1aull, 0xb9e8a83c2e6e506aull, 0x5c3e7c29d9f24eefull, 0xe1edc6285dd20144ull, 0x86d5ae32f9f5b41aull, 0xc448b4be03a046a8ull }}, {{ 0x24c6fb56bfbbb707ull, 0x43169259d04f2428ull, 0x9a70d9a28377155dull, 0xd349bd93aa340cabull, 0x4458cdfdc399090cull, 0xaad70f6c2442c295ull }}, {{ 0x6fc5d1637d55264aull, 0x9ee1b78223176991ull, 0x0868805922a6d5a4ull, 0x40e167c4a6087eb4ull, 0xab780be9a3fa5a80ull, 0xac669a396a9b99d4ull }}, {{ 0x5dba2de2e5537ee4ull, 0x34d12b155eea1faeull, 0x5415037b5a84586eull, 0x88ce0dae7c54f308ull, 0xb2b0772067c78902ull, 0xbc02063e2a14024eull }}, {{ 0xa945cadcf542f4e3ull, 0x102baed5b5253ccfull, 0x48d222d1892b744eull, 0x580c88d0db517e53ull, 0xfae4a7440dcb5a19ull, 0x58143e6da4c81712ull }}, {{ 0x9cb9eca1949d90e1ull, 0xa1b4d4591374601cull, 0xd8355c2f5bb28b0cull, 0x707d5828912eef40ull, 0xccee88a889f184fdull, 0x70ca70486fd0e6bdull }}, {{ 0x1f433e4fce27a8caull, 0x51104b7ac28bc11eull, 0x721599d994f96e7eull, 0x64e57195abd55888ull, 0x01515695636f31e6ull, 0x67e862d45e29036aull }}, {{ 0x38a06f1e0d8c97e9ull, 0x2aa2f2cb99758b2dull, 0x74d8027fd1be50efull, 0xf0f66fd8b6557554ull, 0x0d2d61d5e257f2ffull, 0x0f13dc4bad9a2224ull }}, {{ 0x3644572c877def17ull, 0xaa5d7bf3fe976fc4ull, 0x907018fe316f2957ull, 0x69a05e771f56954cull, 0x83c5d25ad76f7dffull, 0x96c69af4c8055568ull }}, {{ 0x1eab67bd4aeb56e7ull, 0xa7a6d787f1ea5daaull, 0xa460f9edee579d6cull, 0x2043b0a73961d4fdull, 0x25ba378c6a5aebfaull, 0xe3c20d8fd0355615ull }}, {{ 0x32b20d64ed316504ull, 0x8c846b4f7327a8a5ull, 0x6bc9c34b4f6c263eull, 0x42a4e6883dd251e8ull, 0x79462b7c278d37c5ull, 0xe594879e22155cd3ull }}, {{ 0xfaf485f143edf22cull, 0x7d2c311a7f8c9673ull, 0x35e1a0f11a397e71ull, 0x9a7101526a373314ull, 0xbcbdb2d98b842db4ull, 0xf7cd4c2d54d5a042ull }}, {{ 0xcd8d3b6ca74b75b6ull, 0xe3b9eb08fb7de087ull, 0x1ad0496b063ef06eull, 0x086a0d382627fecaull, 0x5f68fc7f7329c90eull, 0xae04f9c55058429bull }}, {{ 0x0784523e88f29918ull, 0xe5432e59d2eac54eull, 0x0c22de2e3e756454ull, 0x542484317d8ff3e5ull, 0xba19dcfa7fa1da8cull, 0xcc31c1b523729a11ull }}, {{ 0x4b2b36715979faf3ull, 0xf49fcf823d2bb50cull, 0x795cadce7095eb50ull, 0x496d29eee79f86f2ull, 0x4502a1c8fc52897bull, 0xf9f19113627a04b1ull }}, {{ 0xefb0206d7ec3cd7full, 0x8e3e1b1663b5127aull, 0xbd9eca1065db3129ull, 0xde43a3550c3b4578ull, 0xb21a51d9db395ed0ull, 0xc36faac1d8c42eecull }}, {{ 0x5ce14446f3a606f7ull, 0x8e6d0edfe512b8cdull, 0x6833e4a3fa8feb9full, 0xaea461527a50b6b7ull, 0xf5073282903db428ull, 0xa25cab9277a9d53eull }}, {{ 0xa0ccaac5847c45a3ull, 0x904294bef2bb3805ull, 0x1206ee67c99f343bull, 0xd26bcd38c727232aull, 0x9247f919a2690996ull, 0x579eb3b8aca25475ull }}, {{ 0x47feabb72cdab85dull, 0xa299cf757b503038ull, 0xb445500de0380a53ull, 0x38360437c7875fa4ull, 0xb6cfbb00581a5fe4ull, 0x6c330536be574c97ull }}, {{ 0xcff2b527c08b339eull, 0x5a021a96d121e232ull, 0x0ab5208ac2306744ull, 0x321c2a2dcb49bc6full, 0x241d4e037107beeaull, 0x39fe34236f68fdedull }}, {{ 0x1f7b138d8570042cull, 0x841509e42b52d5fcull, 0x6b13456b95e408abull, 0xf519a5c9f0e15c56ull, 0x69250c226a4d7525ull, 0x43ee09625a19eb43ull }}, {{ 0x3acec387366029b7ull, 0x28d262e9b13c5bd9ull, 0x2ec0b633dae856b3ull, 0x930079e368cd9b60ull, 0x1b7279582706937bull, 0xa74c5dd7850330a2ull }}, {{ 0x4c13a3481fc1a129ull, 0x9837dd20ec5b967cull, 0xd3871e068d1362ffull, 0xbe04c2e2180811c1ull, 0x1278bd718641c2d3ull, 0x88fbaa6b321fe655ull }}, {{ 0xf8c460d13d904b9cull, 0xf22ea3493b93e0daull, 0x43472c4182c1ddfbull, 0x6c2f9cd4f050b192ull, 0xb8b7666f3e919c45ull, 0x59d4a82ff53eff52ull }}, {{ 0xb7abc82c67a2f417ull, 0x75d260dc53c6c88dull, 0xa0c7ba8f1b92abd7ull, 0x39dc20516326efb6ull, 0x372a005871b01ab6ull, 0x824e91df9475f93bull }}, {{ 0x2cb5d1bc0c5d88e5ull, 0x9a37c89b45c3d589ull, 0x47cd499713bab66aull, 0x4299432ddf855d22ull, 0x27a4037470e10b1eull, 0x1711b2bbcc9bbc50ull }}, {{ 0xbf1a31587ba758eeull, 0x062dd610b9a6575bull, 0xce04dfe6c54b202aull, 0x99fc9fcabb35a356ull, 0x8c68228c68ca6f2eull, 0xe6b0fb55fe155b21ull }}, {{ 0x7705ed74d4897949ull, 0x3dca5ca7407f6995ull, 0x0c30bf03b4ef41a4ull, 0x03de3deb50186164ull, 0x7c11597c17e857d2ull, 0x02e9d15becd58f4full }}, {{ 0xa63b46904d5ebcd6ull, 0x69e79e8884fa1fd6ull, 0x79e776251158906aull, 0x26ae6b3120f3cde8ull, 0xd8ad7ed8ef136e34ull, 0x1d222d974057991aull }}, {{ 0x7e50c1a305b3605eull, 0x230c315531c53e62ull, 0xc30a9d72ad75a428ull, 0x82d02feb49860b14ull, 0x76c6f47956c24e09ull, 0x2355c7e8836bfb0cull }}, {{ 0xef27905e3901c3a8ull, 0x5e79ed53f1b46fd8ull, 0x9e6a267ac6986991ull, 0x1c21df30df3c6ecfull, 0xa3c58cbd63970c5full, 0x6159cf152237ce7cull }}, {{ 0x578ba3ae3a11a48dull, 0xb0c34547710c5e79ull, 0x302580cbc1f41fadull, 0x1952b7e8b85c541cull, 0x65b77f65e3e67bb7ull, 0xcd8216d3562e10deull }}, {{ 0x6b7464ce44b06d81ull, 0xe7a0b4ca6a7bb0bdull, 0xe17707f593893cc8ull, 0xfd3b2f17339b4919ull, 0xf92af9fae700d526ull, 0x0714e4415dcca8afull }}, {{ 0x328bf00eaee4470eull, 0x0c470fe828d4e766ull, 0xcea64f97c35c5fd9ull, 0xe44fd6e80410db02ull, 0xbbadc3cd06085385ull, 0x46d0ea8da9fe96dfull }}, {{ 0xf9776092d4eac688ull, 0x7ac69f11985109fdull, 0x127f1beda19bbe7aull, 0xeb1e651028a88e1cull, 0x54c9a6023c53433aull, 0xc4292988a3f1e4bdull }}, {{ 0xbea9c5bc512bc14cull, 0xcbc236aff32a63ebull, 0xb8f71748501570c8ull, 0x2f2ff2a196958d18ull, 0x4fe07c165b40a04dull, 0xa99b9f566772ef65ull }}, {{ 0x72a1b95b2bb58cfbull, 0xf59622df7fa7e735ull, 0x39a6e8d320d667d7ull, 0xd7df7a4fe1d782f7ull, 0x1ec4d8df90864303ull, 0xa01439600a7d59f5ull }}, {{ 0x7a513d8fb51781ceull, 0x97dd5cbafc8f0816ull, 0x4085183f48600e6full, 0x6ebac71ed26b1da8ull, 0x33b078bba53e9e26ull, 0x40ca3dc068e58393ull }}, {{ 0xc72c679d12eb120full, 0xeea59f4ddd9650e0ull, 0x8532f278d3c0905bull, 0x534bc734382f2892ull, 0x04e4b75474722d80ull, 0x87e6698418f723c0ull }}, {{ 0xc7bc0c22bd2eb498ull, 0x5278390aa7df28c7ull, 0x33fd78b84585a397ull, 0x40f5c80a31d795b9ull, 0x30ef294c8c75c703ull, 0x4f001f28f9a76580ull }}, {{ 0xcd58795b63d30df4ull, 0x38b23a6a8eb797cdull, 0x07e6b732b73863e9ull, 0x8999d065f26bd93cull, 0xe9579cfd7c99c620ull, 0x16013799c089f701ull }}, {{ 0x0574bd91e63e8b85ull, 0x36f64829932bee0aull, 0x4f0327fb2833e71cull, 0x600223fb78367c58ull, 0x1d6c21e6de01bd45ull, 0xdc0c2c018563a613ull }}, {{ 0x368f67b2fe71732dull, 0x259ed19fbfb74c64ull, 0x161f8fcf9207071aull, 0xc01567d2b220db73ull, 0x26395304ac1164b5ull, 0x9879b80f35e47cbfull }}, {{ 0x219a0cfdf06e7fc4ull, 0x7834303d7d28fbeaull, 0xdd3b9e1bb4464705ull, 0x80d60e3af548927eull, 0x7e3d3e2eb8adef19ull, 0xf4c130981aecdf77ull }}, {{ 0x500481eb6450fdadull, 0xb209e266e399d725ull, 0xa4542d150abec636ull, 0x085c8e4d94d5b8f4ull, 0xee646dd336cb56ffull, 0x8f8be5f10d40baaaull }}, {{ 0x202d1331eb29e8c1ull, 0xf462d804e4026775ull, 0x6b49c2d26b73be22ull, 0x539d8f07d059398eull, 0x4fec4a4023f165f6ull, 0x9b76fb6a84874aadull }}, {{ 0x41c2bff32fa31787ull, 0x8bdc7030e8180a93ull, 0x30e19c3832856d5dull, 0x4427964e237c3f90ull, 0x1f3ae681676dfb9full, 0x12a5d2292d48eac5ull }}, {{ 0x919b7f7fdc5eeb48ull, 0x769c61e910f069c0ull, 0xe8d01a31f93645a7ull, 0xa98bdf0d62da7ba1ull, 0x384d010e0a4bd438ull, 0xba7a359bc4d92bb3ull }}, {{ 0xb012fafe9bb530ccull, 0xa21bd31aa9642185ull, 0x182105f3bc1eb88aull, 0x9f76b685dc88d453ull, 0x33020a8c66f64a36ull, 0x48c61815b07bb500ull }}, {{ 0xe0bdcdf21513e7fcull, 0x55163f0a9de94f38ull, 0xf14a3b855933356aull, 0x3aa3213a9d584b3eull, 0xfe14697c059ee622ull, 0xd7bcf0d8e4d51201ull }}, {{ 0xc76a0b74d2c70fd8ull, 0x52de766a2b1d1838ull, 0x6ce653357c001627ull, 0x4a5f4c4a2572f075ull, 0xeccc1ed83834fd56ull, 0x6d616878f052b413ull }}, {{ 0xca2472903bc69e6full, 0x3cb0a025af22f237ull, 0x40ff4016d800dd89ull, 0xe7b8fae5767d6496ull, 0x3ff934723211e55eull, 0x45ce14b9633b08c7ull }}, {{ 0xe56c79a255c23059ull, 0x5ee64178d75d762dull, 0x89f880e47008a75cull, 0x0d39ccf6a0e5eddeull, 0x7fbc0c75f4b2f5b5ull, 0xba0ccf3de04e57c8ull }}, {{ 0xf63cc0575995e37cull, 0xb4fe8eb869a69dcaull, 0x63b508ec6056899bull, 0x844201a248fb4ab1ull, 0xfd587c9b8efd9912ull, 0x4480186ac30f6dd4ull }}, {{ 0x9e5f83697fdae2d5ull, 0x11f19334208229edull, 0xe512593bc3616015ull, 0x2a941056d9d0eaedull, 0xe574de1395e7fab9ull, 0xad00f42b9e9a4a51ull }}, {{ 0x2fbb221efe8cdc51ull, 0xb36fc0094515a348ull, 0xf2b77c55a1cdc0d2ull, 0xa9c8a36482292d4aull, 0xf690acc3db0fcb3bull, 0xc20989b43206e732ull }}, {{ 0xdd4f5535f1809b2dull, 0x025d805cb2d860d1ull, 0x7b2adb585209883bull, 0xa1d661ed159bc4edull, 0xa1a6bfa68e9df054ull, 0x945f6109f44507fdull }}, {{ 0xa519541b6f060fc2ull, 0x17a7039efc73c832ull, 0xcfac9173345f524eull, 0x525fd342d815b146ull, 0x50837c81922b634eull, 0xcbb9ca638ab24fe8ull }}, {{ 0x72fd4912563c9d95ull, 0xec862435dc85d1faull, 0x1cbdae800bb9370cull, 0x37be409c70d8ecc4ull, 0x2522dd0fb5b1e10full, 0xf541e7e36af71f13ull }}, {{ 0x7de4dab75e5e27d6ull, 0x3d3d6a1a9d3a33c8ull, 0x1f68d100753c2681ull, 0x2d6e861c68793fa9ull, 0x735ca29d18f2ca98ull, 0x94930ee22da736bfull }}, {{ 0xeaf08b29afad8e5cull, 0x6466250a244605d4ull, 0x3a182a049459810cull, 0xc6513d1c14bc7c9bull, 0x819e5a22f97be9f1ull, 0xcdbe94d5c888237aull }}, {{ 0x2d656fa0dcc78f98ull, 0xebfd72656abc3a51ull, 0x44f1a42dcb7f0a7bull, 0xbf2c6318cf5cde10ull, 0x102f855dbed72371ull, 0x0971d059d55162c9ull }}, {{ 0xc5f65c489fcb9becull, 0x37e677f62b5a472bull, 0xb17069c9f2f668d7ull, 0x77bbdef819a0aca2ull, 0xa1db35a974676271ull, 0x5e722382552ddbdaull }}, {{ 0xbb9f9ad63df4173dull, 0x2f00af9db186c7b5ull, 0xee6421e37da01868ull, 0xad56b5b10046be5aull, 0x5290189e8c09d86eull, 0xb075631753ca968aull }}, {{ 0x543c0c5e6b88e85dull, 0xd606dc28ef43cd19ull, 0x4fe952e2e840f411ull, 0xc56318ea02c36f8dull, 0x39a0f63178627452ull, 0xe495dee945e9e167ull }}, {{ 0x4a587bb0335913a6ull, 0x5c44999958a602fdull, 0x1f1d3cdd128988b2ull, 0xb5def9241ba25b85ull, 0x40499deeb3d88b3bull, 0xeddab51cbb22ce08ull }}, {{ 0xe774d4e2017ac47full, 0x9aadfffd767c1de4ull, 0x372460a2b95f56f7ull, 0x1ab5bb6914579333ull, 0x82e02b5306757055ull, 0x4a8b131f4f5c0c52ull }}, {{ 0x0a9050d40ecbacf7ull, 0x0acbffe6a0d92af1ull, 0x276bc65b3db965acull, 0x0b19521acb6bc000ull, 0x1cc1b13e40966353ull, 0xe96ebf3919987b39ull }}, {{ 0x69a3284893f4c1a9ull, 0x6bf7ff02487bad6aull, 0x8a35bf90693df8b8ull, 0x6efd350bf2358001ull, 0x1f90ec6e85dfe13eull, 0x1e53783afff4d03bull }}, {{ 0x205f92d5c78f909full, 0x37aff616d4d4c628ull, 0x66197ba41c6bb734ull, 0x55e412777617000full, 0x3ba93c513abecc70ull, 0x2f42b24dff90224full }}, {{ 0x43bbbc59cb9ba634ull, 0x2cdf9ce4504fbd91ull, 0xfcfed4691c35280aull, 0x5ae8b8aa9ce60099ull, 0x549c5b2c4b73fc63ull, 0xd89af70bfba15718ull }}, {{ 0xa5555b81f4147e04ull, 0xc0bc20eb231d67acull, 0xe1f44c1b1a139065ull, 0x8d1736aa20fc0603ull, 0x4e1b8fbaf287dbe1ull, 0x760da677d44d66f3ull }}, {{ 0x7555931388ccec29ull, 0x8759492f5f260cbeull, 0xd38af90f04c3a3f9ull, 0x82e822a549d83c26ull, 0x0d139d4d794e96cfull, 0x9c8880ae4b060581ull }}, {{ 0x9557bec35801399bull, 0x497cdbd9b77c7f70ull, 0x436dba962fa467bfull, 0x1d115a74e2725984ull, 0x82c42506bd11e41bull, 0x1d5506ceee3c370aull }}, {{ 0xd56d73a1700c400cull, 0xdee096812adcfa65ull, 0xa24949dddc6c0d78ull, 0x22ad8890d8777f2aull, 0x1ba9724362b2e90full, 0x255244154e5a2669ull }}, {{ 0x5646844e607a807aull, 0xb4c5e10baca1c7faull, 0x56dce2aa9c3886b8ull, 0x5ac755a874aaf7aaull, 0x149e76a1dafd1a97ull, 0x7536a8d50f85801bull }}, {{ 0x5ec12b0fc4c904c2ull, 0x0fbaca74be51cfc7ull, 0x64a0daaa1a354337ull, 0x8bc958948eadaca7ull, 0xce30a2528de309e9ull, 0x942298529b37010eull }}, {{ 0xb38bae9dafda2f94ull, 0x9d4be88f6f321dc9ull, 0xee488aa50614a026ull, 0x75dd75cd92c8be89ull, 0x0de657398ade631full, 0xc959f33a10260a94ull }}, {{ 0x0374d228de85dbc4ull, 0x24f7159a57f529e1ull, 0x4ed56a723cce4182ull, 0x9aa69a07bbd77163ull, 0x8aff683f6cafdf3aull, 0xdd838044a17c69c8ull }}, {{ 0x22903598b13a95a8ull, 0x71a6d8076f93a2caull, 0x14562876600e8f15ull, 0x0a82044d566a6de1ull, 0x6dfa127a3edeb84aull, 0xa72302ae4edc21d5ull }}, {{ 0x59a217f6ec49d88full, 0x7084704a5bc45be5ull, 0xcb5d949fc09196d6ull, 0x69142b0560284acaull, 0x4bc4b8c674b332e4ull, 0x875e1acf14995256ull }}, {{ 0x8054efa53ae27596ull, 0x652c62e795ab96f5ull, 0xf1a7ce3d85afe460ull, 0x1ac9ae35c192ebebull, 0xf5af37c08efffcecull, 0x49ad0c16cdfd375eull }}, {{ 0x03515c744cd897dfull, 0xf3bbdd0bd8b3e597ull, 0x708e0e6738deebc3ull, 0x0be0ce198fbd3737ull, 0x98d82d8595ffe139ull, 0xe0c278e40be429b5ull }}, {{ 0x212d9c8b0075eeb2ull, 0x8556a2767706f7e6ull, 0x658c900838b535a7ull, 0x76c80cff9d64282aull, 0xf871c737dbfecc3aull, 0xc798b8e876e9a117ull }}, {{ 0x4bc81d6e049b52f3ull, 0x356258a0a645aefdull, 0xf77da0523714188bull, 0xa3d081fc25e991a7ull, 0xb471c82e97f3fa48ull, 0xcbf73914a5204aefull }}, {{ 0xf5d1264c2e113d83ull, 0x15d776467eb8d5e4ull, 0xaae8433626c8f570ull, 0x662513d97b1fb08full, 0x0c71d1d1ef87c6d6ull, 0xf7a83ace7342ed5dull }}, {{ 0x9a2b7ef9ccac671aull, 0xda6a9ec0f3385af1ull, 0xad12a01d83d99660ull, 0xfd72c67ecf3ce59cull, 0x7c7232335b4dc45full, 0xac924c10809d45a2ull }}, {{ 0x05b2f5c1febc0707ull, 0x882a338980338d70ull, 0xc2ba4127267fdfc8ull, 0xe67bc0f41860f81eull, 0xdc75f6019109abbfull, 0xbdb6f8a50624b858ull }}, {{ 0x38fd9993f3584647ull, 0x51a6035f02038660ull, 0x9b468b8780febdd5ull, 0x00d58988f3c9b133ull, 0x9c9b9c0faa60b57full, 0x6925b6723d6f3378ull }}, {{ 0x39e7ffc78172becaull, 0x307c21b614233fc2ull, 0x10c1734b09f36a55ull, 0x08575f5985e0ec04ull, 0x1e14189ca7c716f6ull, 0x1b792076665802b6ull }}, {{ 0x430ffdcb0e7b73dfull, 0xe4d9511cc9607d96ull, 0xa78e80ee63822753ull, 0x5369b97f3ac93828ull, 0x2cc8f61e8dc6e59cull, 0x12bb449fff701b1dull }}, {{ 0x9e9fe9ee90d286b9ull, 0xf07d2b1fddc4e7deull, 0x8b91094fe3158946ull, 0x42213ef84bdc3196ull, 0xbfd99d3189c4f81bull, 0xbb50ae3ffa610f23ull }}, {{ 0x323f2351a8394337ull, 0x64e3af3ea9b10eb2ull, 0x73aa5d1eded75cc5ull, 0x954c75b2f699efe1ull, 0x7e8023ef61b1b110ull, 0x5126ce7fc7ca9765ull }}, {{ 0xf6776130923ca025ull, 0xf0e4d872a0ea92f5ull, 0x84a7a334b4699fb5ull, 0xd4fc98fda2035eceull, 0xf1016759d0f0eaa5ull, 0x2b8410fdcde9e9f6ull }}, {{ 0xa0a9cbe5b65e4172ull, 0x68f0747a4929bd9bull, 0x2e8c600f0c203d1bull, 0x51ddf9e85421b411ull, 0x6a0e098229692a7aull, 0xb328a9ea0b2323a5ull }}, {{ 0x46a1f6f91fae8e75ull, 0x19648cc6dba16814ull, 0xd17bc09679426312ull, 0x32abc313495108abull, 0x248c5f159e1ba8c7ull, 0xff96a3246f5f6476ull }}, {{ 0xc253a5bb3cd1908eull, 0xfded7fc4944e10caull, 0x2ed585e0bc97deb4ull, 0xfab59ec0dd2a56b6ull, 0x6d7bb6d82d1497c7ull, 0xfbe25f6c59b9ec9dull }}, {{ 0x97447950602fa588ull, 0xeb46fdadcb0ca7ebull, 0xd4573ac75deeb311ull, 0xcb183388a3a7631dull, 0x46d52471c2cdedcfull, 0xd6d7ba3b81433e26ull }}, {{ 0xe8acbd23c1dc774full, 0x30c5e8c9ee7e8f33ull, 0x4b684bc9ab52feb3ull, 0xeef203566489df2aull, 0xc4536c719c0b4a1dull, 0x646d46530ca06d7eull }}, {{ 0x16bf6365929ca915ull, 0xe7bb17e350f19807ull, 0xf212f5e0b13df2ffull, 0x5574215fed62b7a6ull, 0xab423c701870e52bull, 0xec44bf3e7e4446f3ull }}, {{ 0xe379e1f7ba1e9aceull, 0x0d4eeee1296ff046ull, 0x74bd9ac6ec6b7dffull, 0x56894dbf45db2c85ull, 0xb0965c60f468f3b1ull, 0x3aaf7870eeaac584ull }}, {{ 0xe2c2d3ad45320c0aull, 0x851554cb9e5f62c4ull, 0x8f680bc53c32ebf6ull, 0x615d0978ba8fbd36ull, 0xe5df9bc98c1984edull, 0x4adab46952abb72eull }}, {{ 0xdb9c44c4b3f47864ull, 0x32d54ff42fb9dbb0ull, 0x9a1075b459fd37a1ull, 0xcda25eb7499d6421ull, 0xfabc15df78ff3145ull, 0xec8b0c1d3ab527d4ull }}, {{ 0x941aafaf078cb3e8ull, 0xfc551f89dd4294e8ull, 0x04a4990b83e42c4bull, 0x0857b328e025e950ull, 0xcb58dabab9f7ecbaull, 0x3d6e79244b138e51ull }}, {{ 0xc90adcd64b7f0714ull, 0xdb533b62a499d115ull, 0x2e6dfa7326e9baf7ull, 0x536cff98c17b1d20ull, 0xf1788b4b43af3f44ull, 0x6650bb6aeec38f31ull }}, {{ 0xda6ca05ef2f646cbull, 0x914051da6e022ad9ull, 0xd04bc87f85214daeull, 0x4241fbf78ecf2341ull, 0x6eb570f0a4d878abull, 0xff27522d53a397f3ull }}, {{ 0x883e43b57d9ec3ebull, 0xac8332884c15ac82ull, 0x22f5d4fb334d08d1ull, 0x9693d7ab94176092ull, 0x531669667074b6b0ull, 0xf78935c54463ef82ull }}, {{ 0x526ea516e833a732ull, 0xbd1ff952f8d8bd19ull, 0x5d9a51d001025830ull, 0xe1c66cb3c8e9c5b5ull, 0x3ee01e00648f22e5ull, 0xab5c19b4abe75b17ull }}, {{ 0x385272e5120487f5ull, 0x633fbd3db87762fdull, 0xa80732200a1771e7ull, 0xd1c03f05d921b915ull, 0x74c12c03ed975cfaull, 0xb199010eb7098ee8ull }}, {{ 0x33387cf2b42d4f95ull, 0xe07d646934a9dde4ull, 0x9047f54064ea7309ull, 0x3182763a7b513ad8ull, 0x8f8bb82747e9a1ccull, 0xeffa0a93265f9514ull }}, {{ 0x0034e17b09c51bd1ull, 0xc4e5ec1c0ea2aaeaull, 0xa2cf9483f1287e62ull, 0xef189e48d12c4c75ull, 0x9b753188cf2051f9ull, 0x5fc469bf7fbbd2cdull }}, {{ 0x0210cece61b3162dull, 0xb0fb3918925aad24ull, 0x5c1bcd276b94efdbull, 0x56f62ed82bbafc98ull, 0x1293ef58174333c3ull, 0xbdac217afd563c08ull }}, {{ 0x14a8140fd0feddc3ull, 0xe9d03af5b78ac368ull, 0x9916038a33d15e94ull, 0x659dd471b54dddf3ull, 0xb9c75970e8a005a1ull, 0x68b94ecde55e5850ull }}, {{ 0xce90c89e29f4a99full, 0x22224d992b6ba210ull, 0xfadc2366062db1d1ull, 0xf82a4c71150aab83ull, 0x41c97e691640384dull, 0x173d140af5af7327ull }}, {{ 0x11a7d62da38ea038ull, 0x555707fbb23454a8ull, 0xcc9961fc3dc8f22bull, 0xb1a6fc6ad26ab327ull, 0x91def01ade82330bull, 0xe862c86d98da7f88ull }}, {{ 0xb08e5dc86392422cull, 0x55664fd4f60b4e90ull, 0xfdfdd3da69d975b1ull, 0xf085dc2c382aff8dull, 0xb2b5610cb115fe74ull, 0x13dbd447f888fb55ull }}, {{ 0xe58fa9d3e3b695b8ull, 0x55ff1e519c7111a6ull, 0xebea4688227e98edull, 0x653a99ba31adfb8bull, 0xfb15ca7eeadbf091ull, 0xc6964acfb559d158ull }}, {{ 0xf79ca246e521d934ull, 0x5bf72f301c6ab084ull, 0x3726c15158f1f945ull, 0xf44a0145f0cbd377ull, 0xced9e8f52c9765adull, 0xc1deec1d15822d79ull }}, {{ 0xac1e56c4f3527c0dull, 0x97a7d7e11c2ae531ull, 0x27838d2d7973bcb5ull, 0x8ae40cbb67f642a8ull, 0x14831993bde9f8cbull, 0x92b53922d715c6c2ull }}, {{ 0xb92f63b18138d880ull, 0xec8e6ecb19acf3f0ull, 0x8b2383c6be855f17ull, 0x6ce87f520f9e9a91ull, 0xcd1effc56b23b7f3ull, 0xbb143b5c66d9c394ull }}, {{ 0x3bd9e4ef0c387503ull, 0x3d9053ef00c18767ull, 0x6f6325c37135b6efull, 0x4114f9349c3209afull, 0x0335fdb62f652f82ull, 0x4eca519c0481a3d0ull }}, {{ 0x5682f1567a34921bull, 0x67a34756078f4a08ull, 0x59df79a26c192558ull, 0x8ad1bc0e19f460daull, 0x201be91dd9f3db16ull, 0x13e730182d106620ull }}, {{ 0x611d6d60c60db512ull, 0x0c60c95c4b98e453ull, 0x82bac05838fb7574ull, 0x6c31588d038bc887ull, 0x41171b2a83868ee1ull, 0xc707e0f1c2a3fd41ull }}, {{ 0xcb2645c7bc8912b2ull, 0x7bc7dd9af3f8eb41ull, 0x1b4b837239d29688ull, 0x39ed75822375d54bull, 0x8ae70fa9234194ceull, 0xc64ec9719a67e48cull }}, {{ 0xef7eb9cd5d5abaf1ull, 0xd5cea80d87b93091ull, 0x10f322764239e154ull, 0x43469715629a54efull, 0x6d069c9b608fd00eull, 0xbf13de70080eed7dull }}, {{ 0x5af34205a58b4d6dull, 0x5a1290874d3be5b3ull, 0xa97f589e9642cd50ull, 0xa0c1e6d5da075156ull, 0x42421e11c59e208eull, 0x76c6b060509546e6ull }}, {{ 0x8d80943877710645ull, 0x84b9a5490456f901ull, 0x9ef97631de9c0523ull, 0x4793045a84492d62ull, 0x96952cb1b82d4592ull, 0xa3c2e3c325d4c4feull }}, {{ 0x8705ca34aa6a3eb2ull, 0x2f4074da2b65ba0full, 0x35be9df2b2183363ull, 0xcbbe2b892adbc5daull, 0xe1d3bef131c4b7b6ull, 0x659ce59f7a4fb1f1ull }}, {{ 0x4639e60ea82672f2ull, 0xd8849085b1f9449bull, 0x19722b7af4f201dfull, 0xf56db35bac95ba86ull, 0xd245756bf1af2d23ull, 0xf820f83ac71cf372ull }}, {{ 0xbe42fc9291807d75ull, 0x752da538f3bcae10ull, 0xfe75b2cd917412beull, 0x96490194bdd9493cull, 0x36b6963770d7c367ull, 0xb149b24bc721827cull }}, {{ 0x6e9dddb9af04e692ull, 0x93c87439855ecca7ull, 0xf098fc07ae88bb70ull, 0xdeda0fcf6a7cdc61ull, 0x2321de2a686da20bull, 0xece0f6f5c74f18daull }}, {{ 0x522aa940d63101b0ull, 0xc5d48a3f35b3fe8aull, 0x65f9d84cd1575265ull, 0xb4849e1a28e09bd3ull, 0x5f52ada814485476ull, 0x40c9a599c916f885ull }}, {{ 0x35aa9c885dea10dcull, 0xba4d66781907f167ull, 0xfbc273002d6937f9ull, 0x0d2e2d0598c61641ull, 0xb93ac890cad34ca3ull, 0x87e07801dae5b535ull }}, {{ 0x18aa1d53ab24a895ull, 0x470600b0fa4f6e08ull, 0xd5987e01c61c2fc1ull, 0x83cdc237f7bcde93ull, 0x3c4bd5a7ec40fe5eull, 0x4ec4b0128cf91419ull }}, {{ 0xf6a52544af6e95d1ull, 0xc63c06e9c71a4c50ull, 0x57f4ec11bd19dd8cull, 0x2609962fad60b1c6ull, 0x5af6588f3a89efb1ull, 0x13aee0b981bac8fcull }}, {{ 0xa27374aeda51da2full, 0xbe584521c706fb29ull, 0x6f9138b16302a77full, 0x7c5fdddcc5c6f1bfull, 0x8d9f759849635cebull, 0xc4d4c73f114bd9dbull }}, {{ 0x58828ed4873285d6ull, 0x6f72b351c645cfa0ull, 0x5bac36edde1a8afdull, 0xdbbeaa9fb9c5717aull, 0x883a97f2dde1a132ull, 0xb04fc876acf68293ull }}, {{ 0x7519944d47f93a5bull, 0x5a7b0131beba1c43ull, 0x94ba254aad096de6ull, 0x9572aa3d41b66ec7ull, 0x5249ef7caad04bfcull, 0xe31dd4a2c1a119c3ull }}, {{ 0x92ffcb04cfbc4792ull, 0x88ce0bf173451aa2ull, 0xcf4574eac25e4affull, 0xd67aa664912053cbull, 0x36e35adeac22f7ddull, 0xdf2a4e5b904b01a1ull }}, {{ 0xbdfdee301d5acbb8ull, 0x580c776e80b30a59ull, 0x18b6912b97aeedfbull, 0x60ca7fedab4345f6ull, 0x24e18cb2b95daeaaull, 0xb7a70f93a2ee104cull }}, {{ 0x6beb4de1258bf533ull, 0x707caa5106fe6781ull, 0xf721abb3ecd54bd1ull, 0xc7e8ff48b0a0bb9cull, 0x70cf7efb3da8d2a7ull, 0x2c869bc45d4ca2f9ull }}, {{ 0x37310acb77779401ull, 0x64dea72a45f00b0eull, 0xa750b5074054f62eull, 0xcf19f8d6e6475421ull, 0x681af5d068983a8dull, 0xbd4215aba4fe5dbeull }}, {{ 0x27ea6bf2aaabc807ull, 0xf0b287a6bb606e8eull, 0x8927124883519dcfull, 0x1703b864fec94950ull, 0x110d9a2415f2498aull, 0x6494d8b471efa970ull }}, {{ 0x8f28377aaab5d043ull, 0x66f94c8351c4518dull, 0x5b86b6d521302a1full, 0xe62533f1f3dcdd25ull, 0xaa880568db76df64ull, 0xedd0770c735c9e60ull }}, {{ 0x97922acaab1a229aull, 0x05bcfd2131ab2f87ull, 0x934324534be1a53aull, 0xfd74077386a0a375ull, 0xa950361892a4b9f0ull, 0x4a24a67c819e2fc6ull }}, {{ 0xebb5abeaaf055a04ull, 0x3961e34bf0afdb4bull, 0xc09f6b40f6d07444ull, 0xe6884a8342466297ull, 0x9d221cf5ba6f4369ull, 0xe56e80dd102dddc2ull }}, {{ 0x3518b72ad635842bull, 0x3dd2e0f766de90f7ull, 0x863a3089a4248aaaull, 0x0152e92096bfd9edull, 0x235521994858a223ull, 0xf65108a2a1caa99aull }}, {{ 0x12f727ac5e1729adull, 0x6a3cc9aa04b1a9a8ull, 0x3e45e560696d6aa6ull, 0x0d3d1b45e37e8347ull, 0x61534ffcd376555eull, 0x9f2a565a51eaa005ull }}, {{ 0xbda78cbbace7a0c5ull, 0x265fe0a42ef0a090ull, 0x6ebaf5c41e462a80ull, 0x846310bae2f120c8ull, 0xcd411fe0429f55acull, 0x37a75f87332a4035ull }}, {{ 0x688b7f54c10c47b1ull, 0x7fbec669d56645a7ull, 0x534d99a92ebda901ull, 0x2bdea74cdd6b47d4ull, 0x048b3ec29a3958bdull, 0x2c89bb47ffa6821aull }}, {{ 0x1572f94f8a7acce9ull, 0xfd73c02255feb88aull, 0x4108009bd3689a0eull, 0xb6b28900a630ce4bull, 0x2d70739a063d7763ull, 0xbd6150cffc811504ull }}, {{ 0xd67dbd1b68cc0115ull, 0xe68581575bf33564ull, 0x8a50061642160495ull, 0x22f95a067de80ef0ull, 0xc66484043e66a9e5ull, 0x65cd281fdd0ad229ull }}, {{ 0x60e9631217f80ad6ull, 0x01370d69978015f0ull, 0x67203cde94dc2ddbull, 0x5dbd8440eb109565ull, 0xbfed282a7002a2f3ull, 0xfa03913ea26c35a1ull }}, {{ 0xc91ddeb4efb06c5full, 0x0c26861feb00db63ull, 0x074260b1d099ca8eull, 0xa9672a892ea5d5f6ull, 0x7f4391a8601a5d81ull, 0xc423ac72583a1851ull }}, {{ 0xdb2ab3115ce43bb6ull, 0x79813d3f2e0891e5ull, 0x4897c6f22601e98cull, 0x9e07a95bd27a5b9cull, 0xf8a3b093c107a710ull, 0xa964bc777244f32eull }}, {{ 0x8faafeada0ea551eull, 0xbf0c6477cc55b2faull, 0xd5edc5757c131f7cull, 0x2c4c9d9638c7941aull, 0xb664e5c58a4c86a6ull, 0x9def5caa76b17fd5ull }}, {{ 0x9cadf2c84927532full, 0x767becadfb58fdc9ull, 0x5b49b696d8bf3adfull, 0xbafe27de37cbc90cull, 0x1ff0f9b766fd427dull, 0x2b599ea8a2eefe59ull }}, {{ 0x1ecb7bd2db893fd8ull, 0xa0d73ecbd179e9e0ull, 0x90e121e477784cbaull, 0x4ded8eae2df5da7bull, 0x3f69c12a05e498e9ull, 0xb18032965d55ef7bull }}, {{ 0x33f2d63c935c7e71ull, 0x486873f62ec322c1ull, 0xa8cb52ecaab2ff4aull, 0x0b4792cdcb9a88d3ull, 0x7a218ba43aedf91dull, 0xef01f9dfa55b5ad0ull }}, {{ 0x077c5e5dc19cf066ull, 0xd414879dd39f5b8cull, 0x97f13d3eaafdf8e6ull, 0x70cbbc09f4095844ull, 0xc54f746a4d4bbb22ull, 0x5613c2bc75918c24ull }}, {{ 0x4adbafa9902163ffull, 0x48cd4c2a44399378ull, 0xef6c6472adebb904ull, 0x67f55863885d72adull, 0xb51a8c2704f54f58ull, 0x5cc59b5c97af796full }}, {{ 0xec94dc9fa14de7f5ull, 0xd804f9a6aa3fc2b2ull, 0x5a3bec7acb353a2aull, 0x0f9573e353a67acbull, 0x1309798631951974ull, 0x9fb8119decdabe5dull }}, {{ 0x3dd09e3c4d0b0f96ull, 0x7031c082a67d9afdull, 0x86573ccbf01445acull, 0x9bd686e14480cbf1ull, 0xbe5ebf3defd2fe88ull, 0x3d30b02b408b6fa2ull }}, {{ 0x6a262e5b026e9bddull, 0x61f1851a80e80de4ull, 0x3f685ff760cab8bcull, 0x166144ccad07f76full, 0x6fb3786b5e3df156ull, 0x63e6e1b085725c5bull }}, {{ 0x257dcf8e185216a7ull, 0xd36f330909108aecull, 0x7a13bfa9c7eb375bull, 0xdfccaffec24faa58ull, 0x5d02b431ae6b6d5cull, 0xe704d0e536779b92ull }}, {{ 0x76ea1b8cf334e282ull, 0x4257fe5a5aa56d39ull, 0xc4c57ca1cf302996ull, 0xbdfedff3971ca774ull, 0xa21b09f0d03245a0ull, 0x063028f420ac13b7ull }}, {{ 0xa52513818010d916ull, 0x976fef878a76443eull, 0xafb6de5217e19fdeull, 0x6bf4bf83e71e8a8full, 0x550e636821f6b847ull, 0x3de1998946b8c52cull }}, {{ 0x7372c30f00a87adfull, 0xea5f5b4b689eaa72ull, 0xdd24af34eed03eb1ull, 0x378f7b270731699cull, 0x528fe21153a332caull, 0x6acfff5cc337b3bbull }}, {{ 0x827b9e960694ccb7ull, 0x27b990f21632a878ull, 0xa36ed811542272f3ull, 0x2b9acf8647ee2020ull, 0x399ed4ad445ffbe6ull, 0x2c1ff99fa02d0551ull }}, {{ 0x18d431dc41cfff28ull, 0x8d3fa974ddfa94b5ull, 0x625470ad49587d7full, 0xb40c1b3ecf4d4146ull, 0x40344ec4abbfd6fdull, 0xb93fc03c41c2352cull }}, {{ 0xf849f29a921ff793ull, 0x847c9e90abc9cf12ull, 0xd74c66c4dd74e6fbull, 0x0879107419048cbfull, 0x820b13aeb57e65e9ull, 0x3c7d825a919613baull }}, {{ 0xb2e37a09b53fabbdull, 0x2cde31a6b5e216bdull, 0x68fc03b0a69105d3ull, 0x54baa488fa2d7f7eull, 0x146ec4d316effb1aull, 0x5ce71789afdcc549ull }}, {{ 0xfce2c461147cb564ull, 0xc0adf0831ad4e368ull, 0x19d824e681aa3a3full, 0x4f4a6d59c5c6faf0ull, 0xcc53b03ee55fcf07ull, 0xa106eb60de9fb4daull }}, {{ 0xe0dbabcaccdf15e4ull, 0x86cb651f0c50e219ull, 0x0271710110a6467dull, 0x18e84581b9c5cd61ull, 0xfb44e274f5be1649ull, 0x4a4531c8b23d108bull }}, {{ 0xc894b5ec00b6dae6ull, 0x43f1f3367b28d502ull, 0x186e6a0aa67ec0e7ull, 0xf912b71141ba05caull, 0xd0b0d891996cdedaull, 0xe6b3f1d6f662a577ull }}, {{ 0xd5cf1b3807248cfbull, 0xa7738020cf98521bull, 0xf450246a80f38908ull, 0xbabb26ac914439e4ull, 0x26e875affe40b48dull, 0x030772659fda76aeull }}, {{ 0x5a171030476d81d0ull, 0x8a8301481bf33516ull, 0x8b216c2909835a56ull, 0x4b4f82bdacaa42f1ull, 0x851498dfee870d89ull, 0x1e4a77f83e88a2cdull }}, {{ 0x84e6a1e2ca471222ull, 0x691e0cd1178012dfull, 0x6f4e399a5f218761ull, 0xf11b1b68bea69d6full, 0x32cdf8bf5146875cull, 0x2ee8afb271565c07ull }}, {{ 0x310252dbe6c6b555ull, 0x1b2c802aeb00bcbbull, 0x590e4007b74f49ceull, 0x6b0f12177282265aull, 0xfc0bb7792cc149a1ull, 0xd516dcf86d5f9847ull }}, {{ 0xea173c9703c31550ull, 0x0fbd01ad2e075f4full, 0x7a8e804d2918e20dull, 0x2e96b4ea79157f87ull, 0xd8752abbbf8ce04eull, 0x52e4a1b445bbf2cfull }}, {{ 0x24e85de6259ed51cull, 0x9d6210c3cc49b91full, 0xc99103039af8d482ull, 0xd1e31128bad6fb4aull, 0x7493ab557b80c30dull, 0x3cee510ab9577c1eull }}, {{ 0x7113aafd78345317ull, 0x25d4a7a5fae13b37ull, 0xdfaa1e240db84d1aull, 0x32deab974c65d0ebull, 0x8dc4b156d3079e8aull, 0x614f2a6b3d6ad930ull }}, {{ 0x6ac4ade6b20b3ee3ull, 0x7a4e8c7bcccc502aull, 0xbca52d6889330305ull, 0xfcb2b3e8fbfa2936ull, 0x89aeed643e4c3165ull, 0xcd17a830662c7be5ull }}, {{ 0x2baecb02f47074dbull, 0xc7117cd5fffb21a8ull, 0x5e73c6155bfe1e36ull, 0xdefb0719d7c59c23ull, 0x60d545ea6ef9edfbull, 0x02ec91e3fdbcd6f7ull }}, {{ 0xb4d3ee1d8c64908bull, 0xc6aee05bffcf5091ull, 0xb085bcd597ed2e23ull, 0xb5ce47026db81961ull, 0xc854bb2855c34bd6ull, 0x1d3db2e7e96065a9ull }}, {{ 0x10474d277beda56full, 0xc2d4c397fe1925b1ull, 0xe5396057ef43cd65ull, 0x1a0ec6184930fdd0ull, 0xd34f4f9359a0f663ull, 0x2468fd0f1dc3f8a1ull }}, {{ 0xa2c9038ad7487659ull, 0x9c4fa3efecfb78eaull, 0xf43dc36f58a605f9ull, 0x0493bcf2dbe9ea28ull, 0x41191bc180499fdfull, 0x6c19e29729a7b652ull }}, {{ 0x5bda236c68d49f7bull, 0x1b1c675f41d2b92aull, 0x8a69a259767c3bc0ull, 0x2dc5617c97232599ull, 0x8afb158f02e03eb6ull, 0x3902d9e7a08d1f36ull }}, {{ 0x9685623c184e3ad3ull, 0x0f1c09b8923b3ba7ull, 0x6820577ea0da5581ull, 0xc9b5cedde75f77ffull, 0x6dced7961cc2731dull, 0x3a1c830c45833821ull }}, {{ 0xe135d658f30e4c3dull, 0x97186135b650548bull, 0x11436af24887570aull, 0xe11a14ab09baaffaull, 0x4a146bdd1f987f29ull, 0x451d1e7ab720314eull }}, {{ 0xcc1a5f797e8efa60ull, 0xe6f3cc191f234d76ull, 0xaca22d76d5496669ull, 0xcb04ceae614adfc4ull, 0xe4cc36a33bf4f7a2ull, 0xb32330cb2741ed0eull }}, {{ 0xf907babef195c7c1ull, 0x0585f8fb376106a3ull, 0xbe55c6a454de0023ull, 0xee3012cfccecbdaeull, 0xeffa22605791ac5bull, 0xff5fe7ef88934294ull }}, {{ 0xba4d4b756fd9cd89ull, 0x373bb9d029ca4267ull, 0x6f59c26b50ac015eull, 0x4de0bc1e013f68d3ull, 0x5fc557c36bb0bb97ull, 0xf9bf0f5b55c099d1ull }}, {{ 0x4704f2965e82075bull, 0x28554221a1e6980dull, 0x5981983126b80daeull, 0x0ac7592c0c7a1842ull, 0xbdb56da234e753e9ull, 0xc17699915986022dull }}, {{ 0xc63179dfb1144991ull, 0x935495505301f084ull, 0x7f0ff1eb833088cdull, 0x6bc97bb87cc4f297ull, 0x691648561109471aull, 0x8ea1ffad7f3c15c9ull }}, {{ 0xbdeec2bceacadfa9ull, 0xc14dd5233e13652full, 0xf69f73331fe55807ull, 0x35ded534dfb179eaull, 0x1aded35caa5cc708ull, 0x9253fcc6f858d9deull }}, {{ 0x6b539b612becbc9aull, 0x8d0a53606cc1f3ddull, 0xa23a7fff3ef5704dull, 0x1ab45410bceec32dull, 0x0cb4419ea79fc652ull, 0xb747dfc5b37882adull }}, {{ 0x314411cbb73f5e03ull, 0x826741c43f9386a6ull, 0x5648fff875966307ull, 0x0b0b48a761539fc8ull, 0x7f0a90328c3dbf35ull, 0x28cebdb902b51ac2ull }}, {{ 0xeca8b1f52879ac1aull, 0x180891aa7bc3427dull, 0x5ed9ffb497dfde4bull, 0x6e70d689cd443dd3ull, 0xf669a1f97a697812ull, 0x9813693a1b130b98ull }}, {{ 0x3e96f39394c0b904ull, 0xf055b0a8d5a098ebull, 0xb483fd0deebeaeeeull, 0x5068616204aa6a41ull, 0xa02053bec81eb0b8ull, 0xf0c21c450ebe73f9ull }}, {{ 0x71e583c3cf873a2bull, 0x6358e6985845f930ull, 0x0d27e28b5372d555ull, 0x2413cdd42ea82691ull, 0x41434573d132e733ull, 0x67951ab2937087c0ull }}, {{ 0x72f725a61b4845b1ull, 0xe17901f372bbbbe4ull, 0x838ed971427c5555ull, 0x68c60a49d29181aaull, 0x8ca0b6862bfd07ffull, 0x0bd30af9c2654d82ull }}, {{ 0x7da7787d10d2b8e6ull, 0xceba13827b5556ecull, 0x23947e6c98db555aull, 0x17bc66e239af10a9ull, 0x7e47213db7e24ffaull, 0x763e6dc197f50719ull }}, {{ 0xe88ab4e2a83b38fcull, 0x1344c318d155653cull, 0x63ccf03df891558cull, 0xed5c04d640d6a69bull, 0xeec74c692ed71fc4ull, 0x9e70498fef9246feull }}, {{ 0x156b10da925039dbull, 0xc0af9ef82d55f461ull, 0xe601626bb5ad5778ull, 0x4598305e88628211ull, 0x53c8fc1bd4673db1ull, 0x3062df9f5bb6c5f5ull }}, {{ 0xd62ea889b722428dull, 0x86dc35b1c55b8bcaull, 0xfc0dd83518c56ab7ull, 0xb7f1e3b153d914b2ull, 0x45d9d9164c0868ecull, 0xe3dcbc399523bb95ull }}, {{ 0x5dd2956127569986ull, 0x449a18f1b59375ecull, 0xd88a7212f7b62b2bull, 0x2f72e4ed467acefdull, 0xba827adef854193full, 0xe69f5a3fd36553d4ull }}, {{ 0xaa39d5cb8961ff3cull, 0xae04f97117c29b3bull, 0x756874bdad1dafb0ull, 0xda7cf144c0cc15eaull, 0x4918ccb5b348fc77ull, 0x0239867e41f5464full }}, {{ 0xa64259f35dd3f85bull, 0xcc31be6aed9a1054ull, 0x96148f68c328dce6ull, 0x88e16caf87f8db28ull, 0xdaf7ff1900d9dcaeull, 0x163f40ee9394bf18ull }}, {{ 0x7e978381aa47b391ull, 0xf9f1702d4804a34eull, 0xdccd9a179f98a103ull, 0x58ce3edb4fb88f95ull, 0x8daff6fa08829ed1ull, 0xde788951c3cf76f8ull }}, {{ 0xf1eb2310a6cd03a9ull, 0xc36e61c4d02e6110ull, 0xa00804ec3bf64a27ull, 0x780e74911d359bdaull, 0x88dfa5c4551a342dull, 0xb0b55d31a61aa5b5ull }}, {{ 0x732f5ea68402249bull, 0xa24fd1b021cfcaa9ull, 0x4050313a579ee58dull, 0xb0908dab2418168aull, 0x58bc79ab530609c6ull, 0xe715a3f07d0a7917ull }}, {{ 0x7fd9b28128156e09ull, 0x571e30e1521dea9eull, 0x8321ec476c34f788ull, 0xe5a588af68f0e166ull, 0x775cc0b13e3c61c2ull, 0x06d86764e268bae9ull }}, {{ 0xfe80f90b90d64c5full, 0x672de8cd352b2a30ull, 0x1f533aca3a11ab53ull, 0xf87756da1968ce01ull, 0xa99f86ec6e5bd19cull, 0x447409f0d8174d1eull }}, {{ 0xf109ba73a85efbb2ull, 0x07cb180413afa5e9ull, 0x39404be644b0b142ull, 0xb4a96484fe180c0bull, 0xa03b453c4f963021ull, 0xac88636870e90332ull }}, {{ 0x6a61488493b5d4f3ull, 0x4deef028c4dc7b23ull, 0x3c82f6feaee6ec94ull, 0x0e9ded31ecf07870ull, 0x4250b45b1bdde151ull, 0xbd53e214691a1ffaull }}, {{ 0x27ccd52dc51a517eull, 0x0b556197b09ccf62ull, 0x5d1da5f2d5053dcbull, 0x922b43f34164b462ull, 0x97270b8f16aacd2aull, 0x6546d4cc1b053fc6ull }}, {{ 0x8e0053c9b3072eefull, 0x7155cfece62019d5ull, 0xa3287b7c523469eeull, 0xb5b0a7808def0bd7ull, 0xe7867396e2ac03a9ull, 0xf4c44ff90e347dc1ull }}, {{ 0x8c0345e0fe47d558ull, 0x6d5a1f40fd410257ull, 0x5f94d2db360c2350ull, 0x18e68b058b56766cull, 0x0b4083e4dab824a1ull, 0x8fab1fba8e0ce993ull }}, {{ 0x7820bac9eece5572ull, 0x45853889e48a176bull, 0xbbd03c901c796124ull, 0xf9016e377160a03bull, 0x708526f08b316e4aull, 0x9caf3d498c811fbeull }}, {{ 0xb1474be3540f5678ull, 0xb7343562ed64ea32ull, 0x56225da11cbdcb6aull, 0xba0e4e2a6dc64255ull, 0x653385656fee4eedull, 0x1ed864df7d0b3d70ull }}, {{ 0xecc8f6e1489960b1ull, 0x280a15dd45f125faull, 0x5d57a84b1f69f22bull, 0x448f0da849be9755ull, 0xf40335f65f4f1549ull, 0x3473f0bae2706663ull }}, {{ 0x3fd9a4ccd5fdc6e9ull, 0x9064daa4bb6b7bcdull, 0xa56c92ef3a2375afull, 0xad968892e171e955ull, 0x88201b9fb916d4dcull, 0x0c87674cd863ffe7ull }}, {{ 0x7e8070005be9c51eull, 0xa3f08a6f5232d604ull, 0x763dbd58456298dbull, 0xc7e155bcce731d58ull, 0x5141143d3ae4509eull, 0x7d4a090073e7ff0bull }}, {{ 0xf10460039721b32bull, 0x6765685935fc5c2cull, 0x9e696572b5d9f894ull, 0xcecd5960107f2574ull, 0x2c8aca644ceb2633ull, 0xe4e45a04870ff671ull }}, {{ 0x6a2bc023e750ffaeull, 0x09f6137c1bdb99c1ull, 0x301df67b1a83b5ccull, 0x14057dc0a4f7768eull, 0xbd6be7eb012f7e06ull, 0xf0eb842d469fa06bull }}, {{ 0x25b581670929fcd0ull, 0x639cc2d91694018eull, 0xe12ba0cf092519f8ull, 0xc836e98671aaa18dull, 0x66370f2e0bdaec3cull, 0x693329c4c23c4435ull }}, {{ 0x79170e065ba3e01cull, 0xe41f9c7ae1c80f8dull, 0xcbb448165b7303b3ull, 0xd2251f4070aa4f8aull, 0xfe2697cc768d3a5full, 0x1bffa1af965aaa15ull }}, {{ 0xbae68c3f9466c11cull, 0xe93c1cccd1d09b86ull, 0xf50ad0df927e2506ull, 0x3573388466a71b6bull, 0xed81edfca18447beull, 0x17fc50dbdf8aa4dbull }}, {{ 0x4d017a7bcc038b1aull, 0x1c59200032261343ull, 0x926c28bbb8ed7245ull, 0x1680352c02871237ull, 0x47134bde4f2acd6eull, 0xefdb2896bb6a7097ull }}, {{ 0x020ec8d5f8236f04ull, 0x1b7b4001f57cc0a1ull, 0xb8399755394676b3ull, 0xe10213b81946b62bull, 0xc6c0f6af17ac064cull, 0x5e8f95e3522865e8ull }}, {{ 0x1493d85bb1625625ull, 0x12d0801396df864aull, 0x323fe9543cc0a2ffull, 0xca14c530fcc31db5ull, 0xc389a2d6ecb83f00ull, 0xb19bdae13593fb17ull }}, {{ 0xcdc67394edd75d6eull, 0xbc2500c3e4bb3ee4ull, 0xf67f1d4a5f865df6ull, 0xe4cfb3e9df9f2913ull, 0xa3605c653f327607ull, 0xf0168ccc17c7ceedull }}, {{ 0x09c083d14a69a648ull, 0x597207a6ef5074f0ull, 0xa0f724e7bb3faba3ull, 0xf01d0722bc379ac7ull, 0x61c39bf477f89c4eull, 0x60e17ff8edce1548ull }}, {{ 0x6185262ce8207ed5ull, 0x7e744c8559249160ull, 0x49a7710d507cb461ull, 0x6122475b5a2c0bccull, 0xd1a4178cafb61b15ull, 0xc8ceffb94a0cd4d3ull }}, {{ 0xcf337dc11144f450ull, 0xf08afd357b6dadc3ull, 0xe08a6a8524df0bceull, 0xcb56c99185b875faull, 0x3068eb7edd1d0ed5ull, 0xd815fd3ce4805046ull }}, {{ 0x1802e98aacb18b1full, 0x656de416d248c9a6ull, 0xc568293370b67615ull, 0xf163dfaf39349bccull, 0xe41932f4a3229459ull, 0x70dbe460ed0322bdull }}, {{ 0xf01d1f6abeef6f3aull, 0xf64ae8e436d7e07cull, 0xb6119c0267209cd5ull, 0x6de6bcd83c0e15ffull, 0xe8fbfd8e5f59cb83ull, 0x6896ebc9421f5b6aull }}, {{ 0x61233a2b755a5840ull, 0x9eed18ea246ec4e1ull, 0x1cb018180746205bull, 0x4b036072588cdbfdull, 0x19d7e78fb981f322ull, 0x15e535dc9539922dull }}, {{ 0xcb6045b29587727bull, 0x3542f9256c53b0cdull, 0x1ee0f0f048bd4394ull, 0xee21c477758097e3ull, 0x026f0b9d3f137f56ull, 0xdaf41a9dd43fb5c3ull }}, {{ 0xf1c2b8f9d74a78d1ull, 0x149dbb763b44e809ull, 0x34c96962d764a3caull, 0x4d51acaa9705eedfull, 0x1856742476c2f965ull, 0x8d890a2a4a7d199eull }}, {{ 0x719b39c268e8b82cull, 0xce29529e50b11063ull, 0x0fde1ddc69ee65e4ull, 0x0530bea9e63b54b8ull, 0xf360896ca39dbdf5ull, 0x875a65a6e8e3002cull }}, {{ 0x70104198191731b3ull, 0x0d9d3a2f26eaa3e2ull, 0x9ead2a9c234ffaf0ull, 0x33e772a2fe514f30ull, 0x81c55e3e64296b92ull, 0x4987f88518de01c1ull }}, {{ 0x60a28ff0fae7f100ull, 0x882445d7852a66d8ull, 0x32c3aa19611fcd60ull, 0x070a7a5def2d17e6ull, 0x11b5ae6fe99e33b6ull, 0xdf4fb532f8ac118full }}, {{ 0xc6599f69cd0f69feull, 0x516aba6b33a80473ull, 0xfba4a4fdcb3e05c5ull, 0x4668c7ab57c2eefdull, 0xb118d05f202e051cull, 0xb91d13fdb6b8af96ull }}, {{ 0xbf803a22029a23e9ull, 0x2e2b483004902c85ull, 0xd46e71e9f06c39b5ull, 0xc017ccb16d9d55ebull, 0xeaf823b741cc331aull, 0x3b22c7e92336dbe2ull }}, {{ 0x7b0245541a056718ull, 0xcdb0d1e02da1bd39ull, 0x4c507323643a4113ull, 0x80edfeee48255b36ull, 0x2db1652891f9ff0bull, 0x4f5bcf1b602496ddull }}, {{ 0xce16b549043606eeull, 0x08e832c1c851643eull, 0xfb247f61ea468ac6ull, 0x094bf54ed175901eull, 0xc8edf395b3c3f673ull, 0x19961711c16de4a3ull }}, {{ 0x0ce314da2a1c454dull, 0x5911fb91d32dea74ull, 0xcf6cf9d326c16bbcull, 0x5cf795142e97a135ull, 0xd94b83d905a7a07eull, 0xffdce6b18e4aee65ull }}, {{ 0x80ded085a51ab505ull, 0x7ab3d3b23fcb2888ull, 0x1a41c23f838e355bull, 0xa1abd2c9d1ec4c1aull, 0x7cf3267a388c44efull, 0xfea102ef8eed4ffaull }}, {{ 0x08b42538730b1233ull, 0xcb0644f67def9555ull, 0x0691967b238e1592ull, 0x50b63be2333af905ull, 0xe17f80c6357ab15cull, 0xf24a1d5b95451fc8ull }}, {{ 0x570974347e6eb601ull, 0xee3eb1a0eb5bd552ull, 0x41afe0cf638cd7bbull, 0x271e56d6004dba32ull, 0xcefb07be16caed9bull, 0x76e52593d4b33dd8ull }}, {{ 0x665e8a0cf0531c0eull, 0x4e72f04931965537ull, 0x90dec819e3806d57ull, 0x872f645c030945f6ull, 0x15ce4d6ce3ed480full, 0xa4f377c64f006a78ull }}, {{ 0xffb16481633f1891ull, 0x107d62dbefdf5429ull, 0xa8b3d102e3044569ull, 0x47d9eb981e5cbba1ull, 0xda0f0640e744d09bull, 0x7182adbf160428b0ull }}, {{ 0xfceded0de076f5aaull, 0xa4e5dc975eb949a3ull, 0x97062a1cde2ab61aull, 0xce8333f12f9f5450ull, 0x84963e8908b02610ull, 0x6f1ac976dc2996e8ull }}, {{ 0xe14b428ac4a598a3ull, 0x70fa9de9b33ce067ull, 0xe63da520adab1d0aull, 0x1120076bdc394b25ull, 0x2dde715a56e17ca8ull, 0x570bdea4999fe515ull }}, {{ 0xccf0996bae77f65bull, 0x69ca2b210060c40eull, 0xfe687346c8af2268ull, 0xab404a369a3cef7aull, 0xcab06d8764cede90ull, 0x6676b26e003ef2d3ull }}, {{ 0x0165fe34d0af9f8bull, 0x21e5af4a03c7a894ull, 0xf01480c3d6d75814ull, 0xb082e62206615acdull, 0xeae44749f014b1a6ull, 0x00a2f84c02757c45ull }}, {{ 0x0dfbee1026dc3b6full, 0x52f8d8e425cc95c8ull, 0x60cd07a6646970c9ull, 0xe51cfd543fcd8c0bull, 0x2ceac8e360cef082ull, 0x065db2f81896dabbull }}, {{ 0x8bd74ca1849a5255ull, 0x3db878e979fdd9d0ull, 0xc8024c7fec1e67ddull, 0xf321e54a7e077871ull, 0xc12bd8e1c815651cull, 0x3fa8fdb0f5e48b4full }}, {{ 0x7668fe4f2e07374full, 0x6934b91ec3ea8225ull, 0xd016fcff39300ea4ull, 0x7f52f4e8ec4ab471ull, 0x8bb678d1d0d5f321ull, 0x7c99e8e99aed711dull }}, {{ 0xa019ef17cc482914ull, 0x1c0f3b33a7291576ull, 0x20e5e1f83be0926cull, 0xf93d91193aeb0c72ull, 0x7520b832285b7f4eull, 0xde0319200d466b27ull }}, {{ 0x410356edfad19ac4ull, 0x18985004879ad6a2ull, 0x48fad3b256c5b839ull, 0xbc67aafc4d2e7c75ull, 0x934731f59392f915ull, 0xac1efb4084c02f8aull }}, {{ 0x8a21654bcc300ba7ull, 0xf5f3202d4c0c6256ull, 0xd9cc44f763b9323aull, 0x5c0caddb03d0dc94ull, 0xc0c7f397c3bdbad9ull, 0xb935d0852f81db69ull }}, {{ 0x654df4f5f9e07487ull, 0x9b7f41c4f87bd761ull, 0x81fab1a9e53bf64dull, 0x987eca8e26289dd0ull, 0x87cf83eda5694c7dull, 0x3c1a2533db129221ull }}, {{ 0xf50b919bc2c48d4aull, 0x12f891b1b4d669cdull, 0x13caf0a2f4579f08ull, 0xf4f3e98d7d962a25ull, 0x4e1b2748761cfce7ull, 0x590574068eb9b54full }}, {{ 0x9273b0159bad84e7ull, 0xbdb5b0f11060220bull, 0xc5ed665d8b6c3650ull, 0x91871f86e7dda572ull, 0x0d0f88d49d21e10full, 0x7a36884193411519ull }}, {{ 0xb884e0d814c7310aull, 0x6918e96aa3c15473ull, 0xbb45ffa7723a1f27ull, 0xaf473b450ea8767bull, 0x829b584e2352ca9bull, 0xc621528fc08ad2faull }}, {{ 0x3530c870cfc7ea66ull, 0x1af91e2a658d4c85ull, 0x50bbfc8a7645378aull, 0xd8c850b29294a0d5ull, 0x1a11730d613bea14ull, 0xbd4d399d856c3dc9ull }}, {{ 0x13e7d4681dcf2801ull, 0x0dbb2da7f784fd34ull, 0x2757dd689eb42b65ull, 0x77d326f9b9ce4855ull, 0x04ae7e85cc5724d0ull, 0x65044027363a69dbull }}, {{ 0xc70e4c112a179007ull, 0x894fc88fab31e408ull, 0x896ea6163309b1f2ull, 0xae3f85c1420ed353ull, 0x2ed0f139fb677024ull, 0xf22a81881e48228eull }}, {{ 0xc68ef8aba4eba048ull, 0x5d1dd59caff2e857ull, 0x5e527cddfe60f379ull, 0xce7b398c94944143ull, 0xd4296c43d20a616eull, 0x75a90f512ed1598dull }}, {{ 0xc195b6b4713442ceull, 0xa32a581edf7d136dull, 0xaf38e0abefc982bdull, 0x10d03f7dcdca8ca1ull, 0x499e3aa63467ce54ull, 0x989a992bd42d7f8aull }}, {{ 0x8fd9230c6c0a9c0cull, 0x5fa77134bae2c249ull, 0xd838c6b75ddf1b68ull, 0xa8227aea09e97e50ull, 0xe02e4a7e0c0e0f48ull, 0xf609fbb649c6fb66ull }}, {{ 0x9e7b5e7c386a1875ull, 0xbc8a6c0f4cdb96dfull, 0x7237c329aab71213ull, 0x9158cd24631eef28ull, 0xc1cee8ec788c98d6ull, 0x9c63d51ee1c5d204ull }}, {{ 0x30d1b0da3424f497ull, 0x5d6838990093e4bcull, 0x762d9fa0ab26b4c5ull, 0xad78036bdf355794ull, 0x9215193cb57df861ull, 0x1be65334d1ba342full }}, {{ 0xe830e88609718de5ull, 0xa61235fa05c6ef59ull, 0x9dc83c46af830fb5ull, 0xc6b02236b8156bccull, 0xb4d2fc5f16ebb3d0ull, 0x16ff4010314609dbull }}, {{ 0x11e9153c5e6f8af6ull, 0x7cb61bc439c55983ull, 0x29d25ac2db1e9d18ull, 0xc2e1562330d635feull, 0x103ddbb6e5350627ull, 0xe5f880a1ecbc6295ull }}, {{ 0xb31ad45bb05b6d9full, 0xdf1d15aa41b57f1eull, 0xa2378b9c8f3222f4ull, 0x9ccd5d5fe85e1bedull, 0xa26a9524f4123d8dull, 0xfbb506533f5bd9d2ull }}, {{ 0xff0c4b94e392483aull, 0xb722d8a69116f732ull, 0x562b741d97f55d90ull, 0x2005a5bf13ad1748ull, 0x5829d37188b66788ull, 0xd5123f407996823aull }}, {{ 0xf67af3d0e3b6d242ull, 0x275c7681aae5a7fdull, 0x5db28927ef95a7a7ull, 0x40387976c4c2e8d3ull, 0x71a2426f57200b51ull, 0x52b67884bfe11647ull }}, {{ 0xa0cd8628e5243693ull, 0x899ca110acf88febull, 0xa8f95b8f5bd88c87ull, 0x8234bea3af9d1841ull, 0x705698596740712cull, 0x3b20b52f7ecadecaull }}, {{ 0x48073d98f36a21bdull, 0x601e4aa6c1b59f34ull, 0x99bd939996757d4bull, 0x160f7264dc22f290ull, 0x6361f37e08846bbdull, 0x4f4713daf3ecb3e8ull }}, {{ 0xd04867f982255167ull, 0xc12eea839118380aull, 0x0167c3ffe096e4f1ull, 0xdc9a77f0995d79a6ull, 0xe1d382ec552c3562ull, 0x18c6c68d873f0713ull }}, {{ 0x22d40fbf15752e04ull, 0x8bd52923aaf2306cull, 0x0e0da7fec5e4f171ull, 0x9e08af65fda6c07cull, 0xd2431d3b53ba15dcull, 0xf7c3c187487646c6ull }}, {{ 0x5c489d76d693cc25ull, 0x76539b64ad75e439ull, 0x8c888ff3baf16e6full, 0x2c56d9fbe88384d8ull, 0x369f24514544da9eull, 0xada58f48d49ec3c4ull }}, {{ 0x9ad626a461c5f977ull, 0x9f4411eec69aea3dull, 0x7d559f854d6e505aull, 0xbb6483d715233075ull, 0x22376b2cb4b08a2dull, 0xc87798d84e33a5aaull }}, {{ 0x0c5d826bd1bbbea2ull, 0x38a8b353c20d2668ull, 0xe5583b35064f238aull, 0x51ed2666d35fe496ull, 0x562a2fbf0ee565c9ull, 0xd4abf8730e0478a5ull }}, {{ 0x7ba7183631557253ull, 0x3697014594838010ull, 0xf57250123f176366ull, 0x3343800441beede4ull, 0x5da5dd7694f5f9ddull, 0x4eb7b47e8c2cb675ull }}, {{ 0xd486f21ded56773cull, 0x21e60cb7cd2300a4ull, 0x967720b676e9e1feull, 0x00a3002a91754af1ull, 0xa87aa6a1d19bc2a4ull, 0x132d0cf179bf2095ull }}, {{ 0x4d45752b4560a85aull, 0x52fc7f2e035e0670ull, 0xe0a74720a522d3edull, 0x065e01a9ae94ed6full, 0x94ca825230159a68ull, 0xbfc2816ec17745d8ull }}, {{ 0x04b693b0b5c69382ull, 0x3ddcf7cc21ac4063ull, 0xc688c746735c4745ull, 0x3fac10a0d1d1465eull, 0xcfe91735e0d80810ull, 0x7d990e538ea8ba75ull }}, {{ 0x2f21c4e719c1c318ull, 0x6aa1adf950ba83deull, 0xc157c8c0819ac8b4ull, 0x7cb8a648322cbfb3ull, 0x1f1ae81ac87050a2ull, 0xe7fa8f439297489aull }}, {{ 0xd751b10701919ef2ull, 0x2a50cbbd274926adull, 0x8d6dd785100bd70cull, 0xdf367ed1f5bf7d05ull, 0x370d110bd4632658ull, 0x0fc998a3b9e8d605ull }}, {{ 0x6930ea460fb03571ull, 0xa727f56388db82caull, 0x864a6b32a0766679ull, 0xb820f433997ae237ull, 0x2682aa764bdf7f78ull, 0x9ddff66543185c34ull }}, {{ 0x1be926bc9ce21665ull, 0x878f95e358931be8ull, 0x3ee82ffa44a000c0ull, 0x31498a03feccd62bull, 0x811aa89ef6bafab7ull, 0x2abf9ff49ef39a09ull }}, {{ 0x171b835e20d4dff7ull, 0x4b9bdae175bf1711ull, 0x7511dfc6ae400785ull, 0xecdf6427f4005db0ull, 0x0b0a9635a34dcb27ull, 0xab7c3f8e3584045full }}, {{ 0xe71321ad4850bfa1ull, 0xf4168cce9976e6aaull, 0x92b2bdc2ce804b34ull, 0x40b9e98f8803a8e4ull, 0x6e69de186109ef8full, 0xb2da7b8e17282bb6ull }}, {{ 0x06bf50c4d3277c4dull, 0x88e18011fea502adull, 0xbafb699c1102f011ull, 0x87431f9b502498edull, 0x5022acf3ca635b98ull, 0xfc88d38ce791b520ull }}, {{ 0x437927b03f8adb03ull, 0x58cf00b3f2721ac2ull, 0x4dd22018aa1d60afull, 0x489f3c11216df949ull, 0x215ac185e7e193f5ull, 0xdd5843810bb11343ull }}, {{ 0xa2bb8ce27b6c8e20ull, 0x7816070778750b96ull, 0x0a3540f6a525c6d9ull, 0xd63858ab4e4bbcddull, 0x4d8b8f3b0ecfc794ull, 0xa572a30a74eac09full }}, {{ 0x5b5380d8d23d8d42ull, 0xb0dc464ab49273e2ull, 0x661489a27379c47eull, 0x5e3376b10ef560a2ull, 0x0773984e941dcbd0ull, 0x767a5e68912b8639ull }}, {{ 0x9143087836678499ull, 0xe89abeeb0db886d7ull, 0xfccd605882c1acf2ull, 0xae02a2ea9595c657ull, 0x4a83f311c929f623ull, 0xa0c7b015abb33e3aull }}, {{ 0xac9e54b2200b2df9ull, 0x160b752e8935446bull, 0xe005c3751b90c17dull, 0xcc1a5d29d7d9bf6full, 0xe9277eb1dba39d64ull, 0x47cce0d8b5006e46ull }}, {{ 0xbe2f4ef5406fcbbbull, 0xdc7293d15c14ac34ull, 0xc039a29313a78ee2ull, 0xf907a3a26e817a5eull, 0x1b8af2f2946425efull, 0xce00c87712044ec5ull }}, {{ 0x6dd91594845df551ull, 0x9c79c62d98ceba0full, 0x824059bec48b94dcull, 0xba4c6458510ec7b3ull, 0x136d7d79cbe97b5full, 0x0c07d4a6b42b13b3ull }}, {{ 0x4a7ad7cd2bab9527ull, 0x1cc1bdc7f813449aull, 0x16838173ad73d09eull, 0x46fbeb732a93cd03ull, 0xc246e6c1f71ed1bdull, 0x784e4e8309aec4feull }}, {{ 0xe8cc6e03b4b3d386ull, 0x1f9169cfb0c0ae06ull, 0xe1230e84c686262dull, 0xc5d7327fa9c6021eull, 0x96c50393a7343164ull, 0xb30f111e60d3b1f3ull }}, {{ 0x17fc4c250f064338ull, 0x3bae221ce786cc45ull, 0xcb5e912fc13d7dc3ull, 0xba67f8fca1bc1534ull, 0xe3b223c48809edefull, 0xfe96ab2fc844f383ull }}, {{ 0xefdaf972963ea033ull, 0x54cd55210b43fab2ull, 0xf1b1abdd8c66e9a0ull, 0x480fb9de5158d40full, 0xe4f565ad50634b5dull, 0xf1e2afddd2b18326ull }}, {{ 0x5e8dbe79de7241fdull, 0x5005534a70a7cafdull, 0x70f0b6a77c052043ull, 0xd09d42af2d78489full, 0xf195f8c523e0f1a4ull, 0x72dadeaa3aef1f84ull }}, {{ 0xb18970c2b07693ddull, 0x203540e8668dede5ull, 0x6967228ad83342a1ull, 0x26249ad7c6b2d63aull, 0x6fdbb7b366c97070ull, 0x7c8cb2a64d573b31ull }}, {{ 0xef5e679ae4a1c6a3ull, 0x42148914018b4af8ull, 0x1e07596c72009a4bull, 0x7d6e0c6dc2fc5e48ull, 0x5e952d0203de6461ull, 0xdd7efa7f05684feeull }}, {{ 0x59b00c0cee51c263ull, 0x94cd5ac80f70edb9ull, 0x2c497e3c740606f0ull, 0xe64c7c499ddbaed1ull, 0xb1d3c21426afebceull, 0xa6f5c8f636131f4full }}, {{ 0x80e078814f3197dcull, 0xd0058bd09a69493dull, 0xbadeee5c883c4565ull, 0xfefcdae02a94d42bull, 0xf24594c982df3614ull, 0x8599d99e1cbf391cull }}, {{ 0x08c4b50d17efee9aull, 0x20377626081cdc67ull, 0x4cb54f9d525ab5faull, 0xf5e08cc1a9d049b5ull, 0x76b7cfdf1cb81cd1ull, 0x3802802d1f783b21ull }}, {{ 0x57af1282ef5f5206ull, 0x422a9d7c51209c06ull, 0xff151c25378b1bc5ull, 0x9ac57f90a222e114ull, 0xa32e1eb71f312033ull, 0x301901c33ab24f4eull }}, {{ 0x6cd6b91d59b9343cull, 0x95aa26db2b46183full, 0xf6d319742b6f15b4ull, 0x0bb6fba6555ccad1ull, 0x5fcd332737eb4204ull, 0xe0fa11a04af71912ull }}, {{ 0x40633b25813c0a54ull, 0xd8a5848fb0bcf27aull, 0xa43efe89b256d90dull, 0x7525d47f559fec33ull, 0xbe03ff882f309428ull, 0xc9c4b042eda6fab7ull }}, {{ 0x83e04f770c586745ull, 0x76772d9ce76178c6ull, 0x6a75f160f7647a8aull, 0x937a4cf9583f3a04ull, 0x6c27fb51d7e5c994ull, 0xe1aee29d4885cb2dull }}, {{ 0x26c31aa67b7408b2ull, 0xa0a7c82109ceb7c1ull, 0x289b6dc9a9ecc968ull, 0xc2c701bd7278442cull, 0x398fd1326ef9dfcdull, 0xd0d4da24d539efc6ull }}, {{ 0x839f0a80d28856f0ull, 0x468dd14a62132d8bull, 0x961249e0a33fde16ull, 0x9bc6116678b2a9b9ull, 0x3f9e2bf855c2be09ull, 0x2850857054435dbeull }}, {{ 0x2436690839536560ull, 0xc18a2ce7d4bfc773ull, 0xdcb6e2c6607eacdeull, 0x15bcae00b6faa13full, 0x7c2db7b3599b6c60ull, 0x932536634aa1a96eull }}, {{ 0x6a201a523d41f5c0ull, 0x8f65c10e4f7dca7full, 0x9f24dbbfc4f2c0b3ull, 0xd95ecc0725ca4c7eull, 0xd9c92d0180123bc0ull, 0xbf741fe0ea509e50ull }}, {{ 0x2541073664939980ull, 0x99f98a8f1ae9e8faull, 0x3770957db17b8703ull, 0x7db3f84779e6fcf2ull, 0x81dbc20f00b65588ull, 0x7a893ec927262f28ull }}, {{ 0x748a481fedc3ff00ull, 0x03bf69970d2319c5ull, 0x2a65d6e8eed34624ull, 0xe907b2cac305e176ull, 0x12959496071f5754ull, 0xc95c73db877dd795ull }}, {{ 0x8d66d13f49a7f5ffull, 0x257a1fe6835f01b6ull, 0xa7fa65195440bd68ull, 0x1a4cfbeb9e3ace9dull, 0xb9d7cddc47396951ull, 0xdd9c86934aea6bd2ull }}, {{ 0x86042c78e08f9bf1ull, 0x76c53f0121b61121ull, 0x8fc7f2fd4a876611ull, 0x0701d7342e4c1228ull, 0x426e0a9ac83e1d2bull, 0xa81d41c0ed28363bull }}, {{ 0x3c29bcb8c59c176eull, 0xa3b4760b511cab4full, 0x9dcf7de4e949fcaeull, 0x46126809cef8b595ull, 0x984c6a0bd26d23aeull, 0x9124918943921e50ull }}, {{ 0x59a15f37b818ea49ull, 0x650c9c712b1eb118ull, 0x2a1aeaf11ce3ded2ull, 0xbcb8106215b717d8ull, 0xf2fc2476384364ceull, 0xab6daf5ca3b52f25ull }}, {{ 0x804db82d30f926deull, 0xf27e1c6baf32eaf3ull, 0xa50d2d6b20e6b437ull, 0x5f30a3d4d926ee71ull, 0x7dd96c9e32a1f013ull, 0xb248d99e6513d77bull }}, {{ 0x030931c3e9bb84aaull, 0x78ed1c34d7fd2d83ull, 0x7283c62f49030a2full, 0xb7e666507b855070ull, 0xea7e3e2dfa5360c1ull, 0xf6d8802ff2c66ad2ull }}, {{ 0x1e5bf1a721532ea1ull, 0xb9431a106fe3c71eull, 0x7925bdd8da1e65daull, 0x2effff24d3352464ull, 0x28ee6dcbc741c791ull, 0xa47501df7bc02c3dull }}, {{ 0x2f9770874d3fd24cull, 0x3c9f04a45ee5c72dull, 0xbb796a78852ffa8bull, 0xd5fff77040136becull, 0x995049f5c891cbabull, 0x6c9212bad581ba63ull }}, {{ 0xdbea6549047e36fcull, 0x5e362e6bb4f9c7c3ull, 0x52be28b533dfc970ull, 0x5bffaa6280c2373full, 0xfd22e399d5b1f4b6ull, 0x3db4bb4c571147e3ull }}, {{ 0x9727f4da2cee25dcull, 0xae1dd03511c1cda6ull, 0x3b6d971406bdde63ull, 0x97fca7d907962879ull, 0xe35ce40258f38f1full, 0x690f50fb66accee7ull }}, {{ 0xe78f9085c14d7a9cull, 0xcd2a2212b1920881ull, 0x5247e6c8436aafe4ull, 0xefde8e7a4bdd94bcull, 0xe1a0e8177983973bull, 0x1a9929d202c0150eull }}, {{ 0x0b9ba5398d06ca1bull, 0x03a554baefb45513ull, 0x36cf03d2a22adef0ull, 0x5eb190c6f6a7cf5bull, 0xd04910eabf23e857ull, 0x09fba2341b80d294ull }}, {{ 0x7414743f8243e50cull, 0x24754f4d5d0b52beull, 0x2416263a55acb560ull, 0xb2efa7c5a28e1990ull, 0x22daa92b77671369ull, 0x63d45609130839d0ull }}, {{ 0x88cc8a7b16a6f27cull, 0x6c951905a2713b70ull, 0x68dd7e4758bf15c1ull, 0xfd5c8db8598cffa1ull, 0x5c8a9bb2aa06c220ull, 0xe64b5c5abe524221ull }}, {{ 0x57fd68cee28578d7ull, 0x3dd2fa38586c5265ull, 0x18a6eec97776d98eull, 0xe59d89337f81fc4eull, 0x9d6a14faa4439549ull, 0xfef19b8b6f36954dull }}, {{ 0x6fe61814d936b864ull, 0x6a3dc633743b37f5ull, 0xf68553deaaa47f8eull, 0xf8275c02fb13db0cull, 0x2624d1ca6aa3d4e2ull, 0xf57013725821d508ull }}, {{ 0x5efcf0d07c2333e5ull, 0x2669be028a502f96ull, 0xa13546b2aa6cfb90ull, 0xb189981dcec68e81ull, 0x7d7031e82a6650ddull, 0x9660c27771525251ull }}, {{ 0xb5e16824d96006f3ull, 0x80216c196721dbdfull, 0x4c14c2faa841d3a1ull, 0xef5ff12a13c19110ull, 0xe661f311a7ff28a8ull, 0xdfc798aa6d37372eull }}, {{ 0x1ace11707dc0457bull, 0x014e38fe075296bdull, 0xf8cf9dca9292444full, 0x59bf6ba4c58faaa2ull, 0xffd37eb08ff79699ull, 0xbdcbf6a8442827d4ull }}, {{ 0x0c0cae64e982b6cfull, 0x0d0e39ec4939e363ull, 0xb81c29e9b9b6ab16ull, 0x817a346fb79caa5dull, 0xfe42f2e59fabe1fdull, 0x69f7a292a9918e51ull }}, {{ 0x787ecff11f1b2414ull, 0x828e433adc42e1deull, 0x3119a3214122aedcull, 0x0ec60c5d2c1ea7a9ull, 0xee9d7cf83cb6d3e7ull, 0x23ac59ba9faf8f33ull }}, {{ 0xb4f41f6b370f68c8ull, 0x198ea04c9a9cd2b0ull, 0xeb005f4c8b5ad49dull, 0x93bc7ba3b9328c9bull, 0x5226e1b25f244706ull, 0x64bb814a3cdb9807ull }}, {{ 0x11893a30269a17ccull, 0xff9242fe0a203ae7ull, 0x2e03b8fd718c4e22ull, 0xc55cd4653bf97e17ull, 0x3584d0f7b76ac641ull, 0xef530ce66093f049ull }}, {{ 0xaf5c45e18204edfbull, 0xfbb69dec65424d06ull, 0xcc2539e66f7b0d5dull, 0xb5a04bf457beece7ull, 0x173029ad2a2bbe91ull, 0x593e80ffc5c762dcull }}, {{ 0xd99abacf14314bceull, 0xd5222b3bf4970242ull, 0xf97443005ace85abull, 0x1842f78b6d75410dull, 0xe7e1a0c3a5b571b1ull, 0x7c7109fdb9c9dc98ull }}, {{ 0x800b4c16c9ecf609ull, 0x5355b0578de6169cull, 0xbe8a9e038c1138b6ull, 0xf29dab7246948a8bull, 0x0ed047a4791670eaull, 0xdc6a63e941e29df9ull }}, {{ 0x0070f8e3e3419c5full, 0x4158e36b8afce21dull, 0x716a2c2378ac371full, 0x7a28b276c1cd6975ull, 0x9422cc6cbae0692dull, 0x9c27e71c92da2bbaull }}, {{ 0x0469b8e6e0901bb5ull, 0x8d78e2336de0d522ull, 0x6e25b962b6ba2738ull, 0xc596f8a392061e96ull, 0xc95bfc3f4cc41bc6ull, 0x198f071dbc85b549ull }}, {{ 0x2c213904c5a11513ull, 0x86b8d6024ac85354ull, 0x4d793ddb23458835ull, 0xb7e5b663b43d31e0ull, 0xdd97da78ffa915c3ull, 0xff9647295d3914e1ull }}, {{ 0xb94c3a2fb84ad2bcull, 0x43385c16ebd34149ull, 0x06bc6a8f60b75217ull, 0x2ef91fe50a63f2c3ull, 0xa7ee88b9fc9ad9a5ull, 0xfbdec79da43ad0d2ull }}, {{ 0x3cfa45dd32ec3b54ull, 0xa03398e536408ce1ull, 0x435c2999c72934e8ull, 0xd5bb3ef267e77b9eull, 0x8f515743de0c8073ull, 0xd6b3cc286a4c283aull }}, {{ 0x61c6baa3fd3a514dull, 0x4203f8f41e8580ccull, 0xa199a001c79c1116ull, 0x595075780f0ad42eull, 0x992d68a6ac7d0486ull, 0x6305f99426f99249ull }}, {{ 0xd1c34a67e4472d02ull, 0x9427b989313707fbull, 0x50004011cc18aadeull, 0x7d2496b0966c49d2ull, 0xfbc61682bce22d3full, 0xde3bbfc985bfb6dfull }}, {{ 0x31a0e80eeac7c211ull, 0xc98d3f5bec264fd6ull, 0x200280b1f8f6acb1ull, 0xe36de2e5e03ae237ull, 0xd5bce11b60d5c47aull, 0xae557ddf397d24bfull }}, {{ 0xf04910952bcd94a6ull, 0xdf847997397f1e5dull, 0x401906f3b9a2bef1ull, 0xe24adcfac24cd627ull, 0x5960cb11c859acccull, 0xcf56eab83ee36f7eull }}, {{ 0x62daa5d3b607ce77ull, 0xbb2cbfe83ef72fabull, 0x80fa4585405b7572ull, 0xd6eca1cb97005d88ull, 0x7dc7eeb1d380c000ull, 0x19652b3274e25aefull }}, {{ 0xdc8a7a451c4e10a7ull, 0x4fbf7f1275a7dcb1ull, 0x09c6b7348392967bull, 0x653e51f3e603a755ull, 0xe9cf52f243078008ull, 0xfdf3aff890d78d5aull }}, {{ 0x9d68c6b31b0ca688ull, 0x1d7af6b8988e9ef2ull, 0x61c3280d23b9e0d1ull, 0xf46f3386fc248952ull, 0x22193d769e4b0053ull, 0xeb84dfb5a86b858dull }}, {{ 0x2617c2ff0e7e814dull, 0x26cda335f592357aull, 0xd19f90836542c82bull, 0x8c580345d96d5d37ull, 0x54fc66a22eee0347ull, 0x3330bd1894333783ull }}, {{ 0x7ced9df690f10d03ull, 0x8408601b97b616c5ull, 0x303ba521f49bd1afull, 0x7b7020ba7e45a42eull, 0x51dc0255d54c20cbull, 0xffe762f5ca002b21ull }}, {{ 0xe1482ba1a96a821cull, 0x2853c113ed1ce3b6ull, 0xe25473538e1630dbull, 0xd2614748eeb869cdull, 0x3298175a54f947f2ull, 0xff09dd99e401af4dull }}, {{ 0xccd1b4509e29151aull, 0x93458ac74320e524ull, 0xd74c81438cdde88full, 0x37ccc8d95334220aull, 0xf9f0e98751bccf7cull, 0xf662a802e810d903ull }}, {{ 0x00310b262d9ad307ull, 0xc0b76bc89f48f370ull, 0x68fd0ca380ab159bull, 0x2dffd87d4009546cull, 0xc3691f4931601adaull, 0x9fda901d10a87a27ull }}, {{ 0x01ea6f7dc80c3e42ull, 0x872a35d638d98260ull, 0x19e27e6306aed815ull, 0xcbfe74e4805d4c3cull, 0xa21b38dbedc10c85ull, 0x3e89a122a694c58dull }}, {{ 0x13285ae9d07a6e90ull, 0x47a61a5e387f17c0ull, 0x02d8efde42d470d7ull, 0xf7f090ed03a4fa59ull, 0x55103897498a7d39ull, 0x71604b5a81cfb788ull }}, {{ 0xbf938d2224c851a0ull, 0xcc7d07ae34f6ed80ull, 0x1c795eae9c4c6868ull, 0xaf65a9422471c77aull, 0x52a235e8df68e443ull, 0x6dc2f189121d2b53ull }}, {{ 0x7bc383556fd3303dull, 0xfce24cce11a54707ull, 0x1cbdb2d21afc1417ull, 0xd9f89c956c71cac5ull, 0x3a561b18ba18eaa4ull, 0x499d6f5ab523b141ull }}, {{ 0xd5a321565e3fe261ull, 0xe0d7000cb074c64aull, 0x1f68fc350dd8c8efull, 0x83b61dd63c71ebb3ull, 0x475d0ef744f92a70ull, 0xe026598b1364ec8cull }}, {{ 0x585f4d5fae7ed7cbull, 0xc866007ee48fbeecull, 0x3a19da128a77d95eull, 0x251d2a5e5c7334ffull, 0xc9a295a8b1bba865ull, 0xc17f7f6ec1f13d7aull }}, {{ 0x73b905bcd0f46decull, 0xd3fc04f4ed9d753bull, 0x450284b968ae7db3ull, 0x7323a7af9c8011f8ull, 0xe059d896f15493f3ull, 0x8efafa53936c66cbull }}, {{ 0x853a3960298c4b38ull, 0x47d8319148269452ull, 0xb2192f3e16d0e906ull, 0x7f648cdc1d00b3b2ull, 0xc38275e56d4dc782ull, 0x95cdc743c23c03f6ull }}, {{ 0x34463dc19f7af032ull, 0xce71efacd181cb39ull, 0xf4fbd86ce4291a3eull, 0xf9ed8099220704faull, 0xa3189af64509cb18ull, 0xda09c8a5965827a3ull }}, {{ 0x0abe69903acd61f3ull, 0x10735cc02f11f03cull, 0x91d67440e99b0674ull, 0xc34705fb544631cdull, 0x5ef60d9eb261eef9ull, 0x8461d677df718c64ull }}, {{ 0x6b701fa24c05d379ull, 0xa4819f81d6b36258ull, 0xb2608a89200e4088ull, 0xa0c63bd14abdf207ull, 0xb59c8832f7d355c1ull, 0x2bd260aeba6f7bebull }}, {{ 0x32613c56f83a42beull, 0x6d103b126301d774ull, 0xf7c5695b408e8556ull, 0x47be562ceb6b744cull, 0x181d51fdae415990ull, 0xb637c6d3485ad735ull }}, {{ 0xf7cc5b65b2469b6eull, 0x42a24eb7de126a89ull, 0xadb61d9085913560ull, 0xcd6f5dc132328b01ull, 0xf12533e8ce8d7fa2ull, 0x1e2dc440d38c6812ull }}, {{ 0xadfb91f8f6c2124cull, 0x9a57132eacb82963ull, 0xc91d27a537ac15c2ull, 0x0659a98bf5f96e10ull, 0x6b7407181186fc5cull, 0x2dc9aa88437c10bdull }}, {{ 0xcbd3b3b9a394b6fcull, 0x0766bfd2bf319de4ull, 0xdb238c742cb8d99aull, 0x3f809f779bbe4ca7ull, 0x328846f0af45db98ull, 0xc9e0a952a2d8a766ull }}, {{ 0xf645054063cf25d5ull, 0x4a037e3b77f02aefull, 0x8f637c89bf388004ull, 0x7b063aac156efe8eull, 0xf952c566d8ba93f2ull, 0xe2c69d3a5c7689fdull }}, {{ 0x9eb23483e6177a52ull, 0xe422ee52af61ad5full, 0x99e2dd617835002aull, 0xce3e4ab8d655f191ull, 0xbd3bb6047749c778ull, 0xdbc224479ca163ebull }}, {{ 0x32f60d26fceac736ull, 0xe95d4f3ad9d0c5bcull, 0x02dca5ceb21201acull, 0x0e6eeb385f5b6fb0ull, 0x64551c2ca8e1cab8ull, 0x95956acc1e4de735ull }}, {{ 0xfd9c8385e12bc81eull, 0x1da5184c8227b959ull, 0x1c9e7a12f4b410c1ull, 0x90553033b9925ce0ull, 0xeb5319be98d1eb30ull, 0xd7d62bf92f0b0815ull }}, {{ 0xe81d233acbb5d12aull, 0x2872f2fd158d3d83ull, 0x1e30c4bd8f08a78bull, 0xa353e2053fb7a0c1ull, 0x313f0171f8332fe5ull, 0x6e5db7bbd66e50dbull }}, {{ 0x1123604bf51a2ba5ull, 0x947d7de2d7846727ull, 0x2de7af6796568b6full, 0x6146d4347d2c478bull, 0xec760e73b1ffdef8ull, 0x4fa92d56604f288full }}, {{ 0xab61c2f79305b470ull, 0xcce6eadc6b2c0786ull, 0xcb0cda0bdf61725bull, 0xccc44a0ce3bacb6full, 0x3c9c9084f3feb5b3ull, 0x1c9bc55fc317959full }}, {{ 0xb1d19dabbe390c5cull, 0x01052c9c2fb84b42ull, 0xee808476b9ce7796ull, 0xffaae480e54bf25dull, 0x5e1da53187f31905ull, 0x1e15b5bd9eebd838ull }}, {{ 0xf23028b56e3a7b97ull, 0x0a33be19dd32f09aull, 0x51052ca34210abdcull, 0xfcaced08f4f777abull, 0xad2873ef4f7efa3bull, 0x2cd9196835367233ull }}, {{ 0x75e197164e48d3e7ull, 0x66056d02a3fd660dull, 0x2a33be6094a6b698ull, 0xdec1425991aaacb1ull, 0xc39487591af5c657ull, 0xc07afe1214207604ull }}, {{ 0x9acfe6df0ed8470aull, 0xfc36421a67e5fc86ull, 0xa6056fc5ce8321f3ull, 0xb38c977fb0aabeebull, 0xa3cd497b0d99bf6eull, 0x84cdecb4c9449c2full }}, {{ 0x0c1f04b69472c665ull, 0xda1e95080efbdd42ull, 0x7c365dba111f5387ull, 0x037deafce6ab7534ull, 0x6604dece88017a53ull, 0x300b3f0fdcae19dcull }}, {{ 0x79362f21cc7bbff4ull, 0x8531d25095d6a494ull, 0xda1fa944ab39434eull, 0x22eb2de102b2940cull, 0xfc30b411500ec73eull, 0xe070769e9ecd029bull }}, {{ 0xbc1dd751fcd57f84ull, 0x33f23725da626dccull, 0x853c9caeb03ca111ull, 0x5d2fcaca1af9c880ull, 0xd9e708ad2093c86dull, 0xc464a23234021a17ull }}, {{ 0x592a6933e056fb2bull, 0x0776277a87d849ffull, 0x345e1ed2e25e4aacull, 0xa3ddebe50dc1d505ull, 0x830656c345c5d445ull, 0xabee55f6081504eeull }}, {{ 0x7ba81c06c365cfb2ull, 0x4a9d8ac94e72e3f9ull, 0x0bad343cd7aeeab8ull, 0x66ab36f289925234ull, 0x1e3f63a0b9ba4ab8ull, 0xb74f5b9c50d23151ull }}, {{ 0xd4911843a1fa1cf2ull, 0xea276bdd107ce7beull, 0x74c40a606cd52b32ull, 0x02b025795fb73608ull, 0x2e79e4474146eb34ull, 0x2919941b2835ed2bull }}, {{ 0x4daaf2a453c52177ull, 0x258a36a2a4e10d74ull, 0x8fa867c44053affdull, 0x1ae176bdbd281c54ull, 0xd0c2eac88cc53008ull, 0x9affc90f921b43afull }}, {{ 0x08ad7a6b45b34ea3ull, 0x7766225a70ca868bull, 0x9c940daa8344dfe3ull, 0x0ccea36963911b4dull, 0x279d2bd57fb3e051ull, 0x0dfdda9bb510a4deull }}, {{ 0x56c6c830b9011262ull, 0xa9fd578867e9416eull, 0x1dc888a920b0bee2ull, 0x8012621de3ab1108ull, 0x8c23b656fd06c32aull, 0x8bea8a1512a670adull }}, {{ 0x63c3d1e73a0ab7d3ull, 0xa3e56b540f1c8e4full, 0x29d5569b46e774daull, 0x00b7d52ae4aeaa51ull, 0x79651f65e2439fa9ull, 0x772964d2ba8066c7ull }}, {{ 0xe5a63308446b2e41ull, 0x66f63148971d8f19ull, 0xa2556210c50a908aull, 0x072e53aceed2a72bull, 0xbdf339fad6a43c9aull, 0xa79df03b490403caull }}, {{ 0xf87dfe52ac2fce89ull, 0x059decd5e7279702ull, 0x5755d4a7b269a568ull, 0x47cf44c1543a87b4ull, 0x6b8043cc626a5e04ull, 0x8c2b6250da2825ebull }}, {{ 0xb4ebef3ab9de1155ull, 0x382b405b078be61dull, 0x695a4e8cf8207610ull, 0xce18af8d4a494d0bull, 0x3302a5fbd827ac2aull, 0x79b1d72885917b32ull }}, {{ 0x1137584b42acad57ull, 0x31b0838e4b76fd29ull, 0x1d871181b1449ca2ull, 0x0cf6db84e6dd0272ull, 0xfe1a7bd6718cb9acull, 0xc0f2679537aecff5ull }}, {{ 0xac2972f09abec562ull, 0xf0e5238ef2a5e39aull, 0x2746af10ecae1e55ull, 0x81a4933104a21875ull, 0xed08d6606f7f40b8ull, 0x89780bd42cd41f9bull }}, {{ 0xb99e7d660b73b5d2ull, 0x68f363957a7ae40aull, 0x88c2d6a93ecd2f5bull, 0x106dbfea2e54f493ull, 0x42585fc45af88735ull, 0x5eb07649c0493c17ull }}, {{ 0x4030e5fc72851a33ull, 0x1981e3d6c8cce86bull, 0x579c629c7403d992ull, 0xa4497f25cf518dc3ull, 0x9773bdab8db54812ull, 0xb2e49ee182dc58e8ull }}, {{ 0x81e8fbdc79330603ull, 0xff12e663d8011430ull, 0x6c1bda1c88267fb4ull, 0x6adef77a192f89a1ull, 0xea8568b38914d0baull, 0xfcee34cf1c9b7915ull }}, {{ 0x1319d69cbbfe3c1aull, 0xf6bcffe6700ac9e5ull, 0x3916851d5180fd11ull, 0x2cb5aac4fbdb604eull, 0x293617035ad02748ull, 0xe14e10171e12badbull }}, {{ 0xbf02621f57ee5907ull, 0xa361ff00606be2f2ull, 0x3ae133252f09e2b3ull, 0xbf18abb1d691c30eull, 0x9c1ce6218c2188d1ull, 0xcd0ca0e72cbb4c8full }}, {{ 0x7617d5396f4f7a49ull, 0x61d3f603c436dd7bull, 0x4ccbff73d662db04ull, 0x76f6b4f261b19e8eull, 0x1920fd4f794f5831ull, 0x027e4907bf50fd9cull }}, {{ 0x9cee543e591ac6d6ull, 0xd2479c25aa24a6d2ull, 0xfff7fa865fdc8e2bull, 0xa5a31177d0f0318eull, 0xfb49e51abd1971eeull, 0x18eeda4d7929e818ull }}, {{ 0x214f4a6f7b0bc45cull, 0x36cc1978a56e843aull, 0xffafc93fbe9d8db6ull, 0x785eaeae2961ef95ull, 0xd0e2f30b62fe7352ull, 0xf9548706bba310f9ull }}, {{ 0x4d18e85ace75ab97ull, 0x23f8feb676512a45ull, 0xfcdddc7d7227891eull, 0xb3b2d2cd9dd35bdbull, 0x28dd7e71ddf08138ull, 0xbd4d4643545ea9c2ull }}, {{ 0x02f9138c1098b3e4ull, 0x67b9f3209f2ba6b5ull, 0xe0aa9ce6758b5b2dull, 0x04fc3c082a419697ull, 0x98a6f072ab650c37ull, 0x6504bea14bb2a195ull }}, {{ 0x1dbac378a5f706edull, 0x0d437f4637b48312ull, 0xc6aa210097718fc6ull, 0x31da5851a68fe1eeull, 0xf685647ab1f27a26ull, 0xf22f724cf4fa4fd7ull }}, {{ 0x294ba2b67ba6453full, 0x84a2f8be2d0d1eb5ull, 0xc2a54a05ea6f9dbcull, 0xf2877330819ed353ull, 0xa135eccaf378c57dull, 0x75da770191c71e6full }}, {{ 0x9cf45b20d47eb472ull, 0x2e5db76dc2833313ull, 0x9a74e43b285c295dull, 0x794a7fe510344145ull, 0x4c1b3fed82b7b6ebull, 0x9a88a60fb1c7305cull }}, {{ 0x218b8f484cf30c71ull, 0xcfa92a49991ffec4ull, 0x0890ea4f93999da3ull, 0xbce8fef2a20a8cb8ull, 0xf9107f471b2d2532ull, 0x09567c9cf1c7e39aull }}, {{ 0x4f7398d3017e7c6cull, 0x1c9ba6dffb3ff3a9ull, 0x55a9271bc4002866ull, 0x6119f57a54697f30ull, 0xbaa4f8c70fc373fbull, 0x5d60de2171cee40dull }}, {{ 0x1a83f83e0ef0dc3bull, 0x1e1484bfd07f849dull, 0x589b8715a80193fdull, 0xcb0396c74c1ef7e3ull, 0x4a71b7c69da287d1ull, 0xa5c8ad4e7214e889ull }}, {{ 0x0927b26c95689a53ull, 0x2ccd2f7e24fb2e23ull, 0x761346d8900fc7e3ull, 0xee23e3c8f935aee1ull, 0xe8712dc228594e31ull, 0x79d6c51074d1155cull }}, {{ 0x5b8cf83dd616073bull, 0xc003daed71cfcd5eull, 0x9cc0c475a09dcedfull, 0x4d66e5d9bc18d4ceull, 0x146bc995937d0df3ull, 0xc263b2a4902ad5a1ull }}, {{ 0x9381b26a5cdc4850ull, 0x80268d46721e05afull, 0x1f87ac98462a14bdull, 0x0604fa8158f85012ull, 0xcc35dfd7c2e28b81ull, 0x97e4fa6da1ac584aull }}, {{ 0xc310f827a09ad31full, 0x018184c0752c38dbull, 0x3b4cbdf2bda4cf67ull, 0x3c31c90d79b320b5ull, 0xfa1abe6d9cd9730aull, 0xeef1c84850bb72ebull }}, {{ 0x9ea9b18c460c3f36ull, 0x0f0f2f8493ba3895ull, 0x50ff6b7b68701a06ull, 0x59f1da86c0ff4714ull, 0xc50b7048207e7e66ull, 0x5571d2d327527d37ull }}, {{ 0x32a0ef7abc7a7818ull, 0x9697db2dc54635d8ull, 0x29fa32d21461043cull, 0x8372894389f8c6cbull, 0xb27262d144f0efffull, 0x56723c3f8938e42dull }}, {{ 0xfa495acb5cc8b0f3ull, 0xe1ee8fc9b4be1a71ull, 0xa3c5fc34cbca2a5dull, 0x22795ca363b7c3efull, 0xf877dc2cb1695ffbull, 0x60765a7b5c38e9c8ull }}, {{ 0xc6dd8bf19fd6e980ull, 0xd3519de10f6d0873ull, 0x65bbda0ff5e5a7aaull, 0x58bd9e61e52da75cull, 0xb4ae99beee1dbfcfull, 0xc49f88d19a3921d9ull }}, {{ 0xc4a777703e651effull, 0x41302aca9a425485ull, 0xf956849f9af88cacull, 0x77682fd2f3c8899bull, 0x0ed201754d297e19ull, 0xae3b5830063b5281ull }}, {{ 0xae8aaa626ff335f4ull, 0x8be1abea06974d39ull, 0xbd612e3c0db57ebaull, 0xaa11de3d85d56017ull, 0x94340e95039eecfeull, 0xce5171e03e51390aull }}, {{ 0xd16aa7d85f801b8cull, 0x76d0b72441e90440ull, 0x65cbce588916f349ull, 0xa4b2ae673a55c0edull, 0xca0891d2243541f2ull, 0x0f2e72c26f2c3a69ull }}, {{ 0x2e2a8e73bb011379ull, 0xa427276a931a2a88ull, 0xf9f60f755ae580deull, 0x6efad00847598945ull, 0xe455b2356a14937aull, 0x97d07b9857ba4821ull }}, {{ 0xcda990854e0ac2bbull, 0x69878a29bf05a951ull, 0xc39c9a958cf708b2ull, 0x55cc2052c97f5cbbull, 0xeb58f61624cdc2c8ull, 0xee24d3f36d46d152ull }}, {{ 0x089fa5350c6b9b51ull, 0x1f4b65a176389d32ull, 0xa41e09d781a656f8ull, 0x59f9433bdef99f55ull, 0x31799cdd70099bd3ull, 0x4d70478244c42d3dull }}, {{ 0x563c74127c341125ull, 0x38f1f84e9e3623f4ull, 0x692c626b107f65b1ull, 0x83bca056b5c03958ull, 0xeec020a660601641ull, 0x0662cb16afa9c463ull }}, {{ 0x5e5c88b8da08ab74ull, 0x3973b3122e1d678bull, 0x1bbbd82ea4f9f8ecull, 0x255e436319823d74ull, 0x5381467fc3c0de8full, 0x3fdbeee2dca1abe7ull }}, {{ 0xaf9d57388456b288ull, 0x3e84feb5cd260b71ull, 0x155671d271c3b93aull, 0x75aea1deff166689ull, 0x430cc0fda588b197ull, 0x7e9754dc9e50b709ull }}, {{ 0xdc2568352b62f954ull, 0x7131f31a037c7270ull, 0xd560723871a53c46ull, 0x98d252b5f6e0015aull, 0x9e7f89e87756efeaull, 0xf1e9509e2f27265cull }}, {{ 0x99761213b1ddbd48ull, 0x6bf37f0422dc7868ull, 0x55c4763470745ac0ull, 0xf8373b1ba4c00d8cull, 0x30fb6314a9655f29ull, 0x731d262dd7877f9eull }}, {{ 0xfe9cb4c4f2a964ceull, 0x3782f6295c9cb415ull, 0x59ac9e0c648b8b84ull, 0xb2284f146f80877bull, 0xe9d1dece9df5b7a3ull, 0x7f237dca6b4afc2dull }}, {{ 0xf21f0fb17a9df00cull, 0x2b1d9d9d9e1f08dbull, 0x80be2c7bed73732aull, 0xf59316cc5b054ad1ull, 0x2232b4122b992c64ull, 0xf762e9e830edd9cbull }}, {{ 0x75369ceeca2b607bull, 0xaf2828282d365897ull, 0x076dbcd746827fa5ull, 0x97bee3fb8e34ec2full, 0x55fb08b5b3fbbbf1ull, 0xa9dd2311e94a81efull }}, {{ 0x94222153e5b1c4caull, 0xd7919191c41f75eaull, 0x4a496068c118fc78ull, 0xed74e7d38e1139d6ull, 0x5bce571907d5576full, 0xa2a35eb31ce91359ull }}, {{ 0xc9554d46f8f1afe9ull, 0x6bafafb1a93a9b29ull, 0xe6ddc4178af9dcb8ull, 0x46910e438cac425eull, 0x960f66fa4e556a5full, 0x5a61b2ff211ac17dull }}, {{ 0xdd5504c5b970df16ull, 0x34dcdcf09c4a0fa1ull, 0x04a9a8eb6dc29f34ull, 0xc1aa8ea37eba97b5ull, 0xdc9a05c70f5627b8ull, 0x87d0fdf74b0b8ee7ull }}, {{ 0xa5522fb93e68b6ddull, 0x10a0a1661ae49c52ull, 0x2ea09932499a380aull, 0x90a99262f349ed12ull, 0x9e0439c6995d8d37ull, 0x4e29eba8ee73950eull }}, {{ 0x7535dd3c701724a6ull, 0xa6464dfd0cee1b3aull, 0xd245fbf6e0063064ull, 0xa69fb7dd80e342b5ull, 0x2c2a41c1fda7842bull, 0x0da334995083d292ull }}, {{ 0x941aa45c60e76e7aull, 0x7ebf0be2814d1048ull, 0x36bbd7a4c03de3eeull, 0x823d2ea708e09b1aull, 0xb9a69193e88b29b4ull, 0x88600dfd252639b5ull }}, {{ 0xc90a6b9bc90a50c3ull, 0xf37676d90d02a2d5ull, 0x23566c6f826ae750ull, 0x1663d28658c60f06ull, 0x4081afc7156fa10dull, 0x53c08be3737e4119ull }}, {{ 0xda683415da67279cull, 0x82a0a47a821a5c59ull, 0x61603c5b182d0929ull, 0xdfe6393f77bc963dull, 0x8510ddc6d65c4a82ull, 0x458576e282ee8afcull }}, {{ 0x881208da88078c1dull, 0x1a466cc915079b82ull, 0xcdc25b8ef1c25b9full, 0xbefe3c7aad5dde65ull, 0x32a8a9c45f9ae91cull, 0xb736a4d91d516dddull }}, {{ 0x50b45889504b7920ull, 0x06c03fdad24c1319ull, 0x0997939571979437ull, 0x75ee5ccac5aaaffaull, 0xfa96a1abbc0d1b1full, 0x2822707b252e4aa3ull }}, {{ 0x270b755d22f2bb40ull, 0x43827e8c36f8befdull, 0x5febc3d66febca26ull, 0x9b4f9febb8aadfc4ull, 0xc9e250b558830f3aull, 0x915864cf73ceea67ull }}, {{ 0x867295a35d7b5083ull, 0xa318f17a25b775e3ull, 0xbf35a6605f35e57eull, 0x111c3f3536acbdabull, 0xe2d72715751e984aull, 0xad73f01a8615280dull }}, {{ 0x4079d861a6d1251bull, 0x5ef96ec5792a9ae3ull, 0x78187fc3b81af6f2ull, 0xab1a781422bf68b5ull, 0xdc6786d69331f2e4ull, 0xc68761093cd3908aull }}, {{ 0x84c273d0842b730full, 0xb5be53b6bbaa0ce0ull, 0xb0f4fda5310da577ull, 0xaf08b0c95b7a1716ull, 0x9c0b4461bff37ceeull, 0xc149ca5c6043a56cull }}, {{ 0x2f98862529b27e92ull, 0x196f452354a480c5ull, 0xe991e873ea8876adull, 0xd656e7dd92c4e6e2ull, 0x1870abd17f82e152ull, 0x8ce1e79bc2a4763eull }}, {{ 0xdbf53d73a0f8f1afull, 0xfe58b3614e6d07b3ull, 0x1fb314872954a2c2ull, 0x5f650ea7bbb104ddull, 0xf466b62efb1ccd3cull, 0x80d30c159a6c9e6cull }}, {{ 0x9794668449b970dbull, 0xef7701cd10424d06ull, 0x3cfecd479d4e5b9dull, 0xb9f2928d54ea30a3ull, 0x8c031dd5cf20045bull, 0x083e78d8083e3041ull }}, {{ 0xebcc012ae13e6889ull, 0x5aa61202a2970241ull, 0x61f404cc250f942bull, 0x4379b9855125e660ull, 0x781f2a5a17402b95ull, 0x5270b870526de28full }}, {{ 0x35f80baccc70155cull, 0x8a7cb41a59e61693ull, 0xd3882ff9729bc9b1ull, 0xa2c13f352b7affc3ull, 0xb137a784e881b3d4ull, 0x38673463384ad99aull }}, {{ 0x1bb074bffc60d597ull, 0x68df090782fce1c0ull, 0x4351dfbe7a15e0efull, 0x5b8c7813b2cdfda6ull, 0xec2c8b311511064eull, 0x34080be032ec800aull }}, {{ 0x14e48f7fdbc857e9ull, 0x18b65a4b1de0d181ull, 0xa132bd70c4dac95aull, 0x937cb0c4fc0be87eull, 0x39bd6fead2aa3f0full, 0x085076c1fd3d006dull }}, {{ 0xd0ed9afe95d36f1cull, 0xf71f86ef2ac82f0aull, 0x4bfb6667b08bdd84ull, 0xc2dee7b1d87714f2ull, 0x41665f2c3aa6769bull, 0x5324a393e4620444ull }}, {{ 0x29480df1da425714ull, 0xa73b4557abd1d66cull, 0xf7d2000ce576a731ull, 0x9cb50cf274a6d176ull, 0x8dffb7ba4a80a215ull, 0x3f6e63c6ebd42aaaull }}, {{ 0x9cd08b72869766c6ull, 0x8850b56cb6326039ull, 0xae340080f6a287f0ull, 0x1f1281788e842ea5ull, 0x8bfd2d46e90654d8ull, 0x7a4fe5c53649aaa9ull }}, {{ 0x2025727941ea03bcull, 0x5327163f1df7c240ull, 0xce080509a2594f65ull, 0x36b90eb59129d278ull, 0x77e3c4c51a3f5071ull, 0xc71ef9b41ee0aa9full }}, {{ 0x417678bc93242555ull, 0x3f86de772bad9681ull, 0x0c503260577d19f5ull, 0x233a9317aba238b8ull, 0xaee5afb30679246cull, 0xc735c10934c6aa3aull }}, {{ 0x8ea0b75dbf697557ull, 0x7b44b0a7b4c7e10cull, 0x7b21f7c36ae30394ull, 0x6049beecb4563730ull, 0xd4f8dcfe40bb6c39ull, 0xc8198a5c0fc2a64aull }}, {{ 0x924729a97a1e9565ull, 0xd0aee68d0fceca7dull, 0xcf53ada22cde23ccull, 0xc2e1753f0b5e27e4ull, 0x51b8a1ee87523a3dull, 0xd0ff67989d9a7eecull }}, {{ 0xb6c7a09ec531d5eeull, 0x26d501829e13e8e7ull, 0x1944c855c0ad6600ull, 0x9cce947671ad8ef0ull, 0x3136535149364669ull, 0x29fa0bf62808f53bull }}, {{ 0x23cc4633b3f25b4aull, 0x84520f1a2cc7190dull, 0xfcafd35986c5fc01ull, 0x2011cca070c79560ull, 0xec1f412cdc1ec020ull, 0xa3c4779d9059944full }}, {{ 0x65fabe05077790e6ull, 0x2b349705bfc6fa83ull, 0xdede417f43bbd80full, 0x40b1fe4467cbd5c9ull, 0x39388bc099338141ull, 0x65acac27a37fcb1full }}, {{ 0xfbcb6c324aaba8feull, 0xb00de6397dc5c921ull, 0xb4ae8ef8a5567097ull, 0x86f3eeac0df659e2ull, 0x3c357585fc030c8cull, 0xf8beb98c62fdef38ull }}, {{ 0xd5f239f6eab499efull, 0xe08afe3ee9b9db53ull, 0x0ed195b6756065ecull, 0x458752b88b9f82dbull, 0x5a16973bd81e7d7dull, 0xb7733f7bddeb5832ull }}, {{ 0x5b7643a52b0e0359ull, 0xc56dee7521429146ull, 0x942fd92095c3fb40ull, 0xb7493b35743b1c8eull, 0x84e1e8567130e6e4ull, 0x2a807ad6ab3171f7ull }}, {{ 0x929ea473ae8c217cull, 0xb64b50934c99acbfull, 0xc9de7b45d9a7d087ull, 0x28dc50168a4f1d91ull, 0x30d313606be904efull, 0xa904cc62afee73abull }}, {{ 0xba326c84d1794edbull, 0x1ef125c0fe00bf7bull, 0xe2b0d0ba808e254dull, 0x989b20e1671727b1ull, 0xe83ec1c4371a3157ull, 0x9a2ffbdadf5084afull }}, {{ 0x45f83d302ebd148bull, 0x356b7989ec077ad5ull, 0xdae82749058d7503ull, 0xf60f48ce06e78cf2ull, 0x127391aa2705ed6bull, 0x05dfd68cb9252edfull }}, {{ 0xbbb263e1d362cd6cull, 0x1632bf63384acc54ull, 0x8d1188da37869220ull, 0x9c98d80c450b817cull, 0xb883b0a5863b4637ull, 0x3abe617f3b73d4b6ull }}, {{ 0x54f7e6d241dc0637ull, 0xddfb79e032ebfb4full, 0x82af58862b41b540ull, 0x1df8707ab2730eddull, 0x3524e6773e50be2cull, 0x4b6fcef852864f23ull }}, {{ 0x51af043692983e24ull, 0xabd2c2c1fd37d119ull, 0x1ad9753db0911488ull, 0x2bb464caf87e94a7ull, 0x137100a86f276db9ull, 0xf25e15b3393f1760ull }}, {{ 0x30d62a21b9f26d68ull, 0xb63b9b93e42e2afdull, 0x0c7e9468e5aacd56ull, 0xb50befedb4f1ce87ull, 0xc26a0694578a493bull, 0x77acd9003c76e9c0ull }}, {{ 0xe85da5514378460full, 0x1e5413c6e9cdade3ull, 0x7cf1cc18f8ac0563ull, 0x12775f4911721146ull, 0x982441cb6b66dc55ull, 0xacc07a025ca52187ull }}, {{ 0x13a8752ca2b2bc92ull, 0x2f48c5c52208cae7ull, 0xe171f8f9b6b835dfull, 0xb8a9b8daae74acc0ull, 0xf16a91f232049b52ull, 0xbf84c4179e734f4bull }}, {{ 0xc49493be5afb5db7ull, 0xd8d7b9b35457ed06ull, 0xce73b9c123321ab7ull, 0x36a1388ad08ebf88ull, 0x6e29b375f42e113bull, 0x7b2fa8ec308118f7ull }}, {{ 0xadcdc56f8dd1a92aull, 0x786d41014b6f4243ull, 0x1085418b5ff50b2eull, 0x224c356c25937b58ull, 0x4da1029b89ccac50ull, 0xcfdc9939e50af9aaull }}, {{ 0xca09b65b8a309ba4ull, 0xb4448a0cf25896a4ull, 0xa5348f71bf926fd0ull, 0x56fa163977c2d170ull, 0x084a1a1361febb21ull, 0x1e9dfc42f26dc0a7ull }}, {{ 0xe4611f9365e6146aull, 0x0aad64817775e26full, 0x740d9a717bb85e27ull, 0x65c4de3ead9c2e66ull, 0x52e504c1d3f34f4dull, 0x322bda9d78498686ull }}, {{ 0xebcb3bc1fafccc22ull, 0x6ac5ed0eaa9ad85eull, 0x8888086ed533ad86ull, 0xf9b0ae72c819d000ull, 0x3cf22f9247811905ull, 0xf5b68a26b2df413full }}, {{ 0x35f05593cddff94full, 0x2bbb4292aa0c73b5ull, 0x555054545404c740ull, 0xc0e6d07bd1022005ull, 0x6175dbb6cb0afa3bull, 0x99216582fcb88c78ull }}, {{ 0x1b6357c60abfbd18ull, 0xb55099baa47c8514ull, 0x55234b4b482fc881ull, 0x890424d62a154035ull, 0xce9a9523ee6dc655ull, 0xfb4df71ddf357cb3ull }}, {{ 0x11e16dbc6b7d62ebull, 0x1526014a6cdd32c9ull, 0x5360f0f0d1ddd511ull, 0x5a29705da4d48215ull, 0x1209d3675049bf57ull, 0xd10ba72ab816df06ull }}, {{ 0xb2ce495c32e5dd30ull, 0xd37c0ce840a3fbdaull, 0x41c9696832aa52aaull, 0x859e63a8704d14d5ull, 0xb462420922e17969ull, 0x2a7487ab30e4b63cull }}, {{ 0xfc0edd99fcfaa3e4ull, 0x42d881128667d68aull, 0x91de1e11faa73aacull, 0x382fe4946302d054ull, 0x0bd6945b5ccebe1full, 0xa88d4cafe8ef1e5full }}, {{ 0xd894a803e1ca66ebull, 0x9c750ab9400e616dull, 0xb2ad2cb3ca884abaull, 0x31deedcbde1c234dull, 0x7661cb91a0136d38ull, 0x9584fedf19572fb6ull }}, {{ 0x75ce9026d1e80530ull, 0x1c926b3c808fce4aull, 0xfac3bf05e952eb4aull, 0xf2b549f6ad196108ull, 0x9fd1f3b040c24431ull, 0xd731f4b6fd67dd20ull }}, {{ 0x9a11a184331033e2ull, 0x1db8305d059e0ee8ull, 0xcba5763b1d3d30e5ull, 0x7b14e3a2c2fdca59ull, 0x3e3384e28796a9f3ull, 0x67f38f25e60ea346ull }}, {{ 0x04b04f29fea206d2ull, 0x2931e3a2382c9516ull, 0xf4769e4f2463e8f3ull, 0xced0e45b9de9e781ull, 0x6e0330d94be2a382ull, 0x0f83977afc9260beull }}, {{ 0x2ee317a3f2544432ull, 0x9bf2e45631bdd2dcull, 0x8ca22f176be7197full, 0x1428eb942b230b13ull, 0x4c1fe87cf6da631cull, 0x9b23eacdddb7c770ull }}, {{ 0xd4deec67774aa9f0ull, 0x177ceb5df16a3c99ull, 0x7e55d6ea3706fefcull, 0xc99933c9af5e6ec3ull, 0xf93f14e1a487df18ull, 0x0f672c0aa92dca62ull }}, {{ 0x50b53c0aa8eaa35dull, 0xeae131ab6e265e02ull, 0xef5a65262645f5d8ull, 0xdffc05e0d9b053a2ull, 0xbc76d0d06d4eb6f7ull, 0x9a07b86a9bc9e7ddull }}, {{ 0x2714586a992a61a1ull, 0x2ccbf0b24d7fac17ull, 0x5987f37d7ebb9a79ull, 0xbfd83ac880e3445dull, 0x5ca42824451325aeull, 0x044d342a15e30ea9ull }}, {{ 0x86cb7429fba7d047ull, 0xbff766f706fcb8e7ull, 0x7f4f82e6f35408bbull, 0x7e724bd508e0aba5ull, 0x9e69916ab2bf78d3ull, 0x2b0409a4dade929dull }}, {{ 0x43f289a3d48e22c6ull, 0x7faa05a645df390bull, 0xf91b1d0581485755ull, 0xf076f65258c6b476ull, 0x301fae2afb7ab842ull, 0xae2860708cb1ba28ull }}, {{ 0xa77960664d8d5bb8ull, 0xfca4387ebab83a70ull, 0xbb0f22370cd36956ull, 0x64a59f3777c30ca5ull, 0xe13ccdadd2cb329dull, 0xcd93c4657ef14591ull }}, {{ 0x8abdc3ff07859531ull, 0xde6a34f34b324866ull, 0x4e97562680421d65ull, 0xee78382aad9e7e79ull, 0xcc6008ca3beffa25ull, 0x07c5abf6f56cb7b2ull }}, {{ 0x6b69a7f64b37d3e6ull, 0xb0261180eff6d401ull, 0x11e95d81029525faull, 0x50b231aac830f0bdull, 0xfbc057e6575fc57bull, 0x4db8b7a5963f2cfbull }}, {{ 0x32208f9ef02e46f8ull, 0xe17caf095fa4480eull, 0xb31da70a19d37bcaull, 0x26f5f0abd1e96762ull, 0xd5836eff69bdb6d1ull, 0x09372c77de77c1d7ull }}, {{ 0xf5459c3561cec5b4ull, 0xceded65dbc6ad08dull, 0xff2886650242d5ecull, 0x859b66b6331e09daull, 0x572255fa2169242bull, 0x5c27bcaeb0ad926eull }}, {{ 0x94b81a15d213b908ull, 0x14b45fa95c2c258bull, 0xf7953ff2169c5b40ull, 0x3812031dff2c628dull, 0x67575bc54e1b69b3ull, 0x998d5ed2e6c7b84full }}, {{ 0xcf3104da34c53a4full, 0xcf0bbc9d99b97773ull, 0xabd47f74e21b9080ull, 0x30b41f2bf7bbd98bull, 0x096995b50d122100ull, 0xff85b43d03cd331aull }}, {{ 0x17ea30860fb44713ull, 0x16755e28013eaa86ull, 0xb64cfa90d513a508ull, 0xe70937b7ad567f74ull, 0x5e1fd91282b54a01ull, 0xfb390a622603ff04ull }}, {{ 0xef25e53c9d0ac6beull, 0xe095ad900c72a93cull, 0x1f01c9a852c47250ull, 0x065c2d2cc560fa8full, 0xad3e7ab91b14e413ull, 0xd03a67d57c27f62bull }}, {{ 0x577af45e226bc369ull, 0xc5d8c7a07c7a9c61ull, 0x3611e0933bac7728ull, 0x3f99c3bfb5c9c997ull, 0xc470cb3b0ed0e8beull, 0x22480e56d98f9db4ull }}, {{ 0x6acd8bad5835a216ull, 0xba77cc44dcca1bcdull, 0x1cb2c5c054bca797ull, 0x7c01a57d19e1dfe8ull, 0xac67f04e9429176eull, 0x56d08f647f9c290full }}, {{ 0x2c0774c5721854dfull, 0x48adfab09fe51606ull, 0x1efbb9834f5e8bedull, 0xd81076e302d2bf11ull, 0xbc0f6311c99aea50ull, 0x642599ecfc199a9cull }}, {{ 0xb84a8fb674f350b3ull, 0xd6cbcae63ef2dc3dull, 0x35d53f2119b17744ull, 0x70a4a4de1c3b76abull, 0x5899deb1e00d2728ull, 0xe9780341d9000a1full }}, {{ 0x32e99d2091812701ull, 0x63f5ecfe757c9a69ull, 0x1a54774b00eea8b0ull, 0x666e70ad1a52a2b0ull, 0x7602b2f2c0838794ull, 0x1eb020927a006539ull }}, {{ 0xfd202345af0b8608ull, 0xe79b41f096de081bull, 0x074ca8ee095296e3ull, 0x005066c3073a5ae1ull, 0x9c1afd7b85234bccull, 0x32e145b8c403f43eull }}, {{ 0xe34160b8d6733c4full, 0x0c109365e4ac5117ull, 0x48fe994c5d39e4e7ull, 0x0324039e48478ccaull, 0x190de6d33360f5f8ull, 0xfcccb937a8278a72ull }}, {{ 0xe08dc73860805b11ull, 0x78a5c1faeebb2aeeull, 0xd9f1fcfba442f106ull, 0x1f68242ed2cb7fe6ull, 0xfa8b044001c99bb0ull, 0xdfff3c2c918b6874ull }}, {{ 0xc589c833c5038eadull, 0xb67993cd534fad54ull, 0x8373e1d46a9d6a40ull, 0x3a1169d43bf2ff04ull, 0xc96e2a8011e014e1ull, 0xbff859bdaf721491ull }}, {{ 0xb761d205b22392bdull, 0x20bfc605411cc54full, 0x2286d24c2a262687ull, 0x44ae224a577df62dull, 0xde4da900b2c0d0ccull, 0x7fb38168da74cdb1ull }}, {{ 0x29d23438f563bb63ull, 0x477dbc348b1fb51dull, 0x594436f9a57d8147ull, 0xaecd56e76aeb9dc3ull, 0xaf089a06fb8827faull, 0xfd030e18889008f2ull }}, {{ 0xa2360a3995e551daull, 0xcae95a0d6f3d1323ull, 0x7caa25c076e70cc8ull, 0xd405650a2d3429a1ull, 0xd6560445d3518fcaull, 0xe21e8cf555a0597aull }}, {{ 0x561c663fdaf5327full, 0xed1d84865862bf64ull, 0xdea57984a5067fd7ull, 0x4835f265c409a04eull, 0x5f5c2aba412f9decull, 0xd531819558437eccull }}, {{ 0x5d1bfe7e8d93f8f7ull, 0x43272d3f73db79ebull, 0xb276bf2e7240fe6full, 0xd21b77f9a8604314ull, 0xb999ab468bdc2b3aull, 0x53ef0fd572a2f3fbull }}, {{ 0xa317f0f187c7b9a2ull, 0x9f87c47a8692c331ull, 0xf8a377d07689f058ull, 0x3512afc093c29eceull, 0x4000b0c17699b04cull, 0x47569e567a5d87d5ull }}, {{ 0x5eef696f4dcd4053ull, 0x3b4dacc941bb9ff0ull, 0xb662ae24a1636376ull, 0x12badd85c59a3415ull, 0x8006e78ea200e2faull, 0xc9622f60c7a74e54ull }}, {{ 0xb55a1e590a04833aull, 0x5108bfdc91543f63ull, 0x1fdacd6e4de1e29eull, 0xbb4ca739b80608d9ull, 0x00450b925408ddc4ull, 0xddd5d9c7cc890f4dull }}, {{ 0x15852f7a642d2047ull, 0x2a577e9dad4a79e5ull, 0x3e8c064f0ad2da2full, 0x50fe8841303c587bull, 0x02b273b74858a9afull, 0xaa5a81cdfd5a9902ull }}, {{ 0xd733dac7e9c342c4ull, 0xa76af228c4e8c2f2ull, 0x71783f166c3c85d7ull, 0x29f1528be25b74d0ull, 0x1af88528d376a0d9ull, 0xa789120be589fa14ull }}, {{ 0x68068bcf21a09babull, 0x8a2d7597b1179d7cull, 0x6eb276e03a5d3a6cull, 0xa36d3976d7929024ull, 0x0db5339842a2487bull, 0x8b5ab476f763c4c9ull }}, {{ 0x10417617504614afull, 0x65c697eceaec26dcull, 0x52f8a4c247a4483dull, 0x62443ea46bb9a16cull, 0x891403f29a56d4d4ull, 0x718b0ca5a9e5afdaull }}, {{ 0xa28e9ce922bcced4ull, 0xf9c1ef412d398498ull, 0x3db66f96cc6ad265ull, 0xd6aa726c35404e3bull, 0x5ac8277a0764504bull, 0x6f6e7e78a2f8de89ull }}, {{ 0x5992211b5b601449ull, 0xc193588bc43f2df6ull, 0x69205be3fc2c37fbull, 0x62a8783a14830e50ull, 0x8bd18ac449eb22f6ull, 0x5a50f0b65db8b15dull }}, {{ 0x7fb54b1191c0cad7ull, 0x8fc17575aa77cb9full, 0x1b4396e7d9ba2fd5ull, 0xda94b244cd1e8f24ull, 0x762f6baae32f5d9full, 0x8729671fa936eda7ull }}, {{ 0xfd14eeafb187ec67ull, 0x9d8e9698a8adf43aull, 0x10a3e50e8145de57ull, 0x89cef6b003319769ull, 0x9dda34acdfd9a83eull, 0x479e073c9c25488aull }}, {{ 0xe2d152dcef4f3c05ull, 0x2791e1f696cb8a4dull, 0xa666f2910cbaaf6cull, 0x6215a2e01fefea1aull, 0x2a860ec0be809271ull, 0xcc2c485e1974d56aull }}, {{ 0xdc2d3ca15918582dull, 0x8bb2d3a1e3f3670aull, 0x800579aa7f4ada39ull, 0xd4d85cc13f5f250aull, 0xa93c93877105b86dull, 0xf9bad3acfe905625ull }}, {{ 0x99c45e4d7af371c3ull, 0x74fc4452e782066cull, 0x0036c0a8f8ec863full, 0x50739f8c79b77269ull, 0x9c5dc34a6a39344aull, 0xc14c44c1f1a35d78ull }}, {{ 0x01abaf06cd8271a2ull, 0x91daab3d0b14403eull, 0x02238699b93d3e7aull, 0x24843b7cc12a781aull, 0x1ba9a0e8263c0ae7ull, 0x8cfaaf937061a6b6ull }}, {{ 0x10b4d64407187051ull, 0xb28ab0626eca826cull, 0x156342013c6470c9ull, 0x6d2a52df8ba8b104ull, 0x14a049117e586d07ull, 0x81cadbc263d0831dull }}, {{ 0xa7105ea846f4632cull, 0xf96ae3d853e91838ull, 0xd5e0940c5bec67e0ull, 0x43a73cbb7496ea28ull, 0xce42daaeef74424aull, 0x11ec9597e6251f22ull }}, {{ 0x86a3b292c58bdfbaull, 0xbe2ce673471af236ull, 0x5ac5c87b973c0ec9ull, 0xa4885f528de52598ull, 0x0e9c8ad55a8a96e6ull, 0xb33dd7eefd73375cull }}, {{ 0x4264f9bbb776bd45ull, 0x6dc10080c70d7621ull, 0x8bb9d4d3e85893e1ull, 0x6d53b9398af377f3ull, 0x921d6c558969e502ull, 0x006a6f55e6802998ull }}, {{ 0x97f1c1552aa364b3ull, 0x498a0507c6869d4cull, 0x754250471375c6ceull, 0x45453c3f6d82af83ull, 0xb5263b575e22f218ull, 0x0428595b01019ff5ull }}, {{ 0xef718d53aa61ef01ull, 0xdf64324dc14224fdull, 0x949722c6c299c40eull, 0xb4b45a7a471adb22ull, 0x137e5169ad5d74f2ull, 0x29937d8e0a103f99ull }}, {{ 0x5a6f8544a7d3560aull, 0xb9e9f7098c9571ebull, 0xcde75bc39a01a894ull, 0x0f0b88c6c70c8f59ull, 0xc2ef2e20c5a6917bull, 0x9fc2e78c64a27bfaull }}, {{ 0x885b34ae8e415c60ull, 0x4323a65f7dd67331ull, 0x0b0995a4041095cfull, 0x967357c3c67d9982ull, 0x9d57cd47b881aeceull, 0x3d9d0b7bee58d7cbull }}, {{ 0x53900ed18e8d9bc4ull, 0x9f647fbaea607fefull, 0x6e5fd86828a5da18ull, 0xe0816da5c0e7ff14ull, 0x256e04cd3510d411ull, 0x682272d74f786df4ull }}, {{ 0x43a0942f918815adull, 0x39ecfd4d27c4ff59ull, 0x4fbe7411967a84f6ull, 0xc50e4879890ff6ccull, 0x764c300412a848b2ull, 0x11587c691ab44b89ull }}, {{ 0xa445c9dbaf50d8bfull, 0x4341e5038db1f97cull, 0x1d7088afe0c9319eull, 0xb28ed4bf5a9fa3fbull, 0x9ef9e028ba92d6fbull, 0xad74dc1b0b0af35eull }}, {{ 0x6ab9e294d9287779ull, 0xa092f22388f3bedeull, 0x266556dec7dbf02eull, 0xf9944f798a3c67cfull, 0x35c2c19749bc65d4ull, 0xc690990e6e6d81b2ull }}, {{ 0x2b42d9d07b94aabeull, 0x45bd7563598574b0ull, 0x7ff564b3ce9761d2ull, 0xbfcb1abf665c0e17ull, 0x199b8fe8e15bfa51ull, 0xc1a5fa90504710f6ull }}, {{ 0xb09c8224d3ceab6eull, 0xb96695e17f368ee1ull, 0xff95ef0611e9d236ull, 0x7def0b79ff988ceaull, 0x00139f18cd97c731ull, 0x907bc9a322c6a99dull }}, {{ 0xe61d15704612b247ull, 0x3e01dacef82194d0ull, 0xfbdb563cb3223623ull, 0xeb5672c3fbf5812dull, 0x00c436f807edc7eeull, 0xa4d5e05f5bc2a022ull }}, {{ 0xfd22d662bcbaf6c7ull, 0x6c128c15b14fd028ull, 0xd6915e5eff561d60ull, 0x31607ba7d7970bcbull, 0x07aa25b04f49cf55ull, 0x705ac3b9959a4154ull }}, {{ 0xe35c5fdb5f4da3c4ull, 0x38b978d8ed1e2199ull, 0x61adafb5f95d25c4ull, 0xedc4d48e6be675f6ull, 0x4ca578e318e21953ull, 0x638ba53fd8068d48ull }}, {{ 0xe19bbe91b90865acull, 0x373eb879432d5002ull, 0xd0c8dd1bbda379aaull, 0x49b04d9037009b9full, 0xfe76b8def8d4fd47ull, 0xe374747e704184d2ull }}, {{ 0xd01571b13a53f8b5ull, 0x287334bc9fc5201cull, 0x27d8a3156862c0a6ull, 0xe0e307a22606143eull, 0xf0a338b5b851e4c8ull, 0xe28c8cf0628f303dull }}, {{ 0x20d670ec4747b70dull, 0x94800f5e3db34120ull, 0x8e765ed613db867dull, 0xc8de4c557c3cca6dull, 0x666037193332efd8ull, 0xd97d8163d997e26bull }}, {{ 0x4860693ac8cd2684ull, 0xcd0099ae69008b41ull, 0x909fb45cc69340e7ull, 0xd8aefb56da5fe847ull, 0xffc226fbfffd5e77ull, 0x7ee70de67feed831ull }}, {{ 0xd3c41c4bd8038129ull, 0x020600d01a05708cull, 0xa63d0b9fc1c0890eull, 0x76d5d16487bf12cbull, 0xfd9585d7ffe5b0aeull, 0xf5068b00ff5471f3ull }}, {{ 0x45a91af670230b96ull, 0x143c082104366580ull, 0x7e62743d91855a8cull, 0xa45a2ded4d76bbf4ull, 0xe7d73a6ffef8e6d0ull, 0x92416e09f94c7387ull }}, {{ 0xb89b0da0615e73daull, 0xca58514a2a1ff702ull, 0xefd88a67af358978ull, 0x6b85cb4506a3578cull, 0x0e68485ff5b90426ull, 0xb68e4c63bcfc834full }}, {{ 0x360e8843cdb08680ull, 0xe7732ce5a53fa61bull, 0x5e75680cd8175eb7ull, 0x3339f0b242616b81ull, 0x9012d3bf993a2980ull, 0x218efbe561dd2116ull }}, {{ 0x1c9152a608e540feull, 0x0a7fc0f8747c7d10ull, 0xb096108070e9b32full, 0x004366f697ce330dull, 0xa0bc457bfc459f02ull, 0x4f95d6f5d2a34ae1ull }}, {{ 0x1dad3a7c58f489e9ull, 0x68fd89b48cdce2a1ull, 0xe5dca5046920ffd6ull, 0x02a205a1ee0dfe88ull, 0x475ab6d7dab83614ull, 0x1bda659a3a60ecd0ull }}, {{ 0x28c448db798d631full, 0x19e7610d80a0da4bull, 0xfa9e722c1b49fe60ull, 0x1a5438534c8bf158ull, 0xc98b246e8b321cc8ull, 0x1687f80647c94022ull }}, {{ 0x97aad892bf85df34ull, 0x0309ca87064886efull, 0xca3075b910e3efc1ull, 0x074a3340fd776d79ull, 0xdf6f6c516ff51fd1ull, 0xe14fb03ecddc815bull }}, {{ 0xecac75bb7b3ab80aull, 0x1e61e9463ed5455bull, 0xe5e4993aa8e75d8aull, 0x48e60089e6aa46c1ull, 0xba5a3b2e5f933e2aull, 0xcd1ce2740a9d0d96ull }}, {{ 0x3ebc9952d04b3066ull, 0x2fd31cbe7454b597ull, 0xfaedfc4a9909a765ull, 0xd8fc056302a6c392ull, 0x47864fcfbbc06da6ull, 0x0320d8886a2287e3ull }}, {{ 0x735dfd3c22efe3f7ull, 0xde3f1f708b4f17e8ull, 0xcd4bdae9fa6089f3ull, 0x79d835de1a83a3bdull, 0xcb3f1e1d55844884ull, 0x1f48755425594ee0ull }}, {{ 0x81abe4595d5ee7a8ull, 0xae773a657116ef14ull, 0x04f68d23c7c56386ull, 0xc2721aad0924656aull, 0xf0772d25572ad52cull, 0x38d49549757d14c7ull }}, {{ 0x10b6eb7da5b50c8eull, 0xd0a847f66ae556cdull, 0x31a18365cdb5e342ull, 0x98750ac25b6bf624ull, 0x64a7c37567ac53bfull, 0x384dd4de96e2cfcfull }}, {{ 0xa72532e879127d8cull, 0x2692cfa02cf56402ull, 0xf04f21fa091ae09cull, 0xf4926b9792379d69ull, 0xee8da2960cbb457bull, 0x330a50b1e4dc1e19ull }}, {{ 0x8773fd14bab8e776ull, 0x81bc1c41c195e81aull, 0x631753c45b0cc619ull, 0x8db833ebb62c2623ull, 0x518859dc7f50b6d7ull, 0xfe6726f2f0992d03ull }}, {{ 0x4a87e2cf4b390a9eull, 0x11591a918fdb1109ull, 0xdee945ab8e7fbcffull, 0x893207351db97d61ull, 0x2f53829cf927246bull, 0xf007857d65fbc221ull }}, {{ 0xe94edc18f03a6a2cull, 0xad7b09af9e8eaa5cull, 0xb51cb8b390fd61f6ull, 0x5bf44813293ee5d2ull, 0xd9431a21bb876c33ull, 0x604b36e5fbd5954bull }}, {{ 0x1d1498f9624825b9ull, 0xc6ce60dc3192a7a1ull, 0x131f3703a9e5d3a2ull, 0x978ad0bf9c74fa3bull, 0x7c9f0551534a3a01ull, 0xc2f024fbd657d4f6ull }}, {{ 0x22cdf9bdd6d17939ull, 0xc40fc899efba8c4bull, 0xbf382624a2fa445bull, 0xeb6c277c1c91c64eull, 0xde36352d40e6440full, 0x9d6171d65f6e51a0ull }}, {{ 0x5c0bc16a642ebc37ull, 0xa89dd6035d497aefull, 0x78317d6e5dc6ab95ull, 0x32398ad91db1bf13ull, 0xae1e13c488fea89full, 0x25ce725fba4f3048ull }}, {{ 0x98758e27e9d35a29ull, 0x962a5c21a4decd59ull, 0xb1eee64fa9c2b3d8ull, 0xf63f6c7b28f176c2ull, 0xcd2cc5ad59f29637ull, 0x7a1077bd4717e2d6ull }}, {{ 0xf4978d8f22418599ull, 0xdda7995070b4057full, 0xf354ff1ca19b0675ull, 0x9e7a3ccf996ea39aull, 0x03bfb8c58379de2full, 0xc4a4ad64c6eedc64ull }}, {{ 0x8deb8797568f37f7ull, 0xa88bfd24670836ffull, 0x8151f71e500e409aull, 0x30c6601bfe52640dull, 0x257d37b722c2addcull, 0xae6ec5efc5549be8ull }}, {{ 0x8b334be961982fa7ull, 0x9577e36c065225fbull, 0x0d33a72f208e860aull, 0xe7bfc117ef37e887ull, 0x76e42d275b9aca99ull, 0xd053bb5db54e1711ull }}, {{ 0x7000f71dcff1dc82ull, 0xd6aee2383f357bd3ull, 0x840487d745913c69ull, 0x0d7d8aef582f1546ull, 0xa4e9c389940bea03ull, 0x234551a9150ce6aeull }}, {{ 0x6009a72a1f729d16ull, 0x62d4d6327816d642ull, 0x282d4e68b7ac5c22ull, 0x86e76d5971d6d4c1ull, 0x7121a35fc877241eull, 0x60b5309ad28102d2ull }}, {{ 0xc06087a53a7a22deull, 0xdc505df8b0e45e97ull, 0x91c510172cbb9957ull, 0x450a457e72644f8bull, 0x6b5061bdd4a76931ull, 0xc713e60c390a1c38ull }}, {{ 0x83c54c7448c55ca9ull, 0x9b23abb6e8ebb1edull, 0xb1b2a0e7bf53fd6eull, 0xb266b6f077eb1b73ull, 0x3123d16a4e8a1becull, 0xc6c6fc7a3a651a34ull }}, {{ 0x25b4fc8ad7b59e99ull, 0x0f64b5251934f347ull, 0xf0fa490d7947e652ull, 0xf8032564af2f1284ull, 0xeb662e271165173eull, 0xc3c5dcc647f30609ull }}, {{ 0x7911dd6c6d1831fbull, 0x99ef1372fc1180c7ull, 0x69c6da86bcceff34ull, 0xb01f75eed7d6b931ull, 0x31fdcd86adf2e875ull, 0xa5ba9fbecf7e3c63ull }}, {{ 0xbab2a63c42f1f3d3ull, 0x0356c27dd8af07caull, 0x21c489436015f80eull, 0xe13a9b546e633beeull, 0xf3ea0742cb7d1498ull, 0x794a3d741aee5bdfull }}, {{ 0x4afa7e5a9d73863eull, 0x216398ea76d64debull, 0x51ad5ca1c0dbb08cull, 0xcc4a114c4fe0574dull, 0x8724489bf2e2cdf8ull, 0xbce666890d4f96bfull }}, {{ 0xedc8ef8a26833e69ull, 0x4de3f928a45f0b30ull, 0x30c59e518894e579ull, 0xfae4acfb1ec36905ull, 0x476ad6177cdc0bb7ull, 0x6100015a851be37bull }}, {{ 0x49d95b6581207016ull, 0x0ae7bb966bb66fe9ull, 0xe7b82f2f55d0f6bdull, 0xcceec1cf33a21a33ull, 0xca2c5ceae098752full, 0xca000d893316e2d0ull }}, {{ 0xe27d91f70b4460dbull, 0x6d0d53e035205f1cull, 0x0d31d7d95a29a362ull, 0x0153921804550607ull, 0xe5bba12cc5f493deull, 0xe400875bfee4dc27ull }}, {{ 0xd8e7b3a670abc88full, 0x428546c21343b720ull, 0x83f26e7d85a061d8ull, 0x0d43b4f02b523c46ull, 0xf9544bbfbb8dc6acull, 0xe8054997f4f0998eull }}, {{ 0x790d048066b5d597ull, 0x9934c394c0a52748ull, 0x277850e73843d272ull, 0x84a51161b1365ac1ull, 0xbd4af57d5389c2b8ull, 0x1034dfef9165ff95ull }}, {{ 0xba822d04031a57e9ull, 0xfc0fa3cf867388d4ull, 0x8ab3290832a63879ull, 0x2e72add0ec1f8b8bull, 0x64ed96e543619b35ull, 0xa210bf5badfbfbd9ull }}, {{ 0x4915c2281f076f15ull, 0xd89c661b4083584full, 0x6aff9a51fa7e34c3ull, 0xd07aca29393b7373ull, 0xf147e4f4a1d01013ull, 0x54a77994cbd7d67dull }}, {{ 0xdad99591364a56d7ull, 0x761bfd1085217318ull, 0x2dfc0733c8ee0fa6ull, 0x24cbe59c3c528282ull, 0x6ccef18e5220a0c6ull, 0x4e8abfcff66e60ebull }}, {{ 0x8c7fd7ac1ee76464ull, 0x9d17e2a5334e7ef8ull, 0xcbd84805d94c9c80ull, 0x6ff6f81a5b391915ull, 0x40156f8f354647bdull, 0x116b7e1fa04fc932ull }}, {{ 0x7cfe6cb93509ebe7ull, 0x22eeda740110f5b5ull, 0xf672d03a7cfe1d06ull, 0x5fa5b107903afad9ull, 0x80d65b9814becd66ull, 0xae32ed3c431ddbf6ull }}, {{ 0xe1f03f3c12633708ull, 0x5d5488880aa99916ull, 0xa07c2248e1ed223dull, 0xbc78ea4ba24dcc83ull, 0x085f93f0cf7405ffull, 0xcdfd445a9f2a97a1ull }}, {{ 0xd3627858b7e0264full, 0xa54d55506a9ffae4ull, 0x44d956d8d3435665ull, 0x5cb926f45709fd24ull, 0x53bbc7681a883bfdull, 0x0be4ab8a37a9ec4aull }}, {{ 0x41d8b3772ec17f17ull, 0x750555242a3fccf0ull, 0xb07d647840a15ff8ull, 0x9f3b858b6663e36aull, 0x4555ca11095257e5ull, 0x76eeb3662ca33ae7ull }}, {{ 0x927702a7d38ef6e3ull, 0x92355369a67e0162ull, 0xe4e5ecb2864dbfb4ull, 0x38533771ffe6e22aull, 0xb559e4aa5d376ef8ull, 0xa55301fdbe604d08ull }}, {{ 0xb8a61a8e4395a4e0ull, 0xb615422080ec0dd9ull, 0xf0fb3ef93f097d0dull, 0x33402a73ff04d5acull, 0x1582eea7a42a55b2ull, 0x753e13e96fc30257ull }}, {{ 0x367d098ea3d870c0ull, 0x1cd4954509388a81ull, 0x69d075bc765ee289ull, 0x0081a887f63058c1ull, 0xd71d528c69a758f6ull, 0x946cc71e5d9e1766ull }}, {{ 0x20e25f9266746782ull, 0x204dd4b25c35690cull, 0x2224995c9fb4d95bull, 0x0510954f9de3778eull, 0x6725397c2089799cull, 0xcc3fc72fa82cea04ull }}, {{ 0x48d7bbb8008c0b13ull, 0x430a4ef79a161a79ull, 0x556dfd9e3d107d8full, 0x32a5d51c2ae2ab8dull, 0x07743ed9455ec018ull, 0xfa7dc7dc91c1242cull }}, {{ 0xd86d553005786ec3ull, 0x9e6715ac04dd08bcull, 0x564be82e62a4e798ull, 0xfa7a5319acdab385ull, 0x4a8a747cb5b380f1ull, 0xc8e9ce9db18b69b8ull }}, {{ 0x744553e036b4539eull, 0x3006d8b830a25760ull, 0x5ef711cfda710bf6ull, 0xc8c73f00c08b0335ull, 0xe9688cdf19030973ull, 0xd9221228ef722132ull }}, {{ 0x8ab546c2230b4427ull, 0xe0447731e65769c4ull, 0xb5a6b21e886a779dull, 0xd7c87607856e2015ull, 0x1e1580b6fa1e5e85ull, 0x7b54b5995a754bfdull }}, {{ 0x6b14c3955e70a988ull, 0xc2aca7f2ff6a21adull, 0x1882f5315428ac2aull, 0x6dd49c4b364d40d9ull, 0x2cd70725c52fb13aull, 0xd14f17fd8894f7e3ull }}, {{ 0x2ecfa3d5b0669f4cull, 0x9abe8f7dfa2550c6ull, 0xf51d93ed4996b9abull, 0x4a4e1af01f04887aull, 0xc0664779b3dcec48ull, 0x2d16efe755d1aedfull }}, {{ 0xd41c6658e40238faull, 0x0b719aebc57527bdull, 0x9327c744dfe340b4ull, 0xe70d0d61362d54cdull, 0x83fecac106a13ad2ull, 0xc2e55f095a30d4bdull }}, {{ 0x491bff78e81639c5ull, 0x72700d35b6938d6aull, 0xbf8dc8b0bee08708ull, 0x068285cc1dc55007ull, 0x27f3eb8a424c4c3dull, 0x9cf5b65d85e84f67ull }}, {{ 0xdb17fab910de41b6ull, 0x7860841921c38626ull, 0x7b89d6e774c54654ull, 0x411939f929b5204dull, 0x8f87336696fafa62ull, 0x21991fa73b131a07ull }}, {{ 0x8eefcb3aa8ae9120ull, 0xb3c528fb51a33d84ull, 0xd362650a8fb4bf4cull, 0x8afc43bba1134306ull, 0x9b480201e5cdc7d6ull, 0x4ffb3c884ebf044bull }}, {{ 0x955df04a96d1ab3cull, 0x05b399d13060672dull, 0x41d7f2699d0f78ffull, 0x6ddaa5544ac09e44ull, 0x10d01412fa09ce61ull, 0x1fd05d5313762af4ull }}, {{ 0xd5ab62e9e430b055ull, 0x3904022be3c407c7ull, 0x926f7820229ab9f6ull, 0x4a8a754aeb862eaaull, 0xa820c8bdc4620fceull, 0x3e23a53ec29dad88ull }}, {{ 0x58b1dd22e9e6e350ull, 0x3a2815b6e5a84dceull, 0xb85ab1415a0b439eull, 0xe96894ed333dd2a9ull, 0x9147d769abd49e0eull, 0x6d6474739a28c756ull }}, {{ 0x76f2a35d2304e122ull, 0x4590d924f8930a0full, 0x338aec8d8470a42eull, 0x1e15d144006a3aa1ull, 0xacce6a20b64e2c95ull, 0x45ec8c840597c961ull }}, {{ 0xa57a61a35e30cb59ull, 0xb7a87b71b5be649aull, 0x036d3d872c6669ceull, 0x2cda2ca804264a4cull, 0xc01025471f0dbdd3ull, 0xbb3d7d2837edddd0ull }}, {{ 0x76c7d061ade7f176ull, 0x2c94d271196fee0aull, 0x22446747bc002213ull, 0xc085be90297ee6f8ull, 0x80a174c736896a3full, 0x5066e3922f4aaa27ull }}, {{ 0xa3ce23d0cb0f6e9dull, 0xbdd0386afe5f4c68ull, 0x56ac08cd580154bfull, 0x853971a19ef505b1ull, 0x064e8fc8215e267dull, 0x2404e3b5d8eaa58bull }}, {{ 0x660d6627ee9a521full, 0x6a22342defb8fc16ull, 0x62b85805700d4f7dull, 0x343e7050359238edull, 0x3f119dd14dad80e7ull, 0x6830e51a792a776eull }}, {{ 0xfc85fd8f52073535ull, 0x255609cb5d39d8dfull, 0xdb33703660851ae6ull, 0x0a70632217b63945ull, 0x76b02a2d08c70908ull, 0x11e8f308bba8aa4eull }}, {{ 0xdd3be79934481416ull, 0x755c61f1a44278bfull, 0x9002621fc5330cfdull, 0x6863df54ed1e3cbaull, 0xa2e1a5c257c65a50ull, 0xb3197e575496a710ull }}, {{ 0xa4570bfc0ad0c8dfull, 0x959bd3706a98b77eull, 0xa017d53db3fe81e6ull, 0x13e6b951432e5f49ull, 0x5cd079976dbf8724ull, 0xfefeef694de286a6ull }}, {{ 0x6b6677d86c27d8bbull, 0xd816426429f72af2ull, 0x40ee546907f11301ull, 0xc7033d2c9fcfb8e0ull, 0xa024bfea497b4768ull, 0xf5f55a1d0ad9427full }}, {{ 0x3200ae74398e774bull, 0x70de97e9a3a7ad78ull, 0x894f4c1a4f6abe12ull, 0xc62063be3e1d38c2ull, 0x416f7f26ded0ca17ull, 0x9b9585226c7c98fcull }}, {{ 0xf406d08a3f90a8eaull, 0x68b1ef20648cc6b1ull, 0x5d18f9071a2b6cb8ull, 0xbd43e56e6d243799ull, 0x8e5af784b427e4edull, 0x13d733583cddf9daull }}, {{ 0x884425667ba69926ull, 0x16f35743ed7fc2f3ull, 0xa2f9ba4705b23f34ull, 0x64a6f650436a2bfdull, 0x8f8dab2f098ef149ull, 0xc668017260abc289ull }}, {{ 0x52a97600d481fb7cull, 0xe58168a746fd9d83ull, 0x5dc146c638f67808ull, 0xee859f22a225b7e8ull, 0x9b88afd65f956cddull, 0xc0100e77c6b5995full }}, {{ 0x3a9e9c084d13d2d7ull, 0xf70e1688c5e82721ull, 0xa98cc3be39a0b058ull, 0x5138375a55792f13ull, 0x1356de5fbbd640abull, 0x80a090adc317fdbcull }}, {{ 0x4a32185302c63c62ull, 0xa68ce157bb11874cull, 0x9f7fa56e4046e379ull, 0x2c32298756bbd6c4ull, 0xc164afbd565e86b1ull, 0x0645a6c99eefe958ull }}, {{ 0xe5f4f33e1bbe5bd6ull, 0x8180cd6d4eaf48faull, 0x3afc764e82c4e2c0ull, 0xb9f59f49635663aeull, 0x8deedd655fb142ebull, 0x3eb883e0355f1d77ull }}, {{ 0xfb91806d156f965eull, 0x0f08064512d8d9ccull, 0x4ddc9f111bb0db85ull, 0x439838dde15fe4ceull, 0x8b54a5f5bcec9d35ull, 0x733526c215b726abull }}, {{ 0xd3af0442d65bdfadull, 0x96503eb2bc788201ull, 0x0a9e36ab14e89332ull, 0xa3f238aacdbef00full, 0x714e7b99613e2414ull, 0x80138394d92782b3ull }}, {{ 0x44d62a9c5f96bcc1ull, 0xdf2272fb5cb51412ull, 0x6a2e22aed115bff9ull, 0x677636ac09756096ull, 0x6d10d3fdcc6d68ceull, 0x00c323d07b8b1b02ull }}, {{ 0xb05daa1bbbe35f88ull, 0xb7587dd19f12c8b6ull, 0x25cd5ad42ad97fc2ull, 0x0a9e22b85e95c5e0ull, 0x42a847e9fc461810ull, 0x079f6624d36f0e18ull }}, {{ 0xe3a8a51556e1bb4dull, 0x2974ea3036bbd722ull, 0x7a058c49ac7efd9bull, 0x6a2d5b33b1d9bac1ull, 0x9a92cf23dabcf0a0ull, 0x4c39fd7042568cf2ull }}, {{ 0xe49672d564d15105ull, 0x9e9125e22356675cull, 0xc4377ae0bcf5e80full, 0x25c59004f2814b8eull, 0x09bc17668b616644ull, 0xfa43e6629761817aull }}, {{ 0xede07c55f02d2a33ull, 0x31ab7ad5616009a0ull, 0xaa2accc7619b109cull, 0x79b7a031790cf393ull, 0x6158ea0171cdfea9ull, 0xc6a6ffd9e9cf0ec4ull }}, {{ 0x4ac4db5b61c3a601ull, 0xf0b2cc55cdc06049ull, 0xa5abffc9d00ea619ull, 0xc12c41eeba8183c4ull, 0xcd79240e720bf29eull, 0xc285fe83221693abull }}, {{ 0xebb09191d1a47c0eull, 0x66fbfb5a0983c2dcull, 0x78b7fde220927d03ull, 0x8bba9353490f25aeull, 0x06bb689074777a33ull, 0x993bf11f54e1c4b6ull }}, {{ 0x34e5afb2306cd88dull, 0x05d7d1845f259ca1ull, 0xb72fead545b8e222ull, 0x7549c140da9778d0ull, 0x435215a48caac603ull, 0xfc576b3950d1af1cull }}, {{ 0x10f8dcf5e4407585ull, 0x3a6e2f2bb7781e4cull, 0x27df2c54b938d554ull, 0x94e18c8889eab827ull, 0xa134d86d7eabbc22ull, 0xdb6a303d2830d71aull }}, {{ 0xa9b8a19aea849736ull, 0x484dd7b52ab12ef8ull, 0x8eb7bb4f3c38554aull, 0xd0cf7d55632b3187ull, 0x4c107446f2b55959ull, 0x9225e26391e8670aull }}, {{ 0xa136500d292de81dull, 0xd30a6d13aaebd5b6ull, 0x932d51185a3354e6ull, 0x281ae555dfafef4bull, 0xf8a48ac57b157d82ull, 0xb57ad7e3b3140666ull }}, {{ 0x4c1f20839bcb1120ull, 0x3e6842c4ad365922ull, 0xbfc52af386015104ull, 0x910cf55abcdf58f3ull, 0xb66d6bb6ced6e715ull, 0x16cc6ee4fec84005ull }}, {{ 0xf937452415eeab3eull, 0x70129baec41f7b56ull, 0x7db3ad833c0d2a2aull, 0xaa81958b60b97985ull, 0x20463524146506d7ull, 0xe3fc54f1f3d28039ull }}, {{ 0xbc28b368db52b071ull, 0x60ba14d3a93ad165ull, 0xe904c7205883a5a8ull, 0xa90fd771c73ebf36ull, 0x42be1368cbf2446cull, 0xe7db51738639023bull }}, {{ 0x59970218913ae46aull, 0xc744d0449c4c2df9ull, 0x1a2fc74375247893ull, 0x9a9e6a71c8737825ull, 0x9b6cc217f776ac3eull, 0x0e912e833e3a1650ull }}, {{ 0x7fe614f5ac4cec23ull, 0xc8b022ae1af9cbbdull, 0x05ddc8a2936cb5c5ull, 0x0a302871d482b173ull, 0x123f94efaaa2ba72ull, 0x91abd1206e44df26ull }}, {{ 0xfefcd198bb013961ull, 0xd6e15acd0dc1f566ull, 0x3aa9d659c23f19b9ull, 0x65e194724d1aee7eull, 0xb67bd15caa5b4874ull, 0xb0b62b444eb0b77cull }}, {{ 0xf5e02ff74e0c3dceull, 0x64cd8c0289939605ull, 0x4aa25f8196770142ull, 0xfacfcc77030d50eeull, 0x20d62d9ea790d48bull, 0xe71db0ab12e72adfull }}, {{ 0x9ac1dfa90c7a6a0eull, 0xf00778195fc3dc3bull, 0xea57bb0fe0a60c97ull, 0xcc1dfca61e85294eull, 0x485dc8328ba84d77ull, 0x0728e6aebd07acb7ull }}, {{ 0x0b92bc9a7cc82491ull, 0x604ab0fdbda69a54ull, 0x276d4e9ec67c7defull, 0xf92bde7d31339d15ull, 0xd3a9d1f9749306adull, 0x479902d3624cbf28ull }}, {{ 0x73bb5e08dfd16da6ull, 0xc2eae9e968820748ull, 0x8a451233c0dceb59ull, 0xbbb6b0e3ec0422d3ull, 0x44a233be8dbe42cbull, 0xcbfa1c41d6ff7798ull }}, {{ 0x8551ac58be2e487aull, 0x9d2d231e151448d4ull, 0x66b2b60588a13181ull, 0x5522e8e738295c43ull, 0xae560571896e9bf5ull, 0xf7c51a9265faabf2ull }}, {{ 0x3530bb776dced4c8ull, 0x23c35f2cd2cad84dull, 0x02fb1c37564bef10ull, 0x535d1908319d9aa2ull, 0xcf5c366f5e521795ull, 0xadb309b7fbcab77aull }}, {{ 0x13e752aa4a144fcdull, 0x65a1b7c03bec7304ull, 0x1dcf1a295ef756a1ull, 0x41a2fa51f0280a54ull, 0x199a2059af34ebd5ull, 0xc8fe612fd5eb2accull }}, {{ 0xc7093aa6e4cb1e00ull, 0xf8512d82573c7e28ull, 0x2a17059db5a9624dull, 0x905dc73361906749ull, 0x00054380d8113654ull, 0xd9efcbde5b2fabf9ull }}, {{ 0xc65c4a84efef2bfcull, 0xb32bc717685ced97ull, 0xa4e63829189dd70bull, 0xa3a9c801cfa408dbull, 0x0034a30870ac1f4dull, 0x835df6af8fdcb7baull }}, {{ 0xbf9ae9315f57b7d6ull, 0xffb5c6ea13a147edull, 0x70fe319af62a6674ull, 0x64a1d0121c685894ull, 0x020e5e5466b93908ull, 0x21aba2db9e9f2d44ull }}, {{ 0x7c0d1bedb96d2e59ull, 0xfd19c524c44ccf49ull, 0x69edf00d9da80091ull, 0xee5220b51c1375ccull, 0x148faf4c033c3a53ull, 0x50b45c943237c4a8ull }}, {{ 0xd88317493e43cf7aull, 0xe301b36fab0018deull, 0x234b6088289005b3ull, 0x4f35471318c299fcull, 0xcd9cd8f8205a4747ull, 0x270b9dc9f62dae90ull }}, {{ 0x751ee8dc6ea61ac7ull, 0xde11025cae00f8b4ull, 0x60f1c55195a03906ull, 0x1814c6bef79a03d9ull, 0x082079b14386c8c9ull, 0x867429e39dc8d1a8ull }}, {{ 0x9335189c527d0bcaull, 0xacaa179ecc09b70cull, 0xc971b52fd8423a44ull, 0xf0cfc375ac04267dull, 0x5144c0eca343d7daull, 0x4089a2e429d83090ull }}, {{ 0xc012f61b38e275e1ull, 0xbea4ec33f861267dull, 0xde7113de729646aeull, 0x681da298b82980e9ull, 0x2caf893e60a66e8dull, 0x85605ce9a271e5a3ull }}, {{ 0x80bd9d1038d89accull, 0x72713a07b3cb80e9ull, 0xb06ac6b079dec2d3ull, 0x112859f7319f0922ull, 0xbedb5c6fc6805186ull, 0x35c3a1205872f85full }}, {{ 0x076822a238760bfbull, 0x786c444d05f3091full, 0xe42bc2e4c2b39c42ull, 0xab9383a7f0365b5aull, 0x74919c5dc1032f3cull, 0x19a44b43747db3bdull }}, {{ 0x4a115a56349c77cfull, 0xb43aab023b7e5b36ull, 0xe9b59cef9b041a98ull, 0xb3c3248f621f918cull, 0x8db01ba98a1fd85eull, 0x006af0a28ce90566ull }}, {{ 0xe4ad875e0e1cae19ull, 0x0a4aae1652ef901eull, 0x2118215c0e2909f7ull, 0x059f6d99d53baf81ull, 0x88e1149f653e73b3ull, 0x042d6659811a3601ull }}, {{ 0xeec749ac8d1eccfaull, 0x66eaccdf3d5ba134ull, 0x4af14d988d9a63a6ull, 0x383a48025454db0bull, 0x58cace39f47084feull, 0x29c5ff7f0b061c0full }}, {{ 0x53c8e0bd833401c9ull, 0x052c00b865944c11ull, 0xed6d07f58807e480ull, 0x3246d0174b508e70ull, 0x77ec0e438c6531eeull, 0xa1bbfaf66e3d1899ull }}, {{ 0x45d8c767200811d8ull, 0x33b80733f7caf8adull, 0x46424f97504eed00ull, 0xf6c420e8f1259069ull, 0xaf388ea37bf3f34dull, 0x5157cda04e62f5feull }}, {{ 0xba77ca074050b26eull, 0x05304807adedb6c4ull, 0xbe971be923154202ull, 0xa3a949196b77a41cull, 0xd8359262d787810bull, 0x2d6e08430fdd9bf2ull }}, {{ 0x48ade4488326f84bull, 0x33e2d04ccb4923afull, 0x71e7171b5ed49414ull, 0x649cdafe32ac691full, 0x7217b7dc6b4b0a74ull, 0xc64c529e9ea8177cull }}, {{ 0xd6caead51f85b2efull, 0x06dc22fff0db64d8ull, 0x7306e711b44dc8caull, 0xee208dedfabc1b3aull, 0x74ed2e9c30ee688bull, 0xbefb3a323290eadcull }}, {{ 0x63ed2c533b38fd51ull, 0x44995dff6891f078ull, 0x7e4506b10b09d7e4ull, 0x4d458b4bcb591048ull, 0x9143d219e9501577ull, 0x75d045f5f9a92c9cull }}, {{ 0xe743bb405039e52bull, 0xadfdabfa15b364b3ull, 0xeeb242ea6e626eeaull, 0x04b770f5f17aa2d4ull, 0xaca635031d20d6a9ull, 0x9a22bb9bc09bbe1dull }}, {{ 0x08a550832242f3a9ull, 0xcbe8b7c4d901ef07ull, 0x52f69d284fd8552aull, 0x2f2a699b6eca5c51ull, 0xbe7e121f2348629aull, 0x055b541586156d28ull }}, {{ 0x5675251f569d849eull, 0xf7172db07a135646ull, 0x3da223931e7353abull, 0xd7a8201253e79b2dull, 0x70ecb53760d3da05ull, 0x359148d73cd64397ull }}, {{ 0x6093733962272e27ull, 0xa6e7c8e4c4c15ebfull, 0x685563bf308144b7ull, 0x6c9140b7470c0fc4ull, 0x693f1429c846843aull, 0x17acd868605ea3eaull }}, {{ 0xc5c2803dd587cd8bull, 0x850dd8efaf8db379ull, 0x1355e577e50caf2cull, 0x3dac8728c6789dacull, 0x1c76c9a1d2c12a48ull, 0xecc07413c3b26728ull }}, {{ 0xb999026a574e076dull, 0x328a795cdb8902c1ull, 0xc15af6aef27ed7bdull, 0x68bd4797c0b628b8ull, 0x1ca3e0523b8ba6d2ull, 0x3f8488c5a4f80791ull }}, {{ 0x3ffa1827690c4a44ull, 0xf968bda0935a1b91ull, 0x8d8da2d578f46d63ull, 0x1764cbed871d9737ull, 0x1e66c33653748438ull, 0x7b2d57b871b04babull }}, {{ 0x7fc4f18a1a7ae6a9ull, 0xbe176845c18513acull, 0x87885c56b98c45e7ull, 0xe9eff7474727e82bull, 0x3003a01f428d2a30ull, 0xcfc56d3470e2f4afull }}, {{ 0xfdb16f6508cd029dull, 0x6cea12b98f32c4bcull, 0x4b539b633f7abb0dull, 0x235fa8c8c78f11b3ull, 0xe02441389983a5e9ull, 0x1db6440c68dd8ed7ull }}, {{ 0xe8ee59f258021a1full, 0x4124bb3f97fbaf61ull, 0xf14411e07acb4e86ull, 0x61bc97d7cb96b100ull, 0xc16a8c35ff247b1bull, 0x291ea87c18a7946eull }}, {{ 0x194f837770150538ull, 0x8b6f507befd4d9d3ull, 0x6ca8b2c4cbf1113eull, 0xd15dee6df3e2ea09ull, 0x8e297a1bf76ccf11ull, 0x9b3294d8f68bcc53ull }}, {{ 0xfd1b22aa60d2342eull, 0x725924d75e50823eull, 0x3e96fbaff76aac71ull, 0x2dab504b86dd245eull, 0x8d9ec517aa4016b2ull, 0x0ff9d079a175fb43ull }}, {{ 0xe30f5aa7c83609c9ull, 0x777b7069af251675ull, 0x71e5d4dfaa2abc6eull, 0xc8b122f344a36baeull, 0x8833b2eca680e2f5ull, 0x9fc224c04e9bd0a3ull }}, {{ 0xde998a8dd21c61daull, 0xaad26420d772e09aull, 0x72fa50bca5ab5c50ull, 0xd6eb5d80ae6234d0ull, 0x5204fd3e8108dd99ull, 0x3d956f8312162663ull }}, {{ 0xb1ff698a351bd280ull, 0xac37e9486a7cc60cull, 0x7dc7275e78b19b26ull, 0x6531a706cfd61024ull, 0x3431e4710a58a802ull, 0x67d65b1eb4dd7fe1ull }}, {{ 0xf3fa1f6613163900ull, 0xba2f1cd428dfbc7eull, 0xe9c789b0b6f00f82ull, 0xf3f086441e5ca16cull, 0x09f2ec6a67769017ull, 0x0e5f8f3310a6feccull }}, {{ 0x87c539fcbede39fbull, 0x45d7204998bd5cf5ull, 0x21cb60e725609b1bull, 0x87653ea92f9e4e41ull, 0x637d3c280aa1a0efull, 0x8fbb97fea685f3f8ull }}, {{ 0x4db443df74ae43d1ull, 0xba6742dff765a197ull, 0x51f1c90775c60f10ull, 0x49f4729bdc2f0e8bull, 0xe2e459906a50495bull, 0x9d53eff2813b87b3ull }}, {{ 0x090aa6ba8ecea62bull, 0x48089cbfa9f84fe9ull, 0x3371da4a99bc96a7ull, 0xe38c7a1699d69171ull, 0xdceb7fa42722dd90ull, 0x25475f790c534d06ull }}, {{ 0x5a6a834994127dafull, 0xd0561f7ca3b31f1aull, 0x027286ea015de288ull, 0xe37cc4e20261ae6cull, 0xa132fc69875ca7a8ull, 0x74c9baba7b410244ull }}, {{ 0x882920dfc8b8e8d3ull, 0x235d3ade64ff3707ull, 0x187945240daad958ull, 0xe2dfb0d417d0d038ull, 0x4bfddc1f499e8c98ull, 0x8fe14b48d08a16aeull }}, {{ 0x519b48bdd7391841ull, 0x61a44caff1f8264bull, 0xf4bcb36888ac7d71ull, 0xdcbce848ee282230ull, 0xf7ea9938e0317df8ull, 0x9eccf0d82564e2ceull }}, {{ 0x3010d76a683af28eull, 0xd06afedf73b17ef1ull, 0x8f5f021556bce66dull, 0x9f6112d94d9155e9ull, 0xaf29fc38c1eeebb8ull, 0x3401687175f0dc15ull }}, {{ 0xe0a86a28124d798bull, 0x242df4ba84eef56bull, 0x99b614d56361004aull, 0x39cabc7d07ad5b1full, 0xd7a3da3793553536ull, 0x080e146e9b6898d8ull }}, {{ 0xc6942590b706bf6bull, 0x69cb8f4931559636ull, 0x011cd055e1ca02e5ull, 0x41eb5ce24cc58f3cull, 0x6c66862bc154141eull, 0x508ccc521215f878ull }}, {{ 0xc1c977a726437a2dull, 0x21f398dbed57de23ull, 0x0b20235ad1e41cf6ull, 0x9331a0d6ffb79858ull, 0x3c013db58d48c92eull, 0x257ffb34b4dbb4b4ull }}, {{ 0x91deac877ea2c5beull, 0x5383f897456ead65ull, 0x6f41618c32e9219dull, 0xbff04865fd2bf370ull, 0x580c691784d7dbd1ull, 0x76ffd00f10950f0aull }}, {{ 0xb2b2bd4af25bb970ull, 0x4327b5e8b652c5f7ull, 0x588dcf79fd1b5025ull, 0x7f62d3fbe3b78264ull, 0x707c1aeb306e9631ull, 0xa5fe2096a5d29667ull }}, {{ 0xfafb64ed77953e5full, 0x9f8d1b171f3bbbacull, 0x758a1ac3e3112174ull, 0xf9dc47d6e52b17ebull, 0x64d90d2fe451ddeeull, 0x7bed45e27a39e00aull }}, {{ 0xcdd1f146abd46fb3ull, 0x3b830ee7385554c1ull, 0x97650ba6deab4e8eull, 0xc29ace64f3aeef32ull, 0xf07a83deeb32ab55ull, 0xd744bad8c642c067ull }}, {{ 0x0a336cc2b64c5cfbull, 0x531e950833554f92ull, 0xe9f27484b2b1118eull, 0x9a0c0ff184d557f9ull, 0x64c926b52ffab159ull, 0x68af4c77be9b840full }}, {{ 0x66023f9b1efba1caull, 0x3f31d25201551bb4ull, 0x23788d2efaeaaf8full, 0x04789f6f30556fc3ull, 0xefdb8313dfcaed80ull, 0x16d8fcad72132899ull }}, {{ 0xfc167c0f35d451e3ull, 0x77f237340d53150bull, 0x62b583d5cd2adb98ull, 0x2cb63a57e3565d9full, 0x5e931ec6bded4700ull, 0xe479dec674bf9603ull }}, {{ 0xd8e0d8981a4b32e3ull, 0xaf762808853ed277ull, 0xdb17265a03ac93f4ull, 0xbf1e476ee15fa839ull, 0xb1bf33c36b44c601ull, 0xecc2b3c08f7bdc21ull }}, {{ 0x78c875f106effcdaull, 0xda9d9055347438aeull, 0x8ee77f8424bdc78eull, 0x772eca54cdbc9242ull, 0xf17805a230afbc11ull, 0x3f9b05859ad69950ull }}, {{ 0xb7d49b6a455fe084ull, 0x8a27a3540c8a36d0ull, 0x950afb296f69cb94ull, 0xa7d3e750095db699ull, 0x6eb03855e6dd58aeull, 0x7c0e37380c61fd29ull }}, {{ 0x2e4e1226b5bec526ull, 0x658c61487d662427ull, 0xd26dcf9e5a21f3cdull, 0x8e4709205da921ffull, 0x52e2335b04a576d2ull, 0xd88e28307bd3e39eull }}, {{ 0xcf0cb5831973b37dull, 0xf77bccd4e5fd6987ull, 0x384a1c2f85538605ull, 0x8ec65b43a89b53feull, 0x3cd6018e2e76a439ull, 0x758d91e4d646e42full }}, {{ 0x167f171efe8502e1ull, 0xaad60050fbe61f4eull, 0x32e519db35433c3bull, 0x93bf90a4961147eeull, 0x605c0f8dd0a26a3full, 0x9787b2f05ec4e9d8ull }}, {{ 0xe0f6e735f1321ccbull, 0xac5c0329d6fd390cull, 0xfcf3029014a05a54ull, 0xc57ba66ddcaccf4dull, 0xc3989b8a2658267bull, 0xeb4cfd63b3b12273ull }}, {{ 0xc9a5081b6bf51fefull, 0xbb981fa265e43a80ull, 0xe17e19a0ce43874eull, 0xb6d4804a9ec0190bull, 0xa3f613657f7180d5ull, 0x3101e5e504eb5885ull }}, {{ 0xe072511237933f58ull, 0x53f13c57faea4907ull, 0xceed00480ea34913ull, 0x244d02ea3380fa76ull, 0x679cc1f6fa6f0859ull, 0xea12faf231317538ull }}, {{ 0xc4772ab62bc0796eull, 0x476c5b6fcd26da4eull, 0x154202d09260dac1ull, 0x6b021d260309c8a4ull, 0x0c1f93a5c856537bull, 0x24bdcd75ebee9434ull }}, {{ 0xaca7ab1db584be4full, 0xca3b925e03848713ull, 0xd4941c25b7c88b8cull, 0x2e15237c1e61d668ull, 0x793bc479d35f42d2ull, 0x6f6a069b3751ca08ull }}, {{ 0xbe8caf29172f6f12ull, 0xe653b7ac232d46c4ull, 0x4dc919792dd5737full, 0xccd362d92fd26018ull, 0xbc55acc241b89c35ull, 0x5a2442102931e454ull }}, {{ 0x717ed79ae7da56b7ull, 0xff452cb95fc4c3afull, 0x09dafebbca5682feull, 0x0041dc7bde37c0f3ull, 0x5b58bf9691361a1aull, 0x856a94a19bf2eb4full }}, {{ 0x6ef46c0d0e876321ull, 0xf8b3bf3dbdafa4daull, 0x628df355e7611df5ull, 0x02929cd6ae2d897eull, 0x91777be1ac1d0504ull, 0x3629ce50177d3119ull }}, {{ 0x558c38829149df4eull, 0xb705786968dc7088ull, 0xd98b815b09cb2b9bull, 0x19ba2062cdc75eefull, 0xaeaad6d0b9223228ull, 0x1da20f20eae3eaffull }}, {{ 0x577a3519ace2b910ull, 0x2636b41e189c6553ull, 0x7f730d8e61efb415ull, 0x014543dc09c9b55eull, 0xd2ac64273b55f591ull, 0x285497492ce72dfcull }}, {{ 0x6ac61300c0db3a9full, 0x7e23092cf61bf541ull, 0xfa7e878fd35d08d3ull, 0x0cb4a69861e115b0ull, 0x3abbe988515b97aaull, 0x934de8dbc107cbe0ull }}, {{ 0x2bbcbe0788904a31ull, 0xed5e5bc19d17948eull, 0xc8f14b9e41a25842ull, 0x7f0e81f3d2cad8e9ull, 0x4b571f532d93eca4ull, 0xc10b18958a4df6c2ull }}, {{ 0xb55f6c4b55a2e5efull, 0x45af959022ebcd8dull, 0xd96cf42e9057729dull, 0xf69113863bec7921ull, 0xf167393fc7c73e6cull, 0x8a6ef5d7670ba396ull }}, {{ 0x15ba3af1585cfb55ull, 0xb8dbd7a15d360789ull, 0x7e4189d1a36a7a24ull, 0xa1aac33e573cbb52ull, 0x6e083c7dcdc87041ull, 0x68559a6a067463e5ull }}, {{ 0xd9464d6d73a1d154ull, 0x38966c4da41c4b5aull, 0xee8f62306228c56full, 0x50aba06f685f5138ull, 0x4c525cea09d46290ull, 0x13580824408be6f6ull }}, {{ 0x7cbf064684522d4bull, 0x35e03b08691af18cull, 0x5199d5e3d597b658ull, 0x26b4445a13b92c39ull, 0xfb37a124624bd9a3ull, 0xc170516a8577059eull }}, {{ 0xdf763ec12b35c4edull, 0x1ac24e541b0d6f7cull, 0x30025ae657ed1f72ull, 0x830aab84c53bba3dull, 0xd02c4b6bd6f6805full, 0x8e632e2936a63835ull }}, {{ 0xba9e738bb019b13full, 0x0b970f490e865ae0ull, 0xe0178cff6f433a75ull, 0x1e6ab32fb4554663ull, 0x21baf23665a103bbull, 0x8fdfcd9c227e321aull }}, {{ 0x4a308374e100ec71ull, 0x73e698da913f8cc7ull, 0xc0eb81fa58a04892ull, 0x302affdd0b54bfe6ull, 0x514d761ff84a254full, 0x9ebe081958edf505ull }}, {{ 0xe5e52290ca093c6bull, 0x8701f889ac7b7fc8ull, 0x893313c77642d5b8ull, 0xe1adfea2714f7f03ull, 0x2d069d3fb2e57517ull, 0x336c50fd794b9235ull }}, {{ 0xfaf359a7e45c5c2cull, 0x4613b560bcd2fdd8ull, 0x5bfec5ca9e9c5935ull, 0xd0cbf2586d1af623ull, 0xc242247cfcf692eeull, 0x023b29e6bcf3b613ull }}, {{ 0xcd81808eeb9b99bcull, 0xbcc515c7603dea79ull, 0x97f3b9ea321b7c14ull, 0x27f77774430d9d61ull, 0x96956ce1e1a1bd54ull, 0x164fa30361851cc5ull }}, {{ 0x070f059534140156ull, 0x5fb2d9c9c26b28c2ull, 0xef854325f512d8cfull, 0x8faaaa8a9e8825cfull, 0xe1d640d2d0516549ull, 0xdf1c5e21cf331fb7ull }}, {{ 0x469637d408c80d57ull, 0xbcfc81e1982f9794ull, 0x5b349f7b92bc7819ull, 0x9caaa96a31517a1full, 0xd25e883c232df4dfull, 0xb71bad5217ff3d2eull }}, {{ 0xc1de2e4857d08567ull, 0x61dd12cff1dbebcaull, 0x900e3ad3bb5cb101ull, 0x1eaa9e25ed2ec539ull, 0x37b152595fcb90bcull, 0x2714c534eff863d4ull }}, {{ 0x92adced36e253603ull, 0xd2a2bc1f729735ebull, 0xa08e4c45519eea0dull, 0x32aa2d7b43d3b43full, 0x2ced377dbdf3a759ull, 0x86cfb4115fb3e64aull }}, {{ 0xbaca14424d741c1full, 0x3a5b593a79e81b33ull, 0x458efab53035248aull, 0xfaa5c6d0a6450a7cull, 0xc1442ae96b84897bull, 0x441d08adbd06fee5ull }}, {{ 0x4be4ca9706891936ull, 0x47917c48c3111005ull, 0xb795cb13e2136d66ull, 0xca79c4267eb268daull, 0x8ca9ad1e332d5ed7ull, 0xa92256c96245f4f9ull }}, {{ 0xf6efe9e6415afc20ull, 0xcbaedad79eaaa034ull, 0x2bd9eec6d4c245feull, 0xe8c1a980f2f8188bull, 0x7ea0c32dffc5b46dull, 0x9b5763ddd6bb91bfull }}, {{ 0xa55f22fe8d8dd93cull, 0xf4d48c6c32aa4211ull, 0xb68353c44f96bbf3ull, 0x17909f097db0f56full, 0xf2479fcbfdb90c4bull, 0x1169e6aa6353b17aull }}, {{ 0x75b75df1878a7c5cull, 0x904d7c39faa694b0ull, 0x212145ab1be35787ull, 0xeba6365ee8e9965dull, 0x76cc3df7e93a7aeeull, 0xae2302a7e144eecdull }}, {{ 0x9929ab6f4b68db95ull, 0xa306da43ca81cee4ull, 0x4b4cb8af16e16b4bull, 0x347e1fb5191fdfa3ull, 0xa3fa6baf1c48cd55ull, 0xcd5e1a8eccb15406ull }}, {{ 0xfba0b258f21893d1ull, 0x5e4486a5e91214edull, 0xf0ff36d6e4ce30f4ull, 0x0ced3d12fb3ebc60ull, 0x67c834d71ad80554ull, 0x05ad0993feed4842ull }}, {{ 0xd446f77974f5c62eull, 0xaead427b1ab4d14bull, 0x69f82464f00de98bull, 0x814462bdd0735bc9ull, 0x0dd210670c703548ull, 0x38c25fc7f544d298ull }}, {{ 0x4ac5aabe9199bdcfull, 0xd2c498cf0b102cf6ull, 0x23b16bf1608b1f74ull, 0x0cabdb6a248195deull, 0x8a34a4067c6214d5ull, 0x3797bdcf94b039f0ull }}, {{ 0xebb8ab71b0016a18ull, 0x3badf8166ea1c19eull, 0x64ee376dc56f3a90ull, 0x7eb692256d0fdaadull, 0x660e6840dbd4d052ull, 0x2bed6a1bcee24365ull }}, {{ 0x3536b270e00e24edull, 0x54cbb0e052519035ull, 0xf14e2a49b65849a2ull, 0xf321b576429e8ac5ull, 0xfc90128896502338ull, 0xb746251614d6a1f5ull }}, {{ 0x1422f868c08d7141ull, 0x4ff4e8c3372fa214ull, 0x6d0da6e11f72e057ull, 0x7f51169e9a316bbbull, 0xdda0b955df216039ull, 0x28bd72dcd062539bull }}, {{ 0xc95db41785866c86ull, 0x1f9117a027dc54c8ull, 0x428884cb3a7cc369ull, 0xf92ae23205ee3552ull, 0xa8473d5ab74dc23eull, 0x97667ca023d74416ull }}, {{ 0xdda908eb37403d41ull, 0x3baaec418e9b4fd7ull, 0x99552ff048dfa21bull, 0xbbacd5f43b4e1536ull, 0x92c8658b29099675ull, 0xea00de416668a8e2ull }}, {{ 0xa89a593028826488ull, 0x54ad3a8f92111e6eull, 0xfd53df62d8bc5510ull, 0x54c05b8a510cd421ull, 0xbbd3f76f9a5fe099ull, 0x2408ae8e001698d9ull }}, {{ 0x96077be19517ed51ull, 0x4ec4499bb4ab3052ull, 0xe546b9dc775b52a3ull, 0x4f8393672a804953ull, 0x5647aa5c07bec5fdull, 0x6856d18c00e1f881ull }}, {{ 0xdc4ad6cfd2ef452aull, 0x13aae0150eafe339ull, 0xf4c3429ca9913a61ull, 0x1b23c207a902dd46ull, 0x5ecca7984d73bbe5ull, 0x13642f7808d3b50dull }}, {{ 0x9aec641e3d58b3a8ull, 0xc4acc0d292dee042ull, 0x8fa09a1e9fac47caull, 0x0f65944c9a1ca4c5ull, 0xb3fe8bf3068556f3ull, 0xc1e9dab058451285ull }}, {{ 0x0d3be92e65770490ull, 0xaebf8839bcb4c29aull, 0x9c4605323cbacdebull, 0x99f7cafe051e6fb7ull, 0x07f1777e4135657eull, 0x93228ae372b2b939ull }}, {{ 0x84571bcff6a62d9cull, 0xd37b52415f0f9a04ull, 0x1abc33f65f4c0b34ull, 0x03adedec33305d2cull, 0x4f6eaaee8c15f6f2ull, 0xbf596ce27afb3c3aull }}, {{ 0x2b67161fa27dc819ull, 0x42d1368db69c042dull, 0x0b5a079fb8f87010ull, 0x24cb4b39ffe3a3b9ull, 0x1a52ad5178dba574ull, 0x797e40d8cdd05a47ull }}, {{ 0xb206dd3c58e9d0fbull, 0x9c2c2189221829c3ull, 0x71844c3d39b460a2ull, 0x6ff0f043fee4653aull, 0x073ac52eb8947689ull, 0xbeee88780a2386c7ull }}, {{ 0xf444a45b792229d2ull, 0x19b94f5b54f1a1a4ull, 0x6f2afa64410bc65aull, 0x5f6962a7f4ebf448ull, 0x484bb3d335cca15eull, 0x755154b0656343c6ull }}, {{ 0x8aae6b92bb55a236ull, 0x013d199151705071ull, 0x57adc7ea8a75bf85ull, 0xba1dda8f91378ad4ull, 0xd2f5064019fe4dafull, 0x952d4ee3f5e0a5beull }}, {{ 0x6ad033bb51585618ull, 0x0c62ffad2e63246full, 0x6cc9cf2968997b32ull, 0x452a899bac2b6c4bull, 0x3d923e8103ef08ddull, 0xd3c514e79ac67974ull }}, {{ 0x2c2205512d735cf1ull, 0x7bddfcc3cfdf6c5aull, 0x3fe2179e15fecff4ull, 0xb3a96014b9b23af2ull, 0x67b6710a275658a4ull, 0x45b2d10c0bc0be8aull }}, {{ 0xb954352bc681a16cull, 0xd6abdfa61eba3b85ull, 0x7ed4ec2cdbf41f8cull, 0x049dc0cf40f64d76ull, 0x0d206a65895f766full, 0xb8fc2a7875877168ull }}, {{ 0x3d4a13b5c1104e39ull, 0x62b6bc7d33465339ull, 0xf45139c097893b80ull, 0x2e298818899f06a0ull, 0x834427f75dbaa056ull, 0x39d9a8b4974a6e10ull }}, {{ 0x64e4c5198aa30e36ull, 0xdb235ce400bf403cull, 0x8b2c4185eb5c5303ull, 0xcd9f50f560364249ull, 0x20a98fa9a94a435dull, 0x4280970de8e84ca5ull }}, {{ 0xf0efb2ff6a5e8e1full, 0x8f61a0e80778825bull, 0x6fba8f3b319b3e26ull, 0x08392995c21e96dfull, 0x469f9ca09ce6a1aaull, 0x9905e68b1912fe73ull }}, {{ 0x695cfdfa27b18d35ull, 0x99d049104ab51797ull, 0x5d49984ff0106d81ull, 0x523b9fd99531e4baull, 0xc23c1e46210250a4ull, 0xfa3b016efabdf080ull }}, {{ 0x1da1ebc58cef840dull, 0x0222daa2eb12ebeaull, 0xa4dff31f60a44710ull, 0x36543e7fd3f2ef47ull, 0x96592ebd4a17266bull, 0xc64e0e55cb6b6507ull }}, {{ 0x285335b7815b2882ull, 0x155c8a5d2ebd3725ull, 0x70bf7f39c66ac6a0ull, 0x1f4a70fe477d58ccull, 0xdf7bd364e4e78030ull, 0xbf0c8f59f231f24bull }}, {{ 0x9340192b0d8f9518ull, 0xd59d67a3d3642773ull, 0x677af841c02bc240ull, 0x38e869eecae577fcull, 0xbad641f0f10b01e1ull, 0x767d998375f376f6ull }}, {{ 0xc080fbae879bd2ecull, 0x58260c6641e98a83ull, 0x0acdb29181b59688ull, 0x39142353ecf6afdcull, 0x4c5e93696a6e12ccull, 0xa0e7ff229b82a5a3ull }}, {{ 0x8509d4d14c163d39ull, 0x717c7bfe931f6925ull, 0x6c08f9af1117e153ull, 0x3ac9614741a2de98ull, 0xfbb1c21e284cbbfaull, 0x490ff75a131a7860ull }}, {{ 0x3262502cf8de6438ull, 0x6edcd7f1bf3a1b77ull, 0x3859c0d6aaeecd42ull, 0x4bddccc8905cb1f4ull, 0xd4f1952d92ff57c6ull, 0xda9fa984bf08b3c9ull }}, {{ 0xf7d721c1b8afea30ull, 0x54a06f71784512a7ull, 0x33818862ad540498ull, 0xf6a9ffd5a39ef38aull, 0x516fd3c7bdf96dbeull, 0x8a3c9f2f765705e2ull }}, {{ 0xae67519136df25dbull, 0x4e445a6eb2b2ba8full, 0x030f53dac5482df3ull, 0xa2a3fe5864358366ull, 0x2e5e45cd6bbe4975ull, 0x665e37da9f663ad7ull }}, {{ 0xd0092fac24b77a8eull, 0x0eab8852fafb499cull, 0x1e99468bb4d1cb81ull, 0x5a67ef73ea1721fcull, 0xcfaeba06356ede98ull, 0xffae2e8a39fe4c67ull }}, {{ 0x205bdcb96f2ac98cull, 0x92b3533dcdd0e020ull, 0x31fcc1751031f30aull, 0x880f5a8724e753d9ull, 0x1cd3443e1654b1f3ull, 0xfccdd16643eefc0eull }}, {{ 0x43969f3e57abdf7aull, 0xbb01406a0a28c141ull, 0xf3df8e92a1f37e69ull, 0x509989477109467bull, 0x2040aa6cdf4ef383ull, 0xe00a2dfea755d88dull }}, {{ 0xa3e2386f6cb6bac7ull, 0x4e0c842465978c8cull, 0x86bb91ba5382f021ull, 0x25ff5cca6a5cc0d7ull, 0x4286a840b9158321ull, 0xc065cbf2895a7583ull }}, {{ 0x66d6345a3f234bc7ull, 0x0c7d296bf7eb7d7eull, 0x4353b147431d614dull, 0x7bf99fe8279f886bull, 0x994292873ad71f4bull, 0x83f9f7795d889720ull }}, {{ 0x045e0b867760f5c2ull, 0x7ce39e37af32e6f0ull, 0xa144ecc89f25cd02ull, 0xd7c03f118c3b5430ull, 0xfc99b9484c6738f2ull, 0x27c3aabda755e745ull }}, {{ 0x2bac7340a9c99998ull, 0xe0e42e2cd7fd0560ull, 0x4cb13fd6377a0218ull, 0x6d8276af7a5149e6ull, 0xde013cd2fc08397cull, 0x8da4ab68895b08bbull }}, {{ 0xb4bc8086a1dffff0ull, 0xc8e9cdc06fe235c1ull, 0xfeec7e5e2ac414f8ull, 0x4718a2dac72ce2feull, 0xac0c603dd8523edcull, 0x886eb2155d8e5756ull }}, {{ 0x0f5d054252bfff5eull, 0xd92209845ed61991ull, 0xf53cefadaba8d1b7ull, 0xc6f65c8bc7c0ddf5ull, 0xb87bc26a7336749aull, 0x5452f4d5a78f6962ull }}, {{ 0x99a234973b7ff9aeull, 0x7b545f2bb45cffaaull, 0x94615cc8b498312eull, 0xc59f9d75cd88ab9bull, 0x34d5982880208e0bull, 0x4b3d90588b9a1ddbull }}, {{ 0x00560de852ffc0d0ull, 0xd14bb7b50ba1fcaaull, 0xcbcd9fd70df1ebd0ull, 0xb83c269a0756b413ull, 0x1057f19501458c75ull, 0xf067a37574052a90ull }}, {{ 0x035c8b133dfd881dull, 0x2cf52d127453dea4ull, 0xf6083e668b733628ull, 0x32598204496308c5ull, 0xa36f6fd20cb77c99ull, 0x640c62968833a9a0ull }}, {{ 0x219d6ec06be7511dull, 0xc193c2b88b46b268ull, 0x9c52700172801d91ull, 0xf77f142addde57bbull, 0x625a5e347f2addfbull, 0xe87bd9e15204a046ull }}, {{ 0x5026538437092b26ull, 0x8fc59b3570c2f811ull, 0x1b38600e790127b1ull, 0xaaf6c9acaaaf6d54ull, 0xd787ae0cf7acabd7ull, 0x14d682cd342e42bfull }}, {{ 0x217f432a265baf7cull, 0x9db81016679db0adull, 0x1033c090ba0b8cefull, 0xada3e0beaada4549ull, 0x6b4ccc81acbeb66cull, 0xd0611c0409ce9b7eull }}, {{ 0x4ef89fa57f94dad7ull, 0x2930a0e00c28e6c3ull, 0xa20585a74473815cull, 0xc866c772ac86b4daull, 0x30fffd10bf73203eull, 0x23cb1828621212f0ull }}, {{ 0x15b63c76fbd08c67ull, 0x9be648c0799903a1ull, 0x54373888ac830d99ull, 0xd403ca7abd43108aull, 0xe9ffe2a77a7f4273ull, 0x65eef193d4b4bd61ull }}, {{ 0xd91e5ca5d6257c09ull, 0x16fed784bffa244aull, 0x4a283556bd1e8800ull, 0x4825e8cb649ea567ull, 0x23feda8ac8f89886ull, 0xfb556fc64f0f65d3ull }}, {{ 0x7b2f9e7a5d76d858ull, 0xe5f46b2f7fc56aecull, 0xe592156363315000ull, 0xd17b17f1ee327608ull, 0x67f4896bd9b5f53eull, 0xd1565dbf1699fa3full }}, {{ 0xcfdc30c7a6a47371ull, 0xfb8c2fdafdb62d3cull, 0xf7b4d5e1dfed2008ull, 0x2eceef734df89c58ull, 0x0f8d5e36811b9474ull, 0x2d5fa976e203c67aull }}, {{ 0x1e99e7cc826c8269ull, 0xd379de8de91dc460ull, 0xad105ad2bf434059ull, 0xd4155a810bb61b79ull, 0x9b85ae210b13cc89ull, 0xc5bc9ea4d425c0c4ull }}, {{ 0x32030dfd183d181dull, 0x42c2b18b1b29abc1ull, 0xc2a38c3b78a08382ull, 0x48d5890a751d12c0ull, 0x1338cd4a6ec5fd62ull, 0xb95e3270497987aeull }}, {{ 0xf41e8be2f262f123ull, 0x9b9aef6f0fa0b58bull, 0x9a637a52b6452316ull, 0xd8575a689322bb87ull, 0xc03804e853bbe5d6ull, 0x3dadf862debf4cccull }}, {{ 0x893176dd77dd6b5dull, 0x140d5a569c471777ull, 0x07e2c73b1eb35ee2ull, 0x73698815bf5b534cull, 0x823031134556fa64ull, 0x68cbb3dcb378ffffull }}, {{ 0x5beea4a6aea631a7ull, 0xc88587621ac6eaabull, 0x4edbc84f3301b4d4ull, 0x821f50d9799140f8ull, 0x15e1eac0b565c7ecull, 0x17f5069f02b9fffbull }}, {{ 0x97526e82d27df084ull, 0xd53749d50bc52ab1ull, 0x1495d317fe11104full, 0x1539287ebfac89b3ull, 0xdad32b8715f9cf3dull, 0xef9242361b43ffceull }}, {{ 0xe938511c38eb652aull, 0x5428e25275b3aaefull, 0xcdda3eefecaaa31eull, 0xd43b94f37cbd60feull, 0x8c3fb346dbc21862ull, 0x5bb6961d10a7fe14ull }}, {{ 0x1c332b1a3931f3a7ull, 0x4998d7389904ad5full, 0x0a86755f3eaa5f2full, 0x4a53d182df65c9f4ull, 0x7a7d00c49594f3dcull, 0x9521dd22a68feccdull }}, {{ 0x19ffaf063bf38489ull, 0xdff86835fa2ec5b7ull, 0x694095b872a7b7d8ull, 0xe7462f1cb9f9e388ull, 0xc8e207add7d1869aull, 0xd352a35a819f4006ull }}, {{ 0x03fcd63e57832d5dull, 0xbfb4121bc5d3b927ull, 0x1c85d9347a8d2e78ull, 0x08bdd71f43c2e354ull, 0xd8d44cca6e2f420dull, 0x413a618910388043ull }}, {{ 0x27e05e6f6b1fc59dull, 0x7d08b515ba453b86ull, 0x1d3a7c0cc983d0b7ull, 0x576a6738a59ce149ull, 0x784affe84dd89482ull, 0x8c47cf5aa23502a6ull }}, {{ 0x8ec3b05a2f3db827ull, 0xe25712d946b4533dull, 0x2448d87fdf26272aull, 0x6a2808367820ccdbull, 0xb2edff130a75cd17ull, 0x7ace198a56121a80ull }}, {{ 0x93a4e385d8693185ull, 0xd766bc7cc30b4067ull, 0x6ad874feb77d87acull, 0x25905220b148008full, 0xfd4bf6be689a02eaull, 0xcc0cff675cb50906ull }}, {{ 0xc470e33a741bef32ull, 0x6a035cdf9e70840bull, 0x2c7491f32ae74cc0ull, 0x77a33546ecd0059aull, 0xe4f7a37016041d25ull, 0xf881fa099f125a45ull }}, {{ 0xac68e048891757f6ull, 0x2421a0bc30652875ull, 0xbc8db37fad08ff84ull, 0xac6014c540203805ull, 0xf1ac6260dc292376ull, 0xb513c46036b786baull }}, {{ 0xbc18c2d55ae96f9aull, 0x69504759e3f39498ull, 0x5d8902fcc259fb29ull, 0xbbc0cfb481423039ull, 0x70bbd7c8999b62a2ull, 0x12c5abc2232b434dull }}, {{ 0x58f79c558d1e5c04ull, 0x1d22c982e783cdf7ull, 0xa75a1ddf9783cf9eull, 0x55881d0d0c95e23dull, 0x67566dd60011da5bull, 0xbbb8b5955fb0a106ull }}, {{ 0x79ac1b57832f982aull, 0x235bdf1d0b260ba9ull, 0x89852abbeb261c2dull, 0x575122827ddad668ull, 0x09604a5c00b28791ull, 0x553717d5bce64a40ull }}, {{ 0xc0b9116b1fdbf1a9ull, 0x6196b7226f7c749eull, 0x5f33ab572f7d19c3ull, 0x692b5918ea8c6015ull, 0x5dc2e79806f94badull, 0x5426ee5960fee680ull }}, {{ 0x873aae2f3e977097ull, 0xcfe327585adc8e33ull, 0xb804b167dae301a1ull, 0x1bb17af9297bc0d5ull, 0xa99d0bf045bcf4c6ull, 0x49854f7dc9f50103ull }}, {{ 0x484acdd871ea65e2ull, 0x1edf89738c9d8e03ull, 0x302eee0e8cde1052ull, 0x14eecdbb9ed58859ull, 0xa0227762b9618fbdull, 0xdf351ae9e3920a24ull }}, {{ 0xd2ec0a747327fad9ull, 0x34bb5e837e278c20ull, 0xe1d54c9180aca335ull, 0xd15409543457537bull, 0x4158a9db3dcf9d62ull, 0xb8130d22e3b4656eull }}, {{ 0x3d38688c7f8fcc75ull, 0x0f51b122ed8b7948ull, 0xd254fdaf06be6014ull, 0x2d485d4a0b6942d6ull, 0x8d76a2906a1c25dcull, 0x30be835ce50bf64eull }}, {{ 0x6434157cfb9dfc96ull, 0x9930eb5d4772bcd2ull, 0x3751e8d6436fc0c8ull, 0xc4d3a4e4721c9c64ull, 0x86a259a425197a99ull, 0xe77121a0f2779f11ull }}, {{ 0xea08d6e1d42bddd8ull, 0xfbe931a4ca7b6037ull, 0x2933185ea25d87d5ull, 0xb04470ec751e1beaull, 0x4257806972feca01ull, 0x0a6b504978ac36afull }}, {{ 0x245864d249b6aa72ull, 0xd71bf06fe8d1c22full, 0x9bfef3b257a74e5bull, 0xe2ac693c932d1725ull, 0x976b041e7df3e410ull, 0x683122deb6ba22d8ull }}, {{ 0x6b73f036e122a877ull, 0x6717645f183195d7ull, 0x17f584f76c890f96ull, 0xdabc1c5dbfc2e778ull, 0xea2e2930eb86e8a8ull, 0x11eb5cb323455c75ull }}, {{ 0x32876224cb5a94a4ull, 0x06e9ebb6f1efda6aull, 0xef9731aa3d5a9be0ull, 0x8b591ba97d9d0ab0ull, 0x25cd9be933451698ull, 0xb3319eff60b59c9bull }}, {{ 0xf949d56ff189ce6bull, 0x45233525735e8825ull, 0x5be7f0a6658a16c0ull, 0x717b149ee8226ae9ull, 0x7a08171c00b2e1f5ull, 0xfff035f9c7181e0full }}, {{ 0xbce2565f6f62102bull, 0xb360137681b1517bull, 0x970f667ff764e382ull, 0x6ecece3511582d1dull, 0xc450e71806fcd396ull, 0xff621bc1c6f12c9aull }}, {{ 0x60d75fba59d4a1aaull, 0x01c0c2a110ed2ed5ull, 0xe69a00ffa9f0e31bull, 0x54140e12ad71c327ull, 0xab2906f045e043e0ull, 0xf9d51591c56bbe0bull }}, {{ 0xc869bd47824e50a5ull, 0x11879a4aa943d455ull, 0x020409fca368df0eull, 0x48c88cbac6719f8full, 0xaf9a4562bac2a6c3ull, 0xc252d7b1b6356c74ull }}, {{ 0xd42164cb170f2672ull, 0xaf4c06ea9ca64b59ull, 0x142863de6218b68cull, 0xd7d57f4bc0703b96ull, 0xdc06b5db4b9a83a0ull, 0x973c6cf11e163c8eull }}, {{ 0x494defeee6978074ull, 0xd8f8452a1e7ef182ull, 0xc993e6afd4f7217eull, 0x6e56f8f5846253dcull, 0x98431a90f4092448ull, 0xe85c416b2cde5d94ull }}, {{ 0xdd0b5f5501eb0489ull, 0x79b2b3a530f56f16ull, 0xdfc702de51a74ef4ull, 0x4f65b9972bd7469full, 0xf29f09a9885b6ad4ull, 0x139a8e2fc0afa7cdull }}, {{ 0xa271b952132e2d59ull, 0xc0fb0473e99656e4ull, 0xbdc61caf3089158cull, 0x19f93fe7b668c23eull, 0x7a36609f53922c4bull, 0xc4098ddd86dc8e0bull }}, {{ 0x58713d34bfcdc577ull, 0x89ce2c871fdf64eeull, 0x69bd1ed7e55ad77full, 0x03bc7f0d20179673ull, 0xc61fc63943b5baefull, 0xa85f8aa7449d8c72ull }}, {{ 0x746c640f7e09b6a6ull, 0x620dbd473eb9f14full, 0x2163346ef58c6afbull, 0x255cf68340ebe082ull, 0xbd3dbe3ca5194d56ull, 0x93bb6a88ae277c7bull }}, {{ 0x8c3be89aec61227aull, 0xd48964c873436d1aull, 0x4de00c55977c2dd1ull, 0x75a1a1208936c515ull, 0x64696e5e72fd055dull, 0xc5522956cd8adcd5ull }}, {{ 0x7a57160d3bcb58c3ull, 0x4d5defd480a24309ull, 0x0ac07b57ead9ca32ull, 0x98504b455c23b2d5ull, 0xec1e4fb07de235a6ull, 0xb5359d64076ca055ull }}, {{ 0xc766dc8455f177a2ull, 0x05ab5e4d06569e5eull, 0x6b84d16f2c81e5f7ull, 0xf322f0b59964fc52ull, 0x392f1ce4ead61881ull, 0x141825e84a3e435bull }}, {{ 0xca049d2b5b6eac52ull, 0x38b1af023f622fb3ull, 0x33302e57bd12fba6ull, 0x7f5d6717fdf1db38ull, 0x3bd720f12c5cf513ull, 0xc8f17b12e66ea190ull }}, {{ 0xe42e23b19252bb30ull, 0x36f0d61679d5dd05ull, 0xffe1cf6d62bdd47eull, 0xf9a606efeb729031ull, 0x5667496bbba192c2ull, 0xd96ecebd00524fa2ull }}, {{ 0xe9cd64efb73b4fe1ull, 0x25685ce0c25aa23aull, 0xfed21a45db6a4ceeull, 0xc07c455f3279a1f3ull, 0x6008de35544fbb9dull, 0x7e54136203371c57ull }}, {{ 0x2205f15d28511ec6ull, 0x7613a0c7978a564dull, 0xf43506ba9227014dull, 0x84dab5b7f8c05387ull, 0xc058ae154b1d5429ull, 0xef48c1d420271b69ull }}, {{ 0x543b6da3932b33beull, 0x9cc447cbeb675f03ull, 0x8a124349b5860d06ull, 0x308b192fb783434full, 0x8376ccd4ef25499full, 0x58d7924941871221ull }}, {{ 0x4a524863bfb0056full, 0x1faacdf73209b621ull, 0x64b6a0e1173c8242ull, 0xe56efbdd2b20a11bull, 0x22a400515774e037ull, 0x786bb6dc8f46b54full }}, {{ 0xe736d3e57ce03657ull, 0x3cac0ba7f4611d4cull, 0xef2248cae85d1695ull, 0xf655d6a3af464b11ull, 0x5a68032d6a90c22eull, 0xb435249d98c31517ull }}, {{ 0x082446f6e0c21f63ull, 0x5eb8748f8bcb2501ull, 0x5756d7ed13a2e1d4ull, 0x9f5a6264d8beeeb3ull, 0x88101fc629a795d5ull, 0x0a136e27f79ed2e9ull }}, {{ 0x516ac5a4c79539ddull, 0xb3348d9b75ef720aull, 0x69646f42c45cd24bull, 0x3987d7f077755301ull, 0x50a13dbda08bda58ull, 0x64c24d8fac343d1full }}, {{ 0x2e2bb86fcbd442a1ull, 0x000d88129b5a7467ull, 0x1dec589baba036f5ull, 0x3f4e6f64aa953e0eull, 0x264c696845768772ull, 0xef97079cba0a6339ull }}, {{ 0xcdb5345df64a9a4cull, 0x008750ba11888c07ull, 0x2b3b7614b4422592ull, 0x791059eea9d46c8dull, 0x7efc1e12b6a14a76ull, 0x5be64c1f4467e03bull }}, {{ 0x09140bab9eea06f9ull, 0x05492744af55784eull, 0xb0529ccf0a9577b4ull, 0xbaa38352a24c3d83ull, 0xf5d92cbb224ce8a0ull, 0x96fef938ac0ec252ull }}, {{ 0x5ac874b4352445b8ull, 0x34db88aed956b30cull, 0xe33a201669d6ad08ull, 0x4a63213a56fa6724ull, 0x9a7bbf4f57011647ull, 0xe5f5bc36b893973dull }}, {{ 0x8bd48f0a136ab932ull, 0x109356d47d62fe7bull, 0xe04540e02262c252ull, 0xe7df4c4765c80770ull, 0x08d57919660adec8ull, 0xfb995a2335c3e868ull }}, {{ 0x764d9664c22b3bf3ull, 0xa5c1644ce5ddf0d3ull, 0xc2b488c157db9734ull, 0x0eb8fac9f9d04a68ull, 0x5856bafdfc6cb3d9ull, 0xd3fd856019a71410ull }}, {{ 0x9f07dfef95b05780ull, 0x798deb00faab6842ull, 0x9b0d578d6e93e80eull, 0x9339cbe3c222e817ull, 0x73634debdc3f067aull, 0x47e735c10086c8a3ull }}, {{ 0x364ebf5bd8e36afeull, 0xbf8b2e09cab2129aull, 0x0e856b8651c71090ull, 0xc041f6e5955d10ecull, 0x81e10b369a7640c9ull, 0xcf08198a0543d662ull }}, {{ 0x1f13799678e22debull, 0x7b6fcc61eaf4ba06ull, 0x9136333f31c6a5a7ull, 0x8293a4f7d5a2a938ull, 0x12ca7022089e87e1ull, 0x1650ff6434a65fd9ull }}, {{ 0x36c2bfe0b8d5cb31ull, 0xd25dfbd32d8f443dull, 0xac1e0077f1c2788aull, 0x19c471ae585a9c35ull, 0xbbe8615456314ecfull, 0xdf29f9ea0e7fbe7aull }}, {{ 0x239b7ec73859efe6ull, 0x37abd63fc798aa64ull, 0xb92c04af7198b56cull, 0x01ac70cf738a1a18ull, 0x5713cd4b5ded1417ull, 0xb7a3c32490fd70cbull }}, {{ 0x6412f3c833835ef7ull, 0x2cb65e7dcbf6a7e9ull, 0x3bb82eda6ff7163aull, 0x10bc681a836504f7ull, 0x66c604f1ab42c8e6ull, 0x2c659f6da9e667f1ull }}, {{ 0xe8bd85d20321b5a6ull, 0xbf1fb0e9f7a28f1dull, 0x5531d4885fa6de45ull, 0xa75c110921f231a8ull, 0x03bc3170b09bd8fcull, 0xbbf83a48a3000f6eull }}, {{ 0x17673a341f51187eull, 0x773ce923ac59972bull, 0x53f24d53bc84aeb9ull, 0x8998aa5b5375f093ull, 0x2559ee66e61679deull, 0x57b246d65e009a4cull }}, {{ 0xea084609392af4e8ull, 0xa8611b64bb7fe7aeull, 0x477705455d2ed33eull, 0x5ff6a791429b65c1ull, 0x75835004fce0c2b1ull, 0x6cf6c45fac0606f9ull }}, {{ 0x2452bc5c3bad9111ull, 0x93cb11ef52ff0cd5ull, 0xcaa634b5a3d44072ull, 0xbfa28bac9a11f98cull, 0x97212031e0c79aedull, 0x41a3abbcb83c45beull }}, {{ 0x6b3b5b9a54c7aaa7ull, 0xc5eeb3593df68053ull, 0xea7e0f18664a8479ull, 0x7c5974be04b3bf7full, 0xe74b41f2c7cc0d49ull, 0x9064b55f325ab971ull }}, {{ 0x305194074fccaa84ull, 0xbb53017c6ba10342ull, 0x28ec96f3fee92cc1ull, 0xdb7e8f6c2f057affull, 0x08f0937bcdf884deull, 0xa3ef15b7f78b3e73ull }}, {{ 0xe32fc8491dfea927ull, 0x513e0edc344a2095ull, 0x993de587f51bbf91ull, 0x92f19a39d636cdf7ull, 0x5965c2d60bb530b4ull, 0x6756d92fab70707eull }}, {{ 0xdfddd2db2bf29b87ull, 0x2c6c949a0ae545daull, 0xfc6af74f93157badull, 0xbd7006425e240babull, 0x7df99c5c7513e70dull, 0x09647bdcb26464efull }}, {{ 0xbeaa3c8fb77a1344ull, 0xbc3dce046cf4ba8cull, 0xdc2da91bbed6d4c3ull, 0x66603e97ad6874b7ull, 0xebc01b9c92c70689ull, 0x5decd69ef7ebf15aull }}, {{ 0x72a65d9d2ac4c0a8ull, 0x5a6a0c2c418f497full, 0x99c89b1574644fa5ull, 0xffc271ecc6148f2eull, 0x3581141dbbc6415dull, 0xab406235af376d8dull }}, {{ 0x7a7fa823abaf868dull, 0x882479ba8f98defaull, 0x01d60ed68beb1c75ull, 0xfd98733fbccd97d2ull, 0x170ac92955be8dabull, 0xb083d618d82a4784ull }}, {{ 0xc8fc9164b4db4182ull, 0x516cc1499bf8b5c8ull, 0x125c9461772f1c97ull, 0xe7f4807d6007ee34ull, 0xe66bdb9d597188b7ull, 0xe5265cf871a6cb28ull }}, {{ 0xd9ddadef10908f16ull, 0x2e3f8ce017b719d7ull, 0xb79dcbcea7d71de9ull, 0x0f8d04e5c04f4e08ull, 0x003694257e6f572full, 0xf37fa1b47083ef99ull }}, {{ 0x82a8cb56a5a596ddull, 0xce7b80c0ed27026eull, 0x2c29f6128e672b1bull, 0x9b8230f983190c57ull, 0x0221c976f05967d6ull, 0x82fc510c65275bfaull }}, {{ 0x1a97f1627877e4a6ull, 0x10d3078943861851ull, 0xb9a39cb99007af16ull, 0x1315e9bf1efa7b67ull, 0x1551dea5637e0e62ull, 0x1ddb2a7bf38997c4ull }}, {{ 0x09ef6dd8b4aeee7aull, 0xa83e4b5ca33cf32bull, 0x40641f3fa04cd6dcull, 0xbedb217735c8d20dull, 0xd532b275e2ec8fd4ull, 0x2a8fa8d7835feda8ull }}, {{ 0x635a4a770ed550c6ull, 0x926ef19e60617faeull, 0x83e9387c4300649eull, 0x748f4ea819d83484ull, 0x53faf89add3d9e4full, 0xa99c986b21bf4898ull }}, {{ 0xe186e8a6945527baull, 0xb855702fc3cefccfull, 0x271c34da9e03ee31ull, 0x8d99129102720d2dull, 0x47cdb60ca4682f1aull, 0xa01df42f5178d5f3ull }}, {{ 0xcf451681cb538d43ull, 0x335661dda615e01eull, 0x871a108a2c274df1ull, 0x87fab9aa187483c3ull, 0xce091c7e6c11d709ull, 0x412b89d92eb85b80ull }}, {{ 0x18b2e111f143849aull, 0x015fd2a87cdac134ull, 0x4704a565b9890b6cull, 0x4fcb40a4f48d25a3ull, 0x0c5b1cf038b2665full, 0x8bb3627bd3339308ull }}, {{ 0xf6fccab36ca32e08ull, 0x0dbe3a94e08b8c08ull, 0xc62e75f93f5a7238ull, 0x1df086718d837860ull, 0x7b8f216236f7ffb9ull, 0x7501d8d64003be50ull }}, {{ 0xa5dfeb023e5fcc4cull, 0x896e49d0c5737859ull, 0xbdd09bbc79887630ull, 0x2b65406f8722b3c7ull, 0xd3974dd625affd3bull, 0x9212785e80256f24ull }}, {{ 0x7abf2e166fbdfaf7ull, 0x5e4ee227b682b380ull, 0x6a26155cbf549de5ull, 0xb1f4845b475b05cdull, 0x43e90a5d78dfe44full, 0xb4b8b3b101765770ull }}, {{ 0xcb77cce05d6bcda9ull, 0xaf14d58d211b0304ull, 0x257cd59f794e2af5ull, 0xf38d2b90c98e3a06ull, 0xa71a67a6b8beeb1cull, 0x0f3704ea0e9f6a62ull }}, {{ 0xf2ae00c3a636089aull, 0xd6d057834b0e1e2full, 0x76e0583abd0dad98ull, 0x8383b3a7df8e443dull, 0x87080c8337752f21ull, 0x98263124923a27daull }}, {{ 0x7acc07a47e1c5600ull, 0x64236b20ee8d2ddfull, 0xa4c3724b6288c7f8ull, 0x2325048ebb8eaa66ull, 0x46507d202a93d74full, 0xf17deb6db6458e89ull }}, {{ 0xcbf84c6ced1b5c02ull, 0xe9622f495183cabaull, 0x6fa276f1d957cfb3ull, 0x5f722d935392a802ull, 0xbf24e341a9c66917ull, 0x6eeb32491eb7915cull }}, {{ 0xf7b2fc4143119813ull, 0x1dd5d8dd2f25eb4bull, 0x5c58a5727d6e1d07ull, 0xba75c7c143ba9018ull, 0x7770e090a1c01ae9ull, 0x552ff6db332bad9full }}, {{ 0xacfdda8c9eaff0bcull, 0x2a5a78a3d77b30f7ull, 0x9b767678e64d2247ull, 0x4899cd8ca549a0f3ull, 0xaa68c5a651810d21ull, 0x53dfa48fffb4c83aull }}, {{ 0xc1ea897e32df6754ull, 0xa788b6666acfe9acull, 0x12a0a0b8ff0356c7ull, 0xd602077e74e04984ull, 0xa817b87f2f0a834cull, 0x46bc6d9ffd0fd24aull }}, {{ 0x93295eedfcba094bull, 0x8b5720002c1f20bfull, 0xba464739f62163ccull, 0x5c144af090c2df28ull, 0x90ed34f7d6692100ull, 0xc35c483fe29e36eaull }}, {{ 0xbf9db54bdf445cf0ull, 0x71674001b937477bull, 0x46bec8439d4de5fdull, 0x98caed65a79cb797ull, 0xa94411ae601b4a03ull, 0xa19ad27eda2e2529ull }}, {{ 0x7c2914f6b8aba164ull, 0x6e0880113c28cad5ull, 0xc373d2a4250afbe6ull, 0xf7ed45f88c1f2be8ull, 0x9ca8b0cfc110e423ull, 0x500c38f485cd73a0ull }}, {{ 0xd99ad1a336b44de6ull, 0x4c5500ac5997ec56ull, 0xa2863a69726dd700ull, 0xaf44bbb57937b717ull, 0x1e96e81d8aa8e967ull, 0x207a398d3a068446ull }}, {{ 0x800c3060230b0afbull, 0xfb5206bb7fef3b64ull, 0x593e481e784a6602ull, 0xd8af5516bc2d26ecull, 0x31e511276a991e0cull, 0x44c63f8444412abdull }}, {{ 0x0079e3c15e6e6dccull, 0xd1344352ff5851edull, 0x7c6ed130b2e7fc1dull, 0x76d952e359c3853bull, 0xf2f2ab8a29fb2c80ull, 0xafbe7b2aaa8bab63ull }}, {{ 0x04c2e58db05049f5ull, 0x2c0aa13df9733342ull, 0xdc542be6fd0fd92aull, 0xa47d3ce181a33452ull, 0x7d7ab365a3cfbd04ull, 0xdd70cfaaa974b1e7ull }}, {{ 0x2f9cf788e322e38eull, 0xb86a4c6bbe800094ull, 0x9b49b705e29e7ba5ull, 0x6ce460cf10600b3cull, 0xe6cb01f8661d622eull, 0xa6681caa9e8ef30aull }}, {{ 0xdc21ab58df5ce38full, 0x3426fc35710005c9ull, 0x10e1263ada30d479ull, 0x40ebc816a3c0705eull, 0x03ee13b3fd25d5d0ull, 0x80111eaa31957e6dull }}, {{ 0x9950b178b9a0e398ull, 0x0985da166a0039e2ull, 0xa8cb7e4c85e84cbcull, 0x8935d0e2658463acull, 0x274cc507e37a5a22ull, 0x00ab32a5efd6f042ull }}, {{ 0xfd26eeb74048e3edull, 0x5f3a84e0240242d9ull, 0x97f2eefd3b12ff58ull, 0x5c1a28d7f72be4beull, 0x88ffb24ee2c78559ull, 0x06affa7b5e656295ull }}, {{ 0xe385532882d8e745ull, 0xb84930c168169c83ull, 0xef7d55e44ebdf973ull, 0x9905986fa7b6ef71ull, 0x59fcf714dbcb357dull, 0x42dfc8d1aff5d9d7ull }}, {{ 0xe3353f951c7908b4ull, 0x32dbe78e10e21d26ull, 0x5ae55aeb136bbe85ull, 0xfa37f45c8d255a73ull, 0x83e1a6d095f016e7ull, 0x9cbdd830df9a8269ull }}, {{ 0xe0147bd31cba5706ull, 0xfc970b8ca8d52384ull, 0x8cf58d2ec2357133ull, 0xc62f8b9d83758881ull, 0x26d08425db60e50full, 0x1f6a71e8bc09181full }}, {{ 0xc0ccd63f1f476638ull, 0xdde6737e98536330ull, 0x819783d396166c07ull, 0xbddb74272297550full, 0x8425297a91c8f29dull, 0x3a287317585af137ull }}, {{ 0x88005e7738c9fe2full, 0xab0082f1f341dfe7ull, 0x0feb2643dce0384eull, 0x6a92898759e9529bull, 0x29739ec9b1d97a29ull, 0x45947ee9738d6c2bull }}, {{ 0x5003b0a837e3edd6ull, 0xae051d738092bf0bull, 0x9f2f7ea6a0c23312ull, 0x29b95f49831d3a0eull, 0x9e8433e0f27ec59eull, 0xb7ccf51e838639afull }}, {{ 0x2024e6922ee74a5aull, 0xcc33268305bb7671ull, 0x37daf2824795febaull, 0xa13db8df1f244492ull, 0x312a06c978f3b82dull, 0x2e019331233e40dcull }}, {{ 0x417101b5d508e789ull, 0xf9ff811e3952a06bull, 0x2e8d7916cbdbf34bull, 0x4c6938b7376aadb6ull, 0xeba443deb98531c8ull, 0xcc0fbfeb606e8899ull }}, {{ 0x8e6a111a52590b55ull, 0xc3fb0b2e3d3a4430ull, 0xd186bae3f69780f7ull, 0xfc1c37282a2ac91dull, 0x346aa6b33f33f1d2ull, 0xf89d7f31c4515603ull }}, {{ 0x9024ab07377a7156ull, 0xa7ce6fce6446a9e5ull, 0x2f434ce7a1eb09adull, 0xd91a2791a5abdb2aull, 0x0c2a83007807723dull, 0xb626f7f1ab2d5c20ull }}, {{ 0xa16eae482ac86d5cull, 0x8e105e0feac2a2f7ull, 0xd8a1010c532e60c8ull, 0x7b058bb078b68fa5ull, 0x79a91e04b04a766aull, 0x1d85af70afc59940ull }}, {{ 0x4e52ced1abd4459aull, 0x8ca3ac9f2b9a5dacull, 0x764a0a7b3fcfc7d5ull, 0xce3774e4b7219c7aull, 0xc09b2c2ee2e8a028ull, 0x2738da66ddb7fc84ull }}, {{ 0x0f3c1430b64ab807ull, 0x7e64be37b407a8bbull, 0x9ee468d07e1dce57ull, 0x0e2a90ef27501cc8ull, 0x860fb9d4dd164198ull, 0x88388804a92fdd2full }}, {{ 0x9858c9e71eeb3043ull, 0xefef6e2d084c974eull, 0x34ec1824ed2a0f6aull, 0x8da9a95789211fd6ull, 0x3c9d4250a2de8ff0ull, 0x5235502e9bdea3dbull }}, {{ 0xf377e307352fe29dull, 0x5f5a4dc252fde911ull, 0x1138f17143a49a2dull, 0x88a09d6b5b4b3e5eull, 0x5e2497265cb19f65ull, 0x361521d216b26690ull }}, {{ 0x82aede4813deda1eull, 0xb98709973deb1ab3ull, 0xac396e6ca46e05c5ull, 0x5646263190f06facull, 0xad6de77f9ef039f7ull, 0x1cd35234e2f801a3ull }}, {{ 0x1ad4aed0c6b4852full, 0x3f465fe86b2f0b03ull, 0xba3e503e6c4c39b9ull, 0x5ebd7defa9645cbeull, 0xc64b0afc356243a9ull, 0x20413610ddb01064ull }}, {{ 0x0c4ed427c30d33d6ull, 0x78bfbf142fd66e1full, 0x466f22703afa413cull, 0xb366eb5c9deb9f73ull, 0xbeee6dda15d6a49dull, 0x428c1ca8a8e0a3efull }}, {{ 0x7b14498d9e84065cull, 0xb77d76c9de604d36ull, 0xc05758624dc68c5cull, 0x0205319e2b343a80ull, 0x75504a84da626e29ull, 0x99791e9698c6675dull }}, {{ 0xcecadf8831283f95ull, 0x2ae6a3e2afc30420ull, 0x836973d709c17b9full, 0x1433f02db00a4907ull, 0x9522e93087d84d9aull, 0xfebb31e1f7c009a6ull }}, {{ 0x13ecbb51eb927bd4ull, 0xad0266dadd9e2948ull, 0x221e8666618ed437ull, 0xca0761c8e066da4bull, 0xd35d1be54e730804ull, 0xf34ff2d3ad806081ull }}, {{ 0xc73f513333b8d64bull, 0xc218048ca82d9cd0ull, 0x55313fffcf944a2cull, 0xe449d1d8c40486efull, 0x41a316f5107e502full, 0x811f7c44c703c512ull }}, {{ 0xc8792c0005385eebull, 0x94f02d7e91c82027ull, 0x53ec7ffe1bcae5bfull, 0xeae23277a82d4559ull, 0x905ee592a4ef21deull, 0x0b3adaafc625b2b6ull }}, {{ 0xd4bbb8003433b529ull, 0xd161c6f1b1d1418dull, 0x473cffed15ecf97bull, 0x2cd5f8ac91c4b57dull, 0xa3b4f7ba715752b5ull, 0x704c8addbd78fb21ull }}, {{ 0x4f5530020a05139bull, 0x2dd1c570f22c8f8aull, 0xc861ff42db41bed6ull, 0xc05bb6bdb1af16e4ull, 0x6511ad486d693b13ull, 0x62fd6ca966b9cf50ull }}, {{ 0x1953e0146432c411ull, 0xca31b66975bd9b67ull, 0xd3d3f89c9091745dull, 0x83952368f0d6e4efull, 0xf2b0c4d4461c4ec5ull, 0xdde63e9e03421923ull }}, {{ 0xfd46c0cbe9fba8a8ull, 0xe5f1201e99681206ull, 0x4647b61da5ae8ba9ull, 0x23d362196864f15eull, 0x7ae7b04abd1b13b7ull, 0xaafe722c2094fb67ull }}, {{ 0xe4c387f723d4968eull, 0xfb6b4131fe10b445ull, 0xbecd1d2878d174a2ull, 0x6641d4fe13f16daeull, 0xcd0ce2eb630ec527ull, 0xadf075b945d1d20aull }}, {{ 0xefa34fa7664de18dull, 0xd2308bf3eca70abaull, 0x74032394b82e8e5dull, 0xfe9251ecc76e48d3ull, 0x0280dd31de93b389ull, 0xcb64993cba32346cull }}, {{ 0x5c611c89ff0acf84ull, 0x35e577873e866b4dull, 0x881f63cf31d18faaull, 0xf1b7333fca4ed842ull, 0x1908a3f2b1c50363ull, 0xf1edfc5f45f60c38ull }}, {{ 0x9bcb1d63f66c1b28ull, 0x1af6ab4871403105ull, 0x5139e617f22f9ca6ull, 0x7128007de7147299ull, 0xfa56677af1b221e7ull, 0x734bdbb8bb9c7a30ull }}, {{ 0x15ef25e7a0390f92ull, 0x0da2b0d46c81ea38ull, 0x2c42fcef75dc1e7dull, 0x6b9004eb06cc79fdull, 0xc7600acd70f5530aull, 0x80f69537541cc5e9ull }}, {{ 0xdb577b0c423a9bb8ull, 0x885ae84c3d132630ull, 0xba9de15a9a9930e2ull, 0x33a0312e43fcc3e3ull, 0xc9c06c0669953e68ull, 0x09a1d429491fbb21ull }}, {{ 0x916ace7a964a1534ull, 0x538d12fa62bf7de8ull, 0x4a2acd8a09fbe8d9ull, 0x0441ebcea7dfa6e5ull, 0xe18438401fd47012ull, 0x6052499cdb3d4f51ull }}, {{ 0xae2c10c9dee4d407ull, 0x4382bdc7db7aeb15ull, 0xe5ac076463d7187dull, 0x2a9336128ebc84f4ull, 0xcf2a32813e4c60b4ull, 0xc336e02090651932ull }}, {{ 0xcdb8a7e2b4f04846ull, 0xa31b69ce92cd2ed8ull, 0xf8b849ebe666f4e4ull, 0xa9c01cb9935d3190ull, 0x17a5f90c6efbc709ull, 0xa024c145a3f2fbfcull }}, {{ 0x09368edb1162d2b8ull, 0x5f122211bc03d478ull, 0xb732e337000590eeull, 0xa1811f3fc1a3efa9ull, 0xec7bba7c55d5c660ull, 0x416f8cb8677dd7d8ull }}, {{ 0x5c21948eaddc3b30ull, 0xb6b554b158264cb0ull, 0x27fce0260037a94full, 0x4f0b387d90675ca1ull, 0x3cd548db5a59bfc6ull, 0x8e5b7f340aea6e79ull }}, {{ 0x994fcd92ca9a4fe4ull, 0x23154eed717efee3ull, 0x8fe0c17c022c9d1dull, 0x167034e7a4099e4bull, 0x6054d89187817dbfull, 0x8f92f8086d2850bcull }}, {{ 0xfd1e07bbea071ee4ull, 0x5ed515466ef5f4e3ull, 0x9ec78ed815be2323ull, 0xe062110c68602ef3ull, 0xc35075af4b0ee976ull, 0x9bbdb0544393275bull }}, {{ 0xe32c4d57244734e5ull, 0xb452d4c0559b90e7ull, 0x33cb9470d96d5f61ull, 0xc3d4aa7c13c1d584ull, 0xa12498d8ee951ea4ull, 0x1568e34aa3bf8995ull }}, {{ 0xdfbb05676ac810eeull, 0x0b3c4f835813a90eull, 0x05f3cc687e45b9d1ull, 0xa64ea8d8c592572aull, 0x4b6df87951d3326full, 0xd618e0ea657b5fd8ull }}, {{ 0xbd4e360a2bd0a94dull, 0x705b1b2170c49a94ull, 0x3b85fc14eeb9422aull, 0x7f129877b7b767a4ull, 0xf24bb4bd323ff85cull, 0x5cf8c927f6d1be72ull }}, {{ 0x650e1c65b6269d03ull, 0x638f0f4e67ae09cfull, 0x533bd8d1533c95a8ull, 0xf6b9f4ad2d2a0c6aull, 0x76f50f63f67fb39cull, 0xa1b7db8fa431707dull }}, {{ 0xf28d1bf91d82221full, 0xe39699100ccc6219ull, 0x4056782d405dd893ull, 0xa3438ec3c3a47c27ull, 0xa59299e7a0fd0421ull, 0x512e939c69ee64e6ull }}, {{ 0x798317bb27155539ull, 0xe3e1faa07ffbd503ull, 0x8360b1c483aa75c6ull, 0x60a393a5a46cd988ull, 0x77ba030c49e22950ull, 0x2bd1c41c234ff102ull }}, {{ 0xbf1eed4f86d55437ull, 0xe6d3ca44ffd65222ull, 0x21c6f1ad24a899c4ull, 0xc663c4786c407f55ull, 0xad441e7ae2d59d23ull, 0xb631a919611f6a18ull }}, {{ 0x7735451b44554a26ull, 0x0445e6b1fe5f355bull, 0x51c570c36e9601b1ull, 0xbfe5acb43a84f953ull, 0xc4a930ccdc582365ull, 0x1df09afdcb3a24f6ull }}, {{ 0xa814b310ab54e57bull, 0x2abb02f3efb81592ull, 0x31b667a251dc10eaull, 0x7ef8bf0a4931bd41ull, 0xae9be8009b7161f9ull, 0x2b660de9f04571a3ull }}, {{ 0x90cefea6b150f6caull, 0xab4e1d875d30d7baull, 0xf1200c573298a925ull, 0xf5b77666dbf1648bull, 0xd2171006126dd3beull, 0xb1fc8b2362b67064ull }}, {{ 0xa815f282ed29a3dfull, 0xb10d2749a3e86d49ull, 0x6b407b67f9f69b78ull, 0x992aa004976ded77ull, 0x34e6a03cb84a4575ull, 0xf3dd6f61db2063f0ull }}, {{ 0x90db791d43a066b6ull, 0xea8388e0671444e0ull, 0x3084d20fc3a212b6ull, 0xfbaa402dea4b46aaull, 0x1102425f32e6b697ull, 0x86a659d28f43e762ull }}, {{ 0xa892bb24a444031dull, 0x292358c406cab0c5ull, 0xe530349da454bb25ull, 0xd4a681cb26f0c2a5ull, 0xaa1697b7fd0321efull, 0x427f823998a709d4ull }}, {{ 0x95bb4f6e6aa81f22ull, 0x9b6177a843eae7b8ull, 0xf3e20e286b4f4f73ull, 0x4e8111ef85679a7aull, 0xa4e1ed2fe21f535eull, 0x98fb163ff686624eull }}, {{ 0xd9511a502a913756ull, 0x11ceac92a72d0d35ull, 0x86d48d9431191a84ull, 0x110ab35b360c08cdull, 0x70d343ded53941afull, 0xf9cede7fa13fd712ull }}, {{ 0x7d2b0721a9ac295bull, 0xb212bdba87c2841aull, 0x444d87c9eafb0928ull, 0xaa6b01901c785807ull, 0x6840a6b4543c90d6ull, 0xc214b0fc4c7e66b8ull }}, {{ 0xe3ae4750a0b99d8eull, 0xf4bb69494d992908ull, 0xab074de32dce5b96ull, 0xa82e0fa11cb37048ull, 0x1286830b4a5da862ull, 0x94cee9dafcf00334ull }}, {{ 0xe4cec9264740278bull, 0x8f521cdd07fb9a58ull, 0xae490adfca0f93e5ull, 0x91cc9c4b1f0262d6ull, 0xb9411e70e7a893daull, 0xd015228de1602008ull }}, {{ 0xf013db7ec8818b6bull, 0x993520a24fd40778ull, 0xceda6cbde49bc6f7ull, 0xb1fe1aef3617dc62ull, 0x3c8b30690c95c689ull, 0x20d3598acdc14057ull }}, {{ 0x60c692f3d50f722eull, 0xfc1346571e484ab9ull, 0x14883f6aee15c5abull, 0xf3ed0d581cee9bdcull, 0x5d6fe41a7dd9c160ull, 0x48417f6c098c8368ull }}, {{ 0xc7c1bd86529a75d0ull, 0xd8c0bf672ed2eb3dull, 0xcd527a2d4cd9b8b7ull, 0x8742857121521698ull, 0xa65ee908ea818dc9ull, 0xd28efa385f7d2213ull }}, {{ 0xcd91673f3a089a1full, 0x77877a07d43d3069ull, 0x0538c5c50081372eull, 0x4899366b4d34e1f8ull, 0x7fb51a59290f89dfull, 0x3995c633bae354c4ull }}, {{ 0x07ae087844560533ull, 0xab4ac44e4a63e422ull, 0x3437b9b2050c27d0ull, 0xd5fc20310410d3b0ull, 0xfd13077b9a9b62b8ull, 0x3fd9be054ce14facull }}, {{ 0x4ccc54b2ab5c3403ull, 0xb0ebab0ee7e6e954ull, 0x0a2d40f432798e26ull, 0x5bd941ea28a844e2ull, 0xe2be4ad40a11db38ull, 0x7e816c3500cd1cc1ull }}, {{ 0xfffb4efab19a081eull, 0xe934ae950f051d4aull, 0x65c48989f8bf8d82ull, 0x967c93259692b0d4ull, 0xdb6eec4864b29033ull, 0xf10e3a1208031f92ull }}, {{ 0xffd115caf004512cull, 0x1c0ed1d2963324edull, 0xf9ad5f63b77b871dull, 0xe0ddbf77e1bae84bull, 0x92553ad3eef9a203ull, 0x6a8e44b4501f3bbcull }}, {{ 0xfe2ad9ed602b2bb6ull, 0x18943239ddff714bull, 0xc0c5b9e52ad34723ull, 0xc8a97aaed14d12f7ull, 0xb7544c4755c05426ull, 0x298eaf0b2138555dull }}, {{ 0xedac8345c1afb520ull, 0xf5c9f642abfa6cf7ull, 0x87b942f3ac40c75eull, 0xd69ecad42d02bdadull, 0x294afac959834983ull, 0x9f92d66f4c3355a9ull }}, {{ 0x48bd20b990dd1345ull, 0x99e39e9ab7c841afull, 0x4d3c9d84ba87c9b5ull, 0x6233ec49c21b68c7ull, 0x9cedcbdd7f20df26ull, 0x3bbc6058fa01589bull }}, {{ 0xd763473fa8a2c0aeull, 0x02e4320b2dd290d8ull, 0x045e272f494de118ull, 0xd6073ae1951217c9ull, 0x2149f6a6f748b77full, 0x555bc379c40d7614ull }}, {{ 0x69e0c87c965b86ceull, 0x1ce9f46fca39a878ull, 0x2bad87d8dd0acaf0ull, 0x5c484ccfd2b4eddaull, 0x4ce3a285a8d72afeull, 0x5595a2c1a8869cc9ull }}, {{ 0x22c7d4dddf93440eull, 0x21238c5de64094b4ull, 0xb4c74e78a26bed61ull, 0x9ad3001e3b114a85ull, 0x00e459389867adefull, 0x57d85b9095421fddull }}, {{ 0x5bce50aabbc0a88eull, 0x4b637baafe85cf09ull, 0x0fc910b6583745cbull, 0x0c3e012e4eace939ull, 0x08eb7c35f40ccb5cull, 0x6e7393a5d4953ea2ull }}, {{ 0x960f26ab55869589ull, 0xf1e2d4adf13a165dull, 0x9ddaa71f7228b9f0ull, 0x7a6c0bcf12c11c3aull, 0x5932da1b887ff198ull, 0x5083c47a4dd47254ull }}, {{ 0xdc9782b15741d75aull, 0x72dc4ecb6c44dfa7ull, 0x2a8a873a75974369ull, 0xc8387616bb8b1a4aull, 0x7bfc851354ff6ff4ull, 0x2525acc70a4c774bull }}, {{ 0x9deb1aed68926986ull, 0x7c9b13f23ab0bc8eull, 0xa969484897e8a21eull, 0xd2349ce3536f06e5ull, 0xd7dd32c151fa5f8full, 0x7378bfc666fca8f2ull }}, {{ 0x2b2f0d4615b81f3bull, 0xde0ec7764ae75d92ull, 0x9e1cd2d5ef165530ull, 0x360e20e1425644f8ull, 0x6ea3fb8d33c7bb9eull, 0x82b77dc005de997cull }}, {{ 0xafd684bcd931384dull, 0xac93ca9eed09a7b5ull, 0x2d203c5b56df53e8ull, 0x1c8d48cc975eb1b6ull, 0x5267d38405cd542eull, 0x1b2ae9803ab1fedcull }}, {{ 0xde612f607bec32fdull, 0xbdc5ea3542608d18ull, 0xc3425b9164b94716ull, 0x1d84d7fde9b2f11dull, 0x380e43283a0549cdull, 0x0fad1f024af3f49bull }}, {{ 0xafcbd9c4d739fde6ull, 0x69bb261497c582f8ull, 0xa09793adef3cc6e3ull, 0x27306feb20fd6b29ull, 0x308e9f924434e203ull, 0x9cc33616ed878e10ull }}, {{ 0xddf681b06843eaf7ull, 0x214f7ccdedb71db6ull, 0x45ebc4cb585fc4e2ull, 0x87e45f2f49e62fa0ull, 0xe5923bb6aa10d41full, 0x1fa01ce5474b8ca1ull }}, {{ 0xaba110e412a72daaull, 0x4d1ae00b49272924ull, 0xbb35aff173bdb0d5ull, 0x4eebb7d8e2fddc42ull, 0xf7b65522a4a8493bull, 0x3c4120f4c8f37e52ull }}, {{ 0xb44aa8e8ba87c8a3ull, 0x030cc070db879b6eull, 0x5018df6e8568e855ull, 0x15352e78ddea9a9bull, 0xad1f535a6e92dc51ull, 0x5a8b498fd982ef3dull }}, {{ 0x0aea9917494dd65full, 0x1e7f8468934c1253ull, 0x20f8ba5136191352ull, 0xd413d0b8ab2a0a11ull, 0xc339418851bc9b2aull, 0x8970df9e7f1d5868ull }}, {{ 0x6d29fae8dd0a5fb3ull, 0x30fb2c15c0f8b73eull, 0x49b7472c1cfac135ull, 0x48c62736afa464abull, 0xa03c8f53315e0facull, 0x5e68bc30f7257417ull }}, {{ 0x43a3cd18a267bcfbull, 0xe9cfb8d989b72870ull, 0xe128c7b921cb8c13ull, 0xd7bd8822dc6beeb0ull, 0x425d993fedac9cbaull, 0xb01759e9a77688ecull }}, {{ 0xa46602f6580d61d1ull, 0x221d387f61279462ull, 0xcb97cd3b51f378c7ull, 0x6d67515c9c3752e8ull, 0x97a7fc7f48be1f4cull, 0xe0e983208aa1593aull }}, {{ 0x6bfc1d9f7085d22bull, 0x552434f9cb8bcbdaull, 0xf3ee04513382b7c7ull, 0x46092d9e1a293d17ull, 0xec8fdcf8d76d38fcull, 0xc91f1f456a4d7c49ull }}, {{ 0x37d9283a653a35aaull, 0x536a11c1f375f688ull, 0x874c2b2c031b2dc9ull, 0xbc5bc82d059c62efull, 0x3d9ea1b86a4439daull, 0xdb3738b62706dae3ull }}, {{ 0x2e7b9247f44618a4ull, 0x4224b193829ba152ull, 0x48f9afb81f0fc9ddull, 0x5b95d1c2381bdd5bull, 0x6832513426aa428bull, 0x9028371d86448ce0ull }}, {{ 0xd0d3b6cf8abcf66cull, 0x956eefc31a144d35ull, 0xd9c0dd31369de2a4ull, 0x93da31963116a590ull, 0x11f72c0982a69971ull, 0xa19227273ead80c4ull }}, {{ 0x2845241b6b61a037ull, 0xd6555d9f04cb041aull, 0x8188a3ec222ada6dull, 0xc685efddeae277a8ull, 0xb3a7b85f1a81fe6full, 0x4fb5878872c707a8ull }}, {{ 0x92b3691231d04225ull, 0x5f55a8362fee2905ull, 0x0f56673955ac884aull, 0xc13b5eab2cd8ac95ull, 0x048d33b70913f05dull, 0x1d174b547bc64c97ull }}, {{ 0xbb021ab5f2229574ull, 0xb958921ddf4d9a37ull, 0x9960083d58bd52e7ull, 0x8c51b2afc076bdd2ull, 0x2d8405265ac763a9ull, 0x22e8f14cd5befde6ull }}, {{ 0x4e150b1b7559d687ull, 0x3d75b52ab908062dull, 0xfdc0526577653d0dull, 0x7b30fadd84a36a39ull, 0xc728337f8bc9e49full, 0x5d196d005975eafdull }}, {{ 0x0cd26f1295826142ull, 0x669913ab3a503dc5ull, 0xe98337f6a9f46284ull, 0xcfe9cca72e622643ull, 0xc79202fb75e2ee3aull, 0xa2fe42037e9b2de9ull }}, {{ 0x803856b9d717cc93ull, 0x01fac4b0472269b2ull, 0x1f202fa2a38bd92cull, 0x1f21fe87cfd57ea7ull, 0xcbb41dd29add4e4cull, 0x5dee9422f20fcb21ull }}, {{ 0x0233634266edfdc2ull, 0x13cbaee2c75820f9ull, 0x3741dc5a63767bb8ull, 0x3753f14e1e56f287ull, 0xf5092a3a0ca50ef9ull, 0xab51c95d749def51ull }}, {{ 0x1601e098054be98full, 0xc5f4d4dbc97149baull, 0x28929b87e2a0d530ull, 0x29476d0d2f657948ull, 0x925ba6447e7295bcull, 0xb131dda68e2b5933ull }}, {{ 0xdc12c5f034f71f97ull, 0xbb905095de6ce144ull, 0x95ba134eda4853e7ull, 0x9cca4283d9f6bcd1ull, 0xb7947eacf079d959ull, 0xebf2a8818db17c03ull }}, {{ 0x98bbbb6211a73be8ull, 0x53a325dab040ccb0ull, 0xd944c11486d3470dull, 0x1fe6992683a3602full, 0x2bccf2c164c27d80ull, 0x377a950f88eed825ull }}, {{ 0xf75551d4b0885711ull, 0x445f7a8ae287fee5ull, 0x7caf8acd4440c685ull, 0x3f01fb812461c1deull, 0xb6017b8def98e701ull, 0x2ac9d29b59547173ull }}, {{ 0xa955324ee55366adull, 0xabbac96cd94ff4fbull, 0xdedb6c04aa87c134ull, 0x7613d30b6bd192b0ull, 0x1c0ed38b5bf9060cull, 0xabe23a117d4c6e85ull }}, {{ 0x9d53f714f54202c3ull, 0xb54bde407d1f91d4ull, 0xb492382ea94d8c0eull, 0x9cc63e72362fbae8ull, 0x1894437197ba3c7cull, 0xb6d644aee4fc5133ull }}, {{ 0x2547a6d194941b9dull, 0x14f6ae84e33bb24eull, 0x0db631d29d077893ull, 0x1fbe70761ddd4d17ull, 0xf5caa26fed465cdeull, 0x245eaed4f1db2bfeull }}, {{ 0x74cc842fcdc91426ull, 0xd1a2d130e054f70dull, 0x891df23a224ab5beull, 0x3d70649d2aa502e6ull, 0x99ea585f44bfa0adull, 0x6bb2d451728fb7f5ull }}, {{ 0x8ffd29de09dac97dull, 0x305c2be8c351a686ull, 0x5b2b764556eb1974ull, 0x6663ee23aa721d01ull, 0x032773b8af7c46c4ull, 0x34fc4b2e799d2f98ull }}, {{ 0x9fe3a2ac628bdee6ull, 0xe399b717a1308141ull, 0x8fb29eb5652efe89ull, 0xffe74d64a875220dull, 0x1f8a8536dadac3abull, 0x11daefd0c023dbf0ull }}, {{ 0x3ee45abbd976b4fcull, 0xe40126ec4be50c90ull, 0x9cfa3315f3d5f162ull, 0xff0905ee94935487ull, 0x3b6934248c8ba4b7ull, 0xb28d5e2781669761ull }}, {{ 0x74eb8b567ea311daull, 0xe80b853af6f27da2ull, 0x21c5fedb865b6ddcull, 0xf65a3b51cdc14d4cull, 0x521c096d7d746f2full, 0xf985ad8b0e01e9ccull }}, {{ 0x91337160f25eb283ull, 0x1073344da578e858ull, 0x51bbf4933f924aa1ull, 0x9f865132098d04f9ull, 0x35185e46e68c57dfull, 0xbf38c76e8c1321fbull }}, {{ 0xac026dc977b2f91aull, 0xa4800b0876b91375ull, 0x31578dc07bb6ea4aull, 0x3b3f2bf45f8231bdull, 0x12f3aec5017b6ebcull, 0x7837ca5178bf53d0ull }}, {{ 0xb81849deacfdbb06ull, 0x6d006e54a33ac298ull, 0xed6b8984d52526eaull, 0x5077b78bbb15f163ull, 0xbd84d3b20ed2535aull, 0xb22de72eb7794620ull }}, {{ 0x30f2e2b2c1e94e41ull, 0x42044f4e604b99f7ull, 0x46335f3053738528ull, 0x24ad2b754edb6de7ull, 0x673044f494374187ull, 0xf5cb07d32abcbd47ull }}, {{ 0xe97cdafb931d0e89ull, 0x942b190fc2f403a7ull, 0xbe01b7e342833392ull, 0x6ec3b29514924b08ull, 0x07e2b18dca288f47ull, 0x99ee4e3fab5f64caull }}, {{ 0x1ee08dd3bf229156ull, 0xc9aefa9d9d88248full, 0x6c112ee0992003b9ull, 0x53a4f9d2cdb6ee57ull, 0x4edaef89e59598caull, 0x034f0e7cb1b9efe4ull }}, {{ 0x34c58a457759ad5eull, 0xe0d5ca2827516d97ull, 0x38abd4c5fb402541ull, 0x4471c23c09254f6aull, 0x148d5b62f7d7f7e7ull, 0x211690def1435eebull }}, {{ 0x0fb766b6a980c5abull, 0xc859e591892e47e8ull, 0x36b64fbbd0817492ull, 0xac7196585b751a26ull, 0xcd8591ddae6faf08ull, 0x4ae1a8b56ca1b52eull }}, {{ 0x9d2a03229f07b8afull, 0xd382f7af5bcecf10ull, 0x231f1d56250e8dbbull, 0xbc6fdf739293057eull, 0x0737b2a8d05cd656ull, 0xecd097163e5113d4ull }}, {{ 0x23a41f5a364d36d4ull, 0x431dacd9961416a6ull, 0x5f37255d72918956ull, 0x5c5eba83b9be36edull, 0x482cfa9823a05f63ull, 0x4025e6de6f2ac648ull }}, {{ 0x646939861f042443ull, 0x9f28c07fdcc8e27dull, 0xb82775a679af5d5eull, 0x9bb34925416e2545ull, 0xd1c1c9f16443b9e1ull, 0x817b04b057abbed2ull }}, {{ 0xec1c3f3d36296aa1ull, 0x379784fe9fd8d8e5ull, 0x318a9880c0d9a5b2ull, 0x1500db748e4d74b9ull, 0x3191e36deaa542d0ull, 0x0ece2ee36cb5743cull }}, {{ 0x391a78641d9e2a46ull, 0x2beb31f23e7878fbull, 0xef69f507888078f6ull, 0xd208928d8f068f3bull, 0xefb2e24b2a749c20ull, 0x940dd4e23f168a59ull }}, {{ 0x3b08b3e9282da6baull, 0xb72ff37670b4b9d0ull, 0x5a23924b5504b99dull, 0x3455b98796419857ull, 0x5cfcd6efa88e1948ull, 0xc88a50d676e16783ull }}, {{ 0x4e57071b91c88347ull, 0x27df82a0670f4222ull, 0x8563b6f1522f4029ull, 0x0b593f4bde8ff369ull, 0xa1e0655c958cfcd2ull, 0xd5672860a4ce0b21ull }}, {{ 0x0f664713b1d520c4ull, 0x8ebb1a4406989557ull, 0x35e5256d35d8819bull, 0x717c78f6b19f821full, 0x52c3f59dd781e034ull, 0x560793c6700c6f50ull }}, {{ 0x99fec6c4f25347a8ull, 0x934f06a841f5d566ull, 0x1af376441a751013ull, 0x6edcb9a2f03b1538ull, 0x3ba7982a6b12c20cull, 0x5c4bc5c0607c5923ull }}, {{ 0x03f3c3b17740cc95ull, 0xc1164292939a5602ull, 0x0d829ea90892a0c3ull, 0x549f405d624ed431ull, 0x548bf1a82ebb947cull, 0x9af5b983c4db7b60ull }}, {{ 0x2785a4eea887fdcdull, 0x8ade99b9c4075c14ull, 0x871a329a55ba47a5ull, 0x4e3883a5d71449eaull, 0x4d777091d353ccdbull, 0x0d993f25b092d1c3ull }}, {{ 0x8b387152954fea05ull, 0x6cb20141a84998c9ull, 0x4705fa075946cc77ull, 0x0e35247a66cae329ull, 0x06aa65b241460091ull, 0x87fc7778e5bc31a1ull }}, {{ 0x70346d39d51f2436ull, 0x3ef40c9092dff7dfull, 0xc63bc4497cc3fcaaull, 0x8e136cc803ecdf9cull, 0x42a7f8f68cbc05aaull, 0x4fdcaab8f959f04aull }}, {{ 0x620c444253376a1eull, 0x75887da5bcbfaebaull, 0xbe55aadedfa7dea6ull, 0x8cc23fd02740bc1full, 0x9a8fb9a17f5838a9ull, 0x1e9eab39bd8362e6ull }}, {{ 0xd47aaa97402a2529ull, 0x9754e8795f7cd347ull, 0x6f58acb4bc8eb280ull, 0x7f967e218887593dull, 0x099d404ef972369full, 0x3232b0416721dd02ull }}, {{ 0x4ccaa9e881a57397ull, 0xe95114bdbae040ceull, 0x5976bf0f5d92f905ull, 0xfbe0ed4f55497c66ull, 0x60248315be76223aull, 0xf5fae28e0752a214ull }}, {{ 0xffeaa315107683e7ull, 0x1d2acf694cc2880eull, 0x7ea37699a7bdba3bull, 0xd6c9451954dedbffull, 0xc16d1ed9709d564dull, 0x9bccd98c493a54cbull }}, {{ 0xff2a5ed2a4a12705ull, 0x23ac1a1cff995095ull, 0xf262a2008d69464full, 0x63dcb2fd50b497faull, 0x8e43347e66255f0aull, 0x16007f7adc474ff5ull }}, {{ 0xf7a7b43a6e4b8633ull, 0x64b90521fbfd25dbull, 0x77da5405861cbf17ull, 0xe69efde5270defcdull, 0x8ea00ceffd75b667ull, 0xdc04facc9ac91f97ull }}, {{ 0xac8d0a484ef33dffull, 0xef3a3353d7e37a97ull, 0xae8748373d1f76e9ull, 0x0235eaf3868b5e06ull, 0x9240815fe699200full, 0x9831cbfe0bdb3bebull }}, {{ 0xbd8266d315806bf5ull, 0x584601466ee2c9ecull, 0xd148d228633aa523ull, 0x161b2d834171ac42ull, 0xb6850dbf01fb4096ull, 0xf1f1f7ec76905733ull }}, {{ 0x6718043ed7043794ull, 0x72bc0cc054dbe33full, 0x2cd83593e04a7361ull, 0xdd0fc7208e70ba9cull, 0x2132897613d085dcull, 0x7373af3ca1a36805ull }}, {{ 0x06f02a74662a2bcbull, 0x7b587f835096e07aull, 0xc07217c6c2e881ceull, 0xa29dc74590674a19ull, 0x4bf95e9cc6253aa0ull, 0x8284d85e50621033ull }}, {{ 0x4561a88bfda5b5f2ull, 0xd174fb2125e4c4c4ull, 0x8474edc39d151210ull, 0x5a29c8b7a408e501ull, 0xf7bdb21fbd744a46ull, 0x193073af23d4a200ull }}, {{ 0xb5d09577e8791b75ull, 0x2e91cf4b7aefafaaull, 0x2c9149a422d2b4a8ull, 0x85a1d72c6858f20full, 0xad68f53d668ae6bfull, 0xfbe484d7664e5409ull }}, {{ 0x1a25d6af14bb128dull, 0xd1b218f2cd5cdcabull, 0xbdace0695c3b0e91ull, 0x385267bc13797497ull, 0xc6199466016d037bull, 0xd6ed3069ff0f4860ull }}, {{ 0x057a62d6cf4eb985ull, 0x30f4f97c05a09eafull, 0x68c0c41d9a4e91b2ull, 0x33380d58c2be8dedull, 0xbcffcbfc0e4222d0ull, 0x6543e423f698d3c7ull }}, {{ 0x36c7dc6419133f2eull, 0xe991bed8384632d6ull, 0x1787a9280711b0f5ull, 0x003085779b718b46ull, 0x61fdf7d88e955c22ull, 0xf4a6e967a1f845cdull }}, {{ 0x23ce9be8fac077ceull, 0x1fb1747232bdfc5eull, 0xeb4c9b9046b0e99bull, 0x01e536ac126f70bcull, 0xd3ebae7591d59954ull, 0x8e851e0c53b2ba05ull }}, {{ 0x66121719cb84ae0bull, 0x3cee8c75fb6bdbadull, 0x30fe13a2c2e9200full, 0x12f422b8b85a6761ull, 0x4734d097b257fd48ull, 0x91332c7b44fb443aull }}, {{ 0xfcb4e701f32ecc6eull, 0x61517c9bd23694c5ull, 0xe9ecc45b9d1b4098ull, 0xbd895b37338809cbull, 0xc81025ecf76fe4d0ull, 0xabffbcd0b1d0aa46ull }}, {{ 0xdf1106137fd3fc4cull, 0xcd2ede163621cfbbull, 0x233fab94231085f3ull, 0x675d9028035061f7ull, 0xd0a17b41aa5ef027ull, 0xb7fd6026f226a6c3ull }}, {{ 0xb6aa3cc2fe47daf6ull, 0x03d4acde1d521d56ull, 0x607cb3c95ea53b86ull, 0x09a7a1902123d3a7ull, 0x264ed090a7b5618aull, 0x2fe5c185758283a6ull }}, {{ 0x22a65f9deece8da0ull, 0x264ec0ad25352563ull, 0xc4df05ddb274533cull, 0x608c4fa14b664489ull, 0x7f1425a68d15cf64ull, 0xdef98f369719247dull }}, {{ 0x5a7fbc2b5411883cull, 0x7f1386c3741375dfull, 0xb0b63aa8f88b4059ull, 0xc57b1c4cf1fead61ull, 0xf6c9788182da19ebull, 0xb5bf9821e6fb6ce6ull }}, {{ 0x88fd59b148af525cull, 0xf6c343a288c29ab9ull, 0xe71e4a99b570837eull, 0xb6cf1b0173f2c5d0ull, 0xa3deb50f1c850335ull, 0x197bf15305d24105ull }}, {{ 0x59e580ecd6d93799ull, 0xa3a0a459579a0b3full, 0x072eea01166522f5ull, 0x24170e0e877bba29ull, 0x66b312971d322019ull, 0xfed76d3e3a368a38ull }}, {{ 0x82f70940647c2bfbull, 0x64466b7d6c047079ull, 0x47d5240adff35d98ull, 0x68e68c914ad5459aull, 0x02feb9e723f540fbull, 0xf46a446e46216634ull }}, {{ 0x1da65c83ecd9b7ceull, 0xeac032e6382c64bfull, 0xce53686cbf81a7f3ull, 0x19017dacec54b806ull, 0x1df34307679489d2ull, 0x8c26ac4ebd4dfe08ull }}, {{ 0x287f9d2740812e0bull, 0x2b81fcfe31bbef77ull, 0x0f42143f7b108f87ull, 0xfa0ee8c13b4f3044ull, 0x2b809e4a0bcd6234ull, 0x7982bb13650bec51ull }}, {{ 0x94fc2388850bcc6bull, 0xb313e1edf1575aa7ull, 0x9894ca7acea59b47ull, 0xc495178c5117e2a8ull, 0xb3062ee47605d611ull, 0xbf1b4ec1f2773b2bull }}, {{ 0xd1d963553275fc2cull, 0xfec6d34b6d698a8bull, 0xf5cfe8cc127810ccull, 0xadd2eb7b2aeeda95ull, 0xfe3dd4ec9c3a5cb1ull, 0x7711139378a84fb4ull }}, {{ 0x327de153f89bd9bcull, 0xf3c440f2461f6976ull, 0x9a1f17f8b8b0a801ull, 0xca3d32cfad5489dbull, 0xee6a513e1a479ef0ull, 0xa6aac3c2b6931d11ull }}, {{ 0xf8eacd47b6168159ull, 0x85aa8976bd3a1e9dull, 0x0536efb736e69013ull, 0xe663fc1cc54d6294ull, 0x50272c6d06cc3567ull, 0x82aba59b21bf22b3ull }}, {{ 0xb92c04cd1ce10d77ull, 0x38a95ea36445322bull, 0x34255d282501a0c3ull, 0xffe7d91fb505d9c8ull, 0x2187bc4243fa160eull, 0x1ab4780f51775b01ull }}, {{ 0x3bb8300320ca86a7ull, 0x369db261eab3f5b5ull, 0x0975a391721047a0ull, 0xff0e7b3d123a81d2ull, 0x4f4d5a96a7c4dc95ull, 0x0b0cb0992ea98e0bull }}, {{ 0x5531e01f47e94287ull, 0x2228f7d32b079914ull, 0x5e9863ae74a2cc42ull, 0xf690d062b6491234ull, 0x190589e28db09ddbull, 0x6e7ee5fbd29f8c71ull }}, {{ 0x53f2c138cf1c9942ull, 0x5599ae3fae4bfacbull, 0xb1f3e4d08e5bfa95ull, 0xa1a823db1edab60bull, 0xfa3762d988e62a97ull, 0x50f4fbd63a3b7c6aull }}, {{ 0x477b8c38171dfc98ull, 0x5800ce7ccef7cbf1ull, 0xf386f0258f97c9d5ull, 0x5091668f348b1c74ull, 0xc629dc7f58fda9ecull, 0x2991d65e4652dc2dull }}, {{ 0xcad37a30e72bddeeull, 0x700810e015adf76cull, 0x834561779bede255ull, 0x25ae01980d6f1c91ull, 0xbda29cf979e8a33bull, 0x9fb25faebf3c99c9ull }}, {{ 0xec42c5e907b6ab48ull, 0x6050a8c0d8cbaa3full, 0x20b5ceac174ad756ull, 0x78cc0ff086571dafull, 0x685a21bec316604full, 0x3cf7bcd3785e01e1ull }}, {{ 0x3a9bbb1a4d22b0d5ull, 0xc326978877f4a67full, 0x471a12b8e8ec695full, 0xb7f89f653f6728d7ull, 0x138551739edfc31aull, 0x61ad6042b3ac12ceull }}, {{ 0x4a154f07035ae850ull, 0x9f81eb54af8e80f8ull, 0xc704bb39193c1dbdull, 0x2fb639f47a079868ull, 0xc3352e8434bd9f0bull, 0xd0c5c29b04b8bc0cull }}, {{ 0xe4d51646218d131cull, 0x3b13314edb9109b2ull, 0xc62f503afc592968ull, 0xdd1e438cc44bf417ull, 0xa013d12a0f68366full, 0x27b99a0e2f37587full }}, {{ 0xf052debd4f82bf1bull, 0x4ebfed1493aa60fcull, 0xbdd9224ddb7b9e12ull, 0xa32ea37faaf788edull, 0x40c62ba49a12205eull, 0x8d40048dd82974fcull }}, {{ 0x633cb3651b1b7712ull, 0x137f42cdc4a7c9e1ull, 0x6a7b570a92d42cb7ull, 0x5fd262fcadab5949ull, 0x87bdb46e04b543b2ull, 0x84802d8a719e91daull }}, {{ 0xe05f01f30f12a6b7ull, 0xc2f89c09ae8de2cdull, 0x28d16669bc49bf26ull, 0xbe37dddec8b17cdeull, 0x4d690c4c2f14a4f7ull, 0x2d01c7687031b289ull }}, {{ 0xc3b6137e96ba8326ull, 0x9db61860d18adc0aull, 0x982e00215ae17783ull, 0x6e2eaab3d6eee0adull, 0x061a7af9d6ce71adull, 0xc211ca1461f0f95dull }}, {{ 0xa51cc2f1e3491f77ull, 0x291cf3c82f6c986bull, 0xf1cc014d8cceab24ull, 0x4dd2ab066554c6c7ull, 0x3d08cdc2641070c6ull, 0x94b1e4cbd369bda2ull }}, {{ 0x731f9d72e0db3aabull, 0x9b2185d1da3df434ull, 0x71f80d078012af69ull, 0x0a3aae3ff54fc3cfull, 0x62580997e8a467bfull, 0xcef2eff642216856ull }}, {{ 0x7f3c267cc8904aaaull, 0x0f4f3a32866b8a0cull, 0x73b0824b00bada20ull, 0x664ace7f951da61aull, 0xd7705fef166c0d76ull, 0x157d5f9e954e135full }}, {{ 0xf85980dfd5a2eaa7ull, 0x991845f94033647cull, 0x84e516ee074c8540ull, 0xfeec10fbd3287d08ull, 0x6a63bf56e038869full, 0xd6e5bc31d50cc1beull }}, {{ 0xb37f08be585d2a89ull, 0xfaf2bbbc8201ece1ull, 0x30f2e54c48fd3485ull, 0xf538a9d63f94e255ull, 0x27e57964c235423full, 0x64f959f2527f9170ull }}, {{ 0x02f6576f73a3a95bull, 0xcd7b555d141340d1ull, 0xe97cf4fad9e40d3bull, 0x9436a25e7bd0d753ull, 0x8ef6bdef9614967full, 0xf1bd837738fbae61ull }}, {{ 0x1d9f6a5a84649d8cull, 0x06d155a2c8c0882aull, 0x1ee191cc82e88456ull, 0xca2257b0d6286947ull, 0x95a36b5bdccde0fbull, 0x716722a839d4cfcfull }}, {{ 0x283a27892bee2777ull, 0x442d585bd78551a5ull, 0x34cfb1fd1d152b5cull, 0xe5576ce85d941cc7ull, 0xd8623196a00ac9d5ull, 0x6e075a9242501e1bull }}, {{ 0x92458b5bb74d8aabull, 0xa9c573966b353073ull, 0x101cf3e322d3b19aull, 0xf56a4113a7c91fc8ull, 0x73d5efe2406be25aull, 0x4c4989b697212d16ull }}, {{ 0xb6b7719529076aabull, 0xa1b683e03013e483ull, 0xa12186df5c44f00aull, 0x96268ac48ddb3dd0ull, 0x865b5ed68436d78dull, 0xfadf6121e74bc2e0ull }}, {{ 0x232a6fd39a4a2aafull, 0x512126c1e0c6ed25ull, 0x4b4f44b99ab1606aull, 0xdd816bad8a906a26ull, 0x3f91b4612a246b87ull, 0xccb9cb5308f59cc5ull }}, {{ 0x5fa85e4406e5aad6ull, 0x2b4b8392c7c54373ull, 0xf118af400aedc427ull, 0xa70e34c769a4257eull, 0x7bb10bcba56c334eull, 0xff41f13e59981fb4ull }}, {{ 0xbc93aea844f8ac57ull, 0xb0f323bbcdb4a281ull, 0x6af6d8806d49a987ull, 0x868e0fca206976f5ull, 0xd4ea75f4763a0112ull, 0xf8936c6f7ff13d0cull }}, {{ 0x5dc4d292b1b6bb6bull, 0xe97f6556090e5911ull, 0x2da4750444e09f4cull, 0x418c9de5441ea596ull, 0x51289b8c9e440ab9ull, 0xb5c23c5aff6c6280ull }}, {{ 0xa9b039baf123522dull, 0x1ef9f55c5a8f7aadull, 0xc86c922ab0c63901ull, 0x8f7e2af4a93277ddull, 0x2b96137e2ea86b3cull, 0x19965b8dfa3bd903ull }}, {{ 0xa0e2414d6b6135c3ull, 0x35c3959b899acac8ull, 0xd43db5aae7be3a0bull, 0x9aedad8e9bf8aea9ull, 0xb3dcc2edd294305dull, 0xffdf938bc6567a1full }}, {{ 0x48d68d0631cc19a3ull, 0x19a3d813600bebd6ull, 0x4a6918ad0d6e4470ull, 0x0d48c79217b6d2a2ull, 0x069f9d4a39c9e3a8ull, 0xfebbc375bf60c53dull }}, {{ 0xd861823df1f9005cull, 0x006670c1c077365eull, 0xe81af6c2864eac61ull, 0x84d7cbb4ed243a56ull, 0x423c24e641e2e490ull, 0xf355a29979c7b462ull }}, {{ 0x73cf166b73ba039cull, 0x0400679184a81fb4ull, 0x110da3993f12bbcaull, 0x306df511436a4765ull, 0x965970fe92dceda5ull, 0x815859fec1cd0bd6ull }}, {{ 0x8616e03285442418ull, 0x28040baf2e913d0cull, 0xaa8863fc76bb55e4ull, 0xe44b92aca226c9f2ull, 0xdf7e69f1bca14873ull, 0x0d7383f392027661ull }}, {{ 0x3ce4c1f934a968ecull, 0x902874d7d1ac627dull, 0xa953e7dca3515ae9ull, 0xeaf3babe5583e37aull, 0xbaf023715e4cd486ull, 0x86832783b4189fd2ull }}, {{ 0x60ef93bc0e9e1938ull, 0xa194906e30bbd8e4ull, 0x9d470e9e612d8d1full, 0x2d854b6f5726e2caull, 0x4d61626daf004d45ull, 0x411f8b2508f63e3bull }}, {{ 0xc95bc558922cfc30ull, 0x4fcda44de75678ebull, 0x24c6922fcbc7833cull, 0xc734f2596784dbeaull, 0x05cdd848d60304b3ull, 0x8b3b6f72599e6e51ull }}, {{ 0xdd95b575b5c1d9dcull, 0x1e086b0b0960b935ull, 0x6fc1b5ddf5cb205bull, 0xc811777e0b309725ull, 0x3a0a72d85c1e2f05ull, 0x70525a7780304f2aull }}, {{ 0xa7d9169919928294ull, 0x2c542e6e5dc73c1aull, 0x5d911aab99ef438full, 0xd0aeaaec6fe5e776ull, 0x44687c73992dd639ull, 0x633788ab01e317a6ull }}, {{ 0x8e7ae1faffb919cdull, 0xbb49d04fa9c8590aull, 0xa7ab0ab40358a397ull, 0x26d2ad3c5efb0a9full, 0xac14dc83fbca5e42ull, 0xe02b56ae12deec7eull }}, {{ 0x90ccd3cdfd3b01fdull, 0x50e2231ca1d37a69ull, 0x8cae6b08217663edull, 0x843ac45bb5ce6a3cull, 0xb8d09d27d5e7ae95ull, 0xc1b162ccbcb53cf2ull }}, {{ 0xa800460be44e13e4ull, 0x28d55f1e5242c81full, 0x7ed02e514e9fe745ull, 0x2a4bab951a10265dull, 0x3826238e5b0cd1d7ull, 0x90eddbff5f14617bull }}, {{ 0x9002bc76eb0cc6e4ull, 0x9855b72f369bd13cull, 0xf421cf2d123f08b3ull, 0xa6f4b3d304a17fa6ull, 0x317d638f8e803267ull, 0xa94a97f9b6cbced0ull }}, {{ 0xa01b5ca52e7fc4e6ull, 0xf35927d822162c5dull, 0x895217c2b6765703ull, 0x858f063e2e4efc85ull, 0xeee5e39b9101f80cull, 0x9ce9efc123f61421ull }}, {{ 0x41119e73d0fdb0faull, 0x817b8e7154ddbba8ull, 0x5d34ed9b209f6627ull, 0x37963e6dcf15dd37ull, 0x54fae413aa13b07dull, 0x21235d8b679cc953ull }}, {{ 0x8ab0308629e8e9c2ull, 0x0ed3906d50a95492ull, 0xa411480f4639fd8bull, 0x2bde704a16daa429ull, 0x51cce8c4a4c4e4e4ull, 0x4b61a7720c1fdd41ull }}, {{ 0x6ae1e53da3192195ull, 0x9443a445269d4db9ull, 0x68acd098be43e76eull, 0xb6b062e4e48a69a0ull, 0x320117ae6fb0f0e9ull, 0xf1d08a74793ea48dull }}, {{ 0x2cd2f4685efb4fcdull, 0xcaa46ab38225093eull, 0x16c025f76ea70a51ull, 0x22e3dcf0ed682044ull, 0xf40aecd05ce96921ull, 0x7225688cbc726d83ull }}, {{ 0xc03d8c13b5d11e02ull, 0xea6c2b0315725c6dull, 0xe3817baa52866731ull, 0x5ce6a169461142a8ull, 0x886d4023a11e1b4bull, 0x7576157f5c784727ull }}, {{ 0x826778c51a2b2c18ull, 0x2839ae1ed6779c49ull, 0xe30ed4a7394007f3ull, 0xa1024e1cbcac9a98ull, 0x544481644b2d10f1ull, 0x969cd6f99cb2c78bull }}, {{ 0x180ab7b305afb8f3ull, 0x9240cd3460ac1adfull, 0xde944e883c804f7full, 0x4a170d1f5ebe09f8ull, 0x4aad0deaefc2a970ull, 0xe22065c01efbcb71ull }}, {{ 0xf06b2cfe38dd397cull, 0xb688040bc6b90cb6ull, 0xb1cb11525d031afbull, 0xe4e68339b36c63b8ull, 0xeac28b2d5d9a9e62ull, 0xd543f98135d5f26cull }}, {{ 0x642fc1ee38a43ed8ull, 0x21502875c33a7f25ull, 0xf1eead37a21f0dd5ull, 0xf1012041023be536ull, 0x2b996fc5a80a2fdcull, 0x54a7bf0c1a5b7841ull }}, {{ 0xe9dd934e366a7473ull, 0x4d219499a048f775ull, 0x7352c42c55368a53ull, 0x6a0b428a1656f425ull, 0xb3fe5db89065dea1ull, 0x4e8d76790792b28bull }}, {{ 0x22a7c10e20288c7aull, 0x034fce0042d9aa9bull, 0x813ba9bb54216741ull, 0x24709964df658976ull, 0x07efa935a3fab24eull, 0x1186a0ba4bbaf975ull }}, {{ 0x5a8d8a8d41957cc3ull, 0x211e0c029c80aa0full, 0x0c54a151494e088aull, 0x6c65fdf0b9f75ea1ull, 0x4f5c9c1867caf70dull, 0xaf424746f54dbe92ull }}, {{ 0x898769848fd6df9eull, 0x4b2c781a1d06a499ull, 0x7b4e4d2cdd0c5565ull, 0x3bfbeb6743a9b24aull, 0x199e18f40deda686ull, 0xd896c8c5950971b7ull }}, {{ 0x5f4a1f2d9e64bc30ull, 0xefbcb10522426dffull, 0xd10f03c0a27b55f4ull, 0x57d73208a4a0f6e8ull, 0x002cf9888b48813eull, 0x75e3d7b7d25e7127ull }}, {{ 0xb8e537c82fef59dfull, 0x5d5eea3356984bf9ull, 0x2a96258658d15b91ull, 0x6e67f4566e49a518ull, 0x01c1bf5570d50c6full, 0x9ae66d2e37b06b86ull }}, {{ 0x38f42dd1df5982b9ull, 0xa5b5260161f2f7c1ull, 0xa9dd773f782d93adull, 0x500f8b604ee072f1ull, 0x1191795668527c5aull, 0x0d0043ce2ce4333cull }}, {{ 0x3989ca32b97f1b3eull, 0x79137c0dd37dad8cull, 0xa2a6a87ab1c7c4c8ull, 0x209b71c314c47d70ull, 0xafaebd601338db87ull, 0x8202a60dc0ea0058ull }}, {{ 0x3f61e5fb3ef7106full, 0xbac2d88a42e8c77aull, 0x5a8294caf1cdafd4ull, 0x4612719ecface666ull, 0xdcd365c0c0389347ull, 0x141a7c8989240376ull }}, {{ 0x79d2fbd075a6a454ull, 0x4b9c75669d17cac6ull, 0x8919cfed7208de4full, 0xbcb870341cc0ffffull, 0xa041f9878235c0c8ull, 0xc908dd5f5b6822a4ull }}, {{ 0xc23dd62498826b4bull, 0xf41c960222edebc0ull, 0x5b021f467458af18ull, 0x5f3462091f89fffbull, 0x4293bf4b161987d7ull, 0xda58a5b992115a6eull }}, {{ 0x966a5d6df51830efull, 0x891ddc155d4b3587ull, 0x8e1538c08b76d6f9ull, 0xb80bd45b3b63ffd1ull, 0x99c578eedcff4e69ull, 0x8776793fb4ad884eull }}, {{ 0xe027a64b92f1e956ull, 0x5b2a98d5a4f0174bull, 0x8cd4378572a465bfull, 0x30764b9051e7fe2full, 0x01b6b954a1f91021ull, 0x4aa0bc7d0ec75312ull }}, {{ 0xc18c7ef3bd731d5bull, 0x8fa9f8587160e8f6ull, 0x804a2b367a6bf979ull, 0xe49ef3a3330feddbull, 0x11233d4e53baa14bull, 0xea475ce293c93eb4ull }}, {{ 0x8f7cf585667f2589ull, 0x9ca3b3746dc919a3ull, 0x02e5b020c837bebfull, 0xee35845ffe9f4a93ull, 0xab60650f454a4cf6ull, 0x26c9a0d9c5dc7308ull }}, {{ 0x9ae1973600f7775eull, 0x1e65028c49db0063ull, 0x1cf8e147d22d737cull, 0x4e172bbff238e9beull, 0xb1c3f298b4e701a5ull, 0x83e04881ba9c7e56ull }}, {{ 0x0ccfe81c09aaa9b0ull, 0x2ff2197ae28e03e4ull, 0x21b8ccce35c682d9ull, 0x0ce7b57f7639216dull, 0xf1a779f711061075ull, 0x26c2d5114a1cef62ull }}, {{ 0x801f111860aaa0e4ull, 0xdf74feccd98c26e8ull, 0x5138000e19c11c7bull, 0x810d16fa9e3b4e43ull, 0x708ac3a6aa3ca492ull, 0x839c52ace52159ddull }}, {{ 0x0136aaf3c6aa48eaull, 0xba91f4007f798515ull, 0x2c30008d018b1cd6ull, 0x0a82e5ca2e510ea1ull, 0x656ba482a65e6db9ull, 0x241b3ac0f34d82a6ull }}, {{ 0x0c22ad85c2a6d924ull, 0x49b38804fabf32d2ull, 0xb9e005820f6f2063ull, 0x691cf9e5cf2a924bull, 0xf6346d1a7fb0493aull, 0x69104b8981071a7full }}, {{ 0x795ac7399a847b65ull, 0xe1035031cb77fc34ull, 0x42c037149a5743e0ull, 0x1b21c2fa17a9b6f5ull, 0x9e0c4308fce2dc48ull, 0x1aa2f35f0a4708ffull }}, {{ 0xbd8bc840092cd1efull, 0xca2121f1f2afda0cull, 0x9b8226ce0768a6c8ull, 0x0f519dc4eca12594ull, 0x2c7a9e59e0dc9ad1ull, 0x0a5d81b666c659fcull }}, {{ 0x6775d2805bc03359ull, 0xe54b53737ade847full, 0x1315840c4a1683d7ull, 0x993029b13e4b77ceull, 0xbcca2f82c89e0c2aull, 0x67a7112003bf83d9ull }}, {{ 0x0a9a390395820176ull, 0xf4f14282ccb12cfaull, 0xbed7287ae4e1266eull, 0xfbe1a0ec6ef2ae0cull, 0x5fe5db1bd62c79a9ull, 0x0c86ab40257b2681ull }}, {{ 0x6a063a23d7140ea1ull, 0x916c991bfeebc1c4ull, 0x746794ccf0cb8055ull, 0xd6d0493c557acc7full, 0xbefa8f165dbcc0a3ull, 0x7d42b08176cf810dull }}, {{ 0x243e456666c89248ull, 0xae3dfb17f53591acull, 0x8c0bd00167f30357ull, 0x6422dc5b56cbfcfaull, 0x75c996dfa95f8666ull, 0xe49ae50ea41b0a89ull }}, {{ 0x6a6eb60003d5b6d2ull, 0xce6bceef9417b0b9ull, 0x7876200e0f7e216cull, 0xe95c9b9163f7e1c9ull, 0x99dfe4bc9dbb3fffull, 0xee0cf292690e695eull }}, {{ 0x28531c0026592433ull, 0x1036155bc8ece73eull, 0xb49d408c9aed4e40ull, 0x1d9e13ade7aed1deull, 0x02beef5e29507fffull, 0x4c8179b81a901db2ull }}, {{ 0x933f18017f7b6a02ull, 0xa21cd595d941086dull, 0x0e24857e0d450e80ull, 0x282cc4cb0cd432b3ull, 0x1b7559ad9d24fff7ull, 0xfd0ec13109a128f4ull }}, {{ 0xc076f00efad2240full, 0x552057da7c8a5447ull, 0x8d6d36ec84b29106ull, 0x91bfafee8049fafeull, 0x129580c82371ffa7ull, 0xe2938bea604b9989ull }}, {{ 0x84a56095cc356899ull, 0x53436e88dd674acdull, 0x8644253d2ef9aa3full, 0xb17cdf5102e3cdf1ull, 0xb9d707d16273fc8bull, 0xd9c37727c2f3ff5aull }}, {{ 0x2e75c5d9fa1615fcull, 0x40a25158a608ec07ull, 0x3ea97463d5c0a679ull, 0xeee0b92a1ce60b6full, 0x42664e2dd887dd74ull, 0x81a2a78d9d87f98bull }}, {{ 0xd099ba83c4dcdbdaull, 0x86572d767c593847ull, 0x729e8be6598680bcull, 0x54c73ba520fc7258ull, 0x97ff0dca754ea691ull, 0x105a8b88274fbf70ull }}, {{ 0x26014925b0a09685ull, 0x3f67c6a0db7c32ceull, 0x7a3176ff7f41075dull, 0x4fc8547349dc7774ull, 0xeff689e8951281adull, 0xa3897351891d7a65ull }}, {{ 0x7c0cdb78e645e12full, 0x7a0dc24892d9fc0dull, 0xc5eea5faf88a49a4ull, 0x1dd34c80e29caa8cull, 0x5fa16315d2b910c5ull, 0x635e812f5b26c7fbull }}, {{ 0xd88092b8febacbd2ull, 0xc48996d5bc83d886ull, 0xbb527bcdb566e06cull, 0x2a40fd08da1ea97full, 0xbc4ddeda3b3aa7b3ull, 0xe1b10bd98f83cfd1ull }}, {{ 0x7505bb39f34bf637ull, 0xad5fe4595d267544ull, 0x5138d6091604c43full, 0xa689e25885329efdull, 0x5b0ab486504a8cffull, 0xd0ea767f9b261e31ull }}, {{ 0x9239504380f79e21ull, 0xc5beeb7da38094acull, 0x2c385c5adc2faa7cull, 0x8162d77533fa35e5ull, 0x8e6b0d3f22e981fcull, 0x2928a0fc0f7d2dedull }}, {{ 0xb63d22a309ac2d4eull, 0xb97532e86305cebdull, 0xba339b8c99dca8dfull, 0x0ddc6a9407c61af3ull, 0x902e84775d1f13ddull, 0x9b9649d89ae3cb47ull }}, {{ 0x1e635a5e60b9c50aull, 0x3e93fd13de3a1369ull, 0x4604137e029e98bdull, 0x8a9c29c84dbd0d85ull, 0xa1d12ca9a336c6a2ull, 0x13dee2760ce5f0cbull }}, {{ 0x2fe187afc741b260ull, 0x71c7e2c6ae44c21bull, 0xbc28c2ec1a31f764ull, 0x6a19a1d309628734ull, 0x522bbea06023c259ull, 0xc6b4d89c80fb67f4ull }}, {{ 0xdecf4cddc890f7bbull, 0x71cedbc2ceaf950full, 0x59979d3905f3a9ecull, 0x2500523e5dd9480full, 0x35b57243c165977eull, 0xc310761d09d20f8bull }}, {{ 0xb41900a9d5a9ad50ull, 0x7214959c12dbd29eull, 0x7fec243a3b84a33cull, 0x7203366faa7cd099ull, 0x191676a58df7eaedull, 0x9ea49d2262349b70ull }}, {{ 0x08fa06a258a0c520ull, 0x74cdd818bc963a33ull, 0xff396a46532e605cull, 0x7420205ca8e025feull, 0xfae0a2778baf2d46ull, 0x326e2357d60e1260ull }}, {{ 0x59c442577647b340ull, 0x900a70f75dde45feull, 0xf83e26bf3fcfc39cull, 0x8941439e98c17bf5ull, 0xccc658ab74d7c4c0ull, 0xf84d616e5c8cb7c9ull }}, {{ 0x81aa976a9ecd0084ull, 0xa06869a9aaaebbefull, 0xb26d83787e1da41dull, 0x5c8ca431f78ed79bull, 0xffbf76b2906daf85ull, 0xb305ce4f9d7f2de1ull }}, {{ 0x10a9ea2a34020524ull, 0x441420a0aad3575bull, 0xf84722b4ed286928ull, 0x9d7e69f3ab946c14ull, 0xfd7aa2f9a448db35ull, 0xfe3a0f1c26f7cad3ull }}, {{ 0xa6a325a60814336dull, 0xa8c94646ac41698eull, 0xb2c75b1143941b92ull, 0x26f02384b3cc38d1ull, 0xe6ca5dc06ad89018ull, 0xee44971985adec47ull }}, {{ 0x825f787c50ca023full, 0x97dcbec2ba8e1f92ull, 0xfbc98eaca3c913baull, 0x8561632f05fa3830ull, 0x03e7a9842c75a0f1ull, 0x4eade6ff38cb3acfull }}, {{ 0x17bab4db27e41672ull, 0xee9f739b498d3bb9ull, 0xd5df92be65dac549ull, 0x35cddfd63bc631e9ull, 0x270c9f29bc98496full, 0x12cb05f837f04c16ull }}, {{ 0xed4b108f8ee8e073ull, 0x523a8410df84553aull, 0x5abbbb6ffa8bb4e3ull, 0x1a0abe5e55bdf322ull, 0x867e37a15df2de58ull, 0xbbee3bb22f62f8ddull }}, {{ 0x44eea59b9518c482ull, 0x364928a8bb2b544dull, 0x8b55525fc97510e1ull, 0x046b6faf596b7f57ull, 0x40ee2c4dab7caf71ull, 0x574e54f5d9ddb8a7ull }}, {{ 0xb1527813d2f7ad17ull, 0x1edb96974fb14b04ull, 0x715537bdde92a8ccull, 0x2c325cd97e32f96bull, 0x894dbb08b2deda6aull, 0x690f519a82a93688ull }}, {{ 0xed38b0c63dacc2e6ull, 0x3493e1e91cecee2eull, 0x6d542d6ab1ba97f9ull, 0xb9f7a07eedfdbe32ull, 0x5d094e56fcb48825ull, 0x1a9930091a9c2155ull }}, {{ 0x4436e7be68bf9cf9ull, 0x0dc6d31b21414dd5ull, 0x4549c62af149efbcull, 0x43ac44f54be96df8ull, 0xa25d0f65df0d5179ull, 0x09fbe05b0a194d55ull }}, {{ 0xaa250d70177c21b7ull, 0x89c43f0f4c8d0a54ull, 0xb4e1bdad6ce35d58ull, 0xa4bab194f71e4bb2ull, 0x57a299fab6852ebcull, 0x63d6c38e64fd0558ull }}, {{ 0xa5728660ead95121ull, 0x61aa7698fd82674eull, 0x10d168c640e1a575ull, 0x6f4aefd1a72ef4fbull, 0x6c5a03cb2133d35eull, 0xe663a38ff1e23573ull }}, {{ 0x76793fc92c7d2b4aull, 0xd0a8a1f9e7180912ull, 0xa82e17be88d07695ull, 0x58ed5e3087d591ceull, 0x3b8425ef4c0641b0ull, 0xffe4639f72d61682ull }}, {{ 0xa0bc7ddbbce3b0e5ull, 0x269653c306f05ab8ull, 0x91cced715824a1daull, 0x7945ade54e57b212ull, 0x53297b58f83e90e3ull, 0xfeebe43a7c5ce116ull }}, {{ 0x475cea9560e4e8f7ull, 0x81df459e45638b36ull, 0xb201466d716e5285ull, 0xbcb8caf50f6cf4b9ull, 0x3f9ed179b271a8e2ull, 0xf536ea48dba0cadfull }}, {{ 0xc9a129d5c8f119a2ull, 0x12b8b82eb5e3701eull, 0xf40cc0466e4f3937ull, 0x5f37ed929a418f40ull, 0x7c342ec0f87098dbull, 0x942526d89447ecb8ull }}, {{ 0xe04ba259d96b0054ull, 0xbb3731d31ae26133ull, 0x887f82c04f183c26ull, 0xb82f47ba068f9889ull, 0xda09d389b465f891ull, 0xc9738475cacf3f34ull }}, {{ 0xc2f457827e2e034bull, 0x5027f23f0cd7cc06ull, 0x54fb1b8316f25983ull, 0x31d8cd44419bf55full, 0x846243610bfbb5b1ull, 0xde832c99ec187810ull }}, {{ 0x9d8b6b18edcc20f2ull, 0x218f7676806df843ull, 0x51cf131ee5777f21ull, 0xf27804aa901795b9ull, 0x2bd6a1ca77d518ebull, 0xb11fbe0338f4b0a5ull }}, {{ 0x27722ef949f94975ull, 0x4f9aa0a1044bb2a4ull, 0x3216bf34f6aaf74bull, 0x78b02ea9a0ebd93dull, 0xb66251e8ae52f937ull, 0xeb3d6c20398ee673ull }}, {{ 0x8a75d5bce3bcde95ull, 0x1c0a464a2af4fa69ull, 0xf4e37811a2ada8f1ull, 0xb6e1d2a049367c63ull, 0x1fd73316cf3dbc2aull, 0x306639423f950085ull }}, {{ 0x689a5960e560b1cfull, 0x1866bee5ad91c81full, 0x90e2b0b05ac8996bull, 0x24d23a42dc20dbe7ull, 0x3e67fee4186959abull, 0xe3fe3c967bd20533ull }}, {{ 0x16077dc8f5c6f214ull, 0xf40374f8c7b1d13aull, 0xa8dae6e38bd5fe2eull, 0x7036469c9948970bull, 0x700ff4e8f41d80afull, 0xe7ee5de0d6343400ull }}, {{ 0xdc4ae9d999c574c8ull, 0x882291b7ccf22c44ull, 0x988d04e3765bedd5ull, 0x621ec21dfcd5e674ull, 0x609f9119892706daull, 0x0f4faac85e0a0804ull }}, {{ 0x9aed228001b68fcbull, 0x5159b12e0175bab0ull, 0xf58230e29f974a57ull, 0xd533952be05b008dull, 0xc63baaff5b864487ull, 0x991cabd3ac64502bull }}, {{ 0x0d43590011219deeull, 0x2d80ebcc0e994ae6ull, 0x9715e8da3be8e769ull, 0x5403d3b6c38e058bull, 0xbe54adf9933ead4eull, 0xfb1eb644bbeb21b5ull }}, {{ 0x84a17a00ab502b51ull, 0xc70935f891fcecfcull, 0xe6db188657190a1bull, 0x48264523a38c3773ull, 0x6f4ecbbfc072c50full, 0xcf331eaf572f5119ull }}, {{ 0x2e4ec406b121b12aull, 0xc65c1bb5b3e141ddull, 0x048ef53f66fa6515ull, 0xd17eb364637a2a87ull, 0x5913f57d847bb298ull, 0x17ff32d967d92afeull }}, {{ 0xcf13a842eb50eba2ull, 0xbf99151906cc92a3ull, 0x2d95947a05c7f2d9ull, 0x2ef301ebe2c5a946ull, 0x7ac796e72cd4f9f8ull, 0xeff7fc7e0e7badefull }}, {{ 0x16c4929d31293456ull, 0x7bfad2fa43fdba66ull, 0xc7d7ccc439cf7c81ull, 0xd57e1336dbb89cbdull, 0xcbcbe507c051c3b1ull, 0x5fafdcec90d4cb5aull }}, {{ 0xe3adba23eb9c0b59ull, 0xd7cc3dc6a7e947fcull, 0xce6dffaa421add0eull, 0x56ecc02495361f69ull, 0xf5f6f24d8331a4f2ull, 0xbcdea13da84ff18bull }}, {{ 0xe4c9456734187178ull, 0x6dfa69c28f1ccfe0ull, 0x104bfca6950ca294ull, 0x653f816dd41d3a22ull, 0x9ba577071ff07177ull, 0x60b24c68931f6f77ull }}, {{ 0xefdcb60808f46eb3ull, 0x4bc8219997201ec8ull, 0xa2f7de81d27e59ccull, 0xf47b0e4a49244554ull, 0x1476a6473f646ea9ull, 0xc6f6fc15bf3a5aacull }}, {{ 0x5e9f1c50598c5300ull, 0xf5d14fffe74133d9ull, 0x5daeb11238ef81faull, 0x8cce8ee6db6ab54eull, 0xcca27ec879ec52a3ull, 0xc5a5d8d978478ab8ull }}, {{ 0xb2371b237f7b3e05ull, 0x9a2d1fff088c067dull, 0xa8d2eab6395b13cdull, 0x80119504922b150full, 0xfe58f3d4c33b3a63ull, 0xb87a787eb2cb6b37ull }}, {{ 0xf6270f62fad06c2eull, 0x05c33ff6557840e8ull, 0x983d2b1e3d8ec608ull, 0x00afd22db5aed29cull, 0xef79864fa05047e3ull, 0x34c8b4f2fbf2302full }}, {{ 0x9d8699ddcc2439cfull, 0x39a07f9f56b28919ull, 0xf263af2e6793bc50ull, 0x06de35c918d43a1dull, 0x5abf3f1c4322cedeull, 0x0fd7117dd775e1dfull }}, {{ 0x274202a9f96a4211ull, 0x4044fc3962f95b00ull, 0x77e4d7d00bc55b22ull, 0x44ae19daf84a452bull, 0x8b78771a9f5c14acull, 0x9e66aeea6a9ad2b9ull }}, {{ 0x88941aa3be2694adull, 0x82b1da3dddbd8e01ull, 0xaef06e2075b58f56ull, 0xaecd028db2e6b3b2ull, 0x72b4a70a3998cebaull, 0x3002d5282a0c3b3full }}, {{ 0x55c90a656d81cec6ull, 0x1af2866aa9678c0full, 0xd5644d4499179961ull, 0xd4021988fd0304faull, 0x7b0e86663ff8134aull, 0xe01c5391a47a507aull }}, {{ 0x59da67f6471213b9ull, 0x0d79402a9e0b7899ull, 0x55eb04adfaebfdcbull, 0x4814ff59e21e31ccull, 0xce913ffe7fb0c0ecull, 0xc11b43b06cc724c8ull }}, {{ 0x82880f9ec6b4c53aull, 0x86bc81aa2c72b5fdull, 0x5b2e2ecbcd37e9eeull, 0xd0d1f982d52df1fbull, 0x11ac7ff0fce7893aull, 0x8b10a4e43fc76fd8ull }}, {{ 0x19509c33c30fb443ull, 0x435d10a5bc7b1be7ull, 0x8fcdd3f6042f2351ull, 0x2833bf1c53cb73d1ull, 0xb0bcff69e10b5c4cull, 0x6ea670ea7dca5e70ull }}, {{ 0xfd261a059e9d0a9bull, 0xa1a2a6795ccf1706ull, 0x9e0a479c29d7612cull, 0x9205771b45f2862full, 0xe761fa22ca719af9ull, 0x52806928e9e7b066ull }}, {{ 0xe37d043832226a11ull, 0x505a80bda016e645ull, 0x2c66cc19a269cbbeull, 0xb436a710bb793ddcull, 0x09d3c55be8700dbfull, 0x39041b99230ce405ull }}, {{ 0xe2e22a31f55824a8ull, 0x2389076840e4febaull, 0xbc03f9005821f56full, 0x0a2286a752bc6a99ull, 0x6245b5971460897dull, 0x3a2913fb5e80e832ull }}, {{ 0xdcd5a5f395716e94ull, 0x635a4a1288f1f34cull, 0x5827ba0371539657ull, 0x655942893b5c2a01ull, 0xd6b917e6cbc55ee2ull, 0x459ac7d1b10911f7ull }}, {{ 0xa0587b83d66e51c4ull, 0xe186e4b959738100ull, 0x718d44226d43df69ull, 0xf57c995c5199a40dull, 0x633aef03f5b5b4d7ull, 0xb80bce30ea5ab3aeull }}, {{ 0x4374d326604f31a5ull, 0xcf44ef3d7e830a06ull, 0x6f84a95844a6ba22ull, 0x96ddfd9b30006886ull, 0xe04d56279919106full, 0x30760de9278b04cfull }}, {{ 0xa2903f7fc317f071ull, 0x18b15866f11e643eull, 0x5b2e9d72ae83455cull, 0xe4abe80fe0041540ull, 0xc3055d8bfafaa45bull, 0xe49c8b1b8b6e301eull }}, {{ 0x59a27afd9eef646dull, 0xf6ed74056b2fea72ull, 0x8fd2267ad120b598ull, 0xeeb7109ec028d483ull, 0x9e35a777cdca6b96ull, 0xee1d6f13724de133ull }}, {{ 0x8058cde83559ec3eull, 0xa54688362fdf2877ull, 0x9e3580cc2b4717f9ull, 0x5326a63381984d23ull, 0x2e188aae09e833e5ull, 0x4d2656c2770acc04ull }}, {{ 0x03780b1215833a6cull, 0x74c1521ddeb794abull, 0x2e1707f9b0c6efc0ull, 0x3f827e030ff30364ull, 0xccf56acc631206f5ull, 0x037f6398a66bf829ull }}, {{ 0x22b06eb4d720483aull, 0x8f8d352ab32bceaeull, 0xcce64fc0e7c55d84ull, 0x7b18ec1e9f7e21e9ull, 0x01962bfbdeb44594ull, 0x22f9e3f68037b1a2ull }}, {{ 0x5ae453106742d247ull, 0x9b8413aaffb612cdull, 0x00ff1d890db5a72dull, 0xcef939323aed5322ull, 0x0fddb7d6b30ab7ccull, 0x5dc2e7a1022cf054ull }}, {{ 0x8ceb3ea4089c36c4ull, 0x1328c4adfd1cbc05ull, 0x09f7275a891887c8ull, 0x15bc3bf64d453f54ull, 0x9ea92e62fe6b2e00ull, 0xa99d0c4a15c16348ull }}, {{ 0x81307268561a23a7ull, 0xbf97aecbe31f5837ull, 0x63a789895af54dd0ull, 0xd95a579f04b47948ull, 0x329bcfddf02fcc00ull, 0xa0227ae4d98de0d6ull }}, {{ 0x0be478135d056489ull, 0x7becd3f6df39722bull, 0xe48b5f5d8d950a27ull, 0x7d876c362f0cbcd3ull, 0xfa161eab61ddf808ull, 0x4158ccf07f8ac85dull }}, {{ 0x76ecb0c1a235ed5full, 0xd74047a4b83e75aeull, 0xed71b9a787d2658aull, 0xe74a3a1dd67f6046ull, 0xc4dd32b1d2abb054ull, 0x8d780164fb6bd3abull }}, {{ 0xa53ee790561b45b1ull, 0x6882cc6f327098d0ull, 0x4671408b4e37f76cull, 0x08e6452a60f9c2c5ull, 0xb0a3faf23ab4e351ull, 0x86b00df1d23644b5ull }}, {{ 0x74750ba35d10b8eeull, 0x151bfc57f865f826ull, 0xc06c85710e2faa3cull, 0x58feb3a7c9c19bb4ull, 0xe667cd764b10e12aull, 0x42e08b72361eaf18ull }}, {{ 0x8c927461a2a7394full, 0xd317db6fb3fbb180ull, 0x843d366a8ddca658ull, 0x79f3048de190150full, 0x000e069eeea8cba7ull, 0x9cc572761d32d6f9ull }}, {{ 0x7db88bd05a883d16ull, 0x3eee925d07d4ef05ull, 0x2a6420298a9e7f78ull, 0xc37e2d8acfa0d29bull, 0x008c42355297f48aull, 0x1fb6789d23fc65baull }}, {{ 0xe9357623895262daull, 0x7551b7a24e515636ull, 0xa7e9419f6a30fab2ull, 0xa2edc76c1c483a0full, 0x057a961539ef8d6bull, 0x3d20b62367dbf944ull }}, {{ 0x1c169d635d37dc84ull, 0x95312c570f2d5e25ull, 0x8f1c903a25e9caf8ull, 0x5d49ca391ad2449cull, 0x36c9dcd4435b8634ull, 0x63471d620e97bca8ull }}, {{ 0x18e225e1a42e9d2cull, 0xd3ebbb6697c5ad73ull, 0x971da2457b21edb5ull, 0xa4e1e63b0c36ae1dull, 0x23e2a04aa1933e0bull, 0xe0c725d491ed5e92ull }}, {{ 0xf8d57ad069d223b5ull, 0x47355201edb8c67eull, 0xe72856b6cf53491aull, 0x70d2fe4e7a22cd27ull, 0x66da42ea4fc06c74ull, 0xc7c77a4db345b1b5ull }}, {{ 0xb856cc2422356512ull, 0xc81534134937c0f5ull, 0x079363241940db06ull, 0x683def10c55c038full, 0x04869d271d843c8cull, 0xcdcac70900b8f116ull }}, {{ 0x3363f9695615f2b3ull, 0xd0d408c0dc2d8999ull, 0x4bc1df68fc888e43ull, 0x126b56a7b5982396ull, 0x2d422387272a5d7cull, 0x09ebc65a07396adcull }}, {{ 0x01e7be1d5cdb7afaull, 0x2848578899c75ffcull, 0xf592ba19dd558ea6ull, 0xb831628d17f163deull, 0xc495634787a7a6d8ull, 0x6335bf84483e2c99ull }}, {{ 0x130d6d25a092cdc6ull, 0x92d36b5601c9bfd8ull, 0x97bb4502a557927dull, 0x31edd982ef6de6b5ull, 0xadd5e0cb4c8c8477ull, 0xe0197b2ad26dbe01ull }}, {{ 0xbe86437845bc09b8ull, 0xbc42315c11e17e70ull, 0xed50b21a756bb8e7ull, 0xf34a7f1d5a4b0317ull, 0xca5ac7f0fd7d2ca7ull, 0xc0fecfac38496c10ull }}, {{ 0x713ea2b2b9586135ull, 0x5a95ed98b2cef067ull, 0x4526f5089635390dull, 0x80e8f72586ee1eefull, 0xe78bcf69e6e3be8full, 0x89f41cba32de38a7ull }}, {{ 0x6c725afb3d73cc11ull, 0x89db47f6fc15640aull, 0xb3859255de143a85ull, 0x0919a777454d3558ull, 0x0b761a2304e5719bull, 0x63891f45fcae368full }}, {{ 0x3c778dd06685f8abull, 0x6290cfa5d8d5e868ull, 0x0337b75aacca4937ull, 0x5b008aa8b5041577ull, 0x729d055e30f6700eull, 0xe35b38bbdece2196ull }}, {{ 0x5cab8a24013bb6b0ull, 0xd9a81c7a785b1412ull, 0x202d298abfe6dc29ull, 0x8e056a971228d6a6ull, 0x7a2235ade9a0608full, 0xe1903756b40d4fe0ull }}, {{ 0x9eb365680c5522e1ull, 0x80911cc8b38ec8b7ull, 0x41c39f6b7f0499a2ull, 0x8c3629e6b598627dull, 0xc55618cb2043c59bull, 0xcfa2296308851ec4ull }}, {{ 0x3301f6107b535cc9ull, 0x05ab1fd70393d72cull, 0x91a43a32f62e0059ull, 0x7a1da30317f3d8e4ull, 0xb55cf7ef42a5b813ull, 0x1c559dde553333afull }}, {{ 0xfe139ca4d1419fdfull, 0x38af3e6623c667b9ull, 0xb06a45fd9dcc037aull, 0xc5285e1eef8678edull, 0x15a1af589a7930c2ull, 0x1b582aaf540004ddull }}, {{ 0xecc41e702c903eb5ull, 0x36d86ffd65c00d43ull, 0xe426bbe829f822c6ull, 0xb393ad355b40b948ull, 0xd850d97608bbe79bull, 0x1171aad9480030a2ull }}, {{ 0x3fa93061bda27313ull, 0x24745fe5f98084a7ull, 0xe9835711a3b15bbeull, 0x03c4c41590873cd8ull, 0x73287e9c57570c15ull, 0xae70ac7cd001e65cull }}, {{ 0x7c9be3d168587ebbull, 0x6c8bbefbbf052e88ull, 0x1f2166b064ed956dull, 0x25afa8d7a5486079ull, 0x7f94f21b696678d2ull, 0xd066bce02012ff9cull }}, {{ 0xde16e62e1374f34full, 0x3d7575d57633d154ull, 0x374e02e3f147d646ull, 0x78dc986c74d3c4bbull, 0xfbd175121e00b835ull, 0x240360c140bdfc1cull }}, {{ 0xace4fdccc291811aull, 0x66969a569e062d50ull, 0x290c1ce76cce5ebeull, 0xb89df43c9045af50ull, 0xd62e92b52c073216ull, 0x6821c78c876bd921ull }}, {{ 0xc0f1e9ff99af0b02ull, 0x01e207622c3dc526ull, 0x9a79210a400fb370ull, 0x362b8a5da2b8d921ull, 0x5dd1bb13b847f4e3ull, 0x1151cb7d4a367b52ull }}, {{ 0x897323fc00d66e15ull, 0x12d449d5ba69b383ull, 0x08bb4a66809d0260ull, 0x1db367a85b387b50ull, 0xaa314ec532cf90e0ull, 0xad31f2e4e620d137ull }}, {{ 0x5e7f67d808604cd2ull, 0xbc4ae25948210323ull, 0x5750e801062217c0ull, 0x29020c939034d120ull, 0xa5ed13b3fc1ba8c1ull, 0xc3f37cf0fd482c2cull }}, {{ 0xb0fa0e7053c30035ull, 0x5aecd77cd14a1f61ull, 0x6929100a3d54ed87ull, 0x9a147dc3a2102b43ull, 0x7b42c507d914978bull, 0xa782e169e4d1b9beull }}, {{ 0xe9c49063459e0216ull, 0x8d406ae02ce539d0ull, 0x1b9aa06665514749ull, 0x04cce9a454a1b0a2ull, 0xd09bb24e7acdeb74ull, 0x8b1cce22f0314170ull }}, {{ 0x21ada3e0b82c14d8ull, 0x84842cc1c0f44229ull, 0x140a43fff52cc8dfull, 0x3001206b4e50e655ull, 0x2614f710cc0b3288ull, 0x6f200d5d61ec8e68ull }}, {{ 0x50c866c731b8d06cull, 0x2d29bf91898a959bull, 0xc866a7ff93bfd8bbull, 0xe00b44310f28ff52ull, 0x7cd1a6a7f86ff951ull, 0x574085a5d33d9011ull }}, {{ 0x27d403c7f138243dull, 0xc3a17baf5f69d811ull, 0xd4028ffbc57e774full, 0xc070a9ea9799f93bull, 0xe030828fb45fbd32ull, 0x6885387a4067a0aeull }}, {{ 0x8e4825cf6c316a5full, 0xa44ed4d9ba2270abull, 0x48199fd5b6f0a91dull, 0x8466a329ec03bc56ull, 0xc1e5199d0bbd63fbull, 0x153434c6840c46d4ull }}, {{ 0x8ed17a1a39ee27b2ull, 0x6b145081455866b3ull, 0xd1003e5925669b28ull, 0x2c025fa338255b5eull, 0x92f300227565e7d3ull, 0xd40a0fc1287ac44full }}, {{ 0x942ec506434d8cefull, 0x2ecb250cb5740303ull, 0x2a026f7b76020f94ull, 0xb817bc60317591b4ull, 0xbd7e015895fb0e3full, 0x48649d8b94cbab1bull }}, {{ 0xc9d3b23ea1078159ull, 0xd3ef727f16881e23ull, 0xa4185ad29c149bc9ull, 0x30ed5bc1ee97b109ull, 0x66ec0d75dbce8e7dull, 0xd3ee2773cff4af15ull }}, {{ 0xe244f6724a4b0d77ull, 0x475a78f6e1512d65ull, 0x68f38c3a18ce15e2ull, 0xe945959351ecea60ull, 0x0538869a961190e3ull, 0x474d8a861f8ed6d6ull }}, {{ 0xd6b1a076e6ee86a5ull, 0xc988b9a4cd2bc5faull, 0x19837a44f80cdad6ull, 0x1cb7d7c1334127c4ull, 0x34354209dcafa8e7ull, 0xc907693d3b94645cull }}, {{ 0x62f044a50551426eull, 0xdf57407003b5bbccull, 0xff22c6b1b0808c63ull, 0x1f2e6d8c008b8da8ull, 0x0a1494629edc9907ull, 0xda4a1c6453cbeb9aull }}, {{ 0xdd62ae72352c984eull, 0xb9688460251955fbull, 0xf75bc2f0e5057be6ull, 0x37d0477805738899ull, 0x64cdcbda349dfa47ull, 0x86e51beb45f73404ull }}, {{ 0xa5dad07613bdf30eull, 0x3e152bc172fd5bd6ull, 0xa9959d68f236d703ull, 0x2e22cab036835603ull, 0xf009f6860e2bc6c8ull, 0x44f31730bba8082bull }}, {{ 0x7a8c249cc56b7e8aull, 0x6cd3b58e7de59662ull, 0x9fd8261976246620ull, 0xcd5beae221215c24ull, 0x6063a13c8db5c3d1ull, 0xb17ee7e7549051b7ull }}, {{ 0xc9796e1fb632f162ull, 0x40451790eaf7dfd8ull, 0x3e717cfe9d6bfd44ull, 0x05972cd54b4d996eull, 0xc3e44c5d8919a632ull, 0xeef50f094da33129ull }}, {{ 0xdebe4d3d1dfd6dd8ull, 0x82b2eba92daebe77ull, 0x706ee1f22637e4aaull, 0x37e7c054f107fe4eull, 0xa6eafba75b007df4ull, 0x5592965d085feba1ull }}, {{ 0xb36f04632be64a6full, 0x1afd349bc8d370aeull, 0x6454d3757e2eeea9ull, 0x2f0d83516a4fef10ull, 0x852dd4898e04eb8aull, 0x57b9dfa253bf3450ull }}, {{ 0x02562bdfb6fee858ull, 0x0de40e15d84266d3ull, 0xeb504296edd5529bull, 0xd687212e271f56a3ull, 0x33ca4d5f8c313365ull, 0x6d42bc5745780b25ull }}, {{ 0x175db6bd25f5136dull, 0x8ae88cda7298043eull, 0x312299e54a553a0eull, 0x61474bcd87396267ull, 0x05e705bb79ec01faull, 0x449b5b68b6b06f74ull }}, {{ 0xe9a923637b92c241ull, 0x6d15808879f02a6cull, 0xeb5a02f4e7544491ull, 0xccc8f607483dd807ull, 0x3b063952c33813c7ull, 0xae11921722e45a88ull }}, {{ 0x209b61e2d3bb968dull, 0x42d70554c361a841ull, 0x31841d91094aadaeull, 0xffd99c48d26a704full, 0x4e3e3d3ba030c5cdull, 0xccafb4e75ceb8952ull }}, {{ 0x4611d2dc4553e181ull, 0x9c66354fa1d0928bull, 0xef2927aa5ceac8ceull, 0xfe801ad838286317ull, 0x0e6e645441e7ba0bull, 0xfedd1109a1335d37ull }}, {{ 0xbcb23c9ab546cf08ull, 0x1bfe151c5225b970ull, 0x579b8ca7a12bd812ull, 0xf1010c723193deefull, 0x904feb4a930d4477ull, 0xf4a2aa604c01a426ull }}, {{ 0x5ef65e0b14c4164bull, 0x17ecd31b35793e67ull, 0x6c137e8c4bb670b5ull, 0x6a0a7c75efc6b559ull, 0xa31f30e9be84acafull, 0x8e5aa7c2f8106981ull }}, {{ 0xb59fac6ecfa8def2ull, 0xef403f1016bc7009ull, 0x38c2f17af5206712ull, 0x2468dc9b5dc3157eull, 0x5f37e921712ebedaull, 0x8f8a8d9db0a41f10ull }}, {{ 0x183cbc541c98b574ull, 0x588276a0e35c6061ull, 0x379d6ecd934406bdull, 0x6c189e11a99ed6eeull, 0xb82f1b4e6bd37485ull, 0x9b698828e66936a3ull }}, {{ 0xf25f5b491df71686ull, 0x7518a248e19bc3caull, 0x2c265407c0a84365ull, 0x38f62cb0a034654eull, 0x31d7111036428d36ull, 0x121f5199001c2265ull }}, {{ 0x77b990db2ba6e13cull, 0x92f656d8d015a5edull, 0xb97f484d8692a1f6ull, 0x399dbee6420bf50dull, 0xf266aaa21e99841eull, 0xb5392ffa011957f3ull }}, {{ 0xad3fa88fb484cc5bull, 0xbd9f647820d87b46ull, 0x3ef8d30741ba53a1ull, 0x402974fe94779289ull, 0x7802aa5531ff292eull, 0x143bdfc40afd6f87ull }}, {{ 0xc47c959d0d2ffb8dull, 0x6839ecb14874d0c2ull, 0x75b83e4891474451ull, 0x819e91f1ccabb95cull, 0xb01aa753f3f79bceull, 0xca56bda86de65b4aull }}, {{ 0xacddd82283dfd37full, 0x12433eecd490279bull, 0x99326ed5acc8ab2eull, 0x1031b371feb53d9cull, 0xe10a894787ac1611ull, 0xe76368944aff90eaull }}, {{ 0xc0aa715926be42faull, 0xb6a075404da18c14ull, 0xfbf85458bfd6afccull, 0xa1f10273f314681dull, 0xca695ccb4cb8dcaaull, 0x09e215caedfba92cull }}, {{ 0x86a86d7b836e9dc0ull, 0x22449483084f78cfull, 0xd7b34b777e62ddffull, 0x536a18877ecc112bull, 0xe81d9ff0ff389eaaull, 0x62d4d9ed4bd49bbfull }}, {{ 0x429446d32252297eull, 0x56adcd1e531ab81bull, 0x6d00f2aaefdcabf7ull, 0x4224f54af3f8abb6ull, 0x11283f69f83632a7ull, 0xdc508344f64e157full }}, {{ 0x99cac43f57359ef1ull, 0x62ca032f3f0b3110ull, 0x42097aad5e9eb7a9ull, 0x957194ed87b6b520ull, 0xab927a23b21dfa88ull, 0x9b2520b19f0cd6f6ull }}, {{ 0x01ebaa7968183566ull, 0xdbe41fd8766feaa6ull, 0x945ecac5b2332c9dull, 0xd66fd1474d231342ull, 0xb3b8c564f52bc955ull, 0x0f7346f0368065a2ull }}, {{ 0x1334a8be10f215fbull, 0x96e93e74a05f2a7cull, 0xcbb3ebb8f5ffbe2aull, 0x605e2cc9035ec099ull, 0x0537b5f193b5dd5aull, 0x9a80c5622103f85bull }}, {{ 0xc00e976ca974dbd1ull, 0xe51c708e43b7a8d8ull, 0xf50735399bfd6da9ull, 0xc3adbfda21b38601ull, 0x342d1b6fc51aa587ull, 0x0907b5d54a27b38eull }}, {{ 0x8091ea3e9e90962bull, 0xf31c658ea52c9877ull, 0x9248144017e648a2ull, 0xa4c97e8551033c13ull, 0x09c3125db30a774dull, 0x5a4d1a54e58d038eull }}, {{ 0x05b3267231a5ddaeull, 0x7f1bf79273bdf4abull, 0xb6d0ca80eefed65dull, 0x6fdef1352a2058c3ull, 0x619eb7a8fe68a908ull, 0x87030750f782238cull }}, {{ 0x38ff8075f07aa8c8ull, 0xf717abb8856b8eaeull, 0x2427e90955f45fa6ull, 0x5eb56c13a54377a5ull, 0xd0332c99f0169a54ull, 0x461e4929ab15637bull }}, {{ 0x39fb049b64ca97d5ull, 0xa6ecb535363392ceull, 0x698f1a5d5b8bbc85ull, 0xb31638c474a2ac73ull, 0x21ffbe0360e2074bull, 0xbd2edba0aed5e2d6ull }}, {{ 0x43ce2e11efe9ee4dull, 0x853f14141e03bc0eull, 0x1f9707a593755d38ull, 0xfede37ac8e5abc82ull, 0x53fd6c21c8d448f4ull, 0x63d49446d45adc5dull }}, {{ 0xa60dccb35f234f03ull, 0x3476c8c92c25588eull, 0x3be64c77c295a435ull, 0xf4ae2cbd8f8b5d15ull, 0x47e63951d84ad991ull, 0xe64dcac44b8c9ba5ull }}, {{ 0x7c89ff01b7611622ull, 0x0ca3d7dbb9757592ull, 0x56fefcad99d86a14ull, 0x8ecdbf679b71a2d4ull, 0xcefe3d3272ec7fb3ull, 0xff09ebaaf37e1474ull }}, {{ 0xdd63f61129cadd55ull, 0x7e666e953e9697b8ull, 0x65f5dec8027424c8ull, 0x94097a0c12705c4bull, 0x15ee63f87d3cfd03ull, 0xf66334ad82eccc90ull }}, {{ 0xa5e79caba1eca550ull, 0xf00051d471e1ed38ull, 0xfb9ab3d018896fd4ull, 0xc85ec478b8639af1ull, 0xdb4fe7b4e461e223ull, 0x9fe00ec71d3ffda0ull }}, {{ 0x7b0c1eb4533e7520ull, 0x6003324c72d34436ull, 0xd40b0620f55e5e51ull, 0xd3b3acb733e40d73ull, 0x911f0d10ebd2d565ull, 0x3ec093c7247fe848ull }}, {{ 0xce79330b4070933dull, 0xc01ff6fc7c40aa20ull, 0x486e3d4995afaf2dull, 0x4504bf2806e88686ull, 0xab3682a9363c55faull, 0x7385c5c76cff12d5ull }}, {{ 0x10bbfe708465c064ull, 0x813fa5dcda86a548ull, 0xd44e64dfd8dcd7c9ull, 0xb22f77904515413eull, 0xb0211a9c1e5b5bc6ull, 0x8339b9ca41f6bc58ull }}, {{ 0xa757f0652bf983e6ull, 0x0c7c7aa0894274d0ull, 0x4b0ff0be78a06ddfull, 0xf5daaba2b2d48c74ull, 0xe14b0a192f9195c2ull, 0x204141e693a35b76ull }}, {{ 0x896f63f3b7bf26f7ull, 0x7cdcca455c989026ull, 0xee9f6770b6444ab6ull, 0x9a8ab45afc4d7c8aull, 0xccee64fbdbafd99dull, 0x428c9301c46192a4ull }}, {{ 0x5e59e7852d7785a8ull, 0xe09fe6b59df5a181ull, 0x523a0a671eaaeb20ull, 0x096b0b8ddb06dd6dull, 0x014ff1d694de8028ull, 0x997dbe11abcfba70ull }}, {{ 0xaf830b33c6ab3893ull, 0xc63f03182b984f0dull, 0x3644680732ad2f48ull, 0x5e2e738a8e44a645ull, 0x0d1f7261d0b10190ull, 0xfee96cb0b61d4860ull }}, {{ 0xdb1e7005c2b035c2ull, 0xbe761ef1b3f31688ull, 0x1eac1047fac3d8d7ull, 0xadd083698eae7eb4ull, 0x833a77d226ea0fa3ull, 0xf51e3ee71d24d3c0ull }}, {{ 0x8f3060399ae21997ull, 0x709d3571077ee158ull, 0x32b8a2cfcba6786dull, 0xca25221f92d0f309ull, 0x2048ae3585249c64ull, 0x932e750723704585ull }}, {{ 0x97e3c2400cd4ffe3ull, 0x6624166a4af4cd75ull, 0xfb365c1df480b446ull, 0xe573553bbc297e5bull, 0x42d6ce17336e1befull, 0xbfd092476262b733ull }}, {{ 0xeee596808051fedaull, 0xfd68e026ed900697ull, 0xd01f992b8d070abfull, 0xf6815455599eef97ull, 0x9c640ce8024d175eull, 0x7e25b6c9d7db2800ull }}, {{ 0x54f7e1050333f480ull, 0xe618c18547a041efull, 0x213bfbb382466b7full, 0xa10d4b5580355beeull, 0x1be881101702e9b5ull, 0xed7923e26e8f9006ull }}, {{ 0x51aeca3220078d00ull, 0xfcf78f34cc429359ull, 0x4c57d50316c032feull, 0x4a84f1570215974dull, 0x17150aa0e61d2118ull, 0x46bb66d8519ba03dull }}, {{ 0x30d3e5f5404b8201ull, 0xe1ab980ffa99c17dull, 0xfb6e521ee381fdf5ull, 0xe9316d6614d7e904ull, 0xe6d26a48fd234af2ull, 0xc352047330144262ull }}, {{ 0xe846fb9482f3140aull, 0xd0b3f09fca018ee3ull, 0xd24f3534e313eb9aull, 0x1bee45fcd06f1a31ull, 0x043826d9e360ed7dull, 0xa1342c7fe0ca97ddull }}, {{ 0x12c5d3cd1d7ec864ull, 0x2707663de40f94e7ull, 0x37181410dec7340cull, 0x174ebbe0245705f2ull, 0x2a318482e1c946e3ull, 0x4c09bcfec7e9eea2ull }}, {{ 0xbbba460326f3d3e9ull, 0x8649fe6ae89bd106ull, 0x26f0c8a8b3c80879ull, 0xe91356c16b663b76ull, 0xa5ef2d1cd1dcc4deull, 0xf86161f3cf235255ull }}, {{ 0x5546bc1f85864718ull, 0x3ee3f02d16162a43ull, 0x8567d69705d054bfull, 0x1ac1638e31fe529dull, 0x7b57c320329fb0b5ull, 0xb3cdd38617613758ull }}, {{ 0x54c3593b373ec6f1ull, 0x74e761c2dcdda6a1ull, 0x360e61e63a234f78ull, 0x0b8de38df3ef3a27ull, 0xd16d9f41fa3ce713ull, 0x060a433ce9cc2974ull }}, {{ 0x4fa17c502873c567ull, 0x9109d19ca0a8824dull, 0x1c8fd2fe45611ab4ull, 0x738ae38b87584588ull, 0x2e483893c66106beull, 0x3c66a06121f99e90ull }}, {{ 0x1c4edb219485b60bull, 0xaa62301e46951705ull, 0x1d9e3deeb5cb0b0dull, 0x836ce3734972b751ull, 0xced235c5bfca4370ull, 0x5c0243cb53c031a1ull }}, {{ 0x1b148f4fcd391c69ull, 0xa7d5e12ec1d2e633ull, 0x282e6b5319ee6e88ull, 0x2240e280de7b292bull, 0x143619b97de6a265ull, 0x9816a5f14581f052ull }}, {{ 0x0ecd991e043b1c1aull, 0x8e5acbd3923cfdffull, 0x91d0313f03505156ull, 0x5688d908b0cf9bafull, 0xca1d013eeb0257f3ull, 0xf0e27b6cb7136334ull }}, {{ 0x9407fb2c2a4f1908ull, 0x8f8bf643b661ebf6ull, 0xb221ec7621232d61ull, 0x61587a56e81c14dbull, 0xe5220c752e176f81ull, 0x68d8d23f26c1e00full }}, {{ 0xc84fcfb9a716fa50ull, 0x9b779ea51fd337a1ull, 0xf5533c9d4b5fc5cfull, 0xcd74c7651118d094ull, 0xf3547c93ccea5b0dull, 0x187836778392c09eull }}, {{ 0xd31e1d4086e5c71cull, 0x12ac32733e402c51ull, 0x95405e24f1bdba1cull, 0x068fc9f2aaf825d1ull, 0x814cddc601278e8aull, 0xf4b220ab23bb8635ull }}, {{ 0x3f2d248544f9c713ull, 0xbab9f8806e81bb32ull, 0xd483ad7171694518ull, 0x419de37aadb17a2full, 0x0d00a9bc0b8b9164ull, 0x8ef546af65533e17ull }}, {{ 0x77c36d34b1c1c6c1ull, 0x4b43b50451114ff6ull, 0x4d24c66e6e1cb2f7ull, 0x902ae2cac8eec5deull, 0x8206a1587373adeaull, 0x9594c2d9f5406ce6ull }}, {{ 0xada2440ef191c38bull, 0xf0a5122b2aad1fa0ull, 0x036fc0504d1efda8ull, 0xa1acdbebd953baafull, 0x14424d748284cb29ull, 0xd7cf9c8394844101ull }}, {{ 0xc856a8956fb1a36aull, 0x6672b5afaac33c46ull, 0x225d83230335e899ull, 0x50c097367d454ad6ull, 0xca97068d192fefa0ull, 0x6e1c1d23cd2a8a0aull }}, {{ 0xd36295d65cf06224ull, 0x007b18dcaba05ac3ull, 0x57a71f5e201b15feull, 0x2785e820e4b4ec5dull, 0xe9e64182fbdf5c43ull, 0x4d19236603a9646bull }}, {{ 0x41d9da5fa163d569ull, 0x04cef89eb4438ba6ull, 0x6c8739ad410edbecull, 0x8b3b1148ef113ba5ull, 0x22fe8f1dd6b99a9full, 0x02fb61fc249dec37ull }}, {{ 0x928287bc4de65618ull, 0x3015b6330aa3747eull, 0x3d4840c48a949738ull, 0x704eacd956ac5476ull, 0x5df1972a63400a3bull, 0x1dd1d3d96e2b3a27ull }}, {{ 0xb9194d5b0aff5cefull, 0xe0d91dfe6a628cf1ull, 0x64d287ad69cde831ull, 0x6312c07d62bb4c9eull, 0xab6fe7a7e0806652ull, 0x2a32467e4db04589ull }}, {{ 0x3afd058e6df9a157ull, 0xc87b2bf027d98171ull, 0xf0394cc6220b11f2ull, 0xdebb84e5db50fe2full, 0xb25f0c8ec503ff37ull, 0xa5f6c0ef08e2b760ull }}, {{ 0x4de237904bc04d69ull, 0xd4cfb7618e7f0e6cull, 0x623cffbd546eb37bull, 0xb35330fa9129eddfull, 0xf7b67d93b227f82eull, 0x7ba3895658db29c6ull }}, {{ 0x0ad62ba2f583061cull, 0x501d29cf90f6903bull, 0xd661fd654c5302d6ull, 0x013fe9c9aba34ab9ull, 0xad20e7c4f58fb1d3ull, 0xd4635d5f788fa1c5ull }}, {{ 0x6c5db45d971e3d14ull, 0x2123a21ba9a1a24eull, 0x5fd3e5f4fb3e1c5full, 0x0c7f21e0b460eb42ull, 0xc3490db1979cf23eull, 0x4be1a5bab59c51b8ull }}, {{ 0x3ba90ba7e72e62c7ull, 0x4b645514a0505710ull, 0xbe46fb91d06d1bb7ull, 0x7cf752c70bc93097ull, 0xa0da88efec21766cull, 0xf6d0794b181b3137ull }}, {{ 0x549a748f07cfdbc6ull, 0xf1eb52ce432366a2ull, 0x6ec5d3b224431528ull, 0xe1a93bc675dbe5edull, 0x4889595f394ea03cull, 0xa424bceef10fec2cull }}, {{ 0x4e088d964e1e95b9ull, 0x73313c0e9f620257ull, 0x53ba44f56a9ed399ull, 0xd09c55c09a96fb46ull, 0xd55d7db83d124260ull, 0x696f61556a9f39baull }}, {{ 0x0c5587df0d31d938ull, 0x7fec589239d41769ull, 0x4546b1962a3443feull, 0x261b598609e5d0bfull, 0x55a6e93262b697c8ull, 0x1e59cd562a38414cull }}, {{ 0x7b574eb683f27c2full, 0xff3b75b64248ea1aull, 0xb4c2efdda60aa7f0ull, 0x7d117f3c62fa2778ull, 0x58851bf7db21edd1ull, 0x2f82055da6328cfbull }}, {{ 0xd16913212778d9d7ull, 0xf852991e96d92508ull, 0x0f9d5ea87c6a8f69ull, 0xe2aef85bddc58ab7ull, 0x753317ae8f534a2eull, 0xdb1435a87df981d1ull }}, {{ 0x2e1abf4b8ab88265ull, 0xb339fb31e47b7258ull, 0x9c25b294dc299a23ull, 0xdad5b396a9b76b26ull, 0x93feecd19940e5d4ull, 0x8eca1894ebbf122eull }}, {{ 0xcd0b78f36b3517f1ull, 0x0043cff2ecd27771ull, 0x1978f9d099a00565ull, 0x8c5903e2a12a2f82ull, 0xc7f5402ffc88fa50ull, 0x93e4f5d13576b5d1ull }}, {{ 0x0272b9823012ef6dull, 0x02a61f7d4038aa72ull, 0xfeb9c226004035f2ull, 0x7b7a26da4ba5db14ull, 0xcf9481dfdd59c725ull, 0xc6f19a2c16a31a31ull }}, {{ 0x187b3f15e0bd5a41ull, 0x1a7d3ae48236a874ull, 0xf341957c02821b74ull, 0xd2c58486f47a8ed1ull, 0x1bcd12bea581c776ull, 0xc57005b8e25f05f2ull }}, {{ 0xf4d076dac765868dull, 0x08e44ced16229488ull, 0x808fd6d819151289ull, 0x3bb72d458cc99433ull, 0x1602bb727711caa4ull, 0xb6603938d7b63b75ull }}, {{ 0x9024a48bc9f74183ull, 0x58eb0142dd59cd59ull, 0x059e6470fad2b95aull, 0x5527c4b77fdfca03ull, 0xdc1b5278a6b1ea6aull, 0x1fc23c386d1e5292ull }}, {{ 0xa16e6d75e3a88f1cull, 0x792e0c9ca582057full, 0x382fec69cc3b3d87ull, 0x538daf2afebde41eull, 0x991138b682f32827ull, 0x3d965a34432f39bcull }}, {{ 0x4e50469ae495971dull, 0xbbcc7e1e771436fcull, 0x31df3c21fa50674aull, 0x4388d7adf36ae92eull, 0xfaac37211d7f9189ull, 0x67df860a9fd8415dull }}, {{ 0x0f22c20cedd7e720ull, 0x55fced30a6ca25dbull, 0xf2b85953c72408ebull, 0xa3586ccb822d1bcdull, 0xcaba274b26fbaf5cull, 0x0ebb3c6a3e728dabull }}, {{ 0x975b94814a6f0743ull, 0x5be143e683e57a8eull, 0x7b337d45c7685931ull, 0x61743ff315c3160bull, 0xeb4588ef85d4d99eull, 0x93505c26707988b5ull }}, {{ 0xe993cd0ce856489dull, 0x96cca70126f6c991ull, 0xd002e4b9ca137bedull, 0xce8a7f7ed99edc72ull, 0x30b7595b3a50802full, 0xc123998064bf571bull }}, {{ 0x1fc60281135ed621ull, 0xe3fe860b85a3dfb3ull, 0x201cef41e4c2d747ull, 0x1168faf480349c7cull, 0xe7297d90472501deull, 0x8b63ff03ef79670full }}, {{ 0x3dbc190ac1b45d4dull, 0xe7f13c733866bcffull, 0x41215892ef9c68ceull, 0xae19cd8d020e1cd9ull, 0x079ee7a2c77212acull, 0x71e7f6275abe069full }}, {{ 0x6958fa6b910ba4feull, 0x0f6c5c80340361f8ull, 0x8b4d75bd5c1c1815ull, 0xcd020782148d207cull, 0x4c350c5bca74babeull, 0x730f9d898b6c4236ull }}, {{ 0x1d79c833aa7471e9ull, 0x9a3b9d020821d3b4ull, 0x710699659918f0d2ull, 0x02144b14cd8344ddull, 0xfa127b95e88f4b74ull, 0x7e9c275f723a961eull }}, {{ 0x26c1d204a88c731aull, 0x0654221451524509ull, 0x6a41fdf7faf9683aull, 0x14caeed00720b0a6ull, 0xc4b8d3db1598f288ull, 0xf21989ba7649dd35ull }}, {{ 0x8392342e957c7f03ull, 0x3f4954cb2d36b25bull, 0x2693ebafcdbe1244ull, 0xcfed54204746e680ull, 0xaf38468ed7f97950ull, 0x74ff61489ee2a419ull }}, {{ 0x23b609d1d6dcf61eull, 0x78dd4fefc422f793ull, 0x81c734de096cb6aaull, 0x1f454942c8c50101ull, 0xd832c1946fbebd28ull, 0x91f9ccd634da6900ull }}, {{ 0x651c623264a19d2dull, 0xb8a51f5da95dabbfull, 0x11c810ac5e3f22a8ull, 0x38b4dc9bd7b20a0full, 0x71fb8fcc5d736391ull, 0xb3c2005e10881a08ull }}, {{ 0xf31bd5f7ee5023c5ull, 0x367339a89da8b579ull, 0xb1d0a6bbae775a97ull, 0x37109e166cf46496ull, 0x73d39dfba681e3acull, 0x059403aca5510454ull }}, {{ 0x7f165baf4f2165b5ull, 0x20804096289716c3ull, 0xf2268354d0a989e8ull, 0x26a62ce0418bede2ull, 0x86442bd48112e4baull, 0x37c824be752a2b4cull }}, {{ 0xf6df94d9174df916ull, 0x450285dd95e6e3a2ull, 0x75812150269f6311ull, 0x827dc0c28f774addull, 0x3ea9b64d0abcef45ull, 0x2dd16f7093a5b0fdull }}, {{ 0xa4bbd07ae90bbae0ull, 0xb2193aa7db04e45dull, 0x970b4d218239deacull, 0x18e987999aa8eca6ull, 0x72a11f026b6158b7ull, 0xca2e5a65c478e9e4ull }}, {{ 0x6f5624cd1a754cc5ull, 0xf4fc4a8e8e30eba8ull, 0xe671034f1642b2beull, 0xf91f4c000a993e81ull, 0x7a4b361831cd7726ull, 0xe5cf87f9acb922ecull }}, {{ 0x595d70030894ffaeull, 0x91dae9918de93494ull, 0x006a2116de9afb75ull, 0xbb38f80069fc7113ull, 0xc6f01cf1f206a785ull, 0xfa1b4fc0bf3b5d3cull }}, {{ 0x7da6601e55d1fccfull, 0xb28d1faf8b1c0dcbull, 0x04254ae4b20dd297ull, 0x5039b00423dc6abeull, 0xc561217374428b39ull, 0xc5111d877851a45full }}, {{ 0xe87fc12f5a33e013ull, 0xf9833cdb6f1889f2ull, 0x2974eceef48a39ecull, 0x2240e029669c2b6cull, 0xb5cb4e828a99703dull, 0xb2ab274ab3306bbdull }}, {{ 0x14fd8bd98606c0baull, 0xbf20609256f5637dull, 0x9e9141558d664341ull, 0x5688c19e0219b239ull, 0x19f1111969fe6263ull, 0xfaaf88eaffe43569ull }}, {{ 0xd1e7767f3c43873full, 0x7743c5b76595e2e2ull, 0x31ac8d5785fea091ull, 0x6157902c1500f640ull, 0x036aaafe23efd7e1ull, 0xcadb592dfeea161bull }}, {{ 0x330aa0f85aa3487bull, 0xa8a5b929f7dadcdcull, 0xf0bd856b3bf245aeull, 0xcd6ba1b8d2099e81ull, 0x222aaded675e6ecdull, 0xec917bcbf524dd0eull }}, {{ 0xfe6a49b38a60d4ccull, 0x96793ba3ae8ca099ull, 0x676736305776b8d2ull, 0x0634513834603113ull, 0x55aacb4609b0540aull, 0x3daed5f79370a28dull }}, {{ 0xf026e10367c84ffbull, 0xe0bc5464d17e4603ull, 0x0a081de36aa33839ull, 0x3e0b2c320bc1eac2ull, 0x58abf0bc60e34864ull, 0x68d45babc2665985ull }}, {{ 0x6184ca220dd31fcdull, 0xc75b4bf02eeebc27ull, 0x64512ae22a603242ull, 0x6c6fb9f475932b94ull, 0x76b7675bc8e0d3eaull, 0x184b94b597ff7f35ull }}, {{ 0xcf2fe5548a3f3e01ull, 0xc990f761d5535989ull, 0xeb2bacd5a7c1f69bull, 0x3c5d438c97bfb3cbull, 0xa32a0995d8c84728ull, 0xf2f3cf17effaf816ull }}, {{ 0x17def54d66786c08ull, 0xdfa9a9d255417f62ull, 0x2fb4c0588d93a215ull, 0x5ba4a37ded7d05f7ull, 0x5fa45fda77d2c792ull, 0x7d8616ef5fcdb0e2ull }}, {{ 0xeeb5950600b4384eull, 0xbca0a237548ef9d4ull, 0xdd0f837587c454daull, 0x946e62eb46e23ba7ull, 0xbc6bbe88ae3bcbb7ull, 0xe73ce559be08e8d7ull }}, {{ 0x5317d23c070a330cull, 0x5e4656294d95c251ull, 0xa29b22974dab508bull, 0xcc4fdd30c4d6548eull, 0x5c357156ce55f52bull, 0x0860f5816c59186dull }}, {{ 0x3eee36584665fe79ull, 0xaebf5d9d07d9972dull, 0x5a0f59e908b12571ull, 0xfb1ea3e7b05f4d92ull, 0x9a166d640f5b93b5ull, 0x53c9970e3b7af445ull }}, {{ 0x754e1f72bffbf0beull, 0xd379a8224e7fe7c4ull, 0x8499831a56eb7670ull, 0xcf32670ce3b907b7ull, 0x04e045e89993c51bull, 0x45dfe68e52cd8ab8ull }}, {{ 0x950d3a7b7fd7676cull, 0x42c0915710ff0dacull, 0x2dff1f076532a068ull, 0x17f80680e53a4d2bull, 0x30c2bb15ffc5b316ull, 0xbabf018f3c076b30ull }}, {{ 0xd28448d2fe6a0a3cull, 0x9b85ad66a9f688bdull, 0xcbf73649f3fa4412ull, 0xefb04108f44703afull, 0xe79b4edbfdb8fedcull, 0x4b760f98584a2fe1ull }}, {{ 0x392ad83df0246659ull, 0x1338c602a3a1576aull, 0xf7a81ee387c6a8baull, 0x5ce28a598ac624ddull, 0x0c111497e939f4a1ull, 0xf29c9bf372e5ded3ull }}, {{ 0x3bac726b616bff79ull, 0xc037bc1a644d6a26ull, 0xac9134e34dc29744ull, 0xa0d9677f6bbd70abull, 0x78aacdef1c438e4dull, 0x7a1e17827cfab43eull }}, {{ 0x54bc7831ce37fab7ull, 0x822d5907eb06257eull, 0xbdac10e10999e8afull, 0x487e0afa356666b4ull, 0xb6ac0b571aa38f08ull, 0xc52ceb18e1cb0a70ull }}, {{ 0x4f5cb1f20e2fcb29ull, 0x15c57a4f2e3d76efull, 0x68b8a8ca600316dbull, 0xd4ec6dc61600030full, 0x22b871670a639652ull, 0xb3c12ef8d1ee6867ull }}, {{ 0x199ef3748dddef9eull, 0xd9b6c717ce66a559ull, 0x173697e7c01ee48eull, 0x513c49bcdc001e9aull, 0x5b346e0667e3df3cull, 0x058bd5b833501407ull }}, {{ 0x0035828d8aab5c2bull, 0x8123c6ee1002757bull, 0xe821ef0d8134ed94ull, 0x2c5ae16098013204ull, 0x900c4c400ee6b85bull, 0x377659320120c849ull }}, {{ 0x021719876ab199b0ull, 0x0b65c54ca01896ceull, 0x115356870c1147cdull, 0xbb8ccdc5f00bf431ull, 0xa07afa809503338full, 0x2a9f7bf40b47d2dfull }}, {{ 0x14e6ff4a2af000dfull, 0x71f9b4fe40f5e40cull, 0xad41614678acce02ull, 0x538009bb607789eaull, 0x44cdc905d220039dull, 0xaa3ad78870ce3cbcull }}, {{ 0xd105f8e5ad6008b3ull, 0x73c111ee899ae878ull, 0xc48dccc0b6c00c18ull, 0x43006151c4ab632aull, 0xb009da3a35402425ull, 0xa64c6b54680e5f5aull }}, {{ 0x2a3bb8f8c5c05703ull, 0x858ab351600d14b8ull, 0xad89ff87238078f4ull, 0x9e03cd31aeb1dfabull, 0xe062864614816974ull, 0x7efc314c108fb98aull }}, {{ 0xa65539b7b9836619ull, 0x376b012dc082cf31ull, 0xc763fb476304b98dull, 0x2c2603f0d2f2bcb4ull, 0xc3d93ebccd0e1e8eull, 0xf5d9ecf8a59d3f6cull }}, {{ 0x7f54412d3f21fcfeull, 0x2a2e0bc9851c17f0ull, 0xc9e7d0c9de2f3f84ull, 0xb97c27683d7b5f0full, 0xa67c7360028d318dull, 0x9a8341b678247a3full }}, {{ 0xf94a8bc47753e1e9ull, 0xa5cc75df3318ef64ull, 0xe30e27e2add87b29ull, 0x3ed98a1266d1b69dull, 0x80dc81c01983ef89ull, 0x09209120b16cc67cull }}, {{ 0xbce975aca946d31cull, 0x79fc9ab7fef959f1ull, 0xde8d8edaca74cfa0ull, 0x747f64b80431222aull, 0x089d1180ff275b5cull, 0x5b45ab46ee3fc0ddull }}, {{ 0x611e98be9cc43f14ull, 0xc3de0b2ff5bd8371ull, 0xb187948be8901c44ull, 0x8cf9ef3029eb55acull, 0x5622af09f789919cull, 0x90b8b0c54e7d88a2ull }}, {{ 0xcb31f7721faa76c9ull, 0xa6ac6fdf9967226dull, 0xef4bcd7715a11aafull, 0x81c357e1a33158beull, 0x5d5ad663ab5fb01dull, 0xa736e7b510e75657ull }}, {{ 0xeff3aa753ca8a3d9ull, 0x82bc5ebbfe075849ull, 0x58f606a6d84b0adcull, 0x11a16ed05fed7775ull, 0xa58c5fe4b1bce127ull, 0x88250d12a9095f69ull }}, {{ 0x5f84a8945e966677ull, 0x1b5bb357ec4972e3ull, 0x799c428472ee6c9dull, 0xb04e5423bf46aa95ull, 0x777bbeeef160cb86ull, 0x517282ba9a5dba20ull }}, {{ 0xbb2e95cbb1e000a9ull, 0x1195016f3ade7ce1ull, 0xc01a992c7d503e23ull, 0xe30f496578c2a9d6ull, 0xaad575556dc7f342ull, 0x2e791b4a07a94544ull }}, {{ 0x4fd1d9f4f2c0069cull, 0xafd20e584cb0e0d1ull, 0x8109fbbce5226d5eull, 0xde98ddf6b79aa263ull, 0xac56955649cf809cull, 0xd0bb10e44c9cb4aeull }}, {{ 0x1e3283917b80421bull, 0xde348f72fee8c82dull, 0x0a63d560f35845b2ull, 0xb1f8aba32c0a57e3ull, 0xbb61d55ee21b0620ull, 0x274ea8eafe1f0ed2ull }}, {{ 0x2df923aed302950aull, 0xae0d9a7df517d1c3ull, 0x67e655c98172b8fcull, 0xf3b6b45fb8676edeull, 0x51d255b4d50e3d46ull, 0x8912992ded36943bull }}, {{ 0xcbbb64d43e19d267ull, 0xcc8808eb92ee319full, 0x0eff59df0e7b39deull, 0x85230bbd340a54b0ull, 0x32375910528e64c5ull, 0x5ab9fbcb4421ca51ull }}, {{ 0xf551f04a6d023803ull, 0xfd505933bd4df03dull, 0x95f982b690d042b3ull, 0x335e756408674ee0ull, 0xf6297aa3398fefb7ull, 0x8b43d5f0a951e72bull }}, {{ 0x953362e84216301dull, 0xe5237c05650b626bull, 0xdbbf1b21a8229b07ull, 0x01b095e8540914c5ull, 0x9d9eca603f9f5d28ull, 0x70a65b669d3307b7ull }}, {{ 0xd401dd1294dde120ull, 0xf362d835f271d833ull, 0x95770f50915a0e4eull, 0x10e5db13485acfbaull, 0x2833e7c27c39a390ull, 0x667f920223fe4d2cull }}, {{ 0x4812a2b9d0aacb3full, 0x81dc721b78727206ull, 0xd6a69925ad848f15ull, 0xa8fa8ec0d38c1d49ull, 0x92070d98da4063a0ull, 0x00fbb41567ef03b9ull }}, {{ 0xd0ba5b4226abf075ull, 0x129c7512b478743eull, 0x6281fb78c72d96d7ull, 0x99c99388437924e2ull, 0xb44687f88683e446ull, 0x09d508d60f56253full }}, {{ 0x2747909582b7648eull, 0xba1c92bb0cb48a74ull, 0xd913d2b7c7c7e466ull, 0x01dfc352a2bb70d7ull, 0x0ac14fb54126eac2ull, 0x6252585c995d747dull }}, {{ 0x88cba5d71b29ed88ull, 0x451dbb4e7f0d6889ull, 0x7ac63b2dcdceec03ull, 0x12bda13a5b52686eull, 0x6b8d1d148b852b94ull, 0xd737739dfda68ce2ull }}, {{ 0x57f47a670fa3474dull, 0xb3295110f686155full, 0xcbbe4fca0a153820ull, 0xbb684c4791381450ull, 0x338322cd7333b3c8ull, 0x682a842be88180d8ull }}, {{ 0x6f8cc8069c60c904ull, 0xff9d2aa9a13cd5b9ull, 0xf56f1de464d43146ull, 0x5212facbac30cb27ull, 0x031f5c06800505d7ull, 0x11a929b7150f0872ull }}, {{ 0x5b7fd0421bc7da2aull, 0xfc23aaa04c60593eull, 0x96572aebf049ecc5ull, 0x34bdcbf4b9e7ef8full, 0x1f39984100323a69ull, 0xb09ba126d2965474ull }}, {{ 0x92fe229515ce85a3ull, 0xd964aa42fbc37c6full, 0xdf67ad3762e33fbbull, 0x0f69f78f430f5b9bull, 0x383ff28a01f6481cull, 0xe6144b8439df4c89ull }}, {{ 0xbded59d2da11385full, 0x7deea69dd5a2dc5bull, 0xba0cc429dce07d56ull, 0x9a23ab989e999416ull, 0x327f7964139ed118ull, 0xfccaf32a42b8fd5cull }}, {{ 0x6b45823c84ac33b9ull, 0xeb52822a585c9b95ull, 0x447fa9a2a0c4e560ull, 0x0564b3f631ffc8e3ull, 0xf8fabde8c4342af6ull, 0xdfed7fa69b39e599ull }}, {{ 0x30b7165d2eba053full, 0x313915a7739e13d6ull, 0xacfca05a47b0f5c9ull, 0x35ef079df3fdd8e0ull, 0xb9cb6b17aa09ad9cull, 0xbf46fc821042f803ull }}, {{ 0xe726dfa3d3443473ull, 0xec3ad88a842cc65dull, 0xc1de4386cce999dbull, 0x1b564c2b87ea78c6ull, 0x41f22eeca460c81aull, 0x78c5dd14a29db025ull }}, {{ 0x0784bc6640aa0c7bull, 0x3a4c756929bfbfabull, 0x92aea34401200297ull, 0x115ef9b34f28b7c3ull, 0x9375d53e6bc7d105ull, 0xb7baa2ce5a28e174ull }}, {{ 0x4b2f5bfe86a47ccaull, 0x46fc961ba17d7caeull, 0xbad260a80b4019e8ull, 0xadb5c10117972da3ull, 0xc29a547035ce2a32ull, 0x2d4a5c0f8598ce8dull }}, {{ 0xefd997f1426cdfe8ull, 0xc5dddd144ee6deceull, 0x4c37c69070810312ull, 0xc9198a0aebe7c865ull, 0x9a074c621a0da5faull, 0xc4e7989b37f81189ull }}, {{ 0x5e7fef6c9840bf0eull, 0xbaaaa2cb1504b415ull, 0xfa2dc1a4650a1ebbull, 0xdaff646d370dd3f4ull, 0x0448fbd504887bcbull, 0xb10bf6102fb0af60ull }}, {{ 0xb0ff5a3df287768aull, 0x4aaa5beed22f08d5ull, 0xc5c9906bf2653355ull, 0x8df9ec44268a4791ull, 0x2ad9d6522d54d5f6ull, 0xea779ca1dce6d9c0ull }}, {{ 0xe9f9866b794aa163ull, 0xeaa7975435d65858ull, 0xb9dfa43777f40154ull, 0x8bc33aa98166cbb1ull, 0xac825f35c5505ba1ull, 0x28ac1e52a1048181ull }}, {{ 0x23bf4032bcea4de1ull, 0x2a8be94a1a5f7379ull, 0x42bc6a2aaf880d51ull, 0x75a04a9f0e03f4f1ull, 0xbd17b819b523944full, 0x96b92f3a4a2d0f10ull }}, {{ 0x657881fb61270ac7ull, 0xa9771ce507ba82bbull, 0x9b5c25aadb50852bull, 0x9842ea368c27916cull, 0x62ed31011363cb1aull, 0xe33bd846e5c296a7ull }}, {{ 0xf6b513d1cb866bc9ull, 0x9ea720f24d491b51ull, 0x119978ac912533b4ull, 0xf29d2621798bae3eull, 0xdd43ea0ac1e5ef09ull, 0xe05672c4f999e289ull }}, {{ 0xa312c631f34035daull, 0x3287497704db1133ull, 0xaffeb6bdab74050eull, 0x7a237d4ebf74ce6cull, 0xa4a7246b92fb5663ull, 0xc3607bb1c002d962ull }}, {{ 0x5ebbbdf380821a87ull, 0xf948dea6308eac04ull, 0xdff32368b288328dull, 0xc562e5137a90103eull, 0x6e876c33bdd15fe2ull, 0xa1c4d4f1801c7ddaull }}, {{ 0xb3556b8305150942ull, 0xbcd8b27de592b82bull, 0xbf7f6216f951f98bull, 0xb5dcf2c2c9a0a274ull, 0x514a3a056a2dbedbull, 0x51b0516f011cea88ull }}, {{ 0x0156331e32d25c99ull, 0x6076f8eaf7bb31b5ull, 0x7af9d4e5bd33bf75ull, 0x1aa17b9be046588full, 0x2ce6443625c97495ull, 0x30e32e560b212953ull }}, {{ 0x0d5dff2dfc379df7ull, 0xc4a5b92dad4ff112ull, 0xcdc250f964057a95ull, 0x0a4ed416c2bf759aull, 0xc0feaa1d79de8dd3ull, 0xe8dfcf5c6f4b9d3full }}, {{ 0x85abf7cbda2c2ba4ull, 0xae793bc8c51f6ab4ull, 0x099729bde836c9d9ull, 0x671448e39b7a980cull, 0x89f2a526c2b18a3eull, 0x18be199c58f4247dull }}, {{ 0x38b7adf685b9b463ull, 0xd0bc55d7b33a2b0dull, 0x5fe7a16b1223e280ull, 0x06cad8e412c9f078ull, 0x637a73839aef6670ull, 0xf76d001b79896ce7ull }}, {{ 0x372ccba139410be2ull, 0x275b5a6d0045ae84ull, 0xbf0c4e2eb566d908ull, 0x43ec78e8bbe364b3ull, 0xe2c883240d5a0060ull, 0xaa420112bf5e4109ull }}, {{ 0x27bff44c3c8a76d3ull, 0x8991884202b8d12aull, 0x767b0dd316047a51ull, 0xa73cb91756e1ef05ull, 0xdbd51f68858403c2ull, 0xa6940abb79ae8a62ull }}, {{ 0x8d7f8afa5d68a43aull, 0x5faf52941b382ba5ull, 0xa0ce8a3edc2cc72full, 0x885f3ae964d35636ull, 0x96533a153728259aull, 0x81c86b52c0d167dcull }}, {{ 0x86fb6dc7a6166a46ull, 0xbcd939c91031b477ull, 0x4811667499bfc7d9ull, 0x53b84d1df0415e22ull, 0xdf4044d427917809ull, 0x11d4313b882e0e9dull }}, {{ 0x45d249cc7ce026bbull, 0x607c41daa1f10cabull, 0xd0ae008e017dce81ull, 0x4533032b628dad56ull, 0xb882b0498baeb05dull, 0xb249ec5351cc922aull }}, {{ 0xba36e1fce0c1834aull, 0xc4da928a536a7eb0ull, 0x26cc058c0eea110dull, 0xb3fe1fb1d988c564ull, 0x351ae2df74d2e3a4ull, 0xf6e33b4131fdb5abull }}, {{ 0x4624d3e0c78f20e6ull, 0xb089b9674228f2e7ull, 0x83f837789524aa89ull, 0x07ed3cf27f57b5e9ull, 0x130cdcba903ce46full, 0xa4e0508bf3e918b0ull }}, {{ 0xbd7046c7cb974901ull, 0xe5613e0895997d08ull, 0x27b22ab5d36ea960ull, 0x4f446178f96d1b1full, 0xbe809f49a260ec56ull, 0x70c32577871af6e0ull }}, {{ 0x6662c3cdf3e8da07ull, 0xf5cc6c55d7fee257ull, 0x8cf5ab1a42529dc8ull, 0x18abceb9be430f37ull, 0x710638e057c93b5full, 0x679f76ab470da4c7ull }}, {{ 0xffdba60b87188447ull, 0x99fc3b5a6ff4d769ull, 0x8198af06973a29d9ull, 0xf6b613416e9e982bull, 0x6a3e38c36ddc51b6ull, 0x0c3aa2b0c6886fcaull }}, {{ 0xfe947c7346f52ac3ull, 0x03da51885f906a23ull, 0x0ff6d641e845a280ull, 0xa31cc08e5231f1b3ull, 0x266e37a24a9b3125ull, 0x7a4a5ae7c1545de8ull }}, {{ 0xf1ccdc80c593ab9bull, 0x26872f53bba42567ull, 0x9fa45e9312b85900ull, 0x5f1f858f35f370feull, 0x804e2c56ea0feb78ull, 0xc6e78d0d8d4bab11ull }}, {{ 0x72009d07b7c4b40eull, 0x8147d9455469760full, 0x3c6bb1bebb337a01ull, 0xb73b37981b8269f2ull, 0x030dbb65249f32b3ull, 0xc50b828784f4aeafull }}, {{ 0x7406224d2daf0889ull, 0x0cce7cb54c1e9c9aull, 0x5c34f1735002c40full, 0x28502bf113182376ull, 0x1e8951f36e37fb05ull, 0xb273194b318ed2d6ull }}, {{ 0x883d5703c8d65558ull, 0x8010df14f9321e08ull, 0x9a116e81201ba896ull, 0x9321b76abef1629full, 0x315d33824e2fce33ull, 0xf87efcefef943c5dull }}, {{ 0x52656625d85f556cull, 0x00a8b6d1bbf52c55ull, 0x04ae510b411495e1ull, 0xbf512a2b756dda3cull, 0xeda403170dde0e03ull, 0xb4f5e15f5bca5ba3ull }}, {{ 0x37f5fd7a73b95633ull, 0x069724315793bb55ull, 0x2ecf2a708acddacaull, 0x792ba5b2964a8658ull, 0x48681ee68aac8c25ull, 0x119acdb995e79467ull }}, {{ 0x2f9be6c8853d5dffull, 0x41e769ed6bc55154ull, 0xd417a8656c0a8be4ull, 0xbbb478f9dee93f71ull, 0xd41135016abd7976ull, 0xb00c093fdb0bcc08ull }}, {{ 0xdc1703d53465abfaull, 0x930a234635b52d49ull, 0x48ec93f6386976eaull, 0x550cb9c2b51c7a72ull, 0x48ac120e2b66bea3ull, 0xe0785c7e8e75f858ull }}, {{ 0x98e626540bf8b7c1ull, 0xbe6560be1913c4e2ull, 0xd93dc79e341ea529ull, 0x527f419b131cc876ull, 0xd6b8b48db2037261ull, 0xc4b39cf1909bb372ull }}, {{ 0xf8fd7f4877b72d85ull, 0x6ff5c76cfac5b0d9ull, 0x7c69cc2e093273a1ull, 0x38f8900ebf1fd4a4ull, 0x63370d88f42277cdull, 0xaf04216fa615027cull }}, {{ 0xb9e6f8d4ad27c735ull, 0x5f99ca41cbb8e883ull, 0xdc21f9cc5bf8844eull, 0x39b5a093773e4e6cull, 0xe02687598958ae04ull, 0xd6294e5c7cd218dbull }}, {{ 0x4305b84ec38dc815ull, 0xbc01e691f5391525ull, 0x9953c1fb97b52b0full, 0x411845c2a86f1040ull, 0xc181497f5d76cc2aull, 0x5d9d0f9ce034f896ull }}, {{ 0x9e393313a389d0cfull, 0x581301b3943ad374ull, 0xfd4593d3ed13ae9dull, 0x8af2b99a9456a285ull, 0x8f0cdef9a6a3f9a6ull, 0xa8229c20c211b5e3ull }}, {{ 0x2e3bfec463622811ull, 0x70be1103ca4c428eull, 0xe4b7c64742c4d225ull, 0x6d7b4009cb62593bull, 0x9680b5c08267c081ull, 0x915a194794b11ae3ull }}, {{ 0xce57f3abe1d590aeull, 0x676caa25e6fa998dull, 0xef2dbec89bb03576ull, 0x46d08061f1d77c56ull, 0xe1071985180d850eull, 0xad84fccbceeb0ce3ull }}, {{ 0x0f6f84b6d257a6ceull, 0x0a3ea57b05c9ff8aull, 0x57c973d614e216a0ull, 0xc42503d3726adb65ull, 0xca46ff32f087328eull, 0xc731dff6152e80e6ull }}, {{ 0x9a5b2f24376c840aull, 0x667276ce39e3fb64ull, 0x6dde865cd0d4e240ull, 0xa9722642782c91f5ull, 0xe6c5f7fd6547f993ull, 0xc7f2bf9cd3d10903ull }}, {{ 0x078fd76a2a3d2865ull, 0x0078a40e42e7d1eeull, 0x4ab13fa02850d684ull, 0x9e757e98b1bdb396ull, 0x03bbafe5f4cfbfc4ull, 0xcf7b7c20462a5a27ull }}, {{ 0x4b9e6a25a66393efull, 0x04b6688e9d0e334cull, 0xeaec7c4193286128ull, 0x3096f1f6f16903deull, 0x2554defb901d7daeull, 0x1ad2d942bda78586ull }}, {{ 0xf43025787fe3c759ull, 0x2f201592228e00faull, 0x2d3cda8fbf93cb90ull, 0xe5e573a56e1a26b5ull, 0x7550b5d3a126e8cdull, 0x0c3c7c9b688b373dull }}, {{ 0x89e176b4fee5c97eull, 0xd740d7b5598c09cdull, 0xc460899d7bc5f3a1ull, 0xfaf684764d058313ull, 0x95271a444b85180aull, 0x7a5cde1215702866ull }}, {{ 0x62cea311f4f9def0ull, 0x68886d157f786207ull, 0xabc56026d5bb8452ull, 0xcda12c9f02371ec5ull, 0xd38706aaf332f06dull, 0xc7a0acb4d6619401ull }}, {{ 0xdc125eb391c2b55bull, 0x155442d6fab3d449ull, 0xb5b5c18459532b38ull, 0x084bbe36162733b8ull, 0x434642ad7ffd644aull, 0xcc46bf105fcfc812ull }}, {{ 0x98b7b303b19b1590ull, 0xd54a9c65cb064ae2ull, 0x19198f2b7d3fb030ull, 0x52f56e1cdd880537ull, 0xa0be9ac6ffe5eae4ull, 0xfac376a3be1dd0b6ull }}, {{ 0xf72cfe24f00ed79bull, 0x54ea1bf9ee3eecd9ull, 0xfaff97b2e47ce1e8ull, 0x3d964d20a7503426ull, 0x47720bc5fefb2cebull, 0xcba2a2656d2a2722ull }}, {{ 0xa7c1ed7160946c11ull, 0x512517c34e754083ull, 0xcdfbecfcece0d313ull, 0x67df034689220985ull, 0xca7475bbf5cfc130ull, 0xf45a57f643a58756ull }}, {{ 0x8d93466dc5cc38acull, 0x2b72eda110948524ull, 0x0bd741e140c83ec1ull, 0x0eb620c15b545f3aull, 0xe88c99579a1d8be4ull, 0x8b876f9ea4774963ull }}, {{ 0x87c0c049b9fa36b8ull, 0xb27d484aa5cd336dull, 0x766892cc87d2738bull, 0x931d478d914bb844ull, 0x157dfd6c052776e8ull, 0x734a5c326ca8dde7ull }}, {{ 0x4d8782e143c62332ull, 0xf8e4d2ea7a040247ull, 0xa015bbfd4e388374ull, 0xbf24cb87acf532acull, 0xd6ebe638338aa515ull, 0x80e799f83e98ab06ull }}, {{ 0x074b1ccca5bd5ff1ull, 0xb8f03d28c42816c9ull, 0x40d957e50e352291ull, 0x776ff34cc193fabeull, 0x6536fe32036a72d9ull, 0x090c03b271f6ae44ull }}, {{ 0x48ef1ffe7965bf6dull, 0x39626397a990e3daull, 0x887d6ef28e1359b1ull, 0xaa5f80ff8fc7cb6eull, 0xf425edf422287c7eull, 0x5a7824f873a2ceabull }}, {{ 0xd9573ff0bdf97a46ull, 0x3dd7e3ec9fa8e686ull, 0x54e655798cc180ecull, 0xa7bb09fb9dcdf251ull, 0x897b4b895594dcf2ull, 0x88b171b4845c12b7ull }}, {{ 0x7d687f676bbec6b9ull, 0x6a6ee73e3c990144ull, 0x50ff56bf7f8f093aull, 0x8d4e63d42a0b772dull, 0x5ed0f35d57d0a17aull, 0x56ee710d2b98bb2bull }}, {{ 0xe614fa0a3573c338ull, 0x2855086e5dfa0cacull, 0x29f9637afb965c48ull, 0x850fe649a472a7c5ull, 0xb42981a56e264ec9ull, 0x65506a83b3f74fb1ull }}, {{ 0xfcd1c4661685a035ull, 0x9352544fabc47ec0ull, 0xa3bde2cdd3df9ad1ull, 0x329efee06c7a8db3ull, 0x099f10764d7f13dfull, 0xf524292507a91cf1ull }}, {{ 0xe031abfce138420eull, 0xc1374b1cb5acf389ull, 0x656adc0a46bc0c2full, 0xfa35f4c43cc98904ull, 0x6036a49f06f6c6b7ull, 0x93699b724c9b216aull }}, {{ 0xc1f0b7e0cc32948aull, 0x8c28ef1f18c18362ull, 0xf62c9866c35879ddull, 0xc61b8faa5fdf5a2bull, 0xc2226e3645a3c32full, 0xc2201276fe0f4e27ull }}, {{ 0x93672ec7f9f9cd63ull, 0x79995736f78f21dbull, 0x9dbdf403a174c2a7ull, 0xbd139ca7beb985b7ull, 0x95584e1eb8659fddull, 0x9540b8a5ec990d8dull }}, {{ 0xc207d3cfc3c205dfull, 0xbffd6825ab975293ull, 0x296b88244e8f9a8aull, 0x62c41e8d733f392cull, 0xd5730d3333f83ea9ull, 0xd487367b3dfa8787ull }}, {{ 0x944e461da5943ab3ull, 0x7fe61178b3e939c5ull, 0x9e33516b119c096bull, 0xdba9318680783bb9ull, 0x567e840007b2729dull, 0x4d4820d06bc94b4eull }}, {{ 0xcb0ebd2877ca4afbull, 0xfefcaeb7071c41b7ull, 0x2e012e2eb0185e32ull, 0x949bef4104b25540ull, 0x60f128004cf87a2aull, 0x04d1482435dcf10full }}, {{ 0xee936394ade6edcfull, 0xf5ded326471a912dull, 0xcc0bcdd2e0f3adfdull, 0xce17588a2ef75481ull, 0xc96b900301b4c5a9ull, 0x302cd16a1aa16a99ull }}, {{ 0x51c1e3cecb054a15ull, 0x9ab43f7ec709abcbull, 0xf8760a3cc984cbebull, 0x0ce97565d5a94d11ull, 0xde33a01e110fb8a2ull, 0xe1c02e250a4e2a01ull }}, {{ 0x3192e613ee34e4ceull, 0x0b0a7af3c660b5f1ull, 0xb49c665fdf2ff734ull, 0x811e95fa589d02b3ull, 0xae04412caa9d3654ull, 0xd181cd72670da412ull }}, {{ 0xefbcfcc74e10f00full, 0x6e68cd85bfc71b6bull, 0x0e1bffbeb7dfa808ull, 0x0b31dbc776221b05ull, 0xcc2a8bbeaa241f4dull, 0x2f120678068868baull }}, {{ 0x5d61dfc90ca96099ull, 0x501807397dc71237ull, 0x8d17fd732ebc9054ull, 0x6ff295ca9d550e32ull, 0xf9a97572a5693902ull, 0xd6b440b04154174bull }}, {{ 0xa5d2bdda7e9dc5faull, 0x20f0483ee9c6b629ull, 0x82efe67fd35da34bull, 0x5f79d9ea25528df9ull, 0xc09e967a761c3a18ull, 0x630a86e28d48e8f7ull }}, {{ 0x7a3b6a88f229bbc0ull, 0x4962d27521c31da0ull, 0x1d5f00fe41a860efull, 0xbac2832575398bbfull, 0x8631e0c89d1a44f3ull, 0xde6944d984d919adull }}, {{ 0xc652295975a15581ull, 0xdddc3893519f2844ull, 0x25b609ee9093c958ull, 0x4b991f76943f7577ull, 0x3df2c7d62306b185ull, 0xb01cb07f307b00c7ull }}, {{ 0xbf359d7e984d570dull, 0xaa9a35c1303792afull, 0x791c6351a5c5dd78ull, 0xf3fb3aa1ca7a96a7ull, 0x6b7bce5d5e42ef34ull, 0xe11ee4f7e4ce07c8ull }}, {{ 0x781826f1f3056682ull, 0xaa06198be22bbaddull, 0xbb1be13079baa6b6ull, 0x87d04a51e8c9e28aull, 0x32d60fa5ae9d5811ull, 0xcb34f1aef00c4dd4ull }}, {{ 0xb0f185737e360119ull, 0xa43cff76d5b54ca6ull, 0x4f16cbe4c14a8322ull, 0x4e22e73317e2d96bull, 0xfc5c9c78d22570afull, 0xf01170d5607b0a49ull }}, {{ 0xe96f3682ee1c0af7ull, 0x6a61faa45914fe82ull, 0x16e3f6ef8ce91f5aull, 0x0d5d07feeedc7e31ull, 0xdb9e1cb8357666d9ull, 0x60ae6855c4ce66e3ull }}, {{ 0x1e58211d4d186da6ull, 0x27d3ca6b7ad1f11dull, 0xe4e7a55b811b3988ull, 0x85a24ff5549cedeaull, 0x942d1f3216a0047aull, 0xc6d01359b01004e6ull }}, {{ 0x2f714b2502f44878ull, 0x8e45e832cc336b23ull, 0xf10c75930b103f51ull, 0x38571f954e214b2cull, 0xc9c337f4e2402cc9ull, 0xc420c180e0a03101ull }}, {{ 0xda6cef721d8ad4abull, 0x8ebb11fbfa022f5full, 0x6a7c97be6ea2792full, 0x33673bd50d4cefc1ull, 0xe1a02f90d681bfdcull, 0xa9478f08c641ea11ull }}, {{ 0x88415a75276c4eb0ull, 0x934eb3d7c415d9beull, 0x28dded705258bbdbull, 0x0208565285015d8eull, 0xd041dba861117e9aull, 0x9ccb9657be9324b2ull }}, {{ 0x528d88938a3b12dbull, 0xc113066da8da8171ull, 0x98ab466337775693ull, 0x14535f39320da78dull, 0x22929493caaef204ull, 0x1ff3df6d71bf6efcull }}, {{ 0x398755c3664ebc8full, 0x8abe404898890e6dull, 0xf6b0bfe02aa961c5ull, 0xcb41b83bf4888b87ull, 0x59b9cdc5ead57428ull, 0x3f86ba46717a55d9ull }}, {{ 0x3f4959a1ff135d93ull, 0x6b6e82d5f55a9044ull, 0xa2e77ec1aa9dd1b7ull, 0xf09132578d55734full, 0x814209bb2c568997ull, 0x7b4346c06ec75a7dull }}, {{ 0x78dd8053f6c1a7c0ull, 0x32511c5b9589a2aaull, 0x5d0af390aa2a312aull, 0x65abf76b8556811cull, 0x0c94614fbb615fefull, 0xd0a0c38453c988e7ull }}, {{ 0xb8a70347a3908d81ull, 0xf72b1b93d7605aa8ull, 0xa26d83a6a5a5eba5ull, 0xf8b7aa3335610b1bull, 0x7dcbcd1d51cdbf59ull, 0x2647a32b45df5906ull }}, {{ 0x368620cc63a5870dull, 0xa7af13c669c38a97ull, 0x58472482787b347bull, 0xb72ca60015ca6f14ull, 0xe9f6032532097983ull, 0x7ecc5fb0bab97a40ull }}, {{ 0x213d47fbe4774680ull, 0x8cd6c5c021a369e8ull, 0x72c76d18b4d00cd4ull, 0x27be7c00d9e856cbull, 0x239c1f73f45ebf25ull, 0xf3fbbce74b3ec689ull }}, {{ 0x4c64cfd6eca8c0fcull, 0x8063b98150622311ull, 0x7bca42f71020804dull, 0x8d70d808831363f2ull, 0x64193a878bb37773ull, 0x87d56108f073c15bull }}, {{ 0xfbf01e653e9789d5ull, 0x03e53f0d23d55eacull, 0xd5e69da6a1450307ull, 0x866870551ec1e778ull, 0xe8fc494b7502aa83ull, 0x4e55ca5964858d91ull }}, {{ 0xd7612ff471eb6255ull, 0x26f476836655b2c1ull, 0x5b0228824cb21e46ull, 0x4014635333930ab8ull, 0x19dadcf2921aa923ull, 0x0f59e77ded3787b3ull }}, {{ 0x69cbdf8c7331d755ull, 0x858ca121ff58fb92ull, 0x8e159516fef52ebdull, 0x80cbe14003be6b33ull, 0x028ca179b50a9b60ull, 0x99830aeb442b4cffull }}, {{ 0x21f6bb7c7ff26954ull, 0x377e4b53f979d3b8ull, 0x8cd7d2e5f593d367ull, 0x07f6cc8025703003ull, 0x197e4ec1126a11c5ull, 0xff1e6d30a9b101f6ull }}, {{ 0x53a352dcff781d4aull, 0x2aeef147bec24531ull, 0x806e3cfb97c64208ull, 0x4fa3fd017661e023ull, 0xfeef138ab824b1b2ull, 0xf73043e6a0ea139cull }}, {{ 0x44613ca1fab124e3ull, 0xad556ccd7396b3edull, 0x044e61d3edbe9451ull, 0x1c67e20e9fd2c163ull, 0xf556c36b316ef0f7ull, 0xa7e2a7024924c421ull }}, {{ 0xabcc5e53caeb70dbull, 0xc556400683e30744ull, 0x2b0fd2474971cb30ull, 0x1c0ed4923e3b8ddeull, 0x9563a22fee5569a7ull, 0x8eda8616db6fa953ull }}, {{ 0xb5fbaf45ed32688cull, 0xb55e804126de48aeull, 0xae9e36c8de71efe7ull, 0x18944db66e538aadull, 0xd5e455df4f562087ull, 0x94893ce4925c9d43ull }}, {{ 0x1bd4d8bb43f8157bull, 0x15b1028b84aed6d3ull, 0xd22e23d8b0735f0dull, 0xf5cb09204f436ac8ull, 0x5aeb5ab9195d4546ull, 0xcd5c60edb79e24a6ull }}, {{ 0x16507750a7b0d6d0ull, 0xd8ea19732ed4643full, 0x35cd6676e481b682ull, 0x99ee5b4318a22bd8ull, 0x8d318b3afda4b4c5ull, 0x059bc9492c2d6e7full }}, {{ 0xdf24a9268ce8641dull, 0x7924fe7fd44bea76ull, 0x1a0600a4ed11211cull, 0x034f909ef655b672ull, 0x83ef704de86f0fb8ull, 0x3815dcdbb9c650fbull }}, {{ 0xb76e9b818113e922ull, 0xbb71f0fe4af728a4ull, 0x043c067142ab4b1cull, 0x211ba6359f592075ull, 0x275a630b14569d30ull, 0x30daa09541bf29d3ull }}, {{ 0x2a52130f0ac71b52ull, 0x527369eeeda7966full, 0x2a58406c9ab0ef1full, 0x4b147e18397b4492ull, 0x8987de6ecb6223e1ull, 0xe88a45d49177a23full }}, {{ 0xa734be966bc71133ull, 0x38822355488be057ull, 0xa772843e0ae95739ull, 0xeeccecf23ed0adb5ull, 0x5f4eb053f1d566ccull, 0x1566ba4daeac567bull }}, {{ 0x880f71e035c6ac02ull, 0x35156154d576c36cull, 0x8a792a6c6d1d683cull, 0x540141767426c918ull, 0xb912e34772560401ull, 0xd6034708d2bb60d1ull }}, {{ 0x509a72c219c2b813ull, 0x12d5cd5056a3a23dull, 0x68bba83c4326125aull, 0x480c8ea08983daf5ull, 0x3abce0ca775c280dull, 0x5c20c6583b51c831ull }}, {{ 0x26087b95019b30c3ull, 0xbc5a052362645665ull, 0x1754925a9f7cb784ull, 0xd07d92455f268d96ull, 0x4b60c7e8a9999084ull, 0x9947bf725131d1ecull }}, {{ 0x7c54d3d2100fe79bull, 0x5b843361d7eb5ff3ull, 0xe94db78a3adf2b2full, 0x24e7b6b5b78187dcull, 0xf1c7cf169fffa530ull, 0xfccd7a772bf2333aull }}, {{ 0xdb504634a09f0c0dull, 0x932a01d26f31bf82ull, 0x1d092b664cb7afd9ull, 0x710d23192b0f4ea1ull, 0x71ce16e23ffc73e1ull, 0xe006c8a7b776004dull }}, {{ 0x9122be0e46367887ull, 0xbfa4123857f17b1cull, 0x225bb1feff2cde7full, 0x6a835efbae99124bull, 0x720ce4d67fdc86ceull, 0xc043d68d2a9c0306ull }}, {{ 0xab5b6c8ebe20b545ull, 0x7c68b6336f6ecf1dull, 0x5794f3f5f7c0b0fdull, 0x2921b5d4d1fab6efull, 0x7480f060fe9d4410ull, 0x82a66183aa181e40ull }}, {{ 0xb1923d936d4714b7ull, 0xdc171e025a541728ull, 0x6bd1879bad86e9e6ull, 0x9b511a5033cb2559ull, 0x8d0963c9f224a8a1ull, 0x1a7fcf24a4f12e84ull }}, {{ 0xefb667c244c6cf25ull, 0x98e72c178748e796ull, 0x362f4c14c7452304ull, 0x112b072205ef757eull, 0x825de5e3756e9650ull, 0x08fe176e716bd12dull }}, {{ 0x5d200d96afc41775ull, 0xf907b8eb48d90be5ull, 0x1dd8f8cfc8b35e2dull, 0xabae47543b5a96eeull, 0x17aafae29651df20ull, 0x59ecea506e362bc7ull }}, {{ 0xa34087e2dda8ea93ull, 0xba4d3930d87a76f5ull, 0x2a79b81dd701adcbull, 0xb4cec94a5189e54dull, 0xecadccd9df32b746ull, 0x834127244e1db5c6ull }}, {{ 0x60854edca89929bbull, 0x47043be874c8a598ull, 0xa8c1312a6610c9f5ull, 0x1013dce72f62f503ull, 0x3eca0082b7fb28c3ull, 0x208b876b0d2919c5ull }}, {{ 0xc535149e95fba151ull, 0xc62a57148fd677f3ull, 0x978beba7fca7e394ull, 0xa0c6a107d9dd9224ull, 0x73e4051b2fcf979eull, 0x45734a2e839b01b4ull }}, {{ 0xb412ce31dbd44d25ull, 0xbda766cd9e60af85ull, 0xeb77348fde8ee3cfull, 0x47c24a4e82a7b56dull, 0x86e8330fde1bec32ull, 0xb680e5d1240e110cull }}, {{ 0x08bc0df2964b0372ull, 0x688a04082fc6db39ull, 0x32a80d9eb194e61dull, 0xcd96e7111a8d164bull, 0x4511fe9ead1739f6ull, 0x2108fa2b688caa7dull }}, {{ 0x57588b79deee2275ull, 0x15642851ddc4903aull, 0xfa908832efd0fd26ull, 0x07e506ab0982deefull, 0xb2b3f232c2e843a4ull, 0x4a59c5b2157ea8e4ull }}, {{ 0x697572c2b54d5892ull, 0xd5e99332a9ada247ull, 0xc9a551fd5e29e37cull, 0x4ef242ae5f1cb55full, 0xfb0775fb9d12a468ull, 0xe781b8f4d6f298eeull }}, {{ 0x1e967b9b150575b4ull, 0x5b1fbffaa0c856caull, 0xe07533e5ada2e2e0ull, 0x15769acfb71f15bdull, 0xce4a9bd422ba6c13ull, 0x0b1139906579f955ull }}, {{ 0x31e0d40ed236990cull, 0x8f3d7fca47d363e5ull, 0xc49406f8c85cdcc3ull, 0xd6a20c1d2736d96aull, 0x0eea16495b4838beull, 0x6eac3fa3f6c3bd5aull }}, {{ 0xf2c848943621fa7bull, 0x9866fde6ce41e6f3ull, 0xadc845b7d3a09fa3ull, 0x6254792388247e2bull, 0x9524dedd90d23774ull, 0x52ba7c67a3a56584ull }}, {{ 0x7bd2d5ca1d53c8caull, 0xf405eb040e930587ull, 0xc9d2b92e44463c63ull, 0xd74cbb63516cedb4ull, 0xd370b4a7a8362a8bull, 0x3b48dc0c6475f72dull }}, {{ 0xd63c59e52545d7e6ull, 0x883b2e2891be374aull, 0xe23b3bceaabe5be7ull, 0x68ff51e12e41490full, 0x42670e8c921da976ull, 0x50d8987bec9ba7caull }}, {{ 0x5e5b82f374ba6efcull, 0x524fcd95b16e28ecull, 0xd6505612ab6f970bull, 0x19f932cbce8cda9eull, 0x9806917db5289ea0ull, 0x2875f4d73e148de6ull }}, {{ 0xaf931d828f4855d8ull, 0x371e07d8ee4d993bull, 0x5f235cbab25be671ull, 0x03bbfbf611808a34ull, 0xf041aee913963241ull, 0x949b90686ccd8b01ull }}, {{ 0xdbbf271998d35a70ull, 0x272c4e794f07fc54ull, 0xb7619f4af797006cull, 0x2557d79caf05660bull, 0x6290d51ac3ddf68aull, 0xce13a41440076e13ull }}, {{ 0x957786fff841885full, 0x87bb10bd164fdb50ull, 0x29d038edabe60439ull, 0x756e6c1ed635fc75ull, 0xd9a8530ba6aba165ull, 0x0cc468ca804a4cc1ull }}, {{ 0xd6ab45ffb28f53b9ull, 0x4d4ea762df1e9125ull, 0xa2223948b6fc2a3full, 0x965039345e1bdc93ull, 0x80933e7482b44df6ull, 0x7fac17e902e6ff92ull }}, {{ 0x62b0bbfcf999453cull, 0x051289dcb731ab7aull, 0x55563cd725d9a679ull, 0xdf223c0bad169dc4ull, 0x05c0708d1b0b0ba1ull, 0xfcb8ef1a1d05fbb9ull }}, {{ 0xdae757e1bffcb456ull, 0x32b9629f27f0b2c7ull, 0x555e60677a8080baull, 0xb7565874c2e229abull, 0x398465830e6e7452ull, 0xdf395705223bd53aull }}, {{ 0x8d096ed17fdf0b5bull, 0xfb3dda378f66fbceull, 0x55afc40ac9050745ull, 0x295f748f9cd5a0b1ull, 0x3f2bf71e90508b3bull, 0xb83d663356565446ull }}, {{ 0x825e542efeb6718dull, 0xd06a862b9a05d611ull, 0x58dda86bda3248bbull, 0x9dba8d9c205846edull, 0x77b7a731a325704full, 0x3265fe015f5f4abeull }}, {{ 0x17af49d5f3206f87ull, 0x24293db4043a5cafull, 0x78a8943685f6d756ull, 0x294988194372c545ull, 0xad2c87f05f76631cull, 0xf7fbec0db9b8eb70ull }}, {{ 0xecd8e25b7f445b46ull, 0x699c69082a479ed6ull, 0xb695ca213ba4695dull, 0x9cdf50fca27bb4b6ull, 0xc3bd4f63ba9fdf19ull, 0xafd7388941393266ull }}, {{ 0x4078d792f8ab90b9ull, 0x201c1a51a6cc3465ull, 0x21d9e54c546c1da6ull, 0x20b929de58d50f23ull, 0xa56519e54a3eb700ull, 0xde68355c8c3bf803ull }}, {{ 0x84b86bbdb6b3a737ull, 0x4119073083fa0bf4ull, 0x5282f4fb4c39287dull, 0x473ba2af7852975full, 0x75f302f4e6732601ull, 0xb012159d7a57b024ull }}, {{ 0x2f34356923048825ull, 0x8afa47e527c4778dull, 0x391d91d0fa3b94e4ull, 0xc8545adab339e9b9ull, 0x9b7e1d91007f7c0cull, 0xe0b4d826c76ce16cull }}, {{ 0xd80a161b5e2d5176ull, 0x6dc6cef38dacab83ull, 0x3b27b229c653d0edull, 0xd34b8c8b0043213cull, 0x12ed27aa04fad87full, 0xc7107183ca40ce3eull }}, {{ 0x7064dd11adc52e98ull, 0x49c4158388beb326ull, 0x4f8cf5a1bf462946ull, 0x40f37d6e029f4c5aull, 0xbd438ca431cc74feull, 0xc6a46f25e6880e6cull }}, {{ 0x63f0a2b0c9b3d1edull, 0xe1a8d7235772ff80ull, 0x1b81985178bd9cbeull, 0x8982e64c1a38fb87ull, 0x64a37e69f1fc91eeull, 0xc26c577b0150903full }}, {{ 0xe7665ae7e1063341ull, 0xd09867616a7dfb03ull, 0x130ff32eb7681f74ull, 0x5f1cfef90639d347ull, 0xee62f02373ddb351ull, 0x983b6ace0d25a279ull }}, {{ 0x09ff8d0eca3e008eull, 0x25f409ce28ebce27ull, 0xbe9f7fd32a113a90ull, 0xb721f5ba3e4240c6ull, 0x4fdd616286a9012dull, 0xf2522c0c837858c3ull }}, {{ 0x63fb8293e66c058bull, 0x7b88620d99360d86ull, 0x723afe3fa4ac49a1ull, 0x275399466e9687c3ull, 0x1ea5cdd9429a0bc9ull, 0x7735b87d22b377a1ull }}, {{ 0xe7d319c70038376eull, 0xd353d487fc1c873full, 0x764dee7c6ebae04eull, 0x8943fcc051e14da2ull, 0x327a0a7c9a0475dbull, 0xa81934e35b02ac4bull }}, {{ 0x0e3f01c602322a4eull, 0x41464d4fd91d487full, 0x9f0b50dc534cc314ull, 0x5ca7df8332cd0858ull, 0xf8c468de042c9a93ull, 0x90fc10e18e1abaefull }}, {{ 0x8e7611bc15f5a70cull, 0x8cbf051e7b24d4f6ull, 0x3671289b40ff9ecaull, 0x9e8ebb1ffc025376ull, 0xb7ac18ac29be09c1ull, 0xa9d8a8cf8d0b4d5full }}, {{ 0x909cb158db988679ull, 0x7f763330cf7051a1ull, 0x206b961089fc33e9ull, 0x31934f3fd817429eull, 0x2cb8f6b9a16c6190ull, 0xa276981b827105bdull }}, {{ 0xa61eed7893f540bbull, 0xfa9dffe81a63304full, 0x4433dca563da071eull, 0xefc1187e70e89a2dull, 0xbf39a3404e3bcfa1ull, 0x58a1f113186a3963ull }}, {{ 0x7d3546b5c794874full, 0xca2bff1107dfe31cull, 0xaa069e75e6844735ull, 0x5d8af4f0691605c4ull, 0x784060830e561c53ull, 0x76536abef4263de5ull }}, {{ 0xe414c319cbcd4915ull, 0xe5b7f6aa4ebedf1cull, 0xa442309b012ac819ull, 0xa76d91641adc39aeull, 0xb283c51e8f5d1b41ull, 0x9f422b75897e6af6ull }}, {{ 0xe8cf9f01f604dad0ull, 0xf92fa2a71374b720ull, 0x6a95e60e0babd102ull, 0x8a47ade90c9a40d2ull, 0xf925b33199a31090ull, 0x3895b2975ef02da2ull }}, {{ 0x181c36139c308c1dull, 0xbbdc5a86c28f2749ull, 0x29dafc8c74b62a1dull, 0x66cccb1a7e068838ull, 0xbb78fff0005ea5a5ull, 0x35d8f9e9b561c85dull }}, {{ 0xf11a1cc419e57925ull, 0x569b8943999788daull, 0xa28ddd7c8f1da529ull, 0x03ffef08ec415231ull, 0x52b9ff6003b27876ull, 0x1a79c32115d1d3a9ull }}, {{ 0x6b051fa902f6bb76ull, 0x62135ca3ffeb588dull, 0x598aa6dd9728739dull, 0x27ff56593a8d35f0ull, 0x3b43f9c024f8b49cull, 0x08c19f4ada32449dull }}, {{ 0x2e333c9a1da3529full, 0xd4c19e67ff317586ull, 0x7f6a84a7e7948425ull, 0x8ff95f7c49841b63ull, 0x50a7c18171b70e19ull, 0x579038ec85f6ae24ull }}, {{ 0xce005e0528613a33ull, 0x4f90300ff7ee973dull, 0xfa292e8f0bcd297aull, 0x9fbdbadadf2911e2ull, 0x268d8f0e71268cffull, 0x6ba2393d3ba2cd6bull }}, {{ 0x0c03ac3393cc45feull, 0x1ba1e09faf51e86aull, 0xc59bd19676039ec7ull, 0x3d694c8cb79ab2ddull, 0x818796906b8181fcull, 0x34563c64545c062full }}, {{ 0x7824ba03c5fabbebull, 0x1452c63cd9331424ull, 0xb8162fe09c2433c7ull, 0x661cfd7f2c0afca9ull, 0x0f4be1a4330f13daull, 0x0b5e5beb4b983ddbull }}, {{ 0xb16f4425bbcb5730ull, 0xcb3bbe607bfec96cull, 0x30dddec6196a05c6ull, 0xfd21e6f7b86ddea1ull, 0x98f6d069fe96c687ull, 0x71af9730f3f26a8eull }}, {{ 0xee58a97955f167deull, 0xf0556fc4d7f3de3eull, 0xe8aab3bcfe2439c3ull, 0xe35305ad344ab24bull, 0xf9a42423f1e3c14full, 0x70dbe7e987782991ull }}, {{ 0x4f769ebd5b6e0eabull, 0x63565db06f86ae75ull, 0x16ab0561ed6a41a7ull, 0xe13e38c40aeaf6f7ull, 0xc069696772e58d1eull, 0x68970f1f4ab19fb3ull }}, {{ 0x1aa23365924c92aeull, 0xe15fa8e45b42d095ull, 0xe2ae35d346269089ull, 0xcc6e37a86d2da5a6ull, 0x841e1e0a7cf78334ull, 0x15e69738eaf03d05ull }}, {{ 0x0a5601f7b6fdbaccull, 0xcdbc98eb909c25d3ull, 0xdace1a40bd81a562ull, 0xfc4e2c9443c87884ull, 0x292d2c68e1ab200full, 0xdb01e8392d626237ull }}, {{ 0x675c13ad25e94bf8ull, 0x095df933a6197a3eull, 0x8c0d0687671075dcull, 0xdb0dbdcaa5d4b530ull, 0x9bc3bc18d0af409full, 0x8e13123bc5d7d627ull }}, {{ 0x0998c4c37b1cf7b0ull, 0x5dabbc047cfec670ull, 0x7882414a06a49a98ull, 0x8e8969ea7a4f13e5ull, 0x15a558f826d8863eull, 0x8cbeb655ba6e5d8cull }}, {{ 0x5ff7afa2cf21acddull, 0xa8b5582ce1f3c060ull, 0xb5168ce4426e09f3ull, 0x915e2328c716c6f6ull, 0xd87579b184753e71ull, 0x7f731f59484fa778ull }}, {{ 0xbfacdc5c1750c09eull, 0x971571c0d38583c3ull, 0x12e180ea984c6384ull, 0xadad5f97c6e3c5a3ull, 0x7496c0ef2c94706full, 0xfa7f397cd31c8ab8ull }}, {{ 0x7cc09b98e9278628ull, 0xe6d67188433725a5ull, 0xbccf0929f2fbe32dull, 0xc8c5bbedc4e5b85eull, 0x8de38957bdcc645cull, 0xc8f83ee03f1d6b34ull }}, {{ 0xdf8613f91b8b3d8dull, 0x04606f52a0277876ull, 0x60165ba37dd6dfcbull, 0xd7b95749b0f933b3ull, 0x8ae35d6d69fbeb9full, 0xd9b274c27726300dull }}, {{ 0xbb3cc7bb13706785ull, 0x2bc4593a418ab4a4ull, 0xc0df9462ea64bdeeull, 0x6d3d68e0e9bc0501ull, 0x6ce1a64623d7343eull, 0x80f88f98a77de087ull }}, {{ 0x505fcd4ec2640b30ull, 0xb5ab7c468f6b0e6full, 0x88bbcbdd27ef6b4dull, 0x446618c921583211ull, 0x40d07ebd66680a70ull, 0x09b59bf68aeac54aull }}, {{ 0x23be051397e86fdfull, 0x18b2dac19a2e9059ull, 0x5755f6a38f5a3109ull, 0xabfcf7db4d71f4afull, 0x8824f36600106862ull, 0x611817a16d2bb4e6ull }}, {{ 0x656c32c3ef145eb7ull, 0xf6fc8b9005d1a37bull, 0x695ba2639985ea5aull, 0xb7e1ae9106738ed9ull, 0x517181fc00a413daull, 0xcaf0ec4e43b51101ull }}, {{ 0xf639fba756cbb323ull, 0xa5dd73a03a3062d1ull, 0x1d9457e3ff3b278dull, 0x2ed0d1aa4083947eull, 0x2e6f13d80668c68bull, 0xed693b0ea512aa0dull }}, {{ 0x9e43d48963f4ff5cull, 0x7aa6844245e3dc33ull, 0x27cb6ee7f84f8b88ull, 0xd42830a68523ccedull, 0xd056c6704017c16full, 0x461c4e9272baa483ull }}, {{ 0x2ea64d5de791f997ull, 0xca812a96bae69a04ull, 0x8df2550fb31b7354ull, 0x4991e68133660143ull, 0x2363c06280ed8e5eull, 0xbd1b11b87b4a6d26ull }}, {{ 0xd27f05ab0bb3bfe4ull, 0xe90ba9e34d020429ull, 0x8b77529cff12814full, 0xdfb3010c01fc0ca3ull, 0x61e583d909478faeull, 0x630eb134d0e8437dull }}, {{ 0x38f638ae75057eebull, 0x1a74a2e1021429a2ull, 0x72a93a21f6b90d1full, 0xbcfe0a7813d87e63ull, 0xd2f7267a5ccb9cd4ull, 0xde92ec102912a2e5ull }}, {{ 0x399e36d09236f52cull, 0x088e5cca14c9a056ull, 0x7a9c4553a33a8337ull, 0x61ec68b0c674efe2ull, 0x3da780c79ff4204full, 0xb1bd38a19aba5cfaull }}, {{ 0x402e2425b62593b3ull, 0x558f9fe4cfe0435eull, 0xca1ab54460492026ull, 0xd33c16e7c0915ed8ull, 0x688b07cc3f894319ull, 0xf16436500b47a1c6ull }}, {{ 0x81cd69791d77c500ull, 0x579c3ef01ec2a1aeull, 0xe50b14abc2db417full, 0x4058e50d85adb477ull, 0x156e4dfa7b5c9f02ull, 0x6dea1f2070cc51c0ull }}, {{ 0x12061ebb26adb1fdull, 0x6c1a7561339a50d1ull, 0xf26eceb59c908ef9ull, 0x8378f28738c90caeull, 0xd64f0bc8d19e3616ull, 0x4b25374467fb3180ull }}, {{ 0xb43d334f82c8f3e3ull, 0x390895cc0407282aull, 0x785413181da595beull, 0x22b9794837da7ed5ull, 0x5f1675d8302e1ce1ull, 0xef7428ac0fcfef08ull }}, {{ 0x0a64011b1bd986e1ull, 0x3a55d9f8284791abull, 0xb348bef12877d96eull, 0x5b3ebcd22e88f456ull, 0xb6e09a71e1cd20cbull, 0x5a8996b89e1f5653ull }}, {{ 0x67e80b0f167f44ccull, 0x475a83b192cbb0aeull, 0x00d7756b94ae7e4eull, 0x90736035d1598b63ull, 0x24c60872d20347f1ull, 0x895fe3362d395f45ull }}, {{ 0x0f106e96e0f8affcull, 0xc98924efbbf4e6d0ull, 0x086a9633ced0ef0eull, 0xa481c21a2d7f71deull, 0x6fbc547c3420cf6full, 0x5dbee01dc43db8b3ull }}, {{ 0x96a451e4c9b6dfd4ull, 0xdf5b715d57910420ull, 0x5429de0614295693ull, 0x6d119505c6fa72acull, 0x5d5b4cda09481a5cull, 0xa974c129aa693702ull }}, {{ 0xe26b32efe124be4aull, 0xb9926da56baa2945ull, 0x49a2ac3cc99d61c6ull, 0x42afd239c5c87abbull, 0xa59100845cd1079cull, 0x9e8f8ba0a81c2617ull }}, {{ 0xd82ffd5ecb6f6ee7ull, 0x3fb8487634a59cbaull, 0xe05aba5fe025d1c3ull, 0x9ade3641b9d4cb50ull, 0x77aa052ba02a4c1aull, 0x319b744691197cecull }}, {{ 0x71dfe5b3f25a5506ull, 0x7d32d49e0e781f4cull, 0xc38b47bec17a31a0ull, 0x0cae1e91424ff128ull, 0xaca433b441a6f90aull, 0xf0128ac1aafee13cull }}, {{ 0x72bef90777875239ull, 0xe3fc4e2c90b138fcull, 0xa370cd738ec5f044ull, 0x7ecd31ac971f6b97ull, 0xbe6a050a9085ba64ull, 0x60b96b90adf4cc5eull }}, {{ 0x7b75ba4aab49363bull, 0xe7db0dbda6ec39dcull, 0x6268068393bb62b0ull, 0xf403f0bde73a33ecull, 0x70243269a53947ecull, 0xc73e33a6cb8ffbb3ull }}, {{ 0xd29946eab0dc1e51ull, 0x0e8e8968853a429cull, 0xd8104123c551dae9ull, 0x8827676b0846073bull, 0x6169f820743ccf41ull, 0xc86e0483f39fd502ull }}, {{ 0x39fcc52ae8992f27ull, 0x91915e1534469a20ull, 0x70a28b65b5328d1aull, 0x518a0a2e52bc4856ull, 0xce23b1448a60188full, 0xd44c2d27843e5217ull }}, {{ 0x43dfb3ad15fbd785ull, 0xafadacd40ac20542ull, 0x665971f913f98309ull, 0x2f6465cf3b5ad360ull, 0x0d64ecad67c0f599ull, 0x4af9c38b2a6f34eeull }}, {{ 0xa6bd04c2dbd66b30ull, 0xdcc8c0486b943496ull, 0xff7e73bac7bf1e60ull, 0xd9ebfa18518c41c3ull, 0x85f13ec60d8997fbull, 0xedc1a36fa858114cull }}, {{ 0x83622f9c96602fddull, 0x9fd782d433ca0de2ull, 0xfaf0854bcd772fc8ull, 0x8337c4f32f7a91a7ull, 0x3b6c73bc875fefd6ull, 0x4990625c9370acfdull }}, {{ 0x21d5dc1ddfc1dea1ull, 0x3e6b1c4a05e48ad9ull, 0xcd6534f606a7ddd6ull, 0x202db17fdac9b08full, 0x523c855d49bf5e61ull, 0xdfa3d79dc266c1e4ull }}, {{ 0x525a992abd92b24dull, 0x702f1ae43aed6c7bull, 0x05f4119c428eaa5eull, 0x41c8eefe8be0e59eull, 0x365d35a4e179afcbull, 0xbc666c29980392ebull }}, {{ 0x3789fbab67baf702ull, 0x61d70cea4d463cd1ull, 0x3b88b01a9992a7b0ull, 0x91d955f176c8f82cull, 0x1fa41870cec0ddf0ull, 0x5c00399ff023bd30ull }}, {{ 0x2b63d4b20d4da619ull, 0xd266812704be602cull, 0x5356e109ffba8ce3ull, 0xb27d5b6ea3d9b1baull, 0x3c68f4681388ab65ull, 0x9802403f616563e1ull }}, {{ 0xb1e64ef485087cf8ull, 0x38010b862f6fc1b9ull, 0x4164ca63fd4980e6ull, 0xf8e592526680f147ull, 0x5c198c10c356b1f8ull, 0xf0168279cdf5e6ccull }}, {{ 0xf2ff158d3254e1b4ull, 0x300a733dda5d9140ull, 0x8defe7e7e4df08feull, 0xb8f7b73801096cc8ull, 0x98ff78a7a162f3b9ull, 0x60e118c20b9b03fbull }}, {{ 0x7df6d783f750d104ull, 0xe068806a87a7ac89ull, 0x8b5f0f0ef0b659edull, 0x39ad28300a5e3fd5ull, 0xf9fab68c4ddd8541ull, 0xc8caf794740e27d3ull }}, {{ 0xeba46b27a9282a24ull, 0xc41504294c8cbd5eull, 0x71b69695671f834aull, 0x40c391e067ae7e57ull, 0xc3cb217b0aa7348cull, 0xd7edabcc888d8e47ull }}, {{ 0x346c2f8c9b91a569ull, 0xa8d2299cfd7f65b5ull, 0x7121e1d6073b20ebull, 0x87a3b2c40cd0ef6aull, 0xa5ef4ece6a880d7aull, 0x6f48b5fd55878ecdull }}, {{ 0x0c39db7e13b07617ull, 0x9835a021e6f9f914ull, 0x6b52d25c484f4934ull, 0x4c64fba880295a28ull, 0x7b591410295086c9ull, 0x58d71be5574b9408ull }}, {{ 0x7a4292ecc4e49ce7ull, 0xf218415305c3bac8ull, 0x313c379ad318dc0dull, 0xfbf1d495019d8594ull, 0xd17ac8a19d2543dcull, 0x786716f568f3c854ull }}, {{ 0xc699bd3fb0ee2103ull, 0x74f28d3e39a54bd4ull, 0xec5a2c0c3ef8988bull, 0xd7724dd2102737c9ull, 0x2ecbd6502374a6a1ull, 0xb406e5961985d350ull }}, {{ 0xc201647ce94d4a1bull, 0x9179846e4074f64full, 0x3b85b87a75b5f572ull, 0x6a770a34a1882de3ull, 0xd3f65f21628e8252ull, 0x0844f7dcff3a4121ull }}, {{ 0x940dece11d04e510ull, 0xaebf2c4e84919f1dull, 0x533934c8991b9679ull, 0x28a6660e4f51cae0ull, 0x479fb74dd9911738ull, 0x52b1aea1f8468b52ull }}, {{ 0xc88b40cb2230f2a2ull, 0xd377bb112db03727ull, 0x403c0fd5fb13e0c0ull, 0x967ffc8f1931ecc3ull, 0xcc3d290a7faae831ull, 0x3af0d253b2c17136ull }}, {{ 0xd57087ef55e97a59ull, 0x42ad4eabc8e2278dull, 0x82589e5bcec6c788ull, 0xe0ffdd96fbf33fa0ull, 0xfa639a68fcad11efull, 0x4d683744fb8e6c23ull }}, {{ 0x56654f595b1ec777ull, 0x9ac512b5d8d58b8aull, 0x17762f9613c3cb52ull, 0xc9fea7e5d7807c45ull, 0xc7e40819dec2b35eull, 0x061228b1d3903967ull }}, {{ 0x5ff5197d8f33caa2ull, 0x0bb2bb1a78577367ull, 0xea9ddbdcc5a5f13aull, 0xe3f28efa6b04dab2ull, 0xcee85102b39b01b3ull, 0x3cb596f243a23e0dull }}, {{ 0xbf92fee79805ea53ull, 0x74fb4f08b36a8209ull, 0x2a2a969fb87b6c44ull, 0xe77995c82e308afdull, 0x15132a1b040e1106ull, 0x5f17e576a4566c8aull }}, {{ 0x7bbdf50bf03b273bull, 0x91d1165702291461ull, 0xa5a9e23d34d23aacull, 0x0abfd9d1cde56de3ull, 0xd2bfa50e288caa45ull, 0xb6eef6a26b603d64ull }}, {{ 0xd56b9277624f8852ull, 0xb22adf66159acbceull, 0x78a2d66410364abdull, 0x6b7e82320af64ae4ull, 0x3b7c728d957ea6b2ull, 0x2555a25831c265f0ull }}, {{ 0x5633b8a9d71b5330ull, 0xf5acb9fcd80bf614ull, 0xb65c5fe8a21eeb68ull, 0x32f115f46d9eececull, 0x52dc7987d6f282f8ull, 0x75585771f197fb62ull }}, {{ 0x5e0536a267113fe5ull, 0x98bf43e070779ccbull, 0x1f9bbf1655353219ull, 0xfd6adb8c4835413full, 0x3c9cbf4e65791db1ull, 0x95736a736fefd1d7ull }}, {{ 0xac34225806ac7ef1ull, 0xf778a6c464ac1ff1ull, 0x3c1576df5413f4ffull, 0xe62c937ad2148c77ull, 0x5e1f790ff6bb28f3ull, 0xd68228825f5e3268ull }}, {{ 0xba09577042bcf565ull, 0xaab683abeeb93f70ull, 0x58d6a4b948c791ffull, 0xfdbdc2cc34cd7ca8ull, 0xad3aba9fa34f9986ull, 0x61159517b9adf813ull }}, {{ 0x445d6a629b6195f7ull, 0xab2124b7533c7a67ull, 0x78626f3cd7cbb3fcull, 0xe9699bfa1006de93ull, 0xc44b4a3c611bff45ull, 0xcad7d2ed40cbb0c4ull }}, {{ 0xaba627da11cfdba4ull, 0xaf4b6f29405cc808ull, 0xb3d858606df507deull, 0x1e2017c4a044b1c2ull, 0xaaf0e65bcb17f8bbull, 0xec6e3d4487f4e7afull }}, {{ 0xb47d8e84b21e9465ull, 0xd8f2579c839fd056ull, 0x067373c44b924eb2ull, 0x2d40edae42aef19bull, 0xad68ff95eeefb74full, 0x3c4e64ad4f910cdcull }}, {{ 0x0ce7912ef531cbf7ull, 0x79776c1d243e2363ull, 0x408285aaf3b712fcull, 0xc48948ce9ad5700eull, 0xc619fbdb555d2917ull, 0x5b0feec51baa809eull }}, {{ 0x810babd593f1f7a4ull, 0xbeaa39236a6d61deull, 0x851938ad8526bddcull, 0xad5cd8120c56608eull, 0xbd03d69155a39aedull, 0x8e9f53b314a90633ull }}, {{ 0x0a74b657c773ac66ull, 0x72a63b622845d2b1ull, 0x32fc36c733836a9full, 0xc5a070b47b5fc591ull, 0x622661ad58640d48ull, 0x923944fece9a3e05ull }}, {{ 0x688f1f6dca84bc00ull, 0x7a7e51d592ba3aeaull, 0xfdda23c803222a3aull, 0xb844670cd1bdb7abull, 0xd57fd0c573e884d7ull, 0xb63cb1f412066c35ull }}, {{ 0x15973a49e92f57ffull, 0xc8ef3257bb464d28ull, 0xea8565d01f55a648ull, 0x32ac068031692cb7ull, 0x56fe27b68715306dull, 0x1e5ef388b4403a1aull }}, {{ 0xd7e846e31bd96ff5ull, 0xd957f76d50bf0390ull, 0x2935fa2139587ed7ull, 0xfab84101ee1bbf2full, 0x65ed8d2146d3e443ull, 0x2fb583570a824507ull }}, {{ 0x6f12c4df167e5f94ull, 0x7d6faa45277623a8ull, 0x9c1bc54c3d74f46eull, 0xcb328a134d1577d7ull, 0xfb47834cc446eaa7ull, 0xdd1721666916b249ull }}, {{ 0x56bbb0b6e0efbbc5ull, 0xe65ca6b38a9d6494ull, 0x1915b4fa66918c50ull, 0xeff964c102d6ae6cull, 0xd0cb20ffaac52a8dull, 0xa2e74e001ae2f6e3ull }}, {{ 0x6354e724c95d55b4ull, 0xff9e83036a25edcbull, 0xfad911c801af7b28ull, 0x5fbdef8a1c62d038ull, 0x27ef49fcabb3a98bull, 0x5d090c010cdda4e6ull }}, {{ 0xe151076fdda55908ull, 0xfc311e22257b49f1ull, 0xcc7ab1d010dacf99ull, 0xbd6b5b651bdc2239ull, 0x8f58e3deb5049f71ull, 0xa25a780a80a870fdull }}, {{ 0xcd2a4a5ea8757a4dull, 0xd9eb2d5576d0e372ull, 0xfccaf220a88c1c03ull, 0x663191f316995641ull, 0x9978e6b3122e3a71ull, 0x5788b069069469e7ull }}, {{ 0x03a6e7b29496c6feull, 0x832fc556a428e27cull, 0xdfed754695791826ull, 0xfdefb37ee1fd5e93ull, 0xfeb902feb5ce486dull, 0x6b56e41a41cc230bull }}, {{ 0x24850cf9cde3c5ebull, 0x1fddb5626998d8d8ull, 0xbf4694c1d6baf181ull, 0xeb5d02f4d3e5b1c6ull, 0xf33a1df31a0ed44bull, 0x3164e90691f95e77ull }}, {{ 0x6d3281c20ae5bb30ull, 0x3ea915d81ff87871ull, 0x78c1cf92634d6f0bull, 0x31a21d9046f8f1c3ull, 0x80452b7f04944af7ull, 0xedf11a41b3bdb0afull }}, {{ 0x43f911946cf94fe2ull, 0x729ada713fb4b46eull, 0xb7921bb7e1065670ull, 0xf05527a2c5b971a2ull, 0x02b3b2f62dcaeda7ull, 0x4b6b06910568e6dbull }}, {{ 0xa7baafcc41bd1ed5ull, 0x7a0c886c7d0f0c4eull, 0x2bb5152eca3f6064ull, 0x63538c5bb93e705bull, 0x1b04fd9dc9ed488full, 0xf22e41aa3619048eull }}, {{ 0x8d4addfa91633456ull, 0xc47d543ce2967b12ull, 0xb512d3d3e679c3ecull, 0xe1437b953c70638full, 0x0e31e829e344d599ull, 0x75ce90a61cfa2d8dull }}, {{ 0x84ecabc9ade00b57ull, 0xace54a60d9e0ceb9ull, 0x12bc464700c1a73full, 0xcca2d3d45c63e39dull, 0x8df311a2e0b05802ull, 0x9a11a67d21c5c782ull }}, {{ 0x313eb5e0cac07169ull, 0xc0f4e7c882c8133full, 0xbb5abec60790887cull, 0xfe5c464b9be6e422ull, 0x8b7eb05cc6e3701bull, 0x04b080e351b9cb19ull }}, {{ 0xec731ac7eb846e1dull, 0x89910dd51bd0c077ull, 0x518b73bc4ba554dfull, 0xef9abef41704e95bull, 0x72f2e39fc4e26117ull, 0x2ee508e13141eeffull }}, {{ 0x3c7f0bcf332c4d23ull, 0x5faa8a53162784afull, 0x2f72855af47550bbull, 0x5c0b7588e6311d91ull, 0x7d7ce43db0d7caefull, 0xd4f258cbec9355faull }}, {{ 0x5cf67617ffbb0362ull, 0xbca9673edd8b2ed8ull, 0xda79358d8c952751ull, 0x98729758fdeb27abull, 0xe6e0ea68e86ded59ull, 0x517777f73dc15bc8ull }}, {{ 0xa1a09ceffd4e21d6ull, 0x5e9e0874a76fd473ull, 0x88bc17877dd38931ull, 0xf479e979eb2f8cb6ull, 0x04c92819144b457full, 0x2eaaafa8698d95d9ull }}, {{ 0x5046215fe50d5260ull, 0xb22c548e8a5e4c84ull, 0x5758eb4aea435bedull, 0x8cc31ec32fdb7f21ull, 0x2fdb90facaf0b6ffull, 0xd2aadc941f87da7aull }}, {{ 0x22bd4dbef28537c2ull, 0xf5bb4d9167aefd2bull, 0x697930ed26a19748ull, 0x7f9f339fde92f74dull, 0xde93a9cbed6725fbull, 0x3aac9dc93b4e88c5ull }}, {{ 0x5b65097579342d98ull, 0x995107ae0cd5e3afull, 0x1ebbe943824fe8d9ull, 0xfc38043eb1bda906ull, 0xb1c4a1f746077bd2ull, 0x4abe29dc511157baull }}, {{ 0x91f25e96bc09c7edull, 0xfd2a4ccc805ae4d9ull, 0x33571ca3171f187full, 0xda302a72f1689a3dull, 0xf1ae53a8bc4ad63dull, 0xeb6da29b2aad6d4aull }}, {{ 0xb377b1e35861cf44ull, 0xe3a6fffd038cf07full, 0x01671e5ee736f4ffull, 0x85e1a87d6e160664ull, 0x70cf44975aec5e6aull, 0x32485a0faac644edull }}, {{ 0x02acf2e173d218a4ull, 0xe485ffe2238164fdull, 0x0e072fb5082591feull, 0x3ad094e64cdc3fe8ull, 0x6818ade98d3bb029ull, 0xf6d3849cabbeb146ull }}, {{ 0x1ac17cce8634f66bull, 0xed3bfed5630df1e2ull, 0x8c47dd125177b3f4ull, 0x4c25d0ff009a7f10ull, 0x10f6cb1f8454e19cull, 0xa4432e1eb572ecc0ull }}, {{ 0x0b8ee0113e11a02bull, 0x4457f455de8b72d5ull, 0x7acea2b72ead0791ull, 0xf97a29f60608f6a5ull, 0xa9a3ef3b2b50d01aull, 0x6a9fcd33167d3f80ull }}, {{ 0x7394c0ac6cb041a9ull, 0xab6f8b5ab1727c52ull, 0xcc125b27d2c24bacull, 0xbec5a39c3c59a276ull, 0xa067584fb128210dull, 0x2a3e03fee0e47b06ull }}, {{ 0x83cf86bc3ee2909dull, 0xb25b718aee78db38ull, 0xf8b78f8e3b96f4beull, 0x73b8641a5b8058a3ull, 0x4409731ceb914a89ull, 0xa66c27f4c8ecce42ull }}, {{ 0x261b435a74d9a627ull, 0xf7926f6d50b89035ull, 0xb72b9b8e53e58f72ull, 0x8533e90793037667ull, 0xa85e7f2133ace95eull, 0x80398f8fd9400e96ull }}, {{ 0x7d10a18890807d85ull, 0xabb85a452735a213ull, 0x27b4138f46f79a7dull, 0x34071a4bbe22a00dull, 0x93b0f74c04c11db1ull, 0x023f9b9e7c8091e2ull }}, {{ 0xe2a64f55a504e72full, 0xb53386b3881854c2ull, 0x8d08c398c5ac08e8ull, 0x084706f56d5a4083ull, 0xc4e9a8f82f8b28ecull, 0x167c1430dd05b2d9ull }}, {{ 0xda7f1958723107d8ull, 0x1403430350f34f9cull, 0x8257a3f7b8b85917ull, 0x52c6459645868523ull, 0xb12099b1db6f9938ull, 0xe0d8c9e8a238fc81ull }}, {{ 0x88f6fd7475ea4e72ull, 0xc8209e2129811c20ull, 0x176c67ad37337ae6ull, 0x3bbeb7deb7413363ull, 0xeb4600f2925bfc33ull, 0xc877e3165639dd10ull }}, {{ 0x59a5e68c9b271077ull, 0xd1462d4b9f0b1945ull, 0xea3c0cc42802cd03ull, 0x55732eb3288c01deull, 0x30bc0979b797da00ull, 0xd4aededf5e42a2a9ull }}, {{ 0x807b017e0f86a4a9ull, 0x2cbdc4f4366efcb5ull, 0x26587fa9901c0226ull, 0x567fd2ff957812b5ull, 0xe7585ec12bee8403ull, 0x4ed4b4b9ae9a5a9bull }}, {{ 0x04ce0eec9b426e9aull, 0xbf69b18a2055df17ull, 0x7f74fc9fa118157dull, 0x60fe3dfbd6b0bb13ull, 0x0973b38bb7512821ull, 0x144f0f40d2078a17ull }}, {{ 0x300c953e10985200ull, 0x7a20ef65435ab6e6ull, 0xfa91de3c4af0d6e9ull, 0xc9ee6bd662e74ec2ull, 0x5e850375292b914dull, 0xcb169888344b64e6ull }}, {{ 0xe07dd46ca5f333fcull, 0xc54959f4a18b24fdull, 0xc9b2ae5aed68651eull, 0xe350365fdd09139dull, 0xb13222939bb3ad09ull, 0xeee1f5520af1f0ffull }}, {{ 0xc4ea4c3e7b8007d4ull, 0xb4dd838e4f6f71eaull, 0xe0facf8d4613f333ull, 0xe1221fbea25ac429ull, 0xebf559c41504c262ull, 0x54d395346d7369fcull }}, {{ 0xb126fa70d3004e46ull, 0x10a7238f1a5a732bull, 0xc9cc1b84bcc78005ull, 0xcb553d72578ba9a2ull, 0x379581a8d22f97dcull, 0x5043d40c468223e1ull }}, {{ 0xeb85c8683e030eb9ull, 0xa687639707887fb4ull, 0xe1f9132f5fcb0032ull, 0xf15466776b74a05bull, 0x2bd7109835dbee9full, 0x22a6487ac11566ccull }}, {{ 0x3339d4126c1e933dull, 0x8149e3e64b54fd11ull, 0xd3babfd9bdee01faull, 0x6d4c00aa328e4396ull, 0xb666a5f21a97523full, 0x5a7ed4cb8ad603f9ull }}, {{ 0x004248b83931c067ull, 0x0ce2e6fef151e2acull, 0x454b7e816b4c13c9ull, 0x44f806a5f98ea3e4ull, 0x20027b7509e9367aull, 0x88f44ff36c5c27c1ull }}, {{ 0x0296d7323bf18401ull, 0x80dd05f56d32dab8ull, 0xb4f2f10e30f8c5daull, 0xb1b0427bbf9266eaull, 0x4018d292631c20c6ull, 0x598b1f823b998d8bull }}, {{ 0x19e467f6576f280bull, 0x08a23b9643fc8b30ull, 0x117d6a8de9b7ba89ull, 0xf0e298d57bb8052bull, 0x80f839b7df1947c2ull, 0x7f6f3b1653ff8770ull }}, {{ 0x02ec0f9f6a57906dull, 0x565653dea7dd6fe1ull, 0xaee6298b212d495aull, 0x68d9f856d53033aeull, 0x09b2412eb6fccd9dull, 0xfa584edf47fb4a65ull }}, {{ 0x1d389c3a276ba43dull, 0x5f5f46b28ea65ecaull, 0xd4fd9f6f4bc4dd87ull, 0x1883b36453e204d2ull, 0x60f68bd325e00826ull, 0xc77314b8cfd0e7f2ull }}, {{ 0x24361a458a346a63ull, 0xb9b8c2f9927fb3e5ull, 0x51e83a58f5b0a749ull, 0xf52501eb46d4303cull, 0xc9a1763f7ac0517cull, 0xca7ecf381e290f77ull }}, {{ 0x6a1d06b7660c27deull, 0x41379dbfb8fd06f3ull, 0x3312477998e688e1ull, 0x93721330c449e25bull, 0xe04e9e7acb832ee1ull, 0xe8f418312d9a9aadull }}, {{ 0x25224329fc798ea9ull, 0x8c2c297d39e24582ull, 0xfeb6cabff90158ccull, 0xc274bfe7aae2d78full, 0xc31230cbf31fd4cfull, 0x1988f1ebc80a0acaull }}, {{ 0x73569fa3dcbf9297ull, 0x79b99ee442d6b715ull, 0xf323eb7fba0d77fdull, 0x988f7f0cacdc6b9full, 0x9eb5e7f77f3e501dull, 0xff597335d0646bebull }}, {{ 0x81623c669f7bb9e6ull, 0xc14034ea9c6326d6ull, 0x7f6732fd4486afe6ull, 0xf59af67ec09c343full, 0x331b0faaf86f2127ull, 0xf97e801a23ec3734ull }}, {{ 0x0dd65c023ad542ffull, 0x8c82112a1bdf8461ull, 0xfa07fde4ad42df03ull, 0x980da0f3861a0a7aull, 0xff0e9cadb4574b8full, 0xbef10105673a2809ull }}, {{ 0x8a5f98164c549df5ull, 0x7d14aba516bb2bcaull, 0xc44feaeec49cb623ull, 0xf08849833d0468cdull, 0xf6921ec90b68f39bull, 0x756a0a3608459063ull }}, {{ 0x67bbf0defb4e2b90ull, 0xe2ceb472e34fb5e9ull, 0xab1f2d53ae1f1d62ull, 0x6552df20622c1809ull, 0xa1b533da72198417ull, 0x9624661c52b7a3e7ull }}, {{ 0x0d5768b5d10db3a3ull, 0xdc130c7ce11d1b1eull, 0xaf37c544cd3725dcull, 0xf53cb743d5b8f060ull, 0x5114068874ff28e9ull, 0xdd6bfd1b3b2c670cull }}, {{ 0x856a171a2a890463ull, 0x98be7ce0cb230f2cull, 0xd82db4b004277aa0ull, 0x945f28a6593963c6ull, 0x2ac8415491f79923ull, 0xa637e3104fbc067bull }}, {{ 0x3624e705a95a2bddull, 0xf770e0c7ef5e97bdull, 0x71c90ee0298aca45ull, 0xcbb7967f7c3de5c4ull, 0xabd28d4db3abfb63ull, 0x7e2edea31d5840cfull }}, {{ 0x1d7106389d85b69dull, 0xaa68c7cf59b1ed64ull, 0x71da94c19f6be6bbull, 0xf52be0fada6af9acull, 0xb639850904b7d1e5ull, 0xedd4b25f2572881cull }}, {{ 0x266a3e3627392225ull, 0xa817ce1980f345e9ull, 0x7289cf903a370354ull, 0x93b6c9cc882dc0bcull, 0x1e3f325a2f2e32fbull, 0x4a4ef7b77679511full }}, {{ 0x80266e1d883b556full, 0x90ee0cff0980bb1bull, 0x79621ba24626214eull, 0xc523e1fd51c9875cull, 0x2e77f785d7cdfdd3ull, 0xe715ad2aa0bd2b37ull }}, {{ 0x01804d2752515654ull, 0xa94c81f65f074f13ull, 0xbdd51456bd7d4d11ull, 0xb366d3e531df499cull, 0xd0afab3a6e0bea45ull, 0x06d8c3aa4763b027ull }}, {{ 0x0f030389372d5f4aull, 0x9cfd139fb64916beull, 0x6a52cb6366e502b0ull, 0x020446f3f2b8e01full, 0x26dcb0484c7726b9ull, 0x4477a4a6c9e4e18eull }}, {{ 0x961e235c27c5b8e4ull, 0x21e2c43d1edae36cull, 0x273bf1e204f21ae6ull, 0x142ac5877b38c13aull, 0x849ee2d2fca7833aull, 0xacac6e83e2f0cf8dull }}, {{ 0xdd2d61998db938e9ull, 0x52dbaa63348ce23dull, 0x885772d431750cfdull, 0xc9abb74ad0378c45ull, 0x2e34dc3dde8b2044ull, 0xbebc5126dd681b87ull }}, {{ 0xa3c5cfff893c3919ull, 0x3c94a7e00d80d66aull, 0x536a7c49ee9281e5ull, 0xe0b528ec222b7ab7ull, 0xce109a6ab16f42afull, 0x735b2b84a6111347ull }}, {{ 0x65ba1ffb5c5a3af9ull, 0x5dce8ec08708602aull, 0x4228dae351b912f4ull, 0xc713993955b2cb29ull, 0x0ca6082aee589adeull, 0x818fb32e7caac0ceull }}, {{ 0xf9453fd19b864dbdull, 0xaa1193854653c1a7ull, 0x95988ce1313abd8bull, 0xc6c3fc3d58fbef9cull, 0x7e7c51ad4f760cb3ull, 0x0f9cffd0deab880cull }}, {{ 0xbcb47e30133f0965ull, 0xa4afc334bf45908full, 0xd7f580cbec4b6774ull, 0xc3a7da6579d75c1dull, 0xf0db30c51a9c7f05ull, 0x9c21fe28b2b3507cull }}, {{ 0x5f0cede0c0765df4ull, 0x6edda00f78b7a59dull, 0x6f9707f73af20a8eull, 0xa48e87f6c269992aull, 0x688fe7b30a1cf639ull, 0x1953ed96fb0124e1ull }}, {{ 0xb6814ac7849fab87ull, 0x54a8409ab72c7825ull, 0x5be64fa84d746990ull, 0x6d914fa3981ffba8ull, 0x159f0cfe65219e40ull, 0xfd4747e5ce0b70ceull }}, {{ 0x210cebcb2e3cb346ull, 0x4e92860b27bcb179ull, 0x96ff1c93068c1fa3ull, 0x47ad1c63f13fd493ull, 0xd83681eff3502e84ull, 0xe4c8cefa0c72680cull }}, {{ 0x4a8135efce5f00bdull, 0x11b93c6f8d5eeebbull, 0xe5f71dbe41793c61ull, 0xccc31be76c7e4dc3ull, 0x7221135f8121d12aull, 0xefd815c47c781080ull }}, {{ 0xe90c1b5e0fb60762ull, 0xb13c5c5b85b55350ull, 0xfba7296e8ebc5bcaull, 0xff9f170a3cef09a6ull, 0x754ac1bb0b522babull, 0x5e70d9acdcb0a504ull }}, {{ 0x1a7911ac9d1c49d4ull, 0xec5b9b9339154129ull, 0xd4879e51935b95eaull, 0xfc36e66661566085ull, 0x94eb914e7135b4b7ull, 0xb06880c09ee6722cull }}, {{ 0x08bab0be231ae244ull, 0x3b9413c03ad48b9bull, 0x4d4c2f2fc193db2dull, 0xda24ffffcd5fc53aull, 0xd133ad106c190f2full, 0xe4150786350075bdull }}, {{ 0x574ae76d5f0cd6abull, 0x53c8c5824c4d740eull, 0x04f9d7dd8fc68fc4ull, 0x8571fffe05bdb447ull, 0x2c04c2a438fa97deull, 0xe8d24b3e1204996aull }}, {{ 0x68ed0a45b68062b3ull, 0x45d7b716fb06888full, 0x31c26ea79dc19dabull, 0x3673ffec39690ac6ull, 0xb82f9a6a39c9eeb1ull, 0x1836f06cb42dfe25ull }}, {{ 0x194266b92103dafbull, 0xba6d26e5ce41559aull, 0xf198528c299028b0ull, 0x2087ff3a3e1a6bbdull, 0x31dc082641e352ecull, 0xf225643f09cbed79ull }}, {{ 0xfc98033b4a268dd1ull, 0x484384fa0e8d5804ull, 0x6ff339799fa196e7ull, 0x454ff8466d08356bull, 0xf298517e92e13d39ull, 0x7575ea7661f746bbull }}, {{ 0xddf02050e5818a29ull, 0xd2a331c491857031ull, 0x5f803ec03c4fe508ull, 0xb51fb2c042521632ull, 0x79f32ef1bccc643cull, 0x969b289fd3a8c357ull }}, {{ 0xab614328f70f659bull, 0x3a5ff1adaf3661f2ull, 0xbb0273825b1ef258ull, 0x133cfb829734ddf7ull, 0xc37fd5715ffbea5full, 0xe20f963e4497a16aull }}, {{ 0xb1cc9f99a699f811ull, 0x47bf70c8d81fd37aull, 0x4e1883178f357772ull, 0xc061d319e810abadull, 0xa2fe566dbfd727b6ull, 0xd49bde6eadec4e2bull }}, {{ 0xf1fe3c008203b0a6ull, 0xcd7a67d8713e42caull, 0x0cf51eeb9816aa76ull, 0x83d23f0310a6b4c5ull, 0x5def60497e678d23ull, 0x4e16b052cb3b0db4ull }}, {{ 0x73ee58051424e67full, 0x06c80e746c6e9bedull, 0x81933533f0e2a8a4ull, 0x2636761ea6830fb2ull, 0xab59c2def00b8363ull, 0x0ce2e33bf04e890bull }}, {{ 0x874f7032c97100f7ull, 0x43d0908c3c521746ull, 0x0fc0140768da9668ull, 0x7e209d32811e9cf9ull, 0xb1819cb5607321dfull, 0x80dce05763115a74ull }}, {{ 0x491a61fbde6a09a2ull, 0xa625a57a5b34e8c1ull, 0x9d80c84a1889e012ull, 0xed4623f90b3221baull, 0xef101f15c47f52baull, 0x08a0c369dead888eull }}, {{ 0xdb07d3d6b0246059ull, 0x7d7876c79011178cull, 0x2707d2e4f562c0baull, 0x44bd67ba6ff5514aull, 0x56a136d9acf93b4dull, 0x5647a222b2c75595ull }}, {{ 0x8e4e4662e16bc379ull, 0xe6b4a3cba0aaeb80ull, 0x864e3cf195db8748ull, 0xaf660d485f952ce5ull, 0x624c2480c1bc5104ull, 0x5ecc555afbc957d5ull }}, {{ 0x8f0ebfdcce35a2b5ull, 0x030e65f446ad3305ull, 0x3f0e616fda9348d9ull, 0xd9fc84d3bbd3c0f7ull, 0xd6f96d07915b2a2eull, 0xb3fb558dd5dd6e55ull }}, {{ 0x96937ea00e185b13ull, 0x1e8ffb8ac2c3fe37ull, 0x768fce5e89c0d87aull, 0x83dd3045564589a8ull, 0x65be424bad8fa5d4ull, 0x07d1578a5aa64f5aull }}, {{ 0xe1c2f2408cf38ebaull, 0x319fd36b9ba7ee2bull, 0xa19e0fb1618874c5ull, 0x26a3e2b55eb76094ull, 0xf96e96f4c79c7a4dull, 0x4e2d6b678a7f1987ull }}, {{ 0xd19d768581839341ull, 0xf03e4234148f4db6ull, 0x502c9cedcf548fb3ull, 0x8266db15b329c5ceull, 0xbe51e58fcc1cc703ull, 0x0dc6320b68f6ff4full }}, {{ 0x3026a1370f23c089ull, 0x626e9608cd990924ull, 0x21be214a194d9d07ull, 0x18048ed8ffa1ba0full, 0x6f32f79df91fc623ull, 0x89bdf47219a5f91dull }}, {{ 0xe1824c269765855aull, 0xd851dc5807fa5b69ull, 0x516d4ce4fd082249ull, 0xf02d9479fc514497ull, 0x57fdac2bbb3dbd5eull, 0x616b8c75007bbb26ull }}, {{ 0xcf16f981e9f73588ull, 0x73329b704fc79222ull, 0x2e4500f1e25156e2ull, 0x61c7ccc3db2cade9ull, 0x6fe8b9b5506965b5ull, 0xce337c9204d54f7full }}, {{ 0x16e5bf1323a81750ull, 0x7ffa12631dcbb55cull, 0xceb20972d72d64d8ull, 0xd1cdffa68fbecb1bull, 0x5f174115241df915ull, 0x0e02ddb430551afaull }}, {{ 0xe4f976bf6490e920ull, 0xffc4b7df29f51598ull, 0x12f45e7c67c5f074ull, 0x320bfc819d73ef16ull, 0xb6e88ad3692bbadaull, 0x8c1ca909e3530dc7ull }}, {{ 0xf1bea379eda91b42ull, 0xfdaf2eb7a392d7f8ull, 0xbd8bb0dc0dbb6491ull, 0xf477dd10268756dcull, 0x25156c421bb54c85ull, 0x791e9a62e13e89cdull }}, {{ 0x717262c3489b1096ull, 0xe8d7d32c63bc6fb9ull, 0x6774e8988951edb3ull, 0x8caea2a18149649full, 0x72d63a951514fd3bull, 0xbb3207dccc716203ull }}, {{ 0x6e77dba0d60ea5dbull, 0x186e3fbbe55c5d3eull, 0x0a9115f55d334907ull, 0x7ed25a4f0cddee3aull, 0x7c5e49d2d2d1e453ull, 0x4ff44e9ffc6dd422ull }}, {{ 0x50ae94485c927a8bull, 0xf44e7d56f59ba470ull, 0x69aadb95a400da46ull, 0xf437871680ab4e44ull, 0xdbaee23c3c32eb42ull, 0x1f8b123fdc4a4958ull }}, {{ 0x26d1cad39db8c96cull, 0x8b10e56598146c63ull, 0x20ac93d8680886c5ull, 0x8a2b46e106b10eacull, 0x94d4d65a59fd309dull, 0x3b6eb67e9ae6dd78ull }}, {{ 0x8431ec442937de37ull, 0x6ea8f5f7f0cc3bdfull, 0x46bdc674105543b7ull, 0x65b0c4ca42ea92b9ull, 0xd0505f8783e3e627ull, 0x525320f20d04a6b5ull }}, {{ 0x29f33aa99c2eae27ull, 0x52999baf67fa56bbull, 0xc369c088a354a52aull, 0xf8e7afe69d29bb3cull, 0x2323bb4b26e6fd89ull, 0x373f4974822e831aull }}, {{ 0xa3804aa019d2cd89ull, 0x3a0014da0fc7634full, 0xa2218556614e73a7ull, 0xb90cdf0223a1505full, 0x5f6550ef8505e763ull, 0x2878de8d15d11f05ull }}, {{ 0x6302ea41023c0758ull, 0x4400d0849dc9e11cull, 0x554f355fcd108488ull, 0x3a80b615644d23bcull, 0xb9f5295b323b09e5ull, 0x94b8b182da2b3635ull }}, {{ 0xde1d268a16584974ull, 0xa808252e29e2cb1bull, 0x551815be02a52d52ull, 0x49071cd5eb03655bull, 0x43939d8ff64e62f4ull, 0xcf36ef1c85b01e19ull }}, {{ 0xad238164df72de8dull, 0x905173cda2dbef16ull, 0x52f0d96c1a73c53aull, 0xda47205b2e21f591ull, 0xa3c4279f9f0fdd8aull, 0x1825571d38e12cfcull }}, {{ 0xc3630df0ba7cb17eull, 0xa32e86085c9756e2ull, 0x3d687e390885b449ull, 0x86c7438fcd5397adull, 0x65a98c3c369ea76cull, 0xf175672438cbc1deull }}, {{ 0xa1de8b6748deeeeeull, 0x5fd13c539de964dbull, 0x6614ee3a55390ae0ull, 0x43c8a39e0543ecc4ull, 0xf89f7a5a22328a3dull, 0x6e96076a37f592afull }}, {{ 0x52b17208d8b55548ull, 0xbe2c5b442b1df094ull, 0xfcd14e47543a6cc3ull, 0xa5d6642c34a73fabull, 0xb63ac78555f96664ull, 0x51dc4a262f97badfull }}, {{ 0x3aee7458771554ceull, 0x6dbb90a9af2b65cbull, 0xe02d0ec94a483fa5ull, 0x7a5fe9ba0e887cb7ull, 0x1e4bcb355bbdffeeull, 0x329ae57ddbed4cbdull }}, {{ 0x4d508b74a6d5500eull, 0x4953a6a0d7b1f9f0ull, 0xc1c293dce6d27c76ull, 0xc7bf21449154df2eull, 0x2ef5f015956bff50ull, 0xfa0cf6ea9744ff63ull }}, {{ 0x0525728e8455208cull, 0xdd4482486cf3c363ull, 0x9199c6a10438dc9eull, 0xcd774cadad50b7d3ull, 0xd59b60d7d637f927ull, 0xc481a529e8b1f9dfull }}, {{ 0x337679912b534578ull, 0xa4ad16d44185a1deull, 0xb001c24a2a389e34ull, 0x06a8fec8c5272e43ull, 0x5811c86e5e2fbb8eull, 0xad1073a316f3c2beull }}, {{ 0x02a0bfabb140b6afull, 0x6ec2e44a8f3852aeull, 0xe01196e5a6362e0eull, 0x4299f3d7b387cea4ull, 0x70b1d44faddd538cull, 0xc2a4845ee5859b6full }}, {{ 0x1a477cb4ec8722d6ull, 0x539ceae998333accull, 0xc0afe4f87e1dcc90ull, 0x9a03866d034e1270ull, 0x66f24b1ccaa5437aull, 0x9a6d2bb4f738125aull }}, {{ 0x06cadf113d475c57ull, 0x44212d1ff2004bf9ull, 0x86def1b4ed29fda3ull, 0x04234042210cb867ull, 0x0576ef1fea74a2caull, 0x0843b511a830b788ull }}, {{ 0x43ecb6ac64c99b6aull, 0xa94bc33f7402f7baull, 0x44b5711143a3e860ull, 0x296082954a7f340bull, 0x36a5573f288e5be4ull, 0x52a512b091e72b50ull }}, {{ 0xa73f22bbefe01221ull, 0x9cf5a07a881dad46ull, 0xaf166aaca46713c6ull, 0x9dc519d4e8f80870ull, 0x22756877958f96e9ull, 0x3a72bae5b307b122ull }}, {{ 0x88775b575ec0b548ull, 0x219844c95128c4c2ull, 0xd6e02abe6c06c5c2ull, 0x29b3025119b05466ull, 0x589614abd79be520ull, 0x487b4cf8fe4ceb55ull }}, {{ 0x54a99169b38714cdull, 0x4ff2afdd2b97af99ull, 0x64c1ab703843b995ull, 0xa0fe172b00e34c04ull, 0x75dcceb66c16f341ull, 0xd4d101b9ef013155ull }}, {{ 0x4e9fae210346d001ull, 0x1f7adea3b3ecdbfdull, 0xef90b26232a53fd5ull, 0x49ece7ae08e0f82bull, 0x9aa0132038e58090ull, 0x502a1143560bed56ull }}, {{ 0x123ccd4a20c4200cull, 0x3accb265074097e5ull, 0x5ba6f7d5fa747e53ull, 0xe3410ccc58c9b1b7ull, 0x0a40bf4238f705a2ull, 0x21a4aca15c774562ull }}, {{ 0xb66004e547a9407aull, 0x4bfef7f24885eef2ull, 0x9485ae5bc88cef40ull, 0xe08a7ffb77e0f129ull, 0x6687789639a6385cull, 0x506ebe4d9ca8b5d4ull }}, {{ 0x1fc030f4cc9c84c0ull, 0xf7f5af76d53b557bull, 0xcd38cf95d5815882ull, 0xc568ffd2aec96b9full, 0x014ab5de407e33a0ull, 0x24536f081e971a4cull }}, {{ 0x3d81e98ffe1d2f82ull, 0xaf98daa4545156cfull, 0x04381bda570d751dull, 0xb619fe3ad3de343eull, 0x0ceb1aae84ee0447ull, 0x6b42565131e706f8ull }}, {{ 0x67131f9fed23db17ull, 0xdbf88a6b4b2d6418ull, 0x2a31168766869328ull, 0x1d03ee4c46ae0a6cull, 0x812f0ad1314c2acdull, 0x30975f2bf30645b0ull }}, {{ 0x06bf3c3f43668ee1ull, 0x97b56830efc5e8f4ull, 0xa5eae14a0141bf98ull, 0x22274efac2cc6839ull, 0x0bd66c2becf9ac03ull, 0xe5e9b7b77e3eb8e5ull }}, {{ 0x43785a78a20194ccull, 0xed1611e95dbb1988ull, 0x7b2ccce40c917bf5ull, 0x558915cb9bfc1240ull, 0x766039b741c0b81full, 0xfb212d2aee7338f2ull }}, {{ 0xa2b388b6540fcffbull, 0x42dcb31da94eff52ull, 0xcfc000e87daed79bull, 0x575ad9f417d8b684ull, 0x9fc2412891873139ull, 0xcf4bc3ad50803978ull }}, {{ 0x5b03571f489e1fd1ull, 0x9c9eff289d15f93aull, 0x1d800914e8d46c10ull, 0x698c8388ee772130ull, 0x3d968b95af47ec3dull, 0x18f5a4c525023eb6ull }}, {{ 0x8e216738d62d3e29ull, 0x1e35f79622dbbc47ull, 0x27005ad1184c38a6ull, 0x1f7d235950a74be1ull, 0x67e173d8d8cf3a66ull, 0xf9986fb37216731eull }}, {{ 0x8d4e08385dc46d99ull, 0x2e1babdd5c955acbull, 0x86038c2af2fa367dull, 0x3ae3617d2688f6cbull, 0x0ece8678781847fdull, 0xbff45d0274e07f30ull }}, {{ 0x850c5233a9ac47ffull, 0xcd14b6a59dd58bf3ull, 0x3c2379ad7dc620e3ull, 0x4ce1cee38159a3f3ull, 0x941140b4b0f2cfe4ull, 0x7f8ba21890c4f7e0ull }}, {{ 0x327b3604a0bacff5ull, 0x02cf22782a577783ull, 0x5962c0c6e9bd48e6ull, 0x00d214e30d806780ull, 0xc8ac870ee97c1eebull, 0xfb7454f5a7b1aec5ull }}, {{ 0xf8d01c2e474c1f8eull, 0x1c1758b1a76aab1full, 0x7ddb87c52164d8fcull, 0x0834d0de87040b03ull, 0xd6bd46951ed9352eull, 0xd28b51988cf0d3b9ull }}, {{ 0xb82119cec8f93b8eull, 0x18e976f08a2aaf3full, 0xea934db34df079d9ull, 0x521028b146286e22ull, 0x6364c1d3347c13ccull, 0x39712ff581684542ull }}, {{ 0x314b0213d9bc5387ull, 0xf91ea56565aad87dull, 0x29c109010b64c27aull, 0x34a196ecbd944d5dull, 0xe1ef92400cd8c5fbull, 0x3e6bdf970e12b497ull }}, {{ 0xecee14c6815b434aull, 0xbb3275f5f8ac74e3ull, 0xa18a5a0a71ef98cdull, 0x0e4fe53f67cb05a3ull, 0xd35bb6808077bbd0ull, 0x7036bbe68cbb0deeull }}, {{ 0x414ccfc10d90a0e4ull, 0x4ff89b9bb6bc90e7ull, 0x4f678468735bf809ull, 0x8f1ef47a0dee3864ull, 0x4195210504ad5620ull, 0x622357017f4e8b54ull }}, {{ 0x8d001d8a87a648ecull, 0x1fb61415235da908ull, 0x1a0b2c148197b05dull, 0x97358cc48b4e33ebull, 0x8fd34a322ec55d45ull, 0xd561660ef911714aull }}, {{ 0x820127694c7ed935ull, 0x3d1cc8d361a89a55ull, 0x046fb8cd0fece3a3ull, 0xe8177fad710e072full, 0x9e40e5f5d3b5a4b7ull, 0x55cdfc95baae6ce9ull }}, {{ 0x140b8a1cfcf47c11ull, 0x631fd841d0960757ull, 0x2c5d38029f40e460ull, 0x10eafcc66a8c47d6ull, 0x2e88fb9a45186f2full, 0x5a0bddd94ad04120ull }}, {{ 0xc8736521e18cd8a8ull, 0xdf3e729225dc4966ull, 0xbba4301a3888ebc3ull, 0xa92ddfc0297ace5dull, 0xd159d406b2f457d6ull, 0x8476aa7cec228b41ull }}, {{ 0xd481f352cf807695ull, 0xb87079b57a9ade03ull, 0x5469e106355935a6ull, 0x9bcabd819ecc0fa9ull, 0x2d824842fd8b6e62ull, 0x2ca2a8e139597092ull }}, {{ 0x4d13813c1b04a1ceull, 0x3464c116ca0cac26ull, 0x4c22ca3e157c1883ull, 0x15eb671033f89c9dull, 0xc716d29de7724fdaull, 0xbe5a98cc3d7e65b5ull }}, {{ 0x02c30c590e2e520dull, 0x0bef8ae3e47eb97full, 0xf95be66cd6d8f520ull, 0xdb3206a207b61e24ull, 0xc6e43a2b0a771e84ull, 0x6f89f7fa66eff919ull }}, {{ 0x1b9e7b7a8dcf3485ull, 0x775b6ce6ecf33ef6ull, 0xbd97004064799340ull, 0x8ff442544d1d2d71ull, 0xc4ea45ae68a73130ull, 0x5b63afc8055fbb01ull }}, {{ 0x1430d2c98a180d37ull, 0xa99241054180759dull, 0x67e60283ecbfc084ull, 0x9f8a974b0323c671ull, 0xb126b8d01687ebe5ull, 0x91e4ddd035bd4e11ull }}, {{ 0xc9e83bdf64f08422ull, 0x9fb68a348f049822ull, 0x0efc19273f7d852eull, 0x3b69e8ee1f65c06eull, 0xeb833820e14f36f8ull, 0xb2f0aa2219650cb0ull }}, {{ 0xe31256b9f1652954ull, 0x3d21660d962df15bull, 0x95d8fb887ae733d2ull, 0x5223194d39f9844cull, 0x33203148cd1825b2ull, 0xfd66a554fdf27ee9ull }}, {{ 0xdeb763436df39d49ull, 0x634dfc87ddcb6d96ull, 0xda79d354cd080636ull, 0x355efd0443bf2afdull, 0xff41ecd802f178f7ull, 0xe6027551eb78f51bull }}, {{ 0xb329e0a24b8424d5ull, 0xe10bdd4ea9f247e4ull, 0x88c2415002503e1full, 0x15b5e22aa577adeaull, 0xf89340701d6eb9a8ull, 0xfc18953332b99317ull }}, {{ 0xffa2c656f3297053ull, 0xca76a512a376ceeeull, 0x57968d2017226d3eull, 0xd91ad5aa76accb29ull, 0xb5c0846126534090ull, 0xd8f5d3fffb3fbeefull }}, {{ 0xfc5bbf657f9e633dull, 0xe8a272ba62a41555ull, 0x6be18340e7584473ull, 0x7b0c58a8a2bfef9dull, 0x19852bcb7f4085a8ull, 0x799a47ffd07d755dull }}, {{ 0xdb9579f6fc2fe063ull, 0x16587b47da68d55bull, 0x36cf20890972ac87ull, 0xce7b76965b7f5c26ull, 0xff33b5f2f8853894ull, 0xc006cffe24e695a2ull }}, {{ 0x93d6c3a5d9dec3daull, 0xdf74d0ce88185596ull, 0x2417455a5e7abd46ull, 0x10d2a1df92f9997eull, 0xf8051b7db53435d0ull, 0x80441fed7101d85dull }}, {{ 0xc663a47a82b3a680ull, 0xba90281150f357e1ull, 0x68e8b587b0cb64c4ull, 0xa83a52bbbdbffeedull, 0xb03312e9140a1a20ull, 0x02a93f466a1273abull }}, {{ 0xbfe46cc91b0480ffull, 0x49a190ad29816ed1ull, 0x1917174ce7f1efafull, 0x92473b55697ff546ull, 0xe1febd1ac8650546ull, 0x1a9c78c024b884b4ull }}, {{ 0x7eec3fdb0e2d09f4ull, 0xe04fa6c39f0e5431ull, 0xfae6e9010f735cd8ull, 0xb6c851561eff94bcull, 0xd3f3630bd3f234c1ull, 0x0a1cb7816f352f10ull }}, {{ 0xf53a7e8e8dc2638aull, 0xc31c83a4368f49eeull, 0xcd051a0a9a81a078ull, 0x23d32d5d35fbcf61ull, 0x4781de7647760f91ull, 0x651f2b0e5813d6a8ull }}, {{ 0x9448f1918997e360ull, 0x9f1d246a2198e355ull, 0x0233046a091044b7ull, 0x663fc5a41bd619d2ull, 0xcb12b09eca9c9babull, 0xf337ae8f70c66292ull }}, {{ 0xcad96faf5feee1bdull, 0x37236c254ff8e157ull, 0x15fe2c245aa2af2cull, 0xfe7db869165d0234ull, 0xeebae633ea1e14b1ull, 0x802cd19a67bfd9bbull }}, {{ 0xec7e5cd9bf54d163ull, 0x276239751fb8cd6dull, 0xdbedb96b8a5ad7baull, 0xf0e9341adfa21608ull, 0x534cfe07252ccef3ull, 0x01c030080d7e8157ull }}, {{ 0x3cefa08179502ddbull, 0x89d63e933d38064bull, 0x97493e33678c6d45ull, 0x691c090cbc54dc58ull, 0x4101ec4773c01587ull, 0x1181e05086f10d69ull }}, {{ 0x615c450ebd21ca8aull, 0x625e71c064303ef0ull, 0xe8dc6e020b7c44b7ull, 0x1b185a7f5b509b75ull, 0x8a133aca8580d74aull, 0xaf12c325456a861cull }}, {{ 0xcd9ab2936351e960ull, 0xd7b07183e9e27563ull, 0x189c4c1472daaf29ull, 0x0ef388f99126129bull, 0x64c04be9370868e5ull, 0xd6bb9f74b6293d1dull }}, {{ 0x080af9c1e1331dc1ull, 0x6ce46f2722d895e6ull, 0xf61af8cc7c8ad7a2ull, 0x958359bfab7cba0eull, 0xef82f71c265418f2ull, 0x63543a8f1d9c6325ull }}, {{ 0x506dc192cbff2985ull, 0x40ec57875c75dafcull, 0x9d0db7fcdd6c6c58ull, 0xd721817cb2df4495ull, 0x5b1da7197f48f979ull, 0xe14a4997281bdf7bull }}, {{ 0x24498fbbf7f79f37ull, 0x893b6b499c9a8ddbull, 0x22892fe0a63c3b72ull, 0x674f0edefcb8add8ull, 0x8f2886fef8d9bec2ull, 0xcce6dfe79116bad1ull }}, {{ 0x6adf9d57afac3822ull, 0x5c5230e01e098a8full, 0x595bdec67e5a5279ull, 0x091694b5df36ca71ull, 0x979545f5b8817398ull, 0x0104bf0baae34c2full }}, {{ 0x2cbc256cdcba3153ull, 0x9b35e8c12c5f699aull, 0x7d96b3c0ef8738bdull, 0x5ae1cf1ab823e86dull, 0xebd4bb99350e83f0ull, 0x0a2f7674ace0f9dbull }}, {{ 0xbf5976409f45ed3cull, 0x101b178bbbba2005ull, 0xe7e305895b483768ull, 0x8cd2170b31671446ull, 0x364f53fc12912763ull, 0x65daa08ec0c9c297ull }}, {{ 0x797e9e8638bb4458ull, 0xa10eeb7555454039ull, 0x0ede375d90d22a10ull, 0x8034e66fee06cac5ull, 0x1f1947d8b9ab89e3ull, 0xfa8a459387e199e8ull }}, {{ 0xbef2313e3750ab71ull, 0x4a95329554b4823eull, 0x94ae29a7a835a4a6ull, 0x0211005f4c43ebb2ull, 0x36fcce7740b362e3ull, 0xc966b7c34ed00311ull }}, {{ 0x7575ec6e2926b265ull, 0xe9d3f9d54f0d1673ull, 0xcecda08c92186e7eull, 0x14aa03b8faa734f9ull, 0x25e010a88701dcdeull, 0xde032da114201eacull }}, {{ 0x969b3c4d9b82f7f6ull, 0x2247c2551682e082ull, 0x1408457db4f450f5ull, 0xcea42539ca8811c2ull, 0x7ac0a6954612a0acull, 0xac1fc84ac94132b9ull }}, {{ 0xe2105b08131daf99ull, 0x56cd9752e11cc519ull, 0xc852b6e9118b2993ull, 0x12697441e950b194ull, 0xcb8681d4bcba46c0ull, 0xb93dd2ebdc8bfb3eull }}, {{ 0xd4a38e50bf28dbfbull, 0x6407e93ccb1fb302ull, 0xd33b251aaf6f9fc1ull, 0xb81e8a931d26efcfull, 0xf341124f5f46c380ull, 0x3c6a3d369d77d073ull }}, {{ 0x4e638f27779897cbull, 0xe84f1c5fef3cfe1cull, 0x404f730ada5c3d8dull, 0x313169bf23855e1eull, 0x808ab719b8c3a307ull, 0x5c26642226ae2487ull }}, {{ 0x0fe3978aabf5edeaull, 0x13171bbf5861ed1bull, 0x831a7e6c879a678bull, 0xebee21776335ad2eull, 0x056b270137a45e47ull, 0x997fe95582cd6d4bull }}, {{ 0x9ee3eb6ab79b4b23ull, 0xbee7157973d3430eull, 0x1f08f03d4c080b6eull, 0x374d4ea9e018c3d1ull, 0x362f860c2c6baecfull, 0xfeff1d571c0644eeull }}, {{ 0x34e7322b2c10ef59ull, 0x7506d6be86409e92ull, 0x36596264f8507253ull, 0x290512a2c0f7a62bull, 0x1ddb3c79bc34d418ull, 0xf5f72567183eb14eull }}, {{ 0x1107f5afb8a9597full, 0x924463713e8631b6ull, 0x1f7dd7f1b3247742ull, 0x9a32ba5b89ac7db0ull, 0x2a905cc15a1048f1ull, 0x9ba77606f272ed0dull }}, {{ 0xaa4f98dd369d7ef4ull, 0xb6abe26c713df11cull, 0x3aea6f70ff6ca899ull, 0x05fb479360bce8e1ull, 0xa9a39f8d84a2d970ull, 0x148a9c45787d4283ull }}, {{ 0xa71bf8a42226f58aull, 0x22b6d83c6c6b6b1eull, 0x4d285a69fa3e9601ull, 0x3bd0cbc1c76118ccull, 0xa0643b872e5c7e60ull, 0xcd6a1ab6b4e49924ull }}, {{ 0x8717b66955859761ull, 0x5b24725c3c322f32ull, 0x03938823c671dc0bull, 0x5627f591c9caf7fbull, 0x43ea5347cf9cefc2ull, 0x06250b2310edfb6eull }}, {{ 0x46ed201d5737e9c8ull, 0x8f6c779a59f5d7f9ull, 0x23c35165c0729871ull, 0x5d8f97b1e1edafceull, 0xa72740ce1c215d97ull, 0x3d726f5ea94bd24eull }}, {{ 0xc5434125682f21d2ull, 0x9a3cac07839a6fbcull, 0x65a12df98479f46full, 0xa79becf2d348de0dull, 0x8788880d194da7e9ull, 0x667859b29cf63712ull }}, {{ 0xb4a08b7611d75238ull, 0x065eb84b24085d5full, 0xf84bcbbf2cc38c5cull, 0x8c17417c40d8ac85ull, 0x4b555082fd088f20ull, 0x00b380fa219e26b9ull }}, {{ 0x0e45729cb269362eull, 0x3fb332ef6853a5bdull, 0xb2f5f577bfa37b98ull, 0x78e88eda8876bd3bull, 0xf155251de2559745ull, 0x070309c5502d833cull }}, {{ 0x8eb67a1ef81c1dceull, 0x7cfffd5a13447962ull, 0xfd9b96ad7c62d3f2ull, 0xb915948954a36454ull, 0x6d53732ad757e8b6ull, 0x461e61b521c72061ull }}, {{ 0x9320c535b1192a0aull, 0xe1ffe584c0acbdd9ull, 0xe813e2c6dbdc4778ull, 0x3ad7cd5d4e61eb51ull, 0x45427fac696f1723ull, 0xbd2fd11351c743ceull }}, {{ 0xbf47b418eafba468ull, 0xd3fef72f86bf6a7full, 0x10c6dbc4969acab8ull, 0x4c6e05a50fd33133ull, 0xb498fcbc1e56e760ull, 0x63de2ac131c8a60eull }}, {{ 0x78cd08f92dd46c11ull, 0x47f5a7db437a28fdull, 0xa7c495ade20beb38ull, 0xfc4c38729e3febfeull, 0x0df9df592f6509c2ull, 0xe6adab8bf1d67c93ull }}, {{ 0xb80259bbca4c38a8ull, 0xcf988e90a2c599e6ull, 0x8dadd8cad4773032ull, 0xdafa347a2e7f37f2ull, 0x8bc2b97bd9f2619dull, 0x02c8b3777260ddbeull }}, {{ 0x30178155e6fa368eull, 0x1bf591a65bb80303ull, 0x88ca77ec4ca7e1fcull, 0x8dc60cc5d0f82f79ull, 0x759b3ed68377d02aull, 0x1bd702aa77c8a971ull }}, {{ 0xe0eb0d5b05c6218cull, 0x1797b07f95301e1full, 0x57e8af3afe8ed3d9ull, 0x89bc7fba29b1dabfull, 0x9810746122ae21a9ull, 0x16661aa8add69e6eull }}, {{ 0xc92e858e39bd4f74ull, 0xebece4fbd3e12d3eull, 0x6f16d84df194467aull, 0x615cfd45a0f28b79ull, 0xf0a48bcb5acd509full, 0xdffd0a96ca623051ull }}, {{ 0xdbd1378e41651a89ull, 0x3740f1d646cbc473ull, 0x56e4730b6fcac0cdull, 0xcda1e4b8497972beull, 0x666d75f18c052639ull, 0xbfe269e3e7d5e333ull }}, {{ 0x962c2b8e8df30956ull, 0x2889725ec3f5ac86ull, 0x64ec7e725deb8804ull, 0x0852ef32debe7b6full, 0x00469b6f78337e42ull, 0x7ed822e70e5ae002ull }}, {{ 0xddb9b3918b7e5d5eull, 0x955e77b3a798bd41ull, 0xf13cf077ab335029ull, 0x533d57fcb370d259ull, 0x02c2125ab202ee94ull, 0xf4715d068f8cc014ull }}, {{ 0xa94103af72efa5aeull, 0xd5b0ad048bf76492ull, 0x6c6164acb001219full, 0x40656fdf02683783ull, 0x1b94b78af41d51cbull, 0x8c6da2419b7f80c8ull }}, {{ 0x9c8a24da7d5c78cbull, 0x58e6c22d77a9edbaull, 0x3bcdeebee00b503eull, 0x83f65eb618122b22ull, 0x13cf2b6d892531f0ull, 0x7c48569012fb07d1ull }}, {{ 0x1d657088e59cb7f3ull, 0x790395c6aca3494aull, 0x560b5374c071226full, 0x279fb31cf0b5af56ull, 0xc617b2475b73f365ull, 0xdad361a0bdce4e2aull }}, {{ 0x25f66558f81f2f7dull, 0xba23d9c2be60dce5ull, 0x5c71428f846b585aull, 0x8c3cff216718d95full, 0xbcecf6c9928781f3ull, 0x8c41d0476a0f0dabull }}, {{ 0x7b9ff579b137daddull, 0x4566819b6fc8a0f3ull, 0x9c6c999b2c31738bull, 0x7a61f74e06f87db9ull, 0x6141a3dfb94b1383ull, 0x7a9222ca249688b5ull }}, {{ 0xd43f96c0ec2e8ca7ull, 0xb60110125dd64982ull, 0x1c3e000fb9ee8370ull, 0xc7d3a90c45b4e940ull, 0xcc9066bd3ceec322ull, 0xc9b55be56de15715ull }}, {{ 0x4a7be38939d17e83ull, 0x1c0aa0b7aa5edf1cull, 0x1a6c009d43512267ull, 0xce449a7ab9111c81ull, 0xfda4036461539f5bull, 0xe11596f64acd66d9ull }}, {{ 0xe8d6e35c422ef11eull, 0x186a472ca7b4b71aull, 0x08380624a12b5807ull, 0x0eae08cb3aab1d0bull, 0xe86821ebcd443996ull, 0xcad7e59eec060483ull }}, {{ 0x1864e19a95d56b2aull, 0xf426c7be8d0f270dull, 0x52303d6e4bb17046ull, 0x92cc57f04aaf226eull, 0x1411533604aa3fdcull, 0xec6ef835383c2d27ull }}, {{ 0xf3f0d009da562fa7ull, 0x8983cd7182978682ull, 0x35e2664ef4ee62c5ull, 0xbbfb6f62ead7584full, 0xc8ad401c2ea67e9dull, 0x3c55b2143259c386ull }}, {{ 0x87682062875ddc82ull, 0x5f26066f19eb411dull, 0x1ad7ff15914fdbb7ull, 0x57d259dd2c697318ull, 0xd6c48119d280f229ull, 0x5b58f4c9f781a343ull }}, {{ 0x4a1143d949aa9d13ull, 0xb77c405703308b27ull, 0x0c6ff6d7ad1e9529ull, 0x6e3782a3bc1e7ef1ull, 0x63ad0b023909759dull, 0x91798fe3ab1060a6ull }}, {{ 0xe4aca67ce0aa22bdull, 0x2ada83661fe56f88ull, 0x7c5fa46cc331d3a1ull, 0x4e2b1a655930f56aull, 0xe4c26e163a5e9826ull, 0xaebf9ee4aea3c67full }}, {{ 0xeebe80e0c6a55b65ull, 0xac8921fd3ef65b58ull, 0xdbbc6c3f9ff2444bull, 0x0daf07f57be99628ull, 0xef984cde47b1f17full, 0xd37c34eed265c0feull }}, {{ 0x537108c7c27591eeull, 0xbd5b53e4759f9179ull, 0x955c3a7c3f76aaf4ull, 0x88d64f96d71fdd98ull, 0x5bf300aeccf36ef6ull, 0x42da115437f989f5ull }}, {{ 0x426a57cd9897b349ull, 0x659146ec983baebdull, 0xd59a48da7aa2ad8full, 0x585f1be4673ea7f5ull, 0x977e06d4018255a1ull, 0x9c84ad4a2fbf6395ull }}, {{ 0x98276e07f5ed00dfull, 0xf7acc53df254d364ull, 0x5806d888ca5ac799ull, 0x73b716ec08728f9aull, 0xeaec44480f17584dull, 0x1d2ec4e5dd79e3d7ull }}, {{ 0xf18a4c4f9b4208b5ull, 0xacbfb46b775041edull, 0x70447557e78bcc03ull, 0x8526e53854799c07ull, 0x2d3aaad096e97306ull, 0x23d3b0faa6c2e66full }}, {{ 0x6f66fb1c10945713ull, 0xbf7d0c32a922934bull, 0x62ac956f0b75f824ull, 0x3384f4334cc0184aull, 0xc44aac25e51e7e41ull, 0x6644e9ca839d0057ull }}, {{ 0x5a05cf18a5cb66bfull, 0x7ae279fa9b59c0f2ull, 0xdabdd656729bb16full, 0x03318a00ff80f2e7ull, 0xaaeab97af330ee8cull, 0xfeb121e92422036dull }}, {{ 0x843a16f679f20377ull, 0xccd8c3ca11818977ull, 0x8b6a5f607a14ee5aull, 0x1fef6409fb097d0eull, 0xad2b3ecd7fe95178ull, 0xf2eb531b69542248ull }}, {{ 0x2a44e5a0c37422a7ull, 0x0077a5e4af0f5eabull, 0x7227b9c4c4d14f8cull, 0x3f59e863ce5ee291ull, 0xc3b07406ff1d2eb1ull, 0x7d313f121d4956d6ull }}, {{ 0xa6b0f847a2895a87ull, 0x04ac7aeed699b2afull, 0x758d41afb02d1b78ull, 0x798313e60fb4d9aeull, 0xa4e48845f723d2ecull, 0xe3ec76b524dd6463ull }}, {{ 0x82e9b2cc595d8948ull, 0x2ebccd546200fadcull, 0x978490dce1c312b0ull, 0xbf1ec6fc9d1080d0ull, 0x70ed52bba7663d3cull, 0xe73ca31370a5ebe4ull }}, {{ 0x1d20fbfb7da75cccull, 0xd360054bd409cc9dull, 0xeb2da8a0d19ebae1ull, 0x7733c5de22a50825ull, 0x69453b5489fe645full, 0x085e5ec2667b36ecull }}, {{ 0x2349d7d2e8899ffdull, 0x41c034f64861fe23ull, 0x2fc8964830334cd2ull, 0xa805baad5a72517bull, 0x1cb4514d63efebbaull, 0x53afb39800d0253cull }}, {{ 0x60e26e3d15603fddull, 0x9182119ed3d3ed5full, 0xddd5ded1e2010036ull, 0x90394ac588772ecfull, 0x1f0b2d05e75f354aull, 0x44dd03f008217459ull }}, {{ 0xc8d84e62d5c27ea7ull, 0xaf14b034464745b9ull, 0xaa5ab432d40a0221ull, 0xa23cebb754a7d41eull, 0x366fc23b09b814e9ull, 0xb0a22760514e8b7bull }}, {{ 0xd8730fdc5998f281ull, 0xd6cee20abec8b941ull, 0xa78b09fc48641550ull, 0x566135294e8e4932ull, 0x205d964e6130d120ull, 0xe65589c32d1172d0ull }}, {{ 0x747e9e9b7ff9790cull, 0x6414d46b73d73c92ull, 0x8b6e63dad3e8d528ull, 0x5fcc139d118edbfaull, 0x43a7df0fcbe82b43ull, 0xff57619fc2ae7c21ull }}, {{ 0x8cf23212ffbeba76ull, 0xe8d04c3286685db8ull, 0x724fe68c47185393ull, 0xbdf8c422af9497c9ull, 0xa48eb69df711b0a1ull, 0xf969d03d9ad0d94cull }}, {{ 0x8175f4bdfd73489cull, 0x1822f9f94013a935ull, 0x771f017ac6f343c7ull, 0x6bb7a95adbcdeddeull, 0x6d93222ba6b0e651ull, 0xbe2222680c287cfeull }}, {{ 0x0e9b8f6be680d61bull, 0xf15dc3bc80c49c17ull, 0xa7360ecbc580a5c6ull, 0x352c9d8c960b4ab0ull, 0x47bf55b482e8ff2eull, 0x6d5558107994e1f0ull }}, {{ 0x92139a3701085d12ull, 0x6da9a55d07ae18e6ull, 0x881c93f5b70679c5ull, 0x13be277ddc70eae6ull, 0xcd79590d1d19f7ceull, 0x455570a4bfd0d362ull }}, {{ 0xb4c406260a53a2b6ull, 0x48a075a24cccf901ull, 0x511dc7992640c1b6ull, 0xc56d8aea9c692d01ull, 0x06bd7a832303ae0cull, 0xb556666f7e2841dcull }}, {{ 0x0fa83d7c67445b21ull, 0xd64498570001ba11ull, 0x2b29cbfb7e87911eull, 0xb6476d2a1c1bc20dull, 0x4366c91f5e24cc7full, 0x1560005aed929298ull }}, {{ 0x9c9266dc08ab8f49ull, 0x5eadf366001144aaull, 0xafa1f7d2f14bab34ull, 0x1eca43a519159483ull, 0xa203db39ad6ffcfdull, 0xd5c0038d47b9b9f2ull }}, {{ 0x1db8049856b398d7ull, 0xb2cb81fc00acaeaaull, 0xdc53ae3d6cf4b00bull, 0x33e6a472fad7cd24ull, 0x54269040c65fe1e3ull, 0x59802384cd41437aull }}, {{ 0x29302df36303f869ull, 0xfbf313d806bed2a5ull, 0x9b44ce66418ee074ull, 0x07026c7dcc6e0370ull, 0x4981a287bfbed2e0ull, 0x7f016330048ca2c7ull }}, {{ 0x9be1cb81de27b41bull, 0xd77ec67043743a73ull, 0x10b00ffe8f94c491ull, 0x46183ce9fc4c2266ull, 0xdf10594d7d743cc0ull, 0xf60ddfe02d7e5bc8ull }}, {{ 0x16d1f312ad8d090cull, 0x6af3c062a28a4884ull, 0xa6e09ff19bcfadb2ull, 0xbcf26123daf957fcull, 0xb6a37d06e68a5f82ull, 0x9c8abec1c6ef95d8ull }}, {{ 0xe4337ebac7825a79ull, 0x2d8583da5966d528ull, 0x84c63f70161cc8f8ull, 0x6177cb668dbd6fdeull, 0x2262e2450167bb1bull, 0x1d6b7391c55bda77ull }}, {{ 0xea02f34bcb1788beull, 0xc73726877e045398ull, 0x2fbe7a60dd1fd9b1ull, 0xceadf20189665eb1ull, 0x57dcd6b20e0d4f11ull, 0x263283b1b59688a7ull }}, {{ 0x241d80f5eeeb5770ull, 0xc827814aec2b43f9ull, 0xdd70c7c8a33e80f1ull, 0x12cb740f5dffb2ebull, 0x6ea062f48c8516b2ull, 0x7df924f117e15689ull }}, {{ 0x6927099b55316a5dull, 0xd18b0ced39b0a7bbull, 0xa667cdd660710971ull, 0xbbf28899abfcfd36ull, 0x5243dd8d7d32e2f4ull, 0xebbb716aeecd615eull }}, {{ 0x1b86601153ee27a3ull, 0x2f6e814440e68d52ull, 0x800e0a5fc46a5e72ull, 0x57795600b7e1e422ull, 0x36a6a786e3fcdd8full, 0x35526e2d5405cdafull }}, {{ 0x133fc0ad474d8c5aull, 0xda510caa89018535ull, 0x008c67bdac27b075ull, 0x6abd5c072ed2e959ull, 0x22828b44e7e0a799ull, 0x15384dc5483a08d8ull }}, {{ 0xc07d86c4c9077b83ull, 0x872a7ea95a0f3412ull, 0x057c0d68b98ce49aull, 0x2b659847d43d1d7aull, 0x591970b10ec68bfeull, 0xd43309b4d2445871ull }}, {{ 0x84e743afda4ad321ull, 0x47a8f29d849808bbull, 0x36d886173f80ee09ull, 0xb1f7f2ce4a6326c4ull, 0x7afe66ea93c177edull, 0x49fe611036ab746dull }}, {{ 0x3108a4de86ec3f4bull, 0xcc997a272df05753ull, 0x24753ce87b094c5cull, 0xf3af7c0ee7df83aaull, 0xcdf00529c58eaf48ull, 0xe3efcaa222b28c46ull }}, {{ 0xea5670b1453a78f1ull, 0xfdfec587cb63693full, 0x6c946114ce5cfb9full, 0x84dad8950ebb24a5ull, 0x0b6033a1b792d8d9ull, 0xe75dea555af97ac4ull }}, {{ 0x276066ecb448b967ull, 0xebf3b74df1e21c7full, 0x3dcbcad00fa1d43full, 0x308c75d2934f6e76ull, 0x71c204512bbc787full, 0x09ab27558dbecba8ull }}, {{ 0x89c4053f0ad73e09ull, 0x3785290b72d51cf7ull, 0x69f5ec209c524a7full, 0xe57c9a39c11a509eull, 0x71942b2bb55cb4f7ull, 0x60af89578973f494ull }}, {{ 0x61a834766c686c57ull, 0x2b339a727c5321abull, 0x239b39461b36e8f8ull, 0xf6de06418b072630ull, 0x6fc9afb5159f11aeull, 0xc6db5d6b5e878dccull }}, {{ 0xd0920ca03c143b63ull, 0xb0040878db3f50b1ull, 0x64103cbd102519b1ull, 0xa4ac3e8f6e477de1ull, 0x5de0dd12d836b0d5ull, 0xc491a631b14b89fcull }}, {{ 0x25b47e4258ca51dbull, 0xe02854b8907926f2ull, 0xe8a25f62a17300f0ull, 0x6eba719a4ecaeacdull, 0xaac8a2bc7222e858ull, 0xadb07df0ecf363dbull }}, {{ 0x790cee9777e7328eull, 0xc1934f35a4bb8575ull, 0x1657b9da4e7e0968ull, 0x5348700713ed2c0bull, 0xabd65b5c755d1374ull, 0xc8e4eb694181e694ull }}, {{ 0xba8151eaaf07f98eull, 0x8fc118186f533696ull, 0xdf6d428710ec5e17ull, 0x40d46046c743b86eull, 0xb65f919c95a2c28bull, 0xd8f1321c8f1301ceull }}, {{ 0x490d332ad64fbf8cull, 0x9d8af0f4594021e3ull, 0xba449946a93bacebull, 0x884bc2c3c8a53454ull, 0x1fbbb01dd85b9970ull, 0x796bf51d96be1213ull }}, {{ 0xda83ffac5f1d7b75ull, 0x276d698b7c8152e0ull, 0x46adfcc29c54c134ull, 0x52f59ba5d6740b4full, 0x3d54e12a7393fe65ull, 0xbe379327e36cb4bfull }}, {{ 0x8927fcbbb726d290ull, 0x8a461f72dd0d3cc8ull, 0xc2cbdf9a1b4f8c09ull, 0x3d98147a60887118ull, 0x6550cba883c7eff5ull, 0x6e2bbf8ee23f0f78ull }}, {{ 0x5b8fdf55278439a0ull, 0x66bd3a7ca2845fd5ull, 0x9bf6bc05111b785full, 0x67f0ccc7c5546af7ull, 0xf527f49525cf5f94ull, 0x4db57b94d6769ab3ull }}, {{ 0x939eb9538b2a403cull, 0x036448de592bbe55ull, 0x17a35832ab12b3baull, 0x0f67ffcdb54c2dacull, 0x938f8dd37a19bbccull, 0x0916d3d060a20b07ull }}, {{ 0xc4333d436fa6825bull, 0x21ead8af7bb56f57ull, 0xec6171faaebb0544ull, 0x9a0ffe0914f9c8b8ull, 0xc39b8a42c50155f8ull, 0x5ae44623c6546e4bull }}, {{ 0xaa0064a25c81178dull, 0x532c76dad516596dull, 0x3bce73cad34e34a9ull, 0x049fec5ad1c1d739ull, 0xa413669bb20d5bb6ull, 0x8ceabd65bf4c4ef5ull }}, {{ 0xa403ee579d0aeb80ull, 0x3fbca48c52df7e48ull, 0x561085ec410e0e9dull, 0x2e3f3b8c3192683cull, 0x68c20214f485951cull, 0x812b65f978fb1598ull }}, {{ 0x68274f6c226d32fcull, 0x7d5e6d7b3cbaeed6ull, 0x5ca53b3a8a8c9224ull, 0xce785379efb8125bull, 0x179414d18d37d319ull, 0x0bb1fbbeb9ced7f4ull }}, {{ 0x11891a395843fdd8ull, 0xe5b046d05f4d5460ull, 0x9e745049697db56cull, 0x10b342c35d30b791ull, 0xebc8d02f842e3f02ull, 0x74f3d57342146f88ull }}, {{ 0xaf5b063d72a7ea71ull, 0xf8e2c423b9054bc0ull, 0x308b22de1ee91640ull, 0xa7009ba1a3e72bb0ull, 0x35d821db29ce7614ull, 0x9186568094cc5b59ull }}, {{ 0xd98e3e667a8f2865ull, 0xb8dba9653a34f586ull, 0xe56f5cad351ade89ull, 0x860614506707b4e1ull, 0x1a71528fa2109cceull, 0xaf3f6105cffb917cull }}, {{ 0x7f8e7000c99793f4ull, 0x38949df446119744ull, 0xf6599ec4130cb161ull, 0x3c3ccb24064d10d2ull, 0x086d399c54a62011ull, 0xd879ca3a1fd3aed9ull }}, {{ 0xfb906007dfebc78bull, 0x35ce2b8abcafe8acull, 0x9f8033a8be7eedccull, 0x5a5fef683f02a83dull, 0x5444401b4e7d40acull, 0x74c1e6453e44d47aull }}, {{ 0xd3a3c04ebf35cb6dull, 0x1a0db36b5edf16c1ull, 0x3b02049770f549faull, 0x87bf5a12761a9268ull, 0x4aaa811110e486bbull, 0x8f92feb46eb04cc7ull }}, {{ 0x446583137819f240ull, 0x04890231b4b6e392ull, 0x4e142dea6994e3c5ull, 0x4d7984b89d09b812ull, 0xeaa90aaaa8ed4353ull, 0x9bbdf30c52e2ffc8ull }}, {{ 0xabf71ec2b103767eull, 0x2d5a15f10f24e3b6ull, 0x0cc9cb281fd0e5b2ull, 0x06bf2f36226130b7ull, 0x2a9a6aaa9944a141ull, 0x156b7e7b3cddfdd9ull }}, {{ 0xb7a7339aea22a0e9ull, 0xc584db6a9770e522ull, 0x7fe1ef913e28f8f5ull, 0x4377d81d57cbe726ull, 0xaa082aa9fcae4c8aull, 0xd632f0d060abea7bull }}, {{ 0x2c88040d255a491dull, 0xb7309229ea68f35bull, 0xfed35bac6d99b999ull, 0xa2ae71256df70780ull, 0xa451aaa3decefd66ull, 0x5dfd6823c6b728d4ull }}, {{ 0xbd5028837586db23ull, 0x27e5b5a32819818full, 0xf44194bc48014001ull, 0x5ad06b764ba64b09ull, 0x6b30aa66b415e602ull, 0xabe61165c327984eull }}, {{ 0x6521952297448f60ull, 0x8ef9185f90ff0f9dull, 0x8a8fcf5ad00c800bull, 0x8c24329ef47eee63ull, 0x2fe6a80308dafc17ull, 0xb6fcadf99f8bf310ull }}, {{ 0xf34fd359e8ad99bcull, 0x95baf3bba9f69c25ull, 0x699e198c207d0073ull, 0x7969fa358cf54fe3ull, 0xdf02901e588dd8ebull, 0x25decbc03b777ea1ull }}, {{ 0x811e418316c80159ull, 0xd94d8554a3a2197bull, 0x202cff7944e20483ull, 0xbe23c61781951ee2ull, 0xb619a12f758a7932ull, 0x7ab3f58252aaf252ull }}, {{ 0x0b2e8f1ee3d00d77ull, 0x7d07354e6454fed3ull, 0x41c1fabcb0d42d26ull, 0x6d65bceb0fd334d5ull, 0x1d004bda9768bbfbull, 0xcb0797173aad773bull }}, {{ 0x6fd19734e62086aaull, 0xe248150feb51f43eull, 0x9193cb5ee849c380ull, 0x45f9612e9e401054ull, 0x2202f689ea1757d2ull, 0xee4be6e84ac6a84full }}, {{ 0x5e2fe810fd4542a6ull, 0xd6d0d29f31338a70ull, 0xafc5f1b512e1a308ull, 0xbbbdcbd22e80a34dull, 0x541da16324e96e36ull, 0x4ef70512ebc29317ull }}, {{ 0xaddf10a9e4b49a7dull, 0x64283a37ec036863ull, 0xddbb7112bcd05e58ull, 0x5569f635d1066108ull, 0x49284ddf711e4e23ull, 0x15a632bd3599bee9ull }}, {{ 0xcab6a6a2ef0e08e6ull, 0xe992462f382213e4ull, 0xa9526abb6023af73ull, 0x56239e1a2a3fca58ull, 0xdb930aba6b2f0d61ull, 0xd87dfb641801751cull }}, {{ 0xeb22825d568c58fbull, 0x1fb6bdd83154c6efull, 0x9d382b51c164da87ull, 0x5d642d05a67de776ull, 0x93be6b482fd685cdull, 0x74ebd1e8f00e9320ull }}, {{ 0x2f5917a5617b79d2ull, 0x3d236a71ed4fc55full, 0x2431b1318df08947ull, 0xa5e9c23880eb0aa2ull, 0xc57030d1de613a05ull, 0x913633196091bf45ull }}, {{ 0xd97aec75ced2c238ull, 0x63622873451db5b7ull, 0x69f0ebef8b655cc8ull, 0x7b219635092e6a55ull, 0xb661e832afcc4438ull, 0xac1dfefdc5b178b9ull }}, {{ 0x7ecd3c9a143b962cull, 0xe1d59480b329192eull, 0x2369375b71f59fd3ull, 0xcf4fde125bd02756ull, 0x1fd311faddfaaa34ull, 0xb92bf5e9b8eeb741ull }}, {{ 0xf4045e04ca53ddb9ull, 0xd257cd06ff9afbd0ull, 0x621c299273983e46ull, 0x191eacb79621895dull, 0x3e3eb3ccabcaa610ull, 0x3bb79b213953288bull }}, {{ 0x882bac2fe746a93eull, 0x376e0245fc0dd629ull, 0xd5199fb883f26ec4ull, 0xfb32bf2bdd4f5da5ull, 0x6e7305feb5ea7ca0ull, 0x552c0f4c3d3f9570ull }}, {{ 0x51b4b9df08c29c6dull, 0x2a4c16bbd88a5d9full, 0x53003d35277853aaull, 0xcffb77b6a519a87aull, 0x507e3bf31b28de49ull, 0x53b898fa647bd664ull }}, {{ 0x310f42b6579a1c41ull, 0xa6f8e3567567a839ull, 0x3e0264138ab344a5ull, 0x1fd2ad22730094c7ull, 0x24ee577f0f98aee2ull, 0x4535f9c7ecd65febull }}, {{ 0xea989b1f6c051a8dull, 0x85b8e160960c923bull, 0x6c17e8c36b00ae78ull, 0x3e3ac3587e05cfc8ull, 0x714f6af69bf6d4d5ull, 0xb41bc1cf405fbf2full }}, {{ 0x29f60f3a3833097eull, 0x3938cdc5dc7db657ull, 0x38ef17a22e06d0b5ull, 0x6e4ba174ec3a1dd4ull, 0x6d1a2da217a45054ull, 0x0915921883bd77daull }}, {{ 0xa39c984631fe5eeeull, 0x3c3809ba9ce91f67ull, 0x3956ec55cc442714ull, 0x4ef44e913a452a4aull, 0x4305c854ec6b234cull, 0x5ad7b4f52566ae88ull }}, {{ 0x641df2bdf3efb54eull, 0x5a30614a211b3a0cull, 0x3d653b59faa986caull, 0x158b11ac46b3a6e6ull, 0x9e39d3513c2f60fbull, 0x8c6d11937602d152ull }}, {{ 0xe92b7b6b875d150bull, 0x85e3cce54b10447bull, 0x65f45183ca9f43e7ull, 0xd76eb0bac30484feull, 0x2e42412c59d9c9ceull, 0x7c42afc29c1c2d3aull }}, {{ 0x1bb2d23349a2d26eull, 0x3ae600f4eea2acd7ull, 0xfb8b2f25ea38a70bull, 0x6a52e74b9e2d31efull, 0xce968bbb8281e214ull, 0xda9add9a1919c445ull }}, {{ 0x14fc3600e05c384eull, 0x4cfc0991525ac067ull, 0xd36fd77b26368670ull, 0x273d08f42dc3f35full, 0x11e175531912d4ccull, 0x8a0ca804fb01aabaull }}, {{ 0xd1da1c08c39a330cull, 0x01d85fad378b8406ull, 0x425e6acf7e214063ull, 0x88625989c9a781beull, 0xb2ce953efabc4ff9ull, 0x647e9031ce10ab44ull }}, {{ 0x32851857a405fe76ull, 0x1273bcc42b732844ull, 0x97b02c1aed4c83deull, 0x53d77f61e08b116eull, 0xfc11d475cb5b1fbfull, 0xecf1a1f20ca6b0aeull }}, {{ 0xf932f36c683bf098ull, 0xb8855fa9b27f92a9ull, 0xece1b90d44fd26acull, 0x466af9d2c56eae51ull, 0xd8b24c99f18f3d79ull, 0x417053747e82e6d5ull }}, {{ 0xbbfd823c125765f1ull, 0x3535bca0f8fbbaa3ull, 0x40d13a84b1e382bfull, 0xc02dc23bb652cf33ull, 0x76f6fe036f9866bcull, 0x8e63428cf11d045aull }}, {{ 0x57e71658b769fb67ull, 0x14195e49b9d54a65ull, 0x882c492ef2e31b78ull, 0x81c996551f3c1800ull, 0xa5a5ec225bf4035full, 0x8fe099816b222b88ull }}, {{ 0x6f06df772a23d204ull, 0xc8fdaee14254e7f5ull, 0x51badbd57cdf12b0ull, 0x11dfdf533858f005ull, 0x787b3957978821bbull, 0x9ec5ff0e2f55b356ull }}, {{ 0x5644baa7a5663427ull, 0xd9e8d4cc97510f96ull, 0x314c9656e0b6bae7ull, 0xb2beb94033796035ull, 0xb4d03d6beb51514eull, 0x33bbf68dd9590160ull }}, {{ 0x5eaf4a8c75fe0986ull, 0x83184ffde92a9bdfull, 0xecfddf64c7234d0eull, 0xfb733c8202bdc213ull, 0x10226637312d2d12ull, 0x0557a18a7d7a0dc7ull }}, {{ 0xb2d8e97c9bec5f3eull, 0x1ef31feb1baa16b9ull, 0x41eab9efc7610291ull, 0xd2805d141b6994c7ull, 0xa157fe27ebc3c2bdull, 0x356c4f68e6c489c6ull }}, {{ 0xfc791ede173bb86dull, 0x357f3f2f14a4e340ull, 0x932b435dc9ca19abull, 0x3903a2c9121fcfc8ull, 0x4d6fed8f35a59b6aull, 0x163b1a1903ad61c2ull }}, {{ 0xdcbb34ace8553441ull, 0x16f877d6ce70e089ull, 0xbfb0a1a9e1e500b0ull, 0x3a245bdab53e1dd5ull, 0x065f479818781226ull, 0xde4f04fa24c5d197ull }}, {{ 0x9f500ec113540a8aull, 0xe5b4ae641068c562ull, 0x7ce650a2d2f206e0ull, 0x456b968b146d2a59ull, 0x3fb8cbf0f4b0b57eull, 0xaf1631c56fba2fe6ull }}, {{ 0x3920938ac1486966ull, 0xf90ecfe8a417b5daull, 0xe0ff265c3d7444c8ull, 0xb633e16ecc43a77eull, 0x7d37f7698ee716eeull, 0xd6ddf1b65d45defeull }}, {{ 0x3b45c36b8cd41df8ull, 0xba941f1668ed1a86ull, 0xc9f77f9a668aafd9ull, 0x1e06ce53faa48af4ull, 0xe42faa1f9506e553ull, 0x64ab711fa4bab5f0ull }}, {{ 0x50b9a23380492bacull, 0x49c936e01943093eull, 0xe3aafc08016ade81ull, 0x2c440f47ca6d6d8full, 0xe9dca53bd244f53full, 0xeeb26b3c6f4b1b68ull }}, {{ 0x2740560302dbb4bbull, 0xe1dc24c0fc9e5c6full, 0xe4add8500e2cb10cull, 0xbaa898cde846479eull, 0x229e745636b19477ull, 0x52f8305c58ef1219ull }}, {{ 0x88835c1e1c950f50ull, 0xd2996f89de2f9c57ull, 0xeeca73208dbeea80ull, 0x4a95f80b12becc34ull, 0x5a308b5e22efccadull, 0x3db1e39b7956b4fbull }}, {{ 0x5521992d1dd2991full, 0x39fe5b62addc1b6bull, 0x53e87f4589752908ull, 0xe9dbb06ebb73fa11ull, 0x85e571ad5d5dfec4ull, 0x68f2e412bd6311d1ull }}, {{ 0x534ffbc32a39fb35ull, 0x43ef91daca991231ull, 0x4714f8b75e939a52ull, 0x2294e4535287c4adull, 0x3af670c5a5abf3b1ull, 0x197ce8bb65deb22full }}, {{ 0x411fd59fa643d012ull, 0xa75bb28be9fab5edull, 0xc6d1b729b1c40736ull, 0x59d0eb41394daec4ull, 0x4da067b878b784ebull, 0xfee11751fab2f5d8ull }}, {{ 0x8b3e583c7ea620b6ull, 0x8994f97723cb1b44ull, 0xc43127a0f1a84822ull, 0x8229308c3d08d3afull, 0x08440d34b72b3131ull, 0xf4cae933cafd9a73ull }}, {{ 0x706f725cf27d4719ull, 0x5fd1bea765ef10adull, 0xa9eb8c497092d159ull, 0x159be57a625844ddull, 0x52a8840f27afebefull, 0x8fed1c05ede8087eull }}, {{ 0x645a77a178e4c6f5ull, 0xbe317289fb56a6c6ull, 0xa3337ade65bc2d7dull, 0xd816f6c7d772b0a8ull, 0x3a9528978cdf3756ull, 0x9f43183b4b1054efull }}, {{ 0xeb88ac4eb8efc594ull, 0x6dee7963d16283bfull, 0x6002ccaff959c6e9ull, 0x70e5a3ce6a7ae696ull, 0x49d395eb80b82964ull, 0x389ef250eea35158ull }}, {{ 0x3356bb13395db7c9ull, 0x4b50bde62dd9257full, 0xc01bfedfbd81c51eull, 0x68f8661028cd01dfull, 0xe243db3307319decull, 0x3635772952612d72ull }}, {{ 0x01634ec03da92ddaull, 0xf1276afdca7b76f8ull, 0x8117f4bd6711b32eull, 0x19b3fca1980212bdull, 0xd6a68ffe47f02b3cull, 0x1e16a79d37cbc67cull }}, {{ 0x0de11382689bca82ull, 0x6b8a2de9e8d2a5b0ull, 0x0aef8f6606b0ffd5ull, 0x0107de4ff014bb67ull, 0x62819feecf61b059ull, 0x2ce28c242df5c0e0ull }}, {{ 0x8acac3181615e917ull, 0x3365cb23183a78e0ull, 0x6d5b99fc42e9fe56ull, 0x0a4eaf1f60cf5206ull, 0xd9103f5419d0e37aull, 0xc0d97969cb9988c3ull }}, {{ 0x6beb9ef0dcdb1ae5ull, 0x01f9ef5ef248b8c5ull, 0x459403da9d23ef5eull, 0x6712d739c8193440ull, 0x7aa279490228e2c4ull, 0x887ebe21f3ff57a6ull }}, {{ 0x37343568a08f0cf2ull, 0x13c359b576d737b6ull, 0xb7c8268a236759acull, 0x06bc6841d0fc0a82ull, 0xca58bcda1598dbacull, 0x54f36d5387f96c80ull }}, {{ 0x280a16164596816full, 0xc5a18116a4682d1eull, 0x2dd18165620980b8ull, 0x435c129229d8691bull, 0xe7776084d7f894b8ull, 0x518245434fbe3d07ull }}, {{ 0x9064dcdeb7e10e5bull, 0xb84f0ae26c11c32dull, 0xca2f0df5d45f0737ull, 0xa198b9b5a2741b0full, 0x0aa9c5306fb5cf32ull, 0x2f16b4a11d6e624full }}, {{ 0xa3f0a0b32eca8f8eull, 0x33166cd838b19fc7ull, 0xe5d68b9a4bb6482dull, 0x4ff7411858890e9dull, 0x6aa1b3e45d1a17faull, 0xd6e30e4b264fd716ull }}, {{ 0x676646ffd3e99b89ull, 0xfee0407236f03dccull, 0xfa617406f51ed1c3ull, 0x1fa88af3755a922aull, 0x2a5106eba304efc7ull, 0x64de8eef7f1e66e0ull }}, {{ 0x09fec5fe4720135cull, 0xf4c28476256269fcull, 0xc7ce8845933431a7ull, 0x3c956d829589b5adull, 0xa72a45345e315dc7ull, 0xf0b1955af73004c1ull }}, {{ 0x63f3bbeec740c199ull, 0x8f992c9d75d823d8ull, 0xce1152b7c009f08full, 0x5dd64719d76118c9ull, 0x87a6b40badeda9c8ull, 0x66efd58da7e02f90ull }}, {{ 0xe7855753c8878ffbull, 0x9bfbbe269a716673ull, 0x0cad3b2d8063659bull, 0xaa5ec70269caf7e2ull, 0x4c830874cb48a1d3ull, 0x055e57888ec1dba5ull }}, {{ 0x0b356945d54b9fd3ull, 0x17d56d82086e0087ull, 0x7ec44fc703e1f814ull, 0xa7b3c61821edaed4ull, 0xfd1e548ff0d65244ull, 0x35af6b5593929474ull }}, {{ 0x70161cba54f43e3eull, 0xee564714544c0546ull, 0xf3ab1dc626d3b0c8ull, 0x8d05bcf15348d44cull, 0xe32f4d9f685f36aeull, 0x18da3157c3b9cc91ull }}, {{ 0x60dd1f47518a6e69ull, 0x4f5ec6cb4af834c0ull, 0x84af29bd8444e7d9ull, 0x8239616d40d84b01ull, 0xdfd9083a13b822d1ull, 0xf885ed6da541fdb2ull }}, {{ 0xc8a338c92f68501cull, 0x19b3c3f0edb20f83ull, 0x2ed7a1672ab10e7dull, 0x163dce448872ee0full, 0xbe7a5244c5315c2full, 0xb53b46487493e8fcull }}, {{ 0xd66037dbda132118ull, 0x0105a76948f49b25ull, 0xd46c4e07aaea90e3ull, 0xde6a0ead547d4c97ull, 0x70c736afb3ed99d6ull, 0x1450bed48dc719dfull }}, {{ 0x5fc22e9684bf4aefull, 0x0a388a1cd98e0f7aull, 0x4c3b0c4cad29a8deull, 0xb02492c54ce4fdeeull, 0x67c822dd07480264ull, 0xcb27744d89c702baull }}, {{ 0xbd95d1e12f78ed59ull, 0x663565207f8c9ac7ull, 0xfa4e7afec3a098acull, 0xe16dbbb500f1eb4eull, 0x0dd15ca248d017eeull, 0xef8a8b0761c61b48ull }}, {{ 0x67da32cbdab9457bull, 0xfe15f344fb7e0bcdull, 0xc710cdf3a445f6bbull, 0xce49551209733115ull, 0x8a2d9e56d820ef54ull, 0x5b696e49d1bd10d0ull }}, {{ 0x0e85fbf68b3cb6d1ull, 0xecdb80b1d2ec7606ull, 0xc6a80b846abba357ull, 0x0edd52b45e7fead9ull, 0x65c82f6471495950ull, 0x921e4ee23162a825ull }}, {{ 0x913bd7a1705f242bull, 0x409306f23d3c9c3cull, 0xc290732c2b54616full, 0x94a53b0bb0ff2c81ull, 0xf9d1d9ec6cdd7d20ull, 0xb52f14d5edda9175ull }}, {{ 0xac566c4e63b769aaull, 0x85be4576645e1a5dull, 0x99a47fb9b14bce58ull, 0xce744e74e9f7bd11ull, 0xc232833c40a6e345ull, 0x13d6d05b4a89ae9bull }}, {{ 0xbb603b0fe52a20a3ull, 0x396eb69febad07a8ull, 0x006cfd40ecf60f75ull, 0x108b109123ad62b0ull, 0x95f9205a8684e0baull, 0xc6642390e960d215ull }}, {{ 0x51c24e9ef3a54663ull, 0x3e53223f34c24c97ull, 0x0441e489419c9a94ull, 0xa56ea5ab64c5dae0ull, 0xdbbb43894130c744ull, 0xbfe963a91dc834d7ull }}, {{ 0x319712358474bfddull, 0x6f3f56780f96fde9ull, 0x2a92ed5c901e09caull, 0x765278b1efba8cc0ull, 0x9550a35c8be7c8aeull, 0x7f1de49b29d2106eull }}, {{ 0xefe6b6172c8f7ea3ull, 0x587960b09be5eb1bull, 0xa9bd459da12c61e8ull, 0x9f38b6f35d497f81ull, 0xd526619d770dd6d0ull, 0xf72aee0fa234a451ull }}, {{ 0x5f031ce7bd9af25eull, 0x74bdc6e616fb2f17ull, 0xa164b8284bbbd313ull, 0x38372581a4defb10ull, 0x537fd026a68a6426ull, 0xa7ad4c9c560e6b32ull }}, {{ 0xb61f210d680d77adull, 0x8f69c4fce5cfd6e9ull, 0x4def3192f5563ec2ull, 0x3227771070b5cea6ull, 0x42fe21828167e97eull, 0x8cc4fe1b5c902ff7ull }}, {{ 0x1d374a861086acc0ull, 0x9a21b1e0fa1e6521ull, 0x0b57efbd955e7399ull, 0xf58aa6a4671a127full, 0x9ded4f190e0f1eedull, 0x7fb1ed119da1dfa8ull }}, {{ 0x2428e93ca542bf7cull, 0x0550f2c9c52ff34bull, 0x716f5d67d5b08400ull, 0x976a826c0704b8f6ull, 0x2b4516fa8c97354bull, 0xfcf342b02852bc96ull }}, {{ 0x69991c5e749b7ad5ull, 0x35297be1b3df80efull, 0x6e59a60e58e52800ull, 0xea291838462f39a0ull, 0xb0b2e5c97de814f3ull, 0xe1809ae1933b5dddull }}, {{ 0x1ffb1bb08e12cc57ull, 0x139ed6d106bb095aull, 0x4f807c8f78f39002ull, 0x259af232bdd84044ull, 0xe6fcf9deeb10d187ull, 0xcf060ccfc051aaa8ull }}, {{ 0x3fcf14e58cbbfb65ull, 0xc434642a434e5d85ull, 0x1b04dd9ab983a014ull, 0x780d75fb6a7282abull, 0x05e1c2b52ea82f47ull, 0x163c801d8330aa99ull }}, {{ 0x7e16d0f77f57d1f0ull, 0xaa0be9a6a10fa734ull, 0x0e30a80b3f2440cfull, 0xb0869bd228791aafull, 0x3ad19b13d291d8caull, 0xde5d01271fe6a9faull }}, {{ 0xece429aaf96e3361ull, 0xa47720824a9c880cull, 0x8de69070776a881cull, 0xe542163594bb0ad6ull, 0x4c300ec639b277eaull, 0xafa20b873f02a3c6ull }}, {{ 0x40e9a0adbe4e01ccull, 0x6ca74516ea1d5081ull, 0x8b01a464aa29511eull, 0xf494de17cf4e6c61ull, 0xf9e093be40f8af2cull, 0xdc547348761a65beull }}, {{ 0x892046c96f0c11fbull, 0x3e88b2e52525250cull, 0x6e106beea59d2b30ull, 0x8dd0acee19103bcfull, 0xc2c5c56e89b6d7c1ull, 0x9b4c80d49d07f975ull }}, {{ 0x5b42c3de5678b3d1ull, 0x7156fcf37373727dull, 0x4ca437527823afe2ull, 0x8a26c14cfaa2561aull, 0x9bb9b65161246d8full, 0x10fd084e224fbe99ull }}, {{ 0x909ba6af60b7062eull, 0x6d65e182828278e5ull, 0xfe6a2938b164ded8ull, 0x65838d01ca575d06ull, 0x15411f2dcb6c479bull, 0xa9e2530d571d7200ull }}, {{ 0xa61482d9c7263dccull, 0x45facf191918b8f7ull, 0xf0259c36edf0b474ull, 0xf7238211e769a245ull, 0xd48b37c9f23acc11ull, 0xa2d73e8567267400ull }}, {{ 0x7ccd1c81c77e69f9ull, 0xbbcc16fafaf739acull, 0x61781a254b670c8aull, 0xa76314b30a2056bbull, 0x4d702de3764bf8b3ull, 0x5c68713607808808ull }}, {{ 0xe0031d11caf023bdull, 0x55f8e5cdcda840bcull, 0xceb10574f2067d6bull, 0x89decefe65436351ull, 0x0661cae29ef7b704ull, 0x9c146c1c4b055053ull }}, {{ 0xc01f22b1ed616563ull, 0x5bb8fa0a08928760ull, 0x12ea36917440e631ull, 0x62b415eff4a1e132ull, 0x3fd1ecda35ad262dull, 0x18cc391aee35233eull }}, {{ 0x81375af345cdf5e1ull, 0x9539c46455b949c7ull, 0xbd2621ae8a88fdedull, 0xdb08db5f8e52cbf4ull, 0x7e33408618c37dc5ull, 0xf7fa3b0d4e13606eull }}, {{ 0x0c298d80ba0b9acdull, 0xd441abeb593ce1cbull, 0x637d50d16959eb47ull, 0x8e5891bb8f3bf78full, 0xee00853cf7a2e9baull, 0xafc64e850cc1c450ull }}, {{ 0x799f870744740bfeull, 0x4a90b7317c60d1eeull, 0xe2e5282e1d8330ceull, 0x8f75b1539857ab99ull, 0x4c053461ac5d2149ull, 0xddbf11327f91ab29ull }}, {{ 0xc03b4648ac8877eeull, 0xe9a727eedbc83350ull, 0xdcf391cd271fe80eull, 0x9a98ed43f36cb402ull, 0xf8340bd0bba34cdfull, 0xa976abf8fbb0af9cull }}, {{ 0x8250bed6bd54af49ull, 0x20878f5495d20127ull, 0xa183b203873f1095ull, 0x09f944a7823f081cull, 0xb2087627546100bcull, 0x9ea2b7b9d4e6dc21ull }}, {{ 0x17277463654ed8ddull, 0x454b994dda340b8bull, 0x4f24f4234876a5d3ull, 0x63bcae8b1676511eull, 0xf4549d894bca0758ull, 0x325b2d4251049950ull }}, {{ 0xe78a8be1f51478a6ull, 0xb4f3fd0a8608736eull, 0x17718960d4a27a40ull, 0xe55ed16ee09f2b2full, 0x8b4e275cf5e44973ull, 0xf78fc4972a2dfd29ull }}, {{ 0x0b6976d392ccb67eull, 0x1187e2693c548255ull, 0xea6f5dc84e58c687ull, 0xf5b42e54c637afd6ull, 0x710d89a19aeade86ull, 0xab9dade7a5cbe39full }}, {{ 0x721ea443bbff20eeull, 0xaf4ed81c5b4d1752ull, 0x2859a9d30f77c146ull, 0x9909cf4fbe2cde65ull, 0x6a8760500d2cb145ull, 0xb428cb0c79f6e43aull }}, {{ 0x75326aa557f7494aull, 0xd914711b9102e938ull, 0x9380a23e9aad8cc2ull, 0xfa62191d6dc0aff3ull, 0x2949c32083beecb7ull, 0x0997ee7cc3a4ea48ull }}, {{ 0x93f82a756fa8dce3ull, 0x7acc6b13aa1d1c34ull, 0xc30656720ac77f9cull, 0xc7d4fb264986df83ull, 0x9ce19f4525753f2full, 0x5fef50dfa47126d1ull }}, {{ 0xc7b1a8965c98a0dfull, 0xcbfc2ec4a5231a0dull, 0x9e3f60746bcafc1cull, 0xce51cf7edf44bb25ull, 0x20d038b3769477ddull, 0xbf5928bc6c6b8430ull }}, {{ 0xccf095df9df648b9ull, 0xf7d9d3ae735f0489ull, 0x2e79c48c35edd91full, 0x0f321af4b8af4f78ull, 0x48223702a1ccaeaaull, 0x797b975c3c3329e1ull }}, {{ 0x0165dabc2b9ed736ull, 0xae8244d081b62d62ull, 0xd0c1ad7a1b4a7b3full, 0x97f50d8f36d91ab1ull, 0xd156261a51fed2a4ull, 0xbed3e99a59ffa2ccull }}, {{ 0x0dfa8b59b4346817ull, 0xd116b025111dc5d4ull, 0x2790c6c510e8d07cull, 0xef928798247b0af2ull, 0x2d5d7d0733f43a6dull, 0x7447200783fc5c00ull }}, {{ 0x8bc971810a0c10e8ull, 0x2ae2e172ab29ba48ull, 0x8ba7c3b2a91824e0ull, 0x5bb94bf16cce6d75ull, 0xc5a6e248078a484bull, 0x8ac7404b27db9801ull }}, {{ 0x75de6f0a6478a911ull, 0xacdcce7aafa146d5ull, 0x748da4fa9af170c1ull, 0x953cf76e40104697ull, 0xb884d6d04b66d2f1ull, 0x6bc882ef8e93f011ull }}, {{ 0x9ab05667ecb69aacull, 0xc0a010cadc4cc456ull, 0x8d8871ca0d6e6790ull, 0xd461aa4e80a2c1eaull, 0x35306422f2043d6full, 0x35d51d5b91c760b1ull }}, {{ 0x0ae3600f3f220ab4ull, 0x8640a7ec9affab62ull, 0x875471e486500ba7ull, 0x4bd0a711065b9329ull, 0x13e3e95d742a665eull, 0x1a532593b1c9c6ecull }}, {{ 0x6ce1c09877546b08ull, 0x3e868f3e0dfcb1d4ull, 0x494c72ed3f20748bull, 0xf62686aa3f93bf9full, 0xc6e71da689a7ffaeull, 0x073f77c4f1e1c538ull }}, {{ 0x40d185f4a94c2e52ull, 0x7141986c8bdef24cull, 0xdcfc7d4477448d70ull, 0x9d8142a67bc57c38ull, 0xc5072881608ffcd5ull, 0x487aadb172d1b437ull }}, {{ 0x882f3b8e9cf9cf34ull, 0x6c8ff43d76b576faull, 0xa1dce4aca8ad8664ull, 0x270c9a80d5b6da38ull, 0xb247950dc59fe058ull, 0xd4cac8ee7c310a2dull }}, {{ 0x51d8539221c21806ull, 0x3d9f8a66a316a5c9ull, 0x52a0eebe96c73fecull, 0x867e090859248636ull, 0xf6cbd289b83ec371ull, 0x4febd950d9ea65c8ull }}, {{ 0x327343b55194f040ull, 0x683b68025ee279ddull, 0x3a495371e3c87f3aull, 0x40ec5a537b6d3e1full, 0xa3f639613273a26full, 0x1f367d288327f9d9ull }}, {{ 0xf880a5152fd16284ull, 0x12521017b4d8c2a3ull, 0x46dd4272e5d4f848ull, 0x893b8742d2446d38ull, 0x679e3dcbf8845858ull, 0x3820e3951f8fc280ull }}, {{ 0xb50672d3de2dd92bull, 0xb734a0ed10779a67ull, 0xc4a4987cfa51b2d0ull, 0x5c53489c36ac4432ull, 0x0c2e69f7b52b7375ull, 0x3148e3d33b9d9904ull }}, {{ 0x12407c46adca7babull, 0x280e4942a4ac080dull, 0xae6df4e1c730fc27ull, 0x9b40d61a22baa9fbull, 0x79d023ad13b28295ull, 0xecd8e6405427fa28ull }}, {{ 0xb684dac2c9e8d4b1ull, 0x908edc9a6eb85082ull, 0xd04b90d1c7e9d987ull, 0x10885d055b4aa3d4ull, 0xc22164c2c4f919d8ull, 0x4078fe83498fc594ull }}, {{ 0x21308b9be3184ee8ull, 0xa5949e085333251bull, 0x22f3a831cf227f4bull, 0xa553a23590ea6650ull, 0x954def9bb1bb0270ull, 0x84b9f120df9db7cfull }}, {{ 0x4be57416def31511ull, 0x77ce2c533fff730full, 0x5d8491f21758f8f4ull, 0x75445617a927ff21ull, 0xd50b5c14f14e1866ull, 0x2f436b48bc292e1bull }}, {{ 0xf6f688e4b57ed2adull, 0xae0dbb407ffa7e98ull, 0xa72db374e979b98cull, 0x94ab5cec9b8ff74dull, 0x527198d16d0cf400ull, 0xd8a230d7599bcd16ull }}, {{ 0xa5a158ef16f43ac4ull, 0xcc895084ffc8f1f9ull, 0x87c902911ec13f7eull, 0xceb1a13e139fa908ull, 0x386ff82e42818805ull, 0x7655e869801602dfull }}, {{ 0x784d7956e58a4ba5ull, 0xfd5d2531fdd973c0ull, 0x4dda19ab338c7af3ull, 0x12f04c6cc43c9a55ull, 0x345fb1ce990f503aull, 0x9f5b141f00dc1cb8ull }}, {{ 0xb306bd64f766f46eull, 0xe5a373f3ea7e8584ull, 0x0a8500b0037ccd87ull, 0xbd62fc3faa5e0755ull, 0x0bbcf211fa992244ull, 0x398ec93608991f32ull }}, {{ 0xfe4365f1aa058c4full, 0xf862878728f1372eull, 0x693206e022e0074eull, 0x65ddda7ca7ac4952ull, 0x756174b3c9fb56afull, 0x3f93dc1c55fb37f4ull }}, {{ 0xeea1fb70a4377b18ull, 0xb3d94b47996c27d5ull, 0x1bf444c15cc04915ull, 0xfaaa88de8cbadd38ull, 0x95ce8f05e3d162d9ull, 0x7bc6991b5bd02f8cull }}, {{ 0x5253d2666a2aceebull, 0x067cf0cbfe398e5bull, 0x178aaf8d9f82dad9ull, 0xcaa958b17f4ca431ull, 0xda11963ae62ddc83ull, 0xd5c1fb119621db7dull }}, {{ 0x3746380025ac1530ull, 0x40e167f7ee3f8f91ull, 0xeb6adb883b1c8c7aull, 0xea9d76eef8fe69eaull, 0x84afde4cfdca9d25ull, 0x5993ceafdd5292eaull }}, {{ 0x28be300178b8d3e3ull, 0x88ce0faf4e7b9bacull, 0x322c93524f1d7cc6ull, 0x2a26a555b9f0232dull, 0x2edeaf01e9ea237bull, 0x7fc612dea539bd29ull }}, {{ 0x976de00eb73846dcull, 0x580c9cd910d414b9ull, 0xf5bdc1371726dfc1ull, 0xa582755943615fc3ull, 0xd4b2d613232562cfull, 0xfdbcbcb27441639bull }}, {{ 0xea4ac0932832c496ull, 0x707e207aa848cf3full, 0x99698c26e784bd8dull, 0x7718957ca1cdbda7ull, 0x4efc5cbf5f75dc1cull, 0xe95f5ef88a8de416ull }}, {{ 0x26eb85bf91fbaddfull, 0x64ed44ca92d8187full, 0xfe1f79850b2f6786ull, 0xa6f5d6de5209688bull, 0x15db9f79ba9a991cull, 0x1db9b5b5698ae8dfull }}, {{ 0x8533397bb3d4cab6ull, 0xf144afe9bc70f4f7ull, 0xed3abf326fda0b3full, 0x859a64af345e1577ull, 0xda943ac14a09fb1eull, 0x294119161f6d18b6ull }}, {{ 0x34003ed5064feb1dull, 0x6caedf215c6991abull, 0x444b77f85e84707full, 0x3807eed80bacd6afull, 0x89ca4b8ce463cf31ull, 0x9c8afadd3a42f724ull }}, {{ 0x080274523f1f2f20ull, 0x3ed4b74d9c1fb0b0ull, 0xaaf2afb3b12c64faull, 0x304f547074c062d8ull, 0x61e6f380ebe617ecull, 0x1d6dcca4469da76dull }}, {{ 0x50188b367737d742ull, 0x744f2908193ce6e0ull, 0xad7add04ebbbf1c6ull, 0xe3194c648f83dc76ull, 0xd305830936fcef39ull, 0x2649fe6ac2288a45ull }}, {{ 0x20f57020a82e6891ull, 0x8b179a50fc6104c3ull, 0xc6cca231355771c0ull, 0xdefcfbed9b269ca2ull, 0x3e371e5c25e15842ull, 0x7ee3f02b959566baull }}, {{ 0x4996614691d015aaull, 0x6eec0729dbca2f9full, 0xc3fe55ec156a7185ull, 0xb5e1d7480f821e5bull, 0x6e272f997acd729cull, 0xf4e761b3d7d60346ull }}, {{ 0xdfdfccc1b220d8a2ull, 0x553847a295e5dc38ull, 0xa7ef5b38d6286f36ull, 0x1ad268d09b152f95ull, 0x4d87dbfecc067a1full, 0x9109d1066e5c20c0ull }}, {{ 0xbebdff90f5487650ull, 0x5432cc59dafa9a38ull, 0x8f5990385d94581full, 0x0c3818260ed3dbd8ull, 0x074e97f3f840c537ull, 0xaa622a404f994783ull }}, {{ 0x736bfba994d49f21ull, 0x49fbfb828dca0637ull, 0x997fa233a7cb7139ull, 0x7a30f17c94469675ull, 0x4911ef87b287b426ull, 0xa7d5a6831bfccb1eull }}, {{ 0x8237d49fd04e374aull, 0xe3d7d31989e43e2aull, 0xfefc56048df26c3cull, 0xc5e96eddcac1e097ull, 0xdab35b4cf94d0980ull, 0x8e58811f17dfef2eull }}, {{ 0x162e4e3e230e28e2ull, 0xe66e3eff62ea6da9ull, 0xf5db5c2d8b783a60ull, 0xbb1e54a9eb92c5efull, 0x8b019101bd025f07ull, 0x8f750b36eebf57d4ull }}, {{ 0xddcf0e6d5e8d98d2ull, 0x004e75f9dd28489aull, 0x9a9199c772b247c9ull, 0x4f2f4ea333bbbb5full, 0x6e0faa116217b64dull, 0x9a92702553796e4dull }}, {{ 0xaa169045b187f838ull, 0x03109bc2a392d60cull, 0x09b001ca7af6cddaull, 0x17d91260055551bcull, 0x4c9ca4add4ed1f05ull, 0x09b8617542be4f06ull }}, {{ 0xa4e1a2b8ef4fb233ull, 0x1ea6159a63bc5c7eull, 0x60e011e8cda40a84ull, 0xee7ab7c035553158ull, 0xfe1e6eca51433632ull, 0x6133ce949b6f163eull }}, {{ 0x70d05b39591cf5fcull, 0x327cd807e55b9cf2ull, 0xc8c0b31808686929ull, 0x50cb2d821553ed73ull, 0xed3053e72ca01dfdull, 0xcc0611ce1256de75ull }}, {{ 0x6823903d7b219bd7ull, 0xf8e0704ef5942178ull, 0xd786fef054141b9bull, 0x27efc714d5474685ull, 0x43e34707be412be5ull, 0xf83cb20cb764b09bull }}, {{ 0x1163a266cf501669ull, 0xb8c4631597c94eb4ull, 0x6b45f56348c91417ull, 0x8f5dc6d054c8c13aull, 0xa6e0c64d6e8bb6f3ull, 0xb25ef47f29eee610ull }}, {{ 0xade458041920e018ull, 0x37abded7eddd1308ull, 0x30bb95e0d7dac8edull, 0x99a9c4234fd78c48ull, 0x84c7bf0651752583ull, 0xf7b58cf7a354fca6ull }}, {{ 0xcaeb7028fb48c0f0ull, 0x2cb6b46f4aa2be56ull, 0xe753dac86e8bd944ull, 0x00a1a9611e6b7ad1ull, 0x2fcd763f2e937724ull, 0xad1781ac6151de81ull }}, {{ 0xed326199d0d7895bull, 0xbf230c58ea5b6f63ull, 0x09468bd451767ca9ull, 0x06509dcb3032cc33ull, 0xde069e77d1c2a768ull, 0xc2eb10bbcd32b10bull }}, {{ 0x43f7d002286b5d8full, 0x775e7b79279259e7ull, 0x5cc1764b2ea0dea1ull, 0x3f2629efe1fbf9feull, 0xac4230ae319a8a10ull, 0x9d2ea75603faea76ull }}, {{ 0xa7ae20159431a797ull, 0xa9b0d2bb8bb78308ull, 0x9f8e9eefd248b24eull, 0x777da35ed3d7c3efull, 0xba95e6cdf00964a2ull, 0x23d2895c27cd28a2ull }}, {{ 0x8ccd40d7c9f08be3ull, 0xa0e83b53752b1e56ull, 0x3b92355e36d6f712ull, 0xaae861b4466da75cull, 0x49db040b605dee58ull, 0x66395d998e03965bull }}, {{ 0x8004886de36576e1ull, 0x4912514293af2f61ull, 0x53b615ae2465a6baull, 0xad13d10ac048899aull, 0xe28e2871c3ab4f76ull, 0xfe3da7ff8c23df90ull }}, {{ 0x002d544ae1f6a4c6ull, 0xdab72c99c4d7d9cfull, 0x451cd8cd6bf88346ull, 0xc2c62a6b82d56007ull, 0xd98d9471a4b11aa2ull, 0xee688ffb7966bba8ull }}, {{ 0x01c54aecd3a26fbfull, 0x8b27be01b06e8216ull, 0xb320780637b520c4ull, 0x9bbda8331c55c048ull, 0x7f87cc706eeb0a5bull, 0x50159fd2be035498ull }}, {{ 0x11b4ed4044585d72ull, 0x6f8d6c10e45114dcull, 0xff44b03e2d1347adull, 0x156891ff1b5982d6ull, 0xfb4dfc64552e6794ull, 0x20d83e3b6c214df4ull }}, {{ 0xb1114482ab73a676ull, 0x5b8638a8eb2ad098ull, 0xf8aee26dc2c0ccc6ull, 0xd615b3f7117f1c65ull, 0xd10bdbeb53d00bc8ull, 0x48726e52394d0b91ull }}, {{ 0xeaacad1ab284809aull, 0x933e36992fac25f6ull, 0xb6d4d8499b87ffbfull, 0x5cd907a6aef71bfbull, 0x2a769731462075d8ull, 0xd4784f363d0273b2ull }}, {{ 0x2abec30af92d0600ull, 0xc06e21fbdcb97ba5ull, 0x245072e0134ffd7bull, 0xa07a4c82d5a717d5ull, 0xa8a1e7ecbd449a73ull, 0x4cb3181e621884f5ull }}, {{ 0xab739e6dbbc23c03ull, 0x844d53d69f3ed473ull, 0x6b247cc0c11fe6d5ull, 0x44c6fd1c5886ee53ull, 0x96530f3f64ae0884ull, 0xfefef12fd4f53198ull }}, {{ 0xb28430495596581cull, 0x2b05466238744c84ull, 0x2f6cdf878b3f0457ull, 0xafc5e31b75454f42ull, 0xdf3e9879eecc552aull, 0xf5f56bde5193eff5ull }}, {{ 0xf929e2dd57df7117ull, 0xae34bfd6348afd2eull, 0xda40bb4b70762b67ull, 0xddbadf1294b51895ull, 0xb871f4c353fb53aaull, 0x9b9636af2fc75f9aull }}, {{ 0xbba2dca56eba6ae5ull, 0xce0f7e5e0d6de3d5ull, 0x868750f2649db20cull, 0xa94cb6b9cf12f5daull, 0x34738fa147d144acull, 0x13de22d7ddc9bc0bull }}, {{ 0x545c9e7653482cf0ull, 0x0c9aefac864ae659ull, 0x41492977ee28f480ull, 0x9cff234216bd9a89ull, 0x0c839c4cce2caebeull, 0xc6ad5c6ea9e15870ull }}, {{ 0x4b9e309f40d1c162ull, 0x7e0d5cbd3eecff7dull, 0x8cdb9eaf4d998d00ull, 0x21f76094e368095cull, 0x7d241b000dbed372ull, 0xc2c59c52a2cd7460ull }}, {{ 0xf42de63888318dd7ull, 0xec859f647541fae4ull, 0x809432d907ff8204ull, 0x53a9c5d0e2105d9dull, 0xe3690e0089744275ull, 0x9bb81b3a5c068bc4ull }}, {{ 0x89cafe3551ef8a62ull, 0x3d3839ec9493ccf1ull, 0x05c9fc7a4ffb1431ull, 0x44a1ba28d4a3a827ull, 0xe21a8c055e8a9895ull, 0x15311047984175b0ull }}, {{ 0x61edee15335b67d1ull, 0x6432433dcdc6016full, 0x39e3dcc71fcec9ecull, 0xae5145984e649186ull, 0xd5097835b169f5d4ull, 0xd3eaa2cbf28e98e8ull }}, {{ 0xd34b4cd401920e28ull, 0xe9f6a06a09bc0e59ull, 0x42e69fc73e13e33bull, 0xcf2cb7f30fedaf3eull, 0x525eb218ee239a4eull, 0x472a5bf77991f918ull }}, {{ 0x40f100480fb48d8dull, 0x23a2442461588f82ull, 0x9d023dc86cc6e057ull, 0x17bf2f7e9f48d86eull, 0x37b2f4f94d640714ull, 0xc7a797aabfb3baf3ull }}, {{ 0x896a02d09d0d8784ull, 0x6456a96bcd759b16ull, 0x221669d43fc4c367ull, 0xed77daf238d87452ull, 0x2cfd91bd05e846c8ull, 0xcc8becab7d054d80ull }}, {{ 0x5e241c2622874b2aull, 0xeb629e3606980ee1ull, 0x54e0224a7dafa209ull, 0x46ae8d7638748b35ull, 0xc1e7b1623b12c3d9ull, 0xfd773eb2e2350701ull }}, {{ 0xad69197d5948efa0ull, 0x31da2e1c41f094cdull, 0x50c156e8e8dc5463ull, 0xc2d1869e348d7015ull, 0x930cedd64ebba67cull, 0xe6a872fcd6124611ull }}, {{ 0xc61afee57cd95c3dull, 0xf285cd1a9365d008ull, 0x278d6519189b4bdfull, 0x9c2f422e0d8660d5ull, 0xbe814a5f135480dfull, 0x02947de05cb6bcafull }}, {{ 0xbd0df4f6e07d9a5dull, 0x793a0309c1fa2057ull, 0x8b85f2faf610f6bfull, 0x19d895cc873fc853ull, 0x710ce7b6c14d08bcull, 0x19cceac39f235eddull }}, {{ 0x628b91a4c4e807a5ull, 0xbc441e6193c5436dull, 0x733b7dcd9ca9a37aull, 0x0275d9fd487dd343ull, 0x6a810d238d025759ull, 0x02012ba43761b4a6ull }}, {{ 0xd973b06fb1104c71ull, 0x5aa92fcfc5b4a245ull, 0x8052ea081ea062cbull, 0x189a83e4d4ea40a2ull, 0x290a83638217697aull, 0x140bb46a29d10e80ull }}, {{ 0x7e84e45ceaa2fc6cull, 0x8a9bde1db90e56baull, 0x033d24513243dbf1ull, 0xf60926f051268659ull, 0x9a6921e314ea1ec4ull, 0xc8750c25a22a9101ull }}, {{ 0xf130eba12a5ddc36ull, 0x6a16ad293a8f6348ull, 0x20636b2bf6a6976full, 0x9c5b85632b813f7aull, 0x081b52ded12533b1ull, 0xd492797855a9aa10ull }}, {{ 0x6be9344ba7aa9a1dull, 0x24e2c39c4999e0d9ull, 0x43e22fb7a281ea5aull, 0x1b9335dfb30c7ac5ull, 0x51113cb42b7404f0ull, 0x4db8beb358a0a4a0ull }}, {{ 0x371c0af48caa0525ull, 0x70dba41ae002c87eull, 0xa6d5dd2c59132785ull, 0x13c01abcfe7ccbb4ull, 0x2aac5f09b2883161ull, 0x0937730176466e43ull }}, {{ 0x27186d8d7ea43370ull, 0x6894690cc01bd4eeull, 0x845aa3bb7abf8b36ull, 0xc5810b61f0dff50eull, 0xaabbb660f951edcaull, 0x5c2a7e0e9ec04e9full }}, {{ 0x86f44786f26a0264ull, 0x15cc1a7f8116514dull, 0x2b8a6552cb7b7020ull, 0xb70a71d368bf9291ull, 0xab551fc9bd3349ebull, 0x99a8ec923383123cull }}, {{ 0x458acb45782417e6ull, 0xd9f908fb0adf2d07ull, 0xb367f53bf2d26140ull, 0x26687242177bb9abull, 0xb1533de16400e335ull, 0x00993db6031eb65eull }}, {{ 0xb76bf0b6b168eefdull, 0x83ba59ce6cb7c248ull, 0x020f94577c37cc88ull, 0x80147694ead540b5ull, 0xed406acde808e013ull, 0x05fc691c1f331fb2ull }}, {{ 0x2a376722ee1955deull, 0x254782103f2d96d7ull, 0x149bcb6ada2dfd55ull, 0x00cca1d12c548712ull, 0x44842c0b1058c0c3ull, 0x3bdc1b1937ff3cfdull }}, {{ 0xa62a075d4cfd5aa9ull, 0x74cb14a277c7e467ull, 0xce15f22c85cbe553ull, 0x07fe522bbb4d46b4ull, 0xad29b86ea377879eull, 0x56990efc2ff861e4ull }}, {{ 0x7da449a501e58a96ull, 0x8feece58adceec0cull, 0x0cdb75bd39f6f542ull, 0x4fef35b55104c310ull, 0xc3a1345262ab4c2cull, 0x61fa95d9dfb3d2eeull }}, {{ 0xe86ae07212f769e0ull, 0x9f540f76ca15387cull, 0x8092996443a59499ull, 0x1f5819152a2f9ea0ull, 0xa44c0b37dab0f9bbull, 0xd3c9da82bd063d53ull }}, {{ 0x142cc474bdaa22bdull, 0x39489aa3e4d434e1ull, 0x05b9fdeaa477ce00ull, 0x3970fad3a5dc3245ull, 0x6af8702e8ae9c14full, 0x45e2891b623e6544ull }}, {{ 0xc9bfac8f68a55b5eull, 0x3cd60a66f04a10caull, 0x3943eb2a6cae0c02ull, 0x3e69cc447a99f6b2ull, 0x2db461d16d218d18ull, 0xbad95b11d66ff4acull }}, {{ 0xe17cbd9a167591abull, 0x605c680562e4a7ebull, 0x3ca72fa83ecc7816ull, 0x7021faacca03a2f6ull, 0xc90bd22e434f82f2ull, 0x4c7d8eb2605f8eb9ull }}, {{ 0xcedf6804e097b0b2ull, 0xc39c1035dcee8f36ull, 0x5e87dc9273fcb0dfull, 0x6153cabfe4245d9eull, 0xda7635cea11b1d78ull, 0xfce792f7c3bb9341ull }}, {{ 0x14ba1030c5ece6f8ull, 0xa418a21aa1519824ull, 0xb14e9db887dee8bdull, 0xcd45eb7ee96ba82full, 0x889e1a124b0f26b3ull, 0xe10bbdada553c092ull }}, {{ 0xcf44a1e7bb4105afull, 0x68f6550a4d2ff168ull, 0xed1229354eb51768ull, 0x04bb32f51e3491dcull, 0x562d04b6ee978306ull, 0xca7568c8754585b9ull }}, {{ 0x18ae530d508a38d3ull, 0x199f526703df6e18ull, 0x42b59c151312ea14ull, 0x2f4ffd932e0db2a1ull, 0x5dc22f2551eb1e3cull, 0xe89617d494b7393dull }}, {{ 0xf6cf3e8525663839ull, 0x0039380626ba4cf0ull, 0x9b1818d2bebd24c9ull, 0xd91fe7bfcc88fa4cull, 0xa995d775332f2e59ull, 0x15dcee4dcf283c65ull }}, {{ 0xa418713375fe323cull, 0x023c303d83470169ull, 0x0ef0f83b73636fdaull, 0x7b3f0d7dfd59c6feull, 0x9fda6a93ffd7cf82ull, 0xdaa14f0a17925bf8ull }}, {{ 0x68f46c029bedf65bull, 0x1659e26720c60e20ull, 0x9569b25281e25e84ull, 0xd07686ebe581c5ecull, 0x3e8829c7fe6e1b18ull, 0x8a4d1664ebb797b6ull }}, {{ 0x198c381a174b9f91ull, 0xdf82d80747bc8d44ull, 0xd620f73912d7b128ull, 0x24a14536f711bb3dull, 0x7151a1cff04d0ef8ull, 0x6702dff1352bed1eull }}, {{ 0xff7a3104e8f43ba6ull, 0xbb1c7048cd5d84a8ull, 0x5d49a83abc6ceb98ull, 0x6e4cb425a6b1506aull, 0x6d30521f630295b1ull, 0x061cbf6c13b74330ull }}, {{ 0xfac5ea31198a547aull, 0x4f1c62d805a72e99ull, 0xa4e0924b5c4133f7ull, 0x4eff097882ed2427ull, 0x43e33539de19d8eeull, 0x3d1f7a38c5289fe4ull }}, {{ 0xcbbb25eaff674cc7ull, 0x171bdc703887d203ull, 0x70c5b6f19a8c07a9ull, 0x15f65eb51d43698cull, 0xa6e01442ad02794full, 0x633ac637b3963eeaull }}, {{ 0xf54f7b2dfa08ffc7ull, 0xe7169c62354e3425ull, 0x67b9257009784c9aull, 0xdb9fb31324a21f7cull, 0x84c0ca9ac218bd16ull, 0xe04bbe2d03de752aull }}, {{ 0x951acfcbc459fdc5ull, 0x06e21bd6150e097bull, 0x0d3b76605eb2fe0dull, 0x943cfebf6e553adcull, 0x2f87ea0b94f762e4ull, 0xc2f56dc226b093a9ull }}, {{ 0xd30c1df5ab83e9b4ull, 0x44d5165cd28c5ed3ull, 0x84529fc3b2fdec82ull, 0xca61f37a4f544c98ull, 0xdb4f2473d1a9dcedull, 0x9d96499582e5c49bull }}, {{ 0x3e792b98b327210dull, 0xb052dfa0397bb446ull, 0x2b3a3da4fdeb3d16ull, 0xe7d382c7194afdf5ull, 0x91176c8630a2a149ull, 0x27dedfd71cf9ae16ull }}, {{ 0x70bbb3f6ff874a81ull, 0xe33cbc423ed50abeull, 0xb0466871eb3062e2ull, 0x0e431bc6fcedeb93ull, 0xaaea3d3de65a4ce3ull, 0x8eb4be6721c0cce1ull }}, {{ 0x675507a5fb48e908ull, 0xe05f5a9674526b70ull, 0xe2c014732fe3dcdcull, 0x8e9f15c5e14b33c4ull, 0xad26646aff8700deull, 0x930f7007518800d0ull }}, {{ 0x09524c7bd0d91a4dull, 0xc3b989e08b383264ull, 0xdb80cc7fdee6a0a0ull, 0x9236d9baccf005b0ull, 0xc37fec2dfb4608b1ull, 0xbe9a60492f500826ull }}, {{ 0x5d36fcd6287b0702ull, 0xa53f62c57031f7e8ull, 0x9307fcfeb5024647ull, 0xb624814c016038e8ull, 0xa2ff39cbd0bc56efull, 0x7207c2dbd9205183ull }}, {{ 0xa425e05d94ce460full, 0x7479dbb661f3af13ull, 0xbe4fe1f31216beccull, 0x1d6d0cf80dc23915ull, 0x5df841f6275b655dull, 0x744d9c967b432f24ull }}, {{ 0x697ac3a7d00ebc98ull, 0x8cc2951fd384d6c4ull, 0x6f1ed37eb4e373fcull, 0x264281b089963ad9ull, 0xabb2939d8991f5a3ull, 0x8b081de0d09fd76bull }}, {{ 0x1ecba48e20935deeull, 0x7f99d33e433063acull, 0x573442f310e287ddull, 0x7e9910e55fde4c7eull, 0xb4f9c4275fb3985full, 0x6e512ac8263e6a34ull }}, {{ 0x33f46d8d45c1ab4bull, 0xfc02406e9fe3e4b9ull, 0x680a9d7ea8d94ea6ull, 0xf1faa8f5beaefcefull, 0x11c1a989bd03f3baull, 0x4f2babd17e70260full }}, {{ 0x078c4784b990b0ecull, 0xd81684523ee6ef3cull, 0x106a26f2987d1285ull, 0x73ca999972d5e15aull, 0xb1909f616227854dull, 0x17b4b62ef0617c96ull }}, {{ 0x4b7acb2f3fa6e93aull, 0x70e12b3675055858ull, 0xa4258579f4e2b93aull, 0x85e9fffe7c5acd84ull, 0xefa639cdd58b3506ull, 0xed0f1dd563cedde2ull }}, {{ 0xf2cbefd87c851c41ull, 0x68cbb02092357372ull, 0x697736c390db3c48ull, 0x3b23fff0db8c072eull, 0x5c7e420a57701241ull, 0x42972a55e614aaddull }}, {{ 0x7bf75e74dd331a89ull, 0x17f4e145b616827dull, 0x1ea823a3a8905ad4ull, 0x4f67ff68937847d0ull, 0x9cee94676a60b68cull, 0x99e7a75afcceaca5ull }}, {{ 0xd7a9b090a3ff095aull, 0xef90ccb91ce118e6ull, 0x3291646495a38c48ull, 0x1a0ffa15c2b2ce21ull, 0x2151cc0a27c7217bull, 0x030c898de012be78ull }}, {{ 0x6ca0e5a667f65d88ull, 0x5ba7ff3b20caf904ull, 0xf9adebedd8637ad9ull, 0x049fc4d99afc0d4bull, 0x4d31f8658dc74ecfull, 0x1e7d5f8ac0bb70b1ull }}, {{ 0x3e48f8800f9fa753ull, 0x948ff84f47edba2cull, 0xc0cb374a73e2cc7dull, 0x2e3db0800dd884f7ull, 0x03f3b3f789c91416ull, 0x30e5bb6b875266edull }}, {{ 0x6ed9b5009c3c8942ull, 0xcd9fb318cf4945baull, 0x87f028e886dbfce7ull, 0xce68e5008a7531adull, 0x278507ab61dac8ddull, 0xe8f9523349380542ull }}, {{ 0x548112061a5d5c96ull, 0x083cfef818dcb948ull, 0x4f6199154497e10eull, 0x1018f2056893f0c7ull, 0x8b324cb1d28bd8aaull, 0x19bd3600dc303495ull }}, {{ 0x4d0ab43d07a59ddeull, 0x5261f5b0f89f3cd3ull, 0x19cffad4adeeca8cull, 0xa0f9743615c767c9ull, 0x6ff6fef2397676a4ull, 0x01641c0899e20dd7ull }}, {{ 0x026b0a624c782aadull, 0x37d398e9b6386041ull, 0x021fcc4ecb53e97bull, 0x49be8a1cd9ca0ddbull, 0x5fa5f5763ea0a26eull, 0x0de9185602d48a6aull }}, {{ 0x182e67d6fcb1aac6ull, 0x2e43f9211e33c28aull, 0x153dfb13f1471ed0ull, 0xe171652081e48a8eull, 0xbc7b969e7246584eull, 0x8b1af35c1c4d6827ull }}, {{ 0xf1d00e65def0abc1ull, 0xcea7bb4b2e059964ull, 0xd46bcec76cc73421ull, 0xce6df34512ed698cull, 0x5cd3e23076bf7314ull, 0x6f0d81991b06118dull }}, {{ 0x72208ffab566b587ull, 0x128d50efcc37fdf1ull, 0x4c3613ca3fc80952ull, 0x104b80b2bd461f80ull, 0xa046d5e4a37a7ed0ull, 0x56870ffb0e3caf85ull }}, {{ 0x75459fcb1603174aull, 0xb985295dfa2feb6eull, 0xfa1cc5e67dd05d34ull, 0xa2f306fb64bd3b02ull, 0x42c45aee62c8f420ull, 0x61469fce8e5edb38ull }}, {{ 0x94b83deedc1ee8e5ull, 0x3f339dabc5df3250ull, 0xc51fbb00ea23a40full, 0x5d7e45d1ef644e1dull, 0x9bab8d4fdbd98946ull, 0xccc23e118fb49032ull }}, {{ 0xcf326b54993518f1ull, 0x780428b5bab7f725ull, 0xb33d4e0925646898ull, 0xa6eeba3359eb0d29ull, 0x14b3851e967f5cbfull, 0xff966caf9d0da1faull }}, {{ 0x17f8314dfc12f967ull, 0xb02997194b2fa77aull, 0x00650c5b75ec15f4ull, 0x85534601832e83a1ull, 0xcf033331e0f99f7cull, 0xfbe03edc228853c4ull }}, {{ 0xefb1ed0bd8bdbe03ull, 0xe19fe6fcefdc8ac4ull, 0x03f27b929b38db8eull, 0x3540bc0f1fd1244aull, 0x161ffff2c9c03addull, 0xd6c27499595345b0ull }}, {{ 0x5cf3427677696c21ull, 0xd03f05e15e9d6bb1ull, 0x2778d3ba10389394ull, 0x148758973e2b6ae4ull, 0xdd3fff7be1824ca4ull, 0x63988dfd7d40b8e0ull }}, {{ 0xa18098a0aa1e394full, 0x22763acdb22634edull, 0x8ab84544a235c3d0ull, 0xcd4975e86db22ce9ull, 0xa47ffad6cf16fe68ull, 0xe3f58be6e48738c8ull }}, {{ 0x4f05f646a52e3d14ull, 0x589e4c08f57e1148ull, 0x6b32b4ae5619a621ull, 0x04de9b1448f5c11full, 0x6cffcc6416e5f018ull, 0xe7977704ed4837d6ull }}, {{ 0x163b9ec273ce62cdull, 0x762ef85996ecacd3ull, 0x2ffb0ecf5d007d4dull, 0x30b20ecad9998b3aull, 0x41fdfbe8e4fb60f0ull, 0x0beaa63144d22e60ull }}, {{ 0xde543398860fdbffull, 0x9dd5b37fe53ec03eull, 0xdfce9419a204e506ull, 0xe6f493ec7fff7045ull, 0x93ebd718f1d1c961ull, 0x772a7decb035cfc2ull }}, {{ 0xaf4a03f53c9e97f2ull, 0x2a5902fef4738274ull, 0xbe11c9005430f242ull, 0x058dc73cfffa62baull, 0xc73666f97231ddd3ull, 0xa7a8eb3ee21a1d99ull }}, {{ 0xd8e427945e31ef77ull, 0xa77a1df58c83188eull, 0x6cb1da0349e97695ull, 0x3789c861ffc7db4bull, 0xc82005be75f2aa3eull, 0x8c993074d5052801ull }}, {{ 0x78e98bcbadf35aaaull, 0x8ac52b977d1ef594ull, 0x3ef28420e31ea1d8ull, 0x2b61d3d3fdce90f2ull, 0xd14039709b7aa66eull, 0x7dfbe49052339011ull }}, {{ 0xb91f75f4cb818aa3ull, 0x6bb3b3eae33597ccull, 0x75792948df325275ull, 0xb1d24647ea11a976ull, 0x2c823e6612ca804dull, 0xebd6eda33603a0b2ull }}, {{ 0x3b3a9b8ff30f6a61ull, 0x3505072ce017edffull, 0x96bb9cd8b7f73896ull, 0xf236becf24b09ea0ull, 0xbd166ffcbbe90308ull, 0x366548601c2446f5ull }}, {{ 0x504a139f7e9a27c6ull, 0x123247c0c0ef4bf8ull, 0xe35420772fa835deull, 0x762374176ee63245ull, 0x62e05fdf571a1e59ull, 0x1ff4d3c1196ac599ull }}, {{ 0x22e4c43af2058db8ull, 0xb5f6cd878958f7b3ull, 0xe14944a7dc921aacull, 0x9d6288ea54fdf6baull, 0xdcc3beb967052f7eull, 0x3f90458afe2bb7fdull }}, {{ 0x5cefaa4d7437892full, 0x1ba4074b5d79acffull, 0xccdcae8e9db50abfull, 0x25d9592751eba34cull, 0x9fa5733e0633daf2ull, 0x7ba2b76dedb52feaull }}, {{ 0xa15ca7068a2b5bd3ull, 0x146848f1a6c0c1f9ull, 0x009ed19229126b77ull, 0x7a7d7b8933346100ull, 0x3c76806c3e068d75ull, 0xd45b2a4b4913df2aull }}, {{ 0x4d9e864165b1963aull, 0xcc12d970838793c0ull, 0x06342fb59ab832a6ull, 0xc8e6d35c000bca00ull, 0x5ca1043a6c418696ull, 0x4b8fa6f0dac6b7a6ull }}, {{ 0x08313e8df8efde45ull, 0xf8bc7e65234bc583ull, 0x3e09dd180b31fa83ull, 0xd90441980075e400ull, 0x9e4a2a483a8f41e3ull, 0xf39c85688bc32c7full }}, {{ 0x51ec718bb95eaeb4ull, 0xb75ceff360f5b71eull, 0x6c62a2f06ff3c927ull, 0x7a2a8ff0049ae802ull, 0x2ee5a6d2499892e6ull, 0x841d3615759fbcfcull }}, {{ 0x333c6f753db2d306ull, 0x29a15f81c999272full, 0x3bda5d645f85db8dull, 0xc5a99f602e0d1018ull, 0xd4f88436dff5bd00ull, 0x29241cd6983d61d9ull }}, {{ 0x005c5a9468fc3e3full, 0xa04dbb11dffb87d8ull, 0x5687a5ebbb3a9383ull, 0xb8a039c1cc82a0f2ull, 0x51b52a24bf996207ull, 0x9b692061f265d282ull }}, {{ 0x039b89cc19da6e7bull, 0x43094eb2bfd34e70ull, 0x614c7b355049c324ull, 0x36424191fd1a4977ull, 0x3113a56f7bfdd44dull, 0x121b43d377fa3917ull }}, {{ 0x241361f9028850c9ull, 0x9e5d12fb7e411060ull, 0xccfcd01522e19f6aull, 0x1e968fb3e306dea9ull, 0xeac4765ad7ea4b04ull, 0xb510a642afc63ae7ull }}, {{ 0x68c1d3ba195327ddull, 0x2fa2bdd2ee8aa3c1ull, 0x01e020d35cd03a2aull, 0x31e19d06de44b2a2ull, 0x2bac9f8c6f26ee29ull, 0x12a67e9addbe4d0full }}, {{ 0x17924544fd3f8ea2ull, 0xdc5b6a3d516a658eull, 0x12c14841a02245a5ull, 0xf2d02244aeaefa54ull, 0xb4be3b7c57854d9bull, 0xba80f20ca96f0297ull }}, {{ 0xebb6b4b1e47b9252ull, 0x9b9226652e27f78cull, 0xbb8cd2904156b87aull, 0x7c2156aed2d5c748ull, 0x0f6e52db6b350817ull, 0x4909747e9e5619edull }}, {{ 0x35230ef2ecd3b738ull, 0x13b57ff3cd8fab81ull, 0x538039a28d6334caull, 0xd94d62d43c59c8d7ull, 0x9a4f3c92301250eaull, 0xda5e8cf22f5d0342ull }}, {{ 0x135e957d4045282cull, 0xc516ff86079cb30cull, 0x4302405985e00fe4ull, 0x7d05dc4a5b81d869ull, 0x07185db5e0b7292cull, 0x87b18175d9a2209aull }}, {{ 0xc1b1d6e482b391bbull, 0xb2e5fb3c4c1efe78ull, 0x9e16837f3ac09eefull, 0xe23a9ae79312741cull, 0x46f3a91ac7279bbcull, 0x4cef0e9a80554604ull }}, {{ 0x90f264ed1b03b14bull, 0xfcfbd05af935f0b7ull, 0x2ce122f84b86355cull, 0xd64a0d0bbeb8891eull, 0xc5849b0bc78c1560ull, 0x015692090354bc2aull }}, {{ 0xa977f1430e24ecebull, 0xe1d6238dbc1b672bull, 0xc0cb5db2f33e15a1ull, 0x5ee4827573355b2dull, 0xb72e0e75cb78d5c8ull, 0x0d61b45a214f59abull }}, {{ 0x9eaf6c9e8d714132ull, 0xd25d6389591207b4ull, 0x87f1a8fd806cd852ull, 0xb4ed189680158fc9ull, 0x27cc9099f2b859d3ull, 0x85d10b854d1980b5ull }}, {{ 0x32da3e31866c8bf7ull, 0x37a5e35d7ab44d0eull, 0x4f7099e70440733cull, 0x1142f5e100d79ddfull, 0x8dfda6037b338245ull, 0x3a2a733502ff0713ull }}, {{ 0xfc866def403d77a5ull, 0x2c7ae1a6cb0b028dull, 0x1a6603062a84805aull, 0xac9d9aca086c2ab9ull, 0x8be87c22d00316b2ull, 0x45a880121df646c3ull }}, {{ 0xdd404b588266ac72ull, 0xbcccd083ee6e198bull, 0x07fc1e3da92d0385ull, 0xbe280be45439ab3bull, 0x7714d95c201ee2faull, 0xb89500b52b9ec3a3ull }}, {{ 0xa482f1751802bc75ull, 0x60002527504cff76ull, 0x4fd92e689bc22339ull, 0x6d9076eb4a40b04eull, 0xa6d07d994134ddcbull, 0x35d20713b433a462ull }}, {{ 0x6d1d6e92f01b5c95ull, 0xc00173892301faa2ull, 0x1e7bd0161595603dull, 0x47a4a530e686e30full, 0x8424e7fc8c10a9f2ull, 0x1a3446c50a046bdaull }}, {{ 0x432651bd61119dceull, 0x800e835b5e13ca58ull, 0x30d620dcd7d5c269ull, 0xcc6e73e90144de97ull, 0x29710fdd78a6a376ull, 0x060ac3b2642c3689ull }}, {{ 0x9f7f3165cab02a0cull, 0x00912191acc5e772ull, 0xe85d48a06e59981full, 0xfc50871a0cb0b1e7ull, 0x9e6a9ea6b68262a3ull, 0x3c6ba4f7e9ba215bull }}, {{ 0x3af7edf9eae1a479ull, 0x05ab4fb0bfbb0a7aull, 0x13a4d6444f7ff136ull, 0xdb2547047ee6f30full, 0x302a32832117da67ull, 0x5c3471af21454d94ull }}, {{ 0x4daf4bc32cd06cb9ull, 0x38b11ce77d4e68c6ull, 0xc4705eab1aff6c1cull, 0x8f74c62cf5057e96ull, 0xe1a5f91f4aee880eull, 0x9a0c70d74cb507c9ull }}, {{ 0x08d8f59fc0243f3dull, 0x36eb210ae51017bfull, 0xac63b2af0dfa391aull, 0x9a8fbdc19236f1e3ull, 0xd07bbb38ed515091ull, 0x047c6868ff124de2ull }}, {{ 0x5879983d816a7864ull, 0x252f4a6cf2a0ed76ull, 0xbbe4fad68bc63b06ull, 0x099d698fb62572e4ull, 0x24d55039452d25b0ull, 0x2cdc1419f6b70adcull }}, {{ 0x74bff2670e28b3ecull, 0x73d8e8417a49469full, 0x56f1cc6175be4e3dull, 0x60261f9d1d767cefull, 0x7055223cb3c378e0ull, 0xc098c903a3266c99ull }}, {{ 0x8f7f78068d970736ull, 0x8679128ec6dcc23aull, 0x6571fbce996f0e66ull, 0xc17d3c2326a0e159ull, 0x6353565f05a2b8c3ull, 0x85f7da245f803dfeull }}, {{ 0x9afab04187e6481dull, 0x40bab993c49f9649ull, 0xf673d611fe569001ull, 0x8ee4595f8248cd7dull, 0xe1415fb6385b37a5ull, 0x3bae856bbb026befull }}, {{ 0x0dcae28f4efed11full, 0x874b3fc5ae3bdee0ull, 0xa0865cb3ef61a00cull, 0x94eb7dbb16d806ebull, 0xcc8dbd1e33902c77ull, 0x54d136354e18375eull }}, {{ 0x89ecd99915f42b38ull, 0x48f07db8ce56b4c0ull, 0x453f9f0759d0407dull, 0xd132e94ee4704534ull, 0xfd89632e03a1bcabull, 0x502c1e150cf229b3ull }}, {{ 0x63407ffadb89b033ull, 0xd964e9380f630f85ull, 0xb47c3649822284e4ull, 0x2bfd1d14ec62b40aull, 0xe75ddfcc24515eb6ull, 0x21b92cd28175a107ull }}, {{ 0xe084ffcc9360e1fcull, 0x7df11c3099de9b35ull, 0x0cda1edf155930f0ull, 0xb7e322d13bdb086bull, 0x09aabdf96b2db31dull, 0x513bc0390e984a4full }}, {{ 0xc531fdfdc1c8d3d8ull, 0xeb6b19e602b2101aull, 0x808534b6d57be964ull, 0x2edf5c2c568e542eull, 0x60ab6bbe2fc8ff29ull, 0x2c55823a91f2e716ull }}, {{ 0xb3f3ebe991d8466cull, 0x322f02fc1af4a10bull, 0x05340f2456d71df1ull, 0xd4b999bb618f49d1ull, 0xc6b2356dddd9f79bull, 0xbb571649b37d06dfull }}, {{ 0x0787371fb272c036ull, 0xf5d61dd90d8e4a75ull, 0x3408976b64672b6bull, 0x4f400151cf98e22aull, 0xc2f6164aaa83ac16ull, 0x5166dee102e244bdull }}, {{ 0x4b48273cf87b8220ull, 0x9a5d2a7a878ee892ull, 0x0855ea31ec07b237ull, 0x18800d321bf8d5a6ull, 0x9d9cdeeaa924b8dfull, 0x2e04b4ca1cd6af69ull }}, {{ 0xf0d18861b4d31544ull, 0x07a3a8c94b9515b6ull, 0x535b25f3384cf62cull, 0xf50083f517b8587cull, 0x2820b52a9b6f38b6ull, 0xcc2f0fe52062da20ull }}, {{ 0x682f53d1103ed4a7ull, 0x4c6497dcf3d2d925ull, 0x418f7b8033019db8ull, 0x92052792ed3374dbull, 0x914713aa12583725ull, 0xf9d69ef343dc8541ull }}, {{ 0x11d9462aa2744e83ull, 0xfbedeea1863c7b76ull, 0x8f9ad301fe102932ull, 0xb4338bbd44029090ull, 0xacc6c4a4b7722777ull, 0xc2623580a69d348full }}, {{ 0xb27cbdaa588b1122ull, 0xd74b524f3e5cd29cull, 0x9c0c3e13eca19bfdull, 0x0a037564a819a5a5ull, 0xbfc3ae6f2a758aadull, 0x97d6170682240d9cull }}, {{ 0xf8df68a7756eab53ull, 0x68f137186fa03a1eull, 0x187a6cc73e5017eaull, 0x642295ee91007878ull, 0x7da4d057a8976ac2ull, 0xee5ce6411568881full }}, {{ 0xb8ba168a9652b13full, 0x196c26f45c424535ull, 0xf4c83fc86f20ef28ull, 0xe959db51aa04b4b0ull, 0xe870236c95ea2b97ull, 0x4fa0fe8ad615513aull }}, {{ 0x3744e169df3aec72ull, 0xfe39858b9a96b419ull, 0x8fd27dd457495790ull, 0x1d829130a42f0ee9ull, 0x1461623ddb25b3efull, 0x1c49f16c5cd52c4dull }}, {{ 0x28b0ce22b84d3c78ull, 0xee3f377409e308fcull, 0x9e38ea4b68dd6ba9ull, 0x2719abe669d6951full, 0xcbcdd66a8f790757ull, 0x1ae36e3ba053bb02ull }}, {{ 0x96e80d5b33045cacull, 0x4e782a8862de59d9ull, 0x2e3926f218a634a3ull, 0x8700b7002261d33cull, 0xf60a60299aba4967ull, 0x0ce24e5443454e1bull }}, {{ 0xe510858ffe2b9eb6ull, 0x10b1a953dcaf827full, 0xce3b8574f67e0e61ull, 0x4607260157d24059ull, 0x9c67c1a00b46de0bull, 0x80d70f4aa0b50d17ull }}, {{ 0xf2a5379fedb4331full, 0xa6f09d469edb18feull, 0x0e533691a0ec8fcaull, 0xbc477c0d6e368382ull, 0x1c0d904070c4ac70ull, 0x086698ea471282ecull }}, {{ 0x7a742c3f4909ff35ull, 0x856624c2348ef9f5ull, 0x8f4021b0493d9deaull, 0x5acad8864e212314ull, 0x1887a28467aebc67ull, 0x5401f926c6b91d39ull }}, {{ 0xc889ba78da63f80dull, 0x35fd6f960d95c396ull, 0x988150e2dc682b29ull, 0x8bec753f0d4b5ecdull, 0xf54c592c0cd35c09ull, 0x4813bb83c33b243aull }}, {{ 0xd56148b887e7b086ull, 0x1be65bdc87d9a3e3ull, 0xf50d28dc9c11af9cull, 0x773c947684f1b407ull, 0x94fb7bb88041985full, 0xd0c55325a04f6a4dull }}, {{ 0x55ccd7354f0ce53full, 0x16ff969d4e8066e6ull, 0x9283989e18b0dc19ull, 0xa85dcca13171084full, 0xd1d2d535028ff3baull, 0x27b53f78431a2707ull }}, {{ 0x5a0068151680f479ull, 0xe5fbe225110404ffull, 0xb923f62cf6e898faull, 0x93a9fe4bee6a531bull, 0x323c5412199f854aull, 0x8d147ab29f05864eull }}, {{ 0x840410d2e1098cb6ull, 0xfbd6d572aa2831f9ull, 0x3b679dc1a515f9ccull, 0xc4a3eef750273f15ull, 0xf65b48b5003b34e9ull, 0x82cccafa36373f0dull }}, {{ 0x2828a83cca5f7f1eull, 0xd664567aa591f3bfull, 0x520c299072dbc201ull, 0xae6755a9218876d4ull, 0x9f90d71202501121ull, 0x1bffedc61e28768bull }}, {{ 0x9196925fe7baf730ull, 0x5feb60ca77b38577ull, 0x34799fa47c959412ull, 0xd009589b4f54a44bull, 0x3ba866b41720ab50ull, 0x17ff49bd2d94a174ull }}, {{ 0xafe1b7bf0d4da7e5ull, 0xbf31c7e8ad0336abull, 0x0cc03c6cddd7c8b7ull, 0x205d7611194e6af0ull, 0x54940308e746b128ull, 0xeff8e163c7ce4e8aull }}, {{ 0xded12d7685088ef2ull, 0x77f1cf16c22022b4ull, 0x7f825c40aa6dd72dull, 0x43a69caafd102d60ull, 0x4dc81e5908c2eb91ull, 0x5fb8cde5ce0f1167ull }}, {{ 0xb42bc6a132559570ull, 0xaf7216e395415b10ull, 0xfb179a86a84a67c6ull, 0xa4821eade2a1c5c4ull, 0x09d12f7a579d33acull, 0xbd380afa0c96ae09ull }}, {{ 0x09b5c24bf757d664ull, 0xda74e4e3d48d8ea7ull, 0xceec094292e80dc2ull, 0x6d1532cada51b9b1ull, 0x622bdac76c2404beull, 0x64306dc47de2cc5aull }}, {{ 0x611996f7a96e5fe4ull, 0x8890f0e64d879286ull, 0x15385c99bd10899cull, 0x42d3fbec873140f2ull, 0xd5b68bca39682f70ull, 0xe9e449aceadbfb87ull }}, {{ 0xcaffe5ac9e4fbee7ull, 0x55a968ff074bb93full, 0xd4339e0162a5601dull, 0x9c47d73d47ec8974ull, 0x592175e63e11da62ull, 0x22eae0c12c97d34eull }}, {{ 0xedfef8be2f1d7505ull, 0x589e19f648f53c7dull, 0x4a042c0dda75c125ull, 0x1ace6864cf3d5e90ull, 0x7b4e9afe6cb287daull, 0x5d2cc78bbdee410full }}, {{ 0x4bf5b76dd7269234ull, 0x762d039ed9945cebull, 0xe429b88a88998b75ull, 0x0c1013f01865b1a2ull, 0xd1120df03ef94e85ull, 0xa3bfcb756b4e8a9aull }}, {{ 0xf7992a4a6781b60bull, 0x9dc224347fcba130ull, 0xe9a1356955ff7296ull, 0x78a0c760f3f8f05cull, 0x2ab48b6275bd1132ull, 0x657df29631116a0cull }}, {{ 0xabfba6e80b111c6aull, 0x29956a0cfdf44be9ull, 0x204c161d5bfa79e2ull, 0xb647c9c987b963a1ull, 0xab0d71d89962abf8ull, 0xf6eb79ddeaae2479ull }}, {{ 0xb7d485106eab1c21ull, 0x9fd62481eb8af720ull, 0x42f8dd2597c8c2d5ull, 0x1ecde1df4d3de44bull, 0xae867275fddab7b7ull, 0xa532c2ab2acd6cc0ull }}, {{ 0x2e4d32a452af1947ull, 0x3e5d6d13336da747ull, 0x9db8a377edd79c58ull, 0x340ad2b9046aeaf0ull, 0xd140789bea8b2d27ull, 0x73fb9aafac063f86ull }}, {{ 0xcf03fa6b3ad6fcc5ull, 0x6fa642c0024888c7ull, 0x293662af4a6c1b72ull, 0x086c3b3a2c2d2d66ull, 0x2c84b617296fc388ull, 0x87d40adcb83e7b44ull }}, {{ 0x1627c8304c65dfb6ull, 0x5c7e9b8016d557ceull, 0x9c1fdad8e8391278ull, 0x543a5045b9c3c5fdull, 0xbd2f1ce79e5da350ull, 0x4e486c9f3270d0a9ull }}, {{ 0xdd8dd1e2fbfabd19ull, 0x9cf21300e4556e0cull, 0x193e8c79123ab8b3ull, 0x4a4722b941a5bbe8ull, 0x63d7210c2fa86123ull, 0x0ed43e37f86826a1ull }}, {{ 0xa78a32ddd7cb62f8ull, 0x2174be08eb564c80ull, 0xfc717cbab64b3704ull, 0xe6c75b3c90795710ull, 0xe6674a79dc93cb60ull, 0x944a6e2fb411824dull }}, {{ 0x8b65fcaa6df1ddafull, 0x4e8f6c59315efd06ull, 0xdc6edf4b1ef02629ull, 0x03c9905da4bd66a9ull, 0x0008e8c29dc5f1c9ull, 0xcae84ddd08af170bull }}, {{ 0x71fbdea84b72a8d6ull, 0x119a3b7bedb5e241ull, 0x9c54b8ef35617d9dull, 0x25dfa3a86f6602a2ull, 0x0059179a29bb71daull, 0xed130aa256d6e66eull }}, {{ 0x73d6b292f27a9861ull, 0xb00652d7491ad68eull, 0x1b4f395815cee822ull, 0x7abc649459fc1a5aull, 0x037aec05a1527285ull, 0x42be6a576465004cull }}, {{ 0x8662f9bd78c9f3c6ull, 0xe03f3c68db0c6190ull, 0x11183d70da15115aull, 0xcb5bedcb83d90785ull, 0x22cd38384d387936ull, 0x9b702769ebf202f8ull }}, {{ 0x3fddc166b7e385c0ull, 0xc2785c188e7bcfa5ull, 0xaaf2666884d2ad8cull, 0xf19749f3267a4b32ull, 0x5c0432330434bc23ull, 0x12618a2337741db1ull }}, {{ 0x7ea98e032ee3397bull, 0x98b398f590d61c74ull, 0xad780015303ac77full, 0x6fe8e37f80c6effaull, 0x9829f5fe2a0f5967ull, 0xb7cf65602a8928edull }}, {{ 0xf29f8c1fd4e03ecfull, 0xf703f997a85d1c8cull, 0xc6b000d3e24bcafbull, 0x5f18e2fb07c55fcaull, 0xf1a39beda4997e0aull, 0x2e19f5c1a95b9947ull }}, {{ 0x7a3b793e50c2741aull, 0xa627bfec93a31d81ull, 0xc2e00846d6f5edd7ull, 0xb6f8ddce4db5bdebull, 0x706417486dfeec67ull, 0xcd0399909d93fccfull }}, {{ 0xc652bc6f279888ffull, 0x7d8d7f3dc45f270eull, 0x9cc052c4659b4a6cull, 0x25b8aa0f09196b35ull, 0x63e8e8d44bf53c0dull, 0x0223ffa627c7e01aull }}, {{ 0xbf3b5c578bf559f9ull, 0xe786f869abb78693ull, 0x1f833babf810e83cull, 0x7936a4965afe3018ull, 0xe719184af7945883ull, 0x1567fc7d8dcec107ull }}, {{ 0x78519b6b779583baull, 0x0b45b420b52b41c5ull, 0x3b2054b7b0a91261ull, 0xbc226ddf8dede0f1ull, 0x06faf2edabcb7522ull, 0xd60fdce78a138a4full }}, {{ 0xb3301232abd72543ull, 0x70b9094713b091b6ull, 0x4f434f2ce69ab7caull, 0x59584abb8b4ac96cull, 0x45cd7d48b5f2935bull, 0x5c9ea10b64c36716ull }}, {{ 0xffe0b5fab667749eull, 0x673a5cc6c4e5b122ull, 0x18a117c1020b2de8ull, 0x7d72eb5370ebde3bull, 0xba06e4d71b79c191ull, 0x9e324a71efa206deull }}, {{ 0xfec71bcb200a8e2cull, 0x08479fc3b0f8eb5dull, 0xf64aed8a146fcb14ull, 0xe67d31426936ae4eull, 0x4444f06712c18faeull, 0x2df6e8735c5444b3ull }}, {{ 0xf3c715ef40698dbaull, 0x52cc3da4e9b931abull, 0x9eed4764cc5deec8ull, 0x00e3ec981c22cf15ull, 0xaab16406bb8f9cd5ull, 0xcba514819b4aaf00ull }}, {{ 0x85c6db58841f8943ull, 0x3bfa6871213bf0b7ull, 0x3544c9effbab53d3ull, 0x08e73df1195c16d8ull, 0xaaede843539c2052ull, 0xf472cd1010ead606ull }}, {{ 0x39c49175293b5c9eull, 0x57c8146b4c57672bull, 0x14afe35fd4b14640ull, 0x59086b6afd98e472ull, 0xad4b12a144194334ull, 0x8c7c02a0a92c5c42ull }}, {{ 0x41adae939c519e2bull, 0x6dd0cc30fb6a07b0ull, 0xcedee1be4eecbe83ull, 0x7a54322de7f8ec74ull, 0xc4eeba4ca8fca00bull, 0x7cd81a469bbb9a9aull }}, {{ 0x90c8d1c41b302dafull, 0x4a27f9e9d2244ce2ull, 0x14b4d16f153f7122ull, 0xc749f5cb0fb93c90ull, 0xb15346fe99de4072ull, 0xe07106c215540a0bull }}, {{ 0xa7d831a90fe1c8d8ull, 0xe58fc322356b00d9ull, 0xcf102e56d47a6b56ull, 0xc8e399ee9d3c5da0ull, 0xed40c5f202ae847bull, 0xc46a4394d5486474ull }}, {{ 0x8e71f09a9ed1d871ull, 0xf79d9f56162e0880ull, 0x16a1cf644cc83164ull, 0xd8e40352245ba848ull, 0x4487bb741ad12cd5ull, 0xac26a3d054d3ec91ull }}, {{ 0x9073660a34327469ull, 0xac28395cddcc5505ull, 0xe25219eaffd1edf1ull, 0x78e821356b9492d0ull, 0xad4d52890c2bc05aull, 0xb982662350473dacull }}, {{ 0xa481fc6609f88c1dull, 0xb9923da0a9fb5237ull, 0xd735032dfe334b70ull, 0xb9114c1633cdbc28ull, 0xc505395a79b58388ull, 0x3f17fd6122c868beull }}, {{ 0x6d13dbfc63b5791full, 0x3fb66846a3d1362cull, 0x68121fcbee00f267ull, 0x3aacf8de06095998ull, 0xb2343d88c1172357ull, 0x76efe5cb5bd41773ull }}, {{ 0x42c697dbe516bb39ull, 0x7d2012c2662c1dbcull, 0x10b53df74c097808ull, 0x4ac1b8ac3c5d7ff4ull, 0xf60a67578ae76168ull, 0xa55ef9f19648ea84ull }}, {{ 0x9bc1ee96f2e3503aull, 0xe340bb97fdb9295aull, 0xa7146ba8f85eb054ull, 0xeb9136ba5ba6ff88ull, 0x9c68096b6d09ce12ull, 0x75b5c36fded92931ull }}, {{ 0x159351e57ce12247ull, 0xe08753efe93b9d8aull, 0x86cc3499b3b2e350ull, 0x33ac23479485fb56ull, 0x1c105e3242620cbdull, 0x9919a25eb47b9bf0ull }}, {{ 0xd7c132f6e0cb56c6ull, 0xc549475f1c542764ull, 0x43fa0e0104fce128ull, 0x04b960cbcd3bd161ull, 0x18a3adf697d47f64ull, 0xfb0057b30cd41761ull }}, {{ 0x6d8bfda4c7f163bfull, 0xb4dcc9b71b4989f0ull, 0xa7c48c0a31e0cb97ull, 0x2f3dc7f604562dccull, 0xf664cba1ee4cf9e8ull, 0xce036cfe8048e9caull }}, {{ 0x4777e86fcf6de578ull, 0x109fe12710df6364ull, 0x8dad7865f2c7f3edull, 0xd869cf9c2b5dc9feull, 0x9feff4534f01c311ull, 0x0c2241f102d921edull }}, {{ 0xcaaf145e1a4af6aeull, 0xa63ecb86a8b9e1eaull, 0x88c6b3fb7bcf8742ull, 0x74221c19b1a9e3f1ull, 0x3f5f8b4116119eb2ull, 0x7956936a1c7b5348ull }}, {{ 0xead6cbad06eda2caull, 0x7e73f3429742d32bull, 0x57c307d2d61b489aull, 0x89551900f0a2e76full, 0x79bb708adcb032f8ull, 0xbd61c2251cd140d2ull }}, {{ 0x2c63f4c245485be9ull, 0xf0878099e89c3fb7ull, 0x6d9e4e3c5d10d608ull, 0x5d52fa09665d0a59ull, 0xc152656c9ee1fdb5ull, 0x65d19573202c8838ull }}, {{ 0xbbe78f96b4d39716ull, 0x654b0603161a7d27ull, 0x482f0e5ba2a85c59ull, 0xa53dc45dffa2677eull, 0x8d37f63e34d3e915ull, 0xfa2fd67f41bd5237ull }}, {{ 0x570b9be31043e6d9ull, 0xf4ee3c1edd08e38dull, 0xd1d68f945a939b7dull, 0x7469ababfc580aeeull, 0x842f9e6e10471ad8ull, 0xc5de60f89165362bull }}, {{ 0x667416dea2a7047bull, 0x914e5934a258e385ull, 0x32619bcb89c412ebull, 0x8c20b4b7db706d54ull, 0x29dc304ca2c70c74ull, 0xbaafc9b5adf41db3ull }}, {{ 0x0088e4b25a862cd0ull, 0xad0f7c0e5778e336ull, 0xf7d015f361a8bd33ull, 0x79470f2e92644549ull, 0xa299e2fe5bc67c8dull, 0x4adde118cb8928ffull }}, {{ 0x0558eef7893dc023ull, 0xc29ad88f6ab8e01cull, 0xae20db81d0976404ull, 0xbcc697d1b7eab4e3ull, 0x5a02ddef95c0dd86ull, 0xecaacaf7f35b99fcull }}, {{ 0x357955ab5c698162ull, 0x9a0c759a2b38c118ull, 0xcd48931225e9e82full, 0x5fc1ee312f2b10e4ull, 0x841cab5bd988a743ull, 0x3eabedaf819403dbull }}, {{ 0x16bd58b19c1f0dd0ull, 0x047c9805b0378af2ull, 0x04d5beb57b2311dcull, 0xbd934debd7aea8f0ull, 0x291eb1967f5688a1ull, 0x72b748db0fc82693ull }}, {{ 0xe36576f019368a21ull, 0x2cddf038e22b6d74ull, 0x30597316cf5eb298ull, 0x67c10b366cd29960ull, 0x9b32efe0f9615651ull, 0x7b28d88e9dd181bfull }}, {{ 0xe1f6a560fc21654bull, 0xc0ab6238d5b24690ull, 0xe37e7ee419b2f9f1ull, 0x0d8a70204039fdc1ull, 0x0ffd5ec9bdcd5f2eull, 0xcf9875922a2f117cull }}, {{ 0xd3a275c9d94df4eeull, 0x86b1d63858f6c1a8ull, 0xe2f0f4e900fdc371ull, 0x876861428243e992ull, 0x9fe5b3e16a05b7ccull, 0x1bf497b5a5d6aed8ull }}, {{ 0x445899e27d0b914dull, 0x42f25e3379a39098ull, 0xdd69911a09e9a26full, 0x4a13cc9916a71fbcull, 0x3ef906ce24392dfdull, 0x178ded187a62d476ull }}, {{ 0xab7602d8e273ad06ull, 0x9d77ae02c063a5f2ull, 0xa61fab0463205858ull, 0xe4c5fdfae2873d60ull, 0x75ba440d6a3bcbe4ull, 0xeb8b42f4c7dc4c9eull }}, {{ 0xb29c1c78d884c241ull, 0x26accc1b83e47b7aull, 0x7d3cae2bdf437376ull, 0xefbbebccd94865c6ull, 0x9946a8862655f6f0ull, 0x33709d8fce9afe30ull }}, {{ 0xfa191cb8752f968aull, 0x82bff91326ecd2caull, 0xe45ecdb6b8a2829dull, 0x5d5736007cd3f9c0ull, 0xfcc2953d7f5ba569ull, 0x0266279e120dede5ull }}, {{ 0xc4fb1f3493dbe162ull, 0x1b7fbabf85403bedull, 0xebb4092336591a27ull, 0xa5681c04e047c188ull, 0xdf99d466f994761dull, 0x17fd8c2cb48b4afbull }}, {{ 0xb1cf380dc696cdd2ull, 0x12fd4b7b34825749ull, 0x35085b601f7b0587ull, 0x76111830c2cd8f59ull, 0xbc024c05bfcc9d28ull, 0xefe779bf0d70edd6ull }}, {{ 0xf2183089c1e40a2full, 0xbde4f2d00d1768e0ull, 0x125391c13ace3746ull, 0x9caaf1e79c07997cull, 0x5816f8397dfe2394ull, 0x5f0ac17686694a63ull }}, {{ 0x74f1e56192e865daull, 0x6af17c2082ea18c9ull, 0xb743b18c4c0e28c3ull, 0x1ead730c184bfed8ull, 0x70e5b23eebed63ceull, 0xb66b8ea1401ce7e1ull }}, {{ 0x9172f5cfbd13fa81ull, 0x2d6ed9451d24f7deull, 0x28a4ef7af88d97a2ull, 0x32c67e78f2f7f477ull, 0x68f8f6753745e60dull, 0x2033924c81210eceull }}, {{ 0xae7d9a1d62c7c90eull, 0xc6547cb32371aeb1ull, 0x96715acdb587ec55ull, 0xfbc0f0b97daf8ca7ull, 0x19b9a09428bafc83ull, 0x4203b6fd0b4a9410ull }}, {{ 0xd0e80525dbcdda89ull, 0xbf4cdeff6270d2f0ull, 0xe06d8c09174f3b59ull, 0xd589673ee8db7e8bull, 0x014045c9974ddd27ull, 0x942525e270e9c8a1ull }}, {{ 0x2910337a960a8958ull, 0x7900b5f9d8683d68ull, 0xc447785ae9185181ull, 0x575e08751892f176ull, 0x0c82b9dfe90aa38eull, 0xc9737ad86921d64aull }}, {{ 0x9aa202c9dc695d6eull, 0xba071bc274126611ull, 0xaacab38d1af32f0eull, 0x69ac5492f5bd6ea3ull, 0x7d1b42bf1a6a638full, 0xde82cc741b525ee4ull }}, {{ 0x0a541be29c1da64cull, 0x4447159888b7fcb0ull, 0xabeb03830d7fd693ull, 0x20bb4dbd99665264ull, 0xe3109b770827e39aull, 0xb11bfc891137b4ecull }}, {{ 0x674916da19287efbull, 0xaac6d7f5572fdee0ull, 0xb72e231e86fe61c0ull, 0x47510967fdff37eeull, 0xdea612a6518ee405ull, 0xeb17dd5aac2d1140ull }}, {{ 0x08dae484fb94f5ceull, 0xabc46f9567deb4c4ull, 0x27cd5f3145efd186ull, 0xc92a5e0febf82f53ull, 0xb27cba7f2f94e834ull, 0x2eeea58ab9c2ac88ull }}, {{ 0x588ced31d3d19a0dull, 0xb5ac5bd60eb30fa8ull, 0x8e05b7ecbb5e2f42ull, 0xdba7ac9f37b1d93full, 0xf8df48f7dbd1120full, 0xd552776b419abd56ull }}, {{ 0x758143f246300486ull, 0x18bb965c92fe9c93ull, 0x8c392f3f51add89bull, 0x948cbe382cf27c7bull, 0xb8b8d9ae962ab49eull, 0x5538aa30900b6565ull }}, {{ 0x970ca776bde02d3eull, 0xf753df9dbdf21dc2ull, 0x7a3bd87930ca760eull, 0xcd7f6e31c178dcd3ull, 0x373880d1ddab0e31ull, 0x5436a5e5a071f5f9ull }}, {{ 0xe67e8aa36ac1c46full, 0xa946bc296b752999ull, 0xc65674bbe7e89c95ull, 0x06fa4df18eb8a042ull, 0x28350832a8ae8df2ull, 0x4a227af844739bbcull }}, {{ 0x00f16a622b91ac52ull, 0x9cc3599e3293a003ull, 0xbf608f570f161dd8ull, 0x45c70b6f9336429bull, 0x921251fa96d18b74ull, 0xe558cdb2ac841559ull }}, {{ 0x096e27d5b3b0bb36ull, 0x1fa1802df9c4401eull, 0x79c5996696dd2a76ull, 0xb9c6725bc01e9a15ull, 0xb4b733c9e42f728aull, 0xf57808fabd28d57full }}, {{ 0x5e4d8e5904e7501bull, 0x3c4f01cbc1aa812cull, 0xc1b7fe01e4a3a89dull, 0x41c07795813204d6ull, 0x0f2805e2e9da796bull, 0x96b059cb639856fdull }}, {{ 0xaf078f7a3109210cull, 0x5b1611f590a90bbbull, 0x912fec12ee649624ull, 0x9184abd70bf43063ull, 0x97903add2288be30ull, 0xe2e381f1e3f365e2ull }}, {{ 0xd64b9ac5ea5b4a74ull, 0x8edcb397a69a7554ull, 0xabdf38bd4feddd6bull, 0xaf2eb6667789e3e3ull, 0xeba24ca359576de5ull, 0xdce31372e781fad9ull }}, {{ 0x5ef40bbb2790e885ull, 0x949f03ec82089550ull, 0xb6b837651f4aa633ull, 0xd7d32000ab62e6e4ull, 0x3456fe617d6a4af8ull, 0xa0dec27d0b13cc83ull }}, {{ 0xb588754f8ba91536ull, 0xce36273d1455d523ull, 0x233229f338ea7e03ull, 0x6e3f4006b1dd04efull, 0x0b65efcee626edb8ull, 0x48b398e26ec5fd20ull }}, {{ 0x1754951b749ad41bull, 0x0e1d8862cb5a5365ull, 0x5ff5a3803928ec26ull, 0x4e788042f2a23157ull, 0x71fb5e14fd854934ull, 0xd703f8d853bbe340ull }}, {{ 0xe94dd3128e0c490cull, 0x8d2753dbf18741f2ull, 0xbf9863023b99397cull, 0x10b5029d7a55ed69ull, 0x73d1acd1e734dc0bull, 0x6627b8734556e084ull }}, {{ 0x1d0a3eb98c7ada7dull, 0x838946976f48937dull, 0x7bf3de1653fc3eddull, 0xa7121a26c75b4621ull, 0x8630c0330810986eull, 0xfd8d3480b564c52cull }}, {{ 0x2266733f7ccc88e2ull, 0x235cc1ea58d5c2e3ull, 0xd786acdf47da74a7ull, 0x86b50583c990bd4eull, 0x3de781fe50a5f452ull, 0xe7840d0715efb3bdull }}, {{ 0x5800807adffd58d3ull, 0x619f932778599cdfull, 0x6b42c0b8ce888e87ull, 0x43123725dfa76514ull, 0x6b0b13ef267b8b39ull, 0x0b288246db5d0564ull }}, {{ 0x700504ccbfe57839ull, 0xd03bbf8ab38020b9ull, 0x309b873811559149ull, 0x9eb6277abc89f2ccull, 0x2e6ec75780d3703cull, 0x6f9516c491a235ecull }}, {{ 0x60322fff7ef6b23cull, 0x22557b6b0301473eull, 0xe6134830ad57ace2ull, 0x331d8acb5d637bf9ull, 0xd053c96b0842625eull, 0x5bd2e3adb0561b39ull }}, {{ 0xc1f5dffaf5a2f655ull, 0x5756d22e1e0cc86full, 0xfcc0d1e6c56cc0d5ull, 0xff276bf1a5e2d7c2ull, 0x2345de2e5297d7adull, 0x963ce4c8e35d1042ull }}, {{ 0x939abfcd985d9f4eull, 0x696435cd2c7fd45dull, 0xdf883303b63f8855ull, 0xf78a37707adc6d9dull, 0x60baadcf39ee6ccbull, 0xde60efd8e1a2a295ull }}, {{ 0xc40b7e07f3a83909ull, 0x1dea1a03bcfe4ba7ull, 0xbb51fe251e7b5356ull, 0xab662a64cc9c482aull, 0xc74aca1843503ff7ull, 0xafc95e78d05a59d5ull }}, {{ 0xa872ec4f84923a5full, 0x2b25042561eef48dull, 0x5133ed7330d1415dull, 0xb1fda7effe1ad1abull, 0xc8ebe4f2a1227facull, 0xddddb0b823878259ull }}, {{ 0x947d3b1b2db647b3ull, 0xaf722975d3558d88ull, 0x2c07467fe82c8da3ull, 0xf3e88f5fed0c30b1ull, 0xd936f17a4b58fcbeull, 0xaaa8e731634b1781ull }}, {{ 0xcce44f0fc91ecd01ull, 0xda759e9a41578755ull, 0xb848c0ff11bd8864ull, 0x871599bf4279e6ebull, 0x7c256ec6f179df75ull, 0xaa9907ede0eeeb12ull }}, {{ 0x00eb169ddb340207ull, 0x889832068d6b495aull, 0x32d789f6b16753f0ull, 0x46d8017898c30535ull, 0xd97653c56ec2ba97ull, 0xa9fa4f4ac9552eb8ull }}, {{ 0x092ee22a90081441ull, 0x55f1f4418630dd84ull, 0xfc6b63a2ee094765ull, 0xc4700eb5f79e3413ull, 0x7e9f45b6539b49e8ull, 0xa3c718ebdd53d338ull }}, {{ 0x5bd4d5a9a050ca8full, 0x5b738a8f3de8a728ull, 0xdc31e45d4c5cc9f5ull, 0xac60931bac2e08c7ull, 0xf238b91f4410e317ull, 0x65c6f936a5464034ull }}, {{ 0x965058a04327e992ull, 0x928369986b168793ull, 0x99f2eba4fb9fe395ull, 0xbbc5bf14b9cc57ceull, 0x76373b38a8a8deecull, 0xf9c5bc2274be8211ull }}, {{ 0xdf2376429f8f1fb8ull, 0xb9221ff42ee14bc3ull, 0x037d3471d43ee3d7ull, 0x55b976cf41fb6e12ull, 0x9e2850369698b53full, 0xc1b959588f7114aeull }}, {{ 0xb7629e9a3b973d2full, 0x3b553f89d4ccf5a6ull, 0x22e40c724a74e66dull, 0x593ea41893d24cb4ull, 0x2d932221e1f71479ull, 0x913d7d759a6aced2ull }}, {{ 0x29da320653e863d9ull, 0x51547b6250019883ull, 0x5ce87c76e8910044ull, 0x7c7268f5c636ff09ull, 0xc7bf5552d3a6ccbdull, 0xac66e698082c1435ull }}, {{ 0xa285f43f4713e679ull, 0x2d4cd1d7200ff51full, 0xa114dca515aa02abull, 0xdc781999be25f65dull, 0xcd79553c4483ff66ull, 0xbc0501f051b8ca19ull }}, {{ 0x593b8a78c6c700b8ull, 0xc5003267409f933cull, 0x4ad09e72d8a41aafull, 0x9cb100016d7b9fa8ull, 0x06bd545aad27fa04ull, 0x583213633137e502ull }}, {{ 0x7c5368b7c3c60731ull, 0xb201f808863bc05bull, 0xec26307c76690addull, 0x1eea000e46d43c92ull, 0x43654b8ac38fc42eull, 0x71f4c1dfec2ef214ull }}, {{ 0xdb42172da5bc47eaull, 0xf413b0553e558392ull, 0x397de4dca01a6ca8ull, 0x3524008ec44a5dbdull, 0xa1f4f36ba39da9cdull, 0x738f92bf39d574caull }}, {{ 0x9094e7c8795acf25ull, 0x88c4e3546f5723bcull, 0x3eeaf09e41083e99ull, 0x13680593aae7a964ull, 0x539182346428a204ull, 0x839bbb7842568feaull }}, {{ 0xa5d10dd4bd8c1775ull, 0x57b0e14c5967655dull, 0x752d662e8a5271ffull, 0xc21037c4ad0c9deaull, 0x43af160be9965428ull, 0x241552b297619f27ull }}, {{ 0x7a2a8a4f6778ea91ull, 0x6ce8ccfb7e09f5a8ull, 0x93c5fdd1673873f9ull, 0x94a22daec27e2b28ull, 0xa4d6dc771fdf4997ull, 0x68d53af9e9d03788ull }}, {{ 0xc5a9671a0ab929adull, 0x411801d2ec639894ull, 0xc5bbea2e083487beull, 0xce55c8d398edaf95ull, 0x70649ca73eb8dfebull, 0x18544dc322222b56ull }}, {{ 0xb89e07046b3ba0c3ull, 0x8af0123d3be3f5cfull, 0xb95725cc520d4d6eull, 0x0f59d843f948dbd9ull, 0x63ee1e887338bf36ull, 0xf34b099f5555b160ull }}, {{ 0x362c462c305447a0ull, 0x6d60b66456e79a1dull, 0x3d6779fb34850651ull, 0x998272a7bcd89681ull, 0xe74d31548037781cull, 0x80ee60395558edc3ull }}, {{ 0x1dbabdb9e34acc42ull, 0x45c71feb650c0524ull, 0x660ac3d00d323f2eull, 0xff187a8d6075e10cull, 0x0903ed4d022ab11dull, 0x094fc23d557949a7ull }}, {{ 0x294b6942e0ebfa97ull, 0xb9c73f31f2783369ull, 0xfc6ba62083f677ceull, 0xf6f4c985c49aca7bull, 0x5a27450215aaeb2bull, 0x5d1d966556bce086ull }}, {{ 0x9cf21c9cc937c9e8ull, 0x41c877f378b2021bull, 0xdc347d4527a0ae13ull, 0xa58fdf39ae0be8d7ull, 0x8588b214d8ad2fb7ull, 0xa327dff56360c53full }}, {{ 0x21751e1fdc2de30dull, 0x91d4af82b6f41514ull, 0x9a0ce4b38c46ccc0ull, 0x779eb840cc77186eull, 0x3756f4d076c3dd2cull, 0x5f8ebf95e1c7b47bull }}, {{ 0x4e932d3e99cade7eull, 0xb24edb1b2588d2c9ull, 0x0480ef037ac3ff85ull, 0xac333287fca6f452ull, 0x29659024a3a6a3bcull, 0xbb937bdad1cd0cd0ull }}, {{ 0x11bfc47201ecb0eaull, 0xf7148f0f77583bddull, 0x2d095622cba7fb38ull, 0xb9fff94fde858b34ull, 0x9df7a16e6482655eull, 0x53c2d68c32028021ull }}, {{ 0xb17dac74133ee920ull, 0xa6cd969aa97256a2ull, 0xc25d5d5bf48fd039ull, 0x43ffbd1eb1377009ull, 0x2bac4e4fed17f5b3ull, 0x459c6179f4190150ull }}, {{ 0xeee8bc88c0751b3cull, 0x8407e20a9e77625aull, 0x97a5a5978d9e2240ull, 0xa7fd6332ec2a6061ull, 0xb4bb0f1f42ef9900ull, 0xb81bcec388fa0d21ull }}, {{ 0x55175d578493105aull, 0x284ed46a30a9d78dull, 0xec7877eb882d5685ull, 0x8fe5dffd39a7c3cfull, 0x0f4e97389d5bfa06ull, 0x311613a359c48351ull }}, {{ 0x52e9a56b2dbea385ull, 0x93144c25e6a26b85ull, 0x3cb4af3351c56133ull, 0x9efabfe4408da61full, 0x9911e8362597c441ull, 0xeadcc46181ad212aull }}, {{ 0x3d20762fc972632full, 0xbecaf97b02583335ull, 0x5f0ed80131b5cc03ull, 0x35cb7eea85887d38ull, 0xfab3121d77edaa90ull, 0x2c9fabcf10c34ba9ull }}, {{ 0x63449dddde77dfd9ull, 0x73edbece17720014ull, 0xb694700bf119f825ull, 0x19f2f5293754e433ull, 0xcafeb526af48a9a2ull, 0xbe3cb616a7a0f4a3ull }}, {{ 0xe0ae2aaab0aebe7bull, 0x8749740cea7400cbull, 0x21cc60776b03b176ull, 0x037d939c2950ea05ull, 0xedf31382d8d6a055ull, 0x6e5f1ce28c498e65ull }}, {{ 0xc6cdaaaae6d370cdull, 0x48de8881288807f6ull, 0x51fbc4aa2e24eea1ull, 0x22e7c4199d292433ull, 0x4b7ec31c78624352ull, 0x4fb720d97adf8ffbull }}, {{ 0xc408aaad044267feull, 0xd8b1550b95504fa3ull, 0x33d5aea5cd71524cull, 0x5d0da900239b6a01ull, 0xf2f39f1cb3d6a135ull, 0x1d27487eccbb9fd0ull }}, {{ 0xa856aac22a980febull, 0x76ed5273d5231c65ull, 0x0658d27a066d3700ull, 0xa2889a016412240cull, 0x7d84371f06624c15ull, 0x2388d4f3ff543e29ull }}, {{ 0x9362ab95a9f09f31ull, 0xa5453886535f1bf8ull, 0x3f7838c440442604ull, 0x5956040de8b56878ull, 0xe72a27363fd6f8d8ull, 0x63585187f94a6d9eull }}, {{ 0xc1dab3d8a36637ebull, 0x74b4353f41b717b5ull, 0x7ab237aa82a97c2eull, 0x7d5c288b171614b2ull, 0x07a5881e7e65b873ull, 0xe1732f4fbce84835ull }}, {{ 0x928b067661fe2f33ull, 0x8f0a14789126ed19ull, 0xcaf62ca91a9ed9d0ull, 0xe599956ee6dccef8ull, 0x4c775130eff93482ull, 0xce7fd91d6112d212ull }}, {{ 0xb96e409fd3edd7fbull, 0x9664ccb5ab8542ffull, 0xed9dbe9b0a348225ull, 0xf7ffd65504a015b7ull, 0xfca92be95fbc0d1cull, 0x10fe7b25cabc34b6ull }}, {{ 0x3e4e863e474a6fcbull, 0xdfefff18b3349dfdull, 0x4829720e660d1577ull, 0xaffe5f522e40d92full, 0xde9bb71dbd588321ull, 0xa9f0cf79eb5a0f25ull }}, {{ 0x6f113e6ec8e85debull, 0xbf5ff6f7000e2be4ull, 0xd19e748ffc82d6aeull, 0xdfefb935ce887bd8ull, 0xb215272965751f50ull, 0xa3681ac33184977aull }}, {{ 0x56ac7053d913ab32ull, 0x79bfa5a6008db6ecull, 0x30308d9fdd1c62d3ull, 0xbf5d3c1a1154d678ull, 0xf4d3879df6933928ull, 0x62110b9fef2deacaull }}, {{ 0x62bc63467ac4aff7ull, 0xc17c787c0589253bull, 0xe1e5883ea31bdc42ull, 0x79a45904ad5060b1ull, 0x90434c2ba1c03b97ull, 0xd4aa743f57cb2bedull }}, {{ 0xdb5be0c0cbaedfa5ull, 0x8edcb4d8375b7451ull, 0xd2f752725f169a9bull, 0xc06b7a2ec523c6f2ull, 0xa2a0f9b4518253eaull, 0x4ea88a796defb747ull }}, {{ 0x9196c787f4d4bc72ull, 0x949f107229928b32ull, 0x3da93877b6e20a13ull, 0x8432c5d3b365c57cull, 0x5a49c10b2f17472bull, 0x129568be4b5d28ccull }}, {{ 0xafe3cb4f904f5c70ull, 0xce36a4759fb96ff9ull, 0x689c34ad24d464c3ull, 0x29fbba4501f9b6daull, 0x86e18a6fd6e8c7b3ull, 0xb9d6176ef1a397fbull }}, {{ 0xdee5f11ba3199c62ull, 0x0e226c983d3e5fc0ull, 0x161a0ec3704befa6ull, 0xa3d546b213c12488ull, 0x44cf685e6517ccffull, 0x425cea557063efd3ull }}, {{ 0xb4fb6b145f001bd6ull, 0x8d583df2646fbd88ull, 0xdd0493a262f75c7cull, 0x6654c2f4c58b6d50ull, 0xb01a13aff2ee01fcull, 0x97a1275663e75e40ull }}, {{ 0x11d22ecbb6011659ull, 0x85726b77ec5d6757ull, 0xa22dc457dda99cddull, 0xff4f9d8fb7724528ull, 0xe104c4df7d4c13dbull, 0xec4b895fe709ae86ull }}, {{ 0xb235d3f51c0adf77ull, 0x367832af3ba60966ull, 0x55c9ab6ea8a020a7ull, 0xf91c279d2a76b396ull, 0xca2fb0bae4f8c697ull, 0x3af35dbf0660d144ull }}, {{ 0xf61a4793186cbaa4ull, 0x20b1fad8547c5e02ull, 0x59e0b25296414688ull, 0xbb198c23a8a303dfull, 0xe5dce74cf1b7c1efull, 0x4d81a9763fc82cafull }}, {{ 0x9d06cbbef43f4a67ull, 0x46f3cc734cdbac1dull, 0x82c6f739de8cc151ull, 0x4eff7964965e26b9ull, 0xfaa10901712d935dull, 0x07109e9e7dd1bedeull }}, {{ 0x2243f5758a78e809ull, 0xc585fc810094b928ull, 0x1bc5a842b17f8d2cull, 0x15fabdeddfad833full, 0xca4a5a0e6bc7c1a5ull, 0x46a63230ea3174b5ull }}, {{ 0x56a7969768b91058ull, 0xb73bdd0a05cf3b91ull, 0x15b8929aeefb83bfull, 0xdbcb6b4abcc72077ull, 0xe6e7849035cd9072ull, 0xc27df5e925ee8f19ull }}, {{ 0x628be1ea173aa374ull, 0x2856a2643a1853adull, 0xd935ba0d55d3257dull, 0x95f230eb5fc744a6ull, 0x050b2da21a07a47cull, 0x98eb9b1b7b519703ull }}, {{ 0xd976d324e84a6287ull, 0x936257ea44f344c5ull, 0x7c1944855a3f76e3ull, 0xdb75e931bdc8ae84ull, 0x326fc855044c6cddull, 0xf9340f12d12fe61eull }}, {{ 0x7ea43f7112e7d949ull, 0xc1d76f26b180afbaull, 0xd8fcad35867aa4e3ull, 0x929b1bf169d6d12cull, 0xf85dd3522afc40aaull, 0xbc0896bc2bdefd2dull }}, {{ 0xf26a7a6abd0e7cdeull, 0x926a5782ef06dd48ull, 0x79dec41740ca70e5ull, 0xba0f176e22642bc0ull, 0xb3aa4135adda86a9ull, 0x5855e359b6b5e3cbull }}, {{ 0x7828c82b6290e0acull, 0xb8276b1d5644a4d9ull, 0xc2b3a8e887e868f7ull, 0x4496ea4d57e9b584ull, 0x04a68c18ca8942a1ull, 0x735ae181231ae5f5ull }}, {{ 0xb197d1b1d9a8c6b6ull, 0x318a2f255eae707eull, 0x9b0499154f1419adull, 0xade527056f21172full, 0x2e8178f7e95c9a4cull, 0x818ccf0b5f0cfb92ull }}, {{ 0xefee30f28097c31dull, 0xef65d775b2d064f2ull, 0x0e2dfad516c900c3ull, 0xcaf38636574ae7dcull, 0xd10eb9af1d9e06feull, 0x0f801671b681d3b5ull }}, {{ 0x5f4de97905ed9f22ull, 0x59fa6a98fc23f17dull, 0x8dcbcc52e3da07a7ull, 0xed833e1f68ed0e98ull, 0x2a9340d7282c45f3ull, 0x9b00e0712112451aull }}, {{ 0xb90b1eba3b483753ull, 0x83c829f9d9676ee5ull, 0x89f5fb3ce6844c89ull, 0x47206d3a194291f5ull, 0xa9c0886791babb87ull, 0x0e08c46b4ab6b305ull }}, {{ 0x3a6f334650d2293aull, 0x25d1a3c27e0a54f9ull, 0x639bd061012afd5full, 0xc7444444fc99b397ull, 0xa185540bb14b5348ull, 0x8c57ac30eb22fe38ull }}, {{ 0x485800bf28359c44ull, 0x7a306598ec6751bcull, 0xe41623ca0bade5b7ull, 0xc8aaaab1de0103e9ull, 0x4f354874ecf140d7ull, 0x7b6cb9e92f5dee36ull }}, {{ 0xd370077792181aa9ull, 0xc5e3f7f93c09315aull, 0xe8dd65e474caf92aull, 0xd6aaaaf2ac0a2722ull, 0x1814d491416c886dull, 0xd23f431bd9ab4e1full }}, {{ 0x42604aabb4f10a99ull, 0xbae7afbc585bed8cull, 0x18a5faec8fedbbabull, 0x62aaad7ab865875dull, 0xf0d04dac8e3d544aull, 0x36789f1680b10d36ull }}, {{ 0x97c2eab5116a69f5ull, 0x4d0cdd5b7397477aull, 0xf67bcd3d9f4954b5ull, 0xdaaac6cb33f749a2ull, 0x682308bd8e654ae7ull, 0x20b636e106ea8425ull }}, {{ 0xed9d2b12ae282395ull, 0x0280a59283e8cac9ull, 0xa0d6046838dd4f15ull, 0x8aabc3f007a8e05dull, 0x115e57678ff4ed0eull, 0x471e24ca45292976ull }}, {{ 0x4823aebacd9163d6ull, 0x190677b92717ebe3ull, 0x485c2c1238a516d2ull, 0x6ab5a7604c98c3a8ull, 0xadaf6a0b9f914291ull, 0xc72d6fe6b39b9e9cull }}, {{ 0xd164d34c07ade65dull, 0xfa40ad3b86ef36e0ull, 0xd399b8b63672e434ull, 0x2b1889c2fdf7a492ull, 0xc8da24743bac99aeull, 0xc7c65f030414321eull }}, {{ 0x2df040f84ccaffa3ull, 0xc686c453455824c8ull, 0x4401371e207cea11ull, 0xaef5619debac6dbcull, 0xd8856c8a54be00cdull, 0xcdbfb61e28c9f533ull }}, {{ 0xcb6289b2ffedfc5cull, 0xc143ab40b5716fd1ull, 0xa80c272d44e124b1ull, 0xd595d02b34bc495aull, 0x75363d674f6c0808ull, 0x097d1d2d97e39406ull }}, {{ 0xf1d960fdff4bdb98ull, 0x8ca4b087166e5e31ull, 0x907987c4b0cb6ef1ull, 0x57da21b00f5add8aull, 0x941e66091a385058ull, 0x5ee323c7eee3c840ull }}, {{ 0x727dc9ebf8f693f3ull, 0x7e6ee546e04fadf3ull, 0xa4bf4daee7f2556full, 0x6e8550e0998ca769ull, 0xc92ffc5b06332373ull, 0xb4df65cf54e5d285ull }}, {{ 0x78e9e337b9a1c77bull, 0xf054f4c4c31ccb82ull, 0x6f7908d50f77565aull, 0x513528c5ff7e8a20ull, 0xdbdfdb8e3dff6282ull, 0x10b9fa1950fa3939ull }}, {{ 0xb922e02d4051cad3ull, 0x63518faf9f1ff318ull, 0x5aba58529aa95f8dull, 0x2c1397bbfaf16544ull, 0x96be938e6bf9d917ull, 0xa743c4fd29c63c42ull }}, {{ 0x3b5cc1c48331ec3dull, 0xe12f9cdc373f7ef7ull, 0x8b47733a0a9dbb85ull, 0xb8c3ed57cd6df4abull, 0xe371c39037c27ae7ull, 0x88a5b1e3a1be5a99ull }}, {{ 0x519f91ad1ff33a64ull, 0xcbdc209a287af5a8ull, 0x70ca80446a29533aull, 0x37a7456e064b8eb3ull, 0xe271a3a22d98cd0dull, 0x5678f2e4516f8a02ull }}, {{ 0x303bb0c33f8047eaull, 0xf699460594cd9893ull, 0x67e902ac259d404bull, 0x2c88b64c3ef39302ull, 0xd8706455c7f80284ull, 0x60b97ceb2e5b641cull }}, {{ 0xe254e7a07b02cf24ull, 0xa1fcbc37d007f5bfull, 0x0f1a1ab9782482f7ull, 0xbd571efa7583be18ull, 0x7463eb59cfb01929ull, 0xc73ee12fcf91e920ull }}, {{ 0xd7510c44ce1c176cull, 0x53df5a2e204f997eull, 0x97050b3eb16d1dacull, 0x656735c897256cf0ull, 0x8be731821ce0fba1ull, 0xc874cbde1bb31b44ull }}, {{ 0x692a7ab00d18ea34ull, 0x46b985cd431bfef4ull, 0xe6327072ee4328bbull, 0xf60819d5e7764165ull, 0x7707ef1520c9d44dull, 0xd48ff6ad14ff10adull }}, {{ 0x1ba8cae082f9260bull, 0xc33f3a049f17f58cull, 0xfdf8647d4e9f9750ull, 0x9c51025b0a9e8dfaull, 0xa64f56d347e24b0bull, 0x4d9fa2c2d1f6a6c6ull }}, {{ 0x1497ecc51dbb7c6bull, 0xa078442e36ef9779ull, 0xebb3ece5123be927ull, 0x1b2a178e6a318bcdull, 0x7f196440ced6ee74ull, 0x083c5b9c33a283c2ull }}, {{ 0xcdef3fb32952dc30ull, 0x44b2a9ce255beabaull, 0x350740f2b6571b8cull, 0x0fa4eb9025ef760bull, 0xf6fdea8814655089ull, 0x525b941a04592598ull }}, {{ 0x0b587cff9d3c99dfull, 0xaefaa20d75972b4cull, 0x1248897b1f67137aull, 0x9c7133a17b5a9c70ull, 0xa5eb2950cbf5255aull, 0x3793c9042b7b77f9ull }}, {{ 0x7174e1fc245e02b3ull, 0xd5ca548697e7b0f8ull, 0xb6d55ecf3a06c2caull, 0x1c6c044ed18a1c60ull, 0x7b2f9d27f793758aull, 0x2bc5da29b2d2afc0ull }}, {{ 0x6e90d3d96bac1b03ull, 0x59e74d41ef0ce9b4ull, 0x2455b41844439becull, 0x1c382b142f651bc7ull, 0xcfdc238fabc29765ull, 0xb5ba85a0fc3add84ull }}, {{ 0x51a8467e34b90e19ull, 0x830904935681210cull, 0x6b5908f2aaa4173bull, 0x1a31aec9d9f315c7ull, 0x1e99639cb599e9f3ull, 0x19493849da4ca730ull }}, {{ 0x3092c0ee0f3a8cfaull, 0x1e5a2dc1610b4a7bull, 0x317a597aaa68e853ull, 0x05f0d3e2837ed9caull, 0x31fde41f1803237full, 0xfcdc32e286fe87e1ull }}, {{ 0xe5bb894c984981c5ull, 0x2f85c98dca70e8cfull, 0xeec77ecaa819133full, 0x3b6846d922f481e5ull, 0xf3eae936f01f62f6ull, 0xe099fcd945f14ecbull }}, {{ 0xf9535cfdf2df11b0ull, 0xdb39df89e869181eull, 0x53caf3ea90fac077ull, 0x5212c47b5d8d12fbull, 0x872d1c256139dd9eull, 0xc603e07cbb6d13f7ull }}, {{ 0xbd41a1eb7cb6b0e0ull, 0x9042bb63141af135ull, 0x45ed8729a9cb84aeull, 0x34bbacd1a782bdd1ull, 0x47c31975cc42a82full, 0xbc26c4df5242c7abull }}, {{ 0x64905332df22e8bdull, 0xa29b51dec90d6c19ull, 0xbb4747a0a1f32ed1ull, 0x0f54c0308b1b6a2cull, 0xcd9efe99fa9a91d8ull, 0x5983b0b9369bccb0ull }}, {{ 0xeda33ffcb75d1767ull, 0x5a1132b3da8638fdull, 0x50c8cc46537fd430ull, 0x994f81e56f1225bfull, 0x0835f203ca09b270ull, 0x7f24e73c2215fee8ull }}, {{ 0x48607fdf29a2ea03ull, 0x84abfb06893e39ebull, 0x27d7fabf42fe49e3ull, 0xfd1b12f656b57979ull, 0x521b7425e460f865ull, 0xf771085954dbf510ull }}, {{ 0xd3c4feb7a05d241eull, 0x2eb7ce415c6e4330ull, 0x8e6fcb789deee2e3ull, 0xe30ebd9f6316bebbull, 0x3512897aebc9b3fbull, 0xaa6a537d509792a3ull }}, {{ 0x45b1f32c43a36928ull, 0xd32e0e8d9c4e9fe8ull, 0x905df2b62b54dcdfull, 0xde936839dee37353ull, 0x12b95ecd35e107d6ull, 0xa82742e525ebba60ull }}, {{ 0xb8f37fbaa4621b8dull, 0x3fcc91881b123f12ull, 0xa3ab7b1db150a0beull, 0xb1c21242b4e28143ull, 0xbb3db4041aca4e64ull, 0x91889cf37b3547c0ull }}, {{ 0x3982fd4a6bd5137full, 0x7dfdaf510eb676bbull, 0x64b2cf28ed26476eull, 0xf194b69b10d90ca4ull, 0x506908290be70feeull, 0xaf562182d014cd87ull }}, {{ 0x3f1de4e83652c2faull, 0xebe8d92a9320a350ull, 0xeefc1799437eca50ull, 0x6fcf220ea87a7e6bull, 0x241a519a77069f55ull, 0xd95d4f1c20d00749ull }}, {{ 0x772af1121f3b9dc5ull, 0x37187ba9bf466122ull, 0x55d8ebfca2f3e729ull, 0x5e17549294c8f037ull, 0x69073008a6423956ull, 0x7da51719482048dbull }}, {{ 0xa7ad6ab5385429aeull, 0x26f4d4a178bfcb58ull, 0x5a7937de5d87079cull, 0xace94db9cfd96229ull, 0x1a47e0567e963d5full, 0xe872e6fcd142d892ull }}, {{ 0x8cc62b143349a0caull, 0x85904e4eb77df176ull, 0x88bc2eafa7464c19ull, 0xc11d09421e7dd59dull, 0x06cec360f1de65bcull, 0x147d05e02c9c75b5ull }}, {{ 0x7fbdaeca00e047e5ull, 0x37a30f132aeb6ea1ull, 0x5759d2dc88bef8ffull, 0x8b225c9530ea5827ull, 0x4413a1c972aff95full, 0xcce23ac1be1c9912ull }}, {{ 0xfd68d3e408c2cef0ull, 0x2c5e96bfad32524eull, 0x69823c9d5775b9f8ull, 0x6f579dd3e9277189ull, 0xa8c451de7adfbdbbull, 0x00d64b916d1dfab6ull }}, {{ 0xe61846e8579c155cull, 0xbbb1e37cc3f73715ull, 0x1f165e256a9943b1ull, 0x596c2a471b8a6f5eull, 0x97ab32b0ccbd6952ull, 0x085ef3ae432bcb22ull }}, {{ 0xfcf2c5136c18d59cull, 0x54f2e2dfa7a826daull, 0x36dfad7629fca4f1ull, 0x7e39a6c7136859adull, 0xecaffae7ff661d37ull, 0x53b584ce9fb5ef59ull }}, {{ 0xe17bb2c238f8581bull, 0x517cdcbc8c91848dull, 0x24bcc69da3de716dull, 0xee4083c6c21380c4ull, 0x3edfcd0ff9fd242aull, 0x451730123d1b5983ull }}, {{ 0xced4fb9639b3710aull, 0x2ee09f5d7daf2d8aull, 0x6f5fc22866b06e45ull, 0x4e8525c394c307a9ull, 0x74be029fc3e369adull, 0xb2e7e0b663117f20ull }}, {{ 0x1451d3de41026a65ull, 0xd4c639a6e8d7c76cull, 0x59bd959402e44eb3ull, 0x113379a3cf9e4c9eull, 0x8f6c1a3da6e220c5ull, 0xfd0ec71fdeaef744ull }}, {{ 0xcb3246ae8a1827f7ull, 0x4fbe4085186dca38ull, 0x8167d7c81ceb1306ull, 0xac02c0661c2efe2full, 0x9a39066884d547b2ull, 0xe293c73eb2d5a8adull }}, {{ 0xeff6c2d164f18fa2ull, 0x1d6e8532f449e637ull, 0x0e0e6dd1212ebe3full, 0xb81b83fd19d5eddbull, 0x063a40153054ccfaull, 0xd9c5c872fc5896c8ull }}, {{ 0x5fa39c2df16f9c53ull, 0x265133fd8ae2fe2full, 0x8c904a2b4bd36e77ull, 0x311327e3025b4a8eull, 0x3e4680d3e35001cbull, 0x81b9d47ddb75e3d0ull }}, {{ 0xbc6419cb6e5c1b41ull, 0x7f2c07e76cddedd9ull, 0x7da2e5b0f64250a7ull, 0xeabf8ede1790e991ull, 0x6ec10846e12011efull, 0x11424cea929ae622ull }}, {{ 0x5be901f24f991089ull, 0xf7b84f0a40ab4a81ull, 0xe85cf8e99e97268aull, 0x2b7b94aceba91faeull, 0x538a52c4cb40b35full, 0xac970129ba0cfd58ull }}, {{ 0x971a13771bfaa555ull, 0xad33166686b0e90dull, 0x13a1b92031e7816dull, 0xb2d3cec1349b3cd5ull, 0x43673baff08701b7ull, 0xbde60ba14481e573ull }}, {{ 0xe704c2a717ca7555ull, 0xc3fee00142e91a87ull, 0xc4513b41f30b0e48ull, 0xfc46138c0e106052ull, 0xa20854df6546112cull, 0x6afc744cad12f680ull }}, {{ 0x062f9a86ede8954eull, 0xa7f4c00c9d1b094full, 0xab2c50937e6e8ed7ull, 0xdabcc3788ca3c33bull, 0x545350b9f4bcabc1ull, 0x2ddc8afec2bda106ull }}, {{ 0x3ddc09454b15d510ull, 0x8f8f807e230e5d16ull, 0xafbb25c2f051946cull, 0x8b5fa2b57e65a054ull, 0x4b4127438f5eb592ull, 0xca9d6df39b684a3full }}, {{ 0x6a985cb4eeda52a3ull, 0x9b9b04ed5e8fa2deull, 0xdd4f799d632fcc3dull, 0x71bc5b16eff8434eull, 0xf08b88a399b317b9ull, 0xea264b841212e678ull }}, {{ 0x29f39f1154873a5eull, 0x140e3145b19c5cb0ull, 0xa51ac025dfddfa68ull, 0x715b8ee55fb2a114ull, 0x6573566400feed3eull, 0x257ef328b4bd00b9ull }}, {{ 0xa38436ad4d4847abull, 0xc88decb8f01b9ee1ull, 0x730b817abeabc810ull, 0x6d9394f5bcfa4aceull, 0xf6815fe809f54470ull, 0x76f57f970f62073dull }}, {{ 0x632a22c504d2ccaeull, 0xd58b3f39611434d0ull, 0x7e730ecb72b5d0a7ull, 0x47c3d19961c6ec10ull, 0xa10dbf106394ac64ull, 0xa596fbe699d4486bull }}, {{ 0xdfa55bb2303bfecaull, 0x5770783dcaca1023ull, 0xf07e93f27b1a268eull, 0xcda62ffdd1c538a4ull, 0x4a8976a3e3cebbeaull, 0x77e5d702024ad434ull }}, {{ 0xbc7594f5e257f3e8ull, 0x6a64b269ebe4a166ull, 0x64f1c778cf05818full, 0x087ddfea31b43671ull, 0xe95ea266e613572cull, 0xaefa661416ec4a0aull }}, {{ 0x5c97d19ad76f870full, 0x27eef82336ee4e03ull, 0xf171cab816370f9aull, 0x54eabf25f10a206dull, 0x1db25804fcc167b8ull, 0xd5c7fcc8e53ae46dull }}, {{ 0x9dee300c6a5b4696ull, 0x8f55b160254f0c21ull, 0x6e71eb30de269c05ull, 0x512b777b6a65444bull, 0x28f77031df8e0d33ull, 0x59cfdfd8f44cec43ull }}, {{ 0x2b4de07c2790c1ddull, 0x9958edc175167950ull, 0x50732fe8ad821837ull, 0x2bb2aad227f4aaf2ull, 0x99aa61f2bb8c8401ull, 0x821ebe798b013a9full }}, {{ 0xb10ac4d98ba792a1ull, 0xfd79498e92e0bd21ull, 0x247fdf16c714f22bull, 0xb4faac358f8ead77ull, 0x00a7d37b537d280bull, 0x153370bf6e0c4a3cull }}, {{ 0xea6bb07f748bba4dull, 0xe6bcdf91bcc76350ull, 0x6cfeb6e3c6d175b7ull, 0x11caba179b92c6a7ull, 0x068e42d142e39075ull, 0xd402677a4c7ae658ull }}, {{ 0x2834e4fa8d754706ull, 0x0360bbb15fc9e129ull, 0x41f324e5c42e992full, 0xb1eb44ec13bbc28aull, 0x418e9c2c9ce3a492ull, 0x48180ac6fcccff70ull }}, {{ 0x9210f1c98694c63dull, 0x21c754edbde2cb9bull, 0x937f70f9a9d1fbd6ull, 0xf330b138c5559966ull, 0x8f9219be20e46dbaull, 0xd0f06bc5e001fa62ull }}, {{ 0xb4a971df41cfbe62ull, 0x51c951496adbf413ull, 0xc2fa69c0a233d65dull, 0x7fe6ec37b557fe01ull, 0x9bb5016d48ec494dull, 0x296435bac013c7d9ull }}, {{ 0x0e9e72b8921d6fd2ull, 0x31dd2cde2c9788c5ull, 0x9dc8218656065fa5ull, 0xff053a2d156fec11ull, 0x15120e44d93add06ull, 0x9dea194b80c5ce80ull }}, {{ 0x92307b35b5265e30ull, 0xf2a3c0adbdeb57b2ull, 0x29d14f3f5c3fbc73ull, 0xf63445c2d65f38b0ull, 0xd2b48eb07c4ca245ull, 0x2b24fcf307ba1100ull }}, {{ 0xb5e4d019137faddeull, 0x7a6586c96b316cf9ull, 0xa22d18799a7d5c87ull, 0x9e0ab99c5fb836e1ull, 0x3b0d92e4dafe56bbull, 0xaf71e17e4d44aa08ull }}, {{ 0x1af020fac2fccaafull, 0xc7f743de2fee41c1ull, 0x55c2f4c008e59d4aull, 0x2c6b401bbd3224d0ull, 0x4e87bcf08def6354ull, 0xda72ceef04aea452ull }}, {{ 0x0d6149cb9ddfead6ull, 0xcfa8a6addf4e918bull, 0x599d8f8058f824ebull, 0xbc30811563f57023ull, 0x114d61658b59e149ull, 0x887c15562ed26b37ull }}, {{ 0x85cce1f42abf2c5bull, 0x1c9682cab911af6eull, 0x80279b0379b17136ull, 0x59e50ad5e7966161ull, 0xad05cdf77182cce1ull, 0x54d8d55dd4383026ull }}, {{ 0x3a00d389ab77bb8aull, 0x1de11beb3ab0da51ull, 0x018c0e22c0ee6c1dull, 0x82f26c5b0bdfcdcfull, 0xc23a0baa6f1c00cdull, 0x507855aa4a31e182ull }}, {{ 0x44084360b2ad535full, 0x2acb17304ae8872cull, 0x0f788d5b89503923ull, 0x1d783b8e76be0a16ull, 0x964474a857180807ull, 0x24b358a6e5f2cf1bull }}, {{ 0xa852a1c6fac541b8ull, 0xabeee7e2ed1547baull, 0x9ab585935d223b5full, 0x26b25390a36c64dcull, 0xdeac8e9366f05047ull, 0x6f017684fb7c1713ull }}, {{ 0x933a51c5cbb49132ull, 0xb7550edd42d4cd4aull, 0x0b1737c1a35651bcull, 0x82f743a6623bf09eull, 0xb2bd91c2056322c7ull, 0x560ea131d2d8e6c6ull }}, {{ 0xc04731b9f50dabf3ull, 0x295294a49c5004e9ull, 0x6ee82d90615f315full, 0x1da8a47fd657662cull, 0xfb67b19435df5bcbull, 0x5c924bf23c7903c2ull }}, {{ 0x82c7f1439288b77eull, 0x9d39ce6e1b203121ull, 0x5511c7a3cdb7edb7ull, 0x28966cfe5f69fdbcull, 0xd20cefca1ab995efull, 0x9db6f7765cba259dull }}, {{ 0x1bcf6ca3b9572af0ull, 0x2442104d0f41eb4full, 0x52b1cc66092f492cull, 0x95e041efba23e95bull, 0x34815de50b3fdb57ull, 0x2925aa9f9f45782aull }}, {{ 0x161a3e653d67ad5bull, 0x6a94a30298933117ull, 0x3af1fbfc5bd8dbb9ull, 0xdac2935d45671d91ull, 0x0d0daaf2707e916bull, 0x9b78aa3c38b6b1a6ull }}, {{ 0xdd066ff4660cc58full, 0x29ce5e19f5bfeae6ull, 0x4d73d7db9678953eull, 0x8b99c1a4b60727acull, 0x8288ad7864f1ae36ull, 0x12b6a65a3722f07cull }}, {{ 0xa2405f8bfc7fb798ull, 0xa20fad03997f2d04ull, 0x06866e93e0b5d46dull, 0x7401906f1c478cbbull, 0x1956c6b3f170ce21ull, 0xbb227f86275d64ddull }}, {{ 0x5683bb77dcfd2bf2ull, 0x549cc223fef7c22eull, 0x414051c6c71a4c48ull, 0x880fa4571acb7f4eull, 0xfd63c3076e680d4eull, 0x4f58fb3d89a5f0a2ull }}, {{ 0x612552aea1e3b776ull, 0x4e1f9567f5ad95cfull, 0x8c8331c3c706fad3ull, 0x509c6b670bf2f90eull, 0xe5e59e4a50108511ull, 0x1979d067607b665dull }}, {{ 0xcb753ad252e52a9dull, 0x0d3bd60f98c7da19ull, 0x7d1ff1a5c645cc41ull, 0x261c3206777dba91ull, 0xfaf82ee720a532adull, 0xfec22409c4d1ffaaull }}, {{ 0xf2944c373cf3aa21ull, 0x84565c9bf7ce8501ull, 0xe33f7079beb9fa8aull, 0x7d19f440aae949aeull, 0xcdb1d5074673fac3ull, 0xf3956861b033fcadull }}, {{ 0x79cafa286184a548ull, 0x2b5f9e17ae113213ull, 0xe07a64c17343c969ull, 0xe3038a86ad1ce0d4ull, 0x08f25248c087cba2ull, 0x83d613d0e207decaull }}, {{ 0xc1edc593cf2e74cdull, 0xb1bc2cecccabf4c2ull, 0xc4c7ef8e80a5de1bull, 0xde236942c320c850ull, 0x597736d7854df45cull, 0x265cc628d44eb3e4ull }}, {{ 0x9349b7c617d09007ull, 0xf159c13ffeb78f9bull, 0xafcf5b91067aad14ull, 0xad621c9b9f47d327ull, 0x7ea8246b350b8ba0ull, 0x7f9fbd984b1306ebull }}, {{ 0xc0e12dbcee25a045ull, 0x6d818c7ff32b9c13ull, 0xde1993aa40cac2d1ull, 0xc5d51e1438ce3f8cull, 0xf2916c3012737446ull, 0xfc3d67f2eebe4532ull }}, {{ 0x88cbc9614d7842b6ull, 0x470f7cff7fb418c5ull, 0xacffc4a687eb9c2eull, 0xba532cca380e7b80ull, 0x79ae39e0b8828ac3ull, 0xda660f7d536eb3fdull }}, {{ 0x57f5ddcd06b29b20ull, 0xc69ae1fafd08f7b7ull, 0xc1fdae814f3419ceull, 0x473fbfe63090d306ull, 0xc0ce42c735196ba5ull, 0x87fc9ae5425307e6ull }}, {{ 0x6f9aaa0242fa0f3cull, 0xc20cd3cde259ad29ull, 0x93e8d10d18090213ull, 0xc87d7efde5a83e43ull, 0x880e9bc812fe3474ull, 0x4fde0cf4973e4f03ull }}, {{ 0x5c0aa4169dc49857ull, 0x9480460ad780c39eull, 0xc7182a82f05a14c5ull, 0xd4e6f5eaf8926ea3ull, 0x509215d0bdee0c8full, 0x1eac818de86f1623ull }}, {{ 0x986a68e229adf366ull, 0xcd02bc6c6b07a42full, 0xc6f1a91d6384cfb7ull, 0x51059b2db5b85265ull, 0x25b4da276b4c7d9eull, 0x32bd0f8b1456dd61ull }}, {{ 0xf42818d5a0cb81ffull, 0x021b5c3c2e4c69dbull, 0xc5709b25e3301d2eull, 0x2a380fc9193337f9ull, 0x7910858a30fce82full, 0xfb629b6ecb64a5cbull }}, {{ 0x8990f85847f313f7ull, 0x15119a59cefc2297ull, 0xb6660f7adfe123ccull, 0xa6309ddafc002fc1ull, 0xbaa53765e9e111d7ull, 0xd1da1253f1ee79f2ull }}, {{ 0x5fa9b372cf7ec7a6ull, 0xd2b0078215d959ebull, 0x1ffc9accbecb65f8ull, 0x7de62a8dd801dd91ull, 0x4a7429fb22cab26cull, 0x3284b7477350c37bull }}, {{ 0xbca1027c1af3cc79ull, 0x3ae04b14da7d8331ull, 0x3fde0bff73f1fbb8ull, 0xeafda98a7012a7abull, 0xe889a3cf5beaf83cull, 0xf92f28ca8127a2d0ull }}, {{ 0x5e4a18d90d85fcb6ull, 0x4cc2eed088e71ff1ull, 0x7eac77fa8773d532ull, 0x2de89f6860ba8cb0ull, 0x15606619972db261ull, 0xbbd797e90b8c5c29ull }}, {{ 0xaee4f87a873bdf1full, 0xff9d542559073f6dull, 0xf2bcafc94a8653f6ull, 0xcb163a13c7497ee4ull, 0xd5c3fcffe7c8f7cbull, 0x566bef1a737b999aull }}, {{ 0xd4f1b4c94856b73bull, 0xfc2549757a487a48ull, 0x7b5edddce93f47a5ull, 0xeede44c5c8def4f1ull, 0x59a7e1ff0dd9adf5ull, 0x6037570882d4000cull }}, {{ 0x51710fdcd363284cull, 0xd974de96c6d4c6d8ull, 0xd1b4aaa11c78cc7bull, 0x54aeafb9d8b5916eull, 0x808ed3f68a80cb9bull, 0xc22966551c48007bull }}, {{ 0x2e6a9ea041df92faull, 0x7e90b1e3c44fc473ull, 0x310eaa4b1cb7fcd6ull, 0x4ed2dd427717ae54ull, 0x059447a16907f411ull, 0x959dff531ad004d3ull }}, {{ 0xd02a324292bbbdc3ull, 0xf1a6f2e5ab1dac7full, 0xea92a6ef1f2fe060ull, 0x143ca498a6eccf49ull, 0x37cacc4e1a4f88adull, 0xd82bf93f0c20303eull }}, {{ 0x21a5f699bb5569a3ull, 0x70857cf8af28bcfeull, 0x29ba855737dec3c9ull, 0xca5e6df6854018e3ull, 0x2debfb0d071b56c2ull, 0x71b7bc767941e26eull }}, {{ 0x507ba2015156205dull, 0x6536e1b6d79761edull, 0xa14935682eb3a5deull, 0xe7b04ba13480f8dfull, 0xcb37ce824711639bull, 0x712d5ca0bc92d84dull }}, {{ 0x24d4540d2d5d439eull, 0xf424d1246be9d345ull, 0x4cdc1611d3047aafull, 0x0ce2f44c0d09b8bcull, 0xf02e1116c6ade417ull, 0x6bc59e475dbc7309ull }}, {{ 0x704b4883c5a4a427ull, 0x89702b6c372240b3ull, 0x0098dcb23e2ccadfull, 0x80dd8af88261375bull, 0x61ccaae3c2cae8e6ull, 0x35b82ec9a95c7e63ull }}, {{ 0x62f0d525b86e6988ull, 0x5e61b23a27568702ull, 0x05f89ef66dbfecbbull, 0x08a76db517cc298eull, 0xd1feace59bed1901ull, 0x1931d3e09d9cefe1ull }}, {{ 0xdd68537934501f4full, 0xafd0f64589614617ull, 0x3bb635a0497f3f51ull, 0x568a4912edf99f8cull, 0x33f2c0f81742fa0aull, 0xfbf246c628215ed2ull }}, {{ 0xa61342bc0b213916ull, 0xde299eb75dccbceeull, 0x551e1842def87930ull, 0x6166dabd4bc03b7aull, 0x077b89b0e89dc467ull, 0xd776c3bd914db436ull }}, {{ 0x7cc09b586f4c3ae1ull, 0xada03329a9ff6152ull, 0x532cf29cb5b4bbe8ull, 0xce048b64f58252c7ull, 0x4ad360e91629ac09ull, 0x6aa3a567ad090a1cull }}, {{ 0xdf86117458fa4cc8ull, 0xc841ffa0a3f9cd38ull, 0x3fc17a1f190f5716ull, 0x0c2d71f197173bc9ull, 0xec41c91adda0b862ull, 0x2a64760cc25a651aull }}, {{ 0xbb3cae8b79c6ffd1ull, 0xd293fc4667c20438ull, 0x7d8ec536fa9966e3ull, 0x79c6736fe6e855dcull, 0x3a91db0ca84733d4ull, 0xa7ec9c7f9787f30dull }}, {{ 0x505ed172c1c5fe29ull, 0x39c7dac00d942a37ull, 0xe793b425c9fe04e6ull, 0xc1c0825f05135a9cull, 0x49b28e7e92c8064cull, 0x8f3e1cfbeb4f7e84ull }}, {{ 0x23b42e7b91bbed99ull, 0x41ce8b8087c9a629ull, 0x0bc50979e3ec30feull, 0x918517b632c18a21ull, 0xe0f990f1bbd03effull, 0x986d21d7311af12aull }}, {{ 0x6509d0d3b15747feull, 0x921173054de07d9bull, 0x75b25ec2e739e9eeull, 0xaf32ed1dfb8f654aull, 0xc9bfa971562275fbull, 0xf4435267eb0d6bacull }}, {{ 0xf2622844ed68cfe9ull, 0xb4ae7e350ac4e811ull, 0x98f7b39d08432351ull, 0xd7fd432bd399f4e8ull, 0xe17c9e6d5d589bd4ull, 0x8aa1380f2e8634bfull }}, {{ 0x77d592b146181f1dull, 0x0ed0ee126bb110b3ull, 0xf9ad0422529f6131ull, 0x6fe49fb644039115ull, 0xcede3045a5761650ull, 0x6a4c3097d13e0f7eull }}, {{ 0xae57baecbcf13726ull, 0x94294cb834eaa702ull, 0xc0c229573a39cbeaull, 0x5eee3d1ea823aadbull, 0x14ade2b8769cdf24ull, 0x26f9e5ee2c6c9af4ull }}, {{ 0xcf6d4d3f616c2780ull, 0xc99cff32112a861aull, 0x87959d684641f729ull, 0xb54e63329164ac95ull, 0xcecadb34a220b76bull, 0x85c2fb4dbc3e0d88ull }}, {{ 0x1a450479ce398b05ull, 0xe021f7f4aba93d0cull, 0x4bd82612be93a7a1ull, 0x150fdff9adeebdd7ull, 0x13ec900e55472a35ull, 0x399dd1095a6c8758ull }}, {{ 0x06b22cc20e3f6e2eull, 0xc153af8eb49c6279ull, 0xf6717cbb71c48c52ull, 0xd29ebfc0cb536a68ull, 0xc73da08f54c7a612ull, 0x402a2a5d883d4970ull }}, {{ 0x42f5bf948e7a4dceull, 0x8d44db930e1bd8baull, 0xa06edf5271ad7b3bull, 0x3a337d87f1422819ull, 0xc86845994fcc7cbcull, 0x81a5a7a75264de67ull }}, {{ 0x9d997bcd90c70a0bull, 0x84b093be8d167746ull, 0x4454b93870c6d053ull, 0x4602e74f6c959100ull, 0xd412b7fd1dfcdf5aull, 0x10788c8937f0b00dull }}, {{ 0x27fed607a7c66473ull, 0x2ee5c57182e0a8c2ull, 0xab4f3c3467c42343ull, 0xbc1d091a3dd7aa02ull, 0x48bb2fe32be0b986ull, 0xa4b57d5c2f66e08aull }}, {{ 0x8ff45c4c8dbfec7dull, 0xd4f9b66f1cc69795ull, 0xb1185a0c0da9609full, 0x59225b066a6ca41aull, 0xd74fdedfb6c73f43ull, 0x6f16e599da04c566ull }}, {{ 0x9f8b9afd897f3cdeull, 0x51c120571fc1ebd7ull, 0xeaf38478889dc63eull, 0x7b578e40283e690aull, 0x691eb4bd23c878a1ull, 0x56e4f802842fb604ull }}, {{ 0x3b740de75ef860a8ull, 0x318b43673d93366cull, 0x2d832cb55629be6full, 0xd16b8e8192701a6dull, 0x1b330f6365d4b64eull, 0x64f1b01929dd1c2cull }}, {{ 0x52888b09b5b3c694ull, 0xef70a20867c0203aull, 0xc71fbf155da17057ull, 0x2e33910fb8610843ull, 0x0ffe99e1fa4f1f14ull, 0xf170e0fba2a319b9ull }}, {{ 0x39556e611905c1c4ull, 0x5a6654540d814247ull, 0xc73d76d5a84e636full, 0xce03aa9d33ca52a5ull, 0x9ff202d3c71736c9ull, 0x6e68c9d45a5f013aull }}, {{ 0x3d564fcafa3991abull, 0x87ff4b48870c96c8ull, 0xc866a458930fe259ull, 0x0c24aa2405e73a79ull, 0x3f741c45c6e823e2ull, 0x5017e24b87b60c4aull }}, {{ 0x655f1dedc63fb0b3ull, 0x4ff8f0d5467de3d2ull, 0xd4026b75be9ed77full, 0x796ea5683b0848c1ull, 0x7a891ab9c51166d4ull, 0x20eed6f34d1c7ae6ull }}, {{ 0xf5b72b49be7ce6f9ull, 0x1fb96854c0eae637ull, 0x4818329972346af9ull, 0xbe5276124e52d792ull, 0xc95b0b41b2ae044cull, 0x49546581031ccd00ull }}, {{ 0x9927b0e170e105baull, 0x3d3e134f892cfe2full, 0xd0f1f9fe760c2dbbull, 0x6f389cb70f3c6bb6ull, 0xdd8e7090facc2affull, 0xdd4bf70a1f200207ull }}, {{ 0xfb8ce8ce68ca3947ull, 0x646cc11b5bc1eddbull, 0x2973c3f09c79c950ull, 0x58361f26985c3524ull, 0xa79065a9cbf9adfaull, 0xa4f7a6653740144eull }}, {{ 0xd381181017e63cc7ull, 0xec3f8b1195934a97ull, 0x9e85a7661cc1dd23ull, 0x721d3781f39a1369ull, 0x8ba3f8a1f7c0cbc7ull, 0x71ac7ff42880cb12ull }}, {{ 0x430af0a0eefe5fc9ull, 0x3a7b6eafd7c0e9eeull, 0x313889fd1f92a367ull, 0x75242b138404c220ull, 0x7467b653ad87f5caull, 0x70bcff899507eeb9ull }}, {{ 0x9e6d664955efbddeull, 0x48d252de6d89234eull, 0xec3563e33bba6208ull, 0x9369aec3282f9541ull, 0x8c0d1f44c74f99e8ull, 0x6761fb5fd24f533eull }}, {{ 0x3045fedd5b5d6ab0ull, 0xd8373cb0475b6112ull, 0x3a15e6e05547d452ull, 0xc220d39f91dbd493ull, 0x788338afc91c0315ull, 0x09d3d1be37194071ull }}, {{ 0xe2bbf4a591a62adfull, 0x72285ee2c991cab5ull, 0x44db04c354ce4b3cull, 0x9548443bb2964dc0ull, 0xb52036dddb181ed9ull, 0x6246316e26fc846eull }}, {{ 0xdb578e77b07dacb8ull, 0x7593b4dbdfb1eb1aull, 0xb08e2fa1500ef05cull, 0xd4d2aa54f9df0982ull, 0x134224aa8ef1347full, 0xd6bdee4d85dd2c53ull }}, {{ 0x916b90ace4e8bf2cull, 0x97c51096bcf32f0cull, 0xe58ddc4d2095639cull, 0x503aa751c2b65f1aull, 0xc0956ea9956c0cfeull, 0x636b4f073aa3bb3eull }}, {{ 0xae33a6c0f11777b7ull, 0xedb2a5e3617fd67dull, 0xf78a9b0345d5e41dull, 0x224a89319b1fb70cull, 0x85d6529fd63881efull, 0xe23116484a655073ull }}, {{ 0xce0483896aeaad22ull, 0x48fa7ae1cefe60e8ull, 0xab6a0e20ba5ae92bull, 0x56e95bf00f3d2681ull, 0x3a5f3a3e5e351357ull, 0xd5eaded2e7f52483ull }}, {{ 0x0c2d235e2d2ac358ull, 0xd9c8ccd215efc918ull, 0xb2248d47478d1bb0ull, 0x651d976098638110ull, 0x47b8466fae12c169ull, 0x5b2cb43d0f936d20ull }}, {{ 0x79c361adc3aba16dull, 0x81d80034db5ddaf0ull, 0xf56d84c8cb8314e8ull, 0xf327e9c5f3e30aa6ull, 0xcd32c05cccbb8e1dull, 0x8fbf0a629bc24342ull }}, {{ 0xc1a1d0c9a4b44e41ull, 0x1270021091aa8d64ull, 0x96472fd7f31ed115ull, 0x7f8f21bb86de6a85ull, 0x03fb839fff538d2bull, 0x9d7667da1596a09cull }}, {{ 0x905227e06f0b0e88ull, 0xb86014a5b0a985efull, 0xdec7de6f7f342ad2ull, 0xfb97515344b02937ull, 0x27d3243ff94383b2ull, 0x26a00e84d7e24618ull }}, {{ 0xa3358ec4566e914dull, 0x33c0ce78e69f3b5bull, 0xb3ceb05af809ac3bull, 0xd3e92d40aee19c2eull, 0x8e3f6a7fbca324fdull, 0x824091306ed6bcf1ull }}, {{ 0x601793ab6051ad07ull, 0x058810b902385194ull, 0x0612e38db060ba50ull, 0x471bc486d4d019d3ull, 0x8e7a28fd5e5f71eaull, 0x1685abe45463616full }}, {{ 0xc0ebc4b1c330c243ull, 0x3750a73a16332fcbull, 0x3cbce388e3c74720ull, 0xc715ad445021023eull, 0x90c599e5afba7326ull, 0xe138b6eb4be1ce5bull }}, {{ 0x8935aef19fe796a0ull, 0x29268844ddffddf5ull, 0x5f60e358e5c8c742ull, 0xc6d8c4ab214a166eull, 0xa7b802f8dd487f83ull, 0xcc372530f6d20f93ull }}, {{ 0x5c18d5703f0be243ull, 0x9b8152b0abfeab97ull, 0xb9c8e178f9d7c895ull, 0xc477aeaf4ce4e04full, 0x8d301db8a4d4fb25ull, 0xfa2773e9a4349bc4ull }}, {{ 0x98f856627676d69eull, 0x130d3ae6b7f2b3e9ull, 0x41d8ceb9c26dd5d8ull, 0xacacd2d900f0c31dull, 0x83e129367051cf79ull, 0xc58a87206a0e15adull }}, {{ 0xf9b35fd8a0a46229ull, 0xbe844d032f7b071full, 0x92781341984a5a70ull, 0xbec03c7a09679f24ull, 0x26cb9c2063321ac0ull, 0xb7694744248cd8c7ull }}, {{ 0xc101be76466bd59aull, 0x712b021fdace473full, 0xb8b0c08ff2e78867ull, 0x73825cc45e0c376dull, 0x83f41943dff50b87ull, 0x2a1cc8a96d8077c7ull }}, {{ 0x8a11709ec0365802ull, 0x6bae153e8c0ec87dull, 0x36e7859f7d0b540aull, 0x83179fabac7a2a49ull, 0x2788fca6bf92734aull, 0xa51fd69e4704adcbull }}, {{ 0x64ae6633821f7017ull, 0x34ccd4717893d4e7ull, 0x250b383ae2714868ull, 0x1eec3cb4bcc5a6dcull, 0x8b59de837bb880e9ull, 0x733e622ec62ec9efull }}, {{ 0xeecffe03153a60eaull, 0x10004c6eb5c65109ull, 0x7270324cd86cd412ull, 0x353a5f0f5fb88499ull, 0x7182b122d535091bull, 0x806fd5d3bdd3e35bull }}, {{ 0x541fec1ed447c921ull, 0xa002fc5319bf2a63ull, 0x7861f700744048b4ull, 0x1447b699bd352dfeull, 0x6f1aeb5c54125b10ull, 0x045e5a456a46e192ull }}, {{ 0x493f39344acddb4eull, 0x401ddb3f0177a7e1ull, 0xb3d3a6048a82d70eull, 0xcacd22016413cbf0ull, 0x570d319b48b78ea0ull, 0x2baf86b626c4cfb8ull }}, {{ 0xdc783c0aec0a910aull, 0x812a90760eac8eccull, 0x06447c2d691c668eull, 0xec03540de8c5f767ull, 0x6683f010d72b9247ull, 0xb4db431d83b01d33ull }}, {{ 0x9cb2586d3869aa68ull, 0x0ba9a49c92bd9400ull, 0x3eacd9c61b1c0191ull, 0x3821488b17bbaa06ull, 0x012760a867b3b6cfull, 0x10909f2724e12402ull }}, {{ 0x1ef774443420a813ull, 0x74a06e1dbb67c806ull, 0x72c081bd0f180faaull, 0x314cd56eed54a43eull, 0x0b89c6940d052418ull, 0xa5a6378770cb6814ull }}, {{ 0x35aa8aaa094690baull, 0x8e444d29520dd03dull, 0x7b85116296f09ca8ull, 0xed005655454e6a70ull, 0x7361c1c8823368f1ull, 0x787e2b4a67f210c8ull }}, {{ 0x18a96aa45cc1a746ull, 0x8eab039d348a2264ull, 0xd332add9e5661e95ull, 0x42035f54b5102864ull, 0x81d191d516021973ull, 0xb4edb0e80f74a7d4ull }}, {{ 0xf69e2a6b9f9088bcull, 0x92ae24240d6557e8ull, 0x3ffaca82f5fd31d7ull, 0x9421b94f12a193f0ull, 0x122fb252dc14fe80ull, 0x1148e9109a8e8e4dull }}, {{ 0xa22da8343ba55755ull, 0xbacd696885f56f19ull, 0x7fcbe91d9be3f26bull, 0xc9513d16ba4fc762ull, 0xb5dcf73c98d1f105ull, 0xacd91aa609918f02ull }}, {{ 0x55c8920a54756952ull, 0x4c061e153b965700ull, 0xfdf71b2816e77835ull, 0xdd2c62e3471dc9d8ull, 0x1aa1a85df8336a39ull, 0xc07b0a7c5faf961bull }}, {{ 0x59d5b4674c961d33ull, 0xf83d2cd453df6603ull, 0xeba70f90e50ab214ull, 0xa3bbdce0c729e279ull, 0x0a5093abb2022642ull, 0x84ce68dbbcdbdd0full }}, {{ 0x82590c08fddd23fbull, 0xb263c04b46b9fc21ull, 0x34869ba8f26af4d1ull, 0x6556a0c7c7a2d8c3ull, 0x6725c4b4f4157e9aull, 0x301018956096a296ull }}, {{ 0x177a7859eaa367cfull, 0xf7e582f0c343d94full, 0x0d421499782d9030ull, 0xf56247cdcc5c77a0ull, 0x0779af1188d6f207ull, 0xe0a0f5d5c5e259e0ull }}, {{ 0xeac8b3832a620e14ull, 0xaef71d67a0a67d16ull, 0x8494cdfeb1c7a1e9ull, 0x95d6ce09fb9cac40ull, 0x4ac0d6af5865744full, 0xc6499a59bad782c0ull }}, {{ 0x2bd7031fa7d48cccull, 0xd5a7260c4680e2e5ull, 0x2dd00bf2f1cc5320ull, 0xda640c63d41eba85ull, 0xeb8862d973f68b1bull, 0xbee007814c6b1b82ull }}, {{ 0xb6661f3c8e4d7ff5ull, 0x58877c7ac108dcf3ull, 0xca20777d71fb3f48ull, 0x87e87be649334933ull, 0x3353dc7e87a16f16ull, 0x74c04b0cfc2f131dull }}, {{ 0x1ffd385d8f06ff8eull, 0x754adccb8a58a185ull, 0xe544aae673d078d3ull, 0x4f14d6fedc00dc05ull, 0x01469cf14c4e56e1ull, 0x8f82ee81d9d6bf24ull }}, {{ 0x3fe433a79645fb87ull, 0x94ec9ff367764f33ull, 0xf4aead008624b842ull, 0x16d065f49808983aull, 0x0cc2216cfb0f64cdull, 0x9b1d511282637768ull }}, {{ 0x7eea048bdebbd347ull, 0xd13e3f820a9f1800ull, 0x8ed2c2053d6f3299ull, 0xe423fb8df055f24dull, 0x7f954e41ce99f002ull, 0x0f252ab917e2aa10ull }}, {{ 0xf5242d76b35640c6ull, 0x2c6e7b146a36f004ull, 0x943b94346657fa02ull, 0xe967d38b635b7707ull, 0xfbd50e921203601cull, 0x9773ab3aeedaa4a4ull }}, {{ 0x9369c6a3015e87c0ull, 0xbc50cecc26256031ull, 0xca53ca0bff6fc415ull, 0x1e0e4371e192a64bull, 0xd65291b4b421c121ull, 0xea84b04d548a6e71ull }}, {{ 0xc221c25e0db14d7eull, 0x5b2813f97d75c1efull, 0xe745e477fa5da8d9ull, 0x2c8ea272cfba7ef5ull, 0x5f39b10f09518b4bull, 0x292ee3054d685072ull }}, {{ 0x955197ac88ed06efull, 0x8f90c7bee699935dull, 0x08baecafc7a8987dull, 0xbd92587c1d48f59bull, 0xb840ea965d2f70efull, 0x9bd4de3506132477ull }}, {{ 0xd52fecbd59424559ull, 0x9ba7cd7501ffc1a7ull, 0x574d3eddcc95f4e7ull, 0x67b774d924d9980eull, 0x328929dfa3da695dull, 0x1650ae123cbf6cadull }}, {{ 0x53df3f657c96b57aull, 0x148e069213fd908eull, 0x690474a9fddb910cull, 0x0d2a907b707ff08full, 0xf95ba2bc66881da6ull, 0xdf26ccb65f7a3ec3ull }}, {{ 0x46b879f6dde316bfull, 0xcd8c41b4c7e7a58full, 0x1a2c8ea3ea93aa78ull, 0x83a9a4d264ff659aull, 0xbd945b5c0151287cull, 0xb783ff1fbac673a7ull }}, {{ 0xc334c3a4aadee377ull, 0x077a910fcf0c7798ull, 0x05bd926729c4a8b8ull, 0x24a07037f1f9f805ull, 0x67cb91980d2b94ddull, 0x2b27f73d4bc0848dull }}, {{ 0xa00fa46eacb4e2a2ull, 0x4ac9aa9e167cabf7ull, 0x3967b807a1ae9730ull, 0x6e44622f73c3b032ull, 0x0df3aff083b3d0a3ull, 0xaf8fa864f5852d86ull }}, {{ 0x409c6c52bf10da59ull, 0xebe0aa2ce0deb7acull, 0x3e0d304c50d1e7e2ull, 0x4eabd5da85a4e1f6ull, 0x8b84df6525062662ull, 0xdb9c93f19733c73cull }}, {{ 0x861c3b3b76a88778ull, 0x36c6a5c0c8b32cbaull, 0x6c83e2fb28330eddull, 0x12b65a893870d39eull, 0x7330b9f3723d7fd7ull, 0x941dc76fe805c85dull }}, {{ 0x3d1a5052a2954aafull, 0x23c27987d6ffbf49ull, 0x3d26ddcf91fe94a4ull, 0xbb1f895c34684430ull, 0x7fe743827666fe66ull, 0xc929ca5f1039d3a6ull }}, {{ 0x6307233a59d4ead3ull, 0x6598bf4e65fd78dcull, 0x6384aa1bb3f1ce69ull, 0x4f3b5d9a0c12a9e2ull, 0xff08a318a005f003ull, 0xdba1e7b6a2424480ull }}, {{ 0xde47604782512c3aull, 0xf7f7790ffbe6b89bull, 0xe32ea5150772101dull, 0x1851a80478baa2d7ull, 0xf6565ef6403b6021ull, 0x94530d225696ad09ull }}, {{ 0xaec9c2cb172bba47ull, 0xafaaba9fd7033616ull, 0xdfd272d24a74a12bull, 0xf330902cb74a5c6eull, 0x9f5fb59e8251c14aull, 0xcb3e835761e2c263ull }}, {{ 0xd3e19beee7b546caull, 0xdcab4a3e66201ce2ull, 0xbe387c36e88e4bb4ull, 0x7fe5a1bf28e79c54ull, 0x39bd183117318cedull, 0xf0712169d2db97e4ull }}, {{ 0x46d017550d14c3dfull, 0x9eb0e66ffd4120dcull, 0x6e34da25158ef510ull, 0xfef85177990c1b4full, 0x4162f1eae7ef8146ull, 0x646b4e223c93eeeaull }}, {{ 0xc420e95282cfa6b9ull, 0x32e9005fe48b489aull, 0x4e108572d79592a6ull, 0xf5b32eabfa79111aull, 0x8ddd732d0f5b0cc5ull, 0xec310d565dc75526ull }}, {{ 0xa9491d391c1c833cull, 0xfd1a03beed70d60bull, 0x0ca5367c6bd7ba7dull, 0x98ffd2b7c8baab07ull, 0x8aa67fc2998e7fbbull, 0x39ea855fa9c95381ull }}, {{ 0x9cdb243b191d2057ull, 0xe304257546685c74ull, 0x7e7420dc366d48ebull, 0xf9fe3b2dd74aae46ull, 0x6a80fd99ff90fd53ull, 0x432935bca1dd430full }}, {{ 0x208f6a4efb234361ull, 0xde297694c0139c8eull, 0xf089489a2044d936ull, 0xc3ee4fca68eacec0ull, 0x2909e803fba9e547ull, 0x9f9c195e52a49e9aull }}, {{ 0x459a2715cf60a1cbull, 0xad9ea1cf80c41d8dull, 0x655cd60542b07c24ull, 0xa74f1de8192c1389ull, 0x9a631027d4a2f4cdull, 0x3c18fdaf3a6e3205ull }}, {{ 0xb80586da19c651edull, 0xc832521b07a92784ull, 0xf5a05c349ae4d96eull, 0x89172b10fbb8c35dull, 0x07dea18e4e5d9008ull, 0x58f9e8d8484df438ull }}, {{ 0x3037448501bf333dull, 0xd1f7350e4c9b8b2full, 0x98439a0e0cf07e53ull, 0x5ae7aea9d537a1abull, 0x4eb24f8f0fa7a055ull, 0x79c31872d30b8a30ull }}, {{ 0xe228ad3211780067ull, 0x33a8128efe136fd7ull, 0xf2a4048c8164ef46ull, 0x8d0cd2a2542c50b3ull, 0x12f71b969c8c4355ull, 0xc19ef47c3e7365e3ull }}, {{ 0xd596c3f4aeb00404ull, 0x0490b995ecc25e6eull, 0x7a682d7d0df158beull, 0x82803a5749bb2707ull, 0xbda713e21d7aa157ull, 0x90358cda7081fadeull }}, {{ 0x57e3a78ed2e0282aull, 0x2da73fdb3f97b054ull, 0xc811c6e28b6d776cull, 0x19024768e14f864aull, 0x6886c6d526ca4d6bull, 0xa21780886513ccb3ull }}, {{ 0x6ee48b943cc191a6ull, 0xc8887e907bece34bull, 0xd0b1c4d97246aa39ull, 0xfa16ca18cd1b3eebull, 0x1543c45383e7062eull, 0x54eb0553f2c5ff02ull }}, {{ 0x54ed73ca5f8fb081ull, 0xd554f1a4d740e0f2ull, 0x26f1b07e76c2a641ull, 0xc4e3e4f803107536ull, 0xd4a5ab4327063dd5ull, 0x512e35477bbbf614ull }}, {{ 0x514685e7bb9ce508ull, 0x555170706888c977ull, 0x8570e4f0a39a7e92ull, 0xb0e6f1b01ea4941dull, 0x4e78b09f863e6a59ull, 0x2bce14cad5579cd0ull }}, {{ 0x2cc13b0d5420f250ull, 0x552e64641557dea9ull, 0x3668f1666408f1b7ull, 0xe90570e1326dc927ull, 0x10b6e63b3e702780ull, 0xb60ccfec556c2023ull }}, {{ 0xbf8c4e854949771eull, 0x53cfebe8d56eb29bull, 0x20196dffe8597129ull, 0x1a3668cbf849db88ull, 0xa724fe5070618b09ull, 0x1c801f3b5639415eull }}, {{ 0x7b7b1134dcdea72aull, 0x461f37185652fa15ull, 0x40fe4bff137e6b9dull, 0x062017f7b2e29351ull, 0x8771ef2463cf6e5bull, 0x1d0138515e3c8db2ull }}, {{ 0xd2ceac10a0b287a5ull, 0xbd3826f35f3dc4d6ull, 0x89eef7f6c2f03424ull, 0x3d40efacfcd9c12cull, 0x4a73576be61a4f8eull, 0x220c332dae5d88f9ull }}, {{ 0x3c12b8a646f94c72ull, 0x64318581b869b064ull, 0x6355afa39d62096full, 0x64895cc1e0818bbdull, 0xe8816a36fd071b8eull, 0x5479ffc8cfa759bcull }}, {{ 0x58bb367ec5bcfc71ull, 0xe9ef37113420e3eaull, 0xe158dc6425d45e59ull, 0xed5d9f92c50f7565ull, 0x150e2625e247138full, 0x4cc3fdd81c898161ull }}, {{ 0x775020f3b961dc6aull, 0x235826ac0948e727ull, 0xcd789be97a4baf83ull, 0x45a83bbbb29a95faull, 0xd28d7d7ad6c6c39full, 0xffa7ea711d5f0dcaull }}, {{ 0xa92149853dd29c21ull, 0x617182b85cd9078aull, 0x06b6171ec6f4db1full, 0xb8925554fa09dbccull, 0x3986e6cc63c3a438ull, 0xfc8f286b25b689ecull }}, {{ 0x9b4cdf346a3a194cull, 0xce6f1b33a07a4b6aull, 0x431ce733c5908f39ull, 0x35b75551c46295f8ull, 0x3f4503fbe5a46a37ull, 0xdd97942f7921633aull }}, {{ 0x1100b80c2644fcf9ull, 0x1057100444c6f22aull, 0x9f210805b7a59842ull, 0x19295531abd9dbb2ull, 0x78b227d6f86c2628ull, 0xa7ebc9dabb4de046ull }}, {{ 0xaa0730797eb1e1b6ull, 0xa366a02aafc575a4ull, 0x374a50392c77f294ull, 0xfb9d53f0b68294faull, 0xb6f58e65b4397d90ull, 0x8f35e28b510ac2c0ull }}, {{ 0xa447e4bef2f2d11bull, 0x620241aaddb6986eull, 0x28e7223bbcaf79ceull, 0xd42547672119d1c6ull, 0x25978ff90a3ee7a9ull, 0x981ad9712a6b9b87ull }}, {{ 0x6aceef757d7c2b11ull, 0xd41690aca921f452ull, 0x990756555edac20full, 0x4974ca074b0231bdull, 0x77eb9fba66750ca2ull, 0xf10c7e6ba8341347ull }}, {{ 0x2c155a96e6d9aea8ull, 0x48e1a6be9b538b38ull, 0xfa495f55b48b949eull, 0xde8fe448ee15f167ull, 0xaf343d4800927e56ull, 0x6a7cf0349208c0caull }}, {{ 0xb8d589e50480d28cull, 0xd8d0837211437031ull, 0xc6ddb9590d73ce2eull, 0xb19eead94cdb6e0full, 0xd80a64d005b8ef64ull, 0x28e1620db45787eaull }}, {{ 0x385762f22d083975ull, 0x78252274aca261f1ull, 0xc4a93d7a86860dd4ull, 0xf0352c7d00924c9dull, 0x7067f020393959eeull, 0x98cdd4890b6b4f2cull }}, {{ 0x3369dd75c2523e90ull, 0xb173588ebe57d36cull, 0xae9c66c9413c8a4cull, 0x6213bce205b6fe29ull, 0x640f61423c3d8355ull, 0xf80a4d5a723117bcull }}, {{ 0x0222a699973671a2ull, 0xee8175936f6e423aull, 0xd21c03dc8c5d66feull, 0xd4c560d43925eda0ull, 0xe899cc965a672155ull, 0xb067058875eaed5bull }}, {{ 0x155a81ffe8207059ull, 0x510e97c25a4e9644ull, 0x3518269d7ba605f5ull, 0x4fb5c84a3b7b4848ull, 0x1601fddf88074d5aull, 0xe40637549b2d4597ull }}, {{ 0xd58913ff11446378ull, 0x2a91ed978711dea8ull, 0x12f18226d47c3b95ull, 0x1d19d2e652d0d2d2ull, 0xdc13eabb50490587ull, 0xe83e294e0fc4b7e6ull }}, {{ 0x575ac7f6acabe2acull, 0xa9b347eb46b2b298ull, 0xbd6f15844cda53d3ull, 0x23023cff3c283c34ull, 0x98c72b5122da3747ull, 0x126d9d0c9daf2f04ull }}, {{ 0x698bcfa2beb6dab4ull, 0xa100cf30c2faf9f3ull, 0x6656d72b00874644ull, 0x5e1661f859925a0full, 0xf7c7b12b5c8628c7ull, 0xb848227e28d7d62dull }}, {{ 0x1f761c5b73248b07ull, 0x4a0817e79dcdc382ull, 0xff6467ae0548beaeull, 0xacdfd3b37fb78499ull, 0xadccebb19d3d97c9ull, 0x32d158ed986e5dcbull }}, {{ 0x3a9d1b927f6d6e46ull, 0xe450ef0c2a09a315ull, 0xf9ec0ccc34d772ceull, 0xc0be4502fd2b2e03ull, 0xca0134f02467ede0ull, 0xfc2d7947f44fa9f4ull }}, {{ 0x4a2313b8fa464ebbull, 0xeb295679a4605ed4ull, 0xc3387ffa106a7c14ull, 0x876eb21de3afcc27ull, 0xe40c11616c0f4ac7ull, 0xd9c6bccf8b1ca38full }}, {{ 0xe55ec539c6bf134full, 0x2f9d60c06bc3b44aull, 0xa034ffc4a428d8d1ull, 0x4a52f52ae4ddf98dull, 0xe878adce3898ebcbull, 0x81c3601b6f1e639eull }}, {{ 0xf5b3b441c376c116ull, 0xdc25c78435a50aecull, 0x4211fdae6998782bull, 0xe73d93acf0abbf88ull, 0x14b6ca0e35f935f0ull, 0x11a1c112572fe435ull }}, {{ 0x99050a91a2a38ad7ull, 0x9979cb2a18726d41ull, 0x94b3e8d01ff4b1b6ull, 0x0867c4c166b57b52ull, 0xcf23e48e1bbc1b69ull, 0xb0518ab767deea12ull }}, {{ 0xfa3269b05a636c66ull, 0xfec1efa4f478448full, 0xcf0718213f8ef121ull, 0x540daf8e0316d139ull, 0x1766ed8d1559121aull, 0xe32f6b2a0eb524bcull }}, {{ 0xc5f820e387e23bffull, 0xf3935c718cb2ad9full, 0x1646f14c7b956b53ull, 0x4888db8c1ee42c42ull, 0xea054782d57ab507ull, 0xdfda2fa493136f58ull }}, {{ 0xbbb148e34ed657f4ull, 0x83c19c6f7efac83dull, 0xdec56cfcd3d63147ull, 0xd558937934e9ba94ull, 0x2434cb1c56cb1248ull, 0xbe85dc6dbec25979ull }}, {{ 0x54ecd8e1145f6f8bull, 0x25901c5af5cbd269ull, 0xb3b641e0465deccbull, 0x5575c2bc112149d0ull, 0x6a0fef1b63eeb6d8ull, 0x713a9c4973977ebbull }}, {{ 0x514078cacbba5b6eull, 0x77a11b8d99f6381dull, 0x051e92c2bfab3fefull, 0x56999b58ab4ce227ull, 0x249f5711e7532473ull, 0x6c4a1ade83eaf352ull }}, {{ 0x2c84b7ebf547924bull, 0xac4b1388039e3125ull, 0x3331bb9b7cb07f5aull, 0x62001176b100d586ull, 0x6e3966b3093f6c81ull, 0x3ae50cb1272d8135ull }}, {{ 0xbd2f2f3794cbb6f0ull, 0xbaeec350242deb73ull, 0xfff15412dee4f98aull, 0xd400aea2ea08573dull, 0x4e3e02fe5c7a3d0dull, 0x4cf27eeb87c70c16ull }}, {{ 0x63d7d82bcff5255cull, 0x4d53a12169cb3285ull, 0xff6d48bcb4f1bf6bull, 0x4806d25d2453686bull, 0x0e6c1def9cc6628aull, 0x0178f5334dc678dfull }}, {{ 0xe66e71b61f937598ull, 0x05444b4e21eff935ull, 0xfa44d75f11717a31ull, 0xd04437a36b421437ull, 0x90392b5c1fbfd966ull, 0x0eb9940109c0b8b6ull }}, {{ 0x0050711d3bc297f2ull, 0x34aaf10d535fbc1bull, 0xc6b069b6ae6ec5eaull, 0x22aa2c623094ca2full, 0xa23bb1993d7e7e04ull, 0x933fc80a61873721ull }}, {{ 0x03246b245599ef76ull, 0x0ead6a8541bd590eull, 0xc2e42122d053bb26ull, 0x5aa5bbd5e5cfe5ddull, 0x5654effc66f0ec29ull, 0xc07dd067cf482750ull }}, {{ 0x1f6c2f6b58035a9eull, 0x92c6293491657a8cull, 0x9ce94b5c23454f7cull, 0x8a79565afa1efaa9ull, 0x5f515fdc0569399dull, 0x84ea240e18d18923ull }}, {{ 0x3a39da3170218a2full, 0xbbbd9c0dadf6c979ull, 0x211cf19960b51addull, 0x68bd5f8dc535caa0ull, 0xb92dbe98361c4027ull, 0x3125688cf82f5b61ull }}, {{ 0x464285ee614f65d5ull, 0x55681888cba3debcull, 0x4b216ffdc7130ca9ull, 0x1765bb89b419ea41ull, 0x3bc971f21d1a818aull, 0xeb761581b1d991d1ull }}, {{ 0xbe993b4fcd19fa4eull, 0x5610f557f466b35aull, 0xef4e5fe9c6be7e9dull, 0xe9f953610903268cull, 0x55de737523090f64ull, 0x329cd710f27fb22cull }}, {{ 0x71fc511e0303c70full, 0x5ca9956f8c03018bull, 0x590fbf21c370f225ull, 0x23bd41ca5a1f8181ull, 0x5ab082935e5a99f1ull, 0xfa2066a978fcf5bbull }}, {{ 0x73db2b2c1e25c698ull, 0x9e9fd65b781e0f72ull, 0x7a9d7751a2697575ull, 0x656491e7853b0f0dull, 0x8ae519c1af8a036bull, 0xc544029eb9e19951ull }}, {{ 0x868fafb92d79c1ecull, 0x323e5f92b12c9a78ull, 0xca26a930581e9698ull, 0xf5edb30b344e9686ull, 0x6cf30190db642231ull, 0xb4a81a3342cffd2full }}, {{ 0x419cdd3bc6c1933aull, 0xf66fbbbaebbe08b5ull, 0xe5829be37131e1f1ull, 0x9b48fe700b11e143ull, 0x417e0fa891e955f3ull, 0x0e9106009c1fe3daull }}, {{ 0x9020a455c38fc045ull, 0xa05d554d356c5714ull, 0xf71a16e26bf2d373ull, 0x10d9f0606eb2cca6ull, 0x8eec9c95b31d5b84ull, 0x91aa3c06193ee686ull }}, {{ 0xa1466b59a39d82b4ull, 0x43a55504163b66cdull, 0xa704e4d8377c4284ull, 0xa88363c452fbfe85ull, 0x953e1dd8ff259328ull, 0xb0a6583cfc750141ull }}, {{ 0x4cc0318064271b0bull, 0xa4755228de520408ull, 0x8630f0722ada992aull, 0x9521e5ab3dd7f138ull, 0xd46d2a79f777bf96ull, 0xe67f7261dc920c8full }}, {{ 0xff81ef03e9870e71ull, 0x6c953598af342852ull, 0x3de96475ac89fbaaull, 0xd352f8b06a6f6c35ull, 0x4c43a8c3aaad7be1ull, 0x00fa77d29db47d9eull }}, {{ 0xfb1356271f469068ull, 0x3dd417f6d809933dull, 0x6b1dec98bd63d4a8ull, 0x413db6e4285a3a14ull, 0xfaa497a4aac6d6d2ull, 0x09c8ae3a290ce82eull }}, {{ 0xcec15d8738c1a410ull, 0x6a48efa4705fc06bull, 0x2f2b3df765e64e92ull, 0x8c6924e9938644ccull, 0xca6dec6eabc46436ull, 0x61d6ce459a8111d5ull }}, {{ 0x138da7483790689cull, 0x26d95c6c63bd8436ull, 0xd7b06ba9faff11b8ull, 0x7c1b711fc33eaff9ull, 0xe84b3c52b5abea21ull, 0xd2640eb8090ab259ull }}, {{ 0xc38888d22ba41617ull, 0x847d9c3be5672a1cull, 0x6ce434a3cdf6b131ull, 0xd9126b3da072dfc2ull, 0x12f05b3b18b7254eull, 0x37e893305a6af783ull }}, {{ 0xa3555835b468dce3ull, 0x2ce81a56f607a51full, 0x40ea0e660ba2ebefull, 0x7ab83068447cbd98ull, 0xbd63904ef7277514ull, 0x2f15bfe3882dab1eull }}, {{ 0x615572190c18a0e2ull, 0xc11107659c4c733cull, 0x89248ffc745d3757ull, 0xcb31e412acdf67f2ull, 0x65e3a315a78a92ccull, 0xd6d97ee351c8af33ull }}, {{ 0xcd5674fa78f648d5ull, 0x8aaa49f81afc805bull, 0x5b6d9fdc8ba4296dull, 0xeff2e8bac0ba0f79ull, 0xfae45ed88b69bbffull, 0x647ef4e131d6d801ull }}, {{ 0x056091c8b99ed854ull, 0x6aa6e3b10ddd0396ull, 0x92483e9d74699e47ull, 0x5f7d174b87449abdull, 0xccebb475722157ffull, 0xecf590cbf2647013ull }}, {{ 0x35c5b1d740347347ull, 0x2a84e4ea8aa223dcull, 0xb6d272268c202ecaull, 0xbae2e8f348ae0b67ull, 0x01350c96754d6ff9ull, 0x4197a7f777ec60c6ull }}, {{ 0x19b8f268820c80c2ull, 0xa930f1296a55669aull, 0x243875817941d3e5ull, 0x4cdd1980d6cc720dull, 0x0c127de095065fc1ull, 0x8fec8faaaf3bc7bcull }}, {{ 0x01397815147d0792ull, 0x9be96b9e27560205ull, 0x6a34970ebc9246f8ull, 0x00a2ff0863fc7483ull, 0x78b8eac5d23fbd8dull, 0x9f3d9caad855cd58ull }}, {{ 0x0c3eb0d2cce24bb5ull, 0x171e342d895c1432ull, 0x260de6935db6c5b6ull, 0x065df653e7dc8d22ull, 0xb7392bba367d6782ull, 0x38681eac735a0574ull }}, {{ 0x7a72e83c00d6f513ull, 0xe72e09c75d98c9f4ull, 0x7c8b01c1a923b91cull, 0x3fab9f470e9d8355ull, 0x283bb54620e60b14ull, 0x341132bc8184368full }}, {{ 0xc87d1258086592baull, 0x07cc61c9a7f7e38cull, 0xdd6e11909b653b21ull, 0x7cb438c692272156ull, 0x925514bd48fc6ecaull, 0x08abfb5d0f2a2197ull }}, {{ 0xd4e2b77053f7bb40ull, 0x4dfbd1e08faee37full, 0xa64cafa611f44f4aull, 0xdf0a37c1b5874d64ull, 0xb752cf64d9dc53e8ull, 0x56b7d1a297a54febull }}, {{ 0x50db2a6347ad5081ull, 0x0bd632c59cd4e2feull, 0x7efedc7cb38b18e7ull, 0xb6662d91174905eeull, 0x293c19f0829b4718ull, 0x632e3059ec751f35ull }}, {{ 0x288fa7e0ccc52507ull, 0x765dfbb82050ddefull, 0xf5f49cdf036ef906ull, 0x1ffdc7aae8da3b50ull, 0x9c5903651a10c6f7ull, 0xdfcde3833c933813ull }}, {{ 0x959c8ec7ffb37245ull, 0x9fabd5314328ab57ull, 0x9b8e20b62255ba40ull, 0x3fe9ccad18865129ull, 0x1b7a21f304a7c5a7ull, 0xbe0ae3205dc030c4ull }}, {{ 0xd81d93cffd0276afull, 0x3cb653ec9f96b16bull, 0x138d471d57594686ull, 0x7f21fec2f53f2ba0ull, 0x12c5537e2e8db888ull, 0x6c6cdf43a981e7a9ull }}, {{ 0x7127c61fe218a2d6ull, 0x5f1f473e3be2ee36ull, 0xc384c725697cc13eull, 0xf753f39d9477b440ull, 0xbbb542edd1893554ull, 0x3c40b8a49f130c9aull }}, {{ 0x6b8dbd3ed4f65c5bull, 0xb738c86e56dd4e20ull, 0xa32fc7761edf8c6full, 0xa9478427ccad0a87ull, 0x55149d4a2f5c1551ull, 0x5a87366e36be7e0bull }}, {{ 0x33896474519f9b8bull, 0x2837d44f64a50d44ull, 0x5fddca9d34bb7c5dull, 0x9ccb298dfec2694cull, 0x52ce24e5d998d530ull, 0x8948204e2370ec71ull }}, {{ 0x035dec8b303c1373ull, 0x922e4b19ee7284aaull, 0xbea9ea240f52dba3ull, 0x1fef9f8bf3981cfbull, 0x3c0d70fa7ff853e6ull, 0x5cd1430d62693c6dull }}, {{ 0x21ab3d6fe258c27dull, 0xb5ceef0350792ea4ull, 0x72a32568993c9463ull, 0x3f5c3b7783f121d5ull, 0x588669c8ffb346fdull, 0xa02c9e85d81c5c44ull }}, {{ 0x50b0665ed77798e7ull, 0x1a15562124bbd269ull, 0x7a5f7615fc5dcbe5ull, 0x799a52ab276b5256ull, 0x754021d9fd00c5e4ull, 0x41be313a711b9aabull }}, {{ 0x26e3ffb46aabf905ull, 0x04d55d4b6f56381dull, 0xc7ba9cdbdba9f6f3ull, 0xc0073aaf8a313760ull, 0x94815283e207baecull, 0x916dec486b140ab2ull }}, {{ 0x84e7fd0c2ab7ba35ull, 0x3055a4f2595e3123ull, 0xcd4a209694a3a57eull, 0x80484adb65ec29c7ull, 0xcd0d3926d44d4d3full, 0xae4b3ad42ec86af9ull }}, {{ 0x310fe279ab2d4616ull, 0xe35871777dadeb63ull, 0x04e545e1ce6476edull, 0x02d2ec91fb39a1ceull, 0x02843b844b05047bull, 0xcef04c49d3d42dc2ull }}, {{ 0xea9ed8c0afc4bcdfull, 0xe1746eaae8cb31dfull, 0x30f4bad20feca54aull, 0x1c3d3db3d040520cull, 0x192a532aee322cceull, 0x1562fae24649c994ull }}, {{ 0x2a347786ddaf60b8ull, 0xce8c52ad17eff2bfull, 0xe98f4c349f3e74ecull, 0x1a64690622833479ull, 0xfba73fad4df5c00dull, 0xd5ddccd6bee1dfc8ull }}, {{ 0xa60cab44a8d9c731ull, 0x117b3ac2ef5f7b77ull, 0x1f98fa0e38709140ull, 0x07ec1a3d59200cc3ull, 0xd4887cc50b998083ull, 0x5aaa006374d2bdd9ull }}, {{ 0x7c7eb0ae9881c7e7ull, 0xaed04b9d59bad2acull, 0x3bf9c48e3465ac80ull, 0x4f3906657b407f9full, 0x4d54dfb273ff051eull, 0x8aa403e2903b6a82ull }}, {{ 0xdcf2e6d1f511cf01ull, 0xd422f425814c3abcull, 0x57c1ad8e0bf8bd06ull, 0x183a3ff6d084fc38ull, 0x0550bcf887f6332full, 0x6a6826d9a2522917ull }}, {{ 0xa17d043392b2160bull, 0x495d89770cfa4b60ull, 0x6d90c78c77b76244ull, 0xf2467fa42531da33ull, 0x352761b54f9dffd6ull, 0x2811848057359ae6ull }}, {{ 0x4ee22a03baf4dc6bull, 0xdda75ea681c6f1c6ull, 0x47a7cb7cad29d6aaull, 0x76c0fc6973f28602ull, 0x1389d1151c2bfe65ull, 0x90af2d0368180cfeull }}, {{ 0x14d5a4254d909c2cull, 0xa889b28111c571bfull, 0xcc8df2dec3a262acull, 0xa389dc1e87793c16ull, 0xc3622ad319b7eff6ull, 0xa6d7c22210f081ecull }}, {{ 0xd058697507a619b7ull, 0x9560f90ab1b67176ull, 0xfd8b7cb3a457dabeull, 0x636299314abc58e3ull, 0xa1d5ac3f012f5fa2ull, 0x846d9554a965133full }}, {{ 0x23741e924c7d0123ull, 0xd5c9ba6af1206ea4ull, 0xe772df046b6e8b71ull, 0xe1d9fbeceb5b78e7ull, 0x5258ba760bd9bc57ull, 0x2c47d54e9df2c07cull }}, {{ 0x628931b6fce20b5dull, 0x59e1482d6b445269ull, 0x0a7cb62c32517272ull, 0xd283d7413192b90full, 0x3777489c76815b6eull, 0xbace55122b7b84dbull }}, {{ 0xd95bf125e0d471a4ull, 0x82ccd1c630ab381dull, 0x68df1db9f72e7877ull, 0x3926688befbb3a96ull, 0x2aa8d61ca10d9254ull, 0x4c0f52b5b2d33090ull }}, {{ 0x7d976b7ac84c7069ull, 0x1c0031bde6b0312aull, 0x18b72943a7d0b4abull, 0x3b8015775d5049e0ull, 0xaa985d1e4a87b74aull, 0xf8993b18fc3fe5a1ull }}, {{ 0xe7ea32cbd2fc641aull, 0x1801f16b02e1eba8ull, 0xf7279ca48e270eafull, 0x5300d6a9a522e2c0ull, 0xa9f3a32ee94d28e6ull, 0xb5fc4ef9da7ef850ull }}, {{ 0x0f25fbf63ddbe902ull, 0xf0136e2e1cd33499ull, 0xa78c1e6d8d8692d6ull, 0x3e0862a0735cdb89ull, 0xa3845fd51d0398ffull, 0x1bdb15c288f5b326ull }}, {{ 0x977bd79e6a971a14ull, 0x60c24dcd20400dfaull, 0x8b7930478741bc65ull, 0x6c53da4481a09360ull, 0x632bbe532223f9f8ull, 0x168ed9995998ff82ull }}, {{ 0xead66c3029e704c3ull, 0xc7970a0342808bc9ull, 0x72bbe2cb48915bf5ull, 0x3b4686ad1045c1c5ull, 0xdfb56f3f5567c3b4ull, 0xe1947ffd7ff9fb17ull }}, {{ 0x2c6039e1a3062f9full, 0xcbe66420990575e3ull, 0x7b56dbf0d5ad9799ull, 0x50c142c2a2b991b6ull, 0xbd165879560da50aull, 0xcfccffe6ffc3ceeeull }}, {{ 0xbbc242d05e3ddc38ull, 0xf6ffe945fa369adfull, 0xd164976858c7ec01ull, 0x278c9b9a5b3fb120ull, 0x62df74bd5c887267ull, 0x1e01ff05fda61553ull }}, {{ 0x55969c23ae6a9a2eull, 0xa5ff1cbbc6220cbdull, 0x2dedea1377cf3813ull, 0x8b7e1407907ceb48ull, 0xdcba8f659d547807ull, 0x2c13f63be87cd541ull }}, {{ 0x57e21964d02a05d0ull, 0x7bf71f55bd547f65ull, 0xcb4b24c2ae1830c4ull, 0x72ecc84ba4e130d1ull, 0x9f4999f8254cb04bull, 0xb8c79e5714e05492ull }}, {{ 0x6ed4fdf021a43a1dull, 0xd7a73959654cf9f5ull, 0xf0ef6f9accf1e7acull, 0x7d3fd2f470cbe831ull, 0x38e003b174fee2f2ull, 0x37cc2f66d0c34dbaull }}, {{ 0x5451eb61506a4525ull, 0x6c883d7df501c396ull, 0x695a5c0c01730cc0ull, 0xe47e3d8c67f711f3ull, 0x38c024ee91f4dd78ull, 0x2df9da0427a10946ull }}, {{ 0x4b3331cd2426b373ull, 0x3d5266eb9211a3dfull, 0x1d8798780e7e7f84ull, 0xecee677c0fa6b382ull, 0x37817151b390a6b8ull, 0xcbc284298c4a5cbeull }}, {{ 0xeffff2036983027bull, 0x65380533b4b066b8ull, 0x274bf4b090f0fb2aull, 0x41500ad89c830315ull, 0x2b0e6d3103a68339ull, 0xf599299f7ae79f6eull }}, {{ 0x5fff74221f1e18cdull, 0xf43034050ee40339ull, 0x88f78ee5a969cfa7ull, 0x8d206c761d1e1ed3ull, 0xae9043ea2481203cull, 0x97fba03acd0c3a4dull }}, {{ 0xbffa8955372cf801ull, 0x89e2083294e8203dull, 0x59ab94f89e221c8full, 0x83443c9d232d3443ull, 0xd1a2a7256d0b425dull, 0xefd4424c027a4708ull }}, {{ 0x7fc95d5427c1b008ull, 0x62d451f9d1114269ull, 0x80b3d1b62d551d9bull, 0x20aa5e235fc40aa1ull, 0x305a8776427097a7ull, 0x5e4a96f818c6c658ull }}, {{ 0xfddda5498d90e051ull, 0xdc4b33c22aac981eull, 0x0706311dc5532811ull, 0x46a7ad61bda86a4full, 0xe3894a9e9865ec87ull, 0xaee9e5b0f7c3bf71ull }}, {{ 0xeaa874df87a8c32bull, 0x9af00595aabdf135ull, 0x463deb29b53f90b2ull, 0xc28cc5d168942716ull, 0xe35cea31f3fb3d48ull, 0xd522f8e9ada57a72ull }}, {{ 0x2a9490bb4c979facull, 0x0d6037d8ab6b6c1bull, 0xbe6b2fa1147ba6faull, 0x997fba2e15c986deull, 0xe1a125f387d064d7ull, 0x535db920c876c87cull }}, {{ 0xa9cda750fdec3cbcull, 0x85c22e76b232390full, 0x702fdc4accd485c4ull, 0xfefd45ccd9df44b3ull, 0xd04b7b834e23f06bull, 0x41a93b47d4a3d4e0ull }}, {{ 0xa2088929eb3a5f55ull, 0x3995d0a2f5f63a9cull, 0x61de9aec004d39adull, 0xf5e4ba0082b8af02ull, 0x22f2d3210d676437ull, 0x909c50ce4e6650c8ull }}, {{ 0x54555ba33047b94dull, 0x3fda265d9b9e4a1eull, 0xd2b20d38030440c4ull, 0x9aef44051b36d617ull, 0x5d7c3f4a8609ea2full, 0xa61b280f0fff27d1ull }}, {{ 0x4b55945fe2cd3d04ull, 0x7e857fa8142ee52full, 0x3af484301e2a87aaull, 0x0d58a83310245ceeull, 0xa6da78e93c6325dcull, 0x7d0f90969ff78e2dull }}, {{ 0xf157cbbedc04622bull, 0xf136fc90c9d4f3d8ull, 0x4d8d29e12da94ca8ull, 0x857691fea16ba14eull, 0x8488b91c5bdf7a98ull, 0xe29ba5e23fab8dc8ull }}, {{ 0x6d6df574982bd5abull, 0x6c25dda7e2518679ull, 0x0783a2cbc89cfe99ull, 0x36a1b3f24e344d0full, 0x2d573b1b96bac9f5ull, 0xda147ad67cb389d5ull }}, {{ 0x464b968df1b658b0ull, 0x397aa88ed72f40beull, 0x4b245bf5d621f1feull, 0x225107770e0b0296ull, 0xc5684f13e34be394ull, 0x84cccc60df036253ull }}, {{ 0xbef3e18b711f76dbull, 0x3eca959467d8876eull, 0xef6b979a5d5373eeull, 0x572a4aa68c6e19deull, 0xb61316c6e0f6e3c9ull, 0x2ffffbc8b621d745ull }}, {{ 0x7586cf726b3aa491ull, 0x73e9d7cc0e754a53ull, 0x5a33ec07a542874eull, 0x67a6ea817c4d02b5ull, 0x1cbee3c4c9a4e5ddull, 0xdfffd5d71d5268b9ull }}, {{ 0x97441a78304a6daaull, 0x87226df89094e742ull, 0x8607384c74994910ull, 0x0c85290edb021b15ull, 0x1f74e5afe070faa6ull, 0xbffe5a672538173bull }}, {{ 0xe8a908b1e2e848a3ull, 0x47584bb5a5d10899ull, 0x3c4832fc8dfcdaa5ull, 0x7d339a948e150ed7ull, 0x3a90f8dec469ca7cull, 0x7fef88077430e84full }}, {{ 0x169a56f2dd12d65cull, 0xc972f5187a2a5603ull, 0x5ad1fddd8be08a74ull, 0xe40409cd8cd29468ull, 0x49a9b8b3ac21e8dcull, 0xff5b504a89e91318ull }}, {{ 0xe207657ca2bc5f9aull, 0xde7d92f4c5a75c1eull, 0x8c33eaa776c5688full, 0xe82862078039cc13ull, 0xe0a13704b95318a0ull, 0xf99122e9631abef2ull }}, {{ 0xd449f6de5b5bbc08ull, 0xb0e7bd8fb8899934ull, 0x7a072a8aa3b6159eull, 0x1193d44b0241f8c3ull, 0xc64c262f3d3ef649ull, 0xbfab5d1ddf0b757cull }}, {{ 0x4ae3a4af91955850ull, 0xe90d679d355ffc10ull, 0xc447a96a651cd832ull, 0xafc64aee1693b7a2ull, 0xbef97dd864759edaull, 0x7cb1a32ab67296dfull }}, {{ 0xece46edbafd57323ull, 0x1a860c2415bfd8a2ull, 0xaacc9e27f32071fdull, 0xddbeed4ce1c52c5bull, 0x75beea73ec98348aull, 0xdef05fab2079e4bdull }}, {{ 0x40ec5494de567f5dull, 0x093c7968d97e765dull, 0xabfe2d8f7f4473e3ull, 0xa9754500d1b3bb94ull, 0x997528873df20d6cull, 0xb563bcaf44c2ef66ull }}, {{ 0x893b4dd0af60f9a6ull, 0x5c5cbe187ef09fa4ull, 0xb7edc79af8ac86deull, 0x9e94b208310553ceull, 0xfe9395486b74863eull, 0x15e55ed8af9d5a01ull }}, {{ 0x5c510a26d9c9c07cull, 0x9b9f6cf4f5663c6dull, 0x2f49cc0db6bd44afull, 0x31cef451ea354613ull, 0xf1c3d4d4328d3e72ull, 0xdaf5b476dc258413ull }}, {{ 0x9b2a658481e184d7ull, 0x143a419195fe5c45ull, 0xd8e1f8892364aedcull, 0xf2158b332614bcbfull, 0x71a65049f9847075ull, 0x8d990ca4997728c7ull }}, {{ 0x0fa7f72d12cf3069ull, 0xca468fafdbef9ab8ull, 0x78d3b55b61eed498ull, 0x74d76fff7ccf5f7eull, 0x707f22e3bf2c649bull, 0x87fa7e6dfea797caull }}, {{ 0x9c8fa7c2bc17e416ull, 0xe6c19cde975c0b30ull, 0xb8451591d3544df7ull, 0x906a5ffae019baf0ull, 0x64f75ce577bbee12ull, 0x4fc8f04bf28bede8ull }}, {{ 0x1d9c8d9b58eee8dfull, 0x039020b1e9986fe6ull, 0x32b2d7b2414b0bafull, 0xa427bfccc1014d67ull, 0xf1a9a0f6ad574cb9ull, 0x1dd962f779774b13ull }}, {{ 0x281d8811795518b5ull, 0x23a146f31ff45efdull, 0xfafc6cf68cee74d6ull, 0x698d7dff8a0d0607ull, 0x70a049a2c568ff40ull, 0x2a7dddaabea8eec7ull }}, {{ 0x912750aebd52f713ull, 0x644cc57f3f8bb5e3ull, 0xcddc41a18150905dull, 0x1f86ebfb64823c4full, 0x6642e05bb619f884ull, 0xa8eaa8ab729953caull }}, {{ 0xab8926d3653da6beull, 0xeaffb6f87b751ae3ull, 0x0a9a904f0d25a3a5ull, 0x3b4537d1ed165b1eull, 0xfe9cc3951d03b529ull, 0x992a96b279fd45e7ull }}, {{ 0xb35b8441f4688369ull, 0x2dfd25b4d2930ce4ull, 0x6a09a3168378647bull, 0x50b42e3342df8f2cull, 0xf21fa3d32225139cull, 0xfba9e2f8c3e4bb0full }}, {{ 0x01932a938c152219ull, 0xcbe3791039be80efull, 0x24605ee122b3eccfull, 0x2709ce009cbb97bcull, 0x753c663f5572c41bull, 0xd4a2ddb7a6ef4e9full }}, {{ 0x0fbfa9c378d354f7ull, 0xf6e2baa241710956ull, 0x6bc3b4cb5b07401dull, 0x86620c061f53ed59ull, 0x945bfe79567ba90full, 0x4e5ca92c8559123aull }}, {{ 0x9d7ca1a2b84151a6ull, 0xa4db4a568e6a5d5cull, 0x35a50ff18e48812bull, 0x3fd4783d3947457eull, 0xcb97f0bd60d49a9bull, 0x0f9e9bbd357ab649ull }}, {{ 0x26de505b328d3080ull, 0x7090e7619027a59eull, 0x18729f6f8ed50bb4ull, 0x7e4cb2643cc8b6eeull, 0xf3ef6765c84e0a10ull, 0x9c32156416cb1ee1ull }}, {{ 0x84af238ff983e4feull, 0x65a909cfa18c782dull, 0xf47a3a5b9452750cull, 0xeefef7ea5fd7254cull, 0x875a09f9d30c64a4ull, 0x19f4d5e8e3ef34d3ull }}, {{ 0x2ed7639fbf26f1efull, 0xf89a621c4f7cb1c7ull, 0x8cc64793cb38927bull, 0x55f5af27be677501ull, 0x498463c23e7bee71ull, 0x03905b18e7581043ull }}, {{ 0xd469e43d77857354ull, 0xb607d51b1adef1c7ull, 0x7fbecbc5f035b8d7ull, 0x5b98d78d700a920full, 0xdf2be59670d7506dull, 0x23a38ef90970a2a0ull }}, {{ 0x4c22ea66ab36814bull, 0x1c4e530f0cb571ceull, 0xfd73f5bb6219386dull, 0x93f86b866069b49aull, 0xb7b6f7e068692445ull, 0x646395ba5e665a48ull }}, {{ 0xf95d2802b0210cedull, 0x1b0f3e967f16720eull, 0xe6879951d4fc3443ull, 0xc7b4333fc4210e0dull, 0x2d25aec4141b6ab7ull, 0xebe3d947afff86d7ull }}, {{ 0xbda3901ae14a813full, 0x0e9871e0f6e07495ull, 0x014bfd3251da0a9full, 0xcd0a007da94a8c8bull, 0xc378d3a8c9122b2dull, 0x36e67cccdffb4467ull }}, {{ 0x6863a10ccce90c78ull, 0x91f472c9a4c48dd9ull, 0x0cf7e3f732846a36ull, 0x026404e89ce97d6eull, 0xa2b84497dab5afcaull, 0x2500e000bfd0ac0dull }}, {{ 0x13e44a80011a7cb3ull, 0xb38c7be06fad8a7eull, 0x81aee7a7f92c2621ull, 0x17e83116211ee64cull, 0x5b32adee8b18dde4ull, 0x7208c0077e26b888ull }}, {{ 0xc6eae9000b08defeull, 0x037cd6c45cc768ecull, 0x10d50c8fbbb97d51ull, 0xef11eadd4b34fefdull, 0x8ffacb516ef8aae8ull, 0x7457804aed833553ull }}, {{ 0xc52d1a006e58b5f0ull, 0x22e063ab9fca193full, 0xa8527d9d553ee52aull, 0x56b32ca4f011f5e2ull, 0x9fcbf12e55b6ad19ull, 0x8b6b02ed47201543ull }}, {{ 0xb3c304044f771b63ull, 0x5cc3e4b43de4fc7dull, 0x9338e8255474f3a5ull, 0x62ffbe7160b39adaull, 0x3df76bcf5922c2fdull, 0x722e1d44c740d4a4ull }}, {{ 0x059e282b1aa711e1ull, 0x9fa6ef0a6af1dce9ull, 0xc03911754c918475ull, 0xddfd706dc7040c89ull, 0x6baa36197b5b9de5ull, 0x75cd24afc8884e6aull }}, {{ 0x382d91af0a86b2ccull, 0x3c8556682d72a11aull, 0x823aae94fdaf2c98ull, 0xabe66449c6287d61ull, 0x34a61cfed1942afaull, 0x9a036eddd5531028ull }}, {{ 0x31c7b0d66942fbf6ull, 0x5d356011c67a4b06ull, 0x164ad1d1e8d7bdf2ull, 0xb6ffeae1bd94e5cfull, 0x0e7d21f42fc9adcaull, 0x042254aa553ea192ull }}, {{ 0xf1cce8601c9dd79aull, 0xa415c0b1c0c6ee3dull, 0xdeec3233186d6b77ull, 0x25ff2cd167d0fa16ull, 0x90e35389dde0c9ebull, 0x29574ea754724fb4ull }}, {{ 0x720113c11e2a6c06ull, 0x68d986f187c54e6bull, 0xb539f5fef44632acull, 0x7bf7c02e0e29c4e4ull, 0xa8e14362aac7e32full, 0x9d6912894c771d0dull }}, {{ 0x740ac58b2da83838ull, 0x187f456f4db51032ull, 0x14439bf58abdfabcull, 0xd7ad81cc8da1b0efull, 0x98cca1daabcedfdaull, 0x261ab95cfca72288ull }}, {{ 0x886bb76fc892322eull, 0xf4f8b6590912a1f8ull, 0xcaa417976b6bcb58ull, 0x6cc711fd8850e956ull, 0xf7fe528ab614be8cull, 0x7d0b3da1de875955ull }}, {{ 0x54352a5dd5b5f5d1ull, 0x91b71f7a5aba53b5ull, 0xea68ebea3235f179ull, 0x3fc6b3e753291d63ull, 0xafef396b1ccf717cull, 0xe2706852b1497d5bull }}, {{ 0x4a13a7aa591b9a28ull, 0xb1273ac78b474515ull, 0x28193725f61b6ebfull, 0x7dc307093f9b25e7ull, 0xdf583e2f201a6edaull, 0xd864133aecdee594ull }}, {{ 0xe4c48ca77b140590ull, 0xeb884bcb70c8b2d4ull, 0x90fc277b9d12537cull, 0xe99e465c7c0f7b07ull, 0xb9726dd741085488ull, 0x73e8c04d40b4f7d0ull }}, {{ 0xefad7e8acec837a2ull, 0x3352f5f267d6fc50ull, 0xa9d98ad422b742e1ull, 0x202ebf9cd89ace4bull, 0x3e784a688a534d59ull, 0x871783048711ae27ull }}, {{ 0x5cc6f16c13d22c51ull, 0x013d9b780e65db29ull, 0xa27f6c495b289cccull, 0x41d37c20760c0ef4ull, 0x70b2e8156741057bull, 0x46eb1e2d46b0cd88ull }}, {{ 0x9fc56e38c635bb2aull, 0x0c6812b08ffa8f9dull, 0x58fa3add8f961ff8ull, 0x9242d9449c78958eull, 0x66fd10d6088a36d0ull, 0xc52f2dc4c2e80754ull }}, {{ 0x3db64e37be194fa7ull, 0x7c10bae59fc99c28ull, 0x79c64ca79bdd3fb0ull, 0xb69c7cae1cb5d78full, 0x05e2a85c55662425ull, 0xb3d7c9af9d10494cull }}, {{ 0x691f0e2d6cfd1c81ull, 0xd8a74cf83de01992ull, 0xc1befe8c16a47ce4ull, 0x221cdecd1f1a6b9aull, 0x3ada939b55fd6979ull, 0x066de0dc22a2dcf8ull }}, {{ 0x1b368dc641e31d0dull, 0x768901b26ac0ffb8ull, 0x9175f178e26ce0f0ull, 0x5520b4033708340bull, 0x4c89c4115be61ebbull, 0x404ac8995a5ca1b2ull }}, {{ 0x102189be92df227eull, 0xa15a10f82b89fd31ull, 0xae9b6eb8d840c964ull, 0x5347082026520873ull, 0xfd61a8ad96fd3351ull, 0x82ebd5fd879e50f6ull }}, {{ 0xa14f6171bcb758e9ull, 0x4d84a9b1b363e3eaull, 0xd21253387287ddeeull, 0x40c651417f345484ull, 0xe5d096c7e5e4012dull, 0x1d365be74c2f29a5ull }}, {{ 0x4d19ce715f29791aull, 0x072ea0f101e6e72aull, 0x34b74034794eab4full, 0x87bf2c8ef80b4d30ull, 0xfa25e3cefae80bc4ull, 0x241f9708f9d7a07aull }}, {{ 0x0302106db79ebb09ull, 0x47d2496a130507a7ull, 0x0f28820cbd12b116ull, 0x4d77bd95b07103e2ull, 0xc57ae615cd1075adull, 0x693be659c26c44cdull }}, {{ 0x1e14a4492c334e58ull, 0xce36de24be324c86ull, 0x9795147f62baeadeull, 0x06ad67d8e46a26d4ull, 0xb6ccfcda02a498c5ull, 0x1c56ff81983ab009ull }}, {{ 0x2cce6adbba010f6dull, 0x0e24ad6f6df6fd3dull, 0xebd2ccf9db4d2cb4ull, 0x42c60e78ec25844dull, 0x2401e0841a6df7b2ull, 0x1b65fb0ff24ae061ull }}, {{ 0xc0102c95440a9a46ull, 0x8d6ec65a4ba5e463ull, 0x363c01c29103bf08ull, 0x9bbc90b939772b0bull, 0x6812c529084bacf6ull, 0x11fbce9f76ecc3cbull }}, {{ 0x80a1bdd4a86a06bbull, 0x8653bf86f47aebe5ull, 0x1e581199aa257655ull, 0x155da73c3ea7ae70ull, 0x10bbb39a52f4c1a2ull, 0xb3d6123aa53fa5f2ull }}, {{ 0x06516a4e9424434aull, 0x3f457b458ccd36f7ull, 0x2f70b000a5769f57ull, 0xd5a8885a728cd061ull, 0xa75504073d8f9054ull, 0x065cb64a747c7b74ull }}, {{ 0x3f2e2711c96aa0e5ull, 0x78b6d0b7800425a6ull, 0xda66e00676a23968ull, 0x58955388798023cbull, 0x89522848679ba350ull, 0x3f9f1ee88cdcd28eull }}, {{ 0x77cd86b1de2a48eeull, 0xb724272b0029787eull, 0x8804c040a2563e14ull, 0x75d54354bf0165f6ull, 0x5d3592d40c146123ull, 0x7c37351580a03991ull }}, {{ 0xae0742f2ada6d949ull, 0x276987ae019eb4f0ull, 0x502f8286575e6ccfull, 0x9a54a14f760dfba1ull, 0xa417bc4878cbcb62ull, 0xda2812d706423fadull }}, {{ 0xcc489d7ac8847cd7ull, 0x8a1f4ccc10331166ull, 0x21db193f69b04017ull, 0x074e4d1a9c8bd44dull, 0x68ed5ad4b7f5f1daull, 0x8590bc663e967cc8ull }}, {{ 0xfad626cbd52ce064ull, 0x6538fff8a1feae03ull, 0x528efc7a20e280ebull, 0x490f030a1d764b03ull, 0x19458c4f2f9b7284ull, 0x37a75bfe71e0dfd4ull }}, {{ 0xcc5d83f653c0c3e5ull, 0xf439ffb653f2cc27ull, 0x3995dcc548d90931ull, 0xda961e65269eee21ull, 0xfcb77b17dc12792aull, 0x2c8997f072c8be48ull }}, {{ 0xfba7279f4587a6f7ull, 0x8a43fd1f477bf98dull, 0x3fda9fb4d87a5bf3ull, 0x89dd2ff382354d4cull, 0xdf2aceee98b8bbacull, 0xbd5fef647bd76ed9ull }}, {{ 0xd4878c38b74c85a2ull, 0x66a7e338cad7bf8bull, 0x7e8a3d1074c79783ull, 0x62a3df83161504faull, 0xb7ac1551f73754bdull, 0x65bf59ecd66a5482ull }}, {{ 0x4d4b7a3728fd3854ull, 0x028ee037ec6d7b76ull, 0xf16662a48fcbeb22ull, 0xda66bb1edcd231c8ull, 0x2cb8d533a8294f65ull, 0xf979834060274d1bull }}, {{ 0x04f2c62799e4334aull, 0x1994c22f3c46d29full, 0x6dffda6d9df72f54ull, 0x88034f34a035f1d9ull, 0xbf385404919d19faull, 0xbebf2083c189030full }}, {{ 0x317bbd8c02ea00dfull, 0xffcf95d85ac43a36ull, 0x4bfe88482ba7d948ull, 0x5021180e421b727eull, 0x7833482db02303c9ull, 0x737745258f5a1e9dull }}, {{ 0xeed567781d2408baull, 0xfe1bda738baa461dull, 0xf7f152d1b48e7cd9ull, 0x214af08e951278eeull, 0xb200d1c8e15e25ddull, 0x82a8b37799853226ull }}, {{ 0x54560ab123685748ull, 0xed16888374a6bd2bull, 0xaf6d3c310d90e083ull, 0x4ced6591d2b8b955ull, 0xf40831d8cdad7aa3ull, 0x1a9702abff33f582ull }}, {{ 0x4b5c6aeb621368d2ull, 0x42e155228e8363b1ull, 0xda4459ea87a8c527ull, 0x0145f7b23b373d58ull, 0x8851f27808c6ca61ull, 0x09e61ab7f807971dull }}, {{ 0xf19c2d31d4c21835ull, 0x9ccd53599121e4ecull, 0x86ab83294c97b388ull, 0x0cbbacf650286578ull, 0x533378b057c3e7caull, 0x62fd0b2fb04be727ull }}, {{ 0x7019c3f24f94f20full, 0x2005417fab52f141ull, 0x42b31f9cfded0356ull, 0x7f54c19f2193f6b5ull, 0x4002b6e36da70de4ull, 0xdde26fdce2f70789ull }}, {{ 0x6101a7771bd17497ull, 0x40348efcb13d6c8eull, 0x9aff3c21eb42215dull, 0xf94f90374fc7a314ull, 0x801b24e248868aecull, 0xaad85ea0dda64b5cull }}, {{ 0xca108aa7162e8de8ull, 0x820d95deec663d8full, 0x0df8595330954da4ull, 0xbd1ba2291dcc5eceull, 0x010f70d6d5416d41ull, 0xac73b248a87ef19dull }}, {{ 0xe4a56a86ddd18b0cull, 0x1487dab53bfe679dull, 0x8bb37d3fe5d5086dull, 0x6314559b29fbb40cull, 0x0a9a6864548e4491ull, 0xbc84f6d694f57022ull }}, {{ 0xee762944aa2f6e76ull, 0xcd4e8b1457f00c2aull, 0x7502e47efa525442ull, 0xdecb580fa3d5087dull, 0x6a0813eb4d8eadadull, 0x5d31a461d1966154ull }}, {{ 0x509d9caea5da509full, 0x05116ecb6f6079adull, 0x921cecf5c7374a9cull, 0xb3f1709c665254e6ull, 0x2450c7310792c8caull, 0xa3f06bd22fdfcd4cull }}, {{ 0x26281ed27a872631ull, 0x32ae53f259c4c0c5ull, 0xb5214199c828ea18ull, 0x076e661bff375101ull, 0x6b27c7ea4bbbd7ebull, 0x67643635debe04f9ull }}, {{ 0x7d913438c9477debull, 0xfacf477781af87b3ull, 0x134c9001d19924f1ull, 0x4a4ffd17f8292a11ull, 0x2f8dcf26f5566f2eull, 0x09ea1e1ab36c31beull }}, {{ 0xe7ac0a37dccaeb33ull, 0xcc18caab10db4d02ull, 0xc0fda0122ffb7173ull, 0xe71fe2efb19ba4aaull, 0xdb8a1785956057ceull, 0x63252d0b0239f16dull }}, {{ 0x0cb8662e9fed2ffbull, 0xf8f7eaaea891021dull, 0x89e840b5dfd26e85ull, 0x073edd5cf0146eabull, 0x9364eb37d5c36e15ull, 0xdf73c26e16436e4aull }}, {{ 0x7f33fdd23f43dfd2ull, 0xb9af2ad295aa1522ull, 0x6312871abe38513bull, 0x4874a5a160cc52b3ull, 0xc1f1302e59a24cd2ull, 0xba85984cdea24ee9ull }}, {{ 0xf807ea3678a6be31ull, 0x40d7ac39d8a4d358ull, 0xdeb9470b6e332c55ull, 0xd48e784dc7fb3b01ull, 0x936be1cf80570036ull, 0x4937f300b2571521ull }}, {{ 0xb04f2620b6836de9ull, 0x886cba4276704179ull, 0xb33cc6724dffbb54ull, 0x4d90b309cfd04e12ull, 0xc236d21b03660224ull, 0xdc2f7e06f766d34full }}, {{ 0xe3177d4721224b1dull, 0x543f4698a0628ec0ull, 0x005fc0770bfd514dull, 0x07a6fe621e230cbbull, 0x9624350e21fc156bull, 0x99daec45aa04411dull }}, {{ 0xdeeae4c74b56ef25ull, 0x4a78c1f643d99388ull, 0x03bd84a677e52d05ull, 0x4c85efd52d5e7f4eull, 0xdd6a128d53d8d62eull, 0x028d3ab8a42a8b27ull }}, {{ 0xb52cefc8f1655770ull, 0xe8b7939ea67fc358ull, 0x25672e80aef3c234ull, 0xfd3b5e53c5b0f90cull, 0xa624b98546785dceull, 0x19844b3669a96f8eull }}, {{ 0x13c15dd96df56a5eull, 0x172bc43280fda177ull, 0x7607d106d5859611ull, 0xe451af45b8e9ba79ull, 0x7d6f3f34c0b3aa15ull, 0xff2af020209e5b92ull }}, {{ 0xc58daa7e4b9627acull, 0xe7b5a9f909e84ea6ull, 0x9c4e2a445737dcaaull, 0xeb30d8b9392148beull, 0xe658780f8704a4daull, 0xf7ad6141462f93b8ull }}, {{ 0xb788a8eef3dd8cbcull, 0x0d18a3ba63131283ull, 0x1b0da6ab682e9eadull, 0x2fe8773c3b4cd772ull, 0xff74b09b462e708dull, 0xacc5cc8cbddbc538ull }}, {{ 0x2b56995586a77f56ull, 0x82f66547debeb925ull, 0x0e8882b211d232c2ull, 0xdf14a85a51006a75ull, 0xfa8ee610bdd06583ull, 0xbfb9fd7f6a95b439ull }}, {{ 0xb161fd57428af95bull, 0x1d9ff4ceb3733b73ull, 0x91551af4b235fb99ull, 0xb6ce93872a042892ull, 0xc994fca76a23f726ull, 0x7d43e6fa29d90a43ull }}, {{ 0xedd3e568996dbd8full, 0x283f901302805284ull, 0xad530d8ef61bd3fbull, 0x2411c347a42995b9ull, 0xdfd1de8a2567a783ull, 0xe4a705c5a27a66a5ull }}, {{ 0x4a46f615fe496793ull, 0x927ba0be19033931ull, 0xc53e87959d1647cfull, 0x68b1a0cc699fd940ull, 0xbe32b165760c8b1full, 0xee8639b858c8027aull }}, {{ 0xe6c59cdbeede0bb9ull, 0xb8d4476cfa203becull, 0xb4714bd822dece1bull, 0x16f047fc203e7c87ull, 0x6dfaedf69c7d6f3aull, 0x513e413377d018cbull }}, {{ 0x03b8209754ac753bull, 0x384aca41c5425741ull, 0x0c6cf6715cb40d15ull, 0xe562cfd94270dd4dull, 0x4bcd4ba21ce65844ull, 0x2c6e8c02ae20f7f2ull }}, {{ 0x253145e94ebc9451ull, 0x32ebe691b497688aull, 0x7c41a06d9f0882d4ull, 0xf5dc1e7c9868a502ull, 0xf604f45520ff72b0ull, 0xbc51781acd49af76ull }}, {{ 0x73ecbb1d135dcb29ull, 0xfd3701b10dea1565ull, 0xda90444836551c49ull, 0x9a9930ddf4167218ull, 0x9c318b5349fa7ae9ull, 0x5b2eb10c04e0daa5ull }}, {{ 0x873f4f22c1a9ef96ull, 0xe42610ea8b24d5f6ull, 0x89a2aad21f531ae3ull, 0x09fbe8ab88e074f8ull, 0x19ef7140e3c8cd20ull, 0x8fd2ea7830c88a78ull }}, {{ 0x4879175b90a35bdaull, 0xe97ca9296f705ba1ull, 0x605aac35393f0ce6ull, 0x63d716b358c491b5ull, 0x035a6c88e5d80340ull, 0x9e3d28b1e7d568b1ull }}, {{ 0xd4bae993a6619680ull, 0x1ede9b9e5a63944cull, 0xc38aba143c768105ull, 0xe666e30177adb115ull, 0x21883d58fa702083ull, 0x2e6396f30e5616eaull }}, {{ 0x4f4d1fc47fcfe103ull, 0x34b2142f87e3cb00ull, 0xa36b44ca5ca10a33ull, 0x0004de0eacc8ead9ull, 0x4f526579c8614527ull, 0xcfe3e57e8f5ce525ull }}, {{ 0x19033dacfe1eca1eull, 0x0ef4c9db4ee5ee03ull, 0x6230afe79e4a6600ull, 0x0030ac92bfd92c80ull, 0x1937f6c1d3ccb386ull, 0x1ee6f6f199a0f375ull }}, {{ 0xfa2068c1ed33e52dull, 0x958fe29114fb4c1eull, 0xd5e6df0c2ee7fc00ull, 0x01e6bdbb7e7bbd03ull, 0xfc2fa39245ff033cull, 0x3505a57000498292ull }}, {{ 0xc54417934406f3c0ull, 0xd79ed9aad1d0f935ull, 0x5b04b679d50fd805ull, 0x13036952f0d56226ull, 0xd9dc63b6bbf62058ull, 0x1238766002df19bdull }}, {{ 0xb4a8ebc0a8458582ull, 0x6c3480ac3229bc19ull, 0x8e2f20c2529e703aull, 0xbe221d3d6855d57full, 0x829be523579d4370ull, 0xb6349fc01cb7016aull }}, {{ 0x0e99358692b73717ull, 0x3a0d06b9f5a15901ull, 0x8dd747973a306248ull, 0x6d552466135a56fbull, 0x1a16f3616c24a267ull, 0x1e0e3d811f260e29ull }}, {{ 0x91fc1741bb2826e2ull, 0x44824343984d7a0aull, 0x8a68cbe845e3d6d2ull, 0x45536bfcc18765d3ull, 0x04e581ce396e580aull, 0x2c8e670b377c8d9bull }}, {{ 0xb3d8e8914f9184d2ull, 0xad16a0a3f306c469ull, 0x6817f712bae66436ull, 0xb54237df8f49fa43ull, 0x30f7120e3e4f7066ull, 0xbd9006702add880eull }}, {{ 0x067915ad1baf3034ull, 0xc2e246677e43ac21ull, 0x10efa6bb4cffea22ull, 0x14962ebb98e3c6a2ull, 0xe9a6b48e6f1a6403ull, 0x67a04061aca7508dull }}, {{ 0x40bad8c314d7e205ull, 0x9cd6c00aeea4b94aull, 0xa95c835101ff255bull, 0xcdddd353f8e5c254ull, 0x20830d905707e81eull, 0x0c4283d0be89258bull }}, {{ 0x874c779ed06ed432ull, 0x2063806d526f3ce6ull, 0x9d9d212a13f77594ull, 0x0aaa4147b8f9974eull, 0x451e87a3664f1134ull, 0x7a992627715b776full }}, {{ 0x48fcac34245449f7ull, 0x43e3044538586101ull, 0x28234ba4c7aa97c9ull, 0x6aa68ccd39bfe912ull, 0xb3314c61ff16ac08ull, 0xc9fb7d8a6d92aa58ull }}, {{ 0xd9deba096b4ae3a7ull, 0xa6de2ab43373ca0cull, 0x9160f46fcca9eddcull, 0x2a818004417f1ab5ull, 0xffecfbd3f6e2b854ull, 0xe3d2e76847baa776ull }}, {{ 0x82b3445e30ece487ull, 0x84adab0a0285e480ull, 0xadc98c5dfea34a9eull, 0xa90f002a8ef70b17ull, 0xff41d647a4db3349ull, 0xe63d0a12cd4a8aa5ull }}, {{ 0x1b00abade940ed49ull, 0x2ec8ae64193aed05ull, 0xc9df7babf260ea31ull, 0x9a9601a995a66eecull, 0xf8925ecc709000e0ull, 0xfe6264bc04e96a7bull }}, {{ 0x0e06b4cb1c8944deull, 0xd3d6cfe8fc4d4233ull, 0xe2bad4b777c925ebull, 0x09dc109fd880553full, 0xb5b7b3fc65a008c6ull, 0xefd7ef58311e28d7ull }}, {{ 0x8c430fef1d5cb0b0ull, 0x46641f19db0495feull, 0xdb4c4f2aaddb7b36ull, 0x6298a63e7503547eull, 0x192d07dbf84057bcull, 0x5e6f5971eb2d986dull }}, {{ 0x7a9e9f57259ee6e2ull, 0xbfe937028e2ddbf1ull, 0x90fb17aaca92d01eull, 0xd9f67e7092214cf4ull, 0xfbc24e97b2836d5bull, 0xb0597e732fc7f442ull }}, {{ 0xca323967783504d7ull, 0x7f1c26198dca976eull, 0xa9ceecabe9bc2133ull, 0x83a0f065b54d018dull, 0xd59711ecf9224596ull, 0xe37ef07fddcf8a9dull }}, {{ 0xe5f63e0ab2123067ull, 0xf7197cff89e9ea53ull, 0xa2153eb721594c02ull, 0x244963f915020f88ull, 0x57e6b341bb56b7e1ull, 0xe2f564feaa1b6a2aull }}, {{ 0xfb9e6c6af4b5e408ull, 0xa6fee1fb63232746ull, 0x54d473274d7cf81dull, 0x6adde7bad2149b56ull, 0x6f03009151632ecbull, 0xdd95f1f2a51225a7ull }}, {{ 0xd4303c2d8f1ae855ull, 0x85f4d3d1df5f88c5ull, 0x504c7f8906e1b128ull, 0x2cab0d4c34ce115full, 0x561e05ad2ddfd3f2ull, 0xa7db737a72b5788aull }}, {{ 0x49e259c7970d1352ull, 0x3b904632b9bb57baull, 0x22fcfb5a44d0eb95ull, 0xbeae84fa100cadb9ull, 0x5d2c38c3cabe4775ull, 0x8e9282c87b16b567ull }}, {{ 0xe2d781cbe682c12full, 0x53a2bdfb41516d46ull, 0x5de1d186b02933d4ull, 0x72d131c4a07ec93bull, 0xa3ba37a5eb6eca99ull, 0x91b91bd4cee31609ull }}, {{ 0xdc6b11f7011b8bdaull, 0x445b6bd08d2e44c4ull, 0xaad22f42e19c064bull, 0x7c2bf1ae44f3dc51ull, 0x65462c7b3253e9feull, 0xb13b165014dedc60ull }}, {{ 0x9c2eb3a60b137688ull, 0xab92362583ceafb0ull, 0xac35d89cd0183ef0ull, 0xd9b770ceb1869b30ull, 0xf4bdbccff74723f0ull, 0xec4edf20d0b49bc3ull }}, {{ 0x19d3047c6ec2a14dull, 0xb3b61d772612dce6ull, 0xba1a762020f27566ull, 0x812a6812ef420fe6ull, 0x8f69601fa8c76768ull, 0x3b14b748270e15a7ull }}, {{ 0x023e2cdc539a4d01ull, 0x051d26a77cbca0fdull, 0x45089d4149789603ull, 0x0ba810bd58949f03ull, 0x9a1dc13c97ca0a15ull, 0x4ecf28d1868cd88bull }}, {{ 0x166dc09b4407020eull, 0x3323828adf5e49e2ull, 0xb256248cdeb5dc1eull, 0x7490a76575ce3620ull, 0x05298c5dede464d2ull, 0x1417982f41807574ull }}, {{ 0xe0498610a846148cull, 0xff63196cb9aee2d4ull, 0xf75d6d80b31a992dull, 0x8da689f69a0e1d46ull, 0x339f7bab4aebf038ull, 0xc8ebf1d88f049688ull }}, {{ 0xc2df3ca692bccd76ull, 0xf9defe3f40d4dc50ull, 0xa9a64706ff09fbcbull, 0x888163a2048d24c5ull, 0x043ad4b0ed376235ull, 0xd9377275962de152ull }}, {{ 0x9cb85e81bb60069eull, 0xc2b5ee7888509b27ull, 0xa07ec645f663d5f7ull, 0x550de4542d836fb8ull, 0x2a4c4ee94429d617ull, 0x7c2a7897ddcacd34ull }}, {{ 0x1f33b11151c04230ull, 0x9b1b50b553260f8cull, 0x44f3bebb9fe65badull, 0x528aeb49c7225d36ull, 0xa6fb151ca9a25ce9ull, 0xd9a8b5eea9ec0409ull }}, {{ 0x3804eaad318295dcull, 0x0f1127153f7c9b79ull, 0xb18573543eff94c8ull, 0x396d30e1c757a41eull, 0x85ced31ea057a11dull, 0x80971b52a3382860ull }}, {{ 0x30312ac3ef19da98ull, 0x96ab86d47ade12bcull, 0xef36814a75fbcfd0ull, 0x3e43e8d1c96c6932ull, 0x3a143f32436c4b24ull, 0x05e7113a603193c5ull }}, {{ 0xe1ebaba7570289edull, 0xe2b3444cccacbb59ull, 0x58210ce89bd61e25ull, 0x6ea71831de3c1bfdull, 0x44ca77f6a23aef6aull, 0x3b06ac47c1efc5b4ull }}, {{ 0xd334b48966196344ull, 0xdb00aafffebf5182ull, 0x714a8116165d2d7aull, 0x5286f1f2ae5917e5ull, 0xafe8afa2564d5a28ull, 0x4e42bacd935db90aull }}, {{ 0x400f0d5dfcfde0aaull, 0x8e06adfff3792f1cull, 0x6ce90adcdfa3c6ccull, 0x3945737acf7aeef6ull, 0xdf16dc575f058593ull, 0x0e9b4c07c1a93a6aull }}, {{ 0x809685abe1eac6a2ull, 0x8c42cbff82bbd71aull, 0x411a6ca0bc65c3fdull, 0x3cb682cc1acd55a0ull, 0xb6e49b69b63737c0ull, 0x9210f84d909c482cull }}, {{ 0x05e138b6d32bc259ull, 0x7a9bf7fb1b566709ull, 0x8b083e475bf9a7e7ull, 0x5f211bf90c055842ull, 0x24ee12211e282d82ull, 0xb4a9b307a61ad1bfull }}, {{ 0x3acc37243fb59779ull, 0xca17afcf1160065aull, 0x6e526ec997c08f0aull, 0xb74b17ba78357299ull, 0x714cb54b2d91c717ull, 0x0ea0fe4c7d0c3177ull }}, {{ 0x4bfa276a7d17eabaull, 0xe4ecde16adc03f86ull, 0x4f3853dfed85966bull, 0x28eeed48b21679feull, 0x6cff14efc7b1c6edull, 0x9249eefce279eeaaull }}, {{ 0xf7c58a28e2ef2b48ull, 0xf140ace2c9827b3eull, 0x183346bf4737e036ull, 0x995544d6f4e0c3efull, 0x41f6d15dccf1c543ull, 0xb6e355e0d8c352a8ull }}, {{ 0xadb76598dd57b0d3ull, 0x6c86c0dbdf18d075ull, 0xf200c378c82ec225ull, 0xfd54b06590c7a756ull, 0x93a42daa0171b4a3ull, 0x24e15ac877a13a92ull }}, {{ 0xc929f7f8a56ce83full, 0x3d438896b6f82498ull, 0x7407a2b7d1d39576ull, 0xe54ee3f7a7cc8965ull, 0xc469c8a40e710e67ull, 0x70cd8bd4ac4c49b9ull }}, {{ 0xdba3afb67641127aull, 0x64a355e325b16df7ull, 0x884c5b2e3243d69eull, 0xf514e7ac8dfd5df6ull, 0xac21d668906a900eull, 0x6807764ebafae141ull }}, {{ 0x9464dd209e8ab8c0ull, 0xee615adf78ee4baeull, 0x52fb8fcdf6a6622full, 0x92d10cbd8be5aba1ull, 0xb9526015a429a095ull, 0x104a9f134dcccc90ull }}, {{ 0xcbf0a346316b377eull, 0x4fcd8cbab94ef4d1ull, 0x3dd39e0ba27fd5dfull, 0xbc2a7f6776f8b44dull, 0x3d37c0d869a045d7ull, 0xa2ea36c109fffda7ull }}, {{ 0xf76660bdee302ae8ull, 0x1e077f4b3d159031ull, 0x6a442c7458fe5ab9ull, 0x59a8fa0aa5b70b04ull, 0x642d88742042ba6dull, 0x5d26238a63ffe888ull }}, {{ 0xa9ffc76b4de1ad0full, 0x2c4af8f062d7a1f3ull, 0x26a9bc8b79ef8b3bull, 0x8099c46a79266e2cull, 0xe9c75489429b4845ull, 0xa37d6367e7ff1553ull }}, {{ 0xa3fdca310ad0c296ull, 0xbaedb963dc6c5384ull, 0x82a15d72c35b704full, 0x0601ac28bb804db9ull, 0x21c94d5c9a10d2b7ull, 0x62e5e20f0ff6d547ull }}, {{ 0x67e9e5ea6c2799dcull, 0x4d493de69c3b432eull, 0x1a4da67ba192631dull, 0x3c10b9975303093full, 0x51dd059e04a83b26ull, 0xdcfad4969fa454c7ull }}, {{ 0x0f22fb28398c029aull, 0x04dc6b021a509fd0ull, 0x070880d44fb7df25ull, 0x58a73fe93e1e5c77ull, 0x32a2382c2e924f7eull, 0xa1cc4de23c6b4fc9ull }}, {{ 0x975dcf923f781a05ull, 0x309c2e1507263e20ull, 0x4655084b1d2eb772ull, 0x76887f1c6d2f9ca6ull, 0xfa5631b9d1b71aefull, 0x51fb0ad65c311ddbull }}, {{ 0xe9aa1bb67ab1042full, 0xe619ccd2477e6d45ull, 0xbf5252ef23d32a75ull, 0xa154f71c43dc1e7eull, 0xc75df14231270d5aull, 0x33ce6c5f99eb2a97ull }}, {{ 0x20a51520caea29dbull, 0xfd020036caf044bbull, 0x79373d57663fa89aull, 0x4d51a71aa69930f3ull, 0xc9ab6c95eb86858aull, 0x06103bbc032fa9edull }}, {{ 0x4672d347ed25a28dull, 0xe2140223ed62af4full, 0xbc286569fe7c960dull, 0x0530870a81fbe982ull, 0xe0b23ddb33413767ull, 0x3ca255581fdca349ull }}, {{ 0xc07c40cf43785982ull, 0xd4c8156745dad918ull, 0x5993f623f0dddc8aull, 0x33e5466913d71f1bull, 0xc6f66a90008c2a06ull, 0x5e5755713e9e60e2ull }}, {{ 0x84da8818a2b37f12ull, 0x4fd0d608ba8c7af7ull, 0x7fc79d6768aa9d6cull, 0x06f4c01ac6673711ull, 0xc5a029a00579a43eull, 0xaf69566c722fc8dbull }}, {{ 0x308950f65b02f6b1ull, 0x1e285c57497ccdabull, 0xfdcc260a16aa263bull, 0x458f810bc00826aeull, 0xb841a04036c06a6cull, 0xda1d603c75ddd895ull }}, {{ 0xe55d299f8e1da2eaull, 0x2d939b68dee008afull, 0xe9f97c64e2a57e4full, 0xb79b0a75805182d5ull, 0x329042822384283aull, 0x8525c25c9aaa75d9ull }}, {{ 0xf5a3a03b8d285d28ull, 0xc7c41218b4c056deull, 0x23bedbf0da76ef17ull, 0x2c0e6897032f1c5bull, 0xf9a299156329924bull, 0x3379979e0aa89a7bull }}, {{ 0x986442538393a38eull, 0xcda8b4f70f8364b5ull, 0x6574976888a556edull, 0xb89015e61fd71b8full, 0xc059fad5df9fb6efull, 0x02bfec2c6a9608d7ull }}, {{ 0xf3ea974323c46388ull, 0x089711a69b21ef17ull, 0xf68dea155675654aull, 0x35a0dafd3e671399ull, 0x8383cc5abc3d255dull, 0x1b7f39bc29dc586dull }}, {{ 0x8729e89f65abe34bull, 0x55e6b0820f5356efull, 0xa18b24d56095f4e4ull, 0x18488de47006c403ull, 0x2325fb8b5a6375a4ull, 0x12f84159a29b7447ull }}, {{ 0x47a31639f8b6e0f3ull, 0x5b02e5149941655bull, 0x4f6f7055c5db90ebull, 0xf2d58aec6043a824ull, 0x5f7bd37187e29868ull, 0xbdb28d805a128ac7ull }}, {{ 0xcc5ede43b724c97dull, 0x8e1cf2cdfc8df590ull, 0x1a5a6359ba93a931ull, 0x7c576d3bc2a4916bull, 0xbad6426f4ed9f419ull, 0x68f9870384b96bc9ull }}, {{ 0xfbb4aea5276fdee0ull, 0x8d217c0bdd8b97a7ull, 0x0787e18149c49befull, 0xdb6a44559a6dae2full, 0x4c5e9859148388feull, 0x19bf46232f3e35e1ull }}, {{ 0xd50ed2738a5eb4bfull, 0x834ed876a773ec8full, 0x4b4ecf0ce1ae175bull, 0x9226ab580848cdd6ull, 0xfbb1f37acd2359f4ull, 0x0178bd5fd86e1accull }}, {{ 0x5294388367b30f72ull, 0x211474a28a873d9eull, 0xf1141680d0cce993ull, 0xb582b17052d80a5eull, 0xd4f382cc0361838dull, 0x0eb765be744d0c01ull }}, {{ 0x39ca35220cfe9a76ull, 0x4acc8e596948682full, 0x6ac8e10828011fbfull, 0x171aee633c7067b5ull, 0x51831bf821cf2389ull, 0x9329f9708b027812ull }}, {{ 0x41e6135481f208a0ull, 0xebfd8f7e1cd411d8ull, 0x2bd8ca51900b3d78ull, 0xe70d4fe05c640d16ull, 0x2f1f17b15217635aull, 0xbfa3be656e18b0b7ull }}, {{ 0x92fcc14d13745643ull, 0x37e79aed2048b272ull, 0xb677e72fa07066b9ull, 0x06851ec39be882ddull, 0xd736eced34e9e18dull, 0x7c656ff64cf6e727ull }}, {{ 0xbddf8d02c28b5e9bull, 0x2f0c0d4342d6f879ull, 0x20af07dc4464033cull, 0x413333a417151ca9ull, 0x682541441122cf82ull, 0xdbf65f9f01a5078eull }}, {{ 0x6abb821b9971b20cull, 0xd67884a09c65b4c1ull, 0x46d64e9aabe82059ull, 0x8c000468e6d31e9bull, 0x11748ca8ab5c1b16ull, 0x979fbc3610724b90ull }}, {{ 0x2b531513fe70f474ull, 0x60b52e461bf90f8eull, 0xc45f120ab7114382ull, 0x78002c19043f3210ull, 0xae8d7e96b1990ee1ull, 0xec3d5a1ca476f3a0ull }}, {{ 0xb13ed2c7f0698c8dull, 0xc713cebd17ba9b8dull, 0xabb6b46b26aca317ull, 0xb001b8fa2a77f4a7ull, 0xd186f1e2effa94ceull, 0x3a65851e6ca58446ull }}, {{ 0xec743bcf641f7d7eull, 0xc6c61362ed4a1388ull, 0xb5230c2f82be5eedull, 0xe01139c5a8af8e8cull, 0x2f4572dd5fc9d012ull, 0x47f733303e772ac4ull }}, {{ 0x3c8a5619e93ae6eaull, 0xc3bcc1dd44e4c359ull, 0x135e79db1b6fb549ull, 0xc0ac41b896db917full, 0xd8b67ca5bde220bcull, 0xcfa7ffe270a7aba9ull }}, {{ 0x5d675d031c4d0528ull, 0xa55f92a4b0efa17cull, 0xc1b0c28f125d14e1ull, 0x86ba9135e493aef6ull, 0x7720de796ad5475full, 0x1c8ffed8668cb4a2ull }}, {{ 0xa609a21f1b02338dull, 0x75bbba6ee95c4edbull, 0x90e79996b7a2d0d0ull, 0x4349ac1aedc4d5a3ull, 0xa748b0be2c54c9bbull, 0x1d9ff474017f0e58ull }}, {{ 0x7c6055370e160386ull, 0x995548551d9b1494ull, 0xa90bffe32c5c2824ull, 0xa0e0b90d49b05863ull, 0x88d6e76dbb4fe150ull, 0x283f8c880ef68f76ull }}, {{ 0xdbc354268cdc233full, 0xfd54d353280ecdccull, 0x9a77fedfbb99916dull, 0x48c73a84e0e373e4ull, 0x58650a49511ecd26ull, 0x927b7d5095a19aa1ull }}, {{ 0x95a1498180996076ull, 0xe550413f90940a00ull, 0x08aff4bd53ffae4bull, 0xd7c84930c8e286eeull, 0x73f266dd2b34037eull, 0xb8d2e525d8500a4dull }}, {{ 0xd84cdf0f05fdc497ull, 0xf5228c7ba5c86405ull, 0x56df8f6547fccef6ull, 0x6dd2dbe7d8d9454cull, 0x877804a3b00822f4ull, 0x383cf37a73206706ull }}, {{ 0x7300b6963be9adeaull, 0x93597cd479d3e83aull, 0x64bb99f4cfe015a5ull, 0x4a3c970e787cb4fbull, 0x4ab02e64e0515d8cull, 0x326182c87f440641ull }}, {{ 0x7e0721de5720cb20ull, 0xc17ee04cc2471248ull, 0xef5403901ec0d877ull, 0xe65de690b4df11d1ull, 0xeae1cff0c32da77aull, 0xf7cf1bd4f8a83e8cull }}, {{ 0xec4752af6747ef3full, 0x8ef4c2ff96c6b6d4ull, 0x594823a1338874adull, 0xffab01a710b6b233ull, 0x2cd21f679fc88accull, 0xae171651b6927181ull }}, {{ 0x3ac93ada08cf5876ull, 0x958f9dfbe3c32451ull, 0x7cd1644c03548ec7ull, 0xfcae1086a722f601ull, 0xc0353a0c3dd56c01ull, 0xcce6df3121b86f0bull }}, {{ 0x4bdc4c845819749full, 0xd79c2bd6e59f6b2cull, 0xe02deaf8214d93cbull, 0xdecca542875d9c0eull, 0x8214447a6a563813ull, 0x0104b7eb51345675ull }}, {{ 0xf69afd2b70fe8e37ull, 0x6c19b664f83a2fbaull, 0xc1cb2db14d07c5f6ull, 0xb3fe749949a81894ull, 0x14caacc8275e30c6ull, 0x0a2f2f312c0b6097ull }}, {{ 0xa20de3b269f18e2bull, 0x39011ff1b245dd4dull, 0x91efc8ed024dbba0ull, 0x07f08dfce090f5cfull, 0xcfeabfd189ade7c3ull, 0x65d7d7ebb871c5e6ull }}, {{ 0x548ae4f8236f8dabull, 0x3a0b3f70f6baa508ull, 0xb35dd94217095442ull, 0x4f658be0c5a99a1bull, 0x1f2b7e2f60cb0d9eull, 0xfa6e6f353471bb04ull }}, {{ 0x4d6cf1b1625b88adull, 0x44707a69a34a7253ull, 0x01aa7c94e65d4a96ull, 0x19f776c7b8a00515ull, 0x37b2edd9c7ee882full, 0xc85058140c714e29ull }}, {{ 0x064170edd79356bdull, 0xac64c82060e87741ull, 0x10a8ddd0ffa4e9deull, 0x03aaa3cd364032d2ull, 0x2cfd4a81cf5151d7ull, 0xd32370c87c6d0d9cull }}, {{ 0x3e8e694a6bc16364ull, 0xbbefd143c914a88aull, 0xa698aa29fc7122b2ull, 0x24aa66041e81fc34ull, 0xc1e4e912192d3266ull, 0x3f6267d4dc428819ull }}, {{ 0x71901ce8358de1ecull, 0x575e2ca5dace9566ull, 0x81f6a5a3dc6b5afbull, 0x6ea7fc293113da0eull, 0x92f11ab4fbc3f7fdull, 0x79d80e509a995101ull }}, {{ 0x6fa12112178ad334ull, 0x69adbe7a8c11d600ull, 0x13a278669c318dd1ull, 0x528fd99beac68491ull, 0xbd6b0b11d5a7afe6ull, 0xc2708f2609fd2a0full }}, {{ 0x5c4b4ab4eb6c4008ull, 0x20c970c978b25c04ull, 0xc458b40219ef8a2eull, 0x399e80172bc12daaull, 0x662e6eb2588cdeffull, 0x9865977c63e3a49dull }}, {{ 0x9af0eb11323a804full, 0x47de67deb6f7982bull, 0xab770815035b65cdull, 0x403100e7b58bc8abull, 0xfdd052f77580b5f8ull, 0xf3f7eadbe6e46e25ull }}, {{ 0x0d692eabf6490318ull, 0xceb00eb325abf1b4ull, 0xb2a650d22191fa04ull, 0x81ea090d1775d6b4ull, 0xea233daa97071bb2ull, 0x87af2c9704ec4d7bull }}, {{ 0x861bd2b79eda1ef0ull, 0x12e092ff78b77108ull, 0xfa7f28354fb3c430ull, 0x13245a82ea9a630eull, 0x256068a9e64714f9ull, 0x4cd7bde6313b06d7ull }}, {{ 0x3d163b2c3485355cull, 0xbcc5bdfab72a6a55ull, 0xc8f792151d05a9e0ull, 0xbf6b891d2a07de95ull, 0x75c416a2fec6d1baull, 0x006d6afdec4e4467ull }}, {{ 0x62de4fba0d341599ull, 0x5fb96bcb27a82754ull, 0xd9abb4d32238a2c7ull, 0x7a335b23a44eb1d9ull, 0x99a8e25df3c4314bull, 0x04462deb3b0eac0aull }}, {{ 0xdcaf1d448408d7f9ull, 0xbd3e35ef8c91894bull, 0x80b5103f56365bc9ull, 0xc6018f646b12f282ull, 0x0098d7ab85a9ecf2ull, 0x2abdcb304e92b86aull }}, {{ 0x9ed724ad28586fb7ull, 0x646e1b5b7daf5cf6ull, 0x0712a2795e1f95e1ull, 0xbc0f99ec2ebd7919ull, 0x05f86cb338a3417bull, 0xab69efe311bb3424ull }}, {{ 0x34676ec393745d2bull, 0xec4d1192e8d9a1a2ull, 0x46ba58bdad3bdacdull, 0x589c0339d366bafaull, 0x3bb43f0036608ed5ull, 0xb2235edeb1500968ull }}, {{ 0x0c0a53a3c28ba3acull, 0x3b02afbd18805056ull, 0xc3477768c4568c0bull, 0x7618204242034dc6ull, 0x550a76021fc59455ull, 0xf561b4b2ed205e12ull }}, {{ 0x78674465997464b9ull, 0x4e1add62f503235cull, 0xa0caaa17ab617870ull, 0x9cf14296942109c3ull, 0x52689c153db7cb56ull, 0x95d10efd4343acb7ull }}, {{ 0xb408abf7fe8bef3eull, 0x0d0ca5dd921f619cull, 0x47eaa4ecb1ceb463ull, 0x216c99e1c94a61a4ull, 0x381618d4692df162ull, 0xda2a95e4a0a4bf29ull }}, {{ 0x0856b7aff177586aull, 0x827e7aa7b539d01full, 0xcf2a713ef2130bdeull, 0x4e3e02d1dce7d06aull, 0x30dcf84c1bcb6dd5ull, 0x85a9daee466f779cull }}, {{ 0x53632cdf6ea97427ull, 0x18f0ca8d14422136ull, 0x17a86c7574be76b1ull, 0x0e6c1c32a10e242cull, 0xe8a1b2f915f24a55ull, 0x38a28d4ec05aac19ull }}, {{ 0x41dfc0ba529e8988ull, 0xf967e982ca954c1full, 0xec943c968f70a2eaull, 0x903919fa4a8d69b8ull, 0x1650fdbadb76e752ull, 0x36598513838ab903ull }}, {{ 0x92bd87473a315f4cull, 0xbe0f1f1be9d4f938ull, 0x3dca5de19a665d2dull, 0xa23b03c6e9862139ull, 0xdf29e94c92a50939ull, 0x1f7f32c3236b3a1eull }}, {{ 0xbb6748c845edb8f7ull, 0x6c9737172251bc35ull, 0x69e7aad007ffa3c9ull, 0x564e25c51f3d4c3cull, 0xb7a31cfdba725c40ull, 0x3af7fb9f62304534ull }}, {{ 0x5208d7d2bb4939a6ull, 0x3de826e757315a19ull, 0x230cac204ffc65deull, 0x5f0d79b33864fa5cull, 0x2c5f21e948779a83ull, 0x4dafd439d5e2b40full }}, {{ 0x34586e3b50dc4079ull, 0x6b11850967ed84fdull, 0x5e7eb9431fdbfaaeull, 0xb686c10033f1c799ull, 0xbbb7531cd4ac0921ull, 0x08de4a425adb0897ull }}, {{ 0x0b744e51289a84b5ull, 0x2eaf325e0f4731e4ull, 0xb0f33c9f3e97cad0ull, 0x21438a020771cbfdull, 0x55293f204eb85b51ull, 0x58aee6978c8e55edull }}, {{ 0x728b0f2b96092f16ull, 0xd2d7f7ac98c7f2e8ull, 0xe9805e3871edec21ull, 0x4ca364144a71f7e8ull, 0x539c77431333912bull, 0x76d501eb7d8f5b45ull }}, {{ 0x796e97b3dc5bd6e1ull, 0x3c6facbdf7cf7d14ull, 0x1f03ae34734b3952ull, 0xfe61e8cae873af19ull, 0x441ca89ec003abb0ull, 0xa4521332e79990b5ull }}, {{ 0xbe51ed069b9664c8ull, 0x5c5cbf6bae1ae2ccull, 0x3624ce0c80f03d36ull, 0xefd317ed1484d6fbull, 0xa91e96338024b4e9ull, 0x6b34bffd0bffa714ull }}, {{ 0x6f33424213dfefd2ull, 0x9b9f7a34cd0cdbffull, 0x1d700c7d0962641full, 0x5e3eef42cd3065d0ull, 0x9b31de03016f1123ull, 0x300f7fe277fc86ceull }}, {{ 0x58009694c6bf5e38ull, 0x143ac610028097faull, 0x26607ce25dd7e93cull, 0xae75589c03e3fa21ull, 0x0ff2ac1e0e56ab61ull, 0xe09afed8afdd4412ull }}, {{ 0x7005e1cfc379ae2dull, 0xca4bbca01905efc7ull, 0x7fc4e0d7aa6f1c58ull, 0xd095761826e7c54bull, 0x9f7ab92c8f62b1d0ull, 0xc60df476dea4a8b4ull }}, {{ 0x603ad21da2c0cdbeull, 0xe6f55e40fa3b5dcaull, 0xfdb0c86ca8571b77ull, 0x25d69cf1850db4f2ull, 0x3acb3bbd99daf228ull, 0xbc8b8ca4b26e970eull }}, {{ 0xc24c35285b88096aull, 0x0595ae89c651a9e7ull, 0xe8e7d43e936712afull, 0x7a62216f3289117dull, 0x4bf05568028d7591ull, 0x5d737e6ef851e68eull }}, {{ 0x96fa139393505e23ull, 0x37d8d161bf30a30dull, 0x190e4a71c206bad6ull, 0xc7d54e57f95aaeebull, 0xf7635610198697aeull, 0xa682f055b333018eull }}, {{ 0xe5c4c3c3c123ad63ull, 0x2e782dd177e65e87ull, 0xfa8ee87194434c5eull, 0xce550f6fbd8ad52eull, 0xa9e15ca0ff41ecd3ull, 0x811d6358fffe0f95ull }}, {{ 0xf9afa5a58b64c5dbull, 0xd0b1ca2eaeffb14eull, 0xc995146fcaa0fbadull, 0x0f529a5d676c53d5ull, 0xa2cd9e49f8934046ull, 0x0b25e179ffec9bd8ull }}, {{ 0xc0dc787771efba8cull, 0x26f1e5d2d5fced15ull, 0xdfd2cc5dea49d4caull, 0x993a07a60a3b4659ull, 0x5c082ee3b5c082bcull, 0x6f7acec3ff3e1676ull }}, {{ 0x889cb4aa735d4976ull, 0x8572fa3c5be142d9ull, 0xbe3bfbab26e24fe5ull, 0xfc444c7c6650bf82ull, 0x9851d4e519851b5dull, 0x5acc13a7f86ce09full }}, {{ 0x561f0ea881a4de9cull, 0x367dc65b96cc9c7full, 0x6e57d4af84d71ef7ull, 0xdaaafcdbff277b1bull, 0xf33250f2ff3311abull, 0x8bf8c48fb440c63bull }}, {{ 0x5d3692951070b21cull, 0x20e9bf93e3fe1cf9ull, 0x4f6e4edb306735a8ull, 0x8aade097f78acf12ull, 0x7ff7297df7feb0b6ull, 0x77b7ad9d0a87be57ull }}, {{ 0xa421b9d2a466f517ull, 0x49217bc6e7ed21bdull, 0x1a4f148fe4081891ull, 0x6acac5efab6c16b7ull, 0xffa79eebaff2e721ull, 0xad2cc822694d6f6aull }}, {{ 0x6951423a6c0592e2ull, 0xdb4ed5c50f435168ull, 0x0716cd9ee850f5acull, 0x2bebbb5cb238e327ull, 0xfc8c3534df7d074eull, 0xc3bfd1581d065a2dull }}, {{ 0x1d2c96483837bcd6ull, 0x911459b298a12e14ull, 0x46e40835132998c0ull, 0xb735519ef638df86ull, 0xdd7a1410bae2490dull, 0xa57e2d71223f85cbull }}, {{ 0x23bdded2322d6058ull, 0xaacb80f9f64bccc9ull, 0xc4e85212bf9ff785ull, 0x281530359e38bb3eull, 0xa6c4c8a74cd6da89ull, 0x76edc66b567b39f6ull }}, {{ 0x656ab435f5c5c370ull, 0xabf309c39ef5ffdbull, 0xb11334bb7c3fab38ull, 0x90d3e2182e375073ull, 0x83afd6890064895bull, 0xa549c03160d043a2ull }}, {{ 0xf62b0a1b99b9a262ull, 0xb77e61a4359bfe91ull, 0xeac00f52da7cb036ull, 0xa846d4f1ce292484ull, 0x24de615a03ed5d93ull, 0x74e181edc822a459ull }}, {{ 0x9dae6514014057d1ull, 0x2aefd06a1817f1b3ull, 0x2b80993c88dee223ull, 0x92c451720d9b6d31ull, 0x70afcd842745a7c4ull, 0x90cf1349d15a6b7bull }}, {{ 0x28cff2c80c836e2bull, 0xad5e2424f0ef7104ull, 0xb305fc5d58b4d55full, 0xbbab2e74881243ebull, 0x66de072988b88dadull, 0xa816c0e22d8832d2ull }}, {{ 0x981f7bd07d224db2ull, 0xc5ad6971695a6a29ull, 0xfe3bdba5771055bcull, 0x54afd08d50b6a734ull, 0x04ac479f573588c9ull, 0x90e388d5c751fc38ull }}, {{ 0xf13ad624e35708f4ull, 0xb8c61e6e1d88259full, 0xee569476a6a3595full, 0x4ede258527228811ull, 0x2ebacc39681757ddull, 0xa8e35859c933da30ull }}, {{ 0x6c4c5d70e1665986ull, 0x37bd304d2751783full, 0x4f61cca282617dbdull, 0x14ad7733875950b3ull, 0xd34bfa3e10e96ea5ull, 0x98e17381dc0685e1ull }}, {{ 0x3afba668cdff7f38ull, 0x2d63e303892eb27aull, 0x19d1fe5917cee964ull, 0xcec6a803497d2701ull, 0x40f7c66ca91e5272ull, 0xf8ce831298413ad2ull }}, {{ 0x4dd480180bfaf830ull, 0xc5e6de235bd2f8c6ull, 0x0233ef7aee151de9ull, 0x13c29020dee3860bull, 0x89adc03e9b2f387cull, 0xb8111eb9f28c4c36ull }}, {{ 0x0a4d00f077cdb1deull, 0xbb04ad61963db7bfull, 0x16075acd4cd32b21ull, 0xc599a148b4e33c6eull, 0x60c982720fd834d8ull, 0x30ab3343797afa21ull }}, {{ 0x67020964ae08f2b0ull, 0x4e2ec5cfde692d76ull, 0xdc498c05003faf51ull, 0xb8004cd710e05c4cull, 0xc7df18749e721077ull, 0xe6b000a2becdc54dull }}, {{ 0x06145deecc597adcull, 0x0dd3ba1eb01bc6a0ull, 0x9adf7832027cd92dull, 0x30030066a8c39b00ull, 0xceb6f48e3074a4adull, 0x02e0065b7409b509ull }}, {{ 0x3ccbab53fb7ecc96ull, 0x8a454532e115c240ull, 0x0cbab1f418e07bc2ull, 0xe01e040297a40e06ull, 0x13258d8de48e6ec3ull, 0x1cc03f9288611262ull }}, {{ 0x5ff4b147d2f3fddbull, 0x66b4b3fccad99682ull, 0x7f4af388f8c4d599ull, 0xc12c2819ec688c3cull, 0xbf77878aed9053a6ull, 0x1f827bb953cab7d4ull }}, {{ 0xbf8eecce3d87ea91ull, 0x030f07dfec7fe117ull, 0xf8ed8359b7b057feull, 0x8bb991033c157a5cull, 0x7aab4b6d47a34483ull, 0x3b18d53d45eb2e4full }}, {{ 0x7b95400e674f29a7ull, 0x1e964ebf3cfecaedull, 0xb94721812ce36fecull, 0x753faa2058d6c7a1ull, 0xcab0f244cc60ad23ull, 0x4ef85464bb2fcf1aull }}, {{ 0xd3d480900917a083ull, 0x31df137861f3ed46ull, 0x3cc74f0bc0e25f39ull, 0x947ca5437863cc51ull, 0xeae976affbc6c362ull, 0x15b34bef4fde170bull }}, {{ 0x464d05a05aec451cull, 0xf2b6c2b3d38744c4ull, 0x5fc9167588d7b83bull, 0xccde74a2b3e5fb2cull, 0x2d1ea2dfd5c3a1d9ull, 0xd900f7591eace677ull }}, {{ 0xbf0238438d3ab316ull, 0x7b239b064348afaaull, 0xbddae097586d3257ull, 0x00b08e5b06fbcfbbull, 0xc3325cbe59a45282ull, 0x7a09a97b32c100a7ull }}, {{ 0x761632a3844afee1ull, 0xcf640e3ea0d6dcabull, 0x6a8cc5e97443f76aull, 0x06e58f8e45d61d55ull, 0x9ff79f6f806b3914ull, 0xc4609ecffb8a068dull }}, {{ 0x9cddfa632aedf4c9ull, 0x19e88e7248649eb2ull, 0x297fbb1e8aa7aa2cull, 0x44f79b8eba5d2556ull, 0x3fac3a5b04303ac8ull, 0xabc6341fd3644188ull }}, {{ 0x20abc7dfad4b8fd9ull, 0x03159076d3ee32faull, 0x9efd4f316a8ca5b9ull, 0xb1ac139347a3755dull, 0x7cba478e29e24bd2ull, 0xb5be093e41ea8f52ull }}, {{ 0x46b5cebcc4f39e75ull, 0x1ed7a4a4474dfdc5ull, 0x35e517ee297e793aull, 0xf0b8c3c0cc6295a8ull, 0xdf46cb8da2d6f63aull, 0x196c5c6e93299938ull }}, {{ 0xc31a135fb1843095ull, 0x346c6e6ac90be9b4ull, 0x1af2ef4d9ef0bc45ull, 0x6737a587fbd9d892ull, 0xb8c3f3885c659e4dull, 0xfe3b9c51bf9ffc38ull }}, {{ 0x9f04c1bcef29e5d5ull, 0x0c3c502bda77210full, 0x0d7d590835675ab4ull, 0x082c774fd68275b5ull, 0x37a783539bf82f06ull, 0xee541b317c3fda37ull }}, {{ 0x362f916157a2fa4full, 0x7a5b21b688a74a9cull, 0x86e57a5216098b08ull, 0x51bca91e61189912ull, 0x2c8b214417b1d63cull, 0x4f490feeda7e8628ull }}, {{ 0x1ddbadcd6c5dc717ull, 0xc78f51215688ea1aull, 0x44f6c734dc5f6e54ull, 0x315e9b2fcaf5fab9ull, 0xbd6f4ca8ecf25e5bull, 0x18da9f5488f13d91ull }}, {{ 0x2a94ca063ba9c6e7ull, 0xcb992b4d61592505ull, 0xb1a3c8109bba4f4full, 0xedb20fdded9bcb3cull, 0x6658fe994177af8full, 0xf88a394d596c67b1ull }}, {{ 0xa9cfe43e54a1c502ull, 0xf3fbb105cd7b7233ull, 0xf065d0a61547191dull, 0x48f49eab4815f05eull, 0xff79f1fc8eacdb9full, 0xb5663d057e3c0cedull }}, {{ 0xa21eea6f4e51b215ull, 0x87d4ea3a06d27604ull, 0x63fa267cd4c6fb2bull, 0xd98e32b0d0db63b5ull, 0xfac373dd92c09438ull, 0x15fe6236ee58814bull }}, {{ 0x553528590f30f4d1ull, 0x4e51264444389c2eull, 0xe7c580e04fc5cfb3ull, 0x7f8dfae82891e515ull, 0xcba286a7bb85ca38ull, 0xdbefd6254f750cf7ull }}, {{ 0x5413937a97e99027ull, 0x0f2b7eaaaa3619cfull, 0x0db708c31dba1d01ull, 0xfb8bcd1195b2f2dbull, 0xf459428d5339e634ull, 0x975e5d751a9281adull }}, {{ 0x48c3c2c9ef1fa184ull, 0x97b2f2aaa61d0219ull, 0x8926579f2945220aull, 0xd37602afd8fd7c8eull, 0x8b7c99854042fe11ull, 0xe9afa69309b910cbull }}, {{ 0xd7a59be3573c4f25ull, 0xecfd7aaa7d2214fcull, 0x5b7f6c379cb35469ull, 0x429c1ade79e6dd91ull, 0x72ddff34829decb2ull, 0x20dc81be613aa7f3ull }}, {{ 0x6c7816e1685b1770ull, 0x41e6caa8e354d1e0ull, 0x92fa3a2c1f014c23ull, 0x9a190cb0c304a7adull, 0x7cabf80d1a2b3ef6ull, 0x489d116fcc4a8f82ull }}, {{ 0x3cb0e4ce138eea5dull, 0x9303ea98e15032c4ull, 0xbdc645b9360cf960ull, 0x04fa7ee79e2e8cc7ull, 0xdeb7b08305b075a2ull, 0xd622ae5dfae99b18ull }}, {{ 0x5ee8f00cc39527a6ull, 0xbe2729f8cd21fbaaull, 0x69beb93c1c81bdc5ull, 0x31c8f50c2dd17fcdull, 0xb32ce51e38e49854ull, 0x5d5acfabcd200ef8ull }}, {{ 0xb519607fa3d38c7bull, 0x6d87a3b80353d4a7ull, 0x21733c591d1169b9ull, 0xf1d99279ca2efe06ull, 0xffc0f32e38edf349ull, 0xa58c1cb6034095b6ull }}, {{ 0x12fdc4fc66437cd0ull, 0x474c653021464e8dull, 0x4e805b7b22ae213eull, 0x727fb8c1e5d5ec3dull, 0xfd897fce394b80e3ull, 0x77791f1c2085d925ull }}, {{ 0xbde9b1dbfea2e021ull, 0xc8fbf3e14cbf1182ull, 0x110392cf5acd4c6eull, 0x78fd3792fa5b3a65ull, 0xe75efe0e3cf308e2ull, 0xaabb3719453a7b7bull }}, {{ 0x6b20f297f25cc14aull, 0xd9d786ccff76af1bull, 0xaa23bc198c04fc53ull, 0xb9e42bbdc79047f2ull, 0x09b5ec8e617e58d8ull, 0xab5026fcb448d2d7ull }}, {{ 0x2f4979ef779f8ce6ull, 0x826b4401faa2d712ull, 0xa56558ff7831db46ull, 0x42e9b569cba2cf7aull, 0x611b3d8fceef7877ull, 0xb12185df0ad83c66ull }}, {{ 0xd8dec35aac3b80f9ull, 0x1830a813ca5c66b5ull, 0x75f579fab1f290c1ull, 0x9d211621f45c1acaull, 0xcb10679e155ab4a8ull, 0xeb4f3ab66c725bffull }}, {{ 0x78b3a18aba5309beull, 0xf1e690c5e79c031aull, 0x9b96c3caf379a78aull, 0x234add538b990be8ull, 0xeea40c2cd58b0e96ull, 0x31184b203c7797fdull }}, {{ 0xb7044f6b473e6170ull, 0x7301a7bb0c181f08ull, 0x13e3a5ed82c08b6dull, 0x60eca54373fa7716ull, 0x526879c0576e91ddull, 0xeaf2ef425cabefebull }}, {{ 0x262b1a30c86fce5full, 0x7e108d4e78f13657ull, 0xc6e47b471b857246ull, 0xc93e74a287c8a6dcull, 0x3814c1836a51b2a5ull, 0x2d7d58979eb75f31ull }}, {{ 0x7daf05e7d45e0fb7ull, 0xeca58510b96c1f67ull, 0xc4ecd0c7133676c0ull, 0xdc708e594dd6849full, 0x30cf8f222730fa79ull, 0xc6e575ec3329b7ecull }}, {{ 0xe8d63b0e4bac9d24ull, 0x3e7732a73e393a0aull, 0xb14027c6c020a389ull, 0x9c658f7d0a612e3dull, 0xe81b975587e9c8c2ull, 0xc4f69b39ffa12f39ull }}, {{ 0x185e4e8ef4be2368ull, 0x70a7fa886e3c446dull, 0xec818dc38146635cull, 0x1bf79ae267cbce68ull, 0x1113e9574f21d79aull, 0xb1a21043fc4bd843ull }}, {{ 0xf3af11958f6d620bull, 0x668fc9544e5aac42ull, 0x3d0f89a30cbfe19cull, 0x17ac0cd80df61019ull, 0xaac71d6917526c05ull, 0xf054a2a7daf6729eull }}, {{ 0x84d6afd79a45d46full, 0x019ddd4b0f8aba9dull, 0x629b605e7f7ed01cull, 0xecb880708b9ca0fcull, 0xabc7261ae9383832ull, 0x634e5a8e8da07a32ull }}, {{ 0x3062de6c06ba4c53ull, 0x102aa4ee9b6b4a27ull, 0xda11c3b0faf42118ull, 0x3f350465741e49dbull, 0xb5c77d0d1c3231fdull, 0xe10f89918844c5faull }}, {{ 0xe3dcb0384346fb3cull, 0xa1aa71521230e587ull, 0x84b1a4e9cd894af0ull, 0x78122bf6892ee296ull, 0x19cae28319f5f3e4ull, 0xca9b5faf52afbbcbull }}, {{ 0xe69ee232a0c5d059ull, 0x50a86d34b5e8f74eull, 0x2ef07122075ced66ull, 0xb0b5b7a15bd4d9e1ull, 0x01ecd91f039b86ecull, 0xea11bcd93add55efull }}, {{ 0x0234d5fa47ba2375ull, 0x2694440f1b19a915ull, 0xd5646b5449a145ffull, 0xe7192c4d965082cbull, 0x13407b362413453eull, 0x24b1607c4ca55b56ull }}, {{ 0x16105bc6cd456294ull, 0x81caa8970f009ad2ull, 0x55ec314ae04cbbf7ull, 0x06fbbb07df251bf6ull, 0xc084d01d68c0b475ull, 0x6eedc4dafe75915cull }}, {{ 0xdca395c404b5d9c4ull, 0x11ea95e696060c34ull, 0x5b39ececc2ff57abull, 0x45d54e4eb773179full, 0x8530212617870c92ull, 0x5549b08df097ad9full }}, {{ 0x9e63d9a82f1a81acull, 0xb329db01dc3c7a10ull, 0x9043413f9df96caeull, 0xba550f132a7eec39ull, 0x33e14b7ceb467db6ull, 0x54e0e58b65ecc83bull }}, {{ 0x2fe68091d70910b6ull, 0xffa28e129a5cc4a6ull, 0xa2a08c7c2bbe3ed2ull, 0x475296bfa8f53a3full, 0x06ccf2e130c0e923ull, 0x50c8f771fb3fd250ull }}, {{ 0xdf0105b2665aa71eull, 0xfc598cba079fae7dull, 0x5a457cd9b56e743dull, 0xc939e37c9994467cull, 0x44017ccbe7891b60ull, 0x27d9aa73d07e3720ull }}, {{ 0xb60a38f7ff8a8727ull, 0xdb7f7f444c3cd0eaull, 0x86b6e08116508a6bull, 0xdc42e2ddffcac0dbull, 0xa80edff70b5b11c7ull, 0x8e80a88624ee2742ull }}, {{ 0x1c6639affb694787ull, 0x92faf8aafa60292bull, 0x4324c50adf256836ull, 0x9a9cdcabfdeb8893ull, 0x9094bfa6718eb1ceull, 0x9106953d714d889aull }}, {{ 0x1bfe40dfd21ccb41ull, 0xbdcdb6adc7c19bafull, 0x9f6fb26cb7761221ull, 0x0a209eb7eb3355c0ull, 0xa5cf7c806f92f212ull, 0xaa41d4666d075609ull }}, {{ 0x17ee88be351ff08bull, 0x6a0922c9cd9014d7ull, 0x3a5cf83f2a9cb551ull, 0x6546332f30015986ull, 0x7a1add045bbd74b4ull, 0xa6924c0042495c60ull }}, {{ 0xef51576e133f6572ull, 0x245b5be207a0d066ull, 0x47a1b277aa1f152eull, 0xf4bdffd7e00d7f3eull, 0xc50ca22b95668f0bull, 0x81b6f80296dd9bc4ull }}, {{ 0x592d6a4cc079f678ull, 0x6b9196d44c482405ull, 0xcc50f8aca536d3cdull, 0x8f6bfe6ec086f86eull, 0xb27e55b3d6019677ull, 0x1125b019e4a815afull }}, {{ 0x7bc626ff84c3a0adull, 0x33afe44afad16835ull, 0xfb29b6be74244606ull, 0x9a37f0538545b453ull, 0xf8ef59065c0fe0abull, 0xab78e102ee90d8dcull }}, {{ 0xd5bd85fb2fa446c2ull, 0x04deeaedcc2e1216ull, 0xcfa12370896abc3eull, 0x062f634334b90b47ull, 0xb9597a3f989ec6b4ull, 0xb2b8ca1d51a878a1ull }}, {{ 0x59673bcfdc6ac392ull, 0x30b52d49f9ccb4e4ull, 0x1c4b62655e2b5a6cull, 0x3dd9e0a00f3a70ceull, 0x3d7ec67bf633c308ull, 0xfb37e5253094b651ull }}, {{ 0x7e08561e9c2ba3b9ull, 0xe713c4e3c1ff10ebull, 0x1af1d7f5adb18839ull, 0x6a82c6409848680dull, 0x66f3c0d79e059e52ull, 0xd02ef373e5cf1f2cull }}, {{ 0xec535d3219b46536ull, 0x06c5b0e593f6a932ull, 0x0d726f98c8ef5243ull, 0x291bbe85f2d41083ull, 0x0585886c2c382f38ull, 0x21d58286fa1737bcull }}, {{ 0x3b41a3f5010bf41bull, 0x43b8e8f7c7a29bfdull, 0x86785bf7d959369eull, 0x9b15713b7c48a51eull, 0x37375439ba31d831ull, 0x52571945c4e82d58ull }}, {{ 0x509067920a77890dull, 0xa53919adcc5a17e4ull, 0x40b397ae7d7c222eull, 0x0ed66c52dad67331ull, 0x28294a4145f271f0ull, 0x3766fcb9b111c572ull }}, {{ 0x25a40bb468ab5a83ull, 0x743b00c9fb84eeebull, 0x8703ecd0e6d955d2ull, 0x94603b3c8c607fecull, 0x919ce68cbb787360ull, 0x2a05df40eab1b675ull }}, {{ 0x7868750c16b1891eull, 0x8a4e07e3d331552full, 0x46274029047d5a38ull, 0xcbc2505d7bc4ff3dull, 0xb021017f52b481c5ull, 0xa43ab8892af12097ull }}, {{ 0xb4149278e2ef5b30ull, 0x670c4ee63fed53daull, 0xbd88819a2ce58635ull, 0xf59723a6d5b1f864ull, 0xe14a0ef93b0d11b9ull, 0x6a4b355bad6b45ecull }}, {{ 0x08cdb8b8dd598fe2ull, 0x067b14fe7f45468bull, 0x67551005c0f73e16ull, 0x97e7648458f3b3efull, 0xcce495bc4e82b143ull, 0x26f01594c630bb40ull }}, {{ 0x58093738a57f9ed8ull, 0x40ced1f0f8b4c16eull, 0x0952a03989a86cdcull, 0xef09ed2b7985075aull, 0x00edd95b111aeca3ull, 0x8560d7cfbde75088ull }}, {{ 0x705c283676fc3474ull, 0x88143369b70f8e4full, 0x5d3a423f6094409aull, 0x566343b2bf324984ull, 0x094a7d8eab0d3e67ull, 0x35c86e1d6b092550ull }}, {{ 0x63999220a5da0c88ull, 0x50ca0221269b8f1aull, 0xa4469679c5ca8609ull, 0x5fe0a4fb77f6df2bull, 0x5ce8e792ae847009ull, 0x19d44d262e5b7520ull }}, {{ 0xe3ffb5467a847d4dull, 0x27e4154b82139707ull, 0x6ac1e0c1b9e93c5dull, 0xbec671d2afa4b7b4ull, 0xa1190bbad12c605dull, 0x024b037dcf929343ull }}, {{ 0xe7fd14c0c92ce4ffull, 0x8ee8d4f314c3e64eull, 0x2b92c791431c5ba3ull, 0x73c0723adc6f2d0cull, 0x4afa754c2bbbc3a9ull, 0x16ee22ea1bb9c0a4ull }}, {{ 0x0fe2cf87dbc0f1f4ull, 0x9518517ecfa6ff15ull, 0xb3bbcbac9f1b9463ull, 0x8584764c9c57c279ull, 0xedc894f9b555a49eull, 0xe54d5d251541866aull }}, {{ 0x9edc1b4e95897388ull, 0xd2f32ef41c85f6d2ull, 0x0555f4be3713cbe3ull, 0x372c9efe1b6d98c1ull, 0x49d5d1c115586e31ull, 0xf505a372d48f402dull }}, {{ 0x34991111d75e834full, 0x3d7fd5891d3ba43aull, 0x355b8f6e26c5f6e6ull, 0x27be35ed1247f78aull, 0xe25a318ad5744decull, 0x9238627c4d9881c4ull }}, {{ 0x0dfaaab269b12111ull, 0x66fe575b24546a46ull, 0x15939a4d83bba4feull, 0x8d6e1b42b6cfab66ull, 0xd785ef6c568b0b39ull, 0xb633d8db07f511b0ull }}, {{ 0x8bcaaaf820eb4aabull, 0x05ef698f6b4c26bcull, 0xd7c40707255471f0ull, 0x864d109b241cb1fcull, 0x6b3b5a3b616e703full, 0x1e06788e4f92b0e8ull }}, {{ 0x75eaadb14930eaaeull, 0x3b5a1f9a30f9835dull, 0x6da84647754c7360ull, 0x3f02a60f691ef3e0ull, 0x30518651ce50627bull, 0x2c40b58f1bbae914ull }}, {{ 0x9b2ac8ecdbe92acfull, 0x51853c05e9bf21a6ull, 0x4892beca94fc81c2ull, 0x761a7c9a1b3586c4ull, 0xe32f3f320f23d8d0ull, 0xba871797154d1ac9ull }}, {{ 0x0fabd940971bac17ull, 0x2f34583b21775082ull, 0xd5bb73e9d1dd1197ull, 0x9d08de05101743aaull, 0xdfd877f497667824ull, 0x4946ebe6d5030be2ull }}, {{ 0x9cb67c85e714b8e4ull, 0xd80b724f4ea92514ull, 0x5952872232a2afe7ull, 0x2258ac32a0e8a4acull, 0xbe74af8dea00b16eull, 0xdcc53704521e76dcull }}, {{ 0x1f20dd3b06cf38e3ull, 0x70727719129b72ceull, 0x7d394755fa5adf0eull, 0x5776b9fa49166ebbull, 0x708edb8b2406ee4dull, 0x9fb4262b3530a49full }}, {{ 0x3748a44e441838e1ull, 0x6478a6faba127c0dull, 0xe43cc95bc78cb690ull, 0x6aa343c6dae05352ull, 0x6594936f68454f05ull, 0x3d097db013e66e3aull }}, {{ 0x28d66b0ea8f238cbull, 0xecb685cb44b8d884ull, 0xea5fdd95cb7f21a3ull, 0x2a60a5c48cc3413cull, 0xf7cdc25a12b51636ull, 0x625ee8e0c7004e47ull }}, {{ 0x98602e92997637ebull, 0x3f2139f0af387529ull, 0x27bea7d9f2f75067ull, 0xa7c679ad7fa08c61ull, 0xae099784bb12de1dull, 0xd7b518c7c6030ecfull }}, {{ 0xf3c1d1b9fe9e2f29ull, 0x774c4366d834939full, 0x8d728e837da92408ull, 0x8dc0c0c6fc457bcbull, 0xcc5feb2f4ebcad28ull, 0x6d12f7cdbc1e941cull }}, {{ 0x85923143f22dd79cull, 0xa8faa204720dc43full, 0x86799122e89b6854ull, 0x898787c5dab6d5f3ull, 0xfbbf2fd9135ec395ull, 0x42bdae095931c91full }}, {{ 0x37b5eca775ca6c1bull, 0x99ca542c7489aa7bull, 0x40bfab5d1612134eull, 0x5f4b4dba8b245b83ull, 0xd577de7ac1b3a3d7ull, 0x9b68cc5d7bf1db3full }}, {{ 0x2d1b3e8a99e8390aull, 0x01e749bc8d60a8d0ull, 0x877cb1a2dcb4c112ull, 0xb8f109496f6b9320ull, 0x56aeb0cb91046669ull, 0x1217fba6d772907eull }}, {{ 0xc310716a03123a68ull, 0x1308e15d85c69821ull, 0x4adef05c9f0f8ab4ull, 0x396a5cde5a33bf45ull, 0x62d2e7f3aa2c0021ull, 0xb4efd4846a79a4efull }}, {{ 0x9ea46e241eb6480dull, 0xbe58cda739c1f151ull, 0xecb5639e369b6b08ull, 0x3e27a0af860578b4ull, 0xdc3d0f84a5b8014cull, 0x115e4d2c28c07159ull }}, {{ 0x326c4d69331ed080ull, 0x6f78088841936d30ull, 0x3f15e42e22122e57ull, 0x6d8c46db3c36b711ull, 0x9a629b2e79300cfaull, 0xadaf03b997846d82ull }}, {{ 0xf83b061bff342504ull, 0x5ab055528fc243e1ull, 0x76dae9cd54b5cf6aull, 0x477ac4905a2326acull, 0x07da0fd0bbe081c8ull, 0xc8d6253feb2c471aull }}, {{ 0xb24e3d17f8097226ull, 0x8ae355399d96a6d3ull, 0xa48d22054f1a1a27ull, 0xcacbada3855f82bcull, 0x4e849e2756c511d2ull, 0xd85d747f2fbac704ull }}, {{ 0xf70e62efb05e757dull, 0x6ce1544027e28444ull, 0x6d8354351705058bull, 0xebf4c86335bb1b5eull, 0x112e2d8963b2b23bull, 0x73a68cf7dd4bc62bull }}, {{ 0xa68fdd5ce3b096e2ull, 0x40cd4a818ed92ab1ull, 0x47214a12e6323772ull, 0x378fd3e0194f11b0ull, 0xabcdc75de4faf657ull, 0x848181aea4f5bdaeull }}, {{ 0x819ea5a0e4e5e4d5ull, 0x8804e90f947baaf0ull, 0xc74ce4bcfdf62a76ull, 0x2b9e46c0fd16b0e2ull, 0xb609c9aaf1cd9f68ull, 0x2d0f10d2719968d2ull }}, {{ 0x10327848f0faf04full, 0x50311a9bccd4ad65ull, 0xc900ef61eb9da8a1ull, 0xb42ec389e2e2e8dbull, 0x1c61e0ad72083a11ull, 0xc296a8386ffe183bull }}, {{ 0xa1f8b2d969cd6317ull, 0x21eb0a16004ec5f2ull, 0xda0959d33428964dull, 0x09d3a362dcdd1895ull, 0x1bd2c6c6745244b1ull, 0x99e292345fecf24full }}, {{ 0x53b6fc7e2205dee8ull, 0x532e64dc0313bb7aull, 0x845d82400995df03ull, 0x624461dca0a2f5daull, 0x163bc3c08b36aeeaull, 0x02d9b60bbf417717ull }}, {{ 0x4525dced543ab510ull, 0x3fcff0981ec552c7ull, 0x2ba716805fdab621ull, 0xd6abd29e465d9a89ull, 0xde55a5857022d527ull, 0x1c811c75788ea6e6ull }}, {{ 0xb37aa1454a4b129dull, 0x7e1f65f133b53bc8ull, 0xb486e103be8b1d4cull, 0x62b63a2ebfa8095bull, 0xaf587736615c538eull, 0x1d0b1c96b5928504ull }}, {{ 0x02ca4cb4e6eeba24ull, 0xed39fb6c051455d7ull, 0x0d44ca25716f24fcull, 0xdb1e45d37c905d95ull, 0xd974a81fcd9b438full, 0x226f1de317b9322eull }}, {{ 0x1be6ff110553456aull, 0x4443d23832cb5a66ull, 0x84afe5766e5771e1ull, 0x8f2eba42dda3a7d2ull, 0x7e8e913e0810a39eull, 0x58572adeed3bf5d4ull }}, {{ 0x1705f6aa3540b628ull, 0xaaa63631fbf187fdull, 0x2edef6a04f6a72ccull, 0x97d3469ca8648e39ull, 0xf191ac6c50a66431ull, 0x7367acb544579a4cull }}, {{ 0xe63ba2a614871d94ull, 0xaa7e1df3d76f4fe2ull, 0xd4b5a2431a287bfeull, 0xee40c21e93ed8e3bull, 0x6fb0bc3b267fe9efull, 0x820cbf14ab6c0701ull }}, {{ 0xfe545a7ccd4727cbull, 0xa8ed2b866a591edcull, 0x4f18569f0594d7f2ull, 0x4e879531c7478e56ull, 0x5ce75a4f80ff235full, 0x147f76ceb238460eull }}, {{ 0xef4b88e004c78df2ull, 0x9943b340277b34a1ull, 0x16f3623637d06f7aull, 0x114bd3f1c8cb8f5full, 0xa109871b09f761b9ull, 0xccfaa412f632bc8full }}, {{ 0x58f358c02fcb8b76ull, 0xfca500818ad00e53ull, 0xe581d61e2e245ac9ull, 0xacf64771d7f399b6ull, 0x4a5f470e63a9d13aull, 0x01ca68bd9dfb5d9cull }}, {{ 0x79817781ddf3729cull, 0xde72050f6c208f41ull, 0xf7125d2dcd6b8be3ull, 0xc19eca726f840124ull, 0xe7b8c68fe4a22c4aull, 0x11e817682bd1a81aull }}, {{ 0xbf0eab12ab827a1cull, 0xb074329a3945988eull, 0xa6b7a3ca063376e6ull, 0x9033e8785b280b71ull, 0x0d37c19eee55baebull, 0xb310ea11b630910dull }}, {{ 0x7692aebab318c519ull, 0xe489fa063cb7f593ull, 0x832c65e43e02a502ull, 0xa20714b38f907270ull, 0x842d90354f594d33ull, 0xfea924b11de5aa82ull }}, {{ 0xa1bad34afef7b2fcull, 0xed63c43e5f2f97c2ull, 0x1fbbfaea6c1a721cull, 0x5446cf039ba47865ull, 0x29c7a215197d0404ull, 0xf29b6eeb2af8a919ull }}, {{ 0x514c40edf5acfdd5ull, 0x45e5aa6fb7dbed9aull, 0x3d57cd2839087521ull, 0x4ac41624146cb3f3ull, 0xa1cc54d2fee2282bull, 0x7a12552fadb69afbull }}, {{ 0x2cfa894b98c1ea51ull, 0xbaf8a85d2e974807ull, 0x656e03923a54934cull, 0xeba8dd68cc3f0780ull, 0x51fb503df4d591b0ull, 0xc4b753dcc9220dd4ull }}, {{ 0xc1c95cf3f7932726ull, 0x4db693a3d1e8d047ull, 0xf64c23b6474dc0ffull, 0x3498a617fa764b03ull, 0x33d1226b9057b0e9ull, 0xaf29469fdb548a4bull }}, {{ 0x91dda187abbf8780ull, 0x0921c466331822cdull, 0x9ef9651ec90989f9ull, 0x0df67cefc89eee27ull, 0x062b5833a36ce91cull, 0xd79cc23e914d66f0ull }}, {{ 0xb2a84f4cb57b4afeull, 0x5b51abfdfef15c07ull, 0x35bdf333da5f63baull, 0x8ba0e15dd6354d8cull, 0x3db1720462411b18ull, 0x6c1f9671ad060560ull }}, {{ 0xfa9318ff16d0edf1ull, 0x9130b7ebf56d984cull, 0x196b800687b9e547ull, 0x7448cdaa5e15077aull, 0x68ee742bd68b0ef5ull, 0x393be070c23c35c2ull }}, {{ 0xc9bef9f6e4294b69ull, 0xabe72f379647f301ull, 0xfe3300414d42f4cbull, 0x8ad808a7acd24ac4ull, 0x195089b6616e9596ull, 0x3c56c467965a1998ull }}, {{ 0xe175c3a4e99cf21aull, 0xb707d82bdecf7e11ull, 0xedfe028d049d8ff4ull, 0x6c70568cc036ebb1ull, 0xfd25611fce51d7e1ull, 0x5b63ac0bdf84fff0ull }}, {{ 0xce99a47120217500ull, 0x264e71b6b41aecb2ull, 0x4bec19822e279f8full, 0x3c63617f822534f3ull, 0xe375cb3e0f326eceull, 0x91e4b876bb31ff69ull }}, {{ 0x12006c6b414e91feull, 0x7f107123090d3efcull, 0xf738ff15cd8c3b97ull, 0x5be1cefb15741180ull, 0xe299f06c97f8540eull, 0xb2ef34a34ff3fa22ull }}, {{ 0xb4043c308d11b3eeull, 0xf6a46b5e5a8475d8ull, 0xa839f6da077a53eaull, 0x96d215ced688af09ull, 0xda03643defb3488full, 0xfd580e611f87c55cull }}, {{ 0x082a59e582b1074aull, 0xa26c31af892c9a77ull, 0x9243a4844ac7472dull, 0xe434da146156d660ull, 0x8421ea6b5d00d59bull, 0xe5708fcb3b4db5a0ull }}, {{ 0x51a782f71aea48e3ull, 0x5839f0db5bbe08a6ull, 0xb6a46d2aebc8c7c8ull, 0xea1084cbcd645fc5ull, 0x29532831a2085816ull, 0xf6659df051091845ull }}, {{ 0x308b1da70d26d8daull, 0x72436891956c567full, 0x226c43ad35d7cdd3ull, 0x24a52ff605ebbdb9ull, 0x9d3f91f0545370e5ull, 0x9ff82b632a5af2b3ull }}, {{ 0xe56f288683847882ull, 0x76a215afd63b60f7ull, 0x583aa4c41a6e0a42ull, 0x6e73df9c3b35693bull, 0x247bb3634b4268f3ull, 0x3fb1b1dfa78d7b04ull }}, {{ 0xf6579541232cb518ull, 0xa254d8de5e51c9aeull, 0x724a6fa9084c6698ull, 0x5086bc1a50161c51ull, 0x6cd501e0f0981982ull, 0x7cf0f2bc8b86ce29ull }}, {{ 0x9f6bd48b5fbf12eeull, 0x575078afaf31e0d5ull, 0x76e85c9a52fc01f6ull, 0x2543590720dd1b2eull, 0x405212c965f0ff17ull, 0xe1697b5d73440d9eull }}, {{ 0x3a364d71bd76bd50ull, 0x6924b6dcd7f2c858ull, 0xa5139e073dd8139full, 0x74a17a4748a30fd0ull, 0x8334bbddfb69f6e7ull, 0xce1ed1a680a8882eull }}, {{ 0x461f067166a3651eull, 0x1b6f24a06f7bd372ull, 0x72c42c486a70c43aull, 0x8e4ec6c8d65e9e26ull, 0x200f56abd223a50aull, 0x0d343081069551d1ull }}, {{ 0xbd36406e0261f32full, 0x12576e445ad64276ull, 0x7ba9bad42867aa45ull, 0x8f13c3d85fb22d80ull, 0x409962b635647269ull, 0x8409e50a41d5322bull }}, {{ 0x641e844c17d37fd6ull, 0xb76a4eab8c5e98a3ull, 0xd4a14c49940ca6b2ull, 0x96c5a673bcf5c704ull, 0x85fddb1e15ec781full, 0x2862f2669253f5b0ull }}, {{ 0xe9312af8ee42fe59ull, 0x2a2712b37bb1f661ull, 0x4e4cfadfc87e82fbull, 0xe3b880856199c630ull, 0x3bea8f2cdb3cb13bull, 0x93dd7801b74798e5ull }}, {{ 0x1bebadb94e9def77ull, 0xa586bb02d4f39fd3ull, 0x0f01ccbdd4f11dcfull, 0xe5350535d001bde3ull, 0x572997c0905eec56ull, 0xc6a6b01128cbf8f4ull }}, {{ 0x1734c93d122b5aa1ull, 0x77434e1c51843e3full, 0x9611ff6a516b2a1cull, 0xf412341a20116adeull, 0x679fed85a3b53b64ull, 0xc282e0ab97f7b98bull }}, {{ 0xe80fdc62b5b18a4dull, 0xa8a10d1b2f2a6e76ull, 0xdcb3fa272e2fa51cull, 0x88b6090540ae2cb1ull, 0x0c3f4738651451f1ull, 0x991cc6b3efad3f72ull }}, {{ 0x109e9bdb18ef6706ull, 0x964a830fd7a850a5ull, 0x9f07c587cddc731eull, 0x571c5a3486cdbef2ull, 0x7a78c833f2cb336full, 0xfb1fc3075cc47a74ull }}, {{ 0xa632168ef95a063eull, 0xdee91e9e6c932672ull, 0x364db74e0a9c7f31ull, 0x671b860d4409757aull, 0xc8b7d2077bf00259ull, 0xcf3d9e499facc88cull }}, {{ 0x7df4e195bd843e69ull, 0xb51b32303dbf807aull, 0x1f09290c6a1cf7f2ull, 0x07133c84a85e96c6ull, 0xd72e344ad760177eull, 0x18682ee03cbfd57full }}, {{ 0xeb90cfd9672a701aull, 0x130ff5e2697b04c8ull, 0x365b9a7c2521af7bull, 0x46c05d2e93b1e3bdull, 0x67ce0aec69c0eaecull, 0xf411d4c25f7e56feull }}, {{ 0x33a81e7e07a86109ull, 0xbe9f9ad81ece2fd9ull, 0x1f9408d97350daceull, 0xc383a3d1c4f2e564ull, 0x0e0c6d3c21892d3aull, 0x88b24f97baef65f0ull }}, {{ 0x049130ec4c93ca59ull, 0x723c0c71340dde7cull, 0x3bc8587e81288c13ull, 0xa3246631b17cf5e9ull, 0x8c7c44594f5bc44bull, 0x56f71bed4d59fb60ull }}, {{ 0x2dabe93afdc5e778ull, 0x76587c6c088ab0d8ull, 0x55d374f10b9578c2ull, 0x5f6bfdf0eee19b1cull, 0x7cdaab7d1995aaf4ull, 0x65a717450583d1c5ull }}, {{ 0xc8b71c4de9bb0ab1ull, 0x9f74dc38556ae871ull, 0x5a42916a73d6b798ull, 0xba37eb6954d00f1bull, 0xe08ab2e2ffd8ad8bull, 0xf886e8b2372631b6ull }}, {{ 0xd7271b0b214e6ae9ull, 0x3a909a33562d1471ull, 0x8699ae2886632bf6ull, 0x462f321d50209711ull, 0xc56afcddfe76c775ull, 0xb54516f6277df124ull }}, {{ 0x67870e6f4d102d1bull, 0x49a606015dc2cc72ull, 0x4200cd953fdfb79eull, 0xbdd7f5252145e6afull, 0xb62de0abf0a3ca94ull, 0x14b2e59d8aeb6b6full }}, {{ 0x0b46905902a1c30eull, 0xe07c3c0da99bfc78ull, 0x940807d47ebd2c2eull, 0x6a6f93734cbb02d8ull, 0x1dcac6b76665e9cfull, 0xcefcf8276d32325dull }}, {{ 0x70c1a37a1a519e8full, 0xc4da5888a017dcb0ull, 0xc8504e4cf363b9d4ull, 0x285bc280ff4e1c75ull, 0x29ebc329fffb221aull, 0x15e1b18a43f5f7a3ull }}, {{ 0x679062c507303197ull, 0xb087755640ee9ee4ull, 0xd3230f0181e5424full, 0x93959909f90d1c99ull, 0xa3359fa3ffcf5505ull, 0xdad0ef66a79bac5full }}, {{ 0x0ba3dbb247e1efe1ull, 0xe54a955e895234ecull, 0x3f5e960f12f4971cull, 0xc3d7fa63ba831e02ull, 0x60183c67fe195237ull, 0x8c295a028c14bbbcull }}, {{ 0x746694f6ced35eccull, 0xf4e9d5b15d361138ull, 0x79b1dc96bd8de720ull, 0xa66fc7e5491f2c16ull, 0xc0f25c0fecfd362dull, 0x799d841978cf555bull }}, {{ 0x8c01d1a41441b3f4ull, 0x912258eda41cac34ull, 0xc0f29de3678b0749ull, 0x805dcef4db37b8e0ull, 0x8977989f41e41dc8ull, 0xc02728feb8195595ull }}, {{ 0x78123068ca910787ull, 0xab577948691eba0dull, 0x897a2ae20b6e48dfull, 0x03aa1590902d38c7ull, 0x5eabf63892e929d5ull, 0x818799f330fd57d7ull }}, {{ 0xb0b5e417e9aa4b43ull, 0xb16abcd41b334486ull, 0x5ec5acd4724ed8bcull, 0x24a4d7a5a1c437cbull, 0xb2b79e35bd1ba252ull, 0x0f4c037fe9e56e69ull }}, {{ 0xe71ae8ef20a6f09aull, 0xee2b60491000ad42ull, 0xb3b8c04c7714775eull, 0x6e706c7851aa2df1ull, 0xfb2c2e1963145735ull, 0x98f822ff22f65020ull }}, {{ 0x070d1957468565ffull, 0x4db1c2daa006c49dull, 0x053782fca6cca9b5ull, 0x50643cb330a5cb71ull, 0xcfb9ccfddecb6816ull, 0xf9b15df75d9f2149ull }}, {{ 0x4682fd68c135fbf8ull, 0x08f19c8a4043ae22ull, 0x342b1dde83fea115ull, 0x23ea5effe679f26aull, 0x1d4201eab3f210dfull, 0xc0edaba9a8374ce2ull }}, {{ 0xc11de6178c1bd7b2ull, 0x59701d6682a4cd56ull, 0x09af2ab127f24ad2ull, 0x6727b5ff00c37826ull, 0x2494132b0774a8b7ull, 0x8948b4a0922900d5ull }}, {{ 0x8b2afceb79166cf0ull, 0x7e6126011a700563ull, 0x60d7aaeb8f76ec37ull, 0x078d1bf607a2b17cull, 0x6dc8bfae4a8e972aull, 0x5cd70e45b59a0853ull }}, {{ 0x6fade132bae04161ull, 0xefcb7c0b086035e3ull, 0xc86cad339aa53a2aull, 0x4b83179c4c5aeedbull, 0x49d77ccee991e7a4ull, 0xa0668eb918045342ull }}, {{ 0x5ccacbfb4cc28dcaull, 0x5df2d86e53c21ae2ull, 0xd43ec4040a7445adull, 0xf31eec1afb8d5495ull, 0xe26ae0151fb30c6aull, 0x4401933af02b4096ull }}, {{ 0x9febf7d0ff9989e4ull, 0xab7c744f45950cd7ull, 0x4a73a828688ab8c5ull, 0x7f35390dd3854ddaull, 0xd82cc0d33cfe7c2dull, 0xa80fc04d61b085e4ull }}, {{ 0x3f37ae29fbff62e7ull, 0xb2dc8b18b7d2806cull, 0xe8849194156b37b8ull, 0xf8143a8a43350a86ull, 0x71bf884061f0d9c6ull, 0x909d8305d0e53af0ull }}, {{ 0x782ccda3d7f9dd07ull, 0xfc9d6ef72e39043aull, 0x152dafc8d6302d36ull, 0xb0ca4966a0126945ull, 0x717b5283d36881c5ull, 0xa6271e3a28f44d64ull }}, {{ 0xb1c008666fc2a249ull, 0xde2655a7ce3a2a48ull, 0xd3c8ddd85de1c425ull, 0xe7e6de0240b81cb2ull, 0x6ed13926421511b8ull, 0x7d872e45998b05ecull }}, {{ 0xf18054005d9a56deull, 0xad7f588e0e45a6d6ull, 0x45d8aa73aad1a97aull, 0x0f04ac1687311efcull, 0x542c3b7e94d2b139ull, 0xe747ceb7ff6e3b3cull }}, {{ 0x6f034803a80764acull, 0xc6f9758c8eb88465ull, 0xba76a884ac309ecaull, 0x962eb8e147eb35daull, 0x49ba52f1d03aec3aull, 0x08ce132ffa4e505bull }}, {{ 0x5620d0249049eeb7ull, 0xc5be977d93352bf6ull, 0x48a2952eb9e633ebull, 0xddd338cccf301a8bull, 0xe1473d72224d3a49ull, 0x580cbfdfc70f2390ull }}, {{ 0x5d48216da2e35323ull, 0xb971eae7c013b79full, 0xd659d3d342fe0735ull, 0xaa40380017e10970ull, 0xccc86675570446e2ull, 0x707f7ebdc69763a8ull }}, {{ 0xa4d14e485ce13f61ull, 0x3e732d0d80c52c39ull, 0x5f8246409dec4819ull, 0xa6823000eeca5e68ull, 0xffd40095662ac4daull, 0x64faf369c1e9e497ull }}, {{ 0x702d0ed3a0cc79c6ull, 0x707fc28707b3ba40ull, 0xbb16be862b3ad0fcull, 0x8115e00953e7b013ull, 0xfe4805d5fdabb08aull, 0xf1cd82219322edefull }}, {{ 0x61c2944447fcc1baull, 0x64fd99464d054684ull, 0x4ee3713db04c29dcull, 0x0adac05d470ce0c5ull, 0xeed03a5be8b4e569ull, 0x7207154fbf5d4b5full }}, {{ 0xd199caaacfdf9147ull, 0xf1e7fcbf0234c12bull, 0x14e26c68e2f9a29bull, 0x6c8b83a4c680c7b5ull, 0x542247971710f61aull, 0x7446d51d79a4f1bfull }}, {{ 0x3001eaac1ebbacc3ull, 0x730fdf76160f8bb6ull, 0xd0d83c18ddc05a17ull, 0x3d73246fc107cd12ull, 0x4956cbe6e6a99d08ull, 0x8ac45326c0717179ull }}, {{ 0xe0132ab93354bfa1ull, 0x7e9eba9cdc9b751dull, 0x287258f8a98384eaull, 0x667f6c5d8a4e02bcull, 0xdd63f70502a02252ull, 0x6bab3f83846e6ebcull }}, {{ 0xc0bfab3c014f7c49ull, 0xf2334a209e12932aull, 0x947779b69f233128ull, 0x00fa3ba7670c1b59ull, 0xa5e7a6321a415738ull, 0x34b07b232c505360ull }}, {{ 0x877cb0580d1adad8ull, 0x7600e5462cb9bfabull, 0xccaac122375feb99ull, 0x09c6548a0679117full, 0x7b0c7df5068d6830ull, 0x0ee4cf5fbb2341c6ull }}, {{ 0x4adee370830c8c71ull, 0x9c08f4bdbf417cb3ull, 0xfeab8b5629bf33feull, 0x61bf4d6440baaefdull, 0xce7ceb92418611e0ull, 0x94f019bd4f6091c0ull }}, {{ 0xecb4e2651e7d7c6cull, 0x18598f69788edf00ull, 0xf2b3715da17807f2ull, 0xd17905ea874ad5ebull, 0x10e133b68f3cb2c3ull, 0xd161016519c5b188ull }}, {{ 0x3f10d7f330e6dc39ull, 0xf37f9a1eb594b609ull, 0x7b026da84eb04f74ull, 0x2eba3b2948ec5b37ull, 0xa8cc0521985efba6ull, 0x2dca0df301b8ef50ull }}, {{ 0x76a86f7fe9049a38ull, 0x82fc053317cf1c5cull, 0xce18489312e31a91ull, 0xd3464f9cd93b902aull, 0x97f8334ff3b5d47dull, 0xc9e48b7e11395926ull }}, {{ 0xa2945aff1a2e062eull, 0x1dd833feee171b9cull, 0x0cf2d5bebcdf09afull, 0x40bf1c207c53a1acull, 0xefb2011f851a4ceaull, 0xe2ed72ecac3d7b81ull }}, {{ 0x59cb8df705cc3dc8ull, 0x2a7207f54ce7141eull, 0x817c597360b660d7ull, 0x87771944db4450b8ull, 0x5cf40b3b33070126ull, 0xdd467d3eba66d313ull }}, {{ 0x81f38ba639fa69d0ull, 0xa8744f950106c92full, 0x0edb7e81c71fc867ull, 0x4aa6fcb090ab2735ull, 0xa188704ffe460b81ull, 0xa4c0e47348043ec1ull }}, {{ 0x1383747e43c82222ull, 0x948b1bd20a43dbdbull, 0x9492f111c73dd40cull, 0xea85dee5a6af8812ull, 0x4f54631feebc730cull, 0x6f88ec80d02a7390ull }}, {{ 0xc3228ceea5d15557ull, 0xcd6f163466a6968eull, 0xcdbd6ab1c86a487dull, 0x293ab4f882db50b9ull, 0x194bdf3f535c7e81ull, 0x5b593d0821a883a3ull }}, {{ 0x9f5981527a2d5568ull, 0x0656de0c0281e193ull, 0x09662af1d426d4eaull, 0x9c4b11b51c912742ull, 0xfcf6b879419cf10bull, 0x917c62515095245eull }}, {{ 0x397f0d38c5c5560eull, 0x3f64ac781912cfc4ull, 0x5dfdad7249845124ull, 0x1aeeb1131dab8894ull, 0xe1a334bc90216a74ull, 0xaedbd72d25d36bb5ull }}, {{ 0x3ef68437b9b55c8eull, 0x79eebcb0fabc1daaull, 0xabe8c676df2b2b6aull, 0x0d52eabf28b355cbull, 0xd0600f5da14e2889ull, 0xd49667c37a42351aull }}, {{ 0x75a12a2d41159d8bull, 0xc3535ee9cb5928a6ull, 0xb717c0a4b7afb228ull, 0x853d2b77970159f4ull, 0x23c099a84d0d955aull, 0x4de00da2c696130cull }}, {{ 0x984ba5c48ad8276eull, 0xa141b521f17b9680ull, 0x26ed866f2cdcf597ull, 0x3463b2abe60d838full, 0x658600930287d589ull, 0x0ac0885bc1dcbe79ull }}, {{ 0xf2f479ad6c718a4full, 0x4c9113536ed3e105ull, 0x85474057c0a197ecull, 0x0be4fab6fc872397ull, 0xf73c05be194e575cull, 0x6b855395929f70bdull }}, {{ 0x7d8cc0c63c6f6712ull, 0xfdaac1425446ca3bull, 0x34c8836d864fef3aull, 0x76f1cb25dd4763ebull, 0xa858396cfd0f6998ull, 0x333543d7ba3a676bull }}, {{ 0xe77f87be5c5a06b5ull, 0xe8ab8c974ac3e652ull, 0x0fd522473f1f584dull, 0xa571ef7aa4c9e730ull, 0x93723e41e29a1ff4ull, 0x0014a66d46480a34ull }}, {{ 0x0afb4d6f9b84430eull, 0x16b37de8eba6ff3dull, 0x9e5356c87739730bull, 0x76735aca6fe307e0ull, 0xc2766e92da053f8eull, 0x00ce8044bed0660dull }}, {{ 0x6dd1065c132a9e91ull, 0xe302eb193485f862ull, 0x2f4163d4a83e7e6eull, 0xa0818be85ede4ec6ull, 0x98a051bc84347b90ull, 0x081102af7423fc89ull }}, {{ 0x4a2a3f98bfaa31aaull, 0xde1d2efc0d3bb3d8ull, 0xd88de64e9270f054ull, 0x450f7713b4af13bdull, 0xf643315d2a0cd3a6ull, 0x50aa1ada8967dd5full }}, {{ 0xe5a67bf77ca5f0a4ull, 0xad23d5d884550672ull, 0x758aff11b8696350ull, 0xb29aa6c50ed6c56aull, 0x9e9feda3a480447eull, 0x26a50c895e0ea5bfull }}, {{ 0xf880d7aade7b6663ull, 0xc3665a752b52407cull, 0x976df6b1341de126ull, 0xfa0a83b29463b628ull, 0x323f48646d02acf2ull, 0x82727d5dac92797cull }}, {{ 0xb5086cacb0d1ffe2ull, 0xa1ff8893b13684e1ull, 0xea4ba2ec092acb83ull, 0xc46924f9cbe51d95ull, 0xf678d3ec421ac17dull, 0x1878e5a8bdb8bed9ull }}, {{ 0x12543ebee833fed7ull, 0x53fb55c4ec2130d1ull, 0x26f45d385babf324ull, 0xac1b71c1f6f327dbull, 0xa0b8473a950b8ee9ull, 0xf4b8f89769377483ull }}, {{ 0xb74a73751207f465ull, 0x47d159b1394be82aull, 0x858ba43394b77f6bull, 0xb9127193a57f8e8full, 0x4732c849d2739520ull, 0x8f39b5ea1c2a8d24ull }}, {{ 0x28e88292b44f8bf2ull, 0xce2d80ec3cf711abull, 0x37746a03cf2afa30ull, 0x3ab86fc476fb919bull, 0xc7fbd2e23883d347ull, 0x98411b2519a9836aull }}, {{ 0x991519bb0b1b7776ull, 0x0dc7093a61a6b0afull, 0x2a8c242617adc5e8ull, 0x4b345daca5d3b010ull, 0xcfd63cd6352640c8ull, 0xf28b0f73009f222bull }}, {{ 0xfad3014e6f12aa9bull, 0x89c65c47d082e6dbull, 0xa979697cecc9bb10ull, 0xf00ba8be7a44e0a1ull, 0x1e5e605e137e87d2ull, 0x796e9a7e063755b6ull }}, {{ 0xcc3e0d1056baaa12ull, 0x61bf9ace251d0497ull, 0x9ebe1ee13fe14ea5ull, 0x60749770c6b0c650ull, 0x2fafc3acc2f14e3dull, 0xbe5208ec3e29591dull }}, {{ 0xfa6c82a3634aa4b1ull, 0xd17c0c0d73222dedull, 0x336d34cc7ecd1275ull, 0xc48dea67c2e7bf26ull, 0xdcdda4bf9d6d0e65ull, 0x6f34593a6d9d7b23ull }}, {{ 0xc83d1a61e0ea6ee7ull, 0x2ed878867f55cb4bull, 0x02440ffcf402b89aull, 0xad8b280d9d0d777eull, 0xa0a86f7c26428ff9ull, 0x580b7c484826cf66ull }}, {{ 0xd26307d2c9285507ull, 0xd474b540f959f0f5ull, 0x16a89fe1881b3605ull, 0xc76f90882286aaecull, 0x46945ad97e999fc0ull, 0x7072dad2d1841a02ull }}, {{ 0x37de4e3bdb935245ull, 0x4c8f1489bd83699aull, 0xe2963ecf51101c3aull, 0xca5ba5515942ad38ull, 0xc1cb8c7ef2003d87ull, 0x647c8c3c2f290416ull }}, {{ 0x2eaf0e5693c136b0ull, 0xfd96cd6167222006ull, 0xd9de74192aa11a46ull, 0xe794752d7c9ac438ull, 0x91f37cf57402674dull, 0xecdd7a59d79a28e3ull }}, {{ 0xd2d68f61c58c22ddull, 0xe7e405ce0755403dull, 0x82b088fbaa4b06c5ull, 0x0bcc93c6de0baa38ull, 0xb382e1968818090bull, 0x40a6c7826c0598e3ull }}, {{ 0x3c6199d1b7795ca2ull, 0x0ee83a0c4954826aull, 0x1ae559d4a6ee43bbull, 0x75fdc5c4ac74a635ull, 0x031ccfe150f05a6eull, 0x8683cb183837f8e5ull }}, {{ 0x5bd002312abd9e4full, 0x9512447add4d1826ull, 0x0cf5824e854ea54eull, 0x9be9b9aebc8e7e13ull, 0x1f201ecd29638850ull, 0x4125eef2322fb8f2ull }}, {{ 0x962015ebab682f18ull, 0xd2b6accca502f17full, 0x8197171135127511ull, 0x172140d35d90ecbeull, 0x374134039de35326ull, 0x8b7b5575f5dd3975ull }}, {{ 0xdd40db34b211d6edull, 0x3b22bffe721d6efbull, 0x0fe6e6ac12b892b2ull, 0xe74c8841a7a93f71ull, 0x288c08242ae13f7cull, 0x72d1569b9aa43e94ull }}, {{ 0xa488900ef4b26543ull, 0x4f5b7ff0752655d6ull, 0x9f0502b8bb35baf6ull, 0x08fd52908c9c7a6aull, 0x95785169accc7ae1ull, 0x7c2d62140a6a71c9ull }}, {{ 0x6d55a0958ef7f49bull, 0x1992ff64937f5a62ull, 0x36321b3750194d9full, 0x59e539a57e1cc82aull, 0xd6b32e20bffccccaull, 0xd9c5d4c8682871dfull }}, {{ 0x455845d795af8e0aull, 0xffbdf9edc2f987d8ull, 0x1df5102920fd0836ull, 0x82f44076ed1fd1a6ull, 0x62ffcd477fdfffe7ull, 0x81ba4fd4119472beull }}, {{ 0xb572ba6bd8db8c61ull, 0xfd6bc3499dbf4e72ull, 0x2b92a19b49e25225ull, 0x1d8a84a5433e307dull, 0xddfe04cafebfff0bull, 0x11471e48afcc7b6full }}, {{ 0x167b483678937bcaull, 0xe635a0e02979107bull, 0xb3ba5010e2d7357bull, 0x27692e74a06de4e3ull, 0xabec2fedf37ff66full, 0xacc72ed6ddfcd25eull }}, {{ 0xe0d0d220b5c2d5e0ull, 0xfe1848c19ebaa4ceull, 0x054720a8dc6816d6ull, 0x8a1bd08e444af0e5ull, 0xb739df4b82ffa057ull, 0xbfc7d464abe037b2ull }}, {{ 0xc8283547199c5ac1ull, 0xecf2d790334a7014ull, 0x34c746989c10e465ull, 0x6516258eaaed68f2ull, 0x2842b8f31dfc436bull, 0x7dce4beeb6c22cfbull }}, {{ 0xd19214c7001b8b8full, 0x417c6ba200e860cfull, 0x0fc8c1f618a8ebfbull, 0xf2dd7792ad461976ull, 0x929b397f2bdaa231ull, 0xea0ef7532395c1cfull }}, {{ 0x2fb4cfc601137395ull, 0x8edc34540913c81eull, 0x9dd7939cf69937d0ull, 0x7ca6abbac4bcfe9cull, 0xba103ef7b68a55f3ull, 0x2495a93f63d9921bull }}, {{ 0xdd101dbc0ac283d6ull, 0x949a0b485ac5d12dull, 0x2a6bc421a1fc2e25ull, 0xde82b54baf61f21eull, 0x44a275ad21675b82ull, 0x6dd89c79e67fb515ull }}, {{ 0xa2a129586b99265cull, 0xce0470d38bba2bcaull, 0xa835a95053d9cd77ull, 0xb11b14f4d9d3752dull, 0xae5898c34e09931cull, 0x4a761cc300fd12d4ull }}, {{ 0x5a4b9d7433fb7f96ull, 0x0c2c68437545b5eaull, 0x92189d23468206aeull, 0xeb0ed190824293c8ull, 0xcf75f7a10c5fbf1eull, 0xe89d1f9e09e2bc4eull }}, {{ 0x86f4268a07d2fbdeull, 0x79bc12a294b91b27ull, 0xb4f62360c11442ccull, 0x2e942fa51699c5d5ull, 0x1a9bac4a7bbd7735ull, 0x16233c2c62db5b14ull }}, {{ 0x458981644e3dd6b0ull, 0xc158ba59cf3b0f8bull, 0x119d61c78aca9bfcull, 0xd1c9dc72e201ba59ull, 0x0a14bae8d566a813ull, 0xdd6059bbdc918ec9ull }}, {{ 0xb75f0deb0e6a62deull, 0x8d774782184e9b70ull, 0xb025d1cb6bea17dfull, 0x31e29c7cd411477aull, 0x64cf4d18560290c6ull, 0xa5c381569daf93daull }}, {{ 0x29b68b2e9027dca8ull, 0x86a8cb14f3121267ull, 0xe17a31f23724eebbull, 0xf2da1ce048accacaull, 0xf01902f35c19a7bdull, 0x79a30d6228dbc687ull }}, {{ 0xa1216fd1a18e9e91ull, 0x4297eed17eb4b807ull, 0xcec5f37627715353ull, 0x7c8520c2d6bfebecull, 0x60fa1d8199008d6bull, 0xc05e85d59895c14full }}, {{ 0x4b4e5e304f9231afull, 0x99ef542ef30f304cull, 0x13bb829d8a6d4140ull, 0xdd33479c637f3740ull, 0xc9c5270ffa058632ull, 0x83b13a57f5d98d19ull }}, {{ 0xf10fade31bb5f0d4ull, 0x035949d57e97e2faull, 0xc5531a2768448c86ull, 0xa400cc1be2f82880ull, 0xe1b3869fc4373dfcull, 0x24ec476f9a7f8301ull }}, {{ 0x6a9ccadf151b684cull, 0x217ce256f1eeddcdull, 0xb53f058a12ad7d3cull, 0x6807f916ddb19507ull, 0xd103423daa286bdeull, 0x713aca5c08fb1e12ull }}, {{ 0x2a1fecb6d31212f6ull, 0x4ee0d7657354aa06ull, 0x14763764bac6e459ull, 0x104fbae4a8efd24dull, 0x2a209668a59436b0ull, 0x6c4be79859cf2cbcull }}, {{ 0xa53f3f243eb4bd9aull, 0x14c869f6814ea43dull, 0xcc9e29ef4bc4eb7dull, 0xa31d4cee995e3702ull, 0xa545e01677ca22e0ull, 0x3af70bf38217bf59ull }}, {{ 0x7478776a730f6809ull, 0xcfd423a10d126a68ull, 0xfe2da358f5b132e2ull, 0x5f250151fdae261bull, 0x74bac0e0ade55cc6ull, 0x4da6778314ed7980ull }}, {{ 0x8cb4aa287e9a1056ull, 0x1e49644a82b82814ull, 0xedc8617998ebfcdcull, 0xb7720d33e8cd7d17ull, 0x8f4b88c6caf59fbfull, 0x0880ab1ed146bf04ull }}, {{ 0x7f0ea594f204a358ull, 0x2eddeae91b3190cdull, 0x49d3cebff937e099ull, 0x2a7484071806e2efull, 0x98f357c3ed983d7dull, 0x5506af342cc3762dull }}, {{ 0xf69277d1742e6173ull, 0xd4ab2d1b0fefa806ull, 0xe246137fbc2ec5fbull, 0xa88d2846f044dd58ull, 0xf9816da747f266e3ull, 0x5242d809bfa29dc7ull }}, {{ 0xa1b8ae2e89cfce7aull, 0x4eafc30e9f5c9045ull, 0xd6bcc2fd59d3bbd6ull, 0x958392c562b0a578ull, 0xbf0e4888cf7804e4ull, 0x369c70617c5a29cfull }}, {{ 0x5136cdd1621e10c1ull, 0x12dd9e92399da2b8ull, 0x635f9de58245565full, 0xd723bbb5dae676b8ull, 0x768ed5581ab030edull, 0x221c63cedb85a21dull }}, {{ 0x2c240a2dd52ca78dull, 0xbca831b640285b33ull, 0xe1bc2af716b55fb6ull, 0x6765551a8d00a333ull, 0xa19455710ae1e94aull, 0x551be61493385526ull }}, {{ 0xb96865ca53be8b84ull, 0x5e91f11e81938fffull, 0xd159ada6e315bd23ull, 0x09f5530982066006ull, 0x4fcb566a6cd31ce8ull, 0x5316fccdc0335382ull }}, {{ 0x3e13f9e745717324ull, 0xb1b36b310fc39ffdull, 0x2d80c884ded96361ull, 0x63953e5f143fc044ull, 0x1df16028403f2110ull, 0x3ee5e00982014317ull }}, {{ 0x6cc7c308b66e7f6dull, 0xf1022fea9da43fe4ull, 0xc707d530b47de1d0ull, 0xe3d46fb6ca7d82a9ull, 0x2b6dc19282774aa3ull, 0x74fac05f140c9ee7ull }}, {{ 0x3fcd9e572050fa42ull, 0x6a15df2a286a7eecull, 0xc64e53e70cead229ull, 0xe64c5d23e8e71aa1ull, 0xb2498fb918a8ea66ull, 0x91cb83b6c87e3507ull }}, {{ 0x7e082f674329c694ull, 0x24dab7a59428f53aull, 0xbf0f4706812c359eull, 0xfefba36719070a51ull, 0xf6df9d3af6992804ull, 0xb1f32523d4ee124cull }}, {{ 0xec51da089fa1c1c7ull, 0x708b2c77c9999448ull, 0x7698c6410bba182dull, 0xf5d46206fa466731ull, 0xa4bc244da1fb9031ull, 0xf37f7366514cb701ull }}, {{ 0x3b3284563c5191c8ull, 0x656fbcaddfffcad9ull, 0xa1f7be8a7544f1c6ull, 0x9a4bd445c6c007eeull, 0x6f596b0853d3a1f3ull, 0x82fa81ff2cff2610ull }}, {{ 0x4ff92b5e5b2fb1d1ull, 0xf65d5ecabffdec7cull, 0x53ad716894b171bfull, 0x06f64ab9c3804f52ull, 0x597e2e5346445384ull, 0x1dc913f7c1f77ca4ull }}, {{ 0x1fbbb1af8fdcf226ull, 0x9fa5b3eb7feb3cdbull, 0x44c66e15ceee717full, 0x459eeb41a3031937ull, 0x7eedcf40beab4328ull, 0x29dac7ad93aade6bull }}, {{ 0x3d54f0db9ea1757eull, 0x3c790732ff30608full, 0xafc04cda15506efcull, 0xb83530905e1efc28ull, 0xf54a188772b09f92ull, 0xa28bccc7c4acb032ull }}, {{ 0x65516894324e96edull, 0x5cba47fdf7e3c598ull, 0xdd830084d52455daull, 0x3213e5a3ad35d996ull, 0x94e4f54a7ae63bbbull, 0x5975ffcdaebee1fdull }}, {{ 0xf52e15c9f711e541ull, 0x9f46cfebaee5b7f3ull, 0xa71e0530536b5a87ull, 0xf4c6f864c41a7fe4ull, 0xd0f194e8ccfe554full, 0x7e9bfe08d374d3e7ull }}, {{ 0x93ccd9e3a6b2f48bull, 0x38c41f34d4f92f87ull, 0x872c33e34231894cull, 0x8fc5b3efa908feeeull, 0x296fd11801ef551full, 0xf217ec584290470eull }}, {{ 0xc60082e482fd8d72ull, 0x37a9381051bbdb4bull, 0x47ba06e095ef5cfaull, 0x9db9075c9a59f551ull, 0x9e5e2af01359533bull, 0x74ef3b7299a2c68dull }}, {{ 0xbc051ced1de78678ull, 0x2c9c30a3315690f5ull, 0xcd4444c5db59a1c6ull, 0x293a499e0783952cull, 0x2fadad60c17d4054ull, 0x9158527a005bc188ull }}, {{ 0x583321432b0b40b3ull, 0xbe19e65fed61a999ull, 0x04aaafba918051bdull, 0x9c46e02c4b23d3c0ull, 0xdcc8c5c78ee48349ull, 0xad7338c403958f51ull }}, {{ 0x71ff4c9fae7086f9ull, 0x6d02ffbf45d09ffdull, 0x2eaadd49af033169ull, 0x1ac4c1baef664580ull, 0x9fd7b9cb94ed20e0ull, 0xc68037a823d79932ull }}, {{ 0x73f8fe3cd06545bcull, 0x421dfd78ba263fe6ull, 0xd2aca4e0d61fee1eull, 0x0baf914d59feb701ull, 0x3e6d41f3d14348c1ull, 0xc1022c91666bfbfaull }}, {{ 0x87b9ee6023f4b955ull, 0x952be6b7457e7f00ull, 0x3abe70c85d3f4d2eull, 0x74dbad0583f32612ull, 0x704493862ca0d78aull, 0x8a15bdae0037d7c6ull }}, {{ 0x4d434fc1678f3d53ull, 0xd3b70328b6f0f605ull, 0x4b7067d3a47903d1ull, 0x9094c237277f7cb6ull, 0x62adc33dbe486b68ull, 0x64d968cc022e6dc0ull }}, {{ 0x04a11d8e0b98653aull, 0x45261f9725699c35ull, 0xf2640e446cba2632ull, 0xa5cf96278afadf1eull, 0xdac9a0696ed43215ull, 0xf07e17f815d04983ull }}, {{ 0x2e4b278c73f3f448ull, 0xb37d3be776201a12ull, 0x77e88eac3f457df6ull, 0x7a1bdd8b6dccb735ull, 0x8be0441e5449f4d8ull, 0x64ecefb0da22df26ull }}, {{ 0xceef8b7c87878ad5ull, 0x02e4570a9d4104b5ull, 0xaf1592ba78b6eba3ull, 0xc516a77249ff2816ull, 0x76c2a92f4ae39074ull, 0xf1415ce8855cb781ull }}, {{ 0x155b72dd4b4b6c51ull, 0x1ceb666a248a2f1aull, 0xd6d7bb48b725345eull, 0xb2e28a76e3f790e2ull, 0xa39a9bd8ece3a48full, 0x6c8da115359f2b0eull }}, {{ 0xd5927ca4f0f23b2eull, 0x213200256d65d704ull, 0x646d50d727740badull, 0xfcd968a4e7aba8dcull, 0x640a167940e46d9cull, 0x3d884ad41837ae92ull }}, {{ 0x57b8de7169764fcbull, 0x4bf4017645fa6630ull, 0xec4528678a8874c3ull, 0xe07e16710cb4989bull, 0xe864e0bc88ec4821ull, 0x6752ec48f22cd1b7ull }}, {{ 0x6d38b06e1e9f1df1ull, 0xf7880e9ebbc7fde3ull, 0x3ab3940b69548fa0ull, 0xc4ece06a7f0df617ull, 0x13f0c75d593ad152ull, 0x093d3ad975c0312full }}, {{ 0x4436e44d32372b6dull, 0xab50923355cfeae2ull, 0x4b03c8721d4d9c49ull, 0xb140c428f68b9ce8ull, 0xc767c9a57c4c2d3bull, 0x5c644c7e9981ebd6ull }}, {{ 0xaa24eb03f627b244ull, 0xb125b6015a1f2cd6ull, 0xee25d47525081ae0ull, 0xec87a999a1742112ull, 0xca0de076daf9c454ull, 0x9beafcf1ff133663ull }}, {{ 0xa5712e279d8cf6acull, 0xeb791c0d8537c062ull, 0x4d7a4c9372510cc6ull, 0x3d4ca0004e894abdull, 0xe48ac4a48dc1ab51ull, 0x172de173f6c01fe5ull }}, {{ 0x766bcd8c2781a2b8ull, 0x32bb1887342d83daull, 0x06c6fdc2772a7fc5ull, 0x64fe4003115ceb65ull, 0xed6bae6d8990b12cull, 0xe7cace87a3813efaull }}, {{ 0xa03607798b105b2full, 0xfb4ef54809c72688ull, 0x43c5e998a7a8fdb3ull, 0xf1ee801eada131f2ull, 0x4634d0475fa6ebbbull, 0x0dec114c630c75cdull }}, {{ 0x421c4abf6ea38fd3ull, 0xd11594d061c78156ull, 0xa5bb1ff68c99e907ull, 0x73510132c84bf376ull, 0xbe1022c9bc853557ull, 0x8b38acfbde7c9a04ull }}, {{ 0x951aeb7a52639e41ull, 0x2ad7d023d1cb0d5eull, 0x794f3fa17e031a4eull, 0x812a0bfbd2f782a2ull, 0x6ca15be15d34156aull, 0x7036c1d6b0de042full }}, {{ 0xd30d32c737e42e8dull, 0xac6e216631ee85b1ull, 0xbd187c4eec1f070dull, 0x0ba477d63dab1a58ull, 0x3e4d96cda408d629ull, 0x62239262e8ac29daull }}, {{ 0x3e83fbc82ee9d181ull, 0xbc4d4dfdf35138f2ull, 0x62f4db1539364688ull, 0x746cae5e68af0777ull, 0x6f07e40868585d9aull, 0xd563b7dd16b9a286ull }}, {{ 0x7127d5d1d5222f06ull, 0x5b050beb812c3976ull, 0xdd908ed43c1ec157ull, 0x8c3ecfb016d64aa9ull, 0x564ee8541373a808ull, 0x55e52ea2e3405940ull }}, {{ 0x6b8e5a325355d63cull, 0x8e3277330bba3ea0ull, 0xa7a5944a59338d69ull, 0x7a741ce0e45eeaa2ull, 0x5f151348c2849055ull, 0x5af3d25ce0837c83ull }}, {{ 0x338f85f7415a5e5cull, 0x8df8a7fe75467244ull, 0x8c77cae77c03861full, 0xc88920c8ebb52a5aull, 0xb6d2c0d7992da356ull, 0x8d8637a0c522dd21ull }}, {{ 0x039b3ba88d87af9bull, 0x8bb68ff094c076aaull, 0x7caded0ad8233d3bull, 0xd55b47d93513a789ull, 0x243b886bfbc86163ull, 0x873e2c47b35ca351ull }}, {{ 0x24105495874cdc11ull, 0x75219f65cf84a2a4ull, 0xdecb426c71606453ull, 0x5590ce7c12c48b5eull, 0x6a535437d5d3cde6ull, 0x486dbacd019e612bull }}, {{ 0x68a34dd7490098a9ull, 0x935039fa1b2e5a69ull, 0xb3f0983c6dc3eb42ull, 0x57a810d8bbad71b4ull, 0x27414a2e5a460affull, 0xd4494c02102fcbb2ull }}, {{ 0x16610a68da05f696ull, 0xc12243c50fcf881eull, 0x0765f25c49a73099ull, 0x6c90a87754c6710full, 0x888ce5cf86bc6df9ull, 0x4adcf814a1ddf4f5ull }}, {{ 0xdfca6818843ba1dfull, 0x8b56a5b29e1b512cull, 0x49fb779ae087e601ull, 0x3da694a94fc06a96ull, 0x5580fa1b435c4bbeull, 0xeca1b0ce52ab9197ull }}, {{ 0xbde810f52a5452b7ull, 0x716278fa2d112bc0ull, 0xe3d2ac0cc54efc0full, 0x6881ce9d1d8429deull, 0x5709c510a19af56eull, 0x3e50e80f3ab3afe9ull }}, {{ 0x6b10a993a74b3b22ull, 0x6dd8b9c5c2abb587ull, 0xe63ab87fb515d89aull, 0x151212232729a2b4ull, 0x6661b2a6500d9650ull, 0x6f2910984b04df1dull }}, {{ 0x2ea69fc488f04f50ull, 0x4a7741b99ab5174aull, 0xfe4b34fd12da7608ull, 0xd2b4b55f87a05b10ull, 0xffd0fa7f2087df20ull, 0x579aa5f2ee30b725ull }}, {{ 0xd2823dad5963191full, 0xe8a891400b12e8e5ull, 0xeef011e2bc889c52ull, 0x3b0f15bb4c438ea9ull, 0xfe29c8f7454eb748ull, 0x6c0a7b7d4de7277bull }}, {{ 0x391668c57ddefb38ull, 0x1695ac806ebd18faull, 0x5560b2db5d561b3dull, 0x4e96d950faa392a3ull, 0xeda1d9a8b51328d2ull, 0x3868d2e50b078ad7ull }}, {{ 0x3ae017b6eab5d032ull, 0xe1d8bd045362f9c6ull, 0x55c6fc91a55d1062ull, 0x11e47d29ca63ba61ull, 0x4852809712bf9837ull, 0x34183cf26e4b6c6full }}, {{ 0x4cc0ed252b1a21f8ull, 0xd277622b41ddc1beull, 0x59c5ddb075a2a3dcull, 0xb2ece3a1e7e547cdull, 0xd33905e6bb7bf226ull, 0x08f261784ef23c58ull }}, {{ 0xff894373af0553acull, 0x38a9d5b092a9916eull, 0x81baa8e4985a66a0ull, 0xfd40e4530ef4ce05ull, 0x403a3b0352d77582ull, 0x5977ceb315765b78ull }}, {{ 0xfb5ca284d63544b4ull, 0x36a258e5ba9fae55ull, 0x114a98edf3880242ull, 0xe488eb3e95900c37ull, 0x82464e213c6a971dull, 0x7eae12fed69f92b2ull }}, {{ 0xd19e59305e14af0cull, 0x225778f94a3ccf5bull, 0xace9f94b83501696ull, 0xed593071d7a07a26ull, 0x16bf0d4c5c29e72aull, 0xf2ccbdf4623bbaf9ull }}, {{ 0x302f7be3acced67cull, 0x576ab9bce6601996ull, 0xc123bcf32120e1ddull, 0x457be4726c44c582ull, 0xe37684fb99a307adull, 0x7bff6b8bd6554dbaull }}, {{ 0xe1dad6e4c01460d3ull, 0x6a2b4160ffc0ffddull, 0x8b65617f4b48d2a5ull, 0xb6d6ec783aafb71bull, 0xe2a131d4005e4cc4ull, 0xd7fa33765f55094cull }}, {{ 0xd28c64ef80cbc840ull, 0x25b08dc9fd89feaaull, 0x71f5cef8f0d83a76ull, 0x24653cb24add2713ull, 0xda4bf24803aeffafull, 0x6fc6029fb9525d00ull }}, {{ 0x397bf15b07f5d284ull, 0x78e589e3e763f2acull, 0x739a15b96872489dull, 0x6bf45ef6eca386c2ull, 0x86f776d024d5fcd7ull, 0x5dbc1a3d3d37a208ull }}, {{ 0x3ed76d8e4f9a3929ull, 0xb8f762e709e77abaull, 0x8404d93e1476d626ull, 0x378bb5a53e634398ull, 0x45aaa421705be06aull, 0xa9590664642c5455ull }}, {{ 0x746a478f1c063b99ull, 0x39a9dd06630acb46ull, 0x28307c6ccca45d83ull, 0x2b7518746fe0a3f5ull, 0xb8aa694e6396c426ull, 0x9d7a3febe9bb4b54ull }}, {{ 0x8c26cb97183e53f7ull, 0x40a2a23fde6bf0c0ull, 0x91e4dc3ffe6ba720ull, 0xb292f48c5ec66793ull, 0x36a81d0fe3e3a97dull, 0x26c67f372150f14full }}, {{ 0x7983f3e6f26f47a2ull, 0x865a567eb0376785ull, 0xb2f09a7ff0348742ull, 0xf9bd8d7bb3c00bc3ull, 0x2291229ee6e49ee8ull, 0x83c0f8274d296d18ull }}, {{ 0xbf2787057858cc53ull, 0x3f8760f2e22a0b36ull, 0xfd6608ff620d4899ull, 0xc16786d5058075a4ull, 0x59ab5a3504ee3519ull, 0x2589b189039e42f1ull }}, {{ 0x778b4636b377fb3cull, 0x7b49c97cd5a47023ull, 0xe5fc59f9d484d5fcull, 0x8e0b445237049871ull, 0x80b18612314e1301ull, 0x7760ef5a242e9d6dull }}, {{ 0xab70be2302afd05cull, 0xd0e1dee0586c6162ull, 0xfbdb83c24d305bdcull, 0x8c70ab36262df472ull, 0x06ef3cb5ed0cbe0full, 0xa9c9598569d22647ull }}, {{ 0xb2676d5e1ade2394ull, 0x28d2b4c3743bcddaull, 0xd693259703e396a0ull, 0x7c66b01d7dcb8c7dull, 0x45585f1b427f6c9bull, 0xa1dd7f3622357ec6ull }}, {{ 0xf80a45ad0cad63c8ull, 0x983b0fa28a560a8aull, 0x61bf77e626e3e241ull, 0xdc02e126e9f37ceaull, 0xb573b71098fa3e12ull, 0x52a6f81d5616f3beull }}, {{ 0xb066b8c27ec5e5d3ull, 0xf24e9c59675c696dull, 0xd17aaefd84e6d68full, 0x981ccb852382e127ull, 0x168526a5f9c66cbcull, 0x3a85b1255ce58573ull }}, {{ 0xe4033798f3bafa3eull, 0x77121b7e099c1e48ull, 0x2ecad5e73104619full, 0xf11ff333631ccb8eull, 0xe133827bc1c03f5dull, 0x4938eb75a0f7367eull }}, {{ 0xe8202bf9854dc66cull, 0xa6b512ec60192ed8ull, 0xd3ec5b07ea2bd03aull, 0x6b3f8001df1ff38dull, 0xcc0318d5918279abull, 0xdc39329849a820f4ull }}, {{ 0x1141b7bf3509c036ull, 0x8312bd3bc0fbd479ull, 0x473b8e4f25b6224aull, 0x307b0012b73f838aull, 0xf81ef857af18c0b2ull, 0x9a3bf9f2e091498full }}, {{ 0xac912d7812618219ull, 0x1ebb645589d64cbaull, 0xc8538f17791d56e9ull, 0xe4ce00bb287b2366ull, 0xb135b36cd6f786f5ull, 0x0657c37cc5acdf9full }}, {{ 0xbdabc6b0b7cf14fbull, 0x3351eb57625eff4aull, 0xd34396eabb25651bull, 0xf00c074f94cf6203ull, 0xec19024065ab459aull, 0x3f6da2dfb8c0bc3cull }}, {{ 0x68b5c2e72e16d1d2ull, 0x01333169d7b5f8ebull, 0x40a3e52b4f75f310ull, 0x6078491bd019d426ull, 0x38fa1683f8b0b80dull, 0x7a485cbd37875a61ull }}, {{ 0x17199d07cce43236ull, 0x0bffee226d1bb932ull, 0x8666f3b11a9b7ea0ull, 0xc4b2db162102497eull, 0x39c4e127b6e73085ull, 0xc6d39f642b4987ccull }}, {{ 0xe700224e00e9f621ull, 0x77ff4d5843153bf4ull, 0x400584eb0a12f240ull, 0xaefc8edd4a16def1ull, 0x41b0cb8d2507e539ull, 0xc44439e9b0df4dfaull }}, {{ 0x0601570c09239d48ull, 0xaff905729ed45791ull, 0x8037312e64bd7684ull, 0xd5dd94a4e4e4b56cull, 0x90e7f383724ef440ull, 0xaaaa4320e8b90bc6ull }}, {{ 0x3c0d66785b6424d5ull, 0xdfba367a344b6baaull, 0x0227ebcfef66a12eull, 0x5aa7ce70f0ef163dull, 0xa90f832277158a88ull, 0xaaa69f49173a75c1ull }}, {{ 0x588600b391e9704eull, 0xbd4620c60af234a6ull, 0x158f361f5a024bd4ull, 0x8a8e10696956de62ull, 0x9a9b1f58a6d76953ull, 0xaa8238dae8489990ull }}, {{ 0x753c0703b31e6307ull, 0x64bd47bc6d760e7full, 0xd7981d398416f64full, 0x698ca41e1d64afd4ull, 0x0a0f3976846a1d43ull, 0xa916388d12d5ffa6ull }}, {{ 0x94584624ff2fde4aull, 0xef64cd5c469c90faull, 0x6bf1243f28e59f19ull, 0x1f7e692d25eede50ull, 0x64983ea12c2524a2ull, 0x9ade3582bc5bfc7cull }}, {{ 0xcb72bd71f7deaee0ull, 0x59f0059ac21da9c9ull, 0x376b6a7798f83703ull, 0x3af01bc37b54af24ull, 0xedf2724bb9736e55ull, 0x0cae171b5b97dcdbull }}, {{ 0xf27b6673aeb2d4bdull, 0x8360380b9528a1e1ull, 0x2a3228abf9b22621ull, 0x4d6115a2d14ed76aull, 0x4b7876f53e824f54ull, 0x7ecce71193eea097ull }}, {{ 0x78d20084d2fc4f60ull, 0x21c23073d39652d3ull, 0xa5f596b7c0f57d4full, 0x05cad85c2d146a25ull, 0xf2b4a5947117194bull, 0xf40106afc75245e8ull }}, {{ 0xb83405303ddb19bcull, 0x5195e48643df3c42ull, 0x7b97e32d8996e517ull, 0x39ec7399c2cc2578ull, 0x7b0e77cc6ae6fceeull, 0x880a42ddc936bb19ull }}, {{ 0x320833e26a8f0155ull, 0x2fdaed3ea6b85a9bull, 0xd3eedfc75fe4f2e9ull, 0x433c84019bf976b4ull, 0xce90adfc2d05e14eull, 0x50669ca9dc234efeull }}, {{ 0xf45206d829960d54ull, 0xde8d447283338a0full, 0x4754bdc9bef17d1bull, 0xa05d281017bea310ull, 0x11a6cbd9c23acd0eull, 0x24021ea2996115f4ull }}, {{ 0x8b3444719fdc8548ull, 0xb184ac792003649full, 0xc94f69e1756ee316ull, 0x43a390a0ed725ea2ull, 0xb083f681964c0292ull, 0x68153259fdcadb88ull }}, {{ 0x700aac703e9d34d5ull, 0xef2ebcbb4021ee3bull, 0xdd1a22ce9654dee2ull, 0xa463a6494677b25bull, 0xe527a10fdef819b6ull, 0x10d3f783e9ec9356ull }}, {{ 0x606abc627224104full, 0x57d35f5081534e52ull, 0xa3055c11df50b4ddull, 0x6be47edcc0acf796ull, 0xf38c4a9eb5b10122ull, 0xa847ab27233dc164ull }}, {{ 0xc42b5bd87568a316ull, 0x6e41b9250d410f37ull, 0x5e3598b2b92710a5ull, 0x36ecf49f86c1abe2ull, 0x837aea3318ea0b58ull, 0x92ccaf8760698df1ull }}, {{ 0xa9b1967496165edfull, 0x4e913b72848a982dull, 0xae17f6fb3b86a676ull, 0x25418e3b4390b6d7ull, 0x22cd25fef9247172ull, 0xbbfedb49c41f8b6full }}, {{ 0xa0efe08ddcdfb4b6ull, 0x11ac52792d69f1c8ull, 0xccefa5d05342809full, 0x748f8e50a3a7246cull, 0x5c037bf5bb6c6e75ull, 0x57f490e1a93b7257ull }}, {{ 0x495ec58aa0bd0f21ull, 0xb0bb38bbc62371d6ull, 0x015c7a2340990636ull, 0x8d9b8f2664876c40ull, 0x9822d799523c5096ull, 0x6f8da8d09c527769ull }}, {{ 0xddb3b76a47629749ull, 0xe7503755bd62725eull, 0x0d9cc56085fa3e22ull, 0x8813977fed4a3a80ull, 0xf15c6bfd365b25e1ull, 0x5b8898261b38aa1full }}, {{ 0xa9052a26c9d9e8dfull, 0x0922295965d877b4ull, 0x881fb5c53bc66d5dull, 0x50c3eaff44e64900ull, 0x6d9c37e41f8f7acfull, 0x9355f17d1036a53full }}, {{ 0x9a33a583e28318b5ull, 0x5b559d7dfa74ad0eull, 0x513d19b455c045a2ull, 0x27a72df8b0feda05ull, 0x481a2ee93b9acc19ull, 0xc15b6ee2a222747aull }}, {{ 0x06047726d91ef70eull, 0x915826ebc88ec292ull, 0x2c63010b5982b857ull, 0x8c87cbb6e9f48435ull, 0xd105d51c540bf8fbull, 0x8d9254da55588cc6ull }}, {{ 0x3c2ca7847b35a690ull, 0xad718535d59399b4ull, 0xbbde0a717f1b336bull, 0x7d4df525238d2a13ull, 0x2a3a531b4877b9d3ull, 0x87b7508755757fc4ull }}, {{ 0x59be8b2cd018819eull, 0xc66f341a57c4010aull, 0x56ac686ef7100234ull, 0xe50b93736383a4c5ull, 0xa6473f10d4ad4242ull, 0x4d2925495696fda9ull }}, {{ 0x81716fc020f5102eull, 0xc05809076da80a67ull, 0x62bc1455a6a0160full, 0xf273c281e3246fb5ull, 0x7ec876a84ec4969cull, 0x039b74dd61e5e8a0ull }}, {{ 0x0e6e5d814992a1caull, 0x83705a4a4890680bull, 0xdb58cb588240dc9dull, 0x78859912df6c5d15ull, 0xf3d4a29313ade221ull, 0x241290a5d2fb1644ull }}, {{ 0x904fa70cdfba51e6ull, 0x226386e6d5a4106eull, 0x9177f17516889e27ull, 0xb537fabcba3ba2daull, 0x864e59bec4cad54eull, 0x68b9a67a3dcedeb1ull }}, {{ 0xa31c8680bd4732faull, 0x57e345045868a451ull, 0xaeaf6e92e1562d87ull, 0x142fcb5f46545c89ull, 0x3f0f8173afec5513ull, 0x174080c66a14b2efull }}, {{ 0x5f1d410764c7fdc6ull, 0x6ee0b22b74166b30ull, 0xd2da51bccd5dc749ull, 0xc9ddf1b8bf4b9d60ull, 0x769b0e84df3b52beull, 0xe88507c024cefd58ull }}, {{ 0xb7248a49efcfe9b9ull, 0x54c6f5b288e02fe3ull, 0x3c87316005a9c8deull, 0xe2ab713778f425c8ull, 0xa20e9130b8513b73ull, 0x15324d817015e574ull }}, {{ 0x276d66e35e1f213cull, 0x4fc598f958c1dee5ull, 0x5d47edc038a1d8afull, 0xdab26c2ab98979d2ull, 0x5491abe7332c5286ull, 0xd3f7070e60daf68eull }}, {{ 0x8a4604e1ad374c5cull, 0x1db7f9bd7792b4f3ull, 0xa4cf4982365276d9ull, 0x8af839ab3f5ec237ull, 0x4db0b707ffbb3944ull, 0x47a6468fc88da18full }}, {{ 0x66bc30d0c428fb94ull, 0x292fc166abbb1183ull, 0x7018df161f38a47bull, 0x6db240b079b3962cull, 0x08e7264ffd503cadull, 0xcc7ec19dd5884f99ull }}, {{ 0x0359e827a999d3c8ull, 0x9bdd8e02b54eaf22ull, 0x60f8b6dd38366ccfull, 0x48f686e4c103ddbcull, 0x59077f1fe5225ec6ull, 0xfcf3902a57531bfaull }}, {{ 0x2183118ca00245cdull, 0x16a78c1b1512d754ull, 0xc9b724a43220401cull, 0xd9a144ef8a26a95bull, 0x7a4af73ef357b3beull, 0xe183a1a7693f17c7ull }}, {{ 0x4f1eaf7e4016ba01ull, 0xe28b790ed2bc6949ull, 0xe1276e69f5428118ull, 0x804cb15b65829d95ull, 0xc6eda875816d0574ull, 0xcf24508a1c76edcaull }}, {{ 0x1732daee80e3440cull, 0xd972ba943b5c1cddull, 0xcb8a502394990af8ull, 0x02feed91f71a27daull, 0xc54894970e42368dull, 0x176b25651ca549ebull }}, {{ 0xe7fc8d5108e0a874ull, 0x7e7b49ca519920a2ull, 0xf3672163cdfa6db8ull, 0x1df547b3a7058e8bull, 0xb4d5cde68e962182ull, 0xea2f75f31e74e335ull }}, {{ 0x0fdd852a58c69489ull, 0xf0d0e1e72ffb465dull, 0x82074de60bc84934ull, 0x2b94cd0486379177ull, 0x105a0b0191dd4f15ull, 0x25da9b7f3090e019ull }}, {{ 0x9ea733a777c1cd5cull, 0x6828d307dfd0bfa2ull, 0x14490afc75d2dc11ull, 0xb3d0022d3e2baeabull, 0xa3846e0fb2a516d3ull, 0x7a8a12f7e5a8c0faull }}, {{ 0x3288048aad920598ull, 0x11983e4ebe277c5aull, 0xcada6ddc9a3c98aeull, 0x062015c46db4d2aeull, 0x632c4c9cfa72e445ull, 0xc964bdaef89789caull }}, {{ 0xf9502d6ac7b437efull, 0xaff26f136d8adb85ull, 0xec884a9e065df6ccull, 0x3d40d9ac49103ad3ull, 0xdfbafe21c87ceab2ull, 0xddef68d5b5eb61e7ull }}, {{ 0xbd21c62bcd0a2f56ull, 0xdf7856c2476c933bull, 0x3d52ea2c3faba3feull, 0x648880badaa24c47ull, 0xbd4ded51d4e12af6ull, 0xab5a18591b31d30eull }}, {{ 0x6351bdb60265d958ull, 0xbab36396ca3dc055ull, 0x653d25ba7cb467f4ull, 0xed55074c8a56fac8ull, 0x650b453250cbad9full, 0xb184f37b0ff23e93ull }}, {{ 0xe131691c17fa7d73ull, 0x4b01e3e3e6698355ull, 0xf4637948df0c0f8full, 0x455248fd6765cbd3ull, 0xf270b3f727f4c83full, 0xef3182ce9f7671c1ull }}, {{ 0xcbee1b18efc8e681ull, 0xee12e6e7001f215aull, 0x8be2bcd8b6789b98ull, 0xb536d9e609f9f647ull, 0x786707a78f8fd278ull, 0x57ef1c123aa07193ull }}, {{ 0xf74d0ef95dd90108ull, 0x4cbd050601374d8bull, 0x76db607720b613f9ull, 0x142482fc63c39ecbull, 0xb4064c8b9b9e38b7ull, 0x6f5718b64a446fc2ull }}, {{ 0xa90295bdaa7a0a4eull, 0xff62323c0c290777ull, 0xa491c4a7471cc7bcull, 0xc96d1ddbe5a433f2ull, 0x083efd74142e3726ull, 0x5966f71ee6ac5d9bull }}, {{ 0x9a19d968a8c46709ull, 0xf9d5f658799a4aacull, 0x6db1ae88c71fcd61ull, 0xde432a96f86a077aull, 0x5275e688c9ce2783ull, 0x7e05a73502bba80eull }}, {{ 0x05027e1697ac0659ull, 0xc25b9f74c006eabeull, 0x48f0d157c73e05d3ull, 0xae9fa9e5b4244ac8ull, 0x389b0157e20d8b26ull, 0xec3888121b54908full }}, {{ 0x3218ece1ecb83f76ull, 0x97943a8f80452b6cull, 0xd9682d6dc86c3a45ull, 0xd23ca2f9096aebd2ull, 0x360e0d6ed4876f82ull, 0x3a3550b5114da598ull }}, {{ 0xf4f940d33f327a9dull, 0xebca499b02b3b239ull, 0x7e11c649d43a46b7ull, 0x365e5dba5e2d363cull, 0x1c8c86544d4a5b1cull, 0x46152712ad0877f2ull }}, {{ 0x91bc884077f8ca20ull, 0x35e6e00e1b04f643ull, 0xecb1bee24a46c32full, 0x1fafa947adc41e5cull, 0x1d7d3f4b04e78f1aull, 0xbcd386bac254af75ull }}, {{ 0xb15d5284afb7e53eull, 0x1b04c08d0e319ea3ull, 0x3ef174d6e6c39fd8ull, 0x3cdc9cccc9a92fa1ull, 0x26e478ee310b9705ull, 0x6043434b974eda93ull }}, {{ 0xeda5392edd2ef46cull, 0x0e2f85828df03264ull, 0x756e906503a43e71ull, 0x609e1fffe09bdc4cull, 0x84ecb94dea73e634ull, 0xc2a0a0f3e91489bfull }}, {{ 0x48743bd4a3d58c36ull, 0x8ddb37198b61f7f1ull, 0x9651a3f2246a706aull, 0xc62d3ffec6169afcull, 0x313f3d0b2886fe0bull, 0x9a4649871acd617bull }}, {{ 0xd48a564e66577a19ull, 0x8a9026ff71d3af6cull, 0xdf3067756c286429ull, 0xbdc47ff3bce20dddull, 0xec78626f9545ec75ull, 0x06bedf470c05cecfull }}, {{ 0x4d675f0fff6ac4faull, 0x69a185fa7244da40ull, 0xb7e40a963993e99full, 0x69acff8560d48aaaull, 0x3cb3d85bd4bb3c99ull, 0x4374b8c6783a141full }}, {{ 0x0609b69ffa2bb1c3ull, 0x204f3bc876b08683ull, 0x2ee869de3fc7203aull, 0x20c1fb35c84d6aabull, 0x5f0673964f505dfeull, 0xa28f37c0b244c938ull }}, {{ 0x3c61223fc5b4f1a2ull, 0x431855d4a2e5411eull, 0xd51422ae7dc74245ull, 0x4793d019d3062aafull, 0xb64083df1923abedull, 0x59982d86f6afdc33ull }}, {{ 0x5bcb567db911704full, 0x9ef35a4e5cf48b2eull, 0x52c95ad0e9c896b4ull, 0xcbc621023e3daadeull, 0x1e8526b6fb64b744ull, 0x7ff1c745a2de9a05ull }}, {{ 0x95f160e93aae6319ull, 0x3581870fa18d6fcfull, 0x3bdd8c2921d5e30eull, 0xf5bd4a166e68acafull, 0x31338325d1ef28afull, 0xff71c8b85cb20433ull }}, {{ 0xdb6dc91c4acfdefdull, 0x170f469c4f865e1bull, 0x56a7799b525ade8eull, 0x9964e4e05016bed8ull, 0xec031f7a335796dfull, 0xfa71d7339ef429ffull }}, {{ 0x9249db1aec1eb5dfull, 0xe698c21b1b3fad16ull, 0x628ac011378cb18cull, 0xfdf0f0c320e37473ull, 0x381f3ac6016be4bbull, 0xc87268043589a3ffull }}, {{ 0xb6e28f0d39331ab3ull, 0x01f7950f107cc2e1ull, 0xd96b80ac2b7eef81ull, 0xeb69679f48e28c81ull, 0x31384bbc0e36ef57ull, 0xd478102a176067f8ull }}, {{ 0x24d996843bff0afaull, 0x13abd296a4df9cd1ull, 0x7e3306b9b2f55b0aull, 0x321e0c38d8d97d12ull, 0xec32f5588e25596full, 0x4cb0a1a4e9c40fb1ull }}, {{ 0x707fe12a57f66dc0ull, 0xc4b639e270bc202bull, 0xedfe4340fd958e64ull, 0xf52c7a38787ee2b8ull, 0x39fd95758d757e57ull, 0xfee6507121a89cf3ull }}, {{ 0x64fecba76fa0497full, 0xaf1e42d8675941b2ull, 0x4beea089e7d78fefull, 0x93bcc634b4f4db39ull, 0x43e7d6978696ef6full, 0xf4ff246b50962180ull }}, {{ 0xf1f3f48a5c42defaull, 0xd72e9c74097c90f7ull, 0xf75245630e6b9f5cull, 0xc55fbe0f1190903cull, 0xa70e61eb41e55a5bull, 0x91f76c3125dd4f02ull }}, {{ 0x73878d679a9cb5c1ull, 0x67d21c885edda9afull, 0xa936b5de903439a0ull, 0xb5bd6c96afa5a261ull, 0x868fd33092f58795ull, 0xb3aa39eb7aa5161aull }}, {{ 0x834b860c0a1f198dull, 0x0e351d53b4a8a0daull, 0x9c231ab1a20a4044ull, 0x19663de2dc7857d0ull, 0x419e3fe5bd974bd9ull, 0x04a64332ca72dd09ull }}, {{ 0x20f33c786536ff85ull, 0x8e1325450e964889ull, 0x195f0af0546682a8ull, 0xfdfe6adc9cb36e26ull, 0x902e7ef967e8f67aull, 0x2e7e9ffbe87ca25cull }}, {{ 0x49805cb3f425fb2full, 0x8cbf74b291ded55bull, 0xfdb66d634c011a95ull, 0xebf02c9e1f024d7cull, 0xa1d0f5be0f19a0cdull, 0xd0f23fd714de579dull }}, {{ 0xdf039f07897bcfd8ull, 0x7f7a8ef9b2b45590ull, 0xe92045e0f80b09d7ull, 0x3761be2d361706e1ull, 0x5229996c9700480bull, 0x29767e66d0af6c28ull }}, {{ 0xb624364b5ed61e6eull, 0xfac995c0fb0b57a8ull, 0x1b42bac9b06e626aull, 0x29d16dc41ce644d3ull, 0x359ffe3de602d070ull, 0x9ea0f00426da3993ull }}, {{ 0x1d6a1ef1b45d304dull, 0xcbdfd989ce716c97ull, 0x109b4be0e44fd82dull, 0xa22e49a920feb03full, 0x183fee6afc1c2461ull, 0x3249602984863fc0ull }}, {{ 0x262535710ba3e2ffull, 0xf6be7f62106e3de7ull, 0xa610f6c8eb1e71c9ull, 0x55cee09b49f2e276ull, 0xf27f502dd9196bd0ull, 0xf6ddc19f2d3e7d80ull }}, {{ 0x7d74166a7466ddfaull, 0xa370f9d4a44e6b07ull, 0x7ca9a3d92f3071e3ull, 0x5a14c610e37cd8a2ull, 0x78f921ca7afe3623ull, 0xa4a99037c470e709ull }}, {{ 0xe688e0288c04abc0ull, 0x6269c24e6b102e4aull, 0xdea0667bd7e472e4ull, 0x84cfbca8e2e07658ull, 0xb9bb51e8cdee1d61ull, 0x6e9fa22dac69065eull }}, {{ 0x0158c195782eb57cull, 0xd82197102ea1ceedull, 0xb24400d66eec7cebull, 0x301d5e98dcc49f78ull, 0x415133180b4d25cfull, 0x523c55c8bc1a3fb3ull }}, {{ 0x0d778fd6b1d316d6ull, 0x714fe6a1d2521542ull, 0xf6a80860553ce136ull, 0xe125b1f89fae3ab6ull, 0x8d2bfef071037a17ull, 0x365b59d759067d00ull }}, {{ 0x86ab9e62f23ee45eull, 0x6d1f02523734d494ull, 0xa29053c35460cc20ull, 0xcb78f3b63cce4b25ull, 0x83b7f5646a22c4eeull, 0x1f9182697a40e205ull }}, {{ 0x42b42fdd7674ebb0ull, 0x4336173628104dcdull, 0x59a345a14bc7f944ull, 0xf2b9851e600eef78ull, 0x252f95ec255bb153ull, 0x3baf181ec688d437ull }}, {{ 0x9b09dea6a09134e4ull, 0xa01ce81d90a30a04ull, 0x8060b84cf5cfbcaaull, 0x7b3f332fc0955ab3ull, 0x73dbdb397594ed47ull, 0x54d6f133c1584a27ull }}, {{ 0x0e62b28245ac10ebull, 0x41211127a65e642eull, 0x03c733019a1d5eaaull, 0xd077ffdd85d58b03ull, 0x8696903e97d144caull, 0x50656c058d72e58aull }}, {{ 0x8fdaf916b8b8a930ull, 0x8b4aab8c7fafe9ccull, 0x25c7fe100525b2a6ull, 0x24affea73a576e1eull, 0x41e1a271ee2cafecull, 0x23f63837867cf769ull }}, {{ 0x9e8dbae337369be2ull, 0x70eab37cfcdf21fdull, 0x79cfeca03378fa81ull, 0x6edff288476a4d2dull, 0x92d058734dbedf39ull, 0x679e322b40e1aa1cull }}, {{ 0x31894ce0282216d1ull, 0x692b02e1e0b753e8ull, 0xc21f3e4202b9c90eull, 0x54bf7952ca2703c6ull, 0xbc2374810974b83eull, 0x0c2df5b088d0a51dull }}, {{ 0xef5d00c19154e429ull, 0x1bae1cd2c7294711ull, 0x95386e941b41da90ull, 0x4f7abd3be58625c3ull, 0x59628d0a5e8f326full, 0x79cb98e558267329ull }}, {{ 0x59a2078fad50e99aull, 0x14cd203bc79cc6b3ull, 0xd43451c9109289a1ull, 0x1acb6456f73d79a3ull, 0x7dd98267b197f859ull, 0xc1f3f8f571807f9dull }}, {{ 0x80544b9cc5292005ull, 0xd0034255cc1fc301ull, 0x4a0b31daa5b9604aull, 0x0bf1eb65a866c066ull, 0xea7f180cefefb37bull, 0x9387b9966f04fc26ull }}, {{ 0x034af41fb39b4033ull, 0x20209759f93d9e0full, 0xe46ff28a793dc2ecull, 0x777331f8940383feull, 0x28f6f0815f5d02ceull, 0xc34d3fe05631d985ull }}, {{ 0x20ed893d041081faull, 0x4145e983bc682c96ull, 0xec5f7968bc699d39ull, 0xaa7ff3b5c82327f4ull, 0x99a5650db9a21c10ull, 0xa1047ec35df27f33ull }}, {{ 0x49475c6228a513c7ull, 0x8cbb1f255c11bdddull, 0x3bbabe175c20243cull, 0xa8ff8519d15f8f91ull, 0x0075f289405518a6ull, 0x4a2cf3a1ab78f804ull }}, {{ 0xdcc99bd59672c5c5ull, 0x7f4f377598b16aa4ull, 0x554b6ce999416a5dull, 0x99fb33022dbb9bacull, 0x049b795c8352f682ull, 0xe5c18450b2b9b028ull }}, {{ 0x9fe01657e07bb9b3ull, 0xf9182a97f6ee2a70ull, 0x54f2411ffc8e27a6ull, 0x03cffe15c95414bbull, 0x2e12bd9d213da11aull, 0xf98f2b26fb40e190ull }}, {{ 0x3ec0df6ec4d540feull, 0xbaf1a9efa54da866ull, 0x51768b3fdd8d8c85ull, 0x261fecd9dd48cf51ull, 0xccbb68234c684b04ull, 0xbf97af85d088cfa1ull }}, {{ 0x7388ba53b05489ecull, 0x4d70a35c750893feull, 0x2ea1707ea7877d39ull, 0x7d3f4082a4d8192dull, 0xff521160fc12ee29ull, 0x7becdb3a25581c51ull }}, {{ 0x83574744e34d6333ull, 0x0666619c9255c7f0ull, 0xd24e64f28b4ae43dull, 0xe478851a7070fbc3ull, 0xf934adc9d8bd4d9eull, 0xd740904575711b33ull }}, {{ 0x2168c8b0e105e000ull, 0x3fffd01db759cf65ull, 0x370ff17970ecea62ull, 0xecb533086469d5a6ull, 0xbc0ec9e277650834ull, 0x6885a2b6966b1007ull }}, {{ 0x4e17d6e8ca3ac004ull, 0x7ffe2129298219f3ull, 0x269f6ebe694127d6ull, 0x3f13fe53ec22587eull, 0x5893e2d8a9f25211ull, 0x15385b21e02ea04dull }}, {{ 0x0cee6517e64b8027ull, 0xffed4b9b9f150381ull, 0x823a53701c8b8e60ull, 0x76c7ef47395774edull, 0x75c6dc76a37734acull, 0xd4338f52c1d24305ull }}, {{ 0x814ff2eefef30184ull, 0xff44f41436d2230aull, 0x164742611d738fc9ull, 0xa3cf58c83d6a9147ull, 0x99c49ca262a80ebcull, 0x4a03993b92369e36ull }}, {{ 0x0d1f7d55f57e0f2cull, 0xf8b188ca24355e69ull, 0xdec897cb26839de3ull, 0x661977d26629acc6ull, 0x01ae1e57da90935eull, 0xe423fc53b6222e22ull }}, {{ 0x833ae55b96ec97bbull, 0xb6ef57e56a15b01aull, 0xb3d5edef81242ae7ull, 0xfcfeae37fda0bfc4ull, 0x10cd2f6e89a5c1afull, 0xe967db451d55cd54ull }}, {{ 0x204cf593e53ded4aull, 0x25596ef624d8e109ull, 0x065b4b5b0b69ad0dull, 0xe1f2ce2fe8477dafull, 0xa803da51607990dfull, 0x1e0e90b3255a0548ull }}, {{ 0x430197c6f46b44e1ull, 0x757e559d7078ca5bull, 0x3f90f18e7220c283ull, 0xd37c0ddf12cae8d6ull, 0x9026872dc4bfa8beull, 0x2c91a6ff758434d6ull }}, {{ 0x9e0fedc58c30b0ceull, 0x96ef582664b7e790ull, 0x7ba96f9075479922ull, 0x42d88ab6bbed185eull, 0xa18147c9af7c9774ull, 0xbdb085fa972a1061ull }}, {{ 0x2c9f49b779e6e809ull, 0xe559717fef2f0ba6ull, 0xd49e5ba494cbfb59ull, 0x9c756b235742f3b0ull, 0x4f0ccde0daddea8aull, 0x68e53bc9e7a4a3d0ull }}, {{ 0xbe38e12ac305105cull, 0xf57e6eff57d6747dull, 0x4e2f946dcff7d182ull, 0x1c962f61689d84e8ull, 0x16800ac88cab296aull, 0x18f455e30c6e6623ull }}, {{ 0x6e38cbab9e32a396ull, 0x96f055f96e608ce9ull, 0x0ddbcc4a1fae2f1dull, 0x1dddd9ce16273113ull, 0xe1006bd57eaf9e25ull, 0xf98b5ade7c4ffd5eull }}, {{ 0x4e37f4b42dfa63dcull, 0xe5635bbe4fc5811eull, 0x8a95fae53ccdd727ull, 0x2aaa820cdd87eabeull, 0xca043656f2dc2d73ull, 0xbf718cb0db1fe5b4ull }}, {{ 0x0e2f8f09cbc7e693ull, 0xf5e1956f1db70b2full, 0x69dbccf4600a678eull, 0xaaa91480a74f2b71ull, 0xe42a1f657c99c67full, 0x7a6f7ee88f3ef90full }}, {{ 0x8ddb9661f5cf01c3ull, 0x9acfd65729266fd6ull, 0x2296018bc0680b95ull, 0xaa9acd068917b26eull, 0xe9a539f6de01c0fcull, 0xc85af5159875ba9eull }}, {{ 0x8a93dfd39a161199ull, 0x0c1e5f679b805e61ull, 0x59dc0f75841073d8ull, 0xaa0c02415aecf84dull, 0x207443a4ac1189deull, 0xd38d92d7f4994a35ull }}, {{ 0x69c6be4404dcaffbull, 0x792fba0c1303afcfull, 0x82989a9728a48670ull, 0xa478168d8d41b305ull, 0x448aa46eb8af62b2ull, 0x4387bc6f8dfce613ull }}, {{ 0x21c36ea8309edfc9ull, 0xbbdd4478be24de1aull, 0x19f609e7966d4064ull, 0x6cb0e1878490fe37ull, 0xad6a6c5336d9dafaull, 0xa34d5c5b8be0fcc0ull }}, {{ 0x51a25291e634bddbull, 0x56a4acb76d70ad05ull, 0x039c630be04483efull, 0x3ee8cf4b2da9ee27ull, 0xc6283b4024828dc8ull, 0x61059b9376c9df86ull }}, {{ 0x305739b2fe0f6a91ull, 0x626ebf2a4666c235ull, 0x241bde76c2ad2759ull, 0x751818efc8a34d86ull, 0xbd9250816d1989d2ull, 0xca3813c2a3e2bb43ull }}, {{ 0xe36840fdec9a29aaull, 0xd85377a6c0039613ull, 0x6916b0a39ac3897dull, 0x92f0f95dd661073dull, 0x67b7250e42ff6238ull, 0xe630c59a66db50a5ull }}, {{ 0xe21289eb3e05a0a0ull, 0x7342ac838023dcc6ull, 0x1ae2e6640ba35eeaull, 0xbd69bdaa5fca4866ull, 0x0d27728e9df9d635ull, 0xfde7b80804912676ull }}, {{ 0xd4b963306c38463cull, 0x809abd2301669fc4ull, 0x0cdcffe87461b528ull, 0x662168a7bde6d3fdull, 0x838a79922bc25e19ull, 0xeb0d30502dab809cull }}, {{ 0x4f3ddfe43a32be58ull, 0x060b635e0e023db0ull, 0x80a1ff148bd11395ull, 0xfd4e168d6b0447e2ull, 0x2368bfb5b597acfdull, 0x2e83e321c8b3061dull }}, {{ 0x186abeea45fb6f70ull, 0x3c71e1ac8c1668e3ull, 0x0653f6cd762ac3d2ull, 0xe50ce1862e2aced9ull, 0x62177d1917ecc1ebull, 0xd126df51d6fe3d23ull }}, {{ 0xf42b7526bbd25a5bull, 0x5c72d0bd78e018deull, 0x3f47a4069daba636ull, 0xf280cf3dcdac147aull, 0xd4eae2faef3f9336ull, 0x2b84b93265ee6361ull }}, {{ 0x89b2938356378793ull, 0x9c7c2766b8c0f8b5ull, 0x78cc684228b47e1full, 0x7908186a08b8ccc6ull, 0x512cddcd587bc025ull, 0xb32f3bf7fb4fe1d2ull }}, {{ 0x60f9c3215e2b4bbcull, 0x1cd98a033789b717ull, 0xb7fc1295970ced3cull, 0xba50f4245737ffc0ull, 0x2bc0aa0574d58176ull, 0xffd857afd11ed237ull }}, {{ 0xc9c19f4dadb0f55aull, 0x207f64202b6126e9ull, 0x2fd8b9d7e6814459ull, 0x4729896b682ffd87ull, 0xb586a43690570ea3ull, 0xfe736cde2b343627ull }}, {{ 0xe1903908c8e99584ull, 0x44f9e941b1cb8521ull, 0xde77426f010cab7bull, 0xc79f5e3211dfe747ull, 0x17426a21a3669260ull, 0xf08240adb00a1d8dull }}, {{ 0xcfa23a57d91fd72cull, 0xb1c31c90f1f33352ull, 0xb0a898560a7eb2d0ull, 0xcc39adf4b2bf08ceull, 0xe89825506201b7c7ull, 0x651686c8e0652782ull }}, {{ 0x1c56476e7b3e67bcull, 0xf19f1da97380013cull, 0xe695f35c68f2fc26ull, 0xfa40cb8efb765812ull, 0x15f17523d4112dcdull, 0xf2e143d8c3f38b1dull }}, {{ 0x1b5eca50d0700d55ull, 0x7037289e83000c59ull, 0x01db819c197dd985ull, 0xc687f395d29f70bdull, 0xdb6e936648abca0bull, 0x7ccca677a7836f22ull }}, {{ 0x11b3e72824608550ull, 0x622796311e007b7bull, 0x12931018feea7f36ull, 0xc14f83da3a3a6762ull, 0x9251c1fed6b5e475ull, 0xdffe80ac8b22575cull }}, {{ 0xb10707916bc53523ull, 0xd58bddeb2c04d2ceull, 0xb9bea0f9f528f81full, 0x8d1b2686464809d4ull, 0xb73193f4631aec99ull, 0xbff106bd6f57699dull }}, {{ 0xea464bae35b4135bull, 0x5776ab2fb8303c12ull, 0x417249c39399b13eull, 0x830f813ebed0624full, 0x27efc78bdf0d3dffull, 0x7f6a4366596a2029ull }}, {{ 0x26bef4ce1908c18aull, 0x6aa2afdd31e258bdull, 0x8e76e1a3c400ec6full, 0x1e9b0c737423d718ull, 0x8f5dcb76b6846bfbull, 0xfa26a1ff7e25419bull }}, {{ 0x8375900cfa578f69ull, 0x2a5adea3f2d77763ull, 0x90a4d065a8093c5aull, 0x320e7c82896666f5ull, 0x99a9f2a3212c37cfull, 0xc58253faed749013ull }}, {{ 0x2297a081c76b9a18ull, 0xa78cb2677c6aa9e3ull, 0xa67023f8905c5b85ull, 0xf490dd195e000597ull, 0x00a37a5f4bba2e17ull, 0xb71747cd468da0c4ull }}, {{ 0x59ec4511ca3404f1ull, 0x8b7ef80adc2aa2dfull, 0x806167b5a39b9338ull, 0x8da8a2fdac0037ecull, 0x0662c7b8f545ccefull, 0x26e8ce04c18847a8ull }}, {{ 0x833ab2b1e6083166ull, 0x72f5b06c99aa5cb9ull, 0x03ce0d186413c035ull, 0x88965de8b8022f3dull, 0x3fdbcd3994ba015bull, 0x85180c2f8f52cc90ull }}, {{ 0x204afaf2fc51edf9ull, 0x7d98e43e00a79f3full, 0x260c82f3e8c58216ull, 0x55dfab173015d862ull, 0x7e96043fcf440d93ull, 0x32f079db993bfda2ull }}, {{ 0x42edcd7ddb334bb8ull, 0xe7f8ea6c068c3877ull, 0x7c7d1d8717b714e0ull, 0x5abcaee7e0da73d5ull, 0xf1dc2a7e18a887c1ull, 0xfd64c293fc57e858ull }}, {{ 0x9d4a06ea9000f52dull, 0x0fb92838417a34a8ull, 0xdce32746ed26d0c9ull, 0x8b5ed50ec8888656ull, 0x7299a8ecf6954d8dull, 0xe5ef99c7db6f1379ull }}, {{ 0x24e44529a00993bfull, 0x9d3b92328ec60e96ull, 0xa0df88c5438427daull, 0x71b45293d5553f64ull, 0x7a009941a1d50787ull, 0xfb5c01ce9256c2beull }}, {{ 0x70eab3a0405fc571ull, 0x2453b5f993bc91ddull, 0x48bb57b4a3298e8aull, 0x710b39c6555479eeull, 0xc405fc9052524b4aull, 0xd1981211b7639b70ull }}, {{ 0x692b044283bdb66dull, 0x6b451bbfc55db2a6ull, 0xd7516d0e5f9f9165ull, 0x6a7041bf554cc34eull, 0xa83bdda33736f0e8ull, 0x2ff0b4b129e41267ull }}, {{ 0x1bae2a992569203full, 0x30b3157db5a8fa80ull, 0x692e428fbc3badf6ull, 0x2862917954ffa114ull, 0x9256a86028256914ull, 0xdf670eeba2e8b80cull }}, {{ 0x14cda9fb761b4271ull, 0xe6fed6e91899c901ull, 0x1bce999d5a54cb9dull, 0x93d9aebd51fc4accull, 0xb76293c191761ac9ull, 0xba0695345d17307dull }}, {{ 0xd008a3d29d10986dull, 0x05f4651af601da0aull, 0x16120025874ff42bull, 0xc680d36533daebf9ull, 0x29d9c58fae9d0bdfull, 0x4441d40ba2e7e4e9ull }}, {{ 0x2056663a22a5f445ull, 0x3b8bf30d9c12846cull, 0xdcb40177491f89aeull, 0xc10841f4068d37baull, 0xa281b79cd22276bdull, 0xaa9248745d0ef11bull }}, {{ 0x435ffe455a7b8aaeull, 0x53777e8818b92c39ull, 0x9f080ea8db3b60ceull, 0x8a52938841842d4cull, 0x59112c203558a369ull, 0xa9b6d48ba2956b14ull }}, {{ 0xa1bfeeb588d36aceull, 0x42aaf150f73bba3cull, 0x365092989051c80full, 0x6739c3528f29c4feull, 0x7aabb9421576621full, 0xa1244d7459d62ecbull }}, {{ 0x517f531758422c09ull, 0x9aad6d29a855465eull, 0x1f25b9f5a331d098ull, 0x0841a13997a1b1eeull, 0xcab53c94d69fd53aull, 0x4b6b068b825dd3f2ull }}, {{ 0x2ef93ee97295b857ull, 0x0ac643a09354bfafull, 0x377943985ff225f6ull, 0x52904c3fec50f34dull, 0xeb145dd0623e5444ull, 0xf22e417317aa477bull }}, {{ 0xd5bc751e79d93362ull, 0x6bbea445c14f7cd7ull, 0x2abca3f3bf757b9cull, 0x39a2fa7f3b298104ull, 0x2ecbaa23d66f4aabull, 0x75ce8e7eeca6cad7ull }}, {{ 0x595c9330c27c01d2ull, 0x35726ab98d1ae06eull, 0xab5e67857a96d41cull, 0x405dc8f84f9f0a29ull, 0xd3f4a5666058eab0ull, 0x9a1190f53e83ec67ull }}, {{ 0x7d9dbfe798d81236ull, 0x16782b3f830cc44full, 0xb1b00b36c9e4491aull, 0x83a9d9b31c3665a0ull, 0x478e75ffc3792ae2ull, 0x04afa99471273c0eull }}, {{ 0xe8297f0bf870b61aull, 0xe0b1b07b1e7fab1aull, 0xf0e07023e2eadb04ull, 0x24a280ff1a1ff846ull, 0xcb909bfda2bbacd9ull, 0x2edc9fcc6b88588eull }}, {{ 0x119ef677b4671d01ull, 0xc6f0e4cf30fcaf0dull, 0x68c46166dd2c8e30ull, 0x6e5909f7053fb2c5ull, 0xf3a617e85b54c07bull, 0xd49e3dfc33537593ull }}, {{ 0xb035a0ad0c072207ull, 0xc568f017e9ded682ull, 0x17abce04a3bd8de7ull, 0x4f7a63a6347cfbb6ull, 0x847cef13914f84d2ull, 0x4e2e6bda014297c7ull }}, {{ 0xe21846c278475442ull, 0xb61960ef22b4611aull, 0xecb60c2e65678b0dull, 0x1ac7e47e0ce1d51cull, 0x2ce156c3ad1b3037ull, 0x0dd036840c99edcbull }}, {{ 0xd4f2c398b2c94a90ull, 0x1cfdc9575b0bcb0cull, 0x3f1c79cff60b6e89ull, 0x0bceecec80d25321ull, 0xc0cd63a4c30fe227ull, 0x8a2221287e0349efull }}, {{ 0x517ba3f6fbdce9a2ull, 0x21e9dd698e75ee80ull, 0x771cc21f9c72515bull, 0x7615413d08373f4cull, 0x8805e46f9e9ed586ull, 0x65554b94ec20e35dull }}, {{ 0x2ed467a5d6a12053ull, 0x5322a61f909b5103ull, 0xa71f953c1c772d8full, 0x9cd48c62522878fcull, 0x503aec5c32345740ull, 0xf554f3d13948e1a7ull }}, {{ 0xd44c0c7a624b433full, 0x3f5a7d3ba6112a1full, 0x873bd4591ca7c799ull, 0x204d7bd73594b9deull, 0x224d3b99f60b6886ull, 0x9551862c3cd8d089ull }}, {{ 0x4af87cc7d6f0a075ull, 0x7988e4547caba53eull, 0x48564b7b1e8dcbfcull, 0x4306d66817cf42b1ull, 0x570454039c72153dull, 0xd52f3dba6078255bull }}, {{ 0xedb4dfce65664490ull, 0xbf58eb4cdeb4746eull, 0xd35ef2cf3189f7dcull, 0x9e446010ee189aecull, 0x662b48241c74d464ull, 0x53d86947c4b17591ull }}, {{ 0x4910be0ff5feada0ull, 0x79793100b30c8c55ull, 0x41b57c17ef63ae9full, 0x2eabc0a94cf60d40ull, 0xfdb0d1691c904beeull, 0x46741ccdaeee97adull }}, {{ 0xdaa76c9f9bf2c83eull, 0xbebbea06fe7d7b54ull, 0x9116d8ef59e4d23aull, 0xd2b5869d019c8482ull, 0xe8e82e1b1da2f74dull, 0xc0892008d551eccbull }}, {{ 0x8a8a3e3c177bd268ull, 0x73572445f0e6d150ull, 0xaae4795982f0364bull, 0x3b174222101d2d19ull, 0x1911cd0f285da90aull, 0x855b405855333ff7ull }}, {{ 0x69666e58ead6380eull, 0x81676abb69042d25ull, 0xacecbd7f1d621ef2ull, 0x4ee89554a123c300ull, 0xfab2029793a89a66ull, 0x3590837354007fa6ull }}, {{ 0x1e004f792c5e3090ull, 0x0e0a2b521a29c376ull, 0xc13f66f725d53579ull, 0x1515d54e4b659e06ull, 0xcaf419ebc49607ffull, 0x17a522814804fc85ull }}, {{ 0x2c031abbbbade59full, 0x8c65b13505a1a29dull, 0x8c7a05a77a5416baull, 0xd2da550ef1f82c43ull, 0xed890335addc4ff6ull, 0xec73590cd031dd39ull }}, {{ 0xb81f0b5554caf83bull, 0x7bf8ec1238505a23ull, 0x7cc4388ac748e349ull, 0x3c87529573b1baa3ull, 0x475a2018ca9b1fa4ull, 0x3c817a8021f2a443ull }}, {{ 0x313671554fedb24dull, 0xd7b938b633238565ull, 0xdfaa356bc8d8e0deull, 0x5d4939d684f14a62ull, 0xc98540f7ea0f3c6aull, 0x5d0ec901537a6aa0ull }}, {{ 0xec206d551f48f6fdull, 0x6d3c371dff6335f3ull, 0xbca61635d878c8b4ull, 0xa4dc4261316ce7dcull, 0xdf3489af24985c27ull, 0xa293da0d42c82a47ull }}, {{ 0x3944455338d9a5e7ull, 0x445a272bf9e01b87ull, 0x5e7cde1a74b7d70cull, 0x709a97cbee410e9full, 0xb80d60d76df3998cull, 0x59c684849bd1a6ceull }}, {{ 0x3caab54038807b04ull, 0xab8587b7c2c11348ull, 0xb0e0ad088f2e667aull, 0x6609edf74e8a9239ull, 0x3085c86a4b83ff7cull, 0x81c12d2e16308413ull }}, {{ 0x5eab14823504ce2bull, 0xb3374d2d9b8ac0d2ull, 0xe8c6c25597d000caull, 0xfc634ba91169b640ull, 0xe539d426f327fadbull, 0x118bc3ccdde528bfull }}, {{ 0xb2aecd1612300dafull, 0x002903c8136b8837ull, 0x17c39757ee2007ebull, 0xdbe0f49aae211e89ull, 0xf44249857f8fcc97ull, 0xaf75a600aaf3977eull }}, {{ 0xfad402dcb5e088d7ull, 0x019a25d0c233522cull, 0xeda3e96f4d404f2eull, 0x96c98e0acd4b315aull, 0x8a96df36fb9dfdeeull, 0xda987c06ad83eaf5ull }}, {{ 0xcc481c9f1ac55867ull, 0x10057a27960135c1ull, 0x48671e59048317ccull, 0xe3df8c6c04efed8dull, 0x69e4b825d42beb51ull, 0x89f4d842c7272d97ull }}, {{ 0xfad11e370bb57404ull, 0xa036c58bdc0c1991ull, 0xd4072f7a2d1eedf8ull, 0xe6bb7c38315f4784ull, 0x22ef317a49b73132ull, 0x6390729bc787c7eaull }}, {{ 0xcc2b2e2675168828ull, 0x4223b7769878ffb3ull, 0x4847dac5c3354bb6ull, 0x0352da31edb8cb30ull, 0x5d57eec6e127ebfdull, 0xe3a47a15cb4dcf25ull }}, {{ 0xf9afcd8092e1518bull, 0x95652aa1f4b9fd05ull, 0xd2ce8bb9a014f51eull, 0x213c85f34937efe2ull, 0xa56f53c4cb8f37e2ull, 0xe46cc4d9f10a1775ull }}, {{ 0xc0de0705bccd2f73ull, 0xd5f3aa538f43e23bull, 0x3c11754040d19331ull, 0x4c5d3b80dc2f5edcull, 0x765945aff3982ed5ull, 0xec3fb0836a64ea98ull }}, {{ 0x88ac46396003da7cull, 0x5b84a74398a6d655ull, 0x58ae9482882fbff2ull, 0xfba4530899d9b49aull, 0x9f7cb8df83f1d454ull, 0x3a7ce52227f129f4ull }}, {{ 0x56babe3dc02688d3ull, 0x932e88a3f6845f57ull, 0x76d1cd1951dd7f77ull, 0xd46b3e5602810e07ull, 0x3adf38bb27724b51ull, 0x48e0f3558f6ba38eull }}, {{ 0x634b6e6981815841ull, 0xbfd15667a12bb969ull, 0xa43202fd32a6faabull, 0x4c306f5c190a8c4aull, 0x4cb8374f8a76f132ull, 0xd8c981579a34638eull }}, {{ 0xe0f2501f0f0d728cull, 0x7e2d600c4bb53e1dull, 0x69f41de3fa85cab5ull, 0xf9e45998fa697aeaull, 0xff32291b68a56bf6ull, 0x77df0d6c060be38eull }}, {{ 0xc97721369686797cull, 0xedc5c07af5146d2aull, 0x23892ae7c939eb16ull, 0xc2eb7ff9c81ecd28ull, 0xf7f59b12167637a5ull, 0xaeb686383c76e395ull }}, {{ 0xdea74c21e140bed5ull, 0x49b984cd92cc43abull, 0x635bad0ddc432ee5ull, 0x9d32ffc1d1340391ull, 0xaf980eb4e09e2c79ull, 0xd3213e325ca4e3dbull }}, {{ 0xb288f952cc877457ull, 0xe13f3007bbfaa4b6ull, 0xe194c28a9a9fd4f4ull, 0x23fdfd922c0823adull, 0xdbf09310c62dbcc0ull, 0x3f4c6df79e70e694ull }}, {{ 0xf959bd3bfd4a8b62ull, 0xcc77e04d57ca6f22ull, 0xcfcf996a0a3e5190ull, 0x67ebe7b5b85164caull, 0x9765bea7bdc95f81ull, 0x78fc4bac306901d0ull }}, {{ 0xbd816457e4e971d7ull, 0xfcaec3056de8575dull, 0x1e1bfe24666f2fa7ull, 0x0f370d19332defecull, 0xe9f9728d69ddbb0eull, 0xb9daf4b9e41a1225ull }}, {{ 0x670deb6ef11e7269ull, 0xded39e364b1369a9ull, 0x2d17ed6c0057dc8full, 0x982682fbffcb5f39ull, 0x23be798622a94e8cull, 0x428d8f42e904b57bull }}, {{ 0x068b32556b30781aull, 0xb4442e1eeec2209eull, 0xc2ef4638036e9d9eull, 0xf1811dd7fdf1b83bull, 0x6570bf3d5a9d117dull, 0x9987989d1a2f16cfull }}, {{ 0x416ff7562fe4b100ull, 0x0aa9cd355395462cull, 0x9d58be3022522833ull, 0x6f0b2a6feb713255ull, 0xf66778658a22aeebull, 0xff4bf62305d6e419ull }}, {{ 0x8e5fa95ddeeeea04ull, 0x6aa2041543d4bdbaull, 0x25776de1573591feull, 0x566fa85f326bf758ull, 0xa00ab3f7655ad532ull, 0xf8f79d5e3a64e903ull }}, {{ 0x8fbc9daab5552427ull, 0x2a5428d4a64f6949ull, 0x76aa4acd6817b3f0ull, 0x605c93b7f837a971ull, 0x406b07a9f58c53f7ull, 0xb9ac25ae47f11a24ull }}, {{ 0x9d5e28ab15536986ull, 0xa749984e7f1a1cdfull, 0xa2a6ec0610ed0761ull, 0xc39dc52fb22c9e6eull, 0x842e4ca3977b47a9ull, 0x40b978cecf6b056aull }}, {{ 0x25ad96aed5421f37ull, 0x88dff310f70520bcull, 0x5a85383ca94249d0ull, 0xa429b3dcf5be3052ull, 0x29cefe63ead0cca1ull, 0x873eb8141a2e3629ull }}, {{ 0x78c7e2d454953827ull, 0x58bf7ea9a6334759ull, 0x8934325e9c96e225ull, 0x69a106a1996de337ull, 0xa215efe72c27fe50ull, 0x487330c905ce1d9bull }}, {{ 0xb7cedc4b4dd43186ull, 0x777af2a07e00c97eull, 0x5c09f7b21de4d575ull, 0x204a424ffe4ae02bull, 0x54db5f07b98fef24ull, 0xd47fe7da3a0d2814ull }}, {{ 0x2e149af10a49ef37ull, 0xaacd7a44ec07def3ull, 0x9863acf52af05696ull, 0x42e6971feeecc1b1ull, 0x5091b64d3f9f5769ull, 0x4cff0e86448390cbull }}, {{ 0xccce0d6a66e35829ull, 0xac06c6b1384eb57full, 0xf3e4c193ad6361e2ull, 0x9d01e73f553f90efull, 0x25b11f047c396a1cull, 0x01f6913ead23a7f1ull }}, {{ 0x000c862804e17196ull, 0xb843c2ec331316feull, 0x86ef8fc4c5e1d2daull, 0x22130879547ba95full, 0x78eb362cda3e251eull, 0x13a1ac72c3648f6bull }}, {{ 0x007d3d9030ce6fddull, 0x32a59d39febee5ecull, 0x455b9dafbad23c8bull, 0x54be54bd4cd49dbbull, 0xb9301dc0866d732dull, 0xc450bc7ba1ed9a32ull }}, {{ 0x04e467a1e8105ea1ull, 0xfa782443f374fb38ull, 0xb59428dd4c365d6full, 0x4f6f4f65004e2950ull, 0x3be1298540467fc5ull, 0xab275cd4534805fbull }}, {{ 0x30ec0c5310a3b24full, 0xc8b16aa78291d030ull, 0x17c998a4fa1fa65full, 0x1a5919f2030d9d27ull, 0x56cb9f3482c0fdb5ull, 0xaf89a04b40d03bd0ull }}, {{ 0xe9387b3ea664f713ull, 0xd6ee2a8b19b221e1ull, 0xeddff671c53c7fbdull, 0x077b03741e882386ull, 0x63f4380d1b89e913ull, 0xdb6042f088225623ull }}, {{ 0x1c34d0727ff1a6beull, 0x654da96f00f552d3ull, 0x4abfa071b45cfd6aull, 0x4ace228931516345ull, 0xe78a308313631abeull, 0x91c29d6551575d61ull }}, {{ 0x1a102478ff708368ull, 0xf5089e5609953c3full, 0xeb7c44710ba1e627ull, 0xec0d595bed2de0b4ull, 0x0b65e51ec1df0b6eull, 0xb19a25f52d69a5d3ull }}, {{ 0x04a16cb9fa65220full, 0x92562f5c5fd45a77ull, 0x32daac6a7452fd8full, 0x38857d9743cac711ull, 0x71faf33392b67255ull, 0xf0057b93c6207a3eull }}, {{ 0x2e4e3f43c7f35493ull, 0xb75dd99bbe4b88a6ull, 0xfc8abc288b3de79bull, 0x3536e7e8a5ebc6abull, 0x73cd8003bb207754ull, 0x6036d3c5bd44c670ull }}, {{ 0xcf0e78a5cf814dbdull, 0x29aa80156ef3567dull, 0xdd6b5995706b0c15ull, 0x14250f167b35c2b7ull, 0x860700254f44a94aull, 0xc22445b964afc064ull }}, {{ 0x1690b67a1b0d0966ull, 0xa0a900d6558160eaull, 0xa6317fd6642e78d3ull, 0xc97296e0d0199b2eull, 0x3c46017518ae9ce4ull, 0x956ab93deedd83edull }}, {{ 0xe1a720c50e825df8ull, 0x469a085f570dc924ull, 0x7deefe5fe9d0b844ull, 0xde79e4c821000fd2ull, 0x5abc0e92f6d220efull, 0xd62b3c6b54a72744ull }}, {{ 0xd08747b29117abb2ull, 0xc20453b96689db70ull, 0xeb55efbf222732aaull, 0xb0c2efd14a009e38ull, 0x8b5891bda435495eull, 0x5db05c314e8788abull }}, {{ 0x2548ccf9aaecb4f8ull, 0x942b453e01629268ull, 0x315b5d775587faabull, 0xe79d5e2ce4062e39ull, 0x7175b1686a14ddb2ull, 0xa8e399ed114b56b3ull }}, {{ 0x74d801c0ad3f11b3ull, 0xc9b0b46c0dd9b811ull, 0xed91a6a9574fcab3ull, 0x0c25adc0e83dce3bull, 0x6e98ee1424d0a8fdull, 0x98e40342acf16302ull }}, {{ 0x90701186c476b101ull, 0xe0e70c388a8130aeull, 0x47b0829d691deb05ull, 0x7978c989126a0e57ull, 0x51f94cc9702699e2ull, 0xf8e8209ac16dde18ull }}, {{ 0xa460af43aca2ea0eull, 0xc9067a35690be6d1ull, 0xcce51a261b2b2e3aull, 0xbeb7df5ab8248f68ull, 0x33bcffde618202d8ull, 0xb911460b8e4aacf3ull }}, {{ 0x6bc6d8a4be5d248eull, 0xda40c6161a770430ull, 0x00f3057d0fafce4bull, 0x732eb98b316d9a18ull, 0x0561feafcf141c77ull, 0x3aacbc738eeac180ull }}, {{ 0x35c4766f6fa36d90ull, 0x8687bcdd08a629e4ull, 0x097e36e29cde0ef6ull, 0x7fd33f6fee4804f0ull, 0x35d3f2de16c91caaull, 0x4abf5c83952b8f00ull }}, {{ 0x19aca05a5c6247a2ull, 0x414d60a2567da2eaull, 0x5eee24da20ac95a1ull, 0xfe407a5f4ed03160ull, 0x1a477cace3db1ea8ull, 0xeb799d23d3b39602ull }}, {{ 0x00be43879bd6cc55ull, 0x8d05c65760e85d25ull, 0xb54d708546bdd84cull, 0xee84c7b91421edc3ull, 0x06cadec0e68f3299ull, 0x32c023664503dc15ull }}, {{ 0x076ea34c1663fb53ull, 0x8239bf69c913a372ull, 0x15066534c36a72fdull, 0x512fcd3ac95349a5ull, 0x43ecb3890197fa03ull, 0xfb8161feb22698d2ull }}, {{ 0x4a5260f8dfe7d139ull, 0x16417a21dac46274ull, 0xd23ff40fa2287de7ull, 0x2bde044bdd40e072ull, 0xa73f035a0fefc421ull, 0xd30dd3f2f581f836ull }}, {{ 0xe737c9b8bf0e2c3bull, 0xde8ec5528babd88aull, 0x367f889c5594eb06ull, 0xb6ac2af6a488c47cull, 0x887621849f5da94bull, 0x3e8a477d9713b222ull }}, {{ 0x082de137768dba52ull, 0xb193b53974b6756dull, 0x20fb561b57d12e44ull, 0x22b9ada26d57acdaull, 0x549d4f2e39a89cf5ull, 0x7166cae7e6c4f559ull }}, {{ 0x51cacc2aa1894734ull, 0xefc5143e8f209642ull, 0x49d15d116e2bceaeull, 0x5b40c858456cc085ull, 0x4e2517ce40962193ull, 0x6e03ed0f03b1957dull }}, {{ 0x31ebf9aa4f5cc809ull, 0x5db2ca719745de97ull, 0xe22da2ae4db612d5ull, 0x9087d372b63f8534ull, 0x0d72ee0e85dd4fc1ull, 0x4c27429624efd6e5ull }}, {{ 0xf337c0a7199fd055ull, 0xa8fbe86fe8bab1e7ull, 0xd5c85acf091cbc55ull, 0xa54e427b1e7b3410ull, 0x867d4c913aa51d8full, 0xf98899dd715e64f2ull }}, {{ 0x802d8687003e2353ull, 0x99d7145f174af30full, 0x59d38c165b1f5b58ull, 0x750e98cf30d008a8ull, 0x40e4fdac4a73279cull, 0xbf5602a66daff179ull }}, {{ 0x01c74146026d6141ull, 0x0266cbb6e8ed7e9bull, 0x824378df8f399176ull, 0x9291f817e8205693ull, 0x88f1e8bae87f8c1cull, 0x795c1a8048df6ebcull }}, {{ 0x11c88cbc1845cc8cull, 0x1803f5251946f20eull, 0x16a2b8bb983fae9cull, 0xb9b3b0ef114361c3ull, 0x5973174d14fb791dull, 0xbd990902d8ba535dull }}, {{ 0xb1d57f58f2b9fd77ull, 0xf0279372fcc5748cull, 0xe25b3753f27cd218ull, 0x4104e956aca1d19eull, 0x7e7ee902d1d2bb29ull, 0x67fa5a1c774741a5ull }}, {{ 0xf256f9797b43e6a7ull, 0x618bc27ddfb68d7eull, 0xd790294778e034f9ull, 0x8a311d62be523034ull, 0xf0f51a1c323b4f9cull, 0x0fc7851ca8c89076ull }}, {{ 0x7765bebed0a70285ull, 0xcf7598eabd2186f5ull, 0x6ba19ccab8c211bdull, 0x65eb25db6f35e210ull, 0x69930519f6511c1dull, 0x9dcb331e97d5a4a5ull }}, {{ 0xa9f9737426861932ull, 0x1a97f92b634f4596ull, 0x34501feb3794b16aull, 0xfb2f7a92581ad4a4ull, 0x1fbe33039f2b1925ull, 0x29efff31ee586e76ull }}, {{ 0xa3be8289813cfbf5ull, 0x09efbbb1e118b7e2ull, 0x0b213f302bceee25ull, 0xcfdac9b7710c4e6aull, 0x3d6dfe2437aefb7bull, 0xa35ff7f34f74509dull }}, {{ 0x6571195f0c61d794ull, 0x635d54f2caf72edaull, 0x6f4c77e1b6154d72ull, 0x1e8be12a6a7b1024ull, 0x664bed6a2cd5d2d6ull, 0x61bfaf811a8b2624ull }}, {{ 0xf66afdb67bd26bc9ull, 0xe1a5517beda7d487ull, 0x58fcaed11cd50677ull, 0x3176cba828cea16cull, 0xfef74625c05a3c5dull, 0xd17cdb0b096f7d6bull }}, {{ 0xa02de920d63835d6ull, 0xd0752ed7488e4d4full, 0x79ded42b205240aeull, 0xeea3f49198124e3bull, 0xf5a8bd7983865ba3ull, 0x2ee08e6e5e5ae637ull }}, {{ 0x41cb1b485e321a5aull, 0x2493d468d58f051cull, 0xc2b449af433686d4ull, 0x52678daff0b70e52ull, 0x989766bf233f9467ull, 0xd4c5904faf8cfe2full }}, {{ 0x91ef10d3adf50782ull, 0x6dc64c185796331aull, 0x9b0ae0d8a0214449ull, 0x380b88df67268f3bull, 0xf5ea0377607bcc09ull, 0x4fb7a31cdb81eddbull }}, {{ 0xb356a844cb924b14ull, 0x49bef8f36bddff09ull, 0x0e6cc876414caadeull, 0x307358ba07819854ull, 0x9b2422a9c4d5f85cull, 0x1d2c5f2093134a97ull }}, {{ 0x016292aff3b6eec8ull, 0xe175b98236abf661ull, 0x903fd49e8cfeacaeull, 0xe48177444b0ff348ull, 0x0f695aa1b05bb399ull, 0x23bbb745bec0e9ecull }}, {{ 0x0dd9badf852553d4ull, 0xce993f1622b79fcaull, 0xa27e4e3181f2bed4ull, 0xed0ea8aaee9f80d5ull, 0x9a1d8a50e3950402ull, 0x655528b973892338ull }}, {{ 0x8a814cbb3375464bull, 0x11fc76dd5b2c3de4ull, 0x58ef0def137b7450ull, 0x429296ad523b0858ull, 0x05276728e3d2281dull, 0xf553973e835b6036ull }}, {{ 0x690cff500294beebull, 0xb3dca4a58fba6aedull, 0x79568b56c2d28b20ull, 0x99b9e2c5364e5373ull, 0x338a0798e6359124ull, 0x9543e8712191c21cull }}, {{ 0x1a81f92019cf752eull, 0x069e6e779d482d46ull, 0xbd6171639c396f47ull, 0x0142dbb41f0f4282ull, 0x03644bf8fe17ab6eull, 0xd4a7146b4fb1951aull }}, {{ 0x0913bb41021a93d0ull, 0x423050ac24d1c4bdull, 0x65ce6de41a3e58c6ull, 0x0c9c95093698991bull, 0x21eaf7b9ececb24cull, 0x4e86cc311cefd304ull }}, {{ 0x5ac5508a1509c624ull, 0x95e326b97031af62ull, 0xfa104ae9066f77beull, 0x7e1dd25c21f5fb11ull, 0x532dad43413ef6f8ull, 0x1143f9eb215e3e29ull }}, {{ 0x8bb52564d261bd66ull, 0xdadf833e61f0d9d7ull, 0xc4a2ed1a405aad71ull, 0xed2a3799539bceb3ull, 0x3fc8c4a08c75a5b4ull, 0xaca7c32f4dae6d9dull }}, {{ 0x751375f037d16600ull, 0x8cbb206fd368826bull, 0xae5d4306838ac672ull, 0x43a62bfd44161305ull, 0x7dd7ae457c987911ull, 0xbe8d9fd908d04824ull }}, {{ 0x92c29b622e2dfc01ull, 0x7f4f445e42151832ull, 0xcfa49e41236bc079ull, 0xa47db7e4a8dcbe38ull, 0xea6cceb6ddf4baacull, 0x71883e7a5822d16cull }}, {{ 0xbb9a11d5cdcbd80bull, 0xf918abae94d2f1f9ull, 0x1c6e2e8b623584beull, 0x6ce92eee989f6e38ull, 0x28401324ab8f4abeull, 0x6f5270c7715c2e41ull }}, {{ 0x5404b25a09f67073ull, 0xbaf6b4d1d03d73c1ull, 0x1c4dd171d6172f75ull, 0x411bd551f63a4e31ull, 0x9280bf6eb398eb70ull, 0x593867ca6d99ce8bull }}, {{ 0x482ef78463a0647dull, 0x4da310322266858dull, 0x1b0a2e725ce7da99ull, 0x8b1655339e470debull, 0xb9077a5303f93262ull, 0x7c340de848021173ull }}, {{ 0xd1d5ab2be443ece4ull, 0x085ea1f558013784ull, 0x0e65d077a10e89fdull, 0x6edf54042ec68b2full, 0x3a4ac73e27bbf7d9ull, 0xda088b12d014ae85ull }}, {{ 0x3258afb6eaa740eaull, 0x53b25395700c2b30ull, 0x8ffa24ac4a9163e2ull, 0x54b94829d3c16fd6ull, 0x46ebc86d8d57ae7eull, 0x84556ebc20ced134ull }}, {{ 0xf776dd252a888924ull, 0x44f743d66079afe1ull, 0x9fc56ebae9ade6d7ull, 0x4f3cd1a2458e5e61ull, 0xc535d447856cd0efull, 0x2b56535948142c0aull }}, {{ 0xaaa4a373a9555b6bull, 0xb1a8a65fc4c0ded3ull, 0x3db6534d20cb0468ull, 0x18603056b78fafd0ull, 0xb41a4acb36402959ull, 0xb15f417cd0c9b86bull }}, {{ 0xaa6e62849d55922bull, 0xf0967fbdaf88b444ull, 0x691f410347ee2c16ull, 0xf3c1e3632b9cde22ull, 0x0906ebf01e819d7aull, 0xedb88ee027e13435ull }}, {{ 0xa84fd92e2557b5adull, 0x65e0fd68db570aaeull, 0x1b388a20cf4db8e5ull, 0x8592e1dfb420ad58ull, 0x5a453761311026cdull, 0x493594c18ecc0a12ull }}, {{ 0x931e7bcd756d18c6ull, 0xfac9e61891666ad2ull, 0x10356548190938f5ull, 0x37bcd2bd0946c571ull, 0x86b429cbeaa18407ull, 0xdc17cf8f93f864b7ull }}, {{ 0xbf30d6069642f7bbull, 0xcbe2fcf5ae002c39ull, 0xa215f4d0fa5c399bull, 0x2d603b625cc3b66aull, 0x4309a1f72a4f2848ull, 0x98ee1b9bc7b3ef2bull }}, {{ 0x77e85c41de9dad4aull, 0xf6dde198cc01ba41ull, 0x54db9029c79a4015ull, 0xc5c251d79fa5202aull, 0x9e6053a7a71792d1ull, 0xf94d1415cd0757b0ull }}, {{ 0xaf139a92b228c4e6ull, 0xa4aacff7f811468eull, 0x5093a1a1cc0680dbull, 0xb997326c3c7341a7ull, 0x2fc3448c86ebbc31ull, 0xbd02c8da02496ce6ull }}, {{ 0xd6c409baf597b0faull, 0x6eac1fafb0acc192ull, 0x25c45051f8410894ull, 0x3fe7f83a5c809089ull, 0xdda0ad7d453559f1ull, 0x621bd88416de40fdull }}, {{ 0x63a8614d97ece9c7ull, 0x52b93cdce6bf8fbcull, 0x79ab2333b28a55ccull, 0x7f0fb2479d05a55bull, 0xa846c6e4b415836cull, 0xd5167528e4ae89eaull }}, {{ 0xe493cd07ef4121c2ull, 0x3b3c60a1037b9d5bull, 0xc0af6004f96759fbull, 0xf69cf6cc22387592ull, 0x92c3c4ef08d7223cull, 0x52e09398eed1632aull }}, {{ 0xedc6024f588b5192ull, 0x505bc64a22d42596ull, 0x86d9c031be0983d0ull, 0xa221a3f9563497bbull, 0xbba5b15658675661ull, 0x3cc5c3f9542ddfa9ull }}, {{ 0x49bc171975712fb3ull, 0x2395bee55c4977e5ull, 0x448181f16c5f2623ull, 0x555067bd5e0ded53ull, 0x5478ed5f74095fd0ull, 0x5fb9a7bd49cabca1ull }}, {{ 0xe158e6fe966bdcfeull, 0x63d974f59adeaef4ull, 0xad0f136e3bb77d5full, 0x55240d65ac8b4540ull, 0x4cb945ba885dbe23ull, 0xbd408d64e1eb5e4dull }}, {{ 0xcd7905f1e036a1e8ull, 0xe67e91980cb2d590ull, 0xc296c24e552ae5b9ull, 0x536885f8bd70b486ull, 0xff3cb94953a96d61ull, 0x648585f0d331af04ull }}, {{ 0x06ba3b72c2225310ull, 0x00f1aff07efc57a8ull, 0x99e3970f53acf943ull, 0x42153bb766670d43ull, 0xf85f3cdd449e45cdull, 0xed373b683ff0d631ull }}, {{ 0x4346527b95573e9dull, 0x0970df64f5db6c90ull, 0x02e3e69944c1bc9eull, 0x94d4552a000684a4ull, 0xb3b860a4ae2eba04ull, 0x442852127f685df3ull }}, {{ 0xa0bf38d3d568721dull, 0x5e68b9f19a923da2ull, 0x1ce701fcaf915e2cull, 0xd04b53a400412e68ull, 0x0533c66ecdd3442dull, 0xa99334b8fa13ab85ull }}, {{ 0x4778384656147524ull, 0xb017437009b6685aull, 0x210613dedbadadbbull, 0x22f14468028bd011ull, 0x3405c0540a40a9caull, 0x9fc00f39c4c4b332ull }}, {{ 0xcab232bf5ccc9369ull, 0xe0e8a26061201386ull, 0x4a3cc6b494c8c954ull, 0x5d6cac10197620abull, 0x083983486686a1e5ull, 0x3d809841afaefff6ull }}, {{ 0xeaf5fb799ffdc217ull, 0xc91657c3cb40c343ull, 0xe65fc30dcfd7dd50ull, 0xa63eb8a0fe9d46b0ull, 0x523f20d4014252f5ull, 0x6705f290dcd5ff9cull }}, {{ 0x2d9bd2c03fe994e2ull, 0xdadf6da5f087a0a7ull, 0xffbd9e8a1e6ea527ull, 0x7e733649f224c2e8ull, 0x367748480c973d98ull, 0x063b79a8a05bfc1bull }}, {{ 0xc8163b827f1fd0cfull, 0x8cba487b654c4687ull, 0xfd6831653052738eull, 0xf0801ee3756f9d19ull, 0x20a8d2d07de867f4ull, 0x3e52c0964397d910ull }}, {{ 0xd0de5318f73e2819ull, 0x7f46d4d1f4fac14dull, 0xe611edf3e3388391ull, 0x650134e2965c2303ull, 0x46983c24eb140f91ull, 0x6f3b85dea3ee7aa1ull }}, {{ 0x28af3ef9a86d90feull, 0xf8c4503391cb8d0aull, 0xfcb34b86e03523aeull, 0xf20c10d9df995e26ull, 0xc1f259712ec89badull, 0x58533ab26750ca4cull }}, {{ 0x96d875c09447a9e9ull, 0xb7ab2203b1f38265ull, 0xdf00f344c21364d5ull, 0x7478a882bbfdad85ull, 0x93777e6bd3d614cbull, 0x73404af80927e6ffull }}, {{ 0xe4749985cacca31bull, 0x2caf5424f38317f7ull, 0xb60980af94c1f059ull, 0x8cb6951b57e8c73aull, 0xc2aaf036465ccff2ull, 0x8082edb05b8f05fbull }}, {{ 0xec8dff39ebfe5f0aull, 0xbed94971831eefaeull, 0x1c5f06dbcf93637bull, 0x7f21d3116f17c84bull, 0x9aad621ebfa01f79ull, 0x051d48e393963bd5ull }}, {{ 0x3d8bf84337efb662ull, 0x747cde6f1f355cd5ull, 0x1bb644961bc1e2d5ull, 0xf7523eae56edd2efull, 0x0ac5d5337c413abeull, 0x3324d8e3c3de5658ull }}, {{ 0x6777b2a02f5d1fd8ull, 0x8ce0b0573815a054ull, 0x151eaddd1592dc56ull, 0xa93672cf654a3d57ull, 0x6bba5402da8c4b75ull, 0xff7078e5a6af5f70ull }}, {{ 0x0aacfa41d9a33e6full, 0x80c6e36830d8434cull, 0xd332caa2d7bc9b61ull, 0x9c207c19f4e66566ull, 0x3547481c897af298ull, 0xfa64b8f882d9ba64ull }}, {{ 0x6ac1c69280607051ull, 0x07c4e211e872a0f8ull, 0x3ffbea5c6d5e11cfull, 0x1944d90390fff604ull, 0x14c8d11d5ecd79f6ull, 0xc7ef39b51c8147eaull }}, {{ 0x2b91c1b903c4632dull, 0x4db0d4b3147a49b4ull, 0x7fd7279c45acb216ull, 0xfcb07a23a9ff9c2aull, 0xcfd82b25b406c39cull, 0xcf5841131d0ccf24ull }}, {{ 0xb3b1913a25abdfc1ull, 0x08e84efeccc6e109ull, 0xfe678c1ab8bef4dfull, 0xdee4c564a3fc19a8ull, 0x1e71af790843a421ull, 0x19728abf22801770ull }}, {{ 0x04efac4578b6bd87ull, 0x591315f3ffc4ca61ull, 0xf00b790b377590b6ull, 0xb4efb5ee67d90099ull, 0x3070daba52a46952ull, 0xfe796b775900ea61ull }}, {{ 0x315cbab6b7236745ull, 0x7abedb87fdafe7caull, 0x6072ba702a97a71full, 0x115d1b500e7a0603ull, 0xe4688b473a6c1d3bull, 0xf0be32a97a0927cbull }}, {{ 0xed9f4b23276208aeull, 0xcb74934fe8df0de5ull, 0xc47b4861a9ec873aull, 0xada3112090c43c21ull, 0xec1570c84839244eull, 0x676dfa9ec45b8df6ull }}, {{ 0x4838ef5f89d456cdull, 0xf28dc11f18b68afbull, 0xacd0d3d0a33d484bull, 0xc85eab45a7aa5951ull, 0x38d667d2d23b6b12ull, 0x0a4bca33ab938ba5ull }}, {{ 0xd23959bb624b63ffull, 0x79898b36f7216dd0ull, 0xc02846266064d2f7ull, 0xd3b2b0b88ca77d30ull, 0x38600e3c36522ebbull, 0x66f5e604b3c37474ull }}, {{ 0x363d8151d6f1e7f3ull, 0xbf5f7025a74e4a28ull, 0x8192bd7fc3f03daaull, 0x44fae7357e8ae3e7ull, 0x33c08e5a1f35d356ull, 0x059afc2f05a28c8aull }}, {{ 0x1e670d3265730f80ull, 0x79ba6178890ee592ull, 0x0fbb66fda76268abull, 0xb1cd0816f16ce70bull, 0x05858f85381a415eull, 0x380dd9d638597d66ull }}, {{ 0x300683f7f67e9afeull, 0xc147ceb55a94f7b5ull, 0x9d5205e889d816b2ull, 0xf20250e56e41066eull, 0x37379b3431068db2ull, 0x308a825e337ee5fcull }}, {{ 0xe04127afa0f20debull, 0x8cce131589d1ad13ull, 0x25343b156270e2fbull, 0x741728f64e8a4052ull, 0x282c1009ea4188fdull, 0xe56917ae02f4fbdaull }}, {{ 0xc28b8cdc49748b2dull, 0x800cbed76230c2c6ull, 0x740a4ed5d868ddd3ull, 0x88e7999f11668335ull, 0x91b8a063268f59e6ull, 0xf61aeccc1d91d685ull }}, {{ 0x9973809ade8d6fc3ull, 0x007f7469d5e79bc3ull, 0x8867145a7418aa43ull, 0x590c0036ae012016ull, 0xb13643df81998301ull, 0x9d0d3ff927b26137ull }}, {{ 0xfe83060cb1865da1ull, 0x04fa8c225b0c15a3ull, 0x5406cb8888f6a69eull, 0x7a780222cc0b40e1ull, 0xec1ea6bb0fff1e0dull, 0x22847fbb8cf7cc2cull }}, {{ 0xf11e3c7eef3fa84dull, 0x31c979578e78d867ull, 0x4843f35559a2822cull, 0xc8b0155bf87088cdull, 0x3932834e9ff72c86ull, 0x592cfd5381adf9c1ull }}, {{ 0x6b2e5cf5587c9304ull, 0xf1debd6b90b8740full, 0xd2a78155805915b9ull, 0xd6e0d597b4655804ull, 0x3bf921123fa7bd43ull, 0x7bc1e54310cbc18cull }}, {{ 0x2fcfa19574ddbe26ull, 0x72b36633a734889aull, 0x3a8b0d57037ad943ull, 0x64c857ed0bf57030ull, 0x57bb4ab67c8d64a6ull, 0xd592f49ea7f58f7aull }}, {{ 0xde1c4fd690a96d7bull, 0x7b01fe04880d5605ull, 0x496e856622cc7ca2ull, 0xefd36f42779661e2ull, 0x6d50eb20dd85ee7full, 0x57bd8e328f979ac7ull }}, {{ 0xad1b1e61a69e46caull, 0xce13ec2d50855c3aull, 0xde5135fd5bfcde58ull, 0x5e425898abdfd2d6ull, 0x45292f48a73b50ffull, 0x6d678df99bec0bcaull }}, {{ 0xc30f2fd0822ec3e1ull, 0x0cc739c525359a4aull, 0xaf2c1be597e0af78ull, 0xae9775f6b6be3c64ull, 0xb39bd8d6885129f9ull, 0x460b8bc0173875e6ull }}, {{ 0x9e97de2515d3a6c7ull, 0x7fc841b3741806ebull, 0xd7b916f7eec6dab0ull, 0xd1ea9ba3236e5beeull, 0x04167861532ba3c0ull, 0xbc737580e8349b03ull }}, {{ 0x31eead72da4483c7ull, 0xfdd2910288f04534ull, 0x6d3ae5af53c48ae4ull, 0x332a145f624f9754ull, 0x28e0b3cd3fb46588ull, 0x5c829709120e0e1eull }}, {{ 0xf352c67c86ad25caull, 0xea39aa195962b409ull, 0x444cf8d945ad6cf1ull, 0xffa4cbb9d71be94cull, 0x98c706047d0bf751ull, 0x9d19e65ab48c8d2dull }}, {{ 0x813bc0dd42c379e8ull, 0x2640a4fd7ddb0863ull, 0xab01b87cb8c64173ull, 0xfc6ff54267171cfaull, 0xf7c63c2ce277a933ull, 0x2302ff8b0d7d83c7ull }}, {{ 0x0c5588a49ba2c30full, 0x7e8671e6ea8e53e3ull, 0xae1134df37be8e7full, 0xdc5f949806e721caull, 0xadbe59c0d8ac9c07ull, 0x5e1dfb6e86e725cfull }}, {{ 0x7b57566e145b9e96ull, 0xf1407305298f46deull, 0xccac10b82d7190faull, 0x9bbbcdf0450751eaull, 0xc96f818876be184eull, 0xad2bd25145077a1cull }}, {{ 0xd169604ccb9431deull, 0x6c847e339f98c4b0ull, 0xfeb8a731c66fa9cdull, 0x15560b62b249332bull, 0xde5b0f54a36cf312ull, 0xc3b6372cb24ac51full }}, {{ 0x2e1dc2fff3c9f2aaull, 0x3d2cee043bf7aee8ull, 0xf33687f1c05ca206ull, 0xd55c71daf6dbffb7ull, 0xaf8e994e62417eb4ull, 0xa51e27bef6ebb33eull }}, {{ 0xcd299dff85e37aa1ull, 0x63c14c2a57acd511ull, 0x80214f71839e543eull, 0x559c728da497fd2full, 0xdb91fd0fd68ef310ull, 0x732d8d75a5350072ull }}, {{ 0x03a02bfb3ae2ca4dull, 0xe58cf9a76cc052b2ull, 0x014d1a6f242f4a6full, 0x581c79886defe3dbull, 0x93b3e29e61957ea3ull, 0x7fc786987412047cull }}, {{ 0x2441b7d04cdbe6fdull, 0xf781c08a3f833af4ull, 0x0d03085769d8e85eull, 0x711cbf544b5ee68eull, 0xc506da2fcfd6f261ull, 0xfdcb41f488b42cddull }}, {{ 0x6a912e23009705e3ull, 0xab1185667b204d89ull, 0x821e536a227913b5ull, 0x6b1f794af1b5018cull, 0xb24485de1e6577ceull, 0xe9f0938d5709c0a9ull }}, {{ 0x29abcd5e05e63adbull, 0xaeaf3600cf43075eull, 0x152f422558bac518ull, 0x2f3abced71120f7dull, 0xf6ad3aad2ff6ae10ull, 0x2365c385666186a0ull }}, {{ 0xa0b605ac3afe4c90ull, 0xd2d81c08189e49adull, 0xd3d89575774bb2f6ull, 0xd84b61466ab49ae2ull, 0xa2c44ac3dfa2cca1ull, 0x61f9a335ffcf4249ull }}, {{ 0x471c38ba4deefda0ull, 0x3c711850f62ee0c8ull, 0x4675d696a8f4fda4ull, 0x72f1ccc02b0e0cdcull, 0x5baaeba6bc5bfe52ull, 0xd3c0601bfe1896e0ull }}, {{ 0xc71a37470b55e842ull, 0x5c6af3299dd4c7d2ull, 0xc09a61e29991e86aull, 0x7d71ff81ae8c809aull, 0x94ad34835b97ef38ull, 0x4583c117ecf5e4c3ull }}, {{ 0xc70628c6715b128full, 0x9c2d7fa02a4fce3bull, 0x8607d2d9ffb31427ull, 0xe673fb10d17d060bull, 0xcec40d2193ef5834ull, 0xb7258aef419aefa3ull }}, {{ 0xc63d97c06d8eb99bull, 0x19c6fc41a71e0e55ull, 0x3c4e3c83fcfec98cull, 0x0087cea82ee23c73ull, 0x13a8834fc7597211ull, 0x27776d58900d5c66ull }}, {{ 0xbe67ed844793400aull, 0x01c5da90872c8f59ull, 0x5b0e5d27e1f3df79ull, 0x054e1291d4d65c80ull, 0xc495211dc97e74aaull, 0x8aaa4575a0859bfcull }}, {{ 0x700f472acbc08064ull, 0x11ba89a547bd9981ull, 0x8e8fa38ed386babaull, 0x350cb9b2505f9d03ull, 0xadd34b29def08ea4ull, 0x6aa6b698453817dfull }}, {{ 0x6098c7abf58503e5ull, 0xb1496074cd67ff0eull, 0x919c639443434b44ull, 0x127f40f723bc2223ull, 0xca40efa2b565926aull, 0x2a8321f2b430eebcull }}, {{ 0xc5f7ccb7973226f3ull, 0xecddc490060ff68full, 0xb01be3caa0a0f0aeull, 0xb8f889a765595563ull, 0xe6895c5b15f7b824ull, 0xa91f537b09e9535full }}, {{ 0xbbadff2be7f58580ull, 0x40a9ada03c9fa19dull, 0xe116e5ea464966d5ull, 0x39b56089f57d55e4ull, 0x015d9b8edbad316full, 0x9b3942ce631d41bfull }}, {{ 0x54cbf7b70f973704ull, 0x86a0c8425e3c5029ull, 0xcae4fb26bede0454ull, 0x4115c56396e55af0ull, 0x0da8139494c3ee58ull, 0x103c9c0fdf249176ull }}, {{ 0x4ff7ad269be82629ull, 0x4247d297ae5b219dull, 0xecf1cf8374ac2b4dull, 0x8ad9b5e3e4f58d67ull, 0x8890c3cdcfa74f72ull, 0xa25e189eb76dae9cull }}, {{ 0x1facc38217117d98ull, 0x96ce39eccf8f5025ull, 0x41721b228eb9b104ull, 0x6c811ae6f197860full, 0x55a7a60a1c891a79ull, 0x57acf6332a48d21dull }}, {{ 0x3cbfa314e6aee7efull, 0xe40e43401b992173ull, 0x8e750f599340ea2dull, 0x3d0b0d056feb3c98ull, 0x588c7c651d5b08beull, 0x6cc19dffa6d83525ull }}, {{ 0x5f7c5ed102d50f52ull, 0xe88ea08113fb4e80ull, 0x9092997fc08925caull, 0x626e82365f305df5ull, 0x757cdbf3258e576eull, 0x3f902bfc84721375ull }}, {{ 0xbadbb42a1c529933ull, 0x1592450ac7d11103ull, 0xa5b9fefd855b79edull, 0xd851161fb7e3ab97ull, 0x96e0977f778f6a4full, 0x7ba1b7dd2c74c296ull }}, {{ 0x4c9509a51b39fbfcull, 0xd7b6b26bce2aaa25ull, 0x7943f5e73592c342ull, 0x732add3d2ee4b3ecull, 0xe4c5eafaab9a271eull, 0xd4512ea3bc8f99e1ull }}, {{ 0xfdd260731043d7dcull, 0x6d22f8360daaa574ull, 0xbca79b0817bba09cull, 0x7faca463d4ef073cull, 0xefbb2dcab4058730ull, 0x4b2bd2655d9c02d2ull }}, {{ 0xea37c47ea2a66e97ull, 0x435db21c88aa7691ull, 0x5e8c0e50ed54461cull, 0xfcbe6be65156485full, 0x5d4fc9eb083747e4ull, 0xefb637f5a8181c3dull }}, {{ 0x262dacf25a8051e6ull, 0xa1a8f51d56a8a1b3ull, 0xb1788f29454abd1aull, 0xdf7036ff2d5ed3b9ull, 0xa51de32e5228cef1ull, 0x5d1e2f9890f11a65ull }}, {{ 0x7dc8c177890332f8ull, 0x50999325629650ffull, 0xeeb5979cb4eb630aull, 0xba6225f7c5b44540ull, 0x732adfcf35981572ull, 0xa32ddbf5a96b07f8ull }}, {{ 0xe9d78eab5a1ffdafull, 0x25ffbf75d9df29faull, 0x5317ec1f1131de67ull, 0x47d57badb90ab489ull, 0x7facbe1817f0d67bull, 0x5fca97989e2e4fb4ull }}, {{ 0x226b92b1853fe8d7ull, 0x7bfd7a9a82b7a3cdull, 0x3eef3936abf2b007ull, 0xce56d4c93a6b0d5dull, 0xfcbf6cf0ef6860d0ull, 0xbde9ebf62dcf1d0cull }}, {{ 0x5833baef347f1865ull, 0xd7e6ca091b2c6603ull, 0x75583c22b77ae04aull, 0x0f644fdc482e85a4ull, 0xdf7a41695a13c828ull, 0x6b23379dca172281ull }}, {{ 0x72054d580cf6f3f1ull, 0x6f03e45b0fbbfc21ull, 0x9572595b2accc2ecull, 0x99eb1e9ad1d1386cull, 0xbac68e1d84c5d190ull, 0x2f602c29e4e75912ull }}, {{ 0x7435057081a5876eull, 0x5626eb8e9d57d94eull, 0xd6777d8fabff9d3cull, 0x032f320c322c343dull, 0x4bc18d272fba2fa6ull, 0xd9c1b9a2f1097abbull }}, {{ 0x8a12366510774a4dull, 0x5d853392256e7d10ull, 0x60aae79cb7fc245bull, 0x1fd7f479f5ba0a6aull, 0xf58f8387dd45dc7cull, 0x8191405d6a5ecb50ull }}, {{ 0x64b61ff2a4a8e704ull, 0xa73403b57650e2a5ull, 0xc6ad0c1f2fd96b91ull, 0x3e6f8cc399446827ull, 0x979b234ea4ba9cd9ull, 0x0fac83a627b3f129ull }}, {{ 0xef1d3f7a6e990625ull, 0x880825169f28da75ull, 0xc2c27937de7e33b0ull, 0x705b7fa3fcac118dull, 0xec0f61126f4a207cull, 0x9cbd247d8d076b9full }}, {{ 0x57247ac851fa3d71ull, 0x505172e23798889bull, 0x9b98bc2eb0ee04e5ull, 0x6392fc67deb8af89ull, 0x3899cab858e544dcull, 0x1f636ce7824a343full }}, {{ 0x676ccbd333c66669ull, 0x232e7cd62bf55611ull, 0x13f759d2e94c30f5ull, 0xe3bddc0eb336db60ull, 0x3601eb3378f4b09bull, 0x39e2410b16e60a78ull }}, {{ 0x0a3ff64005c00017ull, 0x5fd0e05db7955caeull, 0xc7a9823d1cf9e993ull, 0xe56a9893002491c0ull, 0x1c133002b98ee616ull, 0x42d68a6ee4fc68b2ull }}, {{ 0x667f9e80398000e5ull, 0xbe28c3a92bd59eccull, 0xcc9f166321c31fc1ull, 0xf629f5be016db187ull, 0x18bfe01b3f94fce4ull, 0x9c616854f1dc16f5ull }}, {{ 0x00fc31023f0008f2ull, 0x6d97a49bb65833fcull, 0xfe36dfdf519f3d91ull, 0x9da3996c0e48ef4dull, 0xf77ec1107bd1e0f1ull, 0x1bce13517298e592ull }}, {{ 0x09d9ea1676005974ull, 0x47ec6e151f7207d8ull, 0xee24beb9303867aeull, 0x2863fe388ed9590bull, 0xaaf38aa4d632c970ull, 0x160cc12e79f8f7bdull }}, {{ 0x628324e09c037e8aull, 0xcf3c4cd33a744e70ull, 0x4d6f733be2340cceull, 0x93e7ee35947d7a77ull, 0xad836a705dfbde61ull, 0xdc7f8bd0c3b9ad68ull }}, {{ 0xd91f70c61822f167ull, 0x185b0040488b1063ull, 0x065a8056d6088014ull, 0xc70f4e17cce6c8a9ull, 0xc7222863abd6afcfull, 0x9cfb7627a540c616ull }}, {{ 0x7b3a67bcf15d6e0aull, 0xf38e0282d56ea3e6ull, 0x3f8903645c5500c8ull, 0xc6990cee0103d69aull, 0xc75593e4b662de1dull, 0x21d29d8c7487bce3ull }}, {{ 0xd0480d616da64c65ull, 0x838c191c56526700ull, 0x7b5a21eb9b5207d9ull, 0xc1fa814c0a266206ull, 0xc957c6ef1fdcad29ull, 0x523a277c8d4d60e5ull }}, {{ 0x22d085ce487efbf0ull, 0x2378fb1b5f380608ull, 0xd185533411344e7full, 0x93c90cf8657fd440ull, 0xdd6dc5573e9ec3a1ull, 0x36458add8505c8f9ull }}, {{ 0x5c253a0ed4f5d75eull, 0x62b9cf11b8303c51ull, 0x2f354008ac0b10f7ull, 0xc5da81b3f6fe4a88ull, 0xa649b5687233a44full, 0x1eb76ca73239d9c2ull }}, {{ 0x99744494519a69aaull, 0xdb4216b131e25b2dull, 0xd8148056b86ea9a9ull, 0xba891107a5eee951ull, 0x7ee1161476046b1dull, 0x332a3e87f642819aull }}, {{ 0xfe8aadcb300820a2ull, 0x9094e2ebf2d78fc7ull, 0x70cd03633452a0a2ull, 0x495aaa4c7b551d32ull, 0xf4cadccc9c2c2f29ull, 0xffa6714f9e991008ull }}, {{ 0xf16ac9efe0514656ull, 0xa5d0dd377c6b9dcfull, 0x680221e00b3a4659ull, 0xdd8aa6fcd15323f8ull, 0x8fec9ffe19b9d79cull, 0xfc806d1c31faa059ull }}, {{ 0x6e2be35ec32cbf5cull, 0x7a28a42adc342a1full, 0x101552c07046bf80ull, 0xa76a85e02d3f67b4ull, 0x9f3e3fed01426c20ull, 0xdd044319f3ca437full }}, {{ 0x4db6e1b39fbf7997ull, 0xc59669ac9a09a53aull, 0xa0d53b8462c37b04ull, 0x8a293ac1c47a0d08ull, 0x386e7f420c983946ull, 0xa22a9f0385e6a2fcull }}, {{ 0x0924d1043d7abfe6ull, 0xb7e020be04607447ull, 0x4854532bdba2ce2full, 0x659c4b91acc48256ull, 0x3450f8947df23cc1ull, 0x55aa36233b025ddaull }}, {{ 0x5b702a2a66cb7efcull, 0x2ec1476c2bc48ac6ull, 0xd34b3fb6945c0dddull, 0xf81af3b0bfad175eull, 0x0b29b5cceb765f8dull, 0x58a61d604e17aa86ull }}, {{ 0x9261a5a803f2f5dbull, 0xd38cca39b5ad6bbfull, 0x40f07d21cb988aa3ull, 0xb10d84e77cc2e9b4ull, 0x6fa11a01329fbb8bull, 0x767d25c30ceca93cull }}, {{ 0xb7d07890277d9a8bull, 0x437fe64118c6357bull, 0x8964e351f3f56a66ull, 0xea87310adf9d210aull, 0x5c4b040bfa3d5374ull, 0xa0e3799e813e9c5cull }}, {{ 0x2e24b5a18ae8096dull, 0xa2fefe8af7be16d5ull, 0x5df0e133879627feull, 0x2947ea6cbc234a69ull, 0x9aee2877c6654291ull, 0x48e2c0310c721b9bull }}, {{ 0xcd6f184f6d105e3full, 0x5df5f16dad6ce453ull, 0xab68cc034bdd8ff2ull, 0x9ccf283f5960e81dull, 0x0d4d94adbff499abull, 0xd8db81ea7c751414ull }}, {{ 0x0656f31a42a3ae79ull, 0xab9b6e48c640eb46ull, 0xb217f820f6a79f77ull, 0x201792797dc91128ull, 0x8507cec97f8e00b4ull, 0x78931328dc92c8c8ull }}, {{ 0x3f657f069a64d0bdull, 0xb4124ed7be8930bcull, 0xf4efb149a28c3aacull, 0x40ebb8bee9daab96ull, 0x324e13defb8c0709ull, 0xb5bebf989dbbd7d5ull }}, {{ 0x79f6f64207f02764ull, 0x08b7146d715be75aull, 0x915cece0597a4abfull, 0x89353775228ab3e5ull, 0xf70cc6b5d378465cull, 0x19737bf629566e53ull }}, {{ 0xc3a59e944f6189ecull, 0x5726cc466d970988ull, 0xada140c37ec6eb76ull, 0x5c142a93596b06f7ull, 0xa67fc31a42b2bf9dull, 0xfe82d79d9d604f47ull }}, {{ 0xa47831cb19cf633cull, 0x6783fac047e65f57ull, 0xc84c87a2f3c5329full, 0x98c9a9c17e2e45acull, 0x80fd9f069afb7c25ull, 0xf11c6c2825c318ccull }}, {{ 0x6cb1f1ef0219e05bull, 0x0b27cb82ceffb96cull, 0xd2fd4c5d85b3fa3aull, 0xf7e0a18eedceb8bfull, 0x09e836420dd2d977ull, 0x6b1c3991799ef7fdull }}, {{ 0x3ef373561502c389ull, 0x6f8df31c15fd3e3cull, 0x3de4fba73907c644ull, 0xaec64f954a13377eull, 0x63121e948a3c7eafull, 0x2f1a3faec035afe2ull }}, {{ 0x7582815cd21ba35bull, 0x5b8b7f18dbe46e5aull, 0x6af1d4883a4dbeacull, 0xd3bf1bd4e4c02aeeull, 0xdeb531cd665cf2dcull, 0xd7067cd38218ded7ull }}, {{ 0x97190da03514618bull, 0x9372f6f896ec4f88ull, 0x2d724d52470972bbull, 0x45771650ef81ad50ull, 0xb313f205ffa17ca0ull, 0x6640e04314f8b46eull }}, {{ 0xe6fa884212cbcf6eull, 0xc27da5b5e53b1b55ull, 0xc6770536c65e7b53ull, 0xb6a6df295b10c521ull, 0xfec7743bfc4ede42ull, 0xfe88c29ed1b70c52ull }}, {{ 0x05c95294bbf61a4cull, 0x98e8791af44f115bull, 0xc0a63423bfb0d145ull, 0x2284b79d8ea7b351ull, 0xf3ca8a57db14ae9bull, 0xf1579a3431267b3dull }}, {{ 0x39dd39cf579d06f7ull, 0xf914bb0d8b16ad8eull, 0x867e09657ce82cb7ull, 0x592f2c27928d0131ull, 0x85e9676e8eced20full, 0x6d6c0609eb80d06bull }}, {{ 0x42a442196c2245a3ull, 0xbacf4e876ee2c78eull, 0x40ec5df6e111bf2full, 0x7bd7b98bb9820befull, 0x3b1e0a5194143499ull, 0x46383c6333082433ull }}, {{ 0x9a6a94fe3956b861ull, 0x4c19114a54dbcb8eull, 0x893baba4cab177ddull, 0xd66d3f753f147758ull, 0x4f2c672fc8ca0dfeull, 0xbe325bdffe516a00ull }}, {{ 0x0829d1ee3d6333c8ull, 0xf8faace75095f392ull, 0x5c54b46feaeeaea4ull, 0x60447a9476cca975ull, 0x17bc07ddd7e48bf4ull, 0x6df796bfef2e2403ull }}, {{ 0x51a2334e65e005d1ull, 0xb9cac10925db83b4ull, 0x9b4f0c5f2d52d271ull, 0xc2acc9cca3fe9e95ull, 0xed584eaa6eed778bull, 0x4babe37f57cd681eull }}, {{ 0x3056010ffac03a2cull, 0x41eb8a5b7a93250bull, 0x11167bb7c53c3871ull, 0x9abfe1fe67f231d8ull, 0x457312a85546ab75ull, 0xf4b6e2f96e061135ull }}, {{ 0xe35c0a9fcb8245b8ull, 0x93336792c9bf726full, 0xaae0d52db45a346cull, 0x0b7ed3f00f75f270ull, 0xb67eba9354c2b298ull, 0x8f24ddbe4c3cac14ull }}, {{ 0xe1986a3df316b935ull, 0xc0020bbbe17a785eull, 0xacc853c90b860c3dull, 0x72f447609a9b7866ull, 0x20f349c14f9af9f0ull, 0x9770a96efa5eb8cfull }}, {{ 0xcff4266b7ee33c12ull, 0x80147556cec8b3b4ull, 0xbfd345da733c7a69ull, 0x7d8ac9c60a12b402ull, 0x4980e18d1c0dc364ull, 0xea669e55c7b33817ull }}, {{ 0x1f898032f4e058b0ull, 0x00cc956413d70510ull, 0x7e40ba88805cc81full, 0xe76be1bc64bb081bull, 0xdf08cf831889a1ecull, 0x28022f59cd0030e8ull }}, {{ 0x3b5f01fd90c376e2ull, 0x07fdd5e8c66632a1ull, 0xee874955039fd136ull, 0x0a36d15bef4e5112ull, 0xb6581b1ef5605341ull, 0x9015d9820201e918ull }}, {{ 0x51b613e7a7a2a4d6ull, 0x4fea5b17bffdfa4cull, 0x5148dd52243e2c1cull, 0x66242d97590f2abdull, 0x1f710f3595c3408aull, 0xa0da7f1414131af7ull }}, {{ 0x311cc70c8c5a7059ull, 0x1f278eed7febc6fbull, 0x2cd8a5356a6db91bull, 0xfd69c7e97a97ab65ull, 0x3a6a9817d9a08567ull, 0x4888f6c8c8bf0da7ull }}, {{ 0xeb1fc67d7b886375ull, 0x378b9546ff35c5cfull, 0xc076741628493b0full, 0xe621cf1ec9ecb1f3ull, 0x4829f0ee8045360full, 0xd559a3d7d7768888ull }}, {{ 0x2f3dc0e6d353e295ull, 0x2b73d4c5f819ba1full, 0x84a088dd92dc4e98ull, 0xfd521733e33ef385ull, 0xd1a3695102b41c9eull, 0x5580666e6aa15552ull }}, {{ 0xd86989044146d9d6ull, 0xb2864fbbb1014537ull, 0x2e4558a7bc9b11f1ull, 0xe534e806e0758337ull, 0x30621d2a1b091e35ull, 0x570400502a4d553cull }}, {{ 0x741f5a2a8cc48257ull, 0xf93f1d54ea0cb42eull, 0xceb5768d5e0eb370ull, 0xf4111044c4972027ull, 0xe3d523a50e5b2e1aull, 0x66280321a7055459ull }}, {{ 0x893985a97fad1768ull, 0xbc772551247f09d0ull, 0x1316a185ac930269ull, 0x88aaa2afade7418eull, 0xe65364728f8fcd0dull, 0xfd901f5086354b82ull }}, {{ 0x5c3f389efcc2ea11ull, 0x5ca7752b6cf66225ull, 0xbee24f38bdbe1821ull, 0x56aa5adccb088f8cull, 0xff41ec799b9e0287ull, 0xe7a139253e14f31cull }}, {{ 0x9a783635df9d24a5ull, 0x9e8a93b2419fd575ull, 0x74d71837696cf14dull, 0x62a78c9fee559b7full, 0xf8933cc0142c1949ull, 0x0c4c3b746cd17f21ull }}, {{ 0x08b21e1abc236e75ull, 0x3169c4f6903e5698ull, 0x9066f22a1e416d08ull, 0xda8b7e3f4f5812faull, 0xb5c05f80c9b8fcddull, 0x7afa528c402ef753ull }}, {{ 0x56f52d0b5962508dull, 0xee21b1a1a26f61f0ull, 0xa40575a52e8e4251ull, 0x8972ee791970bdc9ull, 0x1983bb07e139e0aaull, 0xcdc7397a81d5a945ull }}, {{ 0x6593c2717dd72586ull, 0x4d50f0505859d363ull, 0x68369873d18e9733ull, 0x5e7d50bafe6769e0ull, 0xff254e4ecc42c6a9ull, 0x09c83ec912589cb2ull }}, {{ 0xf7c5986eea677739ull, 0x05296323738241e1ull, 0x1221f4862f91e801ull, 0xb0e5274df00a22c4ull, 0xf7750f13fa9bc29dull, 0x61d273dab7761efdull }}, {{ 0xadb7f455280aa836ull, 0x339ddf62831692d3ull, 0xb5538d3ddbb3100aull, 0xe8f3890b60655ba8ull, 0xaa9296c7ca159a28ull, 0xd238868b2a9d35ebull }}, {{ 0xc92f8b53906a921cull, 0x042ab9d91ee1bc44ull, 0x1543846a94fea066ull, 0x19835a71c3f59497ull, 0xa9b9e3cde4d80599ull, 0x3635416faa241b34ull }}, {{ 0xdbdb7143a429b51cull, 0x29ab427b34d15aafull, 0xd4a32c29d1f243fcull, 0xff218871a797cde6ull, 0xa142e60af07037faull, 0x1e148e5ca569100eull }}, {{ 0x96926ca469a1131bull, 0xa0b098d0102d8adeull, 0x4e5fb9a23376a7d9ull, 0xf74f54708bee0b04ull, 0x4c9cfc6d64622fcdull, 0x2ccd8f9e761aa092ull }}, {{ 0xe1b83e6c204abf12ull, 0x46e5f820a1c76cb1ull, 0x0fbd405602a28e80ull, 0xa9194c65774c6e2bull, 0xfe21dc45ebd5de0bull, 0xc0079c309d0a45b6ull }}, {{ 0xd132703942eb76b2ull, 0xc4fbb14651ca3ef2ull, 0x9d64835c1a599102ull, 0x9afcfbf6a8fc4daeull, 0xed529abb365aac74ull, 0x804c19e62266b925ull }}, {{ 0x2bf8623c9d32a2f5ull, 0xb1d4ecbf31e6757cull, 0x25ed2199077faa1bull, 0x0de1d7a299db08d2ull, 0x453a0b501f8abc8eull, 0x02f902fd58033b7bull }}, {{ 0xb7b3d65e23fa5d96ull, 0xf2513f77f30096d9ull, 0x7b434ffa4afca514ull, 0x8ad26c5a028e5835ull, 0xb44471213b6b5d8cull, 0x1dba1de5702052d0ull }}, {{ 0x2d065fad67c7a7deull, 0x772c7aaf7e05e481ull, 0xd0a11fc6edde72d1ull, 0x6c383b84198f7216ull, 0x0aac6b4c5231a77dull, 0x29452af661433c27ull }}, {{ 0xc23fbcc60dcc8eb0ull, 0xa7bccadaec3aed0bull, 0x264b3dc54ab07c2eull, 0x3a325328ff9a74e4ull, 0x6abc30fb35f08ae6ull, 0x9cb3ad9fcca05986ull }}, {{ 0x967d5fbc89fd92e2ull, 0x8d5fec8d3a4d4275ull, 0x7ef069b4eae4d9d2ull, 0x45f73f99fc0890e9ull, 0x2b59e9d01b656cfeull, 0x1f04c83dfe437f40ull }}, {{ 0xe0e5bd5d63e7bcd0ull, 0x85bf3d8447049897ull, 0xf56421112cf08239ull, 0xbba87c03d855a91eull, 0xb183222111f641eeull, 0x362fd26beea2f881ull }}, {{ 0xc8f965a5e70d6020ull, 0x3978672ac62df5eeull, 0x95e94aabc165163full, 0x5494d82673589b35ull, 0xef1f554ab39e9353ull, 0x1dde3837525db510ull }}, {{ 0xd9bdf87b0685c145ull, 0x3eb407abbdcb9b53ull, 0xdb1ceab58df2de78ull, 0x4dd0718081761017ull, 0x573954eb0431c141ull, 0x2aae322937a912a9ull }}, {{ 0x816bb4ce41398cb0ull, 0x73084cb569f41146ull, 0x8f212b178b7cb0b2ull, 0x0a246f050e9ca0eeull, 0x683d512e29f18c8dull, 0xaacdf59c2c9aba9dull }}, {{ 0x0e35100e8c3f7ee3ull, 0x7e52ff162388acc1ull, 0x974baeeb72dee6f8ull, 0x656c5632921e4951ull, 0x12652bcda36f7d82ull, 0xac0b9819be0b4a26ull }}, {{ 0x8e12a0917a7af4e0ull, 0xef3df6dd6356bf8aull, 0xe8f4d5327cb505b4ull, 0xf63b5df9b52edd2full, 0xb7f3b608625ae717ull, 0xb873f1016c70e57cull }}, {{ 0x8cba45aec8cd90c1ull, 0x586ba4a5e1637b69ull, 0x199053f8df123911ull, 0x9e51abc113d4a3dfull, 0x2f851c53d78d06efull, 0x34876a0e3c68f6dfull }}, {{ 0x7f46b8d3d807a785ull, 0x74346e7acde2d21full, 0xffa347b8b6b63aadull, 0x2f30b58ac64e66b6ull, 0xdb331b466b82455cull, 0x0d4a248e5c19a4b7ull }}, {{ 0xf8c33846704c8b33ull, 0x8a0c50cc0adc353aull, 0xfc60cd37231e4ac6ull, 0xd7e7176bbf100325ull, 0x8fff10c03316b599ull, 0x84e56d8f99006f2eull }}, {{ 0xb7a032c062fd6ff9ull, 0x647b27f86c9a144dull, 0xdbc804275f2eebc1ull, 0x6f06ea3576a01f7bull, 0x9ff6a781fee31802ull, 0x30f6479bfa0457d1ull }}, {{ 0x2c41fb83dde65fbdull, 0xeccf8fb43e04cb09ull, 0x95d02989b7d5358dull, 0x56452616a2413ad6ull, 0x3fa28b13f4def018ull, 0xe99ecc17c42b6e30ull }}, {{ 0xba93d326aaffbd64ull, 0x401b9d0a6c2fee5bull, 0xda219f612e54178bull, 0x5eb37ce2568c4c61ull, 0x7c596ec790b560f3ull, 0x2033f8eda9b24de2ull }}, {{ 0x49c63f82adfd65e9ull, 0x8114226839df4f95ull, 0x855039cbcf48eb70ull, 0xb302e0d7617afbd2ull, 0xdb7e53cba715c981ull, 0x4207b948a0f70ad8ull }}, {{ 0xe1be7b1acbe5fb1eull, 0x0ac9581242b91bd4ull, 0x352241f618d93265ull, 0xfe1cc869cecdd639ull, 0x92ef45f486d9df10ull, 0x944d3cd649a66c78ull }}, {{ 0xd170cf0bf6fbcf2full, 0x6bdd70b69b3b1650ull, 0x1356939cf87bf7f2ull, 0xed1fd422140a5e3cull, 0xbd58bb8d4482b6a9ull, 0xcb04605ee0803cb5ull }}, {{ 0x2e681677a5d617d7ull, 0x36a66722104edf28ull, 0xc161c421b4d7af78ull, 0x433e4954c867ae58ull, 0x65775384ad1b22a3ull, 0xee2bc3b4c5025f19ull }}, {{ 0xd010e0ac7a5cee6aull, 0x22800754a314b791ull, 0x8dd1a951106cdab2ull, 0xa06edd4fd40ccf77ull, 0xf6a9432ec30f5a60ull, 0x4db5a50fb217b6fdull }}, {{ 0x20a8c6bcc7a15020ull, 0x5900494e5ecf2bb2ull, 0x8a309d2aa4408af5ull, 0x4454a51e48801aabull, 0xa29c9fd39e9987c6ull, 0x0918729cf4ed25ebull }}, {{ 0x4697c35fcc4d2141ull, 0x7a02dd0fb417b4f5ull, 0x65e623aa6a856d95ull, 0xab4e732ed5010ab3ull, 0x5a1e3e4431ff4dbeull, 0x5af47a2191437b34ull }}, {{ 0xc1eda1bdfb034c8bull, 0xc41ca29d08ed1194ull, 0xfafd64a8293647d6ull, 0xb1107fd4520a6b01ull, 0x852e6ea9f3f90972ull, 0x8d8cc54faca2d00bull }}, {{ 0x9348516bce20fd6cull, 0xa91e5a225942afcfull, 0xcde5ee919c1ece63ull, 0xeaa4fe4b34682e13ull, 0x33d052a387ba5e7aull, 0x877fb51cbe5c2073ull }}, {{ 0xc0d32e360d49e63aull, 0x9b2f85577c9ade1bull, 0x0afb51b019340fe4ull, 0x2a71eef00c11ccc6ull, 0x06233a634d47b0cdull, 0x4afd131f6f994480ull }}, {{ 0x883fce1c84e2fe41ull, 0x0fdb356ade0cad15ull, 0x6dd130e0fc089eeeull, 0xa873556078b1ffbcull, 0x3d6047e104cce803ull, 0xede2bf3a5bfcad00ull }}, {{ 0x527e0d1d30ddee8aull, 0x9e90162cac7ec2d7ull, 0x4a2be8c9d856354cull, 0x948155c4b6f3fd5cull, 0x65c2ceca30011024ull, 0x4adb784797dec202ull }}, {{ 0x38ec8323e8ab5160ull, 0x31a0ddbebcf39c69ull, 0xe5b717e2735e14feull, 0xcd0d59af2587e59aull, 0xf99c13e5e00aa16dull, 0xec92b2cbeeb39417ull }}, {{ 0x393d1f6716b12dbcull, 0xf048a97361841c1cull, 0xf926eed881acd1edull, 0x028580d7774ef80cull, 0xc018c6fac06a4e4aull, 0x3dbafbf75303c8efull }}, {{ 0x3c633a06e2ebc957ull, 0x62d69e81cf29191aull, 0xbb85547510c0334bull, 0x1937086aa915b081ull, 0x80f7c5cb84270ee4ull, 0x694dd7a93e25d95dull }}, {{ 0x5be04444dd35dd63ull, 0xdc623112179afb06ull, 0x53354c92a78200f1ull, 0xfc26542a9ad8e511ull, 0x09adb9f3298694e8ull, 0x1d0a6c9c6d7a7da7ull }}, {{ 0x96c2aab0a41aa5ddull, 0x9bd5eab4ec0dce3full, 0x4014fdba8b140972ull, 0xd97f49aa0c78f2adull, 0x60c9437f9f41d119ull, 0x22683e1c46c8e886ull }}, {{ 0xe39aaae6690a7aa3ull, 0x165b2b11388a0e7bull, 0x80d1e9496ec85e7aull, 0x7ef8e0a47cb97ac4ull, 0xc7dca2fc38922b02ull, 0x58126d1ac3d9153full }}, {{ 0xe40aad001a68ca60ull, 0xdf8faeac356490d6ull, 0x08331cde53d3b0c4ull, 0xf5b8c66cdf3ecbadull, 0xce9e5dda35b5ae18ull, 0x70b8430ba67ad47dull }}, {{ 0xe86ac2010817e7c5ull, 0xbb9cd2ba15eda864ull, 0x51ff20af4644e7b0ull, 0x9937c040b873f4c2ull, 0x122faa861918ccf9ull, 0x67329e7480cc4ceaull }}, {{ 0x142b940a50ef0dafull, 0x54203b44db4893f1ull, 0x33f746d8beb10ce7ull, 0xfc2d828734878f97ull, 0xb5dca93cfaf801bfull, 0x07fa308d07fb0124ull }}, {{ 0xc9b3c867295688d8ull, 0x494250b090d5c76aull, 0x07a8c47772ea8109ull, 0xd9c719480d4b9be8ull, 0x1a9e9c61cdb0117full, 0x4fc5e5824fce0b6full }}, {{ 0xe105d4079d61586dull, 0xdc9726e5a859ca2bull, 0x4c97acaa7d290a5cull, 0x81c6fcd084f41710ull, 0x0a321bd208e0aefeull, 0x1dbaf7171e0c7257ull }}, {{ 0xca3a484c25cd7441ull, 0x9de784f89381e5b6ull, 0xfdecbea8e39a67a0ull, 0x11c5e0253188e6a2ull, 0x65f5163458c6d5f1ull, 0x294da6e72c7c7766ull }}, {{ 0xe646d2f97a068a87ull, 0x2b0b31b5c312f923ull, 0xeb3f7298e4080c46ull, 0xb1bac173ef59025dull, 0xfb92de0b77c45b6aull, 0x9d088507bcdca9ffull }}, {{ 0xfec43dbec441694aull, 0xae6ff1199ebdbb66ull, 0x307a79f8e8507abdull, 0xf14b8e87597a17abull, 0xd3bcac72adab922aull, 0x2255324d609ea3ffull }}, {{ 0xf3aa6973aa8e1cdfull, 0xd05f6b0033695205ull, 0xe4c8c3b91324cb68ull, 0x6cf391497ec4ecafull, 0x455ebc7ac8b3b5adull, 0x5753f705c63267feull }}, {{ 0x84a81e84a98d20b9ull, 0x23ba2e02021d343bull, 0xefd7a53abf6ff218ull, 0x4183acdef3b13edeull, 0xb5b35ccbd70518c6ull, 0x6947a639bdf80feeull }}, {{ 0x2e91312e9f83473bull, 0x6545cc1415240a53ull, 0x5e6c744b7a5f74f1ull, 0x8f24c0b584ec74b5ull, 0x19019ff66632f7beull, 0x1ccc7e416bb09f53ull }}, {{ 0xd1abebd23b20c851ull, 0xf4b9f8c8d368673full, 0xb03c8af2c7ba916dull, 0x976f8717313c8f15ull, 0xfa103f9ffdfdad71ull, 0x1ffcee8e34e6393eull }}, {{ 0x30b736364f47d32bull, 0x8f43b7d84214087eull, 0xe25d6d7bcd49ae4bull, 0xea5b46e7ec5d96d8ull, 0xc4a27c3febe8c66full, 0x3fe1518e10fe3c75ull }}, {{ 0xe7281e1f18ce3faeull, 0x98a52e7294c854edull, 0xd7a646d604e0cef3ull, 0x2790c50f3ba7e478ull, 0xae58da7f3717c05full, 0x7ecd2f8ca9ee5c99ull }}, {{ 0x07912d36f80e7cceull, 0xf673d079cfd3514bull, 0x6c7ec45c30c81583ull, 0x8ba7b298548eecb8ull, 0xcf7888f826ed83b7ull, 0xf403db7ea34f9e00ull }}, {{ 0x4babc425b090e00dull, 0xa08624c21e412ceeull, 0x3cf3ab99e7d0d727ull, 0x748cf9f34d953f34ull, 0x1ab559b18547252bull, 0x882692f2611c2c08ull }}, {{ 0xf4b5a978e5a8c07dull, 0x453d6f952e8bc14eull, 0x6184b4030e28678cull, 0x8d81c38107d4780aull, 0x0b1580ef34c773b2ull, 0x5181bd77cb19b851ull }}, {{ 0x8f189eb8f89784e4ull, 0xb4665bd3d1758d15ull, 0xcf2f081e8d940b7aull, 0x8711a30a4e4cb067ull, 0x6ed709580fca84f9ull, 0x2f1166adef01332aull }}, {{ 0x96f63339b5eb30e9ull, 0x0bff96462e9782d7ull, 0x17d6513187c872cbull, 0x46b05e670efee40eull, 0x54665d709de931bfull, 0xd6ae02cb560bffa8ull }}, {{ 0xe59e00411b2fe91aull, 0x77fbdebdd1eb1c6bull, 0xee5f2bef4dd47beeull, 0xc2e3b00695f4e88cull, 0x4bffa6662b1bf178ull, 0x62cc1bf15c77fc93ull }}, {{ 0xf82c028b0fdf1b07ull, 0xafd6b36a332f1c36ull, 0x4fb7b7590a4cd750ull, 0x9ce4e041db911581ull, 0xf7fc7ffdaf176eb7ull, 0xdbf9176d9cafddc0ull }}, {{ 0xb1b8196e9eb70e45ull, 0xde630225ffd71a25ull, 0x1d2d297a67006926ull, 0x20f0c29293aad70dull, 0xafdcffe8d6ea532cull, 0x97baea481edea989ull }}, {{ 0xf130fe5233268eb7ull, 0xafde157bfe670578ull, 0x23c39ec806041b84ull, 0x496799b9c4ac6683ull, 0xdea1ff1865273fb9ull, 0xed4d26d134b29f60ull }}, {{ 0x6be9ef35ff819324ull, 0xdeacd6d7f00636b9ull, 0x65a433d03c29132eull, 0xde0c0141aebc011full, 0xb253f6f3f3887d3cull, 0x4503842c0efa39c8ull }}, {{ 0x3723581bfb0fbf6aull, 0xb2c0646f603e233eull, 0xf86a0622599abfd4ull, 0xac780c90d3580b39ull, 0xf747a5878354e460ull, 0xb22329b895c641d6ull }}, {{ 0x27617117ce9d7a21ull, 0xfb83ec59c26d606eull, 0xb4243d57800b7e4eull, 0xbcb07da841707043ull, 0xa8cc774b2150ebc6ull, 0xf55fa135d9be9265ull }}, {{ 0x89ce6aee1226c549ull, 0xd3273b819845c44dull, 0x096a656b0072ef15ull, 0x5ee4e8928e6462a5ull, 0x97fca8ef4d2935c3ull, 0x95bc4c1a8171b7f8ull }}, {{ 0x62102d4cb583b4daull, 0x3f88530ff2b9ab07ull, 0x5e27f62e047d56daull, 0xb4f115b98febda72ull, 0xefde9959039c19a1ull, 0xd95af9090e712fb5ull }}, {{ 0xd4a1c4ff17251083ull, 0x7b533e9f7b40ae49ull, 0xad8f9dcc2ce56486ull, 0x116ad93f9f368877ull, 0x5eb1fd7a24190051ull, 0x7d8dba5a906bdd1bull }}, {{ 0x4e51b1f6e772a521ull, 0xd140723ad086cee2ull, 0xc79c29f9c0f5ed40ull, 0xae2c7c7c382154acull, 0xb2f3e6c568fa032aull, 0xe7894789a436a311ull }}, {{ 0x0f30f3a50a7a734dull, 0x2c84764c254414d7ull, 0xcc19a3c1899b4488ull, 0xcdbcdcda314d4ebfull, 0xfd8703b619c41faaull, 0x0b5ccb606a225eb0ull }}, {{ 0x97e9847268c88104ull, 0xbd2c9ef974a8d066ull, 0xf900658f6010ad51ull, 0x0960a085ed05137dull, 0xe746251d01a93cacull, 0x719ff1c42557b2e9ull }}, {{ 0xef1f2c7817d50a25ull, 0x63be35be8e982401ull, 0xba03f799c0a6c531ull, 0x5dc6453b4232c2ebull, 0x08bd7322109c5eb8ull, 0x703f71a9756cfd23ull }}, {{ 0x5737bcb0ee526574ull, 0xe56e197191f16813ull, 0x4427ac018683b3edull, 0xa9beb45095fb9d35ull, 0x57667f54a61bb333ull, 0x627a709e9641e35eull }}, {{ 0x682d5ee94f37f689ull, 0xf64cfe6fb36e10c1ull, 0xa98cb80f4125074aull, 0xa1730b25dbd42414ull, 0x6a00f94e7d150004ull, 0xd8c86631de92e1afull }}, {{ 0x11c5b51d182fa15bull, 0x9f01f05d024ca78eull, 0x9f7f30988b7248edull, 0x4e7e6f7a964968ceull, 0x2409bd10e2d2002eull, 0x77d3fdf2b1bcd0daull }}, {{ 0xb1b91322f1dc4d8aull, 0x361363a216fe8b8cull, 0x3af7e5f57276d948ull, 0x10f05ac9dede1812ull, 0x686162a8dc3401cfull, 0xae47eb7af1602885ull }}, {{ 0xf13abf5d729b0761ull, 0x1cc1e454e5f1737eull, 0x4daefb9678a47cd2ull, 0xa9638be2b4acf0b6ull, 0x13cdda989a081216ull, 0xcecf32cd6dc19536ull }}, {{ 0x6c4b79a67a0e49c7ull, 0x1f92eb50fb6e82f5ull, 0x08d5d3e0b66ce035ull, 0x9de376db0ec1671full, 0xc60a89f60450b4e2ull, 0x1417fc06498fd41cull }}, {{ 0x3af2c080c48ee1c9ull, 0x3bbd3129d2511d96ull, 0x585a46c72040c213ull, 0x2ae2a48e938e0736ull, 0xbc69639c2b2710daull, 0xc8efd83edf9e491full }}, {{ 0x4d7b8507ad94d1deull, 0x5563eba2372b27deull, 0x7386c3c7428794c0ull, 0xacda6d91c38c481full, 0x5c1de419af86a885ull, 0xd95e7274bc2edb3dull }}, {{ 0x06d3324cc7d032aeull, 0x55e7345627af8eafull, 0x8343a5c8994bcf83ull, 0xc08847b1a37ad13aull, 0x992ae900db429538ull, 0x7db0788f59d49065ull }}, {{ 0x443ff6ffce21fac8ull, 0x5b080b5d8cdb92d6ull, 0x20a479d5fcf61b21ull, 0x8552ccf062cc2c49ull, 0xfbad1a089099d437ull, 0xe8e4b599824da3f7ull }}, {{ 0xaa7fa5fe0d53cbd1ull, 0x8e5071a78093bc5eull, 0x466cc25be19d0f4dull, 0x353c0163dbf9badbull, 0xd4c30455a6024a2bull, 0x18ef17ff170867afull }}, {{ 0xa8fc7bec8545f62full, 0x8f24708b05c55bb2ull, 0xc03f9796d0229907ull, 0x14580de697c14c90ull, 0x4f9e2b587c16e5b0ull, 0xf956eff6e6540cdeull }}, {{ 0x99dcd73d34bb9dd4ull, 0x976c656e39b594faull, 0x827bebe42159fa4bull, 0xcb708b01ed8cfda7ull, 0x1c2db174d8e4f8e0ull, 0xbd655fa4ff4880afull }}, {{ 0x02a068640f542a4cull, 0xea3bf64e4117d1caull, 0x18d736e94d83c6f3ull, 0xf2656e134781e88bull, 0x19c8ee9078f1b8c7ull, 0x65f5bc71f8d506d7ull }}, {{ 0x1a4413e89949a6fcull, 0x26579f0e8aee31e4ull, 0xf868251d0725c587ull, 0x77f64cc0cb13156eull, 0x01d951a4b97137cfull, 0xfb995c73b8524467ull }}, {{ 0x06a8c715fce085d7ull, 0x7f6c36916d4df2e9ull, 0xb41173224779b747ull, 0xaf9eff87eebed655ull, 0x127d306f3e6c2e1aull, 0xd3fd9c853336ac06ull }}, {{ 0x4297c6dbe0c53a6bull, 0xfa3a21ae450b7d1aull, 0x08ae7f56cac128caull, 0xdc35fb4f53745f59ull, 0xb8e3e4587039cd0aull, 0x47e81d340022b83cull }}, {{ 0x99edc496c7b44829ull, 0xc64550ceb272e306ull, 0x56d0f963eb8b97edull, 0x9a1bd119428bb97aull, 0x38e6eb746242026cull, 0xcf112408015b325full }}, {{ 0x0349ade3cd0ad19aull, 0xbeb52812f87cde42ull, 0x6429bde73373ef49ull, 0x05162afc99753ec7ull, 0x3905328bd694183eull, 0x16ab68500d8ff7b8ull }}, {{ 0x20e0cae6026c3008ull, 0x731390bdb4e0ae94ull, 0xe9a16b08028758e1ull, 0x32ddadddfe9473c9ull, 0x3a33f97661c8f26cull, 0xe2b21320879fad32ull }}, {{ 0x48c7ecfc1839e04cull, 0x7ec3a76910c6d1c9ull, 0x204e2e50194978ceull, 0xfca8caabf1cc85e3ull, 0x4607be9fd1d97839ull, 0xdaf4bf454c3cc3f6ull }}, {{ 0xd7cf41d8f242c2f8ull, 0xf3a48a1aa7c431dcull, 0x430dcf20fcdeb810ull, 0xde97eab771fd3adfull, 0xbc4d723e327eb243ull, 0x8d8f78b4fa5fa79eull }}, {{ 0x6e189279769b9dafull, 0x846d650a8da9f2a0ull, 0x9e8a1749e0b330a9ull, 0xb1ef2b2a73e44cb8ull, 0x5b06766df8f2f6a6ull, 0x879ab711c7bc8c33ull }}, {{ 0x4cf5b8bea21428d5ull, 0x2c45f26988a37a44ull, 0x3164e8e2c6ffe69full, 0xf357afa886eaff36ull, 0x8e40a04bb97da282ull, 0x4c0b26b1cd5d7a01ull }}, {{ 0x0199377254c9984dull, 0xbabb781f5662c6abull, 0xedf118dbc5ff0237ull, 0x816cdc95452df81dull, 0x8e8642f53ee8591dull, 0xf86f82f205a6c40full }}, {{ 0x0ffc2a774fdff304ull, 0x4b52b1395fdbc2aeull, 0x4b6af895bbf6162dull, 0x0e409dd4b3cbb12bull, 0x913e9d9475137b27ull, 0xb45b1d743883a89bull }}, {{ 0x9fd9a8a91ebf7e28ull, 0xf13aec3dbe959accull, 0xf22db5d9579cddc4ull, 0x8e862a4f05f4ebb0ull, 0xac7227cc92c2cf86ull, 0x0b8f268a35249613ull }}, {{ 0x3e80969b337aed8dull, 0x6c4d3a6971d80bfeull, 0x75c91a7d6c20a9b1ull, 0x913da7163b9134e9ull, 0xbc758dfdbb9c1b41ull, 0x73978166136ddcc4ull }}, {{ 0x7105e21002cd4783ull, 0x3b04481e727077eeull, 0x99db08e63946a0eeull, 0xac6886de53ac111eull, 0x5c978be95419108full, 0x83eb0dfcc24a9fafull }}, {{ 0x6a3ad4a01c04cb1aull, 0x4e2ad1307864af50ull, 0x028e58fe3cc2494eull, 0xbc1544af44b8ab32ull, 0x9deb771d48faa59cull, 0x272e8bdf96ea3cd9ull }}, {{ 0x264c4e41182fef08ull, 0x0dac2be4b3eed924ull, 0x198f79ee5f96dd0full, 0x58d4aed8af36aff4ull, 0x2b32a724d9ca781full, 0x87d176bbe5266080ull }}, {{ 0x7efb0e8af1df564cull, 0x88b9b6ef07547b69ull, 0xff9ac34fbbe4a296ull, 0x784ed476d822df88ull, 0xaffa877081e8b139ull, 0x4e2ea356f37fc501ull }}, {{ 0xf5ce916d72b95efaull, 0x57412556494cd21eull, 0xfc0ba11d56ee59e1ull, 0xb3144ca4715cbb59ull, 0xdfc94a651316ec3eull, 0x0dd2616582fdb210ull }}, {{ 0x9a11ae467b3db5c0ull, 0x688b755edd003535ull, 0xd8744b25654f82cdull, 0xfecafe6c6d9f5183ull, 0xbddce7f2bee53a72ull, 0x8a37cdf71de8f4a8ull }}, {{ 0x04b0cec0d0691984ull, 0x157295b4a2021418ull, 0x748aef75f51b1c06ull, 0xf3edf03c48392f26ull, 0x6aa10f7b74f4487dull, 0x662e0ba72b198e97ull }}, {{ 0x2ee81388241aff24ull, 0xd679d90e5414c8f0ull, 0x8d6d5a9b930f183cull, 0x874b625ad23bd780ull, 0x2a4a9ad2918ad4ebull, 0xfdcc7487aeff91eaull }}, {{ 0xd510c351690df76bull, 0x60c27a8f48cfd961ull, 0x86458a13be96f260ull, 0x48f1d78c36566b05ull, 0xa6ea0c39af6c5133ull, 0xe9fc8d4cd5fbb325ull }}, {{ 0x52a7a12e1a8baa29ull, 0xc798c998d81e7dd2ull, 0x3eb764c571e577c3ull, 0xd9726b7a1f602e37ull, 0x85247a40da3b2c00ull, 0x23dd85005bd4ff78ull }}, {{ 0x3a8c4bcd0974a59bull, 0xcbf7dff87130ea37ull, 0x7329efb672f6ada5ull, 0x7e7832c539c1ce28ull, 0x336cc688864fb808ull, 0x66a732039651fab5ull }}, {{ 0x497af6025e8e780bull, 0xf7aebfb46be92628ull, 0x7fa35d207da2c879ull, 0xf0b1fbb441920d94ull, 0x023fc1553f1d3054ull, 0x0287f423df33cb14ull }}, {{ 0xdecd9c17b190b06eull, 0xacd37d0c371b7d92ull, 0xfc61a344e85bd4c3ull, 0x66f3d50a8fb487ccull, 0x167d8d547723e351ull, 0x194f8966b805eec8ull }}, {{ 0xb40818ecefa6e447ull, 0xc042e27a2712e7bcull, 0xdbd060b113964fa4ull, 0x058652699d0d4e01ull, 0xe0e7854ca766e12eull, 0xfd1b5e03303b53d0ull }}, {{ 0x0850f9415c84eac9ull, 0x829cd8c586bd0d5full, 0x9623c6eac3df1c6full, 0x373f382022850c12ull, 0xc90b34fe8a04cbccull, 0xe311ac1fe2514628ull }}, {{ 0x5329bc8d9d312bddull, 0x1a2077b7436285b6ull, 0xdd65c52ba6b71c5bull, 0x28783141593278b9ull, 0xda7011f1642ff5faull, 0xdeb0b93ed72cbd97ull }}, {{ 0x3fa15d8823ebb6a0ull, 0x0544ad28a1d9391full, 0xa5f9b3b483271b8full, 0x94b1ec8d7bf8b742ull, 0x8860b36de9df9bc5ull, 0xb2e73c7467bf67eeull }}, {{ 0x7c4da7516735223dull, 0x34aec396527c3b38ull, 0x7bc1050d1f871396ull, 0xcef33d86d7b7289aull, 0x53c7024b22bc15b7ull, 0xfd085c8c0d7a0f51ull }}, {{ 0xdb08892e0813565dull, 0x0ed3a3df38da5034ull, 0xd58a32833b46c3deull, 0x158067446d279608ull, 0x45c616ef5b58d92eull, 0xe2539d7886c4992dull }}, {{ 0x8e555bcc50c15fa4ull, 0x944466b838872210ull, 0x5765f92050c3a6acull, 0xd70408ac438bdc58ull, 0xb9bce55991787bccull, 0xd74426b543adfbc4ull }}, {{ 0x8f5595fb278dbc6aull, 0xcaac0332354754a5ull, 0x69fbbb4327a482bdull, 0x662856baa3769b73ull, 0x4160f57faeb4d600ull, 0x68a98314a4cbd5afull }}, {{ 0x9957dbcf8b895c28ull, 0xeab81ff614c94e77ull, 0x23d5509f8c6d1b69ull, 0xfd93634a62a21282ull, 0x8dc996fcd3105c03ull, 0x169f1ece6ff658d8ull }}, {{ 0xfd6e961b735d9995ull, 0x2b313f9ccfdd10abull, 0x6655263b7c431223ull, 0xe7c1e0e7da54b915ull, 0x89dfe5e03ea39827ull, 0xe23734105f9f7875ull }}, {{ 0xe651dd1281a7ffcfull, 0xafec7c201ea2a6b7ull, 0xff537e52da9eb55full, 0x0d92c90e874f3ad5ull, 0x62befac27263f18full, 0xd62808a3bc3ab497ull }}, {{ 0xff32a2b9108ffe17ull, 0xdf3cd941325a832eull, 0xf942ef3c8a3315bcull, 0x87bbda9149184c5bull, 0xdb75cb9877e76f96ull, 0x5d9056655a4b0de9ull }}, {{ 0xf7fa5b3aa59fece5ull, 0xb8607c8bf7891fd5ull, 0xbc9d585d65fed960ull, 0x4d5689acdaf2fb97ull, 0x9299f3f4af0a5be1ull, 0xa7a35ff586ee8b22ull }}, {{ 0xafc7904a783f40f5ull, 0x33c4dd77ab5b3e5bull, 0x5e2573a5fbf47dc7ull, 0x056160c08d7dd3edull, 0xba03878ed66796cdull, 0x8c61bf9745516f59ull }}, {{ 0xddcba2e8b278898dull, 0x05b0a6acb1906f94ull, 0xad76847bd78ce9c8ull, 0x35cdc78586ea4745ull, 0x44234b94600be402ull, 0x7bd17be8b52e5981ull }}, {{ 0xa9f45d16f8b55f85ull, 0x38e682beefa45bd0ull, 0xc6a12cd66b8121d0ull, 0x1a09cb374526c8b8ull, 0xa960f3cbc076e816ull, 0xd62ed71713cf7f0cull }}, {{ 0xa38ba2e5b715bb37ull, 0x39011b755c6b9626ull, 0xc24bc060330b5222ull, 0x0461f028b383d737ull, 0x9dc985f584a510ddull, 0x5dd466e6c61af67eull }}, {{ 0x63745cf926d95024ull, 0x3a0b12959c33dd82ull, 0x96f583c1fe713556ull, 0x2bd361970326682dull, 0x29df3b972e72a8a2ull, 0xaa4c0503bd0da0f2ull }}, {{ 0xe28ba1bb847d216cull, 0x446eb9d81a06a717ull, 0xe5972593f06c155eull, 0xb641cfe61f8011c7ull, 0xa2b853e7d07a9655ull, 0xa6f8322562884975ull }}, {{ 0xd97451532ce34e35ull, 0xac534271044286eeull, 0xf7e777c76438d5aeull, 0x1e921efd3b00b1ceull, 0x5b33470e24c9df59ull, 0x85b1f575d952de98ull }}, {{ 0x7e8b2d3fc0e10e14ull, 0xbb40986a2a994554ull, 0xaf0aadc9ea3858d2ull, 0x31b535e44e06f215ull, 0x9000c68d6fe2b97bull, 0x38f3969a7d3cb1f3ull }}, {{ 0xf16fc47d88ca8ccaull, 0x5085f425a9fcb54cull, 0xd66ac9e32633783bull, 0xf1141aeb0c4574d8ull, 0xa007c1865edb3ecfull, 0x3983e208e45ef383ull }}, {{ 0x6e5dace757e97fe6ull, 0x253b8978a3df1501ull, 0x602be2df7e02b251ull, 0x6ac90d2e7ab69078ull, 0x404d8f3fb490741full, 0x3f26d458ebb58324ull }}, {{ 0x4fa8c1096f1efefcull, 0x74535eb666b6d20eull, 0xc1b6dcbaec1af72bull, 0x2bda83d0cb21a4b3ull, 0x8307987d0da4893aull, 0x77844b7935171f6aull }}, {{ 0x1c978a5e5735f5d9ull, 0x8b41b3200324348full, 0x91249f4d390da7b2ull, 0xb6892627ef506f05ull, 0x1e4bf4e2886d5c45ull, 0xab2af2bc12e73a29ull }}, {{ 0x1deb67af681b9a7aull, 0x7090ff401f6a0d97ull, 0xab6e39043a888cf9ull, 0x215b7d8f59245637ull, 0x2ef790d954459ab9ull, 0xafad7b58bd08459bull }}, {{ 0x2b320cda111408c2ull, 0x65a9f8813a2487e7ull, 0xb24e3a2a495581beull, 0x4d92e7997b6b5e2cull, 0xd5aba87d4ab80b3bull, 0xdcc6d1776252b80full }}, {{ 0xaff48084aac85796ull, 0xf8a3b50c456d4f07ull, 0xf70e45a6dd57116full, 0x07bd0bfed231adbeull, 0x58b494e4eb307051ull, 0x9fc42ea9d73b309eull }}, {{ 0xdf8d052eabd36bdaull, 0xb665127ab645164cull, 0xa68eb884a566ae5full, 0x4d6277f435f0c975ull, 0x770dd0f12fe4632aull, 0x3da9d2a2684fe62full }}, {{ 0xbb8233d2b6423685ull, 0x1ff2b8cb1eb2df00ull, 0x8193352e7602cfbdull, 0x05d8af8a1b67de98ull, 0xa68a296bdeebdfa7ull, 0x68a23a58131efddaull }}, {{ 0x5316063b1e962136ull, 0x3f7b37ef32fcb607ull, 0x0fc013d09c1c1d63ull, 0x3a76db65120eb1f5ull, 0x81659e36b536bc86ull, 0x16564770bf35ea8aull }}, {{ 0x3edc3e4f31dd4c18ull, 0x7ad02f57fddf1c49ull, 0x9d80c626191925e0ull, 0x48a491f2b492f392ull, 0x0df82e2314235d3eull, 0xdf5eca67781b2969ull }}, {{ 0x749a6f17f2a4f8efull, 0xcc21d96feab71adcull, 0x2707bd7cfafb7ac4ull, 0xd66db37b0dbd83baull, 0x8bb1cd5ec961a46eull, 0xb9b3e80ab10f9e1aull }}, {{ 0x8e0856ef7a71b957ull, 0xf9527e5f2b270c9cull, 0x864d66e1cdd2cbafull, 0x604902ce89672545ull, 0x74f205b3ddd06c54ull, 0x4107106aea9c2d09ull }}, {{ 0x8c53655ac8713d61ull, 0xbd38efb7af867e1dull, 0x3f0604d20a3bf4dfull, 0xc2da1c115e0774b7ull, 0x91743906aa243b4bull, 0x8a46a42d2a19c25eull }}, {{ 0x7b41f58bd46c65cdull, 0x64395d2cdb40ed27ull, 0x763c3034665790bdull, 0x9c8518adac4a8f28ull, 0xae8a3a42a56a50f5ull, 0x66c269c3a50197b1ull }}, {{ 0xd09397764c3bfa05ull, 0xea3da3c09089438aull, 0x9e59e20bff6ba765ull, 0x1d32f6c8bae99794ull, 0xd166469a76272998ull, 0x039821a4720fecf0ull }}, {{ 0x25c3ea9efa57c433ull, 0x26686585a55ca36cull, 0x2f82d477fa3489fbull, 0x23fda3d74d1febceull, 0x2dfec2089d879ff1ull, 0x23f1506c749f4168ull }}, {{ 0x79a72a35c76da9ffull, 0x8013f738759e6239ull, 0xdb1c4cafc60d63cfull, 0x67e86669033f360dull, 0xcbf39456274c3f6bull, 0x676d243c8e388e11ull }}, {{ 0xc087a619ca48a3f6ull, 0x00c7a834982fd63eull, 0x8f1afeddbc85e61bull, 0x0f14001a20781c8aull, 0xf783cb5d88fa7a32ull, 0x0a436a5d8e358cb1ull }}, {{ 0x854c7d01e6d6679bull, 0x07cc920df1de5e73ull, 0x970df4a95d3afd0eull, 0x96c8010544b11d69ull, 0xab25f1a759c8c5f4ull, 0x66a227a78e177ef3ull }}, {{ 0x34fce21304600c0full, 0x4dfdb48b72afb083ull, 0xe68b8e9da44de28cull, 0xe3d00a34aeeb261full, 0xaf7b708981d7bb8dull, 0x02558c8b8ceaf584ull }}, {{ 0x11e0d4be2bc07898ull, 0x0be90d727adce520ull, 0x017392286b0ad97bull, 0xe620660ed52f7d3full, 0xdad2655f126d538aull, 0x17577d73812d972eull }}, {{ 0xb2c84f6db584b5f1ull, 0x771a8678cca0f340ull, 0x0e83b5942e6c7eceull, 0xfd43fc9453dae476ull, 0x8c37f5b6b845436cull, 0xe96ae6830bc7e7d4ull }}, {{ 0xfbd31a49172f1b6dull, 0xa70940b7fe498086ull, 0x912517c9d03cf410ull, 0xe4a7ddcb468cec9cull, 0x7a2f992332b4a241ull, 0x1e2d011e75cf0e4dull }}, {{ 0xd63f06dae7d71244ull, 0x865c872feedf0545ull, 0xab72ede2226188a6ull, 0xee8ea9f0c1813e1dull, 0xc5dbfb5ffb0e5692ull, 0x2dc20b309a168f06ull }}, {{ 0x5e76448d0e66b6abull, 0x3f9d47df54b634baull, 0xb27d4ad557cf5681ull, 0x5192a3678f0c6d28ull, 0xba97d1bfce8f61bdull, 0xc9946fe604e19643ull }}, {{ 0xb09ead82900322b3ull, 0x7c24ceb94f1e0f47ull, 0xf8e4ec556e19610cull, 0x2fba620b967c4396ull, 0x49ee317e1199d165ull, 0xdfcc5efc30cfdea5ull }}, {{ 0xe632c719a01f5afeull, 0xd970133d172c98ccull, 0xb8f13b564cfdca7cull, 0xdd47d473e0daa3e5ull, 0xe34deeecb0022df3ull, 0xbdfbb5d9e81eb274ull }}, {{ 0xfdfbc70041398de8ull, 0x7e60c062e7bdf800ull, 0x396c515f01e9e8e0ull, 0xa4ce4c86c88a66f9ull, 0xe10b553ee015cb86ull, 0x6bd51a831132f890ull }}, {{ 0xebd5c6028c3f8b0bull, 0xefc783dd0d6bb009ull, 0x3e3b2db6132318c4ull, 0x700efd43d56805bcull, 0xca715474c0d9f342ull, 0x3653091eabfdb5a8ull }}, {{ 0x3659bc197a7b6e70ull, 0x5dcb26a28634e063ull, 0x6e4fc91cbf5ef7b1ull, 0x6095e4a65610395aull, 0xe86d4c8f88838098ull, 0x1f3e5b32b7e91897ull }}, {{ 0x1f8158fec8d25063ull, 0xa9ef82593e10c3e0ull, 0x4f1ddb1f79b5acedull, 0xc5daee7f5ca23d88ull, 0x1444fd9b552305f3ull, 0x386f8ffb2f1af5efull }}, {{ 0x3b0d79f3d83723deull, 0xa35b177c6ca7a6c1ull, 0x172a8f3ac118c148ull, 0xba8d50f99e566753ull, 0xcab1e811535e3b85ull, 0x345b9fcfd70d9b56ull }}, {{ 0x4e86c386722766aaull, 0x618eeadc3e8c838cull, 0xe7a9984b8af78cd6ull, 0x498529c02f60093eull, 0xeaf310ad41ae5339ull, 0x0b943e1e66881163ull }}, {{ 0x1143a340758a02a2ull, 0xcf952c9a717d237bull, 0x0c9ff2f36dab805full, 0xdf33a181d9c05c75ull, 0x2d7ea6c490cf403cull, 0x73ca6d300150ade7ull }}, {{ 0xaca4608497641a55ull, 0x1bd3be086ee362ceull, 0x7e3f7d8248b303beull, 0xb8044f1281839c92ull, 0xc6f283ada8188260ull, 0x85e843e00d26cb07ull }}, {{ 0xbe6bc52de9e90756ull, 0x16456c5454e1dc12ull, 0xee7ae716d6fe256dull, 0x302b16b90f241db8ull, 0xc57924c890f517c7ull, 0x3b12a6c08383ee4dull }}, {{ 0x7035b3cb231a495cull, 0xdeb63b4b50d298bbull, 0x50cd06e465ed7642ull, 0xe1aee33a97692939ull, 0xb6bb6fd5a992edc7ull, 0x4eba838523274f09ull }}, {{ 0x621905ef5f06dd99ull, 0xb31e50f12839f752ull, 0x280244ebfb469e9cull, 0xd0d4e049ea1b9c3dull, 0x23525e589fbd49ceull, 0x134923335f891661ull }}, {{ 0xd4fa3b59b644a7ffull, 0xff2f296b9243a937ull, 0x9016b137d0c2321eull, 0x2850c2e325141a63ull, 0x6137af763d64e214ull, 0xc0db6001bb5adfcbull }}, {{ 0x51c651811eae8ff2ull, 0xf7d79e33b6a49c2eull, 0xa0e2ec2e2795f535ull, 0x93279cdf72c907e3ull, 0xcc2cda9e65f0d4c9ull, 0x8891c011518cbdf1ull }}, {{ 0x31bf2f0b32d19f77ull, 0xae6c2e05226e19cfull, 0x48dd39cd8bdb941bull, 0xbf8c20ba7bda4ee4ull, 0xf9c08a2ffb684fdfull, 0x55b180ad2f7f6b71ull }}, {{ 0xf177d66ffc303aa6ull, 0xd039cc33584d0217ull, 0xd8a442077693c914ull, 0x7b794748d68714eaull, 0xc18565dfd2131ebdull, 0x58ef06c3dafa3273ull }}, {{ 0x6eae605fd9e24a78ull, 0x2241fa01730214efull, 0x766a944aa1c5dad0ull, 0xd2bcc8d86146d12cull, 0x8f35fabe34bf3366ull, 0x795643a68dc5f885ull }}, {{ 0x52cfc3be82d6e8b1ull, 0x5693c40e7e14d15aull, 0xa029caea51ba8c21ull, 0x3b5fd873ccc42bbcull, 0x981bcb6e0f780204ull, 0xbd5ea48189bbb537ull }}, {{ 0x3c1da5711c6516e7ull, 0x61c5a890ecd02d87ull, 0x41a1ed273149794dull, 0x51be7485ffa9b55eull, 0xf115f24c9ab0142aull, 0x65b26d0f6155142bull }}, {{ 0x5928766b1bf2e506ull, 0xd1b895a94021c748ull, 0x90534387ecdebd05ull, 0x31708d3bfca115aeull, 0x6adb76fe0ae0c9a7ull, 0xf8f84299cd52c9b7ull }}, {{ 0x7b94a02f177cf23cull, 0x3135d89c8151c8d3ull, 0xa340a34f40b3623aull, 0xee658457de4ad8d1ull, 0x2c92a5ec6cc7e087ull, 0xb9b29a02053be12aull }}, {{ 0xd3ce41d6eae1765bull, 0xec1a761d0d31d842ull, 0x608661188701d645ull, 0x4ff72b6eaeec7830ull, 0xbdba7b3c3fcec54full, 0x40fa04143456cba5ull }}, {{ 0x460e92652cce9f93ull, 0x39089d2283f2729cull, 0xc53fcaf546125ebbull, 0x1fa7b252d53cb1e3ull, 0x6948d05a7e13b519ull, 0x89c428ca0b63f479ull }}, {{ 0xbc91b7f3c0123bb9ull, 0x3a56235927787a1aull, 0xb47ded94bcb7b350ull, 0x3c8cf73c545ef2e5ull, 0x1cd82388ecc512fbull, 0x61a997e471e78cbeull }}, {{ 0x5db12f8580b6553cull, 0x475d617b8ab4c50bull, 0x0ceb47cf5f2d0122ull, 0x5d81a85b4bb57cf9ull, 0x207163593fb2bdd0ull, 0xd09feeec730b7f6dull }}, {{ 0xa8ebdb37071f545cull, 0xc9a5ced36b0fb271ull, 0x8130ce19b7c20b56ull, 0xa7109390f516e1baull, 0x446de17c7cfb6a23ull, 0x263f553c7e72fa43ull }}, {{ 0x9936902647394b95ull, 0xe07a14422e9cf870ull, 0x0be80d012d947163ull, 0x86a5c3a992e4d149ull, 0xac4acedce1d22564ull, 0x7e79545cf07dc6a0ull }}, {{ 0xfc21a17ec83cf3ceull, 0xc4c4ca95d221b465ull, 0x7710820bc7cc6de6ull, 0x4279a49fbcf02cdaull, 0xbaec14a0d23575edull, 0xf0bd4ba164e9c246ull }}, {{ 0xd9504ef3d2618610ull, 0xafafe9da35510bfbull, 0xa6a51475cdfc4b03ull, 0x98c06e3d6161c088ull, 0x4d38ce4836169b44ull, 0x6764f44df12196c3ull }}, {{ 0x7d23158637cf3c9cull, 0xdcdf2286152a77d6ull, 0x8272cc9a0bdaee24ull, 0xf7844e65cdd18556ull, 0x04380ed21ce210adull, 0x09f18b0b6b4fe3a1ull }}, {{ 0xe35ed73e2e185e14ull, 0xa0b7593cd3a8ae60ull, 0x187bfe04768d4d70ull, 0xab2b0ffa0a2f3561ull, 0x2a30943520d4a6cbull, 0x636f6e72311ee44aull }}, {{ 0xe1b4686dccf3acc9ull, 0x47297c604496cfc8ull, 0xf4d7ec2ca1850666ull, 0xafae9fc465d815caull, 0xa5e5ca13484e83f4ull, 0xe25a5075eb34eae5ull }}, {{ 0xd10c144a0184bfd7ull, 0xc79edbc2ade41dd8ull, 0x906f39be4f323ffeull, 0xdcd23dabfa70d9edull, 0x7af9e4c0d311278eull, 0xd787249b30112cf8ull }}, {{ 0x2a78cae40f2f7e69ull, 0xcc34959acae92a78ull, 0xa458416f17f67ff3ull, 0xa03668b7c8688347ull, 0xcdc2ef883eab8b94ull, 0x6b476e0fe0abc1b4ull }}, {{ 0xa8b7ece897daf01eull, 0xfa0dd80bed1ba8b1ull, 0x6b728e56efa0ff85ull, 0x4220172dd41520ccull, 0x099d5b5272b373ceull, 0x30ca4c9ec6b59110ull }}, {{ 0x972f4115ee8d612eull, 0xc48a7077431496f0ull, 0x32798f655c49fb3bull, 0x9540e7ca48d347fcull, 0x602591387b02860eull, 0xe7e6fe33c317aaa0ull }}, {{ 0xe7d88adb5185cbcfull, 0xad6864a89ecde565ull, 0xf8bf99f59ae3d055ull, 0xd4890de6d840cfd9ull, 0xc177ac34ce193c91ull, 0x0f05ee059eecaa43ull }}, {{ 0x0e756c912f39f613ull, 0xc613ee96340af5fbull, 0xb77c03980ce62358ull, 0x4d5a8b0472881e83ull, 0x8eacba100cfc5db2ull, 0x963b4c38353ea6a5ull }}, {{ 0x90963dabd8439cbaull, 0xbcc751de086d9bceull, 0x2ad823f080fd6177ull, 0x05896e2c79513125ull, 0x92bf44a081dba8f7ull, 0xde50fa3214728277ull }}, {{ 0xa5de68b672a41f45ull, 0x5fc932ac54481611ull, 0xac71676509e5ceadull, 0x375e4dbcbd2beb73ull, 0xbb78ae45129499a6ull, 0xaf29c5f4cc7918abull }}, {{ 0x7ab017207a6938b3ull, 0xbddbfabb4ad0dcb0ull, 0xbc6e09f262fa12c5ull, 0x29af095f63b73284ull, 0x52b6ceb2b9ce007eull, 0xd7a1bb8ffcbaf6b5ull }}, {{ 0xcae0e744c81c3702ull, 0x6a97cb50ec289ee4ull, 0x5c4c6377ddc4bbb9ull, 0xa0d65db9e527f92full, 0x3b2412fb420c04edull, 0x6c51539fdf4da315ull }}, {{ 0xecc908afd11a2616ull, 0x29edf129399634efull, 0x9afbe2aea9af553eull, 0x485fa942f38fbbd9ull, 0x4f68bdd094783148ull, 0x3b2d443eb9085ed4ull }}, {{ 0x3fda56de2b057cdbull, 0xa34b6b9c3fde115full, 0x0dd6dad2a0d9546dull, 0xd3bc9c9d839d5680ull, 0x1a176a25ccb1ecd2ull, 0x4fc4aa733a53b44bull }}, {{ 0x7e8764adae36e092ull, 0x60f2341a7eacadb8ull, 0x8a648c3a487d4c48ull, 0x455e1e2724256100ull, 0x04ea2579fef3403cull, 0x1daea88047450aefull }}, {{ 0xf149eec8ce24c5b2ull, 0xc9760908f2bec934ull, 0x67ed7a46d4e4fad3ull, 0xb5ad2d876975ca05ull, 0x312576c3f580825aull, 0x28d29502c8b26d56ull }}, {{ 0x6ce353d80d6fb8f0ull, 0xde9c5a597b73dc11ull, 0x0f46c6c450f1cc45ull, 0x18c3c74a1e99e436ull, 0xeb76a3a79705178bull, 0x9839d21bd6f8455dull }}, {{ 0x40e14670865d3961ull, 0xb21b877ed28698aeull, 0x98c3c3ab2971fabaull, 0xf7a5c8e53202ea1cull, 0x32a2648be632eb6eull, 0xf242351665b2b5abull }}, {{ 0x88ccc0653fa43dc9ull, 0xf5134af43941f6ceull, 0xf7a5a4af9e73cb4aull, 0xac79d8f3f41d251dull, 0xfa57ed76fdfd3255ull, 0x769612dff8fb18afull }}, {{ 0x57ff83f47c6a69ddull, 0x92c0ed8a3c93a411ull, 0xac786edc3085f0edull, 0xbcc279878923732bull, 0xc76f46a5ebe3f758ull, 0xa1dcbcbfb9cef6dfull }}, {{ 0x6ffb278cdc2822a6ull, 0xbb8947665dc468adull, 0xbcb45499e53b6947ull, 0x5f98bf4b5b627fb4ull, 0xca58c27b36e7a977ull, 0x529f5f7d4215a4bdull }}, {{ 0x5fcf8b8099915a7full, 0x535cc9ffa9ac16c6ull, 0x5f0b4e02f4521ccdull, 0xbbf778f191d8fd0full, 0xe77798d0250c9ea9ull, 0x3a39bae494d86f69ull }}, {{ 0xbe1b7305ffad88faull, 0x419fe3fca0b8e3bfull, 0xb6710c1d8b352005ull, 0x57aab96fb279e299ull, 0x0aabf821727e32a1ull, 0x46414cedd0745a23ull }}, {{ 0x6d127e3bfcc759c4ull, 0x903ee7de4738e57dull, 0x206a792770134034ull, 0x6cab3e5cf8c2da01ull, 0x6ab7b14e78edfa4dull, 0xbe8d014a248b855eull }}, {{ 0x42b8ee57dfc981a5ull, 0xa2750eaec838f6e6ull, 0x4428bb8a60c0820dull, 0x3eb06fa1b79c840bull, 0x2b2ced10b94bc706ull, 0x71820ce56d7335b0ull }}, {{ 0x9b394f6ebddf1071ull, 0x589292d3d239a4feull, 0xa9975367c7851488ull, 0x72e45c512c1d2870ull, 0xafc142a73cf5c63eull, 0x6f1480f6468018e1ull }}, {{ 0x103d1a536ab6a468ull, 0x75b9bc46364071f2ull, 0x9fe9420dcb32cd53ull, 0x7ceb9b2bb9239466ull, 0xdd8c9a886199be70ull, 0x56cd099ec100f8d0ull }}, {{ 0xa26307422b226c13ull, 0x99415abe1e847374ull, 0x3f1c9489effc0542ull, 0xe1340fb53b63cc02ull, 0xa77e0953d0017064ull, 0x640260338a09b828ull }}, {{ 0x57de4895af5838bcull, 0xfc8d8b6d312c828eull, 0x771dcd635fd83499ull, 0xcc089d1451e5f816ull, 0x8aec5d46200e63f0ull, 0xe817c20364613196ull }}, {{ 0x6eaed5d8d972375bull, 0xdd877243ebbd198full, 0xa72a05e1be720e03ull, 0xf85622cb32fbb0e0ull, 0x6d3ba4bd408fe767ull, 0x10ed9421ebcbefe1ull }}, {{ 0x52d45a787e76298eull, 0xa74a76a73562ff9aull, 0x87a43ad170748c26ull, 0xb35d5beffdd4e8c6ull, 0x44546f64859f0a0full, 0xa947c95335f75eceull }}, {{ 0x3c4b88b4f09d9f8cull, 0x88e8a28815ddfc07ull, 0x4c6a4c2e648d7982ull, 0x01a5975fea5117c1ull, 0xab4c59ed3836649dull, 0x9ccddd401ba9b40eull }}, {{ 0x5af3571166283b79ull, 0x59165950daabd848ull, 0xfc26f9cfed86bf19ull, 0x1077e9bf272aed8cull, 0xb0fb8344321fee22ull, 0x200aa48114a10892ull }}, {{ 0x8d8166adfd9252bcull, 0x7adf7d288ab672d3ull, 0xd985c21f474376fdull, 0xa4af217787ad4781ull, 0xe9d320a9f53f4d54ull, 0x406a6d0ace4a55baull }}, {{ 0x870e02cbe7b73b55ull, 0xccbae3956b207c43ull, 0x7f399538c8a2a5e6ull, 0x6ed74eab4cc4cb12ull, 0x223f46a39479054eull, 0x8428426c0ee7594dull }}, {{ 0x468c1bf70d285152ull, 0xff4ce3d62f44daa3ull, 0xf83fd437d65a7b03ull, 0x546912b0ffafeeb8ull, 0x5678c263ccba3510ull, 0x2992983895097d03ull }}, {{ 0xc17917a683932d2full, 0xf900e65dd8b08a60ull, 0xb27e4a2e5f88ce27ull, 0x4c1abae9fcdf5339ull, 0x60b797e5ff4612a3ull, 0x9fb9f235d25ee221ull }}, {{ 0x8ebaec8123bfc3daull, 0xba08ffaa76e567c7ull, 0xf8eee5cfbb580d8full, 0xf90b4d23e0b94040ull, 0xc72beefbf8bcba60ull, 0x3d43761a37b4d54dull }}, {{ 0x934d3d0b657da683ull, 0x4459fca8a4f60dcbull, 0xb954fa1d5170879dull, 0xba710366c73c8289ull, 0xc7b755d7b75f47c9ull, 0x64a29d062d105509ull }}, {{ 0xc1046271f6e8811bull, 0xab83de96719c89f3ull, 0x3d51c5252e654c24ull, 0x486a2203c85d1961ull, 0xcd295a6d29b8cde1ull, 0xee5a223dc2a35261ull }}, {{ 0x8a2bd873a5150b13ull, 0xb326b1e0701d6385ull, 0x6531b373cff4f96eull, 0xd4255425d3a2fdccull, 0x039d8843a1380accull, 0x4f8556699a6137d2ull }}, {{ 0x65b6748472d26ebdull, 0xff82f2c46125e337ull, 0xf3f102861f91be52ull, 0x4975497a445de9fbull, 0x242752a44c306c00ull, 0x1b35602007cc2e34ull }}, {{ 0xf9208d2c7c38535eull, 0xfb1d7babcb7ae029ull, 0x876a193d3bb16f3dull, 0xde94dec6abab23d7ull, 0x69893a6af9e43802ull, 0x1015c1404df9ce09ull }}, {{ 0xbb4583bcda3341a9ull, 0xcf26d4b5f2ccc1a3ull, 0x4a24fc6454ee586bull, 0xb1d0b3c2b4af666bull, 0x1f5c482dc2ea301cull, 0xa0d98c830bc20c5eull }}, {{ 0x50b7256086009096ull, 0x17844f1b7bff9065ull, 0xe571dbeb514f7436ull, 0xf227059b0eda0030ull, 0x399ad1c99d25e11eull, 0x487f7d1e75947badull }}, {{ 0x272775c53c05a5dbull, 0xeb2b1712d7fba3f5ull, 0xf67297312d1a8a1cull, 0x7586380e948401e8ull, 0x400c31e0237acb35ull, 0xd4fae33097ccd4c4ull }}, {{ 0x878a99b458387a89ull, 0x2faee6bc6fd46793ull, 0xa079e7ebc3096521ull, 0x973e3091cd281319ull, 0x8079f2c162cbf016ull, 0x51ccdfe5ee004faaull }}, {{ 0x4b6a010b7234c95full, 0xdcd5035c5e4c0bc3ull, 0x44c30f359e5df34bull, 0xe86de5b20390bf00ull, 0x04c37b8ddbf760e1ull, 0x3200befb4c031ca9ull }}, {{ 0xf2240a72760fddb3ull, 0xa052219baef875a0ull, 0xaf9e98182fab80f6ull, 0x144af8f423a77602ull, 0x2fa2d38a97a9c8d3ull, 0xf40775d0f81f1e9aull }}, {{ 0x756868789c9ea8ffull, 0x43355014d5b49849ull, 0xdc31f0f1dcb309a2ull, 0xcaedb989648a9c1aull, 0xdc5c4369eca1d83eull, 0x884a9a29b1373205ull }}, {{ 0x961414b61e3299f2ull, 0xa01520d0590df2deull, 0x99f369729efe6056ull, 0xed493f5ded6a190cull, 0x9b9aa2233e527273ull, 0x52ea05a0ec27f43aull }}, {{ 0xdcc8cf1d2dfa0375ull, 0x40d348237a8b7cb1ull, 0x03821e7a35efc362ull, 0x44dc79ab4624fa7eull, 0x140a55606f387887ull, 0x3d243849398f8a4aull }}, {{ 0x9fd81723cbc42296ull, 0x8840d162c972def2ull, 0x231530c61b5da1d6ull, 0xb09cc0b0bd71c8ecull, 0xc86755c45834b548ull, 0x636a32dc3f9b66e4ull }}, {{ 0x3e70e765f5a959d7ull, 0x52882ddbde7cb57aull, 0x5ed3e7bd11a85261ull, 0xe61f86e76671d939ull, 0xd40959ab720f14d6ull, 0xe225fc9a7c1204efull }}, {{ 0x706909fb989d826bull, 0x3951ca96b0df16c6ull, 0xb4470d62b09337cdull, 0xfd3b450a00727c3dull, 0x485d80b27496d064ull, 0xd57bde08d8b4315eull }}, {{ 0x641a63d3f627182dull, 0x3d31e9e2e8b6e3c0ull, 0x0ac685dae5c02e04ull, 0xe450b2640478da69ull, 0xd3a706f88de423f1ull, 0x56d6ac587709edaeull }}, {{ 0xe907e6479d86f1c0ull, 0x63f322dd1724e583ull, 0x6bc13a8cf981cc2aull, 0xeb26f7e82cb8881aull, 0x448645b58ae96772ull, 0x6462bb74a66348d4ull }}, {{ 0x1a4efecc27457183ull, 0xe77f5ca2e770f727ull, 0x358c4981bf11f9a7ull, 0x2f85af11bf355108ull, 0xad3eb9176d1e0a7dull, 0xebdb528e7fe0d84aull }}, {{ 0x0715f3f988b66f1dull, 0x0af99e5d0a69a787ull, 0x177adf1176b3c08full, 0xdb38d6b178152a52ull, 0xc4733aea432c68e3ull, 0x36913990fec872eaull }}, {{ 0x46db87bf57205726ull, 0x6dc02fa268208b46ull, 0xeaccb6aea3058596ull, 0x903862eeb0d3a734ull, 0xac804d269fbc18e6ull, 0x21ac3fa9f3d47d2bull }}, {{ 0xc4934d7967436778ull, 0x4981dc58114570beull, 0x2bff22d25e3737e0ull, 0xa233dd52e8448811ull, 0xbd0303823d58f901ull, 0x50ba7ca3864ce3b4ull }}, {{ 0xadc106be08a20ab3ull, 0xdf129b70acb66773ull, 0xb7f75c37ae282ec2ull, 0x5606a53d12ad50abull, 0x621e23166579ba10ull, 0x2748de633f00e50full }}, {{ 0xc98a436c56546afcull, 0xb6ba1266bf200a84ull, 0x2fa99a2ccd91d39cull, 0x5c427462bac526b5ull, 0xd52d5edff6c144a3ull, 0x88d8afe07608f299ull }}, {{ 0xdf66a23b5f4c2dd4ull, 0x2344b8037740692full, 0xdca005c007b2441full, 0x9a988bdb4bb38313ull, 0x53c5b4bfa38cae61ull, 0x5876dec49c597a02ull }}, {{ 0xba025651b8f9ca48ull, 0x60af3022a8841bdeull, 0x9e4039804cf6a937ull, 0x09f57690f5031ec6ull, 0x45b90f7c637ecfd0ull, 0x74a4b3ae1b7ec417ull }}, {{ 0x44175f3139c1e6d2ull, 0xc6d7e15a952916b3ull, 0x2e823f0301a29c29ull, 0x6396a1a9921f33c2ull, 0xb93a9adbe2f41e20ull, 0x8e6f04cd12f3a8e8ull }}, {{ 0xa8e9b7ec41930431ull, 0xc46ecd89d39ae300ull, 0xd116761e105a19a1ull, 0xe3e2509fb5380595ull, 0x3c4a0c96dd892d43ull, 0x90563002bd849917ull }}, {{ 0x99212f3a8fbe29eeull, 0xac540762440cde06ull, 0x2ae09d2ca3850051ull, 0xe6d7263d143037daull, 0x5ae47de4a75bc4a6ull, 0xa35de01b672dfae8ull }}, {{ 0xfb4bd8499d6da347ull, 0xbb4849d6a880ac41ull, 0xacc623be63320330ull, 0x04677e62c9e22e85ull, 0x8ceceaee8995ae85ull, 0x61aac11207cbcd13ull }}, {{ 0xd0f672e0264860c6ull, 0x50d2e2629506ba93ull, 0xbfbd656fdff41fe7ull, 0x2c0aefdbe2d5d138ull, 0x81412d515fd8d132ull, 0xd0ab8ab44df602c3ull }}, {{ 0x29a07cc17ed3c7beull, 0x283cd7d9d24349c6ull, 0x7d65f65ebf893f09ull, 0xb86d5e96dc5a2c37ull, 0x0c8bc52dbe782bf5ull, 0x26b36b0b0b9c1ba3ull }}, {{ 0xa044df8ef445cd71ull, 0x92606e8236a0e1bdull, 0xe5fb9fb37b5c765bull, 0x3445b1e49b85ba2aull, 0x7d75b3c970b1b799ull, 0x83022e6e7419145eull }}, {{ 0x42b0bb958aba0666ull, 0xb7c451162248d168ull, 0xfbd43d02d19c9f93ull, 0x0ab8f2ee133945acull, 0xe69905de66f12bfcull, 0x1e15d05088facbb0ull }}, {{ 0x9ae753d76b443ffeull, 0x2dab2add56d82e12ull, 0xd64a621c301e3bc5ull, 0x6b397d4cc03cb8c1ull, 0x01fa3ab0056bb7d8ull, 0x2cda232559cbf4e9ull }}, {{ 0x0d09466a30aa7fe7ull, 0xc8afaca56471ccbaull, 0x5ee7d519e12e55b3ull, 0x303ee4ff825f3792ull, 0x13c64ae036352e74ull, 0xc0855f7581f7911aull }}, {{ 0x825cc025e6a8ff09ull, 0xd6dcbe75ec71ff44ull, 0xb50e5302cbcf5905ull, 0xe274f1fb17b82bb7ull, 0xc5beecc21e13d089ull, 0x8535ba9713abab04ull }}, {{ 0x179f817b0299f659ull, 0x649f709b3c73f8adull, 0x128f3e1bf6197a3aull, 0xd89173ceed31b52dull, 0xb9753f952cc62562ull, 0x341949e6c4b4ae2full }}, {{ 0xec3b0ece1a039f7full, 0xee3a66105c87b6c2ull, 0xb9986d179cfec647ull, 0x75ae861543f113c2ull, 0x3e947bd3bfbd75dcull, 0x08fce303af0ecdddull }}, {{ 0x3a4e940d04243af2ull, 0x4e47fca39d4d239dull, 0x3ff442ec21f3becfull, 0x98d13cd4a76ac59bull, 0x71ccd6457d669a9cull, 0x59e0de24d6940aa4ull }}, {{ 0x4711c882296a4d75ull, 0x0ecfde6425036424ull, 0x7f8a9d3953857419ull, 0xf82c604e8a2bb810ull, 0x72005eb6e6020a1dull, 0x82c8ad7061c86a6cull }}, {{ 0xc6b1d5159e270697ull, 0x941eafe97221e96aull, 0xfb6a243d433688faull, 0xb1bbc31165b530a4ull, 0x7403b324fc14652bull, 0x1bd6c663d1d4283cull }}, {{ 0xc2f252d82d8641e2ull, 0xc932df1e75531e2bull, 0xd2256a64a02159c9ull, 0xf1559eadf913e671ull, 0x8824ff71d8cbf3b4ull, 0x1663bfe63249925cull }}, {{ 0x9d773c71c73e92d3ull, 0xdbfcb730953f2db5ull, 0x357627ee414d81e1ull, 0x6d5832cbbac70072ull, 0x5171fa7277f78511ull, 0xdfe57efdf6dfb79dull }}, {{ 0x26a85c71c871bc40ull, 0x97df27e5d477c918ull, 0x169d8f4e8d0712d2ull, 0x4571fbf54bc60476ull, 0x2e73c878afab32aeull, 0xbef6f5eba4bd2c25ull }}, {{ 0x82939c71d4715a7full, 0xeeb78efa4caddaf1ull, 0xe22799118246bc39ull, 0xb673d794f5bc2c9cull, 0xd085d4b6dcaffaceull, 0x75a59b346f63b973ull }}, {{ 0x19c41c724c6d88fbull, 0x532b95c6feca8d6full, 0xd58bfaaf16c35a43ull, 0x20866bd19959be20ull, 0x253a4f249edfcc13ull, 0x9878100c59e53e86ull }}, {{ 0x01a91c76fc4759ceull, 0x3fb3d9c5f3e98657ull, 0x5777cad6e3a186a1ull, 0x4540362ffd816d48ull, 0x7447176e34bdf8bfull, 0xf4b0a07b82f4713dull }}, {{ 0x109b1ca5dac98208ull, 0x7d0681bb871f3f66ull, 0x6aadec64e44f424cull, 0xb4821ddfe70e44d3ull, 0x8ac6ea4e0f6bb778ull, 0x8ee644d31d8c6c66ull }}, {{ 0xa60f1e7a8bdf144bull, 0xe2411153473879fcull, 0x2acb3bf0eb1896fcull, 0x0d152abf068eb042ull, 0x6bc5270c9a352ab7ull, 0x94feb03f277c3c01ull }}, {{ 0x7c9730c976b6caefull, 0xd68aad40c834c3deull, 0xabf057692ef5e5e0ull, 0x82d3ab764192e295ull, 0x35b3867e0613ab26ull, 0xd1f2e2778ada580eull }}, {{ 0xdde7e7dea323ed56ull, 0x616ac487d20fa6b0ull, 0xb7636a1bd59afac8ull, 0x1c44b29e8fbcd9d8ull, 0x190340ec3cc4af81ull, 0x337cd8ab6c87708eull }}, {{ 0xab0f0eb25f67455full, 0xce2bad4e349c82e8ull, 0x29e22516580dcbd3ull, 0x1aaefa319d608277ull, 0xfa20893a5faedb0bull, 0x02e076b23d4a658cull }}, {{ 0xae9692f7ba08b5baull, 0x0db4c50e0e1d1d16ull, 0xa2d572df7089f646ull, 0x0ad5c5f025c518a7ull, 0xc5455c47bcd48e6full, 0x1cc4a2f664e7f781ull }}, {{ 0xd1e1bdad44571940ull, 0x890fb28c8d2322e2ull, 0x5c567cba65639ebcull, 0x6c59bb6179b2f68cull, 0xb4b59acd604d9056ull, 0x1fae5d9ff10fab11ull }}, {{ 0x32d168c4ab66fc7dull, 0x5a9cf97d835f5cdcull, 0x9b60df47f5e4335dull, 0x3b8151cec0fda17bull, 0x0f180c05c307a360ull, 0x3ccfa83f6a9caeb1ull }}, {{ 0xfc2e17aeb205dcdeull, 0x8a21bee721b9a099ull, 0x11c8b8cf9aea01a5ull, 0x530d321389e84ed4ull, 0x96f078399e4c61c2ull, 0x601c927a2a1ed2eaull }}, {{ 0xd9ccecd2f43aa0adull, 0x6551750751404603ull, 0xb1d7381c0d241077ull, 0x3e83f4c363131448ull, 0xe564b2402efbd197ull, 0xc11db8c5a5343d29ull }}, {{ 0x8201403d8a4a46c2ull, 0xf52e92492c82bc26ull, 0xf26831188368a4a9ull, 0x71278fa1debecad6ull, 0xf5eef681d5d62fe8ull, 0x8b2937b8740a63a2ull }}, {{ 0x140c826766e6c390ull, 0x93d1b6dbbd1b5981ull, 0x7811eaf522166ea3ull, 0x6b8b9c52b373ec65ull, 0x9b55a1125a5ddf14ull, 0x6f9c2d348867e45dull }}, {{ 0xc87d180a0503a3a0ull, 0xc631249563117f0aull, 0xb0b32d9354e05263ull, 0x33741b3b02873bf6ull, 0x11584ab787aab6ccull, 0x5c19c40d540eeba8ull }}, {{ 0xd4e2f0643224643eull, 0xbdeb6dd5deaef66bull, 0xe6ffc7c150c337e5ull, 0x0289104e194857a2ull, 0xad72eb2b4cab23faull, 0x9901a88548953490ull }}, {{ 0x50dd63e9f56bea6aull, 0x6b324a5ab2d5a036ull, 0x05fdcd8d27a02ef9ull, 0x195aa30cfcd36c5dull, 0xc67d2fb0feaf67c4ull, 0xfa109534d5d40da6ull }}, {{ 0x28a5e72396372827ull, 0x2ff6e78afc58421full, 0x3bea07838c41d5beull, 0xfd8a5e81e0423ba2ull, 0xc0e3dce9f2da0da8ull, 0xc4a5d4105a488883ull }}, {{ 0x967b0763de279189ull, 0xdfa50b6ddb729537ull, 0x57244b237a92596dull, 0xe767b112c2965456ull, 0x88e6a1237c848899ull, 0xae7a48a386d55525ull }}, {{ 0xe0ce49e6ad8baf5eull, 0xbc72724a9279d42bull, 0x676aef62c9b77e4aull, 0x0a0ceabb99df4b5full, 0x59024b62dd2d5603ull, 0xd0c6d66344555377ull }}, {{ 0xc80ee302c774d9acull, 0x5c7876e9b8c249b6ull, 0x0a2d59dbe12aeeebull, 0x64812b5402b8f1baull, 0x7a16f1dca3c55c1eull, 0x27c45fe0ab5542a9ull }}, {{ 0xd094de1bca9080bcull, 0x9cb4a5213796e123ull, 0x65c58296cbad5531ull, 0xed0bb1481b397144ull, 0xc4e5729e65b5992full, 0x8dabbec6b1549a9eull }}, {{ 0x25d0ad15e9a5075aull, 0x1f0e734c2be4cb66ull, 0xf9b719e3f4c553f0ull, 0x4274ecd1103e6cabull, 0xb0f67a2ff917fbdfull, 0x88b573c2ed4e0a33ull }}, {{ 0x7a26c2db20724984ull, 0x369080f9b6eff1fdull, 0xc12702e78fb54761ull, 0x9891402aa2703eb7ull, 0xe9a0c5dfbaefd6b8ull, 0x5716859d450c6604ull }}, {{ 0xc5839c8f4476df27ull, 0x21a509c1255f73e6ull, 0x8b861d0b9d14c9ccull, 0xf5ac81aa5862732dull, 0x2047babd4d5e6335ull, 0x66e13824b27bfc31ull }}, {{ 0xb7241d98aca4b783ull, 0x5072618b75ba8703ull, 0x733d227422cfe1f9ull, 0x98bd10a773d87fc7ull, 0x42cd4b6505afe01bull, 0x04cc316ef8d7d9ebull }}, {{ 0x276927f6be6f2b19ull, 0x2477cf7299494625ull, 0x806358895c1ed3bdull, 0xf762a68a8674fdcaull, 0x9c04f1f238dec113ull, 0x2ff9ee55b86e8330ull }}, {{ 0x8a1b8fa37057aefeull, 0x6cae1a79fcdcbd73ull, 0x03e1755d99344563ull, 0xa9da81694091e9e9ull, 0x1831737638b38ac7ull, 0xdfc34f5934511fe6ull }}, {{ 0x65139c62636cd5f1ull, 0x3ecd08c3e09f6683ull, 0x26ce95a7fc0ab5e2ull, 0xa2890e1c85b3231aull, 0xf1ee829e37036bccull, 0xbda1197c0b2b3efcull }}, {{ 0xf2c41bd7e2405b69ull, 0x740257a6c63a0121ull, 0x8411d88fd86b1ad6ull, 0x595a8d1d38ff5f05ull, 0x73511a2e262235feull, 0x684afed86fb075e1ull }}, {{ 0x7ba9166ed683921eull, 0x88176c83be440b53ull, 0x28b2759e742f0c60ull, 0x7d89832439f9b637ull, 0x812b05cd7d561befull, 0x12edf4745ce49aceull }}, {{ 0xd49ae0546123b528ull, 0x50ea3d256ea87142ull, 0x96f8983089d67bc5ull, 0xe75f1f6a43c11e27ull, 0x0bae3a06e55d175aull, 0xbd4b8c8ba0ee0c11ull }}, {{ 0x4e0cc34bcb65138eull, 0x2926637652946c9cull, 0xe5b5f1e56260d5b5ull, 0x09b73a26a58b2d8bull, 0x74ce4444f5a2e98dull, 0x64f37d74494c78aaull }}, {{ 0x0c7fa0f5f1f2c38dull, 0x9b7fe29f39cc3e1bull, 0xf91b72f5d7c85913ull, 0x61284582776fc776ull, 0x900eaab1985d1f82ull, 0xf182e68adcfcb6a8ull }}, {{ 0x7cfc499b737ba37full, 0x12feda3841fa6d0eull, 0xbb127d9a6dd37ac4ull, 0xcb92b718aa5dcaa5ull, 0xa092aaeff3a33b17ull, 0x6f1d016ca1df2295ull }}, {{ 0xe1dae01282d462f8ull, 0xbdf4863293c84290ull, 0x4eb8e8084a42cba8ull, 0xf3bb26f6a7a9ea79ull, 0x45baad5f84604eedull, 0x57220e3e52b759d8ull }}, {{ 0xd28cc0b91c4bddacull, 0x6b8d3df9c5d299a8ull, 0x13391052e69bf497ull, 0x854f85a28ca328bdull, 0xb94ac5bb2bc3154bull, 0x67548e6f3b298272ull }}, {{ 0x397f873b1af6a8bbull, 0x33846bc1ba3a0098ull, 0xc03aa33d02178deaull, 0x351b38597e5f9762ull, 0x3cebb94fb59ed4f3ull, 0x094d90584f9f187bull }}, {{ 0x3efb484f0da29753ull, 0x032c3591464405f2ull, 0x824a606214eb8b26ull, 0x1310337eefbbe9dbull, 0x61353d1d18345180ull, 0x5d07a3731c36f4d0ull }}, {{ 0x75d0d3168859e93cull, 0x1fba17acbea83b76ull, 0x16e7c3d4d1336f7cull, 0xbea202f55d572293ull, 0xcc146322f20b2f00ull, 0xa24c627f1a259023ull }}, {{ 0x9a283ee153831c56ull, 0x3d44ecbf729252a0ull, 0xe50da6502c025ad9ull, 0x72541d95a56759beull, 0xf8cbdf5d746fd607ull, 0x56fbd8f70577a165ull }}, {{ 0x059274cd431f1b60ull, 0x64b13f7a79b73a46ull, 0xf2887f21b8178c7cull, 0x774927d876098174ull, 0xb7f6b9a68c5e5c4aull, 0x65d679a636ac4dfbull }}, {{ 0x37b890049f3711bdull, 0xeeec7ac8c12846bcull, 0x7954f75130eb7cdbull, 0xa8db8e749c5f0e91ull, 0x2fa340817baf9ae8ull, 0xfa60c07e22bb0bd5ull }}, {{ 0x2d35a02e3826b166ull, 0x553ccbd78b92c35aull, 0xbd51a92be932e097ull, 0x9893908e1bb691aeull, 0xdc60850ed4dc0d16ull, 0xc7c784ed5b4e7653ull }}, {{ 0xc41841ce3182edfdull, 0x545ff66b73bba185ull, 0x65309bb71bfcc5e9ull, 0xf5c3a58d1521b0d3ull, 0x9bc53294509882e1ull, 0xcdcb314591109f46ull }}, {{ 0xa8f2920def1d4bddull, 0x4bbfa03285544f39ull, 0xf3e6152717dfbb1dull, 0x99a47782d350e841ull, 0x15b3f9cb25f51cd3ull, 0x09efecb7aaa638c2ull }}, {{ 0x9979b48b5724f6a5ull, 0xf57c41f9354b1840ull, 0x86fcd386eebd4f24ull, 0x006cab1c41291293ull, 0xd907c1ef7b932044ull, 0x635f3f2caa7e3794ull }}, {{ 0xfec10d716771a272ull, 0x96da93bc14eef285ull, 0x45e0434553651771ull, 0x043eaf1a8b9ab9c3ull, 0x7a4d935ad3bf42a8ull, 0xe1b877bea8ee2bd0ull }}, {{ 0xf38a866e0a705871ull, 0xe489c558d155793bull, 0xbac2a0b541f2ea6full, 0x2a72d709740b41a0ull, 0xc707c18c45789a90ull, 0xd134ad72994db624ull }}, {{ 0x8369404c68637467ull, 0xed61b5782d56bc57ull, 0x4b9a4714937d285eull, 0xa87c665e88709047ull, 0xc64d8f7ab6b609a1ull, 0x2c0ec679fd091d6full }}, {{ 0x221c82fc13e28c08ull, 0x45d116b1c5635b6bull, 0xf406c6cdc2e393b5ull, 0x94dbffb15465a2c8ull, 0xbf079acb231c6050ull, 0xb893c0c3e25b265dull }}, {{ 0x551d1dd8c6d97854ull, 0xba2ae2f1b5e1922full, 0x8843c4099ce3c514ull, 0xd097fced4bf85bd9ull, 0x764c0bef5f1bc325ull, 0x35c587a6d78f7fa9ull }}, {{ 0x53232a77c47eb346ull, 0x45acdd711acfb5d9ull, 0x52a5a86020e5b2cfull, 0x25efe144f7b3967full, 0x9ef87759b7159f7aull, 0x19b74c846b9afc9eull }}, {{ 0x3f5fa8adacf300c0ull, 0xb8c0a66b0c1d1a7dull, 0x3a7893c148f8fc18ull, 0x7b5eccb1ad03e0f9ull, 0x35b4a98126d83ac5ull, 0x0128fd2c340dde32ull }}, {{ 0x79bc96c8c17e077cull, 0x3786802e792308e4ull, 0x48b5c58cd9b9d8f7ull, 0xd1b3fef0c226c9bcull, 0x190e9f0b84724bb6ull, 0x0b99e3ba088aadf6ull }}, {{ 0xc15de3d78eec4ad5ull, 0x2b4101d0bb5e58ecull, 0xd719b780814279a8ull, 0x3107f5679583e15aull, 0xfa9236732c76f524ull, 0x7402e544556acb9cull }}, {{ 0x8daae66b953aec51ull, 0xb08a122751af793full, 0x67012b050c98c091ull, 0xea4f960bd726cd8cull, 0xc9b6207fbca59369ull, 0x881cf4ab562bf421ull }}, {{ 0x88ad0033d44d3b28ull, 0xe564b58930dabc7bull, 0x060bae327df785b0ull, 0x271bdc766784077cull, 0xe11d44fd5e77c223ull, 0x51218eb15db78951ull }}, {{ 0x56c202064b044f95ull, 0xf5ef175be88b5cd3ull, 0x3c74cdf8ebab38e8ull, 0x87169ca00b284ad8ull, 0xcb24b1e5b0ad955full, 0x2b4f92eda92b5d32ull }}, {{ 0x6394143eee2b1bcfull, 0x9b56e9971571a041ull, 0x5c900bb934b03919ull, 0x46e21e406f92ec72ull, 0xef6ef2f8e6c7d5bbull, 0xb11bbd489bb1a3fbull }}, {{ 0xe3c8ca754daf1612ull, 0x11651fe6d670428dull, 0x9da0753c0ee23b00ull, 0xc4d52e845bbd3c77ull, 0x5a557db903ce5950ull, 0xeb1564d614f067d7ull }}, {{ 0xe5d7e89508d6dcb5ull, 0xadf33f046062998aull, 0x2844945894d64e00ull, 0xb053d12b95645cacull, 0x8756e93a260f7d27ull, 0x2ed5f05cd1640e69ull }}, {{ 0xfa6f15d258649f0eull, 0xcb80762bc3d9ff6cull, 0x92adcb75d05f0c06ull, 0xe3462bb3d5eb9eb9ull, 0x49651c457c9ae38cull, 0xd45b63a02de8901full }}, {{ 0xc856da3773ee368eull, 0xf3049db5a683fa41ull, 0xbac9f29a23b67843ull, 0xe0bdb5065b34333full, 0xddf31ab6de0ce380ull, 0x4b91e441cb15a138ull }}, {{ 0xd364862a874e2189ull, 0x7e2e29188127c691ull, 0x4be37a056520b2a7ull, 0xc769123f900a007dull, 0xab7f0b24ac80e308ull, 0xf3b2ea91eed84c38ull }}, {{ 0x41ed3da9490d4f5aull, 0xedcd9af50b8dc1b2ull, 0xf6e2c435f346fa8aull, 0xca1ab67ba06404e4ull, 0xb2f66f6ebd08de57ull, 0x84fd29b35472fa36ull }}, {{ 0x9344689cda851981ull, 0x4a080d92738990f6ull, 0xa4dbaa1b80c5c96dull, 0xe50b20d443e830f1ull, 0xfda05a536258af6dull, 0x31e3a1014c7dc622ull }}, {{ 0xc0ac16208932ff09ull, 0xe45087b8835fa9a1ull, 0x7094a51307b9de44ull, 0xf26f484aa711e970ull, 0xe8438741d776da4aull, 0xf2e44a0cfce9bd5dull }}, {{ 0x86b8dd455bfdf65bull, 0xeb254d3521bca051ull, 0x65ce72be4d42aeb0ull, 0x7858d2ea86b31e64ull, 0x12a348926aa486edull, 0x7ceae481e12165abull }}, {{ 0x4338a4b597eb9f8dull, 0x2f750413515e432full, 0xfa107b6f049ad2e9ull, 0xb3783d2942ff2febull, 0xba60d5b82a6d4546ull, 0xe12ced12cb4df8aeull }}, {{ 0xa0366f17ef343b80ull, 0xda9228c12dae9fd8ull, 0xc4a4d2562e0c3d1bull, 0x02b2639c9df7df37ull, 0x47c85931a844b4c3ull, 0xcbc142bbf10bb6d3ull }}, {{ 0x422056ef580a5303ull, 0x89b5978bc8d23e76ull, 0xae70375dcc7a6316ull, 0x1af7e41e2baeb82dull, 0xcdd37bf092af0f9eull, 0xf58c9b576a752440ull }}, {{ 0x9543655970673e1full, 0x6117eb75d836709eull, 0xd06229a9fcc7dee1ull, 0x0daee92db4d331c8ull, 0x0a42d765bad69c2dull, 0x977e116a28936a88ull }}, {{ 0xd4a1f57e64086d39ull, 0xcaef329a72206631ull, 0x23d5a0a3dfceb4cdull, 0x88d51bc9103ff1d8ull, 0x669c69f94c6219c2ull, 0xeaecae2595c22950ull }}, {{ 0x4e5396efe854443eull, 0xed57fa087543fdf2ull, 0x66584666be131009ull, 0x585315daa27f7271ull, 0x021c23bcfbd50199ull, 0x2d3ecd77d9959d24ull }}, {{ 0x0f43e55f134aaa6full, 0x456fc45494a7eb77ull, 0xff72c0036cbea063ull, 0x733eda8a58fa786dull, 0x15196561d6520ffdull, 0xc47406ae7fd82368ull }}, {{ 0x98a6f5b6c0eaa856ull, 0xb65dab4dce8f32a6ull, 0xfa7b80223f7243e0ull, 0x8074896779c8b44bull, 0xd2fdf5d25f349fe6ull, 0xac8842d0fe716210ull }}, {{ 0xf6859923892a935aull, 0x1fa8b10a1197fa81ull, 0xc8d301567a76a6c7ull, 0x048d5e0ac1d70af7ull, 0x3deb9a37b80e3f01ull, 0xbd529c29f06dd4a8ull }}, {{ 0xa137fb635ba9c181ull, 0x3c96ea64afefc913ull, 0xd83e0d60c8a283c7ull, 0x2d85ac6b92666dadull, 0x6b34062d308e760aull, 0x653a19a3644a4e92ull }}, {{ 0x4c2fd1e194a18f09ull, 0x5de527eedf5ddac4ull, 0x726c85c7d65925c8ull, 0xc738bc33b80048caull, 0x30083dc3e5909c65ull, 0xf4450061eae711b8ull }}, {{ 0xf9de32cfce4f965full, 0xaaf38f54b9aa8baaull, 0x783d39ce5f7b79d3ull, 0xc8375a053002d7e8ull, 0xe05269a6f7a61bf9ull, 0x8ab203d32d06b131ull }}, {{ 0xc2adfc1e0f1bdfb5ull, 0xad83994f40a974adull, 0xb264420fbad2c244ull, 0xd2298433e01c6f14ull, 0xc3382085ac7d17c1ull, 0x6af4263fc242ebf2ull }}, {{ 0x9acbd92c9716bd15ull, 0xc723fd18869e8ec9ull, 0xf7ea949d4c3b96aeull, 0x359f2a06c11c56ceull, 0xa0314538bce2ed92ull, 0x2d897e7d969d377bull }}, {{ 0x0bf67bbde6e362d4ull, 0xc767e2f5423193e0ull, 0xaf29ce24fa53e2d3ull, 0x1837a4438b1b6415ull, 0x41ecb43760dd47b6ull, 0xc75ef0e7e2242ad4ull }}, {{ 0x77a0d56b04e1dc47ull, 0xca0edd9495efc6c0ull, 0xd7a20d71c746dc45ull, 0xf22c6aa36f11e8d8ull, 0x933f0a29c8a4cd1cull, 0xc9b5690ed569ac4aull }}, {{ 0xac48562e30d29ac6ull, 0xe494a7cddb5dc384ull, 0x6c548671c8c49ab9ull, 0x75bc2a6256b31878ull, 0xc07665a1d6700321ull, 0xe1161a945620bae9ull }}, {{ 0xbad35dcde83a0bbbull, 0xedce8e0a91a9a32eull, 0x3b4d4071d7ae0b42ull, 0x9959a7d762fef4b4ull, 0x849ff85260601f4eull, 0xcadd09cb5d474d21ull }}, {{ 0x4c41aa0b1244754cull, 0x4a118c69b0a05fd3ull, 0x510484726ccc709dull, 0xfd808e69ddf58f0aull, 0x2e3fb337c3c13911ull, 0xeca261f1a4c9034full }}, {{ 0xfa90a46eb6ac94faull, 0xe4af7c20e643be40ull, 0x2a2d2c783ffc6624ull, 0xe7059022ab979667ull, 0xce7d002da58c3ab3ull, 0x3e57d3706fda2117ull }}, {{ 0xc9a66c5322bdd1c1ull, 0xeedad948fea56e89ull, 0xa5c3bcb27fdbfd70ull, 0x0637a15ab3ebe007ull, 0x10e201c8777a4b07ull, 0x6f6e42645e854aeeull }}, {{ 0xe0803b3f5b6a3187ull, 0x548c7cd9f2765161ull, 0x79a55ef8fe97e669ull, 0x3e2c4d8b0736c04cull, 0xa8d411d4aac6ee46ull, 0x5a4e97ebb134ed4cull }}, {{ 0xc50250799225ef43ull, 0x4d7ce083789f2dd2ull, 0xc075b5b9f1ef001dull, 0x6dbb076e482382fcull, 0x9848b24eabc54ebeull, 0x8711ef34ec1144feull }}, {{ 0xb21724bfb57b589eull, 0x06e0c522b637ca3bull, 0x8499194373560125ull, 0x494e4a4ed1631ddfull, 0xf2d6f712b5b51370ull, 0x46b3581138acb1f1ull }}, {{ 0xf4e76f7d16d1762full, 0x44c7b35b1e2de654ull, 0x2dfafca2815c0b72ull, 0xdd0ee7142ddf2abbull, 0x7c65a6bb1912c262ull, 0xc30170ac36bef373ull }}, {{ 0x910a5ae2e42e9ddaull, 0xafcd018f2dcaff51ull, 0xcbcdde590d987276ull, 0xa29506c9cab7ab4full, 0xdbf8834efabb97dcull, 0x9e0e66ba23758282ull }}, {{ 0xaa678cdce9d22a87ull, 0xde020f97c9edf92full, 0xf60aaf7a87f478a2ull, 0x59d243e1eb2cb11dull, 0x97b52115cb53ee9eull, 0x2c9003456297191cull }}, {{ 0xa80b80a12235a947ull, 0xac149bede34bbbdcull, 0x9c6adac94f8cb65cull, 0x8236a6d32fbeeb2bull, 0xed134ad9f147522full, 0xbda020b5d9e6fb1dull }}, {{ 0x9073064b56189cc2ull, 0xb8ce174ae0f5569eull, 0x1c2c8bdd1b7f1f9eull, 0x1622843fdd752fb4ull, 0x42c0ec836cc935dbull, 0x6841471a8305cf2bull }}, {{ 0xa47e3ef15cf61f91ull, 0x380ce8ecc9956231ull, 0x19bd76a312f73c33ull, 0xdd592a7ea693dd09ull, 0x9b893d223fdc1a8eull, 0x128cc7091e3a17b0ull }}, {{ 0x6cee756da19d3baeull, 0x3081193fdfd5d5f0ull, 0x0166a25ebda85a00ull, 0xa57ba8f281c6a25bull, 0x135c63567e990994ull, 0xb97fc65b2e44ece6ull }}, {{ 0x41509648502454c7ull, 0xe50afc7ebe5a5b64ull, 0x0e0257b368938401ull, 0x76d4997911c2578eull, 0xc19be160f1fa5fceull, 0x3efdbf8fceb140fcull }}, {{ 0x8d25ded3216b4fc7ull, 0xf26ddcf36f8791eaull, 0x8c176d0215c32812ull, 0xa44dfebab1976b8cull, 0x9016cdc973c7be10ull, 0x75e97b9e12ec89dfull }}, {{ 0x837ab43f4e311dc7ull, 0x784aa1825b4bb329ull, 0x78ea4214d99f90bdull, 0x6b0bf34aefea337dull, 0xa0e409de85cd6ca6ull, 0x9b1ed42cbd3d62bbull }}, {{ 0x22cb0a790deb29c3ull, 0xb2ea4f1790f4ff9full, 0xb92694d0803ba766ull, 0x2e7780ed5f2602e6ull, 0x48e862b13a063e80ull, 0x0f3449bf6465db54ull }}, {{ 0x5bee68ba8b2fa19bull, 0xfd2716eba991fc37ull, 0x3b81d02502548a02ull, 0xd0ab0945b77c1d03ull, 0xd913daec443e7101ull, 0x980ae179ebfa914aull }}, {{ 0x975017496fdc5010ull, 0xe386e5349fb3da29ull, 0x53122172174d641dull, 0x26ae5cb92ad92220ull, 0x7ac68d3aaa706a12ull, 0xf06ccec337c9acecull }}, {{ 0xe920e8de5e9b209eull, 0xe344f40e3d06859full, 0x3eb54e74e905e92aull, 0x82cf9f3bac7b5543ull, 0xcbc1844aa86424b5ull, 0x644013a02de0c13cull }}, {{ 0x1b4918afb20f462cull, 0xe0b1888e6241383full, 0x731510911a3b1bacull, 0x1c1c3854bcd154a0ull, 0xf58f2aea93e96f17ull, 0xea80c441cac78c5full }}, {{ 0x10daf6dcf498bdb8ull, 0xc6ef558fd68c3277ull, 0x7ed2a5ab064f14c0ull, 0x191a334f602d4e44ull, 0x9797ad29c71e56e7ull, 0x2907aa91ebcb7bbfull }}, {{ 0xa88da4a18df76934ull, 0xc559579e6179f8a6ull, 0xf43a78ae3f16cf87ull, 0xfb060119c1c50eacull, 0xebecc3a1c72f6506ull, 0x9a4ca9b335f2d57bull }}, {{ 0x95886e4f8baa1c09ull, 0xb57d6c2fcec3b682ull, 0x8a48b6ce76e41b4dull, 0xce3c0b0191b292c1ull, 0x373fa451c7d9f245ull, 0x06fea1001b7c56d7ull }}, {{ 0xd7544f1b74a5185bull, 0x16e639de13a52119ull, 0x66d72410a4e91109ull, 0x0e586e0fb0f9bb8full, 0x287c6b31ce8376baull, 0x45f24a0112db6468ull }}, {{ 0x694b17128e72f38dull, 0xe4fe42acc4734b02ull, 0x046768a6711aaa5aull, 0x8f744c9ce9c1539aull, 0x94dc2ff21122a344ull, 0xbb76e40abc91ec11ull }}, {{ 0x1ceee6b9907d8385ull, 0xf1ee9abfac80ee18ull, 0x2c0a16806b0aa78cull, 0x9a8afe21218d4404ull, 0xd099df74ab5a60adull, 0x52a4e86b5db338afull }}, {{ 0x2155033fa4e72334ull, 0x73520b7cbd094cf1ull, 0xb864e1042e6a8b81ull, 0x096ded4b4f84a829ull, 0x2602ba8eb187c6c8ull, 0x3a711431a90036deull }}, {{ 0x4d52207c71076007ull, 0x813472df625d016bull, 0x33f0ca29d029730eull, 0x5e4b44f11b2e91a1ull, 0x7c1b4992ef4dc3d0ull, 0x486ac9f09a0224adull }}, {{ 0x053544dc6a49c048ull, 0x0c0c7cb9d7a20e31ull, 0x0767e5a2219e7e91ull, 0xaef0b16b0fd1b04cull, 0xd910dfbd5909a623ull, 0xd42be36604156ec6ull }}, {{ 0x3414b09c26e182d1ull, 0x787cdf426c548deaull, 0x4a0ef8555030f1aaull, 0xd566ee2e9e30e2f8ull, 0x7aa8bd657a607d64ull, 0x49b6e1fc28d653c4ull }}, {{ 0x08cee61984cf1c26ull, 0xb4e0b8983b4d8b26ull, 0xe495b35521e970a8ull, 0x56054dd22de8ddb2ull, 0xca9765f6c7c4e5f0ull, 0xe124d3d9985f45acull }}, {{ 0x5814fcff30171979ull, 0x10c735f251076f7cull, 0xedd90153531e6697ull, 0x5c350a35cb18a8fcull, 0xe9e9fba3cdb0fb63ull, 0xcb70467ff3b8b8bfull }}, {{ 0x70d1e1f7e0e6feb9ull, 0xa7c81b772a4a5adbull, 0x4a7a0d413f3001e6ull, 0x9a126619eef699e1ull, 0x2323d46608e9d1e1ull, 0xf262c0ff8537377full }}, {{ 0x6832d3aec905f338ull, 0x8dd112a7a6e78c92ull, 0xe8c4848c77e01302ull, 0x04b7fd0355a202ccull, 0x5f664bfc592232d0ull, 0x77db89fb34282af7ull }}, {{ 0x11fc44d3da3b802eull, 0x8a2aba8c850b7db8ull, 0x17ad2d7caec0be19ull, 0x2f2fe22158541c01ull, 0xb9fef7db7b55fc20ull, 0xae9363d00991ada9ull }}, {{ 0xb3dab046865301ccull, 0x65ab497d3272e930ull, 0xecc3c6ded3876cffull, 0xd7ded54d7349180aull, 0x43f5ae92d15bd941ull, 0xd1c1e6205fb0c8a1ull }}, {{ 0x068ae2c13f3e11f4ull, 0xf8b0dee3f87d1be7ull, 0x3fa5c4b4434a41f9ull, 0x6eb4550680daf06dull, 0xa798d1bc2d967c92ull, 0x3192fd43bce7d64cull }}, {{ 0x416cdb8c786cb389ull, 0xb6e8b4e7b4e31706ull, 0x7c79af0aa0e693c3ull, 0x530b5241088d6444ull, 0x8bf83159c7e0ddb8ull, 0xefbde4a5610e5efeull }}, {{ 0x8e40937cb43f035aull, 0x2517110d10dee63eull, 0xdcc0d66a4901c5a5ull, 0x3e71368a5585eaacull, 0x77b1ed81cec8a933ull, 0x5d6aee75ca8fb5f1ull }}, {{ 0x8e85c2df0a762184ull, 0x72e6aa82a8b4fe71ull, 0x9f886026da11b873ull, 0x706c2167573b2ac0ull, 0xacf3471213d69c00ull, 0xa62d5099e99d1b6eull }}, {{ 0x91399cb6689d4f29ull, 0x7d02a91a9711f06full, 0x3b53c18484b13482ull, 0x64394e09684fab86ull, 0xc180c6b4c6621804ull, 0x7dc5260320231252ull }}, {{ 0xac401f2016251799ull, 0xe21a9b09e6b3645bull, 0x51458f2d2eec0d18ull, 0xea3d0c5e131cb33eull, 0x8f07c30fbfd4f02bull, 0xe9b37c1f415eb73bull }}, {{ 0xba813740dd72ebf5ull, 0xd50a0e630301eb94ull, 0x2cb797c3d53882f8ull, 0x26627bacbf1f006full, 0x964d9e9d7e5161b7ull, 0x2102d9388db32853ull }}, {{ 0x490c2888a67d3794ull, 0x52648fde1e1333cfull, 0xbf2beda654351db8ull, 0x7fd8d4bf77360457ull, 0xdf083226ef2dd127ull, 0x4a1c7c3588ff9343ull }}, {{ 0xda79955680e42bccull, 0x37ed9ead2cc00618ull, 0x77b7487f4a132933ull, 0xfe784f7aa81c2b6dull, 0xb651f58557ca2b8aull, 0xe51cda1759fbc0a6ull }}, {{ 0x88bfd56108e9b5faull, 0x2f4832c3bf803cf8ull, 0xad28d4f8e4bf9c00ull, 0xf0b31aca9119b246ull, 0x1f3397356de5b36dull, 0xf32084e983d58683ull }}, {{ 0x577e55ca59211bc2ull, 0xd8d1fba57b0261b5ull, 0xc39851b8ef7c1801ull, 0x66ff0be9ab00f6c2ull, 0x3803e8164af9024bull, 0x7f45311f2657411full }}, {{ 0x6aef59e77b4b1598ull, 0x7833d476ce17d115ull, 0xa3f331395ad8f012ull, 0x05f67720ae09a39bull, 0x302710deedba16f2ull, 0xf8b3eb377f688b38ull }}, {{ 0x2d59830ad0eed7f2ull, 0xb2064ca40cee2ad6ull, 0x677fec3d8c7960b8ull, 0x3ba0a746cc606414ull, 0xe186a8b54944e574ull, 0xb707302afa157031ull }}, {{ 0xc57f1e6c29546f74ull, 0xf43efe68814dac5dull, 0x0aff3a677cbdc736ull, 0x544688c3fbc3e8ccull, 0xcf429714dcb0f68aull, 0x2647e1adc4d661f2ull }}, {{ 0xb6f730399d4c5a85ull, 0x8a75f0150d08bba9ull, 0x6df8480adf69c825ull, 0x4ac157a7d5a717f8ull, 0x1899e6d09ee9a167ull, 0x7eced0c9b05fd37cull }}, {{ 0x25a7e24024fb8932ull, 0x689b60d2825754a1ull, 0x4bb2d06cba21d177ull, 0xeb8d6c8e5886efb4ull, 0xf603042635204e08ull, 0xf41427e0e3be42d8ull }}, {{ 0x788ed68171d35bf4ull, 0x1611c83917694e4bull, 0xf4fc243f45522eaaull, 0x33863d8f75455d0aull, 0x9c1e297e13430c59ull, 0x88c98ec8e56e9c79ull }}, {{ 0xb594610e72419789ull, 0xdcb1d23aea1d0ef2ull, 0x91d96a78b535d2a4ull, 0x033e679a94b5a26dull, 0x192d9eecc09e7b7cull, 0x57df93d8f6521cc0ull }}, {{ 0x17cbca90768feb5bull, 0x9ef2364d2522957bull, 0xb27e28b7141a3a70ull, 0x20700c09cf185847ull, 0xfbc8353f8630d2d8ull, 0x6ebbc6799f351f80ull }}, {{ 0xedf5e9a4a19f318eull, 0x35761f037359d6ceull, 0xf8ed9726c9064866ull, 0x4460786216f372ccull, 0xd5d2147b3de83c71ull, 0x5355c0c038133b09ull }}, {{ 0x4b9b206e5037ef8full, 0x169d362281826415ull, 0xb947e783da3ed3feull, 0xabc4b3d4e5827c01ull, 0x5a34ccd06b125c6cull, 0x4159878230c04e62ull }}, {{ 0xf40f444f222f5b98ull, 0xe2241d590f17e8d4ull, 0x3ccf0b26867447ecull, 0xb5af0650f718d811ull, 0x861000242eb79c3eull, 0x8d7f4b15e7830fd7ull }}, {{ 0x8898ab1755d993ecull, 0xd569257a96ef1851ull, 0x60166f81408acf40ull, 0x18d63f29a6f870acull, 0x3ca00169d32c1a73ull, 0x86f8eedb0b1e9e6bull }}, {{ 0x55f6aee95a7fc734ull, 0x561b76c9e556f32full, 0xc0e05b0c856c1888ull, 0xf85e77a085b466bbull, 0x5e400e223fb9087eull, 0x45b9548e6f323030ull }}, {{ 0x5ba2d51d88fdc80cull, 0x5d12a3e2f5657fd9ull, 0x88c38e7d3638f553ull, 0xb3b0ac45390c0355ull, 0xae808d567d3a54f5ull, 0xb93d4d9057f5e1e3ull }}, {{ 0x945c532759e9d073ull, 0xa2ba66dd95f6fe7dull, 0x57a390e41e399541ull, 0x04e6bab43a782157ull, 0xd1058560e4475199ull, 0x3c6507a36f9ad2e4ull }}, {{ 0xcb9b3f8983222481ull, 0x5b4804a7dba5f0e7ull, 0x6c63a8e92e3fd490ull, 0x31034b0a48b14d69ull, 0x2a3735c8eac92ffaull, 0x5bf24c625c0c3cf0ull }}, {{ 0xf4107b5f1f556d07ull, 0x90d02e8e947b690dull, 0x3be4991bce7e4da3ull, 0xea20ee66d6ed061eull, 0xa62819d92bdbdfc5ull, 0x9776fbd7987a6161ull }}, {{ 0x88a4d1b73956424aull, 0xa821d191ccd21a8bull, 0x56edfb1610ef0863ull, 0x2549500465423d2eull, 0x7d91027bb696bdbbull, 0xeaa5d66bf4c7cdd0ull }}, {{ 0x567031283d5e96e6ull, 0x91522fb200350973ull, 0x654bcedca95653e4ull, 0x74dd202bf49663cfull, 0xe7aa18d521e3694full, 0x2a7a60378fce0a24ull }}, {{ 0x6061eb9265b1e4fcull, 0xad35dcf402125e81ull, 0xf4f6149e9d5f46edull, 0x90a341b78ddfe619ull, 0x0ca4f85352e21d1aull, 0xa8c7c22b9e0c6571ull }}, {{ 0xc3d333b7f8f2f1d7ull, 0xc41aa18814b7b10dull, 0x919cce3225b8c548ull, 0xa660912b8abefd03ull, 0x7e71b3413cd52309ull, 0x97cd95b42c7bf66aull }}, {{ 0xa640052fb97d7266ull, 0xa90a4f50cf2cea89ull, 0xb0200df57937b4d7ull, 0x7fc5abb36b75e223ull, 0xf071008c60535e60ull, 0xee07d909bcd7a028ull }}, {{ 0x7e8033dd3ee67801ull, 0x9a67192817c12960ull, 0xe1408b96bc2d106cull, 0xfdb8b502329ad564ull, 0x646a057bc341afc4ull, 0x4c4e7a61606c4199ull }}, {{ 0xf10206a47500b008ull, 0x0806fb90ed8b9dc4ull, 0xcc8573e359c2a43eull, 0xe9371215fa0c55f0ull, 0xec2436d5a090ddb1ull, 0xfb10c7cdc43a8ffdull }}, {{ 0x6a14426c9206e055ull, 0x5045d3a9477429b1ull, 0xfd3686e1819a6a6cull, 0x1c26b4dbc47b5b67ull, 0x396a245845a8a8f3ull, 0xcea7ce09aa499febull }}, {{ 0x24ca983db444c34eull, 0x22ba449cca89a0eeull, 0xe42144cf1008283bull, 0x19831095acd1920full, 0x3e256b72b896997full, 0x128e0c60a6e03f30ull }}, {{ 0x6fe9f2690aafa10full, 0x5b46ae1fe960494dull, 0xe94cb016a051924full, 0xff1ea5d8c02fb49eull, 0x6d76327b35e1fef6ull, 0xb98c7bc684c277e2ull }}, {{ 0x5f23781a6adc4a98ull, 0x90c2cd3f1dc2dd06ull, 0x1cfee0e2432fb719ull, 0xf7327a7781dd0e35ull, 0x469df8d01ad3f5a5ull, 0x3f7cd5c12f98aed8ull }}, {{ 0xb762b1082c9ae9f1ull, 0xa79c0477299ca23full, 0x21f4c8d69fdd26ffull, 0xa7f8c8ab12a28e13ull, 0xc22bb8210c47987bull, 0x7ae0598bdbf6d472ull }}, {{ 0x29daea51be0d2365ull, 0x8c182ca7a01e567dull, 0x538fd8623ea385fcull, 0x8fb7d6aeba598cbfull, 0x95b5314a7acbf4d4ull, 0xccc37f7697a44c7bull }}, {{ 0xa28d27316c8361f4ull, 0x78f1be8c412f60e3ull, 0x439e73d672633bddull, 0x9d2e62d3477f7f79ull, 0xd913ece8cbf7904dull, 0xffa2faa1ec6afcd3ull }}, {{ 0x598387ee3d21d384ull, 0xb971717a8bd9c8e4ull, 0xa430866077e056a6ull, 0x23cfdc40cafafabcull, 0x7ac74117f7aba308ull, 0xfc5dca533c2de046ull }}, {{ 0x7f234f4e63524328ull, 0x3e6e6ec97681d8ebull, 0x69e53fc4aec36283ull, 0x661e9a87edcdcb5eull, 0xcbc88aefacb45e51ull, 0xdba9e74059cac2c0ull }}, {{ 0xf761190fe1369f8eull, 0x705053dea1127932ull, 0x22f47daed3a1d920ull, 0xfd32094f4a09f1b0ull, 0xf5d56d5cbf0baf2dull, 0x94a3088381eb9b87ull }}, {{ 0xa9cafa9ecc223b88ull, 0x632346b24ab8bbfdull, 0x5d8ce8d444527b44ull, 0xe3f45d18e46370e1ull, 0x9a56459f7674d7cbull, 0xce5e55231334134full }}, {{ 0xa1edca33f9565351ull, 0xdf60c2f6eb3757e8ull, 0xa781184aab38d0abull, 0xe78ba2f8ebe268cdull, 0x075eb83aa0906df6ull, 0x0faf535ec008c11cull }}, {{ 0x5349e607bd5f4129ull, 0xb9c79da530296f16ull, 0x8b0af2eab03826b6ull, 0x0b745db936d81808ull, 0x49b3324a45a44ba5ull, 0x9cd941b380578b18ull }}, {{ 0x40e2fc4d65b88b9cull, 0x41cc2873e19e56dfull, 0x6e6d7d2ae2318323ull, 0x728ba93c2470f055ull, 0xe0fff6e6b86af472ull, 0x207c9103036b6ef2ull }}, {{ 0x88dddb05f9357416ull, 0x91f99486d02f64b8ull, 0x5046e3acd5ef1f60ull, 0x79749c596c696356ull, 0xc9ffa503342d8c78ull, 0x44ddaa1e2232557cull }}, {{ 0x58aa8e3bbc1688dfull, 0xb3bfcd4421d9ef35ull, 0x22c4e4c05b5739c5ull, 0xbe8e1b7e3c1de15full, 0xe3fc722009c77cb4ull, 0xb0a8a52d55f756dfull }}, {{ 0x76a98e5558e158b6ull, 0x057e04a952835815ull, 0x5bb0ef83916841b9ull, 0x718d12ee592acdb7ull, 0xe7dc754061cadf0full, 0xe69673c55ba964beull }}, {{ 0xa29f8f5578cd7719ull, 0x36ec2e9d392170d6ull, 0x94e95b23ae12913aull, 0x6f82bd4f7bac0929ull, 0x0e9c9483d1ecb69aull, 0x01e085b5949def75ull }}, {{ 0x5a3b9956b806a6f9ull, 0x2539d2243b4e6862ull, 0xd11d8f64ccb9ac46ull, 0x5b1b651ad4b85b9full, 0x921dcd26333f2208ull, 0x12c53917ce2b5a92ull }}, {{ 0x8653fd63304285b8ull, 0x7442356a511013d7ull, 0x2b2799efff40babdull, 0x8f11f30c4f33943eull, 0xb52a037e00775453ull, 0xbbb43aee0db189b9ull }}, {{ 0x3f47e5dfe2993934ull, 0x8a9616272aa0c66bull, 0xaf8c035ff8874b66ull, 0x96b37e7b1803ca6dull, 0x13a422ec04a94b43ull, 0x550a4d4c88ef6141ull }}, {{ 0x78cefabed9fc3c04ull, 0x69dcdd87aa47c030ull, 0xdb7821bfb548f201ull, 0xe302f0cef025e848ull, 0xc4695d382e9cf0a3ull, 0x526704fd5959cc8aull }}, {{ 0xb815cb7483da5827ull, 0x22a0a74ca6cd81e4ull, 0x92b1517d14d9740eull, 0xde1d6815617b12d8ull, 0xac1da431d2216666ull, 0x380631e57d81fd6bull }}, {{ 0x30d9f28d26877185ull, 0x5a4688fe840712efull, 0xbaed2ee2d07e888dull, 0xad2610d5cecebc75ull, 0xb92869f2354e0004ull, 0x303df2f6e713e634ull }}, {{ 0xe8837983814a6f2eull, 0x86c159f12846bd57ull, 0x4d43d4dc24f15585ull, 0xc37ca85a14135c99ull, 0x3b942376150c002eull, 0xe26b7da506c6fe0full }}, {{ 0x1522bf230ce857caull, 0x438d836b92c3656full, 0x04a65099716d5737ull, 0xa2de9384c8c19dfdull, 0x53c9629cd27801d3ull, 0xd832e87243c5ec98ull }}, {{ 0xd35b775e81136de9ull, 0xa3872233bba1f656ull, 0x2e7f25fe6e456828ull, 0x5cb1c32fd7902be2ull, 0x45ddda2038b01244ull, 0x71fd1476a5bb3df3ull }}, {{ 0x4192a9b10ac24b19ull, 0x6347560554539f64ull, 0xd0f77bf04eb61196ull, 0x9ef19fde6ba1b6d5ull, 0xbaaa854236e0b6abull, 0x73e2cca279506b80ull }}, {{ 0x8fbaa0ea6b96eefdull, 0xe0c95c354b4439eaull, 0x29aad763131cafdfull, 0x35703eb03451245aull, 0x4aa9349624c722b4ull, 0x86dbfe58bd243307ull }}, {{ 0x9d4a492833e555e4ull, 0xc7dd9a14f0aa4329ull, 0xa0ac69debf1edebeull, 0x166272e20b2b6b85ull, 0xea9c0ddd6fc75b0aull, 0x4497ef776369fe48ull }}, {{ 0x24e6db9206f55ae6ull, 0xcea804d166a69fa0ull, 0x46bc22b37734b373ull, 0xdfd87cd46fb23338ull, 0x2a188aa65dc98e64ull, 0xadef5aa9e223eed9ull }}, {{ 0x710493b445958cffull, 0x1290302e02823c41ull, 0xc3595b02a80f0286ull, 0xbe74e04c5cf60032ull, 0xa4f56a7fa9df8ff0ull, 0xcb598aa2d567547bull }}, {{ 0x6a2dc50ab7d781f8ull, 0xb9a1e1cc19165a8eull, 0xa17d8e1a9096193cull, 0x7090c2fba19c01fbull, 0x719628fca2bb9f67ull, 0xf17f6a5c56094cd4ull }}, {{ 0x25c9b26b2e6b13b3ull, 0x4052d1f8fadf8990ull, 0x4ee78d09a5dcfc5full, 0x65a79dd4501813d4ull, 0x6fdd99de5b543a0aull, 0x6efa279b5c5d004cull }}, {{ 0x79e0f82fd02ec4feull, 0x833c33b9ccbb5fa1ull, 0x150b82607aa1dbb8ull, 0xf88c2a4b20f0c64bull, 0x5ea802af914a4467ull, 0x55c58c119ba202fcull }}, {{ 0xc2c9b1de21d3b1e9ull, 0x205a0541ff51bc4eull, 0xd27317c4ca529535ull, 0xb579a6ef4967beeeull, 0xb2901adbace6ac0full, 0x59b778b014541ddbull }}, {{ 0x9be0f2ad5244f317ull, 0x43843493f9315b13ull, 0x387eedafe739d413ull, 0x16c08558de0d7554ull, 0xf9a10c94c102b89dull, 0x812ab6e0cb492a94ull }}, {{ 0x16c97ac536b17ee5ull, 0xa32a0dc7bbed8ec4ull, 0x34f548df084248c0ull, 0xe3853578ac86954aull, 0xc04a7dcf8a1b3622ull, 0x0bab24c7f0dba9d1ull }}, {{ 0xe3decbb422eef4f7ull, 0x5fa489cd574793a8ull, 0x1194d8b65296d786ull, 0xe33416b6bd41d4e6ull, 0x82e8ea1b65101d5cull, 0x74af6fcf6894a231ull }}, {{ 0xe6b3f5095d5591a3ull, 0xbc6d620568cbc498ull, 0xafd0771f39e46b3full, 0xe008e323649250fcull, 0x1d192511f2a125a0ull, 0x8eda5e1a15ce55efull }}, {{ 0x0307925da557b060ull, 0x5c45d43617f5adf9ull, 0xde24a73842ec307dull, 0xc058df61edb729deull, 0x22fb72b37a4b7848ull, 0x9487ad04da0f5b57ull }}, {{ 0x1e4bb7a8756ce3c2ull, 0x9aba4a1cef98cbbaull, 0xad6e88329d39e4e5ull, 0x8378b9d34927a2b4ull, 0x5dd27b02c6f2b2d7ull, 0xcd4cc23084999167ull }}, {{ 0x2ef52c949640e593ull, 0x0b46e5215bf7f545ull, 0xc65151fa2442f0f8ull, 0x22b74240db8c5b0eull, 0xaa38ce1bc57afc6bull, 0x04ff95e52dffae09ull }}, {{ 0xd593bdcdde88f7c0ull, 0x70c4f34d97af94b3ull, 0xbf2d33c56a9d69b0ull, 0x5b289688937b8e93ull, 0xa6380d15b6cddc2full, 0x31fbdaf3cbfccc60ull }}, {{ 0x57c56a0ab159ad80ull, 0x67b18107ecdbcf06ull, 0x77c405b62a2620e4ull, 0x8f95e155c2d391c5ull, 0x7e3082d9240a99d9ull, 0xf3d68d85f7dffbc6ull }}, {{ 0x6db6246aed80c704ull, 0x0cef0a4f4096163full, 0xada8391da57d48ecull, 0x9bdacd599c43b1b6ull, 0xede51c7b686a027full, 0x8661873baebfd5c0ull }}, {{ 0x491d6c2d4707c62bull, 0x8156671885dcde7aull, 0xc8923b2876e4d938ull, 0x168c05801aa4f122ull, 0x4af31cd2142418fcull, 0x3fcf4854d37e5989ull }}, {{ 0xdb2639c4c64dbdadull, 0x0d6006f53aa0b0c6ull, 0xd5b64f94a4f07c35ull, 0xe17837010a716b5bull, 0xed7f2034c968f9d8ull, 0x7e18d35042ef7f5cull }}, {{ 0x8f7e41afbf0968c0ull, 0x85c045944a46e7c4ull, 0x591f1bce7164da12ull, 0xceb2260a686e3196ull, 0x46f7420fde19c278ull, 0xecf841229d5af9a1ull }}, {{ 0x9aee90dd765e177eull, 0x3982b7cae6c50dadull, 0x7b3716106df084b9ull, 0x12f57c68144defdfull, 0xc5a8949ead0198b8ull, 0x41b28b5a258dc04cull }}, {{ 0x0d51a8a69faceaf1ull, 0x3f1b2ded03b288c8ull, 0xd026dca44b652f3cull, 0xbd96dc10cb0b5ebaull, 0xb895ce32c20ff730ull, 0x90f97185778982ffull }}, {{ 0x853096823cc12d69ull, 0x770fcb4224f957d0ull, 0x21849e6af1f3d85aull, 0x67e498a7ee71b34cull, 0x35da0dfb949fa7e7ull, 0xa9be6f36ab5f1dfdull }}, {{ 0x33e5e1165f8bc618ull, 0xa69df09571bd6e25ull, 0x4f2e302d73867388ull, 0x0eedf68f507100f9ull, 0x1a848bd3ce3c8f0aull, 0xa1705822b1b72be4ull }}, {{ 0x06facadfbb75bcf5ull, 0x822b65d671664d74ull, 0x17cde1c683408356ull, 0x954ba199246a09bdull, 0x092d76460e5d9664ull, 0x4e63715af127b6e9ull }}, {{ 0x45cbecbd5299618eull, 0x15b1fa606dff0688ull, 0xee0ad1c120852161ull, 0xd4f44ffb6c246162ull, 0x5bc69ebc8fa7dfedull, 0x0fe26d8d6b8d251aull }}, {{ 0xb9f73f6539fdcf90ull, 0xd8f3c7c44bf64152ull, 0x4c6c318b45334dcaull, 0x518b1fd2396bcdddull, 0x95c2335d9c8ebf4aull, 0x9ed8478633837307ull }}, {{ 0x43a879f443ea1b9bull, 0x7985cdaaf79e8d3bull, 0xfc39ef70b40109ecull, 0x2f6f3e363e360aa4ull, 0xd99601a81d9378e7ull, 0x3472cb3e03227e4bull }}, {{ 0xa494c38aa7251410ull, 0xbf3a08adac318450ull, 0xda435a67080a633cull, 0xda586e1e6e1c6a71ull, 0x7fdc109127c2b907ull, 0x0c7bf06c1f58eef6ull }}, {{ 0x6dcfa36a8772c8a5ull, 0x784456c8b9ef2b26ull, 0x86a188065067e05full, 0x87744d304d1c2872ull, 0xfe98a5ab8d9b3a4eull, 0x7cd76439397955a0ull }}, {{ 0x4a1c62294a7bd670ull, 0xb2ab63d74357af80ull, 0x424f503f240ec3baull, 0x4a8b03e303199479ull, 0xf1f678b388104711ull, 0xe069ea3c3ebd5849ull }}, {{ 0xe51bd59ce8d6605eull, 0xfab1e668a16cdb02ull, 0x971922776893a54aull, 0xe96e26de1effccbcull, 0x73a0b70350a2c6acull, 0xc423265a736572e3ull }}, {{ 0xf3165821185fc3a7ull, 0xcaf300164e408e1cull, 0xe6fb58aa15c474edull, 0x1e4d84ad35fdff5dull, 0x84472621265bc2c1ull, 0xa95f7f8881f67ce2ull }}, {{ 0x7edf714af3bda489ull, 0xed7e00df0e858d21ull, 0x05d176a4d9ac9149ull, 0x2f072ec41bebf9abull, 0x2ac77d4b7f959b8bull, 0x9dbafb5513a0e0d9ull }}, {{ 0xf4ba6ced85686d56ull, 0x46ec08b69137834eull, 0x3a2ea27080bdace3ull, 0xd647d3a91737c0aeull, 0xabcae4f2fbd8136full, 0x294dd152c448c87bull }}, {{ 0x8f4841473614455aull, 0xc5385721ac2b2115ull, 0x45d258650768c0e0ull, 0x5ece449ae82d86ceull, 0xb5ecf17dd670c25eull, 0x9d0a2d3baad7d4d4ull }}, {{ 0x98d28cc81ccab587ull, 0xb4336750b9af4ad7ull, 0xba3773f24a1788c7ull, 0xb40eae0d11c7440eull, 0x1b416eea606797afull, 0x2265c454ac6e504full }}, {{ 0xf8397fd11feb1749ull, 0x0a02092740d8ec6bull, 0x462a8776e4eb57cdull, 0x0892cc82b1c8a893ull, 0x108e5527c40becddull, 0x57f9ab4ebc4f2317ull }}, {{ 0xb23efe2b3f2ee8daull, 0x64145b8888793c37ull, 0xbda94aa4f1316e02ull, 0x55bbfd1af1d695c0ull, 0xa58f538da87740a2ull, 0x6fc0b1135b175ee6ull }}, {{ 0xf675edb077d51885ull, 0xe8cb935554bc5a2cull, 0x689cea716bee4c17ull, 0x5957e30d7261d987ull, 0x7799438894a88657ull, 0x5d86eac18ee9b502ull }}, {{ 0xa09b48e4ae52f52full, 0x17f3c1554f5b85c1ull, 0x1621286e374ef8efull, 0x7d6ede8677d27f4aull, 0xabfca355ce953f69ull, 0xa7452b8f95211218ull }}, {{ 0x4610d8eecf3d93d4ull, 0xef858d5519933990ull, 0xdd4b944e2915b956ull, 0xe654b140ae38f8e4ull, 0xb7de615a11d47a1eull, 0x88b3b39bd34ab4f6ull }}, {{ 0xbca879541867c64bull, 0x5b378552ffc03fa2ull, 0xa4f3cb0d9ad93d65ull, 0xff4eec86ce39b8f0ull, 0x2eafcd84b24cc534ull, 0x5705041640eb11a3ull }}, {{ 0x5e94bd48f40dbeeaull, 0x902b353dfd827c5bull, 0x7185ee880c7c65f5ull, 0xf9153d440e413966ull, 0xd2de072ef6ffb411ull, 0x663228de892eb05full }}, {{ 0xb1cf64d988897522ull, 0xa1b0146be718db91ull, 0x6f3b51507cdbfb97ull, 0xbad464a88e8c3e00ull, 0x3cac47d5a5fd08b3ull, 0xfdf598b15bd2e3beull }}, {{ 0xf219f07f555e9351ull, 0x50e0cc3706f893b0ull, 0x58512d24e097d3ecull, 0x4c4bee95917a6c04ull, 0x5ebace587be25705ull, 0xeb97f6ed963ce56eull }}, {{ 0x750364f955b1c127ull, 0x28c7fa2645b5c4e9ull, 0x732bc370c5ee473bull, 0xfaf751d7aec8382bull, 0xb34c0f74d6d76634ull, 0x33efa547de60f64full }}, {{ 0x9221f1bd58f18b87ull, 0x97cfc57eb919b11eull, 0x7fb5a267bb4ec84full, 0xcda9326cd3d231b2ull, 0x00f89a906469fe11ull, 0x075c74ceafc99f1dull }}, {{ 0xb5537165796f7349ull, 0xee1db6f33b00eb31ull, 0xfd18580d5113d31bull, 0x089bf8404635f0f8ull, 0x09b609a3ec23ecb2ull, 0x499c9012dde03722ull }}, {{ 0x15426df6be5a80daull, 0x4d2925804e092ff1ull, 0xe2f370852ac63f17ull, 0x5617b282be1b69b9ull, 0x611c606739673ef4ull, 0xe01da0bcaac22754ull }}, {{ 0xd4984ba36f890883ull, 0x039b77030c5bdf6aull, 0xdd826533abbe76e9ull, 0x5cecf91b6d122142ull, 0xcb1bc4083e08758bull, 0xc128475eab95894bull }}, {{ 0x4df2f4625b5a551eull, 0x2412a61e7b96ba2cull, 0xa717f404b570a51aull, 0xa141bb1242b54c9cull, 0xef15a8526c549771ull, 0x8b92c9b2b3d75cf5ull }}, {{ 0x0b7d8bd79187532dull, 0x68ba7d30d3e345bbull, 0x86ef882f16667305ull, 0x4c914eb69b14fe1eull, 0x56d893383b4dea70ull, 0x73bbe0fb0669a19bull }}, {{ 0x72e7766baf493fc0ull, 0x1748e3e846e0b94eull, 0x455b51d6e0007e36ull, 0xfdad13220ed1ed31ull, 0x6475c032510b2862ull, 0x8556c9ce40205011ull }}, {{ 0x7d0aa034d8dc7d81ull, 0xe8d8e712c4c73d10ull, 0xb5913264c004ee1cull, 0xe8c2bf54943343ecull, 0xec9981f72a6f93ddull, 0x3563e20e814320adull }}, {{ 0xe26a4210789ce708ull, 0x187906bbafc862a4ull, 0x17abf7ef80314d21ull, 0x179b794dca00a73full, 0x3dff13a7a85bc6abull, 0x15e6d4910c9f46cbull }}, {{ 0xd82694a4b6210654ull, 0xf4ba4354ddd3da70ull, 0xecb7af5b01ed034aull, 0xec12bd09e4068876ull, 0x6bf6c48c9395c2aeull, 0xdb044daa7e38c3f0ull }}, {{ 0x7181ce6f1d4a3f47ull, 0x8f46a150aa468868ull, 0x3f2cd98e134220edull, 0x38bb6262e84154a5ull, 0x37a3ad7dc3d99ad5ull, 0x8e2b08a8ee37a764ull }}, {{ 0x6f12105724e678c2ull, 0x98c24d26a6c15414ull, 0x77c07f8cc0954947ull, 0x3751d7dd128d4e74ull, 0x2c64c6e9a6800c54ull, 0x8dae56994e2c89eaull }}, {{ 0x56b4a3677100b791ull, 0xf7970382838d48ccull, 0xad84fb7f85d4dccbull, 0x29326ea2b985108cull, 0xbbefc52081007b4aull, 0x88cf61fd0dbd6325ull }}, {{ 0x630e620a6a072ba6ull, 0xabe623192384d7fbull, 0xc731d2fb3a509ff7ull, 0x9bf8525b3f32a57eull, 0x575db3450a04d0e5ull, 0x5819d3e28965df79ull }}, {{ 0xde8fd4682447b47aull, 0xb6fd5efb63306fd1ull, 0xc7f23dd047263facull, 0x17b3379077fa76f3ull, 0x69a900b2643028f8ull, 0x710246d95dfababdull }}, {{ 0xb19e4c116acd0cc7ull, 0x25e5b5d1dfe45e32ull, 0xcf766a22c77e7cbfull, 0xed002ba4afc8a585ull, 0x209a06f7e9e199b0ull, 0x6a16c47dabcb4b66ull }}, {{ 0xf02ef8ae2c027fcaull, 0x7af91a32beebadfaull, 0x1aa0255bcaf0df77ull, 0x4201b46eddd6773aull, 0x460445af22d000e9ull, 0x24e3ace8b5f0f1fdull }}, {{ 0x61d5b6cdb818fde7ull, 0xcdbb05fb7534cbcdull, 0x0a417595ed68baaaull, 0x94110c54aa60a845ull, 0xbc2ab8d75c20091cull, 0x70e4c1171b6973e4ull }}, {{ 0xd259240930f9eb03ull, 0x094e3bd2940ff605ull, 0x668e97db46174aacull, 0xc8aa7b4ea7c692b2ull, 0x59ab386999405b1dull, 0x68ef8ae7121e86efull }}, {{ 0x377b685be9c32e21ull, 0x5d0e5639c89f9c3aull, 0x0191ee90bce8eab8ull, 0xd6a8d1128dc1baf8ull, 0x80b0341ffc838f29ull, 0x195b6d06b5314559ull }}, {{ 0x2ad21397219fcd4bull, 0xa28f5e41d63c1a46ull, 0x0fb351a761192b33ull, 0x62982ab989914db0ull, 0x06e2093fdd2397a2ull, 0xfd92424313ecb57full }}, {{ 0xac34c3e7503e04ecull, 0x5999ae925e5906bdull, 0x9d013089cafbb004ull, 0xd9f1ab3f5fad08e0ull, 0x44d45c7ea363ec57ull, 0xe7b6969ec73f16f6ull }}, {{ 0xba0fa709226c3139ull, 0x8000d1b7af7a4368ull, 0x220be561edd4e02bull, 0x8370b079bcc258c6ull, 0xb04b9cf261e73b6eull, 0x0d21e233c876e59eull }}, {{ 0x449c865b5839ec3cull, 0x0008312cdac6a217ull, 0x5476f5d34a50c1b3ull, 0x2266e4c15f9777bdull, 0xe2f42177d3085251ull, 0x8352d605d4a4f832ull }}, {{ 0xae1d3f9172433a55ull, 0x0051ebc08bc254e8ull, 0x4ca59a40e72790feull, 0x5804ef8dbbeaad65ull, 0xdd894eae3e53372bull, 0x213c5c3a4e71b1fcull }}, {{ 0xcd247bae76a04755ull, 0x0333358575975116ull, 0xfe780689078ba9ecull, 0x70315b89572ac5f4ull, 0xa75d12ce6f4027b1ull, 0x4c5b9a471070f3e0ull }}, {{ 0x036cd4d0a242c94eull, 0x2000173697e92ae4ull, 0xf0b0415a4b74a338ull, 0x61ed935d67abbb91ull, 0x89a2bc1058818ceeull, 0xfb9406c6a46986c6ull }}, {{ 0x22405026569bdd0bull, 0x4000e821ef1bace8ull, 0x66e28d86f28e6031ull, 0xd347c1a60cb553b3ull, 0x605b58a3750f814full, 0xd3c843c26c1f43c1ull }}, {{ 0x5683217f6216a271ull, 0x800911535714c111ull, 0x04d98745798fc1ecull, 0x40cd907c7f154502ull, 0xc3917662929b0d1eull, 0x45d2a5983938a58dull }}, {{ 0x611f4ef9d4e25867ull, 0x005aad4166cf8aadull, 0x307f48b6bf9d933dull, 0x8807a4dcf6d4b214ull, 0xa3ae9fd9ba0e832eull, 0xba3a77f23c367789ull }}, {{ 0xcb3915c250d7740aull, 0x038ac48e041b6ac5ull, 0xe4f8d7237c27c062ull, 0x504c70a1a44ef4c9ull, 0x64d23e8144911fd1ull, 0x4648af765a20ab60ull }}, {{ 0xf03ad997286a8868ull, 0x236bad8c29122bb9ull, 0xf1b86762d98d83d4ull, 0x22fc66506b158fe2ull, 0xf036710cadab3e2dull, 0xbed6da9f8546b1c3ull }}, {{ 0x624c7fe79429540cull, 0x6234c7799ab5b543ull, 0x713409dc7f872649ull, 0x5ddbff242ed79eddull, 0x62206a7ec8b06dc3ull, 0x74648a3b34c2f1a7ull }}, {{ 0xd6fcff0bc99d4874ull, 0xd60fcac00b1914a1ull, 0x6c08629cfb477eddull, 0xaa97f769d46c34a6ull, 0xd54428f3d6e449a1ull, 0x8bed66500f9d7089ull }}, {{ 0x65e1f675e024d486ull, 0x5c9deb806eface52ull, 0x3853da21d0caf4aaull, 0xa9efaa224c3a0e80ull, 0x54a9998664eae050ull, 0x7745ff209c266562ull }}, {{ 0xfad3a09ac1704d3full, 0x9e2b330455cc0f37ull, 0x3346855227ed8ea7ull, 0xa35ca556fa449102ull, 0x4e9fff3ff12cc326ull, 0xa8bbf746197ff5d7ull }}, {{ 0xcc44460b8e630479ull, 0x2daffe2b59f8982full, 0x00c135358f47928cull, 0x619e7565c6adaa16ull, 0x123ff87f6bbf9f82ull, 0x9757a8bcfeff9a69ull }}, {{ 0xfaaabc738fde2cb9ull, 0xc8dfedb183b5f1ddull, 0x078c141798cbb979ull, 0xd03095f9c2c8a4dcull, 0xb67fb4fa357c3b17ull, 0xe96c9761f5fc081aull }}, {{ 0xcaab5c839eadbf3aull, 0xd8bf48ef251b72abull, 0x4b78c8ebf7f53ec1ull, 0x21e5dbc19bd67098ull, 0x20fd11c616da4eeeull, 0x1e3de9d39bd8510bull }}, {{ 0xeab19d2432c97847ull, 0x7778d95773127ab5ull, 0xf2b7d937af947392ull, 0x52fa9590166065f2ull, 0x49e2b1bce487154dull, 0x2e6b224416732a6full }}, {{ 0x2af02369fbdeb2c8ull, 0xaab87d6a7eb8cb1bull, 0x7b2e7c2cdbcc83b8ull, 0x3dc9d7a0dfc3fb7dull, 0xe2daf160ed46d505ull, 0xd02f56a8e07fa858ull }}, {{ 0xad616223d6b2fbccull, 0xab34e628f337ef0full, 0xcfd0d9c095fd2536ull, 0x69e26c48bda7d2e6ull, 0xdc8d6dc944c45234ull, 0x21d96298c4fc9378ull }}, {{ 0xc5cdd56662fdd5f3ull, 0xb010fd99802f569cull, 0x1e288185dbe37422ull, 0x22d83ad7688e3d04ull, 0x9d8649dcafab360cull, 0x527dd9f7b1ddc2b8ull }}, {{ 0xba0a55ffddea5b7full, 0xe0a9e7ff01d9621full, 0x2d950f3a96e2895aull, 0x5c724c6a158e6229ull, 0x273ee29edcb01c79ull, 0x38ea83acf2a99b36ull }}, {{ 0x44675bfeab2792f9ull, 0xc6a30ff6127dd53dull, 0xc7d29849e4d95d8cull, 0x9c76fc24d78fd59bull, 0x8874da349ee11cbdull, 0x392924c17aa0101dull }}, {{ 0xac0997f2af8bbdbbull, 0xc25e9f9cb8ea5464ull, 0xce39f2e2f07da77full, 0x1ca5d9706b9e5815ull, 0x5490860e34cb1f68ull, 0x3b9b6f8eca40a127ull }}, {{ 0xb85fef7adb75694cull, 0x97b23c1f39274beeull, 0x0e437cdd64e88afdull, 0x1e7a7e64342f70daull, 0x4da53c8e0fef3a11ull, 0x54125b93e6864b89ull }}, {{ 0x33bf5acc92961cfcull, 0xecf659383b88f753ull, 0x8ea2e0a5f1156de7ull, 0x30c8efea09da6884ull, 0x08745d8c9f5844abull, 0x48b793c7013ef35dull }}, {{ 0x05798bfdb9dd21d6ull, 0x419f7c325359a940ull, 0x925cc67b6ad64b0full, 0xe7d95f246288152dull, 0x548ba77e3972aeafull, 0xd72bc5c60c7581a2ull }}, {{ 0x36bf77e942a3525cull, 0x903ad9f741809c80ull, 0xb79fc0d22c5eee98ull, 0x0e7db76bd950d3c7ull, 0x4d748aee3e7ad2dfull, 0x67b5b9bc7c971057ull }}, {{ 0x237aaf1c9a613793ull, 0xa24c83a88f061d02ull, 0x2c3d8835bbb551f5ull, 0x90e92a367d2845cdull, 0x068d6d4e70cc3cb6ull, 0x0d19415cdde6a369ull }}, {{ 0x62cad71e07cc2bc3ull, 0x56fd2495963d2215ull, 0xba67521955153398ull, 0xa91ba620e392ba03ull, 0x4186451067fa5f21ull, 0x82fc8da0ab02621aull }}, {{ 0xdbec672c4df9b599ull, 0x65e36dd7de6354d5ull, 0x480934fd52d403f3ull, 0x9b147d48e3bb4425ull, 0x8f3eb2a40fc7b750ull, 0x1ddd8846ae17d506ull }}, {{ 0x973c07bb0bc117fbull, 0xfae24a6eafe1505aull, 0xd05c11e53c482781ull, 0x0ecce4d8e550a974ull, 0x9872fa689dcd2926ull, 0x2aa752c2ccee5241ull }}, {{ 0xe8584d4e758aefd2ull, 0xccd6e852decd2389ull, 0x2398b2f45ad18b13ull, 0x9400f078f5269e90ull, 0xf47dc8162a039b7cull, 0xaa893b9c014f368full }}, {{ 0x13730510976d5e36ull, 0x0065133cb4036363ull, 0x63f6fd8b8c2f6ec6ull, 0xc80964b9938231a1ull, 0x8ce9d0dda42412ddull, 0xa95c54180d18219full }}, {{ 0xc27e32a5ea45ae20ull, 0x03f2c05f0821e1deull, 0xe7a5e77379da53bcull, 0xd05def3fc315f04dull, 0x812228a86968bca9ull, 0x9d9b48f082f1503bull }}, {{ 0x98edfa7b26b8cd45ull, 0x277b83b65152d2b3ull, 0x0c7b0a82c2874558ull, 0x23ab587d9edb630bull, 0x0b5596941e175ea2ull, 0x2810d9651d6d2253ull }}, {{ 0xf94bc8cf833804afull, 0x8ad3251f2d3c3b03ull, 0x7cce691b9948b571ull, 0x64b174e83491de6eull, 0x7157e1c92ce9b255ull, 0x90a87df32643573eull }}, {{ 0xbcf5d81b20302ed5ull, 0x6c3f7337c45a4e27ull, 0xe0101b13fcd7166full, 0xeeee91120db2b050ull, 0x6d6ed1dbc120f755ull, 0xa694eb7f7ea16870ull }}, {{ 0x619a710f41e1d44full, 0x3a7a802dab870d8dull, 0xc0a10ec7e066e05aull, 0x5551aab488fae328ull, 0x465432958b49a95bull, 0x81d132faf24e1464ull }}, {{ 0xd0086a9892d24b15ull, 0x48c901c8b3468785ull, 0x864a93cec404c386ull, 0x5530ab0d59ccdf97ull, 0xbf49f9d770e09d91ull, 0x122bfdcd770ccbeaull }}, {{ 0x205429f5bc36eed6ull, 0xd7da11d700c14b3aull, 0x3ee9c613a82fa33eull, 0x53e6ae858200bbebull, 0x78e3c26a68c627adull, 0xb5b7ea06a67ff72bull }}, {{ 0x4349a3995a25545cull, 0x6e84b266078cf045ull, 0x7521bcc491dc6074ull, 0x4702d13714075730ull, 0xb8e5982817bd8cc5ull, 0x192f244280ffa7b2ull }}, {{ 0xa0e063fd85754b9aull, 0x512ef7fc4b8162b4ull, 0x93515fadb29bc48cull, 0xc61c2c26c84967e4ull, 0x38f7f190ed677fb4ull, 0xfbd76a9909fc8cfbull }}, {{ 0x48c3e7e73694f401ull, 0x2bd5afdaf30ddb0eull, 0xc12dbcc8fa15ad7bull, 0xbd19b983d2de0eedull, 0x39af6fa9460afd0full, 0xd66a29fa63dd81d0ull }}, {{ 0xd7a70f0821d1880dull, 0xb658de8d7e8a8e8eull, 0x8bc95fd9c4d8c6cfull, 0x63013f263cac9549ull, 0x40da5c9cbc6de29dull, 0x6025a3c7e6a71222ull }}, {{ 0x6c869651522f5084ull, 0x1f78b186f1699194ull, 0x75ddbe81b077c41dull, 0xde0c777e5ebdd4dfull, 0x88879e1f5c4ada25ull, 0xc17865cf0286b556ull }}, {{ 0x3d41df2d35d92527ull, 0x3ab6ef456e1fafccull, 0x9aa97110e4ada923ull, 0xac7caaefb36a50baull, 0x554c2d399aec857aull, 0x8eb3fa1619431561ull }}, {{ 0x6492b7c41a7b7386ull, 0x4b2558b64d3cddfaull, 0x0a9e6aa8eec89b60ull, 0xbcdead5d0227274aull, 0x54f9c4400d3d36caull, 0x9307c4dcfc9ed5cdull }}, {{ 0xedbb2da908d28337ull, 0xef75771f0460abc7ull, 0x6a302a9953d611c2ull, 0x60b2c5a2158788e4ull, 0x51c1aa80846423ebull, 0xbe4db0a1de345a05ull }}, {{ 0x494fc89a58392029ull, 0x5a96a7362bc6b5cfull, 0x25e1a9fd465cb19dull, 0xc6fbb854d74b58ecull, 0x3190a9052be96731ull, 0x6f08e652ae0b8435ull }}, {{ 0xdd1dd607723b4198ull, 0x89e2881db5c31a18ull, 0x7ad0a3e4bf9ef025ull, 0xc5d5335068f17939ull, 0xefa69a33b71e07f1ull, 0x5658ff3acc732a13ull }}, {{ 0xa32a5c4a76508fedull, 0x62d95129199f04f8ull, 0xcc2666ef7c356177ull, 0xba540124196ebc3eull, 0x5c820605272c4f71ull, 0x5f79f84bfc7fa4c7ull }}, {{ 0x5fa79ae89f259f44ull, 0xdc7d2b9b003631b6ull, 0xf980055ada15cea9ull, 0x47480b68fe535a73ull, 0x9d143c3387bb1a71ull, 0xbac3b2f7dcfc6fc9ull }}, {{ 0xbc8c0d16377838a8ull, 0x9ce3b40e021df11full, 0xbf00358c84da12a2ull, 0xc8d07219ef418887ull, 0x22ca5a034d4f086cull, 0x4ba4fdaea1dc5de0ull }}, {{ 0x5d7882de2ab23691ull, 0x20e5088c152b6b3dull, 0x7602177d3084ba5aull, 0xd8247503588f554dull, 0x5be784210516543full, 0xf471e8d2529baac1ull }}, {{ 0xa6b51cadaaf621adull, 0x48f25578d3b23065ull, 0x9c14eae3e52f4785ull, 0x716c922175995506ull, 0x970b294a32df4a7eull, 0x8c7318373a14ab8dull }}, {{ 0x83131ec8ad9d50beull, 0xd97756b844f5e3f8ull, 0x18d12ce6f3d8cb34ull, 0x6e3db54e97fd5242ull, 0xe66f9ce5fcb8e8f0ull, 0x7c7ef22844ceb387ull }}, {{ 0x1ebf33d6c825276full, 0x7ea96332b19ae7b5ull, 0xf82bc1058677f010ull, 0x4e691511efe53694ull, 0x005c20fbdf391964ull, 0xdcf57592b013034full }}, {{ 0x33780663d1738a51ull, 0xf29ddffaf00d0d13ull, 0xb1b58a3740af60a4ull, 0x101ad2b35ef421d1ull, 0x039949d6b83afdebull, 0xa19697bae0be2116ull }}, {{ 0x02b03fe62e83672aull, 0x7a2abfcd608282c0ull, 0xf117662886d9c671ull, 0xa10c3b01b5895230ull, 0x23fce263324deb2eull, 0x4fe1ed4cc76d4adcull }}, {{ 0x1ae27efdd12207a6ull, 0xc5ab7e05c5191b80ull, 0x6ae9fd954481c06eull, 0x4a7a4e11175d35e9ull, 0x67e0d7dff70b2fd2ull, 0x1ed344ffca44ec99ull }}, {{ 0x0cd8f5ea2b544c7eull, 0xb8b2ec39b2fb1301ull, 0x2d23e7d4ad118453ull, 0xe8c70caae9a41b1eull, 0x0ec86ebfa66fde36ull, 0x3440b1fde6b13dfeull }}, {{ 0x80799b25b14afcefull, 0x36fd3a40fdcebe0aull, 0xc3670e4ec2af2b45ull, 0x17c67ead20690f2dull, 0x93d4537c805eae25ull, 0x0a86f3eb02ec6becull }}, {{ 0x04c00f78ecede153ull, 0x25e44689ea136c69ull, 0xa2068f139ad7b0b4ull, 0xedc0f2c3441a97c9ull, 0xc64b42dd03b2cd72ull, 0x6945872e1d3c373dull }}, {{ 0x2f809ab9414acd39ull, 0x7aeac16324c23c1aull, 0x544196c40c6ce709ull, 0x49897ba0a909ede0ull, 0xbef09ca224fc067dull, 0x1cb747cd245a2869ull }}, {{ 0xdb060b3c8cec043dull, 0xcd2b8ddf6f965905ull, 0x4a8fe3a87c41065eull, 0xdf5ed4469a634ac3ull, 0x75661e5571d840e4ull, 0x1f28ce036b859421ull }}, {{ 0x8e3c705d81382a5eull, 0x03b38aba5bdf7a3aull, 0xe99ee494da8a3fb4ull, 0xb9b44ac207e0eba0ull, 0x95fd2f56727288f0ull, 0x37980c223337c94eull }}, {{ 0x8e5c63a70c31a7b1ull, 0x25036b4796bac649ull, 0x2034edd089667d08ull, 0x410aeb944ec93449ull, 0xdbe3d96078795967ull, 0x2bf07956002ddd11ull }}, {{ 0x8f9be48679f08ce9ull, 0x722230cbe34bbedfull, 0x42114a255e00e251ull, 0x8a6d33cb13dc0adbull, 0x96e67dc4b4bd7e08ull, 0xb764bd5c01caa2b2ull }}, {{ 0x9c16ed40c3658119ull, 0x7555e7f6e0f574bbull, 0x94ace575ac08d72eull, 0x684405eec6986c90ull, 0xe500e9af0f66ec55ull, 0x29ef659811ea5af9ull }}, {{ 0x18e54487a1f70af8ull, 0x955b0fa4c9968f54ull, 0xcec0f698b85867d0ull, 0x12a83b53c1f43da5ull, 0xf20920d69a053b56ull, 0xa359f7f0b3278dc2ull }}, {{ 0xf8f4ad4c53a66daeull, 0xd58e9c6fdfe19948ull, 0x1389a1f733740e25ull, 0xba925145938a687aull, 0x745b48620434515cull, 0x6183af66ff8b899dull }}, {{ 0xb98ec4fb448048cfull, 0x57921c5ebecffcd9ull, 0xc36053a802888d7aull, 0x49b72cb7c36814c4ull, 0x8b90d3d42a0b2d9full, 0xcf24da05fb736026ull }}, {{ 0x3f93b1d0ad02d815ull, 0x6bb51bb3741fe081ull, 0xa1c34490195586c7ull, 0xe127bf2da210cfafull, 0x73a84649a46fc838ull, 0x1770843bd281c181ull }}, {{ 0x7bc4f226c21c70d5ull, 0x35131502893ec50cull, 0x51a0ada0fd5743caull, 0xcb8d77c854a81cdcull, 0x8492bee06c5dd238ull, 0xea652a5639118f0eull }}, {{ 0xd5b17583951c6850ull, 0x12bed2195c73b27cull, 0x3046c849e568a5e6ull, 0xf386add34e91209bull, 0x2dbb74c43baa3637ull, 0x27f3a75e3aaf9691ull }}, {{ 0x58ee9723d31c131full, 0xbb7434fd9c84f8e0ull, 0xe2c3d2e2f6167afcull, 0x8342ca4111ab460full, 0xc9528faa54a61e2full, 0x8f8489ae4adbe1abull }}, {{ 0x7951e7663f18bf3aull, 0x528a11e81d31b8c3ull, 0xdba63cdd9ce0cddfull, 0x209be68ab0b0bc9eull, 0xdd399ca74e7d2ddbull, 0x9b2d60ceec96d0b5ull }}, {{ 0xbd3309fe76f77844ull, 0x3964b31123f137a2ull, 0x947e60a820c80ab9ull, 0x4617016ae6e75e34ull, 0xa4401e8910e3ca8full, 0x0fc5c8153de4271aull }}, {{ 0x63fe63f0a5aab2a5ull, 0x3deefeab676c2c5bull, 0xccefc69147d06b3cull, 0xbce60e2d0509ae0dull, 0x6a81315aa8e5e998ull, 0x9db9d0d46ae9870aull }}, {{ 0xe7efe76678aafa6full, 0x6b55f2b20a39bb91ull, 0x015dc1acce24305aull, 0x60fc8dc23260cc8aull, 0x290bed8a98fb1ff7ull, 0x2942284c2d1f4668ull }}, {{ 0x0f5f0a00b6adc855ull, 0x315b7af4664153b3ull, 0x0da990c00d69e388ull, 0xc9dd8995f7c7fd64ull, 0x9a774769f9cf3fa9ull, 0x9c9592f9c338c011ull }}, {{ 0x99b6640722c9d34full, 0xed92cd8bfe8d44feull, 0x889fa7808622e351ull, 0xe2a75fdbadcfe5e8ull, 0x08a8ca23c2187ca1ull, 0x1dd7bdc1a03780b0ull }}, {{ 0x011fe8475be24119ull, 0x47bc0777f184b1f2ull, 0x563c8b053d5ce133ull, 0xda89be94ca1efb15ull, 0x5697e56594f4de52ull, 0x2a6d6990422b06e0ull }}, {{ 0x0b3f12c996d68afaull, 0xcd584aaf6f2ef374ull, 0x5e5d6e3465a0cc00ull, 0x896171cfe535ced5ull, 0x61eef5f7d190af3cull, 0xa8461fa295ae44c3ull }}, {{ 0x7076bbdfe4616dc2ull, 0x0572eada57d58288ull, 0xafa64e0bf847f808ull, 0x5dce721ef41a1455ull, 0xd3559bae2fa6d85dull, 0x92bd3c59d8ceafa1ull }}, {{ 0x64a356beebce4995ull, 0x367d2c876e571954ull, 0xdc7f0c77b2cfb050ull, 0xaa1075358904cb58ull, 0x415814cddc8473a5ull, 0xbb645b827812dc52ull }}, {{ 0xee616375360edfd6ull, 0x20e3bd4a4f66fd4bull, 0x9cf67cacfc1ce322ull, 0xa4a494175a2ff178ull, 0x8d70d00a9d2c8478ull, 0x51eb9318b0bc9b36ull }}, {{ 0x4fcde2941c94be5eull, 0x48e564e71a05e4f7ull, 0x21a0dec1d920df55ull, 0x6e6dc8e985df6eb6ull, 0x8668206a23bd2cb6ull, 0x3333bef6e75e1021ull }}, {{ 0x1e0ad9c91dcf6faeull, 0xd8f5f107043af1a9ull, 0x5048b3927b48b954ull, 0x5049d91f3aba531dull, 0x401144256563bf20ull, 0x000575a509aca14full }}, {{ 0x2c6c81db2a1a5cd0ull, 0x799b6a462a4d709bull, 0x22d703b8d0d73d50ull, 0x22e27b384b473f25ull, 0x80aca975f5e57743ull, 0x0036987260be4d18ull }}, {{ 0xbc3d128fa507a020ull, 0xc01226bda706660full, 0x5c66253828686524ull, 0x5cd8d032f0c87773ull, 0x06be9e9b9af6a89full, 0x0221f477c76f02f5ull }}, {{ 0x5a62b99c724c413full, 0x80b58368863ffc9dull, 0x9bfd74319413f36full, 0xa07821fd67d4aa81ull, 0x437232140da29639ull, 0x15538cadca561d92ull }}, {{ 0x87db401c76fa8c72ull, 0x071722153e7fde25ull, 0x17e689efc8c7825bull, 0x44b153e60e4ea910ull, 0xa275f4c88859de40ull, 0xd5437ec9e75d27b6ull }}, {{ 0x4e90811ca5c97c77ull, 0x46e754d470fead77ull, 0xef01635dd7cb178eull, 0xaeed46fc8f129aa0ull, 0x589b8fd55382ae82ull, 0x54a2f3e309a38d22ull }}, {{ 0x11a50b1e79dedca9ull, 0xc509504c69f2c6a9ull, 0x560de1aa6deeeb8eull, 0xd544c5dd96ba0a49ull, 0x76139e55431ad11aull, 0x4e5d86de60638357ull }}, {{ 0xb0726f30c2b49e9cull, 0xb25d22fc237bc29aull, 0x5c8ad0a84b553393ull, 0x54afbaa7e34466ddull, 0x9cc42f549f0c2b0cull, 0x0fa744afc3e3216aull }}, {{ 0xe47857e79b0e3216ull, 0xf7a35dd962d59a0aull, 0x9d6c2692f15403c4ull, 0x4edd4a8ee0ac04a5ull, 0x1fa9d94e3679ae7bull, 0x9c88aedda6df4e2aull }}, {{ 0xecb36f0c0e8df4ddull, 0xac61aa7ddc58046cull, 0x263981bd6d4825b1ull, 0x14a4e994c6b82e78ull, 0x3ca27d0e20c0d0d1ull, 0x1d56d4a884b90da5ull }}, {{ 0x3f025678918b90a1ull, 0xbbd0a8ea9b702c41ull, 0x7e3f116644d178f0ull, 0xce711fcfc331d0b1ull, 0x5e58e28d4788282aull, 0x25644e952f3a8874ull }}, {{ 0x761760b5af73a649ull, 0x5626992a1261ba8cull, 0xee76adfeb02eb967ull, 0x106b3e1d9ff226eeull, 0xaf78d984cb5191acull, 0x75eb11d3d849548bull }}, {{ 0x9ce9c718da847ed6ull, 0x5d81fba4b7d1497cull, 0x50a2cbf2e1d33e09ull, 0xa4306d283f758555ull, 0xdab87f2ff12fb0b8ull, 0x9b2eb24672dd4d74ull }}, {{ 0x2121c6f8892cf45eull, 0xa713d46f2e2cdedeull, 0x265bf77cd2406c5dull, 0x69e443927a973555ull, 0x8b34f7df6bdce736ull, 0x0fd2f6c07ca50690ull }}, {{ 0x4b51c5b55bc18baaull, 0x86c64c57cdc0b4adull, 0x7f97aae036843ba8ull, 0x22eaa3b8c9e81553ull, 0x7011aeba36a10820ull, 0x9e3da384de7241a5ull }}, {{ 0xf131b915958f74a7ull, 0x43befb6e09870ec4ull, 0xfbecacc2212a5495ull, 0x5d2a6537e310d542ull, 0x60b0d346224a5141ull, 0x2e686330b0769076ull }}, {{ 0x6bf13ad7d79a8e8aull, 0xa575d24c5f4693b1ull, 0xd73ebf954ba74dd4ull, 0xa3a7f42edea8549dull, 0xc6e840bd56e72c8dull, 0xd013dfe6e4a1a49full }}, {{ 0x376c4c6e6c099167ull, 0x769a36fbb8c1c4eeull, 0x68737bd4f4890a4eull, 0x648f89d4b2934e2aull, 0xc51287656507bd88ull, 0x20c6bf04ee506e3dull }}, {{ 0x2a3afc50385fae03ull, 0xa20625d53791b14eull, 0x1482d6518d5a6710ull, 0xed9b624ef9c10da8ull, 0xb2b949f5f24d6753ull, 0x47c376314f244e69ull }}, {{ 0xa64ddb2233bccc1cull, 0x543d7a542bb0ed0dull, 0xcd1c5f2f858806a6ull, 0x4811d715c18a8890ull, 0xfb3ce39b77060947ull, 0xcda29ded176b1020ull }}, {{ 0x7f0a8f56055ff918ull, 0x4a66c749b4e94288ull, 0x031bb7db3750427full, 0xd0b266d98f6955a8ull, 0xd060e412a63c5cc8ull, 0x085a2b42ea2ea149ull }}, {{ 0xf669995c35bfbaedull, 0xe803c8e1111c9954ull, 0x1f152e90292298f8ull, 0x26f8047f9a1d5890ull, 0x23c8e8ba7e5b9fd8ull, 0x5385b09d25d24ce2ull }}, {{ 0xa01ffd9a197d4d42ull, 0x1025d8caab1dfd51ull, 0x36d3d1a19b59f9b9ull, 0x85b02cfc052575a1ull, 0x65d91748ef943e71ull, 0x4338e6237a3700d5ull }}, {{ 0x413fe804fee50499ull, 0xa17a77eaaf2be530ull, 0x244630501183c13aull, 0x38e1c1d83376984cull, 0xfa7ae8d95bca706full, 0xa038fd62c6260855ull }}, {{ 0x8c7f1031f4f22dfaull, 0x4ec8af2ad7b6f3e2ull, 0x6abde320af258c4aull, 0x38d1927202a1f2f9ull, 0xc8cd187d95e86458ull, 0x4239e5dbbd7c535bull }}, {{ 0x7cf6a1f39175cbc0ull, 0x13d6d7ac6d2586d9ull, 0x2b6adf46d7777ae7ull, 0x382fb8741a537dbeull, 0xd802f4e7db13eb72ull, 0x9642fa9566db4195ull }}, {{ 0xe1a25383ae99f585ull, 0xc6646cbc4377447eull, 0xb22cb8c46aaacd06ull, 0x31dd34890742e96dull, 0x701d910e8ec73276ull, 0xde9dc9d604908fdaull }}, {{ 0xd0574324d2039731ull, 0xbfec3f5aa2a8acf4ull, 0xf5bf37ac2aac0243ull, 0xf2a40d5a489d1e48ull, 0x6127aa9193c7f89dull, 0xb229e25c2da59e88ull }}, {{ 0x23689f703423e7e6ull, 0x7f3a798a5a96c190ull, 0x99782cb9aab816a5ull, 0x7a688586d6232ed9ull, 0xcb8ca9afc5cfb62bull, 0xf5a2d799c8783153ull }}, {{ 0x62163a6209670efaull, 0xf848bf6789e38fa1ull, 0xfeb1bf40ab30e276ull, 0xc81537445d5fd47full, 0xf37ea0ddba1d1db2ull, 0x985c6c01d4b1ed45ull }}, {{ 0xd4de47d45e0695c7ull, 0xb2d77a0b62e39c4dull, 0xf2f17886afe8d8a5ull, 0xd0d428aba5be4cffull, 0x82f248a9452328fbull, 0xf39c38124ef344bbull }}, {{ 0x50aece4bac41d9c8ull, 0xfc6ac471dce41b0aull, 0x7d6eb542df187678ull, 0x284996b4796f01ffull, 0x1d76d69cb35f99d6ull, 0x841a30b71580af53ull }}, {{ 0x26d40ef4ba9281ceull, 0xdc2bac72a0e90e67ull, 0xe653149cb6f4a0b9ull, 0x92dfe30cbe5613faull, 0x26a4621f01bc025dull, 0x2905e726d706d93full }}, {{ 0x8448958f49b91208ull, 0x99b4bc7a491a9007ull, 0xff3ece1f258e4742ull, 0xbcbede7f6f5cc7ccull, 0x826bd536115817a7ull, 0x9a3b078466447c77ull }}, {{ 0x2ad5d798e13ab44dull, 0x010f5cc6db09a04bull, 0xf8740d37778ec89aull, 0x5f74b0fa599fce01ull, 0x1836541cad70ec8dull, 0x064e4b2bfeacdcabull }}, {{ 0xac5a6bf8cc4b0afeull, 0x0a999fc48e6042efull, 0xb488842aab93d604ull, 0xba8ee9c7803e0c13ull, 0xf21f491ec6693d85ull, 0x3f0eefb7f2c09eaeull }}, {{ 0xbb8837b7faee6de8ull, 0x6a003dad8fc29d5cull, 0x0d5529aab3c65c28ull, 0x499521cb026c78c5ull, 0x7538db33c01c6739ull, 0x76955d2f7b8632d5ull }}, {{ 0x53522d2fcd504b0full, 0x240268c79d9a259full, 0x8553a0ab05bf9994ull, 0xdfd351ee183cb7b2ull, 0x94389005811c083cull, 0xa1d5a3dad33dfc56ull }}, {{ 0x4135c3de0522ee95ull, 0x681817cc28057839ull, 0x354446ae397bffc9ull, 0xbe41334cf25f2cf9ull, 0xca35a0370b185260ull, 0x5258668c406bdb61ull }}, {{ 0x8c19a6ac335d51d4ull, 0x10f0edf99036b23cull, 0x14aac2ce3ed7fddeull, 0x6e8c010177b7c1bcull, 0xe61842266ef337c7ull, 0x3774017a843691d1ull }}, {{ 0x790082ba01a53245ull, 0xa9694bbfa222f65dull, 0xceab9c0e746feaacull, 0x51780a0ead2d9158ull, 0xfcf2958055802dcaull, 0x2a880ec92a21b232ull }}, {{ 0xba051b441073f6b6ull, 0x9e1cf57c555d9fa6ull, 0x12b418908c5f2abeull, 0x2eb06492c3c7ad78ull, 0xe179d7035701c9e7ull, 0xa95093dba550f5fdull }}, {{ 0x443310a8a487a319ull, 0x2d2196db55a83c83ull, 0xbb08f5a57bb7ab72ull, 0xd2e3edbba5ccc6b0ull, 0xcec266216611e307ull, 0x9d25c69475299beaull }}, {{ 0xa9fea6966d4c5ef5ull, 0xc34fe49158925d20ull, 0x4e599876d52cb275ull, 0x3ce7495479ffc2e7ull, 0x1397fd4dfcb2de4eull, 0x2379c1cc93a0172cull }}, {{ 0xa3f281e044fbb594ull, 0xa11eedad75b7a346ull, 0x0f7ff4a453bef899ull, 0x6108dd4cc3fd9d09ull, 0xc3efe50bdefcaf0eull, 0x62c191fdc440e7b8ull }}, {{ 0x677912c2b1d517cdull, 0x4b3548c6992c60c2ull, 0x9aff8e6b4575b600ull, 0xca58a4ffa7e8225aull, 0xa75ef276b5ded68full, 0xdb8fb3e9aa890d37ull }}, {{ 0x0ababb9af252edffull, 0xf014d7c1fbbbc798ull, 0x0dfb9030b6991c02ull, 0xe77671fc8f11578aull, 0x89b578a31ab4619dull, 0x939d0720a95a842cull }}, {{ 0x6b4b540d773d4bf6ull, 0x60d06d93d555cbf0ull, 0x8bd3a1e721fb181dull, 0x0aa073dd96ad6b64ull, 0x6116b65f0b0bd02bull, 0xc42247469d8929bdull }}, {{ 0x30f14886a864f79full, 0xc82447c65559f764ull, 0x7644530753cef125ull, 0x6a4486a7e2c631edull, 0xcae31fb66e7621aeull, 0xa956c8c2275ba165ull }}, {{ 0xe96cd54293f1ac36ull, 0xd16acdbf5583a9e9ull, 0x9eab3e4946156b79ull, 0x26ad428edbbdf346ull, 0xecdf3d20509d50d0ull, 0x9d63d79589944df9ull }}, {{ 0x1e405499c770ba1cull, 0x2e2c09795724a323ull, 0x32b06edcbcd632c2ull, 0x82c49994956b80c2ull, 0x40b8634326252821ull, 0x25e66bd75fcb0bc3ull }}, {{ 0x2e834e01ca67451aull, 0xcdb85ebd676e5f5full, 0xfae4549f605dfb95ull, 0x1badffcdd6330795ull, 0x8733e09f7d73914full, 0x7b003669bdee75a0ull }}, {{ 0xd1210c11e808b308ull, 0x0933b3660a4fb9b7ull, 0xcceb4e39c3abd3daull, 0x14cbfe0a5dfe4bdbull, 0x4806c63ae683ad17ull, 0xce0220216b509845ull }}, {{ 0x2b4a78b31056fe4cull, 0x5c0501fc671d412eull, 0x01310e41a4b64684ull, 0xcff7ec67abeef696ull, 0xd043be4d0124c2e6ull, 0x0c15414e3125f2b4ull }}, {{ 0xb0e8b6fea365eef7ull, 0x983213dc07248bcdull, 0x0bea8e906f1ec12bull, 0x1faf3c0cb755a1dcull, 0x22a56f020b6f9d04ull, 0x78d48d0deb7b7b10ull }}, {{ 0xe91725f261fb55a2ull, 0xf1f4c698476d7608ull, 0x772991a457338bb3ull, 0x3cd8587f29585298ull, 0x5a765614725c2229ull, 0xb84d828b32d2cea1ull }}, {{ 0x1ae77b77d3d15853ull, 0x738fc1f2ca469c59ull, 0xa79fb06b68037507ull, 0x607374f79d7339f4ull, 0x889f5ccc7799559cull, 0x3307196ffc3c124dull }}, {{ 0x0d0ad2ae462d733eull, 0x839d937be6c21b7bull, 0x8c3ce4321022924aull, 0xc48291ac2680438eull, 0x56399ffcabfd581bull, 0xfe46fe5fda58b707ull }}, {{ 0x826c3acebdc68069ull, 0x2427c2d7039512ceull, 0x7a60e9f4a159b6e9ull, 0xad19b0b98102a391ull, 0x5e403fdeb7e57115ull, 0xeec5efbe87772649ull }}, {{ 0x183a4c1369c1041full, 0x698d9c6623d2bc11ull, 0xc7c9238e4d81251bull, 0xc300e73f0a1a63aeull, 0xae827eb32ef66ad8ull, 0x53bb5d714aa77eddull }}, {{ 0xf246f8c2218a2933ull, 0x1f881bfd663b58aaull, 0xcddb638f070b7312ull, 0x9e0908766507e4d3ull, 0xd118f2ffd5a02c77ull, 0x4551a66cea8af4a8ull }}, {{ 0x76c5b7954f659c00ull, 0x3b5117e5fe5176adull, 0x0a91e39646727eb5ull, 0x2c5a549ff24ef046ull, 0x2af97dfe5841bcacull, 0xb5308041296d8e98ull }}, {{ 0xa3b92bd519f817fdull, 0x512aeefbef2ea2c6ull, 0x69b2e3dec078f314ull, 0xbb874e3f771562bcull, 0xadbeebef72915eb9ull, 0x13e5028b9e4791f1ull }}, {{ 0x653bb65303b0efe4ull, 0x2bad55d757d25bc2ull, 0x20fce6b384b97ecbull, 0x53490e7aa6d5db5cull, 0xc975375a79adb341ull, 0xc6f219742ecbb370ull }}, {{ 0xf4551f3e24e95ee5ull, 0xb4c55a696e379597ull, 0x49e103032f3ef3efull, 0x40da90ca845a9199ull, 0xde942988c0c9008dull, 0xc574fe89d3f50267ull }}, {{ 0x8b53386d711db4f5ull, 0x0fb5881e4e2bd7efull, 0xe2ca1e1fd875875dull, 0x8889a7e92b89affcull, 0xb1c99f5787da0584ull, 0xb691f1624792180eull }}, {{ 0x714034466b291195ull, 0x9d17512f0db66f5bull, 0xdbe52d3e749749a2ull, 0x55608f1bb360dfe0ull, 0xf1e0396b4e84372dull, 0x21b36dd6cbb4f092ull }}, {{ 0x6c820ac02f9aafd0ull, 0x22e92bd689205992ull, 0x96f3c4708de8e05aull, 0x55c5971501c8bec8ull, 0x72c23e31112a27c5ull, 0x51024a63f51165bdull }}, {{ 0x3d146b81dc0ade1cull, 0x5d1bb6615b437fb8ull, 0xe585ac658b18c385ull, 0x59b7e6d211d773d5ull, 0x7b966deaaba58db5ull, 0x2a16e7e792adf966ull }}, {{ 0x62cc3312986cad1aull, 0xa3151fcd90a2fd32ull, 0xf738bbf76ef7a335ull, 0x812f0434b26a865aull, 0xd3e04b2ab4778915ull, 0xa4e50f0bbacbbe00ull }}, {{ 0xdbf9feb9f43ec302ull, 0x5ed33e07a65de3f7ull, 0xa83757aa55ac6018ull, 0x0bd62a0ef8293f8dull, 0x46c2efab0cab5ad7ull, 0x70f296754bf56c08ull }}, {{ 0x97c3f3438a739e10ull, 0xb4406c4c7faae7aeull, 0x92296ca758bbc0f3ull, 0x765da495b19c7b88ull, 0xc39d5cae7eb18c66ull, 0x6979e094f7963852ull }}, {{ 0xeda780a368842c9bull, 0x0a843afcfcad0cd1ull, 0xb59e3e8977558985ull, 0x9fa86dd8f01cd355ull, 0xa4259ed0f2ef7c00ull, 0x1ec2c5d1abde333bull }}, {{ 0x488b06621529be13ull, 0x692a4de1dec28033ull, 0x182e715ea9575f32ull, 0x3c944a7961204159ull, 0x697834297d5ad806ull, 0x339bba30b6ae0054ull }}, {{ 0xd56e3fd4d3a16cbcull, 0x1ba70ad2b3990200ull, 0xf1d06db29d69b7f8ull, 0x5dcae8bdcb428d7aull, 0x1eb2099ee58c703eull, 0x041545e722cc034cull }}, {{ 0x564e7e50444e3f5cull, 0x14866c3b03fa1408ull, 0x722448fa26212fb1ull, 0xa9ed1769f09986cdull, 0x32f46034f77c626full, 0x28d4bb075bf820f9ull }}, {{ 0x5f10ef22ab0e799aull, 0xcd403a4e27c4c853ull, 0x756ad9c57d4bdceaull, 0xa342ea2365ff4406ull, 0xfd8bc211aadbd85cull, 0x984f4e4997b149bbull }}, {{ 0xb6a9575aae90c005ull, 0x0482470d8dafd341ull, 0x962c81b6e4f6a12cull, 0x609d2561fbf8a840ull, 0xe77594b0ac96739eull, 0xf3190edfecece157ull }}, {{ 0x229d698ad1a78030ull, 0x2d16c68788de4091ull, 0xddbd1124f1a24bb8ull, 0xc62375d3d7b69285ull, 0x0a97cee6bde0842full, 0x7efa94bf4140cd6full }}, {{ 0x5a261f6c308b01dcull, 0xc2e3c14b58ae85abull, 0xa962ab717056f531ull, 0xbd629a466d21b93aull, 0x69ee15036ac529ddull, 0xf5c9cf788c880656ull }}, {{ 0x857d3a39e56e129bull, 0x9ce58cf176d138b1ull, 0x9ddab26e636593f1ull, 0x65da06c043513c4aull, 0x234cd2222bb3a2a9ull, 0x99e21ab57d503f60ull }}, {{ 0x36e44642f64cba10ull, 0x20f7816ea42c36efull, 0x2a8af84fe1f7c770ull, 0xfa844382a12c5aeaull, 0x61003555b5045a9dull, 0x02d50b16e52279c1ull }}, {{ 0x24eabe9d9eff449bull, 0x49ab0e5269ba2558ull, 0xa96db31ed3adca61ull, 0xc92aa31a4bbb8d25ull, 0xca021559122b8a2bull, 0x1c526ee4f358c18dull }}, {{ 0x712b722835f8ae12ull, 0xe0ae8f3821457571ull, 0x9e48ff3444c9e7ccull, 0xdbaa5f06f5538378ull, 0xe414d57ab5b365b5ull, 0x1b3854f181778f89ull }}, {{ 0x6bb275921bb6ccb3ull, 0xc6d198314cb6966eull, 0x2ed9f80aafe30e00ull, 0x94a7b645954322b6ull, 0xe8d056cb1901f91aull, 0x1033516f0eab9b62ull }}, {{ 0x34f897b51523ff01ull, 0xc42ff1ecff21e050ull, 0xd483b06adede8c07ull, 0xce8d1eb7d49f5b1dull, 0x182363eefa13bb09ull, 0xa2012e5692b411ddull }}, {{ 0x11b5ed12d367f60bull, 0xa9df7341f752c322ull, 0x4d24e42cb4b1784dull, 0x1183332e4e398f2aull, 0xf161e755c4c54e62ull, 0x540bcf61bb08b2a2ull }}, {{ 0xb11b42bc420f9c6full, 0xa2ba8093a93b9f54ull, 0x0370e9bf0eeeb308ull, 0xaf1fffcf0e3f97a7ull, 0x6dd30959afb50fd4ull, 0x487619d14e56fa5dull }}, {{ 0xeb109b5a949c1c5aull, 0x5b4905c49c54394eull, 0x226921769552fe56ull, 0xd73ffe168e7bec86ull, 0x4a3e5d80dd129e4eull, 0xd49d022d0f65c7a6ull }}, {{ 0x2ea61189ce191b86ull, 0x90da39ae1b4a3d15ull, 0x581b4ea1d53def5full, 0x687fece190d73d3dull, 0xe66fa708a2ba2f14ull, 0x4e2215c299f9cc7eull }}, {{ 0xd27caf620cfb133aull, 0xa88640cd10e662d3ull, 0x71111252546b59bbull, 0x14ff40cfa8686465ull, 0x005c86565b45d6ccull, 0x0d54d99a03c1fcf5ull }}, {{ 0x38ded9d481cec040ull, 0x953e8802a8ffdc46ull, 0x6aaab7374c318154ull, 0xd1f8881c9413ebf6ull, 0x039d3f5f90ba63f8ull, 0x855080042593e192ull }}, {{ 0x38b4824d12138285ull, 0xd471501a99fe9abeull, 0x2aab2828f9ef0d4dull, 0x33b5511dc8c737a0ull, 0x242479bba747e7b8ull, 0x3525002977c6cfb4ull }}, {{ 0x370d1702b4c31931ull, 0x4c6d210a03f20b6eull, 0xaaaf9199c356850aull, 0x05152b29d7c82c41ull, 0x696cc15488cf0d32ull, 0x1372019eadc41d09ull }}, {{ 0x2682e61b0f9efbe8ull, 0xfc434a642774724eull, 0xaadbb001a1613266ull, 0x32d3afa26dd1ba90ull, 0x1e3f8d4d581683f4ull, 0xc2741032c9a9225eull }}, {{ 0x811cfd0e9c35d70dull, 0xdaa0e7e98a8c770dull, 0xac94e0104dcbf805ull, 0xfc44dc584a3149a6ull, 0x2e7b850570e12789ull, 0x9888a1fbe09b57adull }}, {{ 0x0b21e2921a1a6684ull, 0x8a490f1f697ca687ull, 0xbdd0c0a309f7b03aull, 0xdab09b72e5ece082ull, 0xd0d3323668cb8b63ull, 0xf55653d6c6116cc3ull }}, {{ 0x6f52d9b505080129ull, 0x66da973a1ede8146ull, 0x6a27865e63ace249ull, 0x8ae6127cfb40c51bull, 0x283ff62017f371e6ull, 0x955f4663bcae3fa6ull }}, {{ 0x593c811232500b98ull, 0x0489e84534b10cc0ull, 0x258b3fafe4c0d6deull, 0x6cfcb8e1d087b312ull, 0x927f9d40ef827301ull, 0xd5b8bfe55ece7c7dull }}, {{ 0x7c5d0ab5f72073ecull, 0x2d6312b40eea7f83ull, 0x77707cdeef8864acull, 0x41df38d2254cfeb5ull, 0xb8fc24895b187e0eull, 0x59377ef5b410dce7ull }}, {{ 0xdba26b1ba7448736ull, 0xc5debb089528fb22ull, 0xaa64e0b55b53eeb9ull, 0x92b838357501f316ull, 0x39d96d5d8ef4ec8eull, 0x7c2af59908a8a10dull }}, {{ 0x94582f1488ad481aull, 0xbab34e55d399cf5cull, 0xa7f0c71591475341ull, 0xbb32321692137ee2ull, 0x427e45a795913d91ull, 0xd9ad97fa56964a84ull }}, {{ 0xcb71d6cd56c4d108ull, 0x4b010f5a4402199dull, 0x8f67c6d7acc94091ull, 0x4ff5f4e1b4c2f4daull, 0x98eeb88bd7ac67b1ull, 0x80c7efc761dee92aull }}, {{ 0xf272640563b02a4full, 0xee0a9986a8150029ull, 0x9a0dc46cbfdc85acull, 0x1f9b90d10f9d9089ull, 0xf95335766cbc0cedull, 0x07cf5dc9d2b51ba9ull }}, {{ 0x7877e835e4e1a716ull, 0x4c69ff4290d201a3ull, 0x0489ac3f7e9d38c1ull, 0x3c13a82a9c27a560ull, 0xbd4016a03f588143ull, 0x4e19a9e23b1314a3ull }}, {{ 0xb4af121af0d086dcull, 0xfc23f899a8341062ull, 0x2d60ba7af224378cull, 0x58c491aa198c75c0ull, 0x6480e24279750ca0ull, 0x0d00a2d64ebece65ull }}, {{ 0x0ed6b50d6825449dull, 0xd967b6009208a3dbull, 0xc5c748cd756a2b81ull, 0x77adb0a4ff7c9981ull, 0xed08d698be927e43ull, 0x82065c5f13740ff5ull }}, {{ 0x946312861174ae21ull, 0x7e0d1c05b456668eull, 0xb9c8d8069625b312ull, 0xacc8e671faddff11ull, 0x425861f771b8eea2ull, 0x143f9bb6c2889f9bull }}, {{ 0xcbdeb93cae8ecd4dull, 0xec8318390b600191ull, 0x41d87041dd78feb8ull, 0xbfd90073ccabf6b1ull, 0x9773d3aa7139525aull, 0xca7c152399563c10ull }}, {{ 0xf6b33c5ed1940503ull, 0x3d1ef23a71c00fb1ull, 0x92746292a6b9f339ull, 0x7e7a0485feb7a2ecull, 0xea8644a86c3d378bull, 0xe8d8d363fd5e58a5ull }}, {{ 0xa3005bb42fc8321aull, 0x6335764871809cf3ull, 0xb88bd9ba8343803cull, 0xf0c42d3bf32c5d3dull, 0x293eae943a642b72ull, 0x187841e7e5af767bull }}, {{ 0x5e039509ddd1f500ull, 0xe0169ed46f062184ull, 0x3576814920a3025bull, 0x67a9c4577fbba469ull, 0x9c72d1ca47e9b27dull, 0xf4b2930ef8daa0cfull }}, {{ 0xac23d262aa3391ffull, 0xc0e2344c563d4f2bull, 0x16a10cdb465e1796ull, 0x0ca1ab6afd546c1cull, 0x1c7c31e6cf20f8e6ull, 0x8ef9be95b88a481cull }}, {{ 0xb96637daa603b3f7ull, 0x88d60afb5e6517b4ull, 0xe24a8090bfacebe3ull, 0x7e50b22de54c3918ull, 0x1cd9f3041749b8fcull, 0x95c171d93566d119ull }}, {{ 0x3dfe2e8a7c2507a2ull, 0x585c6dd1aff2ed0full, 0xd6e905a77cc136e3ull, 0xef26f5caf4fa3af8ull, 0x20837e28e8e139dcull, 0xd98e727c16042afbull }}, {{ 0x6bedd168d9724c4full, 0x739c4a30df7d4298ull, 0x651a388adf8c24e1ull, 0x578599ed91c64db8ull, 0x4522ed9918cc42a1ull, 0x7f9078d8dc29adcfull }}, {{ 0x374a2e187e76fb16ull, 0x841ae5e8bae499f4ull, 0xf306356cbb7970ceull, 0x6b380347b1bf0933ull, 0xb35d47faf7fa9a4dull, 0xfba4b87899a0ca18ull }}, {{ 0x28e5ccf4f0a5cedeull, 0x290cfb174cee038aull, 0x7e3e163f52be6811ull, 0x303020ccf1765c07ull, 0x01a4cfcdafca0706ull, 0xd46f34b60047e4f7ull }}, {{ 0x98fa0191667a14a9ull, 0x9a81cee9014c2365ull, 0xee6cde793b7010abull, 0xe1e148016e9f984aull, 0x10701e08dde4463dull, 0x4c580f1c02cef1a6ull }}, {{ 0xf9c40fae00c4ce98ull, 0x0912151a0cf961f7ull, 0x5040b0bc5260a6b4ull, 0xd2ccd00e523bf2edull, 0xa4612c58aaeabe6aull, 0xfb7097181c15707cull }}, {{ 0xc1a89ccc07b011ecull, 0x5ab4d30481bdd3afull, 0x2286e75b37c68308ull, 0x3c00208f36577d45ull, 0x6bcbbb76ad2b702cull, 0xd265e6f118d664deull }}, {{ 0x90961ff84ce0b337ull, 0x8b103e2d116a44ddull, 0x594509902dc11e53ull, 0x580145981f6ae4b3ull, 0x35f552a2c3b261baull, 0x37fb056af85ff0b0ull }}, {{ 0xa5dd3fb300c70023ull, 0x6ea26dc2ae26b0a7ull, 0x7cb25fa1c98b2f43ull, 0x700cb7f13a2cef01ull, 0x1b953a5ba4f7d147ull, 0x2fce362db3bf66e2ull }}, {{ 0x7aa47cfe07c60161ull, 0x5258499acd82e68cull, 0xdef7bc51df6fd8a2ull, 0x607f2f6c45c1560eull, 0x13d4479471ae2ccaull, 0xde0e1dc9057a04d5ull }}, {{ 0xca6ce1ec4dbc0dc8ull, 0x3772e00c071d017cull, 0xb5ad5b32ba5e7657ull, 0xc4f7da3ab98d5c94ull, 0xc64acbcc70cdbfe7ull, 0xac8d29da36c43052ull }}, {{ 0xe840d33b095889d2ull, 0x2a7cc07847220edfull, 0x18c58ffb47b09f68ull, 0xb1ae864b3f859dcfull, 0xbeebf5fc68097f0dull, 0xbd83a28623a9e33bull }}, {{ 0x1288404e5d756236ull, 0xa8df84b2c75494bfull, 0xf7b79fd0cce63a11ull, 0xf0d13ef07b382a16ull, 0x75379bdc105ef688ull, 0x6724593d64a2e055ull }}, {{ 0xb952830fa695d61dull, 0x98bb2efbc94dcf76ull, 0xad2c3e2800fe44b0ull, 0x682c7564d031a4e5ull, 0x942c1698a3b5a159ull, 0x076b7c65ee5cc356ull }}, {{ 0x3d391e9c81da5d23ull, 0xf74fd5d5dd0a1aa3ull, 0xc3ba6d9009eeaee5ull, 0x11bc95f021f070f8ull, 0xc9b8e1f665184d7eull, 0x4a32dbfb4f9fa161ull }}, {{ 0x643b321d1287a35aull, 0xa91e5a5aa2650a60ull, 0xa54847a06352d4fbull, 0xb15ddb61536469b7ull, 0xe138d39ff2f306ecull, 0xe5fc97d11c3c4dd1ull }}, {{ 0xea4ff522b94c6186ull, 0x9b2f878a57f267c3ull, 0x74d2cc43e13c51d4ull, 0xedaa91cd41ec212cull, 0xcc38443f7d7e453eull, 0xfbddee2b1a5b0a32ull }}, {{ 0x271f935b3cfbcf3cull, 0x0fdb4b676f780da7ull, 0x903bfaa6cc5b324eull, 0x48a9b20493394bbcull, 0xfa32aa7ae6eeb475ull, 0xd6ab4daf078e65fbull }}, {{ 0x873bc19061d6185aull, 0x9e90f20a5ab08887ull, 0xa257ca83fb8ff70cull, 0xd6a0f42dc03cf55dull, 0xc5faa8cd05530c94ull, 0x62b108d64b8ffbd7ull }}, {{ 0x48558fa3d25cf385ull, 0x31a974678ae5554bull, 0x576de927d39fa67eull, 0x624989c9826195a8ull, 0xbbca9802353e7dd0ull, 0xdaea585ef39fd66dull }}, {{ 0xd3579c6637a18330ull, 0xf09e8c0b6cf554f0ull, 0x6a4b1b8e443c80edull, 0xd6df61df17cfd893ull, 0x55e9f0161470ea23ull, 0x8d2773b5843e6049ull }}, {{ 0x416c1bfe2c4f1fdcull, 0x6631787241955168ull, 0x26ef138eaa5d094bull, 0x64b9d2b6ee1e75c2ull, 0x5b2360dccc692566ull, 0x838a85172a6fc2ddull }}, {{ 0x8e3917edbb173e97ull, 0xfdeeb4768fd52e12ull, 0x8556c392a7a25cf1ull, 0xef423b254d309995ull, 0x8f61c89ffc1b75ffull, 0x236932e7a85d9ca5ull }}, {{ 0x8e3aef494ee871eaull, 0xeb530ca19e53ccb9ull, 0x3563a3ba8c57a173ull, 0x58964f7503e5ffd7ull, 0x99d1d63fd9129bffull, 0x621bfd0c93a81e77ull }}, {{ 0x8e4d58dd15147328ull, 0x313e7e502f45ff3full, 0x15e465497b6c4e87ull, 0x75df1a9226fbfe68ull, 0x02325e7e7aba17f9ull, 0xd517e27dc49130acull }}, {{ 0x8f0578a2d2cc7f8bull, 0xec70ef21d8bbf87bull, 0xdaebf4ded23b1147ull, 0x9ab709b585d7f010ull, 0x15f7b0f0cb44efbeull, 0x52eed8e9adabe6b8ull }}, {{ 0x9636b65c3bfcfb6full, 0x3c6957527757b4d3ull, 0x8d3790b4364eaccfull, 0x0b2661173a6f60a8ull, 0xdbace967f0b15d72ull, 0x3d547920c8b70330ull }}, {{ 0xde231f9a57e1d251ull, 0x5c1d6938a96d1043ull, 0x842ba70a1f12c018ull, 0x6f7fcae84859c695ull, 0x94c11e0f66eda674ull, 0x654cbb47d7261fe8ull }}, {{ 0xad5f3c076ed2372cull, 0x99261c369e42a2a6ull, 0x29b4866536bb80f3ull, 0x5afded12d381c1d7ull, 0xcf8b2c9a0548808cull, 0xf4ff50ce677d3f15ull }}, {{ 0xc5b8584a543627b9ull, 0xfb7d1a222e9a5a82ull, 0xa10d3ff423530983ull, 0x8deb42bc43119267ull, 0x1b6fbe0434d5057bull, 0x91f928100ae476daull }}, {{ 0xb93372e74a1d8d3aull, 0xd2e30555d207891bull, 0x4a847f89613e5f27ull, 0x8b309b5a9eafb80cull, 0x125d6c2a105236d3ull, 0xb3bb90a06ceca485ull }}, {{ 0x3c027d08e5278443ull, 0x3cde355a344b5b15ull, 0xe92cfb5dcc6fb78eull, 0x6fe6118a32dd307aull, 0xb7a639a4a3362443ull, 0x0553a644413e6d32ull }}, {{ 0x5818e258f38b2aa3ull, 0x60ae15860af18ed4ull, 0x1bc1d1a9fc5d2b8eull, 0x5efcaf65fca3e4cdull, 0x2c7e406e601d6aa2ull, 0x35447eaa8c7043fbull }}, {{ 0x70f8d779836faa5bull, 0xc6ccd73c6d6f944bull, 0x159230a3dba3b38full, 0xb5ded9fbde66f003ull, 0xbcee844fc1262a57ull, 0x14acf2a97c62a7cfull }}, {{ 0x69b86abf225ca78full, 0xc400685c465bcaf2ull, 0xd7b5e6669465039dull, 0x1ab483d6b005601eull, 0x61512b1d8b7da76dull, 0xcec17a9edbda8e1dull }}, {{ 0x21342b77579e8b99ull, 0xa804139abf95ed78ull, 0x6d1b0001cbf22429ull, 0x0b0d2662e035c134ull, 0xcd2baf2772e88a43ull, 0x138eca3496898d25ull }}, {{ 0x4c09b2a96c3173f5ull, 0x9028c40b7bdb46b1ull, 0x430e0011f77569a0ull, 0x6e837fdcc2198c0cull, 0x03b4d78a7d15669eull, 0xc393e60de15f837aull }}, {{ 0xf860fa9e39ee8796ull, 0xa197a872d690c2ecull, 0x9e8c00b3aa962045ull, 0x5122fe9f94ff787aull, 0x25106b68e2d60230ull, 0xa3c6fc8acdbb22c4ull }}, {{ 0xb3c9ca2e43514bd9ull, 0x4fec947c61a79d41ull, 0x31780704a9dd42b8ull, 0x2b5df23bd1fab4caull, 0x72a43218dc5c15e3ull, 0x65c5dd6c094f5ba9ull }}, {{ 0x05e1e5cea12cf679ull, 0x1f3dccdbd08c2491ull, 0xeeb0462ea2a49b33ull, 0xb1ab765633cb0fe5ull, 0x7a69f4f89b98dadfull, 0xf9baa6385d19949eull }}, {{ 0x3ad2fa124bc1a0b8ull, 0x386a009625796daaull, 0x52e2bdd25a6e0fffull, 0xf0b29f5e05ee9efbull, 0xc82391b613f88cbcull, 0xc14a7e33a2ffce30ull }}, {{ 0x4c3dc4b6f5904731ull, 0x342405dd76be48a6ull, 0x3cdb6a37884c9ff8ull, 0x66fa39ac3b5235d1ull, 0xd163b11cc7b57f61ull, 0x8ce8ee045dfe0de7ull }}, {{ 0xfa69af2597a2c7e7ull, 0x09683aa6a36ed67eull, 0x6092262b52fe3fb2ull, 0x05c640ba51361a2cull, 0x2de4eb1fcd16f9ceull, 0x81194c2babec8b0eull }}, {{ 0xc820d777ec5bcf03ull, 0x5e124a82625460f5ull, 0xc5b57db13dee7cf4ull, 0x39be87472c1d05bbull, 0xcaf12f3e02e5c20cull, 0x0afcf9b4b73d6e8dull }}, {{ 0xd1486aaf3b96161full, 0xacb6e917d74bc999ull, 0xb916e8ec6b50e18bull, 0x417148c7b9223955ull, 0xed6bd86c1cf9947aull, 0x6de1c10f28665189ull }}, {{ 0x2cd42ad853dcdd36ull, 0xbf251aee68f5e002ull, 0x3ae5193c3128cf74ull, 0x8e6cd7cd3b563d59ull, 0x4636743921bfccc6ull, 0x4ad18a9793ff2f63ull }}, {{ 0xc049ac7346a0a41cull, 0x77730d50199ac015ull, 0x4cf2fc59eb981a8full, 0x90406e04515e657cull, 0xbe208a3b517dffc1ull, 0xec2f69ebc7f7d9e0ull }}, {{ 0x82e0bc80c246691bull, 0xaa7e8521000b80d9ull, 0x017ddb8333f1099aull, 0xa2844c2b2daff6dbull, 0x6d4566512eebfd8full, 0x39da2335cfae82c7ull }}, {{ 0x1cc75d0796c01b0full, 0xa8f1334a0073087full, 0x0eea9320076a600aull, 0x592af9afc8dfa48eull, 0x44b5ff2bd537e79cull, 0x4285601a1cd11bcaull }}, {{ 0x1fc9a24be3810e97ull, 0x996c00e4047e54f7ull, 0x9529bf404a27c06aull, 0x7badc0ddd8bc6d8cull, 0xaf1bf7b6542f0c1bull, 0x9935c105202b15e6ull }}, {{ 0x3de056f6e30a91e8ull, 0xfe3808e82cef51a7ull, 0xd3a17882e58d8429ull, 0xd4c988aa775c477dull, 0xd717ad1f49d67912ull, 0xfc198a3341aedb02ull }}, {{ 0x6ac365a4de69b30full, 0xee305911c1593088ull, 0x444eb51cf78729a3ull, 0x4fdf56a8a99acaeaull, 0x66ecc338e260babcull, 0xd8ff660090d48e1cull }}, {{ 0x2ba1f870b020fe9aull, 0x4de37ab18d7be554ull, 0xab131321ab47a067ull, 0x1eb96296a00bed26ull, 0x053fa038d7c74b5bull, 0x79f9fc05a84d8d1cull }}, {{ 0xb453b466e149f201ull, 0x0ae2caef86d6f549ull, 0xaebebf50b0cc4409ull, 0x333dd9e240774382ull, 0x347c42386dc8f18full, 0xc3c3d83893078318ull }}, {{ 0x0b450c04cce3740dull, 0x6cdbed5b446594e1ull, 0xd3737926e7faa85aull, 0x006a82d684a8a31aull, 0x0cda963449d96f98ull, 0xa5a67235be4b1ef2ull }}, {{ 0x70b2783000e28880ull, 0x40974590abf7d0caull, 0x4282bb850fca9388ull, 0x04291c612e965f0cull, 0x8089de0ae27e5bf0ull, 0x788076196eef3574ull }}, {{ 0x66f8b1e008d954ffull, 0x85e8b7a6b7ae27e8ull, 0x991b53329de9c352ull, 0x299b1bcbd1dfb67aull, 0x0562ac6cd8ef9760ull, 0xb5049cfe5558168dull }}, {{ 0x05b6f2c0587d51f1ull, 0x3b172c832ccd8f14ull, 0xfb113ffa2b21a139ull, 0xa00f15f632bd20c9ull, 0x35dabc40795be9c1ull, 0x122e21ef5570e182ull }}, {{ 0x39257b8374e5336bull, 0x4ee7bd1fc00796c8ull, 0xceac7fc5af504c3cull, 0x4096db9dfb6347e3ull, 0x1a8b5a84bd972190ull, 0xb5cd53595668cf16ull }}, {{ 0x3b76d32290f4022eull, 0x150d633d804be3d2ull, 0x12bcfdb8d922fa5bull, 0x85e4942bd1e0cee6ull, 0x0971892f67e74fa2ull, 0x1a05417d601816ddull }}, {{ 0x52a43f59a98815c9ull, 0xd285e06702f6e636ull, 0xbb61e9387b5dc78eull, 0x3aedc9b632c814fcull, 0x5e6f5bda0f091c59ull, 0x04348ee5c0f0e4a2ull }}, {{ 0x3a6a79809f50d9d9ull, 0x393ac4061da4fe1full, 0x51d31c34d1a9cb94ull, 0x4d49e11dfbd0d1dfull, 0xb0599684965b1b7cull, 0x2a0d94f98968ee57ull }}, {{ 0x4828bf063928827dull, 0x3c4ba83d2871ed38ull, 0x323f1a1030a1f3caull, 0x04e2cb2bd62832b9ull, 0xe37fe12ddf8f12dbull, 0xa487d1bf5e194f6cull }}, {{ 0xd197763e3b9518e3ull, 0x5af4926394734432ull, 0xf67704a1e65385e6ull, 0x30dbefb65d91fb3bull, 0xe2fecbcabb96bc8eull, 0x6d4e3179acfd1a40ull }}, {{ 0x2fea9e6e53d2f8e0ull, 0x8d8db7e3cc80a9fcull, 0xa0a62e52ff433affull, 0xe8975d1fa7b3d057ull, 0xddf3f5eb53e35d8dull, 0x450deec0c1e30688ull }}, {{ 0xdf2a304f463db8c4ull, 0x87892ee5fd06a3d9ull, 0x467dcf3df8a04dfbull, 0x15e9a33c8d06236cull, 0xab879b3146e1a78bull, 0xb28b538792de4158ull }}, {{ 0xb7a5e318be6937a6ull, 0x4b5bd4fbe2426682ull, 0xc0ea186bb6430bd3ull, 0xdb20605d823d623aull, 0xb34c0fecc4d08b6eull, 0xf971434bbcae8d76ull }}, {{ 0x2c7adef7701c2c7full, 0xf19651d6d698011bull, 0x8924f4351e9e7640ull, 0x8f43c3a71665d64bull, 0x00f89f3fb0257254ull, 0xbe6ca0f55ed186a3ull }}, {{ 0xbcccb5aa6119bcf7ull, 0x6fdf326461f00b0full, 0x5b718a1332309e89ull, 0x98a5a486dffa5ef3ull, 0x09b6387ce176774dull, 0x703e4995b42f425eull }}, {{ 0x5fff18a7cb0161abull, 0x5eb7f7ebd3606e9dull, 0x926f64bff5e6315eull, 0xf6786d44bfc7b581ull, 0x611e34e0cea0a907ull, 0x626edfd909d897acull }}, {{ 0xbff6f68dee0dd0aeull, 0xb32faf3641c45225ull, 0xb859ef7f9afdedafull, 0xa0b444af7dcd170full, 0xcb2e10c812469a4full, 0xd854be7a6275ecbbull }}, {{ 0x7fa5a18b4c8a26cbull, 0xffdcd81e91ab3579ull, 0x33835afc0deb48dcull, 0x470aaedaea02e69dull, 0xefcca7d0b6c2071cull, 0x734f70c7d89b3f55ull }}, {{ 0xfc784f70fd6583e9ull, 0xfea07131b0b016beull, 0x03218dd88b30d8a1ull, 0xc66ad48d241d0224ull, 0x5dfe8e272394471aull, 0x811a67ce7610795bull }}, {{ 0xdcb31a69e5f7271eull, 0xf2446bf0e6e0e375ull, 0x1f4f8a756fe87653ull, 0xc02c4d8369221568ull, 0xabf18d8763cac70bull, 0x0b080e109ca4bd91ull }}, {{ 0x9eff0822fba7872aull, 0x76ac376904c8e29aull, 0x391b68965f149f47ull, 0x81bb07221b54d611ull, 0xb76f8749e5ebc675ull, 0x6e508ca61e6f67b0ull }}, {{ 0x35f6515dd48b47a7ull, 0xa2ba2a1a2fd8da0aull, 0x3b1215dfb6ce38caull, 0x114e475511505cacull, 0x2a5b48e2fb35c097ull, 0x4f257e7d305a0ce7ull }}, {{ 0x1b9f2daa4d70cc8aull, 0x5b45a505de788466ull, 0x4eb4dabd240e37eaull, 0xad0ec952ad239ebaull, 0xa790d8ddd01985e6ull, 0x1776f0e3e3848107ull }}, {{ 0x1437c8a70667fd64ull, 0x90b8723ab0b52bfdull, 0x13108b63688e2f27ull, 0xc293dd3ac3643347ull, 0x8ba878aa20ff3b02ull, 0xeaa568e6e32d0a4cull }}, {{ 0xca2dd686400fe5e6ull, 0xa734764ae713b7e2ull, 0xbea571e2158dd78bull, 0x99c6a44ba1ea00c6ull, 0x7494b6a549f84e1bull, 0x2a761904dfc266fdull }}, {{ 0xe5ca613e809efafcull, 0x880c9eed06c52edbull, 0x727672d4d78a6b74ull, 0x01c26af4532407c3ull, 0x8dcf2274e3b30d14ull, 0xa89cfa30bd9805e6ull }}, {{ 0xf9e7cc710635cdd9ull, 0x507e354243b3d496ull, 0x78a07c506b68328dull, 0x11982d8b3f684da2ull, 0x8a175890e4fe82c8ull, 0x9621c5e767f03b01ull }}, {{ 0xc30dfc6a3e1a0a7cull, 0x24ee1496a5064de5ull, 0xb644db243211f985ull, 0xaff1c7707a130858ull, 0x64e975a8f1f11bd0ull, 0xdd51bb0a0f624e0full }}, {{ 0x9e8bdc266d0468dcull, 0x714ccde2723f0af9ull, 0x1eb08f69f4b3bf33ull, 0xdf71ca64c4be5377ull, 0xf11e9899736b1626ull, 0xa5314e6499d70c99ull }}, {{ 0x31769980422c189bull, 0x6d000ad876766dc0ull, 0x32e59a238f057802ull, 0xba71e7efaf6f42a7ull, 0x6b31f5fe822edd84ull, 0x73ed0fee02667e03ull }}, {{ 0xeea1ff0295b8f60dull, 0x42006c74a0a04981ull, 0xfcf805639636b018ull, 0x48730f5cda589a87ull, 0x2ff39bf115d4a72full, 0x87429f4c1800ec22ull }}, {{ 0x5253f619d9399c87ull, 0x94043c8e4642df13ull, 0xe1b035e3de22e0f2ull, 0xd47e99a08776094full, 0xdf84176ada4e87d8ull, 0x489a38f8f0093955ull }}, {{ 0x37479d027c401d44ull, 0xc82a5d8ebe9cb6c1ull, 0xd0e21ae6ad5cc979ull, 0x4cf200454a9c5d1eull, 0xbb28ea2c87114e78ull, 0xd60639b9605c3d5aull }}, {{ 0x28cc2218da8124abull, 0xd1a7a793721f238cull, 0x28d50d02c59fdec1ull, 0x017402b4ea1ba334ull, 0x4f9925bd46ad10b3ull, 0x5c3e413dc39a658bull }}, {{ 0x97f954f8890b6eb1ull, 0x308c8bc275376379ull, 0x9852821bb83eb392ull, 0x0e881b1125146009ull, 0x1bfb7964c2c2a6feull, 0x9a6e8c69a407f771ull }}, {{ 0xefbd51b55a7252e5ull, 0xe57d75989429e2bfull, 0xf3391515327303b5ull, 0x91510eab72cbc05full, 0x17d2bdef9b9a85ecull, 0x08517c20684faa6bull }}, {{ 0x5d65311588773cf6ull, 0xf6e697f5c9a2db7full, 0x803ad2d3f87e251aull, 0xad2a92b27bf583bfull, 0xee3b6b5c14093b3dull, 0x532ed944131ca82eull }}, {{ 0xa5f3ead754a8619dull, 0xa501ef99e05c92f9ull, 0x024c3c47b4ed730dull, 0xc3a9baf8d797257bull, 0x4e523198c85c5068ull, 0x3fd47ca8bf1e91d5ull }}, {{ 0x7b872c694e93d023ull, 0x72135c02c39dbdc0ull, 0x16fa5acd11467e88ull, 0xa4a14db86be776ceull, 0x0f35eff7d39b2417ull, 0x7e4cde977731b255ull }}, {{ 0xd347bc1d11c62161ull, 0x74c1981ba4296984ull, 0xe5c78c02acc0f154ull, 0x6e4d0934370aa40cull, 0x981b5fae440f68ecull, 0xef00b1eaa7f0f752ull }}, {{ 0x40cd5922b1bd4dc7ull, 0x8f8ff114699e1f30ull, 0xf9cb781abf896d4cull, 0x4f025c0a266a6880ull, 0xf111bccea89a193cull, 0x5606f32a8f69a939ull }}, {{ 0x88057b5af16509c6ull, 0x9b9f6acc202d37e2ull, 0xc1f2b10b7b5e44fdull, 0x1617986580281509ull, 0x6ab160129604fc5bull, 0x5c457fa99a209c43ull }}, {{ 0x5036d18d6df261baull, 0x143a2bf941c42ed9ull, 0x937aea72d1aeb1e8ull, 0xdcebf3f70190d261ull, 0x2aedc0b9dc31db8eull, 0x9ab6fca005461aa2ull }}, {{ 0x22242f864b77d148ull, 0xca45b7bc91a9d47dull, 0xc2cd287c30d2f310ull, 0xa13787a60fa837cfull, 0xad49874299f29394ull, 0x0b25de4034bd0a55ull }}, {{ 0x5569db3ef2ae2cd3ull, 0xe6b92d5db0a24ce3ull, 0x9c0394d9e83d7ea7ull, 0x4c2b4c7c9c922e1dull, 0xc4df489a0379c3ceull, 0x6f7aae820f626758ull }}, {{ 0x562290757acdc03eull, 0x033bc5a8e65700e1ull, 0x1823d0831266f28full, 0xf9b0fcde1db5cd28ull, 0xb0b8d60422c1a60eull, 0x5acad11499d80977ull }}, {{ 0x5d59a496cc098268ull, 0x2055b898ff6608cdull, 0xf166251eb8057996ull, 0xc0e9e0ad291a0390ull, 0xe7385c295b907c95ull, 0x8bec2ace02705eacull }}, {{ 0xa5806de3f85f180dull, 0x435935f9f9fc5805ull, 0x6dfd73333036bfddull, 0x8922c6c39b0423a9ull, 0x0833999d93a4ddd9ull, 0x7739ac0c1863b2c1ull }}, {{ 0x77044ae7b3b6f080ull, 0xa17c1bc3c3db7038ull, 0x4be67fffe2237ea4ull, 0x5b5bc3a40e29649eull, 0x52040027c470aa7full, 0xa840b878f3e4fb8aull }}, {{ 0xa62aed0d052564fcull, 0x4ed915a5a6926234ull, 0xf700fffed562f26eull, 0x9195a4688d9dee2eull, 0x3428018dac66a8f9ull, 0x928734b986f1d367ull }}, {{ 0x7dad42823375f1d8ull, 0x147ad87881b7d60eull, 0xa609fff455dd784full, 0xafd86c15882b4dd5ull, 0x09900f88bc0299bfull, 0xb9480f3f45724208ull }}, {{ 0xe8c49916029b726bull, 0xcccc74b5112e5c90ull, 0x7c63ff8b5aa6b316ull, 0xde7438d751b10a58ull, 0x5fa09b57581a017cull, 0x3cd09878b6769450ull }}, {{ 0x17adfadc1a127833ull, 0xfffc8f12abcf9da9ull, 0xdbe7fb718a82fee3ull, 0xb08a386930ea6774ull, 0xbc46116971040ee0ull, 0x6025f4b720a1cb23ull }}, {{ 0xeccbcc9904b8b1faull, 0xffdd96bab61c289aull, 0x970fd26f691df4e7ull, 0xe566341be9280a90ull, 0x5abcae1e6a2894c6ull, 0xc17b8f274651ef65ull }}, {{ 0x3ff5fdfa2f36f3c7ull, 0xfea7e34b1d19960dull, 0xe69e385a1b2b910full, 0xf5fe09171b9069a5ull, 0x8b5ecd302595cfc4ull, 0x8ed39788bf3359f5ull }}, {{ 0x7f9bebc5d82585c6ull, 0xf28ee0ef22ffdc84ull, 0x022e33850fb3aa9full, 0x9bec5ae713a4207bull, 0x71b403e177da1db1ull, 0x9443eb5778018397ull }}, {{ 0xfc1735ba717739c0ull, 0x7994c9575dfe9d2cull, 0x15ce03329d04aa3full, 0x173b8d06c46944ceull, 0x710826ceae8528f0ull, 0xcaa7316ab00f23eaull }}, {{ 0xd8e819486ea84180ull, 0xbfcfdd69abf223c1ull, 0xda0c1ffa222ea67aull, 0xe8538243ac1cb00cull, 0x6a518412d1339960ull, 0xea87ee2ae0976728ull }}, {{ 0x7910fcd452928efdull, 0x7e1ea620b7756592ull, 0x84793fc555d280cbull, 0x134316a4b91ee080ull, 0x272f28bc2c03fdc9ull, 0x294f4dacc5ea0794ull }}, {{ 0xbaa9e04b39b995ddull, 0xed327d472a95f7b8ull, 0x2cbc7db55a3907f2ull, 0xc09ee26f3b34c505ull, 0x87d79759b827e9daull, 0x9d1908bfbb244bc9ull }}, {{ 0x4aa2c2f0413fdaa6ull, 0x43f8e4c7a9dbad37ull, 0xbf5ce915863a4f7dull, 0x8634d858500fb233ull, 0x4e6be981318f228bull, 0x22fa577d4f6af5dfull }}, {{ 0xea5b9d628c7e8a7full, 0xa7b8efcca294c428ull, 0x79a11ad73e471ae4ull, 0x3e107373209cf605ull, 0x10371f0bef975973ull, 0x5dc76ae51a2d9ab9ull }}, {{ 0x279425d97cf168f9ull, 0x8d395dfe59cfa999ull, 0xc04b0c686ec70ceeull, 0x6ca4827f46219c36ull, 0xa22736775be97e80ull, 0xa9ca2cf305c80b3aull }}, {{ 0x8bc97a7ee16e19bfull, 0x843dabef821c9ffbull, 0x82ee7c1453c68151ull, 0x3e6d18f8bd501a23ull, 0x558820a9971ef104ull, 0xa1e5c17e39d0704aull }}, {{ 0x75dec8f4ce4d0175ull, 0x2a68b75b151e3fd3ull, 0x1d50d8cb45c10d2full, 0x7042f9b765210563ull, 0x5751469fe7356a2aull, 0x52f98eee422462e7ull }}, {{ 0x9ab3d9900f020e94ull, 0xa817298ed32e7e42ull, 0x252877f0b98a83d7ull, 0x629dc129f34a35dfull, 0x692cc23f081625a8ull, 0x3dbf954e956bdd09ull }}, {{ 0x0b067fa0961491cbull, 0x90e79f943fd0ee9aull, 0x7394af673f69266cull, 0xda298ba380e61ab7ull, 0x1bbf967650dd7893ull, 0x697bd511d636a25eull }}, {{ 0x6e40fc45dccdb1edull, 0xa90c3bca7e295204ull, 0x83ceda087a1b803dull, 0x859f746308fd0b2aull, 0x157be09f28a6b5c6ull, 0x1ed652b25e2257adull }}, {{ 0x4e89dabaa008f341ull, 0x9a7a55e8ed9d342cull, 0x26148454c5130268ull, 0x383a8bde59e26fa9ull, 0xd6d6c637968319c1ull, 0x345f3af7ad576cc2ull }}, {{ 0x11628b4a4059808dull, 0x08c75b19482409bbull, 0x7ccd2b4fb2be1816ull, 0x324976af82d85c9bull, 0x6463be2be11f018cull, 0x0bb84dacc56a3f9cull }}, {{ 0xadd970e6837f0584ull, 0x57c98efcd168614eull, 0xe003b11cfb6cf0dcull, 0xf6dea2db1c739e12ull, 0xebe56db6cb360f79ull, 0x753308bfb6267c1bull }}, {{ 0xca7e690122f6372bull, 0x6ddf95e02e13cd12ull, 0xc024eb21d241689bull, 0xa4b25c8f1c842cbcull, 0x36f64923f01c9ac3ull, 0x93fe577d1d80d917ull }}, {{ 0xe8f01a0b5d9e27b0ull, 0x4abbdac1ccc602bbull, 0x81712f52368e1612ull, 0x6ef79d971d29bf5full, 0x259edb67611e0ba4ull, 0xc7ef6ae327087ae8ull }}, {{ 0x19610471a82d8ce4ull, 0xeb568b91ffbc1b57ull, 0x0e6bd936218cdcb6ull, 0x55ac27e723a179bbull, 0x78349209cb2c746cull, 0xcf5a2cdf8654cd11ull }}, {{ 0xfdca2c7091c780edull, 0x316173b3fd591166ull, 0x90367c1d4f809f25ull, 0x58b98f07644ec14eull, 0xb20db461efbc8c3bull, 0x1985c0bb3f5002aeull }}, {{ 0xe9e5bc65b1cb0940ull, 0xedce8507e57aae05ull, 0xa220d9251b063773ull, 0x773f9649eb138d11ull, 0xf4890bd35d5d7a51ull, 0xff39875079201ad2ull }}, {{ 0x22f95bf8f1ee5c7dull, 0x4a11324ef6cacc3bull, 0x55487b730e3e2a87ull, 0xa87bdee32ec382b0ull, 0x8d5a7641a5a6c72eull, 0xf83f4924bb410c3dull }}, {{ 0x5dbd97b9734f9ce6ull, 0xe4abf715a3ebfa4full, 0x54d4d27e8e6da948ull, 0x94d6b4dfd3a31ae3ull, 0x85889e907883c7d2ull, 0xb278db6f508a7a67ull }}, {{ 0xa967ed3e811c2100ull, 0xeeb7a6d86737c719ull, 0x505038f190489cd8ull, 0xd06310be445f0ce1ull, 0x375631a4b525ce39ull, 0xf8b892592568c80bull }}, {{ 0x9e0f44710b1949fdull, 0x532c8474082dc700ull, 0x2322396fa2d62079ull, 0x23dea76eabb680cdull, 0x295df06f137a0e42ull, 0xb735b77b7617d070ull }}, {{ 0x2c98ac6a6efce3e2ull, 0x3fbd2c8851c9c606ull, 0x5f563e5c5c5d44bdull, 0x66b28a52b5210803ull, 0x9dab6456c2c48e95ull, 0x28192ad29cee2461ull }}, {{ 0xbdf6bc2855e0e6d2ull, 0x7d63bd5331e1bc3dull, 0xb95e6f9b9ba4af64ull, 0x02f9673b134a5021ull, 0x28b1eb639bad91d6ull, 0x90fbac3a214d6bd0ull }}, {{ 0x6ba359935ac90430ull, 0xe5e5653ff2d15a69ull, 0x3db05c14146ed9ecull, 0x1dbe084ec0e72151ull, 0x96f331e414c7b25cull, 0xa9d4ba454d063621ull }}, {{ 0x34617fc18bda29e0ull, 0xfaf5f47f7c2d881eull, 0x68e398c8cc548340ull, 0x296c531389074d2cull, 0xe57ff2e8cfccf799ull, 0xa24f46b5023e1d4full }}, {{ 0x0bcefd8f7685a2bcull, 0xcd9b8cfad9c7512eull, 0x18e3f7d7fb4d2089ull, 0x9e3b3ec35a4903bcull, 0xf6ff7d181e01abfbull, 0x5718c312166d251eull }}, {{ 0x7615e79aa1385b5cull, 0x081381cc81c92bccull, 0xf8e7ae6fd1034562ull, 0x2e5073a186da2558ull, 0xa5fae2f12c10b7d4ull, 0x66f79eb4e0437335ull }}, {{ 0x9cdb0c0a4c339199ull, 0x50c311fd11dbb5fcull, 0xb90cd05e2a20b5d4ull, 0xcf24844f44857579ull, 0x7bccdd6bb8a72e49ull, 0x05ac3310c2a28018ull }}, {{ 0x208e7866fa03aff7ull, 0x279eb3e2b2951bdeull, 0x3a8023ada5471a4bull, 0x176d2b18ad3696c1ull, 0xd600a6353687cee2ull, 0x38b9fea79a5900f4ull }}, {{ 0x4590b405c424dfa6ull, 0x8c3306daf9d316adull, 0x490164c874c706efull, 0xea43aef6c421e38cull, 0x5c067e14214e14d4ull, 0x3743f28c077a0990ull }}, {{ 0xb7a70839a970bc77ull, 0x79fe448dc23ee2c4ull, 0xda0defd48fc6455bull, 0x26a4d5a3a952e37aull, 0x9840ecc94d0cd051ull, 0x28a779784ac45fa3ull }}, {{ 0x2c8652409e675caaull, 0xc3eead899674dbafull, 0x848b5e4d9dbeb592ull, 0x827058649d3ce2ccull, 0xf2893fdd0280232bull, 0x968abeb2ebabbc63ull }}, {{ 0xbd3f368630099ea5ull, 0xa752c75fe09094d7ull, 0x2d71af08297317bbull, 0x186373ee2460dbfdull, 0x795c7ea219015fb3ull, 0xe16b72fd34b55be7ull }}, {{ 0x6478213de060326full, 0x893bc9bec5a5d06dull, 0xc670d6519e7eed54ull, 0xf3e2874d6bc897e3ull, 0xbd9cf254fa0dbcfeull, 0xce327de40f15970aull }}, {{ 0xecb14c6ac3c1f851ull, 0x5c55e173b87a2445ull, 0xc0685f3030f5454dull, 0x86d9490635d5eee5ull, 0x68217751c48961f5ull, 0x0df8eae896d7e66bull }}, {{ 0x3eecfc2ba593b32cull, 0x9b5ace8534c56abbull, 0x8413b7e1e994b505ull, 0x447cda3e1a5b54f9ull, 0x114ea931ad5dd397ull, 0x8bb92d15e46f0032ull }}, {{ 0x7541d9b477c4ffb3ull, 0x118c11340fb62b50ull, 0x28c52ed31fcf1238ull, 0xace0866d079151bfull, 0xad129bf0c5aa43e8ull, 0x753bc2daec5601f4ull }}, {{ 0x9492810cadb1fd02ull, 0xaf78ac089d1db124ull, 0x97b3d43f3e16b630ull, 0xc0c540424bad3177ull, 0xc2ba1767b8a6a716ull, 0x94559c8d3b5c138eull }}, {{ 0xcdb90a7ec8f3e215ull, 0xdab6b8562328eb6dull, 0xed064a786ce31de6ull, 0x87b48296f4c3eeabull, 0x9b44ea0d368286e3ull, 0xcb581d845198c393ull }}, {{ 0x093a68f3d986d4d3ull, 0x8b23335d5f99324aull, 0x423ee8b440df2b04ull, 0x4d0d19e58fa752b7ull, 0x10b12484211944e3ull, 0xf171272b2ff7a3c4ull }}, {{ 0x5c4819867f445042ull, 0x6f6001a5bbfbf6e4ull, 0x9675170a88b7ae2dull, 0x028302f79c893b28ull, 0xa6eb6d294afcb0e1ull, 0x6e6b87afdfac65a8ull }}, {{ 0x9ad0ff40f8ab2297ull, 0x59c0107957d7a4ebull, 0xe092e669572ccdc6ull, 0x191e1dac1d5c4f95ull, 0x8532439ceddee8caull, 0x50334cdebcbbf896ull }}, {{ 0x0c29f889b6af59e6ull, 0x8180a4bd6e6c7134ull, 0xc5bd001d67c009bfull, 0xfb2d28b9259b1bdaull, 0x33f6a4214ab517e4ull, 0x220100b35f57b5e1ull }}, {{ 0x79a3b56122d982fdull, 0x0f066f66503c6c08ull, 0xb96201260d80617bull, 0xcfc3973b780f168bull, 0x07a2694ceb12eef1ull, 0x540a0701b96d1accull }}, {{ 0xc06515cb5c7f1de2ull, 0x964059ff225c3854ull, 0x3dd40b7c8703ceceull, 0x1da3e852b096e175ull, 0x4c581d012ebd5572ull, 0x486446113e430bf8ull }}, {{ 0x83f2d9f19cf72ad3ull, 0xde8383f7579a334full, 0x6a4872dd46261411ull, 0x2867133ae5e4ce94ull, 0xfb71220bd3655675ull, 0xd3eabcac6e9e77b2ull }}, {{ 0x277c837021a7ac3aull, 0xb12327a96c06011bull, 0x26d47ca4bd7cc8b2ull, 0x9406c04cfaf011ccull, 0xd26b547641f56093ull, 0x472b5ebc5230acfdull }}, {{ 0x8add2261508cba41ull, 0xeb5f8c9e383c0b0full, 0x844cde6f66dfd6faull, 0xc8438301cd60b1f9ull, 0x38314c9e9395c5c3ull, 0xc7b1b35b35e6c1eaull }}, {{ 0x6ca357cd257f4685ull, 0x31bb7e2e32586e9bull, 0x2b00b05a04be65cdull, 0xd2a31e1205c6f3bfull, 0x31ecfe31c3d9b9a5ull, 0xccf101901b039326ull }}, {{ 0x3e616e0376f8c136ull, 0xf152edcdf7745212ull, 0xae06e3842f6ffa03ull, 0x3a5f2cb439c58577ull, 0xf341edf1a681407aull, 0x016a0fa10e23bf7dull }}, {{ 0x6fce4c22a5b78c1dull, 0x6d3d4a0baa8b34b6ull, 0xcc44e329da5fc427ull, 0x47b7bf0a41b736acull, 0x80934b70810c84c6ull, 0x0e249c4a8d657aebull }}, {{ 0x5e0ef95a792b7921ull, 0x4464e474a9700f20ull, 0xfab0dfa287bda98aull, 0xcd2d7666912822bfull, 0x05c0f2650a7d2fbeull, 0x8d6e1ae985f6cd33ull }}, {{ 0xac95bd88bbb2bb47ull, 0xabf0ec8e9e609743ull, 0xcae8bc594d689f66ull, 0x03c6a001ab915b7full, 0x398977f268e3dd74ull, 0x864d0d1f3ba403feull }}, {{ 0xbdd9675754fb50c3ull, 0xb7693d922fc5e8a4ull, 0xed175b7d06163a02ull, 0x25c24010b3ad92fdull, 0x3f5eaf7818e6a688ull, 0x3f028338546827eeull }}, {{ 0x6a7e096951d1279eull, 0x2a1c67b5ddbb166full, 0x42e992e23cde441bull, 0x799680a704c7bdebull, 0x79b2dab0f9028151ull, 0x761920334c118f4eull }}, {{ 0x28ec5e1d322b8c2dull, 0xa51c0d1aa94ee05aull, 0x9d1fbcd660aea90full, 0xbfe106862fcd6b30ull, 0xc0fc8ae9ba190d2eull, 0x9cfb4200f8af9910ull }}, {{ 0x993bad23f5b379c3ull, 0x7318830a9d14c385ull, 0x233d605fc6d29a9cull, 0x7eca413dde062fe6ull, 0x89dd6d2144fa83d3ull, 0x21d09409b6dbfaa7ull }}, {{ 0xfc54c3679902c19aull, 0x7ef51e6a22cfa337ull, 0x6065c3bdc43a0a1cull, 0xf3e68c6aac3ddefdull, 0x62a6434cb1c92642ull, 0x5225c8612497ca8bull }}, {{ 0xdb4fa20bfa1b8fffull, 0xf59330255c1c602full, 0xc3f9a569aa44651cull, 0x87017c2aba6ab5e5ull, 0xda7ea0fef1db7e9dull, 0x3579d3cb6dede971ull }}, {{ 0x911c5477c5139ff8ull, 0x97bfe175991bc1deull, 0xa7c07620a6abf321ull, 0x460ed9ab482b1af9ull, 0x88f249f57292f227ull, 0x16c245f24b4b1e72ull }}, {{ 0xab1b4cadb2c43fb0ull, 0xed7ece97fb1592b1ull, 0x8d849d4682b77f4full, 0xbc9480b0d1af0dc0ull, 0x5976e39679bd7588ull, 0xe396bb76f0ef3079ull }}, {{ 0xaf10fec8fbaa7cdfull, 0x46f411efced7baf0ull, 0x872e24c11b2af91full, 0x5dcd06e830d68985ull, 0x7ea4e3e0c1669757ull, 0xe3e352a56957e4bdull }}, {{ 0xd6a9f3d9d4a8e0b3ull, 0xc588b35e146d4d66ull, 0x47cd6f8b0fadbb38ull, 0xaa024511e8615f37ull, 0xf270e6c78e01e969ull, 0xe6e13a761d6eef66ull }}, {{ 0x62a386824e98c6ffull, 0xb75701accc450604ull, 0xce065b6e9cc95037ull, 0xa416b2b313cdb828ull, 0x786903cb8c131e20ull, 0x04cc489d26555a05ull }}, {{ 0xda63411711f7c5f7ull, 0x296610bffab23c2bull, 0x0c3f92521fdd222dull, 0x68e2fafec6093198ull, 0xb41a25f378bf2d46ull, 0x2ffad6237f558436ull }}, {{ 0x87e08ae6b3adbba3ull, 0x9dfca77fcaf659b6ull, 0x7a7bb7353ea355c3ull, 0x18ddcdf3bc5beff0ull, 0x09057b82b777c4c0ull, 0xdfcc5d62f9572a23ull }}, {{ 0x4ec56d0304c95461ull, 0x2bde8afded9f8121ull, 0xc8d52814726159a4ull, 0xf8aa0b855b975f64ull, 0x5a36d31b2aadaf80ull, 0xbdfba5ddbd67a55eull }}, {{ 0x13b6421e2fdd4bc9ull, 0xb6b16deb483b0b4dull, 0xd85390cc77cd8069ull, 0xb6a4733593e9b9efull, 0x86243f0faac8db09ull, 0x6bd47aa9660c75afull }}, {{ 0xc51e952ddea4f5daull, 0x22ee4b30d24e7102ull, 0x7343a7fcae070421ull, 0x226c8017c721435eull, 0x3d6a769cabd88e61ull, 0x364cca9dfc7c98dbull }}, {{ 0xb331d3cab2719a83ull, 0x5d4eefe837106a1bull, 0x80a48fdecc46294bull, 0x583d00edc74ca1b0ull, 0x6628a21eb6758fcbull, 0x1effea2bdcddf890ull }}, {{ 0xfff245eaf870091full, 0xa5155f1226a42514ull, 0x066d9eb3fabd9cf1ull, 0x72620949c8fe50e5ull, 0xfd96553320979df1ull, 0x35ff25b6a0abb5a3ull }}, {{ 0xff76bb2db4605b39ull, 0x72d5b6b5826972d1ull, 0x40483307cb682170ull, 0x77d45ce1d9ef28f2ull, 0xe7df53ff45ec2b6eull, 0x1bf7792246b51867ull }}, {{ 0xfaa34fc90bc39037ull, 0x7c592317181e7c33ull, 0x82d1fe4df2114e64ull, 0xae4ba0d283579976ull, 0x0eb947f8bb39b250ull, 0x17aabb56c312f40full }}, {{ 0xca611dda75a3a221ull, 0xdb7b5ee6f130da07ull, 0x1c33ef0b74ad0fecull, 0xcef44839216bfea1ull, 0x933ccfb75040f726ull, 0xecab51639ebd8896ull }}, {{ 0xe7cb2a889864554cull, 0x92d1b5056be8844dull, 0x1a0756728ec29f40ull, 0x158ad23b4e37f24bull, 0xc0601d292289a784ull, 0x3eb12de4336755e1ull }}, {{ 0x0defa955f3eb54f9ull, 0xbc31123637152b0bull, 0x04496079939a3885ull, 0xd76c36510e2f76efull, 0x83c1239b59608b28ull, 0x72ebcaea02095ad1ull }}, {{ 0x8b5c9d5b873151bcull, 0x59eab61e26d3ae6eull, 0x2addc4bfc4063539ull, 0x6a3a1f2a8ddaa556ull, 0x258b64117dc56f98ull, 0x7d35ed24145d8c2full }}, {{ 0x719e259347ed3154ull, 0x832b1d2d8444d051ull, 0xaca9af7da83e143dull, 0x264537a98a8a755dull, 0x7771e8aee9b65bf4ull, 0xe41b4368cba779d7ull }}, {{ 0x702d77c0cf43ed47ull, 0x1faf23c72ab0232eull, 0xbea0dae8926cca67ull, 0x7eb42c9f696895a8ull, 0xaa7316d5211f9789ull, 0xe910a217f48ac26aull }}, {{ 0x61c6ad8818a744c7ull, 0x3cd765c7aae15fd0ull, 0x72488d15b83fe807ull, 0xf309be3a1e15d897ull, 0xa87ee4534b3beb5eull, 0x1aa654ef8d6b982aull }}, {{ 0xd1c2c750f688afc3ull, 0x6069f9ccaccdbe23ull, 0x76d582d9327f1048ull, 0x7e616e452cda75eaull, 0x94f4eb40f05731b5ull, 0x0a7f515b8633f1aaull }}, {{ 0x319bc929a156dd9cull, 0xc423c1fec0096d66ull, 0xa4571c7bf8f6a2d3ull, 0xefce4eb3c0889b28ull, 0xd19130896367f116ull, 0x68f92d933e0770a9ull }}, {{ 0xf015dba04d64a816ull, 0xa96593f3805e45fdull, 0x6b671cd7b9a25c45ull, 0x5e0f130585560f96ull, 0x2fabe55de20f6ae5ull, 0x19bbc7c06c4a66a2ull }}, {{ 0x60da944305ee90dbull, 0x9df7c78303aebbebull, 0x3207206d40579ab8ull, 0xac96be37355c9be0ull, 0xdcb6f5aad49a2cf5ull, 0x0155cd843ae80255ull }}, {{ 0xc889ca9e3b51a88aull, 0x2badcb1e24d35731ull, 0xf4474444836c0b36ull, 0xbde36e28159e16c1ull, 0x9f2598ac4e05c198ull, 0x0d5a072a4d10175aull }}, {{ 0xd561ea2e5130955full, 0xb4c9ef2d704167f1ull, 0x8ac8aaad2238701dull, 0x6ae24d90d82ce393ull, 0x3777f6bb0c398ff7ull, 0x858447a702a0e98aull }}, {{ 0x55d325cf2be5d5b9ull, 0x0fe357c6628e0f72ull, 0x6bd6aac356346129ull, 0x2cd707a871c0e3c3ull, 0x2aafa34e7a3f9faaull, 0x372acc861a491f66ull }}, {{ 0x5a3f7a17b6fa593dull, 0x9ee16dbfd98c9a77ull, 0x3662aba15e0bcb9aull, 0xc0664c947188e5a2ull, 0xaadc6110c67c3ca5ull, 0x27abfd3d06db39fdull }}, {{ 0x867ac4ed25c77c66ull, 0x34ce497e7f7e08a9ull, 0x1fdab44dac75f40aull, 0x83fefdcc6f58f856ull, 0xac9bcaa7c0da5e79ull, 0x8cb7e462449043e8ull }}, {{ 0x40cbb14379cadbf7ull, 0x100edef0faec569full, 0x3e8b0b08bc9b8866ull, 0x27f5e9fc5979b35dull, 0xbe15ea8d8887b0bfull, 0x7f2eebd6ada2a716ull }}, {{ 0x87f4eca2c1ec97a9ull, 0xa094b569cd3b6238ull, 0x716e6e575e1353fcull, 0x8f9b23db7ec101a4ull, 0x6cdb2987554ce777ull, 0xf7d53662c85a86e3ull }}, {{ 0x4f913e5b933dec9eull, 0x45cf16220451d635ull, 0x6e504f69acc147deull, 0x9c0f6692f38a106cull, 0x408f9f4955010aabull, 0xae541fdbd38944e2ull }}, {{ 0x1bac6f93c06b3e2aull, 0xba16dd542b325e15ull, 0x4f231a20bf8cceaeull, 0x189a01bd8364a43cull, 0x859c38dd520a6ab4ull, 0xcf493e96435cb0d6ull }}, {{ 0x14bc5bc584306da5ull, 0x44e4a549aff7acd3ull, 0x175f05477b8012d3ull, 0xf604116721ee6a5bull, 0x381a38a534682b08ull, 0x18dc71dea19ee861ull }}, {{ 0xcf5b95b729e44876ull, 0xb0ee74e0dfacc03eull, 0xe9b634cad300bc40ull, 0x9c28ae075350278eull, 0x310636740c11ae59ull, 0xf89c72b2503513ccull }}, {{ 0x1993d927a2ead4a0ull, 0xe95090c8bcbf8274ull, 0x211e0fec3e075a86ull, 0x1996cc4941218b95ull, 0xea3e208878b0cf80ull, 0xb61c7af72212c5f9ull }}, {{ 0xffc67b8c5d2c4e3eull, 0x1d25a7d75f7b1888ull, 0x4b2c9f3a6c498945ull, 0xffe3fadc8b4f73d3ull, 0x266d4554b6e81b00ull, 0x1d1ccda754bbbbc3ull }}, {{ 0xfdc0d37ba3bb0e67ull, 0x23788e69bacef559ull, 0xefbe38483adf5cb3ull, 0xfee7cc9d711a8640ull, 0x8044b54f25110e09ull, 0x232008894f55559full }}, {{ 0xe98842d4654e9009ull, 0x62b590214c159583ull, 0x5d6e32d24cb99effull, 0xf50dfe266b093e89ull, 0x02af151772aa8c63ull, 0x5f40555d1955583bull }}, {{ 0x1f529c4bf511a057ull, 0xdb17a14cf8d7d727ull, 0xa64dfc36ff4035f9ull, 0x928bed802e5c715dull, 0x1ad6d2ea7aa97be7ull, 0xb88355a2fd55724eull }}, {{ 0x393a1af792b04366ull, 0x8eec4d01b86e6787ull, 0x7f0bda25f8821bc2ull, 0xb9774701cf9c6da8ull, 0x0c643d28ca9ed70bull, 0x3521585de556770dull }}, {{ 0x3c450dabbae2a1f9ull, 0x953b021134500b48ull, 0xf676857bb5151599ull, 0x3ea8c6121c1c4894ull, 0x7bea6397ea346675ull, 0x134d73aaf560a682ull }}, {{ 0x5ab288b54cda53bcull, 0xd44e14ac0b2070d2ull, 0xa0a136d512d2d7ffull, 0x7297bcb5191ad5d1ull, 0xd727e3ef260c0094ull, 0xc10684ad95c68118ull }}, {{ 0x8af9571500874553ull, 0x4b0cceb86f446837ull, 0x464c2452bc3c6ffeull, 0x79ed5f12fb0c5a30ull, 0x678ee7577c7805ccull, 0x8a412ec7d9c10af8ull }}, {{ 0x6dbd66d20548b540ull, 0xee80133458ac122bull, 0xbef96b3b5a5c5feeull, 0xc345b6bdce7b85e2ull, 0x0b95096adcb039fcull, 0x668bd3ce818a6db4ull }}, {{ 0x4966043434d71480ull, 0x5100c00b76b8b5b2ull, 0x75be3051879bbf55ull, 0xa0b9236a10d33adbull, 0x73d25e2c9ee243dfull, 0x017646110f684908ull }}, {{ 0xddfc2a0a1066ccfeull, 0x2a078072a33718f6ull, 0x996de32f4c157955ull, 0x473b6224a8404c92ull, 0x8637adbe34d6a6bcull, 0x0e9ebcaa9a12da54ull }}, {{ 0xabd9a464a40401ecull, 0xa44b047a6026f9a4ull, 0xfe4adfd8f8d6bd53ull, 0xc851d56e9282fdb9ull, 0x3e2cc96e1062835aull, 0x92335eaa04bc874dull }}, {{ 0xb6806bee68281335ull, 0x6aee2cc7c185c06eull, 0xeeecbe79b8636544ull, 0xd3325651b91de943ull, 0x6dbfde4ca3d9218bull, 0xb601b2a42f5d4904ull }}, {{ 0x210437501190c012ull, 0x2d4dbfcd8f398453ull, 0x553f70c133e1f4acull, 0x3ff75f313b2b1ca7ull, 0x497eaefe667b4f76ull, 0x1c10fa69d9a4da2cull }}, {{ 0x4a2a2920afa780afull, 0xc5097e07983f2b3full, 0x547a678c06d38eb9ull, 0x7fa9b7ec4faf1e89ull, 0xdef2d5f000d11a9eull, 0x18a9c822807085baull }}, {{ 0xe5a59b46dc8b06d7ull, 0xb25eec4bf277b078ull, 0x4cc80b7844439341ull, 0xfca12f3b1cd7315dull, 0xb57c5b60082b0a30ull, 0xf6a1d1590465394cull }}, {{ 0xf87810c49d6e446bull, 0xf7b53af778ace4b8ull, 0xffd072b2aaa3c090ull, 0xde4bd84f2067eda4ull, 0x16db91c051ae65e9ull, 0xa2522d7a2bf43cffull }}, {{ 0xb4b0a7ae264eac2aull, 0xad144daab6c0ef39ull, 0xfe247afaaa6585a9ull, 0xaef67317440f4871ull, 0xe493b18330cffb22ull, 0x5735c6c5b78a61f6ull }}, {{ 0x0ee68ccd7f12b9a1ull, 0xc2cb08ab23895841ull, 0xed6ccdcaa7f738a0ull, 0xd5a07ee8a898d473ull, 0xedc4ef1fe81fcf5aull, 0x6819c3b92b67d3a4ull }}, {{ 0x95018006f6bb4046ull, 0x9bee56af635d728aull, 0x464009ea8fa83647ull, 0x5844f51695f84c87ull, 0x49b1573f113e198cull, 0x1101a53bb20e4471ull }}, {{ 0xd20f0045a35082baull, 0x174f62d9e1a67969ull, 0xbe8063299c921eccull, 0x72b192e1dbb2fd48ull, 0xe0ed6876ac6cff7bull, 0xaa107454f48eac6cull }}, {{ 0x349602b861251b48ull, 0xe919dc82d080be22ull, 0x7103dfa01db533f8ull, 0x7aefbcd294fde4d7ull, 0xc94614a2bc41fad2ull, 0xa4a48b518d92bc40ull }}, {{ 0x0ddc1b33cb7310d0ull, 0x1b029d1c25076d56ull, 0x6a26bc41291407b9ull, 0xcd5d6039d1eaf06aull, 0xdcbcce5b5a93cc38ull, 0x6e6d712f87bb5a87ull }}, {{ 0x8a991005f27ea823ull, 0x0e1a2319724a455cull, 0x25835a8b9ac84d3bull, 0x05a5c242332d6428ull, 0x9f600f9189c5fa38ull, 0x50466bdb4d51894eull }}, {{ 0x69faa03b78f2915aull, 0x8d055efe76e6b59dull, 0x772189740bd3044eull, 0x38799695ffc5e991ull, 0x39c09baf61bbc630ull, 0x22c03691052f5d12ull }}, {{ 0x23ca4252b979ad87ull, 0x8235b5f0a5031826ull, 0xa74f5e88763e2b11ull, 0x34bfe1dbfdbb1faeull, 0x418614d9d155bde2ull, 0x5b8221aa33d9a2b6ull }}, {{ 0x65e6973b3ec0c746ull, 0x16191b66721ef17dull, 0x8919b1549e6daeafull, 0x0f7ed297e94f3cd2ull, 0x8f3cd0822d596ad6ull, 0x931550a606805b1eull }}, {{ 0xfb01e8507387c8bbull, 0xdcfb120075356ee5ull, 0x5b00ed4e3048d2d6ull, 0x9af439ef1d186039ull, 0x98602515c57e2c5cull, 0xbed5267c41038f31ull }}, {{ 0xce131324834dd753ull, 0xa1ceb404941654fbull, 0x8e09450de2d83c64ull, 0x0d8a435722f3c23dull, 0xf3c172d9b6edbb9eull, 0x745380da8a2397efull }}, {{ 0x0cbebf6d210a6939ull, 0x5213082dc8df51d6ull, 0x8c5cb28adc725beeull, 0x8766a1675d859667ull, 0x858e7c812549542cull, 0x8b4308896563ef5full }}, {{ 0x7f737a434a681c3dull, 0x34be51c9d8b9325cull, 0x7b9ef96c9c77974full, 0x4a024e09a737e00bull, 0x3790dd0b74dd49bdull, 0x709e555df5e759bbull }}, {{ 0xfa82c6a0e8111a60ull, 0x0f6f31e2773bf79cull, 0xd435be3e1cabe918ull, 0xe4170c60882ec072ull, 0x2ba8a27290a4e164ull, 0x662f55ab9b098150ull }}, {{ 0xc91bc24910ab07c4ull, 0x9a57f2d8a857ac21ull, 0x4a196e6d1eb71af0ull, 0xe8e67bc551d3847cull, 0xb4965879a670cdf0ull, 0xfdd958b40e5f0d21ull }}, {{ 0xdb1596daa6ae4da7ull, 0x076f7c76936cb951ull, 0xe4fe504333270d66ull, 0x1900d5b532432cdaull, 0x0ddf74c080680b69ull, 0xea7d77088fb68351ull }}, {{ 0x8ed7e48a82cf0886ull, 0x4a5adca1c23f3d32ull, 0xf1ef229fff8685fcull, 0xfa085913f69fc08cull, 0x8aba8f850410721aull, 0x28e6a6559d21212aull }}, {{ 0x946eed691c165538ull, 0xe78c9e51967863f9ull, 0x73575a3ffb413bdaull, 0xc4537ac7a23d8581ull, 0x6b499b3228a4750dull, 0x99027f58234b4ba9ull }}, {{ 0xcc55461b18df542cull, 0x0b7e2f2fe0b3e7bfull, 0x8169867fd08c568dull, 0xab42cbcc5667370eull, 0x30e00ff5966c9289ull, 0xfa18f97160f0f49eull }}, {{ 0xfb54bd0ef8b949bcull, 0x72edd7dec7070d7dull, 0x0e1f40fe257b6182ull, 0xb09bf5fb60082691ull, 0xe8c09f97e03db960ull, 0xc4f9be6dc9698e2dull }}, {{ 0xd14f6295b73ce15bull, 0x7d4a6eb3c64686ebull, 0x8d3889ed76d1cf18ull, 0xe6179bd1c05181aaull, 0x17863beec2693dc6ull, 0xb1c17049de1f8dcbull }}, {{ 0x2d19d9d92860cd8dull, 0xe4e85305bec14536ull, 0x84356346a43216f4ull, 0xfcec1631832f10a9ull, 0xeb3e5753981c69c4ull, 0xf18e62e2ad3b89eeull }}, {{ 0xc302827b93c80784ull, 0xf1133e39738cb41dull, 0x2a15e0c269f4e590ull, 0xe138ddef1fd6a69full, 0x306f6943f11c21b1ull, 0x6f8fdcdac4536355ull }}, {{ 0x9e1918d3c5d04b26ull, 0x6ac06e3e837f0929ull, 0xa4dac7982390f7a9ull, 0xcc38ab573e628237ull, 0xe45a1ca76b1950f2ull, 0x5b9ea08bab41e153ull }}, {{ 0x2cfaf845ba22ef7dull, 0x2b844e7122f65ba0ull, 0x708bcbf163a9ac9eull, 0xfa36b1686fd9162cull, 0xeb851e8a2efd297bull, 0x94324574b092cd46ull }}, {{ 0xc1cdb2b9455d5adfull, 0xb32b106b5d9f9441ull, 0x6575f76de4a0be2dull, 0xc622ee145e7addbcull, 0x33333165d5e39ed7ull, 0xc9f6b68ee5bc04c5ull }}, {{ 0x9208fb3cb5a58cb5ull, 0xffaea431a83bca91ull, 0xf69baa4aee476dc8ull, 0xbd5d4ccbb0cca95bull, 0xffffedfa5ae4346dull, 0xe3a32194f9582fb3ull }}, {{ 0xb459d05f18777f10ull, 0xfcd269f09255e9afull, 0xa214a6ed4eca49d9ull, 0x65a4fff4e7fe9d97ull, 0xffff4bc78cea0c49ull, 0xe45f4fd1bd71dd07ull }}, {{ 0x0b8223b6f4aaf6a3ull, 0xe0382365b75b20ddull, 0x54ce854513e6e283ull, 0xf871ff910ff227ecull, 0xfff8f5cb81247addull, 0xebb91e316672a24full }}, {{ 0x731565258eada25bull, 0xc23161f9298f48a2ull, 0x501134b2c704d926ull, 0xb473fbaa9f758f3bull, 0xffb999f30b6cccabull, 0x353b2dee007a571full }}, {{ 0x7ed5f37792c8578full, 0x95edd3bb9f98d658ull, 0x20ac0efbc6307b83ull, 0x0c87d4aa3a979851ull, 0xfd40037e723ffeb5ull, 0x144fcb4c04c7673full }}, {{ 0xf45b82abbbd36b92ull, 0xdb4a45543bf85f74ull, 0x46b895d5bde4d323ull, 0x7d4e4ea649ebf32bull, 0xe48022f0767ff312ull, 0xcb1df0f82fca087full }}, {{ 0x8b931ab5564233b2ull, 0x90e6b54a57b3ba91ull, 0xc335da596af03f66ull, 0xe50f127ee3377fb0ull, 0xed015d64a0ff7eb8ull, 0xef2b69b1dde454feull }}, {{ 0x73bf0b155e9604f6ull, 0xa90314e76d0549afull, 0xa01a877e2d627a01ull, 0xf296b8f4e02afce7ull, 0x420da5ee49faf338ull, 0x57b220f2aaeb51f5ull }}, {{ 0x85766ed5b1dc319dull, 0x9a1ed10a4234e0daull, 0x41094aedc5d8c410ull, 0x79e33990c1ade10cull, 0x94887b4ee3cd8039ull, 0x6cf5497aad313394ull }}, {{ 0x36a05458f299f021ull, 0x05342a669610c889ull, 0x8a5ced49ba77a8a6ull, 0xc2e03fa790caca7aull, 0xcd54d114e607023eull, 0x4194decac3ec03cdull }}, {{ 0x22434b797a036147ull, 0x3409a801dca7d55cull, 0x67a144e148ac967cull, 0x9cc27c8ba7ebe8c9ull, 0x05502ad0fc461673ull, 0x8fd0b3eba738260aull }}, {{ 0x56a0f2bec421ccc5ull, 0x086090129e8e5599ull, 0x0c4cb0ccd6bde0daull, 0x1f98dd748f3717deull, 0x3521ac29dabce084ull, 0x9e27073488317c64ull }}, {{ 0x62497b73a951ffb0ull, 0x53c5a0ba318f57fdull, 0x7afee800636ac884ull, 0x3bf8a68d9826eeacull, 0x1350b9a28b60c529ull, 0x2d86480d51eedbeaull }}, {{ 0xd6ded2849d33fcdeull, 0x45b84745ef996fe5ull, 0xcdf51003e22bd52bull, 0x57b68187f18552bcull, 0xc127405971c7b39cull, 0xc73ed08533549724ull }}, {{ 0x64b4392e2407e0b0ull, 0xb932c8bb5bfe5efaull, 0x0b92a026d5b653b0ull, 0x6d210f4f6f353b60ull, 0x8b88837e71cd041bull, 0xc8742534014de76full }}, {{ 0xef0a3bcd684ec6e0ull, 0x3bfbd75197efb5c7ull, 0x73ba4184591f44e7ull, 0x434a991a581451c0ull, 0x735522f072022912ull, 0xd48974080d0b0a5bull }}, {{ 0x566656061313c4c3ull, 0x57d6692fef5d19cfull, 0x85468f2b7b38b108ull, 0xa0e9fb0770cb3184ull, 0x81535d6474159ab6ull, 0x4d5e8850826e6792ull }}, {{ 0x5fff5c3cbec5af9eull, 0x6e601bdf59a30219ull, 0x34c197b2d036ea53ull, 0x4923ce4a67efef2dull, 0x0d41a5ec88d80b22ull, 0x05b1532518500bb9ull }}, {{ 0xbff99a5f73b8dc30ull, 0x4fc116b9805e14fdull, 0x0f8fecfc22252742ull, 0xdb660ee80f5f57c4ull, 0x84907b3d58706f56ull, 0x38ed3f72f320753aull }}, {{ 0x7fc007ba853899dcull, 0x1d8ae33f03acd1e9ull, 0x9b9f41d955738897ull, 0x91fc951099b96da8ull, 0x2da4d06574645964ull, 0x39447a7d7f449449ull }}, {{ 0xfd804d493436029aull, 0x276ce07624c0331eull, 0x1438927d568355e7ull, 0xb3ddd2a6013e4896ull, 0xc87023f68beb7dedull, 0x3cacc8e6f8adcadbull }}, {{ 0xe70304dc0a1c1a06ull, 0x8a40c49d6f81ff35ull, 0xca35b8e561215b07ull, 0x06aa3a7c0c6ed5dcull, 0xd46167a17732eb49ull, 0x5ebfd905b6c9ec95ull }}, {{ 0x061e30986519043dull, 0x6687ae265b13f81bull, 0xe61938f5cb4d8e4bull, 0x42a648d87c545a9full, 0x4bce0c4ea7fd30daull, 0xb37e7a3923e33ddaull }}, {{ 0x3d2de5f3f2fa2a65ull, 0x014ccd7f8ec7b10eull, 0xfcfc3999f1078ef2ull, 0x9a7ed874db4b8a3eull, 0xf60c7b128fe3e886ull, 0x02f0c63b66e06a86ull }}, {{ 0x63cafb877dc5a7f0ull, 0x0d0006fb93ccea8eull, 0xe1da40036a4b9574ull, 0x08f4749090f36675ull, 0x9c7cceb99ee71542ull, 0x1d67be5204c42945ull }}, {{ 0xe5edd34ae9b88f5dull, 0x820045d3c601298full, 0xd286802226f3d688ull, 0x598c8da5a982009aull, 0x1ce013403506d494ull, 0x260d6f342fa99cb8ull }}, {{ 0xfb4a40ed2135999eull, 0x1402ba45bc0b9f9eull, 0x3941015585866155ull, 0x7f7d88789f14060cull, 0x20c0c08212444dcbull, 0x7c865809dca01f31ull }}, {{ 0xd0e689434c18002cull, 0xc81b46b958743c35ull, 0x3c8a0d57373fcd52ull, 0xfae754b636c83c7aull, 0x47878514b6ab09f2ull, 0xdd3f70629e4137ebull }}, {{ 0x29015ca0f8f001baull, 0xd110c33d748a5a1aull, 0x5d648568287e053bull, 0xcd094f1e23d25cc6ull, 0xcb4b32cf22ae637dull, 0xa47a63da2e8c2f30ull }}, {{ 0x9a0d9e49b9601140ull, 0x2aa7a0668d678505ull, 0xa5ed361194ec3456ull, 0x025d172d66379fbfull, 0xf0effc175acfe2eaull, 0x6cc7e685d179d7e7ull }}, {{ 0x04882ee13dc0ac7cull, 0xaa8c4401860b3238ull, 0x7b441cafd13a0b5dull, 0x17a2e7c5fe2c3d7cull, 0x695fd8e98c1edd24ull, 0x3fcf013a2ec26f0full }}, {{ 0x2d51d4cc6986bcdbull, 0xa97aa80f3c6ff630ull, 0xd0a91ede2c4471a8ull, 0xec5d0dbbedba66dcull, 0x1dbe791f7934a368ull, 0x7e160c45d398569aull }}, {{ 0xc5324ffc1f436093ull, 0x9eca90985c5f9de1ull, 0x269b34adbaac7096ull, 0x3ba28957494804a0ull, 0x2970bb3abc0e6219ull, 0xecdc7aba43f36205ull }}, {{ 0xb3f71fd938a1c5beull, 0x33e9a5f39bbc2ad1ull, 0x82100ec94abc65e2ull, 0x54595d68dcd02e41ull, 0x9e67504b588fd4fcull, 0x409ccb46a781d433ull }}, {{ 0x07a73e7c3651b967ull, 0x07207b841559ac31ull, 0x14a093dceb5bfad6ull, 0x4b7da618a021ce8full, 0x300922f1759e51dbull, 0x861ff0c28b124a04ull }}, {{ 0x4c8870da1f313e09ull, 0x4744d328d580b9eaull, 0xce45c6a13197cc5cull, 0xf2e87cf641521196ull, 0xe05b5d6e982f3290ull, 0x3d3f67996eb6e429ull }}, {{ 0xfd54688537ec6c5cull, 0xc8b03f9857074326ull, 0x0eb9c24befedfb9aull, 0x7d14e19e8d34afe4ull, 0xc391a651f1d7f9a9ull, 0x647a0bfe5324e9a2ull }}, {{ 0xe54c15342f3c3b96ull, 0xd6e27bf366489f85ull, 0x934196f75f4bd40bull, 0xe2d0d031840edee8ull, 0xa3b07f33726fc09eull, 0xecc477ef3f71205bull }}, {{ 0xf4f8d409d85a53dfull, 0x64d8d781fed63b3aull, 0xc08fe5a9b8f64876ull, 0xdc2821ef2894b515ull, 0x64e4f802785d8634ull, 0x3facaf587a6b4394ull }}, {{ 0x91b84862738746baull, 0xf0786b13f45e504dull, 0x859ef8a1399ed49full, 0x9991535795cf12d9ull, 0xf0f1b018b3a73e10ull, 0x7cbed974c830a3cbull }}, {{ 0xb132d3d88348c344ull, 0x64b42ec78baf2307ull, 0x3835b64c40344e3full, 0xffad416bda16bc7full, 0x6970e0f704886ca5ull, 0xdf747e8fd1e665f7ull }}, {{ 0xebfc467520d7a0acull, 0xef09d3cb74d75e4cull, 0x32191efa820b0e79ull, 0xfcc48e3684e35cf8ull, 0x1e68c9a62d543e7bull, 0xba8cf19e32fffbaaull }}, {{ 0x37dac093486c46b6ull, 0x566245f29069af01ull, 0xf4fb35c9146e90c3ull, 0xdfad8e2130e1a1b1ull, 0x3017e07dc54a70d7ull, 0x4981702dfdffd4a5ull }}, {{ 0x2e8b85c0d43ac321ull, 0x5fd6bb79a420d60cull, 0x91d019dacc51a7a1ull, 0xbcc78d4be8d050f3ull, 0xe0eec4e9b4e8686eull, 0xdf0e61cbebfe4e73ull }}, {{ 0xd17339884a4b9f48ull, 0xbe6352c069485c79ull, 0xb221028bfb308c4dull, 0x5fcb84f718232983ull, 0xc953b12111141453ull, 0xb68fd1f737ef1086ull }}, {{ 0x2e803f52e6f438cdull, 0x6fe13b841cd39cc2ull, 0xf54a1977cfe57b09ull, 0xbdf331a6f15f9f24ull, 0xdd44eb4aaac8cb41ull, 0x219e33a82f56a543ull }}, {{ 0xd102793d058a3805ull, 0x5ecc532920441f95ull, 0x94e4feae1ef6ce5eull, 0x6b7ff0856dbc3771ull, 0xa4b130eaabd7f091ull, 0x502e0491d96274a6ull }}, {{ 0x2a18bc623766302full, 0xb3fb3f9b42a93bdaull, 0xd0f1f2cd35a40fafull, 0x32ff6536495a2a6full, 0x6eebe92ab66f65aeull, 0x21cc2db27dd88e82ull }}, {{ 0xa4f75bd629fde1d7ull, 0x07d07c109a9c5685ull, 0x29737c0418689cddull, 0xfdf9f41edd85a85eull, 0x55371bab2059f8cdull, 0x51f9c8f8ea759118ull }}, {{ 0x71a9965da3ead263ull, 0x4e24d8a60a1b6138ull, 0x9e82d828f41620a2ull, 0xebc38934a73893adull, 0x542714af4383b80bull, 0x33c1d9b92897aaf3ull }}, {{ 0x709fdfa8672c37e1ull, 0x0d70767c6511cc34ull, 0x311c719988dd4657ull, 0x35a35c0e8835c4c8ull, 0x4986ced8a3253077ull, 0x0592813b95ecad81ull }}, {{ 0x663ebc9407ba2ec9ull, 0x8664a0dbf2b1fa0cull, 0xeb1c6fff58a4bf66ull, 0x186198915219afd1ull, 0xdf4414765f73e4a8ull, 0x37b90c53db3ec70cull }}, {{ 0xfe735dc84d45d3d6ull, 0x3fee48977af3c47bull, 0x2f1c5ff9766f7a01ull, 0xf3cff5ad3500de33ull, 0xb8a8cc9fba86ee90ull, 0x2d3a7b469073c680ull }}, {{ 0xf081a9d304ba4661ull, 0x7f4ed5eacd85acd7ull, 0xd71bbfbea05ac40cull, 0x861f98c41208adffull, 0x3697fe3d494551a9ull, 0xc448d0c1a485c107ull }}, {{ 0x6510a23e2f46bfc9ull, 0xf9145b2c0738c06full, 0x67157d72438ba87cull, 0x3d3bf7a8b456cbfeull, 0x21efee64dcb5309full, 0xaad827906d398a48ull }}, {{ 0xf2a6566dd8c37ddaull, 0xbacb8fb848378459ull, 0x06d6e676a37494e1ull, 0x6457ac970b63f7f0ull, 0x535f4ff09f13e638ull, 0xac718ba4443f66d1ull }}, {{ 0x7a7f604a77a2ea83ull, 0x4bf39d32d22b2b83ull, 0x446500a2628dd0d1ull, 0xeb6cbde671e7af60ull, 0x41b91f6636c6fe33ull, 0xbc6f746aaa7a042dull }}, {{ 0xc8f9c2e8ac5d2922ull, 0xf78423fc35afb322ull, 0xabf20657d98a282cull, 0x323f6b00730cd9c2ull, 0x913b39fe23c5ee07ull, 0x5c5a8c2aa8c429c4ull }}, {{ 0xd9c19d16bba39b59ull, 0xab2967da18dcff5bull, 0xb7743f6e7f6591c1ull, 0xf67a2e047e80819aull, 0xac5043ed65bb4c47ull, 0x9b8979aa97a9a1adull }}, {{ 0x819022e354641178ull, 0xaf9e0e84f8a1f996ull, 0x2a8a7a50f9f7b190ull, 0xa0c5cc2cf105100bull, 0xbb22a745f950facfull, 0x135ec0a9eca050c8ull }}, {{ 0x0fa15ce14be8aeadull, 0xdc2c9131b653bfe1ull, 0xa968c729c3acefa6ull, 0x47b9f9c16a32a06full, 0x4f5a88bbbd29cc1cull, 0xc1b386a33e4327d7ull }}, {{ 0x9c4da0ccf716d2beull, 0x99bdabf11f457ecaull, 0x9e17c7a1a4c15c84ull, 0xcd43c18e25fa445cull, 0x1989575563a1f91aull, 0x910342606e9f8e69ull }}, {{ 0x1b084801a6e43b71ull, 0x0168b76b38b6f3eaull, 0x2cedcc506f8d9d2eull, 0x04a58f8d7bc6ab9eull, 0xff5d6955e453bb0cull, 0xaa2097c4523b901aull }}, {{ 0x0e52d01084ea5267ull, 0x0e172a3037258725ull, 0xc149fb245b8823ccull, 0x2e779b86d5c2b42dull, 0xf9a61d5aeb454e78ull, 0xa545edab3653a10dull }}, {{ 0x8f3c20a531273806ull, 0x8ce7a5e227774772ull, 0x8ce3cf6b935165f8ull, 0xd0ac1344599b09c9ull, 0xc07d258d30b510b1ull, 0x74bb48b01f444a8bull }}, {{ 0x98594673eb883039ull, 0x810c7ad58aa8ca79ull, 0x80e61a33c12dfbb5ull, 0x26b8c0ab800e61dfull, 0x84e37783e712a6f2ull, 0x8f50d6e138aae975ull }}, {{ 0xf37cc0873351e238ull, 0x0a7ccc576a97e8bfull, 0x08fd06058bcbd517ull, 0x833786b3008fd2bbull, 0x30e2ab2706ba8575ull, 0x992864cc36ad1e97ull }}, {{ 0x82df85480132d633ull, 0x68dffb6a29ef177full, 0x59e23c3775f652e6ull, 0x202b42fe059e3b4eull, 0xe8daaf8643493697ull, 0xfb93effa22c331e7ull }}, {{ 0x1cbb34d00bfc5e03ull, 0x18bfd225a356eafbull, 0x82d65a2a9b9f3d00ull, 0x41b09dec382e510full, 0x188adb3ea0dc21e7ull, 0xd3c75fc55b9ff30full }}, {{ 0x1f50102077dbac1aull, 0xf77e357861652dcfull, 0x1c5f85aa14386200ull, 0x90e62b3a31cf2a9bull, 0xf56c907248995308ull, 0x45c9bdb5943f7e96ull }}, {{ 0x3920a144ae94b904ull, 0xaaee16b3cdf3ca17ull, 0x1bbb38a4ca33d409ull, 0xa8fdb045f217aa0full, 0x963da476d5fd3e55ull, 0xb9e16917ca7af1e5ull }}, {{ 0x3b464caed1cf3a29ull, 0xad4ce3060b85e4e8ull, 0x1550366fe6064860ull, 0x99e8e2bb74eca497ull, 0xde686ca45be46f58ull, 0x42ce1aede8cd72f7ull }}, {{ 0x50befed432184598ull, 0xc500de3c733af112ull, 0xd522205efc3ed3c6ull, 0x0318db52913e6de6ull, 0xb0143e6b96ec5976ull, 0x9c0d0d4b18067daeull }}, {{ 0x2775f449f4f2b7edull, 0xb208ae5c804d6ab7ull, 0x535543b5da7445c3ull, 0x1ef89139ac704b04ull, 0xe0ca7033e53b7e9cull, 0x188284eef040e8d2ull }}, {{ 0x8a9b8ae3917b2f40ull, 0xf456cf9d03062b27ull, 0x4154a51a888ab9a4ull, 0x35b5ac40bc62ee2bull, 0xc7e86206f452f219ull, 0xf51931556289183cull }}, {{ 0x6a136ce3aecfd87eull, 0x8b641c221e3daf8bull, 0x8d4e7309556b4071ull, 0x1918ba875bdd4db0ull, 0xcf13d4458b3d74fcull, 0x92fbed55d95af25full }}, {{ 0x24c240e4d41e74ecull, 0x71e919552e68db72ull, 0x85107e5d5630846full, 0xfaf7494996a508e5ull, 0x16c64ab7706691d8ull, 0xbdd7455a7d8d77beull }}, {{ 0x6f9688f049309135ull, 0x731afd53d0189275ull, 0x32a4efa55de52c5aull, 0xcda8dcdfe27258f7ull, 0xe3beeb2a6401b279ull, 0x6a68b588e786ad6cull }}, {{ 0x5be15962dbe5ac17ull, 0x7f0de54620f5b896ull, 0xfa715c75aaf3bb88ull, 0x0898a0bed87779a7ull, 0xe5752fa7e810f8c2ull, 0x281717590b42c640ull }}, {{ 0x96cd7ddc96f8b8e5ull, 0xf68af4bd499935dfull, 0xc86d9c98ad855354ull, 0x55f6477474aac08full, 0xf693dc8f10a9b794ull, 0x90e6e97a709bbe88ull }}, {{ 0xe406ea9de5b738edull, 0xa16d8f64dffc1abbull, 0xd4481df6c7354151ull, 0x5b9eca8c8eab859dull, 0xa1c69d96a6a12bcbull, 0xa9051ec866157159ull }}, {{ 0xe8452a2af9283944ull, 0x4e4799f0bfd90b56ull, 0x4ad12ba3c8148d30ull, 0x9433e97d92b3382aull, 0x51c227e2824bb5f1ull, 0x9a3333d3fcd66d80ull }}, {{ 0x12b3a5adbb923ca6ull, 0x0ecc03677e7a7165ull, 0xec2bb465d0cd83e3ull, 0xca071ee7bb0031a6ull, 0x31958ed916f51b6full, 0x06000647e0604703ull }}, {{ 0xbb0478c953b65e7full, 0x93f8220af0c86df2ull, 0x39b50bfa280726deull, 0xe447350d4e01f085ull, 0xefd7947ae593125dull, 0x3c003ecec3c2c61full }}, {{ 0x4e2cb7dd451fb0f9ull, 0xc7b1546d67d44b7bull, 0x411277c5904784b1ull, 0xeac812850c136534ull, 0x5e6bccccf7beb7aaull, 0x58027413a59bbd3full }}, {{ 0x0dbf2ea4b33ce9b5ull, 0xcced4c460e4af2d1ull, 0x8ab8adb7a2cb2ef1ull, 0x2bd0b93278c1f40aull, 0xb0360001ad732cadull, 0x701888c478156479ull }}, {{ 0x8977d26f00612116ull, 0x0144fabc8eed7c2aull, 0x6b36c92c5befd572ull, 0xb6273bf8b7938869ull, 0xe21c0010c67fbec3ull, 0x60f557acb0d5ecc0ull }}, {{ 0x5eae385603cb4adaull, 0x0cb1cb5d9546d9a9ull, 0x3023dbbb975e5674ull, 0x1d8857b72bc3541eull, 0xd51800a7c0fd73a5ull, 0xc9956cbee85b3f88ull }}, {{ 0xb2ce335c25f0ec84ull, 0x7ef1f1a7d4c4809dull, 0xe1669553e9af6088ull, 0x27536d27b5a1492dull, 0x52f0068d89e68473ull, 0xdfd63f7513907b58ull }}, {{ 0xfc0e01997b693d28ull, 0xf573708e4fad0628ull, 0xce01d54720d9c554ull, 0x8942438d184cdbcaull, 0x3d60418763012c7full, 0xbe5e7a92c3a4d173ull }}, {{ 0xd88c0ffed21c6394ull, 0x9682658f1cc23d99ull, 0x0c1254c74881b551ull, 0x5c96a382f30095ecull, 0x65c28f49de0bbcfbull, 0x6fb0c9bba4702e80ull }}, {{ 0x75789ff4351be3cbull, 0xe117f7971f966802ull, 0x78b74fc8d511152full, 0x9de2631d7e05db38ull, 0xf99998e2ac7561d1ull, 0x5ce7e1546c61d103ull }}, {{ 0x96b63f8a1316e5f2ull, 0xcaefabe73be01018ull, 0xb7291dd852aad3deull, 0x2ad7df26ec3a9034ull, 0xbffff8dabc95d230ull, 0xa10ecd4c3bd22a27ull }}, {{ 0xe31e7b64bee4fb71ull, 0xed5cb70856c0a0f5ull, 0x279b2a733aac46b3ull, 0xac6eb7853a49a20full, 0x7fffb88b5dda35e1ull, 0x4a9404fa5635a58dull }}, {{ 0xdf30d1ef74f1d26eull, 0x459f26536386499aull, 0x8c0fa8804abac307ull, 0xbc532b3446e05497ull, 0xfffd3571aa861ad0ull, 0xe9c831c75e187786ull }}, {{ 0xb7e8335a91723847ull, 0xb8377f41e33ee00cull, 0x789c9502eb4b9e48ull, 0x5b3fb00ac4c34debull, 0xffe41670a93d0c27ull, 0x21d1f1c9acf4ab45ull }}, {{ 0x2f120189ae7632c9ull, 0x322af892e074c07full, 0xb61dd21d30f42ed7ull, 0x907ce06bafa10b32ull, 0xfee8e0669c627989ull, 0x523371e0c18eb0bbull }}, {{ 0xd6b40f60d09dfbd6ull, 0xf5adb5bcc48f84f7ull, 0x1d2a3523e989d467ull, 0xa4e0c434dc4a6ffbull, 0xf518c4021bd8bf5full, 0x360272c78f92e757ull }}, {{ 0x630899c8262bd659ull, 0x98c9195fad9b31aeull, 0x23a613671f624c0full, 0x70c7aa109ae85fcfull, 0x92f7a815167779bcull, 0x1c187bcb9bbd096full }}, {{ 0xde5601d17db65f78ull, 0xf7dafdbcc80ff0cfull, 0x647cc20739d6f89bull, 0x67cca4a60d13be17ull, 0xbdac90d2e0aac15cull, 0x18f4d5f415625e5bull }}, {{ 0xaf5c122ee91fbab5ull, 0xae8de95fd09f681eull, 0xecdf94484265b617ull, 0x0dfe6e7c82c56ce9ull, 0x68bda83cc6ab8d9cull, 0xf9905b88d5d7af95ull }}, {{ 0xd998b5d51b3d4b0dull, 0xd18b1dbe263a1132ull, 0x40bbcad297f91cecull, 0x8bf050dd1bb64123ull, 0x1768925fc2b38818ull, 0xbfa393585a6cdbd6ull }}, {{ 0x7ff71a531064ee83ull, 0x2f6f296d7e44abfcull, 0x8755ec39efbb2140ull, 0x776328a3151e8b60ull, 0xea15b7bd9b0350f5ull, 0x7c63c1738840965cull }}, {{ 0xffa7073ea3f15122ull, 0xda579e46eeaeb7dcull, 0x495b3a435d4f4c81ull, 0xa9df965ed33171c5ull, 0x24d92d680e212996ull, 0xdbe58e835285dfa1ull }}, {{ 0xfc864872676d2b56ull, 0x876c2ec552d32ea1ull, 0xdd9046a1a518fd12ull, 0xa2bbdfb43fee71b4ull, 0x707bc6108d4b9fe2ull, 0x96f79121393abc4bull }}, {{ 0xdd3ed4780a43b158ull, 0x4a39d3b53c3fd253ull, 0xa7a2c25072f9e2b9ull, 0x5b56bd0a7f507110ull, 0x64d5bca584f43edaull, 0xe5abab4c3c4b5af2ull }}, {{ 0xa4744cb066a4ed72ull, 0xe64245145a7e3746ull, 0x8c5b97247dc2db3cull, 0x91636268f9246aa6ull, 0xf0595e77318a7487ull, 0xf8b4b0fa5af18d77ull }}, {{ 0x6c8afee402714675ull, 0xfe96b2cb88ee28c2ull, 0x7b93e76ce99c9060ull, 0xade1d819bb6c2a81ull, 0x637db0a7ef688d4bull, 0xb70ee9c78d6f86afull }}, {{ 0x3d6df4e8186cc096ull, 0xf1e2fbf3594d9798ull, 0xd3c70a41201da3c9ull, 0xcad271015239a90eull, 0xe2e8e68f5a1584f4ull, 0x269521cb865b42d9ull }}, {{ 0x664b9110f43f85daull, 0x72ddd7817d07ebf2ull, 0x45c6668b412865e3ull, 0xec386a0d36409a94ull, 0xdd19019984d7318full, 0x81d351f33f909c82ull }}, {{ 0xfef3aaa98a7b3a82ull, 0x7caa6b0ee24f3777ull, 0xb9c001708b93fae2ull, 0x3a3424841e8609caull, 0xa2fa0fff3067ef9full, 0x124133807ba61d1cull }}, {{ 0xf584aa9f68d04912ull, 0xdea82e94d7182aafull, 0x41800e6573c7ccd8ull, 0x46096d29313c61ebull, 0x5dc49ff7e40f5c38ull, 0xb68c0304d47d231eull }}, {{ 0x972eaa3a1822dab7ull, 0xb291d1d066f1aadfull, 0x8f008ff685ce0078ull, 0xbc5e439bec5bd330ull, 0xa9ae3faee8999a32ull, 0x21781e304ce35f2full }}, {{ 0xe7d2a644f15c8b26ull, 0xf9b232240570acbbull, 0x96059fa13a0c04b6ull, 0x5baea4173b963fe5ull, 0xa0ce7cd5160005fbull, 0x4eb12de300e1b7dcull }}, {{ 0x0e3a7eb16d9d6f7dull, 0xc0f5f5683666bf57ull, 0xdc383c4c44782f25ull, 0x94d268e853de7ef7ull, 0x4810e052dc003bd1ull, 0x12ebcade08d12e9eull }}, {{ 0x8e48f2ee48265ae6ull, 0x899b961220037966ull, 0x9a325afaacb1d779ull, 0xd038191346b0f5aeull, 0xd0a8c33c9802562full, 0xbd35ecac582bd22eull }}, {{ 0x8ed97d4ed17f8d00ull, 0x6013dcb54022be01ull, 0x05f78dcabef26abfull, 0x2230fac0c2e998d2ull, 0x2697a05df0175ddeull, 0x641b3ebb71b635d4ull }}, {{ 0x947ee5142efb8201ull, 0xc0c69f14815b6c0full, 0x3bab89eb75782b79ull, 0x55e9cb879d1ff834ull, 0x81ec43ab60e9aaadull, 0xe9107352711e1a49ull }}, {{ 0xccf4f2c9d5d31409ull, 0x87c236cd0d92389bull, 0x54b3633296b1b2c1ull, 0x5b21f34c233fb20aull, 0x133aa4b1c920aac5ull, 0x1aa481386b2d06dfull }}, {{ 0x01917be25a3ec85cull, 0x4d96240287b63616ull, 0x4f01dff9e2f0fb8full, 0x8f5380f9607cf467ull, 0xc04a6ef1db46abb5ull, 0x0a6d0c342fc244b6ull }}, {{ 0x0faed6d78673d39dull, 0x07dd68194d1e1cdcull, 0x1612bfc2dd69d399ull, 0x994309bdc4e18c09ull, 0x82e8557290c2b517ull, 0x68427a09dd96af23ull }}, {{ 0x9cd4646b40864420ull, 0x4ea610fd032d2098ull, 0xdcbb7d9ca62243faull, 0xfc9e6169b0cf785aull, 0x1d135679a79b12ebull, 0x1298c462a7e2d763ull }}, {{ 0x204bec30853ea93cull, 0x127ca9e21fc345f6ull, 0x9f52e81e7d56a7c7ull, 0xde2fce20e81ab38cull, 0x22c160c08c0ebd37ull, 0xb9f7abda8edc69dfull }}, {{ 0x42f739e534729c58ull, 0xb8dea2d53da0bb9dull, 0x393d1130e5628dc6ull, 0xadde0d49110b037eull, 0x5b8dc7857893642eull, 0x43acb689949c22b7ull }}, {{ 0x9da842f40c7a1b6cull, 0x38b25c5468475424ull, 0x3c62abe8f5d989c3ull, 0xcaac84daaa6e22eeull, 0x9389cb36b5c1e9d2ull, 0xa4bf215fce195b29ull }}, {{ 0x28929d887cc51234ull, 0x36f79b4c12c9496eull, 0x5bdab7199a7f61a0ull, 0xeabd308aa84d5d4eull, 0xc361f0231993223bull, 0x6f774dbe0cfd8f9full }}, {{ 0x95ba2754dfb2b607ull, 0x25ac10f8bbdcde4dull, 0x968b270008f9d042ull, 0x2b63e56a9305a50full, 0xa1d3615effbf5657ull, 0x5aa9096c81e79c3dull }}, {{ 0xd9458950bcfb1c45ull, 0x78b8a9b756a0af07ull, 0xe16f860059c22295ull, 0xb1e6f629be38729bull, 0x5241cdb5fd795f67ull, 0x8a9a5e3d130c1a68ull }}, {{ 0x7cb75d2761cf1aaeull, 0xb736a1296246d64eull, 0xce5b3c03819559d6ull, 0xf3059da16e347a16ull, 0x3692091be6bdba0cull, 0x6a07ae62be790813ull }}, {{ 0xdf29a389d2170ac9ull, 0x28224b9dd6c45f10ull, 0x0f9058230fd58263ull, 0x7e38284e4e0cc4e4ull, 0x21b45b1703694481ull, 0x244ccfdb70ba50c0ull }}, {{ 0xb7a0636234e66bd7ull, 0x9156f42a63abb6a8ull, 0x9ba3715e9e5717dfull, 0xee31930f0c7fb0e8ull, 0x510b8ee6221cad0eull, 0x6b001e9267472781ull }}, {{ 0x2c43e1d611003661ull, 0xad6589a7e4b52297ull, 0x14626db22f66eebbull, 0x4defbe967cfce916ull, 0x2a7394fd551ec295ull, 0x2e0131b808c78b0dull }}, {{ 0xbaa6d25caa021fcdull, 0xc5f7608eef1359e7ull, 0xcbd848f5da055354ull, 0x0b5d71e0e1e11adcull, 0xa883d1e5533399d5ull, 0xcc0bf13057cb6e83ull }}, {{ 0x4a84379ea4153dfeull, 0xbba9c59556c1830dull, 0xf672d99a8435414full, 0x71a672c8d2cb0c9full, 0x952632f540040252ull, 0xf8776be36df25124ull }}, {{ 0xe92a2c3268d46be9ull, 0x54a1b7d5638f1e84ull, 0xa07c80092a148d1dull, 0x70807bd83bee7e3full, 0xd37dfd9480281738ull, 0xb4aa36e24b772b6dull }}, {{ 0x1ba5b9f8184c3719ull, 0x4e512e55e3973131ull, 0x44dd005ba4cd8325ull, 0x6504d6725750ee7cull, 0x42ebe7cd0190e834ull, 0x0ea624d6f2a7b24aull }}, {{ 0x147943b0f2fa26f7ull, 0x0f2bcf5ae3e7ebebull, 0xb0a2039470071f75ull, 0xf2306077692950daull, 0x9d370e020fa9120bull, 0x927d70657a8cf6e6ull }}, {{ 0xccbca4e97dc585a1ull, 0x97b6198ce70f372eull, 0xe65423cc60473a92ull, 0x75e3c4aa1b9d288aull, 0x24268c149c9ab477ull, 0xb8e663f6c981a502ull }}, {{ 0xff5e711ee9b7384eull, 0xed1cff81069827d3ull, 0xff4965fbc2c849b9ull, 0x9ae5aea51423956cull, 0x698178ce1e0b0caaull, 0x38ffe7a3df107215ull }}, {{ 0xf9b06b352128330eull, 0x4321fb0a41f18e47ull, 0xf8ddfbd59bd2e143ull, 0x0cf8d272c963d641ull, 0x1f0eb80d2c6e7eaaull, 0x39ff0c66b6a474d6ull }}, {{ 0xc0e430134b91fe8bull, 0x9f53ce66936f8ecfull, 0xb8abd658163ccca0ull, 0x81b8387bdde65e93ull, 0x36933083bc50f2a4ull, 0x43f67c03226c905dull }}, {{ 0x88e9e0c0f3b3f173ull, 0x39461001c25b941dull, 0x36b65f70de5ffe46ull, 0x113234d6aaffb1c5ull, 0x21bfe5255b297a6dull, 0xa7a0d81f583da3a4ull }}, {{ 0x5922c78985076e7aull, 0x3cbca0119793c927ull, 0x231fba68afbfeebeull, 0xabf61062adfcf1b4ull, 0x517ef3758f9ec842ull, 0x8c48713972686469ull }}, {{ 0x7b5bcb5f324a50c6ull, 0x5f5e40afebc5db89ull, 0x5f3d4816dd7f536eull, 0xb79ca3dacbe17109ull, 0x2ef582979c33d29aull, 0x7ad46c3e7813ec1dull }}, {{ 0xd195f1b7f6e727c1ull, 0xb9ae86df35ba935eull, 0xb864d0e4a6f9424full, 0x2c1e668bf6ce6a5dull, 0xd59719ec1a063a0bull, 0xcc4c3a70b0c73923ull }}, {{ 0x2fdb712fa5078d89ull, 0x40d144b81949c1b4ull, 0x33f028ee85bc971dull, 0xb9300177a41027a9ull, 0x57e70339043e446full, 0xfafa4866e7c83b66ull }}, {{ 0xde926bdc724b8758ull, 0x882caf30fce19109ull, 0x07619951395de724ull, 0x3be00eac68a18c9cull, 0x6f06203a2a6eac5dull, 0xcdc6d4050dd251ffull }}, {{ 0xb1b8369c76f3496full, 0x51bed7e9e0cfaa62ull, 0x49cffd2c3dab076dull, 0x56c092bc164f7e18ull, 0x563d4245a852bba4ull, 0x09c448328a3733faull }}, {{ 0xf132221ca580de55ull, 0x31746f22c81ca7daull, 0xe21fe3ba68ae4a45ull, 0x6385bb58df1aecf2ull, 0x5e6496b8933b546bull, 0x61aad1f9662807c7ull }}, {{ 0x6bf5551e7708af54ull, 0xee8c575bd11e8e8dull, 0xd53ee54816cee6b3ull, 0xe3395178b70d417cull, 0xafede335c0514c31ull, 0xd0ac33bdfd904dc9ull }}, {{ 0x37955330a656d94aull, 0x517b69962b319186ull, 0x5474f4d0e4150307ull, 0xe03d2eb726848ee0ull, 0xdf4ae019832cf9f2ull, 0x26ba056be7a309e0ull }}, {{ 0x2bd53fe67f647ce5ull, 0x2ed21fddafefaf3eull, 0x4c919028e8d21e49ull, 0xc263d327812d94c3ull, 0xb8ecc0ff1fc1c37cull, 0x834436370c5e62c8ull }}, {{ 0xb6547f00f9ece0eeull, 0xd4353ea8df5cd86dull, 0xfdafa19918352edbull, 0x97e63f8b0bc7cfa0ull, 0x393f89f73d91a2dfull, 0x20aa1e267bafdbd7ull }}, {{ 0x1f4cf609c340c94dull, 0x4a147298b9a07449ull, 0xe8dc4ffaf213d496ull, 0xeefe7b6e75ce1c49ull, 0x3c7b63a867b05cbbull, 0x46a52d80d4de9668ull }}, {{ 0x39019c61a087dd02ull, 0xe4cc79f740448adbull, 0x189b1fcd74c64ddeull, 0x55f0d2509a0d1ae3ull, 0x5cd1e4940ce39f57ull, 0xc273c70850b1e012ull }}, {{ 0x3a101bd0454ea211ull, 0xeffcc3a882ad6c90ull, 0xf60f3e068fbf0ab4ull, 0x5b68372604830cdeull, 0xa032edc880e43969ull, 0x9885c65326f2c0b7ull }}, {{ 0x44a11622b51254aaull, 0x5fdfa4951ac63da2ull, 0x9c986c419d766b11ull, 0x9212277c2d1e80b5ull, 0x41fd49d508ea3e1dull, 0xf539bf3f857b872cull }}, {{ 0xae4add5b12b74ea9ull, 0xbebc6dd30bbe6856ull, 0x1df43a9026a02eadull, 0xb4b58ad9c3310718ull, 0x93e4e25259266d27ull, 0x9441787b36d347baull }}, {{ 0xceeca58ebb291296ull, 0x735c4a3e75701362ull, 0x2b8a49a18241d2c9ull, 0x0f176c819fea46f1ull, 0xc6f0d7377b80438dull, 0xca8eb4d02440cd49ull }}, {{ 0x153e77934f9ab9dbull, 0x819ae6709660c1dcull, 0xb366e04f16923bdeull, 0x96ea3d103f26c56bull, 0xc568682ad302a382ull, 0xe99310216a8804e1ull }}, {{ 0xd470abc11c0b4291ull, 0x100d0065dfc79298ull, 0x0204c316e1b656b1ull, 0xe52662a27783b635ull, 0xb61411ac3e1a6319ull, 0x1fbea14e295030d1ull }}, {{ 0x4c66b58b187099acull, 0xa08203fabdcbb9f8ull, 0x142f9ee4d11f62eaull, 0xf37fda58ab251e12ull, 0x1cc8b0ba6d07df02ull, 0x3d724d0d9d21e831ull }}, {{ 0xfc03176ef46600b3ull, 0x451427cb69f543b2ull, 0xc9dc34f02b39dd2aull, 0x82fe8776af732cb4ull, 0x1fd6e748424eb61dull, 0x66770288235311ebull }}, {{ 0xd81eea558bfc06ffull, 0xb2c98df22394a4fdull, 0xe29a1161b042a3a6ull, 0x1df14aa2da7fbf0full, 0x3e6508d297131d27ull, 0x00a61951613eb32full }}, {{ 0x7135275777d845f5ull, 0xfbdf8b7563ce71eaull, 0xda04add0e29a6482ull, 0x2b6cea5c88fd769eull, 0x6ff25839e6bf2387ull, 0x067cfd2dcc72ffd8ull }}, {{ 0x6c13896aae72bb92ull, 0xd6bb7295e6107328ull, 0x842eca28da07ed1dull, 0xb241279d59e6a234ull, 0x5f77724303776347ull, 0x40e1e3c9fc7dfe74ull }}, {{ 0x38c35e2ad07b53b8ull, 0x635279dafca47f94ull, 0x29d3e598844f432aull, 0xf68b8c258302560dull, 0xbaaa769e22a9e0ccull, 0x88d2e5e3dcebf08bull }}, {{ 0x37a1adac24d14534ull, 0xe138c28dde6cfbcaull, 0xa246f7f52b189fa7ull, 0xa17379771e175c83ull, 0x4aa8a22d5aa2c801ull, 0x583cfae6a1376575ull }}, {{ 0x2c50c8b9702cb408ull, 0xcc37998ab041d5e6ull, 0x56c5af93aef63c8eull, 0x4e82bea72ce99d24ull, 0xea9655c58a5bd010ull, 0x7261cd024c29f694ull }}, {{ 0xbb27d73e61bf0850ull, 0xfa2bff6ae2925afdull, 0x63b8dbc4d59e5d93ull, 0x111b7287c120236bull, 0x29df59b7679620a3ull, 0x77d20216f9a3a1d1ull }}, {{ 0x4f8e686fd1765320ull, 0xc5b7fa2cd9b78de9ull, 0xe53895b0582fa7c7ull, 0xab12794d8b416231ull, 0xa2b9812a0bdd465eull, 0xae3414e5c064522bull }}, {{ 0x1b90145e2e9f3f3bull, 0xb92fc5c0812b8b1dull, 0xf435d8e371dc8dcdull, 0xaeb8bd07708dd5f2ull, 0x5b3f0ba476a4bfb2ull, 0xce08d0f983eb35b4ull }}, {{ 0x13a0cbadd238784eull, 0x3bddb9850bb36f23ull, 0x8a1a78e2729d8a09ull, 0xd337624a658a5b7dull, 0x9076746ca26f7cfaull, 0x0c5829bf2730190bull }}, {{ 0xc447f4ca3634b30eull, 0x56a93f327502575eull, 0x6508b8d87a27645cull, 0x4029d6e7f76792e7ull, 0xa4a08c3e585ae1ccull, 0x7b71a17787e0fa73ull }}, {{ 0xaacf8fe61e0efe8aull, 0x629c77f8921769b3ull, 0xf2573874c589eb9bull, 0x81a2650faa0bbd09ull, 0x6e457a6f738cd1faull, 0xd2704eab4ec9c884ull }}, {{ 0xac1b9efd2c95f166ull, 0xda1cafb5b4ea2104ull, 0x7768348fb7633411ull, 0x1057f29ca4756263ull, 0x4eb6c85a838033c9ull, 0x386312b113e1d52cull }}, {{ 0xb91435e3bddb6dfeull, 0x851edd1911254a2eull, 0xaa120d9d29e008b2ull, 0xa36f7a1e6c95d7e2ull, 0x1323d389230205daull, 0x33debaeac6d253bbull }}, {{ 0x3aca1ae56a924be8ull, 0x3334a2faab74e5d3ull, 0xa4b48823a2c056f9ull, 0x625ac5303dda6edaull, 0xbf66435b5e143a8aull, 0x06b34d2bc437454eull }}, {{ 0x4be50cf629b6f70dull, 0x000e5dcab290fa40ull, 0x6f0d51645b8365bcull, 0xd78bb3e26a88548aull, 0x79fea191acca4967ull, 0x430103b5aa28b513ull }}, {{ 0xf6f2819da125a684ull, 0x008fa9eaf9a9c682ull, 0x56852deb9321f958ull, 0x6b7506d829534d68ull, 0xc3f24fb0bfe6de0eull, 0x9e0a2518a59712c2ull }}, {{ 0xa57910284b78812bull, 0x059ca32dc0a1c11dull, 0x6133cb33bf53bd70ull, 0x329244719d410613ull, 0xa7771ce77f04ac90ull, 0x2c6572f677e6bb9bull }}, {{ 0x76baa192f2b50baeull, 0x381e5fc986518b28ull, 0xcc05f00579456660ull, 0xf9b6ac70248a3cc1ull, 0x8aa7210af62ebda1ull, 0xbbf67da0af035414ull }}, {{ 0xa34a4fbd7b1274c9ull, 0x312fbddf3f2f6f94ull, 0xf83b6036bcb5ffc2ull, 0xc122bc616d665f91ull, 0x6a874a6d9dd36853ull, 0x57a0e846d62148cdull }}, {{ 0x60e71d66ceb88fdeull, 0xebdd6ab877da5bceull, 0xb251c2235f1bfd95ull, 0x8b5b5bce45ffbbb3ull, 0x2948e8482a421345ull, 0x6c4912c45d4cd806ull }}, {{ 0xc907260413359eb1ull, 0x36a62b34ae87960full, 0xf7319561b717e7dbull, 0x7191960ebbfd5504ull, 0x9cd912d1a694c0b7ull, 0x3adabbaba500703dull }}, {{ 0xda477c28c01832e8ull, 0x227db00ed14bdc9dull, 0xa7efd5d126ef0e90ull, 0x6fafdc9357e55231ull, 0x207abc3081cf872aull, 0x4c8b54b472046268ull }}, {{ 0x86cad99780f1fd10ull, 0x58e8e0942cf69e2aull, 0x8f5e5a2b855691a1ull, 0x5cde9dc16ef535f0ull, 0x44cb59e5121b47a8ull, 0xfd714f0c742bd811ull }}, {{ 0x43ec7feb0973e29cull, 0x7918c5c9c1a22da9ull, 0x99af85b33561b04dull, 0xa0b2298e55941b65ull, 0xaff182f2b510cc93ull, 0xe66d167c89b670acull }}, {{ 0xa73cff2e5e86da1cull, 0xbaf7b9e19055c89cull, 0x00db390015d0e306ull, 0x46f59f8f57c911f8ull, 0xdf6f1d7b12a7fdc4ull, 0x0042e0dd612066beull }}, {{ 0x8861f7cfb144851aull, 0x4dad42cfa359d61eull, 0x08903a00da28de43ull, 0xc5983b996ddab3b0ull, 0xba5726ceba8fe9aaull, 0x029cc8a5cb440374ull }}, {{ 0x53d3ae1cecad3302ull, 0x08c49c1c61825d31ull, 0x55a244088598aea1ull, 0xb7f253fe4a8b04e0ull, 0x47678413499f20abull, 0x1a1fd679f0a8228full }}, {{ 0x4644cd213ec3fe11ull, 0x57ae191bcf17a3edull, 0x5856a85537f6d24aull, 0x2f7747eee96e30c3ull, 0xca0b28c0e03746b5ull, 0x053e60c366915998ull }}, {{ 0xbeb0034c73a7eca6ull, 0x6cccfb1616ec6744ull, 0x736293542fa436e7ull, 0xdaa8cf551e4de7a1ull, 0xe46f9788c228c313ull, 0x346fc7a201ad7ff7ull }}, {{ 0x72e020fc848f3e7cull, 0x4001cedce53c08afull, 0x81d9c149dc6a250aull, 0x8a9819532f0b0c4eull, 0xec5beb5795979ec6ull, 0x0c5dcc5410c6ffaeull }}, {{ 0x7cc149dd2d9870d9ull, 0x801214a0f45856daull, 0x12818ce29c257266ull, 0x69f0fd3fd66e7b11ull, 0x3b97316bd7ec33c1ull, 0x7ba9fb48a7c5fcd5ull }}, {{ 0xdf8ce2a3c7f46878ull, 0x00b4ce498b736488ull, 0xb90f80da19767801ull, 0x2369e47e6050ceaaull, 0x53e7ee366f3a058eull, 0xd4a3d0d68dbbe054ull }}, {{ 0xbb80da65cf8c14adull, 0x07100edf7281ed58ull, 0x3a9b0884fea0b00aull, 0x6222ecefc32812abull, 0x470f4e205844378dull, 0x4e6628618956c34bull }}, {{ 0x530887fa1b78cec1ull, 0x46a094ba79134577ull, 0x4a0e5531f246e064ull, 0xd55d415d9f90bab0ull, 0xc6990d4372aa2b85ull, 0x0ffd93cf5d63a0f0ull }}, {{ 0x3e554fc512b8138dull, 0xc245cf48bac0b6a9ull, 0xe48f53f376c4c3eaull, 0x55a48da83ba74ae2ull, 0xc1fa84a27aa5b33aull, 0x9fe7c619a5e44967ull }}, {{ 0x6f551db2bb30c37eull, 0x96ba18d74b87229cull, 0xed994782a3afa72bull, 0x586d88925488ecdcull, 0x93c92e58ca790047ull, 0x3f0dbd007aeade0dull }}, {{ 0x595328fb4fe7a2e8ull, 0xe344f868f3475a1cull, 0x47fccb1a64dc87b3ull, 0x744755b74d5940a1ull, 0xc5dbcf77e8ba02c9ull, 0x76896204cd2cac87ull }}, {{ 0x7d3f99d11f0c5d15ull, 0xe0b1b41980c9851bull, 0xcfdfef07f09d4d06ull, 0x8ac95929057c864cull, 0xba961aaf17441bdeull, 0xa15dd43003bebd4dull }}, {{ 0xe47c022b367ba2d1ull, 0xc6f108ff07df3312ull, 0x1ebf564f66250244ull, 0x6bdd7b9a36dd3f00ull, 0x49dd0ad6e8a916b1ull, 0x4daa49e025736509ull }}, {{ 0xecd815b020d45c28ull, 0xc56a59f64eb7febcull, 0x33795f19fd7216afull, 0x36a6d40624a47601ull, 0xe2a26c65169ae2eeull, 0x08a6e2c17681f25cull }}, {{ 0x4070d8e1484b9992ull, 0xb627839f132ff361ull, 0x02bdb703e674e2ddull, 0x2284483d6e6c9c0cull, 0xda583bf2e20cdd4eull, 0x5684db8ea11377a0ull }}, {{ 0x846878ccd2f3ffb2ull, 0x1d8b2436bfdf81ccull, 0x1b6926270090dca9ull, 0x592ad266503e1878ull, 0x8772577cd480a50dull, 0x613093924ac2ac48ull }}, {{ 0x2c14b8003d87fcefull, 0x276f6a237ebb11fdull, 0x121b7d8605a89e9bull, 0x7bac37ff226cf4b1ull, 0x4a776ae04d067285ull, 0xcbe5c3b6eb9abad5ull }}, {{ 0xb8cf3002674fe15aull, 0x8a5a2562f34eb3e3ull, 0xb512e73c3896320full, 0xd4ba2ff758418eeaull, 0xe8aa2cc302407936ull, 0xf6f9a525340b4c54ull }}, {{ 0x3817e018091ecd87ull, 0x678575dd811306e5ull, 0x12bd085a35ddf49bull, 0x4f45dfa9728f952bull, 0x16a5bf9e1684bc24ull, 0xa5c073740870fb51ull }}, {{ 0x30eec0f05b340749ull, 0x0b369aa70abe44f4ull, 0xbb6253861aab8e12ull, 0x18babc9e799bd3aeull, 0xe2797c2ce12f596bull, 0x798482885469d12aull }}, {{ 0xe9538963900848d9ull, 0x70220a866b6eb189ull, 0x51d7433d0ab38cb4ull, 0xf74b5e30c01644d3ull, 0xd8bed9c0cbd97e2eull, 0xbf2d19534c222bacull }}, {{ 0x1d435de3a052d87bull, 0x615469403252ef63ull, 0x3268a0626b037f0cull, 0xa8f1ade780deb041ull, 0x77748187f67eedd5ull, 0x77c2fd40f955b4c0ull }}, {{ 0x24a1aae4433c74d2ull, 0xcd4c1c81f73d59dfull, 0xf81643d82e22f67bull, 0x9970cb0b08b2e28bull, 0xaa8d0f4fa0f54a58ull, 0xad9de489bd590f84ull }}, {{ 0x6e50aceaa05c902full, 0x04f91d13a86582b7ull, 0xb0dea671cd5da0d6ull, 0xfe67ee6e56fcd977ull, 0xa982991c4994e775ull, 0xc82aed61657a9b2eull }}, {{ 0x4f26c12a439da1d7ull, 0x31bb22c493f71b2aull, 0xe8b2807205a8485cull, 0xf00f504f65e07eacull, 0x9f19fb1adfd10a9bull, 0xd1ad45cdf6ca0fd2ull }}, {{ 0x17838ba6a4285263ull, 0xf14f5badc7a70fa7ull, 0x16f904743892d399ull, 0x60992319fac4f2c1ull, 0x3703cf0cbe2a6a17ull, 0x30c4ba0ba3e49e3aull }}, {{ 0xeb237482699337d9ull, 0x6d1994c9cc869c86ull, 0xe5ba2c8a35bc4403ull, 0xc5fb5f03cbb17b8aull, 0x2626167f6da824e9ull, 0xe7af447466ee2e46ull }}, {{ 0x2f628d181fc02e7cull, 0x42ffcfe1fd421d45ull, 0xf945bd66195aa822ull, 0xbbd1b625f4eed36cull, 0x7d7ce0fa48917121ull, 0x0cd8ac8c054dcebdull }}, {{ 0xd9d982f13d81d0dcull, 0x9dfe1ed3e49524b3ull, 0xbcb965fcfd8a9156ull, 0x56311d7b91544241ull, 0xe6e0c9c6d5ae6b51ull, 0x8076bd78350a1366ull }}, {{ 0x827f1d6c67122899ull, 0x2bed3446edd36f06ull, 0x5f3dfbe1e769ad62ull, 0x5deb26d3ad4a9691ull, 0x04c7e1c458d0312dull, 0x04a366b21264c205ull }}, {{ 0x18f7263c06b595feull, 0xb7440ac54a425641ull, 0xb86bd6d30a20c5d5ull, 0xab2f8444c4e9e1adull, 0x2fced1ab7821ebc5ull, 0x2e6202f4b7ef9432ull }}, {{ 0xf9a77e584317dbebull, 0x28a86bb4e6975e8aull, 0x3436643e6547ba59ull, 0xafdb2aafb122d0c9ull, 0xde1430b2b15335b8ull, 0xcfd41d8f2f5bc9f5ull }}, {{ 0xc08aef729eee972bull, 0x9694351101e9b16dull, 0x0a1fea6ff4cd477bull, 0xde8faadceb5c27dcull, 0xacc9e6faed401936ull, 0x1e492797d995e39aull }}, {{ 0x856d5a7a3551e7b2ull, 0xe1ca12aa1320ee49ull, 0x653f285f9004cad3ull, 0xb19caca131998e98ull, 0xbfe305cd4480fc24ull, 0x2edb8bee7fdae40aull }}, {{ 0x364588c615330cf3ull, 0xd1e4baa4bf494edfull, 0xf47793bba02fec46ull, 0xf01ebe4befff91f3ull, 0x7ede3a04ad09d96eull, 0xd4937750fe8ce86bull }}, {{ 0x1eb757bcd3fe817dull, 0x32ef4a6f78dd14b8ull, 0x8cabc55441df3ac4ull, 0x61336ef75ffbb387ull, 0xf4ae442ec2627e55ull, 0x4dc2a929f1811432ull }}, {{ 0x33296d6047f10edeull, 0xfd58e85ab8a2cf31ull, 0x7eb5b54a92b84ba9ull, 0xcc0255a9bfd5034bull, 0x8ecea9d397d8ef55ull, 0x099a9ba36f0ac9fdull }}, {{ 0xff9e45c2cf6a94adull, 0xe579138b365c17ebull, 0xf31914e9bb32f4a3ull, 0xf81758a17e5220f2ull, 0x9412a243ee795959ull, 0x600a1462566be3e7ull }}, {{ 0xfc2eb99c1a29cec2ull, 0xf6bac3701f98ef37ull, 0x7efad1214ffd8e66ull, 0xb0e9764eef35497dull, 0xc8ba56a750bd7d83ull, 0xc064cbd76036e70bull }}, {{ 0xd9d3401905a21396ull, 0xa34ba2613bf9582full, 0xf5cc2b4d1fe79005ull, 0xe91e9f155814dee6ull, 0xd74762892766e724ull, 0x83eff669c2250675ull }}, {{ 0x824080fa3854c3d9ull, 0x60f457cc57bd71deull, 0x99f9b1033f0ba038ull, 0x1b3236d570d0b505ull, 0x68c9d95b8a050771ull, 0x275fa0219572409aull }}, {{ 0x168509c6334fa67eull, 0xc98b6dfb6d6672b1ull, 0x03c0ea2076744233ull, 0x0ff6245668271238ull, 0x17e27d9364324a6bull, 0x89bc414fd6768608ull }}, {{ 0xe13261be011c80ecull, 0xdf724bd246007aeaull, 0x25892544a08a9605ull, 0x9f9d6b601186b630ull, 0xeed8e7c1e9f6e82eull, 0x615a8d1e60a13c50ull }}, {{ 0xcbf7d16c0b1d0937ull, 0xba76f636bc04cd2cull, 0x775b74ae4569dc3aull, 0x3c2631c0af431de1ull, 0x54790d9323a511d2ull, 0xcd89832fc64c5b29ull }}, {{ 0xf7ae2e386f225c25ull, 0x48a59e23583003bfull, 0xa9928eceb6229a4bull, 0x597df186d89f2aceull, 0x4cba87bf6472b236ull, 0x075f1fddbefb8f9dull }}, {{ 0xaccdce345757996dull, 0xd6782d6171e0257full, 0x9fb994131d5a06f0ull, 0x7eeb6f447637ac12ull, 0xff494d79ec7af61full, 0x49b73ea975d39c24ull }}, {{ 0xc00a0e0b696bfe45ull, 0x60b1c5ce72c176fcull, 0x3d3fc8bf25844568ull, 0xf53258ac9e2cb8baull, 0xf8dd06c33ccd9d3aull, 0xe128729e9a441971ull }}, {{ 0x80648c721e37eeb1ull, 0xc6f1ba107b8ea5dfull, 0x647dd777772ab613ull, 0x93f776be2dbf3746ull, 0xb8a243a06008244dull, 0xcb947a3206a8fe73ull }}, {{ 0x03ed7c752e2f52e5ull, 0xc57144a4d3927abbull, 0xecea6aaaa7ab1cc5ull, 0xc7aaa36dc97828bfull, 0x3656a443c0516b07ull, 0xf3ccc5f44299f085ull }}, {{ 0x2746dc93cdd93cf4ull, 0xb66cae7043b8cb4eull, 0x41282aaa8caf1fb9ull, 0xccaa6249deb1977full, 0x1f626aa5832e2e4dull, 0x85ffbb8a9a036534ull }}, {{ 0x88c49dc60a7c6189ull, 0x203ed062a537f10dull, 0x8b91aaa97ed73d41ull, 0xfea7d6e2b2efeaf8ull, 0x39d82a771fcdcf09ull, 0x3bfd536a0421f409ull }}, {{ 0x57ae29bc68dbcf5eull, 0x427423da742f6a87ull, 0x73b0aa9ef468648bull, 0xf28e64dafd5f2db5ull, 0x4271a8a73e0a1663ull, 0x57e542242953885cull }}, {{ 0x6ccda15c189619a9ull, 0x9889668889da2949ull, 0x84e6aa358c13ed70ull, 0x798ff08de5b7c916ull, 0x987096886c64dfe7ull, 0x6ef495699d43539aull }}, {{ 0x40084d98f5dd0097ull, 0xf55e015562859cdeull, 0x3102a61778c74665ull, 0xbf9f658af92ddae1ull, 0xf465e1543bf0bf0aull, 0x558dd62024a14409ull }}, {{ 0x805307f99aa205eaull, 0x95ac0d55d93820aeull, 0xea1a7ceab7c8bffbull, 0x7c39f76dbbca8ccbull, 0x8bfacd4a5767766bull, 0x578a5d416e4ca863ull }}, {{ 0x033e4fc00a543b27ull, 0xd8b8855a7c3146d1ull, 0x2508e12b2dd77fd3ull, 0xda43aa4955e97ff7ull, 0x77cc04e76a0aa032ull, 0x6b67a48e4efe93e3ull }}, {{ 0x206f1d80674a4f85ull, 0x77353588d9ecc42aull, 0x7258cbafca6afe46ull, 0x86a4a6dd5b1effa7ull, 0xadf8310a246a41fcull, 0x320c6d8f15f1c6e2ull }}, {{ 0x4457270408e71b30ull, 0xa8141758833fa9a5ull, 0x7777f4dde82deec0ull, 0x426e84a58f35fc8aull, 0xcbb1ea656c2693ddull, 0xf47c4796db71c4daull }}, {{ 0xab67862859070fddull, 0x90c8e975207ca074ull, 0xaaaf90ab11cb5386ull, 0x98512e77981bdd68ull, 0xf4f327f63981c6a4ull, 0x8cdacbe49271b08bull }}, {{ 0xb20b3d937a469ea5ull, 0xa7d91e9344de448eull, 0xaadba6aeb1f14341ull, 0xf32bd0abf116a616ull, 0x917f8f9e3f11c26dull, 0x808bf6edb870e577ull }}, {{ 0xf47067c2c6c23270ull, 0x8e7b31c0b0aead92ull, 0xac9482d2f36ca090ull, 0x7fb626b76ae27ce2ull, 0xaefb9c2e76b1984bull, 0x0577a5493468f6abull }}, {{ 0x8c640d9bc395f860ull, 0x90cff186e6d2c7bdull, 0xbdcd1c3d823e45a5ull, 0xfd1d832a2cd8e0daull, 0xd5d419d0a2eff2f2ull, 0x36ac74dc0c19a2b4ull }}, {{ 0x7be88815a3dbb3bdull, 0xa81f6f45043bcd67ull, 0x6a031a67166eb877ull, 0xe3271fa5c078c88bull, 0x5a4902265d5f7d7dull, 0x22bc909879005b10ull }}, {{ 0xd71550d866950563ull, 0x913a58b22a56060aull, 0x241f0806e05334acull, 0xdf873c7984b7d572ull, 0x86da157fa5bae6eaull, 0x5b5da5f4ba038ea3ull }}, {{ 0x66d5287401d235deull, 0xac4776f5a75c3c6cull, 0x69365044c3400ebdull, 0xbb485cbf2f2e5675ull, 0x4484d6fc794d052cull, 0x91a87b8f44239263ull }}, {{ 0x0453948812361ab1ull, 0xbacaa598899a5c3cull, 0x1c1f22afa0809368ull, 0x50d39f77d7cf6096ull, 0xad3065dcbd0233bfull, 0xb094d398a963b7e0ull }}, {{ 0x2b43cd50b61d0ae6ull, 0x4bea77f560079a58ull, 0x19375adc4505c217ull, 0x28443aae6e19c5ddull, 0xc3e3fa9f62160579ull, 0xe5d043f69de52ec6ull }}, {{ 0xb0a605271d226d00ull, 0xf728af95c04c0771ull, 0xfc298c9ab23994e8ull, 0x92aa4ad04d01baa2ull, 0xa6e7ca39d4dc36bbull, 0xfa22a7a22af3d3c3ull }}, {{ 0xe67c338723584202ull, 0xa796dbd982f84a70ull, 0xd99f7e0af63fd119ull, 0xbaa6ec2302114a5dull, 0x850de642509a2353ull, 0xc55a8c55ad8645a4ull }}, {{ 0x00da034761729411ull, 0x8be4967f1db2e869ull, 0x803aec6d9e7e2b00ull, 0x4a85395e14ace7aaull, 0x328afe9726056145ull, 0xb5897b58c73eb86dull }}, {{ 0x088420c9ce79c8aaull, 0x76ede0f728fd141aull, 0x024d3c4830edae05ull, 0xe9343daccec10ca9ull, 0xf96df1e77c35ccb4ull, 0x175ed177c8733443ull }}, {{ 0x552947e210c1d6a4ull, 0xa54ac9a799e2c904ull, 0x17045ad1e948cc36ull, 0x1c0a68c0138a7e9aull, 0xbe4b730ada19ff11ull, 0xe9b42eadd4800aa7ull }}, {{ 0x539cced4a7926267ull, 0x74ebe08c02dbda2bull, 0xe62b8c331cd7fa22ull, 0x18681780c368f204ull, 0x6ef27e6c8503f6abull, 0x2109d2ca4d006a8dull }}, {{ 0x4420144e8bb7d803ull, 0x9136c5781c9685b1ull, 0xfdb379ff206fc558ull, 0xf410eb07a2197430ull, 0x5578f03d3227a2aeull, 0x4a623be702042986ull }}, {{ 0xa940cb11752e701cull, 0xac23b6b11de138ecull, 0xe902c3f7445db575ull, 0x88a92e4c54fe89e9ull, 0x56b96263f58c5ad5ull, 0xe7d6570614299f3full }}, {{ 0x9c87eeae93d06114ull, 0xb96522eb2acc393eull, 0x1a1ba7a8aba91698ull, 0x569bcefb51f16323ull, 0x633dd7e7977b8c57ull, 0x0e5f663cc9a03879ull }}, {{ 0x1d4f52d1c623cac5ull, 0x3df35d2fabfa3c72ull, 0x05148c96b49ae1f7ull, 0x621615d1336ddf5full, 0xe06a6f0bead37b69ull, 0x8fb9fe5fe04234bdull }}, {{ 0x25193c31bd65ebb2ull, 0x6b81a3dcb7c65c75ull, 0x32cd7de30e0cd3a8ull, 0xd4dcda2c024ab9b6ull, 0xc42856772c42d21dull, 0x9d43efbec2960f6aull }}, {{ 0x72fc59f165fb34f3ull, 0x3310669f2dbf9c93ull, 0xfc06eade8c804494ull, 0x50a085b816eb411dull, 0xa99360a7ba9c352aull, 0x24a75d7399dc9a2bull }}, {{ 0x7ddb836dfbd01182ull, 0xfea40237c97c1dc2ull, 0xd8452cb17d02adc9ull, 0x26453930e5308b2bull, 0x9fc1c68d4a1a13a7ull, 0x6e89a684029e05b4ull }}, {{ 0xea93224bd620af16ull, 0xf268162dded92998ull, 0x72b3beeee21ac9e3ull, 0x7eb43be8f3e56fb6ull, 0x3d91c184e504c487ull, 0x516081281a2c390eull }}, {{ 0x29bf56f65d46d6d7ull, 0x7810ddcab47b9ff9ull, 0x7b057554d50be2e7ull, 0xf30a571986f65d20ull, 0x67b18f30f22fad4aull, 0x2dc50b9105ba3a8eull }}, {{ 0xa179659fa4c46467ull, 0xb0a8a9eb0cd43fbbull, 0xce3695505276dd0aull, 0x7e6766ff459fa344ull, 0x0cef97e975dcc4edull, 0xc9b273aa39464990ull }}, {{ 0x4ebdf83c6fabec07ull, 0xe696a32e804a7d54ull, 0x0e21d52338a4a26aull, 0xf00a05f8b83c60b0ull, 0x815bef1e9a9fb146ull, 0xe0f884a63cbedfa0ull }}, {{ 0x136bb25c5cb73847ull, 0x01e25fd102e8e54bull, 0x8d525360366e582dull, 0x60643bb7325bc6e0ull, 0x0d9757320a3cecc5ull, 0xc9b52e7e5f74bc45ull }}, {{ 0xc234f79b9f2832c5ull, 0x12d7be2a1d18f4eeull, 0x853741c2204f71c2ull, 0xc3ea5527f795c4c5ull, 0x87e967f466613fb5ull, 0xe113d0efba8f5ab2ull }}, {{ 0x9611ac143791fbb3ull, 0xbc6d6da522f99153ull, 0x34289195431a7194ull, 0xa727538fabd9afb7ull, 0x4f1e0f8bffcc7d19ull, 0xcac6295d49998af9ull }}, {{ 0xdcb0b8ca2bb3d500ull, 0x5c4648735dbfad43ull, 0x0995afd49f086fcfull, 0x8789439cb680dd28ull, 0x172c9b77fdfce300ull, 0xebbd9da4dfff6dbdull }}, {{ 0x9ee737e5b5065205ull, 0x9abed481a97cc4a6ull, 0x5fd8de4e36545e19ull, 0x4b5ca41f2108a390ull, 0xe7be12afebe0de05ull, 0x35682870bffa4962ull }}, {{ 0x35082ef9123f3431ull, 0x0b744d109edfae82ull, 0xbe78af0e1f4bad00ull, 0xf19e69374a5663a3ull, 0x0d6cbadf36c8ac34ull, 0x161194677fc6ddddull }}, {{ 0x1251d5bab67809eeull, 0x728b02a634bcd116ull, 0x70b6d68d38f4c200ull, 0x70301c28e75fe465ull, 0x863f4cb823d6ba11ull, 0xdcafcc0afdc4aaa2ull }}, {{ 0xb732594b20b0634eull, 0x796e1a7e0f602adcull, 0x67246184398f9404ull, 0x61e1199909beebf6ull, 0x3e78ff31666344aeull, 0x9eddf86de9aeaa59ull }}, {{ 0x27f77cef46e3e109ull, 0xbe4d08ec99c1ac9full, 0x076bcf2a3f9bc82cull, 0xd2cafffa617537a0ull, 0x70b9f7edffe0aecfull, 0x34abb44b20d2a77cull }}, {{ 0x8faae158c4e6ca5aull, 0x6f02593e0190be37ull, 0x4a3617a67c15d1bfull, 0x3bedffc7ce942c40ull, 0x6743af4bfec6d41eull, 0x0eb50aef483a8adcull }}, {{ 0x9caccd77b103e785ull, 0x56177c6c0fa76e2bull, 0xe61cec80d8da317aull, 0x574bfdce11c9ba82ull, 0x08a4d8f7f3c4492eull, 0x93126d58d2496c9cull }}, {{ 0x1ec006acea270b36ull, 0x5ceadc389c8a4db4ull, 0xfd213d087885eec7ull, 0x68f7ea0cb1e1491cull, 0x567079af85aadbcfull, 0xbeb8457836de3e18ull }}, {{ 0x338042c125867020ull, 0xa12c9a361d670909ull, 0xe34c6254b53b53c9ull, 0x19af247ef2ccdb21ull, 0x6064c0db38ac961aull, 0x7332b6b224ae6cf3ull }}, {{ 0x03029b8b77406144ull, 0x4bbe061d26065a5cull, 0xe0fbd74f145145e0ull, 0x00d76cf57c008f52ull, 0xc3ef889036bddd05ull, 0x7ffb22f56ed04181ull }}, {{ 0x1e1a1372a883ccaaull, 0xf56c3d237c3f8798ull, 0xc9d66916cb2cbac2ull, 0x086a4196d805993cull, 0xa75b55a2236aa232ull, 0xffcf5d9654228f11ull }}, {{ 0x2d04c27a9525fea8ull, 0x963a6362da7b4bf1ull, 0xe2601ae3efbf4b9dull, 0x54268fe47037fc5full, 0x89915855622a55f4ull, 0xfe19a7df495996b0ull }}, {{ 0xc22f98c9d37bf28dull, 0xde47e1dc88d0f76bull, 0xd7c10ce75d78f427ull, 0x49819eec622fdbbeull, 0x5fad7355d5a75b8bull, 0xed008eb8dd7fe2e5ull }}, {{ 0x95dbf7e242d7797dull, 0xaeced29d5829aa35ull, 0x6d8a8109a6b9898eull, 0xdf10353bd5de9574ull, 0xbcc6815a58899370ull, 0x42059338a6fedcf5ull }}, {{ 0xda97aed69c6abee3ull, 0xd4143a2571a0a617ull, 0x47690a60833f5f92ull, 0xb6a214565ab1d68cull, 0x5fc10d87755fc268ull, 0x9437c03685f4a199ull }}, {{ 0x89ecd4621c2b74e2ull, 0x48ca457670467ceeull, 0xca1a67c52079bbbcull, 0x2254cb5f8af2617aull, 0xbd8a874a95bd9817ull, 0xca2d82213b8e4ffdull }}, {{ 0x63404bd519b290d1ull, 0xd7e6b6a062c0e151ull, 0xe5080db344c1555aull, 0x574ff1bb6d77cecbull, 0x676948e9d967f0e7ull, 0xe5c7154c538f1fe9ull }}, {{ 0xe082f65300f9a827ull, 0x6f032243db88cd2dull, 0xf2508900af8d558cull, 0x691f715246ae13f6ull, 0x0a1cd9227e0f6909ull, 0xf9c6d4fb43973f1eull }}, {{ 0xc51d9f3e09c09181ull, 0x561f56a6935803caull, 0x77255a06db85577cull, 0x1b3a6d36c2ccc7a5ull, 0x65207b58ec9a1a5eull, 0xc1c451d0a3e8772cull }}, {{ 0xb328386c6185af0cull, 0x5d396281c17025ebull, 0xa775844493356adbull, 0x104844239bffcc76ull, 0xf344d1793e0507adull, 0x91ab32266714a7bbull }}, {{ 0xff92343bcf38d675ull, 0xa43dd9118e617b34ull, 0x8a972aadc0162c91ull, 0xa2d2a96417fdfca2ull, 0x80b02ebc6c324cc2ull, 0xb0aff58006ce8d57ull }}, {{ 0xfbb60a5618386092ull, 0x6a6a7aaf8fced011ull, 0x69e7aac980ddbdb0ull, 0x5c3a9de8efebde59ull, 0x06e1d35c39f6ff9aull, 0xe6df97004411856bull }}, {{ 0xd51c675cf233c5b0ull, 0x2828cadb9e1420b3ull, 0x230cabdf08a968e4ull, 0x9a4a2b195f36af7eull, 0x44d2419a43a5fc07ull, 0x04bbe602a8af362eull }}, {{ 0x531c09a17605b8dcull, 0x9197ec942cc94706ull, 0x5e7eb6b6569e18e9ull, 0x06e5aefdb822daedull, 0xb0369006a47bd84cull, 0x2f56fc1a96d81dceull }}, {{ 0x3f18604e9c39389bull, 0xafef3dc9bfdcc63full, 0xb0f3231f622cf91full, 0x44f8d5e9315c8d45ull, 0xe221a0426cd672f8ull, 0xd965d909e4712a12ull }}, {{ 0x76f3c3121a3c360eull, 0xdf5869e17e9fbe78ull, 0xe97f5f39d5c1bb3cull, 0xb1b85b1bed9d84b8ull, 0xd550429840607db2ull, 0x7dfa7a62ec6ba4bcull }}, {{ 0xa5859eb5065a1c8bull, 0xb97422cef23d70b4ull, 0x1ef9b84259915060ull, 0xf1338f1748272f39ull, 0x552299f283c4e8faull, 0xebc8c7dd3c346f60ull }}, {{ 0x773833123f851d6dull, 0x3e895c157666670eull, 0x35c132977fad23c7ull, 0x6c0396e8d187d83bull, 0x535a037925b119cdull, 0x35d7cea45a0c59c3ull }}, {{ 0xa831feb67b33263full, 0x715d98d6a0000690ull, 0x198bf9eafcc365c8ull, 0x3823e5182f4e7250ull, 0x418422bb78eb0206ull, 0x1a6e126b847b81a1ull }}, {{ 0x91f3f320cfff7e79ull, 0x6da7f862400041a6ull, 0xff77c32ddfa1f9d4ull, 0x3166f2f1d9107720ull, 0x8f295b52b92e143eull, 0x084cb8332cd3104cull }}, {{ 0xb3877f481ffaf0b8ull, 0x488fb3d680029081ull, 0xfaad9fcabc53c24cull, 0xee057d727aa4a749ull, 0x979d913b3bccca6dull, 0x52ff31ffc03ea2fdull }}, {{ 0x034af8d13fcd672bull, 0xd59d06610019a511ull, 0xcac83deb5b4596faull, 0x4c36e678ca6e88e3ull, 0xec27ac5055ffe84bull, 0x3df7f3fd82725de7ull }}, {{ 0x20edb82c7e0607b3ull, 0x58223fca010072aaull, 0xebd26b3190b7e5ccull, 0xfa2500b7e85158e5ull, 0x398cbb235bff12f0ull, 0x6baf87e71877ab0full }}, {{ 0x494931bcec3c4cfaull, 0x71567de40a047aa5ull, 0x36382fefa72ef9fbull, 0xc572072f132d78fbull, 0x3f7f4f6197f6bd69ull, 0x34db4f06f4acae98ull }}, {{ 0xdcdbf1613a5b01c0ull, 0x6d60eae8642cca74ull, 0x1e31df5c87d5c3d2ull, 0xb67447d6bfc6b9d0ull, 0x7af919cfefa36621ull, 0x109116458ebed1f2ull }}, {{ 0xa0976dcc478e1183ull, 0x45c92d13e9bfe890ull, 0x2df2b99d4e59a638ull, 0x208ace637dc34221ull, 0xcdbb021f5c61fd51ull, 0xa5aadeb793743378ull }}, {{ 0x45ea49facb8caf1bull, 0xb9dbc2c7217f15a6ull, 0xcb7b40250f807e32ull, 0x456c0fe2e9a0954bull, 0x094e15399bd3e52bull, 0x78acb32bc28a02b8ull }}, {{ 0xbb26e3cbf37ed70full, 0x42959bc74ef6d87eull, 0xf2d081729b04edfbull, 0xb6389edd2045d4f5ull, 0x5d0cd4401646f3b0ull, 0xb6beffb599641b30ull }}, {{ 0x4f84e5f782f46693ull, 0x99d815c915a474f3ull, 0x7c250e7a0e314bd0ull, 0x1e3634a342ba519bull, 0xa2804a80dec584e7ull, 0x2375fd17fde90fe3ull }}, {{ 0x1b30fbab1d8c01bdull, 0x0270d9dad86c9181ull, 0xd97290c48decf626ull, 0x2e1e0e609b473012ull, 0x5902e908b3b73107ull, 0x629be2efeb1a9ee4ull }}, {{ 0x0fe9d4af27781166ull, 0x1868828c743daf0bull, 0x7e79a7ad8b419d7cull, 0xcd2c8fc610c7e0bcull, 0x7a1d1a570527ea47ull, 0xda16dd5f2f0a34ebull }}, {{ 0x9f224ed78ab0adfdull, 0xf415197c8a68d66eull, 0xf0c08cc7709026d8ull, 0x03bd9dbca7cec75cull, 0xc5230766338f26ceull, 0x84e4a5b7d6661132ull }}, {{ 0x3757146b6ae6cbe0ull, 0x88d2fedd68186052ull, 0x67857fca65a18479ull, 0x2568295e8e13c9a1ull, 0xb35e49fe0397840cull, 0x30ee792e5ffcabfbull }}, {{ 0x2966cc322d03f6c4ull, 0x583df4a610f3c336ull, 0x0b36fde7f84f2cbfull, 0x76119db18cc5e04eull, 0x01aee3ec23eb2879ull, 0xe950bbcfbfdeb7d5ull }}, {{ 0x9e03f9f5c227a3a4ull, 0x726b8e7ca985a01dull, 0x7025eb0fb317bf79ull, 0x9cb028ef7fbac30cull, 0x10d4e739672f94beull, 0x1d27561d7eb32e52ull }}, {{ 0x2c27c399958c6464ull, 0x783390de9f384128ull, 0x617b2e9cfeed7abeull, 0x1ee1995afd4b9e7cull, 0xa851083e07dbcf72ull, 0x23895d26f2ffcf34ull }}, {{ 0xb98da3ffd77bebe9ull, 0xb203a8b238328b91ull, 0xcecfd221f546cb70ull, 0x34cffd8de4f430dbull, 0x932a526c4e961a75ull, 0x635da3857dfe180eull }}, {{ 0x3f8867fe6ad7371bull, 0xf42496f631f973b1ull, 0x141e355394c3f266ull, 0x101fe78af189e896ull, 0xbfa7383b11dd0894ull, 0xe1a86336ebecf091ull }}, {{ 0x7b540ff02c68270eull, 0x896de59df3be84ecull, 0xc92e1543cfa77805ull, 0xa13f0b6d6f6315dcull, 0x7c88324eb2a255c8ull, 0xd093e025374165b1ull }}, {{ 0xd1489f61bc11868dull, 0x5e4af82b8571313cull, 0xdbccd4a61c8ab037ull, 0x4c76724659deda9full, 0xdd51f712fa5759d6ull, 0x25c6c174288df8eeull }}, {{ 0x2cd639d158af4180ull, 0xaeedb1b3366bec60ull, 0x96004e7d1d6ae229ull, 0xfca076bf82b48a3eull, 0xa533a6bdc769825eull, 0x79c38e89958bb954ull }}, {{ 0xc05e422d76d88f04ull, 0xd548f10020373bc1ull, 0xdc0310e3262cd5a0ull, 0xde44a37b1b0d6671ull, 0x74048369ca1f17b5ull, 0xc1a3915fd7753d4eull }}, {{ 0x83ae95c6a4759627ull, 0x54d96a0142285591ull, 0x981ea8df7dc05848ull, 0xaeae62cf0e860072ull, 0x882d2221e536ed1aull, 0x9063adbe6a946510ull }}, {{ 0x24d1d9c26c97dd85ull, 0x507e240c959357afull, 0xf13298bae98372d3ull, 0xd2cfdc16913c0479ull, 0x51c35552f425430aull, 0xa3e4c97029cbf2a5ull }}, {{ 0x703281983deea737ull, 0x24ed687dd7c16cd7ull, 0x6bf9f74d1f227c41ull, 0x3c1e98e1ac582cc3ull, 0x31a1553d89749e6cull, 0x66efde61a1f77a75ull }}, {{ 0x61f90ff26b528822ull, 0x714614ea6d8e406aull, 0x37c3a9033758da8bull, 0x5931f8d0bb71bfa2ull, 0xf04d54675e8e303aull, 0x055eafd053aac893ull }}, {{ 0xd3ba9f7831395155ull, 0x6cbcd128478e8427ull, 0x2da49a2029788972ull, 0x7bf3b82752717c56ull, 0x63054c09b18de247ull, 0x35b2de2344abd5c7ull }}, {{ 0x454a3ab1ec3d2d4eull, 0x3f602b92cb91298eull, 0xc86e05419eb55e78ull, 0xd7853189386edb5dull, 0xde34f860ef8ad6caull, 0x18fcad60aeb659c9ull }}, {{ 0xb4e64af33a63c509ull, 0x79c1b3bbf3ab9f8eull, 0xd44c34903315b0b2ull, 0x6b33ef5c345491a9ull, 0xae11b3c95b6c63ecull, 0xf9dec5c6d31f81e2ull }}, {{ 0x10feed8047e5b25bull, 0xc191055784b43b93ull, 0x4afa0da1fed8e6f8ull, 0x3007599a0b4db0a2ull, 0xccb105dd923be73cull, 0xc2b3b9c43f3b12daull }}, {{ 0xa9f54702cef8f790ull, 0x8faa356b2f0a53beull, 0xedc48853f47905b7ull, 0xe04980047108e656ull, 0xfeea3aa7b6570859ull, 0x9b0541aa784ebc8bull }}, {{ 0xa394c61c15b9aba4ull, 0x9ca6162fd6674572ull, 0x49ad53478cba392bull, 0xc2df002c6a58ff65ull, 0xf5264a8d1f665382ull, 0x0e3490a8b3135d77ull }}, {{ 0x63cfbd18d940b46cull, 0x1e7cddde6008b67aull, 0xe0c540cb7f463bb4ull, 0x9cb601bc2779f9f4ull, 0x937ee98339ff431bull, 0x8e0da696fec1a6afull }}, {{ 0xe61d62f87c870c33ull, 0x30e0aaafc05720c7ull, 0xc7b487f2f8be5509ull, 0x1f1c11598ac3c390ull, 0xc2f51f2043f89f14ull, 0x8c8881e5f39082dbull }}, {{ 0xfd25ddb4dd467a00ull, 0xe8c6aadd836747ceull, 0xcd0d4f7db76f525bull, 0x3718ad7f6ba5a3a7ull, 0x9d933742a7b636c9ull, 0x7d5512fb83a51c95ull }}, {{ 0xe37aa910a4c0c3feull, 0x17c2aca72208ce15ull, 0x02851ae92a593797ull, 0x26f6c6fa3478648eull, 0x27c0289a8d1e23dcull, 0xe552bdd324731dd8ull }}, {{ 0xe2ca9aa66f87a7efull, 0xed9abe8754580cdaull, 0x19330d1ba77c2be6ull, 0x85a3c5c60cb3ed8cull, 0x8d819609832d6699ull, 0xf53b6a3f6c7f2a71ull }}, {{ 0xdbea0a805b4c8f5bull, 0x480b71494b70808cull, 0xfbfe83148ad9b705ull, 0x3865b9bc7f074778ull, 0x870fdc5f1fc601ffull, 0x9452267a3cf7a86full }}, {{ 0x9724690390fd998bull, 0xd0726cdcf2650580ull, 0xd7f11ecd6c812634ull, 0x33f9415cf648cab9ull, 0x469e9bb73dbc13f8ull, 0xcb3580c661ac945bull }}, {{ 0xe76c1a23a9e7ff6eull, 0x247840a177f23705ull, 0x6f6b34063d0b7e10ull, 0x07bc8da19ed7eb42ull, 0xc23215286958c7b2ull, 0xf01707bfd0bdcb90ull }}, {{ 0x0a390564a30ffa4eull, 0x6cb2864eaf76263bull, 0x5a30083e6272eca1ull, 0x4d5d8850346f3098ull, 0x95f4d3941d77ccf4ull, 0x60e64d7e2769f3a7ull }}, {{ 0x663a35ee5e9fc70eull, 0x3ef93f12da9d7e4eull, 0x85e0526fd87d3e4eull, 0x05a753220c57e5f3ull, 0xdb9043c926ae018bull, 0xc8ff06ed8a23848bull }}, {{ 0xfe461b4fb23dc688ull, 0x75bc76bc8a26ef0full, 0x3ac3385e74e46f0eull, 0x38893f547b6efb83ull, 0x93a2a5db82cc0f6eull, 0xd9f6454765632d76ull }}, {{ 0xeebd111cf669c14full, 0x995ca35d6585569full, 0x4ba033b090ec5690ull, 0x355c794cd255d320ull, 0xc45a7a931bf89a4eull, 0x839eb4c9f5dfc6a1ull }}, {{ 0x5362ab21a0218d13ull, 0xfd9e61a5f735623full, 0xf44204e5a93b61a5ull, 0x159cbd00375a3f42ull, 0xab88c9bf17b6070eull, 0x24330fe39abdc251ull }}, {{ 0x41daaf50414f82bdull, 0xe82fd07ba815d679ull, 0x8a9430f89c51d07bull, 0xd81f62022986789dull, 0xb357e176ed1c468cull, 0x69fe9ee40b699730ull }}, {{ 0x928ad9228d1b1b5eull, 0x11de24d490da60bcull, 0x69c9e9b61b3224d7ull, 0x7139d4159f40b627ull, 0x016ecea5431ac180ull, 0x23f234e8721fe7e7ull }}, {{ 0xb96c7b59830f11a8ull, 0xb2ad704da887c75dull, 0x21e3211d0ff57066ull, 0x6c4248d838871d8aull, 0x0e5412749f0b8f04ull, 0x67761114753f0f06ull }}, {{ 0x3e3cd17f1e96b08dull, 0xfac66308954dc9a9ull, 0x52df4b229f966402ull, 0x3a96d87235472765ull, 0x8f48b88e3673962cull, 0x0a9caacc9476963cull }}, {{ 0x6e602ef731e2e583ull, 0xcbbfde55d509e09cull, 0x3cb8ef5a3bdfe81dull, 0x49e4747614c789f5ull, 0x98d7358e2083ddbaull, 0x6a1eabfdcca1de5dull }}, {{ 0x4fc1d5a7f2dcf71cull, 0xf57eaf5a5262c61cull, 0x5f39598656bf1129ull, 0xe2ec8c9ccfcb6394ull, 0xf868178d4526a946ull, 0x2532b7e9fe52afa7ull }}, {{ 0x1d92588f7ca1a719ull, 0x96f2d98737dbbd1bull, 0xb83d7f3f6376aba3ull, 0xdd3d7e201df1e3cbull, 0xb410eb84b3829cc4ull, 0x73fb2f23ef3adc8full }}, {{ 0x27b7759ade5086f9ull, 0xe57c7f482e95630full, 0x3266f879e2a2b463ull, 0xa466ed412b72e5f5ull, 0x08a9332f031a1fb0ull, 0x87cfd767584c9d9dull }}, {{ 0x8d2a980caf2545bfull, 0xf6dcf8d1d1d5de97ull, 0xf805b4c2da5b0be6ull, 0x6c05448bb27cfb93ull, 0x569bffd61f053ce6ull, 0x4e1e6a0972fe2822ull }}, {{ 0x83a9f07ed774b974ull, 0xa4a1b832325ab1ebull, 0xb0390f9c878e7705ull, 0x3834ad74f8e1d3c7ull, 0x6217fe5d36346100ull, 0x0d30245e7ded9157ull }}, {{ 0x24a364f46a8f3e8dull, 0x6e5131f5f78af333ull, 0xe23a9c1d4b90a638ull, 0x320ec691b8d245ccull, 0xd4efefa41e0bca02ull, 0x83e16bb0eb47ad69ull }}, {{ 0x6e61f18c2998717full, 0x4f2bf39bab6d7fffull, 0xd64a1924f3a67e34ull, 0xf493c1b13836ba00ull, 0x515f5c692c75e415ull, 0x26ce34e930ccc622ull }}, {{ 0x4fd36f799ff46ef8ull, 0x17b78414b246fffaull, 0x5ee4fb718480ee0bull, 0x8dc590ec32234408ull, 0x2db99c1bbc9ae8dbull, 0x840e111be7ffbd57ull }}, {{ 0x1e425ac03f8c55b5ull, 0xed2b28cef6c5ffc7ull, 0xb4f1d26f2d094c6eull, 0x89b7a939f560a853ull, 0xc94019155e0d1893ull, 0x288cab170ffd6567ull }}, {{ 0x2e978b827b7b5911ull, 0x43af9815a3bbfdc7ull, 0x11723857c25cfc55ull, 0x612c9c4395c69345ull, 0xdc80fad5ac82f5c3ull, 0x957eaee69fe5f60dull }}, {{ 0xd1eb7318d2d17aaaull, 0xa4dbf0d86557e9c7ull, 0xae76336d97a1db54ull, 0xcbbe1aa3d9c1c0b2ull, 0x9d09cc58bd1d99a1ull, 0xd6f2d5023efb9c8aull }}, {{ 0x33327ef83c2ecaa9ull, 0x70976873f56f21ceull, 0xd09e0247ec52914eull, 0xf56d0a66819186faull, 0x2261fb7763280051ull, 0x657c521675d41d6aull }}, {{ 0xfff8f5b259d3ea95ull, 0x65ea14879657520dull, 0x262c16cf3b39ad10ull, 0x964268010faf45ccull, 0x57d3d2a9df900333ull, 0xf6db34e09a492625ull }}, {{ 0xffb998f7824729d4ull, 0xfb24cd4bdf69348bull, 0x7db8e4185040c2a3ull, 0xde98100a9cd8b9f9ull, 0x6e463aa2bba02003ull, 0xa49010c606db7d75ull }}, {{ 0xfd3ff9ab16c7a245ull, 0xcf7004f6ba1c0d77ull, 0xe938e8f322879a67ull, 0xb1f0a06a207743beull, 0x4ebe4a5b54414026ull, 0x6da0a7bc4492e696ull }}, {{ 0xe47fc0aee3cc56b4ull, 0x1a6031a3451886afull, 0x1c39197f594c080eull, 0xf366442544a8a575ull, 0x136ee7914a8c8182ull, 0x48468d5aadbd01dfull }}, {{ 0xecfd86d4e5fb6308ull, 0x07c1f060b2f542deull, 0x1a3afef97cf8508dull, 0x81fea974ae967693ull, 0xc2550bace97d0f1dull, 0xd2c1858ac96212b6ull }}, {{ 0x41e74450fbd1de4eull, 0x4d9363c6fd949cb5ull, 0x064df5bee1b32582ull, 0x13f29e8ed1e0a1bfull, 0x975274c11ee29727ull, 0x3b8f376bddd4bb23ull }}, {{ 0x9308ab29d632af08ull, 0x07c1e5c5e7ce1f14ull, 0x3f0b9974d0ff7717ull, 0xc77a319432c65176ull, 0xe9388f8b34d9e786ull, 0x53982a36aa4f4f63ull }}, {{ 0xbe56afa25dfad653ull, 0x4d92f9bb0e0d36cdull, 0x7673fe9029faa6e6ull, 0xcac5efc9fbbf2e9eull, 0x1c359b7010830b43ull, 0x43f1a622a71919e7ull }}, {{ 0x6f62dc57abcc5f40ull, 0x07bdc14e8c842409ull, 0xa087f1a1a3ca84ffull, 0xebbb5de3d577d230ull, 0x1a181260a51e70a5ull, 0xa7707d5a86fb0307ull }}, {{ 0x59dc9b6cb5fbb87full, 0x4d698d117d29685eull, 0x454f705065e931f6ull, 0x3551aae656ae35e6ull, 0x04f0b7c67330667bull, 0x8a64e58945ce1e47ull }}, {{ 0x829e123f1bd534f9ull, 0x061f82aee39e13afull, 0xb51a6323fb1bf39full, 0x1530acff62ce1afeull, 0x31672dc07fe400d0ull, 0x67f0f75cba0d2ec6ull }}, {{ 0x1a2cb677165411bcull, 0x3d3b1ad4e42cc4dbull, 0x1307df67cf178436ull, 0xd3e6c1f9dc0d0df3ull, 0xee07c984fee80820ull, 0x0f69a99f4483d3bdull }}, {{ 0x05bf20a6df48b158ull, 0x644f0c50e9bfb08full, 0xbe4eba0e16eb2a1eull, 0x470393c298828b7eull, 0x4c4ddf31f5105148ull, 0x9a20a038ad26456bull }}, {{ 0x39774684b8d6ed6eull, 0xeb167b29217ce596ull, 0x6f13448ce52fa52full, 0xc623c599f51972f3ull, 0xfb0ab7f392a32cd2ull, 0x05464236c37eb630ull }}, {{ 0x3ea8c12f3865464eull, 0x2ee0cf9b4ee0f7deull, 0x56c0ad80f3dc73dfull, 0xbd65b80392fe7d82ull, 0xce6b2f83ba5fc03bull, 0x34be9623a2f31de9ull }}, {{ 0x72978bd833f4bf0cull, 0xd4c81c1114c9aeaeull, 0x6386c709869c86b7ull, 0x65f93023bdf0e717ull, 0x102fdb2547bd8255ull, 0x0f71dd645d7f2b22ull }}, {{ 0x79eb7672078f7673ull, 0x4fd118aacfe0d2d0ull, 0xe343c65f421d432eull, 0xfbbbe1656b6906e9ull, 0xa1de8f74cd671755ull, 0x9a72a5eba6f7af54ull }}, {{ 0xc332a0744b9aa07full, 0x1e2af6ac1ec83c24ull, 0xe0a5bfb895249fcfull, 0xd556cdf6321a4522ull, 0x52b19a900606e95bull, 0x087a7b3485acd94eull }}, {{ 0x9ffa448af40a44f5ull, 0x2dada2b933d2596full, 0xc6797d35d36e3e17ull, 0x55640b9df506b35cull, 0x3af009a03c451d96ull, 0x54c8d00d38c07d0full }}, {{ 0x3fc6ad6d8866b192ull, 0xc8c85b3c06377e5cull, 0xc0bee41a424e6ce7ull, 0x55e8742b9243019full, 0x4d6060425ab327dfull, 0x4fd820843784e298ull }}, {{ 0x7dc2c6475402efb1ull, 0xd7d390583e2aef9aull, 0x8774e9069710410dull, 0x5b1489b3b69e103dull, 0x05c3c2978aff8eb9ull, 0x1e71452a2b30d9f3ull }}, {{ 0xe99bbec9481d5ceaull, 0x6e43a3726dad5c08ull, 0x4a911a41e6a28a8aull, 0x8ecd6105222ca267ull, 0x39a599eb6dfb933dull, 0x306cb3a5afe8837eull }}, {{ 0x201573dcd125a125ull, 0x4ea4627848c59859ull, 0xe9ab069302596968ull, 0x9405ca3355be5808ull, 0x407803324bd3c067ull, 0xe43f0478df1522eeull }}, {{ 0x40d686a02b784b71ull, 0x126bd8b2d7b7f37bull, 0x20ae41be177e1e13ull, 0xc839e601596f7059ull, 0x84b01ff6f645840bull, 0xea762cb8b6d35d4eull }}, {{ 0x88614241b2b2f26eull, 0xb83676fc6d2f82d0ull, 0x46ce916ceaed2cbeull, 0xd242fc0d7e5a637bull, 0x2ee13fa59eb72875ull, 0x289dbf372441a511ull }}, {{ 0x53cc9690fafd784bull, 0x3220a5dc43db1c25ull, 0xc411ae412d43bf73ull, 0x369dd886ef87e2d0ull, 0xd4cc7c783327949aull, 0x962978276a9072abull }}, {{ 0x45fde1a9cde6b2eeull, 0xf5467a9aa68f1975ull, 0xa8b0ce8bc4a57a7full, 0x222a75455b4edc27ull, 0x4ffcdcb1ff8bce06ull, 0xdd9eb18a29a47ab6ull }}, {{ 0xbbead0a20b02fd4eull, 0x94c0ca0a8196fe94ull, 0x96e81175ae76c8ffull, 0x55a894b59114998cull, 0x1fe09ef3fb760c3dull, 0xa832ef65a06ccb1full }}, {{ 0x572c26546e1de510ull, 0xcf87e4690fe5f1cfull, 0xe510ae98d0a3d9fbull, 0x5895cf17aacdff7dull, 0x3ec63587d29c7a65ull, 0x91fd59f8443fef37ull }}, {{ 0x67b97f4c4d2af29eull, 0x1b4eec1a9efb7219ull, 0xf2a6d1f8266683d6ull, 0x75da16ecac0bfaeaull, 0x73be174e3a1cc7f5ull, 0xb3e583b2aa7f5828ull }}, {{ 0x0d3ef8fb03ad7a2eull, 0x1115390a35d274feull, 0x7a8433b18001265dull, 0x9a84e53eb877cd2dull, 0x856ce90e451fcf96ull, 0x06f724faa8f97194ull }}, {{ 0x8475b9ce24c6c5ccull, 0xaad43a661a3891ecull, 0xc92a04ef000b7fa2ull, 0x0930f47334ae03c6ull, 0x36411a8eb33e1be2ull, 0x45a771ca99be6fcdull }}, {{ 0x2c99420d6fc3b9fbull, 0xac4a47fd0635b33dull, 0xdba431560072fc5aull, 0x5be98c800ecc25c3ull, 0x1e8b0993006d16d4ull, 0xb88a71ea01705e04ull }}, {{ 0xbdfc94865da543d3ull, 0xbae6cfe23e190063ull, 0x9469ed5c047ddb8aull, 0x971f7d0093f979a6ull, 0x316e5fbe0442e44bull, 0x356873240e63ac29ull }}, {{ 0x6bddcd3fa874a63dull, 0x4d041ed66cfa03e5ull, 0xcc2345982cea936bull, 0xe73ae205c7bec081ull, 0xee4fbd6c2a9ceaf3ull, 0x16147f688fe4b99bull }}, {{ 0x36aa047c948e7e61ull, 0x0229346041c426f6ull, 0xf960b7f1c129c231ull, 0x084cd439cd738511ull, 0x4f1d6639aa212d87ull, 0xdcccfa159eef4017ull }}, {{ 0x22a42cddcd90efcaull, 0x159c0bc291a9859eull, 0xbdc72f718ba195eaull, 0x53004a42068332b3ull, 0x1725fe40a54bc746ull, 0xa001c4d8355880e9ull }}, {{ 0x5a69c0aa07a95de1ull, 0xd8187599b09f382dull, 0x69c7da6f744fdb24ull, 0x3e02e694411ffb05ull, 0xe77bee8674f5c8bfull, 0x4011b0721575091aull }}, {{ 0x882186a44c9daaceull, 0x70f49800e63831c5ull, 0x21ce885a8b1e8f70ull, 0x6c1d01ca8b3fce36ull, 0x0ad751409199d778ull, 0x80b0e474d6925b0dull }}, {{ 0x514f426afe28ac0dull, 0x698df008fe31f1b7ull, 0x521153896f319a64ull, 0x392211e9707e0e1dull, 0x6c692c85b0026ab4ull, 0x06e8ec9061b78e82ull }}, {{ 0x2d18982ded96b886ull, 0x1f8b6059edf37129ull, 0x34ad435e57f007ecull, 0x3b54b31e64ec8d25ull, 0x3c1bbd38e0182b0aull, 0x45193da3d12b9118ull }}, {{ 0xc2f5f1cb47e3353eull, 0x3b71c3834b826b9bull, 0x0ec4a1af6f604f39ull, 0x514eff2ff13d8374ull, 0x59156438c0f1ae66ull, 0xb2fc68662bb3aaf2ull }}, {{ 0x9d9b71f0cee0146eull, 0x5271a320f3183415ull, 0x93ae50da59c3183cull, 0x2d15f7df6c672288ull, 0x7ad5ea378970cfffull, 0xfddc13fdb504ad77ull }}, {{ 0x2812736814c0cc4cull, 0x38705f497ef208d8ull, 0xc4cf2887819ef25bull, 0xc2dbaeba3c075955ull, 0xcc5b262b5e681ff7ull, 0xea98c7e9122ec6aaull }}, {{ 0x90b88210cf87faf5ull, 0x3463b8def5745871ull, 0xb017954b10357790ull, 0x9c94d34658497d59ull, 0xfb8f7db1b0113fadull, 0x29f7cf1ab5d3c2abull }}, {{ 0xa73514a81b4fcd94ull, 0x0be538b5968b746full, 0xe0ebd4eea216aba2ull, 0x1dd040bf72dee580ull, 0xd39ae8f0e0ac7cc8ull, 0xa3ae170b1a459ab7ull }}, {{ 0x8812ce91111e07c6ull, 0x76f43717e1728c5cull, 0xc936515254e2b454ull, 0x2a22877a7cb4f708ull, 0x440d1968c6bcdfd1ull, 0x64cce66f06b80b2eull }}, {{ 0x50bc11aaab2c4db7ull, 0xa58a26eece797b9dull, 0xdc1f2d3750db0b4cull, 0xa5594ac8df11a657ull, 0xa882fe17c360be2bull, 0xf001005643306fceull }}, {{ 0x2758b0aaafbb0928ull, 0x7765855410bed425ull, 0x9937c429288e70feull, 0x757cebd8b6b07f6eull, 0x951deceda1c76db4ull, 0x600a035e9fe45e12ull }}, {{ 0x8976e6aadd4e5b8cull, 0xa9f73548a7744973ull, 0xfc2da99b959069f0ull, 0x96e1367722e4fa51ull, 0xd32b414851ca490cull, 0xc06421b23eebacb9ull }}, {{ 0x5ea502aca50f9375ull, 0xa3a814d68a8ade83ull, 0xd9c8a013d7a42366ull, 0xe4cc20a75cf1c733ull, 0x3fb08cd331e6da7dull, 0x83e950f67534bf42ull }}, {{ 0xb2721abe729bc292ull, 0x6490d061696cb121ull, 0x81d640c66c696202ull, 0xeff94689a171c806ull, 0x7ce5803ff30488eaull, 0x271d29a0940f7896ull }}, {{ 0xf8750b707a1599b3ull, 0xeda823ce1e3eeb50ull, 0x125e87c03c1dd417ull, 0x5fbcc1604e71d041ull, 0xe0f7027f7e2d592dull, 0x8723a045c89ab5e0ull }}, {{ 0xb4927264c4d80100ull, 0x4891660d2e753129ull, 0xb7b14d82592a48efull, 0xbd5f8dc31072228aull, 0xc9a618faedc57bc5ull, 0x476442b9d60b1ac8ull }}, {{ 0x0db877efb0700a04ull, 0xd5adfc83d093eba1ull, 0x2ced07177ba6d958ull, 0x65bb899ea475596bull, 0xe07cf9cd49b6d5b9ull, 0xc9ea9b425c6f0bd7ull }}, {{ 0x8934af5ce460642dull, 0x58cbdd2625c7344aull, 0xc14246ead4847d78ull, 0xf95360326c957e2full, 0xc4e1c204e124593dull, 0xe32a10979c56766eull }}, {{ 0x5c0ed9a0ebc3e9c1ull, 0x77f6a37d79c80ae9ull, 0x8c96c52c4d2ce6b3ull, 0xbd41c1f83dd6edddull, 0xb0d19430cb6b7c6bull, 0xdfa4a5ec1b60a053ull }}, {{ 0x9894804935a7218aull, 0xafa262e6c1d06d1dull, 0x7de3b3bb03c10302ull, 0x649193b26a654aa7ull, 0xe82fc9e7f232dc35ull, 0xbc6e7b3911c64344ull }}, {{ 0xf5cd02dc18874f61ull, 0xdc57dd0392244327ull, 0xeae5054e258a1e1aull, 0xedafc4f827f4ea8aull, 0x11dde30f75fc9a15ull, 0x5c50d03ab1bea0b1ull }}, {{ 0x9a021c98f54919caull, 0x9b6ea223b56a9f8full, 0x2cf2350d77652d0cull, 0x48ddb1b18f91296dull, 0xb2aade9a9bde04dbull, 0x9b28224af17246eaull }}, {{ 0x04151df994db01e0ull, 0x12525565162a3b9cull, 0xc1761286a9f3c27eull, 0xd8a8f0ef9bab9e43ull, 0xfaacb20a16ac3090ull, 0x0f9156ed6e76c52aull }}, {{ 0x28d32bbfd08e12c1ull, 0xb73755f2dda65418ull, 0x8e9cb942a38598ecull, 0x7699695c14b42ea5ull, 0xcabef464e2b9e5a8ull, 0x9bad654650a3b3adull }}, {{ 0x983fb57e258cbb88ull, 0x28295b7ca87f48f1ull, 0x921f3c9a6337f93full, 0xa1fe1d98cf09d277ull, 0xeb758bf0db42f894ull, 0x14c5f4bf266504c9ull }}, {{ 0xf27d16ed777f5353ull, 0x919d92de94f8d96full, 0xb5385e07e02fbc77ull, 0x53ed27f8166238abull, 0x32977768909db5ceull, 0xcfbb8f777ff22fe3ull }}, {{ 0x78e2e546aaf9413full, 0xb027bcb1d1b87e5full, 0x1433ac4ec1dd5cabull, 0x47438fb0dfd636b5ull, 0xf9eaaa15a6291a0full, 0x1d539aaaff75dedfull }}, {{ 0xb8dcf4c2adbc8c74ull, 0xe18d5ef23134efbaull, 0xca04bb1392a59eb4ull, 0xc8a39ce8be5e2312ull, 0xc32aa4d87d9b0498ull, 0x25440aadfa9ab4bfull }}, {{ 0x38a18f9ac95d7c8aull, 0xcf85b575ec115d4bull, 0xe42f4ec3ba783310ull, 0xd66421176fad5ebbull, 0x9faa7074e80e2df7ull, 0x74a86acbca0b0f7dull }}, {{ 0x364f9c0bdda6dd65ull, 0x1b39169b38ada4f0ull, 0xe9d913a548b1fea8ull, 0x5fe94aea5cc5b356ull, 0x3ca86491108dcbaeull, 0x8e942bf5e46e9ae8ull }}, {{ 0x1f1c1876a884a5f1ull, 0x103ae21036c87162ull, 0x227ac474d6f3f291ull, 0xbf1ced279fb90165ull, 0x5e93edaaa589f4cfull, 0x91c9b79aec520d12ull }}, {{ 0x3718f4a2952e7b6bull, 0xa24cd4a223d46dd5ull, 0x58cbac90658779aaull, 0x7721438c3d3a0df3ull, 0xb1c748aa7763901dull, 0xb1e12c0d3b3482b7ull }}, {{ 0x26f98e59d3d0d230ull, 0x57004e55664c4a54ull, 0x77f4bda3f74ac0aaull, 0xa74ca37a64448b81ull, 0xf1c8d6a8a9e3a126ull, 0xf2cbb884500d1b2cull }}, {{ 0x85bf8f82462835dfull, 0x66030f55fefae749ull, 0xaf8f6867a8eb86a7ull, 0x88fe62c7eaad730eull, 0x71d86296a2e44b82ull, 0x7bf5352b20830fc1ull }}, {{ 0x397b9b16bd921ab9ull, 0xfc1e995bf5cd08dfull, 0xdb9a140c99334289ull, 0x59efdbcf2ac67e92ull, 0x7273d9e25ceaf319ull, 0xd79413af451e9d8eull }}, {{ 0x3ed40ee367b50b37ull, 0xd931fd979a0258b8ull, 0x9404c87dfc009963ull, 0x835e9617abc0f1bcull, 0x788682d7a12d7efdull, 0x6bc8c4d8b3322790ull }}, {{ 0x744894e20d127028ull, 0x7bf3e7ec04177732ull, 0xc82fd4ebd805fde6ull, 0x21b1dcecb589715dull, 0xb5411c6c4bc6f5e7ull, 0x35d7b076fff58ba4ull }}, {{ 0x8ad5d0d482b8618dull, 0xd7870f3828eaa7f8ull, 0xd1de5136703beb00ull, 0x50f2a13f175e6da9ull, 0x148b1c3af5c59b07ull, 0x1a6ce4a5ff97746full }}, {{ 0x6c5a284d1b33cf7full, 0x6b469831992a8fb5ull, 0x32af2c2062572e08ull, 0x297a4c76e9b048a2ull, 0xcd6f1a4d99b80e49ull, 0x0840ee7bfbea8c56ull }}, {{ 0x3b85930310061af8ull, 0x30c1f1effba99d16ull, 0xfad7b943d767cc54ull, 0x9ec6fca520e2d655ull, 0x0657070801308edbull, 0x528950d7d7297b64ull }}, {{ 0x5337be1ea03d0db3ull, 0xe793735fd4a022deull, 0xcc6d3ca66a0dfb49ull, 0x33c5de7348dc5f5bull, 0x3f6646500be59494ull, 0x395d286e679ed1e8ull }}, {{ 0x402d6d3242628901ull, 0x0bc281be4e415cafull, 0xfc445e80248bd0e3ull, 0x05bab080d89bb995ull, 0x79febf2076f7cdcaull, 0x3da394500c343312ull }}, {{ 0x81c643f697d95a0dull, 0x7599116f0e8d9ed8ull, 0xdaabb1016d7628deull, 0x394ae50876153fdbull, 0xc3f37744a5ae09e4ull, 0x6863cb207a09feb8ull }}, {{ 0x11bea7a1ee7d847dull, 0x97faae5691883475ull, 0x8ab4ea0e469d98b0ull, 0x3cecf2549cd47e96ull, 0xa782a8ae78cc62eaull, 0x13e5ef44c463f337ull }}, {{ 0xb1728c5350e72ce3ull, 0xefcacf61af520c92ull, 0x6b11248ec227f6e5ull, 0x6141774e204cf1e1ull, 0x8b1a96d0b7fbdd26ull, 0xc6fb58afabe7802cull }}, {{ 0xee797b412907c0deull, 0x5dec19d0d9347dbaull, 0x2eab6d93958fa4fbull, 0xcc8ea90d430172ceull, 0x6f09e4272fd6a37full, 0xc5d176dcb70b01bdull }}, {{ 0x50bed08b9a4d88afull, 0xab3902287c0ce94dull, 0xd2b247c3d79c71d1ull, 0xfd929a849e0e7c0dull, 0x5662e987de6262fdull, 0xba2ea49f266e1166ull }}, {{ 0x27742574070756dbull, 0xb03a1594d8811d05ull, 0x3af6cda66c1c7230ull, 0xe7ba092e2c90d88aull, 0x5fdd1f4eafd7ddebull, 0x45d26e37804cadffull }}, {{ 0x8a8976884649648eull, 0xe244d7d0750b2233ull, 0x4da40880391c75e6ull, 0x0d445bcdbda87566ull, 0xbea33912de6eab37ull, 0xba384e2b02fecbf9ull }}, {{ 0x695ea152bedded8bull, 0xd6b06e24926f5603ull, 0x086855023b1c9b04ull, 0x84ab9609689495ffull, 0x72603abcb052b026ull, 0x46330dae1df3f7c1ull }}, {{ 0x1db24d3b74ab476aull, 0x62e44d6db8595c22ull, 0x541352164f1e0e30ull, 0x2eb3dc5e15cddbf6ull, 0x77c24b5ee33ae181ull, 0xbdfe88cd2b87ad8eull }}, {{ 0x28f704528eb0ca27ull, 0xdceb0649337d9955ull, 0x48c134df172c8de3ull, 0xd3069bacda0a979full, 0xad96f1b4e04ccf0bull, 0x6bf15803b34cc790ull }}, {{ 0x99a62b3992e7e584ull, 0xa12e3edc02e7fd53ull, 0xd78c10b6e7bd8ae6ull, 0x3e4214c08469ec38ull, 0xc7e57110c3001676ull, 0x376d702500ffcba6ull }}, {{ 0x007db03fbd0ef728ull, 0x4bce74981d0fe544ull, 0x6b78a7250d676d02ull, 0x6e94cf852c233a38ull, 0xcef66aa79e00e09eull, 0x2a46617209fdf483ull }}, {{ 0x04e8e27d6295a794ull, 0xf6108df1229ef4a8ull, 0x32b68772860a4216ull, 0x51d01b33b9604634ull, 0x15a02a8c2c08c630ull, 0xa6bfce7463eb8d26ull }}, {{ 0x3118d8e5d9d88bc3ull, 0x9ca58b6b5a358e90ull, 0xfb214a793c6694e5ull, 0x322110053dc2be09ull, 0xd841a979b857bde3ull, 0x837e108be733837cull }}, {{ 0xeaf878fa827575a1ull, 0x1e777231861791a1ull, 0xcf4ce8bc5c01d0f8ull, 0xf54aa034699b6c63ull, 0x72909ec1336d6adfull, 0x22eca577080322e0ull }}, {{ 0x2db4b9c91896984bull, 0x30aa75ef3cebb053ull, 0x1901175b981229b1ull, 0x94ea420c20123be6ull, 0x79a6338c02462cbfull, 0x5d3e76a6501f5cc4ull }}, {{ 0xc90f41daf5e1f2f1ull, 0xe6a89b586134e33full, 0xfa0ae993f0b5a0ebull, 0xd126947940b656fcull, 0xc07e037816bdbf7bull, 0xa470a27f21399facull }}, {{ 0xda98928d9ad37d6eull, 0x02961173cc10e07dull, 0xc46d1fc767184937ull, 0x2b81ccbc871f65e1ull, 0x84ec22b0e3697ad6ull, 0x6c6658f74c403cbfull }}, {{ 0x89f5b9880c42e64bull, 0x19dcae85f8a8c4eaull, 0xac433dca06f2dc26ull, 0xb311ff5d4739fad1ull, 0x31395ae8e21ecc5dull, 0x3bff79a8fa825f7bull }}, {{ 0x63993f507a9cfef0ull, 0x029ed13bb697b129ull, 0xbaa069e4457c997dull, 0xfeb3f9a4c843cc30ull, 0xec3d8d18d533fba8ull, 0x57fac099c917bacfull }}, {{ 0xe3fc7924ca21f563ull, 0x1a342c5521eceb9dull, 0x4a4422eab6ddfee2ull, 0xf307c06fd2a5f9e7ull, 0x3a6782f85407d499ull, 0x6fcb8601daed4c1full }}, {{ 0xe7dcbb6fe55395e3ull, 0x0609bb535341342aull, 0xe6a95d2b24abf4d5ull, 0x7e4d845e3a7bc308ull, 0x480b1db3484e4e03ull, 0x5df33c128d44f938ull }}, {{ 0x0e9f525ef543dadbull, 0x3c615141408c09adull, 0x029da3af6eb79052ull, 0xef072bae48d59e59ull, 0xd06f2900d30f0c22ull, 0xab8058b984b1bc32ull }}, {{ 0x923937b594a68c8dull, 0x5bcd2c8c857860c2ull, 0x1a2864da532ba336ull, 0x5647b4ced8582f7aull, 0x24579a083e96795dull, 0xb303773f2ef159fcull }}, {{ 0xb63c2d17ce817d83ull, 0x9603bd7d36b3c799ull, 0x0593f0873fb4601full, 0x5ecd10147371dac5ull, 0x6b6c045271e0bda5ull, 0xfe22a877d56d83d9ull }}, {{ 0x1e59c2ee110ee719ull, 0xdc2566e42305cc01ull, 0x37c765487d0bc13bull, 0xb402a0cc82728bb2ull, 0x32382b3872c76875ull, 0xed5a94ae5647267eull }}, {{ 0x2f819d4caa9506faull, 0x997604e95e39f80bull, 0x2dc9f4d4e2758c56ull, 0x081a47fd187974f6ull, 0xf631b0347bca1499ull, 0x4589cecf5ec780edull }}, {{ 0xdb1024fea9d245c6ull, 0xfe9c311dae43b06full, 0xc9e39050d8977b61ull, 0x5106cfe2f4be919dull, 0x9df0e20cd5e4cdfaull, 0xb7621419b3cb094bull }}, {{ 0x8ea171f2a236b9b7ull, 0xf219eb28cea4e45eull, 0xe2e3a32875ead1d3ull, 0x2a441edd8f71b029ull, 0x2b68d4805af00bc7ull, 0x29d4c90105ee5cf4ull }}, {{ 0x924e737a56234128ull, 0x75032f981270ebb1ull, 0xdce45f949b2c3247ull, 0xa6a934a79a70e1a2ull, 0xb2184d038d6075c7ull, 0xa24fda0a3b4fa189ull }}, {{ 0xb71082c75d608b8eull, 0x921fdbf0b86934efull, 0xa0ebbbce0fb9f6caull, 0x829c0e8c0868d05cull, 0xf4f3022385c499ccull, 0x571e8466511c4f60ull }}, {{ 0x26a51bc9a5c57387ull, 0xb53e9767341c115dull, 0x4935560c9d43a3e9ull, 0x1a1891785418239eull, 0x917e156339ae01fdull, 0x67312bff2b1b19c9ull }}, {{ 0x827315e079b6834bull, 0x1471ea080918ada3ull, 0xdc155c7e24a46721ull, 0x04f5aeb348f1642eull, 0xaeecd5e040cc13e3ull, 0x07ebb7f7af0f01dfull }}, {{ 0x187edac4c12120ebull, 0xcc7324505af6c863ull, 0x98d59ced6e6c074aull, 0x3198d300d96de9d4ull, 0xd5405ac287f8c6deull, 0x4f352facd69612bcull }}, {{ 0xf4f48baf8b4b4929ull, 0xfc7f6b238da3d3deull, 0xf8582146503848ebull, 0xeff83e087e4b224dull, 0x54838b994fb7c4adull, 0x1813dcc061dcbb60ull }}, {{ 0x918d74db70f0db9cull, 0xdcfa2f63886646b5ull, 0xb3714cbf2232d937ull, 0x5fb26c54eeef570bull, 0x4d2373fd1d2daecbull, 0xf0c69f83d29f51c3ull }}, {{ 0xaf8690926968941cull, 0xa1c5d9e353fec317ull, 0x026cff7755fc7c2eull, 0xbcf83b5155596675ull, 0x036287e323c8d3f1ull, 0x67c23b263a3931a1ull }}, {{ 0xdb41a5b81e15c918ull, 0x51ba82e147f39eecull, 0x1841faa95bdcd9d2ull, 0x61b2512d557e0092ull, 0x21d94edf65d84771ull, 0x0d964f7e463bf04aull }}, {{ 0x909079312cd9daecull, 0x31491ccccf843540ull, 0xf293ca9d96a08237ull, 0xd0f72bc556ec05b4ull, 0x527d14b9fa72ca6dull, 0x87df1aeebe5762e5ull }}, {{ 0xa5a4bbebc0828d38ull, 0xecdb20001b2a1485ull, 0x79c5ea27e2451627ull, 0x29a7b5b565383911ull, 0x38e2cf43c87be84aull, 0x4eb70d536f69dcf5ull }}, {{ 0x786f573585198434ull, 0x408f40010fa4cd38ull, 0xc1bb258ed6b2dd8full, 0xa08d1915f4323aaeull, 0x38dc18a5d4d712e5ull, 0x132685425a22a194ull }}, {{ 0xb459681732ff2a0aull, 0x8598800a9c700434ull, 0x914f779462fca798ull, 0x4582fadb89f64ad3ull, 0x3898f67a5066bcf8ull, 0xbf813497855a4fcaull }}, {{ 0x0b7e10e7fdf7a462ull, 0x37f5006a1c602a0full, 0xad1aabcbddde8bf5ull, 0xb71dcc93639eec43ull, 0x35f9a0c7240361b2ull, 0x7b0c0deb35871de6ull }}, {{ 0x72eca90febac6bd8ull, 0x2f9204251bc1a496ull, 0xc30ab5f6aab17794ull, 0x2729fdc1e4353aa4ull, 0x1bc047c76821d0fbull, 0xce788b3017472afeull }}, {{ 0x7d3e9a9f34bc366full, 0xdbb4297315906de0ull, 0x9e6b1ba2aaeeabc9ull, 0x87a3e992ea144a6full, 0x1582cdca115229cfull, 0x10b56fe0e8c7adedull }}, {{ 0xe4720a380f5a2056ull, 0x95099e7ed7a44ac4ull, 0x302f145aad52b5e2ull, 0x4c671fbd24cae85cull, 0xd71c09e4ad35a21bull, 0xa7165ec917cccb42ull }}, {{ 0xec74663099854359ull, 0xd26030f46c6aebb0ull, 0xe1d6cb8ac53b1ad9ull, 0xfc073d636fed1399ull, 0x671862eec4185510ull, 0x86dfb3daedfff09cull }}, {{ 0x3c8bfde5ff34a17bull, 0x37c1e98c3c2d34e9ull, 0xd263f36bb44f0c82ull, 0xd84865e25f42c402ull, 0x06f3dd53a8f352a9ull, 0x44bd068d4bff661cull }}, {{ 0x5d77eafbf80e4ed2ull, 0x2d931f7a59c4111cull, 0x37e782350b167d16ull, 0x72d3fad7b89ba81cull, 0x4586a54499813aa2ull, 0xaf624184f7f9fd18ull }}, {{ 0xa6af2dd7b08f1434ull, 0xc7bf3ac781a8ab1bull, 0x2f0b16126ee0e2ddull, 0x7c47cc6d3614911aull, 0xb74274adff0c4a58ull, 0xd9d68f31afc3e2f2ull }}, {{ 0x82d7ca6ce596ca04ull, 0xcd784bcb1096af14ull, 0xd66edcb854c8dca9ull, 0xdacdfc441ccdab05ull, 0x28988ecbf67ae774ull, 0x826197f0dda6dd7bull }}, {{ 0x1c6de840f7e3e428ull, 0x06b2f5eea5e2d6cdull, 0x60549f334fd89ea2ull, 0x8c0bdaa92008ae3aull, 0x95f593f7a0cd0a90ull, 0x17cfef68a884a6cfull }}, {{ 0x1c4b1289aee6e991ull, 0x42fd9b527adc6403ull, 0xc34e38011e763254ull, 0x78768a9b4056ce47ull, 0xdb97c7ac480269a5ull, 0xee1f5a16952e841bull }}, {{ 0x1aeeb960d5051fa7ull, 0x9de81138cc9be81full, 0xa10e300b309df74aull, 0xb4a16a1083640ecdull, 0x93edccbad0182076ull, 0x4d3984e1d3d12916ull }}, {{ 0x0d533dc852333c8bull, 0x2b10ac37fe171137ull, 0x4a8de06fe62ba8eaull, 0x0e4e24a521e89408ull, 0xc749ff4c20f144a3ull, 0x043f30d2462b9ae1ull }}, {{ 0x854069d336005d6bull, 0xaea6ba2fece6ac26ull, 0xe98ac45efdb49925ull, 0x8f0d6e735315c852ull, 0xc8e3f8f9496cae5eull, 0x2a77e836bdb40cd1ull }}, {{ 0x348422401c03a62full, 0xd28345df4102b981ull, 0x1f6babb5e90dfb78ull, 0x968650813ed9d33dull, 0xd8e7b9bcde3ecfb1ull, 0xa8af122369088031ull }}, {{ 0x0d29568118247dd8ull, 0x3920bab88a1b3f0cull, 0x3a34b51b1a8bd2b8ull, 0xe13f250c74824063ull, 0x790d4160ae741cefull, 0x96d6b5621a5501f2ull }}, {{ 0x839d610af16cea6full, 0x3b474b3565107678ull, 0x460f130f09763b32ull, 0xcc77727c8d1683e0ull, 0xba848dc6d089215eull, 0xe46315d507521378ull }}, {{ 0x2425ca6d6e41285aull, 0x50c8f015f2a4a0b5ull, 0xbc96be965e9e4ff6ull, 0xfcaa78dd82e126c2ull, 0x492d89c4255b4db3ull, 0xebdeda524934c2b7ull }}, {{ 0x6979e8464e8b9384ull, 0x27d960db7a6e4713ull, 0x5de371dfb22f1f9full, 0xdea8b8a71ccb839bull, 0xdbc761a975910907ull, 0x36b48736dc0f9b28ull }}, {{ 0x1ec312bf1173c32aull, 0x8e7dc892c84ec6c2ull, 0xaae272bcf5d73c37ull, 0xb29736871ff32411ull, 0x95c9d09e97aa5a4eull, 0x230d4824989c0f98ull }}, {{ 0x339ebb76ae859fa2ull, 0x90e9d5bbd313c395ull, 0xacd87b619a685a2bull, 0xf9e821473f7f68b0ull, 0xd9e22631eca78712ull, 0x5e84d16df6189bf5ull }}, {{ 0x043352a2d1383c54ull, 0xa92259563ec5a3d4ull, 0xc074d1d0081385b3ull, 0xc3114cc87afa16e6ull, 0x82d57df33e8b46bdull, 0xb1302e4b9cf6179aull }}, {{ 0x2a013a5c2c325b49ull, 0x9b577d5e73b86648ull, 0x8490322050c33904ull, 0x9eacffd4cdc4e503ull, 0x1c56eb807170c369ull, 0xebe1cef4219cec09ull }}, {{ 0xa40c4799b9f790d5ull, 0x116ae5b08533fed1ull, 0x2da1f54327a03a2eull, 0x32c1fe5009b0f223ull, 0x1b6533046e67a220ull, 0x36d215895021385bull }}, {{ 0x687acc0143aba857ull, 0xae2cf8e53407f430ull, 0xc853949f8c4245ccull, 0xfb93ef2060e9755full, 0x11f3fe2c500c5541ull, 0x2434d75d214c338full }}, {{ 0x14cbf80ca4b49365ull, 0xcdc1b8f4084f89e4ull, 0xd343ce3b7a96b9feull, 0xd3c75743c91e95bdull, 0xb387edbb207b5493ull, 0x6a1069a34cfa0396ull }}, {{ 0xcff7b07e6f0dc1f2ull, 0x09913988531b62e8ull, 0x40a60e52c9e343f4ull, 0x45c968a5db31d96aull, 0x034f494f44d14dc6ull, 0x24a4206101c423e3ull }}, {{ 0x1face4f056899372ull, 0x5fac3f533f11dd18ull, 0x867c8f3be2e0a788ull, 0xb9de167a8ff27e26ull, 0x2118dd18b02d09beull, 0x6e6943ca11a966deull }}, {{ 0x3cc0f163615fc26full, 0xbcba794076b2a2f1ull, 0x40dd9856dcc68b53ull, 0x42ace0c99f78ed81ull, 0x4af8a2f6e1c26173ull, 0x501ca5e4b09e04adull }}, {{ 0x5f896de1cdbd9857ull, 0x5f48bc84a2fa5d6cull, 0x88a7f3649fc17145ull, 0x9ac0c7e03ab9470cull, 0xedb65da4d197ce80ull, 0x211e7aeee62c2ec4ull }}, {{ 0xbb5e4ad20967f366ull, 0xb8d75d2e5dc7a63bull, 0x568f81ee3d8e6cb5ull, 0x0b87cec24b3cc67dull, 0x491fa8702fee1106ull, 0x4b30cd54fdb9d3b1ull }}, {{ 0x51aeec345e0f81f9ull, 0x3869a3cfa9cc7e55ull, 0x619b134e67903f19ull, 0x734e1396f05fc0e5ull, 0xdb3c9461df4caa3cull, 0xefe80551e94244ecull }}, {{ 0x30d53a0bac9b13b9ull, 0x3420661ca1fcef55ull, 0xd00ec1100ba276fcull, 0x810cc3e563bd88f5ull, 0x905dcbd2b8fea65cull, 0x5f1035331c96b140ull }}, {{ 0xe8544474be0ec538ull, 0x0943fd1e53e15953ull, 0x20938aa07458a5daull, 0x0a7fa6f5e567599aull, 0xa3a9f63b39f27f9dull, 0xb6a213ff1de2ec85ull }}, {{ 0x134aac8f6c93b430ull, 0x5ca7e32f46cd7d47ull, 0x45c36a448b767a84ull, 0x68fc859af6098005ull, 0x64a39e504378fc22ull, 0x2254c7f72add3d38ull }}, {{ 0xc0eabd9a3dc509e0ull, 0x9e8edfd8c406e4c6ull, 0xb9a226ad72a0c92bull, 0x19dd380d9c5f0034ull, 0xee642f22a2b9d958ull, 0x574fcfa7aca46433ull }}, {{ 0x892b680669b262c1ull, 0x3194be77a844efc3ull, 0x405582c67a47dbb4ull, 0x02a430881bb6020full, 0x4fe9d75a5b427d71ull, 0x691e1c8cbe6bea07ull }}, {{ 0x5bb2104020f7db87ull, 0xefcf70ac92b15da3ull, 0x83571bc0c6ce9509ull, 0x1a69e551151c1498ull, 0x1f2269879098e66aull, 0x1b2d1d7f70372449ull }}, {{ 0x94f4a28149ae9347ull, 0x5e1a66bdbaeda861ull, 0x21671587c411d263ull, 0x0822f52ad318cdf5ull, 0x37581f4ba5f90025ull, 0x0fc326fa62276adbull }}, {{ 0xd18e590ce0d1c0c8ull, 0xad0803694d4893cfull, 0x4e06d74da8b237e1ull, 0x515d93ac3ef80b93ull, 0x297138f47bba0172ull, 0x9d9f85c7d58a2c90ull }}, {{ 0x2f8f7a80c83187d4ull, 0xc250221d04d5c61eull, 0x0c44690896f62ed0ull, 0x2da7c4ba75b073c1ull, 0x9e6c398cd5440e77ull, 0x283b39ce5765bda1ull }}, {{ 0xdb9ac907d1ef4e44ull, 0x972155223059bd2dull, 0x7aac1a55e59dd427ull, 0xc88daf4898e4858aull, 0x303a3f8054a890a7ull, 0x9250420f69f96850ull }}, {{ 0x940bda4e33590ea6ull, 0xe74d5355e38163caull, 0xcab9075af82a498bull, 0xd588d8d5f8ed3768ull, 0xe2467b034e95a68dull, 0xb722949a23be1321ull }}, {{ 0xc876870e017a927full, 0x0905415ae30de5e9ull, 0xeb3a498db1a6df77ull, 0x5758785bb9442a17ull, 0xd6c0ce2111d8818aull, 0x2759ce05656cbf52ull }}, {{ 0xd4a1468c0ec9b8f7ull, 0x5a348d8cde8afb21ull, 0x3046df88f084baa6ull, 0x6974b3953ca9a4efull, 0x63880d4ab2750f67ull, 0x89820c35f63f793cull }}, {{ 0x4e4cc17893e139a6ull, 0x860d8780b16dcf52ull, 0xe2c4bb59652f4a7full, 0x1e8f03d45ea07157ull, 0xe35084eaf8929a0aull, 0x5f147a1b9e7abc5bull }}, {{ 0x0eff8eb5c6cc4079ull, 0x3c874b06ee4a1937ull, 0xdbaf517df3d8e8fbull, 0x3196264bb2446d6eull, 0xe125312db5ba0465ull, 0xb6ccc51430cb5b96ull }}, {{ 0x95fb9319c3fa84bcull, 0x5d48ee454ee4fc26ull, 0x94d92eeb867919d0ull, 0xefdd7ef4f6ac4654ull, 0xcb73ebc919442bf3ull, 0x23ffb2c9e7f193e4ull }}, {{ 0xdbd3bf01a7c92f5bull, 0xa4d94eb514f1d981ull, 0xd07bd53340bb0223ull, 0x5ea6f591a2babf4dull, 0xf28735dafca9b787ull, 0x67fcfbe30f6fc6efull }}, {{ 0x964576108ddbd98cull, 0x707d1312d1727f12ull, 0x24d65400874e1564ull, 0xb28597b05b4b790aull, 0x79481a8ddea12b49ull, 0x0fe1d6de9a5dc55full }}, {{ 0xdeb69ca58a967f7dull, 0x64e2bebc2e78f6b9ull, 0x705f4805490cd5ecull, 0xf937ece390f2ba65ull, 0xbcd1098ab24bb0e0ull, 0x9ed264b207a9b5baull }}, {{ 0xb3221e7769e0faddull, 0xf0db7359d0b9a342ull, 0x63b8d034da805b3bull, 0xbc2f40e3a97b47f6ull, 0x602a5f6af6f4e8c9ull, 0x3437eef44ca1194bull }}, {{ 0xff5530aa22c9cca3ull, 0x689281822740609aull, 0xe538221089039057ull, 0x59d888e49ed0cf9full, 0xc1a7ba2da59117e1ull, 0x0a2f558afe4afcf1ull }}, {{ 0xf953e6a55be1fe5dull, 0x15b90f158883c60dull, 0xf43154a55a23a36aull, 0x827558ee34281c3eull, 0x908d45c877aaeecdull, 0x65d9576deeede171ull }}, {{ 0xbd47027596d3efa4ull, 0xd93a96d75525bc8bull, 0x89ed4e7585646224ull, 0x1895794e09911a75ull, 0xa584b9d4acad5407ull, 0xfa7d6a4b554ace6full }}, {{ 0x64c61897e4475c65ull, 0x7c49e46953795d75ull, 0x6345109735ebd570ull, 0xf5d6bd0c5fab0897ull, 0x772f424ebec54846ull, 0xc8e626f154ec105cull }}, {{ 0xefbcf5eeeac99bf6ull, 0xdae2ec1d42bda695ull, 0xe0b2a5e81b365664ull, 0x9a63627bbcae55e9ull, 0xa7d8971373b4d2c5ull, 0xd8fd856d5138a39cull }}, {{ 0x5d619b552be017a1ull, 0x8cdd39249b6881dbull, 0xc6fa7b11101f5ff0ull, 0x07e1d8d55ecf5b22ull, 0x8e75e6c285103bb8ull, 0x79e736452c36641eull }}, {{ 0xa5d01153b6c0ec49ull, 0x80a43b6e12151291ull, 0xc5c8ceaaa139bf65ull, 0x4ed27855b4198f5bull, 0x909b039932a25530ull, 0xc3081eb3ba1fe931ull }}, {{ 0x7a20ad4523893adfull, 0x066a524cb4d2b9b0ull, 0xb9d812aa4c4179f7ull, 0x1438b35908ff9995ull, 0xa60e23fbfa5753e3ull, 0x9e513305453f1befull }}, {{ 0xc546c4b3635c4cb4ull, 0x402736ff103b40e4ull, 0x4270baa6fa8ec3a6ull, 0xca37017a59fbffd9ull, 0x7c8d67d7c76946deull, 0x2f2bfe34b477175cull }}, {{ 0xb4c3af01e19aff05ull, 0x818825f6a25088efull, 0x98674a85c993a47eull, 0xe6260ec783d7fe7cull, 0xdd860e6dca1cc4b3ull, 0xd7b7ee0f0ca6e99cull }}, {{ 0x0fa4d612d00df632ull, 0x0f517ba25725595dull, 0xf408e939dfc46cf1ull, 0xfd7c93cb266ff0ddull, 0xa73c9049e51faf06ull, 0x6d2f4c967e852020ull }}, {{ 0x9c705cbc208b9df9ull, 0x992ed45767757da2ull, 0x88591c42bdac416aull, 0xe6ddc5ef805f68abull, 0x885da2e2f33cd645ull, 0x43d8fde0f1334146ull }}, {{ 0x1c639f5945742bb6ull, 0xfbd44b6a0a96e85aull, 0x537b1a9b68ba8e29ull, 0x04a9bb5b03ba16b3ull, 0x53a85cdd80605ebbull, 0xa679eac96c008cc1ull }}, {{ 0x1be4397cb689b51dull, 0xd64af22469e51385ull, 0x42cf0a1217498da3ull, 0x2ea1518e2544e301ull, 0x4493a0a703c3b34eull, 0x80c32bde38057f8dull }}, {{ 0x16ea3edf21611321ull, 0x5eed756c22f2c333ull, 0x9c1664b4e8df8866ull, 0xd24d2f8d74b0de0cull, 0xadc4468625a5010dull, 0x079fb6ae3036fb84ull }}, {{ 0xe52674b74dcabf49ull, 0xb54696395d7b9ffeull, 0x18dfef1118bb53ffull, 0x3703db868ee8ac7eull, 0xc9aac13d78720a8aull, 0x4c3d22cde225d32eull }}, {{ 0xf3808f2909eb78ddull, 0x14c1de3da6d43ff4ull, 0xf8bf56aaf75147fdull, 0x262693419516bcecull, 0xe0ab8c66b4746966ull, 0xfa635c0ad57a3fd3ull }}, {{ 0x8305979a6332b8a7ull, 0xcf92ae68844a7f91ull, 0xb77962ada92ccfe2ull, 0x7d81c08fd2e36141ull, 0xc6b37c030c8c1dfdull, 0xc7e1986c56c67e46ull }}, {{ 0x1e37ec07dffb3684ull, 0x1bbad0152ae8fbafull, 0x2abddac89bc01edcull, 0xe711859e3ce1cc91ull, 0xc302d81e7d792be6ull, 0xcecff43b63c0eec3ull }}, {{ 0x2e2f384ebfd02125ull, 0x154c20d3ad19d4d7ull, 0xab6a8bd615813499ull, 0x06af382e60d1fdabull, 0x9e1c7130e6bbb705ull, 0x141f8a51e58953a5ull }}, {{ 0xcdd833137e214b77ull, 0xd4f94844c3025067ull, 0xb229765cd70c0dfaull, 0x42d831cfc833e8b4ull, 0x2d1c6be903552632ull, 0xc93b6732f75d4478ull }}, {{ 0x0a71fec2ed4cf2a2ull, 0x51bcd2af9e17240eull, 0xf59e9fa066788bccull, 0x9c71f21dd207170eull, 0xc31c371a21537df6ull, 0xdc5207fda9a4acb1ull }}, {{ 0x6873f39d45017a57ull, 0x31603adc2ce7688cull, 0x98323c4400b575fbull, 0x1c73752a3446e695ull, 0x9f1a27054d42eba2ull, 0x9b344fe8a06ebef1ull }}, {{ 0x14878424b20ec766ull, 0xedc24c99c10a157cull, 0xf1f65aa807169bcfull, 0x1c8293a60ac501d7ull, 0x37058635049d3455ull, 0x100b1f1644537570ull }}, {{ 0xcd4b296ef493c9feull, 0x4996fe018a64d6d8ull, 0x739f8a9046e2161full, 0x1d19c47c6bb2126full, 0x26373e122e240b53ull, 0xa06f36deab429662ull }}, {{ 0x04ef9e558dc5e3eeull, 0xdfe5ec0f67f06478ull, 0x843b69a2c4d4dd38ull, 0x2301acdc34f4b85aull, 0x7e286cb5cd68713full, 0x445824b2b099dfd5ull }}, {{ 0x315c2f5789bae74bull, 0xbefb389a0f63ecb0ull, 0x2a52205bb050a438ull, 0x5e10c09a118f3389ull, 0xed943f1a06146c77ull, 0xab716efae602be56ull }}, {{ 0xed99d96b614d08efull, 0x75d0360499e73ee1ull, 0xa7354394e3266a37ull, 0xaca78604af98035bull, 0x47ca77043ccc3ca9ull, 0xb26e55ccfc1b6f65ull }}, {{ 0x48027e31cd025954ull, 0x9a221c2e030874d3ull, 0x8814a3d0df80262aull, 0xbe8b3c2edbf02194ull, 0xcde8a62a5ffa5ea0ull, 0xf84f5a01d91259f4ull }}, {{ 0xd018edf202177d47ull, 0x055519cc1e549040ull, 0x50ce6628bb017daaull, 0x717059d497614fcdull, 0x0b167da7bfc7b247ull, 0xb31984127ab78390ull }}, {{ 0x20f94b7414eae4c8ull, 0x355301f92f4da288ull, 0x280ffd974e0ee8a4ull, 0x6e63824de9cd1e05ull, 0x6ee0e88d7dccf6caull, 0xfeff28b8cb2b23a0ull }}, {{ 0x49bcf288d12cefd2ull, 0x153e13bbd9085951ull, 0x909fe7e90c95166aull, 0x4fe3170b22032c33ull, 0x54c91586ea01a3e8ull, 0xf5f79737efaf6444ull }}, {{ 0xe16179582bc15e33ull, 0xd46cc5567a537d2cull, 0xa63f0f1a7dd2e024ull, 0x1edee66f541fba03ull, 0x4fdad74524106713ull, 0x9babe82f5cd9eaabull }}, {{ 0xcdcebd71b58dadffull, 0x4c3fb560c742e3c0ull, 0x7e769708ea3cc170ull, 0x34b50059493d4424ull, 0x1e8c68b368a406bfull, 0x14b711d9a0832ab1ull }}, {{ 0x0a1366711788cbf6ull, 0xfa7d15c7c89ce588ull, 0xf0a1e659265f8e62ull, 0x0f12037cdc64a96cull, 0x317c170216684378ull, 0xcf26b280451faaebull }}, {{ 0x64c2006aeb57f799ull, 0xc8e2d9cdd620f750ull, 0x6652ff7b7fbb8fddull, 0x96b422e09bee9e41ull, 0xeed8e614e012a2b0ull, 0x1782f902b33cad2full }}, {{ 0xef94042d316fabf5ull, 0xd8dc820a5d49a923ull, 0xff3dfad2fd539ea9ull, 0xe3095cc617522e8dull, 0x5478fcd0c0ba5ae5ull, 0xeb1dba1b005ec3dfull }}, {{ 0x5bc829c3ee5cb797ull, 0x789d1467a4e09b67ull, 0xf86bcc3de54432a2ull, 0xde5d9fbce935d18bull, 0x4cb9e02787478cfaull, 0x2f29450e03b3a6b9ull }}, {{ 0x95d1a1a74f9f2be2ull, 0xb622cc0c70c61209ull, 0xb435fa6af4a9fa58ull, 0xafa83d611c1a2f77ull, 0xff42c18b48cb81ccull, 0xd79cb28c2504833cull }}, {{ 0xda3050891c37b6d9ull, 0x1d5bf87c67bcb45full, 0x0a1bc82d8ea3c777ull, 0xdc9265cb1905daadull, 0xf89b8f70d7f311feull, 0x6c1ef979722d2061ull }}, {{ 0x85e3255b1a2d247aull, 0x2597b4dc0d5f0bbeull, 0x6515d1c79265caa7ull, 0x9db7f9eefa3a8ac2ull, 0xb6139a686f7eb3f4ull, 0x3935bebe75c343d3ull }}, {{ 0x3adf758f05c36cc2ull, 0x77ed109885b67571ull, 0xf2da31cbb7f9ea87ull, 0x292fc355c6496b97ull, 0x1cc408145af3078eull, 0x3c19737099a0a645ull }}, {{ 0x4cba979639a23f94ull, 0xaf42a5f53920966cull, 0x7c85f1f52fc3294aull, 0x9bdda159bede33efull, 0x1fa850cb8d7e4b8dull, 0x58fe826600467eb3ull }}, {{ 0xff49ebde40567bccull, 0xd89a7b943b45e03aull, 0xdd3b7393dd9f9ceaull, 0x16a84d8174ae075aull, 0x3c9327f386eef388ull, 0x79f117fc02c0f2ffull }}, {{ 0xf8e336ae8360d5fdull, 0x7608d3ca50bac24dull, 0xa45283c6a83c212cull, 0xe293070e8ecc498cull, 0x5dbf8f8345558350ull, 0xc36aefd81b897df8ull }}, {{ 0xb8e022d121c85bddull, 0x9c5845e7274b970bull, 0x6b3925c292594bbcull, 0xd9be469193fadf7eull, 0xa97b9b20b5572128ull, 0xa22d5e71135eebb3ull }}, {{ 0x38c15c2b51d396a4ull, 0x1b72bb0788f3e675ull, 0x303b7999b77cf55eull, 0x816ec1afc7ccbaf0ull, 0x9ed40f4715674b98ull, 0x55c5b06ac1b53504ull }}, {{ 0x378d99b13243e264ull, 0x127b4e4b59870094ull, 0xe252c0012ae195adull, 0x0e5390ddcdff4d61ull, 0x344898c6d608f3f5ull, 0x59b8e42b9114122eull }}, {{ 0x2b8800ebf6a6d7e7ull, 0xb8d10ef17f4605caull, 0xd73b800baccfd8c2ull, 0x8f43a8aa0bf905d2ull, 0x0ad5f7c45c598792ull, 0x8138e9b3aac8b5ceull }}, {{ 0xb3500937a2846f0bull, 0x382a956ef8bc39e5ull, 0x68530074c01e779bull, 0x98a496a477ba3a3cull, 0x6c5badab9b7f4bb9ull, 0x0c392104abd71a0cull }}, {{ 0x01205c2c592c566aull, 0x31a9d655b75a42f9ull, 0x133e048f8130ac10ull, 0xf66de26cad46465cull, 0x3b94c8b412f8f53full, 0x7a3b4a2eb667047cull }}, {{ 0x0b4399bb7bbb6028ull, 0xf0a25f5929869dbaull, 0xc06c2d9b0be6b8a1ull, 0xa04ad83ec4bebf98ull, 0x53cfd708bdb9947full, 0xc650e5d320062cdaull }}, {{ 0x70a40152d551c193ull, 0x6657b97b9f422944ull, 0x8439c80e77033653ull, 0x42ec7273af737bf7ull, 0x461e6657693fccfcull, 0xbf28fa3f403dc087ull }}, {{ 0x66680d3c55318fc0ull, 0xff6d3ed438959cacull, 0x2a41d090a6201f41ull, 0x9d3c7884da82d7abull, 0xbd2fff6a1c7e01daull, 0x7799c67882698548ull }}, {{ 0x0010845b53ef9d7cull, 0xfa44744a35d81ebcull, 0xa69225a67d413893ull, 0x245cb530891c6cafull, 0x63dffa251cec128aull, 0xac01c0b5181f34d7ull }}, {{ 0x00a52b91475c26ddull, 0xc6ac8ae61a713358ull, 0x81b57880e48c35c7ull, 0x6b9f13e55b1c3edcull, 0xe6bfc5732138b965ull, 0xb8118712f1381069ull }}, {{ 0x0673b3acc99984a2ull, 0xc2bd6cfd086c0170ull, 0x1116b508ed7a19cdull, 0x3436c6f58f1a749dull, 0x037db67f4c373df6ull, 0x30af46bd6c30a423ull }}, {{ 0x408504bfdfff2e52ull, 0x9b6641e254380e60ull, 0xaae3125946c50209ull, 0x0a23c59797088e22ull, 0x22e920f8fa286b9eull, 0xe6d8c36639e6695eull }}, {{ 0x85322f7ebff7cf35ull, 0x11fe92d74a308fc2ull, 0xacdeb77cc3b21460ull, 0x6565b7ebe6558d5aull, 0x5d1b49b9c594342cull, 0x0477a1fe43001dadull }}, {{ 0x33f5daf37fae1810ull, 0xb3f1bc68e5e59d99ull, 0xc0b32adfa4f4cbc0ull, 0xf5f92f36ff57858aull, 0xa310e141b7ca09bbull, 0x2cac53ee9e0128c5ull }}, {{ 0x079a8d82fcccf09full, 0x07715c18faf827fcull, 0x86ffacbc718ff587ull, 0x9bbbd825f96b376bull, 0x5ea8cc912de46157ull, 0xbebb47522c0b97b8ull }}, {{ 0x4c09871de0016639ull, 0x4a6d98f9cdb18fd8ull, 0x45fcbf5c6f9f9746ull, 0x1556717bbe302a33ull, 0xb297fdabcaebcd6cull, 0x7350c935b873ed33ull }}, {{ 0xf85f472ac00dfe35ull, 0xe847f9c208ef9e72ull, 0xbbdf799c5c3be8beull, 0xd5606ed56de1a600ull, 0xf9efe8b5ed360638ull, 0x8127dc1934874404ull }}, {{ 0xb3b8c7ab808bee14ull, 0x12cfc194595c307dull, 0x56bac01b9a571775ull, 0x55c454564ad07c07ull, 0xc35f171b441c3e38ull, 0x0b8e98fc0d48a831ull }}, {{ 0x0537ccb305774ccaull, 0xbc1d8fcb7d99e4e9ull, 0x634b81140766ea92ull, 0x59ab4b5eec24d849ull, 0xa1b6e710a91a6e33ull, 0x7391f9d884d691f1ull }}, {{ 0x342dfefe36a8ffe4ull, 0x59279df2e802f11aull, 0xe0f30ac84a0529bbull, 0x80b0f1b5397072ddull, 0x512506a69b084e01ull, 0x83b3c2753061b370ull }}, {{ 0x09cbf5ee2299fee5ull, 0x7b8c2b7d101d6b06ull, 0xc97e6bd2e433a151ull, 0x06e971143e647caaull, 0x2b7242820e530c0full, 0x25059893e3d10263ull }}, {{ 0x61f79b4d5a03f4f6ull, 0xd379b2e2a1262e3cull, 0xdef0363cea044d2eull, 0x451e6aca6fecdeabull, 0xb27699148f3e7896ull, 0x7237f5c6e62a17dfull }}, {{ 0xd3ac11058427919full, 0x42c0fcda4b7dce5bull, 0xb5621e61242b03d4ull, 0xb3302be85f40b2b6ull, 0xf8a1facd9870b5deull, 0x762f99c4fda4eebcull }}, {{ 0x44b8aa37298bb035ull, 0x9b89e086f2ea0f96ull, 0x15d52fcb69ae264aull, 0xffe1b713b886fb23ull, 0xb653cc07f4671ab2ull, 0x9ddc01b1e8715361ull }}, {{ 0xaf36a6279f74e210ull, 0x1362c5457d249bdeull, 0xda53ddf220cd7eeaull, 0xfed126c53545cf5eull, 0x1f45f84f8c070afdull, 0x2a9810f3146d41d1ull }}, {{ 0xd8227d8c3a90d49full, 0xc1dbb4b6e36e16b2ull, 0x8746ab754806f524ull, 0xf42b83b414ba19b4ull, 0x38bbb31b78466debull, 0xa9f0a97ecc44922bull }}, {{ 0x7158e77a49a84e3aull, 0x92950f24e24ce2fcull, 0x48c2b294d045936full, 0x89b32508cf45010dull, 0x3754ff12b2c04b37ull, 0xa3669ef3faadb5b0ull }}, {{ 0x6d790ac6e0930e41ull, 0xb9d29770d700dddcull, 0xd79af9d022b7c25bull, 0x60ff725818b20a84ull, 0x2951f6bafb82f02bull, 0x62023587cac918e2ull }}, {{ 0x46ba6bc4c5be8e8full, 0x4239ea686608aa9cull, 0x6c0dc2215b2d9795ull, 0xc9fa7770f6f46930ull, 0x9d33a34dd31d61b1ull, 0xd416174debdaf8d5ull }}, {{ 0xc34835afb9719191ull, 0x96432813fc56aa1aull, 0x3889954d8fc7ebd4ull, 0xe3c8aa69a58c1be4ull, 0x2404610a3f25d0f1ull, 0x48dce90b368db858ull }}, {{ 0xa0d218dd3e6fafadull, 0xde9f90c7db62a50bull, 0x355fd5079dcf364dull, 0xe5d6a820777916eaull, 0x682bca66777a2972ull, 0xd8a11a7021893371ull }}, {{ 0x4834f8a4705cdcbeull, 0xb23ba7ce91da7274ull, 0x15be524c2a181f0aull, 0xfa629144aabae526ull, 0x11b5e800aac59e7cull, 0x764b08614f5c026eull }}, {{ 0xd211b66c63a09f69ull, 0xf6548e11b288788aull, 0xd96f36f9a4f1366aull, 0xc7d9acaeab4cf37cull, 0xb11b1006abb830e1ull, 0x9eee53cd1998184cull }}, {{ 0x34b1203be4463a1dull, 0x9f4d8cb0f954b56cull, 0x7e5825c0716c202dull, 0xce80bed2b10182e0ull, 0xeb0ea042b531e8d1ull, 0x354f4602fff0f2feull }}, {{ 0x0eeb4256eabe4523ull, 0x39077ee9bd4f163aull, 0xef7179846e3941c8ull, 0x1107743aea0f1cc4ull, 0x2e92429b13f31832ull, 0x1518bc1dff697df5ull }}, {{ 0x953097652b6eb362ull, 0x3a4af5216516de44ull, 0x5a6ebf2c4e3c91d2ull, 0xaa4a8a4d24971fb1ull, 0xd1b69a0ec77ef1f4ull, 0xd2f7592bfa1eeb93ull }}, {{ 0xd3e5e9f3b25301d0ull, 0x46ed934df2e4aeadull, 0x885377bb0e5db236ull, 0xa6e967036de73cedull, 0x31220493caf5738eull, 0x3da97bb7c53533c6ull }}, {{ 0x46fb2384f73e121dull, 0xc547c10b7ceed2caull, 0x5342ad4e8fa8f61eull, 0x851e06224b086147ull, 0xeb542dc5ed968392ull, 0x689ed52db41405bdull }}, {{ 0xc5cf6331a86cb523ull, 0xb4cd8a72e1543be6ull, 0x409ac5119c999d33ull, 0x332c3d56ee53ccc9ull, 0x3149c9bb47e123b9ull, 0x163453c908c8396bull }}, {{ 0xba19dff0943f1360ull, 0x1007687ccd4a5703ull, 0x860bb2b01e002405ull, 0xffba65654f45ffdcull, 0xece1e150cecb653bull, 0xde0b45da57d23e2full }}, {{ 0x4502bf65ca76c1c5ull, 0xa04a14e004e76625ull, 0x3c74fae12c016832ull, 0xfd47f5f518bbfe9dull, 0x40d2cd2813f1f457ull, 0xac70ba876e366ddfull }}, {{ 0xb21b79f9e8a391aeull, 0x42e4d0c03109fd74ull, 0x5c91cccbb80e11faull, 0xe4cf9b92f757f224ull, 0x883c0390c7738b6full, 0xbc67494a4e204ab8ull }}, {{ 0xf512c3c31663b0ceull, 0x9cf02781ea63e68eull, 0x9db1fff5308cb3c6ull, 0xf01c13bda96f756bull, 0x525823a7ca83725eull, 0x5c08dce70d42eb35ull }}, {{ 0x92bba59edfe4e808ull, 0x21618b1327e70195ull, 0x28f3ff93e57f05c2ull, 0x6118c5689e5a9634ull, 0x3771648de92277b5ull, 0x9858a106849d3015ull }}, {{ 0xbb547834bef11054ull, 0x4dcf6ebf8f060fd7ull, 0x9987fbc6f6f63995ull, 0xcaf7b6162f89de09ull, 0x2a6ded8b1b58ad15ull, 0xf3764a412e23e0d4ull }}, {{ 0x514cb20f756aa349ull, 0x0a1a537b963c9e6dull, 0xff4fd5c5a59e3fd5ull, 0xedad1cdddb62ac5full, 0xa84b476f1176c2d9ull, 0x829ee68bcd66c849ull }}, {{ 0x2cfef49a962a60d6ull, 0x650742d3de5e3045ull, 0xf91e59b8782e7e52ull, 0x48c320aa91dabbbfull, 0x92f0ca56aea39c83ull, 0x1a3501760603d2e0ull }}, {{ 0xc1f58e09dda7c859ull, 0xf2489c46afade2b3ull, 0xbb2f8134b1d0ef37ull, 0xd79f46a9b28b557full, 0xbd67e762d2641d20ull, 0x06120e9c3c263cc5ull }}, {{ 0x93978c62a88dd37bull, 0x76d61ac2dccadb05ull, 0x4fdb0c0ef229582full, 0x6c38c2a0f97156fdull, 0x660f09dc37e92348ull, 0x3cb4921a597e5fb9ull }}, {{ 0xc3eb7bda958a42caull, 0xa45d0b9c9fec8e37ull, 0x1e8e7895759d71daull, 0x3a379a49be6d65e5ull, 0xfc96629a2f1b60d4ull, 0x5f0db5077eefbd3dull }}, {{ 0xa732d689d7669be7ull, 0x6ba2741e3f3d8e2dull, 0x3190b5d69826728aull, 0x462c06e17045faf3ull, 0xdddfda05d711c84aull, 0xb689124af55d646bull }}, {{ 0x87fc61626a021707ull, 0x3458892e78678dc8ull, 0xefa71a61f1807968ull, 0xbdb844ce62bbcd7full, 0xaabe843a66b1d2e6ull, 0x215ab6ed95a5ec36ull }}, {{ 0x4fdbcdd82414e648ull, 0x0b755bd0b40b89d5ull, 0x5c8707d36f04be12ull, 0x6932b00fdb5606ffull, 0xab712a4802f23d03ull, 0x4d8b2547d87b3a22ull }}, {{ 0x1e960a7168d0fed1ull, 0x7295962708736255ull, 0x9d464e42562f6cb4ull, 0x1bfae09e915c45f9ull, 0xb26ba6d01d766222ull, 0x076f74ce74d0455aull }}, {{ 0x31dc686e1829f428ull, 0x79d7dd865481d753ull, 0x24bf0e975dda3f0cull, 0x17ccc631ad9abbc0ull, 0xf8348421269fd555ull, 0x4a5a90109022b58aull }}, {{ 0xf29c144cf1a3898eull, 0xc26ea73f4d12693full, 0x6f7691e9aa86767cull, 0xedffbdf0c80b5581ull, 0xb20d294b823e5552ull, 0xe789a0a5a15b176dull }}, {{ 0x7a18cb0170635f87ull, 0x9852887902b81c7full, 0x5aa1b320a940a0dfull, 0x4bfd6b67d071570eull, 0xf4839cf3166f553dull, 0x0b6046784d8eea48ull }}, {{ 0xc4f7ee0e63e1bb47ull, 0xf33954ba1b311cfaull, 0x8a50ff469c8648bbull, 0xf7e6320e246d668full, 0x8d24217ee0595464ull, 0x71c2c0b3079526d9ull }}, {{ 0xb1af4c8fe6d150c4ull, 0x803d4f450feb21cbull, 0x6729f8c21d3ed757ull, 0xaefdf48d6c46019bull, 0x83694ef4c37d4bf1ull, 0x719b86fe4bd3847full }}, {{ 0xf0d8fd9f042d27adull, 0x026518b29f2f51f4ull, 0x07a3b7952474696bull, 0xd5eb8d863abc1012ull, 0x221d158fa2e4f770ull, 0x701345eef6432cfbull }}, {{ 0x6879e83629c38cc0ull, 0x17f2f6fa37d93391ull, 0x4c652bd36c8c1e2eull, 0x5b33873e4b58a0b4ull, 0x5522d79c5cf1aa68ull, 0x60c0bb559e9fc1cfull }}, {{ 0x14c3121da1a37f80ull, 0xef7da5c62e7c03aeull, 0xfbf3b6423d792dccull, 0x9003486ef176470aull, 0x535c6c1ba170a813ull, 0xc7875158323d9219ull }}, {{ 0xcf9eb5285062fb05ull, 0x5ae879bdd0d824ccull, 0xd7851e9666bbca01ull, 0xa020d4556e9ec66dull, 0x419c39144e6690c3ull, 0xcb492d71f667b4fdull }}, {{ 0x1c33139323ddce2dull, 0x8d14c16a28717000ull, 0x6b3331e00355e40dull, 0x41484b565233c04aull, 0x901a3acb1001a7a4ull, 0xf0dbc673a00d11e4ull }}, {{ 0x19fec3bf66aa0dc7ull, 0x82cf8e25946e6001ull, 0x2ffff2c0215ae887ull, 0x8cd2f15f360582e8ull, 0xa1064beea0108c6aull, 0x6895c0844082b2edull }}, {{ 0x03f3a57a02a489c2ull, 0x1c1b8d77cc4fc00bull, 0xdfff7b814d8d154bull, 0x803d6db81c371d11ull, 0x4a3ef75240a57c29ull, 0x15d9852a851afd48ull }}, {{ 0x278476c41a6d6194ull, 0x191386adfb1d806eull, 0xbffad30d0782d4efull, 0x026649311a2722b2ull, 0xe675a9368676d99full, 0xda7f33a9330de4d2ull }}, {{ 0x8b2ca3a90845cfcaull, 0xfac342cbcf27044dull, 0x7fcc3e824b1c5156ull, 0x17fedbeb05875afbull, 0x00989c2140a48036ull, 0x88f8049bfe8af03dull }}, {{ 0x6fbe649a52ba1de7ull, 0xcba09bf617862b07ull, 0xfdfa7116ef1b2d65ull, 0xeff4972e37498dd2ull, 0x05f6194c866d021cull, 0x59b02e17f16d6262ull }}, {{ 0x5d6fee073b452b09ull, 0xf446179ceb3dae4aull, 0xebc86ae5570fc5f9ull, 0x5f8de7ce28df8a3dull, 0x3b9cfcfd40421521ull, 0x80e1ccef6e45d7d4ull }}, {{ 0xa65f4c4850b3ae56ull, 0x8abcec213068cee7ull, 0x35d42cf5669dbbc3ull, 0xbb8b0e0d98bb666bull, 0x5421e1e48294d34dull, 0x08d2015a4eba6e4aull }}, {{ 0x7fb8fad32704cf5bull, 0x6b61394be418150cull, 0x1a49c196022955a3ull, 0x536e8c87f7520030ull, 0x4952d2ed19d04109ull, 0x58340d8713484ee7ull }}, {{ 0xfd39cc3f8630198dull, 0x31cc3cf6e8f0d27cull, 0x06e18fdc159d5862ull, 0x42517d4fa93401e1ull, 0xdd3c3d4302228a5dull, 0x72088746c0d31508ull }}, {{ 0xe441fa7b3de0ff7full, 0xf1fa61a5196838e1ull, 0x44cf9e98d82573d5ull, 0x972ee51c9c0812caull, 0xa45a649e155967a4ull, 0x745548c3883ed258ull }}, {{ 0xea93c8d06ac9faf2ull, 0x73c7d072fe1238d2ull, 0xb01c31f87176865bull, 0xe7d4f31e1850bbe6ull, 0x6b87ee2cd57e0c6dull, 0x8b54d7a352743776ull }}, {{ 0x29c5d8242be3cd73ull, 0x85ce247decb6383dull, 0xe119f3b46ea13f92ull, 0x0e517f2cf3275702ull, 0x334f4dc056ec7c4bull, 0x71506c61388a2aa0ull }}, {{ 0xa1ba7169b6e6067eull, 0x3a0d6ceb3f1e3263ull, 0xcb03850c524c7bb9ull, 0x8f2ef7c17f89661cull, 0x01190983653cdaeeull, 0x6d243bcc3565aa42ull }}, {{ 0x51486e2124fc40eeull, 0x44864130772df7e4ull, 0xee23327b36fcd53cull, 0x97d5ad8efb5dfd1full, 0x0afa5f21f4608d51ull, 0x436a55fa15f8a694ull }}, {{ 0x2cd44d4b71da8947ull, 0xad3e8be4a7cbaeebull, 0x4d5ff8d025e0545aull, 0xee58c795d1abe33full, 0x6dc7b7538bc5852full, 0xa2275bc4dbb681c8ull }}, {{ 0xc04b04f272895cc9ull, 0xc47176ee8df4d52full, 0x05bfb8217ac34b8aull, 0x4f77cbda30b6e079ull, 0x49cd294375b733dfull, 0x558995b0952111d4ull }}, {{ 0x82ee3178795d9fdcull, 0xac6ea5518b9053ddull, 0x397d314ecba0f36bull, 0x1aadf685e724c4baull, 0xe2039ca2992806b9ull, 0x575fd8e5d34ab24aull }}, {{ 0x1d4deeb4bda83e99ull, 0xbc52752f73a346a7ull, 0x3ee3ed13f4498234ull, 0x0acba13b076faf46ull, 0xd4241e59fb90433bull, 0x69be78fa40eaf6ecull }}, {{ 0x250b530f689271feull, 0x5b3893da8460c287ull, 0x74e742c78adf160full, 0x6bf44c4e4a5cd8beull, 0x49692f83d3a2a04eull, 0x2170b9c6892da540ull }}, {{ 0x72713e9a15b873f0ull, 0x9035c6892bc79947ull, 0x91089bcb6cb6dc99ull, 0x378afb0ee7a07770ull, 0xde1bdb26445a4310ull, 0x4e6741c15bc87482ull }}, {{ 0x786c7204d934875bull, 0xa219c15bb5cbfccaull, 0xaa5615f23f249dffull, 0x2b6dce950c44aa65ull, 0xad168f7eab869ea2ull, 0x1008918d95d48d1cull }}, {{ 0xb43c74307c0d4993ull, 0x55018d9519f7dfe8ull, 0xa75cdb76776e2bfcull, 0xb24a11d27aaea7f8ull, 0xc2e19af2b3423255ull, 0xa055af87da4d831eull }}, {{ 0x0a5c89e4d884dfbdull, 0x520f87d303aebf17ull, 0x89a092a0aa4db7dbull, 0xf6e4b238cad28fb6ull, 0x9cd00d7b0095f758ull, 0x4358db4e87071f33ull }}, {{ 0x679d62f07530bd67ull, 0x349b4e3e24d376e6ull, 0x6045ba46a7092e91ull, 0xa4eef637ec399d21ull, 0x202086ce05dba979ull, 0xa178911146473804ull }}, {{ 0x0c25dd6493e76605ull, 0x0e110e6d7042a500ull, 0xc2b946c2865bd1acull, 0x71559e2f3a40234dull, 0x4145440c3a949ec0ull, 0x4eb5aaacbec83029ull }}, {{ 0x797aa5edc709fc31ull, 0x8caa9046629a7200ull, 0x9b3cc3993f9630b8ull, 0x6d582dd846816109ull, 0x8cb4a87a49ce3384ull, 0x1318aabf73d1e19cull }}, {{ 0xbeca7b49c663d9eeull, 0x7ea9a2bfda087404ull, 0x105fa3fc7bdde735ull, 0x4571ca72c10dca60ull, 0x7f0e94c6e20e032cull, 0xbef6ab7a8632d01dull }}, {{ 0x73e8d0e1bfe6834cull, 0xf2a05b7e8454882full, 0xa3bc67dcd6ab0816ull, 0xb671e87b8a89e7c0ull, 0xf691cfc4d48c1fbaull, 0x75a2b2c93dfc2126ull }}, {{ 0x871828d17f0120f7ull, 0x7a4392f12b4d51daull, 0x655c0ea062ae50e5ull, 0x207314d369630d86ull, 0xa1b21db04d793d4bull, 0x985afbdc6bd94b85ull }}, {{ 0x46f1982ef60b49a9ull, 0xc6a3bd6bb1053289ull, 0xf5989243dacf28f6ull, 0x447ed0421dde873full, 0x50f528e306bc64efull, 0xf38dd69c367cf338ull }}, {{ 0xc56ff1d59c70e09bull, 0xc2656634ea33f95cull, 0x97f5b6a68c1799a3ull, 0xacf422952ab1487full, 0x299398de435bf158ull, 0x838a621a20e18033ull }}, {{ 0xb65f72581c68c611ull, 0x97f5fe112607bd9full, 0xef99228178ec0065ull, 0xc18959d3aaecd4fbull, 0x9fc3f8aea1976d76ull, 0x2367d50548cf01ffull }}, {{ 0x1fba77711c17bcabull, 0xef9becab7c4d683dull, 0x5bfb590eb93803f7ull, 0x8f5d8244ad4051d7ull, 0x3da7b6d24fea46a3ull, 0x620e5234d81613fcull }}, {{ 0x3d48aa6b18ed5eb1ull, 0x5c173eb2db061263ull, 0x97d17a933c3027afull, 0x99a716aec4833269ull, 0x688d24371f26c263ull, 0xd48f361070dcc7daull }}, {{ 0x64d6a82ef945b2eeull, 0x98e872fc8e3cb7e0ull, 0xee2ec9c059e18cd9ull, 0x0086e2d3ad1ff81full, 0x15836a27378397e4ull, 0x4d981ca4689fce88ull }}, {{ 0xf06291d5bcb8fd4full, 0xf9147ddd8e5f2ec3ull, 0x4dd3e18382cf807full, 0x0544dc44c33fb13full, 0xd72225882b23eee8ull, 0x07f11e6c163e1150ull }}, {{ 0x63d9b2595f39e519ull, 0xbacceaa78fb7d3a7ull, 0x0a46cf231c1b04ffull, 0x34b09aafa07cec79ull, 0x67557751af675510ull, 0x4f6b3038de6cad28ull }}, {{ 0xe680f77db842f2faull, 0x4c012a8b9d2e4489ull, 0x66c4175f190e31fdull, 0x0ee60adc44e13cbaull, 0x0956a930da0952a2ull, 0x1a2fe238b03ec394ull }}, {{ 0x0109aae9329d7dc6ull, 0xf80ba97423cead63ull, 0x03a8e9b6fa8df3e4ull, 0x94fc6c9ab0cc5f48ull, 0x5d629be8845d3a54ull, 0x05ded636e273a3c8ull }}, {{ 0x0a60ad1bfa26e9b7ull, 0xb0749e896612c5deull, 0x24992125c98b86f1ull, 0xd1dc3e0ae7fbb8d0ull, 0xa5da17152ba4474dull, 0x3ab45e24d88465d3ull }}, {{ 0x67c6c317c5852127ull, 0xe48e315dfcbbbaacull, 0x6dfb4b79df734570ull, 0x329a6c6d0fd53821ull, 0x7a84e6d3b46ac90aull, 0x4b0bad70752bfa44ull }}, {{ 0x0dc39eedb7334b83ull, 0xed8dedabdf554abcull, 0x4bd0f2c2ba80b668ull, 0xfa083c429e54314eull, 0xc93104450c2bda65ull, 0xee74c66493b7c6acull }}, {{ 0x89a435492800f322ull, 0x478b48b6b954eb58ull, 0xf6297b9b49072019ull, 0xc4525a9a2f49ed0eull, 0xdbea2ab279b687fbull, 0x508fbfedc52dc2bfull }}, {{ 0x606a14db90097f52ull, 0xcb70d7233d513175ull, 0x9d9ed410da4740fcull, 0xab378a05d8e34295ull, 0x9725aaf8c1214fd5ull, 0x259d7f49b3c99b7eull }}, {{ 0xc424d093a05ef935ull, 0xf2686760652bee95ull, 0x283448a886c889dfull, 0xb02b643a78e099d8ull, 0xe778adb78b4d1e58ull, 0x7826f8e105e012f1ull }}, {{ 0xa97025c443b5bc10ull, 0x781409c3f3b751d9ull, 0x920ad69543d562bfull, 0xe1b1ea48b8c60271ull, 0x0ab6c92b71032f76ull, 0xb185b8ca3ac0bd73ull }}, {{ 0x9e6179aaa519589dull, 0xb0c861a785293280ull, 0xb46c61d4a655db7aull, 0xd0f326d737bc186full, 0x6b23dbb26a1fdaa4ull, 0xef3937e64b87667eull }}, {{ 0x2fcec0aa72fd761full, 0xe7d3d08b339bf906ull, 0x0c3bd24e7f5a92caull, 0x297f84682d58f45dull, 0x2f6694f8253e8a70ull, 0x583c2efef34a00f0ull }}, {{ 0xde1386a87de69d3bull, 0x0e4625700417ba3dull, 0x7a563710f989bbedull, 0x9efb2c11c5798ba2ull, 0xda01d1b174716861ull, 0x7259d5f580e40961ull }}, {{ 0xacc34294eb02244cull, 0x8ebd766028ed466aull, 0xc75e26a9bf615742ull, 0x35cfb8b1b6bf7458ull, 0x841230ee8c6e13d0ull, 0x77825b9708e85dd2ull }}, {{ 0xbfa099d12e156afcull, 0x93669fc19944c02aull, 0xc9ad82a179cd6899ull, 0x1a1d36f1237a8b77ull, 0x28b5e9517c4cc622ull, 0xab1793e65913aa39ull }}, {{ 0x7c46022bccd62ddcull, 0xc2023d8ffcaf81abull, 0xe0c71a4ec20615ffull, 0x0524256b62c972adull, 0x971b1d2edaffbd55ull, 0xaeebc6ff7ac4a63bull }}, {{ 0xdabc15b6005dca98ull, 0x9416679fdedb10b2ull, 0xc7c70713943cdbfdull, 0x33697631dbde7acaull, 0xe70f23d48dfd6552ull, 0xd535c5facbae7e53ull }}, {{ 0x8b58d91c03a9e9eeull, 0xc8e00c3eb48ea6fcull, 0xcdc646c3ca6097e7ull, 0x021e9df296b0cbebull, 0x0697664d8be5f536ull, 0x5419bbcbf4d0ef47ull }}, {{ 0x71787b1824a32349ull, 0xd8c07a730d9285ddull, 0x09bec3a5e7c5ef0dull, 0x15322b79e2e7f736ull, 0x41e9ff0776fb941cull, 0x490155f7902958c6ull }}, {{ 0x6eb4cef16e5f60d9ull, 0x7784c87e87b93aa6ull, 0x6173a47b0dbb568aull, 0xd3f5b2c2dd0fa81cull, 0x9323f64aa5d3c918ull, 0xda0d5baba19d77beull }}, {{ 0x5310156e4fb9c879ull, 0xab2fd4f14d3c4a80ull, 0xce846cce89516168ull, 0x4798fb9ca29c911bull, 0xbf679eea7a45daf8ull, 0x848594b45026ad71ull }}, {{ 0x3ea0d64f1d41d4beull, 0xafde516d045ae903ull, 0x112c40115d2dce16ull, 0xcbf9d41e5a1dab16ull, 0x7a0c3528c6ba8db2ull, 0x2d37cf0b2182c671ull }}, {{ 0x72485f1724924f6bull, 0xdeaf2e422b8d1a20ull, 0xabba80ada3ca0ce2ull, 0xf7c2492f8528aedcull, 0xc47a1397c34988fbull, 0xc42e166f4f1bc06eull }}, {{ 0x76d3b6e76db71a31ull, 0xb2d7ce95b3830544ull, 0xb54906c865e480dcull, 0xad96dbdb3396d49eull, 0xacc4c3eda0df59d7ull, 0xa9cce05917158453ull }}, {{ 0xa445250a492705eeull, 0xfc6e11d9031e34acull, 0x14da43d3faed089eull, 0xc7e4969003e44e33ull, 0xbfafa74848b9826cull, 0xa200c37ae6d72b44ull }}, {{ 0x6ab37266db863b4eull, 0xdc4cb27a1f2e0ebeull, 0xd086a647cd425635ull, 0xceede1a026eb0dfeull, 0x7cdc88d2d73f183full, 0x5407a2cd0467b0afull }}, {{ 0x2b027804933e5108ull, 0x9afef8c537cc9370ull, 0x25427ece04975e1aull, 0x154ad041852e8bf4ull, 0xe09d583c6876f27eull, 0x484c5c022c0ce6daull }}, {{ 0xae18b02dc06f2a54ull, 0x0df5b7b42dfdc261ull, 0x7498f40c2de9ad0aull, 0xd4ec228f33d17789ull, 0xc625725c14a578ecull, 0xd2fb9815b881048cull }}, {{ 0xccf6e1c98457a74dull, 0x8b992d09cbe997d0ull, 0x8df98879cb20c264ull, 0x51395998062eab5eull, 0xbd767798ce76b940ull, 0x3dd3f0d9350a2d7full }}, {{ 0x01a4d1df2b6c8901ull, 0x73fbc261f71fee28ull, 0x8bbf54c1ef4797edull, 0x2c3d7ff03dd2b1b1ull, 0x66a0abf810a33c83ull, 0x6a47687c1265c6fdull }}, {{ 0x107032b7b23d5a0dull, 0x87d597d3a73f4d90ull, 0x75794f9358cbef46ull, 0xba66ff626a3af0efull, 0x0246b7b0a6605d1full, 0x26ca14d8b7f9c5e6ull }}, {{ 0xa461fb2cf6658483ull, 0x4e57ee44887907a0ull, 0x96bd1bc177f758c1ull, 0x4805f9d8264d695aull, 0x16c32ce67fc3a33dull, 0x83e4d0772fc1bafcull }}, {{ 0x6bd3cfc19ff72d1full, 0x0f6f4ead54ba4c46ull, 0xe363158eafa9778dull, 0xd03bc2717f061d89ull, 0xe39fc100fda46064ull, 0x26f024a7dd914dd8ull }}, {{ 0x36461d903fa7c337ull, 0x9a5912c54f46fac0ull, 0xe1ded792dc9eab82ull, 0x2255986ef63d2762ull, 0xe43d8a09e86bc3f0ull, 0x85616e8ea7ad0a78ull }}, {{ 0x1ebd27a27c8da021ull, 0x077abbb518c5cb82ull, 0xd2b46bbc9e32b31aull, 0x5757f4559e6389dcull, 0xea6764631435a761ull, 0x35ce51928cc268b8ull }}, {{ 0x33638c58dd88414full, 0x4acb5512f7b9f315ull, 0x3b0c355e2dfaff04ull, 0x696f8b582fe362a0ull, 0x2809ebdeca1889cdull, 0x1a0f2fb97f981739ull }}, {{ 0x01e37b78a7528d12ull, 0xebf152bdad437ed4ull, 0x4e7a15adcbcdf62aull, 0x1e5b7171dee1da42ull, 0x906336b3e4f56206ull, 0x0497dd3efbf0e83bull }}, {{ 0x12e2d2b6893982b1ull, 0x376d3b68c4a2f448ull, 0x10c4d8c9f60b9dadull, 0x2f926e72b4d28697ull, 0xa3e02306f195d43dull, 0x2deea475d7691253ull }}, {{ 0xbcdc3b215c3f1aeeull, 0x2a445217ae5d8ad0ull, 0xa7b077e39c7428c4ull, 0xdbb8507b103941e6ull, 0x66c15e456fda4a63ull, 0xcb526c9a6a1ab744ull }}, {{ 0x609a4f4d9a770d4dull, 0xa6ab34eccfa76c27ull, 0x8ce4aee41c8997a9ull, 0x953324cea23c9302ull, 0x038daeb65e86e7e6ull, 0xf1383e08250b28acull }}, {{ 0xc607190808a68500ull, 0x82b011401c8a3989ull, 0x80eed4e91d5feca0ull, 0xd3ff7012565dbe19ull, 0x2388d31fb1450f01ull, 0x6c326c51726f96b8ull }}, {{ 0xbc46fa5056813204ull, 0x1ae0ac811d663f61ull, 0x0954511b25bf3e45ull, 0x47fa60b75fa96cffull, 0x63583f3cecb29612ull, 0x39f83b2e785be331ull }}, {{ 0x5ac5c723610bf42cull, 0x0cc6bd0b25fe79d1ull, 0x5d4b2b0f79786eb3ull, 0xcfc7c729bc9e41f6ull, 0xe17278613ef9dcb6ull, 0x43b24fd0b396dfedull }}, {{ 0x8bb9c761ca7789bcull, 0x7fc3626f7bf0c22dull, 0xa4efae9abeb452feull, 0x1dcdc7a15e2e939full, 0xce78b3cc75c29f24ull, 0xa4f71e2703e4bf4aull }}, {{ 0x7541c9d1e8ab6157ull, 0xfda1d85ad76795c7ull, 0x715cd20b730b3df0ull, 0x2a09cc4dadd1c43cull, 0x10b705fc999a3769ull, 0x71a72d8626ef78ecull }}, {{ 0x9491e23316b1cd6bull, 0xe852738c6a0bd9caull, 0x6da034727e706b69ull, 0xa461fb08ca31aa5cull, 0xa7263bde00062a1bull, 0x7087c73d855ab938ull }}, {{ 0xcdb2d5fee2f2062dull, 0x1338837c247681e9ull, 0x48420c78f0643223ull, 0x6bd3ce57e5f0a79cull, 0x877e56ac003da514ull, 0x654dc867358b3c36ull }}, {{ 0x08fc5bf4dd743dc7ull, 0xc03522d96ca11322ull, 0xd2947cb963e9f55eull, 0x36460f6efb668c1aull, 0x4aef62b8026872ccull, 0xf509d40817705a21ull }}, {{ 0x59db9790a68a69c4ull, 0x82135c7e3e4abf54ull, 0x39ccdf3de72395b3ull, 0x1ebc9a55d201790cull, 0xed59db3018147bfaull, 0x92624850ea63854cull }}, {{ 0x8293eba6816821acull, 0x14c19cee6eeb794bull, 0x4200b86b0763d903ull, 0x335e075a340eba7aull, 0x45828fe0f0ccd7c5ull, 0xb7d6d32927e33501ull }}, {{ 0x19c734810e1150b8ull, 0xcf9021505532bcf3ull, 0x9407342e49e67a1eull, 0x01ac4986089348c6ull, 0xb7199ec968006db4ull, 0x2e643f9b8ee0120cull }}, {{ 0x01c80d0a8cad2732ull, 0x1ba14d2353fb617full, 0xc84809cee300c534ull, 0x10badf3c55c0d7c1ull, 0x270033de10044908ull, 0xcfea7c1394c0b47full }}, {{ 0x11d082697ec387efull, 0x144d036147d1cef6ull, 0xd2d06214de07b409ull, 0xa74cb85b59886d91ull, 0x860206aca02ada50ull, 0x1f28d8c3cf870cf7ull }}, {{ 0xb225181ef3a34f58ull, 0xcb0221ccce32159cull, 0x3c23d4d0ac4d085aull, 0x88ff33917f5447b2ull, 0x3c1442be41ac8726ull, 0x379877a61b4681abull }}, {{ 0xf572f13584611973ull, 0xee1552000df4d81eull, 0x59665026bb02538bull, 0x59f803aef94accf6ull, 0x58ca9b6e90bd4781ull, 0x2bf4ac7d10c110b0ull }}, {{ 0x967d6c172bcafe7bull, 0x4cd534008b907135ull, 0x7dff21834e174377ull, 0x83b024d5bcec019full, 0x77ea1251a764cb0dull, 0xb78ebce2a78aa6e3ull }}, {{ 0xe0e638e7b5edf0caull, 0x0054080573a46c17ull, 0xebf74f210ce8a2a9ull, 0x24e170596138103aull, 0xaf24b73089efee87ull, 0x2b9360da8b6a84e2ull }}, {{ 0xc8fe390d1b4b67e3ull, 0x03485036846c38eeull, 0x37a9174a81165a9aull, 0x70ce637dcc30a24dull, 0xd76f27e5635f5147ull, 0xb3c1c889722930daull }}, {{ 0xd9ee3a8310f20edcull, 0x20d322212c3a3953ull, 0x2c9ae8e90adf8a04ull, 0x680fe2e9f9e65704ull, 0x6a578ef5e1b92ccaull, 0x0591d55e759be88cull }}, {{ 0x834e491ea974949aull, 0x483f554bba463d46ull, 0xbe0d191a6cbb6429ull, 0x109edd23c2ff6629ull, 0x276b959ad13bbfe8ull, 0x37b255b09817157cull }}, {{ 0x210edb329e8dce03ull, 0xd27954f546be64c1ull, 0x6c82fb083f51e99cull, 0xa634a3659df9fda1ull, 0x8a33d80c2c557f10ull, 0x2cf758e5f0e6d6d9ull }}, {{ 0x4a948ffa318a0c1eull, 0x38bd5194c36fef8bull, 0x3d1dce5279332020ull, 0x7e0e61f82bc3e84eull, 0x66067079bb56f6a6ull, 0xc1a978fb6904647full }}, {{ 0xe9cd9fc5ef64792full, 0x37652fcfa25f5b70ull, 0x632a0f38bbff4142ull, 0xec8fd3b1b5a7130eull, 0xfc4064c15165a280ull, 0x909eb9d21a2becf9ull }}, {{ 0x22083dbb59ecbbd2ull, 0x29f3de1c57b99269ull, 0xdfa4983757f88c96ull, 0x3d9e44f11886be8full, 0xda83ef8d2df85909ull, 0xa633423505b741c3ull }}, {{ 0x54526951833f5634ull, 0xa386ad1b6d3fb81bull, 0xbc6df2296fb57dddull, 0x682eb16af543719eull, 0x89275b83cbb37a5cull, 0x7e009612392891a6ull }}, {{ 0x4b381d2f20795e05ull, 0x6342c312447d3111ull, 0x5c4b759e5d16eaa8ull, 0x11d2ee2d94a27033ull, 0x5b899325f502c79cull, 0xec05dcb63b95b081ull }}, {{ 0xf03123d744bdac35ull, 0xe09b9eb6ace3eaacull, 0x9af2982fa2e52a93ull, 0xb23d4dc7ce586201ull, 0x935fbf7b921bcc18ull, 0x383a9f1e53d8e50dull }}, {{ 0x61eb6668af68ba16ull, 0xc6143322c0e72ac1ull, 0x0d79f1dc5cf3a9c6ull, 0xf66509ce0f73d410ull, 0xc1bd7ad3b515f8f6ull, 0x324a372f4678f287ull }}, {{ 0xd3320016da1744dcull, 0xbcc9ff5b8907ab8dull, 0x86c3729ba184a1c3ull, 0x9ff2620c9a8648a0ull, 0x9166cc4512dbb9a5ull, 0xf6e627d8c0b9794dull }}, {{ 0x3ff400e484e8b096ull, 0x5fe3f9935a4cb38aull, 0x43a27a144f2e51a5ull, 0x3f77d47e093ed645ull, 0xae03fab2bc954078ull, 0xa4fd8e77873ebd07ull }}, {{ 0x7f8808ed3116e5d8ull, 0xbee7bfc186ff0366ull, 0xa458c4cb17cf3075ull, 0x7aae4cec5c745eb4ull, 0xcc27cafb5dd484b2ull, 0x71e790ab4873624cull }}, {{ 0xfb505943eae4fa6full, 0x750d7d8f45f62200ull, 0x6b77afeeee17e499ull, 0xcacf013b9c8bb30eull, 0xf98dedd1aa4d2ef8ull, 0x730ba6b0d481d6ffull }}, {{ 0xd1237ca72cf1c85aull, 0x9286e798bb9d5409ull, 0x32acdf554ceeedfeull, 0xec160c541d74fe90ull, 0xbf8b4a30a703d5b7ull, 0x7e7482e84d1265ffull }}, {{ 0x2b62de87c171d389ull, 0xb9450bf754254862ull, 0xfac0b95501554bf1ull, 0x38dc7b492691f1a1ull, 0x7b70e5e68626592full, 0xf08d1d1302b7fbfdull }}, {{ 0xb1dcb14d8e724358ull, 0x3cb277a94974d3d5ull, 0xcb873d520d54f771ull, 0x389cd0db81b37053ull, 0xd268fb013d7f7bd8ull, 0x658322be1b2fd7e6ull }}, {{ 0xf29eed079076a16bull, 0x5ef8ac9cde904658ull, 0xf34865348551aa6cull, 0x3620289311026345ull, 0x3819ce0c66fad672ull, 0xf71f5b6d0fde6f04ull }}, {{ 0x7a35424ba4a24e30ull, 0xb5b6be20b1a2bf79ull, 0x80d3f40d3530a83bull, 0x1d4195beaa17e0bbull, 0x31020c7c05cc6076ull, 0xa73992429eb0562aull }}, {{ 0xc61496f46e570ddbull, 0x19236d46f05b7abeull, 0x0847888413e69255ull, 0x248fd972a4eec753ull, 0xea147cd839fbc49dull, 0x883fb69a32e35da5ull }}, {{ 0xbccde58c4f668a8full, 0xfb6244c56392cb73ull, 0x52cb5528c701b752ull, 0x6d9e7e7a7153c93eull, 0x24cce07243d5ae23ull, 0x527d2205fce1a87bull }}, {{ 0x600af77b1a01699bull, 0xd1d6afb5e3bbf285ull, 0x3bf15397c611293dull, 0x4830f0c86d45dc6full, 0x7000c476a658cd62ull, 0x38e3543be0d094cfull }}, {{ 0xc06daacf040e200aull, 0x3262dd1ae5577935ull, 0x576d43edbcab9c6aull, 0xd1e967d444ba9c58ull, 0x6007aca27f7805d6ull, 0x38e14a56c825d01aull }}, {{ 0x8448ac16288d4066ull, 0xf7dca30cf56abc19ull, 0x6a44a7495eb41c25ull, 0x331e0e4aaf4a1b73ull, 0xc04cbe58fab03a64ull, 0x38cce763d17a2107ull }}, {{ 0x2ad6b8dd958483f8ull, 0xae9e5e81962b58ffull, 0x26ae88ddb309197bull, 0xff2c8eead8e51282ull, 0x82ff6f79cae247e9ull, 0x380109e62ec54a4dull }}, {{ 0xac6338a7d72d27b3ull, 0xd22fb10fddb179f7ull, 0x82d158a8fe5afed4ull, 0xf7bd952c78f2b915ull, 0x1dfa5ac1ecd6cf23ull, 0x300a62fdd3b4e707ull }}, {{ 0xbbe0368e67c38cfaull, 0x35dcea9ea8eec3acull, 0x1c2d7699ef8df450ull, 0xad67d3bcb97b3ad7ull, 0x2bc78b9340641767ull, 0xe067ddea45110647ull }}, {{ 0x56c221900da381c7ull, 0x1aa12a329953a4bfull, 0x19c6a2035b8b8b22ull, 0xc60e455f3ed04c67ull, 0xb5cb73c083e8ea0cull, 0xc40eab26b2aa3ec7ull }}, {{ 0x63954fa0886311c4ull, 0x0a4ba5f9fd446f79ull, 0x01c2542193736f55ull, 0xbc8eb5b87422fc07ull, 0x19f285852719247full, 0xa892af82faa673cdull }}, {{ 0xe3d51c4553deb1a3ull, 0x66f47bc3e4ac5abdull, 0x1197494fc2825952ull, 0x5d931934895dd846ull, 0x0379373386fb6cfdull, 0x95badb1dca808603ull }}, {{ 0xe6531ab546b2f05eull, 0x058cd5a6eebb8b6aull, 0xafe8dd1d99177d38ull, 0xa7befc0d5daa72bcull, 0x22bc280345d241e5ull, 0xd94c8f29e9053c1eull }}, {{ 0xff3f0b14c2fd63aeull, 0x378058855353722cull, 0xdf18a327faeae430ull, 0x8d75d885a8a87b5eull, 0x5b599020ba3692f8ull, 0x7cfd97a31a34592dull }}, {{ 0xf8766ecf9de5e4caull, 0x2b037535414275c1ull, 0xb6f65f8fcd2ce9e2ull, 0x869a75389694d1b4ull, 0x917fa1474621bdb5ull, 0xe1e7ec5f060b7bc5ull }}, {{ 0xb4a0541c2afaefe8ull, 0xae2294148c989993ull, 0x259fbb9e03c122d5ull, 0x42089435e1d0310full, 0xaefc4cc8bd516917ull, 0xd30f3bb63c72d5b7ull }}, {{ 0x0e434919adcd5f0dull, 0xcd59c8cd7df5ffc5ull, 0x783d542c258b5c58ull, 0x9455ca1ad221ea97ull, 0xd5daffd7652e1ae8ull, 0x3e98551e5c7c592cull }}, {{ 0x8ea0db00ca05b67eull, 0x0581d806eb9bfdb2ull, 0xb26549b977719b78ull, 0xcb59e50c355329eaull, 0x5a8dfe69f3cd0d15ull, 0x71f3532f9cdb7bc0ull }}, {{ 0x92488e07e43920e8ull, 0x371270453417e8f9ull, 0xf7f4e13eaa7012b0ull, 0xf182f27a153fa32aull, 0x898bf023860282d9ull, 0x73813fdc2092d583ull }}, {{ 0xb6d58c4eea3b4913ull, 0x26b862b408ef19bfull, 0xaf90cc72a860bae2ull, 0x6f1d78c4d47c5fadull, 0x5f7761633c191c83ull, 0x830c7e9945bc5723ull }}, {{ 0x24577b152650dac3ull, 0x8333db085957017dull, 0xdba7fc7a93c74cd5ull, 0x5726b7b04cdbbcc8ull, 0xbaa9cde058fb1d22ull, 0x1e7cf1fcb95b6761ull }}, {{ 0x6b6aced37f288b9aull, 0x20068e537d660ee3ull, 0x948fdcc9c5c90057ull, 0x67832ce300955fd8ull, 0x4aa20ac379cf2357ull, 0x30e173df3d9209d1ull }}, {{ 0x322c1442f7957404ull, 0x40418f42e5fc94e2ull, 0xcd9e9fe1b9da0367ull, 0x0b1fc0de05d5be75ull, 0xea546ba2c217616aull, 0xe8ce86b867b4622cull }}, {{ 0xf5b8ca9dabd68825ull, 0x828f989cfbddd0d5ull, 0x08323ed142842208ull, 0x6f3d88ac3a59709aull, 0x274c345b94e9ce24ull, 0x181143340d0bd5c1ull }}, {{ 0x9937ea28b6615173ull, 0x199bf621d6aa285bull, 0x51f6742c99295455ull, 0x586756ba477e6604ull, 0x88fa0b93d1220d6cull, 0xf0aca0088276598bull }}, {{ 0xfc2f25971fcd2e7bull, 0x00179d5262a59393ull, 0x33a089bdfb9d4b53ull, 0x74096346caeffc2bull, 0x59c473c62b54863bull, 0x66be4055189f7f73ull }}, {{ 0xd9d777e73e03d0c9ull, 0x00ec2537da77c3c7ull, 0x0445616bd424f13eull, 0x885de0c3ed5fd9b0ull, 0x81ac85bdb14d3e52ull, 0x036e8352f63afa81ull }}, {{ 0x826aaf086c2627ddull, 0x0939742e88ada5ceull, 0x2ab5ce3649716c6cull, 0x53aac7a745be80e0ull, 0x10bd3968ed046f39ull, 0x2251213d9e4dc90full }}, {{ 0x182ad654397d8ea2ull, 0x5c3e89d156c87a11ull, 0xab1a0e1ede6e3c38ull, 0x44abcc88b97108c1ull, 0xa7643e19422c583dull, 0x572b4c682f09da96ull }}, {{ 0xf1ac5f4a3ee79255ull, 0x9a71622d63d4c4aaull, 0xaf048d34b04e5a33ull, 0xaeb5fd573e6a5790ull, 0x89ea6cfc95bb7264ull, 0x67b0fc11d66289e2ull }}, {{ 0x70bbb8e6750bb750ull, 0x086dd5c5e64faeadull, 0xd62d840ee30f8604ull, 0xd31be56870276ba6ull, 0x632841ddd95277eeull, 0x0ce9d8b25fd962d9ull }}, {{ 0x675539009275291bull, 0x544a59baff1cd2c6ull, 0x5dc72894de9b3c28ull, 0x3f16f614618a3484ull, 0xdf9292aa7d38af54ull, 0x812276f7be7ddc7dull }}, {{ 0x09543a05b8939b11ull, 0x4ae7814df7203bc0ull, 0xa9c795d0b2105993ull, 0x76e59ccbcf660d2bull, 0xbbb9baa8e436d94aull, 0x0b58a5ad70ea9ceaull }}, {{ 0x5d4a443935c40ea6ull, 0xed0b0d0ba7425580ull, 0xa1cbda26f4a37fc0ull, 0xa4f81ff619fc83b4ull, 0x55414a98ea247ce8ull, 0x717678c6692a212bull }}, {{ 0xa4e6aa3c19a8927aull, 0x426e827488975703ull, 0x51f685858e62fd89ull, 0x71b13f9d03dd250eull, 0x548ce9f9256ce116ull, 0x6ea0b7c01ba54bb1ull }}, {{ 0x7102a6590095b8c7ull, 0x9851188d55e96624ull, 0x33a137378fdde75cull, 0x70ec7c2226a3728full, 0x4d8123bb7640cae0ull, 0x52472d811474f4edull }}, {{ 0x6a1a7f7a05d937c6ull, 0xf32af5855b1dfd6cull, 0x044c282b9eab099dull, 0x693cd95582627998ull, 0x070b65529e87ecc4ull, 0x36c7c70acc919145ull }}, {{ 0x2508fac43a7c2dbeull, 0x7fad97358f2be63cull, 0x2af991b432ae602bull, 0x1c607d5717d8bff0ull, 0x4671f53a314f3facull, 0x23cdc66bfdafacb2ull }}, {{ 0x7259cbaa48d9c96bull, 0xfcc7e81797b6fe59ull, 0xadbfb109facfc1b2ull, 0x1bc4e566ee777f61ull, 0xc0739445ed187cb9ull, 0x6609c037e8dcbef6ull }}, {{ 0x7781f4a6d881de32ull, 0xdfcf10ebed25ef7eull, 0xc97cea63cc1d90fdull, 0x15b0f60550aaf9d0ull, 0x8483cabb42f4df3bull, 0xfc61822f189f75a3ull }}, {{ 0xab138e847512adf6ull, 0xbe16a937437b5af0ull, 0xdee127e5f927a9eaull, 0xd8e99c3526adc227ull, 0x2d25eb509d90b84eull, 0xdbcf15d6f63a9863ull }}, {{ 0xaec3912c92bacb9aull, 0x6ce29c28a2d18d66ull, 0xb4cb8efbbb8ca32bull, 0x79201a1382c9958eull, 0xc37b312627a73314ull, 0x9616da659e49f3dfull }}, {{ 0xd3a3abbdbb4bf404ull, 0x40da19965c2f8602ull, 0x0ff395d5537e5fb2ull, 0xbb4104c31bdfd793ull, 0xa2cfeb7d8c87feccull, 0xdce487f82ee386bdull }}, {{ 0x4464b56950f78826ull, 0x8884ffdf99db3c1cull, 0x9f83da5542efbcf6ull, 0x508a2f9f16be6bbeull, 0x5c1f32e77d4ff3ffull, 0xa0ed4fb1d4e34368ull }}, {{ 0xabef161d29ab517eull, 0x5531febc0290591aull, 0x3b2687549d5d61a1ull, 0x2565dc36e3703572ull, 0x9937fd0ae51f87f9ull, 0x49451cf250e0a213ull }}, {{ 0xb756dd23a0b12ef0ull, 0x53f3f35819a37b0aull, 0x4f81494e25a5d04dull, 0x75fa9a24e2621676ull, 0xfc2fe26cf33b4fbbull, 0xdcb3217728c654c3ull }}, {{ 0x2964a36446ebd55eull, 0x478781710062ce6bull, 0x1b0cdd0d787a2305ull, 0x9bca0570d7d4e09full, 0xd9ded84180511d52ull, 0x9eff4ea797bf4fa7ull }}, {{ 0x9dee61eac53655a7ull, 0xcb4b0e6a03dc102full, 0x0e80a286b4c55e34ull, 0x15e436686e50c637ull, 0x82b4728f032b253aull, 0x35f9128bed791c8eull }}, {{ 0x2b4fd32bb41f5887ull, 0xf0ee90242698a1dcull, 0x910659430fb5ae0full, 0xdaea20144f27be26ull, 0x1b0c79961faf7444ull, 0x1bbab97746bb1d91ull }}, {{ 0xb11e3fb509397547ull, 0x6951a16981f65299ull, 0xaa3f7c9e9d18cc9full, 0x8d2540cb178d6d81ull, 0x0e7cbfdd3cda8ab0ull, 0x154b3ea8c34f27abull }}, {{ 0xeb2e7d125c3e94c5ull, 0x1d304e1f139f3a00ull, 0xa67ade3222f7fe3aull, 0x837487eeeb864710ull, 0x90df7ea460896ae5ull, 0xd4f07297a1178caeull }}, {{ 0x2fd0e2b79a71cfadull, 0x23e30d36c4384409ull, 0x80ccadf55dafee45ull, 0x228d4f55333ec6a6ull, 0xa8baf26bc55e2cf7ull, 0x516479ec4aeb7ed1ull }}, {{ 0xde28db2c08721cc2ull, 0x66de8423aa32a85bull, 0x07fecb95a8df4eb3ull, 0x598519540073c281ull, 0x974d7835b5adc1a7ull, 0x2decc33aed32f430ull }}, {{ 0xad988fb854751f96ull, 0x04b12964a5fa9396ull, 0x4ff3f3d898b91302ull, 0x7f32fd480485990aull, 0xe906b21918c99089ull, 0xcb3fa04d43fd89e5ull }}, {{ 0xc7f59d334c933bd9ull, 0x2eeb9dee7bc9c3e2ull, 0x1f878675f73abe14ull, 0xf7fde4d02d37fa67ull, 0x1a42f4faf7dfa55eull, 0xf07c4304a7e762fbull }}, {{ 0xcf982400fdc05677ull, 0xd5342b50d5e1a6dbull, 0x3b4b409ba84b6cc9ull, 0xafeaf021c42fc807ull, 0x069d91cdaebc75b5ull, 0x64da9e2e8f09ddcfull }}, {{ 0x1bf16809e98360abull, 0x5409b1285ad08496ull, 0x50f0861492f23fe2ull, 0xdf2d6151a9ddd048ull, 0x4227b208d35c9918ull, 0xf08a2dd19662aa16ull }}, {{ 0x176e10631f21c6acull, 0x4860eb938c252dddull, 0x29653ccdbd767ed7ull, 0xb7c5cd30a2aa22d3ull, 0x958cf458419dfaf8ull, 0x6565ca2fdfdaa4deull }}, {{ 0xea4ca3df3751c2b8ull, 0xd3c933c37973caa2ull, 0x9df4600966a0f468ull, 0x2dba03e65aa55c3full, 0xd7818b72902bcdb7ull, 0xf5f9e5debe8a70b1ull }}, {{ 0x26fe66b829319b33ull, 0x45dc05a2be85ea5dull, 0x2b8bc05e02498c18ull, 0xc94426ff8a759a7cull, 0x6b0f7279a1b60927ull, 0x9bc2fab3716866f2ull }}, {{ 0x85f003319bf00ffeull, 0xba98385b713b27a3ull, 0xb37583ac16df78f2ull, 0xdca985fb689808d9ull, 0x2e9a78c0511c5b8dull, 0x159dcb026e140578ull }}, {{ 0x3b601ff017609feeull, 0x49f233926c4f8c63ull, 0x029724b8e4bab97bull, 0x9e9f3bd215f05881ull, 0xd208b7832b1b938aull, 0xd829ee184cc836b1ull }}, {{ 0x51c13f60e9c63f4dull, 0xe37603b83b1b7be0ull, 0x19e76f38ef4b3ed0ull, 0x32385634db63750aull, 0x34572b1faf13c36aull, 0x71a34cf2ffd222f2ull }}, {{ 0x318c79c921be7902ull, 0xe29c25324f12d6c3ull, 0x030a583958f07428ull, 0xf6335e1091e29265ull, 0x0b67af3cd6c5a225ull, 0x7061017dfe355d76ull }}, {{ 0xef7cc1db5170ba14ull, 0xda1973f716bc639full, 0x1e67723d79648998ull, 0x9e01aca5b2d9b7f2ull, 0x720cd86063b8557bull, 0x63ca0eebee15a69cull }}, {{ 0x5adf92912e6744c6ull, 0x84fe87a6e35be43full, 0x300a7666bded5ff8ull, 0x2c10be78fc812f75ull, 0x748073c3e53356d4ull, 0xe5e495374cd8821cull }}, {{ 0x8cbbb9abd008afbaull, 0x31f14c84e196ea79ull, 0xe068a0036b45bfb5ull, 0xb8a770b9dd0bda93ull, 0x8d0485a6f4016449ull, 0xfaedd4290075151cull }}, {{ 0x7f5540b62056dd47ull, 0xf36cfd30cfe528bfull, 0xc416402230b97d13ull, 0x368a6742a27689c6ull, 0x822d3885880deae1ull, 0xcd4a499a0492d31dull }}, {{ 0xf954871d4364a4c7ull, 0x8241e3e81ef3977aull, 0xa8de8155e73ee2c7ull, 0x2168089a58a161c3ull, 0x15c43537508b2cccull, 0x04e6e0042dbc3f27ull }}, {{ 0xbd4d4724a1ee6fcaull, 0x1692e7113583eacdull, 0x98b10d5b0874dbcbull, 0x4e105607764dd1a4ull, 0xd9aa1429256fbff9ull, 0x3104c029c95a7786ull }}, {{ 0x6504c76e53505de1ull, 0xe1bd06ac17272c09ull, 0xf6ea858e549095eeull, 0x0ca35c4a9f0a306dull, 0x80a4c99b765d7fbdull, 0xea2f81a1dd88ab44ull }}, {{ 0xf22fca4f4123aac8ull, 0xd16242b8e787b85dull, 0xa529378f4da5db54ull, 0x7e619aea3665e44bull, 0x066fe0129fa6fd62ull, 0x25db1052a756b0adull }}, {{ 0x75dde7188b64abcdull, 0x2dd69b390b4d33abull, 0x739c2b99087a9150ull, 0xefd00d261ffaeaf4ull, 0x405ec0ba3c85e5d8ull, 0x7a8ea33a8962e6c2ull }}, {{ 0x9aab06f571eeb5fdull, 0xca62103a710404b2ull, 0x8419b3fa54c9ad21ull, 0x5e20837d3fcd2d8cull, 0x83b387465d3afa79ull, 0xc99260495ddd0396ull }}, {{ 0x0aae459673531be2ull, 0xe7d4a2486a282efaull, 0x290107c74fe0c351ull, 0xad4522e47e03c77dull, 0x250348bfa44dc8bdull, 0xdfb7c2ddaaa223e1ull }}, {{ 0x6aceb7e0813f16d5ull, 0x0e4e56d42591d5c4ull, 0x9a0a4dc91ec7a133ull, 0xc4b35cecec25cae3ull, 0x7220d77c6b09d768ull, 0xbd2d9ca8aa5566cbull }}, {{ 0x2c132ec50c76e44eull, 0x8f0f644977b259acull, 0x046709db33cc4bfeull, 0xaf01a1413979ece4ull, 0x75486adc2e626a17ull, 0x63c81e96a75603f2ull }}, {{ 0xb8bfd3b27ca4eb10ull, 0x9699eadeacf780b9ull, 0x2c06629005faf7f1ull, 0xd6104c8c3ec340e8ull, 0x94d42c99cfd824ecull, 0xe5d131e2895c2778ull }}, {{ 0x377e44f8de712e9bull, 0xe2032cb2c1ab0741ull, 0xb83fd9a03bcdaf6full, 0x5ca2fd7a73a08911ull, 0xd049be021e717140ull, 0xfa2bf2d95d998ab5ull }}, {{ 0x2aeeb1b8b06bd210ull, 0xd41fbefb90ae488cull, 0x327e80425608da5eull, 0x9e5de6c884455ab1ull, 0x22e16c15306e6c83ull, 0xc5b77c7da7ff6b1aull }}, {{ 0xad52f136e43634a0ull, 0x493d75d3a6ced579ull, 0xf8f102975c5887b4ull, 0x2fab03d52ab58aebull, 0x5cce38d3e4503d24ull, 0xb92adce88ffa2f05ull }}, {{ 0xc53d6c24ea1e0e45ull, 0xdc669a44841456c0ull, 0xb96a19e99b754d0aull, 0xdcae2653ab176d37ull, 0xa00e3846eb226369ull, 0x3baca1159fc5d635ull }}, {{ 0xb4663971252c8eb1ull, 0x9c0206ad28cb6387ull, 0x3e2503201295026cull, 0x9ecd7f44aeea442dull, 0x408e32c52f57e222ull, 0x54be4ad83dba5e18ull }}, {{ 0x0bfe3e6b73bd92e8ull, 0x181442c397f1e34dull, 0x6d721f40b9d2183eull, 0x3406f8aed526a9c4ull, 0x858dfbb3d96ed55aull, 0x4f6eec726947acf2ull }}, {{ 0x77ee70328567bd12ull, 0xf0ca9ba3ef72e102ull, 0x467538874234f26cull, 0x0845b6d45382a1acull, 0x378bd5067e545586ull, 0x1a553c781cccc179ull }}, {{ 0xaf5061f9360d62b2ull, 0x67ea14675a7cca18ull, 0xc094354896117841ull, 0x52b9244b431a50baull, 0x2b765240ef4b573cull, 0x07545cb11fff8ebcull }}, {{ 0xd923d3bc1c85daf8ull, 0x0f24cc0988dfe4f6ull, 0x85ca14d5dcaeb28eull, 0x3b3b6af09f07274bull, 0xb29f368958f1685bull, 0x494b9eeb3ffb9359ull }}, {{ 0x7b6645591d3a8db5ull, 0x976ff85f58bef1a4ull, 0x39e4d05a9ed2f98cull, 0x50522d66364788f3ull, 0xfa38215d796e1390ull, 0xdcf435307fd3c180ull }}, {{ 0xd1feb57b2449890dull, 0xea5fb3b97775706cull, 0x42f0238a343dbf7dull, 0x2335c5fe1ecb5980ull, 0xc6314da6be4cc3a3ull, 0xa18a13e4fe458f09ull }}, {{ 0x33f316cf6adf5a85ull, 0x27bd053eaa966440ull, 0x9d6163660a697aebull, 0x6019bbed33f17f02ull, 0xbded08836effa45full, 0x4f64c6f1eeb79661ull }}, {{ 0x077ee41a2cb98935ull, 0x8d623472a9dfea82ull, 0x25cde1fc681ecd2full, 0xc1015744076ef61aull, 0x6b42552255fc6bb9ull, 0x19efc573532bdfd1ull }}, {{ 0x4af4e905bf3f5c12ull, 0x85d60c7aa2bf2914ull, 0x7a0ad3dc113403dbull, 0x8a0d68a84a559d05ull, 0x309753575bdc3541ull, 0x035db6813fb6be2eull }}, {{ 0xed911a39787998b3ull, 0x3a5c7cca5b779acaull, 0xc46c4698ac082693ull, 0x64861692e7582236ull, 0xe5e94169969a148full, 0x21a9210c7d236dcdull }}, {{ 0x47ab063eb4bff702ull, 0x479cdfe792ac0bedull, 0xac3ac1f6b85181c0ull, 0xed3ce1bd09715623ull, 0xfb1c8e1fe204cd99ull, 0x509b4a7ce3624a0aull }}, {{ 0xccae3e730f7fa611ull, 0xcc20bf0bbab87744ull, 0xba4b93a3332f1182ull, 0x4460d1625e6d5d64ull, 0xcf1d8d3ed4300803ull, 0x2610e8e0e1d6e46dull }}, {{ 0xfece707e9afc7ca8ull, 0xf94776754b34a8afull, 0x46f3c45fffd6af1bull, 0xabc82dd7b045a5efull, 0x1727847449e05020ull, 0x7ca918c8d264ec4aull }}, {{ 0xf41064f20ddcde95ull, 0xbccaa094f00e96dfull, 0xc585abbffe62d717ull, 0xb5d1ca6ce2b87b58ull, 0xe78b2c8ae2c32146ull, 0xde9af7d837f13ae4ull }}, {{ 0x88a3f1748aa0b1cdull, 0x5fea45d16091e4bfull, 0xb738b57fefdc66edull, 0x1a31e840db34d177ull, 0x0b6fbd6cdb9f4cc3ull, 0xb20dae722f6c4cf1ull }}, {{ 0x56676e8d6a46f205ull, 0xbf26ba2dc5b2ef7bull, 0x283716ff5e9c0545ull, 0x05f3128890102eadull, 0x725d66409438ff9full, 0xf488d075da3b016aull }}, {{ 0x600a518626c5742full, 0x778345c9b8fd5ad1ull, 0x9226e5f9b21834b9ull, 0x3b7eb955a0a1d2c3ull, 0x77a5fe85ca39fc36ull, 0x8d58249a864e0e28ull }}, {{ 0xc0672f3d83b689d3ull, 0xab20b9e139e58c2dull, 0xb584fbc0f4f20f3eull, 0x52f33d5846523ba3ull, 0xac7bf139e643da1eull, 0x85716e093f0c8d94ull }}, {{ 0x8407d8672521623cull, 0xaf4742cc42f779c9ull, 0x1731d58991749872ull, 0x3d806572bf365465ull, 0xbcd76c42fea6852full, 0x366e4c5c767d87ceull }}, {{ 0x284e7407734dd658ull, 0xd8c89bfa9daac1dfull, 0xe7f2575fae8df47aull, 0x6703f67b781f4bf2ull, 0x606a3a9df28133d8ull, 0x204efb9ca0e74e13ull }}, {{ 0x9310884a810a5f75ull, 0x77d617ca28ab92b7ull, 0x0f7769bcd18b8cccull, 0x0627a0d2b138f77dull, 0xc4264a2b790c0674ull, 0x4315d41e49090cc1ull }}, {{ 0xbea552e90a67ba8eull, 0xae5cede596b3bb2bull, 0x9aaa21602f737ffcull, 0x3d8c483aec39aae2ull, 0xa97ee5b2ba784088ull, 0x9eda492eda5a7f91ull }}, {{ 0x72753d1a680d498full, 0xcfa14af7e3054fb5ull, 0x0aa54dc1da82ffdeull, 0x677ad24d3a40acdaull, 0x9ef4f8fb48b28552ull, 0x3486dbd48788fbb0ull }}, {{ 0x789463081084df95ull, 0x1c4cedaede351d16ull, 0x6a750992891dfeb4ull, 0x0acc37044686c084ull, 0x3591b9d0d6f93538ull, 0x0d44964d4b59d4e6ull }}, {{ 0xb5cbde50a530bbd5ull, 0x1b0148d4ae1322e0ull, 0x28925fb95b2bf309ull, 0x6bfa262ac143852cull, 0x17b1422865bc1430ull, 0x84addf04f18250feull }}, {{ 0x19f6af2673e75650ull, 0x0e0cd84eccbf5cc7ull, 0x95b7bd3d8fb77e5bull, 0x37c57dab8ca333b9ull, 0xecec9593f958c9e4ull, 0x2ecab6316f1729ecull }}, {{ 0x03a2d78087095f21ull, 0x8c807313ff799fc7ull, 0xd92d64679d2aef8eull, 0x2db6e8b37e60053full, 0x413dd7c7bd77e2eaull, 0xd3eb1dee56e7a341ull }}, {{ 0x245c6b05465db74aull, 0x7d047ec7fac03dc6ull, 0x7bc5ec0c23ad5b91ull, 0xc9251702efc0347eull, 0x8c6a6dcd66aedd25ull, 0x472f2b4f650c608cull }}, {{ 0x6b9c2e34bfa928e3ull, 0xe22cf3cfcb8269bdull, 0xd5bb387964c593aeull, 0xdb72e61d5d820cf0ull, 0x7c284a0602d4a379ull, 0xc7d7b119f27bc57dull }}, {{ 0x3419ce0f7c9b98e0ull, 0xd5c1861df3182166ull, 0x595034bdefb7c4d4ull, 0x927cfd25a7148168ull, 0xd992e43c1c4e62c2ull, 0xce6ceb0378d5b6e6ull }}, {{ 0x09020c9ade13f8bdull, 0x598f3d2b7ef14dfeull, 0x7d220f6b5d2db050ull, 0xb8e1e37886cd0e13ull, 0x7fbcea591b0fdb99ull, 0x10412e22b8592504ull }}, {{ 0x5a147e0cacc7b75full, 0x7f9863b2f56d0becull, 0xe3549a31a3c8e323ull, 0x38d2e2b544028cc2ull, 0xfd61277b0e9e9401ull, 0xa28bcd5b337b722cull }}, {{ 0x84ccec7ebfcd29baull, 0xfbf3e4fd9642773bull, 0xe14e05f065d8df62ull, 0x383cdb14a8197f9cull, 0xe5cb8ace9231c80cull, 0x5976059002d275c1ull }}, {{ 0x30013cf37e03a141ull, 0xd786f1e7de98a853ull, 0xcd0c3b63fa78b9ddull, 0x32608ece90fefc20ull, 0xf9f36c11b5f1d07aull, 0x7e9c37a01c389992ull }}, {{ 0xe00c6182ec244c86ull, 0x6b45730eb1f6933full, 0x027a51e7c8b742aaull, 0xf7c59411a9f5d948ull, 0xc38238b11b7224c5ull, 0xf21a2c411a35ffbdull }}, {{ 0xc07bcf1d396afd3aull, 0x30b67e92f3a1c07eull, 0x18c7330dd7289aa8ull, 0xadb7c8b0a39a7cd0ull, 0xa31636eb12756fbbull, 0x7505ba8b061bfd69ull }}, {{ 0x84d617243e2de443ull, 0xe720f1bd845184f3ull, 0xf7c7fe8a67960a91ull, 0xc92dd6e66408e020ull, 0x5ede252eb8965d54ull, 0x9239496e3d17e620ull }}, {{ 0x305ce76a6dcaea9cull, 0x074971672b2f3183ull, 0xadcff1680bdc69b3ull, 0xdbca64ffe858c149ull, 0xb4ad73d335dfa54full, 0xb63cde4e62eefd43ull }}, {{ 0xe3a10a2849ed2a1aull, 0x48de6e07afd7ef1full, 0xca1f6e10769c20feull, 0x95e7f1ff13778ce0ull, 0x0ec686401abc751eull, 0x1e60af0fdd55e4a5ull }}, {{ 0xe44a6592e343a504ull, 0xd8b04c4cde6f573eull, 0xe53a4ca4a21949eeull, 0xdb0f73f6c2ab80c7ull, 0x93c13e810b5c9331ull, 0x2fc6d69ea55aee72ull }}, {{ 0xeae7f7bce0a47229ull, 0x76e2fb00b0596874ull, 0xf446fe6e54fce354ull, 0x8e9a87a39ab307ceull, 0xc58c710a719dbff2ull, 0xddc46232758d5079ull }}, {{ 0x2d0fad60c66c759eull, 0xa4ddce06e37e1491ull, 0x8ac5f04f51e0e14cull, 0x92094c640afe4e15ull, 0xb77c6a6870297f79ull, 0xa9abd5f8978524c1ull }}, {{ 0xc29cc5c7c03c9829ull, 0x70aa0c44e2eccdabull, 0x6bbb631932c8ccfeull, 0xb45cfbe86def0cd7ull, 0x2adc2814619efabfull, 0xa0b65bb5eb336f91ull }}, {{ 0x9a1fb9cd825df19eull, 0x66a47ab0dd4008b5ull, 0x3551defbfbd801f0ull, 0x0ba1d7144b56806aull, 0xac9990cbd035cb7dull, 0x471f951b30025babull }}, {{ 0x053d420717ab7031ull, 0x026ccae8a4805718ull, 0x1532b5d7d6701364ull, 0x745266caf1610426ull, 0xbdffa7f62219f2e2ull, 0xc73bd30fe01794b4ull }}, {{ 0x34649446ecb261e9ull, 0x183fed166d0366f0ull, 0xd3fb1a6e6060c1e8ull, 0x8b3803ed6dca297cull, 0x6bfc8f9d55037cd8ull, 0xc8563e9ec0ebcf0full }}, {{ 0x0bedcac53ef7d31full, 0xf27f42e042220562ull, 0x47cf084fc3c79310ull, 0x7030274649e59ee0ull, 0x37dd9c255222e075ull, 0xd35e72338936169aull }}, {{ 0x7749ebb475ae3f34ull, 0x78f89cc2955435d4ull, 0xce16531da5cbbea9ull, 0x61e188bee2f834c2ull, 0x2ea81975355cc496ull, 0x41b076035c1ce206ull }}, {{ 0xa8e3350c98ce780bull, 0xb9b61f99d54a1a4cull, 0x0cdf3f2879f5729eull, 0xd2cf5774ddb20f9cull, 0xd290fe94159faddfull, 0x90e49c219920d43dull }}, {{ 0x98e0127df810b06cull, 0x411d3c0254e506feull, 0x80b87794c3967a33ull, 0x3c196a90a8f49c18ull, 0x39a9f1c8d83ccabeull, 0xa8ee194ffb484a6aull }}, {{ 0xf8c0b8ebb0a6e437ull, 0x8b24581750f245f1ull, 0x0734abcfa3e0c600ull, 0x58fe29a6998e18f5ull, 0x40a371d8725feb6eull, 0x994cfd1fd0d2e826ull }}, {{ 0xb7873934e684ea21ull, 0x6f6b70e92976bb73ull, 0x480eb61c66c7bc05ull, 0x79eda081ff8cf992ull, 0x8662727477bf324full, 0xfd01e33e283d117eull }}, {{ 0x2b483c110131254bull, 0x5a32691b9ea35285ull, 0xd0931d1c03cd5836ull, 0xc3484513fb81bfb6ull, 0x3fd8788cad77f71aull, 0xe212e06d9262aef1ull }}, {{ 0xb0d258aa0beb74f0ull, 0x85f81b1432613933ull, 0x25bf23182605721full, 0xa0d2b2c7d3117d24ull, 0x7e74b57ec6afa70bull, 0xd4bcc447b7dad56cull }}, {{ 0xe83776a47732915eull, 0x3bb10ec9f7cc3c04ull, 0x79775ef17c36753bull, 0x483afbce3eaee369ull, 0xf08f16f3c2dc8674ull, 0x4f5faacd2e8c563cull }}, {{ 0x122aa26ca7f9adabull, 0x54ea93e3adfa5831ull, 0xbea9b56eda209450ull, 0xd24dd60e72d4e21eull, 0x6596e5859c9d408aull, 0x19bcac03d17b5e61ull }}, {{ 0xb5aa583e8fc0c8a9ull, 0x5129c6e4cbc771eaull, 0x72a116548545cb23ull, 0x370a5c907c50d533ull, 0xf7e4f7381e24856cull, 0x015eb8262ed1afcdull }}, {{ 0x18a772719d87d69bull, 0x2ba1c4eff5ca732bull, 0x7a4adf4d34b9ef61ull, 0x26679da4db285402ull, 0xaef1a8312d6d363aull, 0x0db3317dd430de0bull }}, {{ 0xf68a7870274e6213ull, 0xb451b15f99e87faeull, 0xc6ecb9040f4359cbull, 0x800c28708f934818ull, 0xd57091ebc6441e45ull, 0x88ffeeea49e8ac74ull }}, {{ 0xa168b461890fd4bdull, 0x0b30edbc0314fcd5ull, 0xc53f3a2898a181f5ull, 0x007994659bc0d0f7ull, 0x5665b335bea92eb7ull, 0x59ff5526e316bc90ull }}, {{ 0x4e170bcf5a9e4f60ull, 0x6fe949581ed1e058ull, 0xb4784595f64f1392ull, 0x04bfcbf8158829adull, 0x5ff90019729bd326ull, 0x83f95384dee35da3ull }}, {{ 0x0ce676198a2f19c0ull, 0x5f1cdd713432c373ull, 0x0cb2b7db9f16c3b8ull, 0x2f7df7b0d751a0c9ull, 0xbfba00fe7a163f7cull, 0x27bd4330b4e1a861ull }}, {{ 0x81009cff65d7017cull, 0xb720a66c09fba27eull, 0x7efb2e9436e3a533ull, 0xdaebace8693047daull, 0x7d4409f0c4de7ad9ull, 0x8d649fe710d093d1ull }}, {{ 0x0a0621f9fa660edaull, 0x2746803863d458f1ull, 0xf5cfd1ca24e47405ull, 0x8d34c1141be2ce88ull, 0xe4a86367b0b0cc82ull, 0x85ee3f06a825c62eull }}, {{ 0x643d53c3c7fc9484ull, 0x88c10233e64b796aull, 0x9a1e31e570ec8833ull, 0x840f8ac916dc1159ull, 0xee93e20ce6e7fd19ull, 0x3b4e76429179bdd4ull }}, {{ 0xea6545a5cfddcd29ull, 0x578a1606fef2be27ull, 0x052df2f6693d5203ull, 0x289b6bdae498ad80ull, 0x51c6d481050fe2ffull, 0x51109e99aec16a51ull }}, {{ 0x27f4b87a1eaa039eull, 0x6b64dc45f57b6d8full, 0x33cb7da01c653421ull, 0x9612368cedf6c700ull, 0x31c44d0a329eddf7ull, 0x2aa63200d38e272dull }}, {{ 0x8f8f34c532a4242eull, 0x31f09abb96d24797ull, 0x05f2e8411bf4094eull, 0xdcb621814ba3c602ull, 0xf1ab0265fa34ababull, 0xaa7df408438d87c3ull }}, {{ 0x9b980fb3fa6969d1ull, 0xf3660b53e436cbebull, 0x3b7d128b17885d0dull, 0x9f1d4f0cf465bc14ull, 0x70ae17fbc60eb4b6ull, 0xa8eb8852a3874da7ull }}, {{ 0x13f09d07c81e2229ull, 0x81fc7146ea23f734ull, 0x52e2b96eeb53a28bull, 0x372516818bf958caull, 0x66ccefd5bc930f22ull, 0x9933533a6349088aull }}, {{ 0xc766224dd12d5598ull, 0x13dc6cc52567a808ull, 0x3cdb3e5531445973ull, 0x2772e10f77bd77e7ull, 0x04015e595dbe9756ull, 0xfc014047e0da5568ull }}, {{ 0xc9fd570a2bc557ecull, 0xc69c3fb3760c9057ull, 0x60906f53ecab7e7eull, 0x8a7cca9aad66af08ull, 0x280daf7da971e95dull, 0xd80c82cec8875610ull }}, {{ 0xe3e56665b5b56f37ull, 0xc21a7d029c7da36dull, 0xc5a459473eb2f0f3ull, 0x68dfea0ac602d653ull, 0x9088dae89e731da7ull, 0x707d1c13d5495ca1ull }}, {{ 0xe6f5fff919165821ull, 0x9508e21a1ce8624aull, 0xb86b7cc872fd6985ull, 0x18bf246bbc1c5f45ull, 0xa5588d16307f288aull, 0x64e318c654dd9e4full }}, {{ 0x059bffbafadf714full, 0xd258d5052113d6edull, 0x3432dfd47de61f37ull, 0xf7776c35591bb8b9ull, 0x757582dde4f79564ull, 0xf0def7bf50a82f1cull }}, {{ 0x3817fd4dccba6d15ull, 0x377852334ac66542ull, 0x09fcbe4ceafd382eull, 0xaaaa3a157b15373cull, 0x96971caaf1abd5f1ull, 0x68b5ad792691d71cull }}, {{ 0x30efe509ff4842d4ull, 0x2ab33600ebbff496ull, 0x63df6f012de431ceull, 0xaaa644d6ced42858ull, 0xe1e71ead70b65b70ull, 0x1718c6bb81b2671dull }}, {{ 0xe95ef263f8d29c44ull, 0xab001c09357f8dddull, 0xe6ba560bcae9f20dull, 0xaa7eb06414499373ull, 0xd30732c6671f9266ull, 0xe6f7c35310f8072aull }}, {{ 0x1db577e7b83a1aa6ull, 0xae01185c16fb8aabull, 0x03475c75ed237488ull, 0xa8f2e3e8cadfc287ull, 0x3e47fbc0073bb802ull, 0x05ada13ea9b047acull }}, {{ 0x2916af0d32450a7cull, 0xcc0af398e5d36aafull, 0x20c99c9b43628d56ull, 0x997ce717ecbd9946ull, 0x6ecfd5804855301aull, 0x38c84c72a0e2ccbaull }}, {{ 0x9ae2d683f6b268d4ull, 0xf86d83f8fa422ad7ull, 0x47e01e10a1d98563ull, 0xfee106ef3f67fcbdull, 0x541e5702d353e109ull, 0x37d2fc7a48dbff48ull }}, {{ 0x0cdc6127a2f81843ull, 0xb44727b9c695ac6cull, 0xcec12ca6527f35e7ull, 0xf4ca45587a0fdf64ull, 0x492f661c4146ca63ull, 0x2e3ddcc6d897f8d3ull }}, {{ 0x809bcb8c5db0f2a0ull, 0x0ac78d41c1d8bc38ull, 0x138bbe7f38f81b0dull, 0x8fe6b574c49eb9f0ull, 0xdbd9fd1a8cc3e7e7ull, 0xce6a9fc475efb840ull }}, {{ 0x0615f37ba8e97a42ull, 0x6bcb849192775a35ull, 0xc37570f839b10e82ull, 0x9f03168fae334360ull, 0x9683e3097fa70f0bull, 0x102a3dac9b5d3288ull }}, {{ 0x3cdb82d4991ec698ull, 0x35f32dafb8a98612ull, 0xa29669b240ea9118ull, 0x361ee19cce00a1c7ull, 0xe126de5efc869674ull, 0xa1a668be11a3f955ull }}, {{ 0x60931c4dfb33c1f1ull, 0x1b7fc8dd369f3cb6ull, 0x59e020f68929aaf2ull, 0x1d34d0200c0651ccull, 0xcb84afb5dd41e08aull, 0x5080176cb067bd5aull }}, {{ 0xc5bf1b0bd0059369ull, 0x12fdd8a422385f1full, 0x82c149a15ba0ad75ull, 0x24102140783f31fbull, 0xf32edd1aa492c565ull, 0x2500ea3ee40d658bull }}, {{ 0xb9770e762037c216ull, 0xbdea76695633b73dull, 0x1b8ce04d9446c692ull, 0x68a14c84b277f3d3ull, 0x7fd4a30a6dbbb5f3ull, 0x72092674e885f777ull }}, {{ 0x3ea6909d422d94d8ull, 0x6b28a01d5e052869ull, 0x1380c307cac3c1bbull, 0x164cfd2ef8af863full, 0xfe4e5e6849551b82ull, 0x745b8091153baaaaull }}, {{ 0x7281a62495c7d06dull, 0x2f964125ac33941cull, 0xc3079e4deba59152ull, 0xdf01e3d5b6db3e76ull, 0xef0fb012dd531314ull, 0x8b9305aad454aaadull }}, {{ 0x79107d6dd9ce243dull, 0xdbde8b78ba03c91cull, 0x9e4c2f0b3477ad35ull, 0xb612e659249070a3ull, 0x569ce0bca53ebed0ull, 0x73be38ac4b4eaacbull }}, {{ 0xbaa4e64a820d6a65ull, 0x96b172b74425db1cull, 0x2ef9d6700cacc41aull, 0x1cbcff7b6da46664ull, 0x6220c75e74737427ull, 0x856e36baf112abf1ull }}, {{ 0x4a70fee9148627f0ull, 0xe2ee7b28a97a8f1full, 0xd5c260607ebfa909ull, 0x1f61fad2486bffe9ull, 0xd547c9b08c828987ull, 0x364e234d6abab76dull }}, {{ 0xe869f51acd3d8f63ull, 0xdd50cf969ec99738ull, 0x5997c3c4f37c9a62ull, 0x39d3cc36d437ff22ull, 0x54cde0e57d195f47ull, 0x1f0d61062b4b2a4aull }}, {{ 0x1423930c046799deull, 0xa5281be233dfe839ull, 0x7feda5b182de07dcull, 0x4245fa244a2ff757ull, 0x500ac8f6e2fdb8c8ull, 0x3685ca3db0efa6e7ull }}, {{ 0xc963be782c0c02abull, 0x739116d606bf123aull, 0xff4878ef1cac4e9eull, 0x96bbc56ae5dfa96aull, 0x206bd9a4dde937d2ull, 0x2139e668e95c8509ull }}, {{ 0xdde570b1b8781aabull, 0x83aae45c4376b64bull, 0xf8d4b9571ebb1230ull, 0xe355b62cfabc9e2dull, 0x44368070ab1c2e39ull, 0x4c4300191d9d325bull }}, {{ 0xaaf666f134b10aabull, 0x24aceb9aa2a31ef6ull, 0xb84f3d67334eb5e5ull, 0xe1591dc1cb5e2dcbull, 0xaa210466af19ce42ull, 0xfa9e00fb2823f790ull }}, {{ 0xada0056c0eea6aaaull, 0x6ec1340a5a5f35a2ull, 0x3318660801131af3ull, 0xcd7b2991f1adc9f5ull, 0xa54a2c02d7020e9cull, 0xca2c09cf9167aba6ull }}, {{ 0xc840363895282aa4ull, 0x538c086787b8185aull, 0xfef3fc500abf0d82ull, 0x06cf9fb370c9e393ull, 0x74e5b81c66149220ull, 0xe5b8621bae0cb482ull }}, {{ 0xd2821e35d391aa6aull, 0x4378540b4d30f38bull, 0xf587db206b768717ull, 0x441c3d0267e2e3c7ull, 0x90f9311bfccdb540ull, 0xf933d514cc7f0d18ull }}, {{ 0x39152e1a43b0a822ull, 0xa2b3487103e98376ull, 0x974e8f4432a146e8ull, 0xa91a62180edce5cfull, 0xa9bbeb17e0091482ull, 0xbc0652cffcf682f5ull }}, {{ 0x3ad3cd06a4e6914full, 0x5b00d46a271f229eull, 0xe91198a9fa4cc516ull, 0x9b07d4f094a0fa1bull, 0xa1572eeec05acd1aull, 0x583f3c1fe1a11d98ull }}, {{ 0x4c4602427101ad18ull, 0x8e084c2587375a2eull, 0x1aaff6a3c6ffb2dfull, 0x0e4e5165ce49c517ull, 0x4d67d553838c030aull, 0x7278593ed04b27f6ull }}, {{ 0xfabc16986a10c2f0ull, 0x8c52f977482985ceull, 0x0adfa265c5fcfcbbull, 0x8f0f2dfa0ee1b2e7ull, 0x060e554323781e64ull, 0x78b37c7422ef8f9full }}, {{ 0xcb58e1f424a79d5full, 0x7b3dbea8d19f3a15ull, 0x6cbc57f9bbe1df53ull, 0x9697cbc494d0fd06ull, 0x3c8f549f62b12fedull, 0xb702dc895d5b9c36ull }}, {{ 0xf178d3896e8c25b2ull, 0xd0697298303844d9ull, 0x3f5b6fc156d2b942ull, 0xe1edf5add029e240ull, 0x5d994e39daebdf47ull, 0x261c9d5da5941a1eull }}, {{ 0x6eb8435e517978f1ull, 0x241e79f1e232b083ull, 0x79925d8d643b3c9cull, 0xd34b98ca21a2d682ull, 0xa7fd0e428d36b8ceull, 0x7d1e25a877c9052full }}, {{ 0x5332a1af2ebeb967ull, 0x6930c372d5fae522ull, 0xbfb7a785ea505e19ull, 0x40f3f7e5505c6118ull, 0x8fe28e9984233814ull, 0xe32d7894adda33dcull }}, {{ 0x3ffa50d7d3733e05ull, 0x1be7a27c5bccf357ull, 0x7d2c8b3b2723acfeull, 0x8987aef5239bcaf7ull, 0x9ed991ff296030caull, 0xdfc6b5ceca86069dull }}, {{ 0x7fc7286e42806c33ull, 0x170c58db96018168ull, 0xe3bd704f8764c1edull, 0x5f4cd5936415edaaull, 0x347fb3f79dc1e7e9ull, 0xbdc31a13e93c4228ull }}, {{ 0xfdc7944e990439faull, 0xe67b7893dc0f0e14ull, 0xe566631b49ef9342ull, 0xb90057c1e8db48acull, 0x0cfd07ac29930f1dull, 0x699f04c71c5a9592ull }}, {{ 0xe9cbcb11fa2a43c5ull, 0x00d2b5c698968cd1ull, 0xf5ffdf10e35bc09dull, 0x3a036d931890d6c0ull, 0x81e24cb99fbe9729ull, 0x20362fc71b89d7b4ull }}, {{ 0x21f5eeb3c5a6a5b0ull, 0x083b19c1f5e18033ull, 0x9bfeb6a8e1958622ull, 0x442247bef5a86389ull, 0x12d6ff403d71e79cull, 0x421dddc713626d0dull }}, {{ 0x539b5305b88278e4ull, 0x524f01939acf01ffull, 0x17f32298cfd73d54ull, 0xa956cd759893e360ull, 0xbc65f88266730c1aull, 0x952aa9c6c1d84282ull }}, {{ 0x44113e393518b8e8ull, 0x37160fc40c1613f9ull, 0xef7f59f81e68654bull, 0x9d640697f5c6e1c0ull, 0x5bfbb518007e790aull, 0xd3aaa1c39272991bull }}, {{ 0xa8ac6e3c12f73910ull, 0x26dc9da878dcc7bcull, 0x5af983b13013f4f0ull, 0x25e841ef99c4d189ull, 0x97d512f004f0ba6aull, 0x44aa51a3b879fb11ull }}, {{ 0x96bc4e58bda83a9eull, 0x849e2894b89fcd5eull, 0x8dbf24ebe0c79161ull, 0x7b12935c01b02f5dull, 0xee52bd6031674825ull, 0xaea7306534c3ceafull }}, {{ 0xe35b0f7768924a2dull, 0x2e2d95cf363e05b1ull, 0x89777136c7cbadcfull, 0xceb9c19810e1d9a7ull, 0x4f3b65c1ee08d176ull, 0xd287e3f40fa612dfull }}, {{ 0xe18e9aaa15b6e5c5ull, 0xcdc7da181e6c38f2ull, 0x5eaa6c23cdf4ca17ull, 0x13418ff0a8d2808bull, 0x1851f9934c582ea4ull, 0x394ee7889c7cbcb9ull }}, {{ 0xcf920aa4d924f9b2ull, 0x09ce84f1303a397cull, 0xb2a839660b8fe4eeull, 0xc08f9f6698390571ull, 0xf333bfc0fb71d268ull, 0x3d150b561cdf5f3aull }}, {{ 0x1bb46a707b71c0f1ull, 0x6211316be2463ee0ull, 0xfa923dfc739ef14cull, 0x859c3a01f23a3670ull, 0x80057d89d2723817ull, 0x62d2715d20b9b84dull }}, {{ 0x150c2864d2718965ull, 0xd4abee36d6be74c1ull, 0xc9b66bdc84356cfbull, 0x381a441376462069ull, 0x0036e762387630ebull, 0xdc386da347413307ull }}, {{ 0xd27993f0386f5df2ull, 0x4eb74e2463708f8aull, 0xe120369d2a1641d6ull, 0x3106a8c29ebd4421ull, 0x022509d6349de930ull, 0x9a344860c88bfe46ull }}, {{ 0x38bfc7623459ab78ull, 0x13290d6be2659b6cull, 0xcb422223a4de925full, 0xea42979a3364a952ull, 0x1572625e0e2b1be1ull, 0x060ad3c7d577eebcull }}, {{ 0x377dc9d60b80b2aeull, 0xbf9a8636d7f8123aull, 0xf095556470b1b7b6ull, 0x2699ec0601ee9d3bull, 0xd677d7ac8daf16d3ull, 0x3c6c45ce56af5358ull }}, {{ 0x2ae9e25c7306fac8ull, 0x7c093e246fb0b646ull, 0x65d555ec66f12d23ull, 0x8203383c13522457ull, 0x60ae6cbd88d6e43full, 0x5c3aba0f62d94178ull }}, {{ 0xad22d79c7e45cbd2ull, 0xd85c6d6c5ce71ebdull, 0xfa555b3c056bc362ull, 0x14203258c1356b69ull, 0xc6d03f675864ea7bull, 0x9a4b4499dc7c8eb3ull }}, {{ 0xc35c6c1ceeb9f630ull, 0x739c463ba1073368ull, 0xc75590583635a1dcull, 0xc941f7778c163223ull, 0xc4227a0973f128ceull, 0x06f0ae029cdd9305ull }}, {{ 0xa19c392153439ddcull, 0x841abe544a480217ull, 0xc957a3721e18529cull, 0xdc93aaab78ddf565ull, 0xa958c45e876b9813ull, 0x4566cc1a20a7be39ull }}, {{ 0x501a3b4d40a42a9bull, 0x290b6f4ae6d014ecull, 0xdd6c62752cf33a1dull, 0x9dc4aab2b8ab95f9ull, 0x9d77abb14a33f0c6ull, 0xb603f905468d6e40ull }}, {{ 0x210651048669aa12ull, 0x9a7258ed0420d13bull, 0xa63bd893c1804523ull, 0x29aeaafb36b3dbc2ull, 0x26acb4ece60767c2ull, 0x1c27ba34c1864e86ull }}, {{ 0x4a3f2a2d4020a4b3ull, 0x0877794229482c4full, 0x7e5675c58f02b364ull, 0xa0d2add02306959aull, 0x82bf1140fc4a0d95ull, 0x198d460f8f3f113dull }}, {{ 0xe677a5c481466ef9ull, 0x54aabc959cd1bb18ull, 0xef6099b7961b01e8ull, 0x483aca215e41d808ull, 0x1b76ac89dae487d8ull, 0xff84bc9b9876ac67ull }}, {{ 0x00ac79ad0cc055bcull, 0x4eab5dd820314ef9ull, 0x59c6012bdd0e1313ull, 0xd24be54dae927059ull, 0x12a2bd628ced4e72ull, 0xfb2f5e13f4a2bc07ull }}, {{ 0x06bcc0c27f835958ull, 0x12b1aa7141ed15baull, 0x81bc0bb6a28cbec1ull, 0x36f6f508d1b8637dull, 0xba5b65d98145107cull, 0xcfd9acc78e5b5846ull }}, {{ 0x435f8798fb217d6cull, 0xbaf0a86c9342d944ull, 0x11587522597f738aull, 0x25a592583133e2e7ull, 0x4791fa7f0cb2a4daull, 0x1e80bfcb8f9172c3ull }}, {{ 0xa1bb4bf9cf4ee633ull, 0x4d66943dc09c7caaull, 0xad7493577efa836bull, 0x7877b771ec06dd06ull, 0xcbb3c8f67efa7085ull, 0x31077df39bae7ba0ull }}, {{ 0x5150f7c21914fdffull, 0x0601ca69861cdeaaull, 0xc68dc16af5c92231ull, 0xb4ad2a733844a242ull, 0xf505d9a0f5c86536ull, 0xea4aeb8414d0d447ull }}, {{ 0x2d29ad94fad1ebf6ull, 0x3c11e81f3d20b2a7ull, 0xc1898e2d99db55eaull, 0x0ec3a88032ae569bull, 0x923a804999d3f423ull, 0x26ed3328d0284acfull }}, {{ 0xc3a0c7d1cc3337a0ull, 0x58b311386346fa87ull, 0x8f5f8dc802915b26ull, 0x93a49501facf6215ull, 0xb64902e00247895eull, 0x8543ff982192ec1bull }}, {{ 0xa447ce31fa002c3eull, 0x76feac33e0c5c94dull, 0x99bb89d019ad8f7full, 0xc46dd213cc19d4d7ull, 0x1eda1cc016cb5db1ull, 0x34a7fbf14fbd3915ull }}, {{ 0x6ace0df3c401ba71ull, 0xa5f2ba06c7b9dd08ull, 0x0153622100c79afaull, 0xac4a34c5f902506cull, 0x34851f80e3f1a8f1ull, 0x0e8fd76d1d643ad3ull }}, {{ 0x2c0c8b85a8114868ull, 0x7b7b4443cd42a254ull, 0x0d41d54a07cc0dcaull, 0xbae60fbbba172438ull, 0x0d333b08e7709970ull, 0x919e6a4325ea4c40ull }}, {{ 0xb87d733890acd410ull, 0xd2d0aaa6049a5749ull, 0x849254e44df889e8ull, 0x4cfc9d5544e76a30ull, 0x84004e590a65fe67ull, 0xb030269f7b26fa80ull }}, {{ 0x34e68035a6c048a0ull, 0x3c26aa7c2e0768e1ull, 0x2db750eb0bb56318ull, 0x01de2554b10a25e5ull, 0x28030f7a67fbf009ull, 0xe1e1823acf85c905ull }}, {{ 0x110102188382d63eull, 0x5982a8d9cc4a18ccull, 0xc929292e7515def2ull, 0x12ad754eea657af3ull, 0x901e9ac80fd7605aull, 0xd2cf164c1b39da33ull }}, {{ 0xaa0a14f5231c5e6cull, 0x7f1a9881fae4f7f8ull, 0xdb9b9bd092dab577ull, 0xbac6951527f6cd85ull, 0xa1320bd09e69c384ull, 0x3c16def910428603ull }}, {{ 0xa464d1935f1bb03aull, 0xf709f513ccf1afb6ull, 0x94141625bc8b16aaull, 0x4bc1d2d38fa4073aull, 0x4bf476263021a32full, 0x58e4b5baa2993c24ull }}, {{ 0x6bf02fc1b714e243ull, 0xa66392c60170dd22ull, 0xc8c8dd795d6ee2adull, 0xf5923c439c684849ull, 0xf78c9d7de1505fd8ull, 0x78ef194a59fc596aull }}, {{ 0x3761dd9126d0d69aull, 0x7fe3bbbc0e68a358ull, 0xd7d8a6bda654dac8ull, 0x97b65aa41c12d2e1ull, 0xab7e26eacd23be79ull, 0xb956fce783db7e2dull }}, {{ 0x29d2a7ab84286207ull, 0xfee5555890166172ull, 0x6e7683687f508bd4ull, 0xed1f8a6918bc3cd2ull, 0xb2ed852c036570bfull, 0x3d65e10b2692edc8ull }}, {{ 0xa23a8cb32993d44bull, 0xf4f55575a0dfce75ull, 0x50a12214f9257651ull, 0x433b681af75a6038ull, 0xfd4733b821f6677full, 0x65faca6f81bd49d6ull }}, {{ 0x56497eff9fc64aeeull, 0x9195569848be1098ull, 0x264b54d1bb769f33ull, 0xa052110da987c233ull, 0xe4c8053153a00af8ull, 0xfbcbe85b1164e265ull }}, {{ 0x5edef5fc3dbeed48ull, 0xafd561f2d76ca5f3ull, 0x7ef1503152a23803ull, 0x4334aa889f4d95ffull, 0xefd033ed44406db6ull, 0xd5f7138eadf0d7faull }}, {{ 0xb4b59bda697544ccull, 0xde55d37c6a3e7b81ull, 0xf56d21ed3a563024ull, 0xa00ea9563907dbfaull, 0x5e220744aa84491eull, 0x5ba6c392cb686fcdull }}, {{ 0x0f1816881e94aff5ull, 0xaf5a42dc2670d311ull, 0x96435344475de170ull, 0x40929d5e3a4e97cdull, 0xad5448aea92adb32ull, 0x9483a3bbf2145e05ull }}, {{ 0x96f0e15131cedf91ull, 0xd9869c9980683eaaull, 0xdea140aac9aace66ull, 0x85ba25ae4711ee07ull, 0xc54ad6d29bac8ff6ull, 0xcd24655774cbac38ull }}, {{ 0xe568cd2bf214bbacull, 0x7f421dff041272a9ull, 0xb24c86abe0ac1004ull, 0x394578cec6b34c4eull, 0xb4ec643a14bd9fa1ull, 0x036bf56a8ff4ba37ull }}, {{ 0xf61803b774cf54b8ull, 0xf8952bf628b87aa2ull, 0xf6fd42b6c6b8a02cull, 0x3cb6b813c300fb12ull, 0x113bea44cf683c4cull, 0x223796299f8f462dull }}, {{ 0x9cf0252a90194f35ull, 0xb5d3b79d9734ca5dull, 0xa5e49b23c33641c1ull, 0x5f2330c59e09cebdull, 0xac5726b01a125afaull, 0x562bdda03b98bdc2ull }}, {{ 0x216173a9a0fd1811ull, 0x1a452c27e80fe7a8ull, 0x7aee0f65a01e9191ull, 0xb75fe7b82c621368ull, 0xbb6782e104b78dc7ull, 0x5db6a84253f7699aull }}, {{ 0x4dce84a049e2f0a8ull, 0x06b3b98f109f0c91ull, 0xcd4c99f84131afabull, 0x29bf0d31bbd4c214ull, 0x520b1cca2f2b89cdull, 0xa922929747aa200bull }}, {{ 0x0a112e42e2dd6692ull, 0x43053f96a6367dadull, 0x04fe03b28bf0dcaeull, 0xa17683f1564f94d0ull, 0x346f1fe5d7b36203ull, 0x9b59b9e8cca54071ull }}, {{ 0x64abce9cdca601b0ull, 0x9e347be27e20e8c2ull, 0x31ec24f977689eceull, 0x4ea1276d5f1bd020ull, 0x0c573efa6d01d424ull, 0x11814317fe74846cull }}, {{ 0xeeb612209e7c10e3ull, 0x2e0cd6d8ed491797ull, 0xf33971beaa163412ull, 0x124b8a45b7162141ull, 0x7b6875c84212496bull, 0xaf0c9eeff08d2c38ull }}, {{ 0x531cb54630d8a8dfull, 0xcc80647944daebefull, 0x803e7172a4de08b5ull, 0xb6f366b926dd4c93ull, 0xd21499d294b6de2eull, 0xd67e355f6583ba34ull }}, {{ 0x3f1f14bde87698b9ull, 0xfd03ecbcb08d3759ull, 0x02706e7a70ac5719ull, 0x2582033b84a4fdc3ull, 0x34ce0239cf24add3ull, 0x60ee15b9f7254610ull }}, {{ 0x7736cf6b14a1f736ull, 0xe2273f5ee584297cull, 0x186450c866bb6703ull, 0x771420532e71e99eull, 0x100c1642176eca3full, 0xc94cd943a774bca2ull }}, {{ 0xa8241a2ece53a81aull, 0xd58879b4f7299edcull, 0xf3eb27d403520626ull, 0xa6c9433fd073202cull, 0xa078de94ea53e67aull, 0xdd007ca48a8f5e54ull }}, {{ 0x916905d40f449105ull, 0x5754c111a7a0349eull, 0x872f8e4821343d84ull, 0x83dca07e247f41c1ull, 0x44b8b1d1274700caull, 0xa204de6d6999af4eull }}, {{ 0xae1a3a4898adaa2eull, 0x694f8ab08c420e31ull, 0x47db8ed14c0a672bull, 0x269e44ed6cf8918full, 0xaf36f22b88c607e9ull, 0x5430b0462000d90eull }}, {{ 0xcd0646d5f6c8a5c9ull, 0x1d1b6ae57a948df0ull, 0xce93942cf86807b2ull, 0x822eb14641b5af98ull, 0xd82575b357bc4f1bull, 0x49e6e2bd40087a92ull }}, {{ 0x023ec45ba3d679d6ull, 0x23122cf6c9cd8b68ull, 0x11c3c9c1b4104cf5ull, 0x15d2ecbe9118dbf8ull, 0x717699016d5b1713ull, 0xe304db648054c9bcull }}, {{ 0x1673ab946660c25bull, 0x5eb5c1a3e2077210ull, 0xb1a5e19108a30193ull, 0xda3d3f71aaf897b0ull, 0x6ea1fa0e458ee6beull, 0xde3091ed034fe15cull }}, {{ 0xe084b3cbffc79791ull, 0xb3199066d44a74a0ull, 0xf07acfaa565e0fc1ull, 0x86647a70adb5ece6ull, 0x5253c48eb7950374ull, 0xade5b342211ecd9cull }}, {{ 0xc52f05f7fdcbeba6ull, 0xfeffa4044ae88e48ull, 0x64cc1ca75fac9d90ull, 0x3fecc866c91b4105ull, 0x3745ad932bd2228dull, 0xcaf900954b34081bull }}, {{ 0xb3d63bafe9f7347eull, 0xf5fc682aed158ed7ull, 0xeff91e89bcbe27a9ull, 0x7f3fd403db108a35ull, 0x28b8c7bfb6355984ull, 0xedba05d4f0085110ull }}, {{ 0x065e54df23a80ce9ull, 0x9bdc11ad42d7946dull, 0x5fbb31615f6d8ca3ull, 0xf87e48268ea5661bull, 0x9737cd7d1e157f2cull, 0x49443a5160532aa1ull }}, {{ 0x3faf50b76490811dull, 0x1698b0c49c6bcc42ull, 0xbd4fedcdba477e64ull, 0xb4eed1819275fd11ull, 0xe82e06e32cd6f7c1ull, 0xdcaa472dc33faa4full }}, {{ 0x7cd92729eda50b24ull, 0xe1f6e7ae1c35fa96ull, 0x651f4a0946caefe8ull, 0x11542f0fb89be2b1ull, 0x11cc44dfc065ad91ull, 0x9ea6c7c9a07ca71full }}, {{ 0xe07b87a348726f69ull, 0xd3a50ccd1a1bc9e0ull, 0xf338e45cc3ed5f18ull, 0xad49d69d3616daedull, 0xb1fab0bd83f8c7aaull, 0x3283cde044de8736ull }}, {{ 0xc4d34c60d4785a19ull, 0x447280030515e2c8ull, 0x8038eb9fa745b6f8ull, 0xc4e262241ce48d4bull, 0xf3cae76727b7ccaaull, 0xf9260ac2b0b14822ull }}, {{ 0xb040fbc84cb384feull, 0xac79001e32dadbd7ull, 0x0239343c88b925b2ull, 0xb0d7d56920ed84f3ull, 0x85ed0a078d2dfeabull, 0xbb7c6b9ae6ecd15dull }}, {{ 0xe289d5d2ff0331f0ull, 0xbcba012dfc8c966cull, 0x163c0a5d573b78faull, 0xe86e561b4947317eull, 0x3b42644b83cbf2b4ull, 0x52dc340d05402da7ull }}, {{ 0xd9625a3df61ff362ull, 0x5f440bcbdd7de040ull, 0xde5867a56852b9cbull, 0x144f5d10dcc7eeecull, 0x5097eaf325f77b11ull, 0x3c9a08823481c888ull }}, {{ 0x7dd7866b9d3f81d8ull, 0xb8a875f6a6eac288ull, 0xaf740c76133b41f1ull, 0xcb19a2a89fcf5540ull, 0x25ef2d7f7baaceaaull, 0x5e0455160d11d553ull }}, {{ 0xea6b4034247b1272ull, 0x36949ba2852b9954ull, 0xda887c9cc0509371ull, 0xef005a963e195486ull, 0x7b57c6fad4ac12abull, 0xac2b52dc82b2553full }}, {{ 0x283082096cceb870ull, 0x21ce145933b3fd51ull, 0x8954de1f8325c26cull, 0x560389de6cfd4d44ull, 0xd16dc5cc4eb8bab7ull, 0xb9b13c9d1af7547aull }}, {{ 0x91e5145e4013345eull, 0x520ccb7c0507e52bull, 0x5d50ad3b1f799839ull, 0x5c2362b041e504adull, 0x2e49b9fb13374b29ull, 0x40ec5e230da94cccull }}, {{ 0xb2f2cbae80c00bafull, 0x347ff2d8324ef3b3ull, 0xa526c44f3abff23dull, 0x9961dae292f22ec5ull, 0xcee143cec028ef9dull, 0x893bad5e889cfff9ull }}, {{ 0xfd7bf4d1078074d3ull, 0x0cff7c71f7158504ull, 0x7383ab184b7f7664ull, 0xfdd28cd9bd75d3b8ull, 0x14cca61381995c27ull, 0x5c54c5b15621ffc2ull }}, {{ 0xe6d7902a4b04903cull, 0x81fadc73a6d73231ull, 0x8324aef2f2fa9fe8ull, 0xea398081669a4534ull, 0xcffe7cc30ffd998full, 0x9b4fb8ed5d53fd94ull }}, {{ 0x046ba1a6ee2da25cull, 0x13cc9c848467f5f3ull, 0x1f6ed57d7dca3f15ull, 0x263f050e0206b40dull, 0x1ff0df9e9fe7ff9full, 0x111d3945a547e7d0ull }}, {{ 0x2c3450854dc8579bull, 0xc5fe1d2d2c0f9b7eull, 0x3a5456e6e9e676d2ull, 0x7e76328c14430883ull, 0x3f68bc323f0ffc37ull, 0xab243cb874cf0e21ull }}, {{ 0xba0b253509d36c10ull, 0xbbed23c3b89c12edull, 0x474b65052300a43bull, 0xf09df978ca9e5520ull, 0x7a1759f6769fda2aull, 0xaf6a5f3490168d4cull }}, {{ 0x446f7412624238a3ull, 0x574365a53618bd49ull, 0xc8f1f2335e066a55ull, 0x662bbeb7ea2f5342ull, 0xc4e983a0a23e85adull, 0xda27b80da0e184fcull }}, {{ 0xac5a88b7d6963662ull, 0x68a1f8741cf764dcull, 0xd9737601ac402755ull, 0xfdb5732f25d9409bull, 0xb11f2446567138c5ull, 0x858d308848cf31dfull }}, {{ 0xbb89572e61de1fcfull, 0x1653b48921a9f09eull, 0x7e829c10ba818956ull, 0xe9167fd77a7c8616ull, 0xeb376abf606c37bbull, 0x3783e552d817f2bcull }}, {{ 0x535d67cfd2ad3e19ull, 0xdf450d5b50a36633ull, 0xf11a18a7490f5d5cull, 0x1ae0fe6ac8dd3ce0ull, 0x302a2b79c43a2d57ull, 0x2b26f53c70ef7b61ull }}, {{ 0x41a60e1e3ac46cfaull, 0xb8b285912661fe01ull, 0x6b04f688da99a5a0ull, 0x0cc9f02bd8a460c9ull, 0xe1a5b2c1aa45c567ull, 0xaf85945c695ad1cbull }}, {{ 0x907c8d2e4bac41bfull, 0x36f937ab7fd3ec0cull, 0x2e31a1588a007847ull, 0x7fe361b6766bc7deull, 0xd078fb90a6b9b606ull, 0xdb37cb9c1d8c31f6ull }}, {{ 0xa4dd83cef4ba9177ull, 0x25bc2cb2fe47387dull, 0xcdf04d756404b2c8ull, 0xfee1d120a035ceadull, 0x24b9d3a683411c40ull, 0x902df4192779f3a4ull }}, {{ 0x70a726158f49aea6ull, 0x7959befdeec834e8ull, 0x0b630695e82efbd1ull, 0xf4d22b46421a12caull, 0x6f424481208b1a89ull, 0xa1cb88fb8ac38469ull }}, {{ 0x66877cd798e0d277ull, 0xbd8175eb53d21114ull, 0x71de41db11d5d62eull, 0x9035b0be9504bbe4ull, 0x5896ad0b456f0963ull, 0x51f359d36ba32c1eull }}, {{ 0x014ae06bf8c838a8ull, 0x670e9b314634aaccull, 0x72ae928eb25a5dd3ull, 0xa218e771d22f56ecull, 0x75e2c270b6565de3ull, 0x33818242345fb92full }}, {{ 0x0cecc437b7d2368cull, 0x06920fecbe0eabf8ull, 0x7ad1b992f787aa42ull, 0x54f90a7235d9653cull, 0x9adb98671f5faae4ull, 0x030f16960bbd3bdaull }}, {{ 0x813faa2d2e36217bull, 0x41b49f3f6c92b7b0ull, 0xcc313fbdab4ca694ull, 0x51ba68761a7df45cull, 0x0c93f40739bcacebull, 0x1e96e1dc7564568aull }}, {{ 0x0c7ca5c3ce1d4ed1ull, 0x910e387a3dbb2ce5ull, 0xf9ec7d68b0fe81caull, 0x3148149d08eb8b9full, 0x7dc78848415ec131ull, 0x31e4d29c95eb6164ull }}, {{ 0x7cde79a60d25142cull, 0xaa8e34c6694fc0f2ull, 0xc33ce616e9f111e9ull, 0xecd0ce225933743full, 0xe9cb52d28db38bebull, 0xf2f03a1ddb31cdecull }}, {{ 0xe0b0c07c8372c9b3ull, 0xa98e0fc01d1d8978ull, 0xa060fce5236ab320ull, 0x40280d577c028a7dull, 0x21f13c3989037737ull, 0x7d62452a8ff20b41ull }}, {{ 0xc6e784dd227be103ull, 0x9f8c9d8123275eb8ull, 0x43c9e0f3622aff46ull, 0x8190856ad81968e8ull, 0x536c5a3f5a22a828ull, 0xe5d6b3a99f74708bull }}, {{ 0xc50b30a358d6ca1aull, 0x3b7e270b5f89b337ull, 0xa5e2c981d5adf8c2ull, 0x0fa5362c70fe1912ull, 0x423b8679855a9195ull, 0xfa6304a03a8c6571ull }}, {{ 0xb26fe6617863e505ull, 0x52ed8671bb61002dull, 0x7adbdf1258cbb796ull, 0x9c741dbc69ecfabaull, 0x965340bf3589afd2ull, 0xc7de2e42497bf66cull }}, {{ 0xf85effceb3e6f22eull, 0x3d47407151ca01c8ull, 0xcc96b6b777f52bdfull, 0x1c89295c2341cb48ull, 0xdf4087781760de3aull, 0xceadce96ded7a03dull }}, {{ 0xb3b5fe13070575cfull, 0x64c8846d31e411d9ull, 0xfde3232aaf93b6b8ull, 0x1d5b9d996091f0d7ull, 0xb8854ab0e9c8ae45ull, 0x12ca11e4b46c426aull }}, {{ 0x051becbe46369a11ull, 0xefd52c43f2e8b281ull, 0xeadf5faadbc52333ull, 0x259427fdc5b3686full, 0x3534eae921d6ceb3ull, 0xbbe4b2ef0c3a982bull }}, {{ 0x33173f6ebe2204abull, 0x5e53baa77d16f90aull, 0x2cb9bcac95b36007ull, 0x77c98fe9b902145full, 0x14112d1b526412ffull, 0x56eefd567a49f1b0ull }}, {{ 0xfee87a536d542ea9ull, 0xaf454a8ae2e5ba65ull, 0xbf415ebdd901c049ull, 0xaddf9f213a14cbb7ull, 0xc8abc31137e8bdfaull, 0x6555e560c6e370e0ull }}, {{ 0xf514c7424549d29dull, 0xd8b4e96cdcf947fbull, 0x788db36a7a1182e0ull, 0xcabc374c44cff52dull, 0xd6b59eac2f176bcaull, 0xf55af5c7c4e268c7ull }}, {{ 0x92cfc896b4e23a24ull, 0x77111e40a1bccfd7ull, 0xb5890228c4af1cc8ull, 0xeb5a28fab01f93c6ull, 0x631832b9d6ea35ebull, 0x958d99cdb0d817ceull }}, {{ 0xbc1dd5e310d64568ull, 0xa6ab2e8651601e6bull, 0x175a1597aed71fd4ull, 0x318599cae13bc5c3ull, 0xdef1fb4265261b37ull, 0xd7880208e870ee0full }}, {{ 0x592a5adea85eb60eull, 0x82afd13f2dc13035ull, 0xe984d7ecd4673e4eull, 0xef3801eccc55b99eull, 0xb573d097f37d1027ull, 0x6b50145914694c9eull }}, {{ 0x7ba78cb293b31c88ull, 0x1ade2c77c98be215ull, 0x1f306f404c086f11ull, 0x5830133ffb594035ull, 0x168625ef82e2a18full, 0x3120cb7acc1cfe33ull }}, {{ 0xd48b7ef9c4ff1d54ull, 0x0cadbcaddf76d4d6ull, 0x37e45882f85456abull, 0x71e0c07fd17c8213ull, 0xe13d7b5b1cda4f99ull, 0xeb47f2cbf921edfeull }}, {{ 0x4d72f5c1b1f72546ull, 0x7ec95ecabaa45064ull, 0x2eeb751db34b62aeull, 0x72c784fe2edd14c0ull, 0xcc66d18f20871bfeull, 0x30cf7bf7bb534bf4ull }}, {{ 0x067d9990f3a774b8ull, 0xf3ddb3eb4a6b23ebull, 0xd532932900f1dad0ull, 0x7bcb31edd4a2cf81ull, 0xfc042f97454717f0ull, 0xe81ad7ad5140f78full }}, {{ 0x40e7ffa9848a8f32ull, 0x86a90730e82f672eull, 0x53f9bf9a09728c29ull, 0xd5eff34a4e5c1b12ull, 0xd829dbe8b4c6ef64ull, 0x110c6cc52c89ab9full }}, {{ 0x890ffc9f2d6997efull, 0x429a47e911da07ceull, 0x47c17c045e79799full, 0x5b5f80e70f990eb7ull, 0x71a297170fc559f0ull, 0xaa7c3fb3bd60b43eull }}, {{ 0x5a9fde37c61fef59ull, 0x9a06cf1ab2844e11ull, 0xcd8ed82bb0bec038ull, 0x91bb09069bfa9328ull, 0x7059e6e69db58363ull, 0xa8da7d0565c70a70ull }}, {{ 0x8a3eae2dbd3f5975ull, 0x0444170af92b0cadull, 0x079471b4e7738236ull, 0xb14e5a4217c9bf98ull, 0x63830502291721e3ull, 0x9888e235f9c66864ull }}, {{ 0x6672cdc964797e97ull, 0x2aa8e66dbbae7ec7ull, 0x4bcc71110a83161cull, 0xed0f8694ede17bf0ull, 0xe31e32159ae752e4ull, 0xf558d61bc1c013ebull }}, {{ 0x007c09ddecbef1e6ull, 0xaa99004954d0f3caull, 0xf5fc6aaa691edd19ull, 0x429b41d14aced762ull, 0xdf2df4d80d093cf1ull, 0x95785d159180c736ull }}, {{ 0x04d862ab3f7572fbull, 0xa9fa02dd502985e4ull, 0x9bdc2aa81b34a300ull, 0x9a10922cec1469ddull, 0xb7cb9070825c616cull, 0xd6b3a2d7af07c824ull }}, {{ 0x3073dab07a967dcdull, 0xa3c41ca5219f3ae8ull, 0x1699aa91100e5e06ull, 0x04a5b5c138cc22a8ull, 0x2df3a465179bce3eull, 0x63045c6cd64dd16full }}, {{ 0xe4868ae4c9e0ea06ull, 0x65a91e7350384d11ull, 0xe200a9aaa08fac42ull, 0x2e79198c37f95a90ull, 0xcb846bf2ec160e6cull, 0xde2b9c405f0a2e57ull }}, {{ 0xed416cefe2c9243full, 0xf89b3081223302b2ull, 0xd406a0aa459cba97ull, 0xd0baff7a2fbd89a8ull, 0xf32c377d38dc9039ull, 0xadb41a83b665cf6dull }}, {{ 0x448e415edbdb6a77ull, 0xb60fe50b55fe1afdull, 0x484246a6b81f49efull, 0x274dfac5dd676098ull, 0x7fba2ae4389da242ull, 0xc90909251ffa1a4bull }}, {{ 0xad8e8db4969228a3ull, 0x1c9ef2715bed0de4ull, 0xd296c2833138e35dull, 0x890bcbbaa609c5f2ull, 0xfd45acea36285695ull, 0xda5a5b733fc506f2ull }}, {{ 0xc791890de1b59661ull, 0x1e35786d97428aeeull, 0x39e3991fec38e1a3ull, 0x5a75f54a7c61bb7cull, 0xe4b8c1261d9361d7ull, 0x878792807db2457dull }}, {{ 0xcbaf5a8ad117dfceull, 0x2e16b447e8996d53ull, 0x42e3fb3f3a38d05full, 0x889b94e8dbd152daull, 0xef378b7d27c1d269ull, 0x4b4bb904e8f6b6eaull }}, {{ 0xf4d9896c2aeebe08ull, 0xcce30acf15fe4545ull, 0x9ce7d078463823b7ull, 0x5613d118962d3c86ull, 0x582b72e38d92381full, 0xf0f53a3119a3252dull }}, {{ 0x907f5e39ad536c4full, 0x00de6c16dbeeb4bbull, 0x210e24b2be31652eull, 0x5cc62af5ddc45d42ull, 0x71b27ce387b63139ull, 0x699445eb005f73c5ull }}, {{ 0xa4f9ae40c5423b17ull, 0x08b038e497530f53ull, 0x4a8d6efb6dedf3ccull, 0x9fbdad9aa9aba495ull, 0x70f8e0e34d1dec3dull, 0x1fcabb2e03ba85b6ull }}, {{ 0x71c0ce87b4964ee9ull, 0x56e238ede93e9944ull, 0xe98655d24b4b85f8ull, 0x3d68c80aa0b46dd4ull, 0x69b8c8e1032b3a68ull, 0x3deb4fcc25493920ull }}, {{ 0x7188114d0ddf151bull, 0x64d6394b1c71fcacull, 0x1f3f5a36f0f33bb3ull, 0x6617d06a470c4a51ull, 0x2137d8ca1fb04812ull, 0x6b311df974dc3b44ull }}, {{ 0x6f50ad028ab6d30dull, 0xf05e3cef1c73debcull, 0x3879862569805501ull, 0xfcee2426c67ae72bull, 0x4c2e77e53ce2d0b7ull, 0x2feb2bbe909a50a9ull }}, {{ 0x5926c2196b243e84ull, 0x63ae61571c86b35cull, 0x34bf3d761f035213ull, 0xe14d6983c0cd07b0ull, 0xf9d0aef460dc272full, 0xdf2fb571a607269cull }}, {{ 0x7b8394fe2f6a712bull, 0xe4cfcd671d43019bull, 0x0f78669d362134c1ull, 0xcd061f2588024ce2ull, 0xc226d58bc89987deull, 0xb7dd16707c478221ull }}, {{ 0xd323d1edda286badull, 0xf01e0607249e1012ull, 0x9ab402241d4c0f92ull, 0x023d3777501700d4ull, 0x95845775d5ff4eb4ull, 0x2ea2e064dacb1551ull }}, {{ 0x3f66334a859434c2ull, 0x612c3c476e2ca0bcull, 0x0b08156924f89bbdull, 0x16642aa920e6084eull, 0xd72b6a9a5bf91308ull, 0xd25cc3f08beed52full }}, {{ 0x79fe00e937ca0f90ull, 0xcbba5aca4dbe475aull, 0x6e50d61b71b61565ull, 0xdfe9aa9b48fc530cull, 0x67b22a0797babe50ull, 0x379fa765775453deull }}, {{ 0xc3ec091c2de49b9cull, 0xf5478be7096ec988ull, 0x4f285d12711cd5f9ull, 0xbf20aa10d9db3e7cull, 0x0cf5a44bed4b6f28ull, 0x2c3c89f6a94b46b0ull }}, {{ 0xa7385b19caee1416ull, 0x94cb77065e53df57ull, 0x1793a2b86b205bc3ull, 0x7746a4a8829070dbull, 0x81986af744f25797ull, 0xba5d63a29cf0c2e0ull }}, {{ 0x88338f01ed4cc8daull, 0xcff2a63faf46b96cull, 0xebc45b342f4395a3ull, 0xa8c26e9519a4688eull, 0x0ff42da8b1776beaull, 0x47a5e45a21679cc5ull }}, {{ 0x5203961344ffd885ull, 0x1f7a7e7cd8c33e3dull, 0x35ab9009d8a3d866ull, 0x979851d3006c1595ull, 0x9f89c896eeaa372aull, 0xcc7aeb854e0c1fb2ull }}, {{ 0x3423dcc0b1fe7532ull, 0x3ac8f0e077a06e65ull, 0x18b3a062766673fdull, 0xebf3323e0438d7d4ull, 0x3b61d5e552a627a9ull, 0xfccd33350c793cfaull }}, {{ 0x09669f86f3f093f8ull, 0x4bd968c4ac444ff4ull, 0xf70443d8a00087e4ull, 0x377ff66c2a386e48ull, 0x51d25af53a7d8ca3ull, 0xe00400127cbc61c6ull }}, {{ 0x5e023b458765c7adull, 0xf67e17aebaab1f88ull, 0xa62aa67640054eeaull, 0x2affa039a6344ed9ull, 0x32378d9448e77e60ull, 0xc02800b8df5bd1bfull }}, {{ 0xac1650b749f9ccc2ull, 0xa0ececd34aaf3b53ull, 0x7daa809e8035152dull, 0xadfc42407e0b1480ull, 0xf62b87cad90aefc1ull, 0x81900738b9963177ull }}, {{ 0xb8df2728e3c1ff91ull, 0x49414040ead85144ull, 0xe8a906310212d3c8ull, 0xcbda9684ec6ecd04ull, 0x9db34dec7a6d5d90ull, 0x0fa048373fddeeafull }}, {{ 0x38b78798e593fbaaull, 0xdc8c82892c732cafull, 0x169a3dea14bc45d2ull, 0xf689e1313c540231ull, 0x29010b3cc845a7a7ull, 0x9c42d2287eab52dcull }}, {{ 0x372b4bf8f7c7d4a2ull, 0x9d7d195bbc7fbed8ull, 0xe2066b24cf5aba3cull, 0xa162cbec5b4815eaull, 0x9a0a705fd2b88c8full, 0x1a9c3594f2b13c99ull }}, {{ 0x27b0f7b9adce4e50ull, 0x26e2fd955cfd7472ull, 0xd4402f70198b465eull, 0x4ddbf73b90d0db2cull, 0x046863be3b357d9cull, 0x0a1a17d17aec5e00ull }}, {{ 0x8ce9ad40ca0f0f1eull, 0x84dde7d5a1e68c75ull, 0x4a81da60ff70bfadull, 0x0a97a853a8288fc0ull, 0x2c13e56e5016e81bull, 0x6504ee2ecd3bac00ull }}, {{ 0x8120c487e496972eull, 0x30ab0e5853017c97ull, 0xe91287c9fa677cc7ull, 0x69ec934491959d82ull, 0xb8c6f64f20e5110eull, 0xf2314dd40454b801ull }}, {{ 0x0b47ad4eede1e7caull, 0xe6ae8f733e0eddebull, 0x1ab94de3c80adfc7ull, 0x233dc0adafd8271dull, 0x37c59f1748f2aa90ull, 0x75ed0a482b4f3011ull }}, {{ 0x70ccc5154ad30de0ull, 0x02d19a806c94ab2eull, 0x0b3d0ae5d06cbdcfull, 0x606986c8de718723ull, 0x2db836e8d97aa9a1ull, 0x9b4266d1b117e0acull }}, {{ 0x67ffb2d4ec3e8ac3ull, 0x1c3009043dceafd0ull, 0x70626cfa243f6a16ull, 0xc41f43d8b06f475eull, 0xc93225187ecaa04dull, 0x10980430eaeec6b9ull }}, {{ 0x0ffcfc513a716ba3ull, 0x19e05a2a6a12de24ull, 0x63d841c56a7a24ddull, 0xa938a676e458c9b0ull, 0xdbf572f4f3ea4309ull, 0xa5f029e92d53c341ull }}, {{ 0x9fe1db2c486e345aull, 0x02c385a824bcad68ull, 0xe67291b628c570a3ull, 0x9c3680a4eb77e0e3ull, 0x97967d9187269e60ull, 0x7b61a31bc545a092ull }}, {{ 0x3ed28fbad44e0b87ull, 0x1ba338916f5ec616ull, 0x0079b11d97b6665eull, 0x1a21067132aec8e7ull, 0xebe0e7af47822fc6ull, 0xd1d05f15b4b845b9ull }}, {{ 0x74399d4c4b0c7347ull, 0x146035ae59b3bcdeull, 0x04c0eb27ed1fffadull, 0x054a406bfad3d906ull, 0x36c90cd8cb15ddbdull, 0x3223b6d90f32b943ull }}, {{ 0x8a4024faee7c80c5ull, 0xcbc218cf810560b0ull, 0x2f892f8f433ffcc2ull, 0x34e68437cc467a3cull, 0x23da8077eedaa962ull, 0xf565247a97fb3ca0ull }}, {{ 0x668171cd50dd07b1ull, 0xf594f81b0a35c6e5ull, 0xdb5bdb98a07fdf9bull, 0x11012a2dfac0c659ull, 0x668904af548a9dd6ull, 0x95f36cc9efd05e41ull }}, {{ 0x010e720528a24ce9ull, 0x97d1b10e6619c4f6ull, 0x919693f644febc17ull, 0xaa0ba5cbcb87bf82ull, 0x015a2ed94d6a2a5cull, 0xdb823fe35e23ae8eull }}, {{ 0x0a90743396570115ull, 0xee30ea8ffd01b19cull, 0xafe1c79eb1f358ebull, 0xa47479f5f34d7b19ull, 0x0d85d47d0625a79eull, 0x93167ee1ad64d18cull }}, {{ 0x69a48a03df660ad5ull, 0x4de9299fe210f018ull, 0xded1cc32f3817937ull, 0x6c8cc39b8106cf00ull, 0x873a4ce23d788c32ull, 0xbee0f4d0c5f02f78ull }}, {{ 0x206d6426b9fc6c56ull, 0x0b1ba03ed4a960f4ull, 0xb431f9fd830ebc29ull, 0x3d7fa4130a441608ull, 0x484700d666b579f8ull, 0x74c99027bb61dab5ull }}, {{ 0x4445e98343dc3b5aull, 0x6f1442744e9dc989ull, 0x09f3c3e71e93599aull, 0x66fc68be66a8dc57ull, 0xd2c608600316c3b2ull, 0x8fdfa18d51d28b14ull }}, {{ 0xaabb1f20a69a5184ull, 0x56ca988b1229df5cull, 0x6385a70731c18008ull, 0x05dc177002989b66ull, 0x3bbc53c01ee3a4f8ull, 0x9ebc4f8532396ed0ull }}, {{ 0xab4f374682072f2cull, 0x63e9f56eb5a2b99eull, 0xe3388647f18f0053ull, 0x3a98ea6019f611ffull, 0x555b458134e471b0ull, 0x335b1b33f63e5422ull }}, {{ 0xb11828c11447d7b5ull, 0xe7239653185b4032ull, 0xe0353ecf6f960341ull, 0x49f927c1039cb3feull, 0x5590b70c10ec70e2ull, 0x018f10079e6f4957ull }}, {{ 0xeaf1978acace6d10ull, 0x0763df3ef39081faull, 0xc214741a5bdc2093ull, 0xe3bb8d8a241f07f4ull, 0x57a72678a93c68d6ull, 0x0f96a04c3058dd69ull }}, {{ 0x2d6feb6bec10429cull, 0x49e6b87583a513cdull, 0x94cc8907969945beull, 0xe553876569364f8full, 0x6c8780b69c5c1864ull, 0x9be242f9e378a61dull }}, {{ 0xc65f323738a29a14ull, 0xe30334972472c603ull, 0xcffd5a4be1fcb96eull, 0xf54349f61c1f1b9bull, 0x3d4b07221b98f3f0ull, 0x16d69dc2e2b67d26ull }}, {{ 0xbfb7f628365a04c9ull, 0xde200de76c7bbc25ull, 0x1fe586f6d3df3e54ull, 0x94a0e39d19371416ull, 0x64ee475513f98769ull, 0xe462299cdb20e37eull }}, {{ 0x7d2f9d921f842fd6ull, 0xad408b0a3cd55979ull, 0x3ef745a446b86f50ull, 0xce48e422fc26c8ddull, 0xf14ec952c7bf4a1full, 0xebd5a0208f48e2efull }}, {{ 0xe3dc27b53b29de5bull, 0xc4856e6660557ebeull, 0x75a8b86ac3345926ull, 0x0ed8e95dd983d8a4ull, 0x6d13dd3bcd78e53eull, 0x3658414598d8dd5full }}, {{ 0xe6998d144fa2af8aull, 0xad364fffc356f374ull, 0x9897342ba00b7b83ull, 0x94791daa7f26766cull, 0x42c6a45606b8f46cull, 0x1f728cb7f878a5baull }}, {{ 0x01ff82cb1c5adb60ull, 0xc41f1ffda1658291ull, 0xf5e809b44072d324ull, 0xccbb28a8f780a03dull, 0x9bc26b5c43398c3dull, 0x3a797f2fb4b67946ull }}, {{ 0x13fb1bef1b8c91bcull, 0xa9373fe84df719aaull, 0x9b10610a847c3f6full, 0xff4f9699ab06426bull, 0x1598319aa03f7a69ull, 0x48bef7dd0f20bcc2ull }}, {{ 0xc7cf1757137db15cull, 0x9c287f130ba700a4ull, 0x0ea3ca692cda7a5cull, 0xf91be200ae3e9834ull, 0xd7f1f00a427ac823ull, 0xd775aea297475f94ull }}, {{ 0xce16e966c2e8ed9cull, 0x1994f6be7486066full, 0x9265e81bc088c79eull, 0xbb16d406ce71f208ull, 0x6f73606698cbd167ull, 0x6a98d259e8c9bbd0ull }}, {{ 0x0ce51e039d194814ull, 0xffd1a3708d3c405eull, 0xb7fb11158557cc2cull, 0x4ee4484410737455ull, 0x5a81c401f7f62e0dull, 0x29f8378317e15624ull }}, {{ 0x80f32c2422fcd0c3ull, 0xfe306265845a83acull, 0x2fceaad7356df9c1ull, 0x14ead2a8a4828b59ull, 0x8911a813af9dcc85ull, 0xa3b22b1eeecd5d6bull }}, {{ 0x097fb9695de027a1ull, 0xede3d7f72b8924bdull, 0xde12ac68164bc193ull, 0xd12c3a966d19717bull, 0x5ab090c4dc29fd32ull, 0x64f5af355405a633ull }}, {{ 0x5efd3e1daac18c4cull, 0x4ae66fa7b35b6f62ull, 0xacbabc10def58fc7ull, 0x2bba49e042fe6ed6ull, 0x8ae5a7b099a3e3fcull, 0xf198d81548387e01ull }}, {{ 0xb5e46d28ab8f7afdull, 0xed005c8d019259d7ull, 0xbf4b58a8b5979dc8ull, 0xb546e2c29df05462ull, 0x6cf88ce60066e7d9ull, 0x6ff870d4d234ec0full }}, {{ 0x1aec4396b39acddeull, 0x42039d820fb7826dull, 0x78f1769717ec29d9ull, 0x14c4db9a2b634bdbull, 0x41b580fc04050e81ull, 0x5fb468503611389aull }}, {{ 0x0d3aa3e3040c0ab1ull, 0x942427149d2b1843ull, 0xb96ea1e6ef39a27cull, 0xcfb09405b1e0f692ull, 0x911709d82832910aull, 0xbd0c13221cac3606ull }}, {{ 0x844a66de28786ae8ull, 0xc96986ce23aef29eull, 0x3e525305584058ddull, 0x1ce5c838f2c9a1bbull, 0xaae6627191f9aa6cull, 0x6278bf551eba1c41ull }}, {{ 0x2ae804ad94b42d0eull, 0xde1f440d64d57a31ull, 0x6f373e35728378a9ull, 0x20f9d2397be05150ull, 0xacffd86fb3c0a839ull, 0xd8b7795333451a90ull }}, {{ 0xad102ec7cf09c28eull, 0xad38a885f056c5ebull, 0x58286e167922b6a2ull, 0x49c2363ed6c32d24ull, 0xc1fe745d0586923bull, 0x772abd4000b309a6ull }}, {{ 0xc2a1d3ce16619988ull, 0xc436953b6363bb34ull, 0x71944ce0bb5b225aull, 0xe1961e74639fc36bull, 0x93f08ba23741b650ull, 0xa7ab648006fe6083ull }}, {{ 0x9a52460cdfcfff52ull, 0xaa21d451e1e5500full, 0x6fcb00c7518f578bull, 0xcfdd308be43da232ull, 0xc765745628911f28ull, 0x8cb1ed0045efc523ull }}, {{ 0x0736bc80be1ff937ull, 0xa5524b32d2f5209cull, 0x5dee07c92f996b74ull, 0x1ea3e576ea6855f8ull, 0xc9f68b5d95ab3798ull, 0x7ef34202bb5db365ull }}, {{ 0x48235d076d3fbc22ull, 0x7536effc3d934618ull, 0xab4c4ddbdbfe328eull, 0x3266f6a528135bb3ull, 0xe3a171a7d8b02bf1ull, 0xf580941b51a901f9ull }}, {{ 0xd161a24a447d5958ull, 0x94255fda67c0bcf2ull, 0xb0fb0a9697edf990ull, 0xf805a27390c19504ull, 0xe44e708e76e1b76bull, 0x9705c911309a13c2ull }}, {{ 0x2dd056e6ace57d72ull, 0xc975be880d87617cull, 0xe9ce69e1ef4bbfa5ull, 0xb0385883a78fd22eull, 0xeb106590a4d12a37ull, 0xe639daabe604c59cull }}, {{ 0xca236502c0f6e675ull, 0xde9971508749ced9ull, 0x221022d358f57c79ull, 0xe23375248b9e35d5ull, 0x2ea3f7a6702ba62cull, 0xfe428ab6fc2fb821ull }}, {{ 0xe561f21b89a50095ull, 0xb1fe6d2548e21481ull, 0x54a15c417996dcc2ull, 0xd602936d742e1a53ull, 0xd267ac8061b47dc0ull, 0xee996b25d9dd314bull }}, {{ 0xf5d37513607205d1ull, 0xf3f04374d8d4cd12ull, 0x4e4d9a8ebfe49f9aull, 0x5c19c24689cd0741ull, 0x380cbd03d10ce988ull, 0x51fe2f7a82a3ecf6ull }}, {{ 0x9a4292c1c4743a27ull, 0x8762a290785002bdull, 0x0f0809937eee3c0dull, 0x990196c16202488dull, 0x307f62262a811f53ull, 0x33eddac91a67419eull }}, {{ 0x0699bb91ac8a4581ull, 0x49da59a4b3201b68ull, 0x96505fc2f54e5887ull, 0xfa0fe38dd416d582ull, 0xe4f9d57da90b3943ull, 0x074a8bdb0808902dull }}, {{ 0x420153b0bd66b70cull, 0xe287806eff411210ull, 0xdf23bd9d950f7548ull, 0xc49ee38a48e45719ull, 0xf1c256e89a703ca7ull, 0x48e9768e5055a1caull }}, {{ 0x940d44e76603267cull, 0xd94b0455f88ab4a2ull, 0xb7656827d29a94d8ull, 0xae34e366d8eb6702ull, 0x7197651608625e8dull, 0xd91ea18f235851edull }}, {{ 0xc884b109fc1f80d4ull, 0x7cee2b5bb56b0e59ull, 0x29f6118e3a09d078ull, 0xce10e2047932061bull, 0x6fe9f2dc53d7b188ull, 0x7b324f9761733346ull }}, {{ 0xd52eea63d93b0844ull, 0xe14db195162e8f81ull, 0xa39caf8e446224b4ull, 0x0ca8d42cbbf43d0full, 0x5f237c9b466cef58ull, 0xcff71be9ce8000c0ull }}, {{ 0x53d527e67c4e52acull, 0xcd08efd2ddd19b12ull, 0x641edb8eabd56f10ull, 0x7e9849bf578a629cull, 0xb762de10c0415970ull, 0x1fa7172211000783ull }}, {{ 0x46538f00db0f3ab8ull, 0x02595e3caa300eb7ull, 0xe9349392b65656a8ull, 0xf1f2e1796b67da1bull, 0x29dcaca7828d7e64ull, 0x3c86e754aa004b25ull }}, {{ 0xbf4396088e984b35ull, 0x177dae5ea5e09328ull, 0x1c0dc3bb1f5f6290ull, 0x737ccebe320e8517ull, 0xa29ebe8b1986eff1ull, 0x5d45094ea402ef73ull }}, {{ 0x78a3dc5591f2f010ull, 0xeae8cfb27ac5bf97ull, 0x1889a54f39b9d9a0ull, 0x82e0136df49132e7ull, 0x5a33716eff455f6eull, 0xa4b25d12681d5a84ull }}, {{ 0xb6669b57b37d60a2ull, 0x2d181cf8cbb97beaull, 0xf560751841428049ull, 0x1cc0c24b8dabfd06ull, 0x86026e55f8b5ba51ull, 0x6ef7a2b81125892bull }}, {{ 0x2002116d02e5c656ull, 0xc2f121b7f53ed72bull, 0x95c492f28c9902dbull, 0x1f8796f388b7e245ull, 0x3c184f5bb719472bull, 0x55ac5b30ab775bb3ull }}, {{ 0x4014ae421cf9bf5full, 0x9d6b512f947467afull, 0xd9adbd797dfa1c95ull, 0x3b4be583572ed6b7ull, 0x58f3199526fcc7afull, 0x58bb8fe6b2a99500ull }}, {{ 0x80cece9521c179b8ull, 0x26312bdbcc8c0cd8ull, 0x80c966beebc51dd8ull, 0x50f6f72167d4632eull, 0x797effd385dfccd8ull, 0x77539f02fa9fd203ull }}, {{ 0x081411d3518ec12dull, 0x7debb695fd788075ull, 0x07de037535b32a71ull, 0x29a5a74e0e4bdfd1ull, 0xbef5fe433abe0073ull, 0xa944361dca3e3422ull }}, {{ 0x50c8b2412f938bc4ull, 0xeb3521dbe6b50492ull, 0x4eac229418ffa86eull, 0xa078890c8ef6be2aull, 0x759beea04b6c047full, 0x9caa1d29e66e095bull }}, {{ 0x27d6f68bdbc375a9ull, 0x3013529703122db7ull, 0x12b959c8f9fc9455ull, 0x44b55a7d95a36da7ull, 0x98175242f2382cfcull, 0x1ea523a3004c5d92ull }}, {{ 0x8e65a17695a29897ull, 0xe0c139e61eb5c927ull, 0xbb3d81d9c3ddcb53ull, 0xaf1588e7d8624886ull, 0xf0e9369d7631c1daull, 0x3273645e02fba7b9ull }}, {{ 0x8ff84ea1d859f5e3ull, 0xc78c42fd3319db8bull, 0x50671281a6a9f146ull, 0xd6d7590e73d6d543ull, 0x691c22269df1928aull, 0xf881ebac1dd48d43ull }}, {{ 0x9fb3125273839ae1ull, 0xcb7a9de3ff029373ull, 0x2406b91082a36cc3ull, 0x64697a90866454a1ull, 0x1b1955822b6fb96cull, 0xb51334b92a4d84a2ull }}, {{ 0x3cfeb73883240cc9ull, 0xf2ca2ae7f619c284ull, 0x68433aa51a623fa5ull, 0xec1ec9a53feb4e4bull, 0x0efd5715b25d3e3bull, 0x12c00f3ba7072e55ull }}, {{ 0x61f328351f687fd9ull, 0x7be5ad0f9d01992aull, 0x12a04a7307d67c7bull, 0x3933e0747f310ef2ull, 0x95e566d8f7a46e57ull, 0xbb8098548647cf52ull }}, {{ 0xd37f92133a14fe7dull, 0xd6f8c29c220ffba7ull, 0xba42e87e4e60dcd2ull, 0x3c06c48cf7ea9574ull, 0xdaf60479ac6c4f68ull, 0x5305f34d3ece1939ull }}, {{ 0x42fbb4c044d1f0dfull, 0x65b79a19549fd48eull, 0x469d14ef0fc8a03cull, 0x5843ad81af29d68full, 0x8d9c2cc0bc3b1a12ull, 0x3e3b8104740cfc42ull }}, {{ 0x9dd50f82b03368b5ull, 0xf92c04fd4e3e4d8eull, 0xc222d1569dd6425bull, 0x72a4c710d7a26198ull, 0x8819bf875a4f04b7ull, 0x6e530a2c8881da99ull }}, {{ 0x2a529b1ae2021712ull, 0xbbb831e50e6f0792ull, 0x955c2d622a5e9797ull, 0x7a6fc6a86c57cff7ull, 0x51017b4987162f2aull, 0x4f3e65bd551289ffull }}, {{ 0xa73a0f0cd414e6b5ull, 0x5531f2f290564bb5ull, 0xd599c5d5a7b1ebedull, 0xc85dc2943b6e1fabull, 0x2a0ed0df46ddd7a8ull, 0x186ff96552b963f9ull }}, {{ 0x8844968048d10314ull, 0x53f37d79a35ef518ull, 0x5801ba588cf33745ull, 0xd3a999ca524d3cb6ull, 0xa49428b8c4aa6c97ull, 0xf45fbdf53b3de7bbull }}, {{ 0x52ade102d82a1ecbull, 0x4782e6c061b592f5ull, 0x70114775818028b5ull, 0x44a001e737045f1full, 0x6dc99737aea83deeull, 0x8bbd6b94506b0d54ull }}, {{ 0x3acaca1c71a533e9ull, 0xcb1d0383d117bd95ull, 0x60acca970f019714ull, 0xae401308262bb73aull, 0x49dfe82cd2926b4eull, 0x756633cb242e854cull }}, {{ 0x4bebe51c7074071bull, 0xef2223262aed67d4ull, 0xc6bfe9e6960fe6cfull, 0xce80be517db52847ull, 0xe2bf11c039b83112ull, 0x95fe05ef69d134faull }}, {{ 0xf736f31c6488470cull, 0x57555f7dad460e4aull, 0xc37f2301dc9f041full, 0x11076f2ee91392cdull, 0xdb76b1824131eabcull, 0xdbec3b5a222c11ccull }}, {{ 0xa8257f1bed52c675ull, 0x6955bae8c4bc8eedull, 0xa2f75e129e362939ull, 0xaa4a57d51ac3bc09ull, 0x92a2ef168bf32b58ull, 0x973a518555b8b200ull }}, {{ 0x9176f717453bc08dull, 0x1d594d17af5d9548ull, 0x5da9acba2e1d9c3eull, 0xa6e76e530ba55860ull, 0xba5d56e1777fb176ull, 0xe8472f355936f405ull }}, {{ 0xaea5a6e8b4558583ull, 0x257d02ecd9a7d4d5ull, 0xa8a0bf45cd281a6dull, 0x850a4f3e747573c3ull, 0x47a564ceaafceea2ull, 0x12c7d8157c258839ull }}, {{ 0xd27885170b573721ull, 0x76e21d40808e5058ull, 0x964778ba03910843ull, 0x326718708c9685a4ull, 0xcc75f012ade15259ull, 0xbbce70d6d977523cull }}, {{ 0x38b532e67168274dull, 0xa4d52485058f2378ull, 0xdecab74423aa52a2ull, 0xf806f4657de1386dull, 0xfc9b60bacacd377bull, 0x561068647ea9365full }}, {{ 0x3713fd006e1188feull, 0x70536d32379762b2ull, 0xb3eb28a964a73a5aull, 0xb0458bf6eacc344aull, 0xde11c74bec042ad7ull, 0x5ca413ecf29c1fbfull }}, {{ 0x26c7e2044caf59ecull, 0x634243f62be9daf6ull, 0x072f969dee884788ull, 0xe2b777a52bfa0aebull, 0xacb1c8f73829ac6cull, 0x9e68c7417a193d7eull }}, {{ 0x83ced42afed98334ull, 0xe096a79db7228d9dull, 0x47dbe22b5152cb53ull, 0xdb2aac73b7c46d2eull, 0xbef1d9a831a0bc40ull, 0x3017c88ec4fc66f2ull }}, {{ 0x261449adf47f2006ull, 0xc5e28c2927598827ull, 0xce96d5b12d3bf146ull, 0x8faabc852dac43ceull, 0x75728091f0475a88ull, 0xe0edd593b1dc057bull }}, {{ 0x7ccae0cb8cf7403full, 0xbad9799b897f5187ull, 0x11e458ebc4576cc3ull, 0x9cab5d33c8baa614ull, 0x967905b362c98955ull, 0xc94a57c4f29836d2ull }}, {{ 0xdfecc7f381a88273ull, 0x4c7ec0135ef92f4aull, 0xb2eb7935ab6a3fa5ull, 0x1eb1a405d74a7cc8ull, 0xe0ba3901dbdf5d58ull, 0xdce76db179f22439ull }}, {{ 0xbf3fcf831095187full, 0xfcf380c1b5bbd8ecull, 0xfd32bc18b2267c74ull, 0x32f0683a68e8dfd6ull, 0xc7463a1296b9a571ull, 0xa10a48eec3756a42ull }}, {{ 0x787e1b1ea5d2f4f5ull, 0xe18307911956793full, 0xe3fb58f6f580dc91ull, 0xfd6412481918be65ull, 0xc8be44b9e340766bull, 0x4a66d953a296269bull }}, {{ 0xb4ed0f327a3d9195ull, 0xcf1e4baafd60bc7aull, 0xe7d179a597089db2ull, 0xe5e8b6d0faf76ffaull, 0xd76eaf42e084a037ull, 0xe8047d4459dd8215ull }}, {{ 0x114297f8c667afcfull, 0x172ef4ade5c75ccbull, 0x0e2ec077e65628fcull, 0xfb172429cdaa5fcdull, 0x6a52d89cc52e422eull, 0x102ce4ab82a714daull }}, {{ 0xac99efb7c00cde17ull, 0xe7d58ecaf9c99feeull, 0x8dd384aeff5d99d8ull, 0xcee769a208a7be02ull, 0x273c761fb3ce95d5ull, 0xa1c0eeb31a86d088ull }}, {{ 0xbe035d2d8080ace9ull, 0x0e5793edc1e03f52ull, 0x8a432ed5f9a80279ull, 0x150a2054568d6c19ull, 0x885c9d3d0611da5aull, 0x518952ff09442551ull }}, {{ 0x6c21a3c70506c11aull, 0x8f6bc74992c2793bull, 0x669fd45bc09018baull, 0xd265434b618638ffull, 0x539e24623cb28784ull, 0x2f5d3df65ca9752full }}, {{ 0x395065c632438b02ull, 0x9a35c8dfbb98bc52ull, 0x023e4b9585a0f749ull, 0x37f4a0f1cf3e39faull, 0x442d6bd65ef94b30ull, 0xd9a46b9f9e9e93d9ull }}, {{ 0x3d23f9bdf6a36e14ull, 0x0619d8bd53f75b36ull, 0x166ef3d73849a8e0ull, 0x2f8e4972186e43c4ull, 0xa9c6365fb5bcefe2ull, 0x806c343c3231c67cull }}, {{ 0x6367c16ba2624ccbull, 0x3d02776547a9901eull, 0xe055866832e098c0ull, 0xdb8ede74f44ea5a8ull, 0xa1be1fbd19615ed5ull, 0x043a0a59f5f1c0deull }}, {{ 0xe20d8e3457d6fff1ull, 0x6218a9f4cc9fa12full, 0xc3574011fcc5f782ull, 0x9394b0918b127898ull, 0x516d3d62fdcdb45aull, 0x2a4467839b7188b2ull }}, {{ 0xd4878e0b6e65ff6cull, 0xd4f6a38ffe3c4bdeull, 0xa16880b3dfbbab17ull, 0xc3cee5af6eb8b5f7ull, 0x2e4465ddea090b89ull, 0xa6ac0b24126f56f7ull }}, {{ 0x4d4b8c724ffbfa39ull, 0x51a2639fee5af6b4ull, 0x4e150706bd54aeeeull, 0xa614f8da53371bacull, 0xceabfaab245a7361ull, 0x82b86f68b85965a7ull }}, {{ 0x04f37c771fd7c63full, 0x3057e43f4f8da30bull, 0x0cd24643654ed54full, 0x7cd1b887402714bbull, 0x12b7caaf6b8881d0ull, 0x1b345a17337df88eull }}, {{ 0x3182dca73e6dbe74ull, 0xe36eea791b885e6eull, 0x8036bea1f5145517ull, 0xe03135488186cf4eull, 0xbb2deada33551224ull, 0x100b84e802ebb58cull }}, {{ 0xef1c9e8870497083ull, 0xe25528bb1353b04dull, 0x0223725392cb52eeull, 0xc1ec14d50f441911ull, 0x4fcb2c860152b570ull, 0xa07331101d35177full }}, {{ 0x571e315462de651eull, 0xd753974ec144e30bull, 0x15627743bbf13d54ull, 0x9338d05298a8faaaull, 0x1defbd3c0d3b1667ull, 0x447feaa12412eaf9ull }}, {{ 0x672ded4bdcaff32dull, 0x6943e9138cb0de71ull, 0xd5d8a8a5576c6550ull, 0xc0382339f699caa4ull, 0x2b5d6458844ee00bull, 0xacff2a4b68bd2dbbull }}, {{ 0x07cb44f69edf7fc3ull, 0x1ca71ac37ee8b06eull, 0x5a7696756a3bf524ull, 0x82316043a201ea70ull, 0xb1a5eb752b14c075ull, 0xc1f7a6f21763c94full }}, {{ 0x4df0b1a234bafd9eull, 0x1e870ba2f516e44cull, 0x88a1e09626579369ull, 0x15edc2a454132863ull, 0xf07b3293aecf8497ull, 0x93ac8574e9e5dd1cull }}, {{ 0x0b66f0560f4de82eull, 0x3146745d92e4eafbull, 0x5652c5dd7f6bc21bull, 0xdb499a6b48bf93e3ull, 0x64cff9c4d41b2de6ull, 0xc4bd369122faa321ull }}, {{ 0x7205635c990b11c8ull, 0xecc08ba7bcf12dceull, 0x5f3bbaa6fa35950full, 0x90e00830d77bc6e1ull, 0xf01fc1b0490fcb04ull, 0xaf6421ab5dca5f4dull }}, {{ 0x7435e19dfa6eb1d0ull, 0x3f85748d616bca10ull, 0xb8554a85c617d29full, 0xa8c051e86ad5c4cdull, 0x613d90e2da9dee2dull, 0xd9e950b1a9e7b90bull }}, {{ 0x8a1ad02bc852f225ull, 0x7b368d85ce35e4a4ull, 0x3354e939bcee3a38ull, 0x978333142c59b009ull, 0xcc67a8dc8a2b4dc8ull, 0x831d26f0a30d3a71ull }}, {{ 0x650c21b5d33d756full, 0xd021873a0e1aee6dull, 0x01511c41614e4634ull, 0xeb1ffec9bb80e05cull, 0xfc0c989d65b109d5ull, 0x1f2385665e844871ull }}, {{ 0xf279511a4066965bull, 0x214f48448d0d5045ull, 0x0d2b1a8dcd0ebe10ull, 0x2f3ff3e15308c398ull, 0xd87df625f8ea625bull, 0x376335ffb12ad473ull }}, {{ 0x78bd2b068401df8aull, 0x4d18d2ad828522bbull, 0x83af098a02936ca1ull, 0xd87f86cd3e57a3f0ull, 0x74eb9d7bb927d78full, 0x29e01bfcebac4c86ull }}, {{ 0xb763ae412812bb63ull, 0x02f83ac719335b52ull, 0x24d65f6419c23e4dull, 0x74fb44046f6c6765ull, 0x913426d53b8e6b9eull, 0xa2c117e134bafd40ull }}, {{ 0x29e4ce8b90bb51e2ull, 0x1db24bc6fc01913bull, 0x705fb9e901966f02ull, 0x91d0a82c5a3c09f3ull, 0xac09845453903430ull, 0x5b8aeecc0f4de485ull }}, {{ 0xa2f01173a75132d4ull, 0x28f6f5c5d80fac4full, 0x63bd431a0fe05615ull, 0xb22691bb86586382ull, 0xb85f2b4b43a209e5ull, 0x936d53f8990aed38ull }}, {{ 0x5d60ae84892bfc48ull, 0x99a599ba709cbb1cull, 0xe5649f049ec35cd3ull, 0xf581b1533f73e317ull, 0x33b7b0f0a45462f8ull, 0xc24547b5fa6d4437ull }}, {{ 0xa5c6d12d5bb7daccull, 0x00780148661f4f1bull, 0xf5ee362e33a1a044ull, 0x9710ed407a86deeeull, 0x052ce9666b4bddb9ull, 0x96b4cd1bc844aa28ull }}, {{ 0x79c42bc5952e8bf9ull, 0x04b00cd3fd391714ull, 0x9b4e1dce045042a8ull, 0xe6a94484c944b555ull, 0x33c11e0030f6a93full, 0xe3100315d2aea590ull }}, {{ 0xc1a9b5b7d3d177bcull, 0x2ee08047e43ae6ccull, 0x110d2a0c2b229a90ull, 0x029cad2fdcaf1558ull, 0x058b2c01e9a29c7full, 0xdea01eda3ad277a2ull }}, {{ 0x90a1192e462ead53ull, 0xd4c502ceea4d03ffull, 0xaa83a479af5a09a1ull, 0x1a1ec3de9ed6d570ull, 0x376fb813205a1cf6ull, 0xb24134864c38ac54ull }}, {{ 0xa64afbcebdd2c542ull, 0x4fb21c15270227fbull, 0xa9246cc0d9846052ull, 0x0533a6b234645666ull, 0x2a5d30bf4385219dull, 0xf68c0d3efa36bb4aull }}, {{ 0x7eedd6136a3bb497ull, 0x1cf518d386158fd4ull, 0x9b6c3f887f2bc337ull, 0x340482f60beb6002ull, 0xa7a3e778a3335022ull, 0xa1788475c62350e5ull }}, {{ 0xf54a5cc226550de4ull, 0x2192f8433cd79e4cull, 0x123a7b54f7b5a027ull, 0x082d1d9c7731c01aull, 0x8c670ab660012156ull, 0x4eb52c99bd6128f8ull }}, {{ 0x94e79f957f528aecull, 0x4fbdb2a0606c2f01ull, 0xb648d151ad184187ull, 0x51c3281ca7f18104ull, 0x7c066b1fc00b4d5cull, 0x1313be0165cb99b5ull }}, {{ 0xd10c3bd6f9396d3bull, 0x1d68fa43c439d60full, 0x1ed82d30c2f28f49ull, 0x319f911e8f6f0a2full, 0xd8402f3d8071059bull, 0xbec56c0df9f40116ull }}, {{ 0x2a7a5665bc3e4452ull, 0x2619c6a5aa425c9eull, 0x3471c3e79d7998dbull, 0xf03bab319a5665d7ull, 0x7281d867046a380full, 0x73b6388bc3880ae4ull }}, {{ 0xa8c75ff95a6eab37ull, 0x7d01c278a6979e2dull, 0x0c71a70c26bff88full, 0x6254aff0075ffa68ull, 0x791274062c26309full, 0x851e3575a3506cecull }}, {{ 0x97c9bfbd8852b026ull, 0xe21198b681ec2dc8ull, 0x7c708679837fb59aull, 0xd74edf6049bfc810ull, 0xbab8883db97de639ull, 0x332e16986124413cull }}, {{ 0xede17d67533ae17dull, 0xd4aff7211339c9d5ull, 0xdc6540bf22fd180cull, 0x6914b9c2e17dd0a4ull, 0x4b3552693eeafe42ull, 0xffcce1f3cb6a8c5full }}, {{ 0x4acee609404ccee4ull, 0x4edfa74ac041e25bull, 0x9bf487775de2f080ull, 0x1acf419cceea2670ull, 0xf015381c752dee98ull, 0xfe00d385f2297bb8ull }}, {{ 0xec14fc5c830014e6ull, 0x14bc88eb8292d790ull, 0x178d4aa9aadd6503ull, 0x0c18902015258066ull, 0x60d4311c93cb51f1ull, 0xec08433b759ed539ull }}, {{ 0x38d1db9d1e00d0fdull, 0xcf5d593319bc6ba9ull, 0xeb84eaa0aca5f21eull, 0x78f5a140d37703fcull, 0xc849eb1dc5f1336aull, 0x3852a0529834543dull }}, {{ 0x383294232c0829e4ull, 0x19a57bff015c349cull, 0x33312a46be7b7534ull, 0xb9984c8842a627e1ull, 0xd2e32f29bb6c0228ull, 0x333a4339f20b4a69ull }}, {{ 0x31f9c95fb851a2e5ull, 0x0076d7f60d9a0e1aull, 0xffeba6c370d29409ull, 0x3ff2fd529a7d8ecbull, 0x3cdfd7a152381597ull, 0x0046a0437470e822ull }}, {{ 0xf3c1ddbd33305cf2ull, 0x04a46f9c88048d05ull, 0xff3483a26839c85aull, 0x7f7de53a08e793f7ull, 0x60be6c4d3630d7e8ull, 0x02c242a28c691156ull }}, {{ 0x8592a963ffe3a175ull, 0x2e6c5c1d502d823bull, 0xf80d24581241d384ull, 0xfaeaf444590bc7afull, 0xc7703b041de86f14ull, 0x1b969a597c1aad5full }}, {{ 0x37ba9de7fee44e8eull, 0xd03b992521c71653ull, 0xb0836b70b6924329ull, 0xcd2d8aab7a75ccdfull, 0xca624e292b1456d1ull, 0x13e2077ed90ac5bdull }}, {{ 0x2d4a2b0ff4eb118aull, 0x2253fb7351c6df40ull, 0xe522326721b69fa2ull, 0x03c76ab2c89a00bcull, 0xe7d70d9baecb6432ull, 0xc6d44af47a6bb969ull }}, {{ 0xc4e5ae9f912eaf63ull, 0x5747d28131c4b881ull, 0xf355f80751223c55ull, 0x25ca2afbd6040760ull, 0x0e668814d3f1e9f4ull, 0xc44aed8cc8353e23ull }}, {{ 0xb0f8d23babd2d9e1ull, 0x68ce390bf1af3511ull, 0x815bb0492b565b55ull, 0x79e5add65c2849c9ull, 0x900150d047732389ull, 0xaaed477fd2146d5eull }}, {{ 0xe9b83654b63c82c7ull, 0x180e3a7770d812b0ull, 0x0d94e2dbb15f9156ull, 0xc2f8ca5f9992e1dfull, 0xa00d2822ca7f635eull, 0xad44cafe34cc45b1ull }}, {{ 0x21321f4f1e5d1bc1ull, 0xf08e48aa6870bae9ull, 0x87d0dc94edbbad5cull, 0x9db7e7bbffbcd2b6ull, 0x4083915be8f9e1b3ull, 0xc4afedee0ffab8f0ull }}, {{ 0x4bf539172fa3158dull, 0x658ed6a814674d1bull, 0x4e289dd14954c5a1ull, 0x292f0d57fd603b21ull, 0x8523ad9719c2d104ull, 0xaedf4b4c9fcb3962ull }}, {{ 0xf7943ae7dc5ed77eull, 0xf7946290cc090310ull, 0x0d962a2cdd4fb84dull, 0x9bd6856fe5c24f4dull, 0x3364c7e7019c2a29ull, 0xd4b8f0fe3df03dd9ull }}, {{ 0xabca4d0e9bb46af0ull, 0xabcbd9a7f85a1ea9ull, 0x87dda5c0a51d330bull, 0x1661365ef9971902ull, 0x01efcf061019a5a0ull, 0x4f3969ee6b626a7cull }}, {{ 0xb5e70292150c2d64ull, 0xb5f6808fb38532a0ull, 0x4ea879867323fe74ull, 0xdfcc1fb5bfe6fa19ull, 0x135e163ca1007840ull, 0x183e235031d828d8ull }}, {{ 0x1b0619b4d279c5e7ull, 0x1ba1059d0333fa47ull, 0x1294bf407f67f08full, 0xbdf93d197f05c4fdull, 0xc1acde5e4a04b288ull, 0xf26d6121f2719870ull }}, {{ 0x0e3d011038c1bb08ull, 0x144a38222007c6c7ull, 0xb9cf7884fa0f6597ull, 0x6bbc62fef639b1e2ull, 0x90c0afaee42ef957ull, 0x7845cb53786ff467ull }}, {{ 0x8e620aa237914e4full, 0xcae63155404dc3c6ull, 0x421ab531c499f7e6ull, 0x355bddf59e40f2dbull, 0xa786dcd4e9d5bd6aull, 0xb2b9f142b45f8c0bull }}, {{ 0x8fd46a562bad0f13ull, 0xecfded548309a5c1ull, 0x950b13f1ae03af03ull, 0x1596ab982e897c90ull, 0x8b44a05122596626ull, 0xfb436c9b0bbb7874ull }}, {{ 0x9e4c275db4c296c0ull, 0x41eb454d1e60798full, 0xd26ec770cc24d627ull, 0xd7e2b3f1d15edda5ull, 0x70ae432b577dfd7cull, 0xd0a23e0e7552b48dull }}, {{ 0x2ef989a90f99e37dull, 0x9330b5032fc4bf9cull, 0x3853ca67f9705d88ull, 0x6edb07722db4a87aull, 0x66ce9fb16aebe6e0ull, 0x26566c90953b0d86ull }}, {{ 0xd5bf609a9c02e2e0ull, 0xbfe7121fddaf7c19ull, 0x3345e80fbe63a755ull, 0x548e4a75c90e94c6ull, 0x04123cee2d3704c4ull, 0x7f603da5d44e8740ull }}, {{ 0x5979c60a181cdcc0ull, 0x7f06b53ea8dad902ull, 0x00bb109d6fe48959ull, 0x4d8ee899da91cfbeull, 0x28b6614dc4262fabull, 0xf9c2687a4b114880ull }}, {{ 0x7ec1bc64f1209f81ull, 0xf6431472988c7a17ull, 0x074ea6265eed5d7eull, 0x0795160289b21d6cull, 0x971fcd09a97ddcb1ull, 0xc19814c6eeacd501ull }}, {{ 0xf3915bf16b463b0eull, 0x9e9ecc79f57cc4eaull, 0x49127d7fb545a6f5ull, 0x4bd2dc1960f52638ull, 0xe73e02609eea9eeaull, 0x8ff0cfc552c0520full }}, {{ 0x83ad976e30be4e8dull, 0x3233fcc396dfb12dull, 0xdab8e6fd14b88598ull, 0xf63c98fdc9937e32ull, 0x086c17c6352a3526ull, 0x9f681db53b83349full }}, {{ 0x24c7ea4de76f117full, 0xf607dfa3e4bcebc7ull, 0x8b3905e2cf3537f1ull, 0x9e5df9e9dfc2edfcull, 0x5438edbe13a61385ull, 0x3a11291453200e36ull }}, {{ 0x6fcf270b0a56aef7ull, 0x9c4ebc66ef6135c7ull, 0x703a3adc18142f73ull, 0x2fabc322bd9d4bddull, 0x4a39496cc47cc338ull, 0x44ab9acb3f408e1full }}, {{ 0x5e17866e6762d5a7ull, 0x1b135c0559cc19caull, 0x62464c98f0c9da84ull, 0xdcb59f5b6824f6a6ull, 0xe63cde3facdfa031ull, 0xaeb40bf078858d38ull }}, {{ 0xaceb405009dc5882ull, 0x0ec1983581f901e7ull, 0xd6befdf967e28929ull, 0x9f1839921171a27full, 0xfe60ae7cc0bc41f2ull, 0xd3087764b5378438ull }}, {{ 0xc1308320629b7518ull, 0x938ff21713ba130cull, 0x6375ebbe0ed95b9aull, 0x36f23fb4ae7058feull, 0xefc6d0df875a937aull, 0x3e54a9ef142b2a39ull }}, {{ 0x8be51f43da1292efull, 0xc39f74e6c544be7full, 0xe29b356c947d9409ull, 0x25767d0ed06379efull, 0x5dc428bb4989c2c6ull, 0x6f4ea356c9afa643ull }}, {{ 0x76f338a684b9bd56ull, 0xa43a9103b4af70fbull, 0xda10163dcce7c861ull, 0x76a0e29423e2c35eull, 0xa9a99750df619bbdull, 0x59126163e0dc7ea1ull }}, {{ 0xa58036812f41655bull, 0x6a49aa250eda69d2ull, 0x84a0de6a010dd3d0ull, 0xa248d9c966dba1b4ull, 0xa09fe928b9d01566ull, 0x7ab7cde6c89cf250ull }}, {{ 0x7702210bd88df58eull, 0x26e0a5729488223aull, 0x2e48b0240a8a4624ull, 0x56d881de0494510dull, 0x463f1b974220d602ull, 0xcb2e0b03d6217726ull }}, {{ 0xa6154a76758b9790ull, 0x84c67679cd515648ull, 0xced6e1686966bd69ull, 0x647512ac2dcb2a83ull, 0xbe7713e895485c17ull, 0xefcc6e265d4ea77eull }}, {{ 0x7cd4e8a09773eb9dull, 0x2fc0a0c2052d5ed6ull, 0x1464ce141e03661full, 0xec92bab9c9efa926ull, 0x70a6c715d4d398e9ull, 0x5dfc4d7fa5128af3ull }}, {{ 0xe0511645ea873421ull, 0xdd86479433c5b460ull, 0xcbf00cc92c21fd37ull, 0x3dbb4b41e35c9b7cull, 0x6683c6da5043f923ull, 0xabdb06fc72b96d82ull }}, {{ 0xc32adebb29480949ull, 0xa73ecbca05b90bc8ull, 0xf7607fdbb953e42eull, 0x6950f092e19e12dfull, 0x0125c48722a7bb60ull, 0xb68e45dc7b3e4718ull }}, {{ 0x9facb34f9cd05cd9ull, 0x8873f5e4393a75d7ull, 0xa9c4fe953d46e9d2ull, 0x1d2965bcd02cbcbfull, 0x0b79ad475a8d51c4ull, 0x218eba9cd06ec6f0ull }}, {{ 0x3cbf011c2023a077ull, 0x54879aea3c489a6cull, 0xa1b1f1d464c52239ull, 0x239df96021bf5f7cull, 0x72c0c4c9898531a9ull, 0x4f934a202453c560ull }}, {{ 0x5f760b19416444a8ull, 0x4d4c0d265ad6083aull, 0x50f3724befb3563dull, 0x642bbdc15179badeull, 0x7b87afdf5f33f09bull, 0x1bc0e5416b45b5c4ull }}, {{ 0xba9c6efc8deaae92ull, 0x04f8837f8c5c5247ull, 0x298276f75d015e65ull, 0xe9b5698d2ec14cafull, 0xd34cdeb9b8076611ull, 0x1588f48e30b919acull }}, {{ 0x4a1c55dd8b2ad1b8ull, 0x31b522fb7b9b36cdull, 0x9f18a5a9a20daff2ull, 0x21161f83d38cfed7ull, 0x4100b3413049fcb3ull, 0xd7598d8de73b00c0ull }}, {{ 0xe51b5aa76fac3130ull, 0xf1135dd2d4102404ull, 0x36f678a05488df75ull, 0x4add3b264381f46cull, 0x8a07008be2e3deffull, 0x697f878b084e0782ull }}, {{ 0xf3118a8a5cb9ebe0ull, 0x6ac1aa3c48a16830ull, 0x25a0b6434d58ba9bull, 0xeca44f7ea3138c3aull, 0x64460576dce6b5f8ull, 0x1efb4b6e530c4b19ull }}, {{ 0x7eaf69679f4336beull, 0x2b90a65ad64e11e9ull, 0x78471ea105774a12ull, 0x3e6b1af25ec37a45ull, 0xeabc36a4a1031bb9ull, 0x35d0f24f3e7aeefdull }}, {{ 0xf2da1e0c38a0236full, 0xb3a67f8c5f0cb31eull, 0xb2c7324a36a8e4b5ull, 0x702f0d77b3a2c6b6ull, 0x2b5a226e4a1f153cull, 0x1a29771870cd55ebull }}, {{ 0x7c852c7a36416256ull, 0x0480fb7bb67eff35ull, 0xfbc7f6e62298ef19ull, 0x61d686ad045bc322ull, 0xb185584ee536d45cull, 0x059ea6f468055b2full }}, {{ 0xdd33bcc61e8dd759ull, 0x2d09d2d520f5f816ull, 0xd5cfa4fd59f956faull, 0xd26142c22b959f5dull, 0xef357314f4244b9bull, 0x3832858c10358fdcull }}, {{ 0xa4055fbd318a697aull, 0xc2623c53499bb0e4ull, 0x5a1c71e583bd65c5ull, 0x37cc9b95b3d839aaull, 0x58167ed1896af416ull, 0x31f93778a2179ea1ull }}, {{ 0x6835bd63ef681ec1ull, 0x97d65b40e014e8eeull, 0x851c72f72565f9b9ull, 0x2dfe13d9067240a7ull, 0x70e0f42f5e2d88deull, 0xf3bc2ab654ec324dull }}, {{ 0x121965e75a113388ull, 0xee5f9088c0d11950ull, 0x331c7da775fbc13full, 0xcbecc67a4076868bull, 0x68c989d9adc758adull, 0x8559ab1f5139f706ull }}, {{ 0xb4fdfb0984ac0352ull, 0x4fbba557882afd20ull, 0xff1ce88a9bd58c7full, 0xf73fc0c684a1416full, 0x17df6280c9c976c9ull, 0x3580af392c43a640ull }}, {{ 0x11ebce5f2eb82135ull, 0x1d54756b51ade347ull, 0xf721156a16577cf9ull, 0xa87d87c12e4c8e5full, 0xeeb9d907e1dea3e3ull, 0x1706d83bbaa47e80ull }}, {{ 0xb3360fb7d3314c11ull, 0x254c963130cae0c6ull, 0xa74ad624df6ae1bbull, 0x94e74d8bcefd8fbfull, 0x53427a4ed2b266e4ull, 0xe64472554a6cf109ull }}, {{ 0x001c9d2e3fecf8acull, 0x74fdddebe7ecc7c3ull, 0x88ec5d70ba2cd14full, 0xd109077615e79d7cull, 0x4098c7143af804edull, 0xfeac7754e8416a5dull }}, {{ 0x011e23ce7f41b6bdull, 0x91eaab370f3fcd9eull, 0x593ba66745c02d1aull, 0x2a5a4a9cdb0c26ddull, 0x85f7c6ca4db0314aull, 0xf2bca951128e27a4ull }}, {{ 0x0b2d6610f891235dull, 0xb32ab026987e082cull, 0x7c548008b981c309ull, 0xa786ea208e7984a5ull, 0x3badc3e708e1ece5ull, 0x7b5e9d2ab98d8c6dull }}, {{ 0x6fc5fca9b5ab61a3ull, 0xffaae181f4ec51b8ull, 0xdb4d00573f119e60ull, 0x8b45254590bf2e76ull, 0x54c9a70658d340f8ull, 0xd1b223ab3f877c44ull }}, {{ 0x5dbbdea118b1d05dull, 0xfcaccf13913b3134ull, 0x9102036876b02fc9ull, 0x70b374b7a777d0a4ull, 0x4fe0863f784089b5ull, 0x30f564b07b4adaabull }}, {{ 0xa956b24af6f2239dull, 0xdec016c3ac4fec0bull, 0xaa142214a2e1dde3ull, 0x67028f2c8aae266dull, 0x1ec53e7ab2856116ull, 0xe995eee4d0ec8ab1ull }}, {{ 0x9d62f6eda5756425ull, 0xb380e3a4bb1f3874ull, 0xa4c954ce5cd2aae6ull, 0x061997bd6acd8048ull, 0x33b470caf935cae0ull, 0x1fdb54f0293d6aebull }}, {{ 0x25dda5487695e973ull, 0x0308e46f4f38348eull, 0x6fdd500fa03aad03ull, 0x3cffed662c0702d6ull, 0x050c67edbc19ecc0ull, 0x3e9151619c662d30ull }}, {{ 0x7aa874d4a1db1e7eull, 0x1e58ec5918320d8dull, 0x5ea5209c424ac21eull, 0x61ff45fdb8461c60ull, 0x327c0f4959033f82ull, 0x71ad2dd01bfdc3e0ull }}, {{ 0xca94904e528f30eaull, 0x2f793b7af1f48786ull, 0xb273461a96eb952dull, 0xd3f8bbe932bd1bc3ull, 0xf8d898dd7a207b17ull, 0x70c3ca2117e9a6c1ull }} }; BID_F128_CONST_DEF( c_pi_ov_2, 3fff921fb54442d1, 8469898cc51701b8); // pi/2 BID128_FUNCTION_ARG1 (bid128_cos, x) // Local variables. BID_UINT128 res; int s, e; BID_UINT128 c; BID_F128_TYPE xd, yd; BID_UINT384 m; BID_UINT512 p; int sf, k, ef, el; // Decompose the input and check for NaN and infinity. s = x.w[BID_HIGH_128W] >> 63; if ((x.w[BID_HIGH_128W] & (3ull<<61)) == (3ull<<61)) { if ((x.w[BID_HIGH_128W] & (0xFull<<59)) == (0xFull<<59)) { if ((x.w[BID_HIGH_128W] & (0x1Full<<58)) != (0x1Full<<58)) { // input is infinite, so return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = BID128_NAN; BID_RETURN (res); } else { // input is NaN, so quiet/canonize it etc. #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64) __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN (res); } } else { // "large coefficient" input, which is always non-canonical here e = 0; c.w[1] = c.w[0] = 0ull; } } else { // "small coefficient" input, the normal case for finite numbers e = ((x.w[BID_HIGH_128W] >> 49) & ((1ull<<14)-1)) - 6176; c.w[1] = x.w[BID_HIGH_128W] & ((1ull<<49)-1); c.w[0] = x.w[BID_LOW_128W]; if (lt128(542101086242752ull,4003012203950112767ull,c.w[1],c.w[0])) { c.w[1] = 0ull; c.w[0] = 0ull; } } // Make sure we treat zero even with huge exponent as small if ((c.w[1] == 0) && (c.w[0] == 0)) e = -53; // If the input is <= 1/10 in magnitude, don't use the main path. // // If it's very small indeed, < 10^-18, use a trivial computation just to // ensure that we get sensible inclusions in directed rounding modes; in any // case this should be more efficient than the main path. // // Otherwise just call the conversion and cos function directly, // since no range reduction is needed and the function is well-conditioned if (e < -35) { if (e < -52) { BIDECIMAL_CALL2(bid128_sub,res,BID128_1,BID128_10PM40); BID_RETURN(res); } else { BIDECIMAL_CALL1(bid128_to_binary128,xd,x); __bid_f128_cos(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } } // Pick out the appropriate modulus for the exponent and multiply by coeff // Since we discard the top word p.w[3], we could specially optimize this. m = bid_decimal128_moduli[e+35]; __mul_128x384_to_512(p,c,m); // Shift up by two bits to give an integer part k and a fraction // modulo (pi/2). Note that we have to do this afterwards rather than // use modulo (pi/2) reduction at the start to keep integer parities. k = p.w[5] >> 62; sll256_short(p.w[5],p.w[4],p.w[3],p.w[2],2); // If the fraction is >= 1/2, add 1 to integer and complement the fraction // with an appropriate sign change so we have a "rounded to nearest" version // (Complementing is slightly different from negation but it's negligible.) // Set "sf" to the correct sign for the fraction if (p.w[5] >= 0x8000000000000000ull) { k = (k + 1) & 3; p.w[5] = ~p.w[5]; p.w[4] = ~p.w[4]; p.w[3] = ~p.w[3]; p.w[2] = ~p.w[2]; sf = 1 - s; } else { sf = s; } // Also correct k to take into account the sign if (s) k = (-k) & 3; // Normalize the binary fraction with exponent ef if (p.w[5] == 0) // Could we even have two clears? Marginal... { ef = 16382-64; p.w[5] = p.w[4]; p.w[4] = p.w[3]; p.w[3] = p.w[2]; } else ef = 16382; el = clz64_nz(p.w[5]); ef = ef - el; if (el != 0) sll192_short(p.w[5],p.w[4],p.w[3],el); // Shift right to be in the right place for a quad coefficient srl128_short(p.w[5],p.w[4],15); // Mask off integer bit and set up as quad precision number { union { BID_F128_TYPE d; BID_UINT128 i; } di; di.i.w[BID_LOW_128W] = p.w[4]; di.i.w[BID_HIGH_128W] = (((BID_UINT64) sf) << 63) + (((BID_UINT64)(ef)) << 48) + (p.w[5] & ((1ull<<48)-1)); xd = di.d; } // Multiply by pi/2 so we can use regular binary trig functions. __bid_f128_mul(xd, c_pi_ov_2.v, xd); // Now use the trig function depending on k: switch(k) { case 0: __bid_f128_cos(yd, xd); break; case 1: __bid_f128_sin(yd, xd); __bid_f128_neg(yd, yd); break; case 2: __bid_f128_cos(yd, xd); __bid_f128_neg(yd, yd); break; case 3: __bid_f128_sin(yd, xd); break; default: break; // default added to avoid compiler warning } BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } LIBRARY/src/bid32_div.c0000644€­ Q01134020000002644615113665770013563 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID32 divide ***************************************************************************** * * Algorithm description: * * if(coefficient_x=B, 1 otherwise * Q = 0 * else * get Q=(int)(coefficient_x/coefficient_y) * (based on double precision divide) * check for exact divide case * Let R = coefficient_x - Q*coefficient_y * Let m=16-number_digits(Q) * CA=R*10^m, Q=Q*10^m * B = coefficient_y * endif * if (CA<2^64) * Q += CA/B (64-bit unsigned divide) * else * get final Q using double precision divide, followed by 3 integer * iterations * if exact result, eliminate trailing zeros * check for underflow * round coefficient to nearest * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" #include "bid_div_macros.h" BID_EXTERN_C const BID_UINT32 bid_convert_table[5][128][2]; BID_EXTERN_C const BID_SINT8 bid_factors[][2]; BID_EXTERN_C const BID_UINT8 bid_packed_10000_zeros[]; BID_TYPE_FUNCTION_ARG2(BID_UINT32, bid32_div, x, y) BID_UINT64 CA, CT, PD; BID_UINT32 sign_x, sign_y, coefficient_x, coefficient_y, A, B; BID_UINT32 Q, Q2, B2, B4, B5, R, T, DU, res; BID_UINT32 valid_x, valid_y; BID_SINT32 D; int_float tempx, tempy, tempq; int exponent_x, exponent_y, bin_expon_cx; int diff_expon, ed1, ed2, bin_index; int rmode, amount; int nzeros, i, j, d5; BID_UINT32 digit_h, digit_low; BID_OPT_SAVE_BINARY_FLAGS() valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID32 (&sign_y, &exponent_y, &coefficient_y, y); // unpack arguments, check for NaN or Infinity if (!valid_x) { // x is Inf. or NaN #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK32) == SNAN_MASK32) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (coefficient_x & QUIET_MASK32); } // x is Infinity? if ((x & INFINITY_MASK32) == INFINITY_MASK32) { // check if y is Inf or NaN if ((y & INFINITY_MASK32) == INFINITY_MASK32) { // y==Inf, return NaN if ((y & NAN_MASK32) == INFINITY_MASK32) { // Inf/Inf #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (NAN_MASK32); } } else { // otherwise return +/-Inf BID_RETURN (((x ^ y) & 0x80000000) | INFINITY_MASK32); } } // x==0 if (((y & INFINITY_MASK32) != INFINITY_MASK32) && !(coefficient_y)) { // y==0 , return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (NAN_MASK32); } if (((y & INFINITY_MASK32) != INFINITY_MASK32)) { if ((y & SPECIAL_ENCODING_MASK32) == SPECIAL_ENCODING_MASK32) exponent_y = ((BID_UINT32) (y >> 21)) & 0xff; else exponent_y = ((BID_UINT32) (y >> 23)) & 0xff; sign_y = y & 0x80000000; exponent_x = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS_32; if (exponent_x > DECIMAL_MAX_EXPON_32) exponent_x = DECIMAL_MAX_EXPON_32; else if (exponent_x < 0) exponent_x = 0; BID_RETURN ((sign_x ^ sign_y) | (((BID_UINT64) exponent_x) << 23)); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK32) == SNAN_MASK32) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (coefficient_y & QUIET_MASK32); } // y is Infinity? if ((y & INFINITY_MASK32) == INFINITY_MASK32) { // return +/-0 BID_RETURN (((x ^ y) & 0x80000000)); } // y is 0 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN ((sign_x ^ sign_y) | INFINITY_MASK32); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif diff_expon = exponent_x - exponent_y + DECIMAL_EXPONENT_BIAS_32; if (coefficient_x < coefficient_y) { // get number of decimal digits for c_x, c_y //--- get number of bits in the coefficients of x and y --- tempx.d = (float) coefficient_x; tempy.d = (float) coefficient_y; bin_index = (tempy.i - tempx.i) >> 23; A = coefficient_x * (BID_UINT32)bid_power10_index_binexp[bin_index]; B = coefficient_y; // compare A, B DU = (A - B) >> 31; ed1 = 6 + (int) DU; ed2 = bid_estimate_decimal_digits[bin_index] + ed1; T = bid_power10_table_128[ed1].w[0]; CA = ((BID_UINT64)A) * T; Q = 0; diff_expon = diff_expon - ed2; } else { // get c_x/c_y Q = coefficient_x/coefficient_y; R = coefficient_x - coefficient_y * Q; // will use to get number of dec. digits of Q tempq.d = (float)Q; bin_expon_cx = (tempq.i >> 23) - 0x7f; // exact result ? if (R == 0) { res = get_BID32 (sign_x ^ sign_y, diff_expon, Q, rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif BID_RETURN (res); } // get decimal digits of Q DU = (BID_UINT32)bid_power10_index_binexp[bin_expon_cx] - Q - 1; DU >>= 31; ed2 = 7 - bid_estimate_decimal_digits[bin_expon_cx] - (int) DU; T = bid_power10_table_128[ed2].w[0]; CA = ((BID_UINT64)R) * T; B = coefficient_y; Q *= (BID_UINT32)bid_power10_table_128[ed2].w[0]; diff_expon -= ed2; } Q2 = CA / B; B2 = B + B; B4 = B2 + B2; R = CA - Q2 * B; Q += Q2; #ifdef BID_SET_STATUS_FLAGS if (R) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); //printf("ZZZ R=%x, %x %x\n",R, (BID_UINT32)pfpsf, *pfpsf); } #ifndef LEAVE_TRAILING_ZEROS else #endif #else #ifndef LEAVE_TRAILING_ZEROS if (!R) #endif #endif #ifndef LEAVE_TRAILING_ZEROS { // eliminate trailing zeros // check whether CX, CY are short if ((coefficient_x <= 1024) && (coefficient_y <= 1024)) { i = (int) coefficient_y - 1; j = (int) coefficient_x - 1; // difference in powers of 2 bid_factors for Y and X nzeros = ed2 - bid_factors[i][0] + bid_factors[j][0]; // difference in powers of 5 bid_factors d5 = ed2 - bid_factors[i][1] + bid_factors[j][1]; if (d5 < nzeros) nzeros = d5; if(nzeros) { CT = ((BID_UINT64)Q) * bid_bid_reciprocals10_32[nzeros]; CT >>= 32; // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_bid_bid_recip_scale32[nzeros]; Q = (BID_UINT32)(CT >> amount); diff_expon += nzeros; } } else { nzeros = 0; // decompose digit PD = (BID_UINT64) Q *0x068DB8BBull; digit_h = (BID_UINT32) (PD >> 40); digit_low = Q - digit_h * 10000; if (!digit_low) nzeros += 4; else digit_h = digit_low; if (!(digit_h & 1)) { nzeros += 3 & (BID_UINT32) (bid_packed_10000_zeros[digit_h >> 3] >> (digit_h & 7)); } if (nzeros) { CT = (BID_UINT64)Q * bid_bid_reciprocals10_32[nzeros]; CT >>=32; // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_bid_bid_recip_scale32[nzeros]; Q = (BID_UINT32)(CT >> amount); } diff_expon += nzeros; } if (diff_expon >= 0) { res = get_BID32 (sign_x ^ sign_y, diff_expon, Q, rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif BID_RETURN (res); } } #endif if (diff_expon >= 0) { #ifdef IEEE_ROUND_NEAREST // round to nearest code // R*10 R += R; R = (R << 2) + R; B5 = B4 + B; // compare 10*R to 5*B R = B5 - R; // correction for (R==0 && (Q&1)) R -= (Q & 1); // R<0 ? D = ((BID_UINT32) R) >> 31; Q += D; #else #ifdef IEEE_ROUND_NEAREST_TIES_AWAY // round to nearest code // R*10 R += R; R = (R << 2) + R; B5 = B4 + B; // compare 10*R to 5*B R = B5 - R; // correction for (R==0 && (Q&1)) R -= (Q & 1); // R<0 ? D = ((BID_UINT32) R) >> 31; Q += D; #else rmode = rnd_mode; if (sign_x ^ sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; switch (rmode) { case 0: // round to nearest code case BID_ROUNDING_TIES_AWAY: // R*10 R += R; R = (R << 2) + R; B5 = B4 + B; // compare 10*R to 5*B R = B5 - R; // correction for (R==0 && (Q&1)) R -= ((Q | (rmode >> 2)) & 1); // R<0 ? D = ((BID_UINT32) R) >> 31; Q += D; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: break; default: // rounding up Q++; break; } #endif #endif res = get_BID32 (sign_x ^ sign_y, diff_expon, Q, rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif BID_RETURN (res); } else { // UF occurs #ifdef BID_SET_STATUS_FLAGS if ((diff_expon + 7 < 0)) { // set status flags __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #endif rmode = rnd_mode; res = get_BID32_UF (sign_x ^ sign_y, diff_expon, Q, R, rmode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif BID_RETURN (res); } } LIBRARY/src/bid128_sinh.c0000644€­ Q01134020000001641015113665770014016 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // +10^-40, used in trivial path static BID_UINT128 BID128_10PM40 = {BID128_LH_INIT( 0x0000000000000001ull, 0x2ff0000000000000ull )}; // Constants +1, +1/2 and -1/2 used elsewhere static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_POSHALF = {BID128_LH_INIT( 0x0000000000000005ull, 0x303e000000000000ull )}; static BID_UINT128 BID128_NEGHALF = {BID128_LH_INIT( 0x0000000000000005ull, 0xb03e000000000000ull )}; static BID_UINT128 BID128_EXP_11000 = {BID128_LH_INIT( 0xd43ede775707fd0aull, 0x5550558ada285f8bull )}; static BID_UINT128 BID128_SHIFTER = {BID128_LH_INIT( 0xbe00000000000000ull, 0x3040363bf3b1ceeeull )}; // +Infinity static BID_UINT128 BID128_INF = {BID128_LH_INIT( 0x0000000000000000ull, 0x7800000000000000ull )}; BID_F128_CONST_DEF(c_1em40, 3f7a16c262777579, c58c46475896767b); // 1e-40 BID_F128_CONST_DEF(c_one, 3fff000000000000, 0000000000000000); // 1 BID_F128_CONST_DEF(c_half, 3ffe000000000000, 0000000000000000); // .5 BID_F128_CONST_DEF(c_minus_half, bffe000000000000, 0000000000000000); // .5 BID_F128_CONST_DEF(c_zero, 0000000000000000, 0000000000000000); // 0 BID_F128_CONST_DEF(c_11000, 400c57c000000000, 0000000000000000); // 11000 BID_F128_CONST_DEF(c_64, 4005000000000000, 0000000000000000); // 64 BID128_FUNCTION_ARG1 (bid128_sinh, x) // Declare local variables BID_UINT128 res; BID_F128_TYPE xd, yd, abs_xd, rt; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // Deal with infinite inputs if ((x.w[BID_HIGH_128W] & INFINITY_MASK64) == INFINITY_MASK64) { BIDECIMAL_CALL2_NORND_NOSTAT(bid128_copySign, res,BID128_INF, x); BID_RETURN(res); } // Convert to binary BIDECIMAL_CALL1(bid128_to_binary128,xd,x); // If the input is really small, the result is about x + x^3/3, which // we do weakly just to make sure all the directed roundings are OK. __bid_f128_fabs(abs_xd, xd); if (__bid_f128_le(abs_xd, c_1em40.v)) { BIDECIMAL_CALL3(bid128_fma,res,x,BID128_10PM40,x); BID_RETURN(res); } // Otherwise if the input is <= 1 in magnitude, the naive computation is // well-conditioned and will neither overflow nor underflow else if (__bid_f128_le(abs_xd, c_one.v)) { __bid_f128_sinh(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } // Otherwise, unless the input is totally huge, just "using the formula" // sinh(x) = (e^x - e^-x) / 2 is OK, but we need to to it directly in // decimal so that we don't hit ill-conditioning. Also use an FMA to try // to minimize the additional rounding errors, and take care to isolate // which is the dominant part to control these errors better: it depends // on the sign of the input. else if (__bid_f128_le(abs_xd, c_64.v)) { BID_UINT128 e, i; if (__bid_f128_le(c_zero.v, xd)) { BIDECIMAL_CALL1(bid128_exp,e,x); BIDECIMAL_CALL2(bid128_div,i,BID128_1,e); BIDECIMAL_CALL2(bid128_mul,i,BID128_NEGHALF,i); BIDECIMAL_CALL3(bid128_fma,res,e,BID128_POSHALF,i); } else { x.w[BID_HIGH_128W] &= 0x7FFFFFFFFFFFFFFFull; BIDECIMAL_CALL1(bid128_exp,e,x); BIDECIMAL_CALL2(bid128_div,i,BID128_1,e); BIDECIMAL_CALL2(bid128_mul,i,BID128_POSHALF,i); BIDECIMAL_CALL3(bid128_fma,res,e,BID128_NEGHALF,i); } BID_RETURN (res); } // For huge arguments, it's effectively +/- exp |x| / 2. // We need to copy and tweak the exp code rather than call it // in order to avoid cases where e^x/2 < MAXNUM < e^x. else { BID_UINT128 m, n, t; BID_F128_TYPE rd, md, nd; x.w[BID_HIGH_128W] &= 0x7FFFFFFFFFFFFFFFull; BIDECIMAL_CALL2(bid128_add, t, x, BID128_SHIFTER); BIDECIMAL_CALL2(bid128_sub, n, t, BID128_SHIFTER); BIDECIMAL_CALL2(bid128_sub, m, x, n); BIDECIMAL_CALL1(bid128_to_binary128, nd, n); BIDECIMAL_CALL1(bid128_to_binary128, md, m); if (__bid_f128_gt(nd, c_11000.v)) { __bid_f128_sub(nd, nd, c_11000.v); __bid_f128_exp(rd, nd); __bid_f128_exp(rt, md); __bid_f128_mul(rd, rd, rt); if (__bid_f128_lt(xd, c_zero.v)) __bid_f128_mul(rd, c_minus_half.v, rd); else __bid_f128_mul(rd, c_half.v, rd); BIDECIMAL_CALL1 (binary128_to_bid128, res, rd); BIDECIMAL_CALL2 (bid128_mul, res, res, BID128_EXP_11000); } else { __bid_f128_exp(rd, nd); __bid_f128_exp(rt, md); __bid_f128_mul(rd, rd, rt); if (__bid_f128_lt(xd, c_zero.v)) __bid_f128_mul(rd, c_minus_half.v, rd); else __bid_f128_mul(rd, c_half.v, rd); BIDECIMAL_CALL1 (binary128_to_bid128, res, rd); } BID_RETURN (res); } } LIBRARY/src/bid128.c0000644€­ Q01134020000045755315113665770013016 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" // the first entry of bid_nr_digits[i - 1] (where 1 <= i <= 113), indicates // the number of decimal digits needed to represent a binary number with i bits; // however, if a binary number of i bits may require either k or k + 1 decimal // digits, then the first entry of bid_nr_digits[i - 1] is 0; in this case if the // number is less than the value represented by the second and third entries // concatenated, then the number of decimal digits k is the fourth entry, else // the number of decimal digits is the fourth entry plus 1 DEC_DIGITS bid_nr_digits[] = { // only the first entry is used if it is not 0 {1, 0x0000000000000000ULL, 0x000000000000000aULL, 1} , // 1-bit n < 10^1 {1, 0x0000000000000000ULL, 0x000000000000000aULL, 1} , // 2-bit n < 10^1 {1, 0x0000000000000000ULL, 0x000000000000000aULL, 1} , // 3-bit n < 10^1 {0, 0x0000000000000000ULL, 0x000000000000000aULL, 1} , // 4-bit n ? 10^1 {2, 0x0000000000000000ULL, 0x0000000000000064ULL, 2} , // 5-bit n < 10^2 {2, 0x0000000000000000ULL, 0x0000000000000064ULL, 2} , // 6-bit n < 10^2 {0, 0x0000000000000000ULL, 0x0000000000000064ULL, 2} , // 7-bit n ? 10^2 {3, 0x0000000000000000ULL, 0x00000000000003e8ULL, 3} , // 8-bit n < 10^3 {3, 0x0000000000000000ULL, 0x00000000000003e8ULL, 3} , // 9-bit n < 10^3 {0, 0x0000000000000000ULL, 0x00000000000003e8ULL, 3} , // 10-bit n ? 10^3 {4, 0x0000000000000000ULL, 0x0000000000002710ULL, 4} , // 11-bit n < 10^4 {4, 0x0000000000000000ULL, 0x0000000000002710ULL, 4} , // 12-bit n < 10^4 {4, 0x0000000000000000ULL, 0x0000000000002710ULL, 4} , // 13-bit n < 10^4 {0, 0x0000000000000000ULL, 0x0000000000002710ULL, 4} , // 14-bit n ? 10^4 {5, 0x0000000000000000ULL, 0x00000000000186a0ULL, 5} , // 15-bit n < 10^5 {5, 0x0000000000000000ULL, 0x00000000000186a0ULL, 5} , // 16-bit n < 10^5 {0, 0x0000000000000000ULL, 0x00000000000186a0ULL, 5} , // 17-bit n ? 10^5 {6, 0x0000000000000000ULL, 0x00000000000f4240ULL, 6} , // 18-bit n < 10^6 {6, 0x0000000000000000ULL, 0x00000000000f4240ULL, 6} , // 19-bit n < 10^6 {0, 0x0000000000000000ULL, 0x00000000000f4240ULL, 6} , // 20-bit n ? 10^6 {7, 0x0000000000000000ULL, 0x0000000000989680ULL, 7} , // 21-bit n < 10^7 {7, 0x0000000000000000ULL, 0x0000000000989680ULL, 7} , // 22-bit n < 10^7 {7, 0x0000000000000000ULL, 0x0000000000989680ULL, 7} , // 23-bit n < 10^7 {0, 0x0000000000000000ULL, 0x0000000000989680ULL, 7} , // 24-bit n ? 10^7 {8, 0x0000000000000000ULL, 0x0000000005f5e100ULL, 8} , // 25-bit n < 10^8 {8, 0x0000000000000000ULL, 0x0000000005f5e100ULL, 8} , // 26-bit n < 10^8 {0, 0x0000000000000000ULL, 0x0000000005f5e100ULL, 8} , // 27-bit n ? 10^8 {9, 0x0000000000000000ULL, 0x000000003b9aca00ULL, 9} , // 28-bit n < 10^9 {9, 0x0000000000000000ULL, 0x000000003b9aca00ULL, 9} , // 29-bit n < 10^9 {0, 0x0000000000000000ULL, 0x000000003b9aca00ULL, 9} , // 30-bit n ? 10^9 {10, 0x0000000000000000ULL, 0x00000002540be400ULL, 10} , // 31-bit n < 10^10 {10, 0x0000000000000000ULL, 0x00000002540be400ULL, 10} , // 32-bit n < 10^10 {10, 0x0000000000000000ULL, 0x00000002540be400ULL, 10} , // 33-bit n < 10^10 {0, 0x0000000000000000ULL, 0x00000002540be400ULL, 10} , // 34-bit n ? 10^10 {11, 0x0000000000000000ULL, 0x000000174876e800ULL, 11} , // 35-bit n < 10^11 {11, 0x0000000000000000ULL, 0x000000174876e800ULL, 11} , // 36-bit n < 10^11 {0, 0x0000000000000000ULL, 0x000000174876e800ULL, 11} , // 37-bit n ? 10^11 {12, 0x0000000000000000ULL, 0x000000e8d4a51000ULL, 12} , // 38-bit n < 10^12 {12, 0x0000000000000000ULL, 0x000000e8d4a51000ULL, 12} , // 39-bit n < 10^12 {0, 0x0000000000000000ULL, 0x000000e8d4a51000ULL, 12} , // 40-bit n ? 10^12 {13, 0x0000000000000000ULL, 0x000009184e72a000ULL, 13} , // 41-bit n < 10^13 {13, 0x0000000000000000ULL, 0x000009184e72a000ULL, 13} , // 42-bit n < 10^13 {13, 0x0000000000000000ULL, 0x000009184e72a000ULL, 13} , // 43-bit n < 10^13 {0, 0x0000000000000000ULL, 0x000009184e72a000ULL, 13} , // 44-bit n ? 10^13 {14, 0x0000000000000000ULL, 0x00005af3107a4000ULL, 14} , // 45-bit n < 10^14 {14, 0x0000000000000000ULL, 0x00005af3107a4000ULL, 14} , // 46-bit n < 10^14 {0, 0x0000000000000000ULL, 0x00005af3107a4000ULL, 14} , // 47-bit n ? 10^14 {15, 0x0000000000000000ULL, 0x00038d7ea4c68000ULL, 15} , // 48-bit n < 10^15 {15, 0x0000000000000000ULL, 0x00038d7ea4c68000ULL, 15} , // 49-bit n < 10^15 {0, 0x0000000000000000ULL, 0x00038d7ea4c68000ULL, 15} , // 50-bit n ? 10^15 {16, 0x0000000000000000ULL, 0x002386f26fc10000ULL, 16} , // 51-bit n < 10^16 {16, 0x0000000000000000ULL, 0x002386f26fc10000ULL, 16} , // 52-bit n < 10^16 {16, 0x0000000000000000ULL, 0x002386f26fc10000ULL, 16} , // 53-bit n < 10^16 {0, 0x0000000000000000ULL, 0x002386f26fc10000ULL, 16} , // 54-bit n ? 10^16 {17, 0x0000000000000000ULL, 0x016345785d8a0000ULL, 17} , // 55-bit n < 10^17 {17, 0x0000000000000000ULL, 0x016345785d8a0000ULL, 17} , // 56-bit n < 10^17 {0, 0x0000000000000000ULL, 0x016345785d8a0000ULL, 17} , // 57-bit n ? 10^17 {18, 0x0000000000000000ULL, 0x0de0b6b3a7640000ULL, 18} , // 58-bit n < 10^18 {18, 0x0000000000000000ULL, 0x0de0b6b3a7640000ULL, 18} , // 59-bit n < 10^18 {0, 0x0000000000000000ULL, 0x0de0b6b3a7640000ULL, 18} , // 60-bit n ? 10^18 {19, 0x0000000000000000ULL, 0x8ac7230489e80000ULL, 19} , // 61-bit n < 10^19 {19, 0x0000000000000000ULL, 0x8ac7230489e80000ULL, 19} , // 62-bit n < 10^19 {19, 0x0000000000000000ULL, 0x8ac7230489e80000ULL, 19} , // 63-bit n < 10^19 {0, 0x0000000000000000ULL, 0x8ac7230489e80000ULL, 19} , // 64-bit n ? 10^19 {20, 0x0000000000000005ULL, 0x6bc75e2d63100000ULL, 20} , // 65-bit n < 10^20 {20, 0x0000000000000005ULL, 0x6bc75e2d63100000ULL, 20} , // 66-bit n < 10^20 {0, 0x0000000000000005ULL, 0x6bc75e2d63100000ULL, 20} , // 67-bit n ? 10^20 {21, 0x0000000000000036ULL, 0x35c9adc5dea00000ULL, 21} , // 68-bit n < 10^21 {21, 0x0000000000000036ULL, 0x35c9adc5dea00000ULL, 21} , // 69-bit n < 10^21 {0, 0x0000000000000036ULL, 0x35c9adc5dea00000ULL, 21} , // 70-bit n ? 10^21 {22, 0x000000000000021eULL, 0x19e0c9bab2400000ULL, 22} , // 71-bit n < 10^22 {22, 0x000000000000021eULL, 0x19e0c9bab2400000ULL, 22} , // 72-bit n < 10^22 {22, 0x000000000000021eULL, 0x19e0c9bab2400000ULL, 22} , // 73-bit n < 10^22 {0, 0x000000000000021eULL, 0x19e0c9bab2400000ULL, 22} , // 74-bit n ? 10^22 {23, 0x000000000000152dULL, 0x02c7e14af6800000ULL, 23} , // 75-bit n < 10^23 {23, 0x000000000000152dULL, 0x02c7e14af6800000ULL, 23} , // 76-bit n < 10^23 {0, 0x000000000000152dULL, 0x02c7e14af6800000ULL, 23} , // 77-bit n ? 10^23 {24, 0x000000000000d3c2ULL, 0x1bcecceda1000000ULL, 24} , // 78-bit n < 10^24 {24, 0x000000000000d3c2ULL, 0x1bcecceda1000000ULL, 24} , // 79-bit n < 10^24 {0, 0x000000000000d3c2ULL, 0x1bcecceda1000000ULL, 24} , // 80-bit n ? 10^24 {25, 0x0000000000084595ULL, 0x161401484a000000ULL, 25} , // 81-bit n < 10^25 {25, 0x0000000000084595ULL, 0x161401484a000000ULL, 25} , // 82-bit n < 10^25 {25, 0x0000000000084595ULL, 0x161401484a000000ULL, 25} , // 83-bit n < 10^25 {0, 0x0000000000084595ULL, 0x161401484a000000ULL, 25} , // 84-bit n ? 10^25 {26, 0x000000000052b7d2ULL, 0xdcc80cd2e4000000ULL, 26} , // 85-bit n < 10^26 {26, 0x000000000052b7d2ULL, 0xdcc80cd2e4000000ULL, 26} , // 86-bit n < 10^26 {0, 0x000000000052b7d2ULL, 0xdcc80cd2e4000000ULL, 26} , // 87-bit n ? 10^26 {27, 0x00000000033b2e3cULL, 0x9fd0803ce8000000ULL, 27} , // 88-bit n < 10^27 {27, 0x00000000033b2e3cULL, 0x9fd0803ce8000000ULL, 27} , // 89-bit n < 10^27 {0, 0x00000000033b2e3cULL, 0x9fd0803ce8000000ULL, 27} , // 90-bit n ? 10^27 {28, 0x00000000204fce5eULL, 0x3e25026110000000ULL, 28} , // 91-bit n < 10^28 {28, 0x00000000204fce5eULL, 0x3e25026110000000ULL, 28} , // 92-bit n < 10^28 {28, 0x00000000204fce5eULL, 0x3e25026110000000ULL, 28} , // 93-bit n < 10^28 {0, 0x00000000204fce5eULL, 0x3e25026110000000ULL, 28} , // 94-bit n ? 10^28 {29, 0x00000001431e0faeULL, 0x6d7217caa0000000ULL, 29} , // 95-bit n < 10^29 {29, 0x00000001431e0faeULL, 0x6d7217caa0000000ULL, 29} , // 96-bit n < 10^29 {0, 0x00000001431e0faeULL, 0x6d7217caa0000000ULL, 29} , // 97-bit n ? 10^29 {30, 0x0000000c9f2c9cd0ULL, 0x4674edea40000000ULL, 30} , // 98-bit n < 10^30 {30, 0x0000000c9f2c9cd0ULL, 0x4674edea40000000ULL, 30} , // 99-bit n < 10^30 {0, 0x0000000c9f2c9cd0ULL, 0x4674edea40000000ULL, 30} , // 100-bit n ? 10^30 {31, 0x0000007e37be2022ULL, 0xc0914b2680000000ULL, 31} , // 101-bit n < 10^31 {31, 0x0000007e37be2022ULL, 0xc0914b2680000000ULL, 31} , // 102-bit n < 10^31 {0, 0x0000007e37be2022ULL, 0xc0914b2680000000ULL, 31} , // 103-bit n ? 10^31 {32, 0x000004ee2d6d415bULL, 0x85acef8100000000ULL, 32} , // 104-bit n < 10^32 {32, 0x000004ee2d6d415bULL, 0x85acef8100000000ULL, 32} , // 105-bit n < 10^32 {32, 0x000004ee2d6d415bULL, 0x85acef8100000000ULL, 32} , // 106-bit n < 10^32 {0, 0x000004ee2d6d415bULL, 0x85acef8100000000ULL, 32} , // 107-bit n ? 10^32 {33, 0x0000314dc6448d93ULL, 0x38c15b0a00000000ULL, 33} , // 108-bit n < 10^33 {33, 0x0000314dc6448d93ULL, 0x38c15b0a00000000ULL, 33} , // 109-bit n < 10^33 {0, 0x0000314dc6448d93ULL, 0x38c15b0a00000000ULL, 33} , // 100-bit n ? 10^33 {34, 0x0001ed09bead87c0ULL, 0x378d8e6400000000ULL, 34} , // 111-bit n < 10^34 {34, 0x0001ed09bead87c0ULL, 0x378d8e6400000000ULL, 34} , // 112-bit n < 10^34 {0, 0x0001ed09bead87c0ULL, 0x378d8e6400000000ULL, 34} // 113-bit n ? 10^34 //{ 35, 0x0013426172c74d82ULL, 0x2b878fe800000000ULL, 35 } // 114-bit n < 10^35 }; // bid_midpoint64[i - 1] = 1/2 * 10^i = 5 * 10^(i-1), 1 <= i <= 19 BID_UINT64 bid_midpoint64[] = { 0x0000000000000005ULL, // 1/2 * 10^1 = 5 * 10^0 0x0000000000000032ULL, // 1/2 * 10^2 = 5 * 10^1 0x00000000000001f4ULL, // 1/2 * 10^3 = 5 * 10^2 0x0000000000001388ULL, // 1/2 * 10^4 = 5 * 10^3 0x000000000000c350ULL, // 1/2 * 10^5 = 5 * 10^4 0x000000000007a120ULL, // 1/2 * 10^6 = 5 * 10^5 0x00000000004c4b40ULL, // 1/2 * 10^7 = 5 * 10^6 0x0000000002faf080ULL, // 1/2 * 10^8 = 5 * 10^7 0x000000001dcd6500ULL, // 1/2 * 10^9 = 5 * 10^8 0x000000012a05f200ULL, // 1/2 * 10^10 = 5 * 10^9 0x0000000ba43b7400ULL, // 1/2 * 10^11 = 5 * 10^10 0x000000746a528800ULL, // 1/2 * 10^12 = 5 * 10^11 0x0000048c27395000ULL, // 1/2 * 10^13 = 5 * 10^12 0x00002d79883d2000ULL, // 1/2 * 10^14 = 5 * 10^13 0x0001c6bf52634000ULL, // 1/2 * 10^15 = 5 * 10^14 0x0011c37937e08000ULL, // 1/2 * 10^16 = 5 * 10^15 0x00b1a2bc2ec50000ULL, // 1/2 * 10^17 = 5 * 10^16 0x06f05b59d3b20000ULL, // 1/2 * 10^18 = 5 * 10^17 0x4563918244f40000ULL // 1/2 * 10^19 = 5 * 10^18 }; // bid_midpoint128[i - 20] = 1/2 * 10^i = 5 * 10^(i-1), 20 <= i <= 38 BID_UINT128 bid_midpoint128[] = { // the 64-bit word order is L, H {{0xb5e3af16b1880000ULL, 0x0000000000000002ULL} } , // 1/2 * 10^20 = 5 * 10^19 {{0x1ae4d6e2ef500000ULL, 0x000000000000001bULL} } , // 1/2 * 10^21 = 5 * 10^20 {{0x0cf064dd59200000ULL, 0x000000000000010fULL} } , // 1/2 * 10^22 = 5 * 10^21 {{0x8163f0a57b400000ULL, 0x0000000000000a96ULL} } , // 1/2 * 10^23 = 5 * 10^22 {{0x0de76676d0800000ULL, 0x00000000000069e1ULL} } , // 1/2 * 10^24 = 5 * 10^23 {{0x8b0a00a425000000ULL, 0x00000000000422caULL} } , // 1/2 * 10^25 = 5 * 10^24 {{0x6e64066972000000ULL, 0x0000000000295be9ULL} } , // 1/2 * 10^26 = 5 * 10^25 {{0x4fe8401e74000000ULL, 0x00000000019d971eULL} } , // 1/2 * 10^27 = 5 * 10^26 {{0x1f12813088000000ULL, 0x000000001027e72fULL} } , // 1/2 * 10^28 = 5 * 10^27 {{0x36b90be550000000ULL, 0x00000000a18f07d7ULL} } , // 1/2 * 10^29 = 5 * 10^28 {{0x233a76f520000000ULL, 0x000000064f964e68ULL} } , // 1/2 * 10^30 = 5 * 10^29 {{0x6048a59340000000ULL, 0x0000003f1bdf1011ULL} } , // 1/2 * 10^31 = 5 * 10^30 {{0xc2d677c080000000ULL, 0x0000027716b6a0adULL} } , // 1/2 * 10^32 = 5 * 10^31 {{0x9c60ad8500000000ULL, 0x000018a6e32246c9ULL} } , // 1/2 * 10^33 = 5 * 10^32 {{0x1bc6c73200000000ULL, 0x0000f684df56c3e0ULL} } , // 1/2 * 10^34 = 5 * 10^33 {{0x15c3c7f400000000ULL, 0x0009a130b963a6c1ULL} } , // 1/2 * 10^35 = 5 * 10^34 {{0xd9a5cf8800000000ULL, 0x00604be73de4838aULL} } , // 1/2 * 10^36 = 5 * 10^35 {{0x807a1b5000000000ULL, 0x03c2f7086aed236cULL} } , // 1/2 * 10^37 = 5 * 10^36 {{0x04c5112000000000ULL, 0x259da6542d43623dULL} } // 1/2 * 10^38 = 5 * 10^37 }; // bid_midpoint192[i - 39] = 1/2 * 10^i = 5 * 10^(i-1), 39 <= i <= 58 BID_UINT192 bid_midpoint192[] = { // the 64-bit word order is L, M, H {{0x2fb2ab4000000000ULL, 0x78287f49c4a1d662ULL, 0x0000000000000001ULL} } , // 1/2 * 10^39 = 5 * 10^38 {{0xdcfab08000000000ULL, 0xb194f8e1ae525fd5ULL, 0x000000000000000eULL} } , // 1/2 * 10^40 = 5 * 10^39 {{0xa1cae50000000000ULL, 0xefd1b8d0cf37be5aULL, 0x0000000000000092ULL} } , // 1/2 * 10^41 = 5 * 10^40 {{0x51ecf20000000000ULL, 0x5e313828182d6f8aULL, 0x00000000000005bdULL} } , // 1/2 * 10^42 = 5 * 10^41 {{0x3341740000000000ULL, 0xadec3190f1c65b67ULL, 0x0000000000003965ULL} } , // 1/2 * 10^43 = 5 * 10^42 {{0x008e880000000000ULL, 0xcb39efa971bf9208ULL, 0x0000000000023df8ULL} } , // 1/2 * 10^44 = 5 * 10^43 {{0x0591500000000000ULL, 0xf0435c9e717bb450ULL, 0x0000000000166bb7ULL} } , // 1/2 * 10^45 = 5 * 10^44 {{0x37ad200000000000ULL, 0x62a19e306ed50b20ULL, 0x0000000000e0352fULL} } , // 1/2 * 10^46 = 5 * 10^45 {{0x2cc3400000000000ULL, 0xda502de454526f42ULL, 0x0000000008c213d9ULL} } , // 1/2 * 10^47 = 5 * 10^46 {{0xbfa0800000000000ULL, 0x8721caeb4b385895ULL, 0x000000005794c682ULL} } , // 1/2 * 10^48 = 5 * 10^47 {{0x7c45000000000000ULL, 0x4751ed30f03375d9ULL, 0x000000036bcfc119ULL} } , // 1/2 * 10^49 = 5 * 10^48 {{0xdab2000000000000ULL, 0xc93343e962029a7eULL, 0x00000022361d8afcULL} } , // 1/2 * 10^50 = 5 * 10^49 {{0x8af4000000000000ULL, 0xdc00a71dd41a08f4ULL, 0x000001561d276ddfULL} } , // 1/2 * 10^51 = 5 * 10^50 {{0x6d88000000000000ULL, 0x9806872a4904598dULL, 0x00000d5d238a4abeULL} } , // 1/2 * 10^52 = 5 * 10^51 {{0x4750000000000000ULL, 0xf04147a6da2b7f86ULL, 0x000085a36366eb71ULL} } , // 1/2 * 10^53 = 5 * 10^52 {{0xc920000000000000ULL, 0x628ccc8485b2fb3eULL, 0x00053861e2053273ULL} } , // 1/2 * 10^54 = 5 * 10^53 {{0xdb40000000000000ULL, 0xd97ffd2d38fdd073ULL, 0x003433d2d433f881ULL} } , // 1/2 * 10^55 = 5 * 10^54 {{0x9080000000000000ULL, 0x7effe3c439ea2486ULL, 0x020a063c4a07b512ULL} } , // 1/2 * 10^56 = 5 * 10^55 {{0xa500000000000000ULL, 0xf5fee5aa43256d41ULL, 0x14643e5ae44d12b8ULL} } , // 1/2 * 10^57 = 5 * 10^56 {{0x7200000000000000ULL, 0x9bf4f8a69f764490ULL, 0xcbea6f8ceb02bb39ULL} } // 1/2 * 10^58 = 5 * 10^57 }; // bid_midpoint256[i - 59] = 1/2 * 10^i = 5 * 10^(i-1), 59 <= i <= 68 BID_UINT256 bid_midpoint256[] = { // the 64-bit word order is LL, LH, HL, HH {{0x7400000000000000ULL, 0x1791b6823a9eada4ULL, 0xf7285b812e1b5040ULL, 0x0000000000000007ULL} } , // 1/2 * 10^59 = 5 * 10^58 {{0x8800000000000000ULL, 0xebb121164a32c86cULL, 0xa793930bcd112280ULL, 0x000000000000004fULL} } , // 1/2 * 10^60 = 5 * 10^59 {{0x5000000000000000ULL, 0x34eb4adee5fbd43dULL, 0x8bc3be7602ab5909ULL, 0x000000000000031cULL} } , // 1/2 * 10^61 = 5 * 10^60 {{0x2000000000000000ULL, 0x1130ecb4fbd64a65ULL, 0x75a5709c1ab17a5cULL, 0x0000000000001f1dULL} } , // 1/2 * 10^62 = 5 * 10^61 {{0x4000000000000000ULL, 0xabe93f11d65ee7f3ULL, 0x987666190aeec798ULL, 0x0000000000013726ULL} } , // 1/2 * 10^63 = 5 * 10^62 {{0x8000000000000000ULL, 0xb71c76b25fb50f80ULL, 0xf49ffcfa6d53cbf6ULL, 0x00000000000c2781ULL} } , // 1/2 * 10^64 = 5 * 10^63 {{0x0000000000000000ULL, 0x271ca2f7bd129b05ULL, 0x8e3fe1c84545f7a3ULL, 0x0000000000798b13ULL} } , // 1/2 * 10^65 = 5 * 10^64 {{0x0000000000000000ULL, 0x871e5dad62ba0e32ULL, 0x8e7ed1d2b4bbac5fULL, 0x0000000004bf6ec3ULL} } , // 1/2 * 10^66 = 5 * 10^65 {{0x0000000000000000ULL, 0x472fa8c5db448df4ULL, 0x90f4323b0f54bbbbULL, 0x000000002f7a53a3ULL} } , // 1/2 * 10^67 = 5 * 10^66 {{0x0000000000000000ULL, 0xc7dc97ba90ad8b88ULL, 0xa989f64e994f5550ULL, 0x00000001dac74463ULL} } , // 1/2 * 10^68 = 5 * 10^67 {{0x0000000000000000ULL, 0xce9ded49a6c77350ULL, 0x9f639f11fd195527ULL, 0x000000128bc8abe4ULL} } , // 1/2 * 10^69 = 5 * 10^68 {{0x0000000000000000ULL, 0x122b44e083ca8120ULL, 0x39e436b3e2fd538eULL, 0x000000b975d6b6eeULL} } , // 1/2 * 10^70 = 5 * 10^69 {{0x0000000000000000ULL, 0xb5b0b0c525e90b40ULL, 0x42ea2306dde5438cULL, 0x0000073e9a63254eULL} } , // 1/2 * 10^71 = 5 * 10^70 {{0x0000000000000000ULL, 0x18e6e7b37b1a7080ULL, 0x9d255e44aaf4a37fULL, 0x0000487207df750eULL} } , // 1/2 * 10^72 = 5 * 10^71 {{0x0000000000000000ULL, 0xf9050d02cf086500ULL, 0x2375aeaead8e62f6ULL, 0x0002d4744eba9292ULL} } , // 1/2 * 10^73 = 5 * 10^72 {{0x0000000000000000ULL, 0xba32821c1653f200ULL, 0x6298d2d2c78fdda5ULL, 0x001c4c8b1349b9b5ULL} } , // 1/2 * 10^74 = 5 * 10^73 {{0x0000000000000000ULL, 0x45f91518df477400ULL, 0xd9f83c3bcb9ea879ULL, 0x011afd6ec0e14115ULL} } , // 1/2 * 10^75 = 5 * 10^74 {{0x0000000000000000ULL, 0xbbbad2f8b8ca8800ULL, 0x83b25a55f43294bcULL, 0x0b0de65388cc8adaULL} } , // 1/2 * 10^76 = 5 * 10^75 {{0x0000000000000000ULL, 0x554c3db737e95000ULL, 0x24f7875b89f9cf5fULL, 0x6e8aff4357fd6c89ULL} } // 1/2 * 10^77 = 5 * 10^76 }; // bid_ten2k64[i] = 10^i, 0 <= i <= 19 BID_UINT64 bid_ten2k64[] = { 0x0000000000000001ULL, // 10^0 0x000000000000000aULL, // 10^1 0x0000000000000064ULL, // 10^2 0x00000000000003e8ULL, // 10^3 0x0000000000002710ULL, // 10^4 0x00000000000186a0ULL, // 10^5 0x00000000000f4240ULL, // 10^6 0x0000000000989680ULL, // 10^7 0x0000000005f5e100ULL, // 10^8 0x000000003b9aca00ULL, // 10^9 0x00000002540be400ULL, // 10^10 0x000000174876e800ULL, // 10^11 0x000000e8d4a51000ULL, // 10^12 0x000009184e72a000ULL, // 10^13 0x00005af3107a4000ULL, // 10^14 0x00038d7ea4c68000ULL, // 10^15 0x002386f26fc10000ULL, // 10^16 0x016345785d8a0000ULL, // 10^17 0x0de0b6b3a7640000ULL, // 10^18 0x8ac7230489e80000ULL // 10^19 (20 digits) }; // bid_ten2k128[i - 20] = 10^i, 20 <= i <= 38 BID_UINT128 bid_ten2k128[] = { // the 64-bit word order is L, H {{0x6bc75e2d63100000ULL, 0x0000000000000005ULL} } , // 10^20 {{0x35c9adc5dea00000ULL, 0x0000000000000036ULL} } , // 10^21 {{0x19e0c9bab2400000ULL, 0x000000000000021eULL} } , // 10^22 {{0x02c7e14af6800000ULL, 0x000000000000152dULL} } , // 10^23 {{0x1bcecceda1000000ULL, 0x000000000000d3c2ULL} } , // 10^24 {{0x161401484a000000ULL, 0x0000000000084595ULL} } , // 10^25 {{0xdcc80cd2e4000000ULL, 0x000000000052b7d2ULL} } , // 10^26 {{0x9fd0803ce8000000ULL, 0x00000000033b2e3cULL} } , // 10^27 {{0x3e25026110000000ULL, 0x00000000204fce5eULL} } , // 10^28 {{0x6d7217caa0000000ULL, 0x00000001431e0faeULL} } , // 10^29 {{0x4674edea40000000ULL, 0x0000000c9f2c9cd0ULL} } , // 10^30 {{0xc0914b2680000000ULL, 0x0000007e37be2022ULL} } , // 10^31 {{0x85acef8100000000ULL, 0x000004ee2d6d415bULL} } , // 10^32 {{0x38c15b0a00000000ULL, 0x0000314dc6448d93ULL} } , // 10^33 {{0x378d8e6400000000ULL, 0x0001ed09bead87c0ULL} } , // 10^34 {{0x2b878fe800000000ULL, 0x0013426172c74d82ULL} } , // 10^35 {{0xb34b9f1000000000ULL, 0x00c097ce7bc90715ULL} } , // 10^36 {{0x00f436a000000000ULL, 0x0785ee10d5da46d9ULL} } , // 10^37 {{0x098a224000000000ULL, 0x4b3b4ca85a86c47aULL} } // 10^38 (39 digits) }; // might split into ten2k192[] and bid_ten2k256[] // bid_ten2k256[i - 39] = 10^i, 39 <= i <= 68 BID_UINT256 bid_ten2k256[] = { // the 64-bit word order is LL, LH, HL, HH {{0x5f65568000000000ULL, 0xf050fe938943acc4ULL, 0x0000000000000002ULL, 0x0000000000000000ULL} } , // 10^39 {{0xb9f5610000000000ULL, 0x6329f1c35ca4bfabULL, 0x000000000000001dULL, 0x0000000000000000ULL} } , // 10^40 {{0x4395ca0000000000ULL, 0xdfa371a19e6f7cb5ULL, 0x0000000000000125ULL, 0x0000000000000000ULL} } , // 10^41 {{0xa3d9e40000000000ULL, 0xbc627050305adf14ULL, 0x0000000000000b7aULL, 0x0000000000000000ULL} } , // 10^42 {{0x6682e80000000000ULL, 0x5bd86321e38cb6ceULL, 0x00000000000072cbULL, 0x0000000000000000ULL} } , // 10^43 {{0x011d100000000000ULL, 0x9673df52e37f2410ULL, 0x0000000000047bf1ULL, 0x0000000000000000ULL} } , // 10^44 {{0x0b22a00000000000ULL, 0xe086b93ce2f768a0ULL, 0x00000000002cd76fULL, 0x0000000000000000ULL} } , // 10^45 {{0x6f5a400000000000ULL, 0xc5433c60ddaa1640ULL, 0x0000000001c06a5eULL, 0x0000000000000000ULL} } , // 10^46 {{0x5986800000000000ULL, 0xb4a05bc8a8a4de84ULL, 0x00000000118427b3ULL, 0x0000000000000000ULL} } , // 10^47 {{0x7f41000000000000ULL, 0x0e4395d69670b12bULL, 0x00000000af298d05ULL, 0x0000000000000000ULL} } , // 10^48 {{0xf88a000000000000ULL, 0x8ea3da61e066ebb2ULL, 0x00000006d79f8232ULL, 0x0000000000000000ULL} } , // 10^49 {{0xb564000000000000ULL, 0x926687d2c40534fdULL, 0x000000446c3b15f9ULL, 0x0000000000000000ULL} } , // 10^50 {{0x15e8000000000000ULL, 0xb8014e3ba83411e9ULL, 0x000002ac3a4edbbfULL, 0x0000000000000000ULL} } , // 10^51 {{0xdb10000000000000ULL, 0x300d0e549208b31aULL, 0x00001aba4714957dULL, 0x0000000000000000ULL} } , // 10^52 {{0x8ea0000000000000ULL, 0xe0828f4db456ff0cULL, 0x00010b46c6cdd6e3ULL, 0x0000000000000000ULL} } , // 10^53 {{0x9240000000000000ULL, 0xc51999090b65f67dULL, 0x000a70c3c40a64e6ULL, 0x0000000000000000ULL} } , // 10^54 {{0xb680000000000000ULL, 0xb2fffa5a71fba0e7ULL, 0x006867a5a867f103ULL, 0x0000000000000000ULL} } , // 10^55 {{0x2100000000000000ULL, 0xfdffc78873d4490dULL, 0x04140c78940f6a24ULL, 0x0000000000000000ULL} } , // 10^56 {{0x4a00000000000000ULL, 0xebfdcb54864ada83ULL, 0x28c87cb5c89a2571ULL, 0x0000000000000000ULL} } , // 10^57 (58 digits) {{0xe400000000000000ULL, 0x37e9f14d3eec8920ULL, 0x97d4df19d6057673ULL, 0x0000000000000001ULL} } , // 10^58 {{0xe800000000000000ULL, 0x2f236d04753d5b48ULL, 0xee50b7025c36a080ULL, 0x000000000000000fULL} } , // 10^59 {{0x1000000000000000ULL, 0xd762422c946590d9ULL, 0x4f2726179a224501ULL, 0x000000000000009fULL} } , // 10^60 {{0xa000000000000000ULL, 0x69d695bdcbf7a87aULL, 0x17877cec0556b212ULL, 0x0000000000000639ULL} } , // 10^61 {{0x4000000000000000ULL, 0x2261d969f7ac94caULL, 0xeb4ae1383562f4b8ULL, 0x0000000000003e3aULL} } , // 10^62 {{0x8000000000000000ULL, 0x57d27e23acbdcfe6ULL, 0x30eccc3215dd8f31ULL, 0x0000000000026e4dULL} } , // 10^63 {{0x0000000000000000ULL, 0x6e38ed64bf6a1f01ULL, 0xe93ff9f4daa797edULL, 0x0000000000184f03ULL} } , // 10^64 {{0x0000000000000000ULL, 0x4e3945ef7a25360aULL, 0x1c7fc3908a8bef46ULL, 0x0000000000f31627ULL} } , // 10^65 {{0x0000000000000000ULL, 0x0e3cbb5ac5741c64ULL, 0x1cfda3a5697758bfULL, 0x00000000097edd87ULL} } , // 10^66 {{0x0000000000000000ULL, 0x8e5f518bb6891be8ULL, 0x21e864761ea97776ULL, 0x000000005ef4a747ULL} } , // 10^67 {{0x0000000000000000ULL, 0x8fb92f75215b1710ULL, 0x5313ec9d329eaaa1ULL, 0x00000003b58e88c7ULL} } , // 10^68 {{0x0000000000000000ULL, 0x9d3bda934d8ee6a0ULL, 0x3ec73e23fa32aa4fULL, 0x00000025179157c9ULL} } , // 10^69 {{0x0000000000000000ULL, 0x245689c107950240ULL, 0x73c86d67c5faa71cULL, 0x00000172ebad6ddcULL} } , // 10^70 {{0x0000000000000000ULL, 0x6b61618a4bd21680ULL, 0x85d4460dbbca8719ULL, 0x00000e7d34c64a9cULL} } , // 10^71 {{0x0000000000000000ULL, 0x31cdcf66f634e100ULL, 0x3a4abc8955e946feULL, 0x000090e40fbeea1dULL} } , // 10^72 {{0x0000000000000000ULL, 0xf20a1a059e10ca00ULL, 0x46eb5d5d5b1cc5edULL, 0x0005a8e89d752524ULL} } , // 10^73 {{0x0000000000000000ULL, 0x746504382ca7e400ULL, 0xc531a5a58f1fbb4bULL, 0x003899162693736aULL} } , // 10^74 {{0x0000000000000000ULL, 0x8bf22a31be8ee800ULL, 0xb3f07877973d50f2ULL, 0x0235fadd81c2822bULL} } , // 10^75 {{0x0000000000000000ULL, 0x7775a5f171951000ULL, 0x0764b4abe8652979ULL, 0x161bcca7119915b5ULL} } , // 10^76 {{0x0000000000000000ULL, 0xaa987b6e6fd2a000ULL, 0x49ef0eb713f39ebeULL, 0xdd15fe86affad912ULL} } // 10^77 }; // bid_ten2mk128[k - 1] = 10^(-k) * 2^exp (k), where 1 <= k <= 34 and // exp (k) = bid_shiftright128[k - 1] + 128 BID_UINT128 bid_ten2mk128[] = { {{0x999999999999999aULL, 0x1999999999999999ULL} } , // 10^(-1) * 2^128 {{0x28f5c28f5c28f5c3ULL, 0x028f5c28f5c28f5cULL} } , // 10^(-2) * 2^128 {{0x9db22d0e56041894ULL, 0x004189374bc6a7efULL} } , // 10^(-3) * 2^128 {{0x4af4f0d844d013aaULL, 0x00346dc5d6388659ULL} } , // 10^(-4) * 2^131 {{0x08c3f3e0370cdc88ULL, 0x0029f16b11c6d1e1ULL} } , // 10^(-5) * 2^134 {{0x6d698fe69270b06dULL, 0x00218def416bdb1aULL} } , // 10^(-6) * 2^137 {{0xaf0f4ca41d811a47ULL, 0x0035afe535795e90ULL} } , // 10^(-7) * 2^141 {{0xbf3f70834acdaea0ULL, 0x002af31dc4611873ULL} } , // 10^(-8) * 2^144 {{0x65cc5a02a23e254dULL, 0x00225c17d04dad29ULL} } , // 10^(-9) * 2^147 {{0x6fad5cd10396a214ULL, 0x0036f9bfb3af7b75ULL} } , // 10^(-10) * 2^151 {{0xbfbde3da69454e76ULL, 0x002bfaffc2f2c92aULL} } , // 10^(-11) * 2^154 {{0x32fe4fe1edd10b92ULL, 0x00232f33025bd422ULL} } , // 10^(-12) * 2^157 {{0x84ca19697c81ac1cULL, 0x00384b84d092ed03ULL} } , // 10^(-13) * 2^161 {{0x03d4e1213067bce4ULL, 0x002d09370d425736ULL} } , // 10^(-14) * 2^164 {{0x3643e74dc052fd83ULL, 0x0024075f3dceac2bULL} } , // 10^(-15) * 2^167 {{0x56d30baf9a1e626bULL, 0x0039a5652fb11378ULL} } , // 10^(-16) * 2^171 {{0x12426fbfae7eb522ULL, 0x002e1dea8c8da92dULL} } , // 10^(-17) * 2^174 {{0x41cebfcc8b9890e8ULL, 0x0024e4bba3a48757ULL} } , // 10^(-18) * 2^177 {{0x694acc7a78f41b0dULL, 0x003b07929f6da558ULL} } , // 10^(-19) * 2^181 {{0xbaa23d2ec729af3eULL, 0x002f394219248446ULL} } , // 10^(-20) * 2^184 {{0xfbb4fdbf05baf298ULL, 0x0025c768141d369eULL} } , // 10^(-21) * 2^187 {{0x2c54c931a2c4b759ULL, 0x003c7240202ebdcbULL} } , // 10^(-22) * 2^191 {{0x89dd6dc14f03c5e1ULL, 0x00305b66802564a2ULL} } , // 10^(-23) * 2^194 {{0xd4b1249aa59c9e4eULL, 0x0026af8533511d4eULL} } , // 10^(-24) * 2^197 {{0x544ea0f76f60fd49ULL, 0x003de5a1ebb4fbb1ULL} } , // 10^(-25) * 2^201 {{0x76a54d92bf80caa1ULL, 0x00318481895d9627ULL} } , // 10^(-26) * 2^204 {{0x921dd7a89933d54eULL, 0x00279d346de4781fULL} } , // 10^(-27) * 2^207 {{0x8362f2a75b862215ULL, 0x003f61ed7ca0c032ULL} } , // 10^(-28) * 2^211 {{0xcf825bb91604e811ULL, 0x0032b4bdfd4d668eULL} } , // 10^(-29) * 2^214 {{0x0c684960de6a5341ULL, 0x00289097fdd7853fULL} } , // 10^(-30) * 2^217 {{0x3d203ab3e521dc34ULL, 0x002073accb12d0ffULL} } , // 10^(-31) * 2^220 {{0x2e99f7863b696053ULL, 0x0033ec47ab514e65ULL} } , // 10^(-32) * 2^224 {{0x587b2c6b62bab376ULL, 0x002989d2ef743eb7ULL} } , // 10^(-33) * 2^227 {{0xad2f56bc4efbc2c5ULL, 0x00213b0f25f69892ULL} } , // 10^(-34) * 2^230 }; // bid_shiftright128[] contains the right shift count to obtain C2* from the top // 128 bits of the 128x128-bit product C2 * Kx int bid_shiftright128[] = { 0, // 128 - 128 0, // 128 - 128 0, // 128 - 128 3, // 131 - 128 6, // 134 - 128 9, // 137 - 128 13, // 141 - 128 16, // 144 - 128 19, // 147 - 128 23, // 151 - 128 26, // 154 - 128 29, // 157 - 128 33, // 161 - 128 36, // 164 - 128 39, // 167 - 128 43, // 171 - 128 46, // 174 - 128 49, // 177 - 128 53, // 181 - 128 56, // 184 - 128 59, // 187 - 128 63, // 191 - 128 66, // 194 - 128 69, // 197 - 128 73, // 201 - 128 76, // 204 - 128 79, // 207 - 128 83, // 211 - 128 86, // 214 - 128 89, // 217 - 128 92, // 220 - 128 96, // 224 - 128 99, // 227 - 128 102 // 230 - 128 }; // bid_maskhigh128[] contains the mask to apply to the top 128 bits of the // 128x128-bit product in order to obtain the high bits of f2* // the 64-bit word order is L, H BID_UINT64 bid_maskhigh128[] = { 0x0000000000000000ULL, // 0 = 128 - 128 bits 0x0000000000000000ULL, // 0 = 128 - 128 bits 0x0000000000000000ULL, // 0 = 128 - 128 bits 0x0000000000000007ULL, // 3 = 131 - 128 bits 0x000000000000003fULL, // 6 = 134 - 128 bits 0x00000000000001ffULL, // 9 = 137 - 128 bits 0x0000000000001fffULL, // 13 = 141 - 128 bits 0x000000000000ffffULL, // 16 = 144 - 128 bits 0x000000000007ffffULL, // 19 = 147 - 128 bits 0x00000000007fffffULL, // 23 = 151 - 128 bits 0x0000000003ffffffULL, // 26 = 154 - 128 bits 0x000000001fffffffULL, // 29 = 157 - 128 bits 0x00000001ffffffffULL, // 33 = 161 - 128 bits 0x0000000fffffffffULL, // 36 = 164 - 128 bits 0x0000007fffffffffULL, // 39 = 167 - 128 bits 0x000007ffffffffffULL, // 43 = 171 - 128 bits 0x00003fffffffffffULL, // 46 = 174 - 128 bits 0x0001ffffffffffffULL, // 49 = 177 - 128 bits 0x001fffffffffffffULL, // 53 = 181 - 128 bits 0x00ffffffffffffffULL, // 56 = 184 - 128 bits 0x07ffffffffffffffULL, // 59 = 187 - 128 bits 0x7fffffffffffffffULL, // 63 = 191 - 128 bits 0x0000000000000003ULL, // 2 = 194 - 192 bits 0x000000000000001fULL, // 5 = 197 - 192 bits 0x00000000000001ffULL, // 9 = 201 - 192 bits 0x0000000000000fffULL, // 12 = 204 - 192 bits 0x0000000000007fffULL, // 15 = 207 - 192 bits 0x000000000007ffffULL, // 21 = 211 - 192 bits 0x00000000003fffffULL, // 22 = 214 - 192 bits 0x0000000001ffffffULL, // 25 = 217 - 192 bits 0x000000000fffffffULL, // 28 = 220 - 192 bits 0x00000000ffffffffULL, // 32 = 224 - 192 bits 0x00000007ffffffffULL, // 35 = 227 - 192 bits 0x0000003fffffffffULL // 38 = 230 - 192 bits }; // bid_onehalf128[] contains the high bits of 1/2 positioned correctly for // comparison with the high bits of f2* // the 64-bit word order is L, H BID_UINT64 bid_onehalf128[] = { 0x0000000000000000ULL, // 0 bits 0x0000000000000000ULL, // 0 bits 0x0000000000000000ULL, // 0 bits 0x0000000000000004ULL, // 3 bits 0x0000000000000020ULL, // 6 bits 0x0000000000000100ULL, // 9 bits 0x0000000000001000ULL, // 13 bits 0x0000000000008000ULL, // 16 bits 0x0000000000040000ULL, // 19 bits 0x0000000000400000ULL, // 23 bits 0x0000000002000000ULL, // 26 bits 0x0000000010000000ULL, // 29 bits 0x0000000100000000ULL, // 33 bits 0x0000000800000000ULL, // 36 bits 0x0000004000000000ULL, // 39 bits 0x0000040000000000ULL, // 43 bits 0x0000200000000000ULL, // 46 bits 0x0001000000000000ULL, // 49 bits 0x0010000000000000ULL, // 53 bits 0x0080000000000000ULL, // 56 bits 0x0400000000000000ULL, // 59 bits 0x4000000000000000ULL, // 63 bits 0x0000000000000002ULL, // 66 bits 0x0000000000000010ULL, // 69 bits 0x0000000000000100ULL, // 73 bits 0x0000000000000800ULL, // 76 bits 0x0000000000004000ULL, // 79 bits 0x0000000000040000ULL, // 83 bits 0x0000000000200000ULL, // 86 bits 0x0000000001000000ULL, // 89 bits 0x0000000008000000ULL, // 92 bits 0x0000000080000000ULL, // 96 bits 0x0000000400000000ULL, // 99 bits 0x0000002000000000ULL // 102 bits }; BID_UINT64 bid_ten2mk64[] = { 0x199999999999999aULL, // 10^(-1) * 2^ 64 0x028f5c28f5c28f5dULL, // 10^(-2) * 2^ 64 0x004189374bc6a7f0ULL, // 10^(-3) * 2^ 64 0x00346dc5d638865aULL, // 10^(-4) * 2^ 67 0x0029f16b11c6d1e2ULL, // 10^(-5) * 2^ 70 0x00218def416bdb1bULL, // 10^(-6) * 2^ 73 0x0035afe535795e91ULL, // 10^(-7) * 2^ 77 0x002af31dc4611874ULL, // 10^(-8) * 2^ 80 0x00225c17d04dad2aULL, // 10^(-9) * 2^ 83 0x0036f9bfb3af7b76ULL, // 10^(-10) * 2^ 87 0x002bfaffc2f2c92bULL, // 10^(-11) * 2^ 90 0x00232f33025bd423ULL, // 10^(-12) * 2^ 93 0x00384b84d092ed04ULL, // 10^(-13) * 2^ 97 0x002d09370d425737ULL, // 10^(-14) * 2^100 0x0024075f3dceac2cULL, // 10^(-15) * 2^103 0x0039a5652fb11379ULL, // 10^(-16) * 2^107 }; // bid_ten2mk128trunc[] contains T*, the top Ex >= 128 bits of 10^(-k), // for 1 <= k <= 34 // the 64-bit word order is L, H BID_UINT128 bid_ten2mk128trunc[] = { {{0x9999999999999999ULL, 0x1999999999999999ULL}}, // 10^(-1) * 2^128 {{0x28f5c28f5c28f5c2ULL, 0x028f5c28f5c28f5cULL}}, // 10^(-2) * 2^128 {{0x9db22d0e56041893ULL, 0x004189374bc6a7efULL}}, // 10^(-3) * 2^128 {{0x4af4f0d844d013a9ULL, 0x00346dc5d6388659ULL}}, // 10^(-4) * 2^131 {{0x08c3f3e0370cdc87ULL, 0x0029f16b11c6d1e1ULL}}, // 10^(-5) * 2^134 {{0x6d698fe69270b06cULL, 0x00218def416bdb1aULL}}, // 10^(-6) * 2^137 {{0xaf0f4ca41d811a46ULL, 0x0035afe535795e90ULL}}, // 10^(-7) * 2^141 {{0xbf3f70834acdae9fULL, 0x002af31dc4611873ULL}}, // 10^(-8) * 2^144 {{0x65cc5a02a23e254cULL, 0x00225c17d04dad29ULL}}, // 10^(-9) * 2^147 {{0x6fad5cd10396a213ULL, 0x0036f9bfb3af7b75ULL}}, // 10^(-10) * 2^151 {{0xbfbde3da69454e75ULL, 0x002bfaffc2f2c92aULL}}, // 10^(-11) * 2^154 {{0x32fe4fe1edd10b91ULL, 0x00232f33025bd422ULL}}, // 10^(-12) * 2^157 {{0x84ca19697c81ac1bULL, 0x00384b84d092ed03ULL}}, // 10^(-13) * 2^161 {{0x03d4e1213067bce3ULL, 0x002d09370d425736ULL}}, // 10^(-14) * 2^164 {{0x3643e74dc052fd82ULL, 0x0024075f3dceac2bULL}}, // 10^(-15) * 2^167 {{0x56d30baf9a1e626aULL, 0x0039a5652fb11378ULL}}, // 10^(-16) * 2^171 {{0x12426fbfae7eb521ULL, 0x002e1dea8c8da92dULL}}, // 10^(-17) * 2^174 {{0x41cebfcc8b9890e7ULL, 0x0024e4bba3a48757ULL}}, // 10^(-18) * 2^177 {{0x694acc7a78f41b0cULL, 0x003b07929f6da558ULL}}, // 10^(-19) * 2^181 {{0xbaa23d2ec729af3dULL, 0x002f394219248446ULL}}, // 10^(-20) * 2^184 {{0xfbb4fdbf05baf297ULL, 0x0025c768141d369eULL}}, // 10^(-21) * 2^187 {{0x2c54c931a2c4b758ULL, 0x003c7240202ebdcbULL}}, // 10^(-22) * 2^191 {{0x89dd6dc14f03c5e0ULL, 0x00305b66802564a2ULL}}, // 10^(-23) * 2^194 {{0xd4b1249aa59c9e4dULL, 0x0026af8533511d4eULL}}, // 10^(-24) * 2^197 {{0x544ea0f76f60fd48ULL, 0x003de5a1ebb4fbb1ULL}}, // 10^(-25) * 2^201 {{0x76a54d92bf80caa0ULL, 0x00318481895d9627ULL}}, // 10^(-26) * 2^204 {{0x921dd7a89933d54dULL, 0x00279d346de4781fULL}}, // 10^(-27) * 2^207 {{0x8362f2a75b862214ULL, 0x003f61ed7ca0c032ULL}}, // 10^(-28) * 2^211 {{0xcf825bb91604e810ULL, 0x0032b4bdfd4d668eULL}}, // 10^(-29) * 2^214 {{0x0c684960de6a5340ULL, 0x00289097fdd7853fULL}}, // 10^(-30) * 2^217 {{0x3d203ab3e521dc33ULL, 0x002073accb12d0ffULL}}, // 10^(-31) * 2^220 {{0x2e99f7863b696052ULL, 0x0033ec47ab514e65ULL}}, // 10^(-32) * 2^224 {{0x587b2c6b62bab375ULL, 0x002989d2ef743eb7ULL}}, // 10^(-33) * 2^227 {{0xad2f56bc4efbc2c4ULL, 0x00213b0f25f69892ULL}}, // 10^(-34) * 2^230 }; // bid_ten2mk128M[k - 1] = 10^(-k) * 2^exp (k), where 1 <= k <= 4 and // exp (k) = bid_shiftright128[k - 1] + 128 // the 64-bit word order is L, H BID_UINT128 bid_ten2mk128M[] = { {{0xcccccccccccccccdULL, 0xccccccccccccccccULL}}, // 10^(-1) * 2^131 {{0x3d70a3d70a3d70a4ULL, 0xa3d70a3d70a3d70aULL}}, // 10^(-2) * 2^134 {{0x645a1cac083126eaULL, 0x83126e978d4fdf3bULL}}, // 10^(-3) * 2^137 {{0xd3c36113404ea4a9ULL, 0xd1b71758e219652bULL}} // 10^(-4) * 2^141 }; // bid_ten2mk128truncM[] contains T*, the top Ex >= 128 bits of 10^(-k), // for 1 <= k <= 4; the top bits which are 0 are not represented // the 64-bit word order is L, H BID_UINT128 bid_ten2mk128truncM[] = { {{0xccccccccccccccccULL, 0xccccccccccccccccULL}}, // 10^(-1) * 2^131 {{0x3d70a3d70a3d70a3ULL, 0xa3d70a3d70a3d70aULL}}, // 10^(-2) * 2^134 {{0x645a1cac083126e9ULL, 0x83126e978d4fdf3bULL}}, // 10^(-3) * 2^137 {{0xd3c36113404ea4a8ULL, 0xd1b71758e219652bULL}} // 10^(-4) * 2^141 }; // bid_shiftright128M[] contains the right shift count to obtain C2* from the top // 128 bits of the 128x128-bit product C2 * Kx int bid_shiftright128M[] = { 3, // 131 - 128 6, // 134 - 128 9, // 137 - 128 13 // 141 - 128 }; // bid_maskhigh128M[] contains the mask to apply to the top 128 bits of the // 128x128-bit product in order to obtain the high bits of f* // the high 64 bits of the mask are 0, so only the low 64 bits are represented BID_UINT64 bid_maskhigh128M[] = { 0x0000000000000007ULL, // 3 = 131 - 128 bits 0x000000000000003fULL, // 6 = 134 - 128 bits 0x00000000000001ffULL, // 9 = 137 - 128 bits 0x0000000000001fffULL // 13 = 141 - 128 bits }; // bid_onehalf128M[] contains 1/2 positioned correctly for // comparison with the high bits of f* // the high 64 bits are 0, so only the low 64 bits are represented BID_UINT64 bid_onehalf128M[] = { 0x0000000000000004ULL, // 3 bits 0x0000000000000020ULL, // 6 bits 0x0000000000000100ULL, // 9 bits 0x0000000000001000ULL // 13 bits }; // bid_ten2mk192M[k - 1] = 10^(-k-4) * 2^exp (k), where 1 <= k <= 19 and // exp (k) = bid_shiftright128[k - 1] + 128 // the 64-bit word order is L, M, H BID_UINT192 bid_ten2mk192M[] = { {{0xcddd6e04c0592104ULL, 0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}}, // 10^(-5) * 2^208 {{0xd7e45803cd141a6aULL, 0xa63f9a49c2c1b10fULL, 0x8637bd05af6c69b5ULL}}, // 10^(-6) * 2^211 {{0x8ca08cd2e1b9c3dcULL, 0x3d32907604691b4cULL, 0xd6bf94d5e57a42bcULL}}, // 10^(-7) * 2^215 {{0x3d4d3d758161697dULL, 0xfdc20d2b36ba7c3dULL, 0xabcc77118461cefcULL}}, // 10^(-8) * 2^218 {{0xfdd7645e011abacaULL, 0x31680a88f8953030ULL, 0x89705f4136b4a597ULL}}, // 10^(-9) * 2^221 {{0x2fbf06fcce912addULL, 0xb573440e5a884d1bULL, 0xdbe6fecebdedd5beULL}}, // 10^(-10) * 2^225 {{0xf2ff38ca3eda88b1ULL, 0xf78f69a51539d748ULL, 0xafebff0bcb24aafeULL}}, // 10^(-11) * 2^228 {{0xf598fa3b657ba08eULL, 0xf93f87b7442e45d3ULL, 0x8cbccc096f5088cbULL}}, // 10^(-12) * 2^231 {{0x88f4c3923bf900e3ULL, 0x2865a5f206b06fb9ULL, 0xe12e13424bb40e13ULL}}, // 10^(-13) * 2^235 {{0x6d909c74fcc733e9ULL, 0x538484c19ef38c94ULL, 0xb424dc35095cd80fULL}}, // 10^(-14) * 2^238 {{0x57a6e390ca38f654ULL, 0x0f9d37014bf60a10ULL, 0x901d7cf73ab0acd9ULL}}, // 10^(-15) * 2^241 {{0xbf716c1add27f086ULL, 0x4c2ebe687989a9b3ULL, 0xe69594bec44de15bULL}}, // 10^(-16) * 2^245 {{0xff8df0157db98d38ULL, 0x09befeb9fad487c2ULL, 0xb877aa3236a4b449ULL}}, // 10^(-17) * 2^248 {{0x32d7f344649470faULL, 0x3aff322e62439fcfULL, 0x9392ee8e921d5d07ULL}}, // 10^(-18) * 2^251 {{0x1e2652070753e7f5ULL, 0x2b31e9e3d06c32e5ULL, 0xec1e4a7db69561a5ULL}}, // 10^(-19) * 2^255 {{0x181ea8059f76532bULL, 0x88f4bb1ca6bcf584ULL, 0xbce5086492111aeaULL}}, // 10^(-20) * 2^258 {{0x467eecd14c5ea8efULL, 0xd3f6fc16ebca5e03ULL, 0x971da05074da7beeULL}}, // 10^(-21) * 2^261 {{0x70cb148213caa7e5ULL, 0x5324c68b12dd6338ULL, 0xf1c90080baf72cb1ULL}}, // 10^(-22) * 2^265 {{0x8d6f439b43088651ULL, 0x75b7053c0f178293ULL, 0xc16d9a0095928a27ULL}} // 10^(-23) * 2^268 }; // bid_ten2mk192truncM[] contains T*, the top Ex >= 192 bits of 10^(-k), // for 5 <= k <= 23; the top bits which are 0 are not represented // the 64-bit word order is L, M, H BID_UINT192 bid_ten2mk192truncM[] = { {{0xcddd6e04c0592103ULL, 0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}}, // 10^(-5) * 2^208 {{0xd7e45803cd141a69ULL, 0xa63f9a49c2c1b10fULL, 0x8637bd05af6c69b5ULL}}, // 10^(-6) * 2^211 {{0x8ca08cd2e1b9c3dbULL, 0x3d32907604691b4cULL, 0xd6bf94d5e57a42bcULL}}, // 10^(-7) * 2^215 {{0x3d4d3d758161697cULL, 0xfdc20d2b36ba7c3dULL, 0xabcc77118461cefcULL}}, // 10^(-8) * 2^218 {{0xfdd7645e011abac9ULL, 0x31680a88f8953030ULL, 0x89705f4136b4a597ULL}}, // 10^(-9) * 2^221 {{0x2fbf06fcce912adcULL, 0xb573440e5a884d1bULL, 0xdbe6fecebdedd5beULL}}, // 10^(-10) * 2^225 {{0xf2ff38ca3eda88b0ULL, 0xf78f69a51539d748ULL, 0xafebff0bcb24aafeULL}}, // 10^(-11) * 2^228 {{0xf598fa3b657ba08dULL, 0xf93f87b7442e45d3ULL, 0x8cbccc096f5088cbULL}}, // 10^(-12) * 2^231 {{0x88f4c3923bf900e2ULL, 0x2865a5f206b06fb9ULL, 0xe12e13424bb40e13ULL}}, // 10^(-13) * 2^235 {{0x6d909c74fcc733e8ULL, 0x538484c19ef38c94ULL, 0xb424dc35095cd80fULL}}, // 10^(-14) * 2^238 {{0x57a6e390ca38f653ULL, 0x0f9d37014bf60a10ULL, 0x901d7cf73ab0acd9ULL}}, // 10^(-15) * 2^241 {{0xbf716c1add27f085ULL, 0x4c2ebe687989a9b3ULL, 0xe69594bec44de15bULL}}, // 10^(-16) * 2^245 {{0xff8df0157db98d37ULL, 0x09befeb9fad487c2ULL, 0xb877aa3236a4b449ULL}}, // 10^(-17) * 2^248 {{0x32d7f344649470f9ULL, 0x3aff322e62439fcfULL, 0x9392ee8e921d5d07ULL}}, // 10^(-18) * 2^251 {{0x1e2652070753e7f4ULL, 0x2b31e9e3d06c32e5ULL, 0xec1e4a7db69561a5ULL}}, // 10^(-19) * 2^255 {{0x181ea8059f76532aULL, 0x88f4bb1ca6bcf584ULL, 0xbce5086492111aeaULL}}, // 10^(-20) * 2^258 {{0x467eecd14c5ea8eeULL, 0xd3f6fc16ebca5e03ULL, 0x971da05074da7beeULL}}, // 10^(-21) * 2^261 {{0x70cb148213caa7e4ULL, 0x5324c68b12dd6338ULL, 0xf1c90080baf72cb1ULL}}, // 10^(-22) * 2^265 {{0x8d6f439b43088650ULL, 0x75b7053c0f178293ULL, 0xc16d9a0095928a27ULL}} // 10^(-23) * 2^268 }; // bid_shiftright192M[] contains the right shift count to obtain C2* from the top // 192 bits of the 192x192-bit product C2 * Kx if 0 <= ind <= 14 where ind is // the index in the table, or from the top 128 bits if 15 <= ind <= 18 int bid_shiftright192M[] = { 16, // 208 - 192 19, // 211 - 192 23, // 215 - 192 26, // 218 - 192 29, // 221 - 192 33, // 225 - 192 36, // 228 - 192 39, // 231 - 192 43, // 235 - 192 46, // 238 - 192 49, // 241 - 192 53, // 245 - 192 56, // 248 - 192 59, // 251 - 192 63, // 255 - 192 2, // 258 - 256 5, // 261 - 256 9, // 265 - 256 12 // 268 - 256 }; // bid_maskhigh192M[] contains the mask to apply to the top 192 bits of the // 192x192-bit product in order to obtain the high bits of f* // if 0 <= ind <= 14 where ind is the index in the table, then the high 128 bits // of the 384-bit mask are 0; if 15 <= ind <= 18 then the high 64 bits are 0 BID_UINT64 bid_maskhigh192M[] = { 0x000000000000ffffULL, // 16 = 208 - 192 bits 0x000000000007ffffULL, // 19 = 211 - 192 bits 0x00000000007fffffULL, // 23 = 215 - 192 bits 0x0000000003ffffffULL, // 26 = 218 - 192 bits 0x000000001fffffffULL, // 29 = 221 - 192 bits 0x00000001ffffffffULL, // 33 = 225 - 192 bits 0x0000000fffffffffULL, // 36 = 228 - 192 bits 0x0000007fffffffffULL, // 39 = 231 - 192 bits 0x000007ffffffffffULL, // 43 = 235 - 192 bits 0x00003fffffffffffULL, // 46 = 238 - 192 bits 0x0001ffffffffffffULL, // 49 = 241 - 192 bits 0x001fffffffffffffULL, // 53 = 245 - 192 bits 0x00ffffffffffffffULL, // 56 = 248 - 192 bits 0x07ffffffffffffffULL, // 59 = 251 - 192 bits 0x7fffffffffffffffULL, // 63 = 255 - 192 bits 0x0000000000000003ULL, // 2 = 258 - 256 bits 0x000000000000001fULL, // 5 = 261 - 256 bits 0x00000000000001ffULL, // 9 = 265 - 256 bits 0x0000000000000fffULL // 12 = 268 - 256 bits }; // bid_onehalf192M[] contains 1/2 positioned correctly for // comparison with the high bits of f* // if 0 <= ind <= 14 where ind is the index in the table, then the high 128 bits // of the 384-bit mask are 0; if 15 <= ind <= 18 then the high 648 bits are 0 BID_UINT64 bid_onehalf192M[] = { 0x0000000000008000ULL, // 16 = 208 - 192 bits 0x0000000000040000ULL, // 19 = 211 - 192 bits 0x0000000000400000ULL, // 23 = 215 - 192 bits 0x0000000002000000ULL, // 26 = 218 - 192 bits 0x0000000010000000ULL, // 29 = 221 - 192 bits 0x0000000100000000ULL, // 33 = 225 - 192 bits 0x0000000800000000ULL, // 36 = 228 - 192 bits 0x0000004000000000ULL, // 39 = 231 - 192 bits 0x0000040000000000ULL, // 43 = 235 - 192 bits 0x0000200000000000ULL, // 46 = 238 - 192 bits 0x0001000000000000ULL, // 49 = 241 - 192 bits 0x0010000000000000ULL, // 53 = 245 - 192 bits 0x0080000000000000ULL, // 56 = 248 - 192 bits 0x0400000000000000ULL, // 59 = 251 - 192 bits 0x4000000000000000ULL, // 63 = 255 - 192 bits 0x0000000000000002ULL, // 2 = 258 - 256 bits 0x0000000000000010ULL, // 5 = 261 - 256 bits 0x0000000000000100ULL, // 9 = 265 - 256 bits 0x0000000000000800ULL // 12 = 268 - 256 bits }; // bid_ten2mk256M[k - 1] = 10^(-k-23) * 2^exp (k), where 1 <= k <= 11 and // exp (k) = bid_shiftright128[k - 1] + 128 BID_UINT256 bid_ten2mk256M[] = { // the 64-bit word order is LL, LH, HL, HH {{0xf23472530ce6e3edULL, 0xd78c3615cf3a050cULL, 0xc4926a9672793542ULL, 0x9abe14cd44753b52ULL}}, // 10^(-24) * 2^335 {{0xe9ed83b814a49fe1ULL, 0x8c1389bc7ec33b47ULL, 0x3a83ddbd83f52204ULL, 0xf79687aed3eec551ULL}}, // 10^(-25) * 2^339 {{0x87f1362cdd507fe7ULL, 0x3cdc6e306568fc39ULL, 0x95364afe032a819dULL, 0xc612062576589ddaULL}}, // 10^(-26) * 2^342 {{0x9ff42b5717739986ULL, 0xca49f1c05120c9c7ULL, 0x775ea264cf55347dULL, 0x9e74d1b791e07e48ULL}}, // 10^(-27) * 2^345 {{0xccb9def1bf1f5c09ULL, 0x76dcb60081ce0fa5ULL, 0x8bca9d6e188853fcULL, 0xfd87b5f28300ca0dULL}}, // 10^(-28) * 2^349 {{0xa3c7e58e327f7cd4ULL, 0x5f16f80067d80c84ULL, 0x096ee45813a04330ULL, 0xcad2f7f5359a3b3eULL}}, // 10^(-29) * 2^352 {{0xb6398471c1ff9710ULL, 0x18df2ccd1fe00a03ULL, 0xa1258379a94d028dULL, 0xa2425ff75e14fc31ULL}}, // 10^(-30) * 2^355 {{0xf82e038e34cc78daULL, 0x4718f0a419800802ULL, 0x80eacf948770ced7ULL, 0x81ceb32c4b43fcf4ULL}}, // 10^(-31) * 2^358 {{0x59e338e387ad8e29ULL, 0x0b5b1aa028ccd99eULL, 0x67de18eda5814af2ULL, 0xcfb11ead453994baULL}}, // 10^(-32) * 2^362 {{0x47e8fa4f9fbe0b54ULL, 0x6f7c154ced70ae18ULL, 0xecb1ad8aeacdd58eULL, 0xa6274bbdd0fadd61ULL}}, // 10^(-33) * 2^365 {{0xd320c83fb2fe6f76ULL, 0xbf967770bdf3be79ULL, 0xbd5af13bef0b113eULL, 0x84ec3c97da624ab4ULL}} // 10^(-34) * 2^368 }; // bid_ten2mk256truncM[] contains T*, the top Ex >= 256 bits of 10^(-k), // for 24 <= k <= 34; the top bits which are 0 are not represented BID_UINT256 bid_ten2mk256truncM[] = { // the 64-bit word order is LL, LH, HL, HH {{0xf23472530ce6e3ecULL, 0xd78c3615cf3a050cULL, 0xc4926a9672793542ULL, 0x9abe14cd44753b52ULL}}, // 10^(-24) * 2^335 {{0xe9ed83b814a49fe0ULL, 0x8c1389bc7ec33b47ULL, 0x3a83ddbd83f52204ULL, 0xf79687aed3eec551ULL}}, // 10^(-25) * 2^339 {{0x87f1362cdd507fe6ULL, 0x3cdc6e306568fc39ULL, 0x95364afe032a819dULL, 0xc612062576589ddaULL}}, // 10^(-26) * 2^342 {{0x775ea264cf55347cULL, 0x9ff42b5717739986ULL, 0xca49f1c05120c9c7ULL, 0x9e74d1b791e07e48ULL}}, // 10^(-27) * 2^345 {{0xccb9def1bf1f5c08ULL, 0x76dcb60081ce0fa5ULL, 0x8bca9d6e188853fcULL, 0xfd87b5f28300ca0dULL}}, // 10^(-28) * 2^349 {{0xa3c7e58e327f7cd3ULL, 0x5f16f80067d80c84ULL, 0x096ee45813a04330ULL, 0xcad2f7f5359a3b3eULL}}, // 10^(-29) * 2^352 {{0xb6398471c1ff970fULL, 0x18df2ccd1fe00a03ULL, 0xa1258379a94d028dULL, 0xa2425ff75e14fc31ULL}}, // 10^(-30) * 2^355 {{0xf82e038e34cc78d9ULL, 0x4718f0a419800802ULL, 0x80eacf948770ced7ULL, 0x81ceb32c4b43fcf4ULL}}, // 10^(-31) * 2^358 {{0x59e338e387ad8e28ULL, 0x0b5b1aa028ccd99eULL, 0x67de18eda5814af2ULL, 0xcfb11ead453994baULL}}, // 10^(-32) * 2^362 {{0x47e8fa4f9fbe0b53ULL, 0x6f7c154ced70ae18ULL, 0xecb1ad8aeacdd58eULL, 0xa6274bbdd0fadd61ULL}}, // 10^(-33) * 2^365 {{0xd320c83fb2fe6f75ULL, 0xbf967770bdf3be79ULL, 0xbd5af13bef0b113eULL, 0x84ec3c97da624ab4ULL}} // 10^(-34) * 2^368 }; // bid_shiftright256M[] contains the right shift count to obtain C2* from the top // 192 bits of the 256x256-bit product C2 * Kx int bid_shiftright256M[] = { 15, // 335 - 320 19, // 339 - 320 22, // 342 - 320 25, // 345 - 320 29, // 349 - 320 32, // 352 - 320 // careful of 32-bit machines! 35, // 355 - 320 38, // 358 - 320 42, // 362 - 320 45, // 365 - 320 48 // 368 - 320 }; // bid_maskhigh256M[] contains the mask to apply to the top 192 bits of the // 256x256-bit product in order to obtain the high bits of f* BID_UINT64 bid_maskhigh256M[] = { 0x0000000000007fffULL, // 15 = 335 - 320 bits 0x000000000007ffffULL, // 19 = 339 - 320 bits 0x00000000003fffffULL, // 22 = 342 - 320 bits 0x0000000001ffffffULL, // 25 = 345 - 320 bits 0x000000001fffffffULL, // 29 = 349 - 320 bits 0x00000000ffffffffULL, // 32 = 352 - 320 bits 0x00000007ffffffffULL, // 35 = 355 - 320 bits 0x0000003fffffffffULL, // 38 = 358 - 320 bits 0x000003ffffffffffULL, // 42 = 362 - 320 bits 0x00001fffffffffffULL, // 45 = 365 - 320 bits 0x0000ffffffffffffULL // 48 = 368 - 320 bits }; // bid_onehalf256M[] contains 1/2 positioned correctly for comparison with the // high bits of f*; the high 128 bits of the 512-bit mask are 0 BID_UINT64 bid_onehalf256M[] = { 0x0000000000004000ULL, // 15 = 335 - 320 bits 0x0000000000040000ULL, // 19 = 339 - 320 bits 0x0000000000200000ULL, // 22 = 342 - 320 bits 0x0000000001000000ULL, // 25 = 345 - 320 bits 0x0000000010000000ULL, // 29 = 349 - 320 bits 0x0000000080000000ULL, // 32 = 352 - 320 bits 0x0000000400000000ULL, // 35 = 355 - 320 bits 0x0000002000000000ULL, // 38 = 358 - 320 bits 0x0000020000000000ULL, // 42 = 362 - 320 bits 0x0000100000000000ULL, // 45 = 365 - 320 bits 0x0000800000000000ULL // 48 = 368 - 320 bits }; // bid_char_table2[] is used to convert n to string, where 10 <= n <= 99 unsigned char bid_char_table2[180] = { '1', '0', '1', '1', '1', '2', '1', '3', '1', '4', '1', '5', '1', '6', '1', '7', '1', '8', '1', '9', '2', '0', '2', '1', '2', '2', '2', '3', '2', '4', '2', '5', '2', '6', '2', '7', '2', '8', '2', '9', '3', '0', '3', '1', '3', '2', '3', '3', '3', '4', '3', '5', '3', '6', '3', '7', '3', '8', '3', '9', '4', '0', '4', '1', '4', '2', '4', '3', '4', '4', '4', '5', '4', '6', '4', '7', '4', '8', '4', '9', '5', '0', '5', '1', '5', '2', '5', '3', '5', '4', '5', '5', '5', '6', '5', '7', '5', '8', '5', '9', '6', '0', '6', '1', '6', '2', '6', '3', '6', '4', '6', '5', '6', '6', '6', '7', '6', '8', '6', '9', '7', '0', '7', '1', '7', '2', '7', '3', '7', '4', '7', '5', '7', '6', '7', '7', '7', '8', '7', '9', '8', '0', '8', '1', '8', '2', '8', '3', '8', '4', '8', '5', '8', '6', '8', '7', '8', '8', '8', '9', '9', '0', '9', '1', '9', '2', '9', '3', '9', '4', '9', '5', '9', '6', '9', '7', '9', '8', '9', '9' }; // bid_char_table3[] is used to convert n to string, where 000 <= n <= 999 unsigned char bid_char_table3[3000] = { '0', '0', '0', '0', '0', '1', '0', '0', '2', '0', '0', '3', '0', '0', '4', '0', '0', '5', '0', '0', '6', '0', '0', '7', '0', '0', '8', '0', '0', '9', '0', '1', '0', '0', '1', '1', '0', '1', '2', '0', '1', '3', '0', '1', '4', '0', '1', '5', '0', '1', '6', '0', '1', '7', '0', '1', '8', '0', '1', '9', '0', '2', '0', '0', '2', '1', '0', '2', '2', '0', '2', '3', '0', '2', '4', '0', '2', '5', '0', '2', '6', '0', '2', '7', '0', '2', '8', '0', '2', '9', '0', '3', '0', '0', '3', '1', '0', '3', '2', '0', '3', '3', '0', '3', '4', '0', '3', '5', '0', '3', '6', '0', '3', '7', '0', '3', '8', '0', '3', '9', '0', '4', '0', '0', '4', '1', '0', '4', '2', '0', '4', '3', '0', '4', '4', '0', '4', '5', '0', '4', '6', '0', '4', '7', '0', '4', '8', '0', '4', '9', '0', '5', '0', '0', '5', '1', '0', '5', '2', '0', '5', '3', '0', '5', '4', '0', '5', '5', '0', '5', '6', '0', '5', '7', '0', '5', '8', '0', '5', '9', '0', '6', '0', '0', '6', '1', '0', '6', '2', '0', '6', '3', '0', '6', '4', '0', '6', '5', '0', '6', '6', '0', '6', '7', '0', '6', '8', '0', '6', '9', '0', '7', '0', '0', '7', '1', '0', '7', '2', '0', '7', '3', '0', '7', '4', '0', '7', '5', '0', '7', '6', '0', '7', '7', '0', '7', '8', '0', '7', '9', '0', '8', '0', '0', '8', '1', '0', '8', '2', '0', '8', '3', '0', '8', '4', '0', '8', '5', '0', '8', '6', '0', '8', '7', '0', '8', '8', '0', '8', '9', '0', '9', '0', '0', '9', '1', '0', '9', '2', '0', '9', '3', '0', '9', '4', '0', '9', '5', '0', '9', '6', '0', '9', '7', '0', '9', '8', '0', '9', '9', '1', '0', '0', '1', '0', '1', '1', '0', '2', '1', '0', '3', '1', '0', '4', '1', '0', '5', '1', '0', '6', '1', '0', '7', '1', '0', '8', '1', '0', '9', '1', '1', '0', '1', '1', '1', '1', '1', '2', '1', '1', '3', '1', '1', '4', '1', '1', '5', '1', '1', '6', '1', '1', '7', '1', '1', '8', '1', '1', '9', '1', '2', '0', '1', '2', '1', '1', '2', '2', '1', '2', '3', '1', '2', '4', '1', '2', '5', '1', '2', '6', '1', '2', '7', '1', '2', '8', '1', '2', '9', '1', '3', '0', '1', '3', '1', '1', '3', '2', '1', '3', '3', '1', '3', '4', '1', '3', '5', '1', '3', '6', '1', '3', '7', '1', '3', '8', '1', '3', '9', '1', '4', '0', '1', '4', '1', '1', '4', '2', '1', '4', '3', '1', '4', '4', '1', '4', '5', '1', '4', '6', '1', '4', '7', '1', '4', '8', '1', '4', '9', '1', '5', '0', '1', '5', '1', '1', '5', '2', '1', '5', '3', '1', '5', '4', '1', '5', '5', '1', '5', '6', '1', '5', '7', '1', '5', '8', '1', '5', '9', '1', '6', '0', '1', '6', '1', '1', '6', '2', '1', '6', '3', '1', '6', '4', '1', '6', '5', '1', '6', '6', '1', '6', '7', '1', '6', '8', '1', '6', '9', '1', '7', '0', '1', '7', '1', '1', '7', '2', '1', '7', '3', '1', '7', '4', '1', '7', '5', '1', '7', '6', '1', '7', '7', '1', '7', '8', '1', '7', '9', '1', '8', '0', '1', '8', '1', '1', '8', '2', '1', '8', '3', '1', '8', '4', '1', '8', '5', '1', '8', '6', '1', '8', '7', '1', '8', '8', '1', '8', '9', '1', '9', '0', '1', '9', '1', '1', '9', '2', '1', '9', '3', '1', '9', '4', '1', '9', '5', '1', '9', '6', '1', '9', '7', '1', '9', '8', '1', '9', '9', '2', '0', '0', '2', '0', '1', '2', '0', '2', '2', '0', '3', '2', '0', '4', '2', '0', '5', '2', '0', '6', '2', '0', '7', '2', '0', '8', '2', '0', '9', '2', '1', '0', '2', '1', '1', '2', '1', '2', '2', '1', '3', '2', '1', '4', '2', '1', '5', '2', '1', '6', '2', '1', '7', '2', '1', '8', '2', '1', '9', '2', '2', '0', '2', '2', '1', '2', '2', '2', '2', '2', '3', '2', '2', '4', '2', '2', '5', '2', '2', '6', '2', '2', '7', '2', '2', '8', '2', '2', '9', '2', '3', '0', '2', '3', '1', '2', '3', '2', '2', '3', '3', '2', '3', '4', '2', '3', '5', '2', '3', '6', '2', '3', '7', '2', '3', '8', '2', '3', '9', '2', '4', '0', '2', '4', '1', '2', '4', '2', '2', '4', '3', '2', '4', '4', '2', '4', '5', '2', '4', '6', '2', '4', '7', '2', '4', '8', '2', '4', '9', '2', '5', '0', '2', '5', '1', '2', '5', '2', '2', '5', '3', '2', '5', '4', '2', '5', '5', '2', '5', '6', '2', '5', '7', '2', '5', '8', '2', '5', '9', '2', '6', '0', '2', '6', '1', '2', '6', '2', '2', '6', '3', '2', '6', '4', '2', '6', '5', '2', '6', '6', '2', '6', '7', '2', '6', '8', '2', '6', '9', '2', '7', '0', '2', '7', '1', '2', '7', '2', '2', '7', '3', '2', '7', '4', '2', '7', '5', '2', '7', '6', '2', '7', '7', '2', '7', '8', '2', '7', '9', '2', '8', '0', '2', '8', '1', '2', '8', '2', '2', '8', '3', '2', '8', '4', '2', '8', '5', '2', '8', '6', '2', '8', '7', '2', '8', '8', '2', '8', '9', '2', '9', '0', '2', '9', '1', '2', '9', '2', '2', '9', '3', '2', '9', '4', '2', '9', '5', '2', '9', '6', '2', '9', '7', '2', '9', '8', '2', '9', '9', '3', '0', '0', '3', '0', '1', '3', '0', '2', '3', '0', '3', '3', '0', '4', '3', '0', '5', '3', '0', '6', '3', '0', '7', '3', '0', '8', '3', '0', '9', '3', '1', '0', '3', '1', '1', '3', '1', '2', '3', '1', '3', '3', '1', '4', '3', '1', '5', '3', '1', '6', '3', '1', '7', '3', '1', '8', '3', '1', '9', '3', '2', '0', '3', '2', '1', '3', '2', '2', '3', '2', '3', '3', '2', '4', '3', '2', '5', '3', '2', '6', '3', '2', '7', '3', '2', '8', '3', '2', '9', '3', '3', '0', '3', '3', '1', '3', '3', '2', '3', '3', '3', '3', '3', '4', '3', '3', '5', '3', '3', '6', '3', '3', '7', '3', '3', '8', '3', '3', '9', '3', '4', '0', '3', '4', '1', '3', '4', '2', '3', '4', '3', '3', '4', '4', '3', '4', '5', '3', '4', '6', '3', '4', '7', '3', '4', '8', '3', '4', '9', '3', '5', '0', '3', '5', '1', '3', '5', '2', '3', '5', '3', '3', '5', '4', '3', '5', '5', '3', '5', '6', '3', '5', '7', '3', '5', '8', '3', '5', '9', '3', '6', '0', '3', '6', '1', '3', '6', '2', '3', '6', '3', '3', '6', '4', '3', '6', '5', '3', '6', '6', '3', '6', '7', '3', '6', '8', '3', '6', '9', '3', '7', '0', '3', '7', '1', '3', '7', '2', '3', '7', '3', '3', '7', '4', '3', '7', '5', '3', '7', '6', '3', '7', '7', '3', '7', '8', '3', '7', '9', '3', '8', '0', '3', '8', '1', '3', '8', '2', '3', '8', '3', '3', '8', '4', '3', '8', '5', '3', '8', '6', '3', '8', '7', '3', '8', '8', '3', '8', '9', '3', '9', '0', '3', '9', '1', '3', '9', '2', '3', '9', '3', '3', '9', '4', '3', '9', '5', '3', '9', '6', '3', '9', '7', '3', '9', '8', '3', '9', '9', '4', '0', '0', '4', '0', '1', '4', '0', '2', '4', '0', '3', '4', '0', '4', '4', '0', '5', '4', '0', '6', '4', '0', '7', '4', '0', '8', '4', '0', '9', '4', '1', '0', '4', '1', '1', '4', '1', '2', '4', '1', '3', '4', '1', '4', '4', '1', '5', '4', '1', '6', '4', '1', '7', '4', '1', '8', '4', '1', '9', '4', '2', '0', '4', '2', '1', '4', '2', '2', '4', '2', '3', '4', '2', '4', '4', '2', '5', '4', '2', '6', '4', '2', '7', '4', '2', '8', '4', '2', '9', '4', '3', '0', '4', '3', '1', '4', '3', '2', '4', '3', '3', '4', '3', '4', '4', '3', '5', '4', '3', '6', '4', '3', '7', '4', '3', '8', '4', '3', '9', '4', '4', '0', '4', '4', '1', '4', '4', '2', '4', '4', '3', '4', '4', '4', '4', '4', '5', '4', '4', '6', '4', '4', '7', '4', '4', '8', '4', '4', '9', '4', '5', '0', '4', '5', '1', '4', '5', '2', '4', '5', '3', '4', '5', '4', '4', '5', '5', '4', '5', '6', '4', '5', '7', '4', '5', '8', '4', '5', '9', '4', '6', '0', '4', '6', '1', '4', '6', '2', '4', '6', '3', '4', '6', '4', '4', '6', '5', '4', '6', '6', '4', '6', '7', '4', '6', '8', '4', '6', '9', '4', '7', '0', '4', '7', '1', '4', '7', '2', '4', '7', '3', '4', '7', '4', '4', '7', '5', '4', '7', '6', '4', '7', '7', '4', '7', '8', '4', '7', '9', '4', '8', '0', '4', '8', '1', '4', '8', '2', '4', '8', '3', '4', '8', '4', '4', '8', '5', '4', '8', '6', '4', '8', '7', '4', '8', '8', '4', '8', '9', '4', '9', '0', '4', '9', '1', '4', '9', '2', '4', '9', '3', '4', '9', '4', '4', '9', '5', '4', '9', '6', '4', '9', '7', '4', '9', '8', '4', '9', '9', '5', '0', '0', '5', '0', '1', '5', '0', '2', '5', '0', '3', '5', '0', '4', '5', '0', '5', '5', '0', '6', '5', '0', '7', '5', '0', '8', '5', '0', '9', '5', '1', '0', '5', '1', '1', '5', '1', '2', '5', '1', '3', '5', '1', '4', '5', '1', '5', '5', '1', '6', '5', '1', '7', '5', '1', '8', '5', '1', '9', '5', '2', '0', '5', '2', '1', '5', '2', '2', '5', '2', '3', '5', '2', '4', '5', '2', '5', '5', '2', '6', '5', '2', '7', '5', '2', '8', '5', '2', '9', '5', '3', '0', '5', '3', '1', '5', '3', '2', '5', '3', '3', '5', '3', '4', '5', '3', '5', '5', '3', '6', '5', '3', '7', '5', '3', '8', '5', '3', '9', '5', '4', '0', '5', '4', '1', '5', '4', '2', '5', '4', '3', '5', '4', '4', '5', '4', '5', '5', '4', '6', '5', '4', '7', '5', '4', '8', '5', '4', '9', '5', '5', '0', '5', '5', '1', '5', '5', '2', '5', '5', '3', '5', '5', '4', '5', '5', '5', '5', '5', '6', '5', '5', '7', '5', '5', '8', '5', '5', '9', '5', '6', '0', '5', '6', '1', '5', '6', '2', '5', '6', '3', '5', '6', '4', '5', '6', '5', '5', '6', '6', '5', '6', '7', '5', '6', '8', '5', '6', '9', '5', '7', '0', '5', '7', '1', '5', '7', '2', '5', '7', '3', '5', '7', '4', '5', '7', '5', '5', '7', '6', '5', '7', '7', '5', '7', '8', '5', '7', '9', '5', '8', '0', '5', '8', '1', '5', '8', '2', '5', '8', '3', '5', '8', '4', '5', '8', '5', '5', '8', '6', '5', '8', '7', '5', '8', '8', '5', '8', '9', '5', '9', '0', '5', '9', '1', '5', '9', '2', '5', '9', '3', '5', '9', '4', '5', '9', '5', '5', '9', '6', '5', '9', '7', '5', '9', '8', '5', '9', '9', '6', '0', '0', '6', '0', '1', '6', '0', '2', '6', '0', '3', '6', '0', '4', '6', '0', '5', '6', '0', '6', '6', '0', '7', '6', '0', '8', '6', '0', '9', '6', '1', '0', '6', '1', '1', '6', '1', '2', '6', '1', '3', '6', '1', '4', '6', '1', '5', '6', '1', '6', '6', '1', '7', '6', '1', '8', '6', '1', '9', '6', '2', '0', '6', '2', '1', '6', '2', '2', '6', '2', '3', '6', '2', '4', '6', '2', '5', '6', '2', '6', '6', '2', '7', '6', '2', '8', '6', '2', '9', '6', '3', '0', '6', '3', '1', '6', '3', '2', '6', '3', '3', '6', '3', '4', '6', '3', '5', '6', '3', '6', '6', '3', '7', '6', '3', '8', '6', '3', '9', '6', '4', '0', '6', '4', '1', '6', '4', '2', '6', '4', '3', '6', '4', '4', '6', '4', '5', '6', '4', '6', '6', '4', '7', '6', '4', '8', '6', '4', '9', '6', '5', '0', '6', '5', '1', '6', '5', '2', '6', '5', '3', '6', '5', '4', '6', '5', '5', '6', '5', '6', '6', '5', '7', '6', '5', '8', '6', '5', '9', '6', '6', '0', '6', '6', '1', '6', '6', '2', '6', '6', '3', '6', '6', '4', '6', '6', '5', '6', '6', '6', '6', '6', '7', '6', '6', '8', '6', '6', '9', '6', '7', '0', '6', '7', '1', '6', '7', '2', '6', '7', '3', '6', '7', '4', '6', '7', '5', '6', '7', '6', '6', '7', '7', '6', '7', '8', '6', '7', '9', '6', '8', '0', '6', '8', '1', '6', '8', '2', '6', '8', '3', '6', '8', '4', '6', '8', '5', '6', '8', '6', '6', '8', '7', '6', '8', '8', '6', '8', '9', '6', '9', '0', '6', '9', '1', '6', '9', '2', '6', '9', '3', '6', '9', '4', '6', '9', '5', '6', '9', '6', '6', '9', '7', '6', '9', '8', '6', '9', '9', '7', '0', '0', '7', '0', '1', '7', '0', '2', '7', '0', '3', '7', '0', '4', '7', '0', '5', '7', '0', '6', '7', '0', '7', '7', '0', '8', '7', '0', '9', '7', '1', '0', '7', '1', '1', '7', '1', '2', '7', '1', '3', '7', '1', '4', '7', '1', '5', '7', '1', '6', '7', '1', '7', '7', '1', '8', '7', '1', '9', '7', '2', '0', '7', '2', '1', '7', '2', '2', '7', '2', '3', '7', '2', '4', '7', '2', '5', '7', '2', '6', '7', '2', '7', '7', '2', '8', '7', '2', '9', '7', '3', '0', '7', '3', '1', '7', '3', '2', '7', '3', '3', '7', '3', '4', '7', '3', '5', '7', '3', '6', '7', '3', '7', '7', '3', '8', '7', '3', '9', '7', '4', '0', '7', '4', '1', '7', '4', '2', '7', '4', '3', '7', '4', '4', '7', '4', '5', '7', '4', '6', '7', '4', '7', '7', '4', '8', '7', '4', '9', '7', '5', '0', '7', '5', '1', '7', '5', '2', '7', '5', '3', '7', '5', '4', '7', '5', '5', '7', '5', '6', '7', '5', '7', '7', '5', '8', '7', '5', '9', '7', '6', '0', '7', '6', '1', '7', '6', '2', '7', '6', '3', '7', '6', '4', '7', '6', '5', '7', '6', '6', '7', '6', '7', '7', '6', '8', '7', '6', '9', '7', '7', '0', '7', '7', '1', '7', '7', '2', '7', '7', '3', '7', '7', '4', '7', '7', '5', '7', '7', '6', '7', '7', '7', '7', '7', '8', '7', '7', '9', '7', '8', '0', '7', '8', '1', '7', '8', '2', '7', '8', '3', '7', '8', '4', '7', '8', '5', '7', '8', '6', '7', '8', '7', '7', '8', '8', '7', '8', '9', '7', '9', '0', '7', '9', '1', '7', '9', '2', '7', '9', '3', '7', '9', '4', '7', '9', '5', '7', '9', '6', '7', '9', '7', '7', '9', '8', '7', '9', '9', '8', '0', '0', '8', '0', '1', '8', '0', '2', '8', '0', '3', '8', '0', '4', '8', '0', '5', '8', '0', '6', '8', '0', '7', '8', '0', '8', '8', '0', '9', '8', '1', '0', '8', '1', '1', '8', '1', '2', '8', '1', '3', '8', '1', '4', '8', '1', '5', '8', '1', '6', '8', '1', '7', '8', '1', '8', '8', '1', '9', '8', '2', '0', '8', '2', '1', '8', '2', '2', '8', '2', '3', '8', '2', '4', '8', '2', '5', '8', '2', '6', '8', '2', '7', '8', '2', '8', '8', '2', '9', '8', '3', '0', '8', '3', '1', '8', '3', '2', '8', '3', '3', '8', '3', '4', '8', '3', '5', '8', '3', '6', '8', '3', '7', '8', '3', '8', '8', '3', '9', '8', '4', '0', '8', '4', '1', '8', '4', '2', '8', '4', '3', '8', '4', '4', '8', '4', '5', '8', '4', '6', '8', '4', '7', '8', '4', '8', '8', '4', '9', '8', '5', '0', '8', '5', '1', '8', '5', '2', '8', '5', '3', '8', '5', '4', '8', '5', '5', '8', '5', '6', '8', '5', '7', '8', '5', '8', '8', '5', '9', '8', '6', '0', '8', '6', '1', '8', '6', '2', '8', '6', '3', '8', '6', '4', '8', '6', '5', '8', '6', '6', '8', '6', '7', '8', '6', '8', '8', '6', '9', '8', '7', '0', '8', '7', '1', '8', '7', '2', '8', '7', '3', '8', '7', '4', '8', '7', '5', '8', '7', '6', '8', '7', '7', '8', '7', '8', '8', '7', '9', '8', '8', '0', '8', '8', '1', '8', '8', '2', '8', '8', '3', '8', '8', '4', '8', '8', '5', '8', '8', '6', '8', '8', '7', '8', '8', '8', '8', '8', '9', '8', '9', '0', '8', '9', '1', '8', '9', '2', '8', '9', '3', '8', '9', '4', '8', '9', '5', '8', '9', '6', '8', '9', '7', '8', '9', '8', '8', '9', '9', '9', '0', '0', '9', '0', '1', '9', '0', '2', '9', '0', '3', '9', '0', '4', '9', '0', '5', '9', '0', '6', '9', '0', '7', '9', '0', '8', '9', '0', '9', '9', '1', '0', '9', '1', '1', '9', '1', '2', '9', '1', '3', '9', '1', '4', '9', '1', '5', '9', '1', '6', '9', '1', '7', '9', '1', '8', '9', '1', '9', '9', '2', '0', '9', '2', '1', '9', '2', '2', '9', '2', '3', '9', '2', '4', '9', '2', '5', '9', '2', '6', '9', '2', '7', '9', '2', '8', '9', '2', '9', '9', '3', '0', '9', '3', '1', '9', '3', '2', '9', '3', '3', '9', '3', '4', '9', '3', '5', '9', '3', '6', '9', '3', '7', '9', '3', '8', '9', '3', '9', '9', '4', '0', '9', '4', '1', '9', '4', '2', '9', '4', '3', '9', '4', '4', '9', '4', '5', '9', '4', '6', '9', '4', '7', '9', '4', '8', '9', '4', '9', '9', '5', '0', '9', '5', '1', '9', '5', '2', '9', '5', '3', '9', '5', '4', '9', '5', '5', '9', '5', '6', '9', '5', '7', '9', '5', '8', '9', '5', '9', '9', '6', '0', '9', '6', '1', '9', '6', '2', '9', '6', '3', '9', '6', '4', '9', '6', '5', '9', '6', '6', '9', '6', '7', '9', '6', '8', '9', '6', '9', '9', '7', '0', '9', '7', '1', '9', '7', '2', '9', '7', '3', '9', '7', '4', '9', '7', '5', '9', '7', '6', '9', '7', '7', '9', '7', '8', '9', '7', '9', '9', '8', '0', '9', '8', '1', '9', '8', '2', '9', '8', '3', '9', '8', '4', '9', '8', '5', '9', '8', '6', '9', '8', '7', '9', '8', '8', '9', '8', '9', '9', '9', '0', '9', '9', '1', '9', '9', '2', '9', '9', '3', '9', '9', '4', '9', '9', '5', '9', '9', '6', '9', '9', '7', '9', '9', '8', '9', '9', '9' }; // bid_ten2m3k64[], bid_shift_ten2m3k64[] used for conversion from BID128 to string BID_UINT64 bid_ten2m3k64[] = { 0x4189374bc6a7ef9eull, // 4189374bc6a7ef9e * 2^-72 = (10^-3)RP,63 0x10c6f7a0b5ed8d37ull, // 10c6f7a0b5ed8d37 * 2^-80 = (10^-6)RP,61 0x44b82fa09b5a52ccull, // 44b82fa09b5a52cc * 2^-92 = (10^-9)RP,63 0x119799812dea111aull, // 119799812dea111a * 2^-100 = (10^-12)RP,61 0x480ebe7b9d58566dull // 480ebe7b9d58566d * 2^-112 = (10^-15)RP,63 }; unsigned int bid_shift_ten2m3k64[] = { 8, // 72 - 64 16, // 80 - 64 28, // 92 - 64 36, // 100 - 64 48 // 112 - 64 }; BID_UINT128 bid_ten2m3k128[] = { {{0xb22d0e5604189375ull, 0x4189374bc6a7ef9dull}}, // 4189374bc6a7ef9d b22d0e5604189375 * 2^-136 = (10^-3)RP,127 {{0xb4c7f34938583622ull, 0x10c6f7a0b5ed8d36ull}}, // 10c6f7a0b5ed8d36 b4c7f34938583622 * 2^-144 = (10^-6)RP,125 {{0x98b405447c4a9819ull, 0x44b82fa09b5a52cbull}}, // 44b82fa09b5a52cb 98b405447c4a9819 * 2^-156 = (10^-9)RP,127 {{0x7f27f0f6e885c8bbull, 0x119799812dea1119ull}}, // 119799812dea1119 7f27f0f6e885c8bb * 2^-164 = (10^-12)RP,125 {{0x87ce9b80a5fb0509ull, 0x480ebe7b9d58566cull}}, // 480ebe7b9d58566c 87ce9b80a5fb0509 * 2^-176 = (10^-15)RP,127 {{0xe75fe645cc4873faull, 0x12725dd1d243aba0ull}}, // 12725dd1d243aba0 e75fe645cc4873fa * 2^-184 = (10^-18)RP,125 {{0x69fb7e0b75e52f02ull, 0x4b8ed0283a6d3df7ull}}, // 4b8ed0283a6d3df7 69fb7e0b75e52f02 * 2^-196 = (10^-21)RP,127 {{0x58924d52ce4f26a9ull, 0x1357c299a88ea76aull}}, // 1357c299a88ea76a 58924d52ce4f26a9 * 2^-204 = (10^-24)RP,125 {{0x3baf513267aa9a3full, 0x4f3a68dbc8f03f24ull}}, // 4f3a68dbc8f03f24 3baf513267aa9a3f * 2^-216 = (10^-27)RP,127 {{0x3424b06f3529a052ull, 0x14484bfeebc29f86ull}}, // 14484bfeebc29f86 3424b06f3529a052 * 2^-224 = (10^-30)RP,125 {{0xf658d6c57566eac8ull, 0x5313a5dee87d6eb0ull}} // 5313a5dee87d6eb0 f658d6c57566eac8 * 2^-236 = (10^-33)RP,127 }; unsigned int bid_shift_ten2m3k128[] = { 8, // 136 - 128 16, // 144 - 128 28, // 156 - 128 36, // 164 - 128 48, // 176 - 128 56, // 184 - 128 4, // 196 - 192 12, // 204 - 192 24, // 216 - 192 32, // 224 - 192 44 // 236 - 192 }; /*************************************************************************** *************** TABLES FOR GENERAL ROUNDING FUNCTIONS ********************* ***************************************************************************/ // Note: not all entries in these tables will be used with IEEE 754 decimal // floating-point arithmetic // a) In round128_2_18() numbers with 2 <= q <= 18 will be rounded only // for 1 <= x <= 3: // x = 1 or x = 2 when q = 17 // x = 2 or x = 3 when q = 18 // b) In bid_round128_19_38() numbers with 19 <= q <= 38 will be rounded only // for 1 <= x <= 23: // x = 3 or x = 4 when q = 19 // x = 4 or x = 5 when q = 20 // ... // x = 18 or x = 19 when q = 34 // x = 1 or x = 2 or x = 19 or x = 20 when q = 35 // x = 2 or x = 3 or x = 20 or x = 21 when q = 36 // x = 3 or x = 4 or x = 21 or x = 22 when q = 37 // x = 4 or x = 5 or x = 22 or x = 23 when q = 38 // c) ... // However, for generality and possible uses outside the frame of IEEE 754 // this implementation includes table values for all x in [1, q - 1] // Note: 64-bit tables generated with ten2mx64.ma; output in ten2mx64.out // Kx from 10^(-x) ~= Kx * 2^(-Ex); Kx rounded up to 64 bits, 1 <= x <= 17 BID_UINT64 bid_Kx64[] = { 0xcccccccccccccccdULL, // 10^-1 ~= cccccccccccccccd * 2^-67 0xa3d70a3d70a3d70bULL, // 10^-2 ~= a3d70a3d70a3d70b * 2^-70 0x83126e978d4fdf3cULL, // 10^-3 ~= 83126e978d4fdf3c * 2^-73 0xd1b71758e219652cULL, // 10^-4 ~= d1b71758e219652c * 2^-77 0xa7c5ac471b478424ULL, // 10^-5 ~= a7c5ac471b478424 * 2^-80 0x8637bd05af6c69b6ULL, // 10^-6 ~= 8637bd05af6c69b6 * 2^-83 0xd6bf94d5e57a42bdULL, // 10^-7 ~= d6bf94d5e57a42bd * 2^-87 0xabcc77118461cefdULL, // 10^-8 ~= abcc77118461cefd * 2^-90 0x89705f4136b4a598ULL, // 10^-9 ~= 89705f4136b4a598 * 2^-93 0xdbe6fecebdedd5bfULL, // 10^-10 ~= dbe6fecebdedd5bf * 2^-97 0xafebff0bcb24aaffULL, // 10^-11 ~= afebff0bcb24aaff * 2^-100 0x8cbccc096f5088ccULL, // 10^-12 ~= 8cbccc096f5088cc * 2^-103 0xe12e13424bb40e14ULL, // 10^-13 ~= e12e13424bb40e14 * 2^-107 0xb424dc35095cd810ULL, // 10^-14 ~= b424dc35095cd810 * 2^-110 0x901d7cf73ab0acdaULL, // 10^-15 ~= 901d7cf73ab0acda * 2^-113 0xe69594bec44de15cULL, // 10^-16 ~= e69594bec44de15c * 2^-117 0xb877aa3236a4b44aULL // 10^-17 ~= b877aa3236a4b44a * 2^-120 }; // Ex-64 from 10^(-x) ~= Kx * 2^(-Ex); Kx rounded up to 64 bits, 1 <= x <= 17 unsigned int bid_Ex64m64[] = { 3, // 67 - 64, Ex = 67 6, // 70 - 64, Ex = 70 9, // 73 - 64, Ex = 73 13, // 77 - 64, Ex = 77 16, // 80 - 64, Ex = 80 19, // 83 - 64, Ex = 83 23, // 87 - 64, Ex = 87 26, // 90 - 64, Ex = 90 29, // 93 - 64, Ex = 93 33, // 97 - 64, Ex = 97 36, // 100 - 64, Ex = 100 39, // 103 - 64, Ex = 103 43, // 107 - 64, Ex = 107 46, // 110 - 64, Ex = 110 49, // 113 - 64, Ex = 113 53, // 117 - 64, Ex = 117 56 // 120 - 64, Ex = 120 }; // Values of 1/2 in the right position to be compared with the fraction from // C * kx, 1 <= x <= 17; the fraction consists of the low Ex bits in C * kx // (these values are aligned with the high 64 bits of the fraction) BID_UINT64 bid_half64[] = { 0x0000000000000004ULL, // half / 2^64 = 4 0x0000000000000020ULL, // half / 2^64 = 20 0x0000000000000100ULL, // half / 2^64 = 100 0x0000000000001000ULL, // half / 2^64 = 1000 0x0000000000008000ULL, // half / 2^64 = 8000 0x0000000000040000ULL, // half / 2^64 = 40000 0x0000000000400000ULL, // half / 2^64 = 400000 0x0000000002000000ULL, // half / 2^64 = 2000000 0x0000000010000000ULL, // half / 2^64 = 10000000 0x0000000100000000ULL, // half / 2^64 = 100000000 0x0000000800000000ULL, // half / 2^64 = 800000000 0x0000004000000000ULL, // half / 2^64 = 4000000000 0x0000040000000000ULL, // half / 2^64 = 40000000000 0x0000200000000000ULL, // half / 2^64 = 200000000000 0x0001000000000000ULL, // half / 2^64 = 1000000000000 0x0010000000000000ULL, // half / 2^64 = 10000000000000 0x0080000000000000ULL // half / 2^64 = 80000000000000 }; // Values of mask in the right position to obtain the high Ex - 64 bits // of the fraction from C * kx, 1 <= x <= 17; the fraction consists of // the low Ex bits in C * kx BID_UINT64 bid_mask64[] = { 0x0000000000000007ULL, // mask / 2^64 0x000000000000003fULL, // mask / 2^64 0x00000000000001ffULL, // mask / 2^64 0x0000000000001fffULL, // mask / 2^64 0x000000000000ffffULL, // mask / 2^64 0x000000000007ffffULL, // mask / 2^64 0x00000000007fffffULL, // mask / 2^64 0x0000000003ffffffULL, // mask / 2^64 0x000000001fffffffULL, // mask / 2^64 0x00000001ffffffffULL, // mask / 2^64 0x0000000fffffffffULL, // mask / 2^64 0x0000007fffffffffULL, // mask / 2^64 0x000007ffffffffffULL, // mask / 2^64 0x00003fffffffffffULL, // mask / 2^64 0x0001ffffffffffffULL, // mask / 2^64 0x001fffffffffffffULL, // mask / 2^64 0x00ffffffffffffffULL // mask / 2^64 }; // Values of 10^(-x) trancated to Ex bits beyond the binary point, and // in the right position to be compared with the fraction from C * kx, // 1 <= x <= 17; the fraction consists of the low Ex bits in C * kx // (these values are aligned with the low 64 bits of the fraction) BID_UINT64 bid_ten2mxtrunc64[] = { 0xccccccccccccccccULL, // (ten2mx >> 64) = cccccccccccccccc 0xa3d70a3d70a3d70aULL, // (ten2mx >> 64) = a3d70a3d70a3d70a 0x83126e978d4fdf3bULL, // (ten2mx >> 64) = 83126e978d4fdf3b 0xd1b71758e219652bULL, // (ten2mx >> 64) = d1b71758e219652b 0xa7c5ac471b478423ULL, // (ten2mx >> 64) = a7c5ac471b478423 0x8637bd05af6c69b5ULL, // (ten2mx >> 64) = 8637bd05af6c69b5 0xd6bf94d5e57a42bcULL, // (ten2mx >> 64) = d6bf94d5e57a42bc 0xabcc77118461cefcULL, // (ten2mx >> 64) = abcc77118461cefc 0x89705f4136b4a597ULL, // (ten2mx >> 64) = 89705f4136b4a597 0xdbe6fecebdedd5beULL, // (ten2mx >> 64) = dbe6fecebdedd5be 0xafebff0bcb24aafeULL, // (ten2mx >> 64) = afebff0bcb24aafe 0x8cbccc096f5088cbULL, // (ten2mx >> 64) = 8cbccc096f5088cb 0xe12e13424bb40e13ULL, // (ten2mx >> 64) = e12e13424bb40e13 0xb424dc35095cd80fULL, // (ten2mx >> 64) = b424dc35095cd80f 0x901d7cf73ab0acd9ULL, // (ten2mx >> 64) = 901d7cf73ab0acd9 0xe69594bec44de15bULL, // (ten2mx >> 64) = e69594bec44de15b 0xb877aa3236a4b449ULL // (ten2mx >> 64) = b877aa3236a4b449 }; // Note: 128-bit tables generated with ten2mx128.ma; output in ten2mx128.out // The order of the 64-bit components is L, H // Kx from 10^(-x) ~= Kx * 2^(-Ex); Kx rounded up to 128 bits, 1 <= x <= 37 BID_UINT128 bid_Kx128[] = { {{0xcccccccccccccccdULL, 0xccccccccccccccccULL}}, // 10^-1 ~= cccccccccccccccccccccccccccccccd * 2^-131 {{0x3d70a3d70a3d70a4ULL, 0xa3d70a3d70a3d70aULL}}, // 10^-2 ~= a3d70a3d70a3d70a3d70a3d70a3d70a4 * 2^-134 {{0x645a1cac083126eaULL, 0x83126e978d4fdf3bULL}}, // 10^-3 ~= 83126e978d4fdf3b645a1cac083126ea * 2^-137 {{0xd3c36113404ea4a9ULL, 0xd1b71758e219652bULL}}, // 10^-4 ~= d1b71758e219652bd3c36113404ea4a9 * 2^-141 {{0x0fcf80dc33721d54ULL, 0xa7c5ac471b478423ULL}}, // 10^-5 ~= a7c5ac471b4784230fcf80dc33721d54 * 2^-144 {{0xa63f9a49c2c1b110ULL, 0x8637bd05af6c69b5ULL}}, // 10^-6 ~= 8637bd05af6c69b5a63f9a49c2c1b110 * 2^-147 {{0x3d32907604691b4dULL, 0xd6bf94d5e57a42bcULL}}, // 10^-7 ~= d6bf94d5e57a42bc3d32907604691b4d * 2^-151 {{0xfdc20d2b36ba7c3eULL, 0xabcc77118461cefcULL}}, // 10^-8 ~= abcc77118461cefcfdc20d2b36ba7c3e * 2^-154 {{0x31680a88f8953031ULL, 0x89705f4136b4a597ULL}}, // 10^-9 ~= 89705f4136b4a59731680a88f8953031 * 2^-157 {{0xb573440e5a884d1cULL, 0xdbe6fecebdedd5beULL}}, // 10^-10 ~= dbe6fecebdedd5beb573440e5a884d1c * 2^-161 {{0xf78f69a51539d749ULL, 0xafebff0bcb24aafeULL}}, // 10^-11 ~= afebff0bcb24aafef78f69a51539d749 * 2^-164 {{0xf93f87b7442e45d4ULL, 0x8cbccc096f5088cbULL}}, // 10^-12 ~= 8cbccc096f5088cbf93f87b7442e45d4 * 2^-167 {{0x2865a5f206b06fbaULL, 0xe12e13424bb40e13ULL}}, // 10^-13 ~= e12e13424bb40e132865a5f206b06fba * 2^-171 {{0x538484c19ef38c95ULL, 0xb424dc35095cd80fULL}}, // 10^-14 ~= b424dc35095cd80f538484c19ef38c95 * 2^-174 {{0x0f9d37014bf60a11ULL, 0x901d7cf73ab0acd9ULL}}, // 10^-15 ~= 901d7cf73ab0acd90f9d37014bf60a11 * 2^-177 {{0x4c2ebe687989a9b4ULL, 0xe69594bec44de15bULL}}, // 10^-16 ~= e69594bec44de15b4c2ebe687989a9b4 * 2^-181 {{0x09befeb9fad487c3ULL, 0xb877aa3236a4b449ULL}}, // 10^-17 ~= b877aa3236a4b44909befeb9fad487c3 * 2^-184 {{0x3aff322e62439fd0ULL, 0x9392ee8e921d5d07ULL}}, // 10^-18 ~= 9392ee8e921d5d073aff322e62439fd0 * 2^-187 {{0x2b31e9e3d06c32e6ULL, 0xec1e4a7db69561a5ULL}}, // 10^-19 ~= ec1e4a7db69561a52b31e9e3d06c32e6 * 2^-191 {{0x88f4bb1ca6bcf585ULL, 0xbce5086492111aeaULL}}, // 10^-20 ~= bce5086492111aea88f4bb1ca6bcf585 * 2^-194 {{0xd3f6fc16ebca5e04ULL, 0x971da05074da7beeULL}}, // 10^-21 ~= 971da05074da7beed3f6fc16ebca5e04 * 2^-197 {{0x5324c68b12dd6339ULL, 0xf1c90080baf72cb1ULL}}, // 10^-22 ~= f1c90080baf72cb15324c68b12dd6339 * 2^-201 {{0x75b7053c0f178294ULL, 0xc16d9a0095928a27ULL}}, // 10^-23 ~= c16d9a0095928a2775b7053c0f178294 * 2^-204 {{0xc4926a9672793543ULL, 0x9abe14cd44753b52ULL}}, // 10^-24 ~= 9abe14cd44753b52c4926a9672793543 * 2^-207 {{0x3a83ddbd83f52205ULL, 0xf79687aed3eec551ULL}}, // 10^-25 ~= f79687aed3eec5513a83ddbd83f52205 * 2^-211 {{0x95364afe032a819eULL, 0xc612062576589ddaULL}}, // 10^-26 ~= c612062576589dda95364afe032a819e * 2^-214 {{0x775ea264cf55347eULL, 0x9e74d1b791e07e48ULL}}, // 10^-27 ~= 9e74d1b791e07e48775ea264cf55347e * 2^-217 {{0x8bca9d6e188853fdULL, 0xfd87b5f28300ca0dULL}}, // 10^-28 ~= fd87b5f28300ca0d8bca9d6e188853fd * 2^-221 {{0x096ee45813a04331ULL, 0xcad2f7f5359a3b3eULL}}, // 10^-29 ~= cad2f7f5359a3b3e096ee45813a04331 * 2^-224 {{0xa1258379a94d028eULL, 0xa2425ff75e14fc31ULL}}, // 10^-30 ~= a2425ff75e14fc31a1258379a94d028e * 2^-227 {{0x80eacf948770ced8ULL, 0x81ceb32c4b43fcf4ULL}}, // 10^-31 ~= 81ceb32c4b43fcf480eacf948770ced8 * 2^-230 {{0x67de18eda5814af3ULL, 0xcfb11ead453994baULL}}, // 10^-32 ~= cfb11ead453994ba67de18eda5814af3 * 2^-234 {{0xecb1ad8aeacdd58fULL, 0xa6274bbdd0fadd61ULL}}, // 10^-33 ~= a6274bbdd0fadd61ecb1ad8aeacdd58f * 2^-237 {{0xbd5af13bef0b113fULL, 0x84ec3c97da624ab4ULL}}, // 10^-34 ~= 84ec3c97da624ab4bd5af13bef0b113f * 2^-240 {{0x955e4ec64b44e865ULL, 0xd4ad2dbfc3d07787ULL}}, // 10^-35 ~= d4ad2dbfc3d07787955e4ec64b44e865 * 2^-244 {{0xdde50bd1d5d0b9eaULL, 0xaa242499697392d2ULL}}, // 10^-36 ~= aa242499697392d2dde50bd1d5d0b9ea * 2^-247 {{0x7e50d64177da2e55ULL, 0x881cea14545c7575ULL}} // 10^-37 ~= 881cea14545c75757e50d64177da2e55 * 2^-250 }; // Ex-128 from 10^(-x) ~= Kx*2^(-Ex); Kx rounded up to 128 bits, 1 <= x <= 37 unsigned int bid_Ex128m128[] = { 3, // 131 - 128, Ex = 131 6, // 134 - 128, Ex = 134 9, // 137 - 128, Ex = 137 13, // 141 - 128, Ex = 141 16, // 144 - 128, Ex = 144 19, // 147 - 128, Ex = 147 23, // 151 - 128, Ex = 151 26, // 154 - 128, Ex = 154 29, // 157 - 128, Ex = 157 33, // 161 - 128, Ex = 161 36, // 164 - 128, Ex = 164 39, // 167 - 128, Ex = 167 43, // 171 - 128, Ex = 171 46, // 174 - 128, Ex = 174 49, // 177 - 128, Ex = 177 53, // 181 - 128, Ex = 181 56, // 184 - 128, Ex = 184 59, // 187 - 128, Ex = 187 63, // 191 - 128, Ex = 191 2, // 194 - 192, Ex = 194 5, // 197 - 192, Ex = 197 9, // 201 - 192, Ex = 201 12, // 204 - 192, Ex = 204 15, // 207 - 192, Ex = 207 19, // 211 - 192, Ex = 211 22, // 214 - 192, Ex = 214 25, // 217 - 192, Ex = 217 29, // 221 - 192, Ex = 221 32, // 224 - 192, Ex = 224 35, // 227 - 192, Ex = 227 38, // 230 - 192, Ex = 230 42, // 234 - 192, Ex = 234 45, // 237 - 192, Ex = 237 48, // 240 - 192, Ex = 240 52, // 244 - 192, Ex = 244 55, // 247 - 192, Ex = 247 58 // 250 - 192, Ex = 250 }; // Values of 1/2 in the right position to be compared with the fraction from // C * kx, 1 <= x <= 37; the fraction consists of the low Ex bits in C * kx // (these values are aligned with the high 128 bits of the fraction) BID_UINT64 bid_half128[] = { 0x0000000000000004ULL, // half / 2^128 = 4 0x0000000000000020ULL, // half / 2^128 = 20 0x0000000000000100ULL, // half / 2^128 = 100 0x0000000000001000ULL, // half / 2^128 = 1000 0x0000000000008000ULL, // half / 2^128 = 8000 0x0000000000040000ULL, // half / 2^128 = 40000 0x0000000000400000ULL, // half / 2^128 = 400000 0x0000000002000000ULL, // half / 2^128 = 2000000 0x0000000010000000ULL, // half / 2^128 = 10000000 0x0000000100000000ULL, // half / 2^128 = 100000000 0x0000000800000000ULL, // half / 2^128 = 800000000 0x0000004000000000ULL, // half / 2^128 = 4000000000 0x0000040000000000ULL, // half / 2^128 = 40000000000 0x0000200000000000ULL, // half / 2^128 = 200000000000 0x0001000000000000ULL, // half / 2^128 = 1000000000000 0x0010000000000000ULL, // half / 2^128 = 10000000000000 0x0080000000000000ULL, // half / 2^128 = 80000000000000 0x0400000000000000ULL, // half / 2^128 = 400000000000000 0x4000000000000000ULL, // half / 2^128 = 4000000000000000 0x0000000000000002ULL, // half / 2^192 = 2 0x0000000000000010ULL, // half / 2^192 = 10 0x0000000000000100ULL, // half / 2^192 = 100 0x0000000000000800ULL, // half / 2^192 = 800 0x0000000000004000ULL, // half / 2^192 = 4000 0x0000000000040000ULL, // half / 2^192 = 40000 0x0000000000200000ULL, // half / 2^192 = 200000 0x0000000001000000ULL, // half / 2^192 = 1000000 0x0000000010000000ULL, // half / 2^192 = 10000000 0x0000000080000000ULL, // half / 2^192 = 80000000 0x0000000400000000ULL, // half / 2^192 = 400000000 0x0000002000000000ULL, // half / 2^192 = 2000000000 0x0000020000000000ULL, // half / 2^192 = 20000000000 0x0000100000000000ULL, // half / 2^192 = 100000000000 0x0000800000000000ULL, // half / 2^192 = 800000000000 0x0008000000000000ULL, // half / 2^192 = 8000000000000 0x0040000000000000ULL, // half / 2^192 = 40000000000000 0x0200000000000000ULL // half / 2^192 = 200000000000000 }; // Values of mask in the right position to obtain the high Ex - 128 or Ex - 192 // bits of the fraction from C * kx, 1 <= x <= 37; the fraction consists of // the low Ex bits in C * kx BID_UINT64 bid_mask128[] = { 0x0000000000000007ULL, // mask / 2^128 0x000000000000003fULL, // mask / 2^128 0x00000000000001ffULL, // mask / 2^128 0x0000000000001fffULL, // mask / 2^128 0x000000000000ffffULL, // mask / 2^128 0x000000000007ffffULL, // mask / 2^128 0x00000000007fffffULL, // mask / 2^128 0x0000000003ffffffULL, // mask / 2^128 0x000000001fffffffULL, // mask / 2^128 0x00000001ffffffffULL, // mask / 2^128 0x0000000fffffffffULL, // mask / 2^128 0x0000007fffffffffULL, // mask / 2^128 0x000007ffffffffffULL, // mask / 2^128 0x00003fffffffffffULL, // mask / 2^128 0x0001ffffffffffffULL, // mask / 2^128 0x001fffffffffffffULL, // mask / 2^128 0x00ffffffffffffffULL, // mask / 2^128 0x07ffffffffffffffULL, // mask / 2^128 0x7fffffffffffffffULL, // mask / 2^128 0x0000000000000003ULL, // mask / 2^192 0x000000000000001fULL, // mask / 2^192 0x00000000000001ffULL, // mask / 2^192 0x0000000000000fffULL, // mask / 2^192 0x0000000000007fffULL, // mask / 2^192 0x000000000007ffffULL, // mask / 2^192 0x00000000003fffffULL, // mask / 2^192 0x0000000001ffffffULL, // mask / 2^192 0x000000001fffffffULL, // mask / 2^192 0x00000000ffffffffULL, // mask / 2^192 0x00000007ffffffffULL, // mask / 2^192 0x0000003fffffffffULL, // mask / 2^192 0x000003ffffffffffULL, // mask / 2^192 0x00001fffffffffffULL, // mask / 2^192 0x0000ffffffffffffULL, // mask / 2^192 0x000fffffffffffffULL, // mask / 2^192 0x007fffffffffffffULL, // mask / 2^192 0x03ffffffffffffffULL // mask / 2^192 }; // Values of 10^(-x) trancated to Ex bits beyond the binary point, and // in the right position to be compared with the fraction from C * kx, // 1 <= x <= 37; the fraction consists of the low Ex bits in C * kx // (these values are aligned with the low 128 bits of the fraction) BID_UINT128 bid_ten2mxtrunc128[] = { {{0xccccccccccccccccULL, 0xccccccccccccccccULL}}, // (ten2mx >> 128) = cccccccccccccccccccccccccccccccc {{0x3d70a3d70a3d70a3ULL, 0xa3d70a3d70a3d70aULL}}, // (ten2mx >> 128) = a3d70a3d70a3d70a3d70a3d70a3d70a3 {{0x645a1cac083126e9ULL, 0x83126e978d4fdf3bULL}}, // (ten2mx >> 128) = 83126e978d4fdf3b645a1cac083126e9 {{0xd3c36113404ea4a8ULL, 0xd1b71758e219652bULL}}, // (ten2mx >> 128) = d1b71758e219652bd3c36113404ea4a8 {{0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}}, // (ten2mx >> 128) = a7c5ac471b4784230fcf80dc33721d53 {{0xa63f9a49c2c1b10fULL, 0x8637bd05af6c69b5ULL}}, // (ten2mx >> 128) = 8637bd05af6c69b5a63f9a49c2c1b10f {{0x3d32907604691b4cULL, 0xd6bf94d5e57a42bcULL}}, // (ten2mx >> 128) = d6bf94d5e57a42bc3d32907604691b4c {{0xfdc20d2b36ba7c3dULL, 0xabcc77118461cefcULL}}, // (ten2mx >> 128) = abcc77118461cefcfdc20d2b36ba7c3d {{0x31680a88f8953030ULL, 0x89705f4136b4a597ULL}}, // (ten2mx >> 128) = 89705f4136b4a59731680a88f8953030 {{0xb573440e5a884d1bULL, 0xdbe6fecebdedd5beULL}}, // (ten2mx >> 128) = dbe6fecebdedd5beb573440e5a884d1b {{0xf78f69a51539d748ULL, 0xafebff0bcb24aafeULL}}, // (ten2mx >> 128) = afebff0bcb24aafef78f69a51539d748 {{0xf93f87b7442e45d3ULL, 0x8cbccc096f5088cbULL}}, // (ten2mx >> 128) = 8cbccc096f5088cbf93f87b7442e45d3 {{0x2865a5f206b06fb9ULL, 0xe12e13424bb40e13ULL}}, // (ten2mx >> 128) = e12e13424bb40e132865a5f206b06fb9 {{0x538484c19ef38c94ULL, 0xb424dc35095cd80fULL}}, // (ten2mx >> 128) = b424dc35095cd80f538484c19ef38c94 {{0x0f9d37014bf60a10ULL, 0x901d7cf73ab0acd9ULL}}, // (ten2mx >> 128) = 901d7cf73ab0acd90f9d37014bf60a10 {{0x4c2ebe687989a9b3ULL, 0xe69594bec44de15bULL}}, // (ten2mx >> 128) = e69594bec44de15b4c2ebe687989a9b3 {{0x09befeb9fad487c2ULL, 0xb877aa3236a4b449ULL}}, // (ten2mx >> 128) = b877aa3236a4b44909befeb9fad487c2 {{0x3aff322e62439fcfULL, 0x9392ee8e921d5d07ULL}}, // (ten2mx >> 128) = 9392ee8e921d5d073aff322e62439fcf {{0x2b31e9e3d06c32e5ULL, 0xec1e4a7db69561a5ULL}}, // (ten2mx >> 128) = ec1e4a7db69561a52b31e9e3d06c32e5 {{0x88f4bb1ca6bcf584ULL, 0xbce5086492111aeaULL}}, // (ten2mx >> 128) = bce5086492111aea88f4bb1ca6bcf584 {{0xd3f6fc16ebca5e03ULL, 0x971da05074da7beeULL}}, // (ten2mx >> 128) = 971da05074da7beed3f6fc16ebca5e03 {{0x5324c68b12dd6338ULL, 0xf1c90080baf72cb1ULL}}, // (ten2mx >> 128) = f1c90080baf72cb15324c68b12dd6338 {{0x75b7053c0f178293ULL, 0xc16d9a0095928a27ULL}}, // (ten2mx >> 128) = c16d9a0095928a2775b7053c0f178293 {{0xc4926a9672793542ULL, 0x9abe14cd44753b52ULL}}, // (ten2mx >> 128) = 9abe14cd44753b52c4926a9672793542 {{0x3a83ddbd83f52204ULL, 0xf79687aed3eec551ULL}}, // (ten2mx >> 128) = f79687aed3eec5513a83ddbd83f52204 {{0x95364afe032a819dULL, 0xc612062576589ddaULL}}, // (ten2mx >> 128) = c612062576589dda95364afe032a819d {{0x775ea264cf55347dULL, 0x9e74d1b791e07e48ULL}}, // (ten2mx >> 128) = 9e74d1b791e07e48775ea264cf55347d {{0x8bca9d6e188853fcULL, 0xfd87b5f28300ca0dULL}}, // (ten2mx >> 128) = fd87b5f28300ca0d8bca9d6e188853fc {{0x096ee45813a04330ULL, 0xcad2f7f5359a3b3eULL}}, // (ten2mx >> 128) = cad2f7f5359a3b3e096ee45813a04330 {{0xa1258379a94d028dULL, 0xa2425ff75e14fc31ULL}}, // (ten2mx >> 128) = a2425ff75e14fc31a1258379a94d028d {{0x80eacf948770ced7ULL, 0x81ceb32c4b43fcf4ULL}}, // (ten2mx >> 128) = 81ceb32c4b43fcf480eacf948770ced7 {{0x67de18eda5814af2ULL, 0xcfb11ead453994baULL}}, // (ten2mx >> 128) = cfb11ead453994ba67de18eda5814af2 {{0xecb1ad8aeacdd58eULL, 0xa6274bbdd0fadd61ULL}}, // (ten2mx >> 128) = a6274bbdd0fadd61ecb1ad8aeacdd58e {{0xbd5af13bef0b113eULL, 0x84ec3c97da624ab4ULL}}, // (ten2mx >> 128) = 84ec3c97da624ab4bd5af13bef0b113e {{0x955e4ec64b44e864ULL, 0xd4ad2dbfc3d07787ULL}}, // (ten2mx >> 128) = d4ad2dbfc3d07787955e4ec64b44e864 {{0xdde50bd1d5d0b9e9ULL, 0xaa242499697392d2ULL}}, // (ten2mx >> 128) = aa242499697392d2dde50bd1d5d0b9e9 {{0x7e50d64177da2e54ULL, 0x881cea14545c7575ULL}} // (ten2mx >> 128) = 881cea14545c75757e50d64177da2e54 }; BID_UINT192 bid_Kx192[] = { {{0xcccccccccccccccdULL, 0xccccccccccccccccULL, 0xccccccccccccccccULL}}, // 10^-1 ~= cccccccccccccccccccccccccccccccccccccccccccccccd * 2^-195 {{0xd70a3d70a3d70a3eULL, 0x3d70a3d70a3d70a3ULL, 0xa3d70a3d70a3d70aULL}}, // 10^-2 ~= a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3e * 2^-198 {{0x78d4fdf3b645a1cbULL, 0x645a1cac083126e9ULL, 0x83126e978d4fdf3bULL}}, // 10^-3 ~= 83126e978d4fdf3b645a1cac083126e978d4fdf3b645a1cb * 2^-201 {{0xc154c985f06f6945ULL, 0xd3c36113404ea4a8ULL, 0xd1b71758e219652bULL}}, // 10^-4 ~= d1b71758e219652bd3c36113404ea4a8c154c985f06f6945 * 2^-205 {{0xcddd6e04c0592104ULL, 0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}}, // 10^-5 ~= a7c5ac471b4784230fcf80dc33721d53cddd6e04c0592104 * 2^-208 {{0xd7e45803cd141a6aULL, 0xa63f9a49c2c1b10fULL, 0x8637bd05af6c69b5ULL}}, // 10^-6 ~= 8637bd05af6c69b5a63f9a49c2c1b10fd7e45803cd141a6a * 2^-211 {{0x8ca08cd2e1b9c3dcULL, 0x3d32907604691b4cULL, 0xd6bf94d5e57a42bcULL}}, // 10^-7 ~= d6bf94d5e57a42bc3d32907604691b4c8ca08cd2e1b9c3dc * 2^-215 {{0x3d4d3d758161697dULL, 0xfdc20d2b36ba7c3dULL, 0xabcc77118461cefcULL}}, // 10^-8 ~= abcc77118461cefcfdc20d2b36ba7c3d3d4d3d758161697d * 2^-218 {{0xfdd7645e011abacaULL, 0x31680a88f8953030ULL, 0x89705f4136b4a597ULL}}, // 10^-9 ~= 89705f4136b4a59731680a88f8953030fdd7645e011abaca * 2^-221 {{0x2fbf06fcce912addULL, 0xb573440e5a884d1bULL, 0xdbe6fecebdedd5beULL}}, // 10^-10 ~= dbe6fecebdedd5beb573440e5a884d1b2fbf06fcce912add * 2^-225 {{0xf2ff38ca3eda88b1ULL, 0xf78f69a51539d748ULL, 0xafebff0bcb24aafeULL}}, // 10^-11 ~= afebff0bcb24aafef78f69a51539d748f2ff38ca3eda88b1 * 2^-228 {{0xf598fa3b657ba08eULL, 0xf93f87b7442e45d3ULL, 0x8cbccc096f5088cbULL}}, // 10^-12 ~= 8cbccc096f5088cbf93f87b7442e45d3f598fa3b657ba08e * 2^-231 {{0x88f4c3923bf900e3ULL, 0x2865a5f206b06fb9ULL, 0xe12e13424bb40e13ULL}}, // 10^-13 ~= e12e13424bb40e132865a5f206b06fb988f4c3923bf900e3 * 2^-235 {{0x6d909c74fcc733e9ULL, 0x538484c19ef38c94ULL, 0xb424dc35095cd80fULL}}, // 10^-14 ~= b424dc35095cd80f538484c19ef38c946d909c74fcc733e9 * 2^-238 {{0x57a6e390ca38f654ULL, 0x0f9d37014bf60a10ULL, 0x901d7cf73ab0acd9ULL}}, // 10^-15 ~= 901d7cf73ab0acd90f9d37014bf60a1057a6e390ca38f654 * 2^-241 {{0xbf716c1add27f086ULL, 0x4c2ebe687989a9b3ULL, 0xe69594bec44de15bULL}}, // 10^-16 ~= e69594bec44de15b4c2ebe687989a9b3bf716c1add27f086 * 2^-245 {{0xff8df0157db98d38ULL, 0x09befeb9fad487c2ULL, 0xb877aa3236a4b449ULL}}, // 10^-17 ~= b877aa3236a4b44909befeb9fad487c2ff8df0157db98d38 * 2^-248 {{0x32d7f344649470faULL, 0x3aff322e62439fcfULL, 0x9392ee8e921d5d07ULL}}, // 10^-18 ~= 9392ee8e921d5d073aff322e62439fcf32d7f344649470fa * 2^-251 {{0x1e2652070753e7f5ULL, 0x2b31e9e3d06c32e5ULL, 0xec1e4a7db69561a5ULL}}, // 10^-19 ~= ec1e4a7db69561a52b31e9e3d06c32e51e2652070753e7f5 * 2^-255 {{0x181ea8059f76532bULL, 0x88f4bb1ca6bcf584ULL, 0xbce5086492111aeaULL}}, // 10^-20 ~= bce5086492111aea88f4bb1ca6bcf584181ea8059f76532b * 2^-258 {{0x467eecd14c5ea8efULL, 0xd3f6fc16ebca5e03ULL, 0x971da05074da7beeULL}}, // 10^-21 ~= 971da05074da7beed3f6fc16ebca5e03467eecd14c5ea8ef * 2^-261 {{0x70cb148213caa7e5ULL, 0x5324c68b12dd6338ULL, 0xf1c90080baf72cb1ULL}}, // 10^-22 ~= f1c90080baf72cb15324c68b12dd633870cb148213caa7e5 * 2^-265 {{0x8d6f439b43088651ULL, 0x75b7053c0f178293ULL, 0xc16d9a0095928a27ULL}}, // 10^-23 ~= c16d9a0095928a2775b7053c0f1782938d6f439b43088651 * 2^-268 {{0xd78c3615cf3a050dULL, 0xc4926a9672793542ULL, 0x9abe14cd44753b52ULL}}, // 10^-24 ~= 9abe14cd44753b52c4926a9672793542d78c3615cf3a050d * 2^-271 {{0x8c1389bc7ec33b48ULL, 0x3a83ddbd83f52204ULL, 0xf79687aed3eec551ULL}}, // 10^-25 ~= f79687aed3eec5513a83ddbd83f522048c1389bc7ec33b48 * 2^-275 {{0x3cdc6e306568fc3aULL, 0x95364afe032a819dULL, 0xc612062576589ddaULL}}, // 10^-26 ~= c612062576589dda95364afe032a819d3cdc6e306568fc3a * 2^-278 {{0xca49f1c05120c9c8ULL, 0x775ea264cf55347dULL, 0x9e74d1b791e07e48ULL}}, // 10^-27 ~= 9e74d1b791e07e48775ea264cf55347dca49f1c05120c9c8 * 2^-281 {{0x76dcb60081ce0fa6ULL, 0x8bca9d6e188853fcULL, 0xfd87b5f28300ca0dULL}}, // 10^-28 ~= fd87b5f28300ca0d8bca9d6e188853fc76dcb60081ce0fa6 * 2^-285 {{0x5f16f80067d80c85ULL, 0x096ee45813a04330ULL, 0xcad2f7f5359a3b3eULL}}, // 10^-29 ~= cad2f7f5359a3b3e096ee45813a043305f16f80067d80c85 * 2^-288 {{0x18df2ccd1fe00a04ULL, 0xa1258379a94d028dULL, 0xa2425ff75e14fc31ULL}}, // 10^-30 ~= a2425ff75e14fc31a1258379a94d028d18df2ccd1fe00a04 * 2^-291 {{0x4718f0a419800803ULL, 0x80eacf948770ced7ULL, 0x81ceb32c4b43fcf4ULL}}, // 10^-31 ~= 81ceb32c4b43fcf480eacf948770ced74718f0a419800803 * 2^-294 {{0x0b5b1aa028ccd99fULL, 0x67de18eda5814af2ULL, 0xcfb11ead453994baULL}}, // 10^-32 ~= cfb11ead453994ba67de18eda5814af20b5b1aa028ccd99f * 2^-298 {{0x6f7c154ced70ae19ULL, 0xecb1ad8aeacdd58eULL, 0xa6274bbdd0fadd61ULL}}, // 10^-33 ~= a6274bbdd0fadd61ecb1ad8aeacdd58e6f7c154ced70ae19 * 2^-301 {{0xbf967770bdf3be7aULL, 0xbd5af13bef0b113eULL, 0x84ec3c97da624ab4ULL}}, // 10^-34 ~= 84ec3c97da624ab4bd5af13bef0b113ebf967770bdf3be7a * 2^-304 {{0x65bd8be79652ca5dULL, 0x955e4ec64b44e864ULL, 0xd4ad2dbfc3d07787ULL}}, // 10^-35 ~= d4ad2dbfc3d07787955e4ec64b44e86465bd8be79652ca5d * 2^-308 {{0xeafe098611dbd517ULL, 0xdde50bd1d5d0b9e9ULL, 0xaa242499697392d2ULL}}, // 10^-36 ~= aa242499697392d2dde50bd1d5d0b9e9eafe098611dbd517 * 2^-311 {{0xbbfe6e04db164413ULL, 0x7e50d64177da2e54ULL, 0x881cea14545c7575ULL}}, // 10^-37 ~= 881cea14545c75757e50d64177da2e54bbfe6e04db164413 * 2^-314 {{0x2cca49a15e8a0684ULL, 0x96e7bd358c904a21ULL, 0xd9c7dced53c72255ULL}}, // 10^-38 ~= d9c7dced53c7225596e7bd358c904a212cca49a15e8a0684 * 2^-318 {{0x8a3b6e1ab2080537ULL, 0xabec975e0a0d081aULL, 0xae397d8aa96c1b77ULL}}, // 10^-39 ~= ae397d8aa96c1b77abec975e0a0d081a8a3b6e1ab2080537 * 2^-321 {{0x3b62be7bc1a0042cULL, 0x2323ac4b3b3da015ULL, 0x8b61313bbabce2c6ULL}}, // 10^-40 ~= 8b61313bbabce2c62323ac4b3b3da0153b62be7bc1a0042c * 2^-324 {{0x5f0463f935ccd379ULL, 0x6b6c46dec52f6688ULL, 0xdf01e85f912e37a3ULL}}, // 10^-41 ~= df01e85f912e37a36b6c46dec52f66885f0463f935ccd379 * 2^-328 {{0x7f36b660f7d70f94ULL, 0x55f038b237591ed3ULL, 0xb267ed1940f1c61cULL}}, // 10^-42 ~= b267ed1940f1c61c55f038b237591ed37f36b660f7d70f94 * 2^-331 {{0xcc2bc51a5fdf3faaULL, 0x77f3608e92adb242ULL, 0x8eb98a7a9a5b04e3ULL}}, // 10^-43 ~= 8eb98a7a9a5b04e377f3608e92adb242cc2bc51a5fdf3faa * 2^-334 {{0xe046082a32fecc42ULL, 0x8cb89a7db77c506aULL, 0xe45c10c42a2b3b05ULL}}, // 10^-44 ~= e45c10c42a2b3b058cb89a7db77c506ae046082a32fecc42 * 2^-338 {{0x4d04d354f598a368ULL, 0x3d607b97c5fd0d22ULL, 0xb6b00d69bb55c8d1ULL}}, // 10^-45 ~= b6b00d69bb55c8d13d607b97c5fd0d224d04d354f598a368 * 2^-341 {{0x3d9d75dd9146e920ULL, 0xcab3961304ca70e8ULL, 0x9226712162ab070dULL}}, // 10^-46 ~= 9226712162ab070dcab3961304ca70e83d9d75dd9146e920 * 2^-344 {{0xc8fbefc8e8717500ULL, 0xaab8f01e6e10b4a6ULL, 0xe9d71b689dde71afULL}}, // 10^-47 ~= e9d71b689dde71afaab8f01e6e10b4a6c8fbefc8e8717500 * 2^-348 {{0x3a63263a538df734ULL, 0x5560c018580d5d52ULL, 0xbb127c53b17ec159ULL}}, // 10^-48 ~= bb127c53b17ec1595560c018580d5d523a63263a538df734 * 2^-351 {{0x2eb5b82ea93e5f5dULL, 0xdde7001379a44aa8ULL, 0x95a8637627989aadULL}}, // 10^-49 ~= 95a8637627989aaddde7001379a44aa82eb5b82ea93e5f5d * 2^-354 {{0x4abc59e441fd6561ULL, 0x963e66858f6d4440ULL, 0xef73d256a5c0f77cULL}}, // 10^-50 ~= ef73d256a5c0f77c963e66858f6d44404abc59e441fd6561 * 2^-358 {{0x6efd14b69b311de7ULL, 0xde98520472bdd033ULL, 0xbf8fdb78849a5f96ULL}}, // 10^-51 ~= bf8fdb78849a5f96de98520472bdd0336efd14b69b311de7 * 2^-361 {{0x259743c548f417ecULL, 0xe546a8038efe4029ULL, 0x993fe2c6d07b7fabULL}}, // 10^-52 ~= 993fe2c6d07b7fabe546a8038efe4029259743c548f417ec * 2^-364 {{0x3c25393ba7ecf313ULL, 0xd53dd99f4b3066a8ULL, 0xf53304714d9265dfULL}}, // 10^-53 ~= f53304714d9265dfd53dd99f4b3066a83c25393ba7ecf313 * 2^-368 {{0x96842dc95323f5a9ULL, 0xaa97e14c3c26b886ULL, 0xc428d05aa4751e4cULL}}, // 10^-54 ~= c428d05aa4751e4caa97e14c3c26b88696842dc95323f5a9 * 2^-371 {{0xab9cf16ddc1cc487ULL, 0x55464dd69685606bULL, 0x9ced737bb6c4183dULL}}, // 10^-55 ~= 9ced737bb6c4183d55464dd69685606bab9cf16ddc1cc487 * 2^-374 {{0xac2e4f162cfad40bULL, 0xeed6e2f0f0d56712ULL, 0xfb158592be068d2eULL}} // 10^-56 ~= fb158592be068d2eeed6e2f0f0d56712ac2e4f162cfad40b * 2^-378 }; unsigned int bid_Ex192m192[] = { 3, // 195 - 192, Ex = 195 6, // 198 - 192, Ex = 198 9, // 201 - 192, Ex = 201 13, // 205 - 192, Ex = 205 16, // 208 - 192, Ex = 208 19, // 211 - 192, Ex = 211 23, // 215 - 192, Ex = 215 26, // 218 - 192, Ex = 218 29, // 221 - 192, Ex = 221 33, // 225 - 192, Ex = 225 36, // 228 - 192, Ex = 228 39, // 231 - 192, Ex = 231 43, // 235 - 192, Ex = 235 46, // 238 - 192, Ex = 238 49, // 241 - 192, Ex = 241 53, // 245 - 192, Ex = 245 56, // 248 - 192, Ex = 248 59, // 251 - 192, Ex = 251 63, // 255 - 192, Ex = 255 2, // 258 - 256, Ex = 258 5, // 261 - 256, Ex = 261 9, // 265 - 256, Ex = 265 12, // 268 - 256, Ex = 268 15, // 271 - 256, Ex = 271 19, // 275 - 256, Ex = 275 22, // 278 - 256, Ex = 278 25, // 281 - 256, Ex = 281 29, // 285 - 256, Ex = 285 32, // 288 - 256, Ex = 288 35, // 291 - 256, Ex = 291 38, // 294 - 256, Ex = 294 42, // 298 - 256, Ex = 298 45, // 301 - 256, Ex = 301 48, // 304 - 256, Ex = 304 52, // 308 - 256, Ex = 308 55, // 311 - 256, Ex = 311 58, // 314 - 256, Ex = 314 62, // 318 - 256, Ex = 318 1, // 321 - 320, Ex = 321 4, // 324 - 320, Ex = 324 8, // 328 - 320, Ex = 328 11, // 331 - 320, Ex = 331 14, // 334 - 320, Ex = 334 18, // 338 - 320, Ex = 338 21, // 341 - 320, Ex = 341 24, // 344 - 320, Ex = 344 28, // 348 - 320, Ex = 348 31, // 351 - 320, Ex = 351 34, // 354 - 320, Ex = 354 38, // 358 - 320, Ex = 358 41, // 361 - 320, Ex = 361 44, // 364 - 320, Ex = 364 48, // 368 - 320, Ex = 368 51, // 371 - 320, Ex = 371 54, // 374 - 320, Ex = 374 58 // 378 - 320, Ex = 378 }; BID_UINT64 bid_half192[] = { 0x0000000000000004ULL, // half / 2^192 = 4 0x0000000000000020ULL, // half / 2^192 = 20 0x0000000000000100ULL, // half / 2^192 = 100 0x0000000000001000ULL, // half / 2^192 = 1000 0x0000000000008000ULL, // half / 2^192 = 8000 0x0000000000040000ULL, // half / 2^192 = 40000 0x0000000000400000ULL, // half / 2^192 = 400000 0x0000000002000000ULL, // half / 2^192 = 2000000 0x0000000010000000ULL, // half / 2^192 = 10000000 0x0000000100000000ULL, // half / 2^192 = 100000000 0x0000000800000000ULL, // half / 2^192 = 800000000 0x0000004000000000ULL, // half / 2^192 = 4000000000 0x0000040000000000ULL, // half / 2^192 = 40000000000 0x0000200000000000ULL, // half / 2^192 = 200000000000 0x0001000000000000ULL, // half / 2^192 = 1000000000000 0x0010000000000000ULL, // half / 2^192 = 10000000000000 0x0080000000000000ULL, // half / 2^192 = 80000000000000 0x0400000000000000ULL, // half / 2^192 = 400000000000000 0x4000000000000000ULL, // half / 2^192 = 4000000000000000 0x0000000000000002ULL, // half / 2^256 = 2 0x0000000000000010ULL, // half / 2^256 = 10 0x0000000000000100ULL, // half / 2^256 = 100 0x0000000000000800ULL, // half / 2^256 = 800 0x0000000000004000ULL, // half / 2^256 = 4000 0x0000000000040000ULL, // half / 2^256 = 40000 0x0000000000200000ULL, // half / 2^256 = 200000 0x0000000001000000ULL, // half / 2^256 = 1000000 0x0000000010000000ULL, // half / 2^256 = 10000000 0x0000000080000000ULL, // half / 2^256 = 80000000 0x0000000400000000ULL, // half / 2^256 = 400000000 0x0000002000000000ULL, // half / 2^256 = 2000000000 0x0000020000000000ULL, // half / 2^256 = 20000000000 0x0000100000000000ULL, // half / 2^256 = 100000000000 0x0000800000000000ULL, // half / 2^256 = 800000000000 0x0008000000000000ULL, // half / 2^256 = 8000000000000 0x0040000000000000ULL, // half / 2^256 = 40000000000000 0x0200000000000000ULL, // half / 2^256 = 200000000000000 0x2000000000000000ULL, // half / 2^256 = 2000000000000000 0x0000000000000001ULL, // half / 2^320 = 1 0x0000000000000008ULL, // half / 2^320 = 8 0x0000000000000080ULL, // half / 2^320 = 80 0x0000000000000400ULL, // half / 2^320 = 400 0x0000000000002000ULL, // half / 2^320 = 2000 0x0000000000020000ULL, // half / 2^320 = 20000 0x0000000000100000ULL, // half / 2^320 = 100000 0x0000000000800000ULL, // half / 2^320 = 800000 0x0000000008000000ULL, // half / 2^320 = 8000000 0x0000000040000000ULL, // half / 2^320 = 40000000 0x0000000200000000ULL, // half / 2^320 = 200000000 0x0000002000000000ULL, // half / 2^320 = 2000000000 0x0000010000000000ULL, // half / 2^320 = 10000000000 0x0000080000000000ULL, // half / 2^320 = 80000000000 0x0000800000000000ULL, // half / 2^320 = 800000000000 0x0004000000000000ULL, // half / 2^320 = 4000000000000 0x0020000000000000ULL, // half / 2^320 = 20000000000000 0x0200000000000000ULL // half / 2^320 = 200000000000000 }; BID_UINT64 bid_mask192[] = { 0x0000000000000007ULL, // mask / 2^192 0x000000000000003fULL, // mask / 2^192 0x00000000000001ffULL, // mask / 2^192 0x0000000000001fffULL, // mask / 2^192 0x000000000000ffffULL, // mask / 2^192 0x000000000007ffffULL, // mask / 2^192 0x00000000007fffffULL, // mask / 2^192 0x0000000003ffffffULL, // mask / 2^192 0x000000001fffffffULL, // mask / 2^192 0x00000001ffffffffULL, // mask / 2^192 0x0000000fffffffffULL, // mask / 2^192 0x0000007fffffffffULL, // mask / 2^192 0x000007ffffffffffULL, // mask / 2^192 0x00003fffffffffffULL, // mask / 2^192 0x0001ffffffffffffULL, // mask / 2^192 0x001fffffffffffffULL, // mask / 2^192 0x00ffffffffffffffULL, // mask / 2^192 0x07ffffffffffffffULL, // mask / 2^192 0x7fffffffffffffffULL, // mask / 2^192 0x0000000000000003ULL, // mask / 2^256 0x000000000000001fULL, // mask / 2^256 0x00000000000001ffULL, // mask / 2^256 0x0000000000000fffULL, // mask / 2^256 0x0000000000007fffULL, // mask / 2^256 0x000000000007ffffULL, // mask / 2^256 0x00000000003fffffULL, // mask / 2^256 0x0000000001ffffffULL, // mask / 2^256 0x000000001fffffffULL, // mask / 2^256 0x00000000ffffffffULL, // mask / 2^256 0x00000007ffffffffULL, // mask / 2^256 0x0000003fffffffffULL, // mask / 2^256 0x000003ffffffffffULL, // mask / 2^256 0x00001fffffffffffULL, // mask / 2^256 0x0000ffffffffffffULL, // mask / 2^256 0x000fffffffffffffULL, // mask / 2^256 0x007fffffffffffffULL, // mask / 2^256 0x03ffffffffffffffULL, // mask / 2^256 0x3fffffffffffffffULL, // mask / 2^256 0x0000000000000001ULL, // mask / 2^320 0x000000000000000fULL, // mask / 2^320 0x00000000000000ffULL, // mask / 2^320 0x00000000000007ffULL, // mask / 2^320 0x0000000000003fffULL, // mask / 2^320 0x000000000003ffffULL, // mask / 2^320 0x00000000001fffffULL, // mask / 2^320 0x0000000000ffffffULL, // mask / 2^320 0x000000000fffffffULL, // mask / 2^320 0x000000007fffffffULL, // mask / 2^320 0x00000003ffffffffULL, // mask / 2^320 0x0000003fffffffffULL, // mask / 2^320 0x000001ffffffffffULL, // mask / 2^320 0x00000fffffffffffULL, // mask / 2^320 0x0000ffffffffffffULL, // mask / 2^320 0x0007ffffffffffffULL, // mask / 2^320 0x003fffffffffffffULL, // mask / 2^320 0x03ffffffffffffffULL // mask / 2^320 }; BID_UINT192 bid_ten2mxtrunc192[] = { {{0xccccccccccccccccULL, 0xccccccccccccccccULL, 0xccccccccccccccccULL}}, // (ten2mx >> 192) = cccccccccccccccccccccccccccccccccccccccccccccccc {{0xd70a3d70a3d70a3dULL, 0x3d70a3d70a3d70a3ULL, 0xa3d70a3d70a3d70aULL}}, // (ten2mx >> 192) = a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3d {{0x78d4fdf3b645a1caULL, 0x645a1cac083126e9ULL, 0x83126e978d4fdf3bULL}}, // (ten2mx >> 192) = 83126e978d4fdf3b645a1cac083126e978d4fdf3b645a1ca {{0xc154c985f06f6944ULL, 0xd3c36113404ea4a8ULL, 0xd1b71758e219652bULL}}, // (ten2mx >> 192) = d1b71758e219652bd3c36113404ea4a8c154c985f06f6944 {{0xcddd6e04c0592103ULL, 0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}}, // (ten2mx >> 192) = a7c5ac471b4784230fcf80dc33721d53cddd6e04c0592103 {{0xd7e45803cd141a69ULL, 0xa63f9a49c2c1b10fULL, 0x8637bd05af6c69b5ULL}}, // (ten2mx >> 192) = 8637bd05af6c69b5a63f9a49c2c1b10fd7e45803cd141a69 {{0x8ca08cd2e1b9c3dbULL, 0x3d32907604691b4cULL, 0xd6bf94d5e57a42bcULL}}, // (ten2mx >> 192) = d6bf94d5e57a42bc3d32907604691b4c8ca08cd2e1b9c3db {{0x3d4d3d758161697cULL, 0xfdc20d2b36ba7c3dULL, 0xabcc77118461cefcULL}}, // (ten2mx >> 192) = abcc77118461cefcfdc20d2b36ba7c3d3d4d3d758161697c {{0xfdd7645e011abac9ULL, 0x31680a88f8953030ULL, 0x89705f4136b4a597ULL}}, // (ten2mx >> 192) = 89705f4136b4a59731680a88f8953030fdd7645e011abac9 {{0x2fbf06fcce912adcULL, 0xb573440e5a884d1bULL, 0xdbe6fecebdedd5beULL}}, // (ten2mx >> 192) = dbe6fecebdedd5beb573440e5a884d1b2fbf06fcce912adc {{0xf2ff38ca3eda88b0ULL, 0xf78f69a51539d748ULL, 0xafebff0bcb24aafeULL}}, // (ten2mx >> 192) = afebff0bcb24aafef78f69a51539d748f2ff38ca3eda88b0 {{0xf598fa3b657ba08dULL, 0xf93f87b7442e45d3ULL, 0x8cbccc096f5088cbULL}}, // (ten2mx >> 192) = 8cbccc096f5088cbf93f87b7442e45d3f598fa3b657ba08d {{0x88f4c3923bf900e2ULL, 0x2865a5f206b06fb9ULL, 0xe12e13424bb40e13ULL}}, // (ten2mx >> 192) = e12e13424bb40e132865a5f206b06fb988f4c3923bf900e2 {{0x6d909c74fcc733e8ULL, 0x538484c19ef38c94ULL, 0xb424dc35095cd80fULL}}, // (ten2mx >> 192) = b424dc35095cd80f538484c19ef38c946d909c74fcc733e8 {{0x57a6e390ca38f653ULL, 0x0f9d37014bf60a10ULL, 0x901d7cf73ab0acd9ULL}}, // (ten2mx >> 192) = 901d7cf73ab0acd90f9d37014bf60a1057a6e390ca38f653 {{0xbf716c1add27f085ULL, 0x4c2ebe687989a9b3ULL, 0xe69594bec44de15bULL}}, // (ten2mx >> 192) = e69594bec44de15b4c2ebe687989a9b3bf716c1add27f085 {{0xff8df0157db98d37ULL, 0x09befeb9fad487c2ULL, 0xb877aa3236a4b449ULL}}, // (ten2mx >> 192) = b877aa3236a4b44909befeb9fad487c2ff8df0157db98d37 {{0x32d7f344649470f9ULL, 0x3aff322e62439fcfULL, 0x9392ee8e921d5d07ULL}}, // (ten2mx >> 192) = 9392ee8e921d5d073aff322e62439fcf32d7f344649470f9 {{0x1e2652070753e7f4ULL, 0x2b31e9e3d06c32e5ULL, 0xec1e4a7db69561a5ULL}}, // (ten2mx >> 192) = ec1e4a7db69561a52b31e9e3d06c32e51e2652070753e7f4 {{0x181ea8059f76532aULL, 0x88f4bb1ca6bcf584ULL, 0xbce5086492111aeaULL}}, // (ten2mx >> 192) = bce5086492111aea88f4bb1ca6bcf584181ea8059f76532a {{0x467eecd14c5ea8eeULL, 0xd3f6fc16ebca5e03ULL, 0x971da05074da7beeULL}}, // (ten2mx >> 192) = 971da05074da7beed3f6fc16ebca5e03467eecd14c5ea8ee {{0x70cb148213caa7e4ULL, 0x5324c68b12dd6338ULL, 0xf1c90080baf72cb1ULL}}, // (ten2mx >> 192) = f1c90080baf72cb15324c68b12dd633870cb148213caa7e4 {{0x8d6f439b43088650ULL, 0x75b7053c0f178293ULL, 0xc16d9a0095928a27ULL}}, // (ten2mx >> 192) = c16d9a0095928a2775b7053c0f1782938d6f439b43088650 {{0xd78c3615cf3a050cULL, 0xc4926a9672793542ULL, 0x9abe14cd44753b52ULL}}, // (ten2mx >> 192) = 9abe14cd44753b52c4926a9672793542d78c3615cf3a050c {{0x8c1389bc7ec33b47ULL, 0x3a83ddbd83f52204ULL, 0xf79687aed3eec551ULL}}, // (ten2mx >> 192) = f79687aed3eec5513a83ddbd83f522048c1389bc7ec33b47 {{0x3cdc6e306568fc39ULL, 0x95364afe032a819dULL, 0xc612062576589ddaULL}}, // (ten2mx >> 192) = c612062576589dda95364afe032a819d3cdc6e306568fc39 {{0xca49f1c05120c9c7ULL, 0x775ea264cf55347dULL, 0x9e74d1b791e07e48ULL}}, // (ten2mx >> 192) = 9e74d1b791e07e48775ea264cf55347dca49f1c05120c9c7 {{0x76dcb60081ce0fa5ULL, 0x8bca9d6e188853fcULL, 0xfd87b5f28300ca0dULL}}, // (ten2mx >> 192) = fd87b5f28300ca0d8bca9d6e188853fc76dcb60081ce0fa5 {{0x5f16f80067d80c84ULL, 0x096ee45813a04330ULL, 0xcad2f7f5359a3b3eULL}}, // (ten2mx >> 192) = cad2f7f5359a3b3e096ee45813a043305f16f80067d80c84 {{0x18df2ccd1fe00a03ULL, 0xa1258379a94d028dULL, 0xa2425ff75e14fc31ULL}}, // (ten2mx >> 192) = a2425ff75e14fc31a1258379a94d028d18df2ccd1fe00a03 {{0x4718f0a419800802ULL, 0x80eacf948770ced7ULL, 0x81ceb32c4b43fcf4ULL}}, // (ten2mx >> 192) = 81ceb32c4b43fcf480eacf948770ced74718f0a419800802 {{0x0b5b1aa028ccd99eULL, 0x67de18eda5814af2ULL, 0xcfb11ead453994baULL}}, // (ten2mx >> 192) = cfb11ead453994ba67de18eda5814af20b5b1aa028ccd99e {{0x6f7c154ced70ae18ULL, 0xecb1ad8aeacdd58eULL, 0xa6274bbdd0fadd61ULL}}, // (ten2mx >> 192) = a6274bbdd0fadd61ecb1ad8aeacdd58e6f7c154ced70ae18 {{0xbf967770bdf3be79ULL, 0xbd5af13bef0b113eULL, 0x84ec3c97da624ab4ULL}}, // (ten2mx >> 192) = 84ec3c97da624ab4bd5af13bef0b113ebf967770bdf3be79 {{0x65bd8be79652ca5cULL, 0x955e4ec64b44e864ULL, 0xd4ad2dbfc3d07787ULL}}, // (ten2mx >> 192) = d4ad2dbfc3d07787955e4ec64b44e86465bd8be79652ca5c {{0xeafe098611dbd516ULL, 0xdde50bd1d5d0b9e9ULL, 0xaa242499697392d2ULL}}, // (ten2mx >> 192) = aa242499697392d2dde50bd1d5d0b9e9eafe098611dbd516 {{0xbbfe6e04db164412ULL, 0x7e50d64177da2e54ULL, 0x881cea14545c7575ULL}}, // (ten2mx >> 192) = 881cea14545c75757e50d64177da2e54bbfe6e04db164412 {{0x2cca49a15e8a0683ULL, 0x96e7bd358c904a21ULL, 0xd9c7dced53c72255ULL}}, // (ten2mx >> 192) = d9c7dced53c7225596e7bd358c904a212cca49a15e8a0683 {{0x8a3b6e1ab2080536ULL, 0xabec975e0a0d081aULL, 0xae397d8aa96c1b77ULL}}, // (ten2mx >> 192) = ae397d8aa96c1b77abec975e0a0d081a8a3b6e1ab2080536 {{0x3b62be7bc1a0042bULL, 0x2323ac4b3b3da015ULL, 0x8b61313bbabce2c6ULL}}, // (ten2mx >> 192) = 8b61313bbabce2c62323ac4b3b3da0153b62be7bc1a0042b {{0x5f0463f935ccd378ULL, 0x6b6c46dec52f6688ULL, 0xdf01e85f912e37a3ULL}}, // (ten2mx >> 192) = df01e85f912e37a36b6c46dec52f66885f0463f935ccd378 {{0x7f36b660f7d70f93ULL, 0x55f038b237591ed3ULL, 0xb267ed1940f1c61cULL}}, // (ten2mx >> 192) = b267ed1940f1c61c55f038b237591ed37f36b660f7d70f93 {{0xcc2bc51a5fdf3fa9ULL, 0x77f3608e92adb242ULL, 0x8eb98a7a9a5b04e3ULL}}, // (ten2mx >> 192) = 8eb98a7a9a5b04e377f3608e92adb242cc2bc51a5fdf3fa9 {{0xe046082a32fecc41ULL, 0x8cb89a7db77c506aULL, 0xe45c10c42a2b3b05ULL}}, // (ten2mx >> 192) = e45c10c42a2b3b058cb89a7db77c506ae046082a32fecc41 {{0x4d04d354f598a367ULL, 0x3d607b97c5fd0d22ULL, 0xb6b00d69bb55c8d1ULL}}, // (ten2mx >> 192) = b6b00d69bb55c8d13d607b97c5fd0d224d04d354f598a367 {{0x3d9d75dd9146e91fULL, 0xcab3961304ca70e8ULL, 0x9226712162ab070dULL}}, // (ten2mx >> 192) = 9226712162ab070dcab3961304ca70e83d9d75dd9146e91f {{0xc8fbefc8e87174ffULL, 0xaab8f01e6e10b4a6ULL, 0xe9d71b689dde71afULL}}, // (ten2mx >> 192) = e9d71b689dde71afaab8f01e6e10b4a6c8fbefc8e87174ff {{0x3a63263a538df733ULL, 0x5560c018580d5d52ULL, 0xbb127c53b17ec159ULL}}, // (ten2mx >> 192) = bb127c53b17ec1595560c018580d5d523a63263a538df733 {{0x2eb5b82ea93e5f5cULL, 0xdde7001379a44aa8ULL, 0x95a8637627989aadULL}}, // (ten2mx >> 192) = 95a8637627989aaddde7001379a44aa82eb5b82ea93e5f5c {{0x4abc59e441fd6560ULL, 0x963e66858f6d4440ULL, 0xef73d256a5c0f77cULL}}, // (ten2mx >> 192) = ef73d256a5c0f77c963e66858f6d44404abc59e441fd6560 {{0x6efd14b69b311de6ULL, 0xde98520472bdd033ULL, 0xbf8fdb78849a5f96ULL}}, // (ten2mx >> 192) = bf8fdb78849a5f96de98520472bdd0336efd14b69b311de6 {{0x259743c548f417ebULL, 0xe546a8038efe4029ULL, 0x993fe2c6d07b7fabULL}}, // (ten2mx >> 192) = 993fe2c6d07b7fabe546a8038efe4029259743c548f417eb {{0x3c25393ba7ecf312ULL, 0xd53dd99f4b3066a8ULL, 0xf53304714d9265dfULL}}, // (ten2mx >> 192) = f53304714d9265dfd53dd99f4b3066a83c25393ba7ecf312 {{0x96842dc95323f5a8ULL, 0xaa97e14c3c26b886ULL, 0xc428d05aa4751e4cULL}}, // (ten2mx >> 192) = c428d05aa4751e4caa97e14c3c26b88696842dc95323f5a8 {{0xab9cf16ddc1cc486ULL, 0x55464dd69685606bULL, 0x9ced737bb6c4183dULL}}, // (ten2mx >> 192) = 9ced737bb6c4183d55464dd69685606bab9cf16ddc1cc486 {{0xac2e4f162cfad40aULL, 0xeed6e2f0f0d56712ULL, 0xfb158592be068d2eULL}} // (ten2mx >> 192) = fb158592be068d2eeed6e2f0f0d56712ac2e4f162cfad40a }; BID_UINT256 bid_Kx256[] = { {{0xcccccccccccccccdULL, 0xccccccccccccccccULL, 0xccccccccccccccccULL, 0xccccccccccccccccULL}}, // 10^-1 ~= cccccccccccccccc cccccccccccccccc // cccccccccccccccccccccccccccccccd * 2^-259 {{0x70a3d70a3d70a3d8ULL, 0xd70a3d70a3d70a3dULL, 0x3d70a3d70a3d70a3ULL, 0xa3d70a3d70a3d70aULL}}, // 10^-2 ~= a3d70a3d70a3d70a 3d70a3d70a3d70a3 // d70a3d70a3d70a3d70a3d70a3d70a3d8 * 2^-262 {{0xc083126e978d4fe0ULL, 0x78d4fdf3b645a1caULL, 0x645a1cac083126e9ULL, 0x83126e978d4fdf3bULL}}, // 10^-3 ~= 83126e978d4fdf3b 645a1cac083126e9 // 78d4fdf3b645a1cac083126e978d4fe0 * 2^-265 {{0x67381d7dbf487fccULL, 0xc154c985f06f6944ULL, 0xd3c36113404ea4a8ULL, 0xd1b71758e219652bULL}}, // 10^-4 ~= d1b71758e219652b d3c36113404ea4a8 // c154c985f06f694467381d7dbf487fcc * 2^-269 {{0x85c67dfe32a0663dULL, 0xcddd6e04c0592103ULL, 0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}}, // 10^-5 ~= a7c5ac471b478423 fcf80dc33721d53 // cddd6e04c059210385c67dfe32a0663d * 2^-272 {{0x37d1fe64f54d1e97ULL, 0xd7e45803cd141a69ULL, 0xa63f9a49c2c1b10fULL, 0x8637bd05af6c69b5ULL}}, // 10^-6 ~= 8637bd05af6c69b5 a63f9a49c2c1b10f // d7e45803cd141a6937d1fe64f54d1e97 * 2^-275 {{0x8c8330a1887b6425ULL, 0x8ca08cd2e1b9c3dbULL, 0x3d32907604691b4cULL, 0xd6bf94d5e57a42bcULL}}, // 10^-7 ~= d6bf94d5e57a42bc 3d32907604691b4c // 8ca08cd2e1b9c3db8c8330a1887b6425 * 2^-279 {{0x7068f3b46d2f8351ULL, 0x3d4d3d758161697cULL, 0xfdc20d2b36ba7c3dULL, 0xabcc77118461cefcULL}}, // 10^-8 ~= abcc77118461cefc fdc20d2b36ba7c3d // 3d4d3d758161697c7068f3b46d2f8351 * 2^-282 {{0xf387295d242602a7ULL, 0xfdd7645e011abac9ULL, 0x31680a88f8953030ULL, 0x89705f4136b4a597ULL}}, // 10^-9 ~= 89705f4136b4a597 31680a88f8953030 // fdd7645e011abac9f387295d242602a7 * 2^-285 {{0xb8d8422ea03cd10bULL, 0x2fbf06fcce912adcULL, 0xb573440e5a884d1bULL, 0xdbe6fecebdedd5beULL}}, // 10^-10 ~= dbe6fecebdedd5be b573440e5a884d1b // 2fbf06fcce912adcb8d8422ea03cd10b * 2^-289 {{0x93e034f219ca40d6ULL, 0xf2ff38ca3eda88b0ULL, 0xf78f69a51539d748ULL, 0xafebff0bcb24aafeULL}}, // 10^-11 ~= afebff0bcb24aafe f78f69a51539d748 // f2ff38ca3eda88b093e034f219ca40d6 * 2^-292 {{0x4319c3f4e16e9a45ULL, 0xf598fa3b657ba08dULL, 0xf93f87b7442e45d3ULL, 0x8cbccc096f5088cbULL}}, // 10^-12 ~= 8cbccc096f5088cb f93f87b7442e45d3 // f598fa3b657ba08d4319c3f4e16e9a45 * 2^-295 {{0x04f606549be42a07ULL, 0x88f4c3923bf900e2ULL, 0x2865a5f206b06fb9ULL, 0xe12e13424bb40e13ULL}}, // 10^-13 ~= e12e13424bb40e13 2865a5f206b06fb9 // 88f4c3923bf900e204f606549be42a07 * 2^-299 {{0x03f805107cb68806ULL, 0x6d909c74fcc733e8ULL, 0x538484c19ef38c94ULL, 0xb424dc35095cd80fULL}}, // 10^-14 ~= b424dc35095cd80f 538484c19ef38c94 // 6d909c74fcc733e803f805107cb68806 * 2^-302 {{0x3660040d3092066bULL, 0x57a6e390ca38f653ULL, 0x0f9d37014bf60a10ULL, 0x901d7cf73ab0acd9ULL}}, // 10^-15 ~= 901d7cf73ab0acd9 f9d37014bf60a10 // 57a6e390ca38f6533660040d3092066b * 2^-305 {{0x23ccd3484db670abULL, 0xbf716c1add27f085ULL, 0x4c2ebe687989a9b3ULL, 0xe69594bec44de15bULL}}, // 10^-16 ~= e69594bec44de15b 4c2ebe687989a9b3 // bf716c1add27f08523ccd3484db670ab * 2^-309 {{0x4fd70f6d0af85a23ULL, 0xff8df0157db98d37ULL, 0x09befeb9fad487c2ULL, 0xb877aa3236a4b449ULL}}, // 10^-17 ~= b877aa3236a4b449 9befeb9fad487c2 // ff8df0157db98d374fd70f6d0af85a23 * 2^-312 {{0x0cac0c573bf9e1b6ULL, 0x32d7f344649470f9ULL, 0x3aff322e62439fcfULL, 0x9392ee8e921d5d07ULL}}, // 10^-18 ~= 9392ee8e921d5d07 3aff322e62439fcf // 32d7f344649470f90cac0c573bf9e1b6 * 2^-315 {{0xe11346f1f98fcf89ULL, 0x1e2652070753e7f4ULL, 0x2b31e9e3d06c32e5ULL, 0xec1e4a7db69561a5ULL}}, // 10^-19 ~= ec1e4a7db69561a5 2b31e9e3d06c32e5 // 1e2652070753e7f4e11346f1f98fcf89 * 2^-319 {{0x4da9058e613fd93aULL, 0x181ea8059f76532aULL, 0x88f4bb1ca6bcf584ULL, 0xbce5086492111aeaULL}}, // 10^-20 ~= bce5086492111aea 88f4bb1ca6bcf584 // 181ea8059f76532a4da9058e613fd93a * 2^-322 {{0xa48737a51a997a95ULL, 0x467eecd14c5ea8eeULL, 0xd3f6fc16ebca5e03ULL, 0x971da05074da7beeULL}}, // 10^-21 ~= 971da05074da7bee d3f6fc16ebca5e03 // 467eecd14c5ea8eea48737a51a997a95 * 2^-325 {{0x3a71f2a1c428c421ULL, 0x70cb148213caa7e4ULL, 0x5324c68b12dd6338ULL, 0xf1c90080baf72cb1ULL}}, // 10^-22 ~= f1c90080baf72cb1 5324c68b12dd6338 // 70cb148213caa7e43a71f2a1c428c421 * 2^-329 {{0x2ec18ee7d0209ce8ULL, 0x8d6f439b43088650ULL, 0x75b7053c0f178293ULL, 0xc16d9a0095928a27ULL}}, // 10^-23 ~= c16d9a0095928a27 75b7053c0f178293 // 8d6f439b430886502ec18ee7d0209ce8 * 2^-332 {{0xf23472530ce6e3edULL, 0xd78c3615cf3a050cULL, 0xc4926a9672793542ULL, 0x9abe14cd44753b52ULL}}, // 10^-24 ~= 9abe14cd44753b52 c4926a9672793542 // d78c3615cf3a050cf23472530ce6e3ed * 2^-335 {{0xe9ed83b814a49fe1ULL, 0x8c1389bc7ec33b47ULL, 0x3a83ddbd83f52204ULL, 0xf79687aed3eec551ULL}}, // 10^-25 ~= f79687aed3eec551 3a83ddbd83f52204 // 8c1389bc7ec33b47e9ed83b814a49fe1 * 2^-339 {{0x87f1362cdd507fe7ULL, 0x3cdc6e306568fc39ULL, 0x95364afe032a819dULL, 0xc612062576589ddaULL}}, // 10^-26 ~= c612062576589dda 95364afe032a819d // 3cdc6e306568fc3987f1362cdd507fe7 * 2^-342 {{0x9ff42b5717739986ULL, 0xca49f1c05120c9c7ULL, 0x775ea264cf55347dULL, 0x9e74d1b791e07e48ULL}}, // 10^-27 ~= 9e74d1b791e07e48 775ea264cf55347d // ca49f1c05120c9c79ff42b5717739986 * 2^-345 {{0xccb9def1bf1f5c09ULL, 0x76dcb60081ce0fa5ULL, 0x8bca9d6e188853fcULL, 0xfd87b5f28300ca0dULL}}, // 10^-28 ~= fd87b5f28300ca0d 8bca9d6e188853fc // 76dcb60081ce0fa5ccb9def1bf1f5c09 * 2^-349 {{0xa3c7e58e327f7cd4ULL, 0x5f16f80067d80c84ULL, 0x096ee45813a04330ULL, 0xcad2f7f5359a3b3eULL}}, // 10^-29 ~= cad2f7f5359a3b3e 96ee45813a04330 // 5f16f80067d80c84a3c7e58e327f7cd4 * 2^-352 {{0xb6398471c1ff9710ULL, 0x18df2ccd1fe00a03ULL, 0xa1258379a94d028dULL, 0xa2425ff75e14fc31ULL}}, // 10^-30 ~= a2425ff75e14fc31 a1258379a94d028d // 18df2ccd1fe00a03b6398471c1ff9710 * 2^-355 {{0xf82e038e34cc78daULL, 0x4718f0a419800802ULL, 0x80eacf948770ced7ULL, 0x81ceb32c4b43fcf4ULL}}, // 10^-31 ~= 81ceb32c4b43fcf4 80eacf948770ced7 // 4718f0a419800802f82e038e34cc78da * 2^-358 {{0x59e338e387ad8e29ULL, 0x0b5b1aa028ccd99eULL, 0x67de18eda5814af2ULL, 0xcfb11ead453994baULL}}, // 10^-32 ~= cfb11ead453994ba 67de18eda5814af2 // b5b1aa028ccd99e59e338e387ad8e29 * 2^-362 {{0x47e8fa4f9fbe0b54ULL, 0x6f7c154ced70ae18ULL, 0xecb1ad8aeacdd58eULL, 0xa6274bbdd0fadd61ULL}}, // 10^-33 ~= a6274bbdd0fadd61 ecb1ad8aeacdd58e // 6f7c154ced70ae1847e8fa4f9fbe0b54 * 2^-365 {{0xd320c83fb2fe6f76ULL, 0xbf967770bdf3be79ULL, 0xbd5af13bef0b113eULL, 0x84ec3c97da624ab4ULL}}, // 10^-34 ~= 84ec3c97da624ab4 bd5af13bef0b113e // bf967770bdf3be79d320c83fb2fe6f76 * 2^-368 {{0x85014065eb30b257ULL, 0x65bd8be79652ca5cULL, 0x955e4ec64b44e864ULL, 0xd4ad2dbfc3d07787ULL}}, // 10^-35 ~= d4ad2dbfc3d07787 955e4ec64b44e864 // 65bd8be79652ca5c85014065eb30b257 * 2^-372 {{0xd0cdcd1e55c08eacULL, 0xeafe098611dbd516ULL, 0xdde50bd1d5d0b9e9ULL, 0xaa242499697392d2ULL}}, // 10^-36 ~= aa242499697392d2 dde50bd1d5d0b9e9 // eafe098611dbd516d0cdcd1e55c08eac * 2^-375 {{0x40a4a418449a0bbdULL, 0xbbfe6e04db164412ULL, 0x7e50d64177da2e54ULL, 0x881cea14545c7575ULL}}, // 10^-37 ~= 881cea14545c7575 7e50d64177da2e54 // bbfe6e04db16441240a4a418449a0bbd * 2^-378 {{0x9aa1068d3a9012c8ULL, 0x2cca49a15e8a0683ULL, 0x96e7bd358c904a21ULL, 0xd9c7dced53c72255ULL}}, // 10^-38 ~= d9c7dced53c72255 96e7bd358c904a21 // 2cca49a15e8a06839aa1068d3a9012c8 * 2^-382 {{0x154d9ed7620cdbd3ULL, 0x8a3b6e1ab2080536ULL, 0xabec975e0a0d081aULL, 0xae397d8aa96c1b77ULL}}, // 10^-39 ~= ae397d8aa96c1b77 abec975e0a0d081a // 8a3b6e1ab2080536154d9ed7620cdbd3 * 2^-385 {{0x443e18ac4e70afdcULL, 0x3b62be7bc1a0042bULL, 0x2323ac4b3b3da015ULL, 0x8b61313bbabce2c6ULL}}, // 10^-40 ~= 8b61313bbabce2c6 2323ac4b3b3da015 // 3b62be7bc1a0042b443e18ac4e70afdc * 2^-388 {{0x6d30277a171ab2f9ULL, 0x5f0463f935ccd378ULL, 0x6b6c46dec52f6688ULL, 0xdf01e85f912e37a3ULL}}, // 10^-41 ~= df01e85f912e37a3 6b6c46dec52f6688 // 5f0463f935ccd3786d30277a171ab2f9 * 2^-392 {{0x8a8cec61ac155bfbULL, 0x7f36b660f7d70f93ULL, 0x55f038b237591ed3ULL, 0xb267ed1940f1c61cULL}}, // 10^-42 ~= b267ed1940f1c61c 55f038b237591ed3 // 7f36b660f7d70f938a8cec61ac155bfb * 2^-395 {{0x3ba3f04e23444996ULL, 0xcc2bc51a5fdf3fa9ULL, 0x77f3608e92adb242ULL, 0x8eb98a7a9a5b04e3ULL}}, // 10^-43 ~= 8eb98a7a9a5b04e3 77f3608e92adb242 // cc2bc51a5fdf3fa93ba3f04e23444996 * 2^-398 {{0xf9064d49d206dc22ULL, 0xe046082a32fecc41ULL, 0x8cb89a7db77c506aULL, 0xe45c10c42a2b3b05ULL}}, // 10^-44 ~= e45c10c42a2b3b05 8cb89a7db77c506a // e046082a32fecc41f9064d49d206dc22 * 2^-402 {{0xfa6b7107db38b01bULL, 0x4d04d354f598a367ULL, 0x3d607b97c5fd0d22ULL, 0xb6b00d69bb55c8d1ULL}}, // 10^-45 ~= b6b00d69bb55c8d1 3d607b97c5fd0d22 // 4d04d354f598a367fa6b7107db38b01b * 2^-405 {{0xfb8927397c2d59b0ULL, 0x3d9d75dd9146e91fULL, 0xcab3961304ca70e8ULL, 0x9226712162ab070dULL}}, // 10^-46 ~= 9226712162ab070d cab3961304ca70e8 // 3d9d75dd9146e91ffb8927397c2d59b0 * 2^-408 {{0xf8db71f5937bc2b2ULL, 0xc8fbefc8e87174ffULL, 0xaab8f01e6e10b4a6ULL, 0xe9d71b689dde71afULL}}, // 10^-47 ~= e9d71b689dde71af aab8f01e6e10b4a6 // c8fbefc8e87174fff8db71f5937bc2b2 * 2^-412 {{0x2d7c5b2adc630228ULL, 0x3a63263a538df733ULL, 0x5560c018580d5d52ULL, 0xbb127c53b17ec159ULL}}, // 10^-48 ~= bb127c53b17ec159 5560c018580d5d52 // 3a63263a538df7332d7c5b2adc630228 * 2^-415 {{0x24637c2249e8ce87ULL, 0x2eb5b82ea93e5f5cULL, 0xdde7001379a44aa8ULL, 0x95a8637627989aadULL}}, // 10^-49 ~= 95a8637627989aad dde7001379a44aa8 // 2eb5b82ea93e5f5c24637c2249e8ce87 * 2^-418 {{0x3a38c69d430e173eULL, 0x4abc59e441fd6560ULL, 0x963e66858f6d4440ULL, 0xef73d256a5c0f77cULL}}, // 10^-50 ~= ef73d256a5c0f77c 963e66858f6d4440 // 4abc59e441fd65603a38c69d430e173e * 2^-422 {{0x94fa387dcf3e78feULL, 0x6efd14b69b311de6ULL, 0xde98520472bdd033ULL, 0xbf8fdb78849a5f96ULL}}, // 10^-51 ~= bf8fdb78849a5f96 de98520472bdd033 // 6efd14b69b311de694fa387dcf3e78fe * 2^-425 {{0xaa61c6cb0c31fa65ULL, 0x259743c548f417ebULL, 0xe546a8038efe4029ULL, 0x993fe2c6d07b7fabULL}}, // 10^-52 ~= 993fe2c6d07b7fab e546a8038efe4029 // 259743c548f417ebaa61c6cb0c31fa65 * 2^-428 {{0xaa360ade79e990a2ULL, 0x3c25393ba7ecf312ULL, 0xd53dd99f4b3066a8ULL, 0xf53304714d9265dfULL}}, // 10^-53 ~= f53304714d9265df d53dd99f4b3066a8 // 3c25393ba7ecf312aa360ade79e990a2 * 2^-432 {{0x882b3be52e5473b5ULL, 0x96842dc95323f5a8ULL, 0xaa97e14c3c26b886ULL, 0xc428d05aa4751e4cULL}}, // 10^-54 ~= c428d05aa4751e4c aa97e14c3c26b886 // 96842dc95323f5a8882b3be52e5473b5 * 2^-435 {{0xd355c98425105c91ULL, 0xab9cf16ddc1cc486ULL, 0x55464dd69685606bULL, 0x9ced737bb6c4183dULL}}, // 10^-55 ~= 9ced737bb6c4183d 55464dd69685606b // ab9cf16ddc1cc486d355c98425105c91 * 2^-438 {{0xebbc75a03b4d60e7ULL, 0xac2e4f162cfad40aULL, 0xeed6e2f0f0d56712ULL, 0xfb158592be068d2eULL}}, // 10^-56 ~= fb158592be068d2e eed6e2f0f0d56712 // ac2e4f162cfad40aebbc75a03b4d60e7 * 2^-442 {{0x8963914cfc3de71fULL, 0x568b727823fbdcd5ULL, 0xf245825a5a445275ULL, 0xc8de047564d20a8bULL}}, // 10^-57 ~= c8de047564d20a8b f245825a5a445275 // 568b727823fbdcd58963914cfc3de71f * 2^-445 {{0xd44fa770c9cb1f4cULL, 0x453c5b934ffcb0aaULL, 0x5b6aceaeae9d0ec4ULL, 0xa0b19d2ab70e6ed6ULL}}, // 10^-58 ~= a0b19d2ab70e6ed6 5b6aceaeae9d0ec4 // 453c5b934ffcb0aad44fa770c9cb1f4c * 2^-448 {{0xdd0c85f3d4a27f70ULL, 0x37637c75d996f3bbULL, 0xe2bbd88bbee40bd0ULL, 0x808e17555f3ebf11ULL}}, // 10^-59 ~= 808e17555f3ebf11 e2bbd88bbee40bd0 // 37637c75d996f3bbdd0c85f3d4a27f70 * 2^-451 {{0x61ada31fba9d98b3ULL, 0x256bfa5628f185f9ULL, 0x3792f412cb06794dULL, 0xcdb02555653131b6ULL}}, // 10^-60 ~= cdb02555653131b6 3792f412cb06794d // 256bfa5628f185f961ada31fba9d98b3 * 2^-455 {{0xe7be1c196217ad5cULL, 0x51232eab53f46b2dULL, 0x5fa8c3423c052dd7ULL, 0xa48ceaaab75a8e2bULL}}, // 10^-61 ~= a48ceaaab75a8e2b 5fa8c3423c052dd7 // 51232eab53f46b2de7be1c196217ad5c * 2^-458 {{0x52fe7ce11b46244aULL, 0x40e8f222a99055beULL, 0x1953cf68300424acULL, 0x83a3eeeef9153e89ULL}}, // 10^-62 ~= 83a3eeeef9153e89 1953cf68300424ac // 40e8f222a99055be52fe7ce11b46244a * 2^-461 {{0x51972e34f8703a10ULL, 0x34a7e9d10f4d55fdULL, 0x8eec7f0d19a03aadULL, 0xd29fe4b18e88640eULL}}, // 10^-63 ~= d29fe4b18e88640e 8eec7f0d19a03aad // 34a7e9d10f4d55fd51972e34f8703a10 * 2^-465 {{0x0e128b5d938cfb40ULL, 0x2a1fee40d90aab31ULL, 0x3f2398d747b36224ULL, 0xa87fea27a539e9a5ULL}}, // 10^-64 ~= a87fea27a539e9a5 3f2398d747b36224 // 2a1fee40d90aab310e128b5d938cfb40 * 2^-468 {{0x3e753c4adc70c900ULL, 0xbb4cbe9a473bbc27ULL, 0x98e947129fc2b4e9ULL, 0x86ccbb52ea94baeaULL}}, // 10^-65 ~= 86ccbb52ea94baea 98e947129fc2b4e9 // bb4cbe9a473bbc273e753c4adc70c900 * 2^-471 {{0x30bb93aafa4e0e66ULL, 0x9214642a0b92c6a5ULL, 0x5b0ed81dcc6abb0fULL, 0xd7adf884aa879177ULL}}, // 10^-66 ~= d7adf884aa879177 5b0ed81dcc6abb0f // 9214642a0b92c6a530bb93aafa4e0e66 * 2^-475 {{0xc0960fbbfb71a51fULL, 0xa8105021a2dbd21dULL, 0xe272467e3d222f3fULL, 0xac8b2d36eed2dac5ULL}}, // 10^-67 ~= ac8b2d36eed2dac5 e272467e3d222f3f // a8105021a2dbd21dc0960fbbfb71a51f * 2^-478 {{0x66de72fcc927b74cULL, 0xb9a6a6814f1641b1ULL, 0x1b8e9ecb641b58ffULL, 0x8a08f0f8bf0f156bULL}}, // 10^-68 ~= 8a08f0f8bf0f156b 1b8e9ecb641b58ff // b9a6a6814f1641b166de72fcc927b74c * 2^-481 {{0xd7ca5194750c5879ULL, 0xf5d770cee4f0691bULL, 0xf8e431456cf88e65ULL, 0xdcdb1b2798182244ULL}}, // 10^-69 ~= dcdb1b2798182244 f8e431456cf88e65 // f5d770cee4f0691bd7ca5194750c5879 * 2^-485 {{0xdfd50e105da379faULL, 0x9179270bea59edafULL, 0x2d835a9df0c6d851ULL, 0xb0af48ec79ace837ULL}}, // 10^-70 ~= b0af48ec79ace837 2d835a9df0c6d851 // 9179270bea59edafdfd50e105da379fa * 2^-488 {{0x19773e737e1c6195ULL, 0x0dfa85a321e18af3ULL, 0x579c487e5a38ad0eULL, 0x8d590723948a535fULL}}, // 10^-71 ~= 8d590723948a535f 579c487e5a38ad0e // dfa85a321e18af319773e737e1c6195 * 2^-491 {{0xf58b971f302d68efULL, 0x165da29e9c9c1184ULL, 0x25c6da63c38de1b0ULL, 0xe2280b6c20dd5232ULL}}, // 10^-72 ~= e2280b6c20dd5232 25c6da63c38de1b0 // 165da29e9c9c1184f58b971f302d68ef * 2^-495 {{0xc46fac18f3578725ULL, 0x4517b54bb07cdad0ULL, 0x1e38aeb6360b1af3ULL, 0xb4ecd5f01a4aa828ULL}}, // 10^-73 ~= b4ecd5f01a4aa828 1e38aeb6360b1af3 // 4517b54bb07cdad0c46fac18f3578725 * 2^-498 {{0x36bfbce0c2ac6c1eULL, 0x9dac910959fd7bdaULL, 0xb1c6f22b5e6f48c2ULL, 0x90bd77f3483bb9b9ULL}}, // 10^-74 ~= 90bd77f3483bb9b9 b1c6f22b5e6f48c2 // 9dac910959fd7bda36bfbce0c2ac6c1e * 2^-501 {{0x2465fb01377a4696ULL, 0x2f7a81a88ffbf95dULL, 0xb60b1d1230b20e04ULL, 0xe7958cb87392c2c2ULL}} // 10^-75 ~= e7958cb87392c2c2 b60b1d1230b20e04 // 2f7a81a88ffbf95d2465fb01377a4696 * 2^-505 }; unsigned int bid_Ex256m256[] = { 3, // 259 - 256, Ex = 259 6, // 262 - 256, Ex = 262 9, // 265 - 256, Ex = 265 13, // 269 - 256, Ex = 269 16, // 272 - 256, Ex = 272 19, // 275 - 256, Ex = 275 23, // 279 - 256, Ex = 279 26, // 282 - 256, Ex = 282 29, // 285 - 256, Ex = 285 33, // 289 - 256, Ex = 289 36, // 292 - 256, Ex = 292 39, // 295 - 256, Ex = 295 43, // 299 - 256, Ex = 299 46, // 302 - 256, Ex = 302 49, // 305 - 256, Ex = 305 53, // 309 - 256, Ex = 309 56, // 312 - 256, Ex = 312 59, // 315 - 256, Ex = 315 63, // 319 - 256, Ex = 319 2, // 322 - 320, Ex = 322 5, // 325 - 320, Ex = 325 9, // 329 - 320, Ex = 329 12, // 332 - 320, Ex = 332 15, // 335 - 320, Ex = 335 19, // 339 - 320, Ex = 339 22, // 342 - 320, Ex = 342 25, // 345 - 320, Ex = 345 29, // 349 - 320, Ex = 349 32, // 352 - 320, Ex = 352 35, // 355 - 320, Ex = 355 38, // 358 - 320, Ex = 358 42, // 362 - 320, Ex = 362 45, // 365 - 320, Ex = 365 48, // 368 - 320, Ex = 368 52, // 372 - 320, Ex = 372 55, // 375 - 320, Ex = 375 58, // 378 - 320, Ex = 378 62, // 382 - 320, Ex = 382 1, // 385 - 384, Ex = 385 4, // 388 - 384, Ex = 388 8, // 392 - 384, Ex = 392 11, // 395 - 384, Ex = 395 14, // 398 - 384, Ex = 398 18, // 402 - 384, Ex = 402 21, // 405 - 384, Ex = 405 24, // 408 - 384, Ex = 408 28, // 412 - 384, Ex = 412 31, // 415 - 384, Ex = 415 34, // 418 - 384, Ex = 418 38, // 422 - 384, Ex = 422 41, // 425 - 384, Ex = 425 44, // 428 - 384, Ex = 428 48, // 432 - 384, Ex = 432 51, // 435 - 384, Ex = 435 54, // 438 - 384, Ex = 438 58, // 442 - 384, Ex = 442 61, // 445 - 384, Ex = 445 0, // 448 - 448, Ex = 448 3, // 451 - 448, Ex = 451 7, // 455 - 448, Ex = 455 10, // 458 - 448, Ex = 458 13, // 461 - 448, Ex = 461 17, // 465 - 448, Ex = 465 20, // 468 - 448, Ex = 468 23, // 471 - 448, Ex = 471 27, // 475 - 448, Ex = 475 30, // 478 - 448, Ex = 478 33, // 481 - 448, Ex = 481 37, // 485 - 448, Ex = 485 40, // 488 - 448, Ex = 488 43, // 491 - 448, Ex = 491 47, // 495 - 448, Ex = 495 50, // 498 - 448, Ex = 498 53, // 501 - 448, Ex = 501 57 // 505 - 448, Ex = 505 }; BID_UINT64 bid_half256[] = { 0x0000000000000004ULL, // half / 2^256 = 4 0x0000000000000020ULL, // half / 2^256 = 20 0x0000000000000100ULL, // half / 2^256 = 100 0x0000000000001000ULL, // half / 2^256 = 1000 0x0000000000008000ULL, // half / 2^256 = 8000 0x0000000000040000ULL, // half / 2^256 = 40000 0x0000000000400000ULL, // half / 2^256 = 400000 0x0000000002000000ULL, // half / 2^256 = 2000000 0x0000000010000000ULL, // half / 2^256 = 10000000 0x0000000100000000ULL, // half / 2^256 = 100000000 0x0000000800000000ULL, // half / 2^256 = 800000000 0x0000004000000000ULL, // half / 2^256 = 4000000000 0x0000040000000000ULL, // half / 2^256 = 40000000000 0x0000200000000000ULL, // half / 2^256 = 200000000000 0x0001000000000000ULL, // half / 2^256 = 1000000000000 0x0010000000000000ULL, // half / 2^256 = 10000000000000 0x0080000000000000ULL, // half / 2^256 = 80000000000000 0x0400000000000000ULL, // half / 2^256 = 400000000000000 0x4000000000000000ULL, // half / 2^256 = 4000000000000000 0x0000000000000002ULL, // half / 2^320 = 2 0x0000000000000010ULL, // half / 2^320 = 10 0x0000000000000100ULL, // half / 2^320 = 100 0x0000000000000800ULL, // half / 2^320 = 800 0x0000000000004000ULL, // half / 2^320 = 4000 0x0000000000040000ULL, // half / 2^320 = 40000 0x0000000000200000ULL, // half / 2^320 = 200000 0x0000000001000000ULL, // half / 2^320 = 1000000 0x0000000010000000ULL, // half / 2^320 = 10000000 0x0000000080000000ULL, // half / 2^320 = 80000000 0x0000000400000000ULL, // half / 2^320 = 400000000 0x0000002000000000ULL, // half / 2^320 = 2000000000 0x0000020000000000ULL, // half / 2^320 = 20000000000 0x0000100000000000ULL, // half / 2^320 = 100000000000 0x0000800000000000ULL, // half / 2^320 = 800000000000 0x0008000000000000ULL, // half / 2^320 = 8000000000000 0x0040000000000000ULL, // half / 2^320 = 40000000000000 0x0200000000000000ULL, // half / 2^320 = 200000000000000 0x2000000000000000ULL, // half / 2^320 = 2000000000000000 0x0000000000000001ULL, // half / 2^384 = 1 0x0000000000000008ULL, // half / 2^384 = 8 0x0000000000000080ULL, // half / 2^384 = 80 0x0000000000000400ULL, // half / 2^384 = 400 0x0000000000002000ULL, // half / 2^384 = 2000 0x0000000000020000ULL, // half / 2^384 = 20000 0x0000000000100000ULL, // half / 2^384 = 100000 0x0000000000800000ULL, // half / 2^384 = 800000 0x0000000008000000ULL, // half / 2^384 = 8000000 0x0000000040000000ULL, // half / 2^384 = 40000000 0x0000000200000000ULL, // half / 2^384 = 200000000 0x0000002000000000ULL, // half / 2^384 = 2000000000 0x0000010000000000ULL, // half / 2^384 = 10000000000 0x0000080000000000ULL, // half / 2^384 = 80000000000 0x0000800000000000ULL, // half / 2^384 = 800000000000 0x0004000000000000ULL, // half / 2^384 = 4000000000000 0x0020000000000000ULL, // half / 2^384 = 20000000000000 0x0200000000000000ULL, // half / 2^384 = 200000000000000 0x1000000000000000ULL, // half / 2^384 = 1000000000000000 0x8000000000000000ULL, // half / 2^384 = 8000000000000000 0x0000000000000004ULL, // half / 2^448 = 4 0x0000000000000040ULL, // half / 2^448 = 40 0x0000000000000200ULL, // half / 2^448 = 200 0x0000000000001000ULL, // half / 2^448 = 1000 0x0000000000010000ULL, // half / 2^448 = 10000 0x0000000000080000ULL, // half / 2^448 = 80000 0x0000000000400000ULL, // half / 2^448 = 400000 0x0000000004000000ULL, // half / 2^448 = 4000000 0x0000000020000000ULL, // half / 2^448 = 20000000 0x0000000100000000ULL, // half / 2^448 = 100000000 0x0000001000000000ULL, // half / 2^448 = 1000000000 0x0000008000000000ULL, // half / 2^448 = 8000000000 0x0000040000000000ULL, // half / 2^448 = 40000000000 0x0000400000000000ULL, // half / 2^448 = 400000000000 0x0002000000000000ULL, // half / 2^448 = 2000000000000 0x0010000000000000ULL, // half / 2^448 = 10000000000000 0x0100000000000000ULL // half / 2^448 = 100000000000000 }; BID_UINT64 bid_mask256[] = { 0x0000000000000007ULL, // mask / 2^256 0x000000000000003fULL, // mask / 2^256 0x00000000000001ffULL, // mask / 2^256 0x0000000000001fffULL, // mask / 2^256 0x000000000000ffffULL, // mask / 2^256 0x000000000007ffffULL, // mask / 2^256 0x00000000007fffffULL, // mask / 2^256 0x0000000003ffffffULL, // mask / 2^256 0x000000001fffffffULL, // mask / 2^256 0x00000001ffffffffULL, // mask / 2^256 0x0000000fffffffffULL, // mask / 2^256 0x0000007fffffffffULL, // mask / 2^256 0x000007ffffffffffULL, // mask / 2^256 0x00003fffffffffffULL, // mask / 2^256 0x0001ffffffffffffULL, // mask / 2^256 0x001fffffffffffffULL, // mask / 2^256 0x00ffffffffffffffULL, // mask / 2^256 0x07ffffffffffffffULL, // mask / 2^256 0x7fffffffffffffffULL, // mask / 2^256 0x0000000000000003ULL, // mask / 2^320 0x000000000000001fULL, // mask / 2^320 0x00000000000001ffULL, // mask / 2^320 0x0000000000000fffULL, // mask / 2^320 0x0000000000007fffULL, // mask / 2^320 0x000000000007ffffULL, // mask / 2^320 0x00000000003fffffULL, // mask / 2^320 0x0000000001ffffffULL, // mask / 2^320 0x000000001fffffffULL, // mask / 2^320 0x00000000ffffffffULL, // mask / 2^320 0x00000007ffffffffULL, // mask / 2^320 0x0000003fffffffffULL, // mask / 2^320 0x000003ffffffffffULL, // mask / 2^320 0x00001fffffffffffULL, // mask / 2^320 0x0000ffffffffffffULL, // mask / 2^320 0x000fffffffffffffULL, // mask / 2^320 0x007fffffffffffffULL, // mask / 2^320 0x03ffffffffffffffULL, // mask / 2^320 0x3fffffffffffffffULL, // mask / 2^320 0x0000000000000001ULL, // mask / 2^384 0x000000000000000fULL, // mask / 2^384 0x00000000000000ffULL, // mask / 2^384 0x00000000000007ffULL, // mask / 2^384 0x0000000000003fffULL, // mask / 2^384 0x000000000003ffffULL, // mask / 2^384 0x00000000001fffffULL, // mask / 2^384 0x0000000000ffffffULL, // mask / 2^384 0x000000000fffffffULL, // mask / 2^384 0x000000007fffffffULL, // mask / 2^384 0x00000003ffffffffULL, // mask / 2^384 0x0000003fffffffffULL, // mask / 2^384 0x000001ffffffffffULL, // mask / 2^384 0x00000fffffffffffULL, // mask / 2^384 0x0000ffffffffffffULL, // mask / 2^384 0x0007ffffffffffffULL, // mask / 2^384 0x003fffffffffffffULL, // mask / 2^384 0x03ffffffffffffffULL, // mask / 2^384 0x1fffffffffffffffULL, // mask / 2^384 0xffffffffffffffffULL, // mask / 2^384 0x0000000000000007ULL, // mask / 2^448 0x000000000000007fULL, // mask / 2^448 0x00000000000003ffULL, // mask / 2^448 0x0000000000001fffULL, // mask / 2^448 0x000000000001ffffULL, // mask / 2^448 0x00000000000fffffULL, // mask / 2^448 0x00000000007fffffULL, // mask / 2^448 0x0000000007ffffffULL, // mask / 2^448 0x000000003fffffffULL, // mask / 2^448 0x00000001ffffffffULL, // mask / 2^448 0x0000001fffffffffULL, // mask / 2^448 0x000000ffffffffffULL, // mask / 2^448 0x000007ffffffffffULL, // mask / 2^448 0x00007fffffffffffULL, // mask / 2^448 0x0003ffffffffffffULL, // mask / 2^448 0x001fffffffffffffULL, // mask / 2^448 0x01ffffffffffffffULL // mask / 2^448 }; BID_UINT256 bid_ten2mxtrunc256[] = { {{0xccccccccccccccccULL, 0xccccccccccccccccULL, 0xccccccccccccccccULL, 0xccccccccccccccccULL}}, // (ten2mx >> 256) = cccccccccccccccc cccccccccccccccc // cccccccccccccccccccccccccccccccc {{0x70a3d70a3d70a3d7ULL, 0xd70a3d70a3d70a3dULL, 0x3d70a3d70a3d70a3ULL, 0xa3d70a3d70a3d70aULL}}, // (ten2mx >> 256) = a3d70a3d70a3d70a 3d70a3d70a3d70a3 // d70a3d70a3d70a3d70a3d70a3d70a3d7 {{0xc083126e978d4fdfULL, 0x78d4fdf3b645a1caULL, 0x645a1cac083126e9ULL, 0x83126e978d4fdf3bULL}}, // (ten2mx >> 256) = 83126e978d4fdf3b 645a1cac083126e9 // 78d4fdf3b645a1cac083126e978d4fdf {{0x67381d7dbf487fcbULL, 0xc154c985f06f6944ULL, 0xd3c36113404ea4a8ULL, 0xd1b71758e219652bULL}}, // (ten2mx >> 256) = d1b71758e219652b d3c36113404ea4a8 // c154c985f06f694467381d7dbf487fcb {{0x85c67dfe32a0663cULL, 0xcddd6e04c0592103ULL, 0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}}, // (ten2mx >> 256) = a7c5ac471b478423 fcf80dc33721d53 // cddd6e04c059210385c67dfe32a0663c {{0x37d1fe64f54d1e96ULL, 0xd7e45803cd141a69ULL, 0xa63f9a49c2c1b10fULL, 0x8637bd05af6c69b5ULL}}, // (ten2mx >> 256) = 8637bd05af6c69b5 a63f9a49c2c1b10f // d7e45803cd141a6937d1fe64f54d1e96 {{0x8c8330a1887b6424ULL, 0x8ca08cd2e1b9c3dbULL, 0x3d32907604691b4cULL, 0xd6bf94d5e57a42bcULL}}, // (ten2mx >> 256) = d6bf94d5e57a42bc 3d32907604691b4c // 8ca08cd2e1b9c3db8c8330a1887b6424 {{0x7068f3b46d2f8350ULL, 0x3d4d3d758161697cULL, 0xfdc20d2b36ba7c3dULL, 0xabcc77118461cefcULL}}, // (ten2mx >> 256) = abcc77118461cefc fdc20d2b36ba7c3d // 3d4d3d758161697c7068f3b46d2f8350 {{0xf387295d242602a6ULL, 0xfdd7645e011abac9ULL, 0x31680a88f8953030ULL, 0x89705f4136b4a597ULL}}, // (ten2mx >> 256) = 89705f4136b4a597 31680a88f8953030 // fdd7645e011abac9f387295d242602a6 {{0xb8d8422ea03cd10aULL, 0x2fbf06fcce912adcULL, 0xb573440e5a884d1bULL, 0xdbe6fecebdedd5beULL}}, // (ten2mx >> 256) = dbe6fecebdedd5be b573440e5a884d1b // 2fbf06fcce912adcb8d8422ea03cd10a {{0x93e034f219ca40d5ULL, 0xf2ff38ca3eda88b0ULL, 0xf78f69a51539d748ULL, 0xafebff0bcb24aafeULL}}, // (ten2mx >> 256) = afebff0bcb24aafe f78f69a51539d748 // f2ff38ca3eda88b093e034f219ca40d5 {{0x4319c3f4e16e9a44ULL, 0xf598fa3b657ba08dULL, 0xf93f87b7442e45d3ULL, 0x8cbccc096f5088cbULL}}, // (ten2mx >> 256) = 8cbccc096f5088cb f93f87b7442e45d3 // f598fa3b657ba08d4319c3f4e16e9a44 {{0x04f606549be42a06ULL, 0x88f4c3923bf900e2ULL, 0x2865a5f206b06fb9ULL, 0xe12e13424bb40e13ULL}}, // (ten2mx >> 256) = e12e13424bb40e13 2865a5f206b06fb9 // 88f4c3923bf900e204f606549be42a06 {{0x03f805107cb68805ULL, 0x6d909c74fcc733e8ULL, 0x538484c19ef38c94ULL, 0xb424dc35095cd80fULL}}, // (ten2mx >> 256) = b424dc35095cd80f 538484c19ef38c94 // 6d909c74fcc733e803f805107cb68805 {{0x3660040d3092066aULL, 0x57a6e390ca38f653ULL, 0x0f9d37014bf60a10ULL, 0x901d7cf73ab0acd9ULL}}, // (ten2mx >> 256) = 901d7cf73ab0acd9 f9d37014bf60a10 // 57a6e390ca38f6533660040d3092066a {{0x23ccd3484db670aaULL, 0xbf716c1add27f085ULL, 0x4c2ebe687989a9b3ULL, 0xe69594bec44de15bULL}}, // (ten2mx >> 256) = e69594bec44de15b 4c2ebe687989a9b3 // bf716c1add27f08523ccd3484db670aa {{0x4fd70f6d0af85a22ULL, 0xff8df0157db98d37ULL, 0x09befeb9fad487c2ULL, 0xb877aa3236a4b449ULL}}, // (ten2mx >> 256) = b877aa3236a4b449 9befeb9fad487c2 // ff8df0157db98d374fd70f6d0af85a22 {{0x0cac0c573bf9e1b5ULL, 0x32d7f344649470f9ULL, 0x3aff322e62439fcfULL, 0x9392ee8e921d5d07ULL}}, // (ten2mx >> 256) = 9392ee8e921d5d07 3aff322e62439fcf // 32d7f344649470f90cac0c573bf9e1b5 {{0xe11346f1f98fcf88ULL, 0x1e2652070753e7f4ULL, 0x2b31e9e3d06c32e5ULL, 0xec1e4a7db69561a5ULL}}, // (ten2mx >> 256) = ec1e4a7db69561a5 2b31e9e3d06c32e5 // 1e2652070753e7f4e11346f1f98fcf88 {{0x4da9058e613fd939ULL, 0x181ea8059f76532aULL, 0x88f4bb1ca6bcf584ULL, 0xbce5086492111aeaULL}}, // (ten2mx >> 256) = bce5086492111aea 88f4bb1ca6bcf584 // 181ea8059f76532a4da9058e613fd939 {{0xa48737a51a997a94ULL, 0x467eecd14c5ea8eeULL, 0xd3f6fc16ebca5e03ULL, 0x971da05074da7beeULL}}, // (ten2mx >> 256) = 971da05074da7bee d3f6fc16ebca5e03 // 467eecd14c5ea8eea48737a51a997a94 {{0x3a71f2a1c428c420ULL, 0x70cb148213caa7e4ULL, 0x5324c68b12dd6338ULL, 0xf1c90080baf72cb1ULL}}, // (ten2mx >> 256) = f1c90080baf72cb1 5324c68b12dd6338 // 70cb148213caa7e43a71f2a1c428c420 {{0x2ec18ee7d0209ce7ULL, 0x8d6f439b43088650ULL, 0x75b7053c0f178293ULL, 0xc16d9a0095928a27ULL}}, // (ten2mx >> 256) = c16d9a0095928a27 75b7053c0f178293 // 8d6f439b430886502ec18ee7d0209ce7 {{0xf23472530ce6e3ecULL, 0xd78c3615cf3a050cULL, 0xc4926a9672793542ULL, 0x9abe14cd44753b52ULL}}, // (ten2mx >> 256) = 9abe14cd44753b52 c4926a9672793542 // d78c3615cf3a050cf23472530ce6e3ec {{0xe9ed83b814a49fe0ULL, 0x8c1389bc7ec33b47ULL, 0x3a83ddbd83f52204ULL, 0xf79687aed3eec551ULL}}, // (ten2mx >> 256) = f79687aed3eec551 3a83ddbd83f52204 // 8c1389bc7ec33b47e9ed83b814a49fe0 {{0x87f1362cdd507fe6ULL, 0x3cdc6e306568fc39ULL, 0x95364afe032a819dULL, 0xc612062576589ddaULL}}, // (ten2mx >> 256) = c612062576589dda 95364afe032a819d // 3cdc6e306568fc3987f1362cdd507fe6 {{0x9ff42b5717739985ULL, 0xca49f1c05120c9c7ULL, 0x775ea264cf55347dULL, 0x9e74d1b791e07e48ULL}}, // (ten2mx >> 256) = 9e74d1b791e07e48 775ea264cf55347d // ca49f1c05120c9c79ff42b5717739985 {{0xccb9def1bf1f5c08ULL, 0x76dcb60081ce0fa5ULL, 0x8bca9d6e188853fcULL, 0xfd87b5f28300ca0dULL}}, // (ten2mx >> 256) = fd87b5f28300ca0d 8bca9d6e188853fc // 76dcb60081ce0fa5ccb9def1bf1f5c08 {{0xa3c7e58e327f7cd3ULL, 0x5f16f80067d80c84ULL, 0x096ee45813a04330ULL, 0xcad2f7f5359a3b3eULL}}, // (ten2mx >> 256) = cad2f7f5359a3b3e 96ee45813a04330 // 5f16f80067d80c84a3c7e58e327f7cd3 {{0xb6398471c1ff970fULL, 0x18df2ccd1fe00a03ULL, 0xa1258379a94d028dULL, 0xa2425ff75e14fc31ULL}}, // (ten2mx >> 256) = a2425ff75e14fc31 a1258379a94d028d // 18df2ccd1fe00a03b6398471c1ff970f {{0xf82e038e34cc78d9ULL, 0x4718f0a419800802ULL, 0x80eacf948770ced7ULL, 0x81ceb32c4b43fcf4ULL}}, // (ten2mx >> 256) = 81ceb32c4b43fcf4 80eacf948770ced7 // 4718f0a419800802f82e038e34cc78d9 {{0x59e338e387ad8e28ULL, 0x0b5b1aa028ccd99eULL, 0x67de18eda5814af2ULL, 0xcfb11ead453994baULL}}, // (ten2mx >> 256) = cfb11ead453994ba 67de18eda5814af2 // b5b1aa028ccd99e59e338e387ad8e28 {{0x47e8fa4f9fbe0b53ULL, 0x6f7c154ced70ae18ULL, 0xecb1ad8aeacdd58eULL, 0xa6274bbdd0fadd61ULL}}, // (ten2mx >> 256) = a6274bbdd0fadd61 ecb1ad8aeacdd58e // 6f7c154ced70ae1847e8fa4f9fbe0b53 {{0xd320c83fb2fe6f75ULL, 0xbf967770bdf3be79ULL, 0xbd5af13bef0b113eULL, 0x84ec3c97da624ab4ULL}}, // (ten2mx >> 256) = 84ec3c97da624ab4 bd5af13bef0b113e // bf967770bdf3be79d320c83fb2fe6f75 {{0x85014065eb30b256ULL, 0x65bd8be79652ca5cULL, 0x955e4ec64b44e864ULL, 0xd4ad2dbfc3d07787ULL}}, // (ten2mx >> 256) = d4ad2dbfc3d07787 955e4ec64b44e864 // 65bd8be79652ca5c85014065eb30b256 {{0xd0cdcd1e55c08eabULL, 0xeafe098611dbd516ULL, 0xdde50bd1d5d0b9e9ULL, 0xaa242499697392d2ULL}}, // (ten2mx >> 256) = aa242499697392d2 dde50bd1d5d0b9e9 // eafe098611dbd516d0cdcd1e55c08eab {{0x40a4a418449a0bbcULL, 0xbbfe6e04db164412ULL, 0x7e50d64177da2e54ULL, 0x881cea14545c7575ULL}}, // (ten2mx >> 256) = 881cea14545c7575 7e50d64177da2e54 // bbfe6e04db16441240a4a418449a0bbc {{0x9aa1068d3a9012c7ULL, 0x2cca49a15e8a0683ULL, 0x96e7bd358c904a21ULL, 0xd9c7dced53c72255ULL}}, // (ten2mx >> 256) = d9c7dced53c72255 96e7bd358c904a21 // 2cca49a15e8a06839aa1068d3a9012c7 {{0x154d9ed7620cdbd2ULL, 0x8a3b6e1ab2080536ULL, 0xabec975e0a0d081aULL, 0xae397d8aa96c1b77ULL}}, // (ten2mx >> 256) = ae397d8aa96c1b77 abec975e0a0d081a // 8a3b6e1ab2080536154d9ed7620cdbd2 {{0x443e18ac4e70afdbULL, 0x3b62be7bc1a0042bULL, 0x2323ac4b3b3da015ULL, 0x8b61313bbabce2c6ULL}}, // (ten2mx >> 256) = 8b61313bbabce2c6 2323ac4b3b3da015 // 3b62be7bc1a0042b443e18ac4e70afdb {{0x6d30277a171ab2f8ULL, 0x5f0463f935ccd378ULL, 0x6b6c46dec52f6688ULL, 0xdf01e85f912e37a3ULL}}, // (ten2mx >> 256) = df01e85f912e37a3 6b6c46dec52f6688 // 5f0463f935ccd3786d30277a171ab2f8 {{0x8a8cec61ac155bfaULL, 0x7f36b660f7d70f93ULL, 0x55f038b237591ed3ULL, 0xb267ed1940f1c61cULL}}, // (ten2mx >> 256) = b267ed1940f1c61c 55f038b237591ed3 // 7f36b660f7d70f938a8cec61ac155bfa {{0x3ba3f04e23444995ULL, 0xcc2bc51a5fdf3fa9ULL, 0x77f3608e92adb242ULL, 0x8eb98a7a9a5b04e3ULL}}, // (ten2mx >> 256) = 8eb98a7a9a5b04e3 77f3608e92adb242 // cc2bc51a5fdf3fa93ba3f04e23444995 {{0xf9064d49d206dc21ULL, 0xe046082a32fecc41ULL, 0x8cb89a7db77c506aULL, 0xe45c10c42a2b3b05ULL}}, // (ten2mx >> 256) = e45c10c42a2b3b05 8cb89a7db77c506a // e046082a32fecc41f9064d49d206dc21 {{0xfa6b7107db38b01aULL, 0x4d04d354f598a367ULL, 0x3d607b97c5fd0d22ULL, 0xb6b00d69bb55c8d1ULL}}, // (ten2mx >> 256) = b6b00d69bb55c8d1 3d607b97c5fd0d22 // 4d04d354f598a367fa6b7107db38b01a {{0xfb8927397c2d59afULL, 0x3d9d75dd9146e91fULL, 0xcab3961304ca70e8ULL, 0x9226712162ab070dULL}}, // (ten2mx >> 256) = 9226712162ab070d cab3961304ca70e8 // 3d9d75dd9146e91ffb8927397c2d59af {{0xf8db71f5937bc2b1ULL, 0xc8fbefc8e87174ffULL, 0xaab8f01e6e10b4a6ULL, 0xe9d71b689dde71afULL}}, // (ten2mx >> 256) = e9d71b689dde71af aab8f01e6e10b4a6 // c8fbefc8e87174fff8db71f5937bc2b1 {{0x2d7c5b2adc630227ULL, 0x3a63263a538df733ULL, 0x5560c018580d5d52ULL, 0xbb127c53b17ec159ULL}}, // (ten2mx >> 256) = bb127c53b17ec159 5560c018580d5d52 // 3a63263a538df7332d7c5b2adc630227 {{0x24637c2249e8ce86ULL, 0x2eb5b82ea93e5f5cULL, 0xdde7001379a44aa8ULL, 0x95a8637627989aadULL}}, // (ten2mx >> 256) = 95a8637627989aad dde7001379a44aa8 // 2eb5b82ea93e5f5c24637c2249e8ce86 {{0x3a38c69d430e173dULL, 0x4abc59e441fd6560ULL, 0x963e66858f6d4440ULL, 0xef73d256a5c0f77cULL}}, // (ten2mx >> 256) = ef73d256a5c0f77c 963e66858f6d4440 // 4abc59e441fd65603a38c69d430e173d {{0x94fa387dcf3e78fdULL, 0x6efd14b69b311de6ULL, 0xde98520472bdd033ULL, 0xbf8fdb78849a5f96ULL}}, // (ten2mx >> 256) = bf8fdb78849a5f96 de98520472bdd033 // 6efd14b69b311de694fa387dcf3e78fd {{0xaa61c6cb0c31fa64ULL, 0x259743c548f417ebULL, 0xe546a8038efe4029ULL, 0x993fe2c6d07b7fabULL}}, // (ten2mx >> 256) = 993fe2c6d07b7fab e546a8038efe4029 // 259743c548f417ebaa61c6cb0c31fa64 {{0xaa360ade79e990a1ULL, 0x3c25393ba7ecf312ULL, 0xd53dd99f4b3066a8ULL, 0xf53304714d9265dfULL}}, // (ten2mx >> 256) = f53304714d9265df d53dd99f4b3066a8 // 3c25393ba7ecf312aa360ade79e990a1 {{0x882b3be52e5473b4ULL, 0x96842dc95323f5a8ULL, 0xaa97e14c3c26b886ULL, 0xc428d05aa4751e4cULL}}, // (ten2mx >> 256) = c428d05aa4751e4c aa97e14c3c26b886 // 96842dc95323f5a8882b3be52e5473b4 {{0xd355c98425105c90ULL, 0xab9cf16ddc1cc486ULL, 0x55464dd69685606bULL, 0x9ced737bb6c4183dULL}}, // (ten2mx >> 256) = 9ced737bb6c4183d 55464dd69685606b // ab9cf16ddc1cc486d355c98425105c90 {{0xebbc75a03b4d60e6ULL, 0xac2e4f162cfad40aULL, 0xeed6e2f0f0d56712ULL, 0xfb158592be068d2eULL}}, // (ten2mx >> 256) = fb158592be068d2e eed6e2f0f0d56712 // ac2e4f162cfad40aebbc75a03b4d60e6 {{0x8963914cfc3de71eULL, 0x568b727823fbdcd5ULL, 0xf245825a5a445275ULL, 0xc8de047564d20a8bULL}}, // (ten2mx >> 256) = c8de047564d20a8b f245825a5a445275 // 568b727823fbdcd58963914cfc3de71e {{0xd44fa770c9cb1f4bULL, 0x453c5b934ffcb0aaULL, 0x5b6aceaeae9d0ec4ULL, 0xa0b19d2ab70e6ed6ULL}}, // (ten2mx >> 256) = a0b19d2ab70e6ed6 5b6aceaeae9d0ec4 // 453c5b934ffcb0aad44fa770c9cb1f4b {{0xdd0c85f3d4a27f6fULL, 0x37637c75d996f3bbULL, 0xe2bbd88bbee40bd0ULL, 0x808e17555f3ebf11ULL}}, // (ten2mx >> 256) = 808e17555f3ebf11 e2bbd88bbee40bd0 // 37637c75d996f3bbdd0c85f3d4a27f6f {{0x61ada31fba9d98b2ULL, 0x256bfa5628f185f9ULL, 0x3792f412cb06794dULL, 0xcdb02555653131b6ULL}}, // (ten2mx >> 256) = cdb02555653131b6 3792f412cb06794d // 256bfa5628f185f961ada31fba9d98b2 {{0xe7be1c196217ad5bULL, 0x51232eab53f46b2dULL, 0x5fa8c3423c052dd7ULL, 0xa48ceaaab75a8e2bULL}}, // (ten2mx >> 256) = a48ceaaab75a8e2b 5fa8c3423c052dd7 // 51232eab53f46b2de7be1c196217ad5b {{0x52fe7ce11b462449ULL, 0x40e8f222a99055beULL, 0x1953cf68300424acULL, 0x83a3eeeef9153e89ULL}}, // (ten2mx >> 256) = 83a3eeeef9153e89 1953cf68300424ac // 40e8f222a99055be52fe7ce11b462449 {{0x51972e34f8703a0fULL, 0x34a7e9d10f4d55fdULL, 0x8eec7f0d19a03aadULL, 0xd29fe4b18e88640eULL}}, // (ten2mx >> 256) = d29fe4b18e88640e 8eec7f0d19a03aad // 34a7e9d10f4d55fd51972e34f8703a0f {{0x0e128b5d938cfb3fULL, 0x2a1fee40d90aab31ULL, 0x3f2398d747b36224ULL, 0xa87fea27a539e9a5ULL}}, // (ten2mx >> 256) = a87fea27a539e9a5 3f2398d747b36224 // 2a1fee40d90aab310e128b5d938cfb3f {{0x3e753c4adc70c8ffULL, 0xbb4cbe9a473bbc27ULL, 0x98e947129fc2b4e9ULL, 0x86ccbb52ea94baeaULL}}, // (ten2mx >> 256) = 86ccbb52ea94baea 98e947129fc2b4e9 // bb4cbe9a473bbc273e753c4adc70c8ff {{0x30bb93aafa4e0e65ULL, 0x9214642a0b92c6a5ULL, 0x5b0ed81dcc6abb0fULL, 0xd7adf884aa879177ULL}}, // (ten2mx >> 256) = d7adf884aa879177 5b0ed81dcc6abb0f // 9214642a0b92c6a530bb93aafa4e0e65 {{0xc0960fbbfb71a51eULL, 0xa8105021a2dbd21dULL, 0xe272467e3d222f3fULL, 0xac8b2d36eed2dac5ULL}}, // (ten2mx >> 256) = ac8b2d36eed2dac5 e272467e3d222f3f // a8105021a2dbd21dc0960fbbfb71a51e {{0x66de72fcc927b74bULL, 0xb9a6a6814f1641b1ULL, 0x1b8e9ecb641b58ffULL, 0x8a08f0f8bf0f156bULL}}, // (ten2mx >> 256) = 8a08f0f8bf0f156b 1b8e9ecb641b58ff // b9a6a6814f1641b166de72fcc927b74b {{0xd7ca5194750c5878ULL, 0xf5d770cee4f0691bULL, 0xf8e431456cf88e65ULL, 0xdcdb1b2798182244ULL}}, // (ten2mx >> 256) = dcdb1b2798182244 f8e431456cf88e65 // f5d770cee4f0691bd7ca5194750c5878 {{0xdfd50e105da379f9ULL, 0x9179270bea59edafULL, 0x2d835a9df0c6d851ULL, 0xb0af48ec79ace837ULL}}, // (ten2mx >> 256) = b0af48ec79ace837 2d835a9df0c6d851 // 9179270bea59edafdfd50e105da379f9 {{0x19773e737e1c6194ULL, 0x0dfa85a321e18af3ULL, 0x579c487e5a38ad0eULL, 0x8d590723948a535fULL}}, // (ten2mx >> 256) = 8d590723948a535f 579c487e5a38ad0e // dfa85a321e18af319773e737e1c6194 {{0xf58b971f302d68eeULL, 0x165da29e9c9c1184ULL, 0x25c6da63c38de1b0ULL, 0xe2280b6c20dd5232ULL}}, // (ten2mx >> 256) = e2280b6c20dd5232 25c6da63c38de1b0 // 165da29e9c9c1184f58b971f302d68ee {{0xc46fac18f3578724ULL, 0x4517b54bb07cdad0ULL, 0x1e38aeb6360b1af3ULL, 0xb4ecd5f01a4aa828ULL}}, // (ten2mx >> 256) = b4ecd5f01a4aa828 1e38aeb6360b1af3 // 4517b54bb07cdad0c46fac18f3578724 {{0x36bfbce0c2ac6c1dULL, 0x9dac910959fd7bdaULL, 0xb1c6f22b5e6f48c2ULL, 0x90bd77f3483bb9b9ULL}}, // (ten2mx >> 256) = 90bd77f3483bb9b9 b1c6f22b5e6f48c2 // 9dac910959fd7bda36bfbce0c2ac6c1d {{0x2465fb01377a4695ULL, 0x2f7a81a88ffbf95dULL, 0xb60b1d1230b20e04ULL, 0xe7958cb87392c2c2ULL}} // (ten2mx >> 256) = e7958cb87392c2c2 b60b1d1230b20e04 // 2f7a81a88ffbf95d2465fb01377a4695 }; LIBRARY/src/bid128_fmod.c0000644€­ Q01134020000001672415113665770014012 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #define BID_128RES #include "bid_div_macros.h" #include BID128_FUNCTION_ARG2_NORND ( bid128_fmod, x, y) BID_UINT256 P256; BID_UINT128 CX, CY, CQ, CR, T, CXS, P128, res; BID_UINT64 sign_x, sign_y, valid_y; BID_SINT64 D; int_float f64, fx; int exponent_x, exponent_y, diff_expon, bin_expon_cx, scale, scale0; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } // unpack arguments, check for NaN or Infinity valid_y = unpack_BID128_value (&sign_y, &exponent_y, &CY, y); if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[1] & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = CX.w[1] & QUIET_MASK64; res.w[0] = CX.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x is Infinity? if ((x.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is Inf. if (((y.w[1] & 0x7c00000000000000ull) != 0x7c00000000000000ull)) // return NaN { #ifdef BID_SET_STATUS_FLAGS // set status flags __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } // x is 0 if ((!CY.w[1]) && (!CY.w[0])) { #ifdef BID_SET_STATUS_FLAGS // set status flags __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=y=0, return NaN res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } if (valid_y || ((y.w[1] & NAN_MASK64) == INFINITY_MASK64)) { // return 0 if ((exponent_x > exponent_y) && ((y.w[1] & NAN_MASK64) != INFINITY_MASK64)) exponent_x = exponent_y; res.w[1] = sign_x | (((BID_UINT64) exponent_x) << 49); res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[1] & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = CY.w[1] & QUIET_MASK64; res.w[0] = CY.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is Infinity? if ((y.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // return x res.w[1] = x.w[1]; res.w[0] = x.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is 0 #ifdef BID_SET_STATUS_FLAGS // set status flags __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } diff_expon = exponent_x - exponent_y; if (diff_expon <= 0) { diff_expon = -diff_expon; if (diff_expon > 34) { // |x|<|y| in this case res = x; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // set exponent of y to exponent_x, scale coefficient_y T = bid_power10_table_128[diff_expon]; __mul_128x128_to_256 (P256, CY, T); if (P256.w[2] || P256.w[3]) { // |x|<|y| in this case res = x; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } if (__unsigned_compare_gt_128 (P256, CX)) { // |x|<|y| in this case res = x; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } P128.w[0] = P256.w[0]; P128.w[1] = P256.w[1]; bid___div_128_by_128 (&CQ, &CR, CX, P128); bid_get_BID128_very_fast (&res, sign_x, exponent_x, CR); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // 2^64 f64.i = 0x5f800000; scale0 = 38; if (!CY.w[1]) scale0 = 34; while (diff_expon > 0) { // get number of digits in CX and scale=38-digits // fx ~ CX fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; bin_expon_cx = ((fx.i >> 23) & 0xff) - 0x7f; scale = scale0 - bid_estimate_decimal_digits[bin_expon_cx]; // scale = 38-estimate_decimal_digits[bin_expon_cx]; D = CX.w[1] - bid_power10_index_binexp_128[bin_expon_cx].w[1]; if (D > 0 || (!D && CX.w[0] >= bid_power10_index_binexp_128[bin_expon_cx].w[0])) scale--; if (diff_expon >= scale) diff_expon -= scale; else { scale = diff_expon; diff_expon = 0; } T = bid_power10_table_128[scale]; __mul_128x128_low (CXS, CX, T); bid___div_128_by_128 (&CQ, &CX, CXS, CY); // check for remainder == 0 if (!CX.w[1] && !CX.w[0]) { bid_get_BID128_very_fast (&res, sign_x, exponent_y, CX); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } bid_get_BID128_very_fast (&res, sign_x, exponent_y, CX); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } LIBRARY/src/bid64_nexttowardd.c0000644€­ Q01134020000001560515113665770015344 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64 nexttowardd ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT64, bid64_nexttoward, BID_UINT64, x, BID_UINT128, y) BID_UINT64 res; BID_UINT128 x128, tmp128; BID_UINT64 tmp1, tmp2; BID_FPSC tmp_fpsf = 0; // dummy fpsf for calls to comparison functions int res1 = 0, res2 = 0; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = BID_ROUNDING_TO_NEAREST; // dummy; used to convert 128-bit NaN result to 64-bit #endif // check for NaNs or infinities if (((x & MASK_SPECIAL) == MASK_SPECIAL) || ((y.w[BID_HIGH_128W] & MASK_NAN) == MASK_NAN) || ((y.w[BID_HIGH_128W] & MASK_ANY_INF) == MASK_INF) ) { // x is NaN or infinity or y is NaN or infinity if ((x & MASK_NAN) == MASK_NAN) { // x is NAN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res = x & 0xfdffffffffffffffull; } else { // x is QNaN if ((y.w[BID_HIGH_128W] & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } // return x res = x; } BID_RETURN (res); } else if ((y.w[BID_HIGH_128W] & MASK_NAN) == MASK_NAN) { // y is NAN then res = Q (y) // check first for non-canonical NaN payload if (((y.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((y.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (y.w[BID_LOW_128W] > 0x38c15b09ffffffffull))) { y.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0xffffc00000000000ull; y.w[BID_LOW_128W] = 0x0ull; } if ((y.w[BID_HIGH_128W] & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (y) tmp128.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] tmp128.w[BID_LOW_128W] = y.w[BID_LOW_128W]; } else { // y is QNaN // return y tmp128.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0xfc003fffffffffffull; // clear out G[6]-G[16] tmp128.w[BID_LOW_128W] = y.w[BID_LOW_128W]; } BIDECIMAL_CALL1 (bid128_to_bid64, res, tmp128); BID_RETURN (res); } else { // at least one is infinity if ((x & MASK_ANY_INF) == MASK_INF) { // x = inf x = x & (MASK_SIGN | MASK_INF); } if ((y.w[BID_HIGH_128W] & MASK_ANY_INF) == MASK_INF) { // y = inf y.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & (MASK_SIGN | MASK_INF); y.w[BID_LOW_128W] = 0x0ull; } } } // neither x nor y is NaN // if not infinity, check for non-canonical values x (treated as zero) if ((x & MASK_ANY_INF) != MASK_INF) { // x != inf // unpack x if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:w+1] if (((x & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull) { // non-canonical x = (x & MASK_SIGN) | ((x & MASK_BINARY_EXPONENT2) << 2); } } else { // if ((x & MASK_STEERING_BITS) != MASK_STEERING_BITS) x is unch. ; // canonical } } // no need to check for non-canonical y // neither x nor y is NaN tmp_fpsf = *pfpsf; // save fpsf // convert x to 128-bit format BIDECIMAL_CALL1_NORND (bid64_to_bid128, x128, x); BIDECIMAL_CALL2_NORND (bid128_quiet_equal, res1, x128, y); BIDECIMAL_CALL2_NORND (bid128_quiet_greater, res2, x128, y); *pfpsf = tmp_fpsf; // restore fpsf if (res1) { // x = y // return x with the sign of y res = (y.w[BID_HIGH_128W] & MASK_SIGN) | (x & 0x7fffffffffffffffull); } else if (res2) { // x > y BIDECIMAL_CALL1_NORND (bid64_nextdown, res, x); } else { // x < y BIDECIMAL_CALL1_NORND (bid64_nextup, res, x); } // if the operand x is finite but the result is infinite, signal // overflow and inexact if (((x & MASK_INF) != MASK_INF) && ((res & MASK_INF) == MASK_INF)) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; } // if the result is in (-10^emin, 10^emin), and is different from the // operand x, signal underflow and inexact tmp1 = 0x00038d7ea4c68000ull; // +100...0[16] * 10^emin tmp2 = res & 0x7fffffffffffffffull; tmp_fpsf = *pfpsf; // save fpsf BIDECIMAL_CALL2_NORND (bid64_quiet_greater, res1, tmp1, tmp2); BIDECIMAL_CALL2_NORND (bid64_quiet_not_equal, res2, x, res); *pfpsf = tmp_fpsf; // restore fpsf if (res1 && res2) { // if (bid64_quiet_greater (tmp1, tmp2, &tmp_fpsf) && // bid64_quiet_not_equal (x, res, &tmp_fpsf)) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the underflow flag *pfpsf |= BID_UNDERFLOW_EXCEPTION; } BID_RETURN (res); } LIBRARY/src/dfp754.h0000644€­ Q01134020000004132215113665770013022 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef __DFP754_H_INCLUDED #define __DFP754_H_INCLUDED /**************************************************************************** * List of symbols not declared in mathimf.h * With the exception of strod/wcstod functions, these symbols * are not specified in the ISO/IEC decimal TR ****************************************************************************/ #ifdef __STDC_WANT_DEC_FP__ /* Conversions to/from int */ extern _Decimal32 int32_to_decimal32(int); extern _Decimal64 int32_to_decimal64(int); extern _Decimal128 int32_to_decimal128(int); extern __int64 decimal32_to_int64_rnint(_Decimal32); extern __int64 decimal64_to_int64_rnint(_Decimal64); extern __int64 decimal128_to_int64_rnint(_Decimal128); /* Negate */ extern _Decimal32 negated32 (_Decimal32 __x); extern _Decimal64 negated64 (_Decimal64 __x); extern _Decimal128 negated128 (_Decimal128 __x); /* nextup, nextdown */ extern _Decimal32 nextupd32 (_Decimal32 __x); extern _Decimal64 nextupd64 (_Decimal64 __x); extern _Decimal128 nextupd128 (_Decimal128 __x); extern _Decimal32 nextdownd32 (_Decimal32 __x); extern _Decimal64 nextdownd64 (_Decimal64 __x); extern _Decimal128 nextdownd128 (_Decimal128 __x); /* Comparisons */ extern int iszerod32 (_Decimal32 __x); extern int iszerod64 (_Decimal64 __x); extern int iszerod128 (_Decimal128 __x); extern int isequald32 (_Decimal32 __x, _Decimal32 __y); extern int isequald64 (_Decimal64 __x, _Decimal64 __y); extern int isequald128 (_Decimal128 __x, _Decimal128 __y); extern int isnotequald32 (_Decimal32 __x, _Decimal32 __y); extern int isnotequald64 (_Decimal64 __x, _Decimal64 __y); extern int isnotequald128 (_Decimal128 __x, _Decimal128 __y); /* conversions from _Decimalxx (BID) to the DPD format */ extern _Decimal32 decimal32_to_dpd32 (_Decimal32 __x); extern _Decimal64 decimal64_to_dpd64 (_Decimal64 __x); extern _Decimal128 decimal128_to_dpd128 (_Decimal128 __x); extern _Decimal32 dpd32_to_decimal32 (_Decimal32 __x); extern _Decimal64 dpd64_to_decimal64 (_Decimal64 __x); extern _Decimal128 dpd128_to_decimal128 (_Decimal128 __x); /* Conversions to/from IEEE binary FP formats */ extern float decimal32_to_float (_Decimal32 __x); extern float decimal64_to_float (_Decimal64 __x); extern float decimal128_to_float (_Decimal128 __x); extern _Decimal32 float_to_decimal32 (float __x); extern _Decimal64 float_to_decimal64 (float __x); extern _Decimal128 float_to_decimal128 (float __x); extern double decimal32_to_double (_Decimal32 __x); extern double decimal64_to_double (_Decimal64 __x); extern double decimal128_to_double (_Decimal128 __x); extern _Decimal32 double_to_decimal32 (double __x); extern _Decimal64 double_to_decimal64 (double __x); extern _Decimal128 double_to_decimal128 (double __x); extern long double decimal32_to_long_double (_Decimal32 __x); extern long double decimal64_to_long_double (_Decimal64 __x); extern long double decimal128_to_long_double (_Decimal128 __x); extern _Decimal32 long_double_to_decimal32 (long double __x); extern _Decimal64 long_double_to_decimal64 (long double __x); extern _Decimal128 long_double_to_decimal128 (long double __x); // these need an #if directive for _Quad_defined // Since the directive is not available, will not declare these functions /*extern _Quad decimal32_to_quad (_Decimal32 __x); extern _Quad decimal64_to_quad (_Decimal64 __x); extern _Quad decimal128_to_quad (_Decimal128 __x); extern _Decimal32 quad_to_decimal32 (_Quad __x); extern _Decimal64 quad_to_decimal64 (_Quad __x); extern _Decimal128 quad_to_decimal128 (_Quad __x);*/ /* Conversions to/from string */ extern void decimal32_to_string(char*, _Decimal32); extern void decimal64_to_string(char*, _Decimal64); extern void decimal128_to_string(char*, _Decimal128); extern _Decimal32 string_to_decimal32(char*); extern _Decimal64 string_to_decimal64(char*); extern _Decimal128 string_to_decimal128(char*); extern _Decimal32 strtod32(const char* restrict, char** restrict); extern _Decimal64 strtod64(const char* restrict, char** restrict); extern _Decimal128 strtod128(const char* restrict, char** restrict); extern _Decimal32 wcstod32(const wchar_t* restrict, wchar_t** restrict); extern _Decimal64 wcstod64(const wchar_t* restrict, wchar_t** restrict); extern _Decimal128 wcstod128(const wchar_t* restrict, wchar_t** restrict); #endif #ifdef __STDC_WANT_DEC_FP__ extern _Decimal32 acosd32 (_Decimal32 __x); extern _Decimal64 acosd64 (_Decimal64 __x); extern _Decimal128 acosd128 (_Decimal128 __x); extern _Decimal32 asind32 (_Decimal32 __x); extern _Decimal64 asind64 (_Decimal64 __x); extern _Decimal128 asind128 (_Decimal128 __x); extern _Decimal32 atand32 (_Decimal32 __x); extern _Decimal64 atand64 (_Decimal64 __x); extern _Decimal128 atand128 (_Decimal128 __x); extern _Decimal32 atan2d32 (_Decimal32 __y, _Decimal32 __x); extern _Decimal64 atan2d64 (_Decimal64 __y, _Decimal64 __x); extern _Decimal128 atan2d128 (_Decimal128 __y, _Decimal128 __x); extern _Decimal32 cosd32 (_Decimal32 __x); extern _Decimal64 cosd64 (_Decimal64 __x); extern _Decimal128 cosd128 (_Decimal128 __x); extern _Decimal32 sind32 (_Decimal32 __x); extern _Decimal64 sind64 (_Decimal64 __x); extern _Decimal128 sind128 (_Decimal128 __x); extern _Decimal32 tand32 (_Decimal32 __x); extern _Decimal64 tand64 (_Decimal64 __x); extern _Decimal128 tand128 (_Decimal128 __x); extern _Decimal32 acoshd32 (_Decimal32 __x); extern _Decimal64 acoshd64 (_Decimal64 __x); extern _Decimal128 acoshd128 (_Decimal128 __x); extern _Decimal32 asinhd32 (_Decimal32 __x); extern _Decimal64 asinhd64 (_Decimal64 __x); extern _Decimal128 asinhd128 (_Decimal128 __x); extern _Decimal32 atanhd32 (_Decimal32 __x); extern _Decimal64 atanhd64 (_Decimal64 __x); extern _Decimal128 atanhd128 (_Decimal128 __x); extern _Decimal32 coshd32 (_Decimal32 __x); extern _Decimal64 coshd64 (_Decimal64 __x); extern _Decimal128 coshd128 (_Decimal128 __x); extern _Decimal32 sinhd32 (_Decimal32 __x); extern _Decimal64 sinhd64 (_Decimal64 __x); extern _Decimal128 sinhd128 (_Decimal128 __x); extern _Decimal32 tanhd32 (_Decimal32 __x); extern _Decimal64 tanhd64 (_Decimal64 __x); extern _Decimal128 tanhd128 (_Decimal128 __x); extern _Decimal32 expd32 (_Decimal32 __x); extern _Decimal64 expd64 (_Decimal64 __x); extern _Decimal128 expd128 (_Decimal128 __x); extern _Decimal32 exp2d32 (_Decimal32 __x); extern _Decimal64 exp2d64 (_Decimal64 __x); extern _Decimal128 exp2d128 (_Decimal128 __x); extern _Decimal32 expm1d32 (_Decimal32 __x); extern _Decimal64 expm1d64 (_Decimal64 __x); extern _Decimal128 expm1d128 (_Decimal128 __x); extern _Decimal32 frexpd32 (_Decimal32 __x, int *__i); extern _Decimal64 frexpd64 (_Decimal64 __x, int *__i); extern _Decimal128 frexpd128 (_Decimal128 __x, int *__i); extern int ilogbd32 (_Decimal32 __x); extern int ilogbd64 (_Decimal64 __x); extern int ilogbd128 (_Decimal128 __x); extern _Decimal32 ldexpd32 (_Decimal32 __x, int __n); extern _Decimal64 ldexpd64 (_Decimal64 __x, int __n); extern _Decimal128 ldexpd128 (_Decimal128 __x, int __n); extern _Decimal32 logd32 (_Decimal32 __x); extern _Decimal64 logd64 (_Decimal64 __x); extern _Decimal128 logd128 (_Decimal128 __x); extern _Decimal32 log10d32 (_Decimal32 __x); extern _Decimal64 log10d64 (_Decimal64 __x); extern _Decimal128 log10d128 (_Decimal128 __x); extern _Decimal32 log2d32 (_Decimal32 __x); extern _Decimal64 log2d64 (_Decimal64 __x); extern _Decimal128 log2d128 (_Decimal128 __x); extern _Decimal32 log1pd32 (_Decimal32 __x); extern _Decimal64 log1pd64 (_Decimal64 __x); extern _Decimal128 log1pd128 (_Decimal128 __x); extern _Decimal32 logbd32 (_Decimal32 __x); extern _Decimal64 logbd64 (_Decimal64 __x); extern _Decimal128 logbd128 (_Decimal128 __x); extern _Decimal32 modfd32 (_Decimal32 __x, _Decimal32 *__iptr); extern _Decimal64 modfd64 (_Decimal64 __x, _Decimal64 *__iptr); extern _Decimal128 modfd128 (_Decimal128 __x, _Decimal128 *__iptr); extern _Decimal32 scalbnd32 (_Decimal32 __x, int __n); extern _Decimal64 scalbnd64 (_Decimal64 __x, int __n); extern _Decimal128 scalbnd128 (_Decimal128 __x, int __n); extern _Decimal32 scalblnd32 (_Decimal32 __x, long int __n); extern _Decimal64 scalblnd64 (_Decimal64 __x, long int __n); extern _Decimal128 scalblnd128 (_Decimal128 __x, long int __n); extern _Decimal32 cbrtd32 (_Decimal32 __x); extern _Decimal64 cbrtd64 (_Decimal64 __x); extern _Decimal128 cbrtd128 (_Decimal128 __x); extern _Decimal32 fabsd32 (_Decimal32 __x); extern _Decimal64 fabsd64 (_Decimal64 __x); extern _Decimal128 fabsd128 (_Decimal128 __x); extern _Decimal32 hypotd32 (_Decimal32 __x, _Decimal32 __y); extern _Decimal64 hypotd64 (_Decimal64 __x, _Decimal64 __y); extern _Decimal128 hypotd128 (_Decimal128 __x, _Decimal128 __y); extern _Decimal32 powd32 (_Decimal32 __x, _Decimal32 __y); extern _Decimal64 powd64 (_Decimal64 __x, _Decimal64 __y); extern _Decimal128 powd128 (_Decimal128 __x, _Decimal128 __y); extern _Decimal32 sqrtd32 (_Decimal32 __x); extern _Decimal64 sqrtd64 (_Decimal64 __x); extern _Decimal128 sqrtd128 (_Decimal128 __x); extern _Decimal32 erfd32 (_Decimal32 __x); extern _Decimal64 erfd64 (_Decimal64 __x); extern _Decimal128 erfd128 (_Decimal128 __x); extern _Decimal32 erfcd32 (_Decimal32 __x); extern _Decimal64 erfcd64 (_Decimal64 __x); extern _Decimal128 erfcd128 (_Decimal128 __x); extern _Decimal32 lgammad32 (_Decimal32 __x); extern _Decimal64 lgammad64 (_Decimal64 __x); extern _Decimal128 lgammad128 (_Decimal128 __x); extern _Decimal32 tgammad32 (_Decimal32 __x); extern _Decimal64 tgammad64 (_Decimal64 __x); extern _Decimal128 tgammad128 (_Decimal128 __x); extern _Decimal32 nearbyintd32 (_Decimal32 __x); extern _Decimal64 nearbyintd64 (_Decimal64 __x); extern _Decimal128 nearbyintd128 (_Decimal128 __x); extern _Decimal32 rintd32 (_Decimal32 __x); extern _Decimal64 rintd64 (_Decimal64 __x); extern _Decimal128 rintd128 (_Decimal128 __x); extern long int lrintd32 (_Decimal32 __x); extern long int lrintd64 (_Decimal64 __x); extern long int lrintd128 (_Decimal128 __x); extern long long int llrintd32 (_Decimal32 __x); extern long long int llrintd64 (_Decimal64 __x); extern long long int llrintd128 (_Decimal128 __x); extern _Decimal32 roundd32 (_Decimal32 __x); extern _Decimal64 roundd64 (_Decimal64 __x); extern _Decimal128 roundd128 (_Decimal128 __x); extern long int lroundd32 (_Decimal32 __x); extern long int lroundd64 (_Decimal64 __x); extern long int lroundd128 (_Decimal128 __x); extern long long int llroundd32 (_Decimal32 __x); extern long long int llroundd64 (_Decimal64 __x); extern long long int llroundd128 (_Decimal128 __x); extern _Decimal32 truncd32 (_Decimal32 __x); extern _Decimal64 truncd64 (_Decimal64 __x); extern _Decimal128 truncd128 (_Decimal128 __x); extern _Decimal32 fmodd32 (_Decimal32 __x, _Decimal32 __y); extern _Decimal64 fmodd64 (_Decimal64 __x, _Decimal64 __y); extern _Decimal128 fmodd128 (_Decimal128 __x, _Decimal128 __y); extern _Decimal32 remainderd32 (_Decimal32 __x, _Decimal32 __y); extern _Decimal64 remainderd64 (_Decimal64 __x, _Decimal64 __y); extern _Decimal128 remainderd128 (_Decimal128 __x, _Decimal128 __y); extern _Decimal32 copysignd32 (_Decimal32 __x, _Decimal32 __y); extern _Decimal64 copysignd64 (_Decimal64 __x, _Decimal64 __y); extern _Decimal128 copysignd128 (_Decimal128 __x, _Decimal128 __y); extern _Decimal32 nand32 (char *__tagp); extern _Decimal64 nand64 (char *__tagp); extern _Decimal128 nand128 (char *__tagp); extern _Decimal32 nextafterd32 (_Decimal32 __x, _Decimal32 __y); extern _Decimal64 nextafterd64 (_Decimal64 __x, _Decimal64 __y); extern _Decimal128 nextafterd128 (_Decimal128 __x, _Decimal128 __y); extern _Decimal32 fdimd32 (_Decimal32 __x, _Decimal32 __y); extern _Decimal64 fdimd64 (_Decimal64 __x, _Decimal64 __y); extern _Decimal128 fdimd128 (_Decimal128 __x, _Decimal128 __y); extern _Decimal32 fmaxd32 (_Decimal32 __x, _Decimal32 __y); extern _Decimal64 fmaxd64 (_Decimal64 __x, _Decimal64 __y); extern _Decimal128 fmaxd128 (_Decimal128 __x, _Decimal128 __y); extern _Decimal32 fmind32 (_Decimal32 __x, _Decimal32 __y); extern _Decimal64 fmind64 (_Decimal64 __x, _Decimal64 __y); extern _Decimal128 fmind128 (_Decimal128 __x, _Decimal128 __y); extern _Decimal32 fmad32 (_Decimal32 __x, _Decimal32 __y, _Decimal32 __z); extern _Decimal64 fmad64 (_Decimal64 __x, _Decimal64 __y, _Decimal64 __z); extern _Decimal128 fmad128 (_Decimal128 __x, _Decimal128 __y, _Decimal128 __z); extern _Decimal32 quantized32 (_Decimal32 __x, _Decimal32 __y); extern _Decimal64 quantized64 (_Decimal64 __x, _Decimal64 __y); extern _Decimal128 quantized128 (_Decimal128 __x, _Decimal128 __y); extern int quantexpd32 (_Decimal32 __x); extern int quantexpd64 (_Decimal64 __x); extern int quantexpd128 (_Decimal128 __x); extern long long int llquantexpd32 (_Decimal32 __x); extern long long int llquantexpd64 (_Decimal64 __x); extern long long int llquantexpd128 (_Decimal128 __x); extern _Decimal32 quantumd32 (_Decimal32 __x); extern _Decimal64 quantumd64 (_Decimal64 __x); extern _Decimal128 quantumd128 (_Decimal128 __x); extern int isnand32 (_Decimal32 __x); extern int isnand64 (_Decimal64 __x); extern int isnand128 (_Decimal128 __x); extern int isinfd32 (_Decimal32 __x); extern int isinfd64 (_Decimal64 __x); extern int isinfd128 (_Decimal128 __x); extern int isfinited32 (_Decimal32 __x); extern int isfinited64 (_Decimal64 __x); extern int isfinited128 (_Decimal128 __x); extern int isnormald32 (_Decimal32 __x); extern int isnormald64 (_Decimal64 __x); extern int isnormald128 (_Decimal128 __x); extern int signbitd32 (_Decimal32 __x); extern int signbitd64 (_Decimal64 __x); extern int signbitd128 (_Decimal128 __x); extern int fpclassifyd32 (_Decimal32 __x); extern int fpclassifyd64 (_Decimal64 __x); extern int fpclassifyd128 (_Decimal128 __x); extern int isunorderedd32 (_Decimal32 __x, _Decimal32 __y); extern int isunorderedd64 (_Decimal64 __x, _Decimal64 __y); extern int isunorderedd128 (_Decimal128 __x, _Decimal128 __y); extern int isgreaterd32 (_Decimal32 __x, _Decimal32 __y); extern int isgreaterd64 (_Decimal64 __x, _Decimal64 __y); extern int isgreaterd128 (_Decimal128 __x, _Decimal128 __y); extern int isgreaterequald32 (_Decimal32 __x, _Decimal32 __y); extern int isgreaterequald64 (_Decimal64 __x, _Decimal64 __y); extern int isgreaterequald128 (_Decimal128 __x, _Decimal128 __y); extern int islessd32 (_Decimal32 __x, _Decimal32 __y); extern int islessd64 (_Decimal64 __x, _Decimal64 __y); extern int islessd128 (_Decimal128 __x, _Decimal128 __y); extern int islessequald32 (_Decimal32 __x, _Decimal32 __y); extern int islessequald64 (_Decimal64 __x, _Decimal64 __y); extern int islessequald128 (_Decimal128 __x, _Decimal128 __y); #endif /*__STDC_WANT_DEC_FP__*/ #endif /* __DFP754_H_INCLUDED */ LIBRARY/src/bid32_round_integral.c0000644€­ Q01134020000001240715113665770016005 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_round_integral_exact ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_round_integral_exact, BID_UINT32, x) BID_UINT64 x64, res64; BID_UINT32 res; BIDECIMAL_CALL1_NORND (bid32_to_bid64, x64, x); BIDECIMAL_CALL1 (bid64_round_integral_exact, res64, x64); BIDECIMAL_CALL1 (bid64_to_bid32, res, res64); BID_RETURN (res); } /***************************************************************************** * BID32_round_integral_nearest_even ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT32, bid32_round_integral_nearest_even, BID_UINT32, x) BID_UINT64 x64, res64; BID_UINT32 res; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = BID_ROUNDING_TO_NEAREST; // temporary #endif BIDECIMAL_CALL1_NORND (bid32_to_bid64, x64, x); BIDECIMAL_CALL1_NORND (bid64_round_integral_nearest_even, res64, x64); BIDECIMAL_CALL1 (bid64_to_bid32, res, res64); BID_RETURN (res); } /***************************************************************************** * BID32_round_integral_negative *****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT32, bid32_round_integral_negative, BID_UINT32, x) BID_UINT64 x64, res64; BID_UINT32 res; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = BID_ROUNDING_TO_NEAREST; // temporary #endif BIDECIMAL_CALL1_NORND (bid32_to_bid64, x64, x); BIDECIMAL_CALL1_NORND (bid64_round_integral_negative, res64, x64); BIDECIMAL_CALL1 (bid64_to_bid32, res, res64); BID_RETURN (res); } /***************************************************************************** * BID32_round_integral_positive ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT32, bid32_round_integral_positive, BID_UINT32, x) BID_UINT64 x64, res64; BID_UINT32 res; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = BID_ROUNDING_TO_NEAREST; // temporary #endif BIDECIMAL_CALL1_NORND (bid32_to_bid64, x64, x); BIDECIMAL_CALL1_NORND (bid64_round_integral_positive, res64, x64); BIDECIMAL_CALL1 (bid64_to_bid32, res, res64); BID_RETURN (res); } /***************************************************************************** * BID32_round_integral_zero ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT32, bid32_round_integral_zero, BID_UINT32, x) BID_UINT64 x64, res64; BID_UINT32 res; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = BID_ROUNDING_TO_NEAREST; // temporary #endif BIDECIMAL_CALL1_NORND (bid32_to_bid64, x64, x); BIDECIMAL_CALL1_NORND (bid64_round_integral_zero, res64, x64); BIDECIMAL_CALL1 (bid64_to_bid32, res, res64); BID_RETURN (res); } /***************************************************************************** * BID32_round_integral_nearest_away ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT32, bid32_round_integral_nearest_away, BID_UINT32, x) BID_UINT64 x64, res64; BID_UINT32 res; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = BID_ROUNDING_TO_NEAREST; // temporary #endif BIDECIMAL_CALL1_NORND (bid32_to_bid64, x64, x); BIDECIMAL_CALL1_NORND (bid64_round_integral_nearest_away, res64, x64); BIDECIMAL_CALL1 (bid64_to_bid32, res, res64); BID_RETURN (res); } LIBRARY/src/bid64_mul.c0000644€­ Q01134020000003014315113665770013570 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID64 multiply ***************************************************************************** * * Algorithm description: * * if(number_digits(coefficient_x)+number_digits(coefficient_y) guaranteed * below 16) * return get_BID64(sign_x^sign_y, exponent_x + exponent_y - dec_bias, * coefficient_x*coefficient_y) * else * get long product: coefficient_x*coefficient_y * determine number of digits to round off (extra_digits) * rounding is performed as a 128x128-bit multiplication by * 2^M[extra_digits]/10^extra_digits, followed by a shift * M[extra_digits] is sufficiently large for required accuracy * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2(BID_UINT64, bid64_mul, BID_UINT64, x, BID_UINT64, y) BID_UINT128 P, C128, Q_high, Q_low, Stemp; #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING BID_UINT128 PU; #endif BID_UINT64 sign_x, sign_y, coefficient_x, coefficient_y; BID_UINT64 C64, remainder_h, carry, CY, res; BID_UINT64 valid_x, valid_y; int_double tempx, tempy; int extra_digits, exponent_x, exponent_y, bin_expon_cx, bin_expon_cy, bin_expon_product; int rmode, digits_p, bp, amount, amount2, final_exponent, round_up; unsigned status, uf_status; BID_OPT_SAVE_BINARY_FLAGS() valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID64 (&sign_y, &exponent_y, &coefficient_y, y); // unpack arguments, check for NaN or Infinity if (!valid_x) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x is Inf. or NaN // test if x is NaN if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (coefficient_x & QUIET_MASK64); } // x is Infinity? if ((x & INFINITY_MASK64) == INFINITY_MASK64) { // check if y is 0 if (((y & INFINITY_MASK64) != INFINITY_MASK64) && !coefficient_y) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // y==0 , return NaN BID_RETURN (NAN_MASK64); } // check if y is NaN if ((y & NAN_MASK64) == NAN_MASK64) // y==NaN , return NaN BID_RETURN (coefficient_y & QUIET_MASK64); // otherwise return +/-Inf BID_RETURN (((x ^ y) & 0x8000000000000000ull) | INFINITY_MASK64); } // x is 0 if (((y & INFINITY_MASK64) != INFINITY_MASK64)) { if ((y & SPECIAL_ENCODING_MASK64) == SPECIAL_ENCODING_MASK64) exponent_y = ((BID_UINT32) (y >> 51)) & 0x3ff; else exponent_y = ((BID_UINT32) (y >> 53)) & 0x3ff; sign_y = y & 0x8000000000000000ull; exponent_x += exponent_y - DECIMAL_EXPONENT_BIAS; if (exponent_x > DECIMAL_MAX_EXPON_64) exponent_x = DECIMAL_MAX_EXPON_64; else if (exponent_x < 0) exponent_x = 0; BID_RETURN ((sign_x ^ sign_y) | (((BID_UINT64) exponent_x) << 53)); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (coefficient_y & QUIET_MASK64); } // y is Infinity? if ((y & INFINITY_MASK64) == INFINITY_MASK64) { // check if x is 0 if (!coefficient_x) { __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); // x==0, return NaN BID_RETURN (NAN_MASK64); } // otherwise return +/-Inf BID_RETURN (((x ^ y) & 0x8000000000000000ull) | INFINITY_MASK64); } // y is 0 exponent_x += exponent_y - DECIMAL_EXPONENT_BIAS; if (exponent_x > DECIMAL_MAX_EXPON_64) exponent_x = DECIMAL_MAX_EXPON_64; else if (exponent_x < 0) exponent_x = 0; BID_RETURN ((sign_x ^ sign_y) | (((BID_UINT64) exponent_x) << 53)); } //--- get number of bits in the coefficients of x and y --- // version 2 (original) tempx.d = (double) coefficient_x; bin_expon_cx = ((tempx.i & MASK_BINARY_EXPONENT) >> 52); tempy.d = (double) coefficient_y; bin_expon_cy = ((tempy.i & MASK_BINARY_EXPONENT) >> 52); // magnitude estimate for coefficient_x*coefficient_y is // 2^(unbiased_bin_expon_cx + unbiased_bin_expon_cx) bin_expon_product = bin_expon_cx + bin_expon_cy; // check if coefficient_x*coefficient_y<2^(10*k+3) // equivalent to unbiased_bin_expon_cx + unbiased_bin_expon_cx < 10*k+1 if (bin_expon_product < UPPER_EXPON_LIMIT + 2 * BINARY_EXPONENT_BIAS) { // easy multiply C64 = coefficient_x * coefficient_y; res = get_BID64_small_mantissa (sign_x ^ sign_y, exponent_x + exponent_y - DECIMAL_EXPONENT_BIAS, C64, rnd_mode, pfpsf); BID_RETURN (res); } else { uf_status = 0; // get 128-bit product: coefficient_x*coefficient_y __mul_64x64_to_128 (P, coefficient_x, coefficient_y); // tighten binary range of P: leading bit is 2^bp // unbiased_bin_expon_product <= bp <= unbiased_bin_expon_product+1 bin_expon_product -= 2 * BINARY_EXPONENT_BIAS; __tight_bin_range_128 (bp, P, bin_expon_product); // get number of decimal digits in the product digits_p = bid_estimate_decimal_digits[bp]; if (!(__unsigned_compare_gt_128 (bid_power10_table_128[digits_p], P))) digits_p++; // if bid_power10_table_128[digits_p] <= P // determine number of decimal digits to be rounded out extra_digits = digits_p - MAX_FORMAT_DIGITS; final_exponent = exponent_x + exponent_y + extra_digits - DECIMAL_EXPONENT_BIAS; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_x ^ sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif round_up = 0; if (((unsigned) final_exponent) >= 3 * 256) { if (final_exponent < 0) { // underflow if (final_exponent + 16 < 0) { res = sign_x ^ sign_y; __set_status_flags (pfpsf, BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); if (rmode == BID_ROUNDING_UP) res |= 1; BID_RETURN (res); } uf_status = BID_UNDERFLOW_EXCEPTION; #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (final_exponent == -1) { __add_128_64 (PU, P, bid_round_const_table[rmode][extra_digits]); if (__unsigned_compare_ge_128 (PU, bid_power10_table_128[extra_digits + 16])) uf_status = 0; } #endif extra_digits -= final_exponent; final_exponent = 0; if (extra_digits > 17) { __mul_128x128_full (Q_high, Q_low, P, bid_reciprocals10_128[16]); amount = bid_recip_scale[16]; __shr_128 (P, Q_high, amount); // get sticky bits amount2 = 64 - amount; remainder_h = 0; remainder_h--; remainder_h >>= amount2; remainder_h = remainder_h & Q_high.w[0]; extra_digits -= 16; if (remainder_h || (Q_low.w[1] > bid_reciprocals10_128[16].w[1] || (Q_low.w[1] == bid_reciprocals10_128[16].w[1] && Q_low.w[0] >= bid_reciprocals10_128[16].w[0]))) { round_up = 1; __set_status_flags (pfpsf, BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); P.w[0] = (P.w[0] << 3) + (P.w[0] << 1); P.w[0] |= 1; extra_digits++; } } } else { res = fast_get_BID64_check_OF (sign_x ^ sign_y, final_exponent, 1000000000000000ull, rnd_mode, pfpsf); BID_RETURN (res); } } if (extra_digits > 0) { // will divide by 10^(digits_p - 16) // add a constant to P, depending on rounding mode // 0.5*10^(digits_p - 16) for round-to-nearest __add_128_64 (P, P, bid_round_const_table[rmode][extra_digits]); // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Q_high, Q_low, P, bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; __shr_128 (C128, Q_high, amount); C64 = __low_64 (C128); #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if ((C64 & 1) && !round_up) { // check whether fractional part of initial_P/10^extra_digits // is exactly .5 // this is the same as fractional part of // (initial_P + 0.5*10^extra_digits)/10^extra_digits is exactly zero // get remainder remainder_h = Q_high.w[0] << (64 - amount); // test whether fractional part is 0 if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) { C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS status = BID_INEXACT_EXCEPTION | uf_status; // get remainder remainder_h = Q_high.w[0] << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (remainder_h == 0x8000000000000000ull && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], CY, Q_low.w[0], bid_reciprocals10_128[extra_digits].w[0]); __add_carry_in_out (Stemp.w[1], carry, Q_low.w[1], bid_reciprocals10_128[extra_digits].w[1], CY); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; } __set_status_flags (pfpsf, status); #endif // convert to BID and return res = fast_get_BID64_check_OF (sign_x ^ sign_y, final_exponent, C64, rnd_mode, pfpsf); BID_RETURN (res); } // go to convert_format and exit C64 = __low_64 (P); res = get_BID64 (sign_x ^ sign_y, exponent_x + exponent_y - DECIMAL_EXPONENT_BIAS, C64, rnd_mode, pfpsf); BID_RETURN (res); } } LIBRARY/src/bid64_atanh.c0000644€­ Q01134020000000721615113665770014073 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_F80_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_atanh, BID_UINT64, x) BID_UINT64 sign_x, coefficient_x, xn, tmp, y; BID_UINT64 valid_x, res, one, one_m_x; BID_F80_TYPE xq, rq; int exponent_x; valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN if ((x & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK64; BID_RETURN (res); } // x is Infinity? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c00000000000000ull; BID_RETURN (res); } // x is 0 res = sign_x | coefficient_x; BID_RETURN (res); } if(exponent_x <= DECIMAL_EXPONENT_BIAS - 24) { res = x; BID_RETURN (res); } // |x| xn = x & 0x7fffffffffffffffull; // 1.0 one = 0x31c0000000000001ull; // 1 - |x| BIDECIMAL_CALL2 (bid64_sub, one_m_x, one, xn); if(one_m_x & 0x8000000000000000ull) { // |x|>1 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c00000000000000ull; BID_RETURN (res); } if(!(one_m_x<<(64-53)) && ((one_m_x & SPECIAL_ENCODING_MASK64)!=SPECIAL_ENCODING_MASK64)) { // |x|==1 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif res = sign_x | 0x7800000000000000ull; BID_RETURN (res); } // (2*|x|)/(1-|x|) BIDECIMAL_CALL2 (bid64_div, tmp, xn, one_m_x); BIDECIMAL_CALL2 (bid64_add, y, tmp, tmp); BIDECIMAL_CALL1 (bid64_to_binary80, xq, y); __bid_f80_log1p(rq, xq); __bid_f80_mul( rq,rq, c_half.v ); BIDECIMAL_CALL1 (binary80_to_bid64, res, rq); res ^= sign_x; BID_RETURN (res); } LIBRARY/src/bid32_asinh.c0000644€­ Q01134020000000506715113665770014077 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_EXTERN_C double asinh(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_asinh, BID_UINT32, x) BID_UINT32 sign_x, coefficient_x; BID_UINT32 valid_x, res; double xd, zd; int exponent_x; valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN if ((x & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e000000) == 0x7e000000) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK32; BID_RETURN (res); } // x is Infinity? if ((x & 0x78000000) == 0x78000000) { res = sign_x | 0x78000000; BID_RETURN (res); } // x is 0 res = sign_x | coefficient_x; BID_RETURN (res); } BIDECIMAL_CALL1(bid32_to_binary64,xd,x); zd = asinh(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,zd); BID_RETURN (res); } LIBRARY/src/bid32_to_int64.c0000644€­ Q01134020000024140015113665770014434 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_to_int64_rnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int64_rnint (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid32_to_int64_rnint, 32) BID_SINT64 bid32_to_int64_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(q-1)00...0 (19 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] > 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000005, 1<=q<=7 // <=> C * 10^(20-q) > 0x50000000000000005, 1<=q<=7 // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x50000000000000005, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] > 0x05ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=7 // <=> if C * 10^(20-q) >= 0x4fffffffffffffffb, 1<=q<=7 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1/2 <= n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; // 0 <= ind <= 6 if ((BID_UINT64)C1 <= bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } else { // if (1 <= q + exp <= 19, 1 <= q <= 7, -6 <= exp <= 18) // -2^63-1/2 <= x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 7 // res = +/-C (exact) if (x_sign) res = -(BID_UINT64)C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 7, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -(BID_UINT64)C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int64_xrnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int64_xrnint (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid32_to_int64_xrnint, 32) BID_SINT64 bid32_to_int64_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(q-1)00...0 (19 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] > 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000005, 1<=q<=7 // <=> C * 10^(20-q) > 0x50000000000000005, 1<=q<=7 // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x50000000000000005, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] > 0x05ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=7 // <=> if C * 10^(20-q) >= 0x4fffffffffffffffb, 1<=q<=7 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1/2 <= n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; // 0 <= ind <= 6 if ((BID_UINT64)C1 <= bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 19, 1 <= q <= 7, -6 <= exp <= 18) // -2^63-1/2 <= x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 7 // res = +/-C (exact) if (x_sign) res = -(BID_UINT64)C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 7, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -(BID_UINT64)C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int64_floor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int64_floor (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid32_to_int64_floor, 32) BID_SINT64 bid32_to_int64_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(q-1)00...0 (19 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] > 2^63 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000000, 1<=q<=7 // <=> C * 10^(20-q) > 0x50000000000000000, 1<=q<=7 // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] != 0)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=7 // <=> if C * 10^(20-q) >= 0x50000000000000000, 1<=q<=7 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); if (C.w[1] >= 0x05ull) { // actually C.w[1] == 0x05ull && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63 <= n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return -1 or 0 if (x_sign) res = 0xffffffffffffffffull; else res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 7, -6 <= exp <= 18) // -2^63 <= x <= -1 or 1 <= x < 2^63 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 7 // res = +/-C (exact) if (x_sign) res = -(BID_UINT64)C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 7, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -(BID_UINT64)C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int64_xfloor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int64_xfloor (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid32_to_int64_xfloor, 32) BID_SINT64 bid32_to_int64_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x0000000000000000ull; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(q-1)00...0 (19 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n < -2^63 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] > 2^63 // <=> 0.c(0)c(1)...c(q-1) * 10^20 > 0x50000000000000000, 1<=q<=7 // <=> C * 10^(20-q) > 0x50000000000000000, 1<=q<=7 // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] != 0)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=7 // <=> if C * 10^(20-q) >= 0x50000000000000000, 1<=q<=7 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); if (C.w[1] >= 0x05ull) { // actually C.w[1] == 0x05ull && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63 <= n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return -1 or 0 if (x_sign) res = 0xffffffffffffffffull; else res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 7, -6 <= exp <= 18) // -2^63 <= x <= -1 or 1 <= x < 2^63 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 7 // res = +/-C (exact) if (x_sign) res = -(BID_UINT64)C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 7, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -(BID_UINT64)C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int64_ceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int64_ceil (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid32_to_int64_ceil, 32) BID_SINT64 bid32_to_int64_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(q-1)00...0 (19 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x5000000000000000a, 1<=q<=7 // <=> C * 10^(20-q) >= 0x5000000000000000a, 1<=q<=7 // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x0aull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n > 2^63 - 1 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] > 2^63 - 1 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 > 0x4fffffffffffffff6, 1<=q<=7 // <=> if C * 10^(20-q) > 0x4fffffffffffffff6, 1<=q<=7 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffff6ull; // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 7, -6 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x <= 2^63 - 1 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 7 // res = +/-C (exact) if (x_sign) res = -(BID_UINT64)C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 7, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -(BID_UINT64)C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int64_xceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int64_xceil (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid32_to_int64_xceil, 32) BID_SINT64 bid32_to_int64_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(q-1)00...0 (19 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x5000000000000000a, 1<=q<=7 // <=> C * 10^(20-q) >= 0x5000000000000000a, 1<=q<=7 // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x0aull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n > 2^63 - 1 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] > 2^63 - 1 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 > 0x4fffffffffffffff6, 1<=q<=7 // <=> if C * 10^(20-q) > 0x4fffffffffffffff6, 1<=q<=7 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffff6ull; // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 7, -6 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x <= 2^63 - 1 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 7 // res = +/-C (exact) if (x_sign) res = -(BID_UINT64)C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 7, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -(BID_UINT64)C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int64_int ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int64_int (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid32_to_int64_int, 32) BID_SINT64 bid32_to_int64_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(q-1)00...0 (19 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x5000000000000000a, 1<=q<=7 // <=> C * 10^(20-q) >= 0x5000000000000000a, 1<=q<=7 // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x0aull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=7 // <=> if C * 10^(20-q) >= 0x50000000000000000, 1<=q<=7 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); if (C.w[1] >= 0x05ull) { // actually C.w[1] == 0x05ull && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 7, -6 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x < 2^63 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 7 // res = +/-C (exact) if (x_sign) res = -(BID_UINT64)C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 7, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -(BID_UINT64)C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int64_xint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int64_xint (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid32_to_int64_xint, 32) BID_SINT64 bid32_to_int64_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(q-1)00...0 (19 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63+1 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x5000000000000000a, 1<=q<=7 // <=> C * 10^(20-q) >= 0x5000000000000000a, 1<=q<=7 // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x5000000000000000a, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x0aull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000000, 1<=q<=7 // <=> if C * 10^(20-q) >= 0x50000000000000000, 1<=q<=7 C.w[1] = 0x0000000000000005ull; C.w[0] = 0x0000000000000000ull; // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); if (C.w[1] >= 0x05ull) { // actually C.w[1] == 0x05ull && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1 < n < 2^63 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else { // if (1 <= q + exp <= 19, 1 <= q <= 7, -6 <= exp <= 18) // -2^63-1 < x <= -1 or 1 <= x < 2^63 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 7 // res = +/-C (exact) if (x_sign) res = -(BID_UINT64)C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 7, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -(BID_UINT64)C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int64_rninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int64_rninta (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid32_to_int64_rninta, 32) BID_SINT64 bid32_to_int64_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(q-1)00...0 (19 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000005, 1<=q<=7 // <=> C * 10^(20-q) >= 0x50000000000000005, 1<=q<=7 // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x50000000000000005, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x05ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=7 // <=> if C * 10^(20-q) >= 0x4fffffffffffffffb, 1<=q<=7 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1/2 < n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; // 0 <= ind <= 6 if (C1 < bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } } else { // if (1 <= q + exp <= 19, 1 <= q <= 7, -6 <= exp <= 18) // -2^63-1/2 < x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 7 // res = +/-C (exact) if (x_sign) res = -(BID_UINT64)C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 7, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -(BID_UINT64)C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int64_xrninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int64_xrninta (BID_SINT64 * pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BID_SINT64, bid32_to_int64_xrninta, 32) BID_SINT64 bid32_to_int64_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_SINT64 res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT128 C; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 19) { // x >= 10^19 ~= 2^63.11... (cannot fit in BID_SINT64) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 19) { // x = c(0)c(1)...c(q-1)00...0 (19 dec. digits) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in a signed 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 19' if (x_sign) { // if n < 0 and q + exp = 19 // if n <= -2^63 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^20 >= 0x50000000000000005, 1<=q<=7 // <=> C * 10^(20-q) >= 0x50000000000000005, 1<=q<=7 // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); // Note: C1 * 10^(11-q) has 19 or 20 digits; 0x50000000000000005, has 20 if (C.w[1] > 0x05ull || (C.w[1] == 0x05ull && C.w[0] >= 0x05ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } else { // if n > 0 and q + exp = 19 // if n >= 2^63 - 1/2 then n is too large // <=> c(0)c(1)...c(q-1)00...0[19 dec. digits] >= 2^63-1/2 // <=> if 0.c(0)c(1)...c(q-1) * 10^20 >= 0x4fffffffffffffffb, 1<=q<=7 // <=> if C * 10^(20-q) >= 0x4fffffffffffffffb, 1<=q<=7 C.w[1] = 0x0000000000000004ull; C.w[0] = 0xfffffffffffffffbull; // 1 <= q <= 7 => 13 <= 20-q <= 19 => 10^(20-q) is 64-bit, and so is C1 __mul_64x64_to_128MACH (C, (BID_UINT64)C1, bid_ten2k64[20 - q]); if (C.w[1] > 0x04ull || (C.w[1] == 0x04ull && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 19' } // end else if n > 0 and q + exp = 19 } // end else if ((q + exp) == 19) // n is not too large to be converted to int64: -2^63-1/2 < n < 2^63-1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; // 0 <= ind <= 6 if (C1 < bid_midpoint64[ind]) { res = 0x0000000000000000ull; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffffffffffffull; // return -1 } else { // n > 0 res = 0x0000000000000001ull; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 19, 1 <= q <= 7, -6 <= exp <= 18) // -2^63-1/2 < x <= -1 or 1 <= x < 2^63-1/2 so x can be rounded // to nearest to a 64-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 19 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 7 // res = +/-C (exact) if (x_sign) res = -(BID_UINT64)C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 18, 1 <= q <= 7, 2 <= q + exp <= 20 // (the upper limit of 20 on q + exp is due to the fact that // +/-C * 10^exp is guaranteed to fit in 64 bits) // res = +/-C * 10^exp (exact) if (x_sign) res = -(BID_UINT64)C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } LIBRARY/src/bid32_erf.c0000644€­ Q01134020000000477415113665770013555 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double erf(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_erf, BID_UINT32, x) // Declare local variables BID_UINT32 res; double xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Otherwise just do the operation "naively". // We inherit the erf([-]inf) = [-]1 case from the binary function, // rather than having a special case for it. BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = erf(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } LIBRARY/src/bid64_cosh.c0000644€­ Q01134020000000467215113665770013737 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_cosh, BID_UINT64, x) // Declare local variables BID_UINT64 res; BID_F80_TYPE xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Convert to binary and do the operation "naively" BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_cosh( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } LIBRARY/src/bid128_lrintd.c0000644€­ Q01134020000000701115113665770014346 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID128_lrintd ****************************************************************************/ /* DESCRIPTION: The lrint function rounds its argument to the nearest integer value of type long int, rounding according to the current rounding direction. RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid and inexact */ BID_RESTYPE0_FUNCTION_ARGTYPE1(long int, bid128_lrint, BID_UINT128, x) #if BID_SIZE_LONG==4 BID_SINT32 res; if (rnd_mode == BID_ROUNDING_TO_NEAREST) BIDECIMAL_CALL1_NORND (bid128_to_int32_xrnint, res, x); else if (rnd_mode == BID_ROUNDING_TIES_AWAY) BIDECIMAL_CALL1_NORND (bid128_to_int32_xrninta, res, x); else if (rnd_mode == BID_ROUNDING_DOWN) BIDECIMAL_CALL1_NORND (bid128_to_int32_xfloor, res, x); else if (rnd_mode == BID_ROUNDING_UP) BIDECIMAL_CALL1_NORND (bid128_to_int32_xceil, res, x); else // if (rnd_mode == BID_ROUNDING_TO_ZERO) BIDECIMAL_CALL1_NORND (bid128_to_int32_xint, res, x); #else // if BID_SIZE_LONG==8 BID_SINT64 res; if (rnd_mode == BID_ROUNDING_TO_NEAREST) BIDECIMAL_CALL1_NORND (bid128_to_int64_xrnint, res, x); else if (rnd_mode == BID_ROUNDING_TIES_AWAY) BIDECIMAL_CALL1_NORND (bid128_to_int64_xrninta, res, x); else if (rnd_mode == BID_ROUNDING_DOWN) BIDECIMAL_CALL1_NORND (bid128_to_int64_xfloor, res, x); else if (rnd_mode == BID_ROUNDING_UP) BIDECIMAL_CALL1_NORND (bid128_to_int64_xceil, res, x); else // if (rnd_mode == BID_ROUNDING_TO_ZERO) BIDECIMAL_CALL1_NORND (bid128_to_int64_xint, res, x); #endif BID_RETURN ((long int)res); } LIBRARY/src/bid128_cbrt.c0000644€­ Q01134020000000621615113665770014012 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID128_FUNCTION_ARG1 (bid128_cbrt, x) BID_UINT128 CX, res, tmp; BID_UINT64 sign_x; int exponent_x, k, j, iexpon; BID_F128_TYPE rq, xq; // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value_BLE (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN if ((x.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = (CX.w[BID_HIGH_128W]) & QUIET_MASK64; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; BID_RETURN (res); } // x is Infinity? if ((x.w[BID_HIGH_128W] & 0x7800000000000000ull) == 0x7800000000000000ull) { res.w[BID_HIGH_128W] = sign_x | 0x7800000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } // x is 0 res.w[BID_HIGH_128W] = sign_x | CX.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; BID_RETURN (res); } // get exponent/3 iexpon = exponent_x+1; k = ((int)iexpon * (int)0x5556) >> 16; // exponent%3 j = iexpon - 3*k; // eliminate bias from k k -= ((1+DECIMAL_EXPONENT_BIAS_128)/3); bid_get_BID128_very_fast_BLE (&tmp, sign_x, j+DECIMAL_EXPONENT_BIAS_128, CX); BIDECIMAL_CALL1 (bid128_to_binary128, xq, tmp); __bid_f128_cbrt(rq, xq); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); res.w[BID_HIGH_128W] += (((BID_SINT64)k)<<49); BID_RETURN (res); } LIBRARY/src/bid64_to_uint32.c0000644€­ Q01134020000023757715113665770014645 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_to_uint32_rnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint32_rnint (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid64_to_uint32_rnint, 64) unsigned int bid64_to_uint32_rnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb, 1<=q<=16 // <=> C * 10^(11-q) >= 0x9fffffffb, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffffb has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x9fffffffb <=> // C >= 0x9fffffffb * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^32-1/2 up) // Note: 0x9fffffffb*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x9fffffffbull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32 if -1/2 <= n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (C1 <= bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // n > 0 res = 0x00000001; // return +1 } } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^32-1/2 <= x <= -1 or 1 <= x < 2^32-1/2 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32-1/2 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint32_xrnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint32_xrnint (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid64_to_uint32_xrnint, 64) unsigned int bid64_to_uint32_xrnint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb, 1<=q<=16 // <=> C * 10^(11-q) >= 0x9fffffffb, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffffb has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x9fffffffb <=> // C >= 0x9fffffffb * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^32-1/2 up) // Note: 0x9fffffffb*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x9fffffffbull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32 if -1/2 <= n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (C1 <= bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // n > 0 res = 0x00000001; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^32-1/2 <= x <= -1 or 1 <= x < 2^32-1/2 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32-1/2 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint32_floor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint32_floor (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid64_to_uint32_floor, 64) unsigned int bid64_to_uint32_floor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero if (x_sign) { // if n < 0 the conversion is invalid // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' // n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000, 1<=q<=16 // <=> C * 10^(11-q) >= 0xa00000000, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0xa00000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0xa00000000 <=> // C >= 0xa00000000 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^32-1/2 up) // Note: 0xa00000000*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0xa00000000ull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // 1 <= x < 2^32 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint32_xfloor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint32_xfloor (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid64_to_uint32_xfloor, 64) unsigned int bid64_to_uint32_xfloor (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero if (x_sign) { // if n < 0 the conversion is invalid // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' // if n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000, 1<=q<=16 // <=> C * 10^(11-q) >= 0xa00000000, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0xa00000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0xa00000000 <=> // C >= 0xa00000000 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^32-1/2 up) // Note: 0xa00000000*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0xa00000000ull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // 1 <= x < 2^32 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint32_ceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint32_ceil (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid64_to_uint32_ceil, 64) unsigned int bid64_to_uint32_ceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n > 2^32 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^32 - 1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x9fffffff6, 1<=q<=16 // <=> C * 10^(11-q) > 0x9fffffff6, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffff6 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x9fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) > 0x9fffffff6 <=> // C > 0x9fffffff6 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^32-1 up) // Note: 0x9fffffff6*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x9fffffff6ull * bid_ten2k64[q - 11]; if (C1 > tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // x <= -1 or 1 <= x <= 2^32 - 1 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x <= 2^32 - 1 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint32_xceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint32_xceil (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid64_to_uint32_xceil, 64) unsigned int bid64_to_uint32_xceil (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n > 2^32 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^32 - 1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x9fffffff6, 1<=q<=16 // <=> C * 10^(11-q) > 0x9fffffff6, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffff6 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x9fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) > 0x9fffffff6 <=> // C > 0x9fffffff6 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^32-1 up) // Note: 0x9fffffff6*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x9fffffff6ull * bid_ten2k64[q - 11]; if (C1 > tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // x <= -1 or 1 <= x < 2^32 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint32_int ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint32_int (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid64_to_uint32_int, 64) unsigned int bid64_to_uint32_int (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000, 1<=q<=16 // <=> C * 10^(11-q) >= 0xa00000000, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0xa00000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0xa00000000 <=> // C >= 0xa00000000 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^32-1/2 up) // Note: 0xa00000000*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0xa00000000ull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // x <= -1 or 1 <= x < 2^32 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint32_xint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint32_xint (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid64_to_uint32_xint, 64) unsigned int bid64_to_uint32_xint (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000, 1<=q<=16 // <=> C * 10^(11-q) >= 0xa00000000, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0xa00000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0xa00000000 <=> // C >= 0xa00000000 * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^32-1/2 up) // Note: 0xa00000000*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0xa00000000ull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // x <= -1 or 1 <= x < 2^32 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint32_rninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint32_rninta (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid64_to_uint32_rninta, 64) unsigned int bid64_to_uint32_rninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb, 1<=q<=16 // <=> C * 10^(11-q) >= 0x9fffffffb, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffffb has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x9fffffffb <=> // C >= 0x9fffffffb * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^32-1/2 up) // Note: 0x9fffffffb*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x9fffffffbull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32 if -1/2 < n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (C1 < bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // n > 0 res = 0x00000001; // return +1 } } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^32-1/2 <= x <= -1 or 1 <= x < 2^32-1/2 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32-1/2 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID64_to_uint32_xrninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64_to_uint32_xrninta (unsigned int *pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid64_to_uint32_xrninta, 64) unsigned int bid64_to_uint32_xrninta (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN) == MASK_NAN || (x & MASK_INF) == MASK_INF) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { x_exp = (x & MASK_BINARY_EXPONENT2) >> 51; // biased C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1) >> 53; // biased C1 = x & MASK_BINARY_SIG1; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0ull) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1 >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 398; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32-1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb, 1<=q<=16 // <=> C * 10^(11-q) >= 0x9fffffffb, 1<=q<=16 if (q <= 11) { // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffffb has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 16 and so -15 <= exp <= -2 // C * 10^(11-q) >= 0x9fffffffb <=> // C >= 0x9fffffffb * 10^(q-11) where 1 <= q - 11 <= 5 // (scale 2^32-1/2 up) // Note: 0x9fffffffb*10^(q-11) has q-1 or q digits, where q <= 16 tmp64 = 0x9fffffffbull * bid_ten2k64[q - 11]; if (C1 >= tmp64) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32 if -1/2 < n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (C1 < bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // n > 0 res = 0x00000001; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 16, -15 <= exp <= 9) // -2^32-1/2 <= x <= -1 or 1 <= x < 2^32-1/2 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32-1/2 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 16, -15 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 15; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 15 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } LIBRARY/src/bid32_to_int8.c0000644€­ Q01134020000000633215113665770014355 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffffff80 #define INVALID_RESULT 0x80 BID_TO_SMALL_INT_CVT_FUNCTION (char, bid32_to_int8_rnint, BID_UINT32, x, bid32_to_int32_rnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid32_to_int8_xrnint, BID_UINT32, x, bid32_to_int32_xrnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid32_to_int8_rninta, BID_UINT32, x, bid32_to_int32_rninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid32_to_int8_xrninta, BID_UINT32, x, bid32_to_int32_xrninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid32_to_int8_int, BID_UINT32, x, bid32_to_int32_int, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid32_to_int8_xint, BID_UINT32, x, bid32_to_int32_xint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid32_to_int8_floor, BID_UINT32, x, bid32_to_int32_floor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid32_to_int8_ceil, BID_UINT32, x, bid32_to_int32_ceil, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid32_to_int8_xfloor, BID_UINT32, x, bid32_to_int32_xfloor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (char, bid32_to_int8_xceil, BID_UINT32, x, bid32_to_int32_xceil, int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid32_expm1.c0000644€­ Q01134020000000462515113665770014026 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double expm1(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_expm1, BID_UINT32, x) // Declare local variables BID_UINT32 res; double xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Convert to binary and do the operation naively BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = expm1(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } LIBRARY/src/bid32_to_uint8.c0000644€­ Q01134020000000653215113665770014544 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffffff00 #define INVALID_RESULT 0x80 BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid32_to_uint8_rnint, BID_UINT32, x, bid32_to_uint32_rnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid32_to_uint8_xrnint, BID_UINT32, x, bid32_to_uint32_xrnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid32_to_uint8_rninta, BID_UINT32, x, bid32_to_uint32_rninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid32_to_uint8_xrninta, BID_UINT32, x, bid32_to_uint32_xrninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid32_to_uint8_int, BID_UINT32, x, bid32_to_uint32_int, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid32_to_uint8_xint, BID_UINT32, x, bid32_to_uint32_xint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid32_to_uint8_floor, BID_UINT32, x, bid32_to_uint32_floor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid32_to_uint8_ceil, BID_UINT32, x, bid32_to_uint32_ceil, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid32_to_uint8_xfloor, BID_UINT32, x, bid32_to_uint32_xfloor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid32_to_uint8_xceil, BID_UINT32, x, bid32_to_uint32_xceil, unsigned int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid32_sub.c0000644€­ Q01134020000000454015113665770013561 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #if DECIMAL_CALL_BY_REFERENCE void bid32_sub (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x, y; #else DFP_WRAPFN_DFP_DFP(32, bid32_sub, 32, 32) BID_UINT32 bid32_sub (BID_UINT32 x, BID_UINT32 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 r32; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif x = *px; y = *py; #endif if (((y & NAN_MASK32) != NAN_MASK32)) y ^= 0x80000000; BIDECIMAL_CALL2 (bid32_add, r32, x, y); BID_RETURN(r32); } LIBRARY/src/bid_feraiseexcept.c0000644€­ Q01134020000000513415113665770015452 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" void bid_feraiseexcept( int excepts _EXC_FLAGS_PARAM ) { /* Take only supported exceptions */ excepts &= DEC_FE_ALL_EXCEPT; if( excepts & DEC_FE_INVALID ) { /* Invalid operation */ bid_raise_except(BID_INVALID_EXCEPTION); } if (excepts & DEC_FE_DIVBYZERO) { /* Division-by-zero */ bid_raise_except(BID_ZERO_DIVIDE_EXCEPTION); } if( excepts & DEC_FE_UNNORMAL ) { /* Denormal operand (IA-specific) */ bid_raise_except(BID_DENORMAL_EXCEPTION); } if (excepts & DEC_FE_OVERFLOW) { /* Overflow */ bid_raise_except(BID_OVERFLOW_EXCEPTION); } if (excepts & DEC_FE_UNDERFLOW) { /* Underflow */ bid_raise_except(BID_UNDERFLOW_EXCEPTION); } if (excepts & DEC_FE_INEXACT) { /* Separate Inexact */ bid_raise_except(BID_INEXACT_EXCEPTION); } } LIBRARY/src/bid128_modf.c0000644€­ Q01134020000000532715113665770014007 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #if DECIMAL_CALL_BY_REFERENCE void bid128_modf (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * pint _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else DFP_WRAPFN_DFP_DFP_POINTER(128, bid128_modf, 128, 128) BID_UINT128 bid128_modf (BID_UINT128 x, BID_UINT128 *pint _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res, xi; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = 0; #else rnd_mode=0; #endif BIDECIMAL_CALL1_NORND(bid128_round_integral_zero, xi, x); // check for Infinity if((x.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7800000000000000ull) { res.w[BID_HIGH_128W]= (x.w[BID_HIGH_128W] & 0x8000000000000000ull)|0x5ffe000000000000ull; res.w[BID_LOW_128W] = 0; } else { BIDECIMAL_CALL2 (bid128_sub, res, x, xi); } xi.w[BID_HIGH_128W] |= (x.w[BID_HIGH_128W] & 0x8000000000000000ull); res.w[BID_HIGH_128W] |= (x.w[BID_HIGH_128W] & 0x8000000000000000ull); *pint = (xi); BID_RETURN (res); } LIBRARY/src/bid128_exp2.c0000644€­ Q01134020000001400315113665770013727 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // 2-part conversion. BID_EXTERN_C void bid128_to_binary128_2part(BID_F128_TYPE *,BID_F128_TYPE *,BID_UINT128); static BID_UINT128 BID128_0 = {BID128_LH_INIT( 0x0000000000000000ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_INF = {BID128_LH_INIT( 0x0000000000000000ull, 0x7800000000000000ull )}; static BID_UINT128 BID128_25000 = {BID128_LH_INIT( 0x00000000000061a8ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_N25000 = {BID128_LH_INIT( 0x00000000000061a8ull, 0xb040000000000000ull )}; static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_EXP2_11000 = {BID128_LH_INIT( 0x910be3407d25b9c8ull, 0x49dc6965e972d2c8ull )}; static BID_UINT128 BID128_EXP2_M11000 = {BID128_LH_INIT( 0x0555ddab03e9e679ull, 0x161ee6a2f56f0580ull )}; // 10^-6000, to create dummy underflowing computation static BID_UINT128 BID128_10POWN6000 = {BID128_LH_INIT( 0x0000000000000001ull, 0x0160000000000000ull )}; BID_F128_CONST_DEF( c_11000, 400c57c000000000, 0000000000000000); // 11000 BID_F128_CONST_DEF(c_neg_11000, c00c57c000000000, 0000000000000000); // -11000 BID_F128_CONST_DEF( c_ln2, 3ffe62e42fefa39e, f35793c7673007e6); // ln(2) BID128_FUNCTION_ARG1 (bid128_exp2, x) // Declare local variables BID_F128_TYPE rq; BID_UINT128 res; BID_F128_TYPE mq, nq, rt; int z, cmp_res; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // If the input is actually infinity, return +inf or 0 if ((x.w[BID_HIGH_128W] & MASK_ANY_INF) == MASK_INF) { if ((x.w[BID_HIGH_128W] & MASK_SIGN) != 0) res = BID128_0; else res = BID128_INF; BID_RETURN(res); } // For x = 0, return 1 exactly in all rounding modes. BIDECIMAL_CALL1_NORND_NOSTAT (bid128_isZero, z, x); if (z) { res = BID128_1; BID_RETURN(res); } // For large positive inputs, use a dummy overflowing computation // to ensure things work correctly in all rounding modes (clamping to max etc.) BIDECIMAL_CALL2_NORND (bid128_quiet_greater, cmp_res, x, BID128_25000); if (cmp_res) { BIDECIMAL_CALL2(bid128_mul,res,BID128_EXP2_11000,BID128_EXP2_11000); BID_RETURN(res); } // For large negative inputs, use a dummy underflowing computation BIDECIMAL_CALL2_NORND (bid128_quiet_less, cmp_res, x, BID128_N25000); if (cmp_res) { BIDECIMAL_CALL2(bid128_mul,res,BID128_10POWN6000,BID128_10POWN6000); BID_RETURN (res); } // Do a 2-part input conversion into x = nq + mq [nq being high] bid128_to_binary128_2part(&nq,&mq,x); // Handle case where quad exponential would overflow. // Otherwise, do the obvious thing. if (__bid_f128_gt(nq, c_11000.v)) { __bid_f128_sub(nq, nq, c_11000.v); __bid_f128_exp2(rq, nq); __bid_f128_mul(rt, rq, c_ln2.v); //0.6931471805599453094172321214581765680755Q __bid_f128_mul(rt, rt, mq); __bid_f128_add(rq, rq, rt); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BIDECIMAL_CALL2 (bid128_mul, res, res, BID128_EXP2_11000); } else if (__bid_f128_lt(nq, c_neg_11000.v)) { __bid_f128_add(nq, nq, c_11000.v); __bid_f128_exp2(rq, nq); __bid_f128_mul(rt, rq, c_ln2.v); //0.6931471805599453094172321214581765680755Q __bid_f128_mul(rt, rt, mq); __bid_f128_add(rq, rq, rt); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BIDECIMAL_CALL2 (bid128_mul, res, res, BID128_EXP2_M11000); } else { __bid_f128_exp2(rq, nq); __bid_f128_mul(rt, rq, c_ln2.v); //0.6931471805599453094172321214581765680755Q __bid_f128_mul(rt, rt, mq); __bid_f128_add(rq, rq, rt); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); } BID_RETURN (res); } LIBRARY/src/bid32_log1p.c0000644€­ Q01134020000000707415113665770014017 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_EXTERN_C double fabs(double); BID_EXTERN_C double log(double); BID_EXTERN_C double log1p(double); static BID_UINT32 BID32_MINUS_HALF = 0xb2000005ul; static BID_UINT32 BID32_1 = 0x32800001ul; #define BID32_NAN 0x7c000000ul BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_log1p, BID_UINT32, x) // Declare local variables BID_UINT32 res, y; int sm; double xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // If x < -1/2 we have condition issues with the naive computation. // Instead, do y = 1 + x exactly in decimal and call usual log function. BIDECIMAL_CALL2_NORND(bid32_quiet_less,sm,x,BID32_MINUS_HALF); if (sm) { BIDECIMAL_CALL2(bid32_add,y,x,BID32_1); if ((y & SIGNMASK32) == SIGNMASK32) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(BID32_NAN); } BIDECIMAL_CALL1(bid32_to_binary64,xd,y); yd = log(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN(res); } // Otherwise just do the operation "naively". // Inherit all other special cases (infinity, negative,...) from binary. else { BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = log1p(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } } LIBRARY/src/bid32_nexttowardd.c0000644€­ Q01134020000001534215113665770015335 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32 nexttowardd ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT32, bid32_nexttoward, BID_UINT32, x, BID_UINT128, y) BID_UINT32 res; BID_UINT128 x128, tmp128; BID_UINT32 tmp1, tmp2; BID_FPSC tmp_fpsf = 0; // dummy fpsf for calls to comparison functions int res1, res2; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = BID_ROUNDING_TO_NEAREST; // dummy; used to convert 128-bit NaN result to 32-bit #endif // check for NaNs or infinities if (((x & MASK_SPECIAL32) == MASK_SPECIAL32) || (((y.w[BID_HIGH_128W] & MASK_NAN) == MASK_NAN) || ((y.w[BID_HIGH_128W] & MASK_ANY_INF) == MASK_INF))) { // x is NaN or infinity or y is NaN or infinity if ((x & MASK_NAN32) == MASK_NAN32) { // x is NAN if ((x & 0x000fffff) > 999999) x = x & 0xfe000000; // clear G6-G10 and the payload bits else x = x & 0xfe0fffff; // clear G6-G10 if ((x & MASK_SNAN32) == MASK_SNAN32) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res = x & 0xfdffffff; } else { // x is QNaN if ((y.w[BID_HIGH_128W] & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } // return x res = x; } BID_RETURN (res); } else if ((y.w[BID_HIGH_128W] & MASK_NAN) == MASK_NAN) { // y is NAN then res = Q (y) // check first for non-canonical NaN payload if (((y.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((y.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (y.w[BID_LOW_128W] > 0x38c15b09ffffffffull))) { y.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0xffffc00000000000ull; y.w[BID_LOW_128W] = 0x0ull; } if ((y.w[BID_HIGH_128W] & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (y) tmp128.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] tmp128.w[BID_LOW_128W] = y.w[BID_LOW_128W]; } else { // y is QNaN // return y tmp128.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0xfc003fffffffffffull; // clear out G[6]-G[16] tmp128.w[BID_LOW_128W] = y.w[BID_LOW_128W]; } BIDECIMAL_CALL1 (bid128_to_bid32, res, tmp128); BID_RETURN (res); } else { // at least one is infinity if ((x & MASK_ANY_INF32) == MASK_INF32) { // x = inf x = x & (MASK_SIGN32 | MASK_INF32); } if ((y.w[BID_HIGH_128W] & MASK_ANY_INF) == MASK_INF) { // y = inf y.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & (MASK_SIGN | MASK_INF); y.w[BID_LOW_128W] = 0x0ull; } } } // neither x nor y is NaN // if not infinity, check for non-canonical values x (treated as zero) if ((x & MASK_ANY_INF32) != MASK_INF32) { // x != inf // unpack x if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:7] if (((x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999) { // non-canonical x = (x & MASK_SIGN32) | ((x & MASK_BINARY_EXPONENT2_32) << 2); } } else { // if ((x & MASK_STEERING_BITS32) != MASK_STEERING_BITS32) x is unchanged ; // canonical } } // no need to check for non-canonical y // neither x nor y is NaN tmp_fpsf = *pfpsf; // save fpsf // convert x to 128-bit format BIDECIMAL_CALL1_NORND (bid32_to_bid128, x128, x); BIDECIMAL_CALL2_NORND (bid128_quiet_equal, res1, x128, y); BIDECIMAL_CALL2_NORND (bid128_quiet_greater, res2, x128, y); *pfpsf = tmp_fpsf; // restore fpsf if (res1) { // x = y // return x with the sign of y res = (BID_UINT32)((y.w[BID_HIGH_128W] & MASK_SIGN) >> 32) | (x & 0x7fffffff); } else if (res2) { // x > y BIDECIMAL_CALL1_NORND (bid32_nextdown, res, x); } else { // x < y BIDECIMAL_CALL1_NORND (bid32_nextup, res, x); } // if the operand x is finite but the result is infinite, signal // overflow and inexact if (((x & MASK_INF32) != MASK_INF32) && ((res & MASK_INF32) == MASK_INF32)) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; } // if the result is in (-10^emin, 10^emin), and is different from the // operand x, signal underflow and inexact tmp1 = 0x0f4240; // +1000000 * 10^emin tmp2 = res & 0x7fffffff; tmp_fpsf = *pfpsf; // save fpsf BIDECIMAL_CALL2_NORND (bid32_quiet_greater, res1, tmp1, tmp2); BIDECIMAL_CALL2_NORND (bid32_quiet_not_equal, res2, x, res); *pfpsf = tmp_fpsf; // restore fpsf if (res1 && res2) { // if (bid32_quiet_greater (tmp1, tmp2, &tmp_fpsf) && // bid32_quiet_not_equal (x, res, &tmp_fpsf)) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the underflow flag *pfpsf |= BID_UNDERFLOW_EXCEPTION; } BID_RETURN (res); } LIBRARY/src/bid128_2_str.h0000644€­ Q01134020000000405515113665770014115 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ BID_EXTERN_C BID_UINT64 bid_Twoto60_m_10to18; BID_EXTERN_C BID_UINT64 bid_Twoto60; BID_EXTERN_C BID_UINT64 bid_Inv_Tento9; BID_EXTERN_C BID_UINT32 bid_Twoto30_m_10to9; BID_EXTERN_C BID_UINT32 bid_Tento9; BID_EXTERN_C BID_UINT32 bid_Tento6; BID_EXTERN_C BID_UINT32 bid_Tento3; BID_EXTERN_C const char bid_midi_tbl[1000][3]; BID_EXTERN_C const BID_UINT64 mod10_18_tbl[9][128]; LIBRARY/src/bid64_llquantexpd.c0000644€­ Q01134020000000463115113665770015337 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_llquantexp ****************************************************************************/ /* Exceptions signaled: invalid */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND(long long int, bid64_llquantexp, BID_UINT64, x) long long int res; // quantum if (((x & MASK_INF) == MASK_INF) || ((x & MASK_NAN) == MASK_NAN)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; res = 0x8000000000000000ull; BID_RETURN (res); } if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) res = (long long int)((x >> 51) & 0x3ff) - 398; else res = (long long int)((x >> 53) & 0x3ff) - 398; BID_RETURN (res); } LIBRARY/src/bid128_scalbl.c0000644€­ Q01134020000000425415113665770014320 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID128_FUNCTION_ARG128_CUSTOMARGTYPE2 (bid128_scalbln, x, long int, n) BID_UINT128 res; int n1; n1 = (int)n; n1 = n1 < n ? (int)0x7fffffff : n1 > n ? (int)0x80000000 : n1; /* treat overflow/underflow */ #if DECIMAL_CALL_BY_REFERENCE bid128_scalbn (&res, &x, &n1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid128_scalbn (x, n1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } LIBRARY/src/bid128_acos.c0000644€­ Q01134020000001250715113665770014005 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // -1, used in sqrt(1 - x^2) computation static BID_UINT128 BID128_MINUS1 = {BID128_LH_INIT( 0x0000000000000001ull, 0xb040000000000000ull )}; // 2-part pi, used in trivial path. static BID_UINT128 BID128_PI2HI = {BID128_LH_INIT( 0xdd5f2ab27379cfc7ull, 0x2ffe4d723cabcb53ull )}; static BID_UINT128 BID128_PI2LO = {BID128_LH_INIT( 0x0492b4138a162883ull, 0x2fbad9f8afb501d4ull )}; // Zero with minimal exponent, as return for acos(1) static BID_UINT128 BID128_0 = {BID128_LH_INIT( 0x0000000000000000ull, 0x0000000000000000ull )}; // NaN for inputs |x| > 1 static BID_UINT128 BID128_NAN = {BID128_LH_INIT( 0x0000000000000000ull, 0x7c00000000000000ull )}; BID_F128_CONST_DEF( c_1em40, 3f7a16c262777579, c58c46475896767b); // 1e-40 BID_F128_CONST_DEF( c_7_10ths, 3ffe666666666666, 6666666666666666); // .7 BID_F128_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F128_CONST_DEF( c_zero, 0000000000000000, 0000000000000000); // 0.0 BID_F128_CONST_DEF( c_pi, 4000921fb54442d1, 8469898cc51701b8); // pi BID128_FUNCTION_ARG1 (bid128_acos, x) // Declare local variables BID_UINT128 res, t; BID_F128_TYPE xd, td, yd, abs_xd; BID_UINT128 tm1 = BID128_MINUS1; BID_UINT128 pi2hi = BID128_PI2HI, pi2lo = BID128_PI2LO; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // Convert to binary BIDECIMAL_CALL1(bid128_to_binary128,xd,x); // If the input is very small indeed, do a special computation, since // the conversion to binary may already have underflowed to zero. // The computation is just a 2-part pi to work with directed rounding. // Whatever the value of x may be, if it's <= 10^-40 in magnitude it // won't knock this 2-part value across a FP number boundary. __bid_f128_fabs(abs_xd, xd); if (__bid_f128_lt(abs_xd, c_1em40.v)) { BIDECIMAL_CALL2(bid128_add,res,pi2hi, pi2lo); BID_RETURN(res); } // If the input is not too close to +/- 1 then do it "naively" if (__bid_f128_le(abs_xd, c_7_10ths.v)) { __bid_f128_acos(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } // If the input is > 1 in magnitude, fail if (__bid_f128_gt(abs_xd, c_one.v)) { res = BID128_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(res); } // If the input is exactly 1, return a canonical zero with minimal exponent // Uses >= 1 instead of == 1 to avoid compiler warnings... if (__bid_f128_ge(xd, c_one.v)) { res = BID128_0; BID_RETURN(res); } // Otherwise compute sqrt(1 - x^2) accurately and use asin instead. else { BIDECIMAL_CALL3(bid128_fma,t,x,x,tm1); BIDECIMAL_CALL1(bid128_to_binary128,td,t); { __bid_f128_neg(yd, td); __bid_f128_sqrt(yd, yd); __bid_f128_asin(yd, yd); } if (__bid_f128_lt(xd, c_zero.v)) __bid_f128_sub(yd, c_pi.v, yd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN (res); } } LIBRARY/src/bid128_tan.c0000644€­ Q01134020000345330315113665770013650 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // Extra macros #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define lt128(x_hi,x_lo,y_hi,y_lo) \ (((x_hi) < (y_hi)) || (((x_hi) == (y_hi)) && ((x_lo) < (y_lo)))) #define sll192_short(hi,med,lo,c) \ ((hi) = ((hi) << (c)) + ((med)>>(64-(c))), \ (med) = ((med) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll256_short(hi,mhi,mlo,lo,c) \ ((hi) = ((hi) << (c)) + ((mhi)>>(64-(c))), \ (mhi) = ((mhi) << (c)) + ((mlo)>>(64-(c))), \ (mlo) = ((mlo) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define srl128_short(hi,lo,c) \ ((lo) = ((hi) << (64 - (c))) + ((lo) >> (c)), \ (hi) = (hi) >> (c) \ ) typedef struct { BID_UINT64 w[7]; } BID_UINT448; #define __mul_64x384_to_448(P, A, B) \ { BID_UINT128 lP0,lP1,lP2,lP3,lP4,lP5; \ BID_UINT64 lC; \ __mul_64x64_to_128(lP0, A, (B).w[0]); \ __mul_64x64_to_128(lP1, A, (B).w[1]); \ __mul_64x64_to_128(lP2, A, (B).w[2]); \ __mul_64x64_to_128(lP3, A, (B).w[3]); \ __mul_64x64_to_128(lP4, A, (B).w[4]); \ __mul_64x64_to_128(lP5, A, (B).w[5]); \ (P).w[0] = lP0.w[0]; \ __add_carry_out((P).w[1],lC,lP1.w[0],lP0.w[1]); \ __add_carry_in_out((P).w[2],lC,lP2.w[0],lP1.w[1],lC); \ __add_carry_in_out((P).w[3],lC,lP3.w[0],lP2.w[1],lC); \ __add_carry_in_out((P).w[4],lC,lP4.w[0],lP3.w[1],lC); \ __add_carry_in_out((P).w[5],lC,lP5.w[0],lP4.w[1],lC); \ (P).w[6] = lP5.w[1] + lC; \ } #define __mul_128x384_to_512(P, A, B) \ { BID_UINT448 P0,P1; \ BID_UINT64 CY; \ __mul_64x384_to_448(P0,(A).w[0],B); \ __mul_64x384_to_448(P1,(A).w[1],B); \ (P).w[0] = P0.w[0]; \ __add_carry_out((P).w[1],CY,P1.w[0],P0.w[1]); \ __add_carry_in_out((P).w[2],CY,P1.w[1],P0.w[2],CY); \ __add_carry_in_out((P).w[3],CY,P1.w[2],P0.w[3],CY); \ __add_carry_in_out((P).w[4],CY,P1.w[3],P0.w[4],CY); \ __add_carry_in_out((P).w[5],CY,P1.w[4],P0.w[5],CY); \ __add_carry_in_out((P).w[6],CY,P1.w[5],P0.w[6],CY); \ (P).w[7] = P1.w[6] + CY; \ } // Standard NaN static BID_UINT128 BID128_NAN = {BID128_LH_INIT( 0x0000000000000000ull, 0x7c00000000000000ull )}; // 10^-40, used in trivial path static BID_UINT128 BID128_10PP40 = {BID128_LH_INIT( 0x0000000000000001ull, 0x2ff0000000000000ull )}; // Values of (10^a / 2 pi) mod 1 for -35 <= a <= 6111 // Each one is a 384-bit binary fraction. This may be a bit too much! // My rough guideline is a bit more than 3x the working precision // (you multiply by that order, the reduced argument can be as small // as that order, and you want accuracy of that order). But I may well // be able to get away with 5 chunks. Probably not 4? static BID_UINT384 bid_decimal128_moduli[] = { {{ 0x4abfd0d644dca156ull, 0xe9cf4c5596df69ecull, 0xd5ccdc56a81e2464ull, 0x9382546d1dfa1e2aull, 0x000000000000021dull, 0x0000000000000000ull }}, {{ 0xeb7e285eb09e4d57ull, 0x2218fb57e4ba233aull, 0x5a009b62912d6bf1ull, 0xc3174c432bc52dacull, 0x0000000000001527ull, 0x0000000000000000ull }}, {{ 0x32ed93b2e62f0569ull, 0x54f9d16eef45604dull, 0x840611d9abc6376bull, 0x9ee8fa9fb5b3c8bbull, 0x000000000000d38dull, 0x0000000000000000ull }}, {{ 0xfd47c4fcfdd63618ull, 0x51c22e5558b5c303ull, 0x283cb280b5be2a31ull, 0x3519ca3d1905d753ull, 0x0000000000084388ull, 0x0000000000000000ull }}, {{ 0xe4cdb1e1ea5e1ceeull, 0x3195cf5577199e27ull, 0x925ef907196da5edull, 0x1301e662fa3a693full, 0x000000000052a352ull, 0x0000000000000000ull }}, {{ 0xf008f2d327ad214eull, 0xefda1956a7002d8eull, 0xb7b5ba46fe487b43ull, 0xbe12ffddc6481c7bull, 0x00000000033a6134ull, 0x0000000000000000ull }}, {{ 0x60597c3f8cc34d0cull, 0x5e84fd628601c795ull, 0x2d1946c5eed4d0a7ull, 0x6cbdfea9bed11cd5ull, 0x000000002047cc0full, 0x0000000000000000ull }}, {{ 0xc37eda7b7fa1027cull, 0xb131e5d93c11cbd5ull, 0xc2fcc3bb54502689ull, 0x3f6bf2a1742b2053ull, 0x0000000142cdf89aull, 0x0000000000000000ull }}, {{ 0xa2f488d2fc4a18d5ull, 0xebf2fa7c58b1f659ull, 0x9ddfa5514b218160ull, 0x7a377a4e89af4345ull, 0x0000000c9c0bb606ull, 0x0000000000000000ull }}, {{ 0x5d8d583ddae4f84full, 0x377dc8db76f39f80ull, 0x2abc752cef4f0dc9ull, 0xc62ac71160d8a0b8ull, 0x0000007e18751c40ull, 0x0000000000000000ull }}, {{ 0xa785726a8cf1b319ull, 0x2ae9d892a5843b03ull, 0xab5c93c1591689dcull, 0xbdabc6adc8764731ull, 0x000004ecf4931a87ull, 0x0000000000000000ull }}, {{ 0x8b3678298170fefcull, 0xad2275ba772a4e24ull, 0xb19dc58d7ae16299ull, 0x68b5c2c9d49ec7f0ull, 0x000031418dbf094dull, 0x0000000000000000ull }}, {{ 0x7020b19f0e69f5d6ull, 0xc3589948a7a70d6dull, 0xf029b786cccdda00ull, 0x17199be24e33cf66ull, 0x0001ec8f89765d06ull, 0x0000000000000000ull }}, {{ 0x6146f03690239a60ull, 0xa175fcd68c868646ull, 0x61a12b44000a8407ull, 0xe70016d70e061a05ull, 0x00133d9b5e9fa23cull, 0x0000000000000000ull }}, {{ 0xccc56221a16407c3ull, 0x4e9be0617d413ebfull, 0xd04bb0a80069284cull, 0x0600e4668c3d0435ull, 0x00c06811b23c5661ull, 0x0000000000000000ull }}, {{ 0xffb5d5504de84da0ull, 0x1216c3cee48c737dull, 0x22f4e690041b92fbull, 0x3c08ec017a622a1aull, 0x078410b0f65b5fcaull, 0x0000000000000000ull }}, {{ 0xfd1a55230b13083bull, 0xb4e3a614ed7c82ebull, 0x5d9101a02913bdceull, 0x5859380ec7d5a505ull, 0x4b28a6e99f91bde6ull, 0x0000000000000000ull }}, {{ 0xe307535e6ebe5250ull, 0x10e47cd146dd1d37ull, 0xa7aa10419ac56a13ull, 0x737c3093ce587235ull, 0xef9685203bb16affull, 0x0000000000000002ull }}, {{ 0xde4941b0536f3722ull, 0xa8ece02cc4a3242eull, 0x8ca4a2900bb624beull, 0x82d9e5c60f747618ull, 0x5be1334254ee2dfaull, 0x000000000000001dull }}, {{ 0xaedc90e342582755ull, 0x9940c1bfae5f69d4ull, 0x7e6e59a0751d6f72ull, 0x1c82f9bc9a8c9cf5ull, 0x96cc0097514dcbc9ull, 0x0000000000000125ull }}, {{ 0xd49da8e09771894dull, 0xfc87917ccfba224eull, 0xf04f804493265a79ull, 0x1d1dc15e097e2196ull, 0xe3f805e92d09f5dbull, 0x0000000000000b77ull }}, {{ 0x4e2898c5ea6f5d02ull, 0xdd4baee01d455714ull, 0x631b02adbf7f88c3ull, 0x23298dac5eed4fe5ull, 0xe7b03b1bc2639a8full, 0x00000000000072aeull }}, {{ 0x0d95f7bb2859a218ull, 0xa4f4d4c124b566cbull, 0xdf0e1ac97afb57a6ull, 0x5f9f88bbb5451ef5ull, 0x0ce24f1597e40997ull, 0x0000000000047ad5ull }}, {{ 0x87dbad4f938054f1ull, 0x71904f8b6f1603eeull, 0xb68d0bdecdd16c82ull, 0xbc3b575514b3359aull, 0x80d716d7eee85fe9ull, 0x00000000002ccc52ull }}, {{ 0x4e94c51bc303516bull, 0x6fa31b7256dc2751ull, 0x218276b40a2e3d18ull, 0x5a516952cf00180bull, 0x0866e46f5513bf21ull, 0x0000000001bffb39ull }}, {{ 0x11cfb3159e212e29ull, 0x5c5f12776499892dull, 0x4f18a30865ce62f4ull, 0x872e1d3c1600f06full, 0x5404ec5952c5774dull, 0x00000000117fd03aull }}, {{ 0xb21cfed82d4bcd9cull, 0x9bb6b8a9edff5bc2ull, 0x16f65e53fa0fdd8bull, 0x47cd2458dc096459ull, 0x48313b7d3bb6a907ull, 0x00000000aefe2247ull }}, {{ 0xf521f471c4f6081aull, 0x152336a34bf9959aull, 0xe59faf47c49ea774ull, 0xce036b78985deb7aull, 0xd1ec52e455229a48ull, 0x00000006d5ed56c8ull }}, {{ 0x93538c71b19c5108ull, 0xd3602260f7bfd80dull, 0xf83cd8cdae328a88ull, 0x0c2232b5f3ab32ccull, 0x333b3ceb535a06d8ull, 0x000000445b4563d8ull }}, {{ 0xc1437c70f01b2a51ull, 0x41c157c9ad7e7087ull, 0xb2607808cdf96958ull, 0x7955fb1b84affc01ull, 0x0050613141844470ull, 0x000002ab90b5e672ull }}, {{ 0x8ca2dc69610fa72bull, 0x918d6de0c6f0654dull, 0xf7c4b0580bbe1d72ull, 0xbd5bcf132edfd810ull, 0x0323cbec8f2aac64ull, 0x00001ab3a71b0074ull }}, {{ 0x7e5c9c1dca9c87b1ull, 0xaf864ac7c563f507ull, 0xadaee370756d2679ull, 0x659616bfd4be70a9ull, 0x1f65f73d97aabbefull, 0x00010b04870e0488ull }}, {{ 0xef9e1929ea1d4ce7ull, 0xdb3eebcdb5e7924aull, 0xc8d4e264964380c0ull, 0xf7dce37e4f7066a0ull, 0x39fba867ecab5759ull, 0x000a6e2d468c2d51ull }}, {{ 0x5c2cfba325250101ull, 0x907536091b0bb6edull, 0xd850d7eddea30788ull, 0xaea0e2ef1a640247ull, 0x43d4940f3eb16983ull, 0x00684dc4c179c52cull }}, {{ 0x99c1d45f73720a0eull, 0xa4941c5b0e752545ull, 0x73286f4ab25e4b55ull, 0xd248dd5707e816ceull, 0xa64dc89872ee1f24ull, 0x041309af8ec1b3baull }}, {{ 0x01924bba82746487ull, 0x6dc91b8e909374b8ull, 0x7f9458eaf7aef158ull, 0x36d8a5664f10e410ull, 0x7f09d5f47d4d3770ull, 0x28be60db9391054aull }}, {{ 0x0fb6f549188bed48ull, 0x49db1391a5c28f30ull, 0xfbcb792dacd56d74ull, 0x247675ff16a8e8a4ull, 0xf6625b8ce5042a62ull, 0x976fc893c3aa34e8ull }}, {{ 0x9d2594daf57744d5ull, 0xe28ec3b0799997e0ull, 0xd5f2bbc8c056468aull, 0x6ca09bf6e2991671ull, 0x9fd79380f229a7d5ull, 0xea5dd5c5a4a61119ull }}, {{ 0x2377d08d96a8b050ull, 0xd993a4e4bfffeec6ull, 0x5b7b55d7835ec16cull, 0x3e4617a4d9fae072ull, 0x3e6bc30975a08e56ull, 0x27aa59b86e7cab00ull }}, {{ 0x62ae2587e296e322ull, 0x7fc470ef7fff53bdull, 0x92d15a6b21b38e40ull, 0x6ebcec7083ccc477ull, 0x70359e5e98458f5eull, 0x8ca7813450deae02ull }}, {{ 0xdacd774ed9e4df50ull, 0xfdac695afff94565ull, 0xbc2d882f51038e84ull, 0x53613c6525ffacabull, 0x62182fb1f2b799b0ull, 0x7e8b0c0b28b2cc18ull }}, {{ 0x8c06a91482f0b921ull, 0xe8bc1d8dffbcb5faull, 0x59c751d92a239131ull, 0x41cc5bf37bfcbeb5ull, 0xd4f1dcf37b2c00e3ull, 0xf16e786f96fbf8f3ull }}, {{ 0x78429acd1d673b4aull, 0x1759278bfd5f1bc9ull, 0x81c9327ba563abf3ull, 0x91fb9782d7df7315ull, 0x5172a182cfb808e0ull, 0x6e50b45be5d7b986ull }}, {{ 0xb29a0c03260850e4ull, 0xe97b8b77e5b715deull, 0x11dbf8d475e4b77eull, 0xb3d3eb1c6eba7ed7ull, 0x2e7a4f1c1d3058c5ull, 0x4f270b96fa6d3f3full }}, {{ 0xfa04781f7c5328edull, 0x1ed372aef926dab2ull, 0xb297b84c9aef2af5ull, 0x06472f1c5348f466ull, 0xd0c7171923e377b9ull, 0x178673e5c8447877ull }}, {{ 0xc42cb13adb3f993full, 0x34427ad5bb848afdull, 0xf9ed32fe0d57ad93ull, 0x3ec7d71b40d98c02ull, 0x27c6e6fb66e2ad3aull, 0xeb4086f9d2acb4aeull }}, {{ 0xa9beec4c907bfc72ull, 0x0a98cc59532d6de9ull, 0xc343fdec856cc7c0ull, 0x73ce6710887f781dull, 0x8dc505d204dac446ull, 0x308545c23abf0ecdull }}, {{ 0xa1753afda4d7dc78ull, 0x69f7fb7d3fc64b20ull, 0xa0a7eb3d363fcd80ull, 0x861006a554fab129ull, 0x89b23a34308baac0ull, 0xe534b9964b769407ull }}, {{ 0x4e944de8706e9cadull, 0x23afd2e47dbeef46ull, 0x468f30641e7e0704ull, 0x3ca0427551caeba0ull, 0x60f64609e574ab85ull, 0xf40f3fdef2a1c84bull }}, {{ 0x11cb0b1464521ec0ull, 0x64de3cece97558bfull, 0xc197e3e930ec4629ull, 0x5e42989531ed3442ull, 0xc99ebc62f68eb334ull, 0x88987eb57a51d2f1ull }}, {{ 0xb1ee6ecbeb353380ull, 0xf0ae61411e957776ull, 0x8feee71be93abd9dull, 0xae99f5d3f3440a9bull, 0xe0335bdda193000bull, 0x55f4f316c7323d71ull }}, {{ 0xf35053f730140303ull, 0x66cfcc8b31d6aaa2ull, 0x9f5507171c4b682bull, 0xd2039a4780a86a13ull, 0xc20196a84fbe0074ull, 0x5b917ee3c7f66672ull }}, {{ 0x812347a7e0c81e20ull, 0x041dfd6ff262aa5dull, 0x395246e71af211b2ull, 0x342406cb069424c4ull, 0x940fe2931d6c0490ull, 0x93aef4e5cfa0007bull }}, {{ 0x0b60cc8ec7d12d41ull, 0x292be65f77daa7a7ull, 0x3d36c5070d74b0f4ull, 0x096843ee41c96faaull, 0xc89ed9bf26382da2ull, 0xc4d590fa1c4004d3ull }}, {{ 0x71c7fd93ce2bc489ull, 0x9bb6ffbaae8a8c86ull, 0x6423b246868ee989ull, 0x5e12a74e91de5ca6ull, 0xd63481777e31c854ull, 0xb057a9c51a803045ull }}, {{ 0x71cfe7c60db5ad5aull, 0x1525fd4ad1697d40ull, 0xe964f6c141951f60ull, 0xacba8911b2af9e7full, 0x5e0d0eaaedf1d34bull, 0xe36ca1b30901e2baull }}, {{ 0x721f0dbc8918c57full, 0xd37be4ec2e1ee484ull, 0x1df1a38c8fd339c0ull, 0xbf495ab0fadc30ffull, 0xac8292ad4b7240f4ull, 0xe23e50fe5a12db47ull }}, {{ 0x7536895d5af7b6f8ull, 0x42d6f139cd34ed2cull, 0x2b70637d9e404188ull, 0x78dd8ae9cc99e9f7ull, 0xbd19bac4f276898full, 0xd66f29ef84bc90ccull }}, {{ 0x94215da58dad25adull, 0x9c656c42041143bcull, 0xb263e2e82e828f52ull, 0xb8a76d21fe0323a7ull, 0x63014bb178a15f9aull, 0x6057a35b2f5da7ffull }}, {{ 0xc94da87788c378c4ull, 0x1bf63a9428aca55dull, 0xf7e6dd11d119993aull, 0x368a4353ec1f648cull, 0xde0cf4eeb64dbc0bull, 0xc36c618fd9a88ff9ull }}, {{ 0xdd0894ab57a2b7adull, 0x179e49c996be75a9ull, 0xaf04a2b22afffc45ull, 0x2166a1473939ed81ull, 0xac8191531f095870ull, 0xa23bcf9e80959fc2ull }}, {{ 0xa255ceb16c5b2cc2ull, 0xec2ee1dfe37098a2ull, 0xd62e5af5adffdab2ull, 0x4e024cc83c434710ull, 0xbd0fad3f365d7461ull, 0x56561c3105d83d9aull }}, {{ 0x575a12ee3b8fbf91ull, 0x39d4d2bee265f65aull, 0x5dcf8d98cbfe8afdull, 0x0c16ffd25aa0c6a8ull, 0x629cc4781fa68bcdull, 0x5f5d19ea3a72680bull }}, {{ 0x6984bd4e539d7ba6ull, 0x42503b74d7fb9f87ull, 0xaa1b87f7f7f16de4ull, 0x78e5fe378a47c293ull, 0xda1facb13c817602ull, 0xb9a3032648781071ull }}, {{ 0x1f2f650f4426d47full, 0x972252906fd43b4aull, 0xa5134fafaf6e4aeaull, 0xb8fbee2b66cd99c4ull, 0x853cbeec5d0e9c18ull, 0x405e1f7ed4b0a472ull }}, {{ 0x37d9f298a9844cf4ull, 0xe75739a45e4a50e5ull, 0x72c11cdcda4eed29ull, 0x39d74db2040801aeull, 0x345f753ba29218f7ull, 0x83ad3af44ee66c79ull }}, {{ 0x2e8379f69f2b0185ull, 0x0968406baee728f4ull, 0x7b8b20a0871543a3ull, 0x426908f4285010d0ull, 0x0bba945459b4f9a8ull, 0x24c44d8b15003cbcull }}, {{ 0xd122c3a237ae0f2full, 0x5e128434d5079989ull, 0xd36f464546d4a45eull, 0x981a59899320a824ull, 0x7549cb4b8111c092ull, 0x6fab076ed2025f58ull }}, {{ 0x2b5ba4562ccc97d2ull, 0xacb92a10524bff62ull, 0x4258beb4c44e6bafull, 0xf1077f5fbf469170ull, 0x94e1f0f30ab185b9ull, 0x5cae4a543417b974ull }}, {{ 0xb1946b5dbffdee33ull, 0xbf3ba4a336f7f9d5ull, 0x9777730fab1034dcull, 0x6a4af9bd78c1ae62ull, 0xd0d3697e6aef3943ull, 0x9ecee74a08ed3e8dull }}, {{ 0xefcc31a97feb4e00ull, 0x78546e6025afc258ull, 0xeaaa7e9caea2109full, 0x26edc166b790cfd9ull, 0x28421ef02d583ca2ull, 0x341508e45944718aull }}, {{ 0x5df9f09eff310bfeull, 0xb34c4fc178dd9779ull, 0x2aa8f21ed254a63aull, 0x85498e032ba81e83ull, 0x92953561c5725e55ull, 0x08d258eb7cac6f65ull }}, {{ 0xabc36635f7ea77e7ull, 0x00fb1d8eb8a7eabdull, 0xaa997534374e7e4bull, 0x34df8c1fb491311full, 0xb9d415d1b677af57ull, 0x58377932debc59f7ull }}, {{ 0xb5a1fe1baf28af0bull, 0x09cf2793368f2b68ull, 0xa9fe940a2910eeeeull, 0x10bb793d0dabeb3cull, 0x4248da3120acd968ull, 0x722abbfcb35b83adull }}, {{ 0x1853ed14d796d669ull, 0x62178bc02197b217ull, 0xa3f1c8659aa9554cull, 0xa752bc6288b7305eull, 0x96d885eb46c07e10ull, 0x75ab57df019324c4ull }}, {{ 0xf34742d06be4601dull, 0xd4eb75814fecf4e6ull, 0x6771d3f80a9d54fbull, 0x893b5bd95727e3b2ull, 0xe4753b30c384eca6ull, 0x98b16eb60fbf6fadull }}, {{ 0x80c89c2436ebc122ull, 0x5132970d1f419105ull, 0x0a7247b06a2551d6ull, 0x5c51967d678ee4f8ull, 0xec944fe7a3313e81ull, 0xf6ee531c9d7a5ccaull }}, {{ 0x07d6196a25358b58ull, 0x2bf9e683388faa37ull, 0x6876cce42575325full, 0x9b2fe0e60b94f1b0ull, 0x3dcb1f0c5fec710dull, 0xa54f3f1e26c79fedull }}, {{ 0x4e5cfe2574177172ull, 0xb7c30120359ca626ull, 0x14a400e97693f7b7ull, 0x0fdec8fc73d170e4ull, 0x69ef367bbf3c6a88ull, 0x7518772d83cc3f44ull }}, {{ 0x0fa1ed7688ea6e76ull, 0x2d9e0b42181e7d7full, 0xce68091ea1c7ad2dull, 0x9eb3d9dc862e68e8ull, 0x235820d5785c2950ull, 0x92f4a7c725fa78acull }}, {{ 0x9c5346a15928509bull, 0xc82c7094f130e6f6ull, 0x10105b3251ccc3c3ull, 0x3306829d3dd01918ull, 0x61714856b3999d26ull, 0xbd8e8dc77bc8b6b9ull }}, {{ 0x1b40c24d7b932609ull, 0xd1bc65d16be905a2ull, 0xa0a38ff731ffa5a5ull, 0xfe411a246a20faf0ull, 0xce6cd3630400237dull, 0x679189cad5d7233dull }}, {{ 0x10879706d3bf7c5cull, 0x315bfa2e371a3855ull, 0x46639fa7f3fc787aull, 0xee8b056c2549cd66ull, 0x104041de280162ebull, 0x0baf61ec5a67606aull }}, {{ 0xa54be644457adb97ull, 0xed97c5ce27063352ull, 0xbfe43c8f87dcb4c5ull, 0x516e363974e205feull, 0xa28292ad900ddd37ull, 0x74d9d33b8809c424ull }}, {{ 0x74f6feaab6cc93e2ull, 0x47edba0d863e013aull, 0x7eea5d9b4e9f0fbbull, 0x2e4e1e3e90d43bf3ull, 0x5919bac7a08aa429ull, 0x908240535061a96eull }}, {{ 0x91a5f2ab23fdc6d5ull, 0xcf4944873e6c0c48ull, 0xf527a81112369d50ull, 0xcf0d2e71a84a5782ull, 0x7b014bcc456a699bull, 0xa516834123d09e4full }}, {{ 0xb07b7aaf67e9c450ull, 0x18dcad4870387ad5ull, 0x938c90aab6222528ull, 0x1683d07092e76b1dull, 0xce0cf5fab6282016ull, 0x72e1208b66262f1aull }}, {{ 0xe4d2cada0f21ab1full, 0xf89ec4d46234cc58ull, 0xc37da6ab1d557390ull, 0xe1262465bd0a2f27ull, 0x0c819bcb1d9140dcull, 0x7ccb4571fd7dd70cull }}, {{ 0xf03bec849750af33ull, 0xb633b04bd60ffb78ull, 0xa2e882af255683a9ull, 0xcb7d6bf96265d78dull, 0x7d1015ef27ac88a0ull, 0xdff0b673e6ea6678ull }}, {{ 0x62573d2de926d7feull, 0x1e04e2f65c9fd2b9ull, 0x5d151ad7756124a1ull, 0xf2e637bdd7fa6b88ull, 0xe2a0db578cbd5647ull, 0xbf672087052800b4ull }}, {{ 0xd76863cb1b846fe9ull, 0x2c30dd9f9e3e3b3dull, 0xa2d30c6a95cb6e4bull, 0x7cfe2d6a6fc83353ull, 0xda48916b7f655ecfull, 0x7a07454633900710ull }}, {{ 0x6a13e5ef132c5f1aull, 0xb9e8a83c2e6e506aull, 0x5c3e7c29d9f24eefull, 0xe1edc6285dd20144ull, 0x86d5ae32f9f5b41aull, 0xc448b4be03a046a8ull }}, {{ 0x24c6fb56bfbbb707ull, 0x43169259d04f2428ull, 0x9a70d9a28377155dull, 0xd349bd93aa340cabull, 0x4458cdfdc399090cull, 0xaad70f6c2442c295ull }}, {{ 0x6fc5d1637d55264aull, 0x9ee1b78223176991ull, 0x0868805922a6d5a4ull, 0x40e167c4a6087eb4ull, 0xab780be9a3fa5a80ull, 0xac669a396a9b99d4ull }}, {{ 0x5dba2de2e5537ee4ull, 0x34d12b155eea1faeull, 0x5415037b5a84586eull, 0x88ce0dae7c54f308ull, 0xb2b0772067c78902ull, 0xbc02063e2a14024eull }}, {{ 0xa945cadcf542f4e3ull, 0x102baed5b5253ccfull, 0x48d222d1892b744eull, 0x580c88d0db517e53ull, 0xfae4a7440dcb5a19ull, 0x58143e6da4c81712ull }}, {{ 0x9cb9eca1949d90e1ull, 0xa1b4d4591374601cull, 0xd8355c2f5bb28b0cull, 0x707d5828912eef40ull, 0xccee88a889f184fdull, 0x70ca70486fd0e6bdull }}, {{ 0x1f433e4fce27a8caull, 0x51104b7ac28bc11eull, 0x721599d994f96e7eull, 0x64e57195abd55888ull, 0x01515695636f31e6ull, 0x67e862d45e29036aull }}, {{ 0x38a06f1e0d8c97e9ull, 0x2aa2f2cb99758b2dull, 0x74d8027fd1be50efull, 0xf0f66fd8b6557554ull, 0x0d2d61d5e257f2ffull, 0x0f13dc4bad9a2224ull }}, {{ 0x3644572c877def17ull, 0xaa5d7bf3fe976fc4ull, 0x907018fe316f2957ull, 0x69a05e771f56954cull, 0x83c5d25ad76f7dffull, 0x96c69af4c8055568ull }}, {{ 0x1eab67bd4aeb56e7ull, 0xa7a6d787f1ea5daaull, 0xa460f9edee579d6cull, 0x2043b0a73961d4fdull, 0x25ba378c6a5aebfaull, 0xe3c20d8fd0355615ull }}, {{ 0x32b20d64ed316504ull, 0x8c846b4f7327a8a5ull, 0x6bc9c34b4f6c263eull, 0x42a4e6883dd251e8ull, 0x79462b7c278d37c5ull, 0xe594879e22155cd3ull }}, {{ 0xfaf485f143edf22cull, 0x7d2c311a7f8c9673ull, 0x35e1a0f11a397e71ull, 0x9a7101526a373314ull, 0xbcbdb2d98b842db4ull, 0xf7cd4c2d54d5a042ull }}, {{ 0xcd8d3b6ca74b75b6ull, 0xe3b9eb08fb7de087ull, 0x1ad0496b063ef06eull, 0x086a0d382627fecaull, 0x5f68fc7f7329c90eull, 0xae04f9c55058429bull }}, {{ 0x0784523e88f29918ull, 0xe5432e59d2eac54eull, 0x0c22de2e3e756454ull, 0x542484317d8ff3e5ull, 0xba19dcfa7fa1da8cull, 0xcc31c1b523729a11ull }}, {{ 0x4b2b36715979faf3ull, 0xf49fcf823d2bb50cull, 0x795cadce7095eb50ull, 0x496d29eee79f86f2ull, 0x4502a1c8fc52897bull, 0xf9f19113627a04b1ull }}, {{ 0xefb0206d7ec3cd7full, 0x8e3e1b1663b5127aull, 0xbd9eca1065db3129ull, 0xde43a3550c3b4578ull, 0xb21a51d9db395ed0ull, 0xc36faac1d8c42eecull }}, {{ 0x5ce14446f3a606f7ull, 0x8e6d0edfe512b8cdull, 0x6833e4a3fa8feb9full, 0xaea461527a50b6b7ull, 0xf5073282903db428ull, 0xa25cab9277a9d53eull }}, {{ 0xa0ccaac5847c45a3ull, 0x904294bef2bb3805ull, 0x1206ee67c99f343bull, 0xd26bcd38c727232aull, 0x9247f919a2690996ull, 0x579eb3b8aca25475ull }}, {{ 0x47feabb72cdab85dull, 0xa299cf757b503038ull, 0xb445500de0380a53ull, 0x38360437c7875fa4ull, 0xb6cfbb00581a5fe4ull, 0x6c330536be574c97ull }}, {{ 0xcff2b527c08b339eull, 0x5a021a96d121e232ull, 0x0ab5208ac2306744ull, 0x321c2a2dcb49bc6full, 0x241d4e037107beeaull, 0x39fe34236f68fdedull }}, {{ 0x1f7b138d8570042cull, 0x841509e42b52d5fcull, 0x6b13456b95e408abull, 0xf519a5c9f0e15c56ull, 0x69250c226a4d7525ull, 0x43ee09625a19eb43ull }}, {{ 0x3acec387366029b7ull, 0x28d262e9b13c5bd9ull, 0x2ec0b633dae856b3ull, 0x930079e368cd9b60ull, 0x1b7279582706937bull, 0xa74c5dd7850330a2ull }}, {{ 0x4c13a3481fc1a129ull, 0x9837dd20ec5b967cull, 0xd3871e068d1362ffull, 0xbe04c2e2180811c1ull, 0x1278bd718641c2d3ull, 0x88fbaa6b321fe655ull }}, {{ 0xf8c460d13d904b9cull, 0xf22ea3493b93e0daull, 0x43472c4182c1ddfbull, 0x6c2f9cd4f050b192ull, 0xb8b7666f3e919c45ull, 0x59d4a82ff53eff52ull }}, {{ 0xb7abc82c67a2f417ull, 0x75d260dc53c6c88dull, 0xa0c7ba8f1b92abd7ull, 0x39dc20516326efb6ull, 0x372a005871b01ab6ull, 0x824e91df9475f93bull }}, {{ 0x2cb5d1bc0c5d88e5ull, 0x9a37c89b45c3d589ull, 0x47cd499713bab66aull, 0x4299432ddf855d22ull, 0x27a4037470e10b1eull, 0x1711b2bbcc9bbc50ull }}, {{ 0xbf1a31587ba758eeull, 0x062dd610b9a6575bull, 0xce04dfe6c54b202aull, 0x99fc9fcabb35a356ull, 0x8c68228c68ca6f2eull, 0xe6b0fb55fe155b21ull }}, {{ 0x7705ed74d4897949ull, 0x3dca5ca7407f6995ull, 0x0c30bf03b4ef41a4ull, 0x03de3deb50186164ull, 0x7c11597c17e857d2ull, 0x02e9d15becd58f4full }}, {{ 0xa63b46904d5ebcd6ull, 0x69e79e8884fa1fd6ull, 0x79e776251158906aull, 0x26ae6b3120f3cde8ull, 0xd8ad7ed8ef136e34ull, 0x1d222d974057991aull }}, {{ 0x7e50c1a305b3605eull, 0x230c315531c53e62ull, 0xc30a9d72ad75a428ull, 0x82d02feb49860b14ull, 0x76c6f47956c24e09ull, 0x2355c7e8836bfb0cull }}, {{ 0xef27905e3901c3a8ull, 0x5e79ed53f1b46fd8ull, 0x9e6a267ac6986991ull, 0x1c21df30df3c6ecfull, 0xa3c58cbd63970c5full, 0x6159cf152237ce7cull }}, {{ 0x578ba3ae3a11a48dull, 0xb0c34547710c5e79ull, 0x302580cbc1f41fadull, 0x1952b7e8b85c541cull, 0x65b77f65e3e67bb7ull, 0xcd8216d3562e10deull }}, {{ 0x6b7464ce44b06d81ull, 0xe7a0b4ca6a7bb0bdull, 0xe17707f593893cc8ull, 0xfd3b2f17339b4919ull, 0xf92af9fae700d526ull, 0x0714e4415dcca8afull }}, {{ 0x328bf00eaee4470eull, 0x0c470fe828d4e766ull, 0xcea64f97c35c5fd9ull, 0xe44fd6e80410db02ull, 0xbbadc3cd06085385ull, 0x46d0ea8da9fe96dfull }}, {{ 0xf9776092d4eac688ull, 0x7ac69f11985109fdull, 0x127f1beda19bbe7aull, 0xeb1e651028a88e1cull, 0x54c9a6023c53433aull, 0xc4292988a3f1e4bdull }}, {{ 0xbea9c5bc512bc14cull, 0xcbc236aff32a63ebull, 0xb8f71748501570c8ull, 0x2f2ff2a196958d18ull, 0x4fe07c165b40a04dull, 0xa99b9f566772ef65ull }}, {{ 0x72a1b95b2bb58cfbull, 0xf59622df7fa7e735ull, 0x39a6e8d320d667d7ull, 0xd7df7a4fe1d782f7ull, 0x1ec4d8df90864303ull, 0xa01439600a7d59f5ull }}, {{ 0x7a513d8fb51781ceull, 0x97dd5cbafc8f0816ull, 0x4085183f48600e6full, 0x6ebac71ed26b1da8ull, 0x33b078bba53e9e26ull, 0x40ca3dc068e58393ull }}, {{ 0xc72c679d12eb120full, 0xeea59f4ddd9650e0ull, 0x8532f278d3c0905bull, 0x534bc734382f2892ull, 0x04e4b75474722d80ull, 0x87e6698418f723c0ull }}, {{ 0xc7bc0c22bd2eb498ull, 0x5278390aa7df28c7ull, 0x33fd78b84585a397ull, 0x40f5c80a31d795b9ull, 0x30ef294c8c75c703ull, 0x4f001f28f9a76580ull }}, {{ 0xcd58795b63d30df4ull, 0x38b23a6a8eb797cdull, 0x07e6b732b73863e9ull, 0x8999d065f26bd93cull, 0xe9579cfd7c99c620ull, 0x16013799c089f701ull }}, {{ 0x0574bd91e63e8b85ull, 0x36f64829932bee0aull, 0x4f0327fb2833e71cull, 0x600223fb78367c58ull, 0x1d6c21e6de01bd45ull, 0xdc0c2c018563a613ull }}, {{ 0x368f67b2fe71732dull, 0x259ed19fbfb74c64ull, 0x161f8fcf9207071aull, 0xc01567d2b220db73ull, 0x26395304ac1164b5ull, 0x9879b80f35e47cbfull }}, {{ 0x219a0cfdf06e7fc4ull, 0x7834303d7d28fbeaull, 0xdd3b9e1bb4464705ull, 0x80d60e3af548927eull, 0x7e3d3e2eb8adef19ull, 0xf4c130981aecdf77ull }}, {{ 0x500481eb6450fdadull, 0xb209e266e399d725ull, 0xa4542d150abec636ull, 0x085c8e4d94d5b8f4ull, 0xee646dd336cb56ffull, 0x8f8be5f10d40baaaull }}, {{ 0x202d1331eb29e8c1ull, 0xf462d804e4026775ull, 0x6b49c2d26b73be22ull, 0x539d8f07d059398eull, 0x4fec4a4023f165f6ull, 0x9b76fb6a84874aadull }}, {{ 0x41c2bff32fa31787ull, 0x8bdc7030e8180a93ull, 0x30e19c3832856d5dull, 0x4427964e237c3f90ull, 0x1f3ae681676dfb9full, 0x12a5d2292d48eac5ull }}, {{ 0x919b7f7fdc5eeb48ull, 0x769c61e910f069c0ull, 0xe8d01a31f93645a7ull, 0xa98bdf0d62da7ba1ull, 0x384d010e0a4bd438ull, 0xba7a359bc4d92bb3ull }}, {{ 0xb012fafe9bb530ccull, 0xa21bd31aa9642185ull, 0x182105f3bc1eb88aull, 0x9f76b685dc88d453ull, 0x33020a8c66f64a36ull, 0x48c61815b07bb500ull }}, {{ 0xe0bdcdf21513e7fcull, 0x55163f0a9de94f38ull, 0xf14a3b855933356aull, 0x3aa3213a9d584b3eull, 0xfe14697c059ee622ull, 0xd7bcf0d8e4d51201ull }}, {{ 0xc76a0b74d2c70fd8ull, 0x52de766a2b1d1838ull, 0x6ce653357c001627ull, 0x4a5f4c4a2572f075ull, 0xeccc1ed83834fd56ull, 0x6d616878f052b413ull }}, {{ 0xca2472903bc69e6full, 0x3cb0a025af22f237ull, 0x40ff4016d800dd89ull, 0xe7b8fae5767d6496ull, 0x3ff934723211e55eull, 0x45ce14b9633b08c7ull }}, {{ 0xe56c79a255c23059ull, 0x5ee64178d75d762dull, 0x89f880e47008a75cull, 0x0d39ccf6a0e5eddeull, 0x7fbc0c75f4b2f5b5ull, 0xba0ccf3de04e57c8ull }}, {{ 0xf63cc0575995e37cull, 0xb4fe8eb869a69dcaull, 0x63b508ec6056899bull, 0x844201a248fb4ab1ull, 0xfd587c9b8efd9912ull, 0x4480186ac30f6dd4ull }}, {{ 0x9e5f83697fdae2d5ull, 0x11f19334208229edull, 0xe512593bc3616015ull, 0x2a941056d9d0eaedull, 0xe574de1395e7fab9ull, 0xad00f42b9e9a4a51ull }}, {{ 0x2fbb221efe8cdc51ull, 0xb36fc0094515a348ull, 0xf2b77c55a1cdc0d2ull, 0xa9c8a36482292d4aull, 0xf690acc3db0fcb3bull, 0xc20989b43206e732ull }}, {{ 0xdd4f5535f1809b2dull, 0x025d805cb2d860d1ull, 0x7b2adb585209883bull, 0xa1d661ed159bc4edull, 0xa1a6bfa68e9df054ull, 0x945f6109f44507fdull }}, {{ 0xa519541b6f060fc2ull, 0x17a7039efc73c832ull, 0xcfac9173345f524eull, 0x525fd342d815b146ull, 0x50837c81922b634eull, 0xcbb9ca638ab24fe8ull }}, {{ 0x72fd4912563c9d95ull, 0xec862435dc85d1faull, 0x1cbdae800bb9370cull, 0x37be409c70d8ecc4ull, 0x2522dd0fb5b1e10full, 0xf541e7e36af71f13ull }}, {{ 0x7de4dab75e5e27d6ull, 0x3d3d6a1a9d3a33c8ull, 0x1f68d100753c2681ull, 0x2d6e861c68793fa9ull, 0x735ca29d18f2ca98ull, 0x94930ee22da736bfull }}, {{ 0xeaf08b29afad8e5cull, 0x6466250a244605d4ull, 0x3a182a049459810cull, 0xc6513d1c14bc7c9bull, 0x819e5a22f97be9f1ull, 0xcdbe94d5c888237aull }}, {{ 0x2d656fa0dcc78f98ull, 0xebfd72656abc3a51ull, 0x44f1a42dcb7f0a7bull, 0xbf2c6318cf5cde10ull, 0x102f855dbed72371ull, 0x0971d059d55162c9ull }}, {{ 0xc5f65c489fcb9becull, 0x37e677f62b5a472bull, 0xb17069c9f2f668d7ull, 0x77bbdef819a0aca2ull, 0xa1db35a974676271ull, 0x5e722382552ddbdaull }}, {{ 0xbb9f9ad63df4173dull, 0x2f00af9db186c7b5ull, 0xee6421e37da01868ull, 0xad56b5b10046be5aull, 0x5290189e8c09d86eull, 0xb075631753ca968aull }}, {{ 0x543c0c5e6b88e85dull, 0xd606dc28ef43cd19ull, 0x4fe952e2e840f411ull, 0xc56318ea02c36f8dull, 0x39a0f63178627452ull, 0xe495dee945e9e167ull }}, {{ 0x4a587bb0335913a6ull, 0x5c44999958a602fdull, 0x1f1d3cdd128988b2ull, 0xb5def9241ba25b85ull, 0x40499deeb3d88b3bull, 0xeddab51cbb22ce08ull }}, {{ 0xe774d4e2017ac47full, 0x9aadfffd767c1de4ull, 0x372460a2b95f56f7ull, 0x1ab5bb6914579333ull, 0x82e02b5306757055ull, 0x4a8b131f4f5c0c52ull }}, {{ 0x0a9050d40ecbacf7ull, 0x0acbffe6a0d92af1ull, 0x276bc65b3db965acull, 0x0b19521acb6bc000ull, 0x1cc1b13e40966353ull, 0xe96ebf3919987b39ull }}, {{ 0x69a3284893f4c1a9ull, 0x6bf7ff02487bad6aull, 0x8a35bf90693df8b8ull, 0x6efd350bf2358001ull, 0x1f90ec6e85dfe13eull, 0x1e53783afff4d03bull }}, {{ 0x205f92d5c78f909full, 0x37aff616d4d4c628ull, 0x66197ba41c6bb734ull, 0x55e412777617000full, 0x3ba93c513abecc70ull, 0x2f42b24dff90224full }}, {{ 0x43bbbc59cb9ba634ull, 0x2cdf9ce4504fbd91ull, 0xfcfed4691c35280aull, 0x5ae8b8aa9ce60099ull, 0x549c5b2c4b73fc63ull, 0xd89af70bfba15718ull }}, {{ 0xa5555b81f4147e04ull, 0xc0bc20eb231d67acull, 0xe1f44c1b1a139065ull, 0x8d1736aa20fc0603ull, 0x4e1b8fbaf287dbe1ull, 0x760da677d44d66f3ull }}, {{ 0x7555931388ccec29ull, 0x8759492f5f260cbeull, 0xd38af90f04c3a3f9ull, 0x82e822a549d83c26ull, 0x0d139d4d794e96cfull, 0x9c8880ae4b060581ull }}, {{ 0x9557bec35801399bull, 0x497cdbd9b77c7f70ull, 0x436dba962fa467bfull, 0x1d115a74e2725984ull, 0x82c42506bd11e41bull, 0x1d5506ceee3c370aull }}, {{ 0xd56d73a1700c400cull, 0xdee096812adcfa65ull, 0xa24949dddc6c0d78ull, 0x22ad8890d8777f2aull, 0x1ba9724362b2e90full, 0x255244154e5a2669ull }}, {{ 0x5646844e607a807aull, 0xb4c5e10baca1c7faull, 0x56dce2aa9c3886b8ull, 0x5ac755a874aaf7aaull, 0x149e76a1dafd1a97ull, 0x7536a8d50f85801bull }}, {{ 0x5ec12b0fc4c904c2ull, 0x0fbaca74be51cfc7ull, 0x64a0daaa1a354337ull, 0x8bc958948eadaca7ull, 0xce30a2528de309e9ull, 0x942298529b37010eull }}, {{ 0xb38bae9dafda2f94ull, 0x9d4be88f6f321dc9ull, 0xee488aa50614a026ull, 0x75dd75cd92c8be89ull, 0x0de657398ade631full, 0xc959f33a10260a94ull }}, {{ 0x0374d228de85dbc4ull, 0x24f7159a57f529e1ull, 0x4ed56a723cce4182ull, 0x9aa69a07bbd77163ull, 0x8aff683f6cafdf3aull, 0xdd838044a17c69c8ull }}, {{ 0x22903598b13a95a8ull, 0x71a6d8076f93a2caull, 0x14562876600e8f15ull, 0x0a82044d566a6de1ull, 0x6dfa127a3edeb84aull, 0xa72302ae4edc21d5ull }}, {{ 0x59a217f6ec49d88full, 0x7084704a5bc45be5ull, 0xcb5d949fc09196d6ull, 0x69142b0560284acaull, 0x4bc4b8c674b332e4ull, 0x875e1acf14995256ull }}, {{ 0x8054efa53ae27596ull, 0x652c62e795ab96f5ull, 0xf1a7ce3d85afe460ull, 0x1ac9ae35c192ebebull, 0xf5af37c08efffcecull, 0x49ad0c16cdfd375eull }}, {{ 0x03515c744cd897dfull, 0xf3bbdd0bd8b3e597ull, 0x708e0e6738deebc3ull, 0x0be0ce198fbd3737ull, 0x98d82d8595ffe139ull, 0xe0c278e40be429b5ull }}, {{ 0x212d9c8b0075eeb2ull, 0x8556a2767706f7e6ull, 0x658c900838b535a7ull, 0x76c80cff9d64282aull, 0xf871c737dbfecc3aull, 0xc798b8e876e9a117ull }}, {{ 0x4bc81d6e049b52f3ull, 0x356258a0a645aefdull, 0xf77da0523714188bull, 0xa3d081fc25e991a7ull, 0xb471c82e97f3fa48ull, 0xcbf73914a5204aefull }}, {{ 0xf5d1264c2e113d83ull, 0x15d776467eb8d5e4ull, 0xaae8433626c8f570ull, 0x662513d97b1fb08full, 0x0c71d1d1ef87c6d6ull, 0xf7a83ace7342ed5dull }}, {{ 0x9a2b7ef9ccac671aull, 0xda6a9ec0f3385af1ull, 0xad12a01d83d99660ull, 0xfd72c67ecf3ce59cull, 0x7c7232335b4dc45full, 0xac924c10809d45a2ull }}, {{ 0x05b2f5c1febc0707ull, 0x882a338980338d70ull, 0xc2ba4127267fdfc8ull, 0xe67bc0f41860f81eull, 0xdc75f6019109abbfull, 0xbdb6f8a50624b858ull }}, {{ 0x38fd9993f3584647ull, 0x51a6035f02038660ull, 0x9b468b8780febdd5ull, 0x00d58988f3c9b133ull, 0x9c9b9c0faa60b57full, 0x6925b6723d6f3378ull }}, {{ 0x39e7ffc78172becaull, 0x307c21b614233fc2ull, 0x10c1734b09f36a55ull, 0x08575f5985e0ec04ull, 0x1e14189ca7c716f6ull, 0x1b792076665802b6ull }}, {{ 0x430ffdcb0e7b73dfull, 0xe4d9511cc9607d96ull, 0xa78e80ee63822753ull, 0x5369b97f3ac93828ull, 0x2cc8f61e8dc6e59cull, 0x12bb449fff701b1dull }}, {{ 0x9e9fe9ee90d286b9ull, 0xf07d2b1fddc4e7deull, 0x8b91094fe3158946ull, 0x42213ef84bdc3196ull, 0xbfd99d3189c4f81bull, 0xbb50ae3ffa610f23ull }}, {{ 0x323f2351a8394337ull, 0x64e3af3ea9b10eb2ull, 0x73aa5d1eded75cc5ull, 0x954c75b2f699efe1ull, 0x7e8023ef61b1b110ull, 0x5126ce7fc7ca9765ull }}, {{ 0xf6776130923ca025ull, 0xf0e4d872a0ea92f5ull, 0x84a7a334b4699fb5ull, 0xd4fc98fda2035eceull, 0xf1016759d0f0eaa5ull, 0x2b8410fdcde9e9f6ull }}, {{ 0xa0a9cbe5b65e4172ull, 0x68f0747a4929bd9bull, 0x2e8c600f0c203d1bull, 0x51ddf9e85421b411ull, 0x6a0e098229692a7aull, 0xb328a9ea0b2323a5ull }}, {{ 0x46a1f6f91fae8e75ull, 0x19648cc6dba16814ull, 0xd17bc09679426312ull, 0x32abc313495108abull, 0x248c5f159e1ba8c7ull, 0xff96a3246f5f6476ull }}, {{ 0xc253a5bb3cd1908eull, 0xfded7fc4944e10caull, 0x2ed585e0bc97deb4ull, 0xfab59ec0dd2a56b6ull, 0x6d7bb6d82d1497c7ull, 0xfbe25f6c59b9ec9dull }}, {{ 0x97447950602fa588ull, 0xeb46fdadcb0ca7ebull, 0xd4573ac75deeb311ull, 0xcb183388a3a7631dull, 0x46d52471c2cdedcfull, 0xd6d7ba3b81433e26ull }}, {{ 0xe8acbd23c1dc774full, 0x30c5e8c9ee7e8f33ull, 0x4b684bc9ab52feb3ull, 0xeef203566489df2aull, 0xc4536c719c0b4a1dull, 0x646d46530ca06d7eull }}, {{ 0x16bf6365929ca915ull, 0xe7bb17e350f19807ull, 0xf212f5e0b13df2ffull, 0x5574215fed62b7a6ull, 0xab423c701870e52bull, 0xec44bf3e7e4446f3ull }}, {{ 0xe379e1f7ba1e9aceull, 0x0d4eeee1296ff046ull, 0x74bd9ac6ec6b7dffull, 0x56894dbf45db2c85ull, 0xb0965c60f468f3b1ull, 0x3aaf7870eeaac584ull }}, {{ 0xe2c2d3ad45320c0aull, 0x851554cb9e5f62c4ull, 0x8f680bc53c32ebf6ull, 0x615d0978ba8fbd36ull, 0xe5df9bc98c1984edull, 0x4adab46952abb72eull }}, {{ 0xdb9c44c4b3f47864ull, 0x32d54ff42fb9dbb0ull, 0x9a1075b459fd37a1ull, 0xcda25eb7499d6421ull, 0xfabc15df78ff3145ull, 0xec8b0c1d3ab527d4ull }}, {{ 0x941aafaf078cb3e8ull, 0xfc551f89dd4294e8ull, 0x04a4990b83e42c4bull, 0x0857b328e025e950ull, 0xcb58dabab9f7ecbaull, 0x3d6e79244b138e51ull }}, {{ 0xc90adcd64b7f0714ull, 0xdb533b62a499d115ull, 0x2e6dfa7326e9baf7ull, 0x536cff98c17b1d20ull, 0xf1788b4b43af3f44ull, 0x6650bb6aeec38f31ull }}, {{ 0xda6ca05ef2f646cbull, 0x914051da6e022ad9ull, 0xd04bc87f85214daeull, 0x4241fbf78ecf2341ull, 0x6eb570f0a4d878abull, 0xff27522d53a397f3ull }}, {{ 0x883e43b57d9ec3ebull, 0xac8332884c15ac82ull, 0x22f5d4fb334d08d1ull, 0x9693d7ab94176092ull, 0x531669667074b6b0ull, 0xf78935c54463ef82ull }}, {{ 0x526ea516e833a732ull, 0xbd1ff952f8d8bd19ull, 0x5d9a51d001025830ull, 0xe1c66cb3c8e9c5b5ull, 0x3ee01e00648f22e5ull, 0xab5c19b4abe75b17ull }}, {{ 0x385272e5120487f5ull, 0x633fbd3db87762fdull, 0xa80732200a1771e7ull, 0xd1c03f05d921b915ull, 0x74c12c03ed975cfaull, 0xb199010eb7098ee8ull }}, {{ 0x33387cf2b42d4f95ull, 0xe07d646934a9dde4ull, 0x9047f54064ea7309ull, 0x3182763a7b513ad8ull, 0x8f8bb82747e9a1ccull, 0xeffa0a93265f9514ull }}, {{ 0x0034e17b09c51bd1ull, 0xc4e5ec1c0ea2aaeaull, 0xa2cf9483f1287e62ull, 0xef189e48d12c4c75ull, 0x9b753188cf2051f9ull, 0x5fc469bf7fbbd2cdull }}, {{ 0x0210cece61b3162dull, 0xb0fb3918925aad24ull, 0x5c1bcd276b94efdbull, 0x56f62ed82bbafc98ull, 0x1293ef58174333c3ull, 0xbdac217afd563c08ull }}, {{ 0x14a8140fd0feddc3ull, 0xe9d03af5b78ac368ull, 0x9916038a33d15e94ull, 0x659dd471b54dddf3ull, 0xb9c75970e8a005a1ull, 0x68b94ecde55e5850ull }}, {{ 0xce90c89e29f4a99full, 0x22224d992b6ba210ull, 0xfadc2366062db1d1ull, 0xf82a4c71150aab83ull, 0x41c97e691640384dull, 0x173d140af5af7327ull }}, {{ 0x11a7d62da38ea038ull, 0x555707fbb23454a8ull, 0xcc9961fc3dc8f22bull, 0xb1a6fc6ad26ab327ull, 0x91def01ade82330bull, 0xe862c86d98da7f88ull }}, {{ 0xb08e5dc86392422cull, 0x55664fd4f60b4e90ull, 0xfdfdd3da69d975b1ull, 0xf085dc2c382aff8dull, 0xb2b5610cb115fe74ull, 0x13dbd447f888fb55ull }}, {{ 0xe58fa9d3e3b695b8ull, 0x55ff1e519c7111a6ull, 0xebea4688227e98edull, 0x653a99ba31adfb8bull, 0xfb15ca7eeadbf091ull, 0xc6964acfb559d158ull }}, {{ 0xf79ca246e521d934ull, 0x5bf72f301c6ab084ull, 0x3726c15158f1f945ull, 0xf44a0145f0cbd377ull, 0xced9e8f52c9765adull, 0xc1deec1d15822d79ull }}, {{ 0xac1e56c4f3527c0dull, 0x97a7d7e11c2ae531ull, 0x27838d2d7973bcb5ull, 0x8ae40cbb67f642a8ull, 0x14831993bde9f8cbull, 0x92b53922d715c6c2ull }}, {{ 0xb92f63b18138d880ull, 0xec8e6ecb19acf3f0ull, 0x8b2383c6be855f17ull, 0x6ce87f520f9e9a91ull, 0xcd1effc56b23b7f3ull, 0xbb143b5c66d9c394ull }}, {{ 0x3bd9e4ef0c387503ull, 0x3d9053ef00c18767ull, 0x6f6325c37135b6efull, 0x4114f9349c3209afull, 0x0335fdb62f652f82ull, 0x4eca519c0481a3d0ull }}, {{ 0x5682f1567a34921bull, 0x67a34756078f4a08ull, 0x59df79a26c192558ull, 0x8ad1bc0e19f460daull, 0x201be91dd9f3db16ull, 0x13e730182d106620ull }}, {{ 0x611d6d60c60db512ull, 0x0c60c95c4b98e453ull, 0x82bac05838fb7574ull, 0x6c31588d038bc887ull, 0x41171b2a83868ee1ull, 0xc707e0f1c2a3fd41ull }}, {{ 0xcb2645c7bc8912b2ull, 0x7bc7dd9af3f8eb41ull, 0x1b4b837239d29688ull, 0x39ed75822375d54bull, 0x8ae70fa9234194ceull, 0xc64ec9719a67e48cull }}, {{ 0xef7eb9cd5d5abaf1ull, 0xd5cea80d87b93091ull, 0x10f322764239e154ull, 0x43469715629a54efull, 0x6d069c9b608fd00eull, 0xbf13de70080eed7dull }}, {{ 0x5af34205a58b4d6dull, 0x5a1290874d3be5b3ull, 0xa97f589e9642cd50ull, 0xa0c1e6d5da075156ull, 0x42421e11c59e208eull, 0x76c6b060509546e6ull }}, {{ 0x8d80943877710645ull, 0x84b9a5490456f901ull, 0x9ef97631de9c0523ull, 0x4793045a84492d62ull, 0x96952cb1b82d4592ull, 0xa3c2e3c325d4c4feull }}, {{ 0x8705ca34aa6a3eb2ull, 0x2f4074da2b65ba0full, 0x35be9df2b2183363ull, 0xcbbe2b892adbc5daull, 0xe1d3bef131c4b7b6ull, 0x659ce59f7a4fb1f1ull }}, {{ 0x4639e60ea82672f2ull, 0xd8849085b1f9449bull, 0x19722b7af4f201dfull, 0xf56db35bac95ba86ull, 0xd245756bf1af2d23ull, 0xf820f83ac71cf372ull }}, {{ 0xbe42fc9291807d75ull, 0x752da538f3bcae10ull, 0xfe75b2cd917412beull, 0x96490194bdd9493cull, 0x36b6963770d7c367ull, 0xb149b24bc721827cull }}, {{ 0x6e9dddb9af04e692ull, 0x93c87439855ecca7ull, 0xf098fc07ae88bb70ull, 0xdeda0fcf6a7cdc61ull, 0x2321de2a686da20bull, 0xece0f6f5c74f18daull }}, {{ 0x522aa940d63101b0ull, 0xc5d48a3f35b3fe8aull, 0x65f9d84cd1575265ull, 0xb4849e1a28e09bd3ull, 0x5f52ada814485476ull, 0x40c9a599c916f885ull }}, {{ 0x35aa9c885dea10dcull, 0xba4d66781907f167ull, 0xfbc273002d6937f9ull, 0x0d2e2d0598c61641ull, 0xb93ac890cad34ca3ull, 0x87e07801dae5b535ull }}, {{ 0x18aa1d53ab24a895ull, 0x470600b0fa4f6e08ull, 0xd5987e01c61c2fc1ull, 0x83cdc237f7bcde93ull, 0x3c4bd5a7ec40fe5eull, 0x4ec4b0128cf91419ull }}, {{ 0xf6a52544af6e95d1ull, 0xc63c06e9c71a4c50ull, 0x57f4ec11bd19dd8cull, 0x2609962fad60b1c6ull, 0x5af6588f3a89efb1ull, 0x13aee0b981bac8fcull }}, {{ 0xa27374aeda51da2full, 0xbe584521c706fb29ull, 0x6f9138b16302a77full, 0x7c5fdddcc5c6f1bfull, 0x8d9f759849635cebull, 0xc4d4c73f114bd9dbull }}, {{ 0x58828ed4873285d6ull, 0x6f72b351c645cfa0ull, 0x5bac36edde1a8afdull, 0xdbbeaa9fb9c5717aull, 0x883a97f2dde1a132ull, 0xb04fc876acf68293ull }}, {{ 0x7519944d47f93a5bull, 0x5a7b0131beba1c43ull, 0x94ba254aad096de6ull, 0x9572aa3d41b66ec7ull, 0x5249ef7caad04bfcull, 0xe31dd4a2c1a119c3ull }}, {{ 0x92ffcb04cfbc4792ull, 0x88ce0bf173451aa2ull, 0xcf4574eac25e4affull, 0xd67aa664912053cbull, 0x36e35adeac22f7ddull, 0xdf2a4e5b904b01a1ull }}, {{ 0xbdfdee301d5acbb8ull, 0x580c776e80b30a59ull, 0x18b6912b97aeedfbull, 0x60ca7fedab4345f6ull, 0x24e18cb2b95daeaaull, 0xb7a70f93a2ee104cull }}, {{ 0x6beb4de1258bf533ull, 0x707caa5106fe6781ull, 0xf721abb3ecd54bd1ull, 0xc7e8ff48b0a0bb9cull, 0x70cf7efb3da8d2a7ull, 0x2c869bc45d4ca2f9ull }}, {{ 0x37310acb77779401ull, 0x64dea72a45f00b0eull, 0xa750b5074054f62eull, 0xcf19f8d6e6475421ull, 0x681af5d068983a8dull, 0xbd4215aba4fe5dbeull }}, {{ 0x27ea6bf2aaabc807ull, 0xf0b287a6bb606e8eull, 0x8927124883519dcfull, 0x1703b864fec94950ull, 0x110d9a2415f2498aull, 0x6494d8b471efa970ull }}, {{ 0x8f28377aaab5d043ull, 0x66f94c8351c4518dull, 0x5b86b6d521302a1full, 0xe62533f1f3dcdd25ull, 0xaa880568db76df64ull, 0xedd0770c735c9e60ull }}, {{ 0x97922acaab1a229aull, 0x05bcfd2131ab2f87ull, 0x934324534be1a53aull, 0xfd74077386a0a375ull, 0xa950361892a4b9f0ull, 0x4a24a67c819e2fc6ull }}, {{ 0xebb5abeaaf055a04ull, 0x3961e34bf0afdb4bull, 0xc09f6b40f6d07444ull, 0xe6884a8342466297ull, 0x9d221cf5ba6f4369ull, 0xe56e80dd102dddc2ull }}, {{ 0x3518b72ad635842bull, 0x3dd2e0f766de90f7ull, 0x863a3089a4248aaaull, 0x0152e92096bfd9edull, 0x235521994858a223ull, 0xf65108a2a1caa99aull }}, {{ 0x12f727ac5e1729adull, 0x6a3cc9aa04b1a9a8ull, 0x3e45e560696d6aa6ull, 0x0d3d1b45e37e8347ull, 0x61534ffcd376555eull, 0x9f2a565a51eaa005ull }}, {{ 0xbda78cbbace7a0c5ull, 0x265fe0a42ef0a090ull, 0x6ebaf5c41e462a80ull, 0x846310bae2f120c8ull, 0xcd411fe0429f55acull, 0x37a75f87332a4035ull }}, {{ 0x688b7f54c10c47b1ull, 0x7fbec669d56645a7ull, 0x534d99a92ebda901ull, 0x2bdea74cdd6b47d4ull, 0x048b3ec29a3958bdull, 0x2c89bb47ffa6821aull }}, {{ 0x1572f94f8a7acce9ull, 0xfd73c02255feb88aull, 0x4108009bd3689a0eull, 0xb6b28900a630ce4bull, 0x2d70739a063d7763ull, 0xbd6150cffc811504ull }}, {{ 0xd67dbd1b68cc0115ull, 0xe68581575bf33564ull, 0x8a50061642160495ull, 0x22f95a067de80ef0ull, 0xc66484043e66a9e5ull, 0x65cd281fdd0ad229ull }}, {{ 0x60e9631217f80ad6ull, 0x01370d69978015f0ull, 0x67203cde94dc2ddbull, 0x5dbd8440eb109565ull, 0xbfed282a7002a2f3ull, 0xfa03913ea26c35a1ull }}, {{ 0xc91ddeb4efb06c5full, 0x0c26861feb00db63ull, 0x074260b1d099ca8eull, 0xa9672a892ea5d5f6ull, 0x7f4391a8601a5d81ull, 0xc423ac72583a1851ull }}, {{ 0xdb2ab3115ce43bb6ull, 0x79813d3f2e0891e5ull, 0x4897c6f22601e98cull, 0x9e07a95bd27a5b9cull, 0xf8a3b093c107a710ull, 0xa964bc777244f32eull }}, {{ 0x8faafeada0ea551eull, 0xbf0c6477cc55b2faull, 0xd5edc5757c131f7cull, 0x2c4c9d9638c7941aull, 0xb664e5c58a4c86a6ull, 0x9def5caa76b17fd5ull }}, {{ 0x9cadf2c84927532full, 0x767becadfb58fdc9ull, 0x5b49b696d8bf3adfull, 0xbafe27de37cbc90cull, 0x1ff0f9b766fd427dull, 0x2b599ea8a2eefe59ull }}, {{ 0x1ecb7bd2db893fd8ull, 0xa0d73ecbd179e9e0ull, 0x90e121e477784cbaull, 0x4ded8eae2df5da7bull, 0x3f69c12a05e498e9ull, 0xb18032965d55ef7bull }}, {{ 0x33f2d63c935c7e71ull, 0x486873f62ec322c1ull, 0xa8cb52ecaab2ff4aull, 0x0b4792cdcb9a88d3ull, 0x7a218ba43aedf91dull, 0xef01f9dfa55b5ad0ull }}, {{ 0x077c5e5dc19cf066ull, 0xd414879dd39f5b8cull, 0x97f13d3eaafdf8e6ull, 0x70cbbc09f4095844ull, 0xc54f746a4d4bbb22ull, 0x5613c2bc75918c24ull }}, {{ 0x4adbafa9902163ffull, 0x48cd4c2a44399378ull, 0xef6c6472adebb904ull, 0x67f55863885d72adull, 0xb51a8c2704f54f58ull, 0x5cc59b5c97af796full }}, {{ 0xec94dc9fa14de7f5ull, 0xd804f9a6aa3fc2b2ull, 0x5a3bec7acb353a2aull, 0x0f9573e353a67acbull, 0x1309798631951974ull, 0x9fb8119decdabe5dull }}, {{ 0x3dd09e3c4d0b0f96ull, 0x7031c082a67d9afdull, 0x86573ccbf01445acull, 0x9bd686e14480cbf1ull, 0xbe5ebf3defd2fe88ull, 0x3d30b02b408b6fa2ull }}, {{ 0x6a262e5b026e9bddull, 0x61f1851a80e80de4ull, 0x3f685ff760cab8bcull, 0x166144ccad07f76full, 0x6fb3786b5e3df156ull, 0x63e6e1b085725c5bull }}, {{ 0x257dcf8e185216a7ull, 0xd36f330909108aecull, 0x7a13bfa9c7eb375bull, 0xdfccaffec24faa58ull, 0x5d02b431ae6b6d5cull, 0xe704d0e536779b92ull }}, {{ 0x76ea1b8cf334e282ull, 0x4257fe5a5aa56d39ull, 0xc4c57ca1cf302996ull, 0xbdfedff3971ca774ull, 0xa21b09f0d03245a0ull, 0x063028f420ac13b7ull }}, {{ 0xa52513818010d916ull, 0x976fef878a76443eull, 0xafb6de5217e19fdeull, 0x6bf4bf83e71e8a8full, 0x550e636821f6b847ull, 0x3de1998946b8c52cull }}, {{ 0x7372c30f00a87adfull, 0xea5f5b4b689eaa72ull, 0xdd24af34eed03eb1ull, 0x378f7b270731699cull, 0x528fe21153a332caull, 0x6acfff5cc337b3bbull }}, {{ 0x827b9e960694ccb7ull, 0x27b990f21632a878ull, 0xa36ed811542272f3ull, 0x2b9acf8647ee2020ull, 0x399ed4ad445ffbe6ull, 0x2c1ff99fa02d0551ull }}, {{ 0x18d431dc41cfff28ull, 0x8d3fa974ddfa94b5ull, 0x625470ad49587d7full, 0xb40c1b3ecf4d4146ull, 0x40344ec4abbfd6fdull, 0xb93fc03c41c2352cull }}, {{ 0xf849f29a921ff793ull, 0x847c9e90abc9cf12ull, 0xd74c66c4dd74e6fbull, 0x0879107419048cbfull, 0x820b13aeb57e65e9ull, 0x3c7d825a919613baull }}, {{ 0xb2e37a09b53fabbdull, 0x2cde31a6b5e216bdull, 0x68fc03b0a69105d3ull, 0x54baa488fa2d7f7eull, 0x146ec4d316effb1aull, 0x5ce71789afdcc549ull }}, {{ 0xfce2c461147cb564ull, 0xc0adf0831ad4e368ull, 0x19d824e681aa3a3full, 0x4f4a6d59c5c6faf0ull, 0xcc53b03ee55fcf07ull, 0xa106eb60de9fb4daull }}, {{ 0xe0dbabcaccdf15e4ull, 0x86cb651f0c50e219ull, 0x0271710110a6467dull, 0x18e84581b9c5cd61ull, 0xfb44e274f5be1649ull, 0x4a4531c8b23d108bull }}, {{ 0xc894b5ec00b6dae6ull, 0x43f1f3367b28d502ull, 0x186e6a0aa67ec0e7ull, 0xf912b71141ba05caull, 0xd0b0d891996cdedaull, 0xe6b3f1d6f662a577ull }}, {{ 0xd5cf1b3807248cfbull, 0xa7738020cf98521bull, 0xf450246a80f38908ull, 0xbabb26ac914439e4ull, 0x26e875affe40b48dull, 0x030772659fda76aeull }}, {{ 0x5a171030476d81d0ull, 0x8a8301481bf33516ull, 0x8b216c2909835a56ull, 0x4b4f82bdacaa42f1ull, 0x851498dfee870d89ull, 0x1e4a77f83e88a2cdull }}, {{ 0x84e6a1e2ca471222ull, 0x691e0cd1178012dfull, 0x6f4e399a5f218761ull, 0xf11b1b68bea69d6full, 0x32cdf8bf5146875cull, 0x2ee8afb271565c07ull }}, {{ 0x310252dbe6c6b555ull, 0x1b2c802aeb00bcbbull, 0x590e4007b74f49ceull, 0x6b0f12177282265aull, 0xfc0bb7792cc149a1ull, 0xd516dcf86d5f9847ull }}, {{ 0xea173c9703c31550ull, 0x0fbd01ad2e075f4full, 0x7a8e804d2918e20dull, 0x2e96b4ea79157f87ull, 0xd8752abbbf8ce04eull, 0x52e4a1b445bbf2cfull }}, {{ 0x24e85de6259ed51cull, 0x9d6210c3cc49b91full, 0xc99103039af8d482ull, 0xd1e31128bad6fb4aull, 0x7493ab557b80c30dull, 0x3cee510ab9577c1eull }}, {{ 0x7113aafd78345317ull, 0x25d4a7a5fae13b37ull, 0xdfaa1e240db84d1aull, 0x32deab974c65d0ebull, 0x8dc4b156d3079e8aull, 0x614f2a6b3d6ad930ull }}, {{ 0x6ac4ade6b20b3ee3ull, 0x7a4e8c7bcccc502aull, 0xbca52d6889330305ull, 0xfcb2b3e8fbfa2936ull, 0x89aeed643e4c3165ull, 0xcd17a830662c7be5ull }}, {{ 0x2baecb02f47074dbull, 0xc7117cd5fffb21a8ull, 0x5e73c6155bfe1e36ull, 0xdefb0719d7c59c23ull, 0x60d545ea6ef9edfbull, 0x02ec91e3fdbcd6f7ull }}, {{ 0xb4d3ee1d8c64908bull, 0xc6aee05bffcf5091ull, 0xb085bcd597ed2e23ull, 0xb5ce47026db81961ull, 0xc854bb2855c34bd6ull, 0x1d3db2e7e96065a9ull }}, {{ 0x10474d277beda56full, 0xc2d4c397fe1925b1ull, 0xe5396057ef43cd65ull, 0x1a0ec6184930fdd0ull, 0xd34f4f9359a0f663ull, 0x2468fd0f1dc3f8a1ull }}, {{ 0xa2c9038ad7487659ull, 0x9c4fa3efecfb78eaull, 0xf43dc36f58a605f9ull, 0x0493bcf2dbe9ea28ull, 0x41191bc180499fdfull, 0x6c19e29729a7b652ull }}, {{ 0x5bda236c68d49f7bull, 0x1b1c675f41d2b92aull, 0x8a69a259767c3bc0ull, 0x2dc5617c97232599ull, 0x8afb158f02e03eb6ull, 0x3902d9e7a08d1f36ull }}, {{ 0x9685623c184e3ad3ull, 0x0f1c09b8923b3ba7ull, 0x6820577ea0da5581ull, 0xc9b5cedde75f77ffull, 0x6dced7961cc2731dull, 0x3a1c830c45833821ull }}, {{ 0xe135d658f30e4c3dull, 0x97186135b650548bull, 0x11436af24887570aull, 0xe11a14ab09baaffaull, 0x4a146bdd1f987f29ull, 0x451d1e7ab720314eull }}, {{ 0xcc1a5f797e8efa60ull, 0xe6f3cc191f234d76ull, 0xaca22d76d5496669ull, 0xcb04ceae614adfc4ull, 0xe4cc36a33bf4f7a2ull, 0xb32330cb2741ed0eull }}, {{ 0xf907babef195c7c1ull, 0x0585f8fb376106a3ull, 0xbe55c6a454de0023ull, 0xee3012cfccecbdaeull, 0xeffa22605791ac5bull, 0xff5fe7ef88934294ull }}, {{ 0xba4d4b756fd9cd89ull, 0x373bb9d029ca4267ull, 0x6f59c26b50ac015eull, 0x4de0bc1e013f68d3ull, 0x5fc557c36bb0bb97ull, 0xf9bf0f5b55c099d1ull }}, {{ 0x4704f2965e82075bull, 0x28554221a1e6980dull, 0x5981983126b80daeull, 0x0ac7592c0c7a1842ull, 0xbdb56da234e753e9ull, 0xc17699915986022dull }}, {{ 0xc63179dfb1144991ull, 0x935495505301f084ull, 0x7f0ff1eb833088cdull, 0x6bc97bb87cc4f297ull, 0x691648561109471aull, 0x8ea1ffad7f3c15c9ull }}, {{ 0xbdeec2bceacadfa9ull, 0xc14dd5233e13652full, 0xf69f73331fe55807ull, 0x35ded534dfb179eaull, 0x1aded35caa5cc708ull, 0x9253fcc6f858d9deull }}, {{ 0x6b539b612becbc9aull, 0x8d0a53606cc1f3ddull, 0xa23a7fff3ef5704dull, 0x1ab45410bceec32dull, 0x0cb4419ea79fc652ull, 0xb747dfc5b37882adull }}, {{ 0x314411cbb73f5e03ull, 0x826741c43f9386a6ull, 0x5648fff875966307ull, 0x0b0b48a761539fc8ull, 0x7f0a90328c3dbf35ull, 0x28cebdb902b51ac2ull }}, {{ 0xeca8b1f52879ac1aull, 0x180891aa7bc3427dull, 0x5ed9ffb497dfde4bull, 0x6e70d689cd443dd3ull, 0xf669a1f97a697812ull, 0x9813693a1b130b98ull }}, {{ 0x3e96f39394c0b904ull, 0xf055b0a8d5a098ebull, 0xb483fd0deebeaeeeull, 0x5068616204aa6a41ull, 0xa02053bec81eb0b8ull, 0xf0c21c450ebe73f9ull }}, {{ 0x71e583c3cf873a2bull, 0x6358e6985845f930ull, 0x0d27e28b5372d555ull, 0x2413cdd42ea82691ull, 0x41434573d132e733ull, 0x67951ab2937087c0ull }}, {{ 0x72f725a61b4845b1ull, 0xe17901f372bbbbe4ull, 0x838ed971427c5555ull, 0x68c60a49d29181aaull, 0x8ca0b6862bfd07ffull, 0x0bd30af9c2654d82ull }}, {{ 0x7da7787d10d2b8e6ull, 0xceba13827b5556ecull, 0x23947e6c98db555aull, 0x17bc66e239af10a9ull, 0x7e47213db7e24ffaull, 0x763e6dc197f50719ull }}, {{ 0xe88ab4e2a83b38fcull, 0x1344c318d155653cull, 0x63ccf03df891558cull, 0xed5c04d640d6a69bull, 0xeec74c692ed71fc4ull, 0x9e70498fef9246feull }}, {{ 0x156b10da925039dbull, 0xc0af9ef82d55f461ull, 0xe601626bb5ad5778ull, 0x4598305e88628211ull, 0x53c8fc1bd4673db1ull, 0x3062df9f5bb6c5f5ull }}, {{ 0xd62ea889b722428dull, 0x86dc35b1c55b8bcaull, 0xfc0dd83518c56ab7ull, 0xb7f1e3b153d914b2ull, 0x45d9d9164c0868ecull, 0xe3dcbc399523bb95ull }}, {{ 0x5dd2956127569986ull, 0x449a18f1b59375ecull, 0xd88a7212f7b62b2bull, 0x2f72e4ed467acefdull, 0xba827adef854193full, 0xe69f5a3fd36553d4ull }}, {{ 0xaa39d5cb8961ff3cull, 0xae04f97117c29b3bull, 0x756874bdad1dafb0ull, 0xda7cf144c0cc15eaull, 0x4918ccb5b348fc77ull, 0x0239867e41f5464full }}, {{ 0xa64259f35dd3f85bull, 0xcc31be6aed9a1054ull, 0x96148f68c328dce6ull, 0x88e16caf87f8db28ull, 0xdaf7ff1900d9dcaeull, 0x163f40ee9394bf18ull }}, {{ 0x7e978381aa47b391ull, 0xf9f1702d4804a34eull, 0xdccd9a179f98a103ull, 0x58ce3edb4fb88f95ull, 0x8daff6fa08829ed1ull, 0xde788951c3cf76f8ull }}, {{ 0xf1eb2310a6cd03a9ull, 0xc36e61c4d02e6110ull, 0xa00804ec3bf64a27ull, 0x780e74911d359bdaull, 0x88dfa5c4551a342dull, 0xb0b55d31a61aa5b5ull }}, {{ 0x732f5ea68402249bull, 0xa24fd1b021cfcaa9ull, 0x4050313a579ee58dull, 0xb0908dab2418168aull, 0x58bc79ab530609c6ull, 0xe715a3f07d0a7917ull }}, {{ 0x7fd9b28128156e09ull, 0x571e30e1521dea9eull, 0x8321ec476c34f788ull, 0xe5a588af68f0e166ull, 0x775cc0b13e3c61c2ull, 0x06d86764e268bae9ull }}, {{ 0xfe80f90b90d64c5full, 0x672de8cd352b2a30ull, 0x1f533aca3a11ab53ull, 0xf87756da1968ce01ull, 0xa99f86ec6e5bd19cull, 0x447409f0d8174d1eull }}, {{ 0xf109ba73a85efbb2ull, 0x07cb180413afa5e9ull, 0x39404be644b0b142ull, 0xb4a96484fe180c0bull, 0xa03b453c4f963021ull, 0xac88636870e90332ull }}, {{ 0x6a61488493b5d4f3ull, 0x4deef028c4dc7b23ull, 0x3c82f6feaee6ec94ull, 0x0e9ded31ecf07870ull, 0x4250b45b1bdde151ull, 0xbd53e214691a1ffaull }}, {{ 0x27ccd52dc51a517eull, 0x0b556197b09ccf62ull, 0x5d1da5f2d5053dcbull, 0x922b43f34164b462ull, 0x97270b8f16aacd2aull, 0x6546d4cc1b053fc6ull }}, {{ 0x8e0053c9b3072eefull, 0x7155cfece62019d5ull, 0xa3287b7c523469eeull, 0xb5b0a7808def0bd7ull, 0xe7867396e2ac03a9ull, 0xf4c44ff90e347dc1ull }}, {{ 0x8c0345e0fe47d558ull, 0x6d5a1f40fd410257ull, 0x5f94d2db360c2350ull, 0x18e68b058b56766cull, 0x0b4083e4dab824a1ull, 0x8fab1fba8e0ce993ull }}, {{ 0x7820bac9eece5572ull, 0x45853889e48a176bull, 0xbbd03c901c796124ull, 0xf9016e377160a03bull, 0x708526f08b316e4aull, 0x9caf3d498c811fbeull }}, {{ 0xb1474be3540f5678ull, 0xb7343562ed64ea32ull, 0x56225da11cbdcb6aull, 0xba0e4e2a6dc64255ull, 0x653385656fee4eedull, 0x1ed864df7d0b3d70ull }}, {{ 0xecc8f6e1489960b1ull, 0x280a15dd45f125faull, 0x5d57a84b1f69f22bull, 0x448f0da849be9755ull, 0xf40335f65f4f1549ull, 0x3473f0bae2706663ull }}, {{ 0x3fd9a4ccd5fdc6e9ull, 0x9064daa4bb6b7bcdull, 0xa56c92ef3a2375afull, 0xad968892e171e955ull, 0x88201b9fb916d4dcull, 0x0c87674cd863ffe7ull }}, {{ 0x7e8070005be9c51eull, 0xa3f08a6f5232d604ull, 0x763dbd58456298dbull, 0xc7e155bcce731d58ull, 0x5141143d3ae4509eull, 0x7d4a090073e7ff0bull }}, {{ 0xf10460039721b32bull, 0x6765685935fc5c2cull, 0x9e696572b5d9f894ull, 0xcecd5960107f2574ull, 0x2c8aca644ceb2633ull, 0xe4e45a04870ff671ull }}, {{ 0x6a2bc023e750ffaeull, 0x09f6137c1bdb99c1ull, 0x301df67b1a83b5ccull, 0x14057dc0a4f7768eull, 0xbd6be7eb012f7e06ull, 0xf0eb842d469fa06bull }}, {{ 0x25b581670929fcd0ull, 0x639cc2d91694018eull, 0xe12ba0cf092519f8ull, 0xc836e98671aaa18dull, 0x66370f2e0bdaec3cull, 0x693329c4c23c4435ull }}, {{ 0x79170e065ba3e01cull, 0xe41f9c7ae1c80f8dull, 0xcbb448165b7303b3ull, 0xd2251f4070aa4f8aull, 0xfe2697cc768d3a5full, 0x1bffa1af965aaa15ull }}, {{ 0xbae68c3f9466c11cull, 0xe93c1cccd1d09b86ull, 0xf50ad0df927e2506ull, 0x3573388466a71b6bull, 0xed81edfca18447beull, 0x17fc50dbdf8aa4dbull }}, {{ 0x4d017a7bcc038b1aull, 0x1c59200032261343ull, 0x926c28bbb8ed7245ull, 0x1680352c02871237ull, 0x47134bde4f2acd6eull, 0xefdb2896bb6a7097ull }}, {{ 0x020ec8d5f8236f04ull, 0x1b7b4001f57cc0a1ull, 0xb8399755394676b3ull, 0xe10213b81946b62bull, 0xc6c0f6af17ac064cull, 0x5e8f95e3522865e8ull }}, {{ 0x1493d85bb1625625ull, 0x12d0801396df864aull, 0x323fe9543cc0a2ffull, 0xca14c530fcc31db5ull, 0xc389a2d6ecb83f00ull, 0xb19bdae13593fb17ull }}, {{ 0xcdc67394edd75d6eull, 0xbc2500c3e4bb3ee4ull, 0xf67f1d4a5f865df6ull, 0xe4cfb3e9df9f2913ull, 0xa3605c653f327607ull, 0xf0168ccc17c7ceedull }}, {{ 0x09c083d14a69a648ull, 0x597207a6ef5074f0ull, 0xa0f724e7bb3faba3ull, 0xf01d0722bc379ac7ull, 0x61c39bf477f89c4eull, 0x60e17ff8edce1548ull }}, {{ 0x6185262ce8207ed5ull, 0x7e744c8559249160ull, 0x49a7710d507cb461ull, 0x6122475b5a2c0bccull, 0xd1a4178cafb61b15ull, 0xc8ceffb94a0cd4d3ull }}, {{ 0xcf337dc11144f450ull, 0xf08afd357b6dadc3ull, 0xe08a6a8524df0bceull, 0xcb56c99185b875faull, 0x3068eb7edd1d0ed5ull, 0xd815fd3ce4805046ull }}, {{ 0x1802e98aacb18b1full, 0x656de416d248c9a6ull, 0xc568293370b67615ull, 0xf163dfaf39349bccull, 0xe41932f4a3229459ull, 0x70dbe460ed0322bdull }}, {{ 0xf01d1f6abeef6f3aull, 0xf64ae8e436d7e07cull, 0xb6119c0267209cd5ull, 0x6de6bcd83c0e15ffull, 0xe8fbfd8e5f59cb83ull, 0x6896ebc9421f5b6aull }}, {{ 0x61233a2b755a5840ull, 0x9eed18ea246ec4e1ull, 0x1cb018180746205bull, 0x4b036072588cdbfdull, 0x19d7e78fb981f322ull, 0x15e535dc9539922dull }}, {{ 0xcb6045b29587727bull, 0x3542f9256c53b0cdull, 0x1ee0f0f048bd4394ull, 0xee21c477758097e3ull, 0x026f0b9d3f137f56ull, 0xdaf41a9dd43fb5c3ull }}, {{ 0xf1c2b8f9d74a78d1ull, 0x149dbb763b44e809ull, 0x34c96962d764a3caull, 0x4d51acaa9705eedfull, 0x1856742476c2f965ull, 0x8d890a2a4a7d199eull }}, {{ 0x719b39c268e8b82cull, 0xce29529e50b11063ull, 0x0fde1ddc69ee65e4ull, 0x0530bea9e63b54b8ull, 0xf360896ca39dbdf5ull, 0x875a65a6e8e3002cull }}, {{ 0x70104198191731b3ull, 0x0d9d3a2f26eaa3e2ull, 0x9ead2a9c234ffaf0ull, 0x33e772a2fe514f30ull, 0x81c55e3e64296b92ull, 0x4987f88518de01c1ull }}, {{ 0x60a28ff0fae7f100ull, 0x882445d7852a66d8ull, 0x32c3aa19611fcd60ull, 0x070a7a5def2d17e6ull, 0x11b5ae6fe99e33b6ull, 0xdf4fb532f8ac118full }}, {{ 0xc6599f69cd0f69feull, 0x516aba6b33a80473ull, 0xfba4a4fdcb3e05c5ull, 0x4668c7ab57c2eefdull, 0xb118d05f202e051cull, 0xb91d13fdb6b8af96ull }}, {{ 0xbf803a22029a23e9ull, 0x2e2b483004902c85ull, 0xd46e71e9f06c39b5ull, 0xc017ccb16d9d55ebull, 0xeaf823b741cc331aull, 0x3b22c7e92336dbe2ull }}, {{ 0x7b0245541a056718ull, 0xcdb0d1e02da1bd39ull, 0x4c507323643a4113ull, 0x80edfeee48255b36ull, 0x2db1652891f9ff0bull, 0x4f5bcf1b602496ddull }}, {{ 0xce16b549043606eeull, 0x08e832c1c851643eull, 0xfb247f61ea468ac6ull, 0x094bf54ed175901eull, 0xc8edf395b3c3f673ull, 0x19961711c16de4a3ull }}, {{ 0x0ce314da2a1c454dull, 0x5911fb91d32dea74ull, 0xcf6cf9d326c16bbcull, 0x5cf795142e97a135ull, 0xd94b83d905a7a07eull, 0xffdce6b18e4aee65ull }}, {{ 0x80ded085a51ab505ull, 0x7ab3d3b23fcb2888ull, 0x1a41c23f838e355bull, 0xa1abd2c9d1ec4c1aull, 0x7cf3267a388c44efull, 0xfea102ef8eed4ffaull }}, {{ 0x08b42538730b1233ull, 0xcb0644f67def9555ull, 0x0691967b238e1592ull, 0x50b63be2333af905ull, 0xe17f80c6357ab15cull, 0xf24a1d5b95451fc8ull }}, {{ 0x570974347e6eb601ull, 0xee3eb1a0eb5bd552ull, 0x41afe0cf638cd7bbull, 0x271e56d6004dba32ull, 0xcefb07be16caed9bull, 0x76e52593d4b33dd8ull }}, {{ 0x665e8a0cf0531c0eull, 0x4e72f04931965537ull, 0x90dec819e3806d57ull, 0x872f645c030945f6ull, 0x15ce4d6ce3ed480full, 0xa4f377c64f006a78ull }}, {{ 0xffb16481633f1891ull, 0x107d62dbefdf5429ull, 0xa8b3d102e3044569ull, 0x47d9eb981e5cbba1ull, 0xda0f0640e744d09bull, 0x7182adbf160428b0ull }}, {{ 0xfceded0de076f5aaull, 0xa4e5dc975eb949a3ull, 0x97062a1cde2ab61aull, 0xce8333f12f9f5450ull, 0x84963e8908b02610ull, 0x6f1ac976dc2996e8ull }}, {{ 0xe14b428ac4a598a3ull, 0x70fa9de9b33ce067ull, 0xe63da520adab1d0aull, 0x1120076bdc394b25ull, 0x2dde715a56e17ca8ull, 0x570bdea4999fe515ull }}, {{ 0xccf0996bae77f65bull, 0x69ca2b210060c40eull, 0xfe687346c8af2268ull, 0xab404a369a3cef7aull, 0xcab06d8764cede90ull, 0x6676b26e003ef2d3ull }}, {{ 0x0165fe34d0af9f8bull, 0x21e5af4a03c7a894ull, 0xf01480c3d6d75814ull, 0xb082e62206615acdull, 0xeae44749f014b1a6ull, 0x00a2f84c02757c45ull }}, {{ 0x0dfbee1026dc3b6full, 0x52f8d8e425cc95c8ull, 0x60cd07a6646970c9ull, 0xe51cfd543fcd8c0bull, 0x2ceac8e360cef082ull, 0x065db2f81896dabbull }}, {{ 0x8bd74ca1849a5255ull, 0x3db878e979fdd9d0ull, 0xc8024c7fec1e67ddull, 0xf321e54a7e077871ull, 0xc12bd8e1c815651cull, 0x3fa8fdb0f5e48b4full }}, {{ 0x7668fe4f2e07374full, 0x6934b91ec3ea8225ull, 0xd016fcff39300ea4ull, 0x7f52f4e8ec4ab471ull, 0x8bb678d1d0d5f321ull, 0x7c99e8e99aed711dull }}, {{ 0xa019ef17cc482914ull, 0x1c0f3b33a7291576ull, 0x20e5e1f83be0926cull, 0xf93d91193aeb0c72ull, 0x7520b832285b7f4eull, 0xde0319200d466b27ull }}, {{ 0x410356edfad19ac4ull, 0x18985004879ad6a2ull, 0x48fad3b256c5b839ull, 0xbc67aafc4d2e7c75ull, 0x934731f59392f915ull, 0xac1efb4084c02f8aull }}, {{ 0x8a21654bcc300ba7ull, 0xf5f3202d4c0c6256ull, 0xd9cc44f763b9323aull, 0x5c0caddb03d0dc94ull, 0xc0c7f397c3bdbad9ull, 0xb935d0852f81db69ull }}, {{ 0x654df4f5f9e07487ull, 0x9b7f41c4f87bd761ull, 0x81fab1a9e53bf64dull, 0x987eca8e26289dd0ull, 0x87cf83eda5694c7dull, 0x3c1a2533db129221ull }}, {{ 0xf50b919bc2c48d4aull, 0x12f891b1b4d669cdull, 0x13caf0a2f4579f08ull, 0xf4f3e98d7d962a25ull, 0x4e1b2748761cfce7ull, 0x590574068eb9b54full }}, {{ 0x9273b0159bad84e7ull, 0xbdb5b0f11060220bull, 0xc5ed665d8b6c3650ull, 0x91871f86e7dda572ull, 0x0d0f88d49d21e10full, 0x7a36884193411519ull }}, {{ 0xb884e0d814c7310aull, 0x6918e96aa3c15473ull, 0xbb45ffa7723a1f27ull, 0xaf473b450ea8767bull, 0x829b584e2352ca9bull, 0xc621528fc08ad2faull }}, {{ 0x3530c870cfc7ea66ull, 0x1af91e2a658d4c85ull, 0x50bbfc8a7645378aull, 0xd8c850b29294a0d5ull, 0x1a11730d613bea14ull, 0xbd4d399d856c3dc9ull }}, {{ 0x13e7d4681dcf2801ull, 0x0dbb2da7f784fd34ull, 0x2757dd689eb42b65ull, 0x77d326f9b9ce4855ull, 0x04ae7e85cc5724d0ull, 0x65044027363a69dbull }}, {{ 0xc70e4c112a179007ull, 0x894fc88fab31e408ull, 0x896ea6163309b1f2ull, 0xae3f85c1420ed353ull, 0x2ed0f139fb677024ull, 0xf22a81881e48228eull }}, {{ 0xc68ef8aba4eba048ull, 0x5d1dd59caff2e857ull, 0x5e527cddfe60f379ull, 0xce7b398c94944143ull, 0xd4296c43d20a616eull, 0x75a90f512ed1598dull }}, {{ 0xc195b6b4713442ceull, 0xa32a581edf7d136dull, 0xaf38e0abefc982bdull, 0x10d03f7dcdca8ca1ull, 0x499e3aa63467ce54ull, 0x989a992bd42d7f8aull }}, {{ 0x8fd9230c6c0a9c0cull, 0x5fa77134bae2c249ull, 0xd838c6b75ddf1b68ull, 0xa8227aea09e97e50ull, 0xe02e4a7e0c0e0f48ull, 0xf609fbb649c6fb66ull }}, {{ 0x9e7b5e7c386a1875ull, 0xbc8a6c0f4cdb96dfull, 0x7237c329aab71213ull, 0x9158cd24631eef28ull, 0xc1cee8ec788c98d6ull, 0x9c63d51ee1c5d204ull }}, {{ 0x30d1b0da3424f497ull, 0x5d6838990093e4bcull, 0x762d9fa0ab26b4c5ull, 0xad78036bdf355794ull, 0x9215193cb57df861ull, 0x1be65334d1ba342full }}, {{ 0xe830e88609718de5ull, 0xa61235fa05c6ef59ull, 0x9dc83c46af830fb5ull, 0xc6b02236b8156bccull, 0xb4d2fc5f16ebb3d0ull, 0x16ff4010314609dbull }}, {{ 0x11e9153c5e6f8af6ull, 0x7cb61bc439c55983ull, 0x29d25ac2db1e9d18ull, 0xc2e1562330d635feull, 0x103ddbb6e5350627ull, 0xe5f880a1ecbc6295ull }}, {{ 0xb31ad45bb05b6d9full, 0xdf1d15aa41b57f1eull, 0xa2378b9c8f3222f4ull, 0x9ccd5d5fe85e1bedull, 0xa26a9524f4123d8dull, 0xfbb506533f5bd9d2ull }}, {{ 0xff0c4b94e392483aull, 0xb722d8a69116f732ull, 0x562b741d97f55d90ull, 0x2005a5bf13ad1748ull, 0x5829d37188b66788ull, 0xd5123f407996823aull }}, {{ 0xf67af3d0e3b6d242ull, 0x275c7681aae5a7fdull, 0x5db28927ef95a7a7ull, 0x40387976c4c2e8d3ull, 0x71a2426f57200b51ull, 0x52b67884bfe11647ull }}, {{ 0xa0cd8628e5243693ull, 0x899ca110acf88febull, 0xa8f95b8f5bd88c87ull, 0x8234bea3af9d1841ull, 0x705698596740712cull, 0x3b20b52f7ecadecaull }}, {{ 0x48073d98f36a21bdull, 0x601e4aa6c1b59f34ull, 0x99bd939996757d4bull, 0x160f7264dc22f290ull, 0x6361f37e08846bbdull, 0x4f4713daf3ecb3e8ull }}, {{ 0xd04867f982255167ull, 0xc12eea839118380aull, 0x0167c3ffe096e4f1ull, 0xdc9a77f0995d79a6ull, 0xe1d382ec552c3562ull, 0x18c6c68d873f0713ull }}, {{ 0x22d40fbf15752e04ull, 0x8bd52923aaf2306cull, 0x0e0da7fec5e4f171ull, 0x9e08af65fda6c07cull, 0xd2431d3b53ba15dcull, 0xf7c3c187487646c6ull }}, {{ 0x5c489d76d693cc25ull, 0x76539b64ad75e439ull, 0x8c888ff3baf16e6full, 0x2c56d9fbe88384d8ull, 0x369f24514544da9eull, 0xada58f48d49ec3c4ull }}, {{ 0x9ad626a461c5f977ull, 0x9f4411eec69aea3dull, 0x7d559f854d6e505aull, 0xbb6483d715233075ull, 0x22376b2cb4b08a2dull, 0xc87798d84e33a5aaull }}, {{ 0x0c5d826bd1bbbea2ull, 0x38a8b353c20d2668ull, 0xe5583b35064f238aull, 0x51ed2666d35fe496ull, 0x562a2fbf0ee565c9ull, 0xd4abf8730e0478a5ull }}, {{ 0x7ba7183631557253ull, 0x3697014594838010ull, 0xf57250123f176366ull, 0x3343800441beede4ull, 0x5da5dd7694f5f9ddull, 0x4eb7b47e8c2cb675ull }}, {{ 0xd486f21ded56773cull, 0x21e60cb7cd2300a4ull, 0x967720b676e9e1feull, 0x00a3002a91754af1ull, 0xa87aa6a1d19bc2a4ull, 0x132d0cf179bf2095ull }}, {{ 0x4d45752b4560a85aull, 0x52fc7f2e035e0670ull, 0xe0a74720a522d3edull, 0x065e01a9ae94ed6full, 0x94ca825230159a68ull, 0xbfc2816ec17745d8ull }}, {{ 0x04b693b0b5c69382ull, 0x3ddcf7cc21ac4063ull, 0xc688c746735c4745ull, 0x3fac10a0d1d1465eull, 0xcfe91735e0d80810ull, 0x7d990e538ea8ba75ull }}, {{ 0x2f21c4e719c1c318ull, 0x6aa1adf950ba83deull, 0xc157c8c0819ac8b4ull, 0x7cb8a648322cbfb3ull, 0x1f1ae81ac87050a2ull, 0xe7fa8f439297489aull }}, {{ 0xd751b10701919ef2ull, 0x2a50cbbd274926adull, 0x8d6dd785100bd70cull, 0xdf367ed1f5bf7d05ull, 0x370d110bd4632658ull, 0x0fc998a3b9e8d605ull }}, {{ 0x6930ea460fb03571ull, 0xa727f56388db82caull, 0x864a6b32a0766679ull, 0xb820f433997ae237ull, 0x2682aa764bdf7f78ull, 0x9ddff66543185c34ull }}, {{ 0x1be926bc9ce21665ull, 0x878f95e358931be8ull, 0x3ee82ffa44a000c0ull, 0x31498a03feccd62bull, 0x811aa89ef6bafab7ull, 0x2abf9ff49ef39a09ull }}, {{ 0x171b835e20d4dff7ull, 0x4b9bdae175bf1711ull, 0x7511dfc6ae400785ull, 0xecdf6427f4005db0ull, 0x0b0a9635a34dcb27ull, 0xab7c3f8e3584045full }}, {{ 0xe71321ad4850bfa1ull, 0xf4168cce9976e6aaull, 0x92b2bdc2ce804b34ull, 0x40b9e98f8803a8e4ull, 0x6e69de186109ef8full, 0xb2da7b8e17282bb6ull }}, {{ 0x06bf50c4d3277c4dull, 0x88e18011fea502adull, 0xbafb699c1102f011ull, 0x87431f9b502498edull, 0x5022acf3ca635b98ull, 0xfc88d38ce791b520ull }}, {{ 0x437927b03f8adb03ull, 0x58cf00b3f2721ac2ull, 0x4dd22018aa1d60afull, 0x489f3c11216df949ull, 0x215ac185e7e193f5ull, 0xdd5843810bb11343ull }}, {{ 0xa2bb8ce27b6c8e20ull, 0x7816070778750b96ull, 0x0a3540f6a525c6d9ull, 0xd63858ab4e4bbcddull, 0x4d8b8f3b0ecfc794ull, 0xa572a30a74eac09full }}, {{ 0x5b5380d8d23d8d42ull, 0xb0dc464ab49273e2ull, 0x661489a27379c47eull, 0x5e3376b10ef560a2ull, 0x0773984e941dcbd0ull, 0x767a5e68912b8639ull }}, {{ 0x9143087836678499ull, 0xe89abeeb0db886d7ull, 0xfccd605882c1acf2ull, 0xae02a2ea9595c657ull, 0x4a83f311c929f623ull, 0xa0c7b015abb33e3aull }}, {{ 0xac9e54b2200b2df9ull, 0x160b752e8935446bull, 0xe005c3751b90c17dull, 0xcc1a5d29d7d9bf6full, 0xe9277eb1dba39d64ull, 0x47cce0d8b5006e46ull }}, {{ 0xbe2f4ef5406fcbbbull, 0xdc7293d15c14ac34ull, 0xc039a29313a78ee2ull, 0xf907a3a26e817a5eull, 0x1b8af2f2946425efull, 0xce00c87712044ec5ull }}, {{ 0x6dd91594845df551ull, 0x9c79c62d98ceba0full, 0x824059bec48b94dcull, 0xba4c6458510ec7b3ull, 0x136d7d79cbe97b5full, 0x0c07d4a6b42b13b3ull }}, {{ 0x4a7ad7cd2bab9527ull, 0x1cc1bdc7f813449aull, 0x16838173ad73d09eull, 0x46fbeb732a93cd03ull, 0xc246e6c1f71ed1bdull, 0x784e4e8309aec4feull }}, {{ 0xe8cc6e03b4b3d386ull, 0x1f9169cfb0c0ae06ull, 0xe1230e84c686262dull, 0xc5d7327fa9c6021eull, 0x96c50393a7343164ull, 0xb30f111e60d3b1f3ull }}, {{ 0x17fc4c250f064338ull, 0x3bae221ce786cc45ull, 0xcb5e912fc13d7dc3ull, 0xba67f8fca1bc1534ull, 0xe3b223c48809edefull, 0xfe96ab2fc844f383ull }}, {{ 0xefdaf972963ea033ull, 0x54cd55210b43fab2ull, 0xf1b1abdd8c66e9a0ull, 0x480fb9de5158d40full, 0xe4f565ad50634b5dull, 0xf1e2afddd2b18326ull }}, {{ 0x5e8dbe79de7241fdull, 0x5005534a70a7cafdull, 0x70f0b6a77c052043ull, 0xd09d42af2d78489full, 0xf195f8c523e0f1a4ull, 0x72dadeaa3aef1f84ull }}, {{ 0xb18970c2b07693ddull, 0x203540e8668dede5ull, 0x6967228ad83342a1ull, 0x26249ad7c6b2d63aull, 0x6fdbb7b366c97070ull, 0x7c8cb2a64d573b31ull }}, {{ 0xef5e679ae4a1c6a3ull, 0x42148914018b4af8ull, 0x1e07596c72009a4bull, 0x7d6e0c6dc2fc5e48ull, 0x5e952d0203de6461ull, 0xdd7efa7f05684feeull }}, {{ 0x59b00c0cee51c263ull, 0x94cd5ac80f70edb9ull, 0x2c497e3c740606f0ull, 0xe64c7c499ddbaed1ull, 0xb1d3c21426afebceull, 0xa6f5c8f636131f4full }}, {{ 0x80e078814f3197dcull, 0xd0058bd09a69493dull, 0xbadeee5c883c4565ull, 0xfefcdae02a94d42bull, 0xf24594c982df3614ull, 0x8599d99e1cbf391cull }}, {{ 0x08c4b50d17efee9aull, 0x20377626081cdc67ull, 0x4cb54f9d525ab5faull, 0xf5e08cc1a9d049b5ull, 0x76b7cfdf1cb81cd1ull, 0x3802802d1f783b21ull }}, {{ 0x57af1282ef5f5206ull, 0x422a9d7c51209c06ull, 0xff151c25378b1bc5ull, 0x9ac57f90a222e114ull, 0xa32e1eb71f312033ull, 0x301901c33ab24f4eull }}, {{ 0x6cd6b91d59b9343cull, 0x95aa26db2b46183full, 0xf6d319742b6f15b4ull, 0x0bb6fba6555ccad1ull, 0x5fcd332737eb4204ull, 0xe0fa11a04af71912ull }}, {{ 0x40633b25813c0a54ull, 0xd8a5848fb0bcf27aull, 0xa43efe89b256d90dull, 0x7525d47f559fec33ull, 0xbe03ff882f309428ull, 0xc9c4b042eda6fab7ull }}, {{ 0x83e04f770c586745ull, 0x76772d9ce76178c6ull, 0x6a75f160f7647a8aull, 0x937a4cf9583f3a04ull, 0x6c27fb51d7e5c994ull, 0xe1aee29d4885cb2dull }}, {{ 0x26c31aa67b7408b2ull, 0xa0a7c82109ceb7c1ull, 0x289b6dc9a9ecc968ull, 0xc2c701bd7278442cull, 0x398fd1326ef9dfcdull, 0xd0d4da24d539efc6ull }}, {{ 0x839f0a80d28856f0ull, 0x468dd14a62132d8bull, 0x961249e0a33fde16ull, 0x9bc6116678b2a9b9ull, 0x3f9e2bf855c2be09ull, 0x2850857054435dbeull }}, {{ 0x2436690839536560ull, 0xc18a2ce7d4bfc773ull, 0xdcb6e2c6607eacdeull, 0x15bcae00b6faa13full, 0x7c2db7b3599b6c60ull, 0x932536634aa1a96eull }}, {{ 0x6a201a523d41f5c0ull, 0x8f65c10e4f7dca7full, 0x9f24dbbfc4f2c0b3ull, 0xd95ecc0725ca4c7eull, 0xd9c92d0180123bc0ull, 0xbf741fe0ea509e50ull }}, {{ 0x2541073664939980ull, 0x99f98a8f1ae9e8faull, 0x3770957db17b8703ull, 0x7db3f84779e6fcf2ull, 0x81dbc20f00b65588ull, 0x7a893ec927262f28ull }}, {{ 0x748a481fedc3ff00ull, 0x03bf69970d2319c5ull, 0x2a65d6e8eed34624ull, 0xe907b2cac305e176ull, 0x12959496071f5754ull, 0xc95c73db877dd795ull }}, {{ 0x8d66d13f49a7f5ffull, 0x257a1fe6835f01b6ull, 0xa7fa65195440bd68ull, 0x1a4cfbeb9e3ace9dull, 0xb9d7cddc47396951ull, 0xdd9c86934aea6bd2ull }}, {{ 0x86042c78e08f9bf1ull, 0x76c53f0121b61121ull, 0x8fc7f2fd4a876611ull, 0x0701d7342e4c1228ull, 0x426e0a9ac83e1d2bull, 0xa81d41c0ed28363bull }}, {{ 0x3c29bcb8c59c176eull, 0xa3b4760b511cab4full, 0x9dcf7de4e949fcaeull, 0x46126809cef8b595ull, 0x984c6a0bd26d23aeull, 0x9124918943921e50ull }}, {{ 0x59a15f37b818ea49ull, 0x650c9c712b1eb118ull, 0x2a1aeaf11ce3ded2ull, 0xbcb8106215b717d8ull, 0xf2fc2476384364ceull, 0xab6daf5ca3b52f25ull }}, {{ 0x804db82d30f926deull, 0xf27e1c6baf32eaf3ull, 0xa50d2d6b20e6b437ull, 0x5f30a3d4d926ee71ull, 0x7dd96c9e32a1f013ull, 0xb248d99e6513d77bull }}, {{ 0x030931c3e9bb84aaull, 0x78ed1c34d7fd2d83ull, 0x7283c62f49030a2full, 0xb7e666507b855070ull, 0xea7e3e2dfa5360c1ull, 0xf6d8802ff2c66ad2ull }}, {{ 0x1e5bf1a721532ea1ull, 0xb9431a106fe3c71eull, 0x7925bdd8da1e65daull, 0x2effff24d3352464ull, 0x28ee6dcbc741c791ull, 0xa47501df7bc02c3dull }}, {{ 0x2f9770874d3fd24cull, 0x3c9f04a45ee5c72dull, 0xbb796a78852ffa8bull, 0xd5fff77040136becull, 0x995049f5c891cbabull, 0x6c9212bad581ba63ull }}, {{ 0xdbea6549047e36fcull, 0x5e362e6bb4f9c7c3ull, 0x52be28b533dfc970ull, 0x5bffaa6280c2373full, 0xfd22e399d5b1f4b6ull, 0x3db4bb4c571147e3ull }}, {{ 0x9727f4da2cee25dcull, 0xae1dd03511c1cda6ull, 0x3b6d971406bdde63ull, 0x97fca7d907962879ull, 0xe35ce40258f38f1full, 0x690f50fb66accee7ull }}, {{ 0xe78f9085c14d7a9cull, 0xcd2a2212b1920881ull, 0x5247e6c8436aafe4ull, 0xefde8e7a4bdd94bcull, 0xe1a0e8177983973bull, 0x1a9929d202c0150eull }}, {{ 0x0b9ba5398d06ca1bull, 0x03a554baefb45513ull, 0x36cf03d2a22adef0ull, 0x5eb190c6f6a7cf5bull, 0xd04910eabf23e857ull, 0x09fba2341b80d294ull }}, {{ 0x7414743f8243e50cull, 0x24754f4d5d0b52beull, 0x2416263a55acb560ull, 0xb2efa7c5a28e1990ull, 0x22daa92b77671369ull, 0x63d45609130839d0ull }}, {{ 0x88cc8a7b16a6f27cull, 0x6c951905a2713b70ull, 0x68dd7e4758bf15c1ull, 0xfd5c8db8598cffa1ull, 0x5c8a9bb2aa06c220ull, 0xe64b5c5abe524221ull }}, {{ 0x57fd68cee28578d7ull, 0x3dd2fa38586c5265ull, 0x18a6eec97776d98eull, 0xe59d89337f81fc4eull, 0x9d6a14faa4439549ull, 0xfef19b8b6f36954dull }}, {{ 0x6fe61814d936b864ull, 0x6a3dc633743b37f5ull, 0xf68553deaaa47f8eull, 0xf8275c02fb13db0cull, 0x2624d1ca6aa3d4e2ull, 0xf57013725821d508ull }}, {{ 0x5efcf0d07c2333e5ull, 0x2669be028a502f96ull, 0xa13546b2aa6cfb90ull, 0xb189981dcec68e81ull, 0x7d7031e82a6650ddull, 0x9660c27771525251ull }}, {{ 0xb5e16824d96006f3ull, 0x80216c196721dbdfull, 0x4c14c2faa841d3a1ull, 0xef5ff12a13c19110ull, 0xe661f311a7ff28a8ull, 0xdfc798aa6d37372eull }}, {{ 0x1ace11707dc0457bull, 0x014e38fe075296bdull, 0xf8cf9dca9292444full, 0x59bf6ba4c58faaa2ull, 0xffd37eb08ff79699ull, 0xbdcbf6a8442827d4ull }}, {{ 0x0c0cae64e982b6cfull, 0x0d0e39ec4939e363ull, 0xb81c29e9b9b6ab16ull, 0x817a346fb79caa5dull, 0xfe42f2e59fabe1fdull, 0x69f7a292a9918e51ull }}, {{ 0x787ecff11f1b2414ull, 0x828e433adc42e1deull, 0x3119a3214122aedcull, 0x0ec60c5d2c1ea7a9ull, 0xee9d7cf83cb6d3e7ull, 0x23ac59ba9faf8f33ull }}, {{ 0xb4f41f6b370f68c8ull, 0x198ea04c9a9cd2b0ull, 0xeb005f4c8b5ad49dull, 0x93bc7ba3b9328c9bull, 0x5226e1b25f244706ull, 0x64bb814a3cdb9807ull }}, {{ 0x11893a30269a17ccull, 0xff9242fe0a203ae7ull, 0x2e03b8fd718c4e22ull, 0xc55cd4653bf97e17ull, 0x3584d0f7b76ac641ull, 0xef530ce66093f049ull }}, {{ 0xaf5c45e18204edfbull, 0xfbb69dec65424d06ull, 0xcc2539e66f7b0d5dull, 0xb5a04bf457beece7ull, 0x173029ad2a2bbe91ull, 0x593e80ffc5c762dcull }}, {{ 0xd99abacf14314bceull, 0xd5222b3bf4970242ull, 0xf97443005ace85abull, 0x1842f78b6d75410dull, 0xe7e1a0c3a5b571b1ull, 0x7c7109fdb9c9dc98ull }}, {{ 0x800b4c16c9ecf609ull, 0x5355b0578de6169cull, 0xbe8a9e038c1138b6ull, 0xf29dab7246948a8bull, 0x0ed047a4791670eaull, 0xdc6a63e941e29df9ull }}, {{ 0x0070f8e3e3419c5full, 0x4158e36b8afce21dull, 0x716a2c2378ac371full, 0x7a28b276c1cd6975ull, 0x9422cc6cbae0692dull, 0x9c27e71c92da2bbaull }}, {{ 0x0469b8e6e0901bb5ull, 0x8d78e2336de0d522ull, 0x6e25b962b6ba2738ull, 0xc596f8a392061e96ull, 0xc95bfc3f4cc41bc6ull, 0x198f071dbc85b549ull }}, {{ 0x2c213904c5a11513ull, 0x86b8d6024ac85354ull, 0x4d793ddb23458835ull, 0xb7e5b663b43d31e0ull, 0xdd97da78ffa915c3ull, 0xff9647295d3914e1ull }}, {{ 0xb94c3a2fb84ad2bcull, 0x43385c16ebd34149ull, 0x06bc6a8f60b75217ull, 0x2ef91fe50a63f2c3ull, 0xa7ee88b9fc9ad9a5ull, 0xfbdec79da43ad0d2ull }}, {{ 0x3cfa45dd32ec3b54ull, 0xa03398e536408ce1ull, 0x435c2999c72934e8ull, 0xd5bb3ef267e77b9eull, 0x8f515743de0c8073ull, 0xd6b3cc286a4c283aull }}, {{ 0x61c6baa3fd3a514dull, 0x4203f8f41e8580ccull, 0xa199a001c79c1116ull, 0x595075780f0ad42eull, 0x992d68a6ac7d0486ull, 0x6305f99426f99249ull }}, {{ 0xd1c34a67e4472d02ull, 0x9427b989313707fbull, 0x50004011cc18aadeull, 0x7d2496b0966c49d2ull, 0xfbc61682bce22d3full, 0xde3bbfc985bfb6dfull }}, {{ 0x31a0e80eeac7c211ull, 0xc98d3f5bec264fd6ull, 0x200280b1f8f6acb1ull, 0xe36de2e5e03ae237ull, 0xd5bce11b60d5c47aull, 0xae557ddf397d24bfull }}, {{ 0xf04910952bcd94a6ull, 0xdf847997397f1e5dull, 0x401906f3b9a2bef1ull, 0xe24adcfac24cd627ull, 0x5960cb11c859acccull, 0xcf56eab83ee36f7eull }}, {{ 0x62daa5d3b607ce77ull, 0xbb2cbfe83ef72fabull, 0x80fa4585405b7572ull, 0xd6eca1cb97005d88ull, 0x7dc7eeb1d380c000ull, 0x19652b3274e25aefull }}, {{ 0xdc8a7a451c4e10a7ull, 0x4fbf7f1275a7dcb1ull, 0x09c6b7348392967bull, 0x653e51f3e603a755ull, 0xe9cf52f243078008ull, 0xfdf3aff890d78d5aull }}, {{ 0x9d68c6b31b0ca688ull, 0x1d7af6b8988e9ef2ull, 0x61c3280d23b9e0d1ull, 0xf46f3386fc248952ull, 0x22193d769e4b0053ull, 0xeb84dfb5a86b858dull }}, {{ 0x2617c2ff0e7e814dull, 0x26cda335f592357aull, 0xd19f90836542c82bull, 0x8c580345d96d5d37ull, 0x54fc66a22eee0347ull, 0x3330bd1894333783ull }}, {{ 0x7ced9df690f10d03ull, 0x8408601b97b616c5ull, 0x303ba521f49bd1afull, 0x7b7020ba7e45a42eull, 0x51dc0255d54c20cbull, 0xffe762f5ca002b21ull }}, {{ 0xe1482ba1a96a821cull, 0x2853c113ed1ce3b6ull, 0xe25473538e1630dbull, 0xd2614748eeb869cdull, 0x3298175a54f947f2ull, 0xff09dd99e401af4dull }}, {{ 0xccd1b4509e29151aull, 0x93458ac74320e524ull, 0xd74c81438cdde88full, 0x37ccc8d95334220aull, 0xf9f0e98751bccf7cull, 0xf662a802e810d903ull }}, {{ 0x00310b262d9ad307ull, 0xc0b76bc89f48f370ull, 0x68fd0ca380ab159bull, 0x2dffd87d4009546cull, 0xc3691f4931601adaull, 0x9fda901d10a87a27ull }}, {{ 0x01ea6f7dc80c3e42ull, 0x872a35d638d98260ull, 0x19e27e6306aed815ull, 0xcbfe74e4805d4c3cull, 0xa21b38dbedc10c85ull, 0x3e89a122a694c58dull }}, {{ 0x13285ae9d07a6e90ull, 0x47a61a5e387f17c0ull, 0x02d8efde42d470d7ull, 0xf7f090ed03a4fa59ull, 0x55103897498a7d39ull, 0x71604b5a81cfb788ull }}, {{ 0xbf938d2224c851a0ull, 0xcc7d07ae34f6ed80ull, 0x1c795eae9c4c6868ull, 0xaf65a9422471c77aull, 0x52a235e8df68e443ull, 0x6dc2f189121d2b53ull }}, {{ 0x7bc383556fd3303dull, 0xfce24cce11a54707ull, 0x1cbdb2d21afc1417ull, 0xd9f89c956c71cac5ull, 0x3a561b18ba18eaa4ull, 0x499d6f5ab523b141ull }}, {{ 0xd5a321565e3fe261ull, 0xe0d7000cb074c64aull, 0x1f68fc350dd8c8efull, 0x83b61dd63c71ebb3ull, 0x475d0ef744f92a70ull, 0xe026598b1364ec8cull }}, {{ 0x585f4d5fae7ed7cbull, 0xc866007ee48fbeecull, 0x3a19da128a77d95eull, 0x251d2a5e5c7334ffull, 0xc9a295a8b1bba865ull, 0xc17f7f6ec1f13d7aull }}, {{ 0x73b905bcd0f46decull, 0xd3fc04f4ed9d753bull, 0x450284b968ae7db3ull, 0x7323a7af9c8011f8ull, 0xe059d896f15493f3ull, 0x8efafa53936c66cbull }}, {{ 0x853a3960298c4b38ull, 0x47d8319148269452ull, 0xb2192f3e16d0e906ull, 0x7f648cdc1d00b3b2ull, 0xc38275e56d4dc782ull, 0x95cdc743c23c03f6ull }}, {{ 0x34463dc19f7af032ull, 0xce71efacd181cb39ull, 0xf4fbd86ce4291a3eull, 0xf9ed8099220704faull, 0xa3189af64509cb18ull, 0xda09c8a5965827a3ull }}, {{ 0x0abe69903acd61f3ull, 0x10735cc02f11f03cull, 0x91d67440e99b0674ull, 0xc34705fb544631cdull, 0x5ef60d9eb261eef9ull, 0x8461d677df718c64ull }}, {{ 0x6b701fa24c05d379ull, 0xa4819f81d6b36258ull, 0xb2608a89200e4088ull, 0xa0c63bd14abdf207ull, 0xb59c8832f7d355c1ull, 0x2bd260aeba6f7bebull }}, {{ 0x32613c56f83a42beull, 0x6d103b126301d774ull, 0xf7c5695b408e8556ull, 0x47be562ceb6b744cull, 0x181d51fdae415990ull, 0xb637c6d3485ad735ull }}, {{ 0xf7cc5b65b2469b6eull, 0x42a24eb7de126a89ull, 0xadb61d9085913560ull, 0xcd6f5dc132328b01ull, 0xf12533e8ce8d7fa2ull, 0x1e2dc440d38c6812ull }}, {{ 0xadfb91f8f6c2124cull, 0x9a57132eacb82963ull, 0xc91d27a537ac15c2ull, 0x0659a98bf5f96e10ull, 0x6b7407181186fc5cull, 0x2dc9aa88437c10bdull }}, {{ 0xcbd3b3b9a394b6fcull, 0x0766bfd2bf319de4ull, 0xdb238c742cb8d99aull, 0x3f809f779bbe4ca7ull, 0x328846f0af45db98ull, 0xc9e0a952a2d8a766ull }}, {{ 0xf645054063cf25d5ull, 0x4a037e3b77f02aefull, 0x8f637c89bf388004ull, 0x7b063aac156efe8eull, 0xf952c566d8ba93f2ull, 0xe2c69d3a5c7689fdull }}, {{ 0x9eb23483e6177a52ull, 0xe422ee52af61ad5full, 0x99e2dd617835002aull, 0xce3e4ab8d655f191ull, 0xbd3bb6047749c778ull, 0xdbc224479ca163ebull }}, {{ 0x32f60d26fceac736ull, 0xe95d4f3ad9d0c5bcull, 0x02dca5ceb21201acull, 0x0e6eeb385f5b6fb0ull, 0x64551c2ca8e1cab8ull, 0x95956acc1e4de735ull }}, {{ 0xfd9c8385e12bc81eull, 0x1da5184c8227b959ull, 0x1c9e7a12f4b410c1ull, 0x90553033b9925ce0ull, 0xeb5319be98d1eb30ull, 0xd7d62bf92f0b0815ull }}, {{ 0xe81d233acbb5d12aull, 0x2872f2fd158d3d83ull, 0x1e30c4bd8f08a78bull, 0xa353e2053fb7a0c1ull, 0x313f0171f8332fe5ull, 0x6e5db7bbd66e50dbull }}, {{ 0x1123604bf51a2ba5ull, 0x947d7de2d7846727ull, 0x2de7af6796568b6full, 0x6146d4347d2c478bull, 0xec760e73b1ffdef8ull, 0x4fa92d56604f288full }}, {{ 0xab61c2f79305b470ull, 0xcce6eadc6b2c0786ull, 0xcb0cda0bdf61725bull, 0xccc44a0ce3bacb6full, 0x3c9c9084f3feb5b3ull, 0x1c9bc55fc317959full }}, {{ 0xb1d19dabbe390c5cull, 0x01052c9c2fb84b42ull, 0xee808476b9ce7796ull, 0xffaae480e54bf25dull, 0x5e1da53187f31905ull, 0x1e15b5bd9eebd838ull }}, {{ 0xf23028b56e3a7b97ull, 0x0a33be19dd32f09aull, 0x51052ca34210abdcull, 0xfcaced08f4f777abull, 0xad2873ef4f7efa3bull, 0x2cd9196835367233ull }}, {{ 0x75e197164e48d3e7ull, 0x66056d02a3fd660dull, 0x2a33be6094a6b698ull, 0xdec1425991aaacb1ull, 0xc39487591af5c657ull, 0xc07afe1214207604ull }}, {{ 0x9acfe6df0ed8470aull, 0xfc36421a67e5fc86ull, 0xa6056fc5ce8321f3ull, 0xb38c977fb0aabeebull, 0xa3cd497b0d99bf6eull, 0x84cdecb4c9449c2full }}, {{ 0x0c1f04b69472c665ull, 0xda1e95080efbdd42ull, 0x7c365dba111f5387ull, 0x037deafce6ab7534ull, 0x6604dece88017a53ull, 0x300b3f0fdcae19dcull }}, {{ 0x79362f21cc7bbff4ull, 0x8531d25095d6a494ull, 0xda1fa944ab39434eull, 0x22eb2de102b2940cull, 0xfc30b411500ec73eull, 0xe070769e9ecd029bull }}, {{ 0xbc1dd751fcd57f84ull, 0x33f23725da626dccull, 0x853c9caeb03ca111ull, 0x5d2fcaca1af9c880ull, 0xd9e708ad2093c86dull, 0xc464a23234021a17ull }}, {{ 0x592a6933e056fb2bull, 0x0776277a87d849ffull, 0x345e1ed2e25e4aacull, 0xa3ddebe50dc1d505ull, 0x830656c345c5d445ull, 0xabee55f6081504eeull }}, {{ 0x7ba81c06c365cfb2ull, 0x4a9d8ac94e72e3f9ull, 0x0bad343cd7aeeab8ull, 0x66ab36f289925234ull, 0x1e3f63a0b9ba4ab8ull, 0xb74f5b9c50d23151ull }}, {{ 0xd4911843a1fa1cf2ull, 0xea276bdd107ce7beull, 0x74c40a606cd52b32ull, 0x02b025795fb73608ull, 0x2e79e4474146eb34ull, 0x2919941b2835ed2bull }}, {{ 0x4daaf2a453c52177ull, 0x258a36a2a4e10d74ull, 0x8fa867c44053affdull, 0x1ae176bdbd281c54ull, 0xd0c2eac88cc53008ull, 0x9affc90f921b43afull }}, {{ 0x08ad7a6b45b34ea3ull, 0x7766225a70ca868bull, 0x9c940daa8344dfe3ull, 0x0ccea36963911b4dull, 0x279d2bd57fb3e051ull, 0x0dfdda9bb510a4deull }}, {{ 0x56c6c830b9011262ull, 0xa9fd578867e9416eull, 0x1dc888a920b0bee2ull, 0x8012621de3ab1108ull, 0x8c23b656fd06c32aull, 0x8bea8a1512a670adull }}, {{ 0x63c3d1e73a0ab7d3ull, 0xa3e56b540f1c8e4full, 0x29d5569b46e774daull, 0x00b7d52ae4aeaa51ull, 0x79651f65e2439fa9ull, 0x772964d2ba8066c7ull }}, {{ 0xe5a63308446b2e41ull, 0x66f63148971d8f19ull, 0xa2556210c50a908aull, 0x072e53aceed2a72bull, 0xbdf339fad6a43c9aull, 0xa79df03b490403caull }}, {{ 0xf87dfe52ac2fce89ull, 0x059decd5e7279702ull, 0x5755d4a7b269a568ull, 0x47cf44c1543a87b4ull, 0x6b8043cc626a5e04ull, 0x8c2b6250da2825ebull }}, {{ 0xb4ebef3ab9de1155ull, 0x382b405b078be61dull, 0x695a4e8cf8207610ull, 0xce18af8d4a494d0bull, 0x3302a5fbd827ac2aull, 0x79b1d72885917b32ull }}, {{ 0x1137584b42acad57ull, 0x31b0838e4b76fd29ull, 0x1d871181b1449ca2ull, 0x0cf6db84e6dd0272ull, 0xfe1a7bd6718cb9acull, 0xc0f2679537aecff5ull }}, {{ 0xac2972f09abec562ull, 0xf0e5238ef2a5e39aull, 0x2746af10ecae1e55ull, 0x81a4933104a21875ull, 0xed08d6606f7f40b8ull, 0x89780bd42cd41f9bull }}, {{ 0xb99e7d660b73b5d2ull, 0x68f363957a7ae40aull, 0x88c2d6a93ecd2f5bull, 0x106dbfea2e54f493ull, 0x42585fc45af88735ull, 0x5eb07649c0493c17ull }}, {{ 0x4030e5fc72851a33ull, 0x1981e3d6c8cce86bull, 0x579c629c7403d992ull, 0xa4497f25cf518dc3ull, 0x9773bdab8db54812ull, 0xb2e49ee182dc58e8ull }}, {{ 0x81e8fbdc79330603ull, 0xff12e663d8011430ull, 0x6c1bda1c88267fb4ull, 0x6adef77a192f89a1ull, 0xea8568b38914d0baull, 0xfcee34cf1c9b7915ull }}, {{ 0x1319d69cbbfe3c1aull, 0xf6bcffe6700ac9e5ull, 0x3916851d5180fd11ull, 0x2cb5aac4fbdb604eull, 0x293617035ad02748ull, 0xe14e10171e12badbull }}, {{ 0xbf02621f57ee5907ull, 0xa361ff00606be2f2ull, 0x3ae133252f09e2b3ull, 0xbf18abb1d691c30eull, 0x9c1ce6218c2188d1ull, 0xcd0ca0e72cbb4c8full }}, {{ 0x7617d5396f4f7a49ull, 0x61d3f603c436dd7bull, 0x4ccbff73d662db04ull, 0x76f6b4f261b19e8eull, 0x1920fd4f794f5831ull, 0x027e4907bf50fd9cull }}, {{ 0x9cee543e591ac6d6ull, 0xd2479c25aa24a6d2ull, 0xfff7fa865fdc8e2bull, 0xa5a31177d0f0318eull, 0xfb49e51abd1971eeull, 0x18eeda4d7929e818ull }}, {{ 0x214f4a6f7b0bc45cull, 0x36cc1978a56e843aull, 0xffafc93fbe9d8db6ull, 0x785eaeae2961ef95ull, 0xd0e2f30b62fe7352ull, 0xf9548706bba310f9ull }}, {{ 0x4d18e85ace75ab97ull, 0x23f8feb676512a45ull, 0xfcdddc7d7227891eull, 0xb3b2d2cd9dd35bdbull, 0x28dd7e71ddf08138ull, 0xbd4d4643545ea9c2ull }}, {{ 0x02f9138c1098b3e4ull, 0x67b9f3209f2ba6b5ull, 0xe0aa9ce6758b5b2dull, 0x04fc3c082a419697ull, 0x98a6f072ab650c37ull, 0x6504bea14bb2a195ull }}, {{ 0x1dbac378a5f706edull, 0x0d437f4637b48312ull, 0xc6aa210097718fc6ull, 0x31da5851a68fe1eeull, 0xf685647ab1f27a26ull, 0xf22f724cf4fa4fd7ull }}, {{ 0x294ba2b67ba6453full, 0x84a2f8be2d0d1eb5ull, 0xc2a54a05ea6f9dbcull, 0xf2877330819ed353ull, 0xa135eccaf378c57dull, 0x75da770191c71e6full }}, {{ 0x9cf45b20d47eb472ull, 0x2e5db76dc2833313ull, 0x9a74e43b285c295dull, 0x794a7fe510344145ull, 0x4c1b3fed82b7b6ebull, 0x9a88a60fb1c7305cull }}, {{ 0x218b8f484cf30c71ull, 0xcfa92a49991ffec4ull, 0x0890ea4f93999da3ull, 0xbce8fef2a20a8cb8ull, 0xf9107f471b2d2532ull, 0x09567c9cf1c7e39aull }}, {{ 0x4f7398d3017e7c6cull, 0x1c9ba6dffb3ff3a9ull, 0x55a9271bc4002866ull, 0x6119f57a54697f30ull, 0xbaa4f8c70fc373fbull, 0x5d60de2171cee40dull }}, {{ 0x1a83f83e0ef0dc3bull, 0x1e1484bfd07f849dull, 0x589b8715a80193fdull, 0xcb0396c74c1ef7e3ull, 0x4a71b7c69da287d1ull, 0xa5c8ad4e7214e889ull }}, {{ 0x0927b26c95689a53ull, 0x2ccd2f7e24fb2e23ull, 0x761346d8900fc7e3ull, 0xee23e3c8f935aee1ull, 0xe8712dc228594e31ull, 0x79d6c51074d1155cull }}, {{ 0x5b8cf83dd616073bull, 0xc003daed71cfcd5eull, 0x9cc0c475a09dcedfull, 0x4d66e5d9bc18d4ceull, 0x146bc995937d0df3ull, 0xc263b2a4902ad5a1ull }}, {{ 0x9381b26a5cdc4850ull, 0x80268d46721e05afull, 0x1f87ac98462a14bdull, 0x0604fa8158f85012ull, 0xcc35dfd7c2e28b81ull, 0x97e4fa6da1ac584aull }}, {{ 0xc310f827a09ad31full, 0x018184c0752c38dbull, 0x3b4cbdf2bda4cf67ull, 0x3c31c90d79b320b5ull, 0xfa1abe6d9cd9730aull, 0xeef1c84850bb72ebull }}, {{ 0x9ea9b18c460c3f36ull, 0x0f0f2f8493ba3895ull, 0x50ff6b7b68701a06ull, 0x59f1da86c0ff4714ull, 0xc50b7048207e7e66ull, 0x5571d2d327527d37ull }}, {{ 0x32a0ef7abc7a7818ull, 0x9697db2dc54635d8ull, 0x29fa32d21461043cull, 0x8372894389f8c6cbull, 0xb27262d144f0efffull, 0x56723c3f8938e42dull }}, {{ 0xfa495acb5cc8b0f3ull, 0xe1ee8fc9b4be1a71ull, 0xa3c5fc34cbca2a5dull, 0x22795ca363b7c3efull, 0xf877dc2cb1695ffbull, 0x60765a7b5c38e9c8ull }}, {{ 0xc6dd8bf19fd6e980ull, 0xd3519de10f6d0873ull, 0x65bbda0ff5e5a7aaull, 0x58bd9e61e52da75cull, 0xb4ae99beee1dbfcfull, 0xc49f88d19a3921d9ull }}, {{ 0xc4a777703e651effull, 0x41302aca9a425485ull, 0xf956849f9af88cacull, 0x77682fd2f3c8899bull, 0x0ed201754d297e19ull, 0xae3b5830063b5281ull }}, {{ 0xae8aaa626ff335f4ull, 0x8be1abea06974d39ull, 0xbd612e3c0db57ebaull, 0xaa11de3d85d56017ull, 0x94340e95039eecfeull, 0xce5171e03e51390aull }}, {{ 0xd16aa7d85f801b8cull, 0x76d0b72441e90440ull, 0x65cbce588916f349ull, 0xa4b2ae673a55c0edull, 0xca0891d2243541f2ull, 0x0f2e72c26f2c3a69ull }}, {{ 0x2e2a8e73bb011379ull, 0xa427276a931a2a88ull, 0xf9f60f755ae580deull, 0x6efad00847598945ull, 0xe455b2356a14937aull, 0x97d07b9857ba4821ull }}, {{ 0xcda990854e0ac2bbull, 0x69878a29bf05a951ull, 0xc39c9a958cf708b2ull, 0x55cc2052c97f5cbbull, 0xeb58f61624cdc2c8ull, 0xee24d3f36d46d152ull }}, {{ 0x089fa5350c6b9b51ull, 0x1f4b65a176389d32ull, 0xa41e09d781a656f8ull, 0x59f9433bdef99f55ull, 0x31799cdd70099bd3ull, 0x4d70478244c42d3dull }}, {{ 0x563c74127c341125ull, 0x38f1f84e9e3623f4ull, 0x692c626b107f65b1ull, 0x83bca056b5c03958ull, 0xeec020a660601641ull, 0x0662cb16afa9c463ull }}, {{ 0x5e5c88b8da08ab74ull, 0x3973b3122e1d678bull, 0x1bbbd82ea4f9f8ecull, 0x255e436319823d74ull, 0x5381467fc3c0de8full, 0x3fdbeee2dca1abe7ull }}, {{ 0xaf9d57388456b288ull, 0x3e84feb5cd260b71ull, 0x155671d271c3b93aull, 0x75aea1deff166689ull, 0x430cc0fda588b197ull, 0x7e9754dc9e50b709ull }}, {{ 0xdc2568352b62f954ull, 0x7131f31a037c7270ull, 0xd560723871a53c46ull, 0x98d252b5f6e0015aull, 0x9e7f89e87756efeaull, 0xf1e9509e2f27265cull }}, {{ 0x99761213b1ddbd48ull, 0x6bf37f0422dc7868ull, 0x55c4763470745ac0ull, 0xf8373b1ba4c00d8cull, 0x30fb6314a9655f29ull, 0x731d262dd7877f9eull }}, {{ 0xfe9cb4c4f2a964ceull, 0x3782f6295c9cb415ull, 0x59ac9e0c648b8b84ull, 0xb2284f146f80877bull, 0xe9d1dece9df5b7a3ull, 0x7f237dca6b4afc2dull }}, {{ 0xf21f0fb17a9df00cull, 0x2b1d9d9d9e1f08dbull, 0x80be2c7bed73732aull, 0xf59316cc5b054ad1ull, 0x2232b4122b992c64ull, 0xf762e9e830edd9cbull }}, {{ 0x75369ceeca2b607bull, 0xaf2828282d365897ull, 0x076dbcd746827fa5ull, 0x97bee3fb8e34ec2full, 0x55fb08b5b3fbbbf1ull, 0xa9dd2311e94a81efull }}, {{ 0x94222153e5b1c4caull, 0xd7919191c41f75eaull, 0x4a496068c118fc78ull, 0xed74e7d38e1139d6ull, 0x5bce571907d5576full, 0xa2a35eb31ce91359ull }}, {{ 0xc9554d46f8f1afe9ull, 0x6bafafb1a93a9b29ull, 0xe6ddc4178af9dcb8ull, 0x46910e438cac425eull, 0x960f66fa4e556a5full, 0x5a61b2ff211ac17dull }}, {{ 0xdd5504c5b970df16ull, 0x34dcdcf09c4a0fa1ull, 0x04a9a8eb6dc29f34ull, 0xc1aa8ea37eba97b5ull, 0xdc9a05c70f5627b8ull, 0x87d0fdf74b0b8ee7ull }}, {{ 0xa5522fb93e68b6ddull, 0x10a0a1661ae49c52ull, 0x2ea09932499a380aull, 0x90a99262f349ed12ull, 0x9e0439c6995d8d37ull, 0x4e29eba8ee73950eull }}, {{ 0x7535dd3c701724a6ull, 0xa6464dfd0cee1b3aull, 0xd245fbf6e0063064ull, 0xa69fb7dd80e342b5ull, 0x2c2a41c1fda7842bull, 0x0da334995083d292ull }}, {{ 0x941aa45c60e76e7aull, 0x7ebf0be2814d1048ull, 0x36bbd7a4c03de3eeull, 0x823d2ea708e09b1aull, 0xb9a69193e88b29b4ull, 0x88600dfd252639b5ull }}, {{ 0xc90a6b9bc90a50c3ull, 0xf37676d90d02a2d5ull, 0x23566c6f826ae750ull, 0x1663d28658c60f06ull, 0x4081afc7156fa10dull, 0x53c08be3737e4119ull }}, {{ 0xda683415da67279cull, 0x82a0a47a821a5c59ull, 0x61603c5b182d0929ull, 0xdfe6393f77bc963dull, 0x8510ddc6d65c4a82ull, 0x458576e282ee8afcull }}, {{ 0x881208da88078c1dull, 0x1a466cc915079b82ull, 0xcdc25b8ef1c25b9full, 0xbefe3c7aad5dde65ull, 0x32a8a9c45f9ae91cull, 0xb736a4d91d516dddull }}, {{ 0x50b45889504b7920ull, 0x06c03fdad24c1319ull, 0x0997939571979437ull, 0x75ee5ccac5aaaffaull, 0xfa96a1abbc0d1b1full, 0x2822707b252e4aa3ull }}, {{ 0x270b755d22f2bb40ull, 0x43827e8c36f8befdull, 0x5febc3d66febca26ull, 0x9b4f9febb8aadfc4ull, 0xc9e250b558830f3aull, 0x915864cf73ceea67ull }}, {{ 0x867295a35d7b5083ull, 0xa318f17a25b775e3ull, 0xbf35a6605f35e57eull, 0x111c3f3536acbdabull, 0xe2d72715751e984aull, 0xad73f01a8615280dull }}, {{ 0x4079d861a6d1251bull, 0x5ef96ec5792a9ae3ull, 0x78187fc3b81af6f2ull, 0xab1a781422bf68b5ull, 0xdc6786d69331f2e4ull, 0xc68761093cd3908aull }}, {{ 0x84c273d0842b730full, 0xb5be53b6bbaa0ce0ull, 0xb0f4fda5310da577ull, 0xaf08b0c95b7a1716ull, 0x9c0b4461bff37ceeull, 0xc149ca5c6043a56cull }}, {{ 0x2f98862529b27e92ull, 0x196f452354a480c5ull, 0xe991e873ea8876adull, 0xd656e7dd92c4e6e2ull, 0x1870abd17f82e152ull, 0x8ce1e79bc2a4763eull }}, {{ 0xdbf53d73a0f8f1afull, 0xfe58b3614e6d07b3ull, 0x1fb314872954a2c2ull, 0x5f650ea7bbb104ddull, 0xf466b62efb1ccd3cull, 0x80d30c159a6c9e6cull }}, {{ 0x9794668449b970dbull, 0xef7701cd10424d06ull, 0x3cfecd479d4e5b9dull, 0xb9f2928d54ea30a3ull, 0x8c031dd5cf20045bull, 0x083e78d8083e3041ull }}, {{ 0xebcc012ae13e6889ull, 0x5aa61202a2970241ull, 0x61f404cc250f942bull, 0x4379b9855125e660ull, 0x781f2a5a17402b95ull, 0x5270b870526de28full }}, {{ 0x35f80baccc70155cull, 0x8a7cb41a59e61693ull, 0xd3882ff9729bc9b1ull, 0xa2c13f352b7affc3ull, 0xb137a784e881b3d4ull, 0x38673463384ad99aull }}, {{ 0x1bb074bffc60d597ull, 0x68df090782fce1c0ull, 0x4351dfbe7a15e0efull, 0x5b8c7813b2cdfda6ull, 0xec2c8b311511064eull, 0x34080be032ec800aull }}, {{ 0x14e48f7fdbc857e9ull, 0x18b65a4b1de0d181ull, 0xa132bd70c4dac95aull, 0x937cb0c4fc0be87eull, 0x39bd6fead2aa3f0full, 0x085076c1fd3d006dull }}, {{ 0xd0ed9afe95d36f1cull, 0xf71f86ef2ac82f0aull, 0x4bfb6667b08bdd84ull, 0xc2dee7b1d87714f2ull, 0x41665f2c3aa6769bull, 0x5324a393e4620444ull }}, {{ 0x29480df1da425714ull, 0xa73b4557abd1d66cull, 0xf7d2000ce576a731ull, 0x9cb50cf274a6d176ull, 0x8dffb7ba4a80a215ull, 0x3f6e63c6ebd42aaaull }}, {{ 0x9cd08b72869766c6ull, 0x8850b56cb6326039ull, 0xae340080f6a287f0ull, 0x1f1281788e842ea5ull, 0x8bfd2d46e90654d8ull, 0x7a4fe5c53649aaa9ull }}, {{ 0x2025727941ea03bcull, 0x5327163f1df7c240ull, 0xce080509a2594f65ull, 0x36b90eb59129d278ull, 0x77e3c4c51a3f5071ull, 0xc71ef9b41ee0aa9full }}, {{ 0x417678bc93242555ull, 0x3f86de772bad9681ull, 0x0c503260577d19f5ull, 0x233a9317aba238b8ull, 0xaee5afb30679246cull, 0xc735c10934c6aa3aull }}, {{ 0x8ea0b75dbf697557ull, 0x7b44b0a7b4c7e10cull, 0x7b21f7c36ae30394ull, 0x6049beecb4563730ull, 0xd4f8dcfe40bb6c39ull, 0xc8198a5c0fc2a64aull }}, {{ 0x924729a97a1e9565ull, 0xd0aee68d0fceca7dull, 0xcf53ada22cde23ccull, 0xc2e1753f0b5e27e4ull, 0x51b8a1ee87523a3dull, 0xd0ff67989d9a7eecull }}, {{ 0xb6c7a09ec531d5eeull, 0x26d501829e13e8e7ull, 0x1944c855c0ad6600ull, 0x9cce947671ad8ef0ull, 0x3136535149364669ull, 0x29fa0bf62808f53bull }}, {{ 0x23cc4633b3f25b4aull, 0x84520f1a2cc7190dull, 0xfcafd35986c5fc01ull, 0x2011cca070c79560ull, 0xec1f412cdc1ec020ull, 0xa3c4779d9059944full }}, {{ 0x65fabe05077790e6ull, 0x2b349705bfc6fa83ull, 0xdede417f43bbd80full, 0x40b1fe4467cbd5c9ull, 0x39388bc099338141ull, 0x65acac27a37fcb1full }}, {{ 0xfbcb6c324aaba8feull, 0xb00de6397dc5c921ull, 0xb4ae8ef8a5567097ull, 0x86f3eeac0df659e2ull, 0x3c357585fc030c8cull, 0xf8beb98c62fdef38ull }}, {{ 0xd5f239f6eab499efull, 0xe08afe3ee9b9db53ull, 0x0ed195b6756065ecull, 0x458752b88b9f82dbull, 0x5a16973bd81e7d7dull, 0xb7733f7bddeb5832ull }}, {{ 0x5b7643a52b0e0359ull, 0xc56dee7521429146ull, 0x942fd92095c3fb40ull, 0xb7493b35743b1c8eull, 0x84e1e8567130e6e4ull, 0x2a807ad6ab3171f7ull }}, {{ 0x929ea473ae8c217cull, 0xb64b50934c99acbfull, 0xc9de7b45d9a7d087ull, 0x28dc50168a4f1d91ull, 0x30d313606be904efull, 0xa904cc62afee73abull }}, {{ 0xba326c84d1794edbull, 0x1ef125c0fe00bf7bull, 0xe2b0d0ba808e254dull, 0x989b20e1671727b1ull, 0xe83ec1c4371a3157ull, 0x9a2ffbdadf5084afull }}, {{ 0x45f83d302ebd148bull, 0x356b7989ec077ad5ull, 0xdae82749058d7503ull, 0xf60f48ce06e78cf2ull, 0x127391aa2705ed6bull, 0x05dfd68cb9252edfull }}, {{ 0xbbb263e1d362cd6cull, 0x1632bf63384acc54ull, 0x8d1188da37869220ull, 0x9c98d80c450b817cull, 0xb883b0a5863b4637ull, 0x3abe617f3b73d4b6ull }}, {{ 0x54f7e6d241dc0637ull, 0xddfb79e032ebfb4full, 0x82af58862b41b540ull, 0x1df8707ab2730eddull, 0x3524e6773e50be2cull, 0x4b6fcef852864f23ull }}, {{ 0x51af043692983e24ull, 0xabd2c2c1fd37d119ull, 0x1ad9753db0911488ull, 0x2bb464caf87e94a7ull, 0x137100a86f276db9ull, 0xf25e15b3393f1760ull }}, {{ 0x30d62a21b9f26d68ull, 0xb63b9b93e42e2afdull, 0x0c7e9468e5aacd56ull, 0xb50befedb4f1ce87ull, 0xc26a0694578a493bull, 0x77acd9003c76e9c0ull }}, {{ 0xe85da5514378460full, 0x1e5413c6e9cdade3ull, 0x7cf1cc18f8ac0563ull, 0x12775f4911721146ull, 0x982441cb6b66dc55ull, 0xacc07a025ca52187ull }}, {{ 0x13a8752ca2b2bc92ull, 0x2f48c5c52208cae7ull, 0xe171f8f9b6b835dfull, 0xb8a9b8daae74acc0ull, 0xf16a91f232049b52ull, 0xbf84c4179e734f4bull }}, {{ 0xc49493be5afb5db7ull, 0xd8d7b9b35457ed06ull, 0xce73b9c123321ab7ull, 0x36a1388ad08ebf88ull, 0x6e29b375f42e113bull, 0x7b2fa8ec308118f7ull }}, {{ 0xadcdc56f8dd1a92aull, 0x786d41014b6f4243ull, 0x1085418b5ff50b2eull, 0x224c356c25937b58ull, 0x4da1029b89ccac50ull, 0xcfdc9939e50af9aaull }}, {{ 0xca09b65b8a309ba4ull, 0xb4448a0cf25896a4ull, 0xa5348f71bf926fd0ull, 0x56fa163977c2d170ull, 0x084a1a1361febb21ull, 0x1e9dfc42f26dc0a7ull }}, {{ 0xe4611f9365e6146aull, 0x0aad64817775e26full, 0x740d9a717bb85e27ull, 0x65c4de3ead9c2e66ull, 0x52e504c1d3f34f4dull, 0x322bda9d78498686ull }}, {{ 0xebcb3bc1fafccc22ull, 0x6ac5ed0eaa9ad85eull, 0x8888086ed533ad86ull, 0xf9b0ae72c819d000ull, 0x3cf22f9247811905ull, 0xf5b68a26b2df413full }}, {{ 0x35f05593cddff94full, 0x2bbb4292aa0c73b5ull, 0x555054545404c740ull, 0xc0e6d07bd1022005ull, 0x6175dbb6cb0afa3bull, 0x99216582fcb88c78ull }}, {{ 0x1b6357c60abfbd18ull, 0xb55099baa47c8514ull, 0x55234b4b482fc881ull, 0x890424d62a154035ull, 0xce9a9523ee6dc655ull, 0xfb4df71ddf357cb3ull }}, {{ 0x11e16dbc6b7d62ebull, 0x1526014a6cdd32c9ull, 0x5360f0f0d1ddd511ull, 0x5a29705da4d48215ull, 0x1209d3675049bf57ull, 0xd10ba72ab816df06ull }}, {{ 0xb2ce495c32e5dd30ull, 0xd37c0ce840a3fbdaull, 0x41c9696832aa52aaull, 0x859e63a8704d14d5ull, 0xb462420922e17969ull, 0x2a7487ab30e4b63cull }}, {{ 0xfc0edd99fcfaa3e4ull, 0x42d881128667d68aull, 0x91de1e11faa73aacull, 0x382fe4946302d054ull, 0x0bd6945b5ccebe1full, 0xa88d4cafe8ef1e5full }}, {{ 0xd894a803e1ca66ebull, 0x9c750ab9400e616dull, 0xb2ad2cb3ca884abaull, 0x31deedcbde1c234dull, 0x7661cb91a0136d38ull, 0x9584fedf19572fb6ull }}, {{ 0x75ce9026d1e80530ull, 0x1c926b3c808fce4aull, 0xfac3bf05e952eb4aull, 0xf2b549f6ad196108ull, 0x9fd1f3b040c24431ull, 0xd731f4b6fd67dd20ull }}, {{ 0x9a11a184331033e2ull, 0x1db8305d059e0ee8ull, 0xcba5763b1d3d30e5ull, 0x7b14e3a2c2fdca59ull, 0x3e3384e28796a9f3ull, 0x67f38f25e60ea346ull }}, {{ 0x04b04f29fea206d2ull, 0x2931e3a2382c9516ull, 0xf4769e4f2463e8f3ull, 0xced0e45b9de9e781ull, 0x6e0330d94be2a382ull, 0x0f83977afc9260beull }}, {{ 0x2ee317a3f2544432ull, 0x9bf2e45631bdd2dcull, 0x8ca22f176be7197full, 0x1428eb942b230b13ull, 0x4c1fe87cf6da631cull, 0x9b23eacdddb7c770ull }}, {{ 0xd4deec67774aa9f0ull, 0x177ceb5df16a3c99ull, 0x7e55d6ea3706fefcull, 0xc99933c9af5e6ec3ull, 0xf93f14e1a487df18ull, 0x0f672c0aa92dca62ull }}, {{ 0x50b53c0aa8eaa35dull, 0xeae131ab6e265e02ull, 0xef5a65262645f5d8ull, 0xdffc05e0d9b053a2ull, 0xbc76d0d06d4eb6f7ull, 0x9a07b86a9bc9e7ddull }}, {{ 0x2714586a992a61a1ull, 0x2ccbf0b24d7fac17ull, 0x5987f37d7ebb9a79ull, 0xbfd83ac880e3445dull, 0x5ca42824451325aeull, 0x044d342a15e30ea9ull }}, {{ 0x86cb7429fba7d047ull, 0xbff766f706fcb8e7ull, 0x7f4f82e6f35408bbull, 0x7e724bd508e0aba5ull, 0x9e69916ab2bf78d3ull, 0x2b0409a4dade929dull }}, {{ 0x43f289a3d48e22c6ull, 0x7faa05a645df390bull, 0xf91b1d0581485755ull, 0xf076f65258c6b476ull, 0x301fae2afb7ab842ull, 0xae2860708cb1ba28ull }}, {{ 0xa77960664d8d5bb8ull, 0xfca4387ebab83a70ull, 0xbb0f22370cd36956ull, 0x64a59f3777c30ca5ull, 0xe13ccdadd2cb329dull, 0xcd93c4657ef14591ull }}, {{ 0x8abdc3ff07859531ull, 0xde6a34f34b324866ull, 0x4e97562680421d65ull, 0xee78382aad9e7e79ull, 0xcc6008ca3beffa25ull, 0x07c5abf6f56cb7b2ull }}, {{ 0x6b69a7f64b37d3e6ull, 0xb0261180eff6d401ull, 0x11e95d81029525faull, 0x50b231aac830f0bdull, 0xfbc057e6575fc57bull, 0x4db8b7a5963f2cfbull }}, {{ 0x32208f9ef02e46f8ull, 0xe17caf095fa4480eull, 0xb31da70a19d37bcaull, 0x26f5f0abd1e96762ull, 0xd5836eff69bdb6d1ull, 0x09372c77de77c1d7ull }}, {{ 0xf5459c3561cec5b4ull, 0xceded65dbc6ad08dull, 0xff2886650242d5ecull, 0x859b66b6331e09daull, 0x572255fa2169242bull, 0x5c27bcaeb0ad926eull }}, {{ 0x94b81a15d213b908ull, 0x14b45fa95c2c258bull, 0xf7953ff2169c5b40ull, 0x3812031dff2c628dull, 0x67575bc54e1b69b3ull, 0x998d5ed2e6c7b84full }}, {{ 0xcf3104da34c53a4full, 0xcf0bbc9d99b97773ull, 0xabd47f74e21b9080ull, 0x30b41f2bf7bbd98bull, 0x096995b50d122100ull, 0xff85b43d03cd331aull }}, {{ 0x17ea30860fb44713ull, 0x16755e28013eaa86ull, 0xb64cfa90d513a508ull, 0xe70937b7ad567f74ull, 0x5e1fd91282b54a01ull, 0xfb390a622603ff04ull }}, {{ 0xef25e53c9d0ac6beull, 0xe095ad900c72a93cull, 0x1f01c9a852c47250ull, 0x065c2d2cc560fa8full, 0xad3e7ab91b14e413ull, 0xd03a67d57c27f62bull }}, {{ 0x577af45e226bc369ull, 0xc5d8c7a07c7a9c61ull, 0x3611e0933bac7728ull, 0x3f99c3bfb5c9c997ull, 0xc470cb3b0ed0e8beull, 0x22480e56d98f9db4ull }}, {{ 0x6acd8bad5835a216ull, 0xba77cc44dcca1bcdull, 0x1cb2c5c054bca797ull, 0x7c01a57d19e1dfe8ull, 0xac67f04e9429176eull, 0x56d08f647f9c290full }}, {{ 0x2c0774c5721854dfull, 0x48adfab09fe51606ull, 0x1efbb9834f5e8bedull, 0xd81076e302d2bf11ull, 0xbc0f6311c99aea50ull, 0x642599ecfc199a9cull }}, {{ 0xb84a8fb674f350b3ull, 0xd6cbcae63ef2dc3dull, 0x35d53f2119b17744ull, 0x70a4a4de1c3b76abull, 0x5899deb1e00d2728ull, 0xe9780341d9000a1full }}, {{ 0x32e99d2091812701ull, 0x63f5ecfe757c9a69ull, 0x1a54774b00eea8b0ull, 0x666e70ad1a52a2b0ull, 0x7602b2f2c0838794ull, 0x1eb020927a006539ull }}, {{ 0xfd202345af0b8608ull, 0xe79b41f096de081bull, 0x074ca8ee095296e3ull, 0x005066c3073a5ae1ull, 0x9c1afd7b85234bccull, 0x32e145b8c403f43eull }}, {{ 0xe34160b8d6733c4full, 0x0c109365e4ac5117ull, 0x48fe994c5d39e4e7ull, 0x0324039e48478ccaull, 0x190de6d33360f5f8ull, 0xfcccb937a8278a72ull }}, {{ 0xe08dc73860805b11ull, 0x78a5c1faeebb2aeeull, 0xd9f1fcfba442f106ull, 0x1f68242ed2cb7fe6ull, 0xfa8b044001c99bb0ull, 0xdfff3c2c918b6874ull }}, {{ 0xc589c833c5038eadull, 0xb67993cd534fad54ull, 0x8373e1d46a9d6a40ull, 0x3a1169d43bf2ff04ull, 0xc96e2a8011e014e1ull, 0xbff859bdaf721491ull }}, {{ 0xb761d205b22392bdull, 0x20bfc605411cc54full, 0x2286d24c2a262687ull, 0x44ae224a577df62dull, 0xde4da900b2c0d0ccull, 0x7fb38168da74cdb1ull }}, {{ 0x29d23438f563bb63ull, 0x477dbc348b1fb51dull, 0x594436f9a57d8147ull, 0xaecd56e76aeb9dc3ull, 0xaf089a06fb8827faull, 0xfd030e18889008f2ull }}, {{ 0xa2360a3995e551daull, 0xcae95a0d6f3d1323ull, 0x7caa25c076e70cc8ull, 0xd405650a2d3429a1ull, 0xd6560445d3518fcaull, 0xe21e8cf555a0597aull }}, {{ 0x561c663fdaf5327full, 0xed1d84865862bf64ull, 0xdea57984a5067fd7ull, 0x4835f265c409a04eull, 0x5f5c2aba412f9decull, 0xd531819558437eccull }}, {{ 0x5d1bfe7e8d93f8f7ull, 0x43272d3f73db79ebull, 0xb276bf2e7240fe6full, 0xd21b77f9a8604314ull, 0xb999ab468bdc2b3aull, 0x53ef0fd572a2f3fbull }}, {{ 0xa317f0f187c7b9a2ull, 0x9f87c47a8692c331ull, 0xf8a377d07689f058ull, 0x3512afc093c29eceull, 0x4000b0c17699b04cull, 0x47569e567a5d87d5ull }}, {{ 0x5eef696f4dcd4053ull, 0x3b4dacc941bb9ff0ull, 0xb662ae24a1636376ull, 0x12badd85c59a3415ull, 0x8006e78ea200e2faull, 0xc9622f60c7a74e54ull }}, {{ 0xb55a1e590a04833aull, 0x5108bfdc91543f63ull, 0x1fdacd6e4de1e29eull, 0xbb4ca739b80608d9ull, 0x00450b925408ddc4ull, 0xddd5d9c7cc890f4dull }}, {{ 0x15852f7a642d2047ull, 0x2a577e9dad4a79e5ull, 0x3e8c064f0ad2da2full, 0x50fe8841303c587bull, 0x02b273b74858a9afull, 0xaa5a81cdfd5a9902ull }}, {{ 0xd733dac7e9c342c4ull, 0xa76af228c4e8c2f2ull, 0x71783f166c3c85d7ull, 0x29f1528be25b74d0ull, 0x1af88528d376a0d9ull, 0xa789120be589fa14ull }}, {{ 0x68068bcf21a09babull, 0x8a2d7597b1179d7cull, 0x6eb276e03a5d3a6cull, 0xa36d3976d7929024ull, 0x0db5339842a2487bull, 0x8b5ab476f763c4c9ull }}, {{ 0x10417617504614afull, 0x65c697eceaec26dcull, 0x52f8a4c247a4483dull, 0x62443ea46bb9a16cull, 0x891403f29a56d4d4ull, 0x718b0ca5a9e5afdaull }}, {{ 0xa28e9ce922bcced4ull, 0xf9c1ef412d398498ull, 0x3db66f96cc6ad265ull, 0xd6aa726c35404e3bull, 0x5ac8277a0764504bull, 0x6f6e7e78a2f8de89ull }}, {{ 0x5992211b5b601449ull, 0xc193588bc43f2df6ull, 0x69205be3fc2c37fbull, 0x62a8783a14830e50ull, 0x8bd18ac449eb22f6ull, 0x5a50f0b65db8b15dull }}, {{ 0x7fb54b1191c0cad7ull, 0x8fc17575aa77cb9full, 0x1b4396e7d9ba2fd5ull, 0xda94b244cd1e8f24ull, 0x762f6baae32f5d9full, 0x8729671fa936eda7ull }}, {{ 0xfd14eeafb187ec67ull, 0x9d8e9698a8adf43aull, 0x10a3e50e8145de57ull, 0x89cef6b003319769ull, 0x9dda34acdfd9a83eull, 0x479e073c9c25488aull }}, {{ 0xe2d152dcef4f3c05ull, 0x2791e1f696cb8a4dull, 0xa666f2910cbaaf6cull, 0x6215a2e01fefea1aull, 0x2a860ec0be809271ull, 0xcc2c485e1974d56aull }}, {{ 0xdc2d3ca15918582dull, 0x8bb2d3a1e3f3670aull, 0x800579aa7f4ada39ull, 0xd4d85cc13f5f250aull, 0xa93c93877105b86dull, 0xf9bad3acfe905625ull }}, {{ 0x99c45e4d7af371c3ull, 0x74fc4452e782066cull, 0x0036c0a8f8ec863full, 0x50739f8c79b77269ull, 0x9c5dc34a6a39344aull, 0xc14c44c1f1a35d78ull }}, {{ 0x01abaf06cd8271a2ull, 0x91daab3d0b14403eull, 0x02238699b93d3e7aull, 0x24843b7cc12a781aull, 0x1ba9a0e8263c0ae7ull, 0x8cfaaf937061a6b6ull }}, {{ 0x10b4d64407187051ull, 0xb28ab0626eca826cull, 0x156342013c6470c9ull, 0x6d2a52df8ba8b104ull, 0x14a049117e586d07ull, 0x81cadbc263d0831dull }}, {{ 0xa7105ea846f4632cull, 0xf96ae3d853e91838ull, 0xd5e0940c5bec67e0ull, 0x43a73cbb7496ea28ull, 0xce42daaeef74424aull, 0x11ec9597e6251f22ull }}, {{ 0x86a3b292c58bdfbaull, 0xbe2ce673471af236ull, 0x5ac5c87b973c0ec9ull, 0xa4885f528de52598ull, 0x0e9c8ad55a8a96e6ull, 0xb33dd7eefd73375cull }}, {{ 0x4264f9bbb776bd45ull, 0x6dc10080c70d7621ull, 0x8bb9d4d3e85893e1ull, 0x6d53b9398af377f3ull, 0x921d6c558969e502ull, 0x006a6f55e6802998ull }}, {{ 0x97f1c1552aa364b3ull, 0x498a0507c6869d4cull, 0x754250471375c6ceull, 0x45453c3f6d82af83ull, 0xb5263b575e22f218ull, 0x0428595b01019ff5ull }}, {{ 0xef718d53aa61ef01ull, 0xdf64324dc14224fdull, 0x949722c6c299c40eull, 0xb4b45a7a471adb22ull, 0x137e5169ad5d74f2ull, 0x29937d8e0a103f99ull }}, {{ 0x5a6f8544a7d3560aull, 0xb9e9f7098c9571ebull, 0xcde75bc39a01a894ull, 0x0f0b88c6c70c8f59ull, 0xc2ef2e20c5a6917bull, 0x9fc2e78c64a27bfaull }}, {{ 0x885b34ae8e415c60ull, 0x4323a65f7dd67331ull, 0x0b0995a4041095cfull, 0x967357c3c67d9982ull, 0x9d57cd47b881aeceull, 0x3d9d0b7bee58d7cbull }}, {{ 0x53900ed18e8d9bc4ull, 0x9f647fbaea607fefull, 0x6e5fd86828a5da18ull, 0xe0816da5c0e7ff14ull, 0x256e04cd3510d411ull, 0x682272d74f786df4ull }}, {{ 0x43a0942f918815adull, 0x39ecfd4d27c4ff59ull, 0x4fbe7411967a84f6ull, 0xc50e4879890ff6ccull, 0x764c300412a848b2ull, 0x11587c691ab44b89ull }}, {{ 0xa445c9dbaf50d8bfull, 0x4341e5038db1f97cull, 0x1d7088afe0c9319eull, 0xb28ed4bf5a9fa3fbull, 0x9ef9e028ba92d6fbull, 0xad74dc1b0b0af35eull }}, {{ 0x6ab9e294d9287779ull, 0xa092f22388f3bedeull, 0x266556dec7dbf02eull, 0xf9944f798a3c67cfull, 0x35c2c19749bc65d4ull, 0xc690990e6e6d81b2ull }}, {{ 0x2b42d9d07b94aabeull, 0x45bd7563598574b0ull, 0x7ff564b3ce9761d2ull, 0xbfcb1abf665c0e17ull, 0x199b8fe8e15bfa51ull, 0xc1a5fa90504710f6ull }}, {{ 0xb09c8224d3ceab6eull, 0xb96695e17f368ee1ull, 0xff95ef0611e9d236ull, 0x7def0b79ff988ceaull, 0x00139f18cd97c731ull, 0x907bc9a322c6a99dull }}, {{ 0xe61d15704612b247ull, 0x3e01dacef82194d0ull, 0xfbdb563cb3223623ull, 0xeb5672c3fbf5812dull, 0x00c436f807edc7eeull, 0xa4d5e05f5bc2a022ull }}, {{ 0xfd22d662bcbaf6c7ull, 0x6c128c15b14fd028ull, 0xd6915e5eff561d60ull, 0x31607ba7d7970bcbull, 0x07aa25b04f49cf55ull, 0x705ac3b9959a4154ull }}, {{ 0xe35c5fdb5f4da3c4ull, 0x38b978d8ed1e2199ull, 0x61adafb5f95d25c4ull, 0xedc4d48e6be675f6ull, 0x4ca578e318e21953ull, 0x638ba53fd8068d48ull }}, {{ 0xe19bbe91b90865acull, 0x373eb879432d5002ull, 0xd0c8dd1bbda379aaull, 0x49b04d9037009b9full, 0xfe76b8def8d4fd47ull, 0xe374747e704184d2ull }}, {{ 0xd01571b13a53f8b5ull, 0x287334bc9fc5201cull, 0x27d8a3156862c0a6ull, 0xe0e307a22606143eull, 0xf0a338b5b851e4c8ull, 0xe28c8cf0628f303dull }}, {{ 0x20d670ec4747b70dull, 0x94800f5e3db34120ull, 0x8e765ed613db867dull, 0xc8de4c557c3cca6dull, 0x666037193332efd8ull, 0xd97d8163d997e26bull }}, {{ 0x4860693ac8cd2684ull, 0xcd0099ae69008b41ull, 0x909fb45cc69340e7ull, 0xd8aefb56da5fe847ull, 0xffc226fbfffd5e77ull, 0x7ee70de67feed831ull }}, {{ 0xd3c41c4bd8038129ull, 0x020600d01a05708cull, 0xa63d0b9fc1c0890eull, 0x76d5d16487bf12cbull, 0xfd9585d7ffe5b0aeull, 0xf5068b00ff5471f3ull }}, {{ 0x45a91af670230b96ull, 0x143c082104366580ull, 0x7e62743d91855a8cull, 0xa45a2ded4d76bbf4ull, 0xe7d73a6ffef8e6d0ull, 0x92416e09f94c7387ull }}, {{ 0xb89b0da0615e73daull, 0xca58514a2a1ff702ull, 0xefd88a67af358978ull, 0x6b85cb4506a3578cull, 0x0e68485ff5b90426ull, 0xb68e4c63bcfc834full }}, {{ 0x360e8843cdb08680ull, 0xe7732ce5a53fa61bull, 0x5e75680cd8175eb7ull, 0x3339f0b242616b81ull, 0x9012d3bf993a2980ull, 0x218efbe561dd2116ull }}, {{ 0x1c9152a608e540feull, 0x0a7fc0f8747c7d10ull, 0xb096108070e9b32full, 0x004366f697ce330dull, 0xa0bc457bfc459f02ull, 0x4f95d6f5d2a34ae1ull }}, {{ 0x1dad3a7c58f489e9ull, 0x68fd89b48cdce2a1ull, 0xe5dca5046920ffd6ull, 0x02a205a1ee0dfe88ull, 0x475ab6d7dab83614ull, 0x1bda659a3a60ecd0ull }}, {{ 0x28c448db798d631full, 0x19e7610d80a0da4bull, 0xfa9e722c1b49fe60ull, 0x1a5438534c8bf158ull, 0xc98b246e8b321cc8ull, 0x1687f80647c94022ull }}, {{ 0x97aad892bf85df34ull, 0x0309ca87064886efull, 0xca3075b910e3efc1ull, 0x074a3340fd776d79ull, 0xdf6f6c516ff51fd1ull, 0xe14fb03ecddc815bull }}, {{ 0xecac75bb7b3ab80aull, 0x1e61e9463ed5455bull, 0xe5e4993aa8e75d8aull, 0x48e60089e6aa46c1ull, 0xba5a3b2e5f933e2aull, 0xcd1ce2740a9d0d96ull }}, {{ 0x3ebc9952d04b3066ull, 0x2fd31cbe7454b597ull, 0xfaedfc4a9909a765ull, 0xd8fc056302a6c392ull, 0x47864fcfbbc06da6ull, 0x0320d8886a2287e3ull }}, {{ 0x735dfd3c22efe3f7ull, 0xde3f1f708b4f17e8ull, 0xcd4bdae9fa6089f3ull, 0x79d835de1a83a3bdull, 0xcb3f1e1d55844884ull, 0x1f48755425594ee0ull }}, {{ 0x81abe4595d5ee7a8ull, 0xae773a657116ef14ull, 0x04f68d23c7c56386ull, 0xc2721aad0924656aull, 0xf0772d25572ad52cull, 0x38d49549757d14c7ull }}, {{ 0x10b6eb7da5b50c8eull, 0xd0a847f66ae556cdull, 0x31a18365cdb5e342ull, 0x98750ac25b6bf624ull, 0x64a7c37567ac53bfull, 0x384dd4de96e2cfcfull }}, {{ 0xa72532e879127d8cull, 0x2692cfa02cf56402ull, 0xf04f21fa091ae09cull, 0xf4926b9792379d69ull, 0xee8da2960cbb457bull, 0x330a50b1e4dc1e19ull }}, {{ 0x8773fd14bab8e776ull, 0x81bc1c41c195e81aull, 0x631753c45b0cc619ull, 0x8db833ebb62c2623ull, 0x518859dc7f50b6d7ull, 0xfe6726f2f0992d03ull }}, {{ 0x4a87e2cf4b390a9eull, 0x11591a918fdb1109ull, 0xdee945ab8e7fbcffull, 0x893207351db97d61ull, 0x2f53829cf927246bull, 0xf007857d65fbc221ull }}, {{ 0xe94edc18f03a6a2cull, 0xad7b09af9e8eaa5cull, 0xb51cb8b390fd61f6ull, 0x5bf44813293ee5d2ull, 0xd9431a21bb876c33ull, 0x604b36e5fbd5954bull }}, {{ 0x1d1498f9624825b9ull, 0xc6ce60dc3192a7a1ull, 0x131f3703a9e5d3a2ull, 0x978ad0bf9c74fa3bull, 0x7c9f0551534a3a01ull, 0xc2f024fbd657d4f6ull }}, {{ 0x22cdf9bdd6d17939ull, 0xc40fc899efba8c4bull, 0xbf382624a2fa445bull, 0xeb6c277c1c91c64eull, 0xde36352d40e6440full, 0x9d6171d65f6e51a0ull }}, {{ 0x5c0bc16a642ebc37ull, 0xa89dd6035d497aefull, 0x78317d6e5dc6ab95ull, 0x32398ad91db1bf13ull, 0xae1e13c488fea89full, 0x25ce725fba4f3048ull }}, {{ 0x98758e27e9d35a29ull, 0x962a5c21a4decd59ull, 0xb1eee64fa9c2b3d8ull, 0xf63f6c7b28f176c2ull, 0xcd2cc5ad59f29637ull, 0x7a1077bd4717e2d6ull }}, {{ 0xf4978d8f22418599ull, 0xdda7995070b4057full, 0xf354ff1ca19b0675ull, 0x9e7a3ccf996ea39aull, 0x03bfb8c58379de2full, 0xc4a4ad64c6eedc64ull }}, {{ 0x8deb8797568f37f7ull, 0xa88bfd24670836ffull, 0x8151f71e500e409aull, 0x30c6601bfe52640dull, 0x257d37b722c2addcull, 0xae6ec5efc5549be8ull }}, {{ 0x8b334be961982fa7ull, 0x9577e36c065225fbull, 0x0d33a72f208e860aull, 0xe7bfc117ef37e887ull, 0x76e42d275b9aca99ull, 0xd053bb5db54e1711ull }}, {{ 0x7000f71dcff1dc82ull, 0xd6aee2383f357bd3ull, 0x840487d745913c69ull, 0x0d7d8aef582f1546ull, 0xa4e9c389940bea03ull, 0x234551a9150ce6aeull }}, {{ 0x6009a72a1f729d16ull, 0x62d4d6327816d642ull, 0x282d4e68b7ac5c22ull, 0x86e76d5971d6d4c1ull, 0x7121a35fc877241eull, 0x60b5309ad28102d2ull }}, {{ 0xc06087a53a7a22deull, 0xdc505df8b0e45e97ull, 0x91c510172cbb9957ull, 0x450a457e72644f8bull, 0x6b5061bdd4a76931ull, 0xc713e60c390a1c38ull }}, {{ 0x83c54c7448c55ca9ull, 0x9b23abb6e8ebb1edull, 0xb1b2a0e7bf53fd6eull, 0xb266b6f077eb1b73ull, 0x3123d16a4e8a1becull, 0xc6c6fc7a3a651a34ull }}, {{ 0x25b4fc8ad7b59e99ull, 0x0f64b5251934f347ull, 0xf0fa490d7947e652ull, 0xf8032564af2f1284ull, 0xeb662e271165173eull, 0xc3c5dcc647f30609ull }}, {{ 0x7911dd6c6d1831fbull, 0x99ef1372fc1180c7ull, 0x69c6da86bcceff34ull, 0xb01f75eed7d6b931ull, 0x31fdcd86adf2e875ull, 0xa5ba9fbecf7e3c63ull }}, {{ 0xbab2a63c42f1f3d3ull, 0x0356c27dd8af07caull, 0x21c489436015f80eull, 0xe13a9b546e633beeull, 0xf3ea0742cb7d1498ull, 0x794a3d741aee5bdfull }}, {{ 0x4afa7e5a9d73863eull, 0x216398ea76d64debull, 0x51ad5ca1c0dbb08cull, 0xcc4a114c4fe0574dull, 0x8724489bf2e2cdf8ull, 0xbce666890d4f96bfull }}, {{ 0xedc8ef8a26833e69ull, 0x4de3f928a45f0b30ull, 0x30c59e518894e579ull, 0xfae4acfb1ec36905ull, 0x476ad6177cdc0bb7ull, 0x6100015a851be37bull }}, {{ 0x49d95b6581207016ull, 0x0ae7bb966bb66fe9ull, 0xe7b82f2f55d0f6bdull, 0xcceec1cf33a21a33ull, 0xca2c5ceae098752full, 0xca000d893316e2d0ull }}, {{ 0xe27d91f70b4460dbull, 0x6d0d53e035205f1cull, 0x0d31d7d95a29a362ull, 0x0153921804550607ull, 0xe5bba12cc5f493deull, 0xe400875bfee4dc27ull }}, {{ 0xd8e7b3a670abc88full, 0x428546c21343b720ull, 0x83f26e7d85a061d8ull, 0x0d43b4f02b523c46ull, 0xf9544bbfbb8dc6acull, 0xe8054997f4f0998eull }}, {{ 0x790d048066b5d597ull, 0x9934c394c0a52748ull, 0x277850e73843d272ull, 0x84a51161b1365ac1ull, 0xbd4af57d5389c2b8ull, 0x1034dfef9165ff95ull }}, {{ 0xba822d04031a57e9ull, 0xfc0fa3cf867388d4ull, 0x8ab3290832a63879ull, 0x2e72add0ec1f8b8bull, 0x64ed96e543619b35ull, 0xa210bf5badfbfbd9ull }}, {{ 0x4915c2281f076f15ull, 0xd89c661b4083584full, 0x6aff9a51fa7e34c3ull, 0xd07aca29393b7373ull, 0xf147e4f4a1d01013ull, 0x54a77994cbd7d67dull }}, {{ 0xdad99591364a56d7ull, 0x761bfd1085217318ull, 0x2dfc0733c8ee0fa6ull, 0x24cbe59c3c528282ull, 0x6ccef18e5220a0c6ull, 0x4e8abfcff66e60ebull }}, {{ 0x8c7fd7ac1ee76464ull, 0x9d17e2a5334e7ef8ull, 0xcbd84805d94c9c80ull, 0x6ff6f81a5b391915ull, 0x40156f8f354647bdull, 0x116b7e1fa04fc932ull }}, {{ 0x7cfe6cb93509ebe7ull, 0x22eeda740110f5b5ull, 0xf672d03a7cfe1d06ull, 0x5fa5b107903afad9ull, 0x80d65b9814becd66ull, 0xae32ed3c431ddbf6ull }}, {{ 0xe1f03f3c12633708ull, 0x5d5488880aa99916ull, 0xa07c2248e1ed223dull, 0xbc78ea4ba24dcc83ull, 0x085f93f0cf7405ffull, 0xcdfd445a9f2a97a1ull }}, {{ 0xd3627858b7e0264full, 0xa54d55506a9ffae4ull, 0x44d956d8d3435665ull, 0x5cb926f45709fd24ull, 0x53bbc7681a883bfdull, 0x0be4ab8a37a9ec4aull }}, {{ 0x41d8b3772ec17f17ull, 0x750555242a3fccf0ull, 0xb07d647840a15ff8ull, 0x9f3b858b6663e36aull, 0x4555ca11095257e5ull, 0x76eeb3662ca33ae7ull }}, {{ 0x927702a7d38ef6e3ull, 0x92355369a67e0162ull, 0xe4e5ecb2864dbfb4ull, 0x38533771ffe6e22aull, 0xb559e4aa5d376ef8ull, 0xa55301fdbe604d08ull }}, {{ 0xb8a61a8e4395a4e0ull, 0xb615422080ec0dd9ull, 0xf0fb3ef93f097d0dull, 0x33402a73ff04d5acull, 0x1582eea7a42a55b2ull, 0x753e13e96fc30257ull }}, {{ 0x367d098ea3d870c0ull, 0x1cd4954509388a81ull, 0x69d075bc765ee289ull, 0x0081a887f63058c1ull, 0xd71d528c69a758f6ull, 0x946cc71e5d9e1766ull }}, {{ 0x20e25f9266746782ull, 0x204dd4b25c35690cull, 0x2224995c9fb4d95bull, 0x0510954f9de3778eull, 0x6725397c2089799cull, 0xcc3fc72fa82cea04ull }}, {{ 0x48d7bbb8008c0b13ull, 0x430a4ef79a161a79ull, 0x556dfd9e3d107d8full, 0x32a5d51c2ae2ab8dull, 0x07743ed9455ec018ull, 0xfa7dc7dc91c1242cull }}, {{ 0xd86d553005786ec3ull, 0x9e6715ac04dd08bcull, 0x564be82e62a4e798ull, 0xfa7a5319acdab385ull, 0x4a8a747cb5b380f1ull, 0xc8e9ce9db18b69b8ull }}, {{ 0x744553e036b4539eull, 0x3006d8b830a25760ull, 0x5ef711cfda710bf6ull, 0xc8c73f00c08b0335ull, 0xe9688cdf19030973ull, 0xd9221228ef722132ull }}, {{ 0x8ab546c2230b4427ull, 0xe0447731e65769c4ull, 0xb5a6b21e886a779dull, 0xd7c87607856e2015ull, 0x1e1580b6fa1e5e85ull, 0x7b54b5995a754bfdull }}, {{ 0x6b14c3955e70a988ull, 0xc2aca7f2ff6a21adull, 0x1882f5315428ac2aull, 0x6dd49c4b364d40d9ull, 0x2cd70725c52fb13aull, 0xd14f17fd8894f7e3ull }}, {{ 0x2ecfa3d5b0669f4cull, 0x9abe8f7dfa2550c6ull, 0xf51d93ed4996b9abull, 0x4a4e1af01f04887aull, 0xc0664779b3dcec48ull, 0x2d16efe755d1aedfull }}, {{ 0xd41c6658e40238faull, 0x0b719aebc57527bdull, 0x9327c744dfe340b4ull, 0xe70d0d61362d54cdull, 0x83fecac106a13ad2ull, 0xc2e55f095a30d4bdull }}, {{ 0x491bff78e81639c5ull, 0x72700d35b6938d6aull, 0xbf8dc8b0bee08708ull, 0x068285cc1dc55007ull, 0x27f3eb8a424c4c3dull, 0x9cf5b65d85e84f67ull }}, {{ 0xdb17fab910de41b6ull, 0x7860841921c38626ull, 0x7b89d6e774c54654ull, 0x411939f929b5204dull, 0x8f87336696fafa62ull, 0x21991fa73b131a07ull }}, {{ 0x8eefcb3aa8ae9120ull, 0xb3c528fb51a33d84ull, 0xd362650a8fb4bf4cull, 0x8afc43bba1134306ull, 0x9b480201e5cdc7d6ull, 0x4ffb3c884ebf044bull }}, {{ 0x955df04a96d1ab3cull, 0x05b399d13060672dull, 0x41d7f2699d0f78ffull, 0x6ddaa5544ac09e44ull, 0x10d01412fa09ce61ull, 0x1fd05d5313762af4ull }}, {{ 0xd5ab62e9e430b055ull, 0x3904022be3c407c7ull, 0x926f7820229ab9f6ull, 0x4a8a754aeb862eaaull, 0xa820c8bdc4620fceull, 0x3e23a53ec29dad88ull }}, {{ 0x58b1dd22e9e6e350ull, 0x3a2815b6e5a84dceull, 0xb85ab1415a0b439eull, 0xe96894ed333dd2a9ull, 0x9147d769abd49e0eull, 0x6d6474739a28c756ull }}, {{ 0x76f2a35d2304e122ull, 0x4590d924f8930a0full, 0x338aec8d8470a42eull, 0x1e15d144006a3aa1ull, 0xacce6a20b64e2c95ull, 0x45ec8c840597c961ull }}, {{ 0xa57a61a35e30cb59ull, 0xb7a87b71b5be649aull, 0x036d3d872c6669ceull, 0x2cda2ca804264a4cull, 0xc01025471f0dbdd3ull, 0xbb3d7d2837edddd0ull }}, {{ 0x76c7d061ade7f176ull, 0x2c94d271196fee0aull, 0x22446747bc002213ull, 0xc085be90297ee6f8ull, 0x80a174c736896a3full, 0x5066e3922f4aaa27ull }}, {{ 0xa3ce23d0cb0f6e9dull, 0xbdd0386afe5f4c68ull, 0x56ac08cd580154bfull, 0x853971a19ef505b1ull, 0x064e8fc8215e267dull, 0x2404e3b5d8eaa58bull }}, {{ 0x660d6627ee9a521full, 0x6a22342defb8fc16ull, 0x62b85805700d4f7dull, 0x343e7050359238edull, 0x3f119dd14dad80e7ull, 0x6830e51a792a776eull }}, {{ 0xfc85fd8f52073535ull, 0x255609cb5d39d8dfull, 0xdb33703660851ae6ull, 0x0a70632217b63945ull, 0x76b02a2d08c70908ull, 0x11e8f308bba8aa4eull }}, {{ 0xdd3be79934481416ull, 0x755c61f1a44278bfull, 0x9002621fc5330cfdull, 0x6863df54ed1e3cbaull, 0xa2e1a5c257c65a50ull, 0xb3197e575496a710ull }}, {{ 0xa4570bfc0ad0c8dfull, 0x959bd3706a98b77eull, 0xa017d53db3fe81e6ull, 0x13e6b951432e5f49ull, 0x5cd079976dbf8724ull, 0xfefeef694de286a6ull }}, {{ 0x6b6677d86c27d8bbull, 0xd816426429f72af2ull, 0x40ee546907f11301ull, 0xc7033d2c9fcfb8e0ull, 0xa024bfea497b4768ull, 0xf5f55a1d0ad9427full }}, {{ 0x3200ae74398e774bull, 0x70de97e9a3a7ad78ull, 0x894f4c1a4f6abe12ull, 0xc62063be3e1d38c2ull, 0x416f7f26ded0ca17ull, 0x9b9585226c7c98fcull }}, {{ 0xf406d08a3f90a8eaull, 0x68b1ef20648cc6b1ull, 0x5d18f9071a2b6cb8ull, 0xbd43e56e6d243799ull, 0x8e5af784b427e4edull, 0x13d733583cddf9daull }}, {{ 0x884425667ba69926ull, 0x16f35743ed7fc2f3ull, 0xa2f9ba4705b23f34ull, 0x64a6f650436a2bfdull, 0x8f8dab2f098ef149ull, 0xc668017260abc289ull }}, {{ 0x52a97600d481fb7cull, 0xe58168a746fd9d83ull, 0x5dc146c638f67808ull, 0xee859f22a225b7e8ull, 0x9b88afd65f956cddull, 0xc0100e77c6b5995full }}, {{ 0x3a9e9c084d13d2d7ull, 0xf70e1688c5e82721ull, 0xa98cc3be39a0b058ull, 0x5138375a55792f13ull, 0x1356de5fbbd640abull, 0x80a090adc317fdbcull }}, {{ 0x4a32185302c63c62ull, 0xa68ce157bb11874cull, 0x9f7fa56e4046e379ull, 0x2c32298756bbd6c4ull, 0xc164afbd565e86b1ull, 0x0645a6c99eefe958ull }}, {{ 0xe5f4f33e1bbe5bd6ull, 0x8180cd6d4eaf48faull, 0x3afc764e82c4e2c0ull, 0xb9f59f49635663aeull, 0x8deedd655fb142ebull, 0x3eb883e0355f1d77ull }}, {{ 0xfb91806d156f965eull, 0x0f08064512d8d9ccull, 0x4ddc9f111bb0db85ull, 0x439838dde15fe4ceull, 0x8b54a5f5bcec9d35ull, 0x733526c215b726abull }}, {{ 0xd3af0442d65bdfadull, 0x96503eb2bc788201ull, 0x0a9e36ab14e89332ull, 0xa3f238aacdbef00full, 0x714e7b99613e2414ull, 0x80138394d92782b3ull }}, {{ 0x44d62a9c5f96bcc1ull, 0xdf2272fb5cb51412ull, 0x6a2e22aed115bff9ull, 0x677636ac09756096ull, 0x6d10d3fdcc6d68ceull, 0x00c323d07b8b1b02ull }}, {{ 0xb05daa1bbbe35f88ull, 0xb7587dd19f12c8b6ull, 0x25cd5ad42ad97fc2ull, 0x0a9e22b85e95c5e0ull, 0x42a847e9fc461810ull, 0x079f6624d36f0e18ull }}, {{ 0xe3a8a51556e1bb4dull, 0x2974ea3036bbd722ull, 0x7a058c49ac7efd9bull, 0x6a2d5b33b1d9bac1ull, 0x9a92cf23dabcf0a0ull, 0x4c39fd7042568cf2ull }}, {{ 0xe49672d564d15105ull, 0x9e9125e22356675cull, 0xc4377ae0bcf5e80full, 0x25c59004f2814b8eull, 0x09bc17668b616644ull, 0xfa43e6629761817aull }}, {{ 0xede07c55f02d2a33ull, 0x31ab7ad5616009a0ull, 0xaa2accc7619b109cull, 0x79b7a031790cf393ull, 0x6158ea0171cdfea9ull, 0xc6a6ffd9e9cf0ec4ull }}, {{ 0x4ac4db5b61c3a601ull, 0xf0b2cc55cdc06049ull, 0xa5abffc9d00ea619ull, 0xc12c41eeba8183c4ull, 0xcd79240e720bf29eull, 0xc285fe83221693abull }}, {{ 0xebb09191d1a47c0eull, 0x66fbfb5a0983c2dcull, 0x78b7fde220927d03ull, 0x8bba9353490f25aeull, 0x06bb689074777a33ull, 0x993bf11f54e1c4b6ull }}, {{ 0x34e5afb2306cd88dull, 0x05d7d1845f259ca1ull, 0xb72fead545b8e222ull, 0x7549c140da9778d0ull, 0x435215a48caac603ull, 0xfc576b3950d1af1cull }}, {{ 0x10f8dcf5e4407585ull, 0x3a6e2f2bb7781e4cull, 0x27df2c54b938d554ull, 0x94e18c8889eab827ull, 0xa134d86d7eabbc22ull, 0xdb6a303d2830d71aull }}, {{ 0xa9b8a19aea849736ull, 0x484dd7b52ab12ef8ull, 0x8eb7bb4f3c38554aull, 0xd0cf7d55632b3187ull, 0x4c107446f2b55959ull, 0x9225e26391e8670aull }}, {{ 0xa136500d292de81dull, 0xd30a6d13aaebd5b6ull, 0x932d51185a3354e6ull, 0x281ae555dfafef4bull, 0xf8a48ac57b157d82ull, 0xb57ad7e3b3140666ull }}, {{ 0x4c1f20839bcb1120ull, 0x3e6842c4ad365922ull, 0xbfc52af386015104ull, 0x910cf55abcdf58f3ull, 0xb66d6bb6ced6e715ull, 0x16cc6ee4fec84005ull }}, {{ 0xf937452415eeab3eull, 0x70129baec41f7b56ull, 0x7db3ad833c0d2a2aull, 0xaa81958b60b97985ull, 0x20463524146506d7ull, 0xe3fc54f1f3d28039ull }}, {{ 0xbc28b368db52b071ull, 0x60ba14d3a93ad165ull, 0xe904c7205883a5a8ull, 0xa90fd771c73ebf36ull, 0x42be1368cbf2446cull, 0xe7db51738639023bull }}, {{ 0x59970218913ae46aull, 0xc744d0449c4c2df9ull, 0x1a2fc74375247893ull, 0x9a9e6a71c8737825ull, 0x9b6cc217f776ac3eull, 0x0e912e833e3a1650ull }}, {{ 0x7fe614f5ac4cec23ull, 0xc8b022ae1af9cbbdull, 0x05ddc8a2936cb5c5ull, 0x0a302871d482b173ull, 0x123f94efaaa2ba72ull, 0x91abd1206e44df26ull }}, {{ 0xfefcd198bb013961ull, 0xd6e15acd0dc1f566ull, 0x3aa9d659c23f19b9ull, 0x65e194724d1aee7eull, 0xb67bd15caa5b4874ull, 0xb0b62b444eb0b77cull }}, {{ 0xf5e02ff74e0c3dceull, 0x64cd8c0289939605ull, 0x4aa25f8196770142ull, 0xfacfcc77030d50eeull, 0x20d62d9ea790d48bull, 0xe71db0ab12e72adfull }}, {{ 0x9ac1dfa90c7a6a0eull, 0xf00778195fc3dc3bull, 0xea57bb0fe0a60c97ull, 0xcc1dfca61e85294eull, 0x485dc8328ba84d77ull, 0x0728e6aebd07acb7ull }}, {{ 0x0b92bc9a7cc82491ull, 0x604ab0fdbda69a54ull, 0x276d4e9ec67c7defull, 0xf92bde7d31339d15ull, 0xd3a9d1f9749306adull, 0x479902d3624cbf28ull }}, {{ 0x73bb5e08dfd16da6ull, 0xc2eae9e968820748ull, 0x8a451233c0dceb59ull, 0xbbb6b0e3ec0422d3ull, 0x44a233be8dbe42cbull, 0xcbfa1c41d6ff7798ull }}, {{ 0x8551ac58be2e487aull, 0x9d2d231e151448d4ull, 0x66b2b60588a13181ull, 0x5522e8e738295c43ull, 0xae560571896e9bf5ull, 0xf7c51a9265faabf2ull }}, {{ 0x3530bb776dced4c8ull, 0x23c35f2cd2cad84dull, 0x02fb1c37564bef10ull, 0x535d1908319d9aa2ull, 0xcf5c366f5e521795ull, 0xadb309b7fbcab77aull }}, {{ 0x13e752aa4a144fcdull, 0x65a1b7c03bec7304ull, 0x1dcf1a295ef756a1ull, 0x41a2fa51f0280a54ull, 0x199a2059af34ebd5ull, 0xc8fe612fd5eb2accull }}, {{ 0xc7093aa6e4cb1e00ull, 0xf8512d82573c7e28ull, 0x2a17059db5a9624dull, 0x905dc73361906749ull, 0x00054380d8113654ull, 0xd9efcbde5b2fabf9ull }}, {{ 0xc65c4a84efef2bfcull, 0xb32bc717685ced97ull, 0xa4e63829189dd70bull, 0xa3a9c801cfa408dbull, 0x0034a30870ac1f4dull, 0x835df6af8fdcb7baull }}, {{ 0xbf9ae9315f57b7d6ull, 0xffb5c6ea13a147edull, 0x70fe319af62a6674ull, 0x64a1d0121c685894ull, 0x020e5e5466b93908ull, 0x21aba2db9e9f2d44ull }}, {{ 0x7c0d1bedb96d2e59ull, 0xfd19c524c44ccf49ull, 0x69edf00d9da80091ull, 0xee5220b51c1375ccull, 0x148faf4c033c3a53ull, 0x50b45c943237c4a8ull }}, {{ 0xd88317493e43cf7aull, 0xe301b36fab0018deull, 0x234b6088289005b3ull, 0x4f35471318c299fcull, 0xcd9cd8f8205a4747ull, 0x270b9dc9f62dae90ull }}, {{ 0x751ee8dc6ea61ac7ull, 0xde11025cae00f8b4ull, 0x60f1c55195a03906ull, 0x1814c6bef79a03d9ull, 0x082079b14386c8c9ull, 0x867429e39dc8d1a8ull }}, {{ 0x9335189c527d0bcaull, 0xacaa179ecc09b70cull, 0xc971b52fd8423a44ull, 0xf0cfc375ac04267dull, 0x5144c0eca343d7daull, 0x4089a2e429d83090ull }}, {{ 0xc012f61b38e275e1ull, 0xbea4ec33f861267dull, 0xde7113de729646aeull, 0x681da298b82980e9ull, 0x2caf893e60a66e8dull, 0x85605ce9a271e5a3ull }}, {{ 0x80bd9d1038d89accull, 0x72713a07b3cb80e9ull, 0xb06ac6b079dec2d3ull, 0x112859f7319f0922ull, 0xbedb5c6fc6805186ull, 0x35c3a1205872f85full }}, {{ 0x076822a238760bfbull, 0x786c444d05f3091full, 0xe42bc2e4c2b39c42ull, 0xab9383a7f0365b5aull, 0x74919c5dc1032f3cull, 0x19a44b43747db3bdull }}, {{ 0x4a115a56349c77cfull, 0xb43aab023b7e5b36ull, 0xe9b59cef9b041a98ull, 0xb3c3248f621f918cull, 0x8db01ba98a1fd85eull, 0x006af0a28ce90566ull }}, {{ 0xe4ad875e0e1cae19ull, 0x0a4aae1652ef901eull, 0x2118215c0e2909f7ull, 0x059f6d99d53baf81ull, 0x88e1149f653e73b3ull, 0x042d6659811a3601ull }}, {{ 0xeec749ac8d1eccfaull, 0x66eaccdf3d5ba134ull, 0x4af14d988d9a63a6ull, 0x383a48025454db0bull, 0x58cace39f47084feull, 0x29c5ff7f0b061c0full }}, {{ 0x53c8e0bd833401c9ull, 0x052c00b865944c11ull, 0xed6d07f58807e480ull, 0x3246d0174b508e70ull, 0x77ec0e438c6531eeull, 0xa1bbfaf66e3d1899ull }}, {{ 0x45d8c767200811d8ull, 0x33b80733f7caf8adull, 0x46424f97504eed00ull, 0xf6c420e8f1259069ull, 0xaf388ea37bf3f34dull, 0x5157cda04e62f5feull }}, {{ 0xba77ca074050b26eull, 0x05304807adedb6c4ull, 0xbe971be923154202ull, 0xa3a949196b77a41cull, 0xd8359262d787810bull, 0x2d6e08430fdd9bf2ull }}, {{ 0x48ade4488326f84bull, 0x33e2d04ccb4923afull, 0x71e7171b5ed49414ull, 0x649cdafe32ac691full, 0x7217b7dc6b4b0a74ull, 0xc64c529e9ea8177cull }}, {{ 0xd6caead51f85b2efull, 0x06dc22fff0db64d8ull, 0x7306e711b44dc8caull, 0xee208dedfabc1b3aull, 0x74ed2e9c30ee688bull, 0xbefb3a323290eadcull }}, {{ 0x63ed2c533b38fd51ull, 0x44995dff6891f078ull, 0x7e4506b10b09d7e4ull, 0x4d458b4bcb591048ull, 0x9143d219e9501577ull, 0x75d045f5f9a92c9cull }}, {{ 0xe743bb405039e52bull, 0xadfdabfa15b364b3ull, 0xeeb242ea6e626eeaull, 0x04b770f5f17aa2d4ull, 0xaca635031d20d6a9ull, 0x9a22bb9bc09bbe1dull }}, {{ 0x08a550832242f3a9ull, 0xcbe8b7c4d901ef07ull, 0x52f69d284fd8552aull, 0x2f2a699b6eca5c51ull, 0xbe7e121f2348629aull, 0x055b541586156d28ull }}, {{ 0x5675251f569d849eull, 0xf7172db07a135646ull, 0x3da223931e7353abull, 0xd7a8201253e79b2dull, 0x70ecb53760d3da05ull, 0x359148d73cd64397ull }}, {{ 0x6093733962272e27ull, 0xa6e7c8e4c4c15ebfull, 0x685563bf308144b7ull, 0x6c9140b7470c0fc4ull, 0x693f1429c846843aull, 0x17acd868605ea3eaull }}, {{ 0xc5c2803dd587cd8bull, 0x850dd8efaf8db379ull, 0x1355e577e50caf2cull, 0x3dac8728c6789dacull, 0x1c76c9a1d2c12a48ull, 0xecc07413c3b26728ull }}, {{ 0xb999026a574e076dull, 0x328a795cdb8902c1ull, 0xc15af6aef27ed7bdull, 0x68bd4797c0b628b8ull, 0x1ca3e0523b8ba6d2ull, 0x3f8488c5a4f80791ull }}, {{ 0x3ffa1827690c4a44ull, 0xf968bda0935a1b91ull, 0x8d8da2d578f46d63ull, 0x1764cbed871d9737ull, 0x1e66c33653748438ull, 0x7b2d57b871b04babull }}, {{ 0x7fc4f18a1a7ae6a9ull, 0xbe176845c18513acull, 0x87885c56b98c45e7ull, 0xe9eff7474727e82bull, 0x3003a01f428d2a30ull, 0xcfc56d3470e2f4afull }}, {{ 0xfdb16f6508cd029dull, 0x6cea12b98f32c4bcull, 0x4b539b633f7abb0dull, 0x235fa8c8c78f11b3ull, 0xe02441389983a5e9ull, 0x1db6440c68dd8ed7ull }}, {{ 0xe8ee59f258021a1full, 0x4124bb3f97fbaf61ull, 0xf14411e07acb4e86ull, 0x61bc97d7cb96b100ull, 0xc16a8c35ff247b1bull, 0x291ea87c18a7946eull }}, {{ 0x194f837770150538ull, 0x8b6f507befd4d9d3ull, 0x6ca8b2c4cbf1113eull, 0xd15dee6df3e2ea09ull, 0x8e297a1bf76ccf11ull, 0x9b3294d8f68bcc53ull }}, {{ 0xfd1b22aa60d2342eull, 0x725924d75e50823eull, 0x3e96fbaff76aac71ull, 0x2dab504b86dd245eull, 0x8d9ec517aa4016b2ull, 0x0ff9d079a175fb43ull }}, {{ 0xe30f5aa7c83609c9ull, 0x777b7069af251675ull, 0x71e5d4dfaa2abc6eull, 0xc8b122f344a36baeull, 0x8833b2eca680e2f5ull, 0x9fc224c04e9bd0a3ull }}, {{ 0xde998a8dd21c61daull, 0xaad26420d772e09aull, 0x72fa50bca5ab5c50ull, 0xd6eb5d80ae6234d0ull, 0x5204fd3e8108dd99ull, 0x3d956f8312162663ull }}, {{ 0xb1ff698a351bd280ull, 0xac37e9486a7cc60cull, 0x7dc7275e78b19b26ull, 0x6531a706cfd61024ull, 0x3431e4710a58a802ull, 0x67d65b1eb4dd7fe1ull }}, {{ 0xf3fa1f6613163900ull, 0xba2f1cd428dfbc7eull, 0xe9c789b0b6f00f82ull, 0xf3f086441e5ca16cull, 0x09f2ec6a67769017ull, 0x0e5f8f3310a6feccull }}, {{ 0x87c539fcbede39fbull, 0x45d7204998bd5cf5ull, 0x21cb60e725609b1bull, 0x87653ea92f9e4e41ull, 0x637d3c280aa1a0efull, 0x8fbb97fea685f3f8ull }}, {{ 0x4db443df74ae43d1ull, 0xba6742dff765a197ull, 0x51f1c90775c60f10ull, 0x49f4729bdc2f0e8bull, 0xe2e459906a50495bull, 0x9d53eff2813b87b3ull }}, {{ 0x090aa6ba8ecea62bull, 0x48089cbfa9f84fe9ull, 0x3371da4a99bc96a7ull, 0xe38c7a1699d69171ull, 0xdceb7fa42722dd90ull, 0x25475f790c534d06ull }}, {{ 0x5a6a834994127dafull, 0xd0561f7ca3b31f1aull, 0x027286ea015de288ull, 0xe37cc4e20261ae6cull, 0xa132fc69875ca7a8ull, 0x74c9baba7b410244ull }}, {{ 0x882920dfc8b8e8d3ull, 0x235d3ade64ff3707ull, 0x187945240daad958ull, 0xe2dfb0d417d0d038ull, 0x4bfddc1f499e8c98ull, 0x8fe14b48d08a16aeull }}, {{ 0x519b48bdd7391841ull, 0x61a44caff1f8264bull, 0xf4bcb36888ac7d71ull, 0xdcbce848ee282230ull, 0xf7ea9938e0317df8ull, 0x9eccf0d82564e2ceull }}, {{ 0x3010d76a683af28eull, 0xd06afedf73b17ef1ull, 0x8f5f021556bce66dull, 0x9f6112d94d9155e9ull, 0xaf29fc38c1eeebb8ull, 0x3401687175f0dc15ull }}, {{ 0xe0a86a28124d798bull, 0x242df4ba84eef56bull, 0x99b614d56361004aull, 0x39cabc7d07ad5b1full, 0xd7a3da3793553536ull, 0x080e146e9b6898d8ull }}, {{ 0xc6942590b706bf6bull, 0x69cb8f4931559636ull, 0x011cd055e1ca02e5ull, 0x41eb5ce24cc58f3cull, 0x6c66862bc154141eull, 0x508ccc521215f878ull }}, {{ 0xc1c977a726437a2dull, 0x21f398dbed57de23ull, 0x0b20235ad1e41cf6ull, 0x9331a0d6ffb79858ull, 0x3c013db58d48c92eull, 0x257ffb34b4dbb4b4ull }}, {{ 0x91deac877ea2c5beull, 0x5383f897456ead65ull, 0x6f41618c32e9219dull, 0xbff04865fd2bf370ull, 0x580c691784d7dbd1ull, 0x76ffd00f10950f0aull }}, {{ 0xb2b2bd4af25bb970ull, 0x4327b5e8b652c5f7ull, 0x588dcf79fd1b5025ull, 0x7f62d3fbe3b78264ull, 0x707c1aeb306e9631ull, 0xa5fe2096a5d29667ull }}, {{ 0xfafb64ed77953e5full, 0x9f8d1b171f3bbbacull, 0x758a1ac3e3112174ull, 0xf9dc47d6e52b17ebull, 0x64d90d2fe451ddeeull, 0x7bed45e27a39e00aull }}, {{ 0xcdd1f146abd46fb3ull, 0x3b830ee7385554c1ull, 0x97650ba6deab4e8eull, 0xc29ace64f3aeef32ull, 0xf07a83deeb32ab55ull, 0xd744bad8c642c067ull }}, {{ 0x0a336cc2b64c5cfbull, 0x531e950833554f92ull, 0xe9f27484b2b1118eull, 0x9a0c0ff184d557f9ull, 0x64c926b52ffab159ull, 0x68af4c77be9b840full }}, {{ 0x66023f9b1efba1caull, 0x3f31d25201551bb4ull, 0x23788d2efaeaaf8full, 0x04789f6f30556fc3ull, 0xefdb8313dfcaed80ull, 0x16d8fcad72132899ull }}, {{ 0xfc167c0f35d451e3ull, 0x77f237340d53150bull, 0x62b583d5cd2adb98ull, 0x2cb63a57e3565d9full, 0x5e931ec6bded4700ull, 0xe479dec674bf9603ull }}, {{ 0xd8e0d8981a4b32e3ull, 0xaf762808853ed277ull, 0xdb17265a03ac93f4ull, 0xbf1e476ee15fa839ull, 0xb1bf33c36b44c601ull, 0xecc2b3c08f7bdc21ull }}, {{ 0x78c875f106effcdaull, 0xda9d9055347438aeull, 0x8ee77f8424bdc78eull, 0x772eca54cdbc9242ull, 0xf17805a230afbc11ull, 0x3f9b05859ad69950ull }}, {{ 0xb7d49b6a455fe084ull, 0x8a27a3540c8a36d0ull, 0x950afb296f69cb94ull, 0xa7d3e750095db699ull, 0x6eb03855e6dd58aeull, 0x7c0e37380c61fd29ull }}, {{ 0x2e4e1226b5bec526ull, 0x658c61487d662427ull, 0xd26dcf9e5a21f3cdull, 0x8e4709205da921ffull, 0x52e2335b04a576d2ull, 0xd88e28307bd3e39eull }}, {{ 0xcf0cb5831973b37dull, 0xf77bccd4e5fd6987ull, 0x384a1c2f85538605ull, 0x8ec65b43a89b53feull, 0x3cd6018e2e76a439ull, 0x758d91e4d646e42full }}, {{ 0x167f171efe8502e1ull, 0xaad60050fbe61f4eull, 0x32e519db35433c3bull, 0x93bf90a4961147eeull, 0x605c0f8dd0a26a3full, 0x9787b2f05ec4e9d8ull }}, {{ 0xe0f6e735f1321ccbull, 0xac5c0329d6fd390cull, 0xfcf3029014a05a54ull, 0xc57ba66ddcaccf4dull, 0xc3989b8a2658267bull, 0xeb4cfd63b3b12273ull }}, {{ 0xc9a5081b6bf51fefull, 0xbb981fa265e43a80ull, 0xe17e19a0ce43874eull, 0xb6d4804a9ec0190bull, 0xa3f613657f7180d5ull, 0x3101e5e504eb5885ull }}, {{ 0xe072511237933f58ull, 0x53f13c57faea4907ull, 0xceed00480ea34913ull, 0x244d02ea3380fa76ull, 0x679cc1f6fa6f0859ull, 0xea12faf231317538ull }}, {{ 0xc4772ab62bc0796eull, 0x476c5b6fcd26da4eull, 0x154202d09260dac1ull, 0x6b021d260309c8a4ull, 0x0c1f93a5c856537bull, 0x24bdcd75ebee9434ull }}, {{ 0xaca7ab1db584be4full, 0xca3b925e03848713ull, 0xd4941c25b7c88b8cull, 0x2e15237c1e61d668ull, 0x793bc479d35f42d2ull, 0x6f6a069b3751ca08ull }}, {{ 0xbe8caf29172f6f12ull, 0xe653b7ac232d46c4ull, 0x4dc919792dd5737full, 0xccd362d92fd26018ull, 0xbc55acc241b89c35ull, 0x5a2442102931e454ull }}, {{ 0x717ed79ae7da56b7ull, 0xff452cb95fc4c3afull, 0x09dafebbca5682feull, 0x0041dc7bde37c0f3ull, 0x5b58bf9691361a1aull, 0x856a94a19bf2eb4full }}, {{ 0x6ef46c0d0e876321ull, 0xf8b3bf3dbdafa4daull, 0x628df355e7611df5ull, 0x02929cd6ae2d897eull, 0x91777be1ac1d0504ull, 0x3629ce50177d3119ull }}, {{ 0x558c38829149df4eull, 0xb705786968dc7088ull, 0xd98b815b09cb2b9bull, 0x19ba2062cdc75eefull, 0xaeaad6d0b9223228ull, 0x1da20f20eae3eaffull }}, {{ 0x577a3519ace2b910ull, 0x2636b41e189c6553ull, 0x7f730d8e61efb415ull, 0x014543dc09c9b55eull, 0xd2ac64273b55f591ull, 0x285497492ce72dfcull }}, {{ 0x6ac61300c0db3a9full, 0x7e23092cf61bf541ull, 0xfa7e878fd35d08d3ull, 0x0cb4a69861e115b0ull, 0x3abbe988515b97aaull, 0x934de8dbc107cbe0ull }}, {{ 0x2bbcbe0788904a31ull, 0xed5e5bc19d17948eull, 0xc8f14b9e41a25842ull, 0x7f0e81f3d2cad8e9ull, 0x4b571f532d93eca4ull, 0xc10b18958a4df6c2ull }}, {{ 0xb55f6c4b55a2e5efull, 0x45af959022ebcd8dull, 0xd96cf42e9057729dull, 0xf69113863bec7921ull, 0xf167393fc7c73e6cull, 0x8a6ef5d7670ba396ull }}, {{ 0x15ba3af1585cfb55ull, 0xb8dbd7a15d360789ull, 0x7e4189d1a36a7a24ull, 0xa1aac33e573cbb52ull, 0x6e083c7dcdc87041ull, 0x68559a6a067463e5ull }}, {{ 0xd9464d6d73a1d154ull, 0x38966c4da41c4b5aull, 0xee8f62306228c56full, 0x50aba06f685f5138ull, 0x4c525cea09d46290ull, 0x13580824408be6f6ull }}, {{ 0x7cbf064684522d4bull, 0x35e03b08691af18cull, 0x5199d5e3d597b658ull, 0x26b4445a13b92c39ull, 0xfb37a124624bd9a3ull, 0xc170516a8577059eull }}, {{ 0xdf763ec12b35c4edull, 0x1ac24e541b0d6f7cull, 0x30025ae657ed1f72ull, 0x830aab84c53bba3dull, 0xd02c4b6bd6f6805full, 0x8e632e2936a63835ull }}, {{ 0xba9e738bb019b13full, 0x0b970f490e865ae0ull, 0xe0178cff6f433a75ull, 0x1e6ab32fb4554663ull, 0x21baf23665a103bbull, 0x8fdfcd9c227e321aull }}, {{ 0x4a308374e100ec71ull, 0x73e698da913f8cc7ull, 0xc0eb81fa58a04892ull, 0x302affdd0b54bfe6ull, 0x514d761ff84a254full, 0x9ebe081958edf505ull }}, {{ 0xe5e52290ca093c6bull, 0x8701f889ac7b7fc8ull, 0x893313c77642d5b8ull, 0xe1adfea2714f7f03ull, 0x2d069d3fb2e57517ull, 0x336c50fd794b9235ull }}, {{ 0xfaf359a7e45c5c2cull, 0x4613b560bcd2fdd8ull, 0x5bfec5ca9e9c5935ull, 0xd0cbf2586d1af623ull, 0xc242247cfcf692eeull, 0x023b29e6bcf3b613ull }}, {{ 0xcd81808eeb9b99bcull, 0xbcc515c7603dea79ull, 0x97f3b9ea321b7c14ull, 0x27f77774430d9d61ull, 0x96956ce1e1a1bd54ull, 0x164fa30361851cc5ull }}, {{ 0x070f059534140156ull, 0x5fb2d9c9c26b28c2ull, 0xef854325f512d8cfull, 0x8faaaa8a9e8825cfull, 0xe1d640d2d0516549ull, 0xdf1c5e21cf331fb7ull }}, {{ 0x469637d408c80d57ull, 0xbcfc81e1982f9794ull, 0x5b349f7b92bc7819ull, 0x9caaa96a31517a1full, 0xd25e883c232df4dfull, 0xb71bad5217ff3d2eull }}, {{ 0xc1de2e4857d08567ull, 0x61dd12cff1dbebcaull, 0x900e3ad3bb5cb101ull, 0x1eaa9e25ed2ec539ull, 0x37b152595fcb90bcull, 0x2714c534eff863d4ull }}, {{ 0x92adced36e253603ull, 0xd2a2bc1f729735ebull, 0xa08e4c45519eea0dull, 0x32aa2d7b43d3b43full, 0x2ced377dbdf3a759ull, 0x86cfb4115fb3e64aull }}, {{ 0xbaca14424d741c1full, 0x3a5b593a79e81b33ull, 0x458efab53035248aull, 0xfaa5c6d0a6450a7cull, 0xc1442ae96b84897bull, 0x441d08adbd06fee5ull }}, {{ 0x4be4ca9706891936ull, 0x47917c48c3111005ull, 0xb795cb13e2136d66ull, 0xca79c4267eb268daull, 0x8ca9ad1e332d5ed7ull, 0xa92256c96245f4f9ull }}, {{ 0xf6efe9e6415afc20ull, 0xcbaedad79eaaa034ull, 0x2bd9eec6d4c245feull, 0xe8c1a980f2f8188bull, 0x7ea0c32dffc5b46dull, 0x9b5763ddd6bb91bfull }}, {{ 0xa55f22fe8d8dd93cull, 0xf4d48c6c32aa4211ull, 0xb68353c44f96bbf3ull, 0x17909f097db0f56full, 0xf2479fcbfdb90c4bull, 0x1169e6aa6353b17aull }}, {{ 0x75b75df1878a7c5cull, 0x904d7c39faa694b0ull, 0x212145ab1be35787ull, 0xeba6365ee8e9965dull, 0x76cc3df7e93a7aeeull, 0xae2302a7e144eecdull }}, {{ 0x9929ab6f4b68db95ull, 0xa306da43ca81cee4ull, 0x4b4cb8af16e16b4bull, 0x347e1fb5191fdfa3ull, 0xa3fa6baf1c48cd55ull, 0xcd5e1a8eccb15406ull }}, {{ 0xfba0b258f21893d1ull, 0x5e4486a5e91214edull, 0xf0ff36d6e4ce30f4ull, 0x0ced3d12fb3ebc60ull, 0x67c834d71ad80554ull, 0x05ad0993feed4842ull }}, {{ 0xd446f77974f5c62eull, 0xaead427b1ab4d14bull, 0x69f82464f00de98bull, 0x814462bdd0735bc9ull, 0x0dd210670c703548ull, 0x38c25fc7f544d298ull }}, {{ 0x4ac5aabe9199bdcfull, 0xd2c498cf0b102cf6ull, 0x23b16bf1608b1f74ull, 0x0cabdb6a248195deull, 0x8a34a4067c6214d5ull, 0x3797bdcf94b039f0ull }}, {{ 0xebb8ab71b0016a18ull, 0x3badf8166ea1c19eull, 0x64ee376dc56f3a90ull, 0x7eb692256d0fdaadull, 0x660e6840dbd4d052ull, 0x2bed6a1bcee24365ull }}, {{ 0x3536b270e00e24edull, 0x54cbb0e052519035ull, 0xf14e2a49b65849a2ull, 0xf321b576429e8ac5ull, 0xfc90128896502338ull, 0xb746251614d6a1f5ull }}, {{ 0x1422f868c08d7141ull, 0x4ff4e8c3372fa214ull, 0x6d0da6e11f72e057ull, 0x7f51169e9a316bbbull, 0xdda0b955df216039ull, 0x28bd72dcd062539bull }}, {{ 0xc95db41785866c86ull, 0x1f9117a027dc54c8ull, 0x428884cb3a7cc369ull, 0xf92ae23205ee3552ull, 0xa8473d5ab74dc23eull, 0x97667ca023d74416ull }}, {{ 0xdda908eb37403d41ull, 0x3baaec418e9b4fd7ull, 0x99552ff048dfa21bull, 0xbbacd5f43b4e1536ull, 0x92c8658b29099675ull, 0xea00de416668a8e2ull }}, {{ 0xa89a593028826488ull, 0x54ad3a8f92111e6eull, 0xfd53df62d8bc5510ull, 0x54c05b8a510cd421ull, 0xbbd3f76f9a5fe099ull, 0x2408ae8e001698d9ull }}, {{ 0x96077be19517ed51ull, 0x4ec4499bb4ab3052ull, 0xe546b9dc775b52a3ull, 0x4f8393672a804953ull, 0x5647aa5c07bec5fdull, 0x6856d18c00e1f881ull }}, {{ 0xdc4ad6cfd2ef452aull, 0x13aae0150eafe339ull, 0xf4c3429ca9913a61ull, 0x1b23c207a902dd46ull, 0x5ecca7984d73bbe5ull, 0x13642f7808d3b50dull }}, {{ 0x9aec641e3d58b3a8ull, 0xc4acc0d292dee042ull, 0x8fa09a1e9fac47caull, 0x0f65944c9a1ca4c5ull, 0xb3fe8bf3068556f3ull, 0xc1e9dab058451285ull }}, {{ 0x0d3be92e65770490ull, 0xaebf8839bcb4c29aull, 0x9c4605323cbacdebull, 0x99f7cafe051e6fb7ull, 0x07f1777e4135657eull, 0x93228ae372b2b939ull }}, {{ 0x84571bcff6a62d9cull, 0xd37b52415f0f9a04ull, 0x1abc33f65f4c0b34ull, 0x03adedec33305d2cull, 0x4f6eaaee8c15f6f2ull, 0xbf596ce27afb3c3aull }}, {{ 0x2b67161fa27dc819ull, 0x42d1368db69c042dull, 0x0b5a079fb8f87010ull, 0x24cb4b39ffe3a3b9ull, 0x1a52ad5178dba574ull, 0x797e40d8cdd05a47ull }}, {{ 0xb206dd3c58e9d0fbull, 0x9c2c2189221829c3ull, 0x71844c3d39b460a2ull, 0x6ff0f043fee4653aull, 0x073ac52eb8947689ull, 0xbeee88780a2386c7ull }}, {{ 0xf444a45b792229d2ull, 0x19b94f5b54f1a1a4ull, 0x6f2afa64410bc65aull, 0x5f6962a7f4ebf448ull, 0x484bb3d335cca15eull, 0x755154b0656343c6ull }}, {{ 0x8aae6b92bb55a236ull, 0x013d199151705071ull, 0x57adc7ea8a75bf85ull, 0xba1dda8f91378ad4ull, 0xd2f5064019fe4dafull, 0x952d4ee3f5e0a5beull }}, {{ 0x6ad033bb51585618ull, 0x0c62ffad2e63246full, 0x6cc9cf2968997b32ull, 0x452a899bac2b6c4bull, 0x3d923e8103ef08ddull, 0xd3c514e79ac67974ull }}, {{ 0x2c2205512d735cf1ull, 0x7bddfcc3cfdf6c5aull, 0x3fe2179e15fecff4ull, 0xb3a96014b9b23af2ull, 0x67b6710a275658a4ull, 0x45b2d10c0bc0be8aull }}, {{ 0xb954352bc681a16cull, 0xd6abdfa61eba3b85ull, 0x7ed4ec2cdbf41f8cull, 0x049dc0cf40f64d76ull, 0x0d206a65895f766full, 0xb8fc2a7875877168ull }}, {{ 0x3d4a13b5c1104e39ull, 0x62b6bc7d33465339ull, 0xf45139c097893b80ull, 0x2e298818899f06a0ull, 0x834427f75dbaa056ull, 0x39d9a8b4974a6e10ull }}, {{ 0x64e4c5198aa30e36ull, 0xdb235ce400bf403cull, 0x8b2c4185eb5c5303ull, 0xcd9f50f560364249ull, 0x20a98fa9a94a435dull, 0x4280970de8e84ca5ull }}, {{ 0xf0efb2ff6a5e8e1full, 0x8f61a0e80778825bull, 0x6fba8f3b319b3e26ull, 0x08392995c21e96dfull, 0x469f9ca09ce6a1aaull, 0x9905e68b1912fe73ull }}, {{ 0x695cfdfa27b18d35ull, 0x99d049104ab51797ull, 0x5d49984ff0106d81ull, 0x523b9fd99531e4baull, 0xc23c1e46210250a4ull, 0xfa3b016efabdf080ull }}, {{ 0x1da1ebc58cef840dull, 0x0222daa2eb12ebeaull, 0xa4dff31f60a44710ull, 0x36543e7fd3f2ef47ull, 0x96592ebd4a17266bull, 0xc64e0e55cb6b6507ull }}, {{ 0x285335b7815b2882ull, 0x155c8a5d2ebd3725ull, 0x70bf7f39c66ac6a0ull, 0x1f4a70fe477d58ccull, 0xdf7bd364e4e78030ull, 0xbf0c8f59f231f24bull }}, {{ 0x9340192b0d8f9518ull, 0xd59d67a3d3642773ull, 0x677af841c02bc240ull, 0x38e869eecae577fcull, 0xbad641f0f10b01e1ull, 0x767d998375f376f6ull }}, {{ 0xc080fbae879bd2ecull, 0x58260c6641e98a83ull, 0x0acdb29181b59688ull, 0x39142353ecf6afdcull, 0x4c5e93696a6e12ccull, 0xa0e7ff229b82a5a3ull }}, {{ 0x8509d4d14c163d39ull, 0x717c7bfe931f6925ull, 0x6c08f9af1117e153ull, 0x3ac9614741a2de98ull, 0xfbb1c21e284cbbfaull, 0x490ff75a131a7860ull }}, {{ 0x3262502cf8de6438ull, 0x6edcd7f1bf3a1b77ull, 0x3859c0d6aaeecd42ull, 0x4bddccc8905cb1f4ull, 0xd4f1952d92ff57c6ull, 0xda9fa984bf08b3c9ull }}, {{ 0xf7d721c1b8afea30ull, 0x54a06f71784512a7ull, 0x33818862ad540498ull, 0xf6a9ffd5a39ef38aull, 0x516fd3c7bdf96dbeull, 0x8a3c9f2f765705e2ull }}, {{ 0xae67519136df25dbull, 0x4e445a6eb2b2ba8full, 0x030f53dac5482df3ull, 0xa2a3fe5864358366ull, 0x2e5e45cd6bbe4975ull, 0x665e37da9f663ad7ull }}, {{ 0xd0092fac24b77a8eull, 0x0eab8852fafb499cull, 0x1e99468bb4d1cb81ull, 0x5a67ef73ea1721fcull, 0xcfaeba06356ede98ull, 0xffae2e8a39fe4c67ull }}, {{ 0x205bdcb96f2ac98cull, 0x92b3533dcdd0e020ull, 0x31fcc1751031f30aull, 0x880f5a8724e753d9ull, 0x1cd3443e1654b1f3ull, 0xfccdd16643eefc0eull }}, {{ 0x43969f3e57abdf7aull, 0xbb01406a0a28c141ull, 0xf3df8e92a1f37e69ull, 0x509989477109467bull, 0x2040aa6cdf4ef383ull, 0xe00a2dfea755d88dull }}, {{ 0xa3e2386f6cb6bac7ull, 0x4e0c842465978c8cull, 0x86bb91ba5382f021ull, 0x25ff5cca6a5cc0d7ull, 0x4286a840b9158321ull, 0xc065cbf2895a7583ull }}, {{ 0x66d6345a3f234bc7ull, 0x0c7d296bf7eb7d7eull, 0x4353b147431d614dull, 0x7bf99fe8279f886bull, 0x994292873ad71f4bull, 0x83f9f7795d889720ull }}, {{ 0x045e0b867760f5c2ull, 0x7ce39e37af32e6f0ull, 0xa144ecc89f25cd02ull, 0xd7c03f118c3b5430ull, 0xfc99b9484c6738f2ull, 0x27c3aabda755e745ull }}, {{ 0x2bac7340a9c99998ull, 0xe0e42e2cd7fd0560ull, 0x4cb13fd6377a0218ull, 0x6d8276af7a5149e6ull, 0xde013cd2fc08397cull, 0x8da4ab68895b08bbull }}, {{ 0xb4bc8086a1dffff0ull, 0xc8e9cdc06fe235c1ull, 0xfeec7e5e2ac414f8ull, 0x4718a2dac72ce2feull, 0xac0c603dd8523edcull, 0x886eb2155d8e5756ull }}, {{ 0x0f5d054252bfff5eull, 0xd92209845ed61991ull, 0xf53cefadaba8d1b7ull, 0xc6f65c8bc7c0ddf5ull, 0xb87bc26a7336749aull, 0x5452f4d5a78f6962ull }}, {{ 0x99a234973b7ff9aeull, 0x7b545f2bb45cffaaull, 0x94615cc8b498312eull, 0xc59f9d75cd88ab9bull, 0x34d5982880208e0bull, 0x4b3d90588b9a1ddbull }}, {{ 0x00560de852ffc0d0ull, 0xd14bb7b50ba1fcaaull, 0xcbcd9fd70df1ebd0ull, 0xb83c269a0756b413ull, 0x1057f19501458c75ull, 0xf067a37574052a90ull }}, {{ 0x035c8b133dfd881dull, 0x2cf52d127453dea4ull, 0xf6083e668b733628ull, 0x32598204496308c5ull, 0xa36f6fd20cb77c99ull, 0x640c62968833a9a0ull }}, {{ 0x219d6ec06be7511dull, 0xc193c2b88b46b268ull, 0x9c52700172801d91ull, 0xf77f142addde57bbull, 0x625a5e347f2addfbull, 0xe87bd9e15204a046ull }}, {{ 0x5026538437092b26ull, 0x8fc59b3570c2f811ull, 0x1b38600e790127b1ull, 0xaaf6c9acaaaf6d54ull, 0xd787ae0cf7acabd7ull, 0x14d682cd342e42bfull }}, {{ 0x217f432a265baf7cull, 0x9db81016679db0adull, 0x1033c090ba0b8cefull, 0xada3e0beaada4549ull, 0x6b4ccc81acbeb66cull, 0xd0611c0409ce9b7eull }}, {{ 0x4ef89fa57f94dad7ull, 0x2930a0e00c28e6c3ull, 0xa20585a74473815cull, 0xc866c772ac86b4daull, 0x30fffd10bf73203eull, 0x23cb1828621212f0ull }}, {{ 0x15b63c76fbd08c67ull, 0x9be648c0799903a1ull, 0x54373888ac830d99ull, 0xd403ca7abd43108aull, 0xe9ffe2a77a7f4273ull, 0x65eef193d4b4bd61ull }}, {{ 0xd91e5ca5d6257c09ull, 0x16fed784bffa244aull, 0x4a283556bd1e8800ull, 0x4825e8cb649ea567ull, 0x23feda8ac8f89886ull, 0xfb556fc64f0f65d3ull }}, {{ 0x7b2f9e7a5d76d858ull, 0xe5f46b2f7fc56aecull, 0xe592156363315000ull, 0xd17b17f1ee327608ull, 0x67f4896bd9b5f53eull, 0xd1565dbf1699fa3full }}, {{ 0xcfdc30c7a6a47371ull, 0xfb8c2fdafdb62d3cull, 0xf7b4d5e1dfed2008ull, 0x2eceef734df89c58ull, 0x0f8d5e36811b9474ull, 0x2d5fa976e203c67aull }}, {{ 0x1e99e7cc826c8269ull, 0xd379de8de91dc460ull, 0xad105ad2bf434059ull, 0xd4155a810bb61b79ull, 0x9b85ae210b13cc89ull, 0xc5bc9ea4d425c0c4ull }}, {{ 0x32030dfd183d181dull, 0x42c2b18b1b29abc1ull, 0xc2a38c3b78a08382ull, 0x48d5890a751d12c0ull, 0x1338cd4a6ec5fd62ull, 0xb95e3270497987aeull }}, {{ 0xf41e8be2f262f123ull, 0x9b9aef6f0fa0b58bull, 0x9a637a52b6452316ull, 0xd8575a689322bb87ull, 0xc03804e853bbe5d6ull, 0x3dadf862debf4cccull }}, {{ 0x893176dd77dd6b5dull, 0x140d5a569c471777ull, 0x07e2c73b1eb35ee2ull, 0x73698815bf5b534cull, 0x823031134556fa64ull, 0x68cbb3dcb378ffffull }}, {{ 0x5beea4a6aea631a7ull, 0xc88587621ac6eaabull, 0x4edbc84f3301b4d4ull, 0x821f50d9799140f8ull, 0x15e1eac0b565c7ecull, 0x17f5069f02b9fffbull }}, {{ 0x97526e82d27df084ull, 0xd53749d50bc52ab1ull, 0x1495d317fe11104full, 0x1539287ebfac89b3ull, 0xdad32b8715f9cf3dull, 0xef9242361b43ffceull }}, {{ 0xe938511c38eb652aull, 0x5428e25275b3aaefull, 0xcdda3eefecaaa31eull, 0xd43b94f37cbd60feull, 0x8c3fb346dbc21862ull, 0x5bb6961d10a7fe14ull }}, {{ 0x1c332b1a3931f3a7ull, 0x4998d7389904ad5full, 0x0a86755f3eaa5f2full, 0x4a53d182df65c9f4ull, 0x7a7d00c49594f3dcull, 0x9521dd22a68feccdull }}, {{ 0x19ffaf063bf38489ull, 0xdff86835fa2ec5b7ull, 0x694095b872a7b7d8ull, 0xe7462f1cb9f9e388ull, 0xc8e207add7d1869aull, 0xd352a35a819f4006ull }}, {{ 0x03fcd63e57832d5dull, 0xbfb4121bc5d3b927ull, 0x1c85d9347a8d2e78ull, 0x08bdd71f43c2e354ull, 0xd8d44cca6e2f420dull, 0x413a618910388043ull }}, {{ 0x27e05e6f6b1fc59dull, 0x7d08b515ba453b86ull, 0x1d3a7c0cc983d0b7ull, 0x576a6738a59ce149ull, 0x784affe84dd89482ull, 0x8c47cf5aa23502a6ull }}, {{ 0x8ec3b05a2f3db827ull, 0xe25712d946b4533dull, 0x2448d87fdf26272aull, 0x6a2808367820ccdbull, 0xb2edff130a75cd17ull, 0x7ace198a56121a80ull }}, {{ 0x93a4e385d8693185ull, 0xd766bc7cc30b4067ull, 0x6ad874feb77d87acull, 0x25905220b148008full, 0xfd4bf6be689a02eaull, 0xcc0cff675cb50906ull }}, {{ 0xc470e33a741bef32ull, 0x6a035cdf9e70840bull, 0x2c7491f32ae74cc0ull, 0x77a33546ecd0059aull, 0xe4f7a37016041d25ull, 0xf881fa099f125a45ull }}, {{ 0xac68e048891757f6ull, 0x2421a0bc30652875ull, 0xbc8db37fad08ff84ull, 0xac6014c540203805ull, 0xf1ac6260dc292376ull, 0xb513c46036b786baull }}, {{ 0xbc18c2d55ae96f9aull, 0x69504759e3f39498ull, 0x5d8902fcc259fb29ull, 0xbbc0cfb481423039ull, 0x70bbd7c8999b62a2ull, 0x12c5abc2232b434dull }}, {{ 0x58f79c558d1e5c04ull, 0x1d22c982e783cdf7ull, 0xa75a1ddf9783cf9eull, 0x55881d0d0c95e23dull, 0x67566dd60011da5bull, 0xbbb8b5955fb0a106ull }}, {{ 0x79ac1b57832f982aull, 0x235bdf1d0b260ba9ull, 0x89852abbeb261c2dull, 0x575122827ddad668ull, 0x09604a5c00b28791ull, 0x553717d5bce64a40ull }}, {{ 0xc0b9116b1fdbf1a9ull, 0x6196b7226f7c749eull, 0x5f33ab572f7d19c3ull, 0x692b5918ea8c6015ull, 0x5dc2e79806f94badull, 0x5426ee5960fee680ull }}, {{ 0x873aae2f3e977097ull, 0xcfe327585adc8e33ull, 0xb804b167dae301a1ull, 0x1bb17af9297bc0d5ull, 0xa99d0bf045bcf4c6ull, 0x49854f7dc9f50103ull }}, {{ 0x484acdd871ea65e2ull, 0x1edf89738c9d8e03ull, 0x302eee0e8cde1052ull, 0x14eecdbb9ed58859ull, 0xa0227762b9618fbdull, 0xdf351ae9e3920a24ull }}, {{ 0xd2ec0a747327fad9ull, 0x34bb5e837e278c20ull, 0xe1d54c9180aca335ull, 0xd15409543457537bull, 0x4158a9db3dcf9d62ull, 0xb8130d22e3b4656eull }}, {{ 0x3d38688c7f8fcc75ull, 0x0f51b122ed8b7948ull, 0xd254fdaf06be6014ull, 0x2d485d4a0b6942d6ull, 0x8d76a2906a1c25dcull, 0x30be835ce50bf64eull }}, {{ 0x6434157cfb9dfc96ull, 0x9930eb5d4772bcd2ull, 0x3751e8d6436fc0c8ull, 0xc4d3a4e4721c9c64ull, 0x86a259a425197a99ull, 0xe77121a0f2779f11ull }}, {{ 0xea08d6e1d42bddd8ull, 0xfbe931a4ca7b6037ull, 0x2933185ea25d87d5ull, 0xb04470ec751e1beaull, 0x4257806972feca01ull, 0x0a6b504978ac36afull }}, {{ 0x245864d249b6aa72ull, 0xd71bf06fe8d1c22full, 0x9bfef3b257a74e5bull, 0xe2ac693c932d1725ull, 0x976b041e7df3e410ull, 0x683122deb6ba22d8ull }}, {{ 0x6b73f036e122a877ull, 0x6717645f183195d7ull, 0x17f584f76c890f96ull, 0xdabc1c5dbfc2e778ull, 0xea2e2930eb86e8a8ull, 0x11eb5cb323455c75ull }}, {{ 0x32876224cb5a94a4ull, 0x06e9ebb6f1efda6aull, 0xef9731aa3d5a9be0ull, 0x8b591ba97d9d0ab0ull, 0x25cd9be933451698ull, 0xb3319eff60b59c9bull }}, {{ 0xf949d56ff189ce6bull, 0x45233525735e8825ull, 0x5be7f0a6658a16c0ull, 0x717b149ee8226ae9ull, 0x7a08171c00b2e1f5ull, 0xfff035f9c7181e0full }}, {{ 0xbce2565f6f62102bull, 0xb360137681b1517bull, 0x970f667ff764e382ull, 0x6ecece3511582d1dull, 0xc450e71806fcd396ull, 0xff621bc1c6f12c9aull }}, {{ 0x60d75fba59d4a1aaull, 0x01c0c2a110ed2ed5ull, 0xe69a00ffa9f0e31bull, 0x54140e12ad71c327ull, 0xab2906f045e043e0ull, 0xf9d51591c56bbe0bull }}, {{ 0xc869bd47824e50a5ull, 0x11879a4aa943d455ull, 0x020409fca368df0eull, 0x48c88cbac6719f8full, 0xaf9a4562bac2a6c3ull, 0xc252d7b1b6356c74ull }}, {{ 0xd42164cb170f2672ull, 0xaf4c06ea9ca64b59ull, 0x142863de6218b68cull, 0xd7d57f4bc0703b96ull, 0xdc06b5db4b9a83a0ull, 0x973c6cf11e163c8eull }}, {{ 0x494defeee6978074ull, 0xd8f8452a1e7ef182ull, 0xc993e6afd4f7217eull, 0x6e56f8f5846253dcull, 0x98431a90f4092448ull, 0xe85c416b2cde5d94ull }}, {{ 0xdd0b5f5501eb0489ull, 0x79b2b3a530f56f16ull, 0xdfc702de51a74ef4ull, 0x4f65b9972bd7469full, 0xf29f09a9885b6ad4ull, 0x139a8e2fc0afa7cdull }}, {{ 0xa271b952132e2d59ull, 0xc0fb0473e99656e4ull, 0xbdc61caf3089158cull, 0x19f93fe7b668c23eull, 0x7a36609f53922c4bull, 0xc4098ddd86dc8e0bull }}, {{ 0x58713d34bfcdc577ull, 0x89ce2c871fdf64eeull, 0x69bd1ed7e55ad77full, 0x03bc7f0d20179673ull, 0xc61fc63943b5baefull, 0xa85f8aa7449d8c72ull }}, {{ 0x746c640f7e09b6a6ull, 0x620dbd473eb9f14full, 0x2163346ef58c6afbull, 0x255cf68340ebe082ull, 0xbd3dbe3ca5194d56ull, 0x93bb6a88ae277c7bull }}, {{ 0x8c3be89aec61227aull, 0xd48964c873436d1aull, 0x4de00c55977c2dd1ull, 0x75a1a1208936c515ull, 0x64696e5e72fd055dull, 0xc5522956cd8adcd5ull }}, {{ 0x7a57160d3bcb58c3ull, 0x4d5defd480a24309ull, 0x0ac07b57ead9ca32ull, 0x98504b455c23b2d5ull, 0xec1e4fb07de235a6ull, 0xb5359d64076ca055ull }}, {{ 0xc766dc8455f177a2ull, 0x05ab5e4d06569e5eull, 0x6b84d16f2c81e5f7ull, 0xf322f0b59964fc52ull, 0x392f1ce4ead61881ull, 0x141825e84a3e435bull }}, {{ 0xca049d2b5b6eac52ull, 0x38b1af023f622fb3ull, 0x33302e57bd12fba6ull, 0x7f5d6717fdf1db38ull, 0x3bd720f12c5cf513ull, 0xc8f17b12e66ea190ull }}, {{ 0xe42e23b19252bb30ull, 0x36f0d61679d5dd05ull, 0xffe1cf6d62bdd47eull, 0xf9a606efeb729031ull, 0x5667496bbba192c2ull, 0xd96ecebd00524fa2ull }}, {{ 0xe9cd64efb73b4fe1ull, 0x25685ce0c25aa23aull, 0xfed21a45db6a4ceeull, 0xc07c455f3279a1f3ull, 0x6008de35544fbb9dull, 0x7e54136203371c57ull }}, {{ 0x2205f15d28511ec6ull, 0x7613a0c7978a564dull, 0xf43506ba9227014dull, 0x84dab5b7f8c05387ull, 0xc058ae154b1d5429ull, 0xef48c1d420271b69ull }}, {{ 0x543b6da3932b33beull, 0x9cc447cbeb675f03ull, 0x8a124349b5860d06ull, 0x308b192fb783434full, 0x8376ccd4ef25499full, 0x58d7924941871221ull }}, {{ 0x4a524863bfb0056full, 0x1faacdf73209b621ull, 0x64b6a0e1173c8242ull, 0xe56efbdd2b20a11bull, 0x22a400515774e037ull, 0x786bb6dc8f46b54full }}, {{ 0xe736d3e57ce03657ull, 0x3cac0ba7f4611d4cull, 0xef2248cae85d1695ull, 0xf655d6a3af464b11ull, 0x5a68032d6a90c22eull, 0xb435249d98c31517ull }}, {{ 0x082446f6e0c21f63ull, 0x5eb8748f8bcb2501ull, 0x5756d7ed13a2e1d4ull, 0x9f5a6264d8beeeb3ull, 0x88101fc629a795d5ull, 0x0a136e27f79ed2e9ull }}, {{ 0x516ac5a4c79539ddull, 0xb3348d9b75ef720aull, 0x69646f42c45cd24bull, 0x3987d7f077755301ull, 0x50a13dbda08bda58ull, 0x64c24d8fac343d1full }}, {{ 0x2e2bb86fcbd442a1ull, 0x000d88129b5a7467ull, 0x1dec589baba036f5ull, 0x3f4e6f64aa953e0eull, 0x264c696845768772ull, 0xef97079cba0a6339ull }}, {{ 0xcdb5345df64a9a4cull, 0x008750ba11888c07ull, 0x2b3b7614b4422592ull, 0x791059eea9d46c8dull, 0x7efc1e12b6a14a76ull, 0x5be64c1f4467e03bull }}, {{ 0x09140bab9eea06f9ull, 0x05492744af55784eull, 0xb0529ccf0a9577b4ull, 0xbaa38352a24c3d83ull, 0xf5d92cbb224ce8a0ull, 0x96fef938ac0ec252ull }}, {{ 0x5ac874b4352445b8ull, 0x34db88aed956b30cull, 0xe33a201669d6ad08ull, 0x4a63213a56fa6724ull, 0x9a7bbf4f57011647ull, 0xe5f5bc36b893973dull }}, {{ 0x8bd48f0a136ab932ull, 0x109356d47d62fe7bull, 0xe04540e02262c252ull, 0xe7df4c4765c80770ull, 0x08d57919660adec8ull, 0xfb995a2335c3e868ull }}, {{ 0x764d9664c22b3bf3ull, 0xa5c1644ce5ddf0d3ull, 0xc2b488c157db9734ull, 0x0eb8fac9f9d04a68ull, 0x5856bafdfc6cb3d9ull, 0xd3fd856019a71410ull }}, {{ 0x9f07dfef95b05780ull, 0x798deb00faab6842ull, 0x9b0d578d6e93e80eull, 0x9339cbe3c222e817ull, 0x73634debdc3f067aull, 0x47e735c10086c8a3ull }}, {{ 0x364ebf5bd8e36afeull, 0xbf8b2e09cab2129aull, 0x0e856b8651c71090ull, 0xc041f6e5955d10ecull, 0x81e10b369a7640c9ull, 0xcf08198a0543d662ull }}, {{ 0x1f13799678e22debull, 0x7b6fcc61eaf4ba06ull, 0x9136333f31c6a5a7ull, 0x8293a4f7d5a2a938ull, 0x12ca7022089e87e1ull, 0x1650ff6434a65fd9ull }}, {{ 0x36c2bfe0b8d5cb31ull, 0xd25dfbd32d8f443dull, 0xac1e0077f1c2788aull, 0x19c471ae585a9c35ull, 0xbbe8615456314ecfull, 0xdf29f9ea0e7fbe7aull }}, {{ 0x239b7ec73859efe6ull, 0x37abd63fc798aa64ull, 0xb92c04af7198b56cull, 0x01ac70cf738a1a18ull, 0x5713cd4b5ded1417ull, 0xb7a3c32490fd70cbull }}, {{ 0x6412f3c833835ef7ull, 0x2cb65e7dcbf6a7e9ull, 0x3bb82eda6ff7163aull, 0x10bc681a836504f7ull, 0x66c604f1ab42c8e6ull, 0x2c659f6da9e667f1ull }}, {{ 0xe8bd85d20321b5a6ull, 0xbf1fb0e9f7a28f1dull, 0x5531d4885fa6de45ull, 0xa75c110921f231a8ull, 0x03bc3170b09bd8fcull, 0xbbf83a48a3000f6eull }}, {{ 0x17673a341f51187eull, 0x773ce923ac59972bull, 0x53f24d53bc84aeb9ull, 0x8998aa5b5375f093ull, 0x2559ee66e61679deull, 0x57b246d65e009a4cull }}, {{ 0xea084609392af4e8ull, 0xa8611b64bb7fe7aeull, 0x477705455d2ed33eull, 0x5ff6a791429b65c1ull, 0x75835004fce0c2b1ull, 0x6cf6c45fac0606f9ull }}, {{ 0x2452bc5c3bad9111ull, 0x93cb11ef52ff0cd5ull, 0xcaa634b5a3d44072ull, 0xbfa28bac9a11f98cull, 0x97212031e0c79aedull, 0x41a3abbcb83c45beull }}, {{ 0x6b3b5b9a54c7aaa7ull, 0xc5eeb3593df68053ull, 0xea7e0f18664a8479ull, 0x7c5974be04b3bf7full, 0xe74b41f2c7cc0d49ull, 0x9064b55f325ab971ull }}, {{ 0x305194074fccaa84ull, 0xbb53017c6ba10342ull, 0x28ec96f3fee92cc1ull, 0xdb7e8f6c2f057affull, 0x08f0937bcdf884deull, 0xa3ef15b7f78b3e73ull }}, {{ 0xe32fc8491dfea927ull, 0x513e0edc344a2095ull, 0x993de587f51bbf91ull, 0x92f19a39d636cdf7ull, 0x5965c2d60bb530b4ull, 0x6756d92fab70707eull }}, {{ 0xdfddd2db2bf29b87ull, 0x2c6c949a0ae545daull, 0xfc6af74f93157badull, 0xbd7006425e240babull, 0x7df99c5c7513e70dull, 0x09647bdcb26464efull }}, {{ 0xbeaa3c8fb77a1344ull, 0xbc3dce046cf4ba8cull, 0xdc2da91bbed6d4c3ull, 0x66603e97ad6874b7ull, 0xebc01b9c92c70689ull, 0x5decd69ef7ebf15aull }}, {{ 0x72a65d9d2ac4c0a8ull, 0x5a6a0c2c418f497full, 0x99c89b1574644fa5ull, 0xffc271ecc6148f2eull, 0x3581141dbbc6415dull, 0xab406235af376d8dull }}, {{ 0x7a7fa823abaf868dull, 0x882479ba8f98defaull, 0x01d60ed68beb1c75ull, 0xfd98733fbccd97d2ull, 0x170ac92955be8dabull, 0xb083d618d82a4784ull }}, {{ 0xc8fc9164b4db4182ull, 0x516cc1499bf8b5c8ull, 0x125c9461772f1c97ull, 0xe7f4807d6007ee34ull, 0xe66bdb9d597188b7ull, 0xe5265cf871a6cb28ull }}, {{ 0xd9ddadef10908f16ull, 0x2e3f8ce017b719d7ull, 0xb79dcbcea7d71de9ull, 0x0f8d04e5c04f4e08ull, 0x003694257e6f572full, 0xf37fa1b47083ef99ull }}, {{ 0x82a8cb56a5a596ddull, 0xce7b80c0ed27026eull, 0x2c29f6128e672b1bull, 0x9b8230f983190c57ull, 0x0221c976f05967d6ull, 0x82fc510c65275bfaull }}, {{ 0x1a97f1627877e4a6ull, 0x10d3078943861851ull, 0xb9a39cb99007af16ull, 0x1315e9bf1efa7b67ull, 0x1551dea5637e0e62ull, 0x1ddb2a7bf38997c4ull }}, {{ 0x09ef6dd8b4aeee7aull, 0xa83e4b5ca33cf32bull, 0x40641f3fa04cd6dcull, 0xbedb217735c8d20dull, 0xd532b275e2ec8fd4ull, 0x2a8fa8d7835feda8ull }}, {{ 0x635a4a770ed550c6ull, 0x926ef19e60617faeull, 0x83e9387c4300649eull, 0x748f4ea819d83484ull, 0x53faf89add3d9e4full, 0xa99c986b21bf4898ull }}, {{ 0xe186e8a6945527baull, 0xb855702fc3cefccfull, 0x271c34da9e03ee31ull, 0x8d99129102720d2dull, 0x47cdb60ca4682f1aull, 0xa01df42f5178d5f3ull }}, {{ 0xcf451681cb538d43ull, 0x335661dda615e01eull, 0x871a108a2c274df1ull, 0x87fab9aa187483c3ull, 0xce091c7e6c11d709ull, 0x412b89d92eb85b80ull }}, {{ 0x18b2e111f143849aull, 0x015fd2a87cdac134ull, 0x4704a565b9890b6cull, 0x4fcb40a4f48d25a3ull, 0x0c5b1cf038b2665full, 0x8bb3627bd3339308ull }}, {{ 0xf6fccab36ca32e08ull, 0x0dbe3a94e08b8c08ull, 0xc62e75f93f5a7238ull, 0x1df086718d837860ull, 0x7b8f216236f7ffb9ull, 0x7501d8d64003be50ull }}, {{ 0xa5dfeb023e5fcc4cull, 0x896e49d0c5737859ull, 0xbdd09bbc79887630ull, 0x2b65406f8722b3c7ull, 0xd3974dd625affd3bull, 0x9212785e80256f24ull }}, {{ 0x7abf2e166fbdfaf7ull, 0x5e4ee227b682b380ull, 0x6a26155cbf549de5ull, 0xb1f4845b475b05cdull, 0x43e90a5d78dfe44full, 0xb4b8b3b101765770ull }}, {{ 0xcb77cce05d6bcda9ull, 0xaf14d58d211b0304ull, 0x257cd59f794e2af5ull, 0xf38d2b90c98e3a06ull, 0xa71a67a6b8beeb1cull, 0x0f3704ea0e9f6a62ull }}, {{ 0xf2ae00c3a636089aull, 0xd6d057834b0e1e2full, 0x76e0583abd0dad98ull, 0x8383b3a7df8e443dull, 0x87080c8337752f21ull, 0x98263124923a27daull }}, {{ 0x7acc07a47e1c5600ull, 0x64236b20ee8d2ddfull, 0xa4c3724b6288c7f8ull, 0x2325048ebb8eaa66ull, 0x46507d202a93d74full, 0xf17deb6db6458e89ull }}, {{ 0xcbf84c6ced1b5c02ull, 0xe9622f495183cabaull, 0x6fa276f1d957cfb3ull, 0x5f722d935392a802ull, 0xbf24e341a9c66917ull, 0x6eeb32491eb7915cull }}, {{ 0xf7b2fc4143119813ull, 0x1dd5d8dd2f25eb4bull, 0x5c58a5727d6e1d07ull, 0xba75c7c143ba9018ull, 0x7770e090a1c01ae9ull, 0x552ff6db332bad9full }}, {{ 0xacfdda8c9eaff0bcull, 0x2a5a78a3d77b30f7ull, 0x9b767678e64d2247ull, 0x4899cd8ca549a0f3ull, 0xaa68c5a651810d21ull, 0x53dfa48fffb4c83aull }}, {{ 0xc1ea897e32df6754ull, 0xa788b6666acfe9acull, 0x12a0a0b8ff0356c7ull, 0xd602077e74e04984ull, 0xa817b87f2f0a834cull, 0x46bc6d9ffd0fd24aull }}, {{ 0x93295eedfcba094bull, 0x8b5720002c1f20bfull, 0xba464739f62163ccull, 0x5c144af090c2df28ull, 0x90ed34f7d6692100ull, 0xc35c483fe29e36eaull }}, {{ 0xbf9db54bdf445cf0ull, 0x71674001b937477bull, 0x46bec8439d4de5fdull, 0x98caed65a79cb797ull, 0xa94411ae601b4a03ull, 0xa19ad27eda2e2529ull }}, {{ 0x7c2914f6b8aba164ull, 0x6e0880113c28cad5ull, 0xc373d2a4250afbe6ull, 0xf7ed45f88c1f2be8ull, 0x9ca8b0cfc110e423ull, 0x500c38f485cd73a0ull }}, {{ 0xd99ad1a336b44de6ull, 0x4c5500ac5997ec56ull, 0xa2863a69726dd700ull, 0xaf44bbb57937b717ull, 0x1e96e81d8aa8e967ull, 0x207a398d3a068446ull }}, {{ 0x800c3060230b0afbull, 0xfb5206bb7fef3b64ull, 0x593e481e784a6602ull, 0xd8af5516bc2d26ecull, 0x31e511276a991e0cull, 0x44c63f8444412abdull }}, {{ 0x0079e3c15e6e6dccull, 0xd1344352ff5851edull, 0x7c6ed130b2e7fc1dull, 0x76d952e359c3853bull, 0xf2f2ab8a29fb2c80ull, 0xafbe7b2aaa8bab63ull }}, {{ 0x04c2e58db05049f5ull, 0x2c0aa13df9733342ull, 0xdc542be6fd0fd92aull, 0xa47d3ce181a33452ull, 0x7d7ab365a3cfbd04ull, 0xdd70cfaaa974b1e7ull }}, {{ 0x2f9cf788e322e38eull, 0xb86a4c6bbe800094ull, 0x9b49b705e29e7ba5ull, 0x6ce460cf10600b3cull, 0xe6cb01f8661d622eull, 0xa6681caa9e8ef30aull }}, {{ 0xdc21ab58df5ce38full, 0x3426fc35710005c9ull, 0x10e1263ada30d479ull, 0x40ebc816a3c0705eull, 0x03ee13b3fd25d5d0ull, 0x80111eaa31957e6dull }}, {{ 0x9950b178b9a0e398ull, 0x0985da166a0039e2ull, 0xa8cb7e4c85e84cbcull, 0x8935d0e2658463acull, 0x274cc507e37a5a22ull, 0x00ab32a5efd6f042ull }}, {{ 0xfd26eeb74048e3edull, 0x5f3a84e0240242d9ull, 0x97f2eefd3b12ff58ull, 0x5c1a28d7f72be4beull, 0x88ffb24ee2c78559ull, 0x06affa7b5e656295ull }}, {{ 0xe385532882d8e745ull, 0xb84930c168169c83ull, 0xef7d55e44ebdf973ull, 0x9905986fa7b6ef71ull, 0x59fcf714dbcb357dull, 0x42dfc8d1aff5d9d7ull }}, {{ 0xe3353f951c7908b4ull, 0x32dbe78e10e21d26ull, 0x5ae55aeb136bbe85ull, 0xfa37f45c8d255a73ull, 0x83e1a6d095f016e7ull, 0x9cbdd830df9a8269ull }}, {{ 0xe0147bd31cba5706ull, 0xfc970b8ca8d52384ull, 0x8cf58d2ec2357133ull, 0xc62f8b9d83758881ull, 0x26d08425db60e50full, 0x1f6a71e8bc09181full }}, {{ 0xc0ccd63f1f476638ull, 0xdde6737e98536330ull, 0x819783d396166c07ull, 0xbddb74272297550full, 0x8425297a91c8f29dull, 0x3a287317585af137ull }}, {{ 0x88005e7738c9fe2full, 0xab0082f1f341dfe7ull, 0x0feb2643dce0384eull, 0x6a92898759e9529bull, 0x29739ec9b1d97a29ull, 0x45947ee9738d6c2bull }}, {{ 0x5003b0a837e3edd6ull, 0xae051d738092bf0bull, 0x9f2f7ea6a0c23312ull, 0x29b95f49831d3a0eull, 0x9e8433e0f27ec59eull, 0xb7ccf51e838639afull }}, {{ 0x2024e6922ee74a5aull, 0xcc33268305bb7671ull, 0x37daf2824795febaull, 0xa13db8df1f244492ull, 0x312a06c978f3b82dull, 0x2e019331233e40dcull }}, {{ 0x417101b5d508e789ull, 0xf9ff811e3952a06bull, 0x2e8d7916cbdbf34bull, 0x4c6938b7376aadb6ull, 0xeba443deb98531c8ull, 0xcc0fbfeb606e8899ull }}, {{ 0x8e6a111a52590b55ull, 0xc3fb0b2e3d3a4430ull, 0xd186bae3f69780f7ull, 0xfc1c37282a2ac91dull, 0x346aa6b33f33f1d2ull, 0xf89d7f31c4515603ull }}, {{ 0x9024ab07377a7156ull, 0xa7ce6fce6446a9e5ull, 0x2f434ce7a1eb09adull, 0xd91a2791a5abdb2aull, 0x0c2a83007807723dull, 0xb626f7f1ab2d5c20ull }}, {{ 0xa16eae482ac86d5cull, 0x8e105e0feac2a2f7ull, 0xd8a1010c532e60c8ull, 0x7b058bb078b68fa5ull, 0x79a91e04b04a766aull, 0x1d85af70afc59940ull }}, {{ 0x4e52ced1abd4459aull, 0x8ca3ac9f2b9a5dacull, 0x764a0a7b3fcfc7d5ull, 0xce3774e4b7219c7aull, 0xc09b2c2ee2e8a028ull, 0x2738da66ddb7fc84ull }}, {{ 0x0f3c1430b64ab807ull, 0x7e64be37b407a8bbull, 0x9ee468d07e1dce57ull, 0x0e2a90ef27501cc8ull, 0x860fb9d4dd164198ull, 0x88388804a92fdd2full }}, {{ 0x9858c9e71eeb3043ull, 0xefef6e2d084c974eull, 0x34ec1824ed2a0f6aull, 0x8da9a95789211fd6ull, 0x3c9d4250a2de8ff0ull, 0x5235502e9bdea3dbull }}, {{ 0xf377e307352fe29dull, 0x5f5a4dc252fde911ull, 0x1138f17143a49a2dull, 0x88a09d6b5b4b3e5eull, 0x5e2497265cb19f65ull, 0x361521d216b26690ull }}, {{ 0x82aede4813deda1eull, 0xb98709973deb1ab3ull, 0xac396e6ca46e05c5ull, 0x5646263190f06facull, 0xad6de77f9ef039f7ull, 0x1cd35234e2f801a3ull }}, {{ 0x1ad4aed0c6b4852full, 0x3f465fe86b2f0b03ull, 0xba3e503e6c4c39b9ull, 0x5ebd7defa9645cbeull, 0xc64b0afc356243a9ull, 0x20413610ddb01064ull }}, {{ 0x0c4ed427c30d33d6ull, 0x78bfbf142fd66e1full, 0x466f22703afa413cull, 0xb366eb5c9deb9f73ull, 0xbeee6dda15d6a49dull, 0x428c1ca8a8e0a3efull }}, {{ 0x7b14498d9e84065cull, 0xb77d76c9de604d36ull, 0xc05758624dc68c5cull, 0x0205319e2b343a80ull, 0x75504a84da626e29ull, 0x99791e9698c6675dull }}, {{ 0xcecadf8831283f95ull, 0x2ae6a3e2afc30420ull, 0x836973d709c17b9full, 0x1433f02db00a4907ull, 0x9522e93087d84d9aull, 0xfebb31e1f7c009a6ull }}, {{ 0x13ecbb51eb927bd4ull, 0xad0266dadd9e2948ull, 0x221e8666618ed437ull, 0xca0761c8e066da4bull, 0xd35d1be54e730804ull, 0xf34ff2d3ad806081ull }}, {{ 0xc73f513333b8d64bull, 0xc218048ca82d9cd0ull, 0x55313fffcf944a2cull, 0xe449d1d8c40486efull, 0x41a316f5107e502full, 0x811f7c44c703c512ull }}, {{ 0xc8792c0005385eebull, 0x94f02d7e91c82027ull, 0x53ec7ffe1bcae5bfull, 0xeae23277a82d4559ull, 0x905ee592a4ef21deull, 0x0b3adaafc625b2b6ull }}, {{ 0xd4bbb8003433b529ull, 0xd161c6f1b1d1418dull, 0x473cffed15ecf97bull, 0x2cd5f8ac91c4b57dull, 0xa3b4f7ba715752b5ull, 0x704c8addbd78fb21ull }}, {{ 0x4f5530020a05139bull, 0x2dd1c570f22c8f8aull, 0xc861ff42db41bed6ull, 0xc05bb6bdb1af16e4ull, 0x6511ad486d693b13ull, 0x62fd6ca966b9cf50ull }}, {{ 0x1953e0146432c411ull, 0xca31b66975bd9b67ull, 0xd3d3f89c9091745dull, 0x83952368f0d6e4efull, 0xf2b0c4d4461c4ec5ull, 0xdde63e9e03421923ull }}, {{ 0xfd46c0cbe9fba8a8ull, 0xe5f1201e99681206ull, 0x4647b61da5ae8ba9ull, 0x23d362196864f15eull, 0x7ae7b04abd1b13b7ull, 0xaafe722c2094fb67ull }}, {{ 0xe4c387f723d4968eull, 0xfb6b4131fe10b445ull, 0xbecd1d2878d174a2ull, 0x6641d4fe13f16daeull, 0xcd0ce2eb630ec527ull, 0xadf075b945d1d20aull }}, {{ 0xefa34fa7664de18dull, 0xd2308bf3eca70abaull, 0x74032394b82e8e5dull, 0xfe9251ecc76e48d3ull, 0x0280dd31de93b389ull, 0xcb64993cba32346cull }}, {{ 0x5c611c89ff0acf84ull, 0x35e577873e866b4dull, 0x881f63cf31d18faaull, 0xf1b7333fca4ed842ull, 0x1908a3f2b1c50363ull, 0xf1edfc5f45f60c38ull }}, {{ 0x9bcb1d63f66c1b28ull, 0x1af6ab4871403105ull, 0x5139e617f22f9ca6ull, 0x7128007de7147299ull, 0xfa56677af1b221e7ull, 0x734bdbb8bb9c7a30ull }}, {{ 0x15ef25e7a0390f92ull, 0x0da2b0d46c81ea38ull, 0x2c42fcef75dc1e7dull, 0x6b9004eb06cc79fdull, 0xc7600acd70f5530aull, 0x80f69537541cc5e9ull }}, {{ 0xdb577b0c423a9bb8ull, 0x885ae84c3d132630ull, 0xba9de15a9a9930e2ull, 0x33a0312e43fcc3e3ull, 0xc9c06c0669953e68ull, 0x09a1d429491fbb21ull }}, {{ 0x916ace7a964a1534ull, 0x538d12fa62bf7de8ull, 0x4a2acd8a09fbe8d9ull, 0x0441ebcea7dfa6e5ull, 0xe18438401fd47012ull, 0x6052499cdb3d4f51ull }}, {{ 0xae2c10c9dee4d407ull, 0x4382bdc7db7aeb15ull, 0xe5ac076463d7187dull, 0x2a9336128ebc84f4ull, 0xcf2a32813e4c60b4ull, 0xc336e02090651932ull }}, {{ 0xcdb8a7e2b4f04846ull, 0xa31b69ce92cd2ed8ull, 0xf8b849ebe666f4e4ull, 0xa9c01cb9935d3190ull, 0x17a5f90c6efbc709ull, 0xa024c145a3f2fbfcull }}, {{ 0x09368edb1162d2b8ull, 0x5f122211bc03d478ull, 0xb732e337000590eeull, 0xa1811f3fc1a3efa9ull, 0xec7bba7c55d5c660ull, 0x416f8cb8677dd7d8ull }}, {{ 0x5c21948eaddc3b30ull, 0xb6b554b158264cb0ull, 0x27fce0260037a94full, 0x4f0b387d90675ca1ull, 0x3cd548db5a59bfc6ull, 0x8e5b7f340aea6e79ull }}, {{ 0x994fcd92ca9a4fe4ull, 0x23154eed717efee3ull, 0x8fe0c17c022c9d1dull, 0x167034e7a4099e4bull, 0x6054d89187817dbfull, 0x8f92f8086d2850bcull }}, {{ 0xfd1e07bbea071ee4ull, 0x5ed515466ef5f4e3ull, 0x9ec78ed815be2323ull, 0xe062110c68602ef3ull, 0xc35075af4b0ee976ull, 0x9bbdb0544393275bull }}, {{ 0xe32c4d57244734e5ull, 0xb452d4c0559b90e7ull, 0x33cb9470d96d5f61ull, 0xc3d4aa7c13c1d584ull, 0xa12498d8ee951ea4ull, 0x1568e34aa3bf8995ull }}, {{ 0xdfbb05676ac810eeull, 0x0b3c4f835813a90eull, 0x05f3cc687e45b9d1ull, 0xa64ea8d8c592572aull, 0x4b6df87951d3326full, 0xd618e0ea657b5fd8ull }}, {{ 0xbd4e360a2bd0a94dull, 0x705b1b2170c49a94ull, 0x3b85fc14eeb9422aull, 0x7f129877b7b767a4ull, 0xf24bb4bd323ff85cull, 0x5cf8c927f6d1be72ull }}, {{ 0x650e1c65b6269d03ull, 0x638f0f4e67ae09cfull, 0x533bd8d1533c95a8ull, 0xf6b9f4ad2d2a0c6aull, 0x76f50f63f67fb39cull, 0xa1b7db8fa431707dull }}, {{ 0xf28d1bf91d82221full, 0xe39699100ccc6219ull, 0x4056782d405dd893ull, 0xa3438ec3c3a47c27ull, 0xa59299e7a0fd0421ull, 0x512e939c69ee64e6ull }}, {{ 0x798317bb27155539ull, 0xe3e1faa07ffbd503ull, 0x8360b1c483aa75c6ull, 0x60a393a5a46cd988ull, 0x77ba030c49e22950ull, 0x2bd1c41c234ff102ull }}, {{ 0xbf1eed4f86d55437ull, 0xe6d3ca44ffd65222ull, 0x21c6f1ad24a899c4ull, 0xc663c4786c407f55ull, 0xad441e7ae2d59d23ull, 0xb631a919611f6a18ull }}, {{ 0x7735451b44554a26ull, 0x0445e6b1fe5f355bull, 0x51c570c36e9601b1ull, 0xbfe5acb43a84f953ull, 0xc4a930ccdc582365ull, 0x1df09afdcb3a24f6ull }}, {{ 0xa814b310ab54e57bull, 0x2abb02f3efb81592ull, 0x31b667a251dc10eaull, 0x7ef8bf0a4931bd41ull, 0xae9be8009b7161f9ull, 0x2b660de9f04571a3ull }}, {{ 0x90cefea6b150f6caull, 0xab4e1d875d30d7baull, 0xf1200c573298a925ull, 0xf5b77666dbf1648bull, 0xd2171006126dd3beull, 0xb1fc8b2362b67064ull }}, {{ 0xa815f282ed29a3dfull, 0xb10d2749a3e86d49ull, 0x6b407b67f9f69b78ull, 0x992aa004976ded77ull, 0x34e6a03cb84a4575ull, 0xf3dd6f61db2063f0ull }}, {{ 0x90db791d43a066b6ull, 0xea8388e0671444e0ull, 0x3084d20fc3a212b6ull, 0xfbaa402dea4b46aaull, 0x1102425f32e6b697ull, 0x86a659d28f43e762ull }}, {{ 0xa892bb24a444031dull, 0x292358c406cab0c5ull, 0xe530349da454bb25ull, 0xd4a681cb26f0c2a5ull, 0xaa1697b7fd0321efull, 0x427f823998a709d4ull }}, {{ 0x95bb4f6e6aa81f22ull, 0x9b6177a843eae7b8ull, 0xf3e20e286b4f4f73ull, 0x4e8111ef85679a7aull, 0xa4e1ed2fe21f535eull, 0x98fb163ff686624eull }}, {{ 0xd9511a502a913756ull, 0x11ceac92a72d0d35ull, 0x86d48d9431191a84ull, 0x110ab35b360c08cdull, 0x70d343ded53941afull, 0xf9cede7fa13fd712ull }}, {{ 0x7d2b0721a9ac295bull, 0xb212bdba87c2841aull, 0x444d87c9eafb0928ull, 0xaa6b01901c785807ull, 0x6840a6b4543c90d6ull, 0xc214b0fc4c7e66b8ull }}, {{ 0xe3ae4750a0b99d8eull, 0xf4bb69494d992908ull, 0xab074de32dce5b96ull, 0xa82e0fa11cb37048ull, 0x1286830b4a5da862ull, 0x94cee9dafcf00334ull }}, {{ 0xe4cec9264740278bull, 0x8f521cdd07fb9a58ull, 0xae490adfca0f93e5ull, 0x91cc9c4b1f0262d6ull, 0xb9411e70e7a893daull, 0xd015228de1602008ull }}, {{ 0xf013db7ec8818b6bull, 0x993520a24fd40778ull, 0xceda6cbde49bc6f7ull, 0xb1fe1aef3617dc62ull, 0x3c8b30690c95c689ull, 0x20d3598acdc14057ull }}, {{ 0x60c692f3d50f722eull, 0xfc1346571e484ab9ull, 0x14883f6aee15c5abull, 0xf3ed0d581cee9bdcull, 0x5d6fe41a7dd9c160ull, 0x48417f6c098c8368ull }}, {{ 0xc7c1bd86529a75d0ull, 0xd8c0bf672ed2eb3dull, 0xcd527a2d4cd9b8b7ull, 0x8742857121521698ull, 0xa65ee908ea818dc9ull, 0xd28efa385f7d2213ull }}, {{ 0xcd91673f3a089a1full, 0x77877a07d43d3069ull, 0x0538c5c50081372eull, 0x4899366b4d34e1f8ull, 0x7fb51a59290f89dfull, 0x3995c633bae354c4ull }}, {{ 0x07ae087844560533ull, 0xab4ac44e4a63e422ull, 0x3437b9b2050c27d0ull, 0xd5fc20310410d3b0ull, 0xfd13077b9a9b62b8ull, 0x3fd9be054ce14facull }}, {{ 0x4ccc54b2ab5c3403ull, 0xb0ebab0ee7e6e954ull, 0x0a2d40f432798e26ull, 0x5bd941ea28a844e2ull, 0xe2be4ad40a11db38ull, 0x7e816c3500cd1cc1ull }}, {{ 0xfffb4efab19a081eull, 0xe934ae950f051d4aull, 0x65c48989f8bf8d82ull, 0x967c93259692b0d4ull, 0xdb6eec4864b29033ull, 0xf10e3a1208031f92ull }}, {{ 0xffd115caf004512cull, 0x1c0ed1d2963324edull, 0xf9ad5f63b77b871dull, 0xe0ddbf77e1bae84bull, 0x92553ad3eef9a203ull, 0x6a8e44b4501f3bbcull }}, {{ 0xfe2ad9ed602b2bb6ull, 0x18943239ddff714bull, 0xc0c5b9e52ad34723ull, 0xc8a97aaed14d12f7ull, 0xb7544c4755c05426ull, 0x298eaf0b2138555dull }}, {{ 0xedac8345c1afb520ull, 0xf5c9f642abfa6cf7ull, 0x87b942f3ac40c75eull, 0xd69ecad42d02bdadull, 0x294afac959834983ull, 0x9f92d66f4c3355a9ull }}, {{ 0x48bd20b990dd1345ull, 0x99e39e9ab7c841afull, 0x4d3c9d84ba87c9b5ull, 0x6233ec49c21b68c7ull, 0x9cedcbdd7f20df26ull, 0x3bbc6058fa01589bull }}, {{ 0xd763473fa8a2c0aeull, 0x02e4320b2dd290d8ull, 0x045e272f494de118ull, 0xd6073ae1951217c9ull, 0x2149f6a6f748b77full, 0x555bc379c40d7614ull }}, {{ 0x69e0c87c965b86ceull, 0x1ce9f46fca39a878ull, 0x2bad87d8dd0acaf0ull, 0x5c484ccfd2b4eddaull, 0x4ce3a285a8d72afeull, 0x5595a2c1a8869cc9ull }}, {{ 0x22c7d4dddf93440eull, 0x21238c5de64094b4ull, 0xb4c74e78a26bed61ull, 0x9ad3001e3b114a85ull, 0x00e459389867adefull, 0x57d85b9095421fddull }}, {{ 0x5bce50aabbc0a88eull, 0x4b637baafe85cf09ull, 0x0fc910b6583745cbull, 0x0c3e012e4eace939ull, 0x08eb7c35f40ccb5cull, 0x6e7393a5d4953ea2ull }}, {{ 0x960f26ab55869589ull, 0xf1e2d4adf13a165dull, 0x9ddaa71f7228b9f0ull, 0x7a6c0bcf12c11c3aull, 0x5932da1b887ff198ull, 0x5083c47a4dd47254ull }}, {{ 0xdc9782b15741d75aull, 0x72dc4ecb6c44dfa7ull, 0x2a8a873a75974369ull, 0xc8387616bb8b1a4aull, 0x7bfc851354ff6ff4ull, 0x2525acc70a4c774bull }}, {{ 0x9deb1aed68926986ull, 0x7c9b13f23ab0bc8eull, 0xa969484897e8a21eull, 0xd2349ce3536f06e5ull, 0xd7dd32c151fa5f8full, 0x7378bfc666fca8f2ull }}, {{ 0x2b2f0d4615b81f3bull, 0xde0ec7764ae75d92ull, 0x9e1cd2d5ef165530ull, 0x360e20e1425644f8ull, 0x6ea3fb8d33c7bb9eull, 0x82b77dc005de997cull }}, {{ 0xafd684bcd931384dull, 0xac93ca9eed09a7b5ull, 0x2d203c5b56df53e8ull, 0x1c8d48cc975eb1b6ull, 0x5267d38405cd542eull, 0x1b2ae9803ab1fedcull }}, {{ 0xde612f607bec32fdull, 0xbdc5ea3542608d18ull, 0xc3425b9164b94716ull, 0x1d84d7fde9b2f11dull, 0x380e43283a0549cdull, 0x0fad1f024af3f49bull }}, {{ 0xafcbd9c4d739fde6ull, 0x69bb261497c582f8ull, 0xa09793adef3cc6e3ull, 0x27306feb20fd6b29ull, 0x308e9f924434e203ull, 0x9cc33616ed878e10ull }}, {{ 0xddf681b06843eaf7ull, 0x214f7ccdedb71db6ull, 0x45ebc4cb585fc4e2ull, 0x87e45f2f49e62fa0ull, 0xe5923bb6aa10d41full, 0x1fa01ce5474b8ca1ull }}, {{ 0xaba110e412a72daaull, 0x4d1ae00b49272924ull, 0xbb35aff173bdb0d5ull, 0x4eebb7d8e2fddc42ull, 0xf7b65522a4a8493bull, 0x3c4120f4c8f37e52ull }}, {{ 0xb44aa8e8ba87c8a3ull, 0x030cc070db879b6eull, 0x5018df6e8568e855ull, 0x15352e78ddea9a9bull, 0xad1f535a6e92dc51ull, 0x5a8b498fd982ef3dull }}, {{ 0x0aea9917494dd65full, 0x1e7f8468934c1253ull, 0x20f8ba5136191352ull, 0xd413d0b8ab2a0a11ull, 0xc339418851bc9b2aull, 0x8970df9e7f1d5868ull }}, {{ 0x6d29fae8dd0a5fb3ull, 0x30fb2c15c0f8b73eull, 0x49b7472c1cfac135ull, 0x48c62736afa464abull, 0xa03c8f53315e0facull, 0x5e68bc30f7257417ull }}, {{ 0x43a3cd18a267bcfbull, 0xe9cfb8d989b72870ull, 0xe128c7b921cb8c13ull, 0xd7bd8822dc6beeb0ull, 0x425d993fedac9cbaull, 0xb01759e9a77688ecull }}, {{ 0xa46602f6580d61d1ull, 0x221d387f61279462ull, 0xcb97cd3b51f378c7ull, 0x6d67515c9c3752e8ull, 0x97a7fc7f48be1f4cull, 0xe0e983208aa1593aull }}, {{ 0x6bfc1d9f7085d22bull, 0x552434f9cb8bcbdaull, 0xf3ee04513382b7c7ull, 0x46092d9e1a293d17ull, 0xec8fdcf8d76d38fcull, 0xc91f1f456a4d7c49ull }}, {{ 0x37d9283a653a35aaull, 0x536a11c1f375f688ull, 0x874c2b2c031b2dc9ull, 0xbc5bc82d059c62efull, 0x3d9ea1b86a4439daull, 0xdb3738b62706dae3ull }}, {{ 0x2e7b9247f44618a4ull, 0x4224b193829ba152ull, 0x48f9afb81f0fc9ddull, 0x5b95d1c2381bdd5bull, 0x6832513426aa428bull, 0x9028371d86448ce0ull }}, {{ 0xd0d3b6cf8abcf66cull, 0x956eefc31a144d35ull, 0xd9c0dd31369de2a4ull, 0x93da31963116a590ull, 0x11f72c0982a69971ull, 0xa19227273ead80c4ull }}, {{ 0x2845241b6b61a037ull, 0xd6555d9f04cb041aull, 0x8188a3ec222ada6dull, 0xc685efddeae277a8ull, 0xb3a7b85f1a81fe6full, 0x4fb5878872c707a8ull }}, {{ 0x92b3691231d04225ull, 0x5f55a8362fee2905ull, 0x0f56673955ac884aull, 0xc13b5eab2cd8ac95ull, 0x048d33b70913f05dull, 0x1d174b547bc64c97ull }}, {{ 0xbb021ab5f2229574ull, 0xb958921ddf4d9a37ull, 0x9960083d58bd52e7ull, 0x8c51b2afc076bdd2ull, 0x2d8405265ac763a9ull, 0x22e8f14cd5befde6ull }}, {{ 0x4e150b1b7559d687ull, 0x3d75b52ab908062dull, 0xfdc0526577653d0dull, 0x7b30fadd84a36a39ull, 0xc728337f8bc9e49full, 0x5d196d005975eafdull }}, {{ 0x0cd26f1295826142ull, 0x669913ab3a503dc5ull, 0xe98337f6a9f46284ull, 0xcfe9cca72e622643ull, 0xc79202fb75e2ee3aull, 0xa2fe42037e9b2de9ull }}, {{ 0x803856b9d717cc93ull, 0x01fac4b0472269b2ull, 0x1f202fa2a38bd92cull, 0x1f21fe87cfd57ea7ull, 0xcbb41dd29add4e4cull, 0x5dee9422f20fcb21ull }}, {{ 0x0233634266edfdc2ull, 0x13cbaee2c75820f9ull, 0x3741dc5a63767bb8ull, 0x3753f14e1e56f287ull, 0xf5092a3a0ca50ef9ull, 0xab51c95d749def51ull }}, {{ 0x1601e098054be98full, 0xc5f4d4dbc97149baull, 0x28929b87e2a0d530ull, 0x29476d0d2f657948ull, 0x925ba6447e7295bcull, 0xb131dda68e2b5933ull }}, {{ 0xdc12c5f034f71f97ull, 0xbb905095de6ce144ull, 0x95ba134eda4853e7ull, 0x9cca4283d9f6bcd1ull, 0xb7947eacf079d959ull, 0xebf2a8818db17c03ull }}, {{ 0x98bbbb6211a73be8ull, 0x53a325dab040ccb0ull, 0xd944c11486d3470dull, 0x1fe6992683a3602full, 0x2bccf2c164c27d80ull, 0x377a950f88eed825ull }}, {{ 0xf75551d4b0885711ull, 0x445f7a8ae287fee5ull, 0x7caf8acd4440c685ull, 0x3f01fb812461c1deull, 0xb6017b8def98e701ull, 0x2ac9d29b59547173ull }}, {{ 0xa955324ee55366adull, 0xabbac96cd94ff4fbull, 0xdedb6c04aa87c134ull, 0x7613d30b6bd192b0ull, 0x1c0ed38b5bf9060cull, 0xabe23a117d4c6e85ull }}, {{ 0x9d53f714f54202c3ull, 0xb54bde407d1f91d4ull, 0xb492382ea94d8c0eull, 0x9cc63e72362fbae8ull, 0x1894437197ba3c7cull, 0xb6d644aee4fc5133ull }}, {{ 0x2547a6d194941b9dull, 0x14f6ae84e33bb24eull, 0x0db631d29d077893ull, 0x1fbe70761ddd4d17ull, 0xf5caa26fed465cdeull, 0x245eaed4f1db2bfeull }}, {{ 0x74cc842fcdc91426ull, 0xd1a2d130e054f70dull, 0x891df23a224ab5beull, 0x3d70649d2aa502e6ull, 0x99ea585f44bfa0adull, 0x6bb2d451728fb7f5ull }}, {{ 0x8ffd29de09dac97dull, 0x305c2be8c351a686ull, 0x5b2b764556eb1974ull, 0x6663ee23aa721d01ull, 0x032773b8af7c46c4ull, 0x34fc4b2e799d2f98ull }}, {{ 0x9fe3a2ac628bdee6ull, 0xe399b717a1308141ull, 0x8fb29eb5652efe89ull, 0xffe74d64a875220dull, 0x1f8a8536dadac3abull, 0x11daefd0c023dbf0ull }}, {{ 0x3ee45abbd976b4fcull, 0xe40126ec4be50c90ull, 0x9cfa3315f3d5f162ull, 0xff0905ee94935487ull, 0x3b6934248c8ba4b7ull, 0xb28d5e2781669761ull }}, {{ 0x74eb8b567ea311daull, 0xe80b853af6f27da2ull, 0x21c5fedb865b6ddcull, 0xf65a3b51cdc14d4cull, 0x521c096d7d746f2full, 0xf985ad8b0e01e9ccull }}, {{ 0x91337160f25eb283ull, 0x1073344da578e858ull, 0x51bbf4933f924aa1ull, 0x9f865132098d04f9ull, 0x35185e46e68c57dfull, 0xbf38c76e8c1321fbull }}, {{ 0xac026dc977b2f91aull, 0xa4800b0876b91375ull, 0x31578dc07bb6ea4aull, 0x3b3f2bf45f8231bdull, 0x12f3aec5017b6ebcull, 0x7837ca5178bf53d0ull }}, {{ 0xb81849deacfdbb06ull, 0x6d006e54a33ac298ull, 0xed6b8984d52526eaull, 0x5077b78bbb15f163ull, 0xbd84d3b20ed2535aull, 0xb22de72eb7794620ull }}, {{ 0x30f2e2b2c1e94e41ull, 0x42044f4e604b99f7ull, 0x46335f3053738528ull, 0x24ad2b754edb6de7ull, 0x673044f494374187ull, 0xf5cb07d32abcbd47ull }}, {{ 0xe97cdafb931d0e89ull, 0x942b190fc2f403a7ull, 0xbe01b7e342833392ull, 0x6ec3b29514924b08ull, 0x07e2b18dca288f47ull, 0x99ee4e3fab5f64caull }}, {{ 0x1ee08dd3bf229156ull, 0xc9aefa9d9d88248full, 0x6c112ee0992003b9ull, 0x53a4f9d2cdb6ee57ull, 0x4edaef89e59598caull, 0x034f0e7cb1b9efe4ull }}, {{ 0x34c58a457759ad5eull, 0xe0d5ca2827516d97ull, 0x38abd4c5fb402541ull, 0x4471c23c09254f6aull, 0x148d5b62f7d7f7e7ull, 0x211690def1435eebull }}, {{ 0x0fb766b6a980c5abull, 0xc859e591892e47e8ull, 0x36b64fbbd0817492ull, 0xac7196585b751a26ull, 0xcd8591ddae6faf08ull, 0x4ae1a8b56ca1b52eull }}, {{ 0x9d2a03229f07b8afull, 0xd382f7af5bcecf10ull, 0x231f1d56250e8dbbull, 0xbc6fdf739293057eull, 0x0737b2a8d05cd656ull, 0xecd097163e5113d4ull }}, {{ 0x23a41f5a364d36d4ull, 0x431dacd9961416a6ull, 0x5f37255d72918956ull, 0x5c5eba83b9be36edull, 0x482cfa9823a05f63ull, 0x4025e6de6f2ac648ull }}, {{ 0x646939861f042443ull, 0x9f28c07fdcc8e27dull, 0xb82775a679af5d5eull, 0x9bb34925416e2545ull, 0xd1c1c9f16443b9e1ull, 0x817b04b057abbed2ull }}, {{ 0xec1c3f3d36296aa1ull, 0x379784fe9fd8d8e5ull, 0x318a9880c0d9a5b2ull, 0x1500db748e4d74b9ull, 0x3191e36deaa542d0ull, 0x0ece2ee36cb5743cull }}, {{ 0x391a78641d9e2a46ull, 0x2beb31f23e7878fbull, 0xef69f507888078f6ull, 0xd208928d8f068f3bull, 0xefb2e24b2a749c20ull, 0x940dd4e23f168a59ull }}, {{ 0x3b08b3e9282da6baull, 0xb72ff37670b4b9d0ull, 0x5a23924b5504b99dull, 0x3455b98796419857ull, 0x5cfcd6efa88e1948ull, 0xc88a50d676e16783ull }}, {{ 0x4e57071b91c88347ull, 0x27df82a0670f4222ull, 0x8563b6f1522f4029ull, 0x0b593f4bde8ff369ull, 0xa1e0655c958cfcd2ull, 0xd5672860a4ce0b21ull }}, {{ 0x0f664713b1d520c4ull, 0x8ebb1a4406989557ull, 0x35e5256d35d8819bull, 0x717c78f6b19f821full, 0x52c3f59dd781e034ull, 0x560793c6700c6f50ull }}, {{ 0x99fec6c4f25347a8ull, 0x934f06a841f5d566ull, 0x1af376441a751013ull, 0x6edcb9a2f03b1538ull, 0x3ba7982a6b12c20cull, 0x5c4bc5c0607c5923ull }}, {{ 0x03f3c3b17740cc95ull, 0xc1164292939a5602ull, 0x0d829ea90892a0c3ull, 0x549f405d624ed431ull, 0x548bf1a82ebb947cull, 0x9af5b983c4db7b60ull }}, {{ 0x2785a4eea887fdcdull, 0x8ade99b9c4075c14ull, 0x871a329a55ba47a5ull, 0x4e3883a5d71449eaull, 0x4d777091d353ccdbull, 0x0d993f25b092d1c3ull }}, {{ 0x8b387152954fea05ull, 0x6cb20141a84998c9ull, 0x4705fa075946cc77ull, 0x0e35247a66cae329ull, 0x06aa65b241460091ull, 0x87fc7778e5bc31a1ull }}, {{ 0x70346d39d51f2436ull, 0x3ef40c9092dff7dfull, 0xc63bc4497cc3fcaaull, 0x8e136cc803ecdf9cull, 0x42a7f8f68cbc05aaull, 0x4fdcaab8f959f04aull }}, {{ 0x620c444253376a1eull, 0x75887da5bcbfaebaull, 0xbe55aadedfa7dea6ull, 0x8cc23fd02740bc1full, 0x9a8fb9a17f5838a9ull, 0x1e9eab39bd8362e6ull }}, {{ 0xd47aaa97402a2529ull, 0x9754e8795f7cd347ull, 0x6f58acb4bc8eb280ull, 0x7f967e218887593dull, 0x099d404ef972369full, 0x3232b0416721dd02ull }}, {{ 0x4ccaa9e881a57397ull, 0xe95114bdbae040ceull, 0x5976bf0f5d92f905ull, 0xfbe0ed4f55497c66ull, 0x60248315be76223aull, 0xf5fae28e0752a214ull }}, {{ 0xffeaa315107683e7ull, 0x1d2acf694cc2880eull, 0x7ea37699a7bdba3bull, 0xd6c9451954dedbffull, 0xc16d1ed9709d564dull, 0x9bccd98c493a54cbull }}, {{ 0xff2a5ed2a4a12705ull, 0x23ac1a1cff995095ull, 0xf262a2008d69464full, 0x63dcb2fd50b497faull, 0x8e43347e66255f0aull, 0x16007f7adc474ff5ull }}, {{ 0xf7a7b43a6e4b8633ull, 0x64b90521fbfd25dbull, 0x77da5405861cbf17ull, 0xe69efde5270defcdull, 0x8ea00ceffd75b667ull, 0xdc04facc9ac91f97ull }}, {{ 0xac8d0a484ef33dffull, 0xef3a3353d7e37a97ull, 0xae8748373d1f76e9ull, 0x0235eaf3868b5e06ull, 0x9240815fe699200full, 0x9831cbfe0bdb3bebull }}, {{ 0xbd8266d315806bf5ull, 0x584601466ee2c9ecull, 0xd148d228633aa523ull, 0x161b2d834171ac42ull, 0xb6850dbf01fb4096ull, 0xf1f1f7ec76905733ull }}, {{ 0x6718043ed7043794ull, 0x72bc0cc054dbe33full, 0x2cd83593e04a7361ull, 0xdd0fc7208e70ba9cull, 0x2132897613d085dcull, 0x7373af3ca1a36805ull }}, {{ 0x06f02a74662a2bcbull, 0x7b587f835096e07aull, 0xc07217c6c2e881ceull, 0xa29dc74590674a19ull, 0x4bf95e9cc6253aa0ull, 0x8284d85e50621033ull }}, {{ 0x4561a88bfda5b5f2ull, 0xd174fb2125e4c4c4ull, 0x8474edc39d151210ull, 0x5a29c8b7a408e501ull, 0xf7bdb21fbd744a46ull, 0x193073af23d4a200ull }}, {{ 0xb5d09577e8791b75ull, 0x2e91cf4b7aefafaaull, 0x2c9149a422d2b4a8ull, 0x85a1d72c6858f20full, 0xad68f53d668ae6bfull, 0xfbe484d7664e5409ull }}, {{ 0x1a25d6af14bb128dull, 0xd1b218f2cd5cdcabull, 0xbdace0695c3b0e91ull, 0x385267bc13797497ull, 0xc6199466016d037bull, 0xd6ed3069ff0f4860ull }}, {{ 0x057a62d6cf4eb985ull, 0x30f4f97c05a09eafull, 0x68c0c41d9a4e91b2ull, 0x33380d58c2be8dedull, 0xbcffcbfc0e4222d0ull, 0x6543e423f698d3c7ull }}, {{ 0x36c7dc6419133f2eull, 0xe991bed8384632d6ull, 0x1787a9280711b0f5ull, 0x003085779b718b46ull, 0x61fdf7d88e955c22ull, 0xf4a6e967a1f845cdull }}, {{ 0x23ce9be8fac077ceull, 0x1fb1747232bdfc5eull, 0xeb4c9b9046b0e99bull, 0x01e536ac126f70bcull, 0xd3ebae7591d59954ull, 0x8e851e0c53b2ba05ull }}, {{ 0x66121719cb84ae0bull, 0x3cee8c75fb6bdbadull, 0x30fe13a2c2e9200full, 0x12f422b8b85a6761ull, 0x4734d097b257fd48ull, 0x91332c7b44fb443aull }}, {{ 0xfcb4e701f32ecc6eull, 0x61517c9bd23694c5ull, 0xe9ecc45b9d1b4098ull, 0xbd895b37338809cbull, 0xc81025ecf76fe4d0ull, 0xabffbcd0b1d0aa46ull }}, {{ 0xdf1106137fd3fc4cull, 0xcd2ede163621cfbbull, 0x233fab94231085f3ull, 0x675d9028035061f7ull, 0xd0a17b41aa5ef027ull, 0xb7fd6026f226a6c3ull }}, {{ 0xb6aa3cc2fe47daf6ull, 0x03d4acde1d521d56ull, 0x607cb3c95ea53b86ull, 0x09a7a1902123d3a7ull, 0x264ed090a7b5618aull, 0x2fe5c185758283a6ull }}, {{ 0x22a65f9deece8da0ull, 0x264ec0ad25352563ull, 0xc4df05ddb274533cull, 0x608c4fa14b664489ull, 0x7f1425a68d15cf64ull, 0xdef98f369719247dull }}, {{ 0x5a7fbc2b5411883cull, 0x7f1386c3741375dfull, 0xb0b63aa8f88b4059ull, 0xc57b1c4cf1fead61ull, 0xf6c9788182da19ebull, 0xb5bf9821e6fb6ce6ull }}, {{ 0x88fd59b148af525cull, 0xf6c343a288c29ab9ull, 0xe71e4a99b570837eull, 0xb6cf1b0173f2c5d0ull, 0xa3deb50f1c850335ull, 0x197bf15305d24105ull }}, {{ 0x59e580ecd6d93799ull, 0xa3a0a459579a0b3full, 0x072eea01166522f5ull, 0x24170e0e877bba29ull, 0x66b312971d322019ull, 0xfed76d3e3a368a38ull }}, {{ 0x82f70940647c2bfbull, 0x64466b7d6c047079ull, 0x47d5240adff35d98ull, 0x68e68c914ad5459aull, 0x02feb9e723f540fbull, 0xf46a446e46216634ull }}, {{ 0x1da65c83ecd9b7ceull, 0xeac032e6382c64bfull, 0xce53686cbf81a7f3ull, 0x19017dacec54b806ull, 0x1df34307679489d2ull, 0x8c26ac4ebd4dfe08ull }}, {{ 0x287f9d2740812e0bull, 0x2b81fcfe31bbef77ull, 0x0f42143f7b108f87ull, 0xfa0ee8c13b4f3044ull, 0x2b809e4a0bcd6234ull, 0x7982bb13650bec51ull }}, {{ 0x94fc2388850bcc6bull, 0xb313e1edf1575aa7ull, 0x9894ca7acea59b47ull, 0xc495178c5117e2a8ull, 0xb3062ee47605d611ull, 0xbf1b4ec1f2773b2bull }}, {{ 0xd1d963553275fc2cull, 0xfec6d34b6d698a8bull, 0xf5cfe8cc127810ccull, 0xadd2eb7b2aeeda95ull, 0xfe3dd4ec9c3a5cb1ull, 0x7711139378a84fb4ull }}, {{ 0x327de153f89bd9bcull, 0xf3c440f2461f6976ull, 0x9a1f17f8b8b0a801ull, 0xca3d32cfad5489dbull, 0xee6a513e1a479ef0ull, 0xa6aac3c2b6931d11ull }}, {{ 0xf8eacd47b6168159ull, 0x85aa8976bd3a1e9dull, 0x0536efb736e69013ull, 0xe663fc1cc54d6294ull, 0x50272c6d06cc3567ull, 0x82aba59b21bf22b3ull }}, {{ 0xb92c04cd1ce10d77ull, 0x38a95ea36445322bull, 0x34255d282501a0c3ull, 0xffe7d91fb505d9c8ull, 0x2187bc4243fa160eull, 0x1ab4780f51775b01ull }}, {{ 0x3bb8300320ca86a7ull, 0x369db261eab3f5b5ull, 0x0975a391721047a0ull, 0xff0e7b3d123a81d2ull, 0x4f4d5a96a7c4dc95ull, 0x0b0cb0992ea98e0bull }}, {{ 0x5531e01f47e94287ull, 0x2228f7d32b079914ull, 0x5e9863ae74a2cc42ull, 0xf690d062b6491234ull, 0x190589e28db09ddbull, 0x6e7ee5fbd29f8c71ull }}, {{ 0x53f2c138cf1c9942ull, 0x5599ae3fae4bfacbull, 0xb1f3e4d08e5bfa95ull, 0xa1a823db1edab60bull, 0xfa3762d988e62a97ull, 0x50f4fbd63a3b7c6aull }}, {{ 0x477b8c38171dfc98ull, 0x5800ce7ccef7cbf1ull, 0xf386f0258f97c9d5ull, 0x5091668f348b1c74ull, 0xc629dc7f58fda9ecull, 0x2991d65e4652dc2dull }}, {{ 0xcad37a30e72bddeeull, 0x700810e015adf76cull, 0x834561779bede255ull, 0x25ae01980d6f1c91ull, 0xbda29cf979e8a33bull, 0x9fb25faebf3c99c9ull }}, {{ 0xec42c5e907b6ab48ull, 0x6050a8c0d8cbaa3full, 0x20b5ceac174ad756ull, 0x78cc0ff086571dafull, 0x685a21bec316604full, 0x3cf7bcd3785e01e1ull }}, {{ 0x3a9bbb1a4d22b0d5ull, 0xc326978877f4a67full, 0x471a12b8e8ec695full, 0xb7f89f653f6728d7ull, 0x138551739edfc31aull, 0x61ad6042b3ac12ceull }}, {{ 0x4a154f07035ae850ull, 0x9f81eb54af8e80f8ull, 0xc704bb39193c1dbdull, 0x2fb639f47a079868ull, 0xc3352e8434bd9f0bull, 0xd0c5c29b04b8bc0cull }}, {{ 0xe4d51646218d131cull, 0x3b13314edb9109b2ull, 0xc62f503afc592968ull, 0xdd1e438cc44bf417ull, 0xa013d12a0f68366full, 0x27b99a0e2f37587full }}, {{ 0xf052debd4f82bf1bull, 0x4ebfed1493aa60fcull, 0xbdd9224ddb7b9e12ull, 0xa32ea37faaf788edull, 0x40c62ba49a12205eull, 0x8d40048dd82974fcull }}, {{ 0x633cb3651b1b7712ull, 0x137f42cdc4a7c9e1ull, 0x6a7b570a92d42cb7ull, 0x5fd262fcadab5949ull, 0x87bdb46e04b543b2ull, 0x84802d8a719e91daull }}, {{ 0xe05f01f30f12a6b7ull, 0xc2f89c09ae8de2cdull, 0x28d16669bc49bf26ull, 0xbe37dddec8b17cdeull, 0x4d690c4c2f14a4f7ull, 0x2d01c7687031b289ull }}, {{ 0xc3b6137e96ba8326ull, 0x9db61860d18adc0aull, 0x982e00215ae17783ull, 0x6e2eaab3d6eee0adull, 0x061a7af9d6ce71adull, 0xc211ca1461f0f95dull }}, {{ 0xa51cc2f1e3491f77ull, 0x291cf3c82f6c986bull, 0xf1cc014d8cceab24ull, 0x4dd2ab066554c6c7ull, 0x3d08cdc2641070c6ull, 0x94b1e4cbd369bda2ull }}, {{ 0x731f9d72e0db3aabull, 0x9b2185d1da3df434ull, 0x71f80d078012af69ull, 0x0a3aae3ff54fc3cfull, 0x62580997e8a467bfull, 0xcef2eff642216856ull }}, {{ 0x7f3c267cc8904aaaull, 0x0f4f3a32866b8a0cull, 0x73b0824b00bada20ull, 0x664ace7f951da61aull, 0xd7705fef166c0d76ull, 0x157d5f9e954e135full }}, {{ 0xf85980dfd5a2eaa7ull, 0x991845f94033647cull, 0x84e516ee074c8540ull, 0xfeec10fbd3287d08ull, 0x6a63bf56e038869full, 0xd6e5bc31d50cc1beull }}, {{ 0xb37f08be585d2a89ull, 0xfaf2bbbc8201ece1ull, 0x30f2e54c48fd3485ull, 0xf538a9d63f94e255ull, 0x27e57964c235423full, 0x64f959f2527f9170ull }}, {{ 0x02f6576f73a3a95bull, 0xcd7b555d141340d1ull, 0xe97cf4fad9e40d3bull, 0x9436a25e7bd0d753ull, 0x8ef6bdef9614967full, 0xf1bd837738fbae61ull }}, {{ 0x1d9f6a5a84649d8cull, 0x06d155a2c8c0882aull, 0x1ee191cc82e88456ull, 0xca2257b0d6286947ull, 0x95a36b5bdccde0fbull, 0x716722a839d4cfcfull }}, {{ 0x283a27892bee2777ull, 0x442d585bd78551a5ull, 0x34cfb1fd1d152b5cull, 0xe5576ce85d941cc7ull, 0xd8623196a00ac9d5ull, 0x6e075a9242501e1bull }}, {{ 0x92458b5bb74d8aabull, 0xa9c573966b353073ull, 0x101cf3e322d3b19aull, 0xf56a4113a7c91fc8ull, 0x73d5efe2406be25aull, 0x4c4989b697212d16ull }}, {{ 0xb6b7719529076aabull, 0xa1b683e03013e483ull, 0xa12186df5c44f00aull, 0x96268ac48ddb3dd0ull, 0x865b5ed68436d78dull, 0xfadf6121e74bc2e0ull }}, {{ 0x232a6fd39a4a2aafull, 0x512126c1e0c6ed25ull, 0x4b4f44b99ab1606aull, 0xdd816bad8a906a26ull, 0x3f91b4612a246b87ull, 0xccb9cb5308f59cc5ull }}, {{ 0x5fa85e4406e5aad6ull, 0x2b4b8392c7c54373ull, 0xf118af400aedc427ull, 0xa70e34c769a4257eull, 0x7bb10bcba56c334eull, 0xff41f13e59981fb4ull }}, {{ 0xbc93aea844f8ac57ull, 0xb0f323bbcdb4a281ull, 0x6af6d8806d49a987ull, 0x868e0fca206976f5ull, 0xd4ea75f4763a0112ull, 0xf8936c6f7ff13d0cull }}, {{ 0x5dc4d292b1b6bb6bull, 0xe97f6556090e5911ull, 0x2da4750444e09f4cull, 0x418c9de5441ea596ull, 0x51289b8c9e440ab9ull, 0xb5c23c5aff6c6280ull }}, {{ 0xa9b039baf123522dull, 0x1ef9f55c5a8f7aadull, 0xc86c922ab0c63901ull, 0x8f7e2af4a93277ddull, 0x2b96137e2ea86b3cull, 0x19965b8dfa3bd903ull }}, {{ 0xa0e2414d6b6135c3ull, 0x35c3959b899acac8ull, 0xd43db5aae7be3a0bull, 0x9aedad8e9bf8aea9ull, 0xb3dcc2edd294305dull, 0xffdf938bc6567a1full }}, {{ 0x48d68d0631cc19a3ull, 0x19a3d813600bebd6ull, 0x4a6918ad0d6e4470ull, 0x0d48c79217b6d2a2ull, 0x069f9d4a39c9e3a8ull, 0xfebbc375bf60c53dull }}, {{ 0xd861823df1f9005cull, 0x006670c1c077365eull, 0xe81af6c2864eac61ull, 0x84d7cbb4ed243a56ull, 0x423c24e641e2e490ull, 0xf355a29979c7b462ull }}, {{ 0x73cf166b73ba039cull, 0x0400679184a81fb4ull, 0x110da3993f12bbcaull, 0x306df511436a4765ull, 0x965970fe92dceda5ull, 0x815859fec1cd0bd6ull }}, {{ 0x8616e03285442418ull, 0x28040baf2e913d0cull, 0xaa8863fc76bb55e4ull, 0xe44b92aca226c9f2ull, 0xdf7e69f1bca14873ull, 0x0d7383f392027661ull }}, {{ 0x3ce4c1f934a968ecull, 0x902874d7d1ac627dull, 0xa953e7dca3515ae9ull, 0xeaf3babe5583e37aull, 0xbaf023715e4cd486ull, 0x86832783b4189fd2ull }}, {{ 0x60ef93bc0e9e1938ull, 0xa194906e30bbd8e4ull, 0x9d470e9e612d8d1full, 0x2d854b6f5726e2caull, 0x4d61626daf004d45ull, 0x411f8b2508f63e3bull }}, {{ 0xc95bc558922cfc30ull, 0x4fcda44de75678ebull, 0x24c6922fcbc7833cull, 0xc734f2596784dbeaull, 0x05cdd848d60304b3ull, 0x8b3b6f72599e6e51ull }}, {{ 0xdd95b575b5c1d9dcull, 0x1e086b0b0960b935ull, 0x6fc1b5ddf5cb205bull, 0xc811777e0b309725ull, 0x3a0a72d85c1e2f05ull, 0x70525a7780304f2aull }}, {{ 0xa7d9169919928294ull, 0x2c542e6e5dc73c1aull, 0x5d911aab99ef438full, 0xd0aeaaec6fe5e776ull, 0x44687c73992dd639ull, 0x633788ab01e317a6ull }}, {{ 0x8e7ae1faffb919cdull, 0xbb49d04fa9c8590aull, 0xa7ab0ab40358a397ull, 0x26d2ad3c5efb0a9full, 0xac14dc83fbca5e42ull, 0xe02b56ae12deec7eull }}, {{ 0x90ccd3cdfd3b01fdull, 0x50e2231ca1d37a69ull, 0x8cae6b08217663edull, 0x843ac45bb5ce6a3cull, 0xb8d09d27d5e7ae95ull, 0xc1b162ccbcb53cf2ull }}, {{ 0xa800460be44e13e4ull, 0x28d55f1e5242c81full, 0x7ed02e514e9fe745ull, 0x2a4bab951a10265dull, 0x3826238e5b0cd1d7ull, 0x90eddbff5f14617bull }}, {{ 0x9002bc76eb0cc6e4ull, 0x9855b72f369bd13cull, 0xf421cf2d123f08b3ull, 0xa6f4b3d304a17fa6ull, 0x317d638f8e803267ull, 0xa94a97f9b6cbced0ull }}, {{ 0xa01b5ca52e7fc4e6ull, 0xf35927d822162c5dull, 0x895217c2b6765703ull, 0x858f063e2e4efc85ull, 0xeee5e39b9101f80cull, 0x9ce9efc123f61421ull }}, {{ 0x41119e73d0fdb0faull, 0x817b8e7154ddbba8ull, 0x5d34ed9b209f6627ull, 0x37963e6dcf15dd37ull, 0x54fae413aa13b07dull, 0x21235d8b679cc953ull }}, {{ 0x8ab0308629e8e9c2ull, 0x0ed3906d50a95492ull, 0xa411480f4639fd8bull, 0x2bde704a16daa429ull, 0x51cce8c4a4c4e4e4ull, 0x4b61a7720c1fdd41ull }}, {{ 0x6ae1e53da3192195ull, 0x9443a445269d4db9ull, 0x68acd098be43e76eull, 0xb6b062e4e48a69a0ull, 0x320117ae6fb0f0e9ull, 0xf1d08a74793ea48dull }}, {{ 0x2cd2f4685efb4fcdull, 0xcaa46ab38225093eull, 0x16c025f76ea70a51ull, 0x22e3dcf0ed682044ull, 0xf40aecd05ce96921ull, 0x7225688cbc726d83ull }}, {{ 0xc03d8c13b5d11e02ull, 0xea6c2b0315725c6dull, 0xe3817baa52866731ull, 0x5ce6a169461142a8ull, 0x886d4023a11e1b4bull, 0x7576157f5c784727ull }}, {{ 0x826778c51a2b2c18ull, 0x2839ae1ed6779c49ull, 0xe30ed4a7394007f3ull, 0xa1024e1cbcac9a98ull, 0x544481644b2d10f1ull, 0x969cd6f99cb2c78bull }}, {{ 0x180ab7b305afb8f3ull, 0x9240cd3460ac1adfull, 0xde944e883c804f7full, 0x4a170d1f5ebe09f8ull, 0x4aad0deaefc2a970ull, 0xe22065c01efbcb71ull }}, {{ 0xf06b2cfe38dd397cull, 0xb688040bc6b90cb6ull, 0xb1cb11525d031afbull, 0xe4e68339b36c63b8ull, 0xeac28b2d5d9a9e62ull, 0xd543f98135d5f26cull }}, {{ 0x642fc1ee38a43ed8ull, 0x21502875c33a7f25ull, 0xf1eead37a21f0dd5ull, 0xf1012041023be536ull, 0x2b996fc5a80a2fdcull, 0x54a7bf0c1a5b7841ull }}, {{ 0xe9dd934e366a7473ull, 0x4d219499a048f775ull, 0x7352c42c55368a53ull, 0x6a0b428a1656f425ull, 0xb3fe5db89065dea1ull, 0x4e8d76790792b28bull }}, {{ 0x22a7c10e20288c7aull, 0x034fce0042d9aa9bull, 0x813ba9bb54216741ull, 0x24709964df658976ull, 0x07efa935a3fab24eull, 0x1186a0ba4bbaf975ull }}, {{ 0x5a8d8a8d41957cc3ull, 0x211e0c029c80aa0full, 0x0c54a151494e088aull, 0x6c65fdf0b9f75ea1ull, 0x4f5c9c1867caf70dull, 0xaf424746f54dbe92ull }}, {{ 0x898769848fd6df9eull, 0x4b2c781a1d06a499ull, 0x7b4e4d2cdd0c5565ull, 0x3bfbeb6743a9b24aull, 0x199e18f40deda686ull, 0xd896c8c5950971b7ull }}, {{ 0x5f4a1f2d9e64bc30ull, 0xefbcb10522426dffull, 0xd10f03c0a27b55f4ull, 0x57d73208a4a0f6e8ull, 0x002cf9888b48813eull, 0x75e3d7b7d25e7127ull }}, {{ 0xb8e537c82fef59dfull, 0x5d5eea3356984bf9ull, 0x2a96258658d15b91ull, 0x6e67f4566e49a518ull, 0x01c1bf5570d50c6full, 0x9ae66d2e37b06b86ull }}, {{ 0x38f42dd1df5982b9ull, 0xa5b5260161f2f7c1ull, 0xa9dd773f782d93adull, 0x500f8b604ee072f1ull, 0x1191795668527c5aull, 0x0d0043ce2ce4333cull }}, {{ 0x3989ca32b97f1b3eull, 0x79137c0dd37dad8cull, 0xa2a6a87ab1c7c4c8ull, 0x209b71c314c47d70ull, 0xafaebd601338db87ull, 0x8202a60dc0ea0058ull }}, {{ 0x3f61e5fb3ef7106full, 0xbac2d88a42e8c77aull, 0x5a8294caf1cdafd4ull, 0x4612719ecface666ull, 0xdcd365c0c0389347ull, 0x141a7c8989240376ull }}, {{ 0x79d2fbd075a6a454ull, 0x4b9c75669d17cac6ull, 0x8919cfed7208de4full, 0xbcb870341cc0ffffull, 0xa041f9878235c0c8ull, 0xc908dd5f5b6822a4ull }}, {{ 0xc23dd62498826b4bull, 0xf41c960222edebc0ull, 0x5b021f467458af18ull, 0x5f3462091f89fffbull, 0x4293bf4b161987d7ull, 0xda58a5b992115a6eull }}, {{ 0x966a5d6df51830efull, 0x891ddc155d4b3587ull, 0x8e1538c08b76d6f9ull, 0xb80bd45b3b63ffd1ull, 0x99c578eedcff4e69ull, 0x8776793fb4ad884eull }}, {{ 0xe027a64b92f1e956ull, 0x5b2a98d5a4f0174bull, 0x8cd4378572a465bfull, 0x30764b9051e7fe2full, 0x01b6b954a1f91021ull, 0x4aa0bc7d0ec75312ull }}, {{ 0xc18c7ef3bd731d5bull, 0x8fa9f8587160e8f6ull, 0x804a2b367a6bf979ull, 0xe49ef3a3330feddbull, 0x11233d4e53baa14bull, 0xea475ce293c93eb4ull }}, {{ 0x8f7cf585667f2589ull, 0x9ca3b3746dc919a3ull, 0x02e5b020c837bebfull, 0xee35845ffe9f4a93ull, 0xab60650f454a4cf6ull, 0x26c9a0d9c5dc7308ull }}, {{ 0x9ae1973600f7775eull, 0x1e65028c49db0063ull, 0x1cf8e147d22d737cull, 0x4e172bbff238e9beull, 0xb1c3f298b4e701a5ull, 0x83e04881ba9c7e56ull }}, {{ 0x0ccfe81c09aaa9b0ull, 0x2ff2197ae28e03e4ull, 0x21b8ccce35c682d9ull, 0x0ce7b57f7639216dull, 0xf1a779f711061075ull, 0x26c2d5114a1cef62ull }}, {{ 0x801f111860aaa0e4ull, 0xdf74feccd98c26e8ull, 0x5138000e19c11c7bull, 0x810d16fa9e3b4e43ull, 0x708ac3a6aa3ca492ull, 0x839c52ace52159ddull }}, {{ 0x0136aaf3c6aa48eaull, 0xba91f4007f798515ull, 0x2c30008d018b1cd6ull, 0x0a82e5ca2e510ea1ull, 0x656ba482a65e6db9ull, 0x241b3ac0f34d82a6ull }}, {{ 0x0c22ad85c2a6d924ull, 0x49b38804fabf32d2ull, 0xb9e005820f6f2063ull, 0x691cf9e5cf2a924bull, 0xf6346d1a7fb0493aull, 0x69104b8981071a7full }}, {{ 0x795ac7399a847b65ull, 0xe1035031cb77fc34ull, 0x42c037149a5743e0ull, 0x1b21c2fa17a9b6f5ull, 0x9e0c4308fce2dc48ull, 0x1aa2f35f0a4708ffull }}, {{ 0xbd8bc840092cd1efull, 0xca2121f1f2afda0cull, 0x9b8226ce0768a6c8ull, 0x0f519dc4eca12594ull, 0x2c7a9e59e0dc9ad1ull, 0x0a5d81b666c659fcull }}, {{ 0x6775d2805bc03359ull, 0xe54b53737ade847full, 0x1315840c4a1683d7ull, 0x993029b13e4b77ceull, 0xbcca2f82c89e0c2aull, 0x67a7112003bf83d9ull }}, {{ 0x0a9a390395820176ull, 0xf4f14282ccb12cfaull, 0xbed7287ae4e1266eull, 0xfbe1a0ec6ef2ae0cull, 0x5fe5db1bd62c79a9ull, 0x0c86ab40257b2681ull }}, {{ 0x6a063a23d7140ea1ull, 0x916c991bfeebc1c4ull, 0x746794ccf0cb8055ull, 0xd6d0493c557acc7full, 0xbefa8f165dbcc0a3ull, 0x7d42b08176cf810dull }}, {{ 0x243e456666c89248ull, 0xae3dfb17f53591acull, 0x8c0bd00167f30357ull, 0x6422dc5b56cbfcfaull, 0x75c996dfa95f8666ull, 0xe49ae50ea41b0a89ull }}, {{ 0x6a6eb60003d5b6d2ull, 0xce6bceef9417b0b9ull, 0x7876200e0f7e216cull, 0xe95c9b9163f7e1c9ull, 0x99dfe4bc9dbb3fffull, 0xee0cf292690e695eull }}, {{ 0x28531c0026592433ull, 0x1036155bc8ece73eull, 0xb49d408c9aed4e40ull, 0x1d9e13ade7aed1deull, 0x02beef5e29507fffull, 0x4c8179b81a901db2ull }}, {{ 0x933f18017f7b6a02ull, 0xa21cd595d941086dull, 0x0e24857e0d450e80ull, 0x282cc4cb0cd432b3ull, 0x1b7559ad9d24fff7ull, 0xfd0ec13109a128f4ull }}, {{ 0xc076f00efad2240full, 0x552057da7c8a5447ull, 0x8d6d36ec84b29106ull, 0x91bfafee8049fafeull, 0x129580c82371ffa7ull, 0xe2938bea604b9989ull }}, {{ 0x84a56095cc356899ull, 0x53436e88dd674acdull, 0x8644253d2ef9aa3full, 0xb17cdf5102e3cdf1ull, 0xb9d707d16273fc8bull, 0xd9c37727c2f3ff5aull }}, {{ 0x2e75c5d9fa1615fcull, 0x40a25158a608ec07ull, 0x3ea97463d5c0a679ull, 0xeee0b92a1ce60b6full, 0x42664e2dd887dd74ull, 0x81a2a78d9d87f98bull }}, {{ 0xd099ba83c4dcdbdaull, 0x86572d767c593847ull, 0x729e8be6598680bcull, 0x54c73ba520fc7258ull, 0x97ff0dca754ea691ull, 0x105a8b88274fbf70ull }}, {{ 0x26014925b0a09685ull, 0x3f67c6a0db7c32ceull, 0x7a3176ff7f41075dull, 0x4fc8547349dc7774ull, 0xeff689e8951281adull, 0xa3897351891d7a65ull }}, {{ 0x7c0cdb78e645e12full, 0x7a0dc24892d9fc0dull, 0xc5eea5faf88a49a4ull, 0x1dd34c80e29caa8cull, 0x5fa16315d2b910c5ull, 0x635e812f5b26c7fbull }}, {{ 0xd88092b8febacbd2ull, 0xc48996d5bc83d886ull, 0xbb527bcdb566e06cull, 0x2a40fd08da1ea97full, 0xbc4ddeda3b3aa7b3ull, 0xe1b10bd98f83cfd1ull }}, {{ 0x7505bb39f34bf637ull, 0xad5fe4595d267544ull, 0x5138d6091604c43full, 0xa689e25885329efdull, 0x5b0ab486504a8cffull, 0xd0ea767f9b261e31ull }}, {{ 0x9239504380f79e21ull, 0xc5beeb7da38094acull, 0x2c385c5adc2faa7cull, 0x8162d77533fa35e5ull, 0x8e6b0d3f22e981fcull, 0x2928a0fc0f7d2dedull }}, {{ 0xb63d22a309ac2d4eull, 0xb97532e86305cebdull, 0xba339b8c99dca8dfull, 0x0ddc6a9407c61af3ull, 0x902e84775d1f13ddull, 0x9b9649d89ae3cb47ull }}, {{ 0x1e635a5e60b9c50aull, 0x3e93fd13de3a1369ull, 0x4604137e029e98bdull, 0x8a9c29c84dbd0d85ull, 0xa1d12ca9a336c6a2ull, 0x13dee2760ce5f0cbull }}, {{ 0x2fe187afc741b260ull, 0x71c7e2c6ae44c21bull, 0xbc28c2ec1a31f764ull, 0x6a19a1d309628734ull, 0x522bbea06023c259ull, 0xc6b4d89c80fb67f4ull }}, {{ 0xdecf4cddc890f7bbull, 0x71cedbc2ceaf950full, 0x59979d3905f3a9ecull, 0x2500523e5dd9480full, 0x35b57243c165977eull, 0xc310761d09d20f8bull }}, {{ 0xb41900a9d5a9ad50ull, 0x7214959c12dbd29eull, 0x7fec243a3b84a33cull, 0x7203366faa7cd099ull, 0x191676a58df7eaedull, 0x9ea49d2262349b70ull }}, {{ 0x08fa06a258a0c520ull, 0x74cdd818bc963a33ull, 0xff396a46532e605cull, 0x7420205ca8e025feull, 0xfae0a2778baf2d46ull, 0x326e2357d60e1260ull }}, {{ 0x59c442577647b340ull, 0x900a70f75dde45feull, 0xf83e26bf3fcfc39cull, 0x8941439e98c17bf5ull, 0xccc658ab74d7c4c0ull, 0xf84d616e5c8cb7c9ull }}, {{ 0x81aa976a9ecd0084ull, 0xa06869a9aaaebbefull, 0xb26d83787e1da41dull, 0x5c8ca431f78ed79bull, 0xffbf76b2906daf85ull, 0xb305ce4f9d7f2de1ull }}, {{ 0x10a9ea2a34020524ull, 0x441420a0aad3575bull, 0xf84722b4ed286928ull, 0x9d7e69f3ab946c14ull, 0xfd7aa2f9a448db35ull, 0xfe3a0f1c26f7cad3ull }}, {{ 0xa6a325a60814336dull, 0xa8c94646ac41698eull, 0xb2c75b1143941b92ull, 0x26f02384b3cc38d1ull, 0xe6ca5dc06ad89018ull, 0xee44971985adec47ull }}, {{ 0x825f787c50ca023full, 0x97dcbec2ba8e1f92ull, 0xfbc98eaca3c913baull, 0x8561632f05fa3830ull, 0x03e7a9842c75a0f1ull, 0x4eade6ff38cb3acfull }}, {{ 0x17bab4db27e41672ull, 0xee9f739b498d3bb9ull, 0xd5df92be65dac549ull, 0x35cddfd63bc631e9ull, 0x270c9f29bc98496full, 0x12cb05f837f04c16ull }}, {{ 0xed4b108f8ee8e073ull, 0x523a8410df84553aull, 0x5abbbb6ffa8bb4e3ull, 0x1a0abe5e55bdf322ull, 0x867e37a15df2de58ull, 0xbbee3bb22f62f8ddull }}, {{ 0x44eea59b9518c482ull, 0x364928a8bb2b544dull, 0x8b55525fc97510e1ull, 0x046b6faf596b7f57ull, 0x40ee2c4dab7caf71ull, 0x574e54f5d9ddb8a7ull }}, {{ 0xb1527813d2f7ad17ull, 0x1edb96974fb14b04ull, 0x715537bdde92a8ccull, 0x2c325cd97e32f96bull, 0x894dbb08b2deda6aull, 0x690f519a82a93688ull }}, {{ 0xed38b0c63dacc2e6ull, 0x3493e1e91cecee2eull, 0x6d542d6ab1ba97f9ull, 0xb9f7a07eedfdbe32ull, 0x5d094e56fcb48825ull, 0x1a9930091a9c2155ull }}, {{ 0x4436e7be68bf9cf9ull, 0x0dc6d31b21414dd5ull, 0x4549c62af149efbcull, 0x43ac44f54be96df8ull, 0xa25d0f65df0d5179ull, 0x09fbe05b0a194d55ull }}, {{ 0xaa250d70177c21b7ull, 0x89c43f0f4c8d0a54ull, 0xb4e1bdad6ce35d58ull, 0xa4bab194f71e4bb2ull, 0x57a299fab6852ebcull, 0x63d6c38e64fd0558ull }}, {{ 0xa5728660ead95121ull, 0x61aa7698fd82674eull, 0x10d168c640e1a575ull, 0x6f4aefd1a72ef4fbull, 0x6c5a03cb2133d35eull, 0xe663a38ff1e23573ull }}, {{ 0x76793fc92c7d2b4aull, 0xd0a8a1f9e7180912ull, 0xa82e17be88d07695ull, 0x58ed5e3087d591ceull, 0x3b8425ef4c0641b0ull, 0xffe4639f72d61682ull }}, {{ 0xa0bc7ddbbce3b0e5ull, 0x269653c306f05ab8ull, 0x91cced715824a1daull, 0x7945ade54e57b212ull, 0x53297b58f83e90e3ull, 0xfeebe43a7c5ce116ull }}, {{ 0x475cea9560e4e8f7ull, 0x81df459e45638b36ull, 0xb201466d716e5285ull, 0xbcb8caf50f6cf4b9ull, 0x3f9ed179b271a8e2ull, 0xf536ea48dba0cadfull }}, {{ 0xc9a129d5c8f119a2ull, 0x12b8b82eb5e3701eull, 0xf40cc0466e4f3937ull, 0x5f37ed929a418f40ull, 0x7c342ec0f87098dbull, 0x942526d89447ecb8ull }}, {{ 0xe04ba259d96b0054ull, 0xbb3731d31ae26133ull, 0x887f82c04f183c26ull, 0xb82f47ba068f9889ull, 0xda09d389b465f891ull, 0xc9738475cacf3f34ull }}, {{ 0xc2f457827e2e034bull, 0x5027f23f0cd7cc06ull, 0x54fb1b8316f25983ull, 0x31d8cd44419bf55full, 0x846243610bfbb5b1ull, 0xde832c99ec187810ull }}, {{ 0x9d8b6b18edcc20f2ull, 0x218f7676806df843ull, 0x51cf131ee5777f21ull, 0xf27804aa901795b9ull, 0x2bd6a1ca77d518ebull, 0xb11fbe0338f4b0a5ull }}, {{ 0x27722ef949f94975ull, 0x4f9aa0a1044bb2a4ull, 0x3216bf34f6aaf74bull, 0x78b02ea9a0ebd93dull, 0xb66251e8ae52f937ull, 0xeb3d6c20398ee673ull }}, {{ 0x8a75d5bce3bcde95ull, 0x1c0a464a2af4fa69ull, 0xf4e37811a2ada8f1ull, 0xb6e1d2a049367c63ull, 0x1fd73316cf3dbc2aull, 0x306639423f950085ull }}, {{ 0x689a5960e560b1cfull, 0x1866bee5ad91c81full, 0x90e2b0b05ac8996bull, 0x24d23a42dc20dbe7ull, 0x3e67fee4186959abull, 0xe3fe3c967bd20533ull }}, {{ 0x16077dc8f5c6f214ull, 0xf40374f8c7b1d13aull, 0xa8dae6e38bd5fe2eull, 0x7036469c9948970bull, 0x700ff4e8f41d80afull, 0xe7ee5de0d6343400ull }}, {{ 0xdc4ae9d999c574c8ull, 0x882291b7ccf22c44ull, 0x988d04e3765bedd5ull, 0x621ec21dfcd5e674ull, 0x609f9119892706daull, 0x0f4faac85e0a0804ull }}, {{ 0x9aed228001b68fcbull, 0x5159b12e0175bab0ull, 0xf58230e29f974a57ull, 0xd533952be05b008dull, 0xc63baaff5b864487ull, 0x991cabd3ac64502bull }}, {{ 0x0d43590011219deeull, 0x2d80ebcc0e994ae6ull, 0x9715e8da3be8e769ull, 0x5403d3b6c38e058bull, 0xbe54adf9933ead4eull, 0xfb1eb644bbeb21b5ull }}, {{ 0x84a17a00ab502b51ull, 0xc70935f891fcecfcull, 0xe6db188657190a1bull, 0x48264523a38c3773ull, 0x6f4ecbbfc072c50full, 0xcf331eaf572f5119ull }}, {{ 0x2e4ec406b121b12aull, 0xc65c1bb5b3e141ddull, 0x048ef53f66fa6515ull, 0xd17eb364637a2a87ull, 0x5913f57d847bb298ull, 0x17ff32d967d92afeull }}, {{ 0xcf13a842eb50eba2ull, 0xbf99151906cc92a3ull, 0x2d95947a05c7f2d9ull, 0x2ef301ebe2c5a946ull, 0x7ac796e72cd4f9f8ull, 0xeff7fc7e0e7badefull }}, {{ 0x16c4929d31293456ull, 0x7bfad2fa43fdba66ull, 0xc7d7ccc439cf7c81ull, 0xd57e1336dbb89cbdull, 0xcbcbe507c051c3b1ull, 0x5fafdcec90d4cb5aull }}, {{ 0xe3adba23eb9c0b59ull, 0xd7cc3dc6a7e947fcull, 0xce6dffaa421add0eull, 0x56ecc02495361f69ull, 0xf5f6f24d8331a4f2ull, 0xbcdea13da84ff18bull }}, {{ 0xe4c9456734187178ull, 0x6dfa69c28f1ccfe0ull, 0x104bfca6950ca294ull, 0x653f816dd41d3a22ull, 0x9ba577071ff07177ull, 0x60b24c68931f6f77ull }}, {{ 0xefdcb60808f46eb3ull, 0x4bc8219997201ec8ull, 0xa2f7de81d27e59ccull, 0xf47b0e4a49244554ull, 0x1476a6473f646ea9ull, 0xc6f6fc15bf3a5aacull }}, {{ 0x5e9f1c50598c5300ull, 0xf5d14fffe74133d9ull, 0x5daeb11238ef81faull, 0x8cce8ee6db6ab54eull, 0xcca27ec879ec52a3ull, 0xc5a5d8d978478ab8ull }}, {{ 0xb2371b237f7b3e05ull, 0x9a2d1fff088c067dull, 0xa8d2eab6395b13cdull, 0x80119504922b150full, 0xfe58f3d4c33b3a63ull, 0xb87a787eb2cb6b37ull }}, {{ 0xf6270f62fad06c2eull, 0x05c33ff6557840e8ull, 0x983d2b1e3d8ec608ull, 0x00afd22db5aed29cull, 0xef79864fa05047e3ull, 0x34c8b4f2fbf2302full }}, {{ 0x9d8699ddcc2439cfull, 0x39a07f9f56b28919ull, 0xf263af2e6793bc50ull, 0x06de35c918d43a1dull, 0x5abf3f1c4322cedeull, 0x0fd7117dd775e1dfull }}, {{ 0x274202a9f96a4211ull, 0x4044fc3962f95b00ull, 0x77e4d7d00bc55b22ull, 0x44ae19daf84a452bull, 0x8b78771a9f5c14acull, 0x9e66aeea6a9ad2b9ull }}, {{ 0x88941aa3be2694adull, 0x82b1da3dddbd8e01ull, 0xaef06e2075b58f56ull, 0xaecd028db2e6b3b2ull, 0x72b4a70a3998cebaull, 0x3002d5282a0c3b3full }}, {{ 0x55c90a656d81cec6ull, 0x1af2866aa9678c0full, 0xd5644d4499179961ull, 0xd4021988fd0304faull, 0x7b0e86663ff8134aull, 0xe01c5391a47a507aull }}, {{ 0x59da67f6471213b9ull, 0x0d79402a9e0b7899ull, 0x55eb04adfaebfdcbull, 0x4814ff59e21e31ccull, 0xce913ffe7fb0c0ecull, 0xc11b43b06cc724c8ull }}, {{ 0x82880f9ec6b4c53aull, 0x86bc81aa2c72b5fdull, 0x5b2e2ecbcd37e9eeull, 0xd0d1f982d52df1fbull, 0x11ac7ff0fce7893aull, 0x8b10a4e43fc76fd8ull }}, {{ 0x19509c33c30fb443ull, 0x435d10a5bc7b1be7ull, 0x8fcdd3f6042f2351ull, 0x2833bf1c53cb73d1ull, 0xb0bcff69e10b5c4cull, 0x6ea670ea7dca5e70ull }}, {{ 0xfd261a059e9d0a9bull, 0xa1a2a6795ccf1706ull, 0x9e0a479c29d7612cull, 0x9205771b45f2862full, 0xe761fa22ca719af9ull, 0x52806928e9e7b066ull }}, {{ 0xe37d043832226a11ull, 0x505a80bda016e645ull, 0x2c66cc19a269cbbeull, 0xb436a710bb793ddcull, 0x09d3c55be8700dbfull, 0x39041b99230ce405ull }}, {{ 0xe2e22a31f55824a8ull, 0x2389076840e4febaull, 0xbc03f9005821f56full, 0x0a2286a752bc6a99ull, 0x6245b5971460897dull, 0x3a2913fb5e80e832ull }}, {{ 0xdcd5a5f395716e94ull, 0x635a4a1288f1f34cull, 0x5827ba0371539657ull, 0x655942893b5c2a01ull, 0xd6b917e6cbc55ee2ull, 0x459ac7d1b10911f7ull }}, {{ 0xa0587b83d66e51c4ull, 0xe186e4b959738100ull, 0x718d44226d43df69ull, 0xf57c995c5199a40dull, 0x633aef03f5b5b4d7ull, 0xb80bce30ea5ab3aeull }}, {{ 0x4374d326604f31a5ull, 0xcf44ef3d7e830a06ull, 0x6f84a95844a6ba22ull, 0x96ddfd9b30006886ull, 0xe04d56279919106full, 0x30760de9278b04cfull }}, {{ 0xa2903f7fc317f071ull, 0x18b15866f11e643eull, 0x5b2e9d72ae83455cull, 0xe4abe80fe0041540ull, 0xc3055d8bfafaa45bull, 0xe49c8b1b8b6e301eull }}, {{ 0x59a27afd9eef646dull, 0xf6ed74056b2fea72ull, 0x8fd2267ad120b598ull, 0xeeb7109ec028d483ull, 0x9e35a777cdca6b96ull, 0xee1d6f13724de133ull }}, {{ 0x8058cde83559ec3eull, 0xa54688362fdf2877ull, 0x9e3580cc2b4717f9ull, 0x5326a63381984d23ull, 0x2e188aae09e833e5ull, 0x4d2656c2770acc04ull }}, {{ 0x03780b1215833a6cull, 0x74c1521ddeb794abull, 0x2e1707f9b0c6efc0ull, 0x3f827e030ff30364ull, 0xccf56acc631206f5ull, 0x037f6398a66bf829ull }}, {{ 0x22b06eb4d720483aull, 0x8f8d352ab32bceaeull, 0xcce64fc0e7c55d84ull, 0x7b18ec1e9f7e21e9ull, 0x01962bfbdeb44594ull, 0x22f9e3f68037b1a2ull }}, {{ 0x5ae453106742d247ull, 0x9b8413aaffb612cdull, 0x00ff1d890db5a72dull, 0xcef939323aed5322ull, 0x0fddb7d6b30ab7ccull, 0x5dc2e7a1022cf054ull }}, {{ 0x8ceb3ea4089c36c4ull, 0x1328c4adfd1cbc05ull, 0x09f7275a891887c8ull, 0x15bc3bf64d453f54ull, 0x9ea92e62fe6b2e00ull, 0xa99d0c4a15c16348ull }}, {{ 0x81307268561a23a7ull, 0xbf97aecbe31f5837ull, 0x63a789895af54dd0ull, 0xd95a579f04b47948ull, 0x329bcfddf02fcc00ull, 0xa0227ae4d98de0d6ull }}, {{ 0x0be478135d056489ull, 0x7becd3f6df39722bull, 0xe48b5f5d8d950a27ull, 0x7d876c362f0cbcd3ull, 0xfa161eab61ddf808ull, 0x4158ccf07f8ac85dull }}, {{ 0x76ecb0c1a235ed5full, 0xd74047a4b83e75aeull, 0xed71b9a787d2658aull, 0xe74a3a1dd67f6046ull, 0xc4dd32b1d2abb054ull, 0x8d780164fb6bd3abull }}, {{ 0xa53ee790561b45b1ull, 0x6882cc6f327098d0ull, 0x4671408b4e37f76cull, 0x08e6452a60f9c2c5ull, 0xb0a3faf23ab4e351ull, 0x86b00df1d23644b5ull }}, {{ 0x74750ba35d10b8eeull, 0x151bfc57f865f826ull, 0xc06c85710e2faa3cull, 0x58feb3a7c9c19bb4ull, 0xe667cd764b10e12aull, 0x42e08b72361eaf18ull }}, {{ 0x8c927461a2a7394full, 0xd317db6fb3fbb180ull, 0x843d366a8ddca658ull, 0x79f3048de190150full, 0x000e069eeea8cba7ull, 0x9cc572761d32d6f9ull }}, {{ 0x7db88bd05a883d16ull, 0x3eee925d07d4ef05ull, 0x2a6420298a9e7f78ull, 0xc37e2d8acfa0d29bull, 0x008c42355297f48aull, 0x1fb6789d23fc65baull }}, {{ 0xe9357623895262daull, 0x7551b7a24e515636ull, 0xa7e9419f6a30fab2ull, 0xa2edc76c1c483a0full, 0x057a961539ef8d6bull, 0x3d20b62367dbf944ull }}, {{ 0x1c169d635d37dc84ull, 0x95312c570f2d5e25ull, 0x8f1c903a25e9caf8ull, 0x5d49ca391ad2449cull, 0x36c9dcd4435b8634ull, 0x63471d620e97bca8ull }}, {{ 0x18e225e1a42e9d2cull, 0xd3ebbb6697c5ad73ull, 0x971da2457b21edb5ull, 0xa4e1e63b0c36ae1dull, 0x23e2a04aa1933e0bull, 0xe0c725d491ed5e92ull }}, {{ 0xf8d57ad069d223b5ull, 0x47355201edb8c67eull, 0xe72856b6cf53491aull, 0x70d2fe4e7a22cd27ull, 0x66da42ea4fc06c74ull, 0xc7c77a4db345b1b5ull }}, {{ 0xb856cc2422356512ull, 0xc81534134937c0f5ull, 0x079363241940db06ull, 0x683def10c55c038full, 0x04869d271d843c8cull, 0xcdcac70900b8f116ull }}, {{ 0x3363f9695615f2b3ull, 0xd0d408c0dc2d8999ull, 0x4bc1df68fc888e43ull, 0x126b56a7b5982396ull, 0x2d422387272a5d7cull, 0x09ebc65a07396adcull }}, {{ 0x01e7be1d5cdb7afaull, 0x2848578899c75ffcull, 0xf592ba19dd558ea6ull, 0xb831628d17f163deull, 0xc495634787a7a6d8ull, 0x6335bf84483e2c99ull }}, {{ 0x130d6d25a092cdc6ull, 0x92d36b5601c9bfd8ull, 0x97bb4502a557927dull, 0x31edd982ef6de6b5ull, 0xadd5e0cb4c8c8477ull, 0xe0197b2ad26dbe01ull }}, {{ 0xbe86437845bc09b8ull, 0xbc42315c11e17e70ull, 0xed50b21a756bb8e7ull, 0xf34a7f1d5a4b0317ull, 0xca5ac7f0fd7d2ca7ull, 0xc0fecfac38496c10ull }}, {{ 0x713ea2b2b9586135ull, 0x5a95ed98b2cef067ull, 0x4526f5089635390dull, 0x80e8f72586ee1eefull, 0xe78bcf69e6e3be8full, 0x89f41cba32de38a7ull }}, {{ 0x6c725afb3d73cc11ull, 0x89db47f6fc15640aull, 0xb3859255de143a85ull, 0x0919a777454d3558ull, 0x0b761a2304e5719bull, 0x63891f45fcae368full }}, {{ 0x3c778dd06685f8abull, 0x6290cfa5d8d5e868ull, 0x0337b75aacca4937ull, 0x5b008aa8b5041577ull, 0x729d055e30f6700eull, 0xe35b38bbdece2196ull }}, {{ 0x5cab8a24013bb6b0ull, 0xd9a81c7a785b1412ull, 0x202d298abfe6dc29ull, 0x8e056a971228d6a6ull, 0x7a2235ade9a0608full, 0xe1903756b40d4fe0ull }}, {{ 0x9eb365680c5522e1ull, 0x80911cc8b38ec8b7ull, 0x41c39f6b7f0499a2ull, 0x8c3629e6b598627dull, 0xc55618cb2043c59bull, 0xcfa2296308851ec4ull }}, {{ 0x3301f6107b535cc9ull, 0x05ab1fd70393d72cull, 0x91a43a32f62e0059ull, 0x7a1da30317f3d8e4ull, 0xb55cf7ef42a5b813ull, 0x1c559dde553333afull }}, {{ 0xfe139ca4d1419fdfull, 0x38af3e6623c667b9ull, 0xb06a45fd9dcc037aull, 0xc5285e1eef8678edull, 0x15a1af589a7930c2ull, 0x1b582aaf540004ddull }}, {{ 0xecc41e702c903eb5ull, 0x36d86ffd65c00d43ull, 0xe426bbe829f822c6ull, 0xb393ad355b40b948ull, 0xd850d97608bbe79bull, 0x1171aad9480030a2ull }}, {{ 0x3fa93061bda27313ull, 0x24745fe5f98084a7ull, 0xe9835711a3b15bbeull, 0x03c4c41590873cd8ull, 0x73287e9c57570c15ull, 0xae70ac7cd001e65cull }}, {{ 0x7c9be3d168587ebbull, 0x6c8bbefbbf052e88ull, 0x1f2166b064ed956dull, 0x25afa8d7a5486079ull, 0x7f94f21b696678d2ull, 0xd066bce02012ff9cull }}, {{ 0xde16e62e1374f34full, 0x3d7575d57633d154ull, 0x374e02e3f147d646ull, 0x78dc986c74d3c4bbull, 0xfbd175121e00b835ull, 0x240360c140bdfc1cull }}, {{ 0xace4fdccc291811aull, 0x66969a569e062d50ull, 0x290c1ce76cce5ebeull, 0xb89df43c9045af50ull, 0xd62e92b52c073216ull, 0x6821c78c876bd921ull }}, {{ 0xc0f1e9ff99af0b02ull, 0x01e207622c3dc526ull, 0x9a79210a400fb370ull, 0x362b8a5da2b8d921ull, 0x5dd1bb13b847f4e3ull, 0x1151cb7d4a367b52ull }}, {{ 0x897323fc00d66e15ull, 0x12d449d5ba69b383ull, 0x08bb4a66809d0260ull, 0x1db367a85b387b50ull, 0xaa314ec532cf90e0ull, 0xad31f2e4e620d137ull }}, {{ 0x5e7f67d808604cd2ull, 0xbc4ae25948210323ull, 0x5750e801062217c0ull, 0x29020c939034d120ull, 0xa5ed13b3fc1ba8c1ull, 0xc3f37cf0fd482c2cull }}, {{ 0xb0fa0e7053c30035ull, 0x5aecd77cd14a1f61ull, 0x6929100a3d54ed87ull, 0x9a147dc3a2102b43ull, 0x7b42c507d914978bull, 0xa782e169e4d1b9beull }}, {{ 0xe9c49063459e0216ull, 0x8d406ae02ce539d0ull, 0x1b9aa06665514749ull, 0x04cce9a454a1b0a2ull, 0xd09bb24e7acdeb74ull, 0x8b1cce22f0314170ull }}, {{ 0x21ada3e0b82c14d8ull, 0x84842cc1c0f44229ull, 0x140a43fff52cc8dfull, 0x3001206b4e50e655ull, 0x2614f710cc0b3288ull, 0x6f200d5d61ec8e68ull }}, {{ 0x50c866c731b8d06cull, 0x2d29bf91898a959bull, 0xc866a7ff93bfd8bbull, 0xe00b44310f28ff52ull, 0x7cd1a6a7f86ff951ull, 0x574085a5d33d9011ull }}, {{ 0x27d403c7f138243dull, 0xc3a17baf5f69d811ull, 0xd4028ffbc57e774full, 0xc070a9ea9799f93bull, 0xe030828fb45fbd32ull, 0x6885387a4067a0aeull }}, {{ 0x8e4825cf6c316a5full, 0xa44ed4d9ba2270abull, 0x48199fd5b6f0a91dull, 0x8466a329ec03bc56ull, 0xc1e5199d0bbd63fbull, 0x153434c6840c46d4ull }}, {{ 0x8ed17a1a39ee27b2ull, 0x6b145081455866b3ull, 0xd1003e5925669b28ull, 0x2c025fa338255b5eull, 0x92f300227565e7d3ull, 0xd40a0fc1287ac44full }}, {{ 0x942ec506434d8cefull, 0x2ecb250cb5740303ull, 0x2a026f7b76020f94ull, 0xb817bc60317591b4ull, 0xbd7e015895fb0e3full, 0x48649d8b94cbab1bull }}, {{ 0xc9d3b23ea1078159ull, 0xd3ef727f16881e23ull, 0xa4185ad29c149bc9ull, 0x30ed5bc1ee97b109ull, 0x66ec0d75dbce8e7dull, 0xd3ee2773cff4af15ull }}, {{ 0xe244f6724a4b0d77ull, 0x475a78f6e1512d65ull, 0x68f38c3a18ce15e2ull, 0xe945959351ecea60ull, 0x0538869a961190e3ull, 0x474d8a861f8ed6d6ull }}, {{ 0xd6b1a076e6ee86a5ull, 0xc988b9a4cd2bc5faull, 0x19837a44f80cdad6ull, 0x1cb7d7c1334127c4ull, 0x34354209dcafa8e7ull, 0xc907693d3b94645cull }}, {{ 0x62f044a50551426eull, 0xdf57407003b5bbccull, 0xff22c6b1b0808c63ull, 0x1f2e6d8c008b8da8ull, 0x0a1494629edc9907ull, 0xda4a1c6453cbeb9aull }}, {{ 0xdd62ae72352c984eull, 0xb9688460251955fbull, 0xf75bc2f0e5057be6ull, 0x37d0477805738899ull, 0x64cdcbda349dfa47ull, 0x86e51beb45f73404ull }}, {{ 0xa5dad07613bdf30eull, 0x3e152bc172fd5bd6ull, 0xa9959d68f236d703ull, 0x2e22cab036835603ull, 0xf009f6860e2bc6c8ull, 0x44f31730bba8082bull }}, {{ 0x7a8c249cc56b7e8aull, 0x6cd3b58e7de59662ull, 0x9fd8261976246620ull, 0xcd5beae221215c24ull, 0x6063a13c8db5c3d1ull, 0xb17ee7e7549051b7ull }}, {{ 0xc9796e1fb632f162ull, 0x40451790eaf7dfd8ull, 0x3e717cfe9d6bfd44ull, 0x05972cd54b4d996eull, 0xc3e44c5d8919a632ull, 0xeef50f094da33129ull }}, {{ 0xdebe4d3d1dfd6dd8ull, 0x82b2eba92daebe77ull, 0x706ee1f22637e4aaull, 0x37e7c054f107fe4eull, 0xa6eafba75b007df4ull, 0x5592965d085feba1ull }}, {{ 0xb36f04632be64a6full, 0x1afd349bc8d370aeull, 0x6454d3757e2eeea9ull, 0x2f0d83516a4fef10ull, 0x852dd4898e04eb8aull, 0x57b9dfa253bf3450ull }}, {{ 0x02562bdfb6fee858ull, 0x0de40e15d84266d3ull, 0xeb504296edd5529bull, 0xd687212e271f56a3ull, 0x33ca4d5f8c313365ull, 0x6d42bc5745780b25ull }}, {{ 0x175db6bd25f5136dull, 0x8ae88cda7298043eull, 0x312299e54a553a0eull, 0x61474bcd87396267ull, 0x05e705bb79ec01faull, 0x449b5b68b6b06f74ull }}, {{ 0xe9a923637b92c241ull, 0x6d15808879f02a6cull, 0xeb5a02f4e7544491ull, 0xccc8f607483dd807ull, 0x3b063952c33813c7ull, 0xae11921722e45a88ull }}, {{ 0x209b61e2d3bb968dull, 0x42d70554c361a841ull, 0x31841d91094aadaeull, 0xffd99c48d26a704full, 0x4e3e3d3ba030c5cdull, 0xccafb4e75ceb8952ull }}, {{ 0x4611d2dc4553e181ull, 0x9c66354fa1d0928bull, 0xef2927aa5ceac8ceull, 0xfe801ad838286317ull, 0x0e6e645441e7ba0bull, 0xfedd1109a1335d37ull }}, {{ 0xbcb23c9ab546cf08ull, 0x1bfe151c5225b970ull, 0x579b8ca7a12bd812ull, 0xf1010c723193deefull, 0x904feb4a930d4477ull, 0xf4a2aa604c01a426ull }}, {{ 0x5ef65e0b14c4164bull, 0x17ecd31b35793e67ull, 0x6c137e8c4bb670b5ull, 0x6a0a7c75efc6b559ull, 0xa31f30e9be84acafull, 0x8e5aa7c2f8106981ull }}, {{ 0xb59fac6ecfa8def2ull, 0xef403f1016bc7009ull, 0x38c2f17af5206712ull, 0x2468dc9b5dc3157eull, 0x5f37e921712ebedaull, 0x8f8a8d9db0a41f10ull }}, {{ 0x183cbc541c98b574ull, 0x588276a0e35c6061ull, 0x379d6ecd934406bdull, 0x6c189e11a99ed6eeull, 0xb82f1b4e6bd37485ull, 0x9b698828e66936a3ull }}, {{ 0xf25f5b491df71686ull, 0x7518a248e19bc3caull, 0x2c265407c0a84365ull, 0x38f62cb0a034654eull, 0x31d7111036428d36ull, 0x121f5199001c2265ull }}, {{ 0x77b990db2ba6e13cull, 0x92f656d8d015a5edull, 0xb97f484d8692a1f6ull, 0x399dbee6420bf50dull, 0xf266aaa21e99841eull, 0xb5392ffa011957f3ull }}, {{ 0xad3fa88fb484cc5bull, 0xbd9f647820d87b46ull, 0x3ef8d30741ba53a1ull, 0x402974fe94779289ull, 0x7802aa5531ff292eull, 0x143bdfc40afd6f87ull }}, {{ 0xc47c959d0d2ffb8dull, 0x6839ecb14874d0c2ull, 0x75b83e4891474451ull, 0x819e91f1ccabb95cull, 0xb01aa753f3f79bceull, 0xca56bda86de65b4aull }}, {{ 0xacddd82283dfd37full, 0x12433eecd490279bull, 0x99326ed5acc8ab2eull, 0x1031b371feb53d9cull, 0xe10a894787ac1611ull, 0xe76368944aff90eaull }}, {{ 0xc0aa715926be42faull, 0xb6a075404da18c14ull, 0xfbf85458bfd6afccull, 0xa1f10273f314681dull, 0xca695ccb4cb8dcaaull, 0x09e215caedfba92cull }}, {{ 0x86a86d7b836e9dc0ull, 0x22449483084f78cfull, 0xd7b34b777e62ddffull, 0x536a18877ecc112bull, 0xe81d9ff0ff389eaaull, 0x62d4d9ed4bd49bbfull }}, {{ 0x429446d32252297eull, 0x56adcd1e531ab81bull, 0x6d00f2aaefdcabf7ull, 0x4224f54af3f8abb6ull, 0x11283f69f83632a7ull, 0xdc508344f64e157full }}, {{ 0x99cac43f57359ef1ull, 0x62ca032f3f0b3110ull, 0x42097aad5e9eb7a9ull, 0x957194ed87b6b520ull, 0xab927a23b21dfa88ull, 0x9b2520b19f0cd6f6ull }}, {{ 0x01ebaa7968183566ull, 0xdbe41fd8766feaa6ull, 0x945ecac5b2332c9dull, 0xd66fd1474d231342ull, 0xb3b8c564f52bc955ull, 0x0f7346f0368065a2ull }}, {{ 0x1334a8be10f215fbull, 0x96e93e74a05f2a7cull, 0xcbb3ebb8f5ffbe2aull, 0x605e2cc9035ec099ull, 0x0537b5f193b5dd5aull, 0x9a80c5622103f85bull }}, {{ 0xc00e976ca974dbd1ull, 0xe51c708e43b7a8d8ull, 0xf50735399bfd6da9ull, 0xc3adbfda21b38601ull, 0x342d1b6fc51aa587ull, 0x0907b5d54a27b38eull }}, {{ 0x8091ea3e9e90962bull, 0xf31c658ea52c9877ull, 0x9248144017e648a2ull, 0xa4c97e8551033c13ull, 0x09c3125db30a774dull, 0x5a4d1a54e58d038eull }}, {{ 0x05b3267231a5ddaeull, 0x7f1bf79273bdf4abull, 0xb6d0ca80eefed65dull, 0x6fdef1352a2058c3ull, 0x619eb7a8fe68a908ull, 0x87030750f782238cull }}, {{ 0x38ff8075f07aa8c8ull, 0xf717abb8856b8eaeull, 0x2427e90955f45fa6ull, 0x5eb56c13a54377a5ull, 0xd0332c99f0169a54ull, 0x461e4929ab15637bull }}, {{ 0x39fb049b64ca97d5ull, 0xa6ecb535363392ceull, 0x698f1a5d5b8bbc85ull, 0xb31638c474a2ac73ull, 0x21ffbe0360e2074bull, 0xbd2edba0aed5e2d6ull }}, {{ 0x43ce2e11efe9ee4dull, 0x853f14141e03bc0eull, 0x1f9707a593755d38ull, 0xfede37ac8e5abc82ull, 0x53fd6c21c8d448f4ull, 0x63d49446d45adc5dull }}, {{ 0xa60dccb35f234f03ull, 0x3476c8c92c25588eull, 0x3be64c77c295a435ull, 0xf4ae2cbd8f8b5d15ull, 0x47e63951d84ad991ull, 0xe64dcac44b8c9ba5ull }}, {{ 0x7c89ff01b7611622ull, 0x0ca3d7dbb9757592ull, 0x56fefcad99d86a14ull, 0x8ecdbf679b71a2d4ull, 0xcefe3d3272ec7fb3ull, 0xff09ebaaf37e1474ull }}, {{ 0xdd63f61129cadd55ull, 0x7e666e953e9697b8ull, 0x65f5dec8027424c8ull, 0x94097a0c12705c4bull, 0x15ee63f87d3cfd03ull, 0xf66334ad82eccc90ull }}, {{ 0xa5e79caba1eca550ull, 0xf00051d471e1ed38ull, 0xfb9ab3d018896fd4ull, 0xc85ec478b8639af1ull, 0xdb4fe7b4e461e223ull, 0x9fe00ec71d3ffda0ull }}, {{ 0x7b0c1eb4533e7520ull, 0x6003324c72d34436ull, 0xd40b0620f55e5e51ull, 0xd3b3acb733e40d73ull, 0x911f0d10ebd2d565ull, 0x3ec093c7247fe848ull }}, {{ 0xce79330b4070933dull, 0xc01ff6fc7c40aa20ull, 0x486e3d4995afaf2dull, 0x4504bf2806e88686ull, 0xab3682a9363c55faull, 0x7385c5c76cff12d5ull }}, {{ 0x10bbfe708465c064ull, 0x813fa5dcda86a548ull, 0xd44e64dfd8dcd7c9ull, 0xb22f77904515413eull, 0xb0211a9c1e5b5bc6ull, 0x8339b9ca41f6bc58ull }}, {{ 0xa757f0652bf983e6ull, 0x0c7c7aa0894274d0ull, 0x4b0ff0be78a06ddfull, 0xf5daaba2b2d48c74ull, 0xe14b0a192f9195c2ull, 0x204141e693a35b76ull }}, {{ 0x896f63f3b7bf26f7ull, 0x7cdcca455c989026ull, 0xee9f6770b6444ab6ull, 0x9a8ab45afc4d7c8aull, 0xccee64fbdbafd99dull, 0x428c9301c46192a4ull }}, {{ 0x5e59e7852d7785a8ull, 0xe09fe6b59df5a181ull, 0x523a0a671eaaeb20ull, 0x096b0b8ddb06dd6dull, 0x014ff1d694de8028ull, 0x997dbe11abcfba70ull }}, {{ 0xaf830b33c6ab3893ull, 0xc63f03182b984f0dull, 0x3644680732ad2f48ull, 0x5e2e738a8e44a645ull, 0x0d1f7261d0b10190ull, 0xfee96cb0b61d4860ull }}, {{ 0xdb1e7005c2b035c2ull, 0xbe761ef1b3f31688ull, 0x1eac1047fac3d8d7ull, 0xadd083698eae7eb4ull, 0x833a77d226ea0fa3ull, 0xf51e3ee71d24d3c0ull }}, {{ 0x8f3060399ae21997ull, 0x709d3571077ee158ull, 0x32b8a2cfcba6786dull, 0xca25221f92d0f309ull, 0x2048ae3585249c64ull, 0x932e750723704585ull }}, {{ 0x97e3c2400cd4ffe3ull, 0x6624166a4af4cd75ull, 0xfb365c1df480b446ull, 0xe573553bbc297e5bull, 0x42d6ce17336e1befull, 0xbfd092476262b733ull }}, {{ 0xeee596808051fedaull, 0xfd68e026ed900697ull, 0xd01f992b8d070abfull, 0xf6815455599eef97ull, 0x9c640ce8024d175eull, 0x7e25b6c9d7db2800ull }}, {{ 0x54f7e1050333f480ull, 0xe618c18547a041efull, 0x213bfbb382466b7full, 0xa10d4b5580355beeull, 0x1be881101702e9b5ull, 0xed7923e26e8f9006ull }}, {{ 0x51aeca3220078d00ull, 0xfcf78f34cc429359ull, 0x4c57d50316c032feull, 0x4a84f1570215974dull, 0x17150aa0e61d2118ull, 0x46bb66d8519ba03dull }}, {{ 0x30d3e5f5404b8201ull, 0xe1ab980ffa99c17dull, 0xfb6e521ee381fdf5ull, 0xe9316d6614d7e904ull, 0xe6d26a48fd234af2ull, 0xc352047330144262ull }}, {{ 0xe846fb9482f3140aull, 0xd0b3f09fca018ee3ull, 0xd24f3534e313eb9aull, 0x1bee45fcd06f1a31ull, 0x043826d9e360ed7dull, 0xa1342c7fe0ca97ddull }}, {{ 0x12c5d3cd1d7ec864ull, 0x2707663de40f94e7ull, 0x37181410dec7340cull, 0x174ebbe0245705f2ull, 0x2a318482e1c946e3ull, 0x4c09bcfec7e9eea2ull }}, {{ 0xbbba460326f3d3e9ull, 0x8649fe6ae89bd106ull, 0x26f0c8a8b3c80879ull, 0xe91356c16b663b76ull, 0xa5ef2d1cd1dcc4deull, 0xf86161f3cf235255ull }}, {{ 0x5546bc1f85864718ull, 0x3ee3f02d16162a43ull, 0x8567d69705d054bfull, 0x1ac1638e31fe529dull, 0x7b57c320329fb0b5ull, 0xb3cdd38617613758ull }}, {{ 0x54c3593b373ec6f1ull, 0x74e761c2dcdda6a1ull, 0x360e61e63a234f78ull, 0x0b8de38df3ef3a27ull, 0xd16d9f41fa3ce713ull, 0x060a433ce9cc2974ull }}, {{ 0x4fa17c502873c567ull, 0x9109d19ca0a8824dull, 0x1c8fd2fe45611ab4ull, 0x738ae38b87584588ull, 0x2e483893c66106beull, 0x3c66a06121f99e90ull }}, {{ 0x1c4edb219485b60bull, 0xaa62301e46951705ull, 0x1d9e3deeb5cb0b0dull, 0x836ce3734972b751ull, 0xced235c5bfca4370ull, 0x5c0243cb53c031a1ull }}, {{ 0x1b148f4fcd391c69ull, 0xa7d5e12ec1d2e633ull, 0x282e6b5319ee6e88ull, 0x2240e280de7b292bull, 0x143619b97de6a265ull, 0x9816a5f14581f052ull }}, {{ 0x0ecd991e043b1c1aull, 0x8e5acbd3923cfdffull, 0x91d0313f03505156ull, 0x5688d908b0cf9bafull, 0xca1d013eeb0257f3ull, 0xf0e27b6cb7136334ull }}, {{ 0x9407fb2c2a4f1908ull, 0x8f8bf643b661ebf6ull, 0xb221ec7621232d61ull, 0x61587a56e81c14dbull, 0xe5220c752e176f81ull, 0x68d8d23f26c1e00full }}, {{ 0xc84fcfb9a716fa50ull, 0x9b779ea51fd337a1ull, 0xf5533c9d4b5fc5cfull, 0xcd74c7651118d094ull, 0xf3547c93ccea5b0dull, 0x187836778392c09eull }}, {{ 0xd31e1d4086e5c71cull, 0x12ac32733e402c51ull, 0x95405e24f1bdba1cull, 0x068fc9f2aaf825d1ull, 0x814cddc601278e8aull, 0xf4b220ab23bb8635ull }}, {{ 0x3f2d248544f9c713ull, 0xbab9f8806e81bb32ull, 0xd483ad7171694518ull, 0x419de37aadb17a2full, 0x0d00a9bc0b8b9164ull, 0x8ef546af65533e17ull }}, {{ 0x77c36d34b1c1c6c1ull, 0x4b43b50451114ff6ull, 0x4d24c66e6e1cb2f7ull, 0x902ae2cac8eec5deull, 0x8206a1587373adeaull, 0x9594c2d9f5406ce6ull }}, {{ 0xada2440ef191c38bull, 0xf0a5122b2aad1fa0ull, 0x036fc0504d1efda8ull, 0xa1acdbebd953baafull, 0x14424d748284cb29ull, 0xd7cf9c8394844101ull }}, {{ 0xc856a8956fb1a36aull, 0x6672b5afaac33c46ull, 0x225d83230335e899ull, 0x50c097367d454ad6ull, 0xca97068d192fefa0ull, 0x6e1c1d23cd2a8a0aull }}, {{ 0xd36295d65cf06224ull, 0x007b18dcaba05ac3ull, 0x57a71f5e201b15feull, 0x2785e820e4b4ec5dull, 0xe9e64182fbdf5c43ull, 0x4d19236603a9646bull }}, {{ 0x41d9da5fa163d569ull, 0x04cef89eb4438ba6ull, 0x6c8739ad410edbecull, 0x8b3b1148ef113ba5ull, 0x22fe8f1dd6b99a9full, 0x02fb61fc249dec37ull }}, {{ 0x928287bc4de65618ull, 0x3015b6330aa3747eull, 0x3d4840c48a949738ull, 0x704eacd956ac5476ull, 0x5df1972a63400a3bull, 0x1dd1d3d96e2b3a27ull }}, {{ 0xb9194d5b0aff5cefull, 0xe0d91dfe6a628cf1ull, 0x64d287ad69cde831ull, 0x6312c07d62bb4c9eull, 0xab6fe7a7e0806652ull, 0x2a32467e4db04589ull }}, {{ 0x3afd058e6df9a157ull, 0xc87b2bf027d98171ull, 0xf0394cc6220b11f2ull, 0xdebb84e5db50fe2full, 0xb25f0c8ec503ff37ull, 0xa5f6c0ef08e2b760ull }}, {{ 0x4de237904bc04d69ull, 0xd4cfb7618e7f0e6cull, 0x623cffbd546eb37bull, 0xb35330fa9129eddfull, 0xf7b67d93b227f82eull, 0x7ba3895658db29c6ull }}, {{ 0x0ad62ba2f583061cull, 0x501d29cf90f6903bull, 0xd661fd654c5302d6ull, 0x013fe9c9aba34ab9ull, 0xad20e7c4f58fb1d3ull, 0xd4635d5f788fa1c5ull }}, {{ 0x6c5db45d971e3d14ull, 0x2123a21ba9a1a24eull, 0x5fd3e5f4fb3e1c5full, 0x0c7f21e0b460eb42ull, 0xc3490db1979cf23eull, 0x4be1a5bab59c51b8ull }}, {{ 0x3ba90ba7e72e62c7ull, 0x4b645514a0505710ull, 0xbe46fb91d06d1bb7ull, 0x7cf752c70bc93097ull, 0xa0da88efec21766cull, 0xf6d0794b181b3137ull }}, {{ 0x549a748f07cfdbc6ull, 0xf1eb52ce432366a2ull, 0x6ec5d3b224431528ull, 0xe1a93bc675dbe5edull, 0x4889595f394ea03cull, 0xa424bceef10fec2cull }}, {{ 0x4e088d964e1e95b9ull, 0x73313c0e9f620257ull, 0x53ba44f56a9ed399ull, 0xd09c55c09a96fb46ull, 0xd55d7db83d124260ull, 0x696f61556a9f39baull }}, {{ 0x0c5587df0d31d938ull, 0x7fec589239d41769ull, 0x4546b1962a3443feull, 0x261b598609e5d0bfull, 0x55a6e93262b697c8ull, 0x1e59cd562a38414cull }}, {{ 0x7b574eb683f27c2full, 0xff3b75b64248ea1aull, 0xb4c2efdda60aa7f0ull, 0x7d117f3c62fa2778ull, 0x58851bf7db21edd1ull, 0x2f82055da6328cfbull }}, {{ 0xd16913212778d9d7ull, 0xf852991e96d92508ull, 0x0f9d5ea87c6a8f69ull, 0xe2aef85bddc58ab7ull, 0x753317ae8f534a2eull, 0xdb1435a87df981d1ull }}, {{ 0x2e1abf4b8ab88265ull, 0xb339fb31e47b7258ull, 0x9c25b294dc299a23ull, 0xdad5b396a9b76b26ull, 0x93feecd19940e5d4ull, 0x8eca1894ebbf122eull }}, {{ 0xcd0b78f36b3517f1ull, 0x0043cff2ecd27771ull, 0x1978f9d099a00565ull, 0x8c5903e2a12a2f82ull, 0xc7f5402ffc88fa50ull, 0x93e4f5d13576b5d1ull }}, {{ 0x0272b9823012ef6dull, 0x02a61f7d4038aa72ull, 0xfeb9c226004035f2ull, 0x7b7a26da4ba5db14ull, 0xcf9481dfdd59c725ull, 0xc6f19a2c16a31a31ull }}, {{ 0x187b3f15e0bd5a41ull, 0x1a7d3ae48236a874ull, 0xf341957c02821b74ull, 0xd2c58486f47a8ed1ull, 0x1bcd12bea581c776ull, 0xc57005b8e25f05f2ull }}, {{ 0xf4d076dac765868dull, 0x08e44ced16229488ull, 0x808fd6d819151289ull, 0x3bb72d458cc99433ull, 0x1602bb727711caa4ull, 0xb6603938d7b63b75ull }}, {{ 0x9024a48bc9f74183ull, 0x58eb0142dd59cd59ull, 0x059e6470fad2b95aull, 0x5527c4b77fdfca03ull, 0xdc1b5278a6b1ea6aull, 0x1fc23c386d1e5292ull }}, {{ 0xa16e6d75e3a88f1cull, 0x792e0c9ca582057full, 0x382fec69cc3b3d87ull, 0x538daf2afebde41eull, 0x991138b682f32827ull, 0x3d965a34432f39bcull }}, {{ 0x4e50469ae495971dull, 0xbbcc7e1e771436fcull, 0x31df3c21fa50674aull, 0x4388d7adf36ae92eull, 0xfaac37211d7f9189ull, 0x67df860a9fd8415dull }}, {{ 0x0f22c20cedd7e720ull, 0x55fced30a6ca25dbull, 0xf2b85953c72408ebull, 0xa3586ccb822d1bcdull, 0xcaba274b26fbaf5cull, 0x0ebb3c6a3e728dabull }}, {{ 0x975b94814a6f0743ull, 0x5be143e683e57a8eull, 0x7b337d45c7685931ull, 0x61743ff315c3160bull, 0xeb4588ef85d4d99eull, 0x93505c26707988b5ull }}, {{ 0xe993cd0ce856489dull, 0x96cca70126f6c991ull, 0xd002e4b9ca137bedull, 0xce8a7f7ed99edc72ull, 0x30b7595b3a50802full, 0xc123998064bf571bull }}, {{ 0x1fc60281135ed621ull, 0xe3fe860b85a3dfb3ull, 0x201cef41e4c2d747ull, 0x1168faf480349c7cull, 0xe7297d90472501deull, 0x8b63ff03ef79670full }}, {{ 0x3dbc190ac1b45d4dull, 0xe7f13c733866bcffull, 0x41215892ef9c68ceull, 0xae19cd8d020e1cd9ull, 0x079ee7a2c77212acull, 0x71e7f6275abe069full }}, {{ 0x6958fa6b910ba4feull, 0x0f6c5c80340361f8ull, 0x8b4d75bd5c1c1815ull, 0xcd020782148d207cull, 0x4c350c5bca74babeull, 0x730f9d898b6c4236ull }}, {{ 0x1d79c833aa7471e9ull, 0x9a3b9d020821d3b4ull, 0x710699659918f0d2ull, 0x02144b14cd8344ddull, 0xfa127b95e88f4b74ull, 0x7e9c275f723a961eull }}, {{ 0x26c1d204a88c731aull, 0x0654221451524509ull, 0x6a41fdf7faf9683aull, 0x14caeed00720b0a6ull, 0xc4b8d3db1598f288ull, 0xf21989ba7649dd35ull }}, {{ 0x8392342e957c7f03ull, 0x3f4954cb2d36b25bull, 0x2693ebafcdbe1244ull, 0xcfed54204746e680ull, 0xaf38468ed7f97950ull, 0x74ff61489ee2a419ull }}, {{ 0x23b609d1d6dcf61eull, 0x78dd4fefc422f793ull, 0x81c734de096cb6aaull, 0x1f454942c8c50101ull, 0xd832c1946fbebd28ull, 0x91f9ccd634da6900ull }}, {{ 0x651c623264a19d2dull, 0xb8a51f5da95dabbfull, 0x11c810ac5e3f22a8ull, 0x38b4dc9bd7b20a0full, 0x71fb8fcc5d736391ull, 0xb3c2005e10881a08ull }}, {{ 0xf31bd5f7ee5023c5ull, 0x367339a89da8b579ull, 0xb1d0a6bbae775a97ull, 0x37109e166cf46496ull, 0x73d39dfba681e3acull, 0x059403aca5510454ull }}, {{ 0x7f165baf4f2165b5ull, 0x20804096289716c3ull, 0xf2268354d0a989e8ull, 0x26a62ce0418bede2ull, 0x86442bd48112e4baull, 0x37c824be752a2b4cull }}, {{ 0xf6df94d9174df916ull, 0x450285dd95e6e3a2ull, 0x75812150269f6311ull, 0x827dc0c28f774addull, 0x3ea9b64d0abcef45ull, 0x2dd16f7093a5b0fdull }}, {{ 0xa4bbd07ae90bbae0ull, 0xb2193aa7db04e45dull, 0x970b4d218239deacull, 0x18e987999aa8eca6ull, 0x72a11f026b6158b7ull, 0xca2e5a65c478e9e4ull }}, {{ 0x6f5624cd1a754cc5ull, 0xf4fc4a8e8e30eba8ull, 0xe671034f1642b2beull, 0xf91f4c000a993e81ull, 0x7a4b361831cd7726ull, 0xe5cf87f9acb922ecull }}, {{ 0x595d70030894ffaeull, 0x91dae9918de93494ull, 0x006a2116de9afb75ull, 0xbb38f80069fc7113ull, 0xc6f01cf1f206a785ull, 0xfa1b4fc0bf3b5d3cull }}, {{ 0x7da6601e55d1fccfull, 0xb28d1faf8b1c0dcbull, 0x04254ae4b20dd297ull, 0x5039b00423dc6abeull, 0xc561217374428b39ull, 0xc5111d877851a45full }}, {{ 0xe87fc12f5a33e013ull, 0xf9833cdb6f1889f2ull, 0x2974eceef48a39ecull, 0x2240e029669c2b6cull, 0xb5cb4e828a99703dull, 0xb2ab274ab3306bbdull }}, {{ 0x14fd8bd98606c0baull, 0xbf20609256f5637dull, 0x9e9141558d664341ull, 0x5688c19e0219b239ull, 0x19f1111969fe6263ull, 0xfaaf88eaffe43569ull }}, {{ 0xd1e7767f3c43873full, 0x7743c5b76595e2e2ull, 0x31ac8d5785fea091ull, 0x6157902c1500f640ull, 0x036aaafe23efd7e1ull, 0xcadb592dfeea161bull }}, {{ 0x330aa0f85aa3487bull, 0xa8a5b929f7dadcdcull, 0xf0bd856b3bf245aeull, 0xcd6ba1b8d2099e81ull, 0x222aaded675e6ecdull, 0xec917bcbf524dd0eull }}, {{ 0xfe6a49b38a60d4ccull, 0x96793ba3ae8ca099ull, 0x676736305776b8d2ull, 0x0634513834603113ull, 0x55aacb4609b0540aull, 0x3daed5f79370a28dull }}, {{ 0xf026e10367c84ffbull, 0xe0bc5464d17e4603ull, 0x0a081de36aa33839ull, 0x3e0b2c320bc1eac2ull, 0x58abf0bc60e34864ull, 0x68d45babc2665985ull }}, {{ 0x6184ca220dd31fcdull, 0xc75b4bf02eeebc27ull, 0x64512ae22a603242ull, 0x6c6fb9f475932b94ull, 0x76b7675bc8e0d3eaull, 0x184b94b597ff7f35ull }}, {{ 0xcf2fe5548a3f3e01ull, 0xc990f761d5535989ull, 0xeb2bacd5a7c1f69bull, 0x3c5d438c97bfb3cbull, 0xa32a0995d8c84728ull, 0xf2f3cf17effaf816ull }}, {{ 0x17def54d66786c08ull, 0xdfa9a9d255417f62ull, 0x2fb4c0588d93a215ull, 0x5ba4a37ded7d05f7ull, 0x5fa45fda77d2c792ull, 0x7d8616ef5fcdb0e2ull }}, {{ 0xeeb5950600b4384eull, 0xbca0a237548ef9d4ull, 0xdd0f837587c454daull, 0x946e62eb46e23ba7ull, 0xbc6bbe88ae3bcbb7ull, 0xe73ce559be08e8d7ull }}, {{ 0x5317d23c070a330cull, 0x5e4656294d95c251ull, 0xa29b22974dab508bull, 0xcc4fdd30c4d6548eull, 0x5c357156ce55f52bull, 0x0860f5816c59186dull }}, {{ 0x3eee36584665fe79ull, 0xaebf5d9d07d9972dull, 0x5a0f59e908b12571ull, 0xfb1ea3e7b05f4d92ull, 0x9a166d640f5b93b5ull, 0x53c9970e3b7af445ull }}, {{ 0x754e1f72bffbf0beull, 0xd379a8224e7fe7c4ull, 0x8499831a56eb7670ull, 0xcf32670ce3b907b7ull, 0x04e045e89993c51bull, 0x45dfe68e52cd8ab8ull }}, {{ 0x950d3a7b7fd7676cull, 0x42c0915710ff0dacull, 0x2dff1f076532a068ull, 0x17f80680e53a4d2bull, 0x30c2bb15ffc5b316ull, 0xbabf018f3c076b30ull }}, {{ 0xd28448d2fe6a0a3cull, 0x9b85ad66a9f688bdull, 0xcbf73649f3fa4412ull, 0xefb04108f44703afull, 0xe79b4edbfdb8fedcull, 0x4b760f98584a2fe1ull }}, {{ 0x392ad83df0246659ull, 0x1338c602a3a1576aull, 0xf7a81ee387c6a8baull, 0x5ce28a598ac624ddull, 0x0c111497e939f4a1ull, 0xf29c9bf372e5ded3ull }}, {{ 0x3bac726b616bff79ull, 0xc037bc1a644d6a26ull, 0xac9134e34dc29744ull, 0xa0d9677f6bbd70abull, 0x78aacdef1c438e4dull, 0x7a1e17827cfab43eull }}, {{ 0x54bc7831ce37fab7ull, 0x822d5907eb06257eull, 0xbdac10e10999e8afull, 0x487e0afa356666b4ull, 0xb6ac0b571aa38f08ull, 0xc52ceb18e1cb0a70ull }}, {{ 0x4f5cb1f20e2fcb29ull, 0x15c57a4f2e3d76efull, 0x68b8a8ca600316dbull, 0xd4ec6dc61600030full, 0x22b871670a639652ull, 0xb3c12ef8d1ee6867ull }}, {{ 0x199ef3748dddef9eull, 0xd9b6c717ce66a559ull, 0x173697e7c01ee48eull, 0x513c49bcdc001e9aull, 0x5b346e0667e3df3cull, 0x058bd5b833501407ull }}, {{ 0x0035828d8aab5c2bull, 0x8123c6ee1002757bull, 0xe821ef0d8134ed94ull, 0x2c5ae16098013204ull, 0x900c4c400ee6b85bull, 0x377659320120c849ull }}, {{ 0x021719876ab199b0ull, 0x0b65c54ca01896ceull, 0x115356870c1147cdull, 0xbb8ccdc5f00bf431ull, 0xa07afa809503338full, 0x2a9f7bf40b47d2dfull }}, {{ 0x14e6ff4a2af000dfull, 0x71f9b4fe40f5e40cull, 0xad41614678acce02ull, 0x538009bb607789eaull, 0x44cdc905d220039dull, 0xaa3ad78870ce3cbcull }}, {{ 0xd105f8e5ad6008b3ull, 0x73c111ee899ae878ull, 0xc48dccc0b6c00c18ull, 0x43006151c4ab632aull, 0xb009da3a35402425ull, 0xa64c6b54680e5f5aull }}, {{ 0x2a3bb8f8c5c05703ull, 0x858ab351600d14b8ull, 0xad89ff87238078f4ull, 0x9e03cd31aeb1dfabull, 0xe062864614816974ull, 0x7efc314c108fb98aull }}, {{ 0xa65539b7b9836619ull, 0x376b012dc082cf31ull, 0xc763fb476304b98dull, 0x2c2603f0d2f2bcb4ull, 0xc3d93ebccd0e1e8eull, 0xf5d9ecf8a59d3f6cull }}, {{ 0x7f54412d3f21fcfeull, 0x2a2e0bc9851c17f0ull, 0xc9e7d0c9de2f3f84ull, 0xb97c27683d7b5f0full, 0xa67c7360028d318dull, 0x9a8341b678247a3full }}, {{ 0xf94a8bc47753e1e9ull, 0xa5cc75df3318ef64ull, 0xe30e27e2add87b29ull, 0x3ed98a1266d1b69dull, 0x80dc81c01983ef89ull, 0x09209120b16cc67cull }}, {{ 0xbce975aca946d31cull, 0x79fc9ab7fef959f1ull, 0xde8d8edaca74cfa0ull, 0x747f64b80431222aull, 0x089d1180ff275b5cull, 0x5b45ab46ee3fc0ddull }}, {{ 0x611e98be9cc43f14ull, 0xc3de0b2ff5bd8371ull, 0xb187948be8901c44ull, 0x8cf9ef3029eb55acull, 0x5622af09f789919cull, 0x90b8b0c54e7d88a2ull }}, {{ 0xcb31f7721faa76c9ull, 0xa6ac6fdf9967226dull, 0xef4bcd7715a11aafull, 0x81c357e1a33158beull, 0x5d5ad663ab5fb01dull, 0xa736e7b510e75657ull }}, {{ 0xeff3aa753ca8a3d9ull, 0x82bc5ebbfe075849ull, 0x58f606a6d84b0adcull, 0x11a16ed05fed7775ull, 0xa58c5fe4b1bce127ull, 0x88250d12a9095f69ull }}, {{ 0x5f84a8945e966677ull, 0x1b5bb357ec4972e3ull, 0x799c428472ee6c9dull, 0xb04e5423bf46aa95ull, 0x777bbeeef160cb86ull, 0x517282ba9a5dba20ull }}, {{ 0xbb2e95cbb1e000a9ull, 0x1195016f3ade7ce1ull, 0xc01a992c7d503e23ull, 0xe30f496578c2a9d6ull, 0xaad575556dc7f342ull, 0x2e791b4a07a94544ull }}, {{ 0x4fd1d9f4f2c0069cull, 0xafd20e584cb0e0d1ull, 0x8109fbbce5226d5eull, 0xde98ddf6b79aa263ull, 0xac56955649cf809cull, 0xd0bb10e44c9cb4aeull }}, {{ 0x1e3283917b80421bull, 0xde348f72fee8c82dull, 0x0a63d560f35845b2ull, 0xb1f8aba32c0a57e3ull, 0xbb61d55ee21b0620ull, 0x274ea8eafe1f0ed2ull }}, {{ 0x2df923aed302950aull, 0xae0d9a7df517d1c3ull, 0x67e655c98172b8fcull, 0xf3b6b45fb8676edeull, 0x51d255b4d50e3d46ull, 0x8912992ded36943bull }}, {{ 0xcbbb64d43e19d267ull, 0xcc8808eb92ee319full, 0x0eff59df0e7b39deull, 0x85230bbd340a54b0ull, 0x32375910528e64c5ull, 0x5ab9fbcb4421ca51ull }}, {{ 0xf551f04a6d023803ull, 0xfd505933bd4df03dull, 0x95f982b690d042b3ull, 0x335e756408674ee0ull, 0xf6297aa3398fefb7ull, 0x8b43d5f0a951e72bull }}, {{ 0x953362e84216301dull, 0xe5237c05650b626bull, 0xdbbf1b21a8229b07ull, 0x01b095e8540914c5ull, 0x9d9eca603f9f5d28ull, 0x70a65b669d3307b7ull }}, {{ 0xd401dd1294dde120ull, 0xf362d835f271d833ull, 0x95770f50915a0e4eull, 0x10e5db13485acfbaull, 0x2833e7c27c39a390ull, 0x667f920223fe4d2cull }}, {{ 0x4812a2b9d0aacb3full, 0x81dc721b78727206ull, 0xd6a69925ad848f15ull, 0xa8fa8ec0d38c1d49ull, 0x92070d98da4063a0ull, 0x00fbb41567ef03b9ull }}, {{ 0xd0ba5b4226abf075ull, 0x129c7512b478743eull, 0x6281fb78c72d96d7ull, 0x99c99388437924e2ull, 0xb44687f88683e446ull, 0x09d508d60f56253full }}, {{ 0x2747909582b7648eull, 0xba1c92bb0cb48a74ull, 0xd913d2b7c7c7e466ull, 0x01dfc352a2bb70d7ull, 0x0ac14fb54126eac2ull, 0x6252585c995d747dull }}, {{ 0x88cba5d71b29ed88ull, 0x451dbb4e7f0d6889ull, 0x7ac63b2dcdceec03ull, 0x12bda13a5b52686eull, 0x6b8d1d148b852b94ull, 0xd737739dfda68ce2ull }}, {{ 0x57f47a670fa3474dull, 0xb3295110f686155full, 0xcbbe4fca0a153820ull, 0xbb684c4791381450ull, 0x338322cd7333b3c8ull, 0x682a842be88180d8ull }}, {{ 0x6f8cc8069c60c904ull, 0xff9d2aa9a13cd5b9ull, 0xf56f1de464d43146ull, 0x5212facbac30cb27ull, 0x031f5c06800505d7ull, 0x11a929b7150f0872ull }}, {{ 0x5b7fd0421bc7da2aull, 0xfc23aaa04c60593eull, 0x96572aebf049ecc5ull, 0x34bdcbf4b9e7ef8full, 0x1f39984100323a69ull, 0xb09ba126d2965474ull }}, {{ 0x92fe229515ce85a3ull, 0xd964aa42fbc37c6full, 0xdf67ad3762e33fbbull, 0x0f69f78f430f5b9bull, 0x383ff28a01f6481cull, 0xe6144b8439df4c89ull }}, {{ 0xbded59d2da11385full, 0x7deea69dd5a2dc5bull, 0xba0cc429dce07d56ull, 0x9a23ab989e999416ull, 0x327f7964139ed118ull, 0xfccaf32a42b8fd5cull }}, {{ 0x6b45823c84ac33b9ull, 0xeb52822a585c9b95ull, 0x447fa9a2a0c4e560ull, 0x0564b3f631ffc8e3ull, 0xf8fabde8c4342af6ull, 0xdfed7fa69b39e599ull }}, {{ 0x30b7165d2eba053full, 0x313915a7739e13d6ull, 0xacfca05a47b0f5c9ull, 0x35ef079df3fdd8e0ull, 0xb9cb6b17aa09ad9cull, 0xbf46fc821042f803ull }}, {{ 0xe726dfa3d3443473ull, 0xec3ad88a842cc65dull, 0xc1de4386cce999dbull, 0x1b564c2b87ea78c6ull, 0x41f22eeca460c81aull, 0x78c5dd14a29db025ull }}, {{ 0x0784bc6640aa0c7bull, 0x3a4c756929bfbfabull, 0x92aea34401200297ull, 0x115ef9b34f28b7c3ull, 0x9375d53e6bc7d105ull, 0xb7baa2ce5a28e174ull }}, {{ 0x4b2f5bfe86a47ccaull, 0x46fc961ba17d7caeull, 0xbad260a80b4019e8ull, 0xadb5c10117972da3ull, 0xc29a547035ce2a32ull, 0x2d4a5c0f8598ce8dull }}, {{ 0xefd997f1426cdfe8ull, 0xc5dddd144ee6deceull, 0x4c37c69070810312ull, 0xc9198a0aebe7c865ull, 0x9a074c621a0da5faull, 0xc4e7989b37f81189ull }}, {{ 0x5e7fef6c9840bf0eull, 0xbaaaa2cb1504b415ull, 0xfa2dc1a4650a1ebbull, 0xdaff646d370dd3f4ull, 0x0448fbd504887bcbull, 0xb10bf6102fb0af60ull }}, {{ 0xb0ff5a3df287768aull, 0x4aaa5beed22f08d5ull, 0xc5c9906bf2653355ull, 0x8df9ec44268a4791ull, 0x2ad9d6522d54d5f6ull, 0xea779ca1dce6d9c0ull }}, {{ 0xe9f9866b794aa163ull, 0xeaa7975435d65858ull, 0xb9dfa43777f40154ull, 0x8bc33aa98166cbb1ull, 0xac825f35c5505ba1ull, 0x28ac1e52a1048181ull }}, {{ 0x23bf4032bcea4de1ull, 0x2a8be94a1a5f7379ull, 0x42bc6a2aaf880d51ull, 0x75a04a9f0e03f4f1ull, 0xbd17b819b523944full, 0x96b92f3a4a2d0f10ull }}, {{ 0x657881fb61270ac7ull, 0xa9771ce507ba82bbull, 0x9b5c25aadb50852bull, 0x9842ea368c27916cull, 0x62ed31011363cb1aull, 0xe33bd846e5c296a7ull }}, {{ 0xf6b513d1cb866bc9ull, 0x9ea720f24d491b51ull, 0x119978ac912533b4ull, 0xf29d2621798bae3eull, 0xdd43ea0ac1e5ef09ull, 0xe05672c4f999e289ull }}, {{ 0xa312c631f34035daull, 0x3287497704db1133ull, 0xaffeb6bdab74050eull, 0x7a237d4ebf74ce6cull, 0xa4a7246b92fb5663ull, 0xc3607bb1c002d962ull }}, {{ 0x5ebbbdf380821a87ull, 0xf948dea6308eac04ull, 0xdff32368b288328dull, 0xc562e5137a90103eull, 0x6e876c33bdd15fe2ull, 0xa1c4d4f1801c7ddaull }}, {{ 0xb3556b8305150942ull, 0xbcd8b27de592b82bull, 0xbf7f6216f951f98bull, 0xb5dcf2c2c9a0a274ull, 0x514a3a056a2dbedbull, 0x51b0516f011cea88ull }}, {{ 0x0156331e32d25c99ull, 0x6076f8eaf7bb31b5ull, 0x7af9d4e5bd33bf75ull, 0x1aa17b9be046588full, 0x2ce6443625c97495ull, 0x30e32e560b212953ull }}, {{ 0x0d5dff2dfc379df7ull, 0xc4a5b92dad4ff112ull, 0xcdc250f964057a95ull, 0x0a4ed416c2bf759aull, 0xc0feaa1d79de8dd3ull, 0xe8dfcf5c6f4b9d3full }}, {{ 0x85abf7cbda2c2ba4ull, 0xae793bc8c51f6ab4ull, 0x099729bde836c9d9ull, 0x671448e39b7a980cull, 0x89f2a526c2b18a3eull, 0x18be199c58f4247dull }}, {{ 0x38b7adf685b9b463ull, 0xd0bc55d7b33a2b0dull, 0x5fe7a16b1223e280ull, 0x06cad8e412c9f078ull, 0x637a73839aef6670ull, 0xf76d001b79896ce7ull }}, {{ 0x372ccba139410be2ull, 0x275b5a6d0045ae84ull, 0xbf0c4e2eb566d908ull, 0x43ec78e8bbe364b3ull, 0xe2c883240d5a0060ull, 0xaa420112bf5e4109ull }}, {{ 0x27bff44c3c8a76d3ull, 0x8991884202b8d12aull, 0x767b0dd316047a51ull, 0xa73cb91756e1ef05ull, 0xdbd51f68858403c2ull, 0xa6940abb79ae8a62ull }}, {{ 0x8d7f8afa5d68a43aull, 0x5faf52941b382ba5ull, 0xa0ce8a3edc2cc72full, 0x885f3ae964d35636ull, 0x96533a153728259aull, 0x81c86b52c0d167dcull }}, {{ 0x86fb6dc7a6166a46ull, 0xbcd939c91031b477ull, 0x4811667499bfc7d9ull, 0x53b84d1df0415e22ull, 0xdf4044d427917809ull, 0x11d4313b882e0e9dull }}, {{ 0x45d249cc7ce026bbull, 0x607c41daa1f10cabull, 0xd0ae008e017dce81ull, 0x4533032b628dad56ull, 0xb882b0498baeb05dull, 0xb249ec5351cc922aull }}, {{ 0xba36e1fce0c1834aull, 0xc4da928a536a7eb0ull, 0x26cc058c0eea110dull, 0xb3fe1fb1d988c564ull, 0x351ae2df74d2e3a4ull, 0xf6e33b4131fdb5abull }}, {{ 0x4624d3e0c78f20e6ull, 0xb089b9674228f2e7ull, 0x83f837789524aa89ull, 0x07ed3cf27f57b5e9ull, 0x130cdcba903ce46full, 0xa4e0508bf3e918b0ull }}, {{ 0xbd7046c7cb974901ull, 0xe5613e0895997d08ull, 0x27b22ab5d36ea960ull, 0x4f446178f96d1b1full, 0xbe809f49a260ec56ull, 0x70c32577871af6e0ull }}, {{ 0x6662c3cdf3e8da07ull, 0xf5cc6c55d7fee257ull, 0x8cf5ab1a42529dc8ull, 0x18abceb9be430f37ull, 0x710638e057c93b5full, 0x679f76ab470da4c7ull }}, {{ 0xffdba60b87188447ull, 0x99fc3b5a6ff4d769ull, 0x8198af06973a29d9ull, 0xf6b613416e9e982bull, 0x6a3e38c36ddc51b6ull, 0x0c3aa2b0c6886fcaull }}, {{ 0xfe947c7346f52ac3ull, 0x03da51885f906a23ull, 0x0ff6d641e845a280ull, 0xa31cc08e5231f1b3ull, 0x266e37a24a9b3125ull, 0x7a4a5ae7c1545de8ull }}, {{ 0xf1ccdc80c593ab9bull, 0x26872f53bba42567ull, 0x9fa45e9312b85900ull, 0x5f1f858f35f370feull, 0x804e2c56ea0feb78ull, 0xc6e78d0d8d4bab11ull }}, {{ 0x72009d07b7c4b40eull, 0x8147d9455469760full, 0x3c6bb1bebb337a01ull, 0xb73b37981b8269f2ull, 0x030dbb65249f32b3ull, 0xc50b828784f4aeafull }}, {{ 0x7406224d2daf0889ull, 0x0cce7cb54c1e9c9aull, 0x5c34f1735002c40full, 0x28502bf113182376ull, 0x1e8951f36e37fb05ull, 0xb273194b318ed2d6ull }}, {{ 0x883d5703c8d65558ull, 0x8010df14f9321e08ull, 0x9a116e81201ba896ull, 0x9321b76abef1629full, 0x315d33824e2fce33ull, 0xf87efcefef943c5dull }}, {{ 0x52656625d85f556cull, 0x00a8b6d1bbf52c55ull, 0x04ae510b411495e1ull, 0xbf512a2b756dda3cull, 0xeda403170dde0e03ull, 0xb4f5e15f5bca5ba3ull }}, {{ 0x37f5fd7a73b95633ull, 0x069724315793bb55ull, 0x2ecf2a708acddacaull, 0x792ba5b2964a8658ull, 0x48681ee68aac8c25ull, 0x119acdb995e79467ull }}, {{ 0x2f9be6c8853d5dffull, 0x41e769ed6bc55154ull, 0xd417a8656c0a8be4ull, 0xbbb478f9dee93f71ull, 0xd41135016abd7976ull, 0xb00c093fdb0bcc08ull }}, {{ 0xdc1703d53465abfaull, 0x930a234635b52d49ull, 0x48ec93f6386976eaull, 0x550cb9c2b51c7a72ull, 0x48ac120e2b66bea3ull, 0xe0785c7e8e75f858ull }}, {{ 0x98e626540bf8b7c1ull, 0xbe6560be1913c4e2ull, 0xd93dc79e341ea529ull, 0x527f419b131cc876ull, 0xd6b8b48db2037261ull, 0xc4b39cf1909bb372ull }}, {{ 0xf8fd7f4877b72d85ull, 0x6ff5c76cfac5b0d9ull, 0x7c69cc2e093273a1ull, 0x38f8900ebf1fd4a4ull, 0x63370d88f42277cdull, 0xaf04216fa615027cull }}, {{ 0xb9e6f8d4ad27c735ull, 0x5f99ca41cbb8e883ull, 0xdc21f9cc5bf8844eull, 0x39b5a093773e4e6cull, 0xe02687598958ae04ull, 0xd6294e5c7cd218dbull }}, {{ 0x4305b84ec38dc815ull, 0xbc01e691f5391525ull, 0x9953c1fb97b52b0full, 0x411845c2a86f1040ull, 0xc181497f5d76cc2aull, 0x5d9d0f9ce034f896ull }}, {{ 0x9e393313a389d0cfull, 0x581301b3943ad374ull, 0xfd4593d3ed13ae9dull, 0x8af2b99a9456a285ull, 0x8f0cdef9a6a3f9a6ull, 0xa8229c20c211b5e3ull }}, {{ 0x2e3bfec463622811ull, 0x70be1103ca4c428eull, 0xe4b7c64742c4d225ull, 0x6d7b4009cb62593bull, 0x9680b5c08267c081ull, 0x915a194794b11ae3ull }}, {{ 0xce57f3abe1d590aeull, 0x676caa25e6fa998dull, 0xef2dbec89bb03576ull, 0x46d08061f1d77c56ull, 0xe1071985180d850eull, 0xad84fccbceeb0ce3ull }}, {{ 0x0f6f84b6d257a6ceull, 0x0a3ea57b05c9ff8aull, 0x57c973d614e216a0ull, 0xc42503d3726adb65ull, 0xca46ff32f087328eull, 0xc731dff6152e80e6ull }}, {{ 0x9a5b2f24376c840aull, 0x667276ce39e3fb64ull, 0x6dde865cd0d4e240ull, 0xa9722642782c91f5ull, 0xe6c5f7fd6547f993ull, 0xc7f2bf9cd3d10903ull }}, {{ 0x078fd76a2a3d2865ull, 0x0078a40e42e7d1eeull, 0x4ab13fa02850d684ull, 0x9e757e98b1bdb396ull, 0x03bbafe5f4cfbfc4ull, 0xcf7b7c20462a5a27ull }}, {{ 0x4b9e6a25a66393efull, 0x04b6688e9d0e334cull, 0xeaec7c4193286128ull, 0x3096f1f6f16903deull, 0x2554defb901d7daeull, 0x1ad2d942bda78586ull }}, {{ 0xf43025787fe3c759ull, 0x2f201592228e00faull, 0x2d3cda8fbf93cb90ull, 0xe5e573a56e1a26b5ull, 0x7550b5d3a126e8cdull, 0x0c3c7c9b688b373dull }}, {{ 0x89e176b4fee5c97eull, 0xd740d7b5598c09cdull, 0xc460899d7bc5f3a1ull, 0xfaf684764d058313ull, 0x95271a444b85180aull, 0x7a5cde1215702866ull }}, {{ 0x62cea311f4f9def0ull, 0x68886d157f786207ull, 0xabc56026d5bb8452ull, 0xcda12c9f02371ec5ull, 0xd38706aaf332f06dull, 0xc7a0acb4d6619401ull }}, {{ 0xdc125eb391c2b55bull, 0x155442d6fab3d449ull, 0xb5b5c18459532b38ull, 0x084bbe36162733b8ull, 0x434642ad7ffd644aull, 0xcc46bf105fcfc812ull }}, {{ 0x98b7b303b19b1590ull, 0xd54a9c65cb064ae2ull, 0x19198f2b7d3fb030ull, 0x52f56e1cdd880537ull, 0xa0be9ac6ffe5eae4ull, 0xfac376a3be1dd0b6ull }}, {{ 0xf72cfe24f00ed79bull, 0x54ea1bf9ee3eecd9ull, 0xfaff97b2e47ce1e8ull, 0x3d964d20a7503426ull, 0x47720bc5fefb2cebull, 0xcba2a2656d2a2722ull }}, {{ 0xa7c1ed7160946c11ull, 0x512517c34e754083ull, 0xcdfbecfcece0d313ull, 0x67df034689220985ull, 0xca7475bbf5cfc130ull, 0xf45a57f643a58756ull }}, {{ 0x8d93466dc5cc38acull, 0x2b72eda110948524ull, 0x0bd741e140c83ec1ull, 0x0eb620c15b545f3aull, 0xe88c99579a1d8be4ull, 0x8b876f9ea4774963ull }}, {{ 0x87c0c049b9fa36b8ull, 0xb27d484aa5cd336dull, 0x766892cc87d2738bull, 0x931d478d914bb844ull, 0x157dfd6c052776e8ull, 0x734a5c326ca8dde7ull }}, {{ 0x4d8782e143c62332ull, 0xf8e4d2ea7a040247ull, 0xa015bbfd4e388374ull, 0xbf24cb87acf532acull, 0xd6ebe638338aa515ull, 0x80e799f83e98ab06ull }}, {{ 0x074b1ccca5bd5ff1ull, 0xb8f03d28c42816c9ull, 0x40d957e50e352291ull, 0x776ff34cc193fabeull, 0x6536fe32036a72d9ull, 0x090c03b271f6ae44ull }}, {{ 0x48ef1ffe7965bf6dull, 0x39626397a990e3daull, 0x887d6ef28e1359b1ull, 0xaa5f80ff8fc7cb6eull, 0xf425edf422287c7eull, 0x5a7824f873a2ceabull }}, {{ 0xd9573ff0bdf97a46ull, 0x3dd7e3ec9fa8e686ull, 0x54e655798cc180ecull, 0xa7bb09fb9dcdf251ull, 0x897b4b895594dcf2ull, 0x88b171b4845c12b7ull }}, {{ 0x7d687f676bbec6b9ull, 0x6a6ee73e3c990144ull, 0x50ff56bf7f8f093aull, 0x8d4e63d42a0b772dull, 0x5ed0f35d57d0a17aull, 0x56ee710d2b98bb2bull }}, {{ 0xe614fa0a3573c338ull, 0x2855086e5dfa0cacull, 0x29f9637afb965c48ull, 0x850fe649a472a7c5ull, 0xb42981a56e264ec9ull, 0x65506a83b3f74fb1ull }}, {{ 0xfcd1c4661685a035ull, 0x9352544fabc47ec0ull, 0xa3bde2cdd3df9ad1ull, 0x329efee06c7a8db3ull, 0x099f10764d7f13dfull, 0xf524292507a91cf1ull }}, {{ 0xe031abfce138420eull, 0xc1374b1cb5acf389ull, 0x656adc0a46bc0c2full, 0xfa35f4c43cc98904ull, 0x6036a49f06f6c6b7ull, 0x93699b724c9b216aull }}, {{ 0xc1f0b7e0cc32948aull, 0x8c28ef1f18c18362ull, 0xf62c9866c35879ddull, 0xc61b8faa5fdf5a2bull, 0xc2226e3645a3c32full, 0xc2201276fe0f4e27ull }}, {{ 0x93672ec7f9f9cd63ull, 0x79995736f78f21dbull, 0x9dbdf403a174c2a7ull, 0xbd139ca7beb985b7ull, 0x95584e1eb8659fddull, 0x9540b8a5ec990d8dull }}, {{ 0xc207d3cfc3c205dfull, 0xbffd6825ab975293ull, 0x296b88244e8f9a8aull, 0x62c41e8d733f392cull, 0xd5730d3333f83ea9ull, 0xd487367b3dfa8787ull }}, {{ 0x944e461da5943ab3ull, 0x7fe61178b3e939c5ull, 0x9e33516b119c096bull, 0xdba9318680783bb9ull, 0x567e840007b2729dull, 0x4d4820d06bc94b4eull }}, {{ 0xcb0ebd2877ca4afbull, 0xfefcaeb7071c41b7ull, 0x2e012e2eb0185e32ull, 0x949bef4104b25540ull, 0x60f128004cf87a2aull, 0x04d1482435dcf10full }}, {{ 0xee936394ade6edcfull, 0xf5ded326471a912dull, 0xcc0bcdd2e0f3adfdull, 0xce17588a2ef75481ull, 0xc96b900301b4c5a9ull, 0x302cd16a1aa16a99ull }}, {{ 0x51c1e3cecb054a15ull, 0x9ab43f7ec709abcbull, 0xf8760a3cc984cbebull, 0x0ce97565d5a94d11ull, 0xde33a01e110fb8a2ull, 0xe1c02e250a4e2a01ull }}, {{ 0x3192e613ee34e4ceull, 0x0b0a7af3c660b5f1ull, 0xb49c665fdf2ff734ull, 0x811e95fa589d02b3ull, 0xae04412caa9d3654ull, 0xd181cd72670da412ull }}, {{ 0xefbcfcc74e10f00full, 0x6e68cd85bfc71b6bull, 0x0e1bffbeb7dfa808ull, 0x0b31dbc776221b05ull, 0xcc2a8bbeaa241f4dull, 0x2f120678068868baull }}, {{ 0x5d61dfc90ca96099ull, 0x501807397dc71237ull, 0x8d17fd732ebc9054ull, 0x6ff295ca9d550e32ull, 0xf9a97572a5693902ull, 0xd6b440b04154174bull }}, {{ 0xa5d2bdda7e9dc5faull, 0x20f0483ee9c6b629ull, 0x82efe67fd35da34bull, 0x5f79d9ea25528df9ull, 0xc09e967a761c3a18ull, 0x630a86e28d48e8f7ull }}, {{ 0x7a3b6a88f229bbc0ull, 0x4962d27521c31da0ull, 0x1d5f00fe41a860efull, 0xbac2832575398bbfull, 0x8631e0c89d1a44f3ull, 0xde6944d984d919adull }}, {{ 0xc652295975a15581ull, 0xdddc3893519f2844ull, 0x25b609ee9093c958ull, 0x4b991f76943f7577ull, 0x3df2c7d62306b185ull, 0xb01cb07f307b00c7ull }}, {{ 0xbf359d7e984d570dull, 0xaa9a35c1303792afull, 0x791c6351a5c5dd78ull, 0xf3fb3aa1ca7a96a7ull, 0x6b7bce5d5e42ef34ull, 0xe11ee4f7e4ce07c8ull }}, {{ 0x781826f1f3056682ull, 0xaa06198be22bbaddull, 0xbb1be13079baa6b6ull, 0x87d04a51e8c9e28aull, 0x32d60fa5ae9d5811ull, 0xcb34f1aef00c4dd4ull }}, {{ 0xb0f185737e360119ull, 0xa43cff76d5b54ca6ull, 0x4f16cbe4c14a8322ull, 0x4e22e73317e2d96bull, 0xfc5c9c78d22570afull, 0xf01170d5607b0a49ull }}, {{ 0xe96f3682ee1c0af7ull, 0x6a61faa45914fe82ull, 0x16e3f6ef8ce91f5aull, 0x0d5d07feeedc7e31ull, 0xdb9e1cb8357666d9ull, 0x60ae6855c4ce66e3ull }}, {{ 0x1e58211d4d186da6ull, 0x27d3ca6b7ad1f11dull, 0xe4e7a55b811b3988ull, 0x85a24ff5549cedeaull, 0x942d1f3216a0047aull, 0xc6d01359b01004e6ull }}, {{ 0x2f714b2502f44878ull, 0x8e45e832cc336b23ull, 0xf10c75930b103f51ull, 0x38571f954e214b2cull, 0xc9c337f4e2402cc9ull, 0xc420c180e0a03101ull }}, {{ 0xda6cef721d8ad4abull, 0x8ebb11fbfa022f5full, 0x6a7c97be6ea2792full, 0x33673bd50d4cefc1ull, 0xe1a02f90d681bfdcull, 0xa9478f08c641ea11ull }}, {{ 0x88415a75276c4eb0ull, 0x934eb3d7c415d9beull, 0x28dded705258bbdbull, 0x0208565285015d8eull, 0xd041dba861117e9aull, 0x9ccb9657be9324b2ull }}, {{ 0x528d88938a3b12dbull, 0xc113066da8da8171ull, 0x98ab466337775693ull, 0x14535f39320da78dull, 0x22929493caaef204ull, 0x1ff3df6d71bf6efcull }}, {{ 0x398755c3664ebc8full, 0x8abe404898890e6dull, 0xf6b0bfe02aa961c5ull, 0xcb41b83bf4888b87ull, 0x59b9cdc5ead57428ull, 0x3f86ba46717a55d9ull }}, {{ 0x3f4959a1ff135d93ull, 0x6b6e82d5f55a9044ull, 0xa2e77ec1aa9dd1b7ull, 0xf09132578d55734full, 0x814209bb2c568997ull, 0x7b4346c06ec75a7dull }}, {{ 0x78dd8053f6c1a7c0ull, 0x32511c5b9589a2aaull, 0x5d0af390aa2a312aull, 0x65abf76b8556811cull, 0x0c94614fbb615fefull, 0xd0a0c38453c988e7ull }}, {{ 0xb8a70347a3908d81ull, 0xf72b1b93d7605aa8ull, 0xa26d83a6a5a5eba5ull, 0xf8b7aa3335610b1bull, 0x7dcbcd1d51cdbf59ull, 0x2647a32b45df5906ull }}, {{ 0x368620cc63a5870dull, 0xa7af13c669c38a97ull, 0x58472482787b347bull, 0xb72ca60015ca6f14ull, 0xe9f6032532097983ull, 0x7ecc5fb0bab97a40ull }}, {{ 0x213d47fbe4774680ull, 0x8cd6c5c021a369e8ull, 0x72c76d18b4d00cd4ull, 0x27be7c00d9e856cbull, 0x239c1f73f45ebf25ull, 0xf3fbbce74b3ec689ull }}, {{ 0x4c64cfd6eca8c0fcull, 0x8063b98150622311ull, 0x7bca42f71020804dull, 0x8d70d808831363f2ull, 0x64193a878bb37773ull, 0x87d56108f073c15bull }}, {{ 0xfbf01e653e9789d5ull, 0x03e53f0d23d55eacull, 0xd5e69da6a1450307ull, 0x866870551ec1e778ull, 0xe8fc494b7502aa83ull, 0x4e55ca5964858d91ull }}, {{ 0xd7612ff471eb6255ull, 0x26f476836655b2c1ull, 0x5b0228824cb21e46ull, 0x4014635333930ab8ull, 0x19dadcf2921aa923ull, 0x0f59e77ded3787b3ull }}, {{ 0x69cbdf8c7331d755ull, 0x858ca121ff58fb92ull, 0x8e159516fef52ebdull, 0x80cbe14003be6b33ull, 0x028ca179b50a9b60ull, 0x99830aeb442b4cffull }}, {{ 0x21f6bb7c7ff26954ull, 0x377e4b53f979d3b8ull, 0x8cd7d2e5f593d367ull, 0x07f6cc8025703003ull, 0x197e4ec1126a11c5ull, 0xff1e6d30a9b101f6ull }}, {{ 0x53a352dcff781d4aull, 0x2aeef147bec24531ull, 0x806e3cfb97c64208ull, 0x4fa3fd017661e023ull, 0xfeef138ab824b1b2ull, 0xf73043e6a0ea139cull }}, {{ 0x44613ca1fab124e3ull, 0xad556ccd7396b3edull, 0x044e61d3edbe9451ull, 0x1c67e20e9fd2c163ull, 0xf556c36b316ef0f7ull, 0xa7e2a7024924c421ull }}, {{ 0xabcc5e53caeb70dbull, 0xc556400683e30744ull, 0x2b0fd2474971cb30ull, 0x1c0ed4923e3b8ddeull, 0x9563a22fee5569a7ull, 0x8eda8616db6fa953ull }}, {{ 0xb5fbaf45ed32688cull, 0xb55e804126de48aeull, 0xae9e36c8de71efe7ull, 0x18944db66e538aadull, 0xd5e455df4f562087ull, 0x94893ce4925c9d43ull }}, {{ 0x1bd4d8bb43f8157bull, 0x15b1028b84aed6d3ull, 0xd22e23d8b0735f0dull, 0xf5cb09204f436ac8ull, 0x5aeb5ab9195d4546ull, 0xcd5c60edb79e24a6ull }}, {{ 0x16507750a7b0d6d0ull, 0xd8ea19732ed4643full, 0x35cd6676e481b682ull, 0x99ee5b4318a22bd8ull, 0x8d318b3afda4b4c5ull, 0x059bc9492c2d6e7full }}, {{ 0xdf24a9268ce8641dull, 0x7924fe7fd44bea76ull, 0x1a0600a4ed11211cull, 0x034f909ef655b672ull, 0x83ef704de86f0fb8ull, 0x3815dcdbb9c650fbull }}, {{ 0xb76e9b818113e922ull, 0xbb71f0fe4af728a4ull, 0x043c067142ab4b1cull, 0x211ba6359f592075ull, 0x275a630b14569d30ull, 0x30daa09541bf29d3ull }}, {{ 0x2a52130f0ac71b52ull, 0x527369eeeda7966full, 0x2a58406c9ab0ef1full, 0x4b147e18397b4492ull, 0x8987de6ecb6223e1ull, 0xe88a45d49177a23full }}, {{ 0xa734be966bc71133ull, 0x38822355488be057ull, 0xa772843e0ae95739ull, 0xeeccecf23ed0adb5ull, 0x5f4eb053f1d566ccull, 0x1566ba4daeac567bull }}, {{ 0x880f71e035c6ac02ull, 0x35156154d576c36cull, 0x8a792a6c6d1d683cull, 0x540141767426c918ull, 0xb912e34772560401ull, 0xd6034708d2bb60d1ull }}, {{ 0x509a72c219c2b813ull, 0x12d5cd5056a3a23dull, 0x68bba83c4326125aull, 0x480c8ea08983daf5ull, 0x3abce0ca775c280dull, 0x5c20c6583b51c831ull }}, {{ 0x26087b95019b30c3ull, 0xbc5a052362645665ull, 0x1754925a9f7cb784ull, 0xd07d92455f268d96ull, 0x4b60c7e8a9999084ull, 0x9947bf725131d1ecull }}, {{ 0x7c54d3d2100fe79bull, 0x5b843361d7eb5ff3ull, 0xe94db78a3adf2b2full, 0x24e7b6b5b78187dcull, 0xf1c7cf169fffa530ull, 0xfccd7a772bf2333aull }}, {{ 0xdb504634a09f0c0dull, 0x932a01d26f31bf82ull, 0x1d092b664cb7afd9ull, 0x710d23192b0f4ea1ull, 0x71ce16e23ffc73e1ull, 0xe006c8a7b776004dull }}, {{ 0x9122be0e46367887ull, 0xbfa4123857f17b1cull, 0x225bb1feff2cde7full, 0x6a835efbae99124bull, 0x720ce4d67fdc86ceull, 0xc043d68d2a9c0306ull }}, {{ 0xab5b6c8ebe20b545ull, 0x7c68b6336f6ecf1dull, 0x5794f3f5f7c0b0fdull, 0x2921b5d4d1fab6efull, 0x7480f060fe9d4410ull, 0x82a66183aa181e40ull }}, {{ 0xb1923d936d4714b7ull, 0xdc171e025a541728ull, 0x6bd1879bad86e9e6ull, 0x9b511a5033cb2559ull, 0x8d0963c9f224a8a1ull, 0x1a7fcf24a4f12e84ull }}, {{ 0xefb667c244c6cf25ull, 0x98e72c178748e796ull, 0x362f4c14c7452304ull, 0x112b072205ef757eull, 0x825de5e3756e9650ull, 0x08fe176e716bd12dull }}, {{ 0x5d200d96afc41775ull, 0xf907b8eb48d90be5ull, 0x1dd8f8cfc8b35e2dull, 0xabae47543b5a96eeull, 0x17aafae29651df20ull, 0x59ecea506e362bc7ull }}, {{ 0xa34087e2dda8ea93ull, 0xba4d3930d87a76f5ull, 0x2a79b81dd701adcbull, 0xb4cec94a5189e54dull, 0xecadccd9df32b746ull, 0x834127244e1db5c6ull }}, {{ 0x60854edca89929bbull, 0x47043be874c8a598ull, 0xa8c1312a6610c9f5ull, 0x1013dce72f62f503ull, 0x3eca0082b7fb28c3ull, 0x208b876b0d2919c5ull }}, {{ 0xc535149e95fba151ull, 0xc62a57148fd677f3ull, 0x978beba7fca7e394ull, 0xa0c6a107d9dd9224ull, 0x73e4051b2fcf979eull, 0x45734a2e839b01b4ull }}, {{ 0xb412ce31dbd44d25ull, 0xbda766cd9e60af85ull, 0xeb77348fde8ee3cfull, 0x47c24a4e82a7b56dull, 0x86e8330fde1bec32ull, 0xb680e5d1240e110cull }}, {{ 0x08bc0df2964b0372ull, 0x688a04082fc6db39ull, 0x32a80d9eb194e61dull, 0xcd96e7111a8d164bull, 0x4511fe9ead1739f6ull, 0x2108fa2b688caa7dull }}, {{ 0x57588b79deee2275ull, 0x15642851ddc4903aull, 0xfa908832efd0fd26ull, 0x07e506ab0982deefull, 0xb2b3f232c2e843a4ull, 0x4a59c5b2157ea8e4ull }}, {{ 0x697572c2b54d5892ull, 0xd5e99332a9ada247ull, 0xc9a551fd5e29e37cull, 0x4ef242ae5f1cb55full, 0xfb0775fb9d12a468ull, 0xe781b8f4d6f298eeull }}, {{ 0x1e967b9b150575b4ull, 0x5b1fbffaa0c856caull, 0xe07533e5ada2e2e0ull, 0x15769acfb71f15bdull, 0xce4a9bd422ba6c13ull, 0x0b1139906579f955ull }}, {{ 0x31e0d40ed236990cull, 0x8f3d7fca47d363e5ull, 0xc49406f8c85cdcc3ull, 0xd6a20c1d2736d96aull, 0x0eea16495b4838beull, 0x6eac3fa3f6c3bd5aull }}, {{ 0xf2c848943621fa7bull, 0x9866fde6ce41e6f3ull, 0xadc845b7d3a09fa3ull, 0x6254792388247e2bull, 0x9524dedd90d23774ull, 0x52ba7c67a3a56584ull }}, {{ 0x7bd2d5ca1d53c8caull, 0xf405eb040e930587ull, 0xc9d2b92e44463c63ull, 0xd74cbb63516cedb4ull, 0xd370b4a7a8362a8bull, 0x3b48dc0c6475f72dull }}, {{ 0xd63c59e52545d7e6ull, 0x883b2e2891be374aull, 0xe23b3bceaabe5be7ull, 0x68ff51e12e41490full, 0x42670e8c921da976ull, 0x50d8987bec9ba7caull }}, {{ 0x5e5b82f374ba6efcull, 0x524fcd95b16e28ecull, 0xd6505612ab6f970bull, 0x19f932cbce8cda9eull, 0x9806917db5289ea0ull, 0x2875f4d73e148de6ull }}, {{ 0xaf931d828f4855d8ull, 0x371e07d8ee4d993bull, 0x5f235cbab25be671ull, 0x03bbfbf611808a34ull, 0xf041aee913963241ull, 0x949b90686ccd8b01ull }}, {{ 0xdbbf271998d35a70ull, 0x272c4e794f07fc54ull, 0xb7619f4af797006cull, 0x2557d79caf05660bull, 0x6290d51ac3ddf68aull, 0xce13a41440076e13ull }}, {{ 0x957786fff841885full, 0x87bb10bd164fdb50ull, 0x29d038edabe60439ull, 0x756e6c1ed635fc75ull, 0xd9a8530ba6aba165ull, 0x0cc468ca804a4cc1ull }}, {{ 0xd6ab45ffb28f53b9ull, 0x4d4ea762df1e9125ull, 0xa2223948b6fc2a3full, 0x965039345e1bdc93ull, 0x80933e7482b44df6ull, 0x7fac17e902e6ff92ull }}, {{ 0x62b0bbfcf999453cull, 0x051289dcb731ab7aull, 0x55563cd725d9a679ull, 0xdf223c0bad169dc4ull, 0x05c0708d1b0b0ba1ull, 0xfcb8ef1a1d05fbb9ull }}, {{ 0xdae757e1bffcb456ull, 0x32b9629f27f0b2c7ull, 0x555e60677a8080baull, 0xb7565874c2e229abull, 0x398465830e6e7452ull, 0xdf395705223bd53aull }}, {{ 0x8d096ed17fdf0b5bull, 0xfb3dda378f66fbceull, 0x55afc40ac9050745ull, 0x295f748f9cd5a0b1ull, 0x3f2bf71e90508b3bull, 0xb83d663356565446ull }}, {{ 0x825e542efeb6718dull, 0xd06a862b9a05d611ull, 0x58dda86bda3248bbull, 0x9dba8d9c205846edull, 0x77b7a731a325704full, 0x3265fe015f5f4abeull }}, {{ 0x17af49d5f3206f87ull, 0x24293db4043a5cafull, 0x78a8943685f6d756ull, 0x294988194372c545ull, 0xad2c87f05f76631cull, 0xf7fbec0db9b8eb70ull }}, {{ 0xecd8e25b7f445b46ull, 0x699c69082a479ed6ull, 0xb695ca213ba4695dull, 0x9cdf50fca27bb4b6ull, 0xc3bd4f63ba9fdf19ull, 0xafd7388941393266ull }}, {{ 0x4078d792f8ab90b9ull, 0x201c1a51a6cc3465ull, 0x21d9e54c546c1da6ull, 0x20b929de58d50f23ull, 0xa56519e54a3eb700ull, 0xde68355c8c3bf803ull }}, {{ 0x84b86bbdb6b3a737ull, 0x4119073083fa0bf4ull, 0x5282f4fb4c39287dull, 0x473ba2af7852975full, 0x75f302f4e6732601ull, 0xb012159d7a57b024ull }}, {{ 0x2f34356923048825ull, 0x8afa47e527c4778dull, 0x391d91d0fa3b94e4ull, 0xc8545adab339e9b9ull, 0x9b7e1d91007f7c0cull, 0xe0b4d826c76ce16cull }}, {{ 0xd80a161b5e2d5176ull, 0x6dc6cef38dacab83ull, 0x3b27b229c653d0edull, 0xd34b8c8b0043213cull, 0x12ed27aa04fad87full, 0xc7107183ca40ce3eull }}, {{ 0x7064dd11adc52e98ull, 0x49c4158388beb326ull, 0x4f8cf5a1bf462946ull, 0x40f37d6e029f4c5aull, 0xbd438ca431cc74feull, 0xc6a46f25e6880e6cull }}, {{ 0x63f0a2b0c9b3d1edull, 0xe1a8d7235772ff80ull, 0x1b81985178bd9cbeull, 0x8982e64c1a38fb87ull, 0x64a37e69f1fc91eeull, 0xc26c577b0150903full }}, {{ 0xe7665ae7e1063341ull, 0xd09867616a7dfb03ull, 0x130ff32eb7681f74ull, 0x5f1cfef90639d347ull, 0xee62f02373ddb351ull, 0x983b6ace0d25a279ull }}, {{ 0x09ff8d0eca3e008eull, 0x25f409ce28ebce27ull, 0xbe9f7fd32a113a90ull, 0xb721f5ba3e4240c6ull, 0x4fdd616286a9012dull, 0xf2522c0c837858c3ull }}, {{ 0x63fb8293e66c058bull, 0x7b88620d99360d86ull, 0x723afe3fa4ac49a1ull, 0x275399466e9687c3ull, 0x1ea5cdd9429a0bc9ull, 0x7735b87d22b377a1ull }}, {{ 0xe7d319c70038376eull, 0xd353d487fc1c873full, 0x764dee7c6ebae04eull, 0x8943fcc051e14da2ull, 0x327a0a7c9a0475dbull, 0xa81934e35b02ac4bull }}, {{ 0x0e3f01c602322a4eull, 0x41464d4fd91d487full, 0x9f0b50dc534cc314ull, 0x5ca7df8332cd0858ull, 0xf8c468de042c9a93ull, 0x90fc10e18e1abaefull }}, {{ 0x8e7611bc15f5a70cull, 0x8cbf051e7b24d4f6ull, 0x3671289b40ff9ecaull, 0x9e8ebb1ffc025376ull, 0xb7ac18ac29be09c1ull, 0xa9d8a8cf8d0b4d5full }}, {{ 0x909cb158db988679ull, 0x7f763330cf7051a1ull, 0x206b961089fc33e9ull, 0x31934f3fd817429eull, 0x2cb8f6b9a16c6190ull, 0xa276981b827105bdull }}, {{ 0xa61eed7893f540bbull, 0xfa9dffe81a63304full, 0x4433dca563da071eull, 0xefc1187e70e89a2dull, 0xbf39a3404e3bcfa1ull, 0x58a1f113186a3963ull }}, {{ 0x7d3546b5c794874full, 0xca2bff1107dfe31cull, 0xaa069e75e6844735ull, 0x5d8af4f0691605c4ull, 0x784060830e561c53ull, 0x76536abef4263de5ull }}, {{ 0xe414c319cbcd4915ull, 0xe5b7f6aa4ebedf1cull, 0xa442309b012ac819ull, 0xa76d91641adc39aeull, 0xb283c51e8f5d1b41ull, 0x9f422b75897e6af6ull }}, {{ 0xe8cf9f01f604dad0ull, 0xf92fa2a71374b720ull, 0x6a95e60e0babd102ull, 0x8a47ade90c9a40d2ull, 0xf925b33199a31090ull, 0x3895b2975ef02da2ull }}, {{ 0x181c36139c308c1dull, 0xbbdc5a86c28f2749ull, 0x29dafc8c74b62a1dull, 0x66cccb1a7e068838ull, 0xbb78fff0005ea5a5ull, 0x35d8f9e9b561c85dull }}, {{ 0xf11a1cc419e57925ull, 0x569b8943999788daull, 0xa28ddd7c8f1da529ull, 0x03ffef08ec415231ull, 0x52b9ff6003b27876ull, 0x1a79c32115d1d3a9ull }}, {{ 0x6b051fa902f6bb76ull, 0x62135ca3ffeb588dull, 0x598aa6dd9728739dull, 0x27ff56593a8d35f0ull, 0x3b43f9c024f8b49cull, 0x08c19f4ada32449dull }}, {{ 0x2e333c9a1da3529full, 0xd4c19e67ff317586ull, 0x7f6a84a7e7948425ull, 0x8ff95f7c49841b63ull, 0x50a7c18171b70e19ull, 0x579038ec85f6ae24ull }}, {{ 0xce005e0528613a33ull, 0x4f90300ff7ee973dull, 0xfa292e8f0bcd297aull, 0x9fbdbadadf2911e2ull, 0x268d8f0e71268cffull, 0x6ba2393d3ba2cd6bull }}, {{ 0x0c03ac3393cc45feull, 0x1ba1e09faf51e86aull, 0xc59bd19676039ec7ull, 0x3d694c8cb79ab2ddull, 0x818796906b8181fcull, 0x34563c64545c062full }}, {{ 0x7824ba03c5fabbebull, 0x1452c63cd9331424ull, 0xb8162fe09c2433c7ull, 0x661cfd7f2c0afca9ull, 0x0f4be1a4330f13daull, 0x0b5e5beb4b983ddbull }}, {{ 0xb16f4425bbcb5730ull, 0xcb3bbe607bfec96cull, 0x30dddec6196a05c6ull, 0xfd21e6f7b86ddea1ull, 0x98f6d069fe96c687ull, 0x71af9730f3f26a8eull }}, {{ 0xee58a97955f167deull, 0xf0556fc4d7f3de3eull, 0xe8aab3bcfe2439c3ull, 0xe35305ad344ab24bull, 0xf9a42423f1e3c14full, 0x70dbe7e987782991ull }}, {{ 0x4f769ebd5b6e0eabull, 0x63565db06f86ae75ull, 0x16ab0561ed6a41a7ull, 0xe13e38c40aeaf6f7ull, 0xc069696772e58d1eull, 0x68970f1f4ab19fb3ull }}, {{ 0x1aa23365924c92aeull, 0xe15fa8e45b42d095ull, 0xe2ae35d346269089ull, 0xcc6e37a86d2da5a6ull, 0x841e1e0a7cf78334ull, 0x15e69738eaf03d05ull }}, {{ 0x0a5601f7b6fdbaccull, 0xcdbc98eb909c25d3ull, 0xdace1a40bd81a562ull, 0xfc4e2c9443c87884ull, 0x292d2c68e1ab200full, 0xdb01e8392d626237ull }}, {{ 0x675c13ad25e94bf8ull, 0x095df933a6197a3eull, 0x8c0d0687671075dcull, 0xdb0dbdcaa5d4b530ull, 0x9bc3bc18d0af409full, 0x8e13123bc5d7d627ull }}, {{ 0x0998c4c37b1cf7b0ull, 0x5dabbc047cfec670ull, 0x7882414a06a49a98ull, 0x8e8969ea7a4f13e5ull, 0x15a558f826d8863eull, 0x8cbeb655ba6e5d8cull }}, {{ 0x5ff7afa2cf21acddull, 0xa8b5582ce1f3c060ull, 0xb5168ce4426e09f3ull, 0x915e2328c716c6f6ull, 0xd87579b184753e71ull, 0x7f731f59484fa778ull }}, {{ 0xbfacdc5c1750c09eull, 0x971571c0d38583c3ull, 0x12e180ea984c6384ull, 0xadad5f97c6e3c5a3ull, 0x7496c0ef2c94706full, 0xfa7f397cd31c8ab8ull }}, {{ 0x7cc09b98e9278628ull, 0xe6d67188433725a5ull, 0xbccf0929f2fbe32dull, 0xc8c5bbedc4e5b85eull, 0x8de38957bdcc645cull, 0xc8f83ee03f1d6b34ull }}, {{ 0xdf8613f91b8b3d8dull, 0x04606f52a0277876ull, 0x60165ba37dd6dfcbull, 0xd7b95749b0f933b3ull, 0x8ae35d6d69fbeb9full, 0xd9b274c27726300dull }}, {{ 0xbb3cc7bb13706785ull, 0x2bc4593a418ab4a4ull, 0xc0df9462ea64bdeeull, 0x6d3d68e0e9bc0501ull, 0x6ce1a64623d7343eull, 0x80f88f98a77de087ull }}, {{ 0x505fcd4ec2640b30ull, 0xb5ab7c468f6b0e6full, 0x88bbcbdd27ef6b4dull, 0x446618c921583211ull, 0x40d07ebd66680a70ull, 0x09b59bf68aeac54aull }}, {{ 0x23be051397e86fdfull, 0x18b2dac19a2e9059ull, 0x5755f6a38f5a3109ull, 0xabfcf7db4d71f4afull, 0x8824f36600106862ull, 0x611817a16d2bb4e6ull }}, {{ 0x656c32c3ef145eb7ull, 0xf6fc8b9005d1a37bull, 0x695ba2639985ea5aull, 0xb7e1ae9106738ed9ull, 0x517181fc00a413daull, 0xcaf0ec4e43b51101ull }}, {{ 0xf639fba756cbb323ull, 0xa5dd73a03a3062d1ull, 0x1d9457e3ff3b278dull, 0x2ed0d1aa4083947eull, 0x2e6f13d80668c68bull, 0xed693b0ea512aa0dull }}, {{ 0x9e43d48963f4ff5cull, 0x7aa6844245e3dc33ull, 0x27cb6ee7f84f8b88ull, 0xd42830a68523ccedull, 0xd056c6704017c16full, 0x461c4e9272baa483ull }}, {{ 0x2ea64d5de791f997ull, 0xca812a96bae69a04ull, 0x8df2550fb31b7354ull, 0x4991e68133660143ull, 0x2363c06280ed8e5eull, 0xbd1b11b87b4a6d26ull }}, {{ 0xd27f05ab0bb3bfe4ull, 0xe90ba9e34d020429ull, 0x8b77529cff12814full, 0xdfb3010c01fc0ca3ull, 0x61e583d909478faeull, 0x630eb134d0e8437dull }}, {{ 0x38f638ae75057eebull, 0x1a74a2e1021429a2ull, 0x72a93a21f6b90d1full, 0xbcfe0a7813d87e63ull, 0xd2f7267a5ccb9cd4ull, 0xde92ec102912a2e5ull }}, {{ 0x399e36d09236f52cull, 0x088e5cca14c9a056ull, 0x7a9c4553a33a8337ull, 0x61ec68b0c674efe2ull, 0x3da780c79ff4204full, 0xb1bd38a19aba5cfaull }}, {{ 0x402e2425b62593b3ull, 0x558f9fe4cfe0435eull, 0xca1ab54460492026ull, 0xd33c16e7c0915ed8ull, 0x688b07cc3f894319ull, 0xf16436500b47a1c6ull }}, {{ 0x81cd69791d77c500ull, 0x579c3ef01ec2a1aeull, 0xe50b14abc2db417full, 0x4058e50d85adb477ull, 0x156e4dfa7b5c9f02ull, 0x6dea1f2070cc51c0ull }}, {{ 0x12061ebb26adb1fdull, 0x6c1a7561339a50d1ull, 0xf26eceb59c908ef9ull, 0x8378f28738c90caeull, 0xd64f0bc8d19e3616ull, 0x4b25374467fb3180ull }}, {{ 0xb43d334f82c8f3e3ull, 0x390895cc0407282aull, 0x785413181da595beull, 0x22b9794837da7ed5ull, 0x5f1675d8302e1ce1ull, 0xef7428ac0fcfef08ull }}, {{ 0x0a64011b1bd986e1ull, 0x3a55d9f8284791abull, 0xb348bef12877d96eull, 0x5b3ebcd22e88f456ull, 0xb6e09a71e1cd20cbull, 0x5a8996b89e1f5653ull }}, {{ 0x67e80b0f167f44ccull, 0x475a83b192cbb0aeull, 0x00d7756b94ae7e4eull, 0x90736035d1598b63ull, 0x24c60872d20347f1ull, 0x895fe3362d395f45ull }}, {{ 0x0f106e96e0f8affcull, 0xc98924efbbf4e6d0ull, 0x086a9633ced0ef0eull, 0xa481c21a2d7f71deull, 0x6fbc547c3420cf6full, 0x5dbee01dc43db8b3ull }}, {{ 0x96a451e4c9b6dfd4ull, 0xdf5b715d57910420ull, 0x5429de0614295693ull, 0x6d119505c6fa72acull, 0x5d5b4cda09481a5cull, 0xa974c129aa693702ull }}, {{ 0xe26b32efe124be4aull, 0xb9926da56baa2945ull, 0x49a2ac3cc99d61c6ull, 0x42afd239c5c87abbull, 0xa59100845cd1079cull, 0x9e8f8ba0a81c2617ull }}, {{ 0xd82ffd5ecb6f6ee7ull, 0x3fb8487634a59cbaull, 0xe05aba5fe025d1c3ull, 0x9ade3641b9d4cb50ull, 0x77aa052ba02a4c1aull, 0x319b744691197cecull }}, {{ 0x71dfe5b3f25a5506ull, 0x7d32d49e0e781f4cull, 0xc38b47bec17a31a0ull, 0x0cae1e91424ff128ull, 0xaca433b441a6f90aull, 0xf0128ac1aafee13cull }}, {{ 0x72bef90777875239ull, 0xe3fc4e2c90b138fcull, 0xa370cd738ec5f044ull, 0x7ecd31ac971f6b97ull, 0xbe6a050a9085ba64ull, 0x60b96b90adf4cc5eull }}, {{ 0x7b75ba4aab49363bull, 0xe7db0dbda6ec39dcull, 0x6268068393bb62b0ull, 0xf403f0bde73a33ecull, 0x70243269a53947ecull, 0xc73e33a6cb8ffbb3ull }}, {{ 0xd29946eab0dc1e51ull, 0x0e8e8968853a429cull, 0xd8104123c551dae9ull, 0x8827676b0846073bull, 0x6169f820743ccf41ull, 0xc86e0483f39fd502ull }}, {{ 0x39fcc52ae8992f27ull, 0x91915e1534469a20ull, 0x70a28b65b5328d1aull, 0x518a0a2e52bc4856ull, 0xce23b1448a60188full, 0xd44c2d27843e5217ull }}, {{ 0x43dfb3ad15fbd785ull, 0xafadacd40ac20542ull, 0x665971f913f98309ull, 0x2f6465cf3b5ad360ull, 0x0d64ecad67c0f599ull, 0x4af9c38b2a6f34eeull }}, {{ 0xa6bd04c2dbd66b30ull, 0xdcc8c0486b943496ull, 0xff7e73bac7bf1e60ull, 0xd9ebfa18518c41c3ull, 0x85f13ec60d8997fbull, 0xedc1a36fa858114cull }}, {{ 0x83622f9c96602fddull, 0x9fd782d433ca0de2ull, 0xfaf0854bcd772fc8ull, 0x8337c4f32f7a91a7ull, 0x3b6c73bc875fefd6ull, 0x4990625c9370acfdull }}, {{ 0x21d5dc1ddfc1dea1ull, 0x3e6b1c4a05e48ad9ull, 0xcd6534f606a7ddd6ull, 0x202db17fdac9b08full, 0x523c855d49bf5e61ull, 0xdfa3d79dc266c1e4ull }}, {{ 0x525a992abd92b24dull, 0x702f1ae43aed6c7bull, 0x05f4119c428eaa5eull, 0x41c8eefe8be0e59eull, 0x365d35a4e179afcbull, 0xbc666c29980392ebull }}, {{ 0x3789fbab67baf702ull, 0x61d70cea4d463cd1ull, 0x3b88b01a9992a7b0ull, 0x91d955f176c8f82cull, 0x1fa41870cec0ddf0ull, 0x5c00399ff023bd30ull }}, {{ 0x2b63d4b20d4da619ull, 0xd266812704be602cull, 0x5356e109ffba8ce3ull, 0xb27d5b6ea3d9b1baull, 0x3c68f4681388ab65ull, 0x9802403f616563e1ull }}, {{ 0xb1e64ef485087cf8ull, 0x38010b862f6fc1b9ull, 0x4164ca63fd4980e6ull, 0xf8e592526680f147ull, 0x5c198c10c356b1f8ull, 0xf0168279cdf5e6ccull }}, {{ 0xf2ff158d3254e1b4ull, 0x300a733dda5d9140ull, 0x8defe7e7e4df08feull, 0xb8f7b73801096cc8ull, 0x98ff78a7a162f3b9ull, 0x60e118c20b9b03fbull }}, {{ 0x7df6d783f750d104ull, 0xe068806a87a7ac89ull, 0x8b5f0f0ef0b659edull, 0x39ad28300a5e3fd5ull, 0xf9fab68c4ddd8541ull, 0xc8caf794740e27d3ull }}, {{ 0xeba46b27a9282a24ull, 0xc41504294c8cbd5eull, 0x71b69695671f834aull, 0x40c391e067ae7e57ull, 0xc3cb217b0aa7348cull, 0xd7edabcc888d8e47ull }}, {{ 0x346c2f8c9b91a569ull, 0xa8d2299cfd7f65b5ull, 0x7121e1d6073b20ebull, 0x87a3b2c40cd0ef6aull, 0xa5ef4ece6a880d7aull, 0x6f48b5fd55878ecdull }}, {{ 0x0c39db7e13b07617ull, 0x9835a021e6f9f914ull, 0x6b52d25c484f4934ull, 0x4c64fba880295a28ull, 0x7b591410295086c9ull, 0x58d71be5574b9408ull }}, {{ 0x7a4292ecc4e49ce7ull, 0xf218415305c3bac8ull, 0x313c379ad318dc0dull, 0xfbf1d495019d8594ull, 0xd17ac8a19d2543dcull, 0x786716f568f3c854ull }}, {{ 0xc699bd3fb0ee2103ull, 0x74f28d3e39a54bd4ull, 0xec5a2c0c3ef8988bull, 0xd7724dd2102737c9ull, 0x2ecbd6502374a6a1ull, 0xb406e5961985d350ull }}, {{ 0xc201647ce94d4a1bull, 0x9179846e4074f64full, 0x3b85b87a75b5f572ull, 0x6a770a34a1882de3ull, 0xd3f65f21628e8252ull, 0x0844f7dcff3a4121ull }}, {{ 0x940dece11d04e510ull, 0xaebf2c4e84919f1dull, 0x533934c8991b9679ull, 0x28a6660e4f51cae0ull, 0x479fb74dd9911738ull, 0x52b1aea1f8468b52ull }}, {{ 0xc88b40cb2230f2a2ull, 0xd377bb112db03727ull, 0x403c0fd5fb13e0c0ull, 0x967ffc8f1931ecc3ull, 0xcc3d290a7faae831ull, 0x3af0d253b2c17136ull }}, {{ 0xd57087ef55e97a59ull, 0x42ad4eabc8e2278dull, 0x82589e5bcec6c788ull, 0xe0ffdd96fbf33fa0ull, 0xfa639a68fcad11efull, 0x4d683744fb8e6c23ull }}, {{ 0x56654f595b1ec777ull, 0x9ac512b5d8d58b8aull, 0x17762f9613c3cb52ull, 0xc9fea7e5d7807c45ull, 0xc7e40819dec2b35eull, 0x061228b1d3903967ull }}, {{ 0x5ff5197d8f33caa2ull, 0x0bb2bb1a78577367ull, 0xea9ddbdcc5a5f13aull, 0xe3f28efa6b04dab2ull, 0xcee85102b39b01b3ull, 0x3cb596f243a23e0dull }}, {{ 0xbf92fee79805ea53ull, 0x74fb4f08b36a8209ull, 0x2a2a969fb87b6c44ull, 0xe77995c82e308afdull, 0x15132a1b040e1106ull, 0x5f17e576a4566c8aull }}, {{ 0x7bbdf50bf03b273bull, 0x91d1165702291461ull, 0xa5a9e23d34d23aacull, 0x0abfd9d1cde56de3ull, 0xd2bfa50e288caa45ull, 0xb6eef6a26b603d64ull }}, {{ 0xd56b9277624f8852ull, 0xb22adf66159acbceull, 0x78a2d66410364abdull, 0x6b7e82320af64ae4ull, 0x3b7c728d957ea6b2ull, 0x2555a25831c265f0ull }}, {{ 0x5633b8a9d71b5330ull, 0xf5acb9fcd80bf614ull, 0xb65c5fe8a21eeb68ull, 0x32f115f46d9eececull, 0x52dc7987d6f282f8ull, 0x75585771f197fb62ull }}, {{ 0x5e0536a267113fe5ull, 0x98bf43e070779ccbull, 0x1f9bbf1655353219ull, 0xfd6adb8c4835413full, 0x3c9cbf4e65791db1ull, 0x95736a736fefd1d7ull }}, {{ 0xac34225806ac7ef1ull, 0xf778a6c464ac1ff1ull, 0x3c1576df5413f4ffull, 0xe62c937ad2148c77ull, 0x5e1f790ff6bb28f3ull, 0xd68228825f5e3268ull }}, {{ 0xba09577042bcf565ull, 0xaab683abeeb93f70ull, 0x58d6a4b948c791ffull, 0xfdbdc2cc34cd7ca8ull, 0xad3aba9fa34f9986ull, 0x61159517b9adf813ull }}, {{ 0x445d6a629b6195f7ull, 0xab2124b7533c7a67ull, 0x78626f3cd7cbb3fcull, 0xe9699bfa1006de93ull, 0xc44b4a3c611bff45ull, 0xcad7d2ed40cbb0c4ull }}, {{ 0xaba627da11cfdba4ull, 0xaf4b6f29405cc808ull, 0xb3d858606df507deull, 0x1e2017c4a044b1c2ull, 0xaaf0e65bcb17f8bbull, 0xec6e3d4487f4e7afull }}, {{ 0xb47d8e84b21e9465ull, 0xd8f2579c839fd056ull, 0x067373c44b924eb2ull, 0x2d40edae42aef19bull, 0xad68ff95eeefb74full, 0x3c4e64ad4f910cdcull }}, {{ 0x0ce7912ef531cbf7ull, 0x79776c1d243e2363ull, 0x408285aaf3b712fcull, 0xc48948ce9ad5700eull, 0xc619fbdb555d2917ull, 0x5b0feec51baa809eull }}, {{ 0x810babd593f1f7a4ull, 0xbeaa39236a6d61deull, 0x851938ad8526bddcull, 0xad5cd8120c56608eull, 0xbd03d69155a39aedull, 0x8e9f53b314a90633ull }}, {{ 0x0a74b657c773ac66ull, 0x72a63b622845d2b1ull, 0x32fc36c733836a9full, 0xc5a070b47b5fc591ull, 0x622661ad58640d48ull, 0x923944fece9a3e05ull }}, {{ 0x688f1f6dca84bc00ull, 0x7a7e51d592ba3aeaull, 0xfdda23c803222a3aull, 0xb844670cd1bdb7abull, 0xd57fd0c573e884d7ull, 0xb63cb1f412066c35ull }}, {{ 0x15973a49e92f57ffull, 0xc8ef3257bb464d28ull, 0xea8565d01f55a648ull, 0x32ac068031692cb7ull, 0x56fe27b68715306dull, 0x1e5ef388b4403a1aull }}, {{ 0xd7e846e31bd96ff5ull, 0xd957f76d50bf0390ull, 0x2935fa2139587ed7ull, 0xfab84101ee1bbf2full, 0x65ed8d2146d3e443ull, 0x2fb583570a824507ull }}, {{ 0x6f12c4df167e5f94ull, 0x7d6faa45277623a8ull, 0x9c1bc54c3d74f46eull, 0xcb328a134d1577d7ull, 0xfb47834cc446eaa7ull, 0xdd1721666916b249ull }}, {{ 0x56bbb0b6e0efbbc5ull, 0xe65ca6b38a9d6494ull, 0x1915b4fa66918c50ull, 0xeff964c102d6ae6cull, 0xd0cb20ffaac52a8dull, 0xa2e74e001ae2f6e3ull }}, {{ 0x6354e724c95d55b4ull, 0xff9e83036a25edcbull, 0xfad911c801af7b28ull, 0x5fbdef8a1c62d038ull, 0x27ef49fcabb3a98bull, 0x5d090c010cdda4e6ull }}, {{ 0xe151076fdda55908ull, 0xfc311e22257b49f1ull, 0xcc7ab1d010dacf99ull, 0xbd6b5b651bdc2239ull, 0x8f58e3deb5049f71ull, 0xa25a780a80a870fdull }}, {{ 0xcd2a4a5ea8757a4dull, 0xd9eb2d5576d0e372ull, 0xfccaf220a88c1c03ull, 0x663191f316995641ull, 0x9978e6b3122e3a71ull, 0x5788b069069469e7ull }}, {{ 0x03a6e7b29496c6feull, 0x832fc556a428e27cull, 0xdfed754695791826ull, 0xfdefb37ee1fd5e93ull, 0xfeb902feb5ce486dull, 0x6b56e41a41cc230bull }}, {{ 0x24850cf9cde3c5ebull, 0x1fddb5626998d8d8ull, 0xbf4694c1d6baf181ull, 0xeb5d02f4d3e5b1c6ull, 0xf33a1df31a0ed44bull, 0x3164e90691f95e77ull }}, {{ 0x6d3281c20ae5bb30ull, 0x3ea915d81ff87871ull, 0x78c1cf92634d6f0bull, 0x31a21d9046f8f1c3ull, 0x80452b7f04944af7ull, 0xedf11a41b3bdb0afull }}, {{ 0x43f911946cf94fe2ull, 0x729ada713fb4b46eull, 0xb7921bb7e1065670ull, 0xf05527a2c5b971a2ull, 0x02b3b2f62dcaeda7ull, 0x4b6b06910568e6dbull }}, {{ 0xa7baafcc41bd1ed5ull, 0x7a0c886c7d0f0c4eull, 0x2bb5152eca3f6064ull, 0x63538c5bb93e705bull, 0x1b04fd9dc9ed488full, 0xf22e41aa3619048eull }}, {{ 0x8d4addfa91633456ull, 0xc47d543ce2967b12ull, 0xb512d3d3e679c3ecull, 0xe1437b953c70638full, 0x0e31e829e344d599ull, 0x75ce90a61cfa2d8dull }}, {{ 0x84ecabc9ade00b57ull, 0xace54a60d9e0ceb9ull, 0x12bc464700c1a73full, 0xcca2d3d45c63e39dull, 0x8df311a2e0b05802ull, 0x9a11a67d21c5c782ull }}, {{ 0x313eb5e0cac07169ull, 0xc0f4e7c882c8133full, 0xbb5abec60790887cull, 0xfe5c464b9be6e422ull, 0x8b7eb05cc6e3701bull, 0x04b080e351b9cb19ull }}, {{ 0xec731ac7eb846e1dull, 0x89910dd51bd0c077ull, 0x518b73bc4ba554dfull, 0xef9abef41704e95bull, 0x72f2e39fc4e26117ull, 0x2ee508e13141eeffull }}, {{ 0x3c7f0bcf332c4d23ull, 0x5faa8a53162784afull, 0x2f72855af47550bbull, 0x5c0b7588e6311d91ull, 0x7d7ce43db0d7caefull, 0xd4f258cbec9355faull }}, {{ 0x5cf67617ffbb0362ull, 0xbca9673edd8b2ed8ull, 0xda79358d8c952751ull, 0x98729758fdeb27abull, 0xe6e0ea68e86ded59ull, 0x517777f73dc15bc8ull }}, {{ 0xa1a09ceffd4e21d6ull, 0x5e9e0874a76fd473ull, 0x88bc17877dd38931ull, 0xf479e979eb2f8cb6ull, 0x04c92819144b457full, 0x2eaaafa8698d95d9ull }}, {{ 0x5046215fe50d5260ull, 0xb22c548e8a5e4c84ull, 0x5758eb4aea435bedull, 0x8cc31ec32fdb7f21ull, 0x2fdb90facaf0b6ffull, 0xd2aadc941f87da7aull }}, {{ 0x22bd4dbef28537c2ull, 0xf5bb4d9167aefd2bull, 0x697930ed26a19748ull, 0x7f9f339fde92f74dull, 0xde93a9cbed6725fbull, 0x3aac9dc93b4e88c5ull }}, {{ 0x5b65097579342d98ull, 0x995107ae0cd5e3afull, 0x1ebbe943824fe8d9ull, 0xfc38043eb1bda906ull, 0xb1c4a1f746077bd2ull, 0x4abe29dc511157baull }}, {{ 0x91f25e96bc09c7edull, 0xfd2a4ccc805ae4d9ull, 0x33571ca3171f187full, 0xda302a72f1689a3dull, 0xf1ae53a8bc4ad63dull, 0xeb6da29b2aad6d4aull }}, {{ 0xb377b1e35861cf44ull, 0xe3a6fffd038cf07full, 0x01671e5ee736f4ffull, 0x85e1a87d6e160664ull, 0x70cf44975aec5e6aull, 0x32485a0faac644edull }}, {{ 0x02acf2e173d218a4ull, 0xe485ffe2238164fdull, 0x0e072fb5082591feull, 0x3ad094e64cdc3fe8ull, 0x6818ade98d3bb029ull, 0xf6d3849cabbeb146ull }}, {{ 0x1ac17cce8634f66bull, 0xed3bfed5630df1e2ull, 0x8c47dd125177b3f4ull, 0x4c25d0ff009a7f10ull, 0x10f6cb1f8454e19cull, 0xa4432e1eb572ecc0ull }}, {{ 0x0b8ee0113e11a02bull, 0x4457f455de8b72d5ull, 0x7acea2b72ead0791ull, 0xf97a29f60608f6a5ull, 0xa9a3ef3b2b50d01aull, 0x6a9fcd33167d3f80ull }}, {{ 0x7394c0ac6cb041a9ull, 0xab6f8b5ab1727c52ull, 0xcc125b27d2c24bacull, 0xbec5a39c3c59a276ull, 0xa067584fb128210dull, 0x2a3e03fee0e47b06ull }}, {{ 0x83cf86bc3ee2909dull, 0xb25b718aee78db38ull, 0xf8b78f8e3b96f4beull, 0x73b8641a5b8058a3ull, 0x4409731ceb914a89ull, 0xa66c27f4c8ecce42ull }}, {{ 0x261b435a74d9a627ull, 0xf7926f6d50b89035ull, 0xb72b9b8e53e58f72ull, 0x8533e90793037667ull, 0xa85e7f2133ace95eull, 0x80398f8fd9400e96ull }}, {{ 0x7d10a18890807d85ull, 0xabb85a452735a213ull, 0x27b4138f46f79a7dull, 0x34071a4bbe22a00dull, 0x93b0f74c04c11db1ull, 0x023f9b9e7c8091e2ull }}, {{ 0xe2a64f55a504e72full, 0xb53386b3881854c2ull, 0x8d08c398c5ac08e8ull, 0x084706f56d5a4083ull, 0xc4e9a8f82f8b28ecull, 0x167c1430dd05b2d9ull }}, {{ 0xda7f1958723107d8ull, 0x1403430350f34f9cull, 0x8257a3f7b8b85917ull, 0x52c6459645868523ull, 0xb12099b1db6f9938ull, 0xe0d8c9e8a238fc81ull }}, {{ 0x88f6fd7475ea4e72ull, 0xc8209e2129811c20ull, 0x176c67ad37337ae6ull, 0x3bbeb7deb7413363ull, 0xeb4600f2925bfc33ull, 0xc877e3165639dd10ull }}, {{ 0x59a5e68c9b271077ull, 0xd1462d4b9f0b1945ull, 0xea3c0cc42802cd03ull, 0x55732eb3288c01deull, 0x30bc0979b797da00ull, 0xd4aededf5e42a2a9ull }}, {{ 0x807b017e0f86a4a9ull, 0x2cbdc4f4366efcb5ull, 0x26587fa9901c0226ull, 0x567fd2ff957812b5ull, 0xe7585ec12bee8403ull, 0x4ed4b4b9ae9a5a9bull }}, {{ 0x04ce0eec9b426e9aull, 0xbf69b18a2055df17ull, 0x7f74fc9fa118157dull, 0x60fe3dfbd6b0bb13ull, 0x0973b38bb7512821ull, 0x144f0f40d2078a17ull }}, {{ 0x300c953e10985200ull, 0x7a20ef65435ab6e6ull, 0xfa91de3c4af0d6e9ull, 0xc9ee6bd662e74ec2ull, 0x5e850375292b914dull, 0xcb169888344b64e6ull }}, {{ 0xe07dd46ca5f333fcull, 0xc54959f4a18b24fdull, 0xc9b2ae5aed68651eull, 0xe350365fdd09139dull, 0xb13222939bb3ad09ull, 0xeee1f5520af1f0ffull }}, {{ 0xc4ea4c3e7b8007d4ull, 0xb4dd838e4f6f71eaull, 0xe0facf8d4613f333ull, 0xe1221fbea25ac429ull, 0xebf559c41504c262ull, 0x54d395346d7369fcull }}, {{ 0xb126fa70d3004e46ull, 0x10a7238f1a5a732bull, 0xc9cc1b84bcc78005ull, 0xcb553d72578ba9a2ull, 0x379581a8d22f97dcull, 0x5043d40c468223e1ull }}, {{ 0xeb85c8683e030eb9ull, 0xa687639707887fb4ull, 0xe1f9132f5fcb0032ull, 0xf15466776b74a05bull, 0x2bd7109835dbee9full, 0x22a6487ac11566ccull }}, {{ 0x3339d4126c1e933dull, 0x8149e3e64b54fd11ull, 0xd3babfd9bdee01faull, 0x6d4c00aa328e4396ull, 0xb666a5f21a97523full, 0x5a7ed4cb8ad603f9ull }}, {{ 0x004248b83931c067ull, 0x0ce2e6fef151e2acull, 0x454b7e816b4c13c9ull, 0x44f806a5f98ea3e4ull, 0x20027b7509e9367aull, 0x88f44ff36c5c27c1ull }}, {{ 0x0296d7323bf18401ull, 0x80dd05f56d32dab8ull, 0xb4f2f10e30f8c5daull, 0xb1b0427bbf9266eaull, 0x4018d292631c20c6ull, 0x598b1f823b998d8bull }}, {{ 0x19e467f6576f280bull, 0x08a23b9643fc8b30ull, 0x117d6a8de9b7ba89ull, 0xf0e298d57bb8052bull, 0x80f839b7df1947c2ull, 0x7f6f3b1653ff8770ull }}, {{ 0x02ec0f9f6a57906dull, 0x565653dea7dd6fe1ull, 0xaee6298b212d495aull, 0x68d9f856d53033aeull, 0x09b2412eb6fccd9dull, 0xfa584edf47fb4a65ull }}, {{ 0x1d389c3a276ba43dull, 0x5f5f46b28ea65ecaull, 0xd4fd9f6f4bc4dd87ull, 0x1883b36453e204d2ull, 0x60f68bd325e00826ull, 0xc77314b8cfd0e7f2ull }}, {{ 0x24361a458a346a63ull, 0xb9b8c2f9927fb3e5ull, 0x51e83a58f5b0a749ull, 0xf52501eb46d4303cull, 0xc9a1763f7ac0517cull, 0xca7ecf381e290f77ull }}, {{ 0x6a1d06b7660c27deull, 0x41379dbfb8fd06f3ull, 0x3312477998e688e1ull, 0x93721330c449e25bull, 0xe04e9e7acb832ee1ull, 0xe8f418312d9a9aadull }}, {{ 0x25224329fc798ea9ull, 0x8c2c297d39e24582ull, 0xfeb6cabff90158ccull, 0xc274bfe7aae2d78full, 0xc31230cbf31fd4cfull, 0x1988f1ebc80a0acaull }}, {{ 0x73569fa3dcbf9297ull, 0x79b99ee442d6b715ull, 0xf323eb7fba0d77fdull, 0x988f7f0cacdc6b9full, 0x9eb5e7f77f3e501dull, 0xff597335d0646bebull }}, {{ 0x81623c669f7bb9e6ull, 0xc14034ea9c6326d6ull, 0x7f6732fd4486afe6ull, 0xf59af67ec09c343full, 0x331b0faaf86f2127ull, 0xf97e801a23ec3734ull }}, {{ 0x0dd65c023ad542ffull, 0x8c82112a1bdf8461ull, 0xfa07fde4ad42df03ull, 0x980da0f3861a0a7aull, 0xff0e9cadb4574b8full, 0xbef10105673a2809ull }}, {{ 0x8a5f98164c549df5ull, 0x7d14aba516bb2bcaull, 0xc44feaeec49cb623ull, 0xf08849833d0468cdull, 0xf6921ec90b68f39bull, 0x756a0a3608459063ull }}, {{ 0x67bbf0defb4e2b90ull, 0xe2ceb472e34fb5e9ull, 0xab1f2d53ae1f1d62ull, 0x6552df20622c1809ull, 0xa1b533da72198417ull, 0x9624661c52b7a3e7ull }}, {{ 0x0d5768b5d10db3a3ull, 0xdc130c7ce11d1b1eull, 0xaf37c544cd3725dcull, 0xf53cb743d5b8f060ull, 0x5114068874ff28e9ull, 0xdd6bfd1b3b2c670cull }}, {{ 0x856a171a2a890463ull, 0x98be7ce0cb230f2cull, 0xd82db4b004277aa0ull, 0x945f28a6593963c6ull, 0x2ac8415491f79923ull, 0xa637e3104fbc067bull }}, {{ 0x3624e705a95a2bddull, 0xf770e0c7ef5e97bdull, 0x71c90ee0298aca45ull, 0xcbb7967f7c3de5c4ull, 0xabd28d4db3abfb63ull, 0x7e2edea31d5840cfull }}, {{ 0x1d7106389d85b69dull, 0xaa68c7cf59b1ed64ull, 0x71da94c19f6be6bbull, 0xf52be0fada6af9acull, 0xb639850904b7d1e5ull, 0xedd4b25f2572881cull }}, {{ 0x266a3e3627392225ull, 0xa817ce1980f345e9ull, 0x7289cf903a370354ull, 0x93b6c9cc882dc0bcull, 0x1e3f325a2f2e32fbull, 0x4a4ef7b77679511full }}, {{ 0x80266e1d883b556full, 0x90ee0cff0980bb1bull, 0x79621ba24626214eull, 0xc523e1fd51c9875cull, 0x2e77f785d7cdfdd3ull, 0xe715ad2aa0bd2b37ull }}, {{ 0x01804d2752515654ull, 0xa94c81f65f074f13ull, 0xbdd51456bd7d4d11ull, 0xb366d3e531df499cull, 0xd0afab3a6e0bea45ull, 0x06d8c3aa4763b027ull }}, {{ 0x0f030389372d5f4aull, 0x9cfd139fb64916beull, 0x6a52cb6366e502b0ull, 0x020446f3f2b8e01full, 0x26dcb0484c7726b9ull, 0x4477a4a6c9e4e18eull }}, {{ 0x961e235c27c5b8e4ull, 0x21e2c43d1edae36cull, 0x273bf1e204f21ae6ull, 0x142ac5877b38c13aull, 0x849ee2d2fca7833aull, 0xacac6e83e2f0cf8dull }}, {{ 0xdd2d61998db938e9ull, 0x52dbaa63348ce23dull, 0x885772d431750cfdull, 0xc9abb74ad0378c45ull, 0x2e34dc3dde8b2044ull, 0xbebc5126dd681b87ull }}, {{ 0xa3c5cfff893c3919ull, 0x3c94a7e00d80d66aull, 0x536a7c49ee9281e5ull, 0xe0b528ec222b7ab7ull, 0xce109a6ab16f42afull, 0x735b2b84a6111347ull }}, {{ 0x65ba1ffb5c5a3af9ull, 0x5dce8ec08708602aull, 0x4228dae351b912f4ull, 0xc713993955b2cb29ull, 0x0ca6082aee589adeull, 0x818fb32e7caac0ceull }}, {{ 0xf9453fd19b864dbdull, 0xaa1193854653c1a7ull, 0x95988ce1313abd8bull, 0xc6c3fc3d58fbef9cull, 0x7e7c51ad4f760cb3ull, 0x0f9cffd0deab880cull }}, {{ 0xbcb47e30133f0965ull, 0xa4afc334bf45908full, 0xd7f580cbec4b6774ull, 0xc3a7da6579d75c1dull, 0xf0db30c51a9c7f05ull, 0x9c21fe28b2b3507cull }}, {{ 0x5f0cede0c0765df4ull, 0x6edda00f78b7a59dull, 0x6f9707f73af20a8eull, 0xa48e87f6c269992aull, 0x688fe7b30a1cf639ull, 0x1953ed96fb0124e1ull }}, {{ 0xb6814ac7849fab87ull, 0x54a8409ab72c7825ull, 0x5be64fa84d746990ull, 0x6d914fa3981ffba8ull, 0x159f0cfe65219e40ull, 0xfd4747e5ce0b70ceull }}, {{ 0x210cebcb2e3cb346ull, 0x4e92860b27bcb179ull, 0x96ff1c93068c1fa3ull, 0x47ad1c63f13fd493ull, 0xd83681eff3502e84ull, 0xe4c8cefa0c72680cull }}, {{ 0x4a8135efce5f00bdull, 0x11b93c6f8d5eeebbull, 0xe5f71dbe41793c61ull, 0xccc31be76c7e4dc3ull, 0x7221135f8121d12aull, 0xefd815c47c781080ull }}, {{ 0xe90c1b5e0fb60762ull, 0xb13c5c5b85b55350ull, 0xfba7296e8ebc5bcaull, 0xff9f170a3cef09a6ull, 0x754ac1bb0b522babull, 0x5e70d9acdcb0a504ull }}, {{ 0x1a7911ac9d1c49d4ull, 0xec5b9b9339154129ull, 0xd4879e51935b95eaull, 0xfc36e66661566085ull, 0x94eb914e7135b4b7ull, 0xb06880c09ee6722cull }}, {{ 0x08bab0be231ae244ull, 0x3b9413c03ad48b9bull, 0x4d4c2f2fc193db2dull, 0xda24ffffcd5fc53aull, 0xd133ad106c190f2full, 0xe4150786350075bdull }}, {{ 0x574ae76d5f0cd6abull, 0x53c8c5824c4d740eull, 0x04f9d7dd8fc68fc4ull, 0x8571fffe05bdb447ull, 0x2c04c2a438fa97deull, 0xe8d24b3e1204996aull }}, {{ 0x68ed0a45b68062b3ull, 0x45d7b716fb06888full, 0x31c26ea79dc19dabull, 0x3673ffec39690ac6ull, 0xb82f9a6a39c9eeb1ull, 0x1836f06cb42dfe25ull }}, {{ 0x194266b92103dafbull, 0xba6d26e5ce41559aull, 0xf198528c299028b0ull, 0x2087ff3a3e1a6bbdull, 0x31dc082641e352ecull, 0xf225643f09cbed79ull }}, {{ 0xfc98033b4a268dd1ull, 0x484384fa0e8d5804ull, 0x6ff339799fa196e7ull, 0x454ff8466d08356bull, 0xf298517e92e13d39ull, 0x7575ea7661f746bbull }}, {{ 0xddf02050e5818a29ull, 0xd2a331c491857031ull, 0x5f803ec03c4fe508ull, 0xb51fb2c042521632ull, 0x79f32ef1bccc643cull, 0x969b289fd3a8c357ull }}, {{ 0xab614328f70f659bull, 0x3a5ff1adaf3661f2ull, 0xbb0273825b1ef258ull, 0x133cfb829734ddf7ull, 0xc37fd5715ffbea5full, 0xe20f963e4497a16aull }}, {{ 0xb1cc9f99a699f811ull, 0x47bf70c8d81fd37aull, 0x4e1883178f357772ull, 0xc061d319e810abadull, 0xa2fe566dbfd727b6ull, 0xd49bde6eadec4e2bull }}, {{ 0xf1fe3c008203b0a6ull, 0xcd7a67d8713e42caull, 0x0cf51eeb9816aa76ull, 0x83d23f0310a6b4c5ull, 0x5def60497e678d23ull, 0x4e16b052cb3b0db4ull }}, {{ 0x73ee58051424e67full, 0x06c80e746c6e9bedull, 0x81933533f0e2a8a4ull, 0x2636761ea6830fb2ull, 0xab59c2def00b8363ull, 0x0ce2e33bf04e890bull }}, {{ 0x874f7032c97100f7ull, 0x43d0908c3c521746ull, 0x0fc0140768da9668ull, 0x7e209d32811e9cf9ull, 0xb1819cb5607321dfull, 0x80dce05763115a74ull }}, {{ 0x491a61fbde6a09a2ull, 0xa625a57a5b34e8c1ull, 0x9d80c84a1889e012ull, 0xed4623f90b3221baull, 0xef101f15c47f52baull, 0x08a0c369dead888eull }}, {{ 0xdb07d3d6b0246059ull, 0x7d7876c79011178cull, 0x2707d2e4f562c0baull, 0x44bd67ba6ff5514aull, 0x56a136d9acf93b4dull, 0x5647a222b2c75595ull }}, {{ 0x8e4e4662e16bc379ull, 0xe6b4a3cba0aaeb80ull, 0x864e3cf195db8748ull, 0xaf660d485f952ce5ull, 0x624c2480c1bc5104ull, 0x5ecc555afbc957d5ull }}, {{ 0x8f0ebfdcce35a2b5ull, 0x030e65f446ad3305ull, 0x3f0e616fda9348d9ull, 0xd9fc84d3bbd3c0f7ull, 0xd6f96d07915b2a2eull, 0xb3fb558dd5dd6e55ull }}, {{ 0x96937ea00e185b13ull, 0x1e8ffb8ac2c3fe37ull, 0x768fce5e89c0d87aull, 0x83dd3045564589a8ull, 0x65be424bad8fa5d4ull, 0x07d1578a5aa64f5aull }}, {{ 0xe1c2f2408cf38ebaull, 0x319fd36b9ba7ee2bull, 0xa19e0fb1618874c5ull, 0x26a3e2b55eb76094ull, 0xf96e96f4c79c7a4dull, 0x4e2d6b678a7f1987ull }}, {{ 0xd19d768581839341ull, 0xf03e4234148f4db6ull, 0x502c9cedcf548fb3ull, 0x8266db15b329c5ceull, 0xbe51e58fcc1cc703ull, 0x0dc6320b68f6ff4full }}, {{ 0x3026a1370f23c089ull, 0x626e9608cd990924ull, 0x21be214a194d9d07ull, 0x18048ed8ffa1ba0full, 0x6f32f79df91fc623ull, 0x89bdf47219a5f91dull }}, {{ 0xe1824c269765855aull, 0xd851dc5807fa5b69ull, 0x516d4ce4fd082249ull, 0xf02d9479fc514497ull, 0x57fdac2bbb3dbd5eull, 0x616b8c75007bbb26ull }}, {{ 0xcf16f981e9f73588ull, 0x73329b704fc79222ull, 0x2e4500f1e25156e2ull, 0x61c7ccc3db2cade9ull, 0x6fe8b9b5506965b5ull, 0xce337c9204d54f7full }}, {{ 0x16e5bf1323a81750ull, 0x7ffa12631dcbb55cull, 0xceb20972d72d64d8ull, 0xd1cdffa68fbecb1bull, 0x5f174115241df915ull, 0x0e02ddb430551afaull }}, {{ 0xe4f976bf6490e920ull, 0xffc4b7df29f51598ull, 0x12f45e7c67c5f074ull, 0x320bfc819d73ef16ull, 0xb6e88ad3692bbadaull, 0x8c1ca909e3530dc7ull }}, {{ 0xf1bea379eda91b42ull, 0xfdaf2eb7a392d7f8ull, 0xbd8bb0dc0dbb6491ull, 0xf477dd10268756dcull, 0x25156c421bb54c85ull, 0x791e9a62e13e89cdull }}, {{ 0x717262c3489b1096ull, 0xe8d7d32c63bc6fb9ull, 0x6774e8988951edb3ull, 0x8caea2a18149649full, 0x72d63a951514fd3bull, 0xbb3207dccc716203ull }}, {{ 0x6e77dba0d60ea5dbull, 0x186e3fbbe55c5d3eull, 0x0a9115f55d334907ull, 0x7ed25a4f0cddee3aull, 0x7c5e49d2d2d1e453ull, 0x4ff44e9ffc6dd422ull }}, {{ 0x50ae94485c927a8bull, 0xf44e7d56f59ba470ull, 0x69aadb95a400da46ull, 0xf437871680ab4e44ull, 0xdbaee23c3c32eb42ull, 0x1f8b123fdc4a4958ull }}, {{ 0x26d1cad39db8c96cull, 0x8b10e56598146c63ull, 0x20ac93d8680886c5ull, 0x8a2b46e106b10eacull, 0x94d4d65a59fd309dull, 0x3b6eb67e9ae6dd78ull }}, {{ 0x8431ec442937de37ull, 0x6ea8f5f7f0cc3bdfull, 0x46bdc674105543b7ull, 0x65b0c4ca42ea92b9ull, 0xd0505f8783e3e627ull, 0x525320f20d04a6b5ull }}, {{ 0x29f33aa99c2eae27ull, 0x52999baf67fa56bbull, 0xc369c088a354a52aull, 0xf8e7afe69d29bb3cull, 0x2323bb4b26e6fd89ull, 0x373f4974822e831aull }}, {{ 0xa3804aa019d2cd89ull, 0x3a0014da0fc7634full, 0xa2218556614e73a7ull, 0xb90cdf0223a1505full, 0x5f6550ef8505e763ull, 0x2878de8d15d11f05ull }}, {{ 0x6302ea41023c0758ull, 0x4400d0849dc9e11cull, 0x554f355fcd108488ull, 0x3a80b615644d23bcull, 0xb9f5295b323b09e5ull, 0x94b8b182da2b3635ull }}, {{ 0xde1d268a16584974ull, 0xa808252e29e2cb1bull, 0x551815be02a52d52ull, 0x49071cd5eb03655bull, 0x43939d8ff64e62f4ull, 0xcf36ef1c85b01e19ull }}, {{ 0xad238164df72de8dull, 0x905173cda2dbef16ull, 0x52f0d96c1a73c53aull, 0xda47205b2e21f591ull, 0xa3c4279f9f0fdd8aull, 0x1825571d38e12cfcull }}, {{ 0xc3630df0ba7cb17eull, 0xa32e86085c9756e2ull, 0x3d687e390885b449ull, 0x86c7438fcd5397adull, 0x65a98c3c369ea76cull, 0xf175672438cbc1deull }}, {{ 0xa1de8b6748deeeeeull, 0x5fd13c539de964dbull, 0x6614ee3a55390ae0ull, 0x43c8a39e0543ecc4ull, 0xf89f7a5a22328a3dull, 0x6e96076a37f592afull }}, {{ 0x52b17208d8b55548ull, 0xbe2c5b442b1df094ull, 0xfcd14e47543a6cc3ull, 0xa5d6642c34a73fabull, 0xb63ac78555f96664ull, 0x51dc4a262f97badfull }}, {{ 0x3aee7458771554ceull, 0x6dbb90a9af2b65cbull, 0xe02d0ec94a483fa5ull, 0x7a5fe9ba0e887cb7ull, 0x1e4bcb355bbdffeeull, 0x329ae57ddbed4cbdull }}, {{ 0x4d508b74a6d5500eull, 0x4953a6a0d7b1f9f0ull, 0xc1c293dce6d27c76ull, 0xc7bf21449154df2eull, 0x2ef5f015956bff50ull, 0xfa0cf6ea9744ff63ull }}, {{ 0x0525728e8455208cull, 0xdd4482486cf3c363ull, 0x9199c6a10438dc9eull, 0xcd774cadad50b7d3ull, 0xd59b60d7d637f927ull, 0xc481a529e8b1f9dfull }}, {{ 0x337679912b534578ull, 0xa4ad16d44185a1deull, 0xb001c24a2a389e34ull, 0x06a8fec8c5272e43ull, 0x5811c86e5e2fbb8eull, 0xad1073a316f3c2beull }}, {{ 0x02a0bfabb140b6afull, 0x6ec2e44a8f3852aeull, 0xe01196e5a6362e0eull, 0x4299f3d7b387cea4ull, 0x70b1d44faddd538cull, 0xc2a4845ee5859b6full }}, {{ 0x1a477cb4ec8722d6ull, 0x539ceae998333accull, 0xc0afe4f87e1dcc90ull, 0x9a03866d034e1270ull, 0x66f24b1ccaa5437aull, 0x9a6d2bb4f738125aull }}, {{ 0x06cadf113d475c57ull, 0x44212d1ff2004bf9ull, 0x86def1b4ed29fda3ull, 0x04234042210cb867ull, 0x0576ef1fea74a2caull, 0x0843b511a830b788ull }}, {{ 0x43ecb6ac64c99b6aull, 0xa94bc33f7402f7baull, 0x44b5711143a3e860ull, 0x296082954a7f340bull, 0x36a5573f288e5be4ull, 0x52a512b091e72b50ull }}, {{ 0xa73f22bbefe01221ull, 0x9cf5a07a881dad46ull, 0xaf166aaca46713c6ull, 0x9dc519d4e8f80870ull, 0x22756877958f96e9ull, 0x3a72bae5b307b122ull }}, {{ 0x88775b575ec0b548ull, 0x219844c95128c4c2ull, 0xd6e02abe6c06c5c2ull, 0x29b3025119b05466ull, 0x589614abd79be520ull, 0x487b4cf8fe4ceb55ull }}, {{ 0x54a99169b38714cdull, 0x4ff2afdd2b97af99ull, 0x64c1ab703843b995ull, 0xa0fe172b00e34c04ull, 0x75dcceb66c16f341ull, 0xd4d101b9ef013155ull }}, {{ 0x4e9fae210346d001ull, 0x1f7adea3b3ecdbfdull, 0xef90b26232a53fd5ull, 0x49ece7ae08e0f82bull, 0x9aa0132038e58090ull, 0x502a1143560bed56ull }}, {{ 0x123ccd4a20c4200cull, 0x3accb265074097e5ull, 0x5ba6f7d5fa747e53ull, 0xe3410ccc58c9b1b7ull, 0x0a40bf4238f705a2ull, 0x21a4aca15c774562ull }}, {{ 0xb66004e547a9407aull, 0x4bfef7f24885eef2ull, 0x9485ae5bc88cef40ull, 0xe08a7ffb77e0f129ull, 0x6687789639a6385cull, 0x506ebe4d9ca8b5d4ull }}, {{ 0x1fc030f4cc9c84c0ull, 0xf7f5af76d53b557bull, 0xcd38cf95d5815882ull, 0xc568ffd2aec96b9full, 0x014ab5de407e33a0ull, 0x24536f081e971a4cull }}, {{ 0x3d81e98ffe1d2f82ull, 0xaf98daa4545156cfull, 0x04381bda570d751dull, 0xb619fe3ad3de343eull, 0x0ceb1aae84ee0447ull, 0x6b42565131e706f8ull }}, {{ 0x67131f9fed23db17ull, 0xdbf88a6b4b2d6418ull, 0x2a31168766869328ull, 0x1d03ee4c46ae0a6cull, 0x812f0ad1314c2acdull, 0x30975f2bf30645b0ull }}, {{ 0x06bf3c3f43668ee1ull, 0x97b56830efc5e8f4ull, 0xa5eae14a0141bf98ull, 0x22274efac2cc6839ull, 0x0bd66c2becf9ac03ull, 0xe5e9b7b77e3eb8e5ull }}, {{ 0x43785a78a20194ccull, 0xed1611e95dbb1988ull, 0x7b2ccce40c917bf5ull, 0x558915cb9bfc1240ull, 0x766039b741c0b81full, 0xfb212d2aee7338f2ull }}, {{ 0xa2b388b6540fcffbull, 0x42dcb31da94eff52ull, 0xcfc000e87daed79bull, 0x575ad9f417d8b684ull, 0x9fc2412891873139ull, 0xcf4bc3ad50803978ull }}, {{ 0x5b03571f489e1fd1ull, 0x9c9eff289d15f93aull, 0x1d800914e8d46c10ull, 0x698c8388ee772130ull, 0x3d968b95af47ec3dull, 0x18f5a4c525023eb6ull }}, {{ 0x8e216738d62d3e29ull, 0x1e35f79622dbbc47ull, 0x27005ad1184c38a6ull, 0x1f7d235950a74be1ull, 0x67e173d8d8cf3a66ull, 0xf9986fb37216731eull }}, {{ 0x8d4e08385dc46d99ull, 0x2e1babdd5c955acbull, 0x86038c2af2fa367dull, 0x3ae3617d2688f6cbull, 0x0ece8678781847fdull, 0xbff45d0274e07f30ull }}, {{ 0x850c5233a9ac47ffull, 0xcd14b6a59dd58bf3ull, 0x3c2379ad7dc620e3ull, 0x4ce1cee38159a3f3ull, 0x941140b4b0f2cfe4ull, 0x7f8ba21890c4f7e0ull }}, {{ 0x327b3604a0bacff5ull, 0x02cf22782a577783ull, 0x5962c0c6e9bd48e6ull, 0x00d214e30d806780ull, 0xc8ac870ee97c1eebull, 0xfb7454f5a7b1aec5ull }}, {{ 0xf8d01c2e474c1f8eull, 0x1c1758b1a76aab1full, 0x7ddb87c52164d8fcull, 0x0834d0de87040b03ull, 0xd6bd46951ed9352eull, 0xd28b51988cf0d3b9ull }}, {{ 0xb82119cec8f93b8eull, 0x18e976f08a2aaf3full, 0xea934db34df079d9ull, 0x521028b146286e22ull, 0x6364c1d3347c13ccull, 0x39712ff581684542ull }}, {{ 0x314b0213d9bc5387ull, 0xf91ea56565aad87dull, 0x29c109010b64c27aull, 0x34a196ecbd944d5dull, 0xe1ef92400cd8c5fbull, 0x3e6bdf970e12b497ull }}, {{ 0xecee14c6815b434aull, 0xbb3275f5f8ac74e3ull, 0xa18a5a0a71ef98cdull, 0x0e4fe53f67cb05a3ull, 0xd35bb6808077bbd0ull, 0x7036bbe68cbb0deeull }}, {{ 0x414ccfc10d90a0e4ull, 0x4ff89b9bb6bc90e7ull, 0x4f678468735bf809ull, 0x8f1ef47a0dee3864ull, 0x4195210504ad5620ull, 0x622357017f4e8b54ull }}, {{ 0x8d001d8a87a648ecull, 0x1fb61415235da908ull, 0x1a0b2c148197b05dull, 0x97358cc48b4e33ebull, 0x8fd34a322ec55d45ull, 0xd561660ef911714aull }}, {{ 0x820127694c7ed935ull, 0x3d1cc8d361a89a55ull, 0x046fb8cd0fece3a3ull, 0xe8177fad710e072full, 0x9e40e5f5d3b5a4b7ull, 0x55cdfc95baae6ce9ull }}, {{ 0x140b8a1cfcf47c11ull, 0x631fd841d0960757ull, 0x2c5d38029f40e460ull, 0x10eafcc66a8c47d6ull, 0x2e88fb9a45186f2full, 0x5a0bddd94ad04120ull }}, {{ 0xc8736521e18cd8a8ull, 0xdf3e729225dc4966ull, 0xbba4301a3888ebc3ull, 0xa92ddfc0297ace5dull, 0xd159d406b2f457d6ull, 0x8476aa7cec228b41ull }}, {{ 0xd481f352cf807695ull, 0xb87079b57a9ade03ull, 0x5469e106355935a6ull, 0x9bcabd819ecc0fa9ull, 0x2d824842fd8b6e62ull, 0x2ca2a8e139597092ull }}, {{ 0x4d13813c1b04a1ceull, 0x3464c116ca0cac26ull, 0x4c22ca3e157c1883ull, 0x15eb671033f89c9dull, 0xc716d29de7724fdaull, 0xbe5a98cc3d7e65b5ull }}, {{ 0x02c30c590e2e520dull, 0x0bef8ae3e47eb97full, 0xf95be66cd6d8f520ull, 0xdb3206a207b61e24ull, 0xc6e43a2b0a771e84ull, 0x6f89f7fa66eff919ull }}, {{ 0x1b9e7b7a8dcf3485ull, 0x775b6ce6ecf33ef6ull, 0xbd97004064799340ull, 0x8ff442544d1d2d71ull, 0xc4ea45ae68a73130ull, 0x5b63afc8055fbb01ull }}, {{ 0x1430d2c98a180d37ull, 0xa99241054180759dull, 0x67e60283ecbfc084ull, 0x9f8a974b0323c671ull, 0xb126b8d01687ebe5ull, 0x91e4ddd035bd4e11ull }}, {{ 0xc9e83bdf64f08422ull, 0x9fb68a348f049822ull, 0x0efc19273f7d852eull, 0x3b69e8ee1f65c06eull, 0xeb833820e14f36f8ull, 0xb2f0aa2219650cb0ull }}, {{ 0xe31256b9f1652954ull, 0x3d21660d962df15bull, 0x95d8fb887ae733d2ull, 0x5223194d39f9844cull, 0x33203148cd1825b2ull, 0xfd66a554fdf27ee9ull }}, {{ 0xdeb763436df39d49ull, 0x634dfc87ddcb6d96ull, 0xda79d354cd080636ull, 0x355efd0443bf2afdull, 0xff41ecd802f178f7ull, 0xe6027551eb78f51bull }}, {{ 0xb329e0a24b8424d5ull, 0xe10bdd4ea9f247e4ull, 0x88c2415002503e1full, 0x15b5e22aa577adeaull, 0xf89340701d6eb9a8ull, 0xfc18953332b99317ull }}, {{ 0xffa2c656f3297053ull, 0xca76a512a376ceeeull, 0x57968d2017226d3eull, 0xd91ad5aa76accb29ull, 0xb5c0846126534090ull, 0xd8f5d3fffb3fbeefull }}, {{ 0xfc5bbf657f9e633dull, 0xe8a272ba62a41555ull, 0x6be18340e7584473ull, 0x7b0c58a8a2bfef9dull, 0x19852bcb7f4085a8ull, 0x799a47ffd07d755dull }}, {{ 0xdb9579f6fc2fe063ull, 0x16587b47da68d55bull, 0x36cf20890972ac87ull, 0xce7b76965b7f5c26ull, 0xff33b5f2f8853894ull, 0xc006cffe24e695a2ull }}, {{ 0x93d6c3a5d9dec3daull, 0xdf74d0ce88185596ull, 0x2417455a5e7abd46ull, 0x10d2a1df92f9997eull, 0xf8051b7db53435d0ull, 0x80441fed7101d85dull }}, {{ 0xc663a47a82b3a680ull, 0xba90281150f357e1ull, 0x68e8b587b0cb64c4ull, 0xa83a52bbbdbffeedull, 0xb03312e9140a1a20ull, 0x02a93f466a1273abull }}, {{ 0xbfe46cc91b0480ffull, 0x49a190ad29816ed1ull, 0x1917174ce7f1efafull, 0x92473b55697ff546ull, 0xe1febd1ac8650546ull, 0x1a9c78c024b884b4ull }}, {{ 0x7eec3fdb0e2d09f4ull, 0xe04fa6c39f0e5431ull, 0xfae6e9010f735cd8ull, 0xb6c851561eff94bcull, 0xd3f3630bd3f234c1ull, 0x0a1cb7816f352f10ull }}, {{ 0xf53a7e8e8dc2638aull, 0xc31c83a4368f49eeull, 0xcd051a0a9a81a078ull, 0x23d32d5d35fbcf61ull, 0x4781de7647760f91ull, 0x651f2b0e5813d6a8ull }}, {{ 0x9448f1918997e360ull, 0x9f1d246a2198e355ull, 0x0233046a091044b7ull, 0x663fc5a41bd619d2ull, 0xcb12b09eca9c9babull, 0xf337ae8f70c66292ull }}, {{ 0xcad96faf5feee1bdull, 0x37236c254ff8e157ull, 0x15fe2c245aa2af2cull, 0xfe7db869165d0234ull, 0xeebae633ea1e14b1ull, 0x802cd19a67bfd9bbull }}, {{ 0xec7e5cd9bf54d163ull, 0x276239751fb8cd6dull, 0xdbedb96b8a5ad7baull, 0xf0e9341adfa21608ull, 0x534cfe07252ccef3ull, 0x01c030080d7e8157ull }}, {{ 0x3cefa08179502ddbull, 0x89d63e933d38064bull, 0x97493e33678c6d45ull, 0x691c090cbc54dc58ull, 0x4101ec4773c01587ull, 0x1181e05086f10d69ull }}, {{ 0x615c450ebd21ca8aull, 0x625e71c064303ef0ull, 0xe8dc6e020b7c44b7ull, 0x1b185a7f5b509b75ull, 0x8a133aca8580d74aull, 0xaf12c325456a861cull }}, {{ 0xcd9ab2936351e960ull, 0xd7b07183e9e27563ull, 0x189c4c1472daaf29ull, 0x0ef388f99126129bull, 0x64c04be9370868e5ull, 0xd6bb9f74b6293d1dull }}, {{ 0x080af9c1e1331dc1ull, 0x6ce46f2722d895e6ull, 0xf61af8cc7c8ad7a2ull, 0x958359bfab7cba0eull, 0xef82f71c265418f2ull, 0x63543a8f1d9c6325ull }}, {{ 0x506dc192cbff2985ull, 0x40ec57875c75dafcull, 0x9d0db7fcdd6c6c58ull, 0xd721817cb2df4495ull, 0x5b1da7197f48f979ull, 0xe14a4997281bdf7bull }}, {{ 0x24498fbbf7f79f37ull, 0x893b6b499c9a8ddbull, 0x22892fe0a63c3b72ull, 0x674f0edefcb8add8ull, 0x8f2886fef8d9bec2ull, 0xcce6dfe79116bad1ull }}, {{ 0x6adf9d57afac3822ull, 0x5c5230e01e098a8full, 0x595bdec67e5a5279ull, 0x091694b5df36ca71ull, 0x979545f5b8817398ull, 0x0104bf0baae34c2full }}, {{ 0x2cbc256cdcba3153ull, 0x9b35e8c12c5f699aull, 0x7d96b3c0ef8738bdull, 0x5ae1cf1ab823e86dull, 0xebd4bb99350e83f0ull, 0x0a2f7674ace0f9dbull }}, {{ 0xbf5976409f45ed3cull, 0x101b178bbbba2005ull, 0xe7e305895b483768ull, 0x8cd2170b31671446ull, 0x364f53fc12912763ull, 0x65daa08ec0c9c297ull }}, {{ 0x797e9e8638bb4458ull, 0xa10eeb7555454039ull, 0x0ede375d90d22a10ull, 0x8034e66fee06cac5ull, 0x1f1947d8b9ab89e3ull, 0xfa8a459387e199e8ull }}, {{ 0xbef2313e3750ab71ull, 0x4a95329554b4823eull, 0x94ae29a7a835a4a6ull, 0x0211005f4c43ebb2ull, 0x36fcce7740b362e3ull, 0xc966b7c34ed00311ull }}, {{ 0x7575ec6e2926b265ull, 0xe9d3f9d54f0d1673ull, 0xcecda08c92186e7eull, 0x14aa03b8faa734f9ull, 0x25e010a88701dcdeull, 0xde032da114201eacull }}, {{ 0x969b3c4d9b82f7f6ull, 0x2247c2551682e082ull, 0x1408457db4f450f5ull, 0xcea42539ca8811c2ull, 0x7ac0a6954612a0acull, 0xac1fc84ac94132b9ull }}, {{ 0xe2105b08131daf99ull, 0x56cd9752e11cc519ull, 0xc852b6e9118b2993ull, 0x12697441e950b194ull, 0xcb8681d4bcba46c0ull, 0xb93dd2ebdc8bfb3eull }}, {{ 0xd4a38e50bf28dbfbull, 0x6407e93ccb1fb302ull, 0xd33b251aaf6f9fc1ull, 0xb81e8a931d26efcfull, 0xf341124f5f46c380ull, 0x3c6a3d369d77d073ull }}, {{ 0x4e638f27779897cbull, 0xe84f1c5fef3cfe1cull, 0x404f730ada5c3d8dull, 0x313169bf23855e1eull, 0x808ab719b8c3a307ull, 0x5c26642226ae2487ull }}, {{ 0x0fe3978aabf5edeaull, 0x13171bbf5861ed1bull, 0x831a7e6c879a678bull, 0xebee21776335ad2eull, 0x056b270137a45e47ull, 0x997fe95582cd6d4bull }}, {{ 0x9ee3eb6ab79b4b23ull, 0xbee7157973d3430eull, 0x1f08f03d4c080b6eull, 0x374d4ea9e018c3d1ull, 0x362f860c2c6baecfull, 0xfeff1d571c0644eeull }}, {{ 0x34e7322b2c10ef59ull, 0x7506d6be86409e92ull, 0x36596264f8507253ull, 0x290512a2c0f7a62bull, 0x1ddb3c79bc34d418ull, 0xf5f72567183eb14eull }}, {{ 0x1107f5afb8a9597full, 0x924463713e8631b6ull, 0x1f7dd7f1b3247742ull, 0x9a32ba5b89ac7db0ull, 0x2a905cc15a1048f1ull, 0x9ba77606f272ed0dull }}, {{ 0xaa4f98dd369d7ef4ull, 0xb6abe26c713df11cull, 0x3aea6f70ff6ca899ull, 0x05fb479360bce8e1ull, 0xa9a39f8d84a2d970ull, 0x148a9c45787d4283ull }}, {{ 0xa71bf8a42226f58aull, 0x22b6d83c6c6b6b1eull, 0x4d285a69fa3e9601ull, 0x3bd0cbc1c76118ccull, 0xa0643b872e5c7e60ull, 0xcd6a1ab6b4e49924ull }}, {{ 0x8717b66955859761ull, 0x5b24725c3c322f32ull, 0x03938823c671dc0bull, 0x5627f591c9caf7fbull, 0x43ea5347cf9cefc2ull, 0x06250b2310edfb6eull }}, {{ 0x46ed201d5737e9c8ull, 0x8f6c779a59f5d7f9ull, 0x23c35165c0729871ull, 0x5d8f97b1e1edafceull, 0xa72740ce1c215d97ull, 0x3d726f5ea94bd24eull }}, {{ 0xc5434125682f21d2ull, 0x9a3cac07839a6fbcull, 0x65a12df98479f46full, 0xa79becf2d348de0dull, 0x8788880d194da7e9ull, 0x667859b29cf63712ull }}, {{ 0xb4a08b7611d75238ull, 0x065eb84b24085d5full, 0xf84bcbbf2cc38c5cull, 0x8c17417c40d8ac85ull, 0x4b555082fd088f20ull, 0x00b380fa219e26b9ull }}, {{ 0x0e45729cb269362eull, 0x3fb332ef6853a5bdull, 0xb2f5f577bfa37b98ull, 0x78e88eda8876bd3bull, 0xf155251de2559745ull, 0x070309c5502d833cull }}, {{ 0x8eb67a1ef81c1dceull, 0x7cfffd5a13447962ull, 0xfd9b96ad7c62d3f2ull, 0xb915948954a36454ull, 0x6d53732ad757e8b6ull, 0x461e61b521c72061ull }}, {{ 0x9320c535b1192a0aull, 0xe1ffe584c0acbdd9ull, 0xe813e2c6dbdc4778ull, 0x3ad7cd5d4e61eb51ull, 0x45427fac696f1723ull, 0xbd2fd11351c743ceull }}, {{ 0xbf47b418eafba468ull, 0xd3fef72f86bf6a7full, 0x10c6dbc4969acab8ull, 0x4c6e05a50fd33133ull, 0xb498fcbc1e56e760ull, 0x63de2ac131c8a60eull }}, {{ 0x78cd08f92dd46c11ull, 0x47f5a7db437a28fdull, 0xa7c495ade20beb38ull, 0xfc4c38729e3febfeull, 0x0df9df592f6509c2ull, 0xe6adab8bf1d67c93ull }}, {{ 0xb80259bbca4c38a8ull, 0xcf988e90a2c599e6ull, 0x8dadd8cad4773032ull, 0xdafa347a2e7f37f2ull, 0x8bc2b97bd9f2619dull, 0x02c8b3777260ddbeull }}, {{ 0x30178155e6fa368eull, 0x1bf591a65bb80303ull, 0x88ca77ec4ca7e1fcull, 0x8dc60cc5d0f82f79ull, 0x759b3ed68377d02aull, 0x1bd702aa77c8a971ull }}, {{ 0xe0eb0d5b05c6218cull, 0x1797b07f95301e1full, 0x57e8af3afe8ed3d9ull, 0x89bc7fba29b1dabfull, 0x9810746122ae21a9ull, 0x16661aa8add69e6eull }}, {{ 0xc92e858e39bd4f74ull, 0xebece4fbd3e12d3eull, 0x6f16d84df194467aull, 0x615cfd45a0f28b79ull, 0xf0a48bcb5acd509full, 0xdffd0a96ca623051ull }}, {{ 0xdbd1378e41651a89ull, 0x3740f1d646cbc473ull, 0x56e4730b6fcac0cdull, 0xcda1e4b8497972beull, 0x666d75f18c052639ull, 0xbfe269e3e7d5e333ull }}, {{ 0x962c2b8e8df30956ull, 0x2889725ec3f5ac86ull, 0x64ec7e725deb8804ull, 0x0852ef32debe7b6full, 0x00469b6f78337e42ull, 0x7ed822e70e5ae002ull }}, {{ 0xddb9b3918b7e5d5eull, 0x955e77b3a798bd41ull, 0xf13cf077ab335029ull, 0x533d57fcb370d259ull, 0x02c2125ab202ee94ull, 0xf4715d068f8cc014ull }}, {{ 0xa94103af72efa5aeull, 0xd5b0ad048bf76492ull, 0x6c6164acb001219full, 0x40656fdf02683783ull, 0x1b94b78af41d51cbull, 0x8c6da2419b7f80c8ull }}, {{ 0x9c8a24da7d5c78cbull, 0x58e6c22d77a9edbaull, 0x3bcdeebee00b503eull, 0x83f65eb618122b22ull, 0x13cf2b6d892531f0ull, 0x7c48569012fb07d1ull }}, {{ 0x1d657088e59cb7f3ull, 0x790395c6aca3494aull, 0x560b5374c071226full, 0x279fb31cf0b5af56ull, 0xc617b2475b73f365ull, 0xdad361a0bdce4e2aull }}, {{ 0x25f66558f81f2f7dull, 0xba23d9c2be60dce5ull, 0x5c71428f846b585aull, 0x8c3cff216718d95full, 0xbcecf6c9928781f3ull, 0x8c41d0476a0f0dabull }}, {{ 0x7b9ff579b137daddull, 0x4566819b6fc8a0f3ull, 0x9c6c999b2c31738bull, 0x7a61f74e06f87db9ull, 0x6141a3dfb94b1383ull, 0x7a9222ca249688b5ull }}, {{ 0xd43f96c0ec2e8ca7ull, 0xb60110125dd64982ull, 0x1c3e000fb9ee8370ull, 0xc7d3a90c45b4e940ull, 0xcc9066bd3ceec322ull, 0xc9b55be56de15715ull }}, {{ 0x4a7be38939d17e83ull, 0x1c0aa0b7aa5edf1cull, 0x1a6c009d43512267ull, 0xce449a7ab9111c81ull, 0xfda4036461539f5bull, 0xe11596f64acd66d9ull }}, {{ 0xe8d6e35c422ef11eull, 0x186a472ca7b4b71aull, 0x08380624a12b5807ull, 0x0eae08cb3aab1d0bull, 0xe86821ebcd443996ull, 0xcad7e59eec060483ull }}, {{ 0x1864e19a95d56b2aull, 0xf426c7be8d0f270dull, 0x52303d6e4bb17046ull, 0x92cc57f04aaf226eull, 0x1411533604aa3fdcull, 0xec6ef835383c2d27ull }}, {{ 0xf3f0d009da562fa7ull, 0x8983cd7182978682ull, 0x35e2664ef4ee62c5ull, 0xbbfb6f62ead7584full, 0xc8ad401c2ea67e9dull, 0x3c55b2143259c386ull }}, {{ 0x87682062875ddc82ull, 0x5f26066f19eb411dull, 0x1ad7ff15914fdbb7ull, 0x57d259dd2c697318ull, 0xd6c48119d280f229ull, 0x5b58f4c9f781a343ull }}, {{ 0x4a1143d949aa9d13ull, 0xb77c405703308b27ull, 0x0c6ff6d7ad1e9529ull, 0x6e3782a3bc1e7ef1ull, 0x63ad0b023909759dull, 0x91798fe3ab1060a6ull }}, {{ 0xe4aca67ce0aa22bdull, 0x2ada83661fe56f88ull, 0x7c5fa46cc331d3a1ull, 0x4e2b1a655930f56aull, 0xe4c26e163a5e9826ull, 0xaebf9ee4aea3c67full }}, {{ 0xeebe80e0c6a55b65ull, 0xac8921fd3ef65b58ull, 0xdbbc6c3f9ff2444bull, 0x0daf07f57be99628ull, 0xef984cde47b1f17full, 0xd37c34eed265c0feull }}, {{ 0x537108c7c27591eeull, 0xbd5b53e4759f9179ull, 0x955c3a7c3f76aaf4ull, 0x88d64f96d71fdd98ull, 0x5bf300aeccf36ef6ull, 0x42da115437f989f5ull }}, {{ 0x426a57cd9897b349ull, 0x659146ec983baebdull, 0xd59a48da7aa2ad8full, 0x585f1be4673ea7f5ull, 0x977e06d4018255a1ull, 0x9c84ad4a2fbf6395ull }}, {{ 0x98276e07f5ed00dfull, 0xf7acc53df254d364ull, 0x5806d888ca5ac799ull, 0x73b716ec08728f9aull, 0xeaec44480f17584dull, 0x1d2ec4e5dd79e3d7ull }}, {{ 0xf18a4c4f9b4208b5ull, 0xacbfb46b775041edull, 0x70447557e78bcc03ull, 0x8526e53854799c07ull, 0x2d3aaad096e97306ull, 0x23d3b0faa6c2e66full }}, {{ 0x6f66fb1c10945713ull, 0xbf7d0c32a922934bull, 0x62ac956f0b75f824ull, 0x3384f4334cc0184aull, 0xc44aac25e51e7e41ull, 0x6644e9ca839d0057ull }}, {{ 0x5a05cf18a5cb66bfull, 0x7ae279fa9b59c0f2ull, 0xdabdd656729bb16full, 0x03318a00ff80f2e7ull, 0xaaeab97af330ee8cull, 0xfeb121e92422036dull }}, {{ 0x843a16f679f20377ull, 0xccd8c3ca11818977ull, 0x8b6a5f607a14ee5aull, 0x1fef6409fb097d0eull, 0xad2b3ecd7fe95178ull, 0xf2eb531b69542248ull }}, {{ 0x2a44e5a0c37422a7ull, 0x0077a5e4af0f5eabull, 0x7227b9c4c4d14f8cull, 0x3f59e863ce5ee291ull, 0xc3b07406ff1d2eb1ull, 0x7d313f121d4956d6ull }}, {{ 0xa6b0f847a2895a87ull, 0x04ac7aeed699b2afull, 0x758d41afb02d1b78ull, 0x798313e60fb4d9aeull, 0xa4e48845f723d2ecull, 0xe3ec76b524dd6463ull }}, {{ 0x82e9b2cc595d8948ull, 0x2ebccd546200fadcull, 0x978490dce1c312b0ull, 0xbf1ec6fc9d1080d0ull, 0x70ed52bba7663d3cull, 0xe73ca31370a5ebe4ull }}, {{ 0x1d20fbfb7da75cccull, 0xd360054bd409cc9dull, 0xeb2da8a0d19ebae1ull, 0x7733c5de22a50825ull, 0x69453b5489fe645full, 0x085e5ec2667b36ecull }}, {{ 0x2349d7d2e8899ffdull, 0x41c034f64861fe23ull, 0x2fc8964830334cd2ull, 0xa805baad5a72517bull, 0x1cb4514d63efebbaull, 0x53afb39800d0253cull }}, {{ 0x60e26e3d15603fddull, 0x9182119ed3d3ed5full, 0xddd5ded1e2010036ull, 0x90394ac588772ecfull, 0x1f0b2d05e75f354aull, 0x44dd03f008217459ull }}, {{ 0xc8d84e62d5c27ea7ull, 0xaf14b034464745b9ull, 0xaa5ab432d40a0221ull, 0xa23cebb754a7d41eull, 0x366fc23b09b814e9ull, 0xb0a22760514e8b7bull }}, {{ 0xd8730fdc5998f281ull, 0xd6cee20abec8b941ull, 0xa78b09fc48641550ull, 0x566135294e8e4932ull, 0x205d964e6130d120ull, 0xe65589c32d1172d0ull }}, {{ 0x747e9e9b7ff9790cull, 0x6414d46b73d73c92ull, 0x8b6e63dad3e8d528ull, 0x5fcc139d118edbfaull, 0x43a7df0fcbe82b43ull, 0xff57619fc2ae7c21ull }}, {{ 0x8cf23212ffbeba76ull, 0xe8d04c3286685db8ull, 0x724fe68c47185393ull, 0xbdf8c422af9497c9ull, 0xa48eb69df711b0a1ull, 0xf969d03d9ad0d94cull }}, {{ 0x8175f4bdfd73489cull, 0x1822f9f94013a935ull, 0x771f017ac6f343c7ull, 0x6bb7a95adbcdeddeull, 0x6d93222ba6b0e651ull, 0xbe2222680c287cfeull }}, {{ 0x0e9b8f6be680d61bull, 0xf15dc3bc80c49c17ull, 0xa7360ecbc580a5c6ull, 0x352c9d8c960b4ab0ull, 0x47bf55b482e8ff2eull, 0x6d5558107994e1f0ull }}, {{ 0x92139a3701085d12ull, 0x6da9a55d07ae18e6ull, 0x881c93f5b70679c5ull, 0x13be277ddc70eae6ull, 0xcd79590d1d19f7ceull, 0x455570a4bfd0d362ull }}, {{ 0xb4c406260a53a2b6ull, 0x48a075a24cccf901ull, 0x511dc7992640c1b6ull, 0xc56d8aea9c692d01ull, 0x06bd7a832303ae0cull, 0xb556666f7e2841dcull }}, {{ 0x0fa83d7c67445b21ull, 0xd64498570001ba11ull, 0x2b29cbfb7e87911eull, 0xb6476d2a1c1bc20dull, 0x4366c91f5e24cc7full, 0x1560005aed929298ull }}, {{ 0x9c9266dc08ab8f49ull, 0x5eadf366001144aaull, 0xafa1f7d2f14bab34ull, 0x1eca43a519159483ull, 0xa203db39ad6ffcfdull, 0xd5c0038d47b9b9f2ull }}, {{ 0x1db8049856b398d7ull, 0xb2cb81fc00acaeaaull, 0xdc53ae3d6cf4b00bull, 0x33e6a472fad7cd24ull, 0x54269040c65fe1e3ull, 0x59802384cd41437aull }}, {{ 0x29302df36303f869ull, 0xfbf313d806bed2a5ull, 0x9b44ce66418ee074ull, 0x07026c7dcc6e0370ull, 0x4981a287bfbed2e0ull, 0x7f016330048ca2c7ull }}, {{ 0x9be1cb81de27b41bull, 0xd77ec67043743a73ull, 0x10b00ffe8f94c491ull, 0x46183ce9fc4c2266ull, 0xdf10594d7d743cc0ull, 0xf60ddfe02d7e5bc8ull }}, {{ 0x16d1f312ad8d090cull, 0x6af3c062a28a4884ull, 0xa6e09ff19bcfadb2ull, 0xbcf26123daf957fcull, 0xb6a37d06e68a5f82ull, 0x9c8abec1c6ef95d8ull }}, {{ 0xe4337ebac7825a79ull, 0x2d8583da5966d528ull, 0x84c63f70161cc8f8ull, 0x6177cb668dbd6fdeull, 0x2262e2450167bb1bull, 0x1d6b7391c55bda77ull }}, {{ 0xea02f34bcb1788beull, 0xc73726877e045398ull, 0x2fbe7a60dd1fd9b1ull, 0xceadf20189665eb1ull, 0x57dcd6b20e0d4f11ull, 0x263283b1b59688a7ull }}, {{ 0x241d80f5eeeb5770ull, 0xc827814aec2b43f9ull, 0xdd70c7c8a33e80f1ull, 0x12cb740f5dffb2ebull, 0x6ea062f48c8516b2ull, 0x7df924f117e15689ull }}, {{ 0x6927099b55316a5dull, 0xd18b0ced39b0a7bbull, 0xa667cdd660710971ull, 0xbbf28899abfcfd36ull, 0x5243dd8d7d32e2f4ull, 0xebbb716aeecd615eull }}, {{ 0x1b86601153ee27a3ull, 0x2f6e814440e68d52ull, 0x800e0a5fc46a5e72ull, 0x57795600b7e1e422ull, 0x36a6a786e3fcdd8full, 0x35526e2d5405cdafull }}, {{ 0x133fc0ad474d8c5aull, 0xda510caa89018535ull, 0x008c67bdac27b075ull, 0x6abd5c072ed2e959ull, 0x22828b44e7e0a799ull, 0x15384dc5483a08d8ull }}, {{ 0xc07d86c4c9077b83ull, 0x872a7ea95a0f3412ull, 0x057c0d68b98ce49aull, 0x2b659847d43d1d7aull, 0x591970b10ec68bfeull, 0xd43309b4d2445871ull }}, {{ 0x84e743afda4ad321ull, 0x47a8f29d849808bbull, 0x36d886173f80ee09ull, 0xb1f7f2ce4a6326c4ull, 0x7afe66ea93c177edull, 0x49fe611036ab746dull }}, {{ 0x3108a4de86ec3f4bull, 0xcc997a272df05753ull, 0x24753ce87b094c5cull, 0xf3af7c0ee7df83aaull, 0xcdf00529c58eaf48ull, 0xe3efcaa222b28c46ull }}, {{ 0xea5670b1453a78f1ull, 0xfdfec587cb63693full, 0x6c946114ce5cfb9full, 0x84dad8950ebb24a5ull, 0x0b6033a1b792d8d9ull, 0xe75dea555af97ac4ull }}, {{ 0x276066ecb448b967ull, 0xebf3b74df1e21c7full, 0x3dcbcad00fa1d43full, 0x308c75d2934f6e76ull, 0x71c204512bbc787full, 0x09ab27558dbecba8ull }}, {{ 0x89c4053f0ad73e09ull, 0x3785290b72d51cf7ull, 0x69f5ec209c524a7full, 0xe57c9a39c11a509eull, 0x71942b2bb55cb4f7ull, 0x60af89578973f494ull }}, {{ 0x61a834766c686c57ull, 0x2b339a727c5321abull, 0x239b39461b36e8f8ull, 0xf6de06418b072630ull, 0x6fc9afb5159f11aeull, 0xc6db5d6b5e878dccull }}, {{ 0xd0920ca03c143b63ull, 0xb0040878db3f50b1ull, 0x64103cbd102519b1ull, 0xa4ac3e8f6e477de1ull, 0x5de0dd12d836b0d5ull, 0xc491a631b14b89fcull }}, {{ 0x25b47e4258ca51dbull, 0xe02854b8907926f2ull, 0xe8a25f62a17300f0ull, 0x6eba719a4ecaeacdull, 0xaac8a2bc7222e858ull, 0xadb07df0ecf363dbull }}, {{ 0x790cee9777e7328eull, 0xc1934f35a4bb8575ull, 0x1657b9da4e7e0968ull, 0x5348700713ed2c0bull, 0xabd65b5c755d1374ull, 0xc8e4eb694181e694ull }}, {{ 0xba8151eaaf07f98eull, 0x8fc118186f533696ull, 0xdf6d428710ec5e17ull, 0x40d46046c743b86eull, 0xb65f919c95a2c28bull, 0xd8f1321c8f1301ceull }}, {{ 0x490d332ad64fbf8cull, 0x9d8af0f4594021e3ull, 0xba449946a93bacebull, 0x884bc2c3c8a53454ull, 0x1fbbb01dd85b9970ull, 0x796bf51d96be1213ull }}, {{ 0xda83ffac5f1d7b75ull, 0x276d698b7c8152e0ull, 0x46adfcc29c54c134ull, 0x52f59ba5d6740b4full, 0x3d54e12a7393fe65ull, 0xbe379327e36cb4bfull }}, {{ 0x8927fcbbb726d290ull, 0x8a461f72dd0d3cc8ull, 0xc2cbdf9a1b4f8c09ull, 0x3d98147a60887118ull, 0x6550cba883c7eff5ull, 0x6e2bbf8ee23f0f78ull }}, {{ 0x5b8fdf55278439a0ull, 0x66bd3a7ca2845fd5ull, 0x9bf6bc05111b785full, 0x67f0ccc7c5546af7ull, 0xf527f49525cf5f94ull, 0x4db57b94d6769ab3ull }}, {{ 0x939eb9538b2a403cull, 0x036448de592bbe55ull, 0x17a35832ab12b3baull, 0x0f67ffcdb54c2dacull, 0x938f8dd37a19bbccull, 0x0916d3d060a20b07ull }}, {{ 0xc4333d436fa6825bull, 0x21ead8af7bb56f57ull, 0xec6171faaebb0544ull, 0x9a0ffe0914f9c8b8ull, 0xc39b8a42c50155f8ull, 0x5ae44623c6546e4bull }}, {{ 0xaa0064a25c81178dull, 0x532c76dad516596dull, 0x3bce73cad34e34a9ull, 0x049fec5ad1c1d739ull, 0xa413669bb20d5bb6ull, 0x8ceabd65bf4c4ef5ull }}, {{ 0xa403ee579d0aeb80ull, 0x3fbca48c52df7e48ull, 0x561085ec410e0e9dull, 0x2e3f3b8c3192683cull, 0x68c20214f485951cull, 0x812b65f978fb1598ull }}, {{ 0x68274f6c226d32fcull, 0x7d5e6d7b3cbaeed6ull, 0x5ca53b3a8a8c9224ull, 0xce785379efb8125bull, 0x179414d18d37d319ull, 0x0bb1fbbeb9ced7f4ull }}, {{ 0x11891a395843fdd8ull, 0xe5b046d05f4d5460ull, 0x9e745049697db56cull, 0x10b342c35d30b791ull, 0xebc8d02f842e3f02ull, 0x74f3d57342146f88ull }}, {{ 0xaf5b063d72a7ea71ull, 0xf8e2c423b9054bc0ull, 0x308b22de1ee91640ull, 0xa7009ba1a3e72bb0ull, 0x35d821db29ce7614ull, 0x9186568094cc5b59ull }}, {{ 0xd98e3e667a8f2865ull, 0xb8dba9653a34f586ull, 0xe56f5cad351ade89ull, 0x860614506707b4e1ull, 0x1a71528fa2109cceull, 0xaf3f6105cffb917cull }}, {{ 0x7f8e7000c99793f4ull, 0x38949df446119744ull, 0xf6599ec4130cb161ull, 0x3c3ccb24064d10d2ull, 0x086d399c54a62011ull, 0xd879ca3a1fd3aed9ull }}, {{ 0xfb906007dfebc78bull, 0x35ce2b8abcafe8acull, 0x9f8033a8be7eedccull, 0x5a5fef683f02a83dull, 0x5444401b4e7d40acull, 0x74c1e6453e44d47aull }}, {{ 0xd3a3c04ebf35cb6dull, 0x1a0db36b5edf16c1ull, 0x3b02049770f549faull, 0x87bf5a12761a9268ull, 0x4aaa811110e486bbull, 0x8f92feb46eb04cc7ull }}, {{ 0x446583137819f240ull, 0x04890231b4b6e392ull, 0x4e142dea6994e3c5ull, 0x4d7984b89d09b812ull, 0xeaa90aaaa8ed4353ull, 0x9bbdf30c52e2ffc8ull }}, {{ 0xabf71ec2b103767eull, 0x2d5a15f10f24e3b6ull, 0x0cc9cb281fd0e5b2ull, 0x06bf2f36226130b7ull, 0x2a9a6aaa9944a141ull, 0x156b7e7b3cddfdd9ull }}, {{ 0xb7a7339aea22a0e9ull, 0xc584db6a9770e522ull, 0x7fe1ef913e28f8f5ull, 0x4377d81d57cbe726ull, 0xaa082aa9fcae4c8aull, 0xd632f0d060abea7bull }}, {{ 0x2c88040d255a491dull, 0xb7309229ea68f35bull, 0xfed35bac6d99b999ull, 0xa2ae71256df70780ull, 0xa451aaa3decefd66ull, 0x5dfd6823c6b728d4ull }}, {{ 0xbd5028837586db23ull, 0x27e5b5a32819818full, 0xf44194bc48014001ull, 0x5ad06b764ba64b09ull, 0x6b30aa66b415e602ull, 0xabe61165c327984eull }}, {{ 0x6521952297448f60ull, 0x8ef9185f90ff0f9dull, 0x8a8fcf5ad00c800bull, 0x8c24329ef47eee63ull, 0x2fe6a80308dafc17ull, 0xb6fcadf99f8bf310ull }}, {{ 0xf34fd359e8ad99bcull, 0x95baf3bba9f69c25ull, 0x699e198c207d0073ull, 0x7969fa358cf54fe3ull, 0xdf02901e588dd8ebull, 0x25decbc03b777ea1ull }}, {{ 0x811e418316c80159ull, 0xd94d8554a3a2197bull, 0x202cff7944e20483ull, 0xbe23c61781951ee2ull, 0xb619a12f758a7932ull, 0x7ab3f58252aaf252ull }}, {{ 0x0b2e8f1ee3d00d77ull, 0x7d07354e6454fed3ull, 0x41c1fabcb0d42d26ull, 0x6d65bceb0fd334d5ull, 0x1d004bda9768bbfbull, 0xcb0797173aad773bull }}, {{ 0x6fd19734e62086aaull, 0xe248150feb51f43eull, 0x9193cb5ee849c380ull, 0x45f9612e9e401054ull, 0x2202f689ea1757d2ull, 0xee4be6e84ac6a84full }}, {{ 0x5e2fe810fd4542a6ull, 0xd6d0d29f31338a70ull, 0xafc5f1b512e1a308ull, 0xbbbdcbd22e80a34dull, 0x541da16324e96e36ull, 0x4ef70512ebc29317ull }}, {{ 0xaddf10a9e4b49a7dull, 0x64283a37ec036863ull, 0xddbb7112bcd05e58ull, 0x5569f635d1066108ull, 0x49284ddf711e4e23ull, 0x15a632bd3599bee9ull }}, {{ 0xcab6a6a2ef0e08e6ull, 0xe992462f382213e4ull, 0xa9526abb6023af73ull, 0x56239e1a2a3fca58ull, 0xdb930aba6b2f0d61ull, 0xd87dfb641801751cull }}, {{ 0xeb22825d568c58fbull, 0x1fb6bdd83154c6efull, 0x9d382b51c164da87ull, 0x5d642d05a67de776ull, 0x93be6b482fd685cdull, 0x74ebd1e8f00e9320ull }}, {{ 0x2f5917a5617b79d2ull, 0x3d236a71ed4fc55full, 0x2431b1318df08947ull, 0xa5e9c23880eb0aa2ull, 0xc57030d1de613a05ull, 0x913633196091bf45ull }}, {{ 0xd97aec75ced2c238ull, 0x63622873451db5b7ull, 0x69f0ebef8b655cc8ull, 0x7b219635092e6a55ull, 0xb661e832afcc4438ull, 0xac1dfefdc5b178b9ull }}, {{ 0x7ecd3c9a143b962cull, 0xe1d59480b329192eull, 0x2369375b71f59fd3ull, 0xcf4fde125bd02756ull, 0x1fd311faddfaaa34ull, 0xb92bf5e9b8eeb741ull }}, {{ 0xf4045e04ca53ddb9ull, 0xd257cd06ff9afbd0ull, 0x621c299273983e46ull, 0x191eacb79621895dull, 0x3e3eb3ccabcaa610ull, 0x3bb79b213953288bull }}, {{ 0x882bac2fe746a93eull, 0x376e0245fc0dd629ull, 0xd5199fb883f26ec4ull, 0xfb32bf2bdd4f5da5ull, 0x6e7305feb5ea7ca0ull, 0x552c0f4c3d3f9570ull }}, {{ 0x51b4b9df08c29c6dull, 0x2a4c16bbd88a5d9full, 0x53003d35277853aaull, 0xcffb77b6a519a87aull, 0x507e3bf31b28de49ull, 0x53b898fa647bd664ull }}, {{ 0x310f42b6579a1c41ull, 0xa6f8e3567567a839ull, 0x3e0264138ab344a5ull, 0x1fd2ad22730094c7ull, 0x24ee577f0f98aee2ull, 0x4535f9c7ecd65febull }}, {{ 0xea989b1f6c051a8dull, 0x85b8e160960c923bull, 0x6c17e8c36b00ae78ull, 0x3e3ac3587e05cfc8ull, 0x714f6af69bf6d4d5ull, 0xb41bc1cf405fbf2full }}, {{ 0x29f60f3a3833097eull, 0x3938cdc5dc7db657ull, 0x38ef17a22e06d0b5ull, 0x6e4ba174ec3a1dd4ull, 0x6d1a2da217a45054ull, 0x0915921883bd77daull }}, {{ 0xa39c984631fe5eeeull, 0x3c3809ba9ce91f67ull, 0x3956ec55cc442714ull, 0x4ef44e913a452a4aull, 0x4305c854ec6b234cull, 0x5ad7b4f52566ae88ull }}, {{ 0x641df2bdf3efb54eull, 0x5a30614a211b3a0cull, 0x3d653b59faa986caull, 0x158b11ac46b3a6e6ull, 0x9e39d3513c2f60fbull, 0x8c6d11937602d152ull }}, {{ 0xe92b7b6b875d150bull, 0x85e3cce54b10447bull, 0x65f45183ca9f43e7ull, 0xd76eb0bac30484feull, 0x2e42412c59d9c9ceull, 0x7c42afc29c1c2d3aull }}, {{ 0x1bb2d23349a2d26eull, 0x3ae600f4eea2acd7ull, 0xfb8b2f25ea38a70bull, 0x6a52e74b9e2d31efull, 0xce968bbb8281e214ull, 0xda9add9a1919c445ull }}, {{ 0x14fc3600e05c384eull, 0x4cfc0991525ac067ull, 0xd36fd77b26368670ull, 0x273d08f42dc3f35full, 0x11e175531912d4ccull, 0x8a0ca804fb01aabaull }}, {{ 0xd1da1c08c39a330cull, 0x01d85fad378b8406ull, 0x425e6acf7e214063ull, 0x88625989c9a781beull, 0xb2ce953efabc4ff9ull, 0x647e9031ce10ab44ull }}, {{ 0x32851857a405fe76ull, 0x1273bcc42b732844ull, 0x97b02c1aed4c83deull, 0x53d77f61e08b116eull, 0xfc11d475cb5b1fbfull, 0xecf1a1f20ca6b0aeull }}, {{ 0xf932f36c683bf098ull, 0xb8855fa9b27f92a9ull, 0xece1b90d44fd26acull, 0x466af9d2c56eae51ull, 0xd8b24c99f18f3d79ull, 0x417053747e82e6d5ull }}, {{ 0xbbfd823c125765f1ull, 0x3535bca0f8fbbaa3ull, 0x40d13a84b1e382bfull, 0xc02dc23bb652cf33ull, 0x76f6fe036f9866bcull, 0x8e63428cf11d045aull }}, {{ 0x57e71658b769fb67ull, 0x14195e49b9d54a65ull, 0x882c492ef2e31b78ull, 0x81c996551f3c1800ull, 0xa5a5ec225bf4035full, 0x8fe099816b222b88ull }}, {{ 0x6f06df772a23d204ull, 0xc8fdaee14254e7f5ull, 0x51badbd57cdf12b0ull, 0x11dfdf533858f005ull, 0x787b3957978821bbull, 0x9ec5ff0e2f55b356ull }}, {{ 0x5644baa7a5663427ull, 0xd9e8d4cc97510f96ull, 0x314c9656e0b6bae7ull, 0xb2beb94033796035ull, 0xb4d03d6beb51514eull, 0x33bbf68dd9590160ull }}, {{ 0x5eaf4a8c75fe0986ull, 0x83184ffde92a9bdfull, 0xecfddf64c7234d0eull, 0xfb733c8202bdc213ull, 0x10226637312d2d12ull, 0x0557a18a7d7a0dc7ull }}, {{ 0xb2d8e97c9bec5f3eull, 0x1ef31feb1baa16b9ull, 0x41eab9efc7610291ull, 0xd2805d141b6994c7ull, 0xa157fe27ebc3c2bdull, 0x356c4f68e6c489c6ull }}, {{ 0xfc791ede173bb86dull, 0x357f3f2f14a4e340ull, 0x932b435dc9ca19abull, 0x3903a2c9121fcfc8ull, 0x4d6fed8f35a59b6aull, 0x163b1a1903ad61c2ull }}, {{ 0xdcbb34ace8553441ull, 0x16f877d6ce70e089ull, 0xbfb0a1a9e1e500b0ull, 0x3a245bdab53e1dd5ull, 0x065f479818781226ull, 0xde4f04fa24c5d197ull }}, {{ 0x9f500ec113540a8aull, 0xe5b4ae641068c562ull, 0x7ce650a2d2f206e0ull, 0x456b968b146d2a59ull, 0x3fb8cbf0f4b0b57eull, 0xaf1631c56fba2fe6ull }}, {{ 0x3920938ac1486966ull, 0xf90ecfe8a417b5daull, 0xe0ff265c3d7444c8ull, 0xb633e16ecc43a77eull, 0x7d37f7698ee716eeull, 0xd6ddf1b65d45defeull }}, {{ 0x3b45c36b8cd41df8ull, 0xba941f1668ed1a86ull, 0xc9f77f9a668aafd9ull, 0x1e06ce53faa48af4ull, 0xe42faa1f9506e553ull, 0x64ab711fa4bab5f0ull }}, {{ 0x50b9a23380492bacull, 0x49c936e01943093eull, 0xe3aafc08016ade81ull, 0x2c440f47ca6d6d8full, 0xe9dca53bd244f53full, 0xeeb26b3c6f4b1b68ull }}, {{ 0x2740560302dbb4bbull, 0xe1dc24c0fc9e5c6full, 0xe4add8500e2cb10cull, 0xbaa898cde846479eull, 0x229e745636b19477ull, 0x52f8305c58ef1219ull }}, {{ 0x88835c1e1c950f50ull, 0xd2996f89de2f9c57ull, 0xeeca73208dbeea80ull, 0x4a95f80b12becc34ull, 0x5a308b5e22efccadull, 0x3db1e39b7956b4fbull }}, {{ 0x5521992d1dd2991full, 0x39fe5b62addc1b6bull, 0x53e87f4589752908ull, 0xe9dbb06ebb73fa11ull, 0x85e571ad5d5dfec4ull, 0x68f2e412bd6311d1ull }}, {{ 0x534ffbc32a39fb35ull, 0x43ef91daca991231ull, 0x4714f8b75e939a52ull, 0x2294e4535287c4adull, 0x3af670c5a5abf3b1ull, 0x197ce8bb65deb22full }}, {{ 0x411fd59fa643d012ull, 0xa75bb28be9fab5edull, 0xc6d1b729b1c40736ull, 0x59d0eb41394daec4ull, 0x4da067b878b784ebull, 0xfee11751fab2f5d8ull }}, {{ 0x8b3e583c7ea620b6ull, 0x8994f97723cb1b44ull, 0xc43127a0f1a84822ull, 0x8229308c3d08d3afull, 0x08440d34b72b3131ull, 0xf4cae933cafd9a73ull }}, {{ 0x706f725cf27d4719ull, 0x5fd1bea765ef10adull, 0xa9eb8c497092d159ull, 0x159be57a625844ddull, 0x52a8840f27afebefull, 0x8fed1c05ede8087eull }}, {{ 0x645a77a178e4c6f5ull, 0xbe317289fb56a6c6ull, 0xa3337ade65bc2d7dull, 0xd816f6c7d772b0a8ull, 0x3a9528978cdf3756ull, 0x9f43183b4b1054efull }}, {{ 0xeb88ac4eb8efc594ull, 0x6dee7963d16283bfull, 0x6002ccaff959c6e9ull, 0x70e5a3ce6a7ae696ull, 0x49d395eb80b82964ull, 0x389ef250eea35158ull }}, {{ 0x3356bb13395db7c9ull, 0x4b50bde62dd9257full, 0xc01bfedfbd81c51eull, 0x68f8661028cd01dfull, 0xe243db3307319decull, 0x3635772952612d72ull }}, {{ 0x01634ec03da92ddaull, 0xf1276afdca7b76f8ull, 0x8117f4bd6711b32eull, 0x19b3fca1980212bdull, 0xd6a68ffe47f02b3cull, 0x1e16a79d37cbc67cull }}, {{ 0x0de11382689bca82ull, 0x6b8a2de9e8d2a5b0ull, 0x0aef8f6606b0ffd5ull, 0x0107de4ff014bb67ull, 0x62819feecf61b059ull, 0x2ce28c242df5c0e0ull }}, {{ 0x8acac3181615e917ull, 0x3365cb23183a78e0ull, 0x6d5b99fc42e9fe56ull, 0x0a4eaf1f60cf5206ull, 0xd9103f5419d0e37aull, 0xc0d97969cb9988c3ull }}, {{ 0x6beb9ef0dcdb1ae5ull, 0x01f9ef5ef248b8c5ull, 0x459403da9d23ef5eull, 0x6712d739c8193440ull, 0x7aa279490228e2c4ull, 0x887ebe21f3ff57a6ull }}, {{ 0x37343568a08f0cf2ull, 0x13c359b576d737b6ull, 0xb7c8268a236759acull, 0x06bc6841d0fc0a82ull, 0xca58bcda1598dbacull, 0x54f36d5387f96c80ull }}, {{ 0x280a16164596816full, 0xc5a18116a4682d1eull, 0x2dd18165620980b8ull, 0x435c129229d8691bull, 0xe7776084d7f894b8ull, 0x518245434fbe3d07ull }}, {{ 0x9064dcdeb7e10e5bull, 0xb84f0ae26c11c32dull, 0xca2f0df5d45f0737ull, 0xa198b9b5a2741b0full, 0x0aa9c5306fb5cf32ull, 0x2f16b4a11d6e624full }}, {{ 0xa3f0a0b32eca8f8eull, 0x33166cd838b19fc7ull, 0xe5d68b9a4bb6482dull, 0x4ff7411858890e9dull, 0x6aa1b3e45d1a17faull, 0xd6e30e4b264fd716ull }}, {{ 0x676646ffd3e99b89ull, 0xfee0407236f03dccull, 0xfa617406f51ed1c3ull, 0x1fa88af3755a922aull, 0x2a5106eba304efc7ull, 0x64de8eef7f1e66e0ull }}, {{ 0x09fec5fe4720135cull, 0xf4c28476256269fcull, 0xc7ce8845933431a7ull, 0x3c956d829589b5adull, 0xa72a45345e315dc7ull, 0xf0b1955af73004c1ull }}, {{ 0x63f3bbeec740c199ull, 0x8f992c9d75d823d8ull, 0xce1152b7c009f08full, 0x5dd64719d76118c9ull, 0x87a6b40badeda9c8ull, 0x66efd58da7e02f90ull }}, {{ 0xe7855753c8878ffbull, 0x9bfbbe269a716673ull, 0x0cad3b2d8063659bull, 0xaa5ec70269caf7e2ull, 0x4c830874cb48a1d3ull, 0x055e57888ec1dba5ull }}, {{ 0x0b356945d54b9fd3ull, 0x17d56d82086e0087ull, 0x7ec44fc703e1f814ull, 0xa7b3c61821edaed4ull, 0xfd1e548ff0d65244ull, 0x35af6b5593929474ull }}, {{ 0x70161cba54f43e3eull, 0xee564714544c0546ull, 0xf3ab1dc626d3b0c8ull, 0x8d05bcf15348d44cull, 0xe32f4d9f685f36aeull, 0x18da3157c3b9cc91ull }}, {{ 0x60dd1f47518a6e69ull, 0x4f5ec6cb4af834c0ull, 0x84af29bd8444e7d9ull, 0x8239616d40d84b01ull, 0xdfd9083a13b822d1ull, 0xf885ed6da541fdb2ull }}, {{ 0xc8a338c92f68501cull, 0x19b3c3f0edb20f83ull, 0x2ed7a1672ab10e7dull, 0x163dce448872ee0full, 0xbe7a5244c5315c2full, 0xb53b46487493e8fcull }}, {{ 0xd66037dbda132118ull, 0x0105a76948f49b25ull, 0xd46c4e07aaea90e3ull, 0xde6a0ead547d4c97ull, 0x70c736afb3ed99d6ull, 0x1450bed48dc719dfull }}, {{ 0x5fc22e9684bf4aefull, 0x0a388a1cd98e0f7aull, 0x4c3b0c4cad29a8deull, 0xb02492c54ce4fdeeull, 0x67c822dd07480264ull, 0xcb27744d89c702baull }}, {{ 0xbd95d1e12f78ed59ull, 0x663565207f8c9ac7ull, 0xfa4e7afec3a098acull, 0xe16dbbb500f1eb4eull, 0x0dd15ca248d017eeull, 0xef8a8b0761c61b48ull }}, {{ 0x67da32cbdab9457bull, 0xfe15f344fb7e0bcdull, 0xc710cdf3a445f6bbull, 0xce49551209733115ull, 0x8a2d9e56d820ef54ull, 0x5b696e49d1bd10d0ull }}, {{ 0x0e85fbf68b3cb6d1ull, 0xecdb80b1d2ec7606ull, 0xc6a80b846abba357ull, 0x0edd52b45e7fead9ull, 0x65c82f6471495950ull, 0x921e4ee23162a825ull }}, {{ 0x913bd7a1705f242bull, 0x409306f23d3c9c3cull, 0xc290732c2b54616full, 0x94a53b0bb0ff2c81ull, 0xf9d1d9ec6cdd7d20ull, 0xb52f14d5edda9175ull }}, {{ 0xac566c4e63b769aaull, 0x85be4576645e1a5dull, 0x99a47fb9b14bce58ull, 0xce744e74e9f7bd11ull, 0xc232833c40a6e345ull, 0x13d6d05b4a89ae9bull }}, {{ 0xbb603b0fe52a20a3ull, 0x396eb69febad07a8ull, 0x006cfd40ecf60f75ull, 0x108b109123ad62b0ull, 0x95f9205a8684e0baull, 0xc6642390e960d215ull }}, {{ 0x51c24e9ef3a54663ull, 0x3e53223f34c24c97ull, 0x0441e489419c9a94ull, 0xa56ea5ab64c5dae0ull, 0xdbbb43894130c744ull, 0xbfe963a91dc834d7ull }}, {{ 0x319712358474bfddull, 0x6f3f56780f96fde9ull, 0x2a92ed5c901e09caull, 0x765278b1efba8cc0ull, 0x9550a35c8be7c8aeull, 0x7f1de49b29d2106eull }}, {{ 0xefe6b6172c8f7ea3ull, 0x587960b09be5eb1bull, 0xa9bd459da12c61e8ull, 0x9f38b6f35d497f81ull, 0xd526619d770dd6d0ull, 0xf72aee0fa234a451ull }}, {{ 0x5f031ce7bd9af25eull, 0x74bdc6e616fb2f17ull, 0xa164b8284bbbd313ull, 0x38372581a4defb10ull, 0x537fd026a68a6426ull, 0xa7ad4c9c560e6b32ull }}, {{ 0xb61f210d680d77adull, 0x8f69c4fce5cfd6e9ull, 0x4def3192f5563ec2ull, 0x3227771070b5cea6ull, 0x42fe21828167e97eull, 0x8cc4fe1b5c902ff7ull }}, {{ 0x1d374a861086acc0ull, 0x9a21b1e0fa1e6521ull, 0x0b57efbd955e7399ull, 0xf58aa6a4671a127full, 0x9ded4f190e0f1eedull, 0x7fb1ed119da1dfa8ull }}, {{ 0x2428e93ca542bf7cull, 0x0550f2c9c52ff34bull, 0x716f5d67d5b08400ull, 0x976a826c0704b8f6ull, 0x2b4516fa8c97354bull, 0xfcf342b02852bc96ull }}, {{ 0x69991c5e749b7ad5ull, 0x35297be1b3df80efull, 0x6e59a60e58e52800ull, 0xea291838462f39a0ull, 0xb0b2e5c97de814f3ull, 0xe1809ae1933b5dddull }}, {{ 0x1ffb1bb08e12cc57ull, 0x139ed6d106bb095aull, 0x4f807c8f78f39002ull, 0x259af232bdd84044ull, 0xe6fcf9deeb10d187ull, 0xcf060ccfc051aaa8ull }}, {{ 0x3fcf14e58cbbfb65ull, 0xc434642a434e5d85ull, 0x1b04dd9ab983a014ull, 0x780d75fb6a7282abull, 0x05e1c2b52ea82f47ull, 0x163c801d8330aa99ull }}, {{ 0x7e16d0f77f57d1f0ull, 0xaa0be9a6a10fa734ull, 0x0e30a80b3f2440cfull, 0xb0869bd228791aafull, 0x3ad19b13d291d8caull, 0xde5d01271fe6a9faull }}, {{ 0xece429aaf96e3361ull, 0xa47720824a9c880cull, 0x8de69070776a881cull, 0xe542163594bb0ad6ull, 0x4c300ec639b277eaull, 0xafa20b873f02a3c6ull }}, {{ 0x40e9a0adbe4e01ccull, 0x6ca74516ea1d5081ull, 0x8b01a464aa29511eull, 0xf494de17cf4e6c61ull, 0xf9e093be40f8af2cull, 0xdc547348761a65beull }}, {{ 0x892046c96f0c11fbull, 0x3e88b2e52525250cull, 0x6e106beea59d2b30ull, 0x8dd0acee19103bcfull, 0xc2c5c56e89b6d7c1ull, 0x9b4c80d49d07f975ull }}, {{ 0x5b42c3de5678b3d1ull, 0x7156fcf37373727dull, 0x4ca437527823afe2ull, 0x8a26c14cfaa2561aull, 0x9bb9b65161246d8full, 0x10fd084e224fbe99ull }}, {{ 0x909ba6af60b7062eull, 0x6d65e182828278e5ull, 0xfe6a2938b164ded8ull, 0x65838d01ca575d06ull, 0x15411f2dcb6c479bull, 0xa9e2530d571d7200ull }}, {{ 0xa61482d9c7263dccull, 0x45facf191918b8f7ull, 0xf0259c36edf0b474ull, 0xf7238211e769a245ull, 0xd48b37c9f23acc11ull, 0xa2d73e8567267400ull }}, {{ 0x7ccd1c81c77e69f9ull, 0xbbcc16fafaf739acull, 0x61781a254b670c8aull, 0xa76314b30a2056bbull, 0x4d702de3764bf8b3ull, 0x5c68713607808808ull }}, {{ 0xe0031d11caf023bdull, 0x55f8e5cdcda840bcull, 0xceb10574f2067d6bull, 0x89decefe65436351ull, 0x0661cae29ef7b704ull, 0x9c146c1c4b055053ull }}, {{ 0xc01f22b1ed616563ull, 0x5bb8fa0a08928760ull, 0x12ea36917440e631ull, 0x62b415eff4a1e132ull, 0x3fd1ecda35ad262dull, 0x18cc391aee35233eull }}, {{ 0x81375af345cdf5e1ull, 0x9539c46455b949c7ull, 0xbd2621ae8a88fdedull, 0xdb08db5f8e52cbf4ull, 0x7e33408618c37dc5ull, 0xf7fa3b0d4e13606eull }}, {{ 0x0c298d80ba0b9acdull, 0xd441abeb593ce1cbull, 0x637d50d16959eb47ull, 0x8e5891bb8f3bf78full, 0xee00853cf7a2e9baull, 0xafc64e850cc1c450ull }}, {{ 0x799f870744740bfeull, 0x4a90b7317c60d1eeull, 0xe2e5282e1d8330ceull, 0x8f75b1539857ab99ull, 0x4c053461ac5d2149ull, 0xddbf11327f91ab29ull }}, {{ 0xc03b4648ac8877eeull, 0xe9a727eedbc83350ull, 0xdcf391cd271fe80eull, 0x9a98ed43f36cb402ull, 0xf8340bd0bba34cdfull, 0xa976abf8fbb0af9cull }}, {{ 0x8250bed6bd54af49ull, 0x20878f5495d20127ull, 0xa183b203873f1095ull, 0x09f944a7823f081cull, 0xb2087627546100bcull, 0x9ea2b7b9d4e6dc21ull }}, {{ 0x17277463654ed8ddull, 0x454b994dda340b8bull, 0x4f24f4234876a5d3ull, 0x63bcae8b1676511eull, 0xf4549d894bca0758ull, 0x325b2d4251049950ull }}, {{ 0xe78a8be1f51478a6ull, 0xb4f3fd0a8608736eull, 0x17718960d4a27a40ull, 0xe55ed16ee09f2b2full, 0x8b4e275cf5e44973ull, 0xf78fc4972a2dfd29ull }}, {{ 0x0b6976d392ccb67eull, 0x1187e2693c548255ull, 0xea6f5dc84e58c687ull, 0xf5b42e54c637afd6ull, 0x710d89a19aeade86ull, 0xab9dade7a5cbe39full }}, {{ 0x721ea443bbff20eeull, 0xaf4ed81c5b4d1752ull, 0x2859a9d30f77c146ull, 0x9909cf4fbe2cde65ull, 0x6a8760500d2cb145ull, 0xb428cb0c79f6e43aull }}, {{ 0x75326aa557f7494aull, 0xd914711b9102e938ull, 0x9380a23e9aad8cc2ull, 0xfa62191d6dc0aff3ull, 0x2949c32083beecb7ull, 0x0997ee7cc3a4ea48ull }}, {{ 0x93f82a756fa8dce3ull, 0x7acc6b13aa1d1c34ull, 0xc30656720ac77f9cull, 0xc7d4fb264986df83ull, 0x9ce19f4525753f2full, 0x5fef50dfa47126d1ull }}, {{ 0xc7b1a8965c98a0dfull, 0xcbfc2ec4a5231a0dull, 0x9e3f60746bcafc1cull, 0xce51cf7edf44bb25ull, 0x20d038b3769477ddull, 0xbf5928bc6c6b8430ull }}, {{ 0xccf095df9df648b9ull, 0xf7d9d3ae735f0489ull, 0x2e79c48c35edd91full, 0x0f321af4b8af4f78ull, 0x48223702a1ccaeaaull, 0x797b975c3c3329e1ull }}, {{ 0x0165dabc2b9ed736ull, 0xae8244d081b62d62ull, 0xd0c1ad7a1b4a7b3full, 0x97f50d8f36d91ab1ull, 0xd156261a51fed2a4ull, 0xbed3e99a59ffa2ccull }}, {{ 0x0dfa8b59b4346817ull, 0xd116b025111dc5d4ull, 0x2790c6c510e8d07cull, 0xef928798247b0af2ull, 0x2d5d7d0733f43a6dull, 0x7447200783fc5c00ull }}, {{ 0x8bc971810a0c10e8ull, 0x2ae2e172ab29ba48ull, 0x8ba7c3b2a91824e0ull, 0x5bb94bf16cce6d75ull, 0xc5a6e248078a484bull, 0x8ac7404b27db9801ull }}, {{ 0x75de6f0a6478a911ull, 0xacdcce7aafa146d5ull, 0x748da4fa9af170c1ull, 0x953cf76e40104697ull, 0xb884d6d04b66d2f1ull, 0x6bc882ef8e93f011ull }}, {{ 0x9ab05667ecb69aacull, 0xc0a010cadc4cc456ull, 0x8d8871ca0d6e6790ull, 0xd461aa4e80a2c1eaull, 0x35306422f2043d6full, 0x35d51d5b91c760b1ull }}, {{ 0x0ae3600f3f220ab4ull, 0x8640a7ec9affab62ull, 0x875471e486500ba7ull, 0x4bd0a711065b9329ull, 0x13e3e95d742a665eull, 0x1a532593b1c9c6ecull }}, {{ 0x6ce1c09877546b08ull, 0x3e868f3e0dfcb1d4ull, 0x494c72ed3f20748bull, 0xf62686aa3f93bf9full, 0xc6e71da689a7ffaeull, 0x073f77c4f1e1c538ull }}, {{ 0x40d185f4a94c2e52ull, 0x7141986c8bdef24cull, 0xdcfc7d4477448d70ull, 0x9d8142a67bc57c38ull, 0xc5072881608ffcd5ull, 0x487aadb172d1b437ull }}, {{ 0x882f3b8e9cf9cf34ull, 0x6c8ff43d76b576faull, 0xa1dce4aca8ad8664ull, 0x270c9a80d5b6da38ull, 0xb247950dc59fe058ull, 0xd4cac8ee7c310a2dull }}, {{ 0x51d8539221c21806ull, 0x3d9f8a66a316a5c9ull, 0x52a0eebe96c73fecull, 0x867e090859248636ull, 0xf6cbd289b83ec371ull, 0x4febd950d9ea65c8ull }}, {{ 0x327343b55194f040ull, 0x683b68025ee279ddull, 0x3a495371e3c87f3aull, 0x40ec5a537b6d3e1full, 0xa3f639613273a26full, 0x1f367d288327f9d9ull }}, {{ 0xf880a5152fd16284ull, 0x12521017b4d8c2a3ull, 0x46dd4272e5d4f848ull, 0x893b8742d2446d38ull, 0x679e3dcbf8845858ull, 0x3820e3951f8fc280ull }}, {{ 0xb50672d3de2dd92bull, 0xb734a0ed10779a67ull, 0xc4a4987cfa51b2d0ull, 0x5c53489c36ac4432ull, 0x0c2e69f7b52b7375ull, 0x3148e3d33b9d9904ull }}, {{ 0x12407c46adca7babull, 0x280e4942a4ac080dull, 0xae6df4e1c730fc27ull, 0x9b40d61a22baa9fbull, 0x79d023ad13b28295ull, 0xecd8e6405427fa28ull }}, {{ 0xb684dac2c9e8d4b1ull, 0x908edc9a6eb85082ull, 0xd04b90d1c7e9d987ull, 0x10885d055b4aa3d4ull, 0xc22164c2c4f919d8ull, 0x4078fe83498fc594ull }}, {{ 0x21308b9be3184ee8ull, 0xa5949e085333251bull, 0x22f3a831cf227f4bull, 0xa553a23590ea6650ull, 0x954def9bb1bb0270ull, 0x84b9f120df9db7cfull }}, {{ 0x4be57416def31511ull, 0x77ce2c533fff730full, 0x5d8491f21758f8f4ull, 0x75445617a927ff21ull, 0xd50b5c14f14e1866ull, 0x2f436b48bc292e1bull }}, {{ 0xf6f688e4b57ed2adull, 0xae0dbb407ffa7e98ull, 0xa72db374e979b98cull, 0x94ab5cec9b8ff74dull, 0x527198d16d0cf400ull, 0xd8a230d7599bcd16ull }}, {{ 0xa5a158ef16f43ac4ull, 0xcc895084ffc8f1f9ull, 0x87c902911ec13f7eull, 0xceb1a13e139fa908ull, 0x386ff82e42818805ull, 0x7655e869801602dfull }}, {{ 0x784d7956e58a4ba5ull, 0xfd5d2531fdd973c0ull, 0x4dda19ab338c7af3ull, 0x12f04c6cc43c9a55ull, 0x345fb1ce990f503aull, 0x9f5b141f00dc1cb8ull }}, {{ 0xb306bd64f766f46eull, 0xe5a373f3ea7e8584ull, 0x0a8500b0037ccd87ull, 0xbd62fc3faa5e0755ull, 0x0bbcf211fa992244ull, 0x398ec93608991f32ull }}, {{ 0xfe4365f1aa058c4full, 0xf862878728f1372eull, 0x693206e022e0074eull, 0x65ddda7ca7ac4952ull, 0x756174b3c9fb56afull, 0x3f93dc1c55fb37f4ull }}, {{ 0xeea1fb70a4377b18ull, 0xb3d94b47996c27d5ull, 0x1bf444c15cc04915ull, 0xfaaa88de8cbadd38ull, 0x95ce8f05e3d162d9ull, 0x7bc6991b5bd02f8cull }}, {{ 0x5253d2666a2aceebull, 0x067cf0cbfe398e5bull, 0x178aaf8d9f82dad9ull, 0xcaa958b17f4ca431ull, 0xda11963ae62ddc83ull, 0xd5c1fb119621db7dull }}, {{ 0x3746380025ac1530ull, 0x40e167f7ee3f8f91ull, 0xeb6adb883b1c8c7aull, 0xea9d76eef8fe69eaull, 0x84afde4cfdca9d25ull, 0x5993ceafdd5292eaull }}, {{ 0x28be300178b8d3e3ull, 0x88ce0faf4e7b9bacull, 0x322c93524f1d7cc6ull, 0x2a26a555b9f0232dull, 0x2edeaf01e9ea237bull, 0x7fc612dea539bd29ull }}, {{ 0x976de00eb73846dcull, 0x580c9cd910d414b9ull, 0xf5bdc1371726dfc1ull, 0xa582755943615fc3ull, 0xd4b2d613232562cfull, 0xfdbcbcb27441639bull }}, {{ 0xea4ac0932832c496ull, 0x707e207aa848cf3full, 0x99698c26e784bd8dull, 0x7718957ca1cdbda7ull, 0x4efc5cbf5f75dc1cull, 0xe95f5ef88a8de416ull }}, {{ 0x26eb85bf91fbaddfull, 0x64ed44ca92d8187full, 0xfe1f79850b2f6786ull, 0xa6f5d6de5209688bull, 0x15db9f79ba9a991cull, 0x1db9b5b5698ae8dfull }}, {{ 0x8533397bb3d4cab6ull, 0xf144afe9bc70f4f7ull, 0xed3abf326fda0b3full, 0x859a64af345e1577ull, 0xda943ac14a09fb1eull, 0x294119161f6d18b6ull }}, {{ 0x34003ed5064feb1dull, 0x6caedf215c6991abull, 0x444b77f85e84707full, 0x3807eed80bacd6afull, 0x89ca4b8ce463cf31ull, 0x9c8afadd3a42f724ull }}, {{ 0x080274523f1f2f20ull, 0x3ed4b74d9c1fb0b0ull, 0xaaf2afb3b12c64faull, 0x304f547074c062d8ull, 0x61e6f380ebe617ecull, 0x1d6dcca4469da76dull }}, {{ 0x50188b367737d742ull, 0x744f2908193ce6e0ull, 0xad7add04ebbbf1c6ull, 0xe3194c648f83dc76ull, 0xd305830936fcef39ull, 0x2649fe6ac2288a45ull }}, {{ 0x20f57020a82e6891ull, 0x8b179a50fc6104c3ull, 0xc6cca231355771c0ull, 0xdefcfbed9b269ca2ull, 0x3e371e5c25e15842ull, 0x7ee3f02b959566baull }}, {{ 0x4996614691d015aaull, 0x6eec0729dbca2f9full, 0xc3fe55ec156a7185ull, 0xb5e1d7480f821e5bull, 0x6e272f997acd729cull, 0xf4e761b3d7d60346ull }}, {{ 0xdfdfccc1b220d8a2ull, 0x553847a295e5dc38ull, 0xa7ef5b38d6286f36ull, 0x1ad268d09b152f95ull, 0x4d87dbfecc067a1full, 0x9109d1066e5c20c0ull }}, {{ 0xbebdff90f5487650ull, 0x5432cc59dafa9a38ull, 0x8f5990385d94581full, 0x0c3818260ed3dbd8ull, 0x074e97f3f840c537ull, 0xaa622a404f994783ull }}, {{ 0x736bfba994d49f21ull, 0x49fbfb828dca0637ull, 0x997fa233a7cb7139ull, 0x7a30f17c94469675ull, 0x4911ef87b287b426ull, 0xa7d5a6831bfccb1eull }}, {{ 0x8237d49fd04e374aull, 0xe3d7d31989e43e2aull, 0xfefc56048df26c3cull, 0xc5e96eddcac1e097ull, 0xdab35b4cf94d0980ull, 0x8e58811f17dfef2eull }}, {{ 0x162e4e3e230e28e2ull, 0xe66e3eff62ea6da9ull, 0xf5db5c2d8b783a60ull, 0xbb1e54a9eb92c5efull, 0x8b019101bd025f07ull, 0x8f750b36eebf57d4ull }}, {{ 0xddcf0e6d5e8d98d2ull, 0x004e75f9dd28489aull, 0x9a9199c772b247c9ull, 0x4f2f4ea333bbbb5full, 0x6e0faa116217b64dull, 0x9a92702553796e4dull }}, {{ 0xaa169045b187f838ull, 0x03109bc2a392d60cull, 0x09b001ca7af6cddaull, 0x17d91260055551bcull, 0x4c9ca4add4ed1f05ull, 0x09b8617542be4f06ull }}, {{ 0xa4e1a2b8ef4fb233ull, 0x1ea6159a63bc5c7eull, 0x60e011e8cda40a84ull, 0xee7ab7c035553158ull, 0xfe1e6eca51433632ull, 0x6133ce949b6f163eull }}, {{ 0x70d05b39591cf5fcull, 0x327cd807e55b9cf2ull, 0xc8c0b31808686929ull, 0x50cb2d821553ed73ull, 0xed3053e72ca01dfdull, 0xcc0611ce1256de75ull }}, {{ 0x6823903d7b219bd7ull, 0xf8e0704ef5942178ull, 0xd786fef054141b9bull, 0x27efc714d5474685ull, 0x43e34707be412be5ull, 0xf83cb20cb764b09bull }}, {{ 0x1163a266cf501669ull, 0xb8c4631597c94eb4ull, 0x6b45f56348c91417ull, 0x8f5dc6d054c8c13aull, 0xa6e0c64d6e8bb6f3ull, 0xb25ef47f29eee610ull }}, {{ 0xade458041920e018ull, 0x37abded7eddd1308ull, 0x30bb95e0d7dac8edull, 0x99a9c4234fd78c48ull, 0x84c7bf0651752583ull, 0xf7b58cf7a354fca6ull }}, {{ 0xcaeb7028fb48c0f0ull, 0x2cb6b46f4aa2be56ull, 0xe753dac86e8bd944ull, 0x00a1a9611e6b7ad1ull, 0x2fcd763f2e937724ull, 0xad1781ac6151de81ull }}, {{ 0xed326199d0d7895bull, 0xbf230c58ea5b6f63ull, 0x09468bd451767ca9ull, 0x06509dcb3032cc33ull, 0xde069e77d1c2a768ull, 0xc2eb10bbcd32b10bull }}, {{ 0x43f7d002286b5d8full, 0x775e7b79279259e7ull, 0x5cc1764b2ea0dea1ull, 0x3f2629efe1fbf9feull, 0xac4230ae319a8a10ull, 0x9d2ea75603faea76ull }}, {{ 0xa7ae20159431a797ull, 0xa9b0d2bb8bb78308ull, 0x9f8e9eefd248b24eull, 0x777da35ed3d7c3efull, 0xba95e6cdf00964a2ull, 0x23d2895c27cd28a2ull }}, {{ 0x8ccd40d7c9f08be3ull, 0xa0e83b53752b1e56ull, 0x3b92355e36d6f712ull, 0xaae861b4466da75cull, 0x49db040b605dee58ull, 0x66395d998e03965bull }}, {{ 0x8004886de36576e1ull, 0x4912514293af2f61ull, 0x53b615ae2465a6baull, 0xad13d10ac048899aull, 0xe28e2871c3ab4f76ull, 0xfe3da7ff8c23df90ull }}, {{ 0x002d544ae1f6a4c6ull, 0xdab72c99c4d7d9cfull, 0x451cd8cd6bf88346ull, 0xc2c62a6b82d56007ull, 0xd98d9471a4b11aa2ull, 0xee688ffb7966bba8ull }}, {{ 0x01c54aecd3a26fbfull, 0x8b27be01b06e8216ull, 0xb320780637b520c4ull, 0x9bbda8331c55c048ull, 0x7f87cc706eeb0a5bull, 0x50159fd2be035498ull }}, {{ 0x11b4ed4044585d72ull, 0x6f8d6c10e45114dcull, 0xff44b03e2d1347adull, 0x156891ff1b5982d6ull, 0xfb4dfc64552e6794ull, 0x20d83e3b6c214df4ull }}, {{ 0xb1114482ab73a676ull, 0x5b8638a8eb2ad098ull, 0xf8aee26dc2c0ccc6ull, 0xd615b3f7117f1c65ull, 0xd10bdbeb53d00bc8ull, 0x48726e52394d0b91ull }}, {{ 0xeaacad1ab284809aull, 0x933e36992fac25f6ull, 0xb6d4d8499b87ffbfull, 0x5cd907a6aef71bfbull, 0x2a769731462075d8ull, 0xd4784f363d0273b2ull }}, {{ 0x2abec30af92d0600ull, 0xc06e21fbdcb97ba5ull, 0x245072e0134ffd7bull, 0xa07a4c82d5a717d5ull, 0xa8a1e7ecbd449a73ull, 0x4cb3181e621884f5ull }}, {{ 0xab739e6dbbc23c03ull, 0x844d53d69f3ed473ull, 0x6b247cc0c11fe6d5ull, 0x44c6fd1c5886ee53ull, 0x96530f3f64ae0884ull, 0xfefef12fd4f53198ull }}, {{ 0xb28430495596581cull, 0x2b05466238744c84ull, 0x2f6cdf878b3f0457ull, 0xafc5e31b75454f42ull, 0xdf3e9879eecc552aull, 0xf5f56bde5193eff5ull }}, {{ 0xf929e2dd57df7117ull, 0xae34bfd6348afd2eull, 0xda40bb4b70762b67ull, 0xddbadf1294b51895ull, 0xb871f4c353fb53aaull, 0x9b9636af2fc75f9aull }}, {{ 0xbba2dca56eba6ae5ull, 0xce0f7e5e0d6de3d5ull, 0x868750f2649db20cull, 0xa94cb6b9cf12f5daull, 0x34738fa147d144acull, 0x13de22d7ddc9bc0bull }}, {{ 0x545c9e7653482cf0ull, 0x0c9aefac864ae659ull, 0x41492977ee28f480ull, 0x9cff234216bd9a89ull, 0x0c839c4cce2caebeull, 0xc6ad5c6ea9e15870ull }}, {{ 0x4b9e309f40d1c162ull, 0x7e0d5cbd3eecff7dull, 0x8cdb9eaf4d998d00ull, 0x21f76094e368095cull, 0x7d241b000dbed372ull, 0xc2c59c52a2cd7460ull }}, {{ 0xf42de63888318dd7ull, 0xec859f647541fae4ull, 0x809432d907ff8204ull, 0x53a9c5d0e2105d9dull, 0xe3690e0089744275ull, 0x9bb81b3a5c068bc4ull }}, {{ 0x89cafe3551ef8a62ull, 0x3d3839ec9493ccf1ull, 0x05c9fc7a4ffb1431ull, 0x44a1ba28d4a3a827ull, 0xe21a8c055e8a9895ull, 0x15311047984175b0ull }}, {{ 0x61edee15335b67d1ull, 0x6432433dcdc6016full, 0x39e3dcc71fcec9ecull, 0xae5145984e649186ull, 0xd5097835b169f5d4ull, 0xd3eaa2cbf28e98e8ull }}, {{ 0xd34b4cd401920e28ull, 0xe9f6a06a09bc0e59ull, 0x42e69fc73e13e33bull, 0xcf2cb7f30fedaf3eull, 0x525eb218ee239a4eull, 0x472a5bf77991f918ull }}, {{ 0x40f100480fb48d8dull, 0x23a2442461588f82ull, 0x9d023dc86cc6e057ull, 0x17bf2f7e9f48d86eull, 0x37b2f4f94d640714ull, 0xc7a797aabfb3baf3ull }}, {{ 0x896a02d09d0d8784ull, 0x6456a96bcd759b16ull, 0x221669d43fc4c367ull, 0xed77daf238d87452ull, 0x2cfd91bd05e846c8ull, 0xcc8becab7d054d80ull }}, {{ 0x5e241c2622874b2aull, 0xeb629e3606980ee1ull, 0x54e0224a7dafa209ull, 0x46ae8d7638748b35ull, 0xc1e7b1623b12c3d9ull, 0xfd773eb2e2350701ull }}, {{ 0xad69197d5948efa0ull, 0x31da2e1c41f094cdull, 0x50c156e8e8dc5463ull, 0xc2d1869e348d7015ull, 0x930cedd64ebba67cull, 0xe6a872fcd6124611ull }}, {{ 0xc61afee57cd95c3dull, 0xf285cd1a9365d008ull, 0x278d6519189b4bdfull, 0x9c2f422e0d8660d5ull, 0xbe814a5f135480dfull, 0x02947de05cb6bcafull }}, {{ 0xbd0df4f6e07d9a5dull, 0x793a0309c1fa2057ull, 0x8b85f2faf610f6bfull, 0x19d895cc873fc853ull, 0x710ce7b6c14d08bcull, 0x19cceac39f235eddull }}, {{ 0x628b91a4c4e807a5ull, 0xbc441e6193c5436dull, 0x733b7dcd9ca9a37aull, 0x0275d9fd487dd343ull, 0x6a810d238d025759ull, 0x02012ba43761b4a6ull }}, {{ 0xd973b06fb1104c71ull, 0x5aa92fcfc5b4a245ull, 0x8052ea081ea062cbull, 0x189a83e4d4ea40a2ull, 0x290a83638217697aull, 0x140bb46a29d10e80ull }}, {{ 0x7e84e45ceaa2fc6cull, 0x8a9bde1db90e56baull, 0x033d24513243dbf1ull, 0xf60926f051268659ull, 0x9a6921e314ea1ec4ull, 0xc8750c25a22a9101ull }}, {{ 0xf130eba12a5ddc36ull, 0x6a16ad293a8f6348ull, 0x20636b2bf6a6976full, 0x9c5b85632b813f7aull, 0x081b52ded12533b1ull, 0xd492797855a9aa10ull }}, {{ 0x6be9344ba7aa9a1dull, 0x24e2c39c4999e0d9ull, 0x43e22fb7a281ea5aull, 0x1b9335dfb30c7ac5ull, 0x51113cb42b7404f0ull, 0x4db8beb358a0a4a0ull }}, {{ 0x371c0af48caa0525ull, 0x70dba41ae002c87eull, 0xa6d5dd2c59132785ull, 0x13c01abcfe7ccbb4ull, 0x2aac5f09b2883161ull, 0x0937730176466e43ull }}, {{ 0x27186d8d7ea43370ull, 0x6894690cc01bd4eeull, 0x845aa3bb7abf8b36ull, 0xc5810b61f0dff50eull, 0xaabbb660f951edcaull, 0x5c2a7e0e9ec04e9full }}, {{ 0x86f44786f26a0264ull, 0x15cc1a7f8116514dull, 0x2b8a6552cb7b7020ull, 0xb70a71d368bf9291ull, 0xab551fc9bd3349ebull, 0x99a8ec923383123cull }}, {{ 0x458acb45782417e6ull, 0xd9f908fb0adf2d07ull, 0xb367f53bf2d26140ull, 0x26687242177bb9abull, 0xb1533de16400e335ull, 0x00993db6031eb65eull }}, {{ 0xb76bf0b6b168eefdull, 0x83ba59ce6cb7c248ull, 0x020f94577c37cc88ull, 0x80147694ead540b5ull, 0xed406acde808e013ull, 0x05fc691c1f331fb2ull }}, {{ 0x2a376722ee1955deull, 0x254782103f2d96d7ull, 0x149bcb6ada2dfd55ull, 0x00cca1d12c548712ull, 0x44842c0b1058c0c3ull, 0x3bdc1b1937ff3cfdull }}, {{ 0xa62a075d4cfd5aa9ull, 0x74cb14a277c7e467ull, 0xce15f22c85cbe553ull, 0x07fe522bbb4d46b4ull, 0xad29b86ea377879eull, 0x56990efc2ff861e4ull }}, {{ 0x7da449a501e58a96ull, 0x8feece58adceec0cull, 0x0cdb75bd39f6f542ull, 0x4fef35b55104c310ull, 0xc3a1345262ab4c2cull, 0x61fa95d9dfb3d2eeull }}, {{ 0xe86ae07212f769e0ull, 0x9f540f76ca15387cull, 0x8092996443a59499ull, 0x1f5819152a2f9ea0ull, 0xa44c0b37dab0f9bbull, 0xd3c9da82bd063d53ull }}, {{ 0x142cc474bdaa22bdull, 0x39489aa3e4d434e1ull, 0x05b9fdeaa477ce00ull, 0x3970fad3a5dc3245ull, 0x6af8702e8ae9c14full, 0x45e2891b623e6544ull }}, {{ 0xc9bfac8f68a55b5eull, 0x3cd60a66f04a10caull, 0x3943eb2a6cae0c02ull, 0x3e69cc447a99f6b2ull, 0x2db461d16d218d18ull, 0xbad95b11d66ff4acull }}, {{ 0xe17cbd9a167591abull, 0x605c680562e4a7ebull, 0x3ca72fa83ecc7816ull, 0x7021faacca03a2f6ull, 0xc90bd22e434f82f2ull, 0x4c7d8eb2605f8eb9ull }}, {{ 0xcedf6804e097b0b2ull, 0xc39c1035dcee8f36ull, 0x5e87dc9273fcb0dfull, 0x6153cabfe4245d9eull, 0xda7635cea11b1d78ull, 0xfce792f7c3bb9341ull }}, {{ 0x14ba1030c5ece6f8ull, 0xa418a21aa1519824ull, 0xb14e9db887dee8bdull, 0xcd45eb7ee96ba82full, 0x889e1a124b0f26b3ull, 0xe10bbdada553c092ull }}, {{ 0xcf44a1e7bb4105afull, 0x68f6550a4d2ff168ull, 0xed1229354eb51768ull, 0x04bb32f51e3491dcull, 0x562d04b6ee978306ull, 0xca7568c8754585b9ull }}, {{ 0x18ae530d508a38d3ull, 0x199f526703df6e18ull, 0x42b59c151312ea14ull, 0x2f4ffd932e0db2a1ull, 0x5dc22f2551eb1e3cull, 0xe89617d494b7393dull }}, {{ 0xf6cf3e8525663839ull, 0x0039380626ba4cf0ull, 0x9b1818d2bebd24c9ull, 0xd91fe7bfcc88fa4cull, 0xa995d775332f2e59ull, 0x15dcee4dcf283c65ull }}, {{ 0xa418713375fe323cull, 0x023c303d83470169ull, 0x0ef0f83b73636fdaull, 0x7b3f0d7dfd59c6feull, 0x9fda6a93ffd7cf82ull, 0xdaa14f0a17925bf8ull }}, {{ 0x68f46c029bedf65bull, 0x1659e26720c60e20ull, 0x9569b25281e25e84ull, 0xd07686ebe581c5ecull, 0x3e8829c7fe6e1b18ull, 0x8a4d1664ebb797b6ull }}, {{ 0x198c381a174b9f91ull, 0xdf82d80747bc8d44ull, 0xd620f73912d7b128ull, 0x24a14536f711bb3dull, 0x7151a1cff04d0ef8ull, 0x6702dff1352bed1eull }}, {{ 0xff7a3104e8f43ba6ull, 0xbb1c7048cd5d84a8ull, 0x5d49a83abc6ceb98ull, 0x6e4cb425a6b1506aull, 0x6d30521f630295b1ull, 0x061cbf6c13b74330ull }}, {{ 0xfac5ea31198a547aull, 0x4f1c62d805a72e99ull, 0xa4e0924b5c4133f7ull, 0x4eff097882ed2427ull, 0x43e33539de19d8eeull, 0x3d1f7a38c5289fe4ull }}, {{ 0xcbbb25eaff674cc7ull, 0x171bdc703887d203ull, 0x70c5b6f19a8c07a9ull, 0x15f65eb51d43698cull, 0xa6e01442ad02794full, 0x633ac637b3963eeaull }}, {{ 0xf54f7b2dfa08ffc7ull, 0xe7169c62354e3425ull, 0x67b9257009784c9aull, 0xdb9fb31324a21f7cull, 0x84c0ca9ac218bd16ull, 0xe04bbe2d03de752aull }}, {{ 0x951acfcbc459fdc5ull, 0x06e21bd6150e097bull, 0x0d3b76605eb2fe0dull, 0x943cfebf6e553adcull, 0x2f87ea0b94f762e4ull, 0xc2f56dc226b093a9ull }}, {{ 0xd30c1df5ab83e9b4ull, 0x44d5165cd28c5ed3ull, 0x84529fc3b2fdec82ull, 0xca61f37a4f544c98ull, 0xdb4f2473d1a9dcedull, 0x9d96499582e5c49bull }}, {{ 0x3e792b98b327210dull, 0xb052dfa0397bb446ull, 0x2b3a3da4fdeb3d16ull, 0xe7d382c7194afdf5ull, 0x91176c8630a2a149ull, 0x27dedfd71cf9ae16ull }}, {{ 0x70bbb3f6ff874a81ull, 0xe33cbc423ed50abeull, 0xb0466871eb3062e2ull, 0x0e431bc6fcedeb93ull, 0xaaea3d3de65a4ce3ull, 0x8eb4be6721c0cce1ull }}, {{ 0x675507a5fb48e908ull, 0xe05f5a9674526b70ull, 0xe2c014732fe3dcdcull, 0x8e9f15c5e14b33c4ull, 0xad26646aff8700deull, 0x930f7007518800d0ull }}, {{ 0x09524c7bd0d91a4dull, 0xc3b989e08b383264ull, 0xdb80cc7fdee6a0a0ull, 0x9236d9baccf005b0ull, 0xc37fec2dfb4608b1ull, 0xbe9a60492f500826ull }}, {{ 0x5d36fcd6287b0702ull, 0xa53f62c57031f7e8ull, 0x9307fcfeb5024647ull, 0xb624814c016038e8ull, 0xa2ff39cbd0bc56efull, 0x7207c2dbd9205183ull }}, {{ 0xa425e05d94ce460full, 0x7479dbb661f3af13ull, 0xbe4fe1f31216beccull, 0x1d6d0cf80dc23915ull, 0x5df841f6275b655dull, 0x744d9c967b432f24ull }}, {{ 0x697ac3a7d00ebc98ull, 0x8cc2951fd384d6c4ull, 0x6f1ed37eb4e373fcull, 0x264281b089963ad9ull, 0xabb2939d8991f5a3ull, 0x8b081de0d09fd76bull }}, {{ 0x1ecba48e20935deeull, 0x7f99d33e433063acull, 0x573442f310e287ddull, 0x7e9910e55fde4c7eull, 0xb4f9c4275fb3985full, 0x6e512ac8263e6a34ull }}, {{ 0x33f46d8d45c1ab4bull, 0xfc02406e9fe3e4b9ull, 0x680a9d7ea8d94ea6ull, 0xf1faa8f5beaefcefull, 0x11c1a989bd03f3baull, 0x4f2babd17e70260full }}, {{ 0x078c4784b990b0ecull, 0xd81684523ee6ef3cull, 0x106a26f2987d1285ull, 0x73ca999972d5e15aull, 0xb1909f616227854dull, 0x17b4b62ef0617c96ull }}, {{ 0x4b7acb2f3fa6e93aull, 0x70e12b3675055858ull, 0xa4258579f4e2b93aull, 0x85e9fffe7c5acd84ull, 0xefa639cdd58b3506ull, 0xed0f1dd563cedde2ull }}, {{ 0xf2cbefd87c851c41ull, 0x68cbb02092357372ull, 0x697736c390db3c48ull, 0x3b23fff0db8c072eull, 0x5c7e420a57701241ull, 0x42972a55e614aaddull }}, {{ 0x7bf75e74dd331a89ull, 0x17f4e145b616827dull, 0x1ea823a3a8905ad4ull, 0x4f67ff68937847d0ull, 0x9cee94676a60b68cull, 0x99e7a75afcceaca5ull }}, {{ 0xd7a9b090a3ff095aull, 0xef90ccb91ce118e6ull, 0x3291646495a38c48ull, 0x1a0ffa15c2b2ce21ull, 0x2151cc0a27c7217bull, 0x030c898de012be78ull }}, {{ 0x6ca0e5a667f65d88ull, 0x5ba7ff3b20caf904ull, 0xf9adebedd8637ad9ull, 0x049fc4d99afc0d4bull, 0x4d31f8658dc74ecfull, 0x1e7d5f8ac0bb70b1ull }}, {{ 0x3e48f8800f9fa753ull, 0x948ff84f47edba2cull, 0xc0cb374a73e2cc7dull, 0x2e3db0800dd884f7ull, 0x03f3b3f789c91416ull, 0x30e5bb6b875266edull }}, {{ 0x6ed9b5009c3c8942ull, 0xcd9fb318cf4945baull, 0x87f028e886dbfce7ull, 0xce68e5008a7531adull, 0x278507ab61dac8ddull, 0xe8f9523349380542ull }}, {{ 0x548112061a5d5c96ull, 0x083cfef818dcb948ull, 0x4f6199154497e10eull, 0x1018f2056893f0c7ull, 0x8b324cb1d28bd8aaull, 0x19bd3600dc303495ull }}, {{ 0x4d0ab43d07a59ddeull, 0x5261f5b0f89f3cd3ull, 0x19cffad4adeeca8cull, 0xa0f9743615c767c9ull, 0x6ff6fef2397676a4ull, 0x01641c0899e20dd7ull }}, {{ 0x026b0a624c782aadull, 0x37d398e9b6386041ull, 0x021fcc4ecb53e97bull, 0x49be8a1cd9ca0ddbull, 0x5fa5f5763ea0a26eull, 0x0de9185602d48a6aull }}, {{ 0x182e67d6fcb1aac6ull, 0x2e43f9211e33c28aull, 0x153dfb13f1471ed0ull, 0xe171652081e48a8eull, 0xbc7b969e7246584eull, 0x8b1af35c1c4d6827ull }}, {{ 0xf1d00e65def0abc1ull, 0xcea7bb4b2e059964ull, 0xd46bcec76cc73421ull, 0xce6df34512ed698cull, 0x5cd3e23076bf7314ull, 0x6f0d81991b06118dull }}, {{ 0x72208ffab566b587ull, 0x128d50efcc37fdf1ull, 0x4c3613ca3fc80952ull, 0x104b80b2bd461f80ull, 0xa046d5e4a37a7ed0ull, 0x56870ffb0e3caf85ull }}, {{ 0x75459fcb1603174aull, 0xb985295dfa2feb6eull, 0xfa1cc5e67dd05d34ull, 0xa2f306fb64bd3b02ull, 0x42c45aee62c8f420ull, 0x61469fce8e5edb38ull }}, {{ 0x94b83deedc1ee8e5ull, 0x3f339dabc5df3250ull, 0xc51fbb00ea23a40full, 0x5d7e45d1ef644e1dull, 0x9bab8d4fdbd98946ull, 0xccc23e118fb49032ull }}, {{ 0xcf326b54993518f1ull, 0x780428b5bab7f725ull, 0xb33d4e0925646898ull, 0xa6eeba3359eb0d29ull, 0x14b3851e967f5cbfull, 0xff966caf9d0da1faull }}, {{ 0x17f8314dfc12f967ull, 0xb02997194b2fa77aull, 0x00650c5b75ec15f4ull, 0x85534601832e83a1ull, 0xcf033331e0f99f7cull, 0xfbe03edc228853c4ull }}, {{ 0xefb1ed0bd8bdbe03ull, 0xe19fe6fcefdc8ac4ull, 0x03f27b929b38db8eull, 0x3540bc0f1fd1244aull, 0x161ffff2c9c03addull, 0xd6c27499595345b0ull }}, {{ 0x5cf3427677696c21ull, 0xd03f05e15e9d6bb1ull, 0x2778d3ba10389394ull, 0x148758973e2b6ae4ull, 0xdd3fff7be1824ca4ull, 0x63988dfd7d40b8e0ull }}, {{ 0xa18098a0aa1e394full, 0x22763acdb22634edull, 0x8ab84544a235c3d0ull, 0xcd4975e86db22ce9ull, 0xa47ffad6cf16fe68ull, 0xe3f58be6e48738c8ull }}, {{ 0x4f05f646a52e3d14ull, 0x589e4c08f57e1148ull, 0x6b32b4ae5619a621ull, 0x04de9b1448f5c11full, 0x6cffcc6416e5f018ull, 0xe7977704ed4837d6ull }}, {{ 0x163b9ec273ce62cdull, 0x762ef85996ecacd3ull, 0x2ffb0ecf5d007d4dull, 0x30b20ecad9998b3aull, 0x41fdfbe8e4fb60f0ull, 0x0beaa63144d22e60ull }}, {{ 0xde543398860fdbffull, 0x9dd5b37fe53ec03eull, 0xdfce9419a204e506ull, 0xe6f493ec7fff7045ull, 0x93ebd718f1d1c961ull, 0x772a7decb035cfc2ull }}, {{ 0xaf4a03f53c9e97f2ull, 0x2a5902fef4738274ull, 0xbe11c9005430f242ull, 0x058dc73cfffa62baull, 0xc73666f97231ddd3ull, 0xa7a8eb3ee21a1d99ull }}, {{ 0xd8e427945e31ef77ull, 0xa77a1df58c83188eull, 0x6cb1da0349e97695ull, 0x3789c861ffc7db4bull, 0xc82005be75f2aa3eull, 0x8c993074d5052801ull }}, {{ 0x78e98bcbadf35aaaull, 0x8ac52b977d1ef594ull, 0x3ef28420e31ea1d8ull, 0x2b61d3d3fdce90f2ull, 0xd14039709b7aa66eull, 0x7dfbe49052339011ull }}, {{ 0xb91f75f4cb818aa3ull, 0x6bb3b3eae33597ccull, 0x75792948df325275ull, 0xb1d24647ea11a976ull, 0x2c823e6612ca804dull, 0xebd6eda33603a0b2ull }}, {{ 0x3b3a9b8ff30f6a61ull, 0x3505072ce017edffull, 0x96bb9cd8b7f73896ull, 0xf236becf24b09ea0ull, 0xbd166ffcbbe90308ull, 0x366548601c2446f5ull }}, {{ 0x504a139f7e9a27c6ull, 0x123247c0c0ef4bf8ull, 0xe35420772fa835deull, 0x762374176ee63245ull, 0x62e05fdf571a1e59ull, 0x1ff4d3c1196ac599ull }}, {{ 0x22e4c43af2058db8ull, 0xb5f6cd878958f7b3ull, 0xe14944a7dc921aacull, 0x9d6288ea54fdf6baull, 0xdcc3beb967052f7eull, 0x3f90458afe2bb7fdull }}, {{ 0x5cefaa4d7437892full, 0x1ba4074b5d79acffull, 0xccdcae8e9db50abfull, 0x25d9592751eba34cull, 0x9fa5733e0633daf2ull, 0x7ba2b76dedb52feaull }}, {{ 0xa15ca7068a2b5bd3ull, 0x146848f1a6c0c1f9ull, 0x009ed19229126b77ull, 0x7a7d7b8933346100ull, 0x3c76806c3e068d75ull, 0xd45b2a4b4913df2aull }}, {{ 0x4d9e864165b1963aull, 0xcc12d970838793c0ull, 0x06342fb59ab832a6ull, 0xc8e6d35c000bca00ull, 0x5ca1043a6c418696ull, 0x4b8fa6f0dac6b7a6ull }}, {{ 0x08313e8df8efde45ull, 0xf8bc7e65234bc583ull, 0x3e09dd180b31fa83ull, 0xd90441980075e400ull, 0x9e4a2a483a8f41e3ull, 0xf39c85688bc32c7full }}, {{ 0x51ec718bb95eaeb4ull, 0xb75ceff360f5b71eull, 0x6c62a2f06ff3c927ull, 0x7a2a8ff0049ae802ull, 0x2ee5a6d2499892e6ull, 0x841d3615759fbcfcull }}, {{ 0x333c6f753db2d306ull, 0x29a15f81c999272full, 0x3bda5d645f85db8dull, 0xc5a99f602e0d1018ull, 0xd4f88436dff5bd00ull, 0x29241cd6983d61d9ull }}, {{ 0x005c5a9468fc3e3full, 0xa04dbb11dffb87d8ull, 0x5687a5ebbb3a9383ull, 0xb8a039c1cc82a0f2ull, 0x51b52a24bf996207ull, 0x9b692061f265d282ull }}, {{ 0x039b89cc19da6e7bull, 0x43094eb2bfd34e70ull, 0x614c7b355049c324ull, 0x36424191fd1a4977ull, 0x3113a56f7bfdd44dull, 0x121b43d377fa3917ull }}, {{ 0x241361f9028850c9ull, 0x9e5d12fb7e411060ull, 0xccfcd01522e19f6aull, 0x1e968fb3e306dea9ull, 0xeac4765ad7ea4b04ull, 0xb510a642afc63ae7ull }}, {{ 0x68c1d3ba195327ddull, 0x2fa2bdd2ee8aa3c1ull, 0x01e020d35cd03a2aull, 0x31e19d06de44b2a2ull, 0x2bac9f8c6f26ee29ull, 0x12a67e9addbe4d0full }}, {{ 0x17924544fd3f8ea2ull, 0xdc5b6a3d516a658eull, 0x12c14841a02245a5ull, 0xf2d02244aeaefa54ull, 0xb4be3b7c57854d9bull, 0xba80f20ca96f0297ull }}, {{ 0xebb6b4b1e47b9252ull, 0x9b9226652e27f78cull, 0xbb8cd2904156b87aull, 0x7c2156aed2d5c748ull, 0x0f6e52db6b350817ull, 0x4909747e9e5619edull }}, {{ 0x35230ef2ecd3b738ull, 0x13b57ff3cd8fab81ull, 0x538039a28d6334caull, 0xd94d62d43c59c8d7ull, 0x9a4f3c92301250eaull, 0xda5e8cf22f5d0342ull }}, {{ 0x135e957d4045282cull, 0xc516ff86079cb30cull, 0x4302405985e00fe4ull, 0x7d05dc4a5b81d869ull, 0x07185db5e0b7292cull, 0x87b18175d9a2209aull }}, {{ 0xc1b1d6e482b391bbull, 0xb2e5fb3c4c1efe78ull, 0x9e16837f3ac09eefull, 0xe23a9ae79312741cull, 0x46f3a91ac7279bbcull, 0x4cef0e9a80554604ull }}, {{ 0x90f264ed1b03b14bull, 0xfcfbd05af935f0b7ull, 0x2ce122f84b86355cull, 0xd64a0d0bbeb8891eull, 0xc5849b0bc78c1560ull, 0x015692090354bc2aull }}, {{ 0xa977f1430e24ecebull, 0xe1d6238dbc1b672bull, 0xc0cb5db2f33e15a1ull, 0x5ee4827573355b2dull, 0xb72e0e75cb78d5c8ull, 0x0d61b45a214f59abull }}, {{ 0x9eaf6c9e8d714132ull, 0xd25d6389591207b4ull, 0x87f1a8fd806cd852ull, 0xb4ed189680158fc9ull, 0x27cc9099f2b859d3ull, 0x85d10b854d1980b5ull }}, {{ 0x32da3e31866c8bf7ull, 0x37a5e35d7ab44d0eull, 0x4f7099e70440733cull, 0x1142f5e100d79ddfull, 0x8dfda6037b338245ull, 0x3a2a733502ff0713ull }}, {{ 0xfc866def403d77a5ull, 0x2c7ae1a6cb0b028dull, 0x1a6603062a84805aull, 0xac9d9aca086c2ab9ull, 0x8be87c22d00316b2ull, 0x45a880121df646c3ull }}, {{ 0xdd404b588266ac72ull, 0xbcccd083ee6e198bull, 0x07fc1e3da92d0385ull, 0xbe280be45439ab3bull, 0x7714d95c201ee2faull, 0xb89500b52b9ec3a3ull }}, {{ 0xa482f1751802bc75ull, 0x60002527504cff76ull, 0x4fd92e689bc22339ull, 0x6d9076eb4a40b04eull, 0xa6d07d994134ddcbull, 0x35d20713b433a462ull }}, {{ 0x6d1d6e92f01b5c95ull, 0xc00173892301faa2ull, 0x1e7bd0161595603dull, 0x47a4a530e686e30full, 0x8424e7fc8c10a9f2ull, 0x1a3446c50a046bdaull }}, {{ 0x432651bd61119dceull, 0x800e835b5e13ca58ull, 0x30d620dcd7d5c269ull, 0xcc6e73e90144de97ull, 0x29710fdd78a6a376ull, 0x060ac3b2642c3689ull }}, {{ 0x9f7f3165cab02a0cull, 0x00912191acc5e772ull, 0xe85d48a06e59981full, 0xfc50871a0cb0b1e7ull, 0x9e6a9ea6b68262a3ull, 0x3c6ba4f7e9ba215bull }}, {{ 0x3af7edf9eae1a479ull, 0x05ab4fb0bfbb0a7aull, 0x13a4d6444f7ff136ull, 0xdb2547047ee6f30full, 0x302a32832117da67ull, 0x5c3471af21454d94ull }}, {{ 0x4daf4bc32cd06cb9ull, 0x38b11ce77d4e68c6ull, 0xc4705eab1aff6c1cull, 0x8f74c62cf5057e96ull, 0xe1a5f91f4aee880eull, 0x9a0c70d74cb507c9ull }}, {{ 0x08d8f59fc0243f3dull, 0x36eb210ae51017bfull, 0xac63b2af0dfa391aull, 0x9a8fbdc19236f1e3ull, 0xd07bbb38ed515091ull, 0x047c6868ff124de2ull }}, {{ 0x5879983d816a7864ull, 0x252f4a6cf2a0ed76ull, 0xbbe4fad68bc63b06ull, 0x099d698fb62572e4ull, 0x24d55039452d25b0ull, 0x2cdc1419f6b70adcull }}, {{ 0x74bff2670e28b3ecull, 0x73d8e8417a49469full, 0x56f1cc6175be4e3dull, 0x60261f9d1d767cefull, 0x7055223cb3c378e0ull, 0xc098c903a3266c99ull }}, {{ 0x8f7f78068d970736ull, 0x8679128ec6dcc23aull, 0x6571fbce996f0e66ull, 0xc17d3c2326a0e159ull, 0x6353565f05a2b8c3ull, 0x85f7da245f803dfeull }}, {{ 0x9afab04187e6481dull, 0x40bab993c49f9649ull, 0xf673d611fe569001ull, 0x8ee4595f8248cd7dull, 0xe1415fb6385b37a5ull, 0x3bae856bbb026befull }}, {{ 0x0dcae28f4efed11full, 0x874b3fc5ae3bdee0ull, 0xa0865cb3ef61a00cull, 0x94eb7dbb16d806ebull, 0xcc8dbd1e33902c77ull, 0x54d136354e18375eull }}, {{ 0x89ecd99915f42b38ull, 0x48f07db8ce56b4c0ull, 0x453f9f0759d0407dull, 0xd132e94ee4704534ull, 0xfd89632e03a1bcabull, 0x502c1e150cf229b3ull }}, {{ 0x63407ffadb89b033ull, 0xd964e9380f630f85ull, 0xb47c3649822284e4ull, 0x2bfd1d14ec62b40aull, 0xe75ddfcc24515eb6ull, 0x21b92cd28175a107ull }}, {{ 0xe084ffcc9360e1fcull, 0x7df11c3099de9b35ull, 0x0cda1edf155930f0ull, 0xb7e322d13bdb086bull, 0x09aabdf96b2db31dull, 0x513bc0390e984a4full }}, {{ 0xc531fdfdc1c8d3d8ull, 0xeb6b19e602b2101aull, 0x808534b6d57be964ull, 0x2edf5c2c568e542eull, 0x60ab6bbe2fc8ff29ull, 0x2c55823a91f2e716ull }}, {{ 0xb3f3ebe991d8466cull, 0x322f02fc1af4a10bull, 0x05340f2456d71df1ull, 0xd4b999bb618f49d1ull, 0xc6b2356dddd9f79bull, 0xbb571649b37d06dfull }}, {{ 0x0787371fb272c036ull, 0xf5d61dd90d8e4a75ull, 0x3408976b64672b6bull, 0x4f400151cf98e22aull, 0xc2f6164aaa83ac16ull, 0x5166dee102e244bdull }}, {{ 0x4b48273cf87b8220ull, 0x9a5d2a7a878ee892ull, 0x0855ea31ec07b237ull, 0x18800d321bf8d5a6ull, 0x9d9cdeeaa924b8dfull, 0x2e04b4ca1cd6af69ull }}, {{ 0xf0d18861b4d31544ull, 0x07a3a8c94b9515b6ull, 0x535b25f3384cf62cull, 0xf50083f517b8587cull, 0x2820b52a9b6f38b6ull, 0xcc2f0fe52062da20ull }}, {{ 0x682f53d1103ed4a7ull, 0x4c6497dcf3d2d925ull, 0x418f7b8033019db8ull, 0x92052792ed3374dbull, 0x914713aa12583725ull, 0xf9d69ef343dc8541ull }}, {{ 0x11d9462aa2744e83ull, 0xfbedeea1863c7b76ull, 0x8f9ad301fe102932ull, 0xb4338bbd44029090ull, 0xacc6c4a4b7722777ull, 0xc2623580a69d348full }}, {{ 0xb27cbdaa588b1122ull, 0xd74b524f3e5cd29cull, 0x9c0c3e13eca19bfdull, 0x0a037564a819a5a5ull, 0xbfc3ae6f2a758aadull, 0x97d6170682240d9cull }}, {{ 0xf8df68a7756eab53ull, 0x68f137186fa03a1eull, 0x187a6cc73e5017eaull, 0x642295ee91007878ull, 0x7da4d057a8976ac2ull, 0xee5ce6411568881full }}, {{ 0xb8ba168a9652b13full, 0x196c26f45c424535ull, 0xf4c83fc86f20ef28ull, 0xe959db51aa04b4b0ull, 0xe870236c95ea2b97ull, 0x4fa0fe8ad615513aull }}, {{ 0x3744e169df3aec72ull, 0xfe39858b9a96b419ull, 0x8fd27dd457495790ull, 0x1d829130a42f0ee9ull, 0x1461623ddb25b3efull, 0x1c49f16c5cd52c4dull }}, {{ 0x28b0ce22b84d3c78ull, 0xee3f377409e308fcull, 0x9e38ea4b68dd6ba9ull, 0x2719abe669d6951full, 0xcbcdd66a8f790757ull, 0x1ae36e3ba053bb02ull }}, {{ 0x96e80d5b33045cacull, 0x4e782a8862de59d9ull, 0x2e3926f218a634a3ull, 0x8700b7002261d33cull, 0xf60a60299aba4967ull, 0x0ce24e5443454e1bull }}, {{ 0xe510858ffe2b9eb6ull, 0x10b1a953dcaf827full, 0xce3b8574f67e0e61ull, 0x4607260157d24059ull, 0x9c67c1a00b46de0bull, 0x80d70f4aa0b50d17ull }}, {{ 0xf2a5379fedb4331full, 0xa6f09d469edb18feull, 0x0e533691a0ec8fcaull, 0xbc477c0d6e368382ull, 0x1c0d904070c4ac70ull, 0x086698ea471282ecull }}, {{ 0x7a742c3f4909ff35ull, 0x856624c2348ef9f5ull, 0x8f4021b0493d9deaull, 0x5acad8864e212314ull, 0x1887a28467aebc67ull, 0x5401f926c6b91d39ull }}, {{ 0xc889ba78da63f80dull, 0x35fd6f960d95c396ull, 0x988150e2dc682b29ull, 0x8bec753f0d4b5ecdull, 0xf54c592c0cd35c09ull, 0x4813bb83c33b243aull }}, {{ 0xd56148b887e7b086ull, 0x1be65bdc87d9a3e3ull, 0xf50d28dc9c11af9cull, 0x773c947684f1b407ull, 0x94fb7bb88041985full, 0xd0c55325a04f6a4dull }}, {{ 0x55ccd7354f0ce53full, 0x16ff969d4e8066e6ull, 0x9283989e18b0dc19ull, 0xa85dcca13171084full, 0xd1d2d535028ff3baull, 0x27b53f78431a2707ull }}, {{ 0x5a0068151680f479ull, 0xe5fbe225110404ffull, 0xb923f62cf6e898faull, 0x93a9fe4bee6a531bull, 0x323c5412199f854aull, 0x8d147ab29f05864eull }}, {{ 0x840410d2e1098cb6ull, 0xfbd6d572aa2831f9ull, 0x3b679dc1a515f9ccull, 0xc4a3eef750273f15ull, 0xf65b48b5003b34e9ull, 0x82cccafa36373f0dull }}, {{ 0x2828a83cca5f7f1eull, 0xd664567aa591f3bfull, 0x520c299072dbc201ull, 0xae6755a9218876d4ull, 0x9f90d71202501121ull, 0x1bffedc61e28768bull }}, {{ 0x9196925fe7baf730ull, 0x5feb60ca77b38577ull, 0x34799fa47c959412ull, 0xd009589b4f54a44bull, 0x3ba866b41720ab50ull, 0x17ff49bd2d94a174ull }}, {{ 0xafe1b7bf0d4da7e5ull, 0xbf31c7e8ad0336abull, 0x0cc03c6cddd7c8b7ull, 0x205d7611194e6af0ull, 0x54940308e746b128ull, 0xeff8e163c7ce4e8aull }}, {{ 0xded12d7685088ef2ull, 0x77f1cf16c22022b4ull, 0x7f825c40aa6dd72dull, 0x43a69caafd102d60ull, 0x4dc81e5908c2eb91ull, 0x5fb8cde5ce0f1167ull }}, {{ 0xb42bc6a132559570ull, 0xaf7216e395415b10ull, 0xfb179a86a84a67c6ull, 0xa4821eade2a1c5c4ull, 0x09d12f7a579d33acull, 0xbd380afa0c96ae09ull }}, {{ 0x09b5c24bf757d664ull, 0xda74e4e3d48d8ea7ull, 0xceec094292e80dc2ull, 0x6d1532cada51b9b1ull, 0x622bdac76c2404beull, 0x64306dc47de2cc5aull }}, {{ 0x611996f7a96e5fe4ull, 0x8890f0e64d879286ull, 0x15385c99bd10899cull, 0x42d3fbec873140f2ull, 0xd5b68bca39682f70ull, 0xe9e449aceadbfb87ull }}, {{ 0xcaffe5ac9e4fbee7ull, 0x55a968ff074bb93full, 0xd4339e0162a5601dull, 0x9c47d73d47ec8974ull, 0x592175e63e11da62ull, 0x22eae0c12c97d34eull }}, {{ 0xedfef8be2f1d7505ull, 0x589e19f648f53c7dull, 0x4a042c0dda75c125ull, 0x1ace6864cf3d5e90ull, 0x7b4e9afe6cb287daull, 0x5d2cc78bbdee410full }}, {{ 0x4bf5b76dd7269234ull, 0x762d039ed9945cebull, 0xe429b88a88998b75ull, 0x0c1013f01865b1a2ull, 0xd1120df03ef94e85ull, 0xa3bfcb756b4e8a9aull }}, {{ 0xf7992a4a6781b60bull, 0x9dc224347fcba130ull, 0xe9a1356955ff7296ull, 0x78a0c760f3f8f05cull, 0x2ab48b6275bd1132ull, 0x657df29631116a0cull }}, {{ 0xabfba6e80b111c6aull, 0x29956a0cfdf44be9ull, 0x204c161d5bfa79e2ull, 0xb647c9c987b963a1ull, 0xab0d71d89962abf8ull, 0xf6eb79ddeaae2479ull }}, {{ 0xb7d485106eab1c21ull, 0x9fd62481eb8af720ull, 0x42f8dd2597c8c2d5ull, 0x1ecde1df4d3de44bull, 0xae867275fddab7b7ull, 0xa532c2ab2acd6cc0ull }}, {{ 0x2e4d32a452af1947ull, 0x3e5d6d13336da747ull, 0x9db8a377edd79c58ull, 0x340ad2b9046aeaf0ull, 0xd140789bea8b2d27ull, 0x73fb9aafac063f86ull }}, {{ 0xcf03fa6b3ad6fcc5ull, 0x6fa642c0024888c7ull, 0x293662af4a6c1b72ull, 0x086c3b3a2c2d2d66ull, 0x2c84b617296fc388ull, 0x87d40adcb83e7b44ull }}, {{ 0x1627c8304c65dfb6ull, 0x5c7e9b8016d557ceull, 0x9c1fdad8e8391278ull, 0x543a5045b9c3c5fdull, 0xbd2f1ce79e5da350ull, 0x4e486c9f3270d0a9ull }}, {{ 0xdd8dd1e2fbfabd19ull, 0x9cf21300e4556e0cull, 0x193e8c79123ab8b3ull, 0x4a4722b941a5bbe8ull, 0x63d7210c2fa86123ull, 0x0ed43e37f86826a1ull }}, {{ 0xa78a32ddd7cb62f8ull, 0x2174be08eb564c80ull, 0xfc717cbab64b3704ull, 0xe6c75b3c90795710ull, 0xe6674a79dc93cb60ull, 0x944a6e2fb411824dull }}, {{ 0x8b65fcaa6df1ddafull, 0x4e8f6c59315efd06ull, 0xdc6edf4b1ef02629ull, 0x03c9905da4bd66a9ull, 0x0008e8c29dc5f1c9ull, 0xcae84ddd08af170bull }}, {{ 0x71fbdea84b72a8d6ull, 0x119a3b7bedb5e241ull, 0x9c54b8ef35617d9dull, 0x25dfa3a86f6602a2ull, 0x0059179a29bb71daull, 0xed130aa256d6e66eull }}, {{ 0x73d6b292f27a9861ull, 0xb00652d7491ad68eull, 0x1b4f395815cee822ull, 0x7abc649459fc1a5aull, 0x037aec05a1527285ull, 0x42be6a576465004cull }}, {{ 0x8662f9bd78c9f3c6ull, 0xe03f3c68db0c6190ull, 0x11183d70da15115aull, 0xcb5bedcb83d90785ull, 0x22cd38384d387936ull, 0x9b702769ebf202f8ull }}, {{ 0x3fddc166b7e385c0ull, 0xc2785c188e7bcfa5ull, 0xaaf2666884d2ad8cull, 0xf19749f3267a4b32ull, 0x5c0432330434bc23ull, 0x12618a2337741db1ull }}, {{ 0x7ea98e032ee3397bull, 0x98b398f590d61c74ull, 0xad780015303ac77full, 0x6fe8e37f80c6effaull, 0x9829f5fe2a0f5967ull, 0xb7cf65602a8928edull }}, {{ 0xf29f8c1fd4e03ecfull, 0xf703f997a85d1c8cull, 0xc6b000d3e24bcafbull, 0x5f18e2fb07c55fcaull, 0xf1a39beda4997e0aull, 0x2e19f5c1a95b9947ull }}, {{ 0x7a3b793e50c2741aull, 0xa627bfec93a31d81ull, 0xc2e00846d6f5edd7ull, 0xb6f8ddce4db5bdebull, 0x706417486dfeec67ull, 0xcd0399909d93fccfull }}, {{ 0xc652bc6f279888ffull, 0x7d8d7f3dc45f270eull, 0x9cc052c4659b4a6cull, 0x25b8aa0f09196b35ull, 0x63e8e8d44bf53c0dull, 0x0223ffa627c7e01aull }}, {{ 0xbf3b5c578bf559f9ull, 0xe786f869abb78693ull, 0x1f833babf810e83cull, 0x7936a4965afe3018ull, 0xe719184af7945883ull, 0x1567fc7d8dcec107ull }}, {{ 0x78519b6b779583baull, 0x0b45b420b52b41c5ull, 0x3b2054b7b0a91261ull, 0xbc226ddf8dede0f1ull, 0x06faf2edabcb7522ull, 0xd60fdce78a138a4full }}, {{ 0xb3301232abd72543ull, 0x70b9094713b091b6ull, 0x4f434f2ce69ab7caull, 0x59584abb8b4ac96cull, 0x45cd7d48b5f2935bull, 0x5c9ea10b64c36716ull }}, {{ 0xffe0b5fab667749eull, 0x673a5cc6c4e5b122ull, 0x18a117c1020b2de8ull, 0x7d72eb5370ebde3bull, 0xba06e4d71b79c191ull, 0x9e324a71efa206deull }}, {{ 0xfec71bcb200a8e2cull, 0x08479fc3b0f8eb5dull, 0xf64aed8a146fcb14ull, 0xe67d31426936ae4eull, 0x4444f06712c18faeull, 0x2df6e8735c5444b3ull }}, {{ 0xf3c715ef40698dbaull, 0x52cc3da4e9b931abull, 0x9eed4764cc5deec8ull, 0x00e3ec981c22cf15ull, 0xaab16406bb8f9cd5ull, 0xcba514819b4aaf00ull }}, {{ 0x85c6db58841f8943ull, 0x3bfa6871213bf0b7ull, 0x3544c9effbab53d3ull, 0x08e73df1195c16d8ull, 0xaaede843539c2052ull, 0xf472cd1010ead606ull }}, {{ 0x39c49175293b5c9eull, 0x57c8146b4c57672bull, 0x14afe35fd4b14640ull, 0x59086b6afd98e472ull, 0xad4b12a144194334ull, 0x8c7c02a0a92c5c42ull }}, {{ 0x41adae939c519e2bull, 0x6dd0cc30fb6a07b0ull, 0xcedee1be4eecbe83ull, 0x7a54322de7f8ec74ull, 0xc4eeba4ca8fca00bull, 0x7cd81a469bbb9a9aull }}, {{ 0x90c8d1c41b302dafull, 0x4a27f9e9d2244ce2ull, 0x14b4d16f153f7122ull, 0xc749f5cb0fb93c90ull, 0xb15346fe99de4072ull, 0xe07106c215540a0bull }}, {{ 0xa7d831a90fe1c8d8ull, 0xe58fc322356b00d9ull, 0xcf102e56d47a6b56ull, 0xc8e399ee9d3c5da0ull, 0xed40c5f202ae847bull, 0xc46a4394d5486474ull }}, {{ 0x8e71f09a9ed1d871ull, 0xf79d9f56162e0880ull, 0x16a1cf644cc83164ull, 0xd8e40352245ba848ull, 0x4487bb741ad12cd5ull, 0xac26a3d054d3ec91ull }}, {{ 0x9073660a34327469ull, 0xac28395cddcc5505ull, 0xe25219eaffd1edf1ull, 0x78e821356b9492d0ull, 0xad4d52890c2bc05aull, 0xb982662350473dacull }}, {{ 0xa481fc6609f88c1dull, 0xb9923da0a9fb5237ull, 0xd735032dfe334b70ull, 0xb9114c1633cdbc28ull, 0xc505395a79b58388ull, 0x3f17fd6122c868beull }}, {{ 0x6d13dbfc63b5791full, 0x3fb66846a3d1362cull, 0x68121fcbee00f267ull, 0x3aacf8de06095998ull, 0xb2343d88c1172357ull, 0x76efe5cb5bd41773ull }}, {{ 0x42c697dbe516bb39ull, 0x7d2012c2662c1dbcull, 0x10b53df74c097808ull, 0x4ac1b8ac3c5d7ff4ull, 0xf60a67578ae76168ull, 0xa55ef9f19648ea84ull }}, {{ 0x9bc1ee96f2e3503aull, 0xe340bb97fdb9295aull, 0xa7146ba8f85eb054ull, 0xeb9136ba5ba6ff88ull, 0x9c68096b6d09ce12ull, 0x75b5c36fded92931ull }}, {{ 0x159351e57ce12247ull, 0xe08753efe93b9d8aull, 0x86cc3499b3b2e350ull, 0x33ac23479485fb56ull, 0x1c105e3242620cbdull, 0x9919a25eb47b9bf0ull }}, {{ 0xd7c132f6e0cb56c6ull, 0xc549475f1c542764ull, 0x43fa0e0104fce128ull, 0x04b960cbcd3bd161ull, 0x18a3adf697d47f64ull, 0xfb0057b30cd41761ull }}, {{ 0x6d8bfda4c7f163bfull, 0xb4dcc9b71b4989f0ull, 0xa7c48c0a31e0cb97ull, 0x2f3dc7f604562dccull, 0xf664cba1ee4cf9e8ull, 0xce036cfe8048e9caull }}, {{ 0x4777e86fcf6de578ull, 0x109fe12710df6364ull, 0x8dad7865f2c7f3edull, 0xd869cf9c2b5dc9feull, 0x9feff4534f01c311ull, 0x0c2241f102d921edull }}, {{ 0xcaaf145e1a4af6aeull, 0xa63ecb86a8b9e1eaull, 0x88c6b3fb7bcf8742ull, 0x74221c19b1a9e3f1ull, 0x3f5f8b4116119eb2ull, 0x7956936a1c7b5348ull }}, {{ 0xead6cbad06eda2caull, 0x7e73f3429742d32bull, 0x57c307d2d61b489aull, 0x89551900f0a2e76full, 0x79bb708adcb032f8ull, 0xbd61c2251cd140d2ull }}, {{ 0x2c63f4c245485be9ull, 0xf0878099e89c3fb7ull, 0x6d9e4e3c5d10d608ull, 0x5d52fa09665d0a59ull, 0xc152656c9ee1fdb5ull, 0x65d19573202c8838ull }}, {{ 0xbbe78f96b4d39716ull, 0x654b0603161a7d27ull, 0x482f0e5ba2a85c59ull, 0xa53dc45dffa2677eull, 0x8d37f63e34d3e915ull, 0xfa2fd67f41bd5237ull }}, {{ 0x570b9be31043e6d9ull, 0xf4ee3c1edd08e38dull, 0xd1d68f945a939b7dull, 0x7469ababfc580aeeull, 0x842f9e6e10471ad8ull, 0xc5de60f89165362bull }}, {{ 0x667416dea2a7047bull, 0x914e5934a258e385ull, 0x32619bcb89c412ebull, 0x8c20b4b7db706d54ull, 0x29dc304ca2c70c74ull, 0xbaafc9b5adf41db3ull }}, {{ 0x0088e4b25a862cd0ull, 0xad0f7c0e5778e336ull, 0xf7d015f361a8bd33ull, 0x79470f2e92644549ull, 0xa299e2fe5bc67c8dull, 0x4adde118cb8928ffull }}, {{ 0x0558eef7893dc023ull, 0xc29ad88f6ab8e01cull, 0xae20db81d0976404ull, 0xbcc697d1b7eab4e3ull, 0x5a02ddef95c0dd86ull, 0xecaacaf7f35b99fcull }}, {{ 0x357955ab5c698162ull, 0x9a0c759a2b38c118ull, 0xcd48931225e9e82full, 0x5fc1ee312f2b10e4ull, 0x841cab5bd988a743ull, 0x3eabedaf819403dbull }}, {{ 0x16bd58b19c1f0dd0ull, 0x047c9805b0378af2ull, 0x04d5beb57b2311dcull, 0xbd934debd7aea8f0ull, 0x291eb1967f5688a1ull, 0x72b748db0fc82693ull }}, {{ 0xe36576f019368a21ull, 0x2cddf038e22b6d74ull, 0x30597316cf5eb298ull, 0x67c10b366cd29960ull, 0x9b32efe0f9615651ull, 0x7b28d88e9dd181bfull }}, {{ 0xe1f6a560fc21654bull, 0xc0ab6238d5b24690ull, 0xe37e7ee419b2f9f1ull, 0x0d8a70204039fdc1ull, 0x0ffd5ec9bdcd5f2eull, 0xcf9875922a2f117cull }}, {{ 0xd3a275c9d94df4eeull, 0x86b1d63858f6c1a8ull, 0xe2f0f4e900fdc371ull, 0x876861428243e992ull, 0x9fe5b3e16a05b7ccull, 0x1bf497b5a5d6aed8ull }}, {{ 0x445899e27d0b914dull, 0x42f25e3379a39098ull, 0xdd69911a09e9a26full, 0x4a13cc9916a71fbcull, 0x3ef906ce24392dfdull, 0x178ded187a62d476ull }}, {{ 0xab7602d8e273ad06ull, 0x9d77ae02c063a5f2ull, 0xa61fab0463205858ull, 0xe4c5fdfae2873d60ull, 0x75ba440d6a3bcbe4ull, 0xeb8b42f4c7dc4c9eull }}, {{ 0xb29c1c78d884c241ull, 0x26accc1b83e47b7aull, 0x7d3cae2bdf437376ull, 0xefbbebccd94865c6ull, 0x9946a8862655f6f0ull, 0x33709d8fce9afe30ull }}, {{ 0xfa191cb8752f968aull, 0x82bff91326ecd2caull, 0xe45ecdb6b8a2829dull, 0x5d5736007cd3f9c0ull, 0xfcc2953d7f5ba569ull, 0x0266279e120dede5ull }}, {{ 0xc4fb1f3493dbe162ull, 0x1b7fbabf85403bedull, 0xebb4092336591a27ull, 0xa5681c04e047c188ull, 0xdf99d466f994761dull, 0x17fd8c2cb48b4afbull }}, {{ 0xb1cf380dc696cdd2ull, 0x12fd4b7b34825749ull, 0x35085b601f7b0587ull, 0x76111830c2cd8f59ull, 0xbc024c05bfcc9d28ull, 0xefe779bf0d70edd6ull }}, {{ 0xf2183089c1e40a2full, 0xbde4f2d00d1768e0ull, 0x125391c13ace3746ull, 0x9caaf1e79c07997cull, 0x5816f8397dfe2394ull, 0x5f0ac17686694a63ull }}, {{ 0x74f1e56192e865daull, 0x6af17c2082ea18c9ull, 0xb743b18c4c0e28c3ull, 0x1ead730c184bfed8ull, 0x70e5b23eebed63ceull, 0xb66b8ea1401ce7e1ull }}, {{ 0x9172f5cfbd13fa81ull, 0x2d6ed9451d24f7deull, 0x28a4ef7af88d97a2ull, 0x32c67e78f2f7f477ull, 0x68f8f6753745e60dull, 0x2033924c81210eceull }}, {{ 0xae7d9a1d62c7c90eull, 0xc6547cb32371aeb1ull, 0x96715acdb587ec55ull, 0xfbc0f0b97daf8ca7ull, 0x19b9a09428bafc83ull, 0x4203b6fd0b4a9410ull }}, {{ 0xd0e80525dbcdda89ull, 0xbf4cdeff6270d2f0ull, 0xe06d8c09174f3b59ull, 0xd589673ee8db7e8bull, 0x014045c9974ddd27ull, 0x942525e270e9c8a1ull }}, {{ 0x2910337a960a8958ull, 0x7900b5f9d8683d68ull, 0xc447785ae9185181ull, 0x575e08751892f176ull, 0x0c82b9dfe90aa38eull, 0xc9737ad86921d64aull }}, {{ 0x9aa202c9dc695d6eull, 0xba071bc274126611ull, 0xaacab38d1af32f0eull, 0x69ac5492f5bd6ea3ull, 0x7d1b42bf1a6a638full, 0xde82cc741b525ee4ull }}, {{ 0x0a541be29c1da64cull, 0x4447159888b7fcb0ull, 0xabeb03830d7fd693ull, 0x20bb4dbd99665264ull, 0xe3109b770827e39aull, 0xb11bfc891137b4ecull }}, {{ 0x674916da19287efbull, 0xaac6d7f5572fdee0ull, 0xb72e231e86fe61c0ull, 0x47510967fdff37eeull, 0xdea612a6518ee405ull, 0xeb17dd5aac2d1140ull }}, {{ 0x08dae484fb94f5ceull, 0xabc46f9567deb4c4ull, 0x27cd5f3145efd186ull, 0xc92a5e0febf82f53ull, 0xb27cba7f2f94e834ull, 0x2eeea58ab9c2ac88ull }}, {{ 0x588ced31d3d19a0dull, 0xb5ac5bd60eb30fa8ull, 0x8e05b7ecbb5e2f42ull, 0xdba7ac9f37b1d93full, 0xf8df48f7dbd1120full, 0xd552776b419abd56ull }}, {{ 0x758143f246300486ull, 0x18bb965c92fe9c93ull, 0x8c392f3f51add89bull, 0x948cbe382cf27c7bull, 0xb8b8d9ae962ab49eull, 0x5538aa30900b6565ull }}, {{ 0x970ca776bde02d3eull, 0xf753df9dbdf21dc2ull, 0x7a3bd87930ca760eull, 0xcd7f6e31c178dcd3ull, 0x373880d1ddab0e31ull, 0x5436a5e5a071f5f9ull }}, {{ 0xe67e8aa36ac1c46full, 0xa946bc296b752999ull, 0xc65674bbe7e89c95ull, 0x06fa4df18eb8a042ull, 0x28350832a8ae8df2ull, 0x4a227af844739bbcull }}, {{ 0x00f16a622b91ac52ull, 0x9cc3599e3293a003ull, 0xbf608f570f161dd8ull, 0x45c70b6f9336429bull, 0x921251fa96d18b74ull, 0xe558cdb2ac841559ull }}, {{ 0x096e27d5b3b0bb36ull, 0x1fa1802df9c4401eull, 0x79c5996696dd2a76ull, 0xb9c6725bc01e9a15ull, 0xb4b733c9e42f728aull, 0xf57808fabd28d57full }}, {{ 0x5e4d8e5904e7501bull, 0x3c4f01cbc1aa812cull, 0xc1b7fe01e4a3a89dull, 0x41c07795813204d6ull, 0x0f2805e2e9da796bull, 0x96b059cb639856fdull }}, {{ 0xaf078f7a3109210cull, 0x5b1611f590a90bbbull, 0x912fec12ee649624ull, 0x9184abd70bf43063ull, 0x97903add2288be30ull, 0xe2e381f1e3f365e2ull }}, {{ 0xd64b9ac5ea5b4a74ull, 0x8edcb397a69a7554ull, 0xabdf38bd4feddd6bull, 0xaf2eb6667789e3e3ull, 0xeba24ca359576de5ull, 0xdce31372e781fad9ull }}, {{ 0x5ef40bbb2790e885ull, 0x949f03ec82089550ull, 0xb6b837651f4aa633ull, 0xd7d32000ab62e6e4ull, 0x3456fe617d6a4af8ull, 0xa0dec27d0b13cc83ull }}, {{ 0xb588754f8ba91536ull, 0xce36273d1455d523ull, 0x233229f338ea7e03ull, 0x6e3f4006b1dd04efull, 0x0b65efcee626edb8ull, 0x48b398e26ec5fd20ull }}, {{ 0x1754951b749ad41bull, 0x0e1d8862cb5a5365ull, 0x5ff5a3803928ec26ull, 0x4e788042f2a23157ull, 0x71fb5e14fd854934ull, 0xd703f8d853bbe340ull }}, {{ 0xe94dd3128e0c490cull, 0x8d2753dbf18741f2ull, 0xbf9863023b99397cull, 0x10b5029d7a55ed69ull, 0x73d1acd1e734dc0bull, 0x6627b8734556e084ull }}, {{ 0x1d0a3eb98c7ada7dull, 0x838946976f48937dull, 0x7bf3de1653fc3eddull, 0xa7121a26c75b4621ull, 0x8630c0330810986eull, 0xfd8d3480b564c52cull }}, {{ 0x2266733f7ccc88e2ull, 0x235cc1ea58d5c2e3ull, 0xd786acdf47da74a7ull, 0x86b50583c990bd4eull, 0x3de781fe50a5f452ull, 0xe7840d0715efb3bdull }}, {{ 0x5800807adffd58d3ull, 0x619f932778599cdfull, 0x6b42c0b8ce888e87ull, 0x43123725dfa76514ull, 0x6b0b13ef267b8b39ull, 0x0b288246db5d0564ull }}, {{ 0x700504ccbfe57839ull, 0xd03bbf8ab38020b9ull, 0x309b873811559149ull, 0x9eb6277abc89f2ccull, 0x2e6ec75780d3703cull, 0x6f9516c491a235ecull }}, {{ 0x60322fff7ef6b23cull, 0x22557b6b0301473eull, 0xe6134830ad57ace2ull, 0x331d8acb5d637bf9ull, 0xd053c96b0842625eull, 0x5bd2e3adb0561b39ull }}, {{ 0xc1f5dffaf5a2f655ull, 0x5756d22e1e0cc86full, 0xfcc0d1e6c56cc0d5ull, 0xff276bf1a5e2d7c2ull, 0x2345de2e5297d7adull, 0x963ce4c8e35d1042ull }}, {{ 0x939abfcd985d9f4eull, 0x696435cd2c7fd45dull, 0xdf883303b63f8855ull, 0xf78a37707adc6d9dull, 0x60baadcf39ee6ccbull, 0xde60efd8e1a2a295ull }}, {{ 0xc40b7e07f3a83909ull, 0x1dea1a03bcfe4ba7ull, 0xbb51fe251e7b5356ull, 0xab662a64cc9c482aull, 0xc74aca1843503ff7ull, 0xafc95e78d05a59d5ull }}, {{ 0xa872ec4f84923a5full, 0x2b25042561eef48dull, 0x5133ed7330d1415dull, 0xb1fda7effe1ad1abull, 0xc8ebe4f2a1227facull, 0xddddb0b823878259ull }}, {{ 0x947d3b1b2db647b3ull, 0xaf722975d3558d88ull, 0x2c07467fe82c8da3ull, 0xf3e88f5fed0c30b1ull, 0xd936f17a4b58fcbeull, 0xaaa8e731634b1781ull }}, {{ 0xcce44f0fc91ecd01ull, 0xda759e9a41578755ull, 0xb848c0ff11bd8864ull, 0x871599bf4279e6ebull, 0x7c256ec6f179df75ull, 0xaa9907ede0eeeb12ull }}, {{ 0x00eb169ddb340207ull, 0x889832068d6b495aull, 0x32d789f6b16753f0ull, 0x46d8017898c30535ull, 0xd97653c56ec2ba97ull, 0xa9fa4f4ac9552eb8ull }}, {{ 0x092ee22a90081441ull, 0x55f1f4418630dd84ull, 0xfc6b63a2ee094765ull, 0xc4700eb5f79e3413ull, 0x7e9f45b6539b49e8ull, 0xa3c718ebdd53d338ull }}, {{ 0x5bd4d5a9a050ca8full, 0x5b738a8f3de8a728ull, 0xdc31e45d4c5cc9f5ull, 0xac60931bac2e08c7ull, 0xf238b91f4410e317ull, 0x65c6f936a5464034ull }}, {{ 0x965058a04327e992ull, 0x928369986b168793ull, 0x99f2eba4fb9fe395ull, 0xbbc5bf14b9cc57ceull, 0x76373b38a8a8deecull, 0xf9c5bc2274be8211ull }}, {{ 0xdf2376429f8f1fb8ull, 0xb9221ff42ee14bc3ull, 0x037d3471d43ee3d7ull, 0x55b976cf41fb6e12ull, 0x9e2850369698b53full, 0xc1b959588f7114aeull }}, {{ 0xb7629e9a3b973d2full, 0x3b553f89d4ccf5a6ull, 0x22e40c724a74e66dull, 0x593ea41893d24cb4ull, 0x2d932221e1f71479ull, 0x913d7d759a6aced2ull }}, {{ 0x29da320653e863d9ull, 0x51547b6250019883ull, 0x5ce87c76e8910044ull, 0x7c7268f5c636ff09ull, 0xc7bf5552d3a6ccbdull, 0xac66e698082c1435ull }}, {{ 0xa285f43f4713e679ull, 0x2d4cd1d7200ff51full, 0xa114dca515aa02abull, 0xdc781999be25f65dull, 0xcd79553c4483ff66ull, 0xbc0501f051b8ca19ull }}, {{ 0x593b8a78c6c700b8ull, 0xc5003267409f933cull, 0x4ad09e72d8a41aafull, 0x9cb100016d7b9fa8ull, 0x06bd545aad27fa04ull, 0x583213633137e502ull }}, {{ 0x7c5368b7c3c60731ull, 0xb201f808863bc05bull, 0xec26307c76690addull, 0x1eea000e46d43c92ull, 0x43654b8ac38fc42eull, 0x71f4c1dfec2ef214ull }}, {{ 0xdb42172da5bc47eaull, 0xf413b0553e558392ull, 0x397de4dca01a6ca8ull, 0x3524008ec44a5dbdull, 0xa1f4f36ba39da9cdull, 0x738f92bf39d574caull }}, {{ 0x9094e7c8795acf25ull, 0x88c4e3546f5723bcull, 0x3eeaf09e41083e99ull, 0x13680593aae7a964ull, 0x539182346428a204ull, 0x839bbb7842568feaull }}, {{ 0xa5d10dd4bd8c1775ull, 0x57b0e14c5967655dull, 0x752d662e8a5271ffull, 0xc21037c4ad0c9deaull, 0x43af160be9965428ull, 0x241552b297619f27ull }}, {{ 0x7a2a8a4f6778ea91ull, 0x6ce8ccfb7e09f5a8ull, 0x93c5fdd1673873f9ull, 0x94a22daec27e2b28ull, 0xa4d6dc771fdf4997ull, 0x68d53af9e9d03788ull }}, {{ 0xc5a9671a0ab929adull, 0x411801d2ec639894ull, 0xc5bbea2e083487beull, 0xce55c8d398edaf95ull, 0x70649ca73eb8dfebull, 0x18544dc322222b56ull }}, {{ 0xb89e07046b3ba0c3ull, 0x8af0123d3be3f5cfull, 0xb95725cc520d4d6eull, 0x0f59d843f948dbd9ull, 0x63ee1e887338bf36ull, 0xf34b099f5555b160ull }}, {{ 0x362c462c305447a0ull, 0x6d60b66456e79a1dull, 0x3d6779fb34850651ull, 0x998272a7bcd89681ull, 0xe74d31548037781cull, 0x80ee60395558edc3ull }}, {{ 0x1dbabdb9e34acc42ull, 0x45c71feb650c0524ull, 0x660ac3d00d323f2eull, 0xff187a8d6075e10cull, 0x0903ed4d022ab11dull, 0x094fc23d557949a7ull }}, {{ 0x294b6942e0ebfa97ull, 0xb9c73f31f2783369ull, 0xfc6ba62083f677ceull, 0xf6f4c985c49aca7bull, 0x5a27450215aaeb2bull, 0x5d1d966556bce086ull }}, {{ 0x9cf21c9cc937c9e8ull, 0x41c877f378b2021bull, 0xdc347d4527a0ae13ull, 0xa58fdf39ae0be8d7ull, 0x8588b214d8ad2fb7ull, 0xa327dff56360c53full }}, {{ 0x21751e1fdc2de30dull, 0x91d4af82b6f41514ull, 0x9a0ce4b38c46ccc0ull, 0x779eb840cc77186eull, 0x3756f4d076c3dd2cull, 0x5f8ebf95e1c7b47bull }}, {{ 0x4e932d3e99cade7eull, 0xb24edb1b2588d2c9ull, 0x0480ef037ac3ff85ull, 0xac333287fca6f452ull, 0x29659024a3a6a3bcull, 0xbb937bdad1cd0cd0ull }}, {{ 0x11bfc47201ecb0eaull, 0xf7148f0f77583bddull, 0x2d095622cba7fb38ull, 0xb9fff94fde858b34ull, 0x9df7a16e6482655eull, 0x53c2d68c32028021ull }}, {{ 0xb17dac74133ee920ull, 0xa6cd969aa97256a2ull, 0xc25d5d5bf48fd039ull, 0x43ffbd1eb1377009ull, 0x2bac4e4fed17f5b3ull, 0x459c6179f4190150ull }}, {{ 0xeee8bc88c0751b3cull, 0x8407e20a9e77625aull, 0x97a5a5978d9e2240ull, 0xa7fd6332ec2a6061ull, 0xb4bb0f1f42ef9900ull, 0xb81bcec388fa0d21ull }}, {{ 0x55175d578493105aull, 0x284ed46a30a9d78dull, 0xec7877eb882d5685ull, 0x8fe5dffd39a7c3cfull, 0x0f4e97389d5bfa06ull, 0x311613a359c48351ull }}, {{ 0x52e9a56b2dbea385ull, 0x93144c25e6a26b85ull, 0x3cb4af3351c56133ull, 0x9efabfe4408da61full, 0x9911e8362597c441ull, 0xeadcc46181ad212aull }}, {{ 0x3d20762fc972632full, 0xbecaf97b02583335ull, 0x5f0ed80131b5cc03ull, 0x35cb7eea85887d38ull, 0xfab3121d77edaa90ull, 0x2c9fabcf10c34ba9ull }}, {{ 0x63449dddde77dfd9ull, 0x73edbece17720014ull, 0xb694700bf119f825ull, 0x19f2f5293754e433ull, 0xcafeb526af48a9a2ull, 0xbe3cb616a7a0f4a3ull }}, {{ 0xe0ae2aaab0aebe7bull, 0x8749740cea7400cbull, 0x21cc60776b03b176ull, 0x037d939c2950ea05ull, 0xedf31382d8d6a055ull, 0x6e5f1ce28c498e65ull }}, {{ 0xc6cdaaaae6d370cdull, 0x48de8881288807f6ull, 0x51fbc4aa2e24eea1ull, 0x22e7c4199d292433ull, 0x4b7ec31c78624352ull, 0x4fb720d97adf8ffbull }}, {{ 0xc408aaad044267feull, 0xd8b1550b95504fa3ull, 0x33d5aea5cd71524cull, 0x5d0da900239b6a01ull, 0xf2f39f1cb3d6a135ull, 0x1d27487eccbb9fd0ull }}, {{ 0xa856aac22a980febull, 0x76ed5273d5231c65ull, 0x0658d27a066d3700ull, 0xa2889a016412240cull, 0x7d84371f06624c15ull, 0x2388d4f3ff543e29ull }}, {{ 0x9362ab95a9f09f31ull, 0xa5453886535f1bf8ull, 0x3f7838c440442604ull, 0x5956040de8b56878ull, 0xe72a27363fd6f8d8ull, 0x63585187f94a6d9eull }}, {{ 0xc1dab3d8a36637ebull, 0x74b4353f41b717b5ull, 0x7ab237aa82a97c2eull, 0x7d5c288b171614b2ull, 0x07a5881e7e65b873ull, 0xe1732f4fbce84835ull }}, {{ 0x928b067661fe2f33ull, 0x8f0a14789126ed19ull, 0xcaf62ca91a9ed9d0ull, 0xe599956ee6dccef8ull, 0x4c775130eff93482ull, 0xce7fd91d6112d212ull }}, {{ 0xb96e409fd3edd7fbull, 0x9664ccb5ab8542ffull, 0xed9dbe9b0a348225ull, 0xf7ffd65504a015b7ull, 0xfca92be95fbc0d1cull, 0x10fe7b25cabc34b6ull }}, {{ 0x3e4e863e474a6fcbull, 0xdfefff18b3349dfdull, 0x4829720e660d1577ull, 0xaffe5f522e40d92full, 0xde9bb71dbd588321ull, 0xa9f0cf79eb5a0f25ull }}, {{ 0x6f113e6ec8e85debull, 0xbf5ff6f7000e2be4ull, 0xd19e748ffc82d6aeull, 0xdfefb935ce887bd8ull, 0xb215272965751f50ull, 0xa3681ac33184977aull }}, {{ 0x56ac7053d913ab32ull, 0x79bfa5a6008db6ecull, 0x30308d9fdd1c62d3ull, 0xbf5d3c1a1154d678ull, 0xf4d3879df6933928ull, 0x62110b9fef2deacaull }}, {{ 0x62bc63467ac4aff7ull, 0xc17c787c0589253bull, 0xe1e5883ea31bdc42ull, 0x79a45904ad5060b1ull, 0x90434c2ba1c03b97ull, 0xd4aa743f57cb2bedull }}, {{ 0xdb5be0c0cbaedfa5ull, 0x8edcb4d8375b7451ull, 0xd2f752725f169a9bull, 0xc06b7a2ec523c6f2ull, 0xa2a0f9b4518253eaull, 0x4ea88a796defb747ull }}, {{ 0x9196c787f4d4bc72ull, 0x949f107229928b32ull, 0x3da93877b6e20a13ull, 0x8432c5d3b365c57cull, 0x5a49c10b2f17472bull, 0x129568be4b5d28ccull }}, {{ 0xafe3cb4f904f5c70ull, 0xce36a4759fb96ff9ull, 0x689c34ad24d464c3ull, 0x29fbba4501f9b6daull, 0x86e18a6fd6e8c7b3ull, 0xb9d6176ef1a397fbull }}, {{ 0xdee5f11ba3199c62ull, 0x0e226c983d3e5fc0ull, 0x161a0ec3704befa6ull, 0xa3d546b213c12488ull, 0x44cf685e6517ccffull, 0x425cea557063efd3ull }}, {{ 0xb4fb6b145f001bd6ull, 0x8d583df2646fbd88ull, 0xdd0493a262f75c7cull, 0x6654c2f4c58b6d50ull, 0xb01a13aff2ee01fcull, 0x97a1275663e75e40ull }}, {{ 0x11d22ecbb6011659ull, 0x85726b77ec5d6757ull, 0xa22dc457dda99cddull, 0xff4f9d8fb7724528ull, 0xe104c4df7d4c13dbull, 0xec4b895fe709ae86ull }}, {{ 0xb235d3f51c0adf77ull, 0x367832af3ba60966ull, 0x55c9ab6ea8a020a7ull, 0xf91c279d2a76b396ull, 0xca2fb0bae4f8c697ull, 0x3af35dbf0660d144ull }}, {{ 0xf61a4793186cbaa4ull, 0x20b1fad8547c5e02ull, 0x59e0b25296414688ull, 0xbb198c23a8a303dfull, 0xe5dce74cf1b7c1efull, 0x4d81a9763fc82cafull }}, {{ 0x9d06cbbef43f4a67ull, 0x46f3cc734cdbac1dull, 0x82c6f739de8cc151ull, 0x4eff7964965e26b9ull, 0xfaa10901712d935dull, 0x07109e9e7dd1bedeull }}, {{ 0x2243f5758a78e809ull, 0xc585fc810094b928ull, 0x1bc5a842b17f8d2cull, 0x15fabdeddfad833full, 0xca4a5a0e6bc7c1a5ull, 0x46a63230ea3174b5ull }}, {{ 0x56a7969768b91058ull, 0xb73bdd0a05cf3b91ull, 0x15b8929aeefb83bfull, 0xdbcb6b4abcc72077ull, 0xe6e7849035cd9072ull, 0xc27df5e925ee8f19ull }}, {{ 0x628be1ea173aa374ull, 0x2856a2643a1853adull, 0xd935ba0d55d3257dull, 0x95f230eb5fc744a6ull, 0x050b2da21a07a47cull, 0x98eb9b1b7b519703ull }}, {{ 0xd976d324e84a6287ull, 0x936257ea44f344c5ull, 0x7c1944855a3f76e3ull, 0xdb75e931bdc8ae84ull, 0x326fc855044c6cddull, 0xf9340f12d12fe61eull }}, {{ 0x7ea43f7112e7d949ull, 0xc1d76f26b180afbaull, 0xd8fcad35867aa4e3ull, 0x929b1bf169d6d12cull, 0xf85dd3522afc40aaull, 0xbc0896bc2bdefd2dull }}, {{ 0xf26a7a6abd0e7cdeull, 0x926a5782ef06dd48ull, 0x79dec41740ca70e5ull, 0xba0f176e22642bc0ull, 0xb3aa4135adda86a9ull, 0x5855e359b6b5e3cbull }}, {{ 0x7828c82b6290e0acull, 0xb8276b1d5644a4d9ull, 0xc2b3a8e887e868f7ull, 0x4496ea4d57e9b584ull, 0x04a68c18ca8942a1ull, 0x735ae181231ae5f5ull }}, {{ 0xb197d1b1d9a8c6b6ull, 0x318a2f255eae707eull, 0x9b0499154f1419adull, 0xade527056f21172full, 0x2e8178f7e95c9a4cull, 0x818ccf0b5f0cfb92ull }}, {{ 0xefee30f28097c31dull, 0xef65d775b2d064f2ull, 0x0e2dfad516c900c3ull, 0xcaf38636574ae7dcull, 0xd10eb9af1d9e06feull, 0x0f801671b681d3b5ull }}, {{ 0x5f4de97905ed9f22ull, 0x59fa6a98fc23f17dull, 0x8dcbcc52e3da07a7ull, 0xed833e1f68ed0e98ull, 0x2a9340d7282c45f3ull, 0x9b00e0712112451aull }}, {{ 0xb90b1eba3b483753ull, 0x83c829f9d9676ee5ull, 0x89f5fb3ce6844c89ull, 0x47206d3a194291f5ull, 0xa9c0886791babb87ull, 0x0e08c46b4ab6b305ull }}, {{ 0x3a6f334650d2293aull, 0x25d1a3c27e0a54f9ull, 0x639bd061012afd5full, 0xc7444444fc99b397ull, 0xa185540bb14b5348ull, 0x8c57ac30eb22fe38ull }}, {{ 0x485800bf28359c44ull, 0x7a306598ec6751bcull, 0xe41623ca0bade5b7ull, 0xc8aaaab1de0103e9ull, 0x4f354874ecf140d7ull, 0x7b6cb9e92f5dee36ull }}, {{ 0xd370077792181aa9ull, 0xc5e3f7f93c09315aull, 0xe8dd65e474caf92aull, 0xd6aaaaf2ac0a2722ull, 0x1814d491416c886dull, 0xd23f431bd9ab4e1full }}, {{ 0x42604aabb4f10a99ull, 0xbae7afbc585bed8cull, 0x18a5faec8fedbbabull, 0x62aaad7ab865875dull, 0xf0d04dac8e3d544aull, 0x36789f1680b10d36ull }}, {{ 0x97c2eab5116a69f5ull, 0x4d0cdd5b7397477aull, 0xf67bcd3d9f4954b5ull, 0xdaaac6cb33f749a2ull, 0x682308bd8e654ae7ull, 0x20b636e106ea8425ull }}, {{ 0xed9d2b12ae282395ull, 0x0280a59283e8cac9ull, 0xa0d6046838dd4f15ull, 0x8aabc3f007a8e05dull, 0x115e57678ff4ed0eull, 0x471e24ca45292976ull }}, {{ 0x4823aebacd9163d6ull, 0x190677b92717ebe3ull, 0x485c2c1238a516d2ull, 0x6ab5a7604c98c3a8ull, 0xadaf6a0b9f914291ull, 0xc72d6fe6b39b9e9cull }}, {{ 0xd164d34c07ade65dull, 0xfa40ad3b86ef36e0ull, 0xd399b8b63672e434ull, 0x2b1889c2fdf7a492ull, 0xc8da24743bac99aeull, 0xc7c65f030414321eull }}, {{ 0x2df040f84ccaffa3ull, 0xc686c453455824c8ull, 0x4401371e207cea11ull, 0xaef5619debac6dbcull, 0xd8856c8a54be00cdull, 0xcdbfb61e28c9f533ull }}, {{ 0xcb6289b2ffedfc5cull, 0xc143ab40b5716fd1ull, 0xa80c272d44e124b1ull, 0xd595d02b34bc495aull, 0x75363d674f6c0808ull, 0x097d1d2d97e39406ull }}, {{ 0xf1d960fdff4bdb98ull, 0x8ca4b087166e5e31ull, 0x907987c4b0cb6ef1ull, 0x57da21b00f5add8aull, 0x941e66091a385058ull, 0x5ee323c7eee3c840ull }}, {{ 0x727dc9ebf8f693f3ull, 0x7e6ee546e04fadf3ull, 0xa4bf4daee7f2556full, 0x6e8550e0998ca769ull, 0xc92ffc5b06332373ull, 0xb4df65cf54e5d285ull }}, {{ 0x78e9e337b9a1c77bull, 0xf054f4c4c31ccb82ull, 0x6f7908d50f77565aull, 0x513528c5ff7e8a20ull, 0xdbdfdb8e3dff6282ull, 0x10b9fa1950fa3939ull }}, {{ 0xb922e02d4051cad3ull, 0x63518faf9f1ff318ull, 0x5aba58529aa95f8dull, 0x2c1397bbfaf16544ull, 0x96be938e6bf9d917ull, 0xa743c4fd29c63c42ull }}, {{ 0x3b5cc1c48331ec3dull, 0xe12f9cdc373f7ef7ull, 0x8b47733a0a9dbb85ull, 0xb8c3ed57cd6df4abull, 0xe371c39037c27ae7ull, 0x88a5b1e3a1be5a99ull }}, {{ 0x519f91ad1ff33a64ull, 0xcbdc209a287af5a8ull, 0x70ca80446a29533aull, 0x37a7456e064b8eb3ull, 0xe271a3a22d98cd0dull, 0x5678f2e4516f8a02ull }}, {{ 0x303bb0c33f8047eaull, 0xf699460594cd9893ull, 0x67e902ac259d404bull, 0x2c88b64c3ef39302ull, 0xd8706455c7f80284ull, 0x60b97ceb2e5b641cull }}, {{ 0xe254e7a07b02cf24ull, 0xa1fcbc37d007f5bfull, 0x0f1a1ab9782482f7ull, 0xbd571efa7583be18ull, 0x7463eb59cfb01929ull, 0xc73ee12fcf91e920ull }}, {{ 0xd7510c44ce1c176cull, 0x53df5a2e204f997eull, 0x97050b3eb16d1dacull, 0x656735c897256cf0ull, 0x8be731821ce0fba1ull, 0xc874cbde1bb31b44ull }}, {{ 0x692a7ab00d18ea34ull, 0x46b985cd431bfef4ull, 0xe6327072ee4328bbull, 0xf60819d5e7764165ull, 0x7707ef1520c9d44dull, 0xd48ff6ad14ff10adull }}, {{ 0x1ba8cae082f9260bull, 0xc33f3a049f17f58cull, 0xfdf8647d4e9f9750ull, 0x9c51025b0a9e8dfaull, 0xa64f56d347e24b0bull, 0x4d9fa2c2d1f6a6c6ull }}, {{ 0x1497ecc51dbb7c6bull, 0xa078442e36ef9779ull, 0xebb3ece5123be927ull, 0x1b2a178e6a318bcdull, 0x7f196440ced6ee74ull, 0x083c5b9c33a283c2ull }}, {{ 0xcdef3fb32952dc30ull, 0x44b2a9ce255beabaull, 0x350740f2b6571b8cull, 0x0fa4eb9025ef760bull, 0xf6fdea8814655089ull, 0x525b941a04592598ull }}, {{ 0x0b587cff9d3c99dfull, 0xaefaa20d75972b4cull, 0x1248897b1f67137aull, 0x9c7133a17b5a9c70ull, 0xa5eb2950cbf5255aull, 0x3793c9042b7b77f9ull }}, {{ 0x7174e1fc245e02b3ull, 0xd5ca548697e7b0f8ull, 0xb6d55ecf3a06c2caull, 0x1c6c044ed18a1c60ull, 0x7b2f9d27f793758aull, 0x2bc5da29b2d2afc0ull }}, {{ 0x6e90d3d96bac1b03ull, 0x59e74d41ef0ce9b4ull, 0x2455b41844439becull, 0x1c382b142f651bc7ull, 0xcfdc238fabc29765ull, 0xb5ba85a0fc3add84ull }}, {{ 0x51a8467e34b90e19ull, 0x830904935681210cull, 0x6b5908f2aaa4173bull, 0x1a31aec9d9f315c7ull, 0x1e99639cb599e9f3ull, 0x19493849da4ca730ull }}, {{ 0x3092c0ee0f3a8cfaull, 0x1e5a2dc1610b4a7bull, 0x317a597aaa68e853ull, 0x05f0d3e2837ed9caull, 0x31fde41f1803237full, 0xfcdc32e286fe87e1ull }}, {{ 0xe5bb894c984981c5ull, 0x2f85c98dca70e8cfull, 0xeec77ecaa819133full, 0x3b6846d922f481e5ull, 0xf3eae936f01f62f6ull, 0xe099fcd945f14ecbull }}, {{ 0xf9535cfdf2df11b0ull, 0xdb39df89e869181eull, 0x53caf3ea90fac077ull, 0x5212c47b5d8d12fbull, 0x872d1c256139dd9eull, 0xc603e07cbb6d13f7ull }}, {{ 0xbd41a1eb7cb6b0e0ull, 0x9042bb63141af135ull, 0x45ed8729a9cb84aeull, 0x34bbacd1a782bdd1ull, 0x47c31975cc42a82full, 0xbc26c4df5242c7abull }}, {{ 0x64905332df22e8bdull, 0xa29b51dec90d6c19ull, 0xbb4747a0a1f32ed1ull, 0x0f54c0308b1b6a2cull, 0xcd9efe99fa9a91d8ull, 0x5983b0b9369bccb0ull }}, {{ 0xeda33ffcb75d1767ull, 0x5a1132b3da8638fdull, 0x50c8cc46537fd430ull, 0x994f81e56f1225bfull, 0x0835f203ca09b270ull, 0x7f24e73c2215fee8ull }}, {{ 0x48607fdf29a2ea03ull, 0x84abfb06893e39ebull, 0x27d7fabf42fe49e3ull, 0xfd1b12f656b57979ull, 0x521b7425e460f865ull, 0xf771085954dbf510ull }}, {{ 0xd3c4feb7a05d241eull, 0x2eb7ce415c6e4330ull, 0x8e6fcb789deee2e3ull, 0xe30ebd9f6316bebbull, 0x3512897aebc9b3fbull, 0xaa6a537d509792a3ull }}, {{ 0x45b1f32c43a36928ull, 0xd32e0e8d9c4e9fe8ull, 0x905df2b62b54dcdfull, 0xde936839dee37353ull, 0x12b95ecd35e107d6ull, 0xa82742e525ebba60ull }}, {{ 0xb8f37fbaa4621b8dull, 0x3fcc91881b123f12ull, 0xa3ab7b1db150a0beull, 0xb1c21242b4e28143ull, 0xbb3db4041aca4e64ull, 0x91889cf37b3547c0ull }}, {{ 0x3982fd4a6bd5137full, 0x7dfdaf510eb676bbull, 0x64b2cf28ed26476eull, 0xf194b69b10d90ca4ull, 0x506908290be70feeull, 0xaf562182d014cd87ull }}, {{ 0x3f1de4e83652c2faull, 0xebe8d92a9320a350ull, 0xeefc1799437eca50ull, 0x6fcf220ea87a7e6bull, 0x241a519a77069f55ull, 0xd95d4f1c20d00749ull }}, {{ 0x772af1121f3b9dc5ull, 0x37187ba9bf466122ull, 0x55d8ebfca2f3e729ull, 0x5e17549294c8f037ull, 0x69073008a6423956ull, 0x7da51719482048dbull }}, {{ 0xa7ad6ab5385429aeull, 0x26f4d4a178bfcb58ull, 0x5a7937de5d87079cull, 0xace94db9cfd96229ull, 0x1a47e0567e963d5full, 0xe872e6fcd142d892ull }}, {{ 0x8cc62b143349a0caull, 0x85904e4eb77df176ull, 0x88bc2eafa7464c19ull, 0xc11d09421e7dd59dull, 0x06cec360f1de65bcull, 0x147d05e02c9c75b5ull }}, {{ 0x7fbdaeca00e047e5ull, 0x37a30f132aeb6ea1ull, 0x5759d2dc88bef8ffull, 0x8b225c9530ea5827ull, 0x4413a1c972aff95full, 0xcce23ac1be1c9912ull }}, {{ 0xfd68d3e408c2cef0ull, 0x2c5e96bfad32524eull, 0x69823c9d5775b9f8ull, 0x6f579dd3e9277189ull, 0xa8c451de7adfbdbbull, 0x00d64b916d1dfab6ull }}, {{ 0xe61846e8579c155cull, 0xbbb1e37cc3f73715ull, 0x1f165e256a9943b1ull, 0x596c2a471b8a6f5eull, 0x97ab32b0ccbd6952ull, 0x085ef3ae432bcb22ull }}, {{ 0xfcf2c5136c18d59cull, 0x54f2e2dfa7a826daull, 0x36dfad7629fca4f1ull, 0x7e39a6c7136859adull, 0xecaffae7ff661d37ull, 0x53b584ce9fb5ef59ull }}, {{ 0xe17bb2c238f8581bull, 0x517cdcbc8c91848dull, 0x24bcc69da3de716dull, 0xee4083c6c21380c4ull, 0x3edfcd0ff9fd242aull, 0x451730123d1b5983ull }}, {{ 0xced4fb9639b3710aull, 0x2ee09f5d7daf2d8aull, 0x6f5fc22866b06e45ull, 0x4e8525c394c307a9ull, 0x74be029fc3e369adull, 0xb2e7e0b663117f20ull }}, {{ 0x1451d3de41026a65ull, 0xd4c639a6e8d7c76cull, 0x59bd959402e44eb3ull, 0x113379a3cf9e4c9eull, 0x8f6c1a3da6e220c5ull, 0xfd0ec71fdeaef744ull }}, {{ 0xcb3246ae8a1827f7ull, 0x4fbe4085186dca38ull, 0x8167d7c81ceb1306ull, 0xac02c0661c2efe2full, 0x9a39066884d547b2ull, 0xe293c73eb2d5a8adull }}, {{ 0xeff6c2d164f18fa2ull, 0x1d6e8532f449e637ull, 0x0e0e6dd1212ebe3full, 0xb81b83fd19d5eddbull, 0x063a40153054ccfaull, 0xd9c5c872fc5896c8ull }}, {{ 0x5fa39c2df16f9c53ull, 0x265133fd8ae2fe2full, 0x8c904a2b4bd36e77ull, 0x311327e3025b4a8eull, 0x3e4680d3e35001cbull, 0x81b9d47ddb75e3d0ull }}, {{ 0xbc6419cb6e5c1b41ull, 0x7f2c07e76cddedd9ull, 0x7da2e5b0f64250a7ull, 0xeabf8ede1790e991ull, 0x6ec10846e12011efull, 0x11424cea929ae622ull }}, {{ 0x5be901f24f991089ull, 0xf7b84f0a40ab4a81ull, 0xe85cf8e99e97268aull, 0x2b7b94aceba91faeull, 0x538a52c4cb40b35full, 0xac970129ba0cfd58ull }}, {{ 0x971a13771bfaa555ull, 0xad33166686b0e90dull, 0x13a1b92031e7816dull, 0xb2d3cec1349b3cd5ull, 0x43673baff08701b7ull, 0xbde60ba14481e573ull }}, {{ 0xe704c2a717ca7555ull, 0xc3fee00142e91a87ull, 0xc4513b41f30b0e48ull, 0xfc46138c0e106052ull, 0xa20854df6546112cull, 0x6afc744cad12f680ull }}, {{ 0x062f9a86ede8954eull, 0xa7f4c00c9d1b094full, 0xab2c50937e6e8ed7ull, 0xdabcc3788ca3c33bull, 0x545350b9f4bcabc1ull, 0x2ddc8afec2bda106ull }}, {{ 0x3ddc09454b15d510ull, 0x8f8f807e230e5d16ull, 0xafbb25c2f051946cull, 0x8b5fa2b57e65a054ull, 0x4b4127438f5eb592ull, 0xca9d6df39b684a3full }}, {{ 0x6a985cb4eeda52a3ull, 0x9b9b04ed5e8fa2deull, 0xdd4f799d632fcc3dull, 0x71bc5b16eff8434eull, 0xf08b88a399b317b9ull, 0xea264b841212e678ull }}, {{ 0x29f39f1154873a5eull, 0x140e3145b19c5cb0ull, 0xa51ac025dfddfa68ull, 0x715b8ee55fb2a114ull, 0x6573566400feed3eull, 0x257ef328b4bd00b9ull }}, {{ 0xa38436ad4d4847abull, 0xc88decb8f01b9ee1ull, 0x730b817abeabc810ull, 0x6d9394f5bcfa4aceull, 0xf6815fe809f54470ull, 0x76f57f970f62073dull }}, {{ 0x632a22c504d2ccaeull, 0xd58b3f39611434d0ull, 0x7e730ecb72b5d0a7ull, 0x47c3d19961c6ec10ull, 0xa10dbf106394ac64ull, 0xa596fbe699d4486bull }}, {{ 0xdfa55bb2303bfecaull, 0x5770783dcaca1023ull, 0xf07e93f27b1a268eull, 0xcda62ffdd1c538a4ull, 0x4a8976a3e3cebbeaull, 0x77e5d702024ad434ull }}, {{ 0xbc7594f5e257f3e8ull, 0x6a64b269ebe4a166ull, 0x64f1c778cf05818full, 0x087ddfea31b43671ull, 0xe95ea266e613572cull, 0xaefa661416ec4a0aull }}, {{ 0x5c97d19ad76f870full, 0x27eef82336ee4e03ull, 0xf171cab816370f9aull, 0x54eabf25f10a206dull, 0x1db25804fcc167b8ull, 0xd5c7fcc8e53ae46dull }}, {{ 0x9dee300c6a5b4696ull, 0x8f55b160254f0c21ull, 0x6e71eb30de269c05ull, 0x512b777b6a65444bull, 0x28f77031df8e0d33ull, 0x59cfdfd8f44cec43ull }}, {{ 0x2b4de07c2790c1ddull, 0x9958edc175167950ull, 0x50732fe8ad821837ull, 0x2bb2aad227f4aaf2ull, 0x99aa61f2bb8c8401ull, 0x821ebe798b013a9full }}, {{ 0xb10ac4d98ba792a1ull, 0xfd79498e92e0bd21ull, 0x247fdf16c714f22bull, 0xb4faac358f8ead77ull, 0x00a7d37b537d280bull, 0x153370bf6e0c4a3cull }}, {{ 0xea6bb07f748bba4dull, 0xe6bcdf91bcc76350ull, 0x6cfeb6e3c6d175b7ull, 0x11caba179b92c6a7ull, 0x068e42d142e39075ull, 0xd402677a4c7ae658ull }}, {{ 0x2834e4fa8d754706ull, 0x0360bbb15fc9e129ull, 0x41f324e5c42e992full, 0xb1eb44ec13bbc28aull, 0x418e9c2c9ce3a492ull, 0x48180ac6fcccff70ull }}, {{ 0x9210f1c98694c63dull, 0x21c754edbde2cb9bull, 0x937f70f9a9d1fbd6ull, 0xf330b138c5559966ull, 0x8f9219be20e46dbaull, 0xd0f06bc5e001fa62ull }}, {{ 0xb4a971df41cfbe62ull, 0x51c951496adbf413ull, 0xc2fa69c0a233d65dull, 0x7fe6ec37b557fe01ull, 0x9bb5016d48ec494dull, 0x296435bac013c7d9ull }}, {{ 0x0e9e72b8921d6fd2ull, 0x31dd2cde2c9788c5ull, 0x9dc8218656065fa5ull, 0xff053a2d156fec11ull, 0x15120e44d93add06ull, 0x9dea194b80c5ce80ull }}, {{ 0x92307b35b5265e30ull, 0xf2a3c0adbdeb57b2ull, 0x29d14f3f5c3fbc73ull, 0xf63445c2d65f38b0ull, 0xd2b48eb07c4ca245ull, 0x2b24fcf307ba1100ull }}, {{ 0xb5e4d019137faddeull, 0x7a6586c96b316cf9ull, 0xa22d18799a7d5c87ull, 0x9e0ab99c5fb836e1ull, 0x3b0d92e4dafe56bbull, 0xaf71e17e4d44aa08ull }}, {{ 0x1af020fac2fccaafull, 0xc7f743de2fee41c1ull, 0x55c2f4c008e59d4aull, 0x2c6b401bbd3224d0ull, 0x4e87bcf08def6354ull, 0xda72ceef04aea452ull }}, {{ 0x0d6149cb9ddfead6ull, 0xcfa8a6addf4e918bull, 0x599d8f8058f824ebull, 0xbc30811563f57023ull, 0x114d61658b59e149ull, 0x887c15562ed26b37ull }}, {{ 0x85cce1f42abf2c5bull, 0x1c9682cab911af6eull, 0x80279b0379b17136ull, 0x59e50ad5e7966161ull, 0xad05cdf77182cce1ull, 0x54d8d55dd4383026ull }}, {{ 0x3a00d389ab77bb8aull, 0x1de11beb3ab0da51ull, 0x018c0e22c0ee6c1dull, 0x82f26c5b0bdfcdcfull, 0xc23a0baa6f1c00cdull, 0x507855aa4a31e182ull }}, {{ 0x44084360b2ad535full, 0x2acb17304ae8872cull, 0x0f788d5b89503923ull, 0x1d783b8e76be0a16ull, 0x964474a857180807ull, 0x24b358a6e5f2cf1bull }}, {{ 0xa852a1c6fac541b8ull, 0xabeee7e2ed1547baull, 0x9ab585935d223b5full, 0x26b25390a36c64dcull, 0xdeac8e9366f05047ull, 0x6f017684fb7c1713ull }}, {{ 0x933a51c5cbb49132ull, 0xb7550edd42d4cd4aull, 0x0b1737c1a35651bcull, 0x82f743a6623bf09eull, 0xb2bd91c2056322c7ull, 0x560ea131d2d8e6c6ull }}, {{ 0xc04731b9f50dabf3ull, 0x295294a49c5004e9ull, 0x6ee82d90615f315full, 0x1da8a47fd657662cull, 0xfb67b19435df5bcbull, 0x5c924bf23c7903c2ull }}, {{ 0x82c7f1439288b77eull, 0x9d39ce6e1b203121ull, 0x5511c7a3cdb7edb7ull, 0x28966cfe5f69fdbcull, 0xd20cefca1ab995efull, 0x9db6f7765cba259dull }}, {{ 0x1bcf6ca3b9572af0ull, 0x2442104d0f41eb4full, 0x52b1cc66092f492cull, 0x95e041efba23e95bull, 0x34815de50b3fdb57ull, 0x2925aa9f9f45782aull }}, {{ 0x161a3e653d67ad5bull, 0x6a94a30298933117ull, 0x3af1fbfc5bd8dbb9ull, 0xdac2935d45671d91ull, 0x0d0daaf2707e916bull, 0x9b78aa3c38b6b1a6ull }}, {{ 0xdd066ff4660cc58full, 0x29ce5e19f5bfeae6ull, 0x4d73d7db9678953eull, 0x8b99c1a4b60727acull, 0x8288ad7864f1ae36ull, 0x12b6a65a3722f07cull }}, {{ 0xa2405f8bfc7fb798ull, 0xa20fad03997f2d04ull, 0x06866e93e0b5d46dull, 0x7401906f1c478cbbull, 0x1956c6b3f170ce21ull, 0xbb227f86275d64ddull }}, {{ 0x5683bb77dcfd2bf2ull, 0x549cc223fef7c22eull, 0x414051c6c71a4c48ull, 0x880fa4571acb7f4eull, 0xfd63c3076e680d4eull, 0x4f58fb3d89a5f0a2ull }}, {{ 0x612552aea1e3b776ull, 0x4e1f9567f5ad95cfull, 0x8c8331c3c706fad3ull, 0x509c6b670bf2f90eull, 0xe5e59e4a50108511ull, 0x1979d067607b665dull }}, {{ 0xcb753ad252e52a9dull, 0x0d3bd60f98c7da19ull, 0x7d1ff1a5c645cc41ull, 0x261c3206777dba91ull, 0xfaf82ee720a532adull, 0xfec22409c4d1ffaaull }}, {{ 0xf2944c373cf3aa21ull, 0x84565c9bf7ce8501ull, 0xe33f7079beb9fa8aull, 0x7d19f440aae949aeull, 0xcdb1d5074673fac3ull, 0xf3956861b033fcadull }}, {{ 0x79cafa286184a548ull, 0x2b5f9e17ae113213ull, 0xe07a64c17343c969ull, 0xe3038a86ad1ce0d4ull, 0x08f25248c087cba2ull, 0x83d613d0e207decaull }}, {{ 0xc1edc593cf2e74cdull, 0xb1bc2cecccabf4c2ull, 0xc4c7ef8e80a5de1bull, 0xde236942c320c850ull, 0x597736d7854df45cull, 0x265cc628d44eb3e4ull }}, {{ 0x9349b7c617d09007ull, 0xf159c13ffeb78f9bull, 0xafcf5b91067aad14ull, 0xad621c9b9f47d327ull, 0x7ea8246b350b8ba0ull, 0x7f9fbd984b1306ebull }}, {{ 0xc0e12dbcee25a045ull, 0x6d818c7ff32b9c13ull, 0xde1993aa40cac2d1ull, 0xc5d51e1438ce3f8cull, 0xf2916c3012737446ull, 0xfc3d67f2eebe4532ull }}, {{ 0x88cbc9614d7842b6ull, 0x470f7cff7fb418c5ull, 0xacffc4a687eb9c2eull, 0xba532cca380e7b80ull, 0x79ae39e0b8828ac3ull, 0xda660f7d536eb3fdull }}, {{ 0x57f5ddcd06b29b20ull, 0xc69ae1fafd08f7b7ull, 0xc1fdae814f3419ceull, 0x473fbfe63090d306ull, 0xc0ce42c735196ba5ull, 0x87fc9ae5425307e6ull }}, {{ 0x6f9aaa0242fa0f3cull, 0xc20cd3cde259ad29ull, 0x93e8d10d18090213ull, 0xc87d7efde5a83e43ull, 0x880e9bc812fe3474ull, 0x4fde0cf4973e4f03ull }}, {{ 0x5c0aa4169dc49857ull, 0x9480460ad780c39eull, 0xc7182a82f05a14c5ull, 0xd4e6f5eaf8926ea3ull, 0x509215d0bdee0c8full, 0x1eac818de86f1623ull }}, {{ 0x986a68e229adf366ull, 0xcd02bc6c6b07a42full, 0xc6f1a91d6384cfb7ull, 0x51059b2db5b85265ull, 0x25b4da276b4c7d9eull, 0x32bd0f8b1456dd61ull }}, {{ 0xf42818d5a0cb81ffull, 0x021b5c3c2e4c69dbull, 0xc5709b25e3301d2eull, 0x2a380fc9193337f9ull, 0x7910858a30fce82full, 0xfb629b6ecb64a5cbull }}, {{ 0x8990f85847f313f7ull, 0x15119a59cefc2297ull, 0xb6660f7adfe123ccull, 0xa6309ddafc002fc1ull, 0xbaa53765e9e111d7ull, 0xd1da1253f1ee79f2ull }}, {{ 0x5fa9b372cf7ec7a6ull, 0xd2b0078215d959ebull, 0x1ffc9accbecb65f8ull, 0x7de62a8dd801dd91ull, 0x4a7429fb22cab26cull, 0x3284b7477350c37bull }}, {{ 0xbca1027c1af3cc79ull, 0x3ae04b14da7d8331ull, 0x3fde0bff73f1fbb8ull, 0xeafda98a7012a7abull, 0xe889a3cf5beaf83cull, 0xf92f28ca8127a2d0ull }}, {{ 0x5e4a18d90d85fcb6ull, 0x4cc2eed088e71ff1ull, 0x7eac77fa8773d532ull, 0x2de89f6860ba8cb0ull, 0x15606619972db261ull, 0xbbd797e90b8c5c29ull }}, {{ 0xaee4f87a873bdf1full, 0xff9d542559073f6dull, 0xf2bcafc94a8653f6ull, 0xcb163a13c7497ee4ull, 0xd5c3fcffe7c8f7cbull, 0x566bef1a737b999aull }}, {{ 0xd4f1b4c94856b73bull, 0xfc2549757a487a48ull, 0x7b5edddce93f47a5ull, 0xeede44c5c8def4f1ull, 0x59a7e1ff0dd9adf5ull, 0x6037570882d4000cull }}, {{ 0x51710fdcd363284cull, 0xd974de96c6d4c6d8ull, 0xd1b4aaa11c78cc7bull, 0x54aeafb9d8b5916eull, 0x808ed3f68a80cb9bull, 0xc22966551c48007bull }}, {{ 0x2e6a9ea041df92faull, 0x7e90b1e3c44fc473ull, 0x310eaa4b1cb7fcd6ull, 0x4ed2dd427717ae54ull, 0x059447a16907f411ull, 0x959dff531ad004d3ull }}, {{ 0xd02a324292bbbdc3ull, 0xf1a6f2e5ab1dac7full, 0xea92a6ef1f2fe060ull, 0x143ca498a6eccf49ull, 0x37cacc4e1a4f88adull, 0xd82bf93f0c20303eull }}, {{ 0x21a5f699bb5569a3ull, 0x70857cf8af28bcfeull, 0x29ba855737dec3c9ull, 0xca5e6df6854018e3ull, 0x2debfb0d071b56c2ull, 0x71b7bc767941e26eull }}, {{ 0x507ba2015156205dull, 0x6536e1b6d79761edull, 0xa14935682eb3a5deull, 0xe7b04ba13480f8dfull, 0xcb37ce824711639bull, 0x712d5ca0bc92d84dull }}, {{ 0x24d4540d2d5d439eull, 0xf424d1246be9d345ull, 0x4cdc1611d3047aafull, 0x0ce2f44c0d09b8bcull, 0xf02e1116c6ade417ull, 0x6bc59e475dbc7309ull }}, {{ 0x704b4883c5a4a427ull, 0x89702b6c372240b3ull, 0x0098dcb23e2ccadfull, 0x80dd8af88261375bull, 0x61ccaae3c2cae8e6ull, 0x35b82ec9a95c7e63ull }}, {{ 0x62f0d525b86e6988ull, 0x5e61b23a27568702ull, 0x05f89ef66dbfecbbull, 0x08a76db517cc298eull, 0xd1feace59bed1901ull, 0x1931d3e09d9cefe1ull }}, {{ 0xdd68537934501f4full, 0xafd0f64589614617ull, 0x3bb635a0497f3f51ull, 0x568a4912edf99f8cull, 0x33f2c0f81742fa0aull, 0xfbf246c628215ed2ull }}, {{ 0xa61342bc0b213916ull, 0xde299eb75dccbceeull, 0x551e1842def87930ull, 0x6166dabd4bc03b7aull, 0x077b89b0e89dc467ull, 0xd776c3bd914db436ull }}, {{ 0x7cc09b586f4c3ae1ull, 0xada03329a9ff6152ull, 0x532cf29cb5b4bbe8ull, 0xce048b64f58252c7ull, 0x4ad360e91629ac09ull, 0x6aa3a567ad090a1cull }}, {{ 0xdf86117458fa4cc8ull, 0xc841ffa0a3f9cd38ull, 0x3fc17a1f190f5716ull, 0x0c2d71f197173bc9ull, 0xec41c91adda0b862ull, 0x2a64760cc25a651aull }}, {{ 0xbb3cae8b79c6ffd1ull, 0xd293fc4667c20438ull, 0x7d8ec536fa9966e3ull, 0x79c6736fe6e855dcull, 0x3a91db0ca84733d4ull, 0xa7ec9c7f9787f30dull }}, {{ 0x505ed172c1c5fe29ull, 0x39c7dac00d942a37ull, 0xe793b425c9fe04e6ull, 0xc1c0825f05135a9cull, 0x49b28e7e92c8064cull, 0x8f3e1cfbeb4f7e84ull }}, {{ 0x23b42e7b91bbed99ull, 0x41ce8b8087c9a629ull, 0x0bc50979e3ec30feull, 0x918517b632c18a21ull, 0xe0f990f1bbd03effull, 0x986d21d7311af12aull }}, {{ 0x6509d0d3b15747feull, 0x921173054de07d9bull, 0x75b25ec2e739e9eeull, 0xaf32ed1dfb8f654aull, 0xc9bfa971562275fbull, 0xf4435267eb0d6bacull }}, {{ 0xf2622844ed68cfe9ull, 0xb4ae7e350ac4e811ull, 0x98f7b39d08432351ull, 0xd7fd432bd399f4e8ull, 0xe17c9e6d5d589bd4ull, 0x8aa1380f2e8634bfull }}, {{ 0x77d592b146181f1dull, 0x0ed0ee126bb110b3ull, 0xf9ad0422529f6131ull, 0x6fe49fb644039115ull, 0xcede3045a5761650ull, 0x6a4c3097d13e0f7eull }}, {{ 0xae57baecbcf13726ull, 0x94294cb834eaa702ull, 0xc0c229573a39cbeaull, 0x5eee3d1ea823aadbull, 0x14ade2b8769cdf24ull, 0x26f9e5ee2c6c9af4ull }}, {{ 0xcf6d4d3f616c2780ull, 0xc99cff32112a861aull, 0x87959d684641f729ull, 0xb54e63329164ac95ull, 0xcecadb34a220b76bull, 0x85c2fb4dbc3e0d88ull }}, {{ 0x1a450479ce398b05ull, 0xe021f7f4aba93d0cull, 0x4bd82612be93a7a1ull, 0x150fdff9adeebdd7ull, 0x13ec900e55472a35ull, 0x399dd1095a6c8758ull }}, {{ 0x06b22cc20e3f6e2eull, 0xc153af8eb49c6279ull, 0xf6717cbb71c48c52ull, 0xd29ebfc0cb536a68ull, 0xc73da08f54c7a612ull, 0x402a2a5d883d4970ull }}, {{ 0x42f5bf948e7a4dceull, 0x8d44db930e1bd8baull, 0xa06edf5271ad7b3bull, 0x3a337d87f1422819ull, 0xc86845994fcc7cbcull, 0x81a5a7a75264de67ull }}, {{ 0x9d997bcd90c70a0bull, 0x84b093be8d167746ull, 0x4454b93870c6d053ull, 0x4602e74f6c959100ull, 0xd412b7fd1dfcdf5aull, 0x10788c8937f0b00dull }}, {{ 0x27fed607a7c66473ull, 0x2ee5c57182e0a8c2ull, 0xab4f3c3467c42343ull, 0xbc1d091a3dd7aa02ull, 0x48bb2fe32be0b986ull, 0xa4b57d5c2f66e08aull }}, {{ 0x8ff45c4c8dbfec7dull, 0xd4f9b66f1cc69795ull, 0xb1185a0c0da9609full, 0x59225b066a6ca41aull, 0xd74fdedfb6c73f43ull, 0x6f16e599da04c566ull }}, {{ 0x9f8b9afd897f3cdeull, 0x51c120571fc1ebd7ull, 0xeaf38478889dc63eull, 0x7b578e40283e690aull, 0x691eb4bd23c878a1ull, 0x56e4f802842fb604ull }}, {{ 0x3b740de75ef860a8ull, 0x318b43673d93366cull, 0x2d832cb55629be6full, 0xd16b8e8192701a6dull, 0x1b330f6365d4b64eull, 0x64f1b01929dd1c2cull }}, {{ 0x52888b09b5b3c694ull, 0xef70a20867c0203aull, 0xc71fbf155da17057ull, 0x2e33910fb8610843ull, 0x0ffe99e1fa4f1f14ull, 0xf170e0fba2a319b9ull }}, {{ 0x39556e611905c1c4ull, 0x5a6654540d814247ull, 0xc73d76d5a84e636full, 0xce03aa9d33ca52a5ull, 0x9ff202d3c71736c9ull, 0x6e68c9d45a5f013aull }}, {{ 0x3d564fcafa3991abull, 0x87ff4b48870c96c8ull, 0xc866a458930fe259ull, 0x0c24aa2405e73a79ull, 0x3f741c45c6e823e2ull, 0x5017e24b87b60c4aull }}, {{ 0x655f1dedc63fb0b3ull, 0x4ff8f0d5467de3d2ull, 0xd4026b75be9ed77full, 0x796ea5683b0848c1ull, 0x7a891ab9c51166d4ull, 0x20eed6f34d1c7ae6ull }}, {{ 0xf5b72b49be7ce6f9ull, 0x1fb96854c0eae637ull, 0x4818329972346af9ull, 0xbe5276124e52d792ull, 0xc95b0b41b2ae044cull, 0x49546581031ccd00ull }}, {{ 0x9927b0e170e105baull, 0x3d3e134f892cfe2full, 0xd0f1f9fe760c2dbbull, 0x6f389cb70f3c6bb6ull, 0xdd8e7090facc2affull, 0xdd4bf70a1f200207ull }}, {{ 0xfb8ce8ce68ca3947ull, 0x646cc11b5bc1eddbull, 0x2973c3f09c79c950ull, 0x58361f26985c3524ull, 0xa79065a9cbf9adfaull, 0xa4f7a6653740144eull }}, {{ 0xd381181017e63cc7ull, 0xec3f8b1195934a97ull, 0x9e85a7661cc1dd23ull, 0x721d3781f39a1369ull, 0x8ba3f8a1f7c0cbc7ull, 0x71ac7ff42880cb12ull }}, {{ 0x430af0a0eefe5fc9ull, 0x3a7b6eafd7c0e9eeull, 0x313889fd1f92a367ull, 0x75242b138404c220ull, 0x7467b653ad87f5caull, 0x70bcff899507eeb9ull }}, {{ 0x9e6d664955efbddeull, 0x48d252de6d89234eull, 0xec3563e33bba6208ull, 0x9369aec3282f9541ull, 0x8c0d1f44c74f99e8ull, 0x6761fb5fd24f533eull }}, {{ 0x3045fedd5b5d6ab0ull, 0xd8373cb0475b6112ull, 0x3a15e6e05547d452ull, 0xc220d39f91dbd493ull, 0x788338afc91c0315ull, 0x09d3d1be37194071ull }}, {{ 0xe2bbf4a591a62adfull, 0x72285ee2c991cab5ull, 0x44db04c354ce4b3cull, 0x9548443bb2964dc0ull, 0xb52036dddb181ed9ull, 0x6246316e26fc846eull }}, {{ 0xdb578e77b07dacb8ull, 0x7593b4dbdfb1eb1aull, 0xb08e2fa1500ef05cull, 0xd4d2aa54f9df0982ull, 0x134224aa8ef1347full, 0xd6bdee4d85dd2c53ull }}, {{ 0x916b90ace4e8bf2cull, 0x97c51096bcf32f0cull, 0xe58ddc4d2095639cull, 0x503aa751c2b65f1aull, 0xc0956ea9956c0cfeull, 0x636b4f073aa3bb3eull }}, {{ 0xae33a6c0f11777b7ull, 0xedb2a5e3617fd67dull, 0xf78a9b0345d5e41dull, 0x224a89319b1fb70cull, 0x85d6529fd63881efull, 0xe23116484a655073ull }}, {{ 0xce0483896aeaad22ull, 0x48fa7ae1cefe60e8ull, 0xab6a0e20ba5ae92bull, 0x56e95bf00f3d2681ull, 0x3a5f3a3e5e351357ull, 0xd5eaded2e7f52483ull }}, {{ 0x0c2d235e2d2ac358ull, 0xd9c8ccd215efc918ull, 0xb2248d47478d1bb0ull, 0x651d976098638110ull, 0x47b8466fae12c169ull, 0x5b2cb43d0f936d20ull }}, {{ 0x79c361adc3aba16dull, 0x81d80034db5ddaf0ull, 0xf56d84c8cb8314e8ull, 0xf327e9c5f3e30aa6ull, 0xcd32c05cccbb8e1dull, 0x8fbf0a629bc24342ull }}, {{ 0xc1a1d0c9a4b44e41ull, 0x1270021091aa8d64ull, 0x96472fd7f31ed115ull, 0x7f8f21bb86de6a85ull, 0x03fb839fff538d2bull, 0x9d7667da1596a09cull }}, {{ 0x905227e06f0b0e88ull, 0xb86014a5b0a985efull, 0xdec7de6f7f342ad2ull, 0xfb97515344b02937ull, 0x27d3243ff94383b2ull, 0x26a00e84d7e24618ull }}, {{ 0xa3358ec4566e914dull, 0x33c0ce78e69f3b5bull, 0xb3ceb05af809ac3bull, 0xd3e92d40aee19c2eull, 0x8e3f6a7fbca324fdull, 0x824091306ed6bcf1ull }}, {{ 0x601793ab6051ad07ull, 0x058810b902385194ull, 0x0612e38db060ba50ull, 0x471bc486d4d019d3ull, 0x8e7a28fd5e5f71eaull, 0x1685abe45463616full }}, {{ 0xc0ebc4b1c330c243ull, 0x3750a73a16332fcbull, 0x3cbce388e3c74720ull, 0xc715ad445021023eull, 0x90c599e5afba7326ull, 0xe138b6eb4be1ce5bull }}, {{ 0x8935aef19fe796a0ull, 0x29268844ddffddf5ull, 0x5f60e358e5c8c742ull, 0xc6d8c4ab214a166eull, 0xa7b802f8dd487f83ull, 0xcc372530f6d20f93ull }}, {{ 0x5c18d5703f0be243ull, 0x9b8152b0abfeab97ull, 0xb9c8e178f9d7c895ull, 0xc477aeaf4ce4e04full, 0x8d301db8a4d4fb25ull, 0xfa2773e9a4349bc4ull }}, {{ 0x98f856627676d69eull, 0x130d3ae6b7f2b3e9ull, 0x41d8ceb9c26dd5d8ull, 0xacacd2d900f0c31dull, 0x83e129367051cf79ull, 0xc58a87206a0e15adull }}, {{ 0xf9b35fd8a0a46229ull, 0xbe844d032f7b071full, 0x92781341984a5a70ull, 0xbec03c7a09679f24ull, 0x26cb9c2063321ac0ull, 0xb7694744248cd8c7ull }}, {{ 0xc101be76466bd59aull, 0x712b021fdace473full, 0xb8b0c08ff2e78867ull, 0x73825cc45e0c376dull, 0x83f41943dff50b87ull, 0x2a1cc8a96d8077c7ull }}, {{ 0x8a11709ec0365802ull, 0x6bae153e8c0ec87dull, 0x36e7859f7d0b540aull, 0x83179fabac7a2a49ull, 0x2788fca6bf92734aull, 0xa51fd69e4704adcbull }}, {{ 0x64ae6633821f7017ull, 0x34ccd4717893d4e7ull, 0x250b383ae2714868ull, 0x1eec3cb4bcc5a6dcull, 0x8b59de837bb880e9ull, 0x733e622ec62ec9efull }}, {{ 0xeecffe03153a60eaull, 0x10004c6eb5c65109ull, 0x7270324cd86cd412ull, 0x353a5f0f5fb88499ull, 0x7182b122d535091bull, 0x806fd5d3bdd3e35bull }}, {{ 0x541fec1ed447c921ull, 0xa002fc5319bf2a63ull, 0x7861f700744048b4ull, 0x1447b699bd352dfeull, 0x6f1aeb5c54125b10ull, 0x045e5a456a46e192ull }}, {{ 0x493f39344acddb4eull, 0x401ddb3f0177a7e1ull, 0xb3d3a6048a82d70eull, 0xcacd22016413cbf0ull, 0x570d319b48b78ea0ull, 0x2baf86b626c4cfb8ull }}, {{ 0xdc783c0aec0a910aull, 0x812a90760eac8eccull, 0x06447c2d691c668eull, 0xec03540de8c5f767ull, 0x6683f010d72b9247ull, 0xb4db431d83b01d33ull }}, {{ 0x9cb2586d3869aa68ull, 0x0ba9a49c92bd9400ull, 0x3eacd9c61b1c0191ull, 0x3821488b17bbaa06ull, 0x012760a867b3b6cfull, 0x10909f2724e12402ull }}, {{ 0x1ef774443420a813ull, 0x74a06e1dbb67c806ull, 0x72c081bd0f180faaull, 0x314cd56eed54a43eull, 0x0b89c6940d052418ull, 0xa5a6378770cb6814ull }}, {{ 0x35aa8aaa094690baull, 0x8e444d29520dd03dull, 0x7b85116296f09ca8ull, 0xed005655454e6a70ull, 0x7361c1c8823368f1ull, 0x787e2b4a67f210c8ull }}, {{ 0x18a96aa45cc1a746ull, 0x8eab039d348a2264ull, 0xd332add9e5661e95ull, 0x42035f54b5102864ull, 0x81d191d516021973ull, 0xb4edb0e80f74a7d4ull }}, {{ 0xf69e2a6b9f9088bcull, 0x92ae24240d6557e8ull, 0x3ffaca82f5fd31d7ull, 0x9421b94f12a193f0ull, 0x122fb252dc14fe80ull, 0x1148e9109a8e8e4dull }}, {{ 0xa22da8343ba55755ull, 0xbacd696885f56f19ull, 0x7fcbe91d9be3f26bull, 0xc9513d16ba4fc762ull, 0xb5dcf73c98d1f105ull, 0xacd91aa609918f02ull }}, {{ 0x55c8920a54756952ull, 0x4c061e153b965700ull, 0xfdf71b2816e77835ull, 0xdd2c62e3471dc9d8ull, 0x1aa1a85df8336a39ull, 0xc07b0a7c5faf961bull }}, {{ 0x59d5b4674c961d33ull, 0xf83d2cd453df6603ull, 0xeba70f90e50ab214ull, 0xa3bbdce0c729e279ull, 0x0a5093abb2022642ull, 0x84ce68dbbcdbdd0full }}, {{ 0x82590c08fddd23fbull, 0xb263c04b46b9fc21ull, 0x34869ba8f26af4d1ull, 0x6556a0c7c7a2d8c3ull, 0x6725c4b4f4157e9aull, 0x301018956096a296ull }}, {{ 0x177a7859eaa367cfull, 0xf7e582f0c343d94full, 0x0d421499782d9030ull, 0xf56247cdcc5c77a0ull, 0x0779af1188d6f207ull, 0xe0a0f5d5c5e259e0ull }}, {{ 0xeac8b3832a620e14ull, 0xaef71d67a0a67d16ull, 0x8494cdfeb1c7a1e9ull, 0x95d6ce09fb9cac40ull, 0x4ac0d6af5865744full, 0xc6499a59bad782c0ull }}, {{ 0x2bd7031fa7d48cccull, 0xd5a7260c4680e2e5ull, 0x2dd00bf2f1cc5320ull, 0xda640c63d41eba85ull, 0xeb8862d973f68b1bull, 0xbee007814c6b1b82ull }}, {{ 0xb6661f3c8e4d7ff5ull, 0x58877c7ac108dcf3ull, 0xca20777d71fb3f48ull, 0x87e87be649334933ull, 0x3353dc7e87a16f16ull, 0x74c04b0cfc2f131dull }}, {{ 0x1ffd385d8f06ff8eull, 0x754adccb8a58a185ull, 0xe544aae673d078d3ull, 0x4f14d6fedc00dc05ull, 0x01469cf14c4e56e1ull, 0x8f82ee81d9d6bf24ull }}, {{ 0x3fe433a79645fb87ull, 0x94ec9ff367764f33ull, 0xf4aead008624b842ull, 0x16d065f49808983aull, 0x0cc2216cfb0f64cdull, 0x9b1d511282637768ull }}, {{ 0x7eea048bdebbd347ull, 0xd13e3f820a9f1800ull, 0x8ed2c2053d6f3299ull, 0xe423fb8df055f24dull, 0x7f954e41ce99f002ull, 0x0f252ab917e2aa10ull }}, {{ 0xf5242d76b35640c6ull, 0x2c6e7b146a36f004ull, 0x943b94346657fa02ull, 0xe967d38b635b7707ull, 0xfbd50e921203601cull, 0x9773ab3aeedaa4a4ull }}, {{ 0x9369c6a3015e87c0ull, 0xbc50cecc26256031ull, 0xca53ca0bff6fc415ull, 0x1e0e4371e192a64bull, 0xd65291b4b421c121ull, 0xea84b04d548a6e71ull }}, {{ 0xc221c25e0db14d7eull, 0x5b2813f97d75c1efull, 0xe745e477fa5da8d9ull, 0x2c8ea272cfba7ef5ull, 0x5f39b10f09518b4bull, 0x292ee3054d685072ull }}, {{ 0x955197ac88ed06efull, 0x8f90c7bee699935dull, 0x08baecafc7a8987dull, 0xbd92587c1d48f59bull, 0xb840ea965d2f70efull, 0x9bd4de3506132477ull }}, {{ 0xd52fecbd59424559ull, 0x9ba7cd7501ffc1a7ull, 0x574d3eddcc95f4e7ull, 0x67b774d924d9980eull, 0x328929dfa3da695dull, 0x1650ae123cbf6cadull }}, {{ 0x53df3f657c96b57aull, 0x148e069213fd908eull, 0x690474a9fddb910cull, 0x0d2a907b707ff08full, 0xf95ba2bc66881da6ull, 0xdf26ccb65f7a3ec3ull }}, {{ 0x46b879f6dde316bfull, 0xcd8c41b4c7e7a58full, 0x1a2c8ea3ea93aa78ull, 0x83a9a4d264ff659aull, 0xbd945b5c0151287cull, 0xb783ff1fbac673a7ull }}, {{ 0xc334c3a4aadee377ull, 0x077a910fcf0c7798ull, 0x05bd926729c4a8b8ull, 0x24a07037f1f9f805ull, 0x67cb91980d2b94ddull, 0x2b27f73d4bc0848dull }}, {{ 0xa00fa46eacb4e2a2ull, 0x4ac9aa9e167cabf7ull, 0x3967b807a1ae9730ull, 0x6e44622f73c3b032ull, 0x0df3aff083b3d0a3ull, 0xaf8fa864f5852d86ull }}, {{ 0x409c6c52bf10da59ull, 0xebe0aa2ce0deb7acull, 0x3e0d304c50d1e7e2ull, 0x4eabd5da85a4e1f6ull, 0x8b84df6525062662ull, 0xdb9c93f19733c73cull }}, {{ 0x861c3b3b76a88778ull, 0x36c6a5c0c8b32cbaull, 0x6c83e2fb28330eddull, 0x12b65a893870d39eull, 0x7330b9f3723d7fd7ull, 0x941dc76fe805c85dull }}, {{ 0x3d1a5052a2954aafull, 0x23c27987d6ffbf49ull, 0x3d26ddcf91fe94a4ull, 0xbb1f895c34684430ull, 0x7fe743827666fe66ull, 0xc929ca5f1039d3a6ull }}, {{ 0x6307233a59d4ead3ull, 0x6598bf4e65fd78dcull, 0x6384aa1bb3f1ce69ull, 0x4f3b5d9a0c12a9e2ull, 0xff08a318a005f003ull, 0xdba1e7b6a2424480ull }}, {{ 0xde47604782512c3aull, 0xf7f7790ffbe6b89bull, 0xe32ea5150772101dull, 0x1851a80478baa2d7ull, 0xf6565ef6403b6021ull, 0x94530d225696ad09ull }}, {{ 0xaec9c2cb172bba47ull, 0xafaaba9fd7033616ull, 0xdfd272d24a74a12bull, 0xf330902cb74a5c6eull, 0x9f5fb59e8251c14aull, 0xcb3e835761e2c263ull }}, {{ 0xd3e19beee7b546caull, 0xdcab4a3e66201ce2ull, 0xbe387c36e88e4bb4ull, 0x7fe5a1bf28e79c54ull, 0x39bd183117318cedull, 0xf0712169d2db97e4ull }}, {{ 0x46d017550d14c3dfull, 0x9eb0e66ffd4120dcull, 0x6e34da25158ef510ull, 0xfef85177990c1b4full, 0x4162f1eae7ef8146ull, 0x646b4e223c93eeeaull }}, {{ 0xc420e95282cfa6b9ull, 0x32e9005fe48b489aull, 0x4e108572d79592a6ull, 0xf5b32eabfa79111aull, 0x8ddd732d0f5b0cc5ull, 0xec310d565dc75526ull }}, {{ 0xa9491d391c1c833cull, 0xfd1a03beed70d60bull, 0x0ca5367c6bd7ba7dull, 0x98ffd2b7c8baab07ull, 0x8aa67fc2998e7fbbull, 0x39ea855fa9c95381ull }}, {{ 0x9cdb243b191d2057ull, 0xe304257546685c74ull, 0x7e7420dc366d48ebull, 0xf9fe3b2dd74aae46ull, 0x6a80fd99ff90fd53ull, 0x432935bca1dd430full }}, {{ 0x208f6a4efb234361ull, 0xde297694c0139c8eull, 0xf089489a2044d936ull, 0xc3ee4fca68eacec0ull, 0x2909e803fba9e547ull, 0x9f9c195e52a49e9aull }}, {{ 0x459a2715cf60a1cbull, 0xad9ea1cf80c41d8dull, 0x655cd60542b07c24ull, 0xa74f1de8192c1389ull, 0x9a631027d4a2f4cdull, 0x3c18fdaf3a6e3205ull }}, {{ 0xb80586da19c651edull, 0xc832521b07a92784ull, 0xf5a05c349ae4d96eull, 0x89172b10fbb8c35dull, 0x07dea18e4e5d9008ull, 0x58f9e8d8484df438ull }}, {{ 0x3037448501bf333dull, 0xd1f7350e4c9b8b2full, 0x98439a0e0cf07e53ull, 0x5ae7aea9d537a1abull, 0x4eb24f8f0fa7a055ull, 0x79c31872d30b8a30ull }}, {{ 0xe228ad3211780067ull, 0x33a8128efe136fd7ull, 0xf2a4048c8164ef46ull, 0x8d0cd2a2542c50b3ull, 0x12f71b969c8c4355ull, 0xc19ef47c3e7365e3ull }}, {{ 0xd596c3f4aeb00404ull, 0x0490b995ecc25e6eull, 0x7a682d7d0df158beull, 0x82803a5749bb2707ull, 0xbda713e21d7aa157ull, 0x90358cda7081fadeull }}, {{ 0x57e3a78ed2e0282aull, 0x2da73fdb3f97b054ull, 0xc811c6e28b6d776cull, 0x19024768e14f864aull, 0x6886c6d526ca4d6bull, 0xa21780886513ccb3ull }}, {{ 0x6ee48b943cc191a6ull, 0xc8887e907bece34bull, 0xd0b1c4d97246aa39ull, 0xfa16ca18cd1b3eebull, 0x1543c45383e7062eull, 0x54eb0553f2c5ff02ull }}, {{ 0x54ed73ca5f8fb081ull, 0xd554f1a4d740e0f2ull, 0x26f1b07e76c2a641ull, 0xc4e3e4f803107536ull, 0xd4a5ab4327063dd5ull, 0x512e35477bbbf614ull }}, {{ 0x514685e7bb9ce508ull, 0x555170706888c977ull, 0x8570e4f0a39a7e92ull, 0xb0e6f1b01ea4941dull, 0x4e78b09f863e6a59ull, 0x2bce14cad5579cd0ull }}, {{ 0x2cc13b0d5420f250ull, 0x552e64641557dea9ull, 0x3668f1666408f1b7ull, 0xe90570e1326dc927ull, 0x10b6e63b3e702780ull, 0xb60ccfec556c2023ull }}, {{ 0xbf8c4e854949771eull, 0x53cfebe8d56eb29bull, 0x20196dffe8597129ull, 0x1a3668cbf849db88ull, 0xa724fe5070618b09ull, 0x1c801f3b5639415eull }}, {{ 0x7b7b1134dcdea72aull, 0x461f37185652fa15ull, 0x40fe4bff137e6b9dull, 0x062017f7b2e29351ull, 0x8771ef2463cf6e5bull, 0x1d0138515e3c8db2ull }}, {{ 0xd2ceac10a0b287a5ull, 0xbd3826f35f3dc4d6ull, 0x89eef7f6c2f03424ull, 0x3d40efacfcd9c12cull, 0x4a73576be61a4f8eull, 0x220c332dae5d88f9ull }}, {{ 0x3c12b8a646f94c72ull, 0x64318581b869b064ull, 0x6355afa39d62096full, 0x64895cc1e0818bbdull, 0xe8816a36fd071b8eull, 0x5479ffc8cfa759bcull }}, {{ 0x58bb367ec5bcfc71ull, 0xe9ef37113420e3eaull, 0xe158dc6425d45e59ull, 0xed5d9f92c50f7565ull, 0x150e2625e247138full, 0x4cc3fdd81c898161ull }}, {{ 0x775020f3b961dc6aull, 0x235826ac0948e727ull, 0xcd789be97a4baf83ull, 0x45a83bbbb29a95faull, 0xd28d7d7ad6c6c39full, 0xffa7ea711d5f0dcaull }}, {{ 0xa92149853dd29c21ull, 0x617182b85cd9078aull, 0x06b6171ec6f4db1full, 0xb8925554fa09dbccull, 0x3986e6cc63c3a438ull, 0xfc8f286b25b689ecull }}, {{ 0x9b4cdf346a3a194cull, 0xce6f1b33a07a4b6aull, 0x431ce733c5908f39ull, 0x35b75551c46295f8ull, 0x3f4503fbe5a46a37ull, 0xdd97942f7921633aull }}, {{ 0x1100b80c2644fcf9ull, 0x1057100444c6f22aull, 0x9f210805b7a59842ull, 0x19295531abd9dbb2ull, 0x78b227d6f86c2628ull, 0xa7ebc9dabb4de046ull }}, {{ 0xaa0730797eb1e1b6ull, 0xa366a02aafc575a4ull, 0x374a50392c77f294ull, 0xfb9d53f0b68294faull, 0xb6f58e65b4397d90ull, 0x8f35e28b510ac2c0ull }}, {{ 0xa447e4bef2f2d11bull, 0x620241aaddb6986eull, 0x28e7223bbcaf79ceull, 0xd42547672119d1c6ull, 0x25978ff90a3ee7a9ull, 0x981ad9712a6b9b87ull }}, {{ 0x6aceef757d7c2b11ull, 0xd41690aca921f452ull, 0x990756555edac20full, 0x4974ca074b0231bdull, 0x77eb9fba66750ca2ull, 0xf10c7e6ba8341347ull }}, {{ 0x2c155a96e6d9aea8ull, 0x48e1a6be9b538b38ull, 0xfa495f55b48b949eull, 0xde8fe448ee15f167ull, 0xaf343d4800927e56ull, 0x6a7cf0349208c0caull }}, {{ 0xb8d589e50480d28cull, 0xd8d0837211437031ull, 0xc6ddb9590d73ce2eull, 0xb19eead94cdb6e0full, 0xd80a64d005b8ef64ull, 0x28e1620db45787eaull }}, {{ 0x385762f22d083975ull, 0x78252274aca261f1ull, 0xc4a93d7a86860dd4ull, 0xf0352c7d00924c9dull, 0x7067f020393959eeull, 0x98cdd4890b6b4f2cull }}, {{ 0x3369dd75c2523e90ull, 0xb173588ebe57d36cull, 0xae9c66c9413c8a4cull, 0x6213bce205b6fe29ull, 0x640f61423c3d8355ull, 0xf80a4d5a723117bcull }}, {{ 0x0222a699973671a2ull, 0xee8175936f6e423aull, 0xd21c03dc8c5d66feull, 0xd4c560d43925eda0ull, 0xe899cc965a672155ull, 0xb067058875eaed5bull }}, {{ 0x155a81ffe8207059ull, 0x510e97c25a4e9644ull, 0x3518269d7ba605f5ull, 0x4fb5c84a3b7b4848ull, 0x1601fddf88074d5aull, 0xe40637549b2d4597ull }}, {{ 0xd58913ff11446378ull, 0x2a91ed978711dea8ull, 0x12f18226d47c3b95ull, 0x1d19d2e652d0d2d2ull, 0xdc13eabb50490587ull, 0xe83e294e0fc4b7e6ull }}, {{ 0x575ac7f6acabe2acull, 0xa9b347eb46b2b298ull, 0xbd6f15844cda53d3ull, 0x23023cff3c283c34ull, 0x98c72b5122da3747ull, 0x126d9d0c9daf2f04ull }}, {{ 0x698bcfa2beb6dab4ull, 0xa100cf30c2faf9f3ull, 0x6656d72b00874644ull, 0x5e1661f859925a0full, 0xf7c7b12b5c8628c7ull, 0xb848227e28d7d62dull }}, {{ 0x1f761c5b73248b07ull, 0x4a0817e79dcdc382ull, 0xff6467ae0548beaeull, 0xacdfd3b37fb78499ull, 0xadccebb19d3d97c9ull, 0x32d158ed986e5dcbull }}, {{ 0x3a9d1b927f6d6e46ull, 0xe450ef0c2a09a315ull, 0xf9ec0ccc34d772ceull, 0xc0be4502fd2b2e03ull, 0xca0134f02467ede0ull, 0xfc2d7947f44fa9f4ull }}, {{ 0x4a2313b8fa464ebbull, 0xeb295679a4605ed4ull, 0xc3387ffa106a7c14ull, 0x876eb21de3afcc27ull, 0xe40c11616c0f4ac7ull, 0xd9c6bccf8b1ca38full }}, {{ 0xe55ec539c6bf134full, 0x2f9d60c06bc3b44aull, 0xa034ffc4a428d8d1ull, 0x4a52f52ae4ddf98dull, 0xe878adce3898ebcbull, 0x81c3601b6f1e639eull }}, {{ 0xf5b3b441c376c116ull, 0xdc25c78435a50aecull, 0x4211fdae6998782bull, 0xe73d93acf0abbf88ull, 0x14b6ca0e35f935f0ull, 0x11a1c112572fe435ull }}, {{ 0x99050a91a2a38ad7ull, 0x9979cb2a18726d41ull, 0x94b3e8d01ff4b1b6ull, 0x0867c4c166b57b52ull, 0xcf23e48e1bbc1b69ull, 0xb0518ab767deea12ull }}, {{ 0xfa3269b05a636c66ull, 0xfec1efa4f478448full, 0xcf0718213f8ef121ull, 0x540daf8e0316d139ull, 0x1766ed8d1559121aull, 0xe32f6b2a0eb524bcull }}, {{ 0xc5f820e387e23bffull, 0xf3935c718cb2ad9full, 0x1646f14c7b956b53ull, 0x4888db8c1ee42c42ull, 0xea054782d57ab507ull, 0xdfda2fa493136f58ull }}, {{ 0xbbb148e34ed657f4ull, 0x83c19c6f7efac83dull, 0xdec56cfcd3d63147ull, 0xd558937934e9ba94ull, 0x2434cb1c56cb1248ull, 0xbe85dc6dbec25979ull }}, {{ 0x54ecd8e1145f6f8bull, 0x25901c5af5cbd269ull, 0xb3b641e0465deccbull, 0x5575c2bc112149d0ull, 0x6a0fef1b63eeb6d8ull, 0x713a9c4973977ebbull }}, {{ 0x514078cacbba5b6eull, 0x77a11b8d99f6381dull, 0x051e92c2bfab3fefull, 0x56999b58ab4ce227ull, 0x249f5711e7532473ull, 0x6c4a1ade83eaf352ull }}, {{ 0x2c84b7ebf547924bull, 0xac4b1388039e3125ull, 0x3331bb9b7cb07f5aull, 0x62001176b100d586ull, 0x6e3966b3093f6c81ull, 0x3ae50cb1272d8135ull }}, {{ 0xbd2f2f3794cbb6f0ull, 0xbaeec350242deb73ull, 0xfff15412dee4f98aull, 0xd400aea2ea08573dull, 0x4e3e02fe5c7a3d0dull, 0x4cf27eeb87c70c16ull }}, {{ 0x63d7d82bcff5255cull, 0x4d53a12169cb3285ull, 0xff6d48bcb4f1bf6bull, 0x4806d25d2453686bull, 0x0e6c1def9cc6628aull, 0x0178f5334dc678dfull }}, {{ 0xe66e71b61f937598ull, 0x05444b4e21eff935ull, 0xfa44d75f11717a31ull, 0xd04437a36b421437ull, 0x90392b5c1fbfd966ull, 0x0eb9940109c0b8b6ull }}, {{ 0x0050711d3bc297f2ull, 0x34aaf10d535fbc1bull, 0xc6b069b6ae6ec5eaull, 0x22aa2c623094ca2full, 0xa23bb1993d7e7e04ull, 0x933fc80a61873721ull }}, {{ 0x03246b245599ef76ull, 0x0ead6a8541bd590eull, 0xc2e42122d053bb26ull, 0x5aa5bbd5e5cfe5ddull, 0x5654effc66f0ec29ull, 0xc07dd067cf482750ull }}, {{ 0x1f6c2f6b58035a9eull, 0x92c6293491657a8cull, 0x9ce94b5c23454f7cull, 0x8a79565afa1efaa9ull, 0x5f515fdc0569399dull, 0x84ea240e18d18923ull }}, {{ 0x3a39da3170218a2full, 0xbbbd9c0dadf6c979ull, 0x211cf19960b51addull, 0x68bd5f8dc535caa0ull, 0xb92dbe98361c4027ull, 0x3125688cf82f5b61ull }}, {{ 0x464285ee614f65d5ull, 0x55681888cba3debcull, 0x4b216ffdc7130ca9ull, 0x1765bb89b419ea41ull, 0x3bc971f21d1a818aull, 0xeb761581b1d991d1ull }}, {{ 0xbe993b4fcd19fa4eull, 0x5610f557f466b35aull, 0xef4e5fe9c6be7e9dull, 0xe9f953610903268cull, 0x55de737523090f64ull, 0x329cd710f27fb22cull }}, {{ 0x71fc511e0303c70full, 0x5ca9956f8c03018bull, 0x590fbf21c370f225ull, 0x23bd41ca5a1f8181ull, 0x5ab082935e5a99f1ull, 0xfa2066a978fcf5bbull }}, {{ 0x73db2b2c1e25c698ull, 0x9e9fd65b781e0f72ull, 0x7a9d7751a2697575ull, 0x656491e7853b0f0dull, 0x8ae519c1af8a036bull, 0xc544029eb9e19951ull }}, {{ 0x868fafb92d79c1ecull, 0x323e5f92b12c9a78ull, 0xca26a930581e9698ull, 0xf5edb30b344e9686ull, 0x6cf30190db642231ull, 0xb4a81a3342cffd2full }}, {{ 0x419cdd3bc6c1933aull, 0xf66fbbbaebbe08b5ull, 0xe5829be37131e1f1ull, 0x9b48fe700b11e143ull, 0x417e0fa891e955f3ull, 0x0e9106009c1fe3daull }}, {{ 0x9020a455c38fc045ull, 0xa05d554d356c5714ull, 0xf71a16e26bf2d373ull, 0x10d9f0606eb2cca6ull, 0x8eec9c95b31d5b84ull, 0x91aa3c06193ee686ull }}, {{ 0xa1466b59a39d82b4ull, 0x43a55504163b66cdull, 0xa704e4d8377c4284ull, 0xa88363c452fbfe85ull, 0x953e1dd8ff259328ull, 0xb0a6583cfc750141ull }}, {{ 0x4cc0318064271b0bull, 0xa4755228de520408ull, 0x8630f0722ada992aull, 0x9521e5ab3dd7f138ull, 0xd46d2a79f777bf96ull, 0xe67f7261dc920c8full }}, {{ 0xff81ef03e9870e71ull, 0x6c953598af342852ull, 0x3de96475ac89fbaaull, 0xd352f8b06a6f6c35ull, 0x4c43a8c3aaad7be1ull, 0x00fa77d29db47d9eull }}, {{ 0xfb1356271f469068ull, 0x3dd417f6d809933dull, 0x6b1dec98bd63d4a8ull, 0x413db6e4285a3a14ull, 0xfaa497a4aac6d6d2ull, 0x09c8ae3a290ce82eull }}, {{ 0xcec15d8738c1a410ull, 0x6a48efa4705fc06bull, 0x2f2b3df765e64e92ull, 0x8c6924e9938644ccull, 0xca6dec6eabc46436ull, 0x61d6ce459a8111d5ull }}, {{ 0x138da7483790689cull, 0x26d95c6c63bd8436ull, 0xd7b06ba9faff11b8ull, 0x7c1b711fc33eaff9ull, 0xe84b3c52b5abea21ull, 0xd2640eb8090ab259ull }}, {{ 0xc38888d22ba41617ull, 0x847d9c3be5672a1cull, 0x6ce434a3cdf6b131ull, 0xd9126b3da072dfc2ull, 0x12f05b3b18b7254eull, 0x37e893305a6af783ull }}, {{ 0xa3555835b468dce3ull, 0x2ce81a56f607a51full, 0x40ea0e660ba2ebefull, 0x7ab83068447cbd98ull, 0xbd63904ef7277514ull, 0x2f15bfe3882dab1eull }}, {{ 0x615572190c18a0e2ull, 0xc11107659c4c733cull, 0x89248ffc745d3757ull, 0xcb31e412acdf67f2ull, 0x65e3a315a78a92ccull, 0xd6d97ee351c8af33ull }}, {{ 0xcd5674fa78f648d5ull, 0x8aaa49f81afc805bull, 0x5b6d9fdc8ba4296dull, 0xeff2e8bac0ba0f79ull, 0xfae45ed88b69bbffull, 0x647ef4e131d6d801ull }}, {{ 0x056091c8b99ed854ull, 0x6aa6e3b10ddd0396ull, 0x92483e9d74699e47ull, 0x5f7d174b87449abdull, 0xccebb475722157ffull, 0xecf590cbf2647013ull }}, {{ 0x35c5b1d740347347ull, 0x2a84e4ea8aa223dcull, 0xb6d272268c202ecaull, 0xbae2e8f348ae0b67ull, 0x01350c96754d6ff9ull, 0x4197a7f777ec60c6ull }}, {{ 0x19b8f268820c80c2ull, 0xa930f1296a55669aull, 0x243875817941d3e5ull, 0x4cdd1980d6cc720dull, 0x0c127de095065fc1ull, 0x8fec8faaaf3bc7bcull }}, {{ 0x01397815147d0792ull, 0x9be96b9e27560205ull, 0x6a34970ebc9246f8ull, 0x00a2ff0863fc7483ull, 0x78b8eac5d23fbd8dull, 0x9f3d9caad855cd58ull }}, {{ 0x0c3eb0d2cce24bb5ull, 0x171e342d895c1432ull, 0x260de6935db6c5b6ull, 0x065df653e7dc8d22ull, 0xb7392bba367d6782ull, 0x38681eac735a0574ull }}, {{ 0x7a72e83c00d6f513ull, 0xe72e09c75d98c9f4ull, 0x7c8b01c1a923b91cull, 0x3fab9f470e9d8355ull, 0x283bb54620e60b14ull, 0x341132bc8184368full }}, {{ 0xc87d1258086592baull, 0x07cc61c9a7f7e38cull, 0xdd6e11909b653b21ull, 0x7cb438c692272156ull, 0x925514bd48fc6ecaull, 0x08abfb5d0f2a2197ull }}, {{ 0xd4e2b77053f7bb40ull, 0x4dfbd1e08faee37full, 0xa64cafa611f44f4aull, 0xdf0a37c1b5874d64ull, 0xb752cf64d9dc53e8ull, 0x56b7d1a297a54febull }}, {{ 0x50db2a6347ad5081ull, 0x0bd632c59cd4e2feull, 0x7efedc7cb38b18e7ull, 0xb6662d91174905eeull, 0x293c19f0829b4718ull, 0x632e3059ec751f35ull }}, {{ 0x288fa7e0ccc52507ull, 0x765dfbb82050ddefull, 0xf5f49cdf036ef906ull, 0x1ffdc7aae8da3b50ull, 0x9c5903651a10c6f7ull, 0xdfcde3833c933813ull }}, {{ 0x959c8ec7ffb37245ull, 0x9fabd5314328ab57ull, 0x9b8e20b62255ba40ull, 0x3fe9ccad18865129ull, 0x1b7a21f304a7c5a7ull, 0xbe0ae3205dc030c4ull }}, {{ 0xd81d93cffd0276afull, 0x3cb653ec9f96b16bull, 0x138d471d57594686ull, 0x7f21fec2f53f2ba0ull, 0x12c5537e2e8db888ull, 0x6c6cdf43a981e7a9ull }}, {{ 0x7127c61fe218a2d6ull, 0x5f1f473e3be2ee36ull, 0xc384c725697cc13eull, 0xf753f39d9477b440ull, 0xbbb542edd1893554ull, 0x3c40b8a49f130c9aull }}, {{ 0x6b8dbd3ed4f65c5bull, 0xb738c86e56dd4e20ull, 0xa32fc7761edf8c6full, 0xa9478427ccad0a87ull, 0x55149d4a2f5c1551ull, 0x5a87366e36be7e0bull }}, {{ 0x33896474519f9b8bull, 0x2837d44f64a50d44ull, 0x5fddca9d34bb7c5dull, 0x9ccb298dfec2694cull, 0x52ce24e5d998d530ull, 0x8948204e2370ec71ull }}, {{ 0x035dec8b303c1373ull, 0x922e4b19ee7284aaull, 0xbea9ea240f52dba3ull, 0x1fef9f8bf3981cfbull, 0x3c0d70fa7ff853e6ull, 0x5cd1430d62693c6dull }}, {{ 0x21ab3d6fe258c27dull, 0xb5ceef0350792ea4ull, 0x72a32568993c9463ull, 0x3f5c3b7783f121d5ull, 0x588669c8ffb346fdull, 0xa02c9e85d81c5c44ull }}, {{ 0x50b0665ed77798e7ull, 0x1a15562124bbd269ull, 0x7a5f7615fc5dcbe5ull, 0x799a52ab276b5256ull, 0x754021d9fd00c5e4ull, 0x41be313a711b9aabull }}, {{ 0x26e3ffb46aabf905ull, 0x04d55d4b6f56381dull, 0xc7ba9cdbdba9f6f3ull, 0xc0073aaf8a313760ull, 0x94815283e207baecull, 0x916dec486b140ab2ull }}, {{ 0x84e7fd0c2ab7ba35ull, 0x3055a4f2595e3123ull, 0xcd4a209694a3a57eull, 0x80484adb65ec29c7ull, 0xcd0d3926d44d4d3full, 0xae4b3ad42ec86af9ull }}, {{ 0x310fe279ab2d4616ull, 0xe35871777dadeb63ull, 0x04e545e1ce6476edull, 0x02d2ec91fb39a1ceull, 0x02843b844b05047bull, 0xcef04c49d3d42dc2ull }}, {{ 0xea9ed8c0afc4bcdfull, 0xe1746eaae8cb31dfull, 0x30f4bad20feca54aull, 0x1c3d3db3d040520cull, 0x192a532aee322cceull, 0x1562fae24649c994ull }}, {{ 0x2a347786ddaf60b8ull, 0xce8c52ad17eff2bfull, 0xe98f4c349f3e74ecull, 0x1a64690622833479ull, 0xfba73fad4df5c00dull, 0xd5ddccd6bee1dfc8ull }}, {{ 0xa60cab44a8d9c731ull, 0x117b3ac2ef5f7b77ull, 0x1f98fa0e38709140ull, 0x07ec1a3d59200cc3ull, 0xd4887cc50b998083ull, 0x5aaa006374d2bdd9ull }}, {{ 0x7c7eb0ae9881c7e7ull, 0xaed04b9d59bad2acull, 0x3bf9c48e3465ac80ull, 0x4f3906657b407f9full, 0x4d54dfb273ff051eull, 0x8aa403e2903b6a82ull }}, {{ 0xdcf2e6d1f511cf01ull, 0xd422f425814c3abcull, 0x57c1ad8e0bf8bd06ull, 0x183a3ff6d084fc38ull, 0x0550bcf887f6332full, 0x6a6826d9a2522917ull }}, {{ 0xa17d043392b2160bull, 0x495d89770cfa4b60ull, 0x6d90c78c77b76244ull, 0xf2467fa42531da33ull, 0x352761b54f9dffd6ull, 0x2811848057359ae6ull }}, {{ 0x4ee22a03baf4dc6bull, 0xdda75ea681c6f1c6ull, 0x47a7cb7cad29d6aaull, 0x76c0fc6973f28602ull, 0x1389d1151c2bfe65ull, 0x90af2d0368180cfeull }}, {{ 0x14d5a4254d909c2cull, 0xa889b28111c571bfull, 0xcc8df2dec3a262acull, 0xa389dc1e87793c16ull, 0xc3622ad319b7eff6ull, 0xa6d7c22210f081ecull }}, {{ 0xd058697507a619b7ull, 0x9560f90ab1b67176ull, 0xfd8b7cb3a457dabeull, 0x636299314abc58e3ull, 0xa1d5ac3f012f5fa2ull, 0x846d9554a965133full }}, {{ 0x23741e924c7d0123ull, 0xd5c9ba6af1206ea4ull, 0xe772df046b6e8b71ull, 0xe1d9fbeceb5b78e7ull, 0x5258ba760bd9bc57ull, 0x2c47d54e9df2c07cull }}, {{ 0x628931b6fce20b5dull, 0x59e1482d6b445269ull, 0x0a7cb62c32517272ull, 0xd283d7413192b90full, 0x3777489c76815b6eull, 0xbace55122b7b84dbull }}, {{ 0xd95bf125e0d471a4ull, 0x82ccd1c630ab381dull, 0x68df1db9f72e7877ull, 0x3926688befbb3a96ull, 0x2aa8d61ca10d9254ull, 0x4c0f52b5b2d33090ull }}, {{ 0x7d976b7ac84c7069ull, 0x1c0031bde6b0312aull, 0x18b72943a7d0b4abull, 0x3b8015775d5049e0ull, 0xaa985d1e4a87b74aull, 0xf8993b18fc3fe5a1ull }}, {{ 0xe7ea32cbd2fc641aull, 0x1801f16b02e1eba8ull, 0xf7279ca48e270eafull, 0x5300d6a9a522e2c0ull, 0xa9f3a32ee94d28e6ull, 0xb5fc4ef9da7ef850ull }}, {{ 0x0f25fbf63ddbe902ull, 0xf0136e2e1cd33499ull, 0xa78c1e6d8d8692d6ull, 0x3e0862a0735cdb89ull, 0xa3845fd51d0398ffull, 0x1bdb15c288f5b326ull }}, {{ 0x977bd79e6a971a14ull, 0x60c24dcd20400dfaull, 0x8b7930478741bc65ull, 0x6c53da4481a09360ull, 0x632bbe532223f9f8ull, 0x168ed9995998ff82ull }}, {{ 0xead66c3029e704c3ull, 0xc7970a0342808bc9ull, 0x72bbe2cb48915bf5ull, 0x3b4686ad1045c1c5ull, 0xdfb56f3f5567c3b4ull, 0xe1947ffd7ff9fb17ull }}, {{ 0x2c6039e1a3062f9full, 0xcbe66420990575e3ull, 0x7b56dbf0d5ad9799ull, 0x50c142c2a2b991b6ull, 0xbd165879560da50aull, 0xcfccffe6ffc3ceeeull }}, {{ 0xbbc242d05e3ddc38ull, 0xf6ffe945fa369adfull, 0xd164976858c7ec01ull, 0x278c9b9a5b3fb120ull, 0x62df74bd5c887267ull, 0x1e01ff05fda61553ull }}, {{ 0x55969c23ae6a9a2eull, 0xa5ff1cbbc6220cbdull, 0x2dedea1377cf3813ull, 0x8b7e1407907ceb48ull, 0xdcba8f659d547807ull, 0x2c13f63be87cd541ull }}, {{ 0x57e21964d02a05d0ull, 0x7bf71f55bd547f65ull, 0xcb4b24c2ae1830c4ull, 0x72ecc84ba4e130d1ull, 0x9f4999f8254cb04bull, 0xb8c79e5714e05492ull }}, {{ 0x6ed4fdf021a43a1dull, 0xd7a73959654cf9f5ull, 0xf0ef6f9accf1e7acull, 0x7d3fd2f470cbe831ull, 0x38e003b174fee2f2ull, 0x37cc2f66d0c34dbaull }}, {{ 0x5451eb61506a4525ull, 0x6c883d7df501c396ull, 0x695a5c0c01730cc0ull, 0xe47e3d8c67f711f3ull, 0x38c024ee91f4dd78ull, 0x2df9da0427a10946ull }}, {{ 0x4b3331cd2426b373ull, 0x3d5266eb9211a3dfull, 0x1d8798780e7e7f84ull, 0xecee677c0fa6b382ull, 0x37817151b390a6b8ull, 0xcbc284298c4a5cbeull }}, {{ 0xeffff2036983027bull, 0x65380533b4b066b8ull, 0x274bf4b090f0fb2aull, 0x41500ad89c830315ull, 0x2b0e6d3103a68339ull, 0xf599299f7ae79f6eull }}, {{ 0x5fff74221f1e18cdull, 0xf43034050ee40339ull, 0x88f78ee5a969cfa7ull, 0x8d206c761d1e1ed3ull, 0xae9043ea2481203cull, 0x97fba03acd0c3a4dull }}, {{ 0xbffa8955372cf801ull, 0x89e2083294e8203dull, 0x59ab94f89e221c8full, 0x83443c9d232d3443ull, 0xd1a2a7256d0b425dull, 0xefd4424c027a4708ull }}, {{ 0x7fc95d5427c1b008ull, 0x62d451f9d1114269ull, 0x80b3d1b62d551d9bull, 0x20aa5e235fc40aa1ull, 0x305a8776427097a7ull, 0x5e4a96f818c6c658ull }}, {{ 0xfddda5498d90e051ull, 0xdc4b33c22aac981eull, 0x0706311dc5532811ull, 0x46a7ad61bda86a4full, 0xe3894a9e9865ec87ull, 0xaee9e5b0f7c3bf71ull }}, {{ 0xeaa874df87a8c32bull, 0x9af00595aabdf135ull, 0x463deb29b53f90b2ull, 0xc28cc5d168942716ull, 0xe35cea31f3fb3d48ull, 0xd522f8e9ada57a72ull }}, {{ 0x2a9490bb4c979facull, 0x0d6037d8ab6b6c1bull, 0xbe6b2fa1147ba6faull, 0x997fba2e15c986deull, 0xe1a125f387d064d7ull, 0x535db920c876c87cull }}, {{ 0xa9cda750fdec3cbcull, 0x85c22e76b232390full, 0x702fdc4accd485c4ull, 0xfefd45ccd9df44b3ull, 0xd04b7b834e23f06bull, 0x41a93b47d4a3d4e0ull }}, {{ 0xa2088929eb3a5f55ull, 0x3995d0a2f5f63a9cull, 0x61de9aec004d39adull, 0xf5e4ba0082b8af02ull, 0x22f2d3210d676437ull, 0x909c50ce4e6650c8ull }}, {{ 0x54555ba33047b94dull, 0x3fda265d9b9e4a1eull, 0xd2b20d38030440c4ull, 0x9aef44051b36d617ull, 0x5d7c3f4a8609ea2full, 0xa61b280f0fff27d1ull }}, {{ 0x4b55945fe2cd3d04ull, 0x7e857fa8142ee52full, 0x3af484301e2a87aaull, 0x0d58a83310245ceeull, 0xa6da78e93c6325dcull, 0x7d0f90969ff78e2dull }}, {{ 0xf157cbbedc04622bull, 0xf136fc90c9d4f3d8ull, 0x4d8d29e12da94ca8ull, 0x857691fea16ba14eull, 0x8488b91c5bdf7a98ull, 0xe29ba5e23fab8dc8ull }}, {{ 0x6d6df574982bd5abull, 0x6c25dda7e2518679ull, 0x0783a2cbc89cfe99ull, 0x36a1b3f24e344d0full, 0x2d573b1b96bac9f5ull, 0xda147ad67cb389d5ull }}, {{ 0x464b968df1b658b0ull, 0x397aa88ed72f40beull, 0x4b245bf5d621f1feull, 0x225107770e0b0296ull, 0xc5684f13e34be394ull, 0x84cccc60df036253ull }}, {{ 0xbef3e18b711f76dbull, 0x3eca959467d8876eull, 0xef6b979a5d5373eeull, 0x572a4aa68c6e19deull, 0xb61316c6e0f6e3c9ull, 0x2ffffbc8b621d745ull }}, {{ 0x7586cf726b3aa491ull, 0x73e9d7cc0e754a53ull, 0x5a33ec07a542874eull, 0x67a6ea817c4d02b5ull, 0x1cbee3c4c9a4e5ddull, 0xdfffd5d71d5268b9ull }}, {{ 0x97441a78304a6daaull, 0x87226df89094e742ull, 0x8607384c74994910ull, 0x0c85290edb021b15ull, 0x1f74e5afe070faa6ull, 0xbffe5a672538173bull }}, {{ 0xe8a908b1e2e848a3ull, 0x47584bb5a5d10899ull, 0x3c4832fc8dfcdaa5ull, 0x7d339a948e150ed7ull, 0x3a90f8dec469ca7cull, 0x7fef88077430e84full }}, {{ 0x169a56f2dd12d65cull, 0xc972f5187a2a5603ull, 0x5ad1fddd8be08a74ull, 0xe40409cd8cd29468ull, 0x49a9b8b3ac21e8dcull, 0xff5b504a89e91318ull }}, {{ 0xe207657ca2bc5f9aull, 0xde7d92f4c5a75c1eull, 0x8c33eaa776c5688full, 0xe82862078039cc13ull, 0xe0a13704b95318a0ull, 0xf99122e9631abef2ull }}, {{ 0xd449f6de5b5bbc08ull, 0xb0e7bd8fb8899934ull, 0x7a072a8aa3b6159eull, 0x1193d44b0241f8c3ull, 0xc64c262f3d3ef649ull, 0xbfab5d1ddf0b757cull }}, {{ 0x4ae3a4af91955850ull, 0xe90d679d355ffc10ull, 0xc447a96a651cd832ull, 0xafc64aee1693b7a2ull, 0xbef97dd864759edaull, 0x7cb1a32ab67296dfull }}, {{ 0xece46edbafd57323ull, 0x1a860c2415bfd8a2ull, 0xaacc9e27f32071fdull, 0xddbeed4ce1c52c5bull, 0x75beea73ec98348aull, 0xdef05fab2079e4bdull }}, {{ 0x40ec5494de567f5dull, 0x093c7968d97e765dull, 0xabfe2d8f7f4473e3ull, 0xa9754500d1b3bb94ull, 0x997528873df20d6cull, 0xb563bcaf44c2ef66ull }}, {{ 0x893b4dd0af60f9a6ull, 0x5c5cbe187ef09fa4ull, 0xb7edc79af8ac86deull, 0x9e94b208310553ceull, 0xfe9395486b74863eull, 0x15e55ed8af9d5a01ull }}, {{ 0x5c510a26d9c9c07cull, 0x9b9f6cf4f5663c6dull, 0x2f49cc0db6bd44afull, 0x31cef451ea354613ull, 0xf1c3d4d4328d3e72ull, 0xdaf5b476dc258413ull }}, {{ 0x9b2a658481e184d7ull, 0x143a419195fe5c45ull, 0xd8e1f8892364aedcull, 0xf2158b332614bcbfull, 0x71a65049f9847075ull, 0x8d990ca4997728c7ull }}, {{ 0x0fa7f72d12cf3069ull, 0xca468fafdbef9ab8ull, 0x78d3b55b61eed498ull, 0x74d76fff7ccf5f7eull, 0x707f22e3bf2c649bull, 0x87fa7e6dfea797caull }}, {{ 0x9c8fa7c2bc17e416ull, 0xe6c19cde975c0b30ull, 0xb8451591d3544df7ull, 0x906a5ffae019baf0ull, 0x64f75ce577bbee12ull, 0x4fc8f04bf28bede8ull }}, {{ 0x1d9c8d9b58eee8dfull, 0x039020b1e9986fe6ull, 0x32b2d7b2414b0bafull, 0xa427bfccc1014d67ull, 0xf1a9a0f6ad574cb9ull, 0x1dd962f779774b13ull }}, {{ 0x281d8811795518b5ull, 0x23a146f31ff45efdull, 0xfafc6cf68cee74d6ull, 0x698d7dff8a0d0607ull, 0x70a049a2c568ff40ull, 0x2a7dddaabea8eec7ull }}, {{ 0x912750aebd52f713ull, 0x644cc57f3f8bb5e3ull, 0xcddc41a18150905dull, 0x1f86ebfb64823c4full, 0x6642e05bb619f884ull, 0xa8eaa8ab729953caull }}, {{ 0xab8926d3653da6beull, 0xeaffb6f87b751ae3ull, 0x0a9a904f0d25a3a5ull, 0x3b4537d1ed165b1eull, 0xfe9cc3951d03b529ull, 0x992a96b279fd45e7ull }}, {{ 0xb35b8441f4688369ull, 0x2dfd25b4d2930ce4ull, 0x6a09a3168378647bull, 0x50b42e3342df8f2cull, 0xf21fa3d32225139cull, 0xfba9e2f8c3e4bb0full }}, {{ 0x01932a938c152219ull, 0xcbe3791039be80efull, 0x24605ee122b3eccfull, 0x2709ce009cbb97bcull, 0x753c663f5572c41bull, 0xd4a2ddb7a6ef4e9full }}, {{ 0x0fbfa9c378d354f7ull, 0xf6e2baa241710956ull, 0x6bc3b4cb5b07401dull, 0x86620c061f53ed59ull, 0x945bfe79567ba90full, 0x4e5ca92c8559123aull }}, {{ 0x9d7ca1a2b84151a6ull, 0xa4db4a568e6a5d5cull, 0x35a50ff18e48812bull, 0x3fd4783d3947457eull, 0xcb97f0bd60d49a9bull, 0x0f9e9bbd357ab649ull }}, {{ 0x26de505b328d3080ull, 0x7090e7619027a59eull, 0x18729f6f8ed50bb4ull, 0x7e4cb2643cc8b6eeull, 0xf3ef6765c84e0a10ull, 0x9c32156416cb1ee1ull }}, {{ 0x84af238ff983e4feull, 0x65a909cfa18c782dull, 0xf47a3a5b9452750cull, 0xeefef7ea5fd7254cull, 0x875a09f9d30c64a4ull, 0x19f4d5e8e3ef34d3ull }}, {{ 0x2ed7639fbf26f1efull, 0xf89a621c4f7cb1c7ull, 0x8cc64793cb38927bull, 0x55f5af27be677501ull, 0x498463c23e7bee71ull, 0x03905b18e7581043ull }}, {{ 0xd469e43d77857354ull, 0xb607d51b1adef1c7ull, 0x7fbecbc5f035b8d7ull, 0x5b98d78d700a920full, 0xdf2be59670d7506dull, 0x23a38ef90970a2a0ull }}, {{ 0x4c22ea66ab36814bull, 0x1c4e530f0cb571ceull, 0xfd73f5bb6219386dull, 0x93f86b866069b49aull, 0xb7b6f7e068692445ull, 0x646395ba5e665a48ull }}, {{ 0xf95d2802b0210cedull, 0x1b0f3e967f16720eull, 0xe6879951d4fc3443ull, 0xc7b4333fc4210e0dull, 0x2d25aec4141b6ab7ull, 0xebe3d947afff86d7ull }}, {{ 0xbda3901ae14a813full, 0x0e9871e0f6e07495ull, 0x014bfd3251da0a9full, 0xcd0a007da94a8c8bull, 0xc378d3a8c9122b2dull, 0x36e67cccdffb4467ull }}, {{ 0x6863a10ccce90c78ull, 0x91f472c9a4c48dd9ull, 0x0cf7e3f732846a36ull, 0x026404e89ce97d6eull, 0xa2b84497dab5afcaull, 0x2500e000bfd0ac0dull }}, {{ 0x13e44a80011a7cb3ull, 0xb38c7be06fad8a7eull, 0x81aee7a7f92c2621ull, 0x17e83116211ee64cull, 0x5b32adee8b18dde4ull, 0x7208c0077e26b888ull }}, {{ 0xc6eae9000b08defeull, 0x037cd6c45cc768ecull, 0x10d50c8fbbb97d51ull, 0xef11eadd4b34fefdull, 0x8ffacb516ef8aae8ull, 0x7457804aed833553ull }}, {{ 0xc52d1a006e58b5f0ull, 0x22e063ab9fca193full, 0xa8527d9d553ee52aull, 0x56b32ca4f011f5e2ull, 0x9fcbf12e55b6ad19ull, 0x8b6b02ed47201543ull }}, {{ 0xb3c304044f771b63ull, 0x5cc3e4b43de4fc7dull, 0x9338e8255474f3a5ull, 0x62ffbe7160b39adaull, 0x3df76bcf5922c2fdull, 0x722e1d44c740d4a4ull }}, {{ 0x059e282b1aa711e1ull, 0x9fa6ef0a6af1dce9ull, 0xc03911754c918475ull, 0xddfd706dc7040c89ull, 0x6baa36197b5b9de5ull, 0x75cd24afc8884e6aull }}, {{ 0x382d91af0a86b2ccull, 0x3c8556682d72a11aull, 0x823aae94fdaf2c98ull, 0xabe66449c6287d61ull, 0x34a61cfed1942afaull, 0x9a036eddd5531028ull }}, {{ 0x31c7b0d66942fbf6ull, 0x5d356011c67a4b06ull, 0x164ad1d1e8d7bdf2ull, 0xb6ffeae1bd94e5cfull, 0x0e7d21f42fc9adcaull, 0x042254aa553ea192ull }}, {{ 0xf1cce8601c9dd79aull, 0xa415c0b1c0c6ee3dull, 0xdeec3233186d6b77ull, 0x25ff2cd167d0fa16ull, 0x90e35389dde0c9ebull, 0x29574ea754724fb4ull }}, {{ 0x720113c11e2a6c06ull, 0x68d986f187c54e6bull, 0xb539f5fef44632acull, 0x7bf7c02e0e29c4e4ull, 0xa8e14362aac7e32full, 0x9d6912894c771d0dull }}, {{ 0x740ac58b2da83838ull, 0x187f456f4db51032ull, 0x14439bf58abdfabcull, 0xd7ad81cc8da1b0efull, 0x98cca1daabcedfdaull, 0x261ab95cfca72288ull }}, {{ 0x886bb76fc892322eull, 0xf4f8b6590912a1f8ull, 0xcaa417976b6bcb58ull, 0x6cc711fd8850e956ull, 0xf7fe528ab614be8cull, 0x7d0b3da1de875955ull }}, {{ 0x54352a5dd5b5f5d1ull, 0x91b71f7a5aba53b5ull, 0xea68ebea3235f179ull, 0x3fc6b3e753291d63ull, 0xafef396b1ccf717cull, 0xe2706852b1497d5bull }}, {{ 0x4a13a7aa591b9a28ull, 0xb1273ac78b474515ull, 0x28193725f61b6ebfull, 0x7dc307093f9b25e7ull, 0xdf583e2f201a6edaull, 0xd864133aecdee594ull }}, {{ 0xe4c48ca77b140590ull, 0xeb884bcb70c8b2d4ull, 0x90fc277b9d12537cull, 0xe99e465c7c0f7b07ull, 0xb9726dd741085488ull, 0x73e8c04d40b4f7d0ull }}, {{ 0xefad7e8acec837a2ull, 0x3352f5f267d6fc50ull, 0xa9d98ad422b742e1ull, 0x202ebf9cd89ace4bull, 0x3e784a688a534d59ull, 0x871783048711ae27ull }}, {{ 0x5cc6f16c13d22c51ull, 0x013d9b780e65db29ull, 0xa27f6c495b289cccull, 0x41d37c20760c0ef4ull, 0x70b2e8156741057bull, 0x46eb1e2d46b0cd88ull }}, {{ 0x9fc56e38c635bb2aull, 0x0c6812b08ffa8f9dull, 0x58fa3add8f961ff8ull, 0x9242d9449c78958eull, 0x66fd10d6088a36d0ull, 0xc52f2dc4c2e80754ull }}, {{ 0x3db64e37be194fa7ull, 0x7c10bae59fc99c28ull, 0x79c64ca79bdd3fb0ull, 0xb69c7cae1cb5d78full, 0x05e2a85c55662425ull, 0xb3d7c9af9d10494cull }}, {{ 0x691f0e2d6cfd1c81ull, 0xd8a74cf83de01992ull, 0xc1befe8c16a47ce4ull, 0x221cdecd1f1a6b9aull, 0x3ada939b55fd6979ull, 0x066de0dc22a2dcf8ull }}, {{ 0x1b368dc641e31d0dull, 0x768901b26ac0ffb8ull, 0x9175f178e26ce0f0ull, 0x5520b4033708340bull, 0x4c89c4115be61ebbull, 0x404ac8995a5ca1b2ull }}, {{ 0x102189be92df227eull, 0xa15a10f82b89fd31ull, 0xae9b6eb8d840c964ull, 0x5347082026520873ull, 0xfd61a8ad96fd3351ull, 0x82ebd5fd879e50f6ull }}, {{ 0xa14f6171bcb758e9ull, 0x4d84a9b1b363e3eaull, 0xd21253387287ddeeull, 0x40c651417f345484ull, 0xe5d096c7e5e4012dull, 0x1d365be74c2f29a5ull }}, {{ 0x4d19ce715f29791aull, 0x072ea0f101e6e72aull, 0x34b74034794eab4full, 0x87bf2c8ef80b4d30ull, 0xfa25e3cefae80bc4ull, 0x241f9708f9d7a07aull }}, {{ 0x0302106db79ebb09ull, 0x47d2496a130507a7ull, 0x0f28820cbd12b116ull, 0x4d77bd95b07103e2ull, 0xc57ae615cd1075adull, 0x693be659c26c44cdull }}, {{ 0x1e14a4492c334e58ull, 0xce36de24be324c86ull, 0x9795147f62baeadeull, 0x06ad67d8e46a26d4ull, 0xb6ccfcda02a498c5ull, 0x1c56ff81983ab009ull }}, {{ 0x2cce6adbba010f6dull, 0x0e24ad6f6df6fd3dull, 0xebd2ccf9db4d2cb4ull, 0x42c60e78ec25844dull, 0x2401e0841a6df7b2ull, 0x1b65fb0ff24ae061ull }}, {{ 0xc0102c95440a9a46ull, 0x8d6ec65a4ba5e463ull, 0x363c01c29103bf08ull, 0x9bbc90b939772b0bull, 0x6812c529084bacf6ull, 0x11fbce9f76ecc3cbull }}, {{ 0x80a1bdd4a86a06bbull, 0x8653bf86f47aebe5ull, 0x1e581199aa257655ull, 0x155da73c3ea7ae70ull, 0x10bbb39a52f4c1a2ull, 0xb3d6123aa53fa5f2ull }}, {{ 0x06516a4e9424434aull, 0x3f457b458ccd36f7ull, 0x2f70b000a5769f57ull, 0xd5a8885a728cd061ull, 0xa75504073d8f9054ull, 0x065cb64a747c7b74ull }}, {{ 0x3f2e2711c96aa0e5ull, 0x78b6d0b7800425a6ull, 0xda66e00676a23968ull, 0x58955388798023cbull, 0x89522848679ba350ull, 0x3f9f1ee88cdcd28eull }}, {{ 0x77cd86b1de2a48eeull, 0xb724272b0029787eull, 0x8804c040a2563e14ull, 0x75d54354bf0165f6ull, 0x5d3592d40c146123ull, 0x7c37351580a03991ull }}, {{ 0xae0742f2ada6d949ull, 0x276987ae019eb4f0ull, 0x502f8286575e6ccfull, 0x9a54a14f760dfba1ull, 0xa417bc4878cbcb62ull, 0xda2812d706423fadull }}, {{ 0xcc489d7ac8847cd7ull, 0x8a1f4ccc10331166ull, 0x21db193f69b04017ull, 0x074e4d1a9c8bd44dull, 0x68ed5ad4b7f5f1daull, 0x8590bc663e967cc8ull }}, {{ 0xfad626cbd52ce064ull, 0x6538fff8a1feae03ull, 0x528efc7a20e280ebull, 0x490f030a1d764b03ull, 0x19458c4f2f9b7284ull, 0x37a75bfe71e0dfd4ull }}, {{ 0xcc5d83f653c0c3e5ull, 0xf439ffb653f2cc27ull, 0x3995dcc548d90931ull, 0xda961e65269eee21ull, 0xfcb77b17dc12792aull, 0x2c8997f072c8be48ull }}, {{ 0xfba7279f4587a6f7ull, 0x8a43fd1f477bf98dull, 0x3fda9fb4d87a5bf3ull, 0x89dd2ff382354d4cull, 0xdf2aceee98b8bbacull, 0xbd5fef647bd76ed9ull }}, {{ 0xd4878c38b74c85a2ull, 0x66a7e338cad7bf8bull, 0x7e8a3d1074c79783ull, 0x62a3df83161504faull, 0xb7ac1551f73754bdull, 0x65bf59ecd66a5482ull }}, {{ 0x4d4b7a3728fd3854ull, 0x028ee037ec6d7b76ull, 0xf16662a48fcbeb22ull, 0xda66bb1edcd231c8ull, 0x2cb8d533a8294f65ull, 0xf979834060274d1bull }}, {{ 0x04f2c62799e4334aull, 0x1994c22f3c46d29full, 0x6dffda6d9df72f54ull, 0x88034f34a035f1d9ull, 0xbf385404919d19faull, 0xbebf2083c189030full }}, {{ 0x317bbd8c02ea00dfull, 0xffcf95d85ac43a36ull, 0x4bfe88482ba7d948ull, 0x5021180e421b727eull, 0x7833482db02303c9ull, 0x737745258f5a1e9dull }}, {{ 0xeed567781d2408baull, 0xfe1bda738baa461dull, 0xf7f152d1b48e7cd9ull, 0x214af08e951278eeull, 0xb200d1c8e15e25ddull, 0x82a8b37799853226ull }}, {{ 0x54560ab123685748ull, 0xed16888374a6bd2bull, 0xaf6d3c310d90e083ull, 0x4ced6591d2b8b955ull, 0xf40831d8cdad7aa3ull, 0x1a9702abff33f582ull }}, {{ 0x4b5c6aeb621368d2ull, 0x42e155228e8363b1ull, 0xda4459ea87a8c527ull, 0x0145f7b23b373d58ull, 0x8851f27808c6ca61ull, 0x09e61ab7f807971dull }}, {{ 0xf19c2d31d4c21835ull, 0x9ccd53599121e4ecull, 0x86ab83294c97b388ull, 0x0cbbacf650286578ull, 0x533378b057c3e7caull, 0x62fd0b2fb04be727ull }}, {{ 0x7019c3f24f94f20full, 0x2005417fab52f141ull, 0x42b31f9cfded0356ull, 0x7f54c19f2193f6b5ull, 0x4002b6e36da70de4ull, 0xdde26fdce2f70789ull }}, {{ 0x6101a7771bd17497ull, 0x40348efcb13d6c8eull, 0x9aff3c21eb42215dull, 0xf94f90374fc7a314ull, 0x801b24e248868aecull, 0xaad85ea0dda64b5cull }}, {{ 0xca108aa7162e8de8ull, 0x820d95deec663d8full, 0x0df8595330954da4ull, 0xbd1ba2291dcc5eceull, 0x010f70d6d5416d41ull, 0xac73b248a87ef19dull }}, {{ 0xe4a56a86ddd18b0cull, 0x1487dab53bfe679dull, 0x8bb37d3fe5d5086dull, 0x6314559b29fbb40cull, 0x0a9a6864548e4491ull, 0xbc84f6d694f57022ull }}, {{ 0xee762944aa2f6e76ull, 0xcd4e8b1457f00c2aull, 0x7502e47efa525442ull, 0xdecb580fa3d5087dull, 0x6a0813eb4d8eadadull, 0x5d31a461d1966154ull }}, {{ 0x509d9caea5da509full, 0x05116ecb6f6079adull, 0x921cecf5c7374a9cull, 0xb3f1709c665254e6ull, 0x2450c7310792c8caull, 0xa3f06bd22fdfcd4cull }}, {{ 0x26281ed27a872631ull, 0x32ae53f259c4c0c5ull, 0xb5214199c828ea18ull, 0x076e661bff375101ull, 0x6b27c7ea4bbbd7ebull, 0x67643635debe04f9ull }}, {{ 0x7d913438c9477debull, 0xfacf477781af87b3ull, 0x134c9001d19924f1ull, 0x4a4ffd17f8292a11ull, 0x2f8dcf26f5566f2eull, 0x09ea1e1ab36c31beull }}, {{ 0xe7ac0a37dccaeb33ull, 0xcc18caab10db4d02ull, 0xc0fda0122ffb7173ull, 0xe71fe2efb19ba4aaull, 0xdb8a1785956057ceull, 0x63252d0b0239f16dull }}, {{ 0x0cb8662e9fed2ffbull, 0xf8f7eaaea891021dull, 0x89e840b5dfd26e85ull, 0x073edd5cf0146eabull, 0x9364eb37d5c36e15ull, 0xdf73c26e16436e4aull }}, {{ 0x7f33fdd23f43dfd2ull, 0xb9af2ad295aa1522ull, 0x6312871abe38513bull, 0x4874a5a160cc52b3ull, 0xc1f1302e59a24cd2ull, 0xba85984cdea24ee9ull }}, {{ 0xf807ea3678a6be31ull, 0x40d7ac39d8a4d358ull, 0xdeb9470b6e332c55ull, 0xd48e784dc7fb3b01ull, 0x936be1cf80570036ull, 0x4937f300b2571521ull }}, {{ 0xb04f2620b6836de9ull, 0x886cba4276704179ull, 0xb33cc6724dffbb54ull, 0x4d90b309cfd04e12ull, 0xc236d21b03660224ull, 0xdc2f7e06f766d34full }}, {{ 0xe3177d4721224b1dull, 0x543f4698a0628ec0ull, 0x005fc0770bfd514dull, 0x07a6fe621e230cbbull, 0x9624350e21fc156bull, 0x99daec45aa04411dull }}, {{ 0xdeeae4c74b56ef25ull, 0x4a78c1f643d99388ull, 0x03bd84a677e52d05ull, 0x4c85efd52d5e7f4eull, 0xdd6a128d53d8d62eull, 0x028d3ab8a42a8b27ull }}, {{ 0xb52cefc8f1655770ull, 0xe8b7939ea67fc358ull, 0x25672e80aef3c234ull, 0xfd3b5e53c5b0f90cull, 0xa624b98546785dceull, 0x19844b3669a96f8eull }}, {{ 0x13c15dd96df56a5eull, 0x172bc43280fda177ull, 0x7607d106d5859611ull, 0xe451af45b8e9ba79ull, 0x7d6f3f34c0b3aa15ull, 0xff2af020209e5b92ull }}, {{ 0xc58daa7e4b9627acull, 0xe7b5a9f909e84ea6ull, 0x9c4e2a445737dcaaull, 0xeb30d8b9392148beull, 0xe658780f8704a4daull, 0xf7ad6141462f93b8ull }}, {{ 0xb788a8eef3dd8cbcull, 0x0d18a3ba63131283ull, 0x1b0da6ab682e9eadull, 0x2fe8773c3b4cd772ull, 0xff74b09b462e708dull, 0xacc5cc8cbddbc538ull }}, {{ 0x2b56995586a77f56ull, 0x82f66547debeb925ull, 0x0e8882b211d232c2ull, 0xdf14a85a51006a75ull, 0xfa8ee610bdd06583ull, 0xbfb9fd7f6a95b439ull }}, {{ 0xb161fd57428af95bull, 0x1d9ff4ceb3733b73ull, 0x91551af4b235fb99ull, 0xb6ce93872a042892ull, 0xc994fca76a23f726ull, 0x7d43e6fa29d90a43ull }}, {{ 0xedd3e568996dbd8full, 0x283f901302805284ull, 0xad530d8ef61bd3fbull, 0x2411c347a42995b9ull, 0xdfd1de8a2567a783ull, 0xe4a705c5a27a66a5ull }}, {{ 0x4a46f615fe496793ull, 0x927ba0be19033931ull, 0xc53e87959d1647cfull, 0x68b1a0cc699fd940ull, 0xbe32b165760c8b1full, 0xee8639b858c8027aull }}, {{ 0xe6c59cdbeede0bb9ull, 0xb8d4476cfa203becull, 0xb4714bd822dece1bull, 0x16f047fc203e7c87ull, 0x6dfaedf69c7d6f3aull, 0x513e413377d018cbull }}, {{ 0x03b8209754ac753bull, 0x384aca41c5425741ull, 0x0c6cf6715cb40d15ull, 0xe562cfd94270dd4dull, 0x4bcd4ba21ce65844ull, 0x2c6e8c02ae20f7f2ull }}, {{ 0x253145e94ebc9451ull, 0x32ebe691b497688aull, 0x7c41a06d9f0882d4ull, 0xf5dc1e7c9868a502ull, 0xf604f45520ff72b0ull, 0xbc51781acd49af76ull }}, {{ 0x73ecbb1d135dcb29ull, 0xfd3701b10dea1565ull, 0xda90444836551c49ull, 0x9a9930ddf4167218ull, 0x9c318b5349fa7ae9ull, 0x5b2eb10c04e0daa5ull }}, {{ 0x873f4f22c1a9ef96ull, 0xe42610ea8b24d5f6ull, 0x89a2aad21f531ae3ull, 0x09fbe8ab88e074f8ull, 0x19ef7140e3c8cd20ull, 0x8fd2ea7830c88a78ull }}, {{ 0x4879175b90a35bdaull, 0xe97ca9296f705ba1ull, 0x605aac35393f0ce6ull, 0x63d716b358c491b5ull, 0x035a6c88e5d80340ull, 0x9e3d28b1e7d568b1ull }}, {{ 0xd4bae993a6619680ull, 0x1ede9b9e5a63944cull, 0xc38aba143c768105ull, 0xe666e30177adb115ull, 0x21883d58fa702083ull, 0x2e6396f30e5616eaull }}, {{ 0x4f4d1fc47fcfe103ull, 0x34b2142f87e3cb00ull, 0xa36b44ca5ca10a33ull, 0x0004de0eacc8ead9ull, 0x4f526579c8614527ull, 0xcfe3e57e8f5ce525ull }}, {{ 0x19033dacfe1eca1eull, 0x0ef4c9db4ee5ee03ull, 0x6230afe79e4a6600ull, 0x0030ac92bfd92c80ull, 0x1937f6c1d3ccb386ull, 0x1ee6f6f199a0f375ull }}, {{ 0xfa2068c1ed33e52dull, 0x958fe29114fb4c1eull, 0xd5e6df0c2ee7fc00ull, 0x01e6bdbb7e7bbd03ull, 0xfc2fa39245ff033cull, 0x3505a57000498292ull }}, {{ 0xc54417934406f3c0ull, 0xd79ed9aad1d0f935ull, 0x5b04b679d50fd805ull, 0x13036952f0d56226ull, 0xd9dc63b6bbf62058ull, 0x1238766002df19bdull }}, {{ 0xb4a8ebc0a8458582ull, 0x6c3480ac3229bc19ull, 0x8e2f20c2529e703aull, 0xbe221d3d6855d57full, 0x829be523579d4370ull, 0xb6349fc01cb7016aull }}, {{ 0x0e99358692b73717ull, 0x3a0d06b9f5a15901ull, 0x8dd747973a306248ull, 0x6d552466135a56fbull, 0x1a16f3616c24a267ull, 0x1e0e3d811f260e29ull }}, {{ 0x91fc1741bb2826e2ull, 0x44824343984d7a0aull, 0x8a68cbe845e3d6d2ull, 0x45536bfcc18765d3ull, 0x04e581ce396e580aull, 0x2c8e670b377c8d9bull }}, {{ 0xb3d8e8914f9184d2ull, 0xad16a0a3f306c469ull, 0x6817f712bae66436ull, 0xb54237df8f49fa43ull, 0x30f7120e3e4f7066ull, 0xbd9006702add880eull }}, {{ 0x067915ad1baf3034ull, 0xc2e246677e43ac21ull, 0x10efa6bb4cffea22ull, 0x14962ebb98e3c6a2ull, 0xe9a6b48e6f1a6403ull, 0x67a04061aca7508dull }}, {{ 0x40bad8c314d7e205ull, 0x9cd6c00aeea4b94aull, 0xa95c835101ff255bull, 0xcdddd353f8e5c254ull, 0x20830d905707e81eull, 0x0c4283d0be89258bull }}, {{ 0x874c779ed06ed432ull, 0x2063806d526f3ce6ull, 0x9d9d212a13f77594ull, 0x0aaa4147b8f9974eull, 0x451e87a3664f1134ull, 0x7a992627715b776full }}, {{ 0x48fcac34245449f7ull, 0x43e3044538586101ull, 0x28234ba4c7aa97c9ull, 0x6aa68ccd39bfe912ull, 0xb3314c61ff16ac08ull, 0xc9fb7d8a6d92aa58ull }}, {{ 0xd9deba096b4ae3a7ull, 0xa6de2ab43373ca0cull, 0x9160f46fcca9eddcull, 0x2a818004417f1ab5ull, 0xffecfbd3f6e2b854ull, 0xe3d2e76847baa776ull }}, {{ 0x82b3445e30ece487ull, 0x84adab0a0285e480ull, 0xadc98c5dfea34a9eull, 0xa90f002a8ef70b17ull, 0xff41d647a4db3349ull, 0xe63d0a12cd4a8aa5ull }}, {{ 0x1b00abade940ed49ull, 0x2ec8ae64193aed05ull, 0xc9df7babf260ea31ull, 0x9a9601a995a66eecull, 0xf8925ecc709000e0ull, 0xfe6264bc04e96a7bull }}, {{ 0x0e06b4cb1c8944deull, 0xd3d6cfe8fc4d4233ull, 0xe2bad4b777c925ebull, 0x09dc109fd880553full, 0xb5b7b3fc65a008c6ull, 0xefd7ef58311e28d7ull }}, {{ 0x8c430fef1d5cb0b0ull, 0x46641f19db0495feull, 0xdb4c4f2aaddb7b36ull, 0x6298a63e7503547eull, 0x192d07dbf84057bcull, 0x5e6f5971eb2d986dull }}, {{ 0x7a9e9f57259ee6e2ull, 0xbfe937028e2ddbf1ull, 0x90fb17aaca92d01eull, 0xd9f67e7092214cf4ull, 0xfbc24e97b2836d5bull, 0xb0597e732fc7f442ull }}, {{ 0xca323967783504d7ull, 0x7f1c26198dca976eull, 0xa9ceecabe9bc2133ull, 0x83a0f065b54d018dull, 0xd59711ecf9224596ull, 0xe37ef07fddcf8a9dull }}, {{ 0xe5f63e0ab2123067ull, 0xf7197cff89e9ea53ull, 0xa2153eb721594c02ull, 0x244963f915020f88ull, 0x57e6b341bb56b7e1ull, 0xe2f564feaa1b6a2aull }}, {{ 0xfb9e6c6af4b5e408ull, 0xa6fee1fb63232746ull, 0x54d473274d7cf81dull, 0x6adde7bad2149b56ull, 0x6f03009151632ecbull, 0xdd95f1f2a51225a7ull }}, {{ 0xd4303c2d8f1ae855ull, 0x85f4d3d1df5f88c5ull, 0x504c7f8906e1b128ull, 0x2cab0d4c34ce115full, 0x561e05ad2ddfd3f2ull, 0xa7db737a72b5788aull }}, {{ 0x49e259c7970d1352ull, 0x3b904632b9bb57baull, 0x22fcfb5a44d0eb95ull, 0xbeae84fa100cadb9ull, 0x5d2c38c3cabe4775ull, 0x8e9282c87b16b567ull }}, {{ 0xe2d781cbe682c12full, 0x53a2bdfb41516d46ull, 0x5de1d186b02933d4ull, 0x72d131c4a07ec93bull, 0xa3ba37a5eb6eca99ull, 0x91b91bd4cee31609ull }}, {{ 0xdc6b11f7011b8bdaull, 0x445b6bd08d2e44c4ull, 0xaad22f42e19c064bull, 0x7c2bf1ae44f3dc51ull, 0x65462c7b3253e9feull, 0xb13b165014dedc60ull }}, {{ 0x9c2eb3a60b137688ull, 0xab92362583ceafb0ull, 0xac35d89cd0183ef0ull, 0xd9b770ceb1869b30ull, 0xf4bdbccff74723f0ull, 0xec4edf20d0b49bc3ull }}, {{ 0x19d3047c6ec2a14dull, 0xb3b61d772612dce6ull, 0xba1a762020f27566ull, 0x812a6812ef420fe6ull, 0x8f69601fa8c76768ull, 0x3b14b748270e15a7ull }}, {{ 0x023e2cdc539a4d01ull, 0x051d26a77cbca0fdull, 0x45089d4149789603ull, 0x0ba810bd58949f03ull, 0x9a1dc13c97ca0a15ull, 0x4ecf28d1868cd88bull }}, {{ 0x166dc09b4407020eull, 0x3323828adf5e49e2ull, 0xb256248cdeb5dc1eull, 0x7490a76575ce3620ull, 0x05298c5dede464d2ull, 0x1417982f41807574ull }}, {{ 0xe0498610a846148cull, 0xff63196cb9aee2d4ull, 0xf75d6d80b31a992dull, 0x8da689f69a0e1d46ull, 0x339f7bab4aebf038ull, 0xc8ebf1d88f049688ull }}, {{ 0xc2df3ca692bccd76ull, 0xf9defe3f40d4dc50ull, 0xa9a64706ff09fbcbull, 0x888163a2048d24c5ull, 0x043ad4b0ed376235ull, 0xd9377275962de152ull }}, {{ 0x9cb85e81bb60069eull, 0xc2b5ee7888509b27ull, 0xa07ec645f663d5f7ull, 0x550de4542d836fb8ull, 0x2a4c4ee94429d617ull, 0x7c2a7897ddcacd34ull }}, {{ 0x1f33b11151c04230ull, 0x9b1b50b553260f8cull, 0x44f3bebb9fe65badull, 0x528aeb49c7225d36ull, 0xa6fb151ca9a25ce9ull, 0xd9a8b5eea9ec0409ull }}, {{ 0x3804eaad318295dcull, 0x0f1127153f7c9b79ull, 0xb18573543eff94c8ull, 0x396d30e1c757a41eull, 0x85ced31ea057a11dull, 0x80971b52a3382860ull }}, {{ 0x30312ac3ef19da98ull, 0x96ab86d47ade12bcull, 0xef36814a75fbcfd0ull, 0x3e43e8d1c96c6932ull, 0x3a143f32436c4b24ull, 0x05e7113a603193c5ull }}, {{ 0xe1ebaba7570289edull, 0xe2b3444cccacbb59ull, 0x58210ce89bd61e25ull, 0x6ea71831de3c1bfdull, 0x44ca77f6a23aef6aull, 0x3b06ac47c1efc5b4ull }}, {{ 0xd334b48966196344ull, 0xdb00aafffebf5182ull, 0x714a8116165d2d7aull, 0x5286f1f2ae5917e5ull, 0xafe8afa2564d5a28ull, 0x4e42bacd935db90aull }}, {{ 0x400f0d5dfcfde0aaull, 0x8e06adfff3792f1cull, 0x6ce90adcdfa3c6ccull, 0x3945737acf7aeef6ull, 0xdf16dc575f058593ull, 0x0e9b4c07c1a93a6aull }}, {{ 0x809685abe1eac6a2ull, 0x8c42cbff82bbd71aull, 0x411a6ca0bc65c3fdull, 0x3cb682cc1acd55a0ull, 0xb6e49b69b63737c0ull, 0x9210f84d909c482cull }}, {{ 0x05e138b6d32bc259ull, 0x7a9bf7fb1b566709ull, 0x8b083e475bf9a7e7ull, 0x5f211bf90c055842ull, 0x24ee12211e282d82ull, 0xb4a9b307a61ad1bfull }}, {{ 0x3acc37243fb59779ull, 0xca17afcf1160065aull, 0x6e526ec997c08f0aull, 0xb74b17ba78357299ull, 0x714cb54b2d91c717ull, 0x0ea0fe4c7d0c3177ull }}, {{ 0x4bfa276a7d17eabaull, 0xe4ecde16adc03f86ull, 0x4f3853dfed85966bull, 0x28eeed48b21679feull, 0x6cff14efc7b1c6edull, 0x9249eefce279eeaaull }}, {{ 0xf7c58a28e2ef2b48ull, 0xf140ace2c9827b3eull, 0x183346bf4737e036ull, 0x995544d6f4e0c3efull, 0x41f6d15dccf1c543ull, 0xb6e355e0d8c352a8ull }}, {{ 0xadb76598dd57b0d3ull, 0x6c86c0dbdf18d075ull, 0xf200c378c82ec225ull, 0xfd54b06590c7a756ull, 0x93a42daa0171b4a3ull, 0x24e15ac877a13a92ull }}, {{ 0xc929f7f8a56ce83full, 0x3d438896b6f82498ull, 0x7407a2b7d1d39576ull, 0xe54ee3f7a7cc8965ull, 0xc469c8a40e710e67ull, 0x70cd8bd4ac4c49b9ull }}, {{ 0xdba3afb67641127aull, 0x64a355e325b16df7ull, 0x884c5b2e3243d69eull, 0xf514e7ac8dfd5df6ull, 0xac21d668906a900eull, 0x6807764ebafae141ull }}, {{ 0x9464dd209e8ab8c0ull, 0xee615adf78ee4baeull, 0x52fb8fcdf6a6622full, 0x92d10cbd8be5aba1ull, 0xb9526015a429a095ull, 0x104a9f134dcccc90ull }}, {{ 0xcbf0a346316b377eull, 0x4fcd8cbab94ef4d1ull, 0x3dd39e0ba27fd5dfull, 0xbc2a7f6776f8b44dull, 0x3d37c0d869a045d7ull, 0xa2ea36c109fffda7ull }}, {{ 0xf76660bdee302ae8ull, 0x1e077f4b3d159031ull, 0x6a442c7458fe5ab9ull, 0x59a8fa0aa5b70b04ull, 0x642d88742042ba6dull, 0x5d26238a63ffe888ull }}, {{ 0xa9ffc76b4de1ad0full, 0x2c4af8f062d7a1f3ull, 0x26a9bc8b79ef8b3bull, 0x8099c46a79266e2cull, 0xe9c75489429b4845ull, 0xa37d6367e7ff1553ull }}, {{ 0xa3fdca310ad0c296ull, 0xbaedb963dc6c5384ull, 0x82a15d72c35b704full, 0x0601ac28bb804db9ull, 0x21c94d5c9a10d2b7ull, 0x62e5e20f0ff6d547ull }}, {{ 0x67e9e5ea6c2799dcull, 0x4d493de69c3b432eull, 0x1a4da67ba192631dull, 0x3c10b9975303093full, 0x51dd059e04a83b26ull, 0xdcfad4969fa454c7ull }}, {{ 0x0f22fb28398c029aull, 0x04dc6b021a509fd0ull, 0x070880d44fb7df25ull, 0x58a73fe93e1e5c77ull, 0x32a2382c2e924f7eull, 0xa1cc4de23c6b4fc9ull }}, {{ 0x975dcf923f781a05ull, 0x309c2e1507263e20ull, 0x4655084b1d2eb772ull, 0x76887f1c6d2f9ca6ull, 0xfa5631b9d1b71aefull, 0x51fb0ad65c311ddbull }}, {{ 0xe9aa1bb67ab1042full, 0xe619ccd2477e6d45ull, 0xbf5252ef23d32a75ull, 0xa154f71c43dc1e7eull, 0xc75df14231270d5aull, 0x33ce6c5f99eb2a97ull }}, {{ 0x20a51520caea29dbull, 0xfd020036caf044bbull, 0x79373d57663fa89aull, 0x4d51a71aa69930f3ull, 0xc9ab6c95eb86858aull, 0x06103bbc032fa9edull }}, {{ 0x4672d347ed25a28dull, 0xe2140223ed62af4full, 0xbc286569fe7c960dull, 0x0530870a81fbe982ull, 0xe0b23ddb33413767ull, 0x3ca255581fdca349ull }}, {{ 0xc07c40cf43785982ull, 0xd4c8156745dad918ull, 0x5993f623f0dddc8aull, 0x33e5466913d71f1bull, 0xc6f66a90008c2a06ull, 0x5e5755713e9e60e2ull }}, {{ 0x84da8818a2b37f12ull, 0x4fd0d608ba8c7af7ull, 0x7fc79d6768aa9d6cull, 0x06f4c01ac6673711ull, 0xc5a029a00579a43eull, 0xaf69566c722fc8dbull }}, {{ 0x308950f65b02f6b1ull, 0x1e285c57497ccdabull, 0xfdcc260a16aa263bull, 0x458f810bc00826aeull, 0xb841a04036c06a6cull, 0xda1d603c75ddd895ull }}, {{ 0xe55d299f8e1da2eaull, 0x2d939b68dee008afull, 0xe9f97c64e2a57e4full, 0xb79b0a75805182d5ull, 0x329042822384283aull, 0x8525c25c9aaa75d9ull }}, {{ 0xf5a3a03b8d285d28ull, 0xc7c41218b4c056deull, 0x23bedbf0da76ef17ull, 0x2c0e6897032f1c5bull, 0xf9a299156329924bull, 0x3379979e0aa89a7bull }}, {{ 0x986442538393a38eull, 0xcda8b4f70f8364b5ull, 0x6574976888a556edull, 0xb89015e61fd71b8full, 0xc059fad5df9fb6efull, 0x02bfec2c6a9608d7ull }}, {{ 0xf3ea974323c46388ull, 0x089711a69b21ef17ull, 0xf68dea155675654aull, 0x35a0dafd3e671399ull, 0x8383cc5abc3d255dull, 0x1b7f39bc29dc586dull }}, {{ 0x8729e89f65abe34bull, 0x55e6b0820f5356efull, 0xa18b24d56095f4e4ull, 0x18488de47006c403ull, 0x2325fb8b5a6375a4ull, 0x12f84159a29b7447ull }}, {{ 0x47a31639f8b6e0f3ull, 0x5b02e5149941655bull, 0x4f6f7055c5db90ebull, 0xf2d58aec6043a824ull, 0x5f7bd37187e29868ull, 0xbdb28d805a128ac7ull }}, {{ 0xcc5ede43b724c97dull, 0x8e1cf2cdfc8df590ull, 0x1a5a6359ba93a931ull, 0x7c576d3bc2a4916bull, 0xbad6426f4ed9f419ull, 0x68f9870384b96bc9ull }}, {{ 0xfbb4aea5276fdee0ull, 0x8d217c0bdd8b97a7ull, 0x0787e18149c49befull, 0xdb6a44559a6dae2full, 0x4c5e9859148388feull, 0x19bf46232f3e35e1ull }}, {{ 0xd50ed2738a5eb4bfull, 0x834ed876a773ec8full, 0x4b4ecf0ce1ae175bull, 0x9226ab580848cdd6ull, 0xfbb1f37acd2359f4ull, 0x0178bd5fd86e1accull }}, {{ 0x5294388367b30f72ull, 0x211474a28a873d9eull, 0xf1141680d0cce993ull, 0xb582b17052d80a5eull, 0xd4f382cc0361838dull, 0x0eb765be744d0c01ull }}, {{ 0x39ca35220cfe9a76ull, 0x4acc8e596948682full, 0x6ac8e10828011fbfull, 0x171aee633c7067b5ull, 0x51831bf821cf2389ull, 0x9329f9708b027812ull }}, {{ 0x41e6135481f208a0ull, 0xebfd8f7e1cd411d8ull, 0x2bd8ca51900b3d78ull, 0xe70d4fe05c640d16ull, 0x2f1f17b15217635aull, 0xbfa3be656e18b0b7ull }}, {{ 0x92fcc14d13745643ull, 0x37e79aed2048b272ull, 0xb677e72fa07066b9ull, 0x06851ec39be882ddull, 0xd736eced34e9e18dull, 0x7c656ff64cf6e727ull }}, {{ 0xbddf8d02c28b5e9bull, 0x2f0c0d4342d6f879ull, 0x20af07dc4464033cull, 0x413333a417151ca9ull, 0x682541441122cf82ull, 0xdbf65f9f01a5078eull }}, {{ 0x6abb821b9971b20cull, 0xd67884a09c65b4c1ull, 0x46d64e9aabe82059ull, 0x8c000468e6d31e9bull, 0x11748ca8ab5c1b16ull, 0x979fbc3610724b90ull }}, {{ 0x2b531513fe70f474ull, 0x60b52e461bf90f8eull, 0xc45f120ab7114382ull, 0x78002c19043f3210ull, 0xae8d7e96b1990ee1ull, 0xec3d5a1ca476f3a0ull }}, {{ 0xb13ed2c7f0698c8dull, 0xc713cebd17ba9b8dull, 0xabb6b46b26aca317ull, 0xb001b8fa2a77f4a7ull, 0xd186f1e2effa94ceull, 0x3a65851e6ca58446ull }}, {{ 0xec743bcf641f7d7eull, 0xc6c61362ed4a1388ull, 0xb5230c2f82be5eedull, 0xe01139c5a8af8e8cull, 0x2f4572dd5fc9d012ull, 0x47f733303e772ac4ull }}, {{ 0x3c8a5619e93ae6eaull, 0xc3bcc1dd44e4c359ull, 0x135e79db1b6fb549ull, 0xc0ac41b896db917full, 0xd8b67ca5bde220bcull, 0xcfa7ffe270a7aba9ull }}, {{ 0x5d675d031c4d0528ull, 0xa55f92a4b0efa17cull, 0xc1b0c28f125d14e1ull, 0x86ba9135e493aef6ull, 0x7720de796ad5475full, 0x1c8ffed8668cb4a2ull }}, {{ 0xa609a21f1b02338dull, 0x75bbba6ee95c4edbull, 0x90e79996b7a2d0d0ull, 0x4349ac1aedc4d5a3ull, 0xa748b0be2c54c9bbull, 0x1d9ff474017f0e58ull }}, {{ 0x7c6055370e160386ull, 0x995548551d9b1494ull, 0xa90bffe32c5c2824ull, 0xa0e0b90d49b05863ull, 0x88d6e76dbb4fe150ull, 0x283f8c880ef68f76ull }}, {{ 0xdbc354268cdc233full, 0xfd54d353280ecdccull, 0x9a77fedfbb99916dull, 0x48c73a84e0e373e4ull, 0x58650a49511ecd26ull, 0x927b7d5095a19aa1ull }}, {{ 0x95a1498180996076ull, 0xe550413f90940a00ull, 0x08aff4bd53ffae4bull, 0xd7c84930c8e286eeull, 0x73f266dd2b34037eull, 0xb8d2e525d8500a4dull }}, {{ 0xd84cdf0f05fdc497ull, 0xf5228c7ba5c86405ull, 0x56df8f6547fccef6ull, 0x6dd2dbe7d8d9454cull, 0x877804a3b00822f4ull, 0x383cf37a73206706ull }}, {{ 0x7300b6963be9adeaull, 0x93597cd479d3e83aull, 0x64bb99f4cfe015a5ull, 0x4a3c970e787cb4fbull, 0x4ab02e64e0515d8cull, 0x326182c87f440641ull }}, {{ 0x7e0721de5720cb20ull, 0xc17ee04cc2471248ull, 0xef5403901ec0d877ull, 0xe65de690b4df11d1ull, 0xeae1cff0c32da77aull, 0xf7cf1bd4f8a83e8cull }}, {{ 0xec4752af6747ef3full, 0x8ef4c2ff96c6b6d4ull, 0x594823a1338874adull, 0xffab01a710b6b233ull, 0x2cd21f679fc88accull, 0xae171651b6927181ull }}, {{ 0x3ac93ada08cf5876ull, 0x958f9dfbe3c32451ull, 0x7cd1644c03548ec7ull, 0xfcae1086a722f601ull, 0xc0353a0c3dd56c01ull, 0xcce6df3121b86f0bull }}, {{ 0x4bdc4c845819749full, 0xd79c2bd6e59f6b2cull, 0xe02deaf8214d93cbull, 0xdecca542875d9c0eull, 0x8214447a6a563813ull, 0x0104b7eb51345675ull }}, {{ 0xf69afd2b70fe8e37ull, 0x6c19b664f83a2fbaull, 0xc1cb2db14d07c5f6ull, 0xb3fe749949a81894ull, 0x14caacc8275e30c6ull, 0x0a2f2f312c0b6097ull }}, {{ 0xa20de3b269f18e2bull, 0x39011ff1b245dd4dull, 0x91efc8ed024dbba0ull, 0x07f08dfce090f5cfull, 0xcfeabfd189ade7c3ull, 0x65d7d7ebb871c5e6ull }}, {{ 0x548ae4f8236f8dabull, 0x3a0b3f70f6baa508ull, 0xb35dd94217095442ull, 0x4f658be0c5a99a1bull, 0x1f2b7e2f60cb0d9eull, 0xfa6e6f353471bb04ull }}, {{ 0x4d6cf1b1625b88adull, 0x44707a69a34a7253ull, 0x01aa7c94e65d4a96ull, 0x19f776c7b8a00515ull, 0x37b2edd9c7ee882full, 0xc85058140c714e29ull }}, {{ 0x064170edd79356bdull, 0xac64c82060e87741ull, 0x10a8ddd0ffa4e9deull, 0x03aaa3cd364032d2ull, 0x2cfd4a81cf5151d7ull, 0xd32370c87c6d0d9cull }}, {{ 0x3e8e694a6bc16364ull, 0xbbefd143c914a88aull, 0xa698aa29fc7122b2ull, 0x24aa66041e81fc34ull, 0xc1e4e912192d3266ull, 0x3f6267d4dc428819ull }}, {{ 0x71901ce8358de1ecull, 0x575e2ca5dace9566ull, 0x81f6a5a3dc6b5afbull, 0x6ea7fc293113da0eull, 0x92f11ab4fbc3f7fdull, 0x79d80e509a995101ull }}, {{ 0x6fa12112178ad334ull, 0x69adbe7a8c11d600ull, 0x13a278669c318dd1ull, 0x528fd99beac68491ull, 0xbd6b0b11d5a7afe6ull, 0xc2708f2609fd2a0full }}, {{ 0x5c4b4ab4eb6c4008ull, 0x20c970c978b25c04ull, 0xc458b40219ef8a2eull, 0x399e80172bc12daaull, 0x662e6eb2588cdeffull, 0x9865977c63e3a49dull }}, {{ 0x9af0eb11323a804full, 0x47de67deb6f7982bull, 0xab770815035b65cdull, 0x403100e7b58bc8abull, 0xfdd052f77580b5f8ull, 0xf3f7eadbe6e46e25ull }}, {{ 0x0d692eabf6490318ull, 0xceb00eb325abf1b4ull, 0xb2a650d22191fa04ull, 0x81ea090d1775d6b4ull, 0xea233daa97071bb2ull, 0x87af2c9704ec4d7bull }}, {{ 0x861bd2b79eda1ef0ull, 0x12e092ff78b77108ull, 0xfa7f28354fb3c430ull, 0x13245a82ea9a630eull, 0x256068a9e64714f9ull, 0x4cd7bde6313b06d7ull }}, {{ 0x3d163b2c3485355cull, 0xbcc5bdfab72a6a55ull, 0xc8f792151d05a9e0ull, 0xbf6b891d2a07de95ull, 0x75c416a2fec6d1baull, 0x006d6afdec4e4467ull }}, {{ 0x62de4fba0d341599ull, 0x5fb96bcb27a82754ull, 0xd9abb4d32238a2c7ull, 0x7a335b23a44eb1d9ull, 0x99a8e25df3c4314bull, 0x04462deb3b0eac0aull }}, {{ 0xdcaf1d448408d7f9ull, 0xbd3e35ef8c91894bull, 0x80b5103f56365bc9ull, 0xc6018f646b12f282ull, 0x0098d7ab85a9ecf2ull, 0x2abdcb304e92b86aull }}, {{ 0x9ed724ad28586fb7ull, 0x646e1b5b7daf5cf6ull, 0x0712a2795e1f95e1ull, 0xbc0f99ec2ebd7919ull, 0x05f86cb338a3417bull, 0xab69efe311bb3424ull }}, {{ 0x34676ec393745d2bull, 0xec4d1192e8d9a1a2ull, 0x46ba58bdad3bdacdull, 0x589c0339d366bafaull, 0x3bb43f0036608ed5ull, 0xb2235edeb1500968ull }}, {{ 0x0c0a53a3c28ba3acull, 0x3b02afbd18805056ull, 0xc3477768c4568c0bull, 0x7618204242034dc6ull, 0x550a76021fc59455ull, 0xf561b4b2ed205e12ull }}, {{ 0x78674465997464b9ull, 0x4e1add62f503235cull, 0xa0caaa17ab617870ull, 0x9cf14296942109c3ull, 0x52689c153db7cb56ull, 0x95d10efd4343acb7ull }}, {{ 0xb408abf7fe8bef3eull, 0x0d0ca5dd921f619cull, 0x47eaa4ecb1ceb463ull, 0x216c99e1c94a61a4ull, 0x381618d4692df162ull, 0xda2a95e4a0a4bf29ull }}, {{ 0x0856b7aff177586aull, 0x827e7aa7b539d01full, 0xcf2a713ef2130bdeull, 0x4e3e02d1dce7d06aull, 0x30dcf84c1bcb6dd5ull, 0x85a9daee466f779cull }}, {{ 0x53632cdf6ea97427ull, 0x18f0ca8d14422136ull, 0x17a86c7574be76b1ull, 0x0e6c1c32a10e242cull, 0xe8a1b2f915f24a55ull, 0x38a28d4ec05aac19ull }}, {{ 0x41dfc0ba529e8988ull, 0xf967e982ca954c1full, 0xec943c968f70a2eaull, 0x903919fa4a8d69b8ull, 0x1650fdbadb76e752ull, 0x36598513838ab903ull }}, {{ 0x92bd87473a315f4cull, 0xbe0f1f1be9d4f938ull, 0x3dca5de19a665d2dull, 0xa23b03c6e9862139ull, 0xdf29e94c92a50939ull, 0x1f7f32c3236b3a1eull }}, {{ 0xbb6748c845edb8f7ull, 0x6c9737172251bc35ull, 0x69e7aad007ffa3c9ull, 0x564e25c51f3d4c3cull, 0xb7a31cfdba725c40ull, 0x3af7fb9f62304534ull }}, {{ 0x5208d7d2bb4939a6ull, 0x3de826e757315a19ull, 0x230cac204ffc65deull, 0x5f0d79b33864fa5cull, 0x2c5f21e948779a83ull, 0x4dafd439d5e2b40full }}, {{ 0x34586e3b50dc4079ull, 0x6b11850967ed84fdull, 0x5e7eb9431fdbfaaeull, 0xb686c10033f1c799ull, 0xbbb7531cd4ac0921ull, 0x08de4a425adb0897ull }}, {{ 0x0b744e51289a84b5ull, 0x2eaf325e0f4731e4ull, 0xb0f33c9f3e97cad0ull, 0x21438a020771cbfdull, 0x55293f204eb85b51ull, 0x58aee6978c8e55edull }}, {{ 0x728b0f2b96092f16ull, 0xd2d7f7ac98c7f2e8ull, 0xe9805e3871edec21ull, 0x4ca364144a71f7e8ull, 0x539c77431333912bull, 0x76d501eb7d8f5b45ull }}, {{ 0x796e97b3dc5bd6e1ull, 0x3c6facbdf7cf7d14ull, 0x1f03ae34734b3952ull, 0xfe61e8cae873af19ull, 0x441ca89ec003abb0ull, 0xa4521332e79990b5ull }}, {{ 0xbe51ed069b9664c8ull, 0x5c5cbf6bae1ae2ccull, 0x3624ce0c80f03d36ull, 0xefd317ed1484d6fbull, 0xa91e96338024b4e9ull, 0x6b34bffd0bffa714ull }}, {{ 0x6f33424213dfefd2ull, 0x9b9f7a34cd0cdbffull, 0x1d700c7d0962641full, 0x5e3eef42cd3065d0ull, 0x9b31de03016f1123ull, 0x300f7fe277fc86ceull }}, {{ 0x58009694c6bf5e38ull, 0x143ac610028097faull, 0x26607ce25dd7e93cull, 0xae75589c03e3fa21ull, 0x0ff2ac1e0e56ab61ull, 0xe09afed8afdd4412ull }}, {{ 0x7005e1cfc379ae2dull, 0xca4bbca01905efc7ull, 0x7fc4e0d7aa6f1c58ull, 0xd095761826e7c54bull, 0x9f7ab92c8f62b1d0ull, 0xc60df476dea4a8b4ull }}, {{ 0x603ad21da2c0cdbeull, 0xe6f55e40fa3b5dcaull, 0xfdb0c86ca8571b77ull, 0x25d69cf1850db4f2ull, 0x3acb3bbd99daf228ull, 0xbc8b8ca4b26e970eull }}, {{ 0xc24c35285b88096aull, 0x0595ae89c651a9e7ull, 0xe8e7d43e936712afull, 0x7a62216f3289117dull, 0x4bf05568028d7591ull, 0x5d737e6ef851e68eull }}, {{ 0x96fa139393505e23ull, 0x37d8d161bf30a30dull, 0x190e4a71c206bad6ull, 0xc7d54e57f95aaeebull, 0xf7635610198697aeull, 0xa682f055b333018eull }}, {{ 0xe5c4c3c3c123ad63ull, 0x2e782dd177e65e87ull, 0xfa8ee87194434c5eull, 0xce550f6fbd8ad52eull, 0xa9e15ca0ff41ecd3ull, 0x811d6358fffe0f95ull }}, {{ 0xf9afa5a58b64c5dbull, 0xd0b1ca2eaeffb14eull, 0xc995146fcaa0fbadull, 0x0f529a5d676c53d5ull, 0xa2cd9e49f8934046ull, 0x0b25e179ffec9bd8ull }}, {{ 0xc0dc787771efba8cull, 0x26f1e5d2d5fced15ull, 0xdfd2cc5dea49d4caull, 0x993a07a60a3b4659ull, 0x5c082ee3b5c082bcull, 0x6f7acec3ff3e1676ull }}, {{ 0x889cb4aa735d4976ull, 0x8572fa3c5be142d9ull, 0xbe3bfbab26e24fe5ull, 0xfc444c7c6650bf82ull, 0x9851d4e519851b5dull, 0x5acc13a7f86ce09full }}, {{ 0x561f0ea881a4de9cull, 0x367dc65b96cc9c7full, 0x6e57d4af84d71ef7ull, 0xdaaafcdbff277b1bull, 0xf33250f2ff3311abull, 0x8bf8c48fb440c63bull }}, {{ 0x5d3692951070b21cull, 0x20e9bf93e3fe1cf9ull, 0x4f6e4edb306735a8ull, 0x8aade097f78acf12ull, 0x7ff7297df7feb0b6ull, 0x77b7ad9d0a87be57ull }}, {{ 0xa421b9d2a466f517ull, 0x49217bc6e7ed21bdull, 0x1a4f148fe4081891ull, 0x6acac5efab6c16b7ull, 0xffa79eebaff2e721ull, 0xad2cc822694d6f6aull }}, {{ 0x6951423a6c0592e2ull, 0xdb4ed5c50f435168ull, 0x0716cd9ee850f5acull, 0x2bebbb5cb238e327ull, 0xfc8c3534df7d074eull, 0xc3bfd1581d065a2dull }}, {{ 0x1d2c96483837bcd6ull, 0x911459b298a12e14ull, 0x46e40835132998c0ull, 0xb735519ef638df86ull, 0xdd7a1410bae2490dull, 0xa57e2d71223f85cbull }}, {{ 0x23bdded2322d6058ull, 0xaacb80f9f64bccc9ull, 0xc4e85212bf9ff785ull, 0x281530359e38bb3eull, 0xa6c4c8a74cd6da89ull, 0x76edc66b567b39f6ull }}, {{ 0x656ab435f5c5c370ull, 0xabf309c39ef5ffdbull, 0xb11334bb7c3fab38ull, 0x90d3e2182e375073ull, 0x83afd6890064895bull, 0xa549c03160d043a2ull }}, {{ 0xf62b0a1b99b9a262ull, 0xb77e61a4359bfe91ull, 0xeac00f52da7cb036ull, 0xa846d4f1ce292484ull, 0x24de615a03ed5d93ull, 0x74e181edc822a459ull }}, {{ 0x9dae6514014057d1ull, 0x2aefd06a1817f1b3ull, 0x2b80993c88dee223ull, 0x92c451720d9b6d31ull, 0x70afcd842745a7c4ull, 0x90cf1349d15a6b7bull }}, {{ 0x28cff2c80c836e2bull, 0xad5e2424f0ef7104ull, 0xb305fc5d58b4d55full, 0xbbab2e74881243ebull, 0x66de072988b88dadull, 0xa816c0e22d8832d2ull }}, {{ 0x981f7bd07d224db2ull, 0xc5ad6971695a6a29ull, 0xfe3bdba5771055bcull, 0x54afd08d50b6a734ull, 0x04ac479f573588c9ull, 0x90e388d5c751fc38ull }}, {{ 0xf13ad624e35708f4ull, 0xb8c61e6e1d88259full, 0xee569476a6a3595full, 0x4ede258527228811ull, 0x2ebacc39681757ddull, 0xa8e35859c933da30ull }}, {{ 0x6c4c5d70e1665986ull, 0x37bd304d2751783full, 0x4f61cca282617dbdull, 0x14ad7733875950b3ull, 0xd34bfa3e10e96ea5ull, 0x98e17381dc0685e1ull }}, {{ 0x3afba668cdff7f38ull, 0x2d63e303892eb27aull, 0x19d1fe5917cee964ull, 0xcec6a803497d2701ull, 0x40f7c66ca91e5272ull, 0xf8ce831298413ad2ull }}, {{ 0x4dd480180bfaf830ull, 0xc5e6de235bd2f8c6ull, 0x0233ef7aee151de9ull, 0x13c29020dee3860bull, 0x89adc03e9b2f387cull, 0xb8111eb9f28c4c36ull }}, {{ 0x0a4d00f077cdb1deull, 0xbb04ad61963db7bfull, 0x16075acd4cd32b21ull, 0xc599a148b4e33c6eull, 0x60c982720fd834d8ull, 0x30ab3343797afa21ull }}, {{ 0x67020964ae08f2b0ull, 0x4e2ec5cfde692d76ull, 0xdc498c05003faf51ull, 0xb8004cd710e05c4cull, 0xc7df18749e721077ull, 0xe6b000a2becdc54dull }}, {{ 0x06145deecc597adcull, 0x0dd3ba1eb01bc6a0ull, 0x9adf7832027cd92dull, 0x30030066a8c39b00ull, 0xceb6f48e3074a4adull, 0x02e0065b7409b509ull }}, {{ 0x3ccbab53fb7ecc96ull, 0x8a454532e115c240ull, 0x0cbab1f418e07bc2ull, 0xe01e040297a40e06ull, 0x13258d8de48e6ec3ull, 0x1cc03f9288611262ull }}, {{ 0x5ff4b147d2f3fddbull, 0x66b4b3fccad99682ull, 0x7f4af388f8c4d599ull, 0xc12c2819ec688c3cull, 0xbf77878aed9053a6ull, 0x1f827bb953cab7d4ull }}, {{ 0xbf8eecce3d87ea91ull, 0x030f07dfec7fe117ull, 0xf8ed8359b7b057feull, 0x8bb991033c157a5cull, 0x7aab4b6d47a34483ull, 0x3b18d53d45eb2e4full }}, {{ 0x7b95400e674f29a7ull, 0x1e964ebf3cfecaedull, 0xb94721812ce36fecull, 0x753faa2058d6c7a1ull, 0xcab0f244cc60ad23ull, 0x4ef85464bb2fcf1aull }}, {{ 0xd3d480900917a083ull, 0x31df137861f3ed46ull, 0x3cc74f0bc0e25f39ull, 0x947ca5437863cc51ull, 0xeae976affbc6c362ull, 0x15b34bef4fde170bull }}, {{ 0x464d05a05aec451cull, 0xf2b6c2b3d38744c4ull, 0x5fc9167588d7b83bull, 0xccde74a2b3e5fb2cull, 0x2d1ea2dfd5c3a1d9ull, 0xd900f7591eace677ull }}, {{ 0xbf0238438d3ab316ull, 0x7b239b064348afaaull, 0xbddae097586d3257ull, 0x00b08e5b06fbcfbbull, 0xc3325cbe59a45282ull, 0x7a09a97b32c100a7ull }}, {{ 0x761632a3844afee1ull, 0xcf640e3ea0d6dcabull, 0x6a8cc5e97443f76aull, 0x06e58f8e45d61d55ull, 0x9ff79f6f806b3914ull, 0xc4609ecffb8a068dull }}, {{ 0x9cddfa632aedf4c9ull, 0x19e88e7248649eb2ull, 0x297fbb1e8aa7aa2cull, 0x44f79b8eba5d2556ull, 0x3fac3a5b04303ac8ull, 0xabc6341fd3644188ull }}, {{ 0x20abc7dfad4b8fd9ull, 0x03159076d3ee32faull, 0x9efd4f316a8ca5b9ull, 0xb1ac139347a3755dull, 0x7cba478e29e24bd2ull, 0xb5be093e41ea8f52ull }}, {{ 0x46b5cebcc4f39e75ull, 0x1ed7a4a4474dfdc5ull, 0x35e517ee297e793aull, 0xf0b8c3c0cc6295a8ull, 0xdf46cb8da2d6f63aull, 0x196c5c6e93299938ull }}, {{ 0xc31a135fb1843095ull, 0x346c6e6ac90be9b4ull, 0x1af2ef4d9ef0bc45ull, 0x6737a587fbd9d892ull, 0xb8c3f3885c659e4dull, 0xfe3b9c51bf9ffc38ull }}, {{ 0x9f04c1bcef29e5d5ull, 0x0c3c502bda77210full, 0x0d7d590835675ab4ull, 0x082c774fd68275b5ull, 0x37a783539bf82f06ull, 0xee541b317c3fda37ull }}, {{ 0x362f916157a2fa4full, 0x7a5b21b688a74a9cull, 0x86e57a5216098b08ull, 0x51bca91e61189912ull, 0x2c8b214417b1d63cull, 0x4f490feeda7e8628ull }}, {{ 0x1ddbadcd6c5dc717ull, 0xc78f51215688ea1aull, 0x44f6c734dc5f6e54ull, 0x315e9b2fcaf5fab9ull, 0xbd6f4ca8ecf25e5bull, 0x18da9f5488f13d91ull }}, {{ 0x2a94ca063ba9c6e7ull, 0xcb992b4d61592505ull, 0xb1a3c8109bba4f4full, 0xedb20fdded9bcb3cull, 0x6658fe994177af8full, 0xf88a394d596c67b1ull }}, {{ 0xa9cfe43e54a1c502ull, 0xf3fbb105cd7b7233ull, 0xf065d0a61547191dull, 0x48f49eab4815f05eull, 0xff79f1fc8eacdb9full, 0xb5663d057e3c0cedull }}, {{ 0xa21eea6f4e51b215ull, 0x87d4ea3a06d27604ull, 0x63fa267cd4c6fb2bull, 0xd98e32b0d0db63b5ull, 0xfac373dd92c09438ull, 0x15fe6236ee58814bull }}, {{ 0x553528590f30f4d1ull, 0x4e51264444389c2eull, 0xe7c580e04fc5cfb3ull, 0x7f8dfae82891e515ull, 0xcba286a7bb85ca38ull, 0xdbefd6254f750cf7ull }}, {{ 0x5413937a97e99027ull, 0x0f2b7eaaaa3619cfull, 0x0db708c31dba1d01ull, 0xfb8bcd1195b2f2dbull, 0xf459428d5339e634ull, 0x975e5d751a9281adull }}, {{ 0x48c3c2c9ef1fa184ull, 0x97b2f2aaa61d0219ull, 0x8926579f2945220aull, 0xd37602afd8fd7c8eull, 0x8b7c99854042fe11ull, 0xe9afa69309b910cbull }}, {{ 0xd7a59be3573c4f25ull, 0xecfd7aaa7d2214fcull, 0x5b7f6c379cb35469ull, 0x429c1ade79e6dd91ull, 0x72ddff34829decb2ull, 0x20dc81be613aa7f3ull }}, {{ 0x6c7816e1685b1770ull, 0x41e6caa8e354d1e0ull, 0x92fa3a2c1f014c23ull, 0x9a190cb0c304a7adull, 0x7cabf80d1a2b3ef6ull, 0x489d116fcc4a8f82ull }}, {{ 0x3cb0e4ce138eea5dull, 0x9303ea98e15032c4ull, 0xbdc645b9360cf960ull, 0x04fa7ee79e2e8cc7ull, 0xdeb7b08305b075a2ull, 0xd622ae5dfae99b18ull }}, {{ 0x5ee8f00cc39527a6ull, 0xbe2729f8cd21fbaaull, 0x69beb93c1c81bdc5ull, 0x31c8f50c2dd17fcdull, 0xb32ce51e38e49854ull, 0x5d5acfabcd200ef8ull }}, {{ 0xb519607fa3d38c7bull, 0x6d87a3b80353d4a7ull, 0x21733c591d1169b9ull, 0xf1d99279ca2efe06ull, 0xffc0f32e38edf349ull, 0xa58c1cb6034095b6ull }}, {{ 0x12fdc4fc66437cd0ull, 0x474c653021464e8dull, 0x4e805b7b22ae213eull, 0x727fb8c1e5d5ec3dull, 0xfd897fce394b80e3ull, 0x77791f1c2085d925ull }}, {{ 0xbde9b1dbfea2e021ull, 0xc8fbf3e14cbf1182ull, 0x110392cf5acd4c6eull, 0x78fd3792fa5b3a65ull, 0xe75efe0e3cf308e2ull, 0xaabb3719453a7b7bull }}, {{ 0x6b20f297f25cc14aull, 0xd9d786ccff76af1bull, 0xaa23bc198c04fc53ull, 0xb9e42bbdc79047f2ull, 0x09b5ec8e617e58d8ull, 0xab5026fcb448d2d7ull }}, {{ 0x2f4979ef779f8ce6ull, 0x826b4401faa2d712ull, 0xa56558ff7831db46ull, 0x42e9b569cba2cf7aull, 0x611b3d8fceef7877ull, 0xb12185df0ad83c66ull }}, {{ 0xd8dec35aac3b80f9ull, 0x1830a813ca5c66b5ull, 0x75f579fab1f290c1ull, 0x9d211621f45c1acaull, 0xcb10679e155ab4a8ull, 0xeb4f3ab66c725bffull }}, {{ 0x78b3a18aba5309beull, 0xf1e690c5e79c031aull, 0x9b96c3caf379a78aull, 0x234add538b990be8ull, 0xeea40c2cd58b0e96ull, 0x31184b203c7797fdull }}, {{ 0xb7044f6b473e6170ull, 0x7301a7bb0c181f08ull, 0x13e3a5ed82c08b6dull, 0x60eca54373fa7716ull, 0x526879c0576e91ddull, 0xeaf2ef425cabefebull }}, {{ 0x262b1a30c86fce5full, 0x7e108d4e78f13657ull, 0xc6e47b471b857246ull, 0xc93e74a287c8a6dcull, 0x3814c1836a51b2a5ull, 0x2d7d58979eb75f31ull }}, {{ 0x7daf05e7d45e0fb7ull, 0xeca58510b96c1f67ull, 0xc4ecd0c7133676c0ull, 0xdc708e594dd6849full, 0x30cf8f222730fa79ull, 0xc6e575ec3329b7ecull }}, {{ 0xe8d63b0e4bac9d24ull, 0x3e7732a73e393a0aull, 0xb14027c6c020a389ull, 0x9c658f7d0a612e3dull, 0xe81b975587e9c8c2ull, 0xc4f69b39ffa12f39ull }}, {{ 0x185e4e8ef4be2368ull, 0x70a7fa886e3c446dull, 0xec818dc38146635cull, 0x1bf79ae267cbce68ull, 0x1113e9574f21d79aull, 0xb1a21043fc4bd843ull }}, {{ 0xf3af11958f6d620bull, 0x668fc9544e5aac42ull, 0x3d0f89a30cbfe19cull, 0x17ac0cd80df61019ull, 0xaac71d6917526c05ull, 0xf054a2a7daf6729eull }}, {{ 0x84d6afd79a45d46full, 0x019ddd4b0f8aba9dull, 0x629b605e7f7ed01cull, 0xecb880708b9ca0fcull, 0xabc7261ae9383832ull, 0x634e5a8e8da07a32ull }}, {{ 0x3062de6c06ba4c53ull, 0x102aa4ee9b6b4a27ull, 0xda11c3b0faf42118ull, 0x3f350465741e49dbull, 0xb5c77d0d1c3231fdull, 0xe10f89918844c5faull }}, {{ 0xe3dcb0384346fb3cull, 0xa1aa71521230e587ull, 0x84b1a4e9cd894af0ull, 0x78122bf6892ee296ull, 0x19cae28319f5f3e4ull, 0xca9b5faf52afbbcbull }}, {{ 0xe69ee232a0c5d059ull, 0x50a86d34b5e8f74eull, 0x2ef07122075ced66ull, 0xb0b5b7a15bd4d9e1ull, 0x01ecd91f039b86ecull, 0xea11bcd93add55efull }}, {{ 0x0234d5fa47ba2375ull, 0x2694440f1b19a915ull, 0xd5646b5449a145ffull, 0xe7192c4d965082cbull, 0x13407b362413453eull, 0x24b1607c4ca55b56ull }}, {{ 0x16105bc6cd456294ull, 0x81caa8970f009ad2ull, 0x55ec314ae04cbbf7ull, 0x06fbbb07df251bf6ull, 0xc084d01d68c0b475ull, 0x6eedc4dafe75915cull }}, {{ 0xdca395c404b5d9c4ull, 0x11ea95e696060c34ull, 0x5b39ececc2ff57abull, 0x45d54e4eb773179full, 0x8530212617870c92ull, 0x5549b08df097ad9full }}, {{ 0x9e63d9a82f1a81acull, 0xb329db01dc3c7a10ull, 0x9043413f9df96caeull, 0xba550f132a7eec39ull, 0x33e14b7ceb467db6ull, 0x54e0e58b65ecc83bull }}, {{ 0x2fe68091d70910b6ull, 0xffa28e129a5cc4a6ull, 0xa2a08c7c2bbe3ed2ull, 0x475296bfa8f53a3full, 0x06ccf2e130c0e923ull, 0x50c8f771fb3fd250ull }}, {{ 0xdf0105b2665aa71eull, 0xfc598cba079fae7dull, 0x5a457cd9b56e743dull, 0xc939e37c9994467cull, 0x44017ccbe7891b60ull, 0x27d9aa73d07e3720ull }}, {{ 0xb60a38f7ff8a8727ull, 0xdb7f7f444c3cd0eaull, 0x86b6e08116508a6bull, 0xdc42e2ddffcac0dbull, 0xa80edff70b5b11c7ull, 0x8e80a88624ee2742ull }}, {{ 0x1c6639affb694787ull, 0x92faf8aafa60292bull, 0x4324c50adf256836ull, 0x9a9cdcabfdeb8893ull, 0x9094bfa6718eb1ceull, 0x9106953d714d889aull }}, {{ 0x1bfe40dfd21ccb41ull, 0xbdcdb6adc7c19bafull, 0x9f6fb26cb7761221ull, 0x0a209eb7eb3355c0ull, 0xa5cf7c806f92f212ull, 0xaa41d4666d075609ull }}, {{ 0x17ee88be351ff08bull, 0x6a0922c9cd9014d7ull, 0x3a5cf83f2a9cb551ull, 0x6546332f30015986ull, 0x7a1add045bbd74b4ull, 0xa6924c0042495c60ull }}, {{ 0xef51576e133f6572ull, 0x245b5be207a0d066ull, 0x47a1b277aa1f152eull, 0xf4bdffd7e00d7f3eull, 0xc50ca22b95668f0bull, 0x81b6f80296dd9bc4ull }}, {{ 0x592d6a4cc079f678ull, 0x6b9196d44c482405ull, 0xcc50f8aca536d3cdull, 0x8f6bfe6ec086f86eull, 0xb27e55b3d6019677ull, 0x1125b019e4a815afull }}, {{ 0x7bc626ff84c3a0adull, 0x33afe44afad16835ull, 0xfb29b6be74244606ull, 0x9a37f0538545b453ull, 0xf8ef59065c0fe0abull, 0xab78e102ee90d8dcull }}, {{ 0xd5bd85fb2fa446c2ull, 0x04deeaedcc2e1216ull, 0xcfa12370896abc3eull, 0x062f634334b90b47ull, 0xb9597a3f989ec6b4ull, 0xb2b8ca1d51a878a1ull }}, {{ 0x59673bcfdc6ac392ull, 0x30b52d49f9ccb4e4ull, 0x1c4b62655e2b5a6cull, 0x3dd9e0a00f3a70ceull, 0x3d7ec67bf633c308ull, 0xfb37e5253094b651ull }}, {{ 0x7e08561e9c2ba3b9ull, 0xe713c4e3c1ff10ebull, 0x1af1d7f5adb18839ull, 0x6a82c6409848680dull, 0x66f3c0d79e059e52ull, 0xd02ef373e5cf1f2cull }}, {{ 0xec535d3219b46536ull, 0x06c5b0e593f6a932ull, 0x0d726f98c8ef5243ull, 0x291bbe85f2d41083ull, 0x0585886c2c382f38ull, 0x21d58286fa1737bcull }}, {{ 0x3b41a3f5010bf41bull, 0x43b8e8f7c7a29bfdull, 0x86785bf7d959369eull, 0x9b15713b7c48a51eull, 0x37375439ba31d831ull, 0x52571945c4e82d58ull }}, {{ 0x509067920a77890dull, 0xa53919adcc5a17e4ull, 0x40b397ae7d7c222eull, 0x0ed66c52dad67331ull, 0x28294a4145f271f0ull, 0x3766fcb9b111c572ull }}, {{ 0x25a40bb468ab5a83ull, 0x743b00c9fb84eeebull, 0x8703ecd0e6d955d2ull, 0x94603b3c8c607fecull, 0x919ce68cbb787360ull, 0x2a05df40eab1b675ull }}, {{ 0x7868750c16b1891eull, 0x8a4e07e3d331552full, 0x46274029047d5a38ull, 0xcbc2505d7bc4ff3dull, 0xb021017f52b481c5ull, 0xa43ab8892af12097ull }}, {{ 0xb4149278e2ef5b30ull, 0x670c4ee63fed53daull, 0xbd88819a2ce58635ull, 0xf59723a6d5b1f864ull, 0xe14a0ef93b0d11b9ull, 0x6a4b355bad6b45ecull }}, {{ 0x08cdb8b8dd598fe2ull, 0x067b14fe7f45468bull, 0x67551005c0f73e16ull, 0x97e7648458f3b3efull, 0xcce495bc4e82b143ull, 0x26f01594c630bb40ull }}, {{ 0x58093738a57f9ed8ull, 0x40ced1f0f8b4c16eull, 0x0952a03989a86cdcull, 0xef09ed2b7985075aull, 0x00edd95b111aeca3ull, 0x8560d7cfbde75088ull }}, {{ 0x705c283676fc3474ull, 0x88143369b70f8e4full, 0x5d3a423f6094409aull, 0x566343b2bf324984ull, 0x094a7d8eab0d3e67ull, 0x35c86e1d6b092550ull }}, {{ 0x63999220a5da0c88ull, 0x50ca0221269b8f1aull, 0xa4469679c5ca8609ull, 0x5fe0a4fb77f6df2bull, 0x5ce8e792ae847009ull, 0x19d44d262e5b7520ull }}, {{ 0xe3ffb5467a847d4dull, 0x27e4154b82139707ull, 0x6ac1e0c1b9e93c5dull, 0xbec671d2afa4b7b4ull, 0xa1190bbad12c605dull, 0x024b037dcf929343ull }}, {{ 0xe7fd14c0c92ce4ffull, 0x8ee8d4f314c3e64eull, 0x2b92c791431c5ba3ull, 0x73c0723adc6f2d0cull, 0x4afa754c2bbbc3a9ull, 0x16ee22ea1bb9c0a4ull }}, {{ 0x0fe2cf87dbc0f1f4ull, 0x9518517ecfa6ff15ull, 0xb3bbcbac9f1b9463ull, 0x8584764c9c57c279ull, 0xedc894f9b555a49eull, 0xe54d5d251541866aull }}, {{ 0x9edc1b4e95897388ull, 0xd2f32ef41c85f6d2ull, 0x0555f4be3713cbe3ull, 0x372c9efe1b6d98c1ull, 0x49d5d1c115586e31ull, 0xf505a372d48f402dull }}, {{ 0x34991111d75e834full, 0x3d7fd5891d3ba43aull, 0x355b8f6e26c5f6e6ull, 0x27be35ed1247f78aull, 0xe25a318ad5744decull, 0x9238627c4d9881c4ull }}, {{ 0x0dfaaab269b12111ull, 0x66fe575b24546a46ull, 0x15939a4d83bba4feull, 0x8d6e1b42b6cfab66ull, 0xd785ef6c568b0b39ull, 0xb633d8db07f511b0ull }}, {{ 0x8bcaaaf820eb4aabull, 0x05ef698f6b4c26bcull, 0xd7c40707255471f0ull, 0x864d109b241cb1fcull, 0x6b3b5a3b616e703full, 0x1e06788e4f92b0e8ull }}, {{ 0x75eaadb14930eaaeull, 0x3b5a1f9a30f9835dull, 0x6da84647754c7360ull, 0x3f02a60f691ef3e0ull, 0x30518651ce50627bull, 0x2c40b58f1bbae914ull }}, {{ 0x9b2ac8ecdbe92acfull, 0x51853c05e9bf21a6ull, 0x4892beca94fc81c2ull, 0x761a7c9a1b3586c4ull, 0xe32f3f320f23d8d0ull, 0xba871797154d1ac9ull }}, {{ 0x0fabd940971bac17ull, 0x2f34583b21775082ull, 0xd5bb73e9d1dd1197ull, 0x9d08de05101743aaull, 0xdfd877f497667824ull, 0x4946ebe6d5030be2ull }}, {{ 0x9cb67c85e714b8e4ull, 0xd80b724f4ea92514ull, 0x5952872232a2afe7ull, 0x2258ac32a0e8a4acull, 0xbe74af8dea00b16eull, 0xdcc53704521e76dcull }}, {{ 0x1f20dd3b06cf38e3ull, 0x70727719129b72ceull, 0x7d394755fa5adf0eull, 0x5776b9fa49166ebbull, 0x708edb8b2406ee4dull, 0x9fb4262b3530a49full }}, {{ 0x3748a44e441838e1ull, 0x6478a6faba127c0dull, 0xe43cc95bc78cb690ull, 0x6aa343c6dae05352ull, 0x6594936f68454f05ull, 0x3d097db013e66e3aull }}, {{ 0x28d66b0ea8f238cbull, 0xecb685cb44b8d884ull, 0xea5fdd95cb7f21a3ull, 0x2a60a5c48cc3413cull, 0xf7cdc25a12b51636ull, 0x625ee8e0c7004e47ull }}, {{ 0x98602e92997637ebull, 0x3f2139f0af387529ull, 0x27bea7d9f2f75067ull, 0xa7c679ad7fa08c61ull, 0xae099784bb12de1dull, 0xd7b518c7c6030ecfull }}, {{ 0xf3c1d1b9fe9e2f29ull, 0x774c4366d834939full, 0x8d728e837da92408ull, 0x8dc0c0c6fc457bcbull, 0xcc5feb2f4ebcad28ull, 0x6d12f7cdbc1e941cull }}, {{ 0x85923143f22dd79cull, 0xa8faa204720dc43full, 0x86799122e89b6854ull, 0x898787c5dab6d5f3ull, 0xfbbf2fd9135ec395ull, 0x42bdae095931c91full }}, {{ 0x37b5eca775ca6c1bull, 0x99ca542c7489aa7bull, 0x40bfab5d1612134eull, 0x5f4b4dba8b245b83ull, 0xd577de7ac1b3a3d7ull, 0x9b68cc5d7bf1db3full }}, {{ 0x2d1b3e8a99e8390aull, 0x01e749bc8d60a8d0ull, 0x877cb1a2dcb4c112ull, 0xb8f109496f6b9320ull, 0x56aeb0cb91046669ull, 0x1217fba6d772907eull }}, {{ 0xc310716a03123a68ull, 0x1308e15d85c69821ull, 0x4adef05c9f0f8ab4ull, 0x396a5cde5a33bf45ull, 0x62d2e7f3aa2c0021ull, 0xb4efd4846a79a4efull }}, {{ 0x9ea46e241eb6480dull, 0xbe58cda739c1f151ull, 0xecb5639e369b6b08ull, 0x3e27a0af860578b4ull, 0xdc3d0f84a5b8014cull, 0x115e4d2c28c07159ull }}, {{ 0x326c4d69331ed080ull, 0x6f78088841936d30ull, 0x3f15e42e22122e57ull, 0x6d8c46db3c36b711ull, 0x9a629b2e79300cfaull, 0xadaf03b997846d82ull }}, {{ 0xf83b061bff342504ull, 0x5ab055528fc243e1ull, 0x76dae9cd54b5cf6aull, 0x477ac4905a2326acull, 0x07da0fd0bbe081c8ull, 0xc8d6253feb2c471aull }}, {{ 0xb24e3d17f8097226ull, 0x8ae355399d96a6d3ull, 0xa48d22054f1a1a27ull, 0xcacbada3855f82bcull, 0x4e849e2756c511d2ull, 0xd85d747f2fbac704ull }}, {{ 0xf70e62efb05e757dull, 0x6ce1544027e28444ull, 0x6d8354351705058bull, 0xebf4c86335bb1b5eull, 0x112e2d8963b2b23bull, 0x73a68cf7dd4bc62bull }}, {{ 0xa68fdd5ce3b096e2ull, 0x40cd4a818ed92ab1ull, 0x47214a12e6323772ull, 0x378fd3e0194f11b0ull, 0xabcdc75de4faf657ull, 0x848181aea4f5bdaeull }}, {{ 0x819ea5a0e4e5e4d5ull, 0x8804e90f947baaf0ull, 0xc74ce4bcfdf62a76ull, 0x2b9e46c0fd16b0e2ull, 0xb609c9aaf1cd9f68ull, 0x2d0f10d2719968d2ull }}, {{ 0x10327848f0faf04full, 0x50311a9bccd4ad65ull, 0xc900ef61eb9da8a1ull, 0xb42ec389e2e2e8dbull, 0x1c61e0ad72083a11ull, 0xc296a8386ffe183bull }}, {{ 0xa1f8b2d969cd6317ull, 0x21eb0a16004ec5f2ull, 0xda0959d33428964dull, 0x09d3a362dcdd1895ull, 0x1bd2c6c6745244b1ull, 0x99e292345fecf24full }}, {{ 0x53b6fc7e2205dee8ull, 0x532e64dc0313bb7aull, 0x845d82400995df03ull, 0x624461dca0a2f5daull, 0x163bc3c08b36aeeaull, 0x02d9b60bbf417717ull }}, {{ 0x4525dced543ab510ull, 0x3fcff0981ec552c7ull, 0x2ba716805fdab621ull, 0xd6abd29e465d9a89ull, 0xde55a5857022d527ull, 0x1c811c75788ea6e6ull }}, {{ 0xb37aa1454a4b129dull, 0x7e1f65f133b53bc8ull, 0xb486e103be8b1d4cull, 0x62b63a2ebfa8095bull, 0xaf587736615c538eull, 0x1d0b1c96b5928504ull }}, {{ 0x02ca4cb4e6eeba24ull, 0xed39fb6c051455d7ull, 0x0d44ca25716f24fcull, 0xdb1e45d37c905d95ull, 0xd974a81fcd9b438full, 0x226f1de317b9322eull }}, {{ 0x1be6ff110553456aull, 0x4443d23832cb5a66ull, 0x84afe5766e5771e1ull, 0x8f2eba42dda3a7d2ull, 0x7e8e913e0810a39eull, 0x58572adeed3bf5d4ull }}, {{ 0x1705f6aa3540b628ull, 0xaaa63631fbf187fdull, 0x2edef6a04f6a72ccull, 0x97d3469ca8648e39ull, 0xf191ac6c50a66431ull, 0x7367acb544579a4cull }}, {{ 0xe63ba2a614871d94ull, 0xaa7e1df3d76f4fe2ull, 0xd4b5a2431a287bfeull, 0xee40c21e93ed8e3bull, 0x6fb0bc3b267fe9efull, 0x820cbf14ab6c0701ull }}, {{ 0xfe545a7ccd4727cbull, 0xa8ed2b866a591edcull, 0x4f18569f0594d7f2ull, 0x4e879531c7478e56ull, 0x5ce75a4f80ff235full, 0x147f76ceb238460eull }}, {{ 0xef4b88e004c78df2ull, 0x9943b340277b34a1ull, 0x16f3623637d06f7aull, 0x114bd3f1c8cb8f5full, 0xa109871b09f761b9ull, 0xccfaa412f632bc8full }}, {{ 0x58f358c02fcb8b76ull, 0xfca500818ad00e53ull, 0xe581d61e2e245ac9ull, 0xacf64771d7f399b6ull, 0x4a5f470e63a9d13aull, 0x01ca68bd9dfb5d9cull }}, {{ 0x79817781ddf3729cull, 0xde72050f6c208f41ull, 0xf7125d2dcd6b8be3ull, 0xc19eca726f840124ull, 0xe7b8c68fe4a22c4aull, 0x11e817682bd1a81aull }}, {{ 0xbf0eab12ab827a1cull, 0xb074329a3945988eull, 0xa6b7a3ca063376e6ull, 0x9033e8785b280b71ull, 0x0d37c19eee55baebull, 0xb310ea11b630910dull }}, {{ 0x7692aebab318c519ull, 0xe489fa063cb7f593ull, 0x832c65e43e02a502ull, 0xa20714b38f907270ull, 0x842d90354f594d33ull, 0xfea924b11de5aa82ull }}, {{ 0xa1bad34afef7b2fcull, 0xed63c43e5f2f97c2ull, 0x1fbbfaea6c1a721cull, 0x5446cf039ba47865ull, 0x29c7a215197d0404ull, 0xf29b6eeb2af8a919ull }}, {{ 0x514c40edf5acfdd5ull, 0x45e5aa6fb7dbed9aull, 0x3d57cd2839087521ull, 0x4ac41624146cb3f3ull, 0xa1cc54d2fee2282bull, 0x7a12552fadb69afbull }}, {{ 0x2cfa894b98c1ea51ull, 0xbaf8a85d2e974807ull, 0x656e03923a54934cull, 0xeba8dd68cc3f0780ull, 0x51fb503df4d591b0ull, 0xc4b753dcc9220dd4ull }}, {{ 0xc1c95cf3f7932726ull, 0x4db693a3d1e8d047ull, 0xf64c23b6474dc0ffull, 0x3498a617fa764b03ull, 0x33d1226b9057b0e9ull, 0xaf29469fdb548a4bull }}, {{ 0x91dda187abbf8780ull, 0x0921c466331822cdull, 0x9ef9651ec90989f9ull, 0x0df67cefc89eee27ull, 0x062b5833a36ce91cull, 0xd79cc23e914d66f0ull }}, {{ 0xb2a84f4cb57b4afeull, 0x5b51abfdfef15c07ull, 0x35bdf333da5f63baull, 0x8ba0e15dd6354d8cull, 0x3db1720462411b18ull, 0x6c1f9671ad060560ull }}, {{ 0xfa9318ff16d0edf1ull, 0x9130b7ebf56d984cull, 0x196b800687b9e547ull, 0x7448cdaa5e15077aull, 0x68ee742bd68b0ef5ull, 0x393be070c23c35c2ull }}, {{ 0xc9bef9f6e4294b69ull, 0xabe72f379647f301ull, 0xfe3300414d42f4cbull, 0x8ad808a7acd24ac4ull, 0x195089b6616e9596ull, 0x3c56c467965a1998ull }}, {{ 0xe175c3a4e99cf21aull, 0xb707d82bdecf7e11ull, 0xedfe028d049d8ff4ull, 0x6c70568cc036ebb1ull, 0xfd25611fce51d7e1ull, 0x5b63ac0bdf84fff0ull }}, {{ 0xce99a47120217500ull, 0x264e71b6b41aecb2ull, 0x4bec19822e279f8full, 0x3c63617f822534f3ull, 0xe375cb3e0f326eceull, 0x91e4b876bb31ff69ull }}, {{ 0x12006c6b414e91feull, 0x7f107123090d3efcull, 0xf738ff15cd8c3b97ull, 0x5be1cefb15741180ull, 0xe299f06c97f8540eull, 0xb2ef34a34ff3fa22ull }}, {{ 0xb4043c308d11b3eeull, 0xf6a46b5e5a8475d8ull, 0xa839f6da077a53eaull, 0x96d215ced688af09ull, 0xda03643defb3488full, 0xfd580e611f87c55cull }}, {{ 0x082a59e582b1074aull, 0xa26c31af892c9a77ull, 0x9243a4844ac7472dull, 0xe434da146156d660ull, 0x8421ea6b5d00d59bull, 0xe5708fcb3b4db5a0ull }}, {{ 0x51a782f71aea48e3ull, 0x5839f0db5bbe08a6ull, 0xb6a46d2aebc8c7c8ull, 0xea1084cbcd645fc5ull, 0x29532831a2085816ull, 0xf6659df051091845ull }}, {{ 0x308b1da70d26d8daull, 0x72436891956c567full, 0x226c43ad35d7cdd3ull, 0x24a52ff605ebbdb9ull, 0x9d3f91f0545370e5ull, 0x9ff82b632a5af2b3ull }}, {{ 0xe56f288683847882ull, 0x76a215afd63b60f7ull, 0x583aa4c41a6e0a42ull, 0x6e73df9c3b35693bull, 0x247bb3634b4268f3ull, 0x3fb1b1dfa78d7b04ull }}, {{ 0xf6579541232cb518ull, 0xa254d8de5e51c9aeull, 0x724a6fa9084c6698ull, 0x5086bc1a50161c51ull, 0x6cd501e0f0981982ull, 0x7cf0f2bc8b86ce29ull }}, {{ 0x9f6bd48b5fbf12eeull, 0x575078afaf31e0d5ull, 0x76e85c9a52fc01f6ull, 0x2543590720dd1b2eull, 0x405212c965f0ff17ull, 0xe1697b5d73440d9eull }}, {{ 0x3a364d71bd76bd50ull, 0x6924b6dcd7f2c858ull, 0xa5139e073dd8139full, 0x74a17a4748a30fd0ull, 0x8334bbddfb69f6e7ull, 0xce1ed1a680a8882eull }}, {{ 0x461f067166a3651eull, 0x1b6f24a06f7bd372ull, 0x72c42c486a70c43aull, 0x8e4ec6c8d65e9e26ull, 0x200f56abd223a50aull, 0x0d343081069551d1ull }}, {{ 0xbd36406e0261f32full, 0x12576e445ad64276ull, 0x7ba9bad42867aa45ull, 0x8f13c3d85fb22d80ull, 0x409962b635647269ull, 0x8409e50a41d5322bull }}, {{ 0x641e844c17d37fd6ull, 0xb76a4eab8c5e98a3ull, 0xd4a14c49940ca6b2ull, 0x96c5a673bcf5c704ull, 0x85fddb1e15ec781full, 0x2862f2669253f5b0ull }}, {{ 0xe9312af8ee42fe59ull, 0x2a2712b37bb1f661ull, 0x4e4cfadfc87e82fbull, 0xe3b880856199c630ull, 0x3bea8f2cdb3cb13bull, 0x93dd7801b74798e5ull }}, {{ 0x1bebadb94e9def77ull, 0xa586bb02d4f39fd3ull, 0x0f01ccbdd4f11dcfull, 0xe5350535d001bde3ull, 0x572997c0905eec56ull, 0xc6a6b01128cbf8f4ull }}, {{ 0x1734c93d122b5aa1ull, 0x77434e1c51843e3full, 0x9611ff6a516b2a1cull, 0xf412341a20116adeull, 0x679fed85a3b53b64ull, 0xc282e0ab97f7b98bull }}, {{ 0xe80fdc62b5b18a4dull, 0xa8a10d1b2f2a6e76ull, 0xdcb3fa272e2fa51cull, 0x88b6090540ae2cb1ull, 0x0c3f4738651451f1ull, 0x991cc6b3efad3f72ull }}, {{ 0x109e9bdb18ef6706ull, 0x964a830fd7a850a5ull, 0x9f07c587cddc731eull, 0x571c5a3486cdbef2ull, 0x7a78c833f2cb336full, 0xfb1fc3075cc47a74ull }}, {{ 0xa632168ef95a063eull, 0xdee91e9e6c932672ull, 0x364db74e0a9c7f31ull, 0x671b860d4409757aull, 0xc8b7d2077bf00259ull, 0xcf3d9e499facc88cull }}, {{ 0x7df4e195bd843e69ull, 0xb51b32303dbf807aull, 0x1f09290c6a1cf7f2ull, 0x07133c84a85e96c6ull, 0xd72e344ad760177eull, 0x18682ee03cbfd57full }}, {{ 0xeb90cfd9672a701aull, 0x130ff5e2697b04c8ull, 0x365b9a7c2521af7bull, 0x46c05d2e93b1e3bdull, 0x67ce0aec69c0eaecull, 0xf411d4c25f7e56feull }}, {{ 0x33a81e7e07a86109ull, 0xbe9f9ad81ece2fd9ull, 0x1f9408d97350daceull, 0xc383a3d1c4f2e564ull, 0x0e0c6d3c21892d3aull, 0x88b24f97baef65f0ull }}, {{ 0x049130ec4c93ca59ull, 0x723c0c71340dde7cull, 0x3bc8587e81288c13ull, 0xa3246631b17cf5e9ull, 0x8c7c44594f5bc44bull, 0x56f71bed4d59fb60ull }}, {{ 0x2dabe93afdc5e778ull, 0x76587c6c088ab0d8ull, 0x55d374f10b9578c2ull, 0x5f6bfdf0eee19b1cull, 0x7cdaab7d1995aaf4ull, 0x65a717450583d1c5ull }}, {{ 0xc8b71c4de9bb0ab1ull, 0x9f74dc38556ae871ull, 0x5a42916a73d6b798ull, 0xba37eb6954d00f1bull, 0xe08ab2e2ffd8ad8bull, 0xf886e8b2372631b6ull }}, {{ 0xd7271b0b214e6ae9ull, 0x3a909a33562d1471ull, 0x8699ae2886632bf6ull, 0x462f321d50209711ull, 0xc56afcddfe76c775ull, 0xb54516f6277df124ull }}, {{ 0x67870e6f4d102d1bull, 0x49a606015dc2cc72ull, 0x4200cd953fdfb79eull, 0xbdd7f5252145e6afull, 0xb62de0abf0a3ca94ull, 0x14b2e59d8aeb6b6full }}, {{ 0x0b46905902a1c30eull, 0xe07c3c0da99bfc78ull, 0x940807d47ebd2c2eull, 0x6a6f93734cbb02d8ull, 0x1dcac6b76665e9cfull, 0xcefcf8276d32325dull }}, {{ 0x70c1a37a1a519e8full, 0xc4da5888a017dcb0ull, 0xc8504e4cf363b9d4ull, 0x285bc280ff4e1c75ull, 0x29ebc329fffb221aull, 0x15e1b18a43f5f7a3ull }}, {{ 0x679062c507303197ull, 0xb087755640ee9ee4ull, 0xd3230f0181e5424full, 0x93959909f90d1c99ull, 0xa3359fa3ffcf5505ull, 0xdad0ef66a79bac5full }}, {{ 0x0ba3dbb247e1efe1ull, 0xe54a955e895234ecull, 0x3f5e960f12f4971cull, 0xc3d7fa63ba831e02ull, 0x60183c67fe195237ull, 0x8c295a028c14bbbcull }}, {{ 0x746694f6ced35eccull, 0xf4e9d5b15d361138ull, 0x79b1dc96bd8de720ull, 0xa66fc7e5491f2c16ull, 0xc0f25c0fecfd362dull, 0x799d841978cf555bull }}, {{ 0x8c01d1a41441b3f4ull, 0x912258eda41cac34ull, 0xc0f29de3678b0749ull, 0x805dcef4db37b8e0ull, 0x8977989f41e41dc8ull, 0xc02728feb8195595ull }}, {{ 0x78123068ca910787ull, 0xab577948691eba0dull, 0x897a2ae20b6e48dfull, 0x03aa1590902d38c7ull, 0x5eabf63892e929d5ull, 0x818799f330fd57d7ull }}, {{ 0xb0b5e417e9aa4b43ull, 0xb16abcd41b334486ull, 0x5ec5acd4724ed8bcull, 0x24a4d7a5a1c437cbull, 0xb2b79e35bd1ba252ull, 0x0f4c037fe9e56e69ull }}, {{ 0xe71ae8ef20a6f09aull, 0xee2b60491000ad42ull, 0xb3b8c04c7714775eull, 0x6e706c7851aa2df1ull, 0xfb2c2e1963145735ull, 0x98f822ff22f65020ull }}, {{ 0x070d1957468565ffull, 0x4db1c2daa006c49dull, 0x053782fca6cca9b5ull, 0x50643cb330a5cb71ull, 0xcfb9ccfddecb6816ull, 0xf9b15df75d9f2149ull }}, {{ 0x4682fd68c135fbf8ull, 0x08f19c8a4043ae22ull, 0x342b1dde83fea115ull, 0x23ea5effe679f26aull, 0x1d4201eab3f210dfull, 0xc0edaba9a8374ce2ull }}, {{ 0xc11de6178c1bd7b2ull, 0x59701d6682a4cd56ull, 0x09af2ab127f24ad2ull, 0x6727b5ff00c37826ull, 0x2494132b0774a8b7ull, 0x8948b4a0922900d5ull }}, {{ 0x8b2afceb79166cf0ull, 0x7e6126011a700563ull, 0x60d7aaeb8f76ec37ull, 0x078d1bf607a2b17cull, 0x6dc8bfae4a8e972aull, 0x5cd70e45b59a0853ull }}, {{ 0x6fade132bae04161ull, 0xefcb7c0b086035e3ull, 0xc86cad339aa53a2aull, 0x4b83179c4c5aeedbull, 0x49d77ccee991e7a4ull, 0xa0668eb918045342ull }}, {{ 0x5ccacbfb4cc28dcaull, 0x5df2d86e53c21ae2ull, 0xd43ec4040a7445adull, 0xf31eec1afb8d5495ull, 0xe26ae0151fb30c6aull, 0x4401933af02b4096ull }}, {{ 0x9febf7d0ff9989e4ull, 0xab7c744f45950cd7ull, 0x4a73a828688ab8c5ull, 0x7f35390dd3854ddaull, 0xd82cc0d33cfe7c2dull, 0xa80fc04d61b085e4ull }}, {{ 0x3f37ae29fbff62e7ull, 0xb2dc8b18b7d2806cull, 0xe8849194156b37b8ull, 0xf8143a8a43350a86ull, 0x71bf884061f0d9c6ull, 0x909d8305d0e53af0ull }}, {{ 0x782ccda3d7f9dd07ull, 0xfc9d6ef72e39043aull, 0x152dafc8d6302d36ull, 0xb0ca4966a0126945ull, 0x717b5283d36881c5ull, 0xa6271e3a28f44d64ull }}, {{ 0xb1c008666fc2a249ull, 0xde2655a7ce3a2a48ull, 0xd3c8ddd85de1c425ull, 0xe7e6de0240b81cb2ull, 0x6ed13926421511b8ull, 0x7d872e45998b05ecull }}, {{ 0xf18054005d9a56deull, 0xad7f588e0e45a6d6ull, 0x45d8aa73aad1a97aull, 0x0f04ac1687311efcull, 0x542c3b7e94d2b139ull, 0xe747ceb7ff6e3b3cull }}, {{ 0x6f034803a80764acull, 0xc6f9758c8eb88465ull, 0xba76a884ac309ecaull, 0x962eb8e147eb35daull, 0x49ba52f1d03aec3aull, 0x08ce132ffa4e505bull }}, {{ 0x5620d0249049eeb7ull, 0xc5be977d93352bf6ull, 0x48a2952eb9e633ebull, 0xddd338cccf301a8bull, 0xe1473d72224d3a49ull, 0x580cbfdfc70f2390ull }}, {{ 0x5d48216da2e35323ull, 0xb971eae7c013b79full, 0xd659d3d342fe0735ull, 0xaa40380017e10970ull, 0xccc86675570446e2ull, 0x707f7ebdc69763a8ull }}, {{ 0xa4d14e485ce13f61ull, 0x3e732d0d80c52c39ull, 0x5f8246409dec4819ull, 0xa6823000eeca5e68ull, 0xffd40095662ac4daull, 0x64faf369c1e9e497ull }}, {{ 0x702d0ed3a0cc79c6ull, 0x707fc28707b3ba40ull, 0xbb16be862b3ad0fcull, 0x8115e00953e7b013ull, 0xfe4805d5fdabb08aull, 0xf1cd82219322edefull }}, {{ 0x61c2944447fcc1baull, 0x64fd99464d054684ull, 0x4ee3713db04c29dcull, 0x0adac05d470ce0c5ull, 0xeed03a5be8b4e569ull, 0x7207154fbf5d4b5full }}, {{ 0xd199caaacfdf9147ull, 0xf1e7fcbf0234c12bull, 0x14e26c68e2f9a29bull, 0x6c8b83a4c680c7b5ull, 0x542247971710f61aull, 0x7446d51d79a4f1bfull }}, {{ 0x3001eaac1ebbacc3ull, 0x730fdf76160f8bb6ull, 0xd0d83c18ddc05a17ull, 0x3d73246fc107cd12ull, 0x4956cbe6e6a99d08ull, 0x8ac45326c0717179ull }}, {{ 0xe0132ab93354bfa1ull, 0x7e9eba9cdc9b751dull, 0x287258f8a98384eaull, 0x667f6c5d8a4e02bcull, 0xdd63f70502a02252ull, 0x6bab3f83846e6ebcull }}, {{ 0xc0bfab3c014f7c49ull, 0xf2334a209e12932aull, 0x947779b69f233128ull, 0x00fa3ba7670c1b59ull, 0xa5e7a6321a415738ull, 0x34b07b232c505360ull }}, {{ 0x877cb0580d1adad8ull, 0x7600e5462cb9bfabull, 0xccaac122375feb99ull, 0x09c6548a0679117full, 0x7b0c7df5068d6830ull, 0x0ee4cf5fbb2341c6ull }}, {{ 0x4adee370830c8c71ull, 0x9c08f4bdbf417cb3ull, 0xfeab8b5629bf33feull, 0x61bf4d6440baaefdull, 0xce7ceb92418611e0ull, 0x94f019bd4f6091c0ull }}, {{ 0xecb4e2651e7d7c6cull, 0x18598f69788edf00ull, 0xf2b3715da17807f2ull, 0xd17905ea874ad5ebull, 0x10e133b68f3cb2c3ull, 0xd161016519c5b188ull }}, {{ 0x3f10d7f330e6dc39ull, 0xf37f9a1eb594b609ull, 0x7b026da84eb04f74ull, 0x2eba3b2948ec5b37ull, 0xa8cc0521985efba6ull, 0x2dca0df301b8ef50ull }}, {{ 0x76a86f7fe9049a38ull, 0x82fc053317cf1c5cull, 0xce18489312e31a91ull, 0xd3464f9cd93b902aull, 0x97f8334ff3b5d47dull, 0xc9e48b7e11395926ull }}, {{ 0xa2945aff1a2e062eull, 0x1dd833feee171b9cull, 0x0cf2d5bebcdf09afull, 0x40bf1c207c53a1acull, 0xefb2011f851a4ceaull, 0xe2ed72ecac3d7b81ull }}, {{ 0x59cb8df705cc3dc8ull, 0x2a7207f54ce7141eull, 0x817c597360b660d7ull, 0x87771944db4450b8ull, 0x5cf40b3b33070126ull, 0xdd467d3eba66d313ull }}, {{ 0x81f38ba639fa69d0ull, 0xa8744f950106c92full, 0x0edb7e81c71fc867ull, 0x4aa6fcb090ab2735ull, 0xa188704ffe460b81ull, 0xa4c0e47348043ec1ull }}, {{ 0x1383747e43c82222ull, 0x948b1bd20a43dbdbull, 0x9492f111c73dd40cull, 0xea85dee5a6af8812ull, 0x4f54631feebc730cull, 0x6f88ec80d02a7390ull }}, {{ 0xc3228ceea5d15557ull, 0xcd6f163466a6968eull, 0xcdbd6ab1c86a487dull, 0x293ab4f882db50b9ull, 0x194bdf3f535c7e81ull, 0x5b593d0821a883a3ull }}, {{ 0x9f5981527a2d5568ull, 0x0656de0c0281e193ull, 0x09662af1d426d4eaull, 0x9c4b11b51c912742ull, 0xfcf6b879419cf10bull, 0x917c62515095245eull }}, {{ 0x397f0d38c5c5560eull, 0x3f64ac781912cfc4ull, 0x5dfdad7249845124ull, 0x1aeeb1131dab8894ull, 0xe1a334bc90216a74ull, 0xaedbd72d25d36bb5ull }}, {{ 0x3ef68437b9b55c8eull, 0x79eebcb0fabc1daaull, 0xabe8c676df2b2b6aull, 0x0d52eabf28b355cbull, 0xd0600f5da14e2889ull, 0xd49667c37a42351aull }}, {{ 0x75a12a2d41159d8bull, 0xc3535ee9cb5928a6ull, 0xb717c0a4b7afb228ull, 0x853d2b77970159f4ull, 0x23c099a84d0d955aull, 0x4de00da2c696130cull }}, {{ 0x984ba5c48ad8276eull, 0xa141b521f17b9680ull, 0x26ed866f2cdcf597ull, 0x3463b2abe60d838full, 0x658600930287d589ull, 0x0ac0885bc1dcbe79ull }}, {{ 0xf2f479ad6c718a4full, 0x4c9113536ed3e105ull, 0x85474057c0a197ecull, 0x0be4fab6fc872397ull, 0xf73c05be194e575cull, 0x6b855395929f70bdull }}, {{ 0x7d8cc0c63c6f6712ull, 0xfdaac1425446ca3bull, 0x34c8836d864fef3aull, 0x76f1cb25dd4763ebull, 0xa858396cfd0f6998ull, 0x333543d7ba3a676bull }}, {{ 0xe77f87be5c5a06b5ull, 0xe8ab8c974ac3e652ull, 0x0fd522473f1f584dull, 0xa571ef7aa4c9e730ull, 0x93723e41e29a1ff4ull, 0x0014a66d46480a34ull }}, {{ 0x0afb4d6f9b84430eull, 0x16b37de8eba6ff3dull, 0x9e5356c87739730bull, 0x76735aca6fe307e0ull, 0xc2766e92da053f8eull, 0x00ce8044bed0660dull }}, {{ 0x6dd1065c132a9e91ull, 0xe302eb193485f862ull, 0x2f4163d4a83e7e6eull, 0xa0818be85ede4ec6ull, 0x98a051bc84347b90ull, 0x081102af7423fc89ull }}, {{ 0x4a2a3f98bfaa31aaull, 0xde1d2efc0d3bb3d8ull, 0xd88de64e9270f054ull, 0x450f7713b4af13bdull, 0xf643315d2a0cd3a6ull, 0x50aa1ada8967dd5full }}, {{ 0xe5a67bf77ca5f0a4ull, 0xad23d5d884550672ull, 0x758aff11b8696350ull, 0xb29aa6c50ed6c56aull, 0x9e9feda3a480447eull, 0x26a50c895e0ea5bfull }}, {{ 0xf880d7aade7b6663ull, 0xc3665a752b52407cull, 0x976df6b1341de126ull, 0xfa0a83b29463b628ull, 0x323f48646d02acf2ull, 0x82727d5dac92797cull }}, {{ 0xb5086cacb0d1ffe2ull, 0xa1ff8893b13684e1ull, 0xea4ba2ec092acb83ull, 0xc46924f9cbe51d95ull, 0xf678d3ec421ac17dull, 0x1878e5a8bdb8bed9ull }}, {{ 0x12543ebee833fed7ull, 0x53fb55c4ec2130d1ull, 0x26f45d385babf324ull, 0xac1b71c1f6f327dbull, 0xa0b8473a950b8ee9ull, 0xf4b8f89769377483ull }}, {{ 0xb74a73751207f465ull, 0x47d159b1394be82aull, 0x858ba43394b77f6bull, 0xb9127193a57f8e8full, 0x4732c849d2739520ull, 0x8f39b5ea1c2a8d24ull }}, {{ 0x28e88292b44f8bf2ull, 0xce2d80ec3cf711abull, 0x37746a03cf2afa30ull, 0x3ab86fc476fb919bull, 0xc7fbd2e23883d347ull, 0x98411b2519a9836aull }}, {{ 0x991519bb0b1b7776ull, 0x0dc7093a61a6b0afull, 0x2a8c242617adc5e8ull, 0x4b345daca5d3b010ull, 0xcfd63cd6352640c8ull, 0xf28b0f73009f222bull }}, {{ 0xfad3014e6f12aa9bull, 0x89c65c47d082e6dbull, 0xa979697cecc9bb10ull, 0xf00ba8be7a44e0a1ull, 0x1e5e605e137e87d2ull, 0x796e9a7e063755b6ull }}, {{ 0xcc3e0d1056baaa12ull, 0x61bf9ace251d0497ull, 0x9ebe1ee13fe14ea5ull, 0x60749770c6b0c650ull, 0x2fafc3acc2f14e3dull, 0xbe5208ec3e29591dull }}, {{ 0xfa6c82a3634aa4b1ull, 0xd17c0c0d73222dedull, 0x336d34cc7ecd1275ull, 0xc48dea67c2e7bf26ull, 0xdcdda4bf9d6d0e65ull, 0x6f34593a6d9d7b23ull }}, {{ 0xc83d1a61e0ea6ee7ull, 0x2ed878867f55cb4bull, 0x02440ffcf402b89aull, 0xad8b280d9d0d777eull, 0xa0a86f7c26428ff9ull, 0x580b7c484826cf66ull }}, {{ 0xd26307d2c9285507ull, 0xd474b540f959f0f5ull, 0x16a89fe1881b3605ull, 0xc76f90882286aaecull, 0x46945ad97e999fc0ull, 0x7072dad2d1841a02ull }}, {{ 0x37de4e3bdb935245ull, 0x4c8f1489bd83699aull, 0xe2963ecf51101c3aull, 0xca5ba5515942ad38ull, 0xc1cb8c7ef2003d87ull, 0x647c8c3c2f290416ull }}, {{ 0x2eaf0e5693c136b0ull, 0xfd96cd6167222006ull, 0xd9de74192aa11a46ull, 0xe794752d7c9ac438ull, 0x91f37cf57402674dull, 0xecdd7a59d79a28e3ull }}, {{ 0xd2d68f61c58c22ddull, 0xe7e405ce0755403dull, 0x82b088fbaa4b06c5ull, 0x0bcc93c6de0baa38ull, 0xb382e1968818090bull, 0x40a6c7826c0598e3ull }}, {{ 0x3c6199d1b7795ca2ull, 0x0ee83a0c4954826aull, 0x1ae559d4a6ee43bbull, 0x75fdc5c4ac74a635ull, 0x031ccfe150f05a6eull, 0x8683cb183837f8e5ull }}, {{ 0x5bd002312abd9e4full, 0x9512447add4d1826ull, 0x0cf5824e854ea54eull, 0x9be9b9aebc8e7e13ull, 0x1f201ecd29638850ull, 0x4125eef2322fb8f2ull }}, {{ 0x962015ebab682f18ull, 0xd2b6accca502f17full, 0x8197171135127511ull, 0x172140d35d90ecbeull, 0x374134039de35326ull, 0x8b7b5575f5dd3975ull }}, {{ 0xdd40db34b211d6edull, 0x3b22bffe721d6efbull, 0x0fe6e6ac12b892b2ull, 0xe74c8841a7a93f71ull, 0x288c08242ae13f7cull, 0x72d1569b9aa43e94ull }}, {{ 0xa488900ef4b26543ull, 0x4f5b7ff0752655d6ull, 0x9f0502b8bb35baf6ull, 0x08fd52908c9c7a6aull, 0x95785169accc7ae1ull, 0x7c2d62140a6a71c9ull }}, {{ 0x6d55a0958ef7f49bull, 0x1992ff64937f5a62ull, 0x36321b3750194d9full, 0x59e539a57e1cc82aull, 0xd6b32e20bffccccaull, 0xd9c5d4c8682871dfull }}, {{ 0x455845d795af8e0aull, 0xffbdf9edc2f987d8ull, 0x1df5102920fd0836ull, 0x82f44076ed1fd1a6ull, 0x62ffcd477fdfffe7ull, 0x81ba4fd4119472beull }}, {{ 0xb572ba6bd8db8c61ull, 0xfd6bc3499dbf4e72ull, 0x2b92a19b49e25225ull, 0x1d8a84a5433e307dull, 0xddfe04cafebfff0bull, 0x11471e48afcc7b6full }}, {{ 0x167b483678937bcaull, 0xe635a0e02979107bull, 0xb3ba5010e2d7357bull, 0x27692e74a06de4e3ull, 0xabec2fedf37ff66full, 0xacc72ed6ddfcd25eull }}, {{ 0xe0d0d220b5c2d5e0ull, 0xfe1848c19ebaa4ceull, 0x054720a8dc6816d6ull, 0x8a1bd08e444af0e5ull, 0xb739df4b82ffa057ull, 0xbfc7d464abe037b2ull }}, {{ 0xc8283547199c5ac1ull, 0xecf2d790334a7014ull, 0x34c746989c10e465ull, 0x6516258eaaed68f2ull, 0x2842b8f31dfc436bull, 0x7dce4beeb6c22cfbull }}, {{ 0xd19214c7001b8b8full, 0x417c6ba200e860cfull, 0x0fc8c1f618a8ebfbull, 0xf2dd7792ad461976ull, 0x929b397f2bdaa231ull, 0xea0ef7532395c1cfull }}, {{ 0x2fb4cfc601137395ull, 0x8edc34540913c81eull, 0x9dd7939cf69937d0ull, 0x7ca6abbac4bcfe9cull, 0xba103ef7b68a55f3ull, 0x2495a93f63d9921bull }}, {{ 0xdd101dbc0ac283d6ull, 0x949a0b485ac5d12dull, 0x2a6bc421a1fc2e25ull, 0xde82b54baf61f21eull, 0x44a275ad21675b82ull, 0x6dd89c79e67fb515ull }}, {{ 0xa2a129586b99265cull, 0xce0470d38bba2bcaull, 0xa835a95053d9cd77ull, 0xb11b14f4d9d3752dull, 0xae5898c34e09931cull, 0x4a761cc300fd12d4ull }}, {{ 0x5a4b9d7433fb7f96ull, 0x0c2c68437545b5eaull, 0x92189d23468206aeull, 0xeb0ed190824293c8ull, 0xcf75f7a10c5fbf1eull, 0xe89d1f9e09e2bc4eull }}, {{ 0x86f4268a07d2fbdeull, 0x79bc12a294b91b27ull, 0xb4f62360c11442ccull, 0x2e942fa51699c5d5ull, 0x1a9bac4a7bbd7735ull, 0x16233c2c62db5b14ull }}, {{ 0x458981644e3dd6b0ull, 0xc158ba59cf3b0f8bull, 0x119d61c78aca9bfcull, 0xd1c9dc72e201ba59ull, 0x0a14bae8d566a813ull, 0xdd6059bbdc918ec9ull }}, {{ 0xb75f0deb0e6a62deull, 0x8d774782184e9b70ull, 0xb025d1cb6bea17dfull, 0x31e29c7cd411477aull, 0x64cf4d18560290c6ull, 0xa5c381569daf93daull }}, {{ 0x29b68b2e9027dca8ull, 0x86a8cb14f3121267ull, 0xe17a31f23724eebbull, 0xf2da1ce048accacaull, 0xf01902f35c19a7bdull, 0x79a30d6228dbc687ull }}, {{ 0xa1216fd1a18e9e91ull, 0x4297eed17eb4b807ull, 0xcec5f37627715353ull, 0x7c8520c2d6bfebecull, 0x60fa1d8199008d6bull, 0xc05e85d59895c14full }}, {{ 0x4b4e5e304f9231afull, 0x99ef542ef30f304cull, 0x13bb829d8a6d4140ull, 0xdd33479c637f3740ull, 0xc9c5270ffa058632ull, 0x83b13a57f5d98d19ull }}, {{ 0xf10fade31bb5f0d4ull, 0x035949d57e97e2faull, 0xc5531a2768448c86ull, 0xa400cc1be2f82880ull, 0xe1b3869fc4373dfcull, 0x24ec476f9a7f8301ull }}, {{ 0x6a9ccadf151b684cull, 0x217ce256f1eeddcdull, 0xb53f058a12ad7d3cull, 0x6807f916ddb19507ull, 0xd103423daa286bdeull, 0x713aca5c08fb1e12ull }}, {{ 0x2a1fecb6d31212f6ull, 0x4ee0d7657354aa06ull, 0x14763764bac6e459ull, 0x104fbae4a8efd24dull, 0x2a209668a59436b0ull, 0x6c4be79859cf2cbcull }}, {{ 0xa53f3f243eb4bd9aull, 0x14c869f6814ea43dull, 0xcc9e29ef4bc4eb7dull, 0xa31d4cee995e3702ull, 0xa545e01677ca22e0ull, 0x3af70bf38217bf59ull }}, {{ 0x7478776a730f6809ull, 0xcfd423a10d126a68ull, 0xfe2da358f5b132e2ull, 0x5f250151fdae261bull, 0x74bac0e0ade55cc6ull, 0x4da6778314ed7980ull }}, {{ 0x8cb4aa287e9a1056ull, 0x1e49644a82b82814ull, 0xedc8617998ebfcdcull, 0xb7720d33e8cd7d17ull, 0x8f4b88c6caf59fbfull, 0x0880ab1ed146bf04ull }}, {{ 0x7f0ea594f204a358ull, 0x2eddeae91b3190cdull, 0x49d3cebff937e099ull, 0x2a7484071806e2efull, 0x98f357c3ed983d7dull, 0x5506af342cc3762dull }}, {{ 0xf69277d1742e6173ull, 0xd4ab2d1b0fefa806ull, 0xe246137fbc2ec5fbull, 0xa88d2846f044dd58ull, 0xf9816da747f266e3ull, 0x5242d809bfa29dc7ull }}, {{ 0xa1b8ae2e89cfce7aull, 0x4eafc30e9f5c9045ull, 0xd6bcc2fd59d3bbd6ull, 0x958392c562b0a578ull, 0xbf0e4888cf7804e4ull, 0x369c70617c5a29cfull }}, {{ 0x5136cdd1621e10c1ull, 0x12dd9e92399da2b8ull, 0x635f9de58245565full, 0xd723bbb5dae676b8ull, 0x768ed5581ab030edull, 0x221c63cedb85a21dull }}, {{ 0x2c240a2dd52ca78dull, 0xbca831b640285b33ull, 0xe1bc2af716b55fb6ull, 0x6765551a8d00a333ull, 0xa19455710ae1e94aull, 0x551be61493385526ull }}, {{ 0xb96865ca53be8b84ull, 0x5e91f11e81938fffull, 0xd159ada6e315bd23ull, 0x09f5530982066006ull, 0x4fcb566a6cd31ce8ull, 0x5316fccdc0335382ull }}, {{ 0x3e13f9e745717324ull, 0xb1b36b310fc39ffdull, 0x2d80c884ded96361ull, 0x63953e5f143fc044ull, 0x1df16028403f2110ull, 0x3ee5e00982014317ull }}, {{ 0x6cc7c308b66e7f6dull, 0xf1022fea9da43fe4ull, 0xc707d530b47de1d0ull, 0xe3d46fb6ca7d82a9ull, 0x2b6dc19282774aa3ull, 0x74fac05f140c9ee7ull }}, {{ 0x3fcd9e572050fa42ull, 0x6a15df2a286a7eecull, 0xc64e53e70cead229ull, 0xe64c5d23e8e71aa1ull, 0xb2498fb918a8ea66ull, 0x91cb83b6c87e3507ull }}, {{ 0x7e082f674329c694ull, 0x24dab7a59428f53aull, 0xbf0f4706812c359eull, 0xfefba36719070a51ull, 0xf6df9d3af6992804ull, 0xb1f32523d4ee124cull }}, {{ 0xec51da089fa1c1c7ull, 0x708b2c77c9999448ull, 0x7698c6410bba182dull, 0xf5d46206fa466731ull, 0xa4bc244da1fb9031ull, 0xf37f7366514cb701ull }}, {{ 0x3b3284563c5191c8ull, 0x656fbcaddfffcad9ull, 0xa1f7be8a7544f1c6ull, 0x9a4bd445c6c007eeull, 0x6f596b0853d3a1f3ull, 0x82fa81ff2cff2610ull }}, {{ 0x4ff92b5e5b2fb1d1ull, 0xf65d5ecabffdec7cull, 0x53ad716894b171bfull, 0x06f64ab9c3804f52ull, 0x597e2e5346445384ull, 0x1dc913f7c1f77ca4ull }}, {{ 0x1fbbb1af8fdcf226ull, 0x9fa5b3eb7feb3cdbull, 0x44c66e15ceee717full, 0x459eeb41a3031937ull, 0x7eedcf40beab4328ull, 0x29dac7ad93aade6bull }}, {{ 0x3d54f0db9ea1757eull, 0x3c790732ff30608full, 0xafc04cda15506efcull, 0xb83530905e1efc28ull, 0xf54a188772b09f92ull, 0xa28bccc7c4acb032ull }}, {{ 0x65516894324e96edull, 0x5cba47fdf7e3c598ull, 0xdd830084d52455daull, 0x3213e5a3ad35d996ull, 0x94e4f54a7ae63bbbull, 0x5975ffcdaebee1fdull }}, {{ 0xf52e15c9f711e541ull, 0x9f46cfebaee5b7f3ull, 0xa71e0530536b5a87ull, 0xf4c6f864c41a7fe4ull, 0xd0f194e8ccfe554full, 0x7e9bfe08d374d3e7ull }}, {{ 0x93ccd9e3a6b2f48bull, 0x38c41f34d4f92f87ull, 0x872c33e34231894cull, 0x8fc5b3efa908feeeull, 0x296fd11801ef551full, 0xf217ec584290470eull }}, {{ 0xc60082e482fd8d72ull, 0x37a9381051bbdb4bull, 0x47ba06e095ef5cfaull, 0x9db9075c9a59f551ull, 0x9e5e2af01359533bull, 0x74ef3b7299a2c68dull }}, {{ 0xbc051ced1de78678ull, 0x2c9c30a3315690f5ull, 0xcd4444c5db59a1c6ull, 0x293a499e0783952cull, 0x2fadad60c17d4054ull, 0x9158527a005bc188ull }}, {{ 0x583321432b0b40b3ull, 0xbe19e65fed61a999ull, 0x04aaafba918051bdull, 0x9c46e02c4b23d3c0ull, 0xdcc8c5c78ee48349ull, 0xad7338c403958f51ull }}, {{ 0x71ff4c9fae7086f9ull, 0x6d02ffbf45d09ffdull, 0x2eaadd49af033169ull, 0x1ac4c1baef664580ull, 0x9fd7b9cb94ed20e0ull, 0xc68037a823d79932ull }}, {{ 0x73f8fe3cd06545bcull, 0x421dfd78ba263fe6ull, 0xd2aca4e0d61fee1eull, 0x0baf914d59feb701ull, 0x3e6d41f3d14348c1ull, 0xc1022c91666bfbfaull }}, {{ 0x87b9ee6023f4b955ull, 0x952be6b7457e7f00ull, 0x3abe70c85d3f4d2eull, 0x74dbad0583f32612ull, 0x704493862ca0d78aull, 0x8a15bdae0037d7c6ull }}, {{ 0x4d434fc1678f3d53ull, 0xd3b70328b6f0f605ull, 0x4b7067d3a47903d1ull, 0x9094c237277f7cb6ull, 0x62adc33dbe486b68ull, 0x64d968cc022e6dc0ull }}, {{ 0x04a11d8e0b98653aull, 0x45261f9725699c35ull, 0xf2640e446cba2632ull, 0xa5cf96278afadf1eull, 0xdac9a0696ed43215ull, 0xf07e17f815d04983ull }}, {{ 0x2e4b278c73f3f448ull, 0xb37d3be776201a12ull, 0x77e88eac3f457df6ull, 0x7a1bdd8b6dccb735ull, 0x8be0441e5449f4d8ull, 0x64ecefb0da22df26ull }}, {{ 0xceef8b7c87878ad5ull, 0x02e4570a9d4104b5ull, 0xaf1592ba78b6eba3ull, 0xc516a77249ff2816ull, 0x76c2a92f4ae39074ull, 0xf1415ce8855cb781ull }}, {{ 0x155b72dd4b4b6c51ull, 0x1ceb666a248a2f1aull, 0xd6d7bb48b725345eull, 0xb2e28a76e3f790e2ull, 0xa39a9bd8ece3a48full, 0x6c8da115359f2b0eull }}, {{ 0xd5927ca4f0f23b2eull, 0x213200256d65d704ull, 0x646d50d727740badull, 0xfcd968a4e7aba8dcull, 0x640a167940e46d9cull, 0x3d884ad41837ae92ull }}, {{ 0x57b8de7169764fcbull, 0x4bf4017645fa6630ull, 0xec4528678a8874c3ull, 0xe07e16710cb4989bull, 0xe864e0bc88ec4821ull, 0x6752ec48f22cd1b7ull }}, {{ 0x6d38b06e1e9f1df1ull, 0xf7880e9ebbc7fde3ull, 0x3ab3940b69548fa0ull, 0xc4ece06a7f0df617ull, 0x13f0c75d593ad152ull, 0x093d3ad975c0312full }}, {{ 0x4436e44d32372b6dull, 0xab50923355cfeae2ull, 0x4b03c8721d4d9c49ull, 0xb140c428f68b9ce8ull, 0xc767c9a57c4c2d3bull, 0x5c644c7e9981ebd6ull }}, {{ 0xaa24eb03f627b244ull, 0xb125b6015a1f2cd6ull, 0xee25d47525081ae0ull, 0xec87a999a1742112ull, 0xca0de076daf9c454ull, 0x9beafcf1ff133663ull }}, {{ 0xa5712e279d8cf6acull, 0xeb791c0d8537c062ull, 0x4d7a4c9372510cc6ull, 0x3d4ca0004e894abdull, 0xe48ac4a48dc1ab51ull, 0x172de173f6c01fe5ull }}, {{ 0x766bcd8c2781a2b8ull, 0x32bb1887342d83daull, 0x06c6fdc2772a7fc5ull, 0x64fe4003115ceb65ull, 0xed6bae6d8990b12cull, 0xe7cace87a3813efaull }}, {{ 0xa03607798b105b2full, 0xfb4ef54809c72688ull, 0x43c5e998a7a8fdb3ull, 0xf1ee801eada131f2ull, 0x4634d0475fa6ebbbull, 0x0dec114c630c75cdull }}, {{ 0x421c4abf6ea38fd3ull, 0xd11594d061c78156ull, 0xa5bb1ff68c99e907ull, 0x73510132c84bf376ull, 0xbe1022c9bc853557ull, 0x8b38acfbde7c9a04ull }}, {{ 0x951aeb7a52639e41ull, 0x2ad7d023d1cb0d5eull, 0x794f3fa17e031a4eull, 0x812a0bfbd2f782a2ull, 0x6ca15be15d34156aull, 0x7036c1d6b0de042full }}, {{ 0xd30d32c737e42e8dull, 0xac6e216631ee85b1ull, 0xbd187c4eec1f070dull, 0x0ba477d63dab1a58ull, 0x3e4d96cda408d629ull, 0x62239262e8ac29daull }}, {{ 0x3e83fbc82ee9d181ull, 0xbc4d4dfdf35138f2ull, 0x62f4db1539364688ull, 0x746cae5e68af0777ull, 0x6f07e40868585d9aull, 0xd563b7dd16b9a286ull }}, {{ 0x7127d5d1d5222f06ull, 0x5b050beb812c3976ull, 0xdd908ed43c1ec157ull, 0x8c3ecfb016d64aa9ull, 0x564ee8541373a808ull, 0x55e52ea2e3405940ull }}, {{ 0x6b8e5a325355d63cull, 0x8e3277330bba3ea0ull, 0xa7a5944a59338d69ull, 0x7a741ce0e45eeaa2ull, 0x5f151348c2849055ull, 0x5af3d25ce0837c83ull }}, {{ 0x338f85f7415a5e5cull, 0x8df8a7fe75467244ull, 0x8c77cae77c03861full, 0xc88920c8ebb52a5aull, 0xb6d2c0d7992da356ull, 0x8d8637a0c522dd21ull }}, {{ 0x039b3ba88d87af9bull, 0x8bb68ff094c076aaull, 0x7caded0ad8233d3bull, 0xd55b47d93513a789ull, 0x243b886bfbc86163ull, 0x873e2c47b35ca351ull }}, {{ 0x24105495874cdc11ull, 0x75219f65cf84a2a4ull, 0xdecb426c71606453ull, 0x5590ce7c12c48b5eull, 0x6a535437d5d3cde6ull, 0x486dbacd019e612bull }}, {{ 0x68a34dd7490098a9ull, 0x935039fa1b2e5a69ull, 0xb3f0983c6dc3eb42ull, 0x57a810d8bbad71b4ull, 0x27414a2e5a460affull, 0xd4494c02102fcbb2ull }}, {{ 0x16610a68da05f696ull, 0xc12243c50fcf881eull, 0x0765f25c49a73099ull, 0x6c90a87754c6710full, 0x888ce5cf86bc6df9ull, 0x4adcf814a1ddf4f5ull }}, {{ 0xdfca6818843ba1dfull, 0x8b56a5b29e1b512cull, 0x49fb779ae087e601ull, 0x3da694a94fc06a96ull, 0x5580fa1b435c4bbeull, 0xeca1b0ce52ab9197ull }}, {{ 0xbde810f52a5452b7ull, 0x716278fa2d112bc0ull, 0xe3d2ac0cc54efc0full, 0x6881ce9d1d8429deull, 0x5709c510a19af56eull, 0x3e50e80f3ab3afe9ull }}, {{ 0x6b10a993a74b3b22ull, 0x6dd8b9c5c2abb587ull, 0xe63ab87fb515d89aull, 0x151212232729a2b4ull, 0x6661b2a6500d9650ull, 0x6f2910984b04df1dull }}, {{ 0x2ea69fc488f04f50ull, 0x4a7741b99ab5174aull, 0xfe4b34fd12da7608ull, 0xd2b4b55f87a05b10ull, 0xffd0fa7f2087df20ull, 0x579aa5f2ee30b725ull }}, {{ 0xd2823dad5963191full, 0xe8a891400b12e8e5ull, 0xeef011e2bc889c52ull, 0x3b0f15bb4c438ea9ull, 0xfe29c8f7454eb748ull, 0x6c0a7b7d4de7277bull }}, {{ 0x391668c57ddefb38ull, 0x1695ac806ebd18faull, 0x5560b2db5d561b3dull, 0x4e96d950faa392a3ull, 0xeda1d9a8b51328d2ull, 0x3868d2e50b078ad7ull }}, {{ 0x3ae017b6eab5d032ull, 0xe1d8bd045362f9c6ull, 0x55c6fc91a55d1062ull, 0x11e47d29ca63ba61ull, 0x4852809712bf9837ull, 0x34183cf26e4b6c6full }}, {{ 0x4cc0ed252b1a21f8ull, 0xd277622b41ddc1beull, 0x59c5ddb075a2a3dcull, 0xb2ece3a1e7e547cdull, 0xd33905e6bb7bf226ull, 0x08f261784ef23c58ull }}, {{ 0xff894373af0553acull, 0x38a9d5b092a9916eull, 0x81baa8e4985a66a0ull, 0xfd40e4530ef4ce05ull, 0x403a3b0352d77582ull, 0x5977ceb315765b78ull }}, {{ 0xfb5ca284d63544b4ull, 0x36a258e5ba9fae55ull, 0x114a98edf3880242ull, 0xe488eb3e95900c37ull, 0x82464e213c6a971dull, 0x7eae12fed69f92b2ull }}, {{ 0xd19e59305e14af0cull, 0x225778f94a3ccf5bull, 0xace9f94b83501696ull, 0xed593071d7a07a26ull, 0x16bf0d4c5c29e72aull, 0xf2ccbdf4623bbaf9ull }}, {{ 0x302f7be3acced67cull, 0x576ab9bce6601996ull, 0xc123bcf32120e1ddull, 0x457be4726c44c582ull, 0xe37684fb99a307adull, 0x7bff6b8bd6554dbaull }}, {{ 0xe1dad6e4c01460d3ull, 0x6a2b4160ffc0ffddull, 0x8b65617f4b48d2a5ull, 0xb6d6ec783aafb71bull, 0xe2a131d4005e4cc4ull, 0xd7fa33765f55094cull }}, {{ 0xd28c64ef80cbc840ull, 0x25b08dc9fd89feaaull, 0x71f5cef8f0d83a76ull, 0x24653cb24add2713ull, 0xda4bf24803aeffafull, 0x6fc6029fb9525d00ull }}, {{ 0x397bf15b07f5d284ull, 0x78e589e3e763f2acull, 0x739a15b96872489dull, 0x6bf45ef6eca386c2ull, 0x86f776d024d5fcd7ull, 0x5dbc1a3d3d37a208ull }}, {{ 0x3ed76d8e4f9a3929ull, 0xb8f762e709e77abaull, 0x8404d93e1476d626ull, 0x378bb5a53e634398ull, 0x45aaa421705be06aull, 0xa9590664642c5455ull }}, {{ 0x746a478f1c063b99ull, 0x39a9dd06630acb46ull, 0x28307c6ccca45d83ull, 0x2b7518746fe0a3f5ull, 0xb8aa694e6396c426ull, 0x9d7a3febe9bb4b54ull }}, {{ 0x8c26cb97183e53f7ull, 0x40a2a23fde6bf0c0ull, 0x91e4dc3ffe6ba720ull, 0xb292f48c5ec66793ull, 0x36a81d0fe3e3a97dull, 0x26c67f372150f14full }}, {{ 0x7983f3e6f26f47a2ull, 0x865a567eb0376785ull, 0xb2f09a7ff0348742ull, 0xf9bd8d7bb3c00bc3ull, 0x2291229ee6e49ee8ull, 0x83c0f8274d296d18ull }}, {{ 0xbf2787057858cc53ull, 0x3f8760f2e22a0b36ull, 0xfd6608ff620d4899ull, 0xc16786d5058075a4ull, 0x59ab5a3504ee3519ull, 0x2589b189039e42f1ull }}, {{ 0x778b4636b377fb3cull, 0x7b49c97cd5a47023ull, 0xe5fc59f9d484d5fcull, 0x8e0b445237049871ull, 0x80b18612314e1301ull, 0x7760ef5a242e9d6dull }}, {{ 0xab70be2302afd05cull, 0xd0e1dee0586c6162ull, 0xfbdb83c24d305bdcull, 0x8c70ab36262df472ull, 0x06ef3cb5ed0cbe0full, 0xa9c9598569d22647ull }}, {{ 0xb2676d5e1ade2394ull, 0x28d2b4c3743bcddaull, 0xd693259703e396a0ull, 0x7c66b01d7dcb8c7dull, 0x45585f1b427f6c9bull, 0xa1dd7f3622357ec6ull }}, {{ 0xf80a45ad0cad63c8ull, 0x983b0fa28a560a8aull, 0x61bf77e626e3e241ull, 0xdc02e126e9f37ceaull, 0xb573b71098fa3e12ull, 0x52a6f81d5616f3beull }}, {{ 0xb066b8c27ec5e5d3ull, 0xf24e9c59675c696dull, 0xd17aaefd84e6d68full, 0x981ccb852382e127ull, 0x168526a5f9c66cbcull, 0x3a85b1255ce58573ull }}, {{ 0xe4033798f3bafa3eull, 0x77121b7e099c1e48ull, 0x2ecad5e73104619full, 0xf11ff333631ccb8eull, 0xe133827bc1c03f5dull, 0x4938eb75a0f7367eull }}, {{ 0xe8202bf9854dc66cull, 0xa6b512ec60192ed8ull, 0xd3ec5b07ea2bd03aull, 0x6b3f8001df1ff38dull, 0xcc0318d5918279abull, 0xdc39329849a820f4ull }}, {{ 0x1141b7bf3509c036ull, 0x8312bd3bc0fbd479ull, 0x473b8e4f25b6224aull, 0x307b0012b73f838aull, 0xf81ef857af18c0b2ull, 0x9a3bf9f2e091498full }}, {{ 0xac912d7812618219ull, 0x1ebb645589d64cbaull, 0xc8538f17791d56e9ull, 0xe4ce00bb287b2366ull, 0xb135b36cd6f786f5ull, 0x0657c37cc5acdf9full }}, {{ 0xbdabc6b0b7cf14fbull, 0x3351eb57625eff4aull, 0xd34396eabb25651bull, 0xf00c074f94cf6203ull, 0xec19024065ab459aull, 0x3f6da2dfb8c0bc3cull }}, {{ 0x68b5c2e72e16d1d2ull, 0x01333169d7b5f8ebull, 0x40a3e52b4f75f310ull, 0x6078491bd019d426ull, 0x38fa1683f8b0b80dull, 0x7a485cbd37875a61ull }}, {{ 0x17199d07cce43236ull, 0x0bffee226d1bb932ull, 0x8666f3b11a9b7ea0ull, 0xc4b2db162102497eull, 0x39c4e127b6e73085ull, 0xc6d39f642b4987ccull }}, {{ 0xe700224e00e9f621ull, 0x77ff4d5843153bf4ull, 0x400584eb0a12f240ull, 0xaefc8edd4a16def1ull, 0x41b0cb8d2507e539ull, 0xc44439e9b0df4dfaull }}, {{ 0x0601570c09239d48ull, 0xaff905729ed45791ull, 0x8037312e64bd7684ull, 0xd5dd94a4e4e4b56cull, 0x90e7f383724ef440ull, 0xaaaa4320e8b90bc6ull }}, {{ 0x3c0d66785b6424d5ull, 0xdfba367a344b6baaull, 0x0227ebcfef66a12eull, 0x5aa7ce70f0ef163dull, 0xa90f832277158a88ull, 0xaaa69f49173a75c1ull }}, {{ 0x588600b391e9704eull, 0xbd4620c60af234a6ull, 0x158f361f5a024bd4ull, 0x8a8e10696956de62ull, 0x9a9b1f58a6d76953ull, 0xaa8238dae8489990ull }}, {{ 0x753c0703b31e6307ull, 0x64bd47bc6d760e7full, 0xd7981d398416f64full, 0x698ca41e1d64afd4ull, 0x0a0f3976846a1d43ull, 0xa916388d12d5ffa6ull }}, {{ 0x94584624ff2fde4aull, 0xef64cd5c469c90faull, 0x6bf1243f28e59f19ull, 0x1f7e692d25eede50ull, 0x64983ea12c2524a2ull, 0x9ade3582bc5bfc7cull }}, {{ 0xcb72bd71f7deaee0ull, 0x59f0059ac21da9c9ull, 0x376b6a7798f83703ull, 0x3af01bc37b54af24ull, 0xedf2724bb9736e55ull, 0x0cae171b5b97dcdbull }}, {{ 0xf27b6673aeb2d4bdull, 0x8360380b9528a1e1ull, 0x2a3228abf9b22621ull, 0x4d6115a2d14ed76aull, 0x4b7876f53e824f54ull, 0x7ecce71193eea097ull }}, {{ 0x78d20084d2fc4f60ull, 0x21c23073d39652d3ull, 0xa5f596b7c0f57d4full, 0x05cad85c2d146a25ull, 0xf2b4a5947117194bull, 0xf40106afc75245e8ull }}, {{ 0xb83405303ddb19bcull, 0x5195e48643df3c42ull, 0x7b97e32d8996e517ull, 0x39ec7399c2cc2578ull, 0x7b0e77cc6ae6fceeull, 0x880a42ddc936bb19ull }}, {{ 0x320833e26a8f0155ull, 0x2fdaed3ea6b85a9bull, 0xd3eedfc75fe4f2e9ull, 0x433c84019bf976b4ull, 0xce90adfc2d05e14eull, 0x50669ca9dc234efeull }}, {{ 0xf45206d829960d54ull, 0xde8d447283338a0full, 0x4754bdc9bef17d1bull, 0xa05d281017bea310ull, 0x11a6cbd9c23acd0eull, 0x24021ea2996115f4ull }}, {{ 0x8b3444719fdc8548ull, 0xb184ac792003649full, 0xc94f69e1756ee316ull, 0x43a390a0ed725ea2ull, 0xb083f681964c0292ull, 0x68153259fdcadb88ull }}, {{ 0x700aac703e9d34d5ull, 0xef2ebcbb4021ee3bull, 0xdd1a22ce9654dee2ull, 0xa463a6494677b25bull, 0xe527a10fdef819b6ull, 0x10d3f783e9ec9356ull }}, {{ 0x606abc627224104full, 0x57d35f5081534e52ull, 0xa3055c11df50b4ddull, 0x6be47edcc0acf796ull, 0xf38c4a9eb5b10122ull, 0xa847ab27233dc164ull }}, {{ 0xc42b5bd87568a316ull, 0x6e41b9250d410f37ull, 0x5e3598b2b92710a5ull, 0x36ecf49f86c1abe2ull, 0x837aea3318ea0b58ull, 0x92ccaf8760698df1ull }}, {{ 0xa9b1967496165edfull, 0x4e913b72848a982dull, 0xae17f6fb3b86a676ull, 0x25418e3b4390b6d7ull, 0x22cd25fef9247172ull, 0xbbfedb49c41f8b6full }}, {{ 0xa0efe08ddcdfb4b6ull, 0x11ac52792d69f1c8ull, 0xccefa5d05342809full, 0x748f8e50a3a7246cull, 0x5c037bf5bb6c6e75ull, 0x57f490e1a93b7257ull }}, {{ 0x495ec58aa0bd0f21ull, 0xb0bb38bbc62371d6ull, 0x015c7a2340990636ull, 0x8d9b8f2664876c40ull, 0x9822d799523c5096ull, 0x6f8da8d09c527769ull }}, {{ 0xddb3b76a47629749ull, 0xe7503755bd62725eull, 0x0d9cc56085fa3e22ull, 0x8813977fed4a3a80ull, 0xf15c6bfd365b25e1ull, 0x5b8898261b38aa1full }}, {{ 0xa9052a26c9d9e8dfull, 0x0922295965d877b4ull, 0x881fb5c53bc66d5dull, 0x50c3eaff44e64900ull, 0x6d9c37e41f8f7acfull, 0x9355f17d1036a53full }}, {{ 0x9a33a583e28318b5ull, 0x5b559d7dfa74ad0eull, 0x513d19b455c045a2ull, 0x27a72df8b0feda05ull, 0x481a2ee93b9acc19ull, 0xc15b6ee2a222747aull }}, {{ 0x06047726d91ef70eull, 0x915826ebc88ec292ull, 0x2c63010b5982b857ull, 0x8c87cbb6e9f48435ull, 0xd105d51c540bf8fbull, 0x8d9254da55588cc6ull }}, {{ 0x3c2ca7847b35a690ull, 0xad718535d59399b4ull, 0xbbde0a717f1b336bull, 0x7d4df525238d2a13ull, 0x2a3a531b4877b9d3ull, 0x87b7508755757fc4ull }}, {{ 0x59be8b2cd018819eull, 0xc66f341a57c4010aull, 0x56ac686ef7100234ull, 0xe50b93736383a4c5ull, 0xa6473f10d4ad4242ull, 0x4d2925495696fda9ull }}, {{ 0x81716fc020f5102eull, 0xc05809076da80a67ull, 0x62bc1455a6a0160full, 0xf273c281e3246fb5ull, 0x7ec876a84ec4969cull, 0x039b74dd61e5e8a0ull }}, {{ 0x0e6e5d814992a1caull, 0x83705a4a4890680bull, 0xdb58cb588240dc9dull, 0x78859912df6c5d15ull, 0xf3d4a29313ade221ull, 0x241290a5d2fb1644ull }}, {{ 0x904fa70cdfba51e6ull, 0x226386e6d5a4106eull, 0x9177f17516889e27ull, 0xb537fabcba3ba2daull, 0x864e59bec4cad54eull, 0x68b9a67a3dcedeb1ull }}, {{ 0xa31c8680bd4732faull, 0x57e345045868a451ull, 0xaeaf6e92e1562d87ull, 0x142fcb5f46545c89ull, 0x3f0f8173afec5513ull, 0x174080c66a14b2efull }}, {{ 0x5f1d410764c7fdc6ull, 0x6ee0b22b74166b30ull, 0xd2da51bccd5dc749ull, 0xc9ddf1b8bf4b9d60ull, 0x769b0e84df3b52beull, 0xe88507c024cefd58ull }}, {{ 0xb7248a49efcfe9b9ull, 0x54c6f5b288e02fe3ull, 0x3c87316005a9c8deull, 0xe2ab713778f425c8ull, 0xa20e9130b8513b73ull, 0x15324d817015e574ull }}, {{ 0x276d66e35e1f213cull, 0x4fc598f958c1dee5ull, 0x5d47edc038a1d8afull, 0xdab26c2ab98979d2ull, 0x5491abe7332c5286ull, 0xd3f7070e60daf68eull }}, {{ 0x8a4604e1ad374c5cull, 0x1db7f9bd7792b4f3ull, 0xa4cf4982365276d9ull, 0x8af839ab3f5ec237ull, 0x4db0b707ffbb3944ull, 0x47a6468fc88da18full }}, {{ 0x66bc30d0c428fb94ull, 0x292fc166abbb1183ull, 0x7018df161f38a47bull, 0x6db240b079b3962cull, 0x08e7264ffd503cadull, 0xcc7ec19dd5884f99ull }}, {{ 0x0359e827a999d3c8ull, 0x9bdd8e02b54eaf22ull, 0x60f8b6dd38366ccfull, 0x48f686e4c103ddbcull, 0x59077f1fe5225ec6ull, 0xfcf3902a57531bfaull }}, {{ 0x2183118ca00245cdull, 0x16a78c1b1512d754ull, 0xc9b724a43220401cull, 0xd9a144ef8a26a95bull, 0x7a4af73ef357b3beull, 0xe183a1a7693f17c7ull }}, {{ 0x4f1eaf7e4016ba01ull, 0xe28b790ed2bc6949ull, 0xe1276e69f5428118ull, 0x804cb15b65829d95ull, 0xc6eda875816d0574ull, 0xcf24508a1c76edcaull }}, {{ 0x1732daee80e3440cull, 0xd972ba943b5c1cddull, 0xcb8a502394990af8ull, 0x02feed91f71a27daull, 0xc54894970e42368dull, 0x176b25651ca549ebull }}, {{ 0xe7fc8d5108e0a874ull, 0x7e7b49ca519920a2ull, 0xf3672163cdfa6db8ull, 0x1df547b3a7058e8bull, 0xb4d5cde68e962182ull, 0xea2f75f31e74e335ull }}, {{ 0x0fdd852a58c69489ull, 0xf0d0e1e72ffb465dull, 0x82074de60bc84934ull, 0x2b94cd0486379177ull, 0x105a0b0191dd4f15ull, 0x25da9b7f3090e019ull }}, {{ 0x9ea733a777c1cd5cull, 0x6828d307dfd0bfa2ull, 0x14490afc75d2dc11ull, 0xb3d0022d3e2baeabull, 0xa3846e0fb2a516d3ull, 0x7a8a12f7e5a8c0faull }}, {{ 0x3288048aad920598ull, 0x11983e4ebe277c5aull, 0xcada6ddc9a3c98aeull, 0x062015c46db4d2aeull, 0x632c4c9cfa72e445ull, 0xc964bdaef89789caull }}, {{ 0xf9502d6ac7b437efull, 0xaff26f136d8adb85ull, 0xec884a9e065df6ccull, 0x3d40d9ac49103ad3ull, 0xdfbafe21c87ceab2ull, 0xddef68d5b5eb61e7ull }}, {{ 0xbd21c62bcd0a2f56ull, 0xdf7856c2476c933bull, 0x3d52ea2c3faba3feull, 0x648880badaa24c47ull, 0xbd4ded51d4e12af6ull, 0xab5a18591b31d30eull }}, {{ 0x6351bdb60265d958ull, 0xbab36396ca3dc055ull, 0x653d25ba7cb467f4ull, 0xed55074c8a56fac8ull, 0x650b453250cbad9full, 0xb184f37b0ff23e93ull }}, {{ 0xe131691c17fa7d73ull, 0x4b01e3e3e6698355ull, 0xf4637948df0c0f8full, 0x455248fd6765cbd3ull, 0xf270b3f727f4c83full, 0xef3182ce9f7671c1ull }}, {{ 0xcbee1b18efc8e681ull, 0xee12e6e7001f215aull, 0x8be2bcd8b6789b98ull, 0xb536d9e609f9f647ull, 0x786707a78f8fd278ull, 0x57ef1c123aa07193ull }}, {{ 0xf74d0ef95dd90108ull, 0x4cbd050601374d8bull, 0x76db607720b613f9ull, 0x142482fc63c39ecbull, 0xb4064c8b9b9e38b7ull, 0x6f5718b64a446fc2ull }}, {{ 0xa90295bdaa7a0a4eull, 0xff62323c0c290777ull, 0xa491c4a7471cc7bcull, 0xc96d1ddbe5a433f2ull, 0x083efd74142e3726ull, 0x5966f71ee6ac5d9bull }}, {{ 0x9a19d968a8c46709ull, 0xf9d5f658799a4aacull, 0x6db1ae88c71fcd61ull, 0xde432a96f86a077aull, 0x5275e688c9ce2783ull, 0x7e05a73502bba80eull }}, {{ 0x05027e1697ac0659ull, 0xc25b9f74c006eabeull, 0x48f0d157c73e05d3ull, 0xae9fa9e5b4244ac8ull, 0x389b0157e20d8b26ull, 0xec3888121b54908full }}, {{ 0x3218ece1ecb83f76ull, 0x97943a8f80452b6cull, 0xd9682d6dc86c3a45ull, 0xd23ca2f9096aebd2ull, 0x360e0d6ed4876f82ull, 0x3a3550b5114da598ull }}, {{ 0xf4f940d33f327a9dull, 0xebca499b02b3b239ull, 0x7e11c649d43a46b7ull, 0x365e5dba5e2d363cull, 0x1c8c86544d4a5b1cull, 0x46152712ad0877f2ull }}, {{ 0x91bc884077f8ca20ull, 0x35e6e00e1b04f643ull, 0xecb1bee24a46c32full, 0x1fafa947adc41e5cull, 0x1d7d3f4b04e78f1aull, 0xbcd386bac254af75ull }}, {{ 0xb15d5284afb7e53eull, 0x1b04c08d0e319ea3ull, 0x3ef174d6e6c39fd8ull, 0x3cdc9cccc9a92fa1ull, 0x26e478ee310b9705ull, 0x6043434b974eda93ull }}, {{ 0xeda5392edd2ef46cull, 0x0e2f85828df03264ull, 0x756e906503a43e71ull, 0x609e1fffe09bdc4cull, 0x84ecb94dea73e634ull, 0xc2a0a0f3e91489bfull }}, {{ 0x48743bd4a3d58c36ull, 0x8ddb37198b61f7f1ull, 0x9651a3f2246a706aull, 0xc62d3ffec6169afcull, 0x313f3d0b2886fe0bull, 0x9a4649871acd617bull }}, {{ 0xd48a564e66577a19ull, 0x8a9026ff71d3af6cull, 0xdf3067756c286429ull, 0xbdc47ff3bce20dddull, 0xec78626f9545ec75ull, 0x06bedf470c05cecfull }}, {{ 0x4d675f0fff6ac4faull, 0x69a185fa7244da40ull, 0xb7e40a963993e99full, 0x69acff8560d48aaaull, 0x3cb3d85bd4bb3c99ull, 0x4374b8c6783a141full }}, {{ 0x0609b69ffa2bb1c3ull, 0x204f3bc876b08683ull, 0x2ee869de3fc7203aull, 0x20c1fb35c84d6aabull, 0x5f0673964f505dfeull, 0xa28f37c0b244c938ull }}, {{ 0x3c61223fc5b4f1a2ull, 0x431855d4a2e5411eull, 0xd51422ae7dc74245ull, 0x4793d019d3062aafull, 0xb64083df1923abedull, 0x59982d86f6afdc33ull }}, {{ 0x5bcb567db911704full, 0x9ef35a4e5cf48b2eull, 0x52c95ad0e9c896b4ull, 0xcbc621023e3daadeull, 0x1e8526b6fb64b744ull, 0x7ff1c745a2de9a05ull }}, {{ 0x95f160e93aae6319ull, 0x3581870fa18d6fcfull, 0x3bdd8c2921d5e30eull, 0xf5bd4a166e68acafull, 0x31338325d1ef28afull, 0xff71c8b85cb20433ull }}, {{ 0xdb6dc91c4acfdefdull, 0x170f469c4f865e1bull, 0x56a7799b525ade8eull, 0x9964e4e05016bed8ull, 0xec031f7a335796dfull, 0xfa71d7339ef429ffull }}, {{ 0x9249db1aec1eb5dfull, 0xe698c21b1b3fad16ull, 0x628ac011378cb18cull, 0xfdf0f0c320e37473ull, 0x381f3ac6016be4bbull, 0xc87268043589a3ffull }}, {{ 0xb6e28f0d39331ab3ull, 0x01f7950f107cc2e1ull, 0xd96b80ac2b7eef81ull, 0xeb69679f48e28c81ull, 0x31384bbc0e36ef57ull, 0xd478102a176067f8ull }}, {{ 0x24d996843bff0afaull, 0x13abd296a4df9cd1ull, 0x7e3306b9b2f55b0aull, 0x321e0c38d8d97d12ull, 0xec32f5588e25596full, 0x4cb0a1a4e9c40fb1ull }}, {{ 0x707fe12a57f66dc0ull, 0xc4b639e270bc202bull, 0xedfe4340fd958e64ull, 0xf52c7a38787ee2b8ull, 0x39fd95758d757e57ull, 0xfee6507121a89cf3ull }}, {{ 0x64fecba76fa0497full, 0xaf1e42d8675941b2ull, 0x4beea089e7d78fefull, 0x93bcc634b4f4db39ull, 0x43e7d6978696ef6full, 0xf4ff246b50962180ull }}, {{ 0xf1f3f48a5c42defaull, 0xd72e9c74097c90f7ull, 0xf75245630e6b9f5cull, 0xc55fbe0f1190903cull, 0xa70e61eb41e55a5bull, 0x91f76c3125dd4f02ull }}, {{ 0x73878d679a9cb5c1ull, 0x67d21c885edda9afull, 0xa936b5de903439a0ull, 0xb5bd6c96afa5a261ull, 0x868fd33092f58795ull, 0xb3aa39eb7aa5161aull }}, {{ 0x834b860c0a1f198dull, 0x0e351d53b4a8a0daull, 0x9c231ab1a20a4044ull, 0x19663de2dc7857d0ull, 0x419e3fe5bd974bd9ull, 0x04a64332ca72dd09ull }}, {{ 0x20f33c786536ff85ull, 0x8e1325450e964889ull, 0x195f0af0546682a8ull, 0xfdfe6adc9cb36e26ull, 0x902e7ef967e8f67aull, 0x2e7e9ffbe87ca25cull }}, {{ 0x49805cb3f425fb2full, 0x8cbf74b291ded55bull, 0xfdb66d634c011a95ull, 0xebf02c9e1f024d7cull, 0xa1d0f5be0f19a0cdull, 0xd0f23fd714de579dull }}, {{ 0xdf039f07897bcfd8ull, 0x7f7a8ef9b2b45590ull, 0xe92045e0f80b09d7ull, 0x3761be2d361706e1ull, 0x5229996c9700480bull, 0x29767e66d0af6c28ull }}, {{ 0xb624364b5ed61e6eull, 0xfac995c0fb0b57a8ull, 0x1b42bac9b06e626aull, 0x29d16dc41ce644d3ull, 0x359ffe3de602d070ull, 0x9ea0f00426da3993ull }}, {{ 0x1d6a1ef1b45d304dull, 0xcbdfd989ce716c97ull, 0x109b4be0e44fd82dull, 0xa22e49a920feb03full, 0x183fee6afc1c2461ull, 0x3249602984863fc0ull }}, {{ 0x262535710ba3e2ffull, 0xf6be7f62106e3de7ull, 0xa610f6c8eb1e71c9ull, 0x55cee09b49f2e276ull, 0xf27f502dd9196bd0ull, 0xf6ddc19f2d3e7d80ull }}, {{ 0x7d74166a7466ddfaull, 0xa370f9d4a44e6b07ull, 0x7ca9a3d92f3071e3ull, 0x5a14c610e37cd8a2ull, 0x78f921ca7afe3623ull, 0xa4a99037c470e709ull }}, {{ 0xe688e0288c04abc0ull, 0x6269c24e6b102e4aull, 0xdea0667bd7e472e4ull, 0x84cfbca8e2e07658ull, 0xb9bb51e8cdee1d61ull, 0x6e9fa22dac69065eull }}, {{ 0x0158c195782eb57cull, 0xd82197102ea1ceedull, 0xb24400d66eec7cebull, 0x301d5e98dcc49f78ull, 0x415133180b4d25cfull, 0x523c55c8bc1a3fb3ull }}, {{ 0x0d778fd6b1d316d6ull, 0x714fe6a1d2521542ull, 0xf6a80860553ce136ull, 0xe125b1f89fae3ab6ull, 0x8d2bfef071037a17ull, 0x365b59d759067d00ull }}, {{ 0x86ab9e62f23ee45eull, 0x6d1f02523734d494ull, 0xa29053c35460cc20ull, 0xcb78f3b63cce4b25ull, 0x83b7f5646a22c4eeull, 0x1f9182697a40e205ull }}, {{ 0x42b42fdd7674ebb0ull, 0x4336173628104dcdull, 0x59a345a14bc7f944ull, 0xf2b9851e600eef78ull, 0x252f95ec255bb153ull, 0x3baf181ec688d437ull }}, {{ 0x9b09dea6a09134e4ull, 0xa01ce81d90a30a04ull, 0x8060b84cf5cfbcaaull, 0x7b3f332fc0955ab3ull, 0x73dbdb397594ed47ull, 0x54d6f133c1584a27ull }}, {{ 0x0e62b28245ac10ebull, 0x41211127a65e642eull, 0x03c733019a1d5eaaull, 0xd077ffdd85d58b03ull, 0x8696903e97d144caull, 0x50656c058d72e58aull }}, {{ 0x8fdaf916b8b8a930ull, 0x8b4aab8c7fafe9ccull, 0x25c7fe100525b2a6ull, 0x24affea73a576e1eull, 0x41e1a271ee2cafecull, 0x23f63837867cf769ull }}, {{ 0x9e8dbae337369be2ull, 0x70eab37cfcdf21fdull, 0x79cfeca03378fa81ull, 0x6edff288476a4d2dull, 0x92d058734dbedf39ull, 0x679e322b40e1aa1cull }}, {{ 0x31894ce0282216d1ull, 0x692b02e1e0b753e8ull, 0xc21f3e4202b9c90eull, 0x54bf7952ca2703c6ull, 0xbc2374810974b83eull, 0x0c2df5b088d0a51dull }}, {{ 0xef5d00c19154e429ull, 0x1bae1cd2c7294711ull, 0x95386e941b41da90ull, 0x4f7abd3be58625c3ull, 0x59628d0a5e8f326full, 0x79cb98e558267329ull }}, {{ 0x59a2078fad50e99aull, 0x14cd203bc79cc6b3ull, 0xd43451c9109289a1ull, 0x1acb6456f73d79a3ull, 0x7dd98267b197f859ull, 0xc1f3f8f571807f9dull }}, {{ 0x80544b9cc5292005ull, 0xd0034255cc1fc301ull, 0x4a0b31daa5b9604aull, 0x0bf1eb65a866c066ull, 0xea7f180cefefb37bull, 0x9387b9966f04fc26ull }}, {{ 0x034af41fb39b4033ull, 0x20209759f93d9e0full, 0xe46ff28a793dc2ecull, 0x777331f8940383feull, 0x28f6f0815f5d02ceull, 0xc34d3fe05631d985ull }}, {{ 0x20ed893d041081faull, 0x4145e983bc682c96ull, 0xec5f7968bc699d39ull, 0xaa7ff3b5c82327f4ull, 0x99a5650db9a21c10ull, 0xa1047ec35df27f33ull }}, {{ 0x49475c6228a513c7ull, 0x8cbb1f255c11bdddull, 0x3bbabe175c20243cull, 0xa8ff8519d15f8f91ull, 0x0075f289405518a6ull, 0x4a2cf3a1ab78f804ull }}, {{ 0xdcc99bd59672c5c5ull, 0x7f4f377598b16aa4ull, 0x554b6ce999416a5dull, 0x99fb33022dbb9bacull, 0x049b795c8352f682ull, 0xe5c18450b2b9b028ull }}, {{ 0x9fe01657e07bb9b3ull, 0xf9182a97f6ee2a70ull, 0x54f2411ffc8e27a6ull, 0x03cffe15c95414bbull, 0x2e12bd9d213da11aull, 0xf98f2b26fb40e190ull }}, {{ 0x3ec0df6ec4d540feull, 0xbaf1a9efa54da866ull, 0x51768b3fdd8d8c85ull, 0x261fecd9dd48cf51ull, 0xccbb68234c684b04ull, 0xbf97af85d088cfa1ull }}, {{ 0x7388ba53b05489ecull, 0x4d70a35c750893feull, 0x2ea1707ea7877d39ull, 0x7d3f4082a4d8192dull, 0xff521160fc12ee29ull, 0x7becdb3a25581c51ull }}, {{ 0x83574744e34d6333ull, 0x0666619c9255c7f0ull, 0xd24e64f28b4ae43dull, 0xe478851a7070fbc3ull, 0xf934adc9d8bd4d9eull, 0xd740904575711b33ull }}, {{ 0x2168c8b0e105e000ull, 0x3fffd01db759cf65ull, 0x370ff17970ecea62ull, 0xecb533086469d5a6ull, 0xbc0ec9e277650834ull, 0x6885a2b6966b1007ull }}, {{ 0x4e17d6e8ca3ac004ull, 0x7ffe2129298219f3ull, 0x269f6ebe694127d6ull, 0x3f13fe53ec22587eull, 0x5893e2d8a9f25211ull, 0x15385b21e02ea04dull }}, {{ 0x0cee6517e64b8027ull, 0xffed4b9b9f150381ull, 0x823a53701c8b8e60ull, 0x76c7ef47395774edull, 0x75c6dc76a37734acull, 0xd4338f52c1d24305ull }}, {{ 0x814ff2eefef30184ull, 0xff44f41436d2230aull, 0x164742611d738fc9ull, 0xa3cf58c83d6a9147ull, 0x99c49ca262a80ebcull, 0x4a03993b92369e36ull }}, {{ 0x0d1f7d55f57e0f2cull, 0xf8b188ca24355e69ull, 0xdec897cb26839de3ull, 0x661977d26629acc6ull, 0x01ae1e57da90935eull, 0xe423fc53b6222e22ull }}, {{ 0x833ae55b96ec97bbull, 0xb6ef57e56a15b01aull, 0xb3d5edef81242ae7ull, 0xfcfeae37fda0bfc4ull, 0x10cd2f6e89a5c1afull, 0xe967db451d55cd54ull }}, {{ 0x204cf593e53ded4aull, 0x25596ef624d8e109ull, 0x065b4b5b0b69ad0dull, 0xe1f2ce2fe8477dafull, 0xa803da51607990dfull, 0x1e0e90b3255a0548ull }}, {{ 0x430197c6f46b44e1ull, 0x757e559d7078ca5bull, 0x3f90f18e7220c283ull, 0xd37c0ddf12cae8d6ull, 0x9026872dc4bfa8beull, 0x2c91a6ff758434d6ull }}, {{ 0x9e0fedc58c30b0ceull, 0x96ef582664b7e790ull, 0x7ba96f9075479922ull, 0x42d88ab6bbed185eull, 0xa18147c9af7c9774ull, 0xbdb085fa972a1061ull }}, {{ 0x2c9f49b779e6e809ull, 0xe559717fef2f0ba6ull, 0xd49e5ba494cbfb59ull, 0x9c756b235742f3b0ull, 0x4f0ccde0daddea8aull, 0x68e53bc9e7a4a3d0ull }}, {{ 0xbe38e12ac305105cull, 0xf57e6eff57d6747dull, 0x4e2f946dcff7d182ull, 0x1c962f61689d84e8ull, 0x16800ac88cab296aull, 0x18f455e30c6e6623ull }}, {{ 0x6e38cbab9e32a396ull, 0x96f055f96e608ce9ull, 0x0ddbcc4a1fae2f1dull, 0x1dddd9ce16273113ull, 0xe1006bd57eaf9e25ull, 0xf98b5ade7c4ffd5eull }}, {{ 0x4e37f4b42dfa63dcull, 0xe5635bbe4fc5811eull, 0x8a95fae53ccdd727ull, 0x2aaa820cdd87eabeull, 0xca043656f2dc2d73ull, 0xbf718cb0db1fe5b4ull }}, {{ 0x0e2f8f09cbc7e693ull, 0xf5e1956f1db70b2full, 0x69dbccf4600a678eull, 0xaaa91480a74f2b71ull, 0xe42a1f657c99c67full, 0x7a6f7ee88f3ef90full }}, {{ 0x8ddb9661f5cf01c3ull, 0x9acfd65729266fd6ull, 0x2296018bc0680b95ull, 0xaa9acd068917b26eull, 0xe9a539f6de01c0fcull, 0xc85af5159875ba9eull }}, {{ 0x8a93dfd39a161199ull, 0x0c1e5f679b805e61ull, 0x59dc0f75841073d8ull, 0xaa0c02415aecf84dull, 0x207443a4ac1189deull, 0xd38d92d7f4994a35ull }}, {{ 0x69c6be4404dcaffbull, 0x792fba0c1303afcfull, 0x82989a9728a48670ull, 0xa478168d8d41b305ull, 0x448aa46eb8af62b2ull, 0x4387bc6f8dfce613ull }}, {{ 0x21c36ea8309edfc9ull, 0xbbdd4478be24de1aull, 0x19f609e7966d4064ull, 0x6cb0e1878490fe37ull, 0xad6a6c5336d9dafaull, 0xa34d5c5b8be0fcc0ull }}, {{ 0x51a25291e634bddbull, 0x56a4acb76d70ad05ull, 0x039c630be04483efull, 0x3ee8cf4b2da9ee27ull, 0xc6283b4024828dc8ull, 0x61059b9376c9df86ull }}, {{ 0x305739b2fe0f6a91ull, 0x626ebf2a4666c235ull, 0x241bde76c2ad2759ull, 0x751818efc8a34d86ull, 0xbd9250816d1989d2ull, 0xca3813c2a3e2bb43ull }}, {{ 0xe36840fdec9a29aaull, 0xd85377a6c0039613ull, 0x6916b0a39ac3897dull, 0x92f0f95dd661073dull, 0x67b7250e42ff6238ull, 0xe630c59a66db50a5ull }}, {{ 0xe21289eb3e05a0a0ull, 0x7342ac838023dcc6ull, 0x1ae2e6640ba35eeaull, 0xbd69bdaa5fca4866ull, 0x0d27728e9df9d635ull, 0xfde7b80804912676ull }}, {{ 0xd4b963306c38463cull, 0x809abd2301669fc4ull, 0x0cdcffe87461b528ull, 0x662168a7bde6d3fdull, 0x838a79922bc25e19ull, 0xeb0d30502dab809cull }}, {{ 0x4f3ddfe43a32be58ull, 0x060b635e0e023db0ull, 0x80a1ff148bd11395ull, 0xfd4e168d6b0447e2ull, 0x2368bfb5b597acfdull, 0x2e83e321c8b3061dull }}, {{ 0x186abeea45fb6f70ull, 0x3c71e1ac8c1668e3ull, 0x0653f6cd762ac3d2ull, 0xe50ce1862e2aced9ull, 0x62177d1917ecc1ebull, 0xd126df51d6fe3d23ull }}, {{ 0xf42b7526bbd25a5bull, 0x5c72d0bd78e018deull, 0x3f47a4069daba636ull, 0xf280cf3dcdac147aull, 0xd4eae2faef3f9336ull, 0x2b84b93265ee6361ull }}, {{ 0x89b2938356378793ull, 0x9c7c2766b8c0f8b5ull, 0x78cc684228b47e1full, 0x7908186a08b8ccc6ull, 0x512cddcd587bc025ull, 0xb32f3bf7fb4fe1d2ull }}, {{ 0x60f9c3215e2b4bbcull, 0x1cd98a033789b717ull, 0xb7fc1295970ced3cull, 0xba50f4245737ffc0ull, 0x2bc0aa0574d58176ull, 0xffd857afd11ed237ull }}, {{ 0xc9c19f4dadb0f55aull, 0x207f64202b6126e9ull, 0x2fd8b9d7e6814459ull, 0x4729896b682ffd87ull, 0xb586a43690570ea3ull, 0xfe736cde2b343627ull }}, {{ 0xe1903908c8e99584ull, 0x44f9e941b1cb8521ull, 0xde77426f010cab7bull, 0xc79f5e3211dfe747ull, 0x17426a21a3669260ull, 0xf08240adb00a1d8dull }}, {{ 0xcfa23a57d91fd72cull, 0xb1c31c90f1f33352ull, 0xb0a898560a7eb2d0ull, 0xcc39adf4b2bf08ceull, 0xe89825506201b7c7ull, 0x651686c8e0652782ull }}, {{ 0x1c56476e7b3e67bcull, 0xf19f1da97380013cull, 0xe695f35c68f2fc26ull, 0xfa40cb8efb765812ull, 0x15f17523d4112dcdull, 0xf2e143d8c3f38b1dull }}, {{ 0x1b5eca50d0700d55ull, 0x7037289e83000c59ull, 0x01db819c197dd985ull, 0xc687f395d29f70bdull, 0xdb6e936648abca0bull, 0x7ccca677a7836f22ull }}, {{ 0x11b3e72824608550ull, 0x622796311e007b7bull, 0x12931018feea7f36ull, 0xc14f83da3a3a6762ull, 0x9251c1fed6b5e475ull, 0xdffe80ac8b22575cull }}, {{ 0xb10707916bc53523ull, 0xd58bddeb2c04d2ceull, 0xb9bea0f9f528f81full, 0x8d1b2686464809d4ull, 0xb73193f4631aec99ull, 0xbff106bd6f57699dull }}, {{ 0xea464bae35b4135bull, 0x5776ab2fb8303c12ull, 0x417249c39399b13eull, 0x830f813ebed0624full, 0x27efc78bdf0d3dffull, 0x7f6a4366596a2029ull }}, {{ 0x26bef4ce1908c18aull, 0x6aa2afdd31e258bdull, 0x8e76e1a3c400ec6full, 0x1e9b0c737423d718ull, 0x8f5dcb76b6846bfbull, 0xfa26a1ff7e25419bull }}, {{ 0x8375900cfa578f69ull, 0x2a5adea3f2d77763ull, 0x90a4d065a8093c5aull, 0x320e7c82896666f5ull, 0x99a9f2a3212c37cfull, 0xc58253faed749013ull }}, {{ 0x2297a081c76b9a18ull, 0xa78cb2677c6aa9e3ull, 0xa67023f8905c5b85ull, 0xf490dd195e000597ull, 0x00a37a5f4bba2e17ull, 0xb71747cd468da0c4ull }}, {{ 0x59ec4511ca3404f1ull, 0x8b7ef80adc2aa2dfull, 0x806167b5a39b9338ull, 0x8da8a2fdac0037ecull, 0x0662c7b8f545ccefull, 0x26e8ce04c18847a8ull }}, {{ 0x833ab2b1e6083166ull, 0x72f5b06c99aa5cb9ull, 0x03ce0d186413c035ull, 0x88965de8b8022f3dull, 0x3fdbcd3994ba015bull, 0x85180c2f8f52cc90ull }}, {{ 0x204afaf2fc51edf9ull, 0x7d98e43e00a79f3full, 0x260c82f3e8c58216ull, 0x55dfab173015d862ull, 0x7e96043fcf440d93ull, 0x32f079db993bfda2ull }}, {{ 0x42edcd7ddb334bb8ull, 0xe7f8ea6c068c3877ull, 0x7c7d1d8717b714e0ull, 0x5abcaee7e0da73d5ull, 0xf1dc2a7e18a887c1ull, 0xfd64c293fc57e858ull }}, {{ 0x9d4a06ea9000f52dull, 0x0fb92838417a34a8ull, 0xdce32746ed26d0c9ull, 0x8b5ed50ec8888656ull, 0x7299a8ecf6954d8dull, 0xe5ef99c7db6f1379ull }}, {{ 0x24e44529a00993bfull, 0x9d3b92328ec60e96ull, 0xa0df88c5438427daull, 0x71b45293d5553f64ull, 0x7a009941a1d50787ull, 0xfb5c01ce9256c2beull }}, {{ 0x70eab3a0405fc571ull, 0x2453b5f993bc91ddull, 0x48bb57b4a3298e8aull, 0x710b39c6555479eeull, 0xc405fc9052524b4aull, 0xd1981211b7639b70ull }}, {{ 0x692b044283bdb66dull, 0x6b451bbfc55db2a6ull, 0xd7516d0e5f9f9165ull, 0x6a7041bf554cc34eull, 0xa83bdda33736f0e8ull, 0x2ff0b4b129e41267ull }}, {{ 0x1bae2a992569203full, 0x30b3157db5a8fa80ull, 0x692e428fbc3badf6ull, 0x2862917954ffa114ull, 0x9256a86028256914ull, 0xdf670eeba2e8b80cull }}, {{ 0x14cda9fb761b4271ull, 0xe6fed6e91899c901ull, 0x1bce999d5a54cb9dull, 0x93d9aebd51fc4accull, 0xb76293c191761ac9ull, 0xba0695345d17307dull }}, {{ 0xd008a3d29d10986dull, 0x05f4651af601da0aull, 0x16120025874ff42bull, 0xc680d36533daebf9ull, 0x29d9c58fae9d0bdfull, 0x4441d40ba2e7e4e9ull }}, {{ 0x2056663a22a5f445ull, 0x3b8bf30d9c12846cull, 0xdcb40177491f89aeull, 0xc10841f4068d37baull, 0xa281b79cd22276bdull, 0xaa9248745d0ef11bull }}, {{ 0x435ffe455a7b8aaeull, 0x53777e8818b92c39ull, 0x9f080ea8db3b60ceull, 0x8a52938841842d4cull, 0x59112c203558a369ull, 0xa9b6d48ba2956b14ull }}, {{ 0xa1bfeeb588d36aceull, 0x42aaf150f73bba3cull, 0x365092989051c80full, 0x6739c3528f29c4feull, 0x7aabb9421576621full, 0xa1244d7459d62ecbull }}, {{ 0x517f531758422c09ull, 0x9aad6d29a855465eull, 0x1f25b9f5a331d098ull, 0x0841a13997a1b1eeull, 0xcab53c94d69fd53aull, 0x4b6b068b825dd3f2ull }}, {{ 0x2ef93ee97295b857ull, 0x0ac643a09354bfafull, 0x377943985ff225f6ull, 0x52904c3fec50f34dull, 0xeb145dd0623e5444ull, 0xf22e417317aa477bull }}, {{ 0xd5bc751e79d93362ull, 0x6bbea445c14f7cd7ull, 0x2abca3f3bf757b9cull, 0x39a2fa7f3b298104ull, 0x2ecbaa23d66f4aabull, 0x75ce8e7eeca6cad7ull }}, {{ 0x595c9330c27c01d2ull, 0x35726ab98d1ae06eull, 0xab5e67857a96d41cull, 0x405dc8f84f9f0a29ull, 0xd3f4a5666058eab0ull, 0x9a1190f53e83ec67ull }}, {{ 0x7d9dbfe798d81236ull, 0x16782b3f830cc44full, 0xb1b00b36c9e4491aull, 0x83a9d9b31c3665a0ull, 0x478e75ffc3792ae2ull, 0x04afa99471273c0eull }}, {{ 0xe8297f0bf870b61aull, 0xe0b1b07b1e7fab1aull, 0xf0e07023e2eadb04ull, 0x24a280ff1a1ff846ull, 0xcb909bfda2bbacd9ull, 0x2edc9fcc6b88588eull }}, {{ 0x119ef677b4671d01ull, 0xc6f0e4cf30fcaf0dull, 0x68c46166dd2c8e30ull, 0x6e5909f7053fb2c5ull, 0xf3a617e85b54c07bull, 0xd49e3dfc33537593ull }}, {{ 0xb035a0ad0c072207ull, 0xc568f017e9ded682ull, 0x17abce04a3bd8de7ull, 0x4f7a63a6347cfbb6ull, 0x847cef13914f84d2ull, 0x4e2e6bda014297c7ull }}, {{ 0xe21846c278475442ull, 0xb61960ef22b4611aull, 0xecb60c2e65678b0dull, 0x1ac7e47e0ce1d51cull, 0x2ce156c3ad1b3037ull, 0x0dd036840c99edcbull }}, {{ 0xd4f2c398b2c94a90ull, 0x1cfdc9575b0bcb0cull, 0x3f1c79cff60b6e89ull, 0x0bceecec80d25321ull, 0xc0cd63a4c30fe227ull, 0x8a2221287e0349efull }}, {{ 0x517ba3f6fbdce9a2ull, 0x21e9dd698e75ee80ull, 0x771cc21f9c72515bull, 0x7615413d08373f4cull, 0x8805e46f9e9ed586ull, 0x65554b94ec20e35dull }}, {{ 0x2ed467a5d6a12053ull, 0x5322a61f909b5103ull, 0xa71f953c1c772d8full, 0x9cd48c62522878fcull, 0x503aec5c32345740ull, 0xf554f3d13948e1a7ull }}, {{ 0xd44c0c7a624b433full, 0x3f5a7d3ba6112a1full, 0x873bd4591ca7c799ull, 0x204d7bd73594b9deull, 0x224d3b99f60b6886ull, 0x9551862c3cd8d089ull }}, {{ 0x4af87cc7d6f0a075ull, 0x7988e4547caba53eull, 0x48564b7b1e8dcbfcull, 0x4306d66817cf42b1ull, 0x570454039c72153dull, 0xd52f3dba6078255bull }}, {{ 0xedb4dfce65664490ull, 0xbf58eb4cdeb4746eull, 0xd35ef2cf3189f7dcull, 0x9e446010ee189aecull, 0x662b48241c74d464ull, 0x53d86947c4b17591ull }}, {{ 0x4910be0ff5feada0ull, 0x79793100b30c8c55ull, 0x41b57c17ef63ae9full, 0x2eabc0a94cf60d40ull, 0xfdb0d1691c904beeull, 0x46741ccdaeee97adull }}, {{ 0xdaa76c9f9bf2c83eull, 0xbebbea06fe7d7b54ull, 0x9116d8ef59e4d23aull, 0xd2b5869d019c8482ull, 0xe8e82e1b1da2f74dull, 0xc0892008d551eccbull }}, {{ 0x8a8a3e3c177bd268ull, 0x73572445f0e6d150ull, 0xaae4795982f0364bull, 0x3b174222101d2d19ull, 0x1911cd0f285da90aull, 0x855b405855333ff7ull }}, {{ 0x69666e58ead6380eull, 0x81676abb69042d25ull, 0xacecbd7f1d621ef2ull, 0x4ee89554a123c300ull, 0xfab2029793a89a66ull, 0x3590837354007fa6ull }}, {{ 0x1e004f792c5e3090ull, 0x0e0a2b521a29c376ull, 0xc13f66f725d53579ull, 0x1515d54e4b659e06ull, 0xcaf419ebc49607ffull, 0x17a522814804fc85ull }}, {{ 0x2c031abbbbade59full, 0x8c65b13505a1a29dull, 0x8c7a05a77a5416baull, 0xd2da550ef1f82c43ull, 0xed890335addc4ff6ull, 0xec73590cd031dd39ull }}, {{ 0xb81f0b5554caf83bull, 0x7bf8ec1238505a23ull, 0x7cc4388ac748e349ull, 0x3c87529573b1baa3ull, 0x475a2018ca9b1fa4ull, 0x3c817a8021f2a443ull }}, {{ 0x313671554fedb24dull, 0xd7b938b633238565ull, 0xdfaa356bc8d8e0deull, 0x5d4939d684f14a62ull, 0xc98540f7ea0f3c6aull, 0x5d0ec901537a6aa0ull }}, {{ 0xec206d551f48f6fdull, 0x6d3c371dff6335f3ull, 0xbca61635d878c8b4ull, 0xa4dc4261316ce7dcull, 0xdf3489af24985c27ull, 0xa293da0d42c82a47ull }}, {{ 0x3944455338d9a5e7ull, 0x445a272bf9e01b87ull, 0x5e7cde1a74b7d70cull, 0x709a97cbee410e9full, 0xb80d60d76df3998cull, 0x59c684849bd1a6ceull }}, {{ 0x3caab54038807b04ull, 0xab8587b7c2c11348ull, 0xb0e0ad088f2e667aull, 0x6609edf74e8a9239ull, 0x3085c86a4b83ff7cull, 0x81c12d2e16308413ull }}, {{ 0x5eab14823504ce2bull, 0xb3374d2d9b8ac0d2ull, 0xe8c6c25597d000caull, 0xfc634ba91169b640ull, 0xe539d426f327fadbull, 0x118bc3ccdde528bfull }}, {{ 0xb2aecd1612300dafull, 0x002903c8136b8837ull, 0x17c39757ee2007ebull, 0xdbe0f49aae211e89ull, 0xf44249857f8fcc97ull, 0xaf75a600aaf3977eull }}, {{ 0xfad402dcb5e088d7ull, 0x019a25d0c233522cull, 0xeda3e96f4d404f2eull, 0x96c98e0acd4b315aull, 0x8a96df36fb9dfdeeull, 0xda987c06ad83eaf5ull }}, {{ 0xcc481c9f1ac55867ull, 0x10057a27960135c1ull, 0x48671e59048317ccull, 0xe3df8c6c04efed8dull, 0x69e4b825d42beb51ull, 0x89f4d842c7272d97ull }}, {{ 0xfad11e370bb57404ull, 0xa036c58bdc0c1991ull, 0xd4072f7a2d1eedf8ull, 0xe6bb7c38315f4784ull, 0x22ef317a49b73132ull, 0x6390729bc787c7eaull }}, {{ 0xcc2b2e2675168828ull, 0x4223b7769878ffb3ull, 0x4847dac5c3354bb6ull, 0x0352da31edb8cb30ull, 0x5d57eec6e127ebfdull, 0xe3a47a15cb4dcf25ull }}, {{ 0xf9afcd8092e1518bull, 0x95652aa1f4b9fd05ull, 0xd2ce8bb9a014f51eull, 0x213c85f34937efe2ull, 0xa56f53c4cb8f37e2ull, 0xe46cc4d9f10a1775ull }}, {{ 0xc0de0705bccd2f73ull, 0xd5f3aa538f43e23bull, 0x3c11754040d19331ull, 0x4c5d3b80dc2f5edcull, 0x765945aff3982ed5ull, 0xec3fb0836a64ea98ull }}, {{ 0x88ac46396003da7cull, 0x5b84a74398a6d655ull, 0x58ae9482882fbff2ull, 0xfba4530899d9b49aull, 0x9f7cb8df83f1d454ull, 0x3a7ce52227f129f4ull }}, {{ 0x56babe3dc02688d3ull, 0x932e88a3f6845f57ull, 0x76d1cd1951dd7f77ull, 0xd46b3e5602810e07ull, 0x3adf38bb27724b51ull, 0x48e0f3558f6ba38eull }}, {{ 0x634b6e6981815841ull, 0xbfd15667a12bb969ull, 0xa43202fd32a6faabull, 0x4c306f5c190a8c4aull, 0x4cb8374f8a76f132ull, 0xd8c981579a34638eull }}, {{ 0xe0f2501f0f0d728cull, 0x7e2d600c4bb53e1dull, 0x69f41de3fa85cab5ull, 0xf9e45998fa697aeaull, 0xff32291b68a56bf6ull, 0x77df0d6c060be38eull }}, {{ 0xc97721369686797cull, 0xedc5c07af5146d2aull, 0x23892ae7c939eb16ull, 0xc2eb7ff9c81ecd28ull, 0xf7f59b12167637a5ull, 0xaeb686383c76e395ull }}, {{ 0xdea74c21e140bed5ull, 0x49b984cd92cc43abull, 0x635bad0ddc432ee5ull, 0x9d32ffc1d1340391ull, 0xaf980eb4e09e2c79ull, 0xd3213e325ca4e3dbull }}, {{ 0xb288f952cc877457ull, 0xe13f3007bbfaa4b6ull, 0xe194c28a9a9fd4f4ull, 0x23fdfd922c0823adull, 0xdbf09310c62dbcc0ull, 0x3f4c6df79e70e694ull }}, {{ 0xf959bd3bfd4a8b62ull, 0xcc77e04d57ca6f22ull, 0xcfcf996a0a3e5190ull, 0x67ebe7b5b85164caull, 0x9765bea7bdc95f81ull, 0x78fc4bac306901d0ull }}, {{ 0xbd816457e4e971d7ull, 0xfcaec3056de8575dull, 0x1e1bfe24666f2fa7ull, 0x0f370d19332defecull, 0xe9f9728d69ddbb0eull, 0xb9daf4b9e41a1225ull }}, {{ 0x670deb6ef11e7269ull, 0xded39e364b1369a9ull, 0x2d17ed6c0057dc8full, 0x982682fbffcb5f39ull, 0x23be798622a94e8cull, 0x428d8f42e904b57bull }}, {{ 0x068b32556b30781aull, 0xb4442e1eeec2209eull, 0xc2ef4638036e9d9eull, 0xf1811dd7fdf1b83bull, 0x6570bf3d5a9d117dull, 0x9987989d1a2f16cfull }}, {{ 0x416ff7562fe4b100ull, 0x0aa9cd355395462cull, 0x9d58be3022522833ull, 0x6f0b2a6feb713255ull, 0xf66778658a22aeebull, 0xff4bf62305d6e419ull }}, {{ 0x8e5fa95ddeeeea04ull, 0x6aa2041543d4bdbaull, 0x25776de1573591feull, 0x566fa85f326bf758ull, 0xa00ab3f7655ad532ull, 0xf8f79d5e3a64e903ull }}, {{ 0x8fbc9daab5552427ull, 0x2a5428d4a64f6949ull, 0x76aa4acd6817b3f0ull, 0x605c93b7f837a971ull, 0x406b07a9f58c53f7ull, 0xb9ac25ae47f11a24ull }}, {{ 0x9d5e28ab15536986ull, 0xa749984e7f1a1cdfull, 0xa2a6ec0610ed0761ull, 0xc39dc52fb22c9e6eull, 0x842e4ca3977b47a9ull, 0x40b978cecf6b056aull }}, {{ 0x25ad96aed5421f37ull, 0x88dff310f70520bcull, 0x5a85383ca94249d0ull, 0xa429b3dcf5be3052ull, 0x29cefe63ead0cca1ull, 0x873eb8141a2e3629ull }}, {{ 0x78c7e2d454953827ull, 0x58bf7ea9a6334759ull, 0x8934325e9c96e225ull, 0x69a106a1996de337ull, 0xa215efe72c27fe50ull, 0x487330c905ce1d9bull }}, {{ 0xb7cedc4b4dd43186ull, 0x777af2a07e00c97eull, 0x5c09f7b21de4d575ull, 0x204a424ffe4ae02bull, 0x54db5f07b98fef24ull, 0xd47fe7da3a0d2814ull }}, {{ 0x2e149af10a49ef37ull, 0xaacd7a44ec07def3ull, 0x9863acf52af05696ull, 0x42e6971feeecc1b1ull, 0x5091b64d3f9f5769ull, 0x4cff0e86448390cbull }}, {{ 0xccce0d6a66e35829ull, 0xac06c6b1384eb57full, 0xf3e4c193ad6361e2ull, 0x9d01e73f553f90efull, 0x25b11f047c396a1cull, 0x01f6913ead23a7f1ull }}, {{ 0x000c862804e17196ull, 0xb843c2ec331316feull, 0x86ef8fc4c5e1d2daull, 0x22130879547ba95full, 0x78eb362cda3e251eull, 0x13a1ac72c3648f6bull }}, {{ 0x007d3d9030ce6fddull, 0x32a59d39febee5ecull, 0x455b9dafbad23c8bull, 0x54be54bd4cd49dbbull, 0xb9301dc0866d732dull, 0xc450bc7ba1ed9a32ull }}, {{ 0x04e467a1e8105ea1ull, 0xfa782443f374fb38ull, 0xb59428dd4c365d6full, 0x4f6f4f65004e2950ull, 0x3be1298540467fc5ull, 0xab275cd4534805fbull }}, {{ 0x30ec0c5310a3b24full, 0xc8b16aa78291d030ull, 0x17c998a4fa1fa65full, 0x1a5919f2030d9d27ull, 0x56cb9f3482c0fdb5ull, 0xaf89a04b40d03bd0ull }}, {{ 0xe9387b3ea664f713ull, 0xd6ee2a8b19b221e1ull, 0xeddff671c53c7fbdull, 0x077b03741e882386ull, 0x63f4380d1b89e913ull, 0xdb6042f088225623ull }}, {{ 0x1c34d0727ff1a6beull, 0x654da96f00f552d3ull, 0x4abfa071b45cfd6aull, 0x4ace228931516345ull, 0xe78a308313631abeull, 0x91c29d6551575d61ull }}, {{ 0x1a102478ff708368ull, 0xf5089e5609953c3full, 0xeb7c44710ba1e627ull, 0xec0d595bed2de0b4ull, 0x0b65e51ec1df0b6eull, 0xb19a25f52d69a5d3ull }}, {{ 0x04a16cb9fa65220full, 0x92562f5c5fd45a77ull, 0x32daac6a7452fd8full, 0x38857d9743cac711ull, 0x71faf33392b67255ull, 0xf0057b93c6207a3eull }}, {{ 0x2e4e3f43c7f35493ull, 0xb75dd99bbe4b88a6ull, 0xfc8abc288b3de79bull, 0x3536e7e8a5ebc6abull, 0x73cd8003bb207754ull, 0x6036d3c5bd44c670ull }}, {{ 0xcf0e78a5cf814dbdull, 0x29aa80156ef3567dull, 0xdd6b5995706b0c15ull, 0x14250f167b35c2b7ull, 0x860700254f44a94aull, 0xc22445b964afc064ull }}, {{ 0x1690b67a1b0d0966ull, 0xa0a900d6558160eaull, 0xa6317fd6642e78d3ull, 0xc97296e0d0199b2eull, 0x3c46017518ae9ce4ull, 0x956ab93deedd83edull }}, {{ 0xe1a720c50e825df8ull, 0x469a085f570dc924ull, 0x7deefe5fe9d0b844ull, 0xde79e4c821000fd2ull, 0x5abc0e92f6d220efull, 0xd62b3c6b54a72744ull }}, {{ 0xd08747b29117abb2ull, 0xc20453b96689db70ull, 0xeb55efbf222732aaull, 0xb0c2efd14a009e38ull, 0x8b5891bda435495eull, 0x5db05c314e8788abull }}, {{ 0x2548ccf9aaecb4f8ull, 0x942b453e01629268ull, 0x315b5d775587faabull, 0xe79d5e2ce4062e39ull, 0x7175b1686a14ddb2ull, 0xa8e399ed114b56b3ull }}, {{ 0x74d801c0ad3f11b3ull, 0xc9b0b46c0dd9b811ull, 0xed91a6a9574fcab3ull, 0x0c25adc0e83dce3bull, 0x6e98ee1424d0a8fdull, 0x98e40342acf16302ull }}, {{ 0x90701186c476b101ull, 0xe0e70c388a8130aeull, 0x47b0829d691deb05ull, 0x7978c989126a0e57ull, 0x51f94cc9702699e2ull, 0xf8e8209ac16dde18ull }}, {{ 0xa460af43aca2ea0eull, 0xc9067a35690be6d1ull, 0xcce51a261b2b2e3aull, 0xbeb7df5ab8248f68ull, 0x33bcffde618202d8ull, 0xb911460b8e4aacf3ull }}, {{ 0x6bc6d8a4be5d248eull, 0xda40c6161a770430ull, 0x00f3057d0fafce4bull, 0x732eb98b316d9a18ull, 0x0561feafcf141c77ull, 0x3aacbc738eeac180ull }}, {{ 0x35c4766f6fa36d90ull, 0x8687bcdd08a629e4ull, 0x097e36e29cde0ef6ull, 0x7fd33f6fee4804f0ull, 0x35d3f2de16c91caaull, 0x4abf5c83952b8f00ull }}, {{ 0x19aca05a5c6247a2ull, 0x414d60a2567da2eaull, 0x5eee24da20ac95a1ull, 0xfe407a5f4ed03160ull, 0x1a477cace3db1ea8ull, 0xeb799d23d3b39602ull }}, {{ 0x00be43879bd6cc55ull, 0x8d05c65760e85d25ull, 0xb54d708546bdd84cull, 0xee84c7b91421edc3ull, 0x06cadec0e68f3299ull, 0x32c023664503dc15ull }}, {{ 0x076ea34c1663fb53ull, 0x8239bf69c913a372ull, 0x15066534c36a72fdull, 0x512fcd3ac95349a5ull, 0x43ecb3890197fa03ull, 0xfb8161feb22698d2ull }}, {{ 0x4a5260f8dfe7d139ull, 0x16417a21dac46274ull, 0xd23ff40fa2287de7ull, 0x2bde044bdd40e072ull, 0xa73f035a0fefc421ull, 0xd30dd3f2f581f836ull }}, {{ 0xe737c9b8bf0e2c3bull, 0xde8ec5528babd88aull, 0x367f889c5594eb06ull, 0xb6ac2af6a488c47cull, 0x887621849f5da94bull, 0x3e8a477d9713b222ull }}, {{ 0x082de137768dba52ull, 0xb193b53974b6756dull, 0x20fb561b57d12e44ull, 0x22b9ada26d57acdaull, 0x549d4f2e39a89cf5ull, 0x7166cae7e6c4f559ull }}, {{ 0x51cacc2aa1894734ull, 0xefc5143e8f209642ull, 0x49d15d116e2bceaeull, 0x5b40c858456cc085ull, 0x4e2517ce40962193ull, 0x6e03ed0f03b1957dull }}, {{ 0x31ebf9aa4f5cc809ull, 0x5db2ca719745de97ull, 0xe22da2ae4db612d5ull, 0x9087d372b63f8534ull, 0x0d72ee0e85dd4fc1ull, 0x4c27429624efd6e5ull }}, {{ 0xf337c0a7199fd055ull, 0xa8fbe86fe8bab1e7ull, 0xd5c85acf091cbc55ull, 0xa54e427b1e7b3410ull, 0x867d4c913aa51d8full, 0xf98899dd715e64f2ull }}, {{ 0x802d8687003e2353ull, 0x99d7145f174af30full, 0x59d38c165b1f5b58ull, 0x750e98cf30d008a8ull, 0x40e4fdac4a73279cull, 0xbf5602a66daff179ull }}, {{ 0x01c74146026d6141ull, 0x0266cbb6e8ed7e9bull, 0x824378df8f399176ull, 0x9291f817e8205693ull, 0x88f1e8bae87f8c1cull, 0x795c1a8048df6ebcull }}, {{ 0x11c88cbc1845cc8cull, 0x1803f5251946f20eull, 0x16a2b8bb983fae9cull, 0xb9b3b0ef114361c3ull, 0x5973174d14fb791dull, 0xbd990902d8ba535dull }}, {{ 0xb1d57f58f2b9fd77ull, 0xf0279372fcc5748cull, 0xe25b3753f27cd218ull, 0x4104e956aca1d19eull, 0x7e7ee902d1d2bb29ull, 0x67fa5a1c774741a5ull }}, {{ 0xf256f9797b43e6a7ull, 0x618bc27ddfb68d7eull, 0xd790294778e034f9ull, 0x8a311d62be523034ull, 0xf0f51a1c323b4f9cull, 0x0fc7851ca8c89076ull }}, {{ 0x7765bebed0a70285ull, 0xcf7598eabd2186f5ull, 0x6ba19ccab8c211bdull, 0x65eb25db6f35e210ull, 0x69930519f6511c1dull, 0x9dcb331e97d5a4a5ull }}, {{ 0xa9f9737426861932ull, 0x1a97f92b634f4596ull, 0x34501feb3794b16aull, 0xfb2f7a92581ad4a4ull, 0x1fbe33039f2b1925ull, 0x29efff31ee586e76ull }}, {{ 0xa3be8289813cfbf5ull, 0x09efbbb1e118b7e2ull, 0x0b213f302bceee25ull, 0xcfdac9b7710c4e6aull, 0x3d6dfe2437aefb7bull, 0xa35ff7f34f74509dull }}, {{ 0x6571195f0c61d794ull, 0x635d54f2caf72edaull, 0x6f4c77e1b6154d72ull, 0x1e8be12a6a7b1024ull, 0x664bed6a2cd5d2d6ull, 0x61bfaf811a8b2624ull }}, {{ 0xf66afdb67bd26bc9ull, 0xe1a5517beda7d487ull, 0x58fcaed11cd50677ull, 0x3176cba828cea16cull, 0xfef74625c05a3c5dull, 0xd17cdb0b096f7d6bull }}, {{ 0xa02de920d63835d6ull, 0xd0752ed7488e4d4full, 0x79ded42b205240aeull, 0xeea3f49198124e3bull, 0xf5a8bd7983865ba3ull, 0x2ee08e6e5e5ae637ull }}, {{ 0x41cb1b485e321a5aull, 0x2493d468d58f051cull, 0xc2b449af433686d4ull, 0x52678daff0b70e52ull, 0x989766bf233f9467ull, 0xd4c5904faf8cfe2full }}, {{ 0x91ef10d3adf50782ull, 0x6dc64c185796331aull, 0x9b0ae0d8a0214449ull, 0x380b88df67268f3bull, 0xf5ea0377607bcc09ull, 0x4fb7a31cdb81eddbull }}, {{ 0xb356a844cb924b14ull, 0x49bef8f36bddff09ull, 0x0e6cc876414caadeull, 0x307358ba07819854ull, 0x9b2422a9c4d5f85cull, 0x1d2c5f2093134a97ull }}, {{ 0x016292aff3b6eec8ull, 0xe175b98236abf661ull, 0x903fd49e8cfeacaeull, 0xe48177444b0ff348ull, 0x0f695aa1b05bb399ull, 0x23bbb745bec0e9ecull }}, {{ 0x0dd9badf852553d4ull, 0xce993f1622b79fcaull, 0xa27e4e3181f2bed4ull, 0xed0ea8aaee9f80d5ull, 0x9a1d8a50e3950402ull, 0x655528b973892338ull }}, {{ 0x8a814cbb3375464bull, 0x11fc76dd5b2c3de4ull, 0x58ef0def137b7450ull, 0x429296ad523b0858ull, 0x05276728e3d2281dull, 0xf553973e835b6036ull }}, {{ 0x690cff500294beebull, 0xb3dca4a58fba6aedull, 0x79568b56c2d28b20ull, 0x99b9e2c5364e5373ull, 0x338a0798e6359124ull, 0x9543e8712191c21cull }}, {{ 0x1a81f92019cf752eull, 0x069e6e779d482d46ull, 0xbd6171639c396f47ull, 0x0142dbb41f0f4282ull, 0x03644bf8fe17ab6eull, 0xd4a7146b4fb1951aull }}, {{ 0x0913bb41021a93d0ull, 0x423050ac24d1c4bdull, 0x65ce6de41a3e58c6ull, 0x0c9c95093698991bull, 0x21eaf7b9ececb24cull, 0x4e86cc311cefd304ull }}, {{ 0x5ac5508a1509c624ull, 0x95e326b97031af62ull, 0xfa104ae9066f77beull, 0x7e1dd25c21f5fb11ull, 0x532dad43413ef6f8ull, 0x1143f9eb215e3e29ull }}, {{ 0x8bb52564d261bd66ull, 0xdadf833e61f0d9d7ull, 0xc4a2ed1a405aad71ull, 0xed2a3799539bceb3ull, 0x3fc8c4a08c75a5b4ull, 0xaca7c32f4dae6d9dull }}, {{ 0x751375f037d16600ull, 0x8cbb206fd368826bull, 0xae5d4306838ac672ull, 0x43a62bfd44161305ull, 0x7dd7ae457c987911ull, 0xbe8d9fd908d04824ull }}, {{ 0x92c29b622e2dfc01ull, 0x7f4f445e42151832ull, 0xcfa49e41236bc079ull, 0xa47db7e4a8dcbe38ull, 0xea6cceb6ddf4baacull, 0x71883e7a5822d16cull }}, {{ 0xbb9a11d5cdcbd80bull, 0xf918abae94d2f1f9ull, 0x1c6e2e8b623584beull, 0x6ce92eee989f6e38ull, 0x28401324ab8f4abeull, 0x6f5270c7715c2e41ull }}, {{ 0x5404b25a09f67073ull, 0xbaf6b4d1d03d73c1ull, 0x1c4dd171d6172f75ull, 0x411bd551f63a4e31ull, 0x9280bf6eb398eb70ull, 0x593867ca6d99ce8bull }}, {{ 0x482ef78463a0647dull, 0x4da310322266858dull, 0x1b0a2e725ce7da99ull, 0x8b1655339e470debull, 0xb9077a5303f93262ull, 0x7c340de848021173ull }}, {{ 0xd1d5ab2be443ece4ull, 0x085ea1f558013784ull, 0x0e65d077a10e89fdull, 0x6edf54042ec68b2full, 0x3a4ac73e27bbf7d9ull, 0xda088b12d014ae85ull }}, {{ 0x3258afb6eaa740eaull, 0x53b25395700c2b30ull, 0x8ffa24ac4a9163e2ull, 0x54b94829d3c16fd6ull, 0x46ebc86d8d57ae7eull, 0x84556ebc20ced134ull }}, {{ 0xf776dd252a888924ull, 0x44f743d66079afe1ull, 0x9fc56ebae9ade6d7ull, 0x4f3cd1a2458e5e61ull, 0xc535d447856cd0efull, 0x2b56535948142c0aull }}, {{ 0xaaa4a373a9555b6bull, 0xb1a8a65fc4c0ded3ull, 0x3db6534d20cb0468ull, 0x18603056b78fafd0ull, 0xb41a4acb36402959ull, 0xb15f417cd0c9b86bull }}, {{ 0xaa6e62849d55922bull, 0xf0967fbdaf88b444ull, 0x691f410347ee2c16ull, 0xf3c1e3632b9cde22ull, 0x0906ebf01e819d7aull, 0xedb88ee027e13435ull }}, {{ 0xa84fd92e2557b5adull, 0x65e0fd68db570aaeull, 0x1b388a20cf4db8e5ull, 0x8592e1dfb420ad58ull, 0x5a453761311026cdull, 0x493594c18ecc0a12ull }}, {{ 0x931e7bcd756d18c6ull, 0xfac9e61891666ad2ull, 0x10356548190938f5ull, 0x37bcd2bd0946c571ull, 0x86b429cbeaa18407ull, 0xdc17cf8f93f864b7ull }}, {{ 0xbf30d6069642f7bbull, 0xcbe2fcf5ae002c39ull, 0xa215f4d0fa5c399bull, 0x2d603b625cc3b66aull, 0x4309a1f72a4f2848ull, 0x98ee1b9bc7b3ef2bull }}, {{ 0x77e85c41de9dad4aull, 0xf6dde198cc01ba41ull, 0x54db9029c79a4015ull, 0xc5c251d79fa5202aull, 0x9e6053a7a71792d1ull, 0xf94d1415cd0757b0ull }}, {{ 0xaf139a92b228c4e6ull, 0xa4aacff7f811468eull, 0x5093a1a1cc0680dbull, 0xb997326c3c7341a7ull, 0x2fc3448c86ebbc31ull, 0xbd02c8da02496ce6ull }}, {{ 0xd6c409baf597b0faull, 0x6eac1fafb0acc192ull, 0x25c45051f8410894ull, 0x3fe7f83a5c809089ull, 0xdda0ad7d453559f1ull, 0x621bd88416de40fdull }}, {{ 0x63a8614d97ece9c7ull, 0x52b93cdce6bf8fbcull, 0x79ab2333b28a55ccull, 0x7f0fb2479d05a55bull, 0xa846c6e4b415836cull, 0xd5167528e4ae89eaull }}, {{ 0xe493cd07ef4121c2ull, 0x3b3c60a1037b9d5bull, 0xc0af6004f96759fbull, 0xf69cf6cc22387592ull, 0x92c3c4ef08d7223cull, 0x52e09398eed1632aull }}, {{ 0xedc6024f588b5192ull, 0x505bc64a22d42596ull, 0x86d9c031be0983d0ull, 0xa221a3f9563497bbull, 0xbba5b15658675661ull, 0x3cc5c3f9542ddfa9ull }}, {{ 0x49bc171975712fb3ull, 0x2395bee55c4977e5ull, 0x448181f16c5f2623ull, 0x555067bd5e0ded53ull, 0x5478ed5f74095fd0ull, 0x5fb9a7bd49cabca1ull }}, {{ 0xe158e6fe966bdcfeull, 0x63d974f59adeaef4ull, 0xad0f136e3bb77d5full, 0x55240d65ac8b4540ull, 0x4cb945ba885dbe23ull, 0xbd408d64e1eb5e4dull }}, {{ 0xcd7905f1e036a1e8ull, 0xe67e91980cb2d590ull, 0xc296c24e552ae5b9ull, 0x536885f8bd70b486ull, 0xff3cb94953a96d61ull, 0x648585f0d331af04ull }}, {{ 0x06ba3b72c2225310ull, 0x00f1aff07efc57a8ull, 0x99e3970f53acf943ull, 0x42153bb766670d43ull, 0xf85f3cdd449e45cdull, 0xed373b683ff0d631ull }}, {{ 0x4346527b95573e9dull, 0x0970df64f5db6c90ull, 0x02e3e69944c1bc9eull, 0x94d4552a000684a4ull, 0xb3b860a4ae2eba04ull, 0x442852127f685df3ull }}, {{ 0xa0bf38d3d568721dull, 0x5e68b9f19a923da2ull, 0x1ce701fcaf915e2cull, 0xd04b53a400412e68ull, 0x0533c66ecdd3442dull, 0xa99334b8fa13ab85ull }}, {{ 0x4778384656147524ull, 0xb017437009b6685aull, 0x210613dedbadadbbull, 0x22f14468028bd011ull, 0x3405c0540a40a9caull, 0x9fc00f39c4c4b332ull }}, {{ 0xcab232bf5ccc9369ull, 0xe0e8a26061201386ull, 0x4a3cc6b494c8c954ull, 0x5d6cac10197620abull, 0x083983486686a1e5ull, 0x3d809841afaefff6ull }}, {{ 0xeaf5fb799ffdc217ull, 0xc91657c3cb40c343ull, 0xe65fc30dcfd7dd50ull, 0xa63eb8a0fe9d46b0ull, 0x523f20d4014252f5ull, 0x6705f290dcd5ff9cull }}, {{ 0x2d9bd2c03fe994e2ull, 0xdadf6da5f087a0a7ull, 0xffbd9e8a1e6ea527ull, 0x7e733649f224c2e8ull, 0x367748480c973d98ull, 0x063b79a8a05bfc1bull }}, {{ 0xc8163b827f1fd0cfull, 0x8cba487b654c4687ull, 0xfd6831653052738eull, 0xf0801ee3756f9d19ull, 0x20a8d2d07de867f4ull, 0x3e52c0964397d910ull }}, {{ 0xd0de5318f73e2819ull, 0x7f46d4d1f4fac14dull, 0xe611edf3e3388391ull, 0x650134e2965c2303ull, 0x46983c24eb140f91ull, 0x6f3b85dea3ee7aa1ull }}, {{ 0x28af3ef9a86d90feull, 0xf8c4503391cb8d0aull, 0xfcb34b86e03523aeull, 0xf20c10d9df995e26ull, 0xc1f259712ec89badull, 0x58533ab26750ca4cull }}, {{ 0x96d875c09447a9e9ull, 0xb7ab2203b1f38265ull, 0xdf00f344c21364d5ull, 0x7478a882bbfdad85ull, 0x93777e6bd3d614cbull, 0x73404af80927e6ffull }}, {{ 0xe4749985cacca31bull, 0x2caf5424f38317f7ull, 0xb60980af94c1f059ull, 0x8cb6951b57e8c73aull, 0xc2aaf036465ccff2ull, 0x8082edb05b8f05fbull }}, {{ 0xec8dff39ebfe5f0aull, 0xbed94971831eefaeull, 0x1c5f06dbcf93637bull, 0x7f21d3116f17c84bull, 0x9aad621ebfa01f79ull, 0x051d48e393963bd5ull }}, {{ 0x3d8bf84337efb662ull, 0x747cde6f1f355cd5ull, 0x1bb644961bc1e2d5ull, 0xf7523eae56edd2efull, 0x0ac5d5337c413abeull, 0x3324d8e3c3de5658ull }}, {{ 0x6777b2a02f5d1fd8ull, 0x8ce0b0573815a054ull, 0x151eaddd1592dc56ull, 0xa93672cf654a3d57ull, 0x6bba5402da8c4b75ull, 0xff7078e5a6af5f70ull }}, {{ 0x0aacfa41d9a33e6full, 0x80c6e36830d8434cull, 0xd332caa2d7bc9b61ull, 0x9c207c19f4e66566ull, 0x3547481c897af298ull, 0xfa64b8f882d9ba64ull }}, {{ 0x6ac1c69280607051ull, 0x07c4e211e872a0f8ull, 0x3ffbea5c6d5e11cfull, 0x1944d90390fff604ull, 0x14c8d11d5ecd79f6ull, 0xc7ef39b51c8147eaull }}, {{ 0x2b91c1b903c4632dull, 0x4db0d4b3147a49b4ull, 0x7fd7279c45acb216ull, 0xfcb07a23a9ff9c2aull, 0xcfd82b25b406c39cull, 0xcf5841131d0ccf24ull }}, {{ 0xb3b1913a25abdfc1ull, 0x08e84efeccc6e109ull, 0xfe678c1ab8bef4dfull, 0xdee4c564a3fc19a8ull, 0x1e71af790843a421ull, 0x19728abf22801770ull }}, {{ 0x04efac4578b6bd87ull, 0x591315f3ffc4ca61ull, 0xf00b790b377590b6ull, 0xb4efb5ee67d90099ull, 0x3070daba52a46952ull, 0xfe796b775900ea61ull }}, {{ 0x315cbab6b7236745ull, 0x7abedb87fdafe7caull, 0x6072ba702a97a71full, 0x115d1b500e7a0603ull, 0xe4688b473a6c1d3bull, 0xf0be32a97a0927cbull }}, {{ 0xed9f4b23276208aeull, 0xcb74934fe8df0de5ull, 0xc47b4861a9ec873aull, 0xada3112090c43c21ull, 0xec1570c84839244eull, 0x676dfa9ec45b8df6ull }}, {{ 0x4838ef5f89d456cdull, 0xf28dc11f18b68afbull, 0xacd0d3d0a33d484bull, 0xc85eab45a7aa5951ull, 0x38d667d2d23b6b12ull, 0x0a4bca33ab938ba5ull }}, {{ 0xd23959bb624b63ffull, 0x79898b36f7216dd0ull, 0xc02846266064d2f7ull, 0xd3b2b0b88ca77d30ull, 0x38600e3c36522ebbull, 0x66f5e604b3c37474ull }}, {{ 0x363d8151d6f1e7f3ull, 0xbf5f7025a74e4a28ull, 0x8192bd7fc3f03daaull, 0x44fae7357e8ae3e7ull, 0x33c08e5a1f35d356ull, 0x059afc2f05a28c8aull }}, {{ 0x1e670d3265730f80ull, 0x79ba6178890ee592ull, 0x0fbb66fda76268abull, 0xb1cd0816f16ce70bull, 0x05858f85381a415eull, 0x380dd9d638597d66ull }}, {{ 0x300683f7f67e9afeull, 0xc147ceb55a94f7b5ull, 0x9d5205e889d816b2ull, 0xf20250e56e41066eull, 0x37379b3431068db2ull, 0x308a825e337ee5fcull }}, {{ 0xe04127afa0f20debull, 0x8cce131589d1ad13ull, 0x25343b156270e2fbull, 0x741728f64e8a4052ull, 0x282c1009ea4188fdull, 0xe56917ae02f4fbdaull }}, {{ 0xc28b8cdc49748b2dull, 0x800cbed76230c2c6ull, 0x740a4ed5d868ddd3ull, 0x88e7999f11668335ull, 0x91b8a063268f59e6ull, 0xf61aeccc1d91d685ull }}, {{ 0x9973809ade8d6fc3ull, 0x007f7469d5e79bc3ull, 0x8867145a7418aa43ull, 0x590c0036ae012016ull, 0xb13643df81998301ull, 0x9d0d3ff927b26137ull }}, {{ 0xfe83060cb1865da1ull, 0x04fa8c225b0c15a3ull, 0x5406cb8888f6a69eull, 0x7a780222cc0b40e1ull, 0xec1ea6bb0fff1e0dull, 0x22847fbb8cf7cc2cull }}, {{ 0xf11e3c7eef3fa84dull, 0x31c979578e78d867ull, 0x4843f35559a2822cull, 0xc8b0155bf87088cdull, 0x3932834e9ff72c86ull, 0x592cfd5381adf9c1ull }}, {{ 0x6b2e5cf5587c9304ull, 0xf1debd6b90b8740full, 0xd2a78155805915b9ull, 0xd6e0d597b4655804ull, 0x3bf921123fa7bd43ull, 0x7bc1e54310cbc18cull }}, {{ 0x2fcfa19574ddbe26ull, 0x72b36633a734889aull, 0x3a8b0d57037ad943ull, 0x64c857ed0bf57030ull, 0x57bb4ab67c8d64a6ull, 0xd592f49ea7f58f7aull }}, {{ 0xde1c4fd690a96d7bull, 0x7b01fe04880d5605ull, 0x496e856622cc7ca2ull, 0xefd36f42779661e2ull, 0x6d50eb20dd85ee7full, 0x57bd8e328f979ac7ull }}, {{ 0xad1b1e61a69e46caull, 0xce13ec2d50855c3aull, 0xde5135fd5bfcde58ull, 0x5e425898abdfd2d6ull, 0x45292f48a73b50ffull, 0x6d678df99bec0bcaull }}, {{ 0xc30f2fd0822ec3e1ull, 0x0cc739c525359a4aull, 0xaf2c1be597e0af78ull, 0xae9775f6b6be3c64ull, 0xb39bd8d6885129f9ull, 0x460b8bc0173875e6ull }}, {{ 0x9e97de2515d3a6c7ull, 0x7fc841b3741806ebull, 0xd7b916f7eec6dab0ull, 0xd1ea9ba3236e5beeull, 0x04167861532ba3c0ull, 0xbc737580e8349b03ull }}, {{ 0x31eead72da4483c7ull, 0xfdd2910288f04534ull, 0x6d3ae5af53c48ae4ull, 0x332a145f624f9754ull, 0x28e0b3cd3fb46588ull, 0x5c829709120e0e1eull }}, {{ 0xf352c67c86ad25caull, 0xea39aa195962b409ull, 0x444cf8d945ad6cf1ull, 0xffa4cbb9d71be94cull, 0x98c706047d0bf751ull, 0x9d19e65ab48c8d2dull }}, {{ 0x813bc0dd42c379e8ull, 0x2640a4fd7ddb0863ull, 0xab01b87cb8c64173ull, 0xfc6ff54267171cfaull, 0xf7c63c2ce277a933ull, 0x2302ff8b0d7d83c7ull }}, {{ 0x0c5588a49ba2c30full, 0x7e8671e6ea8e53e3ull, 0xae1134df37be8e7full, 0xdc5f949806e721caull, 0xadbe59c0d8ac9c07ull, 0x5e1dfb6e86e725cfull }}, {{ 0x7b57566e145b9e96ull, 0xf1407305298f46deull, 0xccac10b82d7190faull, 0x9bbbcdf0450751eaull, 0xc96f818876be184eull, 0xad2bd25145077a1cull }}, {{ 0xd169604ccb9431deull, 0x6c847e339f98c4b0ull, 0xfeb8a731c66fa9cdull, 0x15560b62b249332bull, 0xde5b0f54a36cf312ull, 0xc3b6372cb24ac51full }}, {{ 0x2e1dc2fff3c9f2aaull, 0x3d2cee043bf7aee8ull, 0xf33687f1c05ca206ull, 0xd55c71daf6dbffb7ull, 0xaf8e994e62417eb4ull, 0xa51e27bef6ebb33eull }}, {{ 0xcd299dff85e37aa1ull, 0x63c14c2a57acd511ull, 0x80214f71839e543eull, 0x559c728da497fd2full, 0xdb91fd0fd68ef310ull, 0x732d8d75a5350072ull }}, {{ 0x03a02bfb3ae2ca4dull, 0xe58cf9a76cc052b2ull, 0x014d1a6f242f4a6full, 0x581c79886defe3dbull, 0x93b3e29e61957ea3ull, 0x7fc786987412047cull }}, {{ 0x2441b7d04cdbe6fdull, 0xf781c08a3f833af4ull, 0x0d03085769d8e85eull, 0x711cbf544b5ee68eull, 0xc506da2fcfd6f261ull, 0xfdcb41f488b42cddull }}, {{ 0x6a912e23009705e3ull, 0xab1185667b204d89ull, 0x821e536a227913b5ull, 0x6b1f794af1b5018cull, 0xb24485de1e6577ceull, 0xe9f0938d5709c0a9ull }}, {{ 0x29abcd5e05e63adbull, 0xaeaf3600cf43075eull, 0x152f422558bac518ull, 0x2f3abced71120f7dull, 0xf6ad3aad2ff6ae10ull, 0x2365c385666186a0ull }}, {{ 0xa0b605ac3afe4c90ull, 0xd2d81c08189e49adull, 0xd3d89575774bb2f6ull, 0xd84b61466ab49ae2ull, 0xa2c44ac3dfa2cca1ull, 0x61f9a335ffcf4249ull }}, {{ 0x471c38ba4deefda0ull, 0x3c711850f62ee0c8ull, 0x4675d696a8f4fda4ull, 0x72f1ccc02b0e0cdcull, 0x5baaeba6bc5bfe52ull, 0xd3c0601bfe1896e0ull }}, {{ 0xc71a37470b55e842ull, 0x5c6af3299dd4c7d2ull, 0xc09a61e29991e86aull, 0x7d71ff81ae8c809aull, 0x94ad34835b97ef38ull, 0x4583c117ecf5e4c3ull }}, {{ 0xc70628c6715b128full, 0x9c2d7fa02a4fce3bull, 0x8607d2d9ffb31427ull, 0xe673fb10d17d060bull, 0xcec40d2193ef5834ull, 0xb7258aef419aefa3ull }}, {{ 0xc63d97c06d8eb99bull, 0x19c6fc41a71e0e55ull, 0x3c4e3c83fcfec98cull, 0x0087cea82ee23c73ull, 0x13a8834fc7597211ull, 0x27776d58900d5c66ull }}, {{ 0xbe67ed844793400aull, 0x01c5da90872c8f59ull, 0x5b0e5d27e1f3df79ull, 0x054e1291d4d65c80ull, 0xc495211dc97e74aaull, 0x8aaa4575a0859bfcull }}, {{ 0x700f472acbc08064ull, 0x11ba89a547bd9981ull, 0x8e8fa38ed386babaull, 0x350cb9b2505f9d03ull, 0xadd34b29def08ea4ull, 0x6aa6b698453817dfull }}, {{ 0x6098c7abf58503e5ull, 0xb1496074cd67ff0eull, 0x919c639443434b44ull, 0x127f40f723bc2223ull, 0xca40efa2b565926aull, 0x2a8321f2b430eebcull }}, {{ 0xc5f7ccb7973226f3ull, 0xecddc490060ff68full, 0xb01be3caa0a0f0aeull, 0xb8f889a765595563ull, 0xe6895c5b15f7b824ull, 0xa91f537b09e9535full }}, {{ 0xbbadff2be7f58580ull, 0x40a9ada03c9fa19dull, 0xe116e5ea464966d5ull, 0x39b56089f57d55e4ull, 0x015d9b8edbad316full, 0x9b3942ce631d41bfull }}, {{ 0x54cbf7b70f973704ull, 0x86a0c8425e3c5029ull, 0xcae4fb26bede0454ull, 0x4115c56396e55af0ull, 0x0da8139494c3ee58ull, 0x103c9c0fdf249176ull }}, {{ 0x4ff7ad269be82629ull, 0x4247d297ae5b219dull, 0xecf1cf8374ac2b4dull, 0x8ad9b5e3e4f58d67ull, 0x8890c3cdcfa74f72ull, 0xa25e189eb76dae9cull }}, {{ 0x1facc38217117d98ull, 0x96ce39eccf8f5025ull, 0x41721b228eb9b104ull, 0x6c811ae6f197860full, 0x55a7a60a1c891a79ull, 0x57acf6332a48d21dull }}, {{ 0x3cbfa314e6aee7efull, 0xe40e43401b992173ull, 0x8e750f599340ea2dull, 0x3d0b0d056feb3c98ull, 0x588c7c651d5b08beull, 0x6cc19dffa6d83525ull }}, {{ 0x5f7c5ed102d50f52ull, 0xe88ea08113fb4e80ull, 0x9092997fc08925caull, 0x626e82365f305df5ull, 0x757cdbf3258e576eull, 0x3f902bfc84721375ull }}, {{ 0xbadbb42a1c529933ull, 0x1592450ac7d11103ull, 0xa5b9fefd855b79edull, 0xd851161fb7e3ab97ull, 0x96e0977f778f6a4full, 0x7ba1b7dd2c74c296ull }}, {{ 0x4c9509a51b39fbfcull, 0xd7b6b26bce2aaa25ull, 0x7943f5e73592c342ull, 0x732add3d2ee4b3ecull, 0xe4c5eafaab9a271eull, 0xd4512ea3bc8f99e1ull }}, {{ 0xfdd260731043d7dcull, 0x6d22f8360daaa574ull, 0xbca79b0817bba09cull, 0x7faca463d4ef073cull, 0xefbb2dcab4058730ull, 0x4b2bd2655d9c02d2ull }}, {{ 0xea37c47ea2a66e97ull, 0x435db21c88aa7691ull, 0x5e8c0e50ed54461cull, 0xfcbe6be65156485full, 0x5d4fc9eb083747e4ull, 0xefb637f5a8181c3dull }}, {{ 0x262dacf25a8051e6ull, 0xa1a8f51d56a8a1b3ull, 0xb1788f29454abd1aull, 0xdf7036ff2d5ed3b9ull, 0xa51de32e5228cef1ull, 0x5d1e2f9890f11a65ull }}, {{ 0x7dc8c177890332f8ull, 0x50999325629650ffull, 0xeeb5979cb4eb630aull, 0xba6225f7c5b44540ull, 0x732adfcf35981572ull, 0xa32ddbf5a96b07f8ull }}, {{ 0xe9d78eab5a1ffdafull, 0x25ffbf75d9df29faull, 0x5317ec1f1131de67ull, 0x47d57badb90ab489ull, 0x7facbe1817f0d67bull, 0x5fca97989e2e4fb4ull }}, {{ 0x226b92b1853fe8d7ull, 0x7bfd7a9a82b7a3cdull, 0x3eef3936abf2b007ull, 0xce56d4c93a6b0d5dull, 0xfcbf6cf0ef6860d0ull, 0xbde9ebf62dcf1d0cull }}, {{ 0x5833baef347f1865ull, 0xd7e6ca091b2c6603ull, 0x75583c22b77ae04aull, 0x0f644fdc482e85a4ull, 0xdf7a41695a13c828ull, 0x6b23379dca172281ull }}, {{ 0x72054d580cf6f3f1ull, 0x6f03e45b0fbbfc21ull, 0x9572595b2accc2ecull, 0x99eb1e9ad1d1386cull, 0xbac68e1d84c5d190ull, 0x2f602c29e4e75912ull }}, {{ 0x7435057081a5876eull, 0x5626eb8e9d57d94eull, 0xd6777d8fabff9d3cull, 0x032f320c322c343dull, 0x4bc18d272fba2fa6ull, 0xd9c1b9a2f1097abbull }}, {{ 0x8a12366510774a4dull, 0x5d853392256e7d10ull, 0x60aae79cb7fc245bull, 0x1fd7f479f5ba0a6aull, 0xf58f8387dd45dc7cull, 0x8191405d6a5ecb50ull }}, {{ 0x64b61ff2a4a8e704ull, 0xa73403b57650e2a5ull, 0xc6ad0c1f2fd96b91ull, 0x3e6f8cc399446827ull, 0x979b234ea4ba9cd9ull, 0x0fac83a627b3f129ull }}, {{ 0xef1d3f7a6e990625ull, 0x880825169f28da75ull, 0xc2c27937de7e33b0ull, 0x705b7fa3fcac118dull, 0xec0f61126f4a207cull, 0x9cbd247d8d076b9full }}, {{ 0x57247ac851fa3d71ull, 0x505172e23798889bull, 0x9b98bc2eb0ee04e5ull, 0x6392fc67deb8af89ull, 0x3899cab858e544dcull, 0x1f636ce7824a343full }}, {{ 0x676ccbd333c66669ull, 0x232e7cd62bf55611ull, 0x13f759d2e94c30f5ull, 0xe3bddc0eb336db60ull, 0x3601eb3378f4b09bull, 0x39e2410b16e60a78ull }}, {{ 0x0a3ff64005c00017ull, 0x5fd0e05db7955caeull, 0xc7a9823d1cf9e993ull, 0xe56a9893002491c0ull, 0x1c133002b98ee616ull, 0x42d68a6ee4fc68b2ull }}, {{ 0x667f9e80398000e5ull, 0xbe28c3a92bd59eccull, 0xcc9f166321c31fc1ull, 0xf629f5be016db187ull, 0x18bfe01b3f94fce4ull, 0x9c616854f1dc16f5ull }}, {{ 0x00fc31023f0008f2ull, 0x6d97a49bb65833fcull, 0xfe36dfdf519f3d91ull, 0x9da3996c0e48ef4dull, 0xf77ec1107bd1e0f1ull, 0x1bce13517298e592ull }}, {{ 0x09d9ea1676005974ull, 0x47ec6e151f7207d8ull, 0xee24beb9303867aeull, 0x2863fe388ed9590bull, 0xaaf38aa4d632c970ull, 0x160cc12e79f8f7bdull }}, {{ 0x628324e09c037e8aull, 0xcf3c4cd33a744e70ull, 0x4d6f733be2340cceull, 0x93e7ee35947d7a77ull, 0xad836a705dfbde61ull, 0xdc7f8bd0c3b9ad68ull }}, {{ 0xd91f70c61822f167ull, 0x185b0040488b1063ull, 0x065a8056d6088014ull, 0xc70f4e17cce6c8a9ull, 0xc7222863abd6afcfull, 0x9cfb7627a540c616ull }}, {{ 0x7b3a67bcf15d6e0aull, 0xf38e0282d56ea3e6ull, 0x3f8903645c5500c8ull, 0xc6990cee0103d69aull, 0xc75593e4b662de1dull, 0x21d29d8c7487bce3ull }}, {{ 0xd0480d616da64c65ull, 0x838c191c56526700ull, 0x7b5a21eb9b5207d9ull, 0xc1fa814c0a266206ull, 0xc957c6ef1fdcad29ull, 0x523a277c8d4d60e5ull }}, {{ 0x22d085ce487efbf0ull, 0x2378fb1b5f380608ull, 0xd185533411344e7full, 0x93c90cf8657fd440ull, 0xdd6dc5573e9ec3a1ull, 0x36458add8505c8f9ull }}, {{ 0x5c253a0ed4f5d75eull, 0x62b9cf11b8303c51ull, 0x2f354008ac0b10f7ull, 0xc5da81b3f6fe4a88ull, 0xa649b5687233a44full, 0x1eb76ca73239d9c2ull }}, {{ 0x99744494519a69aaull, 0xdb4216b131e25b2dull, 0xd8148056b86ea9a9ull, 0xba891107a5eee951ull, 0x7ee1161476046b1dull, 0x332a3e87f642819aull }}, {{ 0xfe8aadcb300820a2ull, 0x9094e2ebf2d78fc7ull, 0x70cd03633452a0a2ull, 0x495aaa4c7b551d32ull, 0xf4cadccc9c2c2f29ull, 0xffa6714f9e991008ull }}, {{ 0xf16ac9efe0514656ull, 0xa5d0dd377c6b9dcfull, 0x680221e00b3a4659ull, 0xdd8aa6fcd15323f8ull, 0x8fec9ffe19b9d79cull, 0xfc806d1c31faa059ull }}, {{ 0x6e2be35ec32cbf5cull, 0x7a28a42adc342a1full, 0x101552c07046bf80ull, 0xa76a85e02d3f67b4ull, 0x9f3e3fed01426c20ull, 0xdd044319f3ca437full }}, {{ 0x4db6e1b39fbf7997ull, 0xc59669ac9a09a53aull, 0xa0d53b8462c37b04ull, 0x8a293ac1c47a0d08ull, 0x386e7f420c983946ull, 0xa22a9f0385e6a2fcull }}, {{ 0x0924d1043d7abfe6ull, 0xb7e020be04607447ull, 0x4854532bdba2ce2full, 0x659c4b91acc48256ull, 0x3450f8947df23cc1ull, 0x55aa36233b025ddaull }}, {{ 0x5b702a2a66cb7efcull, 0x2ec1476c2bc48ac6ull, 0xd34b3fb6945c0dddull, 0xf81af3b0bfad175eull, 0x0b29b5cceb765f8dull, 0x58a61d604e17aa86ull }}, {{ 0x9261a5a803f2f5dbull, 0xd38cca39b5ad6bbfull, 0x40f07d21cb988aa3ull, 0xb10d84e77cc2e9b4ull, 0x6fa11a01329fbb8bull, 0x767d25c30ceca93cull }}, {{ 0xb7d07890277d9a8bull, 0x437fe64118c6357bull, 0x8964e351f3f56a66ull, 0xea87310adf9d210aull, 0x5c4b040bfa3d5374ull, 0xa0e3799e813e9c5cull }}, {{ 0x2e24b5a18ae8096dull, 0xa2fefe8af7be16d5ull, 0x5df0e133879627feull, 0x2947ea6cbc234a69ull, 0x9aee2877c6654291ull, 0x48e2c0310c721b9bull }}, {{ 0xcd6f184f6d105e3full, 0x5df5f16dad6ce453ull, 0xab68cc034bdd8ff2ull, 0x9ccf283f5960e81dull, 0x0d4d94adbff499abull, 0xd8db81ea7c751414ull }}, {{ 0x0656f31a42a3ae79ull, 0xab9b6e48c640eb46ull, 0xb217f820f6a79f77ull, 0x201792797dc91128ull, 0x8507cec97f8e00b4ull, 0x78931328dc92c8c8ull }}, {{ 0x3f657f069a64d0bdull, 0xb4124ed7be8930bcull, 0xf4efb149a28c3aacull, 0x40ebb8bee9daab96ull, 0x324e13defb8c0709ull, 0xb5bebf989dbbd7d5ull }}, {{ 0x79f6f64207f02764ull, 0x08b7146d715be75aull, 0x915cece0597a4abfull, 0x89353775228ab3e5ull, 0xf70cc6b5d378465cull, 0x19737bf629566e53ull }}, {{ 0xc3a59e944f6189ecull, 0x5726cc466d970988ull, 0xada140c37ec6eb76ull, 0x5c142a93596b06f7ull, 0xa67fc31a42b2bf9dull, 0xfe82d79d9d604f47ull }}, {{ 0xa47831cb19cf633cull, 0x6783fac047e65f57ull, 0xc84c87a2f3c5329full, 0x98c9a9c17e2e45acull, 0x80fd9f069afb7c25ull, 0xf11c6c2825c318ccull }}, {{ 0x6cb1f1ef0219e05bull, 0x0b27cb82ceffb96cull, 0xd2fd4c5d85b3fa3aull, 0xf7e0a18eedceb8bfull, 0x09e836420dd2d977ull, 0x6b1c3991799ef7fdull }}, {{ 0x3ef373561502c389ull, 0x6f8df31c15fd3e3cull, 0x3de4fba73907c644ull, 0xaec64f954a13377eull, 0x63121e948a3c7eafull, 0x2f1a3faec035afe2ull }}, {{ 0x7582815cd21ba35bull, 0x5b8b7f18dbe46e5aull, 0x6af1d4883a4dbeacull, 0xd3bf1bd4e4c02aeeull, 0xdeb531cd665cf2dcull, 0xd7067cd38218ded7ull }}, {{ 0x97190da03514618bull, 0x9372f6f896ec4f88ull, 0x2d724d52470972bbull, 0x45771650ef81ad50ull, 0xb313f205ffa17ca0ull, 0x6640e04314f8b46eull }}, {{ 0xe6fa884212cbcf6eull, 0xc27da5b5e53b1b55ull, 0xc6770536c65e7b53ull, 0xb6a6df295b10c521ull, 0xfec7743bfc4ede42ull, 0xfe88c29ed1b70c52ull }}, {{ 0x05c95294bbf61a4cull, 0x98e8791af44f115bull, 0xc0a63423bfb0d145ull, 0x2284b79d8ea7b351ull, 0xf3ca8a57db14ae9bull, 0xf1579a3431267b3dull }}, {{ 0x39dd39cf579d06f7ull, 0xf914bb0d8b16ad8eull, 0x867e09657ce82cb7ull, 0x592f2c27928d0131ull, 0x85e9676e8eced20full, 0x6d6c0609eb80d06bull }}, {{ 0x42a442196c2245a3ull, 0xbacf4e876ee2c78eull, 0x40ec5df6e111bf2full, 0x7bd7b98bb9820befull, 0x3b1e0a5194143499ull, 0x46383c6333082433ull }}, {{ 0x9a6a94fe3956b861ull, 0x4c19114a54dbcb8eull, 0x893baba4cab177ddull, 0xd66d3f753f147758ull, 0x4f2c672fc8ca0dfeull, 0xbe325bdffe516a00ull }}, {{ 0x0829d1ee3d6333c8ull, 0xf8faace75095f392ull, 0x5c54b46feaeeaea4ull, 0x60447a9476cca975ull, 0x17bc07ddd7e48bf4ull, 0x6df796bfef2e2403ull }}, {{ 0x51a2334e65e005d1ull, 0xb9cac10925db83b4ull, 0x9b4f0c5f2d52d271ull, 0xc2acc9cca3fe9e95ull, 0xed584eaa6eed778bull, 0x4babe37f57cd681eull }}, {{ 0x3056010ffac03a2cull, 0x41eb8a5b7a93250bull, 0x11167bb7c53c3871ull, 0x9abfe1fe67f231d8ull, 0x457312a85546ab75ull, 0xf4b6e2f96e061135ull }}, {{ 0xe35c0a9fcb8245b8ull, 0x93336792c9bf726full, 0xaae0d52db45a346cull, 0x0b7ed3f00f75f270ull, 0xb67eba9354c2b298ull, 0x8f24ddbe4c3cac14ull }}, {{ 0xe1986a3df316b935ull, 0xc0020bbbe17a785eull, 0xacc853c90b860c3dull, 0x72f447609a9b7866ull, 0x20f349c14f9af9f0ull, 0x9770a96efa5eb8cfull }}, {{ 0xcff4266b7ee33c12ull, 0x80147556cec8b3b4ull, 0xbfd345da733c7a69ull, 0x7d8ac9c60a12b402ull, 0x4980e18d1c0dc364ull, 0xea669e55c7b33817ull }}, {{ 0x1f898032f4e058b0ull, 0x00cc956413d70510ull, 0x7e40ba88805cc81full, 0xe76be1bc64bb081bull, 0xdf08cf831889a1ecull, 0x28022f59cd0030e8ull }}, {{ 0x3b5f01fd90c376e2ull, 0x07fdd5e8c66632a1ull, 0xee874955039fd136ull, 0x0a36d15bef4e5112ull, 0xb6581b1ef5605341ull, 0x9015d9820201e918ull }}, {{ 0x51b613e7a7a2a4d6ull, 0x4fea5b17bffdfa4cull, 0x5148dd52243e2c1cull, 0x66242d97590f2abdull, 0x1f710f3595c3408aull, 0xa0da7f1414131af7ull }}, {{ 0x311cc70c8c5a7059ull, 0x1f278eed7febc6fbull, 0x2cd8a5356a6db91bull, 0xfd69c7e97a97ab65ull, 0x3a6a9817d9a08567ull, 0x4888f6c8c8bf0da7ull }}, {{ 0xeb1fc67d7b886375ull, 0x378b9546ff35c5cfull, 0xc076741628493b0full, 0xe621cf1ec9ecb1f3ull, 0x4829f0ee8045360full, 0xd559a3d7d7768888ull }}, {{ 0x2f3dc0e6d353e295ull, 0x2b73d4c5f819ba1full, 0x84a088dd92dc4e98ull, 0xfd521733e33ef385ull, 0xd1a3695102b41c9eull, 0x5580666e6aa15552ull }}, {{ 0xd86989044146d9d6ull, 0xb2864fbbb1014537ull, 0x2e4558a7bc9b11f1ull, 0xe534e806e0758337ull, 0x30621d2a1b091e35ull, 0x570400502a4d553cull }}, {{ 0x741f5a2a8cc48257ull, 0xf93f1d54ea0cb42eull, 0xceb5768d5e0eb370ull, 0xf4111044c4972027ull, 0xe3d523a50e5b2e1aull, 0x66280321a7055459ull }}, {{ 0x893985a97fad1768ull, 0xbc772551247f09d0ull, 0x1316a185ac930269ull, 0x88aaa2afade7418eull, 0xe65364728f8fcd0dull, 0xfd901f5086354b82ull }}, {{ 0x5c3f389efcc2ea11ull, 0x5ca7752b6cf66225ull, 0xbee24f38bdbe1821ull, 0x56aa5adccb088f8cull, 0xff41ec799b9e0287ull, 0xe7a139253e14f31cull }}, {{ 0x9a783635df9d24a5ull, 0x9e8a93b2419fd575ull, 0x74d71837696cf14dull, 0x62a78c9fee559b7full, 0xf8933cc0142c1949ull, 0x0c4c3b746cd17f21ull }}, {{ 0x08b21e1abc236e75ull, 0x3169c4f6903e5698ull, 0x9066f22a1e416d08ull, 0xda8b7e3f4f5812faull, 0xb5c05f80c9b8fcddull, 0x7afa528c402ef753ull }}, {{ 0x56f52d0b5962508dull, 0xee21b1a1a26f61f0ull, 0xa40575a52e8e4251ull, 0x8972ee791970bdc9ull, 0x1983bb07e139e0aaull, 0xcdc7397a81d5a945ull }}, {{ 0x6593c2717dd72586ull, 0x4d50f0505859d363ull, 0x68369873d18e9733ull, 0x5e7d50bafe6769e0ull, 0xff254e4ecc42c6a9ull, 0x09c83ec912589cb2ull }}, {{ 0xf7c5986eea677739ull, 0x05296323738241e1ull, 0x1221f4862f91e801ull, 0xb0e5274df00a22c4ull, 0xf7750f13fa9bc29dull, 0x61d273dab7761efdull }}, {{ 0xadb7f455280aa836ull, 0x339ddf62831692d3ull, 0xb5538d3ddbb3100aull, 0xe8f3890b60655ba8ull, 0xaa9296c7ca159a28ull, 0xd238868b2a9d35ebull }}, {{ 0xc92f8b53906a921cull, 0x042ab9d91ee1bc44ull, 0x1543846a94fea066ull, 0x19835a71c3f59497ull, 0xa9b9e3cde4d80599ull, 0x3635416faa241b34ull }}, {{ 0xdbdb7143a429b51cull, 0x29ab427b34d15aafull, 0xd4a32c29d1f243fcull, 0xff218871a797cde6ull, 0xa142e60af07037faull, 0x1e148e5ca569100eull }}, {{ 0x96926ca469a1131bull, 0xa0b098d0102d8adeull, 0x4e5fb9a23376a7d9ull, 0xf74f54708bee0b04ull, 0x4c9cfc6d64622fcdull, 0x2ccd8f9e761aa092ull }}, {{ 0xe1b83e6c204abf12ull, 0x46e5f820a1c76cb1ull, 0x0fbd405602a28e80ull, 0xa9194c65774c6e2bull, 0xfe21dc45ebd5de0bull, 0xc0079c309d0a45b6ull }}, {{ 0xd132703942eb76b2ull, 0xc4fbb14651ca3ef2ull, 0x9d64835c1a599102ull, 0x9afcfbf6a8fc4daeull, 0xed529abb365aac74ull, 0x804c19e62266b925ull }}, {{ 0x2bf8623c9d32a2f5ull, 0xb1d4ecbf31e6757cull, 0x25ed2199077faa1bull, 0x0de1d7a299db08d2ull, 0x453a0b501f8abc8eull, 0x02f902fd58033b7bull }}, {{ 0xb7b3d65e23fa5d96ull, 0xf2513f77f30096d9ull, 0x7b434ffa4afca514ull, 0x8ad26c5a028e5835ull, 0xb44471213b6b5d8cull, 0x1dba1de5702052d0ull }}, {{ 0x2d065fad67c7a7deull, 0x772c7aaf7e05e481ull, 0xd0a11fc6edde72d1ull, 0x6c383b84198f7216ull, 0x0aac6b4c5231a77dull, 0x29452af661433c27ull }}, {{ 0xc23fbcc60dcc8eb0ull, 0xa7bccadaec3aed0bull, 0x264b3dc54ab07c2eull, 0x3a325328ff9a74e4ull, 0x6abc30fb35f08ae6ull, 0x9cb3ad9fcca05986ull }}, {{ 0x967d5fbc89fd92e2ull, 0x8d5fec8d3a4d4275ull, 0x7ef069b4eae4d9d2ull, 0x45f73f99fc0890e9ull, 0x2b59e9d01b656cfeull, 0x1f04c83dfe437f40ull }}, {{ 0xe0e5bd5d63e7bcd0ull, 0x85bf3d8447049897ull, 0xf56421112cf08239ull, 0xbba87c03d855a91eull, 0xb183222111f641eeull, 0x362fd26beea2f881ull }}, {{ 0xc8f965a5e70d6020ull, 0x3978672ac62df5eeull, 0x95e94aabc165163full, 0x5494d82673589b35ull, 0xef1f554ab39e9353ull, 0x1dde3837525db510ull }}, {{ 0xd9bdf87b0685c145ull, 0x3eb407abbdcb9b53ull, 0xdb1ceab58df2de78ull, 0x4dd0718081761017ull, 0x573954eb0431c141ull, 0x2aae322937a912a9ull }}, {{ 0x816bb4ce41398cb0ull, 0x73084cb569f41146ull, 0x8f212b178b7cb0b2ull, 0x0a246f050e9ca0eeull, 0x683d512e29f18c8dull, 0xaacdf59c2c9aba9dull }}, {{ 0x0e35100e8c3f7ee3ull, 0x7e52ff162388acc1ull, 0x974baeeb72dee6f8ull, 0x656c5632921e4951ull, 0x12652bcda36f7d82ull, 0xac0b9819be0b4a26ull }}, {{ 0x8e12a0917a7af4e0ull, 0xef3df6dd6356bf8aull, 0xe8f4d5327cb505b4ull, 0xf63b5df9b52edd2full, 0xb7f3b608625ae717ull, 0xb873f1016c70e57cull }}, {{ 0x8cba45aec8cd90c1ull, 0x586ba4a5e1637b69ull, 0x199053f8df123911ull, 0x9e51abc113d4a3dfull, 0x2f851c53d78d06efull, 0x34876a0e3c68f6dfull }}, {{ 0x7f46b8d3d807a785ull, 0x74346e7acde2d21full, 0xffa347b8b6b63aadull, 0x2f30b58ac64e66b6ull, 0xdb331b466b82455cull, 0x0d4a248e5c19a4b7ull }}, {{ 0xf8c33846704c8b33ull, 0x8a0c50cc0adc353aull, 0xfc60cd37231e4ac6ull, 0xd7e7176bbf100325ull, 0x8fff10c03316b599ull, 0x84e56d8f99006f2eull }}, {{ 0xb7a032c062fd6ff9ull, 0x647b27f86c9a144dull, 0xdbc804275f2eebc1ull, 0x6f06ea3576a01f7bull, 0x9ff6a781fee31802ull, 0x30f6479bfa0457d1ull }}, {{ 0x2c41fb83dde65fbdull, 0xeccf8fb43e04cb09ull, 0x95d02989b7d5358dull, 0x56452616a2413ad6ull, 0x3fa28b13f4def018ull, 0xe99ecc17c42b6e30ull }}, {{ 0xba93d326aaffbd64ull, 0x401b9d0a6c2fee5bull, 0xda219f612e54178bull, 0x5eb37ce2568c4c61ull, 0x7c596ec790b560f3ull, 0x2033f8eda9b24de2ull }}, {{ 0x49c63f82adfd65e9ull, 0x8114226839df4f95ull, 0x855039cbcf48eb70ull, 0xb302e0d7617afbd2ull, 0xdb7e53cba715c981ull, 0x4207b948a0f70ad8ull }}, {{ 0xe1be7b1acbe5fb1eull, 0x0ac9581242b91bd4ull, 0x352241f618d93265ull, 0xfe1cc869cecdd639ull, 0x92ef45f486d9df10ull, 0x944d3cd649a66c78ull }}, {{ 0xd170cf0bf6fbcf2full, 0x6bdd70b69b3b1650ull, 0x1356939cf87bf7f2ull, 0xed1fd422140a5e3cull, 0xbd58bb8d4482b6a9ull, 0xcb04605ee0803cb5ull }}, {{ 0x2e681677a5d617d7ull, 0x36a66722104edf28ull, 0xc161c421b4d7af78ull, 0x433e4954c867ae58ull, 0x65775384ad1b22a3ull, 0xee2bc3b4c5025f19ull }}, {{ 0xd010e0ac7a5cee6aull, 0x22800754a314b791ull, 0x8dd1a951106cdab2ull, 0xa06edd4fd40ccf77ull, 0xf6a9432ec30f5a60ull, 0x4db5a50fb217b6fdull }}, {{ 0x20a8c6bcc7a15020ull, 0x5900494e5ecf2bb2ull, 0x8a309d2aa4408af5ull, 0x4454a51e48801aabull, 0xa29c9fd39e9987c6ull, 0x0918729cf4ed25ebull }}, {{ 0x4697c35fcc4d2141ull, 0x7a02dd0fb417b4f5ull, 0x65e623aa6a856d95ull, 0xab4e732ed5010ab3ull, 0x5a1e3e4431ff4dbeull, 0x5af47a2191437b34ull }}, {{ 0xc1eda1bdfb034c8bull, 0xc41ca29d08ed1194ull, 0xfafd64a8293647d6ull, 0xb1107fd4520a6b01ull, 0x852e6ea9f3f90972ull, 0x8d8cc54faca2d00bull }}, {{ 0x9348516bce20fd6cull, 0xa91e5a225942afcfull, 0xcde5ee919c1ece63ull, 0xeaa4fe4b34682e13ull, 0x33d052a387ba5e7aull, 0x877fb51cbe5c2073ull }}, {{ 0xc0d32e360d49e63aull, 0x9b2f85577c9ade1bull, 0x0afb51b019340fe4ull, 0x2a71eef00c11ccc6ull, 0x06233a634d47b0cdull, 0x4afd131f6f994480ull }}, {{ 0x883fce1c84e2fe41ull, 0x0fdb356ade0cad15ull, 0x6dd130e0fc089eeeull, 0xa873556078b1ffbcull, 0x3d6047e104cce803ull, 0xede2bf3a5bfcad00ull }}, {{ 0x527e0d1d30ddee8aull, 0x9e90162cac7ec2d7ull, 0x4a2be8c9d856354cull, 0x948155c4b6f3fd5cull, 0x65c2ceca30011024ull, 0x4adb784797dec202ull }}, {{ 0x38ec8323e8ab5160ull, 0x31a0ddbebcf39c69ull, 0xe5b717e2735e14feull, 0xcd0d59af2587e59aull, 0xf99c13e5e00aa16dull, 0xec92b2cbeeb39417ull }}, {{ 0x393d1f6716b12dbcull, 0xf048a97361841c1cull, 0xf926eed881acd1edull, 0x028580d7774ef80cull, 0xc018c6fac06a4e4aull, 0x3dbafbf75303c8efull }}, {{ 0x3c633a06e2ebc957ull, 0x62d69e81cf29191aull, 0xbb85547510c0334bull, 0x1937086aa915b081ull, 0x80f7c5cb84270ee4ull, 0x694dd7a93e25d95dull }}, {{ 0x5be04444dd35dd63ull, 0xdc623112179afb06ull, 0x53354c92a78200f1ull, 0xfc26542a9ad8e511ull, 0x09adb9f3298694e8ull, 0x1d0a6c9c6d7a7da7ull }}, {{ 0x96c2aab0a41aa5ddull, 0x9bd5eab4ec0dce3full, 0x4014fdba8b140972ull, 0xd97f49aa0c78f2adull, 0x60c9437f9f41d119ull, 0x22683e1c46c8e886ull }}, {{ 0xe39aaae6690a7aa3ull, 0x165b2b11388a0e7bull, 0x80d1e9496ec85e7aull, 0x7ef8e0a47cb97ac4ull, 0xc7dca2fc38922b02ull, 0x58126d1ac3d9153full }}, {{ 0xe40aad001a68ca60ull, 0xdf8faeac356490d6ull, 0x08331cde53d3b0c4ull, 0xf5b8c66cdf3ecbadull, 0xce9e5dda35b5ae18ull, 0x70b8430ba67ad47dull }}, {{ 0xe86ac2010817e7c5ull, 0xbb9cd2ba15eda864ull, 0x51ff20af4644e7b0ull, 0x9937c040b873f4c2ull, 0x122faa861918ccf9ull, 0x67329e7480cc4ceaull }}, {{ 0x142b940a50ef0dafull, 0x54203b44db4893f1ull, 0x33f746d8beb10ce7ull, 0xfc2d828734878f97ull, 0xb5dca93cfaf801bfull, 0x07fa308d07fb0124ull }}, {{ 0xc9b3c867295688d8ull, 0x494250b090d5c76aull, 0x07a8c47772ea8109ull, 0xd9c719480d4b9be8ull, 0x1a9e9c61cdb0117full, 0x4fc5e5824fce0b6full }}, {{ 0xe105d4079d61586dull, 0xdc9726e5a859ca2bull, 0x4c97acaa7d290a5cull, 0x81c6fcd084f41710ull, 0x0a321bd208e0aefeull, 0x1dbaf7171e0c7257ull }}, {{ 0xca3a484c25cd7441ull, 0x9de784f89381e5b6ull, 0xfdecbea8e39a67a0ull, 0x11c5e0253188e6a2ull, 0x65f5163458c6d5f1ull, 0x294da6e72c7c7766ull }}, {{ 0xe646d2f97a068a87ull, 0x2b0b31b5c312f923ull, 0xeb3f7298e4080c46ull, 0xb1bac173ef59025dull, 0xfb92de0b77c45b6aull, 0x9d088507bcdca9ffull }}, {{ 0xfec43dbec441694aull, 0xae6ff1199ebdbb66ull, 0x307a79f8e8507abdull, 0xf14b8e87597a17abull, 0xd3bcac72adab922aull, 0x2255324d609ea3ffull }}, {{ 0xf3aa6973aa8e1cdfull, 0xd05f6b0033695205ull, 0xe4c8c3b91324cb68ull, 0x6cf391497ec4ecafull, 0x455ebc7ac8b3b5adull, 0x5753f705c63267feull }}, {{ 0x84a81e84a98d20b9ull, 0x23ba2e02021d343bull, 0xefd7a53abf6ff218ull, 0x4183acdef3b13edeull, 0xb5b35ccbd70518c6ull, 0x6947a639bdf80feeull }}, {{ 0x2e91312e9f83473bull, 0x6545cc1415240a53ull, 0x5e6c744b7a5f74f1ull, 0x8f24c0b584ec74b5ull, 0x19019ff66632f7beull, 0x1ccc7e416bb09f53ull }}, {{ 0xd1abebd23b20c851ull, 0xf4b9f8c8d368673full, 0xb03c8af2c7ba916dull, 0x976f8717313c8f15ull, 0xfa103f9ffdfdad71ull, 0x1ffcee8e34e6393eull }}, {{ 0x30b736364f47d32bull, 0x8f43b7d84214087eull, 0xe25d6d7bcd49ae4bull, 0xea5b46e7ec5d96d8ull, 0xc4a27c3febe8c66full, 0x3fe1518e10fe3c75ull }}, {{ 0xe7281e1f18ce3faeull, 0x98a52e7294c854edull, 0xd7a646d604e0cef3ull, 0x2790c50f3ba7e478ull, 0xae58da7f3717c05full, 0x7ecd2f8ca9ee5c99ull }}, {{ 0x07912d36f80e7cceull, 0xf673d079cfd3514bull, 0x6c7ec45c30c81583ull, 0x8ba7b298548eecb8ull, 0xcf7888f826ed83b7ull, 0xf403db7ea34f9e00ull }}, {{ 0x4babc425b090e00dull, 0xa08624c21e412ceeull, 0x3cf3ab99e7d0d727ull, 0x748cf9f34d953f34ull, 0x1ab559b18547252bull, 0x882692f2611c2c08ull }}, {{ 0xf4b5a978e5a8c07dull, 0x453d6f952e8bc14eull, 0x6184b4030e28678cull, 0x8d81c38107d4780aull, 0x0b1580ef34c773b2ull, 0x5181bd77cb19b851ull }}, {{ 0x8f189eb8f89784e4ull, 0xb4665bd3d1758d15ull, 0xcf2f081e8d940b7aull, 0x8711a30a4e4cb067ull, 0x6ed709580fca84f9ull, 0x2f1166adef01332aull }}, {{ 0x96f63339b5eb30e9ull, 0x0bff96462e9782d7ull, 0x17d6513187c872cbull, 0x46b05e670efee40eull, 0x54665d709de931bfull, 0xd6ae02cb560bffa8ull }}, {{ 0xe59e00411b2fe91aull, 0x77fbdebdd1eb1c6bull, 0xee5f2bef4dd47beeull, 0xc2e3b00695f4e88cull, 0x4bffa6662b1bf178ull, 0x62cc1bf15c77fc93ull }}, {{ 0xf82c028b0fdf1b07ull, 0xafd6b36a332f1c36ull, 0x4fb7b7590a4cd750ull, 0x9ce4e041db911581ull, 0xf7fc7ffdaf176eb7ull, 0xdbf9176d9cafddc0ull }}, {{ 0xb1b8196e9eb70e45ull, 0xde630225ffd71a25ull, 0x1d2d297a67006926ull, 0x20f0c29293aad70dull, 0xafdcffe8d6ea532cull, 0x97baea481edea989ull }}, {{ 0xf130fe5233268eb7ull, 0xafde157bfe670578ull, 0x23c39ec806041b84ull, 0x496799b9c4ac6683ull, 0xdea1ff1865273fb9ull, 0xed4d26d134b29f60ull }}, {{ 0x6be9ef35ff819324ull, 0xdeacd6d7f00636b9ull, 0x65a433d03c29132eull, 0xde0c0141aebc011full, 0xb253f6f3f3887d3cull, 0x4503842c0efa39c8ull }}, {{ 0x3723581bfb0fbf6aull, 0xb2c0646f603e233eull, 0xf86a0622599abfd4ull, 0xac780c90d3580b39ull, 0xf747a5878354e460ull, 0xb22329b895c641d6ull }}, {{ 0x27617117ce9d7a21ull, 0xfb83ec59c26d606eull, 0xb4243d57800b7e4eull, 0xbcb07da841707043ull, 0xa8cc774b2150ebc6ull, 0xf55fa135d9be9265ull }}, {{ 0x89ce6aee1226c549ull, 0xd3273b819845c44dull, 0x096a656b0072ef15ull, 0x5ee4e8928e6462a5ull, 0x97fca8ef4d2935c3ull, 0x95bc4c1a8171b7f8ull }}, {{ 0x62102d4cb583b4daull, 0x3f88530ff2b9ab07ull, 0x5e27f62e047d56daull, 0xb4f115b98febda72ull, 0xefde9959039c19a1ull, 0xd95af9090e712fb5ull }}, {{ 0xd4a1c4ff17251083ull, 0x7b533e9f7b40ae49ull, 0xad8f9dcc2ce56486ull, 0x116ad93f9f368877ull, 0x5eb1fd7a24190051ull, 0x7d8dba5a906bdd1bull }}, {{ 0x4e51b1f6e772a521ull, 0xd140723ad086cee2ull, 0xc79c29f9c0f5ed40ull, 0xae2c7c7c382154acull, 0xb2f3e6c568fa032aull, 0xe7894789a436a311ull }}, {{ 0x0f30f3a50a7a734dull, 0x2c84764c254414d7ull, 0xcc19a3c1899b4488ull, 0xcdbcdcda314d4ebfull, 0xfd8703b619c41faaull, 0x0b5ccb606a225eb0ull }}, {{ 0x97e9847268c88104ull, 0xbd2c9ef974a8d066ull, 0xf900658f6010ad51ull, 0x0960a085ed05137dull, 0xe746251d01a93cacull, 0x719ff1c42557b2e9ull }}, {{ 0xef1f2c7817d50a25ull, 0x63be35be8e982401ull, 0xba03f799c0a6c531ull, 0x5dc6453b4232c2ebull, 0x08bd7322109c5eb8ull, 0x703f71a9756cfd23ull }}, {{ 0x5737bcb0ee526574ull, 0xe56e197191f16813ull, 0x4427ac018683b3edull, 0xa9beb45095fb9d35ull, 0x57667f54a61bb333ull, 0x627a709e9641e35eull }}, {{ 0x682d5ee94f37f689ull, 0xf64cfe6fb36e10c1ull, 0xa98cb80f4125074aull, 0xa1730b25dbd42414ull, 0x6a00f94e7d150004ull, 0xd8c86631de92e1afull }}, {{ 0x11c5b51d182fa15bull, 0x9f01f05d024ca78eull, 0x9f7f30988b7248edull, 0x4e7e6f7a964968ceull, 0x2409bd10e2d2002eull, 0x77d3fdf2b1bcd0daull }}, {{ 0xb1b91322f1dc4d8aull, 0x361363a216fe8b8cull, 0x3af7e5f57276d948ull, 0x10f05ac9dede1812ull, 0x686162a8dc3401cfull, 0xae47eb7af1602885ull }}, {{ 0xf13abf5d729b0761ull, 0x1cc1e454e5f1737eull, 0x4daefb9678a47cd2ull, 0xa9638be2b4acf0b6ull, 0x13cdda989a081216ull, 0xcecf32cd6dc19536ull }}, {{ 0x6c4b79a67a0e49c7ull, 0x1f92eb50fb6e82f5ull, 0x08d5d3e0b66ce035ull, 0x9de376db0ec1671full, 0xc60a89f60450b4e2ull, 0x1417fc06498fd41cull }}, {{ 0x3af2c080c48ee1c9ull, 0x3bbd3129d2511d96ull, 0x585a46c72040c213ull, 0x2ae2a48e938e0736ull, 0xbc69639c2b2710daull, 0xc8efd83edf9e491full }}, {{ 0x4d7b8507ad94d1deull, 0x5563eba2372b27deull, 0x7386c3c7428794c0ull, 0xacda6d91c38c481full, 0x5c1de419af86a885ull, 0xd95e7274bc2edb3dull }}, {{ 0x06d3324cc7d032aeull, 0x55e7345627af8eafull, 0x8343a5c8994bcf83ull, 0xc08847b1a37ad13aull, 0x992ae900db429538ull, 0x7db0788f59d49065ull }}, {{ 0x443ff6ffce21fac8ull, 0x5b080b5d8cdb92d6ull, 0x20a479d5fcf61b21ull, 0x8552ccf062cc2c49ull, 0xfbad1a089099d437ull, 0xe8e4b599824da3f7ull }}, {{ 0xaa7fa5fe0d53cbd1ull, 0x8e5071a78093bc5eull, 0x466cc25be19d0f4dull, 0x353c0163dbf9badbull, 0xd4c30455a6024a2bull, 0x18ef17ff170867afull }}, {{ 0xa8fc7bec8545f62full, 0x8f24708b05c55bb2ull, 0xc03f9796d0229907ull, 0x14580de697c14c90ull, 0x4f9e2b587c16e5b0ull, 0xf956eff6e6540cdeull }}, {{ 0x99dcd73d34bb9dd4ull, 0x976c656e39b594faull, 0x827bebe42159fa4bull, 0xcb708b01ed8cfda7ull, 0x1c2db174d8e4f8e0ull, 0xbd655fa4ff4880afull }}, {{ 0x02a068640f542a4cull, 0xea3bf64e4117d1caull, 0x18d736e94d83c6f3ull, 0xf2656e134781e88bull, 0x19c8ee9078f1b8c7ull, 0x65f5bc71f8d506d7ull }}, {{ 0x1a4413e89949a6fcull, 0x26579f0e8aee31e4ull, 0xf868251d0725c587ull, 0x77f64cc0cb13156eull, 0x01d951a4b97137cfull, 0xfb995c73b8524467ull }}, {{ 0x06a8c715fce085d7ull, 0x7f6c36916d4df2e9ull, 0xb41173224779b747ull, 0xaf9eff87eebed655ull, 0x127d306f3e6c2e1aull, 0xd3fd9c853336ac06ull }}, {{ 0x4297c6dbe0c53a6bull, 0xfa3a21ae450b7d1aull, 0x08ae7f56cac128caull, 0xdc35fb4f53745f59ull, 0xb8e3e4587039cd0aull, 0x47e81d340022b83cull }}, {{ 0x99edc496c7b44829ull, 0xc64550ceb272e306ull, 0x56d0f963eb8b97edull, 0x9a1bd119428bb97aull, 0x38e6eb746242026cull, 0xcf112408015b325full }}, {{ 0x0349ade3cd0ad19aull, 0xbeb52812f87cde42ull, 0x6429bde73373ef49ull, 0x05162afc99753ec7ull, 0x3905328bd694183eull, 0x16ab68500d8ff7b8ull }}, {{ 0x20e0cae6026c3008ull, 0x731390bdb4e0ae94ull, 0xe9a16b08028758e1ull, 0x32ddadddfe9473c9ull, 0x3a33f97661c8f26cull, 0xe2b21320879fad32ull }}, {{ 0x48c7ecfc1839e04cull, 0x7ec3a76910c6d1c9ull, 0x204e2e50194978ceull, 0xfca8caabf1cc85e3ull, 0x4607be9fd1d97839ull, 0xdaf4bf454c3cc3f6ull }}, {{ 0xd7cf41d8f242c2f8ull, 0xf3a48a1aa7c431dcull, 0x430dcf20fcdeb810ull, 0xde97eab771fd3adfull, 0xbc4d723e327eb243ull, 0x8d8f78b4fa5fa79eull }}, {{ 0x6e189279769b9dafull, 0x846d650a8da9f2a0ull, 0x9e8a1749e0b330a9ull, 0xb1ef2b2a73e44cb8ull, 0x5b06766df8f2f6a6ull, 0x879ab711c7bc8c33ull }}, {{ 0x4cf5b8bea21428d5ull, 0x2c45f26988a37a44ull, 0x3164e8e2c6ffe69full, 0xf357afa886eaff36ull, 0x8e40a04bb97da282ull, 0x4c0b26b1cd5d7a01ull }}, {{ 0x0199377254c9984dull, 0xbabb781f5662c6abull, 0xedf118dbc5ff0237ull, 0x816cdc95452df81dull, 0x8e8642f53ee8591dull, 0xf86f82f205a6c40full }}, {{ 0x0ffc2a774fdff304ull, 0x4b52b1395fdbc2aeull, 0x4b6af895bbf6162dull, 0x0e409dd4b3cbb12bull, 0x913e9d9475137b27ull, 0xb45b1d743883a89bull }}, {{ 0x9fd9a8a91ebf7e28ull, 0xf13aec3dbe959accull, 0xf22db5d9579cddc4ull, 0x8e862a4f05f4ebb0ull, 0xac7227cc92c2cf86ull, 0x0b8f268a35249613ull }}, {{ 0x3e80969b337aed8dull, 0x6c4d3a6971d80bfeull, 0x75c91a7d6c20a9b1ull, 0x913da7163b9134e9ull, 0xbc758dfdbb9c1b41ull, 0x73978166136ddcc4ull }}, {{ 0x7105e21002cd4783ull, 0x3b04481e727077eeull, 0x99db08e63946a0eeull, 0xac6886de53ac111eull, 0x5c978be95419108full, 0x83eb0dfcc24a9fafull }}, {{ 0x6a3ad4a01c04cb1aull, 0x4e2ad1307864af50ull, 0x028e58fe3cc2494eull, 0xbc1544af44b8ab32ull, 0x9deb771d48faa59cull, 0x272e8bdf96ea3cd9ull }}, {{ 0x264c4e41182fef08ull, 0x0dac2be4b3eed924ull, 0x198f79ee5f96dd0full, 0x58d4aed8af36aff4ull, 0x2b32a724d9ca781full, 0x87d176bbe5266080ull }}, {{ 0x7efb0e8af1df564cull, 0x88b9b6ef07547b69ull, 0xff9ac34fbbe4a296ull, 0x784ed476d822df88ull, 0xaffa877081e8b139ull, 0x4e2ea356f37fc501ull }}, {{ 0xf5ce916d72b95efaull, 0x57412556494cd21eull, 0xfc0ba11d56ee59e1ull, 0xb3144ca4715cbb59ull, 0xdfc94a651316ec3eull, 0x0dd2616582fdb210ull }}, {{ 0x9a11ae467b3db5c0ull, 0x688b755edd003535ull, 0xd8744b25654f82cdull, 0xfecafe6c6d9f5183ull, 0xbddce7f2bee53a72ull, 0x8a37cdf71de8f4a8ull }}, {{ 0x04b0cec0d0691984ull, 0x157295b4a2021418ull, 0x748aef75f51b1c06ull, 0xf3edf03c48392f26ull, 0x6aa10f7b74f4487dull, 0x662e0ba72b198e97ull }}, {{ 0x2ee81388241aff24ull, 0xd679d90e5414c8f0ull, 0x8d6d5a9b930f183cull, 0x874b625ad23bd780ull, 0x2a4a9ad2918ad4ebull, 0xfdcc7487aeff91eaull }}, {{ 0xd510c351690df76bull, 0x60c27a8f48cfd961ull, 0x86458a13be96f260ull, 0x48f1d78c36566b05ull, 0xa6ea0c39af6c5133ull, 0xe9fc8d4cd5fbb325ull }}, {{ 0x52a7a12e1a8baa29ull, 0xc798c998d81e7dd2ull, 0x3eb764c571e577c3ull, 0xd9726b7a1f602e37ull, 0x85247a40da3b2c00ull, 0x23dd85005bd4ff78ull }}, {{ 0x3a8c4bcd0974a59bull, 0xcbf7dff87130ea37ull, 0x7329efb672f6ada5ull, 0x7e7832c539c1ce28ull, 0x336cc688864fb808ull, 0x66a732039651fab5ull }}, {{ 0x497af6025e8e780bull, 0xf7aebfb46be92628ull, 0x7fa35d207da2c879ull, 0xf0b1fbb441920d94ull, 0x023fc1553f1d3054ull, 0x0287f423df33cb14ull }}, {{ 0xdecd9c17b190b06eull, 0xacd37d0c371b7d92ull, 0xfc61a344e85bd4c3ull, 0x66f3d50a8fb487ccull, 0x167d8d547723e351ull, 0x194f8966b805eec8ull }}, {{ 0xb40818ecefa6e447ull, 0xc042e27a2712e7bcull, 0xdbd060b113964fa4ull, 0x058652699d0d4e01ull, 0xe0e7854ca766e12eull, 0xfd1b5e03303b53d0ull }}, {{ 0x0850f9415c84eac9ull, 0x829cd8c586bd0d5full, 0x9623c6eac3df1c6full, 0x373f382022850c12ull, 0xc90b34fe8a04cbccull, 0xe311ac1fe2514628ull }}, {{ 0x5329bc8d9d312bddull, 0x1a2077b7436285b6ull, 0xdd65c52ba6b71c5bull, 0x28783141593278b9ull, 0xda7011f1642ff5faull, 0xdeb0b93ed72cbd97ull }}, {{ 0x3fa15d8823ebb6a0ull, 0x0544ad28a1d9391full, 0xa5f9b3b483271b8full, 0x94b1ec8d7bf8b742ull, 0x8860b36de9df9bc5ull, 0xb2e73c7467bf67eeull }}, {{ 0x7c4da7516735223dull, 0x34aec396527c3b38ull, 0x7bc1050d1f871396ull, 0xcef33d86d7b7289aull, 0x53c7024b22bc15b7ull, 0xfd085c8c0d7a0f51ull }}, {{ 0xdb08892e0813565dull, 0x0ed3a3df38da5034ull, 0xd58a32833b46c3deull, 0x158067446d279608ull, 0x45c616ef5b58d92eull, 0xe2539d7886c4992dull }}, {{ 0x8e555bcc50c15fa4ull, 0x944466b838872210ull, 0x5765f92050c3a6acull, 0xd70408ac438bdc58ull, 0xb9bce55991787bccull, 0xd74426b543adfbc4ull }}, {{ 0x8f5595fb278dbc6aull, 0xcaac0332354754a5ull, 0x69fbbb4327a482bdull, 0x662856baa3769b73ull, 0x4160f57faeb4d600ull, 0x68a98314a4cbd5afull }}, {{ 0x9957dbcf8b895c28ull, 0xeab81ff614c94e77ull, 0x23d5509f8c6d1b69ull, 0xfd93634a62a21282ull, 0x8dc996fcd3105c03ull, 0x169f1ece6ff658d8ull }}, {{ 0xfd6e961b735d9995ull, 0x2b313f9ccfdd10abull, 0x6655263b7c431223ull, 0xe7c1e0e7da54b915ull, 0x89dfe5e03ea39827ull, 0xe23734105f9f7875ull }}, {{ 0xe651dd1281a7ffcfull, 0xafec7c201ea2a6b7ull, 0xff537e52da9eb55full, 0x0d92c90e874f3ad5ull, 0x62befac27263f18full, 0xd62808a3bc3ab497ull }}, {{ 0xff32a2b9108ffe17ull, 0xdf3cd941325a832eull, 0xf942ef3c8a3315bcull, 0x87bbda9149184c5bull, 0xdb75cb9877e76f96ull, 0x5d9056655a4b0de9ull }}, {{ 0xf7fa5b3aa59fece5ull, 0xb8607c8bf7891fd5ull, 0xbc9d585d65fed960ull, 0x4d5689acdaf2fb97ull, 0x9299f3f4af0a5be1ull, 0xa7a35ff586ee8b22ull }}, {{ 0xafc7904a783f40f5ull, 0x33c4dd77ab5b3e5bull, 0x5e2573a5fbf47dc7ull, 0x056160c08d7dd3edull, 0xba03878ed66796cdull, 0x8c61bf9745516f59ull }}, {{ 0xddcba2e8b278898dull, 0x05b0a6acb1906f94ull, 0xad76847bd78ce9c8ull, 0x35cdc78586ea4745ull, 0x44234b94600be402ull, 0x7bd17be8b52e5981ull }}, {{ 0xa9f45d16f8b55f85ull, 0x38e682beefa45bd0ull, 0xc6a12cd66b8121d0ull, 0x1a09cb374526c8b8ull, 0xa960f3cbc076e816ull, 0xd62ed71713cf7f0cull }}, {{ 0xa38ba2e5b715bb37ull, 0x39011b755c6b9626ull, 0xc24bc060330b5222ull, 0x0461f028b383d737ull, 0x9dc985f584a510ddull, 0x5dd466e6c61af67eull }}, {{ 0x63745cf926d95024ull, 0x3a0b12959c33dd82ull, 0x96f583c1fe713556ull, 0x2bd361970326682dull, 0x29df3b972e72a8a2ull, 0xaa4c0503bd0da0f2ull }}, {{ 0xe28ba1bb847d216cull, 0x446eb9d81a06a717ull, 0xe5972593f06c155eull, 0xb641cfe61f8011c7ull, 0xa2b853e7d07a9655ull, 0xa6f8322562884975ull }}, {{ 0xd97451532ce34e35ull, 0xac534271044286eeull, 0xf7e777c76438d5aeull, 0x1e921efd3b00b1ceull, 0x5b33470e24c9df59ull, 0x85b1f575d952de98ull }}, {{ 0x7e8b2d3fc0e10e14ull, 0xbb40986a2a994554ull, 0xaf0aadc9ea3858d2ull, 0x31b535e44e06f215ull, 0x9000c68d6fe2b97bull, 0x38f3969a7d3cb1f3ull }}, {{ 0xf16fc47d88ca8ccaull, 0x5085f425a9fcb54cull, 0xd66ac9e32633783bull, 0xf1141aeb0c4574d8ull, 0xa007c1865edb3ecfull, 0x3983e208e45ef383ull }}, {{ 0x6e5dace757e97fe6ull, 0x253b8978a3df1501ull, 0x602be2df7e02b251ull, 0x6ac90d2e7ab69078ull, 0x404d8f3fb490741full, 0x3f26d458ebb58324ull }}, {{ 0x4fa8c1096f1efefcull, 0x74535eb666b6d20eull, 0xc1b6dcbaec1af72bull, 0x2bda83d0cb21a4b3ull, 0x8307987d0da4893aull, 0x77844b7935171f6aull }}, {{ 0x1c978a5e5735f5d9ull, 0x8b41b3200324348full, 0x91249f4d390da7b2ull, 0xb6892627ef506f05ull, 0x1e4bf4e2886d5c45ull, 0xab2af2bc12e73a29ull }}, {{ 0x1deb67af681b9a7aull, 0x7090ff401f6a0d97ull, 0xab6e39043a888cf9ull, 0x215b7d8f59245637ull, 0x2ef790d954459ab9ull, 0xafad7b58bd08459bull }}, {{ 0x2b320cda111408c2ull, 0x65a9f8813a2487e7ull, 0xb24e3a2a495581beull, 0x4d92e7997b6b5e2cull, 0xd5aba87d4ab80b3bull, 0xdcc6d1776252b80full }}, {{ 0xaff48084aac85796ull, 0xf8a3b50c456d4f07ull, 0xf70e45a6dd57116full, 0x07bd0bfed231adbeull, 0x58b494e4eb307051ull, 0x9fc42ea9d73b309eull }}, {{ 0xdf8d052eabd36bdaull, 0xb665127ab645164cull, 0xa68eb884a566ae5full, 0x4d6277f435f0c975ull, 0x770dd0f12fe4632aull, 0x3da9d2a2684fe62full }}, {{ 0xbb8233d2b6423685ull, 0x1ff2b8cb1eb2df00ull, 0x8193352e7602cfbdull, 0x05d8af8a1b67de98ull, 0xa68a296bdeebdfa7ull, 0x68a23a58131efddaull }}, {{ 0x5316063b1e962136ull, 0x3f7b37ef32fcb607ull, 0x0fc013d09c1c1d63ull, 0x3a76db65120eb1f5ull, 0x81659e36b536bc86ull, 0x16564770bf35ea8aull }}, {{ 0x3edc3e4f31dd4c18ull, 0x7ad02f57fddf1c49ull, 0x9d80c626191925e0ull, 0x48a491f2b492f392ull, 0x0df82e2314235d3eull, 0xdf5eca67781b2969ull }}, {{ 0x749a6f17f2a4f8efull, 0xcc21d96feab71adcull, 0x2707bd7cfafb7ac4ull, 0xd66db37b0dbd83baull, 0x8bb1cd5ec961a46eull, 0xb9b3e80ab10f9e1aull }}, {{ 0x8e0856ef7a71b957ull, 0xf9527e5f2b270c9cull, 0x864d66e1cdd2cbafull, 0x604902ce89672545ull, 0x74f205b3ddd06c54ull, 0x4107106aea9c2d09ull }}, {{ 0x8c53655ac8713d61ull, 0xbd38efb7af867e1dull, 0x3f0604d20a3bf4dfull, 0xc2da1c115e0774b7ull, 0x91743906aa243b4bull, 0x8a46a42d2a19c25eull }}, {{ 0x7b41f58bd46c65cdull, 0x64395d2cdb40ed27ull, 0x763c3034665790bdull, 0x9c8518adac4a8f28ull, 0xae8a3a42a56a50f5ull, 0x66c269c3a50197b1ull }}, {{ 0xd09397764c3bfa05ull, 0xea3da3c09089438aull, 0x9e59e20bff6ba765ull, 0x1d32f6c8bae99794ull, 0xd166469a76272998ull, 0x039821a4720fecf0ull }}, {{ 0x25c3ea9efa57c433ull, 0x26686585a55ca36cull, 0x2f82d477fa3489fbull, 0x23fda3d74d1febceull, 0x2dfec2089d879ff1ull, 0x23f1506c749f4168ull }}, {{ 0x79a72a35c76da9ffull, 0x8013f738759e6239ull, 0xdb1c4cafc60d63cfull, 0x67e86669033f360dull, 0xcbf39456274c3f6bull, 0x676d243c8e388e11ull }}, {{ 0xc087a619ca48a3f6ull, 0x00c7a834982fd63eull, 0x8f1afeddbc85e61bull, 0x0f14001a20781c8aull, 0xf783cb5d88fa7a32ull, 0x0a436a5d8e358cb1ull }}, {{ 0x854c7d01e6d6679bull, 0x07cc920df1de5e73ull, 0x970df4a95d3afd0eull, 0x96c8010544b11d69ull, 0xab25f1a759c8c5f4ull, 0x66a227a78e177ef3ull }}, {{ 0x34fce21304600c0full, 0x4dfdb48b72afb083ull, 0xe68b8e9da44de28cull, 0xe3d00a34aeeb261full, 0xaf7b708981d7bb8dull, 0x02558c8b8ceaf584ull }}, {{ 0x11e0d4be2bc07898ull, 0x0be90d727adce520ull, 0x017392286b0ad97bull, 0xe620660ed52f7d3full, 0xdad2655f126d538aull, 0x17577d73812d972eull }}, {{ 0xb2c84f6db584b5f1ull, 0x771a8678cca0f340ull, 0x0e83b5942e6c7eceull, 0xfd43fc9453dae476ull, 0x8c37f5b6b845436cull, 0xe96ae6830bc7e7d4ull }}, {{ 0xfbd31a49172f1b6dull, 0xa70940b7fe498086ull, 0x912517c9d03cf410ull, 0xe4a7ddcb468cec9cull, 0x7a2f992332b4a241ull, 0x1e2d011e75cf0e4dull }}, {{ 0xd63f06dae7d71244ull, 0x865c872feedf0545ull, 0xab72ede2226188a6ull, 0xee8ea9f0c1813e1dull, 0xc5dbfb5ffb0e5692ull, 0x2dc20b309a168f06ull }}, {{ 0x5e76448d0e66b6abull, 0x3f9d47df54b634baull, 0xb27d4ad557cf5681ull, 0x5192a3678f0c6d28ull, 0xba97d1bfce8f61bdull, 0xc9946fe604e19643ull }}, {{ 0xb09ead82900322b3ull, 0x7c24ceb94f1e0f47ull, 0xf8e4ec556e19610cull, 0x2fba620b967c4396ull, 0x49ee317e1199d165ull, 0xdfcc5efc30cfdea5ull }}, {{ 0xe632c719a01f5afeull, 0xd970133d172c98ccull, 0xb8f13b564cfdca7cull, 0xdd47d473e0daa3e5ull, 0xe34deeecb0022df3ull, 0xbdfbb5d9e81eb274ull }}, {{ 0xfdfbc70041398de8ull, 0x7e60c062e7bdf800ull, 0x396c515f01e9e8e0ull, 0xa4ce4c86c88a66f9ull, 0xe10b553ee015cb86ull, 0x6bd51a831132f890ull }}, {{ 0xebd5c6028c3f8b0bull, 0xefc783dd0d6bb009ull, 0x3e3b2db6132318c4ull, 0x700efd43d56805bcull, 0xca715474c0d9f342ull, 0x3653091eabfdb5a8ull }}, {{ 0x3659bc197a7b6e70ull, 0x5dcb26a28634e063ull, 0x6e4fc91cbf5ef7b1ull, 0x6095e4a65610395aull, 0xe86d4c8f88838098ull, 0x1f3e5b32b7e91897ull }}, {{ 0x1f8158fec8d25063ull, 0xa9ef82593e10c3e0ull, 0x4f1ddb1f79b5acedull, 0xc5daee7f5ca23d88ull, 0x1444fd9b552305f3ull, 0x386f8ffb2f1af5efull }}, {{ 0x3b0d79f3d83723deull, 0xa35b177c6ca7a6c1ull, 0x172a8f3ac118c148ull, 0xba8d50f99e566753ull, 0xcab1e811535e3b85ull, 0x345b9fcfd70d9b56ull }}, {{ 0x4e86c386722766aaull, 0x618eeadc3e8c838cull, 0xe7a9984b8af78cd6ull, 0x498529c02f60093eull, 0xeaf310ad41ae5339ull, 0x0b943e1e66881163ull }}, {{ 0x1143a340758a02a2ull, 0xcf952c9a717d237bull, 0x0c9ff2f36dab805full, 0xdf33a181d9c05c75ull, 0x2d7ea6c490cf403cull, 0x73ca6d300150ade7ull }}, {{ 0xaca4608497641a55ull, 0x1bd3be086ee362ceull, 0x7e3f7d8248b303beull, 0xb8044f1281839c92ull, 0xc6f283ada8188260ull, 0x85e843e00d26cb07ull }}, {{ 0xbe6bc52de9e90756ull, 0x16456c5454e1dc12ull, 0xee7ae716d6fe256dull, 0x302b16b90f241db8ull, 0xc57924c890f517c7ull, 0x3b12a6c08383ee4dull }}, {{ 0x7035b3cb231a495cull, 0xdeb63b4b50d298bbull, 0x50cd06e465ed7642ull, 0xe1aee33a97692939ull, 0xb6bb6fd5a992edc7ull, 0x4eba838523274f09ull }}, {{ 0x621905ef5f06dd99ull, 0xb31e50f12839f752ull, 0x280244ebfb469e9cull, 0xd0d4e049ea1b9c3dull, 0x23525e589fbd49ceull, 0x134923335f891661ull }}, {{ 0xd4fa3b59b644a7ffull, 0xff2f296b9243a937ull, 0x9016b137d0c2321eull, 0x2850c2e325141a63ull, 0x6137af763d64e214ull, 0xc0db6001bb5adfcbull }}, {{ 0x51c651811eae8ff2ull, 0xf7d79e33b6a49c2eull, 0xa0e2ec2e2795f535ull, 0x93279cdf72c907e3ull, 0xcc2cda9e65f0d4c9ull, 0x8891c011518cbdf1ull }}, {{ 0x31bf2f0b32d19f77ull, 0xae6c2e05226e19cfull, 0x48dd39cd8bdb941bull, 0xbf8c20ba7bda4ee4ull, 0xf9c08a2ffb684fdfull, 0x55b180ad2f7f6b71ull }}, {{ 0xf177d66ffc303aa6ull, 0xd039cc33584d0217ull, 0xd8a442077693c914ull, 0x7b794748d68714eaull, 0xc18565dfd2131ebdull, 0x58ef06c3dafa3273ull }}, {{ 0x6eae605fd9e24a78ull, 0x2241fa01730214efull, 0x766a944aa1c5dad0ull, 0xd2bcc8d86146d12cull, 0x8f35fabe34bf3366ull, 0x795643a68dc5f885ull }}, {{ 0x52cfc3be82d6e8b1ull, 0x5693c40e7e14d15aull, 0xa029caea51ba8c21ull, 0x3b5fd873ccc42bbcull, 0x981bcb6e0f780204ull, 0xbd5ea48189bbb537ull }}, {{ 0x3c1da5711c6516e7ull, 0x61c5a890ecd02d87ull, 0x41a1ed273149794dull, 0x51be7485ffa9b55eull, 0xf115f24c9ab0142aull, 0x65b26d0f6155142bull }}, {{ 0x5928766b1bf2e506ull, 0xd1b895a94021c748ull, 0x90534387ecdebd05ull, 0x31708d3bfca115aeull, 0x6adb76fe0ae0c9a7ull, 0xf8f84299cd52c9b7ull }}, {{ 0x7b94a02f177cf23cull, 0x3135d89c8151c8d3ull, 0xa340a34f40b3623aull, 0xee658457de4ad8d1ull, 0x2c92a5ec6cc7e087ull, 0xb9b29a02053be12aull }}, {{ 0xd3ce41d6eae1765bull, 0xec1a761d0d31d842ull, 0x608661188701d645ull, 0x4ff72b6eaeec7830ull, 0xbdba7b3c3fcec54full, 0x40fa04143456cba5ull }}, {{ 0x460e92652cce9f93ull, 0x39089d2283f2729cull, 0xc53fcaf546125ebbull, 0x1fa7b252d53cb1e3ull, 0x6948d05a7e13b519ull, 0x89c428ca0b63f479ull }}, {{ 0xbc91b7f3c0123bb9ull, 0x3a56235927787a1aull, 0xb47ded94bcb7b350ull, 0x3c8cf73c545ef2e5ull, 0x1cd82388ecc512fbull, 0x61a997e471e78cbeull }}, {{ 0x5db12f8580b6553cull, 0x475d617b8ab4c50bull, 0x0ceb47cf5f2d0122ull, 0x5d81a85b4bb57cf9ull, 0x207163593fb2bdd0ull, 0xd09feeec730b7f6dull }}, {{ 0xa8ebdb37071f545cull, 0xc9a5ced36b0fb271ull, 0x8130ce19b7c20b56ull, 0xa7109390f516e1baull, 0x446de17c7cfb6a23ull, 0x263f553c7e72fa43ull }}, {{ 0x9936902647394b95ull, 0xe07a14422e9cf870ull, 0x0be80d012d947163ull, 0x86a5c3a992e4d149ull, 0xac4acedce1d22564ull, 0x7e79545cf07dc6a0ull }}, {{ 0xfc21a17ec83cf3ceull, 0xc4c4ca95d221b465ull, 0x7710820bc7cc6de6ull, 0x4279a49fbcf02cdaull, 0xbaec14a0d23575edull, 0xf0bd4ba164e9c246ull }}, {{ 0xd9504ef3d2618610ull, 0xafafe9da35510bfbull, 0xa6a51475cdfc4b03ull, 0x98c06e3d6161c088ull, 0x4d38ce4836169b44ull, 0x6764f44df12196c3ull }}, {{ 0x7d23158637cf3c9cull, 0xdcdf2286152a77d6ull, 0x8272cc9a0bdaee24ull, 0xf7844e65cdd18556ull, 0x04380ed21ce210adull, 0x09f18b0b6b4fe3a1ull }}, {{ 0xe35ed73e2e185e14ull, 0xa0b7593cd3a8ae60ull, 0x187bfe04768d4d70ull, 0xab2b0ffa0a2f3561ull, 0x2a30943520d4a6cbull, 0x636f6e72311ee44aull }}, {{ 0xe1b4686dccf3acc9ull, 0x47297c604496cfc8ull, 0xf4d7ec2ca1850666ull, 0xafae9fc465d815caull, 0xa5e5ca13484e83f4ull, 0xe25a5075eb34eae5ull }}, {{ 0xd10c144a0184bfd7ull, 0xc79edbc2ade41dd8ull, 0x906f39be4f323ffeull, 0xdcd23dabfa70d9edull, 0x7af9e4c0d311278eull, 0xd787249b30112cf8ull }}, {{ 0x2a78cae40f2f7e69ull, 0xcc34959acae92a78ull, 0xa458416f17f67ff3ull, 0xa03668b7c8688347ull, 0xcdc2ef883eab8b94ull, 0x6b476e0fe0abc1b4ull }}, {{ 0xa8b7ece897daf01eull, 0xfa0dd80bed1ba8b1ull, 0x6b728e56efa0ff85ull, 0x4220172dd41520ccull, 0x099d5b5272b373ceull, 0x30ca4c9ec6b59110ull }}, {{ 0x972f4115ee8d612eull, 0xc48a7077431496f0ull, 0x32798f655c49fb3bull, 0x9540e7ca48d347fcull, 0x602591387b02860eull, 0xe7e6fe33c317aaa0ull }}, {{ 0xe7d88adb5185cbcfull, 0xad6864a89ecde565ull, 0xf8bf99f59ae3d055ull, 0xd4890de6d840cfd9ull, 0xc177ac34ce193c91ull, 0x0f05ee059eecaa43ull }}, {{ 0x0e756c912f39f613ull, 0xc613ee96340af5fbull, 0xb77c03980ce62358ull, 0x4d5a8b0472881e83ull, 0x8eacba100cfc5db2ull, 0x963b4c38353ea6a5ull }}, {{ 0x90963dabd8439cbaull, 0xbcc751de086d9bceull, 0x2ad823f080fd6177ull, 0x05896e2c79513125ull, 0x92bf44a081dba8f7ull, 0xde50fa3214728277ull }}, {{ 0xa5de68b672a41f45ull, 0x5fc932ac54481611ull, 0xac71676509e5ceadull, 0x375e4dbcbd2beb73ull, 0xbb78ae45129499a6ull, 0xaf29c5f4cc7918abull }}, {{ 0x7ab017207a6938b3ull, 0xbddbfabb4ad0dcb0ull, 0xbc6e09f262fa12c5ull, 0x29af095f63b73284ull, 0x52b6ceb2b9ce007eull, 0xd7a1bb8ffcbaf6b5ull }}, {{ 0xcae0e744c81c3702ull, 0x6a97cb50ec289ee4ull, 0x5c4c6377ddc4bbb9ull, 0xa0d65db9e527f92full, 0x3b2412fb420c04edull, 0x6c51539fdf4da315ull }}, {{ 0xecc908afd11a2616ull, 0x29edf129399634efull, 0x9afbe2aea9af553eull, 0x485fa942f38fbbd9ull, 0x4f68bdd094783148ull, 0x3b2d443eb9085ed4ull }}, {{ 0x3fda56de2b057cdbull, 0xa34b6b9c3fde115full, 0x0dd6dad2a0d9546dull, 0xd3bc9c9d839d5680ull, 0x1a176a25ccb1ecd2ull, 0x4fc4aa733a53b44bull }}, {{ 0x7e8764adae36e092ull, 0x60f2341a7eacadb8ull, 0x8a648c3a487d4c48ull, 0x455e1e2724256100ull, 0x04ea2579fef3403cull, 0x1daea88047450aefull }}, {{ 0xf149eec8ce24c5b2ull, 0xc9760908f2bec934ull, 0x67ed7a46d4e4fad3ull, 0xb5ad2d876975ca05ull, 0x312576c3f580825aull, 0x28d29502c8b26d56ull }}, {{ 0x6ce353d80d6fb8f0ull, 0xde9c5a597b73dc11ull, 0x0f46c6c450f1cc45ull, 0x18c3c74a1e99e436ull, 0xeb76a3a79705178bull, 0x9839d21bd6f8455dull }}, {{ 0x40e14670865d3961ull, 0xb21b877ed28698aeull, 0x98c3c3ab2971fabaull, 0xf7a5c8e53202ea1cull, 0x32a2648be632eb6eull, 0xf242351665b2b5abull }}, {{ 0x88ccc0653fa43dc9ull, 0xf5134af43941f6ceull, 0xf7a5a4af9e73cb4aull, 0xac79d8f3f41d251dull, 0xfa57ed76fdfd3255ull, 0x769612dff8fb18afull }}, {{ 0x57ff83f47c6a69ddull, 0x92c0ed8a3c93a411ull, 0xac786edc3085f0edull, 0xbcc279878923732bull, 0xc76f46a5ebe3f758ull, 0xa1dcbcbfb9cef6dfull }}, {{ 0x6ffb278cdc2822a6ull, 0xbb8947665dc468adull, 0xbcb45499e53b6947ull, 0x5f98bf4b5b627fb4ull, 0xca58c27b36e7a977ull, 0x529f5f7d4215a4bdull }}, {{ 0x5fcf8b8099915a7full, 0x535cc9ffa9ac16c6ull, 0x5f0b4e02f4521ccdull, 0xbbf778f191d8fd0full, 0xe77798d0250c9ea9ull, 0x3a39bae494d86f69ull }}, {{ 0xbe1b7305ffad88faull, 0x419fe3fca0b8e3bfull, 0xb6710c1d8b352005ull, 0x57aab96fb279e299ull, 0x0aabf821727e32a1ull, 0x46414cedd0745a23ull }}, {{ 0x6d127e3bfcc759c4ull, 0x903ee7de4738e57dull, 0x206a792770134034ull, 0x6cab3e5cf8c2da01ull, 0x6ab7b14e78edfa4dull, 0xbe8d014a248b855eull }}, {{ 0x42b8ee57dfc981a5ull, 0xa2750eaec838f6e6ull, 0x4428bb8a60c0820dull, 0x3eb06fa1b79c840bull, 0x2b2ced10b94bc706ull, 0x71820ce56d7335b0ull }}, {{ 0x9b394f6ebddf1071ull, 0x589292d3d239a4feull, 0xa9975367c7851488ull, 0x72e45c512c1d2870ull, 0xafc142a73cf5c63eull, 0x6f1480f6468018e1ull }}, {{ 0x103d1a536ab6a468ull, 0x75b9bc46364071f2ull, 0x9fe9420dcb32cd53ull, 0x7ceb9b2bb9239466ull, 0xdd8c9a886199be70ull, 0x56cd099ec100f8d0ull }}, {{ 0xa26307422b226c13ull, 0x99415abe1e847374ull, 0x3f1c9489effc0542ull, 0xe1340fb53b63cc02ull, 0xa77e0953d0017064ull, 0x640260338a09b828ull }}, {{ 0x57de4895af5838bcull, 0xfc8d8b6d312c828eull, 0x771dcd635fd83499ull, 0xcc089d1451e5f816ull, 0x8aec5d46200e63f0ull, 0xe817c20364613196ull }}, {{ 0x6eaed5d8d972375bull, 0xdd877243ebbd198full, 0xa72a05e1be720e03ull, 0xf85622cb32fbb0e0ull, 0x6d3ba4bd408fe767ull, 0x10ed9421ebcbefe1ull }}, {{ 0x52d45a787e76298eull, 0xa74a76a73562ff9aull, 0x87a43ad170748c26ull, 0xb35d5beffdd4e8c6ull, 0x44546f64859f0a0full, 0xa947c95335f75eceull }}, {{ 0x3c4b88b4f09d9f8cull, 0x88e8a28815ddfc07ull, 0x4c6a4c2e648d7982ull, 0x01a5975fea5117c1ull, 0xab4c59ed3836649dull, 0x9ccddd401ba9b40eull }}, {{ 0x5af3571166283b79ull, 0x59165950daabd848ull, 0xfc26f9cfed86bf19ull, 0x1077e9bf272aed8cull, 0xb0fb8344321fee22ull, 0x200aa48114a10892ull }}, {{ 0x8d8166adfd9252bcull, 0x7adf7d288ab672d3ull, 0xd985c21f474376fdull, 0xa4af217787ad4781ull, 0xe9d320a9f53f4d54ull, 0x406a6d0ace4a55baull }}, {{ 0x870e02cbe7b73b55ull, 0xccbae3956b207c43ull, 0x7f399538c8a2a5e6ull, 0x6ed74eab4cc4cb12ull, 0x223f46a39479054eull, 0x8428426c0ee7594dull }}, {{ 0x468c1bf70d285152ull, 0xff4ce3d62f44daa3ull, 0xf83fd437d65a7b03ull, 0x546912b0ffafeeb8ull, 0x5678c263ccba3510ull, 0x2992983895097d03ull }}, {{ 0xc17917a683932d2full, 0xf900e65dd8b08a60ull, 0xb27e4a2e5f88ce27ull, 0x4c1abae9fcdf5339ull, 0x60b797e5ff4612a3ull, 0x9fb9f235d25ee221ull }}, {{ 0x8ebaec8123bfc3daull, 0xba08ffaa76e567c7ull, 0xf8eee5cfbb580d8full, 0xf90b4d23e0b94040ull, 0xc72beefbf8bcba60ull, 0x3d43761a37b4d54dull }}, {{ 0x934d3d0b657da683ull, 0x4459fca8a4f60dcbull, 0xb954fa1d5170879dull, 0xba710366c73c8289ull, 0xc7b755d7b75f47c9ull, 0x64a29d062d105509ull }}, {{ 0xc1046271f6e8811bull, 0xab83de96719c89f3ull, 0x3d51c5252e654c24ull, 0x486a2203c85d1961ull, 0xcd295a6d29b8cde1ull, 0xee5a223dc2a35261ull }}, {{ 0x8a2bd873a5150b13ull, 0xb326b1e0701d6385ull, 0x6531b373cff4f96eull, 0xd4255425d3a2fdccull, 0x039d8843a1380accull, 0x4f8556699a6137d2ull }}, {{ 0x65b6748472d26ebdull, 0xff82f2c46125e337ull, 0xf3f102861f91be52ull, 0x4975497a445de9fbull, 0x242752a44c306c00ull, 0x1b35602007cc2e34ull }}, {{ 0xf9208d2c7c38535eull, 0xfb1d7babcb7ae029ull, 0x876a193d3bb16f3dull, 0xde94dec6abab23d7ull, 0x69893a6af9e43802ull, 0x1015c1404df9ce09ull }}, {{ 0xbb4583bcda3341a9ull, 0xcf26d4b5f2ccc1a3ull, 0x4a24fc6454ee586bull, 0xb1d0b3c2b4af666bull, 0x1f5c482dc2ea301cull, 0xa0d98c830bc20c5eull }}, {{ 0x50b7256086009096ull, 0x17844f1b7bff9065ull, 0xe571dbeb514f7436ull, 0xf227059b0eda0030ull, 0x399ad1c99d25e11eull, 0x487f7d1e75947badull }}, {{ 0x272775c53c05a5dbull, 0xeb2b1712d7fba3f5ull, 0xf67297312d1a8a1cull, 0x7586380e948401e8ull, 0x400c31e0237acb35ull, 0xd4fae33097ccd4c4ull }}, {{ 0x878a99b458387a89ull, 0x2faee6bc6fd46793ull, 0xa079e7ebc3096521ull, 0x973e3091cd281319ull, 0x8079f2c162cbf016ull, 0x51ccdfe5ee004faaull }}, {{ 0x4b6a010b7234c95full, 0xdcd5035c5e4c0bc3ull, 0x44c30f359e5df34bull, 0xe86de5b20390bf00ull, 0x04c37b8ddbf760e1ull, 0x3200befb4c031ca9ull }}, {{ 0xf2240a72760fddb3ull, 0xa052219baef875a0ull, 0xaf9e98182fab80f6ull, 0x144af8f423a77602ull, 0x2fa2d38a97a9c8d3ull, 0xf40775d0f81f1e9aull }}, {{ 0x756868789c9ea8ffull, 0x43355014d5b49849ull, 0xdc31f0f1dcb309a2ull, 0xcaedb989648a9c1aull, 0xdc5c4369eca1d83eull, 0x884a9a29b1373205ull }}, {{ 0x961414b61e3299f2ull, 0xa01520d0590df2deull, 0x99f369729efe6056ull, 0xed493f5ded6a190cull, 0x9b9aa2233e527273ull, 0x52ea05a0ec27f43aull }}, {{ 0xdcc8cf1d2dfa0375ull, 0x40d348237a8b7cb1ull, 0x03821e7a35efc362ull, 0x44dc79ab4624fa7eull, 0x140a55606f387887ull, 0x3d243849398f8a4aull }}, {{ 0x9fd81723cbc42296ull, 0x8840d162c972def2ull, 0x231530c61b5da1d6ull, 0xb09cc0b0bd71c8ecull, 0xc86755c45834b548ull, 0x636a32dc3f9b66e4ull }}, {{ 0x3e70e765f5a959d7ull, 0x52882ddbde7cb57aull, 0x5ed3e7bd11a85261ull, 0xe61f86e76671d939ull, 0xd40959ab720f14d6ull, 0xe225fc9a7c1204efull }}, {{ 0x706909fb989d826bull, 0x3951ca96b0df16c6ull, 0xb4470d62b09337cdull, 0xfd3b450a00727c3dull, 0x485d80b27496d064ull, 0xd57bde08d8b4315eull }}, {{ 0x641a63d3f627182dull, 0x3d31e9e2e8b6e3c0ull, 0x0ac685dae5c02e04ull, 0xe450b2640478da69ull, 0xd3a706f88de423f1ull, 0x56d6ac587709edaeull }}, {{ 0xe907e6479d86f1c0ull, 0x63f322dd1724e583ull, 0x6bc13a8cf981cc2aull, 0xeb26f7e82cb8881aull, 0x448645b58ae96772ull, 0x6462bb74a66348d4ull }}, {{ 0x1a4efecc27457183ull, 0xe77f5ca2e770f727ull, 0x358c4981bf11f9a7ull, 0x2f85af11bf355108ull, 0xad3eb9176d1e0a7dull, 0xebdb528e7fe0d84aull }}, {{ 0x0715f3f988b66f1dull, 0x0af99e5d0a69a787ull, 0x177adf1176b3c08full, 0xdb38d6b178152a52ull, 0xc4733aea432c68e3ull, 0x36913990fec872eaull }}, {{ 0x46db87bf57205726ull, 0x6dc02fa268208b46ull, 0xeaccb6aea3058596ull, 0x903862eeb0d3a734ull, 0xac804d269fbc18e6ull, 0x21ac3fa9f3d47d2bull }}, {{ 0xc4934d7967436778ull, 0x4981dc58114570beull, 0x2bff22d25e3737e0ull, 0xa233dd52e8448811ull, 0xbd0303823d58f901ull, 0x50ba7ca3864ce3b4ull }}, {{ 0xadc106be08a20ab3ull, 0xdf129b70acb66773ull, 0xb7f75c37ae282ec2ull, 0x5606a53d12ad50abull, 0x621e23166579ba10ull, 0x2748de633f00e50full }}, {{ 0xc98a436c56546afcull, 0xb6ba1266bf200a84ull, 0x2fa99a2ccd91d39cull, 0x5c427462bac526b5ull, 0xd52d5edff6c144a3ull, 0x88d8afe07608f299ull }}, {{ 0xdf66a23b5f4c2dd4ull, 0x2344b8037740692full, 0xdca005c007b2441full, 0x9a988bdb4bb38313ull, 0x53c5b4bfa38cae61ull, 0x5876dec49c597a02ull }}, {{ 0xba025651b8f9ca48ull, 0x60af3022a8841bdeull, 0x9e4039804cf6a937ull, 0x09f57690f5031ec6ull, 0x45b90f7c637ecfd0ull, 0x74a4b3ae1b7ec417ull }}, {{ 0x44175f3139c1e6d2ull, 0xc6d7e15a952916b3ull, 0x2e823f0301a29c29ull, 0x6396a1a9921f33c2ull, 0xb93a9adbe2f41e20ull, 0x8e6f04cd12f3a8e8ull }}, {{ 0xa8e9b7ec41930431ull, 0xc46ecd89d39ae300ull, 0xd116761e105a19a1ull, 0xe3e2509fb5380595ull, 0x3c4a0c96dd892d43ull, 0x90563002bd849917ull }}, {{ 0x99212f3a8fbe29eeull, 0xac540762440cde06ull, 0x2ae09d2ca3850051ull, 0xe6d7263d143037daull, 0x5ae47de4a75bc4a6ull, 0xa35de01b672dfae8ull }}, {{ 0xfb4bd8499d6da347ull, 0xbb4849d6a880ac41ull, 0xacc623be63320330ull, 0x04677e62c9e22e85ull, 0x8ceceaee8995ae85ull, 0x61aac11207cbcd13ull }}, {{ 0xd0f672e0264860c6ull, 0x50d2e2629506ba93ull, 0xbfbd656fdff41fe7ull, 0x2c0aefdbe2d5d138ull, 0x81412d515fd8d132ull, 0xd0ab8ab44df602c3ull }}, {{ 0x29a07cc17ed3c7beull, 0x283cd7d9d24349c6ull, 0x7d65f65ebf893f09ull, 0xb86d5e96dc5a2c37ull, 0x0c8bc52dbe782bf5ull, 0x26b36b0b0b9c1ba3ull }}, {{ 0xa044df8ef445cd71ull, 0x92606e8236a0e1bdull, 0xe5fb9fb37b5c765bull, 0x3445b1e49b85ba2aull, 0x7d75b3c970b1b799ull, 0x83022e6e7419145eull }}, {{ 0x42b0bb958aba0666ull, 0xb7c451162248d168ull, 0xfbd43d02d19c9f93ull, 0x0ab8f2ee133945acull, 0xe69905de66f12bfcull, 0x1e15d05088facbb0ull }}, {{ 0x9ae753d76b443ffeull, 0x2dab2add56d82e12ull, 0xd64a621c301e3bc5ull, 0x6b397d4cc03cb8c1ull, 0x01fa3ab0056bb7d8ull, 0x2cda232559cbf4e9ull }}, {{ 0x0d09466a30aa7fe7ull, 0xc8afaca56471ccbaull, 0x5ee7d519e12e55b3ull, 0x303ee4ff825f3792ull, 0x13c64ae036352e74ull, 0xc0855f7581f7911aull }}, {{ 0x825cc025e6a8ff09ull, 0xd6dcbe75ec71ff44ull, 0xb50e5302cbcf5905ull, 0xe274f1fb17b82bb7ull, 0xc5beecc21e13d089ull, 0x8535ba9713abab04ull }}, {{ 0x179f817b0299f659ull, 0x649f709b3c73f8adull, 0x128f3e1bf6197a3aull, 0xd89173ceed31b52dull, 0xb9753f952cc62562ull, 0x341949e6c4b4ae2full }}, {{ 0xec3b0ece1a039f7full, 0xee3a66105c87b6c2ull, 0xb9986d179cfec647ull, 0x75ae861543f113c2ull, 0x3e947bd3bfbd75dcull, 0x08fce303af0ecdddull }}, {{ 0x3a4e940d04243af2ull, 0x4e47fca39d4d239dull, 0x3ff442ec21f3becfull, 0x98d13cd4a76ac59bull, 0x71ccd6457d669a9cull, 0x59e0de24d6940aa4ull }}, {{ 0x4711c882296a4d75ull, 0x0ecfde6425036424ull, 0x7f8a9d3953857419ull, 0xf82c604e8a2bb810ull, 0x72005eb6e6020a1dull, 0x82c8ad7061c86a6cull }}, {{ 0xc6b1d5159e270697ull, 0x941eafe97221e96aull, 0xfb6a243d433688faull, 0xb1bbc31165b530a4ull, 0x7403b324fc14652bull, 0x1bd6c663d1d4283cull }}, {{ 0xc2f252d82d8641e2ull, 0xc932df1e75531e2bull, 0xd2256a64a02159c9ull, 0xf1559eadf913e671ull, 0x8824ff71d8cbf3b4ull, 0x1663bfe63249925cull }}, {{ 0x9d773c71c73e92d3ull, 0xdbfcb730953f2db5ull, 0x357627ee414d81e1ull, 0x6d5832cbbac70072ull, 0x5171fa7277f78511ull, 0xdfe57efdf6dfb79dull }}, {{ 0x26a85c71c871bc40ull, 0x97df27e5d477c918ull, 0x169d8f4e8d0712d2ull, 0x4571fbf54bc60476ull, 0x2e73c878afab32aeull, 0xbef6f5eba4bd2c25ull }}, {{ 0x82939c71d4715a7full, 0xeeb78efa4caddaf1ull, 0xe22799118246bc39ull, 0xb673d794f5bc2c9cull, 0xd085d4b6dcaffaceull, 0x75a59b346f63b973ull }}, {{ 0x19c41c724c6d88fbull, 0x532b95c6feca8d6full, 0xd58bfaaf16c35a43ull, 0x20866bd19959be20ull, 0x253a4f249edfcc13ull, 0x9878100c59e53e86ull }}, {{ 0x01a91c76fc4759ceull, 0x3fb3d9c5f3e98657ull, 0x5777cad6e3a186a1ull, 0x4540362ffd816d48ull, 0x7447176e34bdf8bfull, 0xf4b0a07b82f4713dull }}, {{ 0x109b1ca5dac98208ull, 0x7d0681bb871f3f66ull, 0x6aadec64e44f424cull, 0xb4821ddfe70e44d3ull, 0x8ac6ea4e0f6bb778ull, 0x8ee644d31d8c6c66ull }}, {{ 0xa60f1e7a8bdf144bull, 0xe2411153473879fcull, 0x2acb3bf0eb1896fcull, 0x0d152abf068eb042ull, 0x6bc5270c9a352ab7ull, 0x94feb03f277c3c01ull }}, {{ 0x7c9730c976b6caefull, 0xd68aad40c834c3deull, 0xabf057692ef5e5e0ull, 0x82d3ab764192e295ull, 0x35b3867e0613ab26ull, 0xd1f2e2778ada580eull }}, {{ 0xdde7e7dea323ed56ull, 0x616ac487d20fa6b0ull, 0xb7636a1bd59afac8ull, 0x1c44b29e8fbcd9d8ull, 0x190340ec3cc4af81ull, 0x337cd8ab6c87708eull }}, {{ 0xab0f0eb25f67455full, 0xce2bad4e349c82e8ull, 0x29e22516580dcbd3ull, 0x1aaefa319d608277ull, 0xfa20893a5faedb0bull, 0x02e076b23d4a658cull }}, {{ 0xae9692f7ba08b5baull, 0x0db4c50e0e1d1d16ull, 0xa2d572df7089f646ull, 0x0ad5c5f025c518a7ull, 0xc5455c47bcd48e6full, 0x1cc4a2f664e7f781ull }}, {{ 0xd1e1bdad44571940ull, 0x890fb28c8d2322e2ull, 0x5c567cba65639ebcull, 0x6c59bb6179b2f68cull, 0xb4b59acd604d9056ull, 0x1fae5d9ff10fab11ull }}, {{ 0x32d168c4ab66fc7dull, 0x5a9cf97d835f5cdcull, 0x9b60df47f5e4335dull, 0x3b8151cec0fda17bull, 0x0f180c05c307a360ull, 0x3ccfa83f6a9caeb1ull }}, {{ 0xfc2e17aeb205dcdeull, 0x8a21bee721b9a099ull, 0x11c8b8cf9aea01a5ull, 0x530d321389e84ed4ull, 0x96f078399e4c61c2ull, 0x601c927a2a1ed2eaull }}, {{ 0xd9ccecd2f43aa0adull, 0x6551750751404603ull, 0xb1d7381c0d241077ull, 0x3e83f4c363131448ull, 0xe564b2402efbd197ull, 0xc11db8c5a5343d29ull }}, {{ 0x8201403d8a4a46c2ull, 0xf52e92492c82bc26ull, 0xf26831188368a4a9ull, 0x71278fa1debecad6ull, 0xf5eef681d5d62fe8ull, 0x8b2937b8740a63a2ull }}, {{ 0x140c826766e6c390ull, 0x93d1b6dbbd1b5981ull, 0x7811eaf522166ea3ull, 0x6b8b9c52b373ec65ull, 0x9b55a1125a5ddf14ull, 0x6f9c2d348867e45dull }}, {{ 0xc87d180a0503a3a0ull, 0xc631249563117f0aull, 0xb0b32d9354e05263ull, 0x33741b3b02873bf6ull, 0x11584ab787aab6ccull, 0x5c19c40d540eeba8ull }}, {{ 0xd4e2f0643224643eull, 0xbdeb6dd5deaef66bull, 0xe6ffc7c150c337e5ull, 0x0289104e194857a2ull, 0xad72eb2b4cab23faull, 0x9901a88548953490ull }}, {{ 0x50dd63e9f56bea6aull, 0x6b324a5ab2d5a036ull, 0x05fdcd8d27a02ef9ull, 0x195aa30cfcd36c5dull, 0xc67d2fb0feaf67c4ull, 0xfa109534d5d40da6ull }}, {{ 0x28a5e72396372827ull, 0x2ff6e78afc58421full, 0x3bea07838c41d5beull, 0xfd8a5e81e0423ba2ull, 0xc0e3dce9f2da0da8ull, 0xc4a5d4105a488883ull }}, {{ 0x967b0763de279189ull, 0xdfa50b6ddb729537ull, 0x57244b237a92596dull, 0xe767b112c2965456ull, 0x88e6a1237c848899ull, 0xae7a48a386d55525ull }}, {{ 0xe0ce49e6ad8baf5eull, 0xbc72724a9279d42bull, 0x676aef62c9b77e4aull, 0x0a0ceabb99df4b5full, 0x59024b62dd2d5603ull, 0xd0c6d66344555377ull }}, {{ 0xc80ee302c774d9acull, 0x5c7876e9b8c249b6ull, 0x0a2d59dbe12aeeebull, 0x64812b5402b8f1baull, 0x7a16f1dca3c55c1eull, 0x27c45fe0ab5542a9ull }}, {{ 0xd094de1bca9080bcull, 0x9cb4a5213796e123ull, 0x65c58296cbad5531ull, 0xed0bb1481b397144ull, 0xc4e5729e65b5992full, 0x8dabbec6b1549a9eull }}, {{ 0x25d0ad15e9a5075aull, 0x1f0e734c2be4cb66ull, 0xf9b719e3f4c553f0ull, 0x4274ecd1103e6cabull, 0xb0f67a2ff917fbdfull, 0x88b573c2ed4e0a33ull }}, {{ 0x7a26c2db20724984ull, 0x369080f9b6eff1fdull, 0xc12702e78fb54761ull, 0x9891402aa2703eb7ull, 0xe9a0c5dfbaefd6b8ull, 0x5716859d450c6604ull }}, {{ 0xc5839c8f4476df27ull, 0x21a509c1255f73e6ull, 0x8b861d0b9d14c9ccull, 0xf5ac81aa5862732dull, 0x2047babd4d5e6335ull, 0x66e13824b27bfc31ull }}, {{ 0xb7241d98aca4b783ull, 0x5072618b75ba8703ull, 0x733d227422cfe1f9ull, 0x98bd10a773d87fc7ull, 0x42cd4b6505afe01bull, 0x04cc316ef8d7d9ebull }}, {{ 0x276927f6be6f2b19ull, 0x2477cf7299494625ull, 0x806358895c1ed3bdull, 0xf762a68a8674fdcaull, 0x9c04f1f238dec113ull, 0x2ff9ee55b86e8330ull }}, {{ 0x8a1b8fa37057aefeull, 0x6cae1a79fcdcbd73ull, 0x03e1755d99344563ull, 0xa9da81694091e9e9ull, 0x1831737638b38ac7ull, 0xdfc34f5934511fe6ull }}, {{ 0x65139c62636cd5f1ull, 0x3ecd08c3e09f6683ull, 0x26ce95a7fc0ab5e2ull, 0xa2890e1c85b3231aull, 0xf1ee829e37036bccull, 0xbda1197c0b2b3efcull }}, {{ 0xf2c41bd7e2405b69ull, 0x740257a6c63a0121ull, 0x8411d88fd86b1ad6ull, 0x595a8d1d38ff5f05ull, 0x73511a2e262235feull, 0x684afed86fb075e1ull }}, {{ 0x7ba9166ed683921eull, 0x88176c83be440b53ull, 0x28b2759e742f0c60ull, 0x7d89832439f9b637ull, 0x812b05cd7d561befull, 0x12edf4745ce49aceull }}, {{ 0xd49ae0546123b528ull, 0x50ea3d256ea87142ull, 0x96f8983089d67bc5ull, 0xe75f1f6a43c11e27ull, 0x0bae3a06e55d175aull, 0xbd4b8c8ba0ee0c11ull }}, {{ 0x4e0cc34bcb65138eull, 0x2926637652946c9cull, 0xe5b5f1e56260d5b5ull, 0x09b73a26a58b2d8bull, 0x74ce4444f5a2e98dull, 0x64f37d74494c78aaull }}, {{ 0x0c7fa0f5f1f2c38dull, 0x9b7fe29f39cc3e1bull, 0xf91b72f5d7c85913ull, 0x61284582776fc776ull, 0x900eaab1985d1f82ull, 0xf182e68adcfcb6a8ull }}, {{ 0x7cfc499b737ba37full, 0x12feda3841fa6d0eull, 0xbb127d9a6dd37ac4ull, 0xcb92b718aa5dcaa5ull, 0xa092aaeff3a33b17ull, 0x6f1d016ca1df2295ull }}, {{ 0xe1dae01282d462f8ull, 0xbdf4863293c84290ull, 0x4eb8e8084a42cba8ull, 0xf3bb26f6a7a9ea79ull, 0x45baad5f84604eedull, 0x57220e3e52b759d8ull }}, {{ 0xd28cc0b91c4bddacull, 0x6b8d3df9c5d299a8ull, 0x13391052e69bf497ull, 0x854f85a28ca328bdull, 0xb94ac5bb2bc3154bull, 0x67548e6f3b298272ull }}, {{ 0x397f873b1af6a8bbull, 0x33846bc1ba3a0098ull, 0xc03aa33d02178deaull, 0x351b38597e5f9762ull, 0x3cebb94fb59ed4f3ull, 0x094d90584f9f187bull }}, {{ 0x3efb484f0da29753ull, 0x032c3591464405f2ull, 0x824a606214eb8b26ull, 0x1310337eefbbe9dbull, 0x61353d1d18345180ull, 0x5d07a3731c36f4d0ull }}, {{ 0x75d0d3168859e93cull, 0x1fba17acbea83b76ull, 0x16e7c3d4d1336f7cull, 0xbea202f55d572293ull, 0xcc146322f20b2f00ull, 0xa24c627f1a259023ull }}, {{ 0x9a283ee153831c56ull, 0x3d44ecbf729252a0ull, 0xe50da6502c025ad9ull, 0x72541d95a56759beull, 0xf8cbdf5d746fd607ull, 0x56fbd8f70577a165ull }}, {{ 0x059274cd431f1b60ull, 0x64b13f7a79b73a46ull, 0xf2887f21b8178c7cull, 0x774927d876098174ull, 0xb7f6b9a68c5e5c4aull, 0x65d679a636ac4dfbull }}, {{ 0x37b890049f3711bdull, 0xeeec7ac8c12846bcull, 0x7954f75130eb7cdbull, 0xa8db8e749c5f0e91ull, 0x2fa340817baf9ae8ull, 0xfa60c07e22bb0bd5ull }}, {{ 0x2d35a02e3826b166ull, 0x553ccbd78b92c35aull, 0xbd51a92be932e097ull, 0x9893908e1bb691aeull, 0xdc60850ed4dc0d16ull, 0xc7c784ed5b4e7653ull }}, {{ 0xc41841ce3182edfdull, 0x545ff66b73bba185ull, 0x65309bb71bfcc5e9ull, 0xf5c3a58d1521b0d3ull, 0x9bc53294509882e1ull, 0xcdcb314591109f46ull }}, {{ 0xa8f2920def1d4bddull, 0x4bbfa03285544f39ull, 0xf3e6152717dfbb1dull, 0x99a47782d350e841ull, 0x15b3f9cb25f51cd3ull, 0x09efecb7aaa638c2ull }}, {{ 0x9979b48b5724f6a5ull, 0xf57c41f9354b1840ull, 0x86fcd386eebd4f24ull, 0x006cab1c41291293ull, 0xd907c1ef7b932044ull, 0x635f3f2caa7e3794ull }}, {{ 0xfec10d716771a272ull, 0x96da93bc14eef285ull, 0x45e0434553651771ull, 0x043eaf1a8b9ab9c3ull, 0x7a4d935ad3bf42a8ull, 0xe1b877bea8ee2bd0ull }}, {{ 0xf38a866e0a705871ull, 0xe489c558d155793bull, 0xbac2a0b541f2ea6full, 0x2a72d709740b41a0ull, 0xc707c18c45789a90ull, 0xd134ad72994db624ull }}, {{ 0x8369404c68637467ull, 0xed61b5782d56bc57ull, 0x4b9a4714937d285eull, 0xa87c665e88709047ull, 0xc64d8f7ab6b609a1ull, 0x2c0ec679fd091d6full }}, {{ 0x221c82fc13e28c08ull, 0x45d116b1c5635b6bull, 0xf406c6cdc2e393b5ull, 0x94dbffb15465a2c8ull, 0xbf079acb231c6050ull, 0xb893c0c3e25b265dull }}, {{ 0x551d1dd8c6d97854ull, 0xba2ae2f1b5e1922full, 0x8843c4099ce3c514ull, 0xd097fced4bf85bd9ull, 0x764c0bef5f1bc325ull, 0x35c587a6d78f7fa9ull }}, {{ 0x53232a77c47eb346ull, 0x45acdd711acfb5d9ull, 0x52a5a86020e5b2cfull, 0x25efe144f7b3967full, 0x9ef87759b7159f7aull, 0x19b74c846b9afc9eull }}, {{ 0x3f5fa8adacf300c0ull, 0xb8c0a66b0c1d1a7dull, 0x3a7893c148f8fc18ull, 0x7b5eccb1ad03e0f9ull, 0x35b4a98126d83ac5ull, 0x0128fd2c340dde32ull }}, {{ 0x79bc96c8c17e077cull, 0x3786802e792308e4ull, 0x48b5c58cd9b9d8f7ull, 0xd1b3fef0c226c9bcull, 0x190e9f0b84724bb6ull, 0x0b99e3ba088aadf6ull }}, {{ 0xc15de3d78eec4ad5ull, 0x2b4101d0bb5e58ecull, 0xd719b780814279a8ull, 0x3107f5679583e15aull, 0xfa9236732c76f524ull, 0x7402e544556acb9cull }}, {{ 0x8daae66b953aec51ull, 0xb08a122751af793full, 0x67012b050c98c091ull, 0xea4f960bd726cd8cull, 0xc9b6207fbca59369ull, 0x881cf4ab562bf421ull }}, {{ 0x88ad0033d44d3b28ull, 0xe564b58930dabc7bull, 0x060bae327df785b0ull, 0x271bdc766784077cull, 0xe11d44fd5e77c223ull, 0x51218eb15db78951ull }}, {{ 0x56c202064b044f95ull, 0xf5ef175be88b5cd3ull, 0x3c74cdf8ebab38e8ull, 0x87169ca00b284ad8ull, 0xcb24b1e5b0ad955full, 0x2b4f92eda92b5d32ull }}, {{ 0x6394143eee2b1bcfull, 0x9b56e9971571a041ull, 0x5c900bb934b03919ull, 0x46e21e406f92ec72ull, 0xef6ef2f8e6c7d5bbull, 0xb11bbd489bb1a3fbull }}, {{ 0xe3c8ca754daf1612ull, 0x11651fe6d670428dull, 0x9da0753c0ee23b00ull, 0xc4d52e845bbd3c77ull, 0x5a557db903ce5950ull, 0xeb1564d614f067d7ull }}, {{ 0xe5d7e89508d6dcb5ull, 0xadf33f046062998aull, 0x2844945894d64e00ull, 0xb053d12b95645cacull, 0x8756e93a260f7d27ull, 0x2ed5f05cd1640e69ull }}, {{ 0xfa6f15d258649f0eull, 0xcb80762bc3d9ff6cull, 0x92adcb75d05f0c06ull, 0xe3462bb3d5eb9eb9ull, 0x49651c457c9ae38cull, 0xd45b63a02de8901full }}, {{ 0xc856da3773ee368eull, 0xf3049db5a683fa41ull, 0xbac9f29a23b67843ull, 0xe0bdb5065b34333full, 0xddf31ab6de0ce380ull, 0x4b91e441cb15a138ull }}, {{ 0xd364862a874e2189ull, 0x7e2e29188127c691ull, 0x4be37a056520b2a7ull, 0xc769123f900a007dull, 0xab7f0b24ac80e308ull, 0xf3b2ea91eed84c38ull }}, {{ 0x41ed3da9490d4f5aull, 0xedcd9af50b8dc1b2ull, 0xf6e2c435f346fa8aull, 0xca1ab67ba06404e4ull, 0xb2f66f6ebd08de57ull, 0x84fd29b35472fa36ull }}, {{ 0x9344689cda851981ull, 0x4a080d92738990f6ull, 0xa4dbaa1b80c5c96dull, 0xe50b20d443e830f1ull, 0xfda05a536258af6dull, 0x31e3a1014c7dc622ull }}, {{ 0xc0ac16208932ff09ull, 0xe45087b8835fa9a1ull, 0x7094a51307b9de44ull, 0xf26f484aa711e970ull, 0xe8438741d776da4aull, 0xf2e44a0cfce9bd5dull }}, {{ 0x86b8dd455bfdf65bull, 0xeb254d3521bca051ull, 0x65ce72be4d42aeb0ull, 0x7858d2ea86b31e64ull, 0x12a348926aa486edull, 0x7ceae481e12165abull }}, {{ 0x4338a4b597eb9f8dull, 0x2f750413515e432full, 0xfa107b6f049ad2e9ull, 0xb3783d2942ff2febull, 0xba60d5b82a6d4546ull, 0xe12ced12cb4df8aeull }}, {{ 0xa0366f17ef343b80ull, 0xda9228c12dae9fd8ull, 0xc4a4d2562e0c3d1bull, 0x02b2639c9df7df37ull, 0x47c85931a844b4c3ull, 0xcbc142bbf10bb6d3ull }}, {{ 0x422056ef580a5303ull, 0x89b5978bc8d23e76ull, 0xae70375dcc7a6316ull, 0x1af7e41e2baeb82dull, 0xcdd37bf092af0f9eull, 0xf58c9b576a752440ull }}, {{ 0x9543655970673e1full, 0x6117eb75d836709eull, 0xd06229a9fcc7dee1ull, 0x0daee92db4d331c8ull, 0x0a42d765bad69c2dull, 0x977e116a28936a88ull }}, {{ 0xd4a1f57e64086d39ull, 0xcaef329a72206631ull, 0x23d5a0a3dfceb4cdull, 0x88d51bc9103ff1d8ull, 0x669c69f94c6219c2ull, 0xeaecae2595c22950ull }}, {{ 0x4e5396efe854443eull, 0xed57fa087543fdf2ull, 0x66584666be131009ull, 0x585315daa27f7271ull, 0x021c23bcfbd50199ull, 0x2d3ecd77d9959d24ull }}, {{ 0x0f43e55f134aaa6full, 0x456fc45494a7eb77ull, 0xff72c0036cbea063ull, 0x733eda8a58fa786dull, 0x15196561d6520ffdull, 0xc47406ae7fd82368ull }}, {{ 0x98a6f5b6c0eaa856ull, 0xb65dab4dce8f32a6ull, 0xfa7b80223f7243e0ull, 0x8074896779c8b44bull, 0xd2fdf5d25f349fe6ull, 0xac8842d0fe716210ull }}, {{ 0xf6859923892a935aull, 0x1fa8b10a1197fa81ull, 0xc8d301567a76a6c7ull, 0x048d5e0ac1d70af7ull, 0x3deb9a37b80e3f01ull, 0xbd529c29f06dd4a8ull }}, {{ 0xa137fb635ba9c181ull, 0x3c96ea64afefc913ull, 0xd83e0d60c8a283c7ull, 0x2d85ac6b92666dadull, 0x6b34062d308e760aull, 0x653a19a3644a4e92ull }}, {{ 0x4c2fd1e194a18f09ull, 0x5de527eedf5ddac4ull, 0x726c85c7d65925c8ull, 0xc738bc33b80048caull, 0x30083dc3e5909c65ull, 0xf4450061eae711b8ull }}, {{ 0xf9de32cfce4f965full, 0xaaf38f54b9aa8baaull, 0x783d39ce5f7b79d3ull, 0xc8375a053002d7e8ull, 0xe05269a6f7a61bf9ull, 0x8ab203d32d06b131ull }}, {{ 0xc2adfc1e0f1bdfb5ull, 0xad83994f40a974adull, 0xb264420fbad2c244ull, 0xd2298433e01c6f14ull, 0xc3382085ac7d17c1ull, 0x6af4263fc242ebf2ull }}, {{ 0x9acbd92c9716bd15ull, 0xc723fd18869e8ec9ull, 0xf7ea949d4c3b96aeull, 0x359f2a06c11c56ceull, 0xa0314538bce2ed92ull, 0x2d897e7d969d377bull }}, {{ 0x0bf67bbde6e362d4ull, 0xc767e2f5423193e0ull, 0xaf29ce24fa53e2d3ull, 0x1837a4438b1b6415ull, 0x41ecb43760dd47b6ull, 0xc75ef0e7e2242ad4ull }}, {{ 0x77a0d56b04e1dc47ull, 0xca0edd9495efc6c0ull, 0xd7a20d71c746dc45ull, 0xf22c6aa36f11e8d8ull, 0x933f0a29c8a4cd1cull, 0xc9b5690ed569ac4aull }}, {{ 0xac48562e30d29ac6ull, 0xe494a7cddb5dc384ull, 0x6c548671c8c49ab9ull, 0x75bc2a6256b31878ull, 0xc07665a1d6700321ull, 0xe1161a945620bae9ull }}, {{ 0xbad35dcde83a0bbbull, 0xedce8e0a91a9a32eull, 0x3b4d4071d7ae0b42ull, 0x9959a7d762fef4b4ull, 0x849ff85260601f4eull, 0xcadd09cb5d474d21ull }}, {{ 0x4c41aa0b1244754cull, 0x4a118c69b0a05fd3ull, 0x510484726ccc709dull, 0xfd808e69ddf58f0aull, 0x2e3fb337c3c13911ull, 0xeca261f1a4c9034full }}, {{ 0xfa90a46eb6ac94faull, 0xe4af7c20e643be40ull, 0x2a2d2c783ffc6624ull, 0xe7059022ab979667ull, 0xce7d002da58c3ab3ull, 0x3e57d3706fda2117ull }}, {{ 0xc9a66c5322bdd1c1ull, 0xeedad948fea56e89ull, 0xa5c3bcb27fdbfd70ull, 0x0637a15ab3ebe007ull, 0x10e201c8777a4b07ull, 0x6f6e42645e854aeeull }}, {{ 0xe0803b3f5b6a3187ull, 0x548c7cd9f2765161ull, 0x79a55ef8fe97e669ull, 0x3e2c4d8b0736c04cull, 0xa8d411d4aac6ee46ull, 0x5a4e97ebb134ed4cull }}, {{ 0xc50250799225ef43ull, 0x4d7ce083789f2dd2ull, 0xc075b5b9f1ef001dull, 0x6dbb076e482382fcull, 0x9848b24eabc54ebeull, 0x8711ef34ec1144feull }}, {{ 0xb21724bfb57b589eull, 0x06e0c522b637ca3bull, 0x8499194373560125ull, 0x494e4a4ed1631ddfull, 0xf2d6f712b5b51370ull, 0x46b3581138acb1f1ull }}, {{ 0xf4e76f7d16d1762full, 0x44c7b35b1e2de654ull, 0x2dfafca2815c0b72ull, 0xdd0ee7142ddf2abbull, 0x7c65a6bb1912c262ull, 0xc30170ac36bef373ull }}, {{ 0x910a5ae2e42e9ddaull, 0xafcd018f2dcaff51ull, 0xcbcdde590d987276ull, 0xa29506c9cab7ab4full, 0xdbf8834efabb97dcull, 0x9e0e66ba23758282ull }}, {{ 0xaa678cdce9d22a87ull, 0xde020f97c9edf92full, 0xf60aaf7a87f478a2ull, 0x59d243e1eb2cb11dull, 0x97b52115cb53ee9eull, 0x2c9003456297191cull }}, {{ 0xa80b80a12235a947ull, 0xac149bede34bbbdcull, 0x9c6adac94f8cb65cull, 0x8236a6d32fbeeb2bull, 0xed134ad9f147522full, 0xbda020b5d9e6fb1dull }}, {{ 0x9073064b56189cc2ull, 0xb8ce174ae0f5569eull, 0x1c2c8bdd1b7f1f9eull, 0x1622843fdd752fb4ull, 0x42c0ec836cc935dbull, 0x6841471a8305cf2bull }}, {{ 0xa47e3ef15cf61f91ull, 0x380ce8ecc9956231ull, 0x19bd76a312f73c33ull, 0xdd592a7ea693dd09ull, 0x9b893d223fdc1a8eull, 0x128cc7091e3a17b0ull }}, {{ 0x6cee756da19d3baeull, 0x3081193fdfd5d5f0ull, 0x0166a25ebda85a00ull, 0xa57ba8f281c6a25bull, 0x135c63567e990994ull, 0xb97fc65b2e44ece6ull }}, {{ 0x41509648502454c7ull, 0xe50afc7ebe5a5b64ull, 0x0e0257b368938401ull, 0x76d4997911c2578eull, 0xc19be160f1fa5fceull, 0x3efdbf8fceb140fcull }}, {{ 0x8d25ded3216b4fc7ull, 0xf26ddcf36f8791eaull, 0x8c176d0215c32812ull, 0xa44dfebab1976b8cull, 0x9016cdc973c7be10ull, 0x75e97b9e12ec89dfull }}, {{ 0x837ab43f4e311dc7ull, 0x784aa1825b4bb329ull, 0x78ea4214d99f90bdull, 0x6b0bf34aefea337dull, 0xa0e409de85cd6ca6ull, 0x9b1ed42cbd3d62bbull }}, {{ 0x22cb0a790deb29c3ull, 0xb2ea4f1790f4ff9full, 0xb92694d0803ba766ull, 0x2e7780ed5f2602e6ull, 0x48e862b13a063e80ull, 0x0f3449bf6465db54ull }}, {{ 0x5bee68ba8b2fa19bull, 0xfd2716eba991fc37ull, 0x3b81d02502548a02ull, 0xd0ab0945b77c1d03ull, 0xd913daec443e7101ull, 0x980ae179ebfa914aull }}, {{ 0x975017496fdc5010ull, 0xe386e5349fb3da29ull, 0x53122172174d641dull, 0x26ae5cb92ad92220ull, 0x7ac68d3aaa706a12ull, 0xf06ccec337c9acecull }}, {{ 0xe920e8de5e9b209eull, 0xe344f40e3d06859full, 0x3eb54e74e905e92aull, 0x82cf9f3bac7b5543ull, 0xcbc1844aa86424b5ull, 0x644013a02de0c13cull }}, {{ 0x1b4918afb20f462cull, 0xe0b1888e6241383full, 0x731510911a3b1bacull, 0x1c1c3854bcd154a0ull, 0xf58f2aea93e96f17ull, 0xea80c441cac78c5full }}, {{ 0x10daf6dcf498bdb8ull, 0xc6ef558fd68c3277ull, 0x7ed2a5ab064f14c0ull, 0x191a334f602d4e44ull, 0x9797ad29c71e56e7ull, 0x2907aa91ebcb7bbfull }}, {{ 0xa88da4a18df76934ull, 0xc559579e6179f8a6ull, 0xf43a78ae3f16cf87ull, 0xfb060119c1c50eacull, 0xebecc3a1c72f6506ull, 0x9a4ca9b335f2d57bull }}, {{ 0x95886e4f8baa1c09ull, 0xb57d6c2fcec3b682ull, 0x8a48b6ce76e41b4dull, 0xce3c0b0191b292c1ull, 0x373fa451c7d9f245ull, 0x06fea1001b7c56d7ull }}, {{ 0xd7544f1b74a5185bull, 0x16e639de13a52119ull, 0x66d72410a4e91109ull, 0x0e586e0fb0f9bb8full, 0x287c6b31ce8376baull, 0x45f24a0112db6468ull }}, {{ 0x694b17128e72f38dull, 0xe4fe42acc4734b02ull, 0x046768a6711aaa5aull, 0x8f744c9ce9c1539aull, 0x94dc2ff21122a344ull, 0xbb76e40abc91ec11ull }}, {{ 0x1ceee6b9907d8385ull, 0xf1ee9abfac80ee18ull, 0x2c0a16806b0aa78cull, 0x9a8afe21218d4404ull, 0xd099df74ab5a60adull, 0x52a4e86b5db338afull }}, {{ 0x2155033fa4e72334ull, 0x73520b7cbd094cf1ull, 0xb864e1042e6a8b81ull, 0x096ded4b4f84a829ull, 0x2602ba8eb187c6c8ull, 0x3a711431a90036deull }}, {{ 0x4d52207c71076007ull, 0x813472df625d016bull, 0x33f0ca29d029730eull, 0x5e4b44f11b2e91a1ull, 0x7c1b4992ef4dc3d0ull, 0x486ac9f09a0224adull }}, {{ 0x053544dc6a49c048ull, 0x0c0c7cb9d7a20e31ull, 0x0767e5a2219e7e91ull, 0xaef0b16b0fd1b04cull, 0xd910dfbd5909a623ull, 0xd42be36604156ec6ull }}, {{ 0x3414b09c26e182d1ull, 0x787cdf426c548deaull, 0x4a0ef8555030f1aaull, 0xd566ee2e9e30e2f8ull, 0x7aa8bd657a607d64ull, 0x49b6e1fc28d653c4ull }}, {{ 0x08cee61984cf1c26ull, 0xb4e0b8983b4d8b26ull, 0xe495b35521e970a8ull, 0x56054dd22de8ddb2ull, 0xca9765f6c7c4e5f0ull, 0xe124d3d9985f45acull }}, {{ 0x5814fcff30171979ull, 0x10c735f251076f7cull, 0xedd90153531e6697ull, 0x5c350a35cb18a8fcull, 0xe9e9fba3cdb0fb63ull, 0xcb70467ff3b8b8bfull }}, {{ 0x70d1e1f7e0e6feb9ull, 0xa7c81b772a4a5adbull, 0x4a7a0d413f3001e6ull, 0x9a126619eef699e1ull, 0x2323d46608e9d1e1ull, 0xf262c0ff8537377full }}, {{ 0x6832d3aec905f338ull, 0x8dd112a7a6e78c92ull, 0xe8c4848c77e01302ull, 0x04b7fd0355a202ccull, 0x5f664bfc592232d0ull, 0x77db89fb34282af7ull }}, {{ 0x11fc44d3da3b802eull, 0x8a2aba8c850b7db8ull, 0x17ad2d7caec0be19ull, 0x2f2fe22158541c01ull, 0xb9fef7db7b55fc20ull, 0xae9363d00991ada9ull }}, {{ 0xb3dab046865301ccull, 0x65ab497d3272e930ull, 0xecc3c6ded3876cffull, 0xd7ded54d7349180aull, 0x43f5ae92d15bd941ull, 0xd1c1e6205fb0c8a1ull }}, {{ 0x068ae2c13f3e11f4ull, 0xf8b0dee3f87d1be7ull, 0x3fa5c4b4434a41f9ull, 0x6eb4550680daf06dull, 0xa798d1bc2d967c92ull, 0x3192fd43bce7d64cull }}, {{ 0x416cdb8c786cb389ull, 0xb6e8b4e7b4e31706ull, 0x7c79af0aa0e693c3ull, 0x530b5241088d6444ull, 0x8bf83159c7e0ddb8ull, 0xefbde4a5610e5efeull }}, {{ 0x8e40937cb43f035aull, 0x2517110d10dee63eull, 0xdcc0d66a4901c5a5ull, 0x3e71368a5585eaacull, 0x77b1ed81cec8a933ull, 0x5d6aee75ca8fb5f1ull }}, {{ 0x8e85c2df0a762184ull, 0x72e6aa82a8b4fe71ull, 0x9f886026da11b873ull, 0x706c2167573b2ac0ull, 0xacf3471213d69c00ull, 0xa62d5099e99d1b6eull }}, {{ 0x91399cb6689d4f29ull, 0x7d02a91a9711f06full, 0x3b53c18484b13482ull, 0x64394e09684fab86ull, 0xc180c6b4c6621804ull, 0x7dc5260320231252ull }}, {{ 0xac401f2016251799ull, 0xe21a9b09e6b3645bull, 0x51458f2d2eec0d18ull, 0xea3d0c5e131cb33eull, 0x8f07c30fbfd4f02bull, 0xe9b37c1f415eb73bull }}, {{ 0xba813740dd72ebf5ull, 0xd50a0e630301eb94ull, 0x2cb797c3d53882f8ull, 0x26627bacbf1f006full, 0x964d9e9d7e5161b7ull, 0x2102d9388db32853ull }}, {{ 0x490c2888a67d3794ull, 0x52648fde1e1333cfull, 0xbf2beda654351db8ull, 0x7fd8d4bf77360457ull, 0xdf083226ef2dd127ull, 0x4a1c7c3588ff9343ull }}, {{ 0xda79955680e42bccull, 0x37ed9ead2cc00618ull, 0x77b7487f4a132933ull, 0xfe784f7aa81c2b6dull, 0xb651f58557ca2b8aull, 0xe51cda1759fbc0a6ull }}, {{ 0x88bfd56108e9b5faull, 0x2f4832c3bf803cf8ull, 0xad28d4f8e4bf9c00ull, 0xf0b31aca9119b246ull, 0x1f3397356de5b36dull, 0xf32084e983d58683ull }}, {{ 0x577e55ca59211bc2ull, 0xd8d1fba57b0261b5ull, 0xc39851b8ef7c1801ull, 0x66ff0be9ab00f6c2ull, 0x3803e8164af9024bull, 0x7f45311f2657411full }}, {{ 0x6aef59e77b4b1598ull, 0x7833d476ce17d115ull, 0xa3f331395ad8f012ull, 0x05f67720ae09a39bull, 0x302710deedba16f2ull, 0xf8b3eb377f688b38ull }}, {{ 0x2d59830ad0eed7f2ull, 0xb2064ca40cee2ad6ull, 0x677fec3d8c7960b8ull, 0x3ba0a746cc606414ull, 0xe186a8b54944e574ull, 0xb707302afa157031ull }}, {{ 0xc57f1e6c29546f74ull, 0xf43efe68814dac5dull, 0x0aff3a677cbdc736ull, 0x544688c3fbc3e8ccull, 0xcf429714dcb0f68aull, 0x2647e1adc4d661f2ull }}, {{ 0xb6f730399d4c5a85ull, 0x8a75f0150d08bba9ull, 0x6df8480adf69c825ull, 0x4ac157a7d5a717f8ull, 0x1899e6d09ee9a167ull, 0x7eced0c9b05fd37cull }}, {{ 0x25a7e24024fb8932ull, 0x689b60d2825754a1ull, 0x4bb2d06cba21d177ull, 0xeb8d6c8e5886efb4ull, 0xf603042635204e08ull, 0xf41427e0e3be42d8ull }}, {{ 0x788ed68171d35bf4ull, 0x1611c83917694e4bull, 0xf4fc243f45522eaaull, 0x33863d8f75455d0aull, 0x9c1e297e13430c59ull, 0x88c98ec8e56e9c79ull }}, {{ 0xb594610e72419789ull, 0xdcb1d23aea1d0ef2ull, 0x91d96a78b535d2a4ull, 0x033e679a94b5a26dull, 0x192d9eecc09e7b7cull, 0x57df93d8f6521cc0ull }}, {{ 0x17cbca90768feb5bull, 0x9ef2364d2522957bull, 0xb27e28b7141a3a70ull, 0x20700c09cf185847ull, 0xfbc8353f8630d2d8ull, 0x6ebbc6799f351f80ull }}, {{ 0xedf5e9a4a19f318eull, 0x35761f037359d6ceull, 0xf8ed9726c9064866ull, 0x4460786216f372ccull, 0xd5d2147b3de83c71ull, 0x5355c0c038133b09ull }}, {{ 0x4b9b206e5037ef8full, 0x169d362281826415ull, 0xb947e783da3ed3feull, 0xabc4b3d4e5827c01ull, 0x5a34ccd06b125c6cull, 0x4159878230c04e62ull }}, {{ 0xf40f444f222f5b98ull, 0xe2241d590f17e8d4ull, 0x3ccf0b26867447ecull, 0xb5af0650f718d811ull, 0x861000242eb79c3eull, 0x8d7f4b15e7830fd7ull }}, {{ 0x8898ab1755d993ecull, 0xd569257a96ef1851ull, 0x60166f81408acf40ull, 0x18d63f29a6f870acull, 0x3ca00169d32c1a73ull, 0x86f8eedb0b1e9e6bull }}, {{ 0x55f6aee95a7fc734ull, 0x561b76c9e556f32full, 0xc0e05b0c856c1888ull, 0xf85e77a085b466bbull, 0x5e400e223fb9087eull, 0x45b9548e6f323030ull }}, {{ 0x5ba2d51d88fdc80cull, 0x5d12a3e2f5657fd9ull, 0x88c38e7d3638f553ull, 0xb3b0ac45390c0355ull, 0xae808d567d3a54f5ull, 0xb93d4d9057f5e1e3ull }}, {{ 0x945c532759e9d073ull, 0xa2ba66dd95f6fe7dull, 0x57a390e41e399541ull, 0x04e6bab43a782157ull, 0xd1058560e4475199ull, 0x3c6507a36f9ad2e4ull }}, {{ 0xcb9b3f8983222481ull, 0x5b4804a7dba5f0e7ull, 0x6c63a8e92e3fd490ull, 0x31034b0a48b14d69ull, 0x2a3735c8eac92ffaull, 0x5bf24c625c0c3cf0ull }}, {{ 0xf4107b5f1f556d07ull, 0x90d02e8e947b690dull, 0x3be4991bce7e4da3ull, 0xea20ee66d6ed061eull, 0xa62819d92bdbdfc5ull, 0x9776fbd7987a6161ull }}, {{ 0x88a4d1b73956424aull, 0xa821d191ccd21a8bull, 0x56edfb1610ef0863ull, 0x2549500465423d2eull, 0x7d91027bb696bdbbull, 0xeaa5d66bf4c7cdd0ull }}, {{ 0x567031283d5e96e6ull, 0x91522fb200350973ull, 0x654bcedca95653e4ull, 0x74dd202bf49663cfull, 0xe7aa18d521e3694full, 0x2a7a60378fce0a24ull }}, {{ 0x6061eb9265b1e4fcull, 0xad35dcf402125e81ull, 0xf4f6149e9d5f46edull, 0x90a341b78ddfe619ull, 0x0ca4f85352e21d1aull, 0xa8c7c22b9e0c6571ull }}, {{ 0xc3d333b7f8f2f1d7ull, 0xc41aa18814b7b10dull, 0x919cce3225b8c548ull, 0xa660912b8abefd03ull, 0x7e71b3413cd52309ull, 0x97cd95b42c7bf66aull }}, {{ 0xa640052fb97d7266ull, 0xa90a4f50cf2cea89ull, 0xb0200df57937b4d7ull, 0x7fc5abb36b75e223ull, 0xf071008c60535e60ull, 0xee07d909bcd7a028ull }}, {{ 0x7e8033dd3ee67801ull, 0x9a67192817c12960ull, 0xe1408b96bc2d106cull, 0xfdb8b502329ad564ull, 0x646a057bc341afc4ull, 0x4c4e7a61606c4199ull }}, {{ 0xf10206a47500b008ull, 0x0806fb90ed8b9dc4ull, 0xcc8573e359c2a43eull, 0xe9371215fa0c55f0ull, 0xec2436d5a090ddb1ull, 0xfb10c7cdc43a8ffdull }}, {{ 0x6a14426c9206e055ull, 0x5045d3a9477429b1ull, 0xfd3686e1819a6a6cull, 0x1c26b4dbc47b5b67ull, 0x396a245845a8a8f3ull, 0xcea7ce09aa499febull }}, {{ 0x24ca983db444c34eull, 0x22ba449cca89a0eeull, 0xe42144cf1008283bull, 0x19831095acd1920full, 0x3e256b72b896997full, 0x128e0c60a6e03f30ull }}, {{ 0x6fe9f2690aafa10full, 0x5b46ae1fe960494dull, 0xe94cb016a051924full, 0xff1ea5d8c02fb49eull, 0x6d76327b35e1fef6ull, 0xb98c7bc684c277e2ull }}, {{ 0x5f23781a6adc4a98ull, 0x90c2cd3f1dc2dd06ull, 0x1cfee0e2432fb719ull, 0xf7327a7781dd0e35ull, 0x469df8d01ad3f5a5ull, 0x3f7cd5c12f98aed8ull }}, {{ 0xb762b1082c9ae9f1ull, 0xa79c0477299ca23full, 0x21f4c8d69fdd26ffull, 0xa7f8c8ab12a28e13ull, 0xc22bb8210c47987bull, 0x7ae0598bdbf6d472ull }}, {{ 0x29daea51be0d2365ull, 0x8c182ca7a01e567dull, 0x538fd8623ea385fcull, 0x8fb7d6aeba598cbfull, 0x95b5314a7acbf4d4ull, 0xccc37f7697a44c7bull }}, {{ 0xa28d27316c8361f4ull, 0x78f1be8c412f60e3ull, 0x439e73d672633bddull, 0x9d2e62d3477f7f79ull, 0xd913ece8cbf7904dull, 0xffa2faa1ec6afcd3ull }}, {{ 0x598387ee3d21d384ull, 0xb971717a8bd9c8e4ull, 0xa430866077e056a6ull, 0x23cfdc40cafafabcull, 0x7ac74117f7aba308ull, 0xfc5dca533c2de046ull }}, {{ 0x7f234f4e63524328ull, 0x3e6e6ec97681d8ebull, 0x69e53fc4aec36283ull, 0x661e9a87edcdcb5eull, 0xcbc88aefacb45e51ull, 0xdba9e74059cac2c0ull }}, {{ 0xf761190fe1369f8eull, 0x705053dea1127932ull, 0x22f47daed3a1d920ull, 0xfd32094f4a09f1b0ull, 0xf5d56d5cbf0baf2dull, 0x94a3088381eb9b87ull }}, {{ 0xa9cafa9ecc223b88ull, 0x632346b24ab8bbfdull, 0x5d8ce8d444527b44ull, 0xe3f45d18e46370e1ull, 0x9a56459f7674d7cbull, 0xce5e55231334134full }}, {{ 0xa1edca33f9565351ull, 0xdf60c2f6eb3757e8ull, 0xa781184aab38d0abull, 0xe78ba2f8ebe268cdull, 0x075eb83aa0906df6ull, 0x0faf535ec008c11cull }}, {{ 0x5349e607bd5f4129ull, 0xb9c79da530296f16ull, 0x8b0af2eab03826b6ull, 0x0b745db936d81808ull, 0x49b3324a45a44ba5ull, 0x9cd941b380578b18ull }}, {{ 0x40e2fc4d65b88b9cull, 0x41cc2873e19e56dfull, 0x6e6d7d2ae2318323ull, 0x728ba93c2470f055ull, 0xe0fff6e6b86af472ull, 0x207c9103036b6ef2ull }}, {{ 0x88dddb05f9357416ull, 0x91f99486d02f64b8ull, 0x5046e3acd5ef1f60ull, 0x79749c596c696356ull, 0xc9ffa503342d8c78ull, 0x44ddaa1e2232557cull }}, {{ 0x58aa8e3bbc1688dfull, 0xb3bfcd4421d9ef35ull, 0x22c4e4c05b5739c5ull, 0xbe8e1b7e3c1de15full, 0xe3fc722009c77cb4ull, 0xb0a8a52d55f756dfull }}, {{ 0x76a98e5558e158b6ull, 0x057e04a952835815ull, 0x5bb0ef83916841b9ull, 0x718d12ee592acdb7ull, 0xe7dc754061cadf0full, 0xe69673c55ba964beull }}, {{ 0xa29f8f5578cd7719ull, 0x36ec2e9d392170d6ull, 0x94e95b23ae12913aull, 0x6f82bd4f7bac0929ull, 0x0e9c9483d1ecb69aull, 0x01e085b5949def75ull }}, {{ 0x5a3b9956b806a6f9ull, 0x2539d2243b4e6862ull, 0xd11d8f64ccb9ac46ull, 0x5b1b651ad4b85b9full, 0x921dcd26333f2208ull, 0x12c53917ce2b5a92ull }}, {{ 0x8653fd63304285b8ull, 0x7442356a511013d7ull, 0x2b2799efff40babdull, 0x8f11f30c4f33943eull, 0xb52a037e00775453ull, 0xbbb43aee0db189b9ull }}, {{ 0x3f47e5dfe2993934ull, 0x8a9616272aa0c66bull, 0xaf8c035ff8874b66ull, 0x96b37e7b1803ca6dull, 0x13a422ec04a94b43ull, 0x550a4d4c88ef6141ull }}, {{ 0x78cefabed9fc3c04ull, 0x69dcdd87aa47c030ull, 0xdb7821bfb548f201ull, 0xe302f0cef025e848ull, 0xc4695d382e9cf0a3ull, 0x526704fd5959cc8aull }}, {{ 0xb815cb7483da5827ull, 0x22a0a74ca6cd81e4ull, 0x92b1517d14d9740eull, 0xde1d6815617b12d8ull, 0xac1da431d2216666ull, 0x380631e57d81fd6bull }}, {{ 0x30d9f28d26877185ull, 0x5a4688fe840712efull, 0xbaed2ee2d07e888dull, 0xad2610d5cecebc75ull, 0xb92869f2354e0004ull, 0x303df2f6e713e634ull }}, {{ 0xe8837983814a6f2eull, 0x86c159f12846bd57ull, 0x4d43d4dc24f15585ull, 0xc37ca85a14135c99ull, 0x3b942376150c002eull, 0xe26b7da506c6fe0full }}, {{ 0x1522bf230ce857caull, 0x438d836b92c3656full, 0x04a65099716d5737ull, 0xa2de9384c8c19dfdull, 0x53c9629cd27801d3ull, 0xd832e87243c5ec98ull }}, {{ 0xd35b775e81136de9ull, 0xa3872233bba1f656ull, 0x2e7f25fe6e456828ull, 0x5cb1c32fd7902be2ull, 0x45ddda2038b01244ull, 0x71fd1476a5bb3df3ull }}, {{ 0x4192a9b10ac24b19ull, 0x6347560554539f64ull, 0xd0f77bf04eb61196ull, 0x9ef19fde6ba1b6d5ull, 0xbaaa854236e0b6abull, 0x73e2cca279506b80ull }}, {{ 0x8fbaa0ea6b96eefdull, 0xe0c95c354b4439eaull, 0x29aad763131cafdfull, 0x35703eb03451245aull, 0x4aa9349624c722b4ull, 0x86dbfe58bd243307ull }}, {{ 0x9d4a492833e555e4ull, 0xc7dd9a14f0aa4329ull, 0xa0ac69debf1edebeull, 0x166272e20b2b6b85ull, 0xea9c0ddd6fc75b0aull, 0x4497ef776369fe48ull }}, {{ 0x24e6db9206f55ae6ull, 0xcea804d166a69fa0ull, 0x46bc22b37734b373ull, 0xdfd87cd46fb23338ull, 0x2a188aa65dc98e64ull, 0xadef5aa9e223eed9ull }}, {{ 0x710493b445958cffull, 0x1290302e02823c41ull, 0xc3595b02a80f0286ull, 0xbe74e04c5cf60032ull, 0xa4f56a7fa9df8ff0ull, 0xcb598aa2d567547bull }}, {{ 0x6a2dc50ab7d781f8ull, 0xb9a1e1cc19165a8eull, 0xa17d8e1a9096193cull, 0x7090c2fba19c01fbull, 0x719628fca2bb9f67ull, 0xf17f6a5c56094cd4ull }}, {{ 0x25c9b26b2e6b13b3ull, 0x4052d1f8fadf8990ull, 0x4ee78d09a5dcfc5full, 0x65a79dd4501813d4ull, 0x6fdd99de5b543a0aull, 0x6efa279b5c5d004cull }}, {{ 0x79e0f82fd02ec4feull, 0x833c33b9ccbb5fa1ull, 0x150b82607aa1dbb8ull, 0xf88c2a4b20f0c64bull, 0x5ea802af914a4467ull, 0x55c58c119ba202fcull }}, {{ 0xc2c9b1de21d3b1e9ull, 0x205a0541ff51bc4eull, 0xd27317c4ca529535ull, 0xb579a6ef4967beeeull, 0xb2901adbace6ac0full, 0x59b778b014541ddbull }}, {{ 0x9be0f2ad5244f317ull, 0x43843493f9315b13ull, 0x387eedafe739d413ull, 0x16c08558de0d7554ull, 0xf9a10c94c102b89dull, 0x812ab6e0cb492a94ull }}, {{ 0x16c97ac536b17ee5ull, 0xa32a0dc7bbed8ec4ull, 0x34f548df084248c0ull, 0xe3853578ac86954aull, 0xc04a7dcf8a1b3622ull, 0x0bab24c7f0dba9d1ull }}, {{ 0xe3decbb422eef4f7ull, 0x5fa489cd574793a8ull, 0x1194d8b65296d786ull, 0xe33416b6bd41d4e6ull, 0x82e8ea1b65101d5cull, 0x74af6fcf6894a231ull }}, {{ 0xe6b3f5095d5591a3ull, 0xbc6d620568cbc498ull, 0xafd0771f39e46b3full, 0xe008e323649250fcull, 0x1d192511f2a125a0ull, 0x8eda5e1a15ce55efull }}, {{ 0x0307925da557b060ull, 0x5c45d43617f5adf9ull, 0xde24a73842ec307dull, 0xc058df61edb729deull, 0x22fb72b37a4b7848ull, 0x9487ad04da0f5b57ull }}, {{ 0x1e4bb7a8756ce3c2ull, 0x9aba4a1cef98cbbaull, 0xad6e88329d39e4e5ull, 0x8378b9d34927a2b4ull, 0x5dd27b02c6f2b2d7ull, 0xcd4cc23084999167ull }}, {{ 0x2ef52c949640e593ull, 0x0b46e5215bf7f545ull, 0xc65151fa2442f0f8ull, 0x22b74240db8c5b0eull, 0xaa38ce1bc57afc6bull, 0x04ff95e52dffae09ull }}, {{ 0xd593bdcdde88f7c0ull, 0x70c4f34d97af94b3ull, 0xbf2d33c56a9d69b0ull, 0x5b289688937b8e93ull, 0xa6380d15b6cddc2full, 0x31fbdaf3cbfccc60ull }}, {{ 0x57c56a0ab159ad80ull, 0x67b18107ecdbcf06ull, 0x77c405b62a2620e4ull, 0x8f95e155c2d391c5ull, 0x7e3082d9240a99d9ull, 0xf3d68d85f7dffbc6ull }}, {{ 0x6db6246aed80c704ull, 0x0cef0a4f4096163full, 0xada8391da57d48ecull, 0x9bdacd599c43b1b6ull, 0xede51c7b686a027full, 0x8661873baebfd5c0ull }}, {{ 0x491d6c2d4707c62bull, 0x8156671885dcde7aull, 0xc8923b2876e4d938ull, 0x168c05801aa4f122ull, 0x4af31cd2142418fcull, 0x3fcf4854d37e5989ull }}, {{ 0xdb2639c4c64dbdadull, 0x0d6006f53aa0b0c6ull, 0xd5b64f94a4f07c35ull, 0xe17837010a716b5bull, 0xed7f2034c968f9d8ull, 0x7e18d35042ef7f5cull }}, {{ 0x8f7e41afbf0968c0ull, 0x85c045944a46e7c4ull, 0x591f1bce7164da12ull, 0xceb2260a686e3196ull, 0x46f7420fde19c278ull, 0xecf841229d5af9a1ull }}, {{ 0x9aee90dd765e177eull, 0x3982b7cae6c50dadull, 0x7b3716106df084b9ull, 0x12f57c68144defdfull, 0xc5a8949ead0198b8ull, 0x41b28b5a258dc04cull }}, {{ 0x0d51a8a69faceaf1ull, 0x3f1b2ded03b288c8ull, 0xd026dca44b652f3cull, 0xbd96dc10cb0b5ebaull, 0xb895ce32c20ff730ull, 0x90f97185778982ffull }}, {{ 0x853096823cc12d69ull, 0x770fcb4224f957d0ull, 0x21849e6af1f3d85aull, 0x67e498a7ee71b34cull, 0x35da0dfb949fa7e7ull, 0xa9be6f36ab5f1dfdull }}, {{ 0x33e5e1165f8bc618ull, 0xa69df09571bd6e25ull, 0x4f2e302d73867388ull, 0x0eedf68f507100f9ull, 0x1a848bd3ce3c8f0aull, 0xa1705822b1b72be4ull }}, {{ 0x06facadfbb75bcf5ull, 0x822b65d671664d74ull, 0x17cde1c683408356ull, 0x954ba199246a09bdull, 0x092d76460e5d9664ull, 0x4e63715af127b6e9ull }}, {{ 0x45cbecbd5299618eull, 0x15b1fa606dff0688ull, 0xee0ad1c120852161ull, 0xd4f44ffb6c246162ull, 0x5bc69ebc8fa7dfedull, 0x0fe26d8d6b8d251aull }}, {{ 0xb9f73f6539fdcf90ull, 0xd8f3c7c44bf64152ull, 0x4c6c318b45334dcaull, 0x518b1fd2396bcdddull, 0x95c2335d9c8ebf4aull, 0x9ed8478633837307ull }}, {{ 0x43a879f443ea1b9bull, 0x7985cdaaf79e8d3bull, 0xfc39ef70b40109ecull, 0x2f6f3e363e360aa4ull, 0xd99601a81d9378e7ull, 0x3472cb3e03227e4bull }}, {{ 0xa494c38aa7251410ull, 0xbf3a08adac318450ull, 0xda435a67080a633cull, 0xda586e1e6e1c6a71ull, 0x7fdc109127c2b907ull, 0x0c7bf06c1f58eef6ull }}, {{ 0x6dcfa36a8772c8a5ull, 0x784456c8b9ef2b26ull, 0x86a188065067e05full, 0x87744d304d1c2872ull, 0xfe98a5ab8d9b3a4eull, 0x7cd76439397955a0ull }}, {{ 0x4a1c62294a7bd670ull, 0xb2ab63d74357af80ull, 0x424f503f240ec3baull, 0x4a8b03e303199479ull, 0xf1f678b388104711ull, 0xe069ea3c3ebd5849ull }}, {{ 0xe51bd59ce8d6605eull, 0xfab1e668a16cdb02ull, 0x971922776893a54aull, 0xe96e26de1effccbcull, 0x73a0b70350a2c6acull, 0xc423265a736572e3ull }}, {{ 0xf3165821185fc3a7ull, 0xcaf300164e408e1cull, 0xe6fb58aa15c474edull, 0x1e4d84ad35fdff5dull, 0x84472621265bc2c1ull, 0xa95f7f8881f67ce2ull }}, {{ 0x7edf714af3bda489ull, 0xed7e00df0e858d21ull, 0x05d176a4d9ac9149ull, 0x2f072ec41bebf9abull, 0x2ac77d4b7f959b8bull, 0x9dbafb5513a0e0d9ull }}, {{ 0xf4ba6ced85686d56ull, 0x46ec08b69137834eull, 0x3a2ea27080bdace3ull, 0xd647d3a91737c0aeull, 0xabcae4f2fbd8136full, 0x294dd152c448c87bull }}, {{ 0x8f4841473614455aull, 0xc5385721ac2b2115ull, 0x45d258650768c0e0ull, 0x5ece449ae82d86ceull, 0xb5ecf17dd670c25eull, 0x9d0a2d3baad7d4d4ull }}, {{ 0x98d28cc81ccab587ull, 0xb4336750b9af4ad7ull, 0xba3773f24a1788c7ull, 0xb40eae0d11c7440eull, 0x1b416eea606797afull, 0x2265c454ac6e504full }}, {{ 0xf8397fd11feb1749ull, 0x0a02092740d8ec6bull, 0x462a8776e4eb57cdull, 0x0892cc82b1c8a893ull, 0x108e5527c40becddull, 0x57f9ab4ebc4f2317ull }}, {{ 0xb23efe2b3f2ee8daull, 0x64145b8888793c37ull, 0xbda94aa4f1316e02ull, 0x55bbfd1af1d695c0ull, 0xa58f538da87740a2ull, 0x6fc0b1135b175ee6ull }}, {{ 0xf675edb077d51885ull, 0xe8cb935554bc5a2cull, 0x689cea716bee4c17ull, 0x5957e30d7261d987ull, 0x7799438894a88657ull, 0x5d86eac18ee9b502ull }}, {{ 0xa09b48e4ae52f52full, 0x17f3c1554f5b85c1ull, 0x1621286e374ef8efull, 0x7d6ede8677d27f4aull, 0xabfca355ce953f69ull, 0xa7452b8f95211218ull }}, {{ 0x4610d8eecf3d93d4ull, 0xef858d5519933990ull, 0xdd4b944e2915b956ull, 0xe654b140ae38f8e4ull, 0xb7de615a11d47a1eull, 0x88b3b39bd34ab4f6ull }}, {{ 0xbca879541867c64bull, 0x5b378552ffc03fa2ull, 0xa4f3cb0d9ad93d65ull, 0xff4eec86ce39b8f0ull, 0x2eafcd84b24cc534ull, 0x5705041640eb11a3ull }}, {{ 0x5e94bd48f40dbeeaull, 0x902b353dfd827c5bull, 0x7185ee880c7c65f5ull, 0xf9153d440e413966ull, 0xd2de072ef6ffb411ull, 0x663228de892eb05full }}, {{ 0xb1cf64d988897522ull, 0xa1b0146be718db91ull, 0x6f3b51507cdbfb97ull, 0xbad464a88e8c3e00ull, 0x3cac47d5a5fd08b3ull, 0xfdf598b15bd2e3beull }}, {{ 0xf219f07f555e9351ull, 0x50e0cc3706f893b0ull, 0x58512d24e097d3ecull, 0x4c4bee95917a6c04ull, 0x5ebace587be25705ull, 0xeb97f6ed963ce56eull }}, {{ 0x750364f955b1c127ull, 0x28c7fa2645b5c4e9ull, 0x732bc370c5ee473bull, 0xfaf751d7aec8382bull, 0xb34c0f74d6d76634ull, 0x33efa547de60f64full }}, {{ 0x9221f1bd58f18b87ull, 0x97cfc57eb919b11eull, 0x7fb5a267bb4ec84full, 0xcda9326cd3d231b2ull, 0x00f89a906469fe11ull, 0x075c74ceafc99f1dull }}, {{ 0xb5537165796f7349ull, 0xee1db6f33b00eb31ull, 0xfd18580d5113d31bull, 0x089bf8404635f0f8ull, 0x09b609a3ec23ecb2ull, 0x499c9012dde03722ull }}, {{ 0x15426df6be5a80daull, 0x4d2925804e092ff1ull, 0xe2f370852ac63f17ull, 0x5617b282be1b69b9ull, 0x611c606739673ef4ull, 0xe01da0bcaac22754ull }}, {{ 0xd4984ba36f890883ull, 0x039b77030c5bdf6aull, 0xdd826533abbe76e9ull, 0x5cecf91b6d122142ull, 0xcb1bc4083e08758bull, 0xc128475eab95894bull }}, {{ 0x4df2f4625b5a551eull, 0x2412a61e7b96ba2cull, 0xa717f404b570a51aull, 0xa141bb1242b54c9cull, 0xef15a8526c549771ull, 0x8b92c9b2b3d75cf5ull }}, {{ 0x0b7d8bd79187532dull, 0x68ba7d30d3e345bbull, 0x86ef882f16667305ull, 0x4c914eb69b14fe1eull, 0x56d893383b4dea70ull, 0x73bbe0fb0669a19bull }}, {{ 0x72e7766baf493fc0ull, 0x1748e3e846e0b94eull, 0x455b51d6e0007e36ull, 0xfdad13220ed1ed31ull, 0x6475c032510b2862ull, 0x8556c9ce40205011ull }}, {{ 0x7d0aa034d8dc7d81ull, 0xe8d8e712c4c73d10ull, 0xb5913264c004ee1cull, 0xe8c2bf54943343ecull, 0xec9981f72a6f93ddull, 0x3563e20e814320adull }}, {{ 0xe26a4210789ce708ull, 0x187906bbafc862a4ull, 0x17abf7ef80314d21ull, 0x179b794dca00a73full, 0x3dff13a7a85bc6abull, 0x15e6d4910c9f46cbull }}, {{ 0xd82694a4b6210654ull, 0xf4ba4354ddd3da70ull, 0xecb7af5b01ed034aull, 0xec12bd09e4068876ull, 0x6bf6c48c9395c2aeull, 0xdb044daa7e38c3f0ull }}, {{ 0x7181ce6f1d4a3f47ull, 0x8f46a150aa468868ull, 0x3f2cd98e134220edull, 0x38bb6262e84154a5ull, 0x37a3ad7dc3d99ad5ull, 0x8e2b08a8ee37a764ull }}, {{ 0x6f12105724e678c2ull, 0x98c24d26a6c15414ull, 0x77c07f8cc0954947ull, 0x3751d7dd128d4e74ull, 0x2c64c6e9a6800c54ull, 0x8dae56994e2c89eaull }}, {{ 0x56b4a3677100b791ull, 0xf7970382838d48ccull, 0xad84fb7f85d4dccbull, 0x29326ea2b985108cull, 0xbbefc52081007b4aull, 0x88cf61fd0dbd6325ull }}, {{ 0x630e620a6a072ba6ull, 0xabe623192384d7fbull, 0xc731d2fb3a509ff7ull, 0x9bf8525b3f32a57eull, 0x575db3450a04d0e5ull, 0x5819d3e28965df79ull }}, {{ 0xde8fd4682447b47aull, 0xb6fd5efb63306fd1ull, 0xc7f23dd047263facull, 0x17b3379077fa76f3ull, 0x69a900b2643028f8ull, 0x710246d95dfababdull }}, {{ 0xb19e4c116acd0cc7ull, 0x25e5b5d1dfe45e32ull, 0xcf766a22c77e7cbfull, 0xed002ba4afc8a585ull, 0x209a06f7e9e199b0ull, 0x6a16c47dabcb4b66ull }}, {{ 0xf02ef8ae2c027fcaull, 0x7af91a32beebadfaull, 0x1aa0255bcaf0df77ull, 0x4201b46eddd6773aull, 0x460445af22d000e9ull, 0x24e3ace8b5f0f1fdull }}, {{ 0x61d5b6cdb818fde7ull, 0xcdbb05fb7534cbcdull, 0x0a417595ed68baaaull, 0x94110c54aa60a845ull, 0xbc2ab8d75c20091cull, 0x70e4c1171b6973e4ull }}, {{ 0xd259240930f9eb03ull, 0x094e3bd2940ff605ull, 0x668e97db46174aacull, 0xc8aa7b4ea7c692b2ull, 0x59ab386999405b1dull, 0x68ef8ae7121e86efull }}, {{ 0x377b685be9c32e21ull, 0x5d0e5639c89f9c3aull, 0x0191ee90bce8eab8ull, 0xd6a8d1128dc1baf8ull, 0x80b0341ffc838f29ull, 0x195b6d06b5314559ull }}, {{ 0x2ad21397219fcd4bull, 0xa28f5e41d63c1a46ull, 0x0fb351a761192b33ull, 0x62982ab989914db0ull, 0x06e2093fdd2397a2ull, 0xfd92424313ecb57full }}, {{ 0xac34c3e7503e04ecull, 0x5999ae925e5906bdull, 0x9d013089cafbb004ull, 0xd9f1ab3f5fad08e0ull, 0x44d45c7ea363ec57ull, 0xe7b6969ec73f16f6ull }}, {{ 0xba0fa709226c3139ull, 0x8000d1b7af7a4368ull, 0x220be561edd4e02bull, 0x8370b079bcc258c6ull, 0xb04b9cf261e73b6eull, 0x0d21e233c876e59eull }}, {{ 0x449c865b5839ec3cull, 0x0008312cdac6a217ull, 0x5476f5d34a50c1b3ull, 0x2266e4c15f9777bdull, 0xe2f42177d3085251ull, 0x8352d605d4a4f832ull }}, {{ 0xae1d3f9172433a55ull, 0x0051ebc08bc254e8ull, 0x4ca59a40e72790feull, 0x5804ef8dbbeaad65ull, 0xdd894eae3e53372bull, 0x213c5c3a4e71b1fcull }}, {{ 0xcd247bae76a04755ull, 0x0333358575975116ull, 0xfe780689078ba9ecull, 0x70315b89572ac5f4ull, 0xa75d12ce6f4027b1ull, 0x4c5b9a471070f3e0ull }}, {{ 0x036cd4d0a242c94eull, 0x2000173697e92ae4ull, 0xf0b0415a4b74a338ull, 0x61ed935d67abbb91ull, 0x89a2bc1058818ceeull, 0xfb9406c6a46986c6ull }}, {{ 0x22405026569bdd0bull, 0x4000e821ef1bace8ull, 0x66e28d86f28e6031ull, 0xd347c1a60cb553b3ull, 0x605b58a3750f814full, 0xd3c843c26c1f43c1ull }}, {{ 0x5683217f6216a271ull, 0x800911535714c111ull, 0x04d98745798fc1ecull, 0x40cd907c7f154502ull, 0xc3917662929b0d1eull, 0x45d2a5983938a58dull }}, {{ 0x611f4ef9d4e25867ull, 0x005aad4166cf8aadull, 0x307f48b6bf9d933dull, 0x8807a4dcf6d4b214ull, 0xa3ae9fd9ba0e832eull, 0xba3a77f23c367789ull }}, {{ 0xcb3915c250d7740aull, 0x038ac48e041b6ac5ull, 0xe4f8d7237c27c062ull, 0x504c70a1a44ef4c9ull, 0x64d23e8144911fd1ull, 0x4648af765a20ab60ull }}, {{ 0xf03ad997286a8868ull, 0x236bad8c29122bb9ull, 0xf1b86762d98d83d4ull, 0x22fc66506b158fe2ull, 0xf036710cadab3e2dull, 0xbed6da9f8546b1c3ull }}, {{ 0x624c7fe79429540cull, 0x6234c7799ab5b543ull, 0x713409dc7f872649ull, 0x5ddbff242ed79eddull, 0x62206a7ec8b06dc3ull, 0x74648a3b34c2f1a7ull }}, {{ 0xd6fcff0bc99d4874ull, 0xd60fcac00b1914a1ull, 0x6c08629cfb477eddull, 0xaa97f769d46c34a6ull, 0xd54428f3d6e449a1ull, 0x8bed66500f9d7089ull }}, {{ 0x65e1f675e024d486ull, 0x5c9deb806eface52ull, 0x3853da21d0caf4aaull, 0xa9efaa224c3a0e80ull, 0x54a9998664eae050ull, 0x7745ff209c266562ull }}, {{ 0xfad3a09ac1704d3full, 0x9e2b330455cc0f37ull, 0x3346855227ed8ea7ull, 0xa35ca556fa449102ull, 0x4e9fff3ff12cc326ull, 0xa8bbf746197ff5d7ull }}, {{ 0xcc44460b8e630479ull, 0x2daffe2b59f8982full, 0x00c135358f47928cull, 0x619e7565c6adaa16ull, 0x123ff87f6bbf9f82ull, 0x9757a8bcfeff9a69ull }}, {{ 0xfaaabc738fde2cb9ull, 0xc8dfedb183b5f1ddull, 0x078c141798cbb979ull, 0xd03095f9c2c8a4dcull, 0xb67fb4fa357c3b17ull, 0xe96c9761f5fc081aull }}, {{ 0xcaab5c839eadbf3aull, 0xd8bf48ef251b72abull, 0x4b78c8ebf7f53ec1ull, 0x21e5dbc19bd67098ull, 0x20fd11c616da4eeeull, 0x1e3de9d39bd8510bull }}, {{ 0xeab19d2432c97847ull, 0x7778d95773127ab5ull, 0xf2b7d937af947392ull, 0x52fa9590166065f2ull, 0x49e2b1bce487154dull, 0x2e6b224416732a6full }}, {{ 0x2af02369fbdeb2c8ull, 0xaab87d6a7eb8cb1bull, 0x7b2e7c2cdbcc83b8ull, 0x3dc9d7a0dfc3fb7dull, 0xe2daf160ed46d505ull, 0xd02f56a8e07fa858ull }}, {{ 0xad616223d6b2fbccull, 0xab34e628f337ef0full, 0xcfd0d9c095fd2536ull, 0x69e26c48bda7d2e6ull, 0xdc8d6dc944c45234ull, 0x21d96298c4fc9378ull }}, {{ 0xc5cdd56662fdd5f3ull, 0xb010fd99802f569cull, 0x1e288185dbe37422ull, 0x22d83ad7688e3d04ull, 0x9d8649dcafab360cull, 0x527dd9f7b1ddc2b8ull }}, {{ 0xba0a55ffddea5b7full, 0xe0a9e7ff01d9621full, 0x2d950f3a96e2895aull, 0x5c724c6a158e6229ull, 0x273ee29edcb01c79ull, 0x38ea83acf2a99b36ull }}, {{ 0x44675bfeab2792f9ull, 0xc6a30ff6127dd53dull, 0xc7d29849e4d95d8cull, 0x9c76fc24d78fd59bull, 0x8874da349ee11cbdull, 0x392924c17aa0101dull }}, {{ 0xac0997f2af8bbdbbull, 0xc25e9f9cb8ea5464ull, 0xce39f2e2f07da77full, 0x1ca5d9706b9e5815ull, 0x5490860e34cb1f68ull, 0x3b9b6f8eca40a127ull }}, {{ 0xb85fef7adb75694cull, 0x97b23c1f39274beeull, 0x0e437cdd64e88afdull, 0x1e7a7e64342f70daull, 0x4da53c8e0fef3a11ull, 0x54125b93e6864b89ull }}, {{ 0x33bf5acc92961cfcull, 0xecf659383b88f753ull, 0x8ea2e0a5f1156de7ull, 0x30c8efea09da6884ull, 0x08745d8c9f5844abull, 0x48b793c7013ef35dull }}, {{ 0x05798bfdb9dd21d6ull, 0x419f7c325359a940ull, 0x925cc67b6ad64b0full, 0xe7d95f246288152dull, 0x548ba77e3972aeafull, 0xd72bc5c60c7581a2ull }}, {{ 0x36bf77e942a3525cull, 0x903ad9f741809c80ull, 0xb79fc0d22c5eee98ull, 0x0e7db76bd950d3c7ull, 0x4d748aee3e7ad2dfull, 0x67b5b9bc7c971057ull }}, {{ 0x237aaf1c9a613793ull, 0xa24c83a88f061d02ull, 0x2c3d8835bbb551f5ull, 0x90e92a367d2845cdull, 0x068d6d4e70cc3cb6ull, 0x0d19415cdde6a369ull }}, {{ 0x62cad71e07cc2bc3ull, 0x56fd2495963d2215ull, 0xba67521955153398ull, 0xa91ba620e392ba03ull, 0x4186451067fa5f21ull, 0x82fc8da0ab02621aull }}, {{ 0xdbec672c4df9b599ull, 0x65e36dd7de6354d5ull, 0x480934fd52d403f3ull, 0x9b147d48e3bb4425ull, 0x8f3eb2a40fc7b750ull, 0x1ddd8846ae17d506ull }}, {{ 0x973c07bb0bc117fbull, 0xfae24a6eafe1505aull, 0xd05c11e53c482781ull, 0x0ecce4d8e550a974ull, 0x9872fa689dcd2926ull, 0x2aa752c2ccee5241ull }}, {{ 0xe8584d4e758aefd2ull, 0xccd6e852decd2389ull, 0x2398b2f45ad18b13ull, 0x9400f078f5269e90ull, 0xf47dc8162a039b7cull, 0xaa893b9c014f368full }}, {{ 0x13730510976d5e36ull, 0x0065133cb4036363ull, 0x63f6fd8b8c2f6ec6ull, 0xc80964b9938231a1ull, 0x8ce9d0dda42412ddull, 0xa95c54180d18219full }}, {{ 0xc27e32a5ea45ae20ull, 0x03f2c05f0821e1deull, 0xe7a5e77379da53bcull, 0xd05def3fc315f04dull, 0x812228a86968bca9ull, 0x9d9b48f082f1503bull }}, {{ 0x98edfa7b26b8cd45ull, 0x277b83b65152d2b3ull, 0x0c7b0a82c2874558ull, 0x23ab587d9edb630bull, 0x0b5596941e175ea2ull, 0x2810d9651d6d2253ull }}, {{ 0xf94bc8cf833804afull, 0x8ad3251f2d3c3b03ull, 0x7cce691b9948b571ull, 0x64b174e83491de6eull, 0x7157e1c92ce9b255ull, 0x90a87df32643573eull }}, {{ 0xbcf5d81b20302ed5ull, 0x6c3f7337c45a4e27ull, 0xe0101b13fcd7166full, 0xeeee91120db2b050ull, 0x6d6ed1dbc120f755ull, 0xa694eb7f7ea16870ull }}, {{ 0x619a710f41e1d44full, 0x3a7a802dab870d8dull, 0xc0a10ec7e066e05aull, 0x5551aab488fae328ull, 0x465432958b49a95bull, 0x81d132faf24e1464ull }}, {{ 0xd0086a9892d24b15ull, 0x48c901c8b3468785ull, 0x864a93cec404c386ull, 0x5530ab0d59ccdf97ull, 0xbf49f9d770e09d91ull, 0x122bfdcd770ccbeaull }}, {{ 0x205429f5bc36eed6ull, 0xd7da11d700c14b3aull, 0x3ee9c613a82fa33eull, 0x53e6ae858200bbebull, 0x78e3c26a68c627adull, 0xb5b7ea06a67ff72bull }}, {{ 0x4349a3995a25545cull, 0x6e84b266078cf045ull, 0x7521bcc491dc6074ull, 0x4702d13714075730ull, 0xb8e5982817bd8cc5ull, 0x192f244280ffa7b2ull }}, {{ 0xa0e063fd85754b9aull, 0x512ef7fc4b8162b4ull, 0x93515fadb29bc48cull, 0xc61c2c26c84967e4ull, 0x38f7f190ed677fb4ull, 0xfbd76a9909fc8cfbull }}, {{ 0x48c3e7e73694f401ull, 0x2bd5afdaf30ddb0eull, 0xc12dbcc8fa15ad7bull, 0xbd19b983d2de0eedull, 0x39af6fa9460afd0full, 0xd66a29fa63dd81d0ull }}, {{ 0xd7a70f0821d1880dull, 0xb658de8d7e8a8e8eull, 0x8bc95fd9c4d8c6cfull, 0x63013f263cac9549ull, 0x40da5c9cbc6de29dull, 0x6025a3c7e6a71222ull }}, {{ 0x6c869651522f5084ull, 0x1f78b186f1699194ull, 0x75ddbe81b077c41dull, 0xde0c777e5ebdd4dfull, 0x88879e1f5c4ada25ull, 0xc17865cf0286b556ull }}, {{ 0x3d41df2d35d92527ull, 0x3ab6ef456e1fafccull, 0x9aa97110e4ada923ull, 0xac7caaefb36a50baull, 0x554c2d399aec857aull, 0x8eb3fa1619431561ull }}, {{ 0x6492b7c41a7b7386ull, 0x4b2558b64d3cddfaull, 0x0a9e6aa8eec89b60ull, 0xbcdead5d0227274aull, 0x54f9c4400d3d36caull, 0x9307c4dcfc9ed5cdull }}, {{ 0xedbb2da908d28337ull, 0xef75771f0460abc7ull, 0x6a302a9953d611c2ull, 0x60b2c5a2158788e4ull, 0x51c1aa80846423ebull, 0xbe4db0a1de345a05ull }}, {{ 0x494fc89a58392029ull, 0x5a96a7362bc6b5cfull, 0x25e1a9fd465cb19dull, 0xc6fbb854d74b58ecull, 0x3190a9052be96731ull, 0x6f08e652ae0b8435ull }}, {{ 0xdd1dd607723b4198ull, 0x89e2881db5c31a18ull, 0x7ad0a3e4bf9ef025ull, 0xc5d5335068f17939ull, 0xefa69a33b71e07f1ull, 0x5658ff3acc732a13ull }}, {{ 0xa32a5c4a76508fedull, 0x62d95129199f04f8ull, 0xcc2666ef7c356177ull, 0xba540124196ebc3eull, 0x5c820605272c4f71ull, 0x5f79f84bfc7fa4c7ull }}, {{ 0x5fa79ae89f259f44ull, 0xdc7d2b9b003631b6ull, 0xf980055ada15cea9ull, 0x47480b68fe535a73ull, 0x9d143c3387bb1a71ull, 0xbac3b2f7dcfc6fc9ull }}, {{ 0xbc8c0d16377838a8ull, 0x9ce3b40e021df11full, 0xbf00358c84da12a2ull, 0xc8d07219ef418887ull, 0x22ca5a034d4f086cull, 0x4ba4fdaea1dc5de0ull }}, {{ 0x5d7882de2ab23691ull, 0x20e5088c152b6b3dull, 0x7602177d3084ba5aull, 0xd8247503588f554dull, 0x5be784210516543full, 0xf471e8d2529baac1ull }}, {{ 0xa6b51cadaaf621adull, 0x48f25578d3b23065ull, 0x9c14eae3e52f4785ull, 0x716c922175995506ull, 0x970b294a32df4a7eull, 0x8c7318373a14ab8dull }}, {{ 0x83131ec8ad9d50beull, 0xd97756b844f5e3f8ull, 0x18d12ce6f3d8cb34ull, 0x6e3db54e97fd5242ull, 0xe66f9ce5fcb8e8f0ull, 0x7c7ef22844ceb387ull }}, {{ 0x1ebf33d6c825276full, 0x7ea96332b19ae7b5ull, 0xf82bc1058677f010ull, 0x4e691511efe53694ull, 0x005c20fbdf391964ull, 0xdcf57592b013034full }}, {{ 0x33780663d1738a51ull, 0xf29ddffaf00d0d13ull, 0xb1b58a3740af60a4ull, 0x101ad2b35ef421d1ull, 0x039949d6b83afdebull, 0xa19697bae0be2116ull }}, {{ 0x02b03fe62e83672aull, 0x7a2abfcd608282c0ull, 0xf117662886d9c671ull, 0xa10c3b01b5895230ull, 0x23fce263324deb2eull, 0x4fe1ed4cc76d4adcull }}, {{ 0x1ae27efdd12207a6ull, 0xc5ab7e05c5191b80ull, 0x6ae9fd954481c06eull, 0x4a7a4e11175d35e9ull, 0x67e0d7dff70b2fd2ull, 0x1ed344ffca44ec99ull }}, {{ 0x0cd8f5ea2b544c7eull, 0xb8b2ec39b2fb1301ull, 0x2d23e7d4ad118453ull, 0xe8c70caae9a41b1eull, 0x0ec86ebfa66fde36ull, 0x3440b1fde6b13dfeull }}, {{ 0x80799b25b14afcefull, 0x36fd3a40fdcebe0aull, 0xc3670e4ec2af2b45ull, 0x17c67ead20690f2dull, 0x93d4537c805eae25ull, 0x0a86f3eb02ec6becull }}, {{ 0x04c00f78ecede153ull, 0x25e44689ea136c69ull, 0xa2068f139ad7b0b4ull, 0xedc0f2c3441a97c9ull, 0xc64b42dd03b2cd72ull, 0x6945872e1d3c373dull }}, {{ 0x2f809ab9414acd39ull, 0x7aeac16324c23c1aull, 0x544196c40c6ce709ull, 0x49897ba0a909ede0ull, 0xbef09ca224fc067dull, 0x1cb747cd245a2869ull }}, {{ 0xdb060b3c8cec043dull, 0xcd2b8ddf6f965905ull, 0x4a8fe3a87c41065eull, 0xdf5ed4469a634ac3ull, 0x75661e5571d840e4ull, 0x1f28ce036b859421ull }}, {{ 0x8e3c705d81382a5eull, 0x03b38aba5bdf7a3aull, 0xe99ee494da8a3fb4ull, 0xb9b44ac207e0eba0ull, 0x95fd2f56727288f0ull, 0x37980c223337c94eull }}, {{ 0x8e5c63a70c31a7b1ull, 0x25036b4796bac649ull, 0x2034edd089667d08ull, 0x410aeb944ec93449ull, 0xdbe3d96078795967ull, 0x2bf07956002ddd11ull }}, {{ 0x8f9be48679f08ce9ull, 0x722230cbe34bbedfull, 0x42114a255e00e251ull, 0x8a6d33cb13dc0adbull, 0x96e67dc4b4bd7e08ull, 0xb764bd5c01caa2b2ull }}, {{ 0x9c16ed40c3658119ull, 0x7555e7f6e0f574bbull, 0x94ace575ac08d72eull, 0x684405eec6986c90ull, 0xe500e9af0f66ec55ull, 0x29ef659811ea5af9ull }}, {{ 0x18e54487a1f70af8ull, 0x955b0fa4c9968f54ull, 0xcec0f698b85867d0ull, 0x12a83b53c1f43da5ull, 0xf20920d69a053b56ull, 0xa359f7f0b3278dc2ull }}, {{ 0xf8f4ad4c53a66daeull, 0xd58e9c6fdfe19948ull, 0x1389a1f733740e25ull, 0xba925145938a687aull, 0x745b48620434515cull, 0x6183af66ff8b899dull }}, {{ 0xb98ec4fb448048cfull, 0x57921c5ebecffcd9ull, 0xc36053a802888d7aull, 0x49b72cb7c36814c4ull, 0x8b90d3d42a0b2d9full, 0xcf24da05fb736026ull }}, {{ 0x3f93b1d0ad02d815ull, 0x6bb51bb3741fe081ull, 0xa1c34490195586c7ull, 0xe127bf2da210cfafull, 0x73a84649a46fc838ull, 0x1770843bd281c181ull }}, {{ 0x7bc4f226c21c70d5ull, 0x35131502893ec50cull, 0x51a0ada0fd5743caull, 0xcb8d77c854a81cdcull, 0x8492bee06c5dd238ull, 0xea652a5639118f0eull }}, {{ 0xd5b17583951c6850ull, 0x12bed2195c73b27cull, 0x3046c849e568a5e6ull, 0xf386add34e91209bull, 0x2dbb74c43baa3637ull, 0x27f3a75e3aaf9691ull }}, {{ 0x58ee9723d31c131full, 0xbb7434fd9c84f8e0ull, 0xe2c3d2e2f6167afcull, 0x8342ca4111ab460full, 0xc9528faa54a61e2full, 0x8f8489ae4adbe1abull }}, {{ 0x7951e7663f18bf3aull, 0x528a11e81d31b8c3ull, 0xdba63cdd9ce0cddfull, 0x209be68ab0b0bc9eull, 0xdd399ca74e7d2ddbull, 0x9b2d60ceec96d0b5ull }}, {{ 0xbd3309fe76f77844ull, 0x3964b31123f137a2ull, 0x947e60a820c80ab9ull, 0x4617016ae6e75e34ull, 0xa4401e8910e3ca8full, 0x0fc5c8153de4271aull }}, {{ 0x63fe63f0a5aab2a5ull, 0x3deefeab676c2c5bull, 0xccefc69147d06b3cull, 0xbce60e2d0509ae0dull, 0x6a81315aa8e5e998ull, 0x9db9d0d46ae9870aull }}, {{ 0xe7efe76678aafa6full, 0x6b55f2b20a39bb91ull, 0x015dc1acce24305aull, 0x60fc8dc23260cc8aull, 0x290bed8a98fb1ff7ull, 0x2942284c2d1f4668ull }}, {{ 0x0f5f0a00b6adc855ull, 0x315b7af4664153b3ull, 0x0da990c00d69e388ull, 0xc9dd8995f7c7fd64ull, 0x9a774769f9cf3fa9ull, 0x9c9592f9c338c011ull }}, {{ 0x99b6640722c9d34full, 0xed92cd8bfe8d44feull, 0x889fa7808622e351ull, 0xe2a75fdbadcfe5e8ull, 0x08a8ca23c2187ca1ull, 0x1dd7bdc1a03780b0ull }}, {{ 0x011fe8475be24119ull, 0x47bc0777f184b1f2ull, 0x563c8b053d5ce133ull, 0xda89be94ca1efb15ull, 0x5697e56594f4de52ull, 0x2a6d6990422b06e0ull }}, {{ 0x0b3f12c996d68afaull, 0xcd584aaf6f2ef374ull, 0x5e5d6e3465a0cc00ull, 0x896171cfe535ced5ull, 0x61eef5f7d190af3cull, 0xa8461fa295ae44c3ull }}, {{ 0x7076bbdfe4616dc2ull, 0x0572eada57d58288ull, 0xafa64e0bf847f808ull, 0x5dce721ef41a1455ull, 0xd3559bae2fa6d85dull, 0x92bd3c59d8ceafa1ull }}, {{ 0x64a356beebce4995ull, 0x367d2c876e571954ull, 0xdc7f0c77b2cfb050ull, 0xaa1075358904cb58ull, 0x415814cddc8473a5ull, 0xbb645b827812dc52ull }}, {{ 0xee616375360edfd6ull, 0x20e3bd4a4f66fd4bull, 0x9cf67cacfc1ce322ull, 0xa4a494175a2ff178ull, 0x8d70d00a9d2c8478ull, 0x51eb9318b0bc9b36ull }}, {{ 0x4fcde2941c94be5eull, 0x48e564e71a05e4f7ull, 0x21a0dec1d920df55ull, 0x6e6dc8e985df6eb6ull, 0x8668206a23bd2cb6ull, 0x3333bef6e75e1021ull }}, {{ 0x1e0ad9c91dcf6faeull, 0xd8f5f107043af1a9ull, 0x5048b3927b48b954ull, 0x5049d91f3aba531dull, 0x401144256563bf20ull, 0x000575a509aca14full }}, {{ 0x2c6c81db2a1a5cd0ull, 0x799b6a462a4d709bull, 0x22d703b8d0d73d50ull, 0x22e27b384b473f25ull, 0x80aca975f5e57743ull, 0x0036987260be4d18ull }}, {{ 0xbc3d128fa507a020ull, 0xc01226bda706660full, 0x5c66253828686524ull, 0x5cd8d032f0c87773ull, 0x06be9e9b9af6a89full, 0x0221f477c76f02f5ull }}, {{ 0x5a62b99c724c413full, 0x80b58368863ffc9dull, 0x9bfd74319413f36full, 0xa07821fd67d4aa81ull, 0x437232140da29639ull, 0x15538cadca561d92ull }}, {{ 0x87db401c76fa8c72ull, 0x071722153e7fde25ull, 0x17e689efc8c7825bull, 0x44b153e60e4ea910ull, 0xa275f4c88859de40ull, 0xd5437ec9e75d27b6ull }}, {{ 0x4e90811ca5c97c77ull, 0x46e754d470fead77ull, 0xef01635dd7cb178eull, 0xaeed46fc8f129aa0ull, 0x589b8fd55382ae82ull, 0x54a2f3e309a38d22ull }}, {{ 0x11a50b1e79dedca9ull, 0xc509504c69f2c6a9ull, 0x560de1aa6deeeb8eull, 0xd544c5dd96ba0a49ull, 0x76139e55431ad11aull, 0x4e5d86de60638357ull }}, {{ 0xb0726f30c2b49e9cull, 0xb25d22fc237bc29aull, 0x5c8ad0a84b553393ull, 0x54afbaa7e34466ddull, 0x9cc42f549f0c2b0cull, 0x0fa744afc3e3216aull }}, {{ 0xe47857e79b0e3216ull, 0xf7a35dd962d59a0aull, 0x9d6c2692f15403c4ull, 0x4edd4a8ee0ac04a5ull, 0x1fa9d94e3679ae7bull, 0x9c88aedda6df4e2aull }}, {{ 0xecb36f0c0e8df4ddull, 0xac61aa7ddc58046cull, 0x263981bd6d4825b1ull, 0x14a4e994c6b82e78ull, 0x3ca27d0e20c0d0d1ull, 0x1d56d4a884b90da5ull }}, {{ 0x3f025678918b90a1ull, 0xbbd0a8ea9b702c41ull, 0x7e3f116644d178f0ull, 0xce711fcfc331d0b1ull, 0x5e58e28d4788282aull, 0x25644e952f3a8874ull }}, {{ 0x761760b5af73a649ull, 0x5626992a1261ba8cull, 0xee76adfeb02eb967ull, 0x106b3e1d9ff226eeull, 0xaf78d984cb5191acull, 0x75eb11d3d849548bull }}, {{ 0x9ce9c718da847ed6ull, 0x5d81fba4b7d1497cull, 0x50a2cbf2e1d33e09ull, 0xa4306d283f758555ull, 0xdab87f2ff12fb0b8ull, 0x9b2eb24672dd4d74ull }}, {{ 0x2121c6f8892cf45eull, 0xa713d46f2e2cdedeull, 0x265bf77cd2406c5dull, 0x69e443927a973555ull, 0x8b34f7df6bdce736ull, 0x0fd2f6c07ca50690ull }}, {{ 0x4b51c5b55bc18baaull, 0x86c64c57cdc0b4adull, 0x7f97aae036843ba8ull, 0x22eaa3b8c9e81553ull, 0x7011aeba36a10820ull, 0x9e3da384de7241a5ull }}, {{ 0xf131b915958f74a7ull, 0x43befb6e09870ec4ull, 0xfbecacc2212a5495ull, 0x5d2a6537e310d542ull, 0x60b0d346224a5141ull, 0x2e686330b0769076ull }}, {{ 0x6bf13ad7d79a8e8aull, 0xa575d24c5f4693b1ull, 0xd73ebf954ba74dd4ull, 0xa3a7f42edea8549dull, 0xc6e840bd56e72c8dull, 0xd013dfe6e4a1a49full }}, {{ 0x376c4c6e6c099167ull, 0x769a36fbb8c1c4eeull, 0x68737bd4f4890a4eull, 0x648f89d4b2934e2aull, 0xc51287656507bd88ull, 0x20c6bf04ee506e3dull }}, {{ 0x2a3afc50385fae03ull, 0xa20625d53791b14eull, 0x1482d6518d5a6710ull, 0xed9b624ef9c10da8ull, 0xb2b949f5f24d6753ull, 0x47c376314f244e69ull }}, {{ 0xa64ddb2233bccc1cull, 0x543d7a542bb0ed0dull, 0xcd1c5f2f858806a6ull, 0x4811d715c18a8890ull, 0xfb3ce39b77060947ull, 0xcda29ded176b1020ull }}, {{ 0x7f0a8f56055ff918ull, 0x4a66c749b4e94288ull, 0x031bb7db3750427full, 0xd0b266d98f6955a8ull, 0xd060e412a63c5cc8ull, 0x085a2b42ea2ea149ull }}, {{ 0xf669995c35bfbaedull, 0xe803c8e1111c9954ull, 0x1f152e90292298f8ull, 0x26f8047f9a1d5890ull, 0x23c8e8ba7e5b9fd8ull, 0x5385b09d25d24ce2ull }}, {{ 0xa01ffd9a197d4d42ull, 0x1025d8caab1dfd51ull, 0x36d3d1a19b59f9b9ull, 0x85b02cfc052575a1ull, 0x65d91748ef943e71ull, 0x4338e6237a3700d5ull }}, {{ 0x413fe804fee50499ull, 0xa17a77eaaf2be530ull, 0x244630501183c13aull, 0x38e1c1d83376984cull, 0xfa7ae8d95bca706full, 0xa038fd62c6260855ull }}, {{ 0x8c7f1031f4f22dfaull, 0x4ec8af2ad7b6f3e2ull, 0x6abde320af258c4aull, 0x38d1927202a1f2f9ull, 0xc8cd187d95e86458ull, 0x4239e5dbbd7c535bull }}, {{ 0x7cf6a1f39175cbc0ull, 0x13d6d7ac6d2586d9ull, 0x2b6adf46d7777ae7ull, 0x382fb8741a537dbeull, 0xd802f4e7db13eb72ull, 0x9642fa9566db4195ull }}, {{ 0xe1a25383ae99f585ull, 0xc6646cbc4377447eull, 0xb22cb8c46aaacd06ull, 0x31dd34890742e96dull, 0x701d910e8ec73276ull, 0xde9dc9d604908fdaull }}, {{ 0xd0574324d2039731ull, 0xbfec3f5aa2a8acf4ull, 0xf5bf37ac2aac0243ull, 0xf2a40d5a489d1e48ull, 0x6127aa9193c7f89dull, 0xb229e25c2da59e88ull }}, {{ 0x23689f703423e7e6ull, 0x7f3a798a5a96c190ull, 0x99782cb9aab816a5ull, 0x7a688586d6232ed9ull, 0xcb8ca9afc5cfb62bull, 0xf5a2d799c8783153ull }}, {{ 0x62163a6209670efaull, 0xf848bf6789e38fa1ull, 0xfeb1bf40ab30e276ull, 0xc81537445d5fd47full, 0xf37ea0ddba1d1db2ull, 0x985c6c01d4b1ed45ull }}, {{ 0xd4de47d45e0695c7ull, 0xb2d77a0b62e39c4dull, 0xf2f17886afe8d8a5ull, 0xd0d428aba5be4cffull, 0x82f248a9452328fbull, 0xf39c38124ef344bbull }}, {{ 0x50aece4bac41d9c8ull, 0xfc6ac471dce41b0aull, 0x7d6eb542df187678ull, 0x284996b4796f01ffull, 0x1d76d69cb35f99d6ull, 0x841a30b71580af53ull }}, {{ 0x26d40ef4ba9281ceull, 0xdc2bac72a0e90e67ull, 0xe653149cb6f4a0b9ull, 0x92dfe30cbe5613faull, 0x26a4621f01bc025dull, 0x2905e726d706d93full }}, {{ 0x8448958f49b91208ull, 0x99b4bc7a491a9007ull, 0xff3ece1f258e4742ull, 0xbcbede7f6f5cc7ccull, 0x826bd536115817a7ull, 0x9a3b078466447c77ull }}, {{ 0x2ad5d798e13ab44dull, 0x010f5cc6db09a04bull, 0xf8740d37778ec89aull, 0x5f74b0fa599fce01ull, 0x1836541cad70ec8dull, 0x064e4b2bfeacdcabull }}, {{ 0xac5a6bf8cc4b0afeull, 0x0a999fc48e6042efull, 0xb488842aab93d604ull, 0xba8ee9c7803e0c13ull, 0xf21f491ec6693d85ull, 0x3f0eefb7f2c09eaeull }}, {{ 0xbb8837b7faee6de8ull, 0x6a003dad8fc29d5cull, 0x0d5529aab3c65c28ull, 0x499521cb026c78c5ull, 0x7538db33c01c6739ull, 0x76955d2f7b8632d5ull }}, {{ 0x53522d2fcd504b0full, 0x240268c79d9a259full, 0x8553a0ab05bf9994ull, 0xdfd351ee183cb7b2ull, 0x94389005811c083cull, 0xa1d5a3dad33dfc56ull }}, {{ 0x4135c3de0522ee95ull, 0x681817cc28057839ull, 0x354446ae397bffc9ull, 0xbe41334cf25f2cf9ull, 0xca35a0370b185260ull, 0x5258668c406bdb61ull }}, {{ 0x8c19a6ac335d51d4ull, 0x10f0edf99036b23cull, 0x14aac2ce3ed7fddeull, 0x6e8c010177b7c1bcull, 0xe61842266ef337c7ull, 0x3774017a843691d1ull }}, {{ 0x790082ba01a53245ull, 0xa9694bbfa222f65dull, 0xceab9c0e746feaacull, 0x51780a0ead2d9158ull, 0xfcf2958055802dcaull, 0x2a880ec92a21b232ull }}, {{ 0xba051b441073f6b6ull, 0x9e1cf57c555d9fa6ull, 0x12b418908c5f2abeull, 0x2eb06492c3c7ad78ull, 0xe179d7035701c9e7ull, 0xa95093dba550f5fdull }}, {{ 0x443310a8a487a319ull, 0x2d2196db55a83c83ull, 0xbb08f5a57bb7ab72ull, 0xd2e3edbba5ccc6b0ull, 0xcec266216611e307ull, 0x9d25c69475299beaull }}, {{ 0xa9fea6966d4c5ef5ull, 0xc34fe49158925d20ull, 0x4e599876d52cb275ull, 0x3ce7495479ffc2e7ull, 0x1397fd4dfcb2de4eull, 0x2379c1cc93a0172cull }}, {{ 0xa3f281e044fbb594ull, 0xa11eedad75b7a346ull, 0x0f7ff4a453bef899ull, 0x6108dd4cc3fd9d09ull, 0xc3efe50bdefcaf0eull, 0x62c191fdc440e7b8ull }}, {{ 0x677912c2b1d517cdull, 0x4b3548c6992c60c2ull, 0x9aff8e6b4575b600ull, 0xca58a4ffa7e8225aull, 0xa75ef276b5ded68full, 0xdb8fb3e9aa890d37ull }}, {{ 0x0ababb9af252edffull, 0xf014d7c1fbbbc798ull, 0x0dfb9030b6991c02ull, 0xe77671fc8f11578aull, 0x89b578a31ab4619dull, 0x939d0720a95a842cull }}, {{ 0x6b4b540d773d4bf6ull, 0x60d06d93d555cbf0ull, 0x8bd3a1e721fb181dull, 0x0aa073dd96ad6b64ull, 0x6116b65f0b0bd02bull, 0xc42247469d8929bdull }}, {{ 0x30f14886a864f79full, 0xc82447c65559f764ull, 0x7644530753cef125ull, 0x6a4486a7e2c631edull, 0xcae31fb66e7621aeull, 0xa956c8c2275ba165ull }}, {{ 0xe96cd54293f1ac36ull, 0xd16acdbf5583a9e9ull, 0x9eab3e4946156b79ull, 0x26ad428edbbdf346ull, 0xecdf3d20509d50d0ull, 0x9d63d79589944df9ull }}, {{ 0x1e405499c770ba1cull, 0x2e2c09795724a323ull, 0x32b06edcbcd632c2ull, 0x82c49994956b80c2ull, 0x40b8634326252821ull, 0x25e66bd75fcb0bc3ull }}, {{ 0x2e834e01ca67451aull, 0xcdb85ebd676e5f5full, 0xfae4549f605dfb95ull, 0x1badffcdd6330795ull, 0x8733e09f7d73914full, 0x7b003669bdee75a0ull }}, {{ 0xd1210c11e808b308ull, 0x0933b3660a4fb9b7ull, 0xcceb4e39c3abd3daull, 0x14cbfe0a5dfe4bdbull, 0x4806c63ae683ad17ull, 0xce0220216b509845ull }}, {{ 0x2b4a78b31056fe4cull, 0x5c0501fc671d412eull, 0x01310e41a4b64684ull, 0xcff7ec67abeef696ull, 0xd043be4d0124c2e6ull, 0x0c15414e3125f2b4ull }}, {{ 0xb0e8b6fea365eef7ull, 0x983213dc07248bcdull, 0x0bea8e906f1ec12bull, 0x1faf3c0cb755a1dcull, 0x22a56f020b6f9d04ull, 0x78d48d0deb7b7b10ull }}, {{ 0xe91725f261fb55a2ull, 0xf1f4c698476d7608ull, 0x772991a457338bb3ull, 0x3cd8587f29585298ull, 0x5a765614725c2229ull, 0xb84d828b32d2cea1ull }}, {{ 0x1ae77b77d3d15853ull, 0x738fc1f2ca469c59ull, 0xa79fb06b68037507ull, 0x607374f79d7339f4ull, 0x889f5ccc7799559cull, 0x3307196ffc3c124dull }}, {{ 0x0d0ad2ae462d733eull, 0x839d937be6c21b7bull, 0x8c3ce4321022924aull, 0xc48291ac2680438eull, 0x56399ffcabfd581bull, 0xfe46fe5fda58b707ull }}, {{ 0x826c3acebdc68069ull, 0x2427c2d7039512ceull, 0x7a60e9f4a159b6e9ull, 0xad19b0b98102a391ull, 0x5e403fdeb7e57115ull, 0xeec5efbe87772649ull }}, {{ 0x183a4c1369c1041full, 0x698d9c6623d2bc11ull, 0xc7c9238e4d81251bull, 0xc300e73f0a1a63aeull, 0xae827eb32ef66ad8ull, 0x53bb5d714aa77eddull }}, {{ 0xf246f8c2218a2933ull, 0x1f881bfd663b58aaull, 0xcddb638f070b7312ull, 0x9e0908766507e4d3ull, 0xd118f2ffd5a02c77ull, 0x4551a66cea8af4a8ull }}, {{ 0x76c5b7954f659c00ull, 0x3b5117e5fe5176adull, 0x0a91e39646727eb5ull, 0x2c5a549ff24ef046ull, 0x2af97dfe5841bcacull, 0xb5308041296d8e98ull }}, {{ 0xa3b92bd519f817fdull, 0x512aeefbef2ea2c6ull, 0x69b2e3dec078f314ull, 0xbb874e3f771562bcull, 0xadbeebef72915eb9ull, 0x13e5028b9e4791f1ull }}, {{ 0x653bb65303b0efe4ull, 0x2bad55d757d25bc2ull, 0x20fce6b384b97ecbull, 0x53490e7aa6d5db5cull, 0xc975375a79adb341ull, 0xc6f219742ecbb370ull }}, {{ 0xf4551f3e24e95ee5ull, 0xb4c55a696e379597ull, 0x49e103032f3ef3efull, 0x40da90ca845a9199ull, 0xde942988c0c9008dull, 0xc574fe89d3f50267ull }}, {{ 0x8b53386d711db4f5ull, 0x0fb5881e4e2bd7efull, 0xe2ca1e1fd875875dull, 0x8889a7e92b89affcull, 0xb1c99f5787da0584ull, 0xb691f1624792180eull }}, {{ 0x714034466b291195ull, 0x9d17512f0db66f5bull, 0xdbe52d3e749749a2ull, 0x55608f1bb360dfe0ull, 0xf1e0396b4e84372dull, 0x21b36dd6cbb4f092ull }}, {{ 0x6c820ac02f9aafd0ull, 0x22e92bd689205992ull, 0x96f3c4708de8e05aull, 0x55c5971501c8bec8ull, 0x72c23e31112a27c5ull, 0x51024a63f51165bdull }}, {{ 0x3d146b81dc0ade1cull, 0x5d1bb6615b437fb8ull, 0xe585ac658b18c385ull, 0x59b7e6d211d773d5ull, 0x7b966deaaba58db5ull, 0x2a16e7e792adf966ull }}, {{ 0x62cc3312986cad1aull, 0xa3151fcd90a2fd32ull, 0xf738bbf76ef7a335ull, 0x812f0434b26a865aull, 0xd3e04b2ab4778915ull, 0xa4e50f0bbacbbe00ull }}, {{ 0xdbf9feb9f43ec302ull, 0x5ed33e07a65de3f7ull, 0xa83757aa55ac6018ull, 0x0bd62a0ef8293f8dull, 0x46c2efab0cab5ad7ull, 0x70f296754bf56c08ull }}, {{ 0x97c3f3438a739e10ull, 0xb4406c4c7faae7aeull, 0x92296ca758bbc0f3ull, 0x765da495b19c7b88ull, 0xc39d5cae7eb18c66ull, 0x6979e094f7963852ull }}, {{ 0xeda780a368842c9bull, 0x0a843afcfcad0cd1ull, 0xb59e3e8977558985ull, 0x9fa86dd8f01cd355ull, 0xa4259ed0f2ef7c00ull, 0x1ec2c5d1abde333bull }}, {{ 0x488b06621529be13ull, 0x692a4de1dec28033ull, 0x182e715ea9575f32ull, 0x3c944a7961204159ull, 0x697834297d5ad806ull, 0x339bba30b6ae0054ull }}, {{ 0xd56e3fd4d3a16cbcull, 0x1ba70ad2b3990200ull, 0xf1d06db29d69b7f8ull, 0x5dcae8bdcb428d7aull, 0x1eb2099ee58c703eull, 0x041545e722cc034cull }}, {{ 0x564e7e50444e3f5cull, 0x14866c3b03fa1408ull, 0x722448fa26212fb1ull, 0xa9ed1769f09986cdull, 0x32f46034f77c626full, 0x28d4bb075bf820f9ull }}, {{ 0x5f10ef22ab0e799aull, 0xcd403a4e27c4c853ull, 0x756ad9c57d4bdceaull, 0xa342ea2365ff4406ull, 0xfd8bc211aadbd85cull, 0x984f4e4997b149bbull }}, {{ 0xb6a9575aae90c005ull, 0x0482470d8dafd341ull, 0x962c81b6e4f6a12cull, 0x609d2561fbf8a840ull, 0xe77594b0ac96739eull, 0xf3190edfecece157ull }}, {{ 0x229d698ad1a78030ull, 0x2d16c68788de4091ull, 0xddbd1124f1a24bb8ull, 0xc62375d3d7b69285ull, 0x0a97cee6bde0842full, 0x7efa94bf4140cd6full }}, {{ 0x5a261f6c308b01dcull, 0xc2e3c14b58ae85abull, 0xa962ab717056f531ull, 0xbd629a466d21b93aull, 0x69ee15036ac529ddull, 0xf5c9cf788c880656ull }}, {{ 0x857d3a39e56e129bull, 0x9ce58cf176d138b1ull, 0x9ddab26e636593f1ull, 0x65da06c043513c4aull, 0x234cd2222bb3a2a9ull, 0x99e21ab57d503f60ull }}, {{ 0x36e44642f64cba10ull, 0x20f7816ea42c36efull, 0x2a8af84fe1f7c770ull, 0xfa844382a12c5aeaull, 0x61003555b5045a9dull, 0x02d50b16e52279c1ull }}, {{ 0x24eabe9d9eff449bull, 0x49ab0e5269ba2558ull, 0xa96db31ed3adca61ull, 0xc92aa31a4bbb8d25ull, 0xca021559122b8a2bull, 0x1c526ee4f358c18dull }}, {{ 0x712b722835f8ae12ull, 0xe0ae8f3821457571ull, 0x9e48ff3444c9e7ccull, 0xdbaa5f06f5538378ull, 0xe414d57ab5b365b5ull, 0x1b3854f181778f89ull }}, {{ 0x6bb275921bb6ccb3ull, 0xc6d198314cb6966eull, 0x2ed9f80aafe30e00ull, 0x94a7b645954322b6ull, 0xe8d056cb1901f91aull, 0x1033516f0eab9b62ull }}, {{ 0x34f897b51523ff01ull, 0xc42ff1ecff21e050ull, 0xd483b06adede8c07ull, 0xce8d1eb7d49f5b1dull, 0x182363eefa13bb09ull, 0xa2012e5692b411ddull }}, {{ 0x11b5ed12d367f60bull, 0xa9df7341f752c322ull, 0x4d24e42cb4b1784dull, 0x1183332e4e398f2aull, 0xf161e755c4c54e62ull, 0x540bcf61bb08b2a2ull }}, {{ 0xb11b42bc420f9c6full, 0xa2ba8093a93b9f54ull, 0x0370e9bf0eeeb308ull, 0xaf1fffcf0e3f97a7ull, 0x6dd30959afb50fd4ull, 0x487619d14e56fa5dull }}, {{ 0xeb109b5a949c1c5aull, 0x5b4905c49c54394eull, 0x226921769552fe56ull, 0xd73ffe168e7bec86ull, 0x4a3e5d80dd129e4eull, 0xd49d022d0f65c7a6ull }}, {{ 0x2ea61189ce191b86ull, 0x90da39ae1b4a3d15ull, 0x581b4ea1d53def5full, 0x687fece190d73d3dull, 0xe66fa708a2ba2f14ull, 0x4e2215c299f9cc7eull }}, {{ 0xd27caf620cfb133aull, 0xa88640cd10e662d3ull, 0x71111252546b59bbull, 0x14ff40cfa8686465ull, 0x005c86565b45d6ccull, 0x0d54d99a03c1fcf5ull }}, {{ 0x38ded9d481cec040ull, 0x953e8802a8ffdc46ull, 0x6aaab7374c318154ull, 0xd1f8881c9413ebf6ull, 0x039d3f5f90ba63f8ull, 0x855080042593e192ull }}, {{ 0x38b4824d12138285ull, 0xd471501a99fe9abeull, 0x2aab2828f9ef0d4dull, 0x33b5511dc8c737a0ull, 0x242479bba747e7b8ull, 0x3525002977c6cfb4ull }}, {{ 0x370d1702b4c31931ull, 0x4c6d210a03f20b6eull, 0xaaaf9199c356850aull, 0x05152b29d7c82c41ull, 0x696cc15488cf0d32ull, 0x1372019eadc41d09ull }}, {{ 0x2682e61b0f9efbe8ull, 0xfc434a642774724eull, 0xaadbb001a1613266ull, 0x32d3afa26dd1ba90ull, 0x1e3f8d4d581683f4ull, 0xc2741032c9a9225eull }}, {{ 0x811cfd0e9c35d70dull, 0xdaa0e7e98a8c770dull, 0xac94e0104dcbf805ull, 0xfc44dc584a3149a6ull, 0x2e7b850570e12789ull, 0x9888a1fbe09b57adull }}, {{ 0x0b21e2921a1a6684ull, 0x8a490f1f697ca687ull, 0xbdd0c0a309f7b03aull, 0xdab09b72e5ece082ull, 0xd0d3323668cb8b63ull, 0xf55653d6c6116cc3ull }}, {{ 0x6f52d9b505080129ull, 0x66da973a1ede8146ull, 0x6a27865e63ace249ull, 0x8ae6127cfb40c51bull, 0x283ff62017f371e6ull, 0x955f4663bcae3fa6ull }}, {{ 0x593c811232500b98ull, 0x0489e84534b10cc0ull, 0x258b3fafe4c0d6deull, 0x6cfcb8e1d087b312ull, 0x927f9d40ef827301ull, 0xd5b8bfe55ece7c7dull }}, {{ 0x7c5d0ab5f72073ecull, 0x2d6312b40eea7f83ull, 0x77707cdeef8864acull, 0x41df38d2254cfeb5ull, 0xb8fc24895b187e0eull, 0x59377ef5b410dce7ull }}, {{ 0xdba26b1ba7448736ull, 0xc5debb089528fb22ull, 0xaa64e0b55b53eeb9ull, 0x92b838357501f316ull, 0x39d96d5d8ef4ec8eull, 0x7c2af59908a8a10dull }}, {{ 0x94582f1488ad481aull, 0xbab34e55d399cf5cull, 0xa7f0c71591475341ull, 0xbb32321692137ee2ull, 0x427e45a795913d91ull, 0xd9ad97fa56964a84ull }}, {{ 0xcb71d6cd56c4d108ull, 0x4b010f5a4402199dull, 0x8f67c6d7acc94091ull, 0x4ff5f4e1b4c2f4daull, 0x98eeb88bd7ac67b1ull, 0x80c7efc761dee92aull }}, {{ 0xf272640563b02a4full, 0xee0a9986a8150029ull, 0x9a0dc46cbfdc85acull, 0x1f9b90d10f9d9089ull, 0xf95335766cbc0cedull, 0x07cf5dc9d2b51ba9ull }}, {{ 0x7877e835e4e1a716ull, 0x4c69ff4290d201a3ull, 0x0489ac3f7e9d38c1ull, 0x3c13a82a9c27a560ull, 0xbd4016a03f588143ull, 0x4e19a9e23b1314a3ull }}, {{ 0xb4af121af0d086dcull, 0xfc23f899a8341062ull, 0x2d60ba7af224378cull, 0x58c491aa198c75c0ull, 0x6480e24279750ca0ull, 0x0d00a2d64ebece65ull }}, {{ 0x0ed6b50d6825449dull, 0xd967b6009208a3dbull, 0xc5c748cd756a2b81ull, 0x77adb0a4ff7c9981ull, 0xed08d698be927e43ull, 0x82065c5f13740ff5ull }}, {{ 0x946312861174ae21ull, 0x7e0d1c05b456668eull, 0xb9c8d8069625b312ull, 0xacc8e671faddff11ull, 0x425861f771b8eea2ull, 0x143f9bb6c2889f9bull }}, {{ 0xcbdeb93cae8ecd4dull, 0xec8318390b600191ull, 0x41d87041dd78feb8ull, 0xbfd90073ccabf6b1ull, 0x9773d3aa7139525aull, 0xca7c152399563c10ull }}, {{ 0xf6b33c5ed1940503ull, 0x3d1ef23a71c00fb1ull, 0x92746292a6b9f339ull, 0x7e7a0485feb7a2ecull, 0xea8644a86c3d378bull, 0xe8d8d363fd5e58a5ull }}, {{ 0xa3005bb42fc8321aull, 0x6335764871809cf3ull, 0xb88bd9ba8343803cull, 0xf0c42d3bf32c5d3dull, 0x293eae943a642b72ull, 0x187841e7e5af767bull }}, {{ 0x5e039509ddd1f500ull, 0xe0169ed46f062184ull, 0x3576814920a3025bull, 0x67a9c4577fbba469ull, 0x9c72d1ca47e9b27dull, 0xf4b2930ef8daa0cfull }}, {{ 0xac23d262aa3391ffull, 0xc0e2344c563d4f2bull, 0x16a10cdb465e1796ull, 0x0ca1ab6afd546c1cull, 0x1c7c31e6cf20f8e6ull, 0x8ef9be95b88a481cull }}, {{ 0xb96637daa603b3f7ull, 0x88d60afb5e6517b4ull, 0xe24a8090bfacebe3ull, 0x7e50b22de54c3918ull, 0x1cd9f3041749b8fcull, 0x95c171d93566d119ull }}, {{ 0x3dfe2e8a7c2507a2ull, 0x585c6dd1aff2ed0full, 0xd6e905a77cc136e3ull, 0xef26f5caf4fa3af8ull, 0x20837e28e8e139dcull, 0xd98e727c16042afbull }}, {{ 0x6bedd168d9724c4full, 0x739c4a30df7d4298ull, 0x651a388adf8c24e1ull, 0x578599ed91c64db8ull, 0x4522ed9918cc42a1ull, 0x7f9078d8dc29adcfull }}, {{ 0x374a2e187e76fb16ull, 0x841ae5e8bae499f4ull, 0xf306356cbb7970ceull, 0x6b380347b1bf0933ull, 0xb35d47faf7fa9a4dull, 0xfba4b87899a0ca18ull }}, {{ 0x28e5ccf4f0a5cedeull, 0x290cfb174cee038aull, 0x7e3e163f52be6811ull, 0x303020ccf1765c07ull, 0x01a4cfcdafca0706ull, 0xd46f34b60047e4f7ull }}, {{ 0x98fa0191667a14a9ull, 0x9a81cee9014c2365ull, 0xee6cde793b7010abull, 0xe1e148016e9f984aull, 0x10701e08dde4463dull, 0x4c580f1c02cef1a6ull }}, {{ 0xf9c40fae00c4ce98ull, 0x0912151a0cf961f7ull, 0x5040b0bc5260a6b4ull, 0xd2ccd00e523bf2edull, 0xa4612c58aaeabe6aull, 0xfb7097181c15707cull }}, {{ 0xc1a89ccc07b011ecull, 0x5ab4d30481bdd3afull, 0x2286e75b37c68308ull, 0x3c00208f36577d45ull, 0x6bcbbb76ad2b702cull, 0xd265e6f118d664deull }}, {{ 0x90961ff84ce0b337ull, 0x8b103e2d116a44ddull, 0x594509902dc11e53ull, 0x580145981f6ae4b3ull, 0x35f552a2c3b261baull, 0x37fb056af85ff0b0ull }}, {{ 0xa5dd3fb300c70023ull, 0x6ea26dc2ae26b0a7ull, 0x7cb25fa1c98b2f43ull, 0x700cb7f13a2cef01ull, 0x1b953a5ba4f7d147ull, 0x2fce362db3bf66e2ull }}, {{ 0x7aa47cfe07c60161ull, 0x5258499acd82e68cull, 0xdef7bc51df6fd8a2ull, 0x607f2f6c45c1560eull, 0x13d4479471ae2ccaull, 0xde0e1dc9057a04d5ull }}, {{ 0xca6ce1ec4dbc0dc8ull, 0x3772e00c071d017cull, 0xb5ad5b32ba5e7657ull, 0xc4f7da3ab98d5c94ull, 0xc64acbcc70cdbfe7ull, 0xac8d29da36c43052ull }}, {{ 0xe840d33b095889d2ull, 0x2a7cc07847220edfull, 0x18c58ffb47b09f68ull, 0xb1ae864b3f859dcfull, 0xbeebf5fc68097f0dull, 0xbd83a28623a9e33bull }}, {{ 0x1288404e5d756236ull, 0xa8df84b2c75494bfull, 0xf7b79fd0cce63a11ull, 0xf0d13ef07b382a16ull, 0x75379bdc105ef688ull, 0x6724593d64a2e055ull }}, {{ 0xb952830fa695d61dull, 0x98bb2efbc94dcf76ull, 0xad2c3e2800fe44b0ull, 0x682c7564d031a4e5ull, 0x942c1698a3b5a159ull, 0x076b7c65ee5cc356ull }}, {{ 0x3d391e9c81da5d23ull, 0xf74fd5d5dd0a1aa3ull, 0xc3ba6d9009eeaee5ull, 0x11bc95f021f070f8ull, 0xc9b8e1f665184d7eull, 0x4a32dbfb4f9fa161ull }}, {{ 0x643b321d1287a35aull, 0xa91e5a5aa2650a60ull, 0xa54847a06352d4fbull, 0xb15ddb61536469b7ull, 0xe138d39ff2f306ecull, 0xe5fc97d11c3c4dd1ull }}, {{ 0xea4ff522b94c6186ull, 0x9b2f878a57f267c3ull, 0x74d2cc43e13c51d4ull, 0xedaa91cd41ec212cull, 0xcc38443f7d7e453eull, 0xfbddee2b1a5b0a32ull }}, {{ 0x271f935b3cfbcf3cull, 0x0fdb4b676f780da7ull, 0x903bfaa6cc5b324eull, 0x48a9b20493394bbcull, 0xfa32aa7ae6eeb475ull, 0xd6ab4daf078e65fbull }}, {{ 0x873bc19061d6185aull, 0x9e90f20a5ab08887ull, 0xa257ca83fb8ff70cull, 0xd6a0f42dc03cf55dull, 0xc5faa8cd05530c94ull, 0x62b108d64b8ffbd7ull }}, {{ 0x48558fa3d25cf385ull, 0x31a974678ae5554bull, 0x576de927d39fa67eull, 0x624989c9826195a8ull, 0xbbca9802353e7dd0ull, 0xdaea585ef39fd66dull }}, {{ 0xd3579c6637a18330ull, 0xf09e8c0b6cf554f0ull, 0x6a4b1b8e443c80edull, 0xd6df61df17cfd893ull, 0x55e9f0161470ea23ull, 0x8d2773b5843e6049ull }}, {{ 0x416c1bfe2c4f1fdcull, 0x6631787241955168ull, 0x26ef138eaa5d094bull, 0x64b9d2b6ee1e75c2ull, 0x5b2360dccc692566ull, 0x838a85172a6fc2ddull }}, {{ 0x8e3917edbb173e97ull, 0xfdeeb4768fd52e12ull, 0x8556c392a7a25cf1ull, 0xef423b254d309995ull, 0x8f61c89ffc1b75ffull, 0x236932e7a85d9ca5ull }}, {{ 0x8e3aef494ee871eaull, 0xeb530ca19e53ccb9ull, 0x3563a3ba8c57a173ull, 0x58964f7503e5ffd7ull, 0x99d1d63fd9129bffull, 0x621bfd0c93a81e77ull }}, {{ 0x8e4d58dd15147328ull, 0x313e7e502f45ff3full, 0x15e465497b6c4e87ull, 0x75df1a9226fbfe68ull, 0x02325e7e7aba17f9ull, 0xd517e27dc49130acull }}, {{ 0x8f0578a2d2cc7f8bull, 0xec70ef21d8bbf87bull, 0xdaebf4ded23b1147ull, 0x9ab709b585d7f010ull, 0x15f7b0f0cb44efbeull, 0x52eed8e9adabe6b8ull }}, {{ 0x9636b65c3bfcfb6full, 0x3c6957527757b4d3ull, 0x8d3790b4364eaccfull, 0x0b2661173a6f60a8ull, 0xdbace967f0b15d72ull, 0x3d547920c8b70330ull }}, {{ 0xde231f9a57e1d251ull, 0x5c1d6938a96d1043ull, 0x842ba70a1f12c018ull, 0x6f7fcae84859c695ull, 0x94c11e0f66eda674ull, 0x654cbb47d7261fe8ull }}, {{ 0xad5f3c076ed2372cull, 0x99261c369e42a2a6ull, 0x29b4866536bb80f3ull, 0x5afded12d381c1d7ull, 0xcf8b2c9a0548808cull, 0xf4ff50ce677d3f15ull }}, {{ 0xc5b8584a543627b9ull, 0xfb7d1a222e9a5a82ull, 0xa10d3ff423530983ull, 0x8deb42bc43119267ull, 0x1b6fbe0434d5057bull, 0x91f928100ae476daull }}, {{ 0xb93372e74a1d8d3aull, 0xd2e30555d207891bull, 0x4a847f89613e5f27ull, 0x8b309b5a9eafb80cull, 0x125d6c2a105236d3ull, 0xb3bb90a06ceca485ull }}, {{ 0x3c027d08e5278443ull, 0x3cde355a344b5b15ull, 0xe92cfb5dcc6fb78eull, 0x6fe6118a32dd307aull, 0xb7a639a4a3362443ull, 0x0553a644413e6d32ull }}, {{ 0x5818e258f38b2aa3ull, 0x60ae15860af18ed4ull, 0x1bc1d1a9fc5d2b8eull, 0x5efcaf65fca3e4cdull, 0x2c7e406e601d6aa2ull, 0x35447eaa8c7043fbull }}, {{ 0x70f8d779836faa5bull, 0xc6ccd73c6d6f944bull, 0x159230a3dba3b38full, 0xb5ded9fbde66f003ull, 0xbcee844fc1262a57ull, 0x14acf2a97c62a7cfull }}, {{ 0x69b86abf225ca78full, 0xc400685c465bcaf2ull, 0xd7b5e6669465039dull, 0x1ab483d6b005601eull, 0x61512b1d8b7da76dull, 0xcec17a9edbda8e1dull }}, {{ 0x21342b77579e8b99ull, 0xa804139abf95ed78ull, 0x6d1b0001cbf22429ull, 0x0b0d2662e035c134ull, 0xcd2baf2772e88a43ull, 0x138eca3496898d25ull }}, {{ 0x4c09b2a96c3173f5ull, 0x9028c40b7bdb46b1ull, 0x430e0011f77569a0ull, 0x6e837fdcc2198c0cull, 0x03b4d78a7d15669eull, 0xc393e60de15f837aull }}, {{ 0xf860fa9e39ee8796ull, 0xa197a872d690c2ecull, 0x9e8c00b3aa962045ull, 0x5122fe9f94ff787aull, 0x25106b68e2d60230ull, 0xa3c6fc8acdbb22c4ull }}, {{ 0xb3c9ca2e43514bd9ull, 0x4fec947c61a79d41ull, 0x31780704a9dd42b8ull, 0x2b5df23bd1fab4caull, 0x72a43218dc5c15e3ull, 0x65c5dd6c094f5ba9ull }}, {{ 0x05e1e5cea12cf679ull, 0x1f3dccdbd08c2491ull, 0xeeb0462ea2a49b33ull, 0xb1ab765633cb0fe5ull, 0x7a69f4f89b98dadfull, 0xf9baa6385d19949eull }}, {{ 0x3ad2fa124bc1a0b8ull, 0x386a009625796daaull, 0x52e2bdd25a6e0fffull, 0xf0b29f5e05ee9efbull, 0xc82391b613f88cbcull, 0xc14a7e33a2ffce30ull }}, {{ 0x4c3dc4b6f5904731ull, 0x342405dd76be48a6ull, 0x3cdb6a37884c9ff8ull, 0x66fa39ac3b5235d1ull, 0xd163b11cc7b57f61ull, 0x8ce8ee045dfe0de7ull }}, {{ 0xfa69af2597a2c7e7ull, 0x09683aa6a36ed67eull, 0x6092262b52fe3fb2ull, 0x05c640ba51361a2cull, 0x2de4eb1fcd16f9ceull, 0x81194c2babec8b0eull }}, {{ 0xc820d777ec5bcf03ull, 0x5e124a82625460f5ull, 0xc5b57db13dee7cf4ull, 0x39be87472c1d05bbull, 0xcaf12f3e02e5c20cull, 0x0afcf9b4b73d6e8dull }}, {{ 0xd1486aaf3b96161full, 0xacb6e917d74bc999ull, 0xb916e8ec6b50e18bull, 0x417148c7b9223955ull, 0xed6bd86c1cf9947aull, 0x6de1c10f28665189ull }}, {{ 0x2cd42ad853dcdd36ull, 0xbf251aee68f5e002ull, 0x3ae5193c3128cf74ull, 0x8e6cd7cd3b563d59ull, 0x4636743921bfccc6ull, 0x4ad18a9793ff2f63ull }}, {{ 0xc049ac7346a0a41cull, 0x77730d50199ac015ull, 0x4cf2fc59eb981a8full, 0x90406e04515e657cull, 0xbe208a3b517dffc1ull, 0xec2f69ebc7f7d9e0ull }}, {{ 0x82e0bc80c246691bull, 0xaa7e8521000b80d9ull, 0x017ddb8333f1099aull, 0xa2844c2b2daff6dbull, 0x6d4566512eebfd8full, 0x39da2335cfae82c7ull }}, {{ 0x1cc75d0796c01b0full, 0xa8f1334a0073087full, 0x0eea9320076a600aull, 0x592af9afc8dfa48eull, 0x44b5ff2bd537e79cull, 0x4285601a1cd11bcaull }}, {{ 0x1fc9a24be3810e97ull, 0x996c00e4047e54f7ull, 0x9529bf404a27c06aull, 0x7badc0ddd8bc6d8cull, 0xaf1bf7b6542f0c1bull, 0x9935c105202b15e6ull }}, {{ 0x3de056f6e30a91e8ull, 0xfe3808e82cef51a7ull, 0xd3a17882e58d8429ull, 0xd4c988aa775c477dull, 0xd717ad1f49d67912ull, 0xfc198a3341aedb02ull }}, {{ 0x6ac365a4de69b30full, 0xee305911c1593088ull, 0x444eb51cf78729a3ull, 0x4fdf56a8a99acaeaull, 0x66ecc338e260babcull, 0xd8ff660090d48e1cull }}, {{ 0x2ba1f870b020fe9aull, 0x4de37ab18d7be554ull, 0xab131321ab47a067ull, 0x1eb96296a00bed26ull, 0x053fa038d7c74b5bull, 0x79f9fc05a84d8d1cull }}, {{ 0xb453b466e149f201ull, 0x0ae2caef86d6f549ull, 0xaebebf50b0cc4409ull, 0x333dd9e240774382ull, 0x347c42386dc8f18full, 0xc3c3d83893078318ull }}, {{ 0x0b450c04cce3740dull, 0x6cdbed5b446594e1ull, 0xd3737926e7faa85aull, 0x006a82d684a8a31aull, 0x0cda963449d96f98ull, 0xa5a67235be4b1ef2ull }}, {{ 0x70b2783000e28880ull, 0x40974590abf7d0caull, 0x4282bb850fca9388ull, 0x04291c612e965f0cull, 0x8089de0ae27e5bf0ull, 0x788076196eef3574ull }}, {{ 0x66f8b1e008d954ffull, 0x85e8b7a6b7ae27e8ull, 0x991b53329de9c352ull, 0x299b1bcbd1dfb67aull, 0x0562ac6cd8ef9760ull, 0xb5049cfe5558168dull }}, {{ 0x05b6f2c0587d51f1ull, 0x3b172c832ccd8f14ull, 0xfb113ffa2b21a139ull, 0xa00f15f632bd20c9ull, 0x35dabc40795be9c1ull, 0x122e21ef5570e182ull }}, {{ 0x39257b8374e5336bull, 0x4ee7bd1fc00796c8ull, 0xceac7fc5af504c3cull, 0x4096db9dfb6347e3ull, 0x1a8b5a84bd972190ull, 0xb5cd53595668cf16ull }}, {{ 0x3b76d32290f4022eull, 0x150d633d804be3d2ull, 0x12bcfdb8d922fa5bull, 0x85e4942bd1e0cee6ull, 0x0971892f67e74fa2ull, 0x1a05417d601816ddull }}, {{ 0x52a43f59a98815c9ull, 0xd285e06702f6e636ull, 0xbb61e9387b5dc78eull, 0x3aedc9b632c814fcull, 0x5e6f5bda0f091c59ull, 0x04348ee5c0f0e4a2ull }}, {{ 0x3a6a79809f50d9d9ull, 0x393ac4061da4fe1full, 0x51d31c34d1a9cb94ull, 0x4d49e11dfbd0d1dfull, 0xb0599684965b1b7cull, 0x2a0d94f98968ee57ull }}, {{ 0x4828bf063928827dull, 0x3c4ba83d2871ed38ull, 0x323f1a1030a1f3caull, 0x04e2cb2bd62832b9ull, 0xe37fe12ddf8f12dbull, 0xa487d1bf5e194f6cull }}, {{ 0xd197763e3b9518e3ull, 0x5af4926394734432ull, 0xf67704a1e65385e6ull, 0x30dbefb65d91fb3bull, 0xe2fecbcabb96bc8eull, 0x6d4e3179acfd1a40ull }}, {{ 0x2fea9e6e53d2f8e0ull, 0x8d8db7e3cc80a9fcull, 0xa0a62e52ff433affull, 0xe8975d1fa7b3d057ull, 0xddf3f5eb53e35d8dull, 0x450deec0c1e30688ull }}, {{ 0xdf2a304f463db8c4ull, 0x87892ee5fd06a3d9ull, 0x467dcf3df8a04dfbull, 0x15e9a33c8d06236cull, 0xab879b3146e1a78bull, 0xb28b538792de4158ull }}, {{ 0xb7a5e318be6937a6ull, 0x4b5bd4fbe2426682ull, 0xc0ea186bb6430bd3ull, 0xdb20605d823d623aull, 0xb34c0fecc4d08b6eull, 0xf971434bbcae8d76ull }}, {{ 0x2c7adef7701c2c7full, 0xf19651d6d698011bull, 0x8924f4351e9e7640ull, 0x8f43c3a71665d64bull, 0x00f89f3fb0257254ull, 0xbe6ca0f55ed186a3ull }}, {{ 0xbcccb5aa6119bcf7ull, 0x6fdf326461f00b0full, 0x5b718a1332309e89ull, 0x98a5a486dffa5ef3ull, 0x09b6387ce176774dull, 0x703e4995b42f425eull }}, {{ 0x5fff18a7cb0161abull, 0x5eb7f7ebd3606e9dull, 0x926f64bff5e6315eull, 0xf6786d44bfc7b581ull, 0x611e34e0cea0a907ull, 0x626edfd909d897acull }}, {{ 0xbff6f68dee0dd0aeull, 0xb32faf3641c45225ull, 0xb859ef7f9afdedafull, 0xa0b444af7dcd170full, 0xcb2e10c812469a4full, 0xd854be7a6275ecbbull }}, {{ 0x7fa5a18b4c8a26cbull, 0xffdcd81e91ab3579ull, 0x33835afc0deb48dcull, 0x470aaedaea02e69dull, 0xefcca7d0b6c2071cull, 0x734f70c7d89b3f55ull }}, {{ 0xfc784f70fd6583e9ull, 0xfea07131b0b016beull, 0x03218dd88b30d8a1ull, 0xc66ad48d241d0224ull, 0x5dfe8e272394471aull, 0x811a67ce7610795bull }}, {{ 0xdcb31a69e5f7271eull, 0xf2446bf0e6e0e375ull, 0x1f4f8a756fe87653ull, 0xc02c4d8369221568ull, 0xabf18d8763cac70bull, 0x0b080e109ca4bd91ull }}, {{ 0x9eff0822fba7872aull, 0x76ac376904c8e29aull, 0x391b68965f149f47ull, 0x81bb07221b54d611ull, 0xb76f8749e5ebc675ull, 0x6e508ca61e6f67b0ull }}, {{ 0x35f6515dd48b47a7ull, 0xa2ba2a1a2fd8da0aull, 0x3b1215dfb6ce38caull, 0x114e475511505cacull, 0x2a5b48e2fb35c097ull, 0x4f257e7d305a0ce7ull }}, {{ 0x1b9f2daa4d70cc8aull, 0x5b45a505de788466ull, 0x4eb4dabd240e37eaull, 0xad0ec952ad239ebaull, 0xa790d8ddd01985e6ull, 0x1776f0e3e3848107ull }}, {{ 0x1437c8a70667fd64ull, 0x90b8723ab0b52bfdull, 0x13108b63688e2f27ull, 0xc293dd3ac3643347ull, 0x8ba878aa20ff3b02ull, 0xeaa568e6e32d0a4cull }}, {{ 0xca2dd686400fe5e6ull, 0xa734764ae713b7e2ull, 0xbea571e2158dd78bull, 0x99c6a44ba1ea00c6ull, 0x7494b6a549f84e1bull, 0x2a761904dfc266fdull }}, {{ 0xe5ca613e809efafcull, 0x880c9eed06c52edbull, 0x727672d4d78a6b74ull, 0x01c26af4532407c3ull, 0x8dcf2274e3b30d14ull, 0xa89cfa30bd9805e6ull }}, {{ 0xf9e7cc710635cdd9ull, 0x507e354243b3d496ull, 0x78a07c506b68328dull, 0x11982d8b3f684da2ull, 0x8a175890e4fe82c8ull, 0x9621c5e767f03b01ull }}, {{ 0xc30dfc6a3e1a0a7cull, 0x24ee1496a5064de5ull, 0xb644db243211f985ull, 0xaff1c7707a130858ull, 0x64e975a8f1f11bd0ull, 0xdd51bb0a0f624e0full }}, {{ 0x9e8bdc266d0468dcull, 0x714ccde2723f0af9ull, 0x1eb08f69f4b3bf33ull, 0xdf71ca64c4be5377ull, 0xf11e9899736b1626ull, 0xa5314e6499d70c99ull }}, {{ 0x31769980422c189bull, 0x6d000ad876766dc0ull, 0x32e59a238f057802ull, 0xba71e7efaf6f42a7ull, 0x6b31f5fe822edd84ull, 0x73ed0fee02667e03ull }}, {{ 0xeea1ff0295b8f60dull, 0x42006c74a0a04981ull, 0xfcf805639636b018ull, 0x48730f5cda589a87ull, 0x2ff39bf115d4a72full, 0x87429f4c1800ec22ull }}, {{ 0x5253f619d9399c87ull, 0x94043c8e4642df13ull, 0xe1b035e3de22e0f2ull, 0xd47e99a08776094full, 0xdf84176ada4e87d8ull, 0x489a38f8f0093955ull }}, {{ 0x37479d027c401d44ull, 0xc82a5d8ebe9cb6c1ull, 0xd0e21ae6ad5cc979ull, 0x4cf200454a9c5d1eull, 0xbb28ea2c87114e78ull, 0xd60639b9605c3d5aull }}, {{ 0x28cc2218da8124abull, 0xd1a7a793721f238cull, 0x28d50d02c59fdec1ull, 0x017402b4ea1ba334ull, 0x4f9925bd46ad10b3ull, 0x5c3e413dc39a658bull }}, {{ 0x97f954f8890b6eb1ull, 0x308c8bc275376379ull, 0x9852821bb83eb392ull, 0x0e881b1125146009ull, 0x1bfb7964c2c2a6feull, 0x9a6e8c69a407f771ull }}, {{ 0xefbd51b55a7252e5ull, 0xe57d75989429e2bfull, 0xf3391515327303b5ull, 0x91510eab72cbc05full, 0x17d2bdef9b9a85ecull, 0x08517c20684faa6bull }}, {{ 0x5d65311588773cf6ull, 0xf6e697f5c9a2db7full, 0x803ad2d3f87e251aull, 0xad2a92b27bf583bfull, 0xee3b6b5c14093b3dull, 0x532ed944131ca82eull }}, {{ 0xa5f3ead754a8619dull, 0xa501ef99e05c92f9ull, 0x024c3c47b4ed730dull, 0xc3a9baf8d797257bull, 0x4e523198c85c5068ull, 0x3fd47ca8bf1e91d5ull }}, {{ 0x7b872c694e93d023ull, 0x72135c02c39dbdc0ull, 0x16fa5acd11467e88ull, 0xa4a14db86be776ceull, 0x0f35eff7d39b2417ull, 0x7e4cde977731b255ull }}, {{ 0xd347bc1d11c62161ull, 0x74c1981ba4296984ull, 0xe5c78c02acc0f154ull, 0x6e4d0934370aa40cull, 0x981b5fae440f68ecull, 0xef00b1eaa7f0f752ull }}, {{ 0x40cd5922b1bd4dc7ull, 0x8f8ff114699e1f30ull, 0xf9cb781abf896d4cull, 0x4f025c0a266a6880ull, 0xf111bccea89a193cull, 0x5606f32a8f69a939ull }}, {{ 0x88057b5af16509c6ull, 0x9b9f6acc202d37e2ull, 0xc1f2b10b7b5e44fdull, 0x1617986580281509ull, 0x6ab160129604fc5bull, 0x5c457fa99a209c43ull }}, {{ 0x5036d18d6df261baull, 0x143a2bf941c42ed9ull, 0x937aea72d1aeb1e8ull, 0xdcebf3f70190d261ull, 0x2aedc0b9dc31db8eull, 0x9ab6fca005461aa2ull }}, {{ 0x22242f864b77d148ull, 0xca45b7bc91a9d47dull, 0xc2cd287c30d2f310ull, 0xa13787a60fa837cfull, 0xad49874299f29394ull, 0x0b25de4034bd0a55ull }}, {{ 0x5569db3ef2ae2cd3ull, 0xe6b92d5db0a24ce3ull, 0x9c0394d9e83d7ea7ull, 0x4c2b4c7c9c922e1dull, 0xc4df489a0379c3ceull, 0x6f7aae820f626758ull }}, {{ 0x562290757acdc03eull, 0x033bc5a8e65700e1ull, 0x1823d0831266f28full, 0xf9b0fcde1db5cd28ull, 0xb0b8d60422c1a60eull, 0x5acad11499d80977ull }}, {{ 0x5d59a496cc098268ull, 0x2055b898ff6608cdull, 0xf166251eb8057996ull, 0xc0e9e0ad291a0390ull, 0xe7385c295b907c95ull, 0x8bec2ace02705eacull }}, {{ 0xa5806de3f85f180dull, 0x435935f9f9fc5805ull, 0x6dfd73333036bfddull, 0x8922c6c39b0423a9ull, 0x0833999d93a4ddd9ull, 0x7739ac0c1863b2c1ull }}, {{ 0x77044ae7b3b6f080ull, 0xa17c1bc3c3db7038ull, 0x4be67fffe2237ea4ull, 0x5b5bc3a40e29649eull, 0x52040027c470aa7full, 0xa840b878f3e4fb8aull }}, {{ 0xa62aed0d052564fcull, 0x4ed915a5a6926234ull, 0xf700fffed562f26eull, 0x9195a4688d9dee2eull, 0x3428018dac66a8f9ull, 0x928734b986f1d367ull }}, {{ 0x7dad42823375f1d8ull, 0x147ad87881b7d60eull, 0xa609fff455dd784full, 0xafd86c15882b4dd5ull, 0x09900f88bc0299bfull, 0xb9480f3f45724208ull }}, {{ 0xe8c49916029b726bull, 0xcccc74b5112e5c90ull, 0x7c63ff8b5aa6b316ull, 0xde7438d751b10a58ull, 0x5fa09b57581a017cull, 0x3cd09878b6769450ull }}, {{ 0x17adfadc1a127833ull, 0xfffc8f12abcf9da9ull, 0xdbe7fb718a82fee3ull, 0xb08a386930ea6774ull, 0xbc46116971040ee0ull, 0x6025f4b720a1cb23ull }}, {{ 0xeccbcc9904b8b1faull, 0xffdd96bab61c289aull, 0x970fd26f691df4e7ull, 0xe566341be9280a90ull, 0x5abcae1e6a2894c6ull, 0xc17b8f274651ef65ull }}, {{ 0x3ff5fdfa2f36f3c7ull, 0xfea7e34b1d19960dull, 0xe69e385a1b2b910full, 0xf5fe09171b9069a5ull, 0x8b5ecd302595cfc4ull, 0x8ed39788bf3359f5ull }}, {{ 0x7f9bebc5d82585c6ull, 0xf28ee0ef22ffdc84ull, 0x022e33850fb3aa9full, 0x9bec5ae713a4207bull, 0x71b403e177da1db1ull, 0x9443eb5778018397ull }}, {{ 0xfc1735ba717739c0ull, 0x7994c9575dfe9d2cull, 0x15ce03329d04aa3full, 0x173b8d06c46944ceull, 0x710826ceae8528f0ull, 0xcaa7316ab00f23eaull }}, {{ 0xd8e819486ea84180ull, 0xbfcfdd69abf223c1ull, 0xda0c1ffa222ea67aull, 0xe8538243ac1cb00cull, 0x6a518412d1339960ull, 0xea87ee2ae0976728ull }}, {{ 0x7910fcd452928efdull, 0x7e1ea620b7756592ull, 0x84793fc555d280cbull, 0x134316a4b91ee080ull, 0x272f28bc2c03fdc9ull, 0x294f4dacc5ea0794ull }}, {{ 0xbaa9e04b39b995ddull, 0xed327d472a95f7b8ull, 0x2cbc7db55a3907f2ull, 0xc09ee26f3b34c505ull, 0x87d79759b827e9daull, 0x9d1908bfbb244bc9ull }}, {{ 0x4aa2c2f0413fdaa6ull, 0x43f8e4c7a9dbad37ull, 0xbf5ce915863a4f7dull, 0x8634d858500fb233ull, 0x4e6be981318f228bull, 0x22fa577d4f6af5dfull }}, {{ 0xea5b9d628c7e8a7full, 0xa7b8efcca294c428ull, 0x79a11ad73e471ae4ull, 0x3e107373209cf605ull, 0x10371f0bef975973ull, 0x5dc76ae51a2d9ab9ull }}, {{ 0x279425d97cf168f9ull, 0x8d395dfe59cfa999ull, 0xc04b0c686ec70ceeull, 0x6ca4827f46219c36ull, 0xa22736775be97e80ull, 0xa9ca2cf305c80b3aull }}, {{ 0x8bc97a7ee16e19bfull, 0x843dabef821c9ffbull, 0x82ee7c1453c68151ull, 0x3e6d18f8bd501a23ull, 0x558820a9971ef104ull, 0xa1e5c17e39d0704aull }}, {{ 0x75dec8f4ce4d0175ull, 0x2a68b75b151e3fd3ull, 0x1d50d8cb45c10d2full, 0x7042f9b765210563ull, 0x5751469fe7356a2aull, 0x52f98eee422462e7ull }}, {{ 0x9ab3d9900f020e94ull, 0xa817298ed32e7e42ull, 0x252877f0b98a83d7ull, 0x629dc129f34a35dfull, 0x692cc23f081625a8ull, 0x3dbf954e956bdd09ull }}, {{ 0x0b067fa0961491cbull, 0x90e79f943fd0ee9aull, 0x7394af673f69266cull, 0xda298ba380e61ab7ull, 0x1bbf967650dd7893ull, 0x697bd511d636a25eull }}, {{ 0x6e40fc45dccdb1edull, 0xa90c3bca7e295204ull, 0x83ceda087a1b803dull, 0x859f746308fd0b2aull, 0x157be09f28a6b5c6ull, 0x1ed652b25e2257adull }}, {{ 0x4e89dabaa008f341ull, 0x9a7a55e8ed9d342cull, 0x26148454c5130268ull, 0x383a8bde59e26fa9ull, 0xd6d6c637968319c1ull, 0x345f3af7ad576cc2ull }}, {{ 0x11628b4a4059808dull, 0x08c75b19482409bbull, 0x7ccd2b4fb2be1816ull, 0x324976af82d85c9bull, 0x6463be2be11f018cull, 0x0bb84dacc56a3f9cull }}, {{ 0xadd970e6837f0584ull, 0x57c98efcd168614eull, 0xe003b11cfb6cf0dcull, 0xf6dea2db1c739e12ull, 0xebe56db6cb360f79ull, 0x753308bfb6267c1bull }}, {{ 0xca7e690122f6372bull, 0x6ddf95e02e13cd12ull, 0xc024eb21d241689bull, 0xa4b25c8f1c842cbcull, 0x36f64923f01c9ac3ull, 0x93fe577d1d80d917ull }}, {{ 0xe8f01a0b5d9e27b0ull, 0x4abbdac1ccc602bbull, 0x81712f52368e1612ull, 0x6ef79d971d29bf5full, 0x259edb67611e0ba4ull, 0xc7ef6ae327087ae8ull }}, {{ 0x19610471a82d8ce4ull, 0xeb568b91ffbc1b57ull, 0x0e6bd936218cdcb6ull, 0x55ac27e723a179bbull, 0x78349209cb2c746cull, 0xcf5a2cdf8654cd11ull }}, {{ 0xfdca2c7091c780edull, 0x316173b3fd591166ull, 0x90367c1d4f809f25ull, 0x58b98f07644ec14eull, 0xb20db461efbc8c3bull, 0x1985c0bb3f5002aeull }}, {{ 0xe9e5bc65b1cb0940ull, 0xedce8507e57aae05ull, 0xa220d9251b063773ull, 0x773f9649eb138d11ull, 0xf4890bd35d5d7a51ull, 0xff39875079201ad2ull }}, {{ 0x22f95bf8f1ee5c7dull, 0x4a11324ef6cacc3bull, 0x55487b730e3e2a87ull, 0xa87bdee32ec382b0ull, 0x8d5a7641a5a6c72eull, 0xf83f4924bb410c3dull }}, {{ 0x5dbd97b9734f9ce6ull, 0xe4abf715a3ebfa4full, 0x54d4d27e8e6da948ull, 0x94d6b4dfd3a31ae3ull, 0x85889e907883c7d2ull, 0xb278db6f508a7a67ull }}, {{ 0xa967ed3e811c2100ull, 0xeeb7a6d86737c719ull, 0x505038f190489cd8ull, 0xd06310be445f0ce1ull, 0x375631a4b525ce39ull, 0xf8b892592568c80bull }}, {{ 0x9e0f44710b1949fdull, 0x532c8474082dc700ull, 0x2322396fa2d62079ull, 0x23dea76eabb680cdull, 0x295df06f137a0e42ull, 0xb735b77b7617d070ull }}, {{ 0x2c98ac6a6efce3e2ull, 0x3fbd2c8851c9c606ull, 0x5f563e5c5c5d44bdull, 0x66b28a52b5210803ull, 0x9dab6456c2c48e95ull, 0x28192ad29cee2461ull }}, {{ 0xbdf6bc2855e0e6d2ull, 0x7d63bd5331e1bc3dull, 0xb95e6f9b9ba4af64ull, 0x02f9673b134a5021ull, 0x28b1eb639bad91d6ull, 0x90fbac3a214d6bd0ull }}, {{ 0x6ba359935ac90430ull, 0xe5e5653ff2d15a69ull, 0x3db05c14146ed9ecull, 0x1dbe084ec0e72151ull, 0x96f331e414c7b25cull, 0xa9d4ba454d063621ull }}, {{ 0x34617fc18bda29e0ull, 0xfaf5f47f7c2d881eull, 0x68e398c8cc548340ull, 0x296c531389074d2cull, 0xe57ff2e8cfccf799ull, 0xa24f46b5023e1d4full }}, {{ 0x0bcefd8f7685a2bcull, 0xcd9b8cfad9c7512eull, 0x18e3f7d7fb4d2089ull, 0x9e3b3ec35a4903bcull, 0xf6ff7d181e01abfbull, 0x5718c312166d251eull }}, {{ 0x7615e79aa1385b5cull, 0x081381cc81c92bccull, 0xf8e7ae6fd1034562ull, 0x2e5073a186da2558ull, 0xa5fae2f12c10b7d4ull, 0x66f79eb4e0437335ull }}, {{ 0x9cdb0c0a4c339199ull, 0x50c311fd11dbb5fcull, 0xb90cd05e2a20b5d4ull, 0xcf24844f44857579ull, 0x7bccdd6bb8a72e49ull, 0x05ac3310c2a28018ull }}, {{ 0x208e7866fa03aff7ull, 0x279eb3e2b2951bdeull, 0x3a8023ada5471a4bull, 0x176d2b18ad3696c1ull, 0xd600a6353687cee2ull, 0x38b9fea79a5900f4ull }}, {{ 0x4590b405c424dfa6ull, 0x8c3306daf9d316adull, 0x490164c874c706efull, 0xea43aef6c421e38cull, 0x5c067e14214e14d4ull, 0x3743f28c077a0990ull }}, {{ 0xb7a70839a970bc77ull, 0x79fe448dc23ee2c4ull, 0xda0defd48fc6455bull, 0x26a4d5a3a952e37aull, 0x9840ecc94d0cd051ull, 0x28a779784ac45fa3ull }}, {{ 0x2c8652409e675caaull, 0xc3eead899674dbafull, 0x848b5e4d9dbeb592ull, 0x827058649d3ce2ccull, 0xf2893fdd0280232bull, 0x968abeb2ebabbc63ull }}, {{ 0xbd3f368630099ea5ull, 0xa752c75fe09094d7ull, 0x2d71af08297317bbull, 0x186373ee2460dbfdull, 0x795c7ea219015fb3ull, 0xe16b72fd34b55be7ull }}, {{ 0x6478213de060326full, 0x893bc9bec5a5d06dull, 0xc670d6519e7eed54ull, 0xf3e2874d6bc897e3ull, 0xbd9cf254fa0dbcfeull, 0xce327de40f15970aull }}, {{ 0xecb14c6ac3c1f851ull, 0x5c55e173b87a2445ull, 0xc0685f3030f5454dull, 0x86d9490635d5eee5ull, 0x68217751c48961f5ull, 0x0df8eae896d7e66bull }}, {{ 0x3eecfc2ba593b32cull, 0x9b5ace8534c56abbull, 0x8413b7e1e994b505ull, 0x447cda3e1a5b54f9ull, 0x114ea931ad5dd397ull, 0x8bb92d15e46f0032ull }}, {{ 0x7541d9b477c4ffb3ull, 0x118c11340fb62b50ull, 0x28c52ed31fcf1238ull, 0xace0866d079151bfull, 0xad129bf0c5aa43e8ull, 0x753bc2daec5601f4ull }}, {{ 0x9492810cadb1fd02ull, 0xaf78ac089d1db124ull, 0x97b3d43f3e16b630ull, 0xc0c540424bad3177ull, 0xc2ba1767b8a6a716ull, 0x94559c8d3b5c138eull }}, {{ 0xcdb90a7ec8f3e215ull, 0xdab6b8562328eb6dull, 0xed064a786ce31de6ull, 0x87b48296f4c3eeabull, 0x9b44ea0d368286e3ull, 0xcb581d845198c393ull }}, {{ 0x093a68f3d986d4d3ull, 0x8b23335d5f99324aull, 0x423ee8b440df2b04ull, 0x4d0d19e58fa752b7ull, 0x10b12484211944e3ull, 0xf171272b2ff7a3c4ull }}, {{ 0x5c4819867f445042ull, 0x6f6001a5bbfbf6e4ull, 0x9675170a88b7ae2dull, 0x028302f79c893b28ull, 0xa6eb6d294afcb0e1ull, 0x6e6b87afdfac65a8ull }}, {{ 0x9ad0ff40f8ab2297ull, 0x59c0107957d7a4ebull, 0xe092e669572ccdc6ull, 0x191e1dac1d5c4f95ull, 0x8532439ceddee8caull, 0x50334cdebcbbf896ull }}, {{ 0x0c29f889b6af59e6ull, 0x8180a4bd6e6c7134ull, 0xc5bd001d67c009bfull, 0xfb2d28b9259b1bdaull, 0x33f6a4214ab517e4ull, 0x220100b35f57b5e1ull }}, {{ 0x79a3b56122d982fdull, 0x0f066f66503c6c08ull, 0xb96201260d80617bull, 0xcfc3973b780f168bull, 0x07a2694ceb12eef1ull, 0x540a0701b96d1accull }}, {{ 0xc06515cb5c7f1de2ull, 0x964059ff225c3854ull, 0x3dd40b7c8703ceceull, 0x1da3e852b096e175ull, 0x4c581d012ebd5572ull, 0x486446113e430bf8ull }}, {{ 0x83f2d9f19cf72ad3ull, 0xde8383f7579a334full, 0x6a4872dd46261411ull, 0x2867133ae5e4ce94ull, 0xfb71220bd3655675ull, 0xd3eabcac6e9e77b2ull }}, {{ 0x277c837021a7ac3aull, 0xb12327a96c06011bull, 0x26d47ca4bd7cc8b2ull, 0x9406c04cfaf011ccull, 0xd26b547641f56093ull, 0x472b5ebc5230acfdull }}, {{ 0x8add2261508cba41ull, 0xeb5f8c9e383c0b0full, 0x844cde6f66dfd6faull, 0xc8438301cd60b1f9ull, 0x38314c9e9395c5c3ull, 0xc7b1b35b35e6c1eaull }}, {{ 0x6ca357cd257f4685ull, 0x31bb7e2e32586e9bull, 0x2b00b05a04be65cdull, 0xd2a31e1205c6f3bfull, 0x31ecfe31c3d9b9a5ull, 0xccf101901b039326ull }}, {{ 0x3e616e0376f8c136ull, 0xf152edcdf7745212ull, 0xae06e3842f6ffa03ull, 0x3a5f2cb439c58577ull, 0xf341edf1a681407aull, 0x016a0fa10e23bf7dull }}, {{ 0x6fce4c22a5b78c1dull, 0x6d3d4a0baa8b34b6ull, 0xcc44e329da5fc427ull, 0x47b7bf0a41b736acull, 0x80934b70810c84c6ull, 0x0e249c4a8d657aebull }}, {{ 0x5e0ef95a792b7921ull, 0x4464e474a9700f20ull, 0xfab0dfa287bda98aull, 0xcd2d7666912822bfull, 0x05c0f2650a7d2fbeull, 0x8d6e1ae985f6cd33ull }}, {{ 0xac95bd88bbb2bb47ull, 0xabf0ec8e9e609743ull, 0xcae8bc594d689f66ull, 0x03c6a001ab915b7full, 0x398977f268e3dd74ull, 0x864d0d1f3ba403feull }}, {{ 0xbdd9675754fb50c3ull, 0xb7693d922fc5e8a4ull, 0xed175b7d06163a02ull, 0x25c24010b3ad92fdull, 0x3f5eaf7818e6a688ull, 0x3f028338546827eeull }}, {{ 0x6a7e096951d1279eull, 0x2a1c67b5ddbb166full, 0x42e992e23cde441bull, 0x799680a704c7bdebull, 0x79b2dab0f9028151ull, 0x761920334c118f4eull }}, {{ 0x28ec5e1d322b8c2dull, 0xa51c0d1aa94ee05aull, 0x9d1fbcd660aea90full, 0xbfe106862fcd6b30ull, 0xc0fc8ae9ba190d2eull, 0x9cfb4200f8af9910ull }}, {{ 0x993bad23f5b379c3ull, 0x7318830a9d14c385ull, 0x233d605fc6d29a9cull, 0x7eca413dde062fe6ull, 0x89dd6d2144fa83d3ull, 0x21d09409b6dbfaa7ull }}, {{ 0xfc54c3679902c19aull, 0x7ef51e6a22cfa337ull, 0x6065c3bdc43a0a1cull, 0xf3e68c6aac3ddefdull, 0x62a6434cb1c92642ull, 0x5225c8612497ca8bull }}, {{ 0xdb4fa20bfa1b8fffull, 0xf59330255c1c602full, 0xc3f9a569aa44651cull, 0x87017c2aba6ab5e5ull, 0xda7ea0fef1db7e9dull, 0x3579d3cb6dede971ull }}, {{ 0x911c5477c5139ff8ull, 0x97bfe175991bc1deull, 0xa7c07620a6abf321ull, 0x460ed9ab482b1af9ull, 0x88f249f57292f227ull, 0x16c245f24b4b1e72ull }}, {{ 0xab1b4cadb2c43fb0ull, 0xed7ece97fb1592b1ull, 0x8d849d4682b77f4full, 0xbc9480b0d1af0dc0ull, 0x5976e39679bd7588ull, 0xe396bb76f0ef3079ull }}, {{ 0xaf10fec8fbaa7cdfull, 0x46f411efced7baf0ull, 0x872e24c11b2af91full, 0x5dcd06e830d68985ull, 0x7ea4e3e0c1669757ull, 0xe3e352a56957e4bdull }}, {{ 0xd6a9f3d9d4a8e0b3ull, 0xc588b35e146d4d66ull, 0x47cd6f8b0fadbb38ull, 0xaa024511e8615f37ull, 0xf270e6c78e01e969ull, 0xe6e13a761d6eef66ull }}, {{ 0x62a386824e98c6ffull, 0xb75701accc450604ull, 0xce065b6e9cc95037ull, 0xa416b2b313cdb828ull, 0x786903cb8c131e20ull, 0x04cc489d26555a05ull }}, {{ 0xda63411711f7c5f7ull, 0x296610bffab23c2bull, 0x0c3f92521fdd222dull, 0x68e2fafec6093198ull, 0xb41a25f378bf2d46ull, 0x2ffad6237f558436ull }}, {{ 0x87e08ae6b3adbba3ull, 0x9dfca77fcaf659b6ull, 0x7a7bb7353ea355c3ull, 0x18ddcdf3bc5beff0ull, 0x09057b82b777c4c0ull, 0xdfcc5d62f9572a23ull }}, {{ 0x4ec56d0304c95461ull, 0x2bde8afded9f8121ull, 0xc8d52814726159a4ull, 0xf8aa0b855b975f64ull, 0x5a36d31b2aadaf80ull, 0xbdfba5ddbd67a55eull }}, {{ 0x13b6421e2fdd4bc9ull, 0xb6b16deb483b0b4dull, 0xd85390cc77cd8069ull, 0xb6a4733593e9b9efull, 0x86243f0faac8db09ull, 0x6bd47aa9660c75afull }}, {{ 0xc51e952ddea4f5daull, 0x22ee4b30d24e7102ull, 0x7343a7fcae070421ull, 0x226c8017c721435eull, 0x3d6a769cabd88e61ull, 0x364cca9dfc7c98dbull }}, {{ 0xb331d3cab2719a83ull, 0x5d4eefe837106a1bull, 0x80a48fdecc46294bull, 0x583d00edc74ca1b0ull, 0x6628a21eb6758fcbull, 0x1effea2bdcddf890ull }}, {{ 0xfff245eaf870091full, 0xa5155f1226a42514ull, 0x066d9eb3fabd9cf1ull, 0x72620949c8fe50e5ull, 0xfd96553320979df1ull, 0x35ff25b6a0abb5a3ull }}, {{ 0xff76bb2db4605b39ull, 0x72d5b6b5826972d1ull, 0x40483307cb682170ull, 0x77d45ce1d9ef28f2ull, 0xe7df53ff45ec2b6eull, 0x1bf7792246b51867ull }}, {{ 0xfaa34fc90bc39037ull, 0x7c592317181e7c33ull, 0x82d1fe4df2114e64ull, 0xae4ba0d283579976ull, 0x0eb947f8bb39b250ull, 0x17aabb56c312f40full }}, {{ 0xca611dda75a3a221ull, 0xdb7b5ee6f130da07ull, 0x1c33ef0b74ad0fecull, 0xcef44839216bfea1ull, 0x933ccfb75040f726ull, 0xecab51639ebd8896ull }}, {{ 0xe7cb2a889864554cull, 0x92d1b5056be8844dull, 0x1a0756728ec29f40ull, 0x158ad23b4e37f24bull, 0xc0601d292289a784ull, 0x3eb12de4336755e1ull }}, {{ 0x0defa955f3eb54f9ull, 0xbc31123637152b0bull, 0x04496079939a3885ull, 0xd76c36510e2f76efull, 0x83c1239b59608b28ull, 0x72ebcaea02095ad1ull }}, {{ 0x8b5c9d5b873151bcull, 0x59eab61e26d3ae6eull, 0x2addc4bfc4063539ull, 0x6a3a1f2a8ddaa556ull, 0x258b64117dc56f98ull, 0x7d35ed24145d8c2full }}, {{ 0x719e259347ed3154ull, 0x832b1d2d8444d051ull, 0xaca9af7da83e143dull, 0x264537a98a8a755dull, 0x7771e8aee9b65bf4ull, 0xe41b4368cba779d7ull }}, {{ 0x702d77c0cf43ed47ull, 0x1faf23c72ab0232eull, 0xbea0dae8926cca67ull, 0x7eb42c9f696895a8ull, 0xaa7316d5211f9789ull, 0xe910a217f48ac26aull }}, {{ 0x61c6ad8818a744c7ull, 0x3cd765c7aae15fd0ull, 0x72488d15b83fe807ull, 0xf309be3a1e15d897ull, 0xa87ee4534b3beb5eull, 0x1aa654ef8d6b982aull }}, {{ 0xd1c2c750f688afc3ull, 0x6069f9ccaccdbe23ull, 0x76d582d9327f1048ull, 0x7e616e452cda75eaull, 0x94f4eb40f05731b5ull, 0x0a7f515b8633f1aaull }}, {{ 0x319bc929a156dd9cull, 0xc423c1fec0096d66ull, 0xa4571c7bf8f6a2d3ull, 0xefce4eb3c0889b28ull, 0xd19130896367f116ull, 0x68f92d933e0770a9ull }}, {{ 0xf015dba04d64a816ull, 0xa96593f3805e45fdull, 0x6b671cd7b9a25c45ull, 0x5e0f130585560f96ull, 0x2fabe55de20f6ae5ull, 0x19bbc7c06c4a66a2ull }}, {{ 0x60da944305ee90dbull, 0x9df7c78303aebbebull, 0x3207206d40579ab8ull, 0xac96be37355c9be0ull, 0xdcb6f5aad49a2cf5ull, 0x0155cd843ae80255ull }}, {{ 0xc889ca9e3b51a88aull, 0x2badcb1e24d35731ull, 0xf4474444836c0b36ull, 0xbde36e28159e16c1ull, 0x9f2598ac4e05c198ull, 0x0d5a072a4d10175aull }}, {{ 0xd561ea2e5130955full, 0xb4c9ef2d704167f1ull, 0x8ac8aaad2238701dull, 0x6ae24d90d82ce393ull, 0x3777f6bb0c398ff7ull, 0x858447a702a0e98aull }}, {{ 0x55d325cf2be5d5b9ull, 0x0fe357c6628e0f72ull, 0x6bd6aac356346129ull, 0x2cd707a871c0e3c3ull, 0x2aafa34e7a3f9faaull, 0x372acc861a491f66ull }}, {{ 0x5a3f7a17b6fa593dull, 0x9ee16dbfd98c9a77ull, 0x3662aba15e0bcb9aull, 0xc0664c947188e5a2ull, 0xaadc6110c67c3ca5ull, 0x27abfd3d06db39fdull }}, {{ 0x867ac4ed25c77c66ull, 0x34ce497e7f7e08a9ull, 0x1fdab44dac75f40aull, 0x83fefdcc6f58f856ull, 0xac9bcaa7c0da5e79ull, 0x8cb7e462449043e8ull }}, {{ 0x40cbb14379cadbf7ull, 0x100edef0faec569full, 0x3e8b0b08bc9b8866ull, 0x27f5e9fc5979b35dull, 0xbe15ea8d8887b0bfull, 0x7f2eebd6ada2a716ull }}, {{ 0x87f4eca2c1ec97a9ull, 0xa094b569cd3b6238ull, 0x716e6e575e1353fcull, 0x8f9b23db7ec101a4ull, 0x6cdb2987554ce777ull, 0xf7d53662c85a86e3ull }}, {{ 0x4f913e5b933dec9eull, 0x45cf16220451d635ull, 0x6e504f69acc147deull, 0x9c0f6692f38a106cull, 0x408f9f4955010aabull, 0xae541fdbd38944e2ull }}, {{ 0x1bac6f93c06b3e2aull, 0xba16dd542b325e15ull, 0x4f231a20bf8cceaeull, 0x189a01bd8364a43cull, 0x859c38dd520a6ab4ull, 0xcf493e96435cb0d6ull }}, {{ 0x14bc5bc584306da5ull, 0x44e4a549aff7acd3ull, 0x175f05477b8012d3ull, 0xf604116721ee6a5bull, 0x381a38a534682b08ull, 0x18dc71dea19ee861ull }}, {{ 0xcf5b95b729e44876ull, 0xb0ee74e0dfacc03eull, 0xe9b634cad300bc40ull, 0x9c28ae075350278eull, 0x310636740c11ae59ull, 0xf89c72b2503513ccull }}, {{ 0x1993d927a2ead4a0ull, 0xe95090c8bcbf8274ull, 0x211e0fec3e075a86ull, 0x1996cc4941218b95ull, 0xea3e208878b0cf80ull, 0xb61c7af72212c5f9ull }}, {{ 0xffc67b8c5d2c4e3eull, 0x1d25a7d75f7b1888ull, 0x4b2c9f3a6c498945ull, 0xffe3fadc8b4f73d3ull, 0x266d4554b6e81b00ull, 0x1d1ccda754bbbbc3ull }}, {{ 0xfdc0d37ba3bb0e67ull, 0x23788e69bacef559ull, 0xefbe38483adf5cb3ull, 0xfee7cc9d711a8640ull, 0x8044b54f25110e09ull, 0x232008894f55559full }}, {{ 0xe98842d4654e9009ull, 0x62b590214c159583ull, 0x5d6e32d24cb99effull, 0xf50dfe266b093e89ull, 0x02af151772aa8c63ull, 0x5f40555d1955583bull }}, {{ 0x1f529c4bf511a057ull, 0xdb17a14cf8d7d727ull, 0xa64dfc36ff4035f9ull, 0x928bed802e5c715dull, 0x1ad6d2ea7aa97be7ull, 0xb88355a2fd55724eull }}, {{ 0x393a1af792b04366ull, 0x8eec4d01b86e6787ull, 0x7f0bda25f8821bc2ull, 0xb9774701cf9c6da8ull, 0x0c643d28ca9ed70bull, 0x3521585de556770dull }}, {{ 0x3c450dabbae2a1f9ull, 0x953b021134500b48ull, 0xf676857bb5151599ull, 0x3ea8c6121c1c4894ull, 0x7bea6397ea346675ull, 0x134d73aaf560a682ull }}, {{ 0x5ab288b54cda53bcull, 0xd44e14ac0b2070d2ull, 0xa0a136d512d2d7ffull, 0x7297bcb5191ad5d1ull, 0xd727e3ef260c0094ull, 0xc10684ad95c68118ull }}, {{ 0x8af9571500874553ull, 0x4b0cceb86f446837ull, 0x464c2452bc3c6ffeull, 0x79ed5f12fb0c5a30ull, 0x678ee7577c7805ccull, 0x8a412ec7d9c10af8ull }}, {{ 0x6dbd66d20548b540ull, 0xee80133458ac122bull, 0xbef96b3b5a5c5feeull, 0xc345b6bdce7b85e2ull, 0x0b95096adcb039fcull, 0x668bd3ce818a6db4ull }}, {{ 0x4966043434d71480ull, 0x5100c00b76b8b5b2ull, 0x75be3051879bbf55ull, 0xa0b9236a10d33adbull, 0x73d25e2c9ee243dfull, 0x017646110f684908ull }}, {{ 0xddfc2a0a1066ccfeull, 0x2a078072a33718f6ull, 0x996de32f4c157955ull, 0x473b6224a8404c92ull, 0x8637adbe34d6a6bcull, 0x0e9ebcaa9a12da54ull }}, {{ 0xabd9a464a40401ecull, 0xa44b047a6026f9a4ull, 0xfe4adfd8f8d6bd53ull, 0xc851d56e9282fdb9ull, 0x3e2cc96e1062835aull, 0x92335eaa04bc874dull }}, {{ 0xb6806bee68281335ull, 0x6aee2cc7c185c06eull, 0xeeecbe79b8636544ull, 0xd3325651b91de943ull, 0x6dbfde4ca3d9218bull, 0xb601b2a42f5d4904ull }}, {{ 0x210437501190c012ull, 0x2d4dbfcd8f398453ull, 0x553f70c133e1f4acull, 0x3ff75f313b2b1ca7ull, 0x497eaefe667b4f76ull, 0x1c10fa69d9a4da2cull }}, {{ 0x4a2a2920afa780afull, 0xc5097e07983f2b3full, 0x547a678c06d38eb9ull, 0x7fa9b7ec4faf1e89ull, 0xdef2d5f000d11a9eull, 0x18a9c822807085baull }}, {{ 0xe5a59b46dc8b06d7ull, 0xb25eec4bf277b078ull, 0x4cc80b7844439341ull, 0xfca12f3b1cd7315dull, 0xb57c5b60082b0a30ull, 0xf6a1d1590465394cull }}, {{ 0xf87810c49d6e446bull, 0xf7b53af778ace4b8ull, 0xffd072b2aaa3c090ull, 0xde4bd84f2067eda4ull, 0x16db91c051ae65e9ull, 0xa2522d7a2bf43cffull }}, {{ 0xb4b0a7ae264eac2aull, 0xad144daab6c0ef39ull, 0xfe247afaaa6585a9ull, 0xaef67317440f4871ull, 0xe493b18330cffb22ull, 0x5735c6c5b78a61f6ull }}, {{ 0x0ee68ccd7f12b9a1ull, 0xc2cb08ab23895841ull, 0xed6ccdcaa7f738a0ull, 0xd5a07ee8a898d473ull, 0xedc4ef1fe81fcf5aull, 0x6819c3b92b67d3a4ull }}, {{ 0x95018006f6bb4046ull, 0x9bee56af635d728aull, 0x464009ea8fa83647ull, 0x5844f51695f84c87ull, 0x49b1573f113e198cull, 0x1101a53bb20e4471ull }}, {{ 0xd20f0045a35082baull, 0x174f62d9e1a67969ull, 0xbe8063299c921eccull, 0x72b192e1dbb2fd48ull, 0xe0ed6876ac6cff7bull, 0xaa107454f48eac6cull }}, {{ 0x349602b861251b48ull, 0xe919dc82d080be22ull, 0x7103dfa01db533f8ull, 0x7aefbcd294fde4d7ull, 0xc94614a2bc41fad2ull, 0xa4a48b518d92bc40ull }}, {{ 0x0ddc1b33cb7310d0ull, 0x1b029d1c25076d56ull, 0x6a26bc41291407b9ull, 0xcd5d6039d1eaf06aull, 0xdcbcce5b5a93cc38ull, 0x6e6d712f87bb5a87ull }}, {{ 0x8a991005f27ea823ull, 0x0e1a2319724a455cull, 0x25835a8b9ac84d3bull, 0x05a5c242332d6428ull, 0x9f600f9189c5fa38ull, 0x50466bdb4d51894eull }}, {{ 0x69faa03b78f2915aull, 0x8d055efe76e6b59dull, 0x772189740bd3044eull, 0x38799695ffc5e991ull, 0x39c09baf61bbc630ull, 0x22c03691052f5d12ull }}, {{ 0x23ca4252b979ad87ull, 0x8235b5f0a5031826ull, 0xa74f5e88763e2b11ull, 0x34bfe1dbfdbb1faeull, 0x418614d9d155bde2ull, 0x5b8221aa33d9a2b6ull }}, {{ 0x65e6973b3ec0c746ull, 0x16191b66721ef17dull, 0x8919b1549e6daeafull, 0x0f7ed297e94f3cd2ull, 0x8f3cd0822d596ad6ull, 0x931550a606805b1eull }}, {{ 0xfb01e8507387c8bbull, 0xdcfb120075356ee5ull, 0x5b00ed4e3048d2d6ull, 0x9af439ef1d186039ull, 0x98602515c57e2c5cull, 0xbed5267c41038f31ull }}, {{ 0xce131324834dd753ull, 0xa1ceb404941654fbull, 0x8e09450de2d83c64ull, 0x0d8a435722f3c23dull, 0xf3c172d9b6edbb9eull, 0x745380da8a2397efull }}, {{ 0x0cbebf6d210a6939ull, 0x5213082dc8df51d6ull, 0x8c5cb28adc725beeull, 0x8766a1675d859667ull, 0x858e7c812549542cull, 0x8b4308896563ef5full }}, {{ 0x7f737a434a681c3dull, 0x34be51c9d8b9325cull, 0x7b9ef96c9c77974full, 0x4a024e09a737e00bull, 0x3790dd0b74dd49bdull, 0x709e555df5e759bbull }}, {{ 0xfa82c6a0e8111a60ull, 0x0f6f31e2773bf79cull, 0xd435be3e1cabe918ull, 0xe4170c60882ec072ull, 0x2ba8a27290a4e164ull, 0x662f55ab9b098150ull }}, {{ 0xc91bc24910ab07c4ull, 0x9a57f2d8a857ac21ull, 0x4a196e6d1eb71af0ull, 0xe8e67bc551d3847cull, 0xb4965879a670cdf0ull, 0xfdd958b40e5f0d21ull }}, {{ 0xdb1596daa6ae4da7ull, 0x076f7c76936cb951ull, 0xe4fe504333270d66ull, 0x1900d5b532432cdaull, 0x0ddf74c080680b69ull, 0xea7d77088fb68351ull }}, {{ 0x8ed7e48a82cf0886ull, 0x4a5adca1c23f3d32ull, 0xf1ef229fff8685fcull, 0xfa085913f69fc08cull, 0x8aba8f850410721aull, 0x28e6a6559d21212aull }}, {{ 0x946eed691c165538ull, 0xe78c9e51967863f9ull, 0x73575a3ffb413bdaull, 0xc4537ac7a23d8581ull, 0x6b499b3228a4750dull, 0x99027f58234b4ba9ull }}, {{ 0xcc55461b18df542cull, 0x0b7e2f2fe0b3e7bfull, 0x8169867fd08c568dull, 0xab42cbcc5667370eull, 0x30e00ff5966c9289ull, 0xfa18f97160f0f49eull }}, {{ 0xfb54bd0ef8b949bcull, 0x72edd7dec7070d7dull, 0x0e1f40fe257b6182ull, 0xb09bf5fb60082691ull, 0xe8c09f97e03db960ull, 0xc4f9be6dc9698e2dull }}, {{ 0xd14f6295b73ce15bull, 0x7d4a6eb3c64686ebull, 0x8d3889ed76d1cf18ull, 0xe6179bd1c05181aaull, 0x17863beec2693dc6ull, 0xb1c17049de1f8dcbull }}, {{ 0x2d19d9d92860cd8dull, 0xe4e85305bec14536ull, 0x84356346a43216f4ull, 0xfcec1631832f10a9ull, 0xeb3e5753981c69c4ull, 0xf18e62e2ad3b89eeull }}, {{ 0xc302827b93c80784ull, 0xf1133e39738cb41dull, 0x2a15e0c269f4e590ull, 0xe138ddef1fd6a69full, 0x306f6943f11c21b1ull, 0x6f8fdcdac4536355ull }}, {{ 0x9e1918d3c5d04b26ull, 0x6ac06e3e837f0929ull, 0xa4dac7982390f7a9ull, 0xcc38ab573e628237ull, 0xe45a1ca76b1950f2ull, 0x5b9ea08bab41e153ull }}, {{ 0x2cfaf845ba22ef7dull, 0x2b844e7122f65ba0ull, 0x708bcbf163a9ac9eull, 0xfa36b1686fd9162cull, 0xeb851e8a2efd297bull, 0x94324574b092cd46ull }}, {{ 0xc1cdb2b9455d5adfull, 0xb32b106b5d9f9441ull, 0x6575f76de4a0be2dull, 0xc622ee145e7addbcull, 0x33333165d5e39ed7ull, 0xc9f6b68ee5bc04c5ull }}, {{ 0x9208fb3cb5a58cb5ull, 0xffaea431a83bca91ull, 0xf69baa4aee476dc8ull, 0xbd5d4ccbb0cca95bull, 0xffffedfa5ae4346dull, 0xe3a32194f9582fb3ull }}, {{ 0xb459d05f18777f10ull, 0xfcd269f09255e9afull, 0xa214a6ed4eca49d9ull, 0x65a4fff4e7fe9d97ull, 0xffff4bc78cea0c49ull, 0xe45f4fd1bd71dd07ull }}, {{ 0x0b8223b6f4aaf6a3ull, 0xe0382365b75b20ddull, 0x54ce854513e6e283ull, 0xf871ff910ff227ecull, 0xfff8f5cb81247addull, 0xebb91e316672a24full }}, {{ 0x731565258eada25bull, 0xc23161f9298f48a2ull, 0x501134b2c704d926ull, 0xb473fbaa9f758f3bull, 0xffb999f30b6cccabull, 0x353b2dee007a571full }}, {{ 0x7ed5f37792c8578full, 0x95edd3bb9f98d658ull, 0x20ac0efbc6307b83ull, 0x0c87d4aa3a979851ull, 0xfd40037e723ffeb5ull, 0x144fcb4c04c7673full }}, {{ 0xf45b82abbbd36b92ull, 0xdb4a45543bf85f74ull, 0x46b895d5bde4d323ull, 0x7d4e4ea649ebf32bull, 0xe48022f0767ff312ull, 0xcb1df0f82fca087full }}, {{ 0x8b931ab5564233b2ull, 0x90e6b54a57b3ba91ull, 0xc335da596af03f66ull, 0xe50f127ee3377fb0ull, 0xed015d64a0ff7eb8ull, 0xef2b69b1dde454feull }}, {{ 0x73bf0b155e9604f6ull, 0xa90314e76d0549afull, 0xa01a877e2d627a01ull, 0xf296b8f4e02afce7ull, 0x420da5ee49faf338ull, 0x57b220f2aaeb51f5ull }}, {{ 0x85766ed5b1dc319dull, 0x9a1ed10a4234e0daull, 0x41094aedc5d8c410ull, 0x79e33990c1ade10cull, 0x94887b4ee3cd8039ull, 0x6cf5497aad313394ull }}, {{ 0x36a05458f299f021ull, 0x05342a669610c889ull, 0x8a5ced49ba77a8a6ull, 0xc2e03fa790caca7aull, 0xcd54d114e607023eull, 0x4194decac3ec03cdull }}, {{ 0x22434b797a036147ull, 0x3409a801dca7d55cull, 0x67a144e148ac967cull, 0x9cc27c8ba7ebe8c9ull, 0x05502ad0fc461673ull, 0x8fd0b3eba738260aull }}, {{ 0x56a0f2bec421ccc5ull, 0x086090129e8e5599ull, 0x0c4cb0ccd6bde0daull, 0x1f98dd748f3717deull, 0x3521ac29dabce084ull, 0x9e27073488317c64ull }}, {{ 0x62497b73a951ffb0ull, 0x53c5a0ba318f57fdull, 0x7afee800636ac884ull, 0x3bf8a68d9826eeacull, 0x1350b9a28b60c529ull, 0x2d86480d51eedbeaull }}, {{ 0xd6ded2849d33fcdeull, 0x45b84745ef996fe5ull, 0xcdf51003e22bd52bull, 0x57b68187f18552bcull, 0xc127405971c7b39cull, 0xc73ed08533549724ull }}, {{ 0x64b4392e2407e0b0ull, 0xb932c8bb5bfe5efaull, 0x0b92a026d5b653b0ull, 0x6d210f4f6f353b60ull, 0x8b88837e71cd041bull, 0xc8742534014de76full }}, {{ 0xef0a3bcd684ec6e0ull, 0x3bfbd75197efb5c7ull, 0x73ba4184591f44e7ull, 0x434a991a581451c0ull, 0x735522f072022912ull, 0xd48974080d0b0a5bull }}, {{ 0x566656061313c4c3ull, 0x57d6692fef5d19cfull, 0x85468f2b7b38b108ull, 0xa0e9fb0770cb3184ull, 0x81535d6474159ab6ull, 0x4d5e8850826e6792ull }}, {{ 0x5fff5c3cbec5af9eull, 0x6e601bdf59a30219ull, 0x34c197b2d036ea53ull, 0x4923ce4a67efef2dull, 0x0d41a5ec88d80b22ull, 0x05b1532518500bb9ull }}, {{ 0xbff99a5f73b8dc30ull, 0x4fc116b9805e14fdull, 0x0f8fecfc22252742ull, 0xdb660ee80f5f57c4ull, 0x84907b3d58706f56ull, 0x38ed3f72f320753aull }}, {{ 0x7fc007ba853899dcull, 0x1d8ae33f03acd1e9ull, 0x9b9f41d955738897ull, 0x91fc951099b96da8ull, 0x2da4d06574645964ull, 0x39447a7d7f449449ull }}, {{ 0xfd804d493436029aull, 0x276ce07624c0331eull, 0x1438927d568355e7ull, 0xb3ddd2a6013e4896ull, 0xc87023f68beb7dedull, 0x3cacc8e6f8adcadbull }}, {{ 0xe70304dc0a1c1a06ull, 0x8a40c49d6f81ff35ull, 0xca35b8e561215b07ull, 0x06aa3a7c0c6ed5dcull, 0xd46167a17732eb49ull, 0x5ebfd905b6c9ec95ull }}, {{ 0x061e30986519043dull, 0x6687ae265b13f81bull, 0xe61938f5cb4d8e4bull, 0x42a648d87c545a9full, 0x4bce0c4ea7fd30daull, 0xb37e7a3923e33ddaull }}, {{ 0x3d2de5f3f2fa2a65ull, 0x014ccd7f8ec7b10eull, 0xfcfc3999f1078ef2ull, 0x9a7ed874db4b8a3eull, 0xf60c7b128fe3e886ull, 0x02f0c63b66e06a86ull }}, {{ 0x63cafb877dc5a7f0ull, 0x0d0006fb93ccea8eull, 0xe1da40036a4b9574ull, 0x08f4749090f36675ull, 0x9c7cceb99ee71542ull, 0x1d67be5204c42945ull }}, {{ 0xe5edd34ae9b88f5dull, 0x820045d3c601298full, 0xd286802226f3d688ull, 0x598c8da5a982009aull, 0x1ce013403506d494ull, 0x260d6f342fa99cb8ull }}, {{ 0xfb4a40ed2135999eull, 0x1402ba45bc0b9f9eull, 0x3941015585866155ull, 0x7f7d88789f14060cull, 0x20c0c08212444dcbull, 0x7c865809dca01f31ull }}, {{ 0xd0e689434c18002cull, 0xc81b46b958743c35ull, 0x3c8a0d57373fcd52ull, 0xfae754b636c83c7aull, 0x47878514b6ab09f2ull, 0xdd3f70629e4137ebull }}, {{ 0x29015ca0f8f001baull, 0xd110c33d748a5a1aull, 0x5d648568287e053bull, 0xcd094f1e23d25cc6ull, 0xcb4b32cf22ae637dull, 0xa47a63da2e8c2f30ull }}, {{ 0x9a0d9e49b9601140ull, 0x2aa7a0668d678505ull, 0xa5ed361194ec3456ull, 0x025d172d66379fbfull, 0xf0effc175acfe2eaull, 0x6cc7e685d179d7e7ull }}, {{ 0x04882ee13dc0ac7cull, 0xaa8c4401860b3238ull, 0x7b441cafd13a0b5dull, 0x17a2e7c5fe2c3d7cull, 0x695fd8e98c1edd24ull, 0x3fcf013a2ec26f0full }}, {{ 0x2d51d4cc6986bcdbull, 0xa97aa80f3c6ff630ull, 0xd0a91ede2c4471a8ull, 0xec5d0dbbedba66dcull, 0x1dbe791f7934a368ull, 0x7e160c45d398569aull }}, {{ 0xc5324ffc1f436093ull, 0x9eca90985c5f9de1ull, 0x269b34adbaac7096ull, 0x3ba28957494804a0ull, 0x2970bb3abc0e6219ull, 0xecdc7aba43f36205ull }}, {{ 0xb3f71fd938a1c5beull, 0x33e9a5f39bbc2ad1ull, 0x82100ec94abc65e2ull, 0x54595d68dcd02e41ull, 0x9e67504b588fd4fcull, 0x409ccb46a781d433ull }}, {{ 0x07a73e7c3651b967ull, 0x07207b841559ac31ull, 0x14a093dceb5bfad6ull, 0x4b7da618a021ce8full, 0x300922f1759e51dbull, 0x861ff0c28b124a04ull }}, {{ 0x4c8870da1f313e09ull, 0x4744d328d580b9eaull, 0xce45c6a13197cc5cull, 0xf2e87cf641521196ull, 0xe05b5d6e982f3290ull, 0x3d3f67996eb6e429ull }}, {{ 0xfd54688537ec6c5cull, 0xc8b03f9857074326ull, 0x0eb9c24befedfb9aull, 0x7d14e19e8d34afe4ull, 0xc391a651f1d7f9a9ull, 0x647a0bfe5324e9a2ull }}, {{ 0xe54c15342f3c3b96ull, 0xd6e27bf366489f85ull, 0x934196f75f4bd40bull, 0xe2d0d031840edee8ull, 0xa3b07f33726fc09eull, 0xecc477ef3f71205bull }}, {{ 0xf4f8d409d85a53dfull, 0x64d8d781fed63b3aull, 0xc08fe5a9b8f64876ull, 0xdc2821ef2894b515ull, 0x64e4f802785d8634ull, 0x3facaf587a6b4394ull }}, {{ 0x91b84862738746baull, 0xf0786b13f45e504dull, 0x859ef8a1399ed49full, 0x9991535795cf12d9ull, 0xf0f1b018b3a73e10ull, 0x7cbed974c830a3cbull }}, {{ 0xb132d3d88348c344ull, 0x64b42ec78baf2307ull, 0x3835b64c40344e3full, 0xffad416bda16bc7full, 0x6970e0f704886ca5ull, 0xdf747e8fd1e665f7ull }}, {{ 0xebfc467520d7a0acull, 0xef09d3cb74d75e4cull, 0x32191efa820b0e79ull, 0xfcc48e3684e35cf8ull, 0x1e68c9a62d543e7bull, 0xba8cf19e32fffbaaull }}, {{ 0x37dac093486c46b6ull, 0x566245f29069af01ull, 0xf4fb35c9146e90c3ull, 0xdfad8e2130e1a1b1ull, 0x3017e07dc54a70d7ull, 0x4981702dfdffd4a5ull }}, {{ 0x2e8b85c0d43ac321ull, 0x5fd6bb79a420d60cull, 0x91d019dacc51a7a1ull, 0xbcc78d4be8d050f3ull, 0xe0eec4e9b4e8686eull, 0xdf0e61cbebfe4e73ull }}, {{ 0xd17339884a4b9f48ull, 0xbe6352c069485c79ull, 0xb221028bfb308c4dull, 0x5fcb84f718232983ull, 0xc953b12111141453ull, 0xb68fd1f737ef1086ull }}, {{ 0x2e803f52e6f438cdull, 0x6fe13b841cd39cc2ull, 0xf54a1977cfe57b09ull, 0xbdf331a6f15f9f24ull, 0xdd44eb4aaac8cb41ull, 0x219e33a82f56a543ull }}, {{ 0xd102793d058a3805ull, 0x5ecc532920441f95ull, 0x94e4feae1ef6ce5eull, 0x6b7ff0856dbc3771ull, 0xa4b130eaabd7f091ull, 0x502e0491d96274a6ull }}, {{ 0x2a18bc623766302full, 0xb3fb3f9b42a93bdaull, 0xd0f1f2cd35a40fafull, 0x32ff6536495a2a6full, 0x6eebe92ab66f65aeull, 0x21cc2db27dd88e82ull }}, {{ 0xa4f75bd629fde1d7ull, 0x07d07c109a9c5685ull, 0x29737c0418689cddull, 0xfdf9f41edd85a85eull, 0x55371bab2059f8cdull, 0x51f9c8f8ea759118ull }}, {{ 0x71a9965da3ead263ull, 0x4e24d8a60a1b6138ull, 0x9e82d828f41620a2ull, 0xebc38934a73893adull, 0x542714af4383b80bull, 0x33c1d9b92897aaf3ull }}, {{ 0x709fdfa8672c37e1ull, 0x0d70767c6511cc34ull, 0x311c719988dd4657ull, 0x35a35c0e8835c4c8ull, 0x4986ced8a3253077ull, 0x0592813b95ecad81ull }}, {{ 0x663ebc9407ba2ec9ull, 0x8664a0dbf2b1fa0cull, 0xeb1c6fff58a4bf66ull, 0x186198915219afd1ull, 0xdf4414765f73e4a8ull, 0x37b90c53db3ec70cull }}, {{ 0xfe735dc84d45d3d6ull, 0x3fee48977af3c47bull, 0x2f1c5ff9766f7a01ull, 0xf3cff5ad3500de33ull, 0xb8a8cc9fba86ee90ull, 0x2d3a7b469073c680ull }}, {{ 0xf081a9d304ba4661ull, 0x7f4ed5eacd85acd7ull, 0xd71bbfbea05ac40cull, 0x861f98c41208adffull, 0x3697fe3d494551a9ull, 0xc448d0c1a485c107ull }}, {{ 0x6510a23e2f46bfc9ull, 0xf9145b2c0738c06full, 0x67157d72438ba87cull, 0x3d3bf7a8b456cbfeull, 0x21efee64dcb5309full, 0xaad827906d398a48ull }}, {{ 0xf2a6566dd8c37ddaull, 0xbacb8fb848378459ull, 0x06d6e676a37494e1ull, 0x6457ac970b63f7f0ull, 0x535f4ff09f13e638ull, 0xac718ba4443f66d1ull }}, {{ 0x7a7f604a77a2ea83ull, 0x4bf39d32d22b2b83ull, 0x446500a2628dd0d1ull, 0xeb6cbde671e7af60ull, 0x41b91f6636c6fe33ull, 0xbc6f746aaa7a042dull }}, {{ 0xc8f9c2e8ac5d2922ull, 0xf78423fc35afb322ull, 0xabf20657d98a282cull, 0x323f6b00730cd9c2ull, 0x913b39fe23c5ee07ull, 0x5c5a8c2aa8c429c4ull }}, {{ 0xd9c19d16bba39b59ull, 0xab2967da18dcff5bull, 0xb7743f6e7f6591c1ull, 0xf67a2e047e80819aull, 0xac5043ed65bb4c47ull, 0x9b8979aa97a9a1adull }}, {{ 0x819022e354641178ull, 0xaf9e0e84f8a1f996ull, 0x2a8a7a50f9f7b190ull, 0xa0c5cc2cf105100bull, 0xbb22a745f950facfull, 0x135ec0a9eca050c8ull }}, {{ 0x0fa15ce14be8aeadull, 0xdc2c9131b653bfe1ull, 0xa968c729c3acefa6ull, 0x47b9f9c16a32a06full, 0x4f5a88bbbd29cc1cull, 0xc1b386a33e4327d7ull }}, {{ 0x9c4da0ccf716d2beull, 0x99bdabf11f457ecaull, 0x9e17c7a1a4c15c84ull, 0xcd43c18e25fa445cull, 0x1989575563a1f91aull, 0x910342606e9f8e69ull }}, {{ 0x1b084801a6e43b71ull, 0x0168b76b38b6f3eaull, 0x2cedcc506f8d9d2eull, 0x04a58f8d7bc6ab9eull, 0xff5d6955e453bb0cull, 0xaa2097c4523b901aull }}, {{ 0x0e52d01084ea5267ull, 0x0e172a3037258725ull, 0xc149fb245b8823ccull, 0x2e779b86d5c2b42dull, 0xf9a61d5aeb454e78ull, 0xa545edab3653a10dull }}, {{ 0x8f3c20a531273806ull, 0x8ce7a5e227774772ull, 0x8ce3cf6b935165f8ull, 0xd0ac1344599b09c9ull, 0xc07d258d30b510b1ull, 0x74bb48b01f444a8bull }}, {{ 0x98594673eb883039ull, 0x810c7ad58aa8ca79ull, 0x80e61a33c12dfbb5ull, 0x26b8c0ab800e61dfull, 0x84e37783e712a6f2ull, 0x8f50d6e138aae975ull }}, {{ 0xf37cc0873351e238ull, 0x0a7ccc576a97e8bfull, 0x08fd06058bcbd517ull, 0x833786b3008fd2bbull, 0x30e2ab2706ba8575ull, 0x992864cc36ad1e97ull }}, {{ 0x82df85480132d633ull, 0x68dffb6a29ef177full, 0x59e23c3775f652e6ull, 0x202b42fe059e3b4eull, 0xe8daaf8643493697ull, 0xfb93effa22c331e7ull }}, {{ 0x1cbb34d00bfc5e03ull, 0x18bfd225a356eafbull, 0x82d65a2a9b9f3d00ull, 0x41b09dec382e510full, 0x188adb3ea0dc21e7ull, 0xd3c75fc55b9ff30full }}, {{ 0x1f50102077dbac1aull, 0xf77e357861652dcfull, 0x1c5f85aa14386200ull, 0x90e62b3a31cf2a9bull, 0xf56c907248995308ull, 0x45c9bdb5943f7e96ull }}, {{ 0x3920a144ae94b904ull, 0xaaee16b3cdf3ca17ull, 0x1bbb38a4ca33d409ull, 0xa8fdb045f217aa0full, 0x963da476d5fd3e55ull, 0xb9e16917ca7af1e5ull }}, {{ 0x3b464caed1cf3a29ull, 0xad4ce3060b85e4e8ull, 0x1550366fe6064860ull, 0x99e8e2bb74eca497ull, 0xde686ca45be46f58ull, 0x42ce1aede8cd72f7ull }}, {{ 0x50befed432184598ull, 0xc500de3c733af112ull, 0xd522205efc3ed3c6ull, 0x0318db52913e6de6ull, 0xb0143e6b96ec5976ull, 0x9c0d0d4b18067daeull }}, {{ 0x2775f449f4f2b7edull, 0xb208ae5c804d6ab7ull, 0x535543b5da7445c3ull, 0x1ef89139ac704b04ull, 0xe0ca7033e53b7e9cull, 0x188284eef040e8d2ull }}, {{ 0x8a9b8ae3917b2f40ull, 0xf456cf9d03062b27ull, 0x4154a51a888ab9a4ull, 0x35b5ac40bc62ee2bull, 0xc7e86206f452f219ull, 0xf51931556289183cull }}, {{ 0x6a136ce3aecfd87eull, 0x8b641c221e3daf8bull, 0x8d4e7309556b4071ull, 0x1918ba875bdd4db0ull, 0xcf13d4458b3d74fcull, 0x92fbed55d95af25full }}, {{ 0x24c240e4d41e74ecull, 0x71e919552e68db72ull, 0x85107e5d5630846full, 0xfaf7494996a508e5ull, 0x16c64ab7706691d8ull, 0xbdd7455a7d8d77beull }}, {{ 0x6f9688f049309135ull, 0x731afd53d0189275ull, 0x32a4efa55de52c5aull, 0xcda8dcdfe27258f7ull, 0xe3beeb2a6401b279ull, 0x6a68b588e786ad6cull }}, {{ 0x5be15962dbe5ac17ull, 0x7f0de54620f5b896ull, 0xfa715c75aaf3bb88ull, 0x0898a0bed87779a7ull, 0xe5752fa7e810f8c2ull, 0x281717590b42c640ull }}, {{ 0x96cd7ddc96f8b8e5ull, 0xf68af4bd499935dfull, 0xc86d9c98ad855354ull, 0x55f6477474aac08full, 0xf693dc8f10a9b794ull, 0x90e6e97a709bbe88ull }}, {{ 0xe406ea9de5b738edull, 0xa16d8f64dffc1abbull, 0xd4481df6c7354151ull, 0x5b9eca8c8eab859dull, 0xa1c69d96a6a12bcbull, 0xa9051ec866157159ull }}, {{ 0xe8452a2af9283944ull, 0x4e4799f0bfd90b56ull, 0x4ad12ba3c8148d30ull, 0x9433e97d92b3382aull, 0x51c227e2824bb5f1ull, 0x9a3333d3fcd66d80ull }}, {{ 0x12b3a5adbb923ca6ull, 0x0ecc03677e7a7165ull, 0xec2bb465d0cd83e3ull, 0xca071ee7bb0031a6ull, 0x31958ed916f51b6full, 0x06000647e0604703ull }}, {{ 0xbb0478c953b65e7full, 0x93f8220af0c86df2ull, 0x39b50bfa280726deull, 0xe447350d4e01f085ull, 0xefd7947ae593125dull, 0x3c003ecec3c2c61full }}, {{ 0x4e2cb7dd451fb0f9ull, 0xc7b1546d67d44b7bull, 0x411277c5904784b1ull, 0xeac812850c136534ull, 0x5e6bccccf7beb7aaull, 0x58027413a59bbd3full }}, {{ 0x0dbf2ea4b33ce9b5ull, 0xcced4c460e4af2d1ull, 0x8ab8adb7a2cb2ef1ull, 0x2bd0b93278c1f40aull, 0xb0360001ad732cadull, 0x701888c478156479ull }}, {{ 0x8977d26f00612116ull, 0x0144fabc8eed7c2aull, 0x6b36c92c5befd572ull, 0xb6273bf8b7938869ull, 0xe21c0010c67fbec3ull, 0x60f557acb0d5ecc0ull }}, {{ 0x5eae385603cb4adaull, 0x0cb1cb5d9546d9a9ull, 0x3023dbbb975e5674ull, 0x1d8857b72bc3541eull, 0xd51800a7c0fd73a5ull, 0xc9956cbee85b3f88ull }}, {{ 0xb2ce335c25f0ec84ull, 0x7ef1f1a7d4c4809dull, 0xe1669553e9af6088ull, 0x27536d27b5a1492dull, 0x52f0068d89e68473ull, 0xdfd63f7513907b58ull }}, {{ 0xfc0e01997b693d28ull, 0xf573708e4fad0628ull, 0xce01d54720d9c554ull, 0x8942438d184cdbcaull, 0x3d60418763012c7full, 0xbe5e7a92c3a4d173ull }}, {{ 0xd88c0ffed21c6394ull, 0x9682658f1cc23d99ull, 0x0c1254c74881b551ull, 0x5c96a382f30095ecull, 0x65c28f49de0bbcfbull, 0x6fb0c9bba4702e80ull }}, {{ 0x75789ff4351be3cbull, 0xe117f7971f966802ull, 0x78b74fc8d511152full, 0x9de2631d7e05db38ull, 0xf99998e2ac7561d1ull, 0x5ce7e1546c61d103ull }}, {{ 0x96b63f8a1316e5f2ull, 0xcaefabe73be01018ull, 0xb7291dd852aad3deull, 0x2ad7df26ec3a9034ull, 0xbffff8dabc95d230ull, 0xa10ecd4c3bd22a27ull }}, {{ 0xe31e7b64bee4fb71ull, 0xed5cb70856c0a0f5ull, 0x279b2a733aac46b3ull, 0xac6eb7853a49a20full, 0x7fffb88b5dda35e1ull, 0x4a9404fa5635a58dull }}, {{ 0xdf30d1ef74f1d26eull, 0x459f26536386499aull, 0x8c0fa8804abac307ull, 0xbc532b3446e05497ull, 0xfffd3571aa861ad0ull, 0xe9c831c75e187786ull }}, {{ 0xb7e8335a91723847ull, 0xb8377f41e33ee00cull, 0x789c9502eb4b9e48ull, 0x5b3fb00ac4c34debull, 0xffe41670a93d0c27ull, 0x21d1f1c9acf4ab45ull }}, {{ 0x2f120189ae7632c9ull, 0x322af892e074c07full, 0xb61dd21d30f42ed7ull, 0x907ce06bafa10b32ull, 0xfee8e0669c627989ull, 0x523371e0c18eb0bbull }}, {{ 0xd6b40f60d09dfbd6ull, 0xf5adb5bcc48f84f7ull, 0x1d2a3523e989d467ull, 0xa4e0c434dc4a6ffbull, 0xf518c4021bd8bf5full, 0x360272c78f92e757ull }}, {{ 0x630899c8262bd659ull, 0x98c9195fad9b31aeull, 0x23a613671f624c0full, 0x70c7aa109ae85fcfull, 0x92f7a815167779bcull, 0x1c187bcb9bbd096full }}, {{ 0xde5601d17db65f78ull, 0xf7dafdbcc80ff0cfull, 0x647cc20739d6f89bull, 0x67cca4a60d13be17ull, 0xbdac90d2e0aac15cull, 0x18f4d5f415625e5bull }}, {{ 0xaf5c122ee91fbab5ull, 0xae8de95fd09f681eull, 0xecdf94484265b617ull, 0x0dfe6e7c82c56ce9ull, 0x68bda83cc6ab8d9cull, 0xf9905b88d5d7af95ull }}, {{ 0xd998b5d51b3d4b0dull, 0xd18b1dbe263a1132ull, 0x40bbcad297f91cecull, 0x8bf050dd1bb64123ull, 0x1768925fc2b38818ull, 0xbfa393585a6cdbd6ull }}, {{ 0x7ff71a531064ee83ull, 0x2f6f296d7e44abfcull, 0x8755ec39efbb2140ull, 0x776328a3151e8b60ull, 0xea15b7bd9b0350f5ull, 0x7c63c1738840965cull }}, {{ 0xffa7073ea3f15122ull, 0xda579e46eeaeb7dcull, 0x495b3a435d4f4c81ull, 0xa9df965ed33171c5ull, 0x24d92d680e212996ull, 0xdbe58e835285dfa1ull }}, {{ 0xfc864872676d2b56ull, 0x876c2ec552d32ea1ull, 0xdd9046a1a518fd12ull, 0xa2bbdfb43fee71b4ull, 0x707bc6108d4b9fe2ull, 0x96f79121393abc4bull }}, {{ 0xdd3ed4780a43b158ull, 0x4a39d3b53c3fd253ull, 0xa7a2c25072f9e2b9ull, 0x5b56bd0a7f507110ull, 0x64d5bca584f43edaull, 0xe5abab4c3c4b5af2ull }}, {{ 0xa4744cb066a4ed72ull, 0xe64245145a7e3746ull, 0x8c5b97247dc2db3cull, 0x91636268f9246aa6ull, 0xf0595e77318a7487ull, 0xf8b4b0fa5af18d77ull }}, {{ 0x6c8afee402714675ull, 0xfe96b2cb88ee28c2ull, 0x7b93e76ce99c9060ull, 0xade1d819bb6c2a81ull, 0x637db0a7ef688d4bull, 0xb70ee9c78d6f86afull }}, {{ 0x3d6df4e8186cc096ull, 0xf1e2fbf3594d9798ull, 0xd3c70a41201da3c9ull, 0xcad271015239a90eull, 0xe2e8e68f5a1584f4ull, 0x269521cb865b42d9ull }}, {{ 0x664b9110f43f85daull, 0x72ddd7817d07ebf2ull, 0x45c6668b412865e3ull, 0xec386a0d36409a94ull, 0xdd19019984d7318full, 0x81d351f33f909c82ull }}, {{ 0xfef3aaa98a7b3a82ull, 0x7caa6b0ee24f3777ull, 0xb9c001708b93fae2ull, 0x3a3424841e8609caull, 0xa2fa0fff3067ef9full, 0x124133807ba61d1cull }}, {{ 0xf584aa9f68d04912ull, 0xdea82e94d7182aafull, 0x41800e6573c7ccd8ull, 0x46096d29313c61ebull, 0x5dc49ff7e40f5c38ull, 0xb68c0304d47d231eull }}, {{ 0x972eaa3a1822dab7ull, 0xb291d1d066f1aadfull, 0x8f008ff685ce0078ull, 0xbc5e439bec5bd330ull, 0xa9ae3faee8999a32ull, 0x21781e304ce35f2full }}, {{ 0xe7d2a644f15c8b26ull, 0xf9b232240570acbbull, 0x96059fa13a0c04b6ull, 0x5baea4173b963fe5ull, 0xa0ce7cd5160005fbull, 0x4eb12de300e1b7dcull }}, {{ 0x0e3a7eb16d9d6f7dull, 0xc0f5f5683666bf57ull, 0xdc383c4c44782f25ull, 0x94d268e853de7ef7ull, 0x4810e052dc003bd1ull, 0x12ebcade08d12e9eull }}, {{ 0x8e48f2ee48265ae6ull, 0x899b961220037966ull, 0x9a325afaacb1d779ull, 0xd038191346b0f5aeull, 0xd0a8c33c9802562full, 0xbd35ecac582bd22eull }}, {{ 0x8ed97d4ed17f8d00ull, 0x6013dcb54022be01ull, 0x05f78dcabef26abfull, 0x2230fac0c2e998d2ull, 0x2697a05df0175ddeull, 0x641b3ebb71b635d4ull }}, {{ 0x947ee5142efb8201ull, 0xc0c69f14815b6c0full, 0x3bab89eb75782b79ull, 0x55e9cb879d1ff834ull, 0x81ec43ab60e9aaadull, 0xe9107352711e1a49ull }}, {{ 0xccf4f2c9d5d31409ull, 0x87c236cd0d92389bull, 0x54b3633296b1b2c1ull, 0x5b21f34c233fb20aull, 0x133aa4b1c920aac5ull, 0x1aa481386b2d06dfull }}, {{ 0x01917be25a3ec85cull, 0x4d96240287b63616ull, 0x4f01dff9e2f0fb8full, 0x8f5380f9607cf467ull, 0xc04a6ef1db46abb5ull, 0x0a6d0c342fc244b6ull }}, {{ 0x0faed6d78673d39dull, 0x07dd68194d1e1cdcull, 0x1612bfc2dd69d399ull, 0x994309bdc4e18c09ull, 0x82e8557290c2b517ull, 0x68427a09dd96af23ull }}, {{ 0x9cd4646b40864420ull, 0x4ea610fd032d2098ull, 0xdcbb7d9ca62243faull, 0xfc9e6169b0cf785aull, 0x1d135679a79b12ebull, 0x1298c462a7e2d763ull }}, {{ 0x204bec30853ea93cull, 0x127ca9e21fc345f6ull, 0x9f52e81e7d56a7c7ull, 0xde2fce20e81ab38cull, 0x22c160c08c0ebd37ull, 0xb9f7abda8edc69dfull }}, {{ 0x42f739e534729c58ull, 0xb8dea2d53da0bb9dull, 0x393d1130e5628dc6ull, 0xadde0d49110b037eull, 0x5b8dc7857893642eull, 0x43acb689949c22b7ull }}, {{ 0x9da842f40c7a1b6cull, 0x38b25c5468475424ull, 0x3c62abe8f5d989c3ull, 0xcaac84daaa6e22eeull, 0x9389cb36b5c1e9d2ull, 0xa4bf215fce195b29ull }}, {{ 0x28929d887cc51234ull, 0x36f79b4c12c9496eull, 0x5bdab7199a7f61a0ull, 0xeabd308aa84d5d4eull, 0xc361f0231993223bull, 0x6f774dbe0cfd8f9full }}, {{ 0x95ba2754dfb2b607ull, 0x25ac10f8bbdcde4dull, 0x968b270008f9d042ull, 0x2b63e56a9305a50full, 0xa1d3615effbf5657ull, 0x5aa9096c81e79c3dull }}, {{ 0xd9458950bcfb1c45ull, 0x78b8a9b756a0af07ull, 0xe16f860059c22295ull, 0xb1e6f629be38729bull, 0x5241cdb5fd795f67ull, 0x8a9a5e3d130c1a68ull }}, {{ 0x7cb75d2761cf1aaeull, 0xb736a1296246d64eull, 0xce5b3c03819559d6ull, 0xf3059da16e347a16ull, 0x3692091be6bdba0cull, 0x6a07ae62be790813ull }}, {{ 0xdf29a389d2170ac9ull, 0x28224b9dd6c45f10ull, 0x0f9058230fd58263ull, 0x7e38284e4e0cc4e4ull, 0x21b45b1703694481ull, 0x244ccfdb70ba50c0ull }}, {{ 0xb7a0636234e66bd7ull, 0x9156f42a63abb6a8ull, 0x9ba3715e9e5717dfull, 0xee31930f0c7fb0e8ull, 0x510b8ee6221cad0eull, 0x6b001e9267472781ull }}, {{ 0x2c43e1d611003661ull, 0xad6589a7e4b52297ull, 0x14626db22f66eebbull, 0x4defbe967cfce916ull, 0x2a7394fd551ec295ull, 0x2e0131b808c78b0dull }}, {{ 0xbaa6d25caa021fcdull, 0xc5f7608eef1359e7ull, 0xcbd848f5da055354ull, 0x0b5d71e0e1e11adcull, 0xa883d1e5533399d5ull, 0xcc0bf13057cb6e83ull }}, {{ 0x4a84379ea4153dfeull, 0xbba9c59556c1830dull, 0xf672d99a8435414full, 0x71a672c8d2cb0c9full, 0x952632f540040252ull, 0xf8776be36df25124ull }}, {{ 0xe92a2c3268d46be9ull, 0x54a1b7d5638f1e84ull, 0xa07c80092a148d1dull, 0x70807bd83bee7e3full, 0xd37dfd9480281738ull, 0xb4aa36e24b772b6dull }}, {{ 0x1ba5b9f8184c3719ull, 0x4e512e55e3973131ull, 0x44dd005ba4cd8325ull, 0x6504d6725750ee7cull, 0x42ebe7cd0190e834ull, 0x0ea624d6f2a7b24aull }}, {{ 0x147943b0f2fa26f7ull, 0x0f2bcf5ae3e7ebebull, 0xb0a2039470071f75ull, 0xf2306077692950daull, 0x9d370e020fa9120bull, 0x927d70657a8cf6e6ull }}, {{ 0xccbca4e97dc585a1ull, 0x97b6198ce70f372eull, 0xe65423cc60473a92ull, 0x75e3c4aa1b9d288aull, 0x24268c149c9ab477ull, 0xb8e663f6c981a502ull }}, {{ 0xff5e711ee9b7384eull, 0xed1cff81069827d3ull, 0xff4965fbc2c849b9ull, 0x9ae5aea51423956cull, 0x698178ce1e0b0caaull, 0x38ffe7a3df107215ull }}, {{ 0xf9b06b352128330eull, 0x4321fb0a41f18e47ull, 0xf8ddfbd59bd2e143ull, 0x0cf8d272c963d641ull, 0x1f0eb80d2c6e7eaaull, 0x39ff0c66b6a474d6ull }}, {{ 0xc0e430134b91fe8bull, 0x9f53ce66936f8ecfull, 0xb8abd658163ccca0ull, 0x81b8387bdde65e93ull, 0x36933083bc50f2a4ull, 0x43f67c03226c905dull }}, {{ 0x88e9e0c0f3b3f173ull, 0x39461001c25b941dull, 0x36b65f70de5ffe46ull, 0x113234d6aaffb1c5ull, 0x21bfe5255b297a6dull, 0xa7a0d81f583da3a4ull }}, {{ 0x5922c78985076e7aull, 0x3cbca0119793c927ull, 0x231fba68afbfeebeull, 0xabf61062adfcf1b4ull, 0x517ef3758f9ec842ull, 0x8c48713972686469ull }}, {{ 0x7b5bcb5f324a50c6ull, 0x5f5e40afebc5db89ull, 0x5f3d4816dd7f536eull, 0xb79ca3dacbe17109ull, 0x2ef582979c33d29aull, 0x7ad46c3e7813ec1dull }}, {{ 0xd195f1b7f6e727c1ull, 0xb9ae86df35ba935eull, 0xb864d0e4a6f9424full, 0x2c1e668bf6ce6a5dull, 0xd59719ec1a063a0bull, 0xcc4c3a70b0c73923ull }}, {{ 0x2fdb712fa5078d89ull, 0x40d144b81949c1b4ull, 0x33f028ee85bc971dull, 0xb9300177a41027a9ull, 0x57e70339043e446full, 0xfafa4866e7c83b66ull }}, {{ 0xde926bdc724b8758ull, 0x882caf30fce19109ull, 0x07619951395de724ull, 0x3be00eac68a18c9cull, 0x6f06203a2a6eac5dull, 0xcdc6d4050dd251ffull }}, {{ 0xb1b8369c76f3496full, 0x51bed7e9e0cfaa62ull, 0x49cffd2c3dab076dull, 0x56c092bc164f7e18ull, 0x563d4245a852bba4ull, 0x09c448328a3733faull }}, {{ 0xf132221ca580de55ull, 0x31746f22c81ca7daull, 0xe21fe3ba68ae4a45ull, 0x6385bb58df1aecf2ull, 0x5e6496b8933b546bull, 0x61aad1f9662807c7ull }}, {{ 0x6bf5551e7708af54ull, 0xee8c575bd11e8e8dull, 0xd53ee54816cee6b3ull, 0xe3395178b70d417cull, 0xafede335c0514c31ull, 0xd0ac33bdfd904dc9ull }}, {{ 0x37955330a656d94aull, 0x517b69962b319186ull, 0x5474f4d0e4150307ull, 0xe03d2eb726848ee0ull, 0xdf4ae019832cf9f2ull, 0x26ba056be7a309e0ull }}, {{ 0x2bd53fe67f647ce5ull, 0x2ed21fddafefaf3eull, 0x4c919028e8d21e49ull, 0xc263d327812d94c3ull, 0xb8ecc0ff1fc1c37cull, 0x834436370c5e62c8ull }}, {{ 0xb6547f00f9ece0eeull, 0xd4353ea8df5cd86dull, 0xfdafa19918352edbull, 0x97e63f8b0bc7cfa0ull, 0x393f89f73d91a2dfull, 0x20aa1e267bafdbd7ull }}, {{ 0x1f4cf609c340c94dull, 0x4a147298b9a07449ull, 0xe8dc4ffaf213d496ull, 0xeefe7b6e75ce1c49ull, 0x3c7b63a867b05cbbull, 0x46a52d80d4de9668ull }}, {{ 0x39019c61a087dd02ull, 0xe4cc79f740448adbull, 0x189b1fcd74c64ddeull, 0x55f0d2509a0d1ae3ull, 0x5cd1e4940ce39f57ull, 0xc273c70850b1e012ull }}, {{ 0x3a101bd0454ea211ull, 0xeffcc3a882ad6c90ull, 0xf60f3e068fbf0ab4ull, 0x5b68372604830cdeull, 0xa032edc880e43969ull, 0x9885c65326f2c0b7ull }}, {{ 0x44a11622b51254aaull, 0x5fdfa4951ac63da2ull, 0x9c986c419d766b11ull, 0x9212277c2d1e80b5ull, 0x41fd49d508ea3e1dull, 0xf539bf3f857b872cull }}, {{ 0xae4add5b12b74ea9ull, 0xbebc6dd30bbe6856ull, 0x1df43a9026a02eadull, 0xb4b58ad9c3310718ull, 0x93e4e25259266d27ull, 0x9441787b36d347baull }}, {{ 0xceeca58ebb291296ull, 0x735c4a3e75701362ull, 0x2b8a49a18241d2c9ull, 0x0f176c819fea46f1ull, 0xc6f0d7377b80438dull, 0xca8eb4d02440cd49ull }}, {{ 0x153e77934f9ab9dbull, 0x819ae6709660c1dcull, 0xb366e04f16923bdeull, 0x96ea3d103f26c56bull, 0xc568682ad302a382ull, 0xe99310216a8804e1ull }}, {{ 0xd470abc11c0b4291ull, 0x100d0065dfc79298ull, 0x0204c316e1b656b1ull, 0xe52662a27783b635ull, 0xb61411ac3e1a6319ull, 0x1fbea14e295030d1ull }}, {{ 0x4c66b58b187099acull, 0xa08203fabdcbb9f8ull, 0x142f9ee4d11f62eaull, 0xf37fda58ab251e12ull, 0x1cc8b0ba6d07df02ull, 0x3d724d0d9d21e831ull }}, {{ 0xfc03176ef46600b3ull, 0x451427cb69f543b2ull, 0xc9dc34f02b39dd2aull, 0x82fe8776af732cb4ull, 0x1fd6e748424eb61dull, 0x66770288235311ebull }}, {{ 0xd81eea558bfc06ffull, 0xb2c98df22394a4fdull, 0xe29a1161b042a3a6ull, 0x1df14aa2da7fbf0full, 0x3e6508d297131d27ull, 0x00a61951613eb32full }}, {{ 0x7135275777d845f5ull, 0xfbdf8b7563ce71eaull, 0xda04add0e29a6482ull, 0x2b6cea5c88fd769eull, 0x6ff25839e6bf2387ull, 0x067cfd2dcc72ffd8ull }}, {{ 0x6c13896aae72bb92ull, 0xd6bb7295e6107328ull, 0x842eca28da07ed1dull, 0xb241279d59e6a234ull, 0x5f77724303776347ull, 0x40e1e3c9fc7dfe74ull }}, {{ 0x38c35e2ad07b53b8ull, 0x635279dafca47f94ull, 0x29d3e598844f432aull, 0xf68b8c258302560dull, 0xbaaa769e22a9e0ccull, 0x88d2e5e3dcebf08bull }}, {{ 0x37a1adac24d14534ull, 0xe138c28dde6cfbcaull, 0xa246f7f52b189fa7ull, 0xa17379771e175c83ull, 0x4aa8a22d5aa2c801ull, 0x583cfae6a1376575ull }}, {{ 0x2c50c8b9702cb408ull, 0xcc37998ab041d5e6ull, 0x56c5af93aef63c8eull, 0x4e82bea72ce99d24ull, 0xea9655c58a5bd010ull, 0x7261cd024c29f694ull }}, {{ 0xbb27d73e61bf0850ull, 0xfa2bff6ae2925afdull, 0x63b8dbc4d59e5d93ull, 0x111b7287c120236bull, 0x29df59b7679620a3ull, 0x77d20216f9a3a1d1ull }}, {{ 0x4f8e686fd1765320ull, 0xc5b7fa2cd9b78de9ull, 0xe53895b0582fa7c7ull, 0xab12794d8b416231ull, 0xa2b9812a0bdd465eull, 0xae3414e5c064522bull }}, {{ 0x1b90145e2e9f3f3bull, 0xb92fc5c0812b8b1dull, 0xf435d8e371dc8dcdull, 0xaeb8bd07708dd5f2ull, 0x5b3f0ba476a4bfb2ull, 0xce08d0f983eb35b4ull }}, {{ 0x13a0cbadd238784eull, 0x3bddb9850bb36f23ull, 0x8a1a78e2729d8a09ull, 0xd337624a658a5b7dull, 0x9076746ca26f7cfaull, 0x0c5829bf2730190bull }}, {{ 0xc447f4ca3634b30eull, 0x56a93f327502575eull, 0x6508b8d87a27645cull, 0x4029d6e7f76792e7ull, 0xa4a08c3e585ae1ccull, 0x7b71a17787e0fa73ull }}, {{ 0xaacf8fe61e0efe8aull, 0x629c77f8921769b3ull, 0xf2573874c589eb9bull, 0x81a2650faa0bbd09ull, 0x6e457a6f738cd1faull, 0xd2704eab4ec9c884ull }}, {{ 0xac1b9efd2c95f166ull, 0xda1cafb5b4ea2104ull, 0x7768348fb7633411ull, 0x1057f29ca4756263ull, 0x4eb6c85a838033c9ull, 0x386312b113e1d52cull }}, {{ 0xb91435e3bddb6dfeull, 0x851edd1911254a2eull, 0xaa120d9d29e008b2ull, 0xa36f7a1e6c95d7e2ull, 0x1323d389230205daull, 0x33debaeac6d253bbull }}, {{ 0x3aca1ae56a924be8ull, 0x3334a2faab74e5d3ull, 0xa4b48823a2c056f9ull, 0x625ac5303dda6edaull, 0xbf66435b5e143a8aull, 0x06b34d2bc437454eull }}, {{ 0x4be50cf629b6f70dull, 0x000e5dcab290fa40ull, 0x6f0d51645b8365bcull, 0xd78bb3e26a88548aull, 0x79fea191acca4967ull, 0x430103b5aa28b513ull }}, {{ 0xf6f2819da125a684ull, 0x008fa9eaf9a9c682ull, 0x56852deb9321f958ull, 0x6b7506d829534d68ull, 0xc3f24fb0bfe6de0eull, 0x9e0a2518a59712c2ull }}, {{ 0xa57910284b78812bull, 0x059ca32dc0a1c11dull, 0x6133cb33bf53bd70ull, 0x329244719d410613ull, 0xa7771ce77f04ac90ull, 0x2c6572f677e6bb9bull }}, {{ 0x76baa192f2b50baeull, 0x381e5fc986518b28ull, 0xcc05f00579456660ull, 0xf9b6ac70248a3cc1ull, 0x8aa7210af62ebda1ull, 0xbbf67da0af035414ull }}, {{ 0xa34a4fbd7b1274c9ull, 0x312fbddf3f2f6f94ull, 0xf83b6036bcb5ffc2ull, 0xc122bc616d665f91ull, 0x6a874a6d9dd36853ull, 0x57a0e846d62148cdull }}, {{ 0x60e71d66ceb88fdeull, 0xebdd6ab877da5bceull, 0xb251c2235f1bfd95ull, 0x8b5b5bce45ffbbb3ull, 0x2948e8482a421345ull, 0x6c4912c45d4cd806ull }}, {{ 0xc907260413359eb1ull, 0x36a62b34ae87960full, 0xf7319561b717e7dbull, 0x7191960ebbfd5504ull, 0x9cd912d1a694c0b7ull, 0x3adabbaba500703dull }}, {{ 0xda477c28c01832e8ull, 0x227db00ed14bdc9dull, 0xa7efd5d126ef0e90ull, 0x6fafdc9357e55231ull, 0x207abc3081cf872aull, 0x4c8b54b472046268ull }}, {{ 0x86cad99780f1fd10ull, 0x58e8e0942cf69e2aull, 0x8f5e5a2b855691a1ull, 0x5cde9dc16ef535f0ull, 0x44cb59e5121b47a8ull, 0xfd714f0c742bd811ull }}, {{ 0x43ec7feb0973e29cull, 0x7918c5c9c1a22da9ull, 0x99af85b33561b04dull, 0xa0b2298e55941b65ull, 0xaff182f2b510cc93ull, 0xe66d167c89b670acull }}, {{ 0xa73cff2e5e86da1cull, 0xbaf7b9e19055c89cull, 0x00db390015d0e306ull, 0x46f59f8f57c911f8ull, 0xdf6f1d7b12a7fdc4ull, 0x0042e0dd612066beull }}, {{ 0x8861f7cfb144851aull, 0x4dad42cfa359d61eull, 0x08903a00da28de43ull, 0xc5983b996ddab3b0ull, 0xba5726ceba8fe9aaull, 0x029cc8a5cb440374ull }}, {{ 0x53d3ae1cecad3302ull, 0x08c49c1c61825d31ull, 0x55a244088598aea1ull, 0xb7f253fe4a8b04e0ull, 0x47678413499f20abull, 0x1a1fd679f0a8228full }}, {{ 0x4644cd213ec3fe11ull, 0x57ae191bcf17a3edull, 0x5856a85537f6d24aull, 0x2f7747eee96e30c3ull, 0xca0b28c0e03746b5ull, 0x053e60c366915998ull }}, {{ 0xbeb0034c73a7eca6ull, 0x6cccfb1616ec6744ull, 0x736293542fa436e7ull, 0xdaa8cf551e4de7a1ull, 0xe46f9788c228c313ull, 0x346fc7a201ad7ff7ull }}, {{ 0x72e020fc848f3e7cull, 0x4001cedce53c08afull, 0x81d9c149dc6a250aull, 0x8a9819532f0b0c4eull, 0xec5beb5795979ec6ull, 0x0c5dcc5410c6ffaeull }}, {{ 0x7cc149dd2d9870d9ull, 0x801214a0f45856daull, 0x12818ce29c257266ull, 0x69f0fd3fd66e7b11ull, 0x3b97316bd7ec33c1ull, 0x7ba9fb48a7c5fcd5ull }}, {{ 0xdf8ce2a3c7f46878ull, 0x00b4ce498b736488ull, 0xb90f80da19767801ull, 0x2369e47e6050ceaaull, 0x53e7ee366f3a058eull, 0xd4a3d0d68dbbe054ull }}, {{ 0xbb80da65cf8c14adull, 0x07100edf7281ed58ull, 0x3a9b0884fea0b00aull, 0x6222ecefc32812abull, 0x470f4e205844378dull, 0x4e6628618956c34bull }}, {{ 0x530887fa1b78cec1ull, 0x46a094ba79134577ull, 0x4a0e5531f246e064ull, 0xd55d415d9f90bab0ull, 0xc6990d4372aa2b85ull, 0x0ffd93cf5d63a0f0ull }}, {{ 0x3e554fc512b8138dull, 0xc245cf48bac0b6a9ull, 0xe48f53f376c4c3eaull, 0x55a48da83ba74ae2ull, 0xc1fa84a27aa5b33aull, 0x9fe7c619a5e44967ull }}, {{ 0x6f551db2bb30c37eull, 0x96ba18d74b87229cull, 0xed994782a3afa72bull, 0x586d88925488ecdcull, 0x93c92e58ca790047ull, 0x3f0dbd007aeade0dull }}, {{ 0x595328fb4fe7a2e8ull, 0xe344f868f3475a1cull, 0x47fccb1a64dc87b3ull, 0x744755b74d5940a1ull, 0xc5dbcf77e8ba02c9ull, 0x76896204cd2cac87ull }}, {{ 0x7d3f99d11f0c5d15ull, 0xe0b1b41980c9851bull, 0xcfdfef07f09d4d06ull, 0x8ac95929057c864cull, 0xba961aaf17441bdeull, 0xa15dd43003bebd4dull }}, {{ 0xe47c022b367ba2d1ull, 0xc6f108ff07df3312ull, 0x1ebf564f66250244ull, 0x6bdd7b9a36dd3f00ull, 0x49dd0ad6e8a916b1ull, 0x4daa49e025736509ull }}, {{ 0xecd815b020d45c28ull, 0xc56a59f64eb7febcull, 0x33795f19fd7216afull, 0x36a6d40624a47601ull, 0xe2a26c65169ae2eeull, 0x08a6e2c17681f25cull }}, {{ 0x4070d8e1484b9992ull, 0xb627839f132ff361ull, 0x02bdb703e674e2ddull, 0x2284483d6e6c9c0cull, 0xda583bf2e20cdd4eull, 0x5684db8ea11377a0ull }}, {{ 0x846878ccd2f3ffb2ull, 0x1d8b2436bfdf81ccull, 0x1b6926270090dca9ull, 0x592ad266503e1878ull, 0x8772577cd480a50dull, 0x613093924ac2ac48ull }}, {{ 0x2c14b8003d87fcefull, 0x276f6a237ebb11fdull, 0x121b7d8605a89e9bull, 0x7bac37ff226cf4b1ull, 0x4a776ae04d067285ull, 0xcbe5c3b6eb9abad5ull }}, {{ 0xb8cf3002674fe15aull, 0x8a5a2562f34eb3e3ull, 0xb512e73c3896320full, 0xd4ba2ff758418eeaull, 0xe8aa2cc302407936ull, 0xf6f9a525340b4c54ull }}, {{ 0x3817e018091ecd87ull, 0x678575dd811306e5ull, 0x12bd085a35ddf49bull, 0x4f45dfa9728f952bull, 0x16a5bf9e1684bc24ull, 0xa5c073740870fb51ull }}, {{ 0x30eec0f05b340749ull, 0x0b369aa70abe44f4ull, 0xbb6253861aab8e12ull, 0x18babc9e799bd3aeull, 0xe2797c2ce12f596bull, 0x798482885469d12aull }}, {{ 0xe9538963900848d9ull, 0x70220a866b6eb189ull, 0x51d7433d0ab38cb4ull, 0xf74b5e30c01644d3ull, 0xd8bed9c0cbd97e2eull, 0xbf2d19534c222bacull }}, {{ 0x1d435de3a052d87bull, 0x615469403252ef63ull, 0x3268a0626b037f0cull, 0xa8f1ade780deb041ull, 0x77748187f67eedd5ull, 0x77c2fd40f955b4c0ull }}, {{ 0x24a1aae4433c74d2ull, 0xcd4c1c81f73d59dfull, 0xf81643d82e22f67bull, 0x9970cb0b08b2e28bull, 0xaa8d0f4fa0f54a58ull, 0xad9de489bd590f84ull }}, {{ 0x6e50aceaa05c902full, 0x04f91d13a86582b7ull, 0xb0dea671cd5da0d6ull, 0xfe67ee6e56fcd977ull, 0xa982991c4994e775ull, 0xc82aed61657a9b2eull }}, {{ 0x4f26c12a439da1d7ull, 0x31bb22c493f71b2aull, 0xe8b2807205a8485cull, 0xf00f504f65e07eacull, 0x9f19fb1adfd10a9bull, 0xd1ad45cdf6ca0fd2ull }}, {{ 0x17838ba6a4285263ull, 0xf14f5badc7a70fa7ull, 0x16f904743892d399ull, 0x60992319fac4f2c1ull, 0x3703cf0cbe2a6a17ull, 0x30c4ba0ba3e49e3aull }}, {{ 0xeb237482699337d9ull, 0x6d1994c9cc869c86ull, 0xe5ba2c8a35bc4403ull, 0xc5fb5f03cbb17b8aull, 0x2626167f6da824e9ull, 0xe7af447466ee2e46ull }}, {{ 0x2f628d181fc02e7cull, 0x42ffcfe1fd421d45ull, 0xf945bd66195aa822ull, 0xbbd1b625f4eed36cull, 0x7d7ce0fa48917121ull, 0x0cd8ac8c054dcebdull }}, {{ 0xd9d982f13d81d0dcull, 0x9dfe1ed3e49524b3ull, 0xbcb965fcfd8a9156ull, 0x56311d7b91544241ull, 0xe6e0c9c6d5ae6b51ull, 0x8076bd78350a1366ull }}, {{ 0x827f1d6c67122899ull, 0x2bed3446edd36f06ull, 0x5f3dfbe1e769ad62ull, 0x5deb26d3ad4a9691ull, 0x04c7e1c458d0312dull, 0x04a366b21264c205ull }}, {{ 0x18f7263c06b595feull, 0xb7440ac54a425641ull, 0xb86bd6d30a20c5d5ull, 0xab2f8444c4e9e1adull, 0x2fced1ab7821ebc5ull, 0x2e6202f4b7ef9432ull }}, {{ 0xf9a77e584317dbebull, 0x28a86bb4e6975e8aull, 0x3436643e6547ba59ull, 0xafdb2aafb122d0c9ull, 0xde1430b2b15335b8ull, 0xcfd41d8f2f5bc9f5ull }}, {{ 0xc08aef729eee972bull, 0x9694351101e9b16dull, 0x0a1fea6ff4cd477bull, 0xde8faadceb5c27dcull, 0xacc9e6faed401936ull, 0x1e492797d995e39aull }}, {{ 0x856d5a7a3551e7b2ull, 0xe1ca12aa1320ee49ull, 0x653f285f9004cad3ull, 0xb19caca131998e98ull, 0xbfe305cd4480fc24ull, 0x2edb8bee7fdae40aull }}, {{ 0x364588c615330cf3ull, 0xd1e4baa4bf494edfull, 0xf47793bba02fec46ull, 0xf01ebe4befff91f3ull, 0x7ede3a04ad09d96eull, 0xd4937750fe8ce86bull }}, {{ 0x1eb757bcd3fe817dull, 0x32ef4a6f78dd14b8ull, 0x8cabc55441df3ac4ull, 0x61336ef75ffbb387ull, 0xf4ae442ec2627e55ull, 0x4dc2a929f1811432ull }}, {{ 0x33296d6047f10edeull, 0xfd58e85ab8a2cf31ull, 0x7eb5b54a92b84ba9ull, 0xcc0255a9bfd5034bull, 0x8ecea9d397d8ef55ull, 0x099a9ba36f0ac9fdull }}, {{ 0xff9e45c2cf6a94adull, 0xe579138b365c17ebull, 0xf31914e9bb32f4a3ull, 0xf81758a17e5220f2ull, 0x9412a243ee795959ull, 0x600a1462566be3e7ull }}, {{ 0xfc2eb99c1a29cec2ull, 0xf6bac3701f98ef37ull, 0x7efad1214ffd8e66ull, 0xb0e9764eef35497dull, 0xc8ba56a750bd7d83ull, 0xc064cbd76036e70bull }}, {{ 0xd9d3401905a21396ull, 0xa34ba2613bf9582full, 0xf5cc2b4d1fe79005ull, 0xe91e9f155814dee6ull, 0xd74762892766e724ull, 0x83eff669c2250675ull }}, {{ 0x824080fa3854c3d9ull, 0x60f457cc57bd71deull, 0x99f9b1033f0ba038ull, 0x1b3236d570d0b505ull, 0x68c9d95b8a050771ull, 0x275fa0219572409aull }}, {{ 0x168509c6334fa67eull, 0xc98b6dfb6d6672b1ull, 0x03c0ea2076744233ull, 0x0ff6245668271238ull, 0x17e27d9364324a6bull, 0x89bc414fd6768608ull }}, {{ 0xe13261be011c80ecull, 0xdf724bd246007aeaull, 0x25892544a08a9605ull, 0x9f9d6b601186b630ull, 0xeed8e7c1e9f6e82eull, 0x615a8d1e60a13c50ull }}, {{ 0xcbf7d16c0b1d0937ull, 0xba76f636bc04cd2cull, 0x775b74ae4569dc3aull, 0x3c2631c0af431de1ull, 0x54790d9323a511d2ull, 0xcd89832fc64c5b29ull }}, {{ 0xf7ae2e386f225c25ull, 0x48a59e23583003bfull, 0xa9928eceb6229a4bull, 0x597df186d89f2aceull, 0x4cba87bf6472b236ull, 0x075f1fddbefb8f9dull }}, {{ 0xaccdce345757996dull, 0xd6782d6171e0257full, 0x9fb994131d5a06f0ull, 0x7eeb6f447637ac12ull, 0xff494d79ec7af61full, 0x49b73ea975d39c24ull }}, {{ 0xc00a0e0b696bfe45ull, 0x60b1c5ce72c176fcull, 0x3d3fc8bf25844568ull, 0xf53258ac9e2cb8baull, 0xf8dd06c33ccd9d3aull, 0xe128729e9a441971ull }}, {{ 0x80648c721e37eeb1ull, 0xc6f1ba107b8ea5dfull, 0x647dd777772ab613ull, 0x93f776be2dbf3746ull, 0xb8a243a06008244dull, 0xcb947a3206a8fe73ull }}, {{ 0x03ed7c752e2f52e5ull, 0xc57144a4d3927abbull, 0xecea6aaaa7ab1cc5ull, 0xc7aaa36dc97828bfull, 0x3656a443c0516b07ull, 0xf3ccc5f44299f085ull }}, {{ 0x2746dc93cdd93cf4ull, 0xb66cae7043b8cb4eull, 0x41282aaa8caf1fb9ull, 0xccaa6249deb1977full, 0x1f626aa5832e2e4dull, 0x85ffbb8a9a036534ull }}, {{ 0x88c49dc60a7c6189ull, 0x203ed062a537f10dull, 0x8b91aaa97ed73d41ull, 0xfea7d6e2b2efeaf8ull, 0x39d82a771fcdcf09ull, 0x3bfd536a0421f409ull }}, {{ 0x57ae29bc68dbcf5eull, 0x427423da742f6a87ull, 0x73b0aa9ef468648bull, 0xf28e64dafd5f2db5ull, 0x4271a8a73e0a1663ull, 0x57e542242953885cull }}, {{ 0x6ccda15c189619a9ull, 0x9889668889da2949ull, 0x84e6aa358c13ed70ull, 0x798ff08de5b7c916ull, 0x987096886c64dfe7ull, 0x6ef495699d43539aull }}, {{ 0x40084d98f5dd0097ull, 0xf55e015562859cdeull, 0x3102a61778c74665ull, 0xbf9f658af92ddae1ull, 0xf465e1543bf0bf0aull, 0x558dd62024a14409ull }}, {{ 0x805307f99aa205eaull, 0x95ac0d55d93820aeull, 0xea1a7ceab7c8bffbull, 0x7c39f76dbbca8ccbull, 0x8bfacd4a5767766bull, 0x578a5d416e4ca863ull }}, {{ 0x033e4fc00a543b27ull, 0xd8b8855a7c3146d1ull, 0x2508e12b2dd77fd3ull, 0xda43aa4955e97ff7ull, 0x77cc04e76a0aa032ull, 0x6b67a48e4efe93e3ull }}, {{ 0x206f1d80674a4f85ull, 0x77353588d9ecc42aull, 0x7258cbafca6afe46ull, 0x86a4a6dd5b1effa7ull, 0xadf8310a246a41fcull, 0x320c6d8f15f1c6e2ull }}, {{ 0x4457270408e71b30ull, 0xa8141758833fa9a5ull, 0x7777f4dde82deec0ull, 0x426e84a58f35fc8aull, 0xcbb1ea656c2693ddull, 0xf47c4796db71c4daull }}, {{ 0xab67862859070fddull, 0x90c8e975207ca074ull, 0xaaaf90ab11cb5386ull, 0x98512e77981bdd68ull, 0xf4f327f63981c6a4ull, 0x8cdacbe49271b08bull }}, {{ 0xb20b3d937a469ea5ull, 0xa7d91e9344de448eull, 0xaadba6aeb1f14341ull, 0xf32bd0abf116a616ull, 0x917f8f9e3f11c26dull, 0x808bf6edb870e577ull }}, {{ 0xf47067c2c6c23270ull, 0x8e7b31c0b0aead92ull, 0xac9482d2f36ca090ull, 0x7fb626b76ae27ce2ull, 0xaefb9c2e76b1984bull, 0x0577a5493468f6abull }}, {{ 0x8c640d9bc395f860ull, 0x90cff186e6d2c7bdull, 0xbdcd1c3d823e45a5ull, 0xfd1d832a2cd8e0daull, 0xd5d419d0a2eff2f2ull, 0x36ac74dc0c19a2b4ull }}, {{ 0x7be88815a3dbb3bdull, 0xa81f6f45043bcd67ull, 0x6a031a67166eb877ull, 0xe3271fa5c078c88bull, 0x5a4902265d5f7d7dull, 0x22bc909879005b10ull }}, {{ 0xd71550d866950563ull, 0x913a58b22a56060aull, 0x241f0806e05334acull, 0xdf873c7984b7d572ull, 0x86da157fa5bae6eaull, 0x5b5da5f4ba038ea3ull }}, {{ 0x66d5287401d235deull, 0xac4776f5a75c3c6cull, 0x69365044c3400ebdull, 0xbb485cbf2f2e5675ull, 0x4484d6fc794d052cull, 0x91a87b8f44239263ull }}, {{ 0x0453948812361ab1ull, 0xbacaa598899a5c3cull, 0x1c1f22afa0809368ull, 0x50d39f77d7cf6096ull, 0xad3065dcbd0233bfull, 0xb094d398a963b7e0ull }}, {{ 0x2b43cd50b61d0ae6ull, 0x4bea77f560079a58ull, 0x19375adc4505c217ull, 0x28443aae6e19c5ddull, 0xc3e3fa9f62160579ull, 0xe5d043f69de52ec6ull }}, {{ 0xb0a605271d226d00ull, 0xf728af95c04c0771ull, 0xfc298c9ab23994e8ull, 0x92aa4ad04d01baa2ull, 0xa6e7ca39d4dc36bbull, 0xfa22a7a22af3d3c3ull }}, {{ 0xe67c338723584202ull, 0xa796dbd982f84a70ull, 0xd99f7e0af63fd119ull, 0xbaa6ec2302114a5dull, 0x850de642509a2353ull, 0xc55a8c55ad8645a4ull }}, {{ 0x00da034761729411ull, 0x8be4967f1db2e869ull, 0x803aec6d9e7e2b00ull, 0x4a85395e14ace7aaull, 0x328afe9726056145ull, 0xb5897b58c73eb86dull }}, {{ 0x088420c9ce79c8aaull, 0x76ede0f728fd141aull, 0x024d3c4830edae05ull, 0xe9343daccec10ca9ull, 0xf96df1e77c35ccb4ull, 0x175ed177c8733443ull }}, {{ 0x552947e210c1d6a4ull, 0xa54ac9a799e2c904ull, 0x17045ad1e948cc36ull, 0x1c0a68c0138a7e9aull, 0xbe4b730ada19ff11ull, 0xe9b42eadd4800aa7ull }}, {{ 0x539cced4a7926267ull, 0x74ebe08c02dbda2bull, 0xe62b8c331cd7fa22ull, 0x18681780c368f204ull, 0x6ef27e6c8503f6abull, 0x2109d2ca4d006a8dull }}, {{ 0x4420144e8bb7d803ull, 0x9136c5781c9685b1ull, 0xfdb379ff206fc558ull, 0xf410eb07a2197430ull, 0x5578f03d3227a2aeull, 0x4a623be702042986ull }}, {{ 0xa940cb11752e701cull, 0xac23b6b11de138ecull, 0xe902c3f7445db575ull, 0x88a92e4c54fe89e9ull, 0x56b96263f58c5ad5ull, 0xe7d6570614299f3full }}, {{ 0x9c87eeae93d06114ull, 0xb96522eb2acc393eull, 0x1a1ba7a8aba91698ull, 0x569bcefb51f16323ull, 0x633dd7e7977b8c57ull, 0x0e5f663cc9a03879ull }}, {{ 0x1d4f52d1c623cac5ull, 0x3df35d2fabfa3c72ull, 0x05148c96b49ae1f7ull, 0x621615d1336ddf5full, 0xe06a6f0bead37b69ull, 0x8fb9fe5fe04234bdull }}, {{ 0x25193c31bd65ebb2ull, 0x6b81a3dcb7c65c75ull, 0x32cd7de30e0cd3a8ull, 0xd4dcda2c024ab9b6ull, 0xc42856772c42d21dull, 0x9d43efbec2960f6aull }}, {{ 0x72fc59f165fb34f3ull, 0x3310669f2dbf9c93ull, 0xfc06eade8c804494ull, 0x50a085b816eb411dull, 0xa99360a7ba9c352aull, 0x24a75d7399dc9a2bull }}, {{ 0x7ddb836dfbd01182ull, 0xfea40237c97c1dc2ull, 0xd8452cb17d02adc9ull, 0x26453930e5308b2bull, 0x9fc1c68d4a1a13a7ull, 0x6e89a684029e05b4ull }}, {{ 0xea93224bd620af16ull, 0xf268162dded92998ull, 0x72b3beeee21ac9e3ull, 0x7eb43be8f3e56fb6ull, 0x3d91c184e504c487ull, 0x516081281a2c390eull }}, {{ 0x29bf56f65d46d6d7ull, 0x7810ddcab47b9ff9ull, 0x7b057554d50be2e7ull, 0xf30a571986f65d20ull, 0x67b18f30f22fad4aull, 0x2dc50b9105ba3a8eull }}, {{ 0xa179659fa4c46467ull, 0xb0a8a9eb0cd43fbbull, 0xce3695505276dd0aull, 0x7e6766ff459fa344ull, 0x0cef97e975dcc4edull, 0xc9b273aa39464990ull }}, {{ 0x4ebdf83c6fabec07ull, 0xe696a32e804a7d54ull, 0x0e21d52338a4a26aull, 0xf00a05f8b83c60b0ull, 0x815bef1e9a9fb146ull, 0xe0f884a63cbedfa0ull }}, {{ 0x136bb25c5cb73847ull, 0x01e25fd102e8e54bull, 0x8d525360366e582dull, 0x60643bb7325bc6e0ull, 0x0d9757320a3cecc5ull, 0xc9b52e7e5f74bc45ull }}, {{ 0xc234f79b9f2832c5ull, 0x12d7be2a1d18f4eeull, 0x853741c2204f71c2ull, 0xc3ea5527f795c4c5ull, 0x87e967f466613fb5ull, 0xe113d0efba8f5ab2ull }}, {{ 0x9611ac143791fbb3ull, 0xbc6d6da522f99153ull, 0x34289195431a7194ull, 0xa727538fabd9afb7ull, 0x4f1e0f8bffcc7d19ull, 0xcac6295d49998af9ull }}, {{ 0xdcb0b8ca2bb3d500ull, 0x5c4648735dbfad43ull, 0x0995afd49f086fcfull, 0x8789439cb680dd28ull, 0x172c9b77fdfce300ull, 0xebbd9da4dfff6dbdull }}, {{ 0x9ee737e5b5065205ull, 0x9abed481a97cc4a6ull, 0x5fd8de4e36545e19ull, 0x4b5ca41f2108a390ull, 0xe7be12afebe0de05ull, 0x35682870bffa4962ull }}, {{ 0x35082ef9123f3431ull, 0x0b744d109edfae82ull, 0xbe78af0e1f4bad00ull, 0xf19e69374a5663a3ull, 0x0d6cbadf36c8ac34ull, 0x161194677fc6ddddull }}, {{ 0x1251d5bab67809eeull, 0x728b02a634bcd116ull, 0x70b6d68d38f4c200ull, 0x70301c28e75fe465ull, 0x863f4cb823d6ba11ull, 0xdcafcc0afdc4aaa2ull }}, {{ 0xb732594b20b0634eull, 0x796e1a7e0f602adcull, 0x67246184398f9404ull, 0x61e1199909beebf6ull, 0x3e78ff31666344aeull, 0x9eddf86de9aeaa59ull }}, {{ 0x27f77cef46e3e109ull, 0xbe4d08ec99c1ac9full, 0x076bcf2a3f9bc82cull, 0xd2cafffa617537a0ull, 0x70b9f7edffe0aecfull, 0x34abb44b20d2a77cull }}, {{ 0x8faae158c4e6ca5aull, 0x6f02593e0190be37ull, 0x4a3617a67c15d1bfull, 0x3bedffc7ce942c40ull, 0x6743af4bfec6d41eull, 0x0eb50aef483a8adcull }}, {{ 0x9caccd77b103e785ull, 0x56177c6c0fa76e2bull, 0xe61cec80d8da317aull, 0x574bfdce11c9ba82ull, 0x08a4d8f7f3c4492eull, 0x93126d58d2496c9cull }}, {{ 0x1ec006acea270b36ull, 0x5ceadc389c8a4db4ull, 0xfd213d087885eec7ull, 0x68f7ea0cb1e1491cull, 0x567079af85aadbcfull, 0xbeb8457836de3e18ull }}, {{ 0x338042c125867020ull, 0xa12c9a361d670909ull, 0xe34c6254b53b53c9ull, 0x19af247ef2ccdb21ull, 0x6064c0db38ac961aull, 0x7332b6b224ae6cf3ull }}, {{ 0x03029b8b77406144ull, 0x4bbe061d26065a5cull, 0xe0fbd74f145145e0ull, 0x00d76cf57c008f52ull, 0xc3ef889036bddd05ull, 0x7ffb22f56ed04181ull }}, {{ 0x1e1a1372a883ccaaull, 0xf56c3d237c3f8798ull, 0xc9d66916cb2cbac2ull, 0x086a4196d805993cull, 0xa75b55a2236aa232ull, 0xffcf5d9654228f11ull }}, {{ 0x2d04c27a9525fea8ull, 0x963a6362da7b4bf1ull, 0xe2601ae3efbf4b9dull, 0x54268fe47037fc5full, 0x89915855622a55f4ull, 0xfe19a7df495996b0ull }}, {{ 0xc22f98c9d37bf28dull, 0xde47e1dc88d0f76bull, 0xd7c10ce75d78f427ull, 0x49819eec622fdbbeull, 0x5fad7355d5a75b8bull, 0xed008eb8dd7fe2e5ull }}, {{ 0x95dbf7e242d7797dull, 0xaeced29d5829aa35ull, 0x6d8a8109a6b9898eull, 0xdf10353bd5de9574ull, 0xbcc6815a58899370ull, 0x42059338a6fedcf5ull }}, {{ 0xda97aed69c6abee3ull, 0xd4143a2571a0a617ull, 0x47690a60833f5f92ull, 0xb6a214565ab1d68cull, 0x5fc10d87755fc268ull, 0x9437c03685f4a199ull }}, {{ 0x89ecd4621c2b74e2ull, 0x48ca457670467ceeull, 0xca1a67c52079bbbcull, 0x2254cb5f8af2617aull, 0xbd8a874a95bd9817ull, 0xca2d82213b8e4ffdull }}, {{ 0x63404bd519b290d1ull, 0xd7e6b6a062c0e151ull, 0xe5080db344c1555aull, 0x574ff1bb6d77cecbull, 0x676948e9d967f0e7ull, 0xe5c7154c538f1fe9ull }}, {{ 0xe082f65300f9a827ull, 0x6f032243db88cd2dull, 0xf2508900af8d558cull, 0x691f715246ae13f6ull, 0x0a1cd9227e0f6909ull, 0xf9c6d4fb43973f1eull }}, {{ 0xc51d9f3e09c09181ull, 0x561f56a6935803caull, 0x77255a06db85577cull, 0x1b3a6d36c2ccc7a5ull, 0x65207b58ec9a1a5eull, 0xc1c451d0a3e8772cull }}, {{ 0xb328386c6185af0cull, 0x5d396281c17025ebull, 0xa775844493356adbull, 0x104844239bffcc76ull, 0xf344d1793e0507adull, 0x91ab32266714a7bbull }}, {{ 0xff92343bcf38d675ull, 0xa43dd9118e617b34ull, 0x8a972aadc0162c91ull, 0xa2d2a96417fdfca2ull, 0x80b02ebc6c324cc2ull, 0xb0aff58006ce8d57ull }}, {{ 0xfbb60a5618386092ull, 0x6a6a7aaf8fced011ull, 0x69e7aac980ddbdb0ull, 0x5c3a9de8efebde59ull, 0x06e1d35c39f6ff9aull, 0xe6df97004411856bull }}, {{ 0xd51c675cf233c5b0ull, 0x2828cadb9e1420b3ull, 0x230cabdf08a968e4ull, 0x9a4a2b195f36af7eull, 0x44d2419a43a5fc07ull, 0x04bbe602a8af362eull }}, {{ 0x531c09a17605b8dcull, 0x9197ec942cc94706ull, 0x5e7eb6b6569e18e9ull, 0x06e5aefdb822daedull, 0xb0369006a47bd84cull, 0x2f56fc1a96d81dceull }}, {{ 0x3f18604e9c39389bull, 0xafef3dc9bfdcc63full, 0xb0f3231f622cf91full, 0x44f8d5e9315c8d45ull, 0xe221a0426cd672f8ull, 0xd965d909e4712a12ull }}, {{ 0x76f3c3121a3c360eull, 0xdf5869e17e9fbe78ull, 0xe97f5f39d5c1bb3cull, 0xb1b85b1bed9d84b8ull, 0xd550429840607db2ull, 0x7dfa7a62ec6ba4bcull }}, {{ 0xa5859eb5065a1c8bull, 0xb97422cef23d70b4ull, 0x1ef9b84259915060ull, 0xf1338f1748272f39ull, 0x552299f283c4e8faull, 0xebc8c7dd3c346f60ull }}, {{ 0x773833123f851d6dull, 0x3e895c157666670eull, 0x35c132977fad23c7ull, 0x6c0396e8d187d83bull, 0x535a037925b119cdull, 0x35d7cea45a0c59c3ull }}, {{ 0xa831feb67b33263full, 0x715d98d6a0000690ull, 0x198bf9eafcc365c8ull, 0x3823e5182f4e7250ull, 0x418422bb78eb0206ull, 0x1a6e126b847b81a1ull }}, {{ 0x91f3f320cfff7e79ull, 0x6da7f862400041a6ull, 0xff77c32ddfa1f9d4ull, 0x3166f2f1d9107720ull, 0x8f295b52b92e143eull, 0x084cb8332cd3104cull }}, {{ 0xb3877f481ffaf0b8ull, 0x488fb3d680029081ull, 0xfaad9fcabc53c24cull, 0xee057d727aa4a749ull, 0x979d913b3bccca6dull, 0x52ff31ffc03ea2fdull }}, {{ 0x034af8d13fcd672bull, 0xd59d06610019a511ull, 0xcac83deb5b4596faull, 0x4c36e678ca6e88e3ull, 0xec27ac5055ffe84bull, 0x3df7f3fd82725de7ull }}, {{ 0x20edb82c7e0607b3ull, 0x58223fca010072aaull, 0xebd26b3190b7e5ccull, 0xfa2500b7e85158e5ull, 0x398cbb235bff12f0ull, 0x6baf87e71877ab0full }}, {{ 0x494931bcec3c4cfaull, 0x71567de40a047aa5ull, 0x36382fefa72ef9fbull, 0xc572072f132d78fbull, 0x3f7f4f6197f6bd69ull, 0x34db4f06f4acae98ull }}, {{ 0xdcdbf1613a5b01c0ull, 0x6d60eae8642cca74ull, 0x1e31df5c87d5c3d2ull, 0xb67447d6bfc6b9d0ull, 0x7af919cfefa36621ull, 0x109116458ebed1f2ull }}, {{ 0xa0976dcc478e1183ull, 0x45c92d13e9bfe890ull, 0x2df2b99d4e59a638ull, 0x208ace637dc34221ull, 0xcdbb021f5c61fd51ull, 0xa5aadeb793743378ull }}, {{ 0x45ea49facb8caf1bull, 0xb9dbc2c7217f15a6ull, 0xcb7b40250f807e32ull, 0x456c0fe2e9a0954bull, 0x094e15399bd3e52bull, 0x78acb32bc28a02b8ull }}, {{ 0xbb26e3cbf37ed70full, 0x42959bc74ef6d87eull, 0xf2d081729b04edfbull, 0xb6389edd2045d4f5ull, 0x5d0cd4401646f3b0ull, 0xb6beffb599641b30ull }}, {{ 0x4f84e5f782f46693ull, 0x99d815c915a474f3ull, 0x7c250e7a0e314bd0ull, 0x1e3634a342ba519bull, 0xa2804a80dec584e7ull, 0x2375fd17fde90fe3ull }}, {{ 0x1b30fbab1d8c01bdull, 0x0270d9dad86c9181ull, 0xd97290c48decf626ull, 0x2e1e0e609b473012ull, 0x5902e908b3b73107ull, 0x629be2efeb1a9ee4ull }}, {{ 0x0fe9d4af27781166ull, 0x1868828c743daf0bull, 0x7e79a7ad8b419d7cull, 0xcd2c8fc610c7e0bcull, 0x7a1d1a570527ea47ull, 0xda16dd5f2f0a34ebull }}, {{ 0x9f224ed78ab0adfdull, 0xf415197c8a68d66eull, 0xf0c08cc7709026d8ull, 0x03bd9dbca7cec75cull, 0xc5230766338f26ceull, 0x84e4a5b7d6661132ull }}, {{ 0x3757146b6ae6cbe0ull, 0x88d2fedd68186052ull, 0x67857fca65a18479ull, 0x2568295e8e13c9a1ull, 0xb35e49fe0397840cull, 0x30ee792e5ffcabfbull }}, {{ 0x2966cc322d03f6c4ull, 0x583df4a610f3c336ull, 0x0b36fde7f84f2cbfull, 0x76119db18cc5e04eull, 0x01aee3ec23eb2879ull, 0xe950bbcfbfdeb7d5ull }}, {{ 0x9e03f9f5c227a3a4ull, 0x726b8e7ca985a01dull, 0x7025eb0fb317bf79ull, 0x9cb028ef7fbac30cull, 0x10d4e739672f94beull, 0x1d27561d7eb32e52ull }}, {{ 0x2c27c399958c6464ull, 0x783390de9f384128ull, 0x617b2e9cfeed7abeull, 0x1ee1995afd4b9e7cull, 0xa851083e07dbcf72ull, 0x23895d26f2ffcf34ull }}, {{ 0xb98da3ffd77bebe9ull, 0xb203a8b238328b91ull, 0xcecfd221f546cb70ull, 0x34cffd8de4f430dbull, 0x932a526c4e961a75ull, 0x635da3857dfe180eull }}, {{ 0x3f8867fe6ad7371bull, 0xf42496f631f973b1ull, 0x141e355394c3f266ull, 0x101fe78af189e896ull, 0xbfa7383b11dd0894ull, 0xe1a86336ebecf091ull }}, {{ 0x7b540ff02c68270eull, 0x896de59df3be84ecull, 0xc92e1543cfa77805ull, 0xa13f0b6d6f6315dcull, 0x7c88324eb2a255c8ull, 0xd093e025374165b1ull }}, {{ 0xd1489f61bc11868dull, 0x5e4af82b8571313cull, 0xdbccd4a61c8ab037ull, 0x4c76724659deda9full, 0xdd51f712fa5759d6ull, 0x25c6c174288df8eeull }}, {{ 0x2cd639d158af4180ull, 0xaeedb1b3366bec60ull, 0x96004e7d1d6ae229ull, 0xfca076bf82b48a3eull, 0xa533a6bdc769825eull, 0x79c38e89958bb954ull }}, {{ 0xc05e422d76d88f04ull, 0xd548f10020373bc1ull, 0xdc0310e3262cd5a0ull, 0xde44a37b1b0d6671ull, 0x74048369ca1f17b5ull, 0xc1a3915fd7753d4eull }}, {{ 0x83ae95c6a4759627ull, 0x54d96a0142285591ull, 0x981ea8df7dc05848ull, 0xaeae62cf0e860072ull, 0x882d2221e536ed1aull, 0x9063adbe6a946510ull }}, {{ 0x24d1d9c26c97dd85ull, 0x507e240c959357afull, 0xf13298bae98372d3ull, 0xd2cfdc16913c0479ull, 0x51c35552f425430aull, 0xa3e4c97029cbf2a5ull }}, {{ 0x703281983deea737ull, 0x24ed687dd7c16cd7ull, 0x6bf9f74d1f227c41ull, 0x3c1e98e1ac582cc3ull, 0x31a1553d89749e6cull, 0x66efde61a1f77a75ull }}, {{ 0x61f90ff26b528822ull, 0x714614ea6d8e406aull, 0x37c3a9033758da8bull, 0x5931f8d0bb71bfa2ull, 0xf04d54675e8e303aull, 0x055eafd053aac893ull }}, {{ 0xd3ba9f7831395155ull, 0x6cbcd128478e8427ull, 0x2da49a2029788972ull, 0x7bf3b82752717c56ull, 0x63054c09b18de247ull, 0x35b2de2344abd5c7ull }}, {{ 0x454a3ab1ec3d2d4eull, 0x3f602b92cb91298eull, 0xc86e05419eb55e78ull, 0xd7853189386edb5dull, 0xde34f860ef8ad6caull, 0x18fcad60aeb659c9ull }}, {{ 0xb4e64af33a63c509ull, 0x79c1b3bbf3ab9f8eull, 0xd44c34903315b0b2ull, 0x6b33ef5c345491a9ull, 0xae11b3c95b6c63ecull, 0xf9dec5c6d31f81e2ull }}, {{ 0x10feed8047e5b25bull, 0xc191055784b43b93ull, 0x4afa0da1fed8e6f8ull, 0x3007599a0b4db0a2ull, 0xccb105dd923be73cull, 0xc2b3b9c43f3b12daull }}, {{ 0xa9f54702cef8f790ull, 0x8faa356b2f0a53beull, 0xedc48853f47905b7ull, 0xe04980047108e656ull, 0xfeea3aa7b6570859ull, 0x9b0541aa784ebc8bull }}, {{ 0xa394c61c15b9aba4ull, 0x9ca6162fd6674572ull, 0x49ad53478cba392bull, 0xc2df002c6a58ff65ull, 0xf5264a8d1f665382ull, 0x0e3490a8b3135d77ull }}, {{ 0x63cfbd18d940b46cull, 0x1e7cddde6008b67aull, 0xe0c540cb7f463bb4ull, 0x9cb601bc2779f9f4ull, 0x937ee98339ff431bull, 0x8e0da696fec1a6afull }}, {{ 0xe61d62f87c870c33ull, 0x30e0aaafc05720c7ull, 0xc7b487f2f8be5509ull, 0x1f1c11598ac3c390ull, 0xc2f51f2043f89f14ull, 0x8c8881e5f39082dbull }}, {{ 0xfd25ddb4dd467a00ull, 0xe8c6aadd836747ceull, 0xcd0d4f7db76f525bull, 0x3718ad7f6ba5a3a7ull, 0x9d933742a7b636c9ull, 0x7d5512fb83a51c95ull }}, {{ 0xe37aa910a4c0c3feull, 0x17c2aca72208ce15ull, 0x02851ae92a593797ull, 0x26f6c6fa3478648eull, 0x27c0289a8d1e23dcull, 0xe552bdd324731dd8ull }}, {{ 0xe2ca9aa66f87a7efull, 0xed9abe8754580cdaull, 0x19330d1ba77c2be6ull, 0x85a3c5c60cb3ed8cull, 0x8d819609832d6699ull, 0xf53b6a3f6c7f2a71ull }}, {{ 0xdbea0a805b4c8f5bull, 0x480b71494b70808cull, 0xfbfe83148ad9b705ull, 0x3865b9bc7f074778ull, 0x870fdc5f1fc601ffull, 0x9452267a3cf7a86full }}, {{ 0x9724690390fd998bull, 0xd0726cdcf2650580ull, 0xd7f11ecd6c812634ull, 0x33f9415cf648cab9ull, 0x469e9bb73dbc13f8ull, 0xcb3580c661ac945bull }}, {{ 0xe76c1a23a9e7ff6eull, 0x247840a177f23705ull, 0x6f6b34063d0b7e10ull, 0x07bc8da19ed7eb42ull, 0xc23215286958c7b2ull, 0xf01707bfd0bdcb90ull }}, {{ 0x0a390564a30ffa4eull, 0x6cb2864eaf76263bull, 0x5a30083e6272eca1ull, 0x4d5d8850346f3098ull, 0x95f4d3941d77ccf4ull, 0x60e64d7e2769f3a7ull }}, {{ 0x663a35ee5e9fc70eull, 0x3ef93f12da9d7e4eull, 0x85e0526fd87d3e4eull, 0x05a753220c57e5f3ull, 0xdb9043c926ae018bull, 0xc8ff06ed8a23848bull }}, {{ 0xfe461b4fb23dc688ull, 0x75bc76bc8a26ef0full, 0x3ac3385e74e46f0eull, 0x38893f547b6efb83ull, 0x93a2a5db82cc0f6eull, 0xd9f6454765632d76ull }}, {{ 0xeebd111cf669c14full, 0x995ca35d6585569full, 0x4ba033b090ec5690ull, 0x355c794cd255d320ull, 0xc45a7a931bf89a4eull, 0x839eb4c9f5dfc6a1ull }}, {{ 0x5362ab21a0218d13ull, 0xfd9e61a5f735623full, 0xf44204e5a93b61a5ull, 0x159cbd00375a3f42ull, 0xab88c9bf17b6070eull, 0x24330fe39abdc251ull }}, {{ 0x41daaf50414f82bdull, 0xe82fd07ba815d679ull, 0x8a9430f89c51d07bull, 0xd81f62022986789dull, 0xb357e176ed1c468cull, 0x69fe9ee40b699730ull }}, {{ 0x928ad9228d1b1b5eull, 0x11de24d490da60bcull, 0x69c9e9b61b3224d7ull, 0x7139d4159f40b627ull, 0x016ecea5431ac180ull, 0x23f234e8721fe7e7ull }}, {{ 0xb96c7b59830f11a8ull, 0xb2ad704da887c75dull, 0x21e3211d0ff57066ull, 0x6c4248d838871d8aull, 0x0e5412749f0b8f04ull, 0x67761114753f0f06ull }}, {{ 0x3e3cd17f1e96b08dull, 0xfac66308954dc9a9ull, 0x52df4b229f966402ull, 0x3a96d87235472765ull, 0x8f48b88e3673962cull, 0x0a9caacc9476963cull }}, {{ 0x6e602ef731e2e583ull, 0xcbbfde55d509e09cull, 0x3cb8ef5a3bdfe81dull, 0x49e4747614c789f5ull, 0x98d7358e2083ddbaull, 0x6a1eabfdcca1de5dull }}, {{ 0x4fc1d5a7f2dcf71cull, 0xf57eaf5a5262c61cull, 0x5f39598656bf1129ull, 0xe2ec8c9ccfcb6394ull, 0xf868178d4526a946ull, 0x2532b7e9fe52afa7ull }}, {{ 0x1d92588f7ca1a719ull, 0x96f2d98737dbbd1bull, 0xb83d7f3f6376aba3ull, 0xdd3d7e201df1e3cbull, 0xb410eb84b3829cc4ull, 0x73fb2f23ef3adc8full }}, {{ 0x27b7759ade5086f9ull, 0xe57c7f482e95630full, 0x3266f879e2a2b463ull, 0xa466ed412b72e5f5ull, 0x08a9332f031a1fb0ull, 0x87cfd767584c9d9dull }}, {{ 0x8d2a980caf2545bfull, 0xf6dcf8d1d1d5de97ull, 0xf805b4c2da5b0be6ull, 0x6c05448bb27cfb93ull, 0x569bffd61f053ce6ull, 0x4e1e6a0972fe2822ull }}, {{ 0x83a9f07ed774b974ull, 0xa4a1b832325ab1ebull, 0xb0390f9c878e7705ull, 0x3834ad74f8e1d3c7ull, 0x6217fe5d36346100ull, 0x0d30245e7ded9157ull }}, {{ 0x24a364f46a8f3e8dull, 0x6e5131f5f78af333ull, 0xe23a9c1d4b90a638ull, 0x320ec691b8d245ccull, 0xd4efefa41e0bca02ull, 0x83e16bb0eb47ad69ull }}, {{ 0x6e61f18c2998717full, 0x4f2bf39bab6d7fffull, 0xd64a1924f3a67e34ull, 0xf493c1b13836ba00ull, 0x515f5c692c75e415ull, 0x26ce34e930ccc622ull }}, {{ 0x4fd36f799ff46ef8ull, 0x17b78414b246fffaull, 0x5ee4fb718480ee0bull, 0x8dc590ec32234408ull, 0x2db99c1bbc9ae8dbull, 0x840e111be7ffbd57ull }}, {{ 0x1e425ac03f8c55b5ull, 0xed2b28cef6c5ffc7ull, 0xb4f1d26f2d094c6eull, 0x89b7a939f560a853ull, 0xc94019155e0d1893ull, 0x288cab170ffd6567ull }}, {{ 0x2e978b827b7b5911ull, 0x43af9815a3bbfdc7ull, 0x11723857c25cfc55ull, 0x612c9c4395c69345ull, 0xdc80fad5ac82f5c3ull, 0x957eaee69fe5f60dull }}, {{ 0xd1eb7318d2d17aaaull, 0xa4dbf0d86557e9c7ull, 0xae76336d97a1db54ull, 0xcbbe1aa3d9c1c0b2ull, 0x9d09cc58bd1d99a1ull, 0xd6f2d5023efb9c8aull }}, {{ 0x33327ef83c2ecaa9ull, 0x70976873f56f21ceull, 0xd09e0247ec52914eull, 0xf56d0a66819186faull, 0x2261fb7763280051ull, 0x657c521675d41d6aull }}, {{ 0xfff8f5b259d3ea95ull, 0x65ea14879657520dull, 0x262c16cf3b39ad10ull, 0x964268010faf45ccull, 0x57d3d2a9df900333ull, 0xf6db34e09a492625ull }}, {{ 0xffb998f7824729d4ull, 0xfb24cd4bdf69348bull, 0x7db8e4185040c2a3ull, 0xde98100a9cd8b9f9ull, 0x6e463aa2bba02003ull, 0xa49010c606db7d75ull }}, {{ 0xfd3ff9ab16c7a245ull, 0xcf7004f6ba1c0d77ull, 0xe938e8f322879a67ull, 0xb1f0a06a207743beull, 0x4ebe4a5b54414026ull, 0x6da0a7bc4492e696ull }}, {{ 0xe47fc0aee3cc56b4ull, 0x1a6031a3451886afull, 0x1c39197f594c080eull, 0xf366442544a8a575ull, 0x136ee7914a8c8182ull, 0x48468d5aadbd01dfull }}, {{ 0xecfd86d4e5fb6308ull, 0x07c1f060b2f542deull, 0x1a3afef97cf8508dull, 0x81fea974ae967693ull, 0xc2550bace97d0f1dull, 0xd2c1858ac96212b6ull }}, {{ 0x41e74450fbd1de4eull, 0x4d9363c6fd949cb5ull, 0x064df5bee1b32582ull, 0x13f29e8ed1e0a1bfull, 0x975274c11ee29727ull, 0x3b8f376bddd4bb23ull }}, {{ 0x9308ab29d632af08ull, 0x07c1e5c5e7ce1f14ull, 0x3f0b9974d0ff7717ull, 0xc77a319432c65176ull, 0xe9388f8b34d9e786ull, 0x53982a36aa4f4f63ull }}, {{ 0xbe56afa25dfad653ull, 0x4d92f9bb0e0d36cdull, 0x7673fe9029faa6e6ull, 0xcac5efc9fbbf2e9eull, 0x1c359b7010830b43ull, 0x43f1a622a71919e7ull }}, {{ 0x6f62dc57abcc5f40ull, 0x07bdc14e8c842409ull, 0xa087f1a1a3ca84ffull, 0xebbb5de3d577d230ull, 0x1a181260a51e70a5ull, 0xa7707d5a86fb0307ull }}, {{ 0x59dc9b6cb5fbb87full, 0x4d698d117d29685eull, 0x454f705065e931f6ull, 0x3551aae656ae35e6ull, 0x04f0b7c67330667bull, 0x8a64e58945ce1e47ull }}, {{ 0x829e123f1bd534f9ull, 0x061f82aee39e13afull, 0xb51a6323fb1bf39full, 0x1530acff62ce1afeull, 0x31672dc07fe400d0ull, 0x67f0f75cba0d2ec6ull }}, {{ 0x1a2cb677165411bcull, 0x3d3b1ad4e42cc4dbull, 0x1307df67cf178436ull, 0xd3e6c1f9dc0d0df3ull, 0xee07c984fee80820ull, 0x0f69a99f4483d3bdull }}, {{ 0x05bf20a6df48b158ull, 0x644f0c50e9bfb08full, 0xbe4eba0e16eb2a1eull, 0x470393c298828b7eull, 0x4c4ddf31f5105148ull, 0x9a20a038ad26456bull }}, {{ 0x39774684b8d6ed6eull, 0xeb167b29217ce596ull, 0x6f13448ce52fa52full, 0xc623c599f51972f3ull, 0xfb0ab7f392a32cd2ull, 0x05464236c37eb630ull }}, {{ 0x3ea8c12f3865464eull, 0x2ee0cf9b4ee0f7deull, 0x56c0ad80f3dc73dfull, 0xbd65b80392fe7d82ull, 0xce6b2f83ba5fc03bull, 0x34be9623a2f31de9ull }}, {{ 0x72978bd833f4bf0cull, 0xd4c81c1114c9aeaeull, 0x6386c709869c86b7ull, 0x65f93023bdf0e717ull, 0x102fdb2547bd8255ull, 0x0f71dd645d7f2b22ull }}, {{ 0x79eb7672078f7673ull, 0x4fd118aacfe0d2d0ull, 0xe343c65f421d432eull, 0xfbbbe1656b6906e9ull, 0xa1de8f74cd671755ull, 0x9a72a5eba6f7af54ull }}, {{ 0xc332a0744b9aa07full, 0x1e2af6ac1ec83c24ull, 0xe0a5bfb895249fcfull, 0xd556cdf6321a4522ull, 0x52b19a900606e95bull, 0x087a7b3485acd94eull }}, {{ 0x9ffa448af40a44f5ull, 0x2dada2b933d2596full, 0xc6797d35d36e3e17ull, 0x55640b9df506b35cull, 0x3af009a03c451d96ull, 0x54c8d00d38c07d0full }}, {{ 0x3fc6ad6d8866b192ull, 0xc8c85b3c06377e5cull, 0xc0bee41a424e6ce7ull, 0x55e8742b9243019full, 0x4d6060425ab327dfull, 0x4fd820843784e298ull }}, {{ 0x7dc2c6475402efb1ull, 0xd7d390583e2aef9aull, 0x8774e9069710410dull, 0x5b1489b3b69e103dull, 0x05c3c2978aff8eb9ull, 0x1e71452a2b30d9f3ull }}, {{ 0xe99bbec9481d5ceaull, 0x6e43a3726dad5c08ull, 0x4a911a41e6a28a8aull, 0x8ecd6105222ca267ull, 0x39a599eb6dfb933dull, 0x306cb3a5afe8837eull }}, {{ 0x201573dcd125a125ull, 0x4ea4627848c59859ull, 0xe9ab069302596968ull, 0x9405ca3355be5808ull, 0x407803324bd3c067ull, 0xe43f0478df1522eeull }}, {{ 0x40d686a02b784b71ull, 0x126bd8b2d7b7f37bull, 0x20ae41be177e1e13ull, 0xc839e601596f7059ull, 0x84b01ff6f645840bull, 0xea762cb8b6d35d4eull }}, {{ 0x88614241b2b2f26eull, 0xb83676fc6d2f82d0ull, 0x46ce916ceaed2cbeull, 0xd242fc0d7e5a637bull, 0x2ee13fa59eb72875ull, 0x289dbf372441a511ull }}, {{ 0x53cc9690fafd784bull, 0x3220a5dc43db1c25ull, 0xc411ae412d43bf73ull, 0x369dd886ef87e2d0ull, 0xd4cc7c783327949aull, 0x962978276a9072abull }}, {{ 0x45fde1a9cde6b2eeull, 0xf5467a9aa68f1975ull, 0xa8b0ce8bc4a57a7full, 0x222a75455b4edc27ull, 0x4ffcdcb1ff8bce06ull, 0xdd9eb18a29a47ab6ull }}, {{ 0xbbead0a20b02fd4eull, 0x94c0ca0a8196fe94ull, 0x96e81175ae76c8ffull, 0x55a894b59114998cull, 0x1fe09ef3fb760c3dull, 0xa832ef65a06ccb1full }}, {{ 0x572c26546e1de510ull, 0xcf87e4690fe5f1cfull, 0xe510ae98d0a3d9fbull, 0x5895cf17aacdff7dull, 0x3ec63587d29c7a65ull, 0x91fd59f8443fef37ull }}, {{ 0x67b97f4c4d2af29eull, 0x1b4eec1a9efb7219ull, 0xf2a6d1f8266683d6ull, 0x75da16ecac0bfaeaull, 0x73be174e3a1cc7f5ull, 0xb3e583b2aa7f5828ull }}, {{ 0x0d3ef8fb03ad7a2eull, 0x1115390a35d274feull, 0x7a8433b18001265dull, 0x9a84e53eb877cd2dull, 0x856ce90e451fcf96ull, 0x06f724faa8f97194ull }}, {{ 0x8475b9ce24c6c5ccull, 0xaad43a661a3891ecull, 0xc92a04ef000b7fa2ull, 0x0930f47334ae03c6ull, 0x36411a8eb33e1be2ull, 0x45a771ca99be6fcdull }}, {{ 0x2c99420d6fc3b9fbull, 0xac4a47fd0635b33dull, 0xdba431560072fc5aull, 0x5be98c800ecc25c3ull, 0x1e8b0993006d16d4ull, 0xb88a71ea01705e04ull }}, {{ 0xbdfc94865da543d3ull, 0xbae6cfe23e190063ull, 0x9469ed5c047ddb8aull, 0x971f7d0093f979a6ull, 0x316e5fbe0442e44bull, 0x356873240e63ac29ull }}, {{ 0x6bddcd3fa874a63dull, 0x4d041ed66cfa03e5ull, 0xcc2345982cea936bull, 0xe73ae205c7bec081ull, 0xee4fbd6c2a9ceaf3ull, 0x16147f688fe4b99bull }}, {{ 0x36aa047c948e7e61ull, 0x0229346041c426f6ull, 0xf960b7f1c129c231ull, 0x084cd439cd738511ull, 0x4f1d6639aa212d87ull, 0xdcccfa159eef4017ull }}, {{ 0x22a42cddcd90efcaull, 0x159c0bc291a9859eull, 0xbdc72f718ba195eaull, 0x53004a42068332b3ull, 0x1725fe40a54bc746ull, 0xa001c4d8355880e9ull }}, {{ 0x5a69c0aa07a95de1ull, 0xd8187599b09f382dull, 0x69c7da6f744fdb24ull, 0x3e02e694411ffb05ull, 0xe77bee8674f5c8bfull, 0x4011b0721575091aull }}, {{ 0x882186a44c9daaceull, 0x70f49800e63831c5ull, 0x21ce885a8b1e8f70ull, 0x6c1d01ca8b3fce36ull, 0x0ad751409199d778ull, 0x80b0e474d6925b0dull }}, {{ 0x514f426afe28ac0dull, 0x698df008fe31f1b7ull, 0x521153896f319a64ull, 0x392211e9707e0e1dull, 0x6c692c85b0026ab4ull, 0x06e8ec9061b78e82ull }}, {{ 0x2d18982ded96b886ull, 0x1f8b6059edf37129ull, 0x34ad435e57f007ecull, 0x3b54b31e64ec8d25ull, 0x3c1bbd38e0182b0aull, 0x45193da3d12b9118ull }}, {{ 0xc2f5f1cb47e3353eull, 0x3b71c3834b826b9bull, 0x0ec4a1af6f604f39ull, 0x514eff2ff13d8374ull, 0x59156438c0f1ae66ull, 0xb2fc68662bb3aaf2ull }}, {{ 0x9d9b71f0cee0146eull, 0x5271a320f3183415ull, 0x93ae50da59c3183cull, 0x2d15f7df6c672288ull, 0x7ad5ea378970cfffull, 0xfddc13fdb504ad77ull }}, {{ 0x2812736814c0cc4cull, 0x38705f497ef208d8ull, 0xc4cf2887819ef25bull, 0xc2dbaeba3c075955ull, 0xcc5b262b5e681ff7ull, 0xea98c7e9122ec6aaull }}, {{ 0x90b88210cf87faf5ull, 0x3463b8def5745871ull, 0xb017954b10357790ull, 0x9c94d34658497d59ull, 0xfb8f7db1b0113fadull, 0x29f7cf1ab5d3c2abull }}, {{ 0xa73514a81b4fcd94ull, 0x0be538b5968b746full, 0xe0ebd4eea216aba2ull, 0x1dd040bf72dee580ull, 0xd39ae8f0e0ac7cc8ull, 0xa3ae170b1a459ab7ull }}, {{ 0x8812ce91111e07c6ull, 0x76f43717e1728c5cull, 0xc936515254e2b454ull, 0x2a22877a7cb4f708ull, 0x440d1968c6bcdfd1ull, 0x64cce66f06b80b2eull }}, {{ 0x50bc11aaab2c4db7ull, 0xa58a26eece797b9dull, 0xdc1f2d3750db0b4cull, 0xa5594ac8df11a657ull, 0xa882fe17c360be2bull, 0xf001005643306fceull }}, {{ 0x2758b0aaafbb0928ull, 0x7765855410bed425ull, 0x9937c429288e70feull, 0x757cebd8b6b07f6eull, 0x951deceda1c76db4ull, 0x600a035e9fe45e12ull }}, {{ 0x8976e6aadd4e5b8cull, 0xa9f73548a7744973ull, 0xfc2da99b959069f0ull, 0x96e1367722e4fa51ull, 0xd32b414851ca490cull, 0xc06421b23eebacb9ull }}, {{ 0x5ea502aca50f9375ull, 0xa3a814d68a8ade83ull, 0xd9c8a013d7a42366ull, 0xe4cc20a75cf1c733ull, 0x3fb08cd331e6da7dull, 0x83e950f67534bf42ull }}, {{ 0xb2721abe729bc292ull, 0x6490d061696cb121ull, 0x81d640c66c696202ull, 0xeff94689a171c806ull, 0x7ce5803ff30488eaull, 0x271d29a0940f7896ull }}, {{ 0xf8750b707a1599b3ull, 0xeda823ce1e3eeb50ull, 0x125e87c03c1dd417ull, 0x5fbcc1604e71d041ull, 0xe0f7027f7e2d592dull, 0x8723a045c89ab5e0ull }}, {{ 0xb4927264c4d80100ull, 0x4891660d2e753129ull, 0xb7b14d82592a48efull, 0xbd5f8dc31072228aull, 0xc9a618faedc57bc5ull, 0x476442b9d60b1ac8ull }}, {{ 0x0db877efb0700a04ull, 0xd5adfc83d093eba1ull, 0x2ced07177ba6d958ull, 0x65bb899ea475596bull, 0xe07cf9cd49b6d5b9ull, 0xc9ea9b425c6f0bd7ull }}, {{ 0x8934af5ce460642dull, 0x58cbdd2625c7344aull, 0xc14246ead4847d78ull, 0xf95360326c957e2full, 0xc4e1c204e124593dull, 0xe32a10979c56766eull }}, {{ 0x5c0ed9a0ebc3e9c1ull, 0x77f6a37d79c80ae9ull, 0x8c96c52c4d2ce6b3ull, 0xbd41c1f83dd6edddull, 0xb0d19430cb6b7c6bull, 0xdfa4a5ec1b60a053ull }}, {{ 0x9894804935a7218aull, 0xafa262e6c1d06d1dull, 0x7de3b3bb03c10302ull, 0x649193b26a654aa7ull, 0xe82fc9e7f232dc35ull, 0xbc6e7b3911c64344ull }}, {{ 0xf5cd02dc18874f61ull, 0xdc57dd0392244327ull, 0xeae5054e258a1e1aull, 0xedafc4f827f4ea8aull, 0x11dde30f75fc9a15ull, 0x5c50d03ab1bea0b1ull }}, {{ 0x9a021c98f54919caull, 0x9b6ea223b56a9f8full, 0x2cf2350d77652d0cull, 0x48ddb1b18f91296dull, 0xb2aade9a9bde04dbull, 0x9b28224af17246eaull }}, {{ 0x04151df994db01e0ull, 0x12525565162a3b9cull, 0xc1761286a9f3c27eull, 0xd8a8f0ef9bab9e43ull, 0xfaacb20a16ac3090ull, 0x0f9156ed6e76c52aull }}, {{ 0x28d32bbfd08e12c1ull, 0xb73755f2dda65418ull, 0x8e9cb942a38598ecull, 0x7699695c14b42ea5ull, 0xcabef464e2b9e5a8ull, 0x9bad654650a3b3adull }}, {{ 0x983fb57e258cbb88ull, 0x28295b7ca87f48f1ull, 0x921f3c9a6337f93full, 0xa1fe1d98cf09d277ull, 0xeb758bf0db42f894ull, 0x14c5f4bf266504c9ull }}, {{ 0xf27d16ed777f5353ull, 0x919d92de94f8d96full, 0xb5385e07e02fbc77ull, 0x53ed27f8166238abull, 0x32977768909db5ceull, 0xcfbb8f777ff22fe3ull }}, {{ 0x78e2e546aaf9413full, 0xb027bcb1d1b87e5full, 0x1433ac4ec1dd5cabull, 0x47438fb0dfd636b5ull, 0xf9eaaa15a6291a0full, 0x1d539aaaff75dedfull }}, {{ 0xb8dcf4c2adbc8c74ull, 0xe18d5ef23134efbaull, 0xca04bb1392a59eb4ull, 0xc8a39ce8be5e2312ull, 0xc32aa4d87d9b0498ull, 0x25440aadfa9ab4bfull }}, {{ 0x38a18f9ac95d7c8aull, 0xcf85b575ec115d4bull, 0xe42f4ec3ba783310ull, 0xd66421176fad5ebbull, 0x9faa7074e80e2df7ull, 0x74a86acbca0b0f7dull }}, {{ 0x364f9c0bdda6dd65ull, 0x1b39169b38ada4f0ull, 0xe9d913a548b1fea8ull, 0x5fe94aea5cc5b356ull, 0x3ca86491108dcbaeull, 0x8e942bf5e46e9ae8ull }}, {{ 0x1f1c1876a884a5f1ull, 0x103ae21036c87162ull, 0x227ac474d6f3f291ull, 0xbf1ced279fb90165ull, 0x5e93edaaa589f4cfull, 0x91c9b79aec520d12ull }}, {{ 0x3718f4a2952e7b6bull, 0xa24cd4a223d46dd5ull, 0x58cbac90658779aaull, 0x7721438c3d3a0df3ull, 0xb1c748aa7763901dull, 0xb1e12c0d3b3482b7ull }}, {{ 0x26f98e59d3d0d230ull, 0x57004e55664c4a54ull, 0x77f4bda3f74ac0aaull, 0xa74ca37a64448b81ull, 0xf1c8d6a8a9e3a126ull, 0xf2cbb884500d1b2cull }}, {{ 0x85bf8f82462835dfull, 0x66030f55fefae749ull, 0xaf8f6867a8eb86a7ull, 0x88fe62c7eaad730eull, 0x71d86296a2e44b82ull, 0x7bf5352b20830fc1ull }}, {{ 0x397b9b16bd921ab9ull, 0xfc1e995bf5cd08dfull, 0xdb9a140c99334289ull, 0x59efdbcf2ac67e92ull, 0x7273d9e25ceaf319ull, 0xd79413af451e9d8eull }}, {{ 0x3ed40ee367b50b37ull, 0xd931fd979a0258b8ull, 0x9404c87dfc009963ull, 0x835e9617abc0f1bcull, 0x788682d7a12d7efdull, 0x6bc8c4d8b3322790ull }}, {{ 0x744894e20d127028ull, 0x7bf3e7ec04177732ull, 0xc82fd4ebd805fde6ull, 0x21b1dcecb589715dull, 0xb5411c6c4bc6f5e7ull, 0x35d7b076fff58ba4ull }}, {{ 0x8ad5d0d482b8618dull, 0xd7870f3828eaa7f8ull, 0xd1de5136703beb00ull, 0x50f2a13f175e6da9ull, 0x148b1c3af5c59b07ull, 0x1a6ce4a5ff97746full }}, {{ 0x6c5a284d1b33cf7full, 0x6b469831992a8fb5ull, 0x32af2c2062572e08ull, 0x297a4c76e9b048a2ull, 0xcd6f1a4d99b80e49ull, 0x0840ee7bfbea8c56ull }}, {{ 0x3b85930310061af8ull, 0x30c1f1effba99d16ull, 0xfad7b943d767cc54ull, 0x9ec6fca520e2d655ull, 0x0657070801308edbull, 0x528950d7d7297b64ull }}, {{ 0x5337be1ea03d0db3ull, 0xe793735fd4a022deull, 0xcc6d3ca66a0dfb49ull, 0x33c5de7348dc5f5bull, 0x3f6646500be59494ull, 0x395d286e679ed1e8ull }}, {{ 0x402d6d3242628901ull, 0x0bc281be4e415cafull, 0xfc445e80248bd0e3ull, 0x05bab080d89bb995ull, 0x79febf2076f7cdcaull, 0x3da394500c343312ull }}, {{ 0x81c643f697d95a0dull, 0x7599116f0e8d9ed8ull, 0xdaabb1016d7628deull, 0x394ae50876153fdbull, 0xc3f37744a5ae09e4ull, 0x6863cb207a09feb8ull }}, {{ 0x11bea7a1ee7d847dull, 0x97faae5691883475ull, 0x8ab4ea0e469d98b0ull, 0x3cecf2549cd47e96ull, 0xa782a8ae78cc62eaull, 0x13e5ef44c463f337ull }}, {{ 0xb1728c5350e72ce3ull, 0xefcacf61af520c92ull, 0x6b11248ec227f6e5ull, 0x6141774e204cf1e1ull, 0x8b1a96d0b7fbdd26ull, 0xc6fb58afabe7802cull }}, {{ 0xee797b412907c0deull, 0x5dec19d0d9347dbaull, 0x2eab6d93958fa4fbull, 0xcc8ea90d430172ceull, 0x6f09e4272fd6a37full, 0xc5d176dcb70b01bdull }}, {{ 0x50bed08b9a4d88afull, 0xab3902287c0ce94dull, 0xd2b247c3d79c71d1ull, 0xfd929a849e0e7c0dull, 0x5662e987de6262fdull, 0xba2ea49f266e1166ull }}, {{ 0x27742574070756dbull, 0xb03a1594d8811d05ull, 0x3af6cda66c1c7230ull, 0xe7ba092e2c90d88aull, 0x5fdd1f4eafd7ddebull, 0x45d26e37804cadffull }}, {{ 0x8a8976884649648eull, 0xe244d7d0750b2233ull, 0x4da40880391c75e6ull, 0x0d445bcdbda87566ull, 0xbea33912de6eab37ull, 0xba384e2b02fecbf9ull }}, {{ 0x695ea152bedded8bull, 0xd6b06e24926f5603ull, 0x086855023b1c9b04ull, 0x84ab9609689495ffull, 0x72603abcb052b026ull, 0x46330dae1df3f7c1ull }}, {{ 0x1db24d3b74ab476aull, 0x62e44d6db8595c22ull, 0x541352164f1e0e30ull, 0x2eb3dc5e15cddbf6ull, 0x77c24b5ee33ae181ull, 0xbdfe88cd2b87ad8eull }}, {{ 0x28f704528eb0ca27ull, 0xdceb0649337d9955ull, 0x48c134df172c8de3ull, 0xd3069bacda0a979full, 0xad96f1b4e04ccf0bull, 0x6bf15803b34cc790ull }}, {{ 0x99a62b3992e7e584ull, 0xa12e3edc02e7fd53ull, 0xd78c10b6e7bd8ae6ull, 0x3e4214c08469ec38ull, 0xc7e57110c3001676ull, 0x376d702500ffcba6ull }}, {{ 0x007db03fbd0ef728ull, 0x4bce74981d0fe544ull, 0x6b78a7250d676d02ull, 0x6e94cf852c233a38ull, 0xcef66aa79e00e09eull, 0x2a46617209fdf483ull }}, {{ 0x04e8e27d6295a794ull, 0xf6108df1229ef4a8ull, 0x32b68772860a4216ull, 0x51d01b33b9604634ull, 0x15a02a8c2c08c630ull, 0xa6bfce7463eb8d26ull }}, {{ 0x3118d8e5d9d88bc3ull, 0x9ca58b6b5a358e90ull, 0xfb214a793c6694e5ull, 0x322110053dc2be09ull, 0xd841a979b857bde3ull, 0x837e108be733837cull }}, {{ 0xeaf878fa827575a1ull, 0x1e777231861791a1ull, 0xcf4ce8bc5c01d0f8ull, 0xf54aa034699b6c63ull, 0x72909ec1336d6adfull, 0x22eca577080322e0ull }}, {{ 0x2db4b9c91896984bull, 0x30aa75ef3cebb053ull, 0x1901175b981229b1ull, 0x94ea420c20123be6ull, 0x79a6338c02462cbfull, 0x5d3e76a6501f5cc4ull }}, {{ 0xc90f41daf5e1f2f1ull, 0xe6a89b586134e33full, 0xfa0ae993f0b5a0ebull, 0xd126947940b656fcull, 0xc07e037816bdbf7bull, 0xa470a27f21399facull }}, {{ 0xda98928d9ad37d6eull, 0x02961173cc10e07dull, 0xc46d1fc767184937ull, 0x2b81ccbc871f65e1ull, 0x84ec22b0e3697ad6ull, 0x6c6658f74c403cbfull }}, {{ 0x89f5b9880c42e64bull, 0x19dcae85f8a8c4eaull, 0xac433dca06f2dc26ull, 0xb311ff5d4739fad1ull, 0x31395ae8e21ecc5dull, 0x3bff79a8fa825f7bull }}, {{ 0x63993f507a9cfef0ull, 0x029ed13bb697b129ull, 0xbaa069e4457c997dull, 0xfeb3f9a4c843cc30ull, 0xec3d8d18d533fba8ull, 0x57fac099c917bacfull }}, {{ 0xe3fc7924ca21f563ull, 0x1a342c5521eceb9dull, 0x4a4422eab6ddfee2ull, 0xf307c06fd2a5f9e7ull, 0x3a6782f85407d499ull, 0x6fcb8601daed4c1full }}, {{ 0xe7dcbb6fe55395e3ull, 0x0609bb535341342aull, 0xe6a95d2b24abf4d5ull, 0x7e4d845e3a7bc308ull, 0x480b1db3484e4e03ull, 0x5df33c128d44f938ull }}, {{ 0x0e9f525ef543dadbull, 0x3c615141408c09adull, 0x029da3af6eb79052ull, 0xef072bae48d59e59ull, 0xd06f2900d30f0c22ull, 0xab8058b984b1bc32ull }}, {{ 0x923937b594a68c8dull, 0x5bcd2c8c857860c2ull, 0x1a2864da532ba336ull, 0x5647b4ced8582f7aull, 0x24579a083e96795dull, 0xb303773f2ef159fcull }}, {{ 0xb63c2d17ce817d83ull, 0x9603bd7d36b3c799ull, 0x0593f0873fb4601full, 0x5ecd10147371dac5ull, 0x6b6c045271e0bda5ull, 0xfe22a877d56d83d9ull }}, {{ 0x1e59c2ee110ee719ull, 0xdc2566e42305cc01ull, 0x37c765487d0bc13bull, 0xb402a0cc82728bb2ull, 0x32382b3872c76875ull, 0xed5a94ae5647267eull }}, {{ 0x2f819d4caa9506faull, 0x997604e95e39f80bull, 0x2dc9f4d4e2758c56ull, 0x081a47fd187974f6ull, 0xf631b0347bca1499ull, 0x4589cecf5ec780edull }}, {{ 0xdb1024fea9d245c6ull, 0xfe9c311dae43b06full, 0xc9e39050d8977b61ull, 0x5106cfe2f4be919dull, 0x9df0e20cd5e4cdfaull, 0xb7621419b3cb094bull }}, {{ 0x8ea171f2a236b9b7ull, 0xf219eb28cea4e45eull, 0xe2e3a32875ead1d3ull, 0x2a441edd8f71b029ull, 0x2b68d4805af00bc7ull, 0x29d4c90105ee5cf4ull }}, {{ 0x924e737a56234128ull, 0x75032f981270ebb1ull, 0xdce45f949b2c3247ull, 0xa6a934a79a70e1a2ull, 0xb2184d038d6075c7ull, 0xa24fda0a3b4fa189ull }}, {{ 0xb71082c75d608b8eull, 0x921fdbf0b86934efull, 0xa0ebbbce0fb9f6caull, 0x829c0e8c0868d05cull, 0xf4f3022385c499ccull, 0x571e8466511c4f60ull }}, {{ 0x26a51bc9a5c57387ull, 0xb53e9767341c115dull, 0x4935560c9d43a3e9ull, 0x1a1891785418239eull, 0x917e156339ae01fdull, 0x67312bff2b1b19c9ull }}, {{ 0x827315e079b6834bull, 0x1471ea080918ada3ull, 0xdc155c7e24a46721ull, 0x04f5aeb348f1642eull, 0xaeecd5e040cc13e3ull, 0x07ebb7f7af0f01dfull }}, {{ 0x187edac4c12120ebull, 0xcc7324505af6c863ull, 0x98d59ced6e6c074aull, 0x3198d300d96de9d4ull, 0xd5405ac287f8c6deull, 0x4f352facd69612bcull }}, {{ 0xf4f48baf8b4b4929ull, 0xfc7f6b238da3d3deull, 0xf8582146503848ebull, 0xeff83e087e4b224dull, 0x54838b994fb7c4adull, 0x1813dcc061dcbb60ull }}, {{ 0x918d74db70f0db9cull, 0xdcfa2f63886646b5ull, 0xb3714cbf2232d937ull, 0x5fb26c54eeef570bull, 0x4d2373fd1d2daecbull, 0xf0c69f83d29f51c3ull }}, {{ 0xaf8690926968941cull, 0xa1c5d9e353fec317ull, 0x026cff7755fc7c2eull, 0xbcf83b5155596675ull, 0x036287e323c8d3f1ull, 0x67c23b263a3931a1ull }}, {{ 0xdb41a5b81e15c918ull, 0x51ba82e147f39eecull, 0x1841faa95bdcd9d2ull, 0x61b2512d557e0092ull, 0x21d94edf65d84771ull, 0x0d964f7e463bf04aull }}, {{ 0x909079312cd9daecull, 0x31491ccccf843540ull, 0xf293ca9d96a08237ull, 0xd0f72bc556ec05b4ull, 0x527d14b9fa72ca6dull, 0x87df1aeebe5762e5ull }}, {{ 0xa5a4bbebc0828d38ull, 0xecdb20001b2a1485ull, 0x79c5ea27e2451627ull, 0x29a7b5b565383911ull, 0x38e2cf43c87be84aull, 0x4eb70d536f69dcf5ull }}, {{ 0x786f573585198434ull, 0x408f40010fa4cd38ull, 0xc1bb258ed6b2dd8full, 0xa08d1915f4323aaeull, 0x38dc18a5d4d712e5ull, 0x132685425a22a194ull }}, {{ 0xb459681732ff2a0aull, 0x8598800a9c700434ull, 0x914f779462fca798ull, 0x4582fadb89f64ad3ull, 0x3898f67a5066bcf8ull, 0xbf813497855a4fcaull }}, {{ 0x0b7e10e7fdf7a462ull, 0x37f5006a1c602a0full, 0xad1aabcbddde8bf5ull, 0xb71dcc93639eec43ull, 0x35f9a0c7240361b2ull, 0x7b0c0deb35871de6ull }}, {{ 0x72eca90febac6bd8ull, 0x2f9204251bc1a496ull, 0xc30ab5f6aab17794ull, 0x2729fdc1e4353aa4ull, 0x1bc047c76821d0fbull, 0xce788b3017472afeull }}, {{ 0x7d3e9a9f34bc366full, 0xdbb4297315906de0ull, 0x9e6b1ba2aaeeabc9ull, 0x87a3e992ea144a6full, 0x1582cdca115229cfull, 0x10b56fe0e8c7adedull }}, {{ 0xe4720a380f5a2056ull, 0x95099e7ed7a44ac4ull, 0x302f145aad52b5e2ull, 0x4c671fbd24cae85cull, 0xd71c09e4ad35a21bull, 0xa7165ec917cccb42ull }}, {{ 0xec74663099854359ull, 0xd26030f46c6aebb0ull, 0xe1d6cb8ac53b1ad9ull, 0xfc073d636fed1399ull, 0x671862eec4185510ull, 0x86dfb3daedfff09cull }}, {{ 0x3c8bfde5ff34a17bull, 0x37c1e98c3c2d34e9ull, 0xd263f36bb44f0c82ull, 0xd84865e25f42c402ull, 0x06f3dd53a8f352a9ull, 0x44bd068d4bff661cull }}, {{ 0x5d77eafbf80e4ed2ull, 0x2d931f7a59c4111cull, 0x37e782350b167d16ull, 0x72d3fad7b89ba81cull, 0x4586a54499813aa2ull, 0xaf624184f7f9fd18ull }}, {{ 0xa6af2dd7b08f1434ull, 0xc7bf3ac781a8ab1bull, 0x2f0b16126ee0e2ddull, 0x7c47cc6d3614911aull, 0xb74274adff0c4a58ull, 0xd9d68f31afc3e2f2ull }}, {{ 0x82d7ca6ce596ca04ull, 0xcd784bcb1096af14ull, 0xd66edcb854c8dca9ull, 0xdacdfc441ccdab05ull, 0x28988ecbf67ae774ull, 0x826197f0dda6dd7bull }}, {{ 0x1c6de840f7e3e428ull, 0x06b2f5eea5e2d6cdull, 0x60549f334fd89ea2ull, 0x8c0bdaa92008ae3aull, 0x95f593f7a0cd0a90ull, 0x17cfef68a884a6cfull }}, {{ 0x1c4b1289aee6e991ull, 0x42fd9b527adc6403ull, 0xc34e38011e763254ull, 0x78768a9b4056ce47ull, 0xdb97c7ac480269a5ull, 0xee1f5a16952e841bull }}, {{ 0x1aeeb960d5051fa7ull, 0x9de81138cc9be81full, 0xa10e300b309df74aull, 0xb4a16a1083640ecdull, 0x93edccbad0182076ull, 0x4d3984e1d3d12916ull }}, {{ 0x0d533dc852333c8bull, 0x2b10ac37fe171137ull, 0x4a8de06fe62ba8eaull, 0x0e4e24a521e89408ull, 0xc749ff4c20f144a3ull, 0x043f30d2462b9ae1ull }}, {{ 0x854069d336005d6bull, 0xaea6ba2fece6ac26ull, 0xe98ac45efdb49925ull, 0x8f0d6e735315c852ull, 0xc8e3f8f9496cae5eull, 0x2a77e836bdb40cd1ull }}, {{ 0x348422401c03a62full, 0xd28345df4102b981ull, 0x1f6babb5e90dfb78ull, 0x968650813ed9d33dull, 0xd8e7b9bcde3ecfb1ull, 0xa8af122369088031ull }}, {{ 0x0d29568118247dd8ull, 0x3920bab88a1b3f0cull, 0x3a34b51b1a8bd2b8ull, 0xe13f250c74824063ull, 0x790d4160ae741cefull, 0x96d6b5621a5501f2ull }}, {{ 0x839d610af16cea6full, 0x3b474b3565107678ull, 0x460f130f09763b32ull, 0xcc77727c8d1683e0ull, 0xba848dc6d089215eull, 0xe46315d507521378ull }}, {{ 0x2425ca6d6e41285aull, 0x50c8f015f2a4a0b5ull, 0xbc96be965e9e4ff6ull, 0xfcaa78dd82e126c2ull, 0x492d89c4255b4db3ull, 0xebdeda524934c2b7ull }}, {{ 0x6979e8464e8b9384ull, 0x27d960db7a6e4713ull, 0x5de371dfb22f1f9full, 0xdea8b8a71ccb839bull, 0xdbc761a975910907ull, 0x36b48736dc0f9b28ull }}, {{ 0x1ec312bf1173c32aull, 0x8e7dc892c84ec6c2ull, 0xaae272bcf5d73c37ull, 0xb29736871ff32411ull, 0x95c9d09e97aa5a4eull, 0x230d4824989c0f98ull }}, {{ 0x339ebb76ae859fa2ull, 0x90e9d5bbd313c395ull, 0xacd87b619a685a2bull, 0xf9e821473f7f68b0ull, 0xd9e22631eca78712ull, 0x5e84d16df6189bf5ull }}, {{ 0x043352a2d1383c54ull, 0xa92259563ec5a3d4ull, 0xc074d1d0081385b3ull, 0xc3114cc87afa16e6ull, 0x82d57df33e8b46bdull, 0xb1302e4b9cf6179aull }}, {{ 0x2a013a5c2c325b49ull, 0x9b577d5e73b86648ull, 0x8490322050c33904ull, 0x9eacffd4cdc4e503ull, 0x1c56eb807170c369ull, 0xebe1cef4219cec09ull }}, {{ 0xa40c4799b9f790d5ull, 0x116ae5b08533fed1ull, 0x2da1f54327a03a2eull, 0x32c1fe5009b0f223ull, 0x1b6533046e67a220ull, 0x36d215895021385bull }}, {{ 0x687acc0143aba857ull, 0xae2cf8e53407f430ull, 0xc853949f8c4245ccull, 0xfb93ef2060e9755full, 0x11f3fe2c500c5541ull, 0x2434d75d214c338full }}, {{ 0x14cbf80ca4b49365ull, 0xcdc1b8f4084f89e4ull, 0xd343ce3b7a96b9feull, 0xd3c75743c91e95bdull, 0xb387edbb207b5493ull, 0x6a1069a34cfa0396ull }}, {{ 0xcff7b07e6f0dc1f2ull, 0x09913988531b62e8ull, 0x40a60e52c9e343f4ull, 0x45c968a5db31d96aull, 0x034f494f44d14dc6ull, 0x24a4206101c423e3ull }}, {{ 0x1face4f056899372ull, 0x5fac3f533f11dd18ull, 0x867c8f3be2e0a788ull, 0xb9de167a8ff27e26ull, 0x2118dd18b02d09beull, 0x6e6943ca11a966deull }}, {{ 0x3cc0f163615fc26full, 0xbcba794076b2a2f1ull, 0x40dd9856dcc68b53ull, 0x42ace0c99f78ed81ull, 0x4af8a2f6e1c26173ull, 0x501ca5e4b09e04adull }}, {{ 0x5f896de1cdbd9857ull, 0x5f48bc84a2fa5d6cull, 0x88a7f3649fc17145ull, 0x9ac0c7e03ab9470cull, 0xedb65da4d197ce80ull, 0x211e7aeee62c2ec4ull }}, {{ 0xbb5e4ad20967f366ull, 0xb8d75d2e5dc7a63bull, 0x568f81ee3d8e6cb5ull, 0x0b87cec24b3cc67dull, 0x491fa8702fee1106ull, 0x4b30cd54fdb9d3b1ull }}, {{ 0x51aeec345e0f81f9ull, 0x3869a3cfa9cc7e55ull, 0x619b134e67903f19ull, 0x734e1396f05fc0e5ull, 0xdb3c9461df4caa3cull, 0xefe80551e94244ecull }}, {{ 0x30d53a0bac9b13b9ull, 0x3420661ca1fcef55ull, 0xd00ec1100ba276fcull, 0x810cc3e563bd88f5ull, 0x905dcbd2b8fea65cull, 0x5f1035331c96b140ull }}, {{ 0xe8544474be0ec538ull, 0x0943fd1e53e15953ull, 0x20938aa07458a5daull, 0x0a7fa6f5e567599aull, 0xa3a9f63b39f27f9dull, 0xb6a213ff1de2ec85ull }}, {{ 0x134aac8f6c93b430ull, 0x5ca7e32f46cd7d47ull, 0x45c36a448b767a84ull, 0x68fc859af6098005ull, 0x64a39e504378fc22ull, 0x2254c7f72add3d38ull }}, {{ 0xc0eabd9a3dc509e0ull, 0x9e8edfd8c406e4c6ull, 0xb9a226ad72a0c92bull, 0x19dd380d9c5f0034ull, 0xee642f22a2b9d958ull, 0x574fcfa7aca46433ull }}, {{ 0x892b680669b262c1ull, 0x3194be77a844efc3ull, 0x405582c67a47dbb4ull, 0x02a430881bb6020full, 0x4fe9d75a5b427d71ull, 0x691e1c8cbe6bea07ull }}, {{ 0x5bb2104020f7db87ull, 0xefcf70ac92b15da3ull, 0x83571bc0c6ce9509ull, 0x1a69e551151c1498ull, 0x1f2269879098e66aull, 0x1b2d1d7f70372449ull }}, {{ 0x94f4a28149ae9347ull, 0x5e1a66bdbaeda861ull, 0x21671587c411d263ull, 0x0822f52ad318cdf5ull, 0x37581f4ba5f90025ull, 0x0fc326fa62276adbull }}, {{ 0xd18e590ce0d1c0c8ull, 0xad0803694d4893cfull, 0x4e06d74da8b237e1ull, 0x515d93ac3ef80b93ull, 0x297138f47bba0172ull, 0x9d9f85c7d58a2c90ull }}, {{ 0x2f8f7a80c83187d4ull, 0xc250221d04d5c61eull, 0x0c44690896f62ed0ull, 0x2da7c4ba75b073c1ull, 0x9e6c398cd5440e77ull, 0x283b39ce5765bda1ull }}, {{ 0xdb9ac907d1ef4e44ull, 0x972155223059bd2dull, 0x7aac1a55e59dd427ull, 0xc88daf4898e4858aull, 0x303a3f8054a890a7ull, 0x9250420f69f96850ull }}, {{ 0x940bda4e33590ea6ull, 0xe74d5355e38163caull, 0xcab9075af82a498bull, 0xd588d8d5f8ed3768ull, 0xe2467b034e95a68dull, 0xb722949a23be1321ull }}, {{ 0xc876870e017a927full, 0x0905415ae30de5e9ull, 0xeb3a498db1a6df77ull, 0x5758785bb9442a17ull, 0xd6c0ce2111d8818aull, 0x2759ce05656cbf52ull }}, {{ 0xd4a1468c0ec9b8f7ull, 0x5a348d8cde8afb21ull, 0x3046df88f084baa6ull, 0x6974b3953ca9a4efull, 0x63880d4ab2750f67ull, 0x89820c35f63f793cull }}, {{ 0x4e4cc17893e139a6ull, 0x860d8780b16dcf52ull, 0xe2c4bb59652f4a7full, 0x1e8f03d45ea07157ull, 0xe35084eaf8929a0aull, 0x5f147a1b9e7abc5bull }}, {{ 0x0eff8eb5c6cc4079ull, 0x3c874b06ee4a1937ull, 0xdbaf517df3d8e8fbull, 0x3196264bb2446d6eull, 0xe125312db5ba0465ull, 0xb6ccc51430cb5b96ull }}, {{ 0x95fb9319c3fa84bcull, 0x5d48ee454ee4fc26ull, 0x94d92eeb867919d0ull, 0xefdd7ef4f6ac4654ull, 0xcb73ebc919442bf3ull, 0x23ffb2c9e7f193e4ull }}, {{ 0xdbd3bf01a7c92f5bull, 0xa4d94eb514f1d981ull, 0xd07bd53340bb0223ull, 0x5ea6f591a2babf4dull, 0xf28735dafca9b787ull, 0x67fcfbe30f6fc6efull }}, {{ 0x964576108ddbd98cull, 0x707d1312d1727f12ull, 0x24d65400874e1564ull, 0xb28597b05b4b790aull, 0x79481a8ddea12b49ull, 0x0fe1d6de9a5dc55full }}, {{ 0xdeb69ca58a967f7dull, 0x64e2bebc2e78f6b9ull, 0x705f4805490cd5ecull, 0xf937ece390f2ba65ull, 0xbcd1098ab24bb0e0ull, 0x9ed264b207a9b5baull }}, {{ 0xb3221e7769e0faddull, 0xf0db7359d0b9a342ull, 0x63b8d034da805b3bull, 0xbc2f40e3a97b47f6ull, 0x602a5f6af6f4e8c9ull, 0x3437eef44ca1194bull }}, {{ 0xff5530aa22c9cca3ull, 0x689281822740609aull, 0xe538221089039057ull, 0x59d888e49ed0cf9full, 0xc1a7ba2da59117e1ull, 0x0a2f558afe4afcf1ull }}, {{ 0xf953e6a55be1fe5dull, 0x15b90f158883c60dull, 0xf43154a55a23a36aull, 0x827558ee34281c3eull, 0x908d45c877aaeecdull, 0x65d9576deeede171ull }}, {{ 0xbd47027596d3efa4ull, 0xd93a96d75525bc8bull, 0x89ed4e7585646224ull, 0x1895794e09911a75ull, 0xa584b9d4acad5407ull, 0xfa7d6a4b554ace6full }}, {{ 0x64c61897e4475c65ull, 0x7c49e46953795d75ull, 0x6345109735ebd570ull, 0xf5d6bd0c5fab0897ull, 0x772f424ebec54846ull, 0xc8e626f154ec105cull }}, {{ 0xefbcf5eeeac99bf6ull, 0xdae2ec1d42bda695ull, 0xe0b2a5e81b365664ull, 0x9a63627bbcae55e9ull, 0xa7d8971373b4d2c5ull, 0xd8fd856d5138a39cull }}, {{ 0x5d619b552be017a1ull, 0x8cdd39249b6881dbull, 0xc6fa7b11101f5ff0ull, 0x07e1d8d55ecf5b22ull, 0x8e75e6c285103bb8ull, 0x79e736452c36641eull }}, {{ 0xa5d01153b6c0ec49ull, 0x80a43b6e12151291ull, 0xc5c8ceaaa139bf65ull, 0x4ed27855b4198f5bull, 0x909b039932a25530ull, 0xc3081eb3ba1fe931ull }}, {{ 0x7a20ad4523893adfull, 0x066a524cb4d2b9b0ull, 0xb9d812aa4c4179f7ull, 0x1438b35908ff9995ull, 0xa60e23fbfa5753e3ull, 0x9e513305453f1befull }}, {{ 0xc546c4b3635c4cb4ull, 0x402736ff103b40e4ull, 0x4270baa6fa8ec3a6ull, 0xca37017a59fbffd9ull, 0x7c8d67d7c76946deull, 0x2f2bfe34b477175cull }}, {{ 0xb4c3af01e19aff05ull, 0x818825f6a25088efull, 0x98674a85c993a47eull, 0xe6260ec783d7fe7cull, 0xdd860e6dca1cc4b3ull, 0xd7b7ee0f0ca6e99cull }}, {{ 0x0fa4d612d00df632ull, 0x0f517ba25725595dull, 0xf408e939dfc46cf1ull, 0xfd7c93cb266ff0ddull, 0xa73c9049e51faf06ull, 0x6d2f4c967e852020ull }}, {{ 0x9c705cbc208b9df9ull, 0x992ed45767757da2ull, 0x88591c42bdac416aull, 0xe6ddc5ef805f68abull, 0x885da2e2f33cd645ull, 0x43d8fde0f1334146ull }}, {{ 0x1c639f5945742bb6ull, 0xfbd44b6a0a96e85aull, 0x537b1a9b68ba8e29ull, 0x04a9bb5b03ba16b3ull, 0x53a85cdd80605ebbull, 0xa679eac96c008cc1ull }}, {{ 0x1be4397cb689b51dull, 0xd64af22469e51385ull, 0x42cf0a1217498da3ull, 0x2ea1518e2544e301ull, 0x4493a0a703c3b34eull, 0x80c32bde38057f8dull }}, {{ 0x16ea3edf21611321ull, 0x5eed756c22f2c333ull, 0x9c1664b4e8df8866ull, 0xd24d2f8d74b0de0cull, 0xadc4468625a5010dull, 0x079fb6ae3036fb84ull }}, {{ 0xe52674b74dcabf49ull, 0xb54696395d7b9ffeull, 0x18dfef1118bb53ffull, 0x3703db868ee8ac7eull, 0xc9aac13d78720a8aull, 0x4c3d22cde225d32eull }}, {{ 0xf3808f2909eb78ddull, 0x14c1de3da6d43ff4ull, 0xf8bf56aaf75147fdull, 0x262693419516bcecull, 0xe0ab8c66b4746966ull, 0xfa635c0ad57a3fd3ull }}, {{ 0x8305979a6332b8a7ull, 0xcf92ae68844a7f91ull, 0xb77962ada92ccfe2ull, 0x7d81c08fd2e36141ull, 0xc6b37c030c8c1dfdull, 0xc7e1986c56c67e46ull }}, {{ 0x1e37ec07dffb3684ull, 0x1bbad0152ae8fbafull, 0x2abddac89bc01edcull, 0xe711859e3ce1cc91ull, 0xc302d81e7d792be6ull, 0xcecff43b63c0eec3ull }}, {{ 0x2e2f384ebfd02125ull, 0x154c20d3ad19d4d7ull, 0xab6a8bd615813499ull, 0x06af382e60d1fdabull, 0x9e1c7130e6bbb705ull, 0x141f8a51e58953a5ull }}, {{ 0xcdd833137e214b77ull, 0xd4f94844c3025067ull, 0xb229765cd70c0dfaull, 0x42d831cfc833e8b4ull, 0x2d1c6be903552632ull, 0xc93b6732f75d4478ull }}, {{ 0x0a71fec2ed4cf2a2ull, 0x51bcd2af9e17240eull, 0xf59e9fa066788bccull, 0x9c71f21dd207170eull, 0xc31c371a21537df6ull, 0xdc5207fda9a4acb1ull }}, {{ 0x6873f39d45017a57ull, 0x31603adc2ce7688cull, 0x98323c4400b575fbull, 0x1c73752a3446e695ull, 0x9f1a27054d42eba2ull, 0x9b344fe8a06ebef1ull }}, {{ 0x14878424b20ec766ull, 0xedc24c99c10a157cull, 0xf1f65aa807169bcfull, 0x1c8293a60ac501d7ull, 0x37058635049d3455ull, 0x100b1f1644537570ull }}, {{ 0xcd4b296ef493c9feull, 0x4996fe018a64d6d8ull, 0x739f8a9046e2161full, 0x1d19c47c6bb2126full, 0x26373e122e240b53ull, 0xa06f36deab429662ull }}, {{ 0x04ef9e558dc5e3eeull, 0xdfe5ec0f67f06478ull, 0x843b69a2c4d4dd38ull, 0x2301acdc34f4b85aull, 0x7e286cb5cd68713full, 0x445824b2b099dfd5ull }}, {{ 0x315c2f5789bae74bull, 0xbefb389a0f63ecb0ull, 0x2a52205bb050a438ull, 0x5e10c09a118f3389ull, 0xed943f1a06146c77ull, 0xab716efae602be56ull }}, {{ 0xed99d96b614d08efull, 0x75d0360499e73ee1ull, 0xa7354394e3266a37ull, 0xaca78604af98035bull, 0x47ca77043ccc3ca9ull, 0xb26e55ccfc1b6f65ull }}, {{ 0x48027e31cd025954ull, 0x9a221c2e030874d3ull, 0x8814a3d0df80262aull, 0xbe8b3c2edbf02194ull, 0xcde8a62a5ffa5ea0ull, 0xf84f5a01d91259f4ull }}, {{ 0xd018edf202177d47ull, 0x055519cc1e549040ull, 0x50ce6628bb017daaull, 0x717059d497614fcdull, 0x0b167da7bfc7b247ull, 0xb31984127ab78390ull }}, {{ 0x20f94b7414eae4c8ull, 0x355301f92f4da288ull, 0x280ffd974e0ee8a4ull, 0x6e63824de9cd1e05ull, 0x6ee0e88d7dccf6caull, 0xfeff28b8cb2b23a0ull }}, {{ 0x49bcf288d12cefd2ull, 0x153e13bbd9085951ull, 0x909fe7e90c95166aull, 0x4fe3170b22032c33ull, 0x54c91586ea01a3e8ull, 0xf5f79737efaf6444ull }}, {{ 0xe16179582bc15e33ull, 0xd46cc5567a537d2cull, 0xa63f0f1a7dd2e024ull, 0x1edee66f541fba03ull, 0x4fdad74524106713ull, 0x9babe82f5cd9eaabull }}, {{ 0xcdcebd71b58dadffull, 0x4c3fb560c742e3c0ull, 0x7e769708ea3cc170ull, 0x34b50059493d4424ull, 0x1e8c68b368a406bfull, 0x14b711d9a0832ab1ull }}, {{ 0x0a1366711788cbf6ull, 0xfa7d15c7c89ce588ull, 0xf0a1e659265f8e62ull, 0x0f12037cdc64a96cull, 0x317c170216684378ull, 0xcf26b280451faaebull }}, {{ 0x64c2006aeb57f799ull, 0xc8e2d9cdd620f750ull, 0x6652ff7b7fbb8fddull, 0x96b422e09bee9e41ull, 0xeed8e614e012a2b0ull, 0x1782f902b33cad2full }}, {{ 0xef94042d316fabf5ull, 0xd8dc820a5d49a923ull, 0xff3dfad2fd539ea9ull, 0xe3095cc617522e8dull, 0x5478fcd0c0ba5ae5ull, 0xeb1dba1b005ec3dfull }}, {{ 0x5bc829c3ee5cb797ull, 0x789d1467a4e09b67ull, 0xf86bcc3de54432a2ull, 0xde5d9fbce935d18bull, 0x4cb9e02787478cfaull, 0x2f29450e03b3a6b9ull }}, {{ 0x95d1a1a74f9f2be2ull, 0xb622cc0c70c61209ull, 0xb435fa6af4a9fa58ull, 0xafa83d611c1a2f77ull, 0xff42c18b48cb81ccull, 0xd79cb28c2504833cull }}, {{ 0xda3050891c37b6d9ull, 0x1d5bf87c67bcb45full, 0x0a1bc82d8ea3c777ull, 0xdc9265cb1905daadull, 0xf89b8f70d7f311feull, 0x6c1ef979722d2061ull }}, {{ 0x85e3255b1a2d247aull, 0x2597b4dc0d5f0bbeull, 0x6515d1c79265caa7ull, 0x9db7f9eefa3a8ac2ull, 0xb6139a686f7eb3f4ull, 0x3935bebe75c343d3ull }}, {{ 0x3adf758f05c36cc2ull, 0x77ed109885b67571ull, 0xf2da31cbb7f9ea87ull, 0x292fc355c6496b97ull, 0x1cc408145af3078eull, 0x3c19737099a0a645ull }}, {{ 0x4cba979639a23f94ull, 0xaf42a5f53920966cull, 0x7c85f1f52fc3294aull, 0x9bdda159bede33efull, 0x1fa850cb8d7e4b8dull, 0x58fe826600467eb3ull }}, {{ 0xff49ebde40567bccull, 0xd89a7b943b45e03aull, 0xdd3b7393dd9f9ceaull, 0x16a84d8174ae075aull, 0x3c9327f386eef388ull, 0x79f117fc02c0f2ffull }}, {{ 0xf8e336ae8360d5fdull, 0x7608d3ca50bac24dull, 0xa45283c6a83c212cull, 0xe293070e8ecc498cull, 0x5dbf8f8345558350ull, 0xc36aefd81b897df8ull }}, {{ 0xb8e022d121c85bddull, 0x9c5845e7274b970bull, 0x6b3925c292594bbcull, 0xd9be469193fadf7eull, 0xa97b9b20b5572128ull, 0xa22d5e71135eebb3ull }}, {{ 0x38c15c2b51d396a4ull, 0x1b72bb0788f3e675ull, 0x303b7999b77cf55eull, 0x816ec1afc7ccbaf0ull, 0x9ed40f4715674b98ull, 0x55c5b06ac1b53504ull }}, {{ 0x378d99b13243e264ull, 0x127b4e4b59870094ull, 0xe252c0012ae195adull, 0x0e5390ddcdff4d61ull, 0x344898c6d608f3f5ull, 0x59b8e42b9114122eull }}, {{ 0x2b8800ebf6a6d7e7ull, 0xb8d10ef17f4605caull, 0xd73b800baccfd8c2ull, 0x8f43a8aa0bf905d2ull, 0x0ad5f7c45c598792ull, 0x8138e9b3aac8b5ceull }}, {{ 0xb3500937a2846f0bull, 0x382a956ef8bc39e5ull, 0x68530074c01e779bull, 0x98a496a477ba3a3cull, 0x6c5badab9b7f4bb9ull, 0x0c392104abd71a0cull }}, {{ 0x01205c2c592c566aull, 0x31a9d655b75a42f9ull, 0x133e048f8130ac10ull, 0xf66de26cad46465cull, 0x3b94c8b412f8f53full, 0x7a3b4a2eb667047cull }}, {{ 0x0b4399bb7bbb6028ull, 0xf0a25f5929869dbaull, 0xc06c2d9b0be6b8a1ull, 0xa04ad83ec4bebf98ull, 0x53cfd708bdb9947full, 0xc650e5d320062cdaull }}, {{ 0x70a40152d551c193ull, 0x6657b97b9f422944ull, 0x8439c80e77033653ull, 0x42ec7273af737bf7ull, 0x461e6657693fccfcull, 0xbf28fa3f403dc087ull }}, {{ 0x66680d3c55318fc0ull, 0xff6d3ed438959cacull, 0x2a41d090a6201f41ull, 0x9d3c7884da82d7abull, 0xbd2fff6a1c7e01daull, 0x7799c67882698548ull }}, {{ 0x0010845b53ef9d7cull, 0xfa44744a35d81ebcull, 0xa69225a67d413893ull, 0x245cb530891c6cafull, 0x63dffa251cec128aull, 0xac01c0b5181f34d7ull }}, {{ 0x00a52b91475c26ddull, 0xc6ac8ae61a713358ull, 0x81b57880e48c35c7ull, 0x6b9f13e55b1c3edcull, 0xe6bfc5732138b965ull, 0xb8118712f1381069ull }}, {{ 0x0673b3acc99984a2ull, 0xc2bd6cfd086c0170ull, 0x1116b508ed7a19cdull, 0x3436c6f58f1a749dull, 0x037db67f4c373df6ull, 0x30af46bd6c30a423ull }}, {{ 0x408504bfdfff2e52ull, 0x9b6641e254380e60ull, 0xaae3125946c50209ull, 0x0a23c59797088e22ull, 0x22e920f8fa286b9eull, 0xe6d8c36639e6695eull }}, {{ 0x85322f7ebff7cf35ull, 0x11fe92d74a308fc2ull, 0xacdeb77cc3b21460ull, 0x6565b7ebe6558d5aull, 0x5d1b49b9c594342cull, 0x0477a1fe43001dadull }}, {{ 0x33f5daf37fae1810ull, 0xb3f1bc68e5e59d99ull, 0xc0b32adfa4f4cbc0ull, 0xf5f92f36ff57858aull, 0xa310e141b7ca09bbull, 0x2cac53ee9e0128c5ull }}, {{ 0x079a8d82fcccf09full, 0x07715c18faf827fcull, 0x86ffacbc718ff587ull, 0x9bbbd825f96b376bull, 0x5ea8cc912de46157ull, 0xbebb47522c0b97b8ull }}, {{ 0x4c09871de0016639ull, 0x4a6d98f9cdb18fd8ull, 0x45fcbf5c6f9f9746ull, 0x1556717bbe302a33ull, 0xb297fdabcaebcd6cull, 0x7350c935b873ed33ull }}, {{ 0xf85f472ac00dfe35ull, 0xe847f9c208ef9e72ull, 0xbbdf799c5c3be8beull, 0xd5606ed56de1a600ull, 0xf9efe8b5ed360638ull, 0x8127dc1934874404ull }}, {{ 0xb3b8c7ab808bee14ull, 0x12cfc194595c307dull, 0x56bac01b9a571775ull, 0x55c454564ad07c07ull, 0xc35f171b441c3e38ull, 0x0b8e98fc0d48a831ull }}, {{ 0x0537ccb305774ccaull, 0xbc1d8fcb7d99e4e9ull, 0x634b81140766ea92ull, 0x59ab4b5eec24d849ull, 0xa1b6e710a91a6e33ull, 0x7391f9d884d691f1ull }}, {{ 0x342dfefe36a8ffe4ull, 0x59279df2e802f11aull, 0xe0f30ac84a0529bbull, 0x80b0f1b5397072ddull, 0x512506a69b084e01ull, 0x83b3c2753061b370ull }}, {{ 0x09cbf5ee2299fee5ull, 0x7b8c2b7d101d6b06ull, 0xc97e6bd2e433a151ull, 0x06e971143e647caaull, 0x2b7242820e530c0full, 0x25059893e3d10263ull }}, {{ 0x61f79b4d5a03f4f6ull, 0xd379b2e2a1262e3cull, 0xdef0363cea044d2eull, 0x451e6aca6fecdeabull, 0xb27699148f3e7896ull, 0x7237f5c6e62a17dfull }}, {{ 0xd3ac11058427919full, 0x42c0fcda4b7dce5bull, 0xb5621e61242b03d4ull, 0xb3302be85f40b2b6ull, 0xf8a1facd9870b5deull, 0x762f99c4fda4eebcull }}, {{ 0x44b8aa37298bb035ull, 0x9b89e086f2ea0f96ull, 0x15d52fcb69ae264aull, 0xffe1b713b886fb23ull, 0xb653cc07f4671ab2ull, 0x9ddc01b1e8715361ull }}, {{ 0xaf36a6279f74e210ull, 0x1362c5457d249bdeull, 0xda53ddf220cd7eeaull, 0xfed126c53545cf5eull, 0x1f45f84f8c070afdull, 0x2a9810f3146d41d1ull }}, {{ 0xd8227d8c3a90d49full, 0xc1dbb4b6e36e16b2ull, 0x8746ab754806f524ull, 0xf42b83b414ba19b4ull, 0x38bbb31b78466debull, 0xa9f0a97ecc44922bull }}, {{ 0x7158e77a49a84e3aull, 0x92950f24e24ce2fcull, 0x48c2b294d045936full, 0x89b32508cf45010dull, 0x3754ff12b2c04b37ull, 0xa3669ef3faadb5b0ull }}, {{ 0x6d790ac6e0930e41ull, 0xb9d29770d700dddcull, 0xd79af9d022b7c25bull, 0x60ff725818b20a84ull, 0x2951f6bafb82f02bull, 0x62023587cac918e2ull }}, {{ 0x46ba6bc4c5be8e8full, 0x4239ea686608aa9cull, 0x6c0dc2215b2d9795ull, 0xc9fa7770f6f46930ull, 0x9d33a34dd31d61b1ull, 0xd416174debdaf8d5ull }}, {{ 0xc34835afb9719191ull, 0x96432813fc56aa1aull, 0x3889954d8fc7ebd4ull, 0xe3c8aa69a58c1be4ull, 0x2404610a3f25d0f1ull, 0x48dce90b368db858ull }}, {{ 0xa0d218dd3e6fafadull, 0xde9f90c7db62a50bull, 0x355fd5079dcf364dull, 0xe5d6a820777916eaull, 0x682bca66777a2972ull, 0xd8a11a7021893371ull }}, {{ 0x4834f8a4705cdcbeull, 0xb23ba7ce91da7274ull, 0x15be524c2a181f0aull, 0xfa629144aabae526ull, 0x11b5e800aac59e7cull, 0x764b08614f5c026eull }}, {{ 0xd211b66c63a09f69ull, 0xf6548e11b288788aull, 0xd96f36f9a4f1366aull, 0xc7d9acaeab4cf37cull, 0xb11b1006abb830e1ull, 0x9eee53cd1998184cull }}, {{ 0x34b1203be4463a1dull, 0x9f4d8cb0f954b56cull, 0x7e5825c0716c202dull, 0xce80bed2b10182e0ull, 0xeb0ea042b531e8d1ull, 0x354f4602fff0f2feull }}, {{ 0x0eeb4256eabe4523ull, 0x39077ee9bd4f163aull, 0xef7179846e3941c8ull, 0x1107743aea0f1cc4ull, 0x2e92429b13f31832ull, 0x1518bc1dff697df5ull }}, {{ 0x953097652b6eb362ull, 0x3a4af5216516de44ull, 0x5a6ebf2c4e3c91d2ull, 0xaa4a8a4d24971fb1ull, 0xd1b69a0ec77ef1f4ull, 0xd2f7592bfa1eeb93ull }}, {{ 0xd3e5e9f3b25301d0ull, 0x46ed934df2e4aeadull, 0x885377bb0e5db236ull, 0xa6e967036de73cedull, 0x31220493caf5738eull, 0x3da97bb7c53533c6ull }}, {{ 0x46fb2384f73e121dull, 0xc547c10b7ceed2caull, 0x5342ad4e8fa8f61eull, 0x851e06224b086147ull, 0xeb542dc5ed968392ull, 0x689ed52db41405bdull }}, {{ 0xc5cf6331a86cb523ull, 0xb4cd8a72e1543be6ull, 0x409ac5119c999d33ull, 0x332c3d56ee53ccc9ull, 0x3149c9bb47e123b9ull, 0x163453c908c8396bull }}, {{ 0xba19dff0943f1360ull, 0x1007687ccd4a5703ull, 0x860bb2b01e002405ull, 0xffba65654f45ffdcull, 0xece1e150cecb653bull, 0xde0b45da57d23e2full }}, {{ 0x4502bf65ca76c1c5ull, 0xa04a14e004e76625ull, 0x3c74fae12c016832ull, 0xfd47f5f518bbfe9dull, 0x40d2cd2813f1f457ull, 0xac70ba876e366ddfull }}, {{ 0xb21b79f9e8a391aeull, 0x42e4d0c03109fd74ull, 0x5c91cccbb80e11faull, 0xe4cf9b92f757f224ull, 0x883c0390c7738b6full, 0xbc67494a4e204ab8ull }}, {{ 0xf512c3c31663b0ceull, 0x9cf02781ea63e68eull, 0x9db1fff5308cb3c6ull, 0xf01c13bda96f756bull, 0x525823a7ca83725eull, 0x5c08dce70d42eb35ull }}, {{ 0x92bba59edfe4e808ull, 0x21618b1327e70195ull, 0x28f3ff93e57f05c2ull, 0x6118c5689e5a9634ull, 0x3771648de92277b5ull, 0x9858a106849d3015ull }}, {{ 0xbb547834bef11054ull, 0x4dcf6ebf8f060fd7ull, 0x9987fbc6f6f63995ull, 0xcaf7b6162f89de09ull, 0x2a6ded8b1b58ad15ull, 0xf3764a412e23e0d4ull }}, {{ 0x514cb20f756aa349ull, 0x0a1a537b963c9e6dull, 0xff4fd5c5a59e3fd5ull, 0xedad1cdddb62ac5full, 0xa84b476f1176c2d9ull, 0x829ee68bcd66c849ull }}, {{ 0x2cfef49a962a60d6ull, 0x650742d3de5e3045ull, 0xf91e59b8782e7e52ull, 0x48c320aa91dabbbfull, 0x92f0ca56aea39c83ull, 0x1a3501760603d2e0ull }}, {{ 0xc1f58e09dda7c859ull, 0xf2489c46afade2b3ull, 0xbb2f8134b1d0ef37ull, 0xd79f46a9b28b557full, 0xbd67e762d2641d20ull, 0x06120e9c3c263cc5ull }}, {{ 0x93978c62a88dd37bull, 0x76d61ac2dccadb05ull, 0x4fdb0c0ef229582full, 0x6c38c2a0f97156fdull, 0x660f09dc37e92348ull, 0x3cb4921a597e5fb9ull }}, {{ 0xc3eb7bda958a42caull, 0xa45d0b9c9fec8e37ull, 0x1e8e7895759d71daull, 0x3a379a49be6d65e5ull, 0xfc96629a2f1b60d4ull, 0x5f0db5077eefbd3dull }}, {{ 0xa732d689d7669be7ull, 0x6ba2741e3f3d8e2dull, 0x3190b5d69826728aull, 0x462c06e17045faf3ull, 0xdddfda05d711c84aull, 0xb689124af55d646bull }}, {{ 0x87fc61626a021707ull, 0x3458892e78678dc8ull, 0xefa71a61f1807968ull, 0xbdb844ce62bbcd7full, 0xaabe843a66b1d2e6ull, 0x215ab6ed95a5ec36ull }}, {{ 0x4fdbcdd82414e648ull, 0x0b755bd0b40b89d5ull, 0x5c8707d36f04be12ull, 0x6932b00fdb5606ffull, 0xab712a4802f23d03ull, 0x4d8b2547d87b3a22ull }}, {{ 0x1e960a7168d0fed1ull, 0x7295962708736255ull, 0x9d464e42562f6cb4ull, 0x1bfae09e915c45f9ull, 0xb26ba6d01d766222ull, 0x076f74ce74d0455aull }}, {{ 0x31dc686e1829f428ull, 0x79d7dd865481d753ull, 0x24bf0e975dda3f0cull, 0x17ccc631ad9abbc0ull, 0xf8348421269fd555ull, 0x4a5a90109022b58aull }}, {{ 0xf29c144cf1a3898eull, 0xc26ea73f4d12693full, 0x6f7691e9aa86767cull, 0xedffbdf0c80b5581ull, 0xb20d294b823e5552ull, 0xe789a0a5a15b176dull }}, {{ 0x7a18cb0170635f87ull, 0x9852887902b81c7full, 0x5aa1b320a940a0dfull, 0x4bfd6b67d071570eull, 0xf4839cf3166f553dull, 0x0b6046784d8eea48ull }}, {{ 0xc4f7ee0e63e1bb47ull, 0xf33954ba1b311cfaull, 0x8a50ff469c8648bbull, 0xf7e6320e246d668full, 0x8d24217ee0595464ull, 0x71c2c0b3079526d9ull }}, {{ 0xb1af4c8fe6d150c4ull, 0x803d4f450feb21cbull, 0x6729f8c21d3ed757ull, 0xaefdf48d6c46019bull, 0x83694ef4c37d4bf1ull, 0x719b86fe4bd3847full }}, {{ 0xf0d8fd9f042d27adull, 0x026518b29f2f51f4ull, 0x07a3b7952474696bull, 0xd5eb8d863abc1012ull, 0x221d158fa2e4f770ull, 0x701345eef6432cfbull }}, {{ 0x6879e83629c38cc0ull, 0x17f2f6fa37d93391ull, 0x4c652bd36c8c1e2eull, 0x5b33873e4b58a0b4ull, 0x5522d79c5cf1aa68ull, 0x60c0bb559e9fc1cfull }}, {{ 0x14c3121da1a37f80ull, 0xef7da5c62e7c03aeull, 0xfbf3b6423d792dccull, 0x9003486ef176470aull, 0x535c6c1ba170a813ull, 0xc7875158323d9219ull }}, {{ 0xcf9eb5285062fb05ull, 0x5ae879bdd0d824ccull, 0xd7851e9666bbca01ull, 0xa020d4556e9ec66dull, 0x419c39144e6690c3ull, 0xcb492d71f667b4fdull }}, {{ 0x1c33139323ddce2dull, 0x8d14c16a28717000ull, 0x6b3331e00355e40dull, 0x41484b565233c04aull, 0x901a3acb1001a7a4ull, 0xf0dbc673a00d11e4ull }}, {{ 0x19fec3bf66aa0dc7ull, 0x82cf8e25946e6001ull, 0x2ffff2c0215ae887ull, 0x8cd2f15f360582e8ull, 0xa1064beea0108c6aull, 0x6895c0844082b2edull }}, {{ 0x03f3a57a02a489c2ull, 0x1c1b8d77cc4fc00bull, 0xdfff7b814d8d154bull, 0x803d6db81c371d11ull, 0x4a3ef75240a57c29ull, 0x15d9852a851afd48ull }}, {{ 0x278476c41a6d6194ull, 0x191386adfb1d806eull, 0xbffad30d0782d4efull, 0x026649311a2722b2ull, 0xe675a9368676d99full, 0xda7f33a9330de4d2ull }}, {{ 0x8b2ca3a90845cfcaull, 0xfac342cbcf27044dull, 0x7fcc3e824b1c5156ull, 0x17fedbeb05875afbull, 0x00989c2140a48036ull, 0x88f8049bfe8af03dull }}, {{ 0x6fbe649a52ba1de7ull, 0xcba09bf617862b07ull, 0xfdfa7116ef1b2d65ull, 0xeff4972e37498dd2ull, 0x05f6194c866d021cull, 0x59b02e17f16d6262ull }}, {{ 0x5d6fee073b452b09ull, 0xf446179ceb3dae4aull, 0xebc86ae5570fc5f9ull, 0x5f8de7ce28df8a3dull, 0x3b9cfcfd40421521ull, 0x80e1ccef6e45d7d4ull }}, {{ 0xa65f4c4850b3ae56ull, 0x8abcec213068cee7ull, 0x35d42cf5669dbbc3ull, 0xbb8b0e0d98bb666bull, 0x5421e1e48294d34dull, 0x08d2015a4eba6e4aull }}, {{ 0x7fb8fad32704cf5bull, 0x6b61394be418150cull, 0x1a49c196022955a3ull, 0x536e8c87f7520030ull, 0x4952d2ed19d04109ull, 0x58340d8713484ee7ull }}, {{ 0xfd39cc3f8630198dull, 0x31cc3cf6e8f0d27cull, 0x06e18fdc159d5862ull, 0x42517d4fa93401e1ull, 0xdd3c3d4302228a5dull, 0x72088746c0d31508ull }}, {{ 0xe441fa7b3de0ff7full, 0xf1fa61a5196838e1ull, 0x44cf9e98d82573d5ull, 0x972ee51c9c0812caull, 0xa45a649e155967a4ull, 0x745548c3883ed258ull }}, {{ 0xea93c8d06ac9faf2ull, 0x73c7d072fe1238d2ull, 0xb01c31f87176865bull, 0xe7d4f31e1850bbe6ull, 0x6b87ee2cd57e0c6dull, 0x8b54d7a352743776ull }}, {{ 0x29c5d8242be3cd73ull, 0x85ce247decb6383dull, 0xe119f3b46ea13f92ull, 0x0e517f2cf3275702ull, 0x334f4dc056ec7c4bull, 0x71506c61388a2aa0ull }}, {{ 0xa1ba7169b6e6067eull, 0x3a0d6ceb3f1e3263ull, 0xcb03850c524c7bb9ull, 0x8f2ef7c17f89661cull, 0x01190983653cdaeeull, 0x6d243bcc3565aa42ull }}, {{ 0x51486e2124fc40eeull, 0x44864130772df7e4ull, 0xee23327b36fcd53cull, 0x97d5ad8efb5dfd1full, 0x0afa5f21f4608d51ull, 0x436a55fa15f8a694ull }}, {{ 0x2cd44d4b71da8947ull, 0xad3e8be4a7cbaeebull, 0x4d5ff8d025e0545aull, 0xee58c795d1abe33full, 0x6dc7b7538bc5852full, 0xa2275bc4dbb681c8ull }}, {{ 0xc04b04f272895cc9ull, 0xc47176ee8df4d52full, 0x05bfb8217ac34b8aull, 0x4f77cbda30b6e079ull, 0x49cd294375b733dfull, 0x558995b0952111d4ull }}, {{ 0x82ee3178795d9fdcull, 0xac6ea5518b9053ddull, 0x397d314ecba0f36bull, 0x1aadf685e724c4baull, 0xe2039ca2992806b9ull, 0x575fd8e5d34ab24aull }}, {{ 0x1d4deeb4bda83e99ull, 0xbc52752f73a346a7ull, 0x3ee3ed13f4498234ull, 0x0acba13b076faf46ull, 0xd4241e59fb90433bull, 0x69be78fa40eaf6ecull }}, {{ 0x250b530f689271feull, 0x5b3893da8460c287ull, 0x74e742c78adf160full, 0x6bf44c4e4a5cd8beull, 0x49692f83d3a2a04eull, 0x2170b9c6892da540ull }}, {{ 0x72713e9a15b873f0ull, 0x9035c6892bc79947ull, 0x91089bcb6cb6dc99ull, 0x378afb0ee7a07770ull, 0xde1bdb26445a4310ull, 0x4e6741c15bc87482ull }}, {{ 0x786c7204d934875bull, 0xa219c15bb5cbfccaull, 0xaa5615f23f249dffull, 0x2b6dce950c44aa65ull, 0xad168f7eab869ea2ull, 0x1008918d95d48d1cull }}, {{ 0xb43c74307c0d4993ull, 0x55018d9519f7dfe8ull, 0xa75cdb76776e2bfcull, 0xb24a11d27aaea7f8ull, 0xc2e19af2b3423255ull, 0xa055af87da4d831eull }}, {{ 0x0a5c89e4d884dfbdull, 0x520f87d303aebf17ull, 0x89a092a0aa4db7dbull, 0xf6e4b238cad28fb6ull, 0x9cd00d7b0095f758ull, 0x4358db4e87071f33ull }}, {{ 0x679d62f07530bd67ull, 0x349b4e3e24d376e6ull, 0x6045ba46a7092e91ull, 0xa4eef637ec399d21ull, 0x202086ce05dba979ull, 0xa178911146473804ull }}, {{ 0x0c25dd6493e76605ull, 0x0e110e6d7042a500ull, 0xc2b946c2865bd1acull, 0x71559e2f3a40234dull, 0x4145440c3a949ec0ull, 0x4eb5aaacbec83029ull }}, {{ 0x797aa5edc709fc31ull, 0x8caa9046629a7200ull, 0x9b3cc3993f9630b8ull, 0x6d582dd846816109ull, 0x8cb4a87a49ce3384ull, 0x1318aabf73d1e19cull }}, {{ 0xbeca7b49c663d9eeull, 0x7ea9a2bfda087404ull, 0x105fa3fc7bdde735ull, 0x4571ca72c10dca60ull, 0x7f0e94c6e20e032cull, 0xbef6ab7a8632d01dull }}, {{ 0x73e8d0e1bfe6834cull, 0xf2a05b7e8454882full, 0xa3bc67dcd6ab0816ull, 0xb671e87b8a89e7c0ull, 0xf691cfc4d48c1fbaull, 0x75a2b2c93dfc2126ull }}, {{ 0x871828d17f0120f7ull, 0x7a4392f12b4d51daull, 0x655c0ea062ae50e5ull, 0x207314d369630d86ull, 0xa1b21db04d793d4bull, 0x985afbdc6bd94b85ull }}, {{ 0x46f1982ef60b49a9ull, 0xc6a3bd6bb1053289ull, 0xf5989243dacf28f6ull, 0x447ed0421dde873full, 0x50f528e306bc64efull, 0xf38dd69c367cf338ull }}, {{ 0xc56ff1d59c70e09bull, 0xc2656634ea33f95cull, 0x97f5b6a68c1799a3ull, 0xacf422952ab1487full, 0x299398de435bf158ull, 0x838a621a20e18033ull }}, {{ 0xb65f72581c68c611ull, 0x97f5fe112607bd9full, 0xef99228178ec0065ull, 0xc18959d3aaecd4fbull, 0x9fc3f8aea1976d76ull, 0x2367d50548cf01ffull }}, {{ 0x1fba77711c17bcabull, 0xef9becab7c4d683dull, 0x5bfb590eb93803f7ull, 0x8f5d8244ad4051d7ull, 0x3da7b6d24fea46a3ull, 0x620e5234d81613fcull }}, {{ 0x3d48aa6b18ed5eb1ull, 0x5c173eb2db061263ull, 0x97d17a933c3027afull, 0x99a716aec4833269ull, 0x688d24371f26c263ull, 0xd48f361070dcc7daull }}, {{ 0x64d6a82ef945b2eeull, 0x98e872fc8e3cb7e0ull, 0xee2ec9c059e18cd9ull, 0x0086e2d3ad1ff81full, 0x15836a27378397e4ull, 0x4d981ca4689fce88ull }}, {{ 0xf06291d5bcb8fd4full, 0xf9147ddd8e5f2ec3ull, 0x4dd3e18382cf807full, 0x0544dc44c33fb13full, 0xd72225882b23eee8ull, 0x07f11e6c163e1150ull }}, {{ 0x63d9b2595f39e519ull, 0xbacceaa78fb7d3a7ull, 0x0a46cf231c1b04ffull, 0x34b09aafa07cec79ull, 0x67557751af675510ull, 0x4f6b3038de6cad28ull }}, {{ 0xe680f77db842f2faull, 0x4c012a8b9d2e4489ull, 0x66c4175f190e31fdull, 0x0ee60adc44e13cbaull, 0x0956a930da0952a2ull, 0x1a2fe238b03ec394ull }}, {{ 0x0109aae9329d7dc6ull, 0xf80ba97423cead63ull, 0x03a8e9b6fa8df3e4ull, 0x94fc6c9ab0cc5f48ull, 0x5d629be8845d3a54ull, 0x05ded636e273a3c8ull }}, {{ 0x0a60ad1bfa26e9b7ull, 0xb0749e896612c5deull, 0x24992125c98b86f1ull, 0xd1dc3e0ae7fbb8d0ull, 0xa5da17152ba4474dull, 0x3ab45e24d88465d3ull }}, {{ 0x67c6c317c5852127ull, 0xe48e315dfcbbbaacull, 0x6dfb4b79df734570ull, 0x329a6c6d0fd53821ull, 0x7a84e6d3b46ac90aull, 0x4b0bad70752bfa44ull }}, {{ 0x0dc39eedb7334b83ull, 0xed8dedabdf554abcull, 0x4bd0f2c2ba80b668ull, 0xfa083c429e54314eull, 0xc93104450c2bda65ull, 0xee74c66493b7c6acull }}, {{ 0x89a435492800f322ull, 0x478b48b6b954eb58ull, 0xf6297b9b49072019ull, 0xc4525a9a2f49ed0eull, 0xdbea2ab279b687fbull, 0x508fbfedc52dc2bfull }}, {{ 0x606a14db90097f52ull, 0xcb70d7233d513175ull, 0x9d9ed410da4740fcull, 0xab378a05d8e34295ull, 0x9725aaf8c1214fd5ull, 0x259d7f49b3c99b7eull }}, {{ 0xc424d093a05ef935ull, 0xf2686760652bee95ull, 0x283448a886c889dfull, 0xb02b643a78e099d8ull, 0xe778adb78b4d1e58ull, 0x7826f8e105e012f1ull }}, {{ 0xa97025c443b5bc10ull, 0x781409c3f3b751d9ull, 0x920ad69543d562bfull, 0xe1b1ea48b8c60271ull, 0x0ab6c92b71032f76ull, 0xb185b8ca3ac0bd73ull }}, {{ 0x9e6179aaa519589dull, 0xb0c861a785293280ull, 0xb46c61d4a655db7aull, 0xd0f326d737bc186full, 0x6b23dbb26a1fdaa4ull, 0xef3937e64b87667eull }}, {{ 0x2fcec0aa72fd761full, 0xe7d3d08b339bf906ull, 0x0c3bd24e7f5a92caull, 0x297f84682d58f45dull, 0x2f6694f8253e8a70ull, 0x583c2efef34a00f0ull }}, {{ 0xde1386a87de69d3bull, 0x0e4625700417ba3dull, 0x7a563710f989bbedull, 0x9efb2c11c5798ba2ull, 0xda01d1b174716861ull, 0x7259d5f580e40961ull }}, {{ 0xacc34294eb02244cull, 0x8ebd766028ed466aull, 0xc75e26a9bf615742ull, 0x35cfb8b1b6bf7458ull, 0x841230ee8c6e13d0ull, 0x77825b9708e85dd2ull }}, {{ 0xbfa099d12e156afcull, 0x93669fc19944c02aull, 0xc9ad82a179cd6899ull, 0x1a1d36f1237a8b77ull, 0x28b5e9517c4cc622ull, 0xab1793e65913aa39ull }}, {{ 0x7c46022bccd62ddcull, 0xc2023d8ffcaf81abull, 0xe0c71a4ec20615ffull, 0x0524256b62c972adull, 0x971b1d2edaffbd55ull, 0xaeebc6ff7ac4a63bull }}, {{ 0xdabc15b6005dca98ull, 0x9416679fdedb10b2ull, 0xc7c70713943cdbfdull, 0x33697631dbde7acaull, 0xe70f23d48dfd6552ull, 0xd535c5facbae7e53ull }}, {{ 0x8b58d91c03a9e9eeull, 0xc8e00c3eb48ea6fcull, 0xcdc646c3ca6097e7ull, 0x021e9df296b0cbebull, 0x0697664d8be5f536ull, 0x5419bbcbf4d0ef47ull }}, {{ 0x71787b1824a32349ull, 0xd8c07a730d9285ddull, 0x09bec3a5e7c5ef0dull, 0x15322b79e2e7f736ull, 0x41e9ff0776fb941cull, 0x490155f7902958c6ull }}, {{ 0x6eb4cef16e5f60d9ull, 0x7784c87e87b93aa6ull, 0x6173a47b0dbb568aull, 0xd3f5b2c2dd0fa81cull, 0x9323f64aa5d3c918ull, 0xda0d5baba19d77beull }}, {{ 0x5310156e4fb9c879ull, 0xab2fd4f14d3c4a80ull, 0xce846cce89516168ull, 0x4798fb9ca29c911bull, 0xbf679eea7a45daf8ull, 0x848594b45026ad71ull }}, {{ 0x3ea0d64f1d41d4beull, 0xafde516d045ae903ull, 0x112c40115d2dce16ull, 0xcbf9d41e5a1dab16ull, 0x7a0c3528c6ba8db2ull, 0x2d37cf0b2182c671ull }}, {{ 0x72485f1724924f6bull, 0xdeaf2e422b8d1a20ull, 0xabba80ada3ca0ce2ull, 0xf7c2492f8528aedcull, 0xc47a1397c34988fbull, 0xc42e166f4f1bc06eull }}, {{ 0x76d3b6e76db71a31ull, 0xb2d7ce95b3830544ull, 0xb54906c865e480dcull, 0xad96dbdb3396d49eull, 0xacc4c3eda0df59d7ull, 0xa9cce05917158453ull }}, {{ 0xa445250a492705eeull, 0xfc6e11d9031e34acull, 0x14da43d3faed089eull, 0xc7e4969003e44e33ull, 0xbfafa74848b9826cull, 0xa200c37ae6d72b44ull }}, {{ 0x6ab37266db863b4eull, 0xdc4cb27a1f2e0ebeull, 0xd086a647cd425635ull, 0xceede1a026eb0dfeull, 0x7cdc88d2d73f183full, 0x5407a2cd0467b0afull }}, {{ 0x2b027804933e5108ull, 0x9afef8c537cc9370ull, 0x25427ece04975e1aull, 0x154ad041852e8bf4ull, 0xe09d583c6876f27eull, 0x484c5c022c0ce6daull }}, {{ 0xae18b02dc06f2a54ull, 0x0df5b7b42dfdc261ull, 0x7498f40c2de9ad0aull, 0xd4ec228f33d17789ull, 0xc625725c14a578ecull, 0xd2fb9815b881048cull }}, {{ 0xccf6e1c98457a74dull, 0x8b992d09cbe997d0ull, 0x8df98879cb20c264ull, 0x51395998062eab5eull, 0xbd767798ce76b940ull, 0x3dd3f0d9350a2d7full }}, {{ 0x01a4d1df2b6c8901ull, 0x73fbc261f71fee28ull, 0x8bbf54c1ef4797edull, 0x2c3d7ff03dd2b1b1ull, 0x66a0abf810a33c83ull, 0x6a47687c1265c6fdull }}, {{ 0x107032b7b23d5a0dull, 0x87d597d3a73f4d90ull, 0x75794f9358cbef46ull, 0xba66ff626a3af0efull, 0x0246b7b0a6605d1full, 0x26ca14d8b7f9c5e6ull }}, {{ 0xa461fb2cf6658483ull, 0x4e57ee44887907a0ull, 0x96bd1bc177f758c1ull, 0x4805f9d8264d695aull, 0x16c32ce67fc3a33dull, 0x83e4d0772fc1bafcull }}, {{ 0x6bd3cfc19ff72d1full, 0x0f6f4ead54ba4c46ull, 0xe363158eafa9778dull, 0xd03bc2717f061d89ull, 0xe39fc100fda46064ull, 0x26f024a7dd914dd8ull }}, {{ 0x36461d903fa7c337ull, 0x9a5912c54f46fac0ull, 0xe1ded792dc9eab82ull, 0x2255986ef63d2762ull, 0xe43d8a09e86bc3f0ull, 0x85616e8ea7ad0a78ull }}, {{ 0x1ebd27a27c8da021ull, 0x077abbb518c5cb82ull, 0xd2b46bbc9e32b31aull, 0x5757f4559e6389dcull, 0xea6764631435a761ull, 0x35ce51928cc268b8ull }}, {{ 0x33638c58dd88414full, 0x4acb5512f7b9f315ull, 0x3b0c355e2dfaff04ull, 0x696f8b582fe362a0ull, 0x2809ebdeca1889cdull, 0x1a0f2fb97f981739ull }}, {{ 0x01e37b78a7528d12ull, 0xebf152bdad437ed4ull, 0x4e7a15adcbcdf62aull, 0x1e5b7171dee1da42ull, 0x906336b3e4f56206ull, 0x0497dd3efbf0e83bull }}, {{ 0x12e2d2b6893982b1ull, 0x376d3b68c4a2f448ull, 0x10c4d8c9f60b9dadull, 0x2f926e72b4d28697ull, 0xa3e02306f195d43dull, 0x2deea475d7691253ull }}, {{ 0xbcdc3b215c3f1aeeull, 0x2a445217ae5d8ad0ull, 0xa7b077e39c7428c4ull, 0xdbb8507b103941e6ull, 0x66c15e456fda4a63ull, 0xcb526c9a6a1ab744ull }}, {{ 0x609a4f4d9a770d4dull, 0xa6ab34eccfa76c27ull, 0x8ce4aee41c8997a9ull, 0x953324cea23c9302ull, 0x038daeb65e86e7e6ull, 0xf1383e08250b28acull }}, {{ 0xc607190808a68500ull, 0x82b011401c8a3989ull, 0x80eed4e91d5feca0ull, 0xd3ff7012565dbe19ull, 0x2388d31fb1450f01ull, 0x6c326c51726f96b8ull }}, {{ 0xbc46fa5056813204ull, 0x1ae0ac811d663f61ull, 0x0954511b25bf3e45ull, 0x47fa60b75fa96cffull, 0x63583f3cecb29612ull, 0x39f83b2e785be331ull }}, {{ 0x5ac5c723610bf42cull, 0x0cc6bd0b25fe79d1ull, 0x5d4b2b0f79786eb3ull, 0xcfc7c729bc9e41f6ull, 0xe17278613ef9dcb6ull, 0x43b24fd0b396dfedull }}, {{ 0x8bb9c761ca7789bcull, 0x7fc3626f7bf0c22dull, 0xa4efae9abeb452feull, 0x1dcdc7a15e2e939full, 0xce78b3cc75c29f24ull, 0xa4f71e2703e4bf4aull }}, {{ 0x7541c9d1e8ab6157ull, 0xfda1d85ad76795c7ull, 0x715cd20b730b3df0ull, 0x2a09cc4dadd1c43cull, 0x10b705fc999a3769ull, 0x71a72d8626ef78ecull }}, {{ 0x9491e23316b1cd6bull, 0xe852738c6a0bd9caull, 0x6da034727e706b69ull, 0xa461fb08ca31aa5cull, 0xa7263bde00062a1bull, 0x7087c73d855ab938ull }}, {{ 0xcdb2d5fee2f2062dull, 0x1338837c247681e9ull, 0x48420c78f0643223ull, 0x6bd3ce57e5f0a79cull, 0x877e56ac003da514ull, 0x654dc867358b3c36ull }}, {{ 0x08fc5bf4dd743dc7ull, 0xc03522d96ca11322ull, 0xd2947cb963e9f55eull, 0x36460f6efb668c1aull, 0x4aef62b8026872ccull, 0xf509d40817705a21ull }}, {{ 0x59db9790a68a69c4ull, 0x82135c7e3e4abf54ull, 0x39ccdf3de72395b3ull, 0x1ebc9a55d201790cull, 0xed59db3018147bfaull, 0x92624850ea63854cull }}, {{ 0x8293eba6816821acull, 0x14c19cee6eeb794bull, 0x4200b86b0763d903ull, 0x335e075a340eba7aull, 0x45828fe0f0ccd7c5ull, 0xb7d6d32927e33501ull }}, {{ 0x19c734810e1150b8ull, 0xcf9021505532bcf3ull, 0x9407342e49e67a1eull, 0x01ac4986089348c6ull, 0xb7199ec968006db4ull, 0x2e643f9b8ee0120cull }}, {{ 0x01c80d0a8cad2732ull, 0x1ba14d2353fb617full, 0xc84809cee300c534ull, 0x10badf3c55c0d7c1ull, 0x270033de10044908ull, 0xcfea7c1394c0b47full }}, {{ 0x11d082697ec387efull, 0x144d036147d1cef6ull, 0xd2d06214de07b409ull, 0xa74cb85b59886d91ull, 0x860206aca02ada50ull, 0x1f28d8c3cf870cf7ull }}, {{ 0xb225181ef3a34f58ull, 0xcb0221ccce32159cull, 0x3c23d4d0ac4d085aull, 0x88ff33917f5447b2ull, 0x3c1442be41ac8726ull, 0x379877a61b4681abull }}, {{ 0xf572f13584611973ull, 0xee1552000df4d81eull, 0x59665026bb02538bull, 0x59f803aef94accf6ull, 0x58ca9b6e90bd4781ull, 0x2bf4ac7d10c110b0ull }}, {{ 0x967d6c172bcafe7bull, 0x4cd534008b907135ull, 0x7dff21834e174377ull, 0x83b024d5bcec019full, 0x77ea1251a764cb0dull, 0xb78ebce2a78aa6e3ull }}, {{ 0xe0e638e7b5edf0caull, 0x0054080573a46c17ull, 0xebf74f210ce8a2a9ull, 0x24e170596138103aull, 0xaf24b73089efee87ull, 0x2b9360da8b6a84e2ull }}, {{ 0xc8fe390d1b4b67e3ull, 0x03485036846c38eeull, 0x37a9174a81165a9aull, 0x70ce637dcc30a24dull, 0xd76f27e5635f5147ull, 0xb3c1c889722930daull }}, {{ 0xd9ee3a8310f20edcull, 0x20d322212c3a3953ull, 0x2c9ae8e90adf8a04ull, 0x680fe2e9f9e65704ull, 0x6a578ef5e1b92ccaull, 0x0591d55e759be88cull }}, {{ 0x834e491ea974949aull, 0x483f554bba463d46ull, 0xbe0d191a6cbb6429ull, 0x109edd23c2ff6629ull, 0x276b959ad13bbfe8ull, 0x37b255b09817157cull }}, {{ 0x210edb329e8dce03ull, 0xd27954f546be64c1ull, 0x6c82fb083f51e99cull, 0xa634a3659df9fda1ull, 0x8a33d80c2c557f10ull, 0x2cf758e5f0e6d6d9ull }}, {{ 0x4a948ffa318a0c1eull, 0x38bd5194c36fef8bull, 0x3d1dce5279332020ull, 0x7e0e61f82bc3e84eull, 0x66067079bb56f6a6ull, 0xc1a978fb6904647full }}, {{ 0xe9cd9fc5ef64792full, 0x37652fcfa25f5b70ull, 0x632a0f38bbff4142ull, 0xec8fd3b1b5a7130eull, 0xfc4064c15165a280ull, 0x909eb9d21a2becf9ull }}, {{ 0x22083dbb59ecbbd2ull, 0x29f3de1c57b99269ull, 0xdfa4983757f88c96ull, 0x3d9e44f11886be8full, 0xda83ef8d2df85909ull, 0xa633423505b741c3ull }}, {{ 0x54526951833f5634ull, 0xa386ad1b6d3fb81bull, 0xbc6df2296fb57dddull, 0x682eb16af543719eull, 0x89275b83cbb37a5cull, 0x7e009612392891a6ull }}, {{ 0x4b381d2f20795e05ull, 0x6342c312447d3111ull, 0x5c4b759e5d16eaa8ull, 0x11d2ee2d94a27033ull, 0x5b899325f502c79cull, 0xec05dcb63b95b081ull }}, {{ 0xf03123d744bdac35ull, 0xe09b9eb6ace3eaacull, 0x9af2982fa2e52a93ull, 0xb23d4dc7ce586201ull, 0x935fbf7b921bcc18ull, 0x383a9f1e53d8e50dull }}, {{ 0x61eb6668af68ba16ull, 0xc6143322c0e72ac1ull, 0x0d79f1dc5cf3a9c6ull, 0xf66509ce0f73d410ull, 0xc1bd7ad3b515f8f6ull, 0x324a372f4678f287ull }}, {{ 0xd3320016da1744dcull, 0xbcc9ff5b8907ab8dull, 0x86c3729ba184a1c3ull, 0x9ff2620c9a8648a0ull, 0x9166cc4512dbb9a5ull, 0xf6e627d8c0b9794dull }}, {{ 0x3ff400e484e8b096ull, 0x5fe3f9935a4cb38aull, 0x43a27a144f2e51a5ull, 0x3f77d47e093ed645ull, 0xae03fab2bc954078ull, 0xa4fd8e77873ebd07ull }}, {{ 0x7f8808ed3116e5d8ull, 0xbee7bfc186ff0366ull, 0xa458c4cb17cf3075ull, 0x7aae4cec5c745eb4ull, 0xcc27cafb5dd484b2ull, 0x71e790ab4873624cull }}, {{ 0xfb505943eae4fa6full, 0x750d7d8f45f62200ull, 0x6b77afeeee17e499ull, 0xcacf013b9c8bb30eull, 0xf98dedd1aa4d2ef8ull, 0x730ba6b0d481d6ffull }}, {{ 0xd1237ca72cf1c85aull, 0x9286e798bb9d5409ull, 0x32acdf554ceeedfeull, 0xec160c541d74fe90ull, 0xbf8b4a30a703d5b7ull, 0x7e7482e84d1265ffull }}, {{ 0x2b62de87c171d389ull, 0xb9450bf754254862ull, 0xfac0b95501554bf1ull, 0x38dc7b492691f1a1ull, 0x7b70e5e68626592full, 0xf08d1d1302b7fbfdull }}, {{ 0xb1dcb14d8e724358ull, 0x3cb277a94974d3d5ull, 0xcb873d520d54f771ull, 0x389cd0db81b37053ull, 0xd268fb013d7f7bd8ull, 0x658322be1b2fd7e6ull }}, {{ 0xf29eed079076a16bull, 0x5ef8ac9cde904658ull, 0xf34865348551aa6cull, 0x3620289311026345ull, 0x3819ce0c66fad672ull, 0xf71f5b6d0fde6f04ull }}, {{ 0x7a35424ba4a24e30ull, 0xb5b6be20b1a2bf79ull, 0x80d3f40d3530a83bull, 0x1d4195beaa17e0bbull, 0x31020c7c05cc6076ull, 0xa73992429eb0562aull }}, {{ 0xc61496f46e570ddbull, 0x19236d46f05b7abeull, 0x0847888413e69255ull, 0x248fd972a4eec753ull, 0xea147cd839fbc49dull, 0x883fb69a32e35da5ull }}, {{ 0xbccde58c4f668a8full, 0xfb6244c56392cb73ull, 0x52cb5528c701b752ull, 0x6d9e7e7a7153c93eull, 0x24cce07243d5ae23ull, 0x527d2205fce1a87bull }}, {{ 0x600af77b1a01699bull, 0xd1d6afb5e3bbf285ull, 0x3bf15397c611293dull, 0x4830f0c86d45dc6full, 0x7000c476a658cd62ull, 0x38e3543be0d094cfull }}, {{ 0xc06daacf040e200aull, 0x3262dd1ae5577935ull, 0x576d43edbcab9c6aull, 0xd1e967d444ba9c58ull, 0x6007aca27f7805d6ull, 0x38e14a56c825d01aull }}, {{ 0x8448ac16288d4066ull, 0xf7dca30cf56abc19ull, 0x6a44a7495eb41c25ull, 0x331e0e4aaf4a1b73ull, 0xc04cbe58fab03a64ull, 0x38cce763d17a2107ull }}, {{ 0x2ad6b8dd958483f8ull, 0xae9e5e81962b58ffull, 0x26ae88ddb309197bull, 0xff2c8eead8e51282ull, 0x82ff6f79cae247e9ull, 0x380109e62ec54a4dull }}, {{ 0xac6338a7d72d27b3ull, 0xd22fb10fddb179f7ull, 0x82d158a8fe5afed4ull, 0xf7bd952c78f2b915ull, 0x1dfa5ac1ecd6cf23ull, 0x300a62fdd3b4e707ull }}, {{ 0xbbe0368e67c38cfaull, 0x35dcea9ea8eec3acull, 0x1c2d7699ef8df450ull, 0xad67d3bcb97b3ad7ull, 0x2bc78b9340641767ull, 0xe067ddea45110647ull }}, {{ 0x56c221900da381c7ull, 0x1aa12a329953a4bfull, 0x19c6a2035b8b8b22ull, 0xc60e455f3ed04c67ull, 0xb5cb73c083e8ea0cull, 0xc40eab26b2aa3ec7ull }}, {{ 0x63954fa0886311c4ull, 0x0a4ba5f9fd446f79ull, 0x01c2542193736f55ull, 0xbc8eb5b87422fc07ull, 0x19f285852719247full, 0xa892af82faa673cdull }}, {{ 0xe3d51c4553deb1a3ull, 0x66f47bc3e4ac5abdull, 0x1197494fc2825952ull, 0x5d931934895dd846ull, 0x0379373386fb6cfdull, 0x95badb1dca808603ull }}, {{ 0xe6531ab546b2f05eull, 0x058cd5a6eebb8b6aull, 0xafe8dd1d99177d38ull, 0xa7befc0d5daa72bcull, 0x22bc280345d241e5ull, 0xd94c8f29e9053c1eull }}, {{ 0xff3f0b14c2fd63aeull, 0x378058855353722cull, 0xdf18a327faeae430ull, 0x8d75d885a8a87b5eull, 0x5b599020ba3692f8ull, 0x7cfd97a31a34592dull }}, {{ 0xf8766ecf9de5e4caull, 0x2b037535414275c1ull, 0xb6f65f8fcd2ce9e2ull, 0x869a75389694d1b4ull, 0x917fa1474621bdb5ull, 0xe1e7ec5f060b7bc5ull }}, {{ 0xb4a0541c2afaefe8ull, 0xae2294148c989993ull, 0x259fbb9e03c122d5ull, 0x42089435e1d0310full, 0xaefc4cc8bd516917ull, 0xd30f3bb63c72d5b7ull }}, {{ 0x0e434919adcd5f0dull, 0xcd59c8cd7df5ffc5ull, 0x783d542c258b5c58ull, 0x9455ca1ad221ea97ull, 0xd5daffd7652e1ae8ull, 0x3e98551e5c7c592cull }}, {{ 0x8ea0db00ca05b67eull, 0x0581d806eb9bfdb2ull, 0xb26549b977719b78ull, 0xcb59e50c355329eaull, 0x5a8dfe69f3cd0d15ull, 0x71f3532f9cdb7bc0ull }}, {{ 0x92488e07e43920e8ull, 0x371270453417e8f9ull, 0xf7f4e13eaa7012b0ull, 0xf182f27a153fa32aull, 0x898bf023860282d9ull, 0x73813fdc2092d583ull }}, {{ 0xb6d58c4eea3b4913ull, 0x26b862b408ef19bfull, 0xaf90cc72a860bae2ull, 0x6f1d78c4d47c5fadull, 0x5f7761633c191c83ull, 0x830c7e9945bc5723ull }}, {{ 0x24577b152650dac3ull, 0x8333db085957017dull, 0xdba7fc7a93c74cd5ull, 0x5726b7b04cdbbcc8ull, 0xbaa9cde058fb1d22ull, 0x1e7cf1fcb95b6761ull }}, {{ 0x6b6aced37f288b9aull, 0x20068e537d660ee3ull, 0x948fdcc9c5c90057ull, 0x67832ce300955fd8ull, 0x4aa20ac379cf2357ull, 0x30e173df3d9209d1ull }}, {{ 0x322c1442f7957404ull, 0x40418f42e5fc94e2ull, 0xcd9e9fe1b9da0367ull, 0x0b1fc0de05d5be75ull, 0xea546ba2c217616aull, 0xe8ce86b867b4622cull }}, {{ 0xf5b8ca9dabd68825ull, 0x828f989cfbddd0d5ull, 0x08323ed142842208ull, 0x6f3d88ac3a59709aull, 0x274c345b94e9ce24ull, 0x181143340d0bd5c1ull }}, {{ 0x9937ea28b6615173ull, 0x199bf621d6aa285bull, 0x51f6742c99295455ull, 0x586756ba477e6604ull, 0x88fa0b93d1220d6cull, 0xf0aca0088276598bull }}, {{ 0xfc2f25971fcd2e7bull, 0x00179d5262a59393ull, 0x33a089bdfb9d4b53ull, 0x74096346caeffc2bull, 0x59c473c62b54863bull, 0x66be4055189f7f73ull }}, {{ 0xd9d777e73e03d0c9ull, 0x00ec2537da77c3c7ull, 0x0445616bd424f13eull, 0x885de0c3ed5fd9b0ull, 0x81ac85bdb14d3e52ull, 0x036e8352f63afa81ull }}, {{ 0x826aaf086c2627ddull, 0x0939742e88ada5ceull, 0x2ab5ce3649716c6cull, 0x53aac7a745be80e0ull, 0x10bd3968ed046f39ull, 0x2251213d9e4dc90full }}, {{ 0x182ad654397d8ea2ull, 0x5c3e89d156c87a11ull, 0xab1a0e1ede6e3c38ull, 0x44abcc88b97108c1ull, 0xa7643e19422c583dull, 0x572b4c682f09da96ull }}, {{ 0xf1ac5f4a3ee79255ull, 0x9a71622d63d4c4aaull, 0xaf048d34b04e5a33ull, 0xaeb5fd573e6a5790ull, 0x89ea6cfc95bb7264ull, 0x67b0fc11d66289e2ull }}, {{ 0x70bbb8e6750bb750ull, 0x086dd5c5e64faeadull, 0xd62d840ee30f8604ull, 0xd31be56870276ba6ull, 0x632841ddd95277eeull, 0x0ce9d8b25fd962d9ull }}, {{ 0x675539009275291bull, 0x544a59baff1cd2c6ull, 0x5dc72894de9b3c28ull, 0x3f16f614618a3484ull, 0xdf9292aa7d38af54ull, 0x812276f7be7ddc7dull }}, {{ 0x09543a05b8939b11ull, 0x4ae7814df7203bc0ull, 0xa9c795d0b2105993ull, 0x76e59ccbcf660d2bull, 0xbbb9baa8e436d94aull, 0x0b58a5ad70ea9ceaull }}, {{ 0x5d4a443935c40ea6ull, 0xed0b0d0ba7425580ull, 0xa1cbda26f4a37fc0ull, 0xa4f81ff619fc83b4ull, 0x55414a98ea247ce8ull, 0x717678c6692a212bull }}, {{ 0xa4e6aa3c19a8927aull, 0x426e827488975703ull, 0x51f685858e62fd89ull, 0x71b13f9d03dd250eull, 0x548ce9f9256ce116ull, 0x6ea0b7c01ba54bb1ull }}, {{ 0x7102a6590095b8c7ull, 0x9851188d55e96624ull, 0x33a137378fdde75cull, 0x70ec7c2226a3728full, 0x4d8123bb7640cae0ull, 0x52472d811474f4edull }}, {{ 0x6a1a7f7a05d937c6ull, 0xf32af5855b1dfd6cull, 0x044c282b9eab099dull, 0x693cd95582627998ull, 0x070b65529e87ecc4ull, 0x36c7c70acc919145ull }}, {{ 0x2508fac43a7c2dbeull, 0x7fad97358f2be63cull, 0x2af991b432ae602bull, 0x1c607d5717d8bff0ull, 0x4671f53a314f3facull, 0x23cdc66bfdafacb2ull }}, {{ 0x7259cbaa48d9c96bull, 0xfcc7e81797b6fe59ull, 0xadbfb109facfc1b2ull, 0x1bc4e566ee777f61ull, 0xc0739445ed187cb9ull, 0x6609c037e8dcbef6ull }}, {{ 0x7781f4a6d881de32ull, 0xdfcf10ebed25ef7eull, 0xc97cea63cc1d90fdull, 0x15b0f60550aaf9d0ull, 0x8483cabb42f4df3bull, 0xfc61822f189f75a3ull }}, {{ 0xab138e847512adf6ull, 0xbe16a937437b5af0ull, 0xdee127e5f927a9eaull, 0xd8e99c3526adc227ull, 0x2d25eb509d90b84eull, 0xdbcf15d6f63a9863ull }}, {{ 0xaec3912c92bacb9aull, 0x6ce29c28a2d18d66ull, 0xb4cb8efbbb8ca32bull, 0x79201a1382c9958eull, 0xc37b312627a73314ull, 0x9616da659e49f3dfull }}, {{ 0xd3a3abbdbb4bf404ull, 0x40da19965c2f8602ull, 0x0ff395d5537e5fb2ull, 0xbb4104c31bdfd793ull, 0xa2cfeb7d8c87feccull, 0xdce487f82ee386bdull }}, {{ 0x4464b56950f78826ull, 0x8884ffdf99db3c1cull, 0x9f83da5542efbcf6ull, 0x508a2f9f16be6bbeull, 0x5c1f32e77d4ff3ffull, 0xa0ed4fb1d4e34368ull }}, {{ 0xabef161d29ab517eull, 0x5531febc0290591aull, 0x3b2687549d5d61a1ull, 0x2565dc36e3703572ull, 0x9937fd0ae51f87f9ull, 0x49451cf250e0a213ull }}, {{ 0xb756dd23a0b12ef0ull, 0x53f3f35819a37b0aull, 0x4f81494e25a5d04dull, 0x75fa9a24e2621676ull, 0xfc2fe26cf33b4fbbull, 0xdcb3217728c654c3ull }}, {{ 0x2964a36446ebd55eull, 0x478781710062ce6bull, 0x1b0cdd0d787a2305ull, 0x9bca0570d7d4e09full, 0xd9ded84180511d52ull, 0x9eff4ea797bf4fa7ull }}, {{ 0x9dee61eac53655a7ull, 0xcb4b0e6a03dc102full, 0x0e80a286b4c55e34ull, 0x15e436686e50c637ull, 0x82b4728f032b253aull, 0x35f9128bed791c8eull }}, {{ 0x2b4fd32bb41f5887ull, 0xf0ee90242698a1dcull, 0x910659430fb5ae0full, 0xdaea20144f27be26ull, 0x1b0c79961faf7444ull, 0x1bbab97746bb1d91ull }}, {{ 0xb11e3fb509397547ull, 0x6951a16981f65299ull, 0xaa3f7c9e9d18cc9full, 0x8d2540cb178d6d81ull, 0x0e7cbfdd3cda8ab0ull, 0x154b3ea8c34f27abull }}, {{ 0xeb2e7d125c3e94c5ull, 0x1d304e1f139f3a00ull, 0xa67ade3222f7fe3aull, 0x837487eeeb864710ull, 0x90df7ea460896ae5ull, 0xd4f07297a1178caeull }}, {{ 0x2fd0e2b79a71cfadull, 0x23e30d36c4384409ull, 0x80ccadf55dafee45ull, 0x228d4f55333ec6a6ull, 0xa8baf26bc55e2cf7ull, 0x516479ec4aeb7ed1ull }}, {{ 0xde28db2c08721cc2ull, 0x66de8423aa32a85bull, 0x07fecb95a8df4eb3ull, 0x598519540073c281ull, 0x974d7835b5adc1a7ull, 0x2decc33aed32f430ull }}, {{ 0xad988fb854751f96ull, 0x04b12964a5fa9396ull, 0x4ff3f3d898b91302ull, 0x7f32fd480485990aull, 0xe906b21918c99089ull, 0xcb3fa04d43fd89e5ull }}, {{ 0xc7f59d334c933bd9ull, 0x2eeb9dee7bc9c3e2ull, 0x1f878675f73abe14ull, 0xf7fde4d02d37fa67ull, 0x1a42f4faf7dfa55eull, 0xf07c4304a7e762fbull }}, {{ 0xcf982400fdc05677ull, 0xd5342b50d5e1a6dbull, 0x3b4b409ba84b6cc9ull, 0xafeaf021c42fc807ull, 0x069d91cdaebc75b5ull, 0x64da9e2e8f09ddcfull }}, {{ 0x1bf16809e98360abull, 0x5409b1285ad08496ull, 0x50f0861492f23fe2ull, 0xdf2d6151a9ddd048ull, 0x4227b208d35c9918ull, 0xf08a2dd19662aa16ull }}, {{ 0x176e10631f21c6acull, 0x4860eb938c252dddull, 0x29653ccdbd767ed7ull, 0xb7c5cd30a2aa22d3ull, 0x958cf458419dfaf8ull, 0x6565ca2fdfdaa4deull }}, {{ 0xea4ca3df3751c2b8ull, 0xd3c933c37973caa2ull, 0x9df4600966a0f468ull, 0x2dba03e65aa55c3full, 0xd7818b72902bcdb7ull, 0xf5f9e5debe8a70b1ull }}, {{ 0x26fe66b829319b33ull, 0x45dc05a2be85ea5dull, 0x2b8bc05e02498c18ull, 0xc94426ff8a759a7cull, 0x6b0f7279a1b60927ull, 0x9bc2fab3716866f2ull }}, {{ 0x85f003319bf00ffeull, 0xba98385b713b27a3ull, 0xb37583ac16df78f2ull, 0xdca985fb689808d9ull, 0x2e9a78c0511c5b8dull, 0x159dcb026e140578ull }}, {{ 0x3b601ff017609feeull, 0x49f233926c4f8c63ull, 0x029724b8e4bab97bull, 0x9e9f3bd215f05881ull, 0xd208b7832b1b938aull, 0xd829ee184cc836b1ull }}, {{ 0x51c13f60e9c63f4dull, 0xe37603b83b1b7be0ull, 0x19e76f38ef4b3ed0ull, 0x32385634db63750aull, 0x34572b1faf13c36aull, 0x71a34cf2ffd222f2ull }}, {{ 0x318c79c921be7902ull, 0xe29c25324f12d6c3ull, 0x030a583958f07428ull, 0xf6335e1091e29265ull, 0x0b67af3cd6c5a225ull, 0x7061017dfe355d76ull }}, {{ 0xef7cc1db5170ba14ull, 0xda1973f716bc639full, 0x1e67723d79648998ull, 0x9e01aca5b2d9b7f2ull, 0x720cd86063b8557bull, 0x63ca0eebee15a69cull }}, {{ 0x5adf92912e6744c6ull, 0x84fe87a6e35be43full, 0x300a7666bded5ff8ull, 0x2c10be78fc812f75ull, 0x748073c3e53356d4ull, 0xe5e495374cd8821cull }}, {{ 0x8cbbb9abd008afbaull, 0x31f14c84e196ea79ull, 0xe068a0036b45bfb5ull, 0xb8a770b9dd0bda93ull, 0x8d0485a6f4016449ull, 0xfaedd4290075151cull }}, {{ 0x7f5540b62056dd47ull, 0xf36cfd30cfe528bfull, 0xc416402230b97d13ull, 0x368a6742a27689c6ull, 0x822d3885880deae1ull, 0xcd4a499a0492d31dull }}, {{ 0xf954871d4364a4c7ull, 0x8241e3e81ef3977aull, 0xa8de8155e73ee2c7ull, 0x2168089a58a161c3ull, 0x15c43537508b2cccull, 0x04e6e0042dbc3f27ull }}, {{ 0xbd4d4724a1ee6fcaull, 0x1692e7113583eacdull, 0x98b10d5b0874dbcbull, 0x4e105607764dd1a4ull, 0xd9aa1429256fbff9ull, 0x3104c029c95a7786ull }}, {{ 0x6504c76e53505de1ull, 0xe1bd06ac17272c09ull, 0xf6ea858e549095eeull, 0x0ca35c4a9f0a306dull, 0x80a4c99b765d7fbdull, 0xea2f81a1dd88ab44ull }}, {{ 0xf22fca4f4123aac8ull, 0xd16242b8e787b85dull, 0xa529378f4da5db54ull, 0x7e619aea3665e44bull, 0x066fe0129fa6fd62ull, 0x25db1052a756b0adull }}, {{ 0x75dde7188b64abcdull, 0x2dd69b390b4d33abull, 0x739c2b99087a9150ull, 0xefd00d261ffaeaf4ull, 0x405ec0ba3c85e5d8ull, 0x7a8ea33a8962e6c2ull }}, {{ 0x9aab06f571eeb5fdull, 0xca62103a710404b2ull, 0x8419b3fa54c9ad21ull, 0x5e20837d3fcd2d8cull, 0x83b387465d3afa79ull, 0xc99260495ddd0396ull }}, {{ 0x0aae459673531be2ull, 0xe7d4a2486a282efaull, 0x290107c74fe0c351ull, 0xad4522e47e03c77dull, 0x250348bfa44dc8bdull, 0xdfb7c2ddaaa223e1ull }}, {{ 0x6aceb7e0813f16d5ull, 0x0e4e56d42591d5c4ull, 0x9a0a4dc91ec7a133ull, 0xc4b35cecec25cae3ull, 0x7220d77c6b09d768ull, 0xbd2d9ca8aa5566cbull }}, {{ 0x2c132ec50c76e44eull, 0x8f0f644977b259acull, 0x046709db33cc4bfeull, 0xaf01a1413979ece4ull, 0x75486adc2e626a17ull, 0x63c81e96a75603f2ull }}, {{ 0xb8bfd3b27ca4eb10ull, 0x9699eadeacf780b9ull, 0x2c06629005faf7f1ull, 0xd6104c8c3ec340e8ull, 0x94d42c99cfd824ecull, 0xe5d131e2895c2778ull }}, {{ 0x377e44f8de712e9bull, 0xe2032cb2c1ab0741ull, 0xb83fd9a03bcdaf6full, 0x5ca2fd7a73a08911ull, 0xd049be021e717140ull, 0xfa2bf2d95d998ab5ull }}, {{ 0x2aeeb1b8b06bd210ull, 0xd41fbefb90ae488cull, 0x327e80425608da5eull, 0x9e5de6c884455ab1ull, 0x22e16c15306e6c83ull, 0xc5b77c7da7ff6b1aull }}, {{ 0xad52f136e43634a0ull, 0x493d75d3a6ced579ull, 0xf8f102975c5887b4ull, 0x2fab03d52ab58aebull, 0x5cce38d3e4503d24ull, 0xb92adce88ffa2f05ull }}, {{ 0xc53d6c24ea1e0e45ull, 0xdc669a44841456c0ull, 0xb96a19e99b754d0aull, 0xdcae2653ab176d37ull, 0xa00e3846eb226369ull, 0x3baca1159fc5d635ull }}, {{ 0xb4663971252c8eb1ull, 0x9c0206ad28cb6387ull, 0x3e2503201295026cull, 0x9ecd7f44aeea442dull, 0x408e32c52f57e222ull, 0x54be4ad83dba5e18ull }}, {{ 0x0bfe3e6b73bd92e8ull, 0x181442c397f1e34dull, 0x6d721f40b9d2183eull, 0x3406f8aed526a9c4ull, 0x858dfbb3d96ed55aull, 0x4f6eec726947acf2ull }}, {{ 0x77ee70328567bd12ull, 0xf0ca9ba3ef72e102ull, 0x467538874234f26cull, 0x0845b6d45382a1acull, 0x378bd5067e545586ull, 0x1a553c781cccc179ull }}, {{ 0xaf5061f9360d62b2ull, 0x67ea14675a7cca18ull, 0xc094354896117841ull, 0x52b9244b431a50baull, 0x2b765240ef4b573cull, 0x07545cb11fff8ebcull }}, {{ 0xd923d3bc1c85daf8ull, 0x0f24cc0988dfe4f6ull, 0x85ca14d5dcaeb28eull, 0x3b3b6af09f07274bull, 0xb29f368958f1685bull, 0x494b9eeb3ffb9359ull }}, {{ 0x7b6645591d3a8db5ull, 0x976ff85f58bef1a4ull, 0x39e4d05a9ed2f98cull, 0x50522d66364788f3ull, 0xfa38215d796e1390ull, 0xdcf435307fd3c180ull }}, {{ 0xd1feb57b2449890dull, 0xea5fb3b97775706cull, 0x42f0238a343dbf7dull, 0x2335c5fe1ecb5980ull, 0xc6314da6be4cc3a3ull, 0xa18a13e4fe458f09ull }}, {{ 0x33f316cf6adf5a85ull, 0x27bd053eaa966440ull, 0x9d6163660a697aebull, 0x6019bbed33f17f02ull, 0xbded08836effa45full, 0x4f64c6f1eeb79661ull }}, {{ 0x077ee41a2cb98935ull, 0x8d623472a9dfea82ull, 0x25cde1fc681ecd2full, 0xc1015744076ef61aull, 0x6b42552255fc6bb9ull, 0x19efc573532bdfd1ull }}, {{ 0x4af4e905bf3f5c12ull, 0x85d60c7aa2bf2914ull, 0x7a0ad3dc113403dbull, 0x8a0d68a84a559d05ull, 0x309753575bdc3541ull, 0x035db6813fb6be2eull }}, {{ 0xed911a39787998b3ull, 0x3a5c7cca5b779acaull, 0xc46c4698ac082693ull, 0x64861692e7582236ull, 0xe5e94169969a148full, 0x21a9210c7d236dcdull }}, {{ 0x47ab063eb4bff702ull, 0x479cdfe792ac0bedull, 0xac3ac1f6b85181c0ull, 0xed3ce1bd09715623ull, 0xfb1c8e1fe204cd99ull, 0x509b4a7ce3624a0aull }}, {{ 0xccae3e730f7fa611ull, 0xcc20bf0bbab87744ull, 0xba4b93a3332f1182ull, 0x4460d1625e6d5d64ull, 0xcf1d8d3ed4300803ull, 0x2610e8e0e1d6e46dull }}, {{ 0xfece707e9afc7ca8ull, 0xf94776754b34a8afull, 0x46f3c45fffd6af1bull, 0xabc82dd7b045a5efull, 0x1727847449e05020ull, 0x7ca918c8d264ec4aull }}, {{ 0xf41064f20ddcde95ull, 0xbccaa094f00e96dfull, 0xc585abbffe62d717ull, 0xb5d1ca6ce2b87b58ull, 0xe78b2c8ae2c32146ull, 0xde9af7d837f13ae4ull }}, {{ 0x88a3f1748aa0b1cdull, 0x5fea45d16091e4bfull, 0xb738b57fefdc66edull, 0x1a31e840db34d177ull, 0x0b6fbd6cdb9f4cc3ull, 0xb20dae722f6c4cf1ull }}, {{ 0x56676e8d6a46f205ull, 0xbf26ba2dc5b2ef7bull, 0x283716ff5e9c0545ull, 0x05f3128890102eadull, 0x725d66409438ff9full, 0xf488d075da3b016aull }}, {{ 0x600a518626c5742full, 0x778345c9b8fd5ad1ull, 0x9226e5f9b21834b9ull, 0x3b7eb955a0a1d2c3ull, 0x77a5fe85ca39fc36ull, 0x8d58249a864e0e28ull }}, {{ 0xc0672f3d83b689d3ull, 0xab20b9e139e58c2dull, 0xb584fbc0f4f20f3eull, 0x52f33d5846523ba3ull, 0xac7bf139e643da1eull, 0x85716e093f0c8d94ull }}, {{ 0x8407d8672521623cull, 0xaf4742cc42f779c9ull, 0x1731d58991749872ull, 0x3d806572bf365465ull, 0xbcd76c42fea6852full, 0x366e4c5c767d87ceull }}, {{ 0x284e7407734dd658ull, 0xd8c89bfa9daac1dfull, 0xe7f2575fae8df47aull, 0x6703f67b781f4bf2ull, 0x606a3a9df28133d8ull, 0x204efb9ca0e74e13ull }}, {{ 0x9310884a810a5f75ull, 0x77d617ca28ab92b7ull, 0x0f7769bcd18b8cccull, 0x0627a0d2b138f77dull, 0xc4264a2b790c0674ull, 0x4315d41e49090cc1ull }}, {{ 0xbea552e90a67ba8eull, 0xae5cede596b3bb2bull, 0x9aaa21602f737ffcull, 0x3d8c483aec39aae2ull, 0xa97ee5b2ba784088ull, 0x9eda492eda5a7f91ull }}, {{ 0x72753d1a680d498full, 0xcfa14af7e3054fb5ull, 0x0aa54dc1da82ffdeull, 0x677ad24d3a40acdaull, 0x9ef4f8fb48b28552ull, 0x3486dbd48788fbb0ull }}, {{ 0x789463081084df95ull, 0x1c4cedaede351d16ull, 0x6a750992891dfeb4ull, 0x0acc37044686c084ull, 0x3591b9d0d6f93538ull, 0x0d44964d4b59d4e6ull }}, {{ 0xb5cbde50a530bbd5ull, 0x1b0148d4ae1322e0ull, 0x28925fb95b2bf309ull, 0x6bfa262ac143852cull, 0x17b1422865bc1430ull, 0x84addf04f18250feull }}, {{ 0x19f6af2673e75650ull, 0x0e0cd84eccbf5cc7ull, 0x95b7bd3d8fb77e5bull, 0x37c57dab8ca333b9ull, 0xecec9593f958c9e4ull, 0x2ecab6316f1729ecull }}, {{ 0x03a2d78087095f21ull, 0x8c807313ff799fc7ull, 0xd92d64679d2aef8eull, 0x2db6e8b37e60053full, 0x413dd7c7bd77e2eaull, 0xd3eb1dee56e7a341ull }}, {{ 0x245c6b05465db74aull, 0x7d047ec7fac03dc6ull, 0x7bc5ec0c23ad5b91ull, 0xc9251702efc0347eull, 0x8c6a6dcd66aedd25ull, 0x472f2b4f650c608cull }}, {{ 0x6b9c2e34bfa928e3ull, 0xe22cf3cfcb8269bdull, 0xd5bb387964c593aeull, 0xdb72e61d5d820cf0ull, 0x7c284a0602d4a379ull, 0xc7d7b119f27bc57dull }}, {{ 0x3419ce0f7c9b98e0ull, 0xd5c1861df3182166ull, 0x595034bdefb7c4d4ull, 0x927cfd25a7148168ull, 0xd992e43c1c4e62c2ull, 0xce6ceb0378d5b6e6ull }}, {{ 0x09020c9ade13f8bdull, 0x598f3d2b7ef14dfeull, 0x7d220f6b5d2db050ull, 0xb8e1e37886cd0e13ull, 0x7fbcea591b0fdb99ull, 0x10412e22b8592504ull }}, {{ 0x5a147e0cacc7b75full, 0x7f9863b2f56d0becull, 0xe3549a31a3c8e323ull, 0x38d2e2b544028cc2ull, 0xfd61277b0e9e9401ull, 0xa28bcd5b337b722cull }}, {{ 0x84ccec7ebfcd29baull, 0xfbf3e4fd9642773bull, 0xe14e05f065d8df62ull, 0x383cdb14a8197f9cull, 0xe5cb8ace9231c80cull, 0x5976059002d275c1ull }}, {{ 0x30013cf37e03a141ull, 0xd786f1e7de98a853ull, 0xcd0c3b63fa78b9ddull, 0x32608ece90fefc20ull, 0xf9f36c11b5f1d07aull, 0x7e9c37a01c389992ull }}, {{ 0xe00c6182ec244c86ull, 0x6b45730eb1f6933full, 0x027a51e7c8b742aaull, 0xf7c59411a9f5d948ull, 0xc38238b11b7224c5ull, 0xf21a2c411a35ffbdull }}, {{ 0xc07bcf1d396afd3aull, 0x30b67e92f3a1c07eull, 0x18c7330dd7289aa8ull, 0xadb7c8b0a39a7cd0ull, 0xa31636eb12756fbbull, 0x7505ba8b061bfd69ull }}, {{ 0x84d617243e2de443ull, 0xe720f1bd845184f3ull, 0xf7c7fe8a67960a91ull, 0xc92dd6e66408e020ull, 0x5ede252eb8965d54ull, 0x9239496e3d17e620ull }}, {{ 0x305ce76a6dcaea9cull, 0x074971672b2f3183ull, 0xadcff1680bdc69b3ull, 0xdbca64ffe858c149ull, 0xb4ad73d335dfa54full, 0xb63cde4e62eefd43ull }}, {{ 0xe3a10a2849ed2a1aull, 0x48de6e07afd7ef1full, 0xca1f6e10769c20feull, 0x95e7f1ff13778ce0ull, 0x0ec686401abc751eull, 0x1e60af0fdd55e4a5ull }}, {{ 0xe44a6592e343a504ull, 0xd8b04c4cde6f573eull, 0xe53a4ca4a21949eeull, 0xdb0f73f6c2ab80c7ull, 0x93c13e810b5c9331ull, 0x2fc6d69ea55aee72ull }}, {{ 0xeae7f7bce0a47229ull, 0x76e2fb00b0596874ull, 0xf446fe6e54fce354ull, 0x8e9a87a39ab307ceull, 0xc58c710a719dbff2ull, 0xddc46232758d5079ull }}, {{ 0x2d0fad60c66c759eull, 0xa4ddce06e37e1491ull, 0x8ac5f04f51e0e14cull, 0x92094c640afe4e15ull, 0xb77c6a6870297f79ull, 0xa9abd5f8978524c1ull }}, {{ 0xc29cc5c7c03c9829ull, 0x70aa0c44e2eccdabull, 0x6bbb631932c8ccfeull, 0xb45cfbe86def0cd7ull, 0x2adc2814619efabfull, 0xa0b65bb5eb336f91ull }}, {{ 0x9a1fb9cd825df19eull, 0x66a47ab0dd4008b5ull, 0x3551defbfbd801f0ull, 0x0ba1d7144b56806aull, 0xac9990cbd035cb7dull, 0x471f951b30025babull }}, {{ 0x053d420717ab7031ull, 0x026ccae8a4805718ull, 0x1532b5d7d6701364ull, 0x745266caf1610426ull, 0xbdffa7f62219f2e2ull, 0xc73bd30fe01794b4ull }}, {{ 0x34649446ecb261e9ull, 0x183fed166d0366f0ull, 0xd3fb1a6e6060c1e8ull, 0x8b3803ed6dca297cull, 0x6bfc8f9d55037cd8ull, 0xc8563e9ec0ebcf0full }}, {{ 0x0bedcac53ef7d31full, 0xf27f42e042220562ull, 0x47cf084fc3c79310ull, 0x7030274649e59ee0ull, 0x37dd9c255222e075ull, 0xd35e72338936169aull }}, {{ 0x7749ebb475ae3f34ull, 0x78f89cc2955435d4ull, 0xce16531da5cbbea9ull, 0x61e188bee2f834c2ull, 0x2ea81975355cc496ull, 0x41b076035c1ce206ull }}, {{ 0xa8e3350c98ce780bull, 0xb9b61f99d54a1a4cull, 0x0cdf3f2879f5729eull, 0xd2cf5774ddb20f9cull, 0xd290fe94159faddfull, 0x90e49c219920d43dull }}, {{ 0x98e0127df810b06cull, 0x411d3c0254e506feull, 0x80b87794c3967a33ull, 0x3c196a90a8f49c18ull, 0x39a9f1c8d83ccabeull, 0xa8ee194ffb484a6aull }}, {{ 0xf8c0b8ebb0a6e437ull, 0x8b24581750f245f1ull, 0x0734abcfa3e0c600ull, 0x58fe29a6998e18f5ull, 0x40a371d8725feb6eull, 0x994cfd1fd0d2e826ull }}, {{ 0xb7873934e684ea21ull, 0x6f6b70e92976bb73ull, 0x480eb61c66c7bc05ull, 0x79eda081ff8cf992ull, 0x8662727477bf324full, 0xfd01e33e283d117eull }}, {{ 0x2b483c110131254bull, 0x5a32691b9ea35285ull, 0xd0931d1c03cd5836ull, 0xc3484513fb81bfb6ull, 0x3fd8788cad77f71aull, 0xe212e06d9262aef1ull }}, {{ 0xb0d258aa0beb74f0ull, 0x85f81b1432613933ull, 0x25bf23182605721full, 0xa0d2b2c7d3117d24ull, 0x7e74b57ec6afa70bull, 0xd4bcc447b7dad56cull }}, {{ 0xe83776a47732915eull, 0x3bb10ec9f7cc3c04ull, 0x79775ef17c36753bull, 0x483afbce3eaee369ull, 0xf08f16f3c2dc8674ull, 0x4f5faacd2e8c563cull }}, {{ 0x122aa26ca7f9adabull, 0x54ea93e3adfa5831ull, 0xbea9b56eda209450ull, 0xd24dd60e72d4e21eull, 0x6596e5859c9d408aull, 0x19bcac03d17b5e61ull }}, {{ 0xb5aa583e8fc0c8a9ull, 0x5129c6e4cbc771eaull, 0x72a116548545cb23ull, 0x370a5c907c50d533ull, 0xf7e4f7381e24856cull, 0x015eb8262ed1afcdull }}, {{ 0x18a772719d87d69bull, 0x2ba1c4eff5ca732bull, 0x7a4adf4d34b9ef61ull, 0x26679da4db285402ull, 0xaef1a8312d6d363aull, 0x0db3317dd430de0bull }}, {{ 0xf68a7870274e6213ull, 0xb451b15f99e87faeull, 0xc6ecb9040f4359cbull, 0x800c28708f934818ull, 0xd57091ebc6441e45ull, 0x88ffeeea49e8ac74ull }}, {{ 0xa168b461890fd4bdull, 0x0b30edbc0314fcd5ull, 0xc53f3a2898a181f5ull, 0x007994659bc0d0f7ull, 0x5665b335bea92eb7ull, 0x59ff5526e316bc90ull }}, {{ 0x4e170bcf5a9e4f60ull, 0x6fe949581ed1e058ull, 0xb4784595f64f1392ull, 0x04bfcbf8158829adull, 0x5ff90019729bd326ull, 0x83f95384dee35da3ull }}, {{ 0x0ce676198a2f19c0ull, 0x5f1cdd713432c373ull, 0x0cb2b7db9f16c3b8ull, 0x2f7df7b0d751a0c9ull, 0xbfba00fe7a163f7cull, 0x27bd4330b4e1a861ull }}, {{ 0x81009cff65d7017cull, 0xb720a66c09fba27eull, 0x7efb2e9436e3a533ull, 0xdaebace8693047daull, 0x7d4409f0c4de7ad9ull, 0x8d649fe710d093d1ull }}, {{ 0x0a0621f9fa660edaull, 0x2746803863d458f1ull, 0xf5cfd1ca24e47405ull, 0x8d34c1141be2ce88ull, 0xe4a86367b0b0cc82ull, 0x85ee3f06a825c62eull }}, {{ 0x643d53c3c7fc9484ull, 0x88c10233e64b796aull, 0x9a1e31e570ec8833ull, 0x840f8ac916dc1159ull, 0xee93e20ce6e7fd19ull, 0x3b4e76429179bdd4ull }}, {{ 0xea6545a5cfddcd29ull, 0x578a1606fef2be27ull, 0x052df2f6693d5203ull, 0x289b6bdae498ad80ull, 0x51c6d481050fe2ffull, 0x51109e99aec16a51ull }}, {{ 0x27f4b87a1eaa039eull, 0x6b64dc45f57b6d8full, 0x33cb7da01c653421ull, 0x9612368cedf6c700ull, 0x31c44d0a329eddf7ull, 0x2aa63200d38e272dull }}, {{ 0x8f8f34c532a4242eull, 0x31f09abb96d24797ull, 0x05f2e8411bf4094eull, 0xdcb621814ba3c602ull, 0xf1ab0265fa34ababull, 0xaa7df408438d87c3ull }}, {{ 0x9b980fb3fa6969d1ull, 0xf3660b53e436cbebull, 0x3b7d128b17885d0dull, 0x9f1d4f0cf465bc14ull, 0x70ae17fbc60eb4b6ull, 0xa8eb8852a3874da7ull }}, {{ 0x13f09d07c81e2229ull, 0x81fc7146ea23f734ull, 0x52e2b96eeb53a28bull, 0x372516818bf958caull, 0x66ccefd5bc930f22ull, 0x9933533a6349088aull }}, {{ 0xc766224dd12d5598ull, 0x13dc6cc52567a808ull, 0x3cdb3e5531445973ull, 0x2772e10f77bd77e7ull, 0x04015e595dbe9756ull, 0xfc014047e0da5568ull }}, {{ 0xc9fd570a2bc557ecull, 0xc69c3fb3760c9057ull, 0x60906f53ecab7e7eull, 0x8a7cca9aad66af08ull, 0x280daf7da971e95dull, 0xd80c82cec8875610ull }}, {{ 0xe3e56665b5b56f37ull, 0xc21a7d029c7da36dull, 0xc5a459473eb2f0f3ull, 0x68dfea0ac602d653ull, 0x9088dae89e731da7ull, 0x707d1c13d5495ca1ull }}, {{ 0xe6f5fff919165821ull, 0x9508e21a1ce8624aull, 0xb86b7cc872fd6985ull, 0x18bf246bbc1c5f45ull, 0xa5588d16307f288aull, 0x64e318c654dd9e4full }}, {{ 0x059bffbafadf714full, 0xd258d5052113d6edull, 0x3432dfd47de61f37ull, 0xf7776c35591bb8b9ull, 0x757582dde4f79564ull, 0xf0def7bf50a82f1cull }}, {{ 0x3817fd4dccba6d15ull, 0x377852334ac66542ull, 0x09fcbe4ceafd382eull, 0xaaaa3a157b15373cull, 0x96971caaf1abd5f1ull, 0x68b5ad792691d71cull }}, {{ 0x30efe509ff4842d4ull, 0x2ab33600ebbff496ull, 0x63df6f012de431ceull, 0xaaa644d6ced42858ull, 0xe1e71ead70b65b70ull, 0x1718c6bb81b2671dull }}, {{ 0xe95ef263f8d29c44ull, 0xab001c09357f8dddull, 0xe6ba560bcae9f20dull, 0xaa7eb06414499373ull, 0xd30732c6671f9266ull, 0xe6f7c35310f8072aull }}, {{ 0x1db577e7b83a1aa6ull, 0xae01185c16fb8aabull, 0x03475c75ed237488ull, 0xa8f2e3e8cadfc287ull, 0x3e47fbc0073bb802ull, 0x05ada13ea9b047acull }}, {{ 0x2916af0d32450a7cull, 0xcc0af398e5d36aafull, 0x20c99c9b43628d56ull, 0x997ce717ecbd9946ull, 0x6ecfd5804855301aull, 0x38c84c72a0e2ccbaull }}, {{ 0x9ae2d683f6b268d4ull, 0xf86d83f8fa422ad7ull, 0x47e01e10a1d98563ull, 0xfee106ef3f67fcbdull, 0x541e5702d353e109ull, 0x37d2fc7a48dbff48ull }}, {{ 0x0cdc6127a2f81843ull, 0xb44727b9c695ac6cull, 0xcec12ca6527f35e7ull, 0xf4ca45587a0fdf64ull, 0x492f661c4146ca63ull, 0x2e3ddcc6d897f8d3ull }}, {{ 0x809bcb8c5db0f2a0ull, 0x0ac78d41c1d8bc38ull, 0x138bbe7f38f81b0dull, 0x8fe6b574c49eb9f0ull, 0xdbd9fd1a8cc3e7e7ull, 0xce6a9fc475efb840ull }}, {{ 0x0615f37ba8e97a42ull, 0x6bcb849192775a35ull, 0xc37570f839b10e82ull, 0x9f03168fae334360ull, 0x9683e3097fa70f0bull, 0x102a3dac9b5d3288ull }}, {{ 0x3cdb82d4991ec698ull, 0x35f32dafb8a98612ull, 0xa29669b240ea9118ull, 0x361ee19cce00a1c7ull, 0xe126de5efc869674ull, 0xa1a668be11a3f955ull }}, {{ 0x60931c4dfb33c1f1ull, 0x1b7fc8dd369f3cb6ull, 0x59e020f68929aaf2ull, 0x1d34d0200c0651ccull, 0xcb84afb5dd41e08aull, 0x5080176cb067bd5aull }}, {{ 0xc5bf1b0bd0059369ull, 0x12fdd8a422385f1full, 0x82c149a15ba0ad75ull, 0x24102140783f31fbull, 0xf32edd1aa492c565ull, 0x2500ea3ee40d658bull }}, {{ 0xb9770e762037c216ull, 0xbdea76695633b73dull, 0x1b8ce04d9446c692ull, 0x68a14c84b277f3d3ull, 0x7fd4a30a6dbbb5f3ull, 0x72092674e885f777ull }}, {{ 0x3ea6909d422d94d8ull, 0x6b28a01d5e052869ull, 0x1380c307cac3c1bbull, 0x164cfd2ef8af863full, 0xfe4e5e6849551b82ull, 0x745b8091153baaaaull }}, {{ 0x7281a62495c7d06dull, 0x2f964125ac33941cull, 0xc3079e4deba59152ull, 0xdf01e3d5b6db3e76ull, 0xef0fb012dd531314ull, 0x8b9305aad454aaadull }}, {{ 0x79107d6dd9ce243dull, 0xdbde8b78ba03c91cull, 0x9e4c2f0b3477ad35ull, 0xb612e659249070a3ull, 0x569ce0bca53ebed0ull, 0x73be38ac4b4eaacbull }}, {{ 0xbaa4e64a820d6a65ull, 0x96b172b74425db1cull, 0x2ef9d6700cacc41aull, 0x1cbcff7b6da46664ull, 0x6220c75e74737427ull, 0x856e36baf112abf1ull }}, {{ 0x4a70fee9148627f0ull, 0xe2ee7b28a97a8f1full, 0xd5c260607ebfa909ull, 0x1f61fad2486bffe9ull, 0xd547c9b08c828987ull, 0x364e234d6abab76dull }}, {{ 0xe869f51acd3d8f63ull, 0xdd50cf969ec99738ull, 0x5997c3c4f37c9a62ull, 0x39d3cc36d437ff22ull, 0x54cde0e57d195f47ull, 0x1f0d61062b4b2a4aull }}, {{ 0x1423930c046799deull, 0xa5281be233dfe839ull, 0x7feda5b182de07dcull, 0x4245fa244a2ff757ull, 0x500ac8f6e2fdb8c8ull, 0x3685ca3db0efa6e7ull }}, {{ 0xc963be782c0c02abull, 0x739116d606bf123aull, 0xff4878ef1cac4e9eull, 0x96bbc56ae5dfa96aull, 0x206bd9a4dde937d2ull, 0x2139e668e95c8509ull }}, {{ 0xdde570b1b8781aabull, 0x83aae45c4376b64bull, 0xf8d4b9571ebb1230ull, 0xe355b62cfabc9e2dull, 0x44368070ab1c2e39ull, 0x4c4300191d9d325bull }}, {{ 0xaaf666f134b10aabull, 0x24aceb9aa2a31ef6ull, 0xb84f3d67334eb5e5ull, 0xe1591dc1cb5e2dcbull, 0xaa210466af19ce42ull, 0xfa9e00fb2823f790ull }}, {{ 0xada0056c0eea6aaaull, 0x6ec1340a5a5f35a2ull, 0x3318660801131af3ull, 0xcd7b2991f1adc9f5ull, 0xa54a2c02d7020e9cull, 0xca2c09cf9167aba6ull }}, {{ 0xc840363895282aa4ull, 0x538c086787b8185aull, 0xfef3fc500abf0d82ull, 0x06cf9fb370c9e393ull, 0x74e5b81c66149220ull, 0xe5b8621bae0cb482ull }}, {{ 0xd2821e35d391aa6aull, 0x4378540b4d30f38bull, 0xf587db206b768717ull, 0x441c3d0267e2e3c7ull, 0x90f9311bfccdb540ull, 0xf933d514cc7f0d18ull }}, {{ 0x39152e1a43b0a822ull, 0xa2b3487103e98376ull, 0x974e8f4432a146e8ull, 0xa91a62180edce5cfull, 0xa9bbeb17e0091482ull, 0xbc0652cffcf682f5ull }}, {{ 0x3ad3cd06a4e6914full, 0x5b00d46a271f229eull, 0xe91198a9fa4cc516ull, 0x9b07d4f094a0fa1bull, 0xa1572eeec05acd1aull, 0x583f3c1fe1a11d98ull }}, {{ 0x4c4602427101ad18ull, 0x8e084c2587375a2eull, 0x1aaff6a3c6ffb2dfull, 0x0e4e5165ce49c517ull, 0x4d67d553838c030aull, 0x7278593ed04b27f6ull }}, {{ 0xfabc16986a10c2f0ull, 0x8c52f977482985ceull, 0x0adfa265c5fcfcbbull, 0x8f0f2dfa0ee1b2e7ull, 0x060e554323781e64ull, 0x78b37c7422ef8f9full }}, {{ 0xcb58e1f424a79d5full, 0x7b3dbea8d19f3a15ull, 0x6cbc57f9bbe1df53ull, 0x9697cbc494d0fd06ull, 0x3c8f549f62b12fedull, 0xb702dc895d5b9c36ull }}, {{ 0xf178d3896e8c25b2ull, 0xd0697298303844d9ull, 0x3f5b6fc156d2b942ull, 0xe1edf5add029e240ull, 0x5d994e39daebdf47ull, 0x261c9d5da5941a1eull }}, {{ 0x6eb8435e517978f1ull, 0x241e79f1e232b083ull, 0x79925d8d643b3c9cull, 0xd34b98ca21a2d682ull, 0xa7fd0e428d36b8ceull, 0x7d1e25a877c9052full }}, {{ 0x5332a1af2ebeb967ull, 0x6930c372d5fae522ull, 0xbfb7a785ea505e19ull, 0x40f3f7e5505c6118ull, 0x8fe28e9984233814ull, 0xe32d7894adda33dcull }}, {{ 0x3ffa50d7d3733e05ull, 0x1be7a27c5bccf357ull, 0x7d2c8b3b2723acfeull, 0x8987aef5239bcaf7ull, 0x9ed991ff296030caull, 0xdfc6b5ceca86069dull }}, {{ 0x7fc7286e42806c33ull, 0x170c58db96018168ull, 0xe3bd704f8764c1edull, 0x5f4cd5936415edaaull, 0x347fb3f79dc1e7e9ull, 0xbdc31a13e93c4228ull }}, {{ 0xfdc7944e990439faull, 0xe67b7893dc0f0e14ull, 0xe566631b49ef9342ull, 0xb90057c1e8db48acull, 0x0cfd07ac29930f1dull, 0x699f04c71c5a9592ull }}, {{ 0xe9cbcb11fa2a43c5ull, 0x00d2b5c698968cd1ull, 0xf5ffdf10e35bc09dull, 0x3a036d931890d6c0ull, 0x81e24cb99fbe9729ull, 0x20362fc71b89d7b4ull }}, {{ 0x21f5eeb3c5a6a5b0ull, 0x083b19c1f5e18033ull, 0x9bfeb6a8e1958622ull, 0x442247bef5a86389ull, 0x12d6ff403d71e79cull, 0x421dddc713626d0dull }}, {{ 0x539b5305b88278e4ull, 0x524f01939acf01ffull, 0x17f32298cfd73d54ull, 0xa956cd759893e360ull, 0xbc65f88266730c1aull, 0x952aa9c6c1d84282ull }}, {{ 0x44113e393518b8e8ull, 0x37160fc40c1613f9ull, 0xef7f59f81e68654bull, 0x9d640697f5c6e1c0ull, 0x5bfbb518007e790aull, 0xd3aaa1c39272991bull }}, {{ 0xa8ac6e3c12f73910ull, 0x26dc9da878dcc7bcull, 0x5af983b13013f4f0ull, 0x25e841ef99c4d189ull, 0x97d512f004f0ba6aull, 0x44aa51a3b879fb11ull }}, {{ 0x96bc4e58bda83a9eull, 0x849e2894b89fcd5eull, 0x8dbf24ebe0c79161ull, 0x7b12935c01b02f5dull, 0xee52bd6031674825ull, 0xaea7306534c3ceafull }}, {{ 0xe35b0f7768924a2dull, 0x2e2d95cf363e05b1ull, 0x89777136c7cbadcfull, 0xceb9c19810e1d9a7ull, 0x4f3b65c1ee08d176ull, 0xd287e3f40fa612dfull }}, {{ 0xe18e9aaa15b6e5c5ull, 0xcdc7da181e6c38f2ull, 0x5eaa6c23cdf4ca17ull, 0x13418ff0a8d2808bull, 0x1851f9934c582ea4ull, 0x394ee7889c7cbcb9ull }}, {{ 0xcf920aa4d924f9b2ull, 0x09ce84f1303a397cull, 0xb2a839660b8fe4eeull, 0xc08f9f6698390571ull, 0xf333bfc0fb71d268ull, 0x3d150b561cdf5f3aull }}, {{ 0x1bb46a707b71c0f1ull, 0x6211316be2463ee0ull, 0xfa923dfc739ef14cull, 0x859c3a01f23a3670ull, 0x80057d89d2723817ull, 0x62d2715d20b9b84dull }}, {{ 0x150c2864d2718965ull, 0xd4abee36d6be74c1ull, 0xc9b66bdc84356cfbull, 0x381a441376462069ull, 0x0036e762387630ebull, 0xdc386da347413307ull }}, {{ 0xd27993f0386f5df2ull, 0x4eb74e2463708f8aull, 0xe120369d2a1641d6ull, 0x3106a8c29ebd4421ull, 0x022509d6349de930ull, 0x9a344860c88bfe46ull }}, {{ 0x38bfc7623459ab78ull, 0x13290d6be2659b6cull, 0xcb422223a4de925full, 0xea42979a3364a952ull, 0x1572625e0e2b1be1ull, 0x060ad3c7d577eebcull }}, {{ 0x377dc9d60b80b2aeull, 0xbf9a8636d7f8123aull, 0xf095556470b1b7b6ull, 0x2699ec0601ee9d3bull, 0xd677d7ac8daf16d3ull, 0x3c6c45ce56af5358ull }}, {{ 0x2ae9e25c7306fac8ull, 0x7c093e246fb0b646ull, 0x65d555ec66f12d23ull, 0x8203383c13522457ull, 0x60ae6cbd88d6e43full, 0x5c3aba0f62d94178ull }}, {{ 0xad22d79c7e45cbd2ull, 0xd85c6d6c5ce71ebdull, 0xfa555b3c056bc362ull, 0x14203258c1356b69ull, 0xc6d03f675864ea7bull, 0x9a4b4499dc7c8eb3ull }}, {{ 0xc35c6c1ceeb9f630ull, 0x739c463ba1073368ull, 0xc75590583635a1dcull, 0xc941f7778c163223ull, 0xc4227a0973f128ceull, 0x06f0ae029cdd9305ull }}, {{ 0xa19c392153439ddcull, 0x841abe544a480217ull, 0xc957a3721e18529cull, 0xdc93aaab78ddf565ull, 0xa958c45e876b9813ull, 0x4566cc1a20a7be39ull }}, {{ 0x501a3b4d40a42a9bull, 0x290b6f4ae6d014ecull, 0xdd6c62752cf33a1dull, 0x9dc4aab2b8ab95f9ull, 0x9d77abb14a33f0c6ull, 0xb603f905468d6e40ull }}, {{ 0x210651048669aa12ull, 0x9a7258ed0420d13bull, 0xa63bd893c1804523ull, 0x29aeaafb36b3dbc2ull, 0x26acb4ece60767c2ull, 0x1c27ba34c1864e86ull }}, {{ 0x4a3f2a2d4020a4b3ull, 0x0877794229482c4full, 0x7e5675c58f02b364ull, 0xa0d2add02306959aull, 0x82bf1140fc4a0d95ull, 0x198d460f8f3f113dull }}, {{ 0xe677a5c481466ef9ull, 0x54aabc959cd1bb18ull, 0xef6099b7961b01e8ull, 0x483aca215e41d808ull, 0x1b76ac89dae487d8ull, 0xff84bc9b9876ac67ull }}, {{ 0x00ac79ad0cc055bcull, 0x4eab5dd820314ef9ull, 0x59c6012bdd0e1313ull, 0xd24be54dae927059ull, 0x12a2bd628ced4e72ull, 0xfb2f5e13f4a2bc07ull }}, {{ 0x06bcc0c27f835958ull, 0x12b1aa7141ed15baull, 0x81bc0bb6a28cbec1ull, 0x36f6f508d1b8637dull, 0xba5b65d98145107cull, 0xcfd9acc78e5b5846ull }}, {{ 0x435f8798fb217d6cull, 0xbaf0a86c9342d944ull, 0x11587522597f738aull, 0x25a592583133e2e7ull, 0x4791fa7f0cb2a4daull, 0x1e80bfcb8f9172c3ull }}, {{ 0xa1bb4bf9cf4ee633ull, 0x4d66943dc09c7caaull, 0xad7493577efa836bull, 0x7877b771ec06dd06ull, 0xcbb3c8f67efa7085ull, 0x31077df39bae7ba0ull }}, {{ 0x5150f7c21914fdffull, 0x0601ca69861cdeaaull, 0xc68dc16af5c92231ull, 0xb4ad2a733844a242ull, 0xf505d9a0f5c86536ull, 0xea4aeb8414d0d447ull }}, {{ 0x2d29ad94fad1ebf6ull, 0x3c11e81f3d20b2a7ull, 0xc1898e2d99db55eaull, 0x0ec3a88032ae569bull, 0x923a804999d3f423ull, 0x26ed3328d0284acfull }}, {{ 0xc3a0c7d1cc3337a0ull, 0x58b311386346fa87ull, 0x8f5f8dc802915b26ull, 0x93a49501facf6215ull, 0xb64902e00247895eull, 0x8543ff982192ec1bull }}, {{ 0xa447ce31fa002c3eull, 0x76feac33e0c5c94dull, 0x99bb89d019ad8f7full, 0xc46dd213cc19d4d7ull, 0x1eda1cc016cb5db1ull, 0x34a7fbf14fbd3915ull }}, {{ 0x6ace0df3c401ba71ull, 0xa5f2ba06c7b9dd08ull, 0x0153622100c79afaull, 0xac4a34c5f902506cull, 0x34851f80e3f1a8f1ull, 0x0e8fd76d1d643ad3ull }}, {{ 0x2c0c8b85a8114868ull, 0x7b7b4443cd42a254ull, 0x0d41d54a07cc0dcaull, 0xbae60fbbba172438ull, 0x0d333b08e7709970ull, 0x919e6a4325ea4c40ull }}, {{ 0xb87d733890acd410ull, 0xd2d0aaa6049a5749ull, 0x849254e44df889e8ull, 0x4cfc9d5544e76a30ull, 0x84004e590a65fe67ull, 0xb030269f7b26fa80ull }}, {{ 0x34e68035a6c048a0ull, 0x3c26aa7c2e0768e1ull, 0x2db750eb0bb56318ull, 0x01de2554b10a25e5ull, 0x28030f7a67fbf009ull, 0xe1e1823acf85c905ull }}, {{ 0x110102188382d63eull, 0x5982a8d9cc4a18ccull, 0xc929292e7515def2ull, 0x12ad754eea657af3ull, 0x901e9ac80fd7605aull, 0xd2cf164c1b39da33ull }}, {{ 0xaa0a14f5231c5e6cull, 0x7f1a9881fae4f7f8ull, 0xdb9b9bd092dab577ull, 0xbac6951527f6cd85ull, 0xa1320bd09e69c384ull, 0x3c16def910428603ull }}, {{ 0xa464d1935f1bb03aull, 0xf709f513ccf1afb6ull, 0x94141625bc8b16aaull, 0x4bc1d2d38fa4073aull, 0x4bf476263021a32full, 0x58e4b5baa2993c24ull }}, {{ 0x6bf02fc1b714e243ull, 0xa66392c60170dd22ull, 0xc8c8dd795d6ee2adull, 0xf5923c439c684849ull, 0xf78c9d7de1505fd8ull, 0x78ef194a59fc596aull }}, {{ 0x3761dd9126d0d69aull, 0x7fe3bbbc0e68a358ull, 0xd7d8a6bda654dac8ull, 0x97b65aa41c12d2e1ull, 0xab7e26eacd23be79ull, 0xb956fce783db7e2dull }}, {{ 0x29d2a7ab84286207ull, 0xfee5555890166172ull, 0x6e7683687f508bd4ull, 0xed1f8a6918bc3cd2ull, 0xb2ed852c036570bfull, 0x3d65e10b2692edc8ull }}, {{ 0xa23a8cb32993d44bull, 0xf4f55575a0dfce75ull, 0x50a12214f9257651ull, 0x433b681af75a6038ull, 0xfd4733b821f6677full, 0x65faca6f81bd49d6ull }}, {{ 0x56497eff9fc64aeeull, 0x9195569848be1098ull, 0x264b54d1bb769f33ull, 0xa052110da987c233ull, 0xe4c8053153a00af8ull, 0xfbcbe85b1164e265ull }}, {{ 0x5edef5fc3dbeed48ull, 0xafd561f2d76ca5f3ull, 0x7ef1503152a23803ull, 0x4334aa889f4d95ffull, 0xefd033ed44406db6ull, 0xd5f7138eadf0d7faull }}, {{ 0xb4b59bda697544ccull, 0xde55d37c6a3e7b81ull, 0xf56d21ed3a563024ull, 0xa00ea9563907dbfaull, 0x5e220744aa84491eull, 0x5ba6c392cb686fcdull }}, {{ 0x0f1816881e94aff5ull, 0xaf5a42dc2670d311ull, 0x96435344475de170ull, 0x40929d5e3a4e97cdull, 0xad5448aea92adb32ull, 0x9483a3bbf2145e05ull }}, {{ 0x96f0e15131cedf91ull, 0xd9869c9980683eaaull, 0xdea140aac9aace66ull, 0x85ba25ae4711ee07ull, 0xc54ad6d29bac8ff6ull, 0xcd24655774cbac38ull }}, {{ 0xe568cd2bf214bbacull, 0x7f421dff041272a9ull, 0xb24c86abe0ac1004ull, 0x394578cec6b34c4eull, 0xb4ec643a14bd9fa1ull, 0x036bf56a8ff4ba37ull }}, {{ 0xf61803b774cf54b8ull, 0xf8952bf628b87aa2ull, 0xf6fd42b6c6b8a02cull, 0x3cb6b813c300fb12ull, 0x113bea44cf683c4cull, 0x223796299f8f462dull }}, {{ 0x9cf0252a90194f35ull, 0xb5d3b79d9734ca5dull, 0xa5e49b23c33641c1ull, 0x5f2330c59e09cebdull, 0xac5726b01a125afaull, 0x562bdda03b98bdc2ull }}, {{ 0x216173a9a0fd1811ull, 0x1a452c27e80fe7a8ull, 0x7aee0f65a01e9191ull, 0xb75fe7b82c621368ull, 0xbb6782e104b78dc7ull, 0x5db6a84253f7699aull }}, {{ 0x4dce84a049e2f0a8ull, 0x06b3b98f109f0c91ull, 0xcd4c99f84131afabull, 0x29bf0d31bbd4c214ull, 0x520b1cca2f2b89cdull, 0xa922929747aa200bull }}, {{ 0x0a112e42e2dd6692ull, 0x43053f96a6367dadull, 0x04fe03b28bf0dcaeull, 0xa17683f1564f94d0ull, 0x346f1fe5d7b36203ull, 0x9b59b9e8cca54071ull }}, {{ 0x64abce9cdca601b0ull, 0x9e347be27e20e8c2ull, 0x31ec24f977689eceull, 0x4ea1276d5f1bd020ull, 0x0c573efa6d01d424ull, 0x11814317fe74846cull }}, {{ 0xeeb612209e7c10e3ull, 0x2e0cd6d8ed491797ull, 0xf33971beaa163412ull, 0x124b8a45b7162141ull, 0x7b6875c84212496bull, 0xaf0c9eeff08d2c38ull }}, {{ 0x531cb54630d8a8dfull, 0xcc80647944daebefull, 0x803e7172a4de08b5ull, 0xb6f366b926dd4c93ull, 0xd21499d294b6de2eull, 0xd67e355f6583ba34ull }}, {{ 0x3f1f14bde87698b9ull, 0xfd03ecbcb08d3759ull, 0x02706e7a70ac5719ull, 0x2582033b84a4fdc3ull, 0x34ce0239cf24add3ull, 0x60ee15b9f7254610ull }}, {{ 0x7736cf6b14a1f736ull, 0xe2273f5ee584297cull, 0x186450c866bb6703ull, 0x771420532e71e99eull, 0x100c1642176eca3full, 0xc94cd943a774bca2ull }}, {{ 0xa8241a2ece53a81aull, 0xd58879b4f7299edcull, 0xf3eb27d403520626ull, 0xa6c9433fd073202cull, 0xa078de94ea53e67aull, 0xdd007ca48a8f5e54ull }}, {{ 0x916905d40f449105ull, 0x5754c111a7a0349eull, 0x872f8e4821343d84ull, 0x83dca07e247f41c1ull, 0x44b8b1d1274700caull, 0xa204de6d6999af4eull }}, {{ 0xae1a3a4898adaa2eull, 0x694f8ab08c420e31ull, 0x47db8ed14c0a672bull, 0x269e44ed6cf8918full, 0xaf36f22b88c607e9ull, 0x5430b0462000d90eull }}, {{ 0xcd0646d5f6c8a5c9ull, 0x1d1b6ae57a948df0ull, 0xce93942cf86807b2ull, 0x822eb14641b5af98ull, 0xd82575b357bc4f1bull, 0x49e6e2bd40087a92ull }}, {{ 0x023ec45ba3d679d6ull, 0x23122cf6c9cd8b68ull, 0x11c3c9c1b4104cf5ull, 0x15d2ecbe9118dbf8ull, 0x717699016d5b1713ull, 0xe304db648054c9bcull }}, {{ 0x1673ab946660c25bull, 0x5eb5c1a3e2077210ull, 0xb1a5e19108a30193ull, 0xda3d3f71aaf897b0ull, 0x6ea1fa0e458ee6beull, 0xde3091ed034fe15cull }}, {{ 0xe084b3cbffc79791ull, 0xb3199066d44a74a0ull, 0xf07acfaa565e0fc1ull, 0x86647a70adb5ece6ull, 0x5253c48eb7950374ull, 0xade5b342211ecd9cull }}, {{ 0xc52f05f7fdcbeba6ull, 0xfeffa4044ae88e48ull, 0x64cc1ca75fac9d90ull, 0x3fecc866c91b4105ull, 0x3745ad932bd2228dull, 0xcaf900954b34081bull }}, {{ 0xb3d63bafe9f7347eull, 0xf5fc682aed158ed7ull, 0xeff91e89bcbe27a9ull, 0x7f3fd403db108a35ull, 0x28b8c7bfb6355984ull, 0xedba05d4f0085110ull }}, {{ 0x065e54df23a80ce9ull, 0x9bdc11ad42d7946dull, 0x5fbb31615f6d8ca3ull, 0xf87e48268ea5661bull, 0x9737cd7d1e157f2cull, 0x49443a5160532aa1ull }}, {{ 0x3faf50b76490811dull, 0x1698b0c49c6bcc42ull, 0xbd4fedcdba477e64ull, 0xb4eed1819275fd11ull, 0xe82e06e32cd6f7c1ull, 0xdcaa472dc33faa4full }}, {{ 0x7cd92729eda50b24ull, 0xe1f6e7ae1c35fa96ull, 0x651f4a0946caefe8ull, 0x11542f0fb89be2b1ull, 0x11cc44dfc065ad91ull, 0x9ea6c7c9a07ca71full }}, {{ 0xe07b87a348726f69ull, 0xd3a50ccd1a1bc9e0ull, 0xf338e45cc3ed5f18ull, 0xad49d69d3616daedull, 0xb1fab0bd83f8c7aaull, 0x3283cde044de8736ull }}, {{ 0xc4d34c60d4785a19ull, 0x447280030515e2c8ull, 0x8038eb9fa745b6f8ull, 0xc4e262241ce48d4bull, 0xf3cae76727b7ccaaull, 0xf9260ac2b0b14822ull }}, {{ 0xb040fbc84cb384feull, 0xac79001e32dadbd7ull, 0x0239343c88b925b2ull, 0xb0d7d56920ed84f3ull, 0x85ed0a078d2dfeabull, 0xbb7c6b9ae6ecd15dull }}, {{ 0xe289d5d2ff0331f0ull, 0xbcba012dfc8c966cull, 0x163c0a5d573b78faull, 0xe86e561b4947317eull, 0x3b42644b83cbf2b4ull, 0x52dc340d05402da7ull }}, {{ 0xd9625a3df61ff362ull, 0x5f440bcbdd7de040ull, 0xde5867a56852b9cbull, 0x144f5d10dcc7eeecull, 0x5097eaf325f77b11ull, 0x3c9a08823481c888ull }}, {{ 0x7dd7866b9d3f81d8ull, 0xb8a875f6a6eac288ull, 0xaf740c76133b41f1ull, 0xcb19a2a89fcf5540ull, 0x25ef2d7f7baaceaaull, 0x5e0455160d11d553ull }}, {{ 0xea6b4034247b1272ull, 0x36949ba2852b9954ull, 0xda887c9cc0509371ull, 0xef005a963e195486ull, 0x7b57c6fad4ac12abull, 0xac2b52dc82b2553full }}, {{ 0x283082096cceb870ull, 0x21ce145933b3fd51ull, 0x8954de1f8325c26cull, 0x560389de6cfd4d44ull, 0xd16dc5cc4eb8bab7ull, 0xb9b13c9d1af7547aull }}, {{ 0x91e5145e4013345eull, 0x520ccb7c0507e52bull, 0x5d50ad3b1f799839ull, 0x5c2362b041e504adull, 0x2e49b9fb13374b29ull, 0x40ec5e230da94cccull }}, {{ 0xb2f2cbae80c00bafull, 0x347ff2d8324ef3b3ull, 0xa526c44f3abff23dull, 0x9961dae292f22ec5ull, 0xcee143cec028ef9dull, 0x893bad5e889cfff9ull }}, {{ 0xfd7bf4d1078074d3ull, 0x0cff7c71f7158504ull, 0x7383ab184b7f7664ull, 0xfdd28cd9bd75d3b8ull, 0x14cca61381995c27ull, 0x5c54c5b15621ffc2ull }}, {{ 0xe6d7902a4b04903cull, 0x81fadc73a6d73231ull, 0x8324aef2f2fa9fe8ull, 0xea398081669a4534ull, 0xcffe7cc30ffd998full, 0x9b4fb8ed5d53fd94ull }}, {{ 0x046ba1a6ee2da25cull, 0x13cc9c848467f5f3ull, 0x1f6ed57d7dca3f15ull, 0x263f050e0206b40dull, 0x1ff0df9e9fe7ff9full, 0x111d3945a547e7d0ull }}, {{ 0x2c3450854dc8579bull, 0xc5fe1d2d2c0f9b7eull, 0x3a5456e6e9e676d2ull, 0x7e76328c14430883ull, 0x3f68bc323f0ffc37ull, 0xab243cb874cf0e21ull }}, {{ 0xba0b253509d36c10ull, 0xbbed23c3b89c12edull, 0x474b65052300a43bull, 0xf09df978ca9e5520ull, 0x7a1759f6769fda2aull, 0xaf6a5f3490168d4cull }}, {{ 0x446f7412624238a3ull, 0x574365a53618bd49ull, 0xc8f1f2335e066a55ull, 0x662bbeb7ea2f5342ull, 0xc4e983a0a23e85adull, 0xda27b80da0e184fcull }}, {{ 0xac5a88b7d6963662ull, 0x68a1f8741cf764dcull, 0xd9737601ac402755ull, 0xfdb5732f25d9409bull, 0xb11f2446567138c5ull, 0x858d308848cf31dfull }}, {{ 0xbb89572e61de1fcfull, 0x1653b48921a9f09eull, 0x7e829c10ba818956ull, 0xe9167fd77a7c8616ull, 0xeb376abf606c37bbull, 0x3783e552d817f2bcull }}, {{ 0x535d67cfd2ad3e19ull, 0xdf450d5b50a36633ull, 0xf11a18a7490f5d5cull, 0x1ae0fe6ac8dd3ce0ull, 0x302a2b79c43a2d57ull, 0x2b26f53c70ef7b61ull }}, {{ 0x41a60e1e3ac46cfaull, 0xb8b285912661fe01ull, 0x6b04f688da99a5a0ull, 0x0cc9f02bd8a460c9ull, 0xe1a5b2c1aa45c567ull, 0xaf85945c695ad1cbull }}, {{ 0x907c8d2e4bac41bfull, 0x36f937ab7fd3ec0cull, 0x2e31a1588a007847ull, 0x7fe361b6766bc7deull, 0xd078fb90a6b9b606ull, 0xdb37cb9c1d8c31f6ull }}, {{ 0xa4dd83cef4ba9177ull, 0x25bc2cb2fe47387dull, 0xcdf04d756404b2c8ull, 0xfee1d120a035ceadull, 0x24b9d3a683411c40ull, 0x902df4192779f3a4ull }}, {{ 0x70a726158f49aea6ull, 0x7959befdeec834e8ull, 0x0b630695e82efbd1ull, 0xf4d22b46421a12caull, 0x6f424481208b1a89ull, 0xa1cb88fb8ac38469ull }}, {{ 0x66877cd798e0d277ull, 0xbd8175eb53d21114ull, 0x71de41db11d5d62eull, 0x9035b0be9504bbe4ull, 0x5896ad0b456f0963ull, 0x51f359d36ba32c1eull }}, {{ 0x014ae06bf8c838a8ull, 0x670e9b314634aaccull, 0x72ae928eb25a5dd3ull, 0xa218e771d22f56ecull, 0x75e2c270b6565de3ull, 0x33818242345fb92full }}, {{ 0x0cecc437b7d2368cull, 0x06920fecbe0eabf8ull, 0x7ad1b992f787aa42ull, 0x54f90a7235d9653cull, 0x9adb98671f5faae4ull, 0x030f16960bbd3bdaull }}, {{ 0x813faa2d2e36217bull, 0x41b49f3f6c92b7b0ull, 0xcc313fbdab4ca694ull, 0x51ba68761a7df45cull, 0x0c93f40739bcacebull, 0x1e96e1dc7564568aull }}, {{ 0x0c7ca5c3ce1d4ed1ull, 0x910e387a3dbb2ce5ull, 0xf9ec7d68b0fe81caull, 0x3148149d08eb8b9full, 0x7dc78848415ec131ull, 0x31e4d29c95eb6164ull }}, {{ 0x7cde79a60d25142cull, 0xaa8e34c6694fc0f2ull, 0xc33ce616e9f111e9ull, 0xecd0ce225933743full, 0xe9cb52d28db38bebull, 0xf2f03a1ddb31cdecull }}, {{ 0xe0b0c07c8372c9b3ull, 0xa98e0fc01d1d8978ull, 0xa060fce5236ab320ull, 0x40280d577c028a7dull, 0x21f13c3989037737ull, 0x7d62452a8ff20b41ull }}, {{ 0xc6e784dd227be103ull, 0x9f8c9d8123275eb8ull, 0x43c9e0f3622aff46ull, 0x8190856ad81968e8ull, 0x536c5a3f5a22a828ull, 0xe5d6b3a99f74708bull }}, {{ 0xc50b30a358d6ca1aull, 0x3b7e270b5f89b337ull, 0xa5e2c981d5adf8c2ull, 0x0fa5362c70fe1912ull, 0x423b8679855a9195ull, 0xfa6304a03a8c6571ull }}, {{ 0xb26fe6617863e505ull, 0x52ed8671bb61002dull, 0x7adbdf1258cbb796ull, 0x9c741dbc69ecfabaull, 0x965340bf3589afd2ull, 0xc7de2e42497bf66cull }}, {{ 0xf85effceb3e6f22eull, 0x3d47407151ca01c8ull, 0xcc96b6b777f52bdfull, 0x1c89295c2341cb48ull, 0xdf4087781760de3aull, 0xceadce96ded7a03dull }}, {{ 0xb3b5fe13070575cfull, 0x64c8846d31e411d9ull, 0xfde3232aaf93b6b8ull, 0x1d5b9d996091f0d7ull, 0xb8854ab0e9c8ae45ull, 0x12ca11e4b46c426aull }}, {{ 0x051becbe46369a11ull, 0xefd52c43f2e8b281ull, 0xeadf5faadbc52333ull, 0x259427fdc5b3686full, 0x3534eae921d6ceb3ull, 0xbbe4b2ef0c3a982bull }}, {{ 0x33173f6ebe2204abull, 0x5e53baa77d16f90aull, 0x2cb9bcac95b36007ull, 0x77c98fe9b902145full, 0x14112d1b526412ffull, 0x56eefd567a49f1b0ull }}, {{ 0xfee87a536d542ea9ull, 0xaf454a8ae2e5ba65ull, 0xbf415ebdd901c049ull, 0xaddf9f213a14cbb7ull, 0xc8abc31137e8bdfaull, 0x6555e560c6e370e0ull }}, {{ 0xf514c7424549d29dull, 0xd8b4e96cdcf947fbull, 0x788db36a7a1182e0ull, 0xcabc374c44cff52dull, 0xd6b59eac2f176bcaull, 0xf55af5c7c4e268c7ull }}, {{ 0x92cfc896b4e23a24ull, 0x77111e40a1bccfd7ull, 0xb5890228c4af1cc8ull, 0xeb5a28fab01f93c6ull, 0x631832b9d6ea35ebull, 0x958d99cdb0d817ceull }}, {{ 0xbc1dd5e310d64568ull, 0xa6ab2e8651601e6bull, 0x175a1597aed71fd4ull, 0x318599cae13bc5c3ull, 0xdef1fb4265261b37ull, 0xd7880208e870ee0full }}, {{ 0x592a5adea85eb60eull, 0x82afd13f2dc13035ull, 0xe984d7ecd4673e4eull, 0xef3801eccc55b99eull, 0xb573d097f37d1027ull, 0x6b50145914694c9eull }}, {{ 0x7ba78cb293b31c88ull, 0x1ade2c77c98be215ull, 0x1f306f404c086f11ull, 0x5830133ffb594035ull, 0x168625ef82e2a18full, 0x3120cb7acc1cfe33ull }}, {{ 0xd48b7ef9c4ff1d54ull, 0x0cadbcaddf76d4d6ull, 0x37e45882f85456abull, 0x71e0c07fd17c8213ull, 0xe13d7b5b1cda4f99ull, 0xeb47f2cbf921edfeull }}, {{ 0x4d72f5c1b1f72546ull, 0x7ec95ecabaa45064ull, 0x2eeb751db34b62aeull, 0x72c784fe2edd14c0ull, 0xcc66d18f20871bfeull, 0x30cf7bf7bb534bf4ull }}, {{ 0x067d9990f3a774b8ull, 0xf3ddb3eb4a6b23ebull, 0xd532932900f1dad0ull, 0x7bcb31edd4a2cf81ull, 0xfc042f97454717f0ull, 0xe81ad7ad5140f78full }}, {{ 0x40e7ffa9848a8f32ull, 0x86a90730e82f672eull, 0x53f9bf9a09728c29ull, 0xd5eff34a4e5c1b12ull, 0xd829dbe8b4c6ef64ull, 0x110c6cc52c89ab9full }}, {{ 0x890ffc9f2d6997efull, 0x429a47e911da07ceull, 0x47c17c045e79799full, 0x5b5f80e70f990eb7ull, 0x71a297170fc559f0ull, 0xaa7c3fb3bd60b43eull }}, {{ 0x5a9fde37c61fef59ull, 0x9a06cf1ab2844e11ull, 0xcd8ed82bb0bec038ull, 0x91bb09069bfa9328ull, 0x7059e6e69db58363ull, 0xa8da7d0565c70a70ull }}, {{ 0x8a3eae2dbd3f5975ull, 0x0444170af92b0cadull, 0x079471b4e7738236ull, 0xb14e5a4217c9bf98ull, 0x63830502291721e3ull, 0x9888e235f9c66864ull }}, {{ 0x6672cdc964797e97ull, 0x2aa8e66dbbae7ec7ull, 0x4bcc71110a83161cull, 0xed0f8694ede17bf0ull, 0xe31e32159ae752e4ull, 0xf558d61bc1c013ebull }}, {{ 0x007c09ddecbef1e6ull, 0xaa99004954d0f3caull, 0xf5fc6aaa691edd19ull, 0x429b41d14aced762ull, 0xdf2df4d80d093cf1ull, 0x95785d159180c736ull }}, {{ 0x04d862ab3f7572fbull, 0xa9fa02dd502985e4ull, 0x9bdc2aa81b34a300ull, 0x9a10922cec1469ddull, 0xb7cb9070825c616cull, 0xd6b3a2d7af07c824ull }}, {{ 0x3073dab07a967dcdull, 0xa3c41ca5219f3ae8ull, 0x1699aa91100e5e06ull, 0x04a5b5c138cc22a8ull, 0x2df3a465179bce3eull, 0x63045c6cd64dd16full }}, {{ 0xe4868ae4c9e0ea06ull, 0x65a91e7350384d11ull, 0xe200a9aaa08fac42ull, 0x2e79198c37f95a90ull, 0xcb846bf2ec160e6cull, 0xde2b9c405f0a2e57ull }}, {{ 0xed416cefe2c9243full, 0xf89b3081223302b2ull, 0xd406a0aa459cba97ull, 0xd0baff7a2fbd89a8ull, 0xf32c377d38dc9039ull, 0xadb41a83b665cf6dull }}, {{ 0x448e415edbdb6a77ull, 0xb60fe50b55fe1afdull, 0x484246a6b81f49efull, 0x274dfac5dd676098ull, 0x7fba2ae4389da242ull, 0xc90909251ffa1a4bull }}, {{ 0xad8e8db4969228a3ull, 0x1c9ef2715bed0de4ull, 0xd296c2833138e35dull, 0x890bcbbaa609c5f2ull, 0xfd45acea36285695ull, 0xda5a5b733fc506f2ull }}, {{ 0xc791890de1b59661ull, 0x1e35786d97428aeeull, 0x39e3991fec38e1a3ull, 0x5a75f54a7c61bb7cull, 0xe4b8c1261d9361d7ull, 0x878792807db2457dull }}, {{ 0xcbaf5a8ad117dfceull, 0x2e16b447e8996d53ull, 0x42e3fb3f3a38d05full, 0x889b94e8dbd152daull, 0xef378b7d27c1d269ull, 0x4b4bb904e8f6b6eaull }}, {{ 0xf4d9896c2aeebe08ull, 0xcce30acf15fe4545ull, 0x9ce7d078463823b7ull, 0x5613d118962d3c86ull, 0x582b72e38d92381full, 0xf0f53a3119a3252dull }}, {{ 0x907f5e39ad536c4full, 0x00de6c16dbeeb4bbull, 0x210e24b2be31652eull, 0x5cc62af5ddc45d42ull, 0x71b27ce387b63139ull, 0x699445eb005f73c5ull }}, {{ 0xa4f9ae40c5423b17ull, 0x08b038e497530f53ull, 0x4a8d6efb6dedf3ccull, 0x9fbdad9aa9aba495ull, 0x70f8e0e34d1dec3dull, 0x1fcabb2e03ba85b6ull }}, {{ 0x71c0ce87b4964ee9ull, 0x56e238ede93e9944ull, 0xe98655d24b4b85f8ull, 0x3d68c80aa0b46dd4ull, 0x69b8c8e1032b3a68ull, 0x3deb4fcc25493920ull }}, {{ 0x7188114d0ddf151bull, 0x64d6394b1c71fcacull, 0x1f3f5a36f0f33bb3ull, 0x6617d06a470c4a51ull, 0x2137d8ca1fb04812ull, 0x6b311df974dc3b44ull }}, {{ 0x6f50ad028ab6d30dull, 0xf05e3cef1c73debcull, 0x3879862569805501ull, 0xfcee2426c67ae72bull, 0x4c2e77e53ce2d0b7ull, 0x2feb2bbe909a50a9ull }}, {{ 0x5926c2196b243e84ull, 0x63ae61571c86b35cull, 0x34bf3d761f035213ull, 0xe14d6983c0cd07b0ull, 0xf9d0aef460dc272full, 0xdf2fb571a607269cull }}, {{ 0x7b8394fe2f6a712bull, 0xe4cfcd671d43019bull, 0x0f78669d362134c1ull, 0xcd061f2588024ce2ull, 0xc226d58bc89987deull, 0xb7dd16707c478221ull }}, {{ 0xd323d1edda286badull, 0xf01e0607249e1012ull, 0x9ab402241d4c0f92ull, 0x023d3777501700d4ull, 0x95845775d5ff4eb4ull, 0x2ea2e064dacb1551ull }}, {{ 0x3f66334a859434c2ull, 0x612c3c476e2ca0bcull, 0x0b08156924f89bbdull, 0x16642aa920e6084eull, 0xd72b6a9a5bf91308ull, 0xd25cc3f08beed52full }}, {{ 0x79fe00e937ca0f90ull, 0xcbba5aca4dbe475aull, 0x6e50d61b71b61565ull, 0xdfe9aa9b48fc530cull, 0x67b22a0797babe50ull, 0x379fa765775453deull }}, {{ 0xc3ec091c2de49b9cull, 0xf5478be7096ec988ull, 0x4f285d12711cd5f9ull, 0xbf20aa10d9db3e7cull, 0x0cf5a44bed4b6f28ull, 0x2c3c89f6a94b46b0ull }}, {{ 0xa7385b19caee1416ull, 0x94cb77065e53df57ull, 0x1793a2b86b205bc3ull, 0x7746a4a8829070dbull, 0x81986af744f25797ull, 0xba5d63a29cf0c2e0ull }}, {{ 0x88338f01ed4cc8daull, 0xcff2a63faf46b96cull, 0xebc45b342f4395a3ull, 0xa8c26e9519a4688eull, 0x0ff42da8b1776beaull, 0x47a5e45a21679cc5ull }}, {{ 0x5203961344ffd885ull, 0x1f7a7e7cd8c33e3dull, 0x35ab9009d8a3d866ull, 0x979851d3006c1595ull, 0x9f89c896eeaa372aull, 0xcc7aeb854e0c1fb2ull }}, {{ 0x3423dcc0b1fe7532ull, 0x3ac8f0e077a06e65ull, 0x18b3a062766673fdull, 0xebf3323e0438d7d4ull, 0x3b61d5e552a627a9ull, 0xfccd33350c793cfaull }}, {{ 0x09669f86f3f093f8ull, 0x4bd968c4ac444ff4ull, 0xf70443d8a00087e4ull, 0x377ff66c2a386e48ull, 0x51d25af53a7d8ca3ull, 0xe00400127cbc61c6ull }}, {{ 0x5e023b458765c7adull, 0xf67e17aebaab1f88ull, 0xa62aa67640054eeaull, 0x2affa039a6344ed9ull, 0x32378d9448e77e60ull, 0xc02800b8df5bd1bfull }}, {{ 0xac1650b749f9ccc2ull, 0xa0ececd34aaf3b53ull, 0x7daa809e8035152dull, 0xadfc42407e0b1480ull, 0xf62b87cad90aefc1ull, 0x81900738b9963177ull }}, {{ 0xb8df2728e3c1ff91ull, 0x49414040ead85144ull, 0xe8a906310212d3c8ull, 0xcbda9684ec6ecd04ull, 0x9db34dec7a6d5d90ull, 0x0fa048373fddeeafull }}, {{ 0x38b78798e593fbaaull, 0xdc8c82892c732cafull, 0x169a3dea14bc45d2ull, 0xf689e1313c540231ull, 0x29010b3cc845a7a7ull, 0x9c42d2287eab52dcull }}, {{ 0x372b4bf8f7c7d4a2ull, 0x9d7d195bbc7fbed8ull, 0xe2066b24cf5aba3cull, 0xa162cbec5b4815eaull, 0x9a0a705fd2b88c8full, 0x1a9c3594f2b13c99ull }}, {{ 0x27b0f7b9adce4e50ull, 0x26e2fd955cfd7472ull, 0xd4402f70198b465eull, 0x4ddbf73b90d0db2cull, 0x046863be3b357d9cull, 0x0a1a17d17aec5e00ull }}, {{ 0x8ce9ad40ca0f0f1eull, 0x84dde7d5a1e68c75ull, 0x4a81da60ff70bfadull, 0x0a97a853a8288fc0ull, 0x2c13e56e5016e81bull, 0x6504ee2ecd3bac00ull }}, {{ 0x8120c487e496972eull, 0x30ab0e5853017c97ull, 0xe91287c9fa677cc7ull, 0x69ec934491959d82ull, 0xb8c6f64f20e5110eull, 0xf2314dd40454b801ull }}, {{ 0x0b47ad4eede1e7caull, 0xe6ae8f733e0eddebull, 0x1ab94de3c80adfc7ull, 0x233dc0adafd8271dull, 0x37c59f1748f2aa90ull, 0x75ed0a482b4f3011ull }}, {{ 0x70ccc5154ad30de0ull, 0x02d19a806c94ab2eull, 0x0b3d0ae5d06cbdcfull, 0x606986c8de718723ull, 0x2db836e8d97aa9a1ull, 0x9b4266d1b117e0acull }}, {{ 0x67ffb2d4ec3e8ac3ull, 0x1c3009043dceafd0ull, 0x70626cfa243f6a16ull, 0xc41f43d8b06f475eull, 0xc93225187ecaa04dull, 0x10980430eaeec6b9ull }}, {{ 0x0ffcfc513a716ba3ull, 0x19e05a2a6a12de24ull, 0x63d841c56a7a24ddull, 0xa938a676e458c9b0ull, 0xdbf572f4f3ea4309ull, 0xa5f029e92d53c341ull }}, {{ 0x9fe1db2c486e345aull, 0x02c385a824bcad68ull, 0xe67291b628c570a3ull, 0x9c3680a4eb77e0e3ull, 0x97967d9187269e60ull, 0x7b61a31bc545a092ull }}, {{ 0x3ed28fbad44e0b87ull, 0x1ba338916f5ec616ull, 0x0079b11d97b6665eull, 0x1a21067132aec8e7ull, 0xebe0e7af47822fc6ull, 0xd1d05f15b4b845b9ull }}, {{ 0x74399d4c4b0c7347ull, 0x146035ae59b3bcdeull, 0x04c0eb27ed1fffadull, 0x054a406bfad3d906ull, 0x36c90cd8cb15ddbdull, 0x3223b6d90f32b943ull }}, {{ 0x8a4024faee7c80c5ull, 0xcbc218cf810560b0ull, 0x2f892f8f433ffcc2ull, 0x34e68437cc467a3cull, 0x23da8077eedaa962ull, 0xf565247a97fb3ca0ull }}, {{ 0x668171cd50dd07b1ull, 0xf594f81b0a35c6e5ull, 0xdb5bdb98a07fdf9bull, 0x11012a2dfac0c659ull, 0x668904af548a9dd6ull, 0x95f36cc9efd05e41ull }}, {{ 0x010e720528a24ce9ull, 0x97d1b10e6619c4f6ull, 0x919693f644febc17ull, 0xaa0ba5cbcb87bf82ull, 0x015a2ed94d6a2a5cull, 0xdb823fe35e23ae8eull }}, {{ 0x0a90743396570115ull, 0xee30ea8ffd01b19cull, 0xafe1c79eb1f358ebull, 0xa47479f5f34d7b19ull, 0x0d85d47d0625a79eull, 0x93167ee1ad64d18cull }}, {{ 0x69a48a03df660ad5ull, 0x4de9299fe210f018ull, 0xded1cc32f3817937ull, 0x6c8cc39b8106cf00ull, 0x873a4ce23d788c32ull, 0xbee0f4d0c5f02f78ull }}, {{ 0x206d6426b9fc6c56ull, 0x0b1ba03ed4a960f4ull, 0xb431f9fd830ebc29ull, 0x3d7fa4130a441608ull, 0x484700d666b579f8ull, 0x74c99027bb61dab5ull }}, {{ 0x4445e98343dc3b5aull, 0x6f1442744e9dc989ull, 0x09f3c3e71e93599aull, 0x66fc68be66a8dc57ull, 0xd2c608600316c3b2ull, 0x8fdfa18d51d28b14ull }}, {{ 0xaabb1f20a69a5184ull, 0x56ca988b1229df5cull, 0x6385a70731c18008ull, 0x05dc177002989b66ull, 0x3bbc53c01ee3a4f8ull, 0x9ebc4f8532396ed0ull }}, {{ 0xab4f374682072f2cull, 0x63e9f56eb5a2b99eull, 0xe3388647f18f0053ull, 0x3a98ea6019f611ffull, 0x555b458134e471b0ull, 0x335b1b33f63e5422ull }}, {{ 0xb11828c11447d7b5ull, 0xe7239653185b4032ull, 0xe0353ecf6f960341ull, 0x49f927c1039cb3feull, 0x5590b70c10ec70e2ull, 0x018f10079e6f4957ull }}, {{ 0xeaf1978acace6d10ull, 0x0763df3ef39081faull, 0xc214741a5bdc2093ull, 0xe3bb8d8a241f07f4ull, 0x57a72678a93c68d6ull, 0x0f96a04c3058dd69ull }}, {{ 0x2d6feb6bec10429cull, 0x49e6b87583a513cdull, 0x94cc8907969945beull, 0xe553876569364f8full, 0x6c8780b69c5c1864ull, 0x9be242f9e378a61dull }}, {{ 0xc65f323738a29a14ull, 0xe30334972472c603ull, 0xcffd5a4be1fcb96eull, 0xf54349f61c1f1b9bull, 0x3d4b07221b98f3f0ull, 0x16d69dc2e2b67d26ull }}, {{ 0xbfb7f628365a04c9ull, 0xde200de76c7bbc25ull, 0x1fe586f6d3df3e54ull, 0x94a0e39d19371416ull, 0x64ee475513f98769ull, 0xe462299cdb20e37eull }}, {{ 0x7d2f9d921f842fd6ull, 0xad408b0a3cd55979ull, 0x3ef745a446b86f50ull, 0xce48e422fc26c8ddull, 0xf14ec952c7bf4a1full, 0xebd5a0208f48e2efull }}, {{ 0xe3dc27b53b29de5bull, 0xc4856e6660557ebeull, 0x75a8b86ac3345926ull, 0x0ed8e95dd983d8a4ull, 0x6d13dd3bcd78e53eull, 0x3658414598d8dd5full }}, {{ 0xe6998d144fa2af8aull, 0xad364fffc356f374ull, 0x9897342ba00b7b83ull, 0x94791daa7f26766cull, 0x42c6a45606b8f46cull, 0x1f728cb7f878a5baull }}, {{ 0x01ff82cb1c5adb60ull, 0xc41f1ffda1658291ull, 0xf5e809b44072d324ull, 0xccbb28a8f780a03dull, 0x9bc26b5c43398c3dull, 0x3a797f2fb4b67946ull }}, {{ 0x13fb1bef1b8c91bcull, 0xa9373fe84df719aaull, 0x9b10610a847c3f6full, 0xff4f9699ab06426bull, 0x1598319aa03f7a69ull, 0x48bef7dd0f20bcc2ull }}, {{ 0xc7cf1757137db15cull, 0x9c287f130ba700a4ull, 0x0ea3ca692cda7a5cull, 0xf91be200ae3e9834ull, 0xd7f1f00a427ac823ull, 0xd775aea297475f94ull }}, {{ 0xce16e966c2e8ed9cull, 0x1994f6be7486066full, 0x9265e81bc088c79eull, 0xbb16d406ce71f208ull, 0x6f73606698cbd167ull, 0x6a98d259e8c9bbd0ull }}, {{ 0x0ce51e039d194814ull, 0xffd1a3708d3c405eull, 0xb7fb11158557cc2cull, 0x4ee4484410737455ull, 0x5a81c401f7f62e0dull, 0x29f8378317e15624ull }}, {{ 0x80f32c2422fcd0c3ull, 0xfe306265845a83acull, 0x2fceaad7356df9c1ull, 0x14ead2a8a4828b59ull, 0x8911a813af9dcc85ull, 0xa3b22b1eeecd5d6bull }}, {{ 0x097fb9695de027a1ull, 0xede3d7f72b8924bdull, 0xde12ac68164bc193ull, 0xd12c3a966d19717bull, 0x5ab090c4dc29fd32ull, 0x64f5af355405a633ull }}, {{ 0x5efd3e1daac18c4cull, 0x4ae66fa7b35b6f62ull, 0xacbabc10def58fc7ull, 0x2bba49e042fe6ed6ull, 0x8ae5a7b099a3e3fcull, 0xf198d81548387e01ull }}, {{ 0xb5e46d28ab8f7afdull, 0xed005c8d019259d7ull, 0xbf4b58a8b5979dc8ull, 0xb546e2c29df05462ull, 0x6cf88ce60066e7d9ull, 0x6ff870d4d234ec0full }}, {{ 0x1aec4396b39acddeull, 0x42039d820fb7826dull, 0x78f1769717ec29d9ull, 0x14c4db9a2b634bdbull, 0x41b580fc04050e81ull, 0x5fb468503611389aull }}, {{ 0x0d3aa3e3040c0ab1ull, 0x942427149d2b1843ull, 0xb96ea1e6ef39a27cull, 0xcfb09405b1e0f692ull, 0x911709d82832910aull, 0xbd0c13221cac3606ull }}, {{ 0x844a66de28786ae8ull, 0xc96986ce23aef29eull, 0x3e525305584058ddull, 0x1ce5c838f2c9a1bbull, 0xaae6627191f9aa6cull, 0x6278bf551eba1c41ull }}, {{ 0x2ae804ad94b42d0eull, 0xde1f440d64d57a31ull, 0x6f373e35728378a9ull, 0x20f9d2397be05150ull, 0xacffd86fb3c0a839ull, 0xd8b7795333451a90ull }}, {{ 0xad102ec7cf09c28eull, 0xad38a885f056c5ebull, 0x58286e167922b6a2ull, 0x49c2363ed6c32d24ull, 0xc1fe745d0586923bull, 0x772abd4000b309a6ull }}, {{ 0xc2a1d3ce16619988ull, 0xc436953b6363bb34ull, 0x71944ce0bb5b225aull, 0xe1961e74639fc36bull, 0x93f08ba23741b650ull, 0xa7ab648006fe6083ull }}, {{ 0x9a52460cdfcfff52ull, 0xaa21d451e1e5500full, 0x6fcb00c7518f578bull, 0xcfdd308be43da232ull, 0xc765745628911f28ull, 0x8cb1ed0045efc523ull }}, {{ 0x0736bc80be1ff937ull, 0xa5524b32d2f5209cull, 0x5dee07c92f996b74ull, 0x1ea3e576ea6855f8ull, 0xc9f68b5d95ab3798ull, 0x7ef34202bb5db365ull }}, {{ 0x48235d076d3fbc22ull, 0x7536effc3d934618ull, 0xab4c4ddbdbfe328eull, 0x3266f6a528135bb3ull, 0xe3a171a7d8b02bf1ull, 0xf580941b51a901f9ull }}, {{ 0xd161a24a447d5958ull, 0x94255fda67c0bcf2ull, 0xb0fb0a9697edf990ull, 0xf805a27390c19504ull, 0xe44e708e76e1b76bull, 0x9705c911309a13c2ull }}, {{ 0x2dd056e6ace57d72ull, 0xc975be880d87617cull, 0xe9ce69e1ef4bbfa5ull, 0xb0385883a78fd22eull, 0xeb106590a4d12a37ull, 0xe639daabe604c59cull }}, {{ 0xca236502c0f6e675ull, 0xde9971508749ced9ull, 0x221022d358f57c79ull, 0xe23375248b9e35d5ull, 0x2ea3f7a6702ba62cull, 0xfe428ab6fc2fb821ull }}, {{ 0xe561f21b89a50095ull, 0xb1fe6d2548e21481ull, 0x54a15c417996dcc2ull, 0xd602936d742e1a53ull, 0xd267ac8061b47dc0ull, 0xee996b25d9dd314bull }}, {{ 0xf5d37513607205d1ull, 0xf3f04374d8d4cd12ull, 0x4e4d9a8ebfe49f9aull, 0x5c19c24689cd0741ull, 0x380cbd03d10ce988ull, 0x51fe2f7a82a3ecf6ull }}, {{ 0x9a4292c1c4743a27ull, 0x8762a290785002bdull, 0x0f0809937eee3c0dull, 0x990196c16202488dull, 0x307f62262a811f53ull, 0x33eddac91a67419eull }}, {{ 0x0699bb91ac8a4581ull, 0x49da59a4b3201b68ull, 0x96505fc2f54e5887ull, 0xfa0fe38dd416d582ull, 0xe4f9d57da90b3943ull, 0x074a8bdb0808902dull }}, {{ 0x420153b0bd66b70cull, 0xe287806eff411210ull, 0xdf23bd9d950f7548ull, 0xc49ee38a48e45719ull, 0xf1c256e89a703ca7ull, 0x48e9768e5055a1caull }}, {{ 0x940d44e76603267cull, 0xd94b0455f88ab4a2ull, 0xb7656827d29a94d8ull, 0xae34e366d8eb6702ull, 0x7197651608625e8dull, 0xd91ea18f235851edull }}, {{ 0xc884b109fc1f80d4ull, 0x7cee2b5bb56b0e59ull, 0x29f6118e3a09d078ull, 0xce10e2047932061bull, 0x6fe9f2dc53d7b188ull, 0x7b324f9761733346ull }}, {{ 0xd52eea63d93b0844ull, 0xe14db195162e8f81ull, 0xa39caf8e446224b4ull, 0x0ca8d42cbbf43d0full, 0x5f237c9b466cef58ull, 0xcff71be9ce8000c0ull }}, {{ 0x53d527e67c4e52acull, 0xcd08efd2ddd19b12ull, 0x641edb8eabd56f10ull, 0x7e9849bf578a629cull, 0xb762de10c0415970ull, 0x1fa7172211000783ull }}, {{ 0x46538f00db0f3ab8ull, 0x02595e3caa300eb7ull, 0xe9349392b65656a8ull, 0xf1f2e1796b67da1bull, 0x29dcaca7828d7e64ull, 0x3c86e754aa004b25ull }}, {{ 0xbf4396088e984b35ull, 0x177dae5ea5e09328ull, 0x1c0dc3bb1f5f6290ull, 0x737ccebe320e8517ull, 0xa29ebe8b1986eff1ull, 0x5d45094ea402ef73ull }}, {{ 0x78a3dc5591f2f010ull, 0xeae8cfb27ac5bf97ull, 0x1889a54f39b9d9a0ull, 0x82e0136df49132e7ull, 0x5a33716eff455f6eull, 0xa4b25d12681d5a84ull }}, {{ 0xb6669b57b37d60a2ull, 0x2d181cf8cbb97beaull, 0xf560751841428049ull, 0x1cc0c24b8dabfd06ull, 0x86026e55f8b5ba51ull, 0x6ef7a2b81125892bull }}, {{ 0x2002116d02e5c656ull, 0xc2f121b7f53ed72bull, 0x95c492f28c9902dbull, 0x1f8796f388b7e245ull, 0x3c184f5bb719472bull, 0x55ac5b30ab775bb3ull }}, {{ 0x4014ae421cf9bf5full, 0x9d6b512f947467afull, 0xd9adbd797dfa1c95ull, 0x3b4be583572ed6b7ull, 0x58f3199526fcc7afull, 0x58bb8fe6b2a99500ull }}, {{ 0x80cece9521c179b8ull, 0x26312bdbcc8c0cd8ull, 0x80c966beebc51dd8ull, 0x50f6f72167d4632eull, 0x797effd385dfccd8ull, 0x77539f02fa9fd203ull }}, {{ 0x081411d3518ec12dull, 0x7debb695fd788075ull, 0x07de037535b32a71ull, 0x29a5a74e0e4bdfd1ull, 0xbef5fe433abe0073ull, 0xa944361dca3e3422ull }}, {{ 0x50c8b2412f938bc4ull, 0xeb3521dbe6b50492ull, 0x4eac229418ffa86eull, 0xa078890c8ef6be2aull, 0x759beea04b6c047full, 0x9caa1d29e66e095bull }}, {{ 0x27d6f68bdbc375a9ull, 0x3013529703122db7ull, 0x12b959c8f9fc9455ull, 0x44b55a7d95a36da7ull, 0x98175242f2382cfcull, 0x1ea523a3004c5d92ull }}, {{ 0x8e65a17695a29897ull, 0xe0c139e61eb5c927ull, 0xbb3d81d9c3ddcb53ull, 0xaf1588e7d8624886ull, 0xf0e9369d7631c1daull, 0x3273645e02fba7b9ull }}, {{ 0x8ff84ea1d859f5e3ull, 0xc78c42fd3319db8bull, 0x50671281a6a9f146ull, 0xd6d7590e73d6d543ull, 0x691c22269df1928aull, 0xf881ebac1dd48d43ull }}, {{ 0x9fb3125273839ae1ull, 0xcb7a9de3ff029373ull, 0x2406b91082a36cc3ull, 0x64697a90866454a1ull, 0x1b1955822b6fb96cull, 0xb51334b92a4d84a2ull }}, {{ 0x3cfeb73883240cc9ull, 0xf2ca2ae7f619c284ull, 0x68433aa51a623fa5ull, 0xec1ec9a53feb4e4bull, 0x0efd5715b25d3e3bull, 0x12c00f3ba7072e55ull }}, {{ 0x61f328351f687fd9ull, 0x7be5ad0f9d01992aull, 0x12a04a7307d67c7bull, 0x3933e0747f310ef2ull, 0x95e566d8f7a46e57ull, 0xbb8098548647cf52ull }}, {{ 0xd37f92133a14fe7dull, 0xd6f8c29c220ffba7ull, 0xba42e87e4e60dcd2ull, 0x3c06c48cf7ea9574ull, 0xdaf60479ac6c4f68ull, 0x5305f34d3ece1939ull }}, {{ 0x42fbb4c044d1f0dfull, 0x65b79a19549fd48eull, 0x469d14ef0fc8a03cull, 0x5843ad81af29d68full, 0x8d9c2cc0bc3b1a12ull, 0x3e3b8104740cfc42ull }}, {{ 0x9dd50f82b03368b5ull, 0xf92c04fd4e3e4d8eull, 0xc222d1569dd6425bull, 0x72a4c710d7a26198ull, 0x8819bf875a4f04b7ull, 0x6e530a2c8881da99ull }}, {{ 0x2a529b1ae2021712ull, 0xbbb831e50e6f0792ull, 0x955c2d622a5e9797ull, 0x7a6fc6a86c57cff7ull, 0x51017b4987162f2aull, 0x4f3e65bd551289ffull }}, {{ 0xa73a0f0cd414e6b5ull, 0x5531f2f290564bb5ull, 0xd599c5d5a7b1ebedull, 0xc85dc2943b6e1fabull, 0x2a0ed0df46ddd7a8ull, 0x186ff96552b963f9ull }}, {{ 0x8844968048d10314ull, 0x53f37d79a35ef518ull, 0x5801ba588cf33745ull, 0xd3a999ca524d3cb6ull, 0xa49428b8c4aa6c97ull, 0xf45fbdf53b3de7bbull }}, {{ 0x52ade102d82a1ecbull, 0x4782e6c061b592f5ull, 0x70114775818028b5ull, 0x44a001e737045f1full, 0x6dc99737aea83deeull, 0x8bbd6b94506b0d54ull }}, {{ 0x3acaca1c71a533e9ull, 0xcb1d0383d117bd95ull, 0x60acca970f019714ull, 0xae401308262bb73aull, 0x49dfe82cd2926b4eull, 0x756633cb242e854cull }}, {{ 0x4bebe51c7074071bull, 0xef2223262aed67d4ull, 0xc6bfe9e6960fe6cfull, 0xce80be517db52847ull, 0xe2bf11c039b83112ull, 0x95fe05ef69d134faull }}, {{ 0xf736f31c6488470cull, 0x57555f7dad460e4aull, 0xc37f2301dc9f041full, 0x11076f2ee91392cdull, 0xdb76b1824131eabcull, 0xdbec3b5a222c11ccull }}, {{ 0xa8257f1bed52c675ull, 0x6955bae8c4bc8eedull, 0xa2f75e129e362939ull, 0xaa4a57d51ac3bc09ull, 0x92a2ef168bf32b58ull, 0x973a518555b8b200ull }}, {{ 0x9176f717453bc08dull, 0x1d594d17af5d9548ull, 0x5da9acba2e1d9c3eull, 0xa6e76e530ba55860ull, 0xba5d56e1777fb176ull, 0xe8472f355936f405ull }}, {{ 0xaea5a6e8b4558583ull, 0x257d02ecd9a7d4d5ull, 0xa8a0bf45cd281a6dull, 0x850a4f3e747573c3ull, 0x47a564ceaafceea2ull, 0x12c7d8157c258839ull }}, {{ 0xd27885170b573721ull, 0x76e21d40808e5058ull, 0x964778ba03910843ull, 0x326718708c9685a4ull, 0xcc75f012ade15259ull, 0xbbce70d6d977523cull }}, {{ 0x38b532e67168274dull, 0xa4d52485058f2378ull, 0xdecab74423aa52a2ull, 0xf806f4657de1386dull, 0xfc9b60bacacd377bull, 0x561068647ea9365full }}, {{ 0x3713fd006e1188feull, 0x70536d32379762b2ull, 0xb3eb28a964a73a5aull, 0xb0458bf6eacc344aull, 0xde11c74bec042ad7ull, 0x5ca413ecf29c1fbfull }}, {{ 0x26c7e2044caf59ecull, 0x634243f62be9daf6ull, 0x072f969dee884788ull, 0xe2b777a52bfa0aebull, 0xacb1c8f73829ac6cull, 0x9e68c7417a193d7eull }}, {{ 0x83ced42afed98334ull, 0xe096a79db7228d9dull, 0x47dbe22b5152cb53ull, 0xdb2aac73b7c46d2eull, 0xbef1d9a831a0bc40ull, 0x3017c88ec4fc66f2ull }}, {{ 0x261449adf47f2006ull, 0xc5e28c2927598827ull, 0xce96d5b12d3bf146ull, 0x8faabc852dac43ceull, 0x75728091f0475a88ull, 0xe0edd593b1dc057bull }}, {{ 0x7ccae0cb8cf7403full, 0xbad9799b897f5187ull, 0x11e458ebc4576cc3ull, 0x9cab5d33c8baa614ull, 0x967905b362c98955ull, 0xc94a57c4f29836d2ull }}, {{ 0xdfecc7f381a88273ull, 0x4c7ec0135ef92f4aull, 0xb2eb7935ab6a3fa5ull, 0x1eb1a405d74a7cc8ull, 0xe0ba3901dbdf5d58ull, 0xdce76db179f22439ull }}, {{ 0xbf3fcf831095187full, 0xfcf380c1b5bbd8ecull, 0xfd32bc18b2267c74ull, 0x32f0683a68e8dfd6ull, 0xc7463a1296b9a571ull, 0xa10a48eec3756a42ull }}, {{ 0x787e1b1ea5d2f4f5ull, 0xe18307911956793full, 0xe3fb58f6f580dc91ull, 0xfd6412481918be65ull, 0xc8be44b9e340766bull, 0x4a66d953a296269bull }}, {{ 0xb4ed0f327a3d9195ull, 0xcf1e4baafd60bc7aull, 0xe7d179a597089db2ull, 0xe5e8b6d0faf76ffaull, 0xd76eaf42e084a037ull, 0xe8047d4459dd8215ull }}, {{ 0x114297f8c667afcfull, 0x172ef4ade5c75ccbull, 0x0e2ec077e65628fcull, 0xfb172429cdaa5fcdull, 0x6a52d89cc52e422eull, 0x102ce4ab82a714daull }}, {{ 0xac99efb7c00cde17ull, 0xe7d58ecaf9c99feeull, 0x8dd384aeff5d99d8ull, 0xcee769a208a7be02ull, 0x273c761fb3ce95d5ull, 0xa1c0eeb31a86d088ull }}, {{ 0xbe035d2d8080ace9ull, 0x0e5793edc1e03f52ull, 0x8a432ed5f9a80279ull, 0x150a2054568d6c19ull, 0x885c9d3d0611da5aull, 0x518952ff09442551ull }}, {{ 0x6c21a3c70506c11aull, 0x8f6bc74992c2793bull, 0x669fd45bc09018baull, 0xd265434b618638ffull, 0x539e24623cb28784ull, 0x2f5d3df65ca9752full }}, {{ 0x395065c632438b02ull, 0x9a35c8dfbb98bc52ull, 0x023e4b9585a0f749ull, 0x37f4a0f1cf3e39faull, 0x442d6bd65ef94b30ull, 0xd9a46b9f9e9e93d9ull }}, {{ 0x3d23f9bdf6a36e14ull, 0x0619d8bd53f75b36ull, 0x166ef3d73849a8e0ull, 0x2f8e4972186e43c4ull, 0xa9c6365fb5bcefe2ull, 0x806c343c3231c67cull }}, {{ 0x6367c16ba2624ccbull, 0x3d02776547a9901eull, 0xe055866832e098c0ull, 0xdb8ede74f44ea5a8ull, 0xa1be1fbd19615ed5ull, 0x043a0a59f5f1c0deull }}, {{ 0xe20d8e3457d6fff1ull, 0x6218a9f4cc9fa12full, 0xc3574011fcc5f782ull, 0x9394b0918b127898ull, 0x516d3d62fdcdb45aull, 0x2a4467839b7188b2ull }}, {{ 0xd4878e0b6e65ff6cull, 0xd4f6a38ffe3c4bdeull, 0xa16880b3dfbbab17ull, 0xc3cee5af6eb8b5f7ull, 0x2e4465ddea090b89ull, 0xa6ac0b24126f56f7ull }}, {{ 0x4d4b8c724ffbfa39ull, 0x51a2639fee5af6b4ull, 0x4e150706bd54aeeeull, 0xa614f8da53371bacull, 0xceabfaab245a7361ull, 0x82b86f68b85965a7ull }}, {{ 0x04f37c771fd7c63full, 0x3057e43f4f8da30bull, 0x0cd24643654ed54full, 0x7cd1b887402714bbull, 0x12b7caaf6b8881d0ull, 0x1b345a17337df88eull }}, {{ 0x3182dca73e6dbe74ull, 0xe36eea791b885e6eull, 0x8036bea1f5145517ull, 0xe03135488186cf4eull, 0xbb2deada33551224ull, 0x100b84e802ebb58cull }}, {{ 0xef1c9e8870497083ull, 0xe25528bb1353b04dull, 0x0223725392cb52eeull, 0xc1ec14d50f441911ull, 0x4fcb2c860152b570ull, 0xa07331101d35177full }}, {{ 0x571e315462de651eull, 0xd753974ec144e30bull, 0x15627743bbf13d54ull, 0x9338d05298a8faaaull, 0x1defbd3c0d3b1667ull, 0x447feaa12412eaf9ull }}, {{ 0x672ded4bdcaff32dull, 0x6943e9138cb0de71ull, 0xd5d8a8a5576c6550ull, 0xc0382339f699caa4ull, 0x2b5d6458844ee00bull, 0xacff2a4b68bd2dbbull }}, {{ 0x07cb44f69edf7fc3ull, 0x1ca71ac37ee8b06eull, 0x5a7696756a3bf524ull, 0x82316043a201ea70ull, 0xb1a5eb752b14c075ull, 0xc1f7a6f21763c94full }}, {{ 0x4df0b1a234bafd9eull, 0x1e870ba2f516e44cull, 0x88a1e09626579369ull, 0x15edc2a454132863ull, 0xf07b3293aecf8497ull, 0x93ac8574e9e5dd1cull }}, {{ 0x0b66f0560f4de82eull, 0x3146745d92e4eafbull, 0x5652c5dd7f6bc21bull, 0xdb499a6b48bf93e3ull, 0x64cff9c4d41b2de6ull, 0xc4bd369122faa321ull }}, {{ 0x7205635c990b11c8ull, 0xecc08ba7bcf12dceull, 0x5f3bbaa6fa35950full, 0x90e00830d77bc6e1ull, 0xf01fc1b0490fcb04ull, 0xaf6421ab5dca5f4dull }}, {{ 0x7435e19dfa6eb1d0ull, 0x3f85748d616bca10ull, 0xb8554a85c617d29full, 0xa8c051e86ad5c4cdull, 0x613d90e2da9dee2dull, 0xd9e950b1a9e7b90bull }}, {{ 0x8a1ad02bc852f225ull, 0x7b368d85ce35e4a4ull, 0x3354e939bcee3a38ull, 0x978333142c59b009ull, 0xcc67a8dc8a2b4dc8ull, 0x831d26f0a30d3a71ull }}, {{ 0x650c21b5d33d756full, 0xd021873a0e1aee6dull, 0x01511c41614e4634ull, 0xeb1ffec9bb80e05cull, 0xfc0c989d65b109d5ull, 0x1f2385665e844871ull }}, {{ 0xf279511a4066965bull, 0x214f48448d0d5045ull, 0x0d2b1a8dcd0ebe10ull, 0x2f3ff3e15308c398ull, 0xd87df625f8ea625bull, 0x376335ffb12ad473ull }}, {{ 0x78bd2b068401df8aull, 0x4d18d2ad828522bbull, 0x83af098a02936ca1ull, 0xd87f86cd3e57a3f0ull, 0x74eb9d7bb927d78full, 0x29e01bfcebac4c86ull }}, {{ 0xb763ae412812bb63ull, 0x02f83ac719335b52ull, 0x24d65f6419c23e4dull, 0x74fb44046f6c6765ull, 0x913426d53b8e6b9eull, 0xa2c117e134bafd40ull }}, {{ 0x29e4ce8b90bb51e2ull, 0x1db24bc6fc01913bull, 0x705fb9e901966f02ull, 0x91d0a82c5a3c09f3ull, 0xac09845453903430ull, 0x5b8aeecc0f4de485ull }}, {{ 0xa2f01173a75132d4ull, 0x28f6f5c5d80fac4full, 0x63bd431a0fe05615ull, 0xb22691bb86586382ull, 0xb85f2b4b43a209e5ull, 0x936d53f8990aed38ull }}, {{ 0x5d60ae84892bfc48ull, 0x99a599ba709cbb1cull, 0xe5649f049ec35cd3ull, 0xf581b1533f73e317ull, 0x33b7b0f0a45462f8ull, 0xc24547b5fa6d4437ull }}, {{ 0xa5c6d12d5bb7daccull, 0x00780148661f4f1bull, 0xf5ee362e33a1a044ull, 0x9710ed407a86deeeull, 0x052ce9666b4bddb9ull, 0x96b4cd1bc844aa28ull }}, {{ 0x79c42bc5952e8bf9ull, 0x04b00cd3fd391714ull, 0x9b4e1dce045042a8ull, 0xe6a94484c944b555ull, 0x33c11e0030f6a93full, 0xe3100315d2aea590ull }}, {{ 0xc1a9b5b7d3d177bcull, 0x2ee08047e43ae6ccull, 0x110d2a0c2b229a90ull, 0x029cad2fdcaf1558ull, 0x058b2c01e9a29c7full, 0xdea01eda3ad277a2ull }}, {{ 0x90a1192e462ead53ull, 0xd4c502ceea4d03ffull, 0xaa83a479af5a09a1ull, 0x1a1ec3de9ed6d570ull, 0x376fb813205a1cf6ull, 0xb24134864c38ac54ull }}, {{ 0xa64afbcebdd2c542ull, 0x4fb21c15270227fbull, 0xa9246cc0d9846052ull, 0x0533a6b234645666ull, 0x2a5d30bf4385219dull, 0xf68c0d3efa36bb4aull }}, {{ 0x7eedd6136a3bb497ull, 0x1cf518d386158fd4ull, 0x9b6c3f887f2bc337ull, 0x340482f60beb6002ull, 0xa7a3e778a3335022ull, 0xa1788475c62350e5ull }}, {{ 0xf54a5cc226550de4ull, 0x2192f8433cd79e4cull, 0x123a7b54f7b5a027ull, 0x082d1d9c7731c01aull, 0x8c670ab660012156ull, 0x4eb52c99bd6128f8ull }}, {{ 0x94e79f957f528aecull, 0x4fbdb2a0606c2f01ull, 0xb648d151ad184187ull, 0x51c3281ca7f18104ull, 0x7c066b1fc00b4d5cull, 0x1313be0165cb99b5ull }}, {{ 0xd10c3bd6f9396d3bull, 0x1d68fa43c439d60full, 0x1ed82d30c2f28f49ull, 0x319f911e8f6f0a2full, 0xd8402f3d8071059bull, 0xbec56c0df9f40116ull }}, {{ 0x2a7a5665bc3e4452ull, 0x2619c6a5aa425c9eull, 0x3471c3e79d7998dbull, 0xf03bab319a5665d7ull, 0x7281d867046a380full, 0x73b6388bc3880ae4ull }}, {{ 0xa8c75ff95a6eab37ull, 0x7d01c278a6979e2dull, 0x0c71a70c26bff88full, 0x6254aff0075ffa68ull, 0x791274062c26309full, 0x851e3575a3506cecull }}, {{ 0x97c9bfbd8852b026ull, 0xe21198b681ec2dc8ull, 0x7c708679837fb59aull, 0xd74edf6049bfc810ull, 0xbab8883db97de639ull, 0x332e16986124413cull }}, {{ 0xede17d67533ae17dull, 0xd4aff7211339c9d5ull, 0xdc6540bf22fd180cull, 0x6914b9c2e17dd0a4ull, 0x4b3552693eeafe42ull, 0xffcce1f3cb6a8c5full }}, {{ 0x4acee609404ccee4ull, 0x4edfa74ac041e25bull, 0x9bf487775de2f080ull, 0x1acf419cceea2670ull, 0xf015381c752dee98ull, 0xfe00d385f2297bb8ull }}, {{ 0xec14fc5c830014e6ull, 0x14bc88eb8292d790ull, 0x178d4aa9aadd6503ull, 0x0c18902015258066ull, 0x60d4311c93cb51f1ull, 0xec08433b759ed539ull }}, {{ 0x38d1db9d1e00d0fdull, 0xcf5d593319bc6ba9ull, 0xeb84eaa0aca5f21eull, 0x78f5a140d37703fcull, 0xc849eb1dc5f1336aull, 0x3852a0529834543dull }}, {{ 0x383294232c0829e4ull, 0x19a57bff015c349cull, 0x33312a46be7b7534ull, 0xb9984c8842a627e1ull, 0xd2e32f29bb6c0228ull, 0x333a4339f20b4a69ull }}, {{ 0x31f9c95fb851a2e5ull, 0x0076d7f60d9a0e1aull, 0xffeba6c370d29409ull, 0x3ff2fd529a7d8ecbull, 0x3cdfd7a152381597ull, 0x0046a0437470e822ull }}, {{ 0xf3c1ddbd33305cf2ull, 0x04a46f9c88048d05ull, 0xff3483a26839c85aull, 0x7f7de53a08e793f7ull, 0x60be6c4d3630d7e8ull, 0x02c242a28c691156ull }}, {{ 0x8592a963ffe3a175ull, 0x2e6c5c1d502d823bull, 0xf80d24581241d384ull, 0xfaeaf444590bc7afull, 0xc7703b041de86f14ull, 0x1b969a597c1aad5full }}, {{ 0x37ba9de7fee44e8eull, 0xd03b992521c71653ull, 0xb0836b70b6924329ull, 0xcd2d8aab7a75ccdfull, 0xca624e292b1456d1ull, 0x13e2077ed90ac5bdull }}, {{ 0x2d4a2b0ff4eb118aull, 0x2253fb7351c6df40ull, 0xe522326721b69fa2ull, 0x03c76ab2c89a00bcull, 0xe7d70d9baecb6432ull, 0xc6d44af47a6bb969ull }}, {{ 0xc4e5ae9f912eaf63ull, 0x5747d28131c4b881ull, 0xf355f80751223c55ull, 0x25ca2afbd6040760ull, 0x0e668814d3f1e9f4ull, 0xc44aed8cc8353e23ull }}, {{ 0xb0f8d23babd2d9e1ull, 0x68ce390bf1af3511ull, 0x815bb0492b565b55ull, 0x79e5add65c2849c9ull, 0x900150d047732389ull, 0xaaed477fd2146d5eull }}, {{ 0xe9b83654b63c82c7ull, 0x180e3a7770d812b0ull, 0x0d94e2dbb15f9156ull, 0xc2f8ca5f9992e1dfull, 0xa00d2822ca7f635eull, 0xad44cafe34cc45b1ull }}, {{ 0x21321f4f1e5d1bc1ull, 0xf08e48aa6870bae9ull, 0x87d0dc94edbbad5cull, 0x9db7e7bbffbcd2b6ull, 0x4083915be8f9e1b3ull, 0xc4afedee0ffab8f0ull }}, {{ 0x4bf539172fa3158dull, 0x658ed6a814674d1bull, 0x4e289dd14954c5a1ull, 0x292f0d57fd603b21ull, 0x8523ad9719c2d104ull, 0xaedf4b4c9fcb3962ull }}, {{ 0xf7943ae7dc5ed77eull, 0xf7946290cc090310ull, 0x0d962a2cdd4fb84dull, 0x9bd6856fe5c24f4dull, 0x3364c7e7019c2a29ull, 0xd4b8f0fe3df03dd9ull }}, {{ 0xabca4d0e9bb46af0ull, 0xabcbd9a7f85a1ea9ull, 0x87dda5c0a51d330bull, 0x1661365ef9971902ull, 0x01efcf061019a5a0ull, 0x4f3969ee6b626a7cull }}, {{ 0xb5e70292150c2d64ull, 0xb5f6808fb38532a0ull, 0x4ea879867323fe74ull, 0xdfcc1fb5bfe6fa19ull, 0x135e163ca1007840ull, 0x183e235031d828d8ull }}, {{ 0x1b0619b4d279c5e7ull, 0x1ba1059d0333fa47ull, 0x1294bf407f67f08full, 0xbdf93d197f05c4fdull, 0xc1acde5e4a04b288ull, 0xf26d6121f2719870ull }}, {{ 0x0e3d011038c1bb08ull, 0x144a38222007c6c7ull, 0xb9cf7884fa0f6597ull, 0x6bbc62fef639b1e2ull, 0x90c0afaee42ef957ull, 0x7845cb53786ff467ull }}, {{ 0x8e620aa237914e4full, 0xcae63155404dc3c6ull, 0x421ab531c499f7e6ull, 0x355bddf59e40f2dbull, 0xa786dcd4e9d5bd6aull, 0xb2b9f142b45f8c0bull }}, {{ 0x8fd46a562bad0f13ull, 0xecfded548309a5c1ull, 0x950b13f1ae03af03ull, 0x1596ab982e897c90ull, 0x8b44a05122596626ull, 0xfb436c9b0bbb7874ull }}, {{ 0x9e4c275db4c296c0ull, 0x41eb454d1e60798full, 0xd26ec770cc24d627ull, 0xd7e2b3f1d15edda5ull, 0x70ae432b577dfd7cull, 0xd0a23e0e7552b48dull }}, {{ 0x2ef989a90f99e37dull, 0x9330b5032fc4bf9cull, 0x3853ca67f9705d88ull, 0x6edb07722db4a87aull, 0x66ce9fb16aebe6e0ull, 0x26566c90953b0d86ull }}, {{ 0xd5bf609a9c02e2e0ull, 0xbfe7121fddaf7c19ull, 0x3345e80fbe63a755ull, 0x548e4a75c90e94c6ull, 0x04123cee2d3704c4ull, 0x7f603da5d44e8740ull }}, {{ 0x5979c60a181cdcc0ull, 0x7f06b53ea8dad902ull, 0x00bb109d6fe48959ull, 0x4d8ee899da91cfbeull, 0x28b6614dc4262fabull, 0xf9c2687a4b114880ull }}, {{ 0x7ec1bc64f1209f81ull, 0xf6431472988c7a17ull, 0x074ea6265eed5d7eull, 0x0795160289b21d6cull, 0x971fcd09a97ddcb1ull, 0xc19814c6eeacd501ull }}, {{ 0xf3915bf16b463b0eull, 0x9e9ecc79f57cc4eaull, 0x49127d7fb545a6f5ull, 0x4bd2dc1960f52638ull, 0xe73e02609eea9eeaull, 0x8ff0cfc552c0520full }}, {{ 0x83ad976e30be4e8dull, 0x3233fcc396dfb12dull, 0xdab8e6fd14b88598ull, 0xf63c98fdc9937e32ull, 0x086c17c6352a3526ull, 0x9f681db53b83349full }}, {{ 0x24c7ea4de76f117full, 0xf607dfa3e4bcebc7ull, 0x8b3905e2cf3537f1ull, 0x9e5df9e9dfc2edfcull, 0x5438edbe13a61385ull, 0x3a11291453200e36ull }}, {{ 0x6fcf270b0a56aef7ull, 0x9c4ebc66ef6135c7ull, 0x703a3adc18142f73ull, 0x2fabc322bd9d4bddull, 0x4a39496cc47cc338ull, 0x44ab9acb3f408e1full }}, {{ 0x5e17866e6762d5a7ull, 0x1b135c0559cc19caull, 0x62464c98f0c9da84ull, 0xdcb59f5b6824f6a6ull, 0xe63cde3facdfa031ull, 0xaeb40bf078858d38ull }}, {{ 0xaceb405009dc5882ull, 0x0ec1983581f901e7ull, 0xd6befdf967e28929ull, 0x9f1839921171a27full, 0xfe60ae7cc0bc41f2ull, 0xd3087764b5378438ull }}, {{ 0xc1308320629b7518ull, 0x938ff21713ba130cull, 0x6375ebbe0ed95b9aull, 0x36f23fb4ae7058feull, 0xefc6d0df875a937aull, 0x3e54a9ef142b2a39ull }}, {{ 0x8be51f43da1292efull, 0xc39f74e6c544be7full, 0xe29b356c947d9409ull, 0x25767d0ed06379efull, 0x5dc428bb4989c2c6ull, 0x6f4ea356c9afa643ull }}, {{ 0x76f338a684b9bd56ull, 0xa43a9103b4af70fbull, 0xda10163dcce7c861ull, 0x76a0e29423e2c35eull, 0xa9a99750df619bbdull, 0x59126163e0dc7ea1ull }}, {{ 0xa58036812f41655bull, 0x6a49aa250eda69d2ull, 0x84a0de6a010dd3d0ull, 0xa248d9c966dba1b4ull, 0xa09fe928b9d01566ull, 0x7ab7cde6c89cf250ull }}, {{ 0x7702210bd88df58eull, 0x26e0a5729488223aull, 0x2e48b0240a8a4624ull, 0x56d881de0494510dull, 0x463f1b974220d602ull, 0xcb2e0b03d6217726ull }}, {{ 0xa6154a76758b9790ull, 0x84c67679cd515648ull, 0xced6e1686966bd69ull, 0x647512ac2dcb2a83ull, 0xbe7713e895485c17ull, 0xefcc6e265d4ea77eull }}, {{ 0x7cd4e8a09773eb9dull, 0x2fc0a0c2052d5ed6ull, 0x1464ce141e03661full, 0xec92bab9c9efa926ull, 0x70a6c715d4d398e9ull, 0x5dfc4d7fa5128af3ull }}, {{ 0xe0511645ea873421ull, 0xdd86479433c5b460ull, 0xcbf00cc92c21fd37ull, 0x3dbb4b41e35c9b7cull, 0x6683c6da5043f923ull, 0xabdb06fc72b96d82ull }}, {{ 0xc32adebb29480949ull, 0xa73ecbca05b90bc8ull, 0xf7607fdbb953e42eull, 0x6950f092e19e12dfull, 0x0125c48722a7bb60ull, 0xb68e45dc7b3e4718ull }}, {{ 0x9facb34f9cd05cd9ull, 0x8873f5e4393a75d7ull, 0xa9c4fe953d46e9d2ull, 0x1d2965bcd02cbcbfull, 0x0b79ad475a8d51c4ull, 0x218eba9cd06ec6f0ull }}, {{ 0x3cbf011c2023a077ull, 0x54879aea3c489a6cull, 0xa1b1f1d464c52239ull, 0x239df96021bf5f7cull, 0x72c0c4c9898531a9ull, 0x4f934a202453c560ull }}, {{ 0x5f760b19416444a8ull, 0x4d4c0d265ad6083aull, 0x50f3724befb3563dull, 0x642bbdc15179badeull, 0x7b87afdf5f33f09bull, 0x1bc0e5416b45b5c4ull }}, {{ 0xba9c6efc8deaae92ull, 0x04f8837f8c5c5247ull, 0x298276f75d015e65ull, 0xe9b5698d2ec14cafull, 0xd34cdeb9b8076611ull, 0x1588f48e30b919acull }}, {{ 0x4a1c55dd8b2ad1b8ull, 0x31b522fb7b9b36cdull, 0x9f18a5a9a20daff2ull, 0x21161f83d38cfed7ull, 0x4100b3413049fcb3ull, 0xd7598d8de73b00c0ull }}, {{ 0xe51b5aa76fac3130ull, 0xf1135dd2d4102404ull, 0x36f678a05488df75ull, 0x4add3b264381f46cull, 0x8a07008be2e3deffull, 0x697f878b084e0782ull }}, {{ 0xf3118a8a5cb9ebe0ull, 0x6ac1aa3c48a16830ull, 0x25a0b6434d58ba9bull, 0xeca44f7ea3138c3aull, 0x64460576dce6b5f8ull, 0x1efb4b6e530c4b19ull }}, {{ 0x7eaf69679f4336beull, 0x2b90a65ad64e11e9ull, 0x78471ea105774a12ull, 0x3e6b1af25ec37a45ull, 0xeabc36a4a1031bb9ull, 0x35d0f24f3e7aeefdull }}, {{ 0xf2da1e0c38a0236full, 0xb3a67f8c5f0cb31eull, 0xb2c7324a36a8e4b5ull, 0x702f0d77b3a2c6b6ull, 0x2b5a226e4a1f153cull, 0x1a29771870cd55ebull }}, {{ 0x7c852c7a36416256ull, 0x0480fb7bb67eff35ull, 0xfbc7f6e62298ef19ull, 0x61d686ad045bc322ull, 0xb185584ee536d45cull, 0x059ea6f468055b2full }}, {{ 0xdd33bcc61e8dd759ull, 0x2d09d2d520f5f816ull, 0xd5cfa4fd59f956faull, 0xd26142c22b959f5dull, 0xef357314f4244b9bull, 0x3832858c10358fdcull }}, {{ 0xa4055fbd318a697aull, 0xc2623c53499bb0e4ull, 0x5a1c71e583bd65c5ull, 0x37cc9b95b3d839aaull, 0x58167ed1896af416ull, 0x31f93778a2179ea1ull }}, {{ 0x6835bd63ef681ec1ull, 0x97d65b40e014e8eeull, 0x851c72f72565f9b9ull, 0x2dfe13d9067240a7ull, 0x70e0f42f5e2d88deull, 0xf3bc2ab654ec324dull }}, {{ 0x121965e75a113388ull, 0xee5f9088c0d11950ull, 0x331c7da775fbc13full, 0xcbecc67a4076868bull, 0x68c989d9adc758adull, 0x8559ab1f5139f706ull }}, {{ 0xb4fdfb0984ac0352ull, 0x4fbba557882afd20ull, 0xff1ce88a9bd58c7full, 0xf73fc0c684a1416full, 0x17df6280c9c976c9ull, 0x3580af392c43a640ull }}, {{ 0x11ebce5f2eb82135ull, 0x1d54756b51ade347ull, 0xf721156a16577cf9ull, 0xa87d87c12e4c8e5full, 0xeeb9d907e1dea3e3ull, 0x1706d83bbaa47e80ull }}, {{ 0xb3360fb7d3314c11ull, 0x254c963130cae0c6ull, 0xa74ad624df6ae1bbull, 0x94e74d8bcefd8fbfull, 0x53427a4ed2b266e4ull, 0xe64472554a6cf109ull }}, {{ 0x001c9d2e3fecf8acull, 0x74fdddebe7ecc7c3ull, 0x88ec5d70ba2cd14full, 0xd109077615e79d7cull, 0x4098c7143af804edull, 0xfeac7754e8416a5dull }}, {{ 0x011e23ce7f41b6bdull, 0x91eaab370f3fcd9eull, 0x593ba66745c02d1aull, 0x2a5a4a9cdb0c26ddull, 0x85f7c6ca4db0314aull, 0xf2bca951128e27a4ull }}, {{ 0x0b2d6610f891235dull, 0xb32ab026987e082cull, 0x7c548008b981c309ull, 0xa786ea208e7984a5ull, 0x3badc3e708e1ece5ull, 0x7b5e9d2ab98d8c6dull }}, {{ 0x6fc5fca9b5ab61a3ull, 0xffaae181f4ec51b8ull, 0xdb4d00573f119e60ull, 0x8b45254590bf2e76ull, 0x54c9a70658d340f8ull, 0xd1b223ab3f877c44ull }}, {{ 0x5dbbdea118b1d05dull, 0xfcaccf13913b3134ull, 0x9102036876b02fc9ull, 0x70b374b7a777d0a4ull, 0x4fe0863f784089b5ull, 0x30f564b07b4adaabull }}, {{ 0xa956b24af6f2239dull, 0xdec016c3ac4fec0bull, 0xaa142214a2e1dde3ull, 0x67028f2c8aae266dull, 0x1ec53e7ab2856116ull, 0xe995eee4d0ec8ab1ull }}, {{ 0x9d62f6eda5756425ull, 0xb380e3a4bb1f3874ull, 0xa4c954ce5cd2aae6ull, 0x061997bd6acd8048ull, 0x33b470caf935cae0ull, 0x1fdb54f0293d6aebull }}, {{ 0x25dda5487695e973ull, 0x0308e46f4f38348eull, 0x6fdd500fa03aad03ull, 0x3cffed662c0702d6ull, 0x050c67edbc19ecc0ull, 0x3e9151619c662d30ull }}, {{ 0x7aa874d4a1db1e7eull, 0x1e58ec5918320d8dull, 0x5ea5209c424ac21eull, 0x61ff45fdb8461c60ull, 0x327c0f4959033f82ull, 0x71ad2dd01bfdc3e0ull }}, {{ 0xca94904e528f30eaull, 0x2f793b7af1f48786ull, 0xb273461a96eb952dull, 0xd3f8bbe932bd1bc3ull, 0xf8d898dd7a207b17ull, 0x70c3ca2117e9a6c1ull }} }; BID_F128_CONST_DEF( c_neg_one, bfff000000000000, 0000000000000000); // -1.0 BID_F128_CONST_DEF( c_pi_ov_2, 3fff921fb54442d1, 8469898cc51701b8); // pi/2 BID128_FUNCTION_ARG1 (bid128_tan, x) // Local variables. BID_UINT128 res; int s, e; BID_UINT128 c; BID_F128_TYPE xd, yd; BID_UINT384 m; BID_UINT512 p; int sf, k, ef, el; // Decompose the input and check for NaN and infinity. s = x.w[BID_HIGH_128W] >> 63; if ((x.w[BID_HIGH_128W] & (3ull<<61)) == (3ull<<61)) { if ((x.w[BID_HIGH_128W] & (0xFull<<59)) == (0xFull<<59)) { if ((x.w[BID_HIGH_128W] & (0x1Full<<58)) != (0x1Full<<58)) { // input is infinite, so return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = BID128_NAN; BID_RETURN (res); } else { // input is NaN, so quiet/canonize it etc. #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64) __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN (res); } } else { // "large coefficient" input, which is always non-canonical here e = 0; c.w[1] = c.w[0] = 0ull; } } else { // "small coefficient" input, the normal case for finite numbers e = ((x.w[BID_HIGH_128W] >> 49) & ((1ull<<14)-1)) - 6176; c.w[1] = x.w[BID_HIGH_128W] & ((1ull<<49)-1); c.w[0] = x.w[BID_LOW_128W]; if (lt128(542101086242752ull,4003012203950112767ull,c.w[1],c.w[0])) { c.w[1] = 0ull; c.w[0] = 0ull; } } // Make sure we treat zero even with huge exponent as small if ((c.w[1] == 0) && (c.w[0] == 0)) e = -53; // If the input is <= 1/10 in magnitude, don't use the main path. // // If it's very small indeed, < 10^-18, use a trivial computation just to // ensure that we get sensible inclusions in directed rounding modes; in any // case this should be more efficient than the main path. // // Otherwise just call the conversion and tan function directly, // since no range reduction is needed and the function is well-conditioned if (e < -35) { if (e < -52) { BIDECIMAL_CALL3(bid128_fma,res,x,BID128_10PP40,x); BID_RETURN(res); } else { BIDECIMAL_CALL1(bid128_to_binary128,xd,x); __bid_f128_tan(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } } // Pick out the appropriate modulus for the exponent and multiply by coeff // Since we discard the top word p.w[3], we could specially optimize this. m = bid_decimal128_moduli[e+35]; __mul_128x384_to_512(p,c,m); // Shift up by two bits to give an integer part k and a fraction // modulo (pi/2). Note that we have to do this afterwards rather than // use modulo (pi/2) reduction at the start to keep integer parities. k = p.w[5] >> 62; sll256_short(p.w[5],p.w[4],p.w[3],p.w[2],2); // If the fraction is >= 1/2, add 1 to integer and complement the fraction // with an appropriate sign change so we have a "rounded to nearest" version // (Complementing is slightly different from negation but it's negligible.) // Set "sf" to the correct sign for the fraction if (p.w[5] >= 0x8000000000000000ull) { k = (k + 1) & 3; p.w[5] = ~p.w[5]; p.w[4] = ~p.w[4]; p.w[3] = ~p.w[3]; p.w[2] = ~p.w[2]; sf = 1 - s; } else { sf = s; } // Also correct k to take into account the sign if (s) k = (-k) & 3; // Normalize the binary fraction with exponent ef if (p.w[5] == 0) // Could we even have two clears? Marginal... { ef = 16382-64; p.w[5] = p.w[4]; p.w[4] = p.w[3]; p.w[3] = p.w[2]; } else ef = 16382; el = clz64_nz(p.w[5]); ef = ef - el; if (el != 0) sll192_short(p.w[5],p.w[4],p.w[3],el); // Shift right to be in the right place for a quad coefficient srl128_short(p.w[5],p.w[4],15); // Mask off integer bit and set up as quad precision number { union { BID_F128_TYPE d; BID_UINT128 i; } di; di.i.w[BID_LOW_128W] = p.w[4]; di.i.w[BID_HIGH_128W] = (((BID_UINT64) sf) << 63) + (((BID_UINT64)(ef)) << 48) + (p.w[5] & ((1ull<<48)-1)); xd = di.d; } // Multiply by pi/2 so we can use regular binary trig functions. __bid_f128_mul(xd, c_pi_ov_2.v, xd); // Now use the trig function depending on k: switch(k) { case 0: case 2: __bid_f128_tan(yd, xd); break; case 1: case 3: __bid_f128_tan(yd, xd); __bid_f128_div(yd, c_neg_one.v, yd); break; default: break; // default added to avoid compiler warning } BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } LIBRARY/src/bid128_pow.c0000644€­ Q01134020000014446415113665770013675 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" int abs(int); static BID_UINT128 BID128_0 = {BID128_LH_INIT( 0x0000000000000000ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_ZERO = {BID128_LH_INIT( 0x0000000000000000ull, 0x0000000000000000ull )}; static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_NAN = {BID128_LH_INIT( 0x0000000000000000ull, 0x7c00000000000000ull )}; static BID_UINT128 BID128_INF = {BID128_LH_INIT( 0x0000000000000000ull, 0x7800000000000000ull )}; // log(2) and log(10) scaled by 2^160 static BID_UINT192 bid_log_2_entry = {{ 0x03f2f6af40f34326ull, 0xd1cf79abc9e3b398ull, 0x00000000b17217f7ull }}; static BID_UINT192 bid_log_10_entry = {{ 0x0b4c28a38a3fb3e7ull, 0xaaa2b05ba95b58aeull, 0x000000024d763776ull }}; // 1/2, 1/3, ..., 1/10 as binary fractions static BID_UINT192 bid_recip_2 = {{ 0x0000000000000000ull, 0x0000000000000000ull, 0x8000000000000000ull }}; static BID_UINT192 bid_recip_3 = {{ 0x5555555555555555ull, 0x5555555555555555ull, 0x5555555555555555ull }}; static BID_UINT192 bid_recip_4 = {{ 0x0000000000000000ull, 0x0000000000000000ull, 0x4000000000000000ull }}; static BID_UINT192 bid_recip_5 = {{ 0x3333333333333333ull, 0x3333333333333333ull, 0x3333333333333333ull }}; static BID_UINT192 bid_recip_6 = {{ 0xaaaaaaaaaaaaaaabull, 0xaaaaaaaaaaaaaaaaull, 0x2aaaaaaaaaaaaaaaull }}; static BID_UINT192 bid_recip_7 = {{ 0x9249249249249249ull, 0x4924924924924924ull, 0x2492492492492492ull }}; static BID_UINT192 bid_recip_8 = {{ 0x0000000000000000ull, 0x0000000000000000ull, 0x2000000000000000ull }}; static BID_UINT192 bid_recip_9 = {{ 0x71c71c71c71c71c7ull, 0xc71c71c71c71c71cull, 0x1c71c71c71c71c71ull }}; static BID_UINT192 bid_recip_10 = {{ 0x999999999999999aull, 0x9999999999999999ull, 0x1999999999999999ull }}; // 10^28 * 2^96, used for final decimal alignment static BID_UINT192 bid_decimal_multiplier_1 = {{ 0x0000000000000000ull, 0x1000000000000000ull, 0x204fce5e3e250261ull }}; // Taylor series coefficients -1/2, 1/3, -1/4 static BID_UINT128 bid_coeff_2 = {BID128_LH_INIT( 0x0000000000000005ull, 0xb03e000000000000ull )}; static BID_UINT128 bid_coeff_3 = {BID128_LH_INIT( 0x67d9da2155555555ull, 0x2ffca45894e48295ull )}; static BID_UINT128 bid_coeff_4 = {BID128_LH_INIT( 0x0000000000000019ull, 0xb03c000000000000ull )}; // Reciprocal table // These are 1 + e for the various bitfields, scaled by 2^63 static BID_UINT64 bid_recip_table_1[] = { 0xfe03f80fe03f80feull, 0xfc0fc0fc0fc0fc0full, 0xfa232cf252138abfull, 0xf83e0f83e0f83e0full, 0xf6603d980f6603d9ull, 0xf4898d5f85bb3950ull, 0xf2b9d6480f2b9d64ull, 0xf0f0f0f0f0f0f0f0ull, 0xef2eb71fc4345238ull, 0xed7303b5cc0ed730ull, 0xebbdb2a5c1619c8bull, 0xea0ea0ea0ea0ea0eull, 0xe865ac7b7603a196ull, 0xe6c2b4481cd85689ull, 0xe525982af70c880eull, 0xe38e38e38e38e38eull, 0xe1fc780e1fc780e1ull, 0xe070381c0e070381ull, 0xdee95c4ca037ba57ull, 0xdd67c8a60dd67c8aull, 0xdbeb61eed19c5957ull, 0xda740da740da740dull, 0xd901b2036406c80dull, 0xd79435e50d79435eull, 0xd62b80d62b80d62bull, 0xd4c77b03531dec0dull, 0xd3680d3680d3680dull, 0xd20d20d20d20d20dull, 0xd0b69fcbd2580d0bull, 0xcf6474a8819ec8e9ull, 0xce168a7725080ce1ull, 0xccccccccccccccccull, 0xcb8727c065c393e0ull, 0xca4587e6b74f0329ull, 0xc907da4e871146acull, 0xc7ce0c7ce0c7ce0cull, 0xc6980c6980c6980cull, 0xc565c87b5f9d4d1bull, 0xc4372f855d824ca5ull, 0xc30c30c30c30c30cull, 0xc1e4bbd595f6e947ull, 0xc0c0c0c0c0c0c0c0ull, 0xbfa02fe80bfa02feull, 0xbe82fa0be82fa0beull, 0xbd69104707661aa2ull, 0xbc52640bc52640bcull, 0xbb3ee721a54d880bull, 0xba2e8ba2e8ba2e8bull, 0xb92143fa36f5e02eull, 0xb81702e05c0b8170ull, 0xb70fbb5a19be3658ull, 0xb60b60b60b60b60bull, 0xb509e68a9b94821full, 0xb40b40b40b40b40bull, 0xb30f63528917c80bull, 0xb21642c8590b2164ull, 0xb11fd3b80b11fd3bull, 0xb02c0b02c0b02c0bull, 0xaf3addc680af3addull, 0xae4c415c9882b931ull, 0xad602b580ad602b5ull, 0xac7691840ac76918ull, 0xab8f69e28359cd11ull, 0xaaaaaaaaaaaaaaaaull, 0xa9c84a47a07f5637ull, 0xa8e83f5717c0a8e8ull, 0xa80a80a80a80a80aull, 0xa72f05397829cbc1ull, 0xa655c4392d7b73a7ull, 0xa57eb50295fad40aull, 0xa4a9cf1d96833751ull, 0xa3d70a3d70a3d70aull, 0xa3065e3fae7cd0e0ull, 0xa237c32b16cfd772ull, 0xa16b312ea8fc377cull, 0xa0a0a0a0a0a0a0a0ull, 0x9fd809fd809fd809ull, 0x9f1165e7254813e2ull, 0x9e4cad23dd5f3a20ull, 0x9d89d89d89d89d89ull, 0x9cc8e160c3fb19b8ull, 0x9c09c09c09c09c09ull, 0x9b4c6f9ef03a3ca9ull, 0x9a90e7d95bc609a9ull, 0x99d722dabde58f06ull, 0x991f1a515885fb37ull, 0x9868c809868c8098ull, 0x97b425ed097b425eull, 0x97012e025c04b809ull, 0x964fda6c0964fda6ull, 0x95a02568095a0256ull, 0x94f2094f2094f209ull, 0x9445809445809445ull, 0x939a85c40939a85cull, 0x92f113840497889cull, 0x9249249249249249ull, 0x91a2b3c4d5e6f809ull, 0x90fdbc090fdbc090ull, 0x905a38633e06c43aull, 0x8fb823ee08fb823eull, 0x8f1779d9fdc3a218ull, 0x8e78356d1408e783ull, 0x8dda520237694808ull, 0x8d3dcb08d3dcb08dull, 0x8ca29c046514e023ull, 0x8c08c08c08c08c08ull, 0x8b70344a139bc75aull, 0x8ad8f2fba9386822ull, 0x8a42f8705669db46ull, 0x89ae4089ae4089aeull, 0x891ac73ae9819b50ull, 0x8888888888888888ull, 0x87f78087f78087f7ull, 0x8767ab5f34e47ef1ull, 0x86d905447a34acc6ull, 0x864b8a7de6d1d608ull, 0x85bf37612cee3c9aull, 0x8534085340853408ull, 0x84a9f9c8084a9f9cull, 0x8421084210842108ull, 0x839930523fbe3367ull, 0x83126e978d4fdf3bull, 0x828cbfbeb9a020a3ull, 0x8208208208208208ull, 0x81848da8faf0d277ull, 0x8102040810204081ull, 0x8080808080808080ull, 0x8000000000000000ull }; static BID_UINT64 bid_recip_table_2[] = { 0x80fffbf800203ffeull, 0x80fdf3f850df3775ull, 0x80fbec0901971b20ull, 0x80f9e42a1181ebb8ull, 0x80f7dc5b7fd9b66aull, 0x80f5d49d4bd894dbull, 0x80f3ccef74b8ad27ull, 0x80f1c551f9b431ddull, 0x80efbdc4da056202ull, 0x80edb64814e6890cull, 0x80ebaedba991fee5ull, 0x80e9a77f974227e8ull, 0x80e7a033dd3174ddull, 0x80e598f87a9a6300ull, 0x80e391cd6eb77bf6ull, 0x80e18ab2b8c355d6ull, 0x80df83a857f8931full, 0x80dd7cae4b91e2bdull, 0x80db75c492ca0008ull, 0x80d96eeb2cdbb2bdull, 0x80d768221901cf06ull, 0x80d5616956773570ull, 0x80d35ac0e476d2f2ull, 0x80d15428c23ba0e5ull, 0x80cf4da0ef00a509ull, 0x80cd47296a00f180ull, 0x80cb40c23277a4d0ull, 0x80c93a6b479fe9ddull, 0x80c73424a8b4f7efull, 0x80c52dee54f212acull, 0x80c327c84b928a19ull, 0x80c121b28bd1ba97ull, 0x80bf1bad14eb0ce7ull, 0x80bd15b7e619f621ull, 0x80bb0fd2fe99f7bbull, 0x80b909fe5da69f85ull, 0x80b7043a027b87a4ull, 0x80b4fe85ec545699ull, 0x80b2f8e21a6cbf39ull, 0x80b0f34e8c0080b0ull, 0x80aeedcb404b667full, 0x80ace85836894879ull, 0x80aae2f56df60ac6ull, 0x80a8dda2e5cd9ddfull, 0x80a6d8609d4bfe8eull, 0x80a4d32e93ad35edull, 0x80a2ce0cc82d5965ull, 0x80a0c8fb3a088aadull, 0x809ec3f9e87af7c9ull, 0x809cbf08d2c0db0aull, 0x809aba27f8167b0cull, 0x8098b55757b82ab2ull, 0x8096b096f0e2492dull, 0x8094abe6c2d141f4ull, 0x8092a746ccc18cc4ull, 0x8090a2b70defada3ull, 0x808e9e37859834daull, 0x808c99c832f7bef8ull, 0x808a9569154af4cfull, 0x8088911a2bce8b74ull, 0x80868cdb75bf443bull, 0x808488acf259ecbcull, 0x8082848ea0db5eccull, 0x8080808080808080ull, 0x807e7c829086442bull, 0x807c7894d029a85bull, 0x807a74b73ea7b7dbull, 0x807870e9db3d89b1ull, 0x80766d2ca528411cull, 0x8074697f9ba50d94ull, 0x807265e2bdf12acaull, 0x807062560b49e0a4ull, 0x806e5ed982ec8340ull, 0x806c5b6d241672f0ull, 0x806a5810ee051c3bull, 0x806854c4dff5f7d9ull, 0x80665188f9268ab6ull, 0x80644e5d38d465efull, 0x80624b419e3d26d1ull, 0x80604836289e76d9ull, 0x805e453ad7360bb0ull, 0x805c424fa941a730ull, 0x805a3f749dff175cull, 0x80583ca9b4ac3665ull, 0x805639eeec86eaa5ull, 0x8054374444cd26a1ull, 0x805234a9bcbce905ull, 0x8050321f53943ca5ull, 0x804e2fa50891387eull, 0x804c2d3adaf1ffafull, 0x804a2ae0c9f4c17full, 0x80482896d4d7b958ull, 0x8046265cfad92ec5ull, 0x804424333b377576ull, 0x804222199530ed3aull, 0x8040201008040201ull, 0x803e1e1692ef2bd9ull, 0x803c1c2d3530eef0ull, 0x803a1a53ee07db8full, 0x8038188abcb28e1eull, 0x803616d1a06faf1dull, 0x80341528987df32aull, 0x8032138fa41c1afaull, 0x80301206c288f35bull, 0x802e108df3035532ull, 0x802c0f2534ca257cull, 0x802a0dcc871c554bull, 0x80280c83e938e1c6ull, 0x80260b4b5a5ed426ull, 0x80240a22d9cd41baull, 0x8022090a66c34be0ull, 0x8020080200802008ull, 0x801e0709a642f7b2ull, 0x801c0621574b186dull, 0x801a054912d7d3d7ull, 0x80180480d8288799ull, 0x801603c8a67c9d6bull, 0x801403207d138b0dull, 0x801202885b2cd24dull, 0x8010020040080100ull, 0x800e01882ae4b103ull, 0x800c01201b02883cull, 0x800a00c80fa13898ull, 0x8008008008008008ull, 0x8006004803602881ull, 0x8004002001000800ull, 0x8002000800200080ull, 0x8000000000000000ull }; // Corresponding logs of the bitfields (1 + e) // Scaled by 2^160 so the binary point is in the middle of the top word. static BID_UINT192 bid_log_table_1[] = {{ { 0xe63073dc8d1016e7ull, 0x20c9011c026d235eull, 0x00000000af741551ull }}, {{ 0x949b4bd30ae78496ull, 0xb24efd31120864fdull, 0x00000000ad7a02e1ull }}, {{ 0xa902ef3bca1d3892ull, 0xdc633300f9e6607bull, 0x00000000ab83d135ull }}, {{ 0x14d057006dd861daull, 0x33c2b99803a4aea6ull, 0x00000000a9917134ull }}, {{ 0xa7688479bf28cadfull, 0xd270c9d6c3362382ull, 0x00000000a7a2d41aull }}, {{ 0xdec6e0729cfc4174ull, 0xb860fb886f6a62a0ull, 0x00000000a5b7eb7cull }}, {{ 0x088c0d645ff0dfe5ull, 0x45169a49fb594fabull, 0x00000000a3d0a93full }}, {{ 0x8e597e15edabf5f3ull, 0xc91e267a0b7efae0ull, 0x00000000a1ecff97ull }}, {{ 0x30cd12419c4a3d80ull, 0x2e5498c357879c5aull, 0x00000000a00ce109ull }}, {{ 0xb6df81ad1ee478cbull, 0xb5fda918f0603d87ull, 0x000000009e304061ull }}, {{ 0xd4619e62e8c9628bull, 0xcbb73a4194554b2dull, 0x000000009c5710b8ull }}, {{ 0xea3cb5e0b3b153c1ull, 0xec642e0f3549f9aaull, 0x000000009a81456cull }}, {{ 0x1647b357f38b04e6ull, 0xa03458b5592f8932ull, 0x0000000098aed221ull }}, {{ 0xc94e2f14a18360f8ull, 0x86fa1646ba1188fbull, 0x0000000096dfaabdull }}, {{ 0xa24180119a004a4aull, 0x7608369597cbc416ull, 0x000000009513c368ull }}, {{ 0x0554e1517fa486e6ull, 0xa6dc93c19f5bb3b6ull, 0x00000000934b1089ull }}, {{ 0xd1a4bab00f4e88a5ull, 0xf5e4bf007d92199eull, 0x00000000918586c5ull }}, {{ 0x7e95da6695b64599ull, 0x30b2c6ddbf00bf16ull, 0x000000008fc31afeull }}, {{ 0xce247837b0283991ull, 0x73003959a7dae1ccull, 0x000000008e03c24dull }}, {{ 0x15fe25a52caa3c17ull, 0x91e533134e2ad194ull, 0x000000008c477207ull }}, {{ 0xa173c82d0a3a687full, 0x94b0913374b628dbull, 0x000000008a8e1fb7ull }}, {{ 0x07b6de2c2af1b1b1ull, 0x3ad53cdb5e3111a7ull, 0x0000000088d7c11eull }}, {{ 0x6dbfa8f76fb9d89eull, 0x8e670a6557e005d0ull, 0x0000000087244c30ull }}, {{ 0xc1ab80b25996cfd0ull, 0x82a7d21a821f9f89ull, 0x000000008573b716ull }}, {{ 0x8fbb68b8860b39b3ull, 0x9e2b409086f6fafeull, 0x0000000083c5f829ull }}, {{ 0xf7e2ea1f34421975ull, 0xb01d6773a70d58c3ull, 0x00000000821b05f3ull }}, {{ 0x70c40109e16c8c6full, 0x903d588b47d1b09cull, 0x000000008072d72dull }}, {{ 0x92c60a629d146f57ull, 0xe92210bf1f82c926ull, 0x000000007ecd62bdull }}, {{ 0xd0daa6e73c846810ull, 0x0c64b378d9c052a2ull, 0x000000007d2a9fb8ull }}, {{ 0x6a075f47c3b28981ull, 0xd04f93f9c9238128ull, 0x000000007b8a855aull }}, {{ 0xc69f32e99837fa4dull, 0x76b5cd575446a17bull, 0x0000000079ed0b0full }}, {{ 0x047fb218f98d58b2ull, 0x9c9b36527e3375b2ull, 0x0000000078522868ull }}, {{ 0x99f214cbd1b63067ull, 0x325856f467c8e7a5ull, 0x0000000076b9d521ull }}, {{ 0x06b6cbf3cccdcaa6ull, 0x7be9add7d8d3b3d4ull, 0x000000007524091bull }}, {{ 0xf38eccb923c9bca3ull, 0x191d0d06a0270b29ull, 0x000000007390bc60ull }}, {{ 0xda4d629cce9afed1ull, 0x155324907f56db28ull, 0x0000000071ffe71dull }}, {{ 0x155d126aa6727766ull, 0xfe8e763fb7f470c0ull, 0x00000000707181a4ull }}, {{ 0x43c21420e4b59368ull, 0x038bec2cfe053336ull, 0x000000006ee5846eull }}, {{ 0x377f156217d5a735ull, 0x18a4254891610665ull, 0x000000006d5be811ull }}, {{ 0xe867747032763e82ull, 0x2337419d16c45dd3ull, 0x000000006bd4a549ull }}, {{ 0x20373373b04257c8ull, 0x2b678dbc6da9de97ull, 0x000000006a4fb4f2ull }}, {{ 0x8ee6398026460b7full, 0x93e9e321bfcebcfaull, 0x0000000068cd1008ull }}, {{ 0xc30d6b5478801390ull, 0x57b4ec304b979fa7ull, 0x00000000674cafa8ull }}, {{ 0xe38603338cc5d374ull, 0x4d5ab73a66bf4983ull, 0x0000000065ce8d0cull }}, {{ 0xd3af1a0c9ffb2cb0ull, 0x6fda2651a84673e0ull, 0x000000006452a18dull }}, {{ 0xcfcf793fe0d57366ull, 0x2cb7d28e9d0c7dc7ull, 0x0000000062d8e6a2ull }}, {{ 0xeac9714ab299694dull, 0xb72feab6a399bbc4ull, 0x00000000616155ddull }}, {{ 0x1225e6576c261e66ull, 0x60546fb6bbf6d4cbull, 0x000000005febe8efull }}, {{ 0x0dd9d7f5da25bcb3ull, 0xf3ecf63e337e8bbcull, 0x000000005e7899a1ull }}, {{ 0x582cd3054f0c938eull, 0x19eec58464ee3059ull, 0x000000005d0761dbull }}, {{ 0xa335f5b6183f100dull, 0xbc65c8586f088b61ull, 0x000000005b983b9aull }}, {{ 0x05e19cbb9c1e9c72ull, 0x71a850690bab75d0ull, 0x000000005a2b20faull }}, {{ 0xfcca3ce6a26bcbddull, 0xeab124ede26728ffull, 0x0000000058c00c2cull }}, {{ 0x75d89d81427e26f3ull, 0x657cbe9a62eb7344ull, 0x000000005756f77dull }}, {{ 0xa4e735e98bc1f4c1ull, 0x2347eb7b3597503bull, 0x0000000055efdd4full }}, {{ 0xb43511045b123558ull, 0xe28f5f3800b263acull, 0x00000000548ab81cull }}, {{ 0x168ae10f3a3251a3ull, 0x5cb0efbab87a93aeull, 0x0000000053278278ull }}, {{ 0x6eeebf99342b772full, 0xc7106c18f74c14c5ull, 0x0000000051c63709ull }}, {{ 0x9c8c6dbe569cd133ull, 0x57a31c85bb921c13ull, 0x000000005066d08full }}, {{ 0x139d42af7aa0c172ull, 0xccc60ed52581af57ull, 0x000000004f0949dcull }}, {{ 0xe9c95f123aa58242ull, 0xf8445bb2ae3c5df1ull, 0x000000004dad9ddaull }}, {{ 0xc2383c1c9230e55cull, 0x4d738ec2366f61a3ull, 0x000000004c53c787ull }}, {{ 0xf78319893222f82cull, 0x724d4e7c83280279ull, 0x000000004afbc1f3ull }}, {{ 0x02aa70a843d24373ull, 0xd36e49dfefadd9dbull, 0x0000000049a58844ull }}, {{ 0x304e443b00672a50ull, 0x3ae350fac548d75dull, 0x00000000485115b4ull }}, {{ 0x6ee57ace0f2a5500ull, 0x69ae537648a3dedbull, 0x0000000046fe658dull }}, {{ 0x9352c5cc8dc684e3ull, 0xb3edcd6637d28b40ull, 0x0000000045ad732eull }}, {{ 0xcb7a078ed127f61eull, 0x9f91ef78562d07f1ull, 0x00000000445e3a08ull }}, {{ 0x47b9078e5335fd06ull, 0x858b8c44911e7574ull, 0x000000004310b59dull }}, {{ 0x1387d0f9f0b76226ull, 0x356189cd296ed4e9ull, 0x0000000041c4e181ull }}, {{ 0x9a3ceafa276bc5a5ull, 0x9b1a43dce8de85adull, 0x00000000407ab958ull }}, {{ 0x050c6d83a0276e3eull, 0x6766f2fad28337ccull, 0x000000003f3238d9ull }}, {{ 0xdd7e5a6c1fdb41c1ull, 0xb9ffcbbd953488e3ull, 0x000000003deb5bc9ull }}, {{ 0x608325248af34d37ull, 0xce20242436c083e8ull, 0x000000003ca61dffull }}, {{ 0xb2e20c5dc5072b02ull, 0xa91280692c7527e5ull, 0x000000003b627b61ull }}, {{ 0x8d10f80f708af640ull, 0xcabcf6af31492123ull, 0x000000003a206fe4ull }}, {{ 0xdada1e05f743145dull, 0xe01ee1373da69d42ull, 0x0000000038dff78dull }}, {{ 0x16d742aa95451881ull, 0x77b15a1d8b55f6a5ull, 0x0000000037a10e70ull }}, {{ 0xb596fba6a1c37918ull, 0xb79c794e162a63caull, 0x000000003663b0aeull }}, {{ 0x901b99b8ea622be4ull, 0x15b3c6dcf7d4ef4bull, 0x000000003527da79ull }}, {{ 0xcfde7059c049ab10ull, 0x112cc8252432c0bcull, 0x0000000033ed880eull }}, {{ 0xe8f42fd9b008540eull, 0xee02fe43cf141fedull, 0x0000000032b4b5b9ull }}, {{ 0xe900afcb09640480ull, 0x71fd185400a2da65ull, 0x00000000317d5fd6ull }}, {{ 0xc3f4c240f447b6daull, 0xa3478376ce98c7a0ull, 0x00000000304782caull }}, {{ 0xc805a90e24626144ull, 0x8898e67bdfdbaf3eull, 0x000000002f131b0aull }}, {{ 0x4c9d43f79ad3f115ull, 0xead577390131ef0full, 0x000000002de02516ull }}, {{ 0xe412be9dc55fe900ull, 0x182673e21b0f0b9dull, 0x000000002cae9d7dull }}, {{ 0x040c5b4a18838733ull, 0xa87b63f5a525d9f9ull, 0x000000002b7e80d6ull }}, {{ 0x520152b7a0832ecbull, 0x436b19f3b4b4bee3ull, 0x000000002a4fcbc9ull }}, {{ 0x3b2d046d0aec4996ull, 0x676ac1bb627edb3cull, 0x0000000029227b06ull }}, {{ 0x7d4d5460189545e6ull, 0x32519712e4cae559ull, 0x0000000027f68b4bull }}, {{ 0x12b2a1c1e2a033f2ull, 0x2b202c5ec84696e5ull, 0x0000000026cbf960ull }}, {{ 0x1a822120a8d8deb0ull, 0x0d0273acbb703694ull, 0x0000000025a2c219ull }}, {{ 0x14b59f9eaf893c64ull, 0x9384034873f4f7d7ull, 0x00000000247ae254ull }}, {{ 0x21032f2feeafc974ull, 0x47ee53c6ea1c4c9aull, 0x00000000235456fcull }}, {{ 0xe5bd03c76ea3fb0full, 0x4fc8f7bc271683f8ull, 0x00000000222f1d04ull }}, {{ 0x066e5825f4b6b1feull, 0x3c740d1119fb37eaull, 0x00000000210b316bull }}, {{ 0xb1b2523bfc137707ull, 0xdbd56593182f7a81ull, 0x000000001fe89139ull }}, {{ 0xe581ee6749cad473ull, 0x0a111fca840cdd0full, 0x000000001ec73983ull }}, {{ 0xc062faaab5f5d01dull, 0x8446a24e77e9c5ccull, 0x000000001da72763ull }}, {{ 0x9c1799a1b453ed90ull, 0xbc4b2367d32d5669ull, 0x000000001c885801ull }}, {{ 0xb4c1cc6e6c244ae4ull, 0xad5b1bdf590225c6ull, 0x000000001b6ac88dull }}, {{ 0xf69a64178f2919c2ull, 0xb1bc37a798d77f06ull, 0x000000001a4e7640ull }}, {{ 0xcd2508971d032ff3ull, 0x594988adad5ea3ecull, 0x0000000019335e5dull }}, {{ 0xed428f997c2e0ec4ull, 0x40e3f01b552dffbeull, 0x0000000018197e2full }}, {{ 0x917d845b31136fa4ull, 0xeac0e0f30d4cef69ull, 0x000000001700d30aull }}, {{ 0x1429fe196852d6feull, 0x9791cb7c1dd17171ull, 0x0000000015e95a4dull }}, {{ 0x0b2f674c4d5b793full, 0x207eac5c57d0b1e1ull, 0x0000000014d3115dull }}, {{ 0x68bed941469189cdull, 0xd1ee642eeeeda76bull, 0x0000000013bdf5a7ull }}, {{ 0x70238b2e873caddcull, 0x4717a48b30b1cb41ull, 0x0000000012aa04a4ull }}, {{ 0xa6148a2a2200085bull, 0x465566d0b4f930b2ull, 0x0000000011973bd1ull }}, {{ 0x03372c127c6c58ffull, 0x9e3a0687a3fd9bf5ull, 0x00000000108598b5ull }}, {{ 0x93278a93171c8028ull, 0x035c3dd74406d890ull, 0x000000000f7518e0ull }}, {{ 0x2058d6004ad0f9a6ull, 0xeed965c31209f5feull, 0x000000000e65b9e6ull }}, {{ 0x056e45ed4faccaf3ull, 0x7d887e0cfe9dda17ull, 0x000000000d577968ull }}, {{ 0xa23cc5408981b14eull, 0x4fd9a199cbe97660ull, 0x000000000c4a550aull }}, {{ 0xcc06c2f862da0baaull, 0x6a5dac1f467cca0bull, 0x000000000b3e4a79ull }}, {{ 0xd904dc965179ff1dull, 0x16f1f4c5a521016bull, 0x000000000a33576aull }}, {{ 0x4dd423bc8ee5b88eull, 0xc68c1f4c7810db3dull, 0x0000000009297997ull }}, {{ 0x6c444ef0506133bcull, 0xf3a222378b9e3aeaull, 0x000000000820aec4ull }}, {{ 0x42798e198e5a93b5ull, 0x052abc617dcf5979ull, 0x000000000718f4bbull }}, {{ 0x059928ed9fb983caull, 0x3232afa222d2f9e6ull, 0x000000000612494aull }}, {{ 0xbe6da572cf969071ull, 0x66033026d450c6ffull, 0x00000000050caa49ull }}, {{ 0xe71eee69b5553ecfull, 0x24d611d23c8e8416ull, 0x0000000004081596ull }}, {{ 0xc26800aca0931098ull, 0x7114554348c584dfull, 0x0000000003048914ull }}, {{ 0xf3b401e916faf842ull, 0xb11bce251598b505ull, 0x00000000020202aeull }}, {{ 0x8d9db379a9250bccull, 0x9588b356e598e33dull, 0x0000000001008055ull }}, {{ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull }} }; static BID_UINT192 bid_log_table_2[] = {{ { 0x72fe3e8d2a020d93ull, 0xb126788d20bbe98eull, 0x0000000001fdfaa6ull }}, {{ 0xd10f58ffc08c8951ull, 0xf1701f78d37ed9aaull, 0x0000000001f9f2aeull }}, {{ 0x6172d205bb2f8b61ull, 0x7175c001e25b2bcdull, 0x0000000001f5eac7ull }}, {{ 0x04939d9b99f60c13ull, 0x30b45d7e491b02c9ull, 0x0000000001f1e2f0ull }}, {{ 0xf68243407a5c91f7ull, 0x2ea9016c0535b7f5ull, 0x0000000001eddb29ull }}, {{ 0xe359660c41a45a7cull, 0x6ad0bb7a94f46f9full, 0x0000000001e9d372ull }}, {{ 0x61ec2c1014a74ae8ull, 0xe4a8a18a8a4686ffull, 0x0000000001e5cbcbull }}, {{ 0x0a55cdfa48fa35bfull, 0x9badcfa728addb01ull, 0x0000000001e1c435ull }}, {{ 0x72eac6dfa53cd862ull, 0x8f5d680de86ae71cull, 0x0000000001ddbcafull }}, {{ 0x72f2a8aa5dd72519ull, 0xbf34932617c0bb7dull, 0x0000000001d9b539ull }}, {{ 0x1f75851bb3c02a44ull, 0x2ab07f885e10c9c2ull, 0x0000000001d5add4ull }}, {{ 0x0b492500d549c660ull, 0xd14e61fa554e8790ull, 0x0000000001d1a67eull }}, {{ 0x6868f04dbec04b53ull, 0xb28b75682682e643ull, 0x0000000001cd9f39ull }}, {{ 0xbd7f72756a551b1full, 0xcde4faf3fe679efaull, 0x0000000001c99804ull }}, {{ 0xf761ce28cb1f49baull, 0x22d839e1c2ea5241ull, 0x0000000001c590e0ull }}, {{ 0xb3143cdfb3903ac7ull, 0xb0e27faa80a77a9full, 0x0000000001c189cbull }}, {{ 0xb1c2dee0d1548f92ull, 0x77811fea1c053147ull, 0x0000000001bd82c7ull }}, {{ 0x7cebab42362b725bull, 0x7631746acce5c435ull, 0x0000000001b97bd3ull }}, {{ 0x55c53a351a985556ull, 0xac70dd24afc21cf2ull, 0x0000000001b574efull }}, {{ 0x9fba713fec263f27ull, 0x19bcc0316adbf749ull, 0x0000000001b16e1cull }}, {{ 0x0a9cc842dc4db7a3ull, 0xbd9289dd9fffe72full, 0x0000000001ad6758ull }}, {{ 0xd5f5ef682208558full, 0x976fac969b6f2d19ull, 0x0000000001a960a5ull }}, {{ 0x9ba612e7a4a62b66ull, 0xa6d1a0f9c9295818ull, 0x0000000001a55a02ull }}, {{ 0x24bdd0b7a19d24e3ull, 0xeb35e5c65c4db4e1ull, 0x0000000001a1536full }}, {{ 0xe0422faffacaf120ull, 0x6419ffe8cb2c891full, 0x00000000019d4cedull }}, {{ 0xa845866d624aac96ull, 0x10fb7a726c301a4aull, 0x000000000199467bull }}, {{ 0x967a43c213bc5e66ull, 0xf157e69efbc57f3aull, 0x0000000001954018ull }}, {{ 0xbe1bf24ab9273ce4ull, 0x04acdbca3bad3bd0ull, 0x00000000019139c7ull }}, {{ 0xb5bf9dfe1b9d3380ull, 0x4a77f77d6c13a5e9ull, 0x00000000018d3385ull }}, {{ 0xf04ef4996e941430ull, 0xc236dd64ea9112e3ull, 0x0000000001892d53ull }}, {{ 0xf921123f7c075f09ull, 0x6b673753bad9ccfcull, 0x0000000001852732ull }}, {{ 0xbbd0e9b40a862568ull, 0x4586b53f1ba5cfc9ull, 0x0000000001812121ull }}, {{ 0x151b9c888f00fdbaull, 0x50130d4806484b0eull, 0x00000000017d1b20ull }}, {{ 0xfeb8e2f2a438b4a9ull, 0x8a89fbaad53eeb37ull, 0x000000000179152full }}, {{ 0xbcc4d64889e6d1eeull, 0xf46942ceba98e6c2ull, 0x0000000001750f4eull }}, {{ 0x87f50b27f9bf4a84ull, 0x8d2eab3f5755cfc6ull, 0x000000000171097eull }}, {{ 0x4472eaf46c7fedfdull, 0x545803a454e428f9ull, 0x00000000016d03beull }}, {{ 0xe9d2a7437b53ae7dull, 0x496320d0dbf7bd64ull, 0x000000000168fe0eull }}, {{ 0x5538f4cd84538f66ull, 0x6bcdddb5366fba18ull, 0x000000000164f86eull }}, {{ 0x5359f88d5125505cull, 0xbb161b6651848917ull, 0x000000000160f2deull }}, {{ 0xc4917742397580e3ull, 0x36b9c11b4e256cceull, 0x00000000015ced5full }}, {{ 0xd1e7678118175537ull, 0xde36bc2913addb51ull, 0x000000000158e7efull }}, {{ 0x3e6480701f925de6ull, 0xb10b0009d22298a5ull, 0x000000000154e290ull }}, {{ 0xf4a8438df76df5bbull, 0xaeb4865697668f5dull, 0x000000000150dd41ull }}, {{ 0x053d4f76b259dcbdull, 0xd6b14ec8d95766d8ull, 0x00000000014cd802ull }}, {{ 0x5eb1840e53ab9ac1ull, 0x287f5f3a0281d64bull, 0x000000000148d2d4ull }}, {{ 0x9cfda6c0f52c5915ull, 0xa39cc3a2feadb403ull, 0x000000000144cdb5ull }}, {{ 0x624bc7be087a8c15ull, 0x47878e1bc741c000ull, 0x000000000140c8a7ull }}, {{ 0xbfaca7a5d00c5a4eull, 0x13bdd6daef7f2943ull, 0x00000000013cc3a9ull }}, {{ 0x48cac86ea7b5553full, 0x07bdbc372e24cd14ull, 0x000000000138bebbull }}, {{ 0x8225ac962da2313full, 0x230562a4ebea2f78ull, 0x000000000134b9ddull }}, {{ 0x6dd90d92765d54abull, 0x6512f4afd6622c31ull, 0x000000000130b50full }}, {{ 0x0f6a8627972ffe09ull, 0xcd64a30a585d5f7aull, 0x00000000012cb051ull }}, {{ 0xd38c4ecb13f5175full, 0x5b78a47f365445d1ull, 0x000000000128aba4ull }}, {{ 0xdd353ae7d7de1145ull, 0x0ecd35f317191217ull, 0x000000000124a707ull }}, {{ 0x4ddd24e2e245cc83ull, 0xe6e09a6c05d1393dull, 0x000000000120a279ull }}, {{ 0xb31965279fd8ef2cull, 0xe3311b07087eb2d4ull, 0x00000000011c9dfcull }}, {{ 0xd83eced7bf537999ull, 0x033d06ffa1c0edc4ull, 0x0000000001189990ull }}, {{ 0x4f15fa9536ee72c0ull, 0x4682b3ab601d7865ull, 0x0000000001149533ull }}, {{ 0x171366734612a9b7ull, 0xac807c7b66605b4bull, 0x00000000011090e6ull }}, {{ 0xdee72126da0f36aeull, 0x34b4c2f5fc64260bull, 0x00000000010c8caaull }}, {{ 0x709756e7debe794full, 0xde9deec20c91ad3eull, 0x000000000108887dull }}, {{ 0xecb627d755399c55ull, 0xa9ba6d9abab778feull, 0x0000000001048461ull }}, {{ 0x8d9db379a9250bccull, 0x9588b356e598e33dull, 0x0000000001008055ull }}, {{ 0xbff53a2f0fa84d57ull, 0xa18739e6b2ece51eull, 0x0000000000fc7c59ull }}, {{ 0x72179dc36c8d9d06ull, 0xcd34814f1cf492b3ull, 0x0000000000f8786dull }}, {{ 0x9046652d7be50b85ull, 0x180f0faf76014450ull, 0x0000000000f47492ull }}, {{ 0xb7e4b5b0f57c0b29ull, 0x8195713ef3e26cccull, 0x0000000000f070c6ull }}, {{ 0x40437575f443563aull, 0x0946384a3afb1bebull, 0x0000000000ec6d0bull }}, {{ 0xcbd3015f0e95ce08ull, 0xae9ffd34e55f2c3bull, 0x0000000000e8695full }}, {{ 0xa8d789f43d76ac25ull, 0x71215e7b09f81bb5ull, 0x0000000000e465c4ull }}, {{ 0x5d0349f15814d0cdull, 0x504900aacab18e56ull, 0x0000000000e06239ull }}, {{ 0xcb9d5cd39ce72611ull, 0x4b958e6bd5e57a0aull, 0x0000000000dc5ebeull }}, {{ 0x7a1d04d21207e8b5ull, 0x6285b878f42ffb2aull, 0x0000000000d85b53ull }}, {{ 0x8b5faea8825823ceull, 0x949835a38d42d0ccull, 0x0000000000d457f8ull }}, {{ 0x1ddbf67f0b96cb4full, 0xe14bc2cd3510803eull, 0x0000000000d054adull }}, {{ 0xcd6d5cdf0acd61a8ull, 0x481f22ef2d171ee1ull, 0x0000000000cc5173ull }}, {{ 0x2d8b3ca925df83f4ull, 0xc8911f15efa2c1c0ull, 0x0000000000c84e48ull }}, {{ 0x24f1ecb495eb1645ull, 0x62208660b7779211ull, 0x0000000000c44b2eull }}, {{ 0x27f6c8a1221ae7e9ull, 0x144c2e0305d38606ull, 0x0000000000c04824ull }}, {{ 0x62ef25475f73fa45ull, 0xde92f13e2e57bd1dull, 0x0000000000bc4529ull }}, {{ 0xfa3ef675acd26d22ull, 0xc073b16cd5497f45ull, 0x0000000000b8423full }}, {{ 0x99ce252ea0caacc4ull, 0xb96d55f48112de1dull, 0x0000000000b43f65ull }}, {{ 0xa1cb48a0dc2053aaull, 0xc8fecc51186af78full, 0x0000000000b03c9bull }}, {{ 0x52c79fcf96942b77ull, 0xeea7080c6ee5d91eull, 0x0000000000ac39e1ull }}, {{ 0x6f5acfd4697689f3ull, 0x29e502c3c76c031eull, 0x0000000000a83738ull }}, {{ 0xdd9d0a338c021284ull, 0x7a37bc215ec98b2dull, 0x0000000000a4349eull }}, {{ 0xe6e3d90895ae9033ull, 0xdf1e39dfef44dd2dull, 0x0000000000a03214ull }}, {{ 0xc848e394b16e2df0ull, 0x581787ce346d1a09ull, 0x00000000009c2f9bull }}, {{ 0x5a9a8da6a14b641eull, 0xe4a2b7c278a01392ull, 0x0000000000982d31ull }}, {{ 0xac6c600b35601bf2ull, 0x843ee1a8123fe4b7ull, 0x0000000000942ad8ull }}, {{ 0x7d10af0414062f9bull, 0x366b2376ee702569ull, 0x000000000090288full }}, {{ 0x9b55f789c001b21bull, 0xfaa6a13117a2b967ull, 0x00000000008c2655ull }}, {{ 0x3ef0ebeabfb14621ull, 0xd07084ec356c394bull, 0x000000000088242cull }}, {{ 0x87882500b8a908c8ull, 0xb747fec7176ff512ull, 0x0000000000842213ull }}, {{ 0x605fe77f29ee7d82ull, 0xaeac44ef37338f77ull, 0x000000000080200aull }}, {{ 0x1bab643f22de0952ull, 0xb61c939c3f32315bull, 0x00000000007c1e11ull }}, {{ 0x2c8d50170d5157a1ull, 0xcd182d158cb75490ull, 0x0000000000781c28ull }}, {{ 0x7ad3a38da93d4a4cull, 0xf31e59a9b879254bull, 0x0000000000741a4full }}, {{ 0xdf79c540233a69b2ull, 0x27ae67b8166a7986ull, 0x0000000000701887ull }}, {{ 0x6cf9532e517c2b73ull, 0x6a47aba43f9c5d9eull, 0x00000000006c16ceull }}, {{ 0x3a6c301993a32058ull, 0xba697fe390473572ull, 0x0000000000681525ull }}, {{ 0x7c7a6a6090b70a57ull, 0x179344f0b1237156ull, 0x000000000064138dull }}, {{ 0xcb04029eac835c05ull, 0x8144615118b9d61bull, 0x0000000000601204ull }}, {{ 0x8669890a8a1e364cull, 0xf6fc41928ffb5779ull, 0x00000000005c108bull }}, {{ 0x6346fa6788380cb6ull, 0x783a584eb4708424ull, 0x0000000000580f23ull }}, {{ 0x3762381d7cb42211ull, 0x047e1e267d4082dbull, 0x0000000000540dcbull }}, {{ 0x3679eb5e7383af73ull, 0x9b4711c3bdcf9fb4ull, 0x0000000000500c82ull }}, {{ 0xe18a9945d1997d35ull, 0x3c14b7d4aa2d68f4ull, 0x00000000004c0b4aull }}, {{ 0xff0626418f01282dull, 0xe6669b15570a5abeull, 0x0000000000480a21ull }}, {{ 0x065e01819d3dac0aull, 0x99bc4c43404d18ddull, 0x0000000000440909ull }}, {{ 0x7d21af41c15e526full, 0x55956224c95f35f8ull, 0x0000000000400801ull }}, {{ 0xd7d2691f0e98398bull, 0x19717986c0698784ull, 0x00000000003c0709ull }}, {{ 0x8469105720533f8dull, 0xe4d0353be0c805a9ull, 0x0000000000380620ull }}, {{ 0xd865b6010e103082ull, 0xb7313e1e54ed3675ull, 0x0000000000340548ull }}, {{ 0xb01789dc8c0b4938ull, 0x9014430939cd23a9ull, 0x0000000000300480ull }}, {{ 0xa0a1118ee52234cbull, 0x6ef8f8e21ecfda5dull, 0x00000000002c03c8ull }}, {{ 0xb20f202afb997aaaull, 0x535f1a8c89fb73d5ull, 0x0000000000280320ull }}, {{ 0xaaa92179ee907a16ull, 0x3cc668f7772da6c9ull, 0x0000000000240288ull }}, {{ 0x086eed5a712b85c0ull, 0x2aaeab10dbbce06eull, 0x0000000000200200ull }}, {{ 0xd9837ee4d512d887ull, 0x1c97adc92710e488ull, 0x00000000001c0188ull }}, {{ 0xb80c98472e9031c0ull, 0x12014416c372f3ddull, 0x0000000000180120ull }}, {{ 0x41d59088bb97b73full, 0x0a6b46f3978d783cull, 0x00000000001400c8ull }}, {{ 0x77c7438dd251003full, 0x0555955887b3357cull, 0x0000000000100080ull }}, {{ 0x85085f6da7c841d9ull, 0x0240143ef655feb4ull, 0x00000000000c0048ull }}, {{ 0x81581464acb2f9baull, 0x00aaaeaa4444eef3ull, 0x0000000000080020ull }}, {{ 0xd5f17f16631fcc03ull, 0x00155595522224ccull, 0x0000000000040008ull }}, {{ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull }} }; // Some internal macros. #define __add_128_64(R128, A128, B64) \ { \ BID_UINT64 R64H; \ R64H = (A128).w[1]; \ (R128).w[0] = (B64) + (A128).w[0]; \ if((R128).w[0] < (B64)) \ R64H ++; \ (R128).w[1] = R64H; \ } #define __mul_64x64_to_128(P, CX, CY) \ { \ BID_UINT64 CXH, CXL, CYH,CYL,PL,PH,PM,PM2;\ CXH = (CX) >> 32; \ CXL = (BID_UINT32)(CX); \ CYH = (CY) >> 32; \ CYL = (BID_UINT32)(CY); \ PM = CXH*CYL; \ PH = CXH*CYH; \ PL = CXL*CYL; \ PM2 = CXL*CYH; \ PH += (PM>>32); \ PM = (BID_UINT64)((BID_UINT32)PM)+PM2+(PL>>32); \ (P).w[1] = PH + (PM>>32); \ (P).w[0] = (PM<<32)+(BID_UINT32)PL; \ } #define __mul_64x64_to_64_hi(P, CX, CY) \ { \ BID_UINT64 CXH, CXL, CYH,CYL,PL,PH,PM,PM2; \ CXH = (CX) >> 32; \ CXL = (BID_UINT32)(CX); \ CYH = (CY) >> 32; \ CYL = (BID_UINT32)(CY); \ PM = CXH*CYL; \ PH = CXH*CYH; \ PL = CXL*CYL; \ PM2 = CXL*CYH; \ PH += (PM>>32); \ PM = (BID_UINT64)((BID_UINT32)PM)+PM2+(PL>>32); \ (P) = PH + (PM>>32); \ } #define __mul_64x128_to_192(Q, A, B) \ { \ BID_UINT128 ALBL, ALBH, QM2; \ \ __mul_64x64_to_128(ALBH, (A), (B).w[1]); \ __mul_64x64_to_128(ALBL, (A), (B).w[0]); \ \ (Q).w[0] = ALBL.w[0]; \ __add_128_64(QM2, ALBH, ALBL.w[1]); \ (Q).w[1] = QM2.w[0]; \ (Q).w[2] = QM2.w[1]; \ } #define __add_carry_out(S, CY, X, Y) \ { \ BID_UINT64 X1=X; \ S = X + Y; \ CY = (SX1) ? 1 : 0; \ } #define __sub_borrow_in_out(S, CY, X, Y, CI) \ { \ BID_UINT64 X1, X0=X; \ X1 = X - CI; \ S = X1 - Y; \ CY = ((S>X1) || (X1>X0)) ? 1 : 0; \ } #define __mul_64x192_to_256(lP, lA, lB) \ { \ BID_UINT128 lP0,lP1,lP2; \ BID_UINT64 lC; \ __mul_64x64_to_128(lP0, lA, (lB).w[0]); \ __mul_64x64_to_128(lP1, lA, (lB).w[1]); \ __mul_64x64_to_128(lP2, lA, (lB).w[2]); \ (lP).w[0] = lP0.w[0]; \ __add_carry_out((lP).w[1],lC,lP1.w[0],lP0.w[1]); \ __add_carry_in_out((lP).w[2],lC,lP2.w[0],lP1.w[1],lC); \ (lP).w[3] = lP2.w[1] + lC; \ } // Case of guaranteed no overflow. #define __mul_64x192_to_192(lP, lA, lB) \ { \ BID_UINT128 lP0,lP1,lP2; \ BID_UINT64 lC; \ __mul_64x64_to_128(lP0, lA, (lB).w[0]); \ __mul_64x64_to_128(lP1, lA, (lB).w[1]); \ __mul_64x64_to_128(lP2, lA, (lB).w[2]); \ (lP).w[0] = lP0.w[0]; \ __add_carry_out((lP).w[1],lC,lP1.w[0],lP0.w[1]); \ __add_carry_in_out((lP).w[2],lC,lP2.w[0],lP1.w[1],lC); \ } #define __add_192_192(S,X,Y) \ { BID_UINT64 S0, S1, S2; \ int CA0, CA1, CA2; \ __add_carry_out(S0,CA0,(X).w[0],(Y).w[0]); \ __add_carry_in_out(S1,CA1,(X).w[1],(Y).w[1],CA0); \ __add_carry_in_out(S2,CA2,(X).w[2],(Y).w[2],CA1); \ (S).w[0] = S0; (S).w[1] = S1; (S).w[2] = S2; \ } #define __sub_192_192(S,X,Y) \ { BID_UINT64 S0, S1, S2; \ int B0, B1, B2; \ __sub_borrow_out(S0,B0,(X).w[0],(Y).w[0]); \ __sub_borrow_in_out(S1,B1,(X).w[1],(Y).w[1],B0); \ __sub_borrow_in_out(S2,B2,(X).w[2],(Y).w[2],B1); \ (S).w[0] = S0; (S).w[1] = S1; (S).w[2] = S2; \ } #define __mul_192x192_to_192_hi(P, A, B) \ { \ BID_UINT256 P0,P1,P2; \ BID_UINT64 CY, PL0, PL1, PL2; \ __mul_64x192_to_256(P0, (A).w[0], B); \ __mul_64x192_to_256(P1, (A).w[1], B); \ __mul_64x192_to_256(P2, (A).w[2], B); \ PL0 = P0.w[0]; \ __add_carry_out(PL1,CY,P1.w[0],P0.w[1]); \ __add_carry_in_out(PL2,CY,P1.w[1],P0.w[2],CY); \ __add_carry_in_out((P).w[0],CY,P1.w[2],P0.w[3],CY); \ (P).w[1] = P1.w[3] + CY; \ __add_carry_out(PL2,CY,P2.w[0],PL2); \ __add_carry_in_out((P).w[0],CY,P2.w[1],(P).w[0],CY); \ __add_carry_in_out((P).w[1],CY,P2.w[2],(P).w[1],CY); \ (P).w[2] = P2.w[3] + CY; \ } // Useful macros lifted from "bid_binarydecimal.c" #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define clz64(n) (((n)==0) ? 64 : clz64_nz(n)) #define clz128(n_hi,n_lo) (((n_hi) == 0) ? 64 + clz64(n_lo) : clz64_nz(n_hi)) #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll128(hi,lo,c) \ (((c) == 0) ? hi = hi, lo = lo : \ (((c) >= 64) ? hi = lo << ((c) - 64), lo = 0 : sll128_short(hi,lo,c))) #define lt128(x_hi,x_lo,y_hi,y_lo) \ (((x_hi) < (y_hi)) || (((x_hi) == (y_hi)) && ((x_lo) < (y_lo)))) #define sll192_short(hi,med,lo,c) \ ((hi) = ((hi) << (c)) + ((med)>>(64-(c))), \ (med) = ((med) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define srl192(x2,x1,x0,c) \ ((x0) = ((x1) << (64 - (c))) + ((x0) >> (c)), \ (x1) = ((x2) << (64 - (c))) + ((x1) >> (c)), \ (x2) = ((x2) >> c) \ ) // Accurate decimal128 log function returning 2-part result. // This is mainly required for the power function, but since it's more // "direct" it may turn out more efficient than the "naive" one above. // *************************************************************************** // bid128_mul stands for bid128qq_mul BID128_FUNCTION_ARG2 (bid128_pow, x, y) BID_UINT128 res = {{ 0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull }}; BID_UINT128 y_int; int is_odd; BID_UINT128 l, l_hi, l_lo, l_neg; int cmp_res, is_int; // We will always signal on signalling NaNs anyway #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64) || ((y.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) { __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); } #endif // We have 1^y = x^+0 = x^-0 = 1 even when x or y is a NaN BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isZero,cmp_res,y); if (cmp_res && ((x.w[BID_HIGH_128W] & SNAN_MASK64) != SNAN_MASK64)) { res = BID128_1; BID_RETURN(res); } BIDECIMAL_CALL2_NORND(bid128_quiet_equal,cmp_res,x,BID128_1); if (cmp_res && ((x.w[BID_HIGH_128W] & SNAN_MASK64) != SNAN_MASK64)) { res = BID128_1; BID_RETURN(res); } // Otherwise a NaN input leads to a NaN result. // Just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } else if ((y.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { res.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = y.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // Deal with other cases where second arg is infinite: // // pow(-1,+-inf) = 1 // pow(x,+inf) = +inf when |x| > 1 // pow(x,+inf) = +0 when |x| < 1 // pow(x,-inf) = +0 when |x| > 1 // pow(x,-inf) = +inf when |x| < 1 BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isInf,cmp_res,y); if (cmp_res) { BID_UINT128 a = x; a.w[BID_HIGH_128W] &= ~SIGNMASK64; BIDECIMAL_CALL2_NORND(bid128_quiet_equal,cmp_res,a,BID128_1); if (cmp_res) { res = BID128_1; BID_RETURN(res); } BIDECIMAL_CALL2_NORND(bid128_quiet_less,cmp_res,a,BID128_1); if (cmp_res) if ((y.w[BID_HIGH_128W] & SIGNMASK64) != 0) res = BID128_INF; else res = BID128_0; else if ((y.w[BID_HIGH_128W] & SIGNMASK64) != 0) res = BID128_0; else res = BID128_INF; BID_RETURN(res); } // See if the exponent is an integer, and if so, find its parity. // We can assume that bid128_round_integral_nearest_even returns a // result with exponent >= 0, and if it's > 0 it's trivially even. BIDECIMAL_CALL1_NORND(bid128_round_integral_nearest_even, y_int, y); BIDECIMAL_CALL2_NORND(bid128_quiet_equal,is_int,y_int,y); is_odd = 0; if (is_int) { int e = ((y_int.w[BID_HIGH_128W] >> 49) & ((1ull<<14)-1)); if ((e == 6176) && (y_int.w[BID_LOW_128W] & 1)) is_odd = 1; } // Now the cases where the first arg is infinite: // // pow(+inf,y) = 0 for y < 0 // pow(+inf,y) = +inf for y > 0 // and pow(-inf,y) the same with sign swapped for odd integers BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isInf,cmp_res,x); if (cmp_res) { if ((y.w[BID_HIGH_128W] & SIGNMASK64) != 0) res = BID128_0; else res = BID128_INF; if (is_odd && ((x.w[BID_HIGH_128W] & SIGNMASK64) != 0)) res.w[BID_HIGH_128W] ^= SIGNMASK64; BID_RETURN(res); } // Now cases where first argument is 0, where we return +0 or +inf, // or -0 or -inf if the second argument is an odd integer. BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isZero,cmp_res,x); if (cmp_res) { if ((y.w[BID_HIGH_128W] & SIGNMASK64) != 0) { res = BID128_INF; __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); } else res = BID128_0; if (is_odd && ((x.w[BID_HIGH_128W] & SIGNMASK64) != 0)) res.w[BID_HIGH_128W] ^= SIGNMASK64; BID_RETURN(res); } // Return NaN for negative^noninteger if (((x.w[BID_HIGH_128W] & SIGNMASK64) != 0) && !is_int) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(BID128_NAN); } // Check for appropriately small (unsigned int) exponent, and compute as // x^N where N is that integer if EXACTLY an integer, or 1/(x^|N|) for N < 0 { int exact_y; int volatile exact_y_abs; int sign = 0; int save_flags = *pfpsf; *pfpsf &= ~BID_INEXACT_EXCEPTION; BIDECIMAL_CALL1_NORND(bid128_to_int32_xrnint, exact_y, y); if ((*pfpsf & BID_INEXACT_EXCEPTION) == 0) { if (exact_y < 0) sign = 1; exact_y_abs = abs(exact_y); if (exact_y_abs > 0) { BID_UINT128 tmp, r = BID128_1; BID_UINT128 p = x; for (; exact_y_abs; exact_y_abs >>= 1) { if (exact_y_abs & 1) { BIDECIMAL_CALL2(bid128_mul, r, r, p); } if (exact_y_abs > 1) BIDECIMAL_CALL2(bid128_mul, p, p, p); } tmp = BID128_1; if (sign) BIDECIMAL_CALL2(bid128_div, r, tmp, r); BID_RETURN(r); } } *pfpsf = save_flags; } // Finally, we can assume all arguments are finite and nonzero. // So launch into the naive computation. But because we can be // more discriminating about integer status prior to conversion, // separate out the sign and correct it later. // Compute accurate logarithm (l_hi,l_lo) { int e, k, b, s_log; BID_UINT64 r1, r2, c_lo; BID_UINT128 xa; BID_UINT128 c; BID_UINT192 p; BID_UINT256 q; BID_UINT192 ans; BID_UINT192 loc; BID_UINT192 xx, xp, cxp, sx; // Get absolute value xa = x; xa.w[BID_HIGH_128W] &= ~SIGNMASK64; // Unpack the number, but check canonicality or plain zero // and return -inf in that case. e = ((xa.w[BID_HIGH_128W] >> 49) & ((1ull<<14)-1)) - 6176; c.w[1] = xa.w[BID_HIGH_128W] & ((1ull<<49)-1); c.w[0] = xa.w[BID_LOW_128W]; k = clz128(c.w[1],c.w[0]); sll128(c.w[1],c.w[0],k); k = 128 - k; // Start out our result as e * log(10) + k * log(2) // Note that k is always positive, but e may have either sign __mul_64x192_to_192(ans,(BID_UINT64) k,bid_log_2_entry); if (e >= 0) { __mul_64x192_to_192(loc,(BID_UINT64) e,bid_log_10_entry); __add_192_192(ans,ans,loc); } else { __mul_64x192_to_192(loc,(BID_UINT64)(-e),bid_log_10_entry); __sub_192_192(ans,ans,loc); } // Pick out toplevel bitfield and find its approximate reciprocal // After this multiplication the result (considered as a fraction) // is 1/2 * (1 - e) where 0 <= e <= 2^-7 b = c.w[1] >> 56; r1 = bid_recip_table_1[b-128]; __mul_64x128_to_192(p,r1,c); __sub_192_192(ans,ans,bid_log_table_1[b-128]); // Now the next stage in this bipartite arrangment. // After this the result (considered as a fraction) is // 1/4 * (1 - e) where 0 <= e < 2^-12 (maybe 2^-13, I should check) b = (p.w[2] >> 49) & 0x7F; r2 = bid_recip_table_2[b]; __mul_64x192_to_256(q,r2,p); __sub_192_192(ans,ans,bid_log_table_2[b]); // Complement and shift back by 2 bits to get a proper binary fraction sll192_short(q.w[3],q.w[2],q.w[1],2); q.w[3] = ~q.w[3], q.w[2] = ~q.w[2], q.w[1] = ~q.w[1]; // Now compute the power series // Should use Remez and maybe something shorter? sx.w[2] = xx.w[2] = q.w[3]; sx.w[1] = xx.w[1] = q.w[2]; sx.w[0] = xx.w[0] = q.w[1]; __mul_192x192_to_192_hi(xp,xx,xx); __mul_192x192_to_192_hi(cxp,xp,bid_recip_2); __add_192_192(sx,sx,cxp); __mul_192x192_to_192_hi(xp,xp,xx); __mul_192x192_to_192_hi(cxp,xp,bid_recip_3); __add_192_192(sx,sx,cxp); __mul_192x192_to_192_hi(xp,xp,xx); __mul_192x192_to_192_hi(cxp,xp,bid_recip_4); __add_192_192(sx,sx,cxp); __mul_192x192_to_192_hi(xp,xp,xx); __mul_192x192_to_192_hi(cxp,xp,bid_recip_5); __add_192_192(sx,sx,cxp); __mul_192x192_to_192_hi(xp,xp,xx); __mul_192x192_to_192_hi(cxp,xp,bid_recip_6); __add_192_192(sx,sx,cxp); __mul_192x192_to_192_hi(xp,xp,xx); __mul_192x192_to_192_hi(cxp,xp,bid_recip_7); __add_192_192(sx,sx,cxp); __mul_192x192_to_192_hi(xp,xp,xx); __mul_192x192_to_192_hi(cxp,xp,bid_recip_8); __add_192_192(sx,sx,cxp); __mul_192x192_to_192_hi(xp,xp,xx); __mul_192x192_to_192_hi(cxp,xp,bid_recip_9); __add_192_192(sx,sx,cxp); __mul_192x192_to_192_hi(xp,xp,xx); __mul_192x192_to_192_hi(cxp,xp,bid_recip_10); __add_192_192(sx,sx,cxp); // Now shift it right by 32 bits and add to rest srl192(sx.w[2],sx.w[1],sx.w[0],32); __sub_192_192(ans,ans,sx); // Figure out sign and negate as needed (actually complement, which // only makes a difference of 2^-192). if (ans.w[2] & (1ull<<63)) { s_log = 1; ans.w[2] = ~ans.w[2]; ans.w[1] = ~ans.w[1]; ans.w[0] = ~ans.w[0]; } else s_log = 0; // Now turn into decimal: the top two 64-bit words are the coefficient // of a number with exponent 10^-28 __mul_192x192_to_192_hi(ans,ans,bid_decimal_multiplier_1); // And the trailing part is for a number with exponent 10^-47 // (which is nowhere near normalized, btw, as this is just one word). __mul_64x64_to_64_hi(c_lo,10000000000000000000ull,ans.w[0]); // We need about 127 bits of accuracy in this logarithm, and we have // about 158 bits of fraction (being pessimistic). So if the 31 leading // bits of the fraction (and the integer part) are all zero, we ought // to do something different, simply returning t=|x|-1 in the high part and // the next three terms of the Taylor series otherwise. // (i.e. -t^2/2 + t^3/3 - t^4/4). Again, it'd be better to use a Remez series if (ans.w[2] < 2) { BID_UINT128 t, tp, tn, ts; BIDECIMAL_CALL2(bid128_sub,t,xa,BID128_1); BIDECIMAL_CALL2(bid128_mul,tp,t,t); BIDECIMAL_CALL2(bid128_mul,ts,bid_coeff_2,tp); BIDECIMAL_CALL2(bid128_mul,tp,t,tp); BIDECIMAL_CALL2(bid128_mul,tn,bid_coeff_3,tp); BIDECIMAL_CALL2(bid128_add,ts,ts,tn); BIDECIMAL_CALL2(bid128_mul,tp,t,tp); BIDECIMAL_CALL2(bid128_mul,tn,bid_coeff_4,tp); BIDECIMAL_CALL2(bid128_add,ts,ts,tn); BIDECIMAL_CALL2(bid128_add,l_hi,t,ts); BIDECIMAL_CALL2(bid128_sub,l_lo,l_hi,t); BIDECIMAL_CALL2(bid128_sub,l_lo,l_lo,ts); } // Otherwise just package up our results as decimal numbers. // Note that the sign "s_log" is needed in both of them. else { l_hi.w[BID_HIGH_128W] = ((BID_UINT64) (s_log) << 63) + (6148ull << 49) + ans.w[2]; l_hi.w[BID_LOW_128W] = ans.w[1]; l_lo.w[BID_HIGH_128W] = ((BID_UINT64) (s_log) << 63) + (6129ull << 49); l_lo.w[BID_LOW_128W] = c_lo; } } BIDECIMAL_CALL2(bid128_mul,l,y,l_hi); l_neg = l; l_neg.w[BID_HIGH_128W] ^= MASK_SIGN; BIDECIMAL_CALL3(bid128_fma,l_hi,y,l_hi,l_neg); BIDECIMAL_CALL3(bid128_fma,l_lo,y,l_lo,l_hi); // Compute dominant exponential term // We really want exp(l + l_lo) BIDECIMAL_CALL1(bid128_exp,res,l); // If this is zero or infinity, then stop now; do some flag settings // and make zero results have an exponent that communicates inexactness BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isZero,cmp_res,res); if (cmp_res) { *pfpsf |= BID_UNDERFLOW_EXCEPTION; res = BID128_ZERO; BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isInf,cmp_res,res); if (cmp_res) { *pfpsf |= BID_OVERFLOW_EXCEPTION; BID_RETURN(res); } // Otherwise correct using l_lo BIDECIMAL_CALL3(bid128_fma,res,res,l_lo,res); // Finally, fix up the sign if (is_odd && ((x.w[BID_HIGH_128W] & SIGNMASK64) != 0)) res.w[BID_HIGH_128W] ^= MASK_SIGN; BID_RETURN(res); } LIBRARY/src/bid64_tan.c0000644€­ Q01134020000011011515113665770013553 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // Extra macros #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll192_short(hi,med,lo,c) \ ((hi) = ((hi) << (c)) + ((med)>>(64-(c))), \ (med) = ((med) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define BID64_NAN 0x7c00000000000000ull // Values of (10^a / 2 pi) mod 1 for -17 <= a <= 369 // Each one is a 192-bit binary fraction static BID_UINT192 bid_decimal64_moduli[] = { {{ 0x82d9e5c60f747619ull, 0x5be1334254ee2dfaull, 0x000000000000001dull }}, {{ 0x1c82f9bc9a8c9cf5ull, 0x96cc0097514dcbc9ull, 0x0000000000000125ull }}, {{ 0x1d1dc15e097e2197ull, 0xe3f805e92d09f5dbull, 0x0000000000000b77ull }}, {{ 0x23298dac5eed4fe5ull, 0xe7b03b1bc2639a8full, 0x00000000000072aeull }}, {{ 0x5f9f88bbb5451ef6ull, 0x0ce24f1597e40997ull, 0x0000000000047ad5ull }}, {{ 0xbc3b575514b3359bull, 0x80d716d7eee85fe9ull, 0x00000000002ccc52ull }}, {{ 0x5a516952cf00180bull, 0x0866e46f5513bf21ull, 0x0000000001bffb39ull }}, {{ 0x872e1d3c1600f06full, 0x5404ec5952c5774dull, 0x00000000117fd03aull }}, {{ 0x47cd2458dc096459ull, 0x48313b7d3bb6a907ull, 0x00000000aefe2247ull }}, {{ 0xce036b78985deb7bull, 0xd1ec52e455229a48ull, 0x00000006d5ed56c8ull }}, {{ 0x0c2232b5f3ab32cdull, 0x333b3ceb535a06d8ull, 0x000000445b4563d8ull }}, {{ 0x7955fb1b84affc02ull, 0x0050613141844470ull, 0x000002ab90b5e672ull }}, {{ 0xbd5bcf132edfd811ull, 0x0323cbec8f2aac64ull, 0x00001ab3a71b0074ull }}, {{ 0x659616bfd4be70aaull, 0x1f65f73d97aabbefull, 0x00010b04870e0488ull }}, {{ 0xf7dce37e4f7066a1ull, 0x39fba867ecab5759ull, 0x000a6e2d468c2d51ull }}, {{ 0xaea0e2ef1a640248ull, 0x43d4940f3eb16983ull, 0x00684dc4c179c52cull }}, {{ 0xd248dd5707e816ceull, 0xa64dc89872ee1f24ull, 0x041309af8ec1b3baull }}, {{ 0x36d8a5664f10e410ull, 0x7f09d5f47d4d3770ull, 0x28be60db9391054aull }}, {{ 0x247675ff16a8e8a5ull, 0xf6625b8ce5042a62ull, 0x976fc893c3aa34e8ull }}, {{ 0x6ca09bf6e2991672ull, 0x9fd79380f229a7d5ull, 0xea5dd5c5a4a61119ull }}, {{ 0x3e4617a4d9fae072ull, 0x3e6bc30975a08e56ull, 0x27aa59b86e7cab00ull }}, {{ 0x6ebcec7083ccc478ull, 0x70359e5e98458f5eull, 0x8ca7813450deae02ull }}, {{ 0x53613c6525ffacacull, 0x62182fb1f2b799b0ull, 0x7e8b0c0b28b2cc18ull }}, {{ 0x41cc5bf37bfcbeb5ull, 0xd4f1dcf37b2c00e3ull, 0xf16e786f96fbf8f3ull }}, {{ 0x91fb9782d7df7316ull, 0x5172a182cfb808e0ull, 0x6e50b45be5d7b986ull }}, {{ 0xb3d3eb1c6eba7ed7ull, 0x2e7a4f1c1d3058c5ull, 0x4f270b96fa6d3f3full }}, {{ 0x06472f1c5348f467ull, 0xd0c7171923e377b9ull, 0x178673e5c8447877ull }}, {{ 0x3ec7d71b40d98c03ull, 0x27c6e6fb66e2ad3aull, 0xeb4086f9d2acb4aeull }}, {{ 0x73ce6710887f781eull, 0x8dc505d204dac446ull, 0x308545c23abf0ecdull }}, {{ 0x861006a554fab12aull, 0x89b23a34308baac0ull, 0xe534b9964b769407ull }}, {{ 0x3ca0427551caeba0ull, 0x60f64609e574ab85ull, 0xf40f3fdef2a1c84bull }}, {{ 0x5e42989531ed3443ull, 0xc99ebc62f68eb334ull, 0x88987eb57a51d2f1ull }}, {{ 0xae99f5d3f3440a9cull, 0xe0335bdda193000bull, 0x55f4f316c7323d71ull }}, {{ 0xd2039a4780a86a14ull, 0xc20196a84fbe0074ull, 0x5b917ee3c7f66672ull }}, {{ 0x342406cb069424c4ull, 0x940fe2931d6c0490ull, 0x93aef4e5cfa0007bull }}, {{ 0x096843ee41c96faaull, 0xc89ed9bf26382da2ull, 0xc4d590fa1c4004d3ull }}, {{ 0x5e12a74e91de5ca6ull, 0xd63481777e31c854ull, 0xb057a9c51a803045ull }}, {{ 0xacba8911b2af9e80ull, 0x5e0d0eaaedf1d34bull, 0xe36ca1b30901e2baull }}, {{ 0xbf495ab0fadc30ffull, 0xac8292ad4b7240f4ull, 0xe23e50fe5a12db47ull }}, {{ 0x78dd8ae9cc99e9f7ull, 0xbd19bac4f276898full, 0xd66f29ef84bc90ccull }}, {{ 0xb8a76d21fe0323a8ull, 0x63014bb178a15f9aull, 0x6057a35b2f5da7ffull }}, {{ 0x368a4353ec1f648dull, 0xde0cf4eeb64dbc0bull, 0xc36c618fd9a88ff9ull }}, {{ 0x2166a1473939ed82ull, 0xac8191531f095870ull, 0xa23bcf9e80959fc2ull }}, {{ 0x4e024cc83c434711ull, 0xbd0fad3f365d7461ull, 0x56561c3105d83d9aull }}, {{ 0x0c16ffd25aa0c6a8ull, 0x629cc4781fa68bcdull, 0x5f5d19ea3a72680bull }}, {{ 0x78e5fe378a47c294ull, 0xda1facb13c817602ull, 0xb9a3032648781071ull }}, {{ 0xb8fbee2b66cd99c5ull, 0x853cbeec5d0e9c18ull, 0x405e1f7ed4b0a472ull }}, {{ 0x39d74db2040801aeull, 0x345f753ba29218f7ull, 0x83ad3af44ee66c79ull }}, {{ 0x426908f4285010d0ull, 0x0bba945459b4f9a8ull, 0x24c44d8b15003cbcull }}, {{ 0x981a59899320a825ull, 0x7549cb4b8111c092ull, 0x6fab076ed2025f58ull }}, {{ 0xf1077f5fbf469170ull, 0x94e1f0f30ab185b9ull, 0x5cae4a543417b974ull }}, {{ 0x6a4af9bd78c1ae63ull, 0xd0d3697e6aef3943ull, 0x9ecee74a08ed3e8dull }}, {{ 0x26edc166b790cfdaull, 0x28421ef02d583ca2ull, 0x341508e45944718aull }}, {{ 0x85498e032ba81e83ull, 0x92953561c5725e55ull, 0x08d258eb7cac6f65ull }}, {{ 0x34df8c1fb4913120ull, 0xb9d415d1b677af57ull, 0x58377932debc59f7ull }}, {{ 0x10bb793d0dabeb3dull, 0x4248da3120acd968ull, 0x722abbfcb35b83adull }}, {{ 0xa752bc6288b7305full, 0x96d885eb46c07e10ull, 0x75ab57df019324c4ull }}, {{ 0x893b5bd95727e3b2ull, 0xe4753b30c384eca6ull, 0x98b16eb60fbf6fadull }}, {{ 0x5c51967d678ee4f8ull, 0xec944fe7a3313e81ull, 0xf6ee531c9d7a5ccaull }}, {{ 0x9b2fe0e60b94f1b0ull, 0x3dcb1f0c5fec710dull, 0xa54f3f1e26c79fedull }}, {{ 0x0fdec8fc73d170e4ull, 0x69ef367bbf3c6a88ull, 0x7518772d83cc3f44ull }}, {{ 0x9eb3d9dc862e68e9ull, 0x235820d5785c2950ull, 0x92f4a7c725fa78acull }}, {{ 0x3306829d3dd01918ull, 0x61714856b3999d26ull, 0xbd8e8dc77bc8b6b9ull }}, {{ 0xfe411a246a20faf1ull, 0xce6cd3630400237dull, 0x679189cad5d7233dull }}, {{ 0xee8b056c2549cd66ull, 0x104041de280162ebull, 0x0baf61ec5a67606aull }}, {{ 0x516e363974e205ffull, 0xa28292ad900ddd37ull, 0x74d9d33b8809c424ull }}, {{ 0x2e4e1e3e90d43bf3ull, 0x5919bac7a08aa429ull, 0x908240535061a96eull }}, {{ 0xcf0d2e71a84a5783ull, 0x7b014bcc456a699bull, 0xa516834123d09e4full }}, {{ 0x1683d07092e76b1eull, 0xce0cf5fab6282016ull, 0x72e1208b66262f1aull }}, {{ 0xe1262465bd0a2f28ull, 0x0c819bcb1d9140dcull, 0x7ccb4571fd7dd70cull }}, {{ 0xcb7d6bf96265d78eull, 0x7d1015ef27ac88a0ull, 0xdff0b673e6ea6678ull }}, {{ 0xf2e637bdd7fa6b88ull, 0xe2a0db578cbd5647ull, 0xbf672087052800b4ull }}, {{ 0x7cfe2d6a6fc83354ull, 0xda48916b7f655ecfull, 0x7a07454633900710ull }}, {{ 0xe1edc6285dd20144ull, 0x86d5ae32f9f5b41aull, 0xc448b4be03a046a8ull }}, {{ 0xd349bd93aa340cacull, 0x4458cdfdc399090cull, 0xaad70f6c2442c295ull }}, {{ 0x40e167c4a6087eb4ull, 0xab780be9a3fa5a80ull, 0xac669a396a9b99d4ull }}, {{ 0x88ce0dae7c54f308ull, 0xb2b0772067c78902ull, 0xbc02063e2a14024eull }}, {{ 0x580c88d0db517e53ull, 0xfae4a7440dcb5a19ull, 0x58143e6da4c81712ull }}, {{ 0x707d5828912eef41ull, 0xccee88a889f184fdull, 0x70ca70486fd0e6bdull }}, {{ 0x64e57195abd55888ull, 0x01515695636f31e6ull, 0x67e862d45e29036aull }}, {{ 0xf0f66fd8b6557554ull, 0x0d2d61d5e257f2ffull, 0x0f13dc4bad9a2224ull }}, {{ 0x69a05e771f56954dull, 0x83c5d25ad76f7dffull, 0x96c69af4c8055568ull }}, {{ 0x2043b0a73961d4feull, 0x25ba378c6a5aebfaull, 0xe3c20d8fd0355615ull }}, {{ 0x42a4e6883dd251e8ull, 0x79462b7c278d37c5ull, 0xe594879e22155cd3ull }}, {{ 0x9a7101526a373314ull, 0xbcbdb2d98b842db4ull, 0xf7cd4c2d54d5a042ull }}, {{ 0x086a0d382627fecaull, 0x5f68fc7f7329c90eull, 0xae04f9c55058429bull }}, {{ 0x542484317d8ff3e5ull, 0xba19dcfa7fa1da8cull, 0xcc31c1b523729a11ull }}, {{ 0x496d29eee79f86f2ull, 0x4502a1c8fc52897bull, 0xf9f19113627a04b1ull }}, {{ 0xde43a3550c3b4579ull, 0xb21a51d9db395ed0ull, 0xc36faac1d8c42eecull }}, {{ 0xaea461527a50b6b7ull, 0xf5073282903db428ull, 0xa25cab9277a9d53eull }}, {{ 0xd26bcd38c727232aull, 0x9247f919a2690996ull, 0x579eb3b8aca25475ull }}, {{ 0x38360437c7875fa5ull, 0xb6cfbb00581a5fe4ull, 0x6c330536be574c97ull }}, {{ 0x321c2a2dcb49bc6full, 0x241d4e037107beeaull, 0x39fe34236f68fdedull }}, {{ 0xf519a5c9f0e15c56ull, 0x69250c226a4d7525ull, 0x43ee09625a19eb43ull }}, {{ 0x930079e368cd9b60ull, 0x1b7279582706937bull, 0xa74c5dd7850330a2ull }}, {{ 0xbe04c2e2180811c2ull, 0x1278bd718641c2d3ull, 0x88fbaa6b321fe655ull }}, {{ 0x6c2f9cd4f050b192ull, 0xb8b7666f3e919c45ull, 0x59d4a82ff53eff52ull }}, {{ 0x39dc20516326efb7ull, 0x372a005871b01ab6ull, 0x824e91df9475f93bull }}, {{ 0x4299432ddf855d22ull, 0x27a4037470e10b1eull, 0x1711b2bbcc9bbc50ull }}, {{ 0x99fc9fcabb35a357ull, 0x8c68228c68ca6f2eull, 0xe6b0fb55fe155b21ull }}, {{ 0x03de3deb50186164ull, 0x7c11597c17e857d2ull, 0x02e9d15becd58f4full }}, {{ 0x26ae6b3120f3cde8ull, 0xd8ad7ed8ef136e34ull, 0x1d222d974057991aull }}, {{ 0x82d02feb49860b15ull, 0x76c6f47956c24e09ull, 0x2355c7e8836bfb0cull }}, {{ 0x1c21df30df3c6ed0ull, 0xa3c58cbd63970c5full, 0x6159cf152237ce7cull }}, {{ 0x1952b7e8b85c541cull, 0x65b77f65e3e67bb7ull, 0xcd8216d3562e10deull }}, {{ 0xfd3b2f17339b491aull, 0xf92af9fae700d526ull, 0x0714e4415dcca8afull }}, {{ 0xe44fd6e80410db03ull, 0xbbadc3cd06085385ull, 0x46d0ea8da9fe96dfull }}, {{ 0xeb1e651028a88e1cull, 0x54c9a6023c53433aull, 0xc4292988a3f1e4bdull }}, {{ 0x2f2ff2a196958d19ull, 0x4fe07c165b40a04dull, 0xa99b9f566772ef65ull }}, {{ 0xd7df7a4fe1d782f7ull, 0x1ec4d8df90864303ull, 0xa01439600a7d59f5ull }}, {{ 0x6ebac71ed26b1da8ull, 0x33b078bba53e9e26ull, 0x40ca3dc068e58393ull }}, {{ 0x534bc734382f2893ull, 0x04e4b75474722d80ull, 0x87e6698418f723c0ull }}, {{ 0x40f5c80a31d795b9ull, 0x30ef294c8c75c703ull, 0x4f001f28f9a76580ull }}, {{ 0x8999d065f26bd93cull, 0xe9579cfd7c99c620ull, 0x16013799c089f701ull }}, {{ 0x600223fb78367c58ull, 0x1d6c21e6de01bd45ull, 0xdc0c2c018563a613ull }}, {{ 0xc01567d2b220db73ull, 0x26395304ac1164b5ull, 0x9879b80f35e47cbfull }}, {{ 0x80d60e3af548927full, 0x7e3d3e2eb8adef19ull, 0xf4c130981aecdf77ull }}, {{ 0x085c8e4d94d5b8f5ull, 0xee646dd336cb56ffull, 0x8f8be5f10d40baaaull }}, {{ 0x539d8f07d059398eull, 0x4fec4a4023f165f6ull, 0x9b76fb6a84874aadull }}, {{ 0x4427964e237c3f90ull, 0x1f3ae681676dfb9full, 0x12a5d2292d48eac5ull }}, {{ 0xa98bdf0d62da7ba2ull, 0x384d010e0a4bd438ull, 0xba7a359bc4d92bb3ull }}, {{ 0x9f76b685dc88d453ull, 0x33020a8c66f64a36ull, 0x48c61815b07bb500ull }}, {{ 0x3aa3213a9d584b3full, 0xfe14697c059ee622ull, 0xd7bcf0d8e4d51201ull }}, {{ 0x4a5f4c4a2572f075ull, 0xeccc1ed83834fd56ull, 0x6d616878f052b413ull }}, {{ 0xe7b8fae5767d6496ull, 0x3ff934723211e55eull, 0x45ce14b9633b08c7ull }}, {{ 0x0d39ccf6a0e5eddfull, 0x7fbc0c75f4b2f5b5ull, 0xba0ccf3de04e57c8ull }}, {{ 0x844201a248fb4ab1ull, 0xfd587c9b8efd9912ull, 0x4480186ac30f6dd4ull }}, {{ 0x2a941056d9d0eaeeull, 0xe574de1395e7fab9ull, 0xad00f42b9e9a4a51ull }}, {{ 0xa9c8a36482292d4bull, 0xf690acc3db0fcb3bull, 0xc20989b43206e732ull }}, {{ 0xa1d661ed159bc4edull, 0xa1a6bfa68e9df054ull, 0x945f6109f44507fdull }}, {{ 0x525fd342d815b147ull, 0x50837c81922b634eull, 0xcbb9ca638ab24fe8ull }}, {{ 0x37be409c70d8ecc4ull, 0x2522dd0fb5b1e10full, 0xf541e7e36af71f13ull }}, {{ 0x2d6e861c68793fa9ull, 0x735ca29d18f2ca98ull, 0x94930ee22da736bfull }}, {{ 0xc6513d1c14bc7c9bull, 0x819e5a22f97be9f1ull, 0xcdbe94d5c888237aull }}, {{ 0xbf2c6318cf5cde10ull, 0x102f855dbed72371ull, 0x0971d059d55162c9ull }}, {{ 0x77bbdef819a0aca3ull, 0xa1db35a974676271ull, 0x5e722382552ddbdaull }}, {{ 0xad56b5b10046be5bull, 0x5290189e8c09d86eull, 0xb075631753ca968aull }}, {{ 0xc56318ea02c36f8dull, 0x39a0f63178627452ull, 0xe495dee945e9e167ull }}, {{ 0xb5def9241ba25b85ull, 0x40499deeb3d88b3bull, 0xeddab51cbb22ce08ull }}, {{ 0x1ab5bb6914579333ull, 0x82e02b5306757055ull, 0x4a8b131f4f5c0c52ull }}, {{ 0x0b19521acb6bc000ull, 0x1cc1b13e40966353ull, 0xe96ebf3919987b39ull }}, {{ 0x6efd350bf2358002ull, 0x1f90ec6e85dfe13eull, 0x1e53783afff4d03bull }}, {{ 0x55e412777617000full, 0x3ba93c513abecc70ull, 0x2f42b24dff90224full }}, {{ 0x5ae8b8aa9ce6009aull, 0x549c5b2c4b73fc63ull, 0xd89af70bfba15718ull }}, {{ 0x8d1736aa20fc0604ull, 0x4e1b8fbaf287dbe1ull, 0x760da677d44d66f3ull }}, {{ 0x82e822a549d83c27ull, 0x0d139d4d794e96cfull, 0x9c8880ae4b060581ull }}, {{ 0x1d115a74e2725984ull, 0x82c42506bd11e41bull, 0x1d5506ceee3c370aull }}, {{ 0x22ad8890d8777f2bull, 0x1ba9724362b2e90full, 0x255244154e5a2669ull }}, {{ 0x5ac755a874aaf7aaull, 0x149e76a1dafd1a97ull, 0x7536a8d50f85801bull }}, {{ 0x8bc958948eadaca7ull, 0xce30a2528de309e9ull, 0x942298529b37010eull }}, {{ 0x75dd75cd92c8be8aull, 0x0de657398ade631full, 0xc959f33a10260a94ull }}, {{ 0x9aa69a07bbd77163ull, 0x8aff683f6cafdf3aull, 0xdd838044a17c69c8ull }}, {{ 0x0a82044d566a6de1ull, 0x6dfa127a3edeb84aull, 0xa72302ae4edc21d5ull }}, {{ 0x69142b0560284acbull, 0x4bc4b8c674b332e4ull, 0x875e1acf14995256ull }}, {{ 0x1ac9ae35c192ebecull, 0xf5af37c08efffcecull, 0x49ad0c16cdfd375eull }}, {{ 0x0be0ce198fbd3737ull, 0x98d82d8595ffe139ull, 0xe0c278e40be429b5ull }}, {{ 0x76c80cff9d64282aull, 0xf871c737dbfecc3aull, 0xc798b8e876e9a117ull }}, {{ 0xa3d081fc25e991a8ull, 0xb471c82e97f3fa48ull, 0xcbf73914a5204aefull }}, {{ 0x662513d97b1fb090ull, 0x0c71d1d1ef87c6d6ull, 0xf7a83ace7342ed5dull }}, {{ 0xfd72c67ecf3ce59dull, 0x7c7232335b4dc45full, 0xac924c10809d45a2ull }}, {{ 0xe67bc0f41860f81full, 0xdc75f6019109abbfull, 0xbdb6f8a50624b858ull }}, {{ 0x00d58988f3c9b134ull, 0x9c9b9c0faa60b57full, 0x6925b6723d6f3378ull }}, {{ 0x08575f5985e0ec04ull, 0x1e14189ca7c716f6ull, 0x1b792076665802b6ull }}, {{ 0x5369b97f3ac93829ull, 0x2cc8f61e8dc6e59cull, 0x12bb449fff701b1dull }}, {{ 0x42213ef84bdc3197ull, 0xbfd99d3189c4f81bull, 0xbb50ae3ffa610f23ull }}, {{ 0x954c75b2f699efe1ull, 0x7e8023ef61b1b110ull, 0x5126ce7fc7ca9765ull }}, {{ 0xd4fc98fda2035ecfull, 0xf1016759d0f0eaa5ull, 0x2b8410fdcde9e9f6ull }}, {{ 0x51ddf9e85421b411ull, 0x6a0e098229692a7aull, 0xb328a9ea0b2323a5ull }}, {{ 0x32abc313495108acull, 0x248c5f159e1ba8c7ull, 0xff96a3246f5f6476ull }}, {{ 0xfab59ec0dd2a56b6ull, 0x6d7bb6d82d1497c7ull, 0xfbe25f6c59b9ec9dull }}, {{ 0xcb183388a3a7631eull, 0x46d52471c2cdedcfull, 0xd6d7ba3b81433e26ull }}, {{ 0xeef203566489df2aull, 0xc4536c719c0b4a1dull, 0x646d46530ca06d7eull }}, {{ 0x5574215fed62b7a7ull, 0xab423c701870e52bull, 0xec44bf3e7e4446f3ull }}, {{ 0x56894dbf45db2c85ull, 0xb0965c60f468f3b1ull, 0x3aaf7870eeaac584ull }}, {{ 0x615d0978ba8fbd37ull, 0xe5df9bc98c1984edull, 0x4adab46952abb72eull }}, {{ 0xcda25eb7499d6422ull, 0xfabc15df78ff3145ull, 0xec8b0c1d3ab527d4ull }}, {{ 0x0857b328e025e950ull, 0xcb58dabab9f7ecbaull, 0x3d6e79244b138e51ull }}, {{ 0x536cff98c17b1d20ull, 0xf1788b4b43af3f44ull, 0x6650bb6aeec38f31ull }}, {{ 0x4241fbf78ecf2342ull, 0x6eb570f0a4d878abull, 0xff27522d53a397f3ull }}, {{ 0x9693d7ab94176092ull, 0x531669667074b6b0ull, 0xf78935c54463ef82ull }}, {{ 0xe1c66cb3c8e9c5b5ull, 0x3ee01e00648f22e5ull, 0xab5c19b4abe75b17ull }}, {{ 0xd1c03f05d921b916ull, 0x74c12c03ed975cfaull, 0xb199010eb7098ee8ull }}, {{ 0x3182763a7b513ad9ull, 0x8f8bb82747e9a1ccull, 0xeffa0a93265f9514ull }}, {{ 0xef189e48d12c4c76ull, 0x9b753188cf2051f9ull, 0x5fc469bf7fbbd2cdull }}, {{ 0x56f62ed82bbafc98ull, 0x1293ef58174333c3ull, 0xbdac217afd563c08ull }}, {{ 0x659dd471b54dddf4ull, 0xb9c75970e8a005a1ull, 0x68b94ecde55e5850ull }}, {{ 0xf82a4c71150aab84ull, 0x41c97e691640384dull, 0x173d140af5af7327ull }}, {{ 0xb1a6fc6ad26ab328ull, 0x91def01ade82330bull, 0xe862c86d98da7f88ull }}, {{ 0xf085dc2c382aff8eull, 0xb2b5610cb115fe74ull, 0x13dbd447f888fb55ull }}, {{ 0x653a99ba31adfb8cull, 0xfb15ca7eeadbf091ull, 0xc6964acfb559d158ull }}, {{ 0xf44a0145f0cbd377ull, 0xced9e8f52c9765adull, 0xc1deec1d15822d79ull }}, {{ 0x8ae40cbb67f642a8ull, 0x14831993bde9f8cbull, 0x92b53922d715c6c2ull }}, {{ 0x6ce87f520f9e9a92ull, 0xcd1effc56b23b7f3ull, 0xbb143b5c66d9c394ull }}, {{ 0x4114f9349c3209afull, 0x0335fdb62f652f82ull, 0x4eca519c0481a3d0ull }}, {{ 0x8ad1bc0e19f460daull, 0x201be91dd9f3db16ull, 0x13e730182d106620ull }}, {{ 0x6c31588d038bc888ull, 0x41171b2a83868ee1ull, 0xc707e0f1c2a3fd41ull }}, {{ 0x39ed75822375d54bull, 0x8ae70fa9234194ceull, 0xc64ec9719a67e48cull }}, {{ 0x43469715629a54efull, 0x6d069c9b608fd00eull, 0xbf13de70080eed7dull }}, {{ 0xa0c1e6d5da075157ull, 0x42421e11c59e208eull, 0x76c6b060509546e6ull }}, {{ 0x4793045a84492d63ull, 0x96952cb1b82d4592ull, 0xa3c2e3c325d4c4feull }}, {{ 0xcbbe2b892adbc5daull, 0xe1d3bef131c4b7b6ull, 0x659ce59f7a4fb1f1ull }}, {{ 0xf56db35bac95ba86ull, 0xd245756bf1af2d23ull, 0xf820f83ac71cf372ull }}, {{ 0x96490194bdd9493dull, 0x36b6963770d7c367ull, 0xb149b24bc721827cull }}, {{ 0xdeda0fcf6a7cdc62ull, 0x2321de2a686da20bull, 0xece0f6f5c74f18daull }}, {{ 0xb4849e1a28e09bd3ull, 0x5f52ada814485476ull, 0x40c9a599c916f885ull }}, {{ 0x0d2e2d0598c61642ull, 0xb93ac890cad34ca3ull, 0x87e07801dae5b535ull }}, {{ 0x83cdc237f7bcde94ull, 0x3c4bd5a7ec40fe5eull, 0x4ec4b0128cf91419ull }}, {{ 0x2609962fad60b1c6ull, 0x5af6588f3a89efb1ull, 0x13aee0b981bac8fcull }}, {{ 0x7c5fdddcc5c6f1bfull, 0x8d9f759849635cebull, 0xc4d4c73f114bd9dbull }}, {{ 0xdbbeaa9fb9c5717aull, 0x883a97f2dde1a132ull, 0xb04fc876acf68293ull }}, {{ 0x9572aa3d41b66ec8ull, 0x5249ef7caad04bfcull, 0xe31dd4a2c1a119c3ull }}, {{ 0xd67aa664912053ccull, 0x36e35adeac22f7ddull, 0xdf2a4e5b904b01a1ull }}, {{ 0x60ca7fedab4345f6ull, 0x24e18cb2b95daeaaull, 0xb7a70f93a2ee104cull }}, {{ 0xc7e8ff48b0a0bb9dull, 0x70cf7efb3da8d2a7ull, 0x2c869bc45d4ca2f9ull }}, {{ 0xcf19f8d6e6475422ull, 0x681af5d068983a8dull, 0xbd4215aba4fe5dbeull }}, {{ 0x1703b864fec94951ull, 0x110d9a2415f2498aull, 0x6494d8b471efa970ull }}, {{ 0xe62533f1f3dcdd25ull, 0xaa880568db76df64ull, 0xedd0770c735c9e60ull }}, {{ 0xfd74077386a0a376ull, 0xa950361892a4b9f0ull, 0x4a24a67c819e2fc6ull }}, {{ 0xe6884a8342466298ull, 0x9d221cf5ba6f4369ull, 0xe56e80dd102dddc2ull }}, {{ 0x0152e92096bfd9eeull, 0x235521994858a223ull, 0xf65108a2a1caa99aull }}, {{ 0x0d3d1b45e37e8347ull, 0x61534ffcd376555eull, 0x9f2a565a51eaa005ull }}, {{ 0x846310bae2f120c8ull, 0xcd411fe0429f55acull, 0x37a75f87332a4035ull }}, {{ 0x2bdea74cdd6b47d4ull, 0x048b3ec29a3958bdull, 0x2c89bb47ffa6821aull }}, {{ 0xb6b28900a630ce4bull, 0x2d70739a063d7763ull, 0xbd6150cffc811504ull }}, {{ 0x22f95a067de80ef1ull, 0xc66484043e66a9e5ull, 0x65cd281fdd0ad229ull }}, {{ 0x5dbd8440eb109565ull, 0xbfed282a7002a2f3ull, 0xfa03913ea26c35a1ull }}, {{ 0xa9672a892ea5d5f6ull, 0x7f4391a8601a5d81ull, 0xc423ac72583a1851ull }}, {{ 0x9e07a95bd27a5b9cull, 0xf8a3b093c107a710ull, 0xa964bc777244f32eull }}, {{ 0x2c4c9d9638c7941bull, 0xb664e5c58a4c86a6ull, 0x9def5caa76b17fd5ull }}, {{ 0xbafe27de37cbc90cull, 0x1ff0f9b766fd427dull, 0x2b599ea8a2eefe59ull }}, {{ 0x4ded8eae2df5da7cull, 0x3f69c12a05e498e9ull, 0xb18032965d55ef7bull }}, {{ 0x0b4792cdcb9a88d4ull, 0x7a218ba43aedf91dull, 0xef01f9dfa55b5ad0ull }}, {{ 0x70cbbc09f4095845ull, 0xc54f746a4d4bbb22ull, 0x5613c2bc75918c24ull }}, {{ 0x67f55863885d72aeull, 0xb51a8c2704f54f58ull, 0x5cc59b5c97af796full }}, {{ 0x0f9573e353a67acbull, 0x1309798631951974ull, 0x9fb8119decdabe5dull }}, {{ 0x9bd686e14480cbf2ull, 0xbe5ebf3defd2fe88ull, 0x3d30b02b408b6fa2ull }}, {{ 0x166144ccad07f76full, 0x6fb3786b5e3df156ull, 0x63e6e1b085725c5bull }}, {{ 0xdfccaffec24faa58ull, 0x5d02b431ae6b6d5cull, 0xe704d0e536779b92ull }}, {{ 0xbdfedff3971ca775ull, 0xa21b09f0d03245a0ull, 0x063028f420ac13b7ull }}, {{ 0x6bf4bf83e71e8a90ull, 0x550e636821f6b847ull, 0x3de1998946b8c52cull }}, {{ 0x378f7b270731699dull, 0x528fe21153a332caull, 0x6acfff5cc337b3bbull }}, {{ 0x2b9acf8647ee2021ull, 0x399ed4ad445ffbe6ull, 0x2c1ff99fa02d0551ull }}, {{ 0xb40c1b3ecf4d4146ull, 0x40344ec4abbfd6fdull, 0xb93fc03c41c2352cull }}, {{ 0x0879107419048cc0ull, 0x820b13aeb57e65e9ull, 0x3c7d825a919613baull }}, {{ 0x54baa488fa2d7f7eull, 0x146ec4d316effb1aull, 0x5ce71789afdcc549ull }}, {{ 0x4f4a6d59c5c6faf0ull, 0xcc53b03ee55fcf07ull, 0xa106eb60de9fb4daull }}, {{ 0x18e84581b9c5cd61ull, 0xfb44e274f5be1649ull, 0x4a4531c8b23d108bull }}, {{ 0xf912b71141ba05caull, 0xd0b0d891996cdedaull, 0xe6b3f1d6f662a577ull }}, {{ 0xbabb26ac914439e5ull, 0x26e875affe40b48dull, 0x030772659fda76aeull }}, {{ 0x4b4f82bdacaa42f2ull, 0x851498dfee870d89ull, 0x1e4a77f83e88a2cdull }}, {{ 0xf11b1b68bea69d6full, 0x32cdf8bf5146875cull, 0x2ee8afb271565c07ull }}, {{ 0x6b0f12177282265aull, 0xfc0bb7792cc149a1ull, 0xd516dcf86d5f9847ull }}, {{ 0x2e96b4ea79157f87ull, 0xd8752abbbf8ce04eull, 0x52e4a1b445bbf2cfull }}, {{ 0xd1e31128bad6fb4bull, 0x7493ab557b80c30dull, 0x3cee510ab9577c1eull }}, {{ 0x32deab974c65d0ecull, 0x8dc4b156d3079e8aull, 0x614f2a6b3d6ad930ull }}, {{ 0xfcb2b3e8fbfa2937ull, 0x89aeed643e4c3165ull, 0xcd17a830662c7be5ull }}, {{ 0xdefb0719d7c59c23ull, 0x60d545ea6ef9edfbull, 0x02ec91e3fdbcd6f7ull }}, {{ 0xb5ce47026db81962ull, 0xc854bb2855c34bd6ull, 0x1d3db2e7e96065a9ull }}, {{ 0x1a0ec6184930fdd1ull, 0xd34f4f9359a0f663ull, 0x2468fd0f1dc3f8a1ull }}, {{ 0x0493bcf2dbe9ea29ull, 0x41191bc180499fdfull, 0x6c19e29729a7b652ull }}, {{ 0x2dc5617c9723259aull, 0x8afb158f02e03eb6ull, 0x3902d9e7a08d1f36ull }}, {{ 0xc9b5cedde75f77ffull, 0x6dced7961cc2731dull, 0x3a1c830c45833821ull }}, {{ 0xe11a14ab09baaffaull, 0x4a146bdd1f987f29ull, 0x451d1e7ab720314eull }}, {{ 0xcb04ceae614adfc5ull, 0xe4cc36a33bf4f7a2ull, 0xb32330cb2741ed0eull }}, {{ 0xee3012cfccecbdafull, 0xeffa22605791ac5bull, 0xff5fe7ef88934294ull }}, {{ 0x4de0bc1e013f68d3ull, 0x5fc557c36bb0bb97ull, 0xf9bf0f5b55c099d1ull }}, {{ 0x0ac7592c0c7a1842ull, 0xbdb56da234e753e9ull, 0xc17699915986022dull }}, {{ 0x6bc97bb87cc4f297ull, 0x691648561109471aull, 0x8ea1ffad7f3c15c9ull }}, {{ 0x35ded534dfb179ebull, 0x1aded35caa5cc708ull, 0x9253fcc6f858d9deull }}, {{ 0x1ab45410bceec32eull, 0x0cb4419ea79fc652ull, 0xb747dfc5b37882adull }}, {{ 0x0b0b48a761539fc8ull, 0x7f0a90328c3dbf35ull, 0x28cebdb902b51ac2ull }}, {{ 0x6e70d689cd443dd3ull, 0xf669a1f97a697812ull, 0x9813693a1b130b98ull }}, {{ 0x5068616204aa6a42ull, 0xa02053bec81eb0b8ull, 0xf0c21c450ebe73f9ull }}, {{ 0x2413cdd42ea82691ull, 0x41434573d132e733ull, 0x67951ab2937087c0ull }}, {{ 0x68c60a49d29181abull, 0x8ca0b6862bfd07ffull, 0x0bd30af9c2654d82ull }}, {{ 0x17bc66e239af10a9ull, 0x7e47213db7e24ffaull, 0x763e6dc197f50719ull }}, {{ 0xed5c04d640d6a69bull, 0xeec74c692ed71fc4ull, 0x9e70498fef9246feull }}, {{ 0x4598305e88628212ull, 0x53c8fc1bd4673db1ull, 0x3062df9f5bb6c5f5ull }}, {{ 0xb7f1e3b153d914b3ull, 0x45d9d9164c0868ecull, 0xe3dcbc399523bb95ull }}, {{ 0x2f72e4ed467acefeull, 0xba827adef854193full, 0xe69f5a3fd36553d4ull }}, {{ 0xda7cf144c0cc15eaull, 0x4918ccb5b348fc77ull, 0x0239867e41f5464full }}, {{ 0x88e16caf87f8db29ull, 0xdaf7ff1900d9dcaeull, 0x163f40ee9394bf18ull }}, {{ 0x58ce3edb4fb88f96ull, 0x8daff6fa08829ed1ull, 0xde788951c3cf76f8ull }}, {{ 0x780e74911d359bdbull, 0x88dfa5c4551a342dull, 0xb0b55d31a61aa5b5ull }}, {{ 0xb0908dab2418168aull, 0x58bc79ab530609c6ull, 0xe715a3f07d0a7917ull }}, {{ 0xe5a588af68f0e167ull, 0x775cc0b13e3c61c2ull, 0x06d86764e268bae9ull }}, {{ 0xf87756da1968ce01ull, 0xa99f86ec6e5bd19cull, 0x447409f0d8174d1eull }}, {{ 0xb4a96484fe180c0bull, 0xa03b453c4f963021ull, 0xac88636870e90332ull }}, {{ 0x0e9ded31ecf07870ull, 0x4250b45b1bdde151ull, 0xbd53e214691a1ffaull }}, {{ 0x922b43f34164b462ull, 0x97270b8f16aacd2aull, 0x6546d4cc1b053fc6ull }}, {{ 0xb5b0a7808def0bd8ull, 0xe7867396e2ac03a9ull, 0xf4c44ff90e347dc1ull }}, {{ 0x18e68b058b56766cull, 0x0b4083e4dab824a1ull, 0x8fab1fba8e0ce993ull }}, {{ 0xf9016e377160a03cull, 0x708526f08b316e4aull, 0x9caf3d498c811fbeull }}, {{ 0xba0e4e2a6dc64255ull, 0x653385656fee4eedull, 0x1ed864df7d0b3d70ull }}, {{ 0x448f0da849be9755ull, 0xf40335f65f4f1549ull, 0x3473f0bae2706663ull }}, {{ 0xad968892e171e956ull, 0x88201b9fb916d4dcull, 0x0c87674cd863ffe7ull }}, {{ 0xc7e155bcce731d58ull, 0x5141143d3ae4509eull, 0x7d4a090073e7ff0bull }}, {{ 0xcecd5960107f2575ull, 0x2c8aca644ceb2633ull, 0xe4e45a04870ff671ull }}, {{ 0x14057dc0a4f7768eull, 0xbd6be7eb012f7e06ull, 0xf0eb842d469fa06bull }}, {{ 0xc836e98671aaa18eull, 0x66370f2e0bdaec3cull, 0x693329c4c23c4435ull }}, {{ 0xd2251f4070aa4f8bull, 0xfe2697cc768d3a5full, 0x1bffa1af965aaa15ull }}, {{ 0x3573388466a71b6cull, 0xed81edfca18447beull, 0x17fc50dbdf8aa4dbull }}, {{ 0x1680352c02871238ull, 0x47134bde4f2acd6eull, 0xefdb2896bb6a7097ull }}, {{ 0xe10213b81946b62cull, 0xc6c0f6af17ac064cull, 0x5e8f95e3522865e8ull }}, {{ 0xca14c530fcc31db5ull, 0xc389a2d6ecb83f00ull, 0xb19bdae13593fb17ull }}, {{ 0xe4cfb3e9df9f2914ull, 0xa3605c653f327607ull, 0xf0168ccc17c7ceedull }}, {{ 0xf01d0722bc379ac8ull, 0x61c39bf477f89c4eull, 0x60e17ff8edce1548ull }}, {{ 0x6122475b5a2c0bccull, 0xd1a4178cafb61b15ull, 0xc8ceffb94a0cd4d3ull }}, {{ 0xcb56c99185b875fbull, 0x3068eb7edd1d0ed5ull, 0xd815fd3ce4805046ull }}, {{ 0xf163dfaf39349bcdull, 0xe41932f4a3229459ull, 0x70dbe460ed0322bdull }}, {{ 0x6de6bcd83c0e1600ull, 0xe8fbfd8e5f59cb83ull, 0x6896ebc9421f5b6aull }}, {{ 0x4b036072588cdbfdull, 0x19d7e78fb981f322ull, 0x15e535dc9539922dull }}, {{ 0xee21c477758097e3ull, 0x026f0b9d3f137f56ull, 0xdaf41a9dd43fb5c3ull }}, {{ 0x4d51acaa9705eedfull, 0x1856742476c2f965ull, 0x8d890a2a4a7d199eull }}, {{ 0x0530bea9e63b54b8ull, 0xf360896ca39dbdf5ull, 0x875a65a6e8e3002cull }}, {{ 0x33e772a2fe514f31ull, 0x81c55e3e64296b92ull, 0x4987f88518de01c1ull }}, {{ 0x070a7a5def2d17e6ull, 0x11b5ae6fe99e33b6ull, 0xdf4fb532f8ac118full }}, {{ 0x4668c7ab57c2eefeull, 0xb118d05f202e051cull, 0xb91d13fdb6b8af96ull }}, {{ 0xc017ccb16d9d55ecull, 0xeaf823b741cc331aull, 0x3b22c7e92336dbe2ull }}, {{ 0x80edfeee48255b36ull, 0x2db1652891f9ff0bull, 0x4f5bcf1b602496ddull }}, {{ 0x094bf54ed175901full, 0xc8edf395b3c3f673ull, 0x19961711c16de4a3ull }}, {{ 0x5cf795142e97a136ull, 0xd94b83d905a7a07eull, 0xffdce6b18e4aee65ull }}, {{ 0xa1abd2c9d1ec4c1aull, 0x7cf3267a388c44efull, 0xfea102ef8eed4ffaull }}, {{ 0x50b63be2333af905ull, 0xe17f80c6357ab15cull, 0xf24a1d5b95451fc8ull }}, {{ 0x271e56d6004dba32ull, 0xcefb07be16caed9bull, 0x76e52593d4b33dd8ull }}, {{ 0x872f645c030945f7ull, 0x15ce4d6ce3ed480full, 0xa4f377c64f006a78ull }}, {{ 0x47d9eb981e5cbba2ull, 0xda0f0640e744d09bull, 0x7182adbf160428b0ull }}, {{ 0xce8333f12f9f5451ull, 0x84963e8908b02610ull, 0x6f1ac976dc2996e8ull }}, {{ 0x1120076bdc394b26ull, 0x2dde715a56e17ca8ull, 0x570bdea4999fe515ull }}, {{ 0xab404a369a3cef7bull, 0xcab06d8764cede90ull, 0x6676b26e003ef2d3ull }}, {{ 0xb082e62206615aceull, 0xeae44749f014b1a6ull, 0x00a2f84c02757c45ull }}, {{ 0xe51cfd543fcd8c0bull, 0x2ceac8e360cef082ull, 0x065db2f81896dabbull }}, {{ 0xf321e54a7e077872ull, 0xc12bd8e1c815651cull, 0x3fa8fdb0f5e48b4full }}, {{ 0x7f52f4e8ec4ab472ull, 0x8bb678d1d0d5f321ull, 0x7c99e8e99aed711dull }}, {{ 0xf93d91193aeb0c72ull, 0x7520b832285b7f4eull, 0xde0319200d466b27ull }}, {{ 0xbc67aafc4d2e7c75ull, 0x934731f59392f915ull, 0xac1efb4084c02f8aull }}, {{ 0x5c0caddb03d0dc95ull, 0xc0c7f397c3bdbad9ull, 0xb935d0852f81db69ull }}, {{ 0x987eca8e26289dd1ull, 0x87cf83eda5694c7dull, 0x3c1a2533db129221ull }}, {{ 0xf4f3e98d7d962a25ull, 0x4e1b2748761cfce7ull, 0x590574068eb9b54full }}, {{ 0x91871f86e7dda573ull, 0x0d0f88d49d21e10full, 0x7a36884193411519ull }}, {{ 0xaf473b450ea8767cull, 0x829b584e2352ca9bull, 0xc621528fc08ad2faull }}, {{ 0xd8c850b29294a0d5ull, 0x1a11730d613bea14ull, 0xbd4d399d856c3dc9ull }}, {{ 0x77d326f9b9ce4855ull, 0x04ae7e85cc5724d0ull, 0x65044027363a69dbull }}, {{ 0xae3f85c1420ed354ull, 0x2ed0f139fb677024ull, 0xf22a81881e48228eull }}, {{ 0xce7b398c94944143ull, 0xd4296c43d20a616eull, 0x75a90f512ed1598dull }}, {{ 0x10d03f7dcdca8ca2ull, 0x499e3aa63467ce54ull, 0x989a992bd42d7f8aull }}, {{ 0xa8227aea09e97e51ull, 0xe02e4a7e0c0e0f48ull, 0xf609fbb649c6fb66ull }}, {{ 0x9158cd24631eef28ull, 0xc1cee8ec788c98d6ull, 0x9c63d51ee1c5d204ull }}, {{ 0xad78036bdf355794ull, 0x9215193cb57df861ull, 0x1be65334d1ba342full }}, {{ 0xc6b02236b8156bcdull, 0xb4d2fc5f16ebb3d0ull, 0x16ff4010314609dbull }}, {{ 0xc2e1562330d635feull, 0x103ddbb6e5350627ull, 0xe5f880a1ecbc6295ull }}, {{ 0x9ccd5d5fe85e1beeull, 0xa26a9524f4123d8dull, 0xfbb506533f5bd9d2ull }}, {{ 0x2005a5bf13ad1748ull, 0x5829d37188b66788ull, 0xd5123f407996823aull }}, {{ 0x40387976c4c2e8d3ull, 0x71a2426f57200b51ull, 0x52b67884bfe11647ull }}, {{ 0x8234bea3af9d1842ull, 0x705698596740712cull, 0x3b20b52f7ecadecaull }}, {{ 0x160f7264dc22f291ull, 0x6361f37e08846bbdull, 0x4f4713daf3ecb3e8ull }}, {{ 0xdc9a77f0995d79a6ull, 0xe1d382ec552c3562ull, 0x18c6c68d873f0713ull }}, {{ 0x9e08af65fda6c07cull, 0xd2431d3b53ba15dcull, 0xf7c3c187487646c6ull }}, {{ 0x2c56d9fbe88384d9ull, 0x369f24514544da9eull, 0xada58f48d49ec3c4ull }}, {{ 0xbb6483d715233075ull, 0x22376b2cb4b08a2dull, 0xc87798d84e33a5aaull }}, {{ 0x51ed2666d35fe497ull, 0x562a2fbf0ee565c9ull, 0xd4abf8730e0478a5ull }}, {{ 0x3343800441beede5ull, 0x5da5dd7694f5f9ddull, 0x4eb7b47e8c2cb675ull }}, {{ 0x00a3002a91754af2ull, 0xa87aa6a1d19bc2a4ull, 0x132d0cf179bf2095ull }}, {{ 0x065e01a9ae94ed70ull, 0x94ca825230159a68ull, 0xbfc2816ec17745d8ull }}, {{ 0x3fac10a0d1d1465full, 0xcfe91735e0d80810ull, 0x7d990e538ea8ba75ull }}, {{ 0x7cb8a648322cbfb4ull, 0x1f1ae81ac87050a2ull, 0xe7fa8f439297489aull }}, {{ 0xdf367ed1f5bf7d06ull, 0x370d110bd4632658ull, 0x0fc998a3b9e8d605ull }}, {{ 0xb820f433997ae238ull, 0x2682aa764bdf7f78ull, 0x9ddff66543185c34ull }}, {{ 0x31498a03feccd62bull, 0x811aa89ef6bafab7ull, 0x2abf9ff49ef39a09ull }}, {{ 0xecdf6427f4005db0ull, 0x0b0a9635a34dcb27ull, 0xab7c3f8e3584045full }}, {{ 0x40b9e98f8803a8e5ull, 0x6e69de186109ef8full, 0xb2da7b8e17282bb6ull }}, {{ 0x87431f9b502498eeull, 0x5022acf3ca635b98ull, 0xfc88d38ce791b520ull }}, {{ 0x489f3c11216df949ull, 0x215ac185e7e193f5ull, 0xdd5843810bb11343ull }}, {{ 0xd63858ab4e4bbcddull, 0x4d8b8f3b0ecfc794ull, 0xa572a30a74eac09full }}, {{ 0x5e3376b10ef560a2ull, 0x0773984e941dcbd0ull, 0x767a5e68912b8639ull }}, {{ 0xae02a2ea9595c658ull, 0x4a83f311c929f623ull, 0xa0c7b015abb33e3aull }}, {{ 0xcc1a5d29d7d9bf70ull, 0xe9277eb1dba39d64ull, 0x47cce0d8b5006e46ull }}, {{ 0xf907a3a26e817a5full, 0x1b8af2f2946425efull, 0xce00c87712044ec5ull }}, {{ 0xba4c6458510ec7b4ull, 0x136d7d79cbe97b5full, 0x0c07d4a6b42b13b3ull }}, {{ 0x46fbeb732a93cd03ull, 0xc246e6c1f71ed1bdull, 0x784e4e8309aec4feull }}, {{ 0xc5d7327fa9c6021full, 0x96c50393a7343164ull, 0xb30f111e60d3b1f3ull }}, {{ 0xba67f8fca1bc1535ull, 0xe3b223c48809edefull, 0xfe96ab2fc844f383ull }}, {{ 0x480fb9de5158d410ull, 0xe4f565ad50634b5dull, 0xf1e2afddd2b18326ull }}, {{ 0xd09d42af2d78489full, 0xf195f8c523e0f1a4ull, 0x72dadeaa3aef1f84ull }}, {{ 0x26249ad7c6b2d63aull, 0x6fdbb7b366c97070ull, 0x7c8cb2a64d573b31ull }}, {{ 0x7d6e0c6dc2fc5e48ull, 0x5e952d0203de6461ull, 0xdd7efa7f05684feeull }}, {{ 0xe64c7c499ddbaed1ull, 0xb1d3c21426afebceull, 0xa6f5c8f636131f4full }} }; BID_F80_CONST_DEF( c_zero, 0000000000000000, 0000000000000000); // 0.0 BID_F80_CONST_DEF( c_neg_one, bfff000000000000, 0000000000000000); // -1.0 BID_F80_CONST_DEF( c_pi_ov_2, 3fff921fb54442d1, 8469898cc51701b8); // pi/2 BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_tan, BID_UINT64, x) // Local variables. BID_UINT64 res; int s, e; BID_UINT64 c; BID_F80_TYPE xd, yd; BID_UINT192 m; BID_UINT256 p; int sf, k, ef, el; BID_F80_ASSIGN( yd, c_zero ); // Decompose the input and check for NaN and infinity. s = x >> 63; if ((x & (3ull<<61)) == (3ull<<61)) { if ((x & (0xFull<<59)) == (0xFull<<59)) { if ((x & (0x1Full<<58)) != (0x1Full<<58)) { // input is infinite, so return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = BID64_NAN; BID_RETURN (res); } else { // input is NaN, so quiet/canonize it etc. #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } } else { // "large coefficient" input e = ((x >> 51) & ((1ull<<10)-1)) - 398; c = (1ull<<53) + (x & ((1ull<<51)-1)); if ((unsigned long long)(c) > 9999999999999999ull) c = 0ull; } } else { // "small coefficient" input e = ((x >> 53) & ((1ull<<10)-1)) - 398; c = x & ((1ull<<53)-1); } // Make sure we treat zero even with huge exponent as small if (c == 0) e = -18; // If the input is trivially <= 1/10, just do the naive computation // since no range reduction is needed and the function is well-conditioned if (e < -17) { BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_tan( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN(res); } // Pick out the appropriate modulus for the exponent and multiply by coeff // Since we discard the top word p.w[3], we could specially optimize this. m = bid_decimal64_moduli[e+17]; __mul_64x192_to_256(p,c,m); // Shift up by two bits to give an integer part k and a fraction // modulo (pi/2). Note that we have to do this afterwards rather than // use modulo (pi/2) reduction at the start to keep integer parities. k = p.w[2] >> 62; sll192_short(p.w[2],p.w[1],p.w[0],2); // If the fraction is >= 1/2, add 1 to integer and complement the fraction // with an appropriate sign change so we have a "rounded to nearest" version // (Complementing is slightly different from negation but it's negligible.) // Set "sf" to the correct sign for the fraction if (p.w[2] >= 0x8000000000000000ull) { k = (k + 1) & 3; p.w[2] = ~p.w[2]; p.w[1] = ~p.w[1]; p.w[0] = ~p.w[0]; sf = 1 - s; } else { sf = s; } // Also correct k to take into account the sign if (s) k = (-k) & 3; // Normalize the binary fraction with exponent ef if (p.w[2] == 0) // This probably can't happen but I'm not quite sure { ef = 16382-64; p.w[2] = p.w[1]; p.w[1] = p.w[0]; } else ef = 16382; el = clz64_nz(p.w[2]); ef = ef - el; if (el != 0) sll128_short(p.w[2],p.w[1],el); // Now package it as a double-extended number. { BID_F80_CONST tmp; BID_F80_PACK_TRIG( tmp, sf, ef, p.w[2] ); BID_F80_ASSIGN( xd, tmp ); } // Multiply by pi/2 so we can use regular binary trig functions. __bid_f80_mul( xd, c_pi_ov_2.v, xd ); // Now use the trig function depending on k: switch(k) { case 0: case 2: __bid_f80_tan( yd, xd ); break; case 1: case 3: __bid_f80_tan( yd, xd ); __bid_f80_div( yd, c_neg_one.v, yd ); break; default: break; // default added to avoid compiler warning } BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN(res); } LIBRARY/src/strtod128.c0000644€­ Q01134020000000443315113665770013560 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_strtod.h" DFP_WRAPFN_TYPE1_TYPE2(128, bid_strtod128, const char* RESTRICT , char** RESTRICT) BID_UINT128 bid_strtod128(const char* RESTRICT ps_in, char** RESTRICT endptr) { char * ps0; BID_UINT128 DR; #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS unsigned fpsc=0, *pfpsf=&fpsc; #endif #if !DECIMAL_GLOBAL_ROUNDING unsigned rnd_mode=0; #endif ps0 = strtod_conversion(ps_in, endptr); if(!ps0) { DR.w[BID_HIGH_128W] = 0x3040000000000000ull; DR.w[BID_LOW_128W] = 0ull; return DR; // 0.0 } BIDECIMAL_CALL1_RESARG (bid128_from_string, DR, ps0); free(ps0); return DR; } LIBRARY/src/bid128_exp10.c0000644€­ Q01134020000001162215113665770014012 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID128_FUNCTION_ARG1 (bid128_exp10, x) BID_UINT128 CX, res, threshold, xn, tmp, fd; BID_UINT64 sign_x; BID_SINT64 kl, k2l, scorr; BID_F128_TYPE rq, xq; int exponent_x, cmp_res, k, k2; // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value_BLE (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN if ((x.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = (CX.w[BID_HIGH_128W]) & QUIET_MASK64; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; BID_RETURN (res); } // x is Infinity? if ((x.w[BID_HIGH_128W] & 0x7800000000000000ull) == 0x7800000000000000ull) { res.w[BID_HIGH_128W] = sign_x? 0: 0x7800000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } // x is 0, return 1.0 res.w[BID_HIGH_128W] = 0x3040000000000000ull; res.w[BID_LOW_128W] = 1; BID_RETURN (res); } threshold.w[BID_HIGH_128W] = 0x3040000000000000ull; threshold.w[BID_LOW_128W] = 0x17df; // 6111 = emax - bias xn.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] ^ sign_x; xn.w[BID_LOW_128W] = x.w[BID_LOW_128W]; // compare |x| to threshold BIDECIMAL_CALL2_NORND (bid128_quiet_less, cmp_res, threshold, xn); if(cmp_res) { // compare to 6400 threshold.w[BID_HIGH_128W] = 0x3040000000000000ull; threshold.w[BID_LOW_128W] = 0x1900; // 6400 // compare |x| to threshold BIDECIMAL_CALL2_NORND (bid128_quiet_less, cmp_res, threshold, xn); if(cmp_res) { // |x|>6400, overflow or underflow case if(sign_x) tmp.w[BID_HIGH_128W] = 0x1100000000000000ull; else tmp.w[BID_HIGH_128W] = 0x4f80000000000000ull; tmp.w[BID_LOW_128W] = 1; // dummy op to set the result and flags BIDECIMAL_CALL2 (bid128_mul, res, tmp, tmp); BID_RETURN (res); } // get k=(int)(|x|) BIDECIMAL_CALL1_NORND (bid128_to_int32_rnint, k, xn); // tmp = -(int)(x) tmp.w[BID_HIGH_128W] = sign_x ^ 0xb040000000000000ull; tmp.w[BID_LOW_128W] = k; // fd = x - (int)(x) BIDECIMAL_CALL2 (bid128_add, fd, x, tmp); // 10^fd BIDECIMAL_CALL1 (bid128_to_binary128, xq, fd); __bid_f128_exp10(rq, xq); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); if(sign_x) k = -k; k2 = k>>1; k -= k2; k2l = (BID_SINT64)k2; kl = (BID_SINT64)k; res.w[BID_HIGH_128W] += (k2l<<49); // first scaling tmp.w[BID_HIGH_128W] = 0x3040000000000000ull + (kl<<49); tmp.w[BID_LOW_128W] = 1; // second scaling will set flags and result correctly BIDECIMAL_CALL2 (bid128_mul, res, res, tmp); BID_RETURN (res); } // get k=(int)(|x|) BIDECIMAL_CALL1_NORND (bid128_to_int32_rnint, k, xn); // tmp = -(int)(x) tmp.w[BID_HIGH_128W] = sign_x ^ 0xb040000000000000ull; tmp.w[BID_LOW_128W] = k; // fd = x - (int)(|x|) BIDECIMAL_CALL2 (bid128_add, fd, x, tmp); // 10^fd BIDECIMAL_CALL1 (bid128_to_binary128, xq, fd); __bid_f128_exp10(rq, xq); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); kl = (BID_SINT64)k; // set correct sign of kl scorr = (BID_SINT64)sign_x; scorr >>= 63; kl = scorr ^ (kl + scorr); res.w[BID_HIGH_128W] += (kl<<49); BID_RETURN (res); } LIBRARY/src/bid64_round_integral.c0000644€­ Q01134020000012074215113665770016014 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_round_integral_exact ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_round_integral_exact, BID_UINT64, x) BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT64 x_sign; int exp; // unbiased exponent // Note: C1 represents the significand (BID_UINT64) BID_UI64DOUBLE tmp1; int x_nr_bits; int q, ind, shift; BID_UINT64 C1; // BID_UINT64 res is C* at first - represents up to 16 decimal digits <= 54 bits BID_UINT128 fstar = { {0x0ull, 0x0ull} }; BID_UINT128 P128; x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // check for NaNs and infinities if ((x & MASK_NAN) == MASK_NAN) { // check for NaN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffffffffffffull; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity res = x_sign | 0x7800000000000000ull; BID_RETURN (res); } // unpack x if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:w+1] exp = ((x & MASK_BINARY_EXPONENT2) >> 51) - 398; C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical C1 = 0; } } else { // if ((x & MASK_STEERING_BITS) != MASK_STEERING_BITS) exp = ((x & MASK_BINARY_EXPONENT1) >> 53) - 398; C1 = (x & MASK_BINARY_SIG1); } // if x is 0 or non-canonical return 0 preserving the sign bit and // the preferred exponent of MAX(Q(x), 0) if (C1 == 0) { if (exp < 0) exp = 0; res = x_sign | (((BID_UINT64) exp + 398) << 53); BID_RETURN (res); } // x is a finite non-zero number (not 0, non-canonical, or special) switch (rnd_mode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // return 0 if (exp <= -(p+1)) if (exp <= -17) { res = x_sign | 0x31c0000000000000ull; *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_DOWN: // return 0 if (exp <= -p) if (exp <= -16) { if (x_sign) { res = 0xb1c0000000000001ull; } else { res = 0x31c0000000000000ull; } *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_UP: // return 0 if (exp <= -p) if (exp <= -16) { if (x_sign) { res = 0xb1c0000000000000ull; } else { res = 0x31c0000000000001ull; } *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_TO_ZERO: // return 0 if (exp <= -p) if (exp <= -16) { res = x_sign | 0x31c0000000000000ull; *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; default: break; // default added to avoid compiler warning } // end switch () // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 q = 16; } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } } if (exp >= 0) { // -exp <= 0 // the argument is an integer already res = x; BID_RETURN (res); } switch (rnd_mode) { case BID_ROUNDING_TO_NEAREST: if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 64 bits // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // if (0 < f* < 10^(-x)) then the result is a midpoint // since round_to_even, subtract 1 if current result is odd if ((res & 0x0000000000000001ull) && (fstar.w[1] == 0) && (fstar.w[0] < bid_ten2mk64[ind - 1])) { res--; } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact // fstar.w[0] - 0x8000000000000000ull is f* - 1/2 if ((fstar.w[0] - 0x8000000000000000ull) > bid_ten2mk64[ind - 1]) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 21 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 if (fstar.w[1] > bid_onehalf128[ind - 1] || fstar.w[0] > bid_ten2mk64[ind - 1]) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp < 0 // the result is +0 or -0 res = x_sign | 0x31c0000000000000ull; *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_TIES_AWAY: if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 64 bits // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // if (0 < f* < 10^(-x)) then the result is a midpoint // C* = floor(C*) - logical right shift; C* has p decimal digits, // correct by Prop. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // midpoints are already rounded correctly // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact // fstar.w[0] - 0x8000000000000000ull is f* - 1/2 if ((fstar.w[0] - 0x8000000000000000ull) > bid_ten2mk64[ind - 1]) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 21 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 if (fstar.w[1] > bid_onehalf128[ind - 1] || fstar.w[0] > bid_ten2mk64[ind - 1]) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp < 0 // the result is +0 or -0 res = x_sign | 0x31c0000000000000ull; *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_DOWN: if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // if (0 < f* < 10^(-x)) then the result is exact // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // if (f* > 10^(-x)) then the result is inexact if ((fstar.w[1] != 0) || (fstar.w[0] >= bid_ten2mk64[ind - 1])) { if (x_sign) { // if negative and not exact, increment magnitude res++; } *pfpsf |= BID_INEXACT_EXCEPTION; } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 // the result is +0 or -1 if (x_sign) { res = 0xb1c0000000000001ull; } else { res = 0x31c0000000000000ull; } *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_UP: if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // if (0 < f* < 10^(-x)) then the result is exact // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // if (f* > 10^(-x)) then the result is inexact if ((fstar.w[1] != 0) || (fstar.w[0] >= bid_ten2mk64[ind - 1])) { if (!x_sign) { // if positive and not exact, increment magnitude res++; } *pfpsf |= BID_INEXACT_EXCEPTION; } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 // the result is -0 or +1 if (x_sign) { res = 0xb1c0000000000000ull; } else { res = 0x31c0000000000001ull; } *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; case BID_ROUNDING_TO_ZERO: if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // if (0 < f* < 10^(-x)) then the result is exact // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // if (f* > 10^(-x)) then the result is inexact if ((fstar.w[1] != 0) || (fstar.w[0] >= bid_ten2mk64[ind - 1])) { *pfpsf |= BID_INEXACT_EXCEPTION; } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp < 0 // the result is +0 or -0 res = x_sign | 0x31c0000000000000ull; *pfpsf |= BID_INEXACT_EXCEPTION; BID_RETURN (res); } break; default: break; // default added to avoid compiler warning } // end switch () BID_RETURN (res); } /***************************************************************************** * BID64_round_integral_nearest_even ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT64, bid64_round_integral_nearest_even, BID_UINT64, x) BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT64 x_sign; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 fstar= { {0x0ull, 0x0ull} }; BID_UINT128 P128; x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // check for NaNs and infinities if ((x & MASK_NAN) == MASK_NAN) { // check for NaN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffffffffffffull; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity res = x_sign | 0x7800000000000000ull; BID_RETURN (res); } // unpack x if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:w+1] exp = ((x & MASK_BINARY_EXPONENT2) >> 51) - 398; C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical C1 = 0; } } else { // if ((x & MASK_STEERING_BITS) != MASK_STEERING_BITS) exp = ((x & MASK_BINARY_EXPONENT1) >> 53) - 398; C1 = (x & MASK_BINARY_SIG1); } // if x is 0 or non-canonical if (C1 == 0) { if (exp < 0) exp = 0; res = x_sign | (((BID_UINT64) exp + 398) << 53); BID_RETURN (res); } // x is a finite non-zero number (not 0, non-canonical, or special) // return 0 if (exp <= -(p+1)) if (exp <= -17) { res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 q = 16; } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } } if (exp >= 0) { // -exp <= 0 // the argument is an integer already res = x; BID_RETURN (res); } else if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; the exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 64 bits // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // if (0 < f* < 10^(-x)) then the result is a midpoint // since round_to_even, subtract 1 if current result is odd if ((res & 0x0000000000000001ull) && (fstar.w[1] == 0) && (fstar.w[0] < bid_ten2mk64[ind - 1])) { res--; } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp < 0 // the result is +0 or -0 res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } } /***************************************************************************** * BID64_round_integral_negative *****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT64, bid64_round_integral_negative, BID_UINT64, x) BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT64 x_sign; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; int x_nr_bits; int q, ind, shift; BID_UINT64 C1; // BID_UINT64 res is C* at first - represents up to 34 decimal digits ~ 113 bits BID_UINT128 fstar= { {0x0ull, 0x0ull} }; BID_UINT128 P128; x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // check for NaNs and infinities if ((x & MASK_NAN) == MASK_NAN) { // check for NaN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffffffffffffull; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity res = x_sign | 0x7800000000000000ull; BID_RETURN (res); } // unpack x if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:w+1] exp = ((x & MASK_BINARY_EXPONENT2) >> 51) - 398; C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical C1 = 0; } } else { // if ((x & MASK_STEERING_BITS) != MASK_STEERING_BITS) exp = ((x & MASK_BINARY_EXPONENT1) >> 53) - 398; C1 = (x & MASK_BINARY_SIG1); } // if x is 0 or non-canonical if (C1 == 0) { if (exp < 0) exp = 0; res = x_sign | (((BID_UINT64) exp + 398) << 53); BID_RETURN (res); } // x is a finite non-zero number (not 0, non-canonical, or special) // return 0 if (exp <= -p) if (exp <= -16) { if (x_sign) { res = 0xb1c0000000000001ull; } else { res = 0x31c0000000000000ull; } BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 q = 16; } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } } if (exp >= 0) { // -exp <= 0 // the argument is an integer already res = x; BID_RETURN (res); } else if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; the exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // if (0 < f* < 10^(-x)) then the result is exact // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // if (f* > 10^(-x)) then the result is inexact if (x_sign && ((fstar.w[1] != 0) || (fstar.w[0] >= bid_ten2mk64[ind - 1]))) { // if negative and not exact, increment magnitude res++; } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 // the result is +0 or -1 if (x_sign) { res = 0xb1c0000000000001ull; } else { res = 0x31c0000000000000ull; } BID_RETURN (res); } } /***************************************************************************** * BID64_round_integral_positive ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT64, bid64_round_integral_positive, BID_UINT64, x) BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT64 x_sign; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; int x_nr_bits; int q, ind, shift; BID_UINT64 C1; // BID_UINT64 res is C* at first - represents up to 34 decimal digits ~ 113 bits BID_UINT128 fstar= { {0x0ull, 0x0ull} }; BID_UINT128 P128; x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // check for NaNs and infinities if ((x & MASK_NAN) == MASK_NAN) { // check for NaN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffffffffffffull; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity res = x_sign | 0x7800000000000000ull; BID_RETURN (res); } // unpack x if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:w+1] exp = ((x & MASK_BINARY_EXPONENT2) >> 51) - 398; C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical C1 = 0; } } else { // if ((x & MASK_STEERING_BITS) != MASK_STEERING_BITS) exp = ((x & MASK_BINARY_EXPONENT1) >> 53) - 398; C1 = (x & MASK_BINARY_SIG1); } // if x is 0 or non-canonical if (C1 == 0) { if (exp < 0) exp = 0; res = x_sign | (((BID_UINT64) exp + 398) << 53); BID_RETURN (res); } // x is a finite non-zero number (not 0, non-canonical, or special) // return 0 if (exp <= -p) if (exp <= -16) { if (x_sign) { res = 0xb1c0000000000000ull; } else { res = 0x31c0000000000001ull; } BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 q = 16; } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } } if (exp >= 0) { // -exp <= 0 // the argument is an integer already res = x; BID_RETURN (res); } else if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; the exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // if (0 < f* < 10^(-x)) then the result is exact // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; fstar.w[1] = 0; fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; } // if (f* > 10^(-x)) then the result is inexact if (!x_sign && ((fstar.w[1] != 0) || (fstar.w[0] >= bid_ten2mk64[ind - 1]))) { // if positive and not exact, increment magnitude res++; } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp <= 0 // the result is -0 or +1 if (x_sign) { res = 0xb1c0000000000000ull; } else { res = 0x31c0000000000001ull; } BID_RETURN (res); } } /***************************************************************************** * BID64_round_integral_zero ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT64, bid64_round_integral_zero, BID_UINT64, x) BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT64 x_sign; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; int x_nr_bits; int q, ind, shift; BID_UINT64 C1; // BID_UINT64 res is C* at first - represents up to 34 decimal digits ~ 113 bits BID_UINT128 P128; x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // check for NaNs and infinities if ((x & MASK_NAN) == MASK_NAN) { // check for NaN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffffffffffffull; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity res = x_sign | 0x7800000000000000ull; BID_RETURN (res); } // unpack x if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:w+1] exp = ((x & MASK_BINARY_EXPONENT2) >> 51) - 398; C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical C1 = 0; } } else { // if ((x & MASK_STEERING_BITS) != MASK_STEERING_BITS) exp = ((x & MASK_BINARY_EXPONENT1) >> 53) - 398; C1 = (x & MASK_BINARY_SIG1); } // if x is 0 or non-canonical if (C1 == 0) { if (exp < 0) exp = 0; res = x_sign | (((BID_UINT64) exp + 398) << 53); BID_RETURN (res); } // x is a finite non-zero number (not 0, non-canonical, or special) // return 0 if (exp <= -p) if (exp <= -16) { res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 q = 16; } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } } if (exp >= 0) { // -exp <= 0 // the argument is an integer already res = x; BID_RETURN (res); } else if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; the exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // if (0 < f* < 10^(-x)) then the result is exact // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; // redundant fstar.w[1] = 0; // redundant fstar.w[0] = P128.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); // redundant fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; // redundant fstar.w[0] = P128.w[0]; } // if (f* > 10^(-x)) then the result is inexact // if ((fstar.w[1] != 0) || (fstar.w[0] >= bid_ten2mk64[ind-1])){ // // redundant // } // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp < 0 // the result is +0 or -0 res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } } /***************************************************************************** * BID64_round_integral_nearest_away ****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_DFP(BID_UINT64, bid64_round_integral_nearest_away, BID_UINT64, x) BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT64 x_sign; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; int x_nr_bits; int q, ind, shift; BID_UINT64 C1; BID_UINT128 P128; x_sign = x & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // check for NaNs and infinities if ((x & MASK_NAN) == MASK_NAN) { // check for NaN if ((x & 0x0003ffffffffffffull) > 999999999999999ull) x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits else x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & MASK_SNAN) == MASK_SNAN) { // SNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (SNaN) res = x & 0xfdffffffffffffffull; } else { // QNaN res = x; } BID_RETURN (res); } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity res = x_sign | 0x7800000000000000ull; BID_RETURN (res); } // unpack x if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11 (condition will be 0), then // the exponent is G[0:w+1] exp = ((x & MASK_BINARY_EXPONENT2) >> 51) - 398; C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; if (C1 > 9999999999999999ull) { // non-canonical C1 = 0; } } else { // if ((x & MASK_STEERING_BITS) != MASK_STEERING_BITS) exp = ((x & MASK_BINARY_EXPONENT1) >> 53) - 398; C1 = (x & MASK_BINARY_SIG1); } // if x is 0 or non-canonical if (C1 == 0) { if (exp < 0) exp = 0; res = x_sign | (((BID_UINT64) exp + 398) << 53); BID_RETURN (res); } // x is a finite non-zero number (not 0, non-canonical, or special) // return 0 if (exp <= -(p+1)) if (exp <= -17) { res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 54) // determine first the nr. of bits in x if (C1 >= 0x0020000000000000ull) { // x >= 2^53 q = 16; } else { // if x < 2^53 tmp1.d = (double) C1; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } } if (exp >= 0) { // -exp <= 0 // the argument is an integer already res = x; BID_RETURN (res); } else if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; the exp will be 0 ind = -exp; // 1 <= ind <= 16; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 64 bits // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate C1 = C1 + bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 16 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128 (P128, C1, bid_ten2mk64[ind - 1]); // if (0 < f* < 10^(-x)) then the result is a midpoint // C* = floor(C*) - logical right shift; C* has p decimal digits, // correct by Prop. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res = P128.w[1]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res = (P128.w[1] >> shift); } // midpoints are already rounded correctly // set exponent to zero as it was negative before. res = x_sign | 0x31c0000000000000ull | res; BID_RETURN (res); } else { // if exp < 0 and q + exp < 0 // the result is +0 or -0 res = x_sign | 0x31c0000000000000ull; BID_RETURN (res); } } LIBRARY/src/bid32_to_int16.c0000644€­ Q01134020000000635615113665770014442 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffff8000 #define INVALID_RESULT 0x8000 BID_TO_SMALL_INT_CVT_FUNCTION (short, bid32_to_int16_rnint, BID_UINT32, x, bid32_to_int32_rnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid32_to_int16_xrnint, BID_UINT32, x, bid32_to_int32_xrnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid32_to_int16_rninta, BID_UINT32, x, bid32_to_int32_rninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid32_to_int16_xrninta, BID_UINT32, x, bid32_to_int32_xrninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid32_to_int16_int, BID_UINT32, x, bid32_to_int32_int, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid32_to_int16_xint, BID_UINT32, x, bid32_to_int32_xint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid32_to_int16_floor, BID_UINT32, x, bid32_to_int32_floor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid32_to_int16_ceil, BID_UINT32, x, bid32_to_int32_ceil, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid32_to_int16_xfloor, BID_UINT32, x, bid32_to_int32_xfloor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid32_to_int16_xceil, BID_UINT32, x, bid32_to_int32_xceil, int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid64_acos.c0000644€­ Q01134020000001027315113665770013722 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" #define BID64_1 0x31c0000000000001ull BID_F80_CONST_DEF( c_9_10ths, 3ffecccccccccccc, cccccccccccccccd); // .9 BID_F80_CONST_DEF( c_pi, 4000921fb54442d1, 8469898cc51701b8); // pi BID_F80_CONST_DEF( c_zero, 0000000000000000, 0000000000000000); // 0.0 BID_F80_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F80_CONST_DEF( c_two, 4000000000000000, 0000000000000000); // 2.0 // Canonical zero with minimal exponent #define BID64_0 0x0000000000000000ull // NaN for values |x| > 1 #define BID64_NAN 0x7c00000000000000ull BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_acos, BID_UINT64, x) // Declare local variables BID_UINT64 res, t, t1 = BID64_1; BID_F80_TYPE xd, td, yd, abs_xd, rt; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Convert to binary BIDECIMAL_CALL1(bid64_to_binary80,xd,x); // If the input is not too close to +/- 1 then do it "naively" __bid_f80_fabs(abs_xd, xd); if (__bid_f80_le(abs_xd, c_9_10ths.v)) { __bid_f80_acos(yd, xd); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } // If the input is > 1 in magnitude, fail else if (__bid_f80_gt(abs_xd, c_one.v) ) { res = BID64_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(res) } // If the input is exactly 1, return a canonical zero with minimal exponent // Uses >= 1 instead of == 1 to avoid compiler warnings... else if (__bid_f80_ge(xd, c_one.v)) { res = BID64_0; BID_RETURN(res); } // Otherwise compute sqrt(1 - x^2) accurately and use asin instead. // Use 1 - |x| as direct decimal computation, since direct fma would // give only about working precision error near +1 else { BIDECIMAL_CALL1_NORND_NOSTAT(bid64_abs,t,x); BIDECIMAL_CALL2(bid64_sub,t,t1,t); BIDECIMAL_CALL1(bid64_to_binary80,td,t); __bid_f80_sub(rt, c_two.v, td); __bid_f80_mul(td, rt, td); __bid_f80_sqrt(yd, td); __bid_f80_asin(yd, yd); if ( __bid_f80_lt(xd, c_zero.v) ) __bid_f80_sub(yd, c_pi.v, yd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } } LIBRARY/src/bid128_to_int32.c0000644€­ Q01134020000040634215113665770014525 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" /***************************************************************************** * BID128_to_int32_rnint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (int, bid128_to_int32_rnint, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000005, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000005 <=> // C > 0x500000005 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31+1/2 up) tmp64 = 0x500000005ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31-1/2 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb <=> // C >= 0x4fffffffb * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31-1/2 up) tmp64 = 0x4fffffffbull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1/2 < n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] <= bid_midpoint64[ind])) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] <= bid_midpoint128[ind - 19].w[0]))) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^31-1/2 <= x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int32_xrnint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (int, bid128_to_int32_xrnint, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000005, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000005 <=> // C > 0x500000005 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31+1/2 up) tmp64 = 0x500000005ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31-1/2 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb <=> // C >= 0x4fffffffb * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31-1/2 up) tmp64 = 0x4fffffffbull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1/2 < n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] <= bid_midpoint64[ind])) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] <= bid_midpoint128[ind - 19].w[0]))) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^31-1/2 <= x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int32_floor ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (int, bid128_to_int32_floor, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_lt_midpoint = 0; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even = 0; int is_midpoint_gt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000000, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000000 <=> // C > 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31 up) tmp64 = 0x500000000ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000 <=> // C >= 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31 up) tmp64 = 0x500000000ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 <= n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) or n = +/-0.c(0)c(1)...c(q-1) // return 0 if (x_sign) res = 0xffffffff; else res = 0x00000000; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^31 <= x <= -1 or 1 <= x < 2^31 so x can be rounded // toward negative infinity to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_midpoint_gt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_midpoint_lt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } } // general correction for RM if (x_sign && (is_midpoint_gt_even || is_inexact_lt_midpoint)) { Cstar.w[0] = Cstar.w[0] + 1; } else if (!x_sign && (is_midpoint_lt_even || is_inexact_gt_midpoint)) { Cstar.w[0] = Cstar.w[0] - 1; } else { ; // the result is already correct } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int32_xfloor ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (int, bid128_to_int32_xfloor, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_lt_midpoint = 0; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even = 0; int is_midpoint_gt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000000, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 > 0x500000000 <=> // C > 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31 up) tmp64 = 0x500000000ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000 <=> // C >= 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31 up) tmp64 = 0x500000000ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 <= n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) or n = +/-0.c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 if (x_sign) res = 0xffffffff; else res = 0x00000000; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^31 <= x <= -1 or 1 <= x < 2^31 so x can be rounded // toward negative infinity to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_midpoint_gt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_midpoint_lt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } } // general correction for RM if (x_sign && (is_midpoint_gt_even || is_inexact_lt_midpoint)) { Cstar.w[0] = Cstar.w[0] + 1; } else if (!x_sign && (is_midpoint_lt_even || is_inexact_gt_midpoint)) { Cstar.w[0] = Cstar.w[0] - 1; } else { ; // the result is already correct } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int32_ceil ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (int, bid128_to_int32_ceil, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_lt_midpoint = 0; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even = 0; int is_midpoint_gt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31-1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x50000000a, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x50000000a <=> // C >= 0x50000000a * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31+1 up) tmp64 = 0x50000000aull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n > 2^31 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31 - 1 // too large if 0.c(0)c(1)...c(q-1) * 10^11 > 0x4fffffff6, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x4fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 > 0x4fffffff6 <=> // C > 0x4fffffff6 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31 up) tmp64 = 0x4fffffff6ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31-1 < n <= 2^31-1 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) or n = +/-0.c(0)c(1)...c(q-1) // return 0 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x <= 2^31-1 so x can be rounded // toward positive infinity to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_midpoint_gt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_midpoint_lt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } } // general correction for RM if (x_sign && (is_midpoint_lt_even || is_inexact_gt_midpoint)) { Cstar.w[0] = Cstar.w[0] - 1; } else if (!x_sign && (is_midpoint_gt_even || is_inexact_lt_midpoint)) { Cstar.w[0] = Cstar.w[0] + 1; } else { ; // the result is already correct } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int32_xceil ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (int, bid128_to_int32_xceil, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_lt_midpoint = 0; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even = 0; int is_midpoint_gt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31-1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x50000000a, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x50000000a <=> // C >= 0x50000000a * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31+1 up) tmp64 = 0x50000000aull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n > 2^31 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^31 - 1 // too large if 0.c(0)c(1)...c(q-1) * 10^11 > 0x4fffffff6, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x4fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 > 0x4fffffff6 <=> // C > 0x4fffffff6 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31 up) tmp64 = 0x4fffffff6ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31-1 < n <= 2^31-1 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) or n = +/-0.c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x <= 2^31-1 so x can be rounded // toward positive infinity to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_midpoint_gt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_midpoint_lt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } } // general correction for RM if (x_sign && (is_midpoint_lt_even || is_inexact_gt_midpoint)) { Cstar.w[0] = Cstar.w[0] - 1; } else if (!x_sign && (is_midpoint_gt_even || is_inexact_lt_midpoint)) { Cstar.w[0] = Cstar.w[0] + 1; } else { ; // the result is already correct } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int32_int ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (int, bid128_to_int32_int, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x50000000a, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x50000000a <=> // C >= 0x50000000a * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31+1 up) tmp64 = 0x50000000aull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000 <=> // C >= 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31-1/2 up) tmp64 = 0x500000000ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1 < n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) or n = +/-0.c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x < 2^31 so x can be rounded // toward zero to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0]))) { } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_midpoint_lt_even = 1; is_inexact_gt_midpoint = 0; } } // general correction for RZ if (is_midpoint_lt_even || is_inexact_gt_midpoint) { Cstar.w[0] = Cstar.w[0] - 1; } else { ; // exact, the result is already correct } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int32_xint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (int, bid128_to_int32_xint, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x50000000a, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x50000000a <=> // C >= 0x50000000a * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31+1 up) tmp64 = 0x50000000aull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000000 <=> // C >= 0x500000000 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31-1/2 up) tmp64 = 0x500000000ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1 < n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) or n = +/-0.c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x < 2^31 so x can be rounded // toward zero to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_midpoint_lt_even = 1; is_inexact_gt_midpoint = 0; } } // general correction for RZ if (is_midpoint_lt_even || is_inexact_gt_midpoint) { Cstar.w[0] = Cstar.w[0] - 1; } else { ; // exact, the result is already correct } if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int32_rninta ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (int, bid128_to_int32_rninta, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000005, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000005 <=> // C >= 0x500000005 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31+1/2 up) tmp64 = 0x500000005ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31-1/2 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb <=> // C >= 0x4fffffffb * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31-1/2 up) tmp64 = 0x4fffffffbull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1/2 < n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] < bid_midpoint64[ind])) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] < bid_midpoint128[ind - 19].w[0]))) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^31-1/2 < x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest-away to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint, it was already rounded away from zero if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; // no need to check for midpoints - already rounded away from zero! } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_int32_xrninta ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (int, bid128_to_int32_xrninta, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31+1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000005, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x500000005 <=> // C >= 0x500000005 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31+1/2 up) tmp64 = 0x500000005ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^31-1/2 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x4fffffffb <=> // C >= 0x4fffffffb * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^31-1/2 up) tmp64 = 0x4fffffffbull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^31 - 1/2 < n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] < bid_midpoint64[ind])) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] < bid_midpoint128[ind - 19].w[0]))) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^31-1/2 < x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest-away to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint, it was already rounded away from zero if (x_sign) res = -Cstar.w[0]; else res = Cstar.w[0]; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0]))) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // no need to check for midpoints - already rounded away from zero! } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1.w[0]; else res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1.w[0] * bid_ten2k64[exp]; else res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } LIBRARY/src/bid_round.c0000644€­ Q01134020000012051315113665770013751 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * * BID64 encoding: * **************************************** * 63 62 53 52 0 * |---|------------------|--------------| * | S | Biased Exp (E) | Coeff (c) | * |---|------------------|--------------| * * bias = 398 * number = (-1)^s * 10^(E-398) * c * coefficient range - 0 to (2^53)-1 * COEFF_MAX = 2^53-1 = 9007199254740991 * ***************************************************************************** * * BID128 encoding: * 1-bit sign * 14-bit biased exponent in [0x21, 0x3020] = [33, 12320] * unbiased exponent in [-6176, 6111]; exponent bias = 6176 * 113-bit unsigned binary integer coefficient (49-bit high + 64-bit low) * Note: 10^34-1 ~ 2^112.945555... < 2^113 => coefficient fits in 113 bits * * Note: assume invalid encodings are not passed to this function * * Round a number C with q decimal digits, represented as a binary integer * to q - x digits. Six different routines are provided for different values * of q. The maximum value of q used in the library is q = 3 * P - 1 where * P = 16 or P = 34 (so q <= 111 decimal digits). * The partitioning is based on the following, where Kx is the scaled * integer representing the value of 10^(-x) rounded up to a number of bits * sufficient to ensure correct rounding: * * -------------------------------------------------------------------------- * q x max. value of a max number min. number * of bits in C of bits in Kx * -------------------------------------------------------------------------- * * GROUP 1: 64 bits * bid_round64_2_18 () * * 2 [1,1] 10^1 - 1 < 2^3.33 4 4 * ... ... ... ... ... * 18 [1,17] 10^18 - 1 < 2^59.80 60 61 * * GROUP 2: 128 bits * bid_round128_19_38 () * * 19 [1,18] 10^19 - 1 < 2^63.11 64 65 * 20 [1,19] 10^20 - 1 < 2^66.44 67 68 * ... ... ... ... ... * 38 [1,37] 10^38 - 1 < 2^126.24 127 128 * * GROUP 3: 192 bits * bid_round192_39_57 () * * 39 [1,38] 10^39 - 1 < 2^129.56 130 131 * ... ... ... ... ... * 57 [1,56] 10^57 - 1 < 2^189.35 190 191 * * GROUP 4: 256 bits * bid_round256_58_76 () * * 58 [1,57] 10^58 - 1 < 2^192.68 193 194 * ... ... ... ... ... * 76 [1,75] 10^76 - 1 < 2^252.47 253 254 * * GROUP 5: 320 bits * round320_77_96 () * * 77 [1,76] 10^77 - 1 < 2^255.79 256 257 * 78 [1,77] 10^78 - 1 < 2^259.12 260 261 * ... ... ... ... ... * 96 [1,95] 10^96 - 1 < 2^318.91 319 320 * * GROUP 6: 384 bits * round384_97_115 () * * 97 [1,96] 10^97 - 1 < 2^322.23 323 324 * ... ... ... ... ... * 115 [1,114] 10^115 - 1 < 2^382.03 383 384 * ****************************************************************************/ #include "bid_internal.h" void bid_round64_2_18 (int q, int x, BID_UINT64 C, BID_UINT64 * ptr_Cstar, int *incr_exp, int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint) { BID_UINT128 P128; BID_UINT128 fstar; BID_UINT64 Cstar; BID_UINT64 tmp64; int shift; int ind; // Note: // In round128_2_18() positive numbers with 2 <= q <= 18 will be // rounded to nearest only for 1 <= x <= 3: // x = 1 or x = 2 when q = 17 // x = 2 or x = 3 when q = 18 // However, for generality and possible uses outside the frame of IEEE 754 // this implementation works for 1 <= x <= q - 1 // assume *ptr_is_midpoint_lt_even, *ptr_is_midpoint_gt_even, // *ptr_is_inexact_lt_midpoint, and *ptr_is_inexact_gt_midpoint are // initialized to 0 by the caller // round a number C with q decimal digits, 2 <= q <= 18 // to q - x digits, 1 <= x <= 17 // C = C + 1/2 * 10^x where the result C fits in 64 bits // (because the largest value is 999999999999999999 + 50000000000000000 = // 0x0e92596fd628ffff, which fits in 60 bits) ind = x - 1; // 0 <= ind <= 16 C = C + bid_midpoint64[ind]; // kx ~= 10^(-x), kx = bid_Kx64[ind] * 2^(-Ex), 0 <= ind <= 16 // P128 = (C + 1/2 * 10^x) * kx * 2^Ex = (C + 1/2 * 10^x) * Kx // the approximation kx of 10^(-x) was rounded up to 64 bits __mul_64x64_to_128MACH (P128, C, bid_Kx64[ind]); // calculate C* = floor (P128) and f* // Cstar = P128 >> Ex // fstar = low Ex bits of P128 shift = bid_Ex64m64[ind]; // in [3, 56] Cstar = P128.w[1] >> shift; fstar.w[1] = P128.w[1] & bid_mask64[ind]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mxtrunc64[ind], e.g. // if x=1, T*=bid_ten2mxtrunc64[0]=0xcccccccccccccccc // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has q - x decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has q - x decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has q - x decimal digits, // correct by Property 1) // in the caling function n = C* * 10^(e+x) // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (fstar.w[1] > bid_half64[ind] || (fstar.w[1] == bid_half64[ind] && fstar.w[0])) { // f* > 1/2 and the result may be exact // Calculate f* - 1/2 tmp64 = fstar.w[1] - bid_half64[ind]; if (tmp64 || fstar.w[0] > bid_ten2mxtrunc64[ind]) { // f* - 1/2 > 10^(-x) *ptr_is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 *ptr_is_inexact_gt_midpoint = 1; } // check for midpoints (could do this before determining inexactness) if (fstar.w[1] == 0 && fstar.w[0] <= bid_ten2mxtrunc64[ind]) { // the result is a midpoint if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result may be 0 Cstar--; // Cstar is now even *ptr_is_midpoint_gt_even = 1; *ptr_is_inexact_lt_midpoint = 0; *ptr_is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] *ptr_is_midpoint_lt_even = 1; *ptr_is_inexact_lt_midpoint = 0; *ptr_is_inexact_gt_midpoint = 0; } } // check for rounding overflow, which occurs if Cstar = 10^(q-x) ind = q - x; // 1 <= ind <= q - 1 if (Cstar == bid_ten2k64[ind]) { // if Cstar = 10^(q-x) Cstar = bid_ten2k64[ind - 1]; // Cstar = 10^(q-x-1) *incr_exp = 1; } else { // 10^33 <= Cstar <= 10^34 - 1 *incr_exp = 0; } *ptr_Cstar = Cstar; } void bid_round128_19_38 (int q, int x, BID_UINT128 C, BID_UINT128 * ptr_Cstar, int *incr_exp, int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint) { BID_UINT256 P256; BID_UINT256 fstar; BID_UINT128 Cstar; BID_UINT64 tmp64; int shift; int ind; // Note: // In bid_round128_19_38() positive numbers with 19 <= q <= 38 will be // rounded to nearest only for 1 <= x <= 23: // x = 3 or x = 4 when q = 19 // x = 4 or x = 5 when q = 20 // ... // x = 18 or x = 19 when q = 34 // x = 1 or x = 2 or x = 19 or x = 20 when q = 35 // x = 2 or x = 3 or x = 20 or x = 21 when q = 36 // x = 3 or x = 4 or x = 21 or x = 22 when q = 37 // x = 4 or x = 5 or x = 22 or x = 23 when q = 38 // However, for generality and possible uses outside the frame of IEEE 754 // this implementation works for 1 <= x <= q - 1 // assume *ptr_is_midpoint_lt_even, *ptr_is_midpoint_gt_even, // *ptr_is_inexact_lt_midpoint, and *ptr_is_inexact_gt_midpoint are // initialized to 0 by the caller // round a number C with q decimal digits, 19 <= q <= 38 // to q - x digits, 1 <= x <= 37 // C = C + 1/2 * 10^x where the result C fits in 128 bits // (because the largest value is 99999999999999999999999999999999999999 + // 5000000000000000000000000000000000000 = // 0x4efe43b0c573e7e68a043d8fffffffff, which fits is 127 bits) ind = x - 1; // 0 <= ind <= 36 if (ind <= 18) { // if 0 <= ind <= 18 tmp64 = C.w[0]; C.w[0] = C.w[0] + bid_midpoint64[ind]; if (C.w[0] < tmp64) C.w[1]++; } else { // if 19 <= ind <= 37 tmp64 = C.w[0]; C.w[0] = C.w[0] + bid_midpoint128[ind - 19].w[0]; if (C.w[0] < tmp64) { C.w[1]++; } C.w[1] = C.w[1] + bid_midpoint128[ind - 19].w[1]; } // kx ~= 10^(-x), kx = bid_Kx128[ind] * 2^(-Ex), 0 <= ind <= 36 // P256 = (C + 1/2 * 10^x) * kx * 2^Ex = (C + 1/2 * 10^x) * Kx // the approximation kx of 10^(-x) was rounded up to 128 bits __mul_128x128_to_256 (P256, C, bid_Kx128[ind]); // calculate C* = floor (P256) and f* // Cstar = P256 >> Ex // fstar = low Ex bits of P256 shift = bid_Ex128m128[ind]; // in [2, 63] but have to consider two cases if (ind <= 18) { // if 0 <= ind <= 18 Cstar.w[0] = (P256.w[2] >> shift) | (P256.w[3] << (64 - shift)); Cstar.w[1] = (P256.w[3] >> shift); fstar.w[0] = P256.w[0]; fstar.w[1] = P256.w[1]; fstar.w[2] = P256.w[2] & bid_mask128[ind]; fstar.w[3] = 0x0ULL; } else { // if 19 <= ind <= 37 Cstar.w[0] = P256.w[3] >> shift; Cstar.w[1] = 0x0ULL; fstar.w[0] = P256.w[0]; fstar.w[1] = P256.w[1]; fstar.w[2] = P256.w[2]; fstar.w[3] = P256.w[3] & bid_mask128[ind]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mxtrunc64[ind], e.g. // if x=1, T*=bid_ten2mxtrunc128[0]=0xcccccccccccccccccccccccccccccccc // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has q - x decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has q - x decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has q - x decimal digits, // correct by Property 1) // in the caling function n = C* * 10^(e+x) // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind <= 18) { // if 0 <= ind <= 18 if (fstar.w[2] > bid_half128[ind] || (fstar.w[2] == bid_half128[ind] && (fstar.w[1] || fstar.w[0]))) { // f* > 1/2 and the result may be exact // Calculate f* - 1/2 tmp64 = fstar.w[2] - bid_half128[ind]; if (tmp64 || fstar.w[1] > bid_ten2mxtrunc128[ind].w[1] || (fstar.w[1] == bid_ten2mxtrunc128[ind].w[1] && fstar.w[0] > bid_ten2mxtrunc128[ind].w[0])) { // f* - 1/2 > 10^(-x) *ptr_is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 *ptr_is_inexact_gt_midpoint = 1; } } else { // if 19 <= ind <= 37 if (fstar.w[3] > bid_half128[ind] || (fstar.w[3] == bid_half128[ind] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f* > 1/2 and the result may be exact // Calculate f* - 1/2 tmp64 = fstar.w[3] - bid_half128[ind]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mxtrunc128[ind].w[1] || (fstar.w[1] == bid_ten2mxtrunc128[ind].w[1] && fstar.w[0] > bid_ten2mxtrunc128[ind].w[0])) { // f* - 1/2 > 10^(-x) *ptr_is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 *ptr_is_inexact_gt_midpoint = 1; } } // check for midpoints (could do this before determining inexactness) if (fstar.w[3] == 0 && fstar.w[2] == 0 && (fstar.w[1] < bid_ten2mxtrunc128[ind].w[1] || (fstar.w[1] == bid_ten2mxtrunc128[ind].w[1] && fstar.w[0] <= bid_ten2mxtrunc128[ind].w[0]))) { // the result is a midpoint if (Cstar.w[0] & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result may be 0 Cstar.w[0]--; // Cstar is now even if (Cstar.w[0] == 0xffffffffffffffffULL) { Cstar.w[1]--; } *ptr_is_midpoint_gt_even = 1; *ptr_is_inexact_lt_midpoint = 0; *ptr_is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] *ptr_is_midpoint_lt_even = 1; *ptr_is_inexact_lt_midpoint = 0; *ptr_is_inexact_gt_midpoint = 0; } } // check for rounding overflow, which occurs if Cstar = 10^(q-x) ind = q - x; // 1 <= ind <= q - 1 if (ind <= 19) { if (Cstar.w[1] == 0x0ULL && Cstar.w[0] == bid_ten2k64[ind]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k64[ind - 1]; // Cstar = 10^(q-x-1) *incr_exp = 1; } else { *incr_exp = 0; } } else if (ind == 20) { // if ind = 20 if (Cstar.w[1] == bid_ten2k128[0].w[1] && Cstar.w[0] == bid_ten2k128[0].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k64[19]; // Cstar = 10^(q-x-1) Cstar.w[1] = 0x0ULL; *incr_exp = 1; } else { *incr_exp = 0; } } else { // if 21 <= ind <= 37 if (Cstar.w[1] == bid_ten2k128[ind - 20].w[1] && Cstar.w[0] == bid_ten2k128[ind - 20].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k128[ind - 21].w[0]; // Cstar = 10^(q-x-1) Cstar.w[1] = bid_ten2k128[ind - 21].w[1]; *incr_exp = 1; } else { *incr_exp = 0; } } ptr_Cstar->w[1] = Cstar.w[1]; ptr_Cstar->w[0] = Cstar.w[0]; } void bid_round192_39_57 (int q, int x, BID_UINT192 C, BID_UINT192 * ptr_Cstar, int *incr_exp, int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint) { BID_UINT384 P384; BID_UINT384 fstar; BID_UINT192 Cstar; BID_UINT64 tmp64; int shift; int ind; // Note: // In bid_round192_39_57() positive numbers with 39 <= q <= 57 will be // rounded to nearest only for 5 <= x <= 42: // x = 23 or x = 24 or x = 5 or x = 6 when q = 39 // x = 24 or x = 25 or x = 6 or x = 7 when q = 40 // ... // x = 41 or x = 42 or x = 23 or x = 24 when q = 57 // However, for generality and possible uses outside the frame of IEEE 754 // this implementation works for 1 <= x <= q - 1 // assume *ptr_is_midpoint_lt_even, *ptr_is_midpoint_gt_even, // *ptr_is_inexact_lt_midpoint, and *ptr_is_inexact_gt_midpoint are // initialized to 0 by the caller // round a number C with q decimal digits, 39 <= q <= 57 // to q - x digits, 1 <= x <= 56 // C = C + 1/2 * 10^x where the result C fits in 192 bits // (because the largest value is // 999999999999999999999999999999999999999999999999999999999 + // 50000000000000000000000000000000000000000000000000000000 = // 0x2ad282f212a1da846afdaf18c034ff09da7fffffffffffff, which fits in 190 bits) ind = x - 1; // 0 <= ind <= 55 if (ind <= 18) { // if 0 <= ind <= 18 tmp64 = C.w[0]; C.w[0] = C.w[0] + bid_midpoint64[ind]; if (C.w[0] < tmp64) { C.w[1]++; if (C.w[1] == 0x0) { C.w[2]++; } } } else if (ind <= 37) { // if 19 <= ind <= 37 tmp64 = C.w[0]; C.w[0] = C.w[0] + bid_midpoint128[ind - 19].w[0]; if (C.w[0] < tmp64) { C.w[1]++; if (C.w[1] == 0x0) { C.w[2]++; } } tmp64 = C.w[1]; C.w[1] = C.w[1] + bid_midpoint128[ind - 19].w[1]; if (C.w[1] < tmp64) { C.w[2]++; } } else { // if 38 <= ind <= 57 (actually ind <= 55) tmp64 = C.w[0]; C.w[0] = C.w[0] + bid_midpoint192[ind - 38].w[0]; if (C.w[0] < tmp64) { C.w[1]++; if (C.w[1] == 0x0ull) { C.w[2]++; } } tmp64 = C.w[1]; C.w[1] = C.w[1] + bid_midpoint192[ind - 38].w[1]; if (C.w[1] < tmp64) { C.w[2]++; } C.w[2] = C.w[2] + bid_midpoint192[ind - 38].w[2]; } // kx ~= 10^(-x), kx = bid_Kx192[ind] * 2^(-Ex), 0 <= ind <= 55 // P384 = (C + 1/2 * 10^x) * kx * 2^Ex = (C + 1/2 * 10^x) * Kx // the approximation kx of 10^(-x) was rounded up to 192 bits __mul_192x192_to_384 (P384, C, bid_Kx192[ind]); // calculate C* = floor (P384) and f* // Cstar = P384 >> Ex // fstar = low Ex bits of P384 shift = bid_Ex192m192[ind]; // in [1, 63] but have to consider three cases if (ind <= 18) { // if 0 <= ind <= 18 Cstar.w[2] = (P384.w[5] >> shift); Cstar.w[1] = (P384.w[5] << (64 - shift)) | (P384.w[4] >> shift); Cstar.w[0] = (P384.w[4] << (64 - shift)) | (P384.w[3] >> shift); fstar.w[5] = 0x0ULL; fstar.w[4] = 0x0ULL; fstar.w[3] = P384.w[3] & bid_mask192[ind]; fstar.w[2] = P384.w[2]; fstar.w[1] = P384.w[1]; fstar.w[0] = P384.w[0]; } else if (ind <= 37) { // if 19 <= ind <= 37 Cstar.w[2] = 0x0ULL; Cstar.w[1] = P384.w[5] >> shift; Cstar.w[0] = (P384.w[5] << (64 - shift)) | (P384.w[4] >> shift); fstar.w[5] = 0x0ULL; fstar.w[4] = P384.w[4] & bid_mask192[ind]; fstar.w[3] = P384.w[3]; fstar.w[2] = P384.w[2]; fstar.w[1] = P384.w[1]; fstar.w[0] = P384.w[0]; } else { // if 38 <= ind <= 57 Cstar.w[2] = 0x0ULL; Cstar.w[1] = 0x0ULL; Cstar.w[0] = P384.w[5] >> shift; fstar.w[5] = P384.w[5] & bid_mask192[ind]; fstar.w[4] = P384.w[4]; fstar.w[3] = P384.w[3]; fstar.w[2] = P384.w[2]; fstar.w[1] = P384.w[1]; fstar.w[0] = P384.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mxtrunc192[ind], e.g. if x=1, // T*=bid_ten2mxtrunc192[0]=0xcccccccccccccccccccccccccccccccccccccccccccccccc // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has q - x decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has q - x decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has q - x decimal digits, // correct by Property 1) // in the caling function n = C* * 10^(e+x) // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind <= 18) { // if 0 <= ind <= 18 if (fstar.w[3] > bid_half192[ind] || (fstar.w[3] == bid_half192[ind] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f* > 1/2 and the result may be exact // Calculate f* - 1/2 tmp64 = fstar.w[3] - bid_half192[ind]; if (tmp64 || fstar.w[2] > bid_ten2mxtrunc192[ind].w[2] || (fstar.w[2] == bid_ten2mxtrunc192[ind].w[2] && fstar.w[1] > bid_ten2mxtrunc192[ind].w[1]) || (fstar.w[2] == bid_ten2mxtrunc192[ind].w[2] && fstar.w[1] == bid_ten2mxtrunc192[ind].w[1] && fstar.w[0] > bid_ten2mxtrunc192[ind].w[0])) { // f* - 1/2 > 10^(-x) *ptr_is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 *ptr_is_inexact_gt_midpoint = 1; } } else if (ind <= 37) { // if 19 <= ind <= 37 if (fstar.w[4] > bid_half192[ind] || (fstar.w[4] == bid_half192[ind] && (fstar.w[3] || fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f* > 1/2 and the result may be exact // Calculate f* - 1/2 tmp64 = fstar.w[4] - bid_half192[ind]; if (tmp64 || fstar.w[3] || fstar.w[2] > bid_ten2mxtrunc192[ind].w[2] || (fstar.w[2] == bid_ten2mxtrunc192[ind].w[2] && fstar.w[1] > bid_ten2mxtrunc192[ind].w[1]) || (fstar.w[2] == bid_ten2mxtrunc192[ind].w[2] && fstar.w[1] == bid_ten2mxtrunc192[ind].w[1] && fstar.w[0] > bid_ten2mxtrunc192[ind].w[0])) { // f* - 1/2 > 10^(-x) *ptr_is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 *ptr_is_inexact_gt_midpoint = 1; } } else { // if 38 <= ind <= 55 if (fstar.w[5] > bid_half192[ind] || (fstar.w[5] == bid_half192[ind] && (fstar.w[4] || fstar.w[3] || fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f* > 1/2 and the result may be exact // Calculate f* - 1/2 tmp64 = fstar.w[5] - bid_half192[ind]; if (tmp64 || fstar.w[4] || fstar.w[3] || fstar.w[2] > bid_ten2mxtrunc192[ind].w[2] || (fstar.w[2] == bid_ten2mxtrunc192[ind].w[2] && fstar.w[1] > bid_ten2mxtrunc192[ind].w[1]) || (fstar.w[2] == bid_ten2mxtrunc192[ind].w[2] && fstar.w[1] == bid_ten2mxtrunc192[ind].w[1] && fstar.w[0] > bid_ten2mxtrunc192[ind].w[0])) { // f* - 1/2 > 10^(-x) *ptr_is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 *ptr_is_inexact_gt_midpoint = 1; } } // check for midpoints (could do this before determining inexactness) if (fstar.w[5] == 0 && fstar.w[4] == 0 && fstar.w[3] == 0 && (fstar.w[2] < bid_ten2mxtrunc192[ind].w[2] || (fstar.w[2] == bid_ten2mxtrunc192[ind].w[2] && fstar.w[1] < bid_ten2mxtrunc192[ind].w[1]) || (fstar.w[2] == bid_ten2mxtrunc192[ind].w[2] && fstar.w[1] == bid_ten2mxtrunc192[ind].w[1] && fstar.w[0] <= bid_ten2mxtrunc192[ind].w[0]))) { // the result is a midpoint if (Cstar.w[0] & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result may be 0 Cstar.w[0]--; // Cstar is now even if (Cstar.w[0] == 0xffffffffffffffffULL) { Cstar.w[1]--; if (Cstar.w[1] == 0xffffffffffffffffULL) { Cstar.w[2]--; } } *ptr_is_midpoint_gt_even = 1; *ptr_is_inexact_lt_midpoint = 0; *ptr_is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] *ptr_is_midpoint_lt_even = 1; *ptr_is_inexact_lt_midpoint = 0; *ptr_is_inexact_gt_midpoint = 0; } } // check for rounding overflow, which occurs if Cstar = 10^(q-x) ind = q - x; // 1 <= ind <= q - 1 if (ind <= 19) { if (Cstar.w[2] == 0x0ULL && Cstar.w[1] == 0x0ULL && Cstar.w[0] == bid_ten2k64[ind]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k64[ind - 1]; // Cstar = 10^(q-x-1) *incr_exp = 1; } else { *incr_exp = 0; } } else if (ind == 20) { // if ind = 20 if (Cstar.w[2] == 0x0ULL && Cstar.w[1] == bid_ten2k128[0].w[1] && Cstar.w[0] == bid_ten2k128[0].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k64[19]; // Cstar = 10^(q-x-1) Cstar.w[1] = 0x0ULL; *incr_exp = 1; } else { *incr_exp = 0; } } else if (ind <= 38) { // if 21 <= ind <= 38 if (Cstar.w[2] == 0x0ULL && Cstar.w[1] == bid_ten2k128[ind - 20].w[1] && Cstar.w[0] == bid_ten2k128[ind - 20].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k128[ind - 21].w[0]; // Cstar = 10^(q-x-1) Cstar.w[1] = bid_ten2k128[ind - 21].w[1]; *incr_exp = 1; } else { *incr_exp = 0; } } else if (ind == 39) { if (Cstar.w[2] == bid_ten2k256[0].w[2] && Cstar.w[1] == bid_ten2k256[0].w[1] && Cstar.w[0] == bid_ten2k256[0].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k128[18].w[0]; // Cstar = 10^(q-x-1) Cstar.w[1] = bid_ten2k128[18].w[1]; Cstar.w[2] = 0x0ULL; *incr_exp = 1; } else { *incr_exp = 0; } } else { // if 40 <= ind <= 56 if (Cstar.w[2] == bid_ten2k256[ind - 39].w[2] && Cstar.w[1] == bid_ten2k256[ind - 39].w[1] && Cstar.w[0] == bid_ten2k256[ind - 39].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k256[ind - 40].w[0]; // Cstar = 10^(q-x-1) Cstar.w[1] = bid_ten2k256[ind - 40].w[1]; Cstar.w[2] = bid_ten2k256[ind - 40].w[2]; *incr_exp = 1; } else { *incr_exp = 0; } } ptr_Cstar->w[2] = Cstar.w[2]; ptr_Cstar->w[1] = Cstar.w[1]; ptr_Cstar->w[0] = Cstar.w[0]; } void bid_round256_58_76 (int q, int x, BID_UINT256 C, BID_UINT256 * ptr_Cstar, int *incr_exp, int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint) { BID_UINT512 P512; BID_UINT512 fstar; BID_UINT256 Cstar; BID_UINT64 tmp64; int shift; int ind; // Note: // In bid_round256_58_76() positive numbers with 58 <= q <= 76 will be // rounded to nearest only for 24 <= x <= 61: // x = 42 or x = 43 or x = 24 or x = 25 when q = 58 // x = 43 or x = 44 or x = 25 or x = 26 when q = 59 // ... // x = 60 or x = 61 or x = 42 or x = 43 when q = 76 // However, for generality and possible uses outside the frame of IEEE 754 // this implementation works for 1 <= x <= q - 1 // assume *ptr_is_midpoint_lt_even, *ptr_is_midpoint_gt_even, // *ptr_is_inexact_lt_midpoint, and *ptr_is_inexact_gt_midpoint are // initialized to 0 by the caller // round a number C with q decimal digits, 58 <= q <= 76 // to q - x digits, 1 <= x <= 75 // C = C + 1/2 * 10^x where the result C fits in 256 bits // (because the largest value is 9999999999999999999999999999999999999999 // 999999999999999999999999999999999999 + 500000000000000000000000000 // 000000000000000000000000000000000000000000000000 = // 0x1736ca15d27a56cae15cf0e7b403d1f2bd6ebb0a50dc83ffffffffffffffffff, // which fits in 253 bits) ind = x - 1; // 0 <= ind <= 74 if (ind <= 18) { // if 0 <= ind <= 18 tmp64 = C.w[0]; C.w[0] = C.w[0] + bid_midpoint64[ind]; if (C.w[0] < tmp64) { C.w[1]++; if (C.w[1] == 0x0) { C.w[2]++; if (C.w[2] == 0x0) { C.w[3]++; } } } } else if (ind <= 37) { // if 19 <= ind <= 37 tmp64 = C.w[0]; C.w[0] = C.w[0] + bid_midpoint128[ind - 19].w[0]; if (C.w[0] < tmp64) { C.w[1]++; if (C.w[1] == 0x0) { C.w[2]++; if (C.w[2] == 0x0) { C.w[3]++; } } } tmp64 = C.w[1]; C.w[1] = C.w[1] + bid_midpoint128[ind - 19].w[1]; if (C.w[1] < tmp64) { C.w[2]++; if (C.w[2] == 0x0) { C.w[3]++; } } } else if (ind <= 57) { // if 38 <= ind <= 57 tmp64 = C.w[0]; C.w[0] = C.w[0] + bid_midpoint192[ind - 38].w[0]; if (C.w[0] < tmp64) { C.w[1]++; if (C.w[1] == 0x0ull) { C.w[2]++; if (C.w[2] == 0x0) { C.w[3]++; } } } tmp64 = C.w[1]; C.w[1] = C.w[1] + bid_midpoint192[ind - 38].w[1]; if (C.w[1] < tmp64) { C.w[2]++; if (C.w[2] == 0x0) { C.w[3]++; } } tmp64 = C.w[2]; C.w[2] = C.w[2] + bid_midpoint192[ind - 38].w[2]; if (C.w[2] < tmp64) { C.w[3]++; } } else { // if 58 <= ind <= 76 (actually 58 <= ind <= 74) tmp64 = C.w[0]; C.w[0] = C.w[0] + bid_midpoint256[ind - 58].w[0]; if (C.w[0] < tmp64) { C.w[1]++; if (C.w[1] == 0x0ull) { C.w[2]++; if (C.w[2] == 0x0) { C.w[3]++; } } } tmp64 = C.w[1]; C.w[1] = C.w[1] + bid_midpoint256[ind - 58].w[1]; if (C.w[1] < tmp64) { C.w[2]++; if (C.w[2] == 0x0) { C.w[3]++; } } tmp64 = C.w[2]; C.w[2] = C.w[2] + bid_midpoint256[ind - 58].w[2]; if (C.w[2] < tmp64) { C.w[3]++; } C.w[3] = C.w[3] + bid_midpoint256[ind - 58].w[3]; } // kx ~= 10^(-x), kx = bid_Kx256[ind] * 2^(-Ex), 0 <= ind <= 74 // P512 = (C + 1/2 * 10^x) * kx * 2^Ex = (C + 1/2 * 10^x) * Kx // the approximation kx of 10^(-x) was rounded up to 192 bits __mul_256x256_to_512 (P512, C, bid_Kx256[ind]); // calculate C* = floor (P512) and f* // Cstar = P512 >> Ex // fstar = low Ex bits of P512 shift = bid_Ex256m256[ind]; // in [0, 63] but have to consider four cases if (ind <= 18) { // if 0 <= ind <= 18 Cstar.w[3] = (P512.w[7] >> shift); Cstar.w[2] = (P512.w[7] << (64 - shift)) | (P512.w[6] >> shift); Cstar.w[1] = (P512.w[6] << (64 - shift)) | (P512.w[5] >> shift); Cstar.w[0] = (P512.w[5] << (64 - shift)) | (P512.w[4] >> shift); fstar.w[7] = 0x0ULL; fstar.w[6] = 0x0ULL; fstar.w[5] = 0x0ULL; fstar.w[4] = P512.w[4] & bid_mask256[ind]; fstar.w[3] = P512.w[3]; fstar.w[2] = P512.w[2]; fstar.w[1] = P512.w[1]; fstar.w[0] = P512.w[0]; } else if (ind <= 37) { // if 19 <= ind <= 37 Cstar.w[3] = 0x0ULL; Cstar.w[2] = P512.w[7] >> shift; Cstar.w[1] = (P512.w[7] << (64 - shift)) | (P512.w[6] >> shift); Cstar.w[0] = (P512.w[6] << (64 - shift)) | (P512.w[5] >> shift); fstar.w[7] = 0x0ULL; fstar.w[6] = 0x0ULL; fstar.w[5] = P512.w[5] & bid_mask256[ind]; fstar.w[4] = P512.w[4]; fstar.w[3] = P512.w[3]; fstar.w[2] = P512.w[2]; fstar.w[1] = P512.w[1]; fstar.w[0] = P512.w[0]; } else if (ind <= 56) { // if 38 <= ind <= 56 Cstar.w[3] = 0x0ULL; Cstar.w[2] = 0x0ULL; Cstar.w[1] = P512.w[7] >> shift; Cstar.w[0] = (P512.w[7] << (64 - shift)) | (P512.w[6] >> shift); fstar.w[7] = 0x0ULL; fstar.w[6] = P512.w[6] & bid_mask256[ind]; fstar.w[5] = P512.w[5]; fstar.w[4] = P512.w[4]; fstar.w[3] = P512.w[3]; fstar.w[2] = P512.w[2]; fstar.w[1] = P512.w[1]; fstar.w[0] = P512.w[0]; } else if (ind == 57) { Cstar.w[3] = 0x0ULL; Cstar.w[2] = 0x0ULL; Cstar.w[1] = 0x0ULL; Cstar.w[0] = P512.w[7]; fstar.w[7] = 0x0ULL; fstar.w[6] = P512.w[6]; fstar.w[5] = P512.w[5]; fstar.w[4] = P512.w[4]; fstar.w[3] = P512.w[3]; fstar.w[2] = P512.w[2]; fstar.w[1] = P512.w[1]; fstar.w[0] = P512.w[0]; } else { // if 58 <= ind <= 74 Cstar.w[3] = 0x0ULL; Cstar.w[2] = 0x0ULL; Cstar.w[1] = 0x0ULL; Cstar.w[0] = P512.w[7] >> shift; fstar.w[7] = P512.w[7] & bid_mask256[ind]; fstar.w[6] = P512.w[6]; fstar.w[5] = P512.w[5]; fstar.w[4] = P512.w[4]; fstar.w[3] = P512.w[3]; fstar.w[2] = P512.w[2]; fstar.w[1] = P512.w[1]; fstar.w[0] = P512.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mxtrunc256[ind], e.g. if x=1, // T*=bid_ten2mxtrunc256[0]= // 0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has q - x decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has q - x decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has q - x decimal digits, // correct by Property 1) // in the caling function n = C* * 10^(e+x) // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind <= 18) { // if 0 <= ind <= 18 if (fstar.w[4] > bid_half256[ind] || (fstar.w[4] == bid_half256[ind] && (fstar.w[3] || fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f* > 1/2 and the result may be exact // Calculate f* - 1/2 tmp64 = fstar.w[4] - bid_half256[ind]; if (tmp64 || fstar.w[3] > bid_ten2mxtrunc256[ind].w[2] || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] > bid_ten2mxtrunc256[ind].w[2]) || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] == bid_ten2mxtrunc256[ind].w[2] && fstar.w[1] > bid_ten2mxtrunc256[ind].w[1]) || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] == bid_ten2mxtrunc256[ind].w[2] && fstar.w[1] == bid_ten2mxtrunc256[ind].w[1] && fstar.w[0] > bid_ten2mxtrunc256[ind].w[0])) { // f* - 1/2 > 10^(-x) *ptr_is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 *ptr_is_inexact_gt_midpoint = 1; } } else if (ind <= 37) { // if 19 <= ind <= 37 if (fstar.w[5] > bid_half256[ind] || (fstar.w[5] == bid_half256[ind] && (fstar.w[4] || fstar.w[3] || fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f* > 1/2 and the result may be exact // Calculate f* - 1/2 tmp64 = fstar.w[5] - bid_half256[ind]; if (tmp64 || fstar.w[4] || fstar.w[3] > bid_ten2mxtrunc256[ind].w[3] || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] > bid_ten2mxtrunc256[ind].w[2]) || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] == bid_ten2mxtrunc256[ind].w[2] && fstar.w[1] > bid_ten2mxtrunc256[ind].w[1]) || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] == bid_ten2mxtrunc256[ind].w[2] && fstar.w[1] == bid_ten2mxtrunc256[ind].w[1] && fstar.w[0] > bid_ten2mxtrunc256[ind].w[0])) { // f* - 1/2 > 10^(-x) *ptr_is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 *ptr_is_inexact_gt_midpoint = 1; } } else if (ind <= 57) { // if 38 <= ind <= 57 if (fstar.w[6] > bid_half256[ind] || (fstar.w[6] == bid_half256[ind] && (fstar.w[5] || fstar.w[4] || fstar.w[3] || fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f* > 1/2 and the result may be exact // Calculate f* - 1/2 tmp64 = fstar.w[6] - bid_half256[ind]; if (tmp64 || fstar.w[5] || fstar.w[4] || fstar.w[3] > bid_ten2mxtrunc256[ind].w[3] || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] > bid_ten2mxtrunc256[ind].w[2]) || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] == bid_ten2mxtrunc256[ind].w[2] && fstar.w[1] > bid_ten2mxtrunc256[ind].w[1]) || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] == bid_ten2mxtrunc256[ind].w[2] && fstar.w[1] == bid_ten2mxtrunc256[ind].w[1] && fstar.w[0] > bid_ten2mxtrunc256[ind].w[0])) { // f* - 1/2 > 10^(-x) *ptr_is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 *ptr_is_inexact_gt_midpoint = 1; } } else { // if 58 <= ind <= 74 if (fstar.w[7] > bid_half256[ind] || (fstar.w[7] == bid_half256[ind] && (fstar.w[6] || fstar.w[5] || fstar.w[4] || fstar.w[3] || fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f* > 1/2 and the result may be exact // Calculate f* - 1/2 tmp64 = fstar.w[7] - bid_half256[ind]; if (tmp64 || fstar.w[6] || fstar.w[5] || fstar.w[4] || fstar.w[3] > bid_ten2mxtrunc256[ind].w[3] || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] > bid_ten2mxtrunc256[ind].w[2]) || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] == bid_ten2mxtrunc256[ind].w[2] && fstar.w[1] > bid_ten2mxtrunc256[ind].w[1]) || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] == bid_ten2mxtrunc256[ind].w[2] && fstar.w[1] == bid_ten2mxtrunc256[ind].w[1] && fstar.w[0] > bid_ten2mxtrunc256[ind].w[0])) { // f* - 1/2 > 10^(-x) *ptr_is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 *ptr_is_inexact_gt_midpoint = 1; } } // check for midpoints (could do this before determining inexactness) if (fstar.w[7] == 0 && fstar.w[6] == 0 && fstar.w[5] == 0 && fstar.w[4] == 0 && (fstar.w[3] < bid_ten2mxtrunc256[ind].w[3] || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] < bid_ten2mxtrunc256[ind].w[2]) || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] == bid_ten2mxtrunc256[ind].w[2] && fstar.w[1] < bid_ten2mxtrunc256[ind].w[1]) || (fstar.w[3] == bid_ten2mxtrunc256[ind].w[3] && fstar.w[2] == bid_ten2mxtrunc256[ind].w[2] && fstar.w[1] == bid_ten2mxtrunc256[ind].w[1] && fstar.w[0] <= bid_ten2mxtrunc256[ind].w[0]))) { // the result is a midpoint if (Cstar.w[0] & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result may be 0 Cstar.w[0]--; // Cstar is now even if (Cstar.w[0] == 0xffffffffffffffffULL) { Cstar.w[1]--; if (Cstar.w[1] == 0xffffffffffffffffULL) { Cstar.w[2]--; if (Cstar.w[2] == 0xffffffffffffffffULL) { Cstar.w[3]--; } } } *ptr_is_midpoint_gt_even = 1; *ptr_is_inexact_lt_midpoint = 0; *ptr_is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] *ptr_is_midpoint_lt_even = 1; *ptr_is_inexact_lt_midpoint = 0; *ptr_is_inexact_gt_midpoint = 0; } } // check for rounding overflow, which occurs if Cstar = 10^(q-x) ind = q - x; // 1 <= ind <= q - 1 if (ind <= 19) { if (Cstar.w[3] == 0x0ULL && Cstar.w[2] == 0x0ULL && Cstar.w[1] == 0x0ULL && Cstar.w[0] == bid_ten2k64[ind]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k64[ind - 1]; // Cstar = 10^(q-x-1) *incr_exp = 1; } else { *incr_exp = 0; } } else if (ind == 20) { // if ind = 20 if (Cstar.w[3] == 0x0ULL && Cstar.w[2] == 0x0ULL && Cstar.w[1] == bid_ten2k128[0].w[1] && Cstar.w[0] == bid_ten2k128[0].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k64[19]; // Cstar = 10^(q-x-1) Cstar.w[1] = 0x0ULL; *incr_exp = 1; } else { *incr_exp = 0; } } else if (ind <= 38) { // if 21 <= ind <= 38 if (Cstar.w[3] == 0x0ULL && Cstar.w[2] == 0x0ULL && Cstar.w[1] == bid_ten2k128[ind - 20].w[1] && Cstar.w[0] == bid_ten2k128[ind - 20].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k128[ind - 21].w[0]; // Cstar = 10^(q-x-1) Cstar.w[1] = bid_ten2k128[ind - 21].w[1]; *incr_exp = 1; } else { *incr_exp = 0; } } else if (ind == 39) { if (Cstar.w[3] == 0x0ULL && Cstar.w[2] == bid_ten2k256[0].w[2] && Cstar.w[1] == bid_ten2k256[0].w[1] && Cstar.w[0] == bid_ten2k256[0].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k128[18].w[0]; // Cstar = 10^(q-x-1) Cstar.w[1] = bid_ten2k128[18].w[1]; Cstar.w[2] = 0x0ULL; *incr_exp = 1; } else { *incr_exp = 0; } } else if (ind <= 57) { // if 40 <= ind <= 57 if (Cstar.w[3] == 0x0ULL && Cstar.w[2] == bid_ten2k256[ind - 39].w[2] && Cstar.w[1] == bid_ten2k256[ind - 39].w[1] && Cstar.w[0] == bid_ten2k256[ind - 39].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k256[ind - 40].w[0]; // Cstar = 10^(q-x-1) Cstar.w[1] = bid_ten2k256[ind - 40].w[1]; Cstar.w[2] = bid_ten2k256[ind - 40].w[2]; *incr_exp = 1; } else { *incr_exp = 0; } // else if (ind == 58) is not needed becauae we do not have ten2k192[] yet } else { // if 58 <= ind <= 77 (actually 58 <= ind <= 74) if (Cstar.w[3] == bid_ten2k256[ind - 39].w[3] && Cstar.w[2] == bid_ten2k256[ind - 39].w[2] && Cstar.w[1] == bid_ten2k256[ind - 39].w[1] && Cstar.w[0] == bid_ten2k256[ind - 39].w[0]) { // if Cstar = 10^(q-x) Cstar.w[0] = bid_ten2k256[ind - 40].w[0]; // Cstar = 10^(q-x-1) Cstar.w[1] = bid_ten2k256[ind - 40].w[1]; Cstar.w[2] = bid_ten2k256[ind - 40].w[2]; Cstar.w[3] = bid_ten2k256[ind - 40].w[3]; *incr_exp = 1; } else { *incr_exp = 0; } } ptr_Cstar->w[3] = Cstar.w[3]; ptr_Cstar->w[2] = Cstar.w[2]; ptr_Cstar->w[1] = Cstar.w[1]; ptr_Cstar->w[0] = Cstar.w[0]; } LIBRARY/src/bid128_to_uint32.c0000644€­ Q01134020000040033115113665770014702 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" /***************************************************************************** * BID128_to_uint32_rnint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (unsigned int, bid128_to_uint32_rnint, x) unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -1/2 then n cannot be converted to uint32 with RN // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x05, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x05ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 > 0x05 <=> // C > 0x05 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 1/2 up) tmp64 = 0x05ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32-1/2 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb <=> // C >= 0x9fffffffb * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^32-1/2 up) tmp64 = 0x9fffffffbull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -1/2 <= n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] <= bid_midpoint64[ind])) { res = 0x00000000; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x80000000; *pfpsf |= BID_INVALID_EXCEPTION; } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] <= bid_midpoint128[ind - 19].w[0]))) { res = 0x00000000; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x80000000; *pfpsf |= BID_INVALID_EXCEPTION; } } } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // 1 <= x < 2^32-1/2 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even } // else MP in [ODD, EVEN] } res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = C * 10^exp (exact) res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint32_xrnint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (unsigned int, bid128_to_uint32_xrnint, x) unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; unsigned int tmp_inexact = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -1/2 then n cannot be converted to uint32 with RN // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 > 0x05, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x05ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 > 0x05 <=> // C > 0x05 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 1/2 up) tmp64 = 0x05ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32-1/2 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb <=> // C >= 0x9fffffffb * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^32-1/2 up) tmp64 = 0x9fffffffbull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -1/2 <= n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] <= bid_midpoint64[ind])) { res = 0x00000000; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x80000000; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN_VAL (res); } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] <= bid_midpoint128[ind - 19].w[0]))) { res = 0x00000000; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x80000000; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN_VAL (res); } } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // 1 <= x < 2^32-1/2 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even } // else MP in [ODD, EVEN] } res = Cstar.w[0]; // the result is positive if (tmp_inexact) *pfpsf |= BID_INEXACT_EXCEPTION; } else if (exp == 0) { // 1 <= q <= 10 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = C * 10^exp (exact) res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint32_floor ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (unsigned int, bid128_to_uint32_floor, x) unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // x < 0 is invalid if (x_sign) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // x > 0 from this point on // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' // n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000 <=> // C >= 0xa00000000 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^32 up) tmp64 = 0xa00000000ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: 0 <= n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +0.0...c(0)c(1)...c(q-1) or n = +0.c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // 1 <= x < 2^32 so x can be rounded down to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_midpoint_lt_even = 1; is_inexact_gt_midpoint = 0; } } // general correction for RM if (is_midpoint_lt_even || is_inexact_gt_midpoint) { Cstar.w[0] = Cstar.w[0] - 1; } else { ; // the result is already correct } res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint32_xfloor ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (unsigned int, bid128_to_uint32_xfloor, x) unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // x < 0 is invalid if (x_sign) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // x > 0 from this point on // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' // n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000 <=> // C >= 0xa00000000 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^32 up) tmp64 = 0xa00000000ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: 0 <= n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +0.0...c(0)c(1)...c(q-1) or n = +0.c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // 1 <= x < 2^32 so x can be rounded down to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_midpoint_lt_even = 1; is_inexact_gt_midpoint = 0; } } // general correction for RM if (is_midpoint_lt_even || is_inexact_gt_midpoint) { Cstar.w[0] = Cstar.w[0] - 1; } else { ; // the result is already correct } res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint32_ceil ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (unsigned int, bid128_to_uint32_ceil, x) unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_lt_midpoint = 0; int is_midpoint_gt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x50000000a, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x0aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x0a <=> // C >= 0x0a * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 1 up) tmp64 = 0x0aull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n > 2^32 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^32 - 1 // too large if 0.c(0)c(1)...c(q-1) * 10^11 > 0x9fffffff6, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x9fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 > 0x9fffffff6 <=> // C > 0x9fffffff6 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^32 up) tmp64 = 0x9fffffff6ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^32-1 < n <= 2^32-1 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) or n = +/-0.c(0)c(1)...c(q-1) // return 0 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^32-1 < x <= -1 or 1 <= x <= 2^32-1 so x can be rounded // toward positive infinity to a 32-bit signed integer if (x_sign) { // x <= -1 is invalid // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // x > 0 from this point on if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 ; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 ; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_midpoint_gt_even = 1; is_inexact_lt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_inexact_lt_midpoint = 0; } } // general correction for RM if (is_midpoint_gt_even || is_inexact_lt_midpoint) { Cstar.w[0] = Cstar.w[0] + 1; } else { ; // the result is already correct } res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint32_xceil ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (unsigned int, bid128_to_uint32_xceil, x) unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_lt_midpoint = 0; int is_midpoint_gt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x50000000a, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x0aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x0a <=> // C >= 0x0a * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 1 up) tmp64 = 0x0aull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n > 2^32 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^32 - 1 // too large if 0.c(0)c(1)...c(q-1) * 10^11 > 0x9fffffff6, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x9fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 > 0x9fffffff6 <=> // C > 0x9fffffff6 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^32 up) tmp64 = 0x9fffffff6ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -2^32-1 < n <= 2^32-1 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) or n = +/-0.c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // -2^32-1 < x <= -1 or 1 <= x <= 2^32-1 so x can be rounded // toward positive infinity to a 32-bit signed integer if (x_sign) { // x <= -1 is invalid // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // x > 0 from this point on if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_lt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_midpoint_gt_even = 1; is_inexact_lt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_inexact_lt_midpoint = 0; } } // general correction for RM if (is_midpoint_gt_even || is_inexact_lt_midpoint) { Cstar.w[0] = Cstar.w[0] + 1; } else { ; // the result is already correct } res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint32_int ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (unsigned int, bid128_to_uint32_int, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x0a, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x0aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit uint fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x0a <=> // C >= 0x0a * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 1 up) tmp64 = 0x0aull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit uint fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000 <=> // C >= 0xa00000000 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^32 up) tmp64 = 0xa00000000ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to uint32: -2^32 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) or n = +/-0.c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // x = d(0)...d(k).d(k+1)..., k >= 0, d(0) != 0 if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // x > 0 from this point on // 1 <= x < 2^32 so x can be rounded to zero to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { } // else the result is exact } else { // the result is inexact; f2* <= 1/2 is_inexact_gt_midpoint = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_midpoint_lt_even = 1; is_inexact_gt_midpoint = 0; } } // general correction for RZ if (is_midpoint_lt_even || is_inexact_gt_midpoint) { Cstar.w[0] = Cstar.w[0] - 1; } else { ; // exact, the result is already correct } res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint32_xint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (unsigned int, bid128_to_uint32_xint, x) int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 1 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x0a, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x0aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit uint fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x0a <=> // C >= 0x0a * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 1 up) tmp64 = 0x0aull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit uint fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0xa00000000 <=> // C >= 0xa00000000 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^32 up) tmp64 = 0xa00000000ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to uint32: -2^32 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.0...c(0)c(1)...c(q-1) or n = +/-0.c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) // x = d(0)...d(k).d(k+1)..., k >= 0, d(0) != 0 if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // x > 0 from this point on // 1 <= x < 2^32 so x can be rounded to zero to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact_gt_midpoint = 1; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] is_midpoint_lt_even = 1; is_inexact_gt_midpoint = 0; } } // general correction for RZ if (is_midpoint_lt_even || is_inexact_gt_midpoint) { Cstar.w[0] = Cstar.w[0] - 1; } else { ; // exact, the result is already correct } res = Cstar.w[0]; } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint32_rninta ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (unsigned int, bid128_to_uint32_rninta, x) unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x05, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x05ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x05 <=> // C >= 0x05 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 1/2 up) tmp64 = 0x05ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32-1/2 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb <=> // C >= 0x9fffffffb * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^32-1/2 up) tmp64 = 0x9fffffffbull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -1/2 < n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] < bid_midpoint64[ind])) { res = 0x00000000; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x80000000; *pfpsf |= BID_INVALID_EXCEPTION; } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] < bid_midpoint128[ind - 19].w[0]))) { res = 0x00000000; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x80000000; *pfpsf |= BID_INVALID_EXCEPTION; } } } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // 1 <= x < 2^31-1/2 so x can be rounded // to nearest-away to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint, it was already rounded away from zero res = Cstar.w[0]; // always positive // no need to check for midpoints - already rounded away from zero! } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint32_xrninta ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (unsigned int, bid128_to_uint32_xrninta, x) unsigned int res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; unsigned int tmp_inexact = 0; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x00000000; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x00000000; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(9).c(10)...c(q-1) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^11 >= 0x05, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x05ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x05 <=> // C >= 0x05 * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 1/2 up) tmp64 = 0x05ull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) >= 2^32-1/2 // too large if 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb, 1<=q<=34 if (q <= 11) { tmp64 = C1.w[0] * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(9)c(10) or c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if (q > 11), i.e. 12 <= q <= 34 and so -24 <= exp <= -2 // 0.c(0)c(1)...c(q-1) * 10^11 >= 0x9fffffffb <=> // C >= 0x9fffffffb * 10^(q-11) where 1 <= q - 11 <= 23 // (scale 2^32-1/2 up) tmp64 = 0x9fffffffbull; if (q - 11 <= 19) { // 1 <= q - 11 <= 19; 10^(q-11) requires 64 bits __mul_64x64_to_128MACH (C, tmp64, bid_ten2k64[q - 11]); } else { // 20 <= q - 11 <= 23, and 10^(q-11) requires 128 bits __mul_128x64_to_128 (C, tmp64, bid_ten2k128[q - 31]); } if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } } // n is not too large to be converted to int32: -1/2 < n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] < bid_midpoint64[ind])) { res = 0x00000000; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x80000000; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN_VAL (res); } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] < bid_midpoint128[ind - 19].w[0]))) { res = 0x00000000; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x80000000; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN_VAL (res); } } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 34, -33 <= exp <= 9) if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN_VAL (res); } // 1 <= x < 2^31-1/2 so x can be rounded // to nearest-away to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint, it was already rounded away from zero // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; } } // no need to check for midpoints - already rounded away from zero! res = Cstar.w[0]; // the result is positive if (tmp_inexact) *pfpsf |= BID_INEXACT_EXCEPTION; } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } LIBRARY/src/bid32_tan.c0000644€­ Q01134020000002757115113665770013563 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" // Extra macros #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll192_short(hi,med,lo,c) \ ((hi) = ((hi) << (c)) + ((med)>>(64-(c))), \ (med) = ((med) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) double tan(double); #define BID32_1 0x32800001ul #define BID32_NAN 0x7c000000ul // Values of (10^a / 2 pi) mod 1 for -8 <= a <= 90 // Each one is a 128-bit binary fraction. // Maybe it would be just about OK to use 64-bit fractions? static BID_UINT128 bid_decimal32_moduli[] = { {{ 0xd1ec52e455229a49ull, 0x00000006d5ed56c8ull }}, {{ 0x333b3ceb535a06d8ull, 0x000000445b4563d8ull }}, {{ 0x0050613141844470ull, 0x000002ab90b5e672ull }}, {{ 0x0323cbec8f2aac65ull, 0x00001ab3a71b0074ull }}, {{ 0x1f65f73d97aabbefull, 0x00010b04870e0488ull }}, {{ 0x39fba867ecab575aull, 0x000a6e2d468c2d51ull }}, {{ 0x43d4940f3eb16984ull, 0x00684dc4c179c52cull }}, {{ 0xa64dc89872ee1f25ull, 0x041309af8ec1b3baull }}, {{ 0x7f09d5f47d4d3770ull, 0x28be60db9391054aull }}, {{ 0xf6625b8ce5042a62ull, 0x976fc893c3aa34e8ull }}, {{ 0x9fd79380f229a7d5ull, 0xea5dd5c5a4a61119ull }}, {{ 0x3e6bc30975a08e56ull, 0x27aa59b86e7cab00ull }}, {{ 0x70359e5e98458f5eull, 0x8ca7813450deae02ull }}, {{ 0x62182fb1f2b799b0ull, 0x7e8b0c0b28b2cc18ull }}, {{ 0xd4f1dcf37b2c00e3ull, 0xf16e786f96fbf8f3ull }}, {{ 0x5172a182cfb808e1ull, 0x6e50b45be5d7b986ull }}, {{ 0x2e7a4f1c1d3058c6ull, 0x4f270b96fa6d3f3full }}, {{ 0xd0c7171923e377b9ull, 0x178673e5c8447877ull }}, {{ 0x27c6e6fb66e2ad3aull, 0xeb4086f9d2acb4aeull }}, {{ 0x8dc505d204dac446ull, 0x308545c23abf0ecdull }}, {{ 0x89b23a34308baac1ull, 0xe534b9964b769407ull }}, {{ 0x60f64609e574ab85ull, 0xf40f3fdef2a1c84bull }}, {{ 0xc99ebc62f68eb334ull, 0x88987eb57a51d2f1ull }}, {{ 0xe0335bdda193000cull, 0x55f4f316c7323d71ull }}, {{ 0xc20196a84fbe0075ull, 0x5b917ee3c7f66672ull }}, {{ 0x940fe2931d6c0490ull, 0x93aef4e5cfa0007bull }}, {{ 0xc89ed9bf26382da2ull, 0xc4d590fa1c4004d3ull }}, {{ 0xd63481777e31c854ull, 0xb057a9c51a803045ull }}, {{ 0x5e0d0eaaedf1d34cull, 0xe36ca1b30901e2baull }}, {{ 0xac8292ad4b7240f5ull, 0xe23e50fe5a12db47ull }}, {{ 0xbd19bac4f276898full, 0xd66f29ef84bc90ccull }}, {{ 0x63014bb178a15f9bull, 0x6057a35b2f5da7ffull }}, {{ 0xde0cf4eeb64dbc0bull, 0xc36c618fd9a88ff9ull }}, {{ 0xac8191531f095870ull, 0xa23bcf9e80959fc2ull }}, {{ 0xbd0fad3f365d7461ull, 0x56561c3105d83d9aull }}, {{ 0x629cc4781fa68bcdull, 0x5f5d19ea3a72680bull }}, {{ 0xda1facb13c817602ull, 0xb9a3032648781071ull }}, {{ 0x853cbeec5d0e9c19ull, 0x405e1f7ed4b0a472ull }}, {{ 0x345f753ba29218f7ull, 0x83ad3af44ee66c79ull }}, {{ 0x0bba945459b4f9a8ull, 0x24c44d8b15003cbcull }}, {{ 0x7549cb4b8111c093ull, 0x6fab076ed2025f58ull }}, {{ 0x94e1f0f30ab185baull, 0x5cae4a543417b974ull }}, {{ 0xd0d3697e6aef3943ull, 0x9ecee74a08ed3e8dull }}, {{ 0x28421ef02d583ca2ull, 0x341508e45944718aull }}, {{ 0x92953561c5725e56ull, 0x08d258eb7cac6f65ull }}, {{ 0xb9d415d1b677af57ull, 0x58377932debc59f7ull }}, {{ 0x4248da3120acd968ull, 0x722abbfcb35b83adull }}, {{ 0x96d885eb46c07e11ull, 0x75ab57df019324c4ull }}, {{ 0xe4753b30c384eca7ull, 0x98b16eb60fbf6fadull }}, {{ 0xec944fe7a3313e81ull, 0xf6ee531c9d7a5ccaull }}, {{ 0x3dcb1f0c5fec710eull, 0xa54f3f1e26c79fedull }}, {{ 0x69ef367bbf3c6a88ull, 0x7518772d83cc3f44ull }}, {{ 0x235820d5785c2951ull, 0x92f4a7c725fa78acull }}, {{ 0x61714856b3999d26ull, 0xbd8e8dc77bc8b6b9ull }}, {{ 0xce6cd3630400237eull, 0x679189cad5d7233dull }}, {{ 0x104041de280162ecull, 0x0baf61ec5a67606aull }}, {{ 0xa28292ad900ddd37ull, 0x74d9d33b8809c424ull }}, {{ 0x5919bac7a08aa429ull, 0x908240535061a96eull }}, {{ 0x7b014bcc456a699cull, 0xa516834123d09e4full }}, {{ 0xce0cf5fab6282016ull, 0x72e1208b66262f1aull }}, {{ 0x0c819bcb1d9140ddull, 0x7ccb4571fd7dd70cull }}, {{ 0x7d1015ef27ac88a1ull, 0xdff0b673e6ea6678ull }}, {{ 0xe2a0db578cbd5648ull, 0xbf672087052800b4ull }}, {{ 0xda48916b7f655ecfull, 0x7a07454633900710ull }}, {{ 0x86d5ae32f9f5b41bull, 0xc448b4be03a046a8ull }}, {{ 0x4458cdfdc399090dull, 0xaad70f6c2442c295ull }}, {{ 0xab780be9a3fa5a80ull, 0xac669a396a9b99d4ull }}, {{ 0xb2b0772067c78903ull, 0xbc02063e2a14024eull }}, {{ 0xfae4a7440dcb5a19ull, 0x58143e6da4c81712ull }}, {{ 0xccee88a889f184fdull, 0x70ca70486fd0e6bdull }}, {{ 0x01515695636f31e6ull, 0x67e862d45e29036aull }}, {{ 0x0d2d61d5e257f300ull, 0x0f13dc4bad9a2224ull }}, {{ 0x83c5d25ad76f7dffull, 0x96c69af4c8055568ull }}, {{ 0x25ba378c6a5aebfaull, 0xe3c20d8fd0355615ull }}, {{ 0x79462b7c278d37c5ull, 0xe594879e22155cd3ull }}, {{ 0xbcbdb2d98b842db5ull, 0xf7cd4c2d54d5a042ull }}, {{ 0x5f68fc7f7329c90eull, 0xae04f9c55058429bull }}, {{ 0xba19dcfa7fa1da8cull, 0xcc31c1b523729a11ull }}, {{ 0x4502a1c8fc52897bull, 0xf9f19113627a04b1ull }}, {{ 0xb21a51d9db395ed1ull, 0xc36faac1d8c42eecull }}, {{ 0xf5073282903db429ull, 0xa25cab9277a9d53eull }}, {{ 0x9247f919a2690997ull, 0x579eb3b8aca25475ull }}, {{ 0xb6cfbb00581a5fe4ull, 0x6c330536be574c97ull }}, {{ 0x241d4e037107beeaull, 0x39fe34236f68fdedull }}, {{ 0x69250c226a4d7526ull, 0x43ee09625a19eb43ull }}, {{ 0x1b7279582706937cull, 0xa74c5dd7850330a2ull }}, {{ 0x1278bd718641c2d4ull, 0x88fbaa6b321fe655ull }}, {{ 0xb8b7666f3e919c45ull, 0x59d4a82ff53eff52ull }}, {{ 0x372a005871b01ab6ull, 0x824e91df9475f93bull }}, {{ 0x27a4037470e10b1eull, 0x1711b2bbcc9bbc50ull }}, {{ 0x8c68228c68ca6f2full, 0xe6b0fb55fe155b21ull }}, {{ 0x7c11597c17e857d2ull, 0x02e9d15becd58f4full }}, {{ 0xd8ad7ed8ef136e34ull, 0x1d222d974057991aull }}, {{ 0x76c6f47956c24e0aull, 0x2355c7e8836bfb0cull }}, {{ 0xa3c58cbd63970c5full, 0x6159cf152237ce7cull }}, {{ 0x65b77f65e3e67bb7ull, 0xcd8216d3562e10deull }}, {{ 0xf92af9fae700d527ull, 0x0714e4415dcca8afull }}, {{ 0xbbadc3cd06085386ull, 0x46d0ea8da9fe96dfull }}, {{ 0x54c9a6023c53433bull, 0xc4292988a3f1e4bdull }} }; BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_tan, BID_UINT32, x) // Local variables. BID_UINT32 res; int s, e; BID_UINT64 c; double xd, yd = 0.0; BID_UINT128 m; BID_UINT192 p; int sf, k, ef, el; // Decompose the input and check for NaN and infinity. s = x >> 31; if ((x & (3ul<<29)) == (3ul<<29)) { if ((x & (0xFul<<27)) == (0xFul<<27)) { if ((x & (0x1Ful<<26)) != (0x1Full<<26)) { // input is infinite, so return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = BID32_NAN; BID_RETURN (res); } else { // input is NaN, so quiet/canonize it etc. #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } } else { // "large coefficient" input e = ((x >> 21) & ((1ul<<8)-1)) - 101; c = (1ul<<23) + (x & ((1ul<<21)-1)); if ((unsigned long)(c) > 9999999ul) c = 0ull; } } else { // "small coefficient" input e = ((x >> 23) & ((1ul<<8)-1)) - 101; c = x & ((1ul<<23)-1); } // Make sure we treat zero even with huge exponent as small if (c == 0) e = -9; // If the input is trivially <= 1/10, just do the naive computation // since no range reduction is needed and the function is well-conditioned if (e < -8) { BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = tan(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN(res); } // Pick out the appropriate modulus for the exponent and multiply by coeff // Since we discard the top word p.w[3], we could specially optimize this. m = bid_decimal32_moduli[e+8]; __mul_64x128_to_192(p,c,m); // Shift up by two bits to give an integer part k and a fraction // modulo (pi/2). Note that we have to do this afterwards rather than // use modulo (pi/2) reduction at the start to keep integer parities. k = p.w[1] >> 62; sll128_short(p.w[1],p.w[0],2); // If the fraction is >= 1/2, add 1 to integer and complement the fraction // with an appropriate sign change so we have a "rounded to nearest" version // (Complementing is slightly different from negation but it's negligible.) // Set "sf" to the correct sign for the fraction if (p.w[1] >= 0x8000000000000000ull) { k = (k + 1) & 3; p.w[1] = ~p.w[1]; p.w[0] = ~p.w[0]; sf = 1 - s; } else { sf = s; } // Also correct k to take into account the sign if (s) k = (-k) & 3; // Normalize the binary fraction with exponent ef el = clz64_nz(p.w[1]); ef = 1022 - el; sll128_short(p.w[1],p.w[0],el); // Now shift right and mask off integer bit for double coefficient // and package up as a double-precision number { union { double d; BID_UINT64 i; } di; di.i = (((BID_UINT64) sf) << 63) + ((BID_UINT64) ef << 52) + ((p.w[1] >> 11) & ((1ull<<52)-1)); xd = di.d; } // Multiply by pi/2 so we can use regular binary trig functions. xd = 1.570796326794896619231321691639751442098584699687552910487472296 * xd; // Now use the trig function depending on k: switch(k) { case 0: case 2: yd = tan(xd); break; case 1: case 3: yd = -1.0 / tan(xd); break; default: break; // default added to avoid compiler warning } BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN(res); } LIBRARY/src/bid32_sqrt.c0000644€­ Q01134020000001450715113665770013765 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID64 square root ***************************************************************************** * * Algorithm description: * * if(exponent_x is odd) * scale coefficient_x by 10, adjust exponent * - get lower estimate for number of digits in coefficient_x * - scale coefficient x to between 31 and 33 decimal digits * - in parallel, check for exact case and return if true * - get high part of result coefficient using double precision sqrt * - compute remainder and refine coefficient in one iteration (which * modifies it by at most 1) * - result exponent is easy to compute from the adjusted arg. exponent * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" #include "bid_sqrt_macros.h" #include BID_EXTERN_C double sqrt (double); BID_TYPE_FUNCTION_ARG1(BID_UINT32, bid32_sqrt, x) BID_UINT64 CA, CT; BID_UINT32 sign_x, coefficient_x; BID_UINT32 Q, A10, QE, res; int_float tempx; double dq, dqe; int exponent_x, exponent_q, bin_expon_cx; int digits_x; int scale; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } // unpack arguments, check for NaN or Infinity if (!unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x)) { // x is Inf. or NaN or 0 if ((x & INFINITY_MASK32) == INFINITY_MASK32) { res = coefficient_x; if ((coefficient_x & SSNAN_MASK32) == SINFINITY_MASK32) // -Infinity { res = NAN_MASK32; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif } #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res & QUIET_MASK32); } // x is 0 exponent_x = (exponent_x + DECIMAL_EXPONENT_BIAS_32) >> 1; res = sign_x | (( exponent_x) << 23); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x<0? if (sign_x && coefficient_x) { res = NAN_MASK32; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif //--- get number of bits in the coefficient of x --- tempx.d = (float) coefficient_x; bin_expon_cx = ((tempx.i >> 23) & 0xff) - 0x7f; digits_x = bid_estimate_decimal_digits[bin_expon_cx]; // add test for range if (coefficient_x >= bid_power10_index_binexp[bin_expon_cx]) digits_x++; A10 = coefficient_x; if (!(exponent_x & 1)) { A10 = (A10 << 2) + A10; A10 += A10; } dqe = sqrt ((double) A10); QE = (BID_UINT32) dqe; if (QE * QE == A10) { res = very_fast_get_BID32 (0, (exponent_x + DECIMAL_EXPONENT_BIAS_32) >> 1, QE); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // if exponent is odd, scale coefficient by 10 scale = 13 - digits_x; exponent_q = exponent_x + DECIMAL_EXPONENT_BIAS_32 - scale; scale += (exponent_q & 1); // exp. bias is even CT = bid_power10_table_128[scale].w[0]; CA = coefficient_x * CT; dq = sqrt (((double)CA)); exponent_q = (exponent_q) >> 1; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY if (!((rnd_mode) & 3)) { #endif #endif Q = (BID_UINT32)(dq+0.5); #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY } else { Q = (BID_UINT32) dq; /*// get sign(sqrt(CA)-Q) R = CA - Q * Q; R = ((BID_SINT32) R) >> 31; D = R + R + 1; C4 = CA; Q += D; if ((BID_SINT32) (Q * Q - C4) > 0) Q--;*/ if (rnd_mode == BID_ROUNDING_UP) Q++; } #endif #endif res = fast_get_BID32 (0, exponent_q, Q); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } LIBRARY/src/bid32_logb.c0000644€­ Q01134020000000516715113665770013721 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_TYPE0_FUNCTION_ARGTYPE1_NORND(int, bid32_ilogb, BID_UINT32, x) BID_UINT32 sign_x, coefficient_x; int_float dx; int exponent_x, bin_expon_cx, digits, res; // unpack arguments, check for NaN or Infinity if (!unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x)) { // x is Inf. or NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = ((x & 0x7c000000) == 0x78000000) ? 0x7fffffff : 0x80000000; BID_RETURN (res); } // find number of digits in coefficient if (coefficient_x >= 1000000ull) { digits = 7; } else { dx.d = (float)coefficient_x; // exact conversion; bin_expon_cx = (int)(dx.i >> 23) - 127; digits = bid_estimate_decimal_digits[bin_expon_cx]; if (coefficient_x >= bid_power10_table_128[digits].w[0]) digits++; } exponent_x = exponent_x - DECIMAL_EXPONENT_BIAS_32 + digits - 1; BID_RETURN (exponent_x); } LIBRARY/src/bid64_llrintd.c0000644€­ Q01134020000000571415113665770014451 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_llrintd ****************************************************************************/ /* DESCRIPTION: The llrint function rounds its argument to the nearest integer value of type long long int, rounding according to the current rounding direction. RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid and inexact */ BID_RESTYPE0_FUNCTION_ARGTYPE1(long long int, bid64_llrint, BID_UINT64, x) long long int res; // assume sizeof (long long) = 8 if (rnd_mode == BID_ROUNDING_TO_NEAREST) BIDECIMAL_CALL1_NORND (bid64_to_int64_xrnint, res, x); else if (rnd_mode == BID_ROUNDING_TIES_AWAY) BIDECIMAL_CALL1_NORND (bid64_to_int64_xrninta, res, x); else if (rnd_mode == BID_ROUNDING_DOWN) BIDECIMAL_CALL1_NORND (bid64_to_int64_xfloor, res, x); else if (rnd_mode == BID_ROUNDING_UP) BIDECIMAL_CALL1_NORND (bid64_to_int64_xceil, res, x); else // if (rnd_mode == BID_ROUNDING_TO_ZERO) BIDECIMAL_CALL1_NORND (bid64_to_int64_xint, res, x); BID_RETURN (res); } LIBRARY/src/bid128_llround.c0000644€­ Q01134020000000477415113665770014546 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID128_llroundd ****************************************************************************/ /* DESCRIPTION: The llround function rounds its argument to the nearest integer value of type long int, using rounding to nearest-away RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid */ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE(long long int, bid128_llround, x) // the sizeof (long long) = 8 (BID_SIZE_LONG==8) BID_SINT64 res; BIDECIMAL_CALL1_NORND (bid128_to_int64_rninta, res, x); BID_RETURN ((long long int)res); } LIBRARY/src/bid128_hypot.c0000644€­ Q01134020000001354115113665770014222 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID128_FUNCTION_ARG2 (bid128_hypot, x, y) BID_UINT128 CX, CY, xn, yn, res, tmp, coeff_res; BID_UINT64 valid_x, valid_y, sign_x, sign_y; int exponent_x, exponent_y, cmp_res, exponent_res; BID_F128_TYPE rq, xq, yq; // take absolute values xn.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0x7fffffffffffffffull; yn.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0x7fffffffffffffffull; xn.w[BID_LOW_128W] = x.w[BID_LOW_128W]; yn.w[BID_LOW_128W] = y.w[BID_LOW_128W]; BIDECIMAL_CALL2_NORND (bid128_quiet_greater, cmp_res, yn, xn); if(cmp_res) { tmp.w[BID_HIGH_128W]=x.w[BID_HIGH_128W]; tmp.w[BID_LOW_128W]=x.w[BID_LOW_128W]; x.w[BID_HIGH_128W] = y.w[BID_HIGH_128W]; x.w[BID_LOW_128W] = y.w[BID_LOW_128W]; y.w[BID_HIGH_128W] = tmp.w[BID_HIGH_128W]; y.w[BID_LOW_128W] = tmp.w[BID_LOW_128W]; } valid_y = unpack_BID128_value_BLE (&sign_y, &exponent_y, &CY, y); valid_x = unpack_BID128_value_BLE (&sign_x, &exponent_x, &CX, x); // unpack arguments, check for NaN or Infinity if (!valid_x) { // test if x is NaN if ((x.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull || // sNaN (y.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if (((x.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) ||((y.w[BID_HIGH_128W] & 0x7c00000000000000ull) != 0x7800000000000000ull)) { res.w[BID_HIGH_128W] = (CX.w[BID_HIGH_128W]) & QUIET_MASK64; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; } else { res.w[BID_HIGH_128W] = 0x7800000000000000ull; res.w[BID_LOW_128W] = 0; } BID_RETURN (res); } // x is Infinity? if (((x.w[BID_HIGH_128W] & 0x7800000000000000ull) == 0x7800000000000000ull) && ((y.w[BID_HIGH_128W] & 0x7e00000000000000ull) != 0x7e00000000000000ull)) { res.w[BID_HIGH_128W] = 0x7800000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } // x is 0 if (valid_y) { res.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0x7fffffffffffffffull; res.w[BID_LOW_128W] = y.w[BID_LOW_128W]; BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = CY.w[BID_HIGH_128W] & QUIET_MASK64; res.w[BID_LOW_128W] = CY.w[BID_LOW_128W]; BID_RETURN (res); } // y is Infinity? if ((y.w[BID_HIGH_128W] & 0x7800000000000000ull) == 0x7800000000000000ull) { res.w[BID_HIGH_128W] = 0x7800000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } // y is 0 if(valid_x) { res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0x7fffffffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; } else { res.w[BID_HIGH_128W] = CX.w[BID_HIGH_128W] & 0x7fffffffffffffffull; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; } BID_RETURN (res); } // take absolute values x.w[BID_HIGH_128W] &= 0x7fffffffffffffffull; y.w[BID_HIGH_128W] &= 0x7fffffffffffffffull; if(exponent_x - exponent_y >= 35+34) { res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; BID_RETURN (res); } // separate exponent_x (to avoid OF/UF) bid_get_BID128_very_fast_BLE(&xn, 0, DECIMAL_EXPONENT_BIAS_128, CX); bid_get_BID128_very_fast_BLE(&yn, 0, DECIMAL_EXPONENT_BIAS_128+exponent_y-exponent_x, CY); BIDECIMAL_CALL1 (bid128_to_binary128, xq, xn); BIDECIMAL_CALL1 (bid128_to_binary128, yq, yn); __bid_f128_hypot(rq, xq, yq); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); //quick_unpack_BID128_em (&exponent_res, &coeff_res, res); coeff_res.w[0] = res.w[BID_LOW_128W]; coeff_res.w[1] = (res.w[BID_HIGH_128W]) & SMALL_COEFF_MASK128; exponent_res = (res.w[BID_HIGH_128W]) >> 49; exponent_res = ((int) exponent_res) & EXPONENT_MASK128; bid_get_BID128 (&res, 0, exponent_res+exponent_x-DECIMAL_EXPONENT_BIAS_128, coeff_res, &rnd_mode, pfpsf); #if BID_BIG_ENDIAN BID_SWAP128(res); #endif BID_RETURN (res); } LIBRARY/src/bid32_ldexp.c0000644€­ Q01134020000000664315113665770014112 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_TYPE0_FUNCTION_ARGTYPE1_OTHER_ARGTYPE2(BID_UINT32, bid32_ldexp, BID_UINT32, x, int, n) BID_UINT32 sign_x, coefficient_x, res; BID_SINT64 exp64; int exponent_x, rmode; // unpack arguments, check for NaN or Infinity if (!unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x)) { // x is Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if (coefficient_x) res = coefficient_x & QUIET_MASK32; else { exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; if(exp64<0) exp64=0; if(exp64>DECIMAL_MAX_EXPON_32) exp64=DECIMAL_MAX_EXPON_32; exponent_x = exp64; res = very_fast_get_BID32 (sign_x, exponent_x, coefficient_x); // 0 } BID_RETURN (res); } exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; exponent_x = exp64; if ((BID_UINT32) exponent_x <= DECIMAL_MAX_EXPON_32) { res = very_fast_get_BID32 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } // check for overflow if (exp64 > DECIMAL_MAX_EXPON_32) { // try to normalize coefficient while ((coefficient_x < 1000000ul) && (exp64 > DECIMAL_MAX_EXPON_32)) { // coefficient_x < 10^15, scale by 10 coefficient_x = (coefficient_x << 1) + (coefficient_x << 3); exponent_x--; exp64--; } if (exp64 <= DECIMAL_MAX_EXPON_32) { res = very_fast_get_BID32 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } else exponent_x = 0x7fffffff; // overflow } // exponent < 0 // the BID pack routine will round the coefficient rmode = rnd_mode; res = get_BID32 (sign_x, exponent_x, coefficient_x, rmode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid32_llquantexpd.c0000644€­ Q01134020000000464315113665770015335 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_llquantexpd ****************************************************************************/ /* Exceptions signaled: invalid */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND(long long int, bid32_llquantexp, BID_UINT32, x) long long int res; // quantum if (((x & MASK_INF32) == MASK_INF32) || ((x & MASK_NAN32) == MASK_NAN32)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; res = 0x8000000000000000ull; BID_RETURN (res); } if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) res = (long long int)((x >> 21) & 0xff) - 101; else res = (long long int)((x >> 23) & 0xff) - 101; BID_RETURN (res); } LIBRARY/src/bid128_frexp.c0000644€­ Q01134020000001304415113665770014201 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" BID128_FUNCTION_ARG128_CUSTOMARGTYPE2_PLAIN(bid128_frexp, x, int*, exp) /* If x is not a floating-point number, the results are unspecified (this implementation returns x and *exp = 0). Otherwise, the frexp function returns the value res, such that res has a magnitude in the interval [1/10, 1) or zero, and x = res*2^*exp. If x is zero, both parts of the result are zero frexp does not raise any exceptions */ BID_UINT128 res; BID_UINT128 sig_x; unsigned int exp_x; BID_UI64DOUBLE tmp; int x_nr_bits, q; if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // if NaN or infinity *exp = 0; res = x; // the binary frexp quitetizes SNaNs, so do the same if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // // set invalid flag // *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfdffffffffffffffull; } BID_RETURN (res); } else { // x is 0, non-canonical, normal, or subnormal // check for non-canonical values with 114 bit-significands; can be zero too if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { *exp = 0; exp_x = (x.w[1] & MASK_EXP2) >> 47; // biased res.w[1] = (x.w[1] & 0x8000000000000000ull) | ((BID_UINT64)exp_x << 49); // zero of same sign res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } // unpack x exp_x = (x.w[1] & MASK_EXP) >> 49; // biased sig_x.w[1] = x.w[1] & MASK_COEFF; sig_x.w[0] = x.w[0]; // check for non-canonical values or zero if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || (sig_x.w[1] == 0x0001ed09bead87c0ull && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((sig_x.w[1] == 0x0ull) && (sig_x.w[0] == 0x0ull))) { *exp = 0; res.w[1] = (x.w[1] & 0x8000000000000000ull) | ((BID_UINT64)exp_x << 49); // zero of same sign res.w[0] = 0x0000000000000000ull; BID_RETURN (res); } else { ; // continue, x is neither zero nor non-canonical } // x is normal or subnormal, with exp_x=biased exponent & sig_x=coefficient // determine the number of decimal digits in sig_x, which fits in 113 bits // q = nr. of decimal digits in sig_x (1 <= q <= 34) // determine first the nr. of bits in sig_x if (sig_x.w[1] == 0) { if (sig_x.w[0] >= 0x0020000000000000ull) { // z >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors if (sig_x.w[0] >= 0x0000000100000000ull) { // z >= 2^32 tmp.d = (double) (sig_x.w[0] >> 32); // exact conversion x_nr_bits = 32 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // z < 2^32 tmp.d = (double) sig_x.w[0]; // exact conversion x_nr_bits = ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // if z < 2^53 tmp.d = (double) sig_x.w[0]; // exact conversion x_nr_bits = ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // sig_x.w[1] != 0 => nr. bits = 65 + nr_bits (sig_x.w[1]) tmp.d = (double) sig_x.w[1]; // exact conversion x_nr_bits = 64 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits].digits1; if (sig_x.w[1] > bid_nr_digits[x_nr_bits].threshold_hi || (sig_x.w[1] == bid_nr_digits[x_nr_bits].threshold_hi && sig_x.w[0] >= bid_nr_digits[x_nr_bits].threshold_lo)) q++; } // Do not add trailing zeros if q < 34; leave sig_x with q digits *exp = exp_x - 6176 + q; // assemble the result; sig_x < 2^113 so it fits in 113 bits res.w[1] = (x.w[1] & 0x8001ffffffffffffull) | ((-q + 6176ull) << 49); res.w[0] = x.w[0]; // replace exponent BID_RETURN (res); } } LIBRARY/src/bid_inline_add.h0000644€­ Q01134020000011250515113665770014717 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * * Helper add functions (for fma) * * __BID_INLINE__ BID_UINT64 bid_get_add64( * BID_UINT64 sign_x, int exponent_x, BID_UINT64 coefficient_x, * BID_UINT64 sign_y, int exponent_y, BID_UINT64 coefficient_y, * int rounding_mode) * * __BID_INLINE__ BID_UINT64 bid_get_add128( * BID_UINT64 sign_x, int exponent_x, BID_UINT64 coefficient_x, * BID_UINT64 sign_y, int final_exponent_y, BID_UINT128 CY, * int extra_digits, int rounding_mode) * ***************************************************************************** * * Algorithm description: * * bid_get_add64: same as BID64 add, but arguments are unpacked and there * are no special case checks * * bid_get_add128: add 64-bit coefficient to 128-bit product (which contains * 16+extra_digits decimal digits), * return BID64 result * - the exponents are compared and the two coefficients are * properly aligned for addition/subtraction * - multiple paths are needed * - final result exponent is calculated and the lower term is * rounded first if necessary, to avoid manipulating * coefficients longer than 128 bits * ****************************************************************************/ #ifndef _INLINE_BID_ADD_H_ #define _INLINE_BID_ADD_H_ #include "bid_internal.h" #define MAX_FORMAT_DIGITS 16 #define DECIMAL_EXPONENT_BIAS 398 #define MASK_BINARY_EXPONENT 0x7ff0000000000000ull #define BINARY_EXPONENT_BIAS 0x3ff #define UPPER_EXPON_LIMIT 51 /////////////////////////////////////////////////////////////////////// // // bid_get_add64() is essentially the same as bid_add(), except that // the arguments are unpacked // ////////////////////////////////////////////////////////////////////// __BID_INLINE__ BID_UINT64 bid_get_add64 (BID_UINT64 sign_x, int exponent_x, BID_UINT64 coefficient_x, BID_UINT64 sign_y, int exponent_y, BID_UINT64 coefficient_y, int rounding_mode, unsigned *fpsc) { BID_UINT128 CA, CT, CT_new; BID_UINT64 sign_a, sign_b, coefficient_a, coefficient_b, sign_s, sign_ab, rem_a; BID_UINT64 saved_ca, saved_cb, C0_64, C64, remainder_h, T1, carry, tmp, C64_new; int_double tempx; int exponent_a, exponent_b, diff_dec_expon; int bin_expon_ca, extra_digits, amount, scale_k, scale_ca; unsigned rmode, status; // sort arguments by exponent if (exponent_x <= exponent_y) { sign_a = sign_y; exponent_a = exponent_y; coefficient_a = coefficient_y; sign_b = sign_x; exponent_b = exponent_x; coefficient_b = coefficient_x; } else { sign_a = sign_x; exponent_a = exponent_x; coefficient_a = coefficient_x; sign_b = sign_y; exponent_b = exponent_y; coefficient_b = coefficient_y; } // exponent difference diff_dec_expon = exponent_a - exponent_b; /* get binary coefficients of x and y */ //--- get number of bits in the coefficients of x and y --- tempx.d = (double) coefficient_a; bin_expon_ca = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; if (!coefficient_a) { return get_BID64 (sign_b, exponent_b, coefficient_b, rounding_mode, fpsc); } if (diff_dec_expon > MAX_FORMAT_DIGITS) { // normalize a to a 16-digit coefficient scale_ca = bid_estimate_decimal_digits[bin_expon_ca]; if (coefficient_a >= bid_power10_table_128[scale_ca].w[0]) scale_ca++; scale_k = 16 - scale_ca; coefficient_a *= bid_power10_table_128[scale_k].w[0]; diff_dec_expon -= scale_k; exponent_a -= scale_k; /* get binary coefficients of x and y */ //--- get number of bits in the coefficients of x and y --- tempx.d = (double) coefficient_a; bin_expon_ca = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; if (diff_dec_expon > MAX_FORMAT_DIGITS) { #ifdef BID_SET_STATUS_FLAGS if (coefficient_b) { __set_status_flags (fpsc, BID_INEXACT_EXCEPTION); } #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (((rounding_mode) & 3) && coefficient_b) // not BID_ROUNDING_TO_NEAREST { switch (rounding_mode) { case BID_ROUNDING_DOWN: if (sign_b) { coefficient_a -= ((((BID_SINT64) sign_a) >> 63) | 1); if (coefficient_a < 1000000000000000ull) { exponent_a--; coefficient_a = 9999999999999999ull; } else if (coefficient_a >= 10000000000000000ull) { exponent_a++; coefficient_a = 1000000000000000ull; } } break; case BID_ROUNDING_UP: if (!sign_b) { coefficient_a += ((((BID_SINT64) sign_a) >> 63) | 1); if (coefficient_a < 1000000000000000ull) { exponent_a--; coefficient_a = 9999999999999999ull; } else if (coefficient_a >= 10000000000000000ull) { exponent_a++; coefficient_a = 1000000000000000ull; } } break; default: // RZ if (sign_a != sign_b) { coefficient_a--; if (coefficient_a < 1000000000000000ull) { exponent_a--; coefficient_a = 9999999999999999ull; } } break; } } else #endif #endif // check special case here if ((coefficient_a == 1000000000000000ull) && (diff_dec_expon == MAX_FORMAT_DIGITS + 1) && (sign_a ^ sign_b) && (coefficient_b > 5000000000000000ull)) { coefficient_a = 9999999999999999ull; exponent_a--; } return get_BID64 (sign_a, exponent_a, coefficient_a, rounding_mode, fpsc); } } // test whether coefficient_a*10^(exponent_a-exponent_b) may exceed 2^62 if (bin_expon_ca + bid_estimate_bin_expon[diff_dec_expon] < 60) { // coefficient_a*10^(exponent_a-exponent_b)<2^63 // multiply by 10^(exponent_a-exponent_b) coefficient_a *= bid_power10_table_128[diff_dec_expon].w[0]; // sign mask sign_b = ((BID_SINT64) sign_b) >> 63; // apply sign to coeff. of b coefficient_b = (coefficient_b + sign_b) ^ sign_b; // apply sign to coefficient a sign_a = ((BID_SINT64) sign_a) >> 63; coefficient_a = (coefficient_a + sign_a) ^ sign_a; coefficient_a += coefficient_b; // get sign sign_s = ((BID_SINT64) coefficient_a) >> 63; coefficient_a = (coefficient_a + sign_s) ^ sign_s; sign_s &= 0x8000000000000000ull; // coefficient_a < 10^16 ? if (coefficient_a < bid_power10_table_128[MAX_FORMAT_DIGITS].w[0]) { #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rounding_mode == BID_ROUNDING_DOWN && (!coefficient_a) && sign_a != sign_b) sign_s = 0x8000000000000000ull; #endif #endif return get_BID64 (sign_s, exponent_b, coefficient_a, rounding_mode, fpsc); } // otherwise rounding is necessary // already know coefficient_a<10^19 // coefficient_a < 10^17 ? if (coefficient_a < bid_power10_table_128[17].w[0]) extra_digits = 1; else if (coefficient_a < bid_power10_table_128[18].w[0]) extra_digits = 2; else extra_digits = 3; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rounding_mode; if (sign_s && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif coefficient_a += bid_round_const_table[rmode][extra_digits]; // get P*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (CT, coefficient_a, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; C64 = CT.w[1] >> amount; } else { // coefficient_a*10^(exponent_a-exponent_b) is large sign_s = sign_a; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rounding_mode; if (sign_s && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif // check whether we can take faster path scale_ca = bid_estimate_decimal_digits[bin_expon_ca]; sign_ab = sign_a ^ sign_b; sign_ab = ((BID_SINT64) sign_ab) >> 63; // T1 = 10^(16-diff_dec_expon) T1 = bid_power10_table_128[16 - diff_dec_expon].w[0]; // get number of digits in coefficient_a //P_ca = bid_power10_table_128[scale_ca].w[0]; //P_ca_m1 = bid_power10_table_128[scale_ca-1].w[0]; if (coefficient_a >= bid_power10_table_128[scale_ca].w[0]) { scale_ca++; //P_ca_m1 = P_ca; //P_ca = bid_power10_table_128[scale_ca].w[0]; } scale_k = 16 - scale_ca; // apply sign //Ts = (T1 + sign_ab) ^ sign_ab; // test range of ca //X = coefficient_a + Ts - P_ca_m1; // addition saved_ca = coefficient_a - T1; coefficient_a = (BID_SINT64) saved_ca *(BID_SINT64) bid_power10_table_128[scale_k].w[0]; extra_digits = diff_dec_expon - scale_k; // apply sign saved_cb = (coefficient_b + sign_ab) ^ sign_ab; // add 10^16 and rounding constant coefficient_b = saved_cb + 10000000000000000ull + bid_round_const_table[rmode][extra_digits]; // get P*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (CT, coefficient_b, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; C0_64 = CT.w[1] >> amount; // result coefficient C64 = C0_64 + coefficient_a; // filter out difficult (corner) cases // the following test is equivalent to // ( (initial_coefficient_a + Ts) < P_ca && // (initial_coefficient_a + Ts) > P_ca_m1 ), // which ensures the number of digits in coefficient_a does not change // after adding (the appropriately scaled and rounded) coefficient_b if ((BID_UINT64) (C64 - 1000000000000000ull - 1) > 9000000000000000ull - 2) { if (C64 >= 10000000000000000ull) { // result has more than 16 digits if (!scale_k) { // must divide coeff_a by 10 saved_ca = saved_ca + T1; __mul_64x64_to_128 (CA, saved_ca, 0x3333333333333334ull); //reciprocals10_64[1]); coefficient_a = CA.w[1] >> 1; rem_a = saved_ca - (coefficient_a << 3) - (coefficient_a << 1); coefficient_a = coefficient_a - T1; saved_cb += /*90000000000000000 */ +rem_a * bid_power10_table_128[diff_dec_expon].w[0]; } else coefficient_a = (BID_SINT64) (saved_ca - T1 - (T1 << 3)) * (BID_SINT64) bid_power10_table_128[scale_k - 1].w[0]; extra_digits++; coefficient_b = saved_cb + 100000000000000000ull + bid_round_const_table[rmode][extra_digits]; // get P*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (CT, coefficient_b, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; C0_64 = CT.w[1] >> amount; // result coefficient C64 = C0_64 + coefficient_a; } else if (C64 <= 1000000000000000ull) { // less than 16 digits in result coefficient_a = (BID_SINT64) saved_ca *(BID_SINT64) bid_power10_table_128[scale_k + 1].w[0]; //extra_digits --; exponent_b--; coefficient_b = (saved_cb << 3) + (saved_cb << 1) + 100000000000000000ull + bid_round_const_table[rmode][extra_digits]; // get P*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (CT_new, coefficient_b, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; C0_64 = CT_new.w[1] >> amount; // result coefficient C64_new = C0_64 + coefficient_a; if (C64_new < 10000000000000000ull) { C64 = C64_new; #ifdef BID_SET_STATUS_FLAGS CT = CT_new; #endif } else exponent_b++; } } } #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if (C64 & 1) { // check whether fractional part of initial_P/10^extra_digits // is exactly .5 // this is the same as fractional part of // (initial_P + 0.5*10^extra_digits)/10^extra_digits is exactly zero // get remainder remainder_h = CT.w[1] << (64 - amount); // test whether fractional part is 0 if (!remainder_h && (CT.w[0] < bid_reciprocals10_64[extra_digits])) { C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS status = BID_INEXACT_EXCEPTION; // get remainder remainder_h = CT.w[1] << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if ((remainder_h == 0x8000000000000000ull) && (CT.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (CT.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (tmp, carry, CT.w[0], bid_reciprocals10_64[extra_digits]); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; break; } __set_status_flags (fpsc, status); #endif return get_BID64 (sign_s, exponent_b + extra_digits, C64, rounding_mode, fpsc); } /////////////////////////////////////////////////////////////////// // round 128-bit coefficient and return result in BID64 format // do not worry about midpoint cases ////////////////////////////////////////////////////////////////// static BID_UINT64 __bid_simple_round64_sticky (BID_UINT64 sign, int exponent, BID_UINT128 P, int extra_digits, int rounding_mode, unsigned *fpsc) { BID_UINT128 Q_high, Q_low, C128; BID_UINT64 C64; int amount, rmode; rmode = rounding_mode; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (sign && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #endif #endif __add_128_64 (P, P, bid_round_const_table[rmode][extra_digits]); // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Q_high, Q_low, P, bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; __shr_128 (C128, Q_high, amount); C64 = __low_64 (C128); #ifdef BID_SET_STATUS_FLAGS __set_status_flags (fpsc, BID_INEXACT_EXCEPTION); #endif return get_BID64 (sign, exponent, C64, rounding_mode, fpsc); } /////////////////////////////////////////////////////////////////// // round 128-bit coefficient and return result in BID64 format /////////////////////////////////////////////////////////////////// static BID_UINT64 __bid_full_round64 (BID_UINT64 sign, int exponent, BID_UINT128 P, int extra_digits, int rounding_mode, unsigned *fpsc) { BID_UINT128 Q_high, Q_low, C128, Stemp; #ifdef BID_SET_STATUS_FLAGS #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING BID_UINT128 PU; #endif #endif BID_UINT64 remainder_h, C64, carry, CY; int amount, amount2, rmode, status = 0; if (exponent < 0) { if (exponent >= -16 && (extra_digits + exponent < 0)) { extra_digits = -exponent; #ifdef BID_SET_STATUS_FLAGS #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (extra_digits > 0) { rmode = rounding_mode; if (sign && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; __add_128_128 (PU, P, bid_round_const_table_128[rmode][extra_digits]); if (__unsigned_compare_gt_128 (bid_power10_table_128[extra_digits + 15], PU)) status = BID_UNDERFLOW_EXCEPTION; } #else status = BID_UNDERFLOW_EXCEPTION; #endif #endif } } if (extra_digits > 0) { exponent += extra_digits; rmode = rounding_mode; if (sign && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; __add_128_128 (P, P, bid_round_const_table_128[rmode][extra_digits]); // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Q_high, Q_low, P, bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; __shr_128_long (C128, Q_high, amount); C64 = __low_64 (C128); #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if (C64 & 1) { // check whether fractional part of initial_P/10^extra_digits // is exactly .5 // get remainder amount2 = 64 - amount; remainder_h = 0; remainder_h--; remainder_h >>= amount2; remainder_h = remainder_h & Q_high.w[0]; if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) { C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS status |= BID_INEXACT_EXCEPTION; // get remainder remainder_h = Q_high.w[0] << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (remainder_h == 0x8000000000000000ull && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], CY, Q_low.w[0], bid_reciprocals10_128[extra_digits].w[0]); __add_carry_in_out (Stemp.w[1], carry, Q_low.w[1], bid_reciprocals10_128[extra_digits].w[1], CY); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; } __set_status_flags (fpsc, status); #endif } else { C64 = P.w[0]; if (!C64) { sign = 0; if (rounding_mode == BID_ROUNDING_DOWN) sign = 0x8000000000000000ull; } } return get_BID64 (sign, exponent, C64, rounding_mode, fpsc); } ///////////////////////////////////////////////////////////////////////////////// // round 192-bit coefficient (P, remainder_P) and return result in BID64 format // the lowest 64 bits (remainder_P) are used for midpoint checking only //////////////////////////////////////////////////////////////////////////////// static BID_UINT64 __bid_full_round64_remainder (BID_UINT64 sign, int exponent, BID_UINT128 P, int extra_digits, BID_UINT64 remainder_P, int rounding_mode, unsigned *fpsc, unsigned uf_status) { BID_UINT128 Q_high, Q_low, C128, Stemp; BID_UINT64 remainder_h, C64, carry, CY; int amount, amount2, rmode, status = uf_status; rmode = rounding_mode; if (sign && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; if (rmode == BID_ROUNDING_UP && remainder_P) { P.w[0]++; if (!P.w[0]) P.w[1]++; } if (extra_digits) { __add_128_64 (P, P, bid_round_const_table[rmode][extra_digits]); // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Q_high, Q_low, P, bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; __shr_128 (C128, Q_high, amount); C64 = __low_64 (C128); #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if (!remainder_P && (C64 & 1)) { // check whether fractional part of initial_P/10^extra_digits // is exactly .5 // get remainder amount2 = 64 - amount; remainder_h = 0; remainder_h--; remainder_h >>= amount2; remainder_h = remainder_h & Q_high.w[0]; if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) { C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS status |= BID_INEXACT_EXCEPTION; if (!remainder_P) { // get remainder remainder_h = Q_high.w[0] << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (remainder_h == 0x8000000000000000ull && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (Q_low.w[1] < bid_reciprocals10_128[extra_digits].w[1] || (Q_low.w[1] == bid_reciprocals10_128[extra_digits].w[1] && Q_low.w[0] < bid_reciprocals10_128[extra_digits].w[0]))) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp.w[0], CY, Q_low.w[0], bid_reciprocals10_128[extra_digits].w[0]); __add_carry_in_out (Stemp.w[1], carry, Q_low.w[1], bid_reciprocals10_128[extra_digits].w[1], CY); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; } } __set_status_flags (fpsc, status); #endif } else { C64 = P.w[0]; #ifdef BID_SET_STATUS_FLAGS if (remainder_P) { __set_status_flags (fpsc, uf_status | BID_INEXACT_EXCEPTION); } #endif } return get_BID64 (sign, exponent + extra_digits, C64, rounding_mode, fpsc); } /////////////////////////////////////////////////////////////////// // get P/10^extra_digits // result fits in 64 bits /////////////////////////////////////////////////////////////////// __BID_INLINE__ BID_UINT64 __truncate (BID_UINT128 P, int extra_digits) // extra_digits <= 16 { BID_UINT128 Q_high, Q_low, C128; BID_UINT64 C64; int amount; // get P*(2^M[extra_digits])/10^extra_digits __mul_128x128_full (Q_high, Q_low, P, bid_reciprocals10_128[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_recip_scale[extra_digits]; __shr_128 (C128, Q_high, amount); C64 = __low_64 (C128); return C64; } /////////////////////////////////////////////////////////////////// // return number of decimal digits in 128-bit value X /////////////////////////////////////////////////////////////////// __BID_INLINE__ int __get_dec_digits64 (BID_UINT128 X) { int_double tempx; int digits_x, bin_expon_cx; if (!X.w[1]) { if(!X.w[0]) return 0; //--- get number of bits in the coefficients of x and y --- tempx.d = (double) X.w[0]; bin_expon_cx = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; // get number of decimal digits in the coeff_x digits_x = bid_estimate_decimal_digits[bin_expon_cx]; if (X.w[0] >= bid_power10_table_128[digits_x].w[0]) digits_x++; return digits_x; } tempx.d = (double) X.w[1]; bin_expon_cx = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; // get number of decimal digits in the coeff_x digits_x = bid_estimate_decimal_digits[bin_expon_cx + 64]; if (__unsigned_compare_ge_128 (X, bid_power10_table_128[digits_x])) digits_x++; return digits_x; } //////////////////////////////////////////////////////////////////////////////// // // add 64-bit coefficient to 128-bit coefficient, return result in BID64 format // //////////////////////////////////////////////////////////////////////////////// __BID_INLINE__ BID_UINT64 bid_get_add128 (BID_UINT64 sign_x, int exponent_x, BID_UINT64 coefficient_x, BID_UINT64 sign_y, int final_exponent_y, BID_UINT128 CY, int extra_digits, int rounding_mode, unsigned *fpsc) { BID_UINT128 CY_L, CX, FS, F, CT, ST, T2; BID_UINT64 CYh, CY0L, T, S, coefficient_y, remainder_y; BID_SINT64 D = 0; int_double tempx; int diff_dec_expon, extra_digits2, exponent_y, status; int extra_dx, diff_dec2, bin_expon_cx, digits_x, rmode; // CY has more than 16 decimal digits exponent_y = final_exponent_y - extra_digits; #ifdef IEEE_ROUND_NEAREST_TIES_AWAY rounding_mode = 0; #endif #ifdef IEEE_ROUND_NEAREST rounding_mode = 0; #endif if (exponent_x > exponent_y) { // normalize x //--- get number of bits in the coefficients of x and y --- tempx.d = (double) coefficient_x; bin_expon_cx = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; // get number of decimal digits in the coeff_x digits_x = bid_estimate_decimal_digits[bin_expon_cx]; if (coefficient_x >= bid_power10_table_128[digits_x].w[0]) digits_x++; extra_dx = 16 - digits_x; coefficient_x *= bid_power10_table_128[extra_dx].w[0]; if ((sign_x ^ sign_y) && (coefficient_x == 1000000000000000ull)) { extra_dx++; coefficient_x = 10000000000000000ull; } exponent_x -= extra_dx; if (exponent_x > exponent_y) { // exponent_x > exponent_y diff_dec_expon = exponent_x - exponent_y; if (exponent_x <= final_exponent_y + 1) { __mul_64x64_to_128 (CX, coefficient_x, bid_power10_table_128[diff_dec_expon].w[0]); if (sign_x == sign_y) { __add_128_128 (CT, CY, CX); if ((exponent_x > final_exponent_y) /*&& (final_exponent_y>0) */ ) extra_digits++; if (__unsigned_compare_ge_128 (CT, bid_power10_table_128[16 + extra_digits])) extra_digits++; } else { __sub_128_128 (CT, CY, CX); if (((BID_SINT64) CT.w[1]) < 0) { CT.w[0] = 0 - CT.w[0]; CT.w[1] = 0 - CT.w[1]; if (CT.w[0]) CT.w[1]--; sign_y = sign_x; } else if (!(CT.w[1] | CT.w[0])) { sign_y = (rounding_mode != BID_ROUNDING_DOWN) ? 0 : 0x8000000000000000ull; } if ((exponent_x + 1 >= final_exponent_y) /*&& (final_exponent_y>=0) */ ) { extra_digits = __get_dec_digits64 (CT) - 16; if (extra_digits <= 0) { if (!CT.w[0] && rounding_mode == BID_ROUNDING_DOWN) sign_y = 0x8000000000000000ull; return get_BID64 (sign_y, exponent_y, CT.w[0], rounding_mode, fpsc); } } else if (__unsigned_compare_gt_128 (bid_power10_table_128[15 + extra_digits], CT)) extra_digits--; } return __bid_full_round64 (sign_y, exponent_y, CT, extra_digits, rounding_mode, fpsc); } // diff_dec2+extra_digits is the number of digits to eliminate from // argument CY diff_dec2 = exponent_x - final_exponent_y; if (diff_dec2 >= 17) { #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY if ((rounding_mode) & 3) { switch (rounding_mode) { case BID_ROUNDING_UP: if (!sign_y) { D = ((BID_SINT64) (sign_x ^ sign_y)) >> 63; D = D + D + 1; coefficient_x += D; } break; case BID_ROUNDING_DOWN: if (sign_y) { D = ((BID_SINT64) (sign_x ^ sign_y)) >> 63; D = D + D + 1; coefficient_x += D; } break; case BID_ROUNDING_TO_ZERO: if (sign_y != sign_x) { D = 0 - 1; coefficient_x += D; } break; default: break; // default added to avoid compiler warning } if (coefficient_x < 1000000000000000ull) { coefficient_x -= D; coefficient_x = D + (coefficient_x << 1) + (coefficient_x << 3); exponent_x--; } } #endif #endif #ifdef BID_SET_STATUS_FLAGS if (CY.w[1] | CY.w[0]) __set_status_flags (fpsc, BID_INEXACT_EXCEPTION); #endif return get_BID64 (sign_x, exponent_x, coefficient_x, rounding_mode, fpsc); } // here exponent_x <= 16+final_exponent_y // truncate CY to 16 dec. digits CYh = __truncate (CY, extra_digits); // get remainder T = bid_power10_table_128[extra_digits].w[0]; __mul_64x64_to_64 (CY0L, CYh, T); remainder_y = CY.w[0] - CY0L; // align coeff_x, CYh __mul_64x64_to_128 (CX, coefficient_x, bid_power10_table_128[diff_dec2].w[0]); if (sign_x == sign_y) { __add_128_64 (CT, CX, CYh); if (__unsigned_compare_ge_128 (CT, bid_power10_table_128[16 + diff_dec2])) diff_dec2++; } else { if (remainder_y) CYh++; __sub_128_64 (CT, CX, CYh); if (__unsigned_compare_gt_128 (bid_power10_table_128[15 + diff_dec2], CT)) diff_dec2--; } return __bid_full_round64_remainder (sign_x, final_exponent_y, CT, diff_dec2, remainder_y, rounding_mode, fpsc, 0); } } // Here (exponent_x <= exponent_y) { diff_dec_expon = exponent_y - exponent_x; if (diff_dec_expon > MAX_FORMAT_DIGITS) { rmode = rounding_mode; if ((sign_x ^ sign_y)) { if (!CY.w[0]) CY.w[1]--; CY.w[0]--; if (__unsigned_compare_gt_128 (bid_power10_table_128[15 + extra_digits], CY)) { if (rmode & 3) { extra_digits--; final_exponent_y--; } else { CY.w[0] = 1000000000000000ull; CY.w[1] = 0; extra_digits = 0; } } } __scale128_10 (CY, CY); extra_digits++; CY.w[0] |= 1; return __bid_simple_round64_sticky (sign_y, final_exponent_y, CY, extra_digits, rmode, fpsc); } // apply sign to coeff_x sign_x ^= sign_y; sign_x = ((BID_SINT64) sign_x) >> 63; CX.w[0] = (coefficient_x + sign_x) ^ sign_x; CX.w[1] = sign_x; // check whether CY (rounded to 16 digits) and CX have // any digits in the same position diff_dec2 = final_exponent_y - exponent_x; if (diff_dec2 <= 17) { // align CY to 10^ex S = bid_power10_table_128[diff_dec_expon].w[0]; __mul_64x128_short (CY_L, S, CY); __add_128_128 (ST, CY_L, CX); extra_digits2 = __get_dec_digits64 (ST) - 16; return __bid_full_round64 (sign_y, exponent_x, ST, extra_digits2, rounding_mode, fpsc); } // truncate CY to 16 dec. digits CYh = __truncate (CY, extra_digits); // get remainder T = bid_power10_table_128[extra_digits].w[0]; __mul_64x64_to_64 (CY0L, CYh, T); coefficient_y = CY.w[0] - CY0L; // add rounding constant rmode = rounding_mode; if (sign_y && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (!(rmode & 3)) //BID_ROUNDING_TO_NEAREST #endif #endif { coefficient_y += bid_round_const_table[rmode][extra_digits]; } // align coefficient_y, coefficient_x S = bid_power10_table_128[diff_dec_expon].w[0]; __mul_64x64_to_128 (F, coefficient_y, S); // fraction __add_128_128 (FS, F, CX); #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif { // rounding code, here RN_EVEN // 10^(extra_digits+diff_dec_expon) T2 = bid_power10_table_128[diff_dec_expon + extra_digits]; if (__unsigned_compare_gt_128 (FS, T2) || ((CYh & 1) && __test_equal_128 (FS, T2))) { CYh++; __sub_128_128 (FS, FS, T2); } } #endif #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY if (rmode == 4) //BID_ROUNDING_TO_NEAREST #endif { // rounding code, here RN_AWAY // 10^(extra_digits+diff_dec_expon) T2 = bid_power10_table_128[diff_dec_expon + extra_digits]; if (__unsigned_compare_ge_128 (FS, T2)) { CYh++; __sub_128_128 (FS, FS, T2); } } #endif #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY switch (rmode) { case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if ((BID_SINT64) FS.w[1] < 0) { CYh--; if (CYh < 1000000000000000ull) { CYh = 9999999999999999ull; final_exponent_y--; } } else { T2 = bid_power10_table_128[diff_dec_expon + extra_digits]; if (__unsigned_compare_ge_128 (FS, T2)) { CYh++; __sub_128_128 (FS, FS, T2); } } break; case BID_ROUNDING_UP: if ((BID_SINT64) FS.w[1] < 0) break; T2 = bid_power10_table_128[diff_dec_expon + extra_digits]; if (__unsigned_compare_gt_128 (FS, T2)) { CYh += 2; __sub_128_128 (FS, FS, T2); } else if ((FS.w[1] == T2.w[1]) && (FS.w[0] == T2.w[0])) { CYh++; FS.w[1] = FS.w[0] = 0; } else if (FS.w[1] | FS.w[0]) CYh++; break; default: break; // default added to avoid compiler warning } #endif #endif #ifdef BID_SET_STATUS_FLAGS status = BID_INEXACT_EXCEPTION; #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY if (!(rmode & 3)) #endif #endif { // RN modes if ((FS.w[1] == bid_round_const_table_128[0][diff_dec_expon + extra_digits].w[1]) && (FS.w[0] == bid_round_const_table_128[0][diff_dec_expon + extra_digits].w[0])) status = BID_EXACT_STATUS; } #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY else if (!FS.w[1] && !FS.w[0]) status = BID_EXACT_STATUS; #endif #endif __set_status_flags (fpsc, status); #endif return get_BID64 (sign_y, final_exponent_y, CYh, rounding_mode, fpsc); } } ////////////////////////////////////////////////////////////////////////// // // If coefficient_z is less than 16 digits long, normalize to 16 digits // ///////////////////////////////////////////////////////////////////////// static BID_UINT64 BID_normalize (BID_UINT64 sign_z, int exponent_z, BID_UINT64 coefficient_z, BID_UINT64 round_dir, int round_flag, int rounding_mode, unsigned *fpsc) { BID_SINT64 D; int_double tempx; int digits_z, bin_expon, scale, rmode; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rounding_mode; if (sign_z && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else if (coefficient_z >= bid_power10_table_128[15].w[0]) return z; #endif #endif //--- get number of bits in the coefficients of x and y --- tempx.d = (double) coefficient_z; bin_expon = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; // get number of decimal digits in the coeff_x digits_z = bid_estimate_decimal_digits[bin_expon]; if (coefficient_z >= bid_power10_table_128[digits_z].w[0]) digits_z++; scale = 16 - digits_z; exponent_z -= scale; if (exponent_z < 0) { scale += exponent_z; exponent_z = 0; } coefficient_z *= bid_power10_table_128[scale].w[0]; #ifdef BID_SET_STATUS_FLAGS if (round_flag) { __set_status_flags (fpsc, BID_INEXACT_EXCEPTION); if (coefficient_z < 1000000000000000ull) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION); else if ((coefficient_z == 1000000000000000ull) && !exponent_z && ((BID_SINT64) (round_dir ^ sign_z) < 0) && round_flag #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING && (rmode == BID_ROUNDING_DOWN || rmode == BID_ROUNDING_TO_ZERO) #endif ) __set_status_flags (fpsc, BID_UNDERFLOW_EXCEPTION); } #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (round_flag && (rmode & 3)) { D = round_dir ^ sign_z; if (rmode == BID_ROUNDING_UP) { if (D >= 0) coefficient_z++; } else { if (D < 0) coefficient_z--; if (coefficient_z < 1000000000000000ull && exponent_z) { coefficient_z = 9999999999999999ull; exponent_z--; } } } #endif #endif return get_BID64 (sign_z, exponent_z, coefficient_z, rounding_mode, fpsc); } ////////////////////////////////////////////////////////////////////////// // // 0*10^ey + cz*10^ez, ey> 52) - 0x3ff; scale_cz = bid_estimate_decimal_digits[bin_expon]; if (coefficient_z >= bid_power10_table_128[scale_cz].w[0]) scale_cz++; scale_k = 16 - scale_cz; if (diff_expon < scale_k) scale_k = diff_expon; coefficient_z *= bid_power10_table_128[scale_k].w[0]; return get_BID64 (sign_z, exponent_z - scale_k, coefficient_z, *prounding_mode, fpsc); } #endif LIBRARY/src/bid128_compare.c0000644€­ Q01134020000041273515113665770014515 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_equal, x, y) int res; int exp_x, exp_y, exp_t; BID_UINT128 sig_x, sig_y, sig_t; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 0; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equivalent. if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 1; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { if ((y.w[1] & MASK_INF) == MASK_INF) { res = (((x.w[1] ^ y.w[1]) & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } else { res = 0; BID_RETURN_VAL (res); } } if ((y.w[1] & MASK_INF) == MASK_INF) { res = 0; BID_RETURN_VAL (res); } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { res = 1; BID_RETURN_VAL (res); } else if ((x_is_zero && !y_is_zero) || (!x_is_zero && y_is_zero)) { res = 0; BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ => not equal : return 0 if ((x.w[1] ^ y.w[1]) & MASK_SIGN) { res = 0; BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) if (exp_x > exp_y) { // to simplify the loop below, SWAP (exp_x, exp_y, exp_t); // put the larger exp in y, SWAP (sig_x.w[1], sig_y.w[1], sig_t.w[1]); // and the smaller exp in x SWAP (sig_x.w[0], sig_y.w[0], sig_t.w[0]); // and the smaller exp in x } if (exp_y - exp_x > 33) { res = 0; BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (exp_y - exp_x > 19) { // recalculate y's significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[exp_y - exp_x - 20]); { res = ((sig_n_prime256.w[3] == 0) && (sig_n_prime256.w[2] == 0) && (sig_n_prime256.w[1] == sig_x.w[1]) && (sig_n_prime256.w[0] == sig_x.w[0])); BID_RETURN_VAL (res); } } //else{ // recalculate y's significand upwards __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[exp_y - exp_x], sig_y); { res = ((sig_n_prime192.w[2] == 0) && (sig_n_prime192.w[1] == sig_x.w[1]) && (sig_n_prime192.w[0] == sig_x.w[0])); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_greater, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, rather than // equal : return 0 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 0; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 0; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x.w[1] & MASK_SIGN) == MASK_SIGN)) { res = 0; BID_RETURN_VAL (res); } // x is pos infinity, it is greater, unless y is positive infinity => // return y!=pos_infinity else { res = (((y.w[1] & MASK_INF) != MASK_INF) || ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_greater_equal, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 1 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 0; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 1; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN_VAL (res) } if ((x.w[1] & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y.w[1] & MASK_INF) == MASK_INF) && (y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } else // x is pos_inf, no way for it to be less than y { res = 1; BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 1; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison of the // significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x.w[1] >= sig_y.w[1] && sig_x.w[0] >= sig_y.w[0] && exp_x > exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (sig_x.w[1] <= sig_y.w[1] && sig_x.w[0] <= sig_y.w[0] && exp_x < exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((sig_n_prime256.w[3] == 0 && sig_n_prime256.w[2] == 0 && (sig_n_prime256.w[1] < sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] < sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = (sig_n_prime192.w[2] == 0 && (sig_n_prime192.w[1] < sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] < sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_greater_unordered, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than // equal : return 1 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 1; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 0; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x.w[1] & MASK_SIGN) == MASK_SIGN)) { res = 0; BID_RETURN_VAL (res); } // x is pos infinity, it is greater, unless y is positive infinity => // return y!=pos_infinity else { res = (((y.w[1] & MASK_INF) != MASK_INF) || ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison of the // significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x.w[1] >= sig_y.w[1] && sig_x.w[0] >= sig_y.w[0] && exp_x > exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (sig_x.w[1] <= sig_y.w[1] && sig_x.w[0] <= sig_y.w[0] && exp_x < exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((sig_n_prime256.w[3] == 0 && sig_n_prime256.w[2] == 0 && (sig_n_prime256.w[1] < sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] < sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] == 0 && (sig_n_prime192.w[1] < sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] < sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_less, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 0; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 0; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN_VAL (res) } if ((x.w[1] & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y.w[1] & MASK_INF) != MASK_INF) || (y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } else // x is pos_inf, no way for it to be less than y { res = 0; BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison of the // significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_less_equal, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 0; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 1; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 1 if (((x.w[1] & MASK_SIGN) == MASK_SIGN)) { res = 1; BID_RETURN_VAL (res); } // x is pos infinity, it is greater, unless y is positive infinity => // return y!=pos_infinity else { res = (((y.w[1] & MASK_INF) == MASK_INF) && ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 1; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison of the // significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x. w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_less_unordered, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 1; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 0; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN_VAL (res) } if ((x.w[1] & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y.w[1] & MASK_INF) != MASK_INF) || (y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } else // x is pos_inf, no way for it to be less than y { res = 0; BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_not_equal, x, y) int res; int exp_x, exp_y, exp_t; BID_UINT128 sig_x, sig_y, sig_t; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 1; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equivalent. if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 0; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { if ((y.w[1] & MASK_INF) == MASK_INF) { res = (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } else { res = 1; BID_RETURN_VAL (res); } } if ((y.w[1] & MASK_INF) == MASK_INF) { res = 1; BID_RETURN_VAL (res); } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { res = 0; BID_RETURN_VAL (res); } else if ((x_is_zero && !y_is_zero) || (!x_is_zero && y_is_zero)) { res = 1; BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ => not equal : return 0 if ((x.w[1] ^ y.w[1]) & MASK_SIGN) { res = 1; BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) if (exp_x > exp_y) { // to simplify the loop below, SWAP (exp_x, exp_y, exp_t); // put the larger exp in y, SWAP (sig_x.w[1], sig_y.w[1], sig_t.w[1]); // and the smaller exp in x SWAP (sig_x.w[0], sig_y.w[0], sig_t.w[0]); // and the smaller exp in x } if (exp_y - exp_x > 33) { res = 1; BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (exp_y - exp_x > 19) { // recalculate y's significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[exp_y - exp_x - 20]); { res = ((sig_n_prime256.w[3] != 0) || (sig_n_prime256.w[2] != 0) || (sig_n_prime256.w[1] != sig_x.w[1]) || (sig_n_prime256.w[0] != sig_x.w[0])); BID_RETURN_VAL (res); } } //else{ // recalculate y's significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[exp_y - exp_x], sig_y); { res = ((sig_n_prime192.w[2] != 0) || (sig_n_prime192.w[1] != sig_x.w[1]) || (sig_n_prime192.w[0] != sig_x.w[0])); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_not_greater, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 1; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 1; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 1 if (((x.w[1] & MASK_SIGN) == MASK_SIGN)) { res = 1; BID_RETURN_VAL (res); } // x is pos infinity, it is greater, unless y is positive infinity => return y!=pos_infinity else { res = (((y.w[1] & MASK_INF) == MASK_INF) && ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 1; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_not_less, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 1 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 1; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 1; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN_VAL (res) } if ((x.w[1] & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y.w[1] & MASK_INF) == MASK_INF) && (y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } else // x is pos_inf, no way for it to be less than y { res = 1; BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 1; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x.w[1] >= sig_y.w[1] && sig_x.w[0] >= sig_y.w[0] && exp_x > exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (sig_x.w[1] <= sig_y.w[1] && sig_x.w[0] <= sig_y.w[0] && exp_x < exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((sig_n_prime256.w[3] == 0 && sig_n_prime256.w[2] == 0 && (sig_n_prime256.w[1] < sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] < sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = (sig_n_prime192.w[2] == 0 && (sig_n_prime192.w[1] < sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] < sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_ordered, x, y) int res; // NaN (CASE1) // if either number is NAN, the comparison is ordered : return 1 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 0; BID_RETURN_VAL (res); } } { res = 1; BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_quiet_unordered, x, y) int res; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 1 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN || (y.w[1] & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; } { res = 1; BID_RETURN_VAL (res); } } { res = 0; BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_signaling_greater, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; { res = 0; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 0; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x.w[1] & MASK_SIGN) == MASK_SIGN)) { res = 0; BID_RETURN_VAL (res); } // x is pos infinity, it is greater, unless y is positive infinity => return y!=pos_infinity else { res = (((y.w[1] & MASK_INF) != MASK_INF) || ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_signaling_greater_equal, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 1 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; { res = 0; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 1; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN_VAL (res) } if ((x.w[1] & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y.w[1] & MASK_INF) == MASK_INF) && (y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } else // x is pos_inf, no way for it to be less than y { res = 1; BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 1; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x.w[1] >= sig_y.w[1] && sig_x.w[0] >= sig_y.w[0] && exp_x > exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (sig_x.w[1] <= sig_y.w[1] && sig_x.w[0] <= sig_y.w[0] && exp_x < exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((sig_n_prime256.w[3] == 0 && sig_n_prime256.w[2] == 0 && (sig_n_prime256.w[1] < sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] < sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = (sig_n_prime192.w[2] == 0 && (sig_n_prime192.w[1] < sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] < sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_signaling_greater_unordered, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 1 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; { res = 1; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 0; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x.w[1] & MASK_SIGN) == MASK_SIGN)) { res = 0; BID_RETURN_VAL (res); } // x is pos infinity, it is greater, unless y is positive infinity => return y!=pos_infinity else { res = (((y.w[1] & MASK_INF) != MASK_INF) || ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x.w[1] >= sig_y.w[1] && sig_x.w[0] >= sig_y.w[0] && exp_x > exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (sig_x.w[1] <= sig_y.w[1] && sig_x.w[0] <= sig_y.w[0] && exp_x < exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((sig_n_prime256.w[3] == 0 && sig_n_prime256.w[2] == 0 && (sig_n_prime256.w[1] < sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] < sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] == 0 && (sig_n_prime192.w[1] < sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] < sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_signaling_less, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; { res = 0; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 0; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN_VAL (res) } if ((x.w[1] & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y.w[1] & MASK_INF) != MASK_INF) || (y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } else // x is pos_inf, no way for it to be less than y { res = 0; BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, |x| < |y|, return 1 if positive if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_signaling_less_equal, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; { res = 0; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 1; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 1 if (((x.w[1] & MASK_SIGN) == MASK_SIGN)) { res = 1; BID_RETURN_VAL (res); } // x is pos infinity, it is greater, unless y is positive infinity => return y!=pos_infinity else { res = (((y.w[1] & MASK_INF) == MASK_INF) && ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 1; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_signaling_less_unordered, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; { res = 1; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 0; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN_VAL (res) } if ((x.w[1] & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y.w[1] & MASK_INF) != MASK_INF) || (y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } else // x is pos_inf, no way for it to be less than y { res = 0; BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 0; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_signaling_not_greater, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; { res = 1; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 1; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return 1 if (((x.w[1] & MASK_SIGN) == MASK_SIGN)) { res = 1; BID_RETURN_VAL (res); } // x is pos infinity, it is greater, unless y is positive infinity => return y!=pos_infinity else { res = (((y.w[1] & MASK_INF) == MASK_INF) && ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 1; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if ((sig_x.w[1] > sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if ((sig_x.w[1] < sig_y.w[1] || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) != MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = ((sig_n_prime256.w[3] != 0 || sig_n_prime256.w[2] != 0 || (sig_n_prime256.w[1] > sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 0 { res = (sig_n_prime192.w[2] != 0 || (sig_n_prime192.w[1] > sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE (int, bid128_signaling_not_less, x, y) int res; int exp_x, exp_y; int diff; BID_UINT128 sig_x, sig_y; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 1 if (((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN)) { *pfpsf |= BID_INVALID_EXCEPTION; { res = 1; BID_RETURN_VAL (res); } } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x.w[0] == y.w[0] && x.w[1] == y.w[1]) { res = 1; BID_RETURN_VAL (res); } // INFINITY (CASE3) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN_VAL (res) } if ((x.w[1] & MASK_SIGN) == MASK_SIGN) // x is -inf, so it is less than y unless y is -inf { res = (((y.w[1] & MASK_INF) == MASK_INF) && (y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } else // x is pos_inf, no way for it to be less than y { res = 1; BID_RETURN_VAL (res); } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } // CONVERT X sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF X IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_x = 1; else non_canon_x = 0; // CONVERT Y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF Y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) non_canon_y = 1; else non_canon_y = 0; // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore // ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; } if (non_canon_y || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 1; BID_RETURN_VAL (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x.w[1] ^ y.w[1]) & MASK_SIGN) == MASK_SIGN) { res = ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if exponents are the same, then we have a simple comparison // of the significands if (exp_y == exp_x) { res = (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] >= sig_y.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x.w[1] >= sig_y.w[1] && sig_x.w[0] >= sig_y.w[0] && exp_x > exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } if (sig_x.w[1] <= sig_y.w[1] && sig_x.w[0] <= sig_y.w[0] && exp_x < exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } diff = exp_x - exp_y; // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (diff > 0) { // to simplify the loop below, // if exp_x is 33 greater than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN_VAL (res); } // difference cannot be greater than 10^33 if (diff > 19) { //128 by 128 bit multiply -> 256 bits __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_y.w[1] && (sig_n_prime256.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((((sig_n_prime256.w[3] > 0) || sig_n_prime256.w[2] > 0) || (sig_n_prime256.w[1] > sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_x); // if postitive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = (((sig_n_prime192.w[2] > 0) || (sig_n_prime192.w[1] > sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] > sig_y.w[0])) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } diff = exp_y - exp_x; // if exp_x is 33 less than exp_y, no need for compensation if (diff > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } if (diff > 19) { //128 by 128 bit multiply -> 256 bits // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[diff - 20]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime256.w[3] == 0 && (sig_n_prime256.w[2] == 0) && sig_n_prime256.w[1] == sig_x.w[1] && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = ((sig_n_prime256.w[3] == 0 && sig_n_prime256.w[2] == 0 && (sig_n_prime256.w[1] < sig_x.w[1] || (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] < sig_x.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN_VAL (res); } } //else { //128 by 64 bit multiply -> 192 bits // adjust the y significand upwards __mul_64x128_to192 (sig_n_prime192, bid_ten2k64[diff], sig_y); // if postitive, return whichever significand is larger (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_x.w[1] && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 1; BID_RETURN_VAL (res); } // if equal, return 1 { res = (sig_n_prime192.w[2] == 0 && (sig_n_prime192.w[1] < sig_x.w[1] || (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] < sig_x.w[0]))) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN_VAL (res); } } LIBRARY/src/bid32_sin.c0000644€­ Q01134020000002770715113665770013573 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" // Extra macros #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll192_short(hi,med,lo,c) \ ((hi) = ((hi) << (c)) + ((med)>>(64-(c))), \ (med) = ((med) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) double sin(double); double cos(double); #define BID32_1 0x32800001ul #define BID32_NAN 0x7c000000ul // Values of (10^a / 2 pi) mod 1 for -8 <= a <= 90 // Each one is a 128-bit binary fraction. // Maybe it would be just about OK to use 64-bit fractions? static BID_UINT128 bid_decimal32_moduli[] = { {{ 0xd1ec52e455229a49ull, 0x00000006d5ed56c8ull }}, {{ 0x333b3ceb535a06d8ull, 0x000000445b4563d8ull }}, {{ 0x0050613141844470ull, 0x000002ab90b5e672ull }}, {{ 0x0323cbec8f2aac65ull, 0x00001ab3a71b0074ull }}, {{ 0x1f65f73d97aabbefull, 0x00010b04870e0488ull }}, {{ 0x39fba867ecab575aull, 0x000a6e2d468c2d51ull }}, {{ 0x43d4940f3eb16984ull, 0x00684dc4c179c52cull }}, {{ 0xa64dc89872ee1f25ull, 0x041309af8ec1b3baull }}, {{ 0x7f09d5f47d4d3770ull, 0x28be60db9391054aull }}, {{ 0xf6625b8ce5042a62ull, 0x976fc893c3aa34e8ull }}, {{ 0x9fd79380f229a7d5ull, 0xea5dd5c5a4a61119ull }}, {{ 0x3e6bc30975a08e56ull, 0x27aa59b86e7cab00ull }}, {{ 0x70359e5e98458f5eull, 0x8ca7813450deae02ull }}, {{ 0x62182fb1f2b799b0ull, 0x7e8b0c0b28b2cc18ull }}, {{ 0xd4f1dcf37b2c00e3ull, 0xf16e786f96fbf8f3ull }}, {{ 0x5172a182cfb808e1ull, 0x6e50b45be5d7b986ull }}, {{ 0x2e7a4f1c1d3058c6ull, 0x4f270b96fa6d3f3full }}, {{ 0xd0c7171923e377b9ull, 0x178673e5c8447877ull }}, {{ 0x27c6e6fb66e2ad3aull, 0xeb4086f9d2acb4aeull }}, {{ 0x8dc505d204dac446ull, 0x308545c23abf0ecdull }}, {{ 0x89b23a34308baac1ull, 0xe534b9964b769407ull }}, {{ 0x60f64609e574ab85ull, 0xf40f3fdef2a1c84bull }}, {{ 0xc99ebc62f68eb334ull, 0x88987eb57a51d2f1ull }}, {{ 0xe0335bdda193000cull, 0x55f4f316c7323d71ull }}, {{ 0xc20196a84fbe0075ull, 0x5b917ee3c7f66672ull }}, {{ 0x940fe2931d6c0490ull, 0x93aef4e5cfa0007bull }}, {{ 0xc89ed9bf26382da2ull, 0xc4d590fa1c4004d3ull }}, {{ 0xd63481777e31c854ull, 0xb057a9c51a803045ull }}, {{ 0x5e0d0eaaedf1d34cull, 0xe36ca1b30901e2baull }}, {{ 0xac8292ad4b7240f5ull, 0xe23e50fe5a12db47ull }}, {{ 0xbd19bac4f276898full, 0xd66f29ef84bc90ccull }}, {{ 0x63014bb178a15f9bull, 0x6057a35b2f5da7ffull }}, {{ 0xde0cf4eeb64dbc0bull, 0xc36c618fd9a88ff9ull }}, {{ 0xac8191531f095870ull, 0xa23bcf9e80959fc2ull }}, {{ 0xbd0fad3f365d7461ull, 0x56561c3105d83d9aull }}, {{ 0x629cc4781fa68bcdull, 0x5f5d19ea3a72680bull }}, {{ 0xda1facb13c817602ull, 0xb9a3032648781071ull }}, {{ 0x853cbeec5d0e9c19ull, 0x405e1f7ed4b0a472ull }}, {{ 0x345f753ba29218f7ull, 0x83ad3af44ee66c79ull }}, {{ 0x0bba945459b4f9a8ull, 0x24c44d8b15003cbcull }}, {{ 0x7549cb4b8111c093ull, 0x6fab076ed2025f58ull }}, {{ 0x94e1f0f30ab185baull, 0x5cae4a543417b974ull }}, {{ 0xd0d3697e6aef3943ull, 0x9ecee74a08ed3e8dull }}, {{ 0x28421ef02d583ca2ull, 0x341508e45944718aull }}, {{ 0x92953561c5725e56ull, 0x08d258eb7cac6f65ull }}, {{ 0xb9d415d1b677af57ull, 0x58377932debc59f7ull }}, {{ 0x4248da3120acd968ull, 0x722abbfcb35b83adull }}, {{ 0x96d885eb46c07e11ull, 0x75ab57df019324c4ull }}, {{ 0xe4753b30c384eca7ull, 0x98b16eb60fbf6fadull }}, {{ 0xec944fe7a3313e81ull, 0xf6ee531c9d7a5ccaull }}, {{ 0x3dcb1f0c5fec710eull, 0xa54f3f1e26c79fedull }}, {{ 0x69ef367bbf3c6a88ull, 0x7518772d83cc3f44ull }}, {{ 0x235820d5785c2951ull, 0x92f4a7c725fa78acull }}, {{ 0x61714856b3999d26ull, 0xbd8e8dc77bc8b6b9ull }}, {{ 0xce6cd3630400237eull, 0x679189cad5d7233dull }}, {{ 0x104041de280162ecull, 0x0baf61ec5a67606aull }}, {{ 0xa28292ad900ddd37ull, 0x74d9d33b8809c424ull }}, {{ 0x5919bac7a08aa429ull, 0x908240535061a96eull }}, {{ 0x7b014bcc456a699cull, 0xa516834123d09e4full }}, {{ 0xce0cf5fab6282016ull, 0x72e1208b66262f1aull }}, {{ 0x0c819bcb1d9140ddull, 0x7ccb4571fd7dd70cull }}, {{ 0x7d1015ef27ac88a1ull, 0xdff0b673e6ea6678ull }}, {{ 0xe2a0db578cbd5648ull, 0xbf672087052800b4ull }}, {{ 0xda48916b7f655ecfull, 0x7a07454633900710ull }}, {{ 0x86d5ae32f9f5b41bull, 0xc448b4be03a046a8ull }}, {{ 0x4458cdfdc399090dull, 0xaad70f6c2442c295ull }}, {{ 0xab780be9a3fa5a80ull, 0xac669a396a9b99d4ull }}, {{ 0xb2b0772067c78903ull, 0xbc02063e2a14024eull }}, {{ 0xfae4a7440dcb5a19ull, 0x58143e6da4c81712ull }}, {{ 0xccee88a889f184fdull, 0x70ca70486fd0e6bdull }}, {{ 0x01515695636f31e6ull, 0x67e862d45e29036aull }}, {{ 0x0d2d61d5e257f300ull, 0x0f13dc4bad9a2224ull }}, {{ 0x83c5d25ad76f7dffull, 0x96c69af4c8055568ull }}, {{ 0x25ba378c6a5aebfaull, 0xe3c20d8fd0355615ull }}, {{ 0x79462b7c278d37c5ull, 0xe594879e22155cd3ull }}, {{ 0xbcbdb2d98b842db5ull, 0xf7cd4c2d54d5a042ull }}, {{ 0x5f68fc7f7329c90eull, 0xae04f9c55058429bull }}, {{ 0xba19dcfa7fa1da8cull, 0xcc31c1b523729a11ull }}, {{ 0x4502a1c8fc52897bull, 0xf9f19113627a04b1ull }}, {{ 0xb21a51d9db395ed1ull, 0xc36faac1d8c42eecull }}, {{ 0xf5073282903db429ull, 0xa25cab9277a9d53eull }}, {{ 0x9247f919a2690997ull, 0x579eb3b8aca25475ull }}, {{ 0xb6cfbb00581a5fe4ull, 0x6c330536be574c97ull }}, {{ 0x241d4e037107beeaull, 0x39fe34236f68fdedull }}, {{ 0x69250c226a4d7526ull, 0x43ee09625a19eb43ull }}, {{ 0x1b7279582706937cull, 0xa74c5dd7850330a2ull }}, {{ 0x1278bd718641c2d4ull, 0x88fbaa6b321fe655ull }}, {{ 0xb8b7666f3e919c45ull, 0x59d4a82ff53eff52ull }}, {{ 0x372a005871b01ab6ull, 0x824e91df9475f93bull }}, {{ 0x27a4037470e10b1eull, 0x1711b2bbcc9bbc50ull }}, {{ 0x8c68228c68ca6f2full, 0xe6b0fb55fe155b21ull }}, {{ 0x7c11597c17e857d2ull, 0x02e9d15becd58f4full }}, {{ 0xd8ad7ed8ef136e34ull, 0x1d222d974057991aull }}, {{ 0x76c6f47956c24e0aull, 0x2355c7e8836bfb0cull }}, {{ 0xa3c58cbd63970c5full, 0x6159cf152237ce7cull }}, {{ 0x65b77f65e3e67bb7ull, 0xcd8216d3562e10deull }}, {{ 0xf92af9fae700d527ull, 0x0714e4415dcca8afull }}, {{ 0xbbadc3cd06085386ull, 0x46d0ea8da9fe96dfull }}, {{ 0x54c9a6023c53433bull, 0xc4292988a3f1e4bdull }} }; BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_sin, BID_UINT32, x) // Local variables. BID_UINT32 res; int s, e; BID_UINT64 c; double xd, yd = 0.0; BID_UINT128 m; BID_UINT192 p; int sf, k, ef, el; // Decompose the input and check for NaN and infinity. s = x >> 31; if ((x & (3ul<<29)) == (3ul<<29)) { if ((x & (0xFul<<27)) == (0xFul<<27)) { if ((x & (0x1Ful<<26)) != (0x1Full<<26)) { // input is infinite, so return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = BID32_NAN; BID_RETURN (res); } else { // input is NaN, so quiet/canonize it etc. #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } } else { // "large coefficient" input e = ((x >> 21) & ((1ul<<8)-1)) - 101; c = (1ul<<23) + (x & ((1ul<<21)-1)); if ((unsigned long)(c) > 9999999ul) c = 0ull; } } else { // "small coefficient" input e = ((x >> 23) & ((1ul<<8)-1)) - 101; c = x & ((1ul<<23)-1); } // Make sure we treat zero even with huge exponent as small if (c == 0) e = -9; // If the input is trivially <= 1/10, just do the naive computation // since no range reduction is needed and the function is well-conditioned if (e < -8) { BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = sin(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN(res); } // Pick out the appropriate modulus for the exponent and multiply by coeff // Since we discard the top word p.w[3], we could specially optimize this. m = bid_decimal32_moduli[e+8]; __mul_64x128_to_192(p,c,m); // Shift up by two bits to give an integer part k and a fraction // modulo (pi/2). Note that we have to do this afterwards rather than // use modulo (pi/2) reduction at the start to keep integer parities. k = p.w[1] >> 62; sll128_short(p.w[1],p.w[0],2); // If the fraction is >= 1/2, add 1 to integer and complement the fraction // with an appropriate sign change so we have a "rounded to nearest" version // (Complementing is slightly different from negation but it's negligible.) // Set "sf" to the correct sign for the fraction if (p.w[1] >= 0x8000000000000000ull) { k = (k + 1) & 3; p.w[1] = ~p.w[1]; p.w[0] = ~p.w[0]; sf = 1 - s; } else { sf = s; } // Also correct k to take into account the sign if (s) k = (-k) & 3; // Normalize the binary fraction with exponent ef el = clz64_nz(p.w[1]); ef = 1022 - el; if (el != 0) sll128_short(p.w[1],p.w[0],el); // Now shift right and mask off integer bit for double coefficient // and package up as a double-precision number { union { double d; BID_UINT64 i; } di; di.i = (((BID_UINT64) sf) << 63) + ((BID_UINT64) ef << 52) + ((p.w[1] >> 11) & ((1ull<<52)-1)); xd = di.d; } // Multiply by pi/2 so we can use regular binary trig functions. xd = 1.570796326794896619231321691639751442098584699687552910487472296 * xd; // Now use the trig function depending on k: switch(k) { case 0: yd = sin(xd); break; case 1: yd = cos(xd); break; case 2: yd = -sin(xd); break; case 3: yd = -cos(xd); break; default: break; // default added to avoid compiler warning } BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN(res); } LIBRARY/src/bid128_atan2.c0000644€­ Q01134020000001526615113665770014072 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" static BID_UINT128 BID128_DEC_PI = { BID128_LH_INIT( 0xbabe5564e6f39f8full, 0x2ffe9ae4795796a7ull ) }; static BID_UINT128 BID128_DEC_PI12 = { BID128_LH_INIT( 0xdd5f2ab27379cfc7ull, 0x2ffe4d723cabcb53ull ) }; static BID_UINT128 BID128_DEC_PI14 = { BID128_LH_INIT( 0xeeaf955939bce7e4ull, 0x2ffe26b91e55e5a9ull ) }; static BID_UINT128 BID128_DEC_PI34 = { BID128_LH_INIT( 0xCC0EC00BAD36B7ABull, 0x2ffe742B5B01B0FDull ) }; static BID_UINT128 BID128_10POW36 = { BID128_LH_INIT( 0x0000000000000001ull, 0x3088000000000000ull ) }; static BID_UINT128 BID128_10POW_M36 = { BID128_LH_INIT( 0x0000000000000001ull, 0x2ff8000000000000ull ) }; BID128_FUNCTION_ARG2 (bid128_atan2, x, y) BID_UINT128 CX, CY, z, zabs, res; BID_UINT64 valid_y, sign_x, sign_y; int exponent_x, exponent_y, cmp_res; _IDEC_flags save_flags; BID_F128_TYPE rq, zq; valid_y = unpack_BID128_value_BLE (&sign_y, &exponent_y, &CY, y); // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value_BLE (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN if ((x.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull || // sNaN (y.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = (CX.w[BID_HIGH_128W]) & QUIET_MASK64; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; BID_RETURN (res); } // x is Infinity? if ((x.w[BID_HIGH_128W] & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is Inf. if (((y.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7800000000000000ull)) // return NaN { if(sign_y) { res.w[BID_HIGH_128W] = sign_x ^ BID128_DEC_PI34.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = BID128_DEC_PI34.w[BID_LOW_128W]; } else { res.w[BID_HIGH_128W] = sign_x ^ BID128_DEC_PI14.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = BID128_DEC_PI14.w[BID_LOW_128W]; } BID_RETURN (res); } // y is NaN? if (((y.w[BID_HIGH_128W] & 0x7c00000000000000ull) != 0x7c00000000000000ull)) // not NaN { // return +/-pi/2 res.w[BID_HIGH_128W] = sign_x ^ BID128_DEC_PI12.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = BID128_DEC_PI12.w[BID_LOW_128W]; BID_RETURN (res); } } // x is 0 if(valid_y) { if(sign_y) { res.w[BID_HIGH_128W] = sign_x^BID128_DEC_PI.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = BID128_DEC_PI.w[BID_LOW_128W]; } else { res.w[BID_HIGH_128W] = sign_x; res.w[BID_LOW_128W] = 0; } BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = CY.w[BID_HIGH_128W] & QUIET_MASK64; res.w[BID_LOW_128W] = CY.w[BID_LOW_128W]; BID_RETURN (res); } // y is Infinity? if ((y.w[BID_HIGH_128W] & 0x7800000000000000ull) == 0x7800000000000000ull) { if(sign_y) { res.w[BID_HIGH_128W] = sign_x ^ BID128_DEC_PI.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = BID128_DEC_PI.w[BID_LOW_128W]; } else { res.w[BID_HIGH_128W] = sign_x; res.w[BID_LOW_128W] = 0; } BID_RETURN (res); } // y is 0 if(!(CX.w[BID_HIGH_128W]|CX.w[BID_LOW_128W])) { if(sign_y) { res.w[BID_HIGH_128W] = sign_x^BID128_DEC_PI.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = BID128_DEC_PI.w[BID_LOW_128W]; } else { res.w[BID_HIGH_128W] = sign_x; res.w[BID_LOW_128W] = 0; } } else { // x finite, return +/-pi/2 res.w[BID_HIGH_128W] = sign_x^BID128_DEC_PI12.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = BID128_DEC_PI12.w[BID_LOW_128W]; } BID_RETURN (res); } save_flags = *pfpsf; BIDECIMAL_CALL2 (bid128_div, z, x, y); zabs.w[BID_HIGH_128W] = z.w[BID_HIGH_128W] & 0x7fffffffffffffffull; zabs.w[BID_LOW_128W] = z.w[BID_LOW_128W]; *pfpsf = save_flags; // avoided incorrect OF/UF BIDECIMAL_CALL2_NORND (bid128_quiet_greater, cmp_res, zabs, BID128_10POW36); if(cmp_res) { // |x/y|>10^36 res.w[BID_HIGH_128W] = sign_x ^ BID128_DEC_PI12.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = BID128_DEC_PI12.w[BID_LOW_128W]; BID_RETURN (res); } BIDECIMAL_CALL2_NORND (bid128_quiet_less, cmp_res, zabs, BID128_10POW_M36); if(cmp_res) { // |x/y|<10^(-36) if(sign_y) { res.w[BID_HIGH_128W] = sign_x ^ BID128_DEC_PI.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = BID128_DEC_PI.w[BID_LOW_128W]; } else { // Here could set UF correctly based on flags set in bid128_div res.w[BID_HIGH_128W] = z.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = z.w[BID_LOW_128W]; } BID_RETURN (res); } BIDECIMAL_CALL1 (bid128_to_binary128, zq, zabs); __bid_f128_atan(rq, zq); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); if(sign_y) { BIDECIMAL_CALL2 (bid128_sub, res, BID128_DEC_PI, res); } res.w[BID_HIGH_128W] |= sign_x; BID_RETURN (res); } LIBRARY/src/bid32_fdimd.c0000644€­ Q01134020000000570015113665770014052 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32 fdim ****************************************************************************/ /* fdim returns x - y if x > y, and +0 is x <= y Exceptions: P, O, I (U could only be unmasked, which is not supported) */ BID_TYPE_FUNCTION_ARG2(BID_UINT32, bid32_fdim, x, y) BID_UINT32 res; int cmpres; BID_FPSC tmp_fpsf = 0; // dummy fpsf for calls to comparison functions tmp_fpsf = *pfpsf; // save fpsf #if DECIMAL_CALL_BY_REFERENCE bid32_quiet_greater (&cmpres, &x, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else cmpres = bid32_quiet_greater (x, y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif *pfpsf = tmp_fpsf; // restore fpsf if (((x & MASK_NAN32) != MASK_NAN32) && ((y & MASK_NAN32) != MASK_NAN32) && !cmpres) { // if x != NaN and y != NaN and x <= y return +0 res = 0x32800000; BID_RETURN (res); } // else if x = NaN or y = NaN or x > y return x - y #if DECIMAL_CALL_BY_REFERENCE bid32_sub (&res, &x, &y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid32_sub (x, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } LIBRARY/src/bid64_erf.c0000644€­ Q01134020000000504515113665770013552 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_erf, BID_UINT64, x) // Declare local variables BID_UINT64 res; BID_F80_TYPE xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Otherwise just do the operation "naively". // We inherit the erf([-]inf) = [-]1 case from the binary function, // rather than having a special case for it. BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_erf( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } LIBRARY/src/bid128_log.c0000644€­ Q01134020000001227215113665770013640 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_10POW4464 = {BID128_LH_INIT( 0x0000000000000001ull, 0x5320000000000000ull )}; static BID_UINT128 BID128_10POWN4464 = {BID128_LH_INIT( 0x0000000000000001ull, 0x0d60000000000000ull )}; BID_F128_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F128_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 BID_F128_CONST_DEF( c_4464_ln_10, 400c4135eb3929fb, a719f2c946d2d728); // 4454*ln(10) BID128_FUNCTION_ARG1 (bid128_log, x) BID_F128_TYPE xq, rq, abs_e_bin, rt; BID_UINT128 res; int z, cmp_res; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid128_isZero, z, x); if (z) { // -Infinite and Divide by Zero according C99 res.w[BID_HIGH_128W] = 0xf800000000000000ull; res.w[BID_LOW_128W] = 0ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN(res); } if (x.w[BID_HIGH_128W] & MASK_SIGN) { // QNaN Indefinite res.w[BID_HIGH_128W] = 0x7c00000000000000ull; res.w[BID_LOW_128W] = 0ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } // Inputs too large to fit in quad. BIDECIMAL_CALL2_NORND(bid128_quiet_greater,cmp_res, x, BID128_10POW4464); if (cmp_res) { BID_UINT128 x_mod; BIDECIMAL_CALL2 (bid128_mul, x_mod, x, BID128_10POWN4464); BIDECIMAL_CALL1 (bid128_to_binary128, xq, x_mod); __bid_f128_log(rq, xq); __bid_f128_add(rq, rq, c_4464_ln_10.v); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } // Inputs so small they underflow to zero in quad. BIDECIMAL_CALL2_NORND(bid128_quiet_less,cmp_res,x,BID128_10POWN4464); if (cmp_res) { BID_UINT128 x_mod; BIDECIMAL_CALL2(bid128_mul, x_mod, x, BID128_10POW4464); BIDECIMAL_CALL1(bid128_to_binary128, xq, x_mod); __bid_f128_log(rq, xq); __bid_f128_sub(rq, rq, c_4464_ln_10.v); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } // Ordinary inputs else { BID_F128_TYPE e_bin; BIDECIMAL_CALL1 (bid128_to_binary128, xq, x); __bid_f128_log(rq, xq); __bid_f128_sub(e_bin, xq, c_one.v); __bid_f128_fabs(abs_e_bin, e_bin); if (__bid_f128_lt(abs_e_bin, c_half.v)) { BID_F128_TYPE tmp_e_bin; BID_UINT128 e; BIDECIMAL_CALL2 (bid128_sub, e, x, BID128_1); BIDECIMAL_CALL1 (bid128_to_binary128, tmp_e_bin, e); __bid_f128_sub(rt, e_bin, tmp_e_bin); __bid_f128_div(rt, rt, xq); __bid_f128_sub(rq, rq, rt); } BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } } LIBRARY/src/bid32_sinh.c0000644€­ Q01134020000000462215113665770013732 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double sinh(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_sinh, BID_UINT32, x) // Declare local variables BID_UINT32 res; double xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Convert to binary and do the operation naively BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = sinh(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } LIBRARY/src/bid128_next.c0000644€­ Q01134020000005333615113665770014043 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" /***************************************************************************** * BID128 nextup ****************************************************************************/ BID128_FUNCTION_ARG1_NORND (bid128_nextup, x) BID_UINT128 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; BID_UI64DOUBLE tmp1; int x_nr_bits; int q1, ind; BID_UINT128 C1; // C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (BID_UINT64) //BID_SWAP128 (x); // unpack the argument x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; } } else { // x is not NaN, so it must be infinity if (!x_sign) { // x is +inf res.w[1] = 0x7800000000000000ull; // +inf res.w[0] = 0x0000000000000000ull; } else { // x is -inf res.w[1] = 0xdfffed09bead87c0ull; // -MAXFP = -999...99 * 10^emax res.w[0] = 0x378d8e63ffffffffull; } } BID_RETURN (res); } // check for non-canonical values (treated as zero) if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is +/-0 res.w[1] = 0x0000000000000000ull; // +1 * 10^emin res.w[0] = 0x0000000000000001ull; } else { // x is not special and is not zero if (x.w[1] == 0x5fffed09bead87c0ull && x.w[0] == 0x378d8e63ffffffffull) { // x = +MAXFP = 999...99 * 10^emax res.w[1] = 0x7800000000000000ull; // +inf res.w[0] = 0x0000000000000000ull; } else if (x.w[1] == 0x8000000000000000ull && x.w[0] == 0x0000000000000001ull) { // x = -MINFP = 1...99 * 10^emin res.w[1] = 0x8000000000000000ull; // -0 res.w[0] = 0x0000000000000000ull; } else { // -MAXFP <= x <= -MINFP - 1 ulp OR MINFP <= x <= MAXFP - 1 ulp // can add/subtract 1 ulp to the significand // Note: we could check here if x >= 10^34 to speed up the case q1 = 34 // q1 = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rnd errors if (C1.w[0] >= 0x0000000100000000ull) { // x >= 2^32 tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // x < 2^32 tmp1.d = (double) (C1.w[0]); // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q1 = bid_nr_digits[x_nr_bits - 1].digits; if (q1 == 0) { q1 = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q1++; } // if q1 < P34 then pad the significand with zeros if (q1 < P34) { exp = (x_exp >> 49) - 6176; if (exp + 6176 > P34 - q1) { ind = P34 - q1; // 1 <= ind <= P34 - 1 // pad with P34 - q1 zeros, until exponent = emin // C1 = C1 * 10^ind if (q1 <= 19) { // 64-bit C1 if (ind <= 19) { // 64-bit 10^ind and 64-bit C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[ind]); } else { // 128-bit 10^ind and 64-bit C1 __mul_128x64_to_128 (C1, C1.w[0], bid_ten2k128[ind - 20]); } } else { // C1 is (most likely) 128-bit if (ind <= 14) { // 64-bit 10^ind and 128-bit C1 (most likely) __mul_128x64_to_128 (C1, bid_ten2k64[ind], C1); } else if (ind <= 19) { // 64-bit 10^ind and 64-bit C1 (q1 <= 19) __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[ind]); } else { // 128-bit 10^ind and 64-bit C1 (C1 must be 64-bit) __mul_128x64_to_128 (C1, C1.w[0], bid_ten2k128[ind - 20]); } } x_exp = x_exp - ((BID_UINT64) ind << 49); } else { // pad with zeros until the exponent reaches emin ind = exp + 6176; // C1 = C1 * 10^ind if (ind <= 19) { // 1 <= P34 - q1 <= 19 <=> 15 <= q1 <= 33 if (q1 <= 19) { // 64-bit C1, 64-bit 10^ind __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[ind]); } else { // 20 <= q1 <= 33 => 128-bit C1, 64-bit 10^ind __mul_128x64_to_128 (C1, bid_ten2k64[ind], C1); } } else { // if 20 <= P34 - q1 <= 33 <=> 1 <= q1 <= 14 => // 64-bit C1, 128-bit 10^ind __mul_128x64_to_128 (C1, C1.w[0], bid_ten2k128[ind - 20]); } x_exp = EXP_MIN; } } if (!x_sign) { // x > 0 // add 1 ulp (add 1 to the significand) C1.w[0]++; if (C1.w[0] == 0) C1.w[1]++; if (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] == 0x378d8e6400000000ull) { // if C1 = 10^34 C1.w[1] = 0x0000314dc6448d93ull; // C1 = 10^33 C1.w[0] = 0x38c15b0a00000000ull; x_exp = x_exp + EXP_P1; } } else { // x < 0 // subtract 1 ulp (subtract 1 from the significand) C1.w[0]--; if (C1.w[0] == 0xffffffffffffffffull) C1.w[1]--; if (x_exp != 0 && C1.w[1] == 0x0000314dc6448d93ull && C1.w[0] == 0x38c15b09ffffffffull) { // if C1 = 10^33 - 1 C1.w[1] = 0x0001ed09bead87c0ull; // C1 = 10^34 - 1 C1.w[0] = 0x378d8e63ffffffffull; x_exp = x_exp - EXP_P1; } } // assemble the result res.w[1] = x_sign | x_exp | C1.w[1]; res.w[0] = C1.w[0]; } // end -MAXFP <= x <= -MINFP - 1 ulp OR MINFP <= x <= MAXFP - 1 ulp } // end x is not special and is not zero BID_RETURN (res); } /***************************************************************************** * BID128 nextdown ****************************************************************************/ BID128_FUNCTION_ARG1_NORND (bid128_nextdown, x) BID_UINT128 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; BID_UI64DOUBLE tmp1; int x_nr_bits; int q1, ind; BID_UINT128 C1; // C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (BID_UINT64) //BID_SWAP128 (x); // unpack the argument x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; } } else { // x is not NaN, so it must be infinity if (!x_sign) { // x is +inf res.w[1] = 0x5fffed09bead87c0ull; // +MAXFP = +999...99 * 10^emax res.w[0] = 0x378d8e63ffffffffull; } else { // x is -inf res.w[1] = 0xf800000000000000ull; // -inf res.w[0] = 0x0000000000000000ull; } } BID_RETURN (res); } // check for non-canonical values (treated as zero) if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is +/-0 res.w[1] = 0x8000000000000000ull; // -1 * 10^emin res.w[0] = 0x0000000000000001ull; } else { // x is not special and is not zero if (x.w[1] == 0xdfffed09bead87c0ull && x.w[0] == 0x378d8e63ffffffffull) { // x = -MAXFP = -999...99 * 10^emax res.w[1] = 0xf800000000000000ull; // -inf res.w[0] = 0x0000000000000000ull; } else if (x.w[1] == 0x0ull && x.w[0] == 0x0000000000000001ull) { // +MINFP res.w[1] = 0x0000000000000000ull; // +0 res.w[0] = 0x0000000000000000ull; } else { // -MAXFP <= x <= -MINFP - 1 ulp OR MINFP <= x <= MAXFP - 1 ulp // can add/subtract 1 ulp to the significand // Note: we could check here if x >= 10^34 to speed up the case q1 = 34 // q1 = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rnd errors if (C1.w[0] >= 0x0000000100000000ull) { // x >= 2^32 tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // x < 2^32 tmp1.d = (double) (C1.w[0]); // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q1 = bid_nr_digits[x_nr_bits - 1].digits; if (q1 == 0) { q1 = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q1++; } // if q1 < P then pad the significand with zeros if (q1 < P34) { exp = (x_exp >> 49) - 6176; if (exp + 6176 > P34 - q1) { ind = P34 - q1; // 1 <= ind <= P34 - 1 // pad with P34 - q1 zeros, until exponent = emin // C1 = C1 * 10^ind if (q1 <= 19) { // 64-bit C1 if (ind <= 19) { // 64-bit 10^ind and 64-bit C1 __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[ind]); } else { // 128-bit 10^ind and 64-bit C1 __mul_128x64_to_128 (C1, C1.w[0], bid_ten2k128[ind - 20]); } } else { // C1 is (most likely) 128-bit if (ind <= 14) { // 64-bit 10^ind and 128-bit C1 (most likely) __mul_128x64_to_128 (C1, bid_ten2k64[ind], C1); } else if (ind <= 19) { // 64-bit 10^ind and 64-bit C1 (q1 <= 19) __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[ind]); } else { // 128-bit 10^ind and 64-bit C1 (C1 must be 64-bit) __mul_128x64_to_128 (C1, C1.w[0], bid_ten2k128[ind - 20]); } } x_exp = x_exp - ((BID_UINT64) ind << 49); } else { // pad with zeros until the exponent reaches emin ind = exp + 6176; // C1 = C1 * 10^ind if (ind <= 19) { // 1 <= P34 - q1 <= 19 <=> 15 <= q1 <= 33 if (q1 <= 19) { // 64-bit C1, 64-bit 10^ind __mul_64x64_to_128MACH (C1, C1.w[0], bid_ten2k64[ind]); } else { // 20 <= q1 <= 33 => 128-bit C1, 64-bit 10^ind __mul_128x64_to_128 (C1, bid_ten2k64[ind], C1); } } else { // if 20 <= P34 - q1 <= 33 <=> 1 <= q1 <= 14 => // 64-bit C1, 128-bit 10^ind __mul_128x64_to_128 (C1, C1.w[0], bid_ten2k128[ind - 20]); } x_exp = EXP_MIN; } } if (x_sign) { // x < 0 // add 1 ulp (add 1 to the significand) C1.w[0]++; if (C1.w[0] == 0) C1.w[1]++; if (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] == 0x378d8e6400000000ull) { // if C1 = 10^34 C1.w[1] = 0x0000314dc6448d93ull; // C1 = 10^33 C1.w[0] = 0x38c15b0a00000000ull; x_exp = x_exp + EXP_P1; } } else { // x > 0 // subtract 1 ulp (subtract 1 from the significand) C1.w[0]--; if (C1.w[0] == 0xffffffffffffffffull) C1.w[1]--; if (x_exp != 0 && C1.w[1] == 0x0000314dc6448d93ull && C1.w[0] == 0x38c15b09ffffffffull) { // if C1 = 10^33 - 1 C1.w[1] = 0x0001ed09bead87c0ull; // C1 = 10^34 - 1 C1.w[0] = 0x378d8e63ffffffffull; x_exp = x_exp - EXP_P1; } } // assemble the result res.w[1] = x_sign | x_exp | C1.w[1]; res.w[0] = C1.w[0]; } // end -MAXFP <= x <= -MINFP - 1 ulp OR MINFP <= x <= MAXFP - 1 ulp } // end x is not special and is not zero BID_RETURN (res); } /***************************************************************************** * BID128 nextafter ****************************************************************************/ BID128_FUNCTION_ARG2_NORND (bid128_nextafter, x, y) BID_UINT128 xnswp = x; BID_UINT128 ynswp = y; BID_UINT128 res; BID_UINT128 tmp1, tmp2, tmp3; BID_FPSC tmp_fpsf = 0; // dummy fpsf for calls to comparison functions int res1, res2; BID_UINT64 x_exp; BID_SWAP128 (xnswp); BID_SWAP128 (ynswp); // check for NaNs if (((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) || ((y.w[1] & MASK_SPECIAL) == MASK_SPECIAL)) { // x is special or y is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } } BID_RETURN (res) } else if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((y.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((y.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (y.w[0] > 0x38c15b09ffffffffull))) { y.w[1] = y.w[1] & 0xffffc00000000000ull; y.w[0] = 0x0ull; } if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = y.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = y.w[0]; } else { // x is QNaN // return x res.w[1] = y.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = y.w[0]; } BID_RETURN (res) } else { // at least one is infinity if ((x.w[1] & MASK_ANY_INF) == MASK_INF) { // x = inf x.w[1] = x.w[1] & (MASK_SIGN | MASK_INF); x.w[0] = 0x0ull; } if ((y.w[1] & MASK_ANY_INF) == MASK_INF) { // y = inf y.w[1] = y.w[1] & (MASK_SIGN | MASK_INF); y.w[0] = 0x0ull; } } } // neither x nor y is NaN // if not infinity, check for non-canonical values x (treated as zero) if ((x.w[1] & MASK_ANY_INF) != MASK_INF) { // x != inf if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits x.w[1] = (x.w[1] & MASK_SIGN) | x_exp; x.w[0] = 0x0ull; } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if ((x.w[1] & MASK_COEFF) > 0x0001ed09bead87c0ull || ((x.w[1] & MASK_COEFF) == 0x0001ed09bead87c0ull && x.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 x.w[1] = (x.w[1] & MASK_SIGN) | x_exp; x.w[0] = 0x0ull; } else { // canonical ; } } } // no need to check for non-canonical y // neither x nor y is NaN tmp_fpsf = *pfpsf; // save fpsf #if DECIMAL_CALL_BY_REFERENCE bid128_quiet_equal (&res1, &xnswp, &ynswp _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_quiet_greater (&res2, &xnswp, &ynswp _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res1 = bid128_quiet_equal (xnswp, ynswp _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res2 = bid128_quiet_greater (xnswp, ynswp _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif *pfpsf = tmp_fpsf; // restore fpsf if (res1) { // x = y // return x with the sign of y res.w[1] = (x.w[1] & 0x7fffffffffffffffull) | (y. w[1] & 0x8000000000000000ull); res.w[0] = x.w[0]; } else if (res2) { // x > y #if DECIMAL_CALL_BY_REFERENCE bid128_nextdown (&res, &xnswp _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid128_nextdown (xnswp _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_SWAP128 (res); } else { // x < y #if DECIMAL_CALL_BY_REFERENCE bid128_nextup (&res, &xnswp _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid128_nextup (xnswp _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_SWAP128 (res); } // if the operand x is finite but the result is infinite, signal // overflow and inexact if (((x.w[1] & MASK_SPECIAL) != MASK_SPECIAL) && ((res.w[1] & MASK_SPECIAL) == MASK_SPECIAL)) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; } // if the result is in (-10^emin, 10^emin), and is different from the // operand x, signal underflow and inexact tmp1.w[BID_HIGH_128W] = 0x0000314dc6448d93ull; tmp1.w[BID_LOW_128W] = 0x38c15b0a00000000ull; // +100...0[34] * 10^emin tmp2.w[BID_HIGH_128W] = res.w[1] & 0x7fffffffffffffffull; tmp2.w[BID_LOW_128W] = res.w[0]; tmp3.w[BID_HIGH_128W] = res.w[1]; tmp3.w[BID_LOW_128W] = res.w[0]; tmp_fpsf = *pfpsf; // save fpsf #if DECIMAL_CALL_BY_REFERENCE bid128_quiet_greater (&res1, &tmp1, &tmp2 _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_quiet_not_equal (&res2, &xnswp, &tmp3 _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res1 = bid128_quiet_greater (tmp1, tmp2 _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res2 = bid128_quiet_not_equal (xnswp, tmp3 _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif *pfpsf = tmp_fpsf; // restore fpsf if (res1 && res2) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the underflow flag *pfpsf |= BID_UNDERFLOW_EXCEPTION; } BID_RETURN (res); } LIBRARY/src/bid32_compare.c0000644€­ Q01134020000026020415113665770014417 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" static const BID_UINT32 bid_mult_factor[7] = { 1, 10, 100, 1000, 10000, 100000, 1000000 }; BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_equal, BID_UINT32, x, y) int res; int exp_x, exp_y, exp_t; BID_UINT32 sig_x, sig_y, sig_t; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y, lcv; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equivalent. if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if (((x & MASK_INF32) == MASK_INF32) && ((y & MASK_INF32) == MASK_INF32)) { res = (((x ^ y) & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // ONE INFINITY (CASE3') if (((x & MASK_INF32) == MASK_INF32) || ((y & MASK_INF32) == MASK_INF32)) { res = 0; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } else if ((x_is_zero && !y_is_zero) || (!x_is_zero && y_is_zero)) { res = 0; BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ => not equal : return 0 if ((x ^ y) & MASK_SIGN32) { res = 0; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) if (exp_x > exp_y) { // to simplify the loop below, SWAP (exp_x, exp_y, exp_t); // put the larger exp in y, SWAP (sig_x, sig_y, sig_t); // and the smaller exp in x } if (exp_y - exp_x > 6) { res = 0; // difference cannot be greater than 10^6 BID_RETURN (res); } for (lcv = 0; lcv < (exp_y - exp_x); lcv++) { // recalculate y's significand upwards sig_y = sig_y * 10; if (sig_y > 9999999) { res = 0; BID_RETURN (res); } } res = (sig_y == sig_x); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_greater, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, rather than equal : // return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x & MASK_SIGN32) == MASK_SIGN32)) { res = 0; BID_RETURN (res); } else { // x is pos infinity, it is greater, unless y is positive // infinity => return y!=pos_infinity res = (((y & MASK_INF32) != MASK_INF32) || ((y & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: //(+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater //(ZERO x 10^A == ZERO x 10^B) for any valid A, B => therefore ignore the // exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } else if (x_is_zero) { // is x is zero, it is greater if Y is negative res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } else if (y_is_zero) { // is y is zero, X is greater if it is positive res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x > exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x < exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { // difference cannot be greater than 10^6 if (x & MASK_SIGN32) // if both are negative res = 0; else // if both are positive res = 1; BID_RETURN (res); } // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { if (x & MASK_SIGN32) // if both are negative res = 1; else // if both are positive res = 0; BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // if postitive, return whichever significand is larger (converse if neg.) if (sig_n_prime == sig_y) { res = 0; BID_RETURN (res); } res = ((sig_n_prime > sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime == sig_x) { res = 0; BID_RETURN (res); } res = ((sig_x > sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_greater_equal, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 1 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN (res) } if ((x & MASK_SIGN32) == MASK_SIGN32) { // x is -inf, so it is less than y unless y is -inf res = (((y & MASK_INF32) == MASK_INF32) && (y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } else { // x is pos_inf, no way for it to be less than y res = 1; BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so: // if y is +inf, xy res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, they are equal res = 1; BID_RETURN (res); } else if (x_is_zero) { // if x is zero, it is lessthan if Y is positive res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } else if (y_is_zero) { // if y is zero, X is less if it is negative res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); // difference cannot be greater than 10^6 BID_RETURN (res); } // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 1 if values are equal if (sig_n_prime == sig_y) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) != MASK_SIGN32)); BID_RETURN (res); } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 0 if values are equal if (sig_n_prime == sig_x) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) != MASK_SIGN32)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_greater_unordered, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, rather than equal : // return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x & MASK_SIGN32) == MASK_SIGN32)) { res = 0; BID_RETURN (res); } else { // x is pos infinity, it is greater, unless y is positive infinity => // return y!=pos_infinity res = (((y & MASK_INF32) != MASK_INF32) || ((y & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } else if (x_is_zero) { // is x is zero, it is greater if Y is negative res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } else if (y_is_zero) { // is y is zero, X is greater if it is positive res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { // difference cannot be greater than 10^6 res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime == sig_y) { res = 0; BID_RETURN (res); } res = ((sig_n_prime > sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // if postitive, return whichever significand is larger (converse if negative) if (sig_n_prime == sig_x) { res = 0; BID_RETURN (res); } res = ((sig_x > sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_less, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x==neg_inf, { res = (y == neg_inf)?0:1; BID_RETURN (res) } if ((x & MASK_SIGN32) == MASK_SIGN32) { // x is -inf, so it is less than y unless y is -inf res = (((y & MASK_INF32) != MASK_INF32) || (y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } else { // x is pos_inf, no way for it to be less than y res = 0; BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so: // if y is +inf, xy res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, they are equal res = 0; BID_RETURN (res); } else if (x_is_zero) { // if x is zero, it is lessthan if Y is positive res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } else if (y_is_zero) { // if y is zero, X is less if it is negative res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); // difference cannot be greater than 10^6 BID_RETURN (res); } // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 0 if values are equal if (sig_n_prime == sig_y) { res = 0; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 0 if values are equal if (sig_n_prime == sig_x) { res = 0; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_less_equal, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, rather than equal : // return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (LESSEQUAL). if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { if (((x & MASK_SIGN32) == MASK_SIGN32)) { // if x is neg infinity, it must be lessthan or equal to y return 1 res = 1; BID_RETURN (res); } else { // x is pos infinity, it is greater, unless y is positive infinity => // return y==pos_infinity res = !(((y & MASK_INF32) != MASK_INF32) || ((y & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so if y is positive infinity, then x is less, return 1 // if y is negative infinity, then x is greater, return 0 res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, they are equal -> return 1 res = 1; BID_RETURN (res); } else if (x_is_zero) { // if x is zero, it is lessthan if Y is positive res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } else if (y_is_zero) { // if y is zero, X is less if it is negative res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); // difference cannot be greater than 10^6 BID_RETURN (res); } // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 1 if values are equal if (sig_n_prime == sig_y) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 1 if values are equal if (sig_n_prime == sig_x) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_less_unordered, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x==neg_inf, { res = (y == neg_inf)?0:1; BID_RETURN (res) } if ((x & MASK_SIGN32) == MASK_SIGN32) { // x is -inf, so it is less than y unless y is -inf res = (((y & MASK_INF32) != MASK_INF32) || (y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } else { // x is pos_inf, no way for it to be less than y res = 0; BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so: // if y is +inf, xy res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, they are equal res = 0; BID_RETURN (res); } else if (x_is_zero) { // if x is zero, it is lessthan if Y is positive res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } else if (y_is_zero) { // if y is zero, X is less if it is negative res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); // difference cannot be greater than 10^6 BID_RETURN (res); } // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 0 if values are equal if (sig_n_prime == sig_y) { res = 0; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 0 if values are equal if (sig_n_prime == sig_x) { res = 0; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_not_equal, BID_UINT32, x, y) int res; int exp_x, exp_y, exp_t; BID_UINT32 sig_x, sig_y, sig_t; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y, lcv; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 1 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equivalent. if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if (((x & MASK_INF32) == MASK_INF32) && ((y & MASK_INF32) == MASK_INF32)) { res = (((x ^ y) & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // ONE INFINITY (CASE3') if (((x & MASK_INF32) == MASK_INF32) || ((y & MASK_INF32) == MASK_INF32)) { res = 1; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } else if ((x_is_zero && !y_is_zero) || (!x_is_zero && y_is_zero)) { res = 1; BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ => not equal : return 1 if ((x ^ y) & MASK_SIGN32) { res = 1; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) if (exp_x > exp_y) { // to simplify the loop below, SWAP (exp_x, exp_y, exp_t); // put the larger exp in y, SWAP (sig_x, sig_y, sig_t); // and the smaller exp in x } if (exp_y - exp_x > 6) { res = 1; BID_RETURN (res); } // difference cannot be greater than 10^16 for (lcv = 0; lcv < (exp_y - exp_x); lcv++) { // recalculate y's significand upwards sig_y = sig_y * 10; if (sig_y > 9999999) { res = 1; BID_RETURN (res); } } { res = sig_y != sig_x; BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_not_greater, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (LESSEQUAL). if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x is neg infinity, it must be lessthan or equal to y return 1 if (((x & MASK_SIGN32) == MASK_SIGN32)) { res = 1; BID_RETURN (res); } // x is pos infinity, it is greater, unless y is positive // infinity => return y==pos_infinity else { res = !(((y & MASK_INF32) != MASK_INF32) || ((y & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so if y is positive infinity, then x is less, return 1 // if y is negative infinity, then x is greater, return 0 { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither // number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal -> return 1 if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // difference cannot be greater than 10^6 // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 1 if values are equal if (sig_n_prime == sig_y) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 1 if values are equal if (sig_n_prime == sig_x) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_not_less, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 1 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN (res) } if ((x & MASK_SIGN32) == MASK_SIGN32) // x is -inf, so it is less than y unless y is -inf { res = (((y & MASK_INF32) == MASK_INF32) && (y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } else // x is pos_inf, no way for it to be less than y { res = 1; BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so: // if y is +inf, xy { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither // number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // difference cannot be greater than 10^6 // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 0 if values are equal if (sig_n_prime == sig_y) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) != MASK_SIGN32)); BID_RETURN (res); } } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 0 if values are equal if (sig_n_prime == sig_x) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) != MASK_SIGN32)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_ordered, BID_UINT32, x, y) int res; // NaN (CASE1) // if either number is NAN, the comparison is ordered, rather than equal : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 0; BID_RETURN (res); } else { res = 1; BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_quiet_unordered, BID_UINT32, x, y) int res; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { if ((x & MASK_SNAN32) == MASK_SNAN32 || (y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if sNaN } res = 1; BID_RETURN (res); } else { res = 0; BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_signaling_greater, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x & MASK_SIGN32) == MASK_SIGN32)) { res = 0; BID_RETURN (res); } // x is pos infinity, it is greater, // unless y is positive infinity => return y!=pos_infinity else { res = (((y & MASK_INF32) != MASK_INF32) || ((y & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // difference cannot be greater than 10^6 // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime == sig_y) { res = 0; BID_RETURN (res); } { res = ((sig_n_prime > sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime == sig_x) { res = 0; BID_RETURN (res); } { res = ((sig_x > sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_signaling_greater_equal, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 1 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN (res) } if ((x & MASK_SIGN32) == MASK_SIGN32) // x is -inf, so it is less than y unless y is -inf { res = (((y & MASK_INF32) == MASK_INF32) && (y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } else // x is pos_inf, no way for it to be less than y { res = 1; BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so: // if y is +inf, xy { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // difference cannot be greater than 10^6 // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 1 if values are equal if (sig_n_prime == sig_y) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) != MASK_SIGN32)); BID_RETURN (res); } } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 0 if values are equal if (sig_n_prime == sig_x) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) != MASK_SIGN32)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_signaling_greater_unordered, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x is neg infinity, there is no way it is greater than y, return 0 if (((x & MASK_SIGN32) == MASK_SIGN32)) { res = 0; BID_RETURN (res); } // x is pos infinity, it is greater, // unless y is positive infinity => return y!=pos_infinity else { res = (((y & MASK_INF32) != MASK_INF32) || ((y & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so if y is positive infinity, then x is less, return 0 // if y is negative infinity, then x is greater, return 1 { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, neither is greater => return NOTGREATERTHAN if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } // is x is zero, it is greater if Y is negative else if (x_is_zero) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // is y is zero, X is greater if it is positive else if (y_is_zero) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // difference cannot be greater than 10^6 // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime == sig_y) { res = 0; BID_RETURN (res); } { res = ((sig_n_prime > sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime == sig_x) { res = 0; BID_RETURN (res); } { res = ((sig_x > sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_signaling_less, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x==neg_inf, { res = (y == neg_inf)?0:1; BID_RETURN (res) } if ((x & MASK_SIGN32) == MASK_SIGN32) // x is -inf, so it is less than y unless y is -inf { res = (((y & MASK_INF32) != MASK_INF32) || (y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } else // x is pos_inf, no way for it to be less than y { res = 0; BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so: // if y is +inf, xy { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // difference cannot be greater than 10^6 // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 0 if values are equal if (sig_n_prime == sig_y) { res = 0; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 0 if values are equal if (sig_n_prime == sig_x) { res = 0; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_signaling_less_equal, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 0; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (LESSEQUAL). if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x is neg infinity, it must be lessthan or equal to y return 1 if (((x & MASK_SIGN32) == MASK_SIGN32)) { res = 1; BID_RETURN (res); } // x is pos infinity, it is greater, // unless y is positive infinity => return y==pos_infinity else { res = !(((y & MASK_INF32) != MASK_INF32) || ((y & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so if y is positive infinity, then x is less, return 1 // if y is negative infinity, then x is greater, return 0 { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal -> return 1 if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // difference cannot be greater than 10^6 // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 1 if values are equal if (sig_n_prime == sig_y) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 1 if values are equal if (sig_n_prime == sig_x) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_signaling_less_unordered, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 0; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x==neg_inf, { res = (y == neg_inf)?0:1; BID_RETURN (res) } if ((x & MASK_SIGN32) == MASK_SIGN32) // x is -inf, so it is less than y unless y is -inf { res = (((y & MASK_INF32) != MASK_INF32) || (y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } else // x is pos_inf, no way for it to be less than y { res = 0; BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so: // if y is +inf, xy { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal if (x_is_zero && y_is_zero) { res = 0; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // difference cannot be greater than 10^6 // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 0 if values are equal if (sig_n_prime == sig_y) { res = 0; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 0 if values are equal if (sig_n_prime == sig_x) { res = 0; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_signaling_not_greater, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered, // rather than equal : return 0 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (LESSEQUAL). if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x is neg infinity, it must be lessthan or equal to y return 1 if (((x & MASK_SIGN32) == MASK_SIGN32)) { res = 1; BID_RETURN (res); } // x is pos infinity, it is greater, // unless y is positive infinity => return y==pos_infinity else { res = !(((y & MASK_INF32) != MASK_INF32) || ((y & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so if y is positive infinity, then x is less, return 1 // if y is negative infinity, then x is greater, return 0 { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal -> return 1 if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // difference cannot be greater than 10^6 // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 1 if values are equal if (sig_n_prime == sig_y) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 1 if values are equal if (sig_n_prime == sig_x) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)); BID_RETURN (res); } } BID_TYPE_FUNCTION_ARG2_CUSTOMRESULT_NORND(int, bid32_signaling_not_less, BID_UINT32, x, y) int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0, non_canon_x, non_canon_y; // NaN (CASE1) // if either number is NAN, the comparison is unordered : return 1 if (((x & MASK_NAN32) == MASK_NAN32) || ((y & MASK_NAN32) == MASK_NAN32)) { *pfpsf |= BID_INVALID_EXCEPTION; // set invalid exception if NaN res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x==neg_inf, { res = (y == neg_inf)?1:0; BID_RETURN (res) } if ((x & MASK_SIGN32) == MASK_SIGN32) // x is -inf, so it is less than y unless y is -inf { res = (((y & MASK_INF32) == MASK_INF32) && (y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } else // x is pos_inf, no way for it to be less than y { res = 1; BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so: // if y is +inf, xy { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999) { non_canon_x = 1; } else { non_canon_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); non_canon_x = 0; } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999) { non_canon_y = 1; } else { non_canon_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); non_canon_y = 0; } // ZERO (CASE4) // some properties: // (+ZERO==-ZERO) => therefore ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // therefore ignore the exponent field // (Any non-canonical # is considered 0) if (non_canon_x || sig_x == 0) { x_is_zero = 1; } if (non_canon_y || sig_y == 0) { y_is_zero = 1; } // if both numbers are zero, they are equal if (x_is_zero && y_is_zero) { res = 1; BID_RETURN (res); } // if x is zero, it is lessthan if Y is positive else if (x_is_zero) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if y is zero, X is less if it is negative else if (y_is_zero) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is less than if y is positive if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // difference cannot be greater than 10^6 // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // return 0 if values are equal if (sig_n_prime == sig_y) { res = 1; BID_RETURN (res); } // if postitive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_n_prime < sig_y) ^ ((x & MASK_SIGN32) != MASK_SIGN32)); BID_RETURN (res); } } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // return 0 if values are equal if (sig_n_prime == sig_x) { res = 1; BID_RETURN (res); } // if positive, return whichever significand abs is smaller // (converse if negative) { res = ((sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) != MASK_SIGN32)); BID_RETURN (res); } } LIBRARY/src/bid64_expm1.c0000644€­ Q01134020000000467315113665770014036 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_expm1, BID_UINT64, x) // Declare local variables BID_UINT64 res; BID_F80_TYPE xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Convert to binary and do the operation "naively" BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_expm1( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } LIBRARY/src/bid128_to_uint64.c0000644€­ Q01134020000036002215113665770014711 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" /***************************************************************************** * BID128_to_uint64_rnint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_UINT64, bid128_to_uint64_rnint, x) BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 // if n < -1/2 then n cannot be converted to uint64 with RN // too large if c(0)c(1)...c(19).c(20)...c(q-1) > 1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^21 > 0x05, 1<=q<=34 // <=> C * 10^(21-q) > 0x05, 1<=q<=34 if (q == 21) { // C > 5 if (C1.w[1] != 0 || C1.w[0] > 0x05ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to 64-bit unsigned int fall through // to '1 <= q + exp <= 20' } else { // if 1 <= q <= 20 // C * 10^(21-q) > 5 is true because C >= 1 and 10^(21-q) >= 10 // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C > 5 * 10^(q-21) is true because C > 2^64 and 5*10^(q-21) < 2^64 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=34 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, C1.w[0], bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q <= 19) { // C * 10^(21-q) >= 0x9fffffffffffffffb __mul_64x64_to_128MACH (C, C1.w[0], bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 20) { // C * 10 >= 0x9fffffffffffffffb <=> C * 2 > 1ffffffffffffffff C.w[0] = C1.w[0] + C1.w[0]; C.w[1] = C1.w[1] + C1.w[1]; if (C.w[0] < C1.w[0]) C.w[1]++; if (C.w[1] > 0x01 || (C.w[1] == 0x01 && C.w[0] >= 0xffffffffffffffffull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 21) { // C >= 0x9fffffffffffffffb if (C1.w[1] > 0x09 || (C1.w[1] == 0x09 && C1.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= 10^(q-21) * 0x9fffffffffffffffb max 44 bits x 68 bits C.w[1] = 0x09; C.w[0] = 0xfffffffffffffffbull; __mul_128x64_to_128 (C, bid_ten2k64[q - 21], C); if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 <= n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] <= bid_midpoint64[ind])) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] <= bid_midpoint128[ind - 19].w[0]))) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; } } } else { // if (1 <= q + exp <= 20, 1 <= q <= 34, -33 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even } // else MP in [ODD, EVEN] } res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 20, but x < 2^64 - 1/2 so in this case C1.w[1] has to be 0 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 19, 1 <= q < 19, 2 <= q + exp <= 20 // res = C * 10^exp (exact) - must fit in 64 bits res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint64_xrnint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_UINT64, bid128_to_uint64_xrnint, x) BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 // if n < -1/2 then n cannot be converted to uint64 with RN // too large if c(0)c(1)...c(19).c(20)...c(q-1) > 1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^21 > 0x05, 1<=q<=34 // <=> C * 10^(21-q) > 0x05, 1<=q<=34 if (q == 21) { // C > 5 if (C1.w[1] != 0 || C1.w[0] > 0x05ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to 64-bit unsigned int fall through // to '1 <= q + exp <= 20' } else { // if 1 <= q <= 20 // C * 10^(21-q) > 5 is true because C >= 1 and 10^(21-q) >= 10 // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C > 5 * 10^(q-21) is true because C > 2^64 and 5*10^(q-21) < 2^64 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=34 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, C1.w[0], bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q <= 19) { // C * 10^(21-q) >= 0x9fffffffffffffffb __mul_64x64_to_128MACH (C, C1.w[0], bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 20) { // C * 10 >= 0x9fffffffffffffffb <=> C * 2 > 1ffffffffffffffff C.w[0] = C1.w[0] + C1.w[0]; C.w[1] = C1.w[1] + C1.w[1]; if (C.w[0] < C1.w[0]) C.w[1]++; if (C.w[1] > 0x01 || (C.w[1] == 0x01 && C.w[0] >= 0xffffffffffffffffull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 21) { // C >= 0x9fffffffffffffffb if (C1.w[1] > 0x09 || (C1.w[1] == 0x09 && C1.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= 10^(q-21) * 0x9fffffffffffffffb max 44 bits x 68 bits C.w[1] = 0x09; C.w[0] = 0xfffffffffffffffbull; __mul_128x64_to_128 (C, bid_ten2k64[q - 21], C); if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 <= n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] <= bid_midpoint64[ind])) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN_VAL (res); } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] <= bid_midpoint128[ind - 19].w[0]))) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; BID_RETURN_VAL (res); } } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 20, 1 <= q <= 34, -33 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[3] == 0) && (fstar.w[2] == 0) && (fstar.w[1] || fstar.w[0]) && (fstar.w[1] < bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[0]))) { // the result is a midpoint; round to nearest if (Cstar.w[0] & 0x01) { // Cstar.w[0] is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar.w[0]--; // Cstar.w[0] is now even } // else MP in [ODD, EVEN] } res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 20, but x < 2^64 - 1/2 so in this case C1.w[1] has to be 0 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 19, 1 <= q < 19, 2 <= q + exp <= 20 // res = C * 10^exp (exact) - must fit in 64 bits res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint64_floor ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_UINT64, bid128_to_uint64_floor, x) BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // if n < 0 then n cannot be converted to uint64 with RM if (x_sign) { // if n < 0 and q + exp = 20 // too large if c(0)c(1)...c(19).c(20)...c(q-1) > 0 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' // if n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*2^65 // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=34 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, C1.w[0], bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q <= 19) { // C * 10^(21-q) >= 0xa0000000000000000 __mul_64x64_to_128MACH (C, C1.w[0], bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 20) { // C >= 0x10000000000000000 if (C1.w[1] >= 0x01) { // actually C1.w[1] == 0x01 && C1.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 21) { // C >= 0xa0000000000000000 if (C1.w[1] >= 0x0a) { // actually C1.w[1] == 0x0a && C1.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= 10^(q-21) * 0xa0000000000000000 max 44 bits x 68 bits C.w[1] = 0x0a; C.w[0] = 0x0000000000000000ull; __mul_128x64_to_128 (C, bid_ten2k64[q - 21], C); if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } // n is not too large to be converted to int64 if 0 <= n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 34, -33 <= exp <= 19) // 1 <= x < 2^64 so x can be rounded // down to a 64-bit unsigned signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 20, but x < 2^64 - 1/2 so in this case C1.w[1] has to be 0 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 19, 1 <= q < 19, 2 <= q + exp <= 20 // res = C * 10^exp (exact) - must fit in 64 bits res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint64_xfloor ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_UINT64, bid128_to_uint64_xfloor, x) BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // if n < 0 then n cannot be converted to uint64 with RM if (x_sign) { // if n < 0 and q + exp = 20 // too large if c(0)c(1)...c(19).c(20)...c(q-1) > 0 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' // if n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*2^65 // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=34 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, C1.w[0], bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q <= 19) { // C * 10^(21-q) >= 0xa0000000000000000 __mul_64x64_to_128MACH (C, C1.w[0], bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 20) { // C >= 0x10000000000000000 if (C1.w[1] >= 0x01) { // actually C1.w[1] == 0x01 && C1.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 21) { // C >= 0xa0000000000000000 if (C1.w[1] >= 0x0a) { // actually C1.w[1] == 0x0a && C1.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= 10^(q-21) * 0xa0000000000000000 max 44 bits x 68 bits C.w[1] = 0x0a; C.w[0] = 0x0000000000000000ull; __mul_128x64_to_128 (C, bid_ten2k64[q - 21], C); if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } // n is not too large to be converted to int64 if 0 <= n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 34, -33 <= exp <= 19) // 1 <= x < 2^64 so x can be rounded // down to a 64-bit unsigned signed integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 22 <= ind <= 33 if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 20, but x < 2^64 - 1/2 so in this case C1.w[1] has to be 0 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 19, 1 <= q < 19, 2 <= q + exp <= 20 // res = C * 10^exp (exact) - must fit in 64 bits res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint64_ceil ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_UINT64, bid128_to_uint64_ceil, x) BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 // if n <= -1 then n cannot be converted to uint64 with RZ // too large if c(0)c(1)...c(19).c(20)...c(q-1) >= 1 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 0x0a, 1<=q<=34 // <=> C * 10^(21-q) >= 0x0a, 1<=q<=34 if (q == 21) { // C >= a if (C1.w[1] != 0 || C1.w[0] >= 0x0aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to 64-bit unsigned int fall through // to '1 <= q + exp <= 20' } else { // if 1 <= q <= 20 // C * 10^(21-q) >= a is true because C >= 1 and 10^(21-q) >= 10 // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= a * 10^(q-21) is true because C > 2^64 and a*10^(q-21) < 2^64 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } else { // if n > 0 and q + exp = 20 // if n > 2^64 - 1 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) > 2^64 - 1 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 > 2^64 - 1 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 > 10 * (2^64 - 1) // <=> C * 10^(21-q) > 0x9fffffffffffffff6, 1<=q<=34 if (q == 1) { // C * 10^20 > 0x9fffffffffffffff6 __mul_128x64_to_128 (C, C1.w[0], bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q <= 19) { // C * 10^(21-q) > 0x9fffffffffffffff6 __mul_64x64_to_128MACH (C, C1.w[0], bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 20) { // C > 0xffffffffffffffff if (C1.w[1]) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 21) { // C > 0x9fffffffffffffff6 if (C1.w[1] > 0x09 || (C1.w[1] == 0x09 && C1.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C > 10^(q-21) * 0x9fffffffffffffff6 max 44 bits x 68 bits C.w[1] = 0x09; C.w[0] = 0xfffffffffffffff6ull; __mul_128x64_to_128 (C, bid_ten2k64[q - 21], C); if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n <= 2^64 - 1 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 or 1 if (x_sign) res = 0x0000000000000000ull; else res = 0x0000000000000001ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 34, -33 <= exp <= 19) // x <= -1 or 1 <= x < 2^64 so if positive x can be rounded // to zero to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // 1 <= x <= 2^64 - 1 so x can be rounded // to zero to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result is positive and inexact, need to add 1 to it // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } } // else the result is exact } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } } // else the result is exact } else { // if 22 <= ind <= 33 if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } } // else the result is exact } res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 20, but x < 2^64 - 1/2 so in this case C1.w[1] has to be 0 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 19, 1 <= q < 19, 2 <= q + exp <= 20 // res = C * 10^exp (exact) - must fit in 64 bits res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint64_xceil ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_UINT64, bid128_to_uint64_xceil, x) BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 // if n <= -1 then n cannot be converted to uint64 with RZ // too large if c(0)c(1)...c(19).c(20)...c(q-1) >= 1 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 0x0a, 1<=q<=34 // <=> C * 10^(21-q) >= 0x0a, 1<=q<=34 if (q == 21) { // C >= a if (C1.w[1] != 0 || C1.w[0] >= 0x0aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to 64-bit unsigned int fall through // to '1 <= q + exp <= 20' } else { // if 1 <= q <= 20 // C * 10^(21-q) >= a is true because C >= 1 and 10^(21-q) >= 10 // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= a * 10^(q-21) is true because C > 2^64 and a*10^(q-21) < 2^64 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } else { // if n > 0 and q + exp = 20 // if n > 2^64 - 1 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) > 2^64 - 1 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 > 2^64 - 1 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 > 10 * (2^64 - 1) // <=> C * 10^(21-q) > 0x9fffffffffffffff6, 1<=q<=34 if (q == 1) { // C * 10^20 > 0x9fffffffffffffff6 __mul_128x64_to_128 (C, C1.w[0], bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q <= 19) { // C * 10^(21-q) > 0x9fffffffffffffff6 __mul_64x64_to_128MACH (C, C1.w[0], bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 20) { // C > 0xffffffffffffffff if (C1.w[1]) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 21) { // C > 0x9fffffffffffffff6 if (C1.w[1] > 0x09 || (C1.w[1] == 0x09 && C1.w[0] > 0xfffffffffffffff6ull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C > 10^(q-21) * 0x9fffffffffffffff6 max 44 bits x 68 bits C.w[1] = 0x09; C.w[0] = 0xfffffffffffffff6ull; __mul_128x64_to_128 (C, bid_ten2k64[q - 21], C); if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] > C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n <= 2^64 - 1 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 or 1 if (x_sign) res = 0x0000000000000000ull; else res = 0x0000000000000001ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 34, -33 <= exp <= 19) // x <= -1 or 1 <= x < 2^64 so if positive x can be rounded // to zero to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // 1 <= x <= 2^64 - 1 so x can be rounded // to zero to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result is positive and inexact, need to add 1 to it // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 22 <= ind <= 33 if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { if (!x_sign) { // positive and inexact Cstar.w[0]++; if (Cstar.w[0] == 0x0) Cstar.w[1]++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 20, but x < 2^64 - 1/2 so in this case C1.w[1] has to be 0 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 19, 1 <= q < 19, 2 <= q + exp <= 20 // res = C * 10^exp (exact) - must fit in 64 bits res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint64_int ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_UINT64, bid128_to_uint64_int, x) BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 // if n <= -1 then n cannot be converted to uint64 with RZ // too large if c(0)c(1)...c(19).c(20)...c(q-1) >= 1 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 0x0a, 1<=q<=34 // <=> C * 10^(21-q) >= 0x0a, 1<=q<=34 if (q == 21) { // C >= a if (C1.w[1] != 0 || C1.w[0] >= 0x0aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to 64-bit unsigned int fall through // to '1 <= q + exp <= 20' } else { // if 1 <= q <= 20 // C * 10^(21-q) >= a is true because C >= 1 and 10^(21-q) >= 10 // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= a * 10^(q-21) is true because C > 2^64 and a*10^(q-21) < 2^64 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } else { // if n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*2^65 // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=34 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, C1.w[0], bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q <= 19) { // C * 10^(21-q) >= 0xa0000000000000000 __mul_64x64_to_128MACH (C, C1.w[0], bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 20) { // C >= 0x10000000000000000 if (C1.w[1] >= 0x01) { // actually C1.w[1] == 0x01 && C1.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 21) { // C >= 0xa0000000000000000 if (C1.w[1] >= 0x0a) { // actually C1.w[1] == 0x0a && C1.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= 10^(q-21) * 0xa0000000000000000 max 44 bits x 68 bits C.w[1] = 0x0a; C.w[0] = 0x0000000000000000ull; __mul_128x64_to_128 (C, bid_ten2k64[q - 21], C); if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 34, -33 <= exp <= 19) // x <= -1 or 1 <= x < 2^64 so if positive x can be rounded // to zero to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // 1 <= x < 2^64 so x can be rounded // to zero to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 20, but x < 2^64 - 1/2 so in this case C1.w[1] has to be 0 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 19, 1 <= q < 19, 2 <= q + exp <= 20 // res = C * 10^exp (exact) - must fit in 64 bits res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint64_xint ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_UINT64, bid128_to_uint64_xint, x) BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 // if n <= -1 then n cannot be converted to uint64 with RZ // too large if c(0)c(1)...c(19).c(20)...c(q-1) >= 1 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 0x0a, 1<=q<=34 // <=> C * 10^(21-q) >= 0x0a, 1<=q<=34 if (q == 21) { // C >= a if (C1.w[1] != 0 || C1.w[0] >= 0x0aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to 64-bit unsigned int fall through // to '1 <= q + exp <= 20' } else { // if 1 <= q <= 20 // C * 10^(21-q) >= a is true because C >= 1 and 10^(21-q) >= 10 // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= a * 10^(q-21) is true because C > 2^64 and a*10^(q-21) < 2^64 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } else { // if n > 0 and q + exp = 20 // if n >= 2^64 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*2^65 // <=> C * 10^(21-q) >= 0xa0000000000000000, 1<=q<=34 if (q == 1) { // C * 10^20 >= 0xa0000000000000000 __mul_128x64_to_128 (C, C1.w[0], bid_ten2k128[0]); // 10^20 * C if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q <= 19) { // C * 10^(21-q) >= 0xa0000000000000000 __mul_64x64_to_128MACH (C, C1.w[0], bid_ten2k64[21 - q]); if (C.w[1] >= 0x0a) { // actually C.w[1] == 0x0a && C.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 20) { // C >= 0x10000000000000000 if (C1.w[1] >= 0x01) { // actually C1.w[1] == 0x01 && C1.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 21) { // C >= 0xa0000000000000000 if (C1.w[1] >= 0x0a) { // actually C1.w[1] == 0x0a && C1.w[0] >= 0x0000000000000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= 10^(q-21) * 0xa0000000000000000 max 44 bits x 68 bits C.w[1] = 0x0a; C.w[0] = 0x0000000000000000ull; __mul_128x64_to_128 (C, bid_ten2k64[q - 21], C); if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1 < n < 2^64 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // if (1 <= q + exp <= 20, 1 <= q <= 34, -33 <= exp <= 19) // x <= -1 or 1 <= x < 2^64 so if positive x can be rounded // to zero to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // 1 <= x < 2^64 so x can be rounded // to zero to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 127 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 22 <= ind <= 33 if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 20, but x < 2^64 - 1/2 so in this case C1.w[1] has to be 0 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 19, 1 <= q < 19, 2 <= q + exp <= 20 // res = C * 10^exp (exact) - must fit in 64 bits res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint64_rninta ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_UINT64, bid128_to_uint64_rninta, x) BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 // if n <= -1/2 then n cannot be converted to uint64 with RN // too large if c(0)c(1)...c(19).c(20)...c(q-1) >= 1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 0x05, 1<=q<=34 // <=> C * 10^(21-q) >= 0x05, 1<=q<=34 if (q == 21) { // C >= 5 if (C1.w[1] != 0 || C1.w[0] >= 0x05ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to 64-bit unsigned int fall through // to '1 <= q + exp <= 20' } else { // if 1 <= q <= 20 // C * 10^(21-q) >= 5 is true because C >= 1 and 10^(21-q) >= 10 // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= 5 * 10^(q-21) is true because C > 2^64 and 5*10^(q-21) < 2^64 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=34 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, C1.w[0], bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q <= 19) { // C * 10^(21-q) >= 0x9fffffffffffffffb __mul_64x64_to_128MACH (C, C1.w[0], bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 20) { // C * 10 >= 0x9fffffffffffffffb <=> C * 2 > 1ffffffffffffffff C.w[0] = C1.w[0] + C1.w[0]; C.w[1] = C1.w[1] + C1.w[1]; if (C.w[0] < C1.w[0]) C.w[1]++; if (C.w[1] > 0x01 || (C.w[1] == 0x01 && C.w[0] >= 0xffffffffffffffffull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 21) { // C >= 0x9fffffffffffffffb if (C1.w[1] > 0x09 || (C1.w[1] == 0x09 && C1.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= 10^(q-21) * 0x9fffffffffffffffb max 44 bits x 68 bits C.w[1] = 0x09; C.w[0] = 0xfffffffffffffffbull; __mul_128x64_to_128 (C, bid_ten2k64[q - 21], C); if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 < n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] < bid_midpoint64[ind])) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] < bid_midpoint128[ind - 19].w[0]))) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } } else { // if (1 <= q + exp <= 20, 1 <= q <= 34, -33 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // if the result was a midpoint it was rounded away from zero res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 20, but x < 2^64 - 1/2 so in this case C1.w[1] has to be 0 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 19, 1 <= q < 19, 2 <= q + exp <= 20 // res = C * 10^exp (exact) - must fit in 64 bits res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } /***************************************************************************** * BID128_to_uint64_xrninta ****************************************************************************/ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE (BID_UINT64, bid128_to_uint64_xrninta, x) BID_UINT64 res; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64, tmp64A; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT128 C1, C; BID_UINT128 Cstar; // C* represents up to 34 decimal digits ~ 113 bits BID_UINT256 fstar; BID_UINT256 P256; // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is QNaN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } else { // x is not a NaN, so it must be infinity if (!x_sign) { // x is +inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } else { // x is -inf // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; } BID_RETURN_VAL (res); } } // check for non-canonical values (after the check for special values) if ((C1.w[1] > 0x0001ed09bead87c0ull) || (C1.w[1] == 0x0001ed09bead87c0ull && (C1.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else { // x is not special and is not zero // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if ((q + exp) > 20) { // x >= 10^20 ~= 2^66.45... (cannot fit in 64 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 20) { // x = c(0)c(1)...c(19).c(20)...c(q-1) // in this case 2^63.11... ~= 10^19 <= x < 10^20 ~= 2^66.43... // so x rounded to an integer may or may not fit in an unsigned 64-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 20' if (x_sign) { // if n < 0 and q + exp = 20 // if n <= -1/2 then n cannot be converted to uint64 with RN // too large if c(0)c(1)...c(19).c(20)...c(q-1) >= 1/2 // <=> 0.c(0)c(1)...c(q-1) * 10^21 >= 0x05, 1<=q<=34 // <=> C * 10^(21-q) >= 0x05, 1<=q<=34 if (q == 21) { // C >= 5 if (C1.w[1] != 0 || C1.w[0] >= 0x05ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to 64-bit unsigned int fall through // to '1 <= q + exp <= 20' } else { // if 1 <= q <= 20 // C * 10^(21-q) >= 5 is true because C >= 1 and 10^(21-q) >= 10 // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= 5 * 10^(q-21) is true because C > 2^64 and 5*10^(q-21) < 2^64 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } else { // if n > 0 and q + exp = 20 // if n >= 2^64 - 1/2 then n is too large // <=> c(0)c(1)...c(19).c(20)...c(q-1) >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^20 >= 2^64-1/2 // <=> 0.c(0)c(1)...c(19)c(20)...c(q-1) * 10^21 >= 5*(2^65-1) // <=> C * 10^(21-q) >= 0x9fffffffffffffffb, 1<=q<=34 if (q == 1) { // C * 10^20 >= 0x9fffffffffffffffb __mul_128x64_to_128 (C, C1.w[0], bid_ten2k128[0]); // 10^20 * C if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q <= 19) { // C * 10^(21-q) >= 0x9fffffffffffffffb __mul_64x64_to_128MACH (C, C1.w[0], bid_ten2k64[21 - q]); if (C.w[1] > 0x09 || (C.w[1] == 0x09 && C.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 20) { // C * 10 >= 0x9fffffffffffffffb <=> C * 2 > 1ffffffffffffffff C.w[0] = C1.w[0] + C1.w[0]; C.w[1] = C1.w[1] + C1.w[1]; if (C.w[0] < C1.w[0]) C.w[1]++; if (C.w[1] > 0x01 || (C.w[1] == 0x01 && C.w[0] >= 0xffffffffffffffffull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else if (q == 21) { // C >= 0x9fffffffffffffffb if (C1.w[1] > 0x09 || (C1.w[1] == 0x09 && C1.w[0] >= 0xfffffffffffffffbull)) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } else { // if 22 <= q <= 34 => 1 <= q - 21 <= 13 // C >= 10^(q-21) * 0x9fffffffffffffffb max 44 bits x 68 bits C.w[1] = 0x09; C.w[0] = 0xfffffffffffffffbull; __mul_128x64_to_128 (C, bid_ten2k64[q - 21], C); if (C1.w[1] > C.w[1] || (C1.w[1] == C.w[1] && C1.w[0] >= C.w[0])) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // else cases that can be rounded to a 64-bit int fall through // to '1 <= q + exp <= 20' } } } // n is not too large to be converted to int64 if -1/2 < n < 2^64 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x0000000000000000ull; BID_RETURN_VAL (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (ind <= 18) { // 0 <= ind <= 18 if ((C1.w[1] == 0) && (C1.w[0] < bid_midpoint64[ind])) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x8000000000000000ull; // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } else { // 19 <= ind <= 33 if ((C1.w[1] < bid_midpoint128[ind - 19].w[1]) || ((C1.w[1] == bid_midpoint128[ind - 19].w[1]) && (C1.w[0] < bid_midpoint128[ind - 19].w[0]))) { res = 0x0000000000000000ull; // return 0 } else if (!x_sign) { // n > 0 res = 0x00000001; // return +1 } else { res = 0x8000000000000000ull; *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 20, 1 <= q <= 34, -33 <= exp <= 19) // x <= -1 or 1 <= x < 2^64-1/2 so if positive x can be rounded // to nearest to a 64-bit unsigned signed integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x8000000000000000ull; BID_RETURN_VAL (res); } // 1 <= x < 2^64-1/2 so x can be rounded // to nearest to a 64-bit unsigned integer if (exp < 0) { // 2 <= q <= 34, -33 <= exp <= -1, 1 <= q + exp <= 20 ind = -exp; // 1 <= ind <= 33; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 33 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256 (P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[1] = P256.w[3]; Cstar.w[0] = P256.w[2]; fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } else { // 22 <= ind - 1 <= 33 Cstar.w[1] = 0; Cstar.w[0] = P256.w[3]; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; } // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-128 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 if (ind - 1 <= 21) { // 0 <= ind - 1 <= 21 Cstar.w[0] = (Cstar.w[0] >> shift) | (Cstar.w[1] << (64 - shift)); // redundant, it will be 0! Cstar.w[1] = (Cstar.w[1] >> shift); } else { // 22 <= ind - 1 <= 33 Cstar.w[0] = (Cstar.w[0] >> (shift - 64)); // 2 <= shift - 64 <= 38 } // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[1] > 0x8000000000000000ull || (fstar.w[1] == 0x8000000000000000ull && fstar.w[0] > 0x0ull)) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[1] - 0x8000000000000000ull; // f* - 1/2 if (tmp64 > bid_ten2mk128trunc[ind - 1].w[1] || (tmp64 == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else if (ind - 1 <= 21) { // if 3 <= ind <= 21 if (fstar.w[3] > 0x0 || (fstar.w[3] == 0x0 && fstar.w[2] > bid_onehalf128[ind - 1]) || (fstar.w[3] == 0x0 && fstar.w[2] == bid_onehalf128[ind - 1] && (fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[2] - bid_onehalf128[ind - 1]; tmp64A = fstar.w[3]; if (tmp64 > fstar.w[2]) tmp64A--; if (tmp64A || tmp64 || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 22 <= ind <= 33 if (fstar.w[3] > bid_onehalf128[ind - 1] || (fstar.w[3] == bid_onehalf128[ind - 1] && (fstar.w[2] || fstar.w[1] || fstar.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[3] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[2] || fstar.w[1] > bid_ten2mk128trunc[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128trunc[ind - 1].w[1] && fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero res = Cstar.w[0]; // the result is positive } else if (exp == 0) { // 1 <= q <= 20, but x < 2^64 - 1/2 so in this case C1.w[1] has to be 0 // res = C (exact) res = C1.w[0]; } else { // if (exp > 0) => 1 <= exp <= 19, 1 <= q < 19, 2 <= q + exp <= 20 // res = C * 10^exp (exact) - must fit in 64 bits res = C1.w[0] * bid_ten2k64[exp]; } } } BID_RETURN_VAL (res); } LIBRARY/src/bid128_log2.c0000644€­ Q01134020000001244115113665770013720 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_10POW4464 = {BID128_LH_INIT( 0x0000000000000001ull, 0x5320000000000000ull )}; static BID_UINT128 BID128_10POWN4464 = {BID128_LH_INIT( 0x0000000000000001ull, 0x0d60000000000000ull )}; BID_F128_CONST_DEF( c_4464_log2_10, 400ccf68b2353912, 08f6437dd4607b55);// 4464*log2(10) BID_F128_CONST_DEF( c_1_ov_ln2, 3fff71547652b82f, e1777d0ffda0d23a);// 1/ln2 BID_F128_CONST_DEF( c_one, 3fff000000000000, 0000000000000000);// 1 BID_F128_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000);// .5 BID128_FUNCTION_ARG1 (bid128_log2, x) BID_F128_TYPE xq, rq, rt; BID_UINT128 res; int z, cmp_res; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[0] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid128_isZero, z, x); if (z) { // -Infinite and Divide by Zero according C99 res.w[BID_HIGH_128W] = 0xf800000000000000ull; res.w[BID_LOW_128W] = 0ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN(res); } if (x.w[BID_HIGH_128W] & MASK_SIGN) { // QNaN Indefinite res.w[BID_HIGH_128W] = 0x7c00000000000000ull; res.w[BID_LOW_128W] = 0ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } // Inputs too large to fit in quad. BIDECIMAL_CALL2_NORND(bid128_quiet_greater,cmp_res, x, BID128_10POW4464); if (cmp_res) { BID_UINT128 x_mod; BIDECIMAL_CALL2 (bid128_mul, x_mod, x, BID128_10POWN4464); BIDECIMAL_CALL1 (bid128_to_binary128, xq, x_mod); __bid_f128_log2(rq, xq); __bid_f128_add(rq, rq, c_4464_log2_10.v); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } // Inputs so small they underflow to zero in quad. BIDECIMAL_CALL2_NORND(bid128_quiet_less,cmp_res,x,BID128_10POWN4464); if (cmp_res) { BID_UINT128 x_mod; BIDECIMAL_CALL2(bid128_mul, x_mod, x, BID128_10POW4464); BIDECIMAL_CALL1(bid128_to_binary128, xq, x_mod); __bid_f128_log2(rq, xq); __bid_f128_sub(rq, rq, c_4464_log2_10.v); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } // Ordinary inputs else { BID_F128_TYPE e_bin; BIDECIMAL_CALL1 (bid128_to_binary128, xq, x); __bid_f128_log2(rq, xq); __bid_f128_sub(e_bin, xq, c_one.v); __bid_f128_fabs(rt, e_bin); if (__bid_f128_lt(rt, c_half.v)) { BID_F128_TYPE tmp_e_bin; BID_UINT128 e; BIDECIMAL_CALL2 (bid128_sub, e, x, BID128_1); BIDECIMAL_CALL1 (bid128_to_binary128, tmp_e_bin, e); __bid_f128_sub(rt, e_bin, tmp_e_bin); __bid_f128_mul(rt, c_1_ov_ln2.v, rt); __bid_f128_div(rt, rt, xq); __bid_f128_sub(rq, rq, rt); } BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } } LIBRARY/src/bid64_lround.c0000644€­ Q01134020000000510515113665770014276 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_lroundd ****************************************************************************/ /* DESCRIPTION: The lround function rounds its argument to the nearest integer value of type long int, using rounding to nearest-away RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND(long int, bid64_lround, BID_UINT64, x) #if BID_SIZE_LONG==4 BID_SINT32 res; BIDECIMAL_CALL1_NORND (bid64_to_int32_rninta, res, x); #else // if BID_SIZE_LONG==8 BID_SINT64 res; BIDECIMAL_CALL1_NORND (bid64_to_int64_rninta, res, x); #endif BID_RETURN ((long int)res); } LIBRARY/src/bid64_sin.c0000644€­ Q01134020000011003615113665770013564 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // Extra macros #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll192_short(hi,med,lo,c) \ ((hi) = ((hi) << (c)) + ((med)>>(64-(c))), \ (med) = ((med) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define BID64_NAN 0x7c00000000000000ull // Values of (10^a / 2 pi) mod 1 for -17 <= a <= 369 // Each one is a 192-bit binary fraction static BID_UINT192 bid_decimal64_moduli[] = { {{ 0x82d9e5c60f747619ull, 0x5be1334254ee2dfaull, 0x000000000000001dull }}, {{ 0x1c82f9bc9a8c9cf5ull, 0x96cc0097514dcbc9ull, 0x0000000000000125ull }}, {{ 0x1d1dc15e097e2197ull, 0xe3f805e92d09f5dbull, 0x0000000000000b77ull }}, {{ 0x23298dac5eed4fe5ull, 0xe7b03b1bc2639a8full, 0x00000000000072aeull }}, {{ 0x5f9f88bbb5451ef6ull, 0x0ce24f1597e40997ull, 0x0000000000047ad5ull }}, {{ 0xbc3b575514b3359bull, 0x80d716d7eee85fe9ull, 0x00000000002ccc52ull }}, {{ 0x5a516952cf00180bull, 0x0866e46f5513bf21ull, 0x0000000001bffb39ull }}, {{ 0x872e1d3c1600f06full, 0x5404ec5952c5774dull, 0x00000000117fd03aull }}, {{ 0x47cd2458dc096459ull, 0x48313b7d3bb6a907ull, 0x00000000aefe2247ull }}, {{ 0xce036b78985deb7bull, 0xd1ec52e455229a48ull, 0x00000006d5ed56c8ull }}, {{ 0x0c2232b5f3ab32cdull, 0x333b3ceb535a06d8ull, 0x000000445b4563d8ull }}, {{ 0x7955fb1b84affc02ull, 0x0050613141844470ull, 0x000002ab90b5e672ull }}, {{ 0xbd5bcf132edfd811ull, 0x0323cbec8f2aac64ull, 0x00001ab3a71b0074ull }}, {{ 0x659616bfd4be70aaull, 0x1f65f73d97aabbefull, 0x00010b04870e0488ull }}, {{ 0xf7dce37e4f7066a1ull, 0x39fba867ecab5759ull, 0x000a6e2d468c2d51ull }}, {{ 0xaea0e2ef1a640248ull, 0x43d4940f3eb16983ull, 0x00684dc4c179c52cull }}, {{ 0xd248dd5707e816ceull, 0xa64dc89872ee1f24ull, 0x041309af8ec1b3baull }}, {{ 0x36d8a5664f10e410ull, 0x7f09d5f47d4d3770ull, 0x28be60db9391054aull }}, {{ 0x247675ff16a8e8a5ull, 0xf6625b8ce5042a62ull, 0x976fc893c3aa34e8ull }}, {{ 0x6ca09bf6e2991672ull, 0x9fd79380f229a7d5ull, 0xea5dd5c5a4a61119ull }}, {{ 0x3e4617a4d9fae072ull, 0x3e6bc30975a08e56ull, 0x27aa59b86e7cab00ull }}, {{ 0x6ebcec7083ccc478ull, 0x70359e5e98458f5eull, 0x8ca7813450deae02ull }}, {{ 0x53613c6525ffacacull, 0x62182fb1f2b799b0ull, 0x7e8b0c0b28b2cc18ull }}, {{ 0x41cc5bf37bfcbeb5ull, 0xd4f1dcf37b2c00e3ull, 0xf16e786f96fbf8f3ull }}, {{ 0x91fb9782d7df7316ull, 0x5172a182cfb808e0ull, 0x6e50b45be5d7b986ull }}, {{ 0xb3d3eb1c6eba7ed7ull, 0x2e7a4f1c1d3058c5ull, 0x4f270b96fa6d3f3full }}, {{ 0x06472f1c5348f467ull, 0xd0c7171923e377b9ull, 0x178673e5c8447877ull }}, {{ 0x3ec7d71b40d98c03ull, 0x27c6e6fb66e2ad3aull, 0xeb4086f9d2acb4aeull }}, {{ 0x73ce6710887f781eull, 0x8dc505d204dac446ull, 0x308545c23abf0ecdull }}, {{ 0x861006a554fab12aull, 0x89b23a34308baac0ull, 0xe534b9964b769407ull }}, {{ 0x3ca0427551caeba0ull, 0x60f64609e574ab85ull, 0xf40f3fdef2a1c84bull }}, {{ 0x5e42989531ed3443ull, 0xc99ebc62f68eb334ull, 0x88987eb57a51d2f1ull }}, {{ 0xae99f5d3f3440a9cull, 0xe0335bdda193000bull, 0x55f4f316c7323d71ull }}, {{ 0xd2039a4780a86a14ull, 0xc20196a84fbe0074ull, 0x5b917ee3c7f66672ull }}, {{ 0x342406cb069424c4ull, 0x940fe2931d6c0490ull, 0x93aef4e5cfa0007bull }}, {{ 0x096843ee41c96faaull, 0xc89ed9bf26382da2ull, 0xc4d590fa1c4004d3ull }}, {{ 0x5e12a74e91de5ca6ull, 0xd63481777e31c854ull, 0xb057a9c51a803045ull }}, {{ 0xacba8911b2af9e80ull, 0x5e0d0eaaedf1d34bull, 0xe36ca1b30901e2baull }}, {{ 0xbf495ab0fadc30ffull, 0xac8292ad4b7240f4ull, 0xe23e50fe5a12db47ull }}, {{ 0x78dd8ae9cc99e9f7ull, 0xbd19bac4f276898full, 0xd66f29ef84bc90ccull }}, {{ 0xb8a76d21fe0323a8ull, 0x63014bb178a15f9aull, 0x6057a35b2f5da7ffull }}, {{ 0x368a4353ec1f648dull, 0xde0cf4eeb64dbc0bull, 0xc36c618fd9a88ff9ull }}, {{ 0x2166a1473939ed82ull, 0xac8191531f095870ull, 0xa23bcf9e80959fc2ull }}, {{ 0x4e024cc83c434711ull, 0xbd0fad3f365d7461ull, 0x56561c3105d83d9aull }}, {{ 0x0c16ffd25aa0c6a8ull, 0x629cc4781fa68bcdull, 0x5f5d19ea3a72680bull }}, {{ 0x78e5fe378a47c294ull, 0xda1facb13c817602ull, 0xb9a3032648781071ull }}, {{ 0xb8fbee2b66cd99c5ull, 0x853cbeec5d0e9c18ull, 0x405e1f7ed4b0a472ull }}, {{ 0x39d74db2040801aeull, 0x345f753ba29218f7ull, 0x83ad3af44ee66c79ull }}, {{ 0x426908f4285010d0ull, 0x0bba945459b4f9a8ull, 0x24c44d8b15003cbcull }}, {{ 0x981a59899320a825ull, 0x7549cb4b8111c092ull, 0x6fab076ed2025f58ull }}, {{ 0xf1077f5fbf469170ull, 0x94e1f0f30ab185b9ull, 0x5cae4a543417b974ull }}, {{ 0x6a4af9bd78c1ae63ull, 0xd0d3697e6aef3943ull, 0x9ecee74a08ed3e8dull }}, {{ 0x26edc166b790cfdaull, 0x28421ef02d583ca2ull, 0x341508e45944718aull }}, {{ 0x85498e032ba81e83ull, 0x92953561c5725e55ull, 0x08d258eb7cac6f65ull }}, {{ 0x34df8c1fb4913120ull, 0xb9d415d1b677af57ull, 0x58377932debc59f7ull }}, {{ 0x10bb793d0dabeb3dull, 0x4248da3120acd968ull, 0x722abbfcb35b83adull }}, {{ 0xa752bc6288b7305full, 0x96d885eb46c07e10ull, 0x75ab57df019324c4ull }}, {{ 0x893b5bd95727e3b2ull, 0xe4753b30c384eca6ull, 0x98b16eb60fbf6fadull }}, {{ 0x5c51967d678ee4f8ull, 0xec944fe7a3313e81ull, 0xf6ee531c9d7a5ccaull }}, {{ 0x9b2fe0e60b94f1b0ull, 0x3dcb1f0c5fec710dull, 0xa54f3f1e26c79fedull }}, {{ 0x0fdec8fc73d170e4ull, 0x69ef367bbf3c6a88ull, 0x7518772d83cc3f44ull }}, {{ 0x9eb3d9dc862e68e9ull, 0x235820d5785c2950ull, 0x92f4a7c725fa78acull }}, {{ 0x3306829d3dd01918ull, 0x61714856b3999d26ull, 0xbd8e8dc77bc8b6b9ull }}, {{ 0xfe411a246a20faf1ull, 0xce6cd3630400237dull, 0x679189cad5d7233dull }}, {{ 0xee8b056c2549cd66ull, 0x104041de280162ebull, 0x0baf61ec5a67606aull }}, {{ 0x516e363974e205ffull, 0xa28292ad900ddd37ull, 0x74d9d33b8809c424ull }}, {{ 0x2e4e1e3e90d43bf3ull, 0x5919bac7a08aa429ull, 0x908240535061a96eull }}, {{ 0xcf0d2e71a84a5783ull, 0x7b014bcc456a699bull, 0xa516834123d09e4full }}, {{ 0x1683d07092e76b1eull, 0xce0cf5fab6282016ull, 0x72e1208b66262f1aull }}, {{ 0xe1262465bd0a2f28ull, 0x0c819bcb1d9140dcull, 0x7ccb4571fd7dd70cull }}, {{ 0xcb7d6bf96265d78eull, 0x7d1015ef27ac88a0ull, 0xdff0b673e6ea6678ull }}, {{ 0xf2e637bdd7fa6b88ull, 0xe2a0db578cbd5647ull, 0xbf672087052800b4ull }}, {{ 0x7cfe2d6a6fc83354ull, 0xda48916b7f655ecfull, 0x7a07454633900710ull }}, {{ 0xe1edc6285dd20144ull, 0x86d5ae32f9f5b41aull, 0xc448b4be03a046a8ull }}, {{ 0xd349bd93aa340cacull, 0x4458cdfdc399090cull, 0xaad70f6c2442c295ull }}, {{ 0x40e167c4a6087eb4ull, 0xab780be9a3fa5a80ull, 0xac669a396a9b99d4ull }}, {{ 0x88ce0dae7c54f308ull, 0xb2b0772067c78902ull, 0xbc02063e2a14024eull }}, {{ 0x580c88d0db517e53ull, 0xfae4a7440dcb5a19ull, 0x58143e6da4c81712ull }}, {{ 0x707d5828912eef41ull, 0xccee88a889f184fdull, 0x70ca70486fd0e6bdull }}, {{ 0x64e57195abd55888ull, 0x01515695636f31e6ull, 0x67e862d45e29036aull }}, {{ 0xf0f66fd8b6557554ull, 0x0d2d61d5e257f2ffull, 0x0f13dc4bad9a2224ull }}, {{ 0x69a05e771f56954dull, 0x83c5d25ad76f7dffull, 0x96c69af4c8055568ull }}, {{ 0x2043b0a73961d4feull, 0x25ba378c6a5aebfaull, 0xe3c20d8fd0355615ull }}, {{ 0x42a4e6883dd251e8ull, 0x79462b7c278d37c5ull, 0xe594879e22155cd3ull }}, {{ 0x9a7101526a373314ull, 0xbcbdb2d98b842db4ull, 0xf7cd4c2d54d5a042ull }}, {{ 0x086a0d382627fecaull, 0x5f68fc7f7329c90eull, 0xae04f9c55058429bull }}, {{ 0x542484317d8ff3e5ull, 0xba19dcfa7fa1da8cull, 0xcc31c1b523729a11ull }}, {{ 0x496d29eee79f86f2ull, 0x4502a1c8fc52897bull, 0xf9f19113627a04b1ull }}, {{ 0xde43a3550c3b4579ull, 0xb21a51d9db395ed0ull, 0xc36faac1d8c42eecull }}, {{ 0xaea461527a50b6b7ull, 0xf5073282903db428ull, 0xa25cab9277a9d53eull }}, {{ 0xd26bcd38c727232aull, 0x9247f919a2690996ull, 0x579eb3b8aca25475ull }}, {{ 0x38360437c7875fa5ull, 0xb6cfbb00581a5fe4ull, 0x6c330536be574c97ull }}, {{ 0x321c2a2dcb49bc6full, 0x241d4e037107beeaull, 0x39fe34236f68fdedull }}, {{ 0xf519a5c9f0e15c56ull, 0x69250c226a4d7525ull, 0x43ee09625a19eb43ull }}, {{ 0x930079e368cd9b60ull, 0x1b7279582706937bull, 0xa74c5dd7850330a2ull }}, {{ 0xbe04c2e2180811c2ull, 0x1278bd718641c2d3ull, 0x88fbaa6b321fe655ull }}, {{ 0x6c2f9cd4f050b192ull, 0xb8b7666f3e919c45ull, 0x59d4a82ff53eff52ull }}, {{ 0x39dc20516326efb7ull, 0x372a005871b01ab6ull, 0x824e91df9475f93bull }}, {{ 0x4299432ddf855d22ull, 0x27a4037470e10b1eull, 0x1711b2bbcc9bbc50ull }}, {{ 0x99fc9fcabb35a357ull, 0x8c68228c68ca6f2eull, 0xe6b0fb55fe155b21ull }}, {{ 0x03de3deb50186164ull, 0x7c11597c17e857d2ull, 0x02e9d15becd58f4full }}, {{ 0x26ae6b3120f3cde8ull, 0xd8ad7ed8ef136e34ull, 0x1d222d974057991aull }}, {{ 0x82d02feb49860b15ull, 0x76c6f47956c24e09ull, 0x2355c7e8836bfb0cull }}, {{ 0x1c21df30df3c6ed0ull, 0xa3c58cbd63970c5full, 0x6159cf152237ce7cull }}, {{ 0x1952b7e8b85c541cull, 0x65b77f65e3e67bb7ull, 0xcd8216d3562e10deull }}, {{ 0xfd3b2f17339b491aull, 0xf92af9fae700d526ull, 0x0714e4415dcca8afull }}, {{ 0xe44fd6e80410db03ull, 0xbbadc3cd06085385ull, 0x46d0ea8da9fe96dfull }}, {{ 0xeb1e651028a88e1cull, 0x54c9a6023c53433aull, 0xc4292988a3f1e4bdull }}, {{ 0x2f2ff2a196958d19ull, 0x4fe07c165b40a04dull, 0xa99b9f566772ef65ull }}, {{ 0xd7df7a4fe1d782f7ull, 0x1ec4d8df90864303ull, 0xa01439600a7d59f5ull }}, {{ 0x6ebac71ed26b1da8ull, 0x33b078bba53e9e26ull, 0x40ca3dc068e58393ull }}, {{ 0x534bc734382f2893ull, 0x04e4b75474722d80ull, 0x87e6698418f723c0ull }}, {{ 0x40f5c80a31d795b9ull, 0x30ef294c8c75c703ull, 0x4f001f28f9a76580ull }}, {{ 0x8999d065f26bd93cull, 0xe9579cfd7c99c620ull, 0x16013799c089f701ull }}, {{ 0x600223fb78367c58ull, 0x1d6c21e6de01bd45ull, 0xdc0c2c018563a613ull }}, {{ 0xc01567d2b220db73ull, 0x26395304ac1164b5ull, 0x9879b80f35e47cbfull }}, {{ 0x80d60e3af548927full, 0x7e3d3e2eb8adef19ull, 0xf4c130981aecdf77ull }}, {{ 0x085c8e4d94d5b8f5ull, 0xee646dd336cb56ffull, 0x8f8be5f10d40baaaull }}, {{ 0x539d8f07d059398eull, 0x4fec4a4023f165f6ull, 0x9b76fb6a84874aadull }}, {{ 0x4427964e237c3f90ull, 0x1f3ae681676dfb9full, 0x12a5d2292d48eac5ull }}, {{ 0xa98bdf0d62da7ba2ull, 0x384d010e0a4bd438ull, 0xba7a359bc4d92bb3ull }}, {{ 0x9f76b685dc88d453ull, 0x33020a8c66f64a36ull, 0x48c61815b07bb500ull }}, {{ 0x3aa3213a9d584b3full, 0xfe14697c059ee622ull, 0xd7bcf0d8e4d51201ull }}, {{ 0x4a5f4c4a2572f075ull, 0xeccc1ed83834fd56ull, 0x6d616878f052b413ull }}, {{ 0xe7b8fae5767d6496ull, 0x3ff934723211e55eull, 0x45ce14b9633b08c7ull }}, {{ 0x0d39ccf6a0e5eddfull, 0x7fbc0c75f4b2f5b5ull, 0xba0ccf3de04e57c8ull }}, {{ 0x844201a248fb4ab1ull, 0xfd587c9b8efd9912ull, 0x4480186ac30f6dd4ull }}, {{ 0x2a941056d9d0eaeeull, 0xe574de1395e7fab9ull, 0xad00f42b9e9a4a51ull }}, {{ 0xa9c8a36482292d4bull, 0xf690acc3db0fcb3bull, 0xc20989b43206e732ull }}, {{ 0xa1d661ed159bc4edull, 0xa1a6bfa68e9df054ull, 0x945f6109f44507fdull }}, {{ 0x525fd342d815b147ull, 0x50837c81922b634eull, 0xcbb9ca638ab24fe8ull }}, {{ 0x37be409c70d8ecc4ull, 0x2522dd0fb5b1e10full, 0xf541e7e36af71f13ull }}, {{ 0x2d6e861c68793fa9ull, 0x735ca29d18f2ca98ull, 0x94930ee22da736bfull }}, {{ 0xc6513d1c14bc7c9bull, 0x819e5a22f97be9f1ull, 0xcdbe94d5c888237aull }}, {{ 0xbf2c6318cf5cde10ull, 0x102f855dbed72371ull, 0x0971d059d55162c9ull }}, {{ 0x77bbdef819a0aca3ull, 0xa1db35a974676271ull, 0x5e722382552ddbdaull }}, {{ 0xad56b5b10046be5bull, 0x5290189e8c09d86eull, 0xb075631753ca968aull }}, {{ 0xc56318ea02c36f8dull, 0x39a0f63178627452ull, 0xe495dee945e9e167ull }}, {{ 0xb5def9241ba25b85ull, 0x40499deeb3d88b3bull, 0xeddab51cbb22ce08ull }}, {{ 0x1ab5bb6914579333ull, 0x82e02b5306757055ull, 0x4a8b131f4f5c0c52ull }}, {{ 0x0b19521acb6bc000ull, 0x1cc1b13e40966353ull, 0xe96ebf3919987b39ull }}, {{ 0x6efd350bf2358002ull, 0x1f90ec6e85dfe13eull, 0x1e53783afff4d03bull }}, {{ 0x55e412777617000full, 0x3ba93c513abecc70ull, 0x2f42b24dff90224full }}, {{ 0x5ae8b8aa9ce6009aull, 0x549c5b2c4b73fc63ull, 0xd89af70bfba15718ull }}, {{ 0x8d1736aa20fc0604ull, 0x4e1b8fbaf287dbe1ull, 0x760da677d44d66f3ull }}, {{ 0x82e822a549d83c27ull, 0x0d139d4d794e96cfull, 0x9c8880ae4b060581ull }}, {{ 0x1d115a74e2725984ull, 0x82c42506bd11e41bull, 0x1d5506ceee3c370aull }}, {{ 0x22ad8890d8777f2bull, 0x1ba9724362b2e90full, 0x255244154e5a2669ull }}, {{ 0x5ac755a874aaf7aaull, 0x149e76a1dafd1a97ull, 0x7536a8d50f85801bull }}, {{ 0x8bc958948eadaca7ull, 0xce30a2528de309e9ull, 0x942298529b37010eull }}, {{ 0x75dd75cd92c8be8aull, 0x0de657398ade631full, 0xc959f33a10260a94ull }}, {{ 0x9aa69a07bbd77163ull, 0x8aff683f6cafdf3aull, 0xdd838044a17c69c8ull }}, {{ 0x0a82044d566a6de1ull, 0x6dfa127a3edeb84aull, 0xa72302ae4edc21d5ull }}, {{ 0x69142b0560284acbull, 0x4bc4b8c674b332e4ull, 0x875e1acf14995256ull }}, {{ 0x1ac9ae35c192ebecull, 0xf5af37c08efffcecull, 0x49ad0c16cdfd375eull }}, {{ 0x0be0ce198fbd3737ull, 0x98d82d8595ffe139ull, 0xe0c278e40be429b5ull }}, {{ 0x76c80cff9d64282aull, 0xf871c737dbfecc3aull, 0xc798b8e876e9a117ull }}, {{ 0xa3d081fc25e991a8ull, 0xb471c82e97f3fa48ull, 0xcbf73914a5204aefull }}, {{ 0x662513d97b1fb090ull, 0x0c71d1d1ef87c6d6ull, 0xf7a83ace7342ed5dull }}, {{ 0xfd72c67ecf3ce59dull, 0x7c7232335b4dc45full, 0xac924c10809d45a2ull }}, {{ 0xe67bc0f41860f81full, 0xdc75f6019109abbfull, 0xbdb6f8a50624b858ull }}, {{ 0x00d58988f3c9b134ull, 0x9c9b9c0faa60b57full, 0x6925b6723d6f3378ull }}, {{ 0x08575f5985e0ec04ull, 0x1e14189ca7c716f6ull, 0x1b792076665802b6ull }}, {{ 0x5369b97f3ac93829ull, 0x2cc8f61e8dc6e59cull, 0x12bb449fff701b1dull }}, {{ 0x42213ef84bdc3197ull, 0xbfd99d3189c4f81bull, 0xbb50ae3ffa610f23ull }}, {{ 0x954c75b2f699efe1ull, 0x7e8023ef61b1b110ull, 0x5126ce7fc7ca9765ull }}, {{ 0xd4fc98fda2035ecfull, 0xf1016759d0f0eaa5ull, 0x2b8410fdcde9e9f6ull }}, {{ 0x51ddf9e85421b411ull, 0x6a0e098229692a7aull, 0xb328a9ea0b2323a5ull }}, {{ 0x32abc313495108acull, 0x248c5f159e1ba8c7ull, 0xff96a3246f5f6476ull }}, {{ 0xfab59ec0dd2a56b6ull, 0x6d7bb6d82d1497c7ull, 0xfbe25f6c59b9ec9dull }}, {{ 0xcb183388a3a7631eull, 0x46d52471c2cdedcfull, 0xd6d7ba3b81433e26ull }}, {{ 0xeef203566489df2aull, 0xc4536c719c0b4a1dull, 0x646d46530ca06d7eull }}, {{ 0x5574215fed62b7a7ull, 0xab423c701870e52bull, 0xec44bf3e7e4446f3ull }}, {{ 0x56894dbf45db2c85ull, 0xb0965c60f468f3b1ull, 0x3aaf7870eeaac584ull }}, {{ 0x615d0978ba8fbd37ull, 0xe5df9bc98c1984edull, 0x4adab46952abb72eull }}, {{ 0xcda25eb7499d6422ull, 0xfabc15df78ff3145ull, 0xec8b0c1d3ab527d4ull }}, {{ 0x0857b328e025e950ull, 0xcb58dabab9f7ecbaull, 0x3d6e79244b138e51ull }}, {{ 0x536cff98c17b1d20ull, 0xf1788b4b43af3f44ull, 0x6650bb6aeec38f31ull }}, {{ 0x4241fbf78ecf2342ull, 0x6eb570f0a4d878abull, 0xff27522d53a397f3ull }}, {{ 0x9693d7ab94176092ull, 0x531669667074b6b0ull, 0xf78935c54463ef82ull }}, {{ 0xe1c66cb3c8e9c5b5ull, 0x3ee01e00648f22e5ull, 0xab5c19b4abe75b17ull }}, {{ 0xd1c03f05d921b916ull, 0x74c12c03ed975cfaull, 0xb199010eb7098ee8ull }}, {{ 0x3182763a7b513ad9ull, 0x8f8bb82747e9a1ccull, 0xeffa0a93265f9514ull }}, {{ 0xef189e48d12c4c76ull, 0x9b753188cf2051f9ull, 0x5fc469bf7fbbd2cdull }}, {{ 0x56f62ed82bbafc98ull, 0x1293ef58174333c3ull, 0xbdac217afd563c08ull }}, {{ 0x659dd471b54dddf4ull, 0xb9c75970e8a005a1ull, 0x68b94ecde55e5850ull }}, {{ 0xf82a4c71150aab84ull, 0x41c97e691640384dull, 0x173d140af5af7327ull }}, {{ 0xb1a6fc6ad26ab328ull, 0x91def01ade82330bull, 0xe862c86d98da7f88ull }}, {{ 0xf085dc2c382aff8eull, 0xb2b5610cb115fe74ull, 0x13dbd447f888fb55ull }}, {{ 0x653a99ba31adfb8cull, 0xfb15ca7eeadbf091ull, 0xc6964acfb559d158ull }}, {{ 0xf44a0145f0cbd377ull, 0xced9e8f52c9765adull, 0xc1deec1d15822d79ull }}, {{ 0x8ae40cbb67f642a8ull, 0x14831993bde9f8cbull, 0x92b53922d715c6c2ull }}, {{ 0x6ce87f520f9e9a92ull, 0xcd1effc56b23b7f3ull, 0xbb143b5c66d9c394ull }}, {{ 0x4114f9349c3209afull, 0x0335fdb62f652f82ull, 0x4eca519c0481a3d0ull }}, {{ 0x8ad1bc0e19f460daull, 0x201be91dd9f3db16ull, 0x13e730182d106620ull }}, {{ 0x6c31588d038bc888ull, 0x41171b2a83868ee1ull, 0xc707e0f1c2a3fd41ull }}, {{ 0x39ed75822375d54bull, 0x8ae70fa9234194ceull, 0xc64ec9719a67e48cull }}, {{ 0x43469715629a54efull, 0x6d069c9b608fd00eull, 0xbf13de70080eed7dull }}, {{ 0xa0c1e6d5da075157ull, 0x42421e11c59e208eull, 0x76c6b060509546e6ull }}, {{ 0x4793045a84492d63ull, 0x96952cb1b82d4592ull, 0xa3c2e3c325d4c4feull }}, {{ 0xcbbe2b892adbc5daull, 0xe1d3bef131c4b7b6ull, 0x659ce59f7a4fb1f1ull }}, {{ 0xf56db35bac95ba86ull, 0xd245756bf1af2d23ull, 0xf820f83ac71cf372ull }}, {{ 0x96490194bdd9493dull, 0x36b6963770d7c367ull, 0xb149b24bc721827cull }}, {{ 0xdeda0fcf6a7cdc62ull, 0x2321de2a686da20bull, 0xece0f6f5c74f18daull }}, {{ 0xb4849e1a28e09bd3ull, 0x5f52ada814485476ull, 0x40c9a599c916f885ull }}, {{ 0x0d2e2d0598c61642ull, 0xb93ac890cad34ca3ull, 0x87e07801dae5b535ull }}, {{ 0x83cdc237f7bcde94ull, 0x3c4bd5a7ec40fe5eull, 0x4ec4b0128cf91419ull }}, {{ 0x2609962fad60b1c6ull, 0x5af6588f3a89efb1ull, 0x13aee0b981bac8fcull }}, {{ 0x7c5fdddcc5c6f1bfull, 0x8d9f759849635cebull, 0xc4d4c73f114bd9dbull }}, {{ 0xdbbeaa9fb9c5717aull, 0x883a97f2dde1a132ull, 0xb04fc876acf68293ull }}, {{ 0x9572aa3d41b66ec8ull, 0x5249ef7caad04bfcull, 0xe31dd4a2c1a119c3ull }}, {{ 0xd67aa664912053ccull, 0x36e35adeac22f7ddull, 0xdf2a4e5b904b01a1ull }}, {{ 0x60ca7fedab4345f6ull, 0x24e18cb2b95daeaaull, 0xb7a70f93a2ee104cull }}, {{ 0xc7e8ff48b0a0bb9dull, 0x70cf7efb3da8d2a7ull, 0x2c869bc45d4ca2f9ull }}, {{ 0xcf19f8d6e6475422ull, 0x681af5d068983a8dull, 0xbd4215aba4fe5dbeull }}, {{ 0x1703b864fec94951ull, 0x110d9a2415f2498aull, 0x6494d8b471efa970ull }}, {{ 0xe62533f1f3dcdd25ull, 0xaa880568db76df64ull, 0xedd0770c735c9e60ull }}, {{ 0xfd74077386a0a376ull, 0xa950361892a4b9f0ull, 0x4a24a67c819e2fc6ull }}, {{ 0xe6884a8342466298ull, 0x9d221cf5ba6f4369ull, 0xe56e80dd102dddc2ull }}, {{ 0x0152e92096bfd9eeull, 0x235521994858a223ull, 0xf65108a2a1caa99aull }}, {{ 0x0d3d1b45e37e8347ull, 0x61534ffcd376555eull, 0x9f2a565a51eaa005ull }}, {{ 0x846310bae2f120c8ull, 0xcd411fe0429f55acull, 0x37a75f87332a4035ull }}, {{ 0x2bdea74cdd6b47d4ull, 0x048b3ec29a3958bdull, 0x2c89bb47ffa6821aull }}, {{ 0xb6b28900a630ce4bull, 0x2d70739a063d7763ull, 0xbd6150cffc811504ull }}, {{ 0x22f95a067de80ef1ull, 0xc66484043e66a9e5ull, 0x65cd281fdd0ad229ull }}, {{ 0x5dbd8440eb109565ull, 0xbfed282a7002a2f3ull, 0xfa03913ea26c35a1ull }}, {{ 0xa9672a892ea5d5f6ull, 0x7f4391a8601a5d81ull, 0xc423ac72583a1851ull }}, {{ 0x9e07a95bd27a5b9cull, 0xf8a3b093c107a710ull, 0xa964bc777244f32eull }}, {{ 0x2c4c9d9638c7941bull, 0xb664e5c58a4c86a6ull, 0x9def5caa76b17fd5ull }}, {{ 0xbafe27de37cbc90cull, 0x1ff0f9b766fd427dull, 0x2b599ea8a2eefe59ull }}, {{ 0x4ded8eae2df5da7cull, 0x3f69c12a05e498e9ull, 0xb18032965d55ef7bull }}, {{ 0x0b4792cdcb9a88d4ull, 0x7a218ba43aedf91dull, 0xef01f9dfa55b5ad0ull }}, {{ 0x70cbbc09f4095845ull, 0xc54f746a4d4bbb22ull, 0x5613c2bc75918c24ull }}, {{ 0x67f55863885d72aeull, 0xb51a8c2704f54f58ull, 0x5cc59b5c97af796full }}, {{ 0x0f9573e353a67acbull, 0x1309798631951974ull, 0x9fb8119decdabe5dull }}, {{ 0x9bd686e14480cbf2ull, 0xbe5ebf3defd2fe88ull, 0x3d30b02b408b6fa2ull }}, {{ 0x166144ccad07f76full, 0x6fb3786b5e3df156ull, 0x63e6e1b085725c5bull }}, {{ 0xdfccaffec24faa58ull, 0x5d02b431ae6b6d5cull, 0xe704d0e536779b92ull }}, {{ 0xbdfedff3971ca775ull, 0xa21b09f0d03245a0ull, 0x063028f420ac13b7ull }}, {{ 0x6bf4bf83e71e8a90ull, 0x550e636821f6b847ull, 0x3de1998946b8c52cull }}, {{ 0x378f7b270731699dull, 0x528fe21153a332caull, 0x6acfff5cc337b3bbull }}, {{ 0x2b9acf8647ee2021ull, 0x399ed4ad445ffbe6ull, 0x2c1ff99fa02d0551ull }}, {{ 0xb40c1b3ecf4d4146ull, 0x40344ec4abbfd6fdull, 0xb93fc03c41c2352cull }}, {{ 0x0879107419048cc0ull, 0x820b13aeb57e65e9ull, 0x3c7d825a919613baull }}, {{ 0x54baa488fa2d7f7eull, 0x146ec4d316effb1aull, 0x5ce71789afdcc549ull }}, {{ 0x4f4a6d59c5c6faf0ull, 0xcc53b03ee55fcf07ull, 0xa106eb60de9fb4daull }}, {{ 0x18e84581b9c5cd61ull, 0xfb44e274f5be1649ull, 0x4a4531c8b23d108bull }}, {{ 0xf912b71141ba05caull, 0xd0b0d891996cdedaull, 0xe6b3f1d6f662a577ull }}, {{ 0xbabb26ac914439e5ull, 0x26e875affe40b48dull, 0x030772659fda76aeull }}, {{ 0x4b4f82bdacaa42f2ull, 0x851498dfee870d89ull, 0x1e4a77f83e88a2cdull }}, {{ 0xf11b1b68bea69d6full, 0x32cdf8bf5146875cull, 0x2ee8afb271565c07ull }}, {{ 0x6b0f12177282265aull, 0xfc0bb7792cc149a1ull, 0xd516dcf86d5f9847ull }}, {{ 0x2e96b4ea79157f87ull, 0xd8752abbbf8ce04eull, 0x52e4a1b445bbf2cfull }}, {{ 0xd1e31128bad6fb4bull, 0x7493ab557b80c30dull, 0x3cee510ab9577c1eull }}, {{ 0x32deab974c65d0ecull, 0x8dc4b156d3079e8aull, 0x614f2a6b3d6ad930ull }}, {{ 0xfcb2b3e8fbfa2937ull, 0x89aeed643e4c3165ull, 0xcd17a830662c7be5ull }}, {{ 0xdefb0719d7c59c23ull, 0x60d545ea6ef9edfbull, 0x02ec91e3fdbcd6f7ull }}, {{ 0xb5ce47026db81962ull, 0xc854bb2855c34bd6ull, 0x1d3db2e7e96065a9ull }}, {{ 0x1a0ec6184930fdd1ull, 0xd34f4f9359a0f663ull, 0x2468fd0f1dc3f8a1ull }}, {{ 0x0493bcf2dbe9ea29ull, 0x41191bc180499fdfull, 0x6c19e29729a7b652ull }}, {{ 0x2dc5617c9723259aull, 0x8afb158f02e03eb6ull, 0x3902d9e7a08d1f36ull }}, {{ 0xc9b5cedde75f77ffull, 0x6dced7961cc2731dull, 0x3a1c830c45833821ull }}, {{ 0xe11a14ab09baaffaull, 0x4a146bdd1f987f29ull, 0x451d1e7ab720314eull }}, {{ 0xcb04ceae614adfc5ull, 0xe4cc36a33bf4f7a2ull, 0xb32330cb2741ed0eull }}, {{ 0xee3012cfccecbdafull, 0xeffa22605791ac5bull, 0xff5fe7ef88934294ull }}, {{ 0x4de0bc1e013f68d3ull, 0x5fc557c36bb0bb97ull, 0xf9bf0f5b55c099d1ull }}, {{ 0x0ac7592c0c7a1842ull, 0xbdb56da234e753e9ull, 0xc17699915986022dull }}, {{ 0x6bc97bb87cc4f297ull, 0x691648561109471aull, 0x8ea1ffad7f3c15c9ull }}, {{ 0x35ded534dfb179ebull, 0x1aded35caa5cc708ull, 0x9253fcc6f858d9deull }}, {{ 0x1ab45410bceec32eull, 0x0cb4419ea79fc652ull, 0xb747dfc5b37882adull }}, {{ 0x0b0b48a761539fc8ull, 0x7f0a90328c3dbf35ull, 0x28cebdb902b51ac2ull }}, {{ 0x6e70d689cd443dd3ull, 0xf669a1f97a697812ull, 0x9813693a1b130b98ull }}, {{ 0x5068616204aa6a42ull, 0xa02053bec81eb0b8ull, 0xf0c21c450ebe73f9ull }}, {{ 0x2413cdd42ea82691ull, 0x41434573d132e733ull, 0x67951ab2937087c0ull }}, {{ 0x68c60a49d29181abull, 0x8ca0b6862bfd07ffull, 0x0bd30af9c2654d82ull }}, {{ 0x17bc66e239af10a9ull, 0x7e47213db7e24ffaull, 0x763e6dc197f50719ull }}, {{ 0xed5c04d640d6a69bull, 0xeec74c692ed71fc4ull, 0x9e70498fef9246feull }}, {{ 0x4598305e88628212ull, 0x53c8fc1bd4673db1ull, 0x3062df9f5bb6c5f5ull }}, {{ 0xb7f1e3b153d914b3ull, 0x45d9d9164c0868ecull, 0xe3dcbc399523bb95ull }}, {{ 0x2f72e4ed467acefeull, 0xba827adef854193full, 0xe69f5a3fd36553d4ull }}, {{ 0xda7cf144c0cc15eaull, 0x4918ccb5b348fc77ull, 0x0239867e41f5464full }}, {{ 0x88e16caf87f8db29ull, 0xdaf7ff1900d9dcaeull, 0x163f40ee9394bf18ull }}, {{ 0x58ce3edb4fb88f96ull, 0x8daff6fa08829ed1ull, 0xde788951c3cf76f8ull }}, {{ 0x780e74911d359bdbull, 0x88dfa5c4551a342dull, 0xb0b55d31a61aa5b5ull }}, {{ 0xb0908dab2418168aull, 0x58bc79ab530609c6ull, 0xe715a3f07d0a7917ull }}, {{ 0xe5a588af68f0e167ull, 0x775cc0b13e3c61c2ull, 0x06d86764e268bae9ull }}, {{ 0xf87756da1968ce01ull, 0xa99f86ec6e5bd19cull, 0x447409f0d8174d1eull }}, {{ 0xb4a96484fe180c0bull, 0xa03b453c4f963021ull, 0xac88636870e90332ull }}, {{ 0x0e9ded31ecf07870ull, 0x4250b45b1bdde151ull, 0xbd53e214691a1ffaull }}, {{ 0x922b43f34164b462ull, 0x97270b8f16aacd2aull, 0x6546d4cc1b053fc6ull }}, {{ 0xb5b0a7808def0bd8ull, 0xe7867396e2ac03a9ull, 0xf4c44ff90e347dc1ull }}, {{ 0x18e68b058b56766cull, 0x0b4083e4dab824a1ull, 0x8fab1fba8e0ce993ull }}, {{ 0xf9016e377160a03cull, 0x708526f08b316e4aull, 0x9caf3d498c811fbeull }}, {{ 0xba0e4e2a6dc64255ull, 0x653385656fee4eedull, 0x1ed864df7d0b3d70ull }}, {{ 0x448f0da849be9755ull, 0xf40335f65f4f1549ull, 0x3473f0bae2706663ull }}, {{ 0xad968892e171e956ull, 0x88201b9fb916d4dcull, 0x0c87674cd863ffe7ull }}, {{ 0xc7e155bcce731d58ull, 0x5141143d3ae4509eull, 0x7d4a090073e7ff0bull }}, {{ 0xcecd5960107f2575ull, 0x2c8aca644ceb2633ull, 0xe4e45a04870ff671ull }}, {{ 0x14057dc0a4f7768eull, 0xbd6be7eb012f7e06ull, 0xf0eb842d469fa06bull }}, {{ 0xc836e98671aaa18eull, 0x66370f2e0bdaec3cull, 0x693329c4c23c4435ull }}, {{ 0xd2251f4070aa4f8bull, 0xfe2697cc768d3a5full, 0x1bffa1af965aaa15ull }}, {{ 0x3573388466a71b6cull, 0xed81edfca18447beull, 0x17fc50dbdf8aa4dbull }}, {{ 0x1680352c02871238ull, 0x47134bde4f2acd6eull, 0xefdb2896bb6a7097ull }}, {{ 0xe10213b81946b62cull, 0xc6c0f6af17ac064cull, 0x5e8f95e3522865e8ull }}, {{ 0xca14c530fcc31db5ull, 0xc389a2d6ecb83f00ull, 0xb19bdae13593fb17ull }}, {{ 0xe4cfb3e9df9f2914ull, 0xa3605c653f327607ull, 0xf0168ccc17c7ceedull }}, {{ 0xf01d0722bc379ac8ull, 0x61c39bf477f89c4eull, 0x60e17ff8edce1548ull }}, {{ 0x6122475b5a2c0bccull, 0xd1a4178cafb61b15ull, 0xc8ceffb94a0cd4d3ull }}, {{ 0xcb56c99185b875fbull, 0x3068eb7edd1d0ed5ull, 0xd815fd3ce4805046ull }}, {{ 0xf163dfaf39349bcdull, 0xe41932f4a3229459ull, 0x70dbe460ed0322bdull }}, {{ 0x6de6bcd83c0e1600ull, 0xe8fbfd8e5f59cb83ull, 0x6896ebc9421f5b6aull }}, {{ 0x4b036072588cdbfdull, 0x19d7e78fb981f322ull, 0x15e535dc9539922dull }}, {{ 0xee21c477758097e3ull, 0x026f0b9d3f137f56ull, 0xdaf41a9dd43fb5c3ull }}, {{ 0x4d51acaa9705eedfull, 0x1856742476c2f965ull, 0x8d890a2a4a7d199eull }}, {{ 0x0530bea9e63b54b8ull, 0xf360896ca39dbdf5ull, 0x875a65a6e8e3002cull }}, {{ 0x33e772a2fe514f31ull, 0x81c55e3e64296b92ull, 0x4987f88518de01c1ull }}, {{ 0x070a7a5def2d17e6ull, 0x11b5ae6fe99e33b6ull, 0xdf4fb532f8ac118full }}, {{ 0x4668c7ab57c2eefeull, 0xb118d05f202e051cull, 0xb91d13fdb6b8af96ull }}, {{ 0xc017ccb16d9d55ecull, 0xeaf823b741cc331aull, 0x3b22c7e92336dbe2ull }}, {{ 0x80edfeee48255b36ull, 0x2db1652891f9ff0bull, 0x4f5bcf1b602496ddull }}, {{ 0x094bf54ed175901full, 0xc8edf395b3c3f673ull, 0x19961711c16de4a3ull }}, {{ 0x5cf795142e97a136ull, 0xd94b83d905a7a07eull, 0xffdce6b18e4aee65ull }}, {{ 0xa1abd2c9d1ec4c1aull, 0x7cf3267a388c44efull, 0xfea102ef8eed4ffaull }}, {{ 0x50b63be2333af905ull, 0xe17f80c6357ab15cull, 0xf24a1d5b95451fc8ull }}, {{ 0x271e56d6004dba32ull, 0xcefb07be16caed9bull, 0x76e52593d4b33dd8ull }}, {{ 0x872f645c030945f7ull, 0x15ce4d6ce3ed480full, 0xa4f377c64f006a78ull }}, {{ 0x47d9eb981e5cbba2ull, 0xda0f0640e744d09bull, 0x7182adbf160428b0ull }}, {{ 0xce8333f12f9f5451ull, 0x84963e8908b02610ull, 0x6f1ac976dc2996e8ull }}, {{ 0x1120076bdc394b26ull, 0x2dde715a56e17ca8ull, 0x570bdea4999fe515ull }}, {{ 0xab404a369a3cef7bull, 0xcab06d8764cede90ull, 0x6676b26e003ef2d3ull }}, {{ 0xb082e62206615aceull, 0xeae44749f014b1a6ull, 0x00a2f84c02757c45ull }}, {{ 0xe51cfd543fcd8c0bull, 0x2ceac8e360cef082ull, 0x065db2f81896dabbull }}, {{ 0xf321e54a7e077872ull, 0xc12bd8e1c815651cull, 0x3fa8fdb0f5e48b4full }}, {{ 0x7f52f4e8ec4ab472ull, 0x8bb678d1d0d5f321ull, 0x7c99e8e99aed711dull }}, {{ 0xf93d91193aeb0c72ull, 0x7520b832285b7f4eull, 0xde0319200d466b27ull }}, {{ 0xbc67aafc4d2e7c75ull, 0x934731f59392f915ull, 0xac1efb4084c02f8aull }}, {{ 0x5c0caddb03d0dc95ull, 0xc0c7f397c3bdbad9ull, 0xb935d0852f81db69ull }}, {{ 0x987eca8e26289dd1ull, 0x87cf83eda5694c7dull, 0x3c1a2533db129221ull }}, {{ 0xf4f3e98d7d962a25ull, 0x4e1b2748761cfce7ull, 0x590574068eb9b54full }}, {{ 0x91871f86e7dda573ull, 0x0d0f88d49d21e10full, 0x7a36884193411519ull }}, {{ 0xaf473b450ea8767cull, 0x829b584e2352ca9bull, 0xc621528fc08ad2faull }}, {{ 0xd8c850b29294a0d5ull, 0x1a11730d613bea14ull, 0xbd4d399d856c3dc9ull }}, {{ 0x77d326f9b9ce4855ull, 0x04ae7e85cc5724d0ull, 0x65044027363a69dbull }}, {{ 0xae3f85c1420ed354ull, 0x2ed0f139fb677024ull, 0xf22a81881e48228eull }}, {{ 0xce7b398c94944143ull, 0xd4296c43d20a616eull, 0x75a90f512ed1598dull }}, {{ 0x10d03f7dcdca8ca2ull, 0x499e3aa63467ce54ull, 0x989a992bd42d7f8aull }}, {{ 0xa8227aea09e97e51ull, 0xe02e4a7e0c0e0f48ull, 0xf609fbb649c6fb66ull }}, {{ 0x9158cd24631eef28ull, 0xc1cee8ec788c98d6ull, 0x9c63d51ee1c5d204ull }}, {{ 0xad78036bdf355794ull, 0x9215193cb57df861ull, 0x1be65334d1ba342full }}, {{ 0xc6b02236b8156bcdull, 0xb4d2fc5f16ebb3d0ull, 0x16ff4010314609dbull }}, {{ 0xc2e1562330d635feull, 0x103ddbb6e5350627ull, 0xe5f880a1ecbc6295ull }}, {{ 0x9ccd5d5fe85e1beeull, 0xa26a9524f4123d8dull, 0xfbb506533f5bd9d2ull }}, {{ 0x2005a5bf13ad1748ull, 0x5829d37188b66788ull, 0xd5123f407996823aull }}, {{ 0x40387976c4c2e8d3ull, 0x71a2426f57200b51ull, 0x52b67884bfe11647ull }}, {{ 0x8234bea3af9d1842ull, 0x705698596740712cull, 0x3b20b52f7ecadecaull }}, {{ 0x160f7264dc22f291ull, 0x6361f37e08846bbdull, 0x4f4713daf3ecb3e8ull }}, {{ 0xdc9a77f0995d79a6ull, 0xe1d382ec552c3562ull, 0x18c6c68d873f0713ull }}, {{ 0x9e08af65fda6c07cull, 0xd2431d3b53ba15dcull, 0xf7c3c187487646c6ull }}, {{ 0x2c56d9fbe88384d9ull, 0x369f24514544da9eull, 0xada58f48d49ec3c4ull }}, {{ 0xbb6483d715233075ull, 0x22376b2cb4b08a2dull, 0xc87798d84e33a5aaull }}, {{ 0x51ed2666d35fe497ull, 0x562a2fbf0ee565c9ull, 0xd4abf8730e0478a5ull }}, {{ 0x3343800441beede5ull, 0x5da5dd7694f5f9ddull, 0x4eb7b47e8c2cb675ull }}, {{ 0x00a3002a91754af2ull, 0xa87aa6a1d19bc2a4ull, 0x132d0cf179bf2095ull }}, {{ 0x065e01a9ae94ed70ull, 0x94ca825230159a68ull, 0xbfc2816ec17745d8ull }}, {{ 0x3fac10a0d1d1465full, 0xcfe91735e0d80810ull, 0x7d990e538ea8ba75ull }}, {{ 0x7cb8a648322cbfb4ull, 0x1f1ae81ac87050a2ull, 0xe7fa8f439297489aull }}, {{ 0xdf367ed1f5bf7d06ull, 0x370d110bd4632658ull, 0x0fc998a3b9e8d605ull }}, {{ 0xb820f433997ae238ull, 0x2682aa764bdf7f78ull, 0x9ddff66543185c34ull }}, {{ 0x31498a03feccd62bull, 0x811aa89ef6bafab7ull, 0x2abf9ff49ef39a09ull }}, {{ 0xecdf6427f4005db0ull, 0x0b0a9635a34dcb27ull, 0xab7c3f8e3584045full }}, {{ 0x40b9e98f8803a8e5ull, 0x6e69de186109ef8full, 0xb2da7b8e17282bb6ull }}, {{ 0x87431f9b502498eeull, 0x5022acf3ca635b98ull, 0xfc88d38ce791b520ull }}, {{ 0x489f3c11216df949ull, 0x215ac185e7e193f5ull, 0xdd5843810bb11343ull }}, {{ 0xd63858ab4e4bbcddull, 0x4d8b8f3b0ecfc794ull, 0xa572a30a74eac09full }}, {{ 0x5e3376b10ef560a2ull, 0x0773984e941dcbd0ull, 0x767a5e68912b8639ull }}, {{ 0xae02a2ea9595c658ull, 0x4a83f311c929f623ull, 0xa0c7b015abb33e3aull }}, {{ 0xcc1a5d29d7d9bf70ull, 0xe9277eb1dba39d64ull, 0x47cce0d8b5006e46ull }}, {{ 0xf907a3a26e817a5full, 0x1b8af2f2946425efull, 0xce00c87712044ec5ull }}, {{ 0xba4c6458510ec7b4ull, 0x136d7d79cbe97b5full, 0x0c07d4a6b42b13b3ull }}, {{ 0x46fbeb732a93cd03ull, 0xc246e6c1f71ed1bdull, 0x784e4e8309aec4feull }}, {{ 0xc5d7327fa9c6021full, 0x96c50393a7343164ull, 0xb30f111e60d3b1f3ull }}, {{ 0xba67f8fca1bc1535ull, 0xe3b223c48809edefull, 0xfe96ab2fc844f383ull }}, {{ 0x480fb9de5158d410ull, 0xe4f565ad50634b5dull, 0xf1e2afddd2b18326ull }}, {{ 0xd09d42af2d78489full, 0xf195f8c523e0f1a4ull, 0x72dadeaa3aef1f84ull }}, {{ 0x26249ad7c6b2d63aull, 0x6fdbb7b366c97070ull, 0x7c8cb2a64d573b31ull }}, {{ 0x7d6e0c6dc2fc5e48ull, 0x5e952d0203de6461ull, 0xdd7efa7f05684feeull }}, {{ 0xe64c7c499ddbaed1ull, 0xb1d3c21426afebceull, 0xa6f5c8f636131f4full }} }; BID_F80_CONST_DEF( c_zero, 0000000000000000, 0000000000000000); // 0.0 BID_F80_CONST_DEF( c_pi_ov_2, 3fff921fb54442d1, 8469898cc51701b8); // pi/2 BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_sin, BID_UINT64, x) // Local variables. BID_UINT64 res; int s, e; BID_UINT64 c; BID_F80_TYPE xd, yd; BID_UINT192 m; BID_UINT256 p; int sf, k, ef, el; BID_F80_ASSIGN(yd, c_zero); // Decompose the input and check for NaN and infinity. s = x >> 63; if ((x & (3ull<<61)) == (3ull<<61)) { if ((x & (0xFull<<59)) == (0xFull<<59)) { if ((x & (0x1Full<<58)) != (0x1Full<<58)) { // input is infinite, so return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = BID64_NAN; BID_RETURN (res); } else { // input is NaN, so quiet/canonize it etc. #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags(pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } } else { // "large coefficient" input e = ((x >> 51) & ((1ull<<10)-1)) - 398; c = (1ull<<53) + (x & ((1ull<<51)-1)); if ((unsigned long long)(c) > 9999999999999999ull) c = 0ull; } } else { // "small coefficient" input e = ((x >> 53) & ((1ull<<10)-1)) - 398; c = x & ((1ull<<53)-1); } // Make sure we treat zero even with huge exponent as small if (c == 0) e = -18; // If the input is trivially <= 1/10, just do the naive computation // since no range reduction is needed and the function is well-conditioned if (e < -17) { BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_sin( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN(res); } // Pick out the appropriate modulus for the exponent and multiply by coeff // Since we discard the top word p.w[3], we could specially optimize this. m = bid_decimal64_moduli[e+17]; __mul_64x192_to_256(p,c,m); // Shift up by two bits to give an integer part k and a fraction // modulo (pi/2). Note that we have to do this afterwards rather than // use modulo (pi/2) reduction at the start to keep integer parities. k = p.w[2] >> 62; sll192_short(p.w[2],p.w[1],p.w[0],2); // If the fraction is >= 1/2, add 1 to integer and complement the fraction // with an appropriate sign change so we have a "rounded to nearest" version // (Complementing is slightly different from negation but it's negligible.) // Set "sf" to the correct sign for the fraction if (p.w[2] >= 0x8000000000000000ull) { k = (k + 1) & 3; p.w[2] = ~p.w[2]; p.w[1] = ~p.w[1]; p.w[0] = ~p.w[0]; sf = 1 - s; } else { sf = s; } // Also correct k to take into account the sign if (s) k = (-k) & 3; // Normalize the binary fraction with exponent ef if (p.w[2] == 0) { ef = 16382-64; p.w[2] = p.w[1]; p.w[1] = p.w[0]; } else ef = 16382; el = clz64_nz(p.w[2]); ef = ef - el; if (el != 0) sll128_short(p.w[2],p.w[1],el); // Now package it as a double-extended number. { BID_F80_CONST tmp; BID_F80_PACK_TRIG( tmp, sf, ef, p.w[2] ); BID_F80_ASSIGN( xd, tmp ); } // Multiply by pi/2 so we can use regular binary trig functions. __bid_f80_mul( xd, c_pi_ov_2.v, xd ); // Now use the trig function depending on k: switch(k) { case 0: __bid_f80_sin( yd, xd ); break; case 1: __bid_f80_cos( yd, xd ); break; case 2: __bid_f80_sin( yd, xd ); __bid_f80_neg( yd, yd ); break; case 3: __bid_f80_cos( yd, xd ); __bid_f80_neg( yd, yd ); break; default: break; // default added to avoid compiler warning } BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN(res); } LIBRARY/src/bid128_to_uint16.c0000644€­ Q01134020000000662215113665770014711 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffff0000 #define INVALID_RESULT 0x8000 BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid128_to_uint16_rnint, BID_UINT128, x, bid128_to_uint32_rnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid128_to_uint16_xrnint, BID_UINT128, x, bid128_to_uint32_xrnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid128_to_uint16_rninta, BID_UINT128, x, bid128_to_uint32_rninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid128_to_uint16_xrninta, BID_UINT128, x, bid128_to_uint32_xrninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid128_to_uint16_int, BID_UINT128, x, bid128_to_uint32_int, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid128_to_uint16_xint, BID_UINT128, x, bid128_to_uint32_xint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid128_to_uint16_floor, BID_UINT128, x, bid128_to_uint32_floor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid128_to_uint16_ceil, BID_UINT128, x, bid128_to_uint32_ceil, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid128_to_uint16_xfloor, BID_UINT128, x, bid128_to_uint32_xfloor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid128_to_uint16_xceil, BID_UINT128, x, bid128_to_uint32_xceil, unsigned int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid128_mul.c0000644€­ Q01134020000003373415113665770013662 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #if DECIMAL_CALL_BY_REFERENCE void bid64dq_mul (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64dq_mul (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT128 x1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qq_mul (&res, &x1, py _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid64qq_mul (x1, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64qd_mul (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64qd_mul (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT128 y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qq_mul (&res, px, &y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid64qq_mul (x, y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64qq_mul (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px, y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64qq_mul (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 z = { {0x0000000000000000ull, 0x5ffe000000000000ull} }; BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT64 x_sign, y_sign, p_sign; BID_UINT64 x_exp, y_exp, p_exp; int true_p_exp; BID_UINT128 C1, C2; BID_SWAP128 (z); // skip cases where at least one operand is NaN or infinity if (!(((x.w[BID_HIGH_128W] & MASK_NAN) == MASK_NAN) || ((y.w[BID_HIGH_128W] & MASK_NAN) == MASK_NAN) || ((x.w[BID_HIGH_128W] & MASK_ANY_INF) == MASK_INF) || ((y.w[BID_HIGH_128W] & MASK_ANY_INF) == MASK_INF))) { // x, y are 0 or f but not inf or NaN => unpack the arguments and check // for non-canonical values x_sign = x.w[BID_HIGH_128W] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[BID_HIGH_128W] & MASK_COEFF; C1.w[0] = x.w[BID_LOW_128W]; // check for non-canonical values - treated as zero if ((x.w[BID_HIGH_128W] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 => non-canonical x_exp = (x.w[BID_HIGH_128W] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[BID_HIGH_128W] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } y_sign = y.w[BID_HIGH_128W] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C2.w[1] = y.w[BID_HIGH_128W] & MASK_COEFF; C2.w[0] = y.w[BID_LOW_128W]; // check for non-canonical values - treated as zero if ((y.w[BID_HIGH_128W] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 => non-canonical y_exp = (y.w[BID_HIGH_128W] << 2) & MASK_EXP; // biased and shifted left 49 bits C2.w[1] = 0; // significand high C2.w[0] = 0; // significand low } else { // G0_G1 != 11 y_exp = y.w[BID_HIGH_128W] & MASK_EXP; // biased and shifted left 49 bits if (C2.w[1] > 0x0001ed09bead87c0ull || (C2.w[1] == 0x0001ed09bead87c0ull && C2.w[0] > 0x378d8e63ffffffffull)) { // y is non-canonical if coefficient is larger than 10^34 -1 C2.w[1] = 0; C2.w[0] = 0; } else { // canonical ; } } p_sign = x_sign ^ y_sign; // sign of the product true_p_exp = (x_exp >> 49) - 6176 + (y_exp >> 49) - 6176; // true_p_exp, p_exp are used only for 0 * 0, 0 * f, or f * 0 if (true_p_exp < -398) p_exp = 0; // cannot be less than EXP_MIN else if (true_p_exp > 369) p_exp = (BID_UINT64) (369 + 398) << 53; // cannot be more than EXP_MAX else p_exp = (BID_UINT64) (true_p_exp + 398) << 53; if ((C1.w[1] == 0x0 && C1.w[0] == 0x0) || (C2.w[1] == 0x0 && C2.w[0] == 0x0)) { // x = 0 or y = 0 // the result is 0 res = p_sign | p_exp; // preferred exponent in [EXP_MIN, EXP_MAX] BID_RETURN (res) } // else continue } // swap x and y - ensure that a NaN in x has 'higher precedence' than one in y #if DECIMAL_CALL_BY_REFERENCE bid64qqq_fma (&res, &y, &x, &z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid64qqq_fma (y, x, z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128dd_mul (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px, y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128dd_mul (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 x1, y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_mul (&res, &x1, &y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_mul (x1, y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128dq_mul (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128dq_mul (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 x1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_mul (&res, &x1, py _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_mul (x1, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128qd_mul (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128qd_mul (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_mul (&res, px, &y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_mul (x, y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } // bid128_mul stands for bid128qq_mul #if DECIMAL_CALL_BY_REFERENCE void bid128_mul (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px, y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else DFP_WRAPFN_DFP_DFP(128, bid128_mul, 128, 128) BID_UINT128 bid128_mul (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 z = { {0x0000000000000000ull, 0x5ffe000000000000ull} }; BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT64 x_sign, y_sign, p_sign; BID_UINT64 x_exp, y_exp, p_exp; int true_p_exp; BID_UINT128 C1, C2; BID_SWAP128 (x); BID_SWAP128 (y); // skip cases where at least one operand is NaN or infinity if (!(((x.w[1] & MASK_NAN) == MASK_NAN) || ((y.w[1] & MASK_NAN) == MASK_NAN) || ((x.w[1] & MASK_ANY_INF) == MASK_INF) || ((y.w[1] & MASK_ANY_INF) == MASK_INF))) { // x, y are 0 or f but not inf or NaN => unpack the arguments and check // for non-canonical values x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for non-canonical values - treated as zero if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 => non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } y_sign = y.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C2.w[1] = y.w[1] & MASK_COEFF; C2.w[0] = y.w[0]; // check for non-canonical values - treated as zero if ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 => non-canonical y_exp = (y.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C2.w[1] = 0; // significand high C2.w[0] = 0; // significand low } else { // G0_G1 != 11 y_exp = y.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C2.w[1] > 0x0001ed09bead87c0ull || (C2.w[1] == 0x0001ed09bead87c0ull && C2.w[0] > 0x378d8e63ffffffffull)) { // y is non-canonical if coefficient is larger than 10^34 -1 C2.w[1] = 0; C2.w[0] = 0; } else { // canonical ; } } p_sign = x_sign ^ y_sign; // sign of the product true_p_exp = (x_exp >> 49) - 6176 + (y_exp >> 49) - 6176; // true_p_exp, p_exp are used only for 0 * 0, 0 * f, or f * 0 if (true_p_exp < -6176) p_exp = 0; // cannot be less than EXP_MIN else if (true_p_exp > 6111) p_exp = (BID_UINT64) (6111 + 6176) << 49; // cannot be more than EXP_MAX else p_exp = (BID_UINT64) (true_p_exp + 6176) << 49; if ((C1.w[1] == 0x0 && C1.w[0] == 0x0) || (C2.w[1] == 0x0 && C2.w[0] == 0x0)) { // x = 0 or y = 0 // the result is 0 res.w[1] = p_sign | p_exp; // preferred exponent in [EXP_MIN, EXP_MAX] res.w[0] = 0x0; BID_SWAP128 (res); BID_RETURN (res) } // else continue } BID_SWAP128 (x); BID_SWAP128 (y); BID_SWAP128 (z); // swap x and y - ensure that a NaN in x has 'higher precedence' than one in y #if DECIMAL_CALL_BY_REFERENCE bid128_fma (&res, &y, &x, &z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid128_fma (y, x, z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } LIBRARY/src/bid_b2d.h0000644€­ Q01134020000052306515113665770013307 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ const BID_UINT64 bid_d2b[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 80, 81, 800, 801, 880, 881, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 90, 91, 810, 811, 890, 891, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 82, 83, 820, 821, 808, 809, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 92, 93, 830, 831, 818, 819, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 84, 85, 840, 841, 88, 89, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 94, 95, 850, 851, 98, 99, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 86, 87, 860, 861, 888, 889, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 96, 97, 870, 871, 898, 899, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 180, 181, 900, 901, 980, 981, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 190, 191, 910, 911, 990, 991, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 182, 183, 920, 921, 908, 909, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 192, 193, 930, 931, 918, 919, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 184, 185, 940, 941, 188, 189, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 194, 195, 950, 951, 198, 199, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 186, 187, 960, 961, 988, 989, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 196, 197, 970, 971, 998, 999, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 280, 281, 802, 803, 882, 883, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 290, 291, 812, 813, 892, 893, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 282, 283, 822, 823, 828, 829, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 292, 293, 832, 833, 838, 839, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 284, 285, 842, 843, 288, 289, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 294, 295, 852, 853, 298, 299, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 286, 287, 862, 863, 888, 889, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 296, 297, 872, 873, 898, 899, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 380, 381, 902, 903, 982, 983, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 390, 391, 912, 913, 992, 993, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 382, 383, 922, 923, 928, 929, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 392, 393, 932, 933, 938, 939, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 384, 385, 942, 943, 388, 389, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 394, 395, 952, 953, 398, 399, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 386, 387, 962, 963, 988, 989, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 396, 397, 972, 973, 998, 999, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 480, 481, 804, 805, 884, 885, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 490, 491, 814, 815, 894, 895, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 482, 483, 824, 825, 848, 849, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 492, 493, 834, 835, 858, 859, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 484, 485, 844, 845, 488, 489, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 494, 495, 854, 855, 498, 499, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 486, 487, 864, 865, 888, 889, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 496, 497, 874, 875, 898, 899, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 580, 581, 904, 905, 984, 985, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 590, 591, 914, 915, 994, 995, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 582, 583, 924, 925, 948, 949, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 592, 593, 934, 935, 958, 959, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 584, 585, 944, 945, 588, 589, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 594, 595, 954, 955, 598, 599, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 586, 587, 964, 965, 988, 989, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 596, 597, 974, 975, 998, 999, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 680, 681, 806, 807, 886, 887, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 690, 691, 816, 817, 896, 897, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 682, 683, 826, 827, 868, 869, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 692, 693, 836, 837, 878, 879, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 684, 685, 846, 847, 688, 689, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 694, 695, 856, 857, 698, 699, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 686, 687, 866, 867, 888, 889, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 696, 697, 876, 877, 898, 899, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 780, 781, 906, 907, 986, 987, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 790, 791, 916, 917, 996, 997, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 782, 783, 926, 927, 968, 969, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 792, 793, 936, 937, 978, 979, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 784, 785, 946, 947, 788, 789, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 794, 795, 956, 957, 798, 799, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 786, 787, 966, 967, 988, 989, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 796, 797, 976, 977, 998, 999 }; const BID_UINT64 bid_d2b2[] = { 0000ull, 1000ull, 2000ull, 3000ull, 4000ull, 5000ull, 6000ull, 7000ull, 8000ull, 9000ull, 80000ull, 81000ull, 800000ull, 801000ull, 880000ull, 881000ull, 10000ull, 11000ull, 12000ull, 13000ull, 14000ull, 15000ull, 16000ull, 17000ull, 18000ull, 19000ull, 90000ull, 91000ull, 810000ull, 811000ull, 890000ull, 891000ull, 20000ull, 21000ull, 22000ull, 23000ull, 24000ull, 25000ull, 26000ull, 27000ull, 28000ull, 29000ull, 82000ull, 83000ull, 820000ull, 821000ull, 808000ull, 809000ull, 30000ull, 31000ull, 32000ull, 33000ull, 34000ull, 35000ull, 36000ull, 37000ull, 38000ull, 39000ull, 92000ull, 93000ull, 830000ull, 831000ull, 818000ull, 819000ull, 40000ull, 41000ull, 42000ull, 43000ull, 44000ull, 45000ull, 46000ull, 47000ull, 48000ull, 49000ull, 84000ull, 85000ull, 840000ull, 841000ull, 88000ull, 89000ull, 50000ull, 51000ull, 52000ull, 53000ull, 54000ull, 55000ull, 56000ull, 57000ull, 58000ull, 59000ull, 94000ull, 95000ull, 850000ull, 851000ull, 98000ull, 99000ull, 60000ull, 61000ull, 62000ull, 63000ull, 64000ull, 65000ull, 66000ull, 67000ull, 68000ull, 69000ull, 86000ull, 87000ull, 860000ull, 861000ull, 888000ull, 889000ull, 70000ull, 71000ull, 72000ull, 73000ull, 74000ull, 75000ull, 76000ull, 77000ull, 78000ull, 79000ull, 96000ull, 97000ull, 870000ull, 871000ull, 898000ull, 899000ull, 100000ull, 101000ull, 102000ull, 103000ull, 104000ull, 105000ull, 106000ull, 107000ull, 108000ull, 109000ull, 180000ull, 181000ull, 900000ull, 901000ull, 980000ull, 981000ull, 110000ull, 111000ull, 112000ull, 113000ull, 114000ull, 115000ull, 116000ull, 117000ull, 118000ull, 119000ull, 190000ull, 191000ull, 910000ull, 911000ull, 990000ull, 991000ull, 120000ull, 121000ull, 122000ull, 123000ull, 124000ull, 125000ull, 126000ull, 127000ull, 128000ull, 129000ull, 182000ull, 183000ull, 920000ull, 921000ull, 908000ull, 909000ull, 130000ull, 131000ull, 132000ull, 133000ull, 134000ull, 135000ull, 136000ull, 137000ull, 138000ull, 139000ull, 192000ull, 193000ull, 930000ull, 931000ull, 918000ull, 919000ull, 140000ull, 141000ull, 142000ull, 143000ull, 144000ull, 145000ull, 146000ull, 147000ull, 148000ull, 149000ull, 184000ull, 185000ull, 940000ull, 941000ull, 188000ull, 189000ull, 150000ull, 151000ull, 152000ull, 153000ull, 154000ull, 155000ull, 156000ull, 157000ull, 158000ull, 159000ull, 194000ull, 195000ull, 950000ull, 951000ull, 198000ull, 199000ull, 160000ull, 161000ull, 162000ull, 163000ull, 164000ull, 165000ull, 166000ull, 167000ull, 168000ull, 169000ull, 186000ull, 187000ull, 960000ull, 961000ull, 988000ull, 989000ull, 170000ull, 171000ull, 172000ull, 173000ull, 174000ull, 175000ull, 176000ull, 177000ull, 178000ull, 179000ull, 196000ull, 197000ull, 970000ull, 971000ull, 998000ull, 999000ull, 200000ull, 201000ull, 202000ull, 203000ull, 204000ull, 205000ull, 206000ull, 207000ull, 208000ull, 209000ull, 280000ull, 281000ull, 802000ull, 803000ull, 882000ull, 883000ull, 210000ull, 211000ull, 212000ull, 213000ull, 214000ull, 215000ull, 216000ull, 217000ull, 218000ull, 219000ull, 290000ull, 291000ull, 812000ull, 813000ull, 892000ull, 893000ull, 220000ull, 221000ull, 222000ull, 223000ull, 224000ull, 225000ull, 226000ull, 227000ull, 228000ull, 229000ull, 282000ull, 283000ull, 822000ull, 823000ull, 828000ull, 829000ull, 230000ull, 231000ull, 232000ull, 233000ull, 234000ull, 235000ull, 236000ull, 237000ull, 238000ull, 239000ull, 292000ull, 293000ull, 832000ull, 833000ull, 838000ull, 839000ull, 240000ull, 241000ull, 242000ull, 243000ull, 244000ull, 245000ull, 246000ull, 247000ull, 248000ull, 249000ull, 284000ull, 285000ull, 842000ull, 843000ull, 288000ull, 289000ull, 250000ull, 251000ull, 252000ull, 253000ull, 254000ull, 255000ull, 256000ull, 257000ull, 258000ull, 259000ull, 294000ull, 295000ull, 852000ull, 853000ull, 298000ull, 299000ull, 260000ull, 261000ull, 262000ull, 263000ull, 264000ull, 265000ull, 266000ull, 267000ull, 268000ull, 269000ull, 286000ull, 287000ull, 862000ull, 863000ull, 888000ull, 889000ull, 270000ull, 271000ull, 272000ull, 273000ull, 274000ull, 275000ull, 276000ull, 277000ull, 278000ull, 279000ull, 296000ull, 297000ull, 872000ull, 873000ull, 898000ull, 899000ull, 300000ull, 301000ull, 302000ull, 303000ull, 304000ull, 305000ull, 306000ull, 307000ull, 308000ull, 309000ull, 380000ull, 381000ull, 902000ull, 903000ull, 982000ull, 983000ull, 310000ull, 311000ull, 312000ull, 313000ull, 314000ull, 315000ull, 316000ull, 317000ull, 318000ull, 319000ull, 390000ull, 391000ull, 912000ull, 913000ull, 992000ull, 993000ull, 320000ull, 321000ull, 322000ull, 323000ull, 324000ull, 325000ull, 326000ull, 327000ull, 328000ull, 329000ull, 382000ull, 383000ull, 922000ull, 923000ull, 928000ull, 929000ull, 330000ull, 331000ull, 332000ull, 333000ull, 334000ull, 335000ull, 336000ull, 337000ull, 338000ull, 339000ull, 392000ull, 393000ull, 932000ull, 933000ull, 938000ull, 939000ull, 340000ull, 341000ull, 342000ull, 343000ull, 344000ull, 345000ull, 346000ull, 347000ull, 348000ull, 349000ull, 384000ull, 385000ull, 942000ull, 943000ull, 388000ull, 389000ull, 350000ull, 351000ull, 352000ull, 353000ull, 354000ull, 355000ull, 356000ull, 357000ull, 358000ull, 359000ull, 394000ull, 395000ull, 952000ull, 953000ull, 398000ull, 399000ull, 360000ull, 361000ull, 362000ull, 363000ull, 364000ull, 365000ull, 366000ull, 367000ull, 368000ull, 369000ull, 386000ull, 387000ull, 962000ull, 963000ull, 988000ull, 989000ull, 370000ull, 371000ull, 372000ull, 373000ull, 374000ull, 375000ull, 376000ull, 377000ull, 378000ull, 379000ull, 396000ull, 397000ull, 972000ull, 973000ull, 998000ull, 999000ull, 400000ull, 401000ull, 402000ull, 403000ull, 404000ull, 405000ull, 406000ull, 407000ull, 408000ull, 409000ull, 480000ull, 481000ull, 804000ull, 805000ull, 884000ull, 885000ull, 410000ull, 411000ull, 412000ull, 413000ull, 414000ull, 415000ull, 416000ull, 417000ull, 418000ull, 419000ull, 490000ull, 491000ull, 814000ull, 815000ull, 894000ull, 895000ull, 420000ull, 421000ull, 422000ull, 423000ull, 424000ull, 425000ull, 426000ull, 427000ull, 428000ull, 429000ull, 482000ull, 483000ull, 824000ull, 825000ull, 848000ull, 849000ull, 430000ull, 431000ull, 432000ull, 433000ull, 434000ull, 435000ull, 436000ull, 437000ull, 438000ull, 439000ull, 492000ull, 493000ull, 834000ull, 835000ull, 858000ull, 859000ull, 440000ull, 441000ull, 442000ull, 443000ull, 444000ull, 445000ull, 446000ull, 447000ull, 448000ull, 449000ull, 484000ull, 485000ull, 844000ull, 845000ull, 488000ull, 489000ull, 450000ull, 451000ull, 452000ull, 453000ull, 454000ull, 455000ull, 456000ull, 457000ull, 458000ull, 459000ull, 494000ull, 495000ull, 854000ull, 855000ull, 498000ull, 499000ull, 460000ull, 461000ull, 462000ull, 463000ull, 464000ull, 465000ull, 466000ull, 467000ull, 468000ull, 469000ull, 486000ull, 487000ull, 864000ull, 865000ull, 888000ull, 889000ull, 470000ull, 471000ull, 472000ull, 473000ull, 474000ull, 475000ull, 476000ull, 477000ull, 478000ull, 479000ull, 496000ull, 497000ull, 874000ull, 875000ull, 898000ull, 899000ull, 500000ull, 501000ull, 502000ull, 503000ull, 504000ull, 505000ull, 506000ull, 507000ull, 508000ull, 509000ull, 580000ull, 581000ull, 904000ull, 905000ull, 984000ull, 985000ull, 510000ull, 511000ull, 512000ull, 513000ull, 514000ull, 515000ull, 516000ull, 517000ull, 518000ull, 519000ull, 590000ull, 591000ull, 914000ull, 915000ull, 994000ull, 995000ull, 520000ull, 521000ull, 522000ull, 523000ull, 524000ull, 525000ull, 526000ull, 527000ull, 528000ull, 529000ull, 582000ull, 583000ull, 924000ull, 925000ull, 948000ull, 949000ull, 530000ull, 531000ull, 532000ull, 533000ull, 534000ull, 535000ull, 536000ull, 537000ull, 538000ull, 539000ull, 592000ull, 593000ull, 934000ull, 935000ull, 958000ull, 959000ull, 540000ull, 541000ull, 542000ull, 543000ull, 544000ull, 545000ull, 546000ull, 547000ull, 548000ull, 549000ull, 584000ull, 585000ull, 944000ull, 945000ull, 588000ull, 589000ull, 550000ull, 551000ull, 552000ull, 553000ull, 554000ull, 555000ull, 556000ull, 557000ull, 558000ull, 559000ull, 594000ull, 595000ull, 954000ull, 955000ull, 598000ull, 599000ull, 560000ull, 561000ull, 562000ull, 563000ull, 564000ull, 565000ull, 566000ull, 567000ull, 568000ull, 569000ull, 586000ull, 587000ull, 964000ull, 965000ull, 988000ull, 989000ull, 570000ull, 571000ull, 572000ull, 573000ull, 574000ull, 575000ull, 576000ull, 577000ull, 578000ull, 579000ull, 596000ull, 597000ull, 974000ull, 975000ull, 998000ull, 999000ull, 600000ull, 601000ull, 602000ull, 603000ull, 604000ull, 605000ull, 606000ull, 607000ull, 608000ull, 609000ull, 680000ull, 681000ull, 806000ull, 807000ull, 886000ull, 887000ull, 610000ull, 611000ull, 612000ull, 613000ull, 614000ull, 615000ull, 616000ull, 617000ull, 618000ull, 619000ull, 690000ull, 691000ull, 816000ull, 817000ull, 896000ull, 897000ull, 620000ull, 621000ull, 622000ull, 623000ull, 624000ull, 625000ull, 626000ull, 627000ull, 628000ull, 629000ull, 682000ull, 683000ull, 826000ull, 827000ull, 868000ull, 869000ull, 630000ull, 631000ull, 632000ull, 633000ull, 634000ull, 635000ull, 636000ull, 637000ull, 638000ull, 639000ull, 692000ull, 693000ull, 836000ull, 837000ull, 878000ull, 879000ull, 640000ull, 641000ull, 642000ull, 643000ull, 644000ull, 645000ull, 646000ull, 647000ull, 648000ull, 649000ull, 684000ull, 685000ull, 846000ull, 847000ull, 688000ull, 689000ull, 650000ull, 651000ull, 652000ull, 653000ull, 654000ull, 655000ull, 656000ull, 657000ull, 658000ull, 659000ull, 694000ull, 695000ull, 856000ull, 857000ull, 698000ull, 699000ull, 660000ull, 661000ull, 662000ull, 663000ull, 664000ull, 665000ull, 666000ull, 667000ull, 668000ull, 669000ull, 686000ull, 687000ull, 866000ull, 867000ull, 888000ull, 889000ull, 670000ull, 671000ull, 672000ull, 673000ull, 674000ull, 675000ull, 676000ull, 677000ull, 678000ull, 679000ull, 696000ull, 697000ull, 876000ull, 877000ull, 898000ull, 899000ull, 700000ull, 701000ull, 702000ull, 703000ull, 704000ull, 705000ull, 706000ull, 707000ull, 708000ull, 709000ull, 780000ull, 781000ull, 906000ull, 907000ull, 986000ull, 987000ull, 710000ull, 711000ull, 712000ull, 713000ull, 714000ull, 715000ull, 716000ull, 717000ull, 718000ull, 719000ull, 790000ull, 791000ull, 916000ull, 917000ull, 996000ull, 997000ull, 720000ull, 721000ull, 722000ull, 723000ull, 724000ull, 725000ull, 726000ull, 727000ull, 728000ull, 729000ull, 782000ull, 783000ull, 926000ull, 927000ull, 968000ull, 969000ull, 730000ull, 731000ull, 732000ull, 733000ull, 734000ull, 735000ull, 736000ull, 737000ull, 738000ull, 739000ull, 792000ull, 793000ull, 936000ull, 937000ull, 978000ull, 979000ull, 740000ull, 741000ull, 742000ull, 743000ull, 744000ull, 745000ull, 746000ull, 747000ull, 748000ull, 749000ull, 784000ull, 785000ull, 946000ull, 947000ull, 788000ull, 789000ull, 750000ull, 751000ull, 752000ull, 753000ull, 754000ull, 755000ull, 756000ull, 757000ull, 758000ull, 759000ull, 794000ull, 795000ull, 956000ull, 957000ull, 798000ull, 799000ull, 760000ull, 761000ull, 762000ull, 763000ull, 764000ull, 765000ull, 766000ull, 767000ull, 768000ull, 769000ull, 786000ull, 787000ull, 966000ull, 967000ull, 988000ull, 989000ull, 770000ull, 771000ull, 772000ull, 773000ull, 774000ull, 775000ull, 776000ull, 777000ull, 778000ull, 779000ull, 796000ull, 797000ull, 976000ull, 977000ull, 998000ull, 999000ull }; const BID_UINT64 bid_d2b3[] = { 0000000ull, 1000000ull, 2000000ull, 3000000ull, 4000000ull, 5000000ull, 6000000ull, 7000000ull, 8000000ull, 9000000ull, 80000000ull, 81000000ull, 800000000ull, 801000000ull, 880000000ull, 881000000ull, 10000000ull, 11000000ull, 12000000ull, 13000000ull, 14000000ull, 15000000ull, 16000000ull, 17000000ull, 18000000ull, 19000000ull, 90000000ull, 91000000ull, 810000000ull, 811000000ull, 890000000ull, 891000000ull, 20000000ull, 21000000ull, 22000000ull, 23000000ull, 24000000ull, 25000000ull, 26000000ull, 27000000ull, 28000000ull, 29000000ull, 82000000ull, 83000000ull, 820000000ull, 821000000ull, 808000000ull, 809000000ull, 30000000ull, 31000000ull, 32000000ull, 33000000ull, 34000000ull, 35000000ull, 36000000ull, 37000000ull, 38000000ull, 39000000ull, 92000000ull, 93000000ull, 830000000ull, 831000000ull, 818000000ull, 819000000ull, 40000000ull, 41000000ull, 42000000ull, 43000000ull, 44000000ull, 45000000ull, 46000000ull, 47000000ull, 48000000ull, 49000000ull, 84000000ull, 85000000ull, 840000000ull, 841000000ull, 88000000ull, 89000000ull, 50000000ull, 51000000ull, 52000000ull, 53000000ull, 54000000ull, 55000000ull, 56000000ull, 57000000ull, 58000000ull, 59000000ull, 94000000ull, 95000000ull, 850000000ull, 851000000ull, 98000000ull, 99000000ull, 60000000ull, 61000000ull, 62000000ull, 63000000ull, 64000000ull, 65000000ull, 66000000ull, 67000000ull, 68000000ull, 69000000ull, 86000000ull, 87000000ull, 860000000ull, 861000000ull, 888000000ull, 889000000ull, 70000000ull, 71000000ull, 72000000ull, 73000000ull, 74000000ull, 75000000ull, 76000000ull, 77000000ull, 78000000ull, 79000000ull, 96000000ull, 97000000ull, 870000000ull, 871000000ull, 898000000ull, 899000000ull, 100000000ull, 101000000ull, 102000000ull, 103000000ull, 104000000ull, 105000000ull, 106000000ull, 107000000ull, 108000000ull, 109000000ull, 180000000ull, 181000000ull, 900000000ull, 901000000ull, 980000000ull, 981000000ull, 110000000ull, 111000000ull, 112000000ull, 113000000ull, 114000000ull, 115000000ull, 116000000ull, 117000000ull, 118000000ull, 119000000ull, 190000000ull, 191000000ull, 910000000ull, 911000000ull, 990000000ull, 991000000ull, 120000000ull, 121000000ull, 122000000ull, 123000000ull, 124000000ull, 125000000ull, 126000000ull, 127000000ull, 128000000ull, 129000000ull, 182000000ull, 183000000ull, 920000000ull, 921000000ull, 908000000ull, 909000000ull, 130000000ull, 131000000ull, 132000000ull, 133000000ull, 134000000ull, 135000000ull, 136000000ull, 137000000ull, 138000000ull, 139000000ull, 192000000ull, 193000000ull, 930000000ull, 931000000ull, 918000000ull, 919000000ull, 140000000ull, 141000000ull, 142000000ull, 143000000ull, 144000000ull, 145000000ull, 146000000ull, 147000000ull, 148000000ull, 149000000ull, 184000000ull, 185000000ull, 940000000ull, 941000000ull, 188000000ull, 189000000ull, 150000000ull, 151000000ull, 152000000ull, 153000000ull, 154000000ull, 155000000ull, 156000000ull, 157000000ull, 158000000ull, 159000000ull, 194000000ull, 195000000ull, 950000000ull, 951000000ull, 198000000ull, 199000000ull, 160000000ull, 161000000ull, 162000000ull, 163000000ull, 164000000ull, 165000000ull, 166000000ull, 167000000ull, 168000000ull, 169000000ull, 186000000ull, 187000000ull, 960000000ull, 961000000ull, 988000000ull, 989000000ull, 170000000ull, 171000000ull, 172000000ull, 173000000ull, 174000000ull, 175000000ull, 176000000ull, 177000000ull, 178000000ull, 179000000ull, 196000000ull, 197000000ull, 970000000ull, 971000000ull, 998000000ull, 999000000ull, 200000000ull, 201000000ull, 202000000ull, 203000000ull, 204000000ull, 205000000ull, 206000000ull, 207000000ull, 208000000ull, 209000000ull, 280000000ull, 281000000ull, 802000000ull, 803000000ull, 882000000ull, 883000000ull, 210000000ull, 211000000ull, 212000000ull, 213000000ull, 214000000ull, 215000000ull, 216000000ull, 217000000ull, 218000000ull, 219000000ull, 290000000ull, 291000000ull, 812000000ull, 813000000ull, 892000000ull, 893000000ull, 220000000ull, 221000000ull, 222000000ull, 223000000ull, 224000000ull, 225000000ull, 226000000ull, 227000000ull, 228000000ull, 229000000ull, 282000000ull, 283000000ull, 822000000ull, 823000000ull, 828000000ull, 829000000ull, 230000000ull, 231000000ull, 232000000ull, 233000000ull, 234000000ull, 235000000ull, 236000000ull, 237000000ull, 238000000ull, 239000000ull, 292000000ull, 293000000ull, 832000000ull, 833000000ull, 838000000ull, 839000000ull, 240000000ull, 241000000ull, 242000000ull, 243000000ull, 244000000ull, 245000000ull, 246000000ull, 247000000ull, 248000000ull, 249000000ull, 284000000ull, 285000000ull, 842000000ull, 843000000ull, 288000000ull, 289000000ull, 250000000ull, 251000000ull, 252000000ull, 253000000ull, 254000000ull, 255000000ull, 256000000ull, 257000000ull, 258000000ull, 259000000ull, 294000000ull, 295000000ull, 852000000ull, 853000000ull, 298000000ull, 299000000ull, 260000000ull, 261000000ull, 262000000ull, 263000000ull, 264000000ull, 265000000ull, 266000000ull, 267000000ull, 268000000ull, 269000000ull, 286000000ull, 287000000ull, 862000000ull, 863000000ull, 888000000ull, 889000000ull, 270000000ull, 271000000ull, 272000000ull, 273000000ull, 274000000ull, 275000000ull, 276000000ull, 277000000ull, 278000000ull, 279000000ull, 296000000ull, 297000000ull, 872000000ull, 873000000ull, 898000000ull, 899000000ull, 300000000ull, 301000000ull, 302000000ull, 303000000ull, 304000000ull, 305000000ull, 306000000ull, 307000000ull, 308000000ull, 309000000ull, 380000000ull, 381000000ull, 902000000ull, 903000000ull, 982000000ull, 983000000ull, 310000000ull, 311000000ull, 312000000ull, 313000000ull, 314000000ull, 315000000ull, 316000000ull, 317000000ull, 318000000ull, 319000000ull, 390000000ull, 391000000ull, 912000000ull, 913000000ull, 992000000ull, 993000000ull, 320000000ull, 321000000ull, 322000000ull, 323000000ull, 324000000ull, 325000000ull, 326000000ull, 327000000ull, 328000000ull, 329000000ull, 382000000ull, 383000000ull, 922000000ull, 923000000ull, 928000000ull, 929000000ull, 330000000ull, 331000000ull, 332000000ull, 333000000ull, 334000000ull, 335000000ull, 336000000ull, 337000000ull, 338000000ull, 339000000ull, 392000000ull, 393000000ull, 932000000ull, 933000000ull, 938000000ull, 939000000ull, 340000000ull, 341000000ull, 342000000ull, 343000000ull, 344000000ull, 345000000ull, 346000000ull, 347000000ull, 348000000ull, 349000000ull, 384000000ull, 385000000ull, 942000000ull, 943000000ull, 388000000ull, 389000000ull, 350000000ull, 351000000ull, 352000000ull, 353000000ull, 354000000ull, 355000000ull, 356000000ull, 357000000ull, 358000000ull, 359000000ull, 394000000ull, 395000000ull, 952000000ull, 953000000ull, 398000000ull, 399000000ull, 360000000ull, 361000000ull, 362000000ull, 363000000ull, 364000000ull, 365000000ull, 366000000ull, 367000000ull, 368000000ull, 369000000ull, 386000000ull, 387000000ull, 962000000ull, 963000000ull, 988000000ull, 989000000ull, 370000000ull, 371000000ull, 372000000ull, 373000000ull, 374000000ull, 375000000ull, 376000000ull, 377000000ull, 378000000ull, 379000000ull, 396000000ull, 397000000ull, 972000000ull, 973000000ull, 998000000ull, 999000000ull, 400000000ull, 401000000ull, 402000000ull, 403000000ull, 404000000ull, 405000000ull, 406000000ull, 407000000ull, 408000000ull, 409000000ull, 480000000ull, 481000000ull, 804000000ull, 805000000ull, 884000000ull, 885000000ull, 410000000ull, 411000000ull, 412000000ull, 413000000ull, 414000000ull, 415000000ull, 416000000ull, 417000000ull, 418000000ull, 419000000ull, 490000000ull, 491000000ull, 814000000ull, 815000000ull, 894000000ull, 895000000ull, 420000000ull, 421000000ull, 422000000ull, 423000000ull, 424000000ull, 425000000ull, 426000000ull, 427000000ull, 428000000ull, 429000000ull, 482000000ull, 483000000ull, 824000000ull, 825000000ull, 848000000ull, 849000000ull, 430000000ull, 431000000ull, 432000000ull, 433000000ull, 434000000ull, 435000000ull, 436000000ull, 437000000ull, 438000000ull, 439000000ull, 492000000ull, 493000000ull, 834000000ull, 835000000ull, 858000000ull, 859000000ull, 440000000ull, 441000000ull, 442000000ull, 443000000ull, 444000000ull, 445000000ull, 446000000ull, 447000000ull, 448000000ull, 449000000ull, 484000000ull, 485000000ull, 844000000ull, 845000000ull, 488000000ull, 489000000ull, 450000000ull, 451000000ull, 452000000ull, 453000000ull, 454000000ull, 455000000ull, 456000000ull, 457000000ull, 458000000ull, 459000000ull, 494000000ull, 495000000ull, 854000000ull, 855000000ull, 498000000ull, 499000000ull, 460000000ull, 461000000ull, 462000000ull, 463000000ull, 464000000ull, 465000000ull, 466000000ull, 467000000ull, 468000000ull, 469000000ull, 486000000ull, 487000000ull, 864000000ull, 865000000ull, 888000000ull, 889000000ull, 470000000ull, 471000000ull, 472000000ull, 473000000ull, 474000000ull, 475000000ull, 476000000ull, 477000000ull, 478000000ull, 479000000ull, 496000000ull, 497000000ull, 874000000ull, 875000000ull, 898000000ull, 899000000ull, 500000000ull, 501000000ull, 502000000ull, 503000000ull, 504000000ull, 505000000ull, 506000000ull, 507000000ull, 508000000ull, 509000000ull, 580000000ull, 581000000ull, 904000000ull, 905000000ull, 984000000ull, 985000000ull, 510000000ull, 511000000ull, 512000000ull, 513000000ull, 514000000ull, 515000000ull, 516000000ull, 517000000ull, 518000000ull, 519000000ull, 590000000ull, 591000000ull, 914000000ull, 915000000ull, 994000000ull, 995000000ull, 520000000ull, 521000000ull, 522000000ull, 523000000ull, 524000000ull, 525000000ull, 526000000ull, 527000000ull, 528000000ull, 529000000ull, 582000000ull, 583000000ull, 924000000ull, 925000000ull, 948000000ull, 949000000ull, 530000000ull, 531000000ull, 532000000ull, 533000000ull, 534000000ull, 535000000ull, 536000000ull, 537000000ull, 538000000ull, 539000000ull, 592000000ull, 593000000ull, 934000000ull, 935000000ull, 958000000ull, 959000000ull, 540000000ull, 541000000ull, 542000000ull, 543000000ull, 544000000ull, 545000000ull, 546000000ull, 547000000ull, 548000000ull, 549000000ull, 584000000ull, 585000000ull, 944000000ull, 945000000ull, 588000000ull, 589000000ull, 550000000ull, 551000000ull, 552000000ull, 553000000ull, 554000000ull, 555000000ull, 556000000ull, 557000000ull, 558000000ull, 559000000ull, 594000000ull, 595000000ull, 954000000ull, 955000000ull, 598000000ull, 599000000ull, 560000000ull, 561000000ull, 562000000ull, 563000000ull, 564000000ull, 565000000ull, 566000000ull, 567000000ull, 568000000ull, 569000000ull, 586000000ull, 587000000ull, 964000000ull, 965000000ull, 988000000ull, 989000000ull, 570000000ull, 571000000ull, 572000000ull, 573000000ull, 574000000ull, 575000000ull, 576000000ull, 577000000ull, 578000000ull, 579000000ull, 596000000ull, 597000000ull, 974000000ull, 975000000ull, 998000000ull, 999000000ull, 600000000ull, 601000000ull, 602000000ull, 603000000ull, 604000000ull, 605000000ull, 606000000ull, 607000000ull, 608000000ull, 609000000ull, 680000000ull, 681000000ull, 806000000ull, 807000000ull, 886000000ull, 887000000ull, 610000000ull, 611000000ull, 612000000ull, 613000000ull, 614000000ull, 615000000ull, 616000000ull, 617000000ull, 618000000ull, 619000000ull, 690000000ull, 691000000ull, 816000000ull, 817000000ull, 896000000ull, 897000000ull, 620000000ull, 621000000ull, 622000000ull, 623000000ull, 624000000ull, 625000000ull, 626000000ull, 627000000ull, 628000000ull, 629000000ull, 682000000ull, 683000000ull, 826000000ull, 827000000ull, 868000000ull, 869000000ull, 630000000ull, 631000000ull, 632000000ull, 633000000ull, 634000000ull, 635000000ull, 636000000ull, 637000000ull, 638000000ull, 639000000ull, 692000000ull, 693000000ull, 836000000ull, 837000000ull, 878000000ull, 879000000ull, 640000000ull, 641000000ull, 642000000ull, 643000000ull, 644000000ull, 645000000ull, 646000000ull, 647000000ull, 648000000ull, 649000000ull, 684000000ull, 685000000ull, 846000000ull, 847000000ull, 688000000ull, 689000000ull, 650000000ull, 651000000ull, 652000000ull, 653000000ull, 654000000ull, 655000000ull, 656000000ull, 657000000ull, 658000000ull, 659000000ull, 694000000ull, 695000000ull, 856000000ull, 857000000ull, 698000000ull, 699000000ull, 660000000ull, 661000000ull, 662000000ull, 663000000ull, 664000000ull, 665000000ull, 666000000ull, 667000000ull, 668000000ull, 669000000ull, 686000000ull, 687000000ull, 866000000ull, 867000000ull, 888000000ull, 889000000ull, 670000000ull, 671000000ull, 672000000ull, 673000000ull, 674000000ull, 675000000ull, 676000000ull, 677000000ull, 678000000ull, 679000000ull, 696000000ull, 697000000ull, 876000000ull, 877000000ull, 898000000ull, 899000000ull, 700000000ull, 701000000ull, 702000000ull, 703000000ull, 704000000ull, 705000000ull, 706000000ull, 707000000ull, 708000000ull, 709000000ull, 780000000ull, 781000000ull, 906000000ull, 907000000ull, 986000000ull, 987000000ull, 710000000ull, 711000000ull, 712000000ull, 713000000ull, 714000000ull, 715000000ull, 716000000ull, 717000000ull, 718000000ull, 719000000ull, 790000000ull, 791000000ull, 916000000ull, 917000000ull, 996000000ull, 997000000ull, 720000000ull, 721000000ull, 722000000ull, 723000000ull, 724000000ull, 725000000ull, 726000000ull, 727000000ull, 728000000ull, 729000000ull, 782000000ull, 783000000ull, 926000000ull, 927000000ull, 968000000ull, 969000000ull, 730000000ull, 731000000ull, 732000000ull, 733000000ull, 734000000ull, 735000000ull, 736000000ull, 737000000ull, 738000000ull, 739000000ull, 792000000ull, 793000000ull, 936000000ull, 937000000ull, 978000000ull, 979000000ull, 740000000ull, 741000000ull, 742000000ull, 743000000ull, 744000000ull, 745000000ull, 746000000ull, 747000000ull, 748000000ull, 749000000ull, 784000000ull, 785000000ull, 946000000ull, 947000000ull, 788000000ull, 789000000ull, 750000000ull, 751000000ull, 752000000ull, 753000000ull, 754000000ull, 755000000ull, 756000000ull, 757000000ull, 758000000ull, 759000000ull, 794000000ull, 795000000ull, 956000000ull, 957000000ull, 798000000ull, 799000000ull, 760000000ull, 761000000ull, 762000000ull, 763000000ull, 764000000ull, 765000000ull, 766000000ull, 767000000ull, 768000000ull, 769000000ull, 786000000ull, 787000000ull, 966000000ull, 967000000ull, 988000000ull, 989000000ull, 770000000ull, 771000000ull, 772000000ull, 773000000ull, 774000000ull, 775000000ull, 776000000ull, 777000000ull, 778000000ull, 779000000ull, 796000000ull, 797000000ull, 976000000ull, 977000000ull, 998000000ull, 999000000ull }; const BID_UINT64 bid_d2b4[] = { 0000000000ull, 1000000000ull, 2000000000ull, 3000000000ull, 4000000000ull, 5000000000ull, 6000000000ull, 7000000000ull, 8000000000ull, 9000000000ull, 80000000000ull, 81000000000ull, 800000000000ull, 801000000000ull, 880000000000ull, 881000000000ull, 10000000000ull, 11000000000ull, 12000000000ull, 13000000000ull, 14000000000ull, 15000000000ull, 16000000000ull, 17000000000ull, 18000000000ull, 19000000000ull, 90000000000ull, 91000000000ull, 810000000000ull, 811000000000ull, 890000000000ull, 891000000000ull, 20000000000ull, 21000000000ull, 22000000000ull, 23000000000ull, 24000000000ull, 25000000000ull, 26000000000ull, 27000000000ull, 28000000000ull, 29000000000ull, 82000000000ull, 83000000000ull, 820000000000ull, 821000000000ull, 808000000000ull, 809000000000ull, 30000000000ull, 31000000000ull, 32000000000ull, 33000000000ull, 34000000000ull, 35000000000ull, 36000000000ull, 37000000000ull, 38000000000ull, 39000000000ull, 92000000000ull, 93000000000ull, 830000000000ull, 831000000000ull, 818000000000ull, 819000000000ull, 40000000000ull, 41000000000ull, 42000000000ull, 43000000000ull, 44000000000ull, 45000000000ull, 46000000000ull, 47000000000ull, 48000000000ull, 49000000000ull, 84000000000ull, 85000000000ull, 840000000000ull, 841000000000ull, 88000000000ull, 89000000000ull, 50000000000ull, 51000000000ull, 52000000000ull, 53000000000ull, 54000000000ull, 55000000000ull, 56000000000ull, 57000000000ull, 58000000000ull, 59000000000ull, 94000000000ull, 95000000000ull, 850000000000ull, 851000000000ull, 98000000000ull, 99000000000ull, 60000000000ull, 61000000000ull, 62000000000ull, 63000000000ull, 64000000000ull, 65000000000ull, 66000000000ull, 67000000000ull, 68000000000ull, 69000000000ull, 86000000000ull, 87000000000ull, 860000000000ull, 861000000000ull, 888000000000ull, 889000000000ull, 70000000000ull, 71000000000ull, 72000000000ull, 73000000000ull, 74000000000ull, 75000000000ull, 76000000000ull, 77000000000ull, 78000000000ull, 79000000000ull, 96000000000ull, 97000000000ull, 870000000000ull, 871000000000ull, 898000000000ull, 899000000000ull, 100000000000ull, 101000000000ull, 102000000000ull, 103000000000ull, 104000000000ull, 105000000000ull, 106000000000ull, 107000000000ull, 108000000000ull, 109000000000ull, 180000000000ull, 181000000000ull, 900000000000ull, 901000000000ull, 980000000000ull, 981000000000ull, 110000000000ull, 111000000000ull, 112000000000ull, 113000000000ull, 114000000000ull, 115000000000ull, 116000000000ull, 117000000000ull, 118000000000ull, 119000000000ull, 190000000000ull, 191000000000ull, 910000000000ull, 911000000000ull, 990000000000ull, 991000000000ull, 120000000000ull, 121000000000ull, 122000000000ull, 123000000000ull, 124000000000ull, 125000000000ull, 126000000000ull, 127000000000ull, 128000000000ull, 129000000000ull, 182000000000ull, 183000000000ull, 920000000000ull, 921000000000ull, 908000000000ull, 909000000000ull, 130000000000ull, 131000000000ull, 132000000000ull, 133000000000ull, 134000000000ull, 135000000000ull, 136000000000ull, 137000000000ull, 138000000000ull, 139000000000ull, 192000000000ull, 193000000000ull, 930000000000ull, 931000000000ull, 918000000000ull, 919000000000ull, 140000000000ull, 141000000000ull, 142000000000ull, 143000000000ull, 144000000000ull, 145000000000ull, 146000000000ull, 147000000000ull, 148000000000ull, 149000000000ull, 184000000000ull, 185000000000ull, 940000000000ull, 941000000000ull, 188000000000ull, 189000000000ull, 150000000000ull, 151000000000ull, 152000000000ull, 153000000000ull, 154000000000ull, 155000000000ull, 156000000000ull, 157000000000ull, 158000000000ull, 159000000000ull, 194000000000ull, 195000000000ull, 950000000000ull, 951000000000ull, 198000000000ull, 199000000000ull, 160000000000ull, 161000000000ull, 162000000000ull, 163000000000ull, 164000000000ull, 165000000000ull, 166000000000ull, 167000000000ull, 168000000000ull, 169000000000ull, 186000000000ull, 187000000000ull, 960000000000ull, 961000000000ull, 988000000000ull, 989000000000ull, 170000000000ull, 171000000000ull, 172000000000ull, 173000000000ull, 174000000000ull, 175000000000ull, 176000000000ull, 177000000000ull, 178000000000ull, 179000000000ull, 196000000000ull, 197000000000ull, 970000000000ull, 971000000000ull, 998000000000ull, 999000000000ull, 200000000000ull, 201000000000ull, 202000000000ull, 203000000000ull, 204000000000ull, 205000000000ull, 206000000000ull, 207000000000ull, 208000000000ull, 209000000000ull, 280000000000ull, 281000000000ull, 802000000000ull, 803000000000ull, 882000000000ull, 883000000000ull, 210000000000ull, 211000000000ull, 212000000000ull, 213000000000ull, 214000000000ull, 215000000000ull, 216000000000ull, 217000000000ull, 218000000000ull, 219000000000ull, 290000000000ull, 291000000000ull, 812000000000ull, 813000000000ull, 892000000000ull, 893000000000ull, 220000000000ull, 221000000000ull, 222000000000ull, 223000000000ull, 224000000000ull, 225000000000ull, 226000000000ull, 227000000000ull, 228000000000ull, 229000000000ull, 282000000000ull, 283000000000ull, 822000000000ull, 823000000000ull, 828000000000ull, 829000000000ull, 230000000000ull, 231000000000ull, 232000000000ull, 233000000000ull, 234000000000ull, 235000000000ull, 236000000000ull, 237000000000ull, 238000000000ull, 239000000000ull, 292000000000ull, 293000000000ull, 832000000000ull, 833000000000ull, 838000000000ull, 839000000000ull, 240000000000ull, 241000000000ull, 242000000000ull, 243000000000ull, 244000000000ull, 245000000000ull, 246000000000ull, 247000000000ull, 248000000000ull, 249000000000ull, 284000000000ull, 285000000000ull, 842000000000ull, 843000000000ull, 288000000000ull, 289000000000ull, 250000000000ull, 251000000000ull, 252000000000ull, 253000000000ull, 254000000000ull, 255000000000ull, 256000000000ull, 257000000000ull, 258000000000ull, 259000000000ull, 294000000000ull, 295000000000ull, 852000000000ull, 853000000000ull, 298000000000ull, 299000000000ull, 260000000000ull, 261000000000ull, 262000000000ull, 263000000000ull, 264000000000ull, 265000000000ull, 266000000000ull, 267000000000ull, 268000000000ull, 269000000000ull, 286000000000ull, 287000000000ull, 862000000000ull, 863000000000ull, 888000000000ull, 889000000000ull, 270000000000ull, 271000000000ull, 272000000000ull, 273000000000ull, 274000000000ull, 275000000000ull, 276000000000ull, 277000000000ull, 278000000000ull, 279000000000ull, 296000000000ull, 297000000000ull, 872000000000ull, 873000000000ull, 898000000000ull, 899000000000ull, 300000000000ull, 301000000000ull, 302000000000ull, 303000000000ull, 304000000000ull, 305000000000ull, 306000000000ull, 307000000000ull, 308000000000ull, 309000000000ull, 380000000000ull, 381000000000ull, 902000000000ull, 903000000000ull, 982000000000ull, 983000000000ull, 310000000000ull, 311000000000ull, 312000000000ull, 313000000000ull, 314000000000ull, 315000000000ull, 316000000000ull, 317000000000ull, 318000000000ull, 319000000000ull, 390000000000ull, 391000000000ull, 912000000000ull, 913000000000ull, 992000000000ull, 993000000000ull, 320000000000ull, 321000000000ull, 322000000000ull, 323000000000ull, 324000000000ull, 325000000000ull, 326000000000ull, 327000000000ull, 328000000000ull, 329000000000ull, 382000000000ull, 383000000000ull, 922000000000ull, 923000000000ull, 928000000000ull, 929000000000ull, 330000000000ull, 331000000000ull, 332000000000ull, 333000000000ull, 334000000000ull, 335000000000ull, 336000000000ull, 337000000000ull, 338000000000ull, 339000000000ull, 392000000000ull, 393000000000ull, 932000000000ull, 933000000000ull, 938000000000ull, 939000000000ull, 340000000000ull, 341000000000ull, 342000000000ull, 343000000000ull, 344000000000ull, 345000000000ull, 346000000000ull, 347000000000ull, 348000000000ull, 349000000000ull, 384000000000ull, 385000000000ull, 942000000000ull, 943000000000ull, 388000000000ull, 389000000000ull, 350000000000ull, 351000000000ull, 352000000000ull, 353000000000ull, 354000000000ull, 355000000000ull, 356000000000ull, 357000000000ull, 358000000000ull, 359000000000ull, 394000000000ull, 395000000000ull, 952000000000ull, 953000000000ull, 398000000000ull, 399000000000ull, 360000000000ull, 361000000000ull, 362000000000ull, 363000000000ull, 364000000000ull, 365000000000ull, 366000000000ull, 367000000000ull, 368000000000ull, 369000000000ull, 386000000000ull, 387000000000ull, 962000000000ull, 963000000000ull, 988000000000ull, 989000000000ull, 370000000000ull, 371000000000ull, 372000000000ull, 373000000000ull, 374000000000ull, 375000000000ull, 376000000000ull, 377000000000ull, 378000000000ull, 379000000000ull, 396000000000ull, 397000000000ull, 972000000000ull, 973000000000ull, 998000000000ull, 999000000000ull, 400000000000ull, 401000000000ull, 402000000000ull, 403000000000ull, 404000000000ull, 405000000000ull, 406000000000ull, 407000000000ull, 408000000000ull, 409000000000ull, 480000000000ull, 481000000000ull, 804000000000ull, 805000000000ull, 884000000000ull, 885000000000ull, 410000000000ull, 411000000000ull, 412000000000ull, 413000000000ull, 414000000000ull, 415000000000ull, 416000000000ull, 417000000000ull, 418000000000ull, 419000000000ull, 490000000000ull, 491000000000ull, 814000000000ull, 815000000000ull, 894000000000ull, 895000000000ull, 420000000000ull, 421000000000ull, 422000000000ull, 423000000000ull, 424000000000ull, 425000000000ull, 426000000000ull, 427000000000ull, 428000000000ull, 429000000000ull, 482000000000ull, 483000000000ull, 824000000000ull, 825000000000ull, 848000000000ull, 849000000000ull, 430000000000ull, 431000000000ull, 432000000000ull, 433000000000ull, 434000000000ull, 435000000000ull, 436000000000ull, 437000000000ull, 438000000000ull, 439000000000ull, 492000000000ull, 493000000000ull, 834000000000ull, 835000000000ull, 858000000000ull, 859000000000ull, 440000000000ull, 441000000000ull, 442000000000ull, 443000000000ull, 444000000000ull, 445000000000ull, 446000000000ull, 447000000000ull, 448000000000ull, 449000000000ull, 484000000000ull, 485000000000ull, 844000000000ull, 845000000000ull, 488000000000ull, 489000000000ull, 450000000000ull, 451000000000ull, 452000000000ull, 453000000000ull, 454000000000ull, 455000000000ull, 456000000000ull, 457000000000ull, 458000000000ull, 459000000000ull, 494000000000ull, 495000000000ull, 854000000000ull, 855000000000ull, 498000000000ull, 499000000000ull, 460000000000ull, 461000000000ull, 462000000000ull, 463000000000ull, 464000000000ull, 465000000000ull, 466000000000ull, 467000000000ull, 468000000000ull, 469000000000ull, 486000000000ull, 487000000000ull, 864000000000ull, 865000000000ull, 888000000000ull, 889000000000ull, 470000000000ull, 471000000000ull, 472000000000ull, 473000000000ull, 474000000000ull, 475000000000ull, 476000000000ull, 477000000000ull, 478000000000ull, 479000000000ull, 496000000000ull, 497000000000ull, 874000000000ull, 875000000000ull, 898000000000ull, 899000000000ull, 500000000000ull, 501000000000ull, 502000000000ull, 503000000000ull, 504000000000ull, 505000000000ull, 506000000000ull, 507000000000ull, 508000000000ull, 509000000000ull, 580000000000ull, 581000000000ull, 904000000000ull, 905000000000ull, 984000000000ull, 985000000000ull, 510000000000ull, 511000000000ull, 512000000000ull, 513000000000ull, 514000000000ull, 515000000000ull, 516000000000ull, 517000000000ull, 518000000000ull, 519000000000ull, 590000000000ull, 591000000000ull, 914000000000ull, 915000000000ull, 994000000000ull, 995000000000ull, 520000000000ull, 521000000000ull, 522000000000ull, 523000000000ull, 524000000000ull, 525000000000ull, 526000000000ull, 527000000000ull, 528000000000ull, 529000000000ull, 582000000000ull, 583000000000ull, 924000000000ull, 925000000000ull, 948000000000ull, 949000000000ull, 530000000000ull, 531000000000ull, 532000000000ull, 533000000000ull, 534000000000ull, 535000000000ull, 536000000000ull, 537000000000ull, 538000000000ull, 539000000000ull, 592000000000ull, 593000000000ull, 934000000000ull, 935000000000ull, 958000000000ull, 959000000000ull, 540000000000ull, 541000000000ull, 542000000000ull, 543000000000ull, 544000000000ull, 545000000000ull, 546000000000ull, 547000000000ull, 548000000000ull, 549000000000ull, 584000000000ull, 585000000000ull, 944000000000ull, 945000000000ull, 588000000000ull, 589000000000ull, 550000000000ull, 551000000000ull, 552000000000ull, 553000000000ull, 554000000000ull, 555000000000ull, 556000000000ull, 557000000000ull, 558000000000ull, 559000000000ull, 594000000000ull, 595000000000ull, 954000000000ull, 955000000000ull, 598000000000ull, 599000000000ull, 560000000000ull, 561000000000ull, 562000000000ull, 563000000000ull, 564000000000ull, 565000000000ull, 566000000000ull, 567000000000ull, 568000000000ull, 569000000000ull, 586000000000ull, 587000000000ull, 964000000000ull, 965000000000ull, 988000000000ull, 989000000000ull, 570000000000ull, 571000000000ull, 572000000000ull, 573000000000ull, 574000000000ull, 575000000000ull, 576000000000ull, 577000000000ull, 578000000000ull, 579000000000ull, 596000000000ull, 597000000000ull, 974000000000ull, 975000000000ull, 998000000000ull, 999000000000ull, 600000000000ull, 601000000000ull, 602000000000ull, 603000000000ull, 604000000000ull, 605000000000ull, 606000000000ull, 607000000000ull, 608000000000ull, 609000000000ull, 680000000000ull, 681000000000ull, 806000000000ull, 807000000000ull, 886000000000ull, 887000000000ull, 610000000000ull, 611000000000ull, 612000000000ull, 613000000000ull, 614000000000ull, 615000000000ull, 616000000000ull, 617000000000ull, 618000000000ull, 619000000000ull, 690000000000ull, 691000000000ull, 816000000000ull, 817000000000ull, 896000000000ull, 897000000000ull, 620000000000ull, 621000000000ull, 622000000000ull, 623000000000ull, 624000000000ull, 625000000000ull, 626000000000ull, 627000000000ull, 628000000000ull, 629000000000ull, 682000000000ull, 683000000000ull, 826000000000ull, 827000000000ull, 868000000000ull, 869000000000ull, 630000000000ull, 631000000000ull, 632000000000ull, 633000000000ull, 634000000000ull, 635000000000ull, 636000000000ull, 637000000000ull, 638000000000ull, 639000000000ull, 692000000000ull, 693000000000ull, 836000000000ull, 837000000000ull, 878000000000ull, 879000000000ull, 640000000000ull, 641000000000ull, 642000000000ull, 643000000000ull, 644000000000ull, 645000000000ull, 646000000000ull, 647000000000ull, 648000000000ull, 649000000000ull, 684000000000ull, 685000000000ull, 846000000000ull, 847000000000ull, 688000000000ull, 689000000000ull, 650000000000ull, 651000000000ull, 652000000000ull, 653000000000ull, 654000000000ull, 655000000000ull, 656000000000ull, 657000000000ull, 658000000000ull, 659000000000ull, 694000000000ull, 695000000000ull, 856000000000ull, 857000000000ull, 698000000000ull, 699000000000ull, 660000000000ull, 661000000000ull, 662000000000ull, 663000000000ull, 664000000000ull, 665000000000ull, 666000000000ull, 667000000000ull, 668000000000ull, 669000000000ull, 686000000000ull, 687000000000ull, 866000000000ull, 867000000000ull, 888000000000ull, 889000000000ull, 670000000000ull, 671000000000ull, 672000000000ull, 673000000000ull, 674000000000ull, 675000000000ull, 676000000000ull, 677000000000ull, 678000000000ull, 679000000000ull, 696000000000ull, 697000000000ull, 876000000000ull, 877000000000ull, 898000000000ull, 899000000000ull, 700000000000ull, 701000000000ull, 702000000000ull, 703000000000ull, 704000000000ull, 705000000000ull, 706000000000ull, 707000000000ull, 708000000000ull, 709000000000ull, 780000000000ull, 781000000000ull, 906000000000ull, 907000000000ull, 986000000000ull, 987000000000ull, 710000000000ull, 711000000000ull, 712000000000ull, 713000000000ull, 714000000000ull, 715000000000ull, 716000000000ull, 717000000000ull, 718000000000ull, 719000000000ull, 790000000000ull, 791000000000ull, 916000000000ull, 917000000000ull, 996000000000ull, 997000000000ull, 720000000000ull, 721000000000ull, 722000000000ull, 723000000000ull, 724000000000ull, 725000000000ull, 726000000000ull, 727000000000ull, 728000000000ull, 729000000000ull, 782000000000ull, 783000000000ull, 926000000000ull, 927000000000ull, 968000000000ull, 969000000000ull, 730000000000ull, 731000000000ull, 732000000000ull, 733000000000ull, 734000000000ull, 735000000000ull, 736000000000ull, 737000000000ull, 738000000000ull, 739000000000ull, 792000000000ull, 793000000000ull, 936000000000ull, 937000000000ull, 978000000000ull, 979000000000ull, 740000000000ull, 741000000000ull, 742000000000ull, 743000000000ull, 744000000000ull, 745000000000ull, 746000000000ull, 747000000000ull, 748000000000ull, 749000000000ull, 784000000000ull, 785000000000ull, 946000000000ull, 947000000000ull, 788000000000ull, 789000000000ull, 750000000000ull, 751000000000ull, 752000000000ull, 753000000000ull, 754000000000ull, 755000000000ull, 756000000000ull, 757000000000ull, 758000000000ull, 759000000000ull, 794000000000ull, 795000000000ull, 956000000000ull, 957000000000ull, 798000000000ull, 799000000000ull, 760000000000ull, 761000000000ull, 762000000000ull, 763000000000ull, 764000000000ull, 765000000000ull, 766000000000ull, 767000000000ull, 768000000000ull, 769000000000ull, 786000000000ull, 787000000000ull, 966000000000ull, 967000000000ull, 988000000000ull, 989000000000ull, 770000000000ull, 771000000000ull, 772000000000ull, 773000000000ull, 774000000000ull, 775000000000ull, 776000000000ull, 777000000000ull, 778000000000ull, 779000000000ull, 796000000000ull, 797000000000ull, 976000000000ull, 977000000000ull, 998000000000ull, 999000000000ull }; const BID_UINT64 bid_d2b5[] = { 0000000000000ull, 1000000000000ull, 2000000000000ull, 3000000000000ull, 4000000000000ull, 5000000000000ull, 6000000000000ull, 7000000000000ull, 8000000000000ull, 9000000000000ull, 80000000000000ull, 81000000000000ull, 800000000000000ull, 801000000000000ull, 880000000000000ull, 881000000000000ull, 10000000000000ull, 11000000000000ull, 12000000000000ull, 13000000000000ull, 14000000000000ull, 15000000000000ull, 16000000000000ull, 17000000000000ull, 18000000000000ull, 19000000000000ull, 90000000000000ull, 91000000000000ull, 810000000000000ull, 811000000000000ull, 890000000000000ull, 891000000000000ull, 20000000000000ull, 21000000000000ull, 22000000000000ull, 23000000000000ull, 24000000000000ull, 25000000000000ull, 26000000000000ull, 27000000000000ull, 28000000000000ull, 29000000000000ull, 82000000000000ull, 83000000000000ull, 820000000000000ull, 821000000000000ull, 808000000000000ull, 809000000000000ull, 30000000000000ull, 31000000000000ull, 32000000000000ull, 33000000000000ull, 34000000000000ull, 35000000000000ull, 36000000000000ull, 37000000000000ull, 38000000000000ull, 39000000000000ull, 92000000000000ull, 93000000000000ull, 830000000000000ull, 831000000000000ull, 818000000000000ull, 819000000000000ull, 40000000000000ull, 41000000000000ull, 42000000000000ull, 43000000000000ull, 44000000000000ull, 45000000000000ull, 46000000000000ull, 47000000000000ull, 48000000000000ull, 49000000000000ull, 84000000000000ull, 85000000000000ull, 840000000000000ull, 841000000000000ull, 88000000000000ull, 89000000000000ull, 50000000000000ull, 51000000000000ull, 52000000000000ull, 53000000000000ull, 54000000000000ull, 55000000000000ull, 56000000000000ull, 57000000000000ull, 58000000000000ull, 59000000000000ull, 94000000000000ull, 95000000000000ull, 850000000000000ull, 851000000000000ull, 98000000000000ull, 99000000000000ull, 60000000000000ull, 61000000000000ull, 62000000000000ull, 63000000000000ull, 64000000000000ull, 65000000000000ull, 66000000000000ull, 67000000000000ull, 68000000000000ull, 69000000000000ull, 86000000000000ull, 87000000000000ull, 860000000000000ull, 861000000000000ull, 888000000000000ull, 889000000000000ull, 70000000000000ull, 71000000000000ull, 72000000000000ull, 73000000000000ull, 74000000000000ull, 75000000000000ull, 76000000000000ull, 77000000000000ull, 78000000000000ull, 79000000000000ull, 96000000000000ull, 97000000000000ull, 870000000000000ull, 871000000000000ull, 898000000000000ull, 899000000000000ull, 100000000000000ull, 101000000000000ull, 102000000000000ull, 103000000000000ull, 104000000000000ull, 105000000000000ull, 106000000000000ull, 107000000000000ull, 108000000000000ull, 109000000000000ull, 180000000000000ull, 181000000000000ull, 900000000000000ull, 901000000000000ull, 980000000000000ull, 981000000000000ull, 110000000000000ull, 111000000000000ull, 112000000000000ull, 113000000000000ull, 114000000000000ull, 115000000000000ull, 116000000000000ull, 117000000000000ull, 118000000000000ull, 119000000000000ull, 190000000000000ull, 191000000000000ull, 910000000000000ull, 911000000000000ull, 990000000000000ull, 991000000000000ull, 120000000000000ull, 121000000000000ull, 122000000000000ull, 123000000000000ull, 124000000000000ull, 125000000000000ull, 126000000000000ull, 127000000000000ull, 128000000000000ull, 129000000000000ull, 182000000000000ull, 183000000000000ull, 920000000000000ull, 921000000000000ull, 908000000000000ull, 909000000000000ull, 130000000000000ull, 131000000000000ull, 132000000000000ull, 133000000000000ull, 134000000000000ull, 135000000000000ull, 136000000000000ull, 137000000000000ull, 138000000000000ull, 139000000000000ull, 192000000000000ull, 193000000000000ull, 930000000000000ull, 931000000000000ull, 918000000000000ull, 919000000000000ull, 140000000000000ull, 141000000000000ull, 142000000000000ull, 143000000000000ull, 144000000000000ull, 145000000000000ull, 146000000000000ull, 147000000000000ull, 148000000000000ull, 149000000000000ull, 184000000000000ull, 185000000000000ull, 940000000000000ull, 941000000000000ull, 188000000000000ull, 189000000000000ull, 150000000000000ull, 151000000000000ull, 152000000000000ull, 153000000000000ull, 154000000000000ull, 155000000000000ull, 156000000000000ull, 157000000000000ull, 158000000000000ull, 159000000000000ull, 194000000000000ull, 195000000000000ull, 950000000000000ull, 951000000000000ull, 198000000000000ull, 199000000000000ull, 160000000000000ull, 161000000000000ull, 162000000000000ull, 163000000000000ull, 164000000000000ull, 165000000000000ull, 166000000000000ull, 167000000000000ull, 168000000000000ull, 169000000000000ull, 186000000000000ull, 187000000000000ull, 960000000000000ull, 961000000000000ull, 988000000000000ull, 989000000000000ull, 170000000000000ull, 171000000000000ull, 172000000000000ull, 173000000000000ull, 174000000000000ull, 175000000000000ull, 176000000000000ull, 177000000000000ull, 178000000000000ull, 179000000000000ull, 196000000000000ull, 197000000000000ull, 970000000000000ull, 971000000000000ull, 998000000000000ull, 999000000000000ull, 200000000000000ull, 201000000000000ull, 202000000000000ull, 203000000000000ull, 204000000000000ull, 205000000000000ull, 206000000000000ull, 207000000000000ull, 208000000000000ull, 209000000000000ull, 280000000000000ull, 281000000000000ull, 802000000000000ull, 803000000000000ull, 882000000000000ull, 883000000000000ull, 210000000000000ull, 211000000000000ull, 212000000000000ull, 213000000000000ull, 214000000000000ull, 215000000000000ull, 216000000000000ull, 217000000000000ull, 218000000000000ull, 219000000000000ull, 290000000000000ull, 291000000000000ull, 812000000000000ull, 813000000000000ull, 892000000000000ull, 893000000000000ull, 220000000000000ull, 221000000000000ull, 222000000000000ull, 223000000000000ull, 224000000000000ull, 225000000000000ull, 226000000000000ull, 227000000000000ull, 228000000000000ull, 229000000000000ull, 282000000000000ull, 283000000000000ull, 822000000000000ull, 823000000000000ull, 828000000000000ull, 829000000000000ull, 230000000000000ull, 231000000000000ull, 232000000000000ull, 233000000000000ull, 234000000000000ull, 235000000000000ull, 236000000000000ull, 237000000000000ull, 238000000000000ull, 239000000000000ull, 292000000000000ull, 293000000000000ull, 832000000000000ull, 833000000000000ull, 838000000000000ull, 839000000000000ull, 240000000000000ull, 241000000000000ull, 242000000000000ull, 243000000000000ull, 244000000000000ull, 245000000000000ull, 246000000000000ull, 247000000000000ull, 248000000000000ull, 249000000000000ull, 284000000000000ull, 285000000000000ull, 842000000000000ull, 843000000000000ull, 288000000000000ull, 289000000000000ull, 250000000000000ull, 251000000000000ull, 252000000000000ull, 253000000000000ull, 254000000000000ull, 255000000000000ull, 256000000000000ull, 257000000000000ull, 258000000000000ull, 259000000000000ull, 294000000000000ull, 295000000000000ull, 852000000000000ull, 853000000000000ull, 298000000000000ull, 299000000000000ull, 260000000000000ull, 261000000000000ull, 262000000000000ull, 263000000000000ull, 264000000000000ull, 265000000000000ull, 266000000000000ull, 267000000000000ull, 268000000000000ull, 269000000000000ull, 286000000000000ull, 287000000000000ull, 862000000000000ull, 863000000000000ull, 888000000000000ull, 889000000000000ull, 270000000000000ull, 271000000000000ull, 272000000000000ull, 273000000000000ull, 274000000000000ull, 275000000000000ull, 276000000000000ull, 277000000000000ull, 278000000000000ull, 279000000000000ull, 296000000000000ull, 297000000000000ull, 872000000000000ull, 873000000000000ull, 898000000000000ull, 899000000000000ull, 300000000000000ull, 301000000000000ull, 302000000000000ull, 303000000000000ull, 304000000000000ull, 305000000000000ull, 306000000000000ull, 307000000000000ull, 308000000000000ull, 309000000000000ull, 380000000000000ull, 381000000000000ull, 902000000000000ull, 903000000000000ull, 982000000000000ull, 983000000000000ull, 310000000000000ull, 311000000000000ull, 312000000000000ull, 313000000000000ull, 314000000000000ull, 315000000000000ull, 316000000000000ull, 317000000000000ull, 318000000000000ull, 319000000000000ull, 390000000000000ull, 391000000000000ull, 912000000000000ull, 913000000000000ull, 992000000000000ull, 993000000000000ull, 320000000000000ull, 321000000000000ull, 322000000000000ull, 323000000000000ull, 324000000000000ull, 325000000000000ull, 326000000000000ull, 327000000000000ull, 328000000000000ull, 329000000000000ull, 382000000000000ull, 383000000000000ull, 922000000000000ull, 923000000000000ull, 928000000000000ull, 929000000000000ull, 330000000000000ull, 331000000000000ull, 332000000000000ull, 333000000000000ull, 334000000000000ull, 335000000000000ull, 336000000000000ull, 337000000000000ull, 338000000000000ull, 339000000000000ull, 392000000000000ull, 393000000000000ull, 932000000000000ull, 933000000000000ull, 938000000000000ull, 939000000000000ull, 340000000000000ull, 341000000000000ull, 342000000000000ull, 343000000000000ull, 344000000000000ull, 345000000000000ull, 346000000000000ull, 347000000000000ull, 348000000000000ull, 349000000000000ull, 384000000000000ull, 385000000000000ull, 942000000000000ull, 943000000000000ull, 388000000000000ull, 389000000000000ull, 350000000000000ull, 351000000000000ull, 352000000000000ull, 353000000000000ull, 354000000000000ull, 355000000000000ull, 356000000000000ull, 357000000000000ull, 358000000000000ull, 359000000000000ull, 394000000000000ull, 395000000000000ull, 952000000000000ull, 953000000000000ull, 398000000000000ull, 399000000000000ull, 360000000000000ull, 361000000000000ull, 362000000000000ull, 363000000000000ull, 364000000000000ull, 365000000000000ull, 366000000000000ull, 367000000000000ull, 368000000000000ull, 369000000000000ull, 386000000000000ull, 387000000000000ull, 962000000000000ull, 963000000000000ull, 988000000000000ull, 989000000000000ull, 370000000000000ull, 371000000000000ull, 372000000000000ull, 373000000000000ull, 374000000000000ull, 375000000000000ull, 376000000000000ull, 377000000000000ull, 378000000000000ull, 379000000000000ull, 396000000000000ull, 397000000000000ull, 972000000000000ull, 973000000000000ull, 998000000000000ull, 999000000000000ull, 400000000000000ull, 401000000000000ull, 402000000000000ull, 403000000000000ull, 404000000000000ull, 405000000000000ull, 406000000000000ull, 407000000000000ull, 408000000000000ull, 409000000000000ull, 480000000000000ull, 481000000000000ull, 804000000000000ull, 805000000000000ull, 884000000000000ull, 885000000000000ull, 410000000000000ull, 411000000000000ull, 412000000000000ull, 413000000000000ull, 414000000000000ull, 415000000000000ull, 416000000000000ull, 417000000000000ull, 418000000000000ull, 419000000000000ull, 490000000000000ull, 491000000000000ull, 814000000000000ull, 815000000000000ull, 894000000000000ull, 895000000000000ull, 420000000000000ull, 421000000000000ull, 422000000000000ull, 423000000000000ull, 424000000000000ull, 425000000000000ull, 426000000000000ull, 427000000000000ull, 428000000000000ull, 429000000000000ull, 482000000000000ull, 483000000000000ull, 824000000000000ull, 825000000000000ull, 848000000000000ull, 849000000000000ull, 430000000000000ull, 431000000000000ull, 432000000000000ull, 433000000000000ull, 434000000000000ull, 435000000000000ull, 436000000000000ull, 437000000000000ull, 438000000000000ull, 439000000000000ull, 492000000000000ull, 493000000000000ull, 834000000000000ull, 835000000000000ull, 858000000000000ull, 859000000000000ull, 440000000000000ull, 441000000000000ull, 442000000000000ull, 443000000000000ull, 444000000000000ull, 445000000000000ull, 446000000000000ull, 447000000000000ull, 448000000000000ull, 449000000000000ull, 484000000000000ull, 485000000000000ull, 844000000000000ull, 845000000000000ull, 488000000000000ull, 489000000000000ull, 450000000000000ull, 451000000000000ull, 452000000000000ull, 453000000000000ull, 454000000000000ull, 455000000000000ull, 456000000000000ull, 457000000000000ull, 458000000000000ull, 459000000000000ull, 494000000000000ull, 495000000000000ull, 854000000000000ull, 855000000000000ull, 498000000000000ull, 499000000000000ull, 460000000000000ull, 461000000000000ull, 462000000000000ull, 463000000000000ull, 464000000000000ull, 465000000000000ull, 466000000000000ull, 467000000000000ull, 468000000000000ull, 469000000000000ull, 486000000000000ull, 487000000000000ull, 864000000000000ull, 865000000000000ull, 888000000000000ull, 889000000000000ull, 470000000000000ull, 471000000000000ull, 472000000000000ull, 473000000000000ull, 474000000000000ull, 475000000000000ull, 476000000000000ull, 477000000000000ull, 478000000000000ull, 479000000000000ull, 496000000000000ull, 497000000000000ull, 874000000000000ull, 875000000000000ull, 898000000000000ull, 899000000000000ull, 500000000000000ull, 501000000000000ull, 502000000000000ull, 503000000000000ull, 504000000000000ull, 505000000000000ull, 506000000000000ull, 507000000000000ull, 508000000000000ull, 509000000000000ull, 580000000000000ull, 581000000000000ull, 904000000000000ull, 905000000000000ull, 984000000000000ull, 985000000000000ull, 510000000000000ull, 511000000000000ull, 512000000000000ull, 513000000000000ull, 514000000000000ull, 515000000000000ull, 516000000000000ull, 517000000000000ull, 518000000000000ull, 519000000000000ull, 590000000000000ull, 591000000000000ull, 914000000000000ull, 915000000000000ull, 994000000000000ull, 995000000000000ull, 520000000000000ull, 521000000000000ull, 522000000000000ull, 523000000000000ull, 524000000000000ull, 525000000000000ull, 526000000000000ull, 527000000000000ull, 528000000000000ull, 529000000000000ull, 582000000000000ull, 583000000000000ull, 924000000000000ull, 925000000000000ull, 948000000000000ull, 949000000000000ull, 530000000000000ull, 531000000000000ull, 532000000000000ull, 533000000000000ull, 534000000000000ull, 535000000000000ull, 536000000000000ull, 537000000000000ull, 538000000000000ull, 539000000000000ull, 592000000000000ull, 593000000000000ull, 934000000000000ull, 935000000000000ull, 958000000000000ull, 959000000000000ull, 540000000000000ull, 541000000000000ull, 542000000000000ull, 543000000000000ull, 544000000000000ull, 545000000000000ull, 546000000000000ull, 547000000000000ull, 548000000000000ull, 549000000000000ull, 584000000000000ull, 585000000000000ull, 944000000000000ull, 945000000000000ull, 588000000000000ull, 589000000000000ull, 550000000000000ull, 551000000000000ull, 552000000000000ull, 553000000000000ull, 554000000000000ull, 555000000000000ull, 556000000000000ull, 557000000000000ull, 558000000000000ull, 559000000000000ull, 594000000000000ull, 595000000000000ull, 954000000000000ull, 955000000000000ull, 598000000000000ull, 599000000000000ull, 560000000000000ull, 561000000000000ull, 562000000000000ull, 563000000000000ull, 564000000000000ull, 565000000000000ull, 566000000000000ull, 567000000000000ull, 568000000000000ull, 569000000000000ull, 586000000000000ull, 587000000000000ull, 964000000000000ull, 965000000000000ull, 988000000000000ull, 989000000000000ull, 570000000000000ull, 571000000000000ull, 572000000000000ull, 573000000000000ull, 574000000000000ull, 575000000000000ull, 576000000000000ull, 577000000000000ull, 578000000000000ull, 579000000000000ull, 596000000000000ull, 597000000000000ull, 974000000000000ull, 975000000000000ull, 998000000000000ull, 999000000000000ull, 600000000000000ull, 601000000000000ull, 602000000000000ull, 603000000000000ull, 604000000000000ull, 605000000000000ull, 606000000000000ull, 607000000000000ull, 608000000000000ull, 609000000000000ull, 680000000000000ull, 681000000000000ull, 806000000000000ull, 807000000000000ull, 886000000000000ull, 887000000000000ull, 610000000000000ull, 611000000000000ull, 612000000000000ull, 613000000000000ull, 614000000000000ull, 615000000000000ull, 616000000000000ull, 617000000000000ull, 618000000000000ull, 619000000000000ull, 690000000000000ull, 691000000000000ull, 816000000000000ull, 817000000000000ull, 896000000000000ull, 897000000000000ull, 620000000000000ull, 621000000000000ull, 622000000000000ull, 623000000000000ull, 624000000000000ull, 625000000000000ull, 626000000000000ull, 627000000000000ull, 628000000000000ull, 629000000000000ull, 682000000000000ull, 683000000000000ull, 826000000000000ull, 827000000000000ull, 868000000000000ull, 869000000000000ull, 630000000000000ull, 631000000000000ull, 632000000000000ull, 633000000000000ull, 634000000000000ull, 635000000000000ull, 636000000000000ull, 637000000000000ull, 638000000000000ull, 639000000000000ull, 692000000000000ull, 693000000000000ull, 836000000000000ull, 837000000000000ull, 878000000000000ull, 879000000000000ull, 640000000000000ull, 641000000000000ull, 642000000000000ull, 643000000000000ull, 644000000000000ull, 645000000000000ull, 646000000000000ull, 647000000000000ull, 648000000000000ull, 649000000000000ull, 684000000000000ull, 685000000000000ull, 846000000000000ull, 847000000000000ull, 688000000000000ull, 689000000000000ull, 650000000000000ull, 651000000000000ull, 652000000000000ull, 653000000000000ull, 654000000000000ull, 655000000000000ull, 656000000000000ull, 657000000000000ull, 658000000000000ull, 659000000000000ull, 694000000000000ull, 695000000000000ull, 856000000000000ull, 857000000000000ull, 698000000000000ull, 699000000000000ull, 660000000000000ull, 661000000000000ull, 662000000000000ull, 663000000000000ull, 664000000000000ull, 665000000000000ull, 666000000000000ull, 667000000000000ull, 668000000000000ull, 669000000000000ull, 686000000000000ull, 687000000000000ull, 866000000000000ull, 867000000000000ull, 888000000000000ull, 889000000000000ull, 670000000000000ull, 671000000000000ull, 672000000000000ull, 673000000000000ull, 674000000000000ull, 675000000000000ull, 676000000000000ull, 677000000000000ull, 678000000000000ull, 679000000000000ull, 696000000000000ull, 697000000000000ull, 876000000000000ull, 877000000000000ull, 898000000000000ull, 899000000000000ull, 700000000000000ull, 701000000000000ull, 702000000000000ull, 703000000000000ull, 704000000000000ull, 705000000000000ull, 706000000000000ull, 707000000000000ull, 708000000000000ull, 709000000000000ull, 780000000000000ull, 781000000000000ull, 906000000000000ull, 907000000000000ull, 986000000000000ull, 987000000000000ull, 710000000000000ull, 711000000000000ull, 712000000000000ull, 713000000000000ull, 714000000000000ull, 715000000000000ull, 716000000000000ull, 717000000000000ull, 718000000000000ull, 719000000000000ull, 790000000000000ull, 791000000000000ull, 916000000000000ull, 917000000000000ull, 996000000000000ull, 997000000000000ull, 720000000000000ull, 721000000000000ull, 722000000000000ull, 723000000000000ull, 724000000000000ull, 725000000000000ull, 726000000000000ull, 727000000000000ull, 728000000000000ull, 729000000000000ull, 782000000000000ull, 783000000000000ull, 926000000000000ull, 927000000000000ull, 968000000000000ull, 969000000000000ull, 730000000000000ull, 731000000000000ull, 732000000000000ull, 733000000000000ull, 734000000000000ull, 735000000000000ull, 736000000000000ull, 737000000000000ull, 738000000000000ull, 739000000000000ull, 792000000000000ull, 793000000000000ull, 936000000000000ull, 937000000000000ull, 978000000000000ull, 979000000000000ull, 740000000000000ull, 741000000000000ull, 742000000000000ull, 743000000000000ull, 744000000000000ull, 745000000000000ull, 746000000000000ull, 747000000000000ull, 748000000000000ull, 749000000000000ull, 784000000000000ull, 785000000000000ull, 946000000000000ull, 947000000000000ull, 788000000000000ull, 789000000000000ull, 750000000000000ull, 751000000000000ull, 752000000000000ull, 753000000000000ull, 754000000000000ull, 755000000000000ull, 756000000000000ull, 757000000000000ull, 758000000000000ull, 759000000000000ull, 794000000000000ull, 795000000000000ull, 956000000000000ull, 957000000000000ull, 798000000000000ull, 799000000000000ull, 760000000000000ull, 761000000000000ull, 762000000000000ull, 763000000000000ull, 764000000000000ull, 765000000000000ull, 766000000000000ull, 767000000000000ull, 768000000000000ull, 769000000000000ull, 786000000000000ull, 787000000000000ull, 966000000000000ull, 967000000000000ull, 988000000000000ull, 989000000000000ull, 770000000000000ull, 771000000000000ull, 772000000000000ull, 773000000000000ull, 774000000000000ull, 775000000000000ull, 776000000000000ull, 777000000000000ull, 778000000000000ull, 779000000000000ull, 796000000000000ull, 797000000000000ull, 976000000000000ull, 977000000000000ull, 998000000000000ull, 999000000000000ull }; const BID_UINT64 bid_d2b6[] = { 0000000000000000ull, 1000000000000000ull, 2000000000000000ull, 3000000000000000ull, 4000000000000000ull, 5000000000000000ull, 6000000000000000ull, 7000000000000000ull, 8000000000000000ull, 9000000000000000ull, 80000000000000000ull, 81000000000000000ull, 800000000000000000ull, 801000000000000000ull, 880000000000000000ull, 881000000000000000ull, 10000000000000000ull, 11000000000000000ull, 12000000000000000ull, 13000000000000000ull, 14000000000000000ull, 15000000000000000ull, 16000000000000000ull, 17000000000000000ull, 18000000000000000ull, 19000000000000000ull, 90000000000000000ull, 91000000000000000ull, 810000000000000000ull, 811000000000000000ull, 890000000000000000ull, 891000000000000000ull, 20000000000000000ull, 21000000000000000ull, 22000000000000000ull, 23000000000000000ull, 24000000000000000ull, 25000000000000000ull, 26000000000000000ull, 27000000000000000ull, 28000000000000000ull, 29000000000000000ull, 82000000000000000ull, 83000000000000000ull, 820000000000000000ull, 821000000000000000ull, 808000000000000000ull, 809000000000000000ull, 30000000000000000ull, 31000000000000000ull, 32000000000000000ull, 33000000000000000ull, 34000000000000000ull, 35000000000000000ull, 36000000000000000ull, 37000000000000000ull, 38000000000000000ull, 39000000000000000ull, 92000000000000000ull, 93000000000000000ull, 830000000000000000ull, 831000000000000000ull, 818000000000000000ull, 819000000000000000ull, 40000000000000000ull, 41000000000000000ull, 42000000000000000ull, 43000000000000000ull, 44000000000000000ull, 45000000000000000ull, 46000000000000000ull, 47000000000000000ull, 48000000000000000ull, 49000000000000000ull, 84000000000000000ull, 85000000000000000ull, 840000000000000000ull, 841000000000000000ull, 88000000000000000ull, 89000000000000000ull, 50000000000000000ull, 51000000000000000ull, 52000000000000000ull, 53000000000000000ull, 54000000000000000ull, 55000000000000000ull, 56000000000000000ull, 57000000000000000ull, 58000000000000000ull, 59000000000000000ull, 94000000000000000ull, 95000000000000000ull, 850000000000000000ull, 851000000000000000ull, 98000000000000000ull, 99000000000000000ull, 60000000000000000ull, 61000000000000000ull, 62000000000000000ull, 63000000000000000ull, 64000000000000000ull, 65000000000000000ull, 66000000000000000ull, 67000000000000000ull, 68000000000000000ull, 69000000000000000ull, 86000000000000000ull, 87000000000000000ull, 860000000000000000ull, 861000000000000000ull, 888000000000000000ull, 889000000000000000ull, 70000000000000000ull, 71000000000000000ull, 72000000000000000ull, 73000000000000000ull, 74000000000000000ull, 75000000000000000ull, 76000000000000000ull, 77000000000000000ull, 78000000000000000ull, 79000000000000000ull, 96000000000000000ull, 97000000000000000ull, 870000000000000000ull, 871000000000000000ull, 898000000000000000ull, 899000000000000000ull, 100000000000000000ull, 101000000000000000ull, 102000000000000000ull, 103000000000000000ull, 104000000000000000ull, 105000000000000000ull, 106000000000000000ull, 107000000000000000ull, 108000000000000000ull, 109000000000000000ull, 180000000000000000ull, 181000000000000000ull, 900000000000000000ull, 901000000000000000ull, 980000000000000000ull, 981000000000000000ull, 110000000000000000ull, 111000000000000000ull, 112000000000000000ull, 113000000000000000ull, 114000000000000000ull, 115000000000000000ull, 116000000000000000ull, 117000000000000000ull, 118000000000000000ull, 119000000000000000ull, 190000000000000000ull, 191000000000000000ull, 910000000000000000ull, 911000000000000000ull, 990000000000000000ull, 991000000000000000ull, 120000000000000000ull, 121000000000000000ull, 122000000000000000ull, 123000000000000000ull, 124000000000000000ull, 125000000000000000ull, 126000000000000000ull, 127000000000000000ull, 128000000000000000ull, 129000000000000000ull, 182000000000000000ull, 183000000000000000ull, 920000000000000000ull, 921000000000000000ull, 908000000000000000ull, 909000000000000000ull, 130000000000000000ull, 131000000000000000ull, 132000000000000000ull, 133000000000000000ull, 134000000000000000ull, 135000000000000000ull, 136000000000000000ull, 137000000000000000ull, 138000000000000000ull, 139000000000000000ull, 192000000000000000ull, 193000000000000000ull, 930000000000000000ull, 931000000000000000ull, 918000000000000000ull, 919000000000000000ull, 140000000000000000ull, 141000000000000000ull, 142000000000000000ull, 143000000000000000ull, 144000000000000000ull, 145000000000000000ull, 146000000000000000ull, 147000000000000000ull, 148000000000000000ull, 149000000000000000ull, 184000000000000000ull, 185000000000000000ull, 940000000000000000ull, 941000000000000000ull, 188000000000000000ull, 189000000000000000ull, 150000000000000000ull, 151000000000000000ull, 152000000000000000ull, 153000000000000000ull, 154000000000000000ull, 155000000000000000ull, 156000000000000000ull, 157000000000000000ull, 158000000000000000ull, 159000000000000000ull, 194000000000000000ull, 195000000000000000ull, 950000000000000000ull, 951000000000000000ull, 198000000000000000ull, 199000000000000000ull, 160000000000000000ull, 161000000000000000ull, 162000000000000000ull, 163000000000000000ull, 164000000000000000ull, 165000000000000000ull, 166000000000000000ull, 167000000000000000ull, 168000000000000000ull, 169000000000000000ull, 186000000000000000ull, 187000000000000000ull, 960000000000000000ull, 961000000000000000ull, 988000000000000000ull, 989000000000000000ull, 170000000000000000ull, 171000000000000000ull, 172000000000000000ull, 173000000000000000ull, 174000000000000000ull, 175000000000000000ull, 176000000000000000ull, 177000000000000000ull, 178000000000000000ull, 179000000000000000ull, 196000000000000000ull, 197000000000000000ull, 970000000000000000ull, 971000000000000000ull, 998000000000000000ull, 999000000000000000ull, 200000000000000000ull, 201000000000000000ull, 202000000000000000ull, 203000000000000000ull, 204000000000000000ull, 205000000000000000ull, 206000000000000000ull, 207000000000000000ull, 208000000000000000ull, 209000000000000000ull, 280000000000000000ull, 281000000000000000ull, 802000000000000000ull, 803000000000000000ull, 882000000000000000ull, 883000000000000000ull, 210000000000000000ull, 211000000000000000ull, 212000000000000000ull, 213000000000000000ull, 214000000000000000ull, 215000000000000000ull, 216000000000000000ull, 217000000000000000ull, 218000000000000000ull, 219000000000000000ull, 290000000000000000ull, 291000000000000000ull, 812000000000000000ull, 813000000000000000ull, 892000000000000000ull, 893000000000000000ull, 220000000000000000ull, 221000000000000000ull, 222000000000000000ull, 223000000000000000ull, 224000000000000000ull, 225000000000000000ull, 226000000000000000ull, 227000000000000000ull, 228000000000000000ull, 229000000000000000ull, 282000000000000000ull, 283000000000000000ull, 822000000000000000ull, 823000000000000000ull, 828000000000000000ull, 829000000000000000ull, 230000000000000000ull, 231000000000000000ull, 232000000000000000ull, 233000000000000000ull, 234000000000000000ull, 235000000000000000ull, 236000000000000000ull, 237000000000000000ull, 238000000000000000ull, 239000000000000000ull, 292000000000000000ull, 293000000000000000ull, 832000000000000000ull, 833000000000000000ull, 838000000000000000ull, 839000000000000000ull, 240000000000000000ull, 241000000000000000ull, 242000000000000000ull, 243000000000000000ull, 244000000000000000ull, 245000000000000000ull, 246000000000000000ull, 247000000000000000ull, 248000000000000000ull, 249000000000000000ull, 284000000000000000ull, 285000000000000000ull, 842000000000000000ull, 843000000000000000ull, 288000000000000000ull, 289000000000000000ull, 250000000000000000ull, 251000000000000000ull, 252000000000000000ull, 253000000000000000ull, 254000000000000000ull, 255000000000000000ull, 256000000000000000ull, 257000000000000000ull, 258000000000000000ull, 259000000000000000ull, 294000000000000000ull, 295000000000000000ull, 852000000000000000ull, 853000000000000000ull, 298000000000000000ull, 299000000000000000ull, 260000000000000000ull, 261000000000000000ull, 262000000000000000ull, 263000000000000000ull, 264000000000000000ull, 265000000000000000ull, 266000000000000000ull, 267000000000000000ull, 268000000000000000ull, 269000000000000000ull, 286000000000000000ull, 287000000000000000ull, 862000000000000000ull, 863000000000000000ull, 888000000000000000ull, 889000000000000000ull, 270000000000000000ull, 271000000000000000ull, 272000000000000000ull, 273000000000000000ull, 274000000000000000ull, 275000000000000000ull, 276000000000000000ull, 277000000000000000ull, 278000000000000000ull, 279000000000000000ull, 296000000000000000ull, 297000000000000000ull, 872000000000000000ull, 873000000000000000ull, 898000000000000000ull, 899000000000000000ull, 300000000000000000ull, 301000000000000000ull, 302000000000000000ull, 303000000000000000ull, 304000000000000000ull, 305000000000000000ull, 306000000000000000ull, 307000000000000000ull, 308000000000000000ull, 309000000000000000ull, 380000000000000000ull, 381000000000000000ull, 902000000000000000ull, 903000000000000000ull, 982000000000000000ull, 983000000000000000ull, 310000000000000000ull, 311000000000000000ull, 312000000000000000ull, 313000000000000000ull, 314000000000000000ull, 315000000000000000ull, 316000000000000000ull, 317000000000000000ull, 318000000000000000ull, 319000000000000000ull, 390000000000000000ull, 391000000000000000ull, 912000000000000000ull, 913000000000000000ull, 992000000000000000ull, 993000000000000000ull, 320000000000000000ull, 321000000000000000ull, 322000000000000000ull, 323000000000000000ull, 324000000000000000ull, 325000000000000000ull, 326000000000000000ull, 327000000000000000ull, 328000000000000000ull, 329000000000000000ull, 382000000000000000ull, 383000000000000000ull, 922000000000000000ull, 923000000000000000ull, 928000000000000000ull, 929000000000000000ull, 330000000000000000ull, 331000000000000000ull, 332000000000000000ull, 333000000000000000ull, 334000000000000000ull, 335000000000000000ull, 336000000000000000ull, 337000000000000000ull, 338000000000000000ull, 339000000000000000ull, 392000000000000000ull, 393000000000000000ull, 932000000000000000ull, 933000000000000000ull, 938000000000000000ull, 939000000000000000ull, 340000000000000000ull, 341000000000000000ull, 342000000000000000ull, 343000000000000000ull, 344000000000000000ull, 345000000000000000ull, 346000000000000000ull, 347000000000000000ull, 348000000000000000ull, 349000000000000000ull, 384000000000000000ull, 385000000000000000ull, 942000000000000000ull, 943000000000000000ull, 388000000000000000ull, 389000000000000000ull, 350000000000000000ull, 351000000000000000ull, 352000000000000000ull, 353000000000000000ull, 354000000000000000ull, 355000000000000000ull, 356000000000000000ull, 357000000000000000ull, 358000000000000000ull, 359000000000000000ull, 394000000000000000ull, 395000000000000000ull, 952000000000000000ull, 953000000000000000ull, 398000000000000000ull, 399000000000000000ull, 360000000000000000ull, 361000000000000000ull, 362000000000000000ull, 363000000000000000ull, 364000000000000000ull, 365000000000000000ull, 366000000000000000ull, 367000000000000000ull, 368000000000000000ull, 369000000000000000ull, 386000000000000000ull, 387000000000000000ull, 962000000000000000ull, 963000000000000000ull, 988000000000000000ull, 989000000000000000ull, 370000000000000000ull, 371000000000000000ull, 372000000000000000ull, 373000000000000000ull, 374000000000000000ull, 375000000000000000ull, 376000000000000000ull, 377000000000000000ull, 378000000000000000ull, 379000000000000000ull, 396000000000000000ull, 397000000000000000ull, 972000000000000000ull, 973000000000000000ull, 998000000000000000ull, 999000000000000000ull, 400000000000000000ull, 401000000000000000ull, 402000000000000000ull, 403000000000000000ull, 404000000000000000ull, 405000000000000000ull, 406000000000000000ull, 407000000000000000ull, 408000000000000000ull, 409000000000000000ull, 480000000000000000ull, 481000000000000000ull, 804000000000000000ull, 805000000000000000ull, 884000000000000000ull, 885000000000000000ull, 410000000000000000ull, 411000000000000000ull, 412000000000000000ull, 413000000000000000ull, 414000000000000000ull, 415000000000000000ull, 416000000000000000ull, 417000000000000000ull, 418000000000000000ull, 419000000000000000ull, 490000000000000000ull, 491000000000000000ull, 814000000000000000ull, 815000000000000000ull, 894000000000000000ull, 895000000000000000ull, 420000000000000000ull, 421000000000000000ull, 422000000000000000ull, 423000000000000000ull, 424000000000000000ull, 425000000000000000ull, 426000000000000000ull, 427000000000000000ull, 428000000000000000ull, 429000000000000000ull, 482000000000000000ull, 483000000000000000ull, 824000000000000000ull, 825000000000000000ull, 848000000000000000ull, 849000000000000000ull, 430000000000000000ull, 431000000000000000ull, 432000000000000000ull, 433000000000000000ull, 434000000000000000ull, 435000000000000000ull, 436000000000000000ull, 437000000000000000ull, 438000000000000000ull, 439000000000000000ull, 492000000000000000ull, 493000000000000000ull, 834000000000000000ull, 835000000000000000ull, 858000000000000000ull, 859000000000000000ull, 440000000000000000ull, 441000000000000000ull, 442000000000000000ull, 443000000000000000ull, 444000000000000000ull, 445000000000000000ull, 446000000000000000ull, 447000000000000000ull, 448000000000000000ull, 449000000000000000ull, 484000000000000000ull, 485000000000000000ull, 844000000000000000ull, 845000000000000000ull, 488000000000000000ull, 489000000000000000ull, 450000000000000000ull, 451000000000000000ull, 452000000000000000ull, 453000000000000000ull, 454000000000000000ull, 455000000000000000ull, 456000000000000000ull, 457000000000000000ull, 458000000000000000ull, 459000000000000000ull, 494000000000000000ull, 495000000000000000ull, 854000000000000000ull, 855000000000000000ull, 498000000000000000ull, 499000000000000000ull, 460000000000000000ull, 461000000000000000ull, 462000000000000000ull, 463000000000000000ull, 464000000000000000ull, 465000000000000000ull, 466000000000000000ull, 467000000000000000ull, 468000000000000000ull, 469000000000000000ull, 486000000000000000ull, 487000000000000000ull, 864000000000000000ull, 865000000000000000ull, 888000000000000000ull, 889000000000000000ull, 470000000000000000ull, 471000000000000000ull, 472000000000000000ull, 473000000000000000ull, 474000000000000000ull, 475000000000000000ull, 476000000000000000ull, 477000000000000000ull, 478000000000000000ull, 479000000000000000ull, 496000000000000000ull, 497000000000000000ull, 874000000000000000ull, 875000000000000000ull, 898000000000000000ull, 899000000000000000ull, 500000000000000000ull, 501000000000000000ull, 502000000000000000ull, 503000000000000000ull, 504000000000000000ull, 505000000000000000ull, 506000000000000000ull, 507000000000000000ull, 508000000000000000ull, 509000000000000000ull, 580000000000000000ull, 581000000000000000ull, 904000000000000000ull, 905000000000000000ull, 984000000000000000ull, 985000000000000000ull, 510000000000000000ull, 511000000000000000ull, 512000000000000000ull, 513000000000000000ull, 514000000000000000ull, 515000000000000000ull, 516000000000000000ull, 517000000000000000ull, 518000000000000000ull, 519000000000000000ull, 590000000000000000ull, 591000000000000000ull, 914000000000000000ull, 915000000000000000ull, 994000000000000000ull, 995000000000000000ull, 520000000000000000ull, 521000000000000000ull, 522000000000000000ull, 523000000000000000ull, 524000000000000000ull, 525000000000000000ull, 526000000000000000ull, 527000000000000000ull, 528000000000000000ull, 529000000000000000ull, 582000000000000000ull, 583000000000000000ull, 924000000000000000ull, 925000000000000000ull, 948000000000000000ull, 949000000000000000ull, 530000000000000000ull, 531000000000000000ull, 532000000000000000ull, 533000000000000000ull, 534000000000000000ull, 535000000000000000ull, 536000000000000000ull, 537000000000000000ull, 538000000000000000ull, 539000000000000000ull, 592000000000000000ull, 593000000000000000ull, 934000000000000000ull, 935000000000000000ull, 958000000000000000ull, 959000000000000000ull, 540000000000000000ull, 541000000000000000ull, 542000000000000000ull, 543000000000000000ull, 544000000000000000ull, 545000000000000000ull, 546000000000000000ull, 547000000000000000ull, 548000000000000000ull, 549000000000000000ull, 584000000000000000ull, 585000000000000000ull, 944000000000000000ull, 945000000000000000ull, 588000000000000000ull, 589000000000000000ull, 550000000000000000ull, 551000000000000000ull, 552000000000000000ull, 553000000000000000ull, 554000000000000000ull, 555000000000000000ull, 556000000000000000ull, 557000000000000000ull, 558000000000000000ull, 559000000000000000ull, 594000000000000000ull, 595000000000000000ull, 954000000000000000ull, 955000000000000000ull, 598000000000000000ull, 599000000000000000ull, 560000000000000000ull, 561000000000000000ull, 562000000000000000ull, 563000000000000000ull, 564000000000000000ull, 565000000000000000ull, 566000000000000000ull, 567000000000000000ull, 568000000000000000ull, 569000000000000000ull, 586000000000000000ull, 587000000000000000ull, 964000000000000000ull, 965000000000000000ull, 988000000000000000ull, 989000000000000000ull, 570000000000000000ull, 571000000000000000ull, 572000000000000000ull, 573000000000000000ull, 574000000000000000ull, 575000000000000000ull, 576000000000000000ull, 577000000000000000ull, 578000000000000000ull, 579000000000000000ull, 596000000000000000ull, 597000000000000000ull, 974000000000000000ull, 975000000000000000ull, 998000000000000000ull, 999000000000000000ull, 600000000000000000ull, 601000000000000000ull, 602000000000000000ull, 603000000000000000ull, 604000000000000000ull, 605000000000000000ull, 606000000000000000ull, 607000000000000000ull, 608000000000000000ull, 609000000000000000ull, 680000000000000000ull, 681000000000000000ull, 806000000000000000ull, 807000000000000000ull, 886000000000000000ull, 887000000000000000ull, 610000000000000000ull, 611000000000000000ull, 612000000000000000ull, 613000000000000000ull, 614000000000000000ull, 615000000000000000ull, 616000000000000000ull, 617000000000000000ull, 618000000000000000ull, 619000000000000000ull, 690000000000000000ull, 691000000000000000ull, 816000000000000000ull, 817000000000000000ull, 896000000000000000ull, 897000000000000000ull, 620000000000000000ull, 621000000000000000ull, 622000000000000000ull, 623000000000000000ull, 624000000000000000ull, 625000000000000000ull, 626000000000000000ull, 627000000000000000ull, 628000000000000000ull, 629000000000000000ull, 682000000000000000ull, 683000000000000000ull, 826000000000000000ull, 827000000000000000ull, 868000000000000000ull, 869000000000000000ull, 630000000000000000ull, 631000000000000000ull, 632000000000000000ull, 633000000000000000ull, 634000000000000000ull, 635000000000000000ull, 636000000000000000ull, 637000000000000000ull, 638000000000000000ull, 639000000000000000ull, 692000000000000000ull, 693000000000000000ull, 836000000000000000ull, 837000000000000000ull, 878000000000000000ull, 879000000000000000ull, 640000000000000000ull, 641000000000000000ull, 642000000000000000ull, 643000000000000000ull, 644000000000000000ull, 645000000000000000ull, 646000000000000000ull, 647000000000000000ull, 648000000000000000ull, 649000000000000000ull, 684000000000000000ull, 685000000000000000ull, 846000000000000000ull, 847000000000000000ull, 688000000000000000ull, 689000000000000000ull, 650000000000000000ull, 651000000000000000ull, 652000000000000000ull, 653000000000000000ull, 654000000000000000ull, 655000000000000000ull, 656000000000000000ull, 657000000000000000ull, 658000000000000000ull, 659000000000000000ull, 694000000000000000ull, 695000000000000000ull, 856000000000000000ull, 857000000000000000ull, 698000000000000000ull, 699000000000000000ull, 660000000000000000ull, 661000000000000000ull, 662000000000000000ull, 663000000000000000ull, 664000000000000000ull, 665000000000000000ull, 666000000000000000ull, 667000000000000000ull, 668000000000000000ull, 669000000000000000ull, 686000000000000000ull, 687000000000000000ull, 866000000000000000ull, 867000000000000000ull, 888000000000000000ull, 889000000000000000ull, 670000000000000000ull, 671000000000000000ull, 672000000000000000ull, 673000000000000000ull, 674000000000000000ull, 675000000000000000ull, 676000000000000000ull, 677000000000000000ull, 678000000000000000ull, 679000000000000000ull, 696000000000000000ull, 697000000000000000ull, 876000000000000000ull, 877000000000000000ull, 898000000000000000ull, 899000000000000000ull, 700000000000000000ull, 701000000000000000ull, 702000000000000000ull, 703000000000000000ull, 704000000000000000ull, 705000000000000000ull, 706000000000000000ull, 707000000000000000ull, 708000000000000000ull, 709000000000000000ull, 780000000000000000ull, 781000000000000000ull, 906000000000000000ull, 907000000000000000ull, 986000000000000000ull, 987000000000000000ull, 710000000000000000ull, 711000000000000000ull, 712000000000000000ull, 713000000000000000ull, 714000000000000000ull, 715000000000000000ull, 716000000000000000ull, 717000000000000000ull, 718000000000000000ull, 719000000000000000ull, 790000000000000000ull, 791000000000000000ull, 916000000000000000ull, 917000000000000000ull, 996000000000000000ull, 997000000000000000ull, 720000000000000000ull, 721000000000000000ull, 722000000000000000ull, 723000000000000000ull, 724000000000000000ull, 725000000000000000ull, 726000000000000000ull, 727000000000000000ull, 728000000000000000ull, 729000000000000000ull, 782000000000000000ull, 783000000000000000ull, 926000000000000000ull, 927000000000000000ull, 968000000000000000ull, 969000000000000000ull, 730000000000000000ull, 731000000000000000ull, 732000000000000000ull, 733000000000000000ull, 734000000000000000ull, 735000000000000000ull, 736000000000000000ull, 737000000000000000ull, 738000000000000000ull, 739000000000000000ull, 792000000000000000ull, 793000000000000000ull, 936000000000000000ull, 937000000000000000ull, 978000000000000000ull, 979000000000000000ull, 740000000000000000ull, 741000000000000000ull, 742000000000000000ull, 743000000000000000ull, 744000000000000000ull, 745000000000000000ull, 746000000000000000ull, 747000000000000000ull, 748000000000000000ull, 749000000000000000ull, 784000000000000000ull, 785000000000000000ull, 946000000000000000ull, 947000000000000000ull, 788000000000000000ull, 789000000000000000ull, 750000000000000000ull, 751000000000000000ull, 752000000000000000ull, 753000000000000000ull, 754000000000000000ull, 755000000000000000ull, 756000000000000000ull, 757000000000000000ull, 758000000000000000ull, 759000000000000000ull, 794000000000000000ull, 795000000000000000ull, 956000000000000000ull, 957000000000000000ull, 798000000000000000ull, 799000000000000000ull, 760000000000000000ull, 761000000000000000ull, 762000000000000000ull, 763000000000000000ull, 764000000000000000ull, 765000000000000000ull, 766000000000000000ull, 767000000000000000ull, 768000000000000000ull, 769000000000000000ull, 786000000000000000ull, 787000000000000000ull, 966000000000000000ull, 967000000000000000ull, 988000000000000000ull, 989000000000000000ull, 770000000000000000ull, 771000000000000000ull, 772000000000000000ull, 773000000000000000ull, 774000000000000000ull, 775000000000000000ull, 776000000000000000ull, 777000000000000000ull, 778000000000000000ull, 779000000000000000ull, 796000000000000000ull, 797000000000000000ull, 976000000000000000ull, 977000000000000000ull, 998000000000000000ull, 999000000000000000ull }; const BID_UINT64 bid_b2d[] = { 0x000ull, 0x001ull, 0x002ull, 0x003ull, 0x004ull, 0x005ull, 0x006ull, 0x007ull, 0x008ull, 0x009ull, 0x010ull, 0x011ull, 0x012ull, 0x013ull, 0x014ull, 0x015ull, 0x016ull, 0x017ull, 0x018ull, 0x019ull, 0x020ull, 0x021ull, 0x022ull, 0x023ull, 0x024ull, 0x025ull, 0x026ull, 0x027ull, 0x028ull, 0x029ull, 0x030ull, 0x031ull, 0x032ull, 0x033ull, 0x034ull, 0x035ull, 0x036ull, 0x037ull, 0x038ull, 0x039ull, 0x040ull, 0x041ull, 0x042ull, 0x043ull, 0x044ull, 0x045ull, 0x046ull, 0x047ull, 0x048ull, 0x049ull, 0x050ull, 0x051ull, 0x052ull, 0x053ull, 0x054ull, 0x055ull, 0x056ull, 0x057ull, 0x058ull, 0x059ull, 0x060ull, 0x061ull, 0x062ull, 0x063ull, 0x064ull, 0x065ull, 0x066ull, 0x067ull, 0x068ull, 0x069ull, 0x070ull, 0x071ull, 0x072ull, 0x073ull, 0x074ull, 0x075ull, 0x076ull, 0x077ull, 0x078ull, 0x079ull, 0x00aull, 0x00bull, 0x02aull, 0x02bull, 0x04aull, 0x04bull, 0x06aull, 0x06bull, 0x04eull, 0x04full, 0x01aull, 0x01bull, 0x03aull, 0x03bull, 0x05aull, 0x05bull, 0x07aull, 0x07bull, 0x05eull, 0x05full, 0x080ull, 0x081ull, 0x082ull, 0x083ull, 0x084ull, 0x085ull, 0x086ull, 0x087ull, 0x088ull, 0x089ull, 0x090ull, 0x091ull, 0x092ull, 0x093ull, 0x094ull, 0x095ull, 0x096ull, 0x097ull, 0x098ull, 0x099ull, 0x0a0ull, 0x0a1ull, 0x0a2ull, 0x0a3ull, 0x0a4ull, 0x0a5ull, 0x0a6ull, 0x0a7ull, 0x0a8ull, 0x0a9ull, 0x0b0ull, 0x0b1ull, 0x0b2ull, 0x0b3ull, 0x0b4ull, 0x0b5ull, 0x0b6ull, 0x0b7ull, 0x0b8ull, 0x0b9ull, 0x0c0ull, 0x0c1ull, 0x0c2ull, 0x0c3ull, 0x0c4ull, 0x0c5ull, 0x0c6ull, 0x0c7ull, 0x0c8ull, 0x0c9ull, 0x0d0ull, 0x0d1ull, 0x0d2ull, 0x0d3ull, 0x0d4ull, 0x0d5ull, 0x0d6ull, 0x0d7ull, 0x0d8ull, 0x0d9ull, 0x0e0ull, 0x0e1ull, 0x0e2ull, 0x0e3ull, 0x0e4ull, 0x0e5ull, 0x0e6ull, 0x0e7ull, 0x0e8ull, 0x0e9ull, 0x0f0ull, 0x0f1ull, 0x0f2ull, 0x0f3ull, 0x0f4ull, 0x0f5ull, 0x0f6ull, 0x0f7ull, 0x0f8ull, 0x0f9ull, 0x08aull, 0x08bull, 0x0aaull, 0x0abull, 0x0caull, 0x0cbull, 0x0eaull, 0x0ebull, 0x0ceull, 0x0cfull, 0x09aull, 0x09bull, 0x0baull, 0x0bbull, 0x0daull, 0x0dbull, 0x0faull, 0x0fbull, 0x0deull, 0x0dfull, 0x100ull, 0x101ull, 0x102ull, 0x103ull, 0x104ull, 0x105ull, 0x106ull, 0x107ull, 0x108ull, 0x109ull, 0x110ull, 0x111ull, 0x112ull, 0x113ull, 0x114ull, 0x115ull, 0x116ull, 0x117ull, 0x118ull, 0x119ull, 0x120ull, 0x121ull, 0x122ull, 0x123ull, 0x124ull, 0x125ull, 0x126ull, 0x127ull, 0x128ull, 0x129ull, 0x130ull, 0x131ull, 0x132ull, 0x133ull, 0x134ull, 0x135ull, 0x136ull, 0x137ull, 0x138ull, 0x139ull, 0x140ull, 0x141ull, 0x142ull, 0x143ull, 0x144ull, 0x145ull, 0x146ull, 0x147ull, 0x148ull, 0x149ull, 0x150ull, 0x151ull, 0x152ull, 0x153ull, 0x154ull, 0x155ull, 0x156ull, 0x157ull, 0x158ull, 0x159ull, 0x160ull, 0x161ull, 0x162ull, 0x163ull, 0x164ull, 0x165ull, 0x166ull, 0x167ull, 0x168ull, 0x169ull, 0x170ull, 0x171ull, 0x172ull, 0x173ull, 0x174ull, 0x175ull, 0x176ull, 0x177ull, 0x178ull, 0x179ull, 0x10aull, 0x10bull, 0x12aull, 0x12bull, 0x14aull, 0x14bull, 0x16aull, 0x16bull, 0x14eull, 0x14full, 0x11aull, 0x11bull, 0x13aull, 0x13bull, 0x15aull, 0x15bull, 0x17aull, 0x17bull, 0x15eull, 0x15full, 0x180ull, 0x181ull, 0x182ull, 0x183ull, 0x184ull, 0x185ull, 0x186ull, 0x187ull, 0x188ull, 0x189ull, 0x190ull, 0x191ull, 0x192ull, 0x193ull, 0x194ull, 0x195ull, 0x196ull, 0x197ull, 0x198ull, 0x199ull, 0x1a0ull, 0x1a1ull, 0x1a2ull, 0x1a3ull, 0x1a4ull, 0x1a5ull, 0x1a6ull, 0x1a7ull, 0x1a8ull, 0x1a9ull, 0x1b0ull, 0x1b1ull, 0x1b2ull, 0x1b3ull, 0x1b4ull, 0x1b5ull, 0x1b6ull, 0x1b7ull, 0x1b8ull, 0x1b9ull, 0x1c0ull, 0x1c1ull, 0x1c2ull, 0x1c3ull, 0x1c4ull, 0x1c5ull, 0x1c6ull, 0x1c7ull, 0x1c8ull, 0x1c9ull, 0x1d0ull, 0x1d1ull, 0x1d2ull, 0x1d3ull, 0x1d4ull, 0x1d5ull, 0x1d6ull, 0x1d7ull, 0x1d8ull, 0x1d9ull, 0x1e0ull, 0x1e1ull, 0x1e2ull, 0x1e3ull, 0x1e4ull, 0x1e5ull, 0x1e6ull, 0x1e7ull, 0x1e8ull, 0x1e9ull, 0x1f0ull, 0x1f1ull, 0x1f2ull, 0x1f3ull, 0x1f4ull, 0x1f5ull, 0x1f6ull, 0x1f7ull, 0x1f8ull, 0x1f9ull, 0x18aull, 0x18bull, 0x1aaull, 0x1abull, 0x1caull, 0x1cbull, 0x1eaull, 0x1ebull, 0x1ceull, 0x1cfull, 0x19aull, 0x19bull, 0x1baull, 0x1bbull, 0x1daull, 0x1dbull, 0x1faull, 0x1fbull, 0x1deull, 0x1dfull, 0x200ull, 0x201ull, 0x202ull, 0x203ull, 0x204ull, 0x205ull, 0x206ull, 0x207ull, 0x208ull, 0x209ull, 0x210ull, 0x211ull, 0x212ull, 0x213ull, 0x214ull, 0x215ull, 0x216ull, 0x217ull, 0x218ull, 0x219ull, 0x220ull, 0x221ull, 0x222ull, 0x223ull, 0x224ull, 0x225ull, 0x226ull, 0x227ull, 0x228ull, 0x229ull, 0x230ull, 0x231ull, 0x232ull, 0x233ull, 0x234ull, 0x235ull, 0x236ull, 0x237ull, 0x238ull, 0x239ull, 0x240ull, 0x241ull, 0x242ull, 0x243ull, 0x244ull, 0x245ull, 0x246ull, 0x247ull, 0x248ull, 0x249ull, 0x250ull, 0x251ull, 0x252ull, 0x253ull, 0x254ull, 0x255ull, 0x256ull, 0x257ull, 0x258ull, 0x259ull, 0x260ull, 0x261ull, 0x262ull, 0x263ull, 0x264ull, 0x265ull, 0x266ull, 0x267ull, 0x268ull, 0x269ull, 0x270ull, 0x271ull, 0x272ull, 0x273ull, 0x274ull, 0x275ull, 0x276ull, 0x277ull, 0x278ull, 0x279ull, 0x20aull, 0x20bull, 0x22aull, 0x22bull, 0x24aull, 0x24bull, 0x26aull, 0x26bull, 0x24eull, 0x24full, 0x21aull, 0x21bull, 0x23aull, 0x23bull, 0x25aull, 0x25bull, 0x27aull, 0x27bull, 0x25eull, 0x25full, 0x280ull, 0x281ull, 0x282ull, 0x283ull, 0x284ull, 0x285ull, 0x286ull, 0x287ull, 0x288ull, 0x289ull, 0x290ull, 0x291ull, 0x292ull, 0x293ull, 0x294ull, 0x295ull, 0x296ull, 0x297ull, 0x298ull, 0x299ull, 0x2a0ull, 0x2a1ull, 0x2a2ull, 0x2a3ull, 0x2a4ull, 0x2a5ull, 0x2a6ull, 0x2a7ull, 0x2a8ull, 0x2a9ull, 0x2b0ull, 0x2b1ull, 0x2b2ull, 0x2b3ull, 0x2b4ull, 0x2b5ull, 0x2b6ull, 0x2b7ull, 0x2b8ull, 0x2b9ull, 0x2c0ull, 0x2c1ull, 0x2c2ull, 0x2c3ull, 0x2c4ull, 0x2c5ull, 0x2c6ull, 0x2c7ull, 0x2c8ull, 0x2c9ull, 0x2d0ull, 0x2d1ull, 0x2d2ull, 0x2d3ull, 0x2d4ull, 0x2d5ull, 0x2d6ull, 0x2d7ull, 0x2d8ull, 0x2d9ull, 0x2e0ull, 0x2e1ull, 0x2e2ull, 0x2e3ull, 0x2e4ull, 0x2e5ull, 0x2e6ull, 0x2e7ull, 0x2e8ull, 0x2e9ull, 0x2f0ull, 0x2f1ull, 0x2f2ull, 0x2f3ull, 0x2f4ull, 0x2f5ull, 0x2f6ull, 0x2f7ull, 0x2f8ull, 0x2f9ull, 0x28aull, 0x28bull, 0x2aaull, 0x2abull, 0x2caull, 0x2cbull, 0x2eaull, 0x2ebull, 0x2ceull, 0x2cfull, 0x29aull, 0x29bull, 0x2baull, 0x2bbull, 0x2daull, 0x2dbull, 0x2faull, 0x2fbull, 0x2deull, 0x2dfull, 0x300ull, 0x301ull, 0x302ull, 0x303ull, 0x304ull, 0x305ull, 0x306ull, 0x307ull, 0x308ull, 0x309ull, 0x310ull, 0x311ull, 0x312ull, 0x313ull, 0x314ull, 0x315ull, 0x316ull, 0x317ull, 0x318ull, 0x319ull, 0x320ull, 0x321ull, 0x322ull, 0x323ull, 0x324ull, 0x325ull, 0x326ull, 0x327ull, 0x328ull, 0x329ull, 0x330ull, 0x331ull, 0x332ull, 0x333ull, 0x334ull, 0x335ull, 0x336ull, 0x337ull, 0x338ull, 0x339ull, 0x340ull, 0x341ull, 0x342ull, 0x343ull, 0x344ull, 0x345ull, 0x346ull, 0x347ull, 0x348ull, 0x349ull, 0x350ull, 0x351ull, 0x352ull, 0x353ull, 0x354ull, 0x355ull, 0x356ull, 0x357ull, 0x358ull, 0x359ull, 0x360ull, 0x361ull, 0x362ull, 0x363ull, 0x364ull, 0x365ull, 0x366ull, 0x367ull, 0x368ull, 0x369ull, 0x370ull, 0x371ull, 0x372ull, 0x373ull, 0x374ull, 0x375ull, 0x376ull, 0x377ull, 0x378ull, 0x379ull, 0x30aull, 0x30bull, 0x32aull, 0x32bull, 0x34aull, 0x34bull, 0x36aull, 0x36bull, 0x34eull, 0x34full, 0x31aull, 0x31bull, 0x33aull, 0x33bull, 0x35aull, 0x35bull, 0x37aull, 0x37bull, 0x35eull, 0x35full, 0x380ull, 0x381ull, 0x382ull, 0x383ull, 0x384ull, 0x385ull, 0x386ull, 0x387ull, 0x388ull, 0x389ull, 0x390ull, 0x391ull, 0x392ull, 0x393ull, 0x394ull, 0x395ull, 0x396ull, 0x397ull, 0x398ull, 0x399ull, 0x3a0ull, 0x3a1ull, 0x3a2ull, 0x3a3ull, 0x3a4ull, 0x3a5ull, 0x3a6ull, 0x3a7ull, 0x3a8ull, 0x3a9ull, 0x3b0ull, 0x3b1ull, 0x3b2ull, 0x3b3ull, 0x3b4ull, 0x3b5ull, 0x3b6ull, 0x3b7ull, 0x3b8ull, 0x3b9ull, 0x3c0ull, 0x3c1ull, 0x3c2ull, 0x3c3ull, 0x3c4ull, 0x3c5ull, 0x3c6ull, 0x3c7ull, 0x3c8ull, 0x3c9ull, 0x3d0ull, 0x3d1ull, 0x3d2ull, 0x3d3ull, 0x3d4ull, 0x3d5ull, 0x3d6ull, 0x3d7ull, 0x3d8ull, 0x3d9ull, 0x3e0ull, 0x3e1ull, 0x3e2ull, 0x3e3ull, 0x3e4ull, 0x3e5ull, 0x3e6ull, 0x3e7ull, 0x3e8ull, 0x3e9ull, 0x3f0ull, 0x3f1ull, 0x3f2ull, 0x3f3ull, 0x3f4ull, 0x3f5ull, 0x3f6ull, 0x3f7ull, 0x3f8ull, 0x3f9ull, 0x38aull, 0x38bull, 0x3aaull, 0x3abull, 0x3caull, 0x3cbull, 0x3eaull, 0x3ebull, 0x3ceull, 0x3cfull, 0x39aull, 0x39bull, 0x3baull, 0x3bbull, 0x3daull, 0x3dbull, 0x3faull, 0x3fbull, 0x3deull, 0x3dfull, 0x00cull, 0x00dull, 0x10cull, 0x10dull, 0x20cull, 0x20dull, 0x30cull, 0x30dull, 0x02eull, 0x02full, 0x01cull, 0x01dull, 0x11cull, 0x11dull, 0x21cull, 0x21dull, 0x31cull, 0x31dull, 0x03eull, 0x03full, 0x02cull, 0x02dull, 0x12cull, 0x12dull, 0x22cull, 0x22dull, 0x32cull, 0x32dull, 0x12eull, 0x12full, 0x03cull, 0x03dull, 0x13cull, 0x13dull, 0x23cull, 0x23dull, 0x33cull, 0x33dull, 0x13eull, 0x13full, 0x04cull, 0x04dull, 0x14cull, 0x14dull, 0x24cull, 0x24dull, 0x34cull, 0x34dull, 0x22eull, 0x22full, 0x05cull, 0x05dull, 0x15cull, 0x15dull, 0x25cull, 0x25dull, 0x35cull, 0x35dull, 0x23eull, 0x23full, 0x06cull, 0x06dull, 0x16cull, 0x16dull, 0x26cull, 0x26dull, 0x36cull, 0x36dull, 0x32eull, 0x32full, 0x07cull, 0x07dull, 0x17cull, 0x17dull, 0x27cull, 0x27dull, 0x37cull, 0x37dull, 0x33eull, 0x33full, 0x00eull, 0x00full, 0x10eull, 0x10full, 0x20eull, 0x20full, 0x30eull, 0x30full, 0x06eull, 0x06full, 0x01eull, 0x01full, 0x11eull, 0x11full, 0x21eull, 0x21full, 0x31eull, 0x31full, 0x07eull, 0x07full, 0x08cull, 0x08dull, 0x18cull, 0x18dull, 0x28cull, 0x28dull, 0x38cull, 0x38dull, 0x0aeull, 0x0afull, 0x09cull, 0x09dull, 0x19cull, 0x19dull, 0x29cull, 0x29dull, 0x39cull, 0x39dull, 0x0beull, 0x0bfull, 0x0acull, 0x0adull, 0x1acull, 0x1adull, 0x2acull, 0x2adull, 0x3acull, 0x3adull, 0x1aeull, 0x1afull, 0x0bcull, 0x0bdull, 0x1bcull, 0x1bdull, 0x2bcull, 0x2bdull, 0x3bcull, 0x3bdull, 0x1beull, 0x1bfull, 0x0ccull, 0x0cdull, 0x1ccull, 0x1cdull, 0x2ccull, 0x2cdull, 0x3ccull, 0x3cdull, 0x2aeull, 0x2afull, 0x0dcull, 0x0ddull, 0x1dcull, 0x1ddull, 0x2dcull, 0x2ddull, 0x3dcull, 0x3ddull, 0x2beull, 0x2bfull, 0x0ecull, 0x0edull, 0x1ecull, 0x1edull, 0x2ecull, 0x2edull, 0x3ecull, 0x3edull, 0x3aeull, 0x3afull, 0x0fcull, 0x0fdull, 0x1fcull, 0x1fdull, 0x2fcull, 0x2fdull, 0x3fcull, 0x3fdull, 0x3beull, 0x3bfull, 0x08eull, 0x08full, 0x18eull, 0x18full, 0x28eull, 0x28full, 0x38eull, 0x38full, 0x0eeull, 0x0efull, 0x09eull, 0x09full, 0x19eull, 0x19full, 0x29eull, 0x29full, 0x39eull, 0x39full, 0x0feull, 0x0ffull }; const BID_UINT64 bid_b2d2[] = { 0x000ull << 10, 0x001ull << 10, 0x002ull << 10, 0x003ull << 10, 0x004ull << 10, 0x005ull << 10, 0x006ull << 10, 0x007ull << 10, 0x008ull << 10, 0x009ull << 10, 0x010ull << 10, 0x011ull << 10, 0x012ull << 10, 0x013ull << 10, 0x014ull << 10, 0x015ull << 10, 0x016ull << 10, 0x017ull << 10, 0x018ull << 10, 0x019ull << 10, 0x020ull << 10, 0x021ull << 10, 0x022ull << 10, 0x023ull << 10, 0x024ull << 10, 0x025ull << 10, 0x026ull << 10, 0x027ull << 10, 0x028ull << 10, 0x029ull << 10, 0x030ull << 10, 0x031ull << 10, 0x032ull << 10, 0x033ull << 10, 0x034ull << 10, 0x035ull << 10, 0x036ull << 10, 0x037ull << 10, 0x038ull << 10, 0x039ull << 10, 0x040ull << 10, 0x041ull << 10, 0x042ull << 10, 0x043ull << 10, 0x044ull << 10, 0x045ull << 10, 0x046ull << 10, 0x047ull << 10, 0x048ull << 10, 0x049ull << 10, 0x050ull << 10, 0x051ull << 10, 0x052ull << 10, 0x053ull << 10, 0x054ull << 10, 0x055ull << 10, 0x056ull << 10, 0x057ull << 10, 0x058ull << 10, 0x059ull << 10, 0x060ull << 10, 0x061ull << 10, 0x062ull << 10, 0x063ull << 10, 0x064ull << 10, 0x065ull << 10, 0x066ull << 10, 0x067ull << 10, 0x068ull << 10, 0x069ull << 10, 0x070ull << 10, 0x071ull << 10, 0x072ull << 10, 0x073ull << 10, 0x074ull << 10, 0x075ull << 10, 0x076ull << 10, 0x077ull << 10, 0x078ull << 10, 0x079ull << 10, 0x00aull << 10, 0x00bull << 10, 0x02aull << 10, 0x02bull << 10, 0x04aull << 10, 0x04bull << 10, 0x06aull << 10, 0x06bull << 10, 0x04eull << 10, 0x04full << 10, 0x01aull << 10, 0x01bull << 10, 0x03aull << 10, 0x03bull << 10, 0x05aull << 10, 0x05bull << 10, 0x07aull << 10, 0x07bull << 10, 0x05eull << 10, 0x05full << 10, 0x080ull << 10, 0x081ull << 10, 0x082ull << 10, 0x083ull << 10, 0x084ull << 10, 0x085ull << 10, 0x086ull << 10, 0x087ull << 10, 0x088ull << 10, 0x089ull << 10, 0x090ull << 10, 0x091ull << 10, 0x092ull << 10, 0x093ull << 10, 0x094ull << 10, 0x095ull << 10, 0x096ull << 10, 0x097ull << 10, 0x098ull << 10, 0x099ull << 10, 0x0a0ull << 10, 0x0a1ull << 10, 0x0a2ull << 10, 0x0a3ull << 10, 0x0a4ull << 10, 0x0a5ull << 10, 0x0a6ull << 10, 0x0a7ull << 10, 0x0a8ull << 10, 0x0a9ull << 10, 0x0b0ull << 10, 0x0b1ull << 10, 0x0b2ull << 10, 0x0b3ull << 10, 0x0b4ull << 10, 0x0b5ull << 10, 0x0b6ull << 10, 0x0b7ull << 10, 0x0b8ull << 10, 0x0b9ull << 10, 0x0c0ull << 10, 0x0c1ull << 10, 0x0c2ull << 10, 0x0c3ull << 10, 0x0c4ull << 10, 0x0c5ull << 10, 0x0c6ull << 10, 0x0c7ull << 10, 0x0c8ull << 10, 0x0c9ull << 10, 0x0d0ull << 10, 0x0d1ull << 10, 0x0d2ull << 10, 0x0d3ull << 10, 0x0d4ull << 10, 0x0d5ull << 10, 0x0d6ull << 10, 0x0d7ull << 10, 0x0d8ull << 10, 0x0d9ull << 10, 0x0e0ull << 10, 0x0e1ull << 10, 0x0e2ull << 10, 0x0e3ull << 10, 0x0e4ull << 10, 0x0e5ull << 10, 0x0e6ull << 10, 0x0e7ull << 10, 0x0e8ull << 10, 0x0e9ull << 10, 0x0f0ull << 10, 0x0f1ull << 10, 0x0f2ull << 10, 0x0f3ull << 10, 0x0f4ull << 10, 0x0f5ull << 10, 0x0f6ull << 10, 0x0f7ull << 10, 0x0f8ull << 10, 0x0f9ull << 10, 0x08aull << 10, 0x08bull << 10, 0x0aaull << 10, 0x0abull << 10, 0x0caull << 10, 0x0cbull << 10, 0x0eaull << 10, 0x0ebull << 10, 0x0ceull << 10, 0x0cfull << 10, 0x09aull << 10, 0x09bull << 10, 0x0baull << 10, 0x0bbull << 10, 0x0daull << 10, 0x0dbull << 10, 0x0faull << 10, 0x0fbull << 10, 0x0deull << 10, 0x0dfull << 10, 0x100ull << 10, 0x101ull << 10, 0x102ull << 10, 0x103ull << 10, 0x104ull << 10, 0x105ull << 10, 0x106ull << 10, 0x107ull << 10, 0x108ull << 10, 0x109ull << 10, 0x110ull << 10, 0x111ull << 10, 0x112ull << 10, 0x113ull << 10, 0x114ull << 10, 0x115ull << 10, 0x116ull << 10, 0x117ull << 10, 0x118ull << 10, 0x119ull << 10, 0x120ull << 10, 0x121ull << 10, 0x122ull << 10, 0x123ull << 10, 0x124ull << 10, 0x125ull << 10, 0x126ull << 10, 0x127ull << 10, 0x128ull << 10, 0x129ull << 10, 0x130ull << 10, 0x131ull << 10, 0x132ull << 10, 0x133ull << 10, 0x134ull << 10, 0x135ull << 10, 0x136ull << 10, 0x137ull << 10, 0x138ull << 10, 0x139ull << 10, 0x140ull << 10, 0x141ull << 10, 0x142ull << 10, 0x143ull << 10, 0x144ull << 10, 0x145ull << 10, 0x146ull << 10, 0x147ull << 10, 0x148ull << 10, 0x149ull << 10, 0x150ull << 10, 0x151ull << 10, 0x152ull << 10, 0x153ull << 10, 0x154ull << 10, 0x155ull << 10, 0x156ull << 10, 0x157ull << 10, 0x158ull << 10, 0x159ull << 10, 0x160ull << 10, 0x161ull << 10, 0x162ull << 10, 0x163ull << 10, 0x164ull << 10, 0x165ull << 10, 0x166ull << 10, 0x167ull << 10, 0x168ull << 10, 0x169ull << 10, 0x170ull << 10, 0x171ull << 10, 0x172ull << 10, 0x173ull << 10, 0x174ull << 10, 0x175ull << 10, 0x176ull << 10, 0x177ull << 10, 0x178ull << 10, 0x179ull << 10, 0x10aull << 10, 0x10bull << 10, 0x12aull << 10, 0x12bull << 10, 0x14aull << 10, 0x14bull << 10, 0x16aull << 10, 0x16bull << 10, 0x14eull << 10, 0x14full << 10, 0x11aull << 10, 0x11bull << 10, 0x13aull << 10, 0x13bull << 10, 0x15aull << 10, 0x15bull << 10, 0x17aull << 10, 0x17bull << 10, 0x15eull << 10, 0x15full << 10, 0x180ull << 10, 0x181ull << 10, 0x182ull << 10, 0x183ull << 10, 0x184ull << 10, 0x185ull << 10, 0x186ull << 10, 0x187ull << 10, 0x188ull << 10, 0x189ull << 10, 0x190ull << 10, 0x191ull << 10, 0x192ull << 10, 0x193ull << 10, 0x194ull << 10, 0x195ull << 10, 0x196ull << 10, 0x197ull << 10, 0x198ull << 10, 0x199ull << 10, 0x1a0ull << 10, 0x1a1ull << 10, 0x1a2ull << 10, 0x1a3ull << 10, 0x1a4ull << 10, 0x1a5ull << 10, 0x1a6ull << 10, 0x1a7ull << 10, 0x1a8ull << 10, 0x1a9ull << 10, 0x1b0ull << 10, 0x1b1ull << 10, 0x1b2ull << 10, 0x1b3ull << 10, 0x1b4ull << 10, 0x1b5ull << 10, 0x1b6ull << 10, 0x1b7ull << 10, 0x1b8ull << 10, 0x1b9ull << 10, 0x1c0ull << 10, 0x1c1ull << 10, 0x1c2ull << 10, 0x1c3ull << 10, 0x1c4ull << 10, 0x1c5ull << 10, 0x1c6ull << 10, 0x1c7ull << 10, 0x1c8ull << 10, 0x1c9ull << 10, 0x1d0ull << 10, 0x1d1ull << 10, 0x1d2ull << 10, 0x1d3ull << 10, 0x1d4ull << 10, 0x1d5ull << 10, 0x1d6ull << 10, 0x1d7ull << 10, 0x1d8ull << 10, 0x1d9ull << 10, 0x1e0ull << 10, 0x1e1ull << 10, 0x1e2ull << 10, 0x1e3ull << 10, 0x1e4ull << 10, 0x1e5ull << 10, 0x1e6ull << 10, 0x1e7ull << 10, 0x1e8ull << 10, 0x1e9ull << 10, 0x1f0ull << 10, 0x1f1ull << 10, 0x1f2ull << 10, 0x1f3ull << 10, 0x1f4ull << 10, 0x1f5ull << 10, 0x1f6ull << 10, 0x1f7ull << 10, 0x1f8ull << 10, 0x1f9ull << 10, 0x18aull << 10, 0x18bull << 10, 0x1aaull << 10, 0x1abull << 10, 0x1caull << 10, 0x1cbull << 10, 0x1eaull << 10, 0x1ebull << 10, 0x1ceull << 10, 0x1cfull << 10, 0x19aull << 10, 0x19bull << 10, 0x1baull << 10, 0x1bbull << 10, 0x1daull << 10, 0x1dbull << 10, 0x1faull << 10, 0x1fbull << 10, 0x1deull << 10, 0x1dfull << 10, 0x200ull << 10, 0x201ull << 10, 0x202ull << 10, 0x203ull << 10, 0x204ull << 10, 0x205ull << 10, 0x206ull << 10, 0x207ull << 10, 0x208ull << 10, 0x209ull << 10, 0x210ull << 10, 0x211ull << 10, 0x212ull << 10, 0x213ull << 10, 0x214ull << 10, 0x215ull << 10, 0x216ull << 10, 0x217ull << 10, 0x218ull << 10, 0x219ull << 10, 0x220ull << 10, 0x221ull << 10, 0x222ull << 10, 0x223ull << 10, 0x224ull << 10, 0x225ull << 10, 0x226ull << 10, 0x227ull << 10, 0x228ull << 10, 0x229ull << 10, 0x230ull << 10, 0x231ull << 10, 0x232ull << 10, 0x233ull << 10, 0x234ull << 10, 0x235ull << 10, 0x236ull << 10, 0x237ull << 10, 0x238ull << 10, 0x239ull << 10, 0x240ull << 10, 0x241ull << 10, 0x242ull << 10, 0x243ull << 10, 0x244ull << 10, 0x245ull << 10, 0x246ull << 10, 0x247ull << 10, 0x248ull << 10, 0x249ull << 10, 0x250ull << 10, 0x251ull << 10, 0x252ull << 10, 0x253ull << 10, 0x254ull << 10, 0x255ull << 10, 0x256ull << 10, 0x257ull << 10, 0x258ull << 10, 0x259ull << 10, 0x260ull << 10, 0x261ull << 10, 0x262ull << 10, 0x263ull << 10, 0x264ull << 10, 0x265ull << 10, 0x266ull << 10, 0x267ull << 10, 0x268ull << 10, 0x269ull << 10, 0x270ull << 10, 0x271ull << 10, 0x272ull << 10, 0x273ull << 10, 0x274ull << 10, 0x275ull << 10, 0x276ull << 10, 0x277ull << 10, 0x278ull << 10, 0x279ull << 10, 0x20aull << 10, 0x20bull << 10, 0x22aull << 10, 0x22bull << 10, 0x24aull << 10, 0x24bull << 10, 0x26aull << 10, 0x26bull << 10, 0x24eull << 10, 0x24full << 10, 0x21aull << 10, 0x21bull << 10, 0x23aull << 10, 0x23bull << 10, 0x25aull << 10, 0x25bull << 10, 0x27aull << 10, 0x27bull << 10, 0x25eull << 10, 0x25full << 10, 0x280ull << 10, 0x281ull << 10, 0x282ull << 10, 0x283ull << 10, 0x284ull << 10, 0x285ull << 10, 0x286ull << 10, 0x287ull << 10, 0x288ull << 10, 0x289ull << 10, 0x290ull << 10, 0x291ull << 10, 0x292ull << 10, 0x293ull << 10, 0x294ull << 10, 0x295ull << 10, 0x296ull << 10, 0x297ull << 10, 0x298ull << 10, 0x299ull << 10, 0x2a0ull << 10, 0x2a1ull << 10, 0x2a2ull << 10, 0x2a3ull << 10, 0x2a4ull << 10, 0x2a5ull << 10, 0x2a6ull << 10, 0x2a7ull << 10, 0x2a8ull << 10, 0x2a9ull << 10, 0x2b0ull << 10, 0x2b1ull << 10, 0x2b2ull << 10, 0x2b3ull << 10, 0x2b4ull << 10, 0x2b5ull << 10, 0x2b6ull << 10, 0x2b7ull << 10, 0x2b8ull << 10, 0x2b9ull << 10, 0x2c0ull << 10, 0x2c1ull << 10, 0x2c2ull << 10, 0x2c3ull << 10, 0x2c4ull << 10, 0x2c5ull << 10, 0x2c6ull << 10, 0x2c7ull << 10, 0x2c8ull << 10, 0x2c9ull << 10, 0x2d0ull << 10, 0x2d1ull << 10, 0x2d2ull << 10, 0x2d3ull << 10, 0x2d4ull << 10, 0x2d5ull << 10, 0x2d6ull << 10, 0x2d7ull << 10, 0x2d8ull << 10, 0x2d9ull << 10, 0x2e0ull << 10, 0x2e1ull << 10, 0x2e2ull << 10, 0x2e3ull << 10, 0x2e4ull << 10, 0x2e5ull << 10, 0x2e6ull << 10, 0x2e7ull << 10, 0x2e8ull << 10, 0x2e9ull << 10, 0x2f0ull << 10, 0x2f1ull << 10, 0x2f2ull << 10, 0x2f3ull << 10, 0x2f4ull << 10, 0x2f5ull << 10, 0x2f6ull << 10, 0x2f7ull << 10, 0x2f8ull << 10, 0x2f9ull << 10, 0x28aull << 10, 0x28bull << 10, 0x2aaull << 10, 0x2abull << 10, 0x2caull << 10, 0x2cbull << 10, 0x2eaull << 10, 0x2ebull << 10, 0x2ceull << 10, 0x2cfull << 10, 0x29aull << 10, 0x29bull << 10, 0x2baull << 10, 0x2bbull << 10, 0x2daull << 10, 0x2dbull << 10, 0x2faull << 10, 0x2fbull << 10, 0x2deull << 10, 0x2dfull << 10, 0x300ull << 10, 0x301ull << 10, 0x302ull << 10, 0x303ull << 10, 0x304ull << 10, 0x305ull << 10, 0x306ull << 10, 0x307ull << 10, 0x308ull << 10, 0x309ull << 10, 0x310ull << 10, 0x311ull << 10, 0x312ull << 10, 0x313ull << 10, 0x314ull << 10, 0x315ull << 10, 0x316ull << 10, 0x317ull << 10, 0x318ull << 10, 0x319ull << 10, 0x320ull << 10, 0x321ull << 10, 0x322ull << 10, 0x323ull << 10, 0x324ull << 10, 0x325ull << 10, 0x326ull << 10, 0x327ull << 10, 0x328ull << 10, 0x329ull << 10, 0x330ull << 10, 0x331ull << 10, 0x332ull << 10, 0x333ull << 10, 0x334ull << 10, 0x335ull << 10, 0x336ull << 10, 0x337ull << 10, 0x338ull << 10, 0x339ull << 10, 0x340ull << 10, 0x341ull << 10, 0x342ull << 10, 0x343ull << 10, 0x344ull << 10, 0x345ull << 10, 0x346ull << 10, 0x347ull << 10, 0x348ull << 10, 0x349ull << 10, 0x350ull << 10, 0x351ull << 10, 0x352ull << 10, 0x353ull << 10, 0x354ull << 10, 0x355ull << 10, 0x356ull << 10, 0x357ull << 10, 0x358ull << 10, 0x359ull << 10, 0x360ull << 10, 0x361ull << 10, 0x362ull << 10, 0x363ull << 10, 0x364ull << 10, 0x365ull << 10, 0x366ull << 10, 0x367ull << 10, 0x368ull << 10, 0x369ull << 10, 0x370ull << 10, 0x371ull << 10, 0x372ull << 10, 0x373ull << 10, 0x374ull << 10, 0x375ull << 10, 0x376ull << 10, 0x377ull << 10, 0x378ull << 10, 0x379ull << 10, 0x30aull << 10, 0x30bull << 10, 0x32aull << 10, 0x32bull << 10, 0x34aull << 10, 0x34bull << 10, 0x36aull << 10, 0x36bull << 10, 0x34eull << 10, 0x34full << 10, 0x31aull << 10, 0x31bull << 10, 0x33aull << 10, 0x33bull << 10, 0x35aull << 10, 0x35bull << 10, 0x37aull << 10, 0x37bull << 10, 0x35eull << 10, 0x35full << 10, 0x380ull << 10, 0x381ull << 10, 0x382ull << 10, 0x383ull << 10, 0x384ull << 10, 0x385ull << 10, 0x386ull << 10, 0x387ull << 10, 0x388ull << 10, 0x389ull << 10, 0x390ull << 10, 0x391ull << 10, 0x392ull << 10, 0x393ull << 10, 0x394ull << 10, 0x395ull << 10, 0x396ull << 10, 0x397ull << 10, 0x398ull << 10, 0x399ull << 10, 0x3a0ull << 10, 0x3a1ull << 10, 0x3a2ull << 10, 0x3a3ull << 10, 0x3a4ull << 10, 0x3a5ull << 10, 0x3a6ull << 10, 0x3a7ull << 10, 0x3a8ull << 10, 0x3a9ull << 10, 0x3b0ull << 10, 0x3b1ull << 10, 0x3b2ull << 10, 0x3b3ull << 10, 0x3b4ull << 10, 0x3b5ull << 10, 0x3b6ull << 10, 0x3b7ull << 10, 0x3b8ull << 10, 0x3b9ull << 10, 0x3c0ull << 10, 0x3c1ull << 10, 0x3c2ull << 10, 0x3c3ull << 10, 0x3c4ull << 10, 0x3c5ull << 10, 0x3c6ull << 10, 0x3c7ull << 10, 0x3c8ull << 10, 0x3c9ull << 10, 0x3d0ull << 10, 0x3d1ull << 10, 0x3d2ull << 10, 0x3d3ull << 10, 0x3d4ull << 10, 0x3d5ull << 10, 0x3d6ull << 10, 0x3d7ull << 10, 0x3d8ull << 10, 0x3d9ull << 10, 0x3e0ull << 10, 0x3e1ull << 10, 0x3e2ull << 10, 0x3e3ull << 10, 0x3e4ull << 10, 0x3e5ull << 10, 0x3e6ull << 10, 0x3e7ull << 10, 0x3e8ull << 10, 0x3e9ull << 10, 0x3f0ull << 10, 0x3f1ull << 10, 0x3f2ull << 10, 0x3f3ull << 10, 0x3f4ull << 10, 0x3f5ull << 10, 0x3f6ull << 10, 0x3f7ull << 10, 0x3f8ull << 10, 0x3f9ull << 10, 0x38aull << 10, 0x38bull << 10, 0x3aaull << 10, 0x3abull << 10, 0x3caull << 10, 0x3cbull << 10, 0x3eaull << 10, 0x3ebull << 10, 0x3ceull << 10, 0x3cfull << 10, 0x39aull << 10, 0x39bull << 10, 0x3baull << 10, 0x3bbull << 10, 0x3daull << 10, 0x3dbull << 10, 0x3faull << 10, 0x3fbull << 10, 0x3deull << 10, 0x3dfull << 10, 0x00cull << 10, 0x00dull << 10, 0x10cull << 10, 0x10dull << 10, 0x20cull << 10, 0x20dull << 10, 0x30cull << 10, 0x30dull << 10, 0x02eull << 10, 0x02full << 10, 0x01cull << 10, 0x01dull << 10, 0x11cull << 10, 0x11dull << 10, 0x21cull << 10, 0x21dull << 10, 0x31cull << 10, 0x31dull << 10, 0x03eull << 10, 0x03full << 10, 0x02cull << 10, 0x02dull << 10, 0x12cull << 10, 0x12dull << 10, 0x22cull << 10, 0x22dull << 10, 0x32cull << 10, 0x32dull << 10, 0x12eull << 10, 0x12full << 10, 0x03cull << 10, 0x03dull << 10, 0x13cull << 10, 0x13dull << 10, 0x23cull << 10, 0x23dull << 10, 0x33cull << 10, 0x33dull << 10, 0x13eull << 10, 0x13full << 10, 0x04cull << 10, 0x04dull << 10, 0x14cull << 10, 0x14dull << 10, 0x24cull << 10, 0x24dull << 10, 0x34cull << 10, 0x34dull << 10, 0x22eull << 10, 0x22full << 10, 0x05cull << 10, 0x05dull << 10, 0x15cull << 10, 0x15dull << 10, 0x25cull << 10, 0x25dull << 10, 0x35cull << 10, 0x35dull << 10, 0x23eull << 10, 0x23full << 10, 0x06cull << 10, 0x06dull << 10, 0x16cull << 10, 0x16dull << 10, 0x26cull << 10, 0x26dull << 10, 0x36cull << 10, 0x36dull << 10, 0x32eull << 10, 0x32full << 10, 0x07cull << 10, 0x07dull << 10, 0x17cull << 10, 0x17dull << 10, 0x27cull << 10, 0x27dull << 10, 0x37cull << 10, 0x37dull << 10, 0x33eull << 10, 0x33full << 10, 0x00eull << 10, 0x00full << 10, 0x10eull << 10, 0x10full << 10, 0x20eull << 10, 0x20full << 10, 0x30eull << 10, 0x30full << 10, 0x06eull << 10, 0x06full << 10, 0x01eull << 10, 0x01full << 10, 0x11eull << 10, 0x11full << 10, 0x21eull << 10, 0x21full << 10, 0x31eull << 10, 0x31full << 10, 0x07eull << 10, 0x07full << 10, 0x08cull << 10, 0x08dull << 10, 0x18cull << 10, 0x18dull << 10, 0x28cull << 10, 0x28dull << 10, 0x38cull << 10, 0x38dull << 10, 0x0aeull << 10, 0x0afull << 10, 0x09cull << 10, 0x09dull << 10, 0x19cull << 10, 0x19dull << 10, 0x29cull << 10, 0x29dull << 10, 0x39cull << 10, 0x39dull << 10, 0x0beull << 10, 0x0bfull << 10, 0x0acull << 10, 0x0adull << 10, 0x1acull << 10, 0x1adull << 10, 0x2acull << 10, 0x2adull << 10, 0x3acull << 10, 0x3adull << 10, 0x1aeull << 10, 0x1afull << 10, 0x0bcull << 10, 0x0bdull << 10, 0x1bcull << 10, 0x1bdull << 10, 0x2bcull << 10, 0x2bdull << 10, 0x3bcull << 10, 0x3bdull << 10, 0x1beull << 10, 0x1bfull << 10, 0x0ccull << 10, 0x0cdull << 10, 0x1ccull << 10, 0x1cdull << 10, 0x2ccull << 10, 0x2cdull << 10, 0x3ccull << 10, 0x3cdull << 10, 0x2aeull << 10, 0x2afull << 10, 0x0dcull << 10, 0x0ddull << 10, 0x1dcull << 10, 0x1ddull << 10, 0x2dcull << 10, 0x2ddull << 10, 0x3dcull << 10, 0x3ddull << 10, 0x2beull << 10, 0x2bfull << 10, 0x0ecull << 10, 0x0edull << 10, 0x1ecull << 10, 0x1edull << 10, 0x2ecull << 10, 0x2edull << 10, 0x3ecull << 10, 0x3edull << 10, 0x3aeull << 10, 0x3afull << 10, 0x0fcull << 10, 0x0fdull << 10, 0x1fcull << 10, 0x1fdull << 10, 0x2fcull << 10, 0x2fdull << 10, 0x3fcull << 10, 0x3fdull << 10, 0x3beull << 10, 0x3bfull << 10, 0x08eull << 10, 0x08full << 10, 0x18eull << 10, 0x18full << 10, 0x28eull << 10, 0x28full << 10, 0x38eull << 10, 0x38full << 10, 0x0eeull << 10, 0x0efull << 10, 0x09eull << 10, 0x09full << 10, 0x19eull << 10, 0x19full << 10, 0x29eull << 10, 0x29full << 10, 0x39eull << 10, 0x39full << 10, 0x0feull << 10, 0x0ffull << 10 }; const BID_UINT64 bid_b2d3[] = { 0x000ull << 20, 0x001ull << 20, 0x002ull << 20, 0x003ull << 20, 0x004ull << 20, 0x005ull << 20, 0x006ull << 20, 0x007ull << 20, 0x008ull << 20, 0x009ull << 20, 0x010ull << 20, 0x011ull << 20, 0x012ull << 20, 0x013ull << 20, 0x014ull << 20, 0x015ull << 20, 0x016ull << 20, 0x017ull << 20, 0x018ull << 20, 0x019ull << 20, 0x020ull << 20, 0x021ull << 20, 0x022ull << 20, 0x023ull << 20, 0x024ull << 20, 0x025ull << 20, 0x026ull << 20, 0x027ull << 20, 0x028ull << 20, 0x029ull << 20, 0x030ull << 20, 0x031ull << 20, 0x032ull << 20, 0x033ull << 20, 0x034ull << 20, 0x035ull << 20, 0x036ull << 20, 0x037ull << 20, 0x038ull << 20, 0x039ull << 20, 0x040ull << 20, 0x041ull << 20, 0x042ull << 20, 0x043ull << 20, 0x044ull << 20, 0x045ull << 20, 0x046ull << 20, 0x047ull << 20, 0x048ull << 20, 0x049ull << 20, 0x050ull << 20, 0x051ull << 20, 0x052ull << 20, 0x053ull << 20, 0x054ull << 20, 0x055ull << 20, 0x056ull << 20, 0x057ull << 20, 0x058ull << 20, 0x059ull << 20, 0x060ull << 20, 0x061ull << 20, 0x062ull << 20, 0x063ull << 20, 0x064ull << 20, 0x065ull << 20, 0x066ull << 20, 0x067ull << 20, 0x068ull << 20, 0x069ull << 20, 0x070ull << 20, 0x071ull << 20, 0x072ull << 20, 0x073ull << 20, 0x074ull << 20, 0x075ull << 20, 0x076ull << 20, 0x077ull << 20, 0x078ull << 20, 0x079ull << 20, 0x00aull << 20, 0x00bull << 20, 0x02aull << 20, 0x02bull << 20, 0x04aull << 20, 0x04bull << 20, 0x06aull << 20, 0x06bull << 20, 0x04eull << 20, 0x04full << 20, 0x01aull << 20, 0x01bull << 20, 0x03aull << 20, 0x03bull << 20, 0x05aull << 20, 0x05bull << 20, 0x07aull << 20, 0x07bull << 20, 0x05eull << 20, 0x05full << 20, 0x080ull << 20, 0x081ull << 20, 0x082ull << 20, 0x083ull << 20, 0x084ull << 20, 0x085ull << 20, 0x086ull << 20, 0x087ull << 20, 0x088ull << 20, 0x089ull << 20, 0x090ull << 20, 0x091ull << 20, 0x092ull << 20, 0x093ull << 20, 0x094ull << 20, 0x095ull << 20, 0x096ull << 20, 0x097ull << 20, 0x098ull << 20, 0x099ull << 20, 0x0a0ull << 20, 0x0a1ull << 20, 0x0a2ull << 20, 0x0a3ull << 20, 0x0a4ull << 20, 0x0a5ull << 20, 0x0a6ull << 20, 0x0a7ull << 20, 0x0a8ull << 20, 0x0a9ull << 20, 0x0b0ull << 20, 0x0b1ull << 20, 0x0b2ull << 20, 0x0b3ull << 20, 0x0b4ull << 20, 0x0b5ull << 20, 0x0b6ull << 20, 0x0b7ull << 20, 0x0b8ull << 20, 0x0b9ull << 20, 0x0c0ull << 20, 0x0c1ull << 20, 0x0c2ull << 20, 0x0c3ull << 20, 0x0c4ull << 20, 0x0c5ull << 20, 0x0c6ull << 20, 0x0c7ull << 20, 0x0c8ull << 20, 0x0c9ull << 20, 0x0d0ull << 20, 0x0d1ull << 20, 0x0d2ull << 20, 0x0d3ull << 20, 0x0d4ull << 20, 0x0d5ull << 20, 0x0d6ull << 20, 0x0d7ull << 20, 0x0d8ull << 20, 0x0d9ull << 20, 0x0e0ull << 20, 0x0e1ull << 20, 0x0e2ull << 20, 0x0e3ull << 20, 0x0e4ull << 20, 0x0e5ull << 20, 0x0e6ull << 20, 0x0e7ull << 20, 0x0e8ull << 20, 0x0e9ull << 20, 0x0f0ull << 20, 0x0f1ull << 20, 0x0f2ull << 20, 0x0f3ull << 20, 0x0f4ull << 20, 0x0f5ull << 20, 0x0f6ull << 20, 0x0f7ull << 20, 0x0f8ull << 20, 0x0f9ull << 20, 0x08aull << 20, 0x08bull << 20, 0x0aaull << 20, 0x0abull << 20, 0x0caull << 20, 0x0cbull << 20, 0x0eaull << 20, 0x0ebull << 20, 0x0ceull << 20, 0x0cfull << 20, 0x09aull << 20, 0x09bull << 20, 0x0baull << 20, 0x0bbull << 20, 0x0daull << 20, 0x0dbull << 20, 0x0faull << 20, 0x0fbull << 20, 0x0deull << 20, 0x0dfull << 20, 0x100ull << 20, 0x101ull << 20, 0x102ull << 20, 0x103ull << 20, 0x104ull << 20, 0x105ull << 20, 0x106ull << 20, 0x107ull << 20, 0x108ull << 20, 0x109ull << 20, 0x110ull << 20, 0x111ull << 20, 0x112ull << 20, 0x113ull << 20, 0x114ull << 20, 0x115ull << 20, 0x116ull << 20, 0x117ull << 20, 0x118ull << 20, 0x119ull << 20, 0x120ull << 20, 0x121ull << 20, 0x122ull << 20, 0x123ull << 20, 0x124ull << 20, 0x125ull << 20, 0x126ull << 20, 0x127ull << 20, 0x128ull << 20, 0x129ull << 20, 0x130ull << 20, 0x131ull << 20, 0x132ull << 20, 0x133ull << 20, 0x134ull << 20, 0x135ull << 20, 0x136ull << 20, 0x137ull << 20, 0x138ull << 20, 0x139ull << 20, 0x140ull << 20, 0x141ull << 20, 0x142ull << 20, 0x143ull << 20, 0x144ull << 20, 0x145ull << 20, 0x146ull << 20, 0x147ull << 20, 0x148ull << 20, 0x149ull << 20, 0x150ull << 20, 0x151ull << 20, 0x152ull << 20, 0x153ull << 20, 0x154ull << 20, 0x155ull << 20, 0x156ull << 20, 0x157ull << 20, 0x158ull << 20, 0x159ull << 20, 0x160ull << 20, 0x161ull << 20, 0x162ull << 20, 0x163ull << 20, 0x164ull << 20, 0x165ull << 20, 0x166ull << 20, 0x167ull << 20, 0x168ull << 20, 0x169ull << 20, 0x170ull << 20, 0x171ull << 20, 0x172ull << 20, 0x173ull << 20, 0x174ull << 20, 0x175ull << 20, 0x176ull << 20, 0x177ull << 20, 0x178ull << 20, 0x179ull << 20, 0x10aull << 20, 0x10bull << 20, 0x12aull << 20, 0x12bull << 20, 0x14aull << 20, 0x14bull << 20, 0x16aull << 20, 0x16bull << 20, 0x14eull << 20, 0x14full << 20, 0x11aull << 20, 0x11bull << 20, 0x13aull << 20, 0x13bull << 20, 0x15aull << 20, 0x15bull << 20, 0x17aull << 20, 0x17bull << 20, 0x15eull << 20, 0x15full << 20, 0x180ull << 20, 0x181ull << 20, 0x182ull << 20, 0x183ull << 20, 0x184ull << 20, 0x185ull << 20, 0x186ull << 20, 0x187ull << 20, 0x188ull << 20, 0x189ull << 20, 0x190ull << 20, 0x191ull << 20, 0x192ull << 20, 0x193ull << 20, 0x194ull << 20, 0x195ull << 20, 0x196ull << 20, 0x197ull << 20, 0x198ull << 20, 0x199ull << 20, 0x1a0ull << 20, 0x1a1ull << 20, 0x1a2ull << 20, 0x1a3ull << 20, 0x1a4ull << 20, 0x1a5ull << 20, 0x1a6ull << 20, 0x1a7ull << 20, 0x1a8ull << 20, 0x1a9ull << 20, 0x1b0ull << 20, 0x1b1ull << 20, 0x1b2ull << 20, 0x1b3ull << 20, 0x1b4ull << 20, 0x1b5ull << 20, 0x1b6ull << 20, 0x1b7ull << 20, 0x1b8ull << 20, 0x1b9ull << 20, 0x1c0ull << 20, 0x1c1ull << 20, 0x1c2ull << 20, 0x1c3ull << 20, 0x1c4ull << 20, 0x1c5ull << 20, 0x1c6ull << 20, 0x1c7ull << 20, 0x1c8ull << 20, 0x1c9ull << 20, 0x1d0ull << 20, 0x1d1ull << 20, 0x1d2ull << 20, 0x1d3ull << 20, 0x1d4ull << 20, 0x1d5ull << 20, 0x1d6ull << 20, 0x1d7ull << 20, 0x1d8ull << 20, 0x1d9ull << 20, 0x1e0ull << 20, 0x1e1ull << 20, 0x1e2ull << 20, 0x1e3ull << 20, 0x1e4ull << 20, 0x1e5ull << 20, 0x1e6ull << 20, 0x1e7ull << 20, 0x1e8ull << 20, 0x1e9ull << 20, 0x1f0ull << 20, 0x1f1ull << 20, 0x1f2ull << 20, 0x1f3ull << 20, 0x1f4ull << 20, 0x1f5ull << 20, 0x1f6ull << 20, 0x1f7ull << 20, 0x1f8ull << 20, 0x1f9ull << 20, 0x18aull << 20, 0x18bull << 20, 0x1aaull << 20, 0x1abull << 20, 0x1caull << 20, 0x1cbull << 20, 0x1eaull << 20, 0x1ebull << 20, 0x1ceull << 20, 0x1cfull << 20, 0x19aull << 20, 0x19bull << 20, 0x1baull << 20, 0x1bbull << 20, 0x1daull << 20, 0x1dbull << 20, 0x1faull << 20, 0x1fbull << 20, 0x1deull << 20, 0x1dfull << 20, 0x200ull << 20, 0x201ull << 20, 0x202ull << 20, 0x203ull << 20, 0x204ull << 20, 0x205ull << 20, 0x206ull << 20, 0x207ull << 20, 0x208ull << 20, 0x209ull << 20, 0x210ull << 20, 0x211ull << 20, 0x212ull << 20, 0x213ull << 20, 0x214ull << 20, 0x215ull << 20, 0x216ull << 20, 0x217ull << 20, 0x218ull << 20, 0x219ull << 20, 0x220ull << 20, 0x221ull << 20, 0x222ull << 20, 0x223ull << 20, 0x224ull << 20, 0x225ull << 20, 0x226ull << 20, 0x227ull << 20, 0x228ull << 20, 0x229ull << 20, 0x230ull << 20, 0x231ull << 20, 0x232ull << 20, 0x233ull << 20, 0x234ull << 20, 0x235ull << 20, 0x236ull << 20, 0x237ull << 20, 0x238ull << 20, 0x239ull << 20, 0x240ull << 20, 0x241ull << 20, 0x242ull << 20, 0x243ull << 20, 0x244ull << 20, 0x245ull << 20, 0x246ull << 20, 0x247ull << 20, 0x248ull << 20, 0x249ull << 20, 0x250ull << 20, 0x251ull << 20, 0x252ull << 20, 0x253ull << 20, 0x254ull << 20, 0x255ull << 20, 0x256ull << 20, 0x257ull << 20, 0x258ull << 20, 0x259ull << 20, 0x260ull << 20, 0x261ull << 20, 0x262ull << 20, 0x263ull << 20, 0x264ull << 20, 0x265ull << 20, 0x266ull << 20, 0x267ull << 20, 0x268ull << 20, 0x269ull << 20, 0x270ull << 20, 0x271ull << 20, 0x272ull << 20, 0x273ull << 20, 0x274ull << 20, 0x275ull << 20, 0x276ull << 20, 0x277ull << 20, 0x278ull << 20, 0x279ull << 20, 0x20aull << 20, 0x20bull << 20, 0x22aull << 20, 0x22bull << 20, 0x24aull << 20, 0x24bull << 20, 0x26aull << 20, 0x26bull << 20, 0x24eull << 20, 0x24full << 20, 0x21aull << 20, 0x21bull << 20, 0x23aull << 20, 0x23bull << 20, 0x25aull << 20, 0x25bull << 20, 0x27aull << 20, 0x27bull << 20, 0x25eull << 20, 0x25full << 20, 0x280ull << 20, 0x281ull << 20, 0x282ull << 20, 0x283ull << 20, 0x284ull << 20, 0x285ull << 20, 0x286ull << 20, 0x287ull << 20, 0x288ull << 20, 0x289ull << 20, 0x290ull << 20, 0x291ull << 20, 0x292ull << 20, 0x293ull << 20, 0x294ull << 20, 0x295ull << 20, 0x296ull << 20, 0x297ull << 20, 0x298ull << 20, 0x299ull << 20, 0x2a0ull << 20, 0x2a1ull << 20, 0x2a2ull << 20, 0x2a3ull << 20, 0x2a4ull << 20, 0x2a5ull << 20, 0x2a6ull << 20, 0x2a7ull << 20, 0x2a8ull << 20, 0x2a9ull << 20, 0x2b0ull << 20, 0x2b1ull << 20, 0x2b2ull << 20, 0x2b3ull << 20, 0x2b4ull << 20, 0x2b5ull << 20, 0x2b6ull << 20, 0x2b7ull << 20, 0x2b8ull << 20, 0x2b9ull << 20, 0x2c0ull << 20, 0x2c1ull << 20, 0x2c2ull << 20, 0x2c3ull << 20, 0x2c4ull << 20, 0x2c5ull << 20, 0x2c6ull << 20, 0x2c7ull << 20, 0x2c8ull << 20, 0x2c9ull << 20, 0x2d0ull << 20, 0x2d1ull << 20, 0x2d2ull << 20, 0x2d3ull << 20, 0x2d4ull << 20, 0x2d5ull << 20, 0x2d6ull << 20, 0x2d7ull << 20, 0x2d8ull << 20, 0x2d9ull << 20, 0x2e0ull << 20, 0x2e1ull << 20, 0x2e2ull << 20, 0x2e3ull << 20, 0x2e4ull << 20, 0x2e5ull << 20, 0x2e6ull << 20, 0x2e7ull << 20, 0x2e8ull << 20, 0x2e9ull << 20, 0x2f0ull << 20, 0x2f1ull << 20, 0x2f2ull << 20, 0x2f3ull << 20, 0x2f4ull << 20, 0x2f5ull << 20, 0x2f6ull << 20, 0x2f7ull << 20, 0x2f8ull << 20, 0x2f9ull << 20, 0x28aull << 20, 0x28bull << 20, 0x2aaull << 20, 0x2abull << 20, 0x2caull << 20, 0x2cbull << 20, 0x2eaull << 20, 0x2ebull << 20, 0x2ceull << 20, 0x2cfull << 20, 0x29aull << 20, 0x29bull << 20, 0x2baull << 20, 0x2bbull << 20, 0x2daull << 20, 0x2dbull << 20, 0x2faull << 20, 0x2fbull << 20, 0x2deull << 20, 0x2dfull << 20, 0x300ull << 20, 0x301ull << 20, 0x302ull << 20, 0x303ull << 20, 0x304ull << 20, 0x305ull << 20, 0x306ull << 20, 0x307ull << 20, 0x308ull << 20, 0x309ull << 20, 0x310ull << 20, 0x311ull << 20, 0x312ull << 20, 0x313ull << 20, 0x314ull << 20, 0x315ull << 20, 0x316ull << 20, 0x317ull << 20, 0x318ull << 20, 0x319ull << 20, 0x320ull << 20, 0x321ull << 20, 0x322ull << 20, 0x323ull << 20, 0x324ull << 20, 0x325ull << 20, 0x326ull << 20, 0x327ull << 20, 0x328ull << 20, 0x329ull << 20, 0x330ull << 20, 0x331ull << 20, 0x332ull << 20, 0x333ull << 20, 0x334ull << 20, 0x335ull << 20, 0x336ull << 20, 0x337ull << 20, 0x338ull << 20, 0x339ull << 20, 0x340ull << 20, 0x341ull << 20, 0x342ull << 20, 0x343ull << 20, 0x344ull << 20, 0x345ull << 20, 0x346ull << 20, 0x347ull << 20, 0x348ull << 20, 0x349ull << 20, 0x350ull << 20, 0x351ull << 20, 0x352ull << 20, 0x353ull << 20, 0x354ull << 20, 0x355ull << 20, 0x356ull << 20, 0x357ull << 20, 0x358ull << 20, 0x359ull << 20, 0x360ull << 20, 0x361ull << 20, 0x362ull << 20, 0x363ull << 20, 0x364ull << 20, 0x365ull << 20, 0x366ull << 20, 0x367ull << 20, 0x368ull << 20, 0x369ull << 20, 0x370ull << 20, 0x371ull << 20, 0x372ull << 20, 0x373ull << 20, 0x374ull << 20, 0x375ull << 20, 0x376ull << 20, 0x377ull << 20, 0x378ull << 20, 0x379ull << 20, 0x30aull << 20, 0x30bull << 20, 0x32aull << 20, 0x32bull << 20, 0x34aull << 20, 0x34bull << 20, 0x36aull << 20, 0x36bull << 20, 0x34eull << 20, 0x34full << 20, 0x31aull << 20, 0x31bull << 20, 0x33aull << 20, 0x33bull << 20, 0x35aull << 20, 0x35bull << 20, 0x37aull << 20, 0x37bull << 20, 0x35eull << 20, 0x35full << 20, 0x380ull << 20, 0x381ull << 20, 0x382ull << 20, 0x383ull << 20, 0x384ull << 20, 0x385ull << 20, 0x386ull << 20, 0x387ull << 20, 0x388ull << 20, 0x389ull << 20, 0x390ull << 20, 0x391ull << 20, 0x392ull << 20, 0x393ull << 20, 0x394ull << 20, 0x395ull << 20, 0x396ull << 20, 0x397ull << 20, 0x398ull << 20, 0x399ull << 20, 0x3a0ull << 20, 0x3a1ull << 20, 0x3a2ull << 20, 0x3a3ull << 20, 0x3a4ull << 20, 0x3a5ull << 20, 0x3a6ull << 20, 0x3a7ull << 20, 0x3a8ull << 20, 0x3a9ull << 20, 0x3b0ull << 20, 0x3b1ull << 20, 0x3b2ull << 20, 0x3b3ull << 20, 0x3b4ull << 20, 0x3b5ull << 20, 0x3b6ull << 20, 0x3b7ull << 20, 0x3b8ull << 20, 0x3b9ull << 20, 0x3c0ull << 20, 0x3c1ull << 20, 0x3c2ull << 20, 0x3c3ull << 20, 0x3c4ull << 20, 0x3c5ull << 20, 0x3c6ull << 20, 0x3c7ull << 20, 0x3c8ull << 20, 0x3c9ull << 20, 0x3d0ull << 20, 0x3d1ull << 20, 0x3d2ull << 20, 0x3d3ull << 20, 0x3d4ull << 20, 0x3d5ull << 20, 0x3d6ull << 20, 0x3d7ull << 20, 0x3d8ull << 20, 0x3d9ull << 20, 0x3e0ull << 20, 0x3e1ull << 20, 0x3e2ull << 20, 0x3e3ull << 20, 0x3e4ull << 20, 0x3e5ull << 20, 0x3e6ull << 20, 0x3e7ull << 20, 0x3e8ull << 20, 0x3e9ull << 20, 0x3f0ull << 20, 0x3f1ull << 20, 0x3f2ull << 20, 0x3f3ull << 20, 0x3f4ull << 20, 0x3f5ull << 20, 0x3f6ull << 20, 0x3f7ull << 20, 0x3f8ull << 20, 0x3f9ull << 20, 0x38aull << 20, 0x38bull << 20, 0x3aaull << 20, 0x3abull << 20, 0x3caull << 20, 0x3cbull << 20, 0x3eaull << 20, 0x3ebull << 20, 0x3ceull << 20, 0x3cfull << 20, 0x39aull << 20, 0x39bull << 20, 0x3baull << 20, 0x3bbull << 20, 0x3daull << 20, 0x3dbull << 20, 0x3faull << 20, 0x3fbull << 20, 0x3deull << 20, 0x3dfull << 20, 0x00cull << 20, 0x00dull << 20, 0x10cull << 20, 0x10dull << 20, 0x20cull << 20, 0x20dull << 20, 0x30cull << 20, 0x30dull << 20, 0x02eull << 20, 0x02full << 20, 0x01cull << 20, 0x01dull << 20, 0x11cull << 20, 0x11dull << 20, 0x21cull << 20, 0x21dull << 20, 0x31cull << 20, 0x31dull << 20, 0x03eull << 20, 0x03full << 20, 0x02cull << 20, 0x02dull << 20, 0x12cull << 20, 0x12dull << 20, 0x22cull << 20, 0x22dull << 20, 0x32cull << 20, 0x32dull << 20, 0x12eull << 20, 0x12full << 20, 0x03cull << 20, 0x03dull << 20, 0x13cull << 20, 0x13dull << 20, 0x23cull << 20, 0x23dull << 20, 0x33cull << 20, 0x33dull << 20, 0x13eull << 20, 0x13full << 20, 0x04cull << 20, 0x04dull << 20, 0x14cull << 20, 0x14dull << 20, 0x24cull << 20, 0x24dull << 20, 0x34cull << 20, 0x34dull << 20, 0x22eull << 20, 0x22full << 20, 0x05cull << 20, 0x05dull << 20, 0x15cull << 20, 0x15dull << 20, 0x25cull << 20, 0x25dull << 20, 0x35cull << 20, 0x35dull << 20, 0x23eull << 20, 0x23full << 20, 0x06cull << 20, 0x06dull << 20, 0x16cull << 20, 0x16dull << 20, 0x26cull << 20, 0x26dull << 20, 0x36cull << 20, 0x36dull << 20, 0x32eull << 20, 0x32full << 20, 0x07cull << 20, 0x07dull << 20, 0x17cull << 20, 0x17dull << 20, 0x27cull << 20, 0x27dull << 20, 0x37cull << 20, 0x37dull << 20, 0x33eull << 20, 0x33full << 20, 0x00eull << 20, 0x00full << 20, 0x10eull << 20, 0x10full << 20, 0x20eull << 20, 0x20full << 20, 0x30eull << 20, 0x30full << 20, 0x06eull << 20, 0x06full << 20, 0x01eull << 20, 0x01full << 20, 0x11eull << 20, 0x11full << 20, 0x21eull << 20, 0x21full << 20, 0x31eull << 20, 0x31full << 20, 0x07eull << 20, 0x07full << 20, 0x08cull << 20, 0x08dull << 20, 0x18cull << 20, 0x18dull << 20, 0x28cull << 20, 0x28dull << 20, 0x38cull << 20, 0x38dull << 20, 0x0aeull << 20, 0x0afull << 20, 0x09cull << 20, 0x09dull << 20, 0x19cull << 20, 0x19dull << 20, 0x29cull << 20, 0x29dull << 20, 0x39cull << 20, 0x39dull << 20, 0x0beull << 20, 0x0bfull << 20, 0x0acull << 20, 0x0adull << 20, 0x1acull << 20, 0x1adull << 20, 0x2acull << 20, 0x2adull << 20, 0x3acull << 20, 0x3adull << 20, 0x1aeull << 20, 0x1afull << 20, 0x0bcull << 20, 0x0bdull << 20, 0x1bcull << 20, 0x1bdull << 20, 0x2bcull << 20, 0x2bdull << 20, 0x3bcull << 20, 0x3bdull << 20, 0x1beull << 20, 0x1bfull << 20, 0x0ccull << 20, 0x0cdull << 20, 0x1ccull << 20, 0x1cdull << 20, 0x2ccull << 20, 0x2cdull << 20, 0x3ccull << 20, 0x3cdull << 20, 0x2aeull << 20, 0x2afull << 20, 0x0dcull << 20, 0x0ddull << 20, 0x1dcull << 20, 0x1ddull << 20, 0x2dcull << 20, 0x2ddull << 20, 0x3dcull << 20, 0x3ddull << 20, 0x2beull << 20, 0x2bfull << 20, 0x0ecull << 20, 0x0edull << 20, 0x1ecull << 20, 0x1edull << 20, 0x2ecull << 20, 0x2edull << 20, 0x3ecull << 20, 0x3edull << 20, 0x3aeull << 20, 0x3afull << 20, 0x0fcull << 20, 0x0fdull << 20, 0x1fcull << 20, 0x1fdull << 20, 0x2fcull << 20, 0x2fdull << 20, 0x3fcull << 20, 0x3fdull << 20, 0x3beull << 20, 0x3bfull << 20, 0x08eull << 20, 0x08full << 20, 0x18eull << 20, 0x18full << 20, 0x28eull << 20, 0x28full << 20, 0x38eull << 20, 0x38full << 20, 0x0eeull << 20, 0x0efull << 20, 0x09eull << 20, 0x09full << 20, 0x19eull << 20, 0x19full << 20, 0x29eull << 20, 0x29full << 20, 0x39eull << 20, 0x39full << 20, 0x0feull << 20, 0x0ffull << 20 }; const BID_UINT64 bid_b2d4[] = { 0x000ull << 30, 0x001ull << 30, 0x002ull << 30, 0x003ull << 30, 0x004ull << 30, 0x005ull << 30, 0x006ull << 30, 0x007ull << 30, 0x008ull << 30, 0x009ull << 30, 0x010ull << 30, 0x011ull << 30, 0x012ull << 30, 0x013ull << 30, 0x014ull << 30, 0x015ull << 30, 0x016ull << 30, 0x017ull << 30, 0x018ull << 30, 0x019ull << 30, 0x020ull << 30, 0x021ull << 30, 0x022ull << 30, 0x023ull << 30, 0x024ull << 30, 0x025ull << 30, 0x026ull << 30, 0x027ull << 30, 0x028ull << 30, 0x029ull << 30, 0x030ull << 30, 0x031ull << 30, 0x032ull << 30, 0x033ull << 30, 0x034ull << 30, 0x035ull << 30, 0x036ull << 30, 0x037ull << 30, 0x038ull << 30, 0x039ull << 30, 0x040ull << 30, 0x041ull << 30, 0x042ull << 30, 0x043ull << 30, 0x044ull << 30, 0x045ull << 30, 0x046ull << 30, 0x047ull << 30, 0x048ull << 30, 0x049ull << 30, 0x050ull << 30, 0x051ull << 30, 0x052ull << 30, 0x053ull << 30, 0x054ull << 30, 0x055ull << 30, 0x056ull << 30, 0x057ull << 30, 0x058ull << 30, 0x059ull << 30, 0x060ull << 30, 0x061ull << 30, 0x062ull << 30, 0x063ull << 30, 0x064ull << 30, 0x065ull << 30, 0x066ull << 30, 0x067ull << 30, 0x068ull << 30, 0x069ull << 30, 0x070ull << 30, 0x071ull << 30, 0x072ull << 30, 0x073ull << 30, 0x074ull << 30, 0x075ull << 30, 0x076ull << 30, 0x077ull << 30, 0x078ull << 30, 0x079ull << 30, 0x00aull << 30, 0x00bull << 30, 0x02aull << 30, 0x02bull << 30, 0x04aull << 30, 0x04bull << 30, 0x06aull << 30, 0x06bull << 30, 0x04eull << 30, 0x04full << 30, 0x01aull << 30, 0x01bull << 30, 0x03aull << 30, 0x03bull << 30, 0x05aull << 30, 0x05bull << 30, 0x07aull << 30, 0x07bull << 30, 0x05eull << 30, 0x05full << 30, 0x080ull << 30, 0x081ull << 30, 0x082ull << 30, 0x083ull << 30, 0x084ull << 30, 0x085ull << 30, 0x086ull << 30, 0x087ull << 30, 0x088ull << 30, 0x089ull << 30, 0x090ull << 30, 0x091ull << 30, 0x092ull << 30, 0x093ull << 30, 0x094ull << 30, 0x095ull << 30, 0x096ull << 30, 0x097ull << 30, 0x098ull << 30, 0x099ull << 30, 0x0a0ull << 30, 0x0a1ull << 30, 0x0a2ull << 30, 0x0a3ull << 30, 0x0a4ull << 30, 0x0a5ull << 30, 0x0a6ull << 30, 0x0a7ull << 30, 0x0a8ull << 30, 0x0a9ull << 30, 0x0b0ull << 30, 0x0b1ull << 30, 0x0b2ull << 30, 0x0b3ull << 30, 0x0b4ull << 30, 0x0b5ull << 30, 0x0b6ull << 30, 0x0b7ull << 30, 0x0b8ull << 30, 0x0b9ull << 30, 0x0c0ull << 30, 0x0c1ull << 30, 0x0c2ull << 30, 0x0c3ull << 30, 0x0c4ull << 30, 0x0c5ull << 30, 0x0c6ull << 30, 0x0c7ull << 30, 0x0c8ull << 30, 0x0c9ull << 30, 0x0d0ull << 30, 0x0d1ull << 30, 0x0d2ull << 30, 0x0d3ull << 30, 0x0d4ull << 30, 0x0d5ull << 30, 0x0d6ull << 30, 0x0d7ull << 30, 0x0d8ull << 30, 0x0d9ull << 30, 0x0e0ull << 30, 0x0e1ull << 30, 0x0e2ull << 30, 0x0e3ull << 30, 0x0e4ull << 30, 0x0e5ull << 30, 0x0e6ull << 30, 0x0e7ull << 30, 0x0e8ull << 30, 0x0e9ull << 30, 0x0f0ull << 30, 0x0f1ull << 30, 0x0f2ull << 30, 0x0f3ull << 30, 0x0f4ull << 30, 0x0f5ull << 30, 0x0f6ull << 30, 0x0f7ull << 30, 0x0f8ull << 30, 0x0f9ull << 30, 0x08aull << 30, 0x08bull << 30, 0x0aaull << 30, 0x0abull << 30, 0x0caull << 30, 0x0cbull << 30, 0x0eaull << 30, 0x0ebull << 30, 0x0ceull << 30, 0x0cfull << 30, 0x09aull << 30, 0x09bull << 30, 0x0baull << 30, 0x0bbull << 30, 0x0daull << 30, 0x0dbull << 30, 0x0faull << 30, 0x0fbull << 30, 0x0deull << 30, 0x0dfull << 30, 0x100ull << 30, 0x101ull << 30, 0x102ull << 30, 0x103ull << 30, 0x104ull << 30, 0x105ull << 30, 0x106ull << 30, 0x107ull << 30, 0x108ull << 30, 0x109ull << 30, 0x110ull << 30, 0x111ull << 30, 0x112ull << 30, 0x113ull << 30, 0x114ull << 30, 0x115ull << 30, 0x116ull << 30, 0x117ull << 30, 0x118ull << 30, 0x119ull << 30, 0x120ull << 30, 0x121ull << 30, 0x122ull << 30, 0x123ull << 30, 0x124ull << 30, 0x125ull << 30, 0x126ull << 30, 0x127ull << 30, 0x128ull << 30, 0x129ull << 30, 0x130ull << 30, 0x131ull << 30, 0x132ull << 30, 0x133ull << 30, 0x134ull << 30, 0x135ull << 30, 0x136ull << 30, 0x137ull << 30, 0x138ull << 30, 0x139ull << 30, 0x140ull << 30, 0x141ull << 30, 0x142ull << 30, 0x143ull << 30, 0x144ull << 30, 0x145ull << 30, 0x146ull << 30, 0x147ull << 30, 0x148ull << 30, 0x149ull << 30, 0x150ull << 30, 0x151ull << 30, 0x152ull << 30, 0x153ull << 30, 0x154ull << 30, 0x155ull << 30, 0x156ull << 30, 0x157ull << 30, 0x158ull << 30, 0x159ull << 30, 0x160ull << 30, 0x161ull << 30, 0x162ull << 30, 0x163ull << 30, 0x164ull << 30, 0x165ull << 30, 0x166ull << 30, 0x167ull << 30, 0x168ull << 30, 0x169ull << 30, 0x170ull << 30, 0x171ull << 30, 0x172ull << 30, 0x173ull << 30, 0x174ull << 30, 0x175ull << 30, 0x176ull << 30, 0x177ull << 30, 0x178ull << 30, 0x179ull << 30, 0x10aull << 30, 0x10bull << 30, 0x12aull << 30, 0x12bull << 30, 0x14aull << 30, 0x14bull << 30, 0x16aull << 30, 0x16bull << 30, 0x14eull << 30, 0x14full << 30, 0x11aull << 30, 0x11bull << 30, 0x13aull << 30, 0x13bull << 30, 0x15aull << 30, 0x15bull << 30, 0x17aull << 30, 0x17bull << 30, 0x15eull << 30, 0x15full << 30, 0x180ull << 30, 0x181ull << 30, 0x182ull << 30, 0x183ull << 30, 0x184ull << 30, 0x185ull << 30, 0x186ull << 30, 0x187ull << 30, 0x188ull << 30, 0x189ull << 30, 0x190ull << 30, 0x191ull << 30, 0x192ull << 30, 0x193ull << 30, 0x194ull << 30, 0x195ull << 30, 0x196ull << 30, 0x197ull << 30, 0x198ull << 30, 0x199ull << 30, 0x1a0ull << 30, 0x1a1ull << 30, 0x1a2ull << 30, 0x1a3ull << 30, 0x1a4ull << 30, 0x1a5ull << 30, 0x1a6ull << 30, 0x1a7ull << 30, 0x1a8ull << 30, 0x1a9ull << 30, 0x1b0ull << 30, 0x1b1ull << 30, 0x1b2ull << 30, 0x1b3ull << 30, 0x1b4ull << 30, 0x1b5ull << 30, 0x1b6ull << 30, 0x1b7ull << 30, 0x1b8ull << 30, 0x1b9ull << 30, 0x1c0ull << 30, 0x1c1ull << 30, 0x1c2ull << 30, 0x1c3ull << 30, 0x1c4ull << 30, 0x1c5ull << 30, 0x1c6ull << 30, 0x1c7ull << 30, 0x1c8ull << 30, 0x1c9ull << 30, 0x1d0ull << 30, 0x1d1ull << 30, 0x1d2ull << 30, 0x1d3ull << 30, 0x1d4ull << 30, 0x1d5ull << 30, 0x1d6ull << 30, 0x1d7ull << 30, 0x1d8ull << 30, 0x1d9ull << 30, 0x1e0ull << 30, 0x1e1ull << 30, 0x1e2ull << 30, 0x1e3ull << 30, 0x1e4ull << 30, 0x1e5ull << 30, 0x1e6ull << 30, 0x1e7ull << 30, 0x1e8ull << 30, 0x1e9ull << 30, 0x1f0ull << 30, 0x1f1ull << 30, 0x1f2ull << 30, 0x1f3ull << 30, 0x1f4ull << 30, 0x1f5ull << 30, 0x1f6ull << 30, 0x1f7ull << 30, 0x1f8ull << 30, 0x1f9ull << 30, 0x18aull << 30, 0x18bull << 30, 0x1aaull << 30, 0x1abull << 30, 0x1caull << 30, 0x1cbull << 30, 0x1eaull << 30, 0x1ebull << 30, 0x1ceull << 30, 0x1cfull << 30, 0x19aull << 30, 0x19bull << 30, 0x1baull << 30, 0x1bbull << 30, 0x1daull << 30, 0x1dbull << 30, 0x1faull << 30, 0x1fbull << 30, 0x1deull << 30, 0x1dfull << 30, 0x200ull << 30, 0x201ull << 30, 0x202ull << 30, 0x203ull << 30, 0x204ull << 30, 0x205ull << 30, 0x206ull << 30, 0x207ull << 30, 0x208ull << 30, 0x209ull << 30, 0x210ull << 30, 0x211ull << 30, 0x212ull << 30, 0x213ull << 30, 0x214ull << 30, 0x215ull << 30, 0x216ull << 30, 0x217ull << 30, 0x218ull << 30, 0x219ull << 30, 0x220ull << 30, 0x221ull << 30, 0x222ull << 30, 0x223ull << 30, 0x224ull << 30, 0x225ull << 30, 0x226ull << 30, 0x227ull << 30, 0x228ull << 30, 0x229ull << 30, 0x230ull << 30, 0x231ull << 30, 0x232ull << 30, 0x233ull << 30, 0x234ull << 30, 0x235ull << 30, 0x236ull << 30, 0x237ull << 30, 0x238ull << 30, 0x239ull << 30, 0x240ull << 30, 0x241ull << 30, 0x242ull << 30, 0x243ull << 30, 0x244ull << 30, 0x245ull << 30, 0x246ull << 30, 0x247ull << 30, 0x248ull << 30, 0x249ull << 30, 0x250ull << 30, 0x251ull << 30, 0x252ull << 30, 0x253ull << 30, 0x254ull << 30, 0x255ull << 30, 0x256ull << 30, 0x257ull << 30, 0x258ull << 30, 0x259ull << 30, 0x260ull << 30, 0x261ull << 30, 0x262ull << 30, 0x263ull << 30, 0x264ull << 30, 0x265ull << 30, 0x266ull << 30, 0x267ull << 30, 0x268ull << 30, 0x269ull << 30, 0x270ull << 30, 0x271ull << 30, 0x272ull << 30, 0x273ull << 30, 0x274ull << 30, 0x275ull << 30, 0x276ull << 30, 0x277ull << 30, 0x278ull << 30, 0x279ull << 30, 0x20aull << 30, 0x20bull << 30, 0x22aull << 30, 0x22bull << 30, 0x24aull << 30, 0x24bull << 30, 0x26aull << 30, 0x26bull << 30, 0x24eull << 30, 0x24full << 30, 0x21aull << 30, 0x21bull << 30, 0x23aull << 30, 0x23bull << 30, 0x25aull << 30, 0x25bull << 30, 0x27aull << 30, 0x27bull << 30, 0x25eull << 30, 0x25full << 30, 0x280ull << 30, 0x281ull << 30, 0x282ull << 30, 0x283ull << 30, 0x284ull << 30, 0x285ull << 30, 0x286ull << 30, 0x287ull << 30, 0x288ull << 30, 0x289ull << 30, 0x290ull << 30, 0x291ull << 30, 0x292ull << 30, 0x293ull << 30, 0x294ull << 30, 0x295ull << 30, 0x296ull << 30, 0x297ull << 30, 0x298ull << 30, 0x299ull << 30, 0x2a0ull << 30, 0x2a1ull << 30, 0x2a2ull << 30, 0x2a3ull << 30, 0x2a4ull << 30, 0x2a5ull << 30, 0x2a6ull << 30, 0x2a7ull << 30, 0x2a8ull << 30, 0x2a9ull << 30, 0x2b0ull << 30, 0x2b1ull << 30, 0x2b2ull << 30, 0x2b3ull << 30, 0x2b4ull << 30, 0x2b5ull << 30, 0x2b6ull << 30, 0x2b7ull << 30, 0x2b8ull << 30, 0x2b9ull << 30, 0x2c0ull << 30, 0x2c1ull << 30, 0x2c2ull << 30, 0x2c3ull << 30, 0x2c4ull << 30, 0x2c5ull << 30, 0x2c6ull << 30, 0x2c7ull << 30, 0x2c8ull << 30, 0x2c9ull << 30, 0x2d0ull << 30, 0x2d1ull << 30, 0x2d2ull << 30, 0x2d3ull << 30, 0x2d4ull << 30, 0x2d5ull << 30, 0x2d6ull << 30, 0x2d7ull << 30, 0x2d8ull << 30, 0x2d9ull << 30, 0x2e0ull << 30, 0x2e1ull << 30, 0x2e2ull << 30, 0x2e3ull << 30, 0x2e4ull << 30, 0x2e5ull << 30, 0x2e6ull << 30, 0x2e7ull << 30, 0x2e8ull << 30, 0x2e9ull << 30, 0x2f0ull << 30, 0x2f1ull << 30, 0x2f2ull << 30, 0x2f3ull << 30, 0x2f4ull << 30, 0x2f5ull << 30, 0x2f6ull << 30, 0x2f7ull << 30, 0x2f8ull << 30, 0x2f9ull << 30, 0x28aull << 30, 0x28bull << 30, 0x2aaull << 30, 0x2abull << 30, 0x2caull << 30, 0x2cbull << 30, 0x2eaull << 30, 0x2ebull << 30, 0x2ceull << 30, 0x2cfull << 30, 0x29aull << 30, 0x29bull << 30, 0x2baull << 30, 0x2bbull << 30, 0x2daull << 30, 0x2dbull << 30, 0x2faull << 30, 0x2fbull << 30, 0x2deull << 30, 0x2dfull << 30, 0x300ull << 30, 0x301ull << 30, 0x302ull << 30, 0x303ull << 30, 0x304ull << 30, 0x305ull << 30, 0x306ull << 30, 0x307ull << 30, 0x308ull << 30, 0x309ull << 30, 0x310ull << 30, 0x311ull << 30, 0x312ull << 30, 0x313ull << 30, 0x314ull << 30, 0x315ull << 30, 0x316ull << 30, 0x317ull << 30, 0x318ull << 30, 0x319ull << 30, 0x320ull << 30, 0x321ull << 30, 0x322ull << 30, 0x323ull << 30, 0x324ull << 30, 0x325ull << 30, 0x326ull << 30, 0x327ull << 30, 0x328ull << 30, 0x329ull << 30, 0x330ull << 30, 0x331ull << 30, 0x332ull << 30, 0x333ull << 30, 0x334ull << 30, 0x335ull << 30, 0x336ull << 30, 0x337ull << 30, 0x338ull << 30, 0x339ull << 30, 0x340ull << 30, 0x341ull << 30, 0x342ull << 30, 0x343ull << 30, 0x344ull << 30, 0x345ull << 30, 0x346ull << 30, 0x347ull << 30, 0x348ull << 30, 0x349ull << 30, 0x350ull << 30, 0x351ull << 30, 0x352ull << 30, 0x353ull << 30, 0x354ull << 30, 0x355ull << 30, 0x356ull << 30, 0x357ull << 30, 0x358ull << 30, 0x359ull << 30, 0x360ull << 30, 0x361ull << 30, 0x362ull << 30, 0x363ull << 30, 0x364ull << 30, 0x365ull << 30, 0x366ull << 30, 0x367ull << 30, 0x368ull << 30, 0x369ull << 30, 0x370ull << 30, 0x371ull << 30, 0x372ull << 30, 0x373ull << 30, 0x374ull << 30, 0x375ull << 30, 0x376ull << 30, 0x377ull << 30, 0x378ull << 30, 0x379ull << 30, 0x30aull << 30, 0x30bull << 30, 0x32aull << 30, 0x32bull << 30, 0x34aull << 30, 0x34bull << 30, 0x36aull << 30, 0x36bull << 30, 0x34eull << 30, 0x34full << 30, 0x31aull << 30, 0x31bull << 30, 0x33aull << 30, 0x33bull << 30, 0x35aull << 30, 0x35bull << 30, 0x37aull << 30, 0x37bull << 30, 0x35eull << 30, 0x35full << 30, 0x380ull << 30, 0x381ull << 30, 0x382ull << 30, 0x383ull << 30, 0x384ull << 30, 0x385ull << 30, 0x386ull << 30, 0x387ull << 30, 0x388ull << 30, 0x389ull << 30, 0x390ull << 30, 0x391ull << 30, 0x392ull << 30, 0x393ull << 30, 0x394ull << 30, 0x395ull << 30, 0x396ull << 30, 0x397ull << 30, 0x398ull << 30, 0x399ull << 30, 0x3a0ull << 30, 0x3a1ull << 30, 0x3a2ull << 30, 0x3a3ull << 30, 0x3a4ull << 30, 0x3a5ull << 30, 0x3a6ull << 30, 0x3a7ull << 30, 0x3a8ull << 30, 0x3a9ull << 30, 0x3b0ull << 30, 0x3b1ull << 30, 0x3b2ull << 30, 0x3b3ull << 30, 0x3b4ull << 30, 0x3b5ull << 30, 0x3b6ull << 30, 0x3b7ull << 30, 0x3b8ull << 30, 0x3b9ull << 30, 0x3c0ull << 30, 0x3c1ull << 30, 0x3c2ull << 30, 0x3c3ull << 30, 0x3c4ull << 30, 0x3c5ull << 30, 0x3c6ull << 30, 0x3c7ull << 30, 0x3c8ull << 30, 0x3c9ull << 30, 0x3d0ull << 30, 0x3d1ull << 30, 0x3d2ull << 30, 0x3d3ull << 30, 0x3d4ull << 30, 0x3d5ull << 30, 0x3d6ull << 30, 0x3d7ull << 30, 0x3d8ull << 30, 0x3d9ull << 30, 0x3e0ull << 30, 0x3e1ull << 30, 0x3e2ull << 30, 0x3e3ull << 30, 0x3e4ull << 30, 0x3e5ull << 30, 0x3e6ull << 30, 0x3e7ull << 30, 0x3e8ull << 30, 0x3e9ull << 30, 0x3f0ull << 30, 0x3f1ull << 30, 0x3f2ull << 30, 0x3f3ull << 30, 0x3f4ull << 30, 0x3f5ull << 30, 0x3f6ull << 30, 0x3f7ull << 30, 0x3f8ull << 30, 0x3f9ull << 30, 0x38aull << 30, 0x38bull << 30, 0x3aaull << 30, 0x3abull << 30, 0x3caull << 30, 0x3cbull << 30, 0x3eaull << 30, 0x3ebull << 30, 0x3ceull << 30, 0x3cfull << 30, 0x39aull << 30, 0x39bull << 30, 0x3baull << 30, 0x3bbull << 30, 0x3daull << 30, 0x3dbull << 30, 0x3faull << 30, 0x3fbull << 30, 0x3deull << 30, 0x3dfull << 30, 0x00cull << 30, 0x00dull << 30, 0x10cull << 30, 0x10dull << 30, 0x20cull << 30, 0x20dull << 30, 0x30cull << 30, 0x30dull << 30, 0x02eull << 30, 0x02full << 30, 0x01cull << 30, 0x01dull << 30, 0x11cull << 30, 0x11dull << 30, 0x21cull << 30, 0x21dull << 30, 0x31cull << 30, 0x31dull << 30, 0x03eull << 30, 0x03full << 30, 0x02cull << 30, 0x02dull << 30, 0x12cull << 30, 0x12dull << 30, 0x22cull << 30, 0x22dull << 30, 0x32cull << 30, 0x32dull << 30, 0x12eull << 30, 0x12full << 30, 0x03cull << 30, 0x03dull << 30, 0x13cull << 30, 0x13dull << 30, 0x23cull << 30, 0x23dull << 30, 0x33cull << 30, 0x33dull << 30, 0x13eull << 30, 0x13full << 30, 0x04cull << 30, 0x04dull << 30, 0x14cull << 30, 0x14dull << 30, 0x24cull << 30, 0x24dull << 30, 0x34cull << 30, 0x34dull << 30, 0x22eull << 30, 0x22full << 30, 0x05cull << 30, 0x05dull << 30, 0x15cull << 30, 0x15dull << 30, 0x25cull << 30, 0x25dull << 30, 0x35cull << 30, 0x35dull << 30, 0x23eull << 30, 0x23full << 30, 0x06cull << 30, 0x06dull << 30, 0x16cull << 30, 0x16dull << 30, 0x26cull << 30, 0x26dull << 30, 0x36cull << 30, 0x36dull << 30, 0x32eull << 30, 0x32full << 30, 0x07cull << 30, 0x07dull << 30, 0x17cull << 30, 0x17dull << 30, 0x27cull << 30, 0x27dull << 30, 0x37cull << 30, 0x37dull << 30, 0x33eull << 30, 0x33full << 30, 0x00eull << 30, 0x00full << 30, 0x10eull << 30, 0x10full << 30, 0x20eull << 30, 0x20full << 30, 0x30eull << 30, 0x30full << 30, 0x06eull << 30, 0x06full << 30, 0x01eull << 30, 0x01full << 30, 0x11eull << 30, 0x11full << 30, 0x21eull << 30, 0x21full << 30, 0x31eull << 30, 0x31full << 30, 0x07eull << 30, 0x07full << 30, 0x08cull << 30, 0x08dull << 30, 0x18cull << 30, 0x18dull << 30, 0x28cull << 30, 0x28dull << 30, 0x38cull << 30, 0x38dull << 30, 0x0aeull << 30, 0x0afull << 30, 0x09cull << 30, 0x09dull << 30, 0x19cull << 30, 0x19dull << 30, 0x29cull << 30, 0x29dull << 30, 0x39cull << 30, 0x39dull << 30, 0x0beull << 30, 0x0bfull << 30, 0x0acull << 30, 0x0adull << 30, 0x1acull << 30, 0x1adull << 30, 0x2acull << 30, 0x2adull << 30, 0x3acull << 30, 0x3adull << 30, 0x1aeull << 30, 0x1afull << 30, 0x0bcull << 30, 0x0bdull << 30, 0x1bcull << 30, 0x1bdull << 30, 0x2bcull << 30, 0x2bdull << 30, 0x3bcull << 30, 0x3bdull << 30, 0x1beull << 30, 0x1bfull << 30, 0x0ccull << 30, 0x0cdull << 30, 0x1ccull << 30, 0x1cdull << 30, 0x2ccull << 30, 0x2cdull << 30, 0x3ccull << 30, 0x3cdull << 30, 0x2aeull << 30, 0x2afull << 30, 0x0dcull << 30, 0x0ddull << 30, 0x1dcull << 30, 0x1ddull << 30, 0x2dcull << 30, 0x2ddull << 30, 0x3dcull << 30, 0x3ddull << 30, 0x2beull << 30, 0x2bfull << 30, 0x0ecull << 30, 0x0edull << 30, 0x1ecull << 30, 0x1edull << 30, 0x2ecull << 30, 0x2edull << 30, 0x3ecull << 30, 0x3edull << 30, 0x3aeull << 30, 0x3afull << 30, 0x0fcull << 30, 0x0fdull << 30, 0x1fcull << 30, 0x1fdull << 30, 0x2fcull << 30, 0x2fdull << 30, 0x3fcull << 30, 0x3fdull << 30, 0x3beull << 30, 0x3bfull << 30, 0x08eull << 30, 0x08full << 30, 0x18eull << 30, 0x18full << 30, 0x28eull << 30, 0x28full << 30, 0x38eull << 30, 0x38full << 30, 0x0eeull << 30, 0x0efull << 30, 0x09eull << 30, 0x09full << 30, 0x19eull << 30, 0x19full << 30, 0x29eull << 30, 0x29full << 30, 0x39eull << 30, 0x39full << 30, 0x0feull << 30, 0x0ffull << 30 }; const BID_UINT64 bid_b2d5[] = { 0x000ull << 40, 0x001ull << 40, 0x002ull << 40, 0x003ull << 40, 0x004ull << 40, 0x005ull << 40, 0x006ull << 40, 0x007ull << 40, 0x008ull << 40, 0x009ull << 40, 0x010ull << 40, 0x011ull << 40, 0x012ull << 40, 0x013ull << 40, 0x014ull << 40, 0x015ull << 40, 0x016ull << 40, 0x017ull << 40, 0x018ull << 40, 0x019ull << 40, 0x020ull << 40, 0x021ull << 40, 0x022ull << 40, 0x023ull << 40, 0x024ull << 40, 0x025ull << 40, 0x026ull << 40, 0x027ull << 40, 0x028ull << 40, 0x029ull << 40, 0x030ull << 40, 0x031ull << 40, 0x032ull << 40, 0x033ull << 40, 0x034ull << 40, 0x035ull << 40, 0x036ull << 40, 0x037ull << 40, 0x038ull << 40, 0x039ull << 40, 0x040ull << 40, 0x041ull << 40, 0x042ull << 40, 0x043ull << 40, 0x044ull << 40, 0x045ull << 40, 0x046ull << 40, 0x047ull << 40, 0x048ull << 40, 0x049ull << 40, 0x050ull << 40, 0x051ull << 40, 0x052ull << 40, 0x053ull << 40, 0x054ull << 40, 0x055ull << 40, 0x056ull << 40, 0x057ull << 40, 0x058ull << 40, 0x059ull << 40, 0x060ull << 40, 0x061ull << 40, 0x062ull << 40, 0x063ull << 40, 0x064ull << 40, 0x065ull << 40, 0x066ull << 40, 0x067ull << 40, 0x068ull << 40, 0x069ull << 40, 0x070ull << 40, 0x071ull << 40, 0x072ull << 40, 0x073ull << 40, 0x074ull << 40, 0x075ull << 40, 0x076ull << 40, 0x077ull << 40, 0x078ull << 40, 0x079ull << 40, 0x00aull << 40, 0x00bull << 40, 0x02aull << 40, 0x02bull << 40, 0x04aull << 40, 0x04bull << 40, 0x06aull << 40, 0x06bull << 40, 0x04eull << 40, 0x04full << 40, 0x01aull << 40, 0x01bull << 40, 0x03aull << 40, 0x03bull << 40, 0x05aull << 40, 0x05bull << 40, 0x07aull << 40, 0x07bull << 40, 0x05eull << 40, 0x05full << 40, 0x080ull << 40, 0x081ull << 40, 0x082ull << 40, 0x083ull << 40, 0x084ull << 40, 0x085ull << 40, 0x086ull << 40, 0x087ull << 40, 0x088ull << 40, 0x089ull << 40, 0x090ull << 40, 0x091ull << 40, 0x092ull << 40, 0x093ull << 40, 0x094ull << 40, 0x095ull << 40, 0x096ull << 40, 0x097ull << 40, 0x098ull << 40, 0x099ull << 40, 0x0a0ull << 40, 0x0a1ull << 40, 0x0a2ull << 40, 0x0a3ull << 40, 0x0a4ull << 40, 0x0a5ull << 40, 0x0a6ull << 40, 0x0a7ull << 40, 0x0a8ull << 40, 0x0a9ull << 40, 0x0b0ull << 40, 0x0b1ull << 40, 0x0b2ull << 40, 0x0b3ull << 40, 0x0b4ull << 40, 0x0b5ull << 40, 0x0b6ull << 40, 0x0b7ull << 40, 0x0b8ull << 40, 0x0b9ull << 40, 0x0c0ull << 40, 0x0c1ull << 40, 0x0c2ull << 40, 0x0c3ull << 40, 0x0c4ull << 40, 0x0c5ull << 40, 0x0c6ull << 40, 0x0c7ull << 40, 0x0c8ull << 40, 0x0c9ull << 40, 0x0d0ull << 40, 0x0d1ull << 40, 0x0d2ull << 40, 0x0d3ull << 40, 0x0d4ull << 40, 0x0d5ull << 40, 0x0d6ull << 40, 0x0d7ull << 40, 0x0d8ull << 40, 0x0d9ull << 40, 0x0e0ull << 40, 0x0e1ull << 40, 0x0e2ull << 40, 0x0e3ull << 40, 0x0e4ull << 40, 0x0e5ull << 40, 0x0e6ull << 40, 0x0e7ull << 40, 0x0e8ull << 40, 0x0e9ull << 40, 0x0f0ull << 40, 0x0f1ull << 40, 0x0f2ull << 40, 0x0f3ull << 40, 0x0f4ull << 40, 0x0f5ull << 40, 0x0f6ull << 40, 0x0f7ull << 40, 0x0f8ull << 40, 0x0f9ull << 40, 0x08aull << 40, 0x08bull << 40, 0x0aaull << 40, 0x0abull << 40, 0x0caull << 40, 0x0cbull << 40, 0x0eaull << 40, 0x0ebull << 40, 0x0ceull << 40, 0x0cfull << 40, 0x09aull << 40, 0x09bull << 40, 0x0baull << 40, 0x0bbull << 40, 0x0daull << 40, 0x0dbull << 40, 0x0faull << 40, 0x0fbull << 40, 0x0deull << 40, 0x0dfull << 40, 0x100ull << 40, 0x101ull << 40, 0x102ull << 40, 0x103ull << 40, 0x104ull << 40, 0x105ull << 40, 0x106ull << 40, 0x107ull << 40, 0x108ull << 40, 0x109ull << 40, 0x110ull << 40, 0x111ull << 40, 0x112ull << 40, 0x113ull << 40, 0x114ull << 40, 0x115ull << 40, 0x116ull << 40, 0x117ull << 40, 0x118ull << 40, 0x119ull << 40, 0x120ull << 40, 0x121ull << 40, 0x122ull << 40, 0x123ull << 40, 0x124ull << 40, 0x125ull << 40, 0x126ull << 40, 0x127ull << 40, 0x128ull << 40, 0x129ull << 40, 0x130ull << 40, 0x131ull << 40, 0x132ull << 40, 0x133ull << 40, 0x134ull << 40, 0x135ull << 40, 0x136ull << 40, 0x137ull << 40, 0x138ull << 40, 0x139ull << 40, 0x140ull << 40, 0x141ull << 40, 0x142ull << 40, 0x143ull << 40, 0x144ull << 40, 0x145ull << 40, 0x146ull << 40, 0x147ull << 40, 0x148ull << 40, 0x149ull << 40, 0x150ull << 40, 0x151ull << 40, 0x152ull << 40, 0x153ull << 40, 0x154ull << 40, 0x155ull << 40, 0x156ull << 40, 0x157ull << 40, 0x158ull << 40, 0x159ull << 40, 0x160ull << 40, 0x161ull << 40, 0x162ull << 40, 0x163ull << 40, 0x164ull << 40, 0x165ull << 40, 0x166ull << 40, 0x167ull << 40, 0x168ull << 40, 0x169ull << 40, 0x170ull << 40, 0x171ull << 40, 0x172ull << 40, 0x173ull << 40, 0x174ull << 40, 0x175ull << 40, 0x176ull << 40, 0x177ull << 40, 0x178ull << 40, 0x179ull << 40, 0x10aull << 40, 0x10bull << 40, 0x12aull << 40, 0x12bull << 40, 0x14aull << 40, 0x14bull << 40, 0x16aull << 40, 0x16bull << 40, 0x14eull << 40, 0x14full << 40, 0x11aull << 40, 0x11bull << 40, 0x13aull << 40, 0x13bull << 40, 0x15aull << 40, 0x15bull << 40, 0x17aull << 40, 0x17bull << 40, 0x15eull << 40, 0x15full << 40, 0x180ull << 40, 0x181ull << 40, 0x182ull << 40, 0x183ull << 40, 0x184ull << 40, 0x185ull << 40, 0x186ull << 40, 0x187ull << 40, 0x188ull << 40, 0x189ull << 40, 0x190ull << 40, 0x191ull << 40, 0x192ull << 40, 0x193ull << 40, 0x194ull << 40, 0x195ull << 40, 0x196ull << 40, 0x197ull << 40, 0x198ull << 40, 0x199ull << 40, 0x1a0ull << 40, 0x1a1ull << 40, 0x1a2ull << 40, 0x1a3ull << 40, 0x1a4ull << 40, 0x1a5ull << 40, 0x1a6ull << 40, 0x1a7ull << 40, 0x1a8ull << 40, 0x1a9ull << 40, 0x1b0ull << 40, 0x1b1ull << 40, 0x1b2ull << 40, 0x1b3ull << 40, 0x1b4ull << 40, 0x1b5ull << 40, 0x1b6ull << 40, 0x1b7ull << 40, 0x1b8ull << 40, 0x1b9ull << 40, 0x1c0ull << 40, 0x1c1ull << 40, 0x1c2ull << 40, 0x1c3ull << 40, 0x1c4ull << 40, 0x1c5ull << 40, 0x1c6ull << 40, 0x1c7ull << 40, 0x1c8ull << 40, 0x1c9ull << 40, 0x1d0ull << 40, 0x1d1ull << 40, 0x1d2ull << 40, 0x1d3ull << 40, 0x1d4ull << 40, 0x1d5ull << 40, 0x1d6ull << 40, 0x1d7ull << 40, 0x1d8ull << 40, 0x1d9ull << 40, 0x1e0ull << 40, 0x1e1ull << 40, 0x1e2ull << 40, 0x1e3ull << 40, 0x1e4ull << 40, 0x1e5ull << 40, 0x1e6ull << 40, 0x1e7ull << 40, 0x1e8ull << 40, 0x1e9ull << 40, 0x1f0ull << 40, 0x1f1ull << 40, 0x1f2ull << 40, 0x1f3ull << 40, 0x1f4ull << 40, 0x1f5ull << 40, 0x1f6ull << 40, 0x1f7ull << 40, 0x1f8ull << 40, 0x1f9ull << 40, 0x18aull << 40, 0x18bull << 40, 0x1aaull << 40, 0x1abull << 40, 0x1caull << 40, 0x1cbull << 40, 0x1eaull << 40, 0x1ebull << 40, 0x1ceull << 40, 0x1cfull << 40, 0x19aull << 40, 0x19bull << 40, 0x1baull << 40, 0x1bbull << 40, 0x1daull << 40, 0x1dbull << 40, 0x1faull << 40, 0x1fbull << 40, 0x1deull << 40, 0x1dfull << 40, 0x200ull << 40, 0x201ull << 40, 0x202ull << 40, 0x203ull << 40, 0x204ull << 40, 0x205ull << 40, 0x206ull << 40, 0x207ull << 40, 0x208ull << 40, 0x209ull << 40, 0x210ull << 40, 0x211ull << 40, 0x212ull << 40, 0x213ull << 40, 0x214ull << 40, 0x215ull << 40, 0x216ull << 40, 0x217ull << 40, 0x218ull << 40, 0x219ull << 40, 0x220ull << 40, 0x221ull << 40, 0x222ull << 40, 0x223ull << 40, 0x224ull << 40, 0x225ull << 40, 0x226ull << 40, 0x227ull << 40, 0x228ull << 40, 0x229ull << 40, 0x230ull << 40, 0x231ull << 40, 0x232ull << 40, 0x233ull << 40, 0x234ull << 40, 0x235ull << 40, 0x236ull << 40, 0x237ull << 40, 0x238ull << 40, 0x239ull << 40, 0x240ull << 40, 0x241ull << 40, 0x242ull << 40, 0x243ull << 40, 0x244ull << 40, 0x245ull << 40, 0x246ull << 40, 0x247ull << 40, 0x248ull << 40, 0x249ull << 40, 0x250ull << 40, 0x251ull << 40, 0x252ull << 40, 0x253ull << 40, 0x254ull << 40, 0x255ull << 40, 0x256ull << 40, 0x257ull << 40, 0x258ull << 40, 0x259ull << 40, 0x260ull << 40, 0x261ull << 40, 0x262ull << 40, 0x263ull << 40, 0x264ull << 40, 0x265ull << 40, 0x266ull << 40, 0x267ull << 40, 0x268ull << 40, 0x269ull << 40, 0x270ull << 40, 0x271ull << 40, 0x272ull << 40, 0x273ull << 40, 0x274ull << 40, 0x275ull << 40, 0x276ull << 40, 0x277ull << 40, 0x278ull << 40, 0x279ull << 40, 0x20aull << 40, 0x20bull << 40, 0x22aull << 40, 0x22bull << 40, 0x24aull << 40, 0x24bull << 40, 0x26aull << 40, 0x26bull << 40, 0x24eull << 40, 0x24full << 40, 0x21aull << 40, 0x21bull << 40, 0x23aull << 40, 0x23bull << 40, 0x25aull << 40, 0x25bull << 40, 0x27aull << 40, 0x27bull << 40, 0x25eull << 40, 0x25full << 40, 0x280ull << 40, 0x281ull << 40, 0x282ull << 40, 0x283ull << 40, 0x284ull << 40, 0x285ull << 40, 0x286ull << 40, 0x287ull << 40, 0x288ull << 40, 0x289ull << 40, 0x290ull << 40, 0x291ull << 40, 0x292ull << 40, 0x293ull << 40, 0x294ull << 40, 0x295ull << 40, 0x296ull << 40, 0x297ull << 40, 0x298ull << 40, 0x299ull << 40, 0x2a0ull << 40, 0x2a1ull << 40, 0x2a2ull << 40, 0x2a3ull << 40, 0x2a4ull << 40, 0x2a5ull << 40, 0x2a6ull << 40, 0x2a7ull << 40, 0x2a8ull << 40, 0x2a9ull << 40, 0x2b0ull << 40, 0x2b1ull << 40, 0x2b2ull << 40, 0x2b3ull << 40, 0x2b4ull << 40, 0x2b5ull << 40, 0x2b6ull << 40, 0x2b7ull << 40, 0x2b8ull << 40, 0x2b9ull << 40, 0x2c0ull << 40, 0x2c1ull << 40, 0x2c2ull << 40, 0x2c3ull << 40, 0x2c4ull << 40, 0x2c5ull << 40, 0x2c6ull << 40, 0x2c7ull << 40, 0x2c8ull << 40, 0x2c9ull << 40, 0x2d0ull << 40, 0x2d1ull << 40, 0x2d2ull << 40, 0x2d3ull << 40, 0x2d4ull << 40, 0x2d5ull << 40, 0x2d6ull << 40, 0x2d7ull << 40, 0x2d8ull << 40, 0x2d9ull << 40, 0x2e0ull << 40, 0x2e1ull << 40, 0x2e2ull << 40, 0x2e3ull << 40, 0x2e4ull << 40, 0x2e5ull << 40, 0x2e6ull << 40, 0x2e7ull << 40, 0x2e8ull << 40, 0x2e9ull << 40, 0x2f0ull << 40, 0x2f1ull << 40, 0x2f2ull << 40, 0x2f3ull << 40, 0x2f4ull << 40, 0x2f5ull << 40, 0x2f6ull << 40, 0x2f7ull << 40, 0x2f8ull << 40, 0x2f9ull << 40, 0x28aull << 40, 0x28bull << 40, 0x2aaull << 40, 0x2abull << 40, 0x2caull << 40, 0x2cbull << 40, 0x2eaull << 40, 0x2ebull << 40, 0x2ceull << 40, 0x2cfull << 40, 0x29aull << 40, 0x29bull << 40, 0x2baull << 40, 0x2bbull << 40, 0x2daull << 40, 0x2dbull << 40, 0x2faull << 40, 0x2fbull << 40, 0x2deull << 40, 0x2dfull << 40, 0x300ull << 40, 0x301ull << 40, 0x302ull << 40, 0x303ull << 40, 0x304ull << 40, 0x305ull << 40, 0x306ull << 40, 0x307ull << 40, 0x308ull << 40, 0x309ull << 40, 0x310ull << 40, 0x311ull << 40, 0x312ull << 40, 0x313ull << 40, 0x314ull << 40, 0x315ull << 40, 0x316ull << 40, 0x317ull << 40, 0x318ull << 40, 0x319ull << 40, 0x320ull << 40, 0x321ull << 40, 0x322ull << 40, 0x323ull << 40, 0x324ull << 40, 0x325ull << 40, 0x326ull << 40, 0x327ull << 40, 0x328ull << 40, 0x329ull << 40, 0x330ull << 40, 0x331ull << 40, 0x332ull << 40, 0x333ull << 40, 0x334ull << 40, 0x335ull << 40, 0x336ull << 40, 0x337ull << 40, 0x338ull << 40, 0x339ull << 40, 0x340ull << 40, 0x341ull << 40, 0x342ull << 40, 0x343ull << 40, 0x344ull << 40, 0x345ull << 40, 0x346ull << 40, 0x347ull << 40, 0x348ull << 40, 0x349ull << 40, 0x350ull << 40, 0x351ull << 40, 0x352ull << 40, 0x353ull << 40, 0x354ull << 40, 0x355ull << 40, 0x356ull << 40, 0x357ull << 40, 0x358ull << 40, 0x359ull << 40, 0x360ull << 40, 0x361ull << 40, 0x362ull << 40, 0x363ull << 40, 0x364ull << 40, 0x365ull << 40, 0x366ull << 40, 0x367ull << 40, 0x368ull << 40, 0x369ull << 40, 0x370ull << 40, 0x371ull << 40, 0x372ull << 40, 0x373ull << 40, 0x374ull << 40, 0x375ull << 40, 0x376ull << 40, 0x377ull << 40, 0x378ull << 40, 0x379ull << 40, 0x30aull << 40, 0x30bull << 40, 0x32aull << 40, 0x32bull << 40, 0x34aull << 40, 0x34bull << 40, 0x36aull << 40, 0x36bull << 40, 0x34eull << 40, 0x34full << 40, 0x31aull << 40, 0x31bull << 40, 0x33aull << 40, 0x33bull << 40, 0x35aull << 40, 0x35bull << 40, 0x37aull << 40, 0x37bull << 40, 0x35eull << 40, 0x35full << 40, 0x380ull << 40, 0x381ull << 40, 0x382ull << 40, 0x383ull << 40, 0x384ull << 40, 0x385ull << 40, 0x386ull << 40, 0x387ull << 40, 0x388ull << 40, 0x389ull << 40, 0x390ull << 40, 0x391ull << 40, 0x392ull << 40, 0x393ull << 40, 0x394ull << 40, 0x395ull << 40, 0x396ull << 40, 0x397ull << 40, 0x398ull << 40, 0x399ull << 40, 0x3a0ull << 40, 0x3a1ull << 40, 0x3a2ull << 40, 0x3a3ull << 40, 0x3a4ull << 40, 0x3a5ull << 40, 0x3a6ull << 40, 0x3a7ull << 40, 0x3a8ull << 40, 0x3a9ull << 40, 0x3b0ull << 40, 0x3b1ull << 40, 0x3b2ull << 40, 0x3b3ull << 40, 0x3b4ull << 40, 0x3b5ull << 40, 0x3b6ull << 40, 0x3b7ull << 40, 0x3b8ull << 40, 0x3b9ull << 40, 0x3c0ull << 40, 0x3c1ull << 40, 0x3c2ull << 40, 0x3c3ull << 40, 0x3c4ull << 40, 0x3c5ull << 40, 0x3c6ull << 40, 0x3c7ull << 40, 0x3c8ull << 40, 0x3c9ull << 40, 0x3d0ull << 40, 0x3d1ull << 40, 0x3d2ull << 40, 0x3d3ull << 40, 0x3d4ull << 40, 0x3d5ull << 40, 0x3d6ull << 40, 0x3d7ull << 40, 0x3d8ull << 40, 0x3d9ull << 40, 0x3e0ull << 40, 0x3e1ull << 40, 0x3e2ull << 40, 0x3e3ull << 40, 0x3e4ull << 40, 0x3e5ull << 40, 0x3e6ull << 40, 0x3e7ull << 40, 0x3e8ull << 40, 0x3e9ull << 40, 0x3f0ull << 40, 0x3f1ull << 40, 0x3f2ull << 40, 0x3f3ull << 40, 0x3f4ull << 40, 0x3f5ull << 40, 0x3f6ull << 40, 0x3f7ull << 40, 0x3f8ull << 40, 0x3f9ull << 40, 0x38aull << 40, 0x38bull << 40, 0x3aaull << 40, 0x3abull << 40, 0x3caull << 40, 0x3cbull << 40, 0x3eaull << 40, 0x3ebull << 40, 0x3ceull << 40, 0x3cfull << 40, 0x39aull << 40, 0x39bull << 40, 0x3baull << 40, 0x3bbull << 40, 0x3daull << 40, 0x3dbull << 40, 0x3faull << 40, 0x3fbull << 40, 0x3deull << 40, 0x3dfull << 40, 0x00cull << 40, 0x00dull << 40, 0x10cull << 40, 0x10dull << 40, 0x20cull << 40, 0x20dull << 40, 0x30cull << 40, 0x30dull << 40, 0x02eull << 40, 0x02full << 40, 0x01cull << 40, 0x01dull << 40, 0x11cull << 40, 0x11dull << 40, 0x21cull << 40, 0x21dull << 40, 0x31cull << 40, 0x31dull << 40, 0x03eull << 40, 0x03full << 40, 0x02cull << 40, 0x02dull << 40, 0x12cull << 40, 0x12dull << 40, 0x22cull << 40, 0x22dull << 40, 0x32cull << 40, 0x32dull << 40, 0x12eull << 40, 0x12full << 40, 0x03cull << 40, 0x03dull << 40, 0x13cull << 40, 0x13dull << 40, 0x23cull << 40, 0x23dull << 40, 0x33cull << 40, 0x33dull << 40, 0x13eull << 40, 0x13full << 40, 0x04cull << 40, 0x04dull << 40, 0x14cull << 40, 0x14dull << 40, 0x24cull << 40, 0x24dull << 40, 0x34cull << 40, 0x34dull << 40, 0x22eull << 40, 0x22full << 40, 0x05cull << 40, 0x05dull << 40, 0x15cull << 40, 0x15dull << 40, 0x25cull << 40, 0x25dull << 40, 0x35cull << 40, 0x35dull << 40, 0x23eull << 40, 0x23full << 40, 0x06cull << 40, 0x06dull << 40, 0x16cull << 40, 0x16dull << 40, 0x26cull << 40, 0x26dull << 40, 0x36cull << 40, 0x36dull << 40, 0x32eull << 40, 0x32full << 40, 0x07cull << 40, 0x07dull << 40, 0x17cull << 40, 0x17dull << 40, 0x27cull << 40, 0x27dull << 40, 0x37cull << 40, 0x37dull << 40, 0x33eull << 40, 0x33full << 40, 0x00eull << 40, 0x00full << 40, 0x10eull << 40, 0x10full << 40, 0x20eull << 40, 0x20full << 40, 0x30eull << 40, 0x30full << 40, 0x06eull << 40, 0x06full << 40, 0x01eull << 40, 0x01full << 40, 0x11eull << 40, 0x11full << 40, 0x21eull << 40, 0x21full << 40, 0x31eull << 40, 0x31full << 40, 0x07eull << 40, 0x07full << 40, 0x08cull << 40, 0x08dull << 40, 0x18cull << 40, 0x18dull << 40, 0x28cull << 40, 0x28dull << 40, 0x38cull << 40, 0x38dull << 40, 0x0aeull << 40, 0x0afull << 40, 0x09cull << 40, 0x09dull << 40, 0x19cull << 40, 0x19dull << 40, 0x29cull << 40, 0x29dull << 40, 0x39cull << 40, 0x39dull << 40, 0x0beull << 40, 0x0bfull << 40, 0x0acull << 40, 0x0adull << 40, 0x1acull << 40, 0x1adull << 40, 0x2acull << 40, 0x2adull << 40, 0x3acull << 40, 0x3adull << 40, 0x1aeull << 40, 0x1afull << 40, 0x0bcull << 40, 0x0bdull << 40, 0x1bcull << 40, 0x1bdull << 40, 0x2bcull << 40, 0x2bdull << 40, 0x3bcull << 40, 0x3bdull << 40, 0x1beull << 40, 0x1bfull << 40, 0x0ccull << 40, 0x0cdull << 40, 0x1ccull << 40, 0x1cdull << 40, 0x2ccull << 40, 0x2cdull << 40, 0x3ccull << 40, 0x3cdull << 40, 0x2aeull << 40, 0x2afull << 40, 0x0dcull << 40, 0x0ddull << 40, 0x1dcull << 40, 0x1ddull << 40, 0x2dcull << 40, 0x2ddull << 40, 0x3dcull << 40, 0x3ddull << 40, 0x2beull << 40, 0x2bfull << 40, 0x0ecull << 40, 0x0edull << 40, 0x1ecull << 40, 0x1edull << 40, 0x2ecull << 40, 0x2edull << 40, 0x3ecull << 40, 0x3edull << 40, 0x3aeull << 40, 0x3afull << 40, 0x0fcull << 40, 0x0fdull << 40, 0x1fcull << 40, 0x1fdull << 40, 0x2fcull << 40, 0x2fdull << 40, 0x3fcull << 40, 0x3fdull << 40, 0x3beull << 40, 0x3bfull << 40, 0x08eull << 40, 0x08full << 40, 0x18eull << 40, 0x18full << 40, 0x28eull << 40, 0x28full << 40, 0x38eull << 40, 0x38full << 40, 0x0eeull << 40, 0x0efull << 40, 0x09eull << 40, 0x09full << 40, 0x19eull << 40, 0x19full << 40, 0x29eull << 40, 0x29full << 40, 0x39eull << 40, 0x39full << 40, 0x0feull << 40, 0x0ffull << 40 }; LIBRARY/src/bid64_erfc.c0000644€­ Q01134020000000504615113665770013716 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_erfc, BID_UINT64, x) // Declare local variables BID_UINT64 res; BID_F80_TYPE xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Otherwise just do the operation "naively". // We inherit the erfc([-]inf) = [-]pi/2 case from the binary function // rather than having a special case for it. BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_erfc(yd, xd); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } LIBRARY/src/bid64_add.c0000644€­ Q01134020000004234415113665770013531 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID64 add ***************************************************************************** * * Algorithm description: * * if(exponent_a < exponent_b) * switch a, b * diff_expon = exponent_a - exponent_b * if(diff_expon > 16) * return normalize(a) * if(coefficient_a*10^diff_expon guaranteed below 2^62) * S = sign_a*coefficient_a*10^diff_expon + sign_b*coefficient_b * if(|S|<10^16) * return get_BID64(sign(S),exponent_b,|S|) * else * determine number of extra digits in S (1, 2, or 3) * return rounded result * else // large exponent difference * if(number_digits(coefficient_a*10^diff_expon) +/- 10^16) * guaranteed the same as * number_digits(coefficient_a*10^diff_expon) ) * S = normalize(coefficient_a + (sign_a^sign_b)*10^(16-diff_expon)) * corr = 10^16 + (sign_a^sign_b)*coefficient_b * corr*10^exponent_b is rounded so it aligns with S*10^exponent_S * return get_BID64(sign_a,exponent(S),S+rounded(corr)) * else * add sign_a*coefficient_a*10^diff_expon, sign_b*coefficient_b * in 128-bit integer arithmetic, then round to 16 decimal digits * * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" #if DECIMAL_CALL_BY_REFERENCE void bid64_add (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); #else BID_UINT64 bid64_add (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); #endif #if DECIMAL_CALL_BY_REFERENCE void bid64_sub (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif // check if y is not NaN if (((y & NAN_MASK64) != NAN_MASK64)) y ^= 0x8000000000000000ull; bid64_add (pres, px, &y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); } #else DFP_WRAPFN_DFP_DFP(64, bid64_sub, 64, 64) BID_UINT64 bid64_sub (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { // check if y is not NaN if (((y & NAN_MASK64) != NAN_MASK64)) y ^= 0x8000000000000000ull; return bid64_add (x, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); } #endif BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2(BID_UINT64, bid64_add, BID_UINT64, x, BID_UINT64, y) BID_UINT128 CA, CT, CT_new; BID_UINT64 sign_x, sign_y, coefficient_x, coefficient_y, C64_new; BID_UINT64 valid_x, valid_y; BID_UINT64 res; BID_UINT64 sign_a, sign_b, coefficient_a, coefficient_b, sign_s, sign_ab, rem_a; BID_UINT64 saved_ca, saved_cb, C0_64, C64, remainder_h, T1, carry, tmp; int_double tempx; int exponent_x, exponent_y, exponent_a, exponent_b, diff_dec_expon; int bin_expon_ca, extra_digits, amount, scale_k, scale_ca; unsigned rmode, status; BID_OPT_SAVE_BINARY_FLAGS() valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID64 (&sign_y, &exponent_y, &coefficient_y, y); // unpack arguments, check for NaN or Infinity if (!valid_x) { // x is Inf. or NaN // test if x is NaN if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK64) == SNAN_MASK64) // sNaN || ((y & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_x & QUIET_MASK64; BID_RETURN (res); } // x is Infinity? if ((x & INFINITY_MASK64) == INFINITY_MASK64) { // check if y is Inf if (((y & NAN_MASK64) == INFINITY_MASK64)) { if (sign_x == (y & 0x8000000000000000ull)) { res = coefficient_x; BID_RETURN (res); } // return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = NAN_MASK64; BID_RETURN (res); } } // check if y is NaN if (((y & NAN_MASK64) == NAN_MASK64)) { res = coefficient_y & QUIET_MASK64; #ifdef BID_SET_STATUS_FLAGS if (((y & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } // otherwise return +/-Inf { res = coefficient_x; BID_RETURN (res); } } // x is 0 { if (((y & INFINITY_MASK64) != INFINITY_MASK64) && coefficient_y) { if (exponent_y <= exponent_x) { res = y; BID_RETURN (res); } } } } if (!valid_y) { // y is Inf. or NaN? if (((y & INFINITY_MASK64) == INFINITY_MASK64)) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_y & QUIET_MASK64; BID_RETURN (res); } // y is 0 if (!coefficient_x) { // x==0 if (exponent_x <= exponent_y) res = ((BID_UINT64) exponent_x) << 53; else res = ((BID_UINT64) exponent_y) << 53; if (sign_x == sign_y) res |= sign_x; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rnd_mode == BID_ROUNDING_DOWN && sign_x != sign_y) res |= 0x8000000000000000ull; #endif #endif BID_RETURN (res); } else if (exponent_y >= exponent_x) { res = x; BID_RETURN (res); } } // sort arguments by exponent if (exponent_x < exponent_y) { sign_a = sign_y; exponent_a = exponent_y; coefficient_a = coefficient_y; sign_b = sign_x; exponent_b = exponent_x; coefficient_b = coefficient_x; } else { sign_a = sign_x; exponent_a = exponent_x; coefficient_a = coefficient_x; sign_b = sign_y; exponent_b = exponent_y; coefficient_b = coefficient_y; } // exponent difference diff_dec_expon = exponent_a - exponent_b; /* get binary coefficients of x and y */ //--- get number of bits in the coefficients of x and y --- // version 2 (original) tempx.d = (double) coefficient_a; bin_expon_ca = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; if (diff_dec_expon > MAX_FORMAT_DIGITS) { // normalize a to a 16-digit coefficient scale_ca = bid_estimate_decimal_digits[bin_expon_ca]; if (coefficient_a >= bid_power10_table_128[scale_ca].w[0]) scale_ca++; scale_k = 16 - scale_ca; coefficient_a *= bid_power10_table_128[scale_k].w[0]; diff_dec_expon -= scale_k; exponent_a -= scale_k; /* get binary coefficients of x and y */ //--- get number of bits in the coefficients of x and y --- tempx.d = (double) coefficient_a; bin_expon_ca = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; if (diff_dec_expon > MAX_FORMAT_DIGITS) { #ifdef BID_SET_STATUS_FLAGS if (coefficient_b) { __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); } #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (((rnd_mode) & 3) && coefficient_b) // not BID_ROUNDING_TO_NEAREST { switch (rnd_mode) { case BID_ROUNDING_DOWN: if (sign_b) { coefficient_a -= ((((BID_SINT64) sign_a) >> 63) | 1); if (coefficient_a < 1000000000000000ull) { exponent_a--; coefficient_a = 9999999999999999ull; } else if (coefficient_a >= 10000000000000000ull) { exponent_a++; coefficient_a = 1000000000000000ull; } } break; case BID_ROUNDING_UP: if (!sign_b) { coefficient_a += ((((BID_SINT64) sign_a) >> 63) | 1); if (coefficient_a < 1000000000000000ull) { exponent_a--; coefficient_a = 9999999999999999ull; } else if (coefficient_a >= 10000000000000000ull) { exponent_a++; coefficient_a = 1000000000000000ull; } } break; default: // RZ if (sign_a != sign_b) { coefficient_a--; if (coefficient_a < 1000000000000000ull) { exponent_a--; coefficient_a = 9999999999999999ull; } } break; } } else #endif #endif // check special case here if ((coefficient_a == 1000000000000000ull) && (diff_dec_expon == MAX_FORMAT_DIGITS + 1) && (sign_a ^ sign_b) && (coefficient_b > 5000000000000000ull)) { coefficient_a = 9999999999999999ull; exponent_a--; } res = fast_get_BID64_check_OF (sign_a, exponent_a, coefficient_a, rnd_mode, pfpsf); BID_RETURN (res); } } // test whether coefficient_a*10^(exponent_a-exponent_b) may exceed 2^62 if (bin_expon_ca + bid_estimate_bin_expon[diff_dec_expon] < 60) { // coefficient_a*10^(exponent_a-exponent_b)<2^63 // multiply by 10^(exponent_a-exponent_b) coefficient_a *= bid_power10_table_128[diff_dec_expon].w[0]; // sign mask sign_b = ((BID_SINT64) sign_b) >> 63; // apply sign to coeff. of b coefficient_b = (coefficient_b + sign_b) ^ sign_b; // apply sign to coefficient a sign_a = ((BID_SINT64) sign_a) >> 63; coefficient_a = (coefficient_a + sign_a) ^ sign_a; coefficient_a += coefficient_b; // get sign sign_s = ((BID_SINT64) coefficient_a) >> 63; coefficient_a = (coefficient_a + sign_s) ^ sign_s; sign_s &= 0x8000000000000000ull; // coefficient_a < 10^16 ? if (coefficient_a < bid_power10_table_128[MAX_FORMAT_DIGITS].w[0]) { #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rnd_mode == BID_ROUNDING_DOWN && (!coefficient_a) && sign_a != sign_b) sign_s = 0x8000000000000000ull; #endif #endif res = very_fast_get_BID64 (sign_s, exponent_b, coefficient_a); BID_RETURN (res); } // otherwise rounding is necessary // already know coefficient_a<10^19 // coefficient_a < 10^17 ? if (coefficient_a < bid_power10_table_128[17].w[0]) extra_digits = 1; else if (coefficient_a < bid_power10_table_128[18].w[0]) extra_digits = 2; else extra_digits = 3; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_s && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif coefficient_a += bid_round_const_table[rmode][extra_digits]; // get P*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (CT, coefficient_a, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; C64 = CT.w[1] >> amount; } else { // coefficient_a*10^(exponent_a-exponent_b) is large sign_s = sign_a; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_s && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif // check whether we can take faster path scale_ca = bid_estimate_decimal_digits[bin_expon_ca]; sign_ab = sign_a ^ sign_b; sign_ab = ((BID_SINT64) sign_ab) >> 63; // T1 = 10^(16-diff_dec_expon) T1 = bid_power10_table_128[16 - diff_dec_expon].w[0]; // get number of digits in coefficient_a if (coefficient_a >= bid_power10_table_128[scale_ca].w[0]) { scale_ca++; } scale_k = 16 - scale_ca; // addition saved_ca = coefficient_a - T1; coefficient_a = (BID_SINT64) saved_ca *(BID_SINT64) bid_power10_table_128[scale_k].w[0]; extra_digits = diff_dec_expon - scale_k; // apply sign saved_cb = (coefficient_b + sign_ab) ^ sign_ab; // add 10^16 and rounding constant coefficient_b = saved_cb + 10000000000000000ull + bid_round_const_table[rmode][extra_digits]; // get P*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (CT, coefficient_b, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; C0_64 = CT.w[1] >> amount; // result coefficient C64 = C0_64 + coefficient_a; // filter out difficult (corner) cases // this test ensures the number of digits in coefficient_a does not change // after adding (the appropriately scaled and rounded) coefficient_b if ((BID_UINT64) (C64 - 1000000000000000ull - 1) > 9000000000000000ull - 2) { if (C64 >= 10000000000000000ull) { // result has more than 16 digits if (!scale_k) { // must divide coeff_a by 10 saved_ca = saved_ca + T1; __mul_64x64_to_128 (CA, saved_ca, 0x3333333333333334ull); //reciprocals10_64[1]); coefficient_a = CA.w[1] >> 1; rem_a = saved_ca - (coefficient_a << 3) - (coefficient_a << 1); coefficient_a = coefficient_a - T1; saved_cb += rem_a * bid_power10_table_128[diff_dec_expon].w[0]; } else coefficient_a = (BID_SINT64) (saved_ca - T1 - (T1 << 3)) * (BID_SINT64) bid_power10_table_128[scale_k - 1].w[0]; extra_digits++; coefficient_b = saved_cb + 100000000000000000ull + bid_round_const_table[rmode][extra_digits]; // get P*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (CT, coefficient_b, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; C0_64 = CT.w[1] >> amount; // result coefficient C64 = C0_64 + coefficient_a; } else if (C64 <= 1000000000000000ull) { // less than 16 digits in result coefficient_a = (BID_SINT64) saved_ca *(BID_SINT64) bid_power10_table_128[scale_k + 1].w[0]; //extra_digits --; exponent_b--; coefficient_b = (saved_cb << 3) + (saved_cb << 1) + 100000000000000000ull + bid_round_const_table[rmode][extra_digits]; // get P*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (CT_new, coefficient_b, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; C0_64 = CT_new.w[1] >> amount; // result coefficient C64_new = C0_64 + coefficient_a; if (C64_new < 10000000000000000ull) { C64 = C64_new; #ifdef BID_SET_STATUS_FLAGS CT = CT_new; #endif } else exponent_b++; } } } #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if (C64 & 1) { // check whether fractional part of initial_P/10^extra_digits is // exactly .5 // this is the same as fractional part of // (initial_P + 0.5*10^extra_digits)/10^extra_digits is exactly zero // get remainder remainder_h = CT.w[1] << (64 - amount); // test whether fractional part is 0 if (!remainder_h && (CT.w[0] < bid_reciprocals10_64[extra_digits])) { C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS status = BID_INEXACT_EXCEPTION; // get remainder remainder_h = CT.w[1] << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if ((remainder_h == 0x8000000000000000ull) && (CT.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (CT.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; //if(!C64 && rmode==BID_ROUNDING_DOWN) sign_s=sign_y; break; default: // round up __add_carry_out (tmp, carry, CT.w[0], bid_reciprocals10_64[extra_digits]); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; break; } __set_status_flags (pfpsf, status); #endif res = fast_get_BID64_check_OF (sign_s, exponent_b + extra_digits, C64, rnd_mode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid32_string.c0000644€­ Q01134020000003044115113665770014275 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include #include "bid_internal.h" #include "bid128_2_str.h" #include "bid128_2_str_macros.h" #if DECIMAL_CALL_BY_REFERENCE void bid32_to_string (char *ps, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x; #else VOID_WRAPFN_OTHERTYPERES_DFP(bid32_to_string, char, 32) void bid32_to_string (char *ps, BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif // the destination string (pointed to by ps) must be pre-allocated BID_UINT64 CT; int d, j, istart, istart0; BID_UINT32 sign_x, coefficient_x; int exponent_x; unsigned int save_fpsf; #if DECIMAL_CALL_BY_REFERENCE x = *px; #endif save_fpsf = *pfpsf; // place holder only // unpack arguments, check for NaN or Infinity if (!unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x)) { ps[0] = (sign_x) ? '-' : '+'; // x is Inf. or NaN or 0 if((x&NAN_MASK32)==NAN_MASK32) { ps[1] = 'S'; j = ((x & SNAN_MASK32) == SNAN_MASK32)? 2: 1; ps[j++] = 'N'; ps[j++] = 'a'; ps[j++] = 'N'; ps[j++] = 0; return; } if((x&INFINITY_MASK32)==INFINITY_MASK32) { ps[1] = 'I'; ps[2] = 'n'; ps[3] = 'f'; ps[4] = 0; return; } istart = 1; ps[istart++] = '0'; } else // x is not special { ps[0] = sign_x? '-': '+'; istart = 1; if(coefficient_x>=1000000) { CT = (BID_UINT64)coefficient_x * 0x431BDE83ull; CT >>= 32; d = CT >> (50-32); ps[istart++] = d + '0'; coefficient_x -= d*1000000; // get lower 6 digits CT = (BID_UINT64)coefficient_x * 0x20C49BA6ull; CT >>= 32; d = CT >> (39-32); ps[istart++] = bid_midi_tbl[d][0]; ps[istart++] = bid_midi_tbl[d][1]; ps[istart++] = bid_midi_tbl[d][2]; d = coefficient_x - d*1000; ps[istart++] = bid_midi_tbl[d][0]; ps[istart++] = bid_midi_tbl[d][1]; ps[istart++] = bid_midi_tbl[d][2]; //ps[istart] = 0; } else if(coefficient_x>=1000) { CT = (BID_UINT64)coefficient_x * 0x20C49BA6ull; CT >>= 32; d = CT >> (39-32); istart0=istart; ps[istart] = bid_midi_tbl[d][0]; if(ps[istart]!='0') istart++; ps[istart] = bid_midi_tbl[d][1]; if((ps[istart]!='0') || (istart!=istart0)) istart++; ps[istart++] = bid_midi_tbl[d][2]; d = coefficient_x - d*1000; ps[istart++] = bid_midi_tbl[d][0]; ps[istart++] = bid_midi_tbl[d][1]; ps[istart++] = bid_midi_tbl[d][2]; //ps[istart] = 0; } else { d = coefficient_x; istart0=istart; ps[istart] = bid_midi_tbl[d][0]; if(ps[istart]!='0') istart++; ps[istart] = bid_midi_tbl[d][1]; if((ps[istart]!='0') || (istart!=istart0)) istart++; ps[istart++] = bid_midi_tbl[d][2]; } } ps[istart++] = 'E'; exponent_x -= DECIMAL_EXPONENT_BIAS_32; if (exponent_x < 0) { ps[istart++] = '-'; exponent_x = -exponent_x; } else ps[istart++] = '+'; istart0 = istart; ps[istart]=bid_midi_tbl[exponent_x][0]; if(ps[istart]!='0') istart++; ps[istart]=bid_midi_tbl[exponent_x][1]; if((ps[istart]!='0') || (istart!=istart0)) istart++; ps[istart++]=bid_midi_tbl[exponent_x][2]; ps[istart]=0; return; } #if DECIMAL_CALL_BY_REFERENCE void bid32_from_string (BID_UINT32 * pres, char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #else DFP_WRAPFN_OTHERTYPE(32, bid32_from_string, char*) BID_UINT32 bid32_from_string (char *ps _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 sign_x, coefficient_x = 0, rounded = 0, res; int expon_x = 0, sgn_expon, ndigits, add_expon = 0, midpoint = 0, rounded_up = 0, dround=0; int dec_expon_scale = 0, right_radix_leading_zeros = 0, rdx_pt_enc = 0; char c; unsigned int save_fpsf; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif save_fpsf = *pfpsf; // place holder only // eliminate leading whitespace while (((*ps == ' ') || (*ps == '\t')) && (*ps)) ps++; // get first non-whitespace character c = *ps; // detect special cases (INF or NaN) if (!c || (c != '.' && c != '-' && c != '+' && (c < '0' || c > '9'))) { // Infinity? if ((tolower_macro (ps[0]) == 'i' && tolower_macro (ps[1]) == 'n' && tolower_macro (ps[2]) == 'f') && (!ps[3] || (tolower_macro (ps[3]) == 'i' && tolower_macro (ps[4]) == 'n' && tolower_macro (ps[5]) == 'i' && tolower_macro (ps[6]) == 't' && tolower_macro (ps[7]) == 'y' && !ps[8]))) { res = 0x78000000ull; BID_RETURN (res); } // return sNaN if (tolower_macro (ps[0]) == 's' && tolower_macro (ps[1]) == 'n' && tolower_macro (ps[2]) == 'a' && tolower_macro (ps[3]) == 'n') { // case insensitive check for snan res = 0x7e000000ul; BID_RETURN (res); } else { // return qNaN res = 0x7c000000ul; BID_RETURN (res); } } // detect +INF or -INF if ((tolower_macro (ps[1]) == 'i' && tolower_macro (ps[2]) == 'n' && tolower_macro (ps[3]) == 'f') && (!ps[4] || (tolower_macro (ps[4]) == 'i' && tolower_macro (ps[5]) == 'n' && tolower_macro (ps[6]) == 'i' && tolower_macro (ps[7]) == 't' && tolower_macro (ps[8]) == 'y' && !ps[9]))) { if (c == '+') res = 0x78000000ul; else if (c == '-') res = 0xf8000000ul; else res = 0x7c000000ul; BID_RETURN (res); } // if +sNaN, +SNaN, -sNaN, or -SNaN if (tolower_macro (ps[1]) == 's' && tolower_macro (ps[2]) == 'n' && tolower_macro (ps[3]) == 'a' && tolower_macro (ps[4]) == 'n') { if (c == '-') res = 0xfe000000ul; else res = 0x7e000000ul; BID_RETURN (res); } // determine sign if (c == '-') sign_x = 0x80000000ul; else sign_x = 0; // get next character if leading +/- sign if (c == '-' || c == '+') { ps++; c = *ps; } // if c isn't a decimal point or a decimal digit, return NaN if (c != '.' && (c < '0' || c > '9')) { // return NaN res = 0x7c000000ul | sign_x; BID_RETURN (res); } rdx_pt_enc = 0; // detect zero (and eliminate/ignore leading zeros) if (*(ps) == '0' || *(ps) == '.') { if (*(ps) == '.') { rdx_pt_enc = 1; ps++; } // if all numbers are zeros (with possibly 1 radix point, the number is zero // should catch cases such as: 000.0 while (*ps == '0') { ps++; // for numbers such as 0.0000000000000000000000000000000000001001, // we want to count the leading zeros if (rdx_pt_enc) { right_radix_leading_zeros++; } // if this character is a radix point, make sure we haven't already // encountered one if (*(ps) == '.') { if (rdx_pt_enc == 0) { rdx_pt_enc = 1; // if this is the first radix point, and the next character is NULL, // we have a zero if (!*(ps + 1)) { right_radix_leading_zeros = DECIMAL_EXPONENT_BIAS_32 - right_radix_leading_zeros; if(right_radix_leading_zeros<0) right_radix_leading_zeros=0; res = ((BID_UINT64) (right_radix_leading_zeros) << 23) | sign_x; BID_RETURN (res); } ps = ps + 1; } else { // if 2 radix points, return NaN res = 0x7c000000ul | sign_x; BID_RETURN (res); } } else if (!*(ps)) { right_radix_leading_zeros = DECIMAL_EXPONENT_BIAS_32 - right_radix_leading_zeros; if(right_radix_leading_zeros<0) right_radix_leading_zeros=0; res = ((BID_UINT64) (right_radix_leading_zeros) << 23) | sign_x; BID_RETURN (res); } } } c = *ps; ndigits = 0; while ((c >= '0' && c <= '9') || c == '.') { if (c == '.') { if (rdx_pt_enc) { // return NaN res = 0x7c000000ul | sign_x; BID_RETURN (res); } rdx_pt_enc = 1; ps++; c = *ps; continue; } dec_expon_scale += rdx_pt_enc; ndigits++; if (ndigits <= 7) { coefficient_x = (coefficient_x << 1) + (coefficient_x << 3); coefficient_x += (BID_UINT64) (c - '0'); } else if (ndigits == 8) { // coefficient rounding switch(rnd_mode){ case BID_ROUNDING_TO_NEAREST: midpoint = (c == '5' && !(coefficient_x & 1)) ? 1 : 0; // if coefficient is even and c is 5, prepare to round up if // subsequent digit is nonzero // if str[MAXDIG+1] > 5, we MUST round up // if str[MAXDIG+1] == 5 and coefficient is ODD, ROUND UP! if (c > '5' || (c == '5' && (coefficient_x & 1))) { coefficient_x++; rounded_up = 1; break; case BID_ROUNDING_DOWN: if(sign_x) { if(c>'0') {coefficient_x++; rounded_up=1;} else dround=1; } break; case BID_ROUNDING_UP: if(!sign_x) { if(c>'0') {coefficient_x++; rounded_up=1;} else dround=1; } break; case BID_ROUNDING_TIES_AWAY: if(c>='5') { coefficient_x++; rounded_up=1; } break; } if (coefficient_x == 10000000ul) { coefficient_x = 1000000ul; add_expon = 1; } } if (c > '0') rounded = 1; add_expon += 1; } else { // ndigits > 8 add_expon++; if (midpoint && c > '0') { coefficient_x++; midpoint = 0; rounded_up = 1; } if (c > '0') { rounded = 1; if(dround) { dround = 0; coefficient_x ++; rounded_up = 1; if (coefficient_x == 10000000ul) { coefficient_x = 1000000ul; add_expon ++; } } } } ps++; c = *ps; } add_expon -= (dec_expon_scale + right_radix_leading_zeros); if (!c) { #ifdef BID_SET_STATUS_FLAGS if(rounded) __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif res = get_BID32 (sign_x, add_expon + DECIMAL_EXPONENT_BIAS_32, coefficient_x, 0, pfpsf); BID_RETURN (res); } if (c != 'E' && c != 'e') { // return NaN res = 0x7c000000ul | sign_x; BID_RETURN (res); } ps++; c = *ps; sgn_expon = (c == '-') ? 1 : 0; if (c == '-' || c == '+') { ps++; c = *ps; } if (!c || c < '0' || c > '9') { // return NaN res = 0x7c000000ul | sign_x; BID_RETURN (res); } while ((c >= '0') && (c <= '9')) { if(expon_x<(1<<20)) { expon_x = (expon_x << 1) + (expon_x << 3); expon_x += (int) (c - '0'); } ps++; c = *ps; } if (c) { // return NaN res = 0x7c000000ul | sign_x; BID_RETURN (res); } #ifdef BID_SET_STATUS_FLAGS if(rounded) __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif if (sgn_expon) expon_x = -expon_x; expon_x += add_expon + DECIMAL_EXPONENT_BIAS_32; if (expon_x < 0) { if (rounded_up) coefficient_x--; rnd_mode = 0; res = get_BID32_UF (sign_x, expon_x, coefficient_x, rounded, rnd_mode, pfpsf); BID_RETURN (res); } res = get_BID32 (sign_x, expon_x, coefficient_x, rnd_mode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid_binarydecimal.c0000644€­ Q01134020003036263215113665770015442 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" void bid128_to_binary128_2part(BINARY128 *res_hi,BINARY128 *res_lo,BID_UINT128 x); // Counting leading zeros in an unsigned 32-bit word // The "_nz" version will return the wrong answer (31) for zero inputs #define CLZ32_MASK16 0xFFFF0000ul #define CLZ32_MASK8 0xFF00FF00ul #define CLZ32_MASK4 0xF0F0F0F0ul #define CLZ32_MASK2 0xCCCCCCCCul #define CLZ32_MASK1 0xAAAAAAAAul #define clz32_nz(n) \ (((((n) & CLZ32_MASK16) <= ((n) & ~CLZ32_MASK16)) ? 16 : 0) + \ ((((n) & CLZ32_MASK8) <= ((n) & ~CLZ32_MASK8)) ? 8 : 0) + \ ((((n) & CLZ32_MASK4) <= ((n) & ~CLZ32_MASK4)) ? 4 : 0) + \ ((((n) & CLZ32_MASK2) <= ((n) & ~CLZ32_MASK2)) ? 2 : 0) + \ ((((n) & CLZ32_MASK1) <= ((n) & ~CLZ32_MASK1)) ? 1 : 0)) #define clz32(n) (((n)==0) ? 32 : clz32_nz(n)) // Counting trailing zeros in an unsigned 32-bit word // The ctz32_1bit version is for a single bit #define ctz32_1bit(n) \ ((((n) & ~CLZ32_MASK16) ? 0 : 16) + \ (((n) & ~CLZ32_MASK8) ? 0 : 8) + \ (((n) & ~CLZ32_MASK4) ? 0 : 4) + \ (((n) & ~CLZ32_MASK2) ? 0 : 2) + \ (((n) & ~CLZ32_MASK1) ? 0 : 1)) #define ctz32(n) (((n) == 0) ? 32 : ctz32_1bit((n) & -(n))) // Counting leading zeros in an unsigned 64-bit word // The "_nz" version will return the wrong answer (63) for zero inputs #define CLZ64_MASK32 0xFFFFFFFF00000000ull #define CLZ64_MASK16 0xFFFF0000FFFF0000ull #define CLZ64_MASK8 0xFF00FF00FF00FF00ull #define CLZ64_MASK4 0xF0F0F0F0F0F0F0F0ull #define CLZ64_MASK2 0xCCCCCCCCCCCCCCCCull #define CLZ64_MASK1 0xAAAAAAAAAAAAAAAAull #define clz64_nz(n) \ (((((n) & CLZ64_MASK32) <= ((n) & ~CLZ64_MASK32)) ? 32 : 0) + \ ((((n) & CLZ64_MASK16) <= ((n) & ~CLZ64_MASK16)) ? 16 : 0) + \ ((((n) & CLZ64_MASK8) <= ((n) & ~CLZ64_MASK8)) ? 8 : 0) + \ ((((n) & CLZ64_MASK4) <= ((n) & ~CLZ64_MASK4)) ? 4 : 0) + \ ((((n) & CLZ64_MASK2) <= ((n) & ~CLZ64_MASK2)) ? 2 : 0) + \ ((((n) & CLZ64_MASK1) <= ((n) & ~CLZ64_MASK1)) ? 1 : 0)) \ #define clz64(n) (((n)==0) ? 64 : clz64_nz(n)) // Counting trailing zeros in an unsigned 64-bit word // The ctz64_1bit version is for a single bit #define ctz64_1bit(n) \ ((((n) & ~CLZ64_MASK32) ? 0 : 32) + \ (((n) & ~CLZ64_MASK16) ? 0 : 16) + \ (((n) & ~CLZ64_MASK8) ? 0 : 8) + \ (((n) & ~CLZ64_MASK4) ? 0 : 4) + \ (((n) & ~CLZ64_MASK2) ? 0 : 2) + \ (((n) & ~CLZ64_MASK1) ? 0 : 1)) #define ctz64(n) (((n) == 0) ? 64 : ctz64_1bit((n) & -(n))) // Counting leading zeros in an unsigned 2-part 128-bit word #define clz128(n_hi,n_lo) (((n_hi) == 0) ? 64 + clz64(n_lo) : clz64_nz(n_hi)) #define clz128_nz(n_hi,n_lo) (((n_hi) == 0) ? 64 + clz64_nz(n_lo) : clz64_nz(n_hi)) // Counting trailing zeros in a 2-part 128-bit word #define ctz128(hi,lo) (((lo) == 0) ? 64 + ctz64(hi) : ctz64(lo)) // Shift 2-part 2^64 * hi + lo left by "c" bits // The "short" form requires a shift 0 < c < 64 and will be faster // Note that shifts of 64 can't be relied on as ANSI #define sll128_short(hi,lo,c) \ ((hi) = ((hi) << (c)) + ((lo)>>(64-(c))), \ (lo) = (lo) << (c) \ ) #define sll128(hi,lo,c) \ (((c) == 0) ? hi = hi, lo = lo : \ (((c) >= 64) ? hi = lo << ((c) - 64), lo = 0 : sll128_short(hi,lo,c))) // Shift 2-part 2^64 * hi + lo right by "c" bits // The "short" form requires a shift 0 < c < 64 and will be faster // Note that shifts of 64 can't be relied on as ANSI #define srl128_short(hi,lo,c) \ ((lo) = ((hi) << (64 - (c))) + ((lo) >> (c)), \ (hi) = (hi) >> (c) \ ) #define srl128(hi,lo,c) \ (((c) == 0) ? hi = hi, lo = lo : \ (((c) >= 64) ? lo = hi >> ((c) - 64), hi = 0 : srl128_short(hi,lo,c))) // Shift 4-part 2^196 * x3 + 2^128 * x2 + 2^64 * x1 + x0 // right by "c" bits (must have c < 64) #define srl256_short(x3,x2,x1,x0,c) \ ((x0) = ((x1) << (64 - (c))) + ((x0) >> (c)), \ (x1) = ((x2) << (64 - (c))) + ((x1) >> (c)), \ (x2) = ((x3) << (64 - (c))) + ((x2) >> (c)), \ (x3) = (x3) >> (c) \ ) // Similarly for 6-part result #define srl384_short(x5,x4,x3,x2,x1,x0,c) \ ((x0) = ((x1) << (64 - (c))) + ((x0) >> (c)), \ (x1) = ((x2) << (64 - (c))) + ((x1) >> (c)), \ (x2) = ((x3) << (64 - (c))) + ((x2) >> (c)), \ (x3) = ((x4) << (64 - (c))) + ((x3) >> (c)), \ (x4) = ((x5) << (64 - (c))) + ((x4) >> (c)), \ (x5) = (x5) >> (c) \ ) // Compare "<" two 2-part unsigned integers #define lt128(x_hi,x_lo,y_hi,y_lo) \ (((x_hi) < (y_hi)) || (((x_hi) == (y_hi)) && ((x_lo) < (y_lo)))) // Likewise "<=" #define le128(x_hi,x_lo,y_hi,y_lo) \ (((x_hi) < (y_hi)) || (((x_hi) == (y_hi)) && ((x_lo) <= (y_lo)))) // 128x256->384 bit multiplication (missing from existing macros) // I derived this by propagating (A).w[2] = 0 in __mul_192x256_to_448 #define __mul_128x256_to_384(P, A, B) \ { \ BID_UINT512 P0,P1; \ BID_UINT64 CY; \ __mul_64x256_to_320(P0, (A).w[0], B); \ __mul_64x256_to_320(P1, (A).w[1], B); \ (P).w[0] = P0.w[0]; \ __add_carry_out((P).w[1],CY,P1.w[0],P0.w[1]); \ __add_carry_in_out((P).w[2],CY,P1.w[1],P0.w[2],CY); \ __add_carry_in_out((P).w[3],CY,P1.w[2],P0.w[3],CY); \ __add_carry_in_out((P).w[4],CY,P1.w[3],P0.w[4],CY); \ (P).w[5] = P1.w[4] + CY; \ } // Multiply a 64-bit number by 10, getting "carry" and "sum" #define __mul_10x64(sum,carryout,input,carryin) \ { unsigned long long s3 = (input) + ((input) >> 2); \ (carryout) = ((s3 < (unsigned long long)(input))<<3) + (s3>>61); \ s3 = (s3<<3) + ((input&3)<<1); \ (sum) = s3 + (carryin); \ if ((unsigned long long)(sum) < s3) ++(carryout); \ } // Multiply a 256-bit number by 10, assuming no overflow #define __mul_10x256_to_256(p3,p2,p1,p0,a3,a2,a1,a0) \ { unsigned long long c0,c1,c2,c3; \ __mul_10x64(p0,c0,a0,0ull); \ __mul_10x64(p1,c1,a1,c0); \ __mul_10x64(p2,c2,a2,c1); \ __mul_10x64(p3,c3,a3,c2); \ } // Likewise a 384-bit number #define __mul_10x384_to_384(p5,p4,p3,p2,p1,p0,a5,a4,a3,a2,a1,a0) \ { unsigned long long c0,c1,c2,c3,c4,c5; \ __mul_10x64(p0,c0,a0,0ull); \ __mul_10x64(p1,c1,a1,c0); \ __mul_10x64(p2,c2,a2,c1); \ __mul_10x64(p3,c3,a3,c2); \ __mul_10x64(p4,c4,a4,c3); \ __mul_10x64(p5,c5,a5,c4); \ } // Set up indices for low and high parts, depending on the endian-ness. // Note that this only affects 128-bit input and output operands, not any // of the internal workings, where w[0] is always the low-order part. #if BID_BIG_ENDIAN typedef union { struct { unsigned short hi; unsigned short lo1; unsigned short lo2; unsigned short lo3; unsigned short lo4; unsigned short pad; unsigned pad128; } i; BINARY80 f; } BID_BINARY80BID_LDOUBLE; #else typedef union { struct { unsigned short lo4; unsigned short lo3; unsigned short lo2; unsigned short lo1; unsigned short hi; unsigned short pad; unsigned pad128; } i; BINARY80 f; } BID_BINARY80BID_LDOUBLE; #endif // Pack and return binary floating-point numbers from raw fields #if !DECIMAL_CALL_BY_REFERENCE #define return_binary32(s,e,c) \ { union {BID_UINT32 i; float f; } x_out; \ x_out.i = (((BID_UINT32)(s)) << 31) + \ (((BID_UINT32)(e)) << 23) + \ (c); \ return x_out.f; \ } #else #define return_binary32(s,e,c) \ { union {BID_UINT32 i; float f; } x_out; \ x_out.i = (((BID_UINT32)(s)) << 31) + \ (((BID_UINT32)(e)) << 23) + \ (c); \ *pres = x_out.f; \ return; \ } #endif #if !DECIMAL_CALL_BY_REFERENCE #define return_binary64(s,e,c) \ { union {BID_UINT64 i; double f; } x_out; \ x_out.i = (((BID_UINT64)(s)) << 63) + \ (((BID_UINT64)(e)) << 52) + \ (c); \ return x_out.f; \ } #else #define return_binary64(s,e,c) \ { union {BID_UINT64 i; double f; } x_out; \ x_out.i = (((BID_UINT64)(s)) << 63) + \ (((BID_UINT64)(e)) << 52) + \ (c); \ *pres = x_out.f; \ return; \ } #endif #if !DECIMAL_CALL_BY_REFERENCE #define return_binary80(s,e,c) \ { BID_BINARY80BID_LDOUBLE x_out; \ x_out.i.pad128 = 0; \ x_out.i.pad = 0; \ x_out.i.lo4 = (c)&0xffff; \ x_out.i.lo3 = ((c)&0xffff0000) >> 16; \ x_out.i.lo2 = ((c)&0xffff00000000ull) >> 32; \ x_out.i.lo1 = ((c)&0xffff000000000000ull) >> 48; \ x_out.i.hi = (((BID_UINT64)(s)) << 15) + \ (e); \ return x_out.f; \ } #else #define return_binary80(s,e,c) \ { BID_BINARY80BID_LDOUBLE x_out; \ x_out.i.pad128 = 0; \ x_out.i.pad = 0; \ x_out.i.lo4 = (c)&0xffff; \ x_out.i.lo3 = ((c)&0xffff0000) >> 16; \ x_out.i.lo2 = ((c)&0xffff00000000ull) >> 32; \ x_out.i.lo1 = ((c)&0xffff000000000000ull) >> 48; \ x_out.i.hi = ((s) << 15) + \ (e); \ *pres = x_out.f; \ return; \ } #endif #if !DECIMAL_CALL_BY_REFERENCE #define return_binary128(s,e,c_hi,c_lo) \ { union {BID_UINT128 i; BINARY128 f; } x_out; \ x_out.i.w[BID_LOW_128W] = (c_lo); \ x_out.i.w[BID_HIGH_128W] = (((BID_UINT64)(s)) << 63) + \ (((BID_UINT64)(e)) << 48) + \ (c_hi); \ return x_out.f; \ } #else #define return_binary128(s,e,c_hi,c_lo) \ { union {BID_UINT128 i; BINARY128 f; } x_out; \ x_out.i.w[BID_LOW_128W] = (c_lo); \ x_out.i.w[BID_HIGH_128W] = (((BID_UINT64)(s)) << 63) + \ (((BID_UINT64)(e)) << 48) + \ (c_hi); \ *pres = x_out.f; \ return; \ } #endif // Special cases of returning zero, infinity, NaN as binary FP // Take parameters for the sign, and for NaN the significand #define return_binary32_zero(s) return_binary32(s,0,0) #define return_binary32_inf(s) return_binary32(s,255,0) #define return_binary32_nan(s,c_hi,c_lo) \ return_binary32(s,255,(c_hi>>42)+(1ul<<22)) #define return_binary64_zero(s) return_binary64(s,0,0) #define return_binary64_inf(s) return_binary64(s,2047,0) #define return_binary64_nan(s,c_hi,c_lo) \ return_binary64(s,2047,(c_hi>>13)+(1ull<<51)) #define return_binary80_zero(s) return_binary80(s,0,0) #define return_binary80_inf(s) return_binary80(s,32767,(1ull<<63)) #define return_binary80_nan(s,c_hi,c_lo) \ return_binary80(s,32767,(c_hi>>2)+(3ull<<62)) #define return_binary128_zero(s) return_binary128(s,0,0,0) #define return_binary128_inf(s) return_binary128(s,32767,0,0) #define return_binary128_nan(s,c_hi,c_lo) \ return_binary128(s,32767,(c_hi>>17)+(1ull<<47),((c_lo>>17)+(c_hi<<47))) // Return finite values of maximal magnitude in the various formats #define return_binary32_max(s) return_binary32(s,254,((1ul<<23)-1ul)) #define return_binary64_max(s) return_binary64(s,2046,((1ull<<52)-1ull)) #define return_binary80_max(s) return_binary80(s,32766,0xFFFFFFFFFFFFFFFFull) #define return_binary128_max(s) \ return_binary128(s,32766,((1ull<<48)-1ull),0xFFFFFFFFFFFFFFFFull) #define return_bid32_max(s) return_bid32(s,191,9999999ul) #define return_bid64_max(s) return_bid64(s,767,9999999999999999ull) #define return_bid128_max(s) \ return_bid128(s,12287,542101086242752ull,4003012203950112767ull) // Handle overflow by either infinity or maximal value as appropriate #define return_binary32_ovf(s) \ { if ((rnd_mode==BID_ROUNDING_TO_ZERO) || \ (rnd_mode==((s!=0) ? BID_ROUNDING_UP : BID_ROUNDING_DOWN))) \ return_binary32_max(s) \ else return_binary32_inf(s) \ } #define return_binary64_ovf(s) \ { if ((rnd_mode==BID_ROUNDING_TO_ZERO) || \ (rnd_mode==((s!=0) ? BID_ROUNDING_UP : BID_ROUNDING_DOWN))) \ return_binary64_max(s) \ else return_binary64_inf(s) \ } #define return_binary80_ovf(s) \ { if ((rnd_mode==BID_ROUNDING_TO_ZERO) || \ (rnd_mode==((s!=0) ? BID_ROUNDING_UP : BID_ROUNDING_DOWN))) \ return_binary80_max(s) \ else return_binary80_inf(s) \ } #define return_binary128_ovf(s) \ { if ((rnd_mode==BID_ROUNDING_TO_ZERO) || \ (rnd_mode==((s!=0) ? BID_ROUNDING_UP : BID_ROUNDING_DOWN))) \ return_binary128_max(s) \ else return_binary128_inf(s) \ } #define return_bid32_ovf(s) \ { if ((rnd_mode==BID_ROUNDING_TO_ZERO) || \ (rnd_mode==((s!=0) ? BID_ROUNDING_UP : BID_ROUNDING_DOWN))) \ return_bid32_max(s) \ else return_bid32_inf(s) \ } #define return_bid64_ovf(s) \ { if ((rnd_mode==BID_ROUNDING_TO_ZERO) || \ (rnd_mode==((s!=0) ? BID_ROUNDING_UP : BID_ROUNDING_DOWN))) \ return_bid64_max(s) \ else return_bid64_inf(s) \ } #define return_bid128_ovf(s) \ { if ((rnd_mode==BID_ROUNDING_TO_ZERO) || \ (rnd_mode==((s!=0) ? BID_ROUNDING_UP : BID_ROUNDING_DOWN))) \ return_bid128_max(s) \ else return_bid128_inf(s) \ } // Unpack binary floating-point number x into // // int s (sign in the LSB) // int e (true "integer" exponent) // c (normalized coefficient with explicit 1 bit) // t (trailing zero count, valid in normalized case only) // [c_hi,c_lo in the case of quad] // // Call the given zero, infinity or nan macros if appropriate #define unpack_binary32(x,s,e,c,t,zero,inf,nan) \ { union { BID_UINT32 i; float f; } x_in; \ x_in.f = x; \ c = x_in.i; \ e = (c >> 23) & ((1ull<<8)-1); \ s = c >> 31; \ c = c & ((1ull<<23)-1); \ if (e == 0) \ { int l; \ if (c == 0) zero; \ l = clz32(c) - (32 - 24); \ c = c << l; \ e = -(l + 149); \ t = 0; \ __set_status_flags(pfpsf,BID_DENORMAL_EXCEPTION); \ } \ else if (e == ((1ull<<8)-1)) \ { if (c == 0) inf; \ if ((c&(1ul<<22))==0) __set_status_flags(pfpsf,BID_INVALID_EXCEPTION); \ nan(s,(((unsigned long long) c)) << 42,0ull) \ } \ else \ { c += 1ull<<23; \ t = ctz32(c); \ e -= 150; \ } \ } #define unpack_binary64(x,s,e,c,t,zero,inf,nan) \ { union { BID_UINT64 i; double f; } x_in; \ x_in.f = x; \ c = x_in.i; \ e = (c >> 52) & ((1ull<<11)-1); \ s = c >> 63; \ c = c & ((1ull<<52)-1); \ if (e == 0) \ { int l; \ if (c == 0) zero; \ l = clz64(c) - (64 - 53); \ c = c << l; \ e = -(l + 1074); \ t = 0; \ __set_status_flags(pfpsf,BID_DENORMAL_EXCEPTION); \ } \ else if (e == ((1ull<<11)-1)) \ { if (c == 0) inf; \ if ((c&(1ull<<51))==0) __set_status_flags(pfpsf,BID_INVALID_EXCEPTION);\ nan(s,(((unsigned long long) c) << 13),0ull) \ } \ else \ { c += 1ull<<52; \ t = ctz64(c); \ e -= 1075; \ } \ } #define unpack_binary80(x,s,e,c,t,zero,inf,nan) \ { BID_BINARY80BID_LDOUBLE x_in; \ x_in.f = x; \ c = x_in.i.lo4 + ((BID_UINT64)x_in.i.lo3 << 16) + \ ((BID_UINT64)x_in.i.lo2 << 32) + ((BID_UINT64)x_in.i.lo1 << 48); \ e = x_in.i.hi; \ s = e >> 15; \ e = (e & ((1<<15)-1)); \ if (e == 0) \ { int l; \ if (c == 0) zero; \ l = clz64(c); \ c = c << l; \ e -= (l + 16445); \ t = 0; \ __set_status_flags(pfpsf,BID_DENORMAL_EXCEPTION); \ } \ else if (e == ((1ull<<15)-1)) \ { if ((c & ((1ull<<63)-1)) == 0) inf; \ if ((c&(1ull<<62))==0) __set_status_flags(pfpsf,BID_INVALID_EXCEPTION);\ nan(s,(((unsigned long long) c) << 2),0ull) \ } \ else \ { t = ctz64(c); \ e -= 16446; \ } \ } #define unpack_binary128(x,s,e,c_hi,c_lo,t,zero,inf,nan) \ { union { BID_UINT128 i; BINARY128 f; } x_in; \ x_in.f = x; \ c_lo = x_in.i.w[BID_LOW_128W]; \ c_hi = x_in.i.w[BID_HIGH_128W]; \ e = (c_hi >> 48) & ((1ull<<15)-1); \ s = c_hi >> 63; \ c_hi = c_hi & ((1ull<<48)-1); \ if (e == 0) \ { int l; \ if ((c_hi == 0) && (c_lo == 0)) zero; \ l = clz128(c_hi,c_lo) - (128 - 113); \ sll128(c_hi,c_lo,l); \ e = -(l + 16494); \ t = 0; \ __set_status_flags(pfpsf,BID_DENORMAL_EXCEPTION); \ } \ else if (e == ((1ull<<15)-1)) \ { if ((c_hi == 0) && (c_lo == 0)) inf; \ if ((c_hi&(1ull<<47))==0) __set_status_flags(pfpsf,BID_INVALID_EXCEPTION);\ nan(s,((((unsigned long long) c_hi) << 17) + \ (((unsigned long long) c_lo) >> 47)), \ (((unsigned long long) c_lo) << 17)) \ } \ else \ { c_hi += 1ull<<48; \ t = ctz128(c_hi,c_lo); \ e -= 16495; \ } \ } // Pack and return decimal number from raw fields #if !DECIMAL_CALL_BY_REFERENCE #define return_bid32(s,e,c) \ { if ((BID_UINT32) (c) < (1ul<<23)) \ return (((BID_UINT32) (s) << 31) + ((BID_UINT32) (e) << 23) + (BID_UINT32) (c)); \ else \ return (((BID_UINT32) (s) << 31) + ((0x3ull<<29) - (1ull<<23)) + \ ((BID_UINT32) (e) << 21) + (BID_UINT32) (c)); \ } #else #define return_bid32(s,e,c) \ { if ((BID_UINT32) (c) < (1ul<<23)) \ *pres = (((BID_UINT32) (s) << 31) + ((BID_UINT32) (e) << 23) + (BID_UINT32) (c)); \ else \ *pres = (((BID_UINT32) (s) << 31) + ((0x3ull<<29) - (1ull<<23)) + \ ((BID_UINT32) (e) << 21) + (BID_UINT32) (c)); \ return; \ } #endif #if !DECIMAL_CALL_BY_REFERENCE #define return_bid64(s,e,c) \ { if ((c) < (1ull<<53)) \ return (((BID_UINT64) (s) << 63) + ((BID_UINT64) (e) << 53) + (c)); \ else \ return (((BID_UINT64) (s) << 63) + ((0x3ull<<61) - (1ull<<53)) + \ ((BID_UINT64) (e) << 51) + (c)); \ } #else #define return_bid64(s,e,c) \ { if ((c) < (1ull<<53)) \ *pres = (((BID_UINT64) (s) << 63) + ((BID_UINT64) (e) << 53) + (c)); \ else \ *pres = (((BID_UINT64) (s) << 63) + ((0x3ull<<61) - (1ull<<53)) + \ ((BID_UINT64) (e) << 51) + (c)); \ return; \ } #endif #if !DECIMAL_CALL_BY_REFERENCE #define return_bid128(s,e,c_hi,c_lo) \ { BID_UINT128 x_out; \ x_out.w[BID_LOW_128W] = c_lo; \ x_out.w[BID_HIGH_128W] = ((BID_UINT64) (s) << 63) + ((BID_UINT64) (e) << 49) + \ (c_hi); \ return x_out; \ } #else #define return_bid128(s,e,c_hi,c_lo) \ { BID_UINT128 x_out; \ x_out.w[BID_LOW_128W] = c_lo; \ x_out.w[BID_HIGH_128W] = ((BID_UINT64) (s) << 63) + ((BID_UINT64) (e) << 49) + (c_hi); \ *pres = x_out; \ return; \ } #endif // Special cases of returning zero, infinity, NaN as decimal FP // Take parameters for the sign, and for NaN the significand #define return_bid32_zero(s) return_bid32(s,101,0) #define return_bid32_inf(s) return_bid32(s,(0xF<<4),0) #define return_bid32_nan(s,c_hi,c_lo) \ return_bid32(s,(0x1F<<3),(((c_hi>>44) > 999999ul) ? 0 : (c_hi>>44))); #define return_bid64_zero(s) return_bid64(s,398,0) #define return_bid64_inf(s) return_bid64(s,(0xF<<6),0) #define return_bid64_nan(s,c_hi,c_lo) \ return_bid64(s,(0x1F<<5), \ (((c_hi>>14) > 999999999999999ull) ? 0 : (c_hi>>14))); #define return_bid128_zero(s) return_bid128(s,6176,0,0) #define return_bid128_inf(s) return_bid128(s,(0xF<<10),0,0) #define return_bid128_nan(s,c_hi,c_lo) \ { if (lt128(54210108624275ull,4089650035136921599ull, \ (c_hi>>18),((c_lo>>18)+(c_hi<<46)))) \ return_bid128(s,(0x1F<<9),0ull,0ull) \ else return_bid128(s,(0x1F<<9),(c_hi>>18),((c_lo>>18)+(c_hi<<46))) \ } // Unpack decimal floating-point number x into sign,exponent,coefficient // In special cases, call the macros provided // Coefficient is normalized in the binary sense with postcorrection k, // so that x = 10^e * c / 2^k and the range of c is: // // 2^23 <= c < 2^24 (decimal32) // 2^53 <= c < 2^54 (decimal64) // 2^112 <= c < 2^113 (decimal128) #define unpack_bid32(x,s,e,k,c,zero,inf,nan) \ { s = x >> 31; \ if ((x & (3ull<<29)) == (3ull<<29)) \ { if ((x & (0xFull<<27)) == (0xFull<<27)) \ { if ((x & (0x1Full<<26)) != (0x1Full<<26)) inf; \ if ((x & (1ul<<25))!=0) __set_status_flags(pfpsf,BID_INVALID_EXCEPTION); \ nan(s,((((x) & 0xFFFFFul) > 999999ul) ? 0 : \ (((unsigned long long) x) << 44)),0ull); \ } \ e = ((x >> 21) & ((1ull<<8)-1)) - 101; \ c = (1ull<<23) + (x & ((1ull<<21)-1)); \ if ((unsigned long)(c) > 9999999ul) zero; \ k = 0; \ } \ else \ { e = ((x >> 23) & ((1ull<<8)-1)) - 101; \ c = x & ((1ull<<23)-1); \ if (c == 0) zero; \ k = clz32_nz(c) - 8; \ c = c << k; \ } \ } #define unpack_bid64(x,s,e,k,c,zero,inf,nan) \ { s = x >> 63; \ if ((x & (3ull<<61)) == (3ull<<61)) \ { if ((x & (0xFull<<59)) == (0xFull<<59)) \ { if ((x & (0x1Full<<58)) != (0x1Full<<58)) inf; \ if ((x & (1ull<<57))!=0) __set_status_flags(pfpsf,BID_INVALID_EXCEPTION); \ nan(s,((((x) & 0x3FFFFFFFFFFFFull) > 999999999999999ull) ? 0 : \ (((unsigned long long) x) << 14)),0ull); \ } \ e = ((x >> 51) & ((1ull<<10)-1)) - 398; \ c = (1ull<<53) + (x & ((1ull<<51)-1)); \ if ((unsigned long long)(c) > 9999999999999999ull) zero; \ k = 0; \ } \ else \ { e = ((x >> 53) & ((1ull<<10)-1)) - 398; \ c = x & ((1ull<<53)-1); \ if (c == 0) zero; \ k = clz64_nz(c) - 10; \ c = c << k; \ } \ } #define unpack_bid128(x,s,e,k,c,zero,inf,nan) \ { s = x.w[BID_HIGH_128W] >> 63; \ if ((x.w[BID_HIGH_128W] & (3ull<<61)) == (3ull<<61)) \ { if ((x.w[BID_HIGH_128W] & (0xFull<<59)) == (0xFull<<59)) \ { if ((x.w[BID_HIGH_128W] & (0x1Full<<58)) != (0x1Full<<58)) inf; \ if ((x.w[BID_HIGH_128W] & (1ull<<57))!=0) \ __set_status_flags(pfpsf,BID_INVALID_EXCEPTION); \ if (lt128(54210108624275ull,4089650035136921599ull, \ (x.w[BID_HIGH_128W] & 0x3FFFFFFFFFFFull),x.w[BID_LOW_128W])) \ nan(s,0ull,0ull); \ nan(s,((((unsigned long long) x.w[BID_HIGH_128W]) << 18) + \ (((unsigned long long) x.w[BID_LOW_128W]) >> 46)), \ (((unsigned long long) x.w[BID_LOW_128W]) << 18)); \ } \ zero; \ } \ else \ { e = ((x.w[BID_HIGH_128W] >> 49) & ((1ull<<14)-1)) - 6176; \ c.w[1] = x.w[BID_HIGH_128W] & ((1ull<<49)-1); \ c.w[0] = x.w[BID_LOW_128W]; \ if (lt128(542101086242752ull,4003012203950112767ull, \ c.w[1],c.w[0])) \ { c.w[1] = 0ull; c.w[0] = 0ull; } \ if ((c.w[1] == 0) && (c.w[0] == 0)) zero; \ k = clz128_nz(c.w[1],c.w[0]) - 15; \ sll128(c.w[1],c.w[0],k); \ } \ } // Rounding boundaries table, indexed by // 4 * rounding_mode + 2 * sign + lsb of truncation // We round up if the round/sticky data is strictly > this boundary // // NB: This depends on the particular values of the rounding mode // numbers, which are supposed to be defined as here: // // #define BID_ROUNDING_TO_NEAREST 0x00000 // #define BID_ROUNDING_DOWN 0x00001 // #define BID_ROUNDING_UP 0x00002 // #define BID_ROUNDING_TO_ZERO 0x00003 // #define BID_ROUNDING_TIES_AWAY 0x00004 // // Some of the shortcuts below in "underflow after rounding" also use // the concrete values. // // So we add a directive here to double-check that this is the case #if ((BID_ROUNDING_TO_NEAREST!=0) || (BID_ROUNDING_DOWN!=1) || \ (BID_ROUNDING_UP!=2) || (BID_ROUNDING_TO_ZERO!=3) || \ (BID_ROUNDING_TIES_AWAY!=4)) #error "Rounding mode numbers don't match tables for binary/decimal conversion" #endif static const BID_UINT128 bid_roundbound_128[] = { {{0ull, (1ull << 63)}}, // BID_ROUNDING_TO_NEAREST | positive | even {{~0ull, (1ull << 63) - 1}}, // BID_ROUNDING_TO_NEAREST | positive | odd {{0ull, (1ull << 63)}}, // BID_ROUNDING_TO_NEAREST | negative | even {{~0ull, (1ull << 63) - 1}}, // BID_ROUNDING_TO_NEAREST | negative | odd {{~0ull, ~0ull}}, // BID_ROUNDING_DOWN | positive | even {{~0ull, ~0ull}}, // BID_ROUNDING_DOWN | positive | odd {{0ull, 0ull}}, // BID_ROUNDING_DOWN | negative | even {{0ull, 0ull}}, // BID_ROUNDING_DOWN | negative | odd {{0ull, 0ull}}, // BID_ROUNDING_UP | positive | even {{0ull, 0ull}}, // BID_ROUNDING_UP | positive | odd {{~0ull, ~0ull}}, // BID_ROUNDING_UP | negative | even {{~0ull, ~0ull}}, // BID_ROUNDING_UP | negative | odd {{~0ull, ~0ull}}, // BID_ROUNDING_TO_ZERO | positive | even {{~0ull, ~0ull}}, // BID_ROUNDING_TO_ZERO | positive | odd {{~0ull, ~0ull}}, // BID_ROUNDING_TO_ZERO | negative | even {{~0ull, ~0ull}}, // BID_ROUNDING_TO_ZERO | negative | odd {{~0ull, (1ull << 63) - 1}}, // BID_ROUNDING_TIES_AWAY | positive | even {{~0ull, (1ull << 63) - 1}}, // BID_ROUNDING_TIES_AWAY | positive | odd {{~0ull, (1ull << 63) - 1}}, // BID_ROUNDING_TIES_AWAY | negative | even {{~0ull, (1ull << 63) - 1}} // BID_ROUNDING_TIES_AWAY | negative | odd }; // Table of powers of 5 static const BID_UINT128 bid_power_five[] = { {{1ull, 0ull}}, {{5ull, 0ull}}, {{25ull, 0ull}}, {{125ull, 0ull}}, {{625ull, 0ull}}, {{3125ull, 0ull}}, {{15625ull, 0ull}}, {{78125ull, 0ull}}, {{390625ull, 0ull}}, {{1953125ull, 0ull}}, {{9765625ull, 0ull}}, {{48828125ull, 0ull}}, {{244140625ull, 0ull}}, {{1220703125ull, 0ull}}, {{6103515625ull, 0ull}}, {{30517578125ull, 0ull}}, {{152587890625ull, 0ull}}, {{762939453125ull, 0ull}}, {{3814697265625ull, 0ull}}, {{19073486328125ull, 0ull}}, {{95367431640625ull, 0ull}}, {{476837158203125ull, 0ull}}, {{2384185791015625ull, 0ull}}, {{11920928955078125ull, 0ull}}, {{59604644775390625ull, 0ull}}, {{298023223876953125ull, 0ull}}, {{1490116119384765625ull, 0ull}}, {{7450580596923828125ull, 0ull}}, {{359414837200037393ull, 2ull}}, {{1797074186000186965ull, 10ull}}, {{8985370930000934825ull, 50ull}}, {{8033366502585570893ull, 252ull}}, {{3273344365508751233ull, 1262ull}}, {{16366721827543756165ull, 6310ull}}, {{8046632842880574361ull, 31554ull}}, {{3339676066983768573ull, 157772ull}}, {{16698380334918842865ull, 788860ull}}, {{9704925379756007861ull, 3944304ull}}, {{11631138751360936073ull, 19721522ull}}, {{2815461535676025517ull, 98607613ull}}, {{14077307678380127585ull, 493038065ull}}, {{15046306170771983077ull, 2465190328ull}}, {{1444554559021708921ull, 12325951644ull}}, {{7222772795108544605ull, 61629758220ull}}, {{17667119901833171409ull, 308148791101ull}}, {{14548623214327650581ull, 1540743955509ull}}, {{17402883850509598057ull, 7703719777548ull}}, {{13227442957709783821ull, 38518598887744ull}}, {{10796982567420264257ull, 192592994438723ull}} }; // Tables of values for the various conversions: // // exponents: table of output exponents // breakpoints: test values to decide between two possible exponents // multipliers1/multipliers2: corresponding reciprocal multipliers // coefflimits: used in exactness checks // static const BID_UINT128 bid_breakpoints_binary32[] = { {{17291492046443221751ull, 474778387287989ull}}, {{17522542451896487724ull, 379822709830391ull}}, {{10328685146775279856ull, 303858167864313ull}}, {{12836547420098537447ull, 486173068582901ull}}, {{6579889121336919634ull, 388938454866321ull}}, {{1574562482327625384ull, 311150763893057ull}}, {{6208648786466110938ull, 497841222228891ull}}, {{1277570214430978427ull, 398272977783113ull}}, {{8400753801028603388ull, 318618382226490ull}}, {{13441206081645765421ull, 509789411562384ull}}, {{14442313680058522660ull, 407831529249907ull}}, {{4175153314562997481ull, 326265223399926ull}}, {{17748291747526526940ull, 522024357439881ull}}, {{10509284583279311229ull, 417619485951905ull}}, {{8407427666623448983ull, 334095588761524ull}}, {{2383837822371787403ull, 534552942018439ull}}, {{5596419072639340246ull, 427642353614751ull}}, {{787786443369561873ull, 342113882891801ull}}, {{12328504753617029967ull, 547382212626881ull}}, {{6173454988151713650ull, 437905770101505ull}}, {{4938763990521370920ull, 350324616081204ull}}, {{15280720014318014119ull, 560519385729926ull}}, {{8535227196712500972ull, 448415508583941ull}}, {{3138832942628090454ull, 358732406867153ull}}, {{9889763983586293010ull, 286985925493722ull}}, {{1066227114770427523ull, 459177480789956ull}}, {{15610376950783983311ull, 367341984631964ull}}, {{16177650375369096972ull, 293873587705571ull}}, {{58798897397182893ull, 470197740328915ull}}, {{47039117917746314ull, 376158192263132ull}}, {{11105677738559928021ull, 300926553810505ull}}, {{17769084381695884834ull, 481482486096808ull}}, {{3147221061130976897ull, 385185988877447ull}}, {{13585823293130512487ull, 308148791101957ull}}, {{6979922010041178687ull, 493038065763132ull}}, {{16651984052258673919ull, 394430452610505ull}}, {{13321587241806939135ull, 315544362088404ull}}, {{10246493142665371647ull, 504870979341447ull}}, {{818496884648476671ull, 403896783473158ull}}, {{8033495137202601983ull, 323117426778526ull}}, {{5474894590040342527ull, 516987882845642ull}}, {{15447962116258004991ull, 413590306276513ull}}, {{1290323248780673023ull, 330872245021211ull}}, {{13132563642274807807ull, 529395592033937ull}}, {{3127353284336025599ull, 423516473627150ull}}, {{2501882627468820479ull, 338813178901720ull}}, {{4003012203950112767ull, 542101086242752ull}}, {{14270456207385821183ull, 433680868994201ull}}, {{7727016151166746623ull, 346944695195361ull}}, {{4984528212382973951ull, 555111512312578ull}}, {{11366320199390199807ull, 444089209850062ull}}, {{1714358530028339199ull, 355271367880050ull}}, {{1371486824022671359ull, 284217094304040ull}}, {{2194378918436274175ull, 454747350886464ull}}, {{5444851949490929663ull, 363797880709171ull}}, {{666532744850833407ull, 291038304567337ull}}, {{4755801206503243775ull, 465661287307739ull}}, {{7493989779944505343ull, 372529029846191ull}}, {{2305843009213693951ull, 298023223876953ull}}, {{18446744073709551615ull, 476837158203124ull}}, {{18446744073709551615ull, 381469726562499ull}}, {{18446744073709551615ull, 305175781249999ull}}, {{18446744073709551615ull, 488281249999999ull}}, {{18446744073709551615ull, 390624999999999ull}}, {{18446744073709551615ull, 312499999999999ull}}, {{18446744073709551615ull, 499999999999999ull}}, {{18446744073709551615ull, 399999999999999ull}}, {{18446744073709551615ull, 319999999999999ull}}, {{18446744073709551615ull, 511999999999999ull}}, {{18446744073709551615ull, 409599999999999ull}}, {{18446744073709551615ull, 327679999999999ull}}, {{18446744073709551615ull, 524287999999999ull}}, {{18446744073709551615ull, 419430399999999ull}}, {{18446744073709551615ull, 335544319999999ull}}, {{18446744073709551615ull, 536870911999999ull}}, {{18446744073709551615ull, 429496729599999ull}}, {{18446744073709551615ull, 343597383679999ull}}, {{18446744073709551615ull, 549755813887999ull}}, {{18446744073709551615ull, 439804651110399ull}}, {{18446744073709551615ull, 351843720888319ull}}, {{18446744073709551615ull, 281474976710655ull}}, {{11068046444225730969ull, 450359962737049ull}}, {{12543785970122495098ull, 360287970189639ull}}, {{13724377590839906402ull, 288230376151711ull}}, {{14580306515860029597ull, 461168601842738ull}}, {{596198768462292708ull, 368934881474191ull}}, {{15234354273737475459ull, 295147905179352ull}}, {{9617571579012319442ull, 472236648286964ull}}, {{11383406077951765876ull, 377789318629571ull}}, {{5417376047619502378ull, 302231454903657ull}}, {{12357150490933114128ull, 483570327845851ull}}, {{6196371578004580979ull, 386856262276681ull}}, {{1267748447661754460ull, 309485009821345ull}}, {{2028397516258807136ull, 495176015714152ull}}, {{12690764457232776679ull, 396140812571321ull}}, {{6463262751044311020ull, 316912650057057ull}}, {{14030569216412807955ull, 507060240091291ull}}, {{7535106558388336041ull, 405648192073033ull}}, {{13406782876194489479ull, 324518553658426ull}}, {{14072154972427362520ull, 519229685853482ull}}, {{3879026348458069369ull, 415383748682786ull}}, {{17860616337734096788ull, 332306998946228ull}}, {{6440893251923092922ull, 531691198313966ull}}, {{1463365786796564015ull, 425352958651173ull}}, {{8549390258921071858ull, 340282366920938ull}}, {{9989675599531804650ull, 544451787073501ull}}, {{4302391664883533397ull, 435561429658801ull}}, {{18199308590874468010ull, 348449143727040ull}}, {{10672149671689597200ull, 557518629963265ull}}, {{8537719737351677760ull, 446014903970612ull}}, {{17898222234107073178ull, 356811923176489ull}}, {{18007926602027568865ull, 285449538541191ull}}, {{2987240860050737922ull, 456719261665907ull}}, {{13457839132266321307ull, 365375409332725ull}}, {{10766271305813057046ull, 292300327466180ull}}, {{17226034089300891273ull, 467680523945888ull}}, {{2712780827214982049ull, 374144419156711ull}}, {{16927619920739626932ull, 299315535325368ull}}, {{4948098984731941152ull, 478904856520590ull}}, {{3958479187785552922ull, 383123885216472ull}} }; static const int bid_exponents_binary32[] = { -27, -24, -21, -17, -14, -11, -7, -4, -1, 3, 6, 9, 13, 16, 19, 23, 26, 29, 33, 36, 39, 43, 46, 49, 52, 56, 59, 62, 66, 69, 72, 76, 79, 82, 86, 89, 92, 96, 99, 102, 106, 109, 112, 116, 119, 122, 126, 129, 132, 136, 139, 142, 145, 149, 152, 155, 159, 162, 165, 169, 172, 175, 179, 182, 185, 189, 192, 195, 199, 202, 205, 209, 212, 215, 219, 222, 225, 229, 232, 235, 238, 242, 245, 248, 252, 255, 258, 262, 265, 268, 272, 275, 278, 282, 285, 288, 292, 295, 298, 302, 305, 308, 312, 315, 318, 322, 325, 328, 332, 335, 338, 341, 345, 348, 351, 355, 358, 361, 365, 368, }; static const BID_UINT256 bid_multipliers1_binary32[] = { {{6013890151484785128ull, 7481633477359093489ull, 655737588518723529ull, 651851512427ull}}, {{12129048707783369314ull, 13963727865126254765ull, 14654730040930568123ull, 814814390533ull}}, {{1326252829447047930ull, 12842973812980430553ull, 4483354495881046442ull, 1018517988167ull}}, {{12358123064472874716ull, 12638544651540156999ull, 9719625587566735882ull, 636573742604ull}}, {{10835967812163705491ull, 6574808777570420441ull, 12149531984458419853ull, 795717178255ull}}, {{18156645783632019768ull, 12830196990390413455ull, 10575228962145636912ull, 994646472819ull}}, {{18265432642411094211ull, 8018873118994008409ull, 4303675092127329118ull, 621654045512ull}}, {{8996732747731704052ull, 800219361887734704ull, 5379593865159161398ull, 777067556890ull}}, {{11245915934664630065ull, 10223646239214444188ull, 15947864368303727555ull, 971334446112ull}}, {{16252069496020169599ull, 4083935890295333665ull, 9967415230189829722ull, 607084028820ull}}, {{6480028814743048286ull, 14328291899723942890ull, 12459269037737287152ull, 758855036025ull}}, {{17323408055283586166ull, 17910364874654928612ull, 1739028241889445228ull, 948568795032ull}}, {{1603757997697465546ull, 1970606009804554575ull, 1086892651180903268ull, 592855496895ull}}, {{15839755552403995644ull, 2463257512255693218ull, 15193673869258292797ull, 741069371118ull}}, {{10576322403650218747ull, 7690757908747004427ull, 9768720299718090188ull, 926336713898ull}}, {{4304358493067692765ull, 14030095729821653575ull, 10717136205751194271ull, 578960446186ull}}, {{768762097907228052ull, 12925933643849679065ull, 4173048220334217031ull, 723700557733ull}}, {{5572638640811422969ull, 11545731036384710927ull, 9827996293845159193ull, 904625697166ull}}, {{10400428178148221212ull, 298552870099362473ull, 1530811665225836592ull, 565391060729ull}}, {{17612221241112664419ull, 373191087624203091ull, 6525200599959683644ull, 706738825911ull}}, {{17403590532963442619ull, 466488859530253864ull, 3544814731522216651ull, 883423532389ull}}, {{10877244083102151637ull, 16432456601702266329ull, 4521352216415079358ull, 552139707743ull}}, {{18208241122305077450ull, 11317198715273057103ull, 1040004252091461294ull, 690174634679ull}}, {{18148615384453958909ull, 4923126357236545571ull, 15135063370396490330ull, 862718293348ull}}, {{18074083212140060732ull, 15377279983400457772ull, 472085139286061296ull, 1078397866686ull}}, {{2072929970732762150ull, 9610799989625286108ull, 14130111267335952022ull, 673998666678ull}}, {{2591162463415952687ull, 2790127950176831827ull, 8439267047315164220ull, 842498333348ull}}, {{17074011134552104570ull, 3487659937721039783ull, 10549083809143955275ull, 1053122916685ull}}, {{17588785986736147213ull, 18320688525571507528ull, 8899020389928665998ull, 658201822928ull}}, {{3539238409710632400ull, 13677488620109608603ull, 11123775487410832498ull, 822752278660ull}}, {{18259106067420454212ull, 7873488738282234945ull, 13904719359263540623ull, 1028440348325ull}}, {{4494412264496702026ull, 11838459489067478697ull, 10996292608753406841ull, 642775217703ull}}, {{10229701349048265437ull, 963016306052184659ull, 9133679742514370648ull, 803469022129ull}}, {{8175440667882943892ull, 1203770382565230824ull, 16028785696570351214ull, 1004336277661ull}}, {{5109650417426839933ull, 14587414544385432977ull, 12323834069570163460ull, 627710173538ull}}, {{10998749040210937820ull, 18234268180481791221ull, 6181420550107928517ull, 784637716923ull}}, {{18360122318691060179ull, 8957777170320075314ull, 3115089669207522743ull, 980797146154ull}}, {{16086762467609300516ull, 12516139759091128927ull, 6558617061682089618ull, 612998216346ull}}, {{15496767066084237741ull, 6421802662009135351ull, 17421643363957387831ull, 766247770432ull}}, {{14759272814177909272ull, 3415567309084031285ull, 3330310131237183173ull, 957809713041ull}}, {{11530388518074887247ull, 4440572577391213505ull, 13610658878091709243ull, 598631070650ull}}, {{577927592311445347ull, 939029703311628978ull, 7789951560759860746ull, 748288838313ull}}, {{9945781527244082491ull, 10397159165994312030ull, 14349125469377213836ull, 935361047891ull}}, {{1604427436100163653ull, 15721596515601220827ull, 6662360409147064695ull, 584600654932ull}}, {{15840592350407368278ull, 15040309626074138129ull, 8327950511433830869ull, 730750818665ull}}, {{5965682382727046636ull, 4965328977310508950ull, 15021624157719676491ull, 913438523331ull}}, {{17563609544486567859ull, 797487601605374141ull, 7082672089361103855ull, 570899077082ull}}, {{8119453875326046112ull, 14831917557288881389ull, 18076712148556155626ull, 713623846352ull}}, {{14761003362584945544ull, 9316524909756325928ull, 4149146111985642917ull, 892029807941ull}}, {{9225627101615590965ull, 8128671077811397657ull, 4899059329204720775ull, 557518629963ull}}, {{16143719895446876610ull, 5549152828836859167ull, 1512138143078513065ull, 696898287454ull}}, {{15567963850881207859ull, 11548127054473461863ull, 11113544715702917139ull, 871122859317ull}}, {{14848268795174121920ull, 9823472799664439425ull, 56872839346482712ull, 1088903574147ull}}, {{2362638969342744344ull, 6139670499790274641ull, 16176446589087409359ull, 680564733841ull}}, {{7564984730105818334ull, 3062902106310455397ull, 6385500181077097987ull, 850705917302ull}}, {{14067916931059660821ull, 17663685688170232958ull, 17205247263201148291ull, 1063382396627ull}}, {{4180762063484900109ull, 8733960545892701647ull, 8447436530287023730ull, 664613997892ull}}, {{614266560928737233ull, 1694078645511101251ull, 10559295662858779663ull, 830767497365ull}}, {{14602891256443085253ull, 15952656362171040275ull, 17810805597000862482ull, 1038459371706ull}}, {{6820964026063234331ull, 14582096244784288076ull, 15743439516552926955ull, 649037107316ull}}, {{8526205032579042914ull, 13615934287552972191ull, 1232555321981607078ull, 811296384146ull}}, {{6046070272296415738ull, 7796545822586439431ull, 10764066189331784656ull, 1014120480182ull}}, {{10696322947826341692ull, 4872841139116524644ull, 2115855349904977506ull, 633825300114ull}}, {{13370403684782927115ull, 15314423460750431613ull, 11868191224235997690ull, 792281625142ull}}, {{2877946550696495182ull, 9919657289083263709ull, 5611866993440221305ull, 990352031428ull}}, {{4104559603399003441ull, 17729000851745509578ull, 12730788907754914123ull, 618970019642ull}}, {{14354071541103530109ull, 17549565046254499068ull, 6690114097838866846ull, 773712524553ull}}, {{17942589426379412636ull, 12713584270963348027ull, 12974328640725971462ull, 967140655691ull}}, {{8908275382273438946ull, 3334304150924704613ull, 5803112391240038212ull, 604462909807ull}}, {{15747030246269186586ull, 4167880188655880766ull, 2642204470622659861ull, 755578637259ull}}, {{10460415770981707425ull, 9821536254247238862ull, 17137813643560488538ull, 944473296573ull}}, {{1926073838436179237ull, 10750146177331912193ull, 13016976536438999288ull, 590295810358ull}}, {{7019278316472611950ull, 13437682721664890241ull, 7047848633693973302ull, 737869762948ull}}, {{13385783914018152841ull, 7573731365226336993ull, 8809810792117466628ull, 922337203685ull}}, {{1448585918620263670ull, 13956954140121236429ull, 7811974754287110594ull, 576460752303ull}}, {{6422418416702717491ull, 8222820638296769728ull, 5153282424431500339ull, 720575940379ull}}, {{8028023020878396864ull, 5666839779443574256ull, 1829917012111987520ull, 900719925474ull}}, {{5017514388048998040ull, 3541774862152233910ull, 5755384150997380104ull, 562949953421ull}}, {{15495265021916023358ull, 4427218577690292387ull, 11805916207174113034ull, 703687441776ull}}, {{14757395258967641293ull, 14757395258967641292ull, 14757395258967641292ull, 879609302220ull}}, {{0ull, 0ull, 0ull, 1099511627776ull}}, {{0ull, 0ull, 0ull, 687194767360ull}}, {{0ull, 0ull, 0ull, 858993459200ull}}, {{0ull, 0ull, 0ull, 1073741824000ull}}, {{0ull, 0ull, 0ull, 671088640000ull}}, {{0ull, 0ull, 0ull, 838860800000ull}}, {{0ull, 0ull, 0ull, 1048576000000ull}}, {{0ull, 0ull, 0ull, 655360000000ull}}, {{0ull, 0ull, 0ull, 819200000000ull}}, {{0ull, 0ull, 0ull, 1024000000000ull}}, {{0ull, 0ull, 0ull, 640000000000ull}}, {{0ull, 0ull, 0ull, 800000000000ull}}, {{0ull, 0ull, 0ull, 1000000000000ull}}, {{0ull, 0ull, 0ull, 625000000000ull}}, {{0ull, 0ull, 0ull, 781250000000ull}}, {{0ull, 0ull, 0ull, 976562500000ull}}, {{0ull, 0ull, 0ull, 610351562500ull}}, {{0ull, 0ull, 0ull, 762939453125ull}}, {{0ull, 0ull, 4611686018427387904ull, 953674316406ull}}, {{0ull, 0ull, 16717361816799281152ull, 596046447753ull}}, {{0ull, 0ull, 7061644215716937728ull, 745058059692ull}}, {{0ull, 0ull, 8827055269646172160ull, 931322574615ull}}, {{0ull, 0ull, 12434438571169939456ull, 582076609134ull}}, {{0ull, 0ull, 6319676177107648512ull, 727595761418ull}}, {{0ull, 0ull, 17122967258239336448ull, 909494701772ull}}, {{0ull, 0ull, 1478482499544809472ull, 568434188608ull}}, {{0ull, 0ull, 1848103124431011840ull, 710542735760ull}}, {{0ull, 0ull, 2310128905538764800ull, 888178419700ull}}, {{0ull, 0ull, 10667202602816503808ull, 555111512312ull}}, {{0ull, 0ull, 13334003253520629760ull, 693889390390ull}}, {{0ull, 0ull, 7444132030046011392ull, 867361737988ull}}, {{0ull, 0ull, 9305165037557514240ull, 1084202172485ull}}, {{0ull, 0ull, 8121571157687140352ull, 677626357803ull}}, {{0ull, 0ull, 5540277928681537536ull, 847032947254ull}}, {{0ull, 0ull, 16148719447706697728ull, 1058791184067ull}}, {{0ull, 0ull, 7787106645602992128ull, 661744490042ull}}, {{0ull, 0ull, 510511270148964352ull, 827180612553ull}}, {{0ull, 0ull, 5249825106113593344ull, 1033975765691ull}}, {{0ull, 0ull, 975297682107301888ull, 646234853557ull}}, {{0ull, 0ull, 5830808121061515264ull, 807793566946ull}} }; static const BID_UINT256 bid_multipliers2_binary32[] = { {{12230317112597168372ull, 12964188775534322552ull, 9551240831114137572ull, 325925756213ull}}, {{15287896390746460465ull, 16205235969417903190ull, 16550737057320059869ull, 407407195266ull}}, {{9886498451578299773ull, 6421486906490215276ull, 11465049284795299029ull, 509258994083ull}}, {{15402433569091213166ull, 6319272325770078499ull, 4859812793783367941ull, 318286871302ull}}, {{14641355942936628554ull, 12510776425639986028ull, 15298138029083985734ull, 397858589127ull}}, {{18301694928670785692ull, 6415098495195206727ull, 14510986517927594264ull, 497323236409ull}}, {{18356088358060322914ull, 4009436559497004204ull, 2151837546063664559ull, 310827022756ull}}, {{4498366373865852026ull, 400109680943867352ull, 2689796932579580699ull, 388533778445ull}}, {{5622957967332315033ull, 14335195156461997902ull, 7973932184151863777ull, 485667223056ull}}, {{17349406784864860608ull, 2041967945147666832ull, 4983707615094914861ull, 303542014410ull}}, {{3240014407371524143ull, 7164145949861971445ull, 15453006555723419384ull, 379427518012ull}}, {{8661704027641793083ull, 8955182437327464306ull, 869514120944722614ull, 474284397516ull}}, {{10025251035703508581ull, 985303004902277287ull, 9766818362445227442ull, 296427748447ull}}, {{7919877776201997822ull, 10455000792982622417ull, 7596836934629146398ull, 370534685559ull}}, {{14511533238679885182ull, 3845378954373502213ull, 4884360149859045094ull, 463168356949ull}}, {{11375551283388622191ull, 16238419901765602595ull, 5358568102875597135ull, 289480223093ull}}, {{9607753085808389834ull, 15686338858779615340ull, 11309896147021884323ull, 361850278866ull}}, {{12009691357260487293ull, 14996237555047131271ull, 4913998146922579596ull, 452312848583ull}}, {{14423586125928886414ull, 149276435049681236ull, 9988777869467694104ull, 282695530364ull}}, {{18029482657411108018ull, 186595543812101545ull, 12485972336834617630ull, 353369412955ull}}, {{8701795266481721310ull, 9456616466619902740ull, 10995779402615884133ull, 441711766194ull}}, {{14661994078405851627ull, 8216228300851133164ull, 11484048145062315487ull, 276069853871ull}}, {{18327492598007314533ull, 5658599357636528551ull, 9743374162900506455ull, 345087317339ull}}, {{18297679729081755263ull, 2461563178618272785ull, 7567531685198245165ull, 431359146674ull}}, {{9037041606070030366ull, 7688639991700228886ull, 236042569643030648ull, 539198933343ull}}, {{1036464985366381075ull, 4805399994812643054ull, 7065055633667976011ull, 336999333339ull}}, {{10518953268562752152ull, 1395063975088415913ull, 4219633523657582110ull, 421249166674ull}}, {{17760377604130828093ull, 10967202005715295699ull, 14497913941426753445ull, 526561458342ull}}, {{8794392993368073607ull, 9160344262785753764ull, 4449510194964332999ull, 329100911464ull}}, {{10992991241710092008ull, 6838744310054804301ull, 5561887743705416249ull, 411376139330ull}}, {{18352925070565002914ull, 13160116405995893280ull, 16175731716486546119ull, 514220174162ull}}, {{11470578169103126821ull, 15142601781388515156ull, 14721518341231479228ull, 321387608851ull}}, {{14338222711378908527ull, 481508153026092329ull, 13790211908111961132ull, 401734511064ull}}, {{4087720333941471946ull, 601885191282615412ull, 17237764885139951415ull, 502168138830ull}}, {{11778197245568195775ull, 7293707272192716488ull, 6161917034785081730ull, 313855086769ull}}, {{14722746556960244718ull, 18340506127095671418ull, 12314082311908740066ull, 392318858461ull}}, {{9180061159345530090ull, 13702260622014813465ull, 1557544834603761371ull, 490398573077ull}}, {{17266753270659426066ull, 6258069879545564463ull, 3279308530841044809ull, 306499108173ull}}, {{16971755569896894679ull, 12434273367859343483ull, 8710821681978693915ull, 383123885216ull}}, {{16603008443943730444ull, 10931155691396791450ull, 10888527102473367394ull, 478904856520ull}}, {{14988566295892219432ull, 11443658325550382560ull, 6805329439045854621ull, 299315535325ull}}, {{288963796155722674ull, 469514851655814489ull, 13118347817234706181ull, 374144419156ull}}, {{4972890763622041246ull, 5198579582997156015ull, 16397934771543382726ull, 467680523945ull}}, {{10025585754904857635ull, 17084170294655386221ull, 3331180204573532347ull, 292300327466ull}}, {{17143668212058459947ull, 16743526849891844872ull, 13387347292571691242ull, 365375409332ull}}, {{2982841191363523318ull, 11706036525510030283ull, 16734184115714614053ull, 456719261665ull}}, {{18005176809098059738ull, 9622115837657462878ull, 3541336044680551927ull, 285449538541ull}}, {{13283098974517798864ull, 7415958778644440694ull, 9038356074278077813ull, 356811923176ull}}, {{7380501681292472772ull, 13881634491732938772ull, 11297945092847597266ull, 446014903970ull}}, {{13836185587662571291ull, 13287707575760474636ull, 11672901701457136195ull, 278759314981ull}}, {{17295231984578214113ull, 11997948451273205391ull, 756069071539256532ull, 348449143727ull}}, {{17007353962295379738ull, 14997435564091506739ull, 14780144394706234377ull, 435561429658ull}}, {{16647506434441836768ull, 4911736399832219712ull, 9251808456528017164ull, 544451787073ull}}, {{10404691521526147980ull, 12293207286749913128ull, 17311595331398480487ull, 340282366920ull}}, {{13005864401907684975ull, 10754823090010003506ull, 3192750090538548993ull, 425352958651ull}}, {{7033958465529830411ull, 18055214880939892287ull, 17825995668455349953ull, 531691198313ull}}, {{11313753068597225863ull, 4366980272946350823ull, 4223718265143511865ull, 332306998946ull}}, {{9530505317319144425ull, 10070411359610326433ull, 14503019868284165639ull, 415383748682ull}}, {{16524817665076318435ull, 7976328181085520137ull, 8905402798500431241ull, 519229685853ull}}, {{3410482013031617166ull, 16514420159246919846ull, 7871719758276463477ull, 324518553658ull}}, {{13486474553144297265ull, 6807967143776486095ull, 616277660990803539ull, 405648192073ull}}, {{12246407173002983677ull, 3898272911293219715ull, 5382033094665892328ull, 507060240091ull}}, {{5348161473913170846ull, 2436420569558262322ull, 1057927674952488753ull, 316912650057ull}}, {{15908573879246239366ull, 7657211730375215806ull, 5934095612117998845ull, 396140812571ull}}, {{10662345312203023399ull, 14183200681396407662ull, 2805933496720110652ull, 495176015714ull}}, {{2052279801699501721ull, 18087872462727530597ull, 6365394453877457061ull, 309485009821ull}}, {{7177035770551765055ull, 8774782523127249534ull, 12568429085774209231ull, 386856262276ull}}, {{18194666750044482126ull, 6356792135481674013ull, 15710536357217761539ull, 483570327845ull}}, {{13677509727991495281ull, 1667152075462352306ull, 12124928232474794914ull, 302231454903ull}}, {{7873515123134593293ull, 11307312131182716191ull, 10544474272166105738ull, 377789318629ull}}, {{5230207885490853713ull, 4910768127123619431ull, 17792278858635020077ull, 472236648286ull}}, {{10186408956072865427ull, 5375073088665956096ull, 6508488268219499644ull, 295147905179ull}}, {{12733011195091081783ull, 6718841360832445120ull, 3523924316846986651ull, 368934881474ull}}, {{15916263993863852229ull, 3786865682613168496ull, 13628277432913509122ull, 461168601842ull}}, {{9947664996164907643ull, 6978477070060618214ull, 13129359413998331105ull, 288230376151ull}}, {{3211209208351358746ull, 13334782356003160672ull, 11800013249070525977ull, 360287970189ull}}, {{4014011510439198432ull, 2833419889721787128ull, 914958506055993760ull, 450359962737ull}}, {{2508757194024499020ull, 1770887431076116955ull, 12101064112353465860ull, 281474976710ull}}, {{16971004547812787487ull, 2213609288845146193ull, 5902958103587056517ull, 351843720888ull}}, {{7378697629483820647ull, 7378697629483820646ull, 7378697629483820646ull, 439804651110ull}}, {{0ull, 0ull, 0ull, 549755813888ull}}, {{0ull, 0ull, 0ull, 343597383680ull}}, {{0ull, 0ull, 0ull, 429496729600ull}}, {{0ull, 0ull, 0ull, 536870912000ull}}, {{0ull, 0ull, 0ull, 335544320000ull}}, {{0ull, 0ull, 0ull, 419430400000ull}}, {{0ull, 0ull, 0ull, 524288000000ull}}, {{0ull, 0ull, 0ull, 327680000000ull}}, {{0ull, 0ull, 0ull, 409600000000ull}}, {{0ull, 0ull, 0ull, 512000000000ull}}, {{0ull, 0ull, 0ull, 320000000000ull}}, {{0ull, 0ull, 0ull, 400000000000ull}}, {{0ull, 0ull, 0ull, 500000000000ull}}, {{0ull, 0ull, 0ull, 312500000000ull}}, {{0ull, 0ull, 0ull, 390625000000ull}}, {{0ull, 0ull, 0ull, 488281250000ull}}, {{0ull, 0ull, 0ull, 305175781250ull}}, {{0ull, 0ull, 9223372036854775808ull, 381469726562ull}}, {{0ull, 0ull, 2305843009213693952ull, 476837158203ull}}, {{0ull, 0ull, 17582052945254416384ull, 298023223876ull}}, {{0ull, 0ull, 3530822107858468864ull, 372529029846ull}}, {{0ull, 0ull, 13636899671677861888ull, 465661287307ull}}, {{0ull, 0ull, 6217219285584969728ull, 291038304567ull}}, {{0ull, 0ull, 3159838088553824256ull, 363797880709ull}}, {{0ull, 0ull, 8561483629119668224ull, 454747350886ull}}, {{0ull, 0ull, 739241249772404736ull, 284217094304ull}}, {{0ull, 0ull, 924051562215505920ull, 355271367880ull}}, {{0ull, 0ull, 1155064452769382400ull, 444089209850ull}}, {{0ull, 0ull, 5333601301408251904ull, 277555756156ull}}, {{0ull, 0ull, 6667001626760314880ull, 346944695195ull}}, {{0ull, 0ull, 3722066015023005696ull, 433680868994ull}}, {{0ull, 0ull, 13875954555633532928ull, 542101086242ull}}, {{0ull, 0ull, 13284157615698345984ull, 338813178901ull}}, {{0ull, 0ull, 2770138964340768768ull, 423516473627ull}}, {{0ull, 0ull, 17297731760708124672ull, 529395592033ull}}, {{0ull, 0ull, 3893553322801496064ull, 330872245021ull}}, {{0ull, 0ull, 9478627671929257984ull, 413590306276ull}}, {{0ull, 0ull, 11848284589911572480ull, 516987882845ull}}, {{0ull, 0ull, 9711020877908426752ull, 323117426778ull}}, {{0ull, 0ull, 2915404060530757632ull, 403896783473ull}} }; // ********************************************************************** static const BID_UINT128 bid_breakpoints_binary64[] = { {{5261314576080512960ull, 21426681862861333ull}}, {{4728754506986910400ull, 34282690980578133ull}}, {{11161701235073348928ull, 27426152784462506ull}}, {{5240012173316768832ull, 21940922227570005ull}}, {{8384019477306830144ull, 35105475564112008ull}}, {{14085913211329284736ull, 28084380451289606ull}}, {{7579381754321517504ull, 22467504361031685ull}}, {{12127010806914427968ull, 35948006977650696ull}}, {{6012259830789632064ull, 28758405582120557ull}}, {{15877854308857436608ull, 23006724465696445ull}}, {{12702283447085949312ull, 18405379572557156ull}}, {{12944955885853698240ull, 29448607316091450ull}}, {{10355964708682958592ull, 23558885852873160ull}}, {{8284771766946366848ull, 18847108682298528ull}}, {{9566286012372276672ull, 30155373891677645ull}}, {{7653028809897821312ull, 24124299113342116ull}}, {{2433074233176346752ull, 19299439290673693ull}}, {{203569958340244480ull, 30879102865077909ull}}, {{3852204781414105920ull, 24703282292062327ull}}, {{14149810269357015680ull, 19762625833649861ull}}, {{15260998801487404480ull, 31620201333839778ull}}, {{1140752596964192576ull, 25296161067071823ull}}, {{8291299707055174720ull, 20236928853657458ull}}, {{9576730716546369216ull, 32379086165851933ull}}, {{15040082202720916032ull, 25903268932681546ull}}, {{8342716947434822464ull, 20722615146145237ull}}, {{17037695930637626304ull, 33156184233832379ull}}, {{17319505559252011392ull, 26524947387065903ull}}, {{2787558003175878144ull, 21219957909652723ull}}, {{770743990339494720ull, 33951932655444357ull}}, {{11684641636497326720ull, 27161546124355485ull}}, {{9347713309197861376ull, 21729236899484388ull}}, {{11266992479974667904ull, 34766779039175021ull}}, {{5324245169237824000ull, 27813423231340017ull}}, {{15327442579615990144ull, 22250738585072013ull}}, {{2387815238934122304ull, 35601181736115222ull}}, {{12978298635373028800ull, 28480945388892177ull}}, {{3003941278814602368ull, 22784756311113742ull}}, {{13471199467277412864ull, 18227805048890993ull}}, {{17864570332901950336ull, 29164488078225589ull}}, {{17981005081063470592ull, 23331590462580471ull}}, {{10695455250108866112ull, 18665272370064377ull}}, {{2355333141206544512ull, 29864435792103004ull}}, {{5573615327707145920ull, 23891548633682403ull}}, {{11837589891649537408ull, 19113238906945922ull}}, {{4182748567671618560ull, 30581182251113476ull}}, {{18103594113104936128ull, 24464945800890780ull}}, {{14482875290483948864ull, 19571956640712624ull}}, {{12104554020548587264ull, 31315130625140199ull}}, {{13372992031180780160ull, 25052104500112159ull}}, {{14387742439686534400ull, 20041683600089727ull}}, {{8262992644530813824ull, 32066693760143564ull}}, {{10299742930366561344ull, 25653355008114851ull}}, {{4550445529551338752ull, 20522684006491881ull}}, {{18348759291507873024ull, 32836294410387009ull}}, {{18368356247948208704ull, 26269035528309607ull}}, {{7315987368874746304ull, 21015228422647686ull}}, {{4326882160715773504ull, 33624365476236298ull}}, {{10840203358056439424ull, 26899492380989038ull}}, {{16050860315928972160ull, 21519593904791230ull}}, {{7234632431776803904ull, 34431350247665969ull}}, {{9477054760163353472ull, 27545080198132775ull}}, {{7581643808130682752ull, 22036064158506220ull}}, {{12130630093009092416ull, 35257702653609952ull}}, {{2325806444923453248ull, 28206162122887962ull}}, {{12928691600164493568ull, 22564929698310369ull}}, {{14032302094873505216ull, 18051943758648295ull}}, {{4004939278088056704ull, 28883110013837273ull}}, {{10582649051954265984ull, 23106488011069818ull}}, {{15844816871047233408ull, 18485190408855854ull}}, {{14283660549449842560ull, 29576304654169367ull}}, {{4048230810076053376ull, 23661043723335494ull}}, {{6927933462802753024ull, 18928834978668395ull}}, {{11084693540484404864ull, 30286135965869432ull}}, {{1489057202903703232ull, 24228908772695546ull}}, {{15948641021290603904ull, 19383127018156436ull}}, {{18139128004581145600ull, 31013003229050298ull}}, {{3443255959439185472ull, 24810402583240239ull}}, {{6443953582293258688ull, 19848322066592191ull}}, {{2931628102185393280ull, 31757315306547506ull}}, {{17102697740715955904ull, 25405852245238004ull}}, {{17371507007314675072ull, 20324681796190403ull}}, {{5658318323252018176ull, 32519490873904646ull}}, {{837305843859704192ull, 26015592699123717ull}}, {{11737891119313494336ull, 20812474159298973ull}}, {{15091276976159680640ull, 33299958654878357ull}}, {{4694323951443923840ull, 26639966923902686ull}}, {{66110346413228736ull, 21311973539122149ull}}, {{7484474183744986688ull, 34099157662595438ull}}, {{13366276976479809984ull, 27279326130076350ull}}, {{10693021581183848000ull, 21823460904061080ull}}, {{17108834529894156800ull, 34917537446497728ull}}, {{2619021179689594432ull, 27934029957198183ull}}, {{9473914573235496192ull, 22347223965758546ull}}, {{7779565687692973312ull, 35755558345213674ull}}, {{9913001364896288960ull, 28604446676170939ull}}, {{11619749906658941440ull, 22883557340936751ull}}, {{5606451110585242816ull, 18306845872749401ull}}, {{1591624147452567936ull, 29290953396399042ull}}, {{12341345762187785280ull, 23432762717119233ull}}, {{17251774239234048896ull, 18746210173695386ull}}, {{1777397079581105984ull, 29993936277912619ull}}, {{5111266478406795072ull, 23995149022330095ull}}, {{4089013182725436096ull, 19196119217864076ull}}, {{17610467536586428672ull, 30713790748582521ull}}, {{10399025214527232640ull, 24571032598866017ull}}, {{940522542137965440ull, 19656826079092814ull}}, {{8883533696904565376ull, 31450921726548502ull}}, {{18174873401749383296ull, 25160737381238801ull}}, {{10850549906657596288ull, 20128589904991041ull}}, {{9982182221168333440ull, 32205743847985666ull}}, {{4296396962192756416ull, 25764595078388533ull}}, {{10815815199238025792ull, 20611676062710826ull}}, {{9926606689297020608ull, 32978681700337322ull}}, {{562587721953795840ull, 26382945360269858ull}}, {{7828767807046857280ull, 21106356288215886ull}}, {{5147330861791151040ull, 33770170061145418ull}}, {{11496562318916741504ull, 27016136048916334ull}}, {{12886598669875303488ull, 21612908839133067ull}}, {{5861162612832844352ull, 34580654142612908ull}}, {{12067627719750096128ull, 27664523314090326ull}}, {{5964753361058166592ull, 22131618651272261ull}}, {{2164907748209245888ull, 35410589842035618ull}}, {{9110623828051217344ull, 28328471873628494ull}}, {{10977847877182884160ull, 22662777498902795ull}}, {{8782278301746307328ull, 18130221999122236ull}}, {{6672947653310271104ull, 29008355198595578ull}}, {{12717055752132037568ull, 23206684158876462ull}}, {{2794946972221809408ull, 18565347327101170ull}}, {{4471915155554895040ull, 29704555723361872ull}}, {{14645578568669646976ull, 23763644578689497ull}}, {{4337765225451896960ull, 19010915662951598ull}}, {{3251075545981124800ull, 30417465060722557ull}}, {{13668906881010630784ull, 24333972048578045ull}}, {{10935125504808504640ull, 19467177638862436ull}}, {{10117503178209786752ull, 31147484222179898ull}}, {{15472700172051650048ull, 24917987377743918ull}}, {{1310113693415589056ull, 19934389902195135ull}}, {{2096181909464942528ull, 31895023843512216ull}}, {{16434340786539595328ull, 25516019074809772ull}}, {{5768774999747855616ull, 20412815259847818ull}}, {{5540691184854658688ull, 32660504415756509ull}}, {{8121901762625637248ull, 26128403532605207ull}}, {{17565567854326240768ull, 20902722826084165ull}}, {{9658164493212433600ull, 33444356521734665ull}}, {{7726531594569946880ull, 26755485217387732ull}}, {{17249271719881688448ull, 21404388173910185ull}}, {{9152090678101149952ull, 34247021078256297ull}}, {{18389718986706650944ull, 27397616862605037ull}}, {{7333077559881500096ull, 21918093490084030ull}}, {{11732924095810400192ull, 35068949584134448ull}}, {{16765036906132140800ull, 28055159667307558ull}}, {{2343983080679981632ull, 22444127733846047ull}}, {{7439721743829880960ull, 35910604374153675ull}}, {{5951777395063904768ull, 28728483499322940ull}}, {{4761421916051123840ull, 22982786799458352ull}}, {{14877183977066630016ull, 18386229439566681ull}}, {{16424796733822787392ull, 29417967103306690ull}}, {{13139837387058229888ull, 23534373682645352ull}}, {{3133172280162763264ull, 18827498946116282ull}}, {{8702424463002331584ull, 30123998313786051ull}}, {{3272590755659954944ull, 24099198651028841ull}}, {{17375467863495605248ull, 19279358920823072ull}}, {{13043353322625327104ull, 30846974273316916ull}}, {{6745333843358351360ull, 24677579418653533ull}}, {{12774964704170501696ull, 19742063534922826ull}}, {{13061245897188982144ull, 31587301655876522ull}}, {{3070299088267365056ull, 25269841324701218ull}}, {{9834936900097712704ull, 20215873059760974ull}}, {{4667852595930609344ull, 32345396895617559ull}}, {{7423630891486397760ull, 25876317516494047ull}}, {{17006951157414849216ull, 20701054013195237ull}}, {{12453726592896117440ull, 33121686421112380ull}}, {{9962981274316893952ull, 26497349136889904ull}}, {{11659733834195425472ull, 21197879309511923ull}}, {{14966225319970770432ull, 33916606895219077ull}}, {{4594282626492795712ull, 27133285516175262ull}}, {{14743472545419967552ull, 21706628412940209ull}}, {{12521509628446217088ull, 34730605460704335ull}}, {{10017207702756973632ull, 27784484368563468ull}}, {{15392463791689399552ull, 22227587494850774ull}}, {{13559895622477308352ull, 35564139991761239ull}}, {{14537265312723756992ull, 28451311993408991ull}}, {{7940463435437095296ull, 22761049594727193ull}}, {{13731068377833496832ull, 18208839675781754ull}}, {{10901662960307864000ull, 29134143481250807ull}}, {{1342632738762470592ull, 23307314785000646ull}}, {{15831501449977617728ull, 18645851828000516ull}}, {{17951704690480367744ull, 29833362924800826ull}}, {{10672014937642383872ull, 23866690339840661ull}}, {{4848263135371996800ull, 19093352271872529ull}}, {{15135918646079015488ull, 30549363634996046ull}}, {{8419386102121302080ull, 24439490907996837ull}}, {{17803555325922772608ull, 19551592726397469ull}}, {{17417642077250705216ull, 31282548362235951ull}}, {{10244764847058653888ull, 25026038689788761ull}}, {{4506463062905012736ull, 20020830951831009ull}}, {{14589038530131841088ull, 32033329522929614ull}}, {{15360579638847383168ull, 25626663618343691ull}}, {{8599114896335996224ull, 20501330894674953ull}}, {{10069235019395683648ull, 32802129431479925ull}}, {{8055388015516546880ull, 26241703545183940ull}}, {{6444310412413237504ull, 20993362836147152ull}}, {{14000245474603090368ull, 33589380537835443ull}}, {{132149935456741312ull, 26871504430268355ull}}, {{105719948365393024ull, 21497203544214684ull}}, {{7547849546868449536ull, 34395525670743494ull}}, {{9727628452236669952ull, 27516420536594795ull}}, {{7782102761789335936ull, 22013136429275836ull}}, {{5072666789379116928ull, 35221018286841338ull}}, {{11436831060987114176ull, 28176814629473070ull}}, {{9149464848789691328ull, 22541451703578456ull}}, {{3630223064289842752ull, 18033161362862765ull}}, {{5808356902863748416ull, 28853058180580424ull}}, {{8336034337032909056ull, 23082446544464339ull}}, {{10358176284368237568ull, 18465957235571471ull}}, {{9194384425505359424ull, 29545531576914354ull}}, {{11044856355146197888ull, 23636425261531483ull}}, {{16214582713600778944ull, 18909140209225186ull}}, {{117890638567874048ull, 30254624334760299ull}}, {{3783661325596209536ull, 24203699467808239ull}}, {{6716277875218877952ull, 19362959574246591ull}}, {{3367346970866384128ull, 30980735318794546ull}}, {{17451272835660748544ull, 24784588255035636ull}}, {{10271669453786688512ull, 19827670604028509ull}}, {{5366624681832970688ull, 31724272966445615ull}}, {{4293299745466376576ull, 25379418373156492ull}}, {{14502686240598832192ull, 20303534698525193ull}}, {{1068205096506669632ull, 32485655517640310ull}}, {{854564077205335680ull, 25988524414112248ull}}, {{8062348891248089216ull, 20790819531289798ull}}, {{9210409411255032384ull, 33265311250063677ull}}, {{18436373973229756864ull, 26612249000050941ull}}, {{11059750363841895168ull, 21289799200040753ull}}, {{14006251767405121984ull, 34063678720065205ull}}, {{11205001413924097600ull, 27250942976052164ull}}, {{12653349945881188352ull, 21800754380841731ull}}, {{12866662283926080768ull, 34881207009346770ull}}, {{10293329827140864640ull, 27904965607477416ull}}, {{4545315046970781376ull, 22323972485981933ull}}, {{3583155260411339840ull, 35718355977571093ull}}, {{10245221837812892544ull, 28574684782056874ull}}, {{11885526284992224320ull, 22859747825645499ull}}, {{13197769842735689792ull, 18287798260516399ull}}, {{10048385304151372736ull, 29260477216826239ull}}, {{11728057058063008512ull, 23408381773460991ull}}, {{5693096831708496448ull, 18726705418768793ull}}, {{5419606115991684032ull, 29962728670030069ull}}, {{8025033707535257536ull, 23970182936024055ull}}, {{6420026966028206016ull, 19176146348819244ull}}, {{17650740775128950336ull, 30681834158110790ull}}, {{14120592620103160256ull, 24545467326488632ull}}, {{3917776466598707520ull, 19636373861190906ull}}, {{17336488790783663040ull, 31418198177905449ull}}, {{17558539847368840768ull, 25134558542324359ull}}, {{17736180692636982912ull, 20107646833859487ull}}, {{13620493849251531392ull, 32172234934175180ull}}, {{10896395079401225152ull, 25737787947340144ull}}, {{12406464878262890432ull, 20590230357872115ull}}, {{1403599731511073088ull, 32944368572595385ull}}, {{1122879785208858432ull, 26355494858076308ull}}, {{8277001457650907392ull, 21084395886461046ull}}, {{5864504702757631232ull, 33735033418337674ull}}, {{8380952576948015296ull, 26988026734670139ull}}, {{10394110876300322560ull, 21590421387736111ull}}, {{9251879772596695424ull, 34544674220377778ull}}, {{14780201447561177024ull, 27635739376302222ull}}, {{4445463528565120960ull, 22108591501041778ull}}, {{3423392830962283200ull, 35373746401666845ull}}, {{2738714264769826560ull, 28298997121333476ull}}, {{16948366670783502528ull, 22639197697066780ull}}, {{13558693336626802048ull, 18111358157653424ull}}, {{10625862894377152256ull, 28978173052245479ull}}, {{12190039130243632128ull, 23182538441796383ull}}, {{17130728933678726336ull, 18546030753437106ull}}, {{1583724590692589952ull, 29673649205499371ull}}, {{16024374931521713216ull, 23738919364399496ull}}, {{9130151130475460224ull, 18991135491519597ull}}, {{18297590623502646720ull, 30385816786431355ull}}, {{14638072498802117376ull, 24308653429145084ull}}, {{15399806813783604224ull, 19446922743316067ull}}, {{9882295643086125504ull, 31115076389305708ull}}, {{15284534143952721024ull, 24892061111444566ull}}, {{8538278500420266496ull, 19913648889155653ull}}, {{9971896785930516096ull, 31861838222649045ull}}, {{7977517428744412864ull, 25489470578119236ull}}, {{2692665128253619968ull, 20391576462495389ull}}, {{11686961834689612608ull, 32626522339992622ull}}, {{1970871838267869440ull, 26101217871994098ull}}, {{8955395100098116160ull, 20880974297595278ull}}, {{10639283345415075584ull, 33409558876152445ull}}, {{8511426676332060480ull, 26727647100921956ull}}, {{3119792526323738048ull, 21382117680737565ull}}, {{4991668042117980864ull, 34211388289180104ull}}, {{7682683248436295040ull, 27369110631344083ull}}, {{13524844228232856640ull, 21895288505075266ull}}, {{14261053135688750016ull, 35032461608120426ull}}, {{7719493693809089664ull, 28025969286496341ull}}, {{2486246140305361408ull, 22420775429197073ull}}, {{288645009746667968ull, 35873240686715317ull}}, {{11298962452023065344ull, 28698592549372253ull}}, {{16417867591102272896ull, 22958874039497802ull}}, {{5755596443397997696ull, 18367099231598242ull}}, {{12898303124178706624ull, 29387358770557187ull}}, {{2939944869859144640ull, 23509887016445750ull}}, {{2351955895887315712ull, 18807909613156600ull}}, {{3763129433419705152ull, 30092655381050560ull}}, {{3010503546735764096ull, 24074124304840448ull}}, {{9787100466872431936ull, 19259299443872358ull}}, {{11970011932253980800ull, 30814879110195773ull}}, {{16954707175287005248ull, 24651903288156618ull}}, {{2495719296003873216ull, 19721522630525295ull}}, {{3993150873606197184ull, 31554436208840472ull}}, {{14262567143110688704ull, 25243548967072377ull}}, {{4031356085004730304ull, 20194839173657902ull}}, {{10139518550749478848ull, 32311742677852643ull}}, {{15490312470083403712ull, 25849394142282114ull}}, {{16081598790808633280ull, 20679515313825691ull}}, {{18351860435809992640ull, 33087224502121106ull}}, {{10992139533906083776ull, 26469779601696885ull}}, {{8793711627124867008ull, 21175823681357508ull}}, {{10380589788657876928ull, 33881317890172013ull}}, {{15683169460410122176ull, 27105054312137610ull}}, {{12546535568328097728ull, 21684043449710088ull}}, {{16385108094583046080ull, 34694469519536141ull}}, {{9418737660924526528ull, 27755575615628913ull}}, {{14913687758223441856ull, 22204460492503130ull}}, {{5415156339447955392ull, 35527136788005009ull}}, {{8021473886300274624ull, 28421709430404007ull}}, {{17485225553265950656ull, 22737367544323205ull}}, {{13988180442612760512ull, 18189894035458564ull}}, {{11313042263954685888ull, 29103830456733703ull}}, {{16429131440647569344ull, 23283064365386962ull}}, {{5764607523034234816ull, 18626451492309570ull}}, {{9223372036854775744ull, 29802322387695312ull}}, {{18446744073709551552ull, 23841857910156249ull}}, {{18446744073709551552ull, 19073486328124999ull}}, {{18446744073709551552ull, 30517578124999999ull}}, {{18446744073709551552ull, 24414062499999999ull}}, {{18446744073709551552ull, 19531249999999999ull}}, {{18446744073709551552ull, 31249999999999999ull}}, {{18446744073709551552ull, 24999999999999999ull}}, {{18446744073709551552ull, 19999999999999999ull}}, {{18446744073709551552ull, 31999999999999999ull}}, {{18446744073709551552ull, 25599999999999999ull}}, {{18446744073709551552ull, 20479999999999999ull}}, {{18446744073709551552ull, 32767999999999999ull}}, {{18446744073709551552ull, 26214399999999999ull}}, {{18446744073709551552ull, 20971519999999999ull}}, {{18446744073709551552ull, 33554431999999999ull}}, {{18446744073709551552ull, 26843545599999999ull}}, {{18446744073709551552ull, 21474836479999999ull}}, {{18446744073709551552ull, 34359738367999999ull}}, {{18446744073709551552ull, 27487790694399999ull}}, {{18446744073709551552ull, 21990232555519999ull}}, {{18446744073709551552ull, 35184372088831999ull}}, {{18446744073709551552ull, 28147497671065599ull}}, {{18446744073709551552ull, 22517998136852479ull}}, {{18446744073709551552ull, 18014398509481983ull}}, {{7378697629483820608ull, 28823037615171174ull}}, {{9592306918328966784ull, 23058430092136939ull}}, {{11363194349405083776ull, 18446744073709551ull}}, {{10802413329564313408ull, 29514790517935282ull}}, {{1263233034167630080ull, 23611832414348226ull}}, {{15767981686301745344ull, 18889465931478580ull}}, {{6782026624373240960ull, 30223145490365729ull}}, {{9114970114240503040ull, 24178516392292583ull}}, {{14670673720876223104ull, 19342813113834066ull}}, {{16094380323918136320ull, 30948500982134506ull}}, {{9186155444392598720ull, 24758800785707605ull}}, {{7348924355514078976ull, 19807040628566084ull}}, {{690232524596795392ull, 31691265005705735ull}}, {{552186019677436352ull, 25353012004564588ull}}, {{7820446445225769728ull, 20282409603651670ull}}, {{12512714312361231552ull, 32451855365842672ull}}, {{2631473820405164608ull, 25961484292674138ull}}, {{9483876685807952320ull, 20769187434139310ull}}, {{15174202697292723712ull, 33230699894622896ull}}, {{8450013343092268608ull, 26584559915698317ull}}, {{17828057118699545856ull, 21267647932558653ull}}, {{6388798501467811456ull, 34028236692093846ull}}, {{1421689986432338880ull, 27222589353675077ull}}, {{12205398433371602048ull, 21778071482940061ull}}, {{12149939863910742656ull, 34844914372704098ull}}, {{17098649520612414784ull, 27875931498163278ull}}, {{2610873172264200832ull, 22300745198530623ull}}, {{488048260880811008ull, 35681192317648997ull}}, {{11458485052930379776ull, 28544953854119197ull}}, {{1788090412860483200ull, 22835963083295358ull}}, {{8809169959772207168ull, 18268770466636286ull}}, {{6715974306151710848ull, 29230032746618058ull}}, {{12751477074405189312ull, 23384026197294446ull}}, {{6511832844782241152ull, 18707220957835557ull}}, {{14108281366393496128ull, 29931553532536891ull}}, {{7597276278372886592ull, 23945242826029513ull}}, {{13456518652182129920ull, 19156194260823610ull}}, {{3083685769781856256ull, 30649910817317777ull}}, {{13534995060051216000ull, 24519928653854221ull}}, {{7138647233299062464ull, 19615942923083377ull}}, {{15111184388020410240ull, 31385508676933403ull}}, {{1020901066190597248ull, 25108406941546723ull}}, {{8195418482436298432ull, 20086725553237378ull}}, {{9423320757156167168ull, 32138760885179805ull}}, {{7538656605724933760ull, 25711008708143844ull}}, {{9720274099321857280ull, 20568806966515075ull}}, {{15552438558914971712ull, 32910091146424120ull}}, {{12441950847131977344ull, 26328072917139296ull}}, {{6264211862963671552ull, 21062458333711437ull}}, {{13712087795483784832ull, 33699933333938299ull}}, {{14659019051128938176ull, 26959946667150639ull}}, {{15416564055645060864ull, 21567957333720511ull}}, {{17287804859548276736ull, 34508731733952818ull}}, {{2762197443412890432ull, 27606985387162255ull}}, {{2209757954730312320ull, 22085588309729804ull}}, {{10914310357052320384ull, 35336941295567686ull}}, {{5042099470899945984ull, 28269553036454149ull}}, {{7723028391461867136ull, 22615642429163319ull}}, {{9867771527911404032ull, 18092513943330655ull}}, {{15788434444658246400ull, 28948022309329048ull}}, {{1562701111500866176ull, 23158417847463239ull}}, {{4939509703942603264ull, 18526734277970591ull}}, {{524517896824344576ull, 29642774844752946ull}}, {{15177009576427116928ull, 23714219875802356ull}}, {{8452258846399783232ull, 18971375900641885ull}}, {{13523614154239653184ull, 30354201441027016ull}}, {{7129542508649812224ull, 24283361152821613ull}}, {{13082331636403670400ull, 19426688922257290ull}}, {{2484986544536321088ull, 31082702275611665ull}}, {{1987989235629056832ull, 24866161820489332ull}}, {{12658437832728976448ull, 19892929456391465ull}}, {{1806756458656810688ull, 31828687130226345ull}}, {{1445405166925448576ull, 25462949704181076ull}}, {{15913719392508000128ull, 20370359763344860ull}}, {{7015206954303248640ull, 32592575621351777ull}}, {{16680212007668329856ull, 26074060497081421ull}}, {{9654820791392753536ull, 20859248397665137ull}}, {{690318007260764416ull, 33374797436264220ull}}, {{552254405808611520ull, 26699837949011376ull}}, {{15199198783614530496ull, 21359870359209100ull}}, {{5871973980073697216ull, 34175792574734561ull}}, {{1008230369317047424ull, 27340634059787649ull}}, {{4495933110195548288ull, 21872507247830119ull}}, {{14572190605796697920ull, 34996011596528190ull}}, {{11657752484637358336ull, 27996809277222552ull}}, {{1947504358226065984ull, 22397447421778042ull}}, {{6805355787903615936ull, 35835915874844867ull}}, {{16512331074548623680ull, 28668732699875893ull}}, {{2141818415413168000ull, 22934986159900715ull}}, {{1713454732330534400ull, 18347988927920572ull}}, {{6430876386470765376ull, 29356782284672915ull}}, {{5144701109176612288ull, 23485425827738332ull}}, {{15183807331567020800ull, 18788340662190665ull}}, {{5847347656797681664ull, 30061345059505065ull}}, {{4677878125438145344ull, 24049076047604052ull}}, {{14810348944576247232ull, 19239260838083241ull}}, {{16317860681838174912ull, 30782817340933186ull}}, {{9364939730728629632ull, 24626253872746549ull}}, {{11181300599324814016ull, 19701003098197239ull}}, {{6822034514693971456ull, 31521604957115583ull}}, {{12836325241238997824ull, 25217283965692466ull}}, {{6579711378249287936ull, 20173827172553973ull}}, {{6838189390456950400ull, 32278123476086357ull}}, {{16538597956591291264ull, 25822498780869085ull}}, {{13230878365273033024ull, 20657999024695268ull}}, {{17480056569694942528ull, 33052798439512429ull}}, {{17673394070497864320ull, 26442238751609943ull}}, {{3070668812172560448ull, 21153791001287955ull}}, {{4913070099476096768ull, 33846065602060728ull}}, {{11309153709064698048ull, 27076852481648582ull}}, {{1668625337767937792ull, 21661481985318866ull}}, {{13737846984654431488ull, 34658371176510185ull}}, {{10990277587723545152ull, 27726696941208148ull}}, {{16170919699662656768ull, 22181357552966518ull}}, {{3737378631008788928ull, 35490172084746430ull}}, {{2989902904807031104ull, 28392137667797144ull}}, {{6081271138587535232ull, 22713710134237715ull}}, {{4865016910870028160ull, 18170968107390172ull}}, {{11473375872133955392ull, 29073548971824275ull}}, {{9178700697707164352ull, 23258839177459420ull}}, {{7342960558165731456ull, 18607071341967536ull}}, {{4370039263581349696ull, 29771314147148058ull}}, {{10874729040348900416ull, 23817051317718446ull}}, {{5010434417537209984ull, 19053641054174757ull}}, {{11706043882801446336ull, 30485825686679611ull}}, {{5675486291499246720ull, 24388660549343689ull}}, {{8229737847941307712ull, 19510928439474951ull}}, {{5788882927222271680ull, 31217485503159922ull}}, {{15699152786003548288ull, 24973988402527937ull}}, {{5180624599319017984ull, 19979190722022350ull}}, {{8288999358910428800ull, 31966705155235760ull}}, {{6631199487128343040ull, 25573364124188608ull}}, {{12683657219186495104ull, 20458691299350886ull}}, {{12915153921214571520ull, 32733906078961418ull}}, {{17710820766455477824ull, 26187124863169134ull}}, {{17858005427906292608ull, 20949699890535307ull}}, {{13815413425682426880ull, 33519519824856492ull}}, {{3673633111062120832ull, 26815615859885194ull}}, {{6628255303591606976ull, 21452492687908155ull}}, {{10605208485746571200ull, 34323988300653048ull}}, {{15862864418081077632ull, 27459190640522438ull}}, {{1622245090239131136ull, 21967352512417951ull}}, {{13663638588608340736ull, 35147764019868721ull}}, {{7241562056144762304ull, 28118211215894977ull}}, {{16861296089141540800ull, 22494568972715981ull}}, {{1152632039433092992ull, 35991310356345571ull}}, {{15679500890514115712ull, 28793048285076456ull}}, {{8854251897669382208ull, 23034438628061165ull}}, {{7083401518135505792ull, 18427550902448932ull}}, {{15022791243758719616ull, 29484081443918291ull}}, {{8328884180265065344ull, 23587265155134633ull}}, {{14041804973695872896ull, 18869812124107706ull}}, {{15088190328429576000ull, 30191699398572330ull}}, {{12070552262743660800ull, 24153359518857864ull}}, {{13345790624936838976ull, 19322687615086291ull}}, {{13974567370415121728ull, 30916300184138066ull}}, {{7490305081590187072ull, 24733040147310453ull}}, {{13370941694755970304ull, 19786432117848362ull}}, {{6636111452641911168ull, 31658291388557380ull}}, {{5308889162113528960ull, 25326633110845904ull}}, {{7936460144432733440ull, 20261306488676723ull}}, {{9008987416350463232ull, 32418090381882757ull}}, {{18275236377306101568ull, 25934472305506205ull}}, {{14620189101844881216ull, 20747577844404964ull}}, {{12324256118726079040ull, 33196124551047943ull}}, {{17238102524464683840ull, 26556899640838354ull}}, {{17479830834313657408ull, 21245519712670683ull}}, {{5831636446450389952ull, 33992831540273094ull}}, {{8354657971902222272ull, 27194265232218475ull}}, {{6683726377521777792ull, 21755412185774780ull}}, {{10693962204034844480ull, 34808659497239648ull}}, {{15933867392711696256ull, 27846927597791718ull}}, {{1679047469943626048ull, 22277542078233375ull}}, {{2686475951909801664ull, 35644067325173400ull}}, {{2149180761527841344ull, 28515253860138720ull}}, {{1719344609222273024ull, 22812203088110976ull}}, {{16132870946345459712ull, 18249762470488780ull}}, {{7365849440443183936ull, 29199619952782049ull}}, {{9582028367096457472ull, 23359695962225639ull}}, {{11354971508419076288ull, 18687756769780511ull}}, {{10789256783986701440ull, 29900410831648818ull}}, {{16010103056673181824ull, 23920328665319054ull}}, {{16497431260080455744ull, 19136262932255243ull}}, {{4259797127677267328ull, 30618020691608390ull}}, {{3407837702141813824ull, 24494416553286712ull}}, {{13794316605939182016ull, 19595533242629369ull}}, {{11002860125276960320ull, 31352853188206991ull}}, {{5112939285479657920ull, 25082282550565593ull}}, {{11469049057867546944ull, 20065826040452474ull}}, {{7282432048362344192ull, 32105321664723959ull}}, {{9515294453431785664ull, 25684257331779167ull}}, {{233537933261607872ull, 20547405865423334ull}}, {{7752358322702393280ull, 32875849384677334ull}}, {{9891235472903824960ull, 26300679507741867ull}}, {{534290748839239296ull, 21040543606193494ull}}, {{8233562827626603520ull, 33664869769909590ull}}, {{6586850262101282816ull, 26931895815927672ull}}, {{16337526653906757248ull, 21545516652742137ull}}, {{11382647387283170304ull, 34472826644387420ull}}, {{9106117909826536256ull, 27578261315509936ull}}, {{3595545513119318656ull, 22062609052407949ull}}, {{13131570450474730496ull, 35300174483852718ull}}, {{17883953989863605056ull, 28240139587082174ull}}, {{17996512006632794368ull, 22592111669665739ull}}, {{18086558420048145792ull, 18073689335732591ull}}, {{3113051768883661056ull, 28917902937172147ull}}, {{13558487859332659776ull, 23134322349737717ull}}, {{3468092657982307200ull, 18507457879790174ull}}, {{12927645882255512128ull, 29611932607664278ull}}, {{17720814335288230336ull, 23689546086131422ull}}, {{6797953838746763648ull, 18951636868905138ull}}, {{7187377327252911552ull, 30322618990248221ull}}, {{2060553047060418880ull, 24258095192198577ull}}, {{12716488881874066048ull, 19406476153758861ull}}, {{12967684581514685120ull, 31050361846014178ull}}, {{17752845294695568704ull, 24840289476811342ull}}, {{6823578606272634304ull, 19872231581449074ull}}, {{18296423399520035584ull, 31795570530318518ull}}, {{3569092275390297472ull, 25436456424254815ull}}, {{2855273820312237952ull, 20349165139403852ull}}, {{8257786927241491136ull, 32558664223046163ull}}, {{13984927171277013504ull, 26046931378436930ull}}, {{11187941737021610816ull, 20837545102749544ull}}, {{6832660335008846336ull, 33340072164399271ull}}, {{1776779453265166784ull, 26672057731519417ull}}, {{12489470006837864384ull, 21337646185215533ull}}, {{16293803196198672704ull, 34140233896344853ull}}, {{1966996112733207168ull, 27312187117075883ull}}, {{8952294519670386368ull, 21849749693660706ull}}, {{6944973601988797568ull, 34959599509857130ull}}, {{5555978881591038080ull, 27967679607885704ull}}, {{8134131920014740736ull, 22374143686308563ull}}, {{9325262257281674880ull, 35798629898093701ull}}, {{3770860991083429568ull, 28638903918474961ull}}, {{17774084051834384960ull, 22911123134779968ull}}, {{3151220797241777024ull, 18328898507823975ull}}, {{5041953275586843200ull, 29326237612518360ull}}, {{4033562620469474560ull, 23460990090014688ull}}, {{10605547725859400320ull, 18768792072011750ull}}, {{16968876361375040512ull, 30030067315218800ull}}, {{13575101089100032384ull, 24024053852175040ull}}, {{10860080871280025920ull, 19219243081740032ull}}, {{2618734135080400192ull, 30750788930784052ull}}, {{13163033752290051072ull, 24600631144627241ull}}, {{6841078187090130560ull, 19680504915701793ull}}, {{7256376284602298560ull, 31488807865122869ull}}, {{9494449842423749184ull, 25191046292098295ull}}, {{7595559873938999360ull, 20152837033678636ull}}, {{4774198168818578304ull, 32244539253885818ull}}, {{11198056164538683264ull, 25795631403108654ull}}, {{12647793746372856960ull, 20636505122486923ull}}, {{16547121179454660800ull, 33018408195979077ull}}, {{5858999314079907968ull, 26414726556783262ull}}, {{15755245895489657344ull, 21131781245426609ull}}, {{14140346988557720832ull, 33810849992682575ull}}, {{11312277590846176640ull, 27048679994146060ull}}, {{9049822072676941312ull, 21638943995316848ull}}, {{10790366501541195776ull, 34622310392506957ull}}, {{1253595571749136000ull, 27697848314005566ull}}, {{15760271716366950080ull, 22158278651204452ull}}, {{10459039487219478848ull, 35453245841927124ull}}, {{12056580404517493376ull, 28362596673541699ull}}, {{13334613138355905024ull, 22690077338833359ull}}, {{14357039325426634368ull, 18152061871066687ull}}, {{8213867661714973696ull, 29043298993706700ull}}, {{6571094129371978944ull, 23234639194965360ull}}, {{5256875303497583168ull, 18587711355972288ull}}, {{4721651670854222720ull, 29740338169555661ull}}, {{87972521941467840ull, 23792270535644529ull}}, {{3759726832295084608ull, 19033816428515623ull}}, {{2326214116930225024ull, 30454106285624997ull}}, {{12929017737769910976ull, 24363285028499997ull}}, {{2964516560732108160ull, 19490628022799998ull}}, {{1053877682429462720ull, 31185004836479997ull}}, {{11911148590169301120ull, 24948003869183997ull}}, {{2150221242651620288ull, 19958403095347198ull}}, {{18197749247210233728ull, 31933444952555516ull}}, {{10868850583026276672ull, 25546755962044413ull}}, {{16073778095904841984ull, 20437404769635530ull}}, {{7271300879738195520ull, 32699847631416849ull}}, {{9506389518532466752ull, 26159878105133479ull}}, {{11294460429567883712ull, 20927902484106783ull}}, {{14381787872566703680ull, 33484643974570853ull}}, {{437383853827631936ull, 26787715179656683ull}}, {{7728604712545926208ull, 21430172143725346ull}}, {{4987069910589661312ull, 34288275429960554ull}}, {{7679004743213639360ull, 27430620343968443ull}}, {{13521901424054732096ull, 21944496275174754ull}}, {{10566995834261840448ull, 35111194040279607ull}}, {{1074899037925651712ull, 28088955232223686ull}}, {{15617314489308162624ull, 22471164185778948ull}}, {{2851610294441598336ull, 35953862697246318ull}}, {{9659985865037099264ull, 28763090157797054ull}}, {{11417337506771589760ull, 23010472126237643ull}}, {{16512567634901092416ull, 18408377700990114ull}}, {{15352061771616016960ull, 29453404321584183ull}}, {{1213602973067082560ull, 23562723457267347ull}}, {{12038928822679397056ull, 18850178765813877ull}}, {{4504890857319393984ull, 30160286025302204ull}}, {{7293261500597425472ull, 24128228820241763ull}}, {{13213306829961761024ull, 19302583056193410ull}}, {{2694546854229266048ull, 30884132889909457ull}}, {{13223683927609143808ull, 24707306311927565ull}}, {{10578947142087315072ull, 19765845049542052ull}}, {{2168920168372062784ull, 31625352079267284ull}}, {{5424484949439560576ull, 25300281663413827ull}}, {{15407634403777379392ull, 20240225330731061ull}}, {{17273517416559986432ull, 32384360529169698ull}}, {{2750767489022258176ull, 25907488423335759ull}} }; static const int bid_exponents_binary64[] = { -55, -51, -48, -45, -41, -38, -35, -31, -28, -25, -22, -18, -15, -12, -8, -5, -2, 2, 5, 8, 12, 15, 18, 22, 25, 28, 32, 35, 38, 42, 45, 48, 52, 55, 58, 62, 65, 68, 71, 75, 78, 81, 85, 88, 91, 95, 98, 101, 105, 108, 111, 115, 118, 121, 125, 128, 131, 135, 138, 141, 145, 148, 151, 155, 158, 161, 164, 168, 171, 174, 178, 181, 184, 188, 191, 194, 198, 201, 204, 208, 211, 214, 218, 221, 224, 228, 231, 234, 238, 241, 244, 248, 251, 254, 258, 261, 264, 267, 271, 274, 277, 281, 284, 287, 291, 294, 297, 301, 304, 307, 311, 314, 317, 321, 324, 327, 331, 334, 337, 341, 344, 347, 351, 354, 357, 360, 364, 367, 370, 374, 377, 380, 384, 387, 390, 394, 397, 400, 404, 407, 410, 414, 417, 420, 424, 427, 430, 434, 437, 440, 444, 447, 450, 454, 457, 460, 463, 467, 470, 473, 477, 480, 483, 487, 490, 493, 497, 500, 503, 507, 510, 513, 517, 520, 523, 527, 530, 533, 537, 540, 543, 547, 550, 553, 556, 560, 563, 566, 570, 573, 576, 580, 583, 586, 590, 593, 596, 600, 603, 606, 610, 613, 616, 620, 623, 626, 630, 633, 636, 640, 643, 646, 649, 653, 656, 659, 663, 666, 669, 673, 676, 679, 683, 686, 689, 693, 696, 699, 703, 706, 709, 713, 716, 719, 723, 726, 729, 733, 736, 739, 743, 746, 749, 752, 756, 759, 762, 766, 769, 772, 776, 779, 782, 786, 789, 792, 796, 799, 802, 806, 809, 812, 816, 819, 822, 826, 829, 832, 836, 839, 842, 845, 849, 852, 855, 859, 862, 865, 869, 872, 875, 879, 882, 885, 889, 892, 895, 899, 902, 905, 909, 912, 915, 919, 922, 925, 929, 932, 935, 939, 942, 945, 948, 952, 955, 958, 962, 965, 968, 972, 975, 978, 982, 985, 988, 992, 995, 998, 1002, 1005, 1008, 1012, 1015, 1018, 1022, 1025, 1028, 1032, 1035, 1038, 1041, 1045, 1048, 1051, 1055, 1058, 1061, 1065, 1068, 1071, 1075, 1078, 1081, 1085, 1088, 1091, 1095, 1098, 1101, 1105, 1108, 1111, 1115, 1118, 1121, 1125, 1128, 1131, 1134, 1138, 1141, 1144, 1148, 1151, 1154, 1158, 1161, 1164, 1168, 1171, 1174, 1178, 1181, 1184, 1188, 1191, 1194, 1198, 1201, 1204, 1208, 1211, 1214, 1218, 1221, 1224, 1228, 1231, 1234, 1237, 1241, 1244, 1247, 1251, 1254, 1257, 1261, 1264, 1267, 1271, 1274, 1277, 1281, 1284, 1287, 1291, 1294, 1297, 1301, 1304, 1307, 1311, 1314, 1317, 1321, 1324, 1327, 1330, 1334, 1337, 1340, 1344, 1347, 1350, 1354, 1357, 1360, 1364, 1367, 1370, 1374, 1377, 1380, 1384, 1387, 1390, 1394, 1397, 1400, 1404, 1407, 1410, 1414, 1417, 1420, 1424, 1427, 1430, 1433, 1437, 1440, 1443, 1447, 1450, 1453, 1457, 1460, 1463, 1467, 1470, 1473, 1477, 1480, 1483, 1487, 1490, 1493, 1497, 1500, 1503, 1507, 1510, 1513, 1517, 1520, 1523, 1526, 1530, 1533, 1536, 1540, 1543, 1546, 1550, 1553, 1556, 1560, 1563, 1566, 1570, 1573, 1576, 1580, 1583, 1586, 1590, 1593, 1596, 1600, 1603, 1606, 1610, 1613, 1616, 1620, 1623, 1626, 1629, 1633, 1636, 1639, 1643, 1646, 1649, 1653, 1656, 1659, 1663, 1666, 1669, 1673, 1676, 1679, 1683, 1686, 1689, 1693, 1696, 1699, 1703, 1706, 1709, 1713, 1716, 1719, 1722, 1726, 1729, 1732, 1736, 1739, 1742, 1746, 1749, 1752, 1756, 1759, 1762, 1766, 1769, 1772, 1776, 1779, 1782, 1786, 1789, 1792, 1796, 1799, 1802, 1806, 1809, 1812, 1815, 1819, 1822, 1825, 1829, 1832, 1835, 1839, 1842, 1845, 1849, 1852, 1855, 1859, 1862, 1865, 1869, 1872, 1875, 1879, 1882, 1885, 1889, 1892, 1895, 1899, 1902, 1905, 1909, 1912, 1915, 1918, 1922, 1925, 1928, 1932, 1935, 1938, 1942, 1945, 1948, 1952, 1955, 1958, 1962, 1965, 1968, 1972, 1975, 1978, 1982, 1985, 1988, 1992, 1995, 1998, 2002, 2005, 2008, 2011, 2015, 2018, 2021, 2025, 2028, 2031, 2035, 2038, 2041, 2045, 2048, 2051, 2055, 2058, 2061, 2065, 2068, 2071, 2075, 2078, 2081, 2085, 2088, 2091, 2095, 2098, 2101, 2105, 2108, 2111, 2114, 2118, 2121, 2124, 2128, 2131, 2134, 2138, 2141, 2144, 2148, 2151, 2154, 2158, 2161, }; static const BID_UINT256 bid_multipliers1_binary64[] = { {{1837554224478941466ull, 10276842184138466546ull, 11651621577776737258ull, 7754513766366540701ull}}, {{5760157408726726321ull, 11034712383513929495ull, 9588106495324154738ull, 4846571103979087938ull}}, {{2588510742481019997ull, 4570018442537636061ull, 2761761082300417615ull, 6058213879973859923ull}}, {{7847324446528662900ull, 1100837034744657172ull, 17287259408157685731ull, 7572767349967324903ull}}, {{14127949815935190120ull, 16828924211211268396ull, 17722066157739635437ull, 4732979593729578064ull}}, {{17659937269918987650ull, 7201097208731921783ull, 3705838623464992681ull, 5916224492161972581ull}}, {{17463235568971346659ull, 13613057529342290133ull, 9243984297758628755ull, 7395280615202465726ull}}, {{13220365239820785614ull, 6202317946625237381ull, 1165804167671755068ull, 4622050384501541079ull}}, {{2690398494493818305ull, 7752897433281546727ull, 15292313264871857547ull, 5777562980626926348ull}}, {{17198056173399436594ull, 5079435773174545504ull, 668647507380270318ull, 7221953725783657936ull}}, {{3050826143039744126ull, 15572666753322957689ull, 835809384225337897ull, 9027442157229572420ull}}, {{13435981385468309839ull, 2815387693185766699ull, 9745752901995611994ull, 5642151348268482762ull}}, {{12183290713407999394ull, 12742606653336984182ull, 2958819090639739184ull, 7052689185335603453ull}}, {{6005741354905223435ull, 15928258316671230228ull, 8310209881727061884ull, 8815861481669504316ull}}, {{12976960383670540455ull, 731789411064743084ull, 14417253212934189486ull, 5509913426043440197ull}}, {{16221200479588175569ull, 10138108800685704663ull, 4186508460885573145ull, 6887391782554300247ull}}, {{15664814581057831557ull, 17284322019284518733ull, 621449557679578527ull, 8609239728192875309ull}}, {{12096352122374838675ull, 17720230289693906064ull, 2694248982763430531ull, 5380774830120547068ull}}, {{15120440152968548344ull, 17538601843689994676ull, 3367811228454288164ull, 6725968537650683835ull}}, {{453806117501133814ull, 3476508230902941730ull, 18044822090850023918ull, 8407460672063354793ull}}, {{4895314841865596538ull, 16007875699596502293ull, 4360484779140183092ull, 5254662920039596746ull}}, {{10730829570759383576ull, 1563100550786076250ull, 14673978010780004674ull, 6568328650049495932ull}}, {{4190164926594453662ull, 11177247725337371121ull, 18342472513475005842ull, 8210410812561869915ull}}, {{14148068125190003299ull, 11597465846763244854ull, 9158202311708184699ull, 5131506757851168697ull}}, {{8461713119632728315ull, 9885146290026668164ull, 16059438908062618778ull, 6414383447313960871ull}}, {{10577141399540910394ull, 3133060825678559397ull, 15462612616650885569ull, 8017979309142451089ull}}, {{8916556383926762949ull, 13487378062117569383ull, 2746603857765721624ull, 5011237068214031931ull}}, {{6534009461481065782ull, 16859222577646961729ull, 17268312877489315742ull, 6264046335267539913ull}}, {{12779197845278720131ull, 11850656185203926353ull, 7750333041579480966ull, 7830057919084424892ull}}, {{1069469625658118226ull, 2794974097325066067ull, 14067330187841951412ull, 4893786199427765557ull}}, {{15171895087354811494ull, 3493717621656332583ull, 3749104679520275553ull, 6117232749284706947ull}}, {{14353182840766126464ull, 8978833045497803633ull, 74694830972956537ull, 7646540936605883684ull}}, {{2053210247837747184ull, 17140985699504597031ull, 9270056306212873643ull, 4779088085378677302ull}}, {{16401570865079347692ull, 16814546105953358384ull, 2364198345911316246ull, 5973860106723346628ull}}, {{2055219507639632999ull, 11794810595586922173ull, 2955247932389145308ull, 7467325133404183285ull}}, {{3590355201488464576ull, 16595128659096602166ull, 4152872966956909769ull, 4667078208377614553ull}}, {{13711316038715356528ull, 6908852768588588995ull, 9802777227123525116ull, 5833847760472018191ull}}, {{12527459029966807756ull, 8636065960735736244ull, 7641785515477018491ull, 7292309700590022739ull}}, {{15659323787458509695ull, 6183396432492282401ull, 4940545875918885210ull, 9115387125737528424ull}}, {{2869548339520486704ull, 8476308788735064405ull, 3087841172449303256ull, 5697116953585955265ull}}, {{8198621442827996284ull, 10595385985918830506ull, 8471487483989016974ull, 7121396191982444081ull}}, {{1024904766680219546ull, 4020860445543762325ull, 15201045373413659122ull, 8901745239978055101ull}}, {{2946408488388831169ull, 7124723796892239357ull, 11806496367597230903ull, 5563590774986284438ull}}, {{8294696628913426865ull, 4294218727687911292ull, 5534748422641762821ull, 6954488468732855548ull}}, {{10368370786141783581ull, 9979459428037277019ull, 6918435528302203526ull, 8693110585916069435ull}}, {{4174388732124920786ull, 1625476124095910233ull, 2018179195975183252ull, 5433194116197543397ull}}, {{9829671933583538887ull, 2031845155119887791ull, 7134410013396366969ull, 6791492645246929246ull}}, {{7675403898552035704ull, 7151492462327247643ull, 18141384553600234519ull, 8489365806558661557ull}}, {{2491284427381328363ull, 11387211816595611633ull, 13644208355213840526ull, 5305853629099163473ull}}, {{7725791552654048358ull, 5010642733889738733ull, 3220202388735136946ull, 6632317036373954342ull}}, {{14268925459244948351ull, 15486675454216949224ull, 13248625022773696990ull, 8290396295467442927ull}}, {{8918078412028092720ull, 5067486140458205361ull, 15197919666874642475ull, 5181497684667151829ull}}, {{15759284033462503804ull, 1722671657145368797ull, 5162341528311139382ull, 6476872105833939787ull}}, {{5864046986545966042ull, 11376711608286486805ull, 1841240891961536323ull, 8096090132292424734ull}}, {{5970872375804922729ull, 4804601745965360301ull, 14985833612758123914ull, 5060056332682765458ull}}, {{12075276488183541315ull, 15229124219311476184ull, 9508919979092879084ull, 6325070415853456823ull}}, {{15094095610229426643ull, 589661200429793614ull, 7274463955438710952ull, 7906338019816821029ull}}, {{4822123737966003748ull, 368538250268621009ull, 6852382981362888297ull, 4941461262385513143ull}}, {{10639340690884892589ull, 5072358831263164165ull, 3953792708276222467ull, 6176826577981891429ull}}, {{17910861882033503640ull, 1728762520651567302ull, 9553926903772665988ull, 7721033222477364286ull}}, {{6582602657843551871ull, 10303848612262005372ull, 1359518296430528338ull, 4825645764048352679ull}}, {{8228253322304439839ull, 3656438728472730907ull, 15534455925820324135ull, 6032057205060440848ull}}, {{5673630634453161895ull, 18405606465873077346ull, 971325833565853552ull, 7540071506325551061ull}}, {{8157705164960614088ull, 11503504041170673341ull, 2912921655192352422ull, 4712544691453469413ull}}, {{14808817474628155514ull, 5156008014608565868ull, 8252838087417828432ull, 5890680864316836766ull}}, {{64277769575642777ull, 6445010018260707336ull, 1092675572417509732ull, 7363351080396045958ull}}, {{80347211969553471ull, 8056262522825884170ull, 10589216502376662973ull, 9204188850495057447ull}}, {{4661903025908358824ull, 7341007085979871558ull, 13535789341626496214ull, 5752618031559410904ull}}, {{15050750819240224337ull, 18399630894329615255ull, 16919736677033120267ull, 7190772539449263630ull}}, {{14201752505622892517ull, 18387852599484631165ull, 11926298809436624526ull, 8988465674311579538ull}}, {{11181938325228001776ull, 6880721856250506574ull, 12065622774325278233ull, 5617791046444737211ull}}, {{4754050869680226411ull, 13212588338740521122ull, 10470342449479209887ull, 7022238808055921514ull}}, {{15165935623955058822ull, 11904049404998263498ull, 3864556024994236551ull, 8777798510069901893ull}}, {{14090395783399299668ull, 14357559905764996542ull, 4721190524835091796ull, 5486124068793688683ull}}, {{8389622692394348777ull, 17946949882206245678ull, 1289802137616476841ull, 6857655085992110854ull}}, {{1263656328638160163ull, 8598629297475643386ull, 10835624708875371860ull, 8572068857490138567ull}}, {{5401471223826238006ull, 14597515347777052924ull, 13689794470688189268ull, 5357543035931336604ull}}, {{6751839029782797507ull, 18246894184721316155ull, 17112243088360236585ull, 6696928794914170755ull}}, {{3828112768801108980ull, 8973559675619481482ull, 16778617842022907828ull, 8371160993642713444ull}}, {{7004256498928081017ull, 14831846834116951734ull, 1263264114409541584ull, 5231975621026695903ull}}, {{17978692660514877079ull, 93064468936638051ull, 15414138198294090693ull, 6539969526283369878ull}}, {{17861679807216208444ull, 4728016604598185468ull, 10044300711012837558ull, 8174961907854212348ull}}, {{1940177842655354470ull, 16790068433156029630ull, 15501059981237799281ull, 5109351192408882717ull}}, {{11648594340173968895ull, 7152527486162873325ull, 5541266921265085390ull, 6386688990511103397ull}}, {{725684869935297407ull, 18164031394558367465ull, 11538269670008744641ull, 7983361238138879246ull}}, {{11982768089778030640ull, 4434990593957897809ull, 2599732525328077497ull, 4989600773836799529ull}}, {{1143402056940374587ull, 10155424260874760166ull, 7861351675087484775ull, 6237000967295999411ull}}, {{10652624608030244042ull, 8082594307666062303ull, 5215003575431968065ull, 7796251209119999264ull}}, {{13575419407659984382ull, 16580836488359758699ull, 3259377234644980040ull, 4872657005699999540ull}}, {{12357588241147592574ull, 2279301536740146758ull, 4074221543306225051ull, 6090821257124999425ull}}, {{6223613264579714909ull, 16684184976207347160ull, 9704462947560169217ull, 7613526571406249281ull}}, {{3889758290362321819ull, 3510086582488510119ull, 17594504388293575521ull, 4758454107128905800ull}}, {{250511844525514369ull, 8999294246538025553ull, 3546386411657417785ull, 5948067633911132251ull}}, {{4924825824084280865ull, 15860803826599919845ull, 18268041069853935943ull, 7435084542388915313ull}}, {{5383859149266369493ull, 16830531419266031759ull, 4499996641017628108ull, 4646927838993072071ull}}, {{2118137918155573962ull, 2591420200372988083ull, 1013309782844647232ull, 5808659798741340089ull}}, {{16482730452976631164ull, 3239275250466235103ull, 5878323246983196944ull, 7260824748426675111ull}}, {{15991727047793401051ull, 4049094063082793879ull, 2736218040301608276ull, 9076030935533343889ull}}, {{16912358432511957513ull, 11754055826281521982ull, 13239351321256974932ull, 5672519334708339930ull}}, {{11917076003785171083ull, 14692569782851902478ull, 7325817114716442857ull, 7090649168385424913ull}}, {{5672972967876688046ull, 4530654173282714386ull, 13768957411822941476ull, 8863311460481781141ull}}, {{8157294123350317933ull, 12055030895156472299ull, 10911441391603032374ull, 5539569662801113213ull}}, {{5584931635760509512ull, 5845416582090814566ull, 18250987757931178372ull, 6924462078501391516ull}}, {{16204536581555412698ull, 7306770727613518207ull, 4366990623704421349ull, 8655577598126739396ull}}, {{17045364391113214793ull, 6872574713972142831ull, 11952741176670039151ull, 5409735998829212122ull}}, {{16695019470464130587ull, 3979032374037790635ull, 5717554433982773131ull, 6762169998536515153ull}}, {{16257088319652775329ull, 362104449119850390ull, 11758629060905854318ull, 8452712498170643941ull}}, {{5548994181355596677ull, 14061373335982070206ull, 9654986172279852900ull, 5282945311356652463ull}}, {{16159614763549271654ull, 17576716669977587757ull, 7457046696922428221ull, 6603681639195815579ull}}, {{6364460399154425855ull, 8135837782189820985ull, 4709622352725647373ull, 8254602048994769474ull}}, {{15507002795539985920ull, 7390741623082332067ull, 7555199988880917512ull, 5159126280621730921ull}}, {{14772067475997594496ull, 9238427028852915084ull, 14055686004528534794ull, 6448907850777163651ull}}, {{18340271287441503ull, 2324661749211368048ull, 12957921487233280589ull, 8061134813471454564ull}}, {{11462669554650940ull, 3758756602470798982ull, 17322072966375576176ull, 5038209258419659102ull}}, {{9237700373798089483ull, 4698445753088498727ull, 12429219171114694412ull, 6297761573024573878ull}}, {{6935439448820223949ull, 5873057191360623409ull, 6313151927038592207ull, 7872201966280717348ull}}, {{15863864701581109728ull, 10588189772241471486ull, 13169091991253895937ull, 4920126228925448342ull}}, {{10606458840121611352ull, 17846923233729227262ull, 7237992952212594113ull, 6150157786156810428ull}}, {{4034701513297238382ull, 8473595986879370366ull, 9047491190265742642ull, 7687697232696013035ull}}, {{16356746501092937701ull, 9907683510226994382ull, 3348838984702395199ull, 4804810770435008147ull}}, {{11222561089511396318ull, 7772918369356355074ull, 18021106786160157711ull, 6006013463043760183ull}}, {{4804829325034469590ull, 5104461943268055939ull, 17914697464272809235ull, 7507516828804700229ull}}, {{697175318932849542ull, 884445705328841010ull, 13502528924384199724ull, 4692198018002937643ull}}, {{10094841185520837735ull, 1105557131661051262ull, 12266475137052861751ull, 5865247522503672054ull}}, {{3395179445046271361ull, 15217004469858477790ull, 6109721884461301380ull, 7331559403129590068ull}}, {{13467346343162615009ull, 574511513613545621ull, 7637152355576626726ull, 9164449253911987585ull}}, {{10722934473690328333ull, 14194127751290629725ull, 16302435268303861463ull, 5727780783694992240ull}}, {{18015354110540298320ull, 13130973670685899252ull, 1931300011670275213ull, 7159725979618740301ull}}, {{4072448564465821284ull, 2578659033075210354ull, 7025811033015231921ull, 8949657474523425376ull}}, {{7156966371218526206ull, 13140876941740476231ull, 4391131895634519950ull, 5593535921577140860ull}}, {{4334521945595769854ull, 7202724140320819481ull, 5488914869543149938ull, 6991919901971426075ull}}, {{10029838450422100221ull, 18226777212255800159ull, 2249457568501549518ull, 8739899877464282594ull}}, {{13186178059154894494ull, 6780049739232487195ull, 6017596998740856353ull, 5462437423415176621ull}}, {{11871036555516230214ull, 13086748192467996898ull, 12133682266853458345ull, 6828046779268970776ull}}, {{5615423657540511959ull, 2523377185302832411ull, 15167102833566822932ull, 8535058474086213470ull}}, {{1203796776749126023ull, 10800482777669046065ull, 4867753252551876428ull, 5334411546303883419ull}}, {{6116431989363795432ull, 13500603472086307581ull, 1473005547262457631ull, 6668014432879854274ull}}, {{12257226005132132194ull, 12264068321680496572ull, 11064628970932847847ull, 8335018041099817842ull}}, {{16884138290062358430ull, 14582571728691392213ull, 11527079125260417808ull, 5209386275687386151ull}}, {{7270114807295784325ull, 18228214660864240267ull, 9797162888148134356ull, 6511732844609232689ull}}, {{4475957490692342502ull, 4338524252370748718ull, 16858139628612555850ull, 8139666055761540861ull}}, {{16632531486964877776ull, 7323263676159105852ull, 12842180277096541358ull, 5087291284850963038ull}}, {{2343920284996545604ull, 18377451632053658124ull, 6829353309515900889ull, 6359114106063703798ull}}, {{2929900356245682005ull, 9136756484784908943ull, 17760063673749651920ull, 7948892632579629747ull}}, {{8748716750294633109ull, 5710472802990568089ull, 8794196786879838498ull, 4968057895362268592ull}}, {{15547581956295679290ull, 16361463040592985919ull, 10992745983599798122ull, 6210072369202835740ull}}, {{14822791426942211209ull, 11228456763886456591ull, 13740932479499747653ull, 7762590461503544675ull}}, {{16181773669479963862ull, 9323628486642729321ull, 6282239790473648331ull, 4851619038439715422ull}}, {{6392159031567791115ull, 7042849589876023748ull, 17076171774946836222ull, 6064523798049644277ull}}, {{7990198789459738893ull, 18026934024199805493ull, 7510156663401381565ull, 7580654747562055347ull}}, {{7299717252626030761ull, 13572676774338572385ull, 2388004905412169526ull, 4737909217226284592ull}}, {{13736332584209926355ull, 7742473931068439673ull, 2985006131765211908ull, 5922386521532855740ull}}, {{3335357674980244231ull, 9678092413835549592ull, 3731257664706514885ull, 7402983151916069675ull}}, {{2084598546862652645ull, 8354650767860912447ull, 26193031227877851ull, 4626864469947543547ull}}, {{16440806238860479518ull, 5831627441398752654ull, 13867799344317011026ull, 5783580587434429433ull}}, {{11327635761720823589ull, 16512906338603216626ull, 3499691125114100070ull, 7229475734293036792ull}}, {{4936172665296253678ull, 11417760886399244975ull, 4374613906392625088ull, 9036844667866295990ull}}, {{10002636943451240405ull, 7136100553999528109ull, 16569191746777554392ull, 5648027917416434993ull}}, {{17114982197741438410ull, 8920125692499410136ull, 6876431628189779278ull, 7060034896770543742ull}}, {{2946983673467246397ull, 1926785078769486863ull, 17818911572091999906ull, 8825043620963179677ull}}, {{8759393823558110854ull, 5815926692658317193ull, 13442662741771193893ull, 5515652263101987298ull}}, {{15560928297875026471ull, 11881594384250284395ull, 7579956390359216558ull, 6894565328877484123ull}}, {{14839474353916395185ull, 5628620943458079686ull, 4863259469521632794ull, 8618206661096855154ull}}, {{4662985452770359087ull, 8129574108088687708ull, 7651223186878408400ull, 5386379163185534471ull}}, {{5828731815962948858ull, 10161967635110859635ull, 4952342965170622596ull, 6732973953981918089ull}}, {{2674228751526298169ull, 12702459543888574544ull, 10802114724890666149ull, 8416217442477397611ull}}, {{1671392969703936356ull, 10244880224144053042ull, 4445478693842972391ull, 5260135901548373507ull}}, {{11312613248984696253ull, 8194414261752678398ull, 945162348876327585ull, 6575169876935466884ull}}, {{4917394524376094508ull, 14854703845618235902ull, 1181452936095409481ull, 8218962346169333605ull}}, {{16908429633017222779ull, 2366660875870315582ull, 3044251094273324878ull, 5136851466355833503ull}}, {{11912165004416752666ull, 12181698131692670286ull, 17640371923123819809ull, 6421064332944791878ull}}, {{5666834218666165025ull, 1392064609333674146ull, 12827092867049998954ull, 8026330416180989848ull}}, {{8153457405093741045ull, 5481726399260934245ull, 8016933041906249346ull, 5016456510113118655ull}}, {{14803507774794564210ull, 16075530035930943614ull, 5409480283955423778ull, 6270570637641398319ull}}, {{9281012681638429454ull, 10871040508058903710ull, 2150164336516891819ull, 7838213297051747899ull}}, {{1188946907596630505ull, 4488557308323120867ull, 17484753774818915051ull, 4898883310657342436ull}}, {{15321241689777951843ull, 999010616976513179ull, 3409198144814092198ull, 6123604138321678046ull}}, {{14539866093795051900ull, 10472135308075417282ull, 13484869717872391055ull, 7654505172902097557ull}}, {{13699102327049295341ull, 13462613595188217657ull, 10733886582883938361ull, 4784065733063810973ull}}, {{3288819853529455465ull, 2993208938703108360ull, 18029044247032310856ull, 5980082166329763716ull}}, {{4111024816911819331ull, 3741511173378885450ull, 4089561235080836954ull, 7475102707912204646ull}}, {{7181076528997274986ull, 6950130501789191310ull, 16391033827207686808ull, 4671939192445127903ull}}, {{18199717698101369540ull, 8687663127236489137ull, 15877106265582220606ull, 5839923990556409879ull}}, {{8914589067344548213ull, 1636206872190835614ull, 15234696813550387854ull, 7299904988195512349ull}}, {{1919864297325909458ull, 11268630627093320326ull, 5208312961655821105ull, 9124881235244390437ull}}, {{15034973241110857124ull, 125365114292243347ull, 5561038610248582143ull, 5703050772027744023ull}}, {{14182030532961183500ull, 13991764448147467896ull, 2339612244383339774ull, 7128813465034680029ull}}, {{17727538166201479375ull, 8266333523329559062ull, 7536201323906562622ull, 8911016831293350036ull}}, {{6468025335448536706ull, 554772433653586510ull, 13933497864296377447ull, 5569385519558343772ull}}, {{17308403706165446690ull, 14528523597349146849ull, 17416872330370471808ull, 6961731899447929715ull}}, {{7800446577424644651ull, 18160654496686433562ull, 17159404394535701856ull, 8702164874309912144ull}}, {{9486965129317790811ull, 11350409060429020976ull, 10724627746584813660ull, 5438853046443695090ull}}, {{11858706411647238513ull, 14188011325536276220ull, 4182412646376241267ull, 6798566308054618863ull}}, {{14823383014559048142ull, 13123328138492957371ull, 616329789542913680ull, 8498207885068273579ull}}, {{6958771374885711137ull, 8202080086558098357ull, 16526107182960178714ull, 5311379928167670986ull}}, {{13310150237034526825ull, 1029228071342847138ull, 11434261941845447585ull, 6639224910209588733ull}}, {{7414315759438382723ull, 5898221107605946827ull, 457769372024645769ull, 8299031137761985917ull}}, {{2328104340435295250ull, 15215603238322186527ull, 2591948866729097557ull, 5186894461101241198ull}}, {{16745188480826282774ull, 5184445992620569446ull, 12463308120266147755ull, 6483618076376551497ull}}, {{11708113564178077660ull, 1868871472348323904ull, 1744077095050520982ull, 8104522595470689372ull}}, {{7317570977611298537ull, 15003102725499866152ull, 10313420221261351421ull, 5065326622169180857ull}}, {{9146963722014123172ull, 4918820351592668978ull, 17503461295004077181ull, 6331658277711476071ull}}, {{2210332615662878157ull, 10760211457918224127ull, 17267640600327708572ull, 7914572847139345089ull}}, {{8298986912430380704ull, 15948504198053665887ull, 3874746347563736001ull, 4946608029462090681ull}}, {{5762047622110587976ull, 6100572192284918647ull, 9455118952882057906ull, 6183260036827613351ull}}, {{2590873509210847066ull, 16849087277210924117ull, 7207212672675184478ull, 7729075046034516689ull}}, {{3925138952470473368ull, 5918993529829439669ull, 16033722966490460059ull, 4830671903771572930ull}}, {{9518109709015479614ull, 2787055893859411682ull, 10818781671258299266ull, 6038339879714466163ull}}, {{2674265099414573710ull, 12707191904179040411ull, 8911791070645486178ull, 7547924849643082704ull}}, {{17812316751629966233ull, 12553680958539288160ull, 5569869419153428861ull, 4717453031026926690ull}}, {{3818651865827906175ull, 1857043142891946489ull, 16185708810796561885ull, 5896816288783658362ull}}, {{9385000850712270622ull, 6932989947042321015ull, 11008763976640926548ull, 7371020360979572953ull}}, {{7119565044962950374ull, 8666237433802901269ull, 18372640989228546089ull, 9213775451224466191ull}}, {{6755571162315537936ull, 16945613442195283053ull, 18400429645908923161ull, 5758609657015291369ull}}, {{13056149971321810324ull, 7346958747461940104ull, 9165479002103990240ull, 7198262071269114212ull}}, {{16320187464152262904ull, 9183698434327425130ull, 11456848752629987800ull, 8997827589086392765ull}}, {{14811803183522552219ull, 5739811521454640706ull, 9466373479607436327ull, 5623642243178995478ull}}, {{9291381942548414466ull, 2563078383390912979ull, 2609594812654519601ull, 7029552803973744348ull}}, {{7002541409758130179ull, 7815533997666029128ull, 3261993515818149501ull, 8786941004967180435ull}}, {{4376588381098831362ull, 7190551757754962157ull, 18179647011882201102ull, 5491838128104487771ull}}, {{10082421494800927106ull, 18211561734048478504ull, 18112872746425363473ull, 6864797660130609714ull}}, {{12603026868501158883ull, 8929394112278434418ull, 13417718896176928534ull, 8580997075163262143ull}}, {{12488577811240612206ull, 969185301746633607ull, 15303603337751662190ull, 5363123171977038839ull}}, {{10999036245623377353ull, 10434853664038067817ull, 14517818153762189833ull, 6703903964971298549ull}}, {{18360481325456609595ull, 17655253098474972675ull, 4312214636920573579ull, 8379879956214123187ull}}, {{9169457819196687045ull, 8728690177333163970ull, 389291138861664535ull, 5237424972633826992ull}}, {{2238450237141082998ull, 6299176703239067059ull, 486613923577080669ull, 6546781215792283740ull}}, {{16633120851708517460ull, 12485656897476221727ull, 608267404471350836ull, 8183476519740354675ull}}, {{17313229559958905269ull, 17026907597777414387ull, 16521068192290451936ull, 5114672824837721671ull}}, {{17029850931521243682ull, 2836890423512216368ull, 16039649221935677017ull, 6393341031047152089ull}}, {{2840569590692002986ull, 8157799047817658365ull, 6214503472137432559ull, 7991676288808940112ull}}, {{4081199003396195818ull, 12016153432527118334ull, 3884064670085895349ull, 4994797680505587570ull}}, {{14324870791100020581ull, 1185133735376734205ull, 14078452874462144995ull, 6243497100631984462ull}}, {{4071030433592862014ull, 15316475224503081469ull, 8374694056222905435ull, 7804371375789980578ull}}, {{4850237030209232711ull, 7266954006100731966ull, 9845869803566703801ull, 4877732109868737861ull}}, {{15286168324616316697ull, 13695378526053302861ull, 16919023272885767655ull, 6097165137335922326ull}}, {{5272652350488232159ull, 12507537139139240673ull, 11925407054252433761ull, 7621456421669902908ull}}, {{14824622765123614859ull, 899681684320943564ull, 16676751445762546909ull, 4763410263543689317ull}}, {{84034382694966958ull, 5736288123828567360ull, 7010881251921019924ull, 5954262829429611647ull}}, {{105042978368708697ull, 7170360154785709200ull, 4151915546473887001ull, 7442828536787014559ull}}, {{65651861480442936ull, 16010690142809538010ull, 9512476244187261231ull, 4651767835491884099ull}}, {{9305436863705329478ull, 15401676660084534608ull, 7278909286806688635ull, 5814709794364855124ull}}, {{11631796079631661847ull, 14640409806678280356ull, 9098636608508360794ull, 7268387242956068905ull}}, {{14539745099539577309ull, 9077140221493074637ull, 15984981779062838897ull, 9085484053695086131ull}}, {{11393183696425929770ull, 17202427684501641408ull, 7684770602700580358ull, 5678427533559428832ull}}, {{14241479620532412213ull, 12279662568772275952ull, 9605963253375725448ull, 7098034416949286040ull}}, {{17801849525665515266ull, 15349578210965344940ull, 12007454066719656810ull, 8872543021186607550ull}}, {{1902783916686171233ull, 14205172400280728492ull, 2892972773272397602ull, 5545339388241629719ull}}, {{2378479895857714042ull, 8533093463496134807ull, 17451274021872660715ull, 6931674235302037148ull}}, {{16808157925104306264ull, 6054680810942780604ull, 3367348453631274278ull, 8664592794127546436ull}}, {{1281726666335415607ull, 17619233562121401590ull, 11327964820374322231ull, 5415370496329716522ull}}, {{10825530369774045317ull, 17412355934224364083ull, 4936583988613126981ull, 6769213120412145653ull}}, {{8920226943790168742ull, 7930386862498291392ull, 10782416004193796631ull, 8461516400515182066ull}}, {{5575141839868855464ull, 11874020816702513976ull, 11350696021048510798ull, 5288447750321988791ull}}, {{6968927299836069330ull, 5619153984023366662ull, 9576684007883250594ull, 6610559687902485989ull}}, {{17934531161649862470ull, 16247314516883984135ull, 16582541028281451146ull, 8263199609878107486ull}}, {{18126611003672245900ull, 14766257591479877988ull, 5752402124248519062ull, 5164499756173817179ull}}, {{4211519680880755759ull, 9234449952495071678ull, 2578816636883260924ull, 6455624695217271474ull}}, {{14487771637955720506ull, 11543062440618839597ull, 12446892832958851963ull, 8069530869021589342ull}}, {{11360700282936019269ull, 4908571016173080796ull, 3167622002171894573ull, 5043456793138493339ull}}, {{14200875353670024086ull, 10747399788643738899ull, 17794585557997031928ull, 6304320991423116673ull}}, {{13139408173660142203ull, 13434249735804673624ull, 8408173892214126198ull, 7880401239278895842ull}}, {{8212130108537588877ull, 3784720066450533111ull, 9866794701061216778ull, 4925250774549309901ull}}, {{5653476617244598192ull, 13954272119917942197ull, 16945179394753908876ull, 6156563468186637376ull}}, {{11678531789983135644ull, 17442840149897427746ull, 2734730169732834479ull, 7695704335233296721ull}}, {{11910768387166847682ull, 17819304121326974197ull, 13238421402151491309ull, 4809815209520810450ull}}, {{1053402428676395890ull, 8439072096376554035ull, 7324654715834588329ull, 6012269011901013063ull}}, {{15151811091127658574ull, 15160526138898080447ull, 4544132376365847507ull, 7515336264876266329ull}}, {{16387410959595868465ull, 7169485827597606327ull, 14369297781297124452ull, 4697085165547666455ull}}, {{15872577681067447677ull, 8961857284497007909ull, 13349936208194017661ull, 5871356456934583069ull}}, {{6005664046052145885ull, 15814007624048647791ull, 2852362204960358364ull, 7339195571168228837ull}}, {{2895394039137794452ull, 1320765456351258123ull, 8177138774627835860ull, 9173994463960286046ull}}, {{17950522338956979196ull, 10048850447074312134ull, 499025715715009508ull, 5733746539975178779ull}}, {{13214780886841448187ull, 12561063058842890168ull, 14458840199925925597ull, 7167183174968973473ull}}, {{16518476108551810234ull, 1866270768271448998ull, 4238492194625243285ull, 8958978968711216842ull}}, {{5712361549417493492ull, 3472262239383349576ull, 7260743640068164957ull, 5599361855444510526ull}}, {{7140451936771866865ull, 8952013817656574874ull, 18299301586939982004ull, 6999202319305638157ull}}, {{18148936957819609390ull, 11190017272070718592ull, 9039068928392813793ull, 8749002899132047697ull}}, {{11343085598637255869ull, 76231767403117264ull, 17178633126313978381ull, 5468126811957529810ull}}, {{14178856998296569836ull, 4706975727681284484ull, 12249919371037697168ull, 6835158514946912263ull}}, {{17723571247870712295ull, 5883719659601605605ull, 10700713195369733556ull, 8543948143683640329ull}}, {{13383075039132889136ull, 12900696824105779311ull, 18217160793174553232ull, 5339967589802275205ull}}, {{12117157780488723516ull, 16125871030132224139ull, 8936392936186027828ull, 6674959487252844007ull}}, {{10534761207183516491ull, 1710594713955728558ull, 6558805151805146882ull, 8343699359066055009ull}}, {{1972539736062309903ull, 5680807714649718253ull, 15628468265946686561ull, 5214812099416284380ull}}, {{7077360688505275283ull, 11712695661739535720ull, 1088841258723806585ull, 6518515124270355476ull}}, {{8846700860631594104ull, 805811521892255938ull, 1361051573404758232ull, 8148143905337944345ull}}, {{10140874056322134219ull, 503632201182659961ull, 12379872279446443655ull, 5092589940836215215ull}}, {{17287778588830055677ull, 14464598306760488663ull, 10863154330880666664ull, 6365737426045269019ull}}, {{16998037217610181693ull, 18080747883450610829ull, 8967256895173445426ull, 7957171782556586274ull}}, {{12929616270220057510ull, 15912153445584019672ull, 10216221577910791295ull, 4973232364097866421ull}}, {{16162020337775071888ull, 15278505788552636686ull, 17381962990815877023ull, 6216540455122333026ull}}, {{10979153385364064051ull, 14486446217263407954ull, 12504081701665070471ull, 7770675568902916283ull}}, {{11473656884279927936ull, 15971557913430711827ull, 5509208054326975092ull, 4856672230564322677ull}}, {{9730385086922522016ull, 1517703318078838168ull, 11498196086336106770ull, 6070840288205403346ull}}, {{12162981358653152520ull, 11120501184453323518ull, 5149373071065357654ull, 7588550360256754183ull}}, {{2990177330730832421ull, 2338627221855939295ull, 10135887197056930390ull, 4742843975160471364ull}}, {{17572779718695704238ull, 12146656064174699926ull, 12669858996321162987ull, 5928554968950589205ull}}, {{12742602611514854490ull, 10571634061790987004ull, 2002265690119290022ull, 7410693711188236507ull}}, {{17187498669051559864ull, 1995585270191978973ull, 17392317120820413928ull, 4631683569492647816ull}}, {{7649315281032286118ull, 2494481587739973717ull, 3293652327315965794ull, 5789604461865809771ull}}, {{14173330119717745552ull, 12341474021529742954ull, 17952123464427120954ull, 7237005577332262213ull}}, {{8493290612792406132ull, 6203470490057402885ull, 8605096275251737481ull, 9046256971665327767ull}}, {{7614149642208947785ull, 15406384102354346563ull, 12295714199673417781ull, 5653910607290829854ull}}, {{4906001034333796827ull, 5422922072660769492ull, 6146270712736996419ull, 7067388259113537318ull}}, {{6132501292917246033ull, 2166966572398573961ull, 16906210427776021332ull, 8834235323891921647ull}}, {{15362028354141748531ull, 10577726144603884533ull, 17483910545001095188ull, 5521397077432451029ull}}, {{5367477387395021951ull, 13222157680754855667ull, 8019830125969205273ull, 6901746346790563787ull}}, {{2097660715816389535ull, 2692639045661405872ull, 5413101639034118688ull, 8627182933488204734ull}}, {{1311037947385243460ull, 1682899403538378670ull, 17218246579678487892ull, 5391989333430127958ull}}, {{10862169471086330132ull, 2103624254422973337ull, 12299436187743334057ull, 6739986666787659948ull}}, {{18189397857285300569ull, 7241216336456104575ull, 15374295234679167571ull, 8424983333484574935ull}}, {{18285902688444394712ull, 2219917201071371407ull, 16526463549315561588ull, 5265614583427859334ull}}, {{18245692342128105486ull, 2774896501339214259ull, 11434707399789676177ull, 6582018229284824168ull}}, {{18195429409232743953ull, 8080306645101405728ull, 14293384249737095221ull, 8227522786606030210ull}}, {{11372143380770464971ull, 7356034662402072532ull, 13545051174513072417ull, 5142201741628768881ull}}, {{14215179225963081214ull, 13806729346429978569ull, 3096255912859176809ull, 6427752177035961102ull}}, {{3933915977171687805ull, 3423353627755309500ull, 13093691927928746820ull, 8034690221294951377ull}}, {{11682069522587080686ull, 11362968054201844245ull, 1266028427314384906ull, 5021681388309344611ull}}, {{767528847951687146ull, 4980338030897529499ull, 15417593589425144845ull, 6277101735386680763ull}}, {{14794469115221772644ull, 10837108557049299777ull, 14660305968354043152ull, 7846377169233350954ull}}, {{2329014169372526047ull, 6773192848155812361ull, 13774377248648664874ull, 4903985730770844346ull}}, {{7522953730143045462ull, 17689863097049541259ull, 7994599523956055284ull, 6129982163463555433ull}}, {{4792006144251418924ull, 3665584797602374958ull, 14604935423372457010ull, 7662477704329444291ull}}, {{16830061895439300539ull, 6902676516928872252ull, 6822241630394091679ull, 4789048565205902682ull}}, {{2590833295589574058ull, 4016659627733702412ull, 17751174074847390407ull, 5986310706507378352ull}}, {{3238541619486967573ull, 409138516239740111ull, 3742223519849686393ull, 7482888383134222941ull}}, {{8941617539820436589ull, 11784926618718307329ull, 4644732709119747947ull, 4676805239458889338ull}}, {{15788707943202933640ull, 10119472254970496257ull, 15029287923254460742ull, 5846006549323611672ull}}, {{5900826873721503338ull, 3425968281858344514ull, 339865830358524312ull, 7307508186654514591ull}}, {{16599405629006654981ull, 4282460352322930642ull, 14259890343230319102ull, 9134385233318143238ull}}, {{14986314536556547267ull, 16511595775483995363ull, 4300745446091561534ull, 5708990770823839524ull}}, {{14121207152268296180ull, 11416122682500218396ull, 5375931807614451918ull, 7136238463529799405ull}}, {{17651508940335370225ull, 5046781316270497187ull, 11331600777945452802ull, 8920298079412249256ull}}, {{8726350078495912439ull, 7765924341096448646ull, 7082250486215908001ull, 5575186299632655785ull}}, {{1684565561265114740ull, 14319091444797948712ull, 13464499126197272905ull, 6968982874540819731ull}}, {{2105706951581393425ull, 4063806250715272178ull, 12218937889319203228ull, 8711228593176024664ull}}, {{5927752863165758795ull, 11763250943551820919ull, 7636836180824502017ull, 5444517870735015415ull}}, {{2798005060529810589ull, 869005624157612437ull, 4934359207603239618ull, 6805647338418769269ull}}, {{8109192344089651141ull, 10309629067051791354ull, 10779635027931437426ull, 8507059173023461586ull}}, {{9679931233483419867ull, 11055204185334757500ull, 11348957910884536295ull, 5316911983139663491ull}}, {{12099914041854274834ull, 9207319213241058971ull, 9574511370178282465ull, 6646139978924579364ull}}, {{10513206533890455638ull, 16120835034978711618ull, 11968139212722853081ull, 8307674973655724205ull}}, {{11182440102108922678ull, 3157992869220612905ull, 9785930017165477128ull, 5192296858534827628ull}}, {{142992072353989635ull, 3947491086525766132ull, 12232412521456846410ull, 6490371073168534535ull}}, {{178740090442487044ull, 14157735895011983473ull, 10678829633393670108ull, 8112963841460668169ull}}, {{11640927602595024163ull, 18071956971237265478ull, 18203483566939513577ull, 5070602400912917605ull}}, {{5327787466389004395ull, 8754888158764418136ull, 8919296403392228260ull, 6338253001141147007ull}}, {{6659734332986255494ull, 10943610198455522670ull, 6537434485812897421ull, 7922816251426433759ull}}, {{17997392013398573396ull, 9145599383248395620ull, 11003425581274142744ull, 4951760157141521099ull}}, {{4049995943038665129ull, 11431999229060494526ull, 9142595958165290526ull, 6189700196426901374ull}}, {{14285866965653107219ull, 5066626999470842349ull, 2204872910851837350ull, 7737125245533626718ull}}, {{11234509862746885964ull, 17001699929951440180ull, 15213103624564562055ull, 4835703278458516698ull}}, {{14043137328433607455ull, 16640438894011912321ull, 9793007493850926761ull, 6044629098073145873ull}}, {{3718863605259845606ull, 6965490562232726690ull, 16852945385741046356ull, 7555786372591432341ull}}, {{6935975771714791408ull, 13576803638250229989ull, 12838933875301847924ull, 4722366482869645213ull}}, {{13281655733070877164ull, 16971004547812787486ull, 2213609288845146193ull, 5902958103587056517ull}}, {{7378697629483820647ull, 7378697629483820646ull, 7378697629483820646ull, 7378697629483820646ull}}, {{0ull, 0ull, 0ull, 9223372036854775808ull}}, {{0ull, 0ull, 0ull, 5764607523034234880ull}}, {{0ull, 0ull, 0ull, 7205759403792793600ull}}, {{0ull, 0ull, 0ull, 9007199254740992000ull}}, {{0ull, 0ull, 0ull, 5629499534213120000ull}}, {{0ull, 0ull, 0ull, 7036874417766400000ull}}, {{0ull, 0ull, 0ull, 8796093022208000000ull}}, {{0ull, 0ull, 0ull, 5497558138880000000ull}}, {{0ull, 0ull, 0ull, 6871947673600000000ull}}, {{0ull, 0ull, 0ull, 8589934592000000000ull}}, {{0ull, 0ull, 0ull, 5368709120000000000ull}}, {{0ull, 0ull, 0ull, 6710886400000000000ull}}, {{0ull, 0ull, 0ull, 8388608000000000000ull}}, {{0ull, 0ull, 0ull, 5242880000000000000ull}}, {{0ull, 0ull, 0ull, 6553600000000000000ull}}, {{0ull, 0ull, 0ull, 8192000000000000000ull}}, {{0ull, 0ull, 0ull, 5120000000000000000ull}}, {{0ull, 0ull, 0ull, 6400000000000000000ull}}, {{0ull, 0ull, 0ull, 8000000000000000000ull}}, {{0ull, 0ull, 0ull, 5000000000000000000ull}}, {{0ull, 0ull, 0ull, 6250000000000000000ull}}, {{0ull, 0ull, 0ull, 7812500000000000000ull}}, {{0ull, 0ull, 0ull, 4882812500000000000ull}}, {{0ull, 0ull, 0ull, 6103515625000000000ull}}, {{0ull, 0ull, 0ull, 7629394531250000000ull}}, {{0ull, 0ull, 0ull, 4768371582031250000ull}}, {{0ull, 0ull, 0ull, 5960464477539062500ull}}, {{0ull, 0ull, 0ull, 7450580596923828125ull}}, {{0ull, 0ull, 2305843009213693952ull, 4656612873077392578ull}}, {{0ull, 0ull, 12105675798371893248ull, 5820766091346740722ull}}, {{0ull, 0ull, 5908722711110090752ull, 7275957614183425903ull}}, {{0ull, 0ull, 2774217370460225536ull, 9094947017729282379ull}}, {{0ull, 0ull, 17874786921033498624ull, 5684341886080801486ull}}, {{0ull, 0ull, 13120111614437097472ull, 7105427357601001858ull}}, {{0ull, 0ull, 7176767481191596032ull, 8881784197001252323ull}}, {{0ull, 0ull, 2179636666531053568ull, 5551115123125782702ull}}, {{0ull, 0ull, 11947917870018592768ull, 6938893903907228377ull}}, {{0ull, 0ull, 1099839282241077248ull, 8673617379884035472ull}}, {{0ull, 0ull, 687399551400673280ull, 5421010862427522170ull}}, {{0ull, 0ull, 10082621476105617408ull, 6776263578034402712ull}}, {{0ull, 0ull, 12603276845132021760ull, 8470329472543003390ull}}, {{0ull, 0ull, 3265362009780125696ull, 5293955920339377119ull}}, {{0ull, 0ull, 17916760567507320832ull, 6617444900424221398ull}}, {{0ull, 0ull, 13172578672529375232ull, 8271806125530276748ull}}, {{0ull, 0ull, 17456233707185635328ull, 5169878828456422967ull}}, {{0ull, 0ull, 17208606115554656256ull, 6462348535570528709ull}}, {{0ull, 0ull, 7675699589161156608ull, 8077935669463160887ull}}, {{0ull, 0ull, 11714841270866804736ull, 5048709793414475554ull}}, {{0ull, 0ull, 5420179551728730112ull, 6310887241768094443ull}}, {{0ull, 0ull, 2163538421233524736ull, 7888609052210118054ull}}, {{0ull, 0ull, 15187269568553116672ull, 4930380657631323783ull}}, {{0ull, 0ull, 14372400942264007936ull, 6162975822039154729ull}}, {{0ull, 0ull, 4130443122547846208ull, 7703719777548943412ull}}, {{0ull, 0ull, 11804898988447179688ull, 4814824860968089632ull}}, {{0ull, 0ull, 14756123735558974610ull, 6018531076210112040ull}}, {{0ull, 9223372036854775808ull, 18445154669448718262ull, 7523163845262640050ull}}, {{0ull, 1152921504606846976ull, 16139907686832836818ull, 4701977403289150031ull}}, {{0ull, 10664523917613334528ull, 15563198590113658118ull, 5877471754111437539ull}}, {{0ull, 4107282860161892352ull, 14842312219214684744ull, 7346839692639296924ull}}, {{0ull, 5134103575202365440ull, 106146200308804314ull, 9183549615799121156ull}}, {{0ull, 7820500752928866304ull, 9289713412047778504ull, 5739718509874450722ull}}, {{0ull, 9775625941161082880ull, 2388769728204947322ull, 7174648137343063403ull}}, {{0ull, 2996160389596577792ull, 16821020215538347865ull, 8968310171678829253ull}}, {{0ull, 13401815289566330880ull, 12818980643925161367ull, 5605193857299268283ull}}, {{0ull, 12140583093530525696ull, 11412039786479063805ull, 7006492321624085354ull}}, {{0ull, 1340670811630993408ull, 5041677696244053949ull, 8758115402030106693ull}}, {{0ull, 3143762266483064832ull, 5456891569366227670ull, 5473822126268816683ull}}, {{0ull, 13153074869958606848ull, 2209428443280396683ull, 6842277657836020854ull}}, {{0ull, 11829657569020870656ull, 11985157590955271662ull, 8552847072295026067ull}}, {{0ull, 2781849962210656256ull, 5184880485133350837ull, 5345529420184391292ull}}, {{0ull, 8088998471190708224ull, 6481100606416688546ull, 6681911775230489115ull}}, {{0ull, 887876052133609472ull, 3489689739593472779ull, 8352389719038111394ull}}, {{0ull, 16695823597079363584ull, 6792742105673308390ull, 5220243574398819621ull}}, {{0ull, 11646407459494428672ull, 13102613650519023392ull, 6525304467998524526ull}}, {{0ull, 14558009324368035840ull, 7154895026294003432ull, 8156630584998155658ull}}, {{0ull, 9098755827730022400ull, 9083495409861140049ull, 5097894115623847286ull}}, {{0ull, 15985130803089915904ull, 2130997225471649253ull, 6372367644529809108ull}}, {{0ull, 6146355448580231168ull, 2663746531839561567ull, 7965459555662261385ull}}, {{0ull, 10759001183003726336ull, 13194056628468195739ull, 4978412222288913365ull}}, {{0ull, 8837065460327270016ull, 2657512730303080962ull, 6223015277861141707ull}}, {{0ull, 1822959788554311712ull, 17156948968161014915ull, 7778769097326427133ull}}, {{0ull, 17280250932342302484ull, 13028936114314328273ull, 4861730685829016958ull}}, {{0ull, 7765255610145714393ull, 7062798106038134534ull, 6077163357286271198ull}}, {{4611686018427387904ull, 483197475827367183ull, 18051869669402443976ull, 7596454196607838997ull}}, {{9799832789158199296ull, 301998422392104489ull, 13588261552590221437ull, 4747783872879899373ull}}, {{16861477004875137024ull, 4989184046417518515ull, 3150268885455613084ull, 5934729841099874217ull}}, {{16465160237666533376ull, 6236480058021898144ull, 8549522125246904259ull, 7418412301374842771ull}}, {{10290725148541583360ull, 1591957027049992388ull, 3037608319065621210ull, 4636507688359276732ull}}, {{12863406435676979200ull, 11213318320667266293ull, 3797010398832026512ull, 5795634610449095915ull}}, {{2244199989314060288ull, 14016647900834082867ull, 134576980112645236ull, 7244543263061369894ull}}, {{16640308041924739072ull, 17520809876042603583ull, 9391593261995582353ull, 9055679078826712367ull}}, {{17317721553844043776ull, 4032977144885545383ull, 12787274816388320827ull, 5659799424266695229ull}}, {{17035465923877666816ull, 429535412679543825ull, 2149035465203237322ull, 7074749280333369037ull}}, {{7459274349564919808ull, 9760291302704205590ull, 7297980349931434556ull, 8843436600416711296ull}}, {{50360450050686976ull, 15323554101044904302ull, 4561237718707146597ull, 5527147875260444560ull}}, {{9286322599418134528ull, 5319384571023966665ull, 5701547148383933247ull, 6908934844075555700ull}}, {{16219589267700056064ull, 2037544695352570427ull, 7126933935479916559ull, 8636168555094444625ull}}, {{7831400283098841088ull, 8190994462236438373ull, 15983548755743417609ull, 5397605346934027890ull}}, {{14400936372300939264ull, 14850429096222935870ull, 10756063907824496203ull, 6747006683667534863ull}}, {{8777798428521398272ull, 13951350351851281934ull, 8833393866353232350ull, 8433758354584418579ull}}, {{874437999398486016ull, 4107907951479663305ull, 3215028157257076267ull, 5271098971615261612ull}}, {{5704733517675495424ull, 523198920922191227ull, 4018785196571345334ull, 6588873714519077015ull}}, {{2519230878666981376ull, 9877370688007514842ull, 411795477286793763ull, 8236092143148846269ull}}, {{6186205317594251264ull, 3867513670791002824ull, 2563215182517940054ull, 5147557589468028918ull}}, {{7732756646992814080ull, 14057764125343529338ull, 12427391015002200875ull, 6434446986835036147ull}}, {{442573771886241792ull, 12960519138252023769ull, 10922552750325363190ull, 8043058733543795184ull}}, {{11805823653497370880ull, 3488638442980126951ull, 6826595468953351994ull, 5026911708464871990ull}}, {{10145593548444325696ull, 13584170090579934497ull, 17756616373046465800ull, 6283639635581089987ull}}, {{17293677953982795024ull, 16980212613224918121ull, 17584084447880694346ull, 7854549544476362484ull}}, {{3891019693598165034ull, 15224318901692961730ull, 1766680743070658158ull, 4909093465297726553ull}}, {{14087146653852482101ull, 9807026590261426354ull, 6820036947265710602ull, 6136366831622158191ull}}, {{8385561280460826818ull, 3035411200972007135ull, 3913360165654750349ull, 7670458539527697739ull}}, {{12158504827929098618ull, 4202975009821198411ull, 140007094320525016ull, 4794036587204811087ull}}, {{10586445016483985368ull, 5253718762276498014ull, 14010066923182819982ull, 5992545734006013858ull}}, {{4009684233750205902ull, 15790520489700398326ull, 8289211617123749169ull, 7490682167507517323ull}}, {{16341110701376042401ull, 2951546278421667097ull, 2874914251488649279ull, 4681676354692198327ull}}, {{6591330321437889289ull, 17524490903309247584ull, 17428700869642975310ull, 5852095443365247908ull}}, {{8239162901797361611ull, 12682241592281783672ull, 3339132013344167522ull, 7315119304206559886ull}}, {{10298953627246702013ull, 6629429953497453782ull, 13397287053534985211ull, 9143899130258199857ull}}, {{1825159998601800855ull, 1837550711722214662ull, 1455775380818283901ull, 5714936956411374911ull}}, {{11504822035107026876ull, 6908624408080156231ull, 15654777281305018588ull, 7143671195514218638ull}}, {{9769341525456395691ull, 8635780510100195289ull, 10345099564776497427ull, 8929588994392773298ull}}, {{17635053499478717067ull, 3091519809598928103ull, 11077373246412698796ull, 5580993121495483311ull}}, {{17432130855921008430ull, 3864399761998660129ull, 9235030539588485591ull, 6976241401869354139ull}}, {{7955105514619096825ull, 218813684070937258ull, 6932102156058219085ull, 8720301752336692674ull}}, {{9583626965064323420ull, 2442601561758029738ull, 8944249865963774832ull, 5450188595210432921ull}}, {{2756161669475628467ull, 3053251952197537173ull, 15791998350882106444ull, 6812735744013041151ull}}, {{8056888105271923487ull, 3816564940246921466ull, 15128311920175245151ull, 8515919680016301439ull}}, {{9647241084222340084ull, 9302882115295407772ull, 16372723977750610075ull, 5322449800010188399ull}}, {{12059051355277925104ull, 7016916625691871811ull, 15854218953760874690ull, 6653062250012735499ull}}, {{10462128175670018476ull, 17994517818969615572ull, 15206087673773705458ull, 8316327812515919374ull}}, {{15762202146648537356ull, 15858259655283397636ull, 4892118777681178007ull, 5197704882822449609ull}}, {{1256008609601120079ull, 15211138550676859142ull, 10726834490528860413ull, 6497131103528062011ull}}, {{10793382798856175906ull, 5178865133063910215ull, 8796857094733687613ull, 8121413879410077514ull}}, {{13663393276926191798ull, 5542633717378637836ull, 10109721702635942662ull, 5075883674631298446ull}}, {{17079241596157739747ull, 16151664183578073103ull, 3413780091440152519ull, 6344854593289123058ull}}, {{16737365976769786780ull, 15577894211045203475ull, 13490597151154966457ull, 7931068241611403822ull}}, {{8155010726267422785ull, 2818654854262170316ull, 3819937201044466132ull, 4956917651007127389ull}}, {{10193763407834278482ull, 3523318567827712895ull, 9386607519732970569ull, 6196147063758909236ull}}, {{8130518241365460198ull, 9015834228212029023ull, 11733259399666213211ull, 7745183829698636545ull}}, {{11999102928494494480ull, 3329053383418824187ull, 415758097150301401ull, 4840739893561647841ull}}, {{10387192642190730196ull, 8773002747700918138ull, 5131383639865264655ull, 6050924866952059801ull}}, {{3760618765883636937ull, 6354567416198759769ull, 11025915568258968723ull, 7563656083690074751ull}}, {{13879601774745742846ull, 1665761625910530903ull, 13808726257802937308ull, 4727285052306296719ull}}, {{12737816200004790653ull, 2082202032388163629ull, 12649221803826283731ull, 5909106315382870899ull}}, {{2087212194723824604ull, 16437810595767368249ull, 11199841236355466759ull, 7386382894228588624ull}}, {{12833722667770860138ull, 17191160649995687011ull, 6999900772722166724ull, 4616489308892867890ull}}, {{11430467316286187268ull, 3042206738785057148ull, 17973248002757484214ull, 5770611636116084862ull}}, {{14288084145357734085ull, 13026130460336097243ull, 13243187966592079459ull, 7213264545145106078ull}}, {{13248419163269779702ull, 11670977056992733650ull, 7330612921385323516ull, 9016580681431382598ull}}, {{12891947995471000218ull, 16517732697475234339ull, 18416691131147990909ull, 5635362925894614123ull}}, {{11503248975911362368ull, 6812107816561879212ull, 18409177895507600733ull, 7044203657368267654ull}}, {{14379061219889202960ull, 13126820789129736919ull, 13788100332529725108ull, 8805254571710334568ull}}, {{15904442290071833706ull, 17427635030060861382ull, 8617562707831078192ull, 5503284107318959105ull}}, {{10657180825735016325ull, 3337799713866525112ull, 15383639403216235645ull, 6879105134148698881ull}}, {{13321476032168770406ull, 8783935660760544294ull, 5394491198738130844ull, 8598881417685873602ull}}, {{3714236501678093600ull, 14713331824830115992ull, 7983243017638719681ull, 5374300886053671001ull}}, {{4642795627097617000ull, 4556606725755481278ull, 14590739790475787506ull, 6717876107567088751ull}}, {{15026866570726797057ull, 14919130444049127405ull, 13626738719667346478ull, 8397345134458860939ull}}, {{11697634615917942113ull, 4712770509103316724ull, 6210868690578397597ull, 5248340709036788087ull}}, {{14622043269897427641ull, 10502649154806533809ull, 3151899844795609092ull, 6560425886295985109ull}}, {{4442496032089620839ull, 13128311443508167262ull, 8551560824421899269ull, 8200532357869981386ull}}, {{16611618075338176737ull, 10511037661406298490ull, 9956411533691074947ull, 5125332723668738366ull}}, {{11541150557317945113ull, 8527111058330485209ull, 3222142380259067876ull, 6406665904585922958ull}}, {{591380141365267679ull, 10658888822913106512ull, 13251050012178610653ull, 8008332380732403697ull}}, {{369612588353292299ull, 8967648523534385522ull, 1364377229970549802ull, 5005207737957752311ull}}, {{9685387772296391182ull, 1986188617563206094ull, 15540529592745350965ull, 6256509672447190388ull}}, {{2883362678515713170ull, 7094421790381395522ull, 978917917222137090ull, 7820637090558987986ull}}, {{6413787692499708635ull, 9045699637415760105ull, 5223509716691223585ull, 4887898181599367491ull}}, {{12628920634052023698ull, 15918810565197088035ull, 1917701127436641577ull, 6109872726999209364ull}}, {{11174464774137641718ull, 6063455151214196332ull, 2397126409295801972ull, 7637340908749011705ull}}, {{16207412520690801882ull, 13013031506363648515ull, 13027419051878345992ull, 4773338067968132315ull}}, {{15647579632436114448ull, 16266289382954560644ull, 11672587796420544586ull, 5966672584960165394ull}}, {{1112730466835591444ull, 11109489691838424998ull, 5367362708670904925ull, 7458340731200206743ull}}, {{14530514597054408365ull, 9249274066612709575ull, 10272130720560397434ull, 4661462957000129214ull}}, {{13551457227890622552ull, 2338220546411111161ull, 3616791363845720985ull, 5826828696250161518ull}}, {{3104263479581114478ull, 7534461701441276856ull, 13744361241661927039ull, 7283535870312701897ull}}, {{3880329349476393097ull, 4806391108374208166ull, 3345393496795245087ull, 9104419837890877372ull}}, {{16260263898704909398ull, 9921523470374961959ull, 11314242972351803987ull, 5690262398681798357ull}}, {{15713643854953748843ull, 7790218319541314545ull, 307745660157591272ull, 7112827998352247947ull}}, {{5806996763410022342ull, 9737772899426643182ull, 14219740130479152802ull, 8891034997940309933ull}}, {{17464431032413427676ull, 10697794080569039892ull, 11193180590763164453ull, 5556896873712693708ull}}, {{3383794716807232979ull, 17983928619138687770ull, 13991475738453955566ull, 6946121092140867135ull}}, {{13453115432863817032ull, 13256538737068583904ull, 12877658654640056554ull, 8682651365176083919ull}}, {{8408197145539885645ull, 12897022729095252844ull, 14966065686791117202ull, 5426657103235052449ull}}, {{10510246431924857056ull, 6897906374514290247ull, 4872524053206732791ull, 6783321379043815562ull}}, {{8526122021478683416ull, 4010696949715474905ull, 15314027103363191797ull, 8479151723804769452ull}}, {{16858041309492646895ull, 4812528602785865767ull, 347894902747219065ull, 5299469827377980908ull}}, {{16460865618438420715ull, 10627346771909720113ull, 434868628434023831ull, 6624337284222476135ull}}, {{6741023967765862181ull, 8672497446459762238ull, 14378643840824693501ull, 8280421605278095168ull}}, {{18048198035135827576ull, 7726153913251045350ull, 8986652400515433438ull, 5175263503298809480ull}}, {{13336875507065008661ull, 434320354709030880ull, 11233315500644291798ull, 6469079379123511850ull}}, {{16671094383831260826ull, 9766272480241064408ull, 4818272338950588939ull, 8086349223904389813ull}}, {{10419433989894538017ull, 3798077290936971303ull, 5317263221057812039ull, 5053968264940243633ull}}, {{8412606468940784617ull, 135910595243826225ull, 11258265044749652953ull, 6317460331175304541ull}}, {{15127444104603368675ull, 4781574262482170685ull, 237773250654902479ull, 7896825413969130677ull}}, {{11760495574590799374ull, 9906012941692438534ull, 2454451290873008001ull, 4935515883730706673ull}}, {{5477247431383723409ull, 16994202195542936072ull, 7679750132018647905ull, 6169394854663383341ull}}, {{6846559289229654262ull, 7407694689146506378ull, 14211373683450697786ull, 7711743568329229176ull}}, {{8890785574195921818ull, 9241495199143954390ull, 8882108552156686116ull, 4819839730205768235ull}}, {{1890109930890126464ull, 11551868998929942988ull, 6490949671768469741ull, 6024799662757210294ull}}, {{2362637413612658080ull, 604778193380265023ull, 17337059126565362985ull, 7530999578446512867ull}}, {{8394177411148993156ull, 11907201416931135399ull, 8529818944889657913ull, 4706874736529070542ull}}, {{5881035745508853541ull, 1048943715881755537ull, 1438901644257296584ull, 5883593420661338178ull}}, {{11962980700313454830ull, 1311179644852194421ull, 11021999092176396538ull, 7354491775826672722ull}}, {{1118667820109654825ull, 10862346592920018835ull, 4554126828365719864ull, 9193114719783340903ull}}, {{16840068452064391930ull, 6788966620575011771ull, 9763858295369656771ull, 5745696699864588064ull}}, {{16438399546653102009ull, 3874522257291376810ull, 12204822869212070964ull, 7182120874830735080ull}}, {{11324627396461601703ull, 4843152821614221013ull, 15256028586515088705ull, 8977651093538418850ull}}, {{9383735132002195016ull, 14556185559577357893ull, 14146703884999318344ull, 5611031933461511781ull}}, {{16341354933430131674ull, 18195231949471697366ull, 3848321800966984218ull, 7013789916826889727ull}}, {{11203321629932888785ull, 13520667899984845900ull, 198716232781342369ull, 8767237396033612159ull}}, {{16225448055562831299ull, 1532888409849446831ull, 7041726673129420837ull, 5479523372521007599ull}}, {{15670124051026151219ull, 6527796530739196443ull, 4190472322984388142ull, 6849404215651259499ull}}, {{14975969045355301120ull, 17383117700278771362ull, 626404385303097273ull, 8561755269564074374ull}}, {{13971666671774451104ull, 3946919535033150245ull, 14226560796096599508ull, 5351097043477546483ull}}, {{3629525284435900168ull, 4933649418791437807ull, 13171514976693361481ull, 6688871304346933104ull}}, {{18371964660827038922ull, 10778747791916685162ull, 16464393720866701851ull, 8361089130433666380ull}}, {{16094163931444287230ull, 4430874360734234274ull, 1066874038686912849ull, 5225680706521041488ull}}, {{10894332877450583230ull, 10150278969345180747ull, 1333592548358641061ull, 6532100883151301860ull}}, {{9006230078385841133ull, 17299534730108863838ull, 1666990685448301326ull, 8165126103939127325ull}}, {{1017207780563762804ull, 6200523187890651995ull, 3347712187618882281ull, 5103203814961954578ull}}, {{15106567780986867217ull, 12362340003290702897ull, 13408012271378378659ull, 6379004768702443222ull}}, {{5048151670951420310ull, 10841238985685990718ull, 7536643302368197516ull, 7973755960878054028ull}}, {{16990152849626801406ull, 15999146402908520006ull, 13933774100834899255ull, 4983597475548783767ull}}, {{12014319025178725949ull, 15387246985208262104ull, 12805531607616236165ull, 6229496844435979709ull}}, {{15017898781473407436ull, 5399000676228163918ull, 2171856454238131495ull, 7786871055544974637ull}}, {{4774500719993491744ull, 10291904450283684305ull, 3663253293112526136ull, 4866794409715609148ull}}, {{10579811918419252584ull, 12864880562854605381ull, 4579066616390657670ull, 6083493012144511435ull}}, {{17836450916451453633ull, 6857728666713480918ull, 1112147252060934184ull, 7604366265180639294ull}}, {{6536095804354770617ull, 4286080416695925574ull, 14530150087820247577ull, 4752728915737899558ull}}, {{17393491792298239079ull, 9969286539297294871ull, 8939315572920533663ull, 5940911144672374448ull}}, {{17130178721945410945ull, 7849922155694230685ull, 11174144466150667079ull, 7426138930840468060ull}}, {{13012204710429575793ull, 11823730374949976034ull, 16207212328198942732ull, 4641336831775292537ull}}, {{7041883851182193933ull, 14779662968687470043ull, 6423957354966514703ull, 5801671039719115672ull}}, {{4190668795550354512ull, 13862892692431949650ull, 8029946693708143379ull, 7252088799648894590ull}}, {{14461708031292718948ull, 12716929847112549158ull, 814061330280403416ull, 9065110999561118238ull}}, {{4426881501130561438ull, 7948081154445343224ull, 14343846386707415847ull, 5665694374725698898ull}}, {{5533601876413201798ull, 5323415424629291126ull, 8706435946529494001ull, 7082117968407123623ull}}, {{16140374382371278055ull, 11265955299214001811ull, 6271358914734479597ull, 8852647460508904529ull}}, {{7781890979768354833ull, 9347065071222445084ull, 15448814367777519508ull, 5532904662818065330ull}}, {{9727363724710443541ull, 11683831339028056355ull, 10087645922867123577ull, 6916130828522581663ull}}, {{7547518637460666522ull, 769731118502906732ull, 7997871385156516568ull, 8645163535653227079ull}}, {{13940571185267692384ull, 481081949064316707ull, 11916198643363904711ull, 5403227209783266924ull}}, {{12814027963157227576ull, 14436410491612559596ull, 14895248304204880888ull, 6754034012229083655ull}}, {{16017534953946534470ull, 18045513114515699495ull, 14007374361828713206ull, 8442542515286354569ull}}, {{16928488373857665900ull, 6666759678144924280ull, 1837079948501863898ull, 5276589072053971606ull}}, {{2713866393612530759ull, 17556821634535931159ull, 11519721972482105680ull, 6595736340067464507ull}}, {{17227391047297827161ull, 3499282969460362332ull, 9787966447175244197ull, 8244670425084330634ull}}, {{1543747367706366168ull, 4492894865126420410ull, 10729165047911915527ull, 5152919015677706646ull}}, {{11153056246487733517ull, 1004432562980637608ull, 4188084273035118601ull, 6441148769597133308ull}}, {{13941320308109666897ull, 5867226722153184914ull, 5235105341293898251ull, 8051435961996416635ull}}, {{13325011210995929715ull, 1361173692132046619ull, 966097829094992455ull, 5032147476247760397ull}}, {{12044577995317524239ull, 15536525170447221986ull, 5819308304796128472ull, 6290184345309700496ull}}, {{5832350457292129491ull, 973912389349475867ull, 7274135380995160591ull, 7862730431637125620ull}}, {{1339376026593886980ull, 7526224270984504273ull, 13769706649976751177ull, 4914206519773203512ull}}, {{6285906051669746629ull, 14019466357158018245ull, 17212133312470938971ull, 6142758149716504390ull}}, {{12469068583014571190ull, 12912646928020134902ull, 12291794603733897906ull, 7678447687145630488ull}}, {{3181481845956719090ull, 12682090348439972218ull, 7682371627333686191ull, 4799029804466019055ull}}, {{13200224344300674670ull, 11240926917122577368ull, 4991278515739719835ull, 5998787255582523819ull}}, {{16500280430375843337ull, 9439472627975833806ull, 1627412126247261890ull, 7498484069478154774ull}}, {{5700989250557514182ull, 10511356410912284033ull, 14852190634186702393ull, 4686552543423846733ull}}, {{11737922581624280632ull, 17750881532067742945ull, 4730180237451214279ull, 5858190679279808417ull}}, {{837345171748187077ull, 17576915896657290778ull, 10524411315241405753ull, 7322738349099760521ull}}, {{10270053501540009654ull, 8136086815539449760ull, 17767200162479145096ull, 9153422936374700651ull}}, {{6418783438462506034ull, 5085054259712156100ull, 8798657092335771733ull, 5720889335234187907ull}}, {{8023479298078132543ull, 10968003843067583029ull, 6386635346992326762ull, 7151111669042734884ull}}, {{14641035141025053582ull, 4486632766979702978ull, 7983294183740408453ull, 8938889586303418605ull}}, {{13762332981568046393ull, 5109988488576008313ull, 7295401874051449235ull, 5586805991439636628ull}}, {{3367858171677894279ull, 1775799592292622488ull, 9119252342564311544ull, 6983507489299545785ull}}, {{4209822714597367849ull, 2219749490365778110ull, 16010751446632777334ull, 8729384361624432231ull}}, {{16466197251905518618ull, 15222401486760775030ull, 16924248681786567689ull, 5455865226015270144ull}}, {{11359374528027122464ull, 5192943803168805076ull, 2708566778523657996ull, 6819831532519087681ull}}, {{14199218160033903080ull, 6491179753961006345ull, 7997394491581960399ull, 8524789415648859601ull}}, {{1956982322380107569ull, 10974516373866710822ull, 16527586603307195009ull, 5327993384780537250ull}}, {{11669599939829910269ull, 18329831485760776431ull, 11436111217279217953ull, 6659991730975671563ull}}, {{9975313906359999932ull, 9077231301918806827ull, 9683453003171634538ull, 8324989663719589454ull}}, {{3928728182261306006ull, 10284955582126642171ull, 1440472108554883682ull, 5203118539824743409ull}}, {{299224209399244603ull, 3632822440803526906ull, 6412276154120992507ull, 6503898174780929261ull}}, {{9597402298603831562ull, 18376086106286572344ull, 12627031211078628537ull, 8129872718476161576ull}}, {{5998376436627394726ull, 4567524788788025859ull, 7891894506924142836ull, 5081170449047600985ull}}, {{2886284527356855504ull, 5709405985985032324ull, 14476554152082566449ull, 6351463061309501231ull}}, {{3607855659196069380ull, 11748443500908678309ull, 13484006671675820157ull, 7939328826636876539ull}}, {{4560752796211237315ull, 9648620197281617895ull, 6121661160583693646ull, 4962080516648047837ull}}, {{1089254976836658739ull, 2837403209747246561ull, 12263762469157004962ull, 6202600645810059796ull}}, {{5973254739473211328ull, 12770126049038834009ull, 15329703086446256202ull, 7753250807262574745ull}}, {{15262499258239226840ull, 12593014799076659159ull, 2663535401387828270ull, 4845781754539109216ull}}, {{14466438054371645646ull, 6517896461991048141ull, 3329419251734785338ull, 6057227193173886520ull}}, {{4247989512682393345ull, 17370742614343585985ull, 4161774064668481672ull, 7571533991467358150ull}}, {{14184208491494965601ull, 10856714133964741240ull, 16436166845699964757ull, 4732208744667098843ull}}, {{17730260614368707001ull, 18182578685883314454ull, 15933522538697568042ull, 5915260930833873554ull}}, {{12939453731106107943ull, 13504851320499367260ull, 10693531136517184245ull, 7394076163542341943ull}}, {{17310530618796093273ull, 10746375084525798489ull, 13600985987964322009ull, 4621297602213963714ull}}, {{7803105218212952879ull, 18044654874084636016ull, 7777860448100626703ull, 5776622002767454643ull}}, {{9753881522766191098ull, 17944132574178407116ull, 5110639541698395475ull, 7220777503459318304ull}}, {{12192351903457738873ull, 17818479699295620991ull, 6388299427122994344ull, 9025971879324147880ull}}, {{14537748967302168652ull, 11136549812059763119ull, 3992687141951871465ull, 5641232424577592425ull}}, {{13560500190700322911ull, 85629209792540187ull, 9602544945867227236ull, 7051540530721990531ull}}, {{12338939219948015734ull, 107036512240675234ull, 7391495163906646141ull, 8814425663402488164ull}}, {{12323523030894897738ull, 2372740829364115973ull, 13843056514296429646ull, 5509016039626555102ull}}, {{1569345733336458460ull, 12189298073559920775ull, 8080448606015761249ull, 6886270049533193878ull}}, {{15796740221952736787ull, 1401564536667737256ull, 877188720664925754ull, 8607837561916492348ull}}, {{9872962638720460492ull, 5487663853844723689ull, 9771614987270354404ull, 5379898476197807717ull}}, {{16952889316827963519ull, 6859579817305904611ull, 16826204752515330909ull, 6724873095247259646ull}}, {{16579425627607566495ull, 13186160790059768668ull, 11809383903789387828ull, 8406091369059074558ull}}, {{1138768980399953251ull, 17464722530642131226ull, 2769178921440979488ull, 5253807105661921599ull}}, {{10646833262354717372ull, 3384159089593112416ull, 17296531707083388073ull, 6567258882077401998ull}}, {{13308541577943396715ull, 8841884880418778424ull, 12397292596999459283ull, 8209073602596752498ull}}, {{8317838486214622947ull, 3220335041048042563ull, 12359993891552049956ull, 5130671001622970311ull}}, {{5785612089340890780ull, 4025418801310053204ull, 10838306346012674541ull, 6413338752028712889ull}} }; static const BID_UINT256 bid_multipliers2_binary64[] = { {{918777112239470733ull, 5138421092069233273ull, 15049182825743144437ull, 3877256883183270350ull}}, {{12103450741218138969ull, 5517356191756964747ull, 4794053247662077369ull, 2423285551989543969ull}}, {{10517627408095285807ull, 11508381258123593838ull, 10604252578004984615ull, 3029106939986929961ull}}, {{3923662223264331450ull, 9773790554227104394ull, 17867001740933618673ull, 3786383674983662451ull}}, {{7063974907967595060ull, 17637834142460410006ull, 8861033078869817718ull, 2366489796864789032ull}}, {{18053340671814269633ull, 12823920641220736699ull, 11076291348587272148ull, 2958112246080986290ull}}, {{17954989821340449138ull, 16029900801525920874ull, 4621992148879314377ull, 3697640307601232863ull}}, {{15833554656765168615ull, 3101158973312618690ull, 9806274120690653342ull, 2311025192250770539ull}}, {{10568571284101684961ull, 13099820753495549171ull, 7646156632435928773ull, 2888781490313463174ull}}, {{8599028086699718297ull, 2539717886587272752ull, 334323753690135159ull, 3610976862891828968ull}}, {{10748785108374647871ull, 17009705413516254652ull, 417904692112668948ull, 4513721078614786210ull}}, {{15941362729588930728ull, 1407693846592883349ull, 4872876450997805997ull, 2821075674134241381ull}}, {{6091645356703999697ull, 6371303326668492091ull, 10702781582174645400ull, 3526344592667801726ull}}, {{3002870677452611718ull, 7964129158335615114ull, 4155104940863530942ull, 4407930740834752158ull}}, {{6488480191835270228ull, 365894705532371542ull, 16431998643321870551ull, 2754956713021720098ull}}, {{17333972276648863593ull, 14292426437197628139ull, 11316626267297562380ull, 3443695891277150123ull}}, {{17055779327383691587ull, 17865533046497035174ull, 9534096815694565071ull, 4304619864096437654ull}}, {{6048176061187419338ull, 18083487181701728840ull, 1347124491381715265ull, 2690387415060273534ull}}, {{7560220076484274172ull, 8769300921844997338ull, 10907277651081919890ull, 3362984268825341917ull}}, {{226903058750566907ull, 1738254115451470865ull, 18245783082279787767ull, 4203730336031677396ull}}, {{11671029457787574077ull, 8003937849798251146ull, 2180242389570091546ull, 2627331460019798373ull}}, {{5365414785379691788ull, 781550275393038125ull, 7336989005390002337ull, 3284164325024747966ull}}, {{11318454500152002639ull, 5588623862668685560ull, 18394608293592278729ull, 4105205406280934957ull}}, {{7074034062595001650ull, 15022104960236398235ull, 13802473192708868157ull, 2565753378925584348ull}}, {{4230856559816364158ull, 4942573145013334082ull, 17253091490886085197ull, 3207191723656980435ull}}, {{14511942736625231005ull, 10789902449694055506ull, 16954678345180218592ull, 4008989654571225544ull}}, {{13681650228818157283ull, 6743689031058784691ull, 10596673965737636620ull, 2505618534107015965ull}}, {{12490376767595308699ull, 8429611288823480864ull, 17857528475599433679ull, 3132023167633769956ull}}, {{15612970959494135874ull, 5925328092601963176ull, 3875166520789740483ull, 3915028959542212446ull}}, {{9758106849683834921ull, 1397487048662533033ull, 16257037130775751514ull, 2446893099713882778ull}}, {{16809319580532181555ull, 10970230847682942099ull, 11097924376614913584ull, 3058616374642353473ull}}, {{16399963457237839040ull, 13712788559603677624ull, 37347415486478268ull, 3823270468302941842ull}}, {{10249977160773649400ull, 17793864886607074323ull, 4635028153106436821ull, 2389544042689338651ull}}, {{8200785432539673846ull, 8407273052976679192ull, 1182099172955658123ull, 2986930053361673314ull}}, {{10250981790674592308ull, 5897405297793461086ull, 10700996003049348462ull, 3733662566702091642ull}}, {{1795177600744232288ull, 17520936366403076891ull, 11299808520333230692ull, 2333539104188807276ull}}, {{16079030056212454072ull, 3454426384294294497ull, 14124760650416538366ull, 2916923880236009095ull}}, {{6263729514983403878ull, 13541405017222643930ull, 13044264794593285053ull, 3646154850295011369ull}}, {{17053033930584030656ull, 3091698216246141200ull, 2470272937959442605ull, 4557693562868764212ull}}, {{10658146206615019160ull, 4238154394367532202ull, 10767292623079427436ull, 2848558476792977632ull}}, {{4099310721413998142ull, 5297692992959415253ull, 13459115778849284295ull, 3560698095991222040ull}}, {{9735824420194885581ull, 2010430222771881162ull, 16823894723561605369ull, 4450872619989027550ull}}, {{10696576281049191393ull, 12785733935300895486ull, 5903248183798615451ull, 2781795387493142219ull}}, {{4147348314456713433ull, 11370481400698731454ull, 2767374211320881410ull, 3477244234366427774ull}}, {{14407557429925667599ull, 4989729714018638509ull, 12682589801005877571ull, 4346555292958034717ull}}, {{11310566402917236201ull, 812738062047955116ull, 10232461634842367434ull, 2716597058098771698ull}}, {{14138208003646545252ull, 10239294614414719703ull, 3567205006698183484ull, 3395746322623464623ull}}, {{13061073986130793660ull, 12799118268018399629ull, 18294064313654893067ull, 4244682903279330778ull}}, {{10469014250545439990ull, 5693605908297805816ull, 16045476214461696071ull, 2652926814549581736ull}}, {{13086267813181799987ull, 2505321366944869366ull, 1610101194367568473ull, 3316158518186977171ull}}, {{7134462729622474176ull, 7743337727108474612ull, 15847684548241624303ull, 4145198147733721463ull}}, {{13682411242868822168ull, 11757115107083878488ull, 16822331870292097045ull, 2590748842333575914ull}}, {{17103014053586027710ull, 861335828572684398ull, 11804542801010345499ull, 3238436052916969893ull}}, {{12155395530127758829ull, 14911727840998019210ull, 920620445980768161ull, 4048045066146212367ull}}, {{12208808224757237173ull, 2402300872982680150ull, 7492916806379061957ull, 2530028166341382729ull}}, {{6037638244091770658ull, 7614562109655738092ull, 13977832026401215350ull, 3162535207926728411ull}}, {{7547047805114713322ull, 294830600214896807ull, 12860604014574131284ull, 3953169009908410514ull}}, {{11634433905837777682ull, 9407641161989086312ull, 12649563527536219956ull, 2470730631192756571ull}}, {{14543042382297222103ull, 11759551452486357890ull, 11200268390992887041ull, 3088413288990945714ull}}, {{8955430941016751820ull, 864381260325783651ull, 4776963451886332994ull, 3860516611238682143ull}}, {{3291301328921775936ull, 5151924306131002686ull, 9903131185070039977ull, 2412822882024176339ull}}, {{13337498698006995728ull, 11051591401091141261ull, 7767227962910162067ull, 3016028602530220424ull}}, {{2836815317226580948ull, 9202803232936538673ull, 9709034953637702584ull, 3770035753162775530ull}}, {{13302224619335082852ull, 5751752020585336670ull, 10679832864450952019ull, 2356272345726734706ull}}, {{7404408737314077757ull, 2578004007304282934ull, 4126419043708914216ull, 2945340432158418383ull}}, {{32138884787821389ull, 3222505009130353668ull, 546337786208754866ull, 3681675540198022979ull}}, {{40173605984776736ull, 13251503298267717893ull, 14517980288043107294ull, 4602094425247528723ull}}, {{2330951512954179412ull, 3670503542989935779ull, 6767894670813248107ull, 2876309015779705452ull}}, {{16748747446474887977ull, 18423187484019583435ull, 8459868338516560133ull, 3595386269724631815ull}}, {{16324248289666222067ull, 9193926299742315582ull, 5963149404718312263ull, 4494232837155789769ull}}, {{5590969162614000888ull, 12663732964980029095ull, 15256183424017414924ull, 2808895523222368605ull}}, {{2377025434840113206ull, 15829666206225036369ull, 5235171224739604943ull, 3511119404027960757ull}}, {{7582967811977529411ull, 15175396739353907557ull, 11155650049351894083ull, 4388899255034950946ull}}, {{7045197891699649834ull, 7178779952882498271ull, 11583967299272321706ull, 2743062034396844341ull}}, {{4194811346197174389ull, 18196846977957898647ull, 644901068808238420ull, 3428827542996055427ull}}, {{631828164319080082ull, 4299314648737821693ull, 14641184391292461738ull, 4286034428745069283ull}}, {{2700735611913119003ull, 7298757673888526462ull, 6844897235344094634ull, 2678771517965668302ull}}, {{12599291551746174562ull, 18346819129215433885ull, 17779493581034894100ull, 3348464397457085377ull}}, {{1914056384400554490ull, 4486779837809740741ull, 8389308921011453914ull, 4185580496821356722ull}}, {{3502128249464040509ull, 7415923417058475867ull, 9855004094059546600ull, 2615987810513347951ull}}, {{18212718367112214348ull, 9269904271323094833ull, 7707069099147045346ull, 3269984763141684939ull}}, {{8930839903608104222ull, 2364008302299092734ull, 5022150355506418779ull, 4087480953927106174ull}}, {{970088921327677235ull, 17618406253432790623ull, 16973902027473675448ull, 2554675596204441358ull}}, {{15047669206941760256ull, 3576263743081436662ull, 11994005497487318503ull, 3193344495255551698ull}}, {{9586214471822424512ull, 18305387734133959540ull, 5769134835004372320ull, 3991680619069439623ull}}, {{15214756081743791128ull, 11440867333833724712ull, 10523238299518814556ull, 2494800386918399764ull}}, {{571701028470187294ull, 14301084167292155891ull, 13154047874398518195ull, 3118500483647999705ull}}, {{14549684340869897829ull, 13264669190687806959ull, 2607501787715984032ull, 3898125604559999632ull}}, {{16011081740684767999ull, 8290418244179879349ull, 1629688617322490020ull, 2436328502849999770ull}}, {{6178794120573796287ull, 10363022805224849187ull, 11260482808507888333ull, 3045410628562499712ull}}, {{3111806632289857455ull, 17565464524958449388ull, 14075603510634860416ull, 3806763285703124640ull}}, {{11168251182035936718ull, 10978415328099030867ull, 8797252194146787760ull, 2379227053564452900ull}}, {{9348627959117532993ull, 13723019160123788584ull, 10996565242683484700ull, 2974033816955566125ull}}, {{11685784948896916241ull, 17153773950154735730ull, 18357392571781743779ull, 3717542271194457656ull}}, {{11915301611487960555ull, 8415265709633015879ull, 11473370357363589862ull, 2323463919496536035ull}}, {{10282440995932562789ull, 1295710100186494041ull, 9730026928277099424ull, 2904329899370670044ull}}, {{17464737263343091390ull, 1619637625233117551ull, 12162533660346374280ull, 3630412374213337555ull}}, {{17219235560751476334ull, 2024547031541396939ull, 10591481057005579946ull, 4538015467766671944ull}}, {{8456179216255978757ull, 5877027913140760991ull, 6619675660628487466ull, 2836259667354169965ull}}, {{5958538001892585542ull, 16569656928280727047ull, 12886280594212997236ull, 3545324584192712456ull}}, {{2836486483938344023ull, 2265327086641357193ull, 16107850742766246546ull, 4431655730240890570ull}}, {{13302019098529934775ull, 6027515447578236149ull, 14679092732656291995ull, 2769784831400556606ull}}, {{2792465817880254756ull, 2922708291045407283ull, 9125493878965589186ull, 3462231039250695758ull}}, {{17325640327632482157ull, 12876757400661534911ull, 2183495311852210674ull, 4327788799063369698ull}}, {{17746054232411383205ull, 12659659393840847223ull, 5976370588335019575ull, 2704867999414606061ull}}, {{17570881772086841102ull, 11212888223873671125ull, 12082149253846162373ull, 3381084999268257576ull}}, {{8128544159826387665ull, 181052224559925195ull, 15102686567307702967ull, 4226356249085321970ull}}, {{2774497090677798339ull, 7030686667991035103ull, 14050865122994702258ull, 2641472655678326231ull}}, {{17303179418629411635ull, 18011730371843569686ull, 12951895385315989918ull, 3301840819597907789ull}}, {{12405602236431988736ull, 13291290927949686300ull, 2354811176362823686ull, 4127301024497384737ull}}, {{16976873434624768768ull, 3695370811541166033ull, 13000972031295234564ull, 2579563140310865460ull}}, {{7386033737998797248ull, 4619213514426457542ull, 16251215039119043205ull, 3224453925388581825ull}}, {{9170135643720752ull, 10385702911460459832ull, 6478960743616640294ull, 4030567406735727282ull}}, {{5731334777325470ull, 1879378301235399491ull, 8661036483187788088ull, 2519104629209829551ull}}, {{13842222223753820550ull, 2349222876544249363ull, 6214609585557347206ull, 3148880786512286939ull}}, {{12691091761264887783ull, 12159900632535087512ull, 3156575963519296103ull, 3936100983140358674ull}}, {{7931932350790554864ull, 14517466922975511551ull, 6584545995626947968ull, 2460063114462724171ull}}, {{5303229420060805676ull, 18146833653719389439ull, 3618996476106297056ull, 3075078893078405214ull}}, {{2017350756648619191ull, 4236797993439685183ull, 13747117631987647129ull, 3843848616348006517ull}}, {{8178373250546468851ull, 14177213791968272999ull, 10897791529205973407ull, 2402405385217504073ull}}, {{5611280544755698159ull, 13109831221532953345ull, 18233925429934854663ull, 3003006731521880091ull}}, {{11625786699372010603ull, 11775603008488803777ull, 18180720768991180425ull, 3753758414402350114ull}}, {{348587659466424771ull, 442222852664420505ull, 15974636499046875670ull, 2346099009001468821ull}}, {{5047420592760418868ull, 9776150602685301439ull, 6133237568526430875ull, 2932623761251836027ull}}, {{1697589722523135681ull, 7608502234929238895ull, 3054860942230650690ull, 3665779701564795034ull}}, {{15957045208436083313ull, 287255756806772810ull, 13041948214643089171ull, 4582224626955993792ull}}, {{14584839273699939975ull, 16320435912500090670ull, 8151217634151930731ull, 2863890391847496120ull}}, {{9007677055270149160ull, 15788858872197725434ull, 10189022042689913414ull, 3579862989809370150ull}}, {{2036224282232910642ull, 10512701553392380985ull, 3512905516507615960ull, 4474828737261712688ull}}, {{12801855222464038911ull, 6570438470870238115ull, 2195565947817259975ull, 2796767960788570430ull}}, {{11390633009652660735ull, 3601362070160409740ull, 11967829471626350777ull, 3495959950985713037ull}}, {{14238291262065825919ull, 9113388606127900079ull, 1124728784250774759ull, 4369949938732141297ull}}, {{15816461066432223055ull, 12613396906471019405ull, 12232170536225203984ull, 2731218711707588310ull}}, {{5935518277758115107ull, 15766746133088774257ull, 6066841133426729172ull, 3414023389634485388ull}}, {{12031083865625031788ull, 1261688592651416205ull, 7583551416783411466ull, 4267529237043106735ull}}, {{9825270425229338820ull, 5400241388834523032ull, 11657248663130714022ull, 2667205773151941709ull}}, {{12281588031536673524ull, 15973673772897929598ull, 736502773631228815ull, 3334007216439927137ull}}, {{6128613002566066097ull, 15355406197695024094ull, 5532314485466423923ull, 4167509020549908921ull}}, {{17665441181885955023ull, 7291285864345696106ull, 14986911599484984712ull, 2604693137843693075ull}}, {{12858429440502667971ull, 9114107330432120133ull, 14121953480928842986ull, 3255866422304616344ull}}, {{2237978745346171251ull, 2169262126185374359ull, 17652441851161053733ull, 4069833027880770430ull}}, {{8316265743482438888ull, 3661631838079552926ull, 6421090138548270679ull, 2543645642425481519ull}}, {{1171960142498272802ull, 18412097852881604870ull, 3414676654757950444ull, 3179557053031851899ull}}, {{10688322214977616811ull, 4568378242392454471ull, 18103403873729601768ull, 3974446316289814873ull}}, {{13597730412002092363ull, 2855236401495284044ull, 4397098393439919249ull, 2484028947681134296ull}}, {{16997163015002615453ull, 8180731520296492959ull, 5496372991799899061ull, 3105036184601417870ull}}, {{16634767750325881413ull, 14837600418798004103ull, 16093838276604649634ull, 3881295230751772337ull}}, {{17314258871594757739ull, 13885186280176140468ull, 3141119895236824165ull, 2425809519219857711ull}}, {{3196079515783895558ull, 3521424794938011874ull, 17761457924328193919ull, 3032261899024822138ull}}, {{13218471431584645255ull, 18236839048954678554ull, 12978450368555466590ull, 3790327373781027673ull}}, {{12873230663167791189ull, 6786338387169286192ull, 1194002452706084763ull, 2368954608613142296ull}}, {{16091538328959738986ull, 3871236965534219836ull, 1492503065882605954ull, 2961193260766427870ull}}, {{1667678837490122116ull, 14062418243772550604ull, 11089000869208033250ull, 3701491575958034837ull}}, {{10265671310286102131ull, 13400697420785232031ull, 9236468552468714733ull, 2313432234973771773ull}}, {{8220403119430239759ull, 2915813720699376327ull, 16157271709013281321ull, 2891790293717214716ull}}, {{5663817880860411795ull, 8256453169301608313ull, 1749845562557050035ull, 3614737867146518396ull}}, {{11691458369502902647ull, 5708880443199622487ull, 2187306953196312544ull, 4518422333933147995ull}}, {{14224690508580396011ull, 3568050276999764054ull, 17507967910243553004ull, 2824013958708217496ull}}, {{8557491098870719205ull, 4460062846249705068ull, 3438215814094889639ull, 3530017448385271871ull}}, {{10696863873588399007ull, 963392539384743431ull, 18132827822900775761ull, 4412521810481589838ull}}, {{13603068948633831235ull, 12131335383183934404ull, 6721331370885596946ull, 2757826131550993649ull}}, {{17003836185792289044ull, 5940797192125142197ull, 13013350232034384087ull, 3447282664438742061ull}}, {{7419737176958197593ull, 2814310471729039843ull, 2431629734760816397ull, 4309103330548427577ull}}, {{2331492726385179544ull, 4064787054044343854ull, 13048983630293980008ull, 2693189581592767235ull}}, {{12137737944836250237ull, 5080983817555429817ull, 11699543519440087106ull, 3366486976990959044ull}}, {{1337114375763149085ull, 15574601808799063080ull, 14624429399300108882ull, 4208108721238698805ull}}, {{835696484851968178ull, 14345812148926802329ull, 11446111383776262003ull, 2630067950774186753ull}}, {{5656306624492348127ull, 13320579167731115007ull, 472581174438163792ull, 3287584938467733442ull}}, {{2458697262188047254ull, 16650723959663893759ull, 9814098504902480548ull, 4109481173084666802ull}}, {{8454214816508611390ull, 1183330437935157791ull, 10745497583991438247ull, 2568425733177916751ull}}, {{5956082502208376333ull, 15314221102701110951ull, 8820185961561909904ull, 3210532166472395939ull}}, {{2833417109333082513ull, 696032304666837073ull, 6413546433524999477ull, 4013165208090494924ull}}, {{13300100739401646331ull, 2740863199630467122ull, 13231838557807900481ull, 2508228255056559327ull}}, {{7401753887397282105ull, 8037765017965471807ull, 11928112178832487697ull, 3135285318820699159ull}}, {{4640506340819214727ull, 14658892290884227663ull, 10298454205113221717ull, 3919106648525873949ull}}, {{9817845490653091061ull, 11467650691016336241ull, 8742376887409457525ull, 2449441655328671218ull}}, {{16883992881743751730ull, 499505308488256589ull, 1704599072407046099ull, 3061802069160839023ull}}, {{7269933046897525950ull, 14459439690892484449ull, 15965806895790971335ull, 3827252586451048778ull}}, {{16072923200379423479ull, 15954678834448884636ull, 14590315328296744988ull, 2392032866531905486ull}}, {{1644409926764727733ull, 1496604469351554180ull, 9014522123516155428ull, 2990041083164881858ull}}, {{2055512408455909666ull, 1870755586689442725ull, 2044780617540418477ull, 3737551353956102323ull}}, {{3590538264498637493ull, 3475065250894595655ull, 17418888950458619212ull, 2335969596222563951ull}}, {{18323230885905460578ull, 4343831563618244568ull, 17161925169645886111ull, 2919961995278204939ull}}, {{4457294533672274107ull, 818103436095417807ull, 16840720443629969735ull, 3649952494097756174ull}}, {{959932148662954729ull, 14857687350401435971ull, 11827528517682686360ull, 4562440617622195218ull}}, {{16740858657410204370ull, 9286054594000897481ull, 12003891341979066879ull, 2851525386013872011ull}}, {{7091015266480591750ull, 6995882224073733948ull, 10393178159046445695ull, 3564406732517340014ull}}, {{8863769083100739688ull, 4133166761664779531ull, 3768100661953281311ull, 4455508415646675018ull}}, {{3234012667724268353ull, 9500758253681569063ull, 6966748932148188723ull, 2784692759779171886ull}}, {{17877573889937499153ull, 7264261798674573424ull, 17931808202040011712ull, 3480865949723964857ull}}, {{3900223288712322326ull, 9080327248343216781ull, 8579702197267850928ull, 4351082437154956072ull}}, {{4743482564658895406ull, 5675204530214510488ull, 5362313873292406830ull, 2719426523221847545ull}}, {{5929353205823619257ull, 16317377699622913918ull, 11314578360042896441ull, 3399283154027309431ull}}, {{16635063544134299879ull, 6561664069246478685ull, 9531536931626232648ull, 4249103942534136789ull}}, {{12702757724297631377ull, 4101040043279049178ull, 8263053591480089357ull, 2655689964083835493ull}}, {{6655075118517263413ull, 9737986072526199377ull, 14940503007777499600ull, 3319612455104794366ull}}, {{12930529916573967170ull, 12172482590657749221ull, 9452256722867098692ull, 4149515568880992958ull}}, {{10387424207072423433ull, 16831173656015869071ull, 1295974433364548778ull, 2593447230550620599ull}}, {{8372594240413141387ull, 11815595033165060531ull, 15455026096987849685ull, 3241809038188275748ull}}, {{5854056782089038830ull, 934435736174161952ull, 872038547525260491ull, 4052261297735344686ull}}, {{3658785488805649269ull, 16724923399604708884ull, 14380082147485451518ull, 2532663311084590428ull}}, {{4573481861007061586ull, 11682782212651110297ull, 17975102684356814398ull, 3165829138855738035ull}}, {{10328538344686214887ull, 5380105728959112063ull, 17857192337018630094ull, 3957286423569672544ull}}, {{13372865493069966160ull, 17197624135881608751ull, 11160745210636643808ull, 2473304014731045340ull}}, {{12104395847910069796ull, 3050286096142459323ull, 13950931513295804761ull, 3091630018413806675ull}}, {{10518808791460199341ull, 8424543638605462058ull, 12826978373192368047ull, 3864537523017258344ull}}, {{11185941513090012492ull, 12182868801769495642ull, 8016861483245230029ull, 2415335951885786465ull}}, {{4759054854507739807ull, 1393527946929705841ull, 14632762872483925441ull, 3019169939857233081ull}}, {{10560504586562062663ull, 6353595952089520205ull, 4455895535322743089ull, 3773962424821541352ull}}, {{8906158375814983117ull, 15500212516124419888ull, 2784934709576714430ull, 2358726515513463345ull}}, {{11132697969768728896ull, 10151893608300749052ull, 8092854405398280942ull, 2948408144391829181ull}}, {{13915872462210911119ull, 3466494973521160507ull, 14727754025175239082ull, 3685510180489786476ull}}, {{12783154559336250995ull, 13556490753756226442ull, 18409692531469048852ull, 4606887725612233095ull}}, {{12601157618012544776ull, 17696178757952417334ull, 18423586859809237388ull, 2879304828507645684ull}}, {{6528074985660905162ull, 3673479373730970052ull, 4582739501051995120ull, 3599131035634557106ull}}, {{8160093732076131452ull, 4591849217163712565ull, 14951796413169769708ull, 4498913794543196382ull}}, {{7405901591761276110ull, 12093277797582096161ull, 4733186739803718163ull, 2811821121589497739ull}}, {{13869063008128983041ull, 10504911228550232297ull, 1304797406327259800ull, 3514776401986872174ull}}, {{3501270704879065090ull, 13131139035687790372ull, 10854368794763850558ull, 4393470502483590217ull}}, {{11411666227404191489ull, 3595275878877481078ull, 18313195542795876359ull, 2745919064052243885ull}}, {{5041210747400463553ull, 18329152903879015060ull, 9056436373212681736ull, 3432398830065304857ull}}, {{6301513434250579442ull, 4464697056139217209ull, 15932231484943240075ull, 4290498537581631071ull}}, {{15467660942475081911ull, 484592650873316803ull, 16875173705730606903ull, 2681561585988519419ull}}, {{14722890159666464485ull, 14440798868873809716ull, 16482281113735870724ull, 3351951982485649274ull}}, {{18403612699583080606ull, 18050998586092262145ull, 11379479355315062597ull, 4189939978107061593ull}}, {{4584728909598343523ull, 13587717125521357793ull, 194645569430832267ull, 2618712486316913496ull}}, {{10342597155425317307ull, 12372960388474309337ull, 243306961788540334ull, 3273390607896141870ull}}, {{17539932462709034538ull, 6242828448738110863ull, 9527505739090451226ull, 4091738259870177337ull}}, {{17879986816834228443ull, 8513453798888707193ull, 17483906133000001776ull, 2557336412418860835ull}}, {{8514925465760621841ull, 10641817248610883992ull, 17243196647822614316ull, 3196670515523576044ull}}, {{10643656832200777301ull, 13302271560763604990ull, 3107251736068716279ull, 3995838144404470056ull}}, {{2040599501698097909ull, 15231448753118334975ull, 1942032335042947674ull, 2497398840252793785ull}}, {{16385807432404786099ull, 9815938904543142910ull, 7039226437231072497ull, 3121748550315992231ull}}, {{11258887253651206815ull, 16881609649106316542ull, 4187347028111452717ull, 3902185687894990289ull}}, {{2425118515104616356ull, 12856849039905141791ull, 14146306938638127708ull, 2438866054934368930ull}}, {{16866456199162934157ull, 16071061299881427238ull, 8459511636442883827ull, 3048582568667961163ull}}, {{11859698212098891888ull, 15477140606424396144ull, 5962703527126216880ull, 3810728210834951454ull}}, {{7412311382561807430ull, 9673212879015247590ull, 17561747759736049262ull, 2381705131771844658ull}}, {{42017191347483479ull, 2868144061914283680ull, 12728812662815285770ull, 2977131414714805823ull}}, {{52521489184354349ull, 12808552114247630408ull, 11299329810091719308ull, 3721414268393507279ull}}, {{32825930740221468ull, 17228717108259544813ull, 13979610158948406423ull, 2325883917745942049ull}}, {{4652718431852664739ull, 16924210366897043112ull, 3639454643403344317ull, 2907354897182427562ull}}, {{5815898039815830924ull, 7320204903339140178ull, 13772690341108956205ull, 3634193621478034452ull}}, {{16493244586624564463ull, 13761942147601313126ull, 17215862926386195256ull, 4542742026847543065ull}}, {{5696591848212964885ull, 8601213842250820704ull, 3842385301350290179ull, 2839213766779714416ull}}, {{7120739810266206107ull, 6139831284386137976ull, 4802981626687862724ull, 3549017208474643020ull}}, {{8900924762832757633ull, 7674789105482672470ull, 6003727033359828405ull, 4436271510593303775ull}}, {{951391958343085617ull, 7102586200140364246ull, 10669858423490974609ull, 2772669694120814859ull}}, {{10412611984783632829ull, 13489918768602843211ull, 8725637010936330357ull, 3465837117651018574ull}}, {{8404078962552153132ull, 3027340405471390302ull, 1683674226815637139ull, 4332296397063773218ull}}, {{640863333167707804ull, 18032988817915476603ull, 5663982410187161115ull, 2707685248164858261ull}}, {{14636137221741798467ull, 17929550003966957849ull, 11691664031161339298ull, 3384606560206072826ull}}, {{4460113471895084371ull, 13188565468103921504ull, 5391208002096898315ull, 4230758200257591033ull}}, {{2787570919934427732ull, 5937010408351256988ull, 14898720047379031207ull, 2644223875160994395ull}}, {{3484463649918034665ull, 2809576992011683331ull, 14011714040796401105ull, 3305279843951242994ull}}, {{18190637617679707043ull, 8123657258441992067ull, 8291270514140725573ull, 4131599804939053743ull}}, {{9063305501836122950ull, 7383128795739938994ull, 12099573098979035339ull, 2582249878086908589ull}}, {{2105759840440377880ull, 4617224976247535839ull, 1289408318441630462ull, 3227812347608635737ull}}, {{16467257855832636061ull, 14994903257164195606ull, 6223446416479425981ull, 4034765434510794671ull}}, {{5680350141468009635ull, 11677657544941316206ull, 10807183037940723094ull, 2521728396569246669ull}}, {{16323809713689787851ull, 5373699894321869449ull, 18120664815853291772ull, 3152160495711558336ull}}, {{6569704086830071102ull, 6717124867902336812ull, 4204086946107063099ull, 3940200619639447921ull}}, {{13329437091123570247ull, 1892360033225266555ull, 14156769387385384197ull, 2462625387274654950ull}}, {{12050110345477074904ull, 6977136059958971098ull, 8472589697376954438ull, 3078281734093318688ull}}, {{5839265894991567822ull, 17944792111803489681ull, 10590737121721193047ull, 3847852167616648360ull}}, {{15178756230438199649ull, 18133024097518262906ull, 6619210701075745654ull, 2404907604760405225ull}}, {{9750073251192973753ull, 13442908085043052825ull, 12885699394772069972ull, 3006134505950506531ull}}, {{16799277582418605095ull, 16803635106303816031ull, 11495438225037699561ull, 3757668132438133164ull}}, {{17417077516652710041ull, 3584742913798803163ull, 16408020927503338034ull, 2348542582773833227ull}}, {{17159660877388499647ull, 13704300679103279762ull, 15898340140951784638ull, 2935678228467291534ull}}, {{12226204059880848751ull, 7907003812024323895ull, 10649553139334954990ull, 3669597785584114418ull}}, {{10671069056423673034ull, 660382728175629061ull, 4088569387313917930ull, 4586997231980143023ull}}, {{8975261169478489598ull, 5024425223537156067ull, 9472884894712280562ull, 2866873269987589389ull}}, {{6607390443420724094ull, 15503903566276220892ull, 16452792136817738606ull, 3583591587484486736ull}}, {{8259238054275905117ull, 10156507420990500307ull, 2119246097312621642ull, 4479489484355608421ull}}, {{2856180774708746746ull, 10959503156546450596ull, 3630371820034082478ull, 2799680927722255263ull}}, {{3570225968385933433ull, 4476006908828287437ull, 18373022830324766810ull, 3499601159652819078ull}}, {{9074468478909804695ull, 14818380672890135104ull, 13742906501051182704ull, 4374501449566023848ull}}, {{5671542799318627935ull, 9261487920556334440ull, 8589316563156989190ull, 2734063405978764905ull}}, {{7089428499148284918ull, 2353487863840642242ull, 15348331722373624392ull, 3417579257473456131ull}}, {{18085157660790131956ull, 2941859829800802802ull, 14573728634539642586ull, 4271974071841820164ull}}, {{15914909556421220376ull, 6450348412052889655ull, 18331952433442052424ull, 2669983794901137602ull}}, {{15281950927099137566ull, 8062935515066112069ull, 13691568504947789722ull, 3337479743626422003ull}}, {{5267380603591758246ull, 855297356977864279ull, 12502774612757349249ull, 4171849679533027504ull}}, {{10209641904885930760ull, 12063775894179634934ull, 7814234132973343280ull, 2607406049708142190ull}}, {{3538680344252637642ull, 15079719867724543668ull, 544420629361903292ull, 3259257562135177738ull}}, {{4423350430315797052ull, 402905760946127969ull, 9903897823557154924ull, 4074071952668972172ull}}, {{14293809065015842918ull, 9475188137446105788ull, 15413308176577997635ull, 2546294970418107607ull}}, {{17867261331269803647ull, 7232299153380244331ull, 14654949202295109140ull, 3182868713022634509ull}}, {{17722390645659866655ull, 9040373941725305414ull, 4483628447586722713ull, 3978585891278293137ull}}, {{6464808135110028755ull, 17179448759646785644ull, 14331482825810171455ull, 2486616182048933210ull}}, {{8081010168887535944ull, 16862624931131094151ull, 8690981495407938511ull, 3108270227561166513ull}}, {{5489576692682032026ull, 16466595145486479785ull, 15475412887687311043ull, 3885337784451458141ull}}, {{14960200478994739776ull, 7985778956715355913ull, 11977976064018263354ull, 2428336115282161338ull}}, {{4865192543461261008ull, 758851659039419084ull, 5749098043168053385ull, 3035420144102701673ull}}, {{6081490679326576260ull, 5560250592226661759ull, 11798058572387454635ull, 3794275180128377091ull}}, {{10718460702220192019ull, 1169313610927969647ull, 5067943598528465195ull, 2371421987580235682ull}}, {{8786389859347852119ull, 15296700068942125771ull, 15558301535015357301ull, 2964277484475294602ull}}, {{6371301305757427245ull, 5285817030895493502ull, 10224504881914420819ull, 3705346855594118253ull}}, {{17817121371380555740ull, 997792635095989486ull, 8696158560410206964ull, 2315841784746323908ull}}, {{13048029677370918867ull, 1247240793869986858ull, 10870198200512758705ull, 2894802230932904885ull}}, {{7086665059858872776ull, 6170737010764871477ull, 18199433769068336285ull, 3618502788666131106ull}}, {{13470017343250978874ull, 12325107281883477250ull, 13525920174480644548ull, 4523128485832663883ull}}, {{13030446857959249701ull, 16926564088031949089ull, 6147857099836708890ull, 2826955303645414927ull}}, {{2453000517166898414ull, 11934833073185160554ull, 3073135356368498209ull, 3533694129556768659ull}}, {{12289622683313398825ull, 1083483286199286980ull, 17676477250742786474ull, 4417117661945960823ull}}, {{16904386213925650074ull, 5288863072301942266ull, 17965327309355323402ull, 2760698538716225514ull}}, {{11907110730552286784ull, 15834450877232203641ull, 13233287099839378444ull, 3450873173395281893ull}}, {{1048830357908194768ull, 1346319522830702936ull, 2706550819517059344ull, 4313591466744102367ull}}, {{655518973692621730ull, 841449701769189335ull, 8609123289839243946ull, 2695994666715063979ull}}, {{14654456772397940874ull, 10275184164066262476ull, 6149718093871667028ull, 3369993333393829974ull}}, {{18318070965497426093ull, 12843980205082828095ull, 16910519654194359593ull, 4212491666742287467ull}}, {{18366323381076973164ull, 1109958600535685703ull, 8263231774657780794ull, 2632807291713929667ull}}, {{18346218207918828551ull, 10610820287524382937ull, 5717353699894838088ull, 3291009114642412084ull}}, {{9097714704616371977ull, 13263525359405478672ull, 7146692124868547610ull, 4113761393303015105ull}}, {{5686071690385232486ull, 12901389368055812074ull, 15995897624111312016ull, 2571100870814384440ull}}, {{16330961649836316415ull, 16126736710069765092ull, 1548127956429588404ull, 3213876088517980551ull}}, {{1966957988585843903ull, 1711676813877654750ull, 15770218000819149218ull, 4017345110647475688ull}}, {{15064406798148316151ull, 5681484027100922122ull, 9856386250511968261ull, 2510840694154672305ull}}, {{9607136460830619381ull, 11713541052303540557ull, 16932168831567348230ull, 3138550867693340381ull}}, {{16620606594465662130ull, 5418554278524649888ull, 7330152984177021576ull, 3923188584616675477ull}}, {{10387879121541038832ull, 3386596424077906180ull, 6887188624324332437ull, 2451992865385422173ull}}, {{12984848901926298539ull, 8844931548524770629ull, 13220671798832803450ull, 3064991081731777716ull}}, {{2396003072125709462ull, 1832792398801187479ull, 16525839748541004313ull, 3831238852164722145ull}}, {{8415030947719650270ull, 12674710295319211934ull, 3411120815197045839ull, 2394524282602951341ull}}, {{1295416647794787029ull, 11231701850721627014ull, 8875587037423695203ull, 2993155353253689176ull}}, {{10842642846598259595ull, 9427941294974645863ull, 11094483796779619004ull, 3741444191567111470ull}}, {{13694180806764994103ull, 15115835346213929472ull, 2322366354559873973ull, 2338402619729444669ull}}, {{17117726008456242628ull, 5059736127485248128ull, 7514643961627230371ull, 2923003274661805836ull}}, {{2950413436860751669ull, 1712984140929172257ull, 9393304952034037964ull, 3653754093327257295ull}}, {{8299702814503327491ull, 2141230176161465321ull, 7129945171615159551ull, 4567192616659071619ull}}, {{16716529305133049442ull, 8255797887741997681ull, 2150372723045780767ull, 2854495385411919762ull}}, {{7060603576134148090ull, 5708061341250109198ull, 11911337940662001767ull, 3568119231764899702ull}}, {{18049126507022460921ull, 2523390658135248593ull, 5665800388972726401ull, 4460149039706124628ull}}, {{4363175039247956220ull, 13106334207403000131ull, 12764497279962729808ull, 2787593149816327892ull}}, {{842282780632557370ull, 16382917759253750164ull, 15955621599953412260ull, 3484491437270409865ull}}, {{1052853475790696713ull, 2031903125357636089ull, 6109468944659601614ull, 4355614296588012332ull}}, {{12187248468437655206ull, 15104997508630686267ull, 13041790127267026816ull, 2722258935367507707ull}}, {{10622374567119681103ull, 434502812078806218ull, 11690551640656395617ull, 3402823669209384634ull}}, {{4054596172044825571ull, 5154814533525895677ull, 5389817513965718713ull, 4253529586511730793ull}}, {{4839965616741709934ull, 14750974129522154558ull, 14897850992297043955ull, 2658455991569831745ull}}, {{15273329057781913225ull, 13827031643475305293ull, 4787255685089141232ull, 3323069989462289682ull}}, {{5256603266945227819ull, 17283789554344131617ull, 15207441643216202348ull, 4153837486827862102ull}}, {{14814592087909237147ull, 1578996434610306452ull, 4892965008582738564ull, 2596148429267413814ull}}, {{71496036176994818ull, 1973745543262883066ull, 15339578297583199013ull, 3245185536584267267ull}}, {{9312742082076019330ull, 7078867947505991736ull, 14562786853551610862ull, 4056481920730334084ull}}, {{5820463801297512082ull, 18259350522473408547ull, 18325113820324532596ull, 2535301200456458802ull}}, {{2663893733194502198ull, 4377444079382209068ull, 13683020238550889938ull, 3169126500570573503ull}}, {{3329867166493127747ull, 14695177136082537143ull, 12492089279761224518ull, 3961408125713216879ull}}, {{8998696006699286698ull, 4572799691624197810ull, 14725084827491847180ull, 2475880078570760549ull}}, {{2024997971519332565ull, 5715999614530247263ull, 4571297979082645263ull, 3094850098213450687ull}}, {{16366305519681329418ull, 2533313499735421174ull, 1102436455425918675ull, 3868562622766813359ull}}, {{5617254931373442982ull, 17724222001830495898ull, 7606551812282281027ull, 2417851639229258349ull}}, {{16244940701071579536ull, 17543591483860731968ull, 14119875783780239188ull, 3022314549036572936ull}}, {{1859431802629922803ull, 3482745281116363345ull, 17649844729725298986ull, 3777893186295716170ull}}, {{12691359922712171512ull, 6788401819125114994ull, 15642838974505699770ull, 2361183241434822606ull}}, {{6640827866535438582ull, 17708874310761169551ull, 10330176681277348904ull, 2951479051793528258ull}}, {{3689348814741910324ull, 3689348814741910323ull, 3689348814741910323ull, 3689348814741910323ull}}, {{0ull, 0ull, 0ull, 4611686018427387904ull}}, {{0ull, 0ull, 0ull, 2882303761517117440ull}}, {{0ull, 0ull, 0ull, 3602879701896396800ull}}, {{0ull, 0ull, 0ull, 4503599627370496000ull}}, {{0ull, 0ull, 0ull, 2814749767106560000ull}}, {{0ull, 0ull, 0ull, 3518437208883200000ull}}, {{0ull, 0ull, 0ull, 4398046511104000000ull}}, {{0ull, 0ull, 0ull, 2748779069440000000ull}}, {{0ull, 0ull, 0ull, 3435973836800000000ull}}, {{0ull, 0ull, 0ull, 4294967296000000000ull}}, {{0ull, 0ull, 0ull, 2684354560000000000ull}}, {{0ull, 0ull, 0ull, 3355443200000000000ull}}, {{0ull, 0ull, 0ull, 4194304000000000000ull}}, {{0ull, 0ull, 0ull, 2621440000000000000ull}}, {{0ull, 0ull, 0ull, 3276800000000000000ull}}, {{0ull, 0ull, 0ull, 4096000000000000000ull}}, {{0ull, 0ull, 0ull, 2560000000000000000ull}}, {{0ull, 0ull, 0ull, 3200000000000000000ull}}, {{0ull, 0ull, 0ull, 4000000000000000000ull}}, {{0ull, 0ull, 0ull, 2500000000000000000ull}}, {{0ull, 0ull, 0ull, 3125000000000000000ull}}, {{0ull, 0ull, 0ull, 3906250000000000000ull}}, {{0ull, 0ull, 0ull, 2441406250000000000ull}}, {{0ull, 0ull, 0ull, 3051757812500000000ull}}, {{0ull, 0ull, 0ull, 3814697265625000000ull}}, {{0ull, 0ull, 0ull, 2384185791015625000ull}}, {{0ull, 0ull, 0ull, 2980232238769531250ull}}, {{0ull, 0ull, 9223372036854775808ull, 3725290298461914062ull}}, {{0ull, 0ull, 1152921504606846976ull, 2328306436538696289ull}}, {{0ull, 0ull, 6052837899185946624ull, 2910383045673370361ull}}, {{0ull, 0ull, 12177733392409821184ull, 3637978807091712951ull}}, {{0ull, 0ull, 10610480722084888576ull, 4547473508864641189ull}}, {{0ull, 0ull, 8937393460516749312ull, 2842170943040400743ull}}, {{0ull, 0ull, 6560055807218548736ull, 3552713678800500929ull}}, {{0ull, 0ull, 12811755777450573824ull, 4440892098500626161ull}}, {{0ull, 0ull, 1089818333265526784ull, 2775557561562891351ull}}, {{0ull, 0ull, 15197330971864072192ull, 3469446951953614188ull}}, {{0ull, 0ull, 549919641120538624ull, 4336808689942017736ull}}, {{0ull, 0ull, 343699775700336640ull, 2710505431213761085ull}}, {{0ull, 0ull, 5041310738052808704ull, 3388131789017201356ull}}, {{0ull, 0ull, 6301638422566010880ull, 4235164736271501695ull}}, {{0ull, 0ull, 10856053041744838656ull, 2646977960169688559ull}}, {{0ull, 0ull, 8958380283753660416ull, 3308722450212110699ull}}, {{0ull, 0ull, 6586289336264687616ull, 4135903062765138374ull}}, {{0ull, 0ull, 17951488890447593472ull, 2584939414228211483ull}}, {{0ull, 0ull, 17827675094632103936ull, 3231174267785264354ull}}, {{0ull, 0ull, 13061221831435354112ull, 4038967834731580443ull}}, {{0ull, 0ull, 5857420635433402368ull, 2524354896707237777ull}}, {{0ull, 0ull, 11933461812719140864ull, 3155443620884047221ull}}, {{0ull, 0ull, 1081769210616762368ull, 3944304526105059027ull}}, {{0ull, 0ull, 16817006821131334144ull, 2465190328815661891ull}}, {{0ull, 0ull, 16409572507986779776ull, 3081487911019577364ull}}, {{0ull, 0ull, 2065221561273923104ull, 3851859888774471706ull}}, {{0ull, 0ull, 5902449494223589844ull, 2407412430484044816ull}}, {{0ull, 0ull, 7378061867779487305ull, 3009265538105056020ull}}, {{0ull, 4611686018427387904ull, 9222577334724359131ull, 3761581922631320025ull}}, {{0ull, 576460752303423488ull, 17293325880271194217ull, 2350988701644575015ull}}, {{0ull, 5332261958806667264ull, 17004971331911604867ull, 2938735877055718769ull}}, {{0ull, 2053641430080946176ull, 7421156109607342372ull, 3673419846319648462ull}}, {{0ull, 2567051787601182720ull, 53073100154402157ull, 4591774807899560578ull}}, {{0ull, 3910250376464433152ull, 4644856706023889252ull, 2869859254937225361ull}}, {{0ull, 4887812970580541440ull, 10417756900957249469ull, 3587324068671531701ull}}, {{0ull, 10721452231653064704ull, 17633882144623949740ull, 4484155085839414626ull}}, {{0ull, 15924279681637941248ull, 15632862358817356491ull, 2802596928649634141ull}}, {{0ull, 15293663583620038656ull, 5706019893239531902ull, 3503246160812042677ull}}, {{0ull, 9893707442670272512ull, 11744210884976802782ull, 4379057701015053346ull}}, {{0ull, 1571881133241532416ull, 11951817821537889643ull, 2736911063134408341ull}}, {{0ull, 15799909471834079232ull, 1104714221640198341ull, 3421138828918010427ull}}, {{0ull, 5914828784510435328ull, 15215950832332411639ull, 4276423536147513033ull}}, {{0ull, 10614297017960103936ull, 2592440242566675418ull, 2672764710092195646ull}}, {{0ull, 4044499235595354112ull, 12463922340063120081ull, 3340955887615244557ull}}, {{0ull, 9667310062921580544ull, 1744844869796736389ull, 4176194859519055697ull}}, {{0ull, 8347911798539681792ull, 12619743089691430003ull, 2610121787199409810ull}}, {{0ull, 5823203729747214336ull, 6551306825259511696ull, 3262652233999262263ull}}, {{0ull, 7279004662184017920ull, 3577447513147001716ull, 4078315292499077829ull}}, {{0ull, 13772749950719787008ull, 4541747704930570024ull, 2548947057811923643ull}}, {{0ull, 17215937438399733760ull, 1065498612735824626ull, 3186183822264904554ull}}, {{0ull, 12296549761144891392ull, 10555245302774556591ull, 3982729777831130692ull}}, {{0ull, 14602872628356638976ull, 15820400351088873677ull, 2489206111144456682ull}}, {{0ull, 4418532730163635008ull, 10552128402006316289ull, 3111507638930570853ull}}, {{0ull, 10134851931131931664ull, 17801846520935283265ull, 3889384548663213566ull}}, {{0ull, 17863497503025927050ull, 6514468057157164136ull, 2430865342914508479ull}}, {{9223372036854775808ull, 3882627805072857196ull, 3531399053019067267ull, 3038581678643135599ull}}, {{11529215046068469760ull, 241598737913683591ull, 18249306871555997796ull, 3798227098303919498ull}}, {{14123288431433875456ull, 9374371248050828052ull, 16017502813149886526ull, 2373891936439949686ull}}, {{17654110539292344320ull, 2494592023208759257ull, 10798506479582582350ull, 2967364920549937108ull}}, {{8232580118833266688ull, 12341612065865724880ull, 13498133099478227937ull, 3709206150687421385ull}}, {{5145362574270791680ull, 795978513524996194ull, 1518804159532810605ull, 2318253844179638366ull}}, {{15655075254693265408ull, 5606659160333633146ull, 11121877236270789064ull, 2897817305224547957ull}}, {{10345472031511805952ull, 7008323950417041433ull, 67288490056322618ull, 3622271631530684947ull}}, {{17543526057817145344ull, 17983776974876077599ull, 13919168667852566984ull, 4527839539413356183ull}}, {{17882232813776797696ull, 11239860609297548499ull, 15617009445048936221ull, 2829899712133347614ull}}, {{17741104998793609216ull, 214767706339771912ull, 10297889769456394469ull, 3537374640166684518ull}}, {{3729637174782459904ull, 4880145651352102795ull, 3648990174965717278ull, 4421718300208355648ull}}, {{25180225025343488ull, 16885149087377227959ull, 2280618859353573298ull, 2763573937630222280ull}}, {{13866533336563843072ull, 11883064322366759140ull, 2850773574191966623ull, 3454467422037777850ull}}, {{17333166670704803840ull, 10242144384531061021ull, 12786839004594734087ull, 4318084277547222312ull}}, {{13139072178404196352ull, 13318869267972994994ull, 7991774377871708804ull, 2698802673467013945ull}}, {{7200468186150469632ull, 16648586584966243743ull, 14601403990767023909ull, 3373503341833767431ull}}, {{4388899214260699136ull, 6975675175925640967ull, 13640068970031391983ull, 4216879177292209289ull}}, {{9660591036554018816ull, 11277326012594607460ull, 1607514078628538133ull, 2635549485807630806ull}}, {{12075738795692523520ull, 261599460461095613ull, 11232764635140448475ull, 3294436857259538507ull}}, {{1259615439333490688ull, 14162057380858533229ull, 9429269775498172689ull, 4118046071574423134ull}}, {{3093102658797125632ull, 1933756835395501412ull, 1281607591258970027ull, 2573778794734014459ull}}, {{3866378323496407040ull, 16252254099526540477ull, 15437067544355876245ull, 3217223493417518073ull}}, {{9444658922797896704ull, 6480259569126011884ull, 5461276375162681595ull, 4021529366771897592ull}}, {{15126283863603461248ull, 1744319221490063475ull, 3413297734476675997ull, 2513455854232435995ull}}, {{14296168811076938656ull, 6792085045289967248ull, 18101680223378008708ull, 3141819817790544993ull}}, {{17870211013846173320ull, 8490106306612459060ull, 8792042223940347173ull, 3927274772238181242ull}}, {{1945509846799082517ull, 7612159450846480865ull, 10106712408390104887ull, 2454546732648863276ull}}, {{7043573326926241051ull, 4903513295130713177ull, 12633390510487631109ull, 3068183415811079095ull}}, {{13416152677085189217ull, 10741077637340779375ull, 11180052119682150982ull, 3835229269763848869ull}}, {{15302624450819325117ull, 2101487504910599205ull, 9293375584015038316ull, 2397018293602405543ull}}, {{5293222508241992684ull, 2626859381138249007ull, 7005033461591409991ull, 2996272867003006929ull}}, {{2004842116875102951ull, 17118632281704974971ull, 13367977845416650392ull, 3745341083753758661ull}}, {{17393927387542797009ull, 10699145176065609356ull, 10660829162599100447ull, 2340838177346099163ull}}, {{3295665160718944645ull, 8762245451654623792ull, 8714350434821487655ull, 2926047721682623954ull}}, {{4119581450898680806ull, 6341120796140891836ull, 1669566006672083761ull, 3657559652103279943ull}}, {{5149476813623351007ull, 12538087013603502699ull, 15922015563622268413ull, 4571949565129099928ull}}, {{912579999300900428ull, 10142147392715883139ull, 9951259727263917758ull, 2857468478205687455ull}}, {{14975783054408289246ull, 3454312204040078115ull, 7827388640652509294ull, 3571835597757109319ull}}, {{14108042799582973654ull, 13541262291904873452ull, 5172549782388248713ull, 4464794497196386649ull}}, {{18040898786594134342ull, 1545759904799464051ull, 14762058660061125206ull, 2790496560747741655ull}}, {{17939437464815280023ull, 11155571917854105872ull, 13840887306649018603ull, 3488120700934677069ull}}, {{3977552757309548413ull, 9332778878890244437ull, 3466051078029109542ull, 4360150876168346337ull}}, {{4791813482532161710ull, 1221300780879014869ull, 13695496969836663224ull, 2725094297605216460ull}}, {{10601452871592590042ull, 1526625976098768586ull, 17119371212295829030ull, 3406367872006520575ull}}, {{4028444052635961744ull, 11131654506978236541ull, 16787527996942398383ull, 4257959840008150719ull}}, {{4823620542111170042ull, 13874813094502479694ull, 17409734025730080845ull, 2661224900005094199ull}}, {{15252897714493738360ull, 3508458312845935905ull, 17150481513735213153ull, 3326531125006367749ull}}, {{5231064087835009238ull, 8997258909484807786ull, 7603043836886852729ull, 4158163906257959687ull}}, {{7881101073324268678ull, 17152501864496474626ull, 11669431425695364811ull, 2598852441411224804ull}}, {{628004304800560040ull, 16828941312193205379ull, 14586789282119206014ull, 3248565551764031005ull}}, {{14620063436282863761ull, 11812804603386730915ull, 4398428547366843806ull, 4060706939705038757ull}}, {{6831696638463095899ull, 2771316858689318918ull, 5054860851317971331ull, 2537941837315649223ull}}, {{17762992834933645682ull, 17299204128643812359ull, 1706890045720076259ull, 3172427296644561529ull}}, {{17592055025239669198ull, 17012319142377377545ull, 6745298575577483228ull, 3965534120805701911ull}}, {{4077505363133711393ull, 1409327427131085158ull, 11133340637377008874ull, 2478458825503563694ull}}, {{14320253740771915049ull, 10985031320768632255ull, 4693303759866485284ull, 3098073531879454618ull}}, {{13288631157537505907ull, 13731289150960790319ull, 15090001736687882413ull, 3872591914849318272ull}}, {{15222923501102023048ull, 10887898728564187901ull, 9431251085429926508ull, 2420369946780823920ull}}, {{5193596321095365098ull, 13609873410705234877ull, 11789063856787408135ull, 3025462433476029900ull}}, {{11103681419796594277ull, 12400655744954155692ull, 14736329820984260169ull, 3781828041845037375ull}}, {{16163172924227647231ull, 832880812955265451ull, 16127735165756244462ull, 2363642526153148359ull}}, {{15592280136857171135ull, 10264473053048857622ull, 15547982938767917673ull, 2954553157691435449ull}}, {{10266978134216688110ull, 17442277334738459932ull, 5599920618177733379ull, 3693191447114294312ull}}, {{15640233370740205877ull, 8595580324997843505ull, 3499950386361083362ull, 2308244654446433945ull}}, {{5715233658143093634ull, 1521103369392528574ull, 8986624001378742107ull, 2885305818058042431ull}}, {{16367414109533642851ull, 15736437267022824429ull, 6621593983296039729ull, 3606632272572553039ull}}, {{6624209581634889851ull, 5835488528496366825ull, 3665306460692661758ull, 4508290340715691299ull}}, {{15669346034590275917ull, 17482238385592392977ull, 18431717602428771262ull, 2817681462947307061ull}}, {{5751624487955681184ull, 12629425945135715414ull, 9204588947753800366ull, 3522101828684133827ull}}, {{16412902646799377288ull, 6563410394564868459ull, 6894050166264862554ull, 4402627285855167284ull}}, {{7952221145035916853ull, 8713817515030430691ull, 13532153390770314904ull, 2751642053659479552ull}}, {{5328590412867508163ull, 10892271893788038364ull, 16915191738462893630ull, 3439552567074349440ull}}, {{6660738016084385203ull, 4391967830380272147ull, 2697245599369065422ull, 4299440708842936801ull}}, {{1857118250839046800ull, 16580037949269833804ull, 13214993545674135648ull, 2687150443026835500ull}}, {{2321397813548808500ull, 2278303362877740639ull, 16518741932092669561ull, 3358938053783544375ull}}, {{16736805322218174337ull, 7459565222024563702ull, 16036741396688449047ull, 4198672567229430469ull}}, {{5848817307958971057ull, 11579757291406434170ull, 12328806382143974606ull, 2624170354518394043ull}}, {{16534393671803489629ull, 5251324577403266904ull, 10799321959252580354ull, 3280212943147992554ull}}, {{2221248016044810420ull, 15787527758608859439ull, 4275780412210949634ull, 4100266178934990693ull}}, {{8305809037669088369ull, 14478890867557925053ull, 4978205766845537473ull, 2562666361834369183ull}}, {{14993947315513748365ull, 4263555529165242604ull, 1611071190129533938ull, 3203332952292961479ull}}, {{295690070682633840ull, 14552816448311329064ull, 15848897042944081134ull, 4004166190366201848ull}}, {{184806294176646150ull, 4483824261767192761ull, 9905560651840050709ull, 2502603868978876155ull}}, {{4842693886148195591ull, 10216466345636378855ull, 7770264796372675482ull, 3128254836223595194ull}}, {{1441681339257856585ull, 3547210895190697761ull, 489458958611068545ull, 3910318545279493993ull}}, {{12430265883104630126ull, 13746221855562655860ull, 11835126895200387600ull, 2443949090799683745ull}}, {{15537832353880787657ull, 17182777319453319825ull, 958850563718320788ull, 3054936363499604682ull}}, {{5587232387068820859ull, 3031727575607098166ull, 10421935241502676794ull, 3818670454374505852ull}}, {{17327078297200176749ull, 6506515753181824257ull, 15737081562793948804ull, 2386669033984066157ull}}, {{7823789816218057224ull, 8133144691477280322ull, 5836293898210272293ull, 2983336292480082697ull}}, {{556365233417795722ull, 14778116882773988307ull, 11907053391190228270ull, 3729170365600103371ull}}, {{16488629335381979991ull, 4624637033306354787ull, 5136065360280198717ull, 2330731478500064607ull}}, {{15999100650800087084ull, 10392482310060331388ull, 1808395681922860492ull, 2913414348125080759ull}}, {{1552131739790557239ull, 12990602887575414236ull, 16095552657685739327ull, 3641767935156350948ull}}, {{1940164674738196549ull, 11626567591041879891ull, 1672696748397622543ull, 4552209918945438686ull}}, {{17353503986207230507ull, 14184133772042256787ull, 14880493523030677801ull, 2845131199340899178ull}}, {{17080193964331650230ull, 3895109159770657272ull, 9377244866933571444ull, 3556413999176123973ull}}, {{2903498381705011171ull, 4868886449713321591ull, 16333242102094352209ull, 4445517498970154966ull}}, {{8732215516206713838ull, 14572269077139295754ull, 5596590295381582226ull, 2778448436856346854ull}}, {{1691897358403616490ull, 8991964309569343885ull, 16219109906081753591ull, 3473060546070433567ull}}, {{6726557716431908516ull, 6628269368534291952ull, 15662201364174804085ull, 4341325682588041959ull}}, {{4204098572769942823ull, 6448511364547626422ull, 16706404880250334409ull, 2713328551617526224ull}}, {{14478495252817204336ull, 12672325224111920931ull, 2436262026603366395ull, 3391660689521907781ull}}, {{13486433047594117516ull, 11228720511712513260ull, 7657013551681595898ull, 4239575861902384726ull}}, {{17652392691601099256ull, 11629636338247708691ull, 173947451373609532ull, 2649734913688990454ull}}, {{17453804846073986166ull, 14537045422809635864ull, 9440806351071787723ull, 3312168642111238067ull}}, {{3370511983882931091ull, 13559620760084656927ull, 7189321920412346750ull, 4140210802639047584ull}}, {{9024099017567913788ull, 3863076956625522675ull, 4493326200257716719ull, 2587631751649404740ull}}, {{6668437753532504331ull, 217160177354515440ull, 5616657750322145899ull, 3234539689561755925ull}}, {{8335547191915630413ull, 14106508276975308012ull, 11632508206330070277ull, 4043174611952194906ull}}, {{14433089031802044817ull, 11122410682323261459ull, 11882003647383681827ull, 2526984132470121816ull}}, {{13429675271325168117ull, 9291327334476688920ull, 14852504559229602284ull, 3158730165587652270ull}}, {{16787094089156460146ull, 11614159168095861150ull, 9342258662182227047ull, 3948412706984565338ull}}, {{5880247787295399687ull, 14176378507700995075ull, 10450597682291279808ull, 2467757941865353336ull}}, {{2738623715691861705ull, 17720473134626243844ull, 13063247102864099760ull, 3084697427331691670ull}}, {{3423279644614827131ull, 3703847344573253189ull, 7105686841725348893ull, 3855871784164614588ull}}, {{4445392787097960909ull, 4620747599571977195ull, 13664426312933118866ull, 2409919865102884117ull}}, {{945054965445063232ull, 14999306536319747302ull, 3245474835884234870ull, 3012399831378605147ull}}, {{10404690743661104848ull, 9525761133544908319ull, 17891901600137457300ull, 3765499789223256433ull}}, {{13420460742429272386ull, 15176972745320343507ull, 4264909472444828956ull, 2353437368264535271ull}}, {{12163889909609202579ull, 524471857940877768ull, 719450822128648292ull, 2941796710330669089ull}}, {{15204862387011503223ull, 655589822426097210ull, 5510999546088198269ull, 3677245887913336361ull}}, {{9782705946909603221ull, 5431173296460009417ull, 11500435451037635740ull, 4596557359891670451ull}}, {{17643406262886971773ull, 12617855347142281693ull, 4881929147684828385ull, 2872848349932294032ull}}, {{8219199773326551005ull, 1937261128645688405ull, 6102411434606035482ull, 3591060437415367540ull}}, {{14885685735085576660ull, 11644948447661886314ull, 7628014293257544352ull, 4488825546769209425ull}}, {{13915239602855873316ull, 7278092779788678946ull, 16296723979354434980ull, 2805515966730755890ull}}, {{8170677466715065837ull, 9097615974735848683ull, 11147532937338267917ull, 3506894958413444863ull}}, {{5601660814966444393ull, 15983705986847198758ull, 9322730153245446992ull, 4383618698016806079ull}}, {{17336096064636191458ull, 9989816241779499223ull, 12744235373419486226ull, 2739761686260503799ull}}, {{17058434062367851418ull, 3263898265369598221ull, 11318608198346969879ull, 3424702107825629749ull}}, {{7487984522677650560ull, 17914930886994161489ull, 313202192651548636ull, 4280877634782037187ull}}, {{16209205372742001360ull, 1973459767516575122ull, 16336652434903075562ull, 2675548521738773241ull}}, {{11038134679072725892ull, 11690196746250494711ull, 6585757488346680740ull, 3344435652173466552ull}}, {{9185982330413519461ull, 14612745932813118389ull, 8232196860433350925ull, 4180544565216833190ull}}, {{8047081965722143615ull, 11438809217221892945ull, 533437019343456424ull, 2612840353260520744ull}}, {{14670538475580067423ull, 14298511521527366181ull, 666796274179320530ull, 3266050441575650930ull}}, {{4503115039192920567ull, 8649767365054431919ull, 10056867379578926471ull, 4082563051969563662ull}}, {{9731975927136657210ull, 12323633630800101805ull, 1673856093809441140ull, 2551601907480977289ull}}, {{16776655927348209417ull, 15404542038500127256ull, 6704006135689189329ull, 3189502384351221611ull}}, {{2524075835475710155ull, 5420619492842995359ull, 3768321651184098758ull, 3986877980439027014ull}}, {{8495076424813400703ull, 17222945238309035811ull, 16190259087272225435ull, 2491798737774391883ull}}, {{6007159512589362975ull, 16916995529458906860ull, 15626137840662893890ull, 3114748422217989854ull}}, {{7508949390736703718ull, 11922872374968857767ull, 10309300263973841555ull, 3893435527772487318ull}}, {{11610622396851521680ull, 5145952225141842152ull, 1831626646556263068ull, 2433397204857804574ull}}, {{14513277996064402100ull, 6432440281427302690ull, 11512905345050104643ull, 3041746506072255717ull}}, {{8918225458225726817ull, 3428864333356740459ull, 556073626030467092ull, 3802183132590319647ull}}, {{3268047902177385309ull, 11366412245202738595ull, 7265075043910123788ull, 2376364457868949779ull}}, {{17920117933003895348ull, 14208015306503423243ull, 4469657786460266831ull, 2970455572336187224ull}}, {{17788461397827481281ull, 13148333114701891150ull, 5587072233075333539ull, 3713069465420234030ull}}, {{6506102355214787897ull, 5911865187474988017ull, 17326978200954247174ull, 2320668415887646268ull}}, {{12744313962445872775ull, 16613203521198510829ull, 3211978677483257351ull, 2900835519859557836ull}}, {{2095334397775177256ull, 16154818383070750633ull, 4014973346854071689ull, 3626044399824447295ull}}, {{7230854015646359474ull, 6358464923556274579ull, 407030665140201708ull, 4532555499780559119ull}}, {{2213440750565280719ull, 13197412614077447420ull, 7171923193353707923ull, 2832847187362849449ull}}, {{2766800938206600899ull, 11885079749169421371ull, 13576590010119522808ull, 3541058984203561811ull}}, {{17293559228040414836ull, 14856349686461776713ull, 12359051494222015606ull, 4426323730254452264ull}}, {{3890945489884177417ull, 4673532535611222542ull, 7724407183888759754ull, 2766452331409032665ull}}, {{14087053899209997579ull, 15065287706368803985ull, 14267194998288337596ull, 3458065414261290831ull}}, {{3773759318730333261ull, 384865559251453366ull, 13222307729433034092ull, 4322581767826613539ull}}, {{16193657629488622000ull, 9463913011386934161ull, 5958099321681952355ull, 2701613604891633462ull}}, {{6407013981578613788ull, 7218205245806279798ull, 16670996188957216252ull, 3377017006114541827ull}}, {{17232139513828043043ull, 9022756557257849747ull, 16227059217769132411ull, 4221271257643177284ull}}, {{8464244186928832950ull, 3333379839072462140ull, 918539974250931949ull, 2638294536026985803ull}}, {{10580305233661041188ull, 8778410817267965579ull, 14983233023095828648ull, 3297868170033732253ull}}, {{8613695523648913581ull, 10973013521584956974ull, 4893983223587622098ull, 4122335212542165317ull}}, {{771873683853183084ull, 11469819469417986013ull, 5364582523955957763ull, 2576459507838853323ull}}, {{5576528123243866759ull, 9725588318345094612ull, 2094042136517559300ull, 3220574384798566654ull}}, {{6970660154054833449ull, 12156985397931368265ull, 11840924707501724933ull, 4025717980998208317ull}}, {{15885877642352740666ull, 9903958882920799117ull, 9706420951402272035ull, 2516073738123880198ull}}, {{6022288997658762120ull, 7768262585223610993ull, 2909654152398064236ull, 3145092172654850248ull}}, {{12139547265500840554ull, 9710328231529513741ull, 3637067690497580295ull, 3931365215818562810ull}}, {{9893060050151719298ull, 12986484172347027944ull, 6884853324988375588ull, 2457103259886601756ull}}, {{12366325062689649123ull, 16233105215433784930ull, 8606066656235469485ull, 3071379074858252195ull}}, {{6234534291507285595ull, 6456323464010067451ull, 6145897301866948953ull, 3839223843572815244ull}}, {{1590740922978359545ull, 15564417211074761917ull, 13064557850521618903ull, 2399514902233009527ull}}, {{6600112172150337335ull, 14843835495416064492ull, 11719011294724635725ull, 2999393627791261909ull}}, {{8250140215187921669ull, 4719736313987916903ull, 813706063123630945ull, 3749242034739077387ull}}, {{12073866662133532899ull, 14479050242310917824ull, 16649467353948127004ull, 2343276271711923366ull}}, {{15092333327666916124ull, 18098812802888647280ull, 11588462155580382947ull, 2929095339639904208ull}}, {{418672585874093539ull, 18011829985183421197ull, 14485577694475478684ull, 3661369174549880260ull}}, {{5135026750770004827ull, 4068043407769724880ull, 18106972118094348356ull, 4576711468187350325ull}}, {{3209391719231253017ull, 11765899166710853858ull, 13622700583022661674ull, 2860444667617093953ull}}, {{13235111685893842080ull, 5484001921533791514ull, 3193317673496163381ull, 3575555834521367442ull}}, {{7320517570512526791ull, 11466688420344627297ull, 13215019128724980034ull, 4469444793151709302ull}}, {{16104538527638799005ull, 11778366281142779964ull, 3647700937025724617ull, 2793402995719818314ull}}, {{1683929085838947140ull, 887899796146311244ull, 13782998208136931580ull, 3491753744649772892ull}}, {{2104911357298683925ull, 1109874745182889055ull, 17228747760171164475ull, 4364692180812216115ull}}, {{8233098625952759309ull, 16834572780235163323ull, 8462124340893283844ull, 2727932613007635072ull}}, {{5679687264013561232ull, 2596471901584402538ull, 10577655426116604806ull, 3409915766259543840ull}}, {{16322981116871727348ull, 12468961913835278980ull, 13222069282645756007ull, 4262394707824429800ull}}, {{978491161190053785ull, 14710630223788131219ull, 8263793301653597504ull, 2663996692390268625ull}}, {{15058172006769730943ull, 18388287779735164023ull, 14941427645494384784ull, 3329995865487835781ull}}, {{14211028990034775774ull, 4538615650959403413ull, 4841726501585817269ull, 4162494831859794727ull}}, {{11187736127985428811ull, 5142477791063321085ull, 9943608091132217649ull, 2601559269912371704ull}}, {{149612104699622302ull, 11039783257256539261ull, 12429510113915272061ull, 3251949087390464630ull}}, {{4798701149301915781ull, 18411415089998061980ull, 6313515605539314268ull, 4064936359238080788ull}}, {{12222560255168473171ull, 2283762394394012929ull, 13169319290316847226ull, 2540585224523800492ull}}, {{1443142263678427752ull, 12078075029847291970ull, 16461649112896059032ull, 3175731530654750615ull}}, {{11027299866452810498ull, 15097593787309114962ull, 15965375372692685886ull, 3969664413318438269ull}}, {{11503748434960394466ull, 4824310098640808947ull, 12284202617146622631ull, 2481040258324023918ull}}, {{9767999525273105178ull, 1418701604873623280ull, 6131881234578502481ull, 3101300322905029898ull}}, {{12209999406591381472ull, 6385063024519417004ull, 16888223580077903909ull, 3876625403631287372ull}}, {{16854621665974389228ull, 6296507399538329579ull, 1331767700693914135ull, 2422890877269554608ull}}, {{16456591064040598631ull, 3258948230995524070ull, 1664709625867392669ull, 3028613596586943260ull}}, {{11347366793195972481ull, 8685371307171792992ull, 2080887032334240836ull, 3785766995733679075ull}}, {{7092104245747482801ull, 14651729103837146428ull, 17441455459704758186ull, 2366104372333549421ull}}, {{8865130307184353501ull, 9091289342941657227ull, 7966761269348784021ull, 2957630465416936777ull}}, {{6469726865553053972ull, 15975797697104459438ull, 14570137605113367930ull, 3697038081771170971ull}}, {{17878637346252822445ull, 14596559579117675052ull, 6800492993982161004ull, 2310648801106981857ull}}, {{3901552609106476440ull, 18245699473897093816ull, 13112302260905089159ull, 2888311001383727321ull}}, {{4876940761383095549ull, 18195438323943979366ull, 2555319770849197737ull, 3610388751729659152ull}}, {{15319547988583645245ull, 8909239849647810495ull, 3194149713561497172ull, 4512985939662073940ull}}, {{16492246520505860134ull, 14791646942884657367ull, 11219715607830711540ull, 2820616212288796212ull}}, {{16003622132204937264ull, 42814604896270093ull, 14024644509788389426ull, 3525770265360995265ull}}, {{6169469609974007867ull, 9276890292975113425ull, 3695747581953323070ull, 4407212831701244082ull}}, {{15385133552302224677ull, 1186370414682057986ull, 6921528257148214823ull, 2754508019813277551ull}}, {{10008044903523005038ull, 15318021073634736195ull, 4040224303007880624ull, 3443135024766596939ull}}, {{7898370110976368394ull, 700782268333868628ull, 438594360332462877ull, 4303918780958246174ull}}, {{14159853356215006054ull, 2743831926922361844ull, 14109179530489953010ull, 2689949238098903858ull}}, {{17699816695268757568ull, 12653161945507728113ull, 8413102376257665454ull, 3362436547623629823ull}}, {{8289712813803783248ull, 6593080395029884334ull, 5904691951894693914ull, 4203045684529537279ull}}, {{569384490199976626ull, 8732361265321065613ull, 10607961497575265552ull, 2626903552830960799ull}}, {{5323416631177358686ull, 10915451581651332016ull, 8648265853541694036ull, 3283629441038700999ull}}, {{6654270788971698358ull, 13644314477064165020ull, 6198646298499729641ull, 4104536801298376249ull}}, {{13382291279962087282ull, 1610167520524021281ull, 15403368982630800786ull, 2565335500811485155ull}}, {{2892806044670445390ull, 11236081437509802410ull, 14642525209861113078ull, 3206669376014356444ull}} }; // ********************************************************************** #if __ENABLE_BINARY80__ static const BID_UINT128 bid_breakpoints_binary80[] = { {{6337302757928054309ull, 494016656451265ull}}, {{5069842206342443447ull, 395213325161012ull}}, {{15123920209299685727ull, 316170660128809ull}}, {{13130225890653766194ull, 505873056206095ull}}, {{10504180712523012955ull, 404698444964876ull}}, {{4713995755276500041ull, 323758755971901ull}}, {{163695578958579419ull, 518014009555042ull}}, {{11199002907392594505ull, 414411207644033ull}}, {{16337899955397896250ull, 331528966115226ull}}, {{315198225443261738ull, 530446345784363ull}}, {{7630856209838430037ull, 424357076627490ull}}, {{6104684967870744030ull, 339485661301992ull}}, {{13456844763335100771ull, 543177058083187ull}}, {{3386778181184259970ull, 434541646466550ull}}, {{2709422544947407976ull, 347633317173240ull}}, {{4335076071915852762ull, 556213307477184ull}}, {{7157409672274592533ull, 444970645981747ull}}, {{16793974182045404996ull, 355976516785397ull}}, {{6056481716152503350ull, 284781213428318ull}}, {{6001021931102095037ull, 455649941485309ull}}, {{8490166359623586353ull, 364519953188247ull}}, {{17860179531924600052ull, 291615962550597ull}}, {{13818891992111718790ull, 466585540080956ull}}, {{7365764778947464709ull, 373268432064765ull}}, {{5892611823157971767ull, 298614745651812ull}}, {{13117527731794665151ull, 477783593042899ull}}, {{14183371000177642444ull, 382226874434319ull}}, {{15036045614884024278ull, 305781499547455ull}}, {{5610928910104887229ull, 489250399275929ull}}, {{8178091942825820106ull, 391400319420743ull}}, {{13921171183744476731ull, 313120255536594ull}}, {{11205827449765431801ull, 500992408858551ull}}, {{5275313145070435117ull, 400793927086841ull}}, {{530901701314437771ull, 320635141669473ull}}, {{15606837981070741726ull, 513016226671156ull}}, {{8796121570114683058ull, 410412981336925ull}}, {{7036897256091746446ull, 328330385069540ull}}, {{11259035609746794314ull, 525328616111264ull}}, {{12696577302539345774ull, 420262892889011ull}}, {{6467913027289566296ull, 336210314311209ull}}, {{17727358473147126720ull, 537936502897934ull}}, {{17871235593259611699ull, 430349202318347ull}}, {{6918290845123868713ull, 344279361854678ull}}, {{7379916537456279618ull, 550846978967485ull}}, {{5903933229965023694ull, 440677583173988ull}}, {{12101844213455839602ull, 352542066539190ull}}, {{9681475370764671681ull, 282033653231352ull}}, {{732965334255833398ull, 451253845170164ull}}, {{4275721082146577041ull, 361003076136131ull}}, {{18177972124684902926ull, 288802460908904ull}}, {{18016708955270113712ull, 462083937454247ull}}, {{7034669534732270323ull, 369667149963398ull}}, {{13006433257269636905ull, 295733719970718ull}}, {{17120944396889508724ull, 473173951953149ull}}, {{17386104332253517303ull, 378539161562519ull}}, {{17598232280544724165ull, 302831329250015ull}}, {{9710427575162007049ull, 484530126800025ull}}, {{7768342060129605639ull, 387624101440020ull}}, {{6214673648103684511ull, 310099281152016ull}}, {{2564780207482074571ull, 496158849843226ull}}, {{16809219424953300950ull, 396927079874580ull}}, {{13447375539962640760ull, 317541663899664ull}}, {{10447754419714494246ull, 508066662239463ull}}, {{15736901165255416043ull, 406453329791570ull}}, {{12589520932204332835ull, 325162663833256ull}}, {{12764535862043111889ull, 520260262133210ull}}, {{10211628689634489511ull, 416208209706568ull}}, {{15548000581191412255ull, 332966567765254ull}}, {{13808754485680528639ull, 532746508424407ull}}, {{3668305959060602265ull, 426197206739526ull}}, {{17692040026216123105ull, 340957765391620ull}}, {{9860519968236245352ull, 545532424626593ull}}, {{15267113604072816928ull, 436425939701274ull}}, {{15903039698000163865ull, 349140751761019ull}}, {{14376817072574531215ull, 558625202817631ull}}, {{7812104843317714649ull, 446900162254105ull}}, {{6249683874654171719ull, 357520129803284ull}}, {{8689095914465247698ull, 286016103842627ull}}, {{17591902277886306641ull, 457625766148203ull}}, {{3005475378083314343ull, 366100612918563ull}}, {{9783077931950472121ull, 292880490334850ull}}, {{15652924691120755393ull, 468608784535760ull}}, {{12522339752896604314ull, 374887027628608ull}}, {{17396569431801104098ull, 299909622102886ull}}, {{2009069387688394294ull, 479855395364619ull}}, {{5296604324892625759ull, 383884316291695ull}}, {{4237283459914100607ull, 307107453033356ull}}, {{17847699980088291941ull, 491371924853369ull}}, {{17967508798812543876ull, 393097539882695ull}}, {{14374007039050035101ull, 314478031906156ull}}, {{15619713632996235515ull, 503164851049850ull}}, {{12495770906396988412ull, 402531880839880ull}}, {{9996616725117590729ull, 322025504671904ull}}, {{4926540315962414197ull, 515240807475047ull}}, {{15009278696995662327ull, 412192645980037ull}}, {{4628725328112709215ull, 329754116784030ull}}, {{7405960524980334745ull, 527606586854448ull}}, {{13303466049468088442ull, 422085269483558ull}}, {{18021470469058291400ull, 337668215586846ull}}, {{3008911047299893978ull, 540269144938955ull}}, {{2407128837839915182ull, 432215315951164ull}}, {{5615051885013842469ull, 345772252760931ull}}, {{1605385386538327304ull, 553235604417490ull}}, {{1284308309230661843ull, 442588483533992ull}}, {{12095493091610260444ull, 354070786827193ull}}, {{17055092102772029002ull, 283256629461754ull}}, {{16220100920209515433ull, 453210607138807ull}}, {{5597383106683791700ull, 362568485711046ull}}, {{788557670605123037ull, 290054788568837ull}}, {{4951041087710107183ull, 464087661710139ull}}, {{7650181684909996069ull, 371270129368111ull}}, {{2430796533186086532ull, 297016103494489ull}}, {{11267972082581559098ull, 475225765591182ull}}, {{1635680036581426632ull, 380180612472946ull}}, {{16065939288232782598ull, 304144489978356ull}}, {{18326805231688631511ull, 486631183965370ull}}, {{14661444185350905209ull, 389304947172296ull}}, {{8039806533538813844ull, 311443957737837ull}}, {{16553039268404012473ull, 498310332380539ull}}, {{16931780229465120302ull, 398648265904431ull}}, {{9856075368830185918ull, 318918612723545ull}}, {{15769720590128297469ull, 510269780357672ull}}, {{5237078842618817329ull, 408215824286138ull}}, {{11568360703578874509ull, 326572659428910ull}}, {{62633052016647599ull, 522516255086257ull}}, {{11118152885839049049ull, 418013004069005ull}}, {{8894522308671239239ull, 334410403255204ull}}, {{3163189249648251813ull, 535056645208327ull}}, {{13598597843944332420ull, 428045316166661ull}}, {{7189529460413555613ull, 342436252933329ull}}, {{435200692435958011ull, 547898004693327ull}}, {{11416206998174497378ull, 438318403754661ull}}, {{5443616783797687579ull, 350654723003729ull}}, {{16088484483560120774ull, 561047556805966ull}}, {{9181438772106186296ull, 448838045444773ull}}, {{14723848647168769683ull, 359070436355818ull}}, {{711032473509284777ull, 287256349084655ull}}, {{1137651957614855643ull, 459610158535448ull}}, {{8288819195575705161ull, 367688126828358ull}}, {{14009752985944384775ull, 294150501462686ull}}, {{15036907148027194994ull, 470640802340298ull}}, {{961479274196025025ull, 376512641872239ull}}, {{4458532234098730343ull, 301210113497791ull}}, {{18201698018783699519ull, 481936181596465ull}}, {{14561358415026959615ull, 385548945277172ull}}, {{4270389102537747046ull, 308439156221738ull}}, {{3143273749318484950ull, 493502649954781ull}}, {{17272014258422429253ull, 394802119963824ull}}, {{17506960221479853725ull, 315841695971059ull}}, {{16943089910142034991ull, 505346713553695ull}}, {{13554471928113627993ull, 404277370842956ull}}, {{7154228727748992071ull, 323421896674365ull}}, {{11446765964398387314ull, 517475034678984ull}}, {{12846761586260620174ull, 413980027743187ull}}, {{2898711639524675493ull, 331184022194550ull}}, {{4637938623239480789ull, 529894435511280ull}}, {{3710350898591584631ull, 423915548409024ull}}, {{6657629533615178028ull, 339132438727219ull}}, {{18030904883268105491ull, 542611901963550ull}}, {{14424723906614484393ull, 434089521570840ull}}, {{11539779125291587514ull, 347271617256672ull}}, {{3706251341498898730ull, 555634587610676ull}}, {{17722396332166760277ull, 444507670088540ull}}, {{14177917065733408221ull, 355606136070832ull}}, {{3963636023102905931ull, 284484908856666ull}}, {{17409864081190380459ull, 455175854170665ull}}, {{13927891264952304367ull, 364140683336532ull}}, {{3763615382478022847ull, 291312546669226ull}}, {{17089831056190567525ull, 466100074670761ull}}, {{9982516030210543697ull, 372880059736609ull}}, {{11675361638910345281ull, 298304047789287ull}}, {{3923183363288911157ull, 477286476462860ull}}, {{3138546690631128925ull, 381829181170288ull}}, {{9889534981988723786ull, 305463344936230ull}}, {{15823255971181958059ull, 488741351897968ull}}, {{1590558332719835477ull, 390993081518375ull}}, {{1272446666175868382ull, 312794465214700ull}}, {{2035914665881389411ull, 500471144343520ull}}, {{1628731732705111529ull, 400376915474816ull}}, {{16060380645131730516ull, 320301532379852ull}}, {{10939213773243127533ull, 512482451807764ull}}, {{12440719833336412349ull, 409985961446211ull}}, {{6263227051927219556ull, 327988769156969ull}}, {{17399860912567371936ull, 524782030651150ull}}, {{13919888730053897549ull, 419825624520920ull}}, {{11135910984043118039ull, 335860499616736ull}}, {{10438759944985168216ull, 537376799386778ull}}, {{15729705585471955219ull, 429901439509422ull}}, {{5205066838893743529ull, 343921151607538ull}}, {{4638758127488079324ull, 550273842572061ull}}, {{21657687248553136ull, 440219074057649ull}}, {{3706674964540752832ull, 352175259246119ull}}, {{6654688786374512588ull, 281740207396895ull}}, {{10647502058199220142ull, 450784331835032ull}}, {{1139304017075555467ull, 360627465468026ull}}, {{15668838472628085666ull, 288501972374420ull}}, {{6623397482495385450ull, 461603155799073ull}}, {{12677415615480129006ull, 369282524639258ull}}, {{17520630121867923851ull, 295426019711406ull}}, {{2207566491795305900ull, 472681631538251ull}}, {{16523448452403886013ull, 378145305230600ull}}, {{13218758761923108810ull, 302516244184480ull}}, {{2703269945367422481ull, 484025990695169ull}}, {{5851964771035848308ull, 387220792556135ull}}, {{4681571816828678646ull, 309776634044908ull}}, {{3801166092183975511ull, 495642614471853ull}}, {{10419630503231001055ull, 396514091577482ull}}, {{957006773100980197ull, 317211273261986ull}}, {{12599257281187299286ull, 507538037219177ull}}, {{2700708195466018782ull, 406030429775342ull}}, {{13228613000598545995ull, 324824343820273ull}}, {{17476431986215763269ull, 519718950112437ull}}, {{6602447959488789969ull, 415775160089950ull}}, {{5281958367591031975ull, 332620128071960ull}}, {{8451133388145651160ull, 532192204915136ull}}, {{3071557895774610605ull, 425753763932109ull}}, {{6146595131361598807ull, 340603011145687ull}}, {{13523901024920468415ull, 544964817833099ull}}, {{14508469634678285055ull, 435971854266479ull}}, {{15296124522484538367ull, 348777483413183ull}}, {{2337706347523799448ull, 558043973461094ull}}, {{5559513892760949882ull, 446435178768875ull}}, {{4447611114208759905ull, 357148143015100ull}}, {{3558088891367007924ull, 285718514412080ull}}, {{5692942226187212679ull, 457149623059328ull}}, {{11933051410433590789ull, 365719698447462ull}}, {{2167743498863051985ull, 292575758757970ull}}, {{3468389598180883176ull, 468121214012752ull}}, {{13842758122770437511ull, 374496971210201ull}}, {{7384857683474439685ull, 299597576968161ull}}, {{4437074664075282850ull, 479356123149058ull}}, {{10928357360744046927ull, 383484898519246ull}}, {{5053337073853327218ull, 306787918815397ull}}, {{11774688132907233872ull, 490860670104635ull}}, {{9419750506325787098ull, 392688536083708ull}}, {{14914498034544450324ull, 314150828866966ull}}, {{16484499225787299873ull, 502641326187146ull}}, {{9498250565887929575ull, 402113060949717ull}}, {{219902823226523014ull, 321690448759774ull}}, {{7730542146646257468ull, 514704718015638ull}}, {{13563131346800826621ull, 411763774412510ull}}, {{10850505077440661297ull, 329411019530008ull}}, {{13671459309163147752ull, 527057631248013ull}}, {{18315865076814338848ull, 421646104998410ull}}, {{14652692061451471078ull, 337316883998728ull}}, {{1308214409870891786ull, 539707014397966ull}}, {{15803966786864354722ull, 431765611518372ull}}, {{5264475800007663131ull, 345412489214698ull}}, {{4733812465270350686ull, 552659982743517ull}}, {{14855096416442011519ull, 442127986194813ull}}, {{816030688927878245ull, 353702388955851ull}}, {{15410219810109943889ull, 282961911164680ull}}, {{6209607622466358606ull, 452739057863489ull}}, {{8657034912714997208ull, 362191246290791ull}}, {{3236279115430087443ull, 289752997032633ull}}, {{1488697769946229586ull, 463604795252213ull}}, {{8569655845440804315ull, 370883836201770ull}}, {{6855724676352643452ull, 296707068961416ull}}, {{3590461852680408877ull, 474731310338266ull}}, {{17629764741111968395ull, 379785048270612ull}}, {{6725114163405754069ull, 303828038616490ull}}, {{10760182661449206511ull, 486124861786384ull}}, {{12297494943901275532ull, 388899889429107ull}}, {{2459298325637199779ull, 311119911543286ull}}, {{15002923765245250616ull, 497791858469257ull}}, {{4623641382712379847ull, 398233486775406ull}}, {{9564291427993554ull, 318586789420325ull}}, {{15302866284789687ull, 509738863072520ull}}, {{12242293027831749ull, 407791090458016ull}}, {{14767189093389906692ull, 326232872366412ull}}, {{8870107290456209415ull, 521972595786260ull}}, {{7096085832364967532ull, 417578076629008ull}}, {{13055566295375794672ull, 334062461303206ull}}, {{13510208443117450829ull, 534499938085130ull}}, {{10808166754493960663ull, 427599950468104ull}}, {{12335882218337078853ull, 342079960374483ull}}, {{16048062734597415842ull, 547327936599173ull}}, {{1770403743452201704ull, 437862349279339ull}}, {{5105671809503671686ull, 350289879423471ull}}, {{790377265722054052ull, 560463807077554ull}}, {{4321650627319553565ull, 448371045662043ull}}, {{10836018131339463498ull, 358696836529634ull}}, {{12358163319813481122ull, 286957469223707ull}}, {{5015666052733928502ull, 459131950757932ull}}, {{15080579286412873771ull, 367305560606345ull}}, {{12064463429130299017ull, 293844448485076ull}}, {{11924443857124657781ull, 470151117576122ull}}, {{2160857456215905578ull, 376120894060898ull}}, {{9107383594456545109ull, 300896715248718ull}}, {{10882464936388561851ull, 481434744397949ull}}, {{12395320763852759804ull, 385147795518359ull}}, {{13605605425824118166ull, 308118236414687ull}}, {{7011573422350947774ull, 492989178263500ull}}, {{5609258737880758219ull, 394391342610800ull}}, {{4487406990304606575ull, 315513074088640ull}}, {{7179851184487370520ull, 504820918541824ull}}, {{9433229762331806739ull, 403856734833459ull}}, {{11235932624607355715ull, 323085387866767ull}}, {{3220096940404127851ull, 516936620586828ull}}, {{9954775181807122927ull, 413549296469462ull}}, {{585122515961877695ull, 330839437175570ull}}, {{936196025539004313ull, 529343099480912ull}}, {{11817003264656934420ull, 423474479584729ull}}, {{13142951426467457859ull, 338779583667783ull}}, {{17339373467606022251ull, 542047333868453ull}}, {{2803452329859086831ull, 433637867094763ull}}, {{9621459493371090111ull, 346910293675810ull}}, {{15394335189393744178ull, 555056469881296ull}}, {{8626119336773085019ull, 444045175905037ull}}, {{17968941913644198985ull, 355236140724029ull}}, {{18064502345657269511ull, 284188912579223ull}}, {{6767110864600169279ull, 454702260126758ull}}, {{12792386321163956069ull, 363761808101406ull}}, {{6544560242189254532ull, 291009446481125ull}}, {{10471296387502807252ull, 465615114369800ull}}, {{8377037110002245801ull, 372492091495840ull}}, {{6701629688001796641ull, 297993673196672ull}}, {{14411956315544784949ull, 476789877114675ull}}, {{11529565052435827959ull, 381431901691740ull}}, {{9223652041948662367ull, 305145521353392ull}}, {{448008150218495ull, 488232834165428ull}}, {{7379056036003995442ull, 390586267332342ull}}, {{16971291273028927323ull, 312469013865873ull}}, {{5017973148394821778ull, 499950422185398ull}}, {{11393076148199678069ull, 399960337748318ull}}, {{16493158548043563102ull, 319968270198654ull}}, {{15321007232643969993ull, 511949232317847ull}}, {{4878108156631355348ull, 409559385854278ull}}, {{11281184154788904925ull, 327647508683422ull}}, {{3292499388694606587ull, 524236013893476ull}}, {{17391394769923326562ull, 419388811114780ull}}, {{13913115815938661250ull, 335511048891824ull}}, {{11192938861276127030ull, 536817678226919ull}}, {{12643699903762811947ull, 429454142581535ull}}, {{10114959923010249558ull, 343563314065228ull}}, {{12494587062074488970ull, 549701302504365ull}}, {{9995669649659591176ull, 439761042003492ull}}, {{617838090243852294ull, 351808833602794ull}}, {{8367238573873984317ull, 562894133764470ull}}, {{6693790859099187453ull, 450315307011576ull}}, {{1665683872537439639ull, 360252245609261ull}}, {{16089942356997593004ull, 288201796487408ull}}, {{3607814882744686868ull, 461122874379854ull}}, {{6575600720937659817ull, 368898299503883ull}}, {{12639178206233948500ull, 295118639603106ull}}, {{12843987500490496954ull, 472189823364970ull}}, {{10275190000392397563ull, 377751858691976ull}}, {{4530803185572007727ull, 302201486953581ull}}, {{18317331541140943334ull, 483522379125729ull}}, {{18343214047654664990ull, 386817903300583ull}}, {{3606524793898001022ull, 309454322640467ull}}, {{9459788484978711959ull, 495126916224747ull}}, {{189133158499148921ull, 396101532979798ull}}, {{7530004156283139783ull, 316881226383838ull}}, {{8358657835311113330ull, 507009962214141ull}}, {{2997577453506980341ull, 405607969771313ull}}, {{9776759592289404919ull, 324486375817050ull}}, {{15642815347663047870ull, 519178201307280ull}}, {{12514252278130438296ull, 415342561045824ull}}, {{13700750637246260960ull, 332274048836659ull}}, {{10853154575368286567ull, 531638478138655ull}}, {{8682523660294629253ull, 425310782510924ull}}, {{10635367742977613726ull, 340248626008739ull}}, {{5948541944538450992ull, 544397801613983ull}}, {{12137531185114581440ull, 435518241291186ull}}, {{6020676133349754829ull, 348414593032949ull}}, {{17011779442843428373ull, 557463348852718ull}}, {{2541377110049011728ull, 445970679082175ull}}, {{2033101688039209383ull, 356776543265740ull}}, {{1626481350431367506ull, 285421234612592ull}}, {{6291718975432098333ull, 456673975380147ull}}, {{16101421624571409636ull, 365339180304117ull}}, {{5502439670173307062ull, 292271344243294ull}}, {{16182601101761111946ull, 467634150789270ull}}, {{12946080881408889557ull, 374107320631416ull}}, {{6667515890385201322ull, 299285856505133ull}}, {{6978676609874411793ull, 478857370408213ull}}, {{12961638917383350080ull, 383085896326570ull}}, {{10369311133906680064ull, 306468717061256ull}}, {{9212200184766867457ull, 490349947298010ull}}, {{7369760147813493965ull, 392279957838408ull}}, {{13274505747734615819ull, 313823966270726ull}}, {{13860511566891564664ull, 502118346033162ull}}, {{3709711624029431084ull, 401694676826530ull}}, {{2967769299223544867ull, 321355741461224ull}}, {{12127128508241492434ull, 514169186337958ull}}, {{17080400436077014594ull, 411335349070366ull}}, {{9974971534119701352ull, 329068279256293ull}}, {{12270605639849611840ull, 526509246810069ull}}, {{13505833326621599795ull, 421207397448055ull}}, {{10804666661297279836ull, 336965917958444ull}}, {{6219420213849916768ull, 539145468733511ull}}, {{1286187356338023091ull, 431316374986809ull}}, {{4718298699812328796ull, 345053099989447ull}}, {{11238626734441636397ull, 552084959983115ull}}, {{8990901387553309118ull, 441667967986492ull}}, {{18260767554268378264ull, 353334374389193ull}}, {{3540567599188971641ull, 282667499511355ull}}, {{5664908158702354626ull, 452267999218168ull}}, {{11910624156445704347ull, 361814399374534ull}}, {{13217848139898473801ull, 289451519499627ull}}, {{6391161764869916789ull, 463122431199404ull}}, {{8802278226637843754ull, 370497944959523ull}}, {{14420520210794095650ull, 296398355967618ull}}, {{936739448819091101ull, 474237369548190ull}}, {{749391559055272880ull, 379389895638552ull}}, {{11667559691469949274ull, 303511916510841ull}}, {{11289397876868098192ull, 485619066417346ull}}, {{5342169486752568230ull, 388495253133877ull}}, {{15341782033627785554ull, 310796202507101ull}}, {{17168153624320636240ull, 497273924011362ull}}, {{6355825269972688346ull, 397819139209090ull}}, {{5084660215978150676ull, 318255311367272ull}}, {{11824805160306951406ull, 509208498187635ull}}, {{9459844128245561124ull, 407366798550108ull}}, {{14946572932080269546ull, 325893438840086ull}}, {{16535819061844610627ull, 521429502144138ull}}, {{2160608805249957532ull, 417143601715311ull}}, {{16485882303167607318ull, 333714881372248ull}}, {{4241318796616709770ull, 533943810195598ull}}, {{10771752666777188463ull, 427155048156478ull}}, {{15996099762905571416ull, 341724038525182ull}}, {{10836364361681272974ull, 546758461640292ull}}, {{1290393859861197733ull, 437406769312234ull}}, {{4721663902630868509ull, 349925415449787ull}}, {{11244011058951299938ull, 559880664719659ull}}, {{12684557661902950274ull, 447904531775727ull}}, {{2768948500038539572ull, 358323625420582ull}}, {{13283205244256562627ull, 286658900336465ull}}, {{2806384317100948588ull, 458654240538345ull}}, {{2245107453680758870ull, 366923392430676ull}}, {{16553481221912248389ull, 293538713944540ull}}, {{8038825881350045807ull, 469661942311265ull}}, {{6431060705080036645ull, 375729553849012ull}}, {{16212895008289760286ull, 300583643079209ull}}, {{14872585569037885488ull, 480933828926735ull}}, {{11898068455230308390ull, 384747063141388ull}}, {{16897152393668067358ull, 307797650513110ull}}, {{8588699756159356158ull, 492476240820977ull}}, {{17939006249153215896ull, 393980992656781ull}}, {{10661856184580662393ull, 315184794125425ull}}, {{17058969895329059830ull, 504295670600680ull}}, {{13647175916263247864ull, 403436536480544ull}}, {{14607089547752508614ull, 322749229184435ull}}, {{4924599202694462167ull, 516398766695097ull}}, {{15007725806381300703ull, 413119013356077ull}}, {{4627483015621219916ull, 330495210684862ull}}, {{11093321639735862189ull, 528792337095779ull}}, {{12564006126530600074ull, 423033869676623ull}}, {{17429902530708300706ull, 338427095741298ull}}, {{5751751160681819190ull, 541483353186078ull}}, {{11980098558029275998ull, 433186682548862ull}}, {{2205381216939600152ull, 346549346039090ull}}, {{3528609947103360244ull, 554478953662544ull}}, {{6512236772424598518ull, 443583162930035ull}}, {{5209789417939678814ull, 354866530344028ull}}, {{11546529163835563698ull, 283893224275222ull}}, {{3717051403169260624ull, 454229158840356ull}}, {{17731036381503049792ull, 363383327072284ull}}, {{17874177919944350157ull, 290706661657827ull}}, {{13841289412943318958ull, 465130658652524ull}}, {{14762380345096565490ull, 372104526922019ull}}, {{15499253090819162715ull, 297683621537615ull}}, {{6352060871601108728ull, 476293794460185ull}}, {{5081648697280886982ull, 381035035568148ull}}, {{11444016587308530232ull, 304828028454518ull}}, {{14621077724951738048ull, 487724845527229ull}}, {{15386210994703300762ull, 390179876421783ull}}, {{1240922351536909640ull, 312143901137427ull}}, {{5674824577200965747ull, 499430241819883ull}}, {{11918557291244593244ull, 399544193455906ull}}, {{5845497018253764272ull, 319635354764725ull}}, {{9352795229206022835ull, 511416567623560ull}}, {{7482236183364818268ull, 409133254098848ull}}, {{13364486576175675261ull, 327306603279078ull}}, {{17693829707139170094ull, 523690565246525ull}}, {{14155063765711336075ull, 418952452197220ull}}, {{11324051012569068860ull, 335161961757776ull}}, {{10739783990626689530ull, 536259138812442ull}}, {{1213129563017530978ull, 429007311049954ull}}, {{4659852465155935105ull, 343205848839963ull}}, {{3766415129507585846ull, 549129358143941ull}}, {{17770527362573709969ull, 439303486515152ull}}, {{6837724260575147329ull, 351442789212122ull}}, {{14629707631662146050ull, 562308462739395ull}}, {{11703766105329716840ull, 449846770191516ull}}, {{5673664069521863148ull, 359877416153213ull}}, {{11917628885101311165ull, 287901932922570ull}}, {{621462142452546248ull, 460643092676113ull}}, {{7875867343445857645ull, 368514474140890ull}}, {{6300693874756686116ull, 294811579312712ull}}, {{13770459014352608109ull, 471698526900339ull}}, {{14705716026223996810ull, 377358821520271ull}}, {{8075224006237287125ull, 301887057216217ull}}, {{16609707224721569723ull, 483019291545947ull}}, {{5909068150293435132ull, 386415433236758ull}}, {{12105952149718568752ull, 309132346589406ull}}, {{11990825810065889357ull, 494611754543050ull}}, {{9592660648052711486ull, 395689403634440ull}}, {{7674128518442169188ull, 316551522907552ull}}, {{15967954444249381025ull, 506482436652083ull}}, {{1706317111173773850ull, 405185949321667ull}}, {{12433100133164750050ull, 324148759457333ull}}, {{16203611398321689757ull, 518638015131733ull}}, {{1894842674431620836ull, 414910412105387ull}}, {{12583920583771027638ull, 331928329684309ull}}, {{9066226489807913251ull, 531085327494895ull}}, {{7252981191846330601ull, 424868261995916ull}}, {{2113036138735154157ull, 339894609596733ull}}, {{18138253080943887945ull, 543831375354772ull}}, {{7131904835271289710ull, 435065100283818ull}}, {{13084221497700852414ull, 348052080227054ull}}, {{9866707952095632893ull, 556883328363287ull}}, {{514668732192685668ull, 445506662690630ull}}, {{411734985754148534ull, 356405330152504ull}}, {{4018736803345229150ull, 285124264122003ull}}, {{2740630070610456318ull, 456198822595205ull}}, {{2192504056488365054ull, 364959058076164ull}}, {{5443352059932602366ull, 291967246460931ull}}, {{1330665666408343140ull, 467147594337490ull}}, {{1064532533126674512ull, 373718075469992ull}}, {{11919672470727070579ull, 298974460375993ull}}, {{15382127138421402604ull, 478359136601589ull}}, {{15995050525479032406ull, 382687309281271ull}}, {{9106691605641315602ull, 306149847425017ull}}, {{18260055383768015286ull, 489839755880027ull}}, {{7229346677530591582ull, 391871804704022ull}}, {{16851523786250204235ull, 313497443763217ull}}, {{12205042799032685484ull, 501595910021148ull}}, {{17142731868709969034ull, 401276728016918ull}}, {{2646139050742244257ull, 321021382413535ull}}, {{4233822481187590812ull, 513634211861656ull}}, {{18144453243917713942ull, 410907369489324ull}}, {{18204911409876081477ull, 328725895591459ull}}, {{18059811811575999394ull, 525961432946335ull}}, {{14447849449260799515ull, 420769146357068ull}}, {{490233115182908642ull, 336615317085655ull}}, {{784372984292653828ull, 538584507337048ull}}, {{8006196016917943708ull, 430867605869638ull}}, {{13783654443018175613ull, 344694084695710ull}}, {{3607103035119529365ull, 551510535513137ull}}, {{13953728872321354462ull, 441208428410509ull}}, {{14852331912598993892ull, 352966742728407ull}}, {{4503167900595374467ull, 282373394182726ull}}, {{18273115085178330118ull, 451797430692361ull}}, {{10929143253400753771ull, 361437944553889ull}}, {{12432663417462513340ull, 289150355643111ull}}, {{12513563838456200698ull, 462640569028978ull}}, {{17389548700248781204ull, 370112455223182ull}}, {{6532941330715204317ull, 296089964178546ull}}, {{3074008499660506261ull, 473743942685674ull}}, {{6148555614470315332ull, 378995154148539ull}}, {{8608193306318162589ull, 303196123318831ull}}, {{6394411660625239496ull, 485113797310130ull}}, {{5115529328500191597ull, 388091037848104ull}}, {{7781772277542063600ull, 310472830278483ull}}, {{8761486829325391438ull, 496756528445573ull}}, {{14387887092944133796ull, 397405222756458ull}}, {{442263230129576067ull, 317924178205167ull}}, {{4396969982949232031ull, 508678685128267ull}}, {{14585622430585116595ull, 406942948102613ull}}, {{600451500242362306ull, 325554358482091ull}}, {{12028768844613510660ull, 520886973571345ull}}, {{9623015075690808528ull, 416709578857076ull}}, {{4009063245810736499ull, 333367663085661ull}}, {{17482547637522909368ull, 533388260937057ull}}, {{6607340480534506848ull, 426710608749646ull}}, {{1596523569685695155ull, 341368486999717ull}}, {{6243786526239022571ull, 546189579199547ull}}, {{16063075665216949027ull, 436951663359637ull}}, {{5471762902689738575ull, 349561330687710ull}}, {{8754820644303581720ull, 559298129100336ull}}, {{3314507700700955053ull, 447438503280269ull}}, {{6340954975302674365ull, 357950802624215ull}}, {{5072763980242139492ull, 286360642099372ull}}, {{11805771183129333511ull, 458177027358995ull}}, {{9444616946503466809ull, 366541621887196ull}}, {{3866344742460863124ull, 293233297509757ull}}, {{9875500402679291321ull, 469173276015611ull}}, {{4211051507401522734ull, 375338620812489ull}}, {{7058190020663128510ull, 300270896649991ull}}, {{3914406403577184970ull, 480433434639986ull}}, {{17888920381829389269ull, 384346747711988ull}}, {{3243089861237780445ull, 307477398169591ull}}, {{16256990222206179682ull, 491963837071345ull}}, {{13005592177764943746ull, 393571069657076ull}}, {{6715124927470044673ull, 314856855725661ull}}, {{3365502254468250831ull, 503770969161058ull}}, {{10071099433058421311ull, 403016775328846ull}}, {{4367530731704826726ull, 322413420263077ull}}, {{10677397985469633085ull, 515861472420923ull}}, {{15920616017859527114ull, 412689177936738ull}}, {{1668446370061890721ull, 330151342349391ull}}, {{13737560636324756124ull, 528242147759025ull}}, {{10990048509059804899ull, 422593718207220ull}}, {{8792038807247843919ull, 338074974565776ull}}, {{6688564462112729625ull, 540919959305242ull}}, {{16418898013915914669ull, 432735967444193ull}}, {{2067071966907000766ull, 346188773955355ull}}, {{3307315147051201226ull, 553902038328568ull}}, {{10024549747124781627ull, 443121630662854ull}}, {{11708988612441735624ull, 354497304530283ull}}, {{16745888519437209146ull, 283597843624226ull}}, {{967979927906162371ull, 453756549798763ull}}, {{8153081571808750543ull, 363005239839010ull}}, {{6522465257447000435ull, 290404191871208ull}}, {{6746595597173290372ull, 464646706993933ull}}, {{12775974107222452944ull, 371717365595146ull}}, {{6531430471036052032ull, 297373892476117ull}}, {{14139637568399593575ull, 475798227961787ull}}, {{3933012425235854213ull, 380638582369430ull}}, {{3146409940188683371ull, 304510865895544ull}}, {{12412953533785714040ull, 487217385432870ull}}, {{9930362827028571232ull, 389773908346296ull}}, {{4254941446880946662ull, 311819126677037ull}}, {{10497255129751424983ull, 498910602683259ull}}, {{12087152918543050309ull, 399128482146607ull}}, {{2291024705350619601ull, 319302785717286ull}}, {{14733685972786722331ull, 510884457147657ull}}, {{4408251148745557219ull, 408707565718126ull}}, {{18283996177964087068ull, 326966052574500ull}}, {{10807649811032987692ull, 523145684119201ull}}, {{4956771034084479831ull, 418516547295361ull}}, {{276068012525673541ull, 334813237836289ull}}, {{7820406449524898313ull, 535701180538062ull}}, {{17324371603845649620ull, 428560944430449ull}}, {{17548846097818430019ull, 342848755544359ull}}, {{17010107312283757061ull, 548558008870975ull}}, {{13608085849827005649ull, 438846407096780ull}}, {{10886468679861604519ull, 351077125677424ull}}, {{6350303443552836261ull, 561723401083879ull}}, {{8769591569584179332ull, 449378720867103ull}}, {{14394370885151164112ull, 359502976693682ull}}, {{4136799078637110643ull, 287602381354946ull}}, {{17686924970045107998ull, 460163810167913ull}}, {{3081493531810355429ull, 368131048134331ull}}, {{17222590084415925636ull, 294504838507464ull}}, {{16488097690839750048ull, 471207741611943ull}}, {{2122431708446069069ull, 376966193289555ull}}, {{1697945366756855255ull, 301572954631644ull}}, {{10095410216294789055ull, 482516727410630ull}}, {{8076328173035831244ull, 386013381928504ull}}, {{10150411353170575318ull, 308810705542803ull}}, {{12551309350331010186ull, 494097128868485ull}}, {{10041047480264808149ull, 395277703094788ull}}, {{15411535613695667165ull, 316222162475830ull}}, {{6211712908203515849ull, 505955459961329ull}}, {{8658719141304723002ull, 404764367969063ull}}, {{14305672942527599048ull, 323811494375250ull}}, {{4442332634334606861ull, 518098391000401ull}}, {{18311261366435326781ull, 414478712800320ull}}, {{14649009093148261425ull, 331582970240256ull}}, {{16059716919553397634ull, 530532752384410ull}}, {{12847773535642718107ull, 424426201907528ull}}, {{17656916457997995132ull, 339540961526022ull}}, {{13493671073829150919ull, 543265538441636ull}}, {{7105588044321410412ull, 434612430753309ull}}, {{9373819250199038652ull, 347689944602647ull}}, {{240715541350820551ull, 556303911364236ull}}, {{14949967692048297734ull, 445043129091388ull}}, {{891927709412907217ull, 356034503273111ull}}, {{15470937426497967066ull, 284827602618488ull}}, {{2617406993945285367ull, 455724164189582ull}}, {{13161972039381959263ull, 364579331351665ull}}, {{10529577631505567411ull, 291663465081332ull}}, {{2089928951441266565ull, 466661544130132ull}}, {{12739989605378744221ull, 373329235304105ull}}, {{10191991684302995377ull, 298663388243284ull}}, {{5239140250659061634ull, 477861421189255ull}}, {{4191312200527249307ull, 382289136951404ull}}, {{7042398575163709769ull, 305831309561123ull}}, {{7578488905520025307ull, 489330095297797ull}}, {{17130837568641751215ull, 391464076238237ull}}, {{6325972425429580325ull, 313171260990590ull}}, {{10121555880687328521ull, 501074017584944ull}}, {{11786593519291773140ull, 400859214067955ull}}, {{9429274815433418512ull, 320687371254364ull}}, {{4018793260467738650ull, 513099794006983ull}}, {{10593732237858011566ull, 410479835205586ull}}, {{4785636975544498930ull, 328383868164469ull}}, {{15035716790355018934ull, 525414189063150ull}}, {{12028573432284015147ull, 420331351250520ull}}, {{9622858745827212118ull, 336265081000416ull}}, {{8017876363839718742ull, 538024129600666ull}}, {{2724952276329864670ull, 430419303680533ull}}, {{9558659450547712383ull, 344335442944426ull}}, {{7915157491392519166ull, 550936708711082ull}}, {{17400172437339746302ull, 440749366968865ull}}, {{13920137949871797042ull, 352599493575092ull}}, {{3757412730413616987ull, 282079594860074ull}}, {{13390557998145607826ull, 451327351776118ull}}, {{18091144028000306907ull, 361061881420894ull}}, {{18162264037142155849ull, 288849505136715ull}}, {{10612878385717897742ull, 462159208218745ull}}, {{8490302708574318193ull, 369727366574996ull}}, {{3102893352117544231ull, 295781893259997ull}}, {{8653978178129981094ull, 473251029215995ull}}, {{6923182542503984875ull, 378600823372796ull}}, {{1849197219261277577ull, 302880658698237ull}}, {{6648064365559954446ull, 484609053917179ull}}, {{9007800307189873880ull, 387687243133743ull}}, {{14584937875235719750ull, 310149794506994ull}}, {{12267854156151420631ull, 496239671211191ull}}, {{6124934510179226182ull, 396991736968953ull}}, {{12278645237627201592ull, 317593389575162ull}}, {{4888437121235881254ull, 508149423320260ull}}, {{3910749696988705003ull, 406519538656208ull}}, {{10507297387074784649ull, 325215630924966ull}}, {{9432978189835834792ull, 520345009479946ull}}, {{3857033737126757510ull, 416276007583957ull}}, {{14153673433927136978ull, 333020806067165ull}}, {{4199133420573867549ull, 532833289707465ull}}, {{3359306736459094039ull, 426266631765972ull}}, {{13755491833393006201ull, 341013305412777ull}}, {{7251391674461168629ull, 545621288660444ull}}, {{9490462154310845226ull, 436497030928355ull}}, {{7592369723448676181ull, 349197624742684ull}}, {{1079745113292150920ull, 558716199588295ull}}, {{863796090633720736ull, 446972959670636ull}}, {{15448432131474617881ull, 357578367736508ull}}, {{1290699260953963335ull, 286062694189207ull}}, {{5754467632268251660ull, 457700310702731ull}}, {{914225291072691005ull, 366160248562185ull}}, {{731380232858152804ull, 292928198849748ull}}, {{15927603631540685779ull, 468685118159596ull}}, {{9052734090490638300ull, 374948094527677ull}}, {{18310233716618241609ull, 299958475622141ull}}, {{3470932243395814313ull, 479933560995427ull}}, {{13844792238942382420ull, 383946848796341ull}}, {{7386484976411995613ull, 307157479037073ull}}, {{8129027147517282657ull, 491451966459317ull}}, {{17571268162239557095ull, 393161573167453ull}}, {{2988968085565914707ull, 314529258533963ull}}, {{1093000122163553208ull, 503246813654341ull}}, {{15631795356698483859ull, 402597450923472ull}}, {{5126738655874966440ull, 322077960738778ull}}, {{4513433034658035982ull, 515324737182045ull}}, {{3610746427726428785ull, 412259789745636ull}}, {{17645992401148784321ull, 329807831796508ull}}, {{6097494953386592975ull, 527692530874414ull}}, {{8567344777451184703ull, 422154024699531ull}}, {{3164527007219037439ull, 337723219759625ull}}, {{5063243211550459903ull, 540357151615400ull}}, {{4050594569240367922ull, 432285721292320ull}}, {{3240475655392294338ull, 345828577033856ull}}, {{16252807492853401910ull, 553325723254169ull}}, {{16691594809024631851ull, 442660578603335ull}}, {{13353275847219705481ull, 354128462882668ull}}, {{18061318307259585031ull, 283302770306134ull}}, {{17830062847389605080ull, 453284432489815ull}}, {{14264050277911684064ull, 362627545991852ull}}, {{4032542592845526605ull, 290102036793482ull}}, {{10141416963294752891ull, 464163258869571ull}}, {{4423784755893891990ull, 371330607095657ull}}, {{14607074248940844561ull, 297064485676525ull}}, {{4924574724595799682ull, 475303177082441ull}}, {{250310964934729422ull, 380242541665953ull}}, {{7578946401431604184ull, 304194033332762ull}}, {{15815663057032477018ull, 486710453332419ull}}, {{16341879260367891938ull, 389368362665935ull}}, {{13073503408294313550ull, 311494690132748ull}}, {{17228256638528991357ull, 498391504212397ull}}, {{6403907681339372439ull, 398713203369918ull}}, {{12501823774555318598ull, 318970562695934ull}}, {{8934871595062778787ull, 510352900313495ull}}, {{7147897276050223030ull, 408282320250796ull}}, {{2028969006098268100ull, 326625856200637ull}}, {{6935699224499139284ull, 522601369921019ull}}, {{9237908194341221750ull, 418081095936815ull}}, {{7390326555472977400ull, 334464876749452ull}}, {{15513871303498674164ull, 535143802799123ull}}, {{1343050598573208361ull, 428115042239299ull}}, {{4763789293600477012ull, 342492033791439ull}}, {{15000760499244583866ull, 547987254066302ull}}, {{4621910769911846446ull, 438389803253042ull}}, {{14765575060155208127ull, 350711842602433ull}}, {{1488827207796871064ull, 561138948163894ull}}, {{4880410580979407174ull, 448911158531115ull}}, {{3904328464783525739ull, 359128926824892ull}}, {{14191509216052551561ull, 287303141459913ull}}, {{570321857232620558ull, 459685026335862ull}}, {{11524303930011827416ull, 367748021068689ull}}, {{12908791958751372256ull, 294198416854951ull}}, {{13275369504518374964ull, 470717466967922ull}}, {{3241597974130879324ull, 376573973574338ull}}, {{9971976008788524106ull, 301259178859470ull}}, {{15955161614061638570ull, 482014686175152ull}}, {{5385431661765490209ull, 385611748940122ull}}, {{15376391773638123137ull, 308489399152097ull}}, {{9844831578853355726ull, 493583038643356ull}}, {{4186516448340774258ull, 394866430914685ull}}, {{3349213158672619406ull, 315893144731748ull}}, {{1669392239134280727ull, 505429031570797ull}}, {{12403560235533155551ull, 404343225256637ull}}, {{2544150558942703794ull, 323474580205310ull}}, {{4070640894308326071ull, 517559328328496ull}}, {{18013907974414302150ull, 414047462662796ull}}, {{10721777564789531397ull, 331237970130237ull}}, {{2397448844695608942ull, 529980752208380ull}}, {{1917959075756487153ull, 423984601766704ull}}, {{5223716075347100046ull, 339187681413363ull}}, {{4668596905813449750ull, 542700290261381ull}}, {{45528709908849477ull, 434160232209105ull}}, {{36422967927079582ull, 347328185767284ull}}, {{7436974378167147977ull, 555725097227654ull}}, {{9638928317275628705ull, 444580077782123ull}}, {{15089840283304323610ull, 355664062225698ull}}, {{1003825782417727918ull, 284531249780559ull}}, {{8984818881352185316ull, 455249999648894ull}}, {{10877203919823658576ull, 364199999719115ull}}, {{8701763135858926861ull, 291359999775292ull}}, {{17612169832116193301ull, 466175999640467ull}}, {{6711038236209133994ull, 372940799712374ull}}, {{9058179403709217518ull, 298352639769899ull}}, {{3425040601709017060ull, 477364223631839ull}}, {{6429381296109123971ull, 381891378905471ull}}, {{1454156222145388854ull, 305513103124377ull}}, {{6015998770174532489ull, 488820964999003ull}}, {{12191496645623446638ull, 391056771999202ull}}, {{2374499687014936664ull, 312845417599362ull}}, {{7488548313965808985ull, 500552668158979ull}}, {{9680187465914557511ull, 400442134527183ull}}, {{15122847602215466655ull, 320353707621746ull}}, {{16817858534060926003ull, 512565932194794ull}}, {{17143635641990651125ull, 410052745755835ull}}, {{13714908513592520900ull, 328042196604668ull}}, {{18254504807006123117ull, 524867514567469ull}}, {{18292952660346808817ull, 419894011653975ull}}, {{14634362128277447053ull, 335915209323180ull}}, {{4968235331534363670ull, 537464334917089ull}}, {{7663937079969401259ull, 429971467933671ull}}, {{2441800849233610684ull, 343977174346937ull}}, {{7596230173515687418ull, 550363478955099ull}}, {{9766332953554460257ull, 440290783164079ull}}, {{11502415177585478529ull, 352232626531263ull}}, {{16580629771552203469ull, 281786101225010ull}}, {{8082263560773973935ull, 450857761960017ull}}, {{17533857292844910118ull, 360686209568013ull}}, {{2959039390050197124ull, 288548967654411ull}}, {{15802509468306046369ull, 461678348247057ull}}, {{5263309945161016449ull, 369342678597646ull}}, {{521299141386902836ull, 295474142878117ull}}, {{4523427440960954861ull, 472758628604987ull}}, {{14686788396994494858ull, 378206902883989ull}}, {{15438779532337506209ull, 302565522307191ull}}, {{17323349622256189289ull, 484104835691506ull}}, {{10169330883063041108ull, 387283868553205ull}}, {{8135464706450432886ull, 309827094842564ull}}, {{1948697086094961649ull, 495723351748103ull}}, {{8937655298359789965ull, 396578681398482ull}}, {{18218170682913562942ull, 317262945118785ull}}, {{10702329018952149091ull, 507620712190057ull}}, {{1183165585677898626ull, 406096569752046ull}}, {{15703927727509960194ull, 324877255801636ull}}, {{17747586734532115664ull, 519803609282618ull}}, {{3130022943399961561ull, 415842887426095ull}}, {{2504018354719969249ull, 332674309940876ull}}, {{15074475811777681768ull, 532278895905401ull}}, {{8370231834680235091ull, 425823116724321ull}}, {{3006836653002277750ull, 340658493379457ull}}, {{8500287459545554723ull, 545053589407131ull}}, {{3110881152894533455ull, 436042871525705ull}}, {{2488704922315626764ull, 348834297220564ull}}, {{11360625505188823469ull, 558134875552902ull}}, {{1709802774667238129ull, 446507900442322ull}}, {{12435888663959521473ull, 357206320353857ull}}, {{2570013301683796532ull, 285765056283086ull}}, {{15180067726919805421ull, 457224090052937ull}}, {{4765356552052023690ull, 365779272042350ull}}, {{3812285241641618952ull, 292623417633880ull}}, {{6099656386626590323ull, 468197468214208ull}}, {{12258422738785092905ull, 374557974571366ull}}, {{6117389376286164001ull, 299646379657093ull}}, {{6098474187315952078ull, 479434207451349ull}}, {{8568128164594671986ull, 383547365961079ull}}, {{10543851346417647912ull, 306837892768863ull}}, {{13180813339526326336ull, 490940628430181ull}}, {{6855301856879150745ull, 392752502744145ull}}, {{5484241485503320596ull, 314202002195316ull}}, {{1396088747321492308ull, 502723203512506ull}}, {{15874266256824835139ull, 402178562810004ull}}, {{16388761820201778434ull, 321742850248003ull}}, {{4085926023871383556ull, 514788560396806ull}}, {{18026136078064748137ull, 411830848317444ull}}, {{18110257677193708833ull, 329464678653955ull}}, {{10529668209800382517ull, 527143485846329ull}}, {{12113083382582216337ull, 421714788677063ull}}, {{17069164335549593716ull, 337371830941650ull}}, {{8863918863169798329ull, 539794929506641ull}}, {{3401786275793928340ull, 431835943605313ull}}, {{10100126650118963318ull, 345468754884250ull}}, {{16160202640190341310ull, 552750007814800ull}}, {{12928162112152273048ull, 442200006251840ull}}, {{10342529689721818438ull, 353760005001472ull}}, {{895326122293634104ull, 283008004001178ull}}, {{16189917054637455859ull, 452812806401884ull}}, {{16641282458451875011ull, 362250245121507ull}}, {{5934328337277679362ull, 289800196097206ull}}, {{2116227710160466333ull, 463680313755530ull}}, {{1692982168128373066ull, 370944251004424ull}}, {{5043734549244608776ull, 296755400803539ull}}, {{15448672908275194689ull, 474808641285662ull}}, {{4980240697136335104ull, 379846913028530ull}}, {{3984192557709068083ull, 303877530422824ull}}, {{13753405721818329580ull, 486204048676518ull}}, {{18381422206938484310ull, 388963238941214ull}}, {{18394486580292697771ull, 311170591152971ull}}, {{3605736825274944172ull, 497872945844755ull}}, {{2884589460219955338ull, 398298356675804ull}}, {{5997020382917874593ull, 318638685340643ull}}, {{5905883797926689026ull, 509821896545029ull}}, {{8414055853083261544ull, 407857517236023ull}}, {{14109942311950429882ull, 326286013788818ull}}, {{439814810669225872ull, 522057622062110ull}}, {{351851848535380697ull, 417646097649688ull}}, {{7660179108312125204ull, 334116878119750ull}}, {{12256286573299400327ull, 534587004991600ull}}, {{9805029258639520261ull, 427669603993280ull}}, {{7844023406911616209ull, 342135683194624ull}}, {{1482391006832854965ull, 547417093111399ull}}, {{4875261620208194295ull, 437933674489119ull}}, {{7589558110908465759ull, 350346939591295ull}}, {{12143292977453545215ull, 560555103346072ull}}, {{2335936752479015526ull, 448444082676858ull}}, {{9247447031467033067ull, 358755266141486ull}}, {{3708608810431716130ull, 287004212913189ull}}, {{13312471726174566455ull, 459206740661102ull}}, {{3271279751455832517ull, 367365392528882ull}}, {{13685070245390396983ull, 293892314023105ull}}, {{3449368318915083558ull, 470227702436969ull}}, {{6448843469873977169ull, 376182161949575ull}}, {{5159074775899181735ull, 300945729559660ull}}, {{8254519641438690777ull, 481513167295456ull}}, {{2914266898409042298ull, 385210533836365ull}}, {{2331413518727233838ull, 308168427069092ull}}, {{7419610444705484465ull, 493069483310547ull}}, {{17003734799990118541ull, 394455586648437ull}}, {{6224290210508274187ull, 315564469318750ull}}, {{9958864336813238699ull, 504903150910000ull}}, {{7967091469450590959ull, 403922520728000ull}}, {{6373673175560472767ull, 323138016582400ull}}, {{10197877080896756428ull, 517020826531840ull}}, {{8158301664717405142ull, 413616661225472ull}}, {{17594687775999655083ull, 330893328980377ull}}, {{13394105182631806841ull, 529429326368604ull}}, {{14404632960847355796ull, 423543461094883ull}}, {{455659924452153667ull, 338834768875907ull}}, {{4418404693865356190ull, 542135630201451ull}}, {{18292119014059926245ull, 433708504161160ull}}, {{14633695211247940996ull, 346966803328928ull}}, {{1277819449545243655ull, 555146885326286ull}}, {{15779650818603836216ull, 444117508261028ull}}, {{1555674210657338003ull, 355294006608823ull}}, {{8623236998009691049ull, 284235205287058ull}}, {{10107830382073595355ull, 454776328459293ull}}, {{15464961935142696931ull, 363821062767434ull}}, {{16061318362856067868ull, 291056850213947ull}}, {{10940714121602067296ull, 465690960342316ull}}, {{5063222482539743513ull, 372552768273853ull}}, {{11429275615515615457ull, 298042214619082ull}}, {{3529445725857343439ull, 476867543390532ull}}, {{13891603024911605720ull, 381494034712425ull}}, {{11113282419929284576ull, 305195227769940ull}}, {{17781251871886855322ull, 488312364431904ull}}, {{17914350312251394581ull, 390649891545523ull}}, {{3263433805575384695ull, 312519913236419ull}}, {{12600191718404436159ull, 500031861178270ull}}, {{10080153374723548927ull, 400025488942616ull}}, {{4374773885036928818ull, 320020391154093ull}}, {{3310289401317175786ull, 512032625846549ull}}, {{6337580335795650952ull, 409626100677239ull}}, {{8759413083378431085ull, 327700880541791ull}}, {{6636363303921669089ull, 524321408866866ull}}, {{1619741828395424948ull, 419457127093493ull}}, {{8674491092200160605ull, 335565701674794ull}}, {{2811139303294525999ull, 536905122679671ull}}, {{17006306701603262092ull, 429524098143736ull}}, {{9915696546540699350ull, 343619278514989ull}}, {{4797068030239387991ull, 549790845623983ull}}, {{11216352053675331039ull, 439832676499186ull}}, {{5283732828198354508ull, 351866141199349ull}}, {{7916335077300593929ull, 281492912959479ull}}, {{1598089679455219318ull, 450388660735167ull}}, {{12346518187789906424ull, 360310928588133ull}}, {{17255912179715745785ull, 288248742870506ull}}, {{1784017784351820994ull, 461197988592811ull}}, {{16184609486449098088ull, 368958390874248ull}}, {{1879641144933547501ull, 295166712699399ull}}, {{10386123461377496648ull, 472266740319038ull}}, {{15687596398585817965ull, 377813392255230ull}}, {{12550077118868654372ull, 302250713804184ull}}, {{9012076945964116025ull, 483601142086695ull}}, {{7209661556771292820ull, 386880913669356ull}}, {{2078380430675123933ull, 309504730935485ull}}, {{3325408689080198293ull, 495207569496776ull}}, {{17417722210231799927ull, 396166055597420ull}}, {{13934177768185439941ull, 316932844477936ull}}, {{14915986799612883260ull, 507092551164698ull}}, {{864742995464575638ull, 405674040931759ull}}, {{4381143211113570834ull, 324539232745407ull}}, {{10699177952523623658ull, 519262772392651ull}}, {{4869993547276988603ull, 415410217914121ull}}, {{206646023079680559ull, 332328174331297ull}}, {{4019982451669399218ull, 531725078930075ull}}, {{3215985961335519374ull, 425380063144060ull}}, {{2572788769068415499ull, 340304050515248ull}}, {{427113215767554476ull, 544486480824397ull}}, {{11409737016839774550ull, 435589184659517ull}}, {{1749091983987998994ull, 348471347727614ull}}, {{10177244803864619036ull, 557554156364182ull}}, {{763098213607874583ull, 446043325091346ull}}, {{15367873829853940959ull, 356834660073076ull}}, {{8604950249141242444ull, 285467728058461ull}}, {{6389222769142167264ull, 456748364893538ull}}, {{12490075844797554457ull, 365398691914830ull}}, {{9992060675838043566ull, 292318953531864ull}}, {{4919250637115138736ull, 467710325650983ull}}, {{11314098139175931635ull, 374168260520786ull}}, {{5361929696598834985ull, 299334608416629ull}}, {{15957785144041956622ull, 478935373466606ull}}, {{9076879300491654975ull, 383148298773285ull}}, {{7261503440393323980ull, 306518639018628ull}}, {{7929056689887408044ull, 490429822429805ull}}, {{6343245351909926435ull, 392343857943844ull}}, {{8763945096269851471ull, 313875086355075ull}}, {{14022312154031762355ull, 502200138168120ull}}, {{11217849723225409884ull, 401760110534496ull}}, {{5284930963838417584ull, 321408088427597ull}}, {{12145238356883378457ull, 514252941484155ull}}, {{9716190685506702766ull, 411402353187324ull}}, {{11462301363147272536ull, 329121882549859ull}}, {{7271635736809905088ull, 526595012079775ull}}, {{5817308589447924070ull, 421276009663820ull}}, {{4653846871558339256ull, 337020807731056ull}}, {{67457365009522164ull, 539233292369690ull}}, {{53965892007617731ull, 431386633895752ull}}, {{11111219157831825154ull, 345109307116601ull}}, {{10399253023047099600ull, 552174891386562ull}}, {{940704788953859034ull, 441739913109250ull}}, {{752563831163087227ull, 353391930487400ull}}, {{602051064930469781ull, 282713544389920ull}}, {{963281703888751651ull, 452341671023872ull}}, {{11838671807336732290ull, 361873336819097ull}}, {{2092239816385565186ull, 289498669455278ull}}, {{18104978965184545590ull, 463197871128444ull}}, {{18173331986889546795ull, 370558296902755ull}}, {{14538665589511637436ull, 296446637522204ull}}, {{12193818498992888928ull, 474314620035527ull}}, {{2376357169710490496ull, 379451696028422ull}}, {{12969132179994123366ull, 303561356822737ull}}, {{5993216229022956094ull, 485698170916380ull}}, {{4794572983218364875ull, 388558536733104ull}}, {{7525007201316602223ull, 310846829386483ull}}, {{8350662707364653234ull, 497354927018373ull}}, {{14059227795375543233ull, 397883941614698ull}}, {{179335792074703617ull, 318307153291759ull}}, {{7665634896803346434ull, 509291445266814ull}}, {{9821856732184587470ull, 407433156213451ull}}, {{4168136571005759653ull, 325946524970761ull}}, {{17737064957834946414ull, 521514439953217ull}}, {{6810954336784136485ull, 417211551962574ull}}, {{9138112284169219511ull, 333769241570059ull}}, {{3552933210445020249ull, 534030786512095ull}}, {{2842346568356016199ull, 427224629209676ull}}, {{17031272513652454252ull, 341779703367740ull}}, {{8803291948134375187ull, 546847525388385ull}}, {{7042633558507500150ull, 437478020310708ull}}, {{13012804476289820766ull, 349982416248566ull}}, {{13441789532579892579ull, 559971865997706ull}}, {{7064082811322003740ull, 447977492798165ull}}, {{5651266249057602992ull, 358381994238532ull}}, {{15589059443471813363ull, 286705595390825ull}}, {{6495751035845349765ull, 458728952625321ull}}, {{1507252013934369489ull, 366983162100257ull}}, {{12273848055373226561ull, 293586529680205ull}}, {{1191412814887610881ull, 469738447488329ull}}, {{4642479066651999028ull, 375790757990663ull}}, {{11092680882805419869ull, 300632606392530ull}}, {{17748289412488671790ull, 481012170228048ull}}, {{3130585085765206463ull, 384809736182439ull}}, {{6193816883354075493ull, 307847788945951ull}}, {{2531409383882700143ull, 492556462313522ull}}, {{13093173951331891084ull, 394045169850817ull}}, {{3095841531581692221ull, 315236135880654ull}}, {{12332044080014528200ull, 504377817409046ull}}, {{6176286449269712237ull, 403502253927237ull}}, {{16009075603641500759ull, 322801803141789ull}}, {{14546474521600670245ull, 516482885026863ull}}, {{569133173054805226ull, 413186308021491ull}}, {{15212701797411485474ull, 330549046417192ull}}, {{9582927616890735465ull, 528878474267508ull}}, {{15045039722996409018ull, 423102779414006ull}}, {{8346682963655216891ull, 338482223531205ull}}, {{13354692741848347027ull, 541571557649928ull}}, {{18062451822962498268ull, 433257246119942ull}}, {{7071263828886177968ull, 346605796895954ull}}, {{245975681992153779ull, 554569275033527ull}}, {{11264826989819453993ull, 443655420026821ull}}, {{5322512777113652871ull, 354924336021457ull}}, {{15326056665916653266ull, 283939468817165ull}}, {{6074946591757093610ull, 454303150107465ull}}, {{4859957273405674888ull, 363442520085972ull}}, {{14956012262950270880ull, 290754016068777ull}}, {{9172224361752792115ull, 465206425710044ull}}, {{11027128304144144015ull, 372165140568035ull}}, {{8821702643315315212ull, 297732112454428ull}}, {{10425375414562594017ull, 476371379927085ull}}, {{8340300331650075213ull, 381097103941668ull}}, {{14050937894803880817ull, 304877683153334ull}}, {{11413454187460478338ull, 487804293045335ull}}, {{9130763349968382670ull, 390243434436268ull}}, {{14683308309458526782ull, 312194747549014ull}}, {{12425246850907911882ull, 499511596078423ull}}, {{17318895110210150152ull, 399609276862738ull}}, {{2787069643942389152ull, 319687421490191ull}}, {{15527357874533553613ull, 511499874384305ull}}, {{12421886299626842890ull, 409199899507444ull}}, {{13626857854443384635ull, 327359919605955ull}}, {{3356228493399863801ull, 523775871369529ull}}, {{6374331609461801364ull, 419020697095623ull}}, {{12478162917053261737ull, 335216557676498ull}}, {{16275711852543308457ull, 536346492282397ull}}, {{5641871852550826119ull, 429077193825918ull}}, {{11892195111524481542ull, 343261755060734ull}}, {{7959465734213439497ull, 549218808097175ull}}, {{6367572587370751598ull, 439375046477740ull}}, {{5094058069896601278ull, 351500037182192ull}}, {{11839841726576472368ull, 562400059491507ull}}, {{2093175751777357248ull, 449920047593206ull}}, {{16431935860389527091ull, 359936038074564ull}}, {{16834897503053531996ull, 287948830459651ull}}, {{1110394301692278932ull, 460718128735443ull}}, {{8267013070837643792ull, 368574502988354ull}}, {{10302959271412025356ull, 294859602390683ull}}, {{12795386019517330247ull, 471775363825093ull}}, {{17615006445097684844ull, 377420291060074ull}}, {{17781353970820058198ull, 301936232848059ull}}, {{17382119909086362148ull, 483097972556895ull}}, {{13905695927269089718ull, 386478378045516ull}}, {{7435207927073361451ull, 309182702436413ull}}, {{8206983868575467999ull, 494692323898261ull}}, {{2876238280118464076ull, 395753859118609ull}}, {{5990339438836681584ull, 316603087294887ull}}, {{13273891916880600858ull, 506564939671819ull}}, {{14308462348246391010ull, 405251951737455ull}}, {{11446769878597112808ull, 324201561389964ull}}, {{7246785361529649523ull, 518722498223943ull}}, {{13176125918707540264ull, 414977998579154ull}}, {{14230249549707942535ull, 331982398863323ull}}, {{632306391081246117ull, 531171838181318ull}}, {{7884542742348817540ull, 424937470545054ull}}, {{9996983008620964355ull, 339949976436043ull}}, {{12305823999051632645ull, 543919962297669ull}}, {{13534008013983216439ull, 435135969838135ull}}, {{10827206411186573151ull, 348108775870508ull}}, {{13634181443156606719ull, 556974041392813ull}}, {{18286042784009106021ull, 445579233114250ull}}, {{14628834227207284817ull, 356463386491400ull}}, {{11703067381765827853ull, 285170709193120ull}}, {{278163737115772950ull, 456273134708993ull}}, {{7601228619176439006ull, 365018507767194ull}}, {{9770331710083061528ull, 292014806213755ull}}, {{15632530736132898445ull, 467223689942008ull}}, {{1437978144680587786ull, 373778951953607ull}}, {{12218428959970201199ull, 299023161562885ull}}, {{1102742262242770302ull, 478437058500617ull}}, {{11950240254019947211ull, 382749646800493ull}}, {{16938889832699778415ull, 306199717440394ull}}, {{16034177288093914495ull, 489919547904631ull}}, {{9137993015733221273ull, 391935638323705ull}}, {{7310394412586577018ull, 313548510658964ull}}, {{628584615912792260ull, 501677617054343ull}}, {{7881565322214054454ull, 401342093643474ull}}, {{9994601072513153886ull, 321073674914779ull}}, {{4923315271795315249ull, 513717879863647ull}}, {{15006698661661983169ull, 410974303890917ull}}, {{4626661299845765888ull, 328779443112734ull}}, {{14781355709237046068ull, 526047108980374ull}}, {{15514433382131547178ull, 420837687184299ull}}, {{16100895520447148065ull, 336670149747439ull}}, {{14693386388489705935ull, 538672239595903ull}}, {{686662666566033778ull, 430937791676723ull}}, {{7928027762736647669ull, 344750233341378ull}}, {{8995495605636725947ull, 551600373346205ull}}, {{7196396484509380758ull, 441280298676964ull}}, {{9446466002349414929ull, 353024238941571ull}}, {{3867823987137621620ull, 282419391153257ull}}, {{9877867194162104916ull, 451871025845211ull}}, {{4212944940587773609ull, 361496820676169ull}}, {{7059704767212129211ull, 289197456540935ull}}, {{11295527627539406737ull, 462715930465496ull}}, {{5347073287289615066ull, 370172744372397ull}}, {{15345705074057423023ull, 296138195497917ull}}, {{9795732859524235544ull, 473821112796668ull}}, {{15215283917103209081ull, 379056890237334ull}}, {{15861575948424477588ull, 303245512189867ull}}, {{10621126258511522848ull, 485192819503788ull}}, {{15875598636293038925ull, 388154255603030ull}}, {{12700478909034431140ull, 310523404482424ull}}, {{9252719810229358855ull, 496837447171879ull}}, {{11091524662925397407ull, 397469957737503ull}}, {{16251917359824138572ull, 317975966190002ull}}, {{11245672516750980422ull, 508761545904004ull}}, {{12685886828142694661ull, 407009236723203ull}}, {{17527407091997976375ull, 325607389378562ull}}, {{13286456088229120908ull, 520971823005700ull}}, {{10629164870583296726ull, 416777458404560ull}}, {{8503331896466637381ull, 333421966723648ull}}, {{9915982219604709486ull, 533475146757837ull}}, {{554088146199946942ull, 426780117406270ull}}, {{443270516959957554ull, 341424093925016ull}}, {{11777279271361663056ull, 546278550280025ull}}, {{9421823417089330445ull, 437022840224020ull}}, {{7537458733671464356ull, 349618272179216ull}}, {{4681236344390522323ull, 559389235486746ull}}, {{55640260770507535ull, 447511388389397ull}}, {{11112558652842136998ull, 358009110711517ull}}, {{1511349292789888952ull, 286407288569214ull}}, {{9796856497947642969ull, 458251661710742ull}}, {{458787568874293729ull, 366601329368594ull}}, {{4056378869841345306ull, 293281063494875ull}}, {{6490206191746152490ull, 469249701591800ull}}, {{5192164953396921992ull, 375399761273440ull}}, {{4153731962717537594ull, 300319809018752ull}}, {{10335319955089970473ull, 480511694430003ull}}, {{15646953593555797025ull, 384409355544002ull}}, {{5138865245360816973ull, 307527484435202ull}}, {{11911533207319217481ull, 492043975096323ull}}, {{16907924195339194631ull, 393635180077058ull}}, {{2458292912045624735ull, 314908144061647ull}}, {{7622617474014909900ull, 503853030498635ull}}, {{6098093979211927920ull, 403082424398908ull}}, {{12257172812853362982ull, 322465939519126ull}}, {{12232778871081560125ull, 515945503230602ull}}, {{2407525467381427454ull, 412756402584482ull}}, {{12994066818130872932ull, 330205122067585ull}}, {{2343762835299845076ull, 528328195308137ull}}, {{12943056712465607030ull, 422662556246509ull}}, {{14043794184714395947ull, 338130044997207ull}}, {{7712675436575392223ull, 541008071995532ull}}, {{17238186793486044748ull, 432806457596425ull}}, {{13790549434788835798ull, 346245166077140ull}}, {{3618135021952585662ull, 553992265723425ull}}, {{2894508017562068529ull, 443193812578740ull}}, {{2315606414049654823ull, 354555050062992ull}}, {{12920531575465454828ull, 283644040050393ull}}, {{16983501706002817402ull, 453830464080629ull}}, {{17276150179544164245ull, 363064371264503ull}}, {{2752873699409600426ull, 290451497011603ull}}, {{715249104313450359ull, 464722395218565ull}}, {{572199283450760287ull, 371777916174852ull}}, {{11525805870986339199ull, 297422332939881ull}}, {{11062591764094322073ull, 475875732703810ull}}, {{8850073411275457658ull, 380700586163048ull}}, {{14458756358504186773ull, 304560468930438ull}}, {{997917285155236897ull, 487296750288702ull}}, {{11866380272349920487ull, 389837400230961ull}}, {{5803755403138026067ull, 311869920184769ull}}, {{16664706274504662353ull, 498991872295630ull}}, {{13331765019603729883ull, 399193497836504ull}}, {{14354760830424894229ull, 319354798269203ull}}, {{831524440228368828ull, 510967677230726ull}}, {{15422614811150336355ull, 408774141784580ull}}, {{12338091848920269084ull, 327019313427664ull}}, {{8672900514046699565ull, 523230901484263ull}}, {{14317018040721180298ull, 418584721187410ull}}, {{11453614432576944238ull, 334867776949928ull}}, {{14636434277381200459ull, 535788443119885ull}}, {{11709147421904960367ull, 428630754495908ull}}, {{16746015567007788940ull, 342904603596726ull}}, {{968183204019090041ull, 548647365754763ull}}, {{8153244192699092679ull, 438917892603810ull}}, {{6522595354159274143ull, 351134314083048ull}}, {{6746803751912928307ull, 561814902532877ull}}, {{16465489445756073615ull, 449451922026301ull}}, {{9483042741862948569ull, 359561537621041ull}}, {{3897085378748448532ull, 287649230096833ull}}, {{2545987791255607328ull, 460238768154933ull}}, {{9415487862488306508ull, 368191014523946ull}}, {{3843041475248734883ull, 294552811619157ull}}, {{9838215175139886137ull, 471284498590651ull}}, {{4181223325369998586ull, 377027598872521ull}}, {{18102373919263640162ull, 301622079098016ull}}, {{3138356567628451997ull, 482595326556827ull}}, {{13578731698328492567ull, 386076261245461ull}}, {{7173636543920883730ull, 308861008996369ull}}, {{409772026047682999ull, 494177614394191ull}}, {{15085212879805787692ull, 395342091515352ull}}, {{4689472674360809507ull, 316273673212282ull}}, {{11192505093719205535ull, 506037877139651ull}}, {{5264655260233454104ull, 404830301711721ull}}, {{522375393444852960ull, 323864241369377ull}}, {{4525149444253675060ull, 518182786191003ull}}, {{10998817184886760694ull, 414546228952802ull}}, {{1420356118425587909ull, 331636983162242ull}}, {{5961918604222850978ull, 530619173059587ull}}, {{15837581327604011752ull, 424495338447669ull}}, {{16359413876825119724ull, 339596270758135ull}}, {{7728318129210639943ull, 543354033213017ull}}, {{17250700947594242924ull, 434683226570413ull}}, {{2732514313849663370ull, 347746581256331ull}}, {{15440069346385192361ull, 556394530010129ull}}, {{16041404291850064212ull, 445115624008103ull}}, {{1765076989254320400ull, 356092499206483ull}}, {{8790759220887276966ull, 284873999365186ull}}, {{6686517123935822500ull, 455798398984298ull}}, {{12727911328632478646ull, 364638719187438ull}}, {{17561026692389803563ull, 291710975349950ull}}, {{9650898634114134086ull, 466737560559921ull}}, {{4031370092549396945ull, 373390048447937ull}}, {{14293142518265248526ull, 298712038758349ull}}, {{11800981584998666672ull, 477939262013359ull}}, {{13130134082740843661ull, 382351409610687ull}}, {{3125409636708854282ull, 305881127688550ull}}, {{5000655418734166851ull, 489409804301680ull}}, {{4000524334987333481ull, 391527843441344ull}}, {{6889768282731777108ull, 313222274753075ull}}, {{11023629252370843373ull, 501155639604920ull}}, {{8818903401896674698ull, 400924511683936ull}}, {{3365773906775429435ull, 320739609347149ull}}, {{12763935880324507743ull, 513183374955438ull}}, {{17589846333743426841ull, 410546699964350ull}}, {{14071877066994741473ull, 328437359971480ull}}, {{4068259233482034740ull, 525499775954369ull}}, {{6943956201527538115ull, 420399820763495ull}}, {{5555164961222030492ull, 336319856610796ull}}, {{1509566308471428142ull, 538111770577274ull}}, {{4897001861519052836ull, 430489416461819ull}}, {{7606950303957152592ull, 344391533169455ull}}, {{12171120486331444148ull, 551026453071128ull}}, {{17115594018548975964ull, 440821162456902ull}}, {{6313777585355360125ull, 352656929965522ull}}, {{16119068512510019070ull, 282125543972417ull}}, {{11033114361048389219ull, 451400870355868ull}}, {{16205189118322532021ull, 361120696284694ull}}, {{16653500109399935940ull, 288896557027755ull}}, {{8198856101330345889ull, 462234491244409ull}}, {{10248433695806187034ull, 369787592995527ull}}, {{820049327161128981ull, 295830074396422ull}}, {{5001427738199716693ull, 473328119034275ull}}, {{4001142190559773354ull, 378662495227420ull}}, {{3200913752447818683ull, 302929996181936ull}}, {{16189508448142240863ull, 484687993891097ull}}, {{5572909129029972044ull, 387750395112878ull}}, {{11837024932707798281ull, 310200316090302ull}}, {{4181844633364835958ull, 496320505744484ull}}, {{7034824521433779089ull, 397056404595587ull}}, {{16695906061372754241ull, 317645123676469ull}}, {{15645403253970675816ull, 508232197882351ull}}, {{8826973788434630330ull, 406585758305881ull}}, {{3372230216005793940ull, 325268606644705ull}}, {{5395568345609270305ull, 520429770631528ull}}, {{11695152305971236890ull, 416343816505222ull}}, {{1977424215293168866ull, 333075053204178ull}}, {{17921274003436711478ull, 532920085126684ull}}, {{18026368017491279506ull, 426336068101347ull}}, {{7042396784509202958ull, 341068854481078ull}}, {{7578486040472814410ull, 545710167169725ull}}, {{6062788832378251528ull, 436568133735780ull}}, {{4850231065902601222ull, 349254506988624ull}}, {{15139067334927982602ull, 558807211181798ull}}, {{1043207423716655112ull, 447045768945439ull}}, {{4523914753715234413ull, 357636615156351ull}}, {{18376527061939828823ull, 286109292125080ull}}, {{10955699225394174501ull, 457774867400129ull}}, {{12453908195057249924ull, 366219893920103ull}}, {{17341824185529620585ull, 292975915136082ull}}, {{12989523437879751644ull, 468761464217732ull}}, {{3012921120819980669ull, 375009171374186ull}}, {{17167732155623625828ull, 300007337099348ull}}, {{5332278560546339385ull, 480011739358958ull}}, {{11644520477920892155ull, 384009391487166ull}}, {{5626267567594803400ull, 307207513189733ull}}, {{5312679293409775118ull, 491532021103573ull}}, {{11628841064211640740ull, 393225616882858ull}}, {{16681770480853133239ull, 314580493506286ull}}, {{865391066171640920ull, 503328789610059ull}}, {{4381661667679223059ull, 402663031688047ull}}, {{14573375778369109417ull, 322130425350437ull}}, {{8560005986422933774ull, 515408680560700ull}}, {{6848004789138347019ull, 412326944448560ull}}, {{5478403831310677615ull, 329861555558848ull}}, {{5076097315355173862ull, 527778488894157ull}}, {{15128924296509870059ull, 422222791115325ull}}, {{12103139437207896047ull, 337778232892260ull}}, {{918279025823082059ull, 540445172627617ull}}, {{11802669664884196617ull, 432356138102093ull}}, {{16820833361391177940ull, 345884910481674ull}}, {{15845286934000153734ull, 553415856770679ull}}, {{16365578361942033311ull, 442732685416543ull}}, {{2024416245327895679ull, 354186148333235ull}}, {{1619532996262316543ull, 283348918666588ull}}, {{17348648052987347762ull, 453358269866540ull}}, {{13878918442389878209ull, 362686615893232ull}}, {{3724437124428081921ull, 290149292714586ull}}, {{17027145843310662043ull, 464238868343337ull}}, {{6243019045164708988ull, 371391094674670ull}}, {{4994415236131767191ull, 297112875739736ull}}, {{612366748327006859ull, 475380601183578ull}}, {{7868591028145426133ull, 380304480946862ull}}, {{17362919266742071876ull, 304243584757489ull}}, {{16712624382561584033ull, 486789735611983ull}}, {{2302053061823536256ull, 389431788489587ull}}, {{12909688893684559975ull, 311545430791669ull}}, {{9587455785669564990ull, 498472689266671ull}}, {{3980615813793741669ull, 398778151413337ull}}, {{14252539095260724304ull, 319022521130669ull}}, {{11736016108191427918ull, 510436033809071ull}}, {{5699464071811232011ull, 408348827047257ull}}, {{15627617701674716578ull, 326679061637805ull}}, {{6557444248969994910ull, 522686498620489ull}}, {{8935304213917906251ull, 418149198896391ull}}, {{3458894556392414677ull, 334519359117113ull}}, {{1844882475485953161ull, 535230974587381ull}}, {{16233301239356403821ull, 428184779669904ull}}, {{16675989806227033380ull, 342547823735923ull}}, {{4545490801511791469ull, 548076517977478ull}}, {{11015090270693253822ull, 438461214381982ull}}, {{1433374587070782411ull, 350768971505586ull}}, {{13361445783538982827ull, 561230354408937ull}}, {{3310458997347365615ull, 448984283527150ull}}, {{2648367197877892492ull, 359187426821720ull}}, {{2118693758302313994ull, 287349941457376ull}}, {{14457956457509433360ull, 459759906331801ull}}, {{7877016351265636365ull, 367807925065441ull}}, {{2612264266270598768ull, 294246340052353ull}}, {{490274011291047706ull, 470794144083765ull}}, {{392219209032838165ull, 376635315267012ull}}, {{11381821811452001502ull, 301308252213609ull}}, {{7142868454097471433ull, 482093203541775ull}}, {{5714294763277977146ull, 385674562833420ull}}, {{4571435810622381717ull, 308539650266736ull}}, {{18382343741221541717ull, 493663440426777ull}}, {{7327177363493412727ull, 394930752341422ull}}, {{16929788335020461151ull, 315944601873137ull}}, {{12330266077065096550ull, 505511362997020ull}}, {{9864212861652077240ull, 404409090397616ull}}, {{4202021474579751468ull, 323527272318093ull}}, {{3033885544585692026ull, 517643635708949ull}}, {{6116457250410463944ull, 414114908567159ull}}, {{8582514615070281478ull, 331291926853727ull}}, {{17421372198854360689ull, 530067082965963ull}}, {{2869051314857757582ull, 424053666372771ull}}, {{17052636310853847358ull, 339242933098216ull}}, {{1458776394172783511ull, 542788692957147ull}}, {{12235067559563957778ull, 434230954365717ull}}, {{2409356418167345576ull, 347384763492574ull}}, {{11233667898551573568ull, 555815621588118ull}}, {{16365631948325079501ull, 444652497270494ull}}, {{16781854373401973924ull, 355721997816395ull}}, {{13425483498721579139ull, 284577598253116ull}}, {{14102075968470705976ull, 455324157204986ull}}, {{7592311960034654458ull, 364259325763989ull}}, {{9763198382769633889ull, 291407460611191ull}}, {{8242419782947593577ull, 466251936977906ull}}, {{2904587011616164538ull, 373001549582325ull}}, {{2323669609292931630ull, 298401239665860ull}}, {{3717871374868690609ull, 477441983465376ull}}, {{17731692358862593780ull, 381953586772300ull}}, {{14185353887090075024ull, 305562869417840ull}}, {{4249822145634568422ull, 488900591068545ull}}, {{3399857716507654738ull, 391120472854836ull}}, {{17477281432173765083ull, 312896378283868ull}}, {{5827557403026562194ull, 500634205254190ull}}, {{4662045922421249755ull, 400507364203352ull}}, {{14797683182162730773ull, 320405891362681ull}}, {{16297595461976548591ull, 512649426180290ull}}, {{13038076369581238873ull, 410119540944232ull}}, {{3051763466181170452ull, 328095632755386ull}}, {{15950867990115603693ull, 524953012408617ull}}, {{5381996762608662308ull, 419962409926894ull}}, {{7994946224828840169ull, 335969927941515ull}}, {{12791913959726144271ull, 537551884706424ull}}, {{13922879982522825740ull, 430041507765139ull}}, {{14827652800760170915ull, 344033206212111ull}}, {{16345546851732452818ull, 550453129939378ull}}, {{2008391037160231285ull, 440362503951503ull}}, {{8985410459212005674ull, 352290003161202ull}}, {{18256374811595335509ull, 281832002528961ull}}, {{3384757995359164552ull, 450931204046339ull}}, {{6397155211029241965ull, 360744963237071ull}}, {{1428375354081483248ull, 288595970589657ull}}, {{5974749381272283521ull, 461753552943451ull}}, {{1090450690275916493ull, 369402842354761ull}}, {{15629755811188374487ull, 295522273883808ull}}, {{2871516409449937241ull, 472835638214094ull}}, {{5986561942301860116ull, 378268510571275ull}}, {{4789249553841488093ull, 302614808457020ull}}, {{7662799286146380949ull, 484183693531232ull}}, {{17198285873142835728ull, 387346954824985ull}}, {{13758628698514268583ull, 309877563859988ull}}, {{18324457102880919409ull, 495804102175981ull}}, {{10970216867562825204ull, 396643281740785ull}}, {{8776173494050260163ull, 317314625392628ull}}, {{10352528775738505938ull, 507703400628205ull}}, {{8282023020590804750ull, 406162720502564ull}}, {{10314967231214554123ull, 324930176402051ull}}, {{9125249940459465951ull, 519888282243282ull}}, {{18368246396593303731ull, 415910625794625ull}}, {{14694597117274642984ull, 332728500635700ull}}, {{5064611313929877159ull, 532365601017121ull}}, {{362340236401991404ull, 425892480813697ull}}, {{11357918633347324093ull, 340713984650957ull}}, {{3415274554388077256ull, 545142375441532ull}}, {{13800266087736192774ull, 436113900353225ull}}, {{11040212870188954219ull, 348891120282580ull}}, {{17664340592302326751ull, 558225792452128ull}}, {{3063426029616130431ull, 446580633961703ull}}, {{9829438453176724991ull, 357264507169362ull}}, {{484853133057559347ull, 285811605735490ull}}, {{775765012892094955ull, 457298569176784ull}}, {{4309960825055586287ull, 365838855341427ull}}, {{14516015104270199999ull, 292671084273141ull}}, {{15846926537348499352ull, 468273734837026ull}}, {{8988192415136889159ull, 374618987869621ull}}, {{3501205117367601004ull, 299695190295697ull}}, {{9291277002530071929ull, 479512304473115ull}}, {{7433021602024057543ull, 383609843578492ull}}, {{17014463725844977004ull, 306887874862793ull}}, {{5087049072900501268ull, 491020599780470ull}}, {{4069639258320401014ull, 392816479824376ull}}, {{18013106665623962104ull, 314253183859500ull}}, {{10374226591288787751ull, 502805094175201ull}}, {{4610032458289119877ull, 402244075340161ull}}, {{18445421225598937194ull, 321795260272128ull}}, {{7376581072506837572ull, 514872416435406ull}}, {{2211916043263559735ull, 411897933148325ull}}, {{1769532834610847788ull, 329518346518660ull}}, {{2831252535377356460ull, 527229354429856ull}}, {{17022397287269526461ull, 421783483543884ull}}, {{17307266644557531492ull, 337426786835107ull}}, {{12934231372324409095ull, 539882858936172ull}}, {{2968687468375706629ull, 431906287148938ull}}, {{9753647604184385950ull, 345525029719150ull}}, {{15605836166695017520ull, 552840047550640ull}}, {{12484668933356014016ull, 442272038040512ull}}, {{2609037517200990566ull, 353817630432410ull}}, {{2087230013760792453ull, 283054104345928ull}}, {{18096963280984909217ull, 452886566953484ull}}, {{18166919439529837697ull, 362309253562787ull}}, {{7154837922140049511ull, 289847402850230ull}}, {{11447740675424079218ull, 463755844560368ull}}, {{16536890169823084021ull, 371004675648294ull}}, {{16918860950600377540ull, 296803740518635ull}}, {{8623433447251052448ull, 474885984829817ull}}, {{17966793202026572928ull, 379908787863853ull}}, {{3305388117395527373ull, 303927030291083ull}}, {{1599272173090933473ull, 486283248465733ull}}, {{8658115367956567425ull, 389026598772586ull}}, {{3237143479623343617ull, 311221279018069ull}}, {{12558127196881170433ull, 497954046428910ull}}, {{10046501757504936346ull, 398363237143128ull}}, {{15415899035487769723ull, 318690589714502ull}}, {{9908043197812790265ull, 509904943543204ull}}, {{11615783372992142535ull, 407923954834563ull}}, {{16671324327877534674ull, 326339163867650ull}}, {{8227374850894503863ull, 522142662188241ull}}, {{2892551065973692767ull, 417714129750593ull}}, {{9692738482262774860ull, 334171303800474ull}}, {{4440335127394708807ull, 534674086080759ull}}, {{7241616916657677369ull, 427739268864607ull}}, {{16861339977551872864ull, 342191415091685ull}}, {{8531399890373444967ull, 547506264146697ull}}, {{17893166356524486943ull, 438005011317357ull}}, {{6935835455735768908ull, 350404009053886ull}}, {{3718639099693409607ull, 560646414486218ull}}, {{10353608909238548332ull, 448517131588974ull}}, {{11972235942132748989ull, 358813705271179ull}}, {{13267137568448109514ull, 287050964216943ull}}, {{17538071294775064900ull, 459281542747109ull}}, {{17719805850561962243ull, 367425234197687ull}}, {{6797147050965749148ull, 293940187358150ull}}, {{10875435281545198637ull, 470304299773040ull}}, {{8700348225236158909ull, 376243439818432ull}}, {{18028325024414658097ull, 300994751854745ull}}, {{10398575965353901339ull, 481591602967593ull}}, {{15697558401766941718ull, 385273282374074ull}}, {{16247395536155463697ull, 308218625899259ull}}, {{14927786413623010946ull, 493149801438815ull}}, {{11942229130898408757ull, 394519841151052ull}}, {{2175085675234906359ull, 315615872920842ull}}, {{7169485895117760498ull, 504985396673347ull}}, {{16803635160319939368ull, 403988317338677ull}}, {{6064210498772130848ull, 323190653870942ull}}, {{13392085612777319680ull, 517105046193507ull}}, {{3334970860738035098ull, 413684036954806ull}}, {{17425371947558069371ull, 330947229563844ull}}, {{16812548671867180024ull, 529515567302151ull}}, {{9760690122751833696ull, 423612453841721ull}}, {{4119203283459556633ull, 338889963073377ull}}, {{10280074068277200937ull, 542223940917403ull}}, {{15602756884105581396ull, 433779152733922ull}}, {{5103507877800644470ull, 347023322187138ull}}, {{4476263789739120829ull, 555237315499421ull}}, {{18338406290758937956ull, 444189852399536ull}}, {{10981376217865240042ull, 355351881919629ull}}, {{12474449789034102356ull, 284281505535703ull}}, {{16269770847712653447ull, 454850408857125ull}}, {{13015816678170122758ull, 363880327085700ull}}, {{10412653342536098206ull, 291104261668560ull}}, {{16660245348057757130ull, 465766818669696ull}}, {{9638847463704295381ull, 372613454935757ull}}, {{332380341479615658ull, 298090763948606ull}}, {{11599854990593116023ull, 476945222317769ull}}, {{12969232807216403141ull, 381556177854215ull}}, {{10375386245773122513ull, 305244942283372ull}}, {{1843222734269354728ull, 488391907653396ull}}, {{16231973446383125075ull, 390713526122716ull}}, {{9296229942364589737ull, 312570820898173ull}}, {{11184619093041433256ull, 500113313437077ull}}, {{1568997644949325959ull, 400090650749662ull}}, {{12323244560185191736ull, 320072520599729ull}}, {{8649144852070575809ull, 512116032959567ull}}, {{17987362325882191617ull, 409692826367653ull}}, {{3321843416480022324ull, 327754261094123ull}}, {{1625600651626125395ull, 524406817750597ull}}, {{12368526965526631285ull, 419525454200477ull}}, {{2516123942937484382ull, 335620363360382ull}}, {{7715147123441885334ull, 536992581376611ull}}, {{2482768884011597944ull, 429594065101289ull}}, {{5675563921951188678ull, 343675252081031ull}}, {{1702204645638081239ull, 549880403329650ull}}, {{1361763716510464991ull, 439904322663720ull}}, {{1089410973208371993ull, 351923458130976ull}}, {{15628924037534338887ull, 281538766504780ull}}, {{6559534386345390604ull, 450462026407649ull}}, {{8936976323818222806ull, 360369621126119ull}}, {{10838929873796488568ull, 288295696900895ull}}, {{17342287798074381709ull, 461273115041432ull}}, {{6495132608975684721ull, 369018492033146ull}}, {{1506757272438637453ull, 295214793626517ull}}, {{6100160450643730249ull, 472343669802427ull}}, {{15948174804740715168ull, 377874935841941ull}}, {{9069191029050661811ull, 302299948673553ull}}, {{10821356831739148575ull, 483679917877685ull}}, {{8657085465391318860ull, 386943934302148ull}}, {{14304366001796875735ull, 309555147441718ull}}, {{750892714423539236ull, 495288235906750ull}}, {{600714171538831389ull, 396230588725400ull}}, {{480571337231065111ull, 316984470980320ull}}, {{768914139569704178ull, 507175153568512ull}}, {{11683177755881494312ull, 405740122854809ull}}, {{13035891019447105773ull, 324592098283847ull}}, {{6100030372147727944ull, 519347357254156ull}}, {{1190675482976272032ull, 415477885803325ull}}, {{952540386381017625ull, 332382308642660ull}}, {{1524064618209628201ull, 531811693828256ull}}, {{15976646953535343853ull, 425449355062604ull}}, {{16470666377570185406ull, 340359484050083ull}}, {{4216973315660834710ull, 544575174480134ull}}, {{7062927467270578091ull, 435660139584107ull}}, {{16718388418042193443ull, 348528111667285ull}}, {{8302677395157957892ull, 557644978667657ull}}, {{17710188360352097283ull, 446115982934125ull}}, {{14168150688281677827ull, 356892786347300ull}}, {{11334520550625342261ull, 285514229077840ull}}, {{18135232881000547618ull, 456822766524544ull}}, {{18197535119542348418ull, 365458213219635ull}}, {{14558028095633878734ull, 292366570575708ull}}, {{1156752064562744035ull, 467786512921134ull}}, {{4614750466392105551ull, 374229210336907ull}}, {{14759846817339415411ull, 299383368269525ull}}, {{5169010834033513041ull, 479013389231241ull}}, {{445859852484900110ull, 383210711384993ull}}, {{7735385511471740734ull, 306568569107994ull}}, {{1308570374129054205ull, 490509710572791ull}}, {{15804251558270884657ull, 392407768458232ull}}, {{5264703617132887079ull, 313926214766586ull}}, {{1044828157928798680ull, 502281943626538ull}}, {{8214560155826859591ull, 401825554901230ull}}, {{6571648124661487672ull, 321460443920984ull}}, {{17893334628942200923ull, 514336710273574ull}}, {{18004016517895671061ull, 411469368218859ull}}, {{18092562029058447172ull, 329175494575087ull}}, {{14190703987525874183ull, 526680791320140ull}}, {{11352563190020699346ull, 421344633056112ull}}, {{1703352922532738830ull, 337075706444890ull}}, {{2725364676052382129ull, 539321130311824ull}}, {{5869640555583816026ull, 431456904249459ull}}, {{8385061259208963144ull, 345165523399567ull}}, {{17105446829476251354ull, 552264837439307ull}}, {{6305659834097180437ull, 441811869951446ull}}, {{1355179052535834026ull, 353449495961157ull}}, {{12152189686254398190ull, 282759596768925ull}}, {{996759424297485489ull, 452415354830281ull}}, {{15554802798405629684ull, 361932283864224ull}}, {{16133191053466414070ull, 289545827091379ull}}, {{14745059241320531543ull, 463273323346207ull}}, {{4417349763572604588ull, 370618658676966ull}}, {{18291275069825724963ull, 296494926941572ull}}, {{14508644852753518648ull, 474391883106516ull}}, {{7917567067460904595ull, 379513506485213ull}}, {{13712751283452544323ull, 303610805188170ull}}, {{3493657979814519300ull, 485777288301073ull}}, {{10173624013335436087ull, 388621830640858ull}}, {{15517596840152169516ull, 310897464512686ull}}, {{17449457314759650579ull, 497435943220298ull}}, {{2891519407581989493ull, 397948754576239ull}}, {{6002564340807501918ull, 318359003660991ull}}, {{2225405315808182422ull, 509374405857586ull}}, {{16537719511614187231ull, 407499524686068ull}}, {{2162129165065618815ull, 325999619748855ull}}, {{3459406664104990104ull, 521599391598168ull}}, {{10146222960767812729ull, 417279513278534ull}}, {{11806327183356160507ull, 333823610622827ull}}, {{4132728234402215518ull, 534117776996524ull}}, {{6995531402263682738ull, 427294221597219ull}}, {{9285773936552856513ull, 341835377277775ull}}, {{14857238298484570421ull, 546936603644440ull}}, {{11885790638787656337ull, 437549282915552ull}}, {{2129934881546304423ull, 350039426332442ull}}, {{7097244625215997401ull, 560063082131907ull}}, {{16745842144398528890ull, 448050465705525ull}}, {{13396673715518823112ull, 358440372564420ull}}, {{10717338972415058489ull, 286752298051536ull}}, {{9769044726380272937ull, 458803676882458ull}}, {{15193933410588038996ull, 367042941505966ull}}, {{8465797913728520873ull, 293634353204773ull}}, {{9855927847223723074ull, 469814965127637ull}}, {{506044648295157813ull, 375851972102110ull}}, {{404835718636126250ull, 300681577681688ull}}, {{15405132408785443294ull, 481090524290700ull}}, {{12324105927028354635ull, 384872419432560ull}}, {{9859284741622683708ull, 307897935546048ull}}, {{12085506771854383610ull, 492636696873677ull}}, {{2289707787999686241ull, 394109357498942ull}}, {{12899812674625479962ull, 315287485999153ull}}, {{16950351464658857617ull, 504459977598645ull}}, {{13560281171727086093ull, 403567982078916ull}}, {{7158876122639758551ull, 322854385663133ull}}, {{7764852981481703359ull, 516567017061013ull}}, {{13590580014669183334ull, 413253613648810ull}}, {{10872464011735346667ull, 330602890919048ull}}, {{13706593604034644344ull, 528964625470477ull}}, {{3586577253743894829ull, 423171700376382ull}}, {{13937308247220846833ull, 338537360301105ull}}, {{3852949121843803316ull, 541659776481769ull}}, {{6771708112216952976ull, 433327821185415ull}}, {{5417366489773562381ull, 346662256948332ull}}, {{12357135198379610133ull, 554659611117331ull}}, {{6196359343961777783ull, 443727688893865ull}}, {{4957087475169422226ull, 354982151115092ull}}, {{15033716424361268751ull, 283985720892073ull}}, {{1917853390526568062ull, 454377153427318ull}}, {{8912980341905075096ull, 363501722741854ull}}, {{10819733088265970400ull, 290801378193483ull}}, {{13622224126483642317ull, 465282205109573ull}}, {{18276476930670734500ull, 372225764087658ull}}, {{3553135100310856630ull, 297780611270127ull}}, {{9374364975239280932ull, 476448978032203ull}}, {{14878189609675245392ull, 381159182425762ull}}, {{4523854058256375667ull, 304927345940610ull}}, {{7238166493210201067ull, 487883753504976ull}}, {{2101184379826250531ull, 390307002803981ull}}, {{16438342762828641717ull, 312245602243184ull}}, {{15233301976300095778ull, 499592963589095ull}}, {{12186641581040076622ull, 399674370871276ull}}, {{6059964450090150975ull, 319739496697021ull}}, {{2317245490660420913ull, 511583194715234ull}}, {{5543145207270247054ull, 409266555772187ull}}, {{15502562610041928612ull, 327413244617749ull}}, {{13736053731841354811ull, 523861191388399ull}}, {{14678191800214994172ull, 419088953110719ull}}, {{15431902254913905660ull, 335271162488575ull}}, {{6244299534152697441ull, 536433859981721ull}}, {{1306090812580247629ull, 429147087985377ull}}, {{12112919094289929073ull, 343317670388301ull}}, {{12001972921380065871ull, 549308272621282ull}}, {{2222880707620232050ull, 439446618097026ull}}, {{16535699825063826933ull, 351557294477620ull}}, {{8010375646392571477ull, 562491671164193ull}}, {{13786998146597877828ull, 449993336931354ull}}, {{14718947332020212585ull, 359994669545083ull}}, {{707111421390439099ull, 287995735636067ull}}, {{4820727088966612881ull, 460793177017707ull}}, {{14924628115399021274ull, 368634541614165ull}}, {{11939702492319217019ull, 294907633291332ull}}, {{4346128728743105939ull, 471852213266132ull}}, {{14544949427220215720ull, 377481770612905ull}}, {{11635959541776172576ull, 301985416490324ull}}, {{7549488822616145153ull, 483176666384519ull}}, {{9728939872834826445ull, 386541333107615ull}}, {{7783151898267861156ull, 309233066486092ull}}, {{16142391851970488173ull, 494772906377747ull}}, {{5535215852092569892ull, 395818325102198ull}}, {{11806870311157876560ull, 316654660081758ull}}, {{15201643683110692173ull, 506647456130813ull}}, {{1093268502262822769ull, 405317964904651ull}}, {{15632010060777899508ull, 324254371923720ull}}, {{6564472023535087597ull, 518806995077953ull}}, {{12630275248311890724ull, 415045596062362ull}}, {{2725522569165691932ull, 332036476849890ull}}, {{4360836110665107092ull, 531258362959824ull}}, {{7178017703273995997ull, 425006690367859ull}}, {{9431762977361107120ull, 340005352294287ull}}, {{333425504810130100ull, 544008563670860ull}}, {{266740403848104080ull, 435206850936688ull}}, {{7592089952562303910ull, 348165480749350ull}}, {{12147343924099686257ull, 557064769198960ull}}, {{9717875139279749005ull, 445651815359168ull}}, {{15152997740907619851ull, 356521452287334ull}}, {{15811747007468006204ull, 285217161829867ull}}, {{10541399952981168633ull, 456347458927788ull}}, {{15811817591868755553ull, 365077967142230ull}}, {{12649454073495004442ull, 292062373713784ull}}, {{9171080073366276138ull, 467299797942055ull}}, {{7336864058693020911ull, 373839838353644ull}}, {{9558840061696327052ull, 299071870682915ull}}, {{15294144098714123283ull, 478514993092664ull}}, {{15924664093713208949ull, 382811994474131ull}}, {{9050382460228656836ull, 306249595579305ull}}, {{14480611936365850938ull, 489999352926888ull}}, {{516443104866949781ull, 391999482341511ull}}, {{15170549742861201117ull, 313599585873208ull}}, {{2136786700126459849ull, 501759337397134ull}}, {{5398778174843078202ull, 401407469917707ull}}, {{15387068984100193531ull, 321125975934165ull}}, {{6172566300850758034ull, 513801561494665ull}}, {{4938053040680606427ull, 411041249195732ull}}, {{15018488876770216111ull, 328832999356585ull}}, {{5582838129122794162ull, 526132798970537ull}}, {{15534316947523966299ull, 420906239176429ull}}, {{16116802372761083363ull, 336724991341143ull}}, {{3650790907966271441ull, 538759986145830ull}}, {{2920632726373017153ull, 431007988916664ull}}, {{6025854995840324045ull, 344806391133331ull}}, {{2262670363860697827ull, 551690225813330ull}}, {{1810136291088558261ull, 441352180650664ull}}, {{5137457847612756932ull, 353081744520531ull}}, {{420617463348295222ull, 282465395616425ull}}, {{672987941357272356ull, 451944632986280ull}}, {{538390353085817885ull, 361555706389024ull}}, {{4120061097210564631ull, 289244565111219ull}}, {{13970795385020724056ull, 462791304177950ull}}, {{11176636308016579245ull, 370233043342360ull}}, {{8941309046413263396ull, 296186434673888ull}}, {{10616745659519311110ull, 473898295478221ull}}, {{4804047712873538565ull, 379118636382577ull}}, {{14911284614524561821ull, 303294909106061ull}}, {{16479357753755478268ull, 485271854569698ull}}, {{2115439758778651645ull, 388217483655759ull}}, {{5381700621764831639ull, 310573986924607ull}}, {{12300069809565640946ull, 496918379079371ull}}, {{6150707032910602433ull, 397534703263497ull}}, {{15988612070554212916ull, 318027762610797ull}}, {{10824384053919099374ull, 508844420177276ull}}, {{4970158428393369176ull, 407075536141821ull}}, {{286777927972785017ull, 325660428913457ull}}, {{4148193499498366351ull, 521056686261531ull}}, {{18075950058566334373ull, 416845349009224ull}}, {{18150108861594977822ull, 333476279207379ull}}, {{17972127734326233546ull, 533562046731807ull}}, {{6999004557977166190ull, 426849637385446ull}}, {{1909854831639822629ull, 341479709908357ull}}, {{6745116545365626529ull, 546367535853371ull}}, {{1706744421550590900ull, 437094028682697ull}}, {{12433441981466203690ull, 349675222946157ull}}, {{5136111911378284611ull, 559480356713852ull}}, {{15176935973328358658ull, 447584285371081ull}}, {{8452199963920776603ull, 358067428296865ull}}, {{6761759971136621283ull, 286453942637492ull}}, {{14508164768560504376ull, 458326308219987ull}}, {{4227834185364582854ull, 366661046575990ull}}, {{3382267348291666283ull, 293328837260792ull}}, {{9100976572008576376ull, 469326139617267ull}}, {{18348827701832592071ull, 375460911693813ull}}, {{3611015717240342687ull, 300368729355051ull}}, {{16845671591810279269ull, 480589966968081ull}}, {{9787188458706313092ull, 384471973574465ull}}, {{7829750766965050473ull, 307577578859572ull}}, {{16216950041885991081ull, 492124126175315ull}}, {{12973560033508792865ull, 393699300940252ull}}, {{3000150397323213645ull, 314959440752202ull}}, {{8489589450459052156ull, 503935105203523ull}}, {{14170369189851062371ull, 403148084162818ull}}, {{268248907655118927ull, 322518467330255ull}}, {{429198252248190284ull, 516029547728408ull}}, {{7722056231282372873ull, 412823638182726ull}}, {{2488296170283987975ull, 330258910546181ull}}, {{15049320316680111730ull, 528414256873889ull}}, {{15728805068085999707ull, 422731405499111ull}}, {{8893695239726889443ull, 338185124399289ull}}, {{3161865939337292139ull, 541096199038863ull}}, {{9908190380953654357ull, 432876959231090ull}}, {{7926552304762923486ull, 346301567384872ull}}, {{16371832502362587901ull, 554082507815795ull}}, {{13097466001890070320ull, 443266006252636ull}}, {{6788623986770145933ull, 354612805002109ull}}, {{9120248004158027070ull, 283690244001687ull}}, {{18281745621394753635ull, 453904390402699ull}}, {{18314745311857713231ull, 363123512322159ull}}, {{18341145064228080908ull, 290498809857727ull}}, {{14588436843797288160ull, 464798095772364ull}}, {{15360098289779740851ull, 371838476617891ull}}, {{8598729817081882358ull, 297470781294313ull}}, {{10068618892589101449ull, 475953250070901ull}}, {{4365546299329370836ull, 380762600056721ull}}, {{18249832298431137962ull, 304610080045376ull}}, {{3374289974296448476ull, 487376128072603ull}}, {{10078129608920979427ull, 389900902458082ull}}, {{683806057652962895ull, 311920721966466ull}}, {{12162136136470471603ull, 499073155146345ull}}, {{9729708909176377282ull, 399258524117076ull}}, {{4094418312599191502ull, 319406819293661ull}}, {{17619115744384437374ull, 511050910869857ull}}, {{6716594966023729252ull, 408840728695886ull}}, {{1683927158077073079ull, 327072582956709ull}}, {{10072981082407137572ull, 523316132730734ull}}, {{11747733680667620381ull, 418652906184587ull}}, {{2019489315050275658ull, 334922324947670ull}}, {{3231182904080441054ull, 535875719916272ull}}, {{13652992767490083812ull, 428700575933017ull}}, {{3543696584508246403ull, 342960460746414ull}}, {{13048612164697014892ull, 548736737194262ull}}, {{3060192102273791267ull, 438989389755410ull}}, {{2448153681819033014ull, 351191511804328ull}}, {{227697076168542499ull, 561906418886925ull}}, {{182157660934833999ull, 449525135109540ull}}, {{145726128747867199ull, 359620108087632ull}}, {{11184627347224024729ull, 287696086470105ull}}, {{17895403755558439566ull, 460313738352168ull}}, {{3248276560221020683ull, 368250990681735ull}}, {{2598621248176816547ull, 294600792545388ull}}, {{468445182340996152ull, 471361268072621ull}}, {{15132151404840438214ull, 377089014458096ull}}, {{8416372309130440248ull, 301671211566477ull}}, {{17155544509350614720ull, 482673938506363ull}}, {{2656389163254760807ull, 386139150805091ull}}, {{16882506589571449938ull, 308911320644072ull}}, {{12254615284346678608ull, 494258113030516ull}}, {{6114343412735432563ull, 395406490424413ull}}, {{12270172359672166697ull, 316325192339530ull}}, {{1185531701765915099ull, 506120307743249ull}}, {{4637774176154642403ull, 404896246194599ull}}, {{7399568155665624245ull, 323916996955679ull}}, {{771262604839267823ull, 518267195129087ull}}, {{11685056528097145228ull, 414613756103269ull}}, {{13037394037219626505ull, 331691004882615ull}}, {{2413086385841850793ull, 530705607812185ull}}, {{1930469108673480634ull, 424564486249748ull}}, {{8923072916422605154ull, 339651588999798ull}}, {{10587567851534257923ull, 543442542399677ull}}, {{1091356651743585692ull, 434754033919742ull}}, {{11941131765620599523ull, 347803227135793ull}}, {{15416462010251048914ull, 556485163417269ull}}, {{16022518422942749454ull, 445188130733815ull}}, {{12818014738354199563ull, 356150504587052ull}}, {{2875714161199539004ull, 284920403669642ull}}, {{8290491472661172730ull, 455872645871427ull}}, {{17700439622354669154ull, 364698116697141ull}}, {{10471002883141825000ull, 291758493357713ull}}, {{13064255798285009676ull, 466813589372341ull}}, {{6762055823886097418ull, 373450871497873ull}}, {{12788342288592698581ull, 298760697198298ull}}, {{16771998847006407406ull, 478017115517277ull}}, {{6038901448121305278ull, 382413692413822ull}}, {{15899167602722775192ull, 305930953931057ull}}, {{10681272905388799015ull, 489489526289692ull}}, {{1166320694827218565ull, 391591621031754ull}}, {{4622405370603685175ull, 313273296825403ull}}, {{3706499778223985958ull, 501237274920645ull}}, {{2965199822579188766ull, 400989819936516ull}}, {{17129555117030992306ull, 320791855949212ull}}, {{12649892928281946397ull, 513266969518740ull}}, {{10119914342625557117ull, 410613575614992ull}}, {{717233844616625047ull, 328490860491994ull}}, {{8526271780870420722ull, 525585376787190ull}}, {{6821017424696336578ull, 420468301429752ull}}, {{16524860383982800232ull, 336374641143801ull}}, {{614334911179108109ull, 538199425830083ull}}, {{7870165558427107133ull, 430559540664066ull}}, {{2606783631999775383ull, 344447632531253ull}}, {{481504996457730290ull, 551116212050005ull}}, {{385203997166184232ull, 440892969640004ull}}, {{3997512012474857709ull, 352714375712003ull}}, {{10576707239463706813ull, 282171500569602ull}}, {{2165336324174289609ull, 451474400911364ull}}, {{5421617874081342010ull, 361179520729091ull}}, {{647945484523163285ull, 288943616583273ull}}, {{15794108034204702549ull, 462309786533236ull}}, {{8945937612621851716ull, 369847829226589ull}}, {{10846098904839391696ull, 295878263381271ull}}, {{9975060618259206067ull, 473405221410034ull}}, {{11669397309349275177ull, 378724177128027ull}}, {{1956820217995599495ull, 302979341702422ull}}, {{6820261163534869515ull, 484766946723875ull}}, {{5456208930827895612ull, 387813557379100ull}}, {{4364967144662316490ull, 310250845903280ull}}, {{6983947431459706384ull, 496401353445248ull}}, {{12965855574651585753ull, 397121082756198ull}}, {{17751382089205089249ull, 317696866204958ull}}, {{6266118454276680859ull, 508314985927934ull}}, {{8702243578163255011ull, 406651988742347ull}}, {{18029841306756334978ull, 325321590993877ull}}, {{14090350831842494672ull, 520514545590204ull}}, {{14961629480215906061ull, 416411636472163ull}}, {{901257139946993879ull, 333129309177731ull}}, {{12510057868140921176ull, 533006894684369ull}}, {{13697395109254647264ull, 426405515747495ull}}, {{10957916087403717811ull, 341124412597996ull}}, {{10153968110362127852ull, 545799060156794ull}}, {{11812523303031612605ull, 436639248125435ull}}, {{9450018642425290084ull, 349311398500348ull}}, {{11430681013138553811ull, 558898237600557ull}}, {{1765847181027022402ull, 447118590080446ull}}, {{16170073003789259214ull, 357694872064356ull}}, {{9246709588289497048ull, 286155897651485ull}}, {{14794735341263195277ull, 457849436242376ull}}, {{8146439458268645899ull, 366279548993901ull}}, {{2827802751873006396ull, 293023639195121ull}}, {{15592530847222541203ull, 468837822712193ull}}, {{1405978233552301993ull, 375070258169755ull}}, {{1124782586841841594ull, 300056206535804ull}}, {{9178349768430767197ull, 480089930457286ull}}, {{3653331000002703434ull, 384071944365829ull}}, {{6612013614744073071ull, 307257555492663ull}}, {{6889872968848606590ull, 491612088788261ull}}, {{1822549560336974949ull, 393289671030609ull}}, {{5147388463011490282ull, 314631736824487ull}}, {{11925170355560294775ull, 503410778919179ull}}, {{13229485099190146143ull, 402728623135343ull}}, {{17962285708835937561ull, 322182898508274ull}}, {{17671610689911769128ull, 515492637613239ull}}, {{17826637366671325625ull, 412394110090591ull}}, {{10571961078595150177ull, 329915288072473ull}}, {{13225788911010329960ull, 527864460915957ull}}, {{3201933499324443322ull, 422291568732766ull}}, {{17318942058427195950ull, 337833254986212ull}}, {{12952912034515872228ull, 540533207977940ull}}, {{10362329627612697782ull, 432426566382352ull}}, {{911166072606337579ull, 345941253105882ull}}, {{5147214530912050450ull, 553506004969411ull}}, {{428422809987730037ull, 442804803975529ull}}, {{4032087062732094352ull, 354243843180423ull}}, {{10604367279669496128ull, 283395074544338ull}}, {{13277638832729283482ull, 453432119270941ull}}, {{6932762251441516463ull, 362745695416753ull}}, {{12924907430637033816ull, 290196556333402ull}}, {{5922456630051612814ull, 464314490133444ull}}, {{8427314118783200574ull, 371451592106755ull}}, {{6741851295026560459ull, 297161273685404ull}}, {{18165659701526317381ull, 475458037896646ull}}, {{10843178946479143582ull, 380366430317317ull}}, {{1295845527699494219ull, 304293144253854ull}}, {{9452050473803011397ull, 486869030806166ull}}, {{3872291564300498794ull, 389495224644933ull}}, {{10476530880924219682ull, 311596179715946ull}}, {{9383751779994930845ull, 498553887545514ull}}, {{11196350238737854999ull, 398843110036411ull}}, {{5267731376248373676ull, 319074488029129ull}}, {{15807067831481218528ull, 510519180846606ull}}, {{8956305450443064499ull, 408415344677285ull}}, {{7165044360354451599ull, 326732275741828ull}}, {{7774722161825212236ull, 522771641186925ull}}, {{6219777729460169788ull, 418217312949540ull}}, {{4975822183568135831ull, 334573850359632ull}}, {{11650664308450927653ull, 535318160575411ull}}, {{5631182632018831799ull, 428254528460329ull}}, {{8194294920356975762ull, 342603622768263ull}}, {{9421523057829250896ull, 548165796429221ull}}, {{3847869631521490394ull, 438532637143377ull}}, {{14146342149442923285ull, 350826109714701ull}}, {{15255449809624856609ull, 561321775543522ull}}, {{4825662218216064641ull, 449057420434818ull}}, {{11239227404056672359ull, 359245936347854ull}}, {{12680730737987248210ull, 287396749078283ull}}, {{16599820366037686814ull, 459834798525253ull}}, {{2211809848604418481ull, 367867838820203ull}}, {{9148145508367355431ull, 294294271056162ull}}, {{18326381628129679013ull, 470870833689859ull}}, {{18350454117245653534ull, 376696666951887ull}}, {{7301665664312702181ull, 301357333561510ull}}, {{11682665062900323489ull, 482171733698416ull}}, {{5656783235578348468ull, 385737386958733ull}}, {{11904124217946499421ull, 308589909566986ull}}, {{11667901119230578427ull, 493743855307178ull}}, {{16713018524868283388ull, 394995084245742ull}}, {{5991717190410806064ull, 315996067396594ull}}, {{16965445134141110349ull, 505593707834550ull}}, {{13572356107312888279ull, 404474966267640ull}}, {{10857884885850310623ull, 323579973014112ull}}, {{2615220558392855705ull, 517727956822580ull}}, {{2092176446714284564ull, 414182365458064ull}}, {{5363089972113337974ull, 331345892366451ull}}, {{1202246325897520112ull, 530153427786322ull}}, {{12029843504943747059ull, 424122742229057ull}}, {{2245177174471177001ull, 339298193783246ull}}, {{14660329923379614171ull, 542877110053193ull}}, {{660217494477960367ull, 434301688042555ull}}, {{528173995582368294ull, 347441350434044ull}}, {{8223776022415609917ull, 555906160694470ull}}, {{6579020817932487933ull, 444724928555576ull}}, {{1573867839604080023ull, 355779942844461ull}}, {{16016489530650905311ull, 284623954275568ull}}, {{3490290360589986559ull, 455398326840910ull}}, {{2792232288471989247ull, 364318661472728ull}}, {{9612483460261412044ull, 291454929178182ull}}, {{622578277450617978ull, 466327886685092ull}}, {{11566109066186225352ull, 373062309348073ull}}, {{16631584882432800928ull, 298449847478458ull}}, {{4474442923441019546ull, 477519755965534ull}}, {{7268903153494725960ull, 382015804772427ull}}, {{16883168967021511737ull, 305612643817941ull}}, {{1187628644041046518ull, 488980230108707ull}}, {{12018149359458568184ull, 391184184086965ull}}, {{9614519487566854547ull, 312947347269572ull}}, {{625835921139325982ull, 500715755631316ull}}, {{15258063995879102079ull, 400572604505052ull}}, {{4827753567219461016ull, 320458083604042ull}}, {{11413754522293047950ull, 512732933766467ull}}, {{1752305988350617713ull, 410186347013174ull}}, {{5091193605422404494ull, 328149077610539ull}}, {{15524607398159667837ull, 525038524176862ull}}, {{5040988289043913623ull, 420030819341490ull}}, {{4032790631235130898ull, 336024655473192ull}}, {{10141813824718119760ull, 537639448757107ull}}, {{734753430290675162ull, 430111559005686ull}}, {{15345198003200181422ull, 344089247204548ull}}, {{2416223916668828337ull, 550542795527278ull}}, {{9311676762818883316ull, 440434236421822ull}}, {{70643780771286006ull, 352347389137458ull}}, {{7435212654100849451ull, 281877911309966ull}}, {{4517642617077538476ull, 451004658095946ull}}, {{18371509352629672073ull, 360803726476756ull}}, {{11007858667361827335ull, 288642981181405ull}}, {{17612573867778923737ull, 461828769890248ull}}, {{3022012649997408020ull, 369463015912199ull}}, {{6106958934739836739ull, 295570412729759ull}}, {{17149831925067559429ull, 472912660367614ull}}, {{17409214354795957866ull, 378330128294091ull}}, {{10238022669094855970ull, 302664102635273ull}}, {{12691487455809859229ull, 484262564216437ull}}, {{2774492335164066736ull, 387410051373150ull}}, {{2219593868131253389ull, 309928041098520ull}}, {{3551350189010005423ull, 495884865757632ull}}, {{13909126595433735308ull, 396707892606105ull}}, {{11127301276346988246ull, 317366314084884ull}}, {{6735635597929450224ull, 507786102535815ull}}, {{5388508478343560179ull, 406228882028652ull}}, {{15378853226900579113ull, 324983105622921ull}}, {{17227467533557105935ull, 519972968996674ull}}, {{17471322841587595071ull, 415978375197339ull}}, {{17666407088011986380ull, 332782700157871ull}}, {{2440809637625805945ull, 532452320252595ull}}, {{1952647710100644756ull, 425961856202076ull}}, {{16319513427048157098ull, 340769484961660ull}}, {{7664477409567499741ull, 545231175938657ull}}, {{17199628371879730762ull, 436184940750925ull}}, {{13759702697503784610ull, 348947952600740ull}}, {{3568780242296503760ull, 558316724161185ull}}, {{2855024193837203008ull, 446653379328948ull}}, {{9662716984553583052ull, 357322703463158ull}}, {{15108871217126687088ull, 285858162770526ull}}, {{16795496317918878695ull, 457373060432842ull}}, {{6057699424851282309ull, 365898448346274ull}}, {{8535508354622936171ull, 292718758677019ull}}, {{2588766923170966904ull, 468350013883231ull}}, {{16828408797504414816ull, 374680011106584ull}}, {{17152075852745442176ull, 299744008885267ull}}, {{12685926105425066189ull, 479590414216428ull}}, {{17527438513823873597ull, 383672331373142ull}}, {{6643253181575278231ull, 306937865098514ull}}, {{18007902720004265817ull, 491100584157622ull}}, {{7027624546519592007ull, 392880467326098ull}}, {{13000797266699494252ull, 314304373860878ull}}, {{17111926811977280480ull, 502886998177405ull}}, {{13689541449581824384ull, 402309598541924ull}}, {{14640981974407369830ull, 321847678833539ull}}, {{12357524714826060759ull, 514956286133663ull}}, {{17264717401344669253ull, 411965028906930ull}}, {{13811773921075735403ull, 329572023125544ull}}, {{11030791829495445675ull, 527315237000871ull}}, {{5135284648854446217ull, 421852189600697ull}}, {{15176274163309287943ull, 337481751680557ull}}, {{9524643402327219416ull, 539970802688892ull}}, {{241017092377954886ull, 431976642151114ull}}, {{3882162488644274232ull, 345581313720891ull}}, {{17279506426056569741ull, 552930101953425ull}}, {{13823605140845255793ull, 442344081562740ull}}, {{11058884112676204634ull, 353875265250192ull}}, {{1468409660657143061ull, 283100212200154ull}}, {{9728153086535249544ull, 452960339520246ull}}, {{4093173654486289312ull, 362368271616197ull}}, {{14342585367814762419ull, 289894617292957ull}}, {{8190741329535978578ull, 463831387668732ull}}, {{17620639507854513832ull, 371065110134985ull}}, {{14096511606283611066ull, 296852088107988ull}}, {{418325681602315766ull, 474963340972782ull}}, {{11402706989507583582ull, 379970672778225ull}}, {{9122165591606066866ull, 303976538222580ull}}, {{14595464946569706985ull, 486362461156128ull}}, {{608325513030034619ull, 389089968924903ull}}, {{7865358039907848341ull, 311271975139922ull}}, {{16273921678594467669ull, 498035160223875ull}}, {{13019137342875574135ull, 398428128179100ull}}, {{10415309874300459308ull, 318742502543280ull}}, {{16664495798880734894ull, 509988004069248ull}}, {{2263550194878856945ull, 407990403255399ull}}, {{5500188970644995879ull, 326392322604319ull}}, {{16178999982515814053ull, 522227716166910ull}}, {{12943199986012651243ull, 417782172933528ull}}, {{17733257618293941640ull, 334225738346822ull}}, {{13615816930302665332ull, 534761181354916ull}}, {{7203304729500221942ull, 427808945083933ull}}, {{13141341413083998200ull, 342247156067146ull}}, {{13647448631450576474ull, 547595449707434ull}}, {{14607307719902371503ull, 438076359765947ull}}, {{4307148546438076556ull, 350461087812758ull}}, {{3202088859559012166ull, 560737740500413ull}}, {{9940368717131030379ull, 448590192400330ull}}, {{7952294973704824303ull, 358872153920264ull}}, {{10051184793705769766ull, 287097723136211ull}}, {{8703198040445410979ull, 459356357017938ull}}, {{14341256061840149429ull, 367485085614350ull}}, {{11473004849472119543ull, 293988068491480ull}}, {{18356807759155391270ull, 470380909586368ull}}, {{3617399763098582046ull, 376304727669095ull}}, {{2893919810478865637ull, 301043782135276ull}}, {{15698318140991915989ull, 481670051416441ull}}, {{8869305698051622468ull, 385336041133153ull}}, {{14474142187925118620ull, 308268832906522ull}}, {{8401232241712548500ull, 493230132650436ull}}, {{3031636978628128477ull, 394584106120349ull}}, {{6114658397644413105ull, 315667284896279ull}}, {{17162151065714881614ull, 505067655834046ull}}, {{10040372037829994968ull, 404054124667237ull}}, {{653600000780175328ull, 323243299733790ull}}, {{1045760001248280525ull, 517189279574064ull}}, {{4525956815740534743ull, 413751423659251ull}}, {{18378160711560069087ull, 331001138927400ull}}, {{10958313064786558924ull, 529601822283841ull}}, {{5077301637087336816ull, 423681457827073ull}}, {{11440538939153690099ull, 338945166261658ull}}, {{14615513487903993835ull, 542312266018653ull}}, {{624364346097464098ull, 433849812814923ull}}, {{7878189106361791925ull, 347079850251938ull}}, {{8915753755436956757ull, 555327760403101ull}}, {{3443254189607655082ull, 444262208322481ull}}, {{17511998610653765359ull, 355409766657984ull}}, {{17698947703264922610ull, 284327813326387ull}}, {{13560921066256234884ull, 454924501322220ull}}, {{10848736853004987907ull, 363939601057776ull}}, {{4989640667662080002ull, 291151680846221ull}}, {{604727438775507357ull, 465842689353954ull}}, {{4173130765762316209ull, 372674151483163ull}}, {{10717202242093673613ull, 298139321186530ull}}, {{17147523587349877782ull, 477022913898448ull}}, {{2649972425654171256ull, 381618331118759ull}}, {{5809326755265247328ull, 305294664895007ull}}, {{12984271623166306048ull, 488471463832011ull}}, {{6698068483791134515ull, 390777171065609ull}}, {{9047803601774817935ull, 312621736852487ull}}, {{18165834577581619020ull, 500194778963979ull}}, {{18222016476807205539ull, 400155823171183ull}}, {{3509566737220033461ull, 320124658536947ull}}, {{9304655594293963862ull, 512199453659115ull}}, {{7443724475435171089ull, 409759562927292ull}}, {{17023026024573867841ull, 327807650341833ull}}, {{5100748750866726606ull, 524492240546934ull}}, {{7769947815435291608ull, 419593792437547ull}}, {{17284004696573964256ull, 335675033950037ull}}, {{12897012255550701517ull, 537080054320060ull}}, {{10317609804440561214ull, 429664043456048ull}}, {{15632785473036269617ull, 343731234764838ull}}, {{2876363868406569449ull, 549969975623742ull}}, {{13369137538950986528ull, 439975980498993ull}}, {{18074007660644609869ull, 351980784399194ull}}, {{18148554943257598218ull, 281584627519355ull}}, {{10590943835502605534ull, 450535404030969ull}}, {{12162103883143994750ull, 360428323224775ull}}, {{9729683106515195800ull, 288342658579820ull}}, {{15567492970424313280ull, 461348253727712ull}}, {{5075296746855629978ull, 369078602982170ull}}, {{4060237397484503982ull, 295262882385736ull}}, {{17564426280200937341ull, 472420611817177ull}}, {{6672843394676929226ull, 377936489453742ull}}, {{16406321159967274351ull, 302349191562993ull}}, {{4114020967496177022ull, 483758706500790ull}}, {{3291216773996941618ull, 387006965200632ull}}, {{13701019863423284264ull, 309605572160505ull}}, {{3474887707767703206ull, 495368915456809ull}}, {{6469258980956072888ull, 396295132365447ull}}, {{16243453628990589280ull, 317036105892357ull}}, {{11232130547417301555ull, 507257769427772ull}}, {{1607006808450020598ull, 405806215542218ull}}, {{8664303076243837124ull, 324644972433774ull}}, {{2794838477764408430ull, 519431955894039ull}}, {{5925219596953437067ull, 415545564715231ull}}, {{1050826862820839330ull, 332436451772185ull}}, {{1681322980513342929ull, 531898322835496ull}}, {{16102453643378315636ull, 425518658268396ull}}, {{9192614099960742185ull, 340414926614717ull}}, {{18397531374679097820ull, 544663882583547ull}}, {{7339327470259457609ull, 435731106066838ull}}, {{13250159605691386734ull, 348584884853470ull}}, {{2753511295396667158ull, 557735815765553ull}}, {{9581506665801154373ull, 446188652612442ull}}, {{286507703157102852ull, 356950922089954ull}}, {{3918554977267592605ull, 285560737671963ull}}, {{2580339148886237845ull, 456897180275141ull}}, {{16821666578076631568ull, 365517744220112ull}}, {{6078635632977484608ull, 292414195376090ull}}, {{9725817012763975373ull, 467862712601744ull}}, {{11470002424953090622ull, 374290170081395ull}}, {{9176001939962472497ull, 299432136065116ull}}, {{7302905474456135350ull, 479091417704186ull}}, {{2152975564822997956ull, 383273134163349ull}}, {{5411729266600308688ull, 306618507330679ull}}, {{16037464456044314548ull, 490589611729086ull}}, {{9140622750093541315ull, 392471689383269ull}}, {{11001847014816743375ull, 313977351506615ull}}, {{17602955223706789400ull, 502363762410584ull}}, {{17771712993707341843ull, 401891009928467ull}}, {{6838672765482052828ull, 321512807942774ull}}, {{18320574054255105172ull, 514420492708438ull}}, {{3588412799178353168ull, 411536394166751ull}}, {{17628125498310323827ull, 329229115333400ull}}, {{9758256723586966507ull, 526766584533441ull}}, {{4117256564127662883ull, 421413267626753ull}}, {{10672502880785950952ull, 337130614101402ull}}, {{2318609350289880231ull, 539408982562244ull}}, {{5544236294973814508ull, 431527186049795ull}}, {{4435389035979051606ull, 345221748839836ull}}, {{18164668901792213540ull, 552354798143737ull}}, {{7153037491949950186ull, 441883838514990ull}}, {{5722429993559960148ull, 353507070811992ull}}, {{15645990439073699088ull, 282805656649593ull}}, {{2897491814066456602ull, 452489050639350ull}}, {{2317993451253165282ull, 361991240511480ull}}, {{1854394761002532225ull, 289592992409184ull}}, {{10345729247087872207ull, 463348787854694ull}}, {{11965932212412208089ull, 370679030283755ull}}, {{9572745769929766471ull, 296543224227004ull}}, {{4248346787661895384ull, 474469158763207ull}}, {{14466723874355247277ull, 379575327010565ull}}, {{11573379099484197821ull, 303660261608452ull}}, {{3760011300207075222ull, 485856418573524ull}}, {{6697357854907570501ull, 388685134858819ull}}, {{9047235098667966724ull, 310948107887055ull}}, {{14475576157868746758ull, 497516972619288ull}}, {{512414482069266437ull, 398013578095431ull}}, {{15167326844623054442ull, 318410862476344ull}}, {{13199676507171156138ull, 509457379962151ull}}, {{6870392390995014587ull, 407565903969721ull}}, {{1806965098054101346ull, 326052723175777ull}}, {{6580492971628472478ull, 521684357081243ull}}, {{12643092006786598628ull, 417347485664994ull}}, {{13803822420171189226ull, 333877988531995ull}}, {{3639371798564351146ull, 534204781651193ull}}, {{10290195068335301563ull, 427363825320954ull}}, {{11921504869410151573ull, 341891060256763ull}}, {{15385058976314332194ull, 547025696410821ull}}, {{8618698366309555432ull, 437620557128657ull}}, {{17963005137273375315ull, 350096445702925ull}}, {{10294064145927848889ull, 560154313124681ull}}, {{4545902502000368788ull, 448123450499745ull}}, {{3636722001600295030ull, 358498760399796ull}}, {{17666772860247877317ull, 286799008319836ull}}, {{2441394873203231445ull, 458878413311739ull}}, {{5642464713304495479ull, 367102730649391ull}}, {{824622955901686060ull, 293682184519513ull}}, {{16076791988410338989ull, 469891495231220ull}}, {{12861433590728271191ull, 375913196184976ull}}, {{6599798057840706629ull, 300730556947981ull}}, {{3180979263061309961ull, 481168891116770ull}}, {{2544783410449047969ull, 384935112893416ull}}, {{16793221987326879668ull, 307948090314732ull}}, {{12111759920755366176ull, 492716944503572ull}}, {{2310710307120472294ull, 394173555602858ull}}, {{9227265875180198482ull, 315338844482286ull}}, {{7384927770804496924ull, 504542151171658ull}}, {{13286639846127418186ull, 403633720937326ull}}, {{6939963062160024225ull, 322906976749861ull}}, {{3725243269972218115ull, 516651162799778ull}}, {{10358892245461595138ull, 413320930239822ull}}, {{908416166885455464ull, 330656744191858ull}}, {{16210861125984370035ull, 529050790706972ull}}, {{5589991271303675382ull, 423240632565578ull}}, {{11850690646526760952ull, 338592506052462ull}}, {{4203709775475176230ull, 541748009683940ull}}, {{3362967820380140984ull, 433398407747152ull}}, {{13758420700529843757ull, 346718726197721ull}}, {{14634775491363929365ull, 554749961916354ull}}, {{15397169207833053815ull, 443799969533083ull}}, {{1249688922040712082ull, 355039975626467ull}}, {{12067797581858300635ull, 284031980501173ull}}, {{15619127316231370693ull, 454451168801877ull}}, {{5116604223501275908ull, 363560935041502ull}}, {{15161329823026751696ull, 290848748033201ull}}, {{16879430087358982068ull, 465357996853122ull}}, {{6124846440403365008ull, 372286397482498ull}}, {{12278574781806512652ull, 297829117985998ull}}, {{15956370836148509921ull, 476526588777597ull}}, {{5386399039434987290ull, 381221271022078ull}}, {{11687816861031810479ull, 304977016817662ull}}, {{3943111718683255473ull, 487963226908260ull}}, {{3154489374946604378ull, 390370581526608ull}}, {{9902289129441104149ull, 312296465221286ull}}, {{8464964977621945992ull, 499674344354058ull}}, {{14150669611581377440ull, 399739475483246ull}}, {{7631186874523191629ull, 319791580386597ull}}, {{15899247813979016930ull, 511666528618555ull}}, {{12719398251183213544ull, 409333222894844ull}}, {{13864867415688481158ull, 327466578315875ull}}, {{3737043791392018237ull, 523946525305401ull}}, {{17747030292081255882ull, 419157220244320ull}}, {{14197624233665004706ull, 335325776195456ull}}, {{15337501144380186883ull, 536521241912730ull}}, {{12270000915504149506ull, 429216993530184ull}}, {{13505349547145229928ull, 343373594824147ull}}, {{6851164016464726593ull, 549397751718636ull}}, {{1791582398429870951ull, 439518201374909ull}}, {{5122614733485807084ull, 351614561099927ull}}, {{11885532388319201658ull, 562583297759883ull}}, {{16887123540139181972ull, 450066638207906ull}}, {{9820350017369435255ull, 360053310566325ull}}, {{7856280013895548204ull, 288042648453060ull}}, {{12570048022232877126ull, 460868237524896ull}}, {{6366689603044391378ull, 368694590019917ull}}, {{16161398126661244072ull, 294955672015933ull}}, {{3722144114206528576ull, 471929075225494ull}}, {{6667064106107133184ull, 377543260180395ull}}, {{5333651284885706547ull, 302034608144316ull}}, {{1155144426333309829ull, 483255373030906ull}}, {{15681510800034289156ull, 386604298424724ull}}, {{16234557454769341648ull, 309283438739779ull}}, {{14907245483405215667ull, 494853501983647ull}}, {{4547098757240351887ull, 395882801586918ull}}, {{11016376635276102156ull, 316706241269534ull}}, {{6558156172216032480ull, 506729986031255ull}}, {{5246524937772825984ull, 405383988825004ull}}, {{7886568764960171110ull, 324307191060003ull}}, {{8929161209194363454ull, 518891505696005ull}}, {{7143328967355490763ull, 415113204556804ull}}, {{9404011988626302933ull, 332090563645443ull}}, {{11357070367060174370ull, 531344901832709ull}}, {{12775005108390049819ull, 425075921466167ull}}, {{2841306457228219209ull, 340060737172934ull}}, {{11924787961048971381ull, 544097179476694ull}}, {{13229179183581087428ull, 435277743581355ull}}, {{10583343346864869942ull, 348222194865084ull}}, {{5865302910758060938ull, 557155511784135ull}}, {{4692242328606448751ull, 445724409427308ull}}, {{11132491492368979647ull, 356579527541846ull}}, {{5216644379153273394ull, 285263622033477ull}}, {{12035979821387147754ull, 456421795253563ull}}, {{17007481486593538850ull, 365137436202850ull}}, {{13605985189274831080ull, 292109948962280ull}}, {{3322832229130178112ull, 467375918339649ull}}, {{6347614598046052812ull, 373900734671719ull}}, {{8767440493178752573ull, 299120587737375ull}}, {{14027904789086004117ull, 478592940379800ull}}, {{11222323831268803294ull, 382874352303840ull}}, {{8977859065015042635ull, 306299481843072ull}}, {{18053923318765978539ull, 490079170948915ull}}, {{14443138655012782831ull, 392063336759132ull}}, {{4175813294526405618ull, 313650669407306ull}}, {{17749347715467979959ull, 501841071051689ull}}, {{17888826987116294291ull, 401472856841351ull}}, {{10621712774951125109ull, 321178285473081ull}}, {{9616042810437979529ull, 513885256756930ull}}, {{7692834248350383623ull, 411108205405544ull}}, {{9843616213422217221ull, 328886564324435ull}}, {{15749785941475547554ull, 526218502919096ull}}, {{8910479938438527720ull, 420974802335277ull}}, {{18196430394976553146ull, 336779841868221ull}}, {{3288846928769112771ull, 538847746989155ull}}, {{2631077543015290217ull, 431078197591324ull}}, {{5794210849154142496ull, 344862558073059ull}}, {{16649434988130448641ull, 551780092916894ull}}, {{17008896805246269236ull, 441424074333515ull}}, {{13607117444197015389ull, 353139259466812ull}}, {{3506996325873791664ull, 282511407573450ull}}, {{5611194121398066663ull, 452018252117520ull}}, {{4488955297118453331ull, 361614601694016ull}}, {{18348559496662403957ull, 289291681355212ull}}, {{14600299935692205039ull, 462866690168340ull}}, {{11680239948553764031ull, 370293352134672ull}}, {{1965494329359190578ull, 296234681707738ull}}, {{17902186185942346219ull, 473975490732380ull}}, {{14321748948753876975ull, 379180392585904ull}}, {{15146747973745011903ull, 303344314068723ull}}, {{2098703869540557106ull, 485350902509958ull}}, {{9057660725116266331ull, 388280722007966ull}}, {{3556779765351102741ull, 310624577606373ull}}, {{2001498809819854063ull, 496999324170197ull}}, {{12669245492081614220ull, 397599459336157ull}}, {{2756698764181470730ull, 318079567468926ull}}, {{15478764466916084137ull, 508927307950281ull}}, {{8693662758790956987ull, 407141846360225ull}}, {{6954930207032765589ull, 325713477088180ull}}, {{11127888331252424943ull, 521141563341088ull}}, {{16281008294485760601ull, 416913250672870ull}}, {{13024806635588608480ull, 333530600538296ull}}, {{13460992987457952923ull, 533648960861274ull}}, {{14458143204708272661ull, 426919168689019ull}}, {{15255863378508528452ull, 341535334951215ull}}, {{5962637331904093908ull, 546456535921945ull}}, {{4770109865523275126ull, 437165228737556ull}}, {{126739077676709777ull, 349732182990045ull}}, {{202782524282735644ull, 559571492784072ull}}, {{11230272463651919485ull, 447657194227257ull}}, {{1605520341437714941ull, 358125755381806ull}}, {{16041811532117813246ull, 286500604305444ull}}, {{14598852007162770224ull, 458400966888711ull}}, {{7989732790988305856ull, 366720773510969ull}}, {{10081135047532555008ull, 293376618808775ull}}, {{16129816076052088013ull, 469402590094040ull}}, {{12903852860841670410ull, 375522072075232ull}}, {{2944384659189515682ull, 300417657660186ull}}, {{15779061898928956060ull, 480668252256297ull}}, {{5244551889659344202ull, 384534601805038ull}}, {{11574339141211296008ull, 307627681444030ull}}, {{72198552228521997ull, 492204290310449ull}}, {{3747107656524727921ull, 393763432248359ull}}, {{6687034939961692660ull, 315010745798687ull}}, {{14388604718680618579ull, 504017193277899ull}}, {{15200232589686405186ull, 403213754622319ull}}, {{15849534886491034472ull, 322571003697855ull}}, {{6912511744676103539ull, 516113605916569ull}}, {{9219358210482793155ull, 412890884733255ull}}, {{7375486568386234524ull, 330312707786604ull}}, {{732732065192244269ull, 528500332458567ull}}, {{11654232096379526384ull, 422800265966853ull}}, {{16702083306587441754ull, 338240212773482ull}}, {{11965938031572265514ull, 541184340437572ull}}, {{2194052795773991764ull, 432947472350058ull}}, {{9133939866103014058ull, 346357977880046ull}}, {{7235606156281001846ull, 554172764608074ull}}, {{9477833739766711800ull, 443338211686459ull}}, {{11271615806555279763ull, 354670569349167ull}}, {{1638595015760403164ull, 283736455479334ull}}, {{10000449654700465709ull, 453978328766934ull}}, {{11689708538502282890ull, 363182663013547ull}}, {{1973069201318005666ull, 290546130410838ull}}, {{17914305981076450358ull, 464873808657340ull}}, {{14331444784861160287ull, 371899046925872ull}}, {{4086458198405107583ull, 297519237540698ull}}, {{2848984302706261810ull, 476030780065117ull}}, {{13347233886390740417ull, 380824624052093ull}}, {{18056484738596412980ull, 304659699241674ull}}, {{17822329137528529799ull, 487455518786679ull}}, {{17947212124764734162ull, 389964415029343ull}}, {{3289723255586056360ull, 311971532023475ull}}, {{5263557208937690176ull, 499154451237560ull}}, {{4210845767150152141ull, 399323560990048ull}}, {{10747374243203942359ull, 319458848792038ull}}, {{13506449974384397452ull, 511134158067261ull}}, {{7115811164765607638ull, 408907326453809ull}}, {{9381997746554396434ull, 327125861163047ull}}, {{253801135519393001ull, 523401377860876ull}}, {{14960436167383155694ull, 418721102288700ull}}, {{11968348933906524555ull, 334976881830960ull}}, {{702614220540887672ull, 535963010929537ull}}, {{11630137820658441107ull, 428770408743629ull}}, {{12993459071268663209ull, 343016326994903ull}}, {{17100185699287950811ull, 548826123191845ull}}, {{13680148559430360649ull, 439060898553476ull}}, {{7254770032802378196ull, 351248718842781ull}}, {{4228934422999984467ull, 561997950148450ull}}, {{3383147538399987574ull, 449598360118760ull}}, {{2706518030719990059ull, 359678688095008ull}}, {{9543912054059812693ull, 287742950476006ull}}, {{7891561657011879663ull, 460388720761610ull}}, {{6313249325609503730ull, 368310976609288ull}}, {{12429297089971423631ull, 294648781287430ull}}, {{1440131270244726193ull, 471438050059889ull}}, {{4841453830937691278ull, 377150440047911ull}}, {{183814250008242699ull, 301720352038329ull}}, {{7672800429497008965ull, 482752563261326ull}}, {{2448891528855696849ull, 386202050609061ull}}, {{16716508482052198772ull, 308961640487248ull}}, {{4610320682832056096ull, 494338624779598ull}}, {{11066954175749465523ull, 395470899823678ull}}, {{16232260970083393065ull, 316376719858942ull}}, {{11214222293165787611ull, 506202751774308ull}}, {{16350075464016450735ull, 404962201419446ull}}, {{9390711556471250265ull, 323969761135557ull}}, {{267743231386359131ull, 518351617816892ull}}, {{11282241029334818274ull, 414681294253513ull}}, {{16404490452951675266ull, 331745035402810ull}}, {{7800440651013128809ull, 530792056644497ull}}, {{17308398965036234017ull, 424633645315597ull}}, {{6468021542545166567ull, 339706916252478ull}}, {{6659485653330356185ull, 543531066003965ull}}, {{5327588522664284948ull, 434824852803172ull}}, {{15330117262357158928ull, 347859882242537ull}}, {{9770792360803812992ull, 556575811588060ull}}, {{7816633888643050393ull, 445260649270448ull}}, {{13632004740398260961ull, 356208519416358ull}}, {{18284301421802429415ull, 284966815533086ull}}, {{3429440571690514802ull, 455946904852939ull}}, {{6432901272094322165ull, 364757523882351ull}}, {{1456972202933547408ull, 291806019105881ull}}, {{13399201968919406823ull, 466889630569409ull}}, {{14408710389877435782ull, 373511704455527ull}}, {{4148270682418127979ull, 298809363564422ull}}, {{10326581906610915090ull, 478094981703075ull}}, {{8261265525288732072ull, 382475985362460ull}}, {{6609012420230985657ull, 305980788289968ull}}, {{6885071057627666729ull, 489569261263949ull}}, {{9197405660844043706ull, 391655409011159ull}}, {{11047273343417145288ull, 313324327208927ull}}, {{2918242090499791168ull, 501318923534284ull}}, {{6023942487141743258ull, 401055138827427ull}}, {{15887200433939125576ull, 320844111061941ull}}, {{18040823064818780275ull, 513350577699106ull}}, {{10743309637113113897ull, 410680462159285ull}}, {{8594647709690491117ull, 328544369727428ull}}, {{10062087520762875465ull, 525670991563885ull}}, {{8049670016610300372ull, 420536793251108ull}}, {{13818433642772060944ull, 336429434600886ull}}, {{14730796198951476864ull, 538287095361418ull}}, {{716590514935450521ull, 430629676289135ull}}, {{573272411948360417ull, 344503741031308ull}}, {{15674631118085017960ull, 551205985650092ull}}, {{5161007264984193722ull, 440964788520074ull}}, {{7818154626729265300ull, 352771830816059ull}}, {{9943872516125322563ull, 282217464652847ull}}, {{1152800766832874809ull, 451547943444556ull}}, {{15679635872433941140ull, 361238354755644ull}}, {{16233057512689063235ull, 288990683804515ull}}, {{7526147946592949560ull, 462385094087225ull}}, {{6020918357274359648ull, 369908075269780ull}}, {{4816734685819487718ull, 295926460215824ull}}, {{15085473126795000996ull, 473482336345318ull}}, {{1000332057210269827ull, 378785869076255ull}}, {{800265645768215862ull, 303028695261004ull}}, {{8659122662712966025ull, 484845912417606ull}}, {{3237949315428462497ull, 387876729934085ull}}, {{2590359452342769997ull, 310301383947268ull}}, {{455226309006521673ull, 496482214315629ull}}, {{4053529861947127662ull, 397185771452503ull}}, {{10621521519041522776ull, 317748617162002ull}}, {{2237039171498795148ull, 508397787459204ull}}, {{5478980151940946442ull, 406718229967363ull}}, {{11761881751036577800ull, 325374583973890ull}}, {{372266727948972864ull, 520599334358225ull}}, {{297813382359178291ull, 416479467486580ull}}, {{238250705887342633ull, 333183573989264ull}}, {{7759898758903568859ull, 533093718382822ull}}, {{17275965451348586057ull, 426474974706257ull}}, {{6442074731595048199ull, 341179979765006ull}}, {{2928621941068256472ull, 545887967624010ull}}, {{2342897552854605178ull, 436710374099208ull}}, {{9253015671767504788ull, 349368299279366ull}}, {{7426127445344187015ull, 558989278846986ull}}, {{2251553141533439289ull, 447191423077589ull}}, {{5490591327968661754ull, 357753138462071ull}}, {{703124247633019080ull, 286202510769657ull}}, {{4814347610954740852ull, 457924017231451ull}}, {{162129274021882358ull, 366339213785161ull}}, {{14887098678185147179ull, 293071371028128ull}}, {{1683264996644773548ull, 468914193645006ull}}, {{16104007256283460131ull, 375131354916004ull}}, {{16572554619768678428ull, 300105083932803ull}}, {{4379994503178423545ull, 480168134292486ull}}, {{18261390861510380129ull, 384134507433988ull}}, {{3541066244982573134ull, 307307605947191ull}}, {{16733752436197847984ull, 491692169515505ull}}, {{13387001948958278387ull, 393353735612404ull}}, {{14398950373908533033ull, 314682988489923ull}}, {{902227709802190913ull, 503492781583878ull}}, {{8100479797325573377ull, 402794225267102ull}}, {{17548430282086189671ull, 322235380213681ull}}, {{2252046748144531211ull, 515576608341891ull}}, {{16559032657483266262ull, 412461286673512ull}}, {{5868528496502792363ull, 329969029338810ull}}, {{9389645594404467781ull, 527950446942096ull}}, {{3822367660781663902ull, 422360357553677ull}}, {{14125940572851062091ull, 337888286042941ull}}, {{15222807287077878699ull, 540621257668706ull}}, {{8488897014920392636ull, 432497006134965ull}}, {{6791117611936314109ull, 345997604907972ull}}, {{14555136993840012897ull, 553596167852755ull}}, {{11644109595072010318ull, 442876934282204ull}}, {{13004636490799518577ull, 354301547425763ull}}, {{17782406822123435508ull, 283441237940610ull}}, {{10005106841687945197ull, 453505980704977ull}}, {{625387843866535511ull, 362804784563982ull}}, {{11568356719318959379ull, 290243827651185ull}}, {{62626677200783390ull, 464390124241897ull}}, {{11118147785986357682ull, 371512099393517ull}}, {{1515820599305265499ull, 297209679514814ull}}, {{9804010588372245445ull, 475535487223702ull}}, {{464510841213975709ull, 380428389778962ull}}, {{11439655117196911537ull, 304342711823169ull}}, {{7235401743289327490ull, 486948338917071ull}}, {{2098972579889551669ull, 389558671133657ull}}, {{12747224508137372304ull, 311646936906925ull}}, {{1948815139310244071ull, 498635099051081ull}}, {{16316447370415836550ull, 398908079240864ull}}, {{16742506711074579563ull, 319126463392691ull}}, {{962569034525955038ull, 510602341428307ull}}, {{11838101671846495000ull, 408481873142645ull}}, {{9470481337477196000ull, 326785498514116ull}}, {{7774072510479692954ull, 522856797622586ull}}, {{2529909193641844040ull, 418285438098069ull}}, {{5713276169655385555ull, 334628350478455ull}}, {{9141241871448616888ull, 535405360765528ull}}, {{14691691126642714157ull, 428324288612422ull}}, {{4374655271830350679ull, 342659430889938ull}}, {{3310099620186650764ull, 548255089423901ull}}, {{17405474955116961904ull, 438604071539120ull}}, {{13924379964093569523ull, 350883257231296ull}}, {{14900310313065890590ull, 561413211570074ull}}, {{15609597065194622795ull, 449130569256059ull}}, {{16177026466897608559ull, 359304455404847ull}}, {{5562923544034266201ull, 287443564323878ull}}, {{5211328855712915599ull, 459909702918205ull}}, {{4169063084570332479ull, 367927762334564ull}}, {{7024599282398176306ull, 294342209867651ull}}, {{3860661222353261444ull, 470947535788242ull}}, {{14156575422108340125ull, 376758028630593ull}}, {{257213893460941130ull, 301406422904475ull}}, {{411542229537505808ull, 482250276647160ull}}, {{329233783630004647ull, 385800221317728ull}}, {{7642084656387824364ull, 308640177054182ull}}, {{15916684264962429305ull, 493824283286691ull}}, {{9043998597228033121ull, 395059426629353ull}}, {{14613896507266247143ull, 316047541303482ull}}, {{8624839152658354136ull, 505676066085572ull}}, {{17967917766352414278ull, 404540852868457ull}}, {{6995636583598110776ull, 323632682294766ull}}, {{3814320904273156596ull, 517812291671626ull}}, {{17808851982386166569ull, 414249833337300ull}}, {{14247081585908933255ull, 331399866669840ull}}, {{4348586463744741593ull, 530239786671745ull}}, {{3478869170995793274ull, 424191829337396ull}}, {{17540490595764275912ull, 339353463469916ull}}, {{2239343250029469197ull, 542965541551867ull}}, {{12859521044249306327ull, 434372433241493ull}}, {{17666314464883265708ull, 347497946593194ull}}, {{17198056699587494164ull, 555996714549111ull}}, {{10069096544928085008ull, 444797371639289ull}}, {{11744626050684378329ull, 355837897311431ull}}, {{5706352025805592340ull, 284670317849145ull}}, {{9130163241288947745ull, 455472508558632ull}}, {{18372177037256889165ull, 364378006846905ull}}, {{14697741629805511332ull, 291502405477524ull}}, {{12448340163463087162ull, 466403848764039ull}}, {{13648020945512380053ull, 373123079011231ull}}, {{7229067941667993719ull, 298498463208985ull}}, {{11566508706668789950ull, 477597541134376ull}}, {{5563858150593121637ull, 382078032907501ull}}, {{761737705732586986ull, 305662426326001ull}}, {{12286826773397870148ull, 489059882121601ull}}, {{6140112603976385795ull, 391247905697281ull}}, {{1222741268439198313ull, 312998324557825ull}}, {{1956386029502717301ull, 500797319292520ull}}, {{1565108823602173840ull, 400637855434016ull}}, {{16009482317849380365ull, 320510284347212ull}}, {{10857776449591367292ull, 512816454955540ull}}, {{8686221159673093833ull, 410253163964432ull}}, {{18017023371964206036ull, 328202531171545ull}}, {{10380493321433178042ull, 525124049874473ull}}, {{15683092286630363080ull, 420099239899578ull}}, {{1478427385078559494ull, 336079391919663ull}}, {{17122879075093336484ull, 537727027071460ull}}, {{13698303260074669187ull, 430181621657168ull}}, {{18337340237543555996ull, 344145297325734ull}}, {{18271697935843958624ull, 550632475721175ull}}, {{14617358348675166899ull, 440505980576940ull}}, {{11693886678940133519ull, 352404784461552ull}}, {{1976411713668286169ull, 281923827569242ull}}, {{6851607556611168194ull, 451078124110787ull}}, {{16549332489514665525ull, 360862499288629ull}}, {{16928814806353642743ull, 288689999430903ull}}, {{4950010801714366449ull, 461903999089446ull}}, {{270659826629582836ull, 369523199271557ull}}, {{11284574305529397238ull, 295618559417245ull}}, {{18055318888847035582ull, 472989695067592ull}}, {{7065557481593807819ull, 378391756054074ull}}, {{9341794800016956578ull, 302713404843259ull}}, {{3878825235801399556ull, 484341447749215ull}}, {{3103060188641119645ull, 387473158199372ull}}, {{13550494595138626685ull, 309978526559497ull}}, {{6923396093254161404ull, 495965642495196ull}}, {{1849368059861418800ull, 396772513996157ull}}, {{12547540892114866009ull, 317418011196925ull}}, {{1629321353674233999ull, 507868817915081ull}}, {{16060852341907028492ull, 406295054332064ull}}, {{16538030688267533117ull, 325036043465651ull}}, {{635407398034680725ull, 520057669545043ull}}, {{7887023547911565226ull, 416046135636034ull}}, {{9998967653071162504ull, 332836908508827ull}}, {{1240952985946218714ull, 532539053614124ull}}, {{4682111203498885294ull, 426031242891299ull}}, {{7435037777541018558ull, 340824994313039ull}}, {{828013999839898724ull, 545319990900863ull}}, {{8041108829355739626ull, 436255992720690ull}}, {{6432887063484591700ull, 349004794176552ull}}, {{13981968116317257044ull, 558407670682483ull}}, {{117528048828074666ull, 446726136545987ull}}, {{11162068883288190702ull, 357380909236789ull}}, {{12619003921372462885ull, 285904727389431ull}}, {{12811708644712119969ull, 457447563823090ull}}, {{10249366915769695975ull, 365958051058472ull}}, {{820795903131936134ull, 292766440846778ull}}, {{16070668703978739107ull, 468426305354844ull}}, {{16545883777924901609ull, 374741044283875ull}}, {{13236707022339921287ull, 299792835427100ull}}, {{2731987162034322444ull, 479668536683361ull}}, {{16942984988595099248ull, 383734829346688ull}}, {{2486341546650348428ull, 306987863477351ull}}, {{15046192918866288455ull, 491180581563761ull}}, {{8347605520351120441ull, 392944465251009ull}}, {{10367433231022806676ull, 314355572200807ull}}, {{1830497910668849389ull, 502968915521292ull}}, {{12532444772760810481ull, 402375132417033ull}}, {{17404653447692469031ull, 321900105933626ull}}, {{2022003813114578187ull, 515040169493803ull}}, {{8996300679975483196ull, 412032135595042ull}}, {{18265086988206117526ull, 329625708476033ull}}, {{7088046292678326103ull, 527401133561654ull}}, {{9359785848884571206ull, 421920906849323ull}}, {{14866526308591477611ull, 337536725479458ull}}, {{1650349205294902238ull, 540058760767134ull}}, {{5009628178977832114ull, 432047008613707ull}}, {{15075748987407996661ull, 345637606890965ull}}, {{5674454306143243041ull, 553020171025545ull}}, {{4539563444914594433ull, 442416136820436ull}}, {{18389046014899316839ull, 353932909456348ull}}, {{3643190367693722501ull, 283146327565079ull}}, {{13207802217793776649ull, 453034124104126ull}}, {{6876892959493110996ull, 362427299283301ull}}, {{1812165552852578473ull, 289941839426641ull}}, {{13967511328789856527ull, 463906943082625ull}}, {{11174009063031885222ull, 371125554466100ull}}, {{8939207250425508177ull, 296900443572880ull}}, {{14302731600680813084ull, 475040709716608ull}}, {{374138836318919498ull, 380032567773287ull}}, {{11367357513280866568ull, 304026054218629ull}}, {{7119725577023655539ull, 486441686749807ull}}, {{16763826905844655401ull, 389153349399845ull}}, {{13411061524675724320ull, 311322679519876ull}}, {{14079000809997338266ull, 498116287231802ull}}, {{3884503018514049967ull, 398493029785442ull}}, {{14175648859036970943ull, 318794423828353ull}}, {{544945286007691570ull, 510071078125366ull}}, {{15193351487773794548ull, 408056862500292ull}}, {{4775983560735214992ull, 326445490000234ull}}, {{15020271326660164634ull, 522312784000374ull}}, {{15705565876070042031ull, 417850227200299ull}}, {{16253801515597943948ull, 334280181760239ull}}, {{14938035980730979347ull, 534848290816383ull}}, {{882382340359052508ull, 427878632653107ull}}, {{11773952316512972976ull, 342302906122485ull}}, {{391579632711205145ull, 547684649795977ull}}, {{11381310150394695086ull, 438147719836781ull}}, {{5415699305573845745ull, 350518175869425ull}}, {{8665118888918153193ull, 560829081391080ull}}, {{6932095111134522554ull, 448663265112864ull}}, {{9235024903649528366ull, 358930612090291ull}}, {{3698671108177712370ull, 287144489672233ull}}, {{2228524958342429469ull, 459431183475573ull}}, {{9161517596157764221ull, 367544946780458ull}}, {{14707911706410032023ull, 294035957424366ull}}, {{16153961100772230591ull, 470457531878986ull}}, {{9233820065875874150ull, 376366025503189ull}}, {{11076404867442609643ull, 301092820402551ull}}, {{10343550158424354783ull, 481748512644082ull}}, {{896142497255663180ull, 385398810115266ull}}, {{15474309256772171836ull, 308319048092212ull}}, {{10001499551867833646ull, 493310476947540ull}}, {{8001199641494266916ull, 394648381558032ull}}, {{17469006157421144503ull, 315718705246425ull}}, {{9503665778164279588ull, 505149928394281ull}}, {{3913583807789513347ull, 404119942715425ull}}, {{3130867046231610678ull, 323295954172340ull}}, {{5009387273970577085ull, 517273526675744ull}}, {{7696858633918371991ull, 413818821340595ull}}, {{6157486907134697593ull, 331055057072476ull}}, {{2473281421931695502ull, 529688091315962ull}}, {{13046671581771087371ull, 423750473052769ull}}, {{14126686080158780220ull, 339000378442215ull}}, {{4155953654544496737ull, 542400605507545ull}}, {{3324762923635597389ull, 433920484406036ull}}, {{17417205597876119204ull, 347136387524828ull}}, {{5731436068150328788ull, 555418220039726ull}}, {{895800039778352707ull, 444334576031781ull}}, {{15474035290790323458ull, 355467660825424ull}}, {{16068577047374169090ull, 284374128660339ull}}, {{14641676831572939574ull, 454998605856543ull}}, {{645295021032620689ull, 363998884685235ull}}, {{516236016826096551ull, 291199107748188ull}}, {{15583372885889395775ull, 465918572397100ull}}, {{12466698308711516620ull, 372734857917680ull}}, {{9973358646969213296ull, 298187886334144ull}}, {{4889327390925010305ull, 477100618134631ull}}, {{222113097998097920ull, 381680494507705ull}}, {{177690478398478336ull, 305344395606164ull}}, {{7663002394921385985ull, 488551032969862ull}}, {{17198448360162839757ull, 390840826375889ull}}, {{17448107502872182129ull, 312672661100711ull}}, {{2091530301402119144ull, 500276257761139ull}}, {{5362573055863605638ull, 400221006208911ull}}, {{600709629948974187ull, 320176804967129ull}}, {{8339833037402179346ull, 512282887947406ull}}, {{2982517615179833154ull, 409826310357925ull}}, {{2386014092143866523ull, 327861048286340ull}}, {{3817622547430186437ull, 524577677258144ull}}, {{6743446852686059473ull, 419662141806515ull}}, {{5394757482148847578ull, 335729713445212ull}}, {{12320960786180066448ull, 537167541512339ull}}, {{13546117443685963482ull, 429734033209871ull}}, {{7147545140206860462ull, 343787226567897ull}}, {{15125421039072887063ull, 550059562508635ull}}, {{12100336831258309650ull, 440047650006908ull}}, {{17058967094490468367ull, 352038120005526ull}}, {{9957824860850464370ull, 281630496004421ull}}, {{8553822147876922346ull, 450608793607074ull}}, {{10532406533043448200ull, 360487034885659ull}}, {{12115274041176668883ull, 288389627908527ull}}, {{4627043206915028920ull, 461423404653644ull}}, {{7390983380273933459ull, 369138723722915ull}}, {{5912786704219146767ull, 295310978978332ull}}, {{13149807541492545151ull, 472497566365331ull}}, {{6830497218452125798ull, 377998053092265ull}}, {{5464397774761700638ull, 302398442473812ull}}, {{12432385254360631344ull, 483837507958099ull}}, {{13635257018230415399ull, 387070006366479ull}}, {{14597554429326242642ull, 309656005093183ull}}, {{1219994198470526288ull, 495449608149094ull}}, {{4665344173518331354ull, 396359686519275ull}}, {{3732275338814665083ull, 317087749215420ull}}, {{5971640542103464133ull, 507340398744672ull}}, {{15845358877908502276ull, 405872318995737ull}}, {{5297589472842981174ull, 324697855196590ull}}, {{8476143156548769879ull, 519516568314544ull}}, {{10470263339980926226ull, 415613254651635ull}}, {{8376210671984740981ull, 332490603721308ull}}, {{9712588260433675246ull, 531984965954093ull}}, {{15148768237830760843ull, 425587972763274ull}}, {{15808363405006518998ull, 340470378210619ull}}, {{14225335003784699427ull, 544752605136991ull}}, {{7690919188285849219ull, 435802084109593ull}}, {{13531432980112500021ull, 348641667287674ull}}, {{10582246323954269064ull, 557826667660279ull}}, {{12155145873905325575ull, 446261334128223ull}}, {{17102814328608081106ull, 357009067302578ull}}, {{2614205018660733915ull, 285607253842063ull}}, {{493379215115263941ull, 456971606147301ull}}, {{15152098631059852446ull, 365577284917840ull}}, {{12121678904847881957ull, 292461827934272ull}}, {{4637290988788969838ull, 467938924694836ull}}, {{20483976289265547ull, 374351139755869ull}}, {{3705735995773322761ull, 299480911804695ull}}, {{5929177593237316417ull, 479169458887512ull}}, {{15811388518815584103ull, 383335567110009ull}}, {{16338459629794377606ull, 306668453688007ull}}, {{11384140148703362877ull, 490669525900812ull}}, {{1728614489478869655ull, 392535620720650ull}}, {{1382891591583095724ull, 314028496576520ull}}, {{2212626546532953159ull, 502445594522432ull}}, {{12838147681452093496ull, 401956475617945ull}}, {{10270518145161674797ull, 321565180494356ull}}, {{9054131402774859029ull, 514504288790970ull}}, {{7243305122219887223ull, 411603431032776ull}}, {{2105295283033999455ull, 329282744826221ull}}, {{14436518897080130098ull, 526852391721953ull}}, {{481168673438373109ull, 421481913377563ull}}, {{7763632568234519133ull, 337185530702050ull}}, {{12421812109175230614ull, 539496849123280ull}}, {{9937449687340184491ull, 431597479298624ull}}, {{11639308564614057916ull, 345277983438899ull}}, {{7554847259156761696ull, 552444773502239ull}}, {{9733226622067319680ull, 441955818801791ull}}, {{4097232482911945421ull, 353564655041433ull}}, {{10656483615813376983ull, 282851724033146ull}}, {{9671676155817582526ull, 452562758453034ull}}, {{11426689739395976344ull, 362050206762427ull}}, {{1762654162032960429ull, 289640165409942ull}}, {{6509595473994647010ull, 463424264655907ull}}, {{16275722823421448577ull, 370739411724725ull}}, {{13020578258737158862ull, 296591529379780ull}}, {{2386181140269902563ull, 474546447007649ull}}, {{5598293726957832374ull, 379637157606119ull}}, {{8167983796308176222ull, 303709726084895ull}}, {{13068774074093081955ull, 485935561735832ull}}, {{3076321629790644918ull, 388748449388666ull}}, {{17218452562800157227ull, 310998759510932ull}}, {{12792128841512610271ull, 497598015217492ull}}, {{2855005443726267570ull, 398078412173994ull}}, {{5973353169722924379ull, 318462729739195ull}}, {{9557365071556679007ull, 509540367582712ull}}, {{267194427761522559ull, 407632294066170ull}}, {{213755542209218047ull, 326105835252936ull}}, {{11410055311760479845ull, 521769336404697ull}}, {{1749346619924563230ull, 417415469123758ull}}, {{8778174925423471230ull, 333932375299006ull}}, {{6666382251193733322ull, 534291800478410ull}}, {{5333105800954986657ull, 427433440382728ull}}, {{11645182270247809972ull, 341946752306182ull}}, {{3874896373428854663ull, 547114803689892ull}}, {{14167963542968814700ull, 437691842951913ull}}, {{266324390149320790ull, 350153474361531ull}}, {{11494165468464644234ull, 560245558978449ull}}, {{12884681189513625711ull, 448196447182759ull}}, {{13997093766352810892ull, 358557157746207ull}}, {{3818977383598428067ull, 286845726196966ull}}, {{17178410257983215877ull, 458953161915145ull}}, {{13742728206386572701ull, 367162529532116ull}}, {{7304833750367347838ull, 293730023625693ull}}, {{7998385185845846217ull, 469968037801109ull}}, {{10088056963418587297ull, 375974430240887ull}}, {{691747941251049191ull, 300779544192710ull}}, {{1106796706001678706ull, 481247270708336ull}}, {{15642832623768984258ull, 384997816566668ull}}, {{1446219654789456436ull, 307998253253335ull}}, {{2313951447663130299ull, 492797205205336ull}}, {{16608556417098145532ull, 394237764164268ull}}, {{2218798689452785456ull, 315390211331415ull}}, {{3550077903124456729ull, 504624338130264ull}}, {{6529411137241475706ull, 403699470504211ull}}, {{1534180095051270242ull, 322959576403369ull}}, {{9833385781565853034ull, 516735322245390ull}}, {{7866708625252682427ull, 413388257796312ull}}, {{17361413344427876911ull, 330710606237049ull}}, {{16710214906858872088ull, 529136969979279ull}}, {{17057520740229007994ull, 423309575983423ull}}, {{2577970147957475425ull, 338647660786739ull}}, {{11503449866215781327ull, 541836257258782ull}}, {{1824062263488804415ull, 433469005807026ull}}, {{16216645069758684825ull, 346775204645620ull}}, {{7499888037904344104ull, 554840327432993ull}}, {{13378608059807295930ull, 443872261946394ull}}, {{14392235262587747067ull, 355097809557115ull}}, {{11513788210070197653ull, 284078247645692ull}}, {{3664665877144674953ull, 454525196233108ull}}, {{10310430331199560608ull, 363620156986486ull}}, {{4558995450217738163ull, 290896125589189ull}}, {{14673090349832201708ull, 465433800942702ull}}, {{4359774650381940720ull, 372347040754162ull}}, {{14555866164531283546ull, 297877632603329ull}}, {{12221339419024322704ull, 476604212165327ull}}, {{2398373905735637516ull, 381283369732262ull}}, {{12986745568814240983ull, 305026695785809ull}}, {{9710746465877054603ull, 488042713257295ull}}, {{7768597172701643682ull, 390434170605836ull}}, {{2525528923419404623ull, 312347336484669ull}}, {{11419543906954868043ull, 499755738375470ull}}, {{9135635125563894434ull, 399804590700376ull}}, {{3619159285709205224ull, 319843672560301ull}}, {{16858701301360459328ull, 511749876096481ull}}, {{9797612226346457139ull, 409399900877185ull}}, {{7838089781077165711ull, 327519920701748ull}}, {{8851594834981554815ull, 524031873122797ull}}, {{18149322312210974822ull, 419225498498237ull}}, {{7140760220284959211ull, 335380398798590ull}}, {{11425216352455934738ull, 536608638077744ull}}, {{12829521896706658113ull, 429286910462195ull}}, {{10263617517365326490ull, 343429528369756ull}}, {{9043090398300701739ull, 549487245391610ull}}, {{7234472318640561391ull, 439589796313288ull}}, {{13166275484396269759ull, 351671837050630ull}}, {{2619296701324479999ull, 562674939281009ull}}, {{5784786175801494322ull, 450139951424807ull}}, {{15695875384866926427ull, 360111961139845ull}}, {{12556700307893541142ull, 288089568911876ull}}, {{12712022863145845180ull, 460943310259002ull}}, {{2790920661032855498ull, 368754648207202ull}}, {{13300782973052015368ull, 295003718565761ull}}, {{13902555127399403942ull, 472005949705218ull}}, {{53997657693792184ull, 377604759764175ull}}, {{43198126155033747ull, 302083807811340ull}}, {{69117001848053996ull, 483334092498144ull}}, {{3744642416220353520ull, 386667273998515ull}}, {{2995713932976282816ull, 309333819198812ull}}, {{8482491107503962829ull, 494934110718099ull}}, {{10475341700745080586ull, 395947288574479ull}}, {{12069622175337974792ull, 316757830859583ull}}, {{15622046665798849344ull, 506812529375333ull}}, {{1429590888413348506ull, 405450023500267ull}}, {{12211719154956409774ull, 324360018800213ull}}, {{15849401833188345316ull, 518976030080341ull}}, {{8990172651808765929ull, 415180824064273ull}}, {{14570835750930833390ull, 332144659251418ull}}, {{1177244313037871484ull, 531431454802270ull}}, {{941795450430297187ull, 425145163841816ull}}, {{15510831619311879043ull, 340116131073452ull}}, {{10059935331931365176ull, 544185809717524ull}}, {{11737297080287002464ull, 435348647774019ull}}, {{13079186478971512294ull, 348278918219215ull}}, {{2479954292644868055ull, 557246269150745ull}}, {{1983963434115894444ull, 445797015320596ull}}, {{16344566006260356848ull, 356637612256476ull}}, {{9386303990266375155ull, 285310089805181ull}}, {{7639388754942379602ull, 456496143688290ull}}, {{6111511003953903681ull, 365196914950632ull}}, {{15957255247388853915ull, 292157531960505ull}}, {{7084864322112614648ull, 467452051136809ull}}, {{9357240272432002041ull, 373961640909447ull}}, {{107094588461780986ull, 299169312727558ull}}, {{14928746600506490871ull, 478670900364092ull}}, {{4564299650921372051ull, 382936720291274ull}}, {{7340788535479007964ull, 306349376233019ull}}, {{677215212540681772ull, 490159001972831ull}}, {{15299167429000186711ull, 392127201578264ull}}, {{15928682757942059692ull, 313701761262611ull}}, {{18107194783223474860ull, 501922818020178ull}}, {{3417709382353048919ull, 401538254416143ull}}, {{10112865135366259781ull, 321230603532914ull}}, {{5112537772360284681ull, 513968965652663ull}}, {{11468727847372048391ull, 411175172522130ull}}, {{9174982277897638713ull, 328940138017704ull}}, {{3611925200410490971ull, 526304220828327ull}}, {{13957586604554123746ull, 421043376662661ull}}, {{7476720468901388674ull, 336834701330129ull}}, {{894706306016490908ull, 538935522128207ull}}, {{11783811489038923696ull, 431148417702565ull}}, {{9427049191231138957ull, 344918734162052ull}}, {{325883447002181039ull, 551869974659284ull}}, {{3950055572343655154ull, 441495979727427ull}}, {{14228090902100655093ull, 353196783781941ull}}, {{7693123906938613751ull, 282557427025553ull}}, {{8619649436359871678ull, 452091883240885ull}}, {{6895719549087897343ull, 361673506592708ull}}, {{12895273268754138520ull, 289338805274166ull}}, {{13253739600522800987ull, 462942088438666ull}}, {{6913642865676330466ull, 370353670750933ull}}, {{12909611922024885019ull, 296282936600746ull}}, {{13276681445755995384ull, 474052698561194ull}}, {{14310693971346706631ull, 379242158848955ull}}, {{11448555177077365304ull, 303393727079164ull}}, {{7249641839098053518ull, 485429963326663ull}}, {{13178411100762263460ull, 388343970661330ull}}, {{10542728880609810768ull, 310675176529064ull}}, {{5800319764749966260ull, 497080282446503ull}}, {{12018953441283793654ull, 397664225957202ull}}, {{2236465123543214277ull, 318131380765762ull}}, {{7267693012411053167ull, 509010209225219ull}}, {{9503503224670752856ull, 407208167380175ull}}, {{7602802579736602285ull, 325766533904140ull}}, {{12164484127578563656ull, 521226454246624ull}}, {{13420936116804761248ull, 416981163397299ull}}, {{14426097708185719322ull, 333584930717839ull}}, {{12013709888871419945ull, 533735889148543ull}}, {{16989665540580956603ull, 426988711318834ull}}, {{17281081247206675605ull, 341590969055067ull}}, {{12892334736563039676ull, 546545550488108ull}}, {{17692565418734252387ull, 437236440390486ull}}, {{10464703520245491586ull, 349789152312389ull}}, {{5675479188167055569ull, 559662643699823ull}}, {{11919080980017465101ull, 447730114959858ull}}, {{16913962413497792727ull, 358184091967886ull}}, {{9841821116056323858ull, 286547273574309ull}}, {{4678867341464387204ull, 458475637718895ull}}, {{3743093873171509763ull, 366780510175116ull}}, {{17751870357504849103ull, 293424408140092ull}}, {{13645597313040117273ull, 469479053024148ull}}, {{18295175479915914465ull, 375583242419318ull}}, {{3568093939707000602ull, 300466593935455ull}}, {{5708950303531200963ull, 480746550296728ull}}, {{11945857872308781417ull, 384597240237382ull}}, {{2177988668363204487ull, 307677792189906ull}}, {{14552828313606858149ull, 492284467503849ull}}, {{15331611465627396843ull, 393827574003079ull}}, {{15954637987243827797ull, 315062059202463ull}}, {{3391327891138662537ull, 504099294723942ull}}, {{13781108757136660999ull, 403279435779153ull}}, {{18403584635193149445ull, 322623548623322ull}}, {{14688340157341397820ull, 516197677797316ull}}, {{8061323311131207933ull, 412958142237853ull}}, {{13827756278388786992ull, 330366513790282ull}}, {{7367014786454417895ull, 528586422064452ull}}, {{16961658273389265286ull, 422869137651561ull}}, {{9879977803969501905ull, 338295310121249ull}}, {{4739918042125472079ull, 541272496193999ull}}, {{7481283248442287987ull, 433017996955199ull}}, {{9674375413495740712ull, 346414397564159ull}}, {{4410954217367454170ull, 554263036102655ull}}, {{3528763373893963336ull, 443410428882124ull}}, {{6512359513857080992ull, 354728343105699ull}}, {{8899236425827575117ull, 283782674484559ull}}, {{3170731837098389218ull, 454052279175295ull}}, {{2536585469678711374ull, 363241823340236ull}}, {{16786663634710610392ull, 290593458672188ull}}, {{4722568927085514688ull, 464949533875502ull}}, {{14846101585894142720ull, 371959627100401ull}}, {{8187532453973403853ull, 297567701680321ull}}, {{5721354296873625518ull, 476108322688514ull}}, {{8266432252240810738ull, 380886658150811ull}}, {{2923796987050738267ull, 304709326520649ull}}, {{12056772808765001874ull, 487534922433038ull}}, {{17024115876495822145ull, 390027937946430ull}}, {{13619292701196657716ull, 312022350357144ull}}, {{10722821877688921376ull, 499235760571431ull}}, {{4888908687409226778ull, 399388608457145ull}}, {{3911126949927381422ull, 319510886765716ull}}, {{17325849564109541245ull, 511217418825145ull}}, {{13860679651287632996ull, 408973935060116ull}}, {{7399194906288196074ull, 327179148048093ull}}, {{8149363035319203395ull, 523486636876949ull}}, {{10208839242997273039ull, 418789309501559ull}}, {{11856420209139728754ull, 335031447601247ull}}, {{4212877075655924714ull, 536050316161996ull}}, {{18127696919492381064ull, 428840252929596ull}}, {{10812808720851994528ull, 343072202343677ull}}, {{2543098694395549952ull, 548915523749884ull}}, {{5723827770258350285ull, 439132418999907ull}}, {{15647108660432411197ull, 351305935199925ull}}, {{6588629782982306300ull, 562089496319881ull}}, {{1581555011643934717ull, 449671597055905ull}}, {{1265244009315147773ull, 359737277644724ull}}, {{4701544022194028542ull, 287789822115779ull}}, {{14901168064994266314ull, 460463715385246ull}}, {{8231585637253502728ull, 368370972308197ull}}, {{17653314954028533152ull, 294696777846557ull}}, {{13487908667478011750ull, 471514844554492ull}}, {{3411629304498588754ull, 377211875643594ull}}, {{6418652258340781326ull, 301769500514875ull}}, {{10269843613345250122ull, 482831200823800ull}}, {{8215874890676200097ull, 386264960659040ull}}, {{6572699912540960078ull, 309011968527232ull}}, {{14205668674807446448ull, 494419149643571ull}}, {{7675186125104046835ull, 395535319714857ull}}, {{17208195344308968438ull, 316428255771885ull}}, {{9086368477184797884ull, 506285209235017ull}}, {{18337141225973569277ull, 405028167388013ull}}, {{3601666536553124452ull, 324022533910411ull}}, {{16830712902710730093ull, 518436054256657ull}}, {{6085872692684763428ull, 414748843405326ull}}, {{1179349339405900419ull, 331799074724261ull}}, {{12955005387275171640ull, 530878519558817ull}}, {{2985306680336316666ull, 424702815647054ull}}, {{6077594159010963656ull, 339762252517643ull}}, {{6034801839675631526ull, 543619604028229ull}}, {{8517190286482415544ull, 434895683222583ull}}, {{14192449858669753082ull, 347916546578066ull}}, {{15329222144387784284ull, 556666474524906ull}}, {{8574028900768317104ull, 445333179619925ull}}, {{6859223120614653683ull, 356266543695940ull}}, {{5487378496491722946ull, 285013234956752ull}}, {{12469154409128667038ull, 456021175930803ull}}, {{17354021156786754277ull, 364816940744642ull}}, {{6504519295945582775ull, 291853552595714ull}}, {{17785928502996753086ull, 466965684153142ull}}, {{6850045172913581823ull, 373572547322514ull}}, {{9169384953072775781ull, 298858037858011ull}}, {{7292318295432620604ull, 478172860572818ull}}, {{13212552265829917129ull, 382538288458254ull}}, {{14259390627405844027ull, 306030630766603ull}}, {{678932115397888504ull, 489649009226566ull}}, {{15300540951285952096ull, 391719207381252ull}}, {{4861735131544941030ull, 313375365905002ull}}, {{11468125025213815971ull, 501400585448003ull}}, {{16553197649654873423ull, 401120468358402ull}}, {{5863860490240078092ull, 320896374686722ull}}, {{13071525599126035271ull, 513434199498755ull}}, {{10457220479300828217ull, 410747359599004ull}}, {{12055125198182572897ull, 328597887679203ull}}, {{15598851502350206312ull, 525756620286725ull}}, {{12479081201880165049ull, 420605296229380ull}}, {{9983264961504132039ull, 336484236983504ull}}, {{4905177494180880293ull, 538374779173607ull}}, {{14992188439570435204ull, 430699823338885ull}}, {{11993750751656348163ull, 344559858671108ull}}, {{15500652387908246738ull, 551295773873773ull}}, {{1332475466100866421ull, 441036619099019ull}}, {{4755329187622603460ull, 352829295279215ull}}, {{3804263350098082768ull, 282263436223372ull}}, {{9776170174898842752ull, 451621497957395ull}}, {{7820936139919074202ull, 361297198365916ull}}, {{2567400097193349038ull, 289037758692733ull}}, {{418491340767448138ull, 462460413908373ull}}, {{7713490702097779157ull, 369968331126698ull}}, {{13549490191162043972ull, 295974664901358ull}}, {{17989835491117360032ull, 473559463842173ull}}, {{3323821948668157056ull, 378847571073739ull}}, {{6348406373676435968ull, 303078056858991ull}}, {{2778752568398476902ull, 484924890974386ull}}, {{16980397313686422814ull, 387939912779508ull}}, {{2516271406723407282ull, 310351930223607ull}}, {{7715383065499361974ull, 496563088357771ull}}, {{2482957637657579256ull, 397250470686217ull}}, {{13054412554351794374ull, 317800376548973ull}}, {{17197711272220960676ull, 508480602478357ull}}, {{6379471388292947894ull, 406784481982686ull}}, {{1414228295892447992ull, 325427585586149ull}}, {{9641462902911737434ull, 520684136937838ull}}, {{15091867951813210594ull, 416547309550270ull}}, {{12073494361450568475ull, 333237847640216ull}}, {{11938893348837088914ull, 533180556224346ull}}, {{5861765864327760808ull, 426544444979477ull}}, {{15757459135687939616ull, 341235555983581ull}}, {{17833236987616882739ull, 545976889573730ull}}, {{14266589590093506191ull, 436781511658984ull}}, {{15102620486816715276ull, 349425209327187ull}}, {{9406797519939103149ull, 559080334923500ull}}, {{7525438015951282519ull, 447264267938800ull}}, {{6020350412761026015ull, 357811414351040ull}}, {{4816280330208820812ull, 286249131480832ull}}, {{11395397343076023623ull, 457998610369331ull}}, {{5426969059718908575ull, 366398888295465ull}}, {{4341575247775126860ull, 293119110636372ull}}, {{10635869211182113299ull, 468990577018195ull}}, {{8508695368945690639ull, 375192461614556ull}}, {{3117607480414642188ull, 300153969291645ull}}, {{4988171968663427501ull, 480246350866632ull}}, {{15058584019156472970ull, 384197080693305ull}}, {{12046867215325178376ull, 307357664554644ull}}, {{8206941100294554433ull, 491772263287431ull}}, {{2876204065493733223ull, 393417810629945ull}}, {{2300963252394986578ull, 314734248503956ull}}, {{14749587648057709495ull, 503574797606329ull}}, {{15489018933188077919ull, 402859838085063ull}}, {{1323168702324731366ull, 322287870468051ull}}, {{13185116367945301155ull, 515660592748881ull}}, {{6858744279614330601ull, 412528474199105ull}}, {{5486995423691464480ull, 330022779359284ull}}, {{16157890307390163815ull, 528036446974854ull}}, {{16615661060654041375ull, 422429157579883ull}}, {{2224482404297502131ull, 337943326063907ull}}, {{7248520661617913732ull, 540709321702251ull}}, {{2109467714552420663ull, 432567457361801ull}}, {{16444969430609577823ull, 346053965889440ull}}, {{7865207015265772901ull, 553686345423105ull}}, {{6292165612212618321ull, 442949076338484ull}}, {{8723081304512004980ull, 354359261070787ull}}, {{18046511487835334953ull, 283487408856629ull}}, {{17806371936310804956ull, 453579854170607ull}}, {{6866399919564823318ull, 362863883336486ull}}, {{1803771120909948331ull, 290291106669189ull}}, {{10264731422939737977ull, 464465770670702ull}}, {{833087508867969735ull, 371572616536562ull}}, {{11734516451320106757ull, 297258093229249ull}}, {{7707179877886439842ull, 475612949166799ull}}, {{9855092717051062197ull, 380490359333439ull}}, {{11573422988382760081ull, 304392287466751ull}}, {{11138779151928595483ull, 487027659946802ull}}, {{1532325692059055740ull, 389622127957442ull}}, {{12293906997872975561ull, 311697702365953ull}}, {{15980902381854850575ull, 498716323785525ull}}, {{12784721905483880460ull, 398973059028420ull}}, {{10227777524387104368ull, 319178447222736ull}}, {{8985746409535546343ull, 510685515556378ull}}, {{14567294757112257721ull, 408548412445102ull}}, {{4275138176205985530ull, 326838729956082ull}}, {{10529569896671487171ull, 522941967929731ull}}, {{4734307102595279414ull, 418353574343785ull}}, {{3787445682076223531ull, 334682859475028ull}}, {{2370564276580047327ull, 535492575160045ull}}, {{1896451421264037861ull, 428394060128036ull}}, {{16274556395978871582ull, 342715248102428ull}}, {{3903197345114732592ull, 548344396963886ull}}, {{17879953135059427366ull, 438675517571108ull}}, {{3235916063821810923ull, 350940414056887ull}}, {{8866814516856807801ull, 561504662491019ull}}, {{10782800428227356564ull, 449203729992815ull}}, {{8626240342581885251ull, 359362983994252ull}}, {{17969038718291239170ull, 287490387195401ull}}, {{2925020246072610410ull, 459984619512643ull}}, {{9718713826341908974ull, 367987695610114ull}}, {{11464319875815437503ull, 294390156488091ull}}, {{10964214171820879358ull, 471024250380946ull}}, {{5082022522714793163ull, 376819400304757ull}}, {{15133664462397565500ull, 301455520243805ull}}, {{5767119066126553184ull, 482328832390089ull}}, {{8303044067643152871ull, 385863065912071ull}}, {{2953086439372611973ull, 308690452729657ull}}, {{8414287117738089480ull, 493904724367451ull}}, {{3042080879448561261ull, 395123779493961ull}}, {{17191059962526490302ull, 316099023595168ull}}, {{5369603051590922544ull, 505758437752270ull}}, {{4295682441272738035ull, 404606750201816ull}}, {{18193941211985831721ull, 323685400161452ull}}, {{14352910680209689460ull, 517896640258324ull}}, {{15171677358909661891ull, 414317312206659ull}}, {{15826690701869639836ull, 331453849765327ull}}, {{10565309864023782445ull, 530326159624524ull}}, {{12141596705960936279ull, 424260927699619ull}}, {{13402626179510659347ull, 339408742159695ull}}, {{2997457813507503339ull, 543053987455513ull}}, {{9776663880289823317ull, 434443189964410ull}}, {{7821331104231858654ull, 347554551971528ull}}, {{8824780952029063523ull, 556087283154445ull}}, {{7059824761623250819ull, 444869826523556ull}}, {{1958510994556690332ull, 355895861218845ull}}, {{1566808795645352265ull, 284716688975076ull}}, {{13574940517258294594ull, 455546702360121ull}}, {{7170603599064725352ull, 364437361888097ull}}, {{16804529323477511251ull, 291549889510477ull}}, {{12129851658596376709ull, 466479823216764ull}}, {{13393230141619011690ull, 373183858573411ull}}, {{7025235298553299029ull, 298547086858729ull}}, {{172330033459547477ull, 477675338973967ull}}, {{11205910470993368951ull, 382140271179173ull}}, {{16343426006278515807ull, 305712216943338ull}}, {{4013388721594163353ull, 489139547109342ull}}, {{14278757421501061652ull, 391311637687473ull}}, {{354959492975118352ull, 313049310149979ull}}, {{7946632818244010009ull, 500878896239966ull}}, {{2667957439853297684ull, 400703116991973ull}}, {{9513063581366458794ull, 320562493593578ull}}, {{11531552915444423747ull, 512899989749725ull}}, {{9225242332355538998ull, 410319991799780ull}}, {{7380193865884431198ull, 328255993439824ull}}, {{740263741189358947ull, 525209589503719ull}}, {{4281559807693397481ull, 420167671602975ull}}, {{3425247846154717985ull, 336134137282380ull}}, {{5480396553847548776ull, 537814619651808ull}}, {{11763014872561859667ull, 430251695721446ull}}, {{5721063083307577410ull, 344201356577157ull}}, {{12843049748034034180ull, 550722170523451ull}}, {{6585090983685317021ull, 440577736418761ull}}, {{1578723972206343293ull, 352462189135009ull}}, {{4952327992506984958ull, 281969751308007ull}}, {{11613073602753086256ull, 451151602092811ull}}, {{5601110067460558681ull, 360921281674249ull}}, {{8170236868710357268ull, 288737025339399ull}}, {{2004332545710840660ull, 461979240543039ull}}, {{5292814851310582851ull, 369583392434431ull}}, {{544903066306555957ull, 295666713947545ull}}, {{871844906090489532ull, 473066742316072ull}}, {{11765522369098122595ull, 378453393852857ull}}, {{2033720265794677430ull, 302762715082286ull}}, {{14321998869497214857ull, 484420344131657ull}}, {{4078901466113951239ull, 387536275305326ull}}, {{18020516431858802284ull, 310029020244260ull}}, {{10386082217264532039ull, 496046432390817ull}}, {{930168144327804985ull, 396837145912654ull}}, {{4433483330204154311ull, 317469716730123ull}}, {{3404224513584736575ull, 507951546768197ull}}, {{13791426055093520229ull, 406361237414557ull}}, {{3654443214590995537ull, 325088989931646ull}}, {{16915155587571323829ull, 520142383890633ull}}, {{2464078025831328093ull, 416113907112507ull}}, {{13039308864890793444ull, 332891125690005ull}}, {{2416150110115717895ull, 532625801104009ull}}, {{5622268902834484639ull, 426100640883207ull}}, {{15565861566493318681ull, 340880512706565ull}}, {{6458634432679758274ull, 545408820330505ull}}, {{5166907546143806619ull, 436327056264404ull}}, {{7822874851656955618ull, 349061645011523ull}}, {{8827250947909218666ull, 558498632018437ull}}, {{18129847202553105902ull, 446798905614749ull}}, {{18193226576784395045ull, 357439124491799ull}}, {{18243930076169426359ull, 285951299593439ull}}, {{18122241677645351205ull, 457522079349503ull}}, {{3429746897890549994ull, 366017663479603ull}}, {{10122495147796260642ull, 292814130783682ull}}, {{1438596977506375734ull, 468502609253892ull}}, {{12218924026230831557ull, 374802087403113ull}}, {{17153836850468485892ull, 299841669922490ull}}, {{8999394887040025811ull, 479746671875985ull}}, {{7199515909632020649ull, 383797337500788ull}}, {{13138310357189437166ull, 307037870000630ull}}, {{2574552497793547849ull, 491260592001009ull}}, {{5748990812976748602ull, 393008473600807ull}}, {{15667239094607129851ull, 314406778880645ull}}, {{6620838477661856147ull, 503050846209033ull}}, {{12675368411613305564ull, 402440676967226ull}}, {{6450945914548734128ull, 321952541573781ull}}, {{2942815833794153958ull, 515124066518050ull}}, {{2354252667035323166ull, 412099253214440ull}}, {{1883402133628258533ull, 329679402571552ull}}, {{6702792228547123976ull, 527487044114483ull}}, {{12740931412321519827ull, 421989635291586ull}}, {{6503396315115305539ull, 337591708233269ull}}, {{17784131733668309508ull, 540146733173230ull}}, {{14227305386934647607ull, 432117386538584ull}}, {{15071193124289628408ull, 345693909230867ull}}, {{9356513739895764161ull, 553110254769388ull}}, {{14863908621400431975ull, 442488203815510ull}}, {{11891126897120345580ull, 353990563052408ull}}, {{16891599147180097110ull, 283192450441926ull}}, {{1201116932294783114ull, 453107920707083ull}}, {{8339591175319647138ull, 362486336565666ull}}, {{2982324125513807387ull, 289989069252533ull}}, {{1082369786080181496ull, 463982510804053ull}}, {{8244593458347965843ull, 371186008643242ull}}, {{17663721210904103644ull, 296948806914593ull}}, {{6125861048995103892ull, 475118091063350ull}}, {{4900688839196083113ull, 380094472850680ull}}, {{3920551071356866490ull, 304075578280544ull}}, {{13651579343654807031ull, 486520925248870ull}}, {{10921263474923845625ull, 389216740199096ull}}, {{5047661965197166177ull, 311373392159277ull}}, {{11765607959057376206ull, 498197427454843ull}}, {{16791183996729721611ull, 398557941963874ull}}, {{17122296012125687612ull, 318846353571099ull}}, {{16327627175175369210ull, 510154165713759ull}}, {{16751450554882205691ull, 408123332571007ull}}, {{6022462814421943906ull, 326498666056806ull}}, {{2257242873591289604ull, 522397865690890ull}}, {{1805794298873031683ull, 417918292552712ull}}, {{12512681883324156316ull, 334334634042169ull}}, {{8952244569092919136ull, 534935414467471ull}}, {{3472446840532424986ull, 427948331573977ull}}, {{13846003916651670958ull, 342358665259181ull}}, {{14774908637158852887ull, 547773864414690ull}}, {{11819926909727082310ull, 438219091531752ull}}, {{2077243898297845201ull, 350575273225402ull}}, {{7012939052018462645ull, 560920437160643ull}}, {{12989048871098590763ull, 448736349728514ull}}, {{14080587911620782933ull, 358989079782811ull}}, {{7575121514554716023ull, 287191263826249ull}}, {{1052147979061814668ull, 459506022121999ull}}, {{4531067197991362057ull, 367604817697599ull}}, {{7314202573134999969ull, 294083854158079ull}}, {{634677672790268981ull, 470534166652927ull}}, {{11575788582457946154ull, 376427333322341ull}}, {{5571282051224446600ull, 301141866657873ull}}, {{5224702467217204237ull, 481826986652597ull}}, {{15247808417999494359ull, 385461589322077ull}}, {{4819549104915774841ull, 308369271457662ull}}, {{11400627382607150069ull, 493390834332259ull}}, {{12809850720827630378ull, 394712667465807ull}}, {{2869182947178283656ull, 315770133972646ull}}, {{15658739159710984820ull, 505232214356233ull}}, {{1458944883543056886ull, 404185771484987ull}}, {{12235202351060176478ull, 323348617187989ull}}, {{8508277317470551396ull, 517357787500783ull}}, {{14185319483460261763ull, 413886230000626ull}}, {{7658906772026299087ull, 331108984000501ull}}, {{4875553205758257894ull, 529774374400802ull}}, {{14968489008832337284ull, 423819499520641ull}}, {{8285442392323959504ull, 339055599616513ull}}, {{9567359012976424884ull, 542488959386421ull}}, {{3964538395639229584ull, 433991167509137ull}}, {{14239677160737114637ull, 347192934007309ull}}, {{11715437012953652449ull, 555508694411695ull}}, {{9372349610362921959ull, 444406955529356ull}}, {{3808530873548427244ull, 355525564423485ull}}, {{3046824698838741795ull, 284420451538788ull}}, {{1185570703400076549ull, 455072722462061ull}}, {{15705851821687702532ull, 364058177969648ull}}, {{1496635013124431056ull, 291246542375719ull}}, {{9773313650482910336ull, 465994467801150ull}}, {{7818650920386328269ull, 372795574240920ull}}, {{6254920736309062615ull, 298236459392736ull}}, {{2629175548610679538ull, 477178335028378ull}}, {{9482038068372364277ull, 381742668022702ull}}, {{206932825214070775ull, 305394134418162ull}}, {{4020441335084423563ull, 488630615069059ull}}, {{6905701882809449174ull, 390904492055247ull}}, {{16592607950473290309ull, 312723593644197ull}}, {{11790777461789623201ull, 500357749830716ull}}, {{5743273154689788238ull, 400286199864573ull}}, {{11973316153235651236ull, 320228959891658ull}}, {{15467957030435131655ull, 512366335826653ull}}, {{1306319180122374355ull, 409893068661323ull}}, {{8423752973581720130ull, 327914454929058ull}}, {{9788655942988841885ull, 524663127886493ull}}, {{15209622383874894154ull, 419730502309194ull}}, {{15857046721841825647ull, 335784401847355ull}}, {{6924530681237369419ull, 537255042955769ull}}, {{9228973359731805858ull, 429804034364615ull}}, {{7383178687785444686ull, 343843227491692ull}}, {{15502434715198621822ull, 550149163986707ull}}, {{5023250142675076811ull, 440119331189366ull}}, {{329251299398151125ull, 352095464951493ull}}, {{7642098669002341547ull, 281676371961194ull}}, {{1159311426178015505ull, 450682195137911ull}}, {{15684844399910053697ull, 360545756110328ull}}, {{1479829075702311988ull, 288436604888263ull}}, {{17125121780091340474ull, 461498567821220ull}}, {{13700097424073072379ull, 369198854256976ull}}, {{7270729124516547580ull, 295359083405581ull}}, {{4254468969742655482ull, 472574533448930ull}}, {{3403575175794124385ull, 378059626759144ull}}, {{6412208955377209831ull, 302447701407315ull}}, {{10259534328603535730ull, 483916322251704ull}}, {{11896976277624738907ull, 387133057801363ull}}, {{16896278651583611772ull, 309706446241090ull}}, {{8587301768824227220ull, 495530313985745ull}}, {{6869841415059381776ull, 396424251188596ull}}, {{1806524317305595097ull, 317139400950877ull}}, {{6579787722430862479ull, 507423041521403ull}}, {{12642527807428510630ull, 405938433217122ull}}, {{2735324616458987857ull, 324750746573698ull}}, {{687170571592470248ull, 519601194517917ull}}, {{11617782901499707168ull, 415680955614333ull}}, {{16672923950683586381ull, 332544764491466ull}}, {{851236617900365947ull, 532071623186347ull}}, {{11749035738546023727ull, 425657298549077ull}}, {{2020530961352998335ull, 340525838839262ull}}, {{6922198352906707660ull, 544841342142819ull}}, {{9227107497067276451ull, 435873073714255ull}}, {{7381685997653821161ull, 348698458971404ull}}, {{742651152020382888ull, 557917534354247ull}}, {{11662167365842037280ull, 446334027483397ull}}, {{1951036263189809178ull, 357067221986718ull}}, {{8939526640035667988ull, 285653777589374ull}}, {{3235196179831337812ull, 457046044142999ull}}, {{6277505758606980573ull, 365636835314399ull}}, {{8711353421627494781ull, 292509468251519ull}}, {{2870119030378260681ull, 468015149202431ull}}, {{17053490483270249837ull, 374412119361944ull}}, {{17332141201358110193ull, 299529695489555ull}}, {{9284681848463424693ull, 479247512783289ull}}, {{11117094293512650077ull, 383398010226631ull}}, {{5204326620068209739ull, 306718408181305ull}}, {{8326922592109135582ull, 490749453090088ull}}, {{14040235703171129112ull, 392599562472070ull}}, {{11232188562536903290ull, 314079649977656ull}}, {{10592804070575224617ull, 502527439964250ull}}, {{8474243256460179694ull, 402021951971400ull}}, {{6779394605168143755ull, 321617561577120ull}}, {{10847031368269030008ull, 514588098523392ull}}, {{1298927465131403360ull, 411670478818714ull}}, {{4728490786847033011ull, 329336383054971ull}}, {{186887629471432172ull, 526938212887954ull}}, {{3838858918319056060ull, 421550570310363ull}}, {{10449784764139065495ull, 337240456248290ull}}, {{16719655622622504792ull, 539584729997264ull}}, {{17065073312839914156ull, 431667783997811ull}}, {{9962709835530021002ull, 345334227198249ull}}, {{4872289292622302634ull, 552534763517199ull}}, {{7587180248839752430ull, 442027810813759ull}}, {{9759093013813712267ull, 353622248651007ull}}, {{428576781567149167ull, 282897798920806ull}}, {{11753769294733169637ull, 452636478273289ull}}, {{13092364250528446033ull, 362109182618631ull}}, {{6784542585680846503ull, 289687346094905ull}}, {{10855268137089354405ull, 463499753751848ull}}, {{16062912139155304170ull, 370799803001478ull}}, {{1782283267098512367ull, 296639842401183ull}}, {{17609048486325261080ull, 474623747841892ull}}, {{6708541159576388217ull, 379698998273514ull}}, {{9056181742403020897ull, 303759198618811ull}}, {{7111193158361012789ull, 486014717790098ull}}, {{13067652156172630878ull, 388811774232078ull}}, {{17832819354421925348ull, 311049419385662ull}}, {{13775115708107439265ull, 497679071017060ull}}, {{11020092566485951412ull, 398143256813648ull}}, {{16194771682672581776ull, 318514605450918ull}}, {{3775541803824668902ull, 509623368721470ull}}, {{3020433443059735122ull, 407698694977176ull}}, {{17173742013415429390ull, 326158955981740ull}}, {{9031243147755135408ull, 521854329570785ull}}, {{7224994518204108327ull, 417483463656628ull}}, {{13158693244047107308ull, 333986770925302ull}}, {{6296513931507730400ull, 534378833480484ull}}, {{8726559959948094643ull, 427503066784387ull}}, {{18049294412184206684ull, 342002453427509ull}}, {{17810824615268999725ull, 547203925484015ull}}, {{14248659692215199780ull, 437763140387212ull}}, {{4020230124288339177ull, 350210512309770ull}}, {{6432368198861342684ull, 560336819695632ull}}, {{16213941003314805117ull, 448269455756505ull}}, {{12971152802651844093ull, 358615564605204ull}}, {{14066271056863385598ull, 286892451684163ull}}, {{369940802529955017ull, 459027922694662ull}}, {{11363999086249694983ull, 367222338155729ull}}, {{12780548083741666310ull, 293777870524583ull}}, {{16759528119244755773ull, 470044592839333ull}}, {{2339576051170073649ull, 376035674271467ull}}, {{12939707285161789888ull, 300828539417173ull}}, {{17014182841516953498ull, 481325663067477ull}}, {{6232648643729742152ull, 385060530453982ull}}, {{16054165359209524691ull, 308048424363185ull}}, {{7239920501025687890ull, 492877478981097ull}}, {{16859982845046281282ull, 394301983184877ull}}, {{6109288646553204379ull, 315441586547902ull}}, {{13464210649227037330ull, 504706538476643ull}}, {{18150066148865450510ull, 403765230781314ull}}, {{18209401733834270731ull, 323012184625051ull}}, {{3309601070941460908ull, 516819495400083ull}}, {{10026378486236989373ull, 413455596320066ull}}, {{4331753974247681175ull, 330764477056053ull}}, {{3241457544054379557ull, 529223163289685ull}}, {{2593166035243503645ull, 423378530631748ull}}, {{9453230457678623562ull, 338702824505398ull}}, {{11435819917543887377ull, 541924519208637ull}}, {{1769958304551289255ull, 433539615366910ull}}, {{1415966643641031404ull, 346831692293528ull}}, {{17022941888793291540ull, 554930707669644ull}}, {{17307702325776543555ull, 443944566135715ull}}, {{13846161860621234844ull, 355155652908572ull}}, {{3698231859013167228ull, 284124522326858ull}}, {{2227822159679157243ull, 454599235722973ull}}, {{9160955357227146440ull, 363679388578378ull}}, {{14707461915265537799ull, 290943510862702ull}}, {{8774543805457219185ull, 465509617380324ull}}, {{10708983859107685671ull, 372407693904259ull}}, {{12256535902028058860ull, 297926155123407ull}}, {{4853062184277252884ull, 476681848197452ull}}, {{14950496191647533277ull, 381345478557961ull}}, {{8271048138576116298ull, 305076382846369ull}}, {{2165630577496055107ull, 488122212554191ull}}, {{16489899720964485379ull, 390497770043352ull}}, {{5813222147287767656ull, 312398216034682ull}}, {{12990504250402338574ull, 499837145655491ull}}, {{6703054585579960536ull, 399869716524393ull}}, {{12741141297947789075ull, 319895773219514ull}}, {{9317779632490731550ull, 511833237151223ull}}, {{14832921335476405887ull, 409466589720978ull}}, {{798290624155393740ull, 327573271776783ull}}, {{16034660257616271276ull, 524117234842852ull}}, {{5449030576609196375ull, 419293787874282ull}}, {{15427270905513088069ull, 335435030299425ull}}, {{6236889375111389295ull, 536696048479081ull}}, {{1300162685347201113ull, 429356838783265ull}}, {{1040130148277760890ull, 343485471026612ull}}, {{5353557051986327748ull, 549576753642579ull}}, {{7972194456330972521ull, 439661402914063ull}}, {{13756453194548598663ull, 351729122331250ull}}, {{3563581037568206246ull, 562766595730001ull}}, {{17608260089022206289ull, 450213276584000ull}}, {{14086608071217765031ull, 360170621267200ull}}, {{11269286456974212025ull, 288136497013760ull}}, {{18030858331158739240ull, 461018395222016ull}}, {{10735337850185081069ull, 368814716177613ull}}, {{15966967909631885501ull, 295051772942090ull}}, {{7100404581701465186ull, 472082836707345ull}}, {{5680323665361172149ull, 377666269365876ull}}, {{854910117547027396ull, 302133015492701ull}}, {{12435902632300974803ull, 483412824788321ull}}, {{6259373291098869519ull, 386730259830657ull}}, {{16075545077104826585ull, 309384207864525ull}}, {{7274128049658170920ull, 495014732583241ull}}, {{2129953624984626413ull, 396011786066593ull}}, {{9082660529471521777ull, 316809428853274ull}}, {{3464210402928703873ull, 506895086165239ull}}, {{6460717137084873422ull, 405516068932191ull}}, {{1479224894925988414ull, 324412855145753ull}}, {{17124155090849222756ull, 519060568233204ull}}, {{17388672887421288528ull, 415248454586563ull}}, {{2842891865711299852ull, 332198763669251ull}}, {{15616673429363810734ull, 531518021870801ull}}, {{8803989928749138264ull, 425214417496641ull}}, {{3353843128257400288ull, 340171533997313ull}}, {{1676800190469930137ull, 544274454395701ull}}, {{16098835411343585403ull, 435419563516560ull}}, {{12879068329074868322ull, 348335650813248ull}}, {{16917160511777878992ull, 557337041301197ull}}, {{6155030779938482547ull, 445869633040958ull}}, {{12302722253434606684ull, 356695706432766ull}}, {{6152828988005775024ull, 285356565146213ull}}, {{6155177566067329716ull, 456570504233941ull}}, {{1234793238111953449ull, 365256403387153ull}}, {{8366532219973383406ull, 292205122709722ull}}, {{17075800366699323773ull, 467528196335555ull}}, {{13660640293359459018ull, 374022557068444ull}}, {{14617861049429477537ull, 299218045654755ull}}, {{4941833605377612444ull, 478748873047609ull}}, {{7642815699044000278ull, 382999098438087ull}}, {{17182299003460931192ull, 306399278750469ull}}, {{16423631961311758938ull, 490238846000751ull}}, {{9449556754307496827ull, 392191076800601ull}}, {{3870296588704087139ull, 313752861440481ull}}, {{17260520986152270392ull, 502004578304769ull}}, {{17497765603663726636ull, 401603662643815ull}}, {{13998212482930981309ull, 321282930115052ull}}, {{7639744713721928802ull, 514052688184084ull}}, {{9801144585719453365ull, 411242150547267ull}}, {{462218039091742045ull, 328993720437814ull}}, {{8118246492030607919ull, 526389952700502ull}}, {{17562643637850217305ull, 421111962160401ull}}, {{10360766095538263520ull, 336889569728321ull}}, {{9198528123377400987ull, 539023311565314ull}}, {{11048171313443831112ull, 431218649252251ull}}, {{5149188236013154567ull, 344974919401801ull}}, {{860003548137226661ull, 551959871042882ull}}, {{11756049282735512298ull, 441567896834305ull}}, {{9404839426188409838ull, 353254317467444ull}}, {{11213220355692638194ull, 282603453973955ull}}, {{17941152569108221110ull, 452165526358328ull}}, {{3284875611060845918ull, 361732421086663ull}}, {{10006598118332497381ull, 289385936869330ull}}, {{16010556989331995810ull, 463017498990928ull}}, {{1740399147239865678ull, 370413999192743ull}}, {{8771016947275713189ull, 296331199354194ull}}, {{2965580671415410133ull, 474129918966711ull}}, {{17129859796099969399ull, 379303935173368ull}}, {{2635841392654244550ull, 303443148138695ull}}, {{4217346228246791280ull, 485509037021912ull}}, {{14441923426823163993ull, 388407229617529ull}}, {{15242887556200441518ull, 310725783694023ull}}, {{2252527201469244489ull, 497161253910438ull}}, {{9180719390659216238ull, 397729003128350ull}}, {{7344575512527372990ull, 318183202502680ull}}, {{11751320820043796785ull, 509093124004288ull}}, {{16779754285518858074ull, 407274499203430ull}}, {{13423803428415086459ull, 325819599362744ull}}, {{10410039041238407365ull, 521311358980391ull}}, {{4638682418248815569ull, 417049087184313ull}}, {{11089643564082873101ull, 333639269747450ull}}, {{17743429702532596963ull, 533822831595920ull}}, {{14194743762026077570ull, 427058265276736ull}}, {{7666446194878951733ull, 341646612221389ull}}, {{1198267467580591803ull, 546634579554223ull}}, {{8337311603548294089ull, 437307663643378ull}}, {{14048546912322455917ull, 349846130914702ull}}, {{7720279800748288175ull, 559753809463524ull}}, {{9865572655340540863ull, 447803047570819ull}}, {{11581806939014343014ull, 358242438056655ull}}, {{9265445551211474411ull, 286593950445324ull}}, {{3756666437712628088ull, 458550320712519ull}}, {{6694681964912012793ull, 366840256570015ull}}, {{5355745571929610235ull, 293472205256012ull}}, {{12258541729829286699ull, 469555528409619ull}}, {{13496182198605339682ull, 375644422727695ull}}, {{10796945758884271746ull, 300515538182156ull}}, {{9896415584731014147ull, 480824861091450ull}}, {{7917132467784811318ull, 384659888873160ull}}, {{6333705974227849054ull, 307727911098528ull}}, {{6444580744022648163ull, 492364657757645ull}}, {{5155664595218118531ull, 393891726206116ull}}, {{435182861432584501ull, 315113380964893ull}}, {{15453687837259776495ull, 504181409543828ull}}, {{1294903825582090226ull, 403345127635063ull}}, {{8414620689949492827ull, 322676102108050ull}}, {{13463393103919188524ull, 516281763372880ull}}, {{10770714483135350819ull, 413025410698304ull}}, {{12305920401250190978ull, 330420328558643ull}}, {{16000123827258395243ull, 528672525693829ull}}, {{16489447876548626517ull, 422938020555063ull}}, {{2123511857013170244ull, 338350416444051ull}}, {{14465665415446803360ull, 541360666310481ull}}, {{7883183517615532365ull, 433088533048385ull}}, {{6306546814092425892ull, 346470826438708ull}}, {{6401126087805971104ull, 554353322301933ull}}, {{12499598499728597530ull, 443482657841546ull}}, {{6310329985040967700ull, 354786126273237ull}}, {{16116310432258505130ull, 283828901018589ull}}, {{14718050247387877238ull, 454126241629743ull}}, {{706393753684570821ull, 363300993303795ull}}, {{565115002947656657ull, 290640794643036ull}}, {{11972230448941981621ull, 465025271428857ull}}, {{2199086729669764650ull, 372020217143086ull}}, {{16516664642703453013ull, 297616173714468ull}}, {{4290570539874062881ull, 476185877943150ull}}, {{3432456431899250305ull, 380948702354520ull}}, {{2745965145519400244ull, 304758961883616ull}}, {{15461590677056771360ull, 487614339013785ull}}, {{12369272541645417088ull, 390091471211028ull}}, {{17274115662800154317ull, 312073176968822ull}}, {{12881189801512605614ull, 499317083150116ull}}, {{6615603026468174168ull, 399453666520093ull}}, {{12671180050658359981ull, 319562933216074ull}}, {{9205841636827645000ull, 511300693145719ull}}, {{11054022124204026323ull, 409040554516575ull}}, {{8843217699363221058ull, 327232443613260ull}}, {{14149148318981153694ull, 523571909781216ull}}, {{7629969840443012632ull, 418857527824973ull}}, {{13482673501838230752ull, 335086022259978ull}}, {{17882928788199258880ull, 536137635615965ull}}, {{14306343030559407104ull, 428910108492772ull}}, {{4066376794963705036ull, 343128086794218ull}}, {{2816854057200017735ull, 549004938870749ull}}, {{5942832060501924511ull, 439203951096599ull}}, {{8443614463143449932ull, 351363160877279ull}}, {{2441736696803788922ull, 562181057403647ull}}, {{13021435801668762107ull, 449744845922917ull}}, {{3038451011851189039ull, 359795876738334ull}}, {{6120109624222861555ull, 287836701390667ull}}, {{13481524213498488811ull, 460538722225067ull}}, {{3406521741314970402ull, 368430977780054ull}}, {{6414566207793886645ull, 294744782224043ull}}, {{6573957117728308309ull, 471591651558469ull}}, {{8948514508924556970ull, 377273321246775ull}}, {{7158811607139645576ull, 301818656997420ull}}, {{11454098571423432922ull, 482909851195872ull}}, {{1784581227654925691ull, 386327880956698ull}}, {{8806362611607761199ull, 309062304765358ull}}, {{10400831363830507596ull, 494499687624573ull}}, {{15699362720548226723ull, 395599750099658ull}}, {{1491443732212850409ull, 316479800079727ull}}, {{6075658786282470977ull, 506367680127563ull}}, {{12239224658509797428ull, 405094144102050ull}}, {{9791379726807837942ull, 324075315281640ull}}, {{15666207562892540708ull, 518520504450624ull}}, {{16222314865055942890ull, 414816403560499ull}}, {{16667200706786664635ull, 331853122848399ull}}, {{15599474686632932446ull, 530964996557439ull}}, {{16168928564048256280ull, 424771997245951ull}}, {{9245794036496694701ull, 339817597796761ull}}, {{7414572828910890875ull, 543708156474818ull}}, {{13310355892612533346ull, 434966525179854ull}}, {{14337633528831937000ull, 347973220143883ull}}, {{804120757679637262ull, 556757152230214ull}}, {{4332645420885620132ull, 445405721784171ull}}, {{18223511595676137399ull, 356324577427336ull}}, {{10889460461798999596ull, 285059661941869ull}}, {{6355090294652668384ull, 456095459106991ull}}, {{1394723420980224384ull, 364876367285593ull}}, {{8494476366268000153ull, 291901093828474ull}}, {{2523115741803069276ull, 467041750125559ull}}, {{5707841408184365744ull, 373633400100447ull}}, {{15634319570773223564ull, 298906720080357ull}}, {{10257516054269516411ull, 478250752128572ull}}, {{827315213931792482ull, 382600601702858ull}}, {{8040549800629254632ull, 306080481362286ull}}, {{5486182051522986765ull, 489728770179658ull}}, {{11767643270702210058ull, 391783016143726ull}}, {{5724765801819857723ull, 313426412914981ull}}, {{1780927653427951711ull, 501482260663970ull}}, {{1424742122742361369ull, 401185808531176ull}}, {{15897188957161530388ull, 320948646824940ull}}, {{6988758257748897005ull, 513517834919905ull}}, {{5591006606199117604ull, 410814267935924ull}}, {{8162154099701204406ull, 328651414348739ull}}, {{1991400115296196080ull, 525842262957983ull}}, {{8971817721720777511ull, 420673810366386ull}}, {{3488105362634711685ull, 336539048293109ull}}, {{12959666209699359343ull, 538462477268974ull}}, {{14057081782501397798ull, 430769981815179ull}}, {{14935014240743028561ull, 344615985452143ull}}, {{1759929896737383759ull, 551385576723430ull}}, {{1407943917389907007ull, 441108461378744ull}}, {{4815703948653835929ull, 352886769102995ull}}, {{3852563158923068743ull, 282309415282396ull}}, {{17232147498502640958ull, 451695064451833ull}}, {{2717671554576381797ull, 361356051561467ull}}, {{13242183687886836407ull, 289084841249173ull}}, {{17498145085877027929ull, 462535745998677ull}}, {{6619818439217801696ull, 370028596798942ull}}, {{16363901195599972327ull, 296022877439153ull}}, {{4046149024508493784ull, 473636603902646ull}}, {{17994314478574436320ull, 378909283122116ull}}, {{10706102768117638732ull, 303127426497693ull}}, {{13440415614246311649ull, 485003882396309ull}}, {{14441681306138959642ull, 388003105917047ull}}, {{4174647415427347067ull, 310402484733638ull}}, {{2990087049941844985ull, 496643975573821ull}}, {{17149464898921117280ull, 397315180459056ull}}, {{10030223104394983501ull, 317852144367245ull}}, {{16048356967031973602ull, 508563430987592ull}}, {{5459987944141758235ull, 406850744790074ull}}, {{8057339170055316911ull, 325480595832059ull}}, {{1823696227862776089ull, 520768953331295ull}}, {{1458956982290220871ull, 416615162665036ull}}, {{15924560844799817989ull, 333292130132028ull}}, {{3343204463228246844ull, 533267408211246ull}}, {{17431958829550238768ull, 426613926568996ull}}, {{10256218248898280691ull, 341291141255197ull}}, {{1652553939269607813ull, 546065826008316ull}}, {{16079438410383327543ull, 436852660806652ull}}, {{5484853098822841388ull, 349482128645322ull}}, {{12465113772858456544ull, 559171405832515ull}}, {{9972091018286765235ull, 447337124666012ull}}, {{598975185145591542ull, 357869699732810ull}}, {{479180148116473233ull, 286295759786248ull}}, {{15524083495953998467ull, 458073215657996ull}}, {{8729917982021288450ull, 366458572526397ull}}, {{18051980829842761729ull, 293166858021117ull}}, {{14125774068780777475ull, 469066972833788ull}}, {{232572810798891010ull, 375253578267031ull}}, {{14943453507606754101ull, 300202862613624ull}}, {{12841479167945075592ull, 480324580181799ull}}, {{13962532149097970797ull, 384259664145439ull}}, {{14859374534020286960ull, 307407731316351ull}}, {{16396301624948638490ull, 491852370106162ull}}, {{5738343670475090146ull, 393481896084930ull}}, {{4590674936380072117ull, 314785516867944ull}}, {{14723777527691936033ull, 503656826988710ull}}, {{11779022022153548826ull, 402925461590968ull}}, {{16801915247206659707ull, 322340369272774ull}}, {{15815017951304924563ull, 515744590836439ull}}, {{16341363175785849973ull, 412595672669151ull}}, {{9383741725886769655ull, 330076538135321ull}}, {{7635289131935010802ull, 528122461016514ull}}, {{9797580120289918965ull, 422497968813211ull}}, {{4148715281490024849ull, 337998375050569ull}}, {{14016642079867860405ull, 540797400080910ull}}, {{11213313663894288324ull, 432637920064728ull}}, {{16349348560599251305ull, 346110336051782ull}}, {{11401562437991160796ull, 553776537682852ull}}, {{1742552320909107990ull, 443021230146282ull}}, {{12462088300953017362ull, 354416984117025ull}}, {{9969670640762413889ull, 283533587293620ull}}, {{15951473025219862223ull, 453653739669792ull}}, {{5382480790692069132ull, 362922991735834ull}}, {{7995333447295565629ull, 290338393388667ull}}, {{16481882330414815329ull, 464541429421867ull}}, {{5806808234848031617ull, 371633143537494ull}}, {{8334795402620335617ull, 297306514829995ull}}, {{13335672644192536987ull, 475690423727992ull}}, {{3289840485870208943ull, 380552338982394ull}}, {{6321221203438077478ull, 304441871185915ull}}, {{10113953925500923964ull, 487106993897464ull}}, {{11780511955142649495ull, 389685595117971ull}}, {{5735060749372209272ull, 311748476094377ull}}, {{12865446013737445159ull, 498797561751003ull}}, {{17671054440473776774ull, 399038049400802ull}}, {{6758145922895200772ull, 319230439520642ull}}, {{14502382291374231559ull, 510768703233027ull}}, {{4223208203615564601ull, 408614962586422ull}}, {{14446613007118182650ull, 326891970069137ull}}, {{8357185552421450948ull, 523027152110620ull}}, {{6685748441937160758ull, 418421721688496ull}}, {{1659249938807818283ull, 334737377350797ull}}, {{6344148716834419577ull, 535579803761275ull}}, {{5075318973467535661ull, 428463843009020ull}}, {{4060255178774028529ull, 342771074407216ull}}, {{17564454730264176616ull, 548433719051545ull}}, {{14051563784211341293ull, 438746975241236ull}}, {{7551902212627162711ull, 350997580192989ull}}, {{1014997095977729368ull, 561596128308783ull}}, {{8190695306266004141ull, 449276902647026ull}}, {{2863207430270892990ull, 359421522117621ull}}, {{17047961203184355684ull, 287537217694096ull}}, {{1451296221901596833ull, 460059548310555ull}}, {{1161036977521277466ull, 368047638648444ull}}, {{4618178396758932296ull, 294438110918755ull}}, {{7389085434814291674ull, 471100977470008ull}}, {{13289965977335253985ull, 376880781976006ull}}, {{6942623967126292865ull, 301504625580805ull}}, {{11108198347402068584ull, 482407400929288ull}}, {{16265256307405475514ull, 385925920743430ull}}, {{13012205045924380411ull, 308740736594744ull}}, {{9751481629253277688ull, 493985178551591ull}}, {{4111836488660711827ull, 395188142841273ull}}, {{10668166820412390108ull, 316150514273018ull}}, {{13379718097917913850ull, 505840822836829ull}}, {{14393123293076241403ull, 404672658269463ull}}, {{446452190235262153ull, 323738126615571ull}}, {{11782369948602150414ull, 517981002584913ull}}, {{16804593588365540978ull, 414384802067930ull}}, {{13443674870692432782ull, 331507841654344ull}}, {{10441833348882161482ull, 530412546646951ull}}, {{4664117864363818862ull, 424330037317561ull}}, {{41945476749144767ull, 339464029854049ull}}, {{7445810392282452273ull, 543142447766478ull}}, {{13335345943309782465ull, 434513958213182ull}}, {{3289579125164005326ull, 347611166570546ull}}, {{16331373044488139491ull, 556177866512873ull}}, {{1997051991364780623ull, 444942293210299ull}}, {{5286990407833734821ull, 355953834568239ull}}, {{7918941141008898180ull, 284763067654591ull}}, {{5291608196130416442ull, 455620908247346ull}}, {{543937742162422831ull, 364496726597877ull}}, {{11503196637955669234ull, 291597381278301ull}}, {{11026416991245250128ull, 466555810045282ull}}, {{1442435963512379456ull, 373244648036226ull}}, {{15911344029777544858ull, 298595718428980ull}}, {{7011406373934520156ull, 477753149486369ull}}, {{9298473913889526448ull, 382202519589095ull}}, {{7438779131111621158ull, 305762015671276ull}}, {{4523348980294773207ull, 489219225074042ull}}, {{14686725628461549535ull, 391375380059233ull}}, {{681334058543508659ull, 313100304047387ull}}, {{4779483308411524177ull, 500960486475819ull}}, {{7512935461471129665ull, 400768389180655ull}}, {{6010348369176903732ull, 320614711344524ull}}, {{16995255020166866618ull, 512983538151238ull}}, {{2528157571907762324ull, 410386830520991ull}}, {{16779921316493851152ull, 328309464416792ull}}, {{12090478847422520551ull, 525295143066868ull}}, {{17051080707421837087ull, 420236114453494ull}}, {{17330213380679379993ull, 336188891562795ull}}, {{9281597335377456373ull, 537902226500473ull}}, {{14803975497785785745ull, 430321781200378ull}}, {{775133954002897626ull, 344257424960303ull}}, {{15997609585372277495ull, 550811879936484ull}}, {{16487436483039732319ull, 440649503949187ull}}, {{5811251556947965209ull, 352519603159350ull}}, {{4649001245558372167ull, 282015682527480ull}}, {{7438401992893395467ull, 451225092043968ull}}, {{13329419223798537020ull, 360980073635174ull}}, {{14352884193780739939ull, 288784058908139ull}}, {{11896568265823452933ull, 462054494253023ull}}, {{16895952242142582993ull, 369643595402418ull}}, {{2448715349488335425ull, 295714876321935ull}}, {{3917944559181336680ull, 473143802115096ull}}, {{17891750906312710636ull, 378515041692076ull}}, {{10624051910308258186ull, 302812033353661ull}}, {{9619785427009392451ull, 484499253365858ull}}, {{15074525971091334607ull, 387599402692686ull}}, {{8370271962131157363ull, 310079522154149ull}}, {{2324388695184120811ull, 496127235446639ull}}, {{5548859770889206972ull, 396901788357311ull}}, {{749739001969455254ull, 317521430685849ull}}, {{8578280032634949053ull, 508034289097358ull}}, {{14241321655591779889ull, 406427431277886ull}}, {{7703708509731513588ull, 325141945022309ull}}, {{1257887171344690771ull, 520227112035695ull}}, {{1006309737075752617ull, 416181689628556ull}}, {{15562443048628243386ull, 332945351702844ull}}, {{13831862433579458449ull, 532712562724551ull}}, {{7376141132121656436ull, 426170050179641ull}}, {{2211564090955414825ull, 340936040143713ull}}, {{18295897804496305013ull, 545497664229940ull}}, {{14636718243597044011ull, 436398131383952ull}}, {{4330676965393814562ull, 349118505107162ull}}, {{10618431959372013623ull, 558589608171459ull}}, {{12184094382239521221ull, 446871686537167ull}}, {{2368577876307796330ull, 357497349229734ull}}, {{5584211115788147387ull, 285997879383787ull}}, {{12624086600002946143ull, 457596607014059ull}}, {{13788618094744267238ull, 366077285611247ull}}, {{3652196846311593144ull, 292861828488998ull}}, {{2154166139356638707ull, 468578925582397ull}}, {{12791379355711041935ull, 374863140465917ull}}, {{2854405855085012902ull, 299890512372734ull}}, {{11945746997619841289ull, 479824819796374ull}}, {{13245946412837783355ull, 383859855837099ull}}, {{14286105945012137007ull, 307087884669679ull}}, {{11789723067793688242ull, 491340615471487ull}}, {{2053080824751129947ull, 393072492377190ull}}, {{1642464659800903957ull, 314457993901752ull}}, {{6317292270423356655ull, 503132790242803ull}}, {{12432531445822505970ull, 402506232194242ull}}, {{2567327527174184130ull, 322004985755394ull}}, {{11486421672962515254ull, 515207977208630ull}}, {{9189137338370012203ull, 412166381766904ull}}, {{11040658685437920086ull, 329733105413523ull}}, {{13975705081958761815ull, 527572968661637ull}}, {{3801866436083188805ull, 422058374929310ull}}, {{3041493148866551044ull, 337646699943448ull}}, {{1177040223444571347ull, 540234719909517ull}}, {{12009678622981388047ull, 432187775927613ull}}, {{16986440527868931084ull, 345750220742090ull}}, {{8731560770880738119ull, 553200353187345ull}}, {{6985248616704590495ull, 442560282549876ull}}, {{1898850078621762073ull, 354048226039901ull}}, {{16276475321865050951ull, 283238580831920ull}}, {{7595616441274529906ull, 453181729331073ull}}, {{13455190782503444571ull, 362545383464858ull}}, {{18142850255486576303ull, 290036306771886ull}}, {{3203118705585149823ull, 464058090835019ull}}, {{6251843779210030181ull, 371246472668015ull}}, {{5001475023368024145ull, 296997178134412ull}}, {{11691708852130748956ull, 475195485015059ull}}, {{13042715896446509488ull, 380156388012047ull}}, {{3055475087673386944ull, 304125110409638ull}}, {{1199411325535508787ull, 486600176655421ull}}, {{15716924319396048322ull, 389280141324336ull}}, {{8884190640774928334ull, 311424113059469ull}}, {{3146658581014154366ull, 498278580895151ull}}, {{17274722123778964785ull, 398622864716120ull}}, {{13819777699023171828ull, 318898291772896ull}}, {{14732946688953254279ull, 510237266836634ull}}, {{15475706165904513746ull, 408189813469307ull}}, {{5001867303239790350ull, 326551850775446ull}}, {{624290055699843915ull, 522482961240714ull}}, {{4188780859301785455ull, 417986368992571ull}}, {{18108419946409069657ull, 334389095194056ull}}, {{3148030211061139188ull, 535022552310491ull}}, {{17275819427816552643ull, 428018041848392ull}}, {{6441957912769421468ull, 342414433478714ull}}, {{17685830289914894996ull, 547863093565942ull}}, {{6769966602448095350ull, 438290474852754ull}}, {{9105322096700386603ull, 350632379882203ull}}, {{10879166539978708242ull, 561011807811525ull}}, {{8703333231982966594ull, 448809446249220ull}}, {{6962666585586373275ull, 359047556999376ull}}, {{1880784453727188297ull, 287238045599501ull}}, {{14077301570189232244ull, 459580872959201ull}}, {{7572492441409475472ull, 367664698367361ull}}, {{2368645138385670055ull, 294131758693889ull}}, {{11168529850900892734ull, 470610813910222ull}}, {{1556126251236893541ull, 376488651128178ull}}, {{8623598630473335479ull, 301190920902542ull}}, {{17487106623499247090ull, 481905473444067ull}}, {{6610987669315577025ull, 385524378755254ull}}, {{8978138950194371943ull, 308419503004203ull}}, {{10675673505569084786ull, 493471204806725ull}}, {{8540538804455267829ull, 394776963845380ull}}, {{6832431043564214263ull, 315821571076304ull}}, {{18310587299186563468ull, 505314513722086ull}}, {{10959121024607340451ull, 404251610977669ull}}, {{12456645634427782684ull, 323401288782135ull}}, {{1483888941374900678ull, 517442062051417ull}}, {{12255157597325651512ull, 413953649641133ull}}, {{17182823707344341856ull, 331162919712906ull}}, {{1667076228557574707ull, 529860671540651ull}}, {{16091056241813701059ull, 423888537232520ull}}, {{12872844993450960847ull, 339110829786016ull}}, {{13217854360037716709ull, 542577327657626ull}}, {{6884934673288263044ull, 434061862126101ull}}, {{1818598923888700112ull, 347249489700881ull}}, {{13977804722447651149ull, 555599183521409ull}}, {{14871592592700031242ull, 444479346817127ull}}, {{4518576444676204347ull, 355583477453702ull}}, {{14682907599966694447ull, 284466781962961ull}}, {{16113954530462890469ull, 455146851140738ull}}, {{1823117180144581406ull, 364117480912591ull}}, {{16215889003083306417ull, 291293984730072ull}}, {{11188027145965648975ull, 466070375568116ull}}, {{5261072902030608857ull, 372856300454493ull}}, {{11587555951108307732ull, 298285040363594ull}}, {{7472043077547561402ull, 477256064581751ull}}, {{2288285647296138798ull, 381804851665401ull}}, {{16588023776804552331ull, 305443881332320ull}}, {{8094093969177732114ull, 488710210131713ull}}, {{13853972804826006338ull, 390968168105370ull}}, {{11083178243860805070ull, 312774534484296ull}}, {{10354387560693467466ull, 500439255174874ull}}, {{11972858863296684296ull, 400351404139899ull}}, {{13267635905379257760ull, 320281123311919ull}}, {{10160171004381081446ull, 512449797299071ull}}, {{4438787988762954834ull, 409959837839257ull}}, {{14619076835236094836ull, 327967870271405ull}}, {{4943778862668200123ull, 524748592434249ull}}, {{7644371904876470421ull, 419798873947399ull}}, {{9804846338643086660ull, 335839099157919ull}}, {{4619707697603207687ull, 537342558652671ull}}, {{6417343340655826ull, 429874046922137ull}}, {{11073180318898255630ull, 343899237537709ull}}, {{6649042066011478039ull, 550238780060335ull}}, {{5319233652809182431ull, 440191024048268ull}}, {{11634084551731166591ull, 352152819238614ull}}, {{12996616456126843596ull, 281722255390891ull}}, {{13415888700319129108ull, 450755608625426ull}}, {{7043362145513392963ull, 360604486900341ull}}, {{1945340901668804047ull, 288483589520273ull}}, {{17869940701637727768ull, 461573743232436ull}}, {{10606603746568271891ull, 369258994585949ull}}, {{12174631811996527836ull, 295407195668759ull}}, {{8411364454968713569ull, 472651513070015ull}}, {{6729091563974970855ull, 378121210456012ull}}, {{16451319695405707653ull, 302496968364809ull}}, {{15254065068423401276ull, 483995149383695ull}}, {{12203252054738721021ull, 387196119506956ull}}, {{6073252829049066493ull, 309756895605565ull}}, {{9717204526478506390ull, 495611032968904ull}}, {{11463112435924715435ull, 396488826375123ull}}, {{16549187578223592994ull, 317191061100098ull}}, {{4342607236706286852ull, 507505697760158ull}}, {{10852783418848850128ull, 406004558208126ull}}, {{4992877920337169779ull, 324803646566501ull}}, {{609907043055651000ull, 519685834506402ull}}, {{11555972078670251770ull, 415748667605121ull}}, {{5555428848194291092ull, 332598934084097ull}}, {{12578034971852776071ull, 532158294534555ull}}, {{10062427977482220857ull, 425726635627644ull}}, {{11739291196727687009ull, 340581308502115ull}}, {{336121841054747598ull, 544930093603385ull}}, {{268897472843798078ull, 435944074882708ull}}, {{7593815607758859109ull, 348755259906166ull}}, {{4771407342930353928ull, 558008415849866ull}}, {{127777059602372819ull, 446406732679893ull}}, {{7480919277165718902ull, 357125386143914ull}}, {{9674084236474485445ull, 285700308915131ull}}, {{8099837148875356065ull, 457120494264210ull}}, {{6479869719100284852ull, 365696395411368ull}}, {{12562593404764048528ull, 292557116329094ull}}, {{9032103003396746675ull, 468091386126551ull}}, {{3536333587975487017ull, 374473108901241ull}}, {{17586462129348030906ull, 299578487120992ull}}, {{13380944147989208158ull, 479325579393588ull}}, {{18083452947875187172ull, 383460463514870ull}}, {{14466762358300149738ull, 306768370811896ull}}, {{15768122143796418934ull, 490829393299034ull}}, {{16303846529779045471ull, 392663514639227ull}}, {{5664379594339415730ull, 314130811711382ull}}, {{12752356165684975491ull, 502609298738211ull}}, {{6512536117806070070ull, 402087438990569ull}}, {{8899377708986766379ull, 321669951192455ull}}, {{14239004334378826207ull, 514671921907928ull}}, {{323157023277329996ull, 411737537526343ull}}, {{7637223248105684643ull, 329390030021074ull}}, {{1151510752743364459ull, 527024048033719ull}}, {{4610557416936601890ull, 421619238426975ull}}, {{3688445933549281512ull, 337295390741580ull}}, {{5901513493678850420ull, 539672625186528ull}}, {{12099908424426900982ull, 431738100149222ull}}, {{2301229110057700139ull, 345390480119378ull}}, {{18439361835059961516ull, 552624768191004ull}}, {{18440838282789879536ull, 442099814552803ull}}, {{3684624182006172659ull, 353679851642243ull}}, {{10326396975088758774ull, 282943881313794ull}}, {{5454188715916283068ull, 452710210102071ull}}, {{674002157991116131ull, 362168168081657ull}}, {{11607248170618623875ull, 289734534465325ull}}, {{124852999280246584ull, 463575255144521ull}}, {{14857277658391838560ull, 370860204115616ull}}, {{8196473311971560524ull, 296688163292493ull}}, {{9425008484412586516ull, 474701061267989ull}}, {{11229355602271979536ull, 379760849014391ull}}, {{5294135667075673305ull, 303808679211513ull}}, {{4781268252579166966ull, 486093886738421ull}}, {{135665787321423249ull, 388875109390737ull}}, {{11176579074082869569ull, 311100087512589ull}}, {{6814480074306860341ull, 497760140020143ull}}, {{12830281688929308919ull, 398208112016114ull}}, {{13953574165885357458ull, 318566489612891ull}}, {{14947021035932751287ull, 509706383380626ull}}, {{8268268014004290707ull, 407765106704501ull}}, {{2925265596461522242ull, 326212085363601ull}}, {{15748471398564166557ull, 521939336581761ull}}, {{8909428304109422922ull, 417551469265409ull}}, {{10816891458029448661ull, 334041175412327ull}}, {{2549631073879476565ull, 534465880659724ull}}, {{5729053673845491575ull, 427572704527779ull}}, {{8272591753818303583ull, 342058163622223ull}}, {{9546797991367375410ull, 547293061795557ull}}, {{258740763610079682ull, 437834449436446ull}}, {{14964387869855705038ull, 350267559549156ull}}, {{16564322962285307415ull, 560428095278650ull}}, {{13251458369828245932ull, 448342476222920ull}}, {{10601166695862596745ull, 358673980978336ull}}, {{4791584541948167073ull, 286939184782669ull}}, {{15045232896600887963ull, 459102695652270ull}}, {{12036186317280710371ull, 367282156521816ull}}, {{5939600239082657973ull, 293825725217453ull}}, {{5814011567790342434ull, 470121160347925ull}}, {{4651209254232273947ull, 376096928278340ull}}, {{3720967403385819158ull, 300877542622672ull}}, {{9642896660159220976ull, 481404068196275ull}}, {{7714317328127376781ull, 385123254557020ull}}, {{6171453862501901424ull, 308098603645616ull}}, {{2495628550519221633ull, 492957765832986ull}}, {{16753898099383018599ull, 394366212666388ull}}, {{2335072035280683910ull, 315492970133111ull}}, {{14804161700674825225ull, 504788752212977ull}}, {{4464631731056039534ull, 403831001770382ull}}, {{14639751829070562596ull, 323064801416305ull}}, {{4976858852803348539ull, 516903682266089ull}}, {{7670835896984589154ull, 413522945812871ull}}, {{2447319902845761000ull, 330818356650297ull}}, {{7605060659295127923ull, 529309370640475ull}}, {{6084048527436102339ull, 423447496512380ull}}, {{4867238821948881871ull, 338757997209904ull}}, {{15166279744602031640ull, 542012795535846ull}}, {{8443674980939714989ull, 433610236428677ull}}, {{17822986428977502960ull, 346888189142941ull}}, {{2691336583170632474ull, 555021102628707ull}}, {{13221115710762236949ull, 444016882102965ull}}, {{10576892568609789559ull, 355213505682372ull}}, {{1082816425404011001ull, 284170804545898ull}}, {{16489901539614058894ull, 454673287273436ull}}, {{9502572416949336792ull, 363738629818749ull}}, {{11291406748301379757ull, 290990903854999ull}}, {{6998204353056476642ull, 465585446167999ull}}, {{9287912297187091636ull, 372468356934399ull}}, {{11119678652491583632ull, 297974685547519ull}}, {{6723439399760802842ull, 476759496876031ull}}, {{1689402705066731951ull, 381407597500825ull}}, {{1351522164053385560ull, 305126078000660ull}}, {{2162435462485416897ull, 488201724801056ull}}, {{16487343628955974810ull, 390561379840844ull}}, {{16879223717906690171ull, 312449103872675ull}}, {{8560013874941152658ull, 499918566196281ull}}, {{3158662285211011803ull, 399934852957025ull}}, {{2526929828168809443ull, 319947882365620ull}}, {{4043087725070095108ull, 511916611784992ull}}, {{14302516624281807056ull, 409533289427993ull}}, {{373966855199714675ull, 327626631542395ull}}, {{598346968319543481ull, 524202610467832ull}}, {{11546724018881365754ull, 419362088374265ull}}, {{9237379215105092603ull, 335489670699412ull}}, {{22411485200506873ull, 536783473119060ull}}, {{17929188160405498ull, 429426778495248ull}}, {{7393040980012145045ull, 343541422796198ull}}, {{8139516753277521749ull, 549666276473917ull}}, {{17579659846847748368ull, 439733021179133ull}}, {{2995681433252467725ull, 351786416943307ull}}, {{8482439107945858684ull, 562858267109291ull}}, {{3096602471614776624ull, 450286613687433ull}}, {{9855979606775641945ull, 360229290949946ull}}, {{4195434870678603233ull, 288183432759957ull}}, {{10402044607827675496ull, 461093492415931ull}}, {{4632286871520230073ull, 368874793932745ull}}, {{3705829497216184059ull, 295099835146196ull}}, {{16997373639771625464ull, 472159736233913ull}}, {{2529852467591569401ull, 377727788987131ull}}, {{16781277233040896814ull, 302182231189704ull}}, {{15781997128639703933ull, 483491569903527ull}}, {{5246900073427942500ull, 386793255922822ull}}, {{15265566502968084969ull, 309434604738257ull}}, {{9667511145781294658ull, 495095367581212ull}}, {{355311287141215080ull, 396076294064970ull}}, {{284249029712972064ull, 316861035251976ull}}, {{11522844891766486272ull, 506977656403161ull}}, {{5528927098671278695ull, 405582125122529ull}}, {{8112490493678933279ull, 324465700098023ull}}, {{9290635975144382923ull, 519145120156837ull}}, {{53811150631685692ull, 415316096125470ull}}, {{43048920505348553ull, 332252876900376ull}}, {{11136924717034288655ull, 531604603040601ull}}, {{5220190958885520601ull, 425283682432481ull}}, {{486803952366506158ull, 340226945945985ull}}, {{778886323786409852ull, 544363113513576ull}}, {{15380504317996769175ull, 435490490810860ull}}, {{12304403454397415340ull, 348392392648688ull}}, {{15997696712293954220ull, 557427828237901ull}}, {{9108808555093253053ull, 445942262590321ull}}, {{3597698029332692119ull, 356753810072257ull}}, {{13946204867691884665ull, 285403048057805ull}}, {{3867183714597463848ull, 456644876892489ull}}, {{6783095786419881402ull, 365315901513991ull}}, {{1737127814393994798ull, 292252721211193ull}}, {{17536799761998032970ull, 467604353937908ull}}, {{2961393365372695406ull, 374083483150327ull}}, {{13437161136523887294ull, 299266786520261ull}}, {{14120760188954399025ull, 478826858432418ull}}, {{228561706937788250ull, 383061486745935ull}}, {{182849365550230600ull, 306449189396748ull}}, {{15049954243848010253ull, 490318703034796ull}}, {{8350614580336497879ull, 392254962427837ull}}, {{17748538108494929273ull, 313803969942269ull}}, {{17329614529366155867ull, 502086351907631ull}}, {{10174342808751014371ull, 401669081526105ull}}, {{8139474247000811496ull, 321335265220884ull}}, {{1955112350975567425ull, 514136424353415ull}}, {{1564089880780453940ull, 411309139482732ull}}, {{12319318348850094121ull, 329047311586185ull}}, {{1264165284450598978ull, 526475698537897ull}}, {{12079378671786210152ull, 421180558830317ull}}, {{2284805307945147475ull, 336944447064254ull}}, {{11034386122196056607ull, 539111115302806ull}}, {{5138160083014934962ull, 431288892242245ull}}, {{4110528066411947970ull, 345031113793796ull}}, {{17644891350484847722ull, 552049782070073ull}}, {{3047866636162147208ull, 441639825656059ull}}, {{6127642123671628089ull, 353311860524847ull}}, {{15970160143163033441ull, 282649488419877ull}}, {{10794860970093212213ull, 452239181471804ull}}, {{12325237590816480093ull, 361791345177443ull}}, {{17238887702137004721ull, 289433076141954ull}}, {{16514173879193476584ull, 463092921827127ull}}, {{5832641473870960621ull, 370474337461702ull}}, {{15734159623322499466ull, 296379469969361ull}}, {{17795957767832178500ull, 474207151950978ull}}, {{3168719770040011830ull, 379365721560783ull}}, {{9913673445515830111ull, 303492577248626ull}}, {{8483179883341507531ull, 485588123597802ull}}, {{17854590350898936994ull, 388470498878241ull}}, {{10594323465977239272ull, 310776399102593ull}}, {{13261568730821672512ull, 497242238564149ull}}, {{14298603799399248333ull, 397793790851319ull}}, {{15128231854261308989ull, 318235032681055ull}}, {{5758426893108542767ull, 509176052289689ull}}, {{8296090329228744537ull, 407340841831751ull}}, {{2947523448641085306ull, 325872673465401ull}}, {{15784083962051467460ull, 521396277544641ull}}, {{8937918354899263645ull, 417117022035713ull}}, {{14529032313403231562ull, 333693617628570ull}}, {{4799707627735618884ull, 533909788205713ull}}, {{11218463731672315753ull, 427127830564570ull}}, {{8974770985337852602ull, 341702264451656ull}}, {{6980935947056743518ull, 546723623122650ull}}, {{5584748757645394814ull, 437378898498120ull}}, {{4467799006116315851ull, 349903118798496ull}}, {{18216524854011836332ull, 559844990077593ull}}, {{3505173438983738096ull, 447875992062075ull}}, {{2804138751186990477ull, 358300793649660ull}}, {{2243311000949592381ull, 286640634919728ull}}, {{18346692860486989103ull, 458625015871564ull}}, {{18366703103131501605ull, 366900012697251ull}}, {{11004013667763290961ull, 293520010157801ull}}, {{10227724238937444892ull, 469632016252482ull}}, {{803481761666135267ull, 375705613001986ull}}, {{15400180668300549506ull, 300564490401588ull}}, {{2504196180829417271ull, 480903184642542ull}}, {{13071403388889264786ull, 384722547714033ull}}, {{17835820340595232475ull, 307778038171226ull}}, {{2711870841758999698ull, 492444861073963ull}}, {{9548194302891020405ull, 393955888859170ull}}, {{7638555442312816324ull, 315164711087336ull}}, {{4842991078216685472ull, 504263537739738ull}}, {{11253090492057169024ull, 403410830191790ull}}, {{9002472393645735219ull, 322728664153432ull}}, {{18093304644575086674ull, 516365862645491ull}}, {{10785294900918159016ull, 413092690116393ull}}, {{16006933550218347859ull, 330474152093114ull}}, {{14543047236123625605ull, 528758643348983ull}}, {{566391344673169514ull, 423006914679187ull}}, {{11521159519964266581ull, 338405531743349ull}}, {{7365808787717095560ull, 541448850789359ull}}, {{9581995844915586771ull, 433159080631487ull}}, {{286899046448648771ull, 346527264505190ull}}, {{459038474317838033ull, 554443623208304ull}}, {{4056579594196180750ull, 443554898566643ull}}, {{10623961304840765246ull, 354843918853314ull}}, {{12188517858614522520ull, 283875135082651ull}}, {{12122930944299415386ull, 454200216132242ull}}, {{2319647125955711662ull, 363360172905794ull}}, {{5545066515506479653ull, 290688138324635ull}}, {{8872106424810367445ull, 465101021319416ull}}, {{3408336325106383633ull, 372080817055533ull}}, {{10105366689568927552ull, 297664653644426ull}}, {{8789889073826463438ull, 476263445831082ull}}, {{18099957703286901720ull, 381010756664865ull}}, {{14479966162629521376ull, 304808605331892ull}}, {{8410550601239592908ull, 487693768531028ull}}, {{14107138110475494973ull, 390155014824822ull}}, {{3907012858896575332ull, 312124011859858ull}}, {{2561871759492610208ull, 499398418975773ull}}, {{9428195037077908813ull, 399518735180618ull}}, {{14921253659146147697ull, 319614988144494ull}}, {{12805959410408105345ull, 511383981031191ull}}, {{6555418713584573953ull, 409107184824953ull}}, {{12623032600351479809ull, 327285747859962ull}}, {{5439456901594726401ull, 523657196575940ull}}, {{4351565521275781121ull, 418925757260752ull}}, {{14549298861246355866ull, 335140605808601ull}}, {{15900180548510348740ull, 536224969293762ull}}, {{5341446809324458345ull, 428979975435010ull}}, {{4273157447459566676ull, 343183980348008ull}}, {{3147703101193396359ull, 549094368556813ull}}, {{9896860110438537734ull, 439275494845450ull}}, {{7917488088350830187ull, 351420395876360ull}}, {{12667980941361328299ull, 562272633402176ull}}, {{6445035938347152316ull, 449818106721741ull}}, {{1466679935935811529ull, 359854485377393ull}}, {{8552041578232469870ull, 287883588301914ull}}, {{2615220080946220823ull, 460613741283063ull}}, {{9470873694240797304ull, 368490993026450ull}}, {{7576698955392637843ull, 294792794421160ull}}, {{12122718328628220550ull, 471668471073856ull}}, {{6008825848160666116ull, 377334776859085ull}}, {{4807060678528532893ull, 301867821487268ull}}, {{4001948270903742306ull, 482988514379629ull}}, {{6890907431464904168ull, 386390811503703ull}}, {{12891423574655743981ull, 309112649202962ull}}, {{5868882460481549076ull, 494580238724740ull}}, {{4695105968385239261ull, 395664190979792ull}}, {{14824131218933922378ull, 316531352783833ull}}, {{1582517061842813866ull, 506450164454134ull}}, {{4955362464216161416ull, 405160131563307ull}}, {{15032336415598660103ull, 324128105250645ull}}, {{5604994191248304548ull, 518604968401033ull}}, {{11862692982482464285ull, 414883974720826ull}}, {{5800805571244061105ull, 331907179776661ull}}, {{1902591284506677121ull, 531051487642658ull}}, {{8900770657089162343ull, 424841190114126ull}}, {{3431267710929419551ull, 339872952091301ull}}, {{16558074781712802252ull, 543796723346081ull}}, {{9557111010628331478ull, 435037378676865ull}}, {{7645688808502665183ull, 348029902941492ull}}, {{15922450908346174616ull, 556847844706387ull}}, {{5359263097193119046ull, 445478275765110ull}}, {{4287410477754495237ull, 356382620612088ull}}, {{10808626011687416836ull, 285106096489670ull}}, {{17293801618699866937ull, 456169754383472ull}}, {{6456343665476072903ull, 364935803506778ull}}, {{12543772561864678969ull, 291948642805422ull}}, {{5312640840015845058ull, 467117828488676ull}}, {{560763857270765723ull, 373694262790941ull}}, {{15206006344784253871ull, 298955410232752ull}}, {{9572214892687164901ull, 478328656372404ull}}, {{11347120728891642244ull, 382662925097923ull}}, {{16456394212597134442ull, 306130340078338ull}}, {{4194137851703953168ull, 489808544125342ull}}, {{14423356725588893504ull, 391846835300273ull}}, {{470638936245383833ull, 313477468240219ull}}, {{8131719927476434780ull, 501563949184350ull}}, {{6505375941981147824ull, 401251159347480ull}}, {{5204300753584918259ull, 321000927477984ull}}, {{15705578835219689861ull, 513601483964774ull}}, {{16253811882917662212ull, 410881187171819ull}}, {{16692398321076040093ull, 328704949737455ull}}, {{8261093240012112533ull, 525927919579929ull}}, {{10298223406751600349ull, 420742335663943ull}}, {{15617276354885100926ull, 336593868531154ull}}, {{13919595723590430512ull, 538550189649847ull}}, {{3756978949388523763ull, 430840151719878ull}}, {{10384280788994639657ull, 344672121375902ull}}, {{1857454003423782158ull, 551475394201444ull}}, {{5175312017480936050ull, 441180315361155ull}}, {{4140249613984748840ull, 352944252288924ull}}, {{7001548505929709395ull, 282355401831139ull}}, {{134431165261804062ull, 451768642929823ull}}, {{7486242561693263896ull, 361414914343858ull}}, {{13367691678838431763ull, 289131931475086ull}}, {{14009609056657670175ull, 462611090360138ull}}, {{139640801100405170ull, 370088872288111ull}}, {{14869107899847965429ull, 296071097830488ull}}, {{1654479751305282747ull, 473713756528782ull}}, {{12391630245269957167ull, 378971005223025ull}}, {{9913304196215965734ull, 303176804178420ull}}, {{15861286713945545174ull, 485082886685472ull}}, {{5310331741672615493ull, 388066309348378ull}}, {{11626963022821913041ull, 310453047478702ull}}, {{3845745577547419573ull, 496724875965924ull}}, {{6765945276779845981ull, 397379900772739ull}}, {{9102105036165787108ull, 317903920618191ull}}, {{7184670428381438727ull, 508646272989106ull}}, {{2058387527963240658ull, 406917018391285ull}}, {{1646710022370592526ull, 325533614713028ull}}, {{17392131294760589335ull, 520853783540844ull}}, {{17603053850550381791ull, 416683026832675ull}}, {{14082443080440305433ull, 333346421466140ull}}, {{4085164854994937077ull, 533354274345825ull}}, {{3268131883995949662ull, 426683419476660ull}}, {{2614505507196759729ull, 341346735581328ull}}, {{493859996772905244ull, 546154776930125ull}}, {{395087997418324195ull, 436923821544100ull}}, {{316070397934659356ull, 349539057235280ull}}, {{505712636695454970ull, 559262491576448ull}}, {{7783267738840184622ull, 447409993261158ull}}, {{13605311820555968344ull, 357927994608926ull}}, {{7194900641702864352ull, 286342395687141ull}}, {{4133143397240762317ull, 458147833099426ull}}, {{18063909976760251146ull, 366518266479540ull}}, {{14451127981408200917ull, 293214613183632ull}}, {{8364409511285480174ull, 469143381093812ull}}, {{17759574053254115109ull, 375314704875049ull}}, {{17897008057345202410ull, 300251763900039ull}}, {{17567166447526592887ull, 480402822240063ull}}, {{2985686713795543340ull, 384322257792051ull}}, {{17145944630004075965ull, 307457806233640ull}}, {{8986767334296969928ull, 491932489973825ull}}, {{7189413867437575942ull, 393545991979060ull}}, {{5751531093950060754ull, 314836793583248ull}}, {{5513100935578186883ull, 503738869733197ull}}, {{15478527192688280476ull, 402991095786557ull}}, {{5004124124666803734ull, 322392876629246ull}}, {{627900969983065329ull, 515828602606794ull}}, {{4191669590728362586ull, 412662882085435ull}}, {{3353335672582690069ull, 330130305668348ull}}, {{1675988261390393787ull, 528208489069357ull}}, {{12408837053338045999ull, 422566791255485ull}}, {{9927069642670436799ull, 338053433004388ull}}, {{12193962613530788556ull, 540885492807021ull}}, {{6065821276082720521ull, 432708394245617ull}}, {{15920703465091907387ull, 346166715396493ull}}, {{3337032655695589880ull, 553866744634390ull}}, {{2669626124556471904ull, 443093395707512ull}}, {{13203747343870908492ull, 354474716566009ull}}, {{14252346689838637117ull, 283579773252807ull}}, {{8046359444774178095ull, 453727637204492ull}}, {{17505134000045073445ull, 362982109763593ull}}, {{2936060755810327787ull, 290385687810875ull}}, {{4697697209296524459ull, 464617100497400ull}}, {{3758157767437219567ull, 371693680397920ull}}, {{3006526213949775653ull, 297354944318336ull}}, {{15878488386545372015ull, 475767910909337ull}}, {{5324093079752476966ull, 380614328727470ull}}, {{4259274463801981573ull, 304491462981976ull}}, {{17882885586308901486ull, 487186340771161ull}}, {{10616959654305210865ull, 389749072616929ull}}, {{12182916538186079015ull, 311799258093543ull}}, {{15803317646355816102ull, 498878812949669ull}}, {{16332002931826563205ull, 399103050359735ull}}, {{13065602345461250564ull, 319282440287788ull}}, {{17215614937996090579ull, 510851904460461ull}}, {{10083143135654962140ull, 408681523568369ull}}, {{11755863323265880035ull, 326945218854695ull}}, {{362637243515856440ull, 523112350167513ull}}, {{7668807424296505798ull, 418489880134010ull}}, {{6135045939437204639ull, 334791904107208ull}}, {{6126724688357617099ull, 535667046571533ull}}, {{12280077380169914325ull, 428533637257226ull}}, {{6134713089394021137ull, 342826909805781ull}}, {{2436843313546613173ull, 548523055689250ull}}, {{1949474650837290538ull, 438818444551400ull}}, {{1559579720669832431ull, 351054755641120ull}}, {{2495327553071731889ull, 561687609025792ull}}, {{13064308486683116481ull, 449350087220633ull}}, {{17830144418830313831ull, 359480069776506ull}}, {{10574766720322340742ull, 287584055821205ull}}, {{16919626752515745187ull, 460134489313928ull}}, {{2467654957786865180ull, 368107591451143ull}}, {{9352821595713312790ull, 294486073160914ull}}, {{3896468108915569495ull, 471177717057463ull}}, {{10495872116616276242ull, 376942173645970ull}}, {{8396697693293020994ull, 301553738916776ull}}, {{6056018679785012944ull, 482485982266842ull}}, {{15912861388053741325ull, 385988785813473ull}}, {{1662242666217262090ull, 308791028650779ull}}, {{10038285895431439991ull, 494065645841246ull}}, {{4341279901603241669ull, 395252516672997ull}}, {{14541070365508324305ull, 316202013338397ull}}, {{8508317325845677595ull, 505923221341436ull}}, {{3117305045934631753ull, 404738577073149ull}}, {{6183192851489615725ull, 323790861658519ull}}, {{17271806191867205807ull, 518065378653630ull}}, {{13817444953493764646ull, 414452302922904ull}}, {{14743304777536922040ull, 331561842338323ull}}, {{1453194755607613325ull, 530498947741318ull}}, {{8541253433969911306ull, 424399158193054ull}}, {{10522351561917839368ull, 339519326554443ull}}, {{13146413684326632666ull, 543230922487109ull}}, {{14206479762203216456ull, 434584737989687ull}}, {{3986486180278752518ull, 347667790391750ull}}, {{6378377888446004029ull, 556268464626800ull}}, {{5102702310756803223ull, 445014771701440ull}}, {{4082161848605442578ull, 356011817361152ull}}, {{14333775923110085032ull, 284809453888921ull}}, {{15555343847492315406ull, 455695126222274ull}}, {{16133623892735762648ull, 364556100977819ull}}, {{16596247928930520441ull, 291644880782255ull}}, {{8107252612579281090ull, 466631809251609ull}}, {{10175150904805335195ull, 373305447401287ull}}, {{761423094360447510ull, 298644357921030ull}}, {{1218276950976716016ull, 477830972673648ull}}, {{8353319190265193459ull, 382264778138918ull}}, {{14061352981695975413ull, 305811822511134ull}}, {{11430118326487829692ull, 489298916017815ull}}, {{9144094661190263754ull, 391439132814252ull}}, {{18383322173177941972ull, 313151306251401ull}}, {{3587873773891334894ull, 501042090002243ull}}, {{10248996648596888561ull, 400833672001794ull}}, {{11888546133619421172ull, 320666937601435ull}}, {{574929740081522260ull, 513067100162297ull}}, {{11527990236290948777ull, 410453680129837ull}}, {{1843694559548938375ull, 328362944103870ull}}, {{2949911295278301401ull, 525380710566192ull}}, {{13427975480448372090ull, 420304568452953ull}}, {{18121078013842518318ull, 336243654762362ull}}, {{14236329563180388017ull, 537989847619780ull}}, {{11389063650544310414ull, 430391878095824ull}}, {{12800599735177358654ull, 344313502476659ull}}, {{9412913132058042877ull, 550901603962655ull}}, {{7530330505646434301ull, 440721283170124ull}}, {{9713613219259057764ull, 352577026536099ull}}, {{11460239390149156535ull, 282061621228879ull}}, {{7268336580012919486ull, 451298593966207ull}}, {{16882715708236066558ull, 361038875172965ull}}, {{13506172566588853246ull, 288831100138372ull}}, {{6852480847574523902ull, 462129760221396ull}}, {{1792635863317708798ull, 369703808177117ull}}, {{12502155134879898008ull, 295763046541693ull}}, {{16314099401065926490ull, 473220874466709ull}}, {{16740628335594651515ull, 378576699573367ull}}, {{6013805038991900566ull, 302861359658694ull}}, {{17000785691870861552ull, 484578175453910ull}}, {{13600628553496689241ull, 387662540363128ull}}, {{18259200472281172039ull, 310130032290502ull}}, {{14457325496682233970ull, 496208051664804ull}}, {{15255209212087697499ull, 396966441331843ull}}, {{1136120925444427030ull, 317573153065475ull}}, {{1817793480711083248ull, 508117044904760ull}}, {{1454234784568866598ull, 406493635923808ull}}, {{8542085457138913925ull, 325194908739046ull}}, {{6288639101938441634ull, 520311853982474ull}}, {{8720260096292663630ull, 416249483185979ull}}, {{10665556891776041227ull, 332999586548783ull}}, {{13375542212099755641ull, 532799338478053ull}}, {{18079131399163625159ull, 426239470782442ull}}, {{7084607489847079481ull, 340991576625954ull}}, {{267325539529596200ull, 545586522601527ull}}, {{11281906875849407929ull, 436469218081221ull}}, {{5336176685937616020ull, 349175374464977ull}}, {{12227231512242095956ull, 558680599143963ull}}, {{17160482839277497411ull, 446944479315170ull}}, {{13728386271421997928ull, 357555583452136ull}}, {{7293360202395688019ull, 286044466761709ull}}, {{601329879607369862ull, 457671146818735ull}}, {{481063903685895889ull, 366136917454988ull}}, {{7763548752432537358ull, 292909533963990ull}}, {{12421678003892059773ull, 468655254342384ull}}, {{13626691217855558141ull, 374924203473907ull}}, {{3522655344800625867ull, 299939362779126ull}}, {{16704294995906732356ull, 479902980446601ull}}, {{9674087181983475562ull, 383922384357281ull}}, {{4049920930844870126ull, 307137907485825ull}}, {{6479873489351792202ull, 491420651977320ull}}, {{5183898791481433762ull, 393136521581856ull}}, {{457770218443236686ull, 314509217265485ull}}, {{732432349509178698ull, 503214747624776ull}}, {{15343341138574984251ull, 402571798099820ull}}, {{12274672910859987401ull, 322057438479856ull}}, {{12260779027892159195ull, 515291901567770ull}}, {{9808623222313727356ull, 412233521254216ull}}, {{4157549763109071561ull, 329786817003373ull}}, {{2962730806232604175ull, 527658907205397ull}}, {{13438231089211814310ull, 422127125764317ull}}, {{3371887241885630801ull, 337701700611454ull}}, {{12773717216500829929ull, 540322720978326ull}}, {{6529624958458753620ull, 432258176782661ull}}, {{1534351152025092573ull, 345806541426129ull}}, {{9833659472723968763ull, 553290466281806ull}}, {{4177578763437264687ull, 442632373025445ull}}, {{3342063010749811749ull, 354105898420356ull}}, {{17431045667567490692ull, 283284718736284ull}}, {{16821626623882254138ull, 453255549978055ull}}, {{13457301299105803311ull, 362604439982444ull}}, {{14455189854026552972ull, 290083551985955ull}}, {{4681559692732933139ull, 464133683177529ull}}, {{7434596568928256834ull, 371306946542023ull}}, {{13326374884626426114ull, 297045557233618ull}}, {{17632851000660371459ull, 475272891573789ull}}, {{17795629615270207490ull, 380218313259031ull}}, {{10547154877474255669ull, 304174650607225ull}}, {{16875447803958809070ull, 486679440971560ull}}, {{13500358243167047256ull, 389343552777248ull}}, {{18178984224017458451ull, 311474842221798ull}}, {{6950281869976471583ull, 498359747554878ull}}, {{12938923125464997913ull, 398687798043902ull}}, {{2972440870888177684ull, 318950238435122ull}}, {{8445254208162994618ull, 510320381496195ull}}, {{6756203366530395694ull, 408256305196956ull}}, {{1715613878482406232ull, 326605044157565ull}}, {{2744982205571849971ull, 522568070652104ull}}, {{5885334579199390300ull, 418054456521683ull}}, {{12086965292843332886ull, 334443565217346ull}}, {{11960446839065511972ull, 535109704347754ull}}, {{13257706285994319901ull, 428087763478203ull}}, {{17984862658279276567ull, 342470210782562ull}}, {{14018384994279201215ull, 547952337252100ull}}, {{11214707995423360972ull, 438361869801680ull}}, {{8971766396338688777ull, 350689495841344ull}}, {{3286779789916171074ull, 561103193346151ull}}, {{17386819090900578152ull, 448882554676920ull}}, {{13909455272720462522ull, 359106043741536ull}}, {{7438215403434459694ull, 287284834993229ull}}, {{833098201269404541ull, 459655735989167ull}}, {{11734525005241254602ull, 367724588791333ull}}, {{16766317633676824328ull, 294179671033066ull}}, {{1000666510689546663ull, 470687473652907ull}}, {{11868579652777368300ull, 376549978922325ull}}, {{9494863722221894640ull, 301239983137860ull}}, {{15191781955555031424ull, 481983973020576ull}}, {{8464076749702114816ull, 385587178416461ull}}, {{3081912585019781529ull, 308469742733169ull}}, {{12309757765515471094ull, 493551588373070ull}}, {{9847806212412376875ull, 394841270698456ull}}, {{4188896155187991177ull, 315873016558765ull}}, {{6702233848300785883ull, 505396826494024ull}}, {{9051135893382539029ull, 404317461195219ull}}, {{10930257529447941547ull, 323453968956175ull}}, {{17488412047116706475ull, 517526350329880ull}}, {{13990729637693365180ull, 414021080263904ull}}, {{14881932524896602467ull, 331216864211123ull}}, {{1674999151383102008ull, 529946982737798ull}}, {{8718696950590302253ull, 423957586190238ull}}, {{14353655189956062449ull, 339166068952190ull}}, {{4519104230220148302ull, 542665710323505ull}}, {{3615283384176118641ull, 434132568258804ull}}, {{6581575522082805236ull, 347306054607043ull}}, {{6841172020590578055ull, 555689687371269ull}}, {{9162286431214372767ull, 444551749897015ull}}, {{7329829144971498214ull, 355641399917612ull}}, {{16931909760202929540ull, 284513119934089ull}}, {{16023009172098956295ull, 455220991894543ull}}, {{1750360893453434067ull, 364176793515635ull}}, {{1400288714762747253ull, 291341434812508ull}}, {{16997857202588036898ull, 466146295700012ull}}, {{6219588132586608872ull, 372917036560010ull}}, {{4975670506069287098ull, 298333629248008ull}}, {{4271723994968949033ull, 477333806796813ull}}, {{10796076825458979873ull, 381867045437450ull}}, {{8636861460367183898ull, 305493636349960ull}}, {{13818978336587494237ull, 488789818159936ull}}, {{7365833854528085067ull, 391031854527949ull}}, {{9582015898364378376ull, 312825483622359ull}}, {{4263178993157274433ull, 500520773795775ull}}, {{3410543194525819546ull, 400416619036620ull}}, {{2728434555620655637ull, 320333295229296ull}}, {{15433541733218779989ull, 512533272366873ull}}, {{1278786942349293021ull, 410026617893499ull}}, {{4712378368621344740ull, 328021294314799ull}}, {{14918503019277972231ull, 524834070903678ull}}, {{866755971196646815ull, 419867256722943ull}}, {{8072102406441138098ull, 335893805378354ull}}, {{1847317406080089988ull, 537430088605367ull}}, {{12545900369089802960ull, 429944070884293ull}}, {{17415417924755663014ull, 343955256707434ull}}, {{16796622235383329854ull, 550328410731895ull}}, {{13437297788306663883ull, 440262728585516ull}}, {{7060489415903420783ull, 352210182868413ull}}, {{13027089162206557273ull, 281768146294730ull}}, {{2396598585820940021ull, 450829034071569ull}}, {{5606627683398662340ull, 360663227257255ull}}, {{4485302146718929872ull, 288530581805804ull}}, {{14555181064234108441ull, 461648930889286ull}}, {{7954796036645376430ull, 369319144711429ull}}, {{10053185644058211467ull, 295455315769143ull}}, {{12395748215751228024ull, 472728505230629ull}}, {{13605947387342892742ull, 378182804184503ull}}, {{18263455539358134840ull, 302546243347602ull}}, {{14464133604005374452ull, 484073989356164ull}}, {{15260655697946209884ull, 387259191484931ull}}, {{8519175743615057584ull, 309807353187945ull}}, {{13630681189784092135ull, 495691765100712ull}}, {{3525847322343453062ull, 396553412080570ull}}, {{2820677857874762449ull, 317242729664456ull}}, {{15581131016825350889ull, 507588367463129ull}}, {{16154253628202191034ull, 406070693970503ull}}, {{1855356458336021858ull, 324856555176403ull}}, {{17725965592305276265ull, 519770488282244ull}}, {{17870121288586131335ull, 415816390625795ull}}, {{14296097030868905068ull, 332653112500636ull}}, {{15495057619906427463ull, 532244980001018ull}}, {{1327999651699411001ull, 425795984000815ull}}, {{1062399721359528800ull, 340636787200652ull}}, {{5389188368917156404ull, 545018859521043ull}}, {{11690048324617545770ull, 436015087616834ull}}, {{13041387474435946939ull, 348812070093467ull}}, {{6108824700129873809ull, 558099312149548ull}}, {{12265757389587719694ull, 446479449719638ull}}, {{17191303541153996401ull, 357183559775710ull}}, {{13753042832923197121ull, 285746847820568ull}}, {{18315519717935205071ull, 457194956512909ull}}, {{18341764589090074380ull, 365755965210327ull}}, {{7294714041788238857ull, 292604772168262ull}}, {{15360891281603092495ull, 468167635469219ull}}, {{15978061840024384319ull, 374534108375375ull}}, {{12782449472019507455ull, 299627286700300ull}}, {{2005175081521660313ull, 479403658720481ull}}, {{16361535324184969543ull, 383522926976384ull}}, {{16778577074089885957ull, 306818341581107ull}}, {{12088328059576176239ull, 490909346529772ull}}, {{2291964818177120345ull, 392727477223818ull}}, {{9212269484025516922ull, 314181981779054ull}}, {{3671584730215096106ull, 502691170846487ull}}, {{14005314228397807855ull, 402152936677189ull}}, {{14893600197460156607ull, 321722349341751ull}}, {{16451062686452429925ull, 514755758946802ull}}, {{5782152519678123293ull, 411804607157442ull}}, {{15693768459968229604ull, 329443685725953ull}}, {{2973936647497705428ull, 527109897161526ull}}, {{17136544576965805635ull, 421687917729220ull}}, {{13709235661572644508ull, 337350334183376ull}}, {{14556079429032410566ull, 539760534693402ull}}, {{4266165913742107807ull, 431808427754722ull}}, {{14480979175219417215ull, 345446742203777ull}}, {{8412171421383426251ull, 552714787526044ull}}, {{10419085951848651324ull, 442171830020835ull}}, {{8335268761478921059ull, 353737464016668ull}}, {{14046912638666957494ull, 282989971213334ull}}, {{11407013777641401020ull, 452783953941335ull}}, {{9125611022113120816ull, 362227163153068ull}}, {{14679186447174317299ull, 289781730522454ull}}, {{12418651871253176710ull, 463650768835927ull}}, {{2556223867518720721ull, 370920615068742ull}}, {{13113025538240707546ull, 296736492054993ull}}, {{17291492046443221751ull, 474778387287989ull}}, {{17522542451896487724ull, 379822709830391ull}}, {{10328685146775279856ull, 303858167864313ull}}, {{12836547420098537447ull, 486173068582901ull}}, {{6579889121336919634ull, 388938454866321ull}}, {{1574562482327625384ull, 311150763893057ull}}, {{6208648786466110938ull, 497841222228891ull}}, {{1277570214430978427ull, 398272977783113ull}}, {{8400753801028603388ull, 318618382226490ull}}, {{13441206081645765421ull, 509789411562384ull}}, {{14442313680058522660ull, 407831529249907ull}}, {{4175153314562997481ull, 326265223399926ull}}, {{17748291747526526940ull, 522024357439881ull}}, {{10509284583279311229ull, 417619485951905ull}}, {{8407427666623448983ull, 334095588761524ull}}, {{2383837822371787403ull, 534552942018439ull}}, {{5596419072639340246ull, 427642353614751ull}}, {{787786443369561873ull, 342113882891801ull}}, {{12328504753617029967ull, 547382212626881ull}}, {{6173454988151713650ull, 437905770101505ull}}, {{4938763990521370920ull, 350324616081204ull}}, {{15280720014318014119ull, 560519385729926ull}}, {{8535227196712500972ull, 448415508583941ull}}, {{3138832942628090454ull, 358732406867153ull}}, {{9889763983586293010ull, 286985925493722ull}}, {{1066227114770427523ull, 459177480789956ull}}, {{15610376950783983311ull, 367341984631964ull}}, {{16177650375369096972ull, 293873587705571ull}}, {{58798897397182893ull, 470197740328915ull}}, {{47039117917746314ull, 376158192263132ull}}, {{11105677738559928021ull, 300926553810505ull}}, {{17769084381695884834ull, 481482486096808ull}}, {{3147221061130976897ull, 385185988877447ull}}, {{13585823293130512487ull, 308148791101957ull}}, {{6979922010041178687ull, 493038065763132ull}}, {{16651984052258673919ull, 394430452610505ull}}, {{13321587241806939135ull, 315544362088404ull}}, {{10246493142665371647ull, 504870979341447ull}}, {{818496884648476671ull, 403896783473158ull}}, {{8033495137202601983ull, 323117426778526ull}}, {{5474894590040342527ull, 516987882845642ull}}, {{15447962116258004991ull, 413590306276513ull}}, {{1290323248780673023ull, 330872245021211ull}}, {{13132563642274807807ull, 529395592033937ull}}, {{3127353284336025599ull, 423516473627150ull}}, {{2501882627468820479ull, 338813178901720ull}}, {{4003012203950112767ull, 542101086242752ull}}, {{14270456207385821183ull, 433680868994201ull}}, {{7727016151166746623ull, 346944695195361ull}}, {{4984528212382973951ull, 555111512312578ull}}, {{11366320199390199807ull, 444089209850062ull}}, {{1714358530028339199ull, 355271367880050ull}}, {{1371486824022671359ull, 284217094304040ull}}, {{2194378918436274175ull, 454747350886464ull}}, {{5444851949490929663ull, 363797880709171ull}}, {{666532744850833407ull, 291038304567337ull}}, {{4755801206503243775ull, 465661287307739ull}}, {{7493989779944505343ull, 372529029846191ull}}, {{2305843009213693951ull, 298023223876953ull}}, {{18446744073709551615ull, 476837158203124ull}}, {{18446744073709551615ull, 381469726562499ull}}, {{18446744073709551615ull, 305175781249999ull}}, {{18446744073709551615ull, 488281249999999ull}}, {{18446744073709551615ull, 390624999999999ull}}, {{18446744073709551615ull, 312499999999999ull}}, {{18446744073709551615ull, 499999999999999ull}}, {{18446744073709551615ull, 399999999999999ull}}, {{18446744073709551615ull, 319999999999999ull}}, {{18446744073709551615ull, 511999999999999ull}}, {{18446744073709551615ull, 409599999999999ull}}, {{18446744073709551615ull, 327679999999999ull}}, {{18446744073709551615ull, 524287999999999ull}}, {{18446744073709551615ull, 419430399999999ull}}, {{18446744073709551615ull, 335544319999999ull}}, {{18446744073709551615ull, 536870911999999ull}}, {{18446744073709551615ull, 429496729599999ull}}, {{18446744073709551615ull, 343597383679999ull}}, {{18446744073709551615ull, 549755813887999ull}}, {{18446744073709551615ull, 439804651110399ull}}, {{18446744073709551615ull, 351843720888319ull}}, {{18446744073709551615ull, 281474976710655ull}}, {{11068046444225730969ull, 450359962737049ull}}, {{12543785970122495098ull, 360287970189639ull}}, {{13724377590839906402ull, 288230376151711ull}}, {{14580306515860029597ull, 461168601842738ull}}, {{596198768462292708ull, 368934881474191ull}}, {{15234354273737475459ull, 295147905179352ull}}, {{9617571579012319442ull, 472236648286964ull}}, {{11383406077951765876ull, 377789318629571ull}}, {{5417376047619502378ull, 302231454903657ull}}, {{12357150490933114128ull, 483570327845851ull}}, {{6196371578004580979ull, 386856262276681ull}}, {{1267748447661754460ull, 309485009821345ull}}, {{2028397516258807136ull, 495176015714152ull}}, {{12690764457232776679ull, 396140812571321ull}}, {{6463262751044311020ull, 316912650057057ull}}, {{14030569216412807955ull, 507060240091291ull}}, {{7535106558388336041ull, 405648192073033ull}}, {{13406782876194489479ull, 324518553658426ull}}, {{14072154972427362520ull, 519229685853482ull}}, {{3879026348458069369ull, 415383748682786ull}}, {{17860616337734096788ull, 332306998946228ull}}, {{6440893251923092922ull, 531691198313966ull}}, {{1463365786796564015ull, 425352958651173ull}}, {{8549390258921071858ull, 340282366920938ull}}, {{9989675599531804650ull, 544451787073501ull}}, {{4302391664883533397ull, 435561429658801ull}}, {{18199308590874468010ull, 348449143727040ull}}, {{10672149671689597200ull, 557518629963265ull}}, {{8537719737351677760ull, 446014903970612ull}}, {{17898222234107073178ull, 356811923176489ull}}, {{18007926602027568865ull, 285449538541191ull}}, {{2987240860050737922ull, 456719261665907ull}}, {{13457839132266321307ull, 365375409332725ull}}, {{10766271305813057046ull, 292300327466180ull}}, {{17226034089300891273ull, 467680523945888ull}}, {{2712780827214982049ull, 374144419156711ull}}, {{16927619920739626932ull, 299315535325368ull}}, {{4948098984731941152ull, 478904856520590ull}}, {{3958479187785552922ull, 383123885216472ull}}, {{14234829794454173307ull, 306499108173177ull}}, {{8018332412159035998ull, 490398573077084ull}}, {{10104014744469139122ull, 392318858461667ull}}, {{704514166091490651ull, 313855086769334ull}}, {{8505920295230205688ull, 502168138830934ull}}, {{10494085050926074874ull, 401734511064747ull}}, {{1016570411257039252ull, 321387608851798ull}}, {{16383907916978904097ull, 514220174162876ull}}, {{9417777518841212954ull, 411376139330301ull}}, {{3844873200331060040ull, 329100911464241ull}}, {{17219843564755427034ull, 526561458342785ull}}, {{13775874851804341627ull, 421249166674228ull}}, {{18399397510927293948ull, 336999333339382ull}}, {{14681640758516029024ull, 539198933343012ull}}, {{4366614977329002573ull, 431359146674410ull}}, {{3493291981863202058ull, 345087317339528ull}}, {{1899918356239212970ull, 552139707743245ull}}, {{1519934684991370376ull, 441711766194596ull}}, {{15973343006960737594ull, 353369412955676ull}}, {{9089325590826679752ull, 282695530364541ull}}, {{7164223315838866956ull, 452312848583266ull}}, {{2042029837929183242ull, 361850278866613ull}}, {{9012321499827167240ull, 289480223093290ull}}, {{14419714399723467584ull, 463168356949264ull}}, {{15225120334520684390ull, 370534685559411ull}}, {{8490747452874637189ull, 296427748447529ull}}, {{2517149480373688533ull, 474284397516047ull}}, {{13081766028524681796ull, 379427518012837ull}}, {{3086715193335924790ull, 303542014410270ull}}, {{4938744309337479665ull, 485667223056432ull}}, {{15019041891695714701ull, 388533778445145ull}}, {{12015233513356571761ull, 310827022756116ull}}, {{11845675991886694171ull, 497323236409786ull}}, {{5787191978767445014ull, 397858589127829ull}}, {{8319102397755866334ull, 318286871302263ull}}, {{9621215021667475812ull, 509258994083621ull}}, {{4007623202592070326ull, 407407195266897ull}}, {{14274145006299387230ull, 325925756213517ull}}, {{8081236751111378276ull, 521481209941628ull}}, {{13843687030372923267ull, 417184967953302ull}}, {{3696251994814517967ull, 333747974362642ull}}, {{9603352006445139071ull, 533996758980227ull}}, {{303983975672290610ull, 427197407184182ull}}, {{11311233624763563458ull, 341757925747345ull}}, {{18097973799621701533ull, 546812681195752ull}}, {{7099681410213540580ull, 437450144956602ull}}, {{16747791572396563433ull, 349960115965281ull}}, {{971024812641129231ull, 559936185544451ull}}, {{15534215109080544677ull, 447948948435560ull}}, {{12427372087264435742ull, 358359158748448ull}}, {{17320595299295369240ull, 286687326998758ull}}, {{5576859590421128845ull, 458699723198014ull}}, {{8150836487078813399ull, 366959778558411ull}}, {{2831320374921140396ull, 293567822846729ull}}, {{11908810229357645280ull, 469708516554766ull}}, {{5837699368744205901ull, 375766813243813ull}}, {{12048857124479185367ull, 300613450595050ull}}, {{831427325457144971ull, 480981520952081ull}}, {{15422537119333357270ull, 384785216761664ull}}, {{16027378510208596139ull, 307828173409331ull}}, {{18265107986849933176ull, 492525077454930ull}}, {{14612086389479946541ull, 394020061963944ull}}, {{15379017926325867556ull, 315216049571155ull}}, {{6159684608411836474ull, 504345679313849ull}}, {{8617096501471379502ull, 403476543451079ull}}, {{10583026015919013925ull, 322781234760863ull}}, {{13243492810728511957ull, 516449975617381ull}}, {{6905445433840899242ull, 413159980493905ull}}, {{5524356347072719393ull, 330527984395124ull}}, {{16217667784800171676ull, 528844775032198ull}}, {{1906087783614406371ull, 423075820025759ull}}, {{5214219041633435420ull, 338460656020607ull}}, {{12032099281355406996ull, 541537049632971ull}}, {{5936330610342415273ull, 433229639706377ull}}, {{15817110932499663188ull, 346583711765101ull}}, {{17928679862515640455ull, 554533938824162ull}}, {{6964246260528691717ull, 443627151059330ull}}, {{5571397008422953374ull, 354901720847464ull}}, {{8146466421480273022ull, 283921376677971ull}}, {{5655648644884616189ull, 454274202684754ull}}, {{8213867730649603275ull, 363419362147803ull}}, {{13949791814003503266ull, 290735489718242ull}}, {{7562271643437963933ull, 465176783549188ull}}, {{13428514944234191793ull, 372141426839350ull}}, {{10742811955387353434ull, 297713141471480ull}}, {{17188499128619765495ull, 476341026354368ull}}, {{2682752858670081426ull, 381072821083495ull}}, {{2146202286936065141ull, 304858256866796ull}}, {{14501970103323435195ull, 487773210986873ull}}, {{533529638433017186ull, 390218568789499ull}}, {{4116172525488324072ull, 312174855031599ull}}, {{13964573670265139162ull, 499479768050558ull}}, {{103612491986380360ull, 399583814440447ull}}, {{11150936437814835258ull, 319667051552357ull}}, {{3084103041536095120ull, 511467282483772ull}}, {{13535328877454607065ull, 409173825987017ull}}, {{3449565472479865006ull, 327339060789614ull}}, {{12898002385451604656ull, 523742497263382ull}}, {{2939704278877463078ull, 418993997810706ull}}, {{17109158682069611755ull, 335195198248564ull}}, {{16306607447085647839ull, 536312317197703ull}}, {{1977239513442787302ull, 429049853758163ull}}, {{8960489240238050488ull, 343239883006530ull}}, {{14336782784380880780ull, 549183812810448ull}}, {{401379783278973655ull, 439347050248359ull}}, {{4010452641365089247ull, 351477640198687ull}}, {{10106073040926053118ull, 562364224317899ull}}, {{11774207247482752818ull, 449891379454319ull}}, {{13108714612728112577ull, 359913103563455ull}}, {{10486971690182490062ull, 287930482850764ull}}, {{5711108260066253130ull, 460688772561223ull}}, {{11947584237536823150ull, 368551018048978ull}}, {{16936765019513279166ull, 294840814439182ull}}, {{12341428772253605373ull, 471745303102692ull}}, {{2494445388319063652ull, 377396242482154ull}}, {{5684905125397161245ull, 301916993985723ull}}, {{5406499385893547669ull, 483067190377157ull}}, {{15393245952940569105ull, 386453752301725ull}}, {{12314596762352455284ull, 309163001841380ull}}, {{1256610746054376838ull, 494660802946209ull}}, {{4694637411585411794ull, 395728642356967ull}}, {{14823756373494060404ull, 316582913885573ull}}, {{1581917309139034708ull, 506532662216918ull}}, {{8644231476795048413ull, 405226129773534ull}}, {{10604733996177949053ull, 324180903818827ull}}, {{2210179134917077193ull, 518689446110124ull}}, {{5457492122675572077ull, 414951556888099ull}}, {{8055342512882367985ull, 331961245510479ull}}, {{1820501576386057807ull, 531137992816767ull}}, {{12524447705334577215ull, 424910394253413ull}}, {{17398255793751482418ull, 339928315402730ull}}, {{9390465196292820253ull, 543885304644369ull}}, {{11201720971776166526ull, 435108243715495ull}}, {{8961376777420933221ull, 348086594972396ull}}, {{6959505214389672507ull, 556938551955834ull}}, {{9256952986253648329ull, 445550841564667ull}}, {{26864759519098016ull, 356440673251734ull}}, {{3710840622357188736ull, 285152538601387ull}}, {{9626693810513412301ull, 456244061762219ull}}, {{11390703863152640164ull, 364995249409775ull}}, {{9112563090522112131ull, 291996199527820ull}}, {{14580100944835379410ull, 467193919244512ull}}, {{4285383126384482882ull, 373755135395610ull}}, {{3428306501107586305ull, 299004108316488ull}}, {{1795941587030227766ull, 478406573306381ull}}, {{16194148528591823505ull, 382725258645104ull}}, {{16644667637615369127ull, 306180206916083ull}}, {{4495375331733128665ull, 489888331065734ull}}, {{7285649080128413255ull, 391910664852587ull}}, {{16896565708328461573ull, 313528531882069ull}}, {{15966458689099807548ull, 501645651011311ull}}, {{9083818136537935715ull, 401316520809049ull}}, {{10956403323972258895ull, 321053216647239ull}}, {{6462198874129883263ull, 513685146635583ull}}, {{12548456728787727257ull, 410948117308466ull}}, {{6349416568288271482ull, 328758493846773ull}}, {{6469717694519324048ull, 526013590154837ull}}, {{16243820599841190208ull, 420810872123869ull}}, {{16684405294614862490ull, 336648697699095ull}}, {{8248304397674228368ull, 538637916318553ull}}, {{13977341147623203341ull, 430910333054842ull}}, {{3803175288614742026ull, 344728266443874ull}}, {{13463778091267407888ull, 551565226310198ull}}, {{18149720102497746957ull, 441252181048158ull}}, {{3451729637772466596ull, 353001744838527ull}}, {{13829430154443704246ull, 282401395870821ull}}, {{14748390617626106148ull, 451842233393314ull}}, {{15488061308842795241ull, 361473786714651ull}}, {{8701100232332325870ull, 289179029371721ull}}, {{6543062742247900745ull, 462686446994754ull}}, {{8923799008540230919ull, 370149157595803ull}}, {{14517736836316005382ull, 296119326076642ull}}, {{8470983679137967319ull, 473790921722628ull}}, {{14155484572794194501ull, 379032737378102ull}}, {{3945690028751534954ull, 303226189902482ull}}, {{10002452860744366251ull, 485161903843971ull}}, {{4312613473853582677ull, 388129523075177ull}}, {{14518137223308597111ull, 310503618460141ull}}, {{15850321927809934732ull, 496805789536226ull}}, {{8990908727506037462ull, 397444631628981ull}}, {{3503378167262919646ull, 317955705303185ull}}, {{5605405067620671435ull, 508729128485096ull}}, {{794975239354626824ull, 406983302788077ull}}, {{11704026635709432429ull, 325586642230461ull}}, {{11347744987651271240ull, 520938627568738ull}}, {{16456893619604837639ull, 416750902054990ull}}, {{13165514895683870111ull, 333400721643992ull}}, {{6307428574126550885ull, 533441154630388ull}}, {{12424640488785061354ull, 426752923704310ull}}, {{9939712391028049083ull, 341402338963448ull}}, {{12214191010902968210ull, 546243742341517ull}}, {{2392655179238553922ull, 436994993873214ull}}, {{5603472958132753460ull, 349595995098571ull}}, {{1586859103528584890ull, 559353592157714ull}}, {{4958836097564778235ull, 447482873726171ull}}, {{277720063309912265ull, 357986298980937ull}}, {{11290222494873660782ull, 286389039184749ull}}, {{6996309547572126281ull, 458222462695599ull}}, {{9286396452799611348ull, 366577970156479ull}}, {{11118465976981599402ull, 293262376125183ull}}, {{14100196748428648720ull, 469219801800293ull}}, {{212110954517188006ull, 375375841440235ull}}, {{169688763613750405ull, 300300673152188ull}}, {{15028897280749641941ull, 480481077043500ull}}, {{12023117824599713552ull, 384384861634800ull}}, {{9618494259679770842ull, 307507889307840ull}}, {{15389590815487633347ull, 492012622892544ull}}, {{16001021467132017001ull, 393610098314035ull}}, {{12800817173705613601ull, 314888078651228ull}}, {{16791958663187071438ull, 503820925841965ull}}, {{13433566930549657150ull, 403056740673572ull}}, {{3368155914955905074ull, 322445392538858ull}}, {{1699700649187537795ull, 515912628062173ull}}, {{8738458148833850882ull, 412730102449738ull}}, {{14369464148550901352ull, 330184081959790ull}}, {{4544398563971890548ull, 528294531135665ull}}, {{3635518851177512438ull, 422635624908532ull}}, {{13976461525167740920ull, 338108499926825ull}}, {{3915594366558833856ull, 540973599882921ull}}, {{17889870752214708378ull, 432778879906336ull}}, {{10622547787029856379ull, 346223103925069ull}}, {{5928030015022039237ull, 553956966280111ull}}, {{1053075197275721066ull, 443165573024089ull}}, {{4531808972562487176ull, 354532458419271ull}}, {{18382842437017631034ull, 283625966735416ull}}, {{3587106196034837392ull, 453801546776667ull}}, {{13937731401053600883ull, 363041237421333ull}}, {{82138676617149737ull, 290432989937067ull}}, {{3820770697329349902ull, 464692783899307ull}}, {{14124663002089210891ull, 371754227119445ull}}, {{11299730401671368713ull, 297403381695556ull}}, {{10700871013190369294ull, 475845410712890ull}}, {{8560696810552295435ull, 380676328570312ull}}, {{17916603892667567318ull, 304541062856249ull}}, {{17598519784042376739ull, 487265700569999ull}}, {{17768164641975811714ull, 389812560455999ull}}, {{17903880528322559695ull, 311850048364799ull}}, {{17578162401090364542ull, 498960077383679ull}}, {{17751878735614201957ull, 399168061906943ull}}, {{3133456544265630596ull, 319334449525555ull}}, {{5013530470825008953ull, 510935119240888ull}}, {{11389522006143827809ull, 408748095392710ull}}, {{9111617604915062247ull, 326998476314168ull}}, {{10889239353122189273ull, 523197562102669ull}}, {{12400740297239661741ull, 418558049682135ull}}, {{9920592237791729393ull, 334846439745708ull}}, {{12183598765724856706ull, 535754303593133ull}}, {{17125576642063706011ull, 428603442874506ull}}, {{10011112498909054485ull, 342882754299605ull}}, {{16017779998254487177ull, 548612406879368ull}}, {{1746177554377858772ull, 438889925503495ull}}, {{1396942043502287017ull, 351111940402796ull}}, {{13303153713829390198ull, 561779104644473ull}}, {{18021220600547332804ull, 449423283715578ull}}, {{3348930036212135274ull, 359538626972463ull}}, {{10057841658453528865ull, 287630901577970ull}}, {{16092546653525646185ull, 460209442524752ull}}, {{5495339693336696301ull, 368167554019802ull}}, {{15464318198895088011ull, 294534043215841ull}}, {{17364211488748320171ull, 471254469145346ull}}, {{10202020376256745813ull, 377003575316277ull}}, {{782918671521576004ull, 301602860253022ull}}, {{4942018689176431930ull, 482564576404835ull}}, {{3953614951341145544ull, 386051661123868ull}}, {{10541589590556737082ull, 308841328899094ull}}, {{5798496900665048361ull, 494146126238551ull}}, {{949448705790128366ull, 395316900990841ull}}, {{15516954223599743985ull, 316253520792672ull}}, {{10069731498791949084ull, 506005633268276ull}}, {{4366436384291648944ull, 404804506614621ull}}, {{18250544366400960448ull, 323843605291696ull}}, {{3375429283048164454ull, 518149768466715ull}}, {{2700343426438531563ull, 414519814773372ull}}, {{13228321185376556220ull, 331615851818697ull}}, {{6407918637634848660ull, 530585362909916ull}}, {{1436986095365968605ull, 424468290327933ull}}, {{8528286505776595530ull, 339574632262346ull}}, {{6266560779758732202ull, 543319411619754ull}}, {{8702597438548896085ull, 434655529295803ull}}, {{14340775580322937514ull, 347724423436642ull}}, {{8187845669549058730ull, 556359077498628ull}}, {{13928974165123067630ull, 445087261998902ull}}, {{3764481702614633458ull, 356069809599122ull}}, {{14079631806317437736ull, 284855847679297ull}}, {{7770015631140259084ull, 455769356286876ull}}, {{2526663690170296944ull, 364615485029501ull}}, {{16778726211103878848ull, 291692388023600ull}}, {{8399217864056654541ull, 466707820837761ull}}, {{3030025476503413310ull, 373366256670209ull}}, {{6113369195944640971ull, 298693005336167ull}}, {{13470739528253335877ull, 477908808537867ull}}, {{3397893993118848055ull, 382327046830294ull}}, {{6407664009236988767ull, 305861637464235ull}}, {{10252262414779182028ull, 489378619942776ull}}, {{4512461117081435299ull, 391502895954221ull}}, {{18367364152632789532ull, 313202316763376ull}}, {{3562340941019090989ull, 501123706821403ull}}, {{10228570382299093437ull, 400898965457122ull}}, {{804158676355454103ull, 320719172365698ull}}, {{16044049141136367858ull, 513150675785116ull}}, {{9145890498167183963ull, 410520540628093ull}}, {{14695410028017567817ull, 328416432502474ull}}, {{12444609600602377538ull, 525466292003959ull}}, {{13645036495223812353ull, 420373033603167ull}}, {{3537331566695229236ull, 336298426882534ull}}, {{13038428136196187425ull, 538077483012054ull}}, {{14120091323698860263ull, 430461986409643ull}}, {{228026614733357241ull, 344369589127715ull}}, {{364842583573371585ull, 550991342604344ull}}, {{3981222881600607591ull, 440793074083475ull}}, {{3184978305280486073ull, 352634459266780ull}}, {{2547982644224388858ull, 282107567413424ull}}, {{11455469860242842820ull, 451372107861478ull}}, {{16543073517678094902ull, 361097686289182ull}}, {{5855761184658655275ull, 288878149031346ull}}, {{1990520265970027794ull, 462205038450154ull}}, {{5281765027517932559ull, 369764030760123ull}}, {{11604109651498166693ull, 295811224608098ull}}, {{14877226627655156386ull, 473297959372957ull}}, {{4523083672640304462ull, 378638367498366ull}}, {{18375862197079884863ull, 302910693998692ull}}, {{14643984256360174488ull, 484657110397908ull}}, {{647140960862408621ull, 387725688318327ull}}, {{11585759212915657866ull, 310180550654661ull}}, {{11158517111181231939ull, 496288881047458ull}}, {{16305511318428806198ull, 397031104837966ull}}, {{9355060240001134635ull, 317624883870373ull}}, {{11278747569259905093ull, 508199814192597ull}}, {{1644300425924103428ull, 406559851354078ull}}, {{8694137970223103389ull, 325247881083262ull}}, {{17599969567098875745ull, 520396609733219ull}}, {{17769324468421010919ull, 416317287786575ull}}, {{14215459574736808735ull, 333053830229260ull}}, {{4297991245869342361ull, 532886128366817ull}}, {{14506439440921204858ull, 426308902693453ull}}, {{537105108511232917ull, 341047122154763ull}}, {{15616763432585613960ull, 545675395447620ull}}, {{12493410746068491168ull, 436540316358096ull}}, {{6305379782112882611ull, 349232253086477ull}}, {{13777956466122522501ull, 558771604938363ull}}, {{18401062802381838647ull, 447017283950690ull}}, {{14720850241905470918ull, 357613827160552ull}}, {{4397982564040556088ull, 286091061728442ull}}, {{10726120917206800064ull, 457745698765507ull}}, {{1202199104281619405ull, 366196559012406ull}}, {{15719154542392936816ull, 292957247209924ull}}, {{14082600823602967937ull, 468731595535879ull}}, {{14955429473624284673ull, 374985276428703ull}}, {{896297134673696768ull, 299988221142963ull}}, {{16191470674445556122ull, 479981153828740ull}}, {{12953176539556444898ull, 383984923062992ull}}, {{2983843602161335272ull, 307187938450394ull}}, {{12152847392941957082ull, 491500701520630ull}}, {{9722277914353565665ull, 393200561216504ull}}, {{11467171146224762855ull, 314560448973203ull}}, {{14658125019217710245ull, 503296718357125ull}}, {{11726500015374168196ull, 402637374685700ull}}, {{9381200012299334557ull, 322109899748560ull}}, {{15009920019678935291ull, 515375839597696ull}}, {{8318587201001237910ull, 412300671678157ull}}, {{17722916205026721297ull, 329840537342525ull}}, {{9909921854333202460ull, 527744859748041ull}}, {{4238588668724651645ull, 422195887798433ull}}, {{10769568564463541962ull, 337756710238746ull}}, {{9852612073657846493ull, 540410736381994ull}}, {{11571438473668187518ull, 432328589105595ull}}, {{9257150778934550014ull, 345862871284476ull}}, {{7432743616811459376ull, 553380594055162ull}}, {{17014241337674898471ull, 442704475244129ull}}, {{17300741884881829100ull, 354163580195303ull}}, {{2772547063679732310ull, 283330864156243ull}}, {{746726487145661373ull, 453329382649989ull}}, {{4286730004458439422ull, 362663506119991ull}}, {{18186779262534392830ull, 290130804895992ull}}, {{14341451561087387235ull, 464209287833588ull}}, {{405114804644178819ull, 371367430266871ull}}, {{15081487102682984348ull, 297093944213496ull}}, {{16751681734808954310ull, 475350310741594ull}}, {{17090694202589073771ull, 380280248593275ull}}, {{13672555362071259017ull, 304224198874620ull}}, {{3429344505604462811ull, 486758718199393ull}}, {{10122173233967390895ull, 389406974559514ull}}, {{11787087401915823039ull, 311525579647611ull}}, {{11480642213581496217ull, 498440927436178ull}}, {{16563211400349017620ull, 398752741948942ull}}, {{5871871490795393449ull, 319002193559154ull}}, {{16773692014756450166ull, 510403509694646ull}}, {{9729604797063249809ull, 408322807755717ull}}, {{404986208166779201ull, 326658246204574ull}}, {{8026675562550667368ull, 522653193927318ull}}, {{13800038079524354541ull, 418122555141854ull}}, {{14729379278361393956ull, 334498044113483ull}}, {{1430913956926768390ull, 535196870581574ull}}, {{4834079980283325035ull, 428157496465259ull}}, {{7556612798968570351ull, 342525997172207ull}}, {{15779929293091622885ull, 548041595475531ull}}, {{8934594619731387985ull, 438433276380425ull}}, {{7147675695785110388ull, 350746621104340ull}}, {{11436281113256176621ull, 561194593766944ull}}, {{12838373705346851620ull, 448955675013555ull}}, {{10270698964277481296ull, 359164540010844ull}}, {{11905907986163895360ull, 287331632008675ull}}, {{602708704152680960ull, 459730611213881ull}}, {{15239562222289786061ull, 367784488971104ull}}, {{15880998592573739172ull, 294227591176883ull}}, {{3273504859666520736ull, 470764145883014ull}}, {{6308152702475126912ull, 376611316706411ull}}, {{1357173347238191206ull, 301289053365129ull}}, {{9550174985064926576ull, 482062485384206ull}}, {{3950791173310030938ull, 385649988307365ull}}, {{3160632938648024750ull, 308519990645892ull}}, {{8746361516578749924ull, 493631985033427ull}}, {{18065135657488730908ull, 394905588026741ull}}, {{10762759711249074403ull, 315924470421393ull}}, {{13531066723256608723ull, 505479152674229ull}}, {{14514202193347197301ull, 404383322139383ull}}, {{543315310452026871ull, 323506657711507ull}}, {{4558653311465153318ull, 517610652338411ull}}, {{18404317908139763947ull, 414088521870728ull}}, {{3655407882286080188ull, 331270817496583ull}}, {{2159303796915817977ull, 530033307994533ull}}, {{9106140667016475028ull, 424026646395626ull}}, {{3595563718871269699ull, 339221317116501ull}}, {{16820948394419762489ull, 542754107386401ull}}, {{9767409900793899668ull, 434203285909121ull}}, {{4124579105893209411ull, 347362628727297ull}}, {{10288675384171045381ull, 555780205963675ull}}, {{8230940307336836305ull, 444624164770940ull}}, {{6584752245869469044ull, 355699331816752ull}}, {{16335848240921306204ull, 284559465453401ull}}, {{311915482280717665ull, 455295144725443ull}}, {{7628230015308394778ull, 364236115780354ull}}, {{9791932826988626146ull, 291388892624283ull}}, {{11977743708439891510ull, 466222228198853ull}}, {{16960892596235733854ull, 372977782559082ull}}, {{6190016447504766437ull, 298382226047266ull}}, {{2525328686523805653ull, 477411561675626ull}}, {{16777658208186685815ull, 381929249340500ull}}, {{13422126566549348652ull, 305543399472400ull}}, {{3028658432769406228ull, 488869439155841ull}}, {{17180322005183166275ull, 391095551324672ull}}, {{6365559974662712373ull, 312876441059738ull}}, {{6495547144718429474ull, 500602305695581ull}}, {{1507088901032833256ull, 400481844556465ull}}, {{1205671120826266605ull, 320385475645172ull}}, {{5618422608063936891ull, 512616761032275ull}}, {{4494738086451149513ull, 410093408825820ull}}, {{3595790469160919610ull, 328074727060656ull}}, {{16821311194883202346ull, 524919563297049ull}}, {{17146397770648472200ull, 419935650637639ull}}, {{17406467031260688083ull, 335948520510111ull}}, {{2024905546823728671ull, 537517632816179ull}}, {{5309273252200893260ull, 430014106252943ull}}, {{11626116231244535254ull, 344011285002354ull}}, {{7533739525765525438ull, 550418056003767ull}}, {{17095038064838151320ull, 440334444803013ull}}, {{2607984007644790086ull, 352267555842411ull}}, {{16843782465083473361ull, 281814044673928ull}}, {{4813959055682095439ull, 450902471478286ull}}, {{161818429803766028ull, 360721977182629ull}}, {{3818803558584923146ull, 288577581746103ull}}, {{2420736878993966710ull, 461724130793765ull}}, {{1936589503195173368ull, 369379304635012ull}}, {{12617318046781869664ull, 295503443708009ull}}, {{9119662430625260493ull, 472805509932815ull}}, {{7295729944500208394ull, 378244407946252ull}}, {{16904630399825897685ull, 302595526357001ull}}, {{1221966936528064034ull, 484152842171203ull}}, {{8356271178706271873ull, 387322273736962ull}}, {{17753063387190748468ull, 309857818989569ull}}, {{17336854975279466580ull, 495772510383311ull}}, {{10180135165481662941ull, 396618008306649ull}}, {{11833456947127240676ull, 317294406645319ull}}, {{7865484671177854112ull, 507671050632511ull}}, {{2603038922200372966ull, 406136840506009ull}}, {{5771779952502208696ull, 324909472404807ull}}, {{12924196738745444237ull, 519855155847691ull}}, {{6650008576254445066ull, 415884124678153ull}}, {{12698704490487376699ull, 332707299742522ull}}, {{5560531925812161426ull, 532331679588036ull}}, {{759076725907818818ull, 425865343670429ull}}, {{4296610195468165377ull, 340692274936343ull}}, {{3185227498007154281ull, 545107639898149ull}}, {{6237530813147633748ull, 436086111918519ull}}, {{8679373465260017321ull, 348868889534815ull}}, {{13886997544416027714ull, 558190223255704ull}}, {{14798946850274732495ull, 446552178604563ull}}, {{771111035994055026ull, 357241742883651ull}}, {{15374284087762885313ull, 285793394306920ull}}, {{6152110466711064886ull, 457269430891073ull}}, {{12300386002852672555ull, 365815544712858ull}}, {{17219006431765958690ull, 292652435770286ull}}, {{1724968587632161642ull, 468243897232459ull}}, {{5069323684847639637ull, 374595117785967ull}}, {{15123505392103842679ull, 299676094228773ull}}, {{2061515738914686348ull, 479481750766038ull}}, {{9027910220615569724ull, 383585400612830ull}}, {{7222328176492455779ull, 306868320490264ull}}, {{487678638162198278ull, 490989312784423ull}}, {{7768840540013579269ull, 392791450227538ull}}, {{13593770061494684061ull, 314233160182030ull}}, {{3303288024681942882ull, 502773056291249ull}}, {{6331979234487464629ull, 402218445032999ull}}, {{8754932202331882026ull, 321774756026399ull}}, {{2939845079505280272ull, 514839609642239ull}}, {{6041224878346134541ull, 411871687713791ull}}, {{1143631087934997310ull, 329497350171033ull}}, {{16587204999663636988ull, 527195760273652ull}}, {{5891066370247088944ull, 421756608218922ull}}, {{15780899540423402125ull, 337405286575137ull}}, {{10492044005709802107ull, 539848458520220ull}}, {{8393635204567841686ull, 431878766816176ull}}, {{3025559348912363025ull, 345503013452941ull}}, {{15908941402485511810ull, 552804821524705ull}}, {{12727153121988409448ull, 442243857219764ull}}, {{13871071312332637882ull, 353795085775811ull}}, {{7407508235124199982ull, 283036068620649ull}}, {{783966731972989002ull, 452857709793039ull}}, {{4316522200320301525ull, 362286167834431ull}}, {{18210613019223882512ull, 289828934267544ull}}, {{18068934386532481051ull, 463726294828071ull}}, {{10765798694484074517ull, 370981035862457ull}}, {{1233941326103438967ull, 296784828689966ull}}, {{13042352565991233317ull, 474855725903945ull}}, {{10433882052792986654ull, 379884580723156ull}}, {{4657756827492479000ull, 303907664578525ull}}, {{7452410923987966400ull, 486252263325640ull}}, {{5961928739190373120ull, 389001810660512ull}}, {{15837589435578029465ull, 311201448528409ull}}, {{14272096652699116175ull, 497922317645455ull}}, {{11417677322159292940ull, 398337854116364ull}}, {{12823490672469344675ull, 318670283293091ull}}, {{13138887446467130834ull, 509872453268946ull}}, {{6821761142431794344ull, 407897962615157ull}}, {{16525455358171166445ull, 326318370092125ull}}, {{7993984499364314696ull, 522109392147401ull}}, {{2705838784749541434ull, 417687513717921ull}}, {{16922066286767274440ull, 334150010974336ull}}, {{1249864355634266841ull, 534640017558939ull}}, {{4689240299249323796ull, 427712014047151ull}}, {{62043424657548713ull, 342169611237721ull}}, {{11167315923677808911ull, 547471377980353ull}}, {{16312550368426067775ull, 437977102384282ull}}, {{5671342665257033574ull, 350381681907426ull}}, {{1695450634927433072ull, 560610691051882ull}}, {{12424406952167677427ull, 448488552841505ull}}, {{9939525561734141942ull, 358790842273204ull}}, {{11640969264129223876ull, 287032673818563ull}}, {{14936202007864847879ull, 459252278109701ull}}, {{8259612791549967980ull, 367401822487761ull}}, {{2918341418498064061ull, 293921457990209ull}}, {{12048043899080723144ull, 470274332784334ull}}, {{13327783934006488838ull, 376219466227467ull}}, {{3283529517721370424ull, 300975572981974ull}}, {{12632344857838013325ull, 481560916771158ull}}, {{17484573515754231307ull, 385248733416926ull}}, {{10298309997861474722ull, 308198986733541ull}}, {{9098598367094538909ull, 493118378773666ull}}, {{3589529878933720804ull, 394494703018933ull}}, {{10250321532630797289ull, 315595762415146ull}}, {{9021816822725455017ull, 504953219864234ull}}, {{10906802272922274337ull, 403962575891387ull}}, {{1346744188853998823ull, 323170060713110ull}}, {{2154790702166398117ull, 517072097140976ull}}, {{16481227820700759786ull, 413657677712780ull}}, {{13184982256560607829ull, 330926142170224ull}}, {{10027925166271241557ull, 529481827472359ull}}, {{11711688947758903569ull, 423585461977887ull}}, {{1990653528723302208ull, 338868369582310ull}}, {{3185045645957283534ull, 542189391331696ull}}, {{17305431775733468120ull, 433751513065356ull}}, {{10154996605844864172ull, 347001210452285ull}}, {{16247994569351782676ull, 555201936723656ull}}, {{9309046840739515818ull, 444161549378925ull}}, {{7447237472591612654ull, 355329239503140ull}}, {{5957789978073290123ull, 284263391602512ull}}, {{13221812779659174521ull, 454821426564019ull}}, {{14266799038469249940ull, 363857141251215ull}}, {{11413439230775399952ull, 291085713000972ull}}, {{3504107510272998630ull, 465737140801556ull}}, {{17560681267186040197ull, 372589712641244ull}}, {{17737893828490742480ull, 298071770112995ull}}, {{9933886051875636353ull, 476914832180793ull}}, {{15325806470984329729ull, 381531865744634ull}}, {{15949993991529374106ull, 305225492595707ull}}, {{10762595127479357277ull, 488360788153132ull}}, {{1231378472499665175ull, 390688630522506ull}}, {{15742498036967373433ull, 312550904418004ull}}, {{14119950414922066523ull, 500081447068807ull}}, {{3917262702453832572ull, 400065157655046ull}}, {{17891205420930707350ull, 320052126124036ull}}, {{2800486970295759499ull, 512083401798459ull}}, {{5929738390978517922ull, 409666721438767ull}}, {{15811837157008545307ull, 327733377151013ull}}, {{3162846562762210552ull, 524373403441622ull}}, {{13598323694435499411ull, 419498722753297ull}}, {{3499961326064578883ull, 335598978202638ull}}, {{1910589306961415889ull, 536958365124221ull}}, {{16285866704536774004ull, 429566692099376ull}}, {{9339344548887508880ull, 343653353679501ull}}, {{7564253648736193562ull, 549845365887202ull}}, {{17119449363214685819ull, 439876292709761ull}}, {{10006210675829838332ull, 351901034167809ull}}, {{11694317355405780989ull, 281520827334247ull}}, {{3953512509681608289ull, 450433323734796ull}}, {{17920205266712927924ull, 360346658987836ull}}, {{10646815398628432016ull, 288277327190269ull}}, {{5966858193579760256ull, 461243723504431ull}}, {{1084137740121897882ull, 368994978803545ull}}, {{867310192097518305ull, 295195983042836ull}}, {{12455742751581760258ull, 472313572868537ull}}, {{2585896571781587560ull, 377850858294830ull}}, {{2068717257425270048ull, 302280686635864ull}}, {{10688645241364252724ull, 483649098617382ull}}, {{1172218563607581532ull, 386919278893906ull}}, {{15695170109853706519ull, 309535423115124ull}}, {{14044225731540199461ull, 495256676984199ull}}, {{14924729399974069892ull, 396205341587359ull}}, {{15629132334721166236ull, 316964273269887ull}}, {{10249216476586224686ull, 507142837231820ull}}, {{8199373181268979748ull, 405714269785456ull}}, {{2870149730273273475ull, 324571415828365ull}}, {{4592239568437237561ull, 519314265325384ull}}, {{7363140469491700372ull, 415451412260307ull}}, {{16958558819819091267ull, 332361129808245ull}}, {{8686950038000994412ull, 531777807693193ull}}, {{14328257659884616176ull, 425422246154554ull}}, {{15151954942649603264ull, 340337796923643ull}}, {{2107035019787903283ull, 544540475077830ull}}, {{1685628015830322626ull, 435632380062264ull}}, {{5037851227406168424ull, 348505904049811ull}}, {{681864334366048832ull, 557609446479698ull}}, {{7924189096976659712ull, 446087557183758ull}}, {{13718048907065148416ull, 356870045747006ull}}, {{7285090310910208409ull, 285496036597605ull}}, {{11656144497456333455ull, 456793658556168ull}}, {{16703613227448887411ull, 365434926844934ull}}, {{17052239396701020252ull, 292347941475947ull}}, {{12526187775753991110ull, 467756706361516ull}}, {{6331601405861282565ull, 374205365089213ull}}, {{12443978754172846698ull, 299364292071370ull}}, {{1463621932967003101ull, 478982867314193ull}}, {{8549595175857423127ull, 383186293851354ull}}, {{10529024955427848825ull, 306549035081083ull}}, {{13157091113942647797ull, 490478456129733ull}}, {{17904370520637938884ull, 392382764903786ull}}, {{10634147601768440784ull, 313906211923029ull}}, {{5946589718603774285ull, 502249939076847ull}}, {{15825318219108750397ull, 401799951261477ull}}, {{5281556945803179671ull, 321439961009182ull}}, {{12139839928026997798ull, 514303937614691ull}}, {{6022523127679687915ull, 411443150091753ull}}, {{12196716131627570978ull, 329154520073402ull}}, {{4757350551636472273ull, 526647232117444ull}}, {{7495229256051088141ull, 421317785693955ull}}, {{5996183404840870513ull, 337054228555164ull}}, {{16972591077229213467ull, 539286765688262ull}}, {{6199375232299550127ull, 431429412550610ull}}, {{4959500185839640102ull, 345143530040488ull}}, {{4245851482601513840ull, 552229648064781ull}}, {{18154076445048852365ull, 441783718451824ull}}, {{18212609970780992215ull, 353426974761459ull}}, {{18259436791366704095ull, 282741579809167ull}}, {{14457703607219085259ull, 452386527694668ull}}, {{498116441549537238ull, 361909222155735ull}}, {{398493153239629790ull, 289527377724588ull}}, {{15394984304151048957ull, 463243804359340ull}}, {{12315987443320839166ull, 370595043487472ull}}, {{2474092325172850686ull, 296476034789978ull}}, {{269198905534650775ull, 474361655663965ull}}, {{215359124427720620ull, 379489324531172ull}}, {{11240333743767907465ull, 303591459624937ull}}, {{3227138731061010652ull, 485746335399900ull}}, {{2581710984848808522ull, 388597068319920ull}}, {{2065368787879046817ull, 310877654655936ull}}, {{14372636504832205877ull, 497404247449497ull}}, {{4119411574381944055ull, 397923397959598ull}}, {{10674226888989375891ull, 318338718367678ull}}, {{13389414207641091102ull, 509341949388285ull}}, {{10711531366112872882ull, 407473559510628ull}}, {{15947922722374118952ull, 325978847608502ull}}, {{10759281096830949030ull, 521566156173604ull}}, {{12296773692206669547ull, 417252924938883ull}}, {{17216116583249156284ull, 333802339951106ull}}, {{1720344830005277792ull, 534083743921771ull}}, {{16133671122971863527ull, 427266995137416ull}}, {{9217588083635580498ull, 341813596109933ull}}, {{11058792119075018474ull, 546901753775893ull}}, {{16225731324743835425ull, 437521403020714ull}}, {{16669933874536978663ull, 350017122416571ull}}, {{846452496065793599ull, 560027395866515ull}}, {{677161996852634879ull, 448021916693212ull}}, {{11609776041707838873ull, 358417533354569ull}}, {{12977169648108181421ull, 286734026683655ull}}, {{2316727363263538659ull, 458774442693849ull}}, {{5542730705352741250ull, 367019554155079ull}}, {{8123533379024103323ull, 293615643324063ull}}, {{9308304591696654994ull, 469785029318501ull}}, {{3757294858615413672ull, 375828023454801ull}}, {{17763231145859972230ull, 300662418763840ull}}, {{9974425759666403953ull, 481059870022145ull}}, {{7979540607733123162ull, 384847896017716ull}}, {{2694283671444588206ull, 307878316814173ull}}, {{621505059569430807ull, 492605306902677ull}}, {{11565250491881275615ull, 394084245522141ull}}, {{5562851578763110169ull, 315267396417713ull}}, {{5211213711279065947ull, 504427834268341ull}}, {{479622154281342435ull, 403542267414673ull}}, {{7762395352908894594ull, 322833813931738ull}}, {{8730483749912321028ull, 516534102290781ull}}, {{3295038185187946499ull, 413227281832625ull}}, {{2636030548150357199ull, 330581825466100ull}}, {{4217648877040571519ull, 528930920745760ull}}, {{3374119101632457215ull, 423144736596608ull}}, {{10077992910789786418ull, 338515789277286ull}}, {{8746091027779837623ull, 541625262843658ull}}, {{14375570451707690745ull, 433300210274926ull}}, {{7811107546624242272ull, 346640168219941ull}}, {{5119074445114966990ull, 554624269151906ull}}, {{405910741350063268ull, 443699415321525ull}}, {{324728593080050615ull, 354959532257220ull}}, {{259782874464040492ull, 283967625805776ull}}, {{11483699043368195756ull, 454348201289241ull}}, {{5497610419952646282ull, 363478561031393ull}}, {{11776785965445937672ull, 290782848825114ull}}, {{7774811100487769306ull, 465252558120183ull}}, {{13598546509874036091ull, 372202046496146ull}}, {{7189488393157318549ull, 297761637196917ull}}, {{15192530243793620002ull, 476418619515067ull}}, {{4775326565551075355ull, 381134895612054ull}}, {{7509610067182770607ull, 304907916489643ull}}, {{8326027292750522649ull, 487852666383429ull}}, {{10350170648942328442ull, 390282133106743ull}}, {{15658834148637683400ull, 312225706485394ull}}, {{13986088193594562471ull, 499561130376631ull}}, {{7499521740133739653ull, 399648904301305ull}}, {{5999617392106991723ull, 319719123441044ull}}, {{16978085456855007403ull, 511550597505670ull}}, {{13582468365484005922ull, 409240478004536ull}}, {{7176625877645294415ull, 327392382403629ull}}, {{414554960006740094ull, 523827811845807ull}}, {{11399690412231123045ull, 419062249476645ull}}, {{9119752329784898436ull, 335249799581316ull}}, {{7212906098172016851ull, 536399679330106ull}}, {{2080976063795703157ull, 429119743464085ull}}, {{1664780851036562526ull, 343295794771268ull}}, {{17421044620626141334ull, 549273271634028ull}}, {{2868789252275182098ull, 439418617307223ull}}, {{9673729031303966325ull, 351534893845778ull}}, {{11788617635344435796ull, 562455830153245ull}}, {{9430894108275548637ull, 449964664122596ull}}, {{3855366471878528586ull, 359971731298077ull}}, {{14152339621728553839ull, 287977385038461ull}}, {{15265045765281865496ull, 460763816061538ull}}, {{1143990167999761427ull, 368611052849231ull}}, {{15672587393367450434ull, 294888842279384ull}}, {{14008093385162189725ull, 471822147647015ull}}, {{11206474708129751780ull, 377457718117612ull}}, {{1586482137019980778ull, 301966174494090ull}}, {{2538371419231969244ull, 483145879190544ull}}, {{5720045950127485719ull, 386516703352435ull}}, {{4576036760101988575ull, 309213362681948ull}}, {{3632310001421271397ull, 494741380291117ull}}, {{13973894445362748087ull, 395793104232893ull}}, {{111069112064467500ull, 316634483386315ull}}, {{177710579303148000ull, 506615173418104ull}}, {{3831517278184428723ull, 405292138734483ull}}, {{10443911452031363625ull, 324233710987586ull}}, {{9331560693766361154ull, 518773937580138ull}}, {{14843946184496909569ull, 415019150064110ull}}, {{11875156947597527655ull, 332015320051288ull}}, {{15310902301414133926ull, 531224512082061ull}}, {{8559373026389396817ull, 424979609665649ull}}, {{10536847235853427777ull, 339983687732519ull}}, {{5790909133139753474ull, 543973900372031ull}}, {{943378491769892456ull, 435179120297625ull}}, {{754702793415913964ull, 348143296238100ull}}, {{1207524469465462343ull, 557029273980960ull}}, {{966019575572369875ull, 445623419184768ull}}, {{8151513289941716546ull, 356498735347814ull}}, {{10210559446695283560ull, 285198988278251ull}}, {{8958197485228633050ull, 456318381245202ull}}, {{18234604432408637409ull, 365054704996161ull}}, {{10898334731184999604ull, 292043763996929ull}}, {{6369289125670268397ull, 467270022395087ull}}, {{16163477744761945687ull, 373816017916069ull}}, {{16620131010551466873ull, 299052814332855ull}}, {{8145465543172795381ull, 478484502932569ull}}, {{10205721249280146628ull, 382787602346055ull}}, {{8164576999424117302ull, 306230081876844ull}}, {{1995276754852856714ull, 489968131002951ull}}, {{16353616662849926664ull, 391974504802360ull}}, {{13082893330279941331ull, 313579603841888ull}}, {{17243280513705995807ull, 501727366147021ull}}, {{10105275596222886322ull, 401381892917617ull}}, {{705522847494488411ull, 321105514334094ull}}, {{8507534185475002105ull, 513768822934550ull}}, {{6806027348380001684ull, 411015058347640ull}}, {{5444821878704001347ull, 328812046678112ull}}, {{12401063820668312478ull, 526099274684979ull}}, {{13610199871276560306ull, 420879419747983ull}}, {{18266857526505068891ull, 336703535798386ull}}, {{3401530339214737964ull, 538725657277419ull}}, {{6410573086113700694ull, 430980525821935ull}}, {{5128458468890960555ull, 344784420657548ull}}, {{4516184735483626565ull, 551655073052077ull}}, {{14680994232612632222ull, 441324058441661ull}}, {{8055446571348195454ull, 353059246753329ull}}, {{10133706071820466686ull, 282447397402663ull}}, {{12524580900170836375ull, 451915835844261ull}}, {{6330315905394758777ull, 361532668675409ull}}, {{8753601539057717345ull, 289226134940327ull}}, {{17695111277234258075ull, 462761815904523ull}}, {{3088042577561675490ull, 370209452723619ull}}, {{6159782876791250715ull, 296167562178895ull}}, {{9855652602866001145ull, 473868099486232ull}}, {{505824452808980269ull, 379094479588986ull}}, {{15162054821214825508ull, 303275583671188ull}}, {{2123194825492258874ull, 485240933873902ull}}, {{12766602304619538069ull, 388192747099121ull}}, {{6523933028953720132ull, 310554197679297ull}}, {{14127641661067862534ull, 496886716286875ull}}, {{11302113328854290027ull, 397509373029500ull}}, {{9041690663083432022ull, 318007498423600ull}}, {{14466705060933491235ull, 508811997477760ull}}, {{11573364048746792988ull, 407049597982208ull}}, {{16637388868481255037ull, 325639678385766ull}}, {{794380486376635797ull, 521023485417227ull}}, {{11703550833327039607ull, 416818788333781ull}}, {{5673491851919721362ull, 333455030667025ull}}, {{9077586963071554180ull, 533528049067240ull}}, {{7262069570457243344ull, 426822439253792ull}}, {{16877702100591525644ull, 341457951403033ull}}, {{4868230472494979092ull, 546332722244854ull}}, {{7583933192737893597ull, 437066177795883ull}}, {{13445844183674135524ull, 349652942236706ull}}, {{14134653064394796192ull, 559444707578730ull}}, {{11307722451515836953ull, 447555766062984ull}}, {{12735526775954579886ull, 358044612850387ull}}, {{2809723791279843262ull, 286435690280310ull}}, {{4495558066047749220ull, 458297104448496ull}}, {{18353841711805840668ull, 366637683558796ull}}, {{10993724554702762211ull, 293310146847037ull}}, {{2832564028556778246ull, 469296234955260ull}}, {{2266051222845422597ull, 375436987964208ull}}, {{9191538607760158724ull, 300349590371366ull}}, {{7327764142932433312ull, 480559344594186ull}}, {{2172862499604036326ull, 384447475675349ull}}, {{5427638814425139384ull, 307557980540279ull}}, {{16062919732564043661ull, 492092768864446ull}}, {{9160986971309324605ull, 393674215091557ull}}, {{18396836021273190654ull, 314939372073245ull}}, {{10988193560327553430ull, 503902995317193ull}}, {{16169252477745863391ull, 403122396253754ull}}, {{16624750796938601036ull, 322497917003003ull}}, {{4463508386650299718ull, 515996667204806ull}}, {{18328201968287881067ull, 412797333763844ull}}, {{18351910389372215177ull, 330237867011075ull}}, {{10916312549285992667ull, 528380587217721ull}}, {{5043701224686883811ull, 422704469774177ull}}, {{15103007423975238018ull, 338163575819341ull}}, {{16786114248876560183ull, 541061721310946ull}}, {{9739542584359337823ull, 432849377048757ull}}, {{412936438003649612ull, 346279501639006ull}}, {{11728744745031570349ull, 554047202622409ull}}, {{13072344610767166602ull, 443237762097927ull}}, {{3079178059129912635ull, 354590209678342ull}}, {{13531388891529661078ull, 283672167742673ull}}, {{17960873411705547401ull, 453875468388277ull}}, {{6990001099880617274ull, 363100374710622ull}}, {{16660047324130224789ull, 290480299768497ull}}, {{11898680459640718370ull, 464768479629596ull}}, {{5829595552970664373ull, 371814783703677ull}}, {{15731722886602262468ull, 297451826962941ull}}, {{17792058989079799302ull, 475922923140706ull}}, {{10544298376521929118ull, 380738338512565ull}}, {{8435438701217543295ull, 304590670810052ull}}, {{17186050736689979595ull, 487345073296083ull}}, {{2680794145126252706ull, 389876058636867ull}}, {{13212681760326733135ull, 311900846909493ull}}, {{17450942001780862692ull, 499041355055189ull}}, {{17650102416166600477ull, 399233084044151ull}}, {{10430733118191370058ull, 319386467235321ull}}, {{9310475359622371447ull, 511018347576514ull}}, {{11137729102439807481ull, 408814678061211ull}}, {{5220834467209935661ull, 327051742448969ull}}, {{15732032777019717705ull, 523282787918350ull}}, {{12585626221615774164ull, 418626230334680ull}}, {{10068500977292619331ull, 334900984267744ull}}, {{5041555119442459960ull, 535841574828391ull}}, {{343895280812057645ull, 428673259862713ull}}, {{7653813854133466762ull, 342938607890170ull}}, {{12246102166613546820ull, 548701772624272ull}}, {{2418184103807016809ull, 438961418099418ull}}, {{9313244912529434094ull, 351169134479534ull}}, {{3833145415821363581ull, 561870615167255ull}}, {{3066516332657090864ull, 449496492133804ull}}, {{6142561880867583015ull, 359597193707043ull}}, {{12292747134177887058ull, 287677754965634ull}}, {{8600348970458888324ull, 460284407945015ull}}, {{6880279176367110659ull, 368227526356012ull}}, {{16572269785319419497ull, 294582021084809ull}}, {{15447585212285340225ull, 471331233735695ull}}, {{12358068169828272180ull, 377064986988556ull}}, {{6197105721120707421ull, 301651989590845ull}}, {{9915369153793131873ull, 482643183345352ull}}, {{553597693550684852ull, 386114546676282ull}}, {{11510924599066278851ull, 308891637341025ull}}, {{18417479358506046162ull, 494226619745640ull}}, {{14733983486804836930ull, 395381295796512ull}}, {{4408489159960048897ull, 316305036637210ull}}, {{7053582655936078236ull, 506088058619536ull}}, {{1953517310006952266ull, 404870446895629ull}}, {{5252162662747472136ull, 323896357516503ull}}, {{4714111445654045094ull, 518234172026405ull}}, {{3771289156523236075ull, 414587337621124ull}}, {{6706380139960499183ull, 331669870096899ull}}, {{18108905853420619340ull, 530671792155038ull}}, {{3419078238510764502ull, 424537433724031ull}}, {{17492657849776252894ull, 339629946979224ull}}, {{16920206115416273662ull, 543407915166759ull}}, {{17225513707074929252ull, 434726332133407ull}}, {{6401713336176122755ull, 347781065706726ull}}, {{2864043708397975763ull, 556449705130762ull}}, {{13359281410944111580ull, 445159764104609ull}}, {{14376773943497199587ull, 356127811283687ull}}, {{4122721525313939023ull, 284902249026950ull}}, {{6596354440502302437ull, 455843598443120ull}}, {{5277083552401841949ull, 364674878754496ull}}, {{532318027179563236ull, 291739903003597ull}}, {{4541057658229211502ull, 466783844805755ull}}, {{3632846126583369201ull, 373427075844604ull}}, {{6595625716008605684ull, 298741660675683ull}}, {{6863652330871858772ull, 477986657081093ull}}, {{12869619494181307664ull, 382389325664874ull}}, {{13985044410086956454ull, 305911460531899ull}}, {{11308024611913399357ull, 489458336851039ull}}, {{12735768504272629809ull, 391566669480831ull}}, {{6499265988676193524ull, 313253335584665ull}}, {{10398825581881909638ull, 501205336935464ull}}, {{12008409280247438034ull, 400964269548371ull}}, {{5917378609456040104ull, 320771415638697ull}}, {{13157154589871574489ull, 513234265021915ull}}, {{10525723671897259591ull, 410587412017532ull}}, {{1041881308033987027ull, 328469929614026ull}}, {{12735056537080110212ull, 525551887382441ull}}, {{6498696414922177847ull, 420441509905953ull}}, {{12577654761421562924ull, 336353207924762ull}}, {{5366852359306859385ull, 538165132679620ull}}, {{4293481887445487508ull, 430532106143696ull}}, {{18192180768924031299ull, 344425684914956ull}}, {{3282047527085077817ull, 551081095863931ull}}, {{17383033280635703546ull, 440864876691144ull}}, {{17595775439250473160ull, 352691901352915ull}}, {{14076620351400378528ull, 282153521082332ull}}, {{7765197303272964352ull, 451445633731732ull}}, {{17280204286844102451ull, 361156506985385ull}}, {{13824163429475281961ull, 288925205588308ull}}, {{18429312672418540814ull, 462280328941293ull}}, {{3675403693709101682ull, 369824263153035ull}}, {{2940322954967281345ull, 295859410522428ull}}, {{1015167913205739830ull, 473375056835885ull}}, {{812134330564591864ull, 378700045468708ull}}, {{8028405093935494137ull, 302960036374966ull}}, {{5466750520812969973ull, 484736058199946ull}}, {{684051601908465655ull, 387788846559957ull}}, {{11615287725752503494ull, 310231077247965ull}}, {{137716287494453974ull, 496369723596745ull}}, {{110173029995563179ull, 397095778877396ull}}, {{14845533682964091836ull, 317676623101916ull}}, {{16374156263258726292ull, 508282596963066ull}}, {{9409976195865070710ull, 406626077570453ull}}, {{14906678586175877214ull, 325300862056362ull}}, {{9093290478913762251ull, 520481379290180ull}}, {{7274632383131009800ull, 416385103432144ull}}, {{9509054721246718163ull, 333108082745715ull}}, {{15214487553994749062ull, 532972932393144ull}}, {{15860938857937709572ull, 426378345914515ull}}, {{12688751086350167658ull, 341102676731612ull}}, {{5544606479192626960ull, 545764282770580ull}}, {{4435685183354101568ull, 436611426216464ull}}, {{7237896961425191577ull, 349289140973171ull}}, {{4201937508796485878ull, 558862625557074ull}}, {{7050898821779099025ull, 447090100445659ull}}, {{9330067872165189543ull, 357672080356527ull}}, {{85356668248330988ull, 286137664285222ull}}, {{3825919483939239905ull, 457820262856355ull}}, {{3060735587151391924ull, 366256210285084ull}}, {{6137937284463023862ull, 293004968228067ull}}, {{13510048469882748503ull, 468807949164907ull}}, {{3429341146422378156ull, 375046359331926ull}}, {{17500868176105543817ull, 300037087465540ull}}, {{9554645008059318492ull, 480059339944865ull}}, {{7643716006447454793ull, 384047471955892ull}}, {{17183019249383694804ull, 307237977564713ull}}, {{5356737910562449748ull, 491580764103542ull}}, {{15353436772675690768ull, 393264611282833ull}}, {{1214702973914821645ull, 314611689026267ull}}, {{5632873573005624955ull, 503378702442027ull}}, {{15574345302630230933ull, 402702961953621ull}}, {{8770127427362274423ull, 322162369562897ull}}, {{17721552698521549401ull, 515459791300635ull}}, {{14177242158817239521ull, 412367833040508ull}}, {{273747282828060647ull, 329894266432407ull}}, {{4127344467266807358ull, 527830826291851ull}}, {{18059270832781087179ull, 422264661033480ull}}, {{14447416666224869743ull, 337811728826784ull}}, {{12047820221734060620ull, 540498766122855ull}}, {{9638256177387248496ull, 432399012898284ull}}, {{11399953756651709120ull, 345919210318627ull}}, {{3482530751675093299ull, 553470736509804ull}}, {{6475373416081984963ull, 442776589207843ull}}, {{12558996362349408616ull, 354221271366274ull}}, {{13736545904621437216ull, 283377017093019ull}}, {{10910427003168568577ull, 453403227348831ull}}, {{5038992787792944538ull, 362722581879065ull}}, {{4031194230234355630ull, 290178065503252ull}}, {{10139259583116879332ull, 464284904805203ull}}, {{15490105295977324112ull, 371427923844162ull}}, {{5013386607298038643ull, 297142339075330ull}}, {{8021418571676861829ull, 475427742520528ull}}, {{13795832486825310110ull, 380342194016422ull}}, {{3657968359976427441ull, 304273755213138ull}}, {{2163400561220373583ull, 486838008341021ull}}, {{16488115707943940159ull, 389470406672816ull}}, {{9501143751613241804ull, 311576325338253ull}}, {{11512481187839276563ull, 498522120541205ull}}, {{9209984950271421251ull, 398817696432964ull}}, {{11057336774959047324ull, 319054157146371ull}}, {{10313041210450655072ull, 510486651434194ull}}, {{11939781783102434380ull, 408389321147355ull}}, {{9551825426481947504ull, 326711456917884ull}}, {{4214874238145385037ull, 522738331068615ull}}, {{3371899390516308030ull, 418190664854892ull}}, {{13765565956638777393ull, 334552531883913ull}}, {{18335556715880133507ull, 535284051014261ull}}, {{10979096557962196482ull, 428227240811409ull}}, {{12472626061111667509ull, 342581792649127ull}}, {{5198806438811026721ull, 548130868238604ull}}, {{7848393965790731700ull, 438504694590883ull}}, {{13657412802116406006ull, 350803755672706ull}}, {{14473162853902428964ull, 561286009076330ull}}, {{11578530283121943171ull, 449028807261064ull}}, {{12952173041239464860ull, 359223045808851ull}}, {{6672389618249661565ull, 287378436647081ull}}, {{3297125759715637858ull, 459805498635330ull}}, {{2637700607772510286ull, 367844398908264ull}}, {{5799509300959918552ull, 294275519126611ull}}, {{1900517252052049037ull, 470840830602578ull}}, {{8899111431125459876ull, 376672664482062ull}}, {{18187335589126098870ull, 301338131585649ull}}, {{18031690498376027223ull, 482141010537039ull}}, {{18114701213442732101ull, 385712808429631ull}}, {{10802412156012275358ull, 308570246743705ull}}, {{17283859449619640573ull, 493712394789928ull}}, {{2759041115469981489ull, 394969915831943ull}}, {{9585930521859805837ull, 315975932665554ull}}, {{4269442390749958370ull, 505561492264887ull}}, {{14483600356825697666ull, 404449193811909ull}}, {{15276229100202468456ull, 323559355049527ull}}, {{9684571301356308236ull, 517694968079244ull}}, {{11437005855826956912ull, 414155974463395ull}}, {{9149604684661565530ull, 331324779570716ull}}, {{7260669865974684201ull, 530119647313146ull}}, {{2119187078037837038ull, 424095717850517ull}}, {{12763396106656000600ull, 339276574280413ull}}, {{16732084955907690637ull, 542842518848661ull}}, {{9696319149984242186ull, 434274015078929ull}}, {{11446404134729304072ull, 347419212063143ull}}, {{14624897800824976192ull, 555870739301029ull}}, {{15389267055401891277ull, 444696591440823ull}}, {{1243367200095782052ull, 355757273152659ull}}, {{4684042574818535965ull, 284605818522127ull}}, {{11183816934451567867ull, 455369309635403ull}}, {{16325751177045074940ull, 364295447708322ull}}, {{5681903312152239305ull, 291436358166658ull}}, {{5401696484701672566ull, 466298173066653ull}}, {{11700054817245158699ull, 373038538453322ull}}, {{1981346224312306313ull, 298430830762658ull}}, {{17927549217867331393ull, 477489329220252ull}}, {{6963341744810044468ull, 381991463376202ull}}, {{16638719840073766544ull, 305593170700961ull}}, {{796510040924654208ull, 488949073121539ull}}, {{4326556847481633690ull, 391159258497231ull}}, {{18218640736952948244ull, 312927406797784ull}}, {{18081778734898986222ull, 500683850876455ull}}, {{14465422987919188977ull, 400547080701164ull}}, {{15261687205077261505ull, 320437664560931ull}}, {{17040001898639797762ull, 512700263297490ull}}, {{13632001518911838209ull, 410160210637992ull}}, {{3526903585645649921ull, 328128168510394ull}}, {{13021743366516860520ull, 525005069616630ull}}, {{10417394693213488416ull, 420004055693304ull}}, {{12023264569312701056ull, 336003244554643ull}}, {{15547874496158411367ull, 537605191287429ull}}, {{16127648411668639416ull, 430084153029943ull}}, {{1834072285109180563ull, 344067322423955ull}}, {{2934515656174688902ull, 550507715878328ull}}, {{9726310154423571768ull, 440406172702662ull}}, {{402350494055036768ull, 352324938162130ull}}, {{321880395244029414ull, 281859950529704ull}}, {{7893706261874267709ull, 450975920847526ull}}, {{2625616194757503844ull, 360780736678021ull}}, {{16857888214773644368ull, 288624589342416ull}}, {{1147179440444458727ull, 461799342947867ull}}, {{11985789996581297951ull, 369439474358293ull}}, {{16967329626748859007ull, 295551579486634ull}}, {{16079680958572443442ull, 472882527178615ull}}, {{12863744766857954753ull, 378306021742892ull}}, {{2912298184002543156ull, 302644817394314ull}}, {{12038374723887889697ull, 484231707830902ull}}, {{2252002149626491111ull, 387385366264722ull}}, {{12869648163926923858ull, 309908293011777ull}}, {{5834041803315436880ull, 495853268818844ull}}, {{8356582257394259827ull, 396682615055075ull}}, {{6685265805915407862ull, 317346092044060ull}}, {{10696425289464652579ull, 507753747270496ull}}, {{4867791416829811740ull, 406202997816397ull}}, {{14962279577689580362ull, 324962398253117ull}}, {{9182252065335687286ull, 519939837204988ull}}, {{14724499281752370475ull, 415951869763990ull}}, {{11779599425401896380ull, 332761495811192ull}}, {{4089963821675392916ull, 532418393297908ull}}, {{10650668686824134979ull, 425934714638326ull}}, {{4831186134717397660ull, 340747771710661ull}}, {{351200186064015609ull, 545196434737058ull}}, {{7659657778335033134ull, 436157147789646ull}}, {{2438377407926116184ull, 348925718231717ull}}, {{7590752667423696218ull, 558281149170747ull}}, {{17140648578164687944ull, 446624919336597ull}}, {{6333821233047929708ull, 357299935469278ull}}, {{12445754615922164413ull, 285839948375422ull}}, {{5155812126507821768ull, 457343917400676ull}}, {{435300886464347091ull, 365875133920541ull}}, {{15105635968139118966ull, 292700107136432ull}}, {{9411622290054949053ull, 468320171418292ull}}, {{150600202560138596ull, 374656137134634ull}}, {{3809828976790021200ull, 299724909707707ull}}, {{9785075177605944243ull, 479559855532331ull}}, {{4138711327342845071ull, 383647884425865ull}}, {{3310969061874276057ull, 306918307540692ull}}, {{8986899313740752014ull, 491069292065107ull}}, {{18257565895218332581ull, 392855433652085ull}}, {{14606052716174666065ull, 314284346921668ull}}, {{1233591457428003764ull, 502854955074670ull}}, {{986873165942403011ull, 402283964059736ull}}, {{15546893791721563702ull, 321827171247788ull}}, {{2738937178303039984ull, 514923473996462ull}}, {{13259196186868162957ull, 411938779197169ull}}, {{14296705764236440689ull, 329551023357735ull}}, {{4427985149068753486ull, 527281637372377ull}}, {{14610434563480733758ull, 421825309897901ull}}, {{7998998836042676683ull, 337460247918321ull}}, {{5419700508184462047ull, 539936396669314ull}}, {{8025109221289479961ull, 431949117335451ull}}, {{2730738562289673645ull, 345559293868361ull}}, {{15437228143889208802ull, 552894870189377ull}}, {{4971084885627546395ull, 442315896151502ull}}, {{15044914352727768086ull, 353852716921201ull}}, {{8346582667440304145ull, 283082173536961ull}}, {{5975834638420665987ull, 452931477659138ull}}, {{12159365340220353436ull, 362345182127310ull}}, {{9727492272176282748ull, 289876145701848ull}}, {{11874638820740142074ull, 463801833122957ull}}, {{2121013427108293013ull, 371041466498366ull}}, {{16454206000654275703ull, 296833173198692ull}}, {{11569334342079199833ull, 474933077117908ull}}, {{16634165103147180512ull, 379946461694326ull}}, {{9617983267775834087ull, 303957169355461ull}}, {{8010075598957513892ull, 486331470968738ull}}, {{13786758108649831760ull, 389065176774990ull}}, {{11029406486919865408ull, 311252141419992ull}}, {{2889655120104143360ull, 498003426271988ull}}, {{9690421725567135335ull, 398402741017590ull}}, {{7752337380453708268ull, 318722192814072ull}}, {{16093088623467843552ull, 509955508502515ull}}, {{12874470898774274841ull, 407964406802012ull}}, {{2920879089535599226ull, 326371525441610ull}}, {{4673406543256958763ull, 522194440706576ull}}, {{49376419863656687ull, 417755552565261ull}}, {{14796896394858566642ull, 334204442052208ull}}, {{1538941343322244689ull, 534727107283534ull}}, {{4920501889399706074ull, 427781685826827ull}}, {{15004447955745495829ull, 342225348661461ull}}, {{16628419099708972680ull, 547560557858338ull}}, {{2234688835541447174ull, 438048446286671ull}}, {{16545146327400799032ull, 350438757029336ull}}, {{646792420647906189ull, 560702011246939ull}}, {{4206782751260235274ull, 448561608997551ull}}, {{18122821459975829512ull, 358849287198040ull}}, {{14498257167980663610ull, 287079429758432ull}}, {{8439816209801420483ull, 459327087613492ull}}, {{17819899412066867356ull, 367461670090793ull}}, {{3187873085427762915ull, 293969336072635ull}}, {{5100596936684420664ull, 470350937716216ull}}, {{391128734605626208ull, 376280750172973ull}}, {{7691600617168321613ull, 301024600138378ull}}, {{8617212172727404258ull, 481639360221405ull}}, {{6893769738181923406ull, 385311488177124ull}}, {{9204364605287449048ull, 308249190541699ull}}, {{3658936924234187507ull, 493198704866719ull}}, {{6616498354129260329ull, 394558963893375ull}}, {{5293198683303408263ull, 315647171114700ull}}, {{8469117893285453221ull, 505035473783520ull}}, {{6775294314628362577ull, 404028379026816ull}}, {{1730886636960779738ull, 323222703221453ull}}, {{17526813878104888874ull, 517156325154324ull}}, {{17710799917225821422ull, 413725060123459ull}}, {{17857988748522567461ull, 330980048098767ull}}, {{13815386738668466645ull, 529568076958028ull}}, {{18431007020418593962ull, 423654461566422ull}}, {{7366107986851054523ull, 338923569253138ull}}, {{8096423964219776915ull, 542277710805021ull}}, {{2787790356633911208ull, 433822168644017ull}}, {{13298278729532859936ull, 347057734915213ull}}, {{17587897152510665575ull, 555292375864341ull}}, {{10380968907266622137ull, 444233900691473ull}}, {{15683472755297118356ull, 355387120553178ull}}, {{1478731760011963715ull, 284309696442543ull}}, {{17123366074986783237ull, 454895514308068ull}}, {{2630646415763695620ull, 363916411446455ull}}, {{2104517132610956496ull, 291133129157164ull}}, {{10745925041661351040ull, 465813006651462ull}}, {{1218042403845260185ull, 372650405321170ull}}, {{974433923076208148ull, 298120324256936ull}}, {{12627140721147664007ull, 476992518811097ull}}, {{2723014947434310559ull, 381594015048878ull}}, {{9557109587431269094ull, 305275212039102ull}}, {{533980080922389257ull, 488440339262564ull}}, {{4116532879479821729ull, 390752271410051ull}}, {{18050621562551498676ull, 312601817128040ull}}, {{10434250426372846266ull, 500162907404865ull}}, {{8347400341098277012ull, 400130325923892ull}}, {{17745966717104352579ull, 320104260739113ull}}, {{6257453858915502188ull, 512166817182582ull}}, {{16074009531358132720ull, 409733453746065ull}}, {{12859207625086506176ull, 327786762996852ull}}, {{5817336941170768589ull, 524458820794964ull}}, {{8343218367678525194ull, 419567056635971ull}}, {{2985225879400909832ull, 335653645308777ull}}, {{8465710221783366055ull, 537045832494043ull}}, {{14151265806910513490ull, 429636665995234ull}}, {{15010361460270321115ull, 343709332796187ull}}, {{9259183077464872492ull, 549934932473900ull}}, {{7407346461971897993ull, 439947945979120ull}}, {{5925877169577518395ull, 351958356783296ull}}, {{1051352920920104392ull, 281566685426637ull}}, {{5371513488214077351ull, 450506696682619ull}}, {{7986559605313172204ull, 360405357346095ull}}, {{6389247684250537763ull, 288324285876876ull}}, {{2844098665317039775ull, 461318857403002ull}}, {{13343325376479362790ull, 369055085922401ull}}, {{6985311486441579908ull, 295244068737921ull}}, {{3797800748822707207ull, 472390509980674ull}}, {{6727589413800076089ull, 377912407984539ull}}, {{9071420345781971194ull, 302329926387631ull}}, {{7135574923767333265ull, 483727882220210ull}}, {{5708459939013866612ull, 386982305776168ull}}, {{11945465580694913936ull, 309585844620934ull}}, {{8044698484886131328ull, 495337351393495ull}}, {{6435758787908905062ull, 396269881114796ull}}, {{1459258215585213726ull, 317015904891837ull}}, {{6024161959678252286ull, 507225447826939ull}}, {{8508678382484512152ull, 405780358261551ull}}, {{3117593891245699398ull, 324624286609241ull}}, {{16056196670218850007ull, 519398858574785ull}}, {{12844957336175080005ull, 415519086859828ull}}, {{17654663498423884651ull, 332415269487862ull}}, {{13490066338510574148ull, 531864431180580ull}}, {{10792053070808459319ull, 425491544944464ull}}, {{12322991271388677778ull, 340393235955571ull}}, {{12338088404738063799ull, 544629177528914ull}}, {{13559819538532361362ull, 435703342023131ull}}, {{7158506816083978766ull, 348562673618505ull}}, {{11453610905734366026ull, 557700277789608ull}}, {{16541586354071313467ull, 446160222231686ull}}, {{9543920268515140451ull, 356928177785349ull}}, {{11324485029554022684ull, 285542542228279ull}}, {{7051129603060705325ull, 456868067565247ull}}, {{16708950126674295229ull, 365494454052197ull}}, {{5988462471855615537ull, 292395563241758ull}}, {{5892191140227074536ull, 467832901186813ull}}, {{12092450541665480275ull, 374266320949450ull}}, {{9673960433332384220ull, 299413056759560ull}}, {{15478336693331814752ull, 479060890815296ull}}, {{8693320539923541478ull, 383248712652237ull}}, {{18022702876164564152ull, 306598970121789ull}}, {{17768278157637571674ull, 490558352194863ull}}, {{3146576081884326370ull, 392446681755891ull}}, {{17274656124475102389ull, 313957345404712ull}}, {{12882054540192522529ull, 502331752647540ull}}, {{10305643632154018023ull, 401865402118032ull}}, {{865817276239393772ull, 321492321694426ull}}, {{12453354086208761005ull, 514387714711081ull}}, {{6273334454225098481ull, 411510171768865ull}}, {{5018667563380078785ull, 329208137415092ull}}, {{11719216916150036379ull, 526733019864147ull}}, {{1996675903436208457ull, 421386415891318ull}}, {{8976038352232787412ull, 337109132713054ull}}, {{3293614919346728889ull, 539374612340887ull}}, {{13702938379703114081ull, 431499689872709ull}}, {{14651699518504401588ull, 345199751898167ull}}, {{8685323970639401248ull, 552319603037068ull}}, {{14326956805995341645ull, 441855682429654ull}}, {{15150914259538183639ull, 353484545943723ull}}, {{1052684963404815941ull, 282787636754979ull}}, {{9062993570931526153ull, 452460218807966ull}}, {{3561046042003310599ull, 361968175046373ull}}, {{10227534463086469126ull, 289574540037098ull}}, {{12674706326196440278ull, 463319264059357ull}}, {{2761067431473331576ull, 370655411247486ull}}, {{16966249204146306553ull, 296524328997988ull}}, {{5009905838182628546ull, 474438926396782ull}}, {{15075971114771833807ull, 379551141117425ull}}, {{12060776891817467045ull, 303640912893940ull}}, {{850498953198395657ull, 485825460630305ull}}, {{680399162558716525ull, 388660368504244ull}}, {{4233668144788883543ull, 310928294803395ull}}, {{6773869031662213670ull, 497485271685432ull}}, {{16487141669555501905ull, 397988217348345ull}}, {{13189713335644401524ull, 318390573878676ull}}, {{13724843707547221792ull, 509424918205882ull}}, {{3601177336553956787ull, 407539934564706ull}}, {{17638337128210806723ull, 326031947651764ull}}, {{17153292960911559787ull, 521651116242823ull}}, {{2654587924503516860ull, 417320892994259ull}}, {{5813019154344723811ull, 333856714395407ull}}, {{12990179461693468421ull, 534170743032651ull}}, {{6702794754612864414ull, 427336594426121ull}}, {{1672886988948381208ull, 341869275540897ull}}, {{6365967997059320256ull, 546990840865435ull}}, {{5092774397647456204ull, 437592672692348ull}}, {{11452917147601785610ull, 350074138153878ull}}, {{14635318621420946653ull, 560118621046205ull}}, {{11708254897136757322ull, 448094896836964ull}}, {{13055952732451316181ull, 358475917469571ull}}, {{6755413371219142621ull, 286780733975657ull}}, {{14498010208692538518ull, 458849174361051ull}}, {{7909059352212120491ull, 367079339488841ull}}, {{2637898667027786069ull, 293663471591073ull}}, {{531289052502547388ull, 469861554545717ull}}, {{11493077686227768880ull, 375889243636573ull}}, {{16573159778466035750ull, 300711394909258ull}}, {{4380962757094195261ull, 481138231854814ull}}, {{7194119020417266532ull, 384910585483851ull}}, {{2065946401591902903ull, 307928468387081ull}}, {{14373560686772775614ull, 492685549419329ull}}, {{15188197364160130814ull, 394148439535463ull}}, {{1082511447102373682ull, 315318751628371ull}}, {{12800064759589528861ull, 504510002605393ull}}, {{17618749437155443735ull, 403608002084314ull}}, {{17784348364466265311ull, 322886401667451ull}}, {{2629515679952652235ull, 516618242667923ull}}, {{9482310173445942435ull, 413294594134338ull}}, {{14964545768240574594ull, 330635675307470ull}}, {{5496529155475367735ull, 529017080491953ull}}, {{11775920953864114834ull, 423213664393562ull}}, {{2042039133607471221ull, 338570931514850ull}}, {{3267262613771953953ull, 541713490423760ull}}, {{2613810091017563163ull, 433370792339008ull}}, {{9469745702297871176ull, 346696633871206ull}}, {{7772895494192773236ull, 554714614193930ull}}, {{6218316395354218589ull, 443771691355144ull}}, {{8664001931025285194ull, 355017353084115ull}}, {{6931201544820228155ull, 284013882467292ull}}, {{14779271286454275372ull, 454422211947667ull}}, {{4444719399679599651ull, 363537769558134ull}}, {{7245124334485590044ull, 290830215646507ull}}, {{15281547749918854394ull, 465328345034411ull}}, {{8535889385193173192ull, 372262676027529ull}}, {{10518060322896448876ull, 297810140822023ull}}, {{13139547701892407879ull, 476496225315237ull}}, {{3132940532030105657ull, 381196980252190ull}}, {{2506352425624084526ull, 304957584201752ull}}, {{7699512695740445564ull, 487932134722803ull}}, {{13538307786076177098ull, 390345707778242ull}}, {{3451948599377121032ull, 312276566222594ull}}, {{12901815388487214297ull, 499642505956150ull}}, {{10321452310789771438ull, 399714004764920ull}}, {{8257161848631817150ull, 319771203811936ull}}, {{5832761328327086794ull, 511633926099098ull}}, {{12044906692145490082ull, 409307140879278ull}}, {{17014622983200212712ull, 327445712703422ull}}, {{12466001514152699046ull, 523913140325476ull}}, {{6283452396580248914ull, 419130512260381ull}}, {{1337413102522288808ull, 335304409808305ull}}, {{2139860964035662092ull, 536487055693288ull}}, {{9090586400712350320ull, 429189644554630ull}}, {{7272469120569880256ull, 343351715643704ull}}, {{567904148686077440ull, 549362745029927ull}}, {{11522369763174592922ull, 439490196023941ull}}, {{5528546995797764014ull, 351592156819153ull}}, {{5156326378534512100ull, 562547450910645ull}}, {{4125061102827609680ull, 450037960728516ull}}, {{18057444141229729036ull, 360030368582812ull}}, {{7067257683499962583ull, 288024294866250ull}}, {{11307612293599940133ull, 460838871786000ull}}, {{9046089834879952106ull, 368671097428800ull}}, {{7236871867903961685ull, 294936877943040ull}}, {{11578994988646338696ull, 471899004708864ull}}, {{12952544805658981280ull, 377519203767091ull}}, {{6672687029785274700ull, 302015363013673ull}}, {{6986950432914529198ull, 483224580821877ull}}, {{16657606790557354328ull, 386579664657501ull}}, {{9636736617703973139ull, 309263731726001ull}}, {{8040080958842536376ull, 494821970761602ull}}, {{17500111211299760070ull, 395857576609281ull}}, {{10310740154297897733ull, 316686061287425ull}}, {{16497184246876636373ull, 506697698059880ull}}, {{13197747397501309098ull, 405358158447904ull}}, {{14247546732742957602ull, 324286526758323ull}}, {{659981883937270224ull, 518858442813318ull}}, {{7906683136633636826ull, 415086754250654ull}}, {{10014695324048819784ull, 332069403400523ull}}, {{12334163703736201331ull, 531311045440837ull}}, {{2488633333505140418ull, 425048836352670ull}}, {{1990906666804112334ull, 340039069082136ull}}, {{14253497111112310705ull, 544062510531417ull}}, {{4024100059406027917ull, 435250008425134ull}}, {{6908628862266732657ull, 348200006740107ull}}, {{14743154994368682575ull, 557120010784171ull}}, {{8105175180753035737ull, 445696008627337ull}}, {{17552186588828159559ull, 356556806901869ull}}, {{17731098085804437970ull, 285245445521495ull}}, {{9923012863577549136ull, 456392712834393ull}}, {{15317107920345859955ull, 365114170267514ull}}, {{15943035151018598287ull, 292091336214011ull}}, {{18130158612145936614ull, 467346137942418ull}}, {{3436080445491018321ull, 373876910353935ull}}, {{2748864356392814657ull, 299101528283148ull}}, {{708834155486593128ull, 478562445253037ull}}, {{11635113768615005472ull, 382849956202429ull}}, {{12997439829633914701ull, 306279964961943ull}}, {{17106554912672353198ull, 490047943939109ull}}, {{17374592744879792882ull, 392038355151287ull}}, {{6520976566420013659ull, 313630684121030ull}}, {{10433562506272021855ull, 501809094593648ull}}, {{15725547634501438130ull, 401447275674918ull}}, {{1512391663375419534ull, 321157820539935ull}}, {{2419826661400671255ull, 513852512863896ull}}, {{16693256588088178297ull, 411082010291116ull}}, {{9665256455728632314ull, 328865608232893ull}}, {{11775061514423901380ull, 526184973172629ull}}, {{13109398026281031427ull, 420947978538103ull}}, {{17866216050508645788ull, 336758382830482ull}}, {{13828550421846191968ull, 538813412528772ull}}, {{3684142707993132928ull, 431050730023018ull}}, {{10326011795878326989ull, 344840584018414ull}}, {{5453572429179592213ull, 551744934429463ull}}, {{11741555572827494416ull, 441395947543570ull}}, {{9393244458261995533ull, 353116758034856ull}}, {{3825246751867686103ull, 282493406427885ull}}, {{6120394802988297765ull, 451989450284616ull}}, {{1206967027648727889ull, 361591560227693ull}}, {{8344271251602802957ull, 289273248182154ull}}, {{2282787558338753763ull, 462837197091447ull}}, {{12894276490896733980ull, 370269757673157ull}}, {{2936723563233566537ull, 296215806138526ull}}, {{15766804145399437429ull, 473945289821641ull}}, {{8924094501577639620ull, 379156231857313ull}}, {{14517973230745932342ull, 303324985485850ull}}, {{4782013095483940132ull, 485319976777361ull}}, {{136261661645241782ull, 388255981421889ull}}, {{3798358144058103749ull, 310604785137511ull}}, {{17145419474718696968ull, 496967656220017ull}}, {{6337637950291136928ull, 397574124976014ull}}, {{8759459174974819866ull, 318059299980811ull}}, {{6636437050475891139ull, 508894879969298ull}}, {{12687847269864533557ull, 407115903975438ull}}, {{17528975445375447492ull, 325692723180350ull}}, {{9599616638891164372ull, 521108357088561ull}}, {{3990344496371021174ull, 416886685670849ull}}, {{6881624411838727263ull, 333509348536679ull}}, {{18389296688425784267ull, 533614957658686ull}}, {{11022088535998717090ull, 426891966126949ull}}, {{12507019643540883995ull, 341513572901559ull}}, {{8943184985439683423ull, 546421716642495ull}}, {{7154547988351746738ull, 437137373313996ull}}, {{2034289575939487067ull, 349709898651197ull}}, {{6944212136245089631ull, 559535837841915ull}}, {{5555369708996071705ull, 447628670273532ull}}, {{15512342211422588333ull, 358102936218825ull}}, {{12409873769138070667ull, 286482348975060ull}}, {{1409053956911361451ull, 458371758360097ull}}, {{12195289609754820130ull, 366697406688077ull}}, {{2377534058320035458ull, 293357925350462ull}}, {{7493403308053967056ull, 469372680560739ull}}, {{9684071461185083968ull, 375498144448591ull}}, {{4057908354206156851ull, 300398515558873ull}}, {{2803304551987940638ull, 480637624894197ull}}, {{13310690085816083480ull, 384510099915357ull}}, {{3269854439169046138ull, 307608079932286ull}}, {{16299813546896204790ull, 492172927891657ull}}, {{5661153208033143186ull, 393738342313326ull}}, {{839573751684604225ull, 314990673850661ull}}, {{12411364446921097730ull, 503985078161057ull}}, {{2550393928053057538ull, 403188062528846ull}}, {{16797710401410087323ull, 322550450023076ull}}, {{1050894939062767455ull, 516080720036923ull}}, {{8219413580734034610ull, 412864576029538ull}}, {{13954228494071048334ull, 330291660823630ull}}, {{3880021516804125719ull, 528466657317809ull}}, {{6793366028185210898ull, 422773325854247ull}}, {{16502739266773899688ull, 338218660683397ull}}, {{11646987567870598209ull, 541149857093436ull}}, {{5628241239554568244ull, 432919885674749ull}}, {{8191941806385564918ull, 346335908539799ull}}, {{2039060445991172899ull, 554137453663679ull}}, {{5320597171534848643ull, 443309962930943ull}}, {{11635175366711699560ull, 354647970344754ull}}, {{12997489108111269971ull, 283718376275803ull}}, {{17106633758236121631ull, 453949402041285ull}}, {{13685307006588897305ull, 363159521633028ull}}, {{18326943234754938490ull, 290527617306422ull}}, {{14565713916640260292ull, 464844187690276ull}}, {{7963222318570297910ull, 371875350152221ull}}, {{2681229040114328005ull, 297500280121777ull}}, {{7979315278924835131ull, 476000448194843ull}}, {{13762149852623688751ull, 380800358555874ull}}, {{14699068696840861324ull, 304640286844699ull}}, {{12450463470719647150ull, 487424458951519ull}}, {{13649719591317628043ull, 389939567161215ull}}, {{10919775673054102434ull, 311951653728972ull}}, {{2714245817918922602ull, 499122645966356ull}}, {{16928791913302779374ull, 399298116773084ull}}, {{17232382345384133823ull, 319438493418467ull}}, {{12814416493646972824ull, 511101589469548ull}}, {{17630230824401398905ull, 408881271575638ull}}, {{3036138215295388154ull, 327105017260511ull}}, {{15925867588698352017ull, 523368027616817ull}}, {{5361996441474860967ull, 418694422093454ull}}, {{7978945967921799097ull, 334955537674763ull}}, {{9076964733932968232ull, 535928860279621ull}}, {{3572222972404464262ull, 428743088223697ull}}, {{13925824822149302379ull, 342994470578957ull}}, {{7523924456471242514ull, 548791152926332ull}}, {{17087186009402724981ull, 439032922341065ull}}, {{13669748807522179985ull, 351226337872852ull}}, {{7114202833067846683ull, 561962140596564ull}}, {{9380711081196187670ull, 449569712477251ull}}, {{3815220050215039812ull, 359655769981801ull}}, {{17809571299139673143ull, 287724615985440ull}}, {{10048570004913925412ull, 460359385576705ull}}, {{8038856003931140330ull, 368287508461364ull}}, {{10120433617886822587ull, 294630006769091ull}}, {{8813996159135095493ull, 471408010830546ull}}, {{3361848112566166071ull, 377126408664437ull}}, {{13757524934278663826ull, 301701126931549ull}}, {{10943993450620131153ull, 482721803090479ull}}, {{12444543575238015245ull, 386177442472383ull}}, {{17334332489674232843ull, 308941953977906ull}}, {{1909490280285400286ull, 494307126364651ull}}, {{16284987483195961522ull, 395445701091720ull}}, {{13027989986556769217ull, 316356560873376ull}}, {{13466086349007010101ull, 506170497397402ull}}, {{3394171449721787435ull, 404936397917922ull}}, {{13783383604003160917ull, 323949118334337ull}}, {{7296018507437416175ull, 518318589334940ull}}, {{5836814805949932940ull, 414654871467952ull}}, {{15737498288985677321ull, 331723897174361ull}}, {{17801299632893263068ull, 530758235478978ull}}, {{3172993262088879485ull, 424606588383183ull}}, {{9917092239154924234ull, 339685270706546ull}}, {{8488649953164058129ull, 543496433130474ull}}, {{10480268777273156826ull, 434797146504379ull}}, {{12073563836560435784ull, 347837717203503ull}}, {{15628353323754786931ull, 556540347525605ull}}, {{12502682659003829545ull, 445232278020484ull}}, {{13691494941944973959ull, 356185822416387ull}}, {{3574498324072158521ull, 284948657933110ull}}, {{5719197318515453634ull, 455917852692976ull}}, {{886009040070452584ull, 364734282154381ull}}, {{15466202491024003360ull, 291787425723504ull}}, {{13677877541412674406ull, 466859881157607ull}}, {{3563604403646318878ull, 373487904926086ull}}, {{17608278781884696395ull, 298790323940868ull}}, {{6037153162564052294ull, 478064518305390ull}}, {{4829722530051241835ull, 382451614644312ull}}, {{14931824468266724437ull, 305961291715449ull}}, {{12822872705001028130ull, 489538066744719ull}}, {{13947646978742732827ull, 391630453395775ull}}, {{11158117582994186262ull, 313304362716620ull}}, {{17852988132790698019ull, 501286980346592ull}}, {{6903692876748737769ull, 401029584277274ull}}, {{9212303116140900538ull, 320823667421819ull}}, {{3671638541599709892ull, 513317867874911ull}}, {{17694706092247409206ull, 410654294299928ull}}, {{3087718429572196395ull, 328523435439943ull}}, {{1251000672573603909ull, 525637496703909ull}}, {{4690149352800793451ull, 420509997363127ull}}, {{14820165926466365730ull, 336407997890501ull}}, {{16333567852862364522ull, 538252796624802ull}}, {{5688156652806070971ull, 430602237299842ull}}, {{15618571766470587746ull, 344481789839873ull}}, {{2853621937901478455ull, 551170863743798ull}}, {{9661595179805003410ull, 440936690995038ull}}, {{15107973773327823375ull, 352749352796030ull}}, {{12086379018662258700ull, 282199482236824ull}}, {{8270159985633882950ull, 451519171578919ull}}, {{10305476803249016683ull, 361215337263135ull}}, {{8244381442599213346ull, 288972269810508ull}}, {{9501661493416831031ull, 462355631696813ull}}, {{14980026824217285471ull, 369884505357450ull}}, {{11984021459373828377ull, 295907604285960ull}}, {{727690261288573788ull, 473452166857537ull}}, {{11650198653256590000ull, 378761733486029ull}}, {{13009507737347182323ull, 303009386788823ull}}, {{17125863565013581394ull, 484815018862117ull}}, {{6321993222527044468ull, 387852015089694ull}}, {{8746943392763545898ull, 310281612071755ull}}, {{13995109428421673437ull, 496450579314808ull}}, {{128041098511607780ull, 397160463451847ull}}, {{11170479323035017193ull, 317728370761477ull}}, {{3115371657888386217ull, 508365393218364ull}}, {{6181646141052619296ull, 406692314574691ull}}, {{1255968098100185114ull, 325353851659753ull}}, {{16766944215927937475ull, 520566162655604ull}}, {{17102904187484260303ull, 416452930124483ull}}, {{2614276905761677273ull, 333162344099587ull}}, {{7872191863960593960ull, 533059750559339ull}}, {{9987102305910385491ull, 426447800447471ull}}, {{4300333029986398070ull, 341158240357977ull}}, {{10569881662720147235ull, 545853184572763ull}}, {{15834602959659938434ull, 436682547658210ull}}, {{12667682367727950747ull, 349346038126568ull}}, {{16578942973622810873ull, 558953661002509ull}}, {{16952503193640159021ull, 447162928802007ull}}, {{6183304925428306571ull, 357730343041606ull}}, {{1257295125600734933ull, 286184274433285ull}}, {{2011672200961175893ull, 457894839093256ull}}, {{16366733019736582007ull, 366315871274604ull}}, {{16782735230531175929ull, 293052697019683ull}}, {{4716283480398419548ull, 468884315231494ull}}, {{7462375599060645961ull, 375107452185195ull}}, {{5969900479248516769ull, 300085961748156ull}}, {{2173143137313806184ull, 480137538797050ull}}, {{1738514509851044947ull, 384110031037640ull}}, {{1390811607880835958ull, 307288024830112ull}}, {{5914647387351247856ull, 491660839728179ull}}, {{8421066724622908608ull, 393328671782543ull}}, {{14115551009182147532ull, 314662937426034ull}}, {{11516835170465705083ull, 503460699881655ull}}, {{9213468136372564066ull, 402768559905324ull}}, {{11060123323839961576ull, 322214847924259ull}}, {{6628150873918207552ull, 515543756678815ull}}, {{5302520699134566042ull, 412435005343052ull}}, {{15310063003533383803ull, 329948004274441ull}}, {{17117403176169593438ull, 527916806839106ull}}, {{10004573726193764427ull, 422333445471285ull}}, {{8003658980955011542ull, 337866756377028ull}}, {{9116505554786108144ull, 540586810203245ull}}, {{7293204443828886515ull, 432469448162596ull}}, {{2145214740321198889ull, 345975558530077ull}}, {{7121692399255828545ull, 553560893648123ull}}, {{13076051548888483483ull, 442848714918498ull}}, {{17839538868594607432ull, 354278971934798ull}}, {{3203584650649954976ull, 283423177547839ull}}, {{12504433070523748609ull, 453477084076542ull}}, {{2624848826935178240ull, 362781667261234ull}}, {{5789227876290052915ull, 290225333808987ull}}, {{12952113416805994988ull, 464360534094379ull}}, {{14051039548186706314ull, 371488427275503ull}}, {{172785194323634081ull, 297190741820403ull}}, {{15033851569885455823ull, 475505186912644ull}}, {{15716430070650274982ull, 380404149530115ull}}, {{12573144056520219985ull, 304323319624092ull}}, {{5359635231464710684ull, 486917311398548ull}}, {{11666405814655589193ull, 389533849118838ull}}, {{16711822281208292001ull, 311627079295070ull}}, {{8292171576223715586ull, 498603326872113ull}}, {{14012434890462793115ull, 398882661497690ull}}, {{11209947912370234492ull, 319106129198152ull}}, {{3178521400824733895ull, 510569806717044ull}}, {{6232165935401697439ull, 408455845373635ull}}, {{4985732748321357951ull, 326764676298908ull}}, {{4287823582572262398ull, 522823482078253ull}}, {{10808956495541630565ull, 418258785662602ull}}, {{1268467566949483806ull, 334607028530082ull}}, {{5718896921861084412ull, 535371245648131ull}}, {{885768722746957207ull, 428296996518505ull}}, {{708614978197565765ull, 342637597214804ull}}, {{8512481594599925871ull, 548220155543686ull}}, {{3120636460938030374ull, 438576124434949ull}}, {{6185857983492334622ull, 350860899547959ull}}, {{17276070403071556042ull, 561377439276734ull}}, {{17510205137199155157ull, 449101951421387ull}}, {{6629466480275503479ull, 359281561137110ull}}, {{5303573184220402783ull, 287425248909688ull}}, {{4796368280010734130ull, 459880398255501ull}}, {{147745809266676980ull, 367904318604401ull}}, {{14875591906380982877ull, 294323454883520ull}}, {{5354202976500020988ull, 470917527813633ull}}, {{11662060010683837436ull, 376734022250906ull}}, {{5640299193805159626ull, 301387217800725ull}}, {{9024478710088255402ull, 482219548481160ull}}, {{7219582968070604321ull, 385775638784928ull}}, {{13154364003940304103ull, 308620511027942ull}}, {{6289587147336845273ull, 493792817644708ull}}, {{12410367347353296864ull, 395034254115766ull}}, {{6238945063140727168ull, 316027403292613ull}}, {{6292963286283253146ull, 505643845268181ull}}, {{1345021814284692194ull, 404515076214545ull}}, {{1076017451427753755ull, 323612060971636ull}}, {{12789674366510136978ull, 517779297554617ull}}, {{2853041863724288936ull, 414223438043694ull}}, {{5971782305721341472ull, 331378750434955ull}}, {{9554851689154146355ull, 530206000695928ull}}, {{15022578980807137730ull, 424164800556742ull}}, {{4639365555161889538ull, 339331840445394ull}}, {{14801682517742843907ull, 542930944712630ull}}, {{11841346014194275126ull, 434344755770104ull}}, {{13162425626097330424ull, 347475804616083ull}}, {{17370532187013818355ull, 555961287385733ull}}, {{2828379305385323714ull, 444769029908587ull}}, {{13330749888533989941ull, 355815223926869ull}}, {{14353948725569102276ull, 284652179141495ull}}, {{4519573887201012025ull, 455443486626393ull}}, {{10994356739244630267ull, 364354789301114ull}}, {{12484834206137614536ull, 291483831440891ull}}, {{12597037100336362612ull, 466374130305426ull}}, {{6388280865527179766ull, 373099304244341ull}}, {{1421275877679833490ull, 298479443395473ull}}, {{17031436663255374877ull, 477567109432756ull}}, {{9935800515862389578ull, 382053687546205ull}}, {{7948640412689911662ull, 305642950036964ull}}, {{1649778216078127691ull, 489028720059143ull}}, {{8698520202346322799ull, 391222976047314ull}}, {{10648164976618968562ull, 312978380837851ull}}, {{9658366333106529053ull, 500765409340562ull}}, {{347995437001402596ull, 400612327472450ull}}, {{278396349601122077ull, 320489861977960ull}}, {{445434159361795323ull, 512783779164736ull}}, {{15113742586457077551ull, 410227023331788ull}}, {{1022947624939931071ull, 328181618665431ull}}, {{12704762644129620684ull, 525090589864689ull}}, {{13853158930045606870ull, 420072471891751ull}}, {{7393178329294575173ull, 336057977513401ull}}, {{4450387697387499631ull, 537692764021442ull}}, {{14628356602135730674ull, 430154211217153ull}}, {{634638837482853569ull, 344123368973723ull}}, {{15772817398940207004ull, 550597390357956ull}}, {{8928905104410255280ull, 440477912286365ull}}, {{7143124083528204224ull, 352382329829092ull}}, {{16782545711048294349ull, 281905863863273ull}}, {{4715980249225809019ull, 451049382181238ull}}, {{11151481828864467862ull, 360839505744990ull}}, {{8921185463091574289ull, 288671604595992ull}}, {{17963245555688429186ull, 461874567353587ull}}, {{6991898815066922702ull, 369499653882870ull}}, {{5593519052053538162ull, 295599723106296ull}}, {{1570932853801840413ull, 472959556970074ull}}, {{4946095097783382653ull, 378367645576059ull}}, {{7646224892968616446ull, 302694116460847ull}}, {{15923308643491696637ull, 484310586337355ull}}, {{12738646914793357309ull, 387448469069884ull}}, {{13880266346576596171ull, 309958775255907ull}}, {{7451030895554912580ull, 495934040409452ull}}, {{17028871160669661034ull, 396747232327561ull}}, {{9933748113793818504ull, 317397785862049ull}}, {{4825950537844378637ull, 507836457379279ull}}, {{7550109245017413232ull, 406269165903423ull}}, {{13418785025497751232ull, 325015332722738ull}}, {{17780707226054491649ull, 520024532356381ull}}, {{10535216966101682996ull, 416019625885105ull}}, {{8428173572881346396ull, 332815700708084ull}}, {{2417031272384423265ull, 532505121132935ull}}, {{1933625017907538612ull, 426004096906348ull}}, {{8925597643809851536ull, 340803277525078ull}}, {{10591607415353852134ull, 545285244040125ull}}, {{8473285932283081707ull, 436228195232100ull}}, {{6778628745826465366ull, 348982556185680ull}}, {{10845805993322344586ull, 558372089897088ull}}, {{16055342424141696315ull, 446697671917670ull}}, {{12844273939313357052ull, 357358137534136ull}}, {{6586070336708775318ull, 285886510027309ull}}, {{17916410168217861156ull, 457418416043694ull}}, {{18022476949316199248ull, 365934732834955ull}}, {{14417981559452959398ull, 292747786267964ull}}, {{12000724050899004067ull, 468396458028743ull}}, {{16979276870203023900ull, 374717166422994ull}}, {{17272770310904329443ull, 299773733138395ull}}, {{9189688423737375494ull, 479637973021433ull}}, {{14730448368473721041ull, 383710378417146ull}}, {{8095009880037066510ull, 306968302733717ull}}, {{16641364622801216739ull, 491149284373947ull}}, {{5934394068757152745ull, 392919427499158ull}}, {{12126212884489542842ull, 314335541999326ull}}, {{12023242985699447901ull, 502936867198922ull}}, {{2239896759075737674ull, 402349493759138ull}}, {{9170615036744410786ull, 321879595007310ull}}, {{14672984058791057258ull, 515007352011696ull}}, {{8049038432290935483ull, 412005881609357ull}}, {{17507277190058479356ull, 329604705287485ull}}, {{9564899430384015353ull, 527367528459977ull}}, {{273221914823391636ull, 421894022767982ull}}, {{11286623976084444279ull, 337515218214385ull}}, {{18058598361735110846ull, 540024349143016ull}}, {{10757529874646178353ull, 432019479314413ull}}, {{15984721529200763329ull, 345615583451530ull}}, {{7128810373011669711ull, 552984933522449ull}}, {{9392397113151246092ull, 442387946817959ull}}, {{11203266505262907196ull, 353910357454367ull}}, {{1583915574726505111ull, 283128285963494ull}}, {{9912962549046228824ull, 453005257541590ull}}, {{7930370039236983059ull, 362404206033272ull}}, {{17412342475615317417ull, 289923364826617ull}}, {{13102352702016866574ull, 463877383722588ull}}, {{17860579791097313906ull, 371101906978070ull}}, {{14288463832877851124ull, 296881525582456ull}}, {{15482844503120741153ull, 475010440931930ull}}, {{12386275602496592922ull, 380008352745544ull}}, {{13598369296739184661ull, 304006682196435ull}}, {{3310646801073143842ull, 486410691514297ull}}, {{13716563885084246043ull, 389128553211437ull}}, {{3594553478583576188ull, 311302842569150ull}}, {{5751285565733721901ull, 498084548110640ull}}, {{4601028452586977521ull, 398467638488512ull}}, {{14748869206295312986ull, 318774110790809ull}}, {{12530144285846769808ull, 510038577265295ull}}, {{10024115428677415846ull, 408030861812236ull}}, {{4329943528200022354ull, 326424689449789ull}}, {{14306607274603856413ull, 522279503119662ull}}, {{4066588190199264484ull, 417823602495730ull}}, {{3253270552159411587ull, 334258881996584ull}}, {{12583930512938879186ull, 534814211194534ull}}, {{13756493225093013672ull, 427851368955627ull}}, {{3626496950590590291ull, 342281095164502ull}}, {{9491743935686854789ull, 547649752263203ull}}, {{14972092778033304477ull, 438119801810562ull}}, {{4598976592942822935ull, 350495841448450ull}}, {{7358362548708516697ull, 560793346317520ull}}, {{5886690038966813358ull, 448634677054016ull}}, {{1020003216431540363ull, 358907741643213ull}}, {{8194700202629052936ull, 287126193314570ull}}, {{13111520324206484699ull, 459401909303312ull}}, {{3110518629881367112ull, 367521527442650ull}}, {{2488414903905093690ull, 294017221954120ull}}, {{3981463846248149904ull, 470427555126592ull}}, {{14253217521224250893ull, 376342044101273ull}}, {{334527572753669744ull, 301073635281019ull}}, {{7913941745889692238ull, 481717816449630ull}}, {{6331153396711753790ull, 385374253159704ull}}, {{8754271532111313355ull, 308299402527763ull}}, {{10317485636636191046ull, 493279044044421ull}}, {{4564639694567042513ull, 394623235235537ull}}, {{14719758199879364980ull, 315698588188429ull}}, {{12483566675581252999ull, 505117741101487ull}}, {{2608155710981181752ull, 404094192881190ull}}, {{2086524568784945402ull, 323275354304952ull}}, {{7027788124797822966ull, 517240566887923ull}}, {{13000928129322079019ull, 413792453510338ull}}, {{17779440132941483862ull, 331033962808270ull}}, {{10000360138996822563ull, 529654340493233ull}}, {{15378985740681278697ull, 423723472394586ull}}, {{8613839777803112634ull, 338978777915669ull}}, {{2714097200259249246ull, 542366044665071ull}}, {{16928673019175040689ull, 433892835732056ull}}, {{9853589600598122228ull, 347114268585645ull}}, {{15765743360956995565ull, 555382829737032ull}}, {{5233897059281775806ull, 444306263789626ull}}, {{497768832683510321ull, 355445011031701ull}}, {{15155610325114449550ull, 284356008825360ull}}, {{5802232446473567664ull, 454969614120577ull}}, {{15709832401404585100ull, 363975691296461ull}}, {{8878517106381757757ull, 291180553037169ull}}, {{3137580925985081442ull, 465888884859471ull}}, {{17267459999755706446ull, 372711107887576ull}}, {{10124619185062654834ull, 298168886310061ull}}, {{8820693066616427088ull, 477070218096098ull}}, {{14435252082776962317ull, 381656174476878ull}}, {{480155221995838884ull, 305324939581503ull}}, {{15525643614160983507ull, 488519903330404ull}}, {{16109863706070697129ull, 390815922664323ull}}, {{1819844520630826733ull, 312652738131459ull}}, {{10290448862493143420ull, 500244381010334ull}}, {{11921707904736425059ull, 400195504808267ull}}, {{2158668694305319401ull, 320156403846614ull}}, {{10832567540372331688ull, 512250246154582ull}}, {{1287356402814044704ull, 409800196923666ull}}, {{15787280381218877056ull, 327840157538932ull}}, {{10502253350982561997ull, 524544252062292ull}}, {{1023105051302228951ull, 419635401649834ull}}, {{4507832855783693484ull, 335708321319867ull}}, {{10901881383995819897ull, 537133314111787ull}}, {{1342807477712835271ull, 429706651289430ull}}, {{1074245982170268217ull, 343765321031544ull}}, {{9097491200956249794ull, 550024513650470ull}}, {{7277992960764999835ull, 440019610920376ull}}, {{2133045553870089545ull, 352015688736301ull}}, {{16463831702063712928ull, 281612550989040ull}}, {{7895386649592389070ull, 450580081582465ull}}, {{6316309319673911256ull, 360464065265972ull}}, {{16121093899964859974ull, 288371252212777ull}}, {{11036354980976134666ull, 461394003540444ull}}, {{12518432799522818056ull, 369115202832355ull}}, {{10014746239618254445ull, 295292162265884ull}}, {{4955547539163476142ull, 472467459625415ull}}, {{3964438031330780914ull, 377973967700332ull}}, {{14239596869290355700ull, 302379174160265ull}}, {{4336610917155017505ull, 483806678656425ull}}, {{3469288733724014004ull, 387045342925140ull}}, {{2775430986979211203ull, 309636274340112ull}}, {{8130038393908648248ull, 495418038944179ull}}, {{10193379529868828922ull, 396334431155343ull}}, {{15533401253378883784ull, 317067544924274ull}}, {{13785395561180483085ull, 507308071878839ull}}, {{14717665263686296791ull, 405846457503071ull}}, {{8084783396207127109ull, 324677166002457ull}}, {{16625002248673313698ull, 519483465603931ull}}, {{9610652984196740635ull, 415586772483145ull}}, {{7688522387357392508ull, 332469417986516ull}}, {{4922938190288007367ull, 531951068778426ull}}, {{249001737488495570ull, 425560855022741ull}}, {{14956596648958437749ull, 340448684018192ull}}, {{9173159379365859106ull, 544717894429108ull}}, {{14717225132976507931ull, 435774315543286ull}}, {{8084431291639296022ull, 348619452434629ull}}, {{1867043622397142665ull, 557791123895407ull}}, {{12561681342143445102ull, 446232899116325ull}}, {{10049345073714756081ull, 356986319293060ull}}, {{8039476058971804865ull, 285589055434448ull}}, {{9173812879612977461ull, 456942488695117ull}}, {{18407096747916112938ull, 365553990956093ull}}, {{3657630954107159381ull, 292443192764875ull}}, {{5852209526571455010ull, 467909108423800ull}}, {{4681767621257164008ull, 374327286739040ull}}, {{3745414097005731206ull, 299461829391232ull}}, {{9682011369951080253ull, 479138927025971ull}}, {{4056260281218953879ull, 383311141620777ull}}, {{14313054669200894073ull, 306648913296621ull}}, {{15522189841237609870ull, 490638261274594ull}}, {{16107100687731998219ull, 392510609019675ull}}, {{12885680550185598575ull, 314008487215740ull}}, {{2170344806587406105ull, 502413579545185ull}}, {{1736275845269924884ull, 401930863636148ull}}, {{8767718305699760553ull, 321544690908918ull}}, {{10339000474377706563ull, 514471505454269ull}}, {{11960549194244075573ull, 411577204363415ull}}, {{9568439355395260458ull, 329261763490732ull}}, {{552107709664775441ull, 526818821585172ull}}, {{11509732611957551322ull, 421455057268137ull}}, {{1829088460082220411ull, 337164045814510ull}}, {{2926541536131552659ull, 539462473303216ull}}, {{17098628487872883420ull, 431569978642572ull}}, {{6300205160814486089ull, 345255982914058ull}}, {{6390979442561267420ull, 552409572662493ull}}, {{12491481183532834582ull, 441927658129994ull}}, {{13682533761568177989ull, 353542126503995ull}}, {{10946027009254542391ull, 282833701203196ull}}, {{10134945585323447179ull, 452533921925114ull}}, {{11797305283000668067ull, 362027137540091ull}}, {{5748495411658624130ull, 289621710032073ull}}, {{5508243843911888285ull, 463394736051317ull}}, {{15474641519355241598ull, 370715788841053ull}}, {{1311666771258462308ull, 296572631072843ull}}, {{16856062092981180986ull, 474516209716548ull}}, {{2416803230159213819ull, 379612967773239ull}}, {{5622791398869281379ull, 303690374218591ull}}, {{1617768608707029560ull, 485904598749746ull}}, {{16051610145933264940ull, 388723678999796ull}}, {{9151939302004701629ull, 310978943199837ull}}, {{18332451697949432930ull, 497566309119739ull}}, {{18355310173101456667ull, 398053047295791ull}}, {{10994899323739255010ull, 318442437836633ull}}, {{13902490103240897694ull, 509507900538613ull}}, {{53945638366987185ull, 407606320430891ull}}, {{14800551769661231041ull, 326085056344712ull}}, {{8923487572490328373ull, 521736090151540ull}}, {{7138790057992262698ull, 417388872121232ull}}, {{16779078490619541128ull, 333911097696985ull}}, {{8399781511281714189ull, 534257756315177ull}}, {{17787871653251102321ull, 427406205052141ull}}, {{10540948507858971533ull, 341924964041713ull}}, {{13176168797832444131ull, 547079942466741ull}}, {{6851586223524044981ull, 437663953973393ull}}, {{12859966608303056631ull, 350131163178714ull}}, {{9507900129059159641ull, 560209861085943ull}}, {{14985017732731148359ull, 448167888868754ull}}, {{15677363000926829010ull, 358534311095003ull}}, {{1473843956515732238ull, 286827448876003ull}}, {{17115545589392812875ull, 458923918201604ull}}, {{17381785286256160623ull, 367139134561283ull}}, {{2837381784779197529ull, 293711307649027ull}}, {{8229159670388626369ull, 469938092238443ull}}, {{13962025365794721742ull, 375950473790754ull}}, {{14858969107377687716ull, 300760379032603ull}}, {{1638257683352838407ull, 481216606452166ull}}, {{16068001405649912019ull, 384973285161732ull}}, {{5475703495036108968ull, 307978628129386ull}}, {{1382427962573953703ull, 492765805007018ull}}, {{8484639999542983609ull, 394212644005614ull}}, {{10477060814376297210ull, 315370115204491ull}}, {{9384599673518254890ull, 504592184327186ull}}, {{3818330924072693589ull, 403673747461749ull}}, {{6744013554000065194ull, 322938997969399ull}}, {{18169119315883924958ull, 516702396751038ull}}, {{3467249008481408996ull, 413361917400831ull}}, {{17531194465752768490ull, 330689533920664ull}}, {{16981864700978698614ull, 529103254273063ull}}, {{2517445316557227922ull, 423282603418451ull}}, {{16771351512213423630ull, 338626082734760ull}}, {{8387418345831926192ull, 541801732375617ull}}, {{17777981120891271923ull, 433441385900493ull}}, {{3154338452487286569ull, 346753108720395ull}}, {{5046941523979658511ull, 554804973952632ull}}, {{15105599663409457778ull, 443843979162105ull}}, {{12084479730727566222ull, 355075183329684ull}}, {{13356932599323963301ull, 284060146663747ull}}, {{6613696899950699989ull, 454496234661996ull}}, {{1601608705218649668ull, 363596987729597ull}}, {{12349333408400650704ull, 290877590183677ull}}, {{5001538194473399834ull, 465404144293884ull}}, {{7690579370320630190ull, 372323315435107ull}}, {{17220509940482235122ull, 297858652348085ull}}, {{9106071831062024579ull, 476573843756937ull}}, {{18352903909075350633ull, 381259075005549ull}}, {{18371671942002190829ull, 305007260004439ull}}, {{18326628662977774357ull, 488011616007103ull}}, {{3593256486156488516ull, 390409292805683ull}}, {{10253302818409011459ull, 312327434244546ull}}, {{9026586879970597689ull, 499723894791274ull}}, {{10910618318718388474ull, 399779115833019ull}}, {{12417843469716621102ull, 319823292666415ull}}, {{1421805477837042148ull, 511717268266265ull}}, {{1137444382269633718ull, 409373814613012ull}}, {{11978001950041437944ull, 327499051690409ull}}, {{8096756675840569741ull, 523998482704655ull}}, {{6477405340672455793ull, 419198786163724ull}}, {{8871273087279874958ull, 335359028930979ull}}, {{3125990495422068963ull, 536574446289567ull}}, {{13568838840563386140ull, 429259557031653ull}}, {{18233768701934529558ull, 343407645625322ull}}, {{14416634664127606000ull, 549452233000516ull}}, {{7843958916560174477ull, 439561786400413ull}}, {{13653864762731960228ull, 351649429120330ull}}, {{3399439546661584749ull, 562639086592529ull}}, {{6408900452071178122ull, 450111269274023ull}}, {{12505817991140763144ull, 360089015419218ull}}, {{17383352022396431162ull, 288071212335374ull}}, {{16745316791608558889ull, 460913939736599ull}}, {{17085602248028757434ull, 368731151789279ull}}, {{17357830613164916271ull, 294984921431423ull}}, {{5636436092612404094ull, 471975874290278ull}}, {{11887846503573743922ull, 377580699432222ull}}, {{2131579573375174491ull, 302064559545778ull}}, {{18167922576367920478ull, 483303295273244ull}}, {{18223686875836246706ull, 386642636218595ull}}, {{14578949500668997365ull, 309314108974876ull}}, {{15947621571586575137ull, 494902574359802ull}}, {{5379399627785439463ull, 395922059487842ull}}, {{15371566146454082540ull, 316737647590273ull}}, {{2458412945875070125ull, 506780236144438ull}}, {{9345427986183876747ull, 405424188915550ull}}, {{7476342388947101397ull, 324339351132440ull}}, {{11962147822315362236ull, 518942961811904ull}}, {{13259067072594200112ull, 415154369449523ull}}, {{17985951287559180736ull, 332123495559618ull}}, {{6641429171643227238ull, 531397592895390ull}}, {{5313143337314581790ull, 425118074316312ull}}, {{15318561114077396402ull, 340094459453049ull}}, {{13441651338298103274ull, 544151135124879ull}}, {{14442669885380392942ull, 435320908099903ull}}, {{486089464078583384ull, 348256726479923ull}}, {{15535138401493374707ull, 557210762367876ull}}, {{8738761906452789443ull, 445768609894301ull}}, {{3301660710420321231ull, 356614887915441ull}}, {{17398723827303898277ull, 285291910332352ull}}, {{13080562864718595951ull, 456467056531764ull}}, {{14153799106516787084ull, 365173645225411ull}}, {{7633690470471519344ull, 292138916180329ull}}, {{1145858308528699981ull, 467422265888527ull}}, {{11984733091048690954ull, 373937812710821ull}}, {{5898437658097042440ull, 299150250168657ull}}, {{13126849067697178228ull, 478640400269851ull}}, {{6812130439415832259ull, 382912320215881ull}}, {{1760355536790755484ull, 306329856172705ull}}, {{2816568858865208774ull, 490127769876328ull}}, {{9631952716575987666ull, 392102215901062ull}}, {{326864543776969486ull, 313681772720850ull}}, {{522983270043151178ull, 501890836353360ull}}, {{418386616034520942ull, 401512669082688ull}}, {{7713406922311437400ull, 321210135266150ull}}, {{12341451075698299841ull, 513936216425840ull}}, {{9873160860558639872ull, 411148973140672ull}}, {{519831058963091251ull, 328919178512538ull}}, {{15589124953308587295ull, 526270685620060ull}}, {{12471299962646869836ull, 421016548496048ull}}, {{17355737599601316515ull, 336813238796838ull}}, {{5633087270910644485ull, 538901182074942ull}}, {{15574516260954246558ull, 431120945659953ull}}, {{1391566564537666277ull, 344896756527963ull}}, {{16983901762227907336ull, 551834810444740ull}}, {{13587121409782325868ull, 441467848355792ull}}, {{3490999498342040048ull, 353174278684634ull}}, {{6482148413415542362ull, 282539422947707ull}}, {{14060786276206778102ull, 452063076716331ull}}, {{7559280206223512158ull, 361650461373065ull}}, {{6047424164978809727ull, 289320369098452ull}}, {{13365227478708005886ull, 462912590557523ull}}, {{18070879612450225355ull, 370330072446018ull}}, {{3388657245734449315ull, 296264057956815ull}}, {{5421851593175118904ull, 474022492730904ull}}, {{8026830089282005446ull, 379217994184723ull}}, {{13800161700909425003ull, 303374395347778ull}}, {{18390909906713169682ull, 485399032556445ull}}, {{14712727925370535745ull, 388319226045156ull}}, {{8080833525554518273ull, 310655380836125ull}}, {{12929333640887229237ull, 497048609337800ull}}, {{10343466912709783390ull, 397638887470240ull}}, {{8274773530167826712ull, 318111109976192ull}}, {{16928986463010433062ull, 508977775961907ull}}, {{6164491540924525803ull, 407182220769526ull}}, {{1242244417997710319ull, 325745776615621ull}}, {{13055637513022067481ull, 521193242584993ull}}, {{17823207639901474631ull, 416954594067994ull}}, {{17947914926663090028ull, 333563675254395ull}}, {{10269919808951392429ull, 533701880407033ull}}, {{15594633476644934589ull, 426961504325626ull}}, {{8786357966574037348ull, 341569203460501ull}}, {{6679475117034639111ull, 546510725536802ull}}, {{16411626537853442258ull, 437208580429441ull}}, {{9439952415540843483ull, 349766864343553ull}}, {{11414575050123439250ull, 559626982949685ull}}, {{9131660040098751400ull, 447701586359748ull}}, {{14684025661562821766ull, 358161269087798ull}}, {{679174085024526443ull, 286529015270239ull}}, {{8465376165523062956ull, 458446424432382ull}}, {{17840347376644181335ull, 366757139545905ull}}, {{14272277901315345068ull, 293405711636724ull}}, {{11767598197878821139ull, 469449138618759ull}}, {{13103427373044967234ull, 375559310895007ull}}, {{3104044268952153141ull, 300447448716006ull}}, {{16034517274549175995ull, 480715917945609ull}}, {{16516962634381251119ull, 384572734356487ull}}, {{5834872478021180249ull, 307658187485190ull}}, {{9335795964833888398ull, 492253099976304ull}}, {{11157985586609021042ull, 393802479981043ull}}, {{16305086098771037480ull, 315041983984834ull}}, {{15020091313807928998ull, 504067174375735ull}}, {{12016073051046343199ull, 403253739500588ull}}, {{16991556070320895205ull, 322602991600470ull}}, {{8739745638803880713ull, 516164786560753ull}}, {{14370494140526925216ull, 412931829248602ull}}, {{4117697682937719527ull, 330345463398882ull}}, {{10277665107442261566ull, 528552741438211ull}}, {{4532783271211898930ull, 422842193150569ull}}, {{7315575431711429467ull, 338273754520455ull}}, {{11704920690738287147ull, 541238007232728ull}}, {{16742634182074450364ull, 432990405786182ull}}, {{6015409716175739645ull, 346392324628946ull}}, {{2245957916397362785ull, 554227719406314ull}}, {{5486115147859800551ull, 443382175525051ull}}, {{699543303545930118ull, 354705740420041ull}}, {{15317029901804385387ull, 283764592336032ull}}, {{9749852583919375327ull, 454023347737652ull}}, {{421184437651679615ull, 363218678190122ull}}, {{11404993994347074661ull, 290574942552097ull}}, {{3490595131987678166ull, 464919908083356ull}}, {{17549871364557783825ull, 371935926466684ull}}, {{17729245906388137383ull, 297548741173347ull}}, {{13609398191253378521ull, 476077985877356ull}}, {{7198169738260792493ull, 380862388701885ull}}, {{5758535790608633995ull, 304689910961508ull}}, {{5524308450231904068ull, 487503857538413ull}}, {{11798144389669343901ull, 390003086030730ull}}, {{9438515511735475121ull, 312002468824584ull}}, {{4033578374551029224ull, 499203950119335ull}}, {{3226862699640823379ull, 399363160095468ull}}, {{9960187789196479349ull, 319490528076374ull}}, {{4868254018488635990ull, 511184844922199ull}}, {{7583952029532819115ull, 408947875937759ull}}, {{9756510438368165615ull, 327158300750207ull}}, {{853021442421423692ull, 523453281200332ull}}, {{11750463598162869923ull, 418762624960265ull}}, {{9400370878530295938ull, 335010099968212ull}}, {{283198146680832208ull, 536016159949140ull}}, {{226558517344665767ull, 428812927959312ull}}, {{11249293258101463583ull, 343050342367449ull}}, {{6930822768736610763ull, 548880547787919ull}}, {{9234007029731198934ull, 439104438230335ull}}, {{7387205623784959147ull, 351283550584268ull}}, {{8130180183314024312ull, 562053680934829ull}}, {{10193492961393129773ull, 449642944747863ull}}, {{15533491998598324465ull, 359714355798290ull}}, {{12426793598878659572ull, 287771484638632ull}}, {{5125474499238214022ull, 460434375421812ull}}, {{15168426043616302187ull, 368347500337449ull}}, {{15824089649634952073ull, 294678000269959ull}}, {{14250496995190192347ull, 471484800431935ull}}, {{11400397596152153878ull, 377187840345548ull}}, {{16499015706405543748ull, 301750272276438ull}}, {{4262332241797408058ull, 482800435642302ull}}, {{14477912237663657416ull, 386240348513841ull}}, {{7892980975389015610ull, 308992278811073ull}}, {{8939420745880514653ull, 494387646097717ull}}, {{18219583040930142692ull, 395510116878173ull}}, {{3507619988518383184ull, 316408093502539ull}}, {{12990889611113233740ull, 506252949604062ull}}, {{3014014059406766346ull, 405002359683250ull}}, {{2411211247525413077ull, 324001887746600ull}}, {{3857937996040660923ull, 518403020394560ull}}, {{3086350396832528738ull, 414722416315648ull}}, {{9847777946949843637ull, 331777933052518ull}}, {{12067095900377839496ull, 530844692884029ull}}, {{13343025535044181920ull, 424675754307223ull}}, {{18053118057519166182ull, 339740603445778ull}}, {{6748896003579203953ull, 543584965513246ull}}, {{1709767988121452839ull, 434867972410597ull}}, {{12435860834722893241ull, 347894377928477ull}}, {{5139982076588987892ull, 556631004685564ull}}, {{7801334476013100637ull, 445304803748451ull}}, {{2551718766068570186ull, 356243842998761ull}}, {{16798770271822497442ull, 284995074399008ull}}, {{4741939546464533968ull, 455992119038414ull}}, {{7482900451913537497ull, 364793695230731ull}}, {{2296971546788919675ull, 291834956184585ull}}, {{3675154474862271480ull, 466935929895336ull}}, {{17697518838857458476ull, 373548743916268ull}}, {{3089968626860235811ull, 298838995133015ull}}, {{4943949802976377299ull, 478142392212824ull}}, {{7644508657123012162ull, 382513913770259ull}}, {{9804955740440320053ull, 306011131016207ull}}, {{930533925736870792ull, 489617809625932ull}}, {{11812473584815227603ull, 391694247700745ull}}, {{9449978867852182082ull, 313355398160596ull}}, {{7741268559079670686ull, 501368637056954ull}}, {{9882363662005646872ull, 401094909645563ull}}, {{15284588559088338144ull, 320875927716450ull}}, {{6008597620831789414ull, 513401484346321ull}}, {{1117529281923521208ull, 410721187477057ull}}, {{11962069869764547936ull, 328576949981645ull}}, {{692567717913725082ull, 525723119970633ull}}, {{7932751803814800712ull, 420578495976506ull}}, {{2656852628309930246ull, 336462796781205ull}}, {{4250964205295888394ull, 538340474849928ull}}, {{10779468993720531361ull, 430672379879942ull}}, {{1244877565492604443ull, 344537903903954ull}}, {{9370501734271987755ull, 551260646246326ull}}, {{3807052572675679881ull, 441008516997061ull}}, {{17803037317108185197ull, 352806813597648ull}}, {{3174383409460817188ull, 282245450878119ull}}, {{12457711084621128148ull, 451592721404990ull}}, {{9966168867696902518ull, 361274177123992ull}}, {{594237464673701368ull, 289019341699194ull}}, {{8329477572961742835ull, 462430946718710ull}}, {{6663582058369394268ull, 369944757374968ull}}, {{12709563276179336061ull, 295955805899974ull}}, {{9267254797661206728ull, 473529289439959ull}}, {{11103152652870875705ull, 378823431551967ull}}, {{1503824492812879918ull, 303058745241574ull}}, {{9784816817984428515ull, 484893992386518ull}}, {{15206551083871363459ull, 387915193909214ull}}, {{15854589681839001090ull, 310332155127371ull}}, {{17988645861458581098ull, 496531448203794ull}}, {{18080265503908775201ull, 397225158563035ull}}, {{14464212403127020161ull, 317780126850428ull}}, {{1006646956551770319ull, 508448202960686ull}}, {{15562712824209057548ull, 406758562368548ull}}, {{1382123815141515068ull, 325406849894839ull}}, {{9590095733710244756ull, 520650959831742ull}}, {{293378957484375158ull, 416520767865394ull}}, {{3924051980729410450ull, 333216614292315ull}}, {{6278483169167056720ull, 533146582867704ull}}, {{8712135350075555699ull, 426517266294163ull}}, {{14348405909544265206ull, 341213813035330ull}}, {{4510705381561272713ull, 545942100856529ull}}, {{7297913119990928494ull, 436753680685223ull}}, {{13217028125476563441ull, 349402944548178ull}}, {{17457896186020591183ull, 559044711277085ull}}, {{13966316948816472946ull, 447235769021668ull}}, {{105007114827447387ull, 357788615217335ull}}, {{84005691861957910ull, 286230892173868ull}}, {{14891804365946773949ull, 457969427478188ull}}, {{845397048531688189ull, 366375541982551ull}}, {{15433712897792991844ull, 293100433586040ull}}, {{6247196562759235335ull, 468960693737665ull}}, {{4997757250207388268ull, 375168554990132ull}}, {{15066252244391641584ull, 300134843992105ull}}, {{5659259517317074918ull, 480215750387369ull}}, {{8216756428595570258ull, 384172600309895ull}}, {{6573405142876456206ull, 307338080247916ull}}, {{3138750599118509284ull, 491740928396666ull}}, {{17268395738262448720ull, 393392742717332ull}}, {{6436018961126138329ull, 314714194173866ull}}, {{2918932708318000681ull, 503542710678186ull}}, {{17092541425622041837ull, 402834168542548ull}}, {{2605986696271902500ull, 322267334834039ull}}, {{11548276343518864647ull, 515627735734462ull}}, {{1859923445331271071ull, 412502188587570ull}}, {{1487938756265016857ull, 330001750870056ull}}, {{13448748454249757941ull, 528002801392089ull}}, {{14448347578141716676ull, 422402241113671ull}}, {{7869329247771463017ull, 337921792890937ull}}, {{16280275611176251151ull, 540674868625499ull}}, {{16713569303682911244ull, 432539894900399ull}}, {{17060204257688239318ull, 346031915920319ull}}, {{16228280368075451940ull, 553651065472511ull}}, {{9293275479718451229ull, 442920852378009ull}}, {{11123969198516671306ull, 354336681902407ull}}, {{1520477729329516398ull, 283469345521926ull}}, {{13500810811152957207ull, 453550952835081ull}}, {{7111299834180455442ull, 362840762268065ull}}, {{5689039867344364354ull, 290272609814452ull}}, {{12791812602492893290ull, 464436175703123ull}}, {{17612147711478135278ull, 371548940562498ull}}, {{3021671724956777253ull, 297239152449999ull}}, {{12213372389414664251ull, 475582643919998ull}}, {{17149395541015552047ull, 380466115135998ull}}, {{2651469988586710668ull, 304372892108799ull}}, {{11621049611222557716ull, 486996627374078ull}}, {{16675537318461866819ull, 389597301899262ull}}, {{5961732225285672808ull, 311677841519410ull}}, {{9538771560457076494ull, 498684546431056ull}}, {{3941668433623750872ull, 398947637144845ull}}, {{3153334746899000697ull, 319158109715876ull}}, {{16113382039264132086ull, 510652975545401ull}}, {{9201356816669395345ull, 408522380436321ull}}, {{3671736638593605953ull, 326817904349057ull}}, {{9564127436491679848ull, 522908646958491ull}}, {{3961953134451433555ull, 418326917566793ull}}, {{10548260137044967490ull, 334661534053434ull}}, {{5809169775046217015ull, 535458454485495ull}}, {{4647335820036973612ull, 428366763588396ull}}, {{28519841287668566ull, 342693410870717ull}}, {{3734980560802180030ull, 548309457393147ull}}, {{14056030892867474993ull, 438647565914517ull}}, {{3866127084810159348ull, 350918052731614ull}}, {{13564500965180075604ull, 561468884370582ull}}, {{3472903142660239837ull, 449175107496466ull}}, {{17535717773095833162ull, 359340085997172ull}}, {{6649876588992845883ull, 287472068797738ull}}, {{6950453727646643090ull, 459955310076381ull}}, {{1871014167375404149ull, 367964248061105ull}}, {{1496811333900323319ull, 294371398448884ull}}, {{9773595763724337957ull, 470994237518214ull}}, {{11508225425721380689ull, 376795390014571ull}}, {{5517231525835194228ull, 301436312011657ull}}, {{12516919256078221088ull, 482298099218651ull}}, {{6324186590120666547ull, 385838479374921ull}}, {{1370000457354622914ull, 308670783499937ull}}, {{5881349546509306986ull, 493873253599899ull}}, {{8394428451949355912ull, 395098602879919ull}}, {{10404891576301395053ull, 316078882303935ull}}, {{16647826522082232085ull, 505726211686296ull}}, {{9628912402923875344ull, 404580969349037ull}}, {{324432292855279629ull, 323664775479230ull}}, {{519091668568447407ull, 517863640766768ull}}, {{7793970964338578572ull, 414290912613414ull}}, {{9924525586212773180ull, 331432730090731ull}}, {{8500543308456616443ull, 530292368145170ull}}, {{6800434646765293154ull, 424233894516136ull}}, {{1750998902670324200ull, 339387115612909ull}}, {{10180295873756339367ull, 543019384980654ull}}, {{11833585513746981816ull, 434415507984523ull}}, {{16845566040481406099ull, 347532406387618ull}}, {{4816812776318787820ull, 556051850220190ull}}, {{3853450221055030256ull, 444841480176152ull}}, {{14150806621069755174ull, 355873184140921ull}}, {{7631296482113893816ull, 284698547312737ull}}, {{15899423186124140429ull, 455517675700379ull}}, {{16408887363641222667ull, 364414140560303ull}}, {{2059063446687247164ull, 291531312448243ull}}, {{18051896773667236755ull, 466450099917188ull}}, {{3373470974708058434ull, 373160079933751ull}}, {{17456172038734088040ull, 298528063947000ull}}, {{9483131188264989248ull, 477644902315201ull}}, {{3897156135870081075ull, 382115921852161ull}}, {{17875120167663706153ull, 305692737481728ull}}, {{6464099379810467906ull, 489108379970766ull}}, {{1481930689106464001ull, 391286703976613ull}}, {{8564242180768991847ull, 313029363181290ull}}, {{13702787489230386956ull, 500846981090064ull}}, {{14651578806126219888ull, 400677584872051ull}}, {{8031914230159065587ull, 320542067897641ull}}, {{5472365138770684293ull, 512867308636226ull}}, {{688543296274637111ull, 410293846908981ull}}, {{15308229895987350982ull, 328235077527184ull}}, {{13425121389354030601ull, 525176124043495ull}}, {{10740097111483224481ull, 420140899234796ull}}, {{4902728874444669262ull, 336112719387837ull}}, {{11533715013853381142ull, 537780351020539ull}}, {{12916320825824615237ull, 430224280816431ull}}, {{6643707845917781866ull, 344179424653145ull}}, {{10629932553468450986ull, 550687079445032ull}}, {{1125248413290940142ull, 440549663556026ull}}, {{15657593989600393407ull, 352439730844820ull}}, {{12526075191680314725ull, 281951784675856ull}}, {{12663022677204682914ull, 451122855481370ull}}, {{10130418141763746331ull, 360898284385096ull}}, {{4414985698669086742ull, 288718627508077ull}}, {{10753325932612449110ull, 461949804012923ull}}, {{15981358375573779934ull, 369559843210338ull}}, {{1717040256233292978ull, 295647874568271ull}}, {{13815310854198999734ull, 473036599309233ull}}, {{18430946312843020434ull, 378429279447386ull}}, {{11055408235532506024ull, 302743423557909ull}}, {{6620606732626278669ull, 484389477692655ull}}, {{5296485386101022935ull, 387511582154124ull}}, {{7926537123622728671ull, 310009265723299ull}}, {{1614412953570634904ull, 496014825157279ull}}, {{4980879177598418247ull, 396811860125823ull}}, {{11363400971562555244ull, 317449488100658ull}}, {{14492092739758178067ull, 507919180961053ull}}, {{525627747580811484ull, 406335344768843ull}}, {{7799199827548469833ull, 325068275815074ull}}, {{1410673279851820764ull, 520109241304119ull}}, {{4817887438623366934ull, 416087393043295ull}}, {{3854309950898693547ull, 332869914434636ull}}, {{17234942365663640646ull, 532591863095417ull}}, {{6409256263047091870ull, 426073490476334ull}}, {{8816753825179583819ull, 340858792381067ull}}, {{17796154935029244434ull, 545374067809707ull}}, {{6858226318539574901ull, 436299254247766ull}}, {{1797232240089749597ull, 349039403398213ull}}, {{17632966843111240649ull, 558463045437140ull}}, {{14106373474488992519ull, 446770436349712ull}}, {{3906401150107373369ull, 357416349079770ull}}, {{3125120920085898695ull, 285933079263816ull}}, {{16068239916363168882ull, 457492926822105ull}}, {{12854591933090535105ull, 365994341457684ull}}, {{13973022361214338407ull, 292795473166147ull}}, {{7599440518975300159ull, 468472757065836ull}}, {{2390203600438329804ull, 374778205652669ull}}, {{5601511695092574166ull, 299822564522135ull}}, {{8962418712148118666ull, 479716103235416ull}}, {{3480586154976584610ull, 383772882588333ull}}, {{10163166553465088334ull, 307018306070666ull}}, {{8882368856060320688ull, 491229289713066ull}}, {{3416546270106346227ull, 392983431770453ull}}, {{10111934645568897628ull, 314386745416362ull}}, {{1421700173942594913ull, 503018792666180ull}}, {{1137360139154075930ull, 402415034132944ull}}, {{4599236926065171067ull, 321932027306355ull}}, {{7358779081704273708ull, 515091243690168ull}}, {{13265720894847239612ull, 412072994952134ull}}, {{14301925530619702013ull, 329658395961707ull}}, {{8125685590023881928ull, 527453433538732ull}}, {{17568594916244836512ull, 421962746830985ull}}, {{14054875932995869210ull, 337570197464788ull}}, {{351708604341928797ull, 540112315943662ull}}, {{11349413327699274007ull, 432089852754929ull}}, {{12768879476901329529ull, 345671882203943ull}}, {{16740858348300216923ull, 553075011526309ull}}, {{17082035493382083861ull, 442460009221047ull}}, {{6286930765221846443ull, 353968007376838ull}}, {{12408242241661297800ull, 283174405901470ull}}, {{1406443512948524865ull, 453079049442353ull}}, {{8503852439842640538ull, 362463239553882ull}}, {{17871128396099843400ull, 289970591643105ull}}, {{10147061360050197824ull, 463952946628969ull}}, {{11806997902782068583ull, 371162357303175ull}}, {{9445598322225654866ull, 296929885842540ull}}, {{15112957315561047786ull, 475087817348064ull}}, {{15779714667190748552ull, 380070253878451ull}}, {{8934422919010688518ull, 304056203102761ull}}, {{6916379040933280983ull, 486489924964418ull}}, {{12911800862230445433ull, 389191939971534ull}}, {{14018789504526266669ull, 311353551977227ull}}, {{7672667948274385378ull, 498165683163564ull}}, {{9827483173361418626ull, 398532546530851ull}}, {{4172637723947224577ull, 318826037224681ull}}, {{17744266802541290293ull, 510121659559489ull}}, {{17884762256774942558ull, 408097327647591ull}}, {{10618460990678043723ull, 326477862118073ull}}, {{13300188770342959634ull, 522364579388917ull}}, {{3261453386790547061ull, 417891663511134ull}}, {{6298511524174347972ull, 334313330808907ull}}, {{13766967253420867078ull, 534901329294251ull}}, {{7324224987994783339ull, 427921063435401ull}}, {{2170031175653916348ull, 342336850748321ull}}, {{14540096325271997127ull, 547738961197313ull}}, {{564030615991866732ull, 438191168957851ull}}, {{15208619751761134678ull, 350552935166280ull}}, {{5887047529108263869ull, 560884696266049ull}}, {{8398986838028521418ull, 448707757012839ull}}, {{10408538285164727458ull, 358966205610271ull}}, {{4637481813389871643ull, 287172964488217ull}}, {{11109319716165704952ull, 459476743181147ull}}, {{1508758143448743315ull, 367581394544918ull}}, {{8585704144242815299ull, 294065115635934ull}}, {{2669080186562773508ull, 470504185017495ull}}, {{2135264149250218807ull, 376403348013996ull}}, {{16465606578367816338ull, 301122678411196ull}}, {{519528822195133879ull, 481796285457915ull}}, {{415623057756107103ull, 385437028366332ull}}, {{11400544890430616652ull, 308349622693065ull}}, {{18240871824688986643ull, 493359396308904ull}}, {{18282046274493099638ull, 394687517047123ull}}, {{3557590575368748740ull, 315750013637699ull}}, {{13070842550073818631ull, 505200021820318ull}}, {{17835371669542875551ull, 404160017456254ull}}, {{17957646150376210764ull, 323328013965003ull}}, {{6596140952150475284ull, 517324822344006ull}}, {{1587563946978469904ull, 413859857875205ull}}, {{1270051157582775923ull, 331087886300164ull}}, {{9410779481616262123ull, 529740618080262ull}}, {{149925955809189052ull, 423792494464210ull}}, {{119940764647351242ull, 339033995571368ull}}, {{14949300482403403280ull, 542454392914188ull}}, {{891393941696991654ull, 433963514331351ull}}, {{15470510412325234616ull, 347170811465080ull}}, {{6306072586010823770ull, 555473298344129ull}}, {{8734206883550569339ull, 444378638675303ull}}, {{14366063136324276117ull, 355502910940242ull}}, {{4114152879575600247ull, 284402328752194ull}}, {{13961342236804781043ull, 455043726003510ull}}, {{11169073789443824834ull, 364034980802808ull}}, {{16313956661038880514ull, 291227984642246ull}}, {{276888954468836560ull, 465964775427595ull}}, {{221511163575069248ull, 372771820342076ull}}, {{14934604189827696691ull, 298217456273660ull}}, {{5448622630014763089ull, 477147930037857ull}}, {{15426944548237541441ull, 381718344030285ull}}, {{12341555638590033153ull, 305374675224228ull}}, {{16057140207002142722ull, 488599480358765ull}}, {{12845712165601714177ull, 390879584287012ull}}, {{2897872102997550695ull, 312703667429610ull}}, {{4636595364796081113ull, 500325867887376ull}}, {{19927477094954567ull, 400260694309901ull}}, {{14773337240643604946ull, 320208555447920ull}}, {{5190595511320216298ull, 512333688716673ull}}, {{11531174038539993685ull, 409866950973338ull}}, {{16603636860315815594ull, 327893560778670ull}}, {{8119074902795753335ull, 524629697245873ull}}, {{13873957551720423314ull, 419703757796698ull}}, {{31119597150607682ull, 335763006237359ull}}, {{7428488984924792937ull, 537220809979774ull}}, {{9632140002681744673ull, 429776647983819ull}}, {{11395060816887306061ull, 343821318387055ull}}, {{18232097307019689699ull, 550114109419288ull}}, {{3517631401390020789ull, 440091287535431ull}}, {{17571500380079657924ull, 352073030028344ull}}, {{17746549118805636662ull, 281658424022675ull}}, {{9947734516379467044ull, 450653478436281ull}}, {{4268838798361663312ull, 360522782749025ull}}, {{3415071038689330649ull, 288418226199220ull}}, {{5464113661902929039ull, 461469161918752ull}}, {{15439337373748074201ull, 369175329535001ull}}, {{8662121084256549038ull, 295340263628001ull}}, {{6480696105326657814ull, 472544421804802ull}}, {{16252603328487057221ull, 378035537443841ull}}, {{9312733848047735453ull, 302428429955073ull}}, {{11211025342134466402ull, 483885487928117ull}}, {{1590122644223752475ull, 387108390342494ull}}, {{4961446930120912303ull, 309686712273995ull}}, {{7938315088193459686ull, 495498739638392ull}}, {{17418698514780498718ull, 396398991710713ull}}, {{2866912367598668005ull, 317119193368571ull}}, {{15655106232383599778ull, 507390709389713ull}}, {{1456038541681148852ull, 405912567511771ull}}, {{15922226092312560375ull, 324730054009416ull}}, {{18096864118216275953ull, 519568086415066ull}}, {{10788142479831110439ull, 415654469132053ull}}, {{16009211613348708998ull, 332523575305642ull}}, {{10857343322390293104ull, 532037720489028ull}}, {{16064572287396055129ull, 425630176391222ull}}, {{5472960200433023457ull, 340504141112978ull}}, {{5067387505950927208ull, 544806625780765ull}}, {{4053910004760741767ull, 435845300624612ull}}, {{14311174448034324383ull, 348676240499689ull}}, {{11829832672629188043ull, 557881984799503ull}}, {{16842563767587171081ull, 446305587839602ull}}, {{6095353384585916218ull, 357044470271682ull}}, {{15944329151894463944ull, 285635576217345ull}}, {{7064182569321590695ull, 457016921947753ull}}, {{13030043684941093202ull, 365613537558202ull}}, {{3045337318469053915ull, 292490830046562ull}}, {{8561888524292396588ull, 467985328074499ull}}, {{10538859634175827593ull, 374388262459599ull}}, {{12120436522082572398ull, 299510609967679ull}}, {{8324651991106384867ull, 479216975948287ull}}, {{17727768037110838863ull, 383373580758629ull}}, {{17871563244430581414ull, 306698864606903ull}}, {{6458408302637468323ull, 490718183371046ull}}, {{1477377827368064335ull, 392574546696837ull}}, {{12249948706120182437ull, 314059637357469ull}}, {{8531871485566560931ull, 502495419771951ull}}, {{3136148373711338421ull, 401996335817561ull}}, {{17266313957936712030ull, 321597068654048ull}}, {{5490009444247277309ull, 514555309846478ull}}, {{11770705184881642493ull, 411644247877182ull}}, {{2037866518421493348ull, 329315398301746ull}}, {{14328632873700120327ull, 526904637282793ull}}, {{394859854734365292ull, 421523709826235ull}}, {{315887883787492233ull, 337218967860988ull}}, {{15262815873027628866ull, 539550348577580ull}}, {{12210252698422103093ull, 431640278862064ull}}, {{13457550973479592797ull, 345312223089651ull}}, {{14153383928083527830ull, 552499556943442ull}}, {{3944009512983001617ull, 441999645554754ull}}, {{6844556425128311617ull, 353599716443803ull}}, {{12854342769586469940ull, 282879773155042ull}}, {{5809553172370710611ull, 452607637048068ull}}, {{12026340167380389135ull, 362086109638454ull}}, {{13310420948646221631ull, 289668887710763ull}}, {{17607324703092044287ull, 463470220337221ull}}, {{10396510947731725107ull, 370776176269777ull}}, {{938511128701559439ull, 296620941015822ull}}, {{5190966620664405426ull, 474593505625315ull}}, {{4152773296531524340ull, 379674804500252ull}}, {{14390265081450950442ull, 303739843600201ull}}, {{15645726500837700061ull, 485983749760322ull}}, {{5137883571186339402ull, 388786999808258ull}}, {{11489004486432892168ull, 311029599846606ull}}, {{11003709548808806823ull, 497647359754570ull}}, {{8802967639047045458ull, 398117887803656ull}}, {{3353025296495726043ull, 318494310242925ull}}, {{5364840474393161669ull, 509590896388680ull}}, {{4291872379514529335ull, 407672717110944ull}}, {{7122846718353533791ull, 326138173688755ull}}, {{11396554749365654066ull, 521821077902008ull}}, {{16495941428976343899ull, 417456862321606ull}}, {{9507404328439164796ull, 333965489857285ull}}, {{15211846925502663674ull, 534344783771656ull}}, {{8480128725660220616ull, 427475827017325ull}}, {{6784102980528176493ull, 341980661613860ull}}, {{10854564768845082389ull, 547169058582176ull}}, {{4994303000334155588ull, 437735246865741ull}}, {{306093585525414147ull, 350188197492593ull}}, {{15247144995808303928ull, 560301115988148ull}}, {{1129669552420912173ull, 448240892790519ull}}, {{4593084456678640061ull, 358592714232415ull}}, {{3674467565342912049ull, 286874171385932ull}}, {{9568496919290569602ull, 458998674217491ull}}, {{3965448720690545358ull, 367198939373993ull}}, {{10551056606036256933ull, 293759151499194ull}}, {{5813644125432280123ull, 470014642398711ull}}, {{961566485603913775ull, 376011713918969ull}}, {{4458602003225041343ull, 300809371135175ull}}, {{7133763205160066150ull, 481294993816280ull}}, {{5707010564128052920ull, 385035995053024ull}}, {{8254957266044352659ull, 308028796042419ull}}, {{2139885181445233285ull, 492846073667871ull}}, {{16469303404123827921ull, 394276858934296ull}}, {{9486093908557152013ull, 315421487147437ull}}, {{420354994723801929ull, 504674379435900ull}}, {{336283995779041543ull, 403739503548720ull}}, {{269027196623233234ull, 322991602838976ull}}, {{11498489958822904144ull, 516786564542361ull}}, {{5509443152316412992ull, 413429251633889ull}}, {{8096903336595040717ull, 330743401307111ull}}, {{5576347709068244501ull, 529189442091378ull}}, {{11839775796738416247ull, 423351553673102ull}}, {{2093123007906912351ull, 338681242938482ull}}, {{7038345627392970085ull, 541889988701571ull}}, {{1941327687172465745ull, 433511990961257ull}}, {{12621108593963703565ull, 346809592769005ull}}, {{1747029676632374089ull, 554895348430409ull}}, {{5086972556047809594ull, 443916278744327ull}}, {{15137624489063978645ull, 355133022995461ull}}, {{8420750776509272593ull, 284106418396369ull}}, {{2405154798189105179ull, 454570269434191ull}}, {{16681519097518925436ull, 363656215547352ull}}, {{5966517648531319702ull, 290924972437882ull}}, {{13235777052392021847ull, 465479955900611ull}}, {{6899272827171707154ull, 372383964720489ull}}, {{9208767076479276047ull, 297907171776391ull}}, {{7355329692883021028ull, 476651474842226ull}}, {{2194914939564506499ull, 381321179873781ull}}, {{16513327210619246492ull, 305056943899024ull}}, {{15353277092765063418ull, 488091110238439ull}}, {{15971970488953961058ull, 390472888190751ull}}, {{9088227576421258523ull, 312378310552601ull}}, {{7162466492790192990ull, 499805296884162ull}}, {{16798019638457885362ull, 399844237507329ull}}, {{17127764525508218613ull, 319875390005863ull}}, {{5268330352361687841ull, 511800624009382ull}}, {{15282710726115081243ull, 409440499207505ull}}, {{12226168580892064994ull, 327552399366004ull}}, {{8493823285201573021ull, 524083838985607ull}}, {{17863105072386989386ull, 419267071188485ull}}, {{14290484057909591509ull, 335413656950788ull}}, {{728681604203884475ull, 536661851121262ull}}, {{11650991727588838550ull, 429329480897009ull}}, {{13010142196812981163ull, 343463584717607ull}}, {{6058832255933128568ull, 549541735548172ull}}, {{15915112248972233824ull, 439633388438537ull}}, {{5353392169693966413ull, 351706710750830ull}}, {{8565427471510346261ull, 562730737201328ull}}, {{14231039606692097655ull, 450184589761062ull}}, {{4006134055869857477ull, 360147671808850ull}}, {{3204907244695885982ull, 288118137447080ull}}, {{5127851591513417571ull, 460989019915328ull}}, {{11480978902694554703ull, 368791215932262ull}}, {{1806085492671823116ull, 295032972745810ull}}, {{2889736788274916986ull, 472052756393296ull}}, {{17069184689587574882ull, 377642205114636ull}}, {{9965998936928149582ull, 302113764091709ull}}, {{4877551854859308362ull, 483382022546735ull}}, {{3902041483887446689ull, 386705618037388ull}}, {{10500330816593777998ull, 309364494429910ull}}, {{16800529306550044797ull, 494983191087856ull}}, {{9751074630498125514ull, 395986552870285ull}}, {{7800859704398500411ull, 316789242296228ull}}, {{8792026712295690335ull, 506862787673965ull}}, {{7033621369836552268ull, 405490230139172ull}}, {{16694943540094972784ull, 324392184111337ull}}, {{11954514405184315162ull, 519027494578140ull}}, {{9563611524147452129ull, 415221995662512ull}}, {{272191589834141057ull, 332177596530010ull}}, {{435506543734625691ull, 531484154448016ull}}, {{15105800493955341846ull, 425187323558412ull}}, {{4705942765680452830ull, 340149858846730ull}}, {{7529508425088724528ull, 544239774154768ull}}, {{13402304369554800269ull, 435391819323814ull}}, {{14411192310385750538ull, 348313455459051ull}}, {{15679210067133380215ull, 557301528734482ull}}, {{5164670424222883526ull, 445841222987586ull}}, {{442387524636396497ull, 356672978390069ull}}, {{4043258834451027521ull, 285338382712055ull}}, {{6469214135121644034ull, 456541412339288ull}}, {{12554068937581135873ull, 365233129871430ull}}, {{10043255150064908699ull, 292186503897144ull}}, {{5001161795878122948ull, 467498406235431ull}}, {{311580621960588035ull, 373998724988345ull}}, {{249264497568470428ull, 299198979990676ull}}, {{11466869640335283655ull, 478718367985081ull}}, {{5484146897526316601ull, 382974694388065ull}}, {{4387317518021053280ull, 306379755510452ull}}, {{10709056843575595572ull, 490207608816723ull}}, {{15945943104344297104ull, 392166087053378ull}}, {{1688708039249706714ull, 313732869642703ull}}, {{17459328121767172035ull, 501972591428324ull}}, {{17656811312155647951ull, 401578073142659ull}}, {{17814797864466428684ull, 321262458514127ull}}, {{13746281324178644602ull, 514019933622604ull}}, {{14686373874084826004ull, 411215946898083ull}}, {{681052655042129834ull, 328972757518467ull}}, {{4779033062809318058ull, 526356412029547ull}}, {{14891272894473185416ull, 421085129623637ull}}, {{4534320686094727686ull, 336868103698910ull}}, {{7254913097751564298ull, 538988965918256ull}}, {{2114581663459341115ull, 431191172734605ull}}, {{1691665330767472892ull, 344952938187684ull}}, {{10085362158711777274ull, 551924701100294ull}}, {{11757638541711332142ull, 441539760880235ull}}, {{9406110833369065714ull, 353231808704188ull}}, {{14903586296179073217ull, 282585446963350ull}}, {{5398994000176965532ull, 452136715141361ull}}, {{629846385399662102ull, 361709372113089ull}}, {{4193225923061640005ull, 289367497690471ull}}, {{17777207921124354978ull, 462987996304753ull}}, {{3153719892673753012ull, 370390397043803ull}}, {{9901673543622823056ull, 296312317635042ull}}, {{1085282410828875597ull, 474099708216068ull}}, {{8246923558146921124ull, 379279766572854ull}}, {{10286887661259447222ull, 303423813258283ull}}, {{12769671443273205233ull, 485478101213253ull}}, {{17594434784102384833ull, 388382480970602ull}}, {{6696850197798087220ull, 310705984776482ull}}, {{14404309131218849875ull, 497129575642371ull}}, {{7834098490233169577ull, 397703660513897ull}}, {{17335325236412266631ull, 318162928411117ull}}, {{12979125119291985317ull, 509060685457788ull}}, {{17761997724917408900ull, 407248548366230ull}}, {{14209598179933927120ull, 325798838692984ull}}, {{11667310643668552422ull, 521278141908775ull}}, {{9333848514934841938ull, 417022513527020ull}}, {{7467078811947873550ull, 333618010821616ull}}, {{4568628469632777034ull, 533788817314586ull}}, {{18412298034673862920ull, 427031053851668ull}}, {{3661791983513359366ull, 341624843081335ull}}, {{5858867173621374986ull, 546599748930136ull}}, {{997744924155189666ull, 437279799144109ull}}, {{4487544754066062056ull, 349823839315287ull}}, {{10869420421247609613ull, 559718142904459ull}}, {{12384885151739998013ull, 447774514323567ull}}, {{2529210491908177764ull, 358219611458854ull}}, {{5712717208268452534ull, 286575689167083ull}}, {{5450998718487613732ull, 458521102667333ull}}, {{11739496604273911632ull, 366816882133866ull}}, {{5702248468677218982ull, 293453505707093ull}}, {{5434248735141640049ull, 469525609131349ull}}, {{8036747802855222362ull, 375620487305079ull}}, {{10118747057026088213ull, 300496389844063ull}}, {{12500646476499830818ull, 480794223750501ull}}, {{6311168366457954331ull, 384635379000401ull}}, {{1359585878424453141ull, 307708303200321ull}}, {{13243383849704855996ull, 492333285120513ull}}, {{17973404709247705443ull, 393866628096410ull}}, {{14378723767398164354ull, 315093302477128ull}}, {{869865139385601028ull, 504149283963406ull}}, {{15453287370476122115ull, 403319427170724ull}}, {{16051978711122808015ull, 322655541736579ull}}, {{14615119493570761855ull, 516248866778527ull}}, {{4313397965372788838ull, 412999093422822ull}}, {{14518764816523962040ull, 330399274738257ull}}, {{8472628447470697971ull, 528638839581212ull}}, {{17846149202202289346ull, 422911071664969ull}}, {{17966268176503741800ull, 338328857331975ull}}, {{10299285008696435264ull, 541326171731161ull}}, {{4550079192215237888ull, 433060937384929ull}}, {{7329412168514100634ull, 346448749907943ull}}, {{8037710654880650691ull, 554317999852709ull}}, {{10119517338646430876ull, 443454399882167ull}}, {{716916241433324054ull, 354763519905734ull}}, {{4262881807888569566ull, 283810815924587ull}}, {{10509959707363621630ull, 454097305479339ull}}, {{12097316580632807627ull, 363277844383471ull}}, {{5988504449764335778ull, 290622275506777ull}}, {{13270955934364847569ull, 464995640810843ull}}, {{17995462376975698701ull, 371996512648674ull}}, {{18085718716322469284ull, 297597210118939ull}}, {{17869103501890219885ull, 476155536190303ull}}, {{3227236357286444938ull, 380924428952243ull}}, {{9960486715312976597ull, 304739543161794ull}}, {{4868732300275031586ull, 487583269058871ull}}, {{205637025478114945ull, 390066615247097ull}}, {{11232556064608222926ull, 312053292197677ull}}, {{3214694444405515389ull, 499285267516284ull}}, {{6261104370266322634ull, 399428214013027ull}}, {{16076929940438789077ull, 319542571210421ull}}, {{18344390275218241877ull, 511268113936674ull}}, {{18364861034916503825ull, 409014491149339ull}}, {{18381237642675113383ull, 327211592919471ull}}, {{3584538525086809150ull, 523538548671155ull}}, {{2867630820069447320ull, 418830838936924ull}}, {{5983453470797468179ull, 335064671149539ull}}, {{16952223182759769734ull, 536103473839262ull}}, {{6183080916723995140ull, 428882779071410ull}}, {{4946464733379196112ull, 343106223257128ull}}, {{4224994758664803457ull, 548969957211405ull}}, {{3379995806931842765ull, 439175965769124ull}}, {{6393345460287384535ull, 351340772615299ull}}, {{17608050365943635903ull, 562145236184478ull}}, {{3018393848529177753ull, 449716188947583ull}}, {{9793412708307162849ull, 359772951158066ull}}, {{4145381351903819956ull, 287818360926453ull}}, {{2943261348304201606ull, 460509377482325ull}}, {{2354609078643361285ull, 368407501985860ull}}, {{1883687262914689028ull, 294726001588688ull}}, {{17771294879631143737ull, 471561602541900ull}}, {{14217035903704914990ull, 377249282033520ull}}, {{11373628722963931992ull, 301799425626816ull}}, {{10819108327258470541ull, 482879081002906ull}}, {{4965937847064866109ull, 386303264802325ull}}, {{3972750277651892887ull, 309042611841860ull}}, {{6356400444243028620ull, 494468178946976ull}}, {{1395771540652512573ull, 395574543157581ull}}, {{15874012491489651351ull, 316459634526064ull}}, {{14330373542157711192ull, 506335415241703ull}}, {{396252389500437984ull, 405068332193363ull}}, {{7695699541084171033ull, 324054665754690ull}}, {{12313119265734673654ull, 518487465207504ull}}, {{13539844227329649246ull, 414789972166003ull}}, {{18210573011347540043ull, 331831977732802ull}}, {{14379521559188422777ull, 530931164372484ull}}, {{15192966062092648544ull, 424744931497987ull}}, {{4775675220190298189ull, 339795945198390ull}}, {{7641080352304477103ull, 543673512317424ull}}, {{9802213096585492005ull, 434938809853939ull}}, {{11531119292010303927ull, 347951047883151ull}}, {{11071093237732665638ull, 556721676613042ull}}, {{1478176960702311864ull, 445377341290434ull}}, {{4871890383303759814ull, 356301873032347ull}}, {{14965558750868738821ull, 285041498425877ull}}, {{9187498742422340821ull, 456066397481404ull}}, {{11039347808679782980ull, 364853117985123ull}}, {{16210175876427647030ull, 291882494388098ull}}, {{3800188513832773309ull, 467011991020958ull}}, {{10418848440550039293ull, 373609592816766ull}}, {{4645729937698121111ull, 298887674253413ull}}, {{3743819085575083455ull, 478220278805461ull}}, {{17752450527427708057ull, 382576223044368ull}}, {{3133913977716435476ull, 306060978435495ull}}, {{5014262364346296762ull, 489697565496792ull}}, {{15079456335702768379ull, 391758052397433ull}}, {{995518624336483733ull, 313406441917947ull}}, {{5282178613680284297ull, 501450307068715ull}}, {{4225742890944227438ull, 401160245654972ull}}, {{14448640756981112920ull, 320928196523977ull}}, {{8360429952202139379ull, 513485114438364ull}}, {{10377692776503621826ull, 410788091550691ull}}, {{4612805406460987138ull, 328630473240553ull}}, {{3691139835595669097ull, 525808757184885ull}}, {{2952911868476535278ull, 420647005747908ull}}, {{9741027124265048868ull, 336517604598326ull}}, {{8206945769340257543ull, 538428167357322ull}}, {{17633603059697937004ull, 430742533885857ull}}, {{6728184818274528957ull, 344594027108686ull}}, {{3386398079755425685ull, 551350443373898ull}}, {{10087816093288161194ull, 441080354699118ull}}, {{15448950504114349602ull, 352864283759294ull}}, {{16048509218033390004ull, 282291427007435ull}}, {{7230870675143872391ull, 451666283211897ull}}, {{16852742984340828883ull, 361333026569517ull}}, {{6103496757988842460ull, 289066421255614ull}}, {{17144292442265968582ull, 462506274008982ull}}, {{6336736324328954219ull, 370005019207186ull}}, {{1380040244721253052ull, 296004015365749ull}}, {{9586762021037825530ull, 473606424585198ull}}, {{15048107246314081070ull, 378885139668158ull}}, {{970439352825533886ull, 303108111734527ull}}, {{5242051779262764542ull, 484972978775243ull}}, {{11572339052894032280ull, 387978383020194ull}}, {{12947220057057136147ull, 310382706416155ull}}, {{2268808017581866219ull, 496612330265849ull}}, {{5504395228807403299ull, 397289864212679ull}}, {{8092864997787832962ull, 317831891370143ull}}, {{9259235181718622416ull, 508531026192229ull}}, {{11096736960116808256ull, 406824820953783ull}}, {{16256087197577267251ull, 325459856763026ull}}, {{184297812930255340ull, 520735770820843ull}}, {{7526135879828024918ull, 416588616656674ull}}, {{9710257518604330258ull, 333270893325339ull}}, {{4468365585541197443ull, 533233429320543ull}}, {{10953390097916778601ull, 426586743456434ull}}, {{12452060893075333204ull, 341269394765147ull}}, {{5165902169952891833ull, 546031031624236ull}}, {{443372921220403143ull, 436824825299389ull}}, {{4044047151718232838ull, 349459860239511ull}}, {{17538521886974903510ull, 559135776383217ull}}, {{6652119880096102162ull, 447308621106574ull}}, {{9011044718818792053ull, 357846896885259ull}}, {{10898184589796943965ull, 286277517508207ull}}, {{2679700084707469052ull, 458044028013132ull}}, {{13211806511991706211ull, 366435222410505ull}}, {{10569445209593364969ull, 293148177928404ull}}, {{5843065891123652980ull, 469037084685447ull}}, {{15742499157124653354ull, 375229667748357ull}}, {{5215301696215902037ull, 300183734198686ull}}, {{965785084461622612ull, 480293974717898ull}}, {{8151325697053118736ull, 384235179774318ull}}, {{13899758187126315635ull, 307388143819454ull}}, {{11171566655176374047ull, 491821030111127ull}}, {{1558555694657278591ull, 393456824088902ull}}, {{12314890999951553842ull, 314765459271121ull}}, {{12325127970438665502ull, 503624734833794ull}}, {{13549451191092842725ull, 402899787867035ull}}, {{10839560952874274180ull, 322319830293628ull}}, {{13653948709856928364ull, 515711728469805ull}}, {{10923158967885542691ull, 412569382775844ull}}, {{12427875989050344476ull, 330055506220675ull}}, {{1437857508770999546ull, 528088809953081ull}}, {{15907681265984440930ull, 422471047962464ull}}, {{16415493827529463067ull, 337976838369971ull}}, {{439348420853768645ull, 540762941391955ull}}, {{351478736683014916ull, 432610353113564ull}}, {{3970531804088322256ull, 346088282490851ull}}, {{17420897330767046579ull, 553741251985361ull}}, {{10247369049871726940ull, 442993001588289ull}}, {{11887244054639291875ull, 354394401270631ull}}, {{5820446428969523177ull, 283515521016505ull}}, {{9312714286351237083ull, 453624833626408ull}}, {{14828869058564810313ull, 362899866901126ull}}, {{8173746432109937927ull, 290319893520901ull}}, {{5699296661892080037ull, 464511829633442ull}}, {{15627483773739394999ull, 371609463706753ull}}, {{1433940574765785030ull, 297287570965403ull}}, {{17051700178592897340ull, 475660113544644ull}}, {{17330708957616228195ull, 380528090835715ull}}, {{13864567166092982556ull, 304422472668572ull}}, {{7425912206781130798ull, 487075956269716ull}}, {{2251380950682994315ull, 389660765015773ull}}, {{9179802390030216098ull, 311728612012618ull}}, {{10998335009306435434ull, 498765779220189ull}}, {{12488016822187058670ull, 399012623376151ull}}, {{6301064643007736613ull, 319210098700921ull}}, {{2703005799328557935ull, 510736157921474ull}}, {{5851753454204756671ull, 408588926337179ull}}, {{8370751578105715660ull, 326871141069743ull}}, {{9703853710227234733ull, 522993825711589ull}}, {{11452431782923698109ull, 418395060569271ull}}, {{5472596611597048164ull, 334716048455417ull}}, {{12445503393297187386ull, 535545677528667ull}}, {{2577705085153929262ull, 428436542022934ull}}, {{5751512882865053733ull, 342749233618347ull}}, {{12891769427325996296ull, 548398773789355ull}}, {{10313415541860797037ull, 438719019031484ull}}, {{11940081248230547953ull, 350975215225187ull}}, {{4346734738201235432ull, 561560344360300ull}}, {{3477387790560988345ull, 449248275488240ull}}, {{2781910232448790676ull, 359398620390592ull}}, {{13293574630184763510ull, 287518896312473ull}}, {{17580370593553711294ull, 460030234099957ull}}, {{6685598845359148388ull, 368024187279966ull}}, {{1659130261545408387ull, 294419349823973ull}}, {{17412003677440294713ull, 471070959718356ull}}, {{10240254127210325447ull, 376856767774685ull}}, {{8192203301768260358ull, 301485414219748ull}}, {{9418176468087306249ull, 482376662751597ull}}, {{155843544986024353ull, 385901330201278ull}}, {{7503372465472640129ull, 308721064161022ull}}, {{15694744759498134529ull, 493953702657635ull}}, {{12555795807598507623ull, 395162962126108ull}}, {{17423334275562626745ull, 316130369700886ull}}, {{2051893137706830530ull, 505808591521419ull}}, {{5330863324907374747ull, 404646873217135ull}}, {{4264690659925899798ull, 323717498573708ull}}, {{3134156241139529353ull, 517947997717933ull}}, {{9886022622395444129ull, 414358398174346ull}}, {{4219469283174444980ull, 331486718539477ull}}, {{10440499667821022291ull, 530378749663163ull}}, {{15731097363740638479ull, 424302999730530ull}}, {{12584877890992510783ull, 339442399784424ull}}, {{9067758181362286284ull, 543107839655079ull}}, {{10943555359831739350ull, 434486271724063ull}}, {{16133541917349212126ull, 347589017379250ull}}, {{7366922994049187787ull, 556142427806801ull}}, {{2204189580497439906ull, 444913942245441ull}}, {{16520746923365593218ull, 355931153796352ull}}, {{5837899909208653928ull, 284744923037082ull}}, {{13029988669475756608ull, 455591876859331ull}}, {{6734642120838694963ull, 364473501487465ull}}, {{5387713696670955970ull, 291578801189972ull}}, {{12309690729415439876ull, 466526081903955ull}}, {{9847752583532351900ull, 373220865523164ull}}, {{11567550881567791843ull, 298576692418531ull}}, {{11129383781024646303ull, 477722707869650ull}}, {{8903507024819717043ull, 382178166295720ull}}, {{7122805619855773634ull, 305742533036576ull}}, {{4017791362285417168ull, 489188052858522ull}}, {{14282279534054064704ull, 391350442286817ull}}, {{4047125997759431117ull, 313080353829454ull}}, {{13854099225898910434ull, 500928566127126ull}}, {{7393930565977218024ull, 400742852901701ull}}, {{2225795638039864096ull, 320594282321361ull}}, {{14629319465089513523ull, 512950851714177ull}}, {{4324757942587790172ull, 410360681371342ull}}, {{14527852798295963107ull, 328288545097073ull}}, {{1108471588822079032ull, 525261672155318ull}}, {{8265474900541483872ull, 420209337724254ull}}, {{10301728735175097421ull, 336167470179403ull}}, {{12793417161538245550ull, 537867952287045ull}}, {{10234733729230596440ull, 430294361829636ull}}, {{4498438168642566829ull, 344235489463709ull}}, {{14576198699311927573ull, 550776783141934ull}}, {{15350307774191452381ull, 440621426513547ull}}, {{4901548589869341258ull, 352497141210838ull}}, {{11299936501379293653ull, 281997712968670ull}}, {{18079898402206869845ull, 451196340749872ull}}, {{7085221092281675230ull, 360957072599898ull}}, {{13046874503309160830ull, 288765658079918ull}}, {{17185650390552747005ull, 462025052927869ull}}, {{17437869127184107927ull, 369620042342295ull}}, {{13950295301747286342ull, 295696033873836ull}}, {{14941774853311837501ull, 473113654198138ull}}, {{885373438423739031ull, 378490923358511ull}}, {{15465694009706632517ull, 302792738686808ull}}, {{2609017527079150089ull, 484468381898894ull}}, {{5776562836405230394ull, 387574705519115ull}}, {{4621250269124184315ull, 310059764415292ull}}, {{11083349245340605228ull, 496095623064467ull}}, {{1487981766788663536ull, 396876498451574ull}}, {{4879734228172841152ull, 317501198761259ull}}, {{15186272394560366489ull, 508001918018014ull}}, {{15838366730390203515ull, 406401534414411ull}}, {{8981344569570252488ull, 325121227531529ull}}, {{3302104867086673012ull, 520193964050447ull}}, {{13709730337895069379ull, 416155171240357ull}}, {{3589086640832234857ull, 332924136992286ull}}, {{16810585069557306741ull, 532678619187657ull}}, {{6069770426162024746ull, 426142895350126ull}}, {{1166467526187709474ull, 340914316280101ull}}, {{12934394486126066128ull, 545462906048161ull}}, {{6658166774158942579ull, 436370324838529ull}}, {{9015882234069064386ull, 349096259870823ull}}, {{10736062759768592695ull, 558554015793317ull}}, {{1210152578331053510ull, 446843212634654ull}}, {{4657470877406753131ull, 357474570107723ull}}, {{11104674331409223151ull, 285979656086178ull}}, {{14078130115512846719ull, 457567449737885ull}}, {{11262504092410277375ull, 366053959790308ull}}, {{16388700903412042546ull, 292843167832246ull}}, {{396479742265895812ull, 468549068531595ull}}, {{317183793812716649ull, 374839254825276ull}}, {{15011142294017814612ull, 299871403860220ull}}, {{5571083596718951764ull, 479794246176353ull}}, {{11835564506858982057ull, 383835396941082ull}}, {{2089753976003364999ull, 307068317552866ull}}, {{14411652805831114969ull, 491309308084585ull}}, {{11529322244664891975ull, 393047446467668ull}}, {{16602155425215734226ull, 314437957174134ull}}, {{15495402236119443793ull, 503100731478615ull}}, {{12396321788895555034ull, 402480585182892ull}}, {{2538359801632623381ull, 321984468146314ull}}, {{11440073312096018056ull, 515175149034102ull}}, {{1773361020192993798ull, 412140119227282ull}}, {{12486735260380126008ull, 329712095381825ull}}, {{1532032342898649997ull, 527539352610921ull}}, {{15983021133286561290ull, 422031482088736ull}}, {{9097068091887338709ull, 337625185670989ull}}, {{3487262502794010965ull, 540200297073583ull}}, {{10168507631719029418ull, 432160237658866ull}}, {{4445457290633313211ull, 345728190127093ull}}, {{3423382850271390815ull, 553165104203349ull}}, {{6428055094959022975ull, 442532083362679ull}}, {{8831792890709128703ull, 354025666690143ull}}, {{14444131942051123609ull, 283220533352114ull}}, {{12042564663056066805ull, 453152853363383ull}}, {{17012749359928674090ull, 362522282690706ull}}, {{9920850673201028949ull, 290017826152565ull}}, {{15873361077121646319ull, 464028521844104ull}}, {{16388037676439227378ull, 371222817475283ull}}, {{2042383696925650933ull, 296978253980227ull}}, {{6957162729822951816ull, 475165206368363ull}}, {{12944427813342182099ull, 380132165094690ull}}, {{10355542250673745679ull, 304105732075752ull}}, {{1811472342110351794ull, 486569171321204ull}}, {{5138526688430191758ull, 389255337056963ull}}, {{11489518980227974053ull, 311404269645570ull}}, {{18383230368364758485ull, 498246831432912ull}}, {{7327886665207986142ull, 398597465146330ull}}, {{5862309332166388913ull, 318877972117064ull}}, {{16758392560950042908ull, 510204755387302ull}}, {{6028016419276213680ull, 408163804309842ull}}, {{15890459579646701913ull, 326531043447873ull}}, {{3288642438983261122ull, 522449669516598ull}}, {{10009611580670429544ull, 417959735613278ull}}, {{15386386894020164282ull, 334367788490622ull}}, {{9860823771464621558ull, 534988461584996ull}}, {{4199310202429786923ull, 427990769267997ull}}, {{14427494606169560508ull, 342392615414397ull}}, {{8326596110903655521ull, 547828184663036ull}}, {{2971928073981014093ull, 438262547730429ull}}, {{6066891273926721598ull, 350610038184343ull}}, {{6017677223540844233ull, 560976061094949ull}}, {{8503490593574585710ull, 448780848875959ull}}, {{10492141289601578891ull, 359024679100767ull}}, {{1015015402197442466ull, 287219743280614ull}}, {{9002722272999728593ull, 459551589248982ull}}, {{18270224262625513844ull, 367641271399185ull}}, {{14616179410100411075ull, 294113017119348ull}}, {{1249794167709195781ull, 470580827390958ull}}, {{8378532963651177271ull, 376464661912766ull}}, {{3013477556179031493ull, 301171729530213ull}}, {{1132215275144540067ull, 481874767248341ull}}, {{15663167479083273346ull, 385499813798672ull}}, {{5151836353782798030ull, 308399851038938ull}}, {{4553589351310566526ull, 493439761662301ull}}, {{18400266740016094513ull, 394751809329840ull}}, {{14720213392012875610ull, 315801447463872ull}}, {{8794946168252959684ull, 505282315942196ull}}, {{3346608119860457424ull, 404225852753757ull}}, {{13745332940114096909ull, 323380682203005ull}}, {{3545788630473003438ull, 517409091524809ull}}, {{6525979719120313074ull, 413927273219847ull}}, {{16288830219521981428ull, 331141818575877ull}}, {{11304733092267528993ull, 529826909721404ull}}, {{12733135288555933517ull, 423861527777123ull}}, {{17565205860328567460ull, 339089222221698ull}}, {{5968236488074245998ull, 542542755554718ull}}, {{12153286819943217444ull, 434034204443774ull}}, {{13411978270696484279ull, 347227363555019ull}}, {{10391118788888643876ull, 555563781688031ull}}, {{4623546216369004778ull, 444451025350425ull}}, {{3698836973095203822ull, 355560820280340ull}}, {{2959069578476163058ull, 284448656224272ull}}, {{8423860140303771216ull, 455117849958835ull}}, {{6739088112243016972ull, 364094279967068ull}}, {{12769968119278234224ull, 291275423973654ull}}, {{9363902546619443790ull, 466040678357847ull}}, {{112424407811734385ull, 372832542686278ull}}, {{7468637155733208154ull, 298266034149022ull}}, {{15639168263915043371ull, 477225654638435ull}}, {{12511334611132034696ull, 381780523710748ull}}, {{17387765318389448403ull, 305424418968598ull}}, {{5684331620971655507ull, 488679070349758ull}}, {{11926162926261145052ull, 390943256279806ull}}, {{5851581526267005718ull, 312754605023845ull}}, {{9362530442027209149ull, 500407368038152ull}}, {{111326724137946673ull, 400325894430522ull}}, {{11157107823536088308ull, 320260715544417ull}}, {{3093977258690100000ull, 512417144871068ull}}, {{9853879436435900646ull, 409933715896854ull}}, {{11572452363890630840ull, 327946972717483ull}}, {{14826574967483099021ull, 524715156347973ull}}, {{793213529760748247ull, 419772125078379ull}}, {{4323919638550508921ull, 335817700062703ull}}, {{3228922606938903950ull, 537308320100325ull}}, {{2583138085551123160ull, 429846656080260ull}}, {{2066510468440898528ull, 343877324864208ull}}, {{18063812008473078938ull, 550203719782732ull}}, {{7072351977294642504ull, 440162975826186ull}}, {{1968532767093803680ull, 352130380660949ull}}, {{5264175028416953267ull, 281704304528759ull}}, {{15801377674950945874ull, 450726887246014ull}}, {{16330450954702667022ull, 360581509796811ull}}, {{9375011949020223294ull, 288465207837449ull}}, {{3931972674206626302ull, 461544332539919ull}}, {{6834926954107211365ull, 369235466031935ull}}, {{5467941563285769092ull, 295388372825548ull}}, {{5059357686515320224ull, 472621396520877ull}}, {{15115532593437987148ull, 378097117216701ull}}, {{8403077260008479395ull, 302477693773361ull}}, {{6066225986529746386ull, 483964310037378ull}}, {{12231678418707617755ull, 387171448029902ull}}, {{2406645105482273558ull, 309737158423922ull}}, {{7539980983513548016ull, 495579453478275ull}}, {{6031984786810838413ull, 396463562782620ull}}, {{4825587829448670730ull, 317170850226096ull}}, {{342242897634052522ull, 507473360361754ull}}, {{3963143132849152341ull, 405978688289403ull}}, {{10549212135763142519ull, 324782950631522ull}}, {{2121344158253386738ull, 519652721010436ull}}, {{16454470585570350683ull, 415722176808348ull}}, {{2095530024230549577ull, 332577741446679ull}}, {{10731545668252699969ull, 532124386314686ull}}, {{4895887719860249652ull, 425699509051749ull}}, {{7606058990630110045ull, 340559607241399ull}}, {{1101647940782445102ull, 544895371586239ull}}, {{4570667167367866405ull, 435916297268991ull}}, {{18413928992861934417ull, 348733037815192ull}}, {{14704891129611453774ull, 557972860504308ull}}, {{695866459463432050ull, 446378288403447ull}}, {{11624739611796476609ull, 357102630722757ull}}, {{1921094059953360641ull, 285682104578206ull}}, {{14141796940151107995ull, 457091367325129ull}}, {{15002786366862796719ull, 365673093860103ull}}, {{934182649264506406ull, 292538475088083ull}}, {{16252087497790851542ull, 468061560140932ull}}, {{5622972368748860587ull, 374449248112746ull}}, {{809029080257178147ull, 299559398490197ull}}, {{4983795343153395358ull, 479295037584315ull}}, {{3987036274522716286ull, 383436030067452ull}}, {{14257675463843903999ull, 306748824053961ull}}, {{15433583112666425752ull, 490798118486338ull}}, {{1278820045907409632ull, 392638494789071ull}}, {{15780451295693568998ull, 314110795831256ull}}, {{17870024443625889751ull, 502577273330010ull}}, {{14296019554900711801ull, 402061818664008ull}}, {{368769199694838471ull, 321649454931207ull}}, {{4279379534253651877ull, 514639127889931ull}}, {{18180898886370562794ull, 411711302311944ull}}, {{18234067923838360558ull, 329369041849555ull}}, {{10727764604431825278ull, 526990466959289ull}}, {{12271560498287370545ull, 421592373567431ull}}, {{6127899583887986113ull, 337273898853945ull}}, {{9804639334220777781ull, 539638238166312ull}}, {{465013837892801578ull, 431710590533050ull}}, {{372011070314241262ull, 345368472426440ull}}, {{595217712502786020ull, 552589555882304ull}}, {{4165522984744139139ull, 442071644705843ull}}, {{10711116017279131958ull, 353657315764674ull}}, {{12258241628565215889ull, 282925852611739ull}}, {{8545140161478614454ull, 452681364178783ull}}, {{14214809758666712209ull, 362145091343026ull}}, {{7682498992191459444ull, 289716073074421ull}}, {{4913300758022514464ull, 463545716919074ull}}, {{7619989421159921895ull, 370836573535259ull}}, {{9785340351669847839ull, 296669258828207ull}}, {{899149303704115249ull, 474670814125132ull}}, {{11787365887189023169ull, 379736651300105ull}}, {{9429892709751218535ull, 303789321040084ull}}, {{4019781891376218687ull, 486062913664135ull}}, {{3215825513100974949ull, 388850330931308ull}}, {{9951358039964600606ull, 311080264745046ull}}, {{8543475234459540323ull, 497728423592074ull}}, {{10524129002309542582ull, 398182738873659ull}}, {{12108652016589544388ull, 318546191098927ull}}, {{4616447967575629729ull, 509673905758284ull}}, {{7382507188802414106ull, 407739124606627ull}}, {{16974052195267662255ull, 326191299685301ull}}, {{1333041809234887345ull, 521906079496483ull}}, {{8445131076871730522ull, 417524863597186ull}}, {{3066756046755474095ull, 334019890877749ull}}, {{12285507304292579198ull, 534431825404398ull}}, {{17207103472917884005ull, 427545460323518ull}}, {{2697636334108576234ull, 342036368258815ull}}, {{4316218134573721975ull, 547258189214104ull}}, {{7142323322400887903ull, 437806551371283ull}}, {{13092556287404530969ull, 350245241097026ull}}, {{13569392430363428904ull, 560392385755242ull}}, {{3476816314806922477ull, 448313908604194ull}}, {{6470801866587448304ull, 358651126883355ull}}, {{5176641493269958643ull, 286920901506684ull}}, {{15661324018715754476ull, 459073442410694ull}}, {{16218408029714513904ull, 367258753928555ull}}, {{12974726423771611123ull, 293807003142844ull}}, {{9691515833808846828ull, 470091205028551ull}}, {{4063863852305167139ull, 376072964022841ull}}, {{18008486340811775004ull, 300858371218272ull}}, {{14056182886331198714ull, 481373393949236ull}}, {{7555597494323048648ull, 385098715159389ull}}, {{9733826810200349241ull, 308078972127511ull}}, {{8195425266836738140ull, 492926355404018ull}}, {{13935037842953211158ull, 394341084323214ull}}, {{14837379089104479250ull, 315472867458571ull}}, {{16361108913083346153ull, 504756587933714ull}}, {{16778235945208587246ull, 403805270346971ull}}, {{9733239941424959473ull, 323044216277577ull}}, {{815788647312293865ull, 516870746044124ull}}, {{4341979732591745415ull, 413496596835299ull}}, {{7162932600815306655ull, 330797277468239ull}}, {{392645717078759679ull, 529275643949183ull}}, {{7692814203146828389ull, 423420515159346ull}}, {{2464902547775552388ull, 338736412127477ull}}, {{7633192891182794144ull, 541978259403963ull}}, {{13485251942430055962ull, 433582607523170ull}}, {{10788201553944044769ull, 346866086018536ull}}, {{9882424856826650985ull, 554985737629658ull}}, {{15284637514945141434ull, 443988590103726ull}}, {{8538361197214202824ull, 355190872082981ull}}, {{3141340143029451936ull, 284152697666385ull}}, {{5026144228847123098ull, 454644316266216ull}}, {{331566568335788155ull, 363715453012973ull}}, {{7643950884152451170ull, 290972362410378ull}}, {{8540972599902011550ull, 465555779856605ull}}, {{6832778079921609240ull, 372444623885284ull}}, {{9155571278679197715ull, 297955699108227ull}}, {{18338262860628626667ull, 476729118573163ull}}, {{3602563844277170364ull, 381383294858531ull}}, {{17639446334389377584ull, 305106635886824ull}}, {{17155067690797273165ull, 488170617418919ull}}, {{17413402967379728855ull, 390536493935135ull}}, {{13930722373903783084ull, 312429195148108ull}}, {{153062909794590995ull, 499886712236974ull}}, {{3811799142577583119ull, 399909369789579ull}}, {{6738788128803976819ull, 319927495831663ull}}, {{7092712191344452587ull, 511883993330661ull}}, {{1984820938333651746ull, 409507194664529ull}}, {{5277205565408831720ull, 327605755731623ull}}, {{4754180089912220429ull, 524169209170597ull}}, {{14871390516155507313ull, 419335367336477ull}}, {{4518414783440585204ull, 335468293869182ull}}, {{10918812468246846650ull, 536749270190691ull}}, {{5045701159855566996ull, 429399416152553ull}}, {{11415258557368274243ull, 343519532922042ull}}, {{3507018432821597497ull, 549631252675268ull}}, {{10184312375741098644ull, 439705002140214ull}}, {{11836798715334789238ull, 351764001712171ull}}, {{11560180315051842135ull, 562822402739474ull}}, {{12937493066783384031ull, 450257922191579ull}}, {{14039343268168617548ull, 360206337753263ull}}, {{163428170309163069ull, 288165070202611ull}}, {{11329531516720391880ull, 461064112324177ull}}, {{1684927583892492857ull, 368851289859342ull}}, {{12415988511339725255ull, 295081031887473ull}}, {{16176232803401650086ull, 472129651019957ull}}, {{5562288613237499422ull, 377703720815966ull}}, {{760482075848089214ull, 302162976652773ull}}, {{15974166580324584036ull, 483460762644436ull}}, {{9089984449517756906ull, 386768610115549ull}}, {{10961336374356115848ull, 309414888092439ull}}, {{6470091754744054387ull, 495063820947903ull}}, {{12554771033279064156ull, 396051056758322ull}}, {{2665119197139430678ull, 316840845406658ull}}, {{574841900681178762ull, 506945352650653ull}}, {{7838571150028763656ull, 405556282120522ull}}, {{17338903364248741894ull, 324445025696417ull}}, {{12984850123830345738ull, 519112041114268ull}}, {{17766577728548097237ull, 415289632891414ull}}, {{17902610997580388113ull, 332231706313131ull}}, {{2818735892935248718ull, 531570730101011ull}}, {{17012383973315840267ull, 425256584080808ull}}, {{2541860734426941244ull, 340205267264647ull}}, {{7756325989825016314ull, 544328427623435ull}}, {{6205060791860013051ull, 435462742098748ull}}, {{12342746262971831087ull, 348370193678998ull}}, {{16059045206013019417ull, 557392309886397ull}}, {{5468538535326594887ull, 445913847909118ull}}, {{11753528457745096556ull, 356731078327294ull}}, {{13092171580937987568ull, 285384862661835ull}}, {{2500730455791228493ull, 456615780258937ull}}, {{13068630808858713764ull, 365292624207149ull}}, {{14144253461828881334ull, 292234099365719ull}}, {{11562759094700479165ull, 467574558985151ull}}, {{5560858461018473009ull, 374059647188121ull}}, {{759337954072868084ull, 299247717750497ull}}, {{4904289541258499257ull, 478796348400795ull}}, {{3923431633006799406ull, 383037078720636ull}}, {{17896140565373080817ull, 306429662976508ull}}, {{6497732016145467369ull, 490287460762414ull}}, {{8887534427658284218ull, 392229968609931ull}}, {{3420678727384717051ull, 313783974887945ull}}, {{5473085963815547282ull, 502054359820712ull}}, {{15446515215278168795ull, 401643487856569ull}}, {{16046560986964445359ull, 321314790285255ull}}, {{7227753505433560959ull, 514103664456409ull}}, {{9471551619088759090ull, 411282931565127ull}}, {{198543665787186626ull, 329026345252102ull}}, {{4007018680001408925ull, 526442152403363ull}}, {{10584312573484947786ull, 421153721922690ull}}, {{8467450058787958229ull, 336922977538152ull}}, {{17237268908802643490ull, 539076764061043ull}}, {{2721768682816383822ull, 431261411248835ull}}, {{2177414946253107058ull, 345009128999068ull}}, {{18241259172972612585ull, 552014606398508ull}}, {{3524960894152359098ull, 441611685118807ull}}, {{13888015159547618248ull, 353289348095045ull}}, {{11110412127638094599ull, 282631478476036ull}}, {{10397961774737130712ull, 452210365561658ull}}, {{15697067049273525216ull, 361768292449326ull}}, {{8868304824676909849ull, 289414633959461ull}}, {{6810590089999235112ull, 463063414335138ull}}, {{12827169701483208736ull, 370450731468110ull}}, {{10261735761186566989ull, 296360585174488ull}}, {{12729428403156596859ull, 474176936279181ull}}, {{6494193907783367164ull, 379341549023345ull}}, {{5195355126226693731ull, 303473239218676ull}}, {{933870572478889324ull, 485557182749882ull}}, {{11815142902208842429ull, 388445746199905ull}}, {{9452114321767073943ull, 310756596959924ull}}, {{4055336470601587339ull, 497210555135879ull}}, {{6933617991223180194ull, 397768444108703ull}}, {{12925592022462364802ull, 318214755286962ull}}, {{5923551976972142390ull, 509143608459140ull}}, {{4738841581577713912ull, 407314886767312ull}}, {{14859119709487902099ull, 325851909413849ull}}, {{12706545090954912390ull, 521363055062159ull}}, {{13854584887505840235ull, 417090444049727ull}}, {{3704970280520851541ull, 333672355239782ull}}, {{9617301263575272790ull, 533875768383651ull}}, {{4004492196118307908ull, 427100614706921ull}}, {{17960989015862287619ull, 341680491765536ull}}, {{2912140722186287929ull, 546688786824859ull}}, {{6019061392490940666ull, 437351029459887ull}}, {{15883295558218483503ull, 349880823567909ull}}, {{14345226448923842635ull, 559809317708655ull}}, {{11476181159139074108ull, 447847454166924ull}}, {{12870293742053169609ull, 358277963333539ull}}, {{13985583808384446011ull, 286622370666831ull}}, {{14998236463931292971ull, 458595793066930ull}}, {{11998589171145034376ull, 366876634453544ull}}, {{13288220151657937824ull, 293501307562835ull}}, {{2814408168943148903ull, 469602092100537ull}}, {{13319572979380250092ull, 375681673680429ull}}, {{14345007198246110397ull, 300545338944343ull}}, {{815918628742314696ull, 480872542310950ull}}, {{652734902993851757ull, 384698033848760ull}}, {{522187922395081405ull, 307758427079008ull}}, {{15592895934799771541ull, 492413483326412ull}}, {{5095619118355996587ull, 393930786661130ull}}, {{4076495294684797269ull, 315144629328904ull}}, {{13901090100979496277ull, 504231406926246ull}}, {{7431523266041686699ull, 403385125540997ull}}, {{17013265057059080328ull, 322708100432797ull}}, {{12463828832326887233ull, 516332960692476ull}}, {{6281714251119599463ull, 413066368553981ull}}, {{1336022586153769247ull, 330453094843185ull}}, {{2137636137846030796ull, 528724951749096ull}}, {{16467504169244465929ull, 422979961399276ull}}, {{9484654520653662420ull, 338383969119421ull}}, {{7796749603562039226ull, 541414350591074ull}}, {{9926748497591541704ull, 433131480472859ull}}, {{11630747612815143686ull, 346505184378287ull}}, {{3851800921536588606ull, 554408295005260ull}}, {{3081440737229270884ull, 443526636004208ull}}, {{9843850219267237354ull, 354821308803366ull}}, {{4185731360671879560ull, 283857047042693ull}}, {{3007821362333096973ull, 454171275268309ull}}, {{6095605904608387901ull, 363337020214647ull}}, {{15944531167912441290ull, 290669616171717ull}}, {{10753854609692264772ull, 465071385874748ull}}, {{15981781317237632464ull, 372057108699798ull}}, {{1717378609564375002ull, 297645686959839ull}}, {{10126503404786820649ull, 476233099135742ull}}, {{722505094345635873ull, 380986479308594ull}}, {{4267352890218419021ull, 304789183446875ull}}, {{6827764624349470435ull, 487662693515000ull}}, {{5462211699479576348ull, 390130154812000ull}}, {{4369769359583661078ull, 312104123849600ull}}, {{6991630975333857725ull, 499366598159360ull}}, {{5593304780267086180ull, 399493278527488ull}}, {{11853341453697489590ull, 319594622821990ull}}, {{518602252206431729ull, 511351396515185ull}}, {{414881801765145383ull, 409081117212148ull}}, {{7710603070895936953ull, 327264893769718ull}}, {{8647616098691588801ull, 523623830031549ull}}, {{10607441693695181364ull, 418899064025239ull}}, {{12175302169698055414ull, 335119251220191ull}}, {{12101785842033068017ull, 536190801952306ull}}, {{5992079858884544090ull, 428952641561845ull}}, {{4793663887107635272ull, 343162113249476ull}}, {{291164589888395789ull, 549059381199162ull}}, {{11300978116136447601ull, 439247504959329ull}}, {{12730131307651068404ull, 351398003967463ull}}, {{16678861277499799123ull, 562236806347941ull}}, {{9653740207257928975ull, 449789445078353ull}}, {{15101689795290163826ull, 359831556062682ull}}, {{4702654206748310415ull, 287865244850146ull}}, {{145549101313476017ull, 460584391760234ull}}, {{3805788095792691137ull, 368467513408187ull}}, {{14112676920859883879ull, 294774010726549ull}}, {{11512236629150083237ull, 471638417162479ull}}, {{12899138118061976913ull, 377310733729983ull}}, {{17698008123933402177ull, 301848586983986ull}}, {{2491371295100071220ull, 482957739174379ull}}, {{5682445850821967299ull, 386366191339503ull}}, {{11924654310141394486ull, 309092953071602ull}}, {{4322051637258589885ull, 494548724914564ull}}, {{7146990124548782231ull, 395638979931651ull}}, {{2028243284897115462ull, 316511183945321ull}}, {{14313235700061115708ull, 506417894312513ull}}, {{382542115823161597ull, 405134315450011ull}}, {{15063428951626170570ull, 324107452360008ull}}, {{1965393434150410974ull, 518571923776014ull}}, {{5261663562062239102ull, 414857539020811ull}}, {{519982034907880958ull, 331886031216649ull}}, {{8210668885336430180ull, 531017649946638ull}}, {{13947232737752964790ull, 424814119957310ull}}, {{11157786190202371832ull, 339851295965848ull}}, {{14163109089581884608ull, 543762073545357ull}}, {{3951789642181687040ull, 435009658836286ull}}, {{17918826972712990925ull, 348007727069028ull}}, {{6534030267889323541ull, 556812363310446ull}}, {{1537875399569548509ull, 445449890648357ull}}, {{12298346763881369777ull, 356359912518685ull}}, {{9838677411105095822ull, 285087930014948ull}}, {{12052535043026242992ull, 456140688023917ull}}, {{2263330404937173747ull, 364912550419134ull}}, {{5500013138691649320ull, 291930040335307ull}}, {{12489369836648549236ull, 467088064536491ull}}, {{6302147054576929066ull, 373670451629193ull}}, {{12420415273145363899ull, 298936361303354ull}}, {{8804617992806851269ull, 478298178085367ull}}, {{18111740838471211985ull, 382638542468293ull}}, {{3421346226551238618ull, 306110833974635ull}}, {{5474153962481981789ull, 489777334359416ull}}, {{689974355243675108ull, 391821867487533ull}}, {{7930677113678760733ull, 313457493990026ull}}, {{5310385752402196526ull, 501531990384042ull}}, {{15316355046147488190ull, 401225592307233ull}}, {{1185037592692259583ull, 320980473845787ull}}, {{5585408963049525656ull, 513568758153259ull}}, {{8157675985181530848ull, 410855006522607ull}}, {{17594187232370955648ull, 328684005218085ull}}, {{9703955498083977421ull, 525894408348937ull}}, {{384466768983361290ull, 420715526679150ull}}, {{307573415186689032ull, 336572421343320ull}}, {{492117464298702451ull, 538515874149312ull}}, {{11461740415664692931ull, 430812699319449ull}}, {{12858741147273664668ull, 344650159455559ull}}, {{9505939391412132499ull, 551440255128895ull}}, {{7604751513129705999ull, 441152204103116ull}}, {{2394452395761854476ull, 352921763282493ull}}, {{9294259546093304227ull, 282337410625994ull}}, {{3802768829523555794ull, 451739857001591ull}}, {{17799610322586485928ull, 361391885601272ull}}, {{6860990628585368096ull, 289113508481018ull}}, {{7288236190994678630ull, 462581613569629ull}}, {{9519937767537653227ull, 370065290855703ull}}, {{14994647843513943228ull, 296052232684562ull}}, {{9234041290654667873ull, 473683572295300ull}}, {{7387233032523734298ull, 378946857836240ull}}, {{5909786426018987438ull, 303157486268992ull}}, {{13145007096372290225ull, 485051978030387ull}}, {{3137308047614011533ull, 388041582424310ull}}, {{2509846438091209226ull, 310433265939448ull}}, {{326405486204024439ull, 496693225503117ull}}, {{11329170833188950521ull, 397354580402493ull}}, {{16442034296034981063ull, 317883664321994ull}}, {{15239208429430238732ull, 508613862915191ull}}, {{8502017928802280662ull, 406891090332153ull}}, {{14180311972525645176ull, 325512872265722ull}}, {{7931103897073390989ull, 520820595625156ull}}, {{2655534302916802468ull, 416656476500125ull}}, {{2124427442333441974ull, 333325181200100ull}}, {{3399083907733507159ull, 533320289920160ull}}, {{2719267126186805727ull, 426656231936128ull}}, {{9554111330433265228ull, 341324985548902ull}}, {{529182869725583072ull, 546119976878244ull}}, {{4112695110522376781ull, 436895981502595ull}}, {{3290156088417901425ull, 349516785202076ull}}, {{16332296185694373249ull, 559226856323321ull}}, {{9376488133813588276ull, 447381485058657ull}}, {{122492877567049975ull, 357905188046926ull}}, {{14855389561021281272ull, 286324150437540ull}}, {{5321879223924498420ull, 458118640700065ull}}, {{4257503379139598736ull, 366494912560052ull}}, {{14474049147537409958ull, 293195930048041ull}}, {{15779781006576035287ull, 469113488076866ull}}, {{8934475990518917906ull, 375290790461493ull}}, {{14526278421898954971ull, 300232632369194ull}}, {{12173999030812596985ull, 480372211790711ull}}, {{6049850409908167265ull, 384297769432569ull}}, {{8529229142668444135ull, 307438215546055ull}}, {{13646766628269510616ull, 491901144873688ull}}, {{18296110932099429139ull, 393520915898950ull}}, {{14636888745679543311ull, 314816732719160ull}}, {{4972277919377717682ull, 503706772350657ull}}, {{15045868779727905115ull, 402965417880525ull}}, {{12036695023782324092ull, 322372334304420ull}}, {{811967964342166932ull, 515795734887073ull}}, {{8028272000957554192ull, 412636587909658ull}}, {{13801315230249864000ull, 330109270327726ull}}, {{14703406738915961753ull, 528174832524362ull}}, {{4384027761648948756ull, 422539866019490ull}}, {{3507222209319159005ull, 338031892815592ull}}, {{9300904349652564731ull, 540851028504947ull}}, {{62025850238231138ull, 432680822803958ull}}, {{7428318309674405557ull, 346144658243166ull}}, {{4506611665995228245ull, 553831453189066ull}}, {{18362684591763823889ull, 443065162551252ull}}, {{7311450043927238465ull, 354452130041002ull}}, {{16917206479367521741ull, 283561704032801ull}}, {{1242088663794662524ull, 453698726452483ull}}, {{8372368560519550665ull, 362958981161986ull}}, {{3008546033673730209ull, 290367184929589ull}}, {{12192371283361788981ull, 464587495887342ull}}, {{2375199397205610538ull, 371669996709874ull}}, {{5589508332506398754ull, 297335997367899ull}}, {{16321910961494058653ull, 475737595788638ull}}, {{1989482324969515952ull, 380590076630911ull}}, {{16348981118943254055ull, 304472061304728ull}}, {{4022276901857744549ull, 487155298087566ull}}, {{17975216780453836932ull, 389724238470052ull}}, {{7001475794879248899ull, 311779390776042ull}}, {{14891710086548708561ull, 498847025241667ull}}, {{4534670439755146203ull, 399077620193334ull}}, {{7317085166546027285ull, 319262096154667ull}}, {{15396685081215553980ull, 510819353847467ull}}, {{4938650435488622537ull, 408655483077974ull}}, {{7640269163132808353ull, 326924386462379ull}}, {{1156384216786762396ull, 523079018339807ull}}, {{11993153817655140886ull, 418463214671845ull}}, {{9594523054124112709ull, 334770571737476ull}}, {{7972539257114759688ull, 535632914779962ull}}, {{17446077849917538720ull, 428506331823969ull}}, {{17646211094675941299ull, 342805065459175ull}}, {{9787193677771954462ull, 548488104734681ull}}, {{4140406127475653247ull, 438790483787745ull}}, {{3312324901980522597ull, 351032387030196ull}}, {{16367766287394567125ull, 561651819248313ull}}, {{2026166585689922731ull, 449321455398651ull}}, {{16378328527519579477ull, 359457164318920ull}}, {{13102662822015663582ull, 287565731455136ull}}, {{13585562885741241085ull, 460105170328218ull}}, {{18247147938076813514ull, 368084136262574ull}}, {{18287067165203361134ull, 294467309010059ull}}, {{18191261020099646846ull, 471147694416095ull}}, {{14553008816079717476ull, 376918155532876ull}}, {{7953058238121863658ull, 301534524426301ull}}, {{5346195551511161206ull, 482455239082082ull}}, {{15345002885434659935ull, 385964191265665ull}}, {{12276002308347727948ull, 308771353012532ull}}, {{4884208434388723424ull, 494034164820052ull}}, {{14975413191736709708ull, 395227331856041ull}}, {{8290981738647457443ull, 316181865484833ull}}, {{9576221967094021587ull, 505890984775733ull}}, {{15039675203159037916ull, 404712787820586ull}}, {{8342391347785320009ull, 323770230256469ull}}, {{2279779712230781045ull, 518032368410351ull}}, {{16581219028752266129ull, 414425894728280ull}}, {{13264975223001812903ull, 331540715782624ull}}, {{10155913912577169676ull, 530465145252199ull}}, {{11814079944803646064ull, 424372116201759ull}}, {{13140612770584827174ull, 339497692961407ull}}, {{6267585173968082186ull, 543196308738252ull}}, {{16082114583400196718ull, 434557046990601ull}}, {{9176342851978247051ull, 347645637592481ull}}, {{7303450933681374636ull, 556233020147970ull}}, {{5842760746945099709ull, 444986416118376ull}}, {{984859782814169444ull, 355989132894701ull}}, {{15545283085218976848ull, 284791306315760ull}}, {{6425708862640811340ull, 455666090105217ull}}, {{16208613534338380042ull, 364532872084173ull}}, {{1898844383244973064ull, 291626297667339ull}}, {{10416848642675777549ull, 466602076267742ull}}, {{954781284656801392ull, 373281661014194ull}}, {{4453173842467351437ull, 298625328811355ull}}, {{7125078147947762300ull, 477800526098168ull}}, {{13078760147842030486ull, 382240420878534ull}}, {{14152356933015534712ull, 305792336702827ull}}, {{7886375833857214247ull, 489267738724524ull}}, {{9998449481827681720ull, 391414190979619ull}}, {{11688108400204055699ull, 313131352783695ull}}, {{254229366616937503ull, 501010164453913ull}}, {{7582081122777370649ull, 400808131563130ull}}, {{6065664898221896519ull, 320646505250504ull}}, {{17083761466638855077ull, 513034408400806ull}}, {{9977660358569173738ull, 410427526720645ull}}, {{7982128286855338991ull, 328342021376516ull}}, {{5392707629484721739ull, 525347234202426ull}}, {{624817288845867068ull, 420277787361941ull}}, {{15257249090044334947ull, 336222229889552ull}}, {{9654203285103294623ull, 537955567823284ull}}, {{11412711442824546021ull, 430364454258627ull}}, {{1751471524775816170ull, 344291563406902ull}}, {{6491703254383216196ull, 550866501451043ull}}, {{12572060232990393603ull, 440693201160834ull}}, {{13746997001134225206ull, 352554560928667ull}}, {{3618899971423559518ull, 282043648742934ull}}, {{13168937583761515876ull, 451269837988694ull}}, {{14224498881751123024ull, 361015870390955ull}}, {{11379599105400898419ull, 288812696312764ull}}, {{7139312124415706501ull, 462100314100423ull}}, {{13090147329016385847ull, 369680251280338ull}}, {{17850815492696929324ull, 295744201024270ull}}, {{10114560714605535302ull, 473190721638833ull}}, {{15470346201168248888ull, 378552577311066ull}}, {{8686928146192688787ull, 302842061848853ull}}, {{10209736219166391737ull, 484547298958165ull}}, {{8167788975333113389ull, 387637839166532ull}}, {{17602277624492221681ull, 310110271333225ull}}, {{9716900125478003074ull, 496176434133161ull}}, {{4084171285640492136ull, 396941147306529ull}}, {{6956685843254304032ull, 317552917845223ull}}, {{7441348534464976128ull, 508084668552357ull}}, {{17021125271797711872ull, 406467734841885ull}}, {{13616900217438169497ull, 325174187873508ull}}, {{18097691533159160873ull, 520278700597613ull}}, {{3410106782301597729ull, 416222960478091ull}}, {{17485480684808919476ull, 332978368382472ull}}, {{13219373836726629868ull, 532765389411956ull}}, {{6886150254639393571ull, 426212311529565ull}}, {{5508920203711514857ull, 340969849223652ull}}, {{12503621140680334095ull, 545551758757843ull}}, {{17381594542028087922ull, 436441407006274ull}}, {{17594624448364380661ull, 349153125605019ull}}, {{17083352673157278088ull, 558645000968031ull}}, {{9977333323783912147ull, 446916000774425ull}}, {{7981866659027129718ull, 357532800619540ull}}, {{6385493327221703774ull, 286026240495632ull}}, {{13906138138296636362ull, 457641984793011ull}}, {{7435561695895398766ull, 366113587834409ull}}, {{9637798171458229336ull, 292890870267527ull}}, {{663081815365525645ull, 468625392428044ull}}, {{4219814267034330839ull, 374900313942435ull}}, {{3375851413627464671ull, 299920251153948ull}}, {{1712013447062033151ull, 479872401846317ull}}, {{12437657201875357490ull, 383897921477053ull}}, {{17328823390984106639ull, 307118337181642ull}}, {{12968722166606929329ull, 491389339490628ull}}, {{17753675362769364110ull, 393111471592502ull}}, {{6824242660731670641ull, 314489177274002ull}}, {{14608137071912583349ull, 503182683638403ull}}, {{618463213304335710ull, 402546146910723ull}}, {{7873468200127289214ull, 322036917528578ull}}, {{8908200305461752420ull, 515259068045725ull}}, {{7126560244369401936ull, 412207254436580ull}}, {{5701248195495521549ull, 329765803549264ull}}, {{16500694742276655124ull, 527625285678822ull}}, {{5821858164337503453ull, 422100228543058ull}}, {{12036184160953823409ull, 337680182834446ull}}, {{11879197028042296808ull, 540288292535114ull}}, {{13192706437175747769ull, 432230634028091ull}}, {{6864816334998687892ull, 345784507222473ull}}, {{7294357321255990305ull, 553255211555957ull}}, {{16903532301230523213ull, 442604169244765ull}}, {{13522825840984418570ull, 354083335395812ull}}, {{3439563043303714210ull, 283266668316650ull}}, {{5503300869285942736ull, 453226669306640ull}}, {{4402640695428754189ull, 362581335445312ull}}, {{14590159000568734320ull, 290065068356249ull}}, {{12276207956684243943ull, 464104109369999ull}}, {{13510315180089305478ull, 371283287495999ull}}, {{14497600958813354705ull, 297026629996799ull}}, {{12128115089875636559ull, 475242607994879ull}}, {{13391840886642419571ull, 380194086395903ull}}, {{18092170338797756303ull, 304155269116722ull}}, {{14190077283108768792ull, 486648430586756ull}}, {{7662713011745104710ull, 389318744469405ull}}, {{6130170409396083768ull, 311454995575524ull}}, {{17186970284517554676ull, 498327992920838ull}}, {{2681529783388312771ull, 398662394336671ull}}, {{16902619085678291509ull, 318929915469336ull}}, {{1218748833891894153ull, 510287864750939ull}}, {{4664347881855425645ull, 408230291800751ull}}, {{42129490742430193ull, 326584233440601ull}}, {{11135453629413619279ull, 522534773504961ull}}, {{5219014088788985100ull, 418027818803969ull}}, {{7864560085773098403ull, 334422255043175ull}}, {{12583296137236957445ull, 535075608069080ull}}, {{10066636909789565956ull, 428060486455264ull}}, {{11742658342573563088ull, 342448389164211ull}}, {{11409555718633880294ull, 547917422662738ull}}, {{16506342204390924882ull, 438333938130190ull}}, {{13205073763512739905ull, 350667150504152ull}}, {{6370722762652742556ull, 561067440806644ull}}, {{8785927024864104368ull, 448853952645315ull}}, {{7028741619891283494ull, 359083162116252ull}}, {{16691039740138757765ull, 287266529693001ull}}, {{880221881028640162ull, 459626447508803ull}}, {{8082875134306732776ull, 367701158007042ull}}, {{17534346551671117190ull, 294160926405633ull}}, {{5918861594222325565ull, 470657482249014ull}}, {{8424438090119770775ull, 376525985799211ull}}, {{3050201657353906297ull, 301220788639369ull}}, {{12259020281250070722ull, 481953261822990ull}}, {{9807216225000056577ull, 385562609458392ull}}, {{467075350516224615ull, 308450087566714ull}}, {{8126018190309780031ull, 493520140106742ull}}, {{17568860996473554994ull, 394816112085393ull}}, {{2987042352953113026ull, 315852889668315ull}}, {{4779267764724980842ull, 505364623469304ull}}, {{7512763026521894996ull, 404291698775443ull}}, {{13388908050701336643ull, 323433359020354ull}}, {{10354206436896407660ull, 517493374432567ull}}, {{904667520033305482ull, 413994699546054ull}}, {{4413082830768554708ull, 331195759636843ull}}, {{3371583714487777211ull, 529913215418949ull}}, {{6386615786332132092ull, 423930572335159ull}}, {{8798641443807615996ull, 339144457868127ull}}, {{17767175124834095918ull, 542631132589003ull}}, {{3145693655641545764ull, 434104906071203ull}}, {{9895252553997057258ull, 347283924856962ull}}, {{1075008827427650320ull, 555654279771140ull}}, {{860007061942120256ull, 444523423816912ull}}, {{11756052093779427174ull, 355618739053529ull}}, {{13094190489765452062ull, 284494991242823ull}}, {{17261355968882812977ull, 455191985988517ull}}, {{6430387145622429735ull, 364153588790814ull}}, {{8833658531239854111ull, 291322871032651ull}}, {{6755156020499945932ull, 466116593652242ull}}, {{16472171260625687715ull, 372893274921793ull}}, {{2109690564274819202ull, 298314619937435ull}}, {{3375504902839710724ull, 477303391899896ull}}, {{17457799181239409872ull, 381842713519916ull}}, {{10276890530249617574ull, 305474170815933ull}}, {{12753676033657477796ull, 488758673305493ull}}, {{17581638456409802883ull, 391006938644394ull}}, {{17754659579869752629ull, 312805550915515ull}}, {{9960711254082052591ull, 500488881464825ull}}, {{7968569003265642073ull, 400391105171860ull}}, {{6374855202612513658ull, 320312884137488ull}}, {{6510419509438111530ull, 512500614619981ull}}, {{1518986792808578901ull, 410000491695985ull}}, {{1215189434246863121ull, 328000393356788ull}}, {{16701698353762622286ull, 524800629370860ull}}, {{13361358683010097829ull, 419840503496688ull}}, {{18067784575891898909ull, 335872402797350ull}}, {{10461711247717486639ull, 537395844475761ull}}, {{4680020183432078988ull, 429916675580609ull}}, {{7433364961487573514ull, 343933340464487ull}}, {{15582732753122027945ull, 550293344743179ull}}, {{16155535017239532679ull, 440234675794543ull}}, {{1856381569565895174ull, 352187740635635ull}}, {{1485105255652716139ull, 281750192508508ull}}, {{17133563668011987115ull, 450800308013612ull}}, {{6328153304925769046ull, 360640246410890ull}}, {{5062522643940615237ull, 288512197128712ull}}, {{11789385045046894702ull, 461619515405939ull}}, {{13120856850779426085ull, 369295612324751ull}}, {{6807336665881630544ull, 295436489859801ull}}, {{3513041035926788225ull, 472698383775682ull}}, {{13878479272967161550ull, 378158707020545ull}}, {{11102783418373729240ull, 302526965616436ull}}, {{10385755839914146137ull, 484043144986298ull}}, {{15687302301415137556ull, 387234515989038ull}}, {{1481795396906379075ull, 309787612791231ull}}, {{13438919079275937490ull, 495660180465969ull}}, {{14440484078162660315ull, 396528144372775ull}}, {{11552387262530128252ull, 317222515498220ull}}, {{37075546338653588ull, 507556024797153ull}}, {{7408358066554743516ull, 406044819837722ull}}, {{16994732897469525783ull, 324835855870177ull}}, {{12434177376983599960ull, 519737369392284ull}}, {{13636690716328790291ull, 415789895513827ull}}, {{3530654943579211586ull, 332631916411062ull}}, {{9338396724468648861ull, 532211066257699ull}}, {{11160066194316829412ull, 425768853006159ull}}, {{12617401770195373853ull, 340615082404927ull}}, {{5430447573344956872ull, 544984131847884ull}}, {{8033706873417875821ull, 435987305478307ull}}, {{17495011942960031626ull, 348789844382645ull}}, {{9545275035026498986ull, 558063751012233ull}}, {{15014917657505019835ull, 446451000809786ull}}, {{8322585311262105545ull, 357160800647829ull}}, {{10347417063751594759ull, 285728640518263ull}}, {{12866518487260641291ull, 457165824829221ull}}, {{6603865975066602710ull, 365732659863377ull}}, {{16351139224279013137ull, 292586127890701ull}}, {{336381055653048758ull, 468137804625123ull}}, {{7647802474006259652ull, 374510243700098ull}}, {{13496939608688828368ull, 299608194960078ull}}, {{17905754559160215066ull, 479373111936125ull}}, {{14324603647328172053ull, 383498489548900ull}}, {{11459682917862537642ull, 306798791639120ull}}, {{18335492668580060228ull, 490878066622592ull}}, {{7289696505380227536ull, 392702453298074ull}}, {{9521106019046092352ull, 314161962638459ull}}, {{4165723186248016794ull, 502659140221535ull}}, {{3332578548998413435ull, 402127312177228ull}}, {{10044760468682551394ull, 321701849741782ull}}, {{1314221490924440938ull, 514722959586852ull}}, {{12119423636965283720ull, 411778367669481ull}}, {{6006190094830316653ull, 329422694135585ull}}, {{9609904151728506645ull, 527076310616936ull}}, {{3998574506640894992ull, 421661048493549ull}}, {{6888208420054626317ull, 337328838794839ull}}, {{18399831101571222754ull, 539726142071742ull}}, {{7341167251773157557ull, 431780913657394ull}}, {{9562282616160436368ull, 345424730925915ull}}, {{15299652185856698190ull, 552679569481464ull}}, {{15929070563427268875ull, 442143655585171ull}}, {{9053907635999904777ull, 353714924468137ull}}, {{18311172553025654791ull, 282971939574509ull}}, {{18229829640615316696ull, 452755103319215ull}}, {{14583863712492253357ull, 362204082655372ull}}, {{4288393340509982039ull, 289763266124298ull}}, {{3172080530074060939ull, 463621225798877ull}}, {{13605710868284979721ull, 370896980639101ull}}, {{7195219879886073453ull, 296717584511281ull}}, {{4133654178333896879ull, 474748135218050ull}}, {{3306923342667117503ull, 379798508174440ull}}, {{2645538674133694003ull, 303838806539552ull}}, {{7922210693355820728ull, 486142090463283ull}}, {{13716466184168477228ull, 388913672370626ull}}, {{7283824132592871459ull, 311130937896501ull}}, {{4275420982664773689ull, 497809500634402ull}}, {{14488383230357549921ull, 398247600507521ull}}, {{7901357769544129613ull, 318598080406017ull}}, {{16331521246012517705ull, 509756928649627ull}}, {{5686519367326193517ull, 407805542919702ull}}, {{15617261938086685783ull, 326244434335761ull}}, {{17608921471454876607ull, 521991094937218ull}}, {{3019090732938170316ull, 417592875949775ull}}, {{2415272586350536253ull, 334074300759820ull}}, {{3864436138160858005ull, 534518881215712ull}}, {{14159595354754417373ull, 427615104972569ull}}, {{15017025098545444222ull, 342092083978055ull}}, {{5580496083963159139ull, 547347334364889ull}}, {{8153745681912437634ull, 437877867491911ull}}, {{2833647730788039784ull, 350302293993529ull}}, {{11912533998744684301ull, 560483670389646ull}}, {{5840678384253837118ull, 448386936311717ull}}, {{15740589151628800664ull, 358709549049373ull}}, {{1524424877077309561ull, 286967639239499ull}}, {{9817777432807515945ull, 459148222783198ull}}, {{15232919575729833402ull, 367318578226558ull}}, {{1118289216358135752ull, 293854862581247ull}}, {{5478611560914927527ull, 470167780129995ull}}, {{4382889248731942021ull, 376134224103996ull}}, {{18263706657953194910ull, 300907379283196ull}}, {{3396488949531739593ull, 481451806853115ull}}, {{2717191159625391675ull, 385161445482492ull}}, {{13241799371926044309ull, 308129156385993ull}}, {{17497530180339760572ull, 493006650217589ull}}, {{17687372959013718781ull, 394405320174071ull}}, {{10460549552469064701ull, 315524256139257ull}}, {{1979484024982862229ull, 504838809822812ull}}, {{12651633664212020753ull, 403871047858249ull}}, {{13810655746111526925ull, 323096838286599ull}}, {{11029002749552712111ull, 516954941258559ull}}, {{12512551014384080012ull, 413563953006847ull}}, {{2631343182023443363ull, 330851162405478ull}}, {{520800276495599058ull, 529361859848765ull}}, {{416640221196479247ull, 423489487879012ull}}, {{11401358621182914367ull, 338791590303209ull}}, {{7174127349666932018ull, 542066544485135ull}}, {{5739301879733545614ull, 433653235588108ull}}, {{11970139133270657137ull, 346922588470486ull}}, {{11773524983749230774ull, 555076141552778ull}}, {{16797517616483205265ull, 444060913242222ull}}, {{6059316463702743566ull, 355248730593778ull}}, {{12226150800446015499ull, 284198984475022ull}}, {{4804446021745983506ull, 454718375160036ull}}, {{154208002654876481ull, 363774700128029ull}}, {{3812715216865811508ull, 291019760102423ull}}, {{2410995532243388090ull, 465631616163877ull}}, {{12996842870020441442ull, 372505292931101ull}}, {{6708125481274442830ull, 298004234344881ull}}, {{3354303140555287882ull, 476806774951810ull}}, {{2683442512444230305ull, 381445419961448ull}}, {{9525451639439204891ull, 305156335969158ull}}, {{11551373808360817502ull, 488250137550653ull}}, {{16619796676172474648ull, 390600110040522ull}}, {{5917139711454159072ull, 312480088032418ull}}, {{5778074723584744192ull, 499968140851869ull}}, {{8311808593609705677ull, 399974512681495ull}}, {{6649446874887764541ull, 319979610145196ull}}, {{3260417370336602620ull, 511967376232314ull}}, {{6297682711011192419ull, 409573900985851ull}}, {{1348797354067043612ull, 327659120788681ull}}, {{13226122210733000749ull, 524254593261889ull}}, {{14270246583328310922ull, 419403674609511ull}}, {{7726848451920738415ull, 335522939687609ull}}, {{1294911078847450494ull, 536836703500175ull}}, {{1035928863077960395ull, 429469362800140ull}}, {{828743090462368316ull, 343575490240112ull}}, {{5015337759481699629ull, 549720784384179ull}}, {{7701619022327270026ull, 439776627507343ull}}, {{13539992847345636667ull, 351821302005874ull}}, {{10595942111527287699ull, 562914083209399ull}}, {{12166102503963740482ull, 450331266567519ull}}, {{13422230817912902709ull, 360265013254015ull}}, {{10737784654330322167ull, 288212010603212ull}}, {{2423060187960874174ull, 461139216965140ull}}, {{1938448150368699339ull, 368911373572112ull}}, {{12618804964520690441ull, 295129098857689ull}}, {{9122041499007373736ull, 472206558172303ull}}, {{14676330828689719635ull, 377765246537842ull}}, {{4362367033467955062ull, 302212197230274ull}}, {{14358484883032548746ull, 483539515568438ull}}, {{418741462200308027ull, 386831612454751ull}}, {{15092388428727887714ull, 309465289963800ull}}, {{5701077412255068727ull, 495144463942081ull}}, {{871513115062144658ull, 396115571153665ull}}, {{697210492049715726ull, 316892456922932ull}}, {{4804885602021455486ull, 507027931076691ull}}, {{154559666875254065ull, 405622344861353ull}}, {{7502345362984023899ull, 324497875889082ull}}, {{15693101395516348561ull, 519196601422531ull}}, {{8865132301671168526ull, 415357281138025ull}}, {{7092105841336934820ull, 332285824910420ull}}, {{11347369346139095713ull, 531657319856672ull}}, {{1699197847427455924ull, 425325855885338ull}}, {{8738055907425785385ull, 340260684708270ull}}, {{13980889451881256617ull, 544417095533232ull}}, {{3806013932021184647ull, 435533676426586ull}}, {{17802206404584589010ull, 348426941141268ull}}, {{6347437358883880478ull, 557483105826030ull}}, {{5077949887107104382ull, 445986484660824ull}}, {{7751708724427593829ull, 356789187728659ull}}, {{9890715794283985386ull, 285431350182927ull}}, {{1067750011886735325ull, 456690160292684ull}}, {{4543548824251298583ull, 365352128234147ull}}, {{14702885503626769836ull, 292281702587317ull}}, {{8767221546835190445ull, 467650724139708ull}}, {{14392474866951973003ull, 374120579311766ull}}, {{7824631078819668079ull, 299296463449413ull}}, {{8830060911369558603ull, 478874341519061ull}}, {{3374699914353736559ull, 383099473215249ull}}, {{6389108746224899570ull, 306479578572199ull}}, {{17601271623443659959ull, 490367325715518ull}}, {{3012970854529196998ull, 392293860572415ull}}, {{2410376683623357598ull, 313835088457932ull}}, {{7545951508539282481ull, 502136141532691ull}}, {{2347412392089515661ull, 401708913226153ull}}, {{9256627543155433175ull, 321367130580922ull}}, {{53208810081051788ull, 514187408929476ull}}, {{14799962307032482723ull, 411349927143580ull}}, {{11839969845625986178ull, 329079941714864ull}}, {{7875905308775846916ull, 526527906743783ull}}, {{13679421876504498179ull, 421222325395026ull}}, {{7254188686461688220ull, 336977860316021ull}}, {{4228004268854880506ull, 539164576505634ull}}, {{7071752229825814728ull, 431331661204507ull}}, {{16725448228086382752ull, 345065328963605ull}}, {{8313973091228660787ull, 552104526341769ull}}, {{10340527287724838953ull, 441683621073415ull}}, {{8272421830179871162ull, 353346896858732ull}}, {{17685983908369627899ull, 282677517486985ull}}, {{9850830179681853023ull, 452284027979177ull}}, {{501966514261661772ull, 361827222383342ull}}, {{11469619655635060387ull, 289461777906673ull}}, {{14662042634274186296ull, 463138844650677ull}}, {{4350936477935528391ull, 370511075720542ull}}, {{14548795626574153682ull, 296408860576433ull}}, {{1141980114067183952ull, 474254176922294ull}}, {{4602932905995657485ull, 379403341537835ull}}, {{3682346324796525988ull, 303522673230268ull}}, {{2202405304932531258ull, 485636277168429ull}}, {{5451273058687935329ull, 388509021734743ull}}, {{11739716076434168910ull, 310807217387794ull}}, {{7715499278068939286ull, 497291547820471ull}}, {{2483050607713241106ull, 397833238256377ull}}, {{13054486930396323854ull, 318266590605101ull}}, {{13508481459150297520ull, 509226544968162ull}}, {{3428087537836417370ull, 407381235974530ull}}, {{2742470030269133896ull, 325904988779624ull}}, {{11766649677914434880ull, 521447982047398ull}}, {{16792017371815368550ull, 417158385637918ull}}, {{2365567453226563870ull, 333726708510335ull}}, {{3784907925162502193ull, 533962733616536ull}}, {{17785321599097643047ull, 427170186893228ull}}, {{3160210835052383468ull, 341736149514583ull}}, {{1366988521341903226ull, 546777839223333ull}}, {{8472288446557343227ull, 437422271378666ull}}, {{3088481942503964258ull, 349937817102933ull}}, {{1252222293264432490ull, 559900507364693ull}}, {{8380475464095366639ull, 447920405891754ull}}, {{10393729186018203634ull, 358336324713403ull}}, {{15693680978298383553ull, 286669059770722ull}}, {{10352494306309772393ull, 458670495633156ull}}, {{4592646630305907591ull, 366936396506525ull}}, {{3674117304244726073ull, 293549117205220ull}}, {{5878587686791561717ull, 469678587528352ull}}, {{15770916593658980343ull, 375742870022681ull}}, {{8927384460185273951ull, 300594296018145ull}}, {{14283815136296438322ull, 480950873629032ull}}, {{4048354479553330011ull, 384760698903226ull}}, {{17996078842610305302ull, 307808559122580ull}}, {{10346982074466936867ull, 492493694596129ull}}, {{11966934474315459817ull, 393994955676903ull}}, {{16952245208936188500ull, 315195964541522ull}}, {{12366197075330260307ull, 504313543266436ull}}, {{6203608845522297922ull, 403450834613149ull}}, {{8652235891159748661ull, 322760667690519ull}}, {{2775530981629866888ull, 516417068304831ull}}, {{16977820044271534803ull, 413133654643864ull}}, {{17271604850159138166ull, 330506923715091ull}}, {{1809126057061248803ull, 528811077944147ull}}, {{12515347289874730012ull, 423048862355317ull}}, {{2633580202415963363ull, 338439089884254ull}}, {{11592425953349362027ull, 541502543814806ull}}, {{5584591947937579299ull, 433202035051845ull}}, {{4467673558350063439ull, 346561628041476ull}}, {{18216324137585832472ull, 554498604866361ull}}, {{10883710495326755654ull, 443598883893089ull}}, {{12396317211003314846ull, 354879107114471ull}}, {{6227704954060741554ull, 283903285691577ull}}, {{13653676741239096810ull, 454245257106523ull}}, {{18301639022475098094ull, 363396205685218ull}}, {{3573264773754347506ull, 290716964548175ull}}, {{5717223638006956009ull, 465147143277080ull}}, {{4573778910405564807ull, 372117714621664ull}}, {{7348371943066362169ull, 297694171697331ull}}, {{4378697479422358824ull, 476310674715730ull}}, {{3502957983537887059ull, 381048539772584ull}}, {{6491715201572219970ull, 304838831818067ull}}, {{14076093137257462276ull, 487742130908907ull}}, {{3882176880322149174ull, 390193704727126ull}}, {{17863136763225360632ull, 312154963781700ull}}, {{10134274747451025396ull, 499447942050721ull}}, {{4418070983218909993ull, 399558353640577ull}}, {{14602503230800858964ull, 319646682912461ull}}, {{15985307539797553697ull, 511434692659938ull}}, {{1720199587612311988ull, 409147754127951ull}}, {{16133554929057490883ull, 327318203302360ull}}, {{7366943812782433797ull, 523709125283777ull}}, {{16961601494451678007ull, 418967300227021ull}}, {{9879932380819432082ull, 335173840181617ull}}, {{1050496550343450039ull, 536278144290588ull}}, {{8219094869758580678ull, 429022515432470ull}}, {{6575275895806864542ull, 343218012345976ull}}, {{3141743803807162621ull, 549148819753562ull}}, {{13581441487271461066ull, 439319055802849ull}}, {{14554502004559079176ull, 351455244642279ull}}, {{12219156763068795713ull, 562328391427647ull}}, {{2396627780971215924ull, 449862713142118ull}}, {{9295999854260793385ull, 359890170513694ull}}, {{11126148698150545031ull, 287912136410955ull}}, {{17801837917040872050ull, 460659418257528ull}}, {{3173423889406966671ull, 368527534606023ull}}, {{9917436741009393983ull, 294822027684818ull}}, {{12178549970873120049ull, 471715244295709ull}}, {{13432188791440406363ull, 377372195436567ull}}, {{3367053403668504444ull, 301897756349254ull}}, {{12765983075353427757ull, 483036410158806ull}}, {{6523437645540831882ull, 386429128127045ull}}, {{5218750116432665505ull, 309143302501636ull}}, {{971302556808444163ull, 494629284002618ull}}, {{8155739674930575976ull, 395703427202094ull}}, {{10213940554686371104ull, 316562741761675ull}}, {{16342304887498193767ull, 506500386818680ull}}, {{13073843909998555014ull, 405200309454944ull}}, {{14148423942740754334ull, 324160247563955ull}}, {{4190734234675655319ull, 518656396102329ull}}, {{7041936202482434578ull, 414925116881863ull}}, {{13012246591469768309ull, 331940093505490ull}}, {{2372850472642077678ull, 531104149608785ull}}, {{1898280378113662142ull, 424883319687028ull}}, {{8897321931974750360ull, 339906655749622ull}}, {{17925063905901510900ull, 543850649199395ull}}, {{14340051124721208720ull, 435080519359516ull}}, {{7782692085035056653ull, 348064415487613ull}}, {{8762958521314180321ull, 556903064780181ull}}, {{3321018002309433934ull, 445522451824145ull}}, {{2656814401847547147ull, 356417961459316ull}}, {{16882846780445679010ull, 285134369167452ull}}, {{12255159589745445124ull, 456214990667924ull}}, {{13493476486538266422ull, 364971992534339ull}}, {{14484130003972523461ull, 291977594027471ull}}, {{15795910376872216891ull, 467164150443954ull}}, {{16326077116239683836ull, 373731320355163ull}}, {{1992815248766016099ull, 298985056284131ull}}, {{14256550842251356728ull, 478376090054609ull}}, {{15094589488542995706ull, 382700872043687ull}}, {{4696973961350575918ull, 306160697634950ull}}, {{7515158338160921469ull, 489857116215920ull}}, {{6012126670528737175ull, 391885692972736ull}}, {{1120352521681079417ull, 313508554378189ull}}, {{9171261664173547714ull, 501613687005102ull}}, {{18405055775564569141ull, 401290949604081ull}}, {{11034695805709744989ull, 321032759683265ull}}, {{17655513289135591983ull, 513652415493224ull}}, {{17813759446050383910ull, 410921932394579ull}}, {{17940356371582217451ull, 328737545915663ull}}, {{6568477306080085982ull, 525980073465062ull}}, {{16322828289089799755ull, 420784058772049ull}}, {{16747611446013750127ull, 336627247017639ull}}, {{15728131869396269235ull, 538603595228223ull}}, {{1514459051291284418ull, 430882876182579ull}}, {{4900916055774937857ull, 344706300946063ull}}, {{4152116874497990249ull, 551530081513701ull}}, {{18079088758566033492ull, 441224065210960ull}}, {{14463271006852826793ull, 352979252168768ull}}, {{502570361256530465ull, 282383401735015ull}}, {{804112578010448744ull, 451813442776024ull}}, {{4332638877150269319ull, 361450754220819ull}}, {{7155459916462125778ull, 289160603376655ull}}, {{11448735866339401245ull, 462656965402648ull}}, {{16537686322555341642ull, 370125572322118ull}}, {{2162102613818542344ull, 296100457857695ull}}, {{3459364182109667751ull, 473760732572312ull}}, {{13835537789913465170ull, 379008586057849ull}}, {{14757779046672682459ull, 303206868846279ull}}, {{12544400030450560966ull, 485130990154047ull}}, {{2656822394876628126ull, 388104792123238ull}}, {{9504155545385123147ull, 310483833698590ull}}, {{15206648872616197036ull, 496774133917744ull}}, {{15854667912834867952ull, 397419307134195ull}}, {{12683734330267894361ull, 317935445707356ull}}, {{12915277298944810332ull, 508696713131770ull}}, {{10332221839155848265ull, 406957370505416ull}}, {{4576428656582768289ull, 325565896404333ull}}, {{3632937035790518939ull, 520905434246933ull}}, {{10285047258116235798ull, 416724347397546ull}}, {{4538688991751078315ull, 333379477918037ull}}, {{10951251201543635627ull, 533407164668859ull}}, {{12450349775976818825ull, 426725731735087ull}}, {{2581582191297634414ull, 341380585388070ull}}, {{4130531506076215062ull, 546208936620912ull}}, {{14372471649086703019ull, 436967149296729ull}}, {{15187326134011272738ull, 349573719437383ull}}, {{2163628925966574443ull, 559317951099814ull}}, {{5420251955515169877ull, 447454360879851ull}}, {{646852749670225578ull, 357963488703881ull}}, {{15274877458703821755ull, 286370790963104ull}}, {{13371757489700383839ull, 458193265540967ull}}, {{3318708362276486425ull, 366554612432774ull}}, {{6344315504563099463ull, 293243689946219ull}}, {{17529602436784779788ull, 469189903913950ull}}, {{14023681949427823830ull, 375351923131160ull}}, {{11218945559542259064ull, 300281538504928ull}}, {{14260964080525704179ull, 480450461607885ull}}, {{11408771264420563343ull, 384360369286308ull}}, {{16505714641020271321ull, 307488295429046ull}}, {{583701722439061852ull, 491981272686475ull}}, {{466961377951249481ull, 393585018149180ull}}, {{373569102360999585ull, 314868014519344ull}}, {{7976408193261419982ull, 503788823230950ull}}, {{6381126554609135986ull, 403031058584760ull}}, {{5104901243687308789ull, 322424846867808ull}}, {{4478493175157783739ull, 515879754988493ull}}, {{10961492169610047637ull, 412703803990794ull}}, {{12458542550429948433ull, 330163043192635ull}}, {{1486924006978365877ull, 528260869108217ull}}, {{12257585649808423671ull, 422608695286573ull}}, {{17184766149330559583ull, 338086956229258ull}}, {{5359532950477433394ull, 540939129966814ull}}, {{7976975175123857038ull, 432751303973451ull}}, {{2692231325357175307ull, 346201043178761ull}}, {{15375616564797211462ull, 553921669086017ull}}, {{4921795622353948523ull, 443137335268814ull}}, {{7626785312625069141ull, 354509868215051ull}}, {{2412079435358144990ull, 283607894572041ull}}, {{14927373540798762954ull, 453772631315265ull}}, {{11941898832639010363ull, 363018105052212ull}}, {{2174821436627387644ull, 290414484041770ull}}, {{3479714298603820230ull, 464663174466832ull}}, {{13851817883108787154ull, 371730539573465ull}}, {{11081454306487029723ull, 297384431658772ull}}, {{2972931631411606264ull, 475815090654036ull}}, {{17135740564096926304ull, 380652072523228ull}}, {{2640546007051810074ull, 304521658018583ull}}, {{535524796540985795ull, 487234652829733ull}}, {{7807117466716609282ull, 389787722263786ull}}, {{2556345158631377102ull, 311830177811029ull}}, {{11468849883294024011ull, 498928284497646ull}}, {{5485731091893308885ull, 399142627598117ull}}, {{15456631317740378078ull, 319314102078493ull}}, {{2594517219933142985ull, 510902563325590ull}}, {{2075613775946514388ull, 408722050660472ull}}, {{12728537464982942480ull, 326977640528377ull}}, {{5608264685005066675ull, 523164224845404ull}}, {{8175960562745963663ull, 418531379876323ull}}, {{13919466079680591577ull, 334825103901058ull}}, {{135052839037484584ull, 535720166241694ull}}, {{3797391085971897991ull, 428576132993355ull}}, {{3037912868777518392ull, 342860906394684ull}}, {{12239358219527850075ull, 548577450231494ull}}, {{13480835390364190383ull, 438861960185195ull}}, {{10784668312291352306ull, 351089568148156ull}}, {{9876771670182343044ull, 561743309037050ull}}, {{7901417336145874435ull, 449394647229640ull}}, {{6321133868916699548ull, 359515717783712ull}}, {{16124953539359090608ull, 287612574226969ull}}, {{14731879218748814003ull, 460180118763151ull}}, {{8096154560257140879ull, 368144095010521ull}}, {{2787574833463802380ull, 294515276008417ull}}, {{8149468548283994132ull, 471224441613467ull}}, {{17587621282852926275ull, 376979553290773ull}}, {{3002050582056610050ull, 301583642632619ull}}, {{12181978560774396727ull, 482533828212190ull}}, {{9745582848619517381ull, 386027062569752ull}}, {{417768649411793259ull, 308821650055802ull}}, {{4357778653800779537ull, 494114640089283ull}}, {{10864920552524444276ull, 395291712071426ull}}, {{5002587627277645098ull, 316233369657141ull}}, {{625442574160411510ull, 505973391451426ull}}, {{15257749318295970501ull, 404778713161140ull}}, {{12206199454636776400ull, 323822970528912ull}}, {{4772523868451200948ull, 518116752846260ull}}, {{3818019094760960759ull, 414493402277008ull}}, {{10433112905292589253ull, 331594721821606ull}}, {{9314283018984322159ull, 530551554914570ull}}, {{7451426415187457727ull, 424441243931656ull}}, {{2271792317408055858ull, 339552995145325ull}}, {{3634867707852889374ull, 543284792232520ull}}, {{2907894166282311499ull, 434627833786016ull}}, {{17083710591993490492ull, 347702267028812ull}}, {{12576541688221943494ull, 556323627246100ull}}, {{10061233350577554795ull, 445058901796880ull}}, {{8048986680462043836ull, 356047121437504ull}}, {{10128538159111545392ull, 284837697150003ull}}, {{12516312239836562304ull, 455740315440005ull}}, {{10013049791869249843ull, 364592252352004ull}}, {{11699788648237310198ull, 291673801881603ull}}, {{15030313022437785994ull, 466678083010565ull}}, {{12024250417950228795ull, 373342466408452ull}}, {{2240702704876362389ull, 298673973126762ull}}, {{7274473142544090146ull, 477878357002819ull}}, {{9508927328777182440ull, 382302685602255ull}}, {{7607141863021745952ull, 305842148481804ull}}, {{1103380536609062554ull, 489347437570887ull}}, {{11950750873512981013ull, 391477950056709ull}}, {{13249949513552295133ull, 313182360045367ull}}, {{6442523962716030921ull, 501091776072588ull}}, {{12532716799656645383ull, 400873420858070ull}}, {{10026173439725316306ull, 320698736686456ull}}, {{8663179874076685444ull, 513117978698330ull}}, {{6930543899261348355ull, 410494382958664ull}}, {{9233783934150989007ull, 328395506366931ull}}, {{7395356665157761765ull, 525432810187090ull}}, {{5916285332126209412ull, 420346248149672ull}}, {{15801074709926698499ull, 336276998519737ull}}, {{10524324276915076306ull, 538043197631580ull}}, {{8419459421532061045ull, 430434558105264ull}}, {{10424916351967559159ull, 344347646484211ull}}, {{9301168533664274008ull, 550956234374738ull}}, {{14819632456415239853ull, 440764987499790ull}}, {{11855705965132191882ull, 352611989999832ull}}, {{2105867142621932859ull, 282089591999866ull}}, {{14437433872420823545ull, 451343347199785ull}}, {{11549947097936658836ull, 361074677759828ull}}, {{16618655307833147715ull, 288859742207862ull}}, {{11832453233565395051ull, 462175587532580ull}}, {{9465962586852316041ull, 369740470026064ull}}, {{11262118884223763156ull, 295792376020851ull}}, {{10640692585274200403ull, 473267801633362ull}}, {{1133856438735539676ull, 378614241306690ull}}, {{907085150988431741ull, 302891393045352ull}}, {{5140685056323401109ull, 484626228872563ull}}, {{11491245674542541533ull, 387700983098050ull}}, {{9192996539634033226ull, 310160786478440ull}}, {{14708794463414453163ull, 496257258365504ull}}, {{15456384385473472853ull, 397005806692403ull}}, {{1297061064153047313ull, 317604645353923ull}}, {{16832692961612516994ull, 508167432566276ull}}, {{9776805554548103272ull, 406533946053021ull}}, {{4132095628896572294ull, 325227156842417ull}}, {{10300701820976425994ull, 520363450947867ull}}, {{861863827297320149ull, 416290760758294ull}}, {{4378839876579766442ull, 333032608606635ull}}, {{7006143802527626308ull, 532852173770616ull}}, {{1915566227280190723ull, 426281739016493ull}}, {{8911150611307973225ull, 341025391213194ull}}, {{3189794533867026190ull, 545640625941111ull}}, {{17309230886061262245ull, 436512500752888ull}}, {{2779338264623278826ull, 349210000602311ull}}, {{15514987667622977092ull, 558736000963697ull}}, {{5033292504614561027ull, 446988800770958ull}}, {{11405331633175469468ull, 357591040616766ull}}, {{5434916491798465251ull, 286072832493413ull}}, {{5006517572135634078ull, 457716531989461ull}}, {{315865242966596939ull, 366173225591569ull}}, {{3942041009115187875ull, 292938580473255ull}}, {{6307265614584300600ull, 468701728757208ull}}, {{12424510121151261126ull, 374961383005766ull}}, {{6250259282179098578ull, 299969106404613ull}}, {{6311066036744647401ull, 479950570247381ull}}, {{1359504014653807598ull, 383960456197905ull}}, {{1087603211723046078ull, 307168364958324ull}}, {{9118862768240694372ull, 491469383933318ull}}, {{14673787844076376144ull, 393175507146654ull}}, {{15428379090003011238ull, 314540405717323ull}}, {{2549313655553356042ull, 503264649147718ull}}, {{9418148553926505480ull, 402611719318174ull}}, {{11223867657883114707ull, 322089375454539ull}}, {{6890141808387252562ull, 515343000727263ull}}, {{12890811076193622696ull, 412274400581810ull}}, {{10312648860954898156ull, 329819520465448ull}}, {{12810889362785926727ull, 527711232744717ull}}, {{2870013860744920735ull, 422168986195774ull}}, {{5985359903337846911ull, 337735188956619ull}}, {{16955273474824375705ull, 540376302330590ull}}, {{13564218779859500564ull, 432301041864472ull}}, {{3472677394403779805ull, 345840833491578ull}}, {{1866935016304137365ull, 553345333586525ull}}, {{1493548013043309892ull, 442676266869220ull}}, {{1194838410434647913ull, 354141013495376ull}}, {{15713265987315359623ull, 283312810796300ull}}, {{6694481505995023781ull, 453300497274081ull}}, {{1666236390054108702ull, 362640397819265ull}}, {{1332989112043286961ull, 290112318255412ull}}, {{5822131394011169462ull, 464179709208659ull}}, {{8347053929950845892ull, 371343767366927ull}}, {{17745689588186407683ull, 297075013893541ull}}, {{2567661637904880031ull, 475320022229667ull}}, {{13122175754549634995ull, 380256017783733ull}}, {{17876438233123528642ull, 304204814226986ull}}, {{2776859469804273565ull, 486727702763179ull}}, {{5910836390585329175ull, 389382162210543ull}}, {{12107366741952083986ull, 311505729768434ull}}, {{8303740342897603409ull, 498409167629495ull}}, {{6642992274318082727ull, 398727334103596ull}}, {{1625045004712555858ull, 318981867282877ull}}, {{6289420822281999697ull, 510370987652603ull}}, {{12410234287309420404ull, 408296790122082ull}}, {{2549489800363715677ull, 326637432097666ull}}, {{15147230124807676052ull, 522619891356265ull}}, {{12117784099846140842ull, 418095913085012ull}}, {{2315529650393092027ull, 334476730468010ull}}, {{3704847440628947243ull, 535162768748816ull}}, {{17721273211470799087ull, 428130214999052ull}}, {{6798320939692818623ull, 342504171999242ull}}, {{14566662318250420121ull, 548006675198787ull}}, {{4274632225116515450ull, 438405340159030ull}}, {{3419705780093212360ull, 350724272127224ull}}, {{12850226877632960423ull, 561158835403558ull}}, {{17658879131590188985ull, 448927068322846ull}}, {{10437754490530240864ull, 359141654658277ull}}, {{971505962940372045ull, 287313323726622ull}}, {{5243758355446505596ull, 459701317962595ull}}, {{4195006684357204476ull, 367761054370076ull}}, {{18113400606453404874ull, 294208843496060ull}}, {{10534696896615896182ull, 470734149593697ull}}, {{1049059887808896299ull, 376587319674958ull}}, {{8217945539730937686ull, 301269855739966ull}}, {{5770015234085679651ull, 482031769183946ull}}, {{926663372526633398ull, 385625415347157ull}}, {{11809377142247037688ull, 308500332277725ull}}, {{448259353885708685ull, 493600531644361ull}}, {{15116002742076208240ull, 394880425315488ull}}, {{1024755749435235623ull, 315904340252391ull}}, {{12707655643322107966ull, 505446944403825ull}}, {{10166124514657686373ull, 404357555523060ull}}, {{8132899611726149098ull, 323486044418448ull}}, {{9323290564019928234ull, 517577671069517ull}}, {{79934821732121941ull, 414062136855614ull}}, {{3753296672127607876ull, 331249709484491ull}}, {{17073321119629903571ull, 529999535175185ull}}, {{13658656895703922857ull, 423999628140148ull}}, {{18305623146046958932ull, 339199702512118ull}}, {{7152904145223672352ull, 542719524019390ull}}, {{5722323316178937881ull, 434175619215512ull}}, {{15645905097168881275ull, 347340495372409ull}}, {{13965401711244479070ull, 555744792595855ull}}, {{11172321368995583256ull, 444595834076684ull}}, {{12627205909938376928ull, 355676667261347ull}}, {{2723067098466880896ull, 284541333809078ull}}, {{667558542805099110ull, 455266134094525ull}}, {{534046834244079288ull, 364212907275620ull}}, {{427237467395263430ull, 291370325820496ull}}, {{11751626392058152458ull, 466192521312793ull}}, {{16779998743130342613ull, 372954017050234ull}}, {{17113347809246184414ull, 298363213640187ull}}, {{12623961235826253769ull, 477381141824300ull}}, {{10099168988661003015ull, 381904913459440ull}}, {{8079335190928802412ull, 305523930767552ull}}, {{16616285120227994183ull, 488838289228083ull}}, {{2224981651956664377ull, 391070631382467ull}}, {{12848031765791062471ull, 312856505105973ull}}, {{16867502010523789630ull, 500570408169557ull}}, {{6115303978935211058ull, 400456326535646ull}}, {{1202894368406258523ull, 320365061228517ull}}, {{5613979804191923960ull, 512584097965627ull}}, {{15559230287579270138ull, 410067278372501ull}}, {{8758035415321505787ull, 328053822698001ull}}, {{6634159035030588613ull, 524886116316802ull}}, {{16375373672250201860ull, 419908893053441ull}}, {{9410950123058251165ull, 335927114442753ull}}, {{11368171382151291540ull, 537483383108405ull}}, {{9094537105721033232ull, 429986706486724ull}}, {{10964978499318736909ull, 343989365189379ull}}, {{6475919154684248085ull, 550382984303007ull}}, {{16248781767973129437ull, 440306387442405ull}}, {{12999025414378503550ull, 352245109953924ull}}, {{14088569146244713163ull, 281796087963139ull}}, {{11473664189765810091ull, 450873740741023ull}}, {{16557628981296468719ull, 360698992592818ull}}, {{2178056740811444006ull, 288559194074255ull}}, {{3484890785298310410ull, 461694710518808ull}}, {{10166610257722468974ull, 369355768415046ull}}, {{4443939391436064856ull, 295484614732037ull}}, {{10799651841039614093ull, 472775383571259ull}}, {{12329070287573601597ull, 378220306857007ull}}, {{2484558600575060631ull, 302576245485606ull}}, {{15043340205145827980ull, 484121992776969ull}}, {{15724020978858572707ull, 387297594221575ull}}, {{12579216783086858166ull, 309838075377260ull}}, {{1680002779229421449ull, 495740920603617ull}}, {{12412048667609268129ull, 396592736482893ull}}, {{17308336563571235150ull, 317274189186314ull}}, {{16625292057488245270ull, 507638702698103ull}}, {{2232187201764865246ull, 406110962158483ull}}, {{9164447390895712843ull, 324888769726786ull}}, {{7284418195949319903ull, 519822031562858ull}}, {{13206232186243276569ull, 415857625250286ull}}, {{6875636934252710932ull, 332686100200229ull}}, {{18379716724288158138ull, 532297760320366ull}}, {{11014424564688616187ull, 425838208256293ull}}, {{16190237281234713596ull, 340670566605034ull}}, {{14836333205749810784ull, 545072906568055ull}}, {{11869066564599848627ull, 436058325254444ull}}, {{13184602066421789225ull, 348846660203555ull}}, {{2648619232565311144ull, 558154656325689ull}}, {{5808244200794159238ull, 446523725060551ull}}, {{957246545893417067ull, 357218980048441ull}}, {{15523192495682374946ull, 285775184038752ull}}, {{10079712734124158622ull, 457240294462004ull}}, {{11753119002041237221ull, 365792235569603ull}}, {{16781192831116810423ull, 292633788455682ull}}, {{12092513270819255384ull, 468214061529092ull}}, {{2295312987171583661ull, 374571249223274ull}}, {{5525599204479177252ull, 299656999378619ull}}, {{16219656356650504249ull, 479451199005790ull}}, {{12975725085320403399ull, 383560959204632ull}}, {{3001882438772502073ull, 306848767363706ull}}, {{15871058346261734287ull, 490958027781929ull}}, {{16386195491751297752ull, 392766422225543ull}}, {{2040909949175307232ull, 314213137780435ull}}, {{3265455918680491572ull, 502741020448696ull}}, {{17369759993912034550ull, 402192816358956ull}}, {{10206459180387717317ull, 321754253087165ull}}, {{16330334688620347707ull, 514806804939464ull}}, {{16753616565638188489ull, 411845443951571ull}}, {{9713544437768640468ull, 329476355161257ull}}, {{784275841462183456ull, 527162168258012ull}}, {{11695467117395477734ull, 421729734606409ull}}, {{13045722508658292511ull, 337383787685127ull}}, {{6115760754885626724ull, 539814060296204ull}}, {{8581957418650411703ull, 431851248236963ull}}, {{14244263564404150008ull, 345480998589570ull}}, {{4344077629337088398ull, 552769597743313ull}}, {{10853959732953491364ull, 442215678194650ull}}, {{8683167786362793091ull, 353772542555720ull}}, {{6946534229090234473ull, 283018034044576ull}}, {{3735757137060554511ull, 452828854471322ull}}, {{14056652153874174578ull, 362263083577057ull}}, {{3866624093615519016ull, 289810466861646ull}}, {{17254644994010561396ull, 463696746978633ull}}, {{2735669550982718147ull, 370957397582907ull}}, {{13256582085011905487ull, 296765918066325ull}}, {{2763787262309497163ull, 474825468906121ull}}, {{16968425068815239023ull, 379860375124896ull}}, {{9885391240310280895ull, 303888300099917ull}}, {{1059230725528808140ull, 486221280159868ull}}, {{8226082209906867158ull, 388977024127894ull}}, {{10270214582667404050ull, 311181619302315ull}}, {{16432343332267846480ull, 497890590883704ull}}, {{16835223480556187507ull, 398312472706963ull}}, {{2400132340219219036ull, 318649978165571ull}}, {{14908258188576481427ull, 509839965064913ull}}, {{858560106635454172ull, 407871972051931ull}}, {{15444243344276004631ull, 326297577641544ull}}, {{13642742906615876440ull, 522076124226471ull}}, {{7224845510550790828ull, 417660899381177ull}}, {{16847922852666363632ull, 334128719504941ull}}, {{1131234861072809549ull, 534605951207907ull}}, {{11973034333083978609ull, 427684760966325ull}}, {{9578427466467182887ull, 342147808773060ull}}, {{15325483946347492620ull, 547436494036896ull}}, {{8571038342336083772ull, 437949195229517ull}}, {{17924877118094597987ull, 350359356183613ull}}, {{6543710500499894841ull, 560574969893782ull}}, {{16303014844625646842ull, 448459975915025ull}}, {{13042411875700517474ull, 358767980732020ull}}, {{10433929500560413979ull, 287014384585616ull}}, {{9315589571412841720ull, 459223015336986ull}}, {{3763122842388363053ull, 367378412269589ull}}, {{6699847088652600765ull, 293902729815671ull}}, {{3341057712360340578ull, 470244367705074ull}}, {{6362194984630182786ull, 376195494164059ull}}, {{8779104802446056552ull, 300956395331247ull}}, {{17735916498655600806ull, 481530232529995ull}}, {{14188733198924480645ull, 385224186023996ull}}, {{7661637744397674193ull, 308179348819197ull}}, {{15947969205778189032ull, 493086958110715ull}}, {{12758375364622551225ull, 394469566488572ull}}, {{2828002662214220334ull, 315575653190858ull}}, {{835455444800842211ull, 504921045105373ull}}, {{8047061985324494415ull, 403936836084298ull}}, {{13816347217743416178ull, 323149468867438ull}}, {{18416806733647555563ull, 517039150187901ull}}, {{11044096572176134127ull, 413631320150321ull}}, {{5145928442998996978ull, 330905056120257ull}}, {{11922834323540305489ull, 529448089792411ull}}, {{5848918644090334068ull, 423558471833929ull}}, {{8368483730014177577ull, 338846777467143ull}}, {{9700225153280773800ull, 542154843947429ull}}, {{11449528937366529363ull, 433723875157943ull}}, {{16538320779377044137ull, 346979100126354ull}}, {{15393266802777539650ull, 555166560202167ull}}, {{4935915812738211074ull, 444133248161734ull}}, {{7638081464932479182ull, 355306598529387ull}}, {{17178511616171714315ull, 284245278823509ull}}, {{16417572141649011935ull, 454792446117615ull}}, {{13134057713319209548ull, 363833956894092ull}}, {{3128548541171546992ull, 291067165515274ull}}, {{12384375295358295833ull, 465707464824438ull}}, {{17286197865770457313ull, 372565971859550ull}}, {{13828958292616365850ull, 298052777487640ull}}, {{3679589194476633745ull, 476884443980225ull}}, {{2943671355581306996ull, 381507555184180ull}}, {{2354937084465045596ull, 305206044147344ull}}, {{11146596964627893601ull, 488329670635750ull}}, {{8917277571702314881ull, 390663736508600ull}}, {{7133822057361851905ull, 312530989206880ull}}, {{11414115291778963048ull, 500049582731008ull}}, {{16509989862906991084ull, 400039666184806ull}}, {{9518643075583682544ull, 320031732947845ull}}, {{15229828920933892071ull, 512050772716552ull}}, {{4805165507263293010ull, 409640618173242ull}}, {{14912178850036365378ull, 327712494538593ull}}, {{1723393271606722665ull, 524339991261750ull}}, {{1378714617285378132ull, 419471993009400ull}}, {{1102971693828302506ull, 335577594407520ull}}, {{1764754710125284009ull, 536924151052032ull}}, {{12479850212325958177ull, 429539320841625ull}}, {{9983880169860766542ull, 343631456673300ull}}, {{15974208271777226467ull, 549810330677280ull}}, {{12779366617421781173ull, 439848264541824ull}}, {{13912842108679335262ull, 351878611633459ull}}, {{14819622501685378532ull, 281502889306767ull}}, {{8954000743728964359ull, 450404622890828ull}}, {{14541898224466992134ull, 360323698312662ull}}, {{4254820950089773061ull, 288258958650130ull}}, {{6807713520143636897ull, 461214333840208ull}}, {{12824868445598730164ull, 368971467072166ull}}, {{6570545941737073808ull, 295177173657733ull}}, {{6823524692037407770ull, 472283477852373ull}}, {{12837517383113746862ull, 377826782281898ull}}, {{17648711535974818136ull, 302261425825518ull}}, {{6101845569108247079ull, 483618281320830ull}}, {{4881476455286597663ull, 386894625056664ull}}, {{7594529978971188453ull, 309515700045331ull}}, {{4772550336870080879ull, 495225120072530ull}}, {{3818040269496064703ull, 396180096058024ull}}, {{6743781030338762086ull, 316944076846419ull}}, {{18168747278025839984ull, 507110522954270ull}}, {{14534997822420671987ull, 405688418363416ull}}, {{7938649443194627266ull, 324550734690733ull}}, {{9012490294369493303ull, 519281175505173ull}}, {{14588689864979415289ull, 415424940404138ull}}, {{602905447757801261ull, 332339952323311ull}}, {{12032695160638212988ull, 531743923717297ull}}, {{2247458499026749744ull, 425395138973838ull}}, {{9176664428705220442ull, 340316111179070ull}}, {{14682663085928352707ull, 544505777886512ull}}, {{4367432839258861519ull, 435604622309210ull}}, {{3493946271407089215ull, 348483697847368ull}}, {{1900965219509432421ull, 557573916555789ull}}, {{5210120990349456260ull, 446059133244631ull}}, {{478747977537654685ull, 356847306595705ull}}, {{382998382030123748ull, 285477845276564ull}}, {{7991495040732018643ull, 456764552442502ull}}, {{17461242476811345884ull, 365411641954001ull}}, {{10279645166707166384ull, 292329313563201ull}}, {{9068734637247645568ull, 467726901701122ull}}, {{18323034154023847424ull, 374181521360897ull}}, {{7279729693735257293ull, 299345217088718ull}}, {{7958218695234501345ull, 478952347341949ull}}, {{10055923770929511399ull, 383161877873559ull}}, {{11734087831485519443ull, 306529502298847ull}}, {{4017145271409189816ull, 490447203678156ull}}, {{17971111476094993145ull, 392357762942524ull}}, {{18066237995617904839ull, 313886210354019ull}}, {{17837934348762916774ull, 502217936566431ull}}, {{10580998664268423096ull, 401774349253145ull}}, {{8464798931414738476ull, 321419479402516ull}}, {{6164980660779760916ull, 514271167044026ull}}, {{1242635713881898410ull, 411416933635221ull}}, {{15751503830073160020ull, 329133546908176ull}}, {{17823708498633235386ull, 526613675053082ull}}, {{6880269169422767663ull, 421290940042466ull}}, {{1814866520796303807ull, 337032752033973ull}}, {{17661181692241727384ull, 539252403254356ull}}, {{10439596539051471584ull, 431401922603485ull}}, {{8351677231241177267ull, 345121538082788ull}}, {{9673334755243973304ull, 552194460932461ull}}, {{4049318989453268320ull, 441755568745969ull}}, {{6928804006304524979ull, 353404454996775ull}}, {{5543043205043619983ull, 282723563997420ull}}, {{8868869128069791974ull, 452357702395872ull}}, {{18163141746681564548ull, 361886161916697ull}}, {{7151815767861430992ull, 289508929533358ull}}, {{7753556413836379265ull, 463214287253373ull}}, {{13581542760552924058ull, 370571429802698ull}}, {{18243931837926159893ull, 296457143842158ull}}, {{7054198052230393889ull, 474331430147454ull}}, {{9332707256526225435ull, 379465144117963ull}}, {{14844863434704800994ull, 303572115294370ull}}, {{5305037421818129975ull, 485715384470993ull}}, {{11622727566938324626ull, 388572307576794ull}}, {{12987530868292570024ull, 310857846061435ull}}, {{2333305315558560423ull, 497372553698297ull}}, {{12934690696672579308ull, 397898042958637ull}}, {{2969054927854242800ull, 318318434366910ull}}, {{4750487884566788480ull, 509309494987056ull}}, {{111041492911520460ull, 407447595989645ull}}, {{88833194329216368ull, 325958076791716ull}}, {{11210179555152477159ull, 521532922866745ull}}, {{8968143644121981727ull, 417226338293396ull}}, {{3485166100555675058ull, 333781070634717ull}}, {{9265614575630990417ull, 534049713015547ull}}, {{33794031020971687ull, 427239770412438ull}}, {{7405732854300597996ull, 341791816329950ull}}, {{11849172566880956794ull, 546866906127920ull}}, {{9479338053504765435ull, 437493524902336ull}}, {{3894121628061902025ull, 349994819921869ull}}, {{13609292234382863886ull, 559991711874990ull}}, {{10887433787506291109ull, 447993369499992ull}}, {{1331249400521212241ull, 358394695599994ull}}, {{4754348335158880116ull, 286715756479995ull}}, {{7606957336254208185ull, 458745210367992ull}}, {{17153612313229097518ull, 366996168294393ull}}, {{2654843406357547044ull, 293596934635515ull}}, {{4247749450172075271ull, 469755095416824ull}}, {{7087548374879570540ull, 375804076333459ull}}, {{9359387514645566755ull, 300643261066767ull}}, {{217624764465265516ull, 481029217706828ull}}, {{7552797441056033059ull, 384823374165462ull}}, {{17110284397070557417ull, 307858699332369ull}}, {{16308408591087160897ull, 492573918931791ull}}, {{9357378058127818395ull, 394059135145433ull}}, {{14864600075986075362ull, 315247308116346ull}}, {{16404662492093899933ull, 504395692986154ull}}, {{16813078808417030270ull, 403516554388923ull}}, {{2382416602507893246ull, 322813243511139ull}}, {{11190564193496449840ull, 516501189617822ull}}, {{1573753725313339226ull, 413200951694258ull}}, {{8637700609734492027ull, 330560761355406ull}}, {{6441623346091366597ull, 528897218168650ull}}, {{5153298676873093277ull, 423117774534920ull}}, {{4122638941498474622ull, 338494219627936ull}}, {{17664268750623290365ull, 541590751404697ull}}, {{6752717371014811645ull, 433272601123758ull}}, {{12780871526295669963ull, 346618080899006ull}}, {{13070696812589251294ull, 554588929438410ull}}, {{10456557450071401035ull, 443671143550728ull}}, {{15743943589540941474ull, 354936914840582ull}}, {{5216457242148932533ull, 283949531872466ull}}, {{967633957954471407ull, 454319250995946ull}}, {{15531502425331218418ull, 363455400796756ull}}, {{8735853125523064411ull, 290764320637405ull}}, {{13977365000836903058ull, 465222913019848ull}}, {{113845556443791477ull, 372178330415879ull}}, {{3780425259896943505ull, 297742664332703ull}}, {{2359331601093199284ull, 476388262932325ull}}, {{1887465280874559427ull, 381110610345860ull}}, {{1509972224699647542ull, 304888488276688ull}}, {{17173350818487077360ull, 487821581242700ull}}, {{13738680654789661888ull, 390257264994160ull}}, {{10990944523831729510ull, 312205811995328ull}}, {{13896162423388856894ull, 499529299192525ull}}, {{11116929938711085515ull, 399623439354020ull}}, {{8893543950968868412ull, 319698751483216ull}}, {{6850972692066368813ull, 511518002373146ull}}, {{1791429338911184727ull, 409214401898517ull}}, {{12501189915354678751ull, 327371521518813ull}}, {{16312555049825575679ull, 523794434430101ull}}, {{9360695225118550220ull, 419035547544081ull}}, {{3799207365352929852ull, 335228438035265ull}}, {{6078731784564687764ull, 536365500856424ull}}, {{8552334242393660534ull, 429092400685139ull}}, {{10531216208656838751ull, 343273920548111ull}}, {{9471248304367121355ull, 549238272876978ull}}, {{14955696272977517730ull, 439390618301582ull}}, {{4585859388898193538ull, 351512494641266ull}}, {{18405421466462840630ull, 562419991426025ull}}, {{14724337173170272504ull, 449935993140820ull}}, {{11779469738536218003ull, 359948794512656ull}}, {{5734226976087064079ull, 287959035610125ull}}, {{9174763161739302527ull, 460734456976200ull}}, {{7339810529391442021ull, 368587565580960ull}}, {{5871848423513153617ull, 294870052464768ull}}, {{5705608662879135464ull, 471792083943629ull}}, {{8253835745045218695ull, 377433667154903ull}}, {{13981766225519995602ull, 301946933723922ull}}, {{7613430701864351671ull, 483115093958276ull}}, {{2401395746749571013ull, 386492075166621ull}}, {{16678511856367298103ull, 309193660133296ull}}, {{860177266994304703ull, 494709856213275ull}}, {{688141813595443762ull, 395767884970620ull}}, {{550513450876355010ull, 316614307976496ull}}, {{11948867965627898986ull, 506582892762393ull}}, {{16937792001986139835ull, 405266314209914ull}}, {{17239582416330822191ull, 324213051367931ull}}, {{1757890162935943243ull, 518740882188691ull}}, {{16163707389316395887ull, 414992705750952ull}}, {{5552268281969296063ull, 331994164600762ull}}, {{12572978065892784025ull, 531190663361219ull}}, {{13747731267456137543ull, 424952530688975ull}}, {{10998185013964910034ull, 339962024551180ull}}, {{17597096022343856055ull, 543939239281888ull}}, {{3009630373649353875ull, 435151391425511ull}}, {{17165099557887124392ull, 348121113140408ull}}, {{5328066404167937089ull, 556993781024654ull}}, {{7951801938076259994ull, 445595024819723ull}}, {{13740139179944828642ull, 356476019855778ull}}, {{18370808973439683560ull, 285180815884622ull}}, {{14635899098535852403ull, 456289305415396ull}}, {{8019370464086771599ull, 365031444332317ull}}, {{17483542815495148249ull, 292025155465853ull}}, {{5837575616340775259ull, 467240248745366ull}}, {{980711678330709884ull, 373792198996293ull}}, {{8163266972148388553ull, 299033759197034ull}}, {{1993180711211690716ull, 478454014715255ull}}, {{1594544568969352573ull, 382763211772204ull}}, {{4964984469917392381ull, 306210569417763ull}}, {{4254626337125917487ull, 489936911068421ull}}, {{18161096328668375283ull, 391949528854736ull}}, {{10839528248192789903ull, 313559623083789ull}}, {{6275198752882732875ull, 501695396934063ull}}, {{12398856631790006946ull, 401356317547250ull}}, {{9919085305432005557ull, 321085054037800ull}}, {{15870536488691208892ull, 513736086460480ull}}, {{12696429190952967113ull, 410988869168384ull}}, {{13846492167504284014ull, 328791095334707ull}}, {{7396992209039213129ull, 526065752535532ull}}, {{16985640211457101473ull, 420852602028425ull}}, {{13588512169165681178ull, 336682081622740ull}}, {{3294875396955538270ull, 538691330596385ull}}, {{2635900317564430616ull, 430953064477108ull}}, {{9487417883535365139ull, 344762451581686ull}}, {{7801170984172763576ull, 551619922530698ull}}, {{13619634416822031507ull, 441295938024558ull}}, {{18274405162941445852ull, 353036750419646ull}}, {{10930175315611246358ull, 282429400335717ull}}, {{2730885246010352881ull, 451887040537148ull}}, {{9563405826292102951ull, 361509632429718ull}}, {{15029422290517503007ull, 289207705943774ull}}, {{12979029220602273842ull, 462732329510039ull}}, {{14072572191223729397ull, 370185863608031ull}}, {{7568708938237073194ull, 296148690886425ull}}, {{12109934301179317111ull, 473837905418280ull}}, {{9687947440943453688ull, 379070324334624ull}}, {{11439706767496673274ull, 303256259467699ull}}, {{7235484383768946269ull, 485210015148319ull}}, {{9477736321757067338ull, 388168012118655ull}}, {{7582189057405653870ull, 310534409694924ull}}, {{1063456047623315223ull, 496855055511879ull}}, {{4540113652840562502ull, 397484044409503ull}}, {{11010788551756270648ull, 317987235527602ull}}, {{2859866423842391744ull, 508779576844164ull}}, {{5977241953815823718ull, 407023661475331ull}}, {{1092444748310748651ull, 325618929180265ull}}, {{1747911597297197842ull, 520990286688424ull}}, {{5087678092579668597ull, 416792229350739ull}}, {{7759491288805645201ull, 333433783480591ull}}, {{5036488432605211675ull, 533494053568946ull}}, {{339841931342259017ull, 426795242855157ull}}, {{11339919989299538183ull, 341436194284125ull}}, {{18143871982879261093ull, 546297910854600ull}}, {{14515097586303408874ull, 437038328683680ull}}, {{11612078069042727099ull, 349630662946944ull}}, {{7511278466242632389ull, 559409060715111ull}}, {{2319673958252195588ull, 447527248572089ull}}, {{5545087981343666794ull, 358021798857671ull}}, {{746721570333023112ull, 286417439086137ull}}, {{4884103327274747302ull, 458267902537819ull}}, {{7596631476561708165ull, 366614322030255ull}}, {{6077305181249366532ull, 293291457624204ull}}, {{17102385919482807098ull, 469266332198726ull}}, {{9992559920844335355ull, 375413065758981ull}}, {{4304699121933557960ull, 300330452607185ull}}, {{6887518595093692737ull, 480528724171496ull}}, {{1820666061333043866ull, 384422979337197ull}}, {{12524579293292166063ull, 307538383469757ull}}, {{5281931610299824408ull, 492061413551612ull}}, {{15293591732465590496ull, 393649130841289ull}}, {{15924222200714382720ull, 314919304673031ull}}, {{18100057891659191705ull, 503870887476850ull}}, {{14480046313327353364ull, 403096709981480ull}}, {{11584037050661882691ull, 322477367985184ull}}, {{7466412836833281337ull, 515963788776295ull}}, {{5973130269466625069ull, 412771031021036ull}}, {{1089155400831389732ull, 330216824816829ull}}, {{9121346270814044218ull, 528346919706926ull}}, {{3607728201909325051ull, 422677535765541ull}}, {{17643577820495101334ull, 338142028612432ull}}, {{13472329253824520841ull, 541027245779892ull}}, {{3399165773575796026ull, 432821796623914ull}}, {{6408681433602547144ull, 346257437299131ull}}, {{2875192664280254785ull, 554011899678610ull}}, {{2300154131424203828ull, 443209519742888ull}}, {{9218820934623183708ull, 354567615794310ull}}, {{7375056747698546967ull, 283654092635448ull}}, {{8110741981575764824ull, 453846548216717ull}}, {{17556640029486342828ull, 363077238573373ull}}, {{2977265579363343293ull, 290461790858699ull}}, {{12142322556465169916ull, 464738865373918ull}}, {{17092555674655956579ull, 371791092299134ull}}, {{17363393354466675586ull, 297432873839307ull}}, {{13024034108179039645ull, 475892598142892ull}}, {{3040529657059411070ull, 380714078514314ull}}, {{6121772540389439179ull, 304571262811451ull}}, {{2416138435139282040ull, 487314020498322ull}}, {{13000957192337156602ull, 389851216398657ull}}, {{3022068124385904635ull, 311880973118926ull}}, {{15903355443243178386ull, 499009556990281ull}}, {{9033335539852632385ull, 399207645592225ull}}, {{7226668431882105908ull, 319366116473780ull}}, {{11562669491011369453ull, 510985786358048ull}}, {{16628833222292916209ull, 408788629086438ull}}, {{2235020133608601997ull, 327030903269151ull}}, {{14644078657999494166ull, 523249445230641ull}}, {{8025914111657685009ull, 418599556184513ull}}, {{13799428918809968654ull, 334879644947610ull}}, {{3632342196386398230ull, 535807431916177ull}} }; static const int bid_exponents_binary80[] = { -65, -62, -59, -55, -52, -49, -45, -42, -39, -35, -32, -29, -25, -22, -19, -15, -12, -9, -6, -2, 1, 4, 8, 11, 14, 18, 21, 24, 28, 31, 34, 38, 41, 44, 48, 51, 54, 58, 61, 64, 68, 71, 74, 78, 81, 84, 87, 91, 94, 97, 101, 104, 107, 111, 114, 117, 121, 124, 127, 131, 134, 137, 141, 144, 147, 151, 154, 157, 161, 164, 167, 171, 174, 177, 181, 184, 187, 190, 194, 197, 200, 204, 207, 210, 214, 217, 220, 224, 227, 230, 234, 237, 240, 244, 247, 250, 254, 257, 260, 264, 267, 270, 274, 277, 280, 283, 287, 290, 293, 297, 300, 303, 307, 310, 313, 317, 320, 323, 327, 330, 333, 337, 340, 343, 347, 350, 353, 357, 360, 363, 367, 370, 373, 377, 380, 383, 386, 390, 393, 396, 400, 403, 406, 410, 413, 416, 420, 423, 426, 430, 433, 436, 440, 443, 446, 450, 453, 456, 460, 463, 466, 470, 473, 476, 479, 483, 486, 489, 493, 496, 499, 503, 506, 509, 513, 516, 519, 523, 526, 529, 533, 536, 539, 543, 546, 549, 553, 556, 559, 563, 566, 569, 572, 576, 579, 582, 586, 589, 592, 596, 599, 602, 606, 609, 612, 616, 619, 622, 626, 629, 632, 636, 639, 642, 646, 649, 652, 656, 659, 662, 666, 669, 672, 675, 679, 682, 685, 689, 692, 695, 699, 702, 705, 709, 712, 715, 719, 722, 725, 729, 732, 735, 739, 742, 745, 749, 752, 755, 759, 762, 765, 768, 772, 775, 778, 782, 785, 788, 792, 795, 798, 802, 805, 808, 812, 815, 818, 822, 825, 828, 832, 835, 838, 842, 845, 848, 852, 855, 858, 862, 865, 868, 871, 875, 878, 881, 885, 888, 891, 895, 898, 901, 905, 908, 911, 915, 918, 921, 925, 928, 931, 935, 938, 941, 945, 948, 951, 955, 958, 961, 964, 968, 971, 974, 978, 981, 984, 988, 991, 994, 998, 1001, 1004, 1008, 1011, 1014, 1018, 1021, 1024, 1028, 1031, 1034, 1038, 1041, 1044, 1048, 1051, 1054, 1058, 1061, 1064, 1067, 1071, 1074, 1077, 1081, 1084, 1087, 1091, 1094, 1097, 1101, 1104, 1107, 1111, 1114, 1117, 1121, 1124, 1127, 1131, 1134, 1137, 1141, 1144, 1147, 1151, 1154, 1157, 1160, 1164, 1167, 1170, 1174, 1177, 1180, 1184, 1187, 1190, 1194, 1197, 1200, 1204, 1207, 1210, 1214, 1217, 1220, 1224, 1227, 1230, 1234, 1237, 1240, 1244, 1247, 1250, 1253, 1257, 1260, 1263, 1267, 1270, 1273, 1277, 1280, 1283, 1287, 1290, 1293, 1297, 1300, 1303, 1307, 1310, 1313, 1317, 1320, 1323, 1327, 1330, 1333, 1337, 1340, 1343, 1347, 1350, 1353, 1356, 1360, 1363, 1366, 1370, 1373, 1376, 1380, 1383, 1386, 1390, 1393, 1396, 1400, 1403, 1406, 1410, 1413, 1416, 1420, 1423, 1426, 1430, 1433, 1436, 1440, 1443, 1446, 1449, 1453, 1456, 1459, 1463, 1466, 1469, 1473, 1476, 1479, 1483, 1486, 1489, 1493, 1496, 1499, 1503, 1506, 1509, 1513, 1516, 1519, 1523, 1526, 1529, 1533, 1536, 1539, 1543, 1546, 1549, 1552, 1556, 1559, 1562, 1566, 1569, 1572, 1576, 1579, 1582, 1586, 1589, 1592, 1596, 1599, 1602, 1606, 1609, 1612, 1616, 1619, 1622, 1626, 1629, 1632, 1636, 1639, 1642, 1645, 1649, 1652, 1655, 1659, 1662, 1665, 1669, 1672, 1675, 1679, 1682, 1685, 1689, 1692, 1695, 1699, 1702, 1705, 1709, 1712, 1715, 1719, 1722, 1725, 1729, 1732, 1735, 1738, 1742, 1745, 1748, 1752, 1755, 1758, 1762, 1765, 1768, 1772, 1775, 1778, 1782, 1785, 1788, 1792, 1795, 1798, 1802, 1805, 1808, 1812, 1815, 1818, 1822, 1825, 1828, 1832, 1835, 1838, 1841, 1845, 1848, 1851, 1855, 1858, 1861, 1865, 1868, 1871, 1875, 1878, 1881, 1885, 1888, 1891, 1895, 1898, 1901, 1905, 1908, 1911, 1915, 1918, 1921, 1925, 1928, 1931, 1934, 1938, 1941, 1944, 1948, 1951, 1954, 1958, 1961, 1964, 1968, 1971, 1974, 1978, 1981, 1984, 1988, 1991, 1994, 1998, 2001, 2004, 2008, 2011, 2014, 2018, 2021, 2024, 2028, 2031, 2034, 2037, 2041, 2044, 2047, 2051, 2054, 2057, 2061, 2064, 2067, 2071, 2074, 2077, 2081, 2084, 2087, 2091, 2094, 2097, 2101, 2104, 2107, 2111, 2114, 2117, 2121, 2124, 2127, 2130, 2134, 2137, 2140, 2144, 2147, 2150, 2154, 2157, 2160, 2164, 2167, 2170, 2174, 2177, 2180, 2184, 2187, 2190, 2194, 2197, 2200, 2204, 2207, 2210, 2214, 2217, 2220, 2223, 2227, 2230, 2233, 2237, 2240, 2243, 2247, 2250, 2253, 2257, 2260, 2263, 2267, 2270, 2273, 2277, 2280, 2283, 2287, 2290, 2293, 2297, 2300, 2303, 2307, 2310, 2313, 2317, 2320, 2323, 2326, 2330, 2333, 2336, 2340, 2343, 2346, 2350, 2353, 2356, 2360, 2363, 2366, 2370, 2373, 2376, 2380, 2383, 2386, 2390, 2393, 2396, 2400, 2403, 2406, 2410, 2413, 2416, 2419, 2423, 2426, 2429, 2433, 2436, 2439, 2443, 2446, 2449, 2453, 2456, 2459, 2463, 2466, 2469, 2473, 2476, 2479, 2483, 2486, 2489, 2493, 2496, 2499, 2503, 2506, 2509, 2513, 2516, 2519, 2522, 2526, 2529, 2532, 2536, 2539, 2542, 2546, 2549, 2552, 2556, 2559, 2562, 2566, 2569, 2572, 2576, 2579, 2582, 2586, 2589, 2592, 2596, 2599, 2602, 2606, 2609, 2612, 2615, 2619, 2622, 2625, 2629, 2632, 2635, 2639, 2642, 2645, 2649, 2652, 2655, 2659, 2662, 2665, 2669, 2672, 2675, 2679, 2682, 2685, 2689, 2692, 2695, 2699, 2702, 2705, 2708, 2712, 2715, 2718, 2722, 2725, 2728, 2732, 2735, 2738, 2742, 2745, 2748, 2752, 2755, 2758, 2762, 2765, 2768, 2772, 2775, 2778, 2782, 2785, 2788, 2792, 2795, 2798, 2802, 2805, 2808, 2811, 2815, 2818, 2821, 2825, 2828, 2831, 2835, 2838, 2841, 2845, 2848, 2851, 2855, 2858, 2861, 2865, 2868, 2871, 2875, 2878, 2881, 2885, 2888, 2891, 2895, 2898, 2901, 2904, 2908, 2911, 2914, 2918, 2921, 2924, 2928, 2931, 2934, 2938, 2941, 2944, 2948, 2951, 2954, 2958, 2961, 2964, 2968, 2971, 2974, 2978, 2981, 2984, 2988, 2991, 2994, 2998, 3001, 3004, 3007, 3011, 3014, 3017, 3021, 3024, 3027, 3031, 3034, 3037, 3041, 3044, 3047, 3051, 3054, 3057, 3061, 3064, 3067, 3071, 3074, 3077, 3081, 3084, 3087, 3091, 3094, 3097, 3100, 3104, 3107, 3110, 3114, 3117, 3120, 3124, 3127, 3130, 3134, 3137, 3140, 3144, 3147, 3150, 3154, 3157, 3160, 3164, 3167, 3170, 3174, 3177, 3180, 3184, 3187, 3190, 3193, 3197, 3200, 3203, 3207, 3210, 3213, 3217, 3220, 3223, 3227, 3230, 3233, 3237, 3240, 3243, 3247, 3250, 3253, 3257, 3260, 3263, 3267, 3270, 3273, 3277, 3280, 3283, 3287, 3290, 3293, 3296, 3300, 3303, 3306, 3310, 3313, 3316, 3320, 3323, 3326, 3330, 3333, 3336, 3340, 3343, 3346, 3350, 3353, 3356, 3360, 3363, 3366, 3370, 3373, 3376, 3380, 3383, 3386, 3389, 3393, 3396, 3399, 3403, 3406, 3409, 3413, 3416, 3419, 3423, 3426, 3429, 3433, 3436, 3439, 3443, 3446, 3449, 3453, 3456, 3459, 3463, 3466, 3469, 3473, 3476, 3479, 3483, 3486, 3489, 3492, 3496, 3499, 3502, 3506, 3509, 3512, 3516, 3519, 3522, 3526, 3529, 3532, 3536, 3539, 3542, 3546, 3549, 3552, 3556, 3559, 3562, 3566, 3569, 3572, 3576, 3579, 3582, 3585, 3589, 3592, 3595, 3599, 3602, 3605, 3609, 3612, 3615, 3619, 3622, 3625, 3629, 3632, 3635, 3639, 3642, 3645, 3649, 3652, 3655, 3659, 3662, 3665, 3669, 3672, 3675, 3679, 3682, 3685, 3688, 3692, 3695, 3698, 3702, 3705, 3708, 3712, 3715, 3718, 3722, 3725, 3728, 3732, 3735, 3738, 3742, 3745, 3748, 3752, 3755, 3758, 3762, 3765, 3768, 3772, 3775, 3778, 3781, 3785, 3788, 3791, 3795, 3798, 3801, 3805, 3808, 3811, 3815, 3818, 3821, 3825, 3828, 3831, 3835, 3838, 3841, 3845, 3848, 3851, 3855, 3858, 3861, 3865, 3868, 3871, 3874, 3878, 3881, 3884, 3888, 3891, 3894, 3898, 3901, 3904, 3908, 3911, 3914, 3918, 3921, 3924, 3928, 3931, 3934, 3938, 3941, 3944, 3948, 3951, 3954, 3958, 3961, 3964, 3968, 3971, 3974, 3977, 3981, 3984, 3987, 3991, 3994, 3997, 4001, 4004, 4007, 4011, 4014, 4017, 4021, 4024, 4027, 4031, 4034, 4037, 4041, 4044, 4047, 4051, 4054, 4057, 4061, 4064, 4067, 4070, 4074, 4077, 4080, 4084, 4087, 4090, 4094, 4097, 4100, 4104, 4107, 4110, 4114, 4117, 4120, 4124, 4127, 4130, 4134, 4137, 4140, 4144, 4147, 4150, 4154, 4157, 4160, 4164, 4167, 4170, 4173, 4177, 4180, 4183, 4187, 4190, 4193, 4197, 4200, 4203, 4207, 4210, 4213, 4217, 4220, 4223, 4227, 4230, 4233, 4237, 4240, 4243, 4247, 4250, 4253, 4257, 4260, 4263, 4266, 4270, 4273, 4276, 4280, 4283, 4286, 4290, 4293, 4296, 4300, 4303, 4306, 4310, 4313, 4316, 4320, 4323, 4326, 4330, 4333, 4336, 4340, 4343, 4346, 4350, 4353, 4356, 4359, 4363, 4366, 4369, 4373, 4376, 4379, 4383, 4386, 4389, 4393, 4396, 4399, 4403, 4406, 4409, 4413, 4416, 4419, 4423, 4426, 4429, 4433, 4436, 4439, 4443, 4446, 4449, 4453, 4456, 4459, 4462, 4466, 4469, 4472, 4476, 4479, 4482, 4486, 4489, 4492, 4496, 4499, 4502, 4506, 4509, 4512, 4516, 4519, 4522, 4526, 4529, 4532, 4536, 4539, 4542, 4546, 4549, 4552, 4555, 4559, 4562, 4565, 4569, 4572, 4575, 4579, 4582, 4585, 4589, 4592, 4595, 4599, 4602, 4605, 4609, 4612, 4615, 4619, 4622, 4625, 4629, 4632, 4635, 4639, 4642, 4645, 4649, 4652, 4655, 4658, 4662, 4665, 4668, 4672, 4675, 4678, 4682, 4685, 4688, 4692, 4695, 4698, 4702, 4705, 4708, 4712, 4715, 4718, 4722, 4725, 4728, 4732, 4735, 4738, 4742, 4745, 4748, 4751, 4755, 4758, 4761, 4765, 4768, 4771, 4775, 4778, 4781, 4785, 4788, 4791, 4795, 4798, 4801, 4805, 4808, 4811, 4815, 4818, 4821, 4825, 4828, 4831, 4835, 4838, 4841, 4844, 4848, 4851, 4854, 4858, 4861, 4864, 4868, 4871, 4874, 4878, 4881, 4884, 4888, 4891, 4894, 4898, 4901, 4904, 4908, 4911, 4914, 4918, 4921, 4924, 4928, 4931, 4934, 4938, 4941, 4944, 4947, 4951, 4954, 4957, 4961, 4964, 4967, 4971, 4974, 4977, 4981, 4984, 4987, 4991, 4994, 4997, 5001, 5004, 5007, 5011, 5014, 5017, 5021, 5024, 5027, 5031, 5034, 5037, 5040, 5044, 5047, 5050, 5054, 5057, 5060, 5064, 5067, 5070, 5074, 5077, 5080, 5084, 5087, 5090, 5094, 5097, 5100, 5104, 5107, 5110, 5114, 5117, 5120, 5124, 5127, 5130, 5134, 5137, 5140, 5143, 5147, 5150, 5153, 5157, 5160, 5163, 5167, 5170, 5173, 5177, 5180, 5183, 5187, 5190, 5193, 5197, 5200, 5203, 5207, 5210, 5213, 5217, 5220, 5223, 5227, 5230, 5233, 5236, 5240, 5243, 5246, 5250, 5253, 5256, 5260, 5263, 5266, 5270, 5273, 5276, 5280, 5283, 5286, 5290, 5293, 5296, 5300, 5303, 5306, 5310, 5313, 5316, 5320, 5323, 5326, 5329, 5333, 5336, 5339, 5343, 5346, 5349, 5353, 5356, 5359, 5363, 5366, 5369, 5373, 5376, 5379, 5383, 5386, 5389, 5393, 5396, 5399, 5403, 5406, 5409, 5413, 5416, 5419, 5423, 5426, 5429, 5432, 5436, 5439, 5442, 5446, 5449, 5452, 5456, 5459, 5462, 5466, 5469, 5472, 5476, 5479, 5482, 5486, 5489, 5492, 5496, 5499, 5502, 5506, 5509, 5512, 5516, 5519, 5522, 5525, 5529, 5532, 5535, 5539, 5542, 5545, 5549, 5552, 5555, 5559, 5562, 5565, 5569, 5572, 5575, 5579, 5582, 5585, 5589, 5592, 5595, 5599, 5602, 5605, 5609, 5612, 5615, 5619, 5622, 5625, 5628, 5632, 5635, 5638, 5642, 5645, 5648, 5652, 5655, 5658, 5662, 5665, 5668, 5672, 5675, 5678, 5682, 5685, 5688, 5692, 5695, 5698, 5702, 5705, 5708, 5712, 5715, 5718, 5721, 5725, 5728, 5731, 5735, 5738, 5741, 5745, 5748, 5751, 5755, 5758, 5761, 5765, 5768, 5771, 5775, 5778, 5781, 5785, 5788, 5791, 5795, 5798, 5801, 5805, 5808, 5811, 5815, 5818, 5821, 5824, 5828, 5831, 5834, 5838, 5841, 5844, 5848, 5851, 5854, 5858, 5861, 5864, 5868, 5871, 5874, 5878, 5881, 5884, 5888, 5891, 5894, 5898, 5901, 5904, 5908, 5911, 5914, 5917, 5921, 5924, 5927, 5931, 5934, 5937, 5941, 5944, 5947, 5951, 5954, 5957, 5961, 5964, 5967, 5971, 5974, 5977, 5981, 5984, 5987, 5991, 5994, 5997, 6001, 6004, 6007, 6010, 6014, 6017, 6020, 6024, 6027, 6030, 6034, 6037, 6040, 6044, 6047, 6050, 6054, 6057, 6060, 6064, 6067, 6070, 6074, 6077, 6080, 6084, 6087, 6090, 6094, 6097, 6100, 6104, 6107, 6110, 6113, 6117, 6120, 6123, 6127, 6130, 6133, 6137, 6140, 6143, 6147, 6150, 6153, 6157, 6160, 6163, 6167, 6170, 6173, 6177, 6180, 6183, 6187, 6190, 6193, 6197, 6200, 6203, 6206, 6210, 6213, 6216, 6220, 6223, 6226, 6230, 6233, 6236, 6240, 6243, 6246, 6250, 6253, 6256, 6260, 6263, 6266, 6270, 6273, 6276, 6280, 6283, 6286, 6290, 6293, 6296, 6300, 6303, 6306, 6309, 6313, 6316, 6319, 6323, 6326, 6329, 6333, 6336, 6339, 6343, 6346, 6349, 6353, 6356, 6359, 6363, 6366, 6369, 6373, 6376, 6379, 6383, 6386, 6389, 6393, 6396, 6399, 6402, 6406, 6409, 6412, 6416, 6419, 6422, 6426, 6429, 6432, 6436, 6439, 6442, 6446, 6449, 6452, 6456, 6459, 6462, 6466, 6469, 6472, 6476, 6479, 6482, 6486, 6489, 6492, 6495, 6499, 6502, 6505, 6509, 6512, 6515, 6519, 6522, 6525, 6529, 6532, 6535, 6539, 6542, 6545, 6549, 6552, 6555, 6559, 6562, 6565, 6569, 6572, 6575, 6579, 6582, 6585, 6589, 6592, 6595, 6598, 6602, 6605, 6608, 6612, 6615, 6618, 6622, 6625, 6628, 6632, 6635, 6638, 6642, 6645, 6648, 6652, 6655, 6658, 6662, 6665, 6668, 6672, 6675, 6678, 6682, 6685, 6688, 6691, 6695, 6698, 6701, 6705, 6708, 6711, 6715, 6718, 6721, 6725, 6728, 6731, 6735, 6738, 6741, 6745, 6748, 6751, 6755, 6758, 6761, 6765, 6768, 6771, 6775, 6778, 6781, 6785, 6788, 6791, 6794, 6798, 6801, 6804, 6808, 6811, 6814, 6818, 6821, 6824, 6828, 6831, 6834, 6838, 6841, 6844, 6848, 6851, 6854, 6858, 6861, 6864, 6868, 6871, 6874, 6878, 6881, 6884, 6887, 6891, 6894, 6897, 6901, 6904, 6907, 6911, 6914, 6917, 6921, 6924, 6927, 6931, 6934, 6937, 6941, 6944, 6947, 6951, 6954, 6957, 6961, 6964, 6967, 6971, 6974, 6977, 6980, 6984, 6987, 6990, 6994, 6997, 7000, 7004, 7007, 7010, 7014, 7017, 7020, 7024, 7027, 7030, 7034, 7037, 7040, 7044, 7047, 7050, 7054, 7057, 7060, 7064, 7067, 7070, 7074, 7077, 7080, 7083, 7087, 7090, 7093, 7097, 7100, 7103, 7107, 7110, 7113, 7117, 7120, 7123, 7127, 7130, 7133, 7137, 7140, 7143, 7147, 7150, 7153, 7157, 7160, 7163, 7167, 7170, 7173, 7176, 7180, 7183, 7186, 7190, 7193, 7196, 7200, 7203, 7206, 7210, 7213, 7216, 7220, 7223, 7226, 7230, 7233, 7236, 7240, 7243, 7246, 7250, 7253, 7256, 7260, 7263, 7266, 7270, 7273, 7276, 7279, 7283, 7286, 7289, 7293, 7296, 7299, 7303, 7306, 7309, 7313, 7316, 7319, 7323, 7326, 7329, 7333, 7336, 7339, 7343, 7346, 7349, 7353, 7356, 7359, 7363, 7366, 7369, 7372, 7376, 7379, 7382, 7386, 7389, 7392, 7396, 7399, 7402, 7406, 7409, 7412, 7416, 7419, 7422, 7426, 7429, 7432, 7436, 7439, 7442, 7446, 7449, 7452, 7456, 7459, 7462, 7465, 7469, 7472, 7475, 7479, 7482, 7485, 7489, 7492, 7495, 7499, 7502, 7505, 7509, 7512, 7515, 7519, 7522, 7525, 7529, 7532, 7535, 7539, 7542, 7545, 7549, 7552, 7555, 7559, 7562, 7565, 7568, 7572, 7575, 7578, 7582, 7585, 7588, 7592, 7595, 7598, 7602, 7605, 7608, 7612, 7615, 7618, 7622, 7625, 7628, 7632, 7635, 7638, 7642, 7645, 7648, 7652, 7655, 7658, 7661, 7665, 7668, 7671, 7675, 7678, 7681, 7685, 7688, 7691, 7695, 7698, 7701, 7705, 7708, 7711, 7715, 7718, 7721, 7725, 7728, 7731, 7735, 7738, 7741, 7745, 7748, 7751, 7755, 7758, 7761, 7764, 7768, 7771, 7774, 7778, 7781, 7784, 7788, 7791, 7794, 7798, 7801, 7804, 7808, 7811, 7814, 7818, 7821, 7824, 7828, 7831, 7834, 7838, 7841, 7844, 7848, 7851, 7854, 7857, 7861, 7864, 7867, 7871, 7874, 7877, 7881, 7884, 7887, 7891, 7894, 7897, 7901, 7904, 7907, 7911, 7914, 7917, 7921, 7924, 7927, 7931, 7934, 7937, 7941, 7944, 7947, 7951, 7954, 7957, 7960, 7964, 7967, 7970, 7974, 7977, 7980, 7984, 7987, 7990, 7994, 7997, 8000, 8004, 8007, 8010, 8014, 8017, 8020, 8024, 8027, 8030, 8034, 8037, 8040, 8044, 8047, 8050, 8053, 8057, 8060, 8063, 8067, 8070, 8073, 8077, 8080, 8083, 8087, 8090, 8093, 8097, 8100, 8103, 8107, 8110, 8113, 8117, 8120, 8123, 8127, 8130, 8133, 8137, 8140, 8143, 8146, 8150, 8153, 8156, 8160, 8163, 8166, 8170, 8173, 8176, 8180, 8183, 8186, 8190, 8193, 8196, 8200, 8203, 8206, 8210, 8213, 8216, 8220, 8223, 8226, 8230, 8233, 8236, 8240, 8243, 8246, 8249, 8253, 8256, 8259, 8263, 8266, 8269, 8273, 8276, 8279, 8283, 8286, 8289, 8293, 8296, 8299, 8303, 8306, 8309, 8313, 8316, 8319, 8323, 8326, 8329, 8333, 8336, 8339, 8342, 8346, 8349, 8352, 8356, 8359, 8362, 8366, 8369, 8372, 8376, 8379, 8382, 8386, 8389, 8392, 8396, 8399, 8402, 8406, 8409, 8412, 8416, 8419, 8422, 8426, 8429, 8432, 8436, 8439, 8442, 8445, 8449, 8452, 8455, 8459, 8462, 8465, 8469, 8472, 8475, 8479, 8482, 8485, 8489, 8492, 8495, 8499, 8502, 8505, 8509, 8512, 8515, 8519, 8522, 8525, 8529, 8532, 8535, 8538, 8542, 8545, 8548, 8552, 8555, 8558, 8562, 8565, 8568, 8572, 8575, 8578, 8582, 8585, 8588, 8592, 8595, 8598, 8602, 8605, 8608, 8612, 8615, 8618, 8622, 8625, 8628, 8631, 8635, 8638, 8641, 8645, 8648, 8651, 8655, 8658, 8661, 8665, 8668, 8671, 8675, 8678, 8681, 8685, 8688, 8691, 8695, 8698, 8701, 8705, 8708, 8711, 8715, 8718, 8721, 8725, 8728, 8731, 8734, 8738, 8741, 8744, 8748, 8751, 8754, 8758, 8761, 8764, 8768, 8771, 8774, 8778, 8781, 8784, 8788, 8791, 8794, 8798, 8801, 8804, 8808, 8811, 8814, 8818, 8821, 8824, 8827, 8831, 8834, 8837, 8841, 8844, 8847, 8851, 8854, 8857, 8861, 8864, 8867, 8871, 8874, 8877, 8881, 8884, 8887, 8891, 8894, 8897, 8901, 8904, 8907, 8911, 8914, 8917, 8921, 8924, 8927, 8930, 8934, 8937, 8940, 8944, 8947, 8950, 8954, 8957, 8960, 8964, 8967, 8970, 8974, 8977, 8980, 8984, 8987, 8990, 8994, 8997, 9000, 9004, 9007, 9010, 9014, 9017, 9020, 9023, 9027, 9030, 9033, 9037, 9040, 9043, 9047, 9050, 9053, 9057, 9060, 9063, 9067, 9070, 9073, 9077, 9080, 9083, 9087, 9090, 9093, 9097, 9100, 9103, 9107, 9110, 9113, 9116, 9120, 9123, 9126, 9130, 9133, 9136, 9140, 9143, 9146, 9150, 9153, 9156, 9160, 9163, 9166, 9170, 9173, 9176, 9180, 9183, 9186, 9190, 9193, 9196, 9200, 9203, 9206, 9210, 9213, 9216, 9219, 9223, 9226, 9229, 9233, 9236, 9239, 9243, 9246, 9249, 9253, 9256, 9259, 9263, 9266, 9269, 9273, 9276, 9279, 9283, 9286, 9289, 9293, 9296, 9299, 9303, 9306, 9309, 9312, 9316, 9319, 9322, 9326, 9329, 9332, 9336, 9339, 9342, 9346, 9349, 9352, 9356, 9359, 9362, 9366, 9369, 9372, 9376, 9379, 9382, 9386, 9389, 9392, 9396, 9399, 9402, 9406, 9409, 9412, 9415, 9419, 9422, 9425, 9429, 9432, 9435, 9439, 9442, 9445, 9449, 9452, 9455, 9459, 9462, 9465, 9469, 9472, 9475, 9479, 9482, 9485, 9489, 9492, 9495, 9499, 9502, 9505, 9508, 9512, 9515, 9518, 9522, 9525, 9528, 9532, 9535, 9538, 9542, 9545, 9548, 9552, 9555, 9558, 9562, 9565, 9568, 9572, 9575, 9578, 9582, 9585, 9588, 9592, 9595, 9598, 9601, 9605, 9608, 9611, 9615, 9618, 9621, 9625, 9628, 9631, 9635, 9638, 9641, 9645, 9648, 9651, 9655, 9658, 9661, 9665, 9668, 9671, 9675, 9678, 9681, 9685, 9688, 9691, 9695, 9698, 9701, 9704, 9708, 9711, 9714, 9718, 9721, 9724, 9728, 9731, 9734, 9738, 9741, 9744, 9748, 9751, 9754, 9758, 9761, 9764, 9768, 9771, 9774, 9778, 9781, 9784, 9788, 9791, 9794, 9797, 9801, 9804, 9807, 9811, 9814, 9817, 9821, 9824, 9827, 9831, 9834, 9837, 9841, 9844, 9847, 9851, 9854, 9857, 9861, 9864, 9867, 9871, 9874, 9877, 9881, 9884, 9887, 9891, 9894, 9897, 9900, 9904, 9907, 9910, 9914, 9917, 9920, 9924, 9927, 9930, 9934, 9937, 9940, 9944, 9947, 9950, 9954, 9957, 9960, 9964, 9967, 9970, 9974, 9977, 9980, 9984, 9987, 9990, 9993, 9997, 10000, 10003, 10007, 10010, 10013, 10017, 10020, 10023, 10027, 10030, 10033, 10037, 10040, 10043, 10047, 10050, 10053, 10057, 10060, 10063, 10067, 10070, 10073, 10077, 10080, 10083, 10087, 10090, 10093, 10096, 10100, 10103, 10106, 10110, 10113, 10116, 10120, 10123, 10126, 10130, 10133, 10136, 10140, 10143, 10146, 10150, 10153, 10156, 10160, 10163, 10166, 10170, 10173, 10176, 10180, 10183, 10186, 10189, 10193, 10196, 10199, 10203, 10206, 10209, 10213, 10216, 10219, 10223, 10226, 10229, 10233, 10236, 10239, 10243, 10246, 10249, 10253, 10256, 10259, 10263, 10266, 10269, 10273, 10276, 10279, 10282, 10286, 10289, 10292, 10296, 10299, 10302, 10306, 10309, 10312, 10316, 10319, 10322, 10326, 10329, 10332, 10336, 10339, 10342, 10346, 10349, 10352, 10356, 10359, 10362, 10366, 10369, 10372, 10376, 10379, 10382, 10385, 10389, 10392, 10395, 10399, 10402, 10405, 10409, 10412, 10415, 10419, 10422, 10425, 10429, 10432, 10435, 10439, 10442, 10445, 10449, 10452, 10455, 10459, 10462, 10465, 10469, 10472, 10475, 10478, 10482, 10485, 10488, 10492, 10495, 10498, 10502, 10505, 10508, 10512, 10515, 10518, 10522, 10525, 10528, 10532, 10535, 10538, 10542, 10545, 10548, 10552, 10555, 10558, 10562, 10565, 10568, 10572, 10575, 10578, 10581, 10585, 10588, 10591, 10595, 10598, 10601, 10605, 10608, 10611, 10615, 10618, 10621, 10625, 10628, 10631, 10635, 10638, 10641, 10645, 10648, 10651, 10655, 10658, 10661, 10665, 10668, 10671, 10674, 10678, 10681, 10684, 10688, 10691, 10694, 10698, 10701, 10704, 10708, 10711, 10714, 10718, 10721, 10724, 10728, 10731, 10734, 10738, 10741, 10744, 10748, 10751, 10754, 10758, 10761, 10764, 10767, 10771, 10774, 10777, 10781, 10784, 10787, 10791, 10794, 10797, 10801, 10804, 10807, 10811, 10814, 10817, 10821, 10824, 10827, 10831, 10834, 10837, 10841, 10844, 10847, 10851, 10854, 10857, 10861, 10864, 10867, 10870, 10874, 10877, 10880, 10884, 10887, 10890, 10894, 10897, 10900, 10904, 10907, 10910, 10914, 10917, 10920, 10924, 10927, 10930, 10934, 10937, 10940, 10944, 10947, 10950, 10954, 10957, 10960, 10963, 10967, 10970, 10973, 10977, 10980, 10983, 10987, 10990, 10993, 10997, 11000, 11003, 11007, 11010, 11013, 11017, 11020, 11023, 11027, 11030, 11033, 11037, 11040, 11043, 11047, 11050, 11053, 11057, 11060, 11063, 11066, 11070, 11073, 11076, 11080, 11083, 11086, 11090, 11093, 11096, 11100, 11103, 11106, 11110, 11113, 11116, 11120, 11123, 11126, 11130, 11133, 11136, 11140, 11143, 11146, 11150, 11153, 11156, 11159, 11163, 11166, 11169, 11173, 11176, 11179, 11183, 11186, 11189, 11193, 11196, 11199, 11203, 11206, 11209, 11213, 11216, 11219, 11223, 11226, 11229, 11233, 11236, 11239, 11243, 11246, 11249, 11252, 11256, 11259, 11262, 11266, 11269, 11272, 11276, 11279, 11282, 11286, 11289, 11292, 11296, 11299, 11302, 11306, 11309, 11312, 11316, 11319, 11322, 11326, 11329, 11332, 11336, 11339, 11342, 11346, 11349, 11352, 11355, 11359, 11362, 11365, 11369, 11372, 11375, 11379, 11382, 11385, 11389, 11392, 11395, 11399, 11402, 11405, 11409, 11412, 11415, 11419, 11422, 11425, 11429, 11432, 11435, 11439, 11442, 11445, 11448, 11452, 11455, 11458, 11462, 11465, 11468, 11472, 11475, 11478, 11482, 11485, 11488, 11492, 11495, 11498, 11502, 11505, 11508, 11512, 11515, 11518, 11522, 11525, 11528, 11532, 11535, 11538, 11542, 11545, 11548, 11551, 11555, 11558, 11561, 11565, 11568, 11571, 11575, 11578, 11581, 11585, 11588, 11591, 11595, 11598, 11601, 11605, 11608, 11611, 11615, 11618, 11621, 11625, 11628, 11631, 11635, 11638, 11641, 11644, 11648, 11651, 11654, 11658, 11661, 11664, 11668, 11671, 11674, 11678, 11681, 11684, 11688, 11691, 11694, 11698, 11701, 11704, 11708, 11711, 11714, 11718, 11721, 11724, 11728, 11731, 11734, 11737, 11741, 11744, 11747, 11751, 11754, 11757, 11761, 11764, 11767, 11771, 11774, 11777, 11781, 11784, 11787, 11791, 11794, 11797, 11801, 11804, 11807, 11811, 11814, 11817, 11821, 11824, 11827, 11831, 11834, 11837, 11840, 11844, 11847, 11850, 11854, 11857, 11860, 11864, 11867, 11870, 11874, 11877, 11880, 11884, 11887, 11890, 11894, 11897, 11900, 11904, 11907, 11910, 11914, 11917, 11920, 11924, 11927, 11930, 11933, 11937, 11940, 11943, 11947, 11950, 11953, 11957, 11960, 11963, 11967, 11970, 11973, 11977, 11980, 11983, 11987, 11990, 11993, 11997, 12000, 12003, 12007, 12010, 12013, 12017, 12020, 12023, 12027, 12030, 12033, 12036, 12040, 12043, 12046, 12050, 12053, 12056, 12060, 12063, 12066, 12070, 12073, 12076, 12080, 12083, 12086, 12090, 12093, 12096, 12100, 12103, 12106, 12110, 12113, 12116, 12120, 12123, 12126, 12129, 12133, 12136, 12139, 12143, 12146, 12149, 12153, 12156, 12159, 12163, 12166, 12169, 12173, 12176, 12179, 12183, 12186, 12189, 12193, 12196, 12199, 12203, 12206, 12209, 12213, 12216, 12219, 12223, 12226, 12229, 12232, 12236, 12239, 12242, 12246, 12249, 12252, 12256, 12259, 12262, 12266, 12269, 12272, 12276, 12279, 12282, 12286, 12289, 12292, 12296, 12299, 12302, 12306, 12309, 12312, 12316, 12319, 12322, 12325, 12329, 12332, 12335, 12339, 12342, 12345, 12349, 12352, 12355, 12359, 12362, 12365, 12369, 12372, 12375, 12379, 12382, 12385, 12389, 12392, 12395, 12399, 12402, 12405, 12409, 12412, 12415, 12418, 12422, 12425, 12428, 12432, 12435, 12438, 12442, 12445, 12448, 12452, 12455, 12458, 12462, 12465, 12468, 12472, 12475, 12478, 12482, 12485, 12488, 12492, 12495, 12498, 12502, 12505, 12508, 12512, 12515, 12518, 12521, 12525, 12528, 12531, 12535, 12538, 12541, 12545, 12548, 12551, 12555, 12558, 12561, 12565, 12568, 12571, 12575, 12578, 12581, 12585, 12588, 12591, 12595, 12598, 12601, 12605, 12608, 12611, 12614, 12618, 12621, 12624, 12628, 12631, 12634, 12638, 12641, 12644, 12648, 12651, 12654, 12658, 12661, 12664, 12668, 12671, 12674, 12678, 12681, 12684, 12688, 12691, 12694, 12698, 12701, 12704, 12708, 12711, 12714, 12717, 12721, 12724, 12727, 12731, 12734, 12737, 12741, 12744, 12747, 12751, 12754, 12757, 12761, 12764, 12767, 12771, 12774, 12777, 12781, 12784, 12787, 12791, 12794, 12797, 12801, 12804, 12807, 12810, 12814, 12817, 12820, 12824, 12827, 12830, 12834, 12837, 12840, 12844, 12847, 12850, 12854, 12857, 12860, 12864, 12867, 12870, 12874, 12877, 12880, 12884, 12887, 12890, 12894, 12897, 12900, 12903, 12907, 12910, 12913, 12917, 12920, 12923, 12927, 12930, 12933, 12937, 12940, 12943, 12947, 12950, 12953, 12957, 12960, 12963, 12967, 12970, 12973, 12977, 12980, 12983, 12987, 12990, 12993, 12997, 13000, 13003, 13006, 13010, 13013, 13016, 13020, 13023, 13026, 13030, 13033, 13036, 13040, 13043, 13046, 13050, 13053, 13056, 13060, 13063, 13066, 13070, 13073, 13076, 13080, 13083, 13086, 13090, 13093, 13096, 13099, 13103, 13106, 13109, 13113, 13116, 13119, 13123, 13126, 13129, 13133, 13136, 13139, 13143, 13146, 13149, 13153, 13156, 13159, 13163, 13166, 13169, 13173, 13176, 13179, 13183, 13186, 13189, 13193, 13196, 13199, 13202, 13206, 13209, 13212, 13216, 13219, 13222, 13226, 13229, 13232, 13236, 13239, 13242, 13246, 13249, 13252, 13256, 13259, 13262, 13266, 13269, 13272, 13276, 13279, 13282, 13286, 13289, 13292, 13295, 13299, 13302, 13305, 13309, 13312, 13315, 13319, 13322, 13325, 13329, 13332, 13335, 13339, 13342, 13345, 13349, 13352, 13355, 13359, 13362, 13365, 13369, 13372, 13375, 13379, 13382, 13385, 13388, 13392, 13395, 13398, 13402, 13405, 13408, 13412, 13415, 13418, 13422, 13425, 13428, 13432, 13435, 13438, 13442, 13445, 13448, 13452, 13455, 13458, 13462, 13465, 13468, 13472, 13475, 13478, 13482, 13485, 13488, 13491, 13495, 13498, 13501, 13505, 13508, 13511, 13515, 13518, 13521, 13525, 13528, 13531, 13535, 13538, 13541, 13545, 13548, 13551, 13555, 13558, 13561, 13565, 13568, 13571, 13575, 13578, 13581, 13584, 13588, 13591, 13594, 13598, 13601, 13604, 13608, 13611, 13614, 13618, 13621, 13624, 13628, 13631, 13634, 13638, 13641, 13644, 13648, 13651, 13654, 13658, 13661, 13664, 13668, 13671, 13674, 13678, 13681, 13684, 13687, 13691, 13694, 13697, 13701, 13704, 13707, 13711, 13714, 13717, 13721, 13724, 13727, 13731, 13734, 13737, 13741, 13744, 13747, 13751, 13754, 13757, 13761, 13764, 13767, 13771, 13774, 13777, 13780, 13784, 13787, 13790, 13794, 13797, 13800, 13804, 13807, 13810, 13814, 13817, 13820, 13824, 13827, 13830, 13834, 13837, 13840, 13844, 13847, 13850, 13854, 13857, 13860, 13864, 13867, 13870, 13873, 13877, 13880, 13883, 13887, 13890, 13893, 13897, 13900, 13903, 13907, 13910, 13913, 13917, 13920, 13923, 13927, 13930, 13933, 13937, 13940, 13943, 13947, 13950, 13953, 13957, 13960, 13963, 13967, 13970, 13973, 13976, 13980, 13983, 13986, 13990, 13993, 13996, 14000, 14003, 14006, 14010, 14013, 14016, 14020, 14023, 14026, 14030, 14033, 14036, 14040, 14043, 14046, 14050, 14053, 14056, 14060, 14063, 14066, 14069, 14073, 14076, 14079, 14083, 14086, 14089, 14093, 14096, 14099, 14103, 14106, 14109, 14113, 14116, 14119, 14123, 14126, 14129, 14133, 14136, 14139, 14143, 14146, 14149, 14153, 14156, 14159, 14163, 14166, 14169, 14172, 14176, 14179, 14182, 14186, 14189, 14192, 14196, 14199, 14202, 14206, 14209, 14212, 14216, 14219, 14222, 14226, 14229, 14232, 14236, 14239, 14242, 14246, 14249, 14252, 14256, 14259, 14262, 14265, 14269, 14272, 14275, 14279, 14282, 14285, 14289, 14292, 14295, 14299, 14302, 14305, 14309, 14312, 14315, 14319, 14322, 14325, 14329, 14332, 14335, 14339, 14342, 14345, 14349, 14352, 14355, 14359, 14362, 14365, 14368, 14372, 14375, 14378, 14382, 14385, 14388, 14392, 14395, 14398, 14402, 14405, 14408, 14412, 14415, 14418, 14422, 14425, 14428, 14432, 14435, 14438, 14442, 14445, 14448, 14452, 14455, 14458, 14461, 14465, 14468, 14471, 14475, 14478, 14481, 14485, 14488, 14491, 14495, 14498, 14501, 14505, 14508, 14511, 14515, 14518, 14521, 14525, 14528, 14531, 14535, 14538, 14541, 14545, 14548, 14551, 14554, 14558, 14561, 14564, 14568, 14571, 14574, 14578, 14581, 14584, 14588, 14591, 14594, 14598, 14601, 14604, 14608, 14611, 14614, 14618, 14621, 14624, 14628, 14631, 14634, 14638, 14641, 14644, 14648, 14651, 14654, 14657, 14661, 14664, 14667, 14671, 14674, 14677, 14681, 14684, 14687, 14691, 14694, 14697, 14701, 14704, 14707, 14711, 14714, 14717, 14721, 14724, 14727, 14731, 14734, 14737, 14741, 14744, 14747, 14750, 14754, 14757, 14760, 14764, 14767, 14770, 14774, 14777, 14780, 14784, 14787, 14790, 14794, 14797, 14800, 14804, 14807, 14810, 14814, 14817, 14820, 14824, 14827, 14830, 14834, 14837, 14840, 14844, 14847, 14850, 14853, 14857, 14860, 14863, 14867, 14870, 14873, 14877, 14880, 14883, 14887, 14890, 14893, 14897, 14900, 14903, 14907, 14910, 14913, 14917, 14920, 14923, 14927, 14930, 14933, 14937, 14940, 14943, 14946, 14950, 14953, 14956, 14960, 14963, 14966, 14970, 14973, 14976, 14980, 14983, 14986, 14990, 14993, 14996, 15000, 15003, 15006, 15010, 15013, 15016, 15020, 15023, 15026, 15030, 15033, 15036, 15039, 15043, 15046, 15049, 15053, 15056, 15059, 15063, 15066, 15069, 15073, 15076, 15079, 15083, 15086, 15089, 15093, 15096, 15099, 15103, 15106, 15109, 15113, 15116, 15119, 15123, 15126, 15129, 15133, 15136, 15139, 15142, 15146, 15149, 15152, 15156, 15159, 15162, 15166, 15169, 15172, 15176, 15179, 15182, 15186, 15189, 15192, 15196, 15199, 15202, 15206, 15209, 15212, 15216, 15219, 15222, 15226, 15229, 15232, 15235, 15239, 15242, 15245, 15249, 15252, 15255, 15259, 15262, 15265, 15269, 15272, 15275, 15279, 15282, 15285, 15289, 15292, 15295, 15299, 15302, 15305, 15309, 15312, 15315, 15319, 15322, 15325, 15329, 15332, 15335, 15338, 15342, 15345, 15348, 15352, 15355, 15358, 15362, 15365, 15368, 15372, 15375, 15378, 15382, 15385, 15388, 15392, 15395, 15398, 15402, 15405, 15408, 15412, 15415, 15418, 15422, 15425, 15428, 15431, 15435, 15438, 15441, 15445, 15448, 15451, 15455, 15458, 15461, 15465, 15468, 15471, 15475, 15478, 15481, 15485, 15488, 15491, 15495, 15498, 15501, 15505, 15508, 15511, 15515, 15518, 15521, 15524, 15528, 15531, 15534, 15538, 15541, 15544, 15548, 15551, 15554, 15558, 15561, 15564, 15568, 15571, 15574, 15578, 15581, 15584, 15588, 15591, 15594, 15598, 15601, 15604, 15608, 15611, 15614, 15618, 15621, 15624, 15627, 15631, 15634, 15637, 15641, 15644, 15647, 15651, 15654, 15657, 15661, 15664, 15667, 15671, 15674, 15677, 15681, 15684, 15687, 15691, 15694, 15697, 15701, 15704, 15707, 15711, 15714, 15717, 15720, 15724, 15727, 15730, 15734, 15737, 15740, 15744, 15747, 15750, 15754, 15757, 15760, 15764, 15767, 15770, 15774, 15777, 15780, 15784, 15787, 15790, 15794, 15797, 15800, 15804, 15807, 15810, 15814, 15817, 15820, 15823, 15827, 15830, 15833, 15837, 15840, 15843, 15847, 15850, 15853, 15857, 15860, 15863, 15867, 15870, 15873, 15877, 15880, 15883, 15887, 15890, 15893, 15897, 15900, 15903, 15907, 15910, 15913, 15916, 15920, 15923, 15926, 15930, 15933, 15936, 15940, 15943, 15946, 15950, 15953, 15956, 15960, 15963, 15966, 15970, 15973, 15976, 15980, 15983, 15986, 15990, 15993, 15996, 16000, 16003, 16006, 16009, 16013, 16016, 16019, 16023, 16026, 16029, 16033, 16036, 16039, 16043, 16046, 16049, 16053, 16056, 16059, 16063, 16066, 16069, 16073, 16076, 16079, 16083, 16086, 16089, 16093, 16096, 16099, 16103, 16106, 16109, 16112, 16116, 16119, 16122, 16126, 16129, 16132, 16136, 16139, 16142, 16146, 16149, 16152, 16156, 16159, 16162, 16166, 16169, 16172, 16176, 16179, 16182, 16186, 16189, 16192, 16196, 16199, 16202, 16205, 16209, 16212, 16215, 16219, 16222, 16225, 16229, 16232, 16235, 16239, 16242, 16245, 16249, 16252, 16255, 16259, 16262, 16265, 16269, 16272, 16275, 16279, 16282, 16285, 16289, 16292, 16295, 16299, 16302, 16305, 16308, 16312, 16315, 16318, 16322, 16325, 16328, 16332, 16335, 16338, 16342, 16345, 16348, 16352, 16355, 16358, 16362, 16365, 16368, 16372, 16375, 16378, 16382, 16385, 16388, 16392, 16395, 16398, 16401, 16405, 16408, 16411, 16415, 16418, 16421, 16425, 16428, 16431, 16435, 16438, 16441, 16445, 16448, 16451, 16455, 16458, 16461, 16465, 16468, 16471, 16475, 16478, 16481, 16485, 16488, 16491, 16494, 16498, 16501, 16504, 16508, 16511, 16514, 16518, 16521, 16524, 16528, 16531, 16534, 16538, 16541, 16544, 16548, 16551, 16554, 16558, 16561, 16564, 16568, 16571, 16574, 16578, 16581, 16584, 16588, 16591, 16594, 16597, 16601, 16604, 16607, 16611, 16614, 16617, 16621, 16624, 16627, 16631, 16634, 16637, 16641, 16644, 16647, 16651, 16654, 16657, 16661, 16664, 16667, 16671, 16674, 16677, 16681, 16684, 16687, 16690, 16694, 16697, 16700, 16704, 16707, 16710, 16714, 16717, 16720, 16724, 16727, 16730, 16734, 16737, 16740, 16744, 16747, 16750, 16754, 16757, 16760, 16764, 16767, 16770, 16774, 16777, 16780, 16784, 16787, 16790, 16793, 16797, 16800, 16803, 16807, 16810, 16813, 16817, 16820, 16823, 16827, 16830, 16833, 16837, 16840, 16843, 16847, 16850, 16853, 16857, 16860, 16863, 16867, 16870, 16873, 16877, 16880, 16883, 16886, 16890, 16893, 16896, 16900, 16903, 16906, 16910, 16913, 16916, 16920, 16923, 16926, 16930, 16933, 16936, 16940, 16943, 16946, 16950, 16953, 16956, 16960, 16963, 16966, 16970, 16973, 16976, 16980, 16983, 16986, 16989, 16993, 16996, 16999, 17003, 17006, 17009, 17013, 17016, 17019, 17023, 17026, 17029, 17033, 17036, 17039, 17043, 17046, 17049, 17053, 17056, 17059, 17063, 17066, 17069, 17073, 17076, 17079, 17082, 17086, 17089, 17092, 17096, 17099, 17102, 17106, 17109, 17112, 17116, 17119, 17122, 17126, 17129, 17132, 17136, 17139, 17142, 17146, 17149, 17152, 17156, 17159, 17162, 17166, 17169, 17172, 17175, 17179, 17182, 17185, 17189, 17192, 17195, 17199, 17202, 17205, 17209, 17212, 17215, 17219, 17222, 17225, 17229, 17232, 17235, 17239, 17242, 17245, 17249, 17252, 17255, 17259, 17262, 17265, 17269, 17272, 17275, 17278, 17282, 17285, 17288, 17292, 17295, 17298, 17302, 17305, 17308, 17312, 17315, 17318, 17322, 17325, 17328, 17332, 17335, 17338, 17342, 17345, 17348, 17352, 17355, 17358, 17362, 17365, 17368, 17371, 17375, 17378, 17381, 17385, 17388, 17391, 17395, 17398, 17401, 17405, 17408, 17411, 17415, 17418, 17421, 17425, 17428, 17431, 17435, 17438, 17441, 17445, 17448, 17451, 17455, 17458, 17461, 17465, 17468, 17471, 17474, 17478, 17481, 17484, 17488, 17491, 17494, 17498, 17501, 17504, 17508, 17511, 17514, 17518, 17521, 17524, 17528, 17531, 17534, 17538, 17541, 17544, 17548, 17551, 17554, 17558, 17561, 17564, 17567, 17571, 17574, 17577, 17581, 17584, 17587, 17591, 17594, 17597, 17601, 17604, 17607, 17611, 17614, 17617, 17621, 17624, 17627, 17631, 17634, 17637, 17641, 17644, 17647, 17651, 17654, 17657, 17660, 17664, 17667, 17670, 17674, 17677, 17680, 17684, 17687, 17690, 17694, 17697, 17700, 17704, 17707, 17710, 17714, 17717, 17720, 17724, 17727, 17730, 17734, 17737, 17740, 17744, 17747, 17750, 17754, 17757, 17760, 17763, 17767, 17770, 17773, 17777, 17780, 17783, 17787, 17790, 17793, 17797, 17800, 17803, 17807, 17810, 17813, 17817, 17820, 17823, 17827, 17830, 17833, 17837, 17840, 17843, 17847, 17850, 17853, 17856, 17860, 17863, 17866, 17870, 17873, 17876, 17880, 17883, 17886, 17890, 17893, 17896, 17900, 17903, 17906, 17910, 17913, 17916, 17920, 17923, 17926, 17930, 17933, 17936, 17940, 17943, 17946, 17950, 17953, 17956, 17959, 17963, 17966, 17969, 17973, 17976, 17979, 17983, 17986, 17989, 17993, 17996, 17999, 18003, 18006, 18009, 18013, 18016, 18019, 18023, 18026, 18029, 18033, 18036, 18039, 18043, 18046, 18049, 18052, 18056, 18059, 18062, 18066, 18069, 18072, 18076, 18079, 18082, 18086, 18089, 18092, 18096, 18099, 18102, 18106, 18109, 18112, 18116, 18119, 18122, 18126, 18129, 18132, 18136, 18139, 18142, 18145, 18149, 18152, 18155, 18159, 18162, 18165, 18169, 18172, 18175, 18179, 18182, 18185, 18189, 18192, 18195, 18199, 18202, 18205, 18209, 18212, 18215, 18219, 18222, 18225, 18229, 18232, 18235, 18239, 18242, 18245, 18248, 18252, 18255, 18258, 18262, 18265, 18268, 18272, 18275, 18278, 18282, 18285, 18288, 18292, 18295, 18298, 18302, 18305, 18308, 18312, 18315, 18318, 18322, 18325, 18328, 18332, 18335, 18338, 18341, 18345, 18348, 18351, 18355, 18358, 18361, 18365, 18368, 18371, 18375, 18378, 18381, 18385, 18388, 18391, 18395, 18398, 18401, 18405, 18408, 18411, 18415, 18418, 18421, 18425, 18428, 18431, 18435, 18438, 18441, 18444, 18448, 18451, 18454, 18458, 18461, 18464, 18468, 18471, 18474, 18478, 18481, 18484, 18488, 18491, 18494, 18498, 18501, 18504, 18508, 18511, 18514, 18518, 18521, 18524, 18528, 18531, 18534, 18537, 18541, 18544, 18547, 18551, 18554, 18557, 18561, 18564, 18567, 18571, 18574, 18577, 18581, 18584, 18587, 18591, 18594, 18597, 18601, 18604, 18607, 18611, 18614, 18617, 18621, 18624, 18627, 18630, 18634, 18637, 18640, 18644, 18647, 18650, 18654, 18657, 18660, 18664, 18667, 18670, 18674, 18677, 18680, 18684, 18687, 18690, 18694, 18697, 18700, 18704, 18707, 18710, 18714, 18717, 18720, 18724, 18727, 18730, 18733, 18737, 18740, 18743, 18747, 18750, 18753, 18757, 18760, 18763, 18767, 18770, 18773, 18777, 18780, 18783, 18787, 18790, 18793, 18797, 18800, 18803, 18807, 18810, 18813, 18817, 18820, 18823, 18826, 18830, 18833, 18836, 18840, 18843, 18846, 18850, 18853, 18856, 18860, 18863, 18866, 18870, 18873, 18876, 18880, 18883, 18886, 18890, 18893, 18896, 18900, 18903, 18906, 18910, 18913, 18916, 18920, 18923, 18926, 18929, 18933, 18936, 18939, 18943, 18946, 18949, 18953, 18956, 18959, 18963, 18966, 18969, 18973, 18976, 18979, 18983, 18986, 18989, 18993, 18996, 18999, 19003, 19006, 19009, 19013, 19016, 19019, 19022, 19026, 19029, 19032, 19036, 19039, 19042, 19046, 19049, 19052, 19056, 19059, 19062, 19066, 19069, 19072, 19076, 19079, 19082, 19086, 19089, 19092, 19096, 19099, 19102, 19106, 19109, 19112, 19116, 19119, 19122, 19125, 19129, 19132, 19135, 19139, 19142, 19145, 19149, 19152, 19155, 19159, 19162, 19165, 19169, 19172, 19175, 19179, 19182, 19185, 19189, 19192, 19195, 19199, 19202, 19205, 19209, 19212, 19215, 19218, 19222, 19225, 19228, 19232, 19235, 19238, 19242, 19245, 19248, 19252, 19255, 19258, 19262, 19265, 19268, 19272, 19275, 19278, 19282, 19285, 19288, 19292, 19295, 19298, 19302, 19305, 19308, 19311, 19315, 19318, 19321, 19325, 19328, 19331, 19335, 19338, 19341, 19345, 19348, 19351, 19355, 19358, 19361, 19365, 19368, 19371, 19375, 19378, 19381, 19385, 19388, 19391, 19395, 19398, 19401, 19405, 19408, 19411, 19414, 19418, 19421, 19424, 19428, 19431, 19434, 19438, 19441, 19444, 19448, 19451, 19454, 19458, 19461, 19464, 19468, 19471, 19474, 19478, 19481, 19484, 19488, 19491, 19494, 19498, 19501, 19504, 19507, 19511, 19514, 19517, 19521, 19524, 19527, 19531, 19534, 19537, 19541, 19544, 19547, 19551, 19554, 19557, 19561, 19564, 19567, 19571, 19574, 19577, 19581, 19584, 19587, 19591, 19594, 19597, 19601, 19604, 19607, 19610, 19614, 19617, 19620, 19624, 19627, 19630, 19634, 19637, 19640, 19644, 19647, 19650, 19654, 19657, 19660, 19664, 19667, 19670, 19674, 19677, 19680, 19684, 19687, 19690, 19694, 19697, 19700, 19703, 19707, 19710, 19713, 19717, 19720, 19723, 19727, 19730, 19733, 19737, 19740, 19743, 19747, 19750, 19753, 19757, 19760, 19763, 19767, 19770, 19773, 19777, 19780, 19783, 19787, 19790, 19793, 19796, 19800, 19803, 19806, 19810, 19813, 19816, 19820, 19823, 19826, 19830, 19833, 19836, 19840, 19843, 19846, 19850, 19853, 19856, 19860, 19863, 19866, 19870, 19873, 19876, 19880, 19883, 19886, 19890, 19893, 19896, 19899, 19903, 19906, 19909, 19913, 19916, 19919, 19923, 19926, 19929, 19933, 19936, 19939, 19943, 19946, 19949, 19953, 19956, 19959, 19963, 19966, 19969, 19973, 19976, 19979, 19983, 19986, 19989, 19992, 19996, 19999, 20002, 20006, 20009, 20012, 20016, 20019, 20022, 20026, 20029, 20032, 20036, 20039, 20042, 20046, 20049, 20052, 20056, 20059, 20062, 20066, 20069, 20072, 20076, 20079, 20082, 20086, 20089, 20092, 20095, 20099, 20102, 20105, 20109, 20112, 20115, 20119, 20122, 20125, 20129, 20132, 20135, 20139, 20142, 20145, 20149, 20152, 20155, 20159, 20162, 20165, 20169, 20172, 20175, 20179, 20182, 20185, 20188, 20192, 20195, 20198, 20202, 20205, 20208, 20212, 20215, 20218, 20222, 20225, 20228, 20232, 20235, 20238, 20242, 20245, 20248, 20252, 20255, 20258, 20262, 20265, 20268, 20272, 20275, 20278, 20281, 20285, 20288, 20291, 20295, 20298, 20301, 20305, 20308, 20311, 20315, 20318, 20321, 20325, 20328, 20331, 20335, 20338, 20341, 20345, 20348, 20351, 20355, 20358, 20361, 20365, 20368, 20371, 20375, 20378, 20381, 20384, 20388, 20391, 20394, 20398, 20401, 20404, 20408, 20411, 20414, 20418, 20421, 20424, 20428, 20431, 20434, 20438, 20441, 20444, 20448, 20451, 20454, 20458, 20461, 20464, 20468, 20471, 20474, 20477, 20481, 20484, 20487, 20491, 20494, 20497, 20501, 20504, 20507, 20511, 20514, 20517, 20521, 20524, 20527, 20531, 20534, 20537, 20541, 20544, 20547, 20551, 20554, 20557, 20561, 20564, 20567, 20571, 20574, 20577, 20580, 20584, 20587, 20590, 20594, 20597, 20600, 20604, 20607, 20610, 20614, 20617, 20620, 20624, 20627, 20630, 20634, 20637, 20640, 20644, 20647, 20650, 20654, 20657, 20660, 20664, 20667, 20670, 20673, 20677, 20680, 20683, 20687, 20690, 20693, 20697, 20700, 20703, 20707, 20710, 20713, 20717, 20720, 20723, 20727, 20730, 20733, 20737, 20740, 20743, 20747, 20750, 20753, 20757, 20760, 20763, 20766, 20770, 20773, 20776, 20780, 20783, 20786, 20790, 20793, 20796, 20800, 20803, 20806, 20810, 20813, 20816, 20820, 20823, 20826, 20830, 20833, 20836, 20840, 20843, 20846, 20850, 20853, 20856, 20860, 20863, 20866, 20869, 20873, 20876, 20879, 20883, 20886, 20889, 20893, 20896, 20899, 20903, 20906, 20909, 20913, 20916, 20919, 20923, 20926, 20929, 20933, 20936, 20939, 20943, 20946, 20949, 20953, 20956, 20959, 20962, 20966, 20969, 20972, 20976, 20979, 20982, 20986, 20989, 20992, 20996, 20999, 21002, 21006, 21009, 21012, 21016, 21019, 21022, 21026, 21029, 21032, 21036, 21039, 21042, 21046, 21049, 21052, 21056, 21059, 21062, 21065, 21069, 21072, 21075, 21079, 21082, 21085, 21089, 21092, 21095, 21099, 21102, 21105, 21109, 21112, 21115, 21119, 21122, 21125, 21129, 21132, 21135, 21139, 21142, 21145, 21149, 21152, 21155, 21158, 21162, 21165, 21168, 21172, 21175, 21178, 21182, 21185, 21188, 21192, 21195, 21198, 21202, 21205, 21208, 21212, 21215, 21218, 21222, 21225, 21228, 21232, 21235, 21238, 21242, 21245, 21248, 21252, 21255, 21258, 21261, 21265, 21268, 21271, 21275, 21278, 21281, 21285, 21288, 21291, 21295, 21298, 21301, 21305, 21308, 21311, 21315, 21318, 21321, 21325, 21328, 21331, 21335, 21338, 21341, 21345, 21348, 21351, 21354, 21358, 21361, 21364, 21368, 21371, 21374, 21378, 21381, 21384, 21388, 21391, 21394, 21398, 21401, 21404, 21408, 21411, 21414, 21418, 21421, 21424, 21428, 21431, 21434, 21438, 21441, 21444, 21447, 21451, 21454, 21457, 21461, 21464, 21467, 21471, 21474, 21477, 21481, 21484, 21487, 21491, 21494, 21497, 21501, 21504, 21507, 21511, 21514, 21517, 21521, 21524, 21527, 21531, 21534, 21537, 21541, 21544, 21547, 21550, 21554, 21557, 21560, 21564, 21567, 21570, 21574, 21577, 21580, 21584, 21587, 21590, 21594, 21597, 21600, 21604, 21607, 21610, 21614, 21617, 21620, 21624, 21627, 21630, 21634, 21637, 21640, 21643, 21647, 21650, 21653, 21657, 21660, 21663, 21667, 21670, 21673, 21677, 21680, 21683, 21687, 21690, 21693, 21697, 21700, 21703, 21707, 21710, 21713, 21717, 21720, 21723, 21727, 21730, 21733, 21737, 21740, 21743, 21746, 21750, 21753, 21756, 21760, 21763, 21766, 21770, 21773, 21776, 21780, 21783, 21786, 21790, 21793, 21796, 21800, 21803, 21806, 21810, 21813, 21816, 21820, 21823, 21826, 21830, 21833, 21836, 21839, 21843, 21846, 21849, 21853, 21856, 21859, 21863, 21866, 21869, 21873, 21876, 21879, 21883, 21886, 21889, 21893, 21896, 21899, 21903, 21906, 21909, 21913, 21916, 21919, 21923, 21926, 21929, 21932, 21936, 21939, 21942, 21946, 21949, 21952, 21956, 21959, 21962, 21966, 21969, 21972, 21976, 21979, 21982, 21986, 21989, 21992, 21996, 21999, 22002, 22006, 22009, 22012, 22016, 22019, 22022, 22026, 22029, 22032, 22035, 22039, 22042, 22045, 22049, 22052, 22055, 22059, 22062, 22065, 22069, 22072, 22075, 22079, 22082, 22085, 22089, 22092, 22095, 22099, 22102, 22105, 22109, 22112, 22115, 22119, 22122, 22125, 22128, 22132, 22135, 22138, 22142, 22145, 22148, 22152, 22155, 22158, 22162, 22165, 22168, 22172, 22175, 22178, 22182, 22185, 22188, 22192, 22195, 22198, 22202, 22205, 22208, 22212, 22215, 22218, 22222, 22225, 22228, 22231, 22235, 22238, 22241, 22245, 22248, 22251, 22255, 22258, 22261, 22265, 22268, 22271, 22275, 22278, 22281, 22285, 22288, 22291, 22295, 22298, 22301, 22305, 22308, 22311, 22315, 22318, 22321, 22324, 22328, 22331, 22334, 22338, 22341, 22344, 22348, 22351, 22354, 22358, 22361, 22364, 22368, 22371, 22374, 22378, 22381, 22384, 22388, 22391, 22394, 22398, 22401, 22404, 22408, 22411, 22414, 22417, 22421, 22424, 22427, 22431, 22434, 22437, 22441, 22444, 22447, 22451, 22454, 22457, 22461, 22464, 22467, 22471, 22474, 22477, 22481, 22484, 22487, 22491, 22494, 22497, 22501, 22504, 22507, 22511, 22514, 22517, 22520, 22524, 22527, 22530, 22534, 22537, 22540, 22544, 22547, 22550, 22554, 22557, 22560, 22564, 22567, 22570, 22574, 22577, 22580, 22584, 22587, 22590, 22594, 22597, 22600, 22604, 22607, 22610, 22613, 22617, 22620, 22623, 22627, 22630, 22633, 22637, 22640, 22643, 22647, 22650, 22653, 22657, 22660, 22663, 22667, 22670, 22673, 22677, 22680, 22683, 22687, 22690, 22693, 22697, 22700, 22703, 22707, 22710, 22713, 22716, 22720, 22723, 22726, 22730, 22733, 22736, 22740, 22743, 22746, 22750, 22753, 22756, 22760, 22763, 22766, 22770, 22773, 22776, 22780, 22783, 22786, 22790, 22793, 22796, 22800, 22803, 22806, 22809, 22813, 22816, 22819, 22823, 22826, 22829, 22833, 22836, 22839, 22843, 22846, 22849, 22853, 22856, 22859, 22863, 22866, 22869, 22873, 22876, 22879, 22883, 22886, 22889, 22893, 22896, 22899, 22902, 22906, 22909, 22912, 22916, 22919, 22922, 22926, 22929, 22932, 22936, 22939, 22942, 22946, 22949, 22952, 22956, 22959, 22962, 22966, 22969, 22972, 22976, 22979, 22982, 22986, 22989, 22992, 22996, 22999, 23002, 23005, 23009, 23012, 23015, 23019, 23022, 23025, 23029, 23032, 23035, 23039, 23042, 23045, 23049, 23052, 23055, 23059, 23062, 23065, 23069, 23072, 23075, 23079, 23082, 23085, 23089, 23092, 23095, 23098, 23102, 23105, 23108, 23112, 23115, 23118, 23122, 23125, 23128, 23132, 23135, 23138, 23142, 23145, 23148, 23152, 23155, 23158, 23162, 23165, 23168, 23172, 23175, 23178, 23182, 23185, 23188, 23192, 23195, 23198, 23201, 23205, 23208, 23211, 23215, 23218, 23221, 23225, 23228, 23231, 23235, 23238, 23241, 23245, 23248, 23251, 23255, 23258, 23261, 23265, 23268, 23271, 23275, 23278, 23281, 23285, 23288, 23291, 23294, 23298, 23301, 23304, 23308, 23311, 23314, 23318, 23321, 23324, 23328, 23331, 23334, 23338, 23341, 23344, 23348, 23351, 23354, 23358, 23361, 23364, 23368, 23371, 23374, 23378, 23381, 23384, 23388, 23391, 23394, 23397, 23401, 23404, 23407, 23411, 23414, 23417, 23421, 23424, 23427, 23431, 23434, 23437, 23441, 23444, 23447, 23451, 23454, 23457, 23461, 23464, 23467, 23471, 23474, 23477, 23481, 23484, 23487, 23490, 23494, 23497, 23500, 23504, 23507, 23510, 23514, 23517, 23520, 23524, 23527, 23530, 23534, 23537, 23540, 23544, 23547, 23550, 23554, 23557, 23560, 23564, 23567, 23570, 23574, 23577, 23580, 23583, 23587, 23590, 23593, 23597, 23600, 23603, 23607, 23610, 23613, 23617, 23620, 23623, 23627, 23630, 23633, 23637, 23640, 23643, 23647, 23650, 23653, 23657, 23660, 23663, 23667, 23670, 23673, 23677, 23680, 23683, 23686, 23690, 23693, 23696, 23700, 23703, 23706, 23710, 23713, 23716, 23720, 23723, 23726, 23730, 23733, 23736, 23740, 23743, 23746, 23750, 23753, 23756, 23760, 23763, 23766, 23770, 23773, 23776, 23779, 23783, 23786, 23789, 23793, 23796, 23799, 23803, 23806, 23809, 23813, 23816, 23819, 23823, 23826, 23829, 23833, 23836, 23839, 23843, 23846, 23849, 23853, 23856, 23859, 23863, 23866, 23869, 23873, 23876, 23879, 23882, 23886, 23889, 23892, 23896, 23899, 23902, 23906, 23909, 23912, 23916, 23919, 23922, 23926, 23929, 23932, 23936, 23939, 23942, 23946, 23949, 23952, 23956, 23959, 23962, 23966, 23969, 23972, 23975, 23979, 23982, 23985, 23989, 23992, 23995, 23999, 24002, 24005, 24009, 24012, 24015, 24019, 24022, 24025, 24029, 24032, 24035, 24039, 24042, 24045, 24049, 24052, 24055, 24059, 24062, 24065, 24068, 24072, 24075, 24078, 24082, 24085, 24088, 24092, 24095, 24098, 24102, 24105, 24108, 24112, 24115, 24118, 24122, 24125, 24128, 24132, 24135, 24138, 24142, 24145, 24148, 24152, 24155, 24158, 24162, 24165, 24168, 24171, 24175, 24178, 24181, 24185, 24188, 24191, 24195, 24198, 24201, 24205, 24208, 24211, 24215, 24218, 24221, 24225, 24228, 24231, 24235, 24238, 24241, 24245, 24248, 24251, 24255, 24258, 24261, 24264, 24268, 24271, 24274, 24278, 24281, 24284, 24288, 24291, 24294, 24298, 24301, 24304, 24308, 24311, 24314, 24318, 24321, 24324, 24328, 24331, 24334, 24338, 24341, 24344, 24348, 24351, 24354, 24358, 24361, 24364, 24367, 24371, 24374, 24377, 24381, 24384, 24387, 24391, 24394, 24397, 24401, 24404, 24407, 24411, 24414, 24417, 24421, 24424, 24427, 24431, 24434, 24437, 24441, 24444, 24447, 24451, 24454, 24457, 24460, 24464, 24467, 24470, 24474, 24477, 24480, 24484, 24487, 24490, 24494, 24497, 24500, 24504, 24507, 24510, 24514, 24517, 24520, 24524, 24527, 24530, 24534, 24537, 24540, 24544, 24547, 24550, 24553, 24557, 24560, 24563, 24567, 24570, 24573, 24577, 24580, 24583, 24587, 24590, 24593, 24597, 24600, 24603, 24607, 24610, 24613, 24617, 24620, 24623, 24627, 24630, 24633, 24637, 24640, 24643, 24647, 24650, 24653, 24656, 24660, 24663, 24666, 24670, 24673, 24676, 24680, 24683, 24686, 24690, 24693, 24696, 24700, 24703, 24706, 24710, 24713, 24716, 24720, 24723, 24726, 24730, 24733, 24736, 24740, 24743, 24746, 24749, 24753, 24756, 24759, 24763, 24766, 24769, 24773, 24776, 24779, 24783, 24786, 24789, 24793, 24796, 24799, 24803, 24806, 24809, 24813, 24816, 24819, 24823, 24826, 24829, 24833, 24836, 24839, 24843, 24846, 24849, 24852, 24856, 24859, 24862, 24866, 24869, 24872, 24876, 24879, 24882, 24886, 24889, 24892, 24896, 24899, 24902, 24906, 24909, 24912, 24916, 24919, 24922, 24926, 24929, 24932, 24936, 24939, 24942, 24945, 24949, 24952, 24955, 24959, 24962, 24965, 24969, 24972, 24975, 24979, 24982, 24985, 24989, 24992, 24995, 24999, 25002, 25005, 25009, 25012, 25015, 25019, 25022, 25025, 25029, 25032, 25035, 25038, 25042, 25045, 25048, 25052, 25055, 25058, 25062, 25065, 25068, 25072, 25075, 25078, 25082, 25085, 25088, 25092, 25095, 25098, 25102, 25105, 25108, 25112, 25115, 25118, 25122, 25125, 25128, 25132, 25135, 25138, 25141, 25145, 25148, 25151, 25155, 25158, 25161, 25165, 25168, 25171, 25175, 25178, 25181, 25185, 25188, 25191, 25195, 25198, 25201, 25205, 25208, 25211, 25215, 25218, 25221, 25225, 25228, 25231, 25234, 25238, 25241, 25244, 25248, 25251, 25254, 25258, 25261, 25264, 25268, 25271, 25274, 25278, 25281, 25284, 25288, 25291, 25294, 25298, 25301, 25304, 25308, 25311, 25314, 25318, 25321, 25324, 25328, 25331, 25334, 25337, 25341, 25344, 25347, 25351, 25354, 25357, 25361, 25364, 25367, 25371, 25374, 25377, 25381, 25384, 25387, 25391, 25394, 25397, 25401, 25404, 25407, 25411, 25414, 25417, 25421, 25424, 25427, 25430, 25434, 25437, 25440, 25444, 25447, 25450, 25454, 25457, 25460, 25464, 25467, 25470, 25474, 25477, 25480, 25484, 25487, 25490, 25494, 25497, 25500, 25504, 25507, 25510, 25514, 25517, 25520, 25524, 25527, 25530, 25533, 25537, 25540, 25543, 25547, 25550, 25553, 25557, 25560, 25563, 25567, 25570, 25573, 25577, 25580, 25583, 25587, 25590, 25593, 25597, 25600, 25603, 25607, 25610, 25613, 25617, 25620, 25623, 25626, 25630, 25633, 25636, 25640, 25643, 25646, 25650, 25653, 25656, 25660, 25663, 25666, 25670, 25673, 25676, 25680, 25683, 25686, 25690, 25693, 25696, 25700, 25703, 25706, 25710, 25713, 25716, 25719, 25723, 25726, 25729, 25733, 25736, 25739, 25743, 25746, 25749, 25753, 25756, 25759, 25763, 25766, 25769, 25773, 25776, 25779, 25783, 25786, 25789, 25793, 25796, 25799, 25803, 25806, 25809, 25813, 25816, 25819, 25822, 25826, 25829, 25832, 25836, 25839, 25842, 25846, 25849, 25852, 25856, 25859, 25862, 25866, 25869, 25872, 25876, 25879, 25882, 25886, 25889, 25892, 25896, 25899, 25902, 25906, 25909, 25912, 25915, 25919, 25922, 25925, 25929, 25932, 25935, 25939, 25942, 25945, 25949, 25952, 25955, 25959, 25962, 25965, 25969, 25972, 25975, 25979, 25982, 25985, 25989, 25992, 25995, 25999, 26002, 26005, 26009, 26012, 26015, 26018, 26022, 26025, 26028, 26032, 26035, 26038, 26042, 26045, 26048, 26052, 26055, 26058, 26062, 26065, 26068, 26072, 26075, 26078, 26082, 26085, 26088, 26092, 26095, 26098, 26102, 26105, 26108, 26111, 26115, 26118, 26121, 26125, 26128, 26131, 26135, 26138, 26141, 26145, 26148, 26151, 26155, 26158, 26161, 26165, 26168, 26171, 26175, 26178, 26181, 26185, 26188, 26191, 26195, 26198, 26201, 26204, 26208, 26211, 26214, 26218, 26221, 26224, 26228, 26231, 26234, 26238, 26241, 26244, 26248, 26251, 26254, 26258, 26261, 26264, 26268, 26271, 26274, 26278, 26281, 26284, 26288, 26291, 26294, 26298, 26301, 26304, 26307, 26311, 26314, 26317, 26321, 26324, 26327, 26331, 26334, 26337, 26341, 26344, 26347, 26351, 26354, 26357, 26361, 26364, 26367, 26371, 26374, 26377, 26381, 26384, 26387, 26391, 26394, 26397, 26400, 26404, 26407, 26410, 26414, 26417, 26420, 26424, 26427, 26430, 26434, 26437, 26440, 26444, 26447, 26450, 26454, 26457, 26460, 26464, 26467, 26470, 26474, 26477, 26480, 26484, 26487, 26490, 26494, 26497, 26500, 26503, 26507, 26510, 26513, 26517, 26520, 26523, 26527, 26530, 26533, 26537, 26540, 26543, 26547, 26550, 26553, 26557, 26560, 26563, 26567, 26570, 26573, 26577, 26580, 26583, 26587, 26590, 26593, 26596, 26600, 26603, 26606, 26610, 26613, 26616, 26620, 26623, 26626, 26630, 26633, 26636, 26640, 26643, 26646, 26650, 26653, 26656, 26660, 26663, 26666, 26670, 26673, 26676, 26680, 26683, 26686, 26689, 26693, 26696, 26699, 26703, 26706, 26709, 26713, 26716, 26719, 26723, 26726, 26729, 26733, 26736, 26739, 26743, 26746, 26749, 26753, 26756, 26759, 26763, 26766, 26769, 26773, 26776, 26779, 26783, 26786, 26789, 26792, 26796, 26799, 26802, 26806, 26809, 26812, 26816, 26819, 26822, 26826, 26829, 26832, 26836, 26839, 26842, 26846, 26849, 26852, 26856, 26859, 26862, 26866, 26869, 26872, 26876, 26879, 26882, 26885, 26889, 26892, 26895, 26899, 26902, 26905, 26909, 26912, 26915, 26919, 26922, 26925, 26929, 26932, 26935, 26939, 26942, 26945, 26949, 26952, 26955, 26959, 26962, 26965, 26969, 26972, 26975, 26979, 26982, 26985, 26988, 26992, 26995, 26998, 27002, 27005, 27008, 27012, 27015, 27018, 27022, 27025, 27028, 27032, 27035, 27038, 27042, 27045, 27048, 27052, 27055, 27058, 27062, 27065, 27068, 27072, 27075, 27078, 27081, 27085, 27088, 27091, 27095, 27098, 27101, 27105, 27108, 27111, 27115, 27118, 27121, 27125, 27128, 27131, 27135, 27138, 27141, 27145, 27148, 27151, 27155, 27158, 27161, 27165, 27168, 27171, 27174, 27178, 27181, 27184, 27188, 27191, 27194, 27198, 27201, 27204, 27208, 27211, 27214, 27218, 27221, 27224, 27228, 27231, 27234, 27238, 27241, 27244, 27248, 27251, 27254, 27258, 27261, 27264, 27268, 27271, 27274, 27277, 27281, 27284, 27287, 27291, 27294, 27297, 27301, 27304, 27307, 27311, 27314, 27317, 27321, 27324, 27327, 27331, 27334, 27337, 27341, 27344, 27347, 27351, 27354, 27357, 27361, 27364, 27367, 27370, 27374, 27377, 27380, 27384, 27387, 27390, 27394, 27397, 27400, 27404, 27407, 27410, 27414, 27417, 27420, 27424, 27427, 27430, 27434, 27437, 27440, 27444, 27447, 27450, 27454, 27457, 27460, 27464, 27467, 27470, 27473, 27477, 27480, 27483, 27487, 27490, 27493, 27497, 27500, 27503, 27507, 27510, 27513, 27517, 27520, 27523, 27527, 27530, 27533, 27537, 27540, 27543, 27547, 27550, 27553, 27557, 27560, 27563, 27566, 27570, 27573, 27576, 27580, 27583, 27586, 27590, 27593, 27596, 27600, 27603, 27606, 27610, 27613, 27616, 27620, 27623, 27626, 27630, 27633, 27636, 27640, 27643, 27646, 27650, 27653, 27656, 27660, 27663, 27666, 27669, 27673, 27676, 27679, 27683, 27686, 27689, 27693, 27696, 27699, 27703, 27706, 27709, 27713, 27716, 27719, 27723, 27726, 27729, 27733, 27736, 27739, 27743, 27746, 27749, 27753, 27756, 27759, 27762, 27766, 27769, 27772, 27776, 27779, 27782, 27786, 27789, 27792, 27796, 27799, 27802, 27806, 27809, 27812, 27816, 27819, 27822, 27826, 27829, 27832, 27836, 27839, 27842, 27846, 27849, 27852, 27855, 27859, 27862, 27865, 27869, 27872, 27875, 27879, 27882, 27885, 27889, 27892, 27895, 27899, 27902, 27905, 27909, 27912, 27915, 27919, 27922, 27925, 27929, 27932, 27935, 27939, 27942, 27945, 27949, 27952, 27955, 27958, 27962, 27965, 27968, 27972, 27975, 27978, 27982, 27985, 27988, 27992, 27995, 27998, 28002, 28005, 28008, 28012, 28015, 28018, 28022, 28025, 28028, 28032, 28035, 28038, 28042, 28045, 28048, 28051, 28055, 28058, 28061, 28065, 28068, 28071, 28075, 28078, 28081, 28085, 28088, 28091, 28095, 28098, 28101, 28105, 28108, 28111, 28115, 28118, 28121, 28125, 28128, 28131, 28135, 28138, 28141, 28145, 28148, 28151, 28154, 28158, 28161, 28164, 28168, 28171, 28174, 28178, 28181, 28184, 28188, 28191, 28194, 28198, 28201, 28204, 28208, 28211, 28214, 28218, 28221, 28224, 28228, 28231, 28234, 28238, 28241, 28244, 28247, 28251, 28254, 28257, 28261, 28264, 28267, 28271, 28274, 28277, 28281, 28284, 28287, 28291, 28294, 28297, 28301, 28304, 28307, 28311, 28314, 28317, 28321, 28324, 28327, 28331, 28334, 28337, 28340, 28344, 28347, 28350, 28354, 28357, 28360, 28364, 28367, 28370, 28374, 28377, 28380, 28384, 28387, 28390, 28394, 28397, 28400, 28404, 28407, 28410, 28414, 28417, 28420, 28424, 28427, 28430, 28434, 28437, 28440, 28443, 28447, 28450, 28453, 28457, 28460, 28463, 28467, 28470, 28473, 28477, 28480, 28483, 28487, 28490, 28493, 28497, 28500, 28503, 28507, 28510, 28513, 28517, 28520, 28523, 28527, 28530, 28533, 28536, 28540, 28543, 28546, 28550, 28553, 28556, 28560, 28563, 28566, 28570, 28573, 28576, 28580, 28583, 28586, 28590, 28593, 28596, 28600, 28603, 28606, 28610, 28613, 28616, 28620, 28623, 28626, 28630, 28633, 28636, 28639, 28643, 28646, 28649, 28653, 28656, 28659, 28663, 28666, 28669, 28673, 28676, 28679, 28683, 28686, 28689, 28693, 28696, 28699, 28703, 28706, 28709, 28713, 28716, 28719, 28723, 28726, 28729, 28732, 28736, 28739, 28742, 28746, 28749, 28752, 28756, 28759, 28762, 28766, 28769, 28772, 28776, 28779, 28782, 28786, 28789, 28792, 28796, 28799, 28802, 28806, 28809, 28812, 28816, 28819, 28822, 28825, 28829, 28832, 28835, 28839, 28842, 28845, 28849, 28852, 28855, 28859, 28862, 28865, 28869, 28872, 28875, 28879, 28882, 28885, 28889, 28892, 28895, 28899, 28902, 28905, 28909, 28912, 28915, 28919, 28922, 28925, 28928, 28932, 28935, 28938, 28942, 28945, 28948, 28952, 28955, 28958, 28962, 28965, 28968, 28972, 28975, 28978, 28982, 28985, 28988, 28992, 28995, 28998, 29002, 29005, 29008, 29012, 29015, 29018, 29021, 29025, 29028, 29031, 29035, 29038, 29041, 29045, 29048, 29051, 29055, 29058, 29061, 29065, 29068, 29071, 29075, 29078, 29081, 29085, 29088, 29091, 29095, 29098, 29101, 29105, 29108, 29111, 29115, 29118, 29121, 29124, 29128, 29131, 29134, 29138, 29141, 29144, 29148, 29151, 29154, 29158, 29161, 29164, 29168, 29171, 29174, 29178, 29181, 29184, 29188, 29191, 29194, 29198, 29201, 29204, 29208, 29211, 29214, 29217, 29221, 29224, 29227, 29231, 29234, 29237, 29241, 29244, 29247, 29251, 29254, 29257, 29261, 29264, 29267, 29271, 29274, 29277, 29281, 29284, 29287, 29291, 29294, 29297, 29301, 29304, 29307, 29310, 29314, 29317, 29320, 29324, 29327, 29330, 29334, 29337, 29340, 29344, 29347, 29350, 29354, 29357, 29360, 29364, 29367, 29370, 29374, 29377, 29380, 29384, 29387, 29390, 29394, 29397, 29400, 29404, 29407, 29410, 29413, 29417, 29420, 29423, 29427, 29430, 29433, 29437, 29440, 29443, 29447, 29450, 29453, 29457, 29460, 29463, 29467, 29470, 29473, 29477, 29480, 29483, 29487, 29490, 29493, 29497, 29500, 29503, 29506, 29510, 29513, 29516, 29520, 29523, 29526, 29530, 29533, 29536, 29540, 29543, 29546, 29550, 29553, 29556, 29560, 29563, 29566, 29570, 29573, 29576, 29580, 29583, 29586, 29590, 29593, 29596, 29600, 29603, 29606, 29609, 29613, 29616, 29619, 29623, 29626, 29629, 29633, 29636, 29639, 29643, 29646, 29649, 29653, 29656, 29659, 29663, 29666, 29669, 29673, 29676, 29679, 29683, 29686, 29689, 29693, 29696, 29699, 29702, 29706, 29709, 29712, 29716, 29719, 29722, 29726, 29729, 29732, 29736, 29739, 29742, 29746, 29749, 29752, 29756, 29759, 29762, 29766, 29769, 29772, 29776, 29779, 29782, 29786, 29789, 29792, 29796, 29799, 29802, 29805, 29809, 29812, 29815, 29819, 29822, 29825, 29829, 29832, 29835, 29839, 29842, 29845, 29849, 29852, 29855, 29859, 29862, 29865, 29869, 29872, 29875, 29879, 29882, 29885, 29889, 29892, 29895, 29898, 29902, 29905, 29908, 29912, 29915, 29918, 29922, 29925, 29928, 29932, 29935, 29938, 29942, 29945, 29948, 29952, 29955, 29958, 29962, 29965, 29968, 29972, 29975, 29978, 29982, 29985, 29988, 29991, 29995, 29998, 30001, 30005, 30008, 30011, 30015, 30018, 30021, 30025, 30028, 30031, 30035, 30038, 30041, 30045, 30048, 30051, 30055, 30058, 30061, 30065, 30068, 30071, 30075, 30078, 30081, 30085, 30088, 30091, 30094, 30098, 30101, 30104, 30108, 30111, 30114, 30118, 30121, 30124, 30128, 30131, 30134, 30138, 30141, 30144, 30148, 30151, 30154, 30158, 30161, 30164, 30168, 30171, 30174, 30178, 30181, 30184, 30187, 30191, 30194, 30197, 30201, 30204, 30207, 30211, 30214, 30217, 30221, 30224, 30227, 30231, 30234, 30237, 30241, 30244, 30247, 30251, 30254, 30257, 30261, 30264, 30267, 30271, 30274, 30277, 30281, 30284, 30287, 30290, 30294, 30297, 30300, 30304, 30307, 30310, 30314, 30317, 30320, 30324, 30327, 30330, 30334, 30337, 30340, 30344, 30347, 30350, 30354, 30357, 30360, 30364, 30367, 30370, 30374, 30377, 30380, 30383, 30387, 30390, 30393, 30397, 30400, 30403, 30407, 30410, 30413, 30417, 30420, 30423, 30427, 30430, 30433, 30437, 30440, 30443, 30447, 30450, 30453, 30457, 30460, 30463, 30467, 30470, 30473, 30476, 30480, 30483, 30486, 30490, 30493, 30496, 30500, 30503, 30506, 30510, 30513, 30516, 30520, 30523, 30526, 30530, 30533, 30536, 30540, 30543, 30546, 30550, 30553, 30556, 30560, 30563, 30566, 30570, 30573, 30576, 30579, 30583, 30586, 30589, 30593, 30596, 30599, 30603, 30606, 30609, 30613, 30616, 30619, 30623, 30626, 30629, 30633, 30636, 30639, 30643, 30646, 30649, 30653, 30656, 30659, 30663, 30666, 30669, 30672, 30676, 30679, 30682, 30686, 30689, 30692, 30696, 30699, 30702, 30706, 30709, 30712, 30716, 30719, 30722, 30726, 30729, 30732, 30736, 30739, 30742, 30746, 30749, 30752, 30756, 30759, 30762, 30766, 30769, 30772, 30775, 30779, 30782, 30785, 30789, 30792, 30795, 30799, 30802, 30805, 30809, 30812, 30815, 30819, 30822, 30825, 30829, 30832, 30835, 30839, 30842, 30845, 30849, 30852, 30855, 30859, 30862, 30865, 30868, 30872, 30875, 30878, 30882, 30885, 30888, 30892, 30895, 30898, 30902, 30905, 30908, 30912, 30915, 30918, 30922, 30925, 30928, 30932, 30935, 30938, 30942, 30945, 30948, 30952, 30955, 30958, 30961, 30965, 30968, 30971, 30975, 30978, 30981, 30985, 30988, 30991, 30995, 30998, 31001, 31005, 31008, 31011, 31015, 31018, 31021, 31025, 31028, 31031, 31035, 31038, 31041, 31045, 31048, 31051, 31055, 31058, 31061, 31064, 31068, 31071, 31074, 31078, 31081, 31084, 31088, 31091, 31094, 31098, 31101, 31104, 31108, 31111, 31114, 31118, 31121, 31124, 31128, 31131, 31134, 31138, 31141, 31144, 31148, 31151, 31154, 31157, 31161, 31164, 31167, 31171, 31174, 31177, 31181, 31184, 31187, 31191, 31194, 31197, 31201, 31204, 31207, 31211, 31214, 31217, 31221, 31224, 31227, 31231, 31234, 31237, 31241, 31244, 31247, 31251, 31254, 31257, 31260, 31264, 31267, 31270, 31274, 31277, 31280, 31284, 31287, 31290, 31294, 31297, 31300, 31304, 31307, 31310, 31314, 31317, 31320, 31324, 31327, 31330, 31334, 31337, 31340, 31344, 31347, 31350, 31353, 31357, 31360, 31363, 31367, 31370, 31373, 31377, 31380, 31383, 31387, 31390, 31393, 31397, 31400, 31403, 31407, 31410, 31413, 31417, 31420, 31423, 31427, 31430, 31433, 31437, 31440, 31443, 31446, 31450, 31453, 31456, 31460, 31463, 31466, 31470, 31473, 31476, 31480, 31483, 31486, 31490, 31493, 31496, 31500, 31503, 31506, 31510, 31513, 31516, 31520, 31523, 31526, 31530, 31533, 31536, 31540, 31543, 31546, 31549, 31553, 31556, 31559, 31563, 31566, 31569, 31573, 31576, 31579, 31583, 31586, 31589, 31593, 31596, 31599, 31603, 31606, 31609, 31613, 31616, 31619, 31623, 31626, 31629, 31633, 31636, 31639, 31642, 31646, 31649, 31652, 31656, 31659, 31662, 31666, 31669, 31672, 31676, 31679, 31682, 31686, 31689, 31692, 31696, 31699, 31702, 31706, 31709, 31712, 31716, 31719, 31722, 31726, 31729, 31732, 31736, 31739, 31742, 31745, 31749, 31752, 31755, 31759, 31762, 31765, 31769, 31772, 31775, 31779, 31782, 31785, 31789, 31792, 31795, 31799, 31802, 31805, 31809, 31812, 31815, 31819, 31822, 31825, 31829, 31832, 31835, 31838, 31842, 31845, 31848, 31852, 31855, 31858, 31862, 31865, 31868, 31872, 31875, 31878, 31882, 31885, 31888, 31892, 31895, 31898, 31902, 31905, 31908, 31912, 31915, 31918, 31922, 31925, 31928, 31931, 31935, 31938, 31941, 31945, 31948, 31951, 31955, 31958, 31961, 31965, 31968, 31971, 31975, 31978, 31981, 31985, 31988, 31991, 31995, 31998, 32001, 32005, 32008, 32011, 32015, 32018, 32021, 32025, 32028, 32031, 32034, 32038, 32041, 32044, 32048, 32051, 32054, 32058, 32061, 32064, 32068, 32071, 32074, 32078, 32081, 32084, 32088, 32091, 32094, 32098, 32101, 32104, 32108, 32111, 32114, 32118, 32121, 32124, 32127, 32131, 32134, 32137, 32141, 32144, 32147, 32151, 32154, 32157, 32161, 32164, 32167, 32171, 32174, 32177, 32181, 32184, 32187, 32191, 32194, 32197, 32201, 32204, 32207, 32211, 32214, 32217, 32221, 32224, 32227, 32230, 32234, 32237, 32240, 32244, 32247, 32250, 32254, 32257, 32260, 32264, 32267, 32270, 32274, 32277, 32280, 32284, 32287, 32290, 32294, 32297, 32300, 32304, 32307, 32310, 32314, 32317, 32320, 32323, 32327, 32330, 32333, 32337, 32340, 32343, 32347, 32350, 32353, 32357, 32360, 32363, 32367, 32370, 32373, 32377, 32380, 32383, 32387, 32390, 32393, 32397, 32400, 32403, 32407, 32410, 32413, 32417, 32420, 32423, 32426, 32430, 32433, 32436, 32440, 32443, 32446, 32450, 32453, 32456, 32460, 32463, 32466, 32470, 32473, 32476, 32480, 32483, 32486, 32490, 32493, 32496, 32500, 32503, 32506, 32510, 32513, 32516, 32519, 32523, 32526, 32529, 32533, 32536, 32539, 32543, 32546, 32549, 32553, 32556, 32559, 32563, 32566, 32569, 32573, 32576, 32579, 32583, 32586, 32589, 32593, 32596, 32599, 32603, 32606, 32609, 32612, 32616, 32619, 32622, 32626, 32629, 32632, 32636, 32639, 32642, 32646, 32649, 32652, 32656, 32659, 32662, 32666, 32669, 32672, 32676, 32679, 32682, 32686, 32689, 32692, 32696, 32699, 32702, 32706, 32709, 32712, 32715, 32719, 32722, 32725, 32729, 32732, 32735, 32739, 32742, 32745, 32749, 32752, 32755, 32759, 32762, 32765, 32769, 32772, 32775, 32779, 32782, 32785, 32789, 32792, 32795, 32799, 32802, 32805, 32808, 32812, 32815, 32818, 32822, 32825, 32828, 32832, 32835, 32838, 32842, 32845, 32848, 32852, 32855, 32858, 32862, 32865, 32868, 32872, 32875, 32878, 32882, }; static const BID_UINT256 bid_multipliers1_binary80[] = { {{12415850090107640902ull, 14557465677128539270ull, 4938398379086257084ull, 5255184001115807319ull}}, {{6296440575779775320ull, 18196832096410674088ull, 1561311955430433451ull, 6568980001394759149ull}}, {{7870550719724719149ull, 18134354102085954706ull, 6563325962715429718ull, 8211225001743448936ull}}, {{9530780218255337373ull, 6722285295376333787ull, 4102078726697143574ull, 5132015626089655585ull}}, {{7301789254391783812ull, 17626228656075193042ull, 9739284426798817371ull, 6415019532612069481ull}}, {{18350608604844505572ull, 17421099801666603398ull, 16785791551925909618ull, 8018774415765086851ull}}, {{6857444359600428079ull, 15499873394469015028ull, 8185276710739999559ull, 5011734009853179282ull}}, {{8571805449500535098ull, 14763155724658880881ull, 1008223851570223641ull, 6264667512316474103ull}}, {{15326442830303056777ull, 4618886600541437389ull, 15095337869744943264ull, 7830834390395592628ull}}, {{11884869778153104438ull, 2886804125338398368ull, 211214131735813732ull, 4894271493997245393ull}}, {{14856087222691380547ull, 3608505156672997960ull, 4875703683097155069ull, 6117839367496556741ull}}, {{123364954654674068ull, 9122317464268635355ull, 10706315622298831740ull, 7647299209370695926ull}}, {{16218004161155028957ull, 14924820452022672904ull, 2079761245509381933ull, 4779562005856684954ull}}, {{1825761127734234580ull, 4820967509746177419ull, 11823073593741503225ull, 5974452507320856192ull}}, {{16117259464949956936ull, 10637895405610109677ull, 14778841992176879031ull, 7468065634151070240ull}}, {{12379130174807417037ull, 13566213656147400404ull, 9236776245110549394ull, 4667541021344418900ull}}, {{15473912718509271297ull, 7734395033329474697ull, 11545970306388186743ull, 5834426276680523625ull}}, {{5507332842854425409ull, 5056307773234455468ull, 597404827703069717ull, 7293032845850654532ull}}, {{6884166053568031761ull, 10932070734970457239ull, 746756034628837146ull, 9116291057313318165ull}}, {{11220132811121101707ull, 11444230227783923678ull, 2772565530856717168ull, 5697681910820823853ull}}, {{4801793977046601325ull, 14305287784729904598ull, 8077392931998284364ull, 7122102388526029816ull}}, {{15225614508163027464ull, 17881609730912380747ull, 10096741164997855455ull, 8902627985657537270ull}}, {{7210166058388198213ull, 18093535109461319823ull, 1698777209696271755ull, 5564142491035960794ull}}, {{4401021554557859863ull, 18005232868399261875ull, 11346843548975115502ull, 6955178113794950992ull}}, {{889590924769936924ull, 13283169048644301536ull, 14183554436218894378ull, 8693972642243688740ull}}, {{555994327981210578ull, 12913666673830076364ull, 18088093559491584794ull, 5433732901402305462ull}}, {{694992909976513222ull, 6918711305432819647ull, 13386744912509705185ull, 6792166126752881828ull}}, {{14703799192752805239ull, 13260075150218412462ull, 16733431140637131481ull, 8490207658441102285ull}}, {{4578188477043115371ull, 1370017941245425933ull, 12764237472111901128ull, 5306379786525688928ull}}, {{10334421614731282117ull, 1712522426556782416ull, 15955296840139876410ull, 6632974733157111160ull}}, {{12918027018414102647ull, 11364025070050753828ull, 1497376976465293896ull, 8291218416446388951ull}}, {{17297138923363589962ull, 7102515668781721142ull, 7853389637931890541ull, 5182011510278993094ull}}, {{12398051617349711645ull, 13489830604404539332ull, 593365010560087368ull, 6477514387848741368ull}}, {{15497564521687139556ull, 16862288255505674165ull, 741706263200109210ull, 8096892984810926710ull}}, {{11991820835268156175ull, 15150616178118434257ull, 14298624469782231968ull, 5060558115506829193ull}}, {{1154717988803031506ull, 491526148938491206ull, 4038222531945626249ull, 6325697644383536492ull}}, {{10666769522858565191ull, 5226093704600501911ull, 5047778164932032811ull, 7907122055479420615ull}}, {{13584259979427685100ull, 960465556161619742ull, 10072390380723602363ull, 4941951284674637884ull}}, {{7756952937429830567ull, 15035640000484188390ull, 12590487975904502953ull, 6177439105843297355ull}}, {{472819134932512401ull, 4959491945323071776ull, 11126423951453240788ull, 7721798882304121694ull}}, {{295511959332820251ull, 12323054502681695668ull, 2342328951230887588ull, 4826124301440076059ull}}, {{369389949166025313ull, 15403818128352119585ull, 16762969244320773197ull, 6032655376800095073ull}}, {{5073423454884919546ull, 5419714605157985769ull, 7118653500118802785ull, 7540819221000118842ull}}, {{14700104705371544476ull, 14916536674292210865ull, 9060844456001639644ull, 4713012013125074276ull}}, {{4540072826432266883ull, 198926769155711966ull, 11326055570002049556ull, 5891265016406342845ull}}, {{14898463069895109412ull, 248658461444639957ull, 322511407220398233ull, 7364081270507928557ull}}, {{4788020782086723053ull, 4922509095233187851ull, 5014825277452885695ull, 9205101588134910696ull}}, {{686669979590507956ull, 9994097212161824263ull, 3134265798408053559ull, 5753188492584319185ull}}, {{14693395529770298657ull, 7880935496774892424ull, 8529518266437454853ull, 7191485615730398981ull}}, {{18366744412212873321ull, 14462855389396003434ull, 15273583851474206470ull, 8989357019662998726ull}}, {{16090901276060433730ull, 4427598599945114242ull, 4934303888743991140ull, 5618348137289374204ull}}, {{10890254558220766354ull, 5534498249931392803ull, 6167879860929988925ull, 7022935171611717755ull}}, {{9001132179348570039ull, 11529808830841628908ull, 3098163807735098252ull, 8778668964514647194ull}}, {{14849079648947632082ull, 16429502556130793875ull, 6548038398261824311ull, 5486668102821654496ull}}, {{13949663542757152199ull, 15925192176736104440ull, 8185047997827280389ull, 6858335128527068120ull}}, {{17437079428446440248ull, 6071432165637966838ull, 10231309997284100487ull, 8572918910658835150ull}}, {{6286488624351637251ull, 10712174131164811130ull, 1782882729875174900ull, 5358074319161771969ull}}, {{17081482817294322372ull, 13390217663956013912ull, 6840289430771356529ull, 6697592898952214961ull}}, {{2905109447908351349ull, 2902714024662853679ull, 13162047806891583566ull, 8371991123690268701ull}}, {{8733222432583801449ull, 15649254320696447261ull, 10532122888520933680ull, 5232494452306417938ull}}, {{15528214059157139716ull, 1114823827161007460ull, 3941781573796391293ull, 6540618065383022423ull}}, {{963523500236873028ull, 6005215802378647230ull, 315540948818101212ull, 8175772581728778029ull}}, {{14437260242930209355ull, 12976631913341430326ull, 2503056102225007209ull, 5109857863580486268ull}}, {{8823203266807985885ull, 2385731836394624196ull, 3128820127781259012ull, 6387322329475607835ull}}, {{11029004083509982357ull, 2982164795493280245ull, 17746083215008737477ull, 7984152911844509793ull}}, {{9198970561407432925ull, 4169696006396994105ull, 4173772981739379067ull, 4990095569902818621ull}}, {{16110399220186679060ull, 600433989568854727ull, 9828902245601611738ull, 6237619462378523276ull}}, {{15526313006805960921ull, 9973914523815844217ull, 12286127807002014672ull, 7797024327973154095ull}}, {{2786416601612643720ull, 6233696577384902636ull, 14596358907017341026ull, 4873140204983221309ull}}, {{3483020752015804650ull, 17015492758585904103ull, 4410390578489512570ull, 6091425256229026637ull}}, {{18188833995301919524ull, 12045993911377604320ull, 10124674241539278617ull, 7614281570286283296ull}}, {{11368021247063699703ull, 611217166969920844ull, 6327921400962049136ull, 4758925981428927060ull}}, {{14210026558829624628ull, 764021458712401055ull, 7909901751202561420ull, 5948657476786158825ull}}, {{13150847180109642881ull, 955026823390501319ull, 14499063207430589679ull, 7435821845982698531ull}}, {{15136808515209608657ull, 7514420792260145180ull, 6756071495430424597ull, 4647388653739186582ull}}, {{474266570302459205ull, 14004712008752569380ull, 17668461406142806554ull, 5809235817173983227ull}}, {{592833212878074006ull, 8282517974085935917ull, 17473890739251120289ull, 7261544771467479034ull}}, {{5352727534524980412ull, 14964833486034807800ull, 12618991387209124553ull, 9076930964334348793ull}}, {{3345454709078112758ull, 2435491901130673019ull, 969340589364620990ull, 5673081852708967996ull}}, {{18016876441629804659ull, 12267736913268117081ull, 1211675736705776237ull, 7091352315886209995ull}}, {{8686037496755092111ull, 1499613086302982640ull, 15349652726164384009ull, 8864190394857762493ull}}, {{5428773435471932570ull, 12466473225007833910ull, 11899375963066433957ull, 5540118996786101558ull}}, {{16009338831194691520ull, 1748033475977628675ull, 5650847916978266639ull, 6925148745982626948ull}}, {{15399987520565976496ull, 16020099900254199556ull, 7063559896222833298ull, 8656435932478283685ull}}, {{401620163498959502ull, 14624248456086262627ull, 6720567944352964763ull, 5410272457798927303ull}}, {{14337083259655863090ull, 13668624551680440379ull, 3789023912013818050ull, 6762840572248659129ull}}, {{13309668056142440958ull, 7862408652745774666ull, 9347965908444660467ull, 8453550715310823911ull}}, {{12930228553516413503ull, 2608162398752415214ull, 12760007720418994648ull, 5283469197069264944ull}}, {{6939413655040741070ull, 3260202998440519018ull, 15950009650523743310ull, 6604336496336581180ull}}, {{17897639105655702146ull, 13298625784905424580ull, 1490767989445127521ull, 8255420620420726476ull}}, {{1962652404180038033ull, 1394112087924808507ull, 10155102030257980509ull, 5159637887762954047ull}}, {{16288373560507211254ull, 6354326128333398537ull, 8082191519395087732ull, 6449547359703692559ull}}, {{6525408895351850355ull, 7942907660416748172ull, 5491053380816471761ull, 8061934199629615699ull}}, {{13301752596449682280ull, 16493532333828937367ull, 1126065353796600898ull, 5038708874768509812ull}}, {{12015504727134714946ull, 11393543380431395901ull, 1407581692245751123ull, 6298386093460637265ull}}, {{1184322853636229970ull, 9630243207111856973ull, 6371163133734576808ull, 7872982616825796581ull}}, {{3046044792736337684ull, 6018902004444910608ull, 6287819967797804457ull, 4920614135516122863ull}}, {{3807555990920422104ull, 12135313523983526164ull, 3248088941319867667ull, 6150767669395153579ull}}, {{4759444988650527630ull, 10557455886552019801ull, 17895169231931998296ull, 7688459586743941973ull}}, {{14503868163975049529ull, 6598409929095012375ull, 13490323779171192887ull, 4805287241714963733ull}}, {{13518149186541424007ull, 3636326392941377565ull, 3027846668681827397ull, 6006609052143704667ull}}, {{3062628427894616297ull, 9157094009604109861ull, 17619866391134447958ull, 7508261315179630833ull}}, {{4219985776647829138ull, 1111497737575180759ull, 4094887466817948118ull, 4692663321987269271ull}}, {{663296202382398518ull, 10612744208823751757ull, 506923315095047243ull, 5865829152484086589ull}}, {{5440806271405386052ull, 8654244242602301792ull, 5245340162296196958ull, 7332286440605108236ull}}, {{6801007839256732564ull, 1594433266398101432ull, 6556675202870246198ull, 9165358050756385295ull}}, {{4250629899535457853ull, 14831578846780977107ull, 11015451029434985729ull, 5728348781722740809ull}}, {{701601355991934412ull, 4704415503194057672ull, 18380999805221120066ull, 7160435977153426011ull}}, {{877001694989918015ull, 15103891415847347898ull, 18364563738099012178ull, 8950544971441782514ull}}, {{5159812077796086663ull, 14051618153331980340ull, 16089538354739270515ull, 5594090607151114071ull}}, {{6449765097245108329ull, 12952836673237587521ull, 15500236924996700240ull, 6992613258938892589ull}}, {{12673892389983773315ull, 16191045841546984401ull, 5540238100963711588ull, 8740766573673615737ull}}, {{1003653716098776466ull, 896031614112089443ull, 14991863859170789503ull, 5462979108546009835ull}}, {{15089625200405634295ull, 14955097572922275515ull, 14128143805536098974ull, 6828723885682512294ull}}, {{14250345482079654964ull, 9470499929298068586ull, 8436807720065347910ull, 8535904857103140368ull}}, {{13518151944727172257ull, 1307376437383904962ull, 5273004825040842444ull, 5334940535689462730ull}}, {{7674317894054189513ull, 1634220546729881203ull, 15814628068155828863ull, 6668675669611828412ull}}, {{4981211349140348987ull, 15877833738694515216ull, 1321541011485234462ull, 8335844587014785516ull}}, {{3113257093212718117ull, 5311960068256684106ull, 10049335169033047347ull, 5209902866884240947ull}}, {{13114943403370673454ull, 2028264066893467228ull, 7949982942863921280ull, 6512378583605301184ull}}, {{16393679254213341818ull, 2535330083616834035ull, 9937478678579901600ull, 8140473229506626480ull}}, {{7940206524669644684ull, 1584581302260521272ull, 6210924174112438500ull, 5087795768441641550ull}}, {{9925258155837055855ull, 1980726627825651590ull, 16987027254495323933ull, 6359744710552051937ull}}, {{3183200657941544011ull, 7087594303209452392ull, 7398726012836991204ull, 7949680888190064922ull}}, {{1989500411213465007ull, 13653118476360683553ull, 9235889776450507406ull, 4968550555118790576ull}}, {{7098561532444219163ull, 7843026058596078633ull, 11544862220563134258ull, 6210688193898488220ull}}, {{13484887933982661857ull, 580410536390322483ull, 14431077775703917823ull, 7763360242373110275ull}}, {{6122211949525469709ull, 7280285612885033408ull, 6713580600601254687ull, 4852100151483193922ull}}, {{7652764936906837136ull, 4488670997678903856ull, 17615347787606344167ull, 6065125189353992402ull}}, {{9565956171133546420ull, 999152728671241916ull, 12795812697653154401ull, 7581406486692490503ull}}, {{15202094643813242321ull, 12153685501487995957ull, 14914911963674303356ull, 4738379054182806564ull}}, {{5167560249484389189ull, 15192106876859994947ull, 196895880883327579ull, 5922973817728508206ull}}, {{1847764293428098582ull, 14378447577647605780ull, 9469491887958935282ull, 7403717272160635257ull}}, {{10378224720247337422ull, 13598215754457141516ull, 17447647476042804311ull, 4627323295100397035ull}}, {{12972780900309171777ull, 12386083674644038991ull, 17197873326626117485ull, 5784154118875496294ull}}, {{11604290106959076817ull, 1647546538022885027ull, 12273969621427871049ull, 7230192648594370368ull}}, {{9893676615271458117ull, 6671119190955994188ull, 15342462026784838811ull, 9037740810742962960ull}}, {{15406919921399437132ull, 1863606485133802415ull, 9589038766740524257ull, 5648588006714351850ull}}, {{14646963883321908510ull, 6941194124844640923ull, 2762926421570879513ull, 7060735008392939813ull}}, {{13697018835724997734ull, 13288178674483189058ull, 8065344045390987295ull, 8825918760491174766ull}}, {{13172322790755511488ull, 15222640699193075017ull, 429154009941979155ull, 5516199225306984229ull}}, {{2630345433162225648ull, 14416614855563955868ull, 5148128530854861848ull, 6895249031633730286ull}}, {{3287931791452782059ull, 18020768569454944835ull, 15658532700423353118ull, 8619061289542162857ull}}, {{18195858434153846451ull, 6651294337481952617ull, 2869053910123513843ull, 5386913305963851786ull}}, {{8909764987410144352ull, 3702431903425052868ull, 12809689424509168112ull, 6733641632454814732ull}}, {{11137206234262680440ull, 4628039879281316085ull, 16012111780636460140ull, 8417052040568518415ull}}, {{9266596905627869227ull, 12115896961405598361ull, 16925098890538869443ull, 5260657525355324009ull}}, {{16194932150462224438ull, 10533185183329610047ull, 7321315557891423092ull, 6575821906694155012ull}}, {{15631979169650392643ull, 13166481479162012559ull, 9151644447364278865ull, 8219777383367693765ull}}, {{16687516008672577258ull, 1311521896835175993ull, 8025620788816368243ull, 5137360864604808603ull}}, {{7024336955558557860ull, 15474460426326133704ull, 5420339967593072399ull, 6421701080756010754ull}}, {{8780421194448197325ull, 14731389514480279226ull, 15998796996346116307ull, 8027126350945013442ull}}, {{10099449264957511233ull, 6901275437336480564ull, 14610934141143710596ull, 5016953969340633401ull}}, {{12624311581196889041ull, 8626594296670600705ull, 4428609621147474533ull, 6271192461675791752ull}}, {{1945331421213947589ull, 15394928889265638786ull, 5535762026434343166ull, 7838990577094739690ull}}, {{5827518156686105147ull, 5010144537363636337ull, 8071537284948852383ull, 4899369110684212306ull}}, {{11896083714285019338ull, 1650994653277157517ull, 866049569331289671ull, 6124211388355265383ull}}, {{1035046587574110460ull, 15898801371878610609ull, 14917620016946275800ull, 7655264235444081728ull}}, {{12176119163302288798ull, 9936750857424131630ull, 9323512510591422375ull, 4784540147152551080ull}}, {{5996776917273085189ull, 7809252553352776634ull, 11654390638239277969ull, 5980675183940688850ull}}, {{16719343183446132294ull, 14373251710118358696ull, 5344616260944321653ull, 7475843979925861063ull}}, {{10449589489653832684ull, 11289125328037668137ull, 10257914190731282889ull, 4672402487453663164ull}}, {{17673672880494678759ull, 276348604764921459ull, 12822392738414103612ull, 5840503109317078955ull}}, {{17480405082190960545ull, 345435755956151824ull, 11416304904590241611ull, 7300628886646348694ull}}, {{3403762279029149065ull, 14266852750227353493ull, 5047009093883026205ull, 9125786108307935868ull}}, {{4433194433606912118ull, 11222625978105789885ull, 12377752720531667186ull, 5703616317692459917ull}}, {{10153179060436028051ull, 4804910435777461548ull, 1637132845382420271ull, 7129520397115574897ull}}, {{12691473825545035063ull, 1394452026294439031ull, 6658102075155413243ull, 8911900496394468621ull}}, {{14849700168606728771ull, 17012433580929882058ull, 6467156806185827228ull, 5569937810246542888ull}}, {{9338753173903635155ull, 2818797902452800957ull, 8083946007732284036ull, 6962422262808178610ull}}, {{16285127485806931848ull, 3523497378066001196ull, 881560472810579237ull, 8703027828510223263ull}}, {{954832641774556597ull, 4508028870504944700ull, 7468504323147693879ull, 5439392392818889539ull}}, {{1193540802218195746ull, 1023350069703792971ull, 4723944385507229445ull, 6799240491023611924ull}}, {{15326984058054908395ull, 5890873605557129117ull, 5904930481884036806ull, 8499050613779514905ull}}, {{11885208045498011699ull, 17516854058755369410ull, 15219796597245992763ull, 5311906633612196815ull}}, {{5633138020017738816ull, 17284381555016823859ull, 14413059728130103050ull, 6639883292015246019ull}}, {{2429736506594785615ull, 12382104906916254016ull, 13404638641735240909ull, 8299854115019057524ull}}, {{1518585316621741010ull, 10044658576036352712ull, 17601271187939301376ull, 5187408821886910952ull}}, {{1898231645777176262ull, 12555823220045440890ull, 3554844911214575104ull, 6484261027358638691ull}}, {{11596161594076246136ull, 15694779025056801112ull, 18278614194300382592ull, 8105326284198298363ull}}, {{7247600996297653835ull, 9809236890660500695ull, 9118290862224045168ull, 5065828927623936477ull}}, {{4447815226944679390ull, 12261546113325625869ull, 16009549596207444364ull, 6332286159529920596ull}}, {{10171455052108237141ull, 15326932641657032336ull, 1565192921549753839ull, 7915357699412400746ull}}, {{6357159407567648213ull, 16496861928676727066ull, 5589931594395984053ull, 4947098562132750466ull}}, {{17169821296314336074ull, 6786019355563745120ull, 16210786529849755875ull, 6183873202665938082ull}}, {{3015532546683368477ull, 3870838176027293497ull, 11040111125457419036ull, 7729841503332422603ull}}, {{13413922887745575058ull, 11642645896871834243ull, 4594226444197192945ull, 4831150939582764127ull}}, {{12155717591254580919ull, 718249315807629092ull, 1131097036819103278ull, 6038938674478455159ull}}, {{15194646989068226148ull, 10121183681614312173ull, 15248929351306042809ull, 7548673343098068948ull}}, {{11802497377381335295ull, 17854954847077414868ull, 307208807711500947ull, 4717920839436293093ull}}, {{14753121721726669118ull, 17707007540419380681ull, 4995697028066764088ull, 5897401049295366366ull}}, {{4606344096876172686ull, 3687015351814674236ull, 15467993321938230919ull, 7371751311619207957ull}}, {{5757930121095215857ull, 18443827245050506507ull, 5499933597140624936ull, 9214689139524009947ull}}, {{1292863316470815959ull, 11527392028156566567ull, 1131615488999196633ull, 5759180712202506217ull}}, {{15451137200870683660ull, 574181979913544496ull, 6026205379676383696ull, 7198975890253132771ull}}, {{867177427378802959ull, 717727474891930621ull, 2921070706168091716ull, 8998719862816415964ull}}, {{2847828901325445802ull, 9671951708662232446ull, 11049041228209833130ull, 5624199914260259977ull}}, {{12783158163511583060ull, 2866567598973014749ull, 18422987553689679317ull, 7030249892825324971ull}}, {{2143889649107315113ull, 8194895517143656341ull, 18417048423684711242ull, 8787812366031656214ull}}, {{3645774039905765898ull, 9733495716642173117ull, 6898969246375556622ull, 5492382728769785134ull}}, {{9168903568309595276ull, 2943497608947940588ull, 17847083594824221586ull, 6865478410962231417ull}}, {{11461129460386994095ull, 12902744048039701543ull, 8473796438248113270ull, 8581848013702789272ull}}, {{14080734940382953166ull, 3452529011597425560ull, 5296122773905070794ull, 5363655008564243295ull}}, {{17600918675478691457ull, 13539033301351557758ull, 2008467448953950588ull, 6704568760705304119ull}}, {{12777776307493588513ull, 16923791626689447198ull, 16345642366474601947ull, 8380710950881630148ull}}, {{3374424173756104917ull, 8271526757467210547ull, 992654442191850409ull, 5237944344301018843ull}}, {{18053088272477294858ull, 14951094465261401087ull, 15075876108021976723ull, 6547430430376273553ull}}, {{17954674322169230668ull, 14077182063149363455ull, 5009787079745307192ull, 8184288037970341942ull}}, {{18139200478996851024ull, 8798238789468352159ull, 16966174980122980707ull, 5115180023731463713ull}}, {{18062314580318675876ull, 6386112468408052295ull, 7372660669871562172ull, 6393975029664329642ull}}, {{17966207206970956941ull, 7982640585510065369ull, 18439197874194228523ull, 7992468787080412052ull}}, {{4311350476715766232ull, 2683307356730096904ull, 2301126634516617019ull, 4995292991925257533ull}}, {{5389188095894707790ull, 17189192251194784842ull, 7488094311573159177ull, 6244116239906571916ull}}, {{15959857156723160545ull, 7651432258711317340ull, 9360117889466448972ull, 7805145299883214895ull}}, {{751538686097199533ull, 14005517198549349146ull, 12767602708557612463ull, 4878215812427009309ull}}, {{10162795394476275224ull, 12895210479759298528ull, 2124445330414851867ull, 6097769765533761637ull}}, {{12703494243095344030ull, 11507327081271735256ull, 7267242681445952738ull, 7622212206917202046ull}}, {{7939683901934590019ull, 11803765444222222439ull, 18377084731185884173ull, 4763882629323251278ull}}, {{5312918858990849620ull, 919648749995614337ull, 13747983877127579409ull, 5954853286654064098ull}}, {{11252834592165949928ull, 5761246955921905825ull, 7961607809554698453ull, 7443566608317580123ull}}, {{115492592462636849ull, 5906622356664885093ull, 2670161871757992581ull, 4652229130198487577ull}}, {{4756051759005683966ull, 11994963964258494270ull, 7949388358124878630ull, 5815286412748109471ull}}, {{15168436735611880765ull, 5770332918468342029ull, 5325049429228710384ull, 7269108015935136839ull}}, {{5125487864232687244ull, 7212916148085427537ull, 2044625768108500076ull, 9086385019918921049ull}}, {{14732644961213899288ull, 13731444629408168018ull, 12807106151136282307ull, 5678990637449325655ull}}, {{9192434164662598301ull, 12552619768332822119ull, 11397196670492964980ull, 7098738296811657069ull}}, {{6878856687400859973ull, 15690774710416027649ull, 411437782834042513ull, 8873422871014571337ull}}, {{15828500475694007243ull, 2889205166368935424ull, 11786363660339746331ull, 5545889294384107085ull}}, {{1338881520907957438ull, 17446564513243332993ull, 897896520142519201ull, 6932361617980133857ull}}, {{6285287919562334701ull, 7973147586272002529ull, 5734056668605536906ull, 8665452022475167321ull}}, {{15457519995794928948ull, 9594903259847389484ull, 15113000463946930326ull, 5415907514046979575ull}}, {{875155921034109569ull, 2770257037954461048ull, 14279564561506275004ull, 6769884392558724469ull}}, {{1093944901292636962ull, 3462821297443076310ull, 4014397646600680043ull, 8462355490698405587ull}}, {{14518773618590061813ull, 18305164375397780357ull, 203155519911731074ull, 5288972181686503492ull}}, {{4313408967955413554ull, 13658083432392449639ull, 253944399889663843ull, 6611215227108129365ull}}, {{780075191516879039ull, 12460918272063174145ull, 4929116518289467708ull, 8264019033885161706ull}}, {{12016762040766519159ull, 17011445956894259648ull, 7692383842358305221ull, 5165011896178226066ull}}, {{15020952550958148949ull, 7429249390835660848ull, 392107766093105719ull, 6456264870222782583ull}}, {{329446614988134570ull, 4674875720117188157ull, 14325192762898545861ull, 8070331087778478228ull}}, {{2511747143581278059ull, 5227640334286936550ull, 18176617513666366971ull, 5043956929861548892ull}}, {{12363055966331373381ull, 1922864399431282783ull, 4274027818373407098ull, 6304946162326936116ull}}, {{10842133939486828822ull, 11626952536143879287ull, 5342534772966758872ull, 7881182702908670145ull}}, {{13693862739820349870ull, 7266845335089924554ull, 14868299279172694055ull, 4925739189317918840ull}}, {{7893956387920661530ull, 4471870650435017789ull, 138630025256315953ull, 6157173986647398551ull}}, {{14479131503328214816ull, 10201524331471160140ull, 14008345586852558653ull, 7696467483309248188ull}}, {{18272829226434910068ull, 8681795716383169039ull, 17978588028637624966ull, 4810292177068280117ull}}, {{18229350514616249681ull, 1628872608624185491ull, 8638176980514867496ull, 6012865221335350147ull}}, {{18175002124842924197ull, 2036090760780231864ull, 6186035207216196466ull, 7516081526669187684ull}}, {{11359376328026827623ull, 5884242743915032819ull, 13089644041364898599ull, 4697550954168242302ull}}, {{9587534391606146625ull, 2743617411466403120ull, 7138683014851347441ull, 5871938692710302878ull}}, {{11984417989507683281ull, 8041207782760391804ull, 18146725805418960109ull, 7339923365887878597ull}}, {{14980522486884604101ull, 14663195746877877659ull, 8848349201491536424ull, 9174904207359848247ull}}, {{7056983545089183612ull, 9164497341798673537ull, 12447747278573292121ull, 5734315129599905154ull}}, {{13432915449788867418ull, 16067307695675729825ull, 6336312061361839343ull, 7167893911999881443ull}}, {{2956086256953920561ull, 15472448601167274378ull, 3308704058274911275ull, 8959867389999851804ull}}, {{6459239929023588255ull, 7364437366515852534ull, 11291312073276595355ull, 5599917118749907377ull}}, {{17297421948134261126ull, 4593860689717427763ull, 279082036313580482ull, 6999896398437384222ull}}, {{17010091416740438504ull, 14965697899001560512ull, 9572224582246751410ull, 8749870498046730277ull}}, {{10631307135462774065ull, 13965247205303363224ull, 8288483373117913583ull, 5468669061279206423ull}}, {{13289133919328467581ull, 12844872988201816126ull, 5748918197970004075ull, 6835836326599008029ull}}, {{7388045362305808668ull, 11444405216824882254ull, 11797833765889892998ull, 8544795408248760036ull}}, {{5842333013742514ull, 2541067242088163505ull, 16597018140535958932ull, 5340497130155475022ull}}, {{4618988934694566046ull, 3176334052610204381ull, 11522900638815172857ull, 6675621412694343778ull}}, {{10385422186795595462ull, 8582103584190143380ull, 5180253761664190263ull, 8344526765867929723ull}}, {{15714260903602022972ull, 12281343767759921468ull, 931815591826424962ull, 5215329228667456077ull}}, {{1196082055792977098ull, 6128307672845126028ull, 5776455508210419107ull, 6519161535834320096ull}}, {{1495102569741221373ull, 3048698572629019631ull, 7220569385263023884ull, 8148951919792900120ull}}, {{7851968133729345214ull, 11128808644747913077ull, 4512855865789389927ull, 5093094949870562575ull}}, {{14426646185589069422ull, 9299324787507503442ull, 1029383813809349505ull, 6366368687338203219ull}}, {{8809935695131560969ull, 16235842002811767207ull, 15121787822543850593ull, 7957960859172754023ull}}, {{12423738837098307462ull, 3229872224116272648ull, 16368646416730988477ull, 4973725536982971264ull}}, {{15529673546372884327ull, 8649026298572728714ull, 2014063947204183980ull, 6217156921228714081ull}}, {{10188719896111329601ull, 10811282873215910893ull, 7129265952432617879ull, 7771446151535892601ull}}, {{8673792944283274953ull, 13674580823401026164ull, 15985006266338855934ull, 4857153844709932875ull}}, {{10842241180354093691ull, 7869853992396506897ull, 15369571814496182014ull, 6071442305887416094ull}}, {{18164487493870005017ull, 613945453640857813ull, 9988592731265451710ull, 7589302882359270118ull}}, {{13658647692882447088ull, 14218773963807699845ull, 1631184438613519414ull, 4743314301474543824ull}}, {{3238251560820895148ull, 8550095417904848999ull, 2038980548266899268ull, 5929142876843179780ull}}, {{17882872506308282647ull, 10687619272381061248ull, 2548725685333624085ull, 7411428596053974725ull}}, {{11176795316442676654ull, 8985605054451857232ull, 3898796562547209005ull, 4632142872533734203ull}}, {{13970994145553345818ull, 15843692336492209444ull, 261809684756623352ull, 5790178590667167754ull}}, {{17463742681941682272ull, 1357871346905710189ull, 9550634142800554999ull, 7237723238333959692ull}}, {{7994620297144939128ull, 15532397238914301449ull, 11938292678500693748ull, 9047154047917449615ull}}, {{16525852731784056715ull, 484376237466662597ull, 14378961951704015449ull, 5654471279948406009ull}}, {{6822257859447907182ull, 5217156315260716151ull, 4138644384347855599ull, 7068089099935507512ull}}, {{3916136305882496073ull, 1909759375648507285ull, 5173305480434819499ull, 8835111374919384390ull}}, {{4753428200390253998ull, 17334500674276174717ull, 17068373980553925898ull, 5521944609324615243ull}}, {{10553471268915205401ull, 12444753805990442588ull, 16723781457265019469ull, 6902430761655769054ull}}, {{13191839086144006752ull, 1720884202205889523ull, 11681354784726498529ull, 8628038452069711318ull}}, {{5939056419626310268ull, 12604767672447150712ull, 2689160722026673676ull, 5392524032543569574ull}}, {{7423820524532887835ull, 15755959590558938390ull, 12584822939388117903ull, 6740655040679461967ull}}, {{56403618811333985ull, 15083263469771285084ull, 11119342655807759475ull, 8425818800849327459ull}}, {{9258624298611859549ull, 7121196659393359225ull, 4643746150666155720ull, 5266136750530829662ull}}, {{16184966391692212340ull, 8901495824241699031ull, 15028054725187470458ull, 6582670938163537077ull}}, {{15619521971187877521ull, 1903497743447347981ull, 4950010351202174361ull, 8228338672704421347ull}}, {{12068044241206117403ull, 12718901135723062248ull, 787913460287665023ull, 5142711670440263342ull}}, {{15085055301507646754ull, 11286940401226439906ull, 10208263862214357087ull, 6428389588050329177ull}}, {{9632947090029782634ull, 9496989483105661979ull, 17372015846195334263ull, 8035486985062911471ull}}, {{3714748922054920194ull, 12853147454582120593ull, 17775038931513165770ull, 5022179365664319669ull}}, {{9255122170996038147ull, 6843062281372874933ull, 8383740609109293501ull, 6277724207080399587ull}}, {{16180588732172435587ull, 13165513870143481570ull, 5867989742959228972ull, 7847155258850499484ull}}, {{14724553976035160146ull, 17451818205694451789ull, 12890865626204293915ull, 4904472036781562177ull}}, {{4570634414761786471ull, 17203086738690676833ull, 2278523977473203682ull, 6130590045976952722ull}}, {{10324979036879620992ull, 12280486386508570233ull, 12071527008696280411ull, 7663237557471190902ull}}, {{17982326944118232880ull, 5369460982354162443ull, 2933018362007787353ull, 4789523473419494314ull}}, {{17866222661720403196ull, 11323512246370090958ull, 12889644989364509999ull, 5986904341774367892ull}}, {{13109406290295728187ull, 9542704289535225794ull, 16112056236705637499ull, 7483630427217959865ull}}, {{12805064949862218021ull, 3658347171745822169ull, 3152506120299941581ull, 4677269017011224916ull}}, {{2171273132045608814ull, 9184619983109665616ull, 3940632650374926976ull, 5846586271264031145ull}}, {{2714091415057011018ull, 11480774978887082020ull, 9537476831396046624ull, 7308232839080038931ull}}, {{3392614268821263772ull, 14350968723608852525ull, 7310160020817670376ull, 9135291048850048664ull}}, {{4426226927226983810ull, 8969355452255532828ull, 4568850013011043985ull, 5709556905531280415ull}}, {{5532783659033729762ull, 15823380333746803939ull, 1099376497836417077ull, 7136946131914100519ull}}, {{2304293555364774299ull, 5944167361901341212ull, 15209278677577685059ull, 8921182664892625648ull}}, {{10663555508957759745ull, 1409261591974644305ull, 9505799173486053162ull, 5575739165557891030ull}}, {{17941130404624587585ull, 10984949026823081189ull, 2658876930002790644ull, 6969673956947363788ull}}, {{8591354950498570769ull, 13731186283528851487ull, 3323596162503488305ull, 8712092446184204735ull}}, {{12287125871702688587ull, 1664462399564450323ull, 8994776629205762047ull, 5445057778865127959ull}}, {{10747221321200972829ull, 15915636054737726616ull, 6631784768079814654ull, 6806322223581409949ull}}, {{13434026651501216037ull, 10671173031567382462ull, 12901416978527156222ull, 8507902779476762436ull}}, {{3784580638760872119ull, 2057797126302226135ull, 17286757648434248447ull, 5317439237172976522ull}}, {{119039780023702245ull, 16407304463159946381ull, 12385075023688034750ull, 6646799046466220653ull}}, {{4760485743457015710ull, 11285758542095157168ull, 1646285724327879726ull, 8308498808082775817ull}}, {{2975303589660634819ull, 2441913070382085326ull, 12558143623773394589ull, 5192811755051734885ull}}, {{12942501523930569331ull, 7664077356404994561ull, 1862621474434579524ull, 6491014693814668607ull}}, {{2343068849631047952ull, 9580096695506243202ull, 16163334898325388117ull, 8113768367268335758ull}}, {{6076104049446792874ull, 8293403443905095953ull, 5490398293025979669ull, 5071105229542709849ull}}, {{12206816080235878997ull, 14978440323308757845ull, 11474683884709862490ull, 6338881536928387311ull}}, {{1423462045012685034ull, 9499678367281171499ull, 9731668837459940209ull, 7923601921160484139ull}}, {{17030564842628785810ull, 17466514025619201946ull, 3776450014198768678ull, 4952251200725302587ull}}, {{12064834016431206455ull, 12609770495169226625ull, 108876499321072944ull, 6190314000906628234ull}}, {{1245984465256844356ull, 15762213118961533282ull, 9359467661006116988ull, 7737892501133285292ull}}, {{5390426309212915627ull, 628011162496182493ull, 15073039324983598926ull, 4836182813208303307ull}}, {{11349718904943532437ull, 10008385989975003924ull, 14229613137802110753ull, 6045228516510379134ull}}, {{14187148631179415547ull, 17122168505896142809ull, 8563644385397862633ull, 7556535645637973918ull}}, {{1949438866846052861ull, 3783826288544007400ull, 740591722446276242ull, 4722834778523733699ull}}, {{2436798583557566076ull, 13953154897534785058ull, 14760797708340009014ull, 5903543473154667123ull}}, {{12269370266301733403ull, 8218071585063705514ull, 13839311116997623364ull, 7379429341443333904ull}}, {{12280042434865971281ull, 14359666777519591754ull, 8649569448123514602ull, 4612143338402083690ull}}, {{6126681006727688293ull, 8726211435044713885ull, 1588589773299617445ull, 5765179173002604613ull}}, {{12270037276836998270ull, 15519450312233280260ull, 6597423235051909710ull, 7206473966253255766ull}}, {{15337546596046247838ull, 10175940853436824517ull, 17470151080669662946ull, 9008092457816569707ull}}, {{11891809631742598851ull, 10971649051825403227ull, 8613001416204845389ull, 5630057786135356067ull}}, {{10253076021250860659ull, 18326247333209141938ull, 6154565751828668832ull, 7037572232669195084ull}}, {{3592972989708800016ull, 4461065092801875807ull, 7693207189785836041ull, 8796965290836493855ull}}, {{9163137146209081866ull, 14317380729069642139ull, 11725783521257229381ull, 5498103306772808659ull}}, {{6842235414333964429ull, 4061667856054888962ull, 10045543383144148823ull, 6872629133466010824ull}}, {{17776166304772231344ull, 465398801641223298ull, 12556929228930186029ull, 8590786416832513530ull}}, {{15721789958910032494ull, 2596717260239458513ull, 12459766786508754172ull, 5369241510520320956ull}}, {{5817179393355376905ull, 3245896575299323142ull, 15574708483135942715ull, 6711551888150401195ull}}, {{16494846278548996939ull, 17892428774406317639ull, 14856699585492540489ull, 8389439860188001494ull}}, {{17226807951734204943ull, 4265238956362866668ull, 4673751222505449902ull, 5243399912617500934ull}}, {{3086765865958204563ull, 14554920732308359144ull, 15065561064986588185ull, 6554249890771876167ull}}, {{3858457332447755704ull, 4358592860103285218ull, 14220265312805847328ull, 8192812363464845209ull}}, {{7023221851207235219ull, 2724120537564553261ull, 1970136792862572724ull, 5120507727165528256ull}}, {{13390713332436431928ull, 3405150671955691576ull, 2462670991078215905ull, 6400634658956910320ull}}, {{16738391665545539909ull, 8868124358372002374ull, 3078338738847769881ull, 8000793323696137900ull}}, {{5849808772538574540ull, 17071792770050971244ull, 11147333748634631983ull, 5000495827310086187ull}}, {{7312260965673218174ull, 16728054944136326151ull, 9322481167365902075ull, 6250619784137607734ull}}, {{4528640188664134814ull, 16298382661743019785ull, 2429729422352601786ull, 7813274730172009668ull}}, {{14359615163983554019ull, 14798175182016775269ull, 10741952925825151924ull, 4883296706357506042ull}}, {{4114460899697278811ull, 50974903811417471ull, 4204069120426664098ull, 6104120882946882553ull}}, {{531390106194210610ull, 9287090666619047647ull, 9866772418960718026ull, 7630151103683603191ull}}, {{7249647844012463487ull, 10416117685064292683ull, 13084261789491530622ull, 4768844439802251994ull}}, {{4450373786588191455ull, 3796775069475590046ull, 7131955200009637470ull, 5961055549752814993ull}}, {{14786339270090015127ull, 13969340873699263365ull, 13526630018439434741ull, 7451319437191018741ull}}, {{11547305053019953406ull, 11036681055275733555ull, 10759986770738340665ull, 4657074648244386713ull}}, {{9822445297847553854ull, 18407537337522054848ull, 18061669481850313735ull, 5821343310305483391ull}}, {{12278056622309442317ull, 18397735653475180656ull, 17965400833885504265ull, 7276679137881854239ull}}, {{15347570777886802897ull, 9162111511561812108ull, 17845065023929492428ull, 9095848922352317799ull}}, {{368859699324476003ull, 14949691731580908376ull, 18070694667597014623ull, 5684905576470198624ull}}, {{461074624155595003ull, 14075428646048747566ull, 4141624260786716663ull, 7106131970587748281ull}}, {{9799715317049269562ull, 12982599789133546553ull, 9788716344410783733ull, 8882664963234685351ull}}, {{17654037119224263236ull, 10419967877422160547ull, 13035476742897821689ull, 5551665602021678344ull}}, {{17455860380602941141ull, 17636645865205088588ull, 16294345928622277111ull, 6939582002527097930ull}}, {{3373081402044124810ull, 17434121313078972832ull, 11144560373923070581ull, 8674477503158872413ull}}, {{2108175876277578007ull, 13202168829888051972ull, 9271193242915613065ull, 5421548439474295258ull}}, {{2635219845346972508ull, 2667652982077901253ull, 2365619516789740524ull, 6776935549342869073ull}}, {{7905710825111103539ull, 3334566227597376566ull, 7568710414414563559ull, 8471169436678586341ull}}, {{329383247267051808ull, 9001632919889442210ull, 7036287018222796176ull, 5294480897924116463ull}}, {{9635101095938590568ull, 11252041149861802762ull, 4183672754351107316ull, 6618101122405145579ull}}, {{2820504333068462402ull, 14065051437327253453ull, 617904924511496241ull, 8272626403006431974ull}}, {{4068658217381482953ull, 1873128120688451552ull, 14221248633101848863ull, 5170391501879019983ull}}, {{5085822771726853692ull, 16176468206142728152ull, 13164874772949923174ull, 6462989377348774979ull}}, {{6357278464658567114ull, 10997213220823634382ull, 11844407447760016064ull, 8078736721685968724ull}}, {{17808357095693768159ull, 6873258263014771488ull, 16626126691704785848ull, 5049210451053730452ull}}, {{3813702295907658582ull, 8591572828768464361ull, 2335914290921430694ull, 6311513063817163066ull}}, {{9378813888311961132ull, 1516093999105804643ull, 12143264900506564176ull, 7889391329771453832ull}}, {{3555915670981281755ull, 947558749441127902ull, 7589540562816602610ull, 4930869581107158645ull}}, {{13668266625581378002ull, 10407820473656185685ull, 14098611721948141166ull, 6163586976383948306ull}}, {{3250275226694558791ull, 3786403555215456299ull, 8399892615580400650ull, 7704483720479935383ull}}, {{18172323081179956908ull, 6978188240437048090ull, 12167461912378832262ull, 4815302325299959614ull}}, {{13492031814620170327ull, 17946107337401085921ull, 5985955353618764519ull, 6019127906624949518ull}}, {{3029981712993049197ull, 17820948153323969498ull, 16705816228878231457ull, 7523909883281186897ull}}, {{6505424589048043652ull, 4220563568186399080ull, 3523606115407812805ull, 4702443677050741811ull}}, {{8131780736310054565ull, 9887390478660386754ull, 18239565699541929718ull, 5878054596313427263ull}}, {{941353883532792398ull, 3135866061470707635ull, 18187771106000024244ull, 7347568245391784079ull}}, {{15011750409698154210ull, 3919832576838384543ull, 18123027864072642401ull, 9184460306739730099ull}}, {{16299873033702428237ull, 13979110406592460099ull, 9021049405831707548ull, 5740287691712331312ull}}, {{15763155273700647393ull, 17473888008240575124ull, 11276311757289634435ull, 7175359614640414140ull}}, {{1257200018416257625ull, 17230673991873331002ull, 14095389696612043044ull, 8969199518300517675ull}}, {{5397436029937548920ull, 1545799208066056068ull, 6503775551168832951ull, 5605749698937823547ull}}, {{6746795037421936149ull, 15767307065364733797ull, 3518033420533653284ull, 7007187123672279434ull}}, {{13045179815204808091ull, 1262389757996365630ull, 13620913812521842414ull, 8758983904590349292ull}}, {{3541551366075617153ull, 14624051654029892231ull, 17736443169680927316ull, 5474364940368968307ull}}, {{18261997262876685153ull, 18280064567537365288ull, 17558867943673771241ull, 6842956175461210384ull}}, {{4380752504886304825ull, 9015022654139542899ull, 3501840855882662436ull, 8553695219326512981ull}}, {{432127306340246564ull, 14857761195691990120ull, 4494493544140357974ull, 5346059512079070613ull}}, {{540159132925308205ull, 9348829457760211842ull, 10229802948602835372ull, 6682574390098838266ull}}, {{9898570953011411064ull, 11686036822200264802ull, 3563881648898768407ull, 8353217987623547833ull}}, {{10798292864059519819ull, 14221302041516247357ull, 13756641076630200014ull, 5220761242264717395ull}}, {{18109552098501787678ull, 8553255515040533388ull, 12584115327360362114ull, 6525951552830896744ull}}, {{4190196049417682981ull, 1468197356945890928ull, 15730144159200452643ull, 8157439441038620930ull}}, {{2618872530886051863ull, 17058524412587039494ull, 14443026117927670805ull, 5098399650649138081ull}}, {{12496962700462340637ull, 7488097460451635655ull, 4218724592127424795ull, 6372999563311422602ull}}, {{11009517357150537892ull, 4748435807137156665ull, 14496777777014056802ull, 7966249454139278252ull}}, {{18410163394287555943ull, 7579458397888110819ull, 18283858147488561309ull, 4978905908837048907ull}}, {{18401018224432057024ull, 14086009015787526428ull, 18243136665933313732ull, 6223632386046311134ull}}, {{4554528706830519664ull, 17607511269734408036ull, 13580548795561866357ull, 7779540482557888918ull}}, {{12069952478623850598ull, 13310537552797698974ull, 3876156978798778569ull, 4862212801598680574ull}}, {{5864068561425037440ull, 2803113885714960006ull, 14068568260353249020ull, 6077766001998350717ull}}, {{16553457738636072608ull, 3503892357143700007ull, 3750652270159397563ull, 7597207502497938397ull}}, {{17263440114288627236ull, 18330833787710670168ull, 4650000678063317428ull, 4748254689061211498ull}}, {{3132556069151232429ull, 4466798160928786095ull, 15035872884433922594ull, 5935318361326514372ull}}, {{17750753141721204248ull, 14806869738015758426ull, 348097031832851626ull, 7419147951658142966ull}}, {{15705906732003140559ull, 13865979604687236920ull, 14052618700177695978ull, 4636967469786339353ull}}, {{1185639341294374083ull, 8109102469004270343ull, 3730715319939956261ull, 5796209337232924192ull}}, {{15317107231900131315ull, 14748064104682725832ull, 4663394149924945326ull, 7245261671541155240ull}}, {{699639966165612528ull, 9211708093998631483ull, 5829242687406181658ull, 9056577089426444050ull}}, {{16578176043349365494ull, 10369003577176532580ull, 8254962698056251440ull, 5660360680891527531ull}}, {{2275975980477155252ull, 12961254471470665726ull, 5707017354142926396ull, 7075450851114409414ull}}, {{12068342012451219872ull, 16201568089338332157ull, 16357143729533433803ull, 8844313563893011767ull}}, {{9848556766995706372ull, 7820137046622763646ull, 17140743858599477983ull, 5527695977433132354ull}}, {{3087323921889857157ull, 5163485289851066654ull, 12202557786394571671ull, 6909619971791415443ull}}, {{13082526939217097255ull, 1842670593886445413ull, 10641511214565826685ull, 8637024964739269304ull}}, {{10482422346224379736ull, 3457512130392722335ull, 6650944509103641678ull, 5398140602962043315ull}}, {{8491341914353086766ull, 13545262199845678727ull, 3701994617952164193ull, 6747675753702554144ull}}, {{6002491374513970554ull, 3096519694524934697ull, 4627493272440205242ull, 8434594692128192680ull}}, {{15280772155139701356ull, 6547010827505472089ull, 2892183295275128276ull, 5271621682580120425ull}}, {{5265907138642462983ull, 8183763534381840112ull, 8226915137521298249ull, 6589527103225150531ull}}, {{6582383923303078729ull, 14841390436404688044ull, 5671957903474234907ull, 8236908879031438164ull}}, {{13337361988919200014ull, 6970026013539236075ull, 12768345726526172625ull, 5148068049394648852ull}}, {{12060016467721612113ull, 13324218535351432998ull, 15960432158157715781ull, 6435085061743311065ull}}, {{5851648547797239333ull, 2820215113907127536ull, 6115482142414981015ull, 8043856327179138832ull}}, {{3657280342373274583ull, 8680163473833036566ull, 3822176339009363134ull, 5027410204486961770ull}}, {{13794972464821369037ull, 1626832305436519899ull, 14001092460616479726ull, 6284262755608702212ull}}, {{12632029562599323392ull, 11256912418650425682ull, 17501365575770599657ull, 7855328444510877765ull}}, {{12506704495051965024ull, 118041234015434195ull, 13244196494070318738ull, 4909580277819298603ull}}, {{11021694600387568376ull, 9370923579374068552ull, 11943559599160510518ull, 6136975347274123254ull}}, {{13777118250484460470ull, 2490282437362809882ull, 5706077462095862340ull, 7671219184092654068ull}}, {{13222384924980175698ull, 10779798560206531984ull, 12789670450664689770ull, 4794511990057908792ull}}, {{16527981156225219623ull, 4251376163403389172ull, 15987088063330862213ull, 5993139987572385990ull}}, {{2213232371571972912ull, 9925906222681624370ull, 10760488042308801958ull, 7491424984465482488ull}}, {{5994956250659870974ull, 1592005370748627327ull, 6725305026443001224ull, 4682140615290926555ull}}, {{2882009294897450814ull, 1990006713435784159ull, 3794945264626363626ull, 5852675769113658194ull}}, {{17437569673903977229ull, 11710880428649506006ull, 13967053617637730340ull, 7315844711392072742ull}}, {{12573590055525195728ull, 14638600535811882508ull, 8235444985192387117ull, 9144805889240090928ull}}, {{17081865821558023138ull, 11454968344096120519ull, 5147153115745241948ull, 5715503680775056830ull}}, {{16740646258520141019ull, 14318710430120150649ull, 15657313431536328243ull, 7144379600968821037ull}}, {{7090749767868012561ull, 13286702019222800408ull, 5736583734138246592ull, 8930474501211026297ull}}, {{4431718604917507851ull, 8304188762014250255ull, 15114579879904873880ull, 5581546563256891435ull}}, {{927962237719496910ull, 10380235952517812819ull, 14281538831453704446ull, 6976933204071114294ull}}, {{14995010852431534849ull, 3751922903792490215ull, 8628551502462354750ull, 8721166505088892868ull}}, {{16289410810410791137ull, 16180009870152470096ull, 14616216725893747526ull, 5450729065680558042ull}}, {{1915019439303937305ull, 11001640300835811813ull, 9046898870512408600ull, 6813411332100697553ull}}, {{7005460317557309535ull, 13752050376044764766ull, 15920309606567898654ull, 8516764165125871941ull}}, {{18213470753755482171ull, 3983345466600590074ull, 12256036513318630611ull, 5322977603203669963ull}}, {{13543466405339576906ull, 367495814823349689ull, 10708359623220900360ull, 6653722004004587454ull}}, {{3094274951392307421ull, 459369768529187112ull, 4162077492171349642ull, 8317152505005734318ull}}, {{1933921844620192138ull, 4898792123758129849ull, 16436356487889257238ull, 5198220315628583948ull}}, {{7029088324202628076ull, 15346862191552438119ull, 2098701536152019931ull, 6497775394535729936ull}}, {{4174674386825897191ull, 14571891721013159745ull, 2623376920190024914ull, 8122219243169662420ull}}, {{14138386537834655505ull, 13719118344060612744ull, 10862982611973541379ull, 5076387026981039012ull}}, {{17672983172293319381ull, 12537211911648378026ull, 13578728264966926724ull, 6345483783726298765ull}}, {{12867856928511873418ull, 15671514889560472533ull, 3138352275926494693ull, 7931854729657873457ull}}, {{10348253589533614838ull, 12100539815188989285ull, 13490685218522528943ull, 4957409206036170910ull}}, {{17547003005344406452ull, 10513988750558848702ull, 7639984486298385371ull, 6196761507545213638ull}}, {{12710381719825732257ull, 8530799919771172974ull, 326608571018205906ull, 7745951884431517048ull}}, {{3332302556463694757ull, 9943435968284371013ull, 204130356886378691ull, 4841219927769698155ull}}, {{8777064214007006350ull, 7817608941928075862ull, 14090221001390137076ull, 6051524909712122693ull}}, {{1747958230653982129ull, 9772011177410094828ull, 3777718196455507633ull, 7564406137140153367ull}}, {{10315845931013514639ull, 17636722031949779027ull, 9278602900425774126ull, 4727753835712595854ull}}, {{8283121395339505394ull, 12822530503082447976ull, 2374881588677441850ull, 5909692294640744818ull}}, {{10353901744174381743ull, 6804791091998284162ull, 12191974022701578121ull, 7387115368300931022ull}}, {{11082874608536376494ull, 15782209478567397361ull, 3008297745761098421ull, 4616947105188081889ull}}, {{18535205388306905ull, 5892703792927082990ull, 8372058200628760931ull, 5771183881485102361ull}}, {{9246541043590159439ull, 2754193722731465833ull, 15076758769213339068ull, 7213979851856377951ull}}, {{16169862322915087202ull, 3442742153414332291ull, 14234262443089285931ull, 9017474814820472439ull}}, {{7800320942608235550ull, 18292614910379815346ull, 15813943054571885562ull, 5635921759262795274ull}}, {{527029141405518629ull, 13642396601119993375ull, 10544056781360081145ull, 7044902199078494093ull}}, {{14493844482039061998ull, 3217937696117828006ull, 17791756995127489336ull, 8806127748848117616ull}}, {{4446966782847025845ull, 2011211060073642504ull, 11119848121954680835ull, 5503829843030073510ull}}, {{5558708478558782306ull, 16349071880374216842ull, 4676438115588575235ull, 6879787303787591888ull}}, {{16171757635053253691ull, 15824653832040383148ull, 5845547644485719044ull, 8599734129734489860ull}}, {{883976485053507749ull, 667036608170463660ull, 12876839314658350211ull, 5374833831084056162ull}}, {{1104970606316884686ull, 14668853815495243287ull, 6872677106468161955ull, 6718542288855070203ull}}, {{15216271313178269569ull, 13724381250941666204ull, 3979160364657814540ull, 8398177861068837754ull}}, {{286797533881642673ull, 17801110318693317186ull, 7098661246338521991ull, 5248861163168023596ull}}, {{9581868954206829149ull, 17639701879939258578ull, 8873326557923152489ull, 6561076453960029495ull}}, {{2753964155903760628ull, 8214569294641909511ull, 6479972178976552708ull, 8201345567450036869ull}}, {{8638756625080932249ull, 14357477846005969252ull, 6355825621074039394ull, 5125840979656273043ull}}, {{10798445781351165311ull, 8723475270652685757ull, 3333096007915161339ull, 6407301224570341304ull}}, {{18109743245116344542ull, 6292658069888469292ull, 4166370009893951674ull, 8009126530712926630ull}}, {{2095217491342939531ull, 8544597312107681212ull, 16439039311465883508ull, 5005704081695579143ull}}, {{2619021864178674414ull, 10680746640134601515ull, 15937113120904966481ull, 6257130102119473929ull}}, {{17108835385505506729ull, 17962619318595639797ull, 6086333345849044389ull, 7821412627649342412ull}}, {{12998865125154635658ull, 13532480083335968825ull, 13027330378010428551ull, 4888382892280839007ull}}, {{2413523351161130860ull, 12303914085742573128ull, 11672476954085647785ull, 6110478615351048759ull}}, {{3016904188951413575ull, 1544834551896052698ull, 9978910174179671828ull, 7638098269188810949ull}}, {{6497251136522021389ull, 10188893631789808744ull, 8542661868075988844ull, 4773811418243006843ull}}, {{8121563920652526736ull, 12736117039737260930ull, 6066641316667598151ull, 5967264272803758554ull}}, {{928582863960882612ull, 11308460281244188259ull, 16806673682689273497ull, 7459080341004698192ull}}, {{16721265354471409296ull, 150258648136535805ull, 10504171051680795936ull, 4661925213127936370ull}}, {{7066523637807097908ull, 187823310170669757ull, 3906841777746219112ull, 5827406516409920463ull}}, {{13444840565686260289ull, 234779137713337196ull, 271866203755385986ull, 7284258145512400579ull}}, {{16806050707107825362ull, 9516845958996447303ull, 14174890809976396194ull, 9105322681890500723ull}}, {{17421310719583472707ull, 10559714742800167468ull, 6553463747021553669ull, 5690826676181562952ull}}, {{3329894325769789268ull, 17811329446927597240ull, 8191829683776942086ull, 7113533345226953690ull}}, {{4162367907212236585ull, 13040789771804720742ull, 1016415067866401800ull, 8891916681533692113ull}}, {{16436537997289811578ull, 8150493607377950463ull, 12164474463484970885ull, 5557447925958557570ull}}, {{15933986478184876568ull, 14799803027649825983ull, 5982221042501437798ull, 6946809907448196963ull}}, {{15305797079303707806ull, 9276381747707506671ull, 2866090284699409344ull, 8683512384310246204ull}}, {{16483652202205899235ull, 5797738592317191669ull, 11014678464791906648ull, 5427195240193903877ull}}, {{6769507197475210331ull, 7247173240396489587ull, 18380034099417271214ull, 6783994050242379846ull}}, {{3850197978416625010ull, 18282338587350387792ull, 13751670587416813209ull, 8479992562802974808ull}}, {{2406373736510390632ull, 4508932589452910514ull, 8594794117135508256ull, 5299995351751859255ull}}, {{12231339207492764097ull, 5636165736816138142ull, 6131806627991997416ull, 6624994189689824069ull}}, {{6065801972511179314ull, 7045207171020172678ull, 12276444303417384674ull, 8281242737112280086ull}}, {{17626184288101650783ull, 9014940500314995827ull, 3061091671208477517ull, 5175776710695175054ull}}, {{17421044341699675575ull, 15880361643821132688ull, 13049736625865372704ull, 6469720888368968817ull}}, {{3329561353415042852ull, 1403707981066864245ull, 2477112727049552169ull, 8087151110461211022ull}}, {{4386818855098095735ull, 12406532534235259913ull, 15383253509688133817ull, 5054469444038256888ull}}, {{10095209587300007573ull, 1673107612511911179ull, 782322813400615656ull, 6318086805047821111ull}}, {{8007325965697621562ull, 2091384515639888974ull, 14812961572032933282ull, 7897608506309776388ull}}, {{392892710133625572ull, 5918801340702318513ull, 34728945665807493ull, 4936005316443610243ull}}, {{5102801906094419869ull, 12010187694305286045ull, 13878469237364423078ull, 6170006645554512803ull}}, {{10990188401045412740ull, 5789362581026831748ull, 12736400528278140944ull, 7712508306943141004ull}}, {{16092239787508158771ull, 3618351613141769842ull, 17183622367028613898ull, 4820317691839463127ull}}, {{10891927697530422655ull, 13746311553281988111ull, 16867841940358379468ull, 6025397114799328909ull}}, {{9003223603485640415ull, 17182889441602485139ull, 7249744370165810623ull, 7531746393499161137ull}}, {{3321171742964831308ull, 17656834928642635068ull, 16060305277422101399ull, 4707341495936975710ull}}, {{4151464678706039134ull, 17459357642375905931ull, 10852009559922850941ull, 5884176869921219638ull}}, {{577644829955161014ull, 7989138997687718702ull, 4341639913048787869ull, 7355221087401524548ull}}, {{9945428074298727075ull, 14598109765537036281ull, 5427049891310984836ull, 9194026359251905685ull}}, {{17745107592505174182ull, 18347190640315423483ull, 5697749191283059474ull, 5746266474532441053ull}}, {{17569698472204079824ull, 13710616263539503546ull, 11733872507531212247ull, 7182833093165551316ull}}, {{12738751053400323971ull, 12526584310996991529ull, 14667340634414015309ull, 8978541366456939145ull}}, {{1044190380734120626ull, 10134958203586813658ull, 2249558868867677712ull, 5611588354035586966ull}}, {{10528610012772426591ull, 12668697754483517072ull, 12035320622939372948ull, 7014485442544483707ull}}, {{13160762515965533238ull, 15835872193104396340ull, 10432464760246828281ull, 8768106803180604634ull}}, {{17448848609333234082ull, 2979891093049165856ull, 11131976493581655580ull, 5480066751987877896ull}}, {{3364316687956990987ull, 3724863866311457321ull, 13914970616977069475ull, 6850083439984847370ull}}, {{8817081878373626637ull, 44393814461933747ull, 8170341234366561036ull, 8562604299981059213ull}}, {{3204833164769822696ull, 9251118170893484400ull, 7412306280692794599ull, 5351627687488162008ull}}, {{4006041455962278370ull, 6952211695189467596ull, 9265382850865993249ull, 6689534609360202510ull}}, {{5007551819952847963ull, 13301950637414222399ull, 2358356526727715753ull, 8361918261700253138ull}}, {{10047248915111611833ull, 1396190120742807143ull, 6085658847632210250ull, 5226198913562658211ull}}, {{7947375125462126887ull, 10968609687783284737ull, 2995387541112874908ull, 6532748641953322764ull}}, {{14545904925255046513ull, 13710762109729105921ull, 3744234426391093635ull, 8165935802441653455ull}}, {{2173661550643322215ull, 6263383309366997249ull, 9257675544135515378ull, 5103709876526033409ull}}, {{7328762956731540672ull, 17052601173563522369ull, 16183780448596782126ull, 6379637345657541761ull}}, {{13772639714341813744ull, 12092379430099627153ull, 6394667505463813946ull, 7974546682071927202ull}}, {{1690370793822551734ull, 12169423162239654875ull, 8608353209342271620ull, 4984091676294954501ull}}, {{15948021547560353380ull, 15211778952799568593ull, 15372127530105227429ull, 6230114595368693126ull}}, {{6099968879168278012ull, 5179665635717297030ull, 9991787375776758479ull, 7787643244210866408ull}}, {{17647538604762337470ull, 10154820049964392499ull, 6244867109860474049ull, 4867277027631791505ull}}, {{17447737237525533933ull, 17305211080882878528ull, 12417769905752980465ull, 6084096284539739381ull}}, {{3362927473197365801ull, 7796455795821434449ull, 1687154326909061870ull, 7605120355674674227ull}}, {{13631044716816823386ull, 261098853961008626ull, 17195372518814021333ull, 4753200222296671391ull}}, {{7815433859166253424ull, 4938059585878648687ull, 16882529630090138762ull, 5941500277870839239ull}}, {{5157606305530428876ull, 15395946519203086667ull, 16491476019185285548ull, 7426875347338549049ull}}, {{917660931742824095ull, 399094537647153359ull, 3389643484349721612ull, 4641797092086593156ull}}, {{14982134219960693831ull, 498868172058941698ull, 4237054355437152015ull, 5802246365108241445ull}}, {{9504295738096091481ull, 14458643270355840835ull, 9908003962723827922ull, 7252807956385301806ull}}, {{7268683654192726447ull, 8849932051090025236ull, 3161632916550009095ull, 9066009945481627258ull}}, {{13766299320725229838ull, 12448736559572347628ull, 6587706591271143588ull, 5666256215926017036ull}}, {{17207874150906537297ull, 15560920699465434535ull, 8234633239088929485ull, 7082820269907521295ull}}, {{16898156670205783717ull, 5616092819049629457ull, 5681605530433773953ull, 8853525337384401619ull}}, {{3643818891237532967ull, 15039273057974488171ull, 1245160447307414768ull, 5533453335865251012ull}}, {{18389831669329079921ull, 352347248758558597ull, 1556450559134268461ull, 6916816669831563765ull}}, {{9152231531379186189ull, 5052120079375586151ull, 6557249217345223480ull, 8646020837289454706ull}}, {{12637673734753073224ull, 3157575049609741344ull, 8709966779268152579ull, 5403763023305909191ull}}, {{15797092168441341530ull, 17782026867294340392ull, 6275772455657802819ull, 6754703779132386489ull}}, {{1299621136842125297ull, 17615847565690537587ull, 12456401587999641428ull, 8443379723915483111ull}}, {{16953164275022185975ull, 1786532691701810183ull, 14702780020140857749ull, 5277112327447176944ull}}, {{16579769325350344564ull, 6844851883054650633ull, 18378475025176072186ull, 6596390409308971180ull}}, {{6889653601405766993ull, 17779436890673089100ull, 4526349707760538616ull, 8245488011636213976ull}}, {{13529405537733380179ull, 11112148056670680687ull, 2828968567350336635ull, 5153430007272633735ull}}, {{12300070903739337319ull, 9278499052410962955ull, 17371268764470084506ull, 6441787509090792168ull}}, {{10763402611246783745ull, 2374751778658927886ull, 3267341881878054017ull, 8052234386363490211ull}}, {{2115440613601851937ull, 13013434907730299689ull, 18182989740669641424ull, 5032646491477181381ull}}, {{7255986785429702825ull, 16266793634662874611ull, 8893679120554888068ull, 6290808114346476727ull}}, {{4458297463359740627ull, 1886747969619041648ull, 6505412882266222182ull, 7863510142933095909ull}}, {{2786435914599837892ull, 15014275536294064742ull, 6371726060630082815ull, 4914693839333184943ull}}, {{12706416930104573173ull, 14156158401940193023ull, 3352971557360215615ull, 6143367299166481179ull}}, {{11271335144203328562ull, 13083511983997853375ull, 18026272501982433231ull, 7679209123958101473ull}}, {{13962113492768162208ull, 15094724017639740215ull, 4348891286097938913ull, 4799505702473813421ull}}, {{12840955847532814855ull, 5033346966767511557ull, 10047800126049811546ull, 5999382128092266776ull}}, {{2216136754133854857ull, 15515055745314165255ull, 12559750157562264432ull, 7499227660115333470ull}}, {{8302614498974741142ull, 9696909840821353284ull, 3238157830049027366ull, 4687017287572083419ull}}, {{10378268123718426427ull, 2897765264171915797ull, 17882755342843447920ull, 5858771609465104273ull}}, {{17584521173075420938ull, 3622206580214894746ull, 8518386123272146188ull, 7323464511831380342ull}}, {{12757279429489500364ull, 4527758225268618433ull, 1424610617235406927ull, 9154330639789225428ull}}, {{1055770615789855872ull, 9747377918433968377ull, 10113753672626905137ull, 5721456649868265892ull}}, {{5931399288164707744ull, 16795908416469848375ull, 12642192090783631421ull, 7151820812335332365ull}}, {{2802563091778496775ull, 7159827465305146757ull, 1967682058197375565ull, 8939776015419165457ull}}, {{4057444941575254437ull, 6780735175029410675ull, 12759016332441829488ull, 5587360009636978410ull}}, {{460120158541680142ull, 8475918968786763344ull, 6725398378697511052ull, 6984200012046223013ull}}, {{575150198177100177ull, 10594898710983454180ull, 13018433991799276719ull, 8730250015057778766ull}}, {{9582840910715463419ull, 13539340722005740718ull, 3524835226447160045ull, 5456406259411111729ull}}, {{2755179101539553466ull, 3089117847225012186ull, 9017730051486337961ull, 6820507824263889661ull}}, {{12667345913779217640ull, 8473083327458653136ull, 15883848582785310355ull, 8525634780329862076ull}}, {{7917091196112011025ull, 2989834070447964258ull, 704033327386043164ull, 5328521737706163798ull}}, {{672991958285237973ull, 3737292588059955323ull, 10103413696087329763ull, 6660652172132704747ull}}, {{14676298003138711178ull, 59929716647556249ull, 8017581101681774300ull, 8325815215165880934ull}}, {{2255157224320612631ull, 9260828109759498464ull, 399302170123721033ull, 5203634509478675584ull}}, {{2818946530400765788ull, 16187721155626760984ull, 499127712654651291ull, 6504543136848344480ull}}, {{3523683163000957235ull, 15622965426106063326ull, 623909640818314114ull, 8130678921060430600ull}}, {{16037360032157761984ull, 14376039409743677482ull, 389943525511446321ull, 5081674325662769125ull}}, {{10823328003342426672ull, 4134991206897433141ull, 5099115425316695806ull, 6352092907078461406ull}}, {{18140846022605421244ull, 14392111045476567234ull, 15597266318500645565ull, 7940116133848076757ull}}, {{15949714782555776182ull, 11300912412636548473ull, 12054134458276597430ull, 4962572583655047973ull}}, {{6102085422912556515ull, 4902768478940909784ull, 1232610017563583076ull, 6203215729568809967ull}}, {{7627606778640695644ull, 6128460598676137230ull, 15375820577236642557ull, 7754019661961012458ull}}, {{155568218223046873ull, 6136130883386279721ull, 14221573879200289502ull, 4846262288725632786ull}}, {{4806146291206196496ull, 16893535641087625459ull, 8553595312145586069ull, 6057827860907040983ull}}, {{1395996845580357715ull, 7281861496077368112ull, 6080308121754594683ull, 7572284826133801229ull}}, {{872498028487723572ull, 2245320425834661118ull, 6106035585310315629ull, 4732678016333625768ull}}, {{10313994572464430273ull, 7418336550720714301ull, 7632544481637894536ull, 5915847520417032210ull}}, {{17504179234007925746ull, 9272920688400892876ull, 317308565192592362ull, 7394809400521290263ull}}, {{1716739984400177783ull, 10407261448677945952ull, 7115846880886452082ull, 4621755875325806414ull}}, {{2145924980500222229ull, 3785704773992656632ull, 18118180637962840911ull, 5777194844157258017ull}}, {{2682406225625277786ull, 120444949063432886ull, 8812667742171387427ull, 7221493555196572522ull}}, {{12576379818886373040ull, 13985614241611454819ull, 1792462640859458475ull, 9026866943995715653ull}}, {{5554394377590289198ull, 6435165891793465310ull, 3426132159750855499ull, 5641791839997322283ull}}, {{16166365008842637306ull, 3432271346314443733ull, 18117723254970733086ull, 7052239799996652853ull}}, {{6372898205771132920ull, 13513711219747830475ull, 8812096013431252645ull, 8815299749995816067ull}}, {{1677218369393264123ull, 10751912521556087999ull, 3201716999180838951ull, 5509562343747385042ull}}, {{15931581017023743866ull, 8828204633517722094ull, 13225518285830824497ull, 6886952929684231302ull}}, {{10691104234424904024ull, 15646941810324540522ull, 7308525820433754813ull, 8608691162105289128ull}}, {{11293626164942952919ull, 12085181640666531778ull, 4567828637771096758ull, 5380431976315805705ull}}, {{4893660669323915341ull, 5883105013978388915ull, 10321471815641258852ull, 6725539970394757131ull}}, {{1505389818227506272ull, 7353881267472986144ull, 8290153751124185661ull, 8406924962993446414ull}}, {{940868636392191420ull, 6902018801384310292ull, 569660076025228134ull, 5254328101870904009ull}}, {{1176085795490239275ull, 17850895538585163673ull, 5323761113458923071ull, 6567910127338630011ull}}, {{6081793262790186998ull, 17701933404804066687ull, 2043015373396265935ull, 8209887659173287514ull}}, {{10718649816884948730ull, 17981237405643623535ull, 5888570626800054113ull, 5131179786983304696ull}}, {{8786626252678798008ull, 8641488701772365707ull, 7360713283500067642ull, 6413974733729130870ull}}, {{6371596797421109606ull, 1578488840360681326ull, 18424263641229860361ull, 8017468417161413587ull}}, {{17817306053670357216ull, 12515770571293895588ull, 9209321766554968773ull, 5010917760725883492ull}}, {{3824888493378394904ull, 1809655158835205774ull, 11511652208193710967ull, 6263647200907354365ull}}, {{14004482653577769438ull, 16097127003826170929ull, 554507204959974996ull, 7829559001134192957ull}}, {{1835272630845024043ull, 837332340536581023ull, 2652410012313678325ull, 4893474375708870598ull}}, {{16129148843838443765ull, 5658351444098114182ull, 12538884552246873714ull, 6116842969636088247ull}}, {{10938064017943278899ull, 16296311341977418536ull, 11061919671881204238ull, 7646053712045110309ull}}, {{6836290011214549312ull, 5573508570308498681ull, 9219542804139446601ull, 4778783570028193943ull}}, {{13157048532445574544ull, 11578571731313011255ull, 6912742486746920347ull, 5973479462535242429ull}}, {{11834624647129580276ull, 9861528645713876165ull, 13252614126861038338ull, 7466849328169053036ull}}, {{9702483413669681624ull, 10775141421998560507ull, 17506255866142924769ull, 4666780830105658147ull}}, {{7516418248659714126ull, 18080612795925588538ull, 17271133814251268057ull, 5833476037632072684ull}}, {{172150773969866850ull, 8765707939624821961ull, 3142173194104533456ull, 7291845047040090856ull}}, {{4826874485889721466ull, 10957134924531027451ull, 3927716492630666820ull, 9114806308800113570ull}}, {{710953544467381965ull, 16071581364686667965ull, 7066508826321554666ull, 5696753943000070981ull}}, {{5500377949011615360ull, 10866104669003559148ull, 13444822051329331237ull, 7120942428750088726ull}}, {{6875472436264519199ull, 18194316854681836839ull, 7582655527306888238ull, 8901178035937610908ull}}, {{11214699300306406356ull, 6759762015748760120ull, 13962531741421580957ull, 5563236272461006817ull}}, {{14018374125383007945ull, 13061388538113338054ull, 3618106621494812484ull, 6954045340576258522ull}}, {{8299595619873984123ull, 16326735672641672568ull, 13746005313723291413ull, 8692556675720323152ull}}, {{5187247262421240077ull, 12510052804614739307ull, 8591253321077057133ull, 5432847922325201970ull}}, {{1872373059599162192ull, 1802507950486260422ull, 1515694614491545609ull, 6791059902906502463ull}}, {{11563838361353728548ull, 6864820956535213431ull, 15729676323396595723ull, 8488824878633128078ull}}, {{14144928003487162198ull, 1984670088620814442ull, 5219361683695484423ull, 5305515549145705049ull}}, {{8457787967504176940ull, 16315895666058181765ull, 11135888123046743432ull, 6631894436432131311ull}}, {{15183920977807609079ull, 1948125508863175590ull, 9308174135381041387ull, 8289868045540164139ull}}, {{4878264592702367770ull, 17358479507535342408ull, 3511765825399456914ull, 5181167528462602587ull}}, {{6097830740877959713ull, 12474727347564402202ull, 18224765337031484855ull, 6476459410578253233ull}}, {{16845660462952225449ull, 10981723166028114848ull, 8945898616007192357ull, 8095574263222816542ull}}, {{10528537789345140906ull, 9169419987981265732ull, 979500616577107319ull, 5059733914514260339ull}}, {{13160672236681426132ull, 6850088966549194261ull, 15059433826003547861ull, 6324667393142825423ull}}, {{2615782240569618953ull, 13174297226613880731ull, 14212606264077046922ull, 7905834241428531779ull}}, {{17775764964851869510ull, 12845621785061063360ull, 6577035905834460374ull, 4941146400892832362ull}}, {{3772962132355285271ull, 6833655194471553393ull, 17444666919147851276ull, 6176433001116040452ull}}, {{9327888683871494493ull, 8542068993089441741ull, 3359089575225262479ull, 7720541251395050566ull}}, {{8135773436633378010ull, 12256322148321982944ull, 15934489039797952761ull, 4825338282121906603ull}}, {{10169716795791722513ull, 1485344630120314968ull, 15306425281320053048ull, 6031672852652383254ull}}, {{12712145994739653141ull, 1856680787650393710ull, 9909659564795290502ull, 7539591065815479068ull}}, {{3333405228284895309ull, 14995483547563659781ull, 15416909264851832371ull, 4712244416134674417ull}}, {{8778442553783507040ull, 14132668416027186822ull, 5436078525782626752ull, 5890305520168343022ull}}, {{1749681155374607992ull, 17665835520033983528ull, 16018470194083059248ull, 7362881900210428777ull}}, {{2187101444218259990ull, 3635550326332927794ull, 6188029687321660349ull, 9203602375263035972ull}}, {{5978624421063800398ull, 4578061963171773823ull, 13090890591430813526ull, 5752251484539397482ull}}, {{2861594507902362593ull, 14945949490819493087ull, 7140241202433741099ull, 7190314355674246853ull}}, {{17412051190160116954ull, 14070750845096978454ull, 13536987521469564278ull, 8987892944592808566ull}}, {{6270845975422685192ull, 4182533259758223630ull, 3848931182491089770ull, 5617433090370505354ull}}, {{17061929506133132298ull, 14451538611552555345ull, 14034536014968638020ull, 7021791362963131692ull}}, {{7492353827384251661ull, 18064423264440694182ull, 17543170018710797525ull, 8777239203703914615ull}}, {{71035123687769384ull, 13596107549489127816ull, 17882010289335330309ull, 5485774502314946634ull}}, {{88793904609711730ull, 3160076381579246058ull, 13129140824814387079ull, 6857218127893683293ull}}, {{9334364417616915470ull, 17785153532256221284ull, 2576367975735820136ull, 8571522659867104117ull}}, {{15057349797865347977ull, 11115720957660138302ull, 3916072994048581537ull, 5357201662416940073ull}}, {{9598315210476909163ull, 59593141793009166ull, 9506777260988114826ull, 6696502078021175091ull}}, {{2774521976241360646ull, 9297863464096037266ull, 7271785557807755628ull, 8370627597526468864ull}}, {{6345762253578238308ull, 15034536701914799099ull, 4544865973629847267ull, 5231642248454043040ull}}, {{3320516798545409981ull, 14181484858966110970ull, 5681082467037309084ull, 6539552810567553800ull}}, {{13374018035036538284ull, 17726856073707638712ull, 7101353083796636355ull, 8174441013209442250ull}}, {{8358761271897836428ull, 8773442036853580243ull, 9050031695800285626ull, 5109025633255901406ull}}, {{5836765571444907630ull, 1743430509212199496ull, 2089167582895581225ull, 6386282041569876758ull}}, {{7295956964306134538ull, 6790974154942637274ull, 11834831515474252339ull, 7982852551962345947ull}}, {{9171659121118721990ull, 1938515837625454344ull, 5090926687957713760ull, 4989282844976466217ull}}, {{11464573901398402488ull, 2423144797031817930ull, 10975344378374530104ull, 6236603556220582771ull}}, {{5107345339893227302ull, 3028930996289772413ull, 9107494454540774726ull, 7795754445275728464ull}}, {{5497933846646961016ull, 15728139927963271470ull, 5692184034087984203ull, 4872346528297330290ull}}, {{16095789345163477078ull, 15048488891526701433ull, 16338602079464756062ull, 6090433160371662862ull}}, {{6284678626172182635ull, 9587239077553600984ull, 11199880562476169270ull, 7613041450464578578ull}}, {{3927924141357614147ull, 1380338405043612711ull, 11611611369974993698ull, 4758150906540361611ull}}, {{298219158269629780ull, 10948795043159291697ull, 9902828194041354218ull, 5947688633175452014ull}}, {{4984459966264425128ull, 4462621767094338813ull, 3155163205696916965ull, 7434610791469315018ull}}, {{5421130488128959657ull, 5094981613647655710ull, 6583663021987961007ull, 4646631744668321886ull}}, {{15999785147015975380ull, 1757040998632181733ull, 17452950814339727067ull, 5808289680835402357ull}}, {{6164673378487805512ull, 16031359303572390879ull, 7981130462642495121ull, 7260362101044252947ull}}, {{3094155704682368986ull, 6204141074183324887ull, 5364727059875730998ull, 9075452626305316184ull}}, {{8851376343067562473ull, 17712646226646741766ull, 3352954412422331873ull, 5672157891440822615ull}}, {{1840848391979677283ull, 8305749728026263496ull, 18026251070810078554ull, 7090197364301028268ull}}, {{2301060489974596603ull, 1158815123178053562ull, 4086069764803046577ull, 8862746705376285336ull}}, {{6049848824661510781ull, 12253474498054753236ull, 2553793603001904110ull, 5539216690860178335ull}}, {{7562311030826888476ull, 6093471085713665737ull, 17027300059034543850ull, 6924020863575222918ull}}, {{14064574806960998499ull, 16840210893996857979ull, 12060753036938404004ull, 8655026079469028648ull}}, {{6484516245136930110ull, 1301759771893260429ull, 7537970648086502503ull, 5409391299668142905ull}}, {{12717331324848550542ull, 15462257770148739248ull, 14034149328535516032ull, 6761739124585178631ull}}, {{15896664156060688177ull, 881078138976372444ull, 12931000642242007137ull, 8452173905731473289ull}}, {{712043060683154303ull, 12079888882928702538ull, 1164346373760172604ull, 5282608691082170806ull}}, {{10113425862708718686ull, 15099861103660878172ull, 10678805004054991563ull, 6603260863852713507ull}}, {{12641782328385898358ull, 14263140361148709811ull, 8736820236641351550ull, 8254076079815891884ull}}, {{5595270946027492522ull, 4302776707290555728ull, 14683884684755620527ull, 5158797549884932427ull}}, {{6994088682534365652ull, 766784865685806756ull, 13743169837517137755ull, 6448496937356165534ull}}, {{8742610853167957065ull, 14793539137389422157ull, 7955590260041646385ull, 8060621171695206918ull}}, {{7769974792443667118ull, 2328432933227306992ull, 360557894098641087ull, 5037888232309504324ull}}, {{9712468490554583897ull, 16745599221816297452ull, 450697367623301358ull, 6297360290386880405ull}}, {{12140585613193229871ull, 11708626990415596007ull, 5175057727956514602ull, 7871700362983600506ull}}, {{14505395035886850526ull, 11929577887437135408ull, 7846097098400209530ull, 4919812726864750316ull}}, {{18131743794858563157ull, 5688600322441643452ull, 9807621373000261913ull, 6149765908580937895ull}}, {{4217935669863652330ull, 11722436421479442220ull, 7647840697822939487ull, 7687207385726172369ull}}, {{11859581830519558515ull, 14244051791065733243ull, 16309115482207806939ull, 4804504616078857730ull}}, {{10212791269722060239ull, 13193378720404778650ull, 11163022315904982866ull, 6005630770098572163ull}}, {{3542617050297799491ull, 7268351363651197505ull, 9342091876453840679ull, 7507038462623215204ull}}, {{13743350702504594442ull, 11460248629923080296ull, 15062179459638426232ull, 4691899039139509502ull}}, {{17179188378130743052ull, 14325310787403850370ull, 9604352287693256982ull, 5864873798924386878ull}}, {{12250613435808653007ull, 8683266447400037155ull, 2782068322761795420ull, 7331092248655483598ull}}, {{10701580776333428355ull, 10854083059250046444ull, 12700957440307020083ull, 9163865310819354497ull}}, {{15911860022063168530ull, 4477958902817585075ull, 1020569372550805696ull, 5727415819262096561ull}}, {{15278139009151572758ull, 5597448628521981344ull, 5887397734115895024ull, 7159269774077620701ull}}, {{650929687729914332ull, 6996810785652476681ull, 11970933186072256684ull, 8949087217597025876ull}}, {{11936046100899666218ull, 13596378777887573733ull, 16705205278149936235ull, 5593179510998141172ull}}, {{1084999570842419060ull, 12383787453932079263ull, 2434762523977868678ull, 6991474388747676466ull}}, {{15191307518835187537ull, 6256362280560323270ull, 12266825191827111656ull, 8739342985934595582ull}}, {{4882881180844604307ull, 3910226425350202044ull, 3055079726464556881ull, 5462089366209122239ull}}, {{6103601476055755383ull, 9499469050115140459ull, 17653907713362859813ull, 6827611707761402798ull}}, {{3017815826642306325ull, 16486022331071313478ull, 12844012604848798958ull, 8534514634701753498ull}}, {{15721192946933605165ull, 5692077938492183019ull, 12639193896457887253ull, 5334071646688595936ull}}, {{15039805165239618552ull, 11726783441542616678ull, 15798992370572359066ull, 6667589558360744920ull}}, {{9576384419694747382ull, 5435107265073495040ull, 1301996389505897217ull, 8334486947950931151ull}}, {{5985240262309217114ull, 14926157086739404160ull, 7731276771082267616ull, 5209054342469331969ull}}, {{7481550327886521393ull, 210952284714703584ull, 14275781982280222425ull, 6511317928086664961ull}}, {{9351937909858151741ull, 4875376374320767384ull, 4009669422568114319ull, 8139147410108331202ull}}, {{5844961193661344838ull, 9964639261591561471ull, 7117729407532459353ull, 5086967131317707001ull}}, {{2694515473649293144ull, 17067485095416839743ull, 13508847777842962095ull, 6358708914147133751ull}}, {{17203202397343780141ull, 16722670350843661774ull, 12274373703876314715ull, 7948386142683917189ull}}, {{6140315479912474684ull, 8145825960063594657ull, 9977326574136390649ull, 4967741339177448243ull}}, {{12287080368317981259ull, 14793968468506881225ull, 7859972199243100407ull, 6209676673971810304ull}}, {{1523792405115312862ull, 13880774567206213628ull, 9824965249053875509ull, 7762095842464762880ull}}, {{10175742290051846347ull, 10981327113717577469ull, 6140603280658672193ull, 4851309901540476800ull}}, {{17331363880992195838ull, 18338344910574359740ull, 7675754100823340241ull, 6064137376925596000ull}}, {{3217460777530693181ull, 9087873082935785964ull, 9594692626029175302ull, 7580171721156995000ull}}, {{11234285022811459046ull, 1068234658407478323ull, 5996682891268234564ull, 4737607325723121875ull}}, {{9431170260086935904ull, 1335293323009347904ull, 2884167595657905301ull, 5922009157153902344ull}}, {{11788962825108669880ull, 6280802672189072784ull, 3605209494572381626ull, 7402511446442377930ull}}, {{7368101765692918675ull, 8537187688545558394ull, 6864941952535126420ull, 4626569654026486206ull}}, {{18433499243970924152ull, 10671484610681947992ull, 17804549477523683833ull, 5783212067533107757ull}}, {{4595129981254103573ull, 17951041781779822895ull, 8420628791622441079ull, 7229015084416384697ull}}, {{1132226458140241563ull, 17827116208797390715ull, 15137472007955439253ull, 9036268855520480871ull}}, {{16848542600833508641ull, 13447790639712063148ull, 16378449032613231389ull, 5647668034700300544ull}}, {{2613934177332334185ull, 2974680244357915224ull, 2026317217056987621ull, 7059585043375375681ull}}, {{3267417721665417731ull, 8330036323874781934ull, 7144582539748622430ull, 8824481304219219601ull}}, {{15877194131323049794ull, 594586683994350804ull, 15994579133411358779ull, 5515300815137012250ull}}, {{1399748590444260626ull, 14578291410275102218ull, 10769851879909422665ull, 6894126018921265313ull}}, {{10973057774910101591ull, 4387806207561714060ull, 18074000868314166236ull, 8617657523651581641ull}}, {{16081533146173589302ull, 11965750916580847095ull, 4378721515055272041ull, 5386035952282238526ull}}, {{15490230414289598724ull, 1122130590443895157ull, 14696773930673865860ull, 6732544940352798157ull}}, {{5527729962579834693ull, 1402663238054868947ull, 4535909358060168613ull, 8415681175440997697ull}}, {{1148988217398702731ull, 3182507532997987044ull, 14364158394856075143ull, 5259800734650623560ull}}, {{1436235271748378414ull, 17813192471529647517ull, 17955197993570093928ull, 6574750918313279450ull}}, {{6406980108112860921ull, 3819746515702507780ull, 13220625455107841603ull, 8218438647891599313ull}}, {{13227734604425313884ull, 81498563100373410ull, 1345361881801319146ull, 5136524154932249571ull}}, {{7311296218676866547ull, 9325245240730242571ull, 15516760407533812644ull, 6420655193665311963ull}}, {{4527434254918695279ull, 11656556550912803214ull, 14784264490989877901ull, 8025818992081639954ull}}, {{16664704464606348262ull, 9591190853534195960ull, 13851851325296061592ull, 5016136870051024971ull}}, {{2384136507048383711ull, 11988988566917744951ull, 12703128138192689086ull, 6270171087563781214ull}}, {{16815228689092643351ull, 5762863671792405380ull, 6655538135886085550ull, 7837713859454726518ull}}, {{1286145893828126286ull, 17436847850152417075ull, 17994769390210967180ull, 4898571162159204073ull}}, {{15442740422567321570ull, 3349315738980969727ull, 8658403682481545264ull, 6123213952699005092ull}}, {{14691739509781764058ull, 4186644673726212159ull, 10823004603101931580ull, 7654017440873756365ull}}, {{16099866221254684393ull, 11840024957933658407ull, 9070220886152401189ull, 4783760900546097728ull}}, {{15513146758140967587ull, 964973142134909297ull, 11337776107690501487ull, 5979701125682622160ull}}, {{5556375392394045771ull, 15041274482950800334ull, 14172220134613126858ull, 7474626407103277700ull}}, {{17307792675528442319ull, 14012482570271638112ull, 18081009620987980094ull, 4671641504439548562ull}}, {{3187996770701001283ull, 8292231175984771833ull, 13377889989380199310ull, 5839551880549435703ull}}, {{8596681981803639507ull, 1141916933126188983ull, 12110676468297861234ull, 7299439850686794629ull}}, {{6134166458827161480ull, 10650768203262512037ull, 1303287530090162830ull, 9124299813358493287ull}}, {{6139697045980669877ull, 2045044108611682119ull, 7732083733947433625ull, 5702687383349058304ull}}, {{3062935289048449442ull, 7167991154191990553ull, 9665104667434292031ull, 7128359229186322880ull}}, {{8440355129737949707ull, 4348302924312600287ull, 12081380834292865039ull, 8910449036482903600ull}}, {{12192750983727300423ull, 9635218355336457035ull, 7550863021433040649ull, 5569030647801814750ull}}, {{10629252711231737625ull, 16655708962597959198ull, 215206739936525003ull, 6961288309752268438ull}}, {{4063193852184896223ull, 16207950184820061094ull, 9492380461775432062ull, 8701610387190335547ull}}, {{16374554212897723851ull, 5518282847085150279ull, 3626894779395951087ull, 5438506491993959717ull}}, {{15856506747694766910ull, 2286167540429049945ull, 9145304492672326763ull, 6798133114992449646ull}}, {{5985575379336294926ull, 16692767480818476144ull, 2208258578985632645ull, 8497666393740562058ull}}, {{3740984612085184329ull, 12738822684725241542ull, 5991847630293408307ull, 5311041496087851286ull}}, {{13899602801961256219ull, 11311842337479164023ull, 16713181574721536192ull, 6638801870109814107ull}}, {{12762817484024182369ull, 14139802921848955029ull, 16279790949974532336ull, 8298502337637267634ull}}, {{10282603936728807933ull, 8837376826155596893ull, 14786555362161470614ull, 5186563961023292271ull}}, {{17464940939338397820ull, 1823348995839720308ull, 13871508184274450364ull, 6483204951279115339ull}}, {{3384432100463445659ull, 2279186244799650386ull, 12727699211915675051ull, 8104006189098894174ull}}, {{6726956081217041441ull, 17565392467495639155ull, 3343125989019909002ull, 5065003868186808859ull}}, {{3797009083093913897ull, 12733368547514773136ull, 18013965541557049965ull, 6331254835233511073ull}}, {{4746261353867392371ull, 2081652629111302708ull, 8682398871664148745ull, 7914068544041888842ull}}, {{12189785383021896040ull, 12830247939263033952ull, 10038185313217480869ull, 4946292840026180526ull}}, {{15237231728777370050ull, 2202751868796628728ull, 3324359604667075279ull, 6182866050032725658ull}}, {{599795587262160947ull, 16588497891277949623ull, 13378821542688619906ull, 7728582562540907072ull}}, {{7292401269679932448ull, 14979497200476106418ull, 8361763464180387441ull, 4830364101588066920ull}}, {{18338873623954691368ull, 4889313445312969310ull, 10452204330225484302ull, 6037955126985083650ull}}, {{13700219993088588401ull, 15335013843495987446ull, 3841883375927079569ull, 7547443908731354563ull}}, {{3950951477252979847ull, 2666854624543910298ull, 95334100740730779ull, 4717152442957096602ull}}, {{14162061383421000617ull, 17168626335962051584ull, 9342539662780689281ull, 5896440553696370752ull}}, {{17702576729276250771ull, 7625724864670400768ull, 11678174578475861602ull, 7370550692120463440ull}}, {{3681476837885761847ull, 308784043983225153ull, 14597718223094827003ull, 9213188365150579300ull}}, {{13830138069747070915ull, 16333891091985373384ull, 18346945926289042684ull, 5758242728219112062ull}}, {{17287672587183838643ull, 1970619791272165114ull, 13710310371006527548ull, 7197803410273890078ull}}, {{12386218697125022496ull, 2463274739090206393ull, 7914515926903383627ull, 8997254262842362598ull}}, {{823857658062057204ull, 17680447776427236660ull, 334886435887226862ull, 5623283914276476624ull}}, {{1029822072577571505ull, 12877187683679270017ull, 418608044859033578ull, 7029104892845595780ull}}, {{5898963609149352285ull, 6873112567744311713ull, 523260056073791973ull, 8786381116056994725ull}}, {{15216067301786814939ull, 6601538364053888772ull, 2632880544259813935ull, 5491488197535621703ull}}, {{573340053523967057ull, 3640236936639973062ull, 17126158735606931131ull, 6864360246919527128ull}}, {{9940047103759734629ull, 18385354226082130039ull, 2960954345799112297ull, 8580450308649408911ull}}, {{13130058467490915999ull, 4573317363660249418ull, 8768125493765527042ull, 5362781442905880569ull}}, {{7189201047508869191ull, 14940018741430087581ull, 15571842885634296706ull, 6703476803632350711ull}}, {{13598187327813474393ull, 9451651389932833668ull, 14853117588615482979ull, 8379346004540438389ull}}, {{17722239116738197304ull, 3601439109494327090ull, 11589041502098370814ull, 5237091252837773993ull}}, {{12929426859067970822ull, 13725170923722684671ull, 651243822340799805ull, 6546364066047217492ull}}, {{11550097555407575623ull, 3321405599371192127ull, 814054777925999757ull, 8182955082559021865ull}}, {{14136339999770816620ull, 4381721508820689031ull, 12037999282272219608ull, 5114346926599388665ull}}, {{13058738981286132871ull, 5477151886025861289ull, 1212441047558110798ull, 6392933658249235832ull}}, {{2488365671325502377ull, 16069811894387102420ull, 1515551309447638497ull, 7991167072811544790ull}}, {{10778600581433214794ull, 3126103406350857156ull, 14782277623686937773ull, 4994479420507215493ull}}, {{13473250726791518492ull, 8519315276365959349ull, 4642788974326508504ull, 6243099275634019367ull}}, {{3006505353207234403ull, 10649144095457449187ull, 1191800199480747726ull, 7803874094542524209ull}}, {{18019966910250379166ull, 2044029041233517837ull, 12274090170743937089ull, 4877421309089077630ull}}, {{8689900582530810246ull, 7166722319969285201ull, 6119240676575145553ull, 6096776636361347038ull}}, {{15474061746590900711ull, 13570088918388994405ull, 16872422882573707749ull, 7620970795451683797ull}}, {{11977131600833006896ull, 10787148583206815455ull, 12851107310822261295ull, 4763106747157302373ull}}, {{10359728482613870716ull, 8872249710581131415ull, 2228826083245662907ull, 5953883433946627967ull}}, {{8337974584839950491ull, 6478626119799026365ull, 16621090659339242346ull, 7442354292433284958ull}}, {{7517077124738663009ull, 8660827343301779382ull, 5776495643659638562ull, 4651471432770803099ull}}, {{172974369068552954ull, 1602662142272448420ull, 2608933536147160299ull, 5814339290963503874ull}}, {{216217961335691192ull, 15838385733122724237ull, 12484538957038726181ull, 7267924113704379842ull}}, {{4881958470097001894ull, 5962924111121241584ull, 6382301659443631919ull, 9084905142130474803ull}}, {{3051224043810626184ull, 10644356597091857846ull, 1683095527938575997ull, 5678065713831546752ull}}, {{13037402091618058538ull, 17917131764792210211ull, 2103869409923219996ull, 7097582142289433440ull}}, {{11685066596095185268ull, 3949670632280711148ull, 2629836762404024996ull, 8871977677861791800ull}}, {{16526538659414266601ull, 11691916182030220275ull, 1643647976502515622ull, 5544986048663619875ull}}, {{16046487305840445347ull, 5391523190682999536ull, 15889618025910308240ull, 6931232560829524843ull}}, {{1611365058591005067ull, 6739403988353749421ull, 15250336513960497396ull, 8664040701036906054ull}}, {{3312946170833072119ull, 13435499529575869196ull, 4919774302797922968ull, 5415025438148066284ull}}, {{4141182713541340149ull, 16794374411969836495ull, 6149717878497403710ull, 6768781797685082855ull}}, {{564792373499287282ull, 11769595978107519811ull, 3075461329694366734ull, 8460977247106353569ull}}, {{16493896297932912215ull, 2744311467889811977ull, 13451378377127448969ull, 5288110779441470980ull}}, {{6782312317133976557ull, 8042075353289652876ull, 16814222971409311211ull, 6610138474301838725ull}}, {{8477890396417470696ull, 5440908173184678191ull, 7182720658979475302ull, 8262673092877298407ull}}, {{12216210525402001041ull, 17235625663522587581ull, 11406729439503253919ull, 5164170683048311504ull}}, {{1435205101470337590ull, 16932846060975846573ull, 14258411799379067399ull, 6455213353810389380ull}}, {{6405692395265309891ull, 16554371557792420312ull, 17823014749223834249ull, 8069016692262986725ull}}, {{4003557747040818682ull, 3428953195979180839ull, 13445227227478590358ull, 5043135432664366703ull}}, {{392761165373635448ull, 13509563531828751857ull, 12194848015920850043ull, 6303919290830458379ull}}, {{5102637475144432214ull, 12275268396358551917ull, 10631874001473674650ull, 7879899113538072974ull}}, {{5494991431178964086ull, 12283728766151482852ull, 2033235232493658752ull, 4924936945961295609ull}}, {{6868739288973705107ull, 15354660957689353565ull, 7153230059044461344ull, 6156171182451619511ull}}, {{13197610129644519288ull, 746582123402140340ull, 4329851555378188777ull, 7695213978064524389ull}}, {{17471878367882600363ull, 11995828873194807472ull, 5012000231325061937ull, 4809508736290327743ull}}, {{3393103886143698838ull, 1159728036211345629ull, 1653314270728939518ull, 6011885920362909679ull}}, {{8853065876107011451ull, 10673032082118957844ull, 15901700893693338109ull, 7514857400453637098ull}}, {{14756538209421657965ull, 8976488060538042604ull, 14550249076985724222ull, 4696785875283523186ull}}, {{18445672761777072457ull, 1997238038817777447ull, 8964439309377379470ull, 5870982344104403983ull}}, {{18445404933793952667ull, 11719919585376997617ull, 6593863118294336433ull, 7338727930130504979ull}}, {{9221698111960277121ull, 814841426439083310ull, 3630642879440532638ull, 9173409912663131224ull}}, {{1151875301547785297ull, 14344333946806590781ull, 2269151799650332898ull, 5733381195414457015ull}}, {{6051530145362119525ull, 8707045396653462668ull, 16671497804845079835ull, 7166726494268071268ull}}, {{7564412681702649406ull, 6272120727389440431ull, 2392628182346798178ull, 8958408117835089086ull}}, {{11645286953705237735ull, 8531761473045788173ull, 15330450669248912573ull, 5599005073646930678ull}}, {{721550636849383457ull, 15276387859734623121ull, 9939691299706364908ull, 6998756342058663348ull}}, {{5513624314489117225ull, 648740750958727285ull, 12424614124632956136ull, 8748445427573329185ull}}, {{5751858205769392218ull, 405462969349204553ull, 847854800254515729ull, 5467778392233330741ull}}, {{11801508775639128176ull, 5118514730113893595ull, 5671504518745532565ull, 6834722990291663426ull}}, {{10140199951121522316ull, 11009829431069754898ull, 16312752685286691514ull, 8543403737864579282ull}}, {{10949310987878339351ull, 11492829412845984715ull, 14807156446731570100ull, 5339627336165362051ull}}, {{9074952716420536285ull, 14366036766057480894ull, 13897259539987074721ull, 6674534170206702564ull}}, {{2120318858670894548ull, 4122487902289687406ull, 17371574424983843402ull, 8343167712758378205ull}}, {{15160257341951472805ull, 7188240957358442532ull, 13163077024828596078ull, 5214479820473986378ull}}, {{503577603729789390ull, 18208673233552828974ull, 7230474244180969289ull, 6518099775592482973ull}}, {{9852844041517012545ull, 8925783486658872505ull, 13649778823653599516ull, 8147624719490603716ull}}, {{17687242572016602601ull, 14801986716016571123ull, 17754483801638275505ull, 5092265449681627322ull}}, {{17497367196593365347ull, 4667425339738550192ull, 12969732715193068574ull, 6365331812102034153ull}}, {{3424964922032155068ull, 15057653711527963549ull, 2377107838709172005ull, 7956664765127542692ull}}, {{4446446085483790870ull, 11716876578918671170ull, 10709064436048008311ull, 4972915478204714182ull}}, {{14781429643709514395ull, 10034409705220951058ull, 4162958508205234581ull, 6216144347755892728ull}}, {{9253415017782117185ull, 17154698149953576727ull, 5203698135256543226ull, 7770180434694865910ull}}, {{12700913413754905097ull, 15333372362148373358ull, 17087369389817503228ull, 4856362771684291193ull}}, {{6652769730338855563ull, 719971378975915082ull, 7524153681989715324ull, 6070453464605363992ull}}, {{17539334199778345262ull, 899964223719893852ull, 9405192102487144155ull, 7588066830756704990ull}}, {{1738711838006689981ull, 16703378704320791322ull, 1266559045627077192ull, 4742541769222940619ull}}, {{11396761834363138284ull, 2432479306691437536ull, 15418256862316010203ull, 5928177211528675773ull}}, {{14245952292953922855ull, 16875657188646460632ull, 5437763022612849041ull, 7410221514410844717ull}}, {{8903720183096201784ull, 3629756715262956039ull, 5704444898346724603ull, 4631388446506777948ull}}, {{6517964210442864326ull, 18372253949360858761ull, 7130556122933405753ull, 5789235558133472435ull}}, {{12759141281480968312ull, 9130259381418909739ull, 4301509135239369288ull, 7236544447666840544ull}}, {{11337240583423822486ull, 11412824226773637174ull, 5376886419049211610ull, 9045680559583550680ull}}, {{2474089346212501150ull, 11744701160160911138ull, 3360554011905757256ull, 5653550349739719175ull}}, {{12315983719620402245ull, 14680876450201138922ull, 18035750570164360282ull, 7066937937174648968ull}}, {{6171607612670726998ull, 9127723525896647845ull, 4097944138995898737ull, 8833672421468311211ull}}, {{6163097767132898326ull, 17234042249753874663ull, 255372077658742758ull, 5521045263417694507ull}}, {{3092186190488735004ull, 12319180775337567521ull, 14154273152355592160ull, 6901306579272118133ull}}, {{8476918756538306658ull, 15398975969171959401ull, 3857783385162326488ull, 8626633224090147667ull}}, {{16827289268904911422ull, 9624359980732474625ull, 105271606512760103ull, 5391645765056342292ull}}, {{7199053530848975565ull, 7418763957488205378ull, 131589508140950129ull, 6739557206320427865ull}}, {{18222188950415995264ull, 13885140965287644626ull, 4776172903603575565ull, 8424446507900534831ull}}, {{16000554112437384944ull, 10984056112518471843ull, 9902637092393316584ull, 5265279067437834269ull}}, {{15389006622119343276ull, 13730070140648089804ull, 16989982383919033634ull, 6581598834297292836ull}}, {{789514203939627479ull, 7939215638955336448ull, 2790733906189240427ull, 8226998542871616046ull}}, {{493446377462267175ull, 2656166765133391328ull, 15579266746650438979ull, 5141874089294760028ull}}, {{616807971827833968ull, 17155266511698902872ull, 1027339359603497107ull, 6427342611618450036ull}}, {{771009964784792460ull, 16832397121196240686ull, 1284174199504371384ull, 8034178264523062545ull}}, {{14316939283272659000ull, 10520248200747650428ull, 12331823920758701875ull, 5021361415326914090ull}}, {{17896174104090823750ull, 8538624232507175131ull, 6191407864093601536ull, 6276701769158642613ull}}, {{17758531611686141783ull, 10673280290633968914ull, 12350945848544389824ull, 7845877211448303266ull}}, {{15710768275731226518ull, 6670800181646230571ull, 12331027173767631544ull, 4903673257155189541ull}}, {{15026774326236645244ull, 8338500227057788214ull, 1578725911927375718ull, 6129591571443986927ull}}, {{9560095870941030747ull, 1199753246967459460ull, 15808465445191383360ull, 7661989464304983658ull}}, {{15198431956192920025ull, 749845779354662162ull, 14491976921672002504ull, 4788743415190614786ull}}, {{9774667908386374223ull, 937307224193327703ull, 8891599115235227322ull, 5985929268988268483ull}}, {{7606648867055579875ull, 10395006067096435437ull, 6502812875616646248ull, 7482411586235335604ull}}, {{7059998551123431374ull, 6496878791935272148ull, 13287630084115179713ull, 4676507241397084752ull}}, {{8824998188904289217ull, 12732784508346478089ull, 16609537605143974641ull, 5845634051746355940ull}}, {{15642933754557749425ull, 2080922580150933899ull, 2315177932720416686ull, 7307042564682944926ull}}, {{14941981174769798878ull, 11824525262043443182ull, 12117344452755296665ull, 9133803205853681157ull}}, {{4727052215803736395ull, 472799261136070133ull, 9879183292185754368ull, 5708627003658550723ull}}, {{10520501288182058397ull, 590999076420087666ull, 7737293096804805056ull, 7135783754573188404ull}}, {{3927254573372797188ull, 738748845525109583ull, 9671616371006006320ull, 8919729693216485505ull}}, {{9372063135999080099ull, 461718028453193489ull, 17573975277947223710ull, 5574831058260303440ull}}, {{16326764938426238028ull, 9800519572421267669ull, 3520725023724478021ull, 6968538822825379301ull}}, {{6573398117750633822ull, 16862335483953972491ull, 9012592298082985430ull, 8710673528531724126ull}}, {{1802530814380452187ull, 5927273659043844903ull, 1021184167874477990ull, 5444170955332327579ull}}, {{16088221573257728946ull, 16632464110659581936ull, 15111538265125261199ull, 6805213694165409473ull}}, {{1663532892862609566ull, 16178894119897089517ull, 5054364776124412787ull, 8506517117706761842ull}}, {{3345551067252824931ull, 7805965815721986996ull, 7770664003505145896ull, 5316573198566726151ull}}, {{4181938834066031164ull, 9757457269652483745ull, 5101643985954044466ull, 6645716498208407689ull}}, {{9839109561009926858ull, 2973449550210828873ull, 10988741000869943487ull, 8307145622760509611ull}}, {{17678658521699674047ull, 8775934996522849901ull, 4562120116330020727ull, 5191966014225318507ull}}, {{8263265096842428846ull, 6358232727226174473ull, 1090964126985138005ull, 6489957517781648134ull}}, {{14940767389480423962ull, 12559476927460105995ull, 10587077195586198314ull, 8112446897227060167ull}}, {{7032136609211571024ull, 12461359098089954151ull, 13534452274882455802ull, 5070279310766912604ull}}, {{4178484743087075876ull, 6353326835757666881ull, 16918065343603069753ull, 6337849138458640755ull}}, {{9834791947286232749ull, 12553344563124471505ull, 16535895661076449287ull, 7922311423073300944ull}}, {{17675960013122365228ull, 14763369379593876546ull, 10334934788172780804ull, 4951444639420813090ull}}, {{12871577979548180727ull, 7467650782794067ull, 3695296448361200198ull, 6189305799276016363ull}}, {{11477786456007838005ull, 9232706600333268392ull, 7434542024112343ull, 7736632249095020454ull}}, {{7173616535004898753ull, 12687970652849374601ull, 13839704644047233926ull, 4835395155684387783ull}}, {{13578706687183511346ull, 6636591279206942443ull, 12687944786631654504ull, 6044243944605484729ull}}, {{12361697340552001278ull, 8295739099008678054ull, 2024872928007404418ull, 7555304930756855912ull}}, {{3114374819417612895ull, 9796522955307811688ull, 1265545580004627761ull, 4722065581723034945ull}}, {{3892968524272016118ull, 16857339712562152514ull, 6193617993433172605ull, 5902581977153793681ull}}, {{14089582692194795956ull, 7236616585420526930ull, 12353708510218853661ull, 7378227471442242101ull}}, {{8388606328388719137ull, 13657456750203046567ull, 1607077582491403364ull, 9222784339302802627ull}}, {{12160407982884031317ull, 17759282505731679912ull, 17145324553552984766ull, 5764240212064251641ull}}, {{15200509978605039146ull, 12975731095309824082ull, 7596597636659067246ull, 7205300265080314552ull}}, {{9777265436401523124ull, 6996291832282504295ull, 9495747045823834058ull, 9006625331350393190ull}}, {{13028319925392033809ull, 8984368413603953088ull, 1323155885212508382ull, 5629140832093995744ull}}, {{16285399906740042261ull, 2007088480150165552ull, 1653944856515635478ull, 7036426040117494680ull}}, {{1910005809715501210ull, 11732232637042482749ull, 2067431070644544347ull, 8795532550146868350ull}}, {{3499596640285882208ull, 5026802388937857766ull, 15127202474435003929ull, 5497207843841792718ull}}, {{13597867837212128568ull, 10895189004599710111ull, 9685631056188979103ull, 6871509804802240898ull}}, {{12385648778087772806ull, 9007300237322249735ull, 2883666783381448071ull, 8589387256002801123ull}}, {{14658559513945939860ull, 12547091675967487940ull, 17943192804109262708ull, 5368367035001750701ull}}, {{18323199392432424825ull, 15683864594959359925ull, 8593932949854414673ull, 6710458793752188377ull}}, {{9068941185258367319ull, 5769772688417036195ull, 15354102205745406246ull, 8388073492190235471ull}}, {{3362245231572785623ull, 17441165985542811334ull, 16513842906231960759ull, 5242545932618897169ull}}, {{13426178576320757836ull, 17189771463501126263ull, 6807245577507787237ull, 6553182415773621462ull}}, {{12171037201973559391ull, 7652156274094244117ull, 17732429008739509855ull, 8191478019717026827ull}}, {{9912741260447168572ull, 11700126698949984429ull, 8776925121248499707ull, 5119673762323141767ull}}, {{17002612593986348618ull, 10013472355260092632ull, 6359470383133236730ull, 6399592202903927209ull}}, {{2806521668773384157ull, 3293468407220339983ull, 12561023997343933817ull, 7999490253629909011ull}}, {{8671605070624446954ull, 13587632800581182249ull, 5544796989126264683ull, 4999681408518693132ull}}, {{15451192356707946597ull, 12372854982299089907ull, 6930996236407830854ull, 6249601760648366415ull}}, {{14702304427457545342ull, 6242696691019086576ull, 4052059277082400664ull, 7812002200810458019ull}}, {{9188940267160965839ull, 3901685431886929110ull, 226694038962806463ull, 4882501375506536262ull}}, {{2262803297096431490ull, 265420771431273484ull, 9506739585558283887ull, 6103126719383170327ull}}, {{2828504121370539363ull, 14166834019571255567ull, 7271738463520466954ull, 7628908399228962909ull}}, {{8685344103497668958ull, 13465957280659422633ull, 6850679548913985798ull, 4768067749518101818ull}}, {{15468366147799474101ull, 7609074563969502483ull, 17786721472997258056ull, 5960084686897627272ull}}, {{14723771666321954722ull, 9511343204961878104ull, 3786657767537020954ull, 7450105858622034091ull}}, {{9202357291451221702ull, 10556275521528561719ull, 60818095496944144ull, 4656316161638771307ull}}, {{6891260595886639223ull, 13195344401910702149ull, 13911080674653343892ull, 5820395202048464133ull}}, {{13225761763285686933ull, 16494180502388377686ull, 3553792788034516153ull, 7275494002560580167ull}}, {{7308830167252332858ull, 6782667572703308396ull, 18277299040325308904ull, 9094367503200725208ull}}, {{13791390891387483844ull, 4239167232939567747ull, 11423311900203318065ull, 5683979689500453255ull}}, {{12627552595806966901ull, 9910645059601847588ull, 9667453856826759677ull, 7104974611875566569ull}}, {{15784440744758708626ull, 16999992342929697389ull, 16696003339460837500ull, 8881218264844458211ull}}, {{12171118474687886844ull, 1401623177476285060ull, 8129159077949329486ull, 5550761415527786382ull}}, {{15213898093359858554ull, 10975401008700132133ull, 938076810581886049ull, 6938451769409732978ull}}, {{5182314561417659481ull, 18330937279302553071ull, 10395968050082133369ull, 8673064711762166222ull}}, {{10156475628527119032ull, 4539306771923013813ull, 1885794012873945452ull, 5420665444851353889ull}}, {{17307280554086286694ull, 5674133464903767266ull, 6968928534519819719ull, 6775831806064192361ull}}, {{12410728655753082559ull, 2480980812702321179ull, 13322846686577162553ull, 8469789757580240451ull}}, {{5450862400631982647ull, 13079828054007420497ull, 6020936169897032643ull, 5293618598487650282ull}}, {{11425264019217366213ull, 11738099049081887717ull, 16749542249226066612ull, 6617023248109562852ull}}, {{446521968739544054ull, 14672623811352359647ull, 2490183737823031649ull, 8271279060136953566ull}}, {{7196605258103296890ull, 2252860854454142923ull, 15391422891421558493ull, 5169549412585595978ull}}, {{4384070554201733209ull, 7427762086495066558ull, 10015906577422172308ull, 6461936765731994973ull}}, {{14703460229606942319ull, 9284702608118833197ull, 17131569240205103289ull, 8077420957164993716ull}}, {{11495505652718032901ull, 17332154176142740508ull, 1483858738273413747ull, 5048388098228121073ull}}, {{14369382065897541126ull, 17053506701751037731ull, 6466509441269155088ull, 6310485122785151341ull}}, {{13350041563944538504ull, 2870139303479245548ull, 12694822820013831765ull, 7888106403481439176ull}}, {{17567148014320112373ull, 4099680073888222419ull, 7934264262508644853ull, 4930066502175899485ull}}, {{17347248999472752562ull, 9736286110787665928ull, 14529516346563193970ull, 6162583127719874356ull}}, {{3237317175631389087ull, 2946985601629806603ull, 18161895433203992463ull, 7703228909649842945ull}}, {{18164224299265475843ull, 8759395028659710982ull, 4433655618111413433ull, 4814518068531151841ull}}, {{13481908337227068996ull, 15560929804252026632ull, 10153755541066654695ull, 6018147585663939801ull}}, {{16852385421533836245ull, 14839476236887645386ull, 17303880444760706273ull, 7522684482079924751ull}}, {{15144426906886035557ull, 2357143620413696510ull, 17732454305616523277ull, 4701677801299952969ull}}, {{9707161596752768639ull, 7558115543944508542ull, 8330509826738490384ull, 5877097251624941212ull}}, {{2910579959086184990ull, 9447644429930635678ull, 10413137283423112980ull, 7346371564531176515ull}}, {{12861596985712507045ull, 11809555537413294597ull, 8404735585851503321ull, 9182964455663970644ull}}, {{10344341125284010856ull, 463443183242227267ull, 14476331778011965384ull, 5739352784789981652ull}}, {{8318740388177625665ull, 579303979052784084ull, 18095414722514956730ull, 7174190980987477065ull}}, {{10398425485222032082ull, 9947502010670755913ull, 8784210347861532200ull, 8967738726234346332ull}}, {{18028230974332239811ull, 6217188756669222445ull, 14713503504268233433ull, 5604836703896466457ull}}, {{8700230662633136052ull, 12383171964263915961ull, 4556821325053128079ull, 7006045879870583072ull}}, {{15486974346718807969ull, 10867278936902507047ull, 5696026656316410099ull, 8757557349838228840ull}}, {{16596887994340336837ull, 4486206326350372952ull, 3560016660197756312ull, 5473473343648893025ull}}, {{2299365919215869430ull, 5607757907937966191ull, 9061706843674583294ull, 6841841679561116281ull}}, {{16709265454302000499ull, 16233069421777233546ull, 15938819573020617021ull, 8552302099451395351ull}}, {{15054976927366138216ull, 12451511397824464918ull, 16879291260778967494ull, 5345188812157122094ull}}, {{9595349122352896962ull, 6341017210425805340ull, 11875742039118933560ull, 6681486015196402618ull}}, {{11994186402941121202ull, 7926271513032256675ull, 5621305512043891142ull, 8351857518995503273ull}}, {{5190523492624506800ull, 342233677217772518ull, 15042530991095901724ull, 5219910949372189545ull}}, {{15711526402635409307ull, 427792096522215647ull, 4968105683587713443ull, 6524888686715236932ull}}, {{15027721984866873730ull, 14369798175934933271ull, 6210132104484641803ull, 8156110858394046165ull}}, {{16309855268182877938ull, 6675280850745639342ull, 6187175574516595079ull, 5097569286496278853ull}}, {{11163947048373821614ull, 3732415045004661274ull, 12345655486573131753ull, 6371961608120348566ull}}, {{4731561773612501209ull, 9277204824683214497ull, 6208697321361638883ull, 7964952010150435708ull}}, {{14486441154576283016ull, 3492410006213315108ull, 13103807862705800110ull, 4978095006344022317ull}}, {{18108051443220353770ull, 13588884544621419693ull, 2544701773100086425ull, 6222618757930027897ull}}, {{8800006248743278500ull, 3151047625494610905ull, 7792563234802495936ull, 7778273447412534871ull}}, {{17029218951533018823ull, 1969404765934131815ull, 11787881049392641816ull, 4861420904632834294ull}}, {{16674837670988885624ull, 2461755957417664769ull, 5511479274886026462ull, 6076776130791042868ull}}, {{7008489033453943318ull, 12300566983626856770ull, 6889349093607533077ull, 7595970163488803585ull}}, {{8991991664336102478ull, 9993697373980479433ull, 15835058229573177933ull, 4747481352180502240ull}}, {{15851675598847516001ull, 17103807735902987195ull, 1347078713256920800ull, 5934351690225627801ull}}, {{15202908480132007098ull, 2933015596169182378ull, 6295534409998538905ull, 7417939612782034751ull}}, {{14113503818509892340ull, 13362349793674208746ull, 10852238033890168671ull, 4636212257988771719ull}}, {{8418507736282589617ull, 12091251223665373029ull, 8953611523935322935ull, 5795265322485964649ull}}, {{15134820688780624925ull, 10502378011154328382ull, 15803700423346541573ull, 7244081653107455811ull}}, {{9695153824121005349ull, 17739658532370298382ull, 15142939510755789062ull, 9055102066384319764ull}}, {{1447785121648240439ull, 6475600564304048585ull, 240965157367592356ull, 5659438791490199853ull}}, {{6421417420487688453ull, 8094500705380060731ull, 4912892465136878349ull, 7074298489362749816ull}}, {{3415085757182222662ull, 14729811900152463818ull, 6141115581421097936ull, 8842873111703437270ull}}, {{6746114616666277068ull, 9206132437595289886ull, 17673255293670349922ull, 5526795694814648293ull}}, {{17656015307687622143ull, 2284293510139336549ull, 8256511061805773691ull, 6908494618518310367ull}}, {{8234961079327363966ull, 16690424942956334399ull, 5708952808829829209ull, 8635618273147887959ull}}, {{12064379702220684335ull, 3513986561706627143ull, 10485624533159725112ull, 5397261420717429974ull}}, {{10468788609348467515ull, 4392483202133283929ull, 3883658629594880582ull, 6746576775896787468ull}}, {{17697671780112972297ull, 14713976039521380719ull, 4854573286993600727ull, 8433220969870984335ull}}, {{17978573890211689542ull, 16113764052341944805ull, 9951637332012082310ull, 5270763106169365209ull}}, {{8638159307482448215ull, 10918833028572655199ull, 17051232683442490792ull, 6588453882711706511ull}}, {{6186013115925672365ull, 13648541285715818999ull, 16702354835875725586ull, 8235567353389633139ull}}, {{10783787225094627084ull, 13142024321999774778ull, 8133128763208634539ull, 5147229595868520712ull}}, {{4256361994513508047ull, 11815844384072330569ull, 10166410954010793174ull, 6434036994835650890ull}}, {{9932138511569272963ull, 5546433443235637403ull, 3484641655658715660ull, 8042546243544563613ull}}, {{3901743560517101650ull, 12689892938877049185ull, 4483744044000391239ull, 5026591402215352258ull}}, {{9488865469073764966ull, 11250680155168923577ull, 14828052091855264857ull, 6283239252769190322ull}}, {{16472767854769594112ull, 228292138678990759ull, 9311693077964305264ull, 7854049065961487903ull}}, {{17213008936872078176ull, 142682586674369224ull, 12737337201368772646ull, 4908780666225929939ull}}, {{3069517097380546104ull, 9401725270197737339ull, 11309985483283577903ull, 6135975832782412424ull}}, {{17671954427007846342ull, 7140470569319783769ull, 14137481854104472379ull, 7669969790978015530ull}}, {{4127442489238822108ull, 2156951096611170904ull, 13447612177242683141ull, 4793731119361259706ull}}, {{5159303111548527635ull, 7307874889191351534ull, 7586143184698578118ull, 5992163899201574633ull}}, {{15672500926290435351ull, 18358215648343965225ull, 14094364999300610551ull, 7490204874001968291ull}}, {{2877784051290440239ull, 18391413807856060122ull, 6503135115349187642ull, 4681378046251230182ull}}, {{12820602100967826106ull, 13765895222965299344ull, 17352290931041260361ull, 5851722557814037727ull}}, {{16025752626209782633ull, 3372310973424460468ull, 17078677645374187548ull, 7314653197267547159ull}}, {{1585446709052676675ull, 4215388716780575586ull, 16736661038290346531ull, 9143316496584433949ull}}, {{5602590211585310826ull, 328774938774165789ull, 12766256158145160534ull, 5714572810365271218ull}}, {{11614923782909026436ull, 9634340710322483044ull, 6734448160826674859ull, 7143216012956589023ull}}, {{14518654728636283045ull, 7431239869475715901ull, 3806374182605955670ull, 8929020016195736279ull}}, {{11380002214611370855ull, 32838899994934534ull, 9296512891769804150ull, 5580637510122335174ull}}, {{5001630731409437761ull, 9264420661848443976ull, 2397269077857479379ull, 6975796887652918968ull}}, {{6252038414261797201ull, 6968839808883167066ull, 2996586347321849224ull, 8719746109566148710ull}}, {{8519210027341011155ull, 4355524880551979416ull, 15707924522358319477ull, 5449841318478842943ull}}, {{10649012534176263944ull, 10056092119117362174ull, 15023219634520511442ull, 6812301648098553679ull}}, {{4087893630865554121ull, 3346743112041926910ull, 14167338524723251399ull, 8515377060123192099ull}}, {{16389991574573135038ull, 9009243472667286174ull, 6548743568738338172ull, 5322110662576995062ull}}, {{11264117431361642989ull, 11261554340834107718ull, 17409301497777698523ull, 6652638328221243827ull}}, {{4856774752347277929ull, 9465256907615246744ull, 17149940853794735250ull, 8315797910276554784ull}}, {{3035484220217048706ull, 10527471585686917119ull, 10718713033621709531ull, 5197373693922846740ull}}, {{17629413330553474594ull, 8547653463681258494ull, 13398391292027136914ull, 6496717117403558425ull}}, {{12813394626337067434ull, 1461194792746797310ull, 2912931059751757431ull, 8120896396754448032ull}}, {{3396685623033279243ull, 7830775773107830175ull, 1820581912344848394ull, 5075560247971530020ull}}, {{18080915084073762765ull, 565097679530011910ull, 2275727390431060493ull, 6344450309964412525ull}}, {{13377771818237427648ull, 5318058117839902792ull, 7456345256466213520ull, 7930562887455515656ull}}, {{8361107386398392280ull, 3323786323649939245ull, 4660215785291383450ull, 4956601804659697285ull}}, {{15063070251425378254ull, 13378104941417199864ull, 10436955750041617216ull, 6195752255824621606ull}}, {{382093740572171202ull, 16722631176771499831ull, 3822822650697245712ull, 7744690319780777008ull}}, {{7156337615498688857ull, 10451644485482187394ull, 2389264156685778570ull, 4840431449862985630ull}}, {{18168794056228136880ull, 3841183569997958434ull, 12209952232711999021ull, 6050539312328732037ull}}, {{13487620533430395291ull, 9413165480924835947ull, 1427382235607835064ull, 7563174140410915047ull}}, {{6123919824180303105ull, 5883228425578022467ull, 7809642924895978771ull, 4726983837756821904ull}}, {{3043213761797990977ull, 2742349513545140180ull, 9762053656119973464ull, 5908729797196027380ull}}, {{3804017202247488722ull, 3427936891931425225ull, 12202567070149966830ull, 7385912246495034225ull}}, {{13906725797473150211ull, 15977518612739304477ull, 709075391202647412ull, 4616195154059396391ull}}, {{3548349191559274052ull, 1525154192214578981ull, 14721402294285472978ull, 5770243942574245488ull}}, {{9047122507876480469ull, 11129814777122999534ull, 18401752867856841222ull, 7212804928217806860ull}}, {{2085531097990824778ull, 4688896434548973610ull, 4555447011111499912ull, 9016006160272258576ull}}, {{5915142954671653390ull, 2930560271593108506ull, 2847154381944687445ull, 5635003850170161610ull}}, {{16617300730194342546ull, 8274886357918773536ull, 12782315014285635114ull, 7043754812712702012ull}}, {{2324881839033376566ull, 1120235910543691113ull, 15977893767857043893ull, 8804693515890877515ull}}, {{12982266195464330114ull, 3005990453303500897ull, 7680340595696958481ull, 5502933447431798447ull}}, {{2392774689048248930ull, 8369174085056764026ull, 4988739726193810197ull, 6878666809289748059ull}}, {{12214340398165086971ull, 15073153624748342936ull, 1624238639314874842ull, 8598333511612185074ull}}, {{7633962748853179357ull, 14032407033895102239ull, 5626835167999184680ull, 5373958444757615671ull}}, {{4930767417639086292ull, 17540508792368877799ull, 2421857941571592946ull, 6717448055947019589ull}}, {{1551773253621469961ull, 12702263953606321441ull, 7639008445391879087ull, 8396810069933774486ull}}, {{12499073329581888486ull, 14856443998645032756ull, 162694259942536525ull, 5248006293708609054ull}}, {{15623841661977360607ull, 4735496943024127233ull, 9426739861782946465ull, 6560007867135761317ull}}, {{5694744022189537047ull, 10531057197207546946ull, 16395110845656070985ull, 8200009833919701646ull}}, {{8170901032295848558ull, 18111125794323186601ull, 5635258260107656461ull, 5125006146199813529ull}}, {{14825312308797198602ull, 8803849187621819539ull, 11655758843561958481ull, 6406257682749766911ull}}, {{13919954367569110348ull, 15616497502954662328ull, 9958012536025060197ull, 8007822103437208639ull}}, {{8699971479730693968ull, 12066153948560357907ull, 13141286862656744479ull, 5004888814648255399ull}}, {{6263278331235979556ull, 10471006417273059480ull, 11814922559893542695ull, 6256111018310319249ull}}, {{7829097914044974444ull, 8477072003163936446ull, 933595144584764657ull, 7820138772887899062ull}}, {{281500177850721124ull, 16827385048045930039ull, 14418555020647641622ull, 4887586733054936913ull}}, {{14186933277595565117ull, 11810859273202636740ull, 4188135720527388316ull, 6109483416318671142ull}}, {{17733666596994456396ull, 14763574091503295925ull, 14458541687514011203ull, 7636854270398338927ull}}, {{13389384632335229200ull, 6921390797975866001ull, 15954117582337338858ull, 4773033918998961829ull}}, {{2901672735136872787ull, 17875110534324608310ull, 6107588922639509860ull, 5966292398748702287ull}}, {{12850462955775866792ull, 3897144094196208771ull, 3022800134871999422ull, 7457865498435877859ull}}, {{5725696338146222793ull, 16270773114154794194ull, 18030151148790857302ull, 4661165936522423661ull}}, {{16380492459537554299ull, 11115094355838716934ull, 8702630880706407916ull, 5826457420653029577ull}}, {{11252243537567167066ull, 13893867944798396168ull, 15489974619310397799ull, 7283071775816286971ull}}, {{14065304421958958833ull, 12755648912570607306ull, 14750782255710609345ull, 9103839719770358714ull}}, {{13402501282151737175ull, 1054751542715547710ull, 13830924928246518745ull, 5689899824856474196ull}}, {{7529754565834895660ull, 5930125446821822542ull, 17288656160308148431ull, 7112374781070592745ull}}, {{188821170438843767ull, 2800970790099890274ull, 7775762145103021827ull, 8890468476338240932ull}}, {{4729699249951665259ull, 17891507808308289085ull, 14083223377544164449ull, 5556542797711400582ull}}, {{10523810080866969477ull, 8529326705103197644ull, 8380657185075429754ull, 6945678497139250728ull}}, {{13154762601083711846ull, 1438286344524221247ull, 10475821481344287193ull, 8682098121424063410ull}}, {{15139255653318401760ull, 12428144011396108039ull, 11159074444267567399ull, 5426311325890039631ull}}, {{14312383548220614296ull, 10923493995817747145ull, 9337157036907071345ull, 6782889157362549539ull}}, {{4055421379993604158ull, 18266053513199571836ull, 7059760277706451277ull, 8478611446703186924ull}}, {{11758010399350778407ull, 13722126454963426349ull, 13635722210421307856ull, 5299132154189491827ull}}, {{862454943906309296ull, 17152658068704282937ull, 12432966744599246916ull, 6623915192736864784ull}}, {{5689754698310274524ull, 2994078512170802055ull, 15541208430749058646ull, 8279893990921080980ull}}, {{10473625714085003434ull, 15706357125388914996ull, 489883232363385845ull, 5174933744325675613ull}}, {{13092032142606254292ull, 5797888351453980033ull, 5224040058881620211ull, 6468667180407094516ull}}, {{2529982122975654153ull, 2635674420890087138ull, 6530050073602025264ull, 8085833975508868145ull}}, {{6192924845287171750ull, 1647296513056304461ull, 15610496342069735550ull, 5053646234693042590ull}}, {{12352842075036352591ull, 11282492678175156384ull, 10289748390732393629ull, 6317057793366303238ull}}, {{15441052593795440739ull, 268057792436781768ull, 3638813451560716229ull, 7896322241707879048ull}}, {{9650657871122150462ull, 2473379129486682557ull, 2274258407225447643ull, 4935201401067424405ull}}, {{16675008357330075982ull, 16926781967140516908ull, 7454509027459197457ull, 6169001751334280506ull}}, {{2397016372953043361ull, 7323419403643482424ull, 94764247469221014ull, 7711252189167850633ull}}, {{1498135233095652101ull, 18412195182559340227ull, 11588442700736732893ull, 4819532618229906645ull}}, {{15707727096651728838ull, 9180185922917011571ull, 650495320638752405ull, 6024415772787383307ull}}, {{15022972852387273143ull, 16086918422073652368ull, 14648177206080604218ull, 7530519715984229133ull}}, {{9389358032742045715ull, 14666010032223420634ull, 11460953763014071588ull, 4706574822490143208ull}}, {{2513325504072781335ull, 18332512540279275793ull, 14326192203767589485ull, 5883218528112679010ull}}, {{7753342898518364573ull, 9080582620066931029ull, 8684368217854711049ull, 7354023160140848763ull}}, {{14303364641575343620ull, 15962414293511051690ull, 6243774253891000907ull, 9192528950176060954ull}}, {{13551288919411977667ull, 7670665924230713354ull, 8514044927109263471ull, 5745330593860038096ull}}, {{7715739112410196275ull, 4976646386861003789ull, 10642556158886579339ull, 7181663242325047620ull}}, {{14256359908940133248ull, 1609121965148866832ull, 13303195198608224174ull, 8977079052906309525ull}}, {{8910224943087583280ull, 14840759283500205482ull, 10620340008343834060ull, 5610674408066443453ull}}, {{1914409142004703292ull, 104205030665705237ull, 17887111028857180480ull, 7013343010083054316ull}}, {{7004697445933267019ull, 130256288332131546ull, 3912144712361923984ull, 8766678762603817896ull}}, {{8989621922135679791ull, 81410180207582216ull, 2445090445226202490ull, 5479174226627386185ull}}, {{11237027402669599738ull, 9325134762114253578ull, 7668049074960141016ull, 6848967783284232731ull}}, {{4822912216482223865ull, 11656418452642816973ull, 4973375325272788366ull, 8561209729105290914ull}}, {{5320163144515083868ull, 2673575514474372704ull, 7720045596722880633ull, 5350756080690806821ull}}, {{6650203930643854835ull, 7953655411520353784ull, 14261743014330988695ull, 6688445100863508526ull}}, {{8312754913304818543ull, 5330383245973054326ull, 8603806731058960061ull, 8360556376079385658ull}}, {{583785802388123686ull, 5637332537946852906ull, 9989065225339237942ull, 5225347735049616036ull}}, {{9953104289839930415ull, 16270037709288341940ull, 12486331531674047427ull, 6531684668812020045ull}}, {{12441380362299913019ull, 15725861118183039521ull, 1772856359310395572ull, 8164605836015025057ull}}, {{858333698796363781ull, 605291162009623893ull, 12637250270637466993ull, 5102878647509390660ull}}, {{5684603141922842630ull, 5368299970939417770ull, 15796562838296833741ull, 6378598309386738325ull}}, {{16329125964258329095ull, 11322060982101660116ull, 5910645492588878464ull, 7973247886733422907ull}}, {{982331690806679877ull, 7076288113813537573ull, 1388310423654355088ull, 4983279929208389317ull}}, {{5839600631935737750ull, 8845360142266921966ull, 6347074047995331764ull, 6229099911510486646ull}}, {{16522872826774447995ull, 11056700177833652457ull, 17157214596848940513ull, 7786374889388108307ull}}, {{3409266489092948141ull, 18439652657214502546ull, 8417416113816893868ull, 4866484305867567692ull}}, {{13484955148220960984ull, 4602821747808576566ull, 10521770142271117336ull, 6083105382334459615ull}}, {{7632821898421425422ull, 5753527184760720708ull, 8540526659411508766ull, 7603881727918074519ull}}, {{13993885723368166697ull, 17431012545757614154ull, 12255358189773274834ull, 4752426079948796574ull}}, {{8268985117355432563ull, 12565393645342241885ull, 6095825700361817735ull, 5940532599935995718ull}}, {{14947917415121678608ull, 11095056038250414452ull, 16843154162307047977ull, 7425665749919994647ull}}, {{119076347596273322ull, 16880996265427177ull, 17444500379082986842ull, 4641041093699996654ull}}, {{4760531452922729557ull, 9244473282186559779ull, 12582253436998957744ull, 5801301367124995818ull}}, {{1338978297726024042ull, 11555591602733199724ull, 6504444759393921372ull, 7251626708906244773ull}}, {{1673722872157530052ull, 14444489503416499655ull, 12742241967669789619ull, 9064533386132805966ull}}, {{7963605822739538139ull, 6721962930421618332ull, 3352215211366230608ull, 5665333366333003729ull}}, {{9954507278424422673ull, 8402453663027022915ull, 8801955032635176164ull, 7081666707916254661ull}}, {{7831448079603140437ull, 10503067078783778644ull, 15614129809221358109ull, 8852083384895318326ull}}, {{14118027086606738581ull, 8870259933453555604ull, 5147145112335960914ull, 5532552115559573954ull}}, {{17647533858258423227ull, 1864452879962168697ull, 15657303427274726951ull, 6915690144449467442ull}}, {{8224359267540865321ull, 16165624155234874584ull, 10348257247238632880ull, 8644612680561834303ull}}, {{5140224542213040826ull, 10103515097021796615ull, 13385189807165227406ull, 5402882925351146439ull}}, {{1813594659338913128ull, 3406021834422469961ull, 12119801240529146354ull, 6753603656688933049ull}}, {{6878679342601029314ull, 13480899329882863259ull, 1314693495379269230ull, 8442004570861166312ull}}, {{1993331579911949370ull, 3813876062749401633ull, 821683434612043269ull, 5276252856788228945ull}}, {{7103350493317324616ull, 9379031096864139945ull, 5638790311692441990ull, 6595316070985286181ull}}, {{13490874135074043674ull, 2500416834225399123ull, 11660173908042940392ull, 8244145088731607726ull}}, {{6125953325207583344ull, 1562760521390874452ull, 2675922674099449841ull, 5152590680457254829ull}}, {{7657441656509479180ull, 6565136670165980969ull, 7956589361051700205ull, 6440738350571568536ull}}, {{14183488089064236879ull, 12818106856134864115ull, 9945736701314625256ull, 8050922938214460670ull}}, {{6558837046451454098ull, 8011316785084290072ull, 1604399419894252881ull, 5031826836384037919ull}}, {{8198546308064317622ull, 14625831999782750494ull, 15840557330149979813ull, 6289783545480047398ull}}, {{1024810848225621219ull, 4447231944446274406ull, 10577324625832698959ull, 7862229431850059248ull}}, {{14475564835423176974ull, 9697048992920003359ull, 6610827891145436849ull, 4913893394906287030ull}}, {{13482770025851583314ull, 16732997259577392103ull, 17486906900786571869ull, 6142366743632858787ull}}, {{12241776513887091238ull, 7081188519189576417ull, 17246947607555826933ull, 7677958429541073484ull}}, {{733581293538350168ull, 6731585833707179213ull, 1555970217867616025ull, 4798724018463170928ull}}, {{5528662635350325614ull, 13026168310561361920ull, 1944962772334520031ull, 5998405023078963660ull}}, {{6910828294187907017ull, 11671024369774314496ull, 2431203465418150039ull, 7498006278848704575ull}}, {{4319267683867441886ull, 14211919258750028416ull, 8437031193527425630ull, 4686253924280440359ull}}, {{5399084604834302357ull, 8541527036582759712ull, 5934602973481894134ull, 5857817405350550449ull}}, {{6748855756042877946ull, 1453536758873673832ull, 12029939735279755572ull, 7322271756688188061ull}}, {{8436069695053597433ull, 1816920948592092290ull, 1202366613817530753ull, 9152839695860235077ull}}, {{9884229577835886300ull, 12664790638938527441ull, 3057322142849650672ull, 5720524809912646923ull}}, {{16966972990722245779ull, 15830988298673159301ull, 17656710733844227052ull, 7150656012390808653ull}}, {{7373658183120643511ull, 1341991299631897511ull, 8235830362023120104ull, 8938320015488510817ull}}, {{11526065392091484051ull, 838744562269935944ull, 16676609022332919825ull, 5586450009680319260ull}}, {{14407581740114355063ull, 5660116721264807834ull, 2399017204206598165ull, 6983062512100399076ull}}, {{8786105138288168021ull, 11686831920008397697ull, 2998771505258247706ull, 8728828140125498845ull}}, {{17020530757498574773ull, 11915955968432636464ull, 4180075200000098768ull, 5455517587578436778ull}}, {{2828919373163666850ull, 14894944960540795581ull, 14448466036854899268ull, 6819396984473045972ull}}, {{8147835234881971467ull, 171937126966442860ull, 18060582546068624086ull, 8524246230591307465ull}}, {{14315769058656007975ull, 13942518759636190499ull, 4370335063651808197ull, 5327653894119567166ull}}, {{13283025304892622065ull, 3593090394263074412ull, 14686290866419536055ull, 6659567367649458957ull}}, {{16603781631115777581ull, 18326421048111006727ull, 4522805527742256356ull, 8324459209561823697ull}}, {{17294892547088442844ull, 2230641118214603396ull, 14355968500907379983ull, 5202787005976139810ull}}, {{3171871610151001939ull, 16623359453050417958ull, 8721588589279449170ull, 6503483757470174763ull}}, {{13188211549543528231ull, 11555827279458246639ull, 6290299718171923559ull, 8129354696837718454ull}}, {{15160161246105787001ull, 14139921077302486005ull, 17766495379139615936ull, 5080846685523574033ull}}, {{5115143502350070039ull, 17674901346628107507ull, 8373061168642356208ull, 6351058356904467542ull}}, {{1782243359510199645ull, 3646882609575582768ull, 1242954423948169453ull, 7938822946130584428ull}}, {{1113902099693874778ull, 4585144640198433182ull, 10000218551822381716ull, 4961764341331615267ull}}, {{10615749661472119280ull, 5731430800248041477ull, 7888587171350589241ull, 6202205426664519084ull}}, {{17881373095267537004ull, 11775974518737439750ull, 9860733964188236551ull, 7752756783330648855ull}}, {{6564172166114822724ull, 14277513101851981700ull, 13080487755258729700ull, 4845472989581655534ull}}, {{8205215207643528405ull, 17846891377314977125ull, 7127237657218636317ull, 6056841236977069418ull}}, {{14868205027981798410ull, 8473556166361557694ull, 18132419108378071205ull, 7571051546221336772ull}}, {{4680942124061236102ull, 7601815613189667511ull, 2109389905881518695ull, 4731907216388335483ull}}, {{1239491636649157224ull, 4890583498059696485ull, 16471795437634062081ull, 5914884020485419353ull}}, {{6161050564238834434ull, 10724915391002008510ull, 6754686241760413889ull, 7393605025606774192ull}}, {{17685714657931435233ull, 18232287165444725078ull, 4221678901100258680ull, 4621003141004233870ull}}, {{12883771285559518233ull, 4343614883096354732ull, 14500470663230099159ull, 5776253926255292337ull}}, {{16104714106949397792ull, 817832585443055511ull, 4290530273755460237ull, 7220317407819115422ull}}, {{15519206615259359335ull, 5633976750231207293ull, 14586534879049101104ull, 9025396759773894277ull}}, {{12005347143750793537ull, 3521235468894504558ull, 11422427308619382142ull, 5640872974858683923ull}}, {{5783311892833716113ull, 13624916372972906506ull, 9666348117346839773ull, 7051091218573354904ull}}, {{16452511902896920949ull, 3196087410933969420ull, 12082935146683549717ull, 8813864023216693630ull}}, {{1059447902455799785ull, 4303397641047424840ull, 2940148448249830669ull, 5508665014510433519ull}}, {{1324309878069749732ull, 9990933069736668954ull, 17510243615594452048ull, 6885831268138041898ull}}, {{10878759384441962972ull, 12488666337170836192ull, 12664432482638289252ull, 8607289085172552373ull}}, {{6799224615276226858ull, 17028788497586548428ull, 10221113310862624734ull, 5379555678232845233ull}}, {{8499030769095283572ull, 12062613585128409727ull, 17388077657005668822ull, 6724444597791056541ull}}, {{6012102442941716561ull, 5854894944555736351ull, 7900039015974922316ull, 8405555747238820677ull}}, {{10675093054479654707ull, 12882681377202111027ull, 7243367394198020399ull, 5253472342024262923ull}}, {{8732180299672180479ull, 11491665703075250880ull, 4442523224320137595ull, 6566840427530328654ull}}, {{10915225374590225599ull, 9752896110416675696ull, 14776526067254947802ull, 8208550534412910817ull}}, {{6822015859118891000ull, 10707246087437810214ull, 2317799764393260520ull, 5130344084008069261ull}}, {{17750891860753389558ull, 13384057609297262767ull, 7508935723918963554ull, 6412930105010086576ull}}, {{17576928807514349043ull, 7506699974766802651ull, 9386169654898704443ull, 8016162631262608220ull}}, {{8679737495482774200ull, 2385844475015557705ull, 15089728071166466085ull, 5010101644539130137ull}}, {{15461357887780855654ull, 7593991612196835035ull, 5027102033675918894ull, 6262627055673912672ull}}, {{14715011341298681663ull, 269117478391267986ull, 6283877542094898618ull, 7828283819592390840ull}}, {{13808568106739063944ull, 4779884442421930395ull, 3927423463809311636ull, 4892677387245244275ull}}, {{12649024114996442025ull, 5974855553027412994ull, 297593311334251641ull, 6115846734056555344ull}}, {{6587908106890776724ull, 12080255459711654147ull, 371991639167814551ull, 7644808417570694180ull}}, {{1811599557593041500ull, 14467688689960865698ull, 9455866811334659902ull, 4778005260981683862ull}}, {{11487871483846077683ull, 8861238825596306314ull, 2596461477313549070ull, 5972506576227104828ull}}, {{5136467317952821296ull, 1853176495140607085ull, 3245576846641936338ull, 7465633220283881035ull}}, {{5516135082934207262ull, 5769921327890267332ull, 18169386593647067875ull, 4666020762677425646ull}}, {{6895168853667759078ull, 2600715641435446261ull, 13488361205204059036ull, 5832525953346782058ull}}, {{13230647085512086751ull, 3250894551794307826ull, 7637079469650297987ull, 7290657441683477573ull}}, {{7314936820035332631ull, 17898676245025048495ull, 14158035355490260387ull, 9113321802104346966ull}}, {{11489364540163164750ull, 8880829643926961357ull, 4237086078754024838ull, 5695826126315216854ull}}, {{526647619921792226ull, 1877665018053925889ull, 14519729635297306856ull, 7119782657894021067ull}}, {{5269995543329628186ull, 2347081272567407361ull, 13537976025694245666ull, 8899728322367526334ull}}, {{14822962260649487377ull, 6078611813782017504ull, 3849548997631515637ull, 5562330201479703959ull}}, {{81958752102307605ull, 12209950785654909785ull, 200250228612006642ull, 6952912751849629949ull}}, {{4714134458555272410ull, 6039066445213861423ull, 4861998804192396207ull, 8691140939812037436ull}}, {{9863863064238127112ull, 10691945555899745245ull, 12262121289475023437ull, 5431963087382523397ull}}, {{16941514848725046794ull, 17976617963302069460ull, 1492593556561615584ull, 6789953859228154247ull}}, {{2730149487196756876ull, 4024028380418035210ull, 15700800000984183193ull, 8487442324035192808ull}}, {{6318029447925360952ull, 14044232783829741766ull, 9813000000615114495ull, 5304651452521995505ull}}, {{17120908846761476998ull, 12943604961359789303ull, 16877936019196281023ull, 6630814315652494381ull}}, {{16789450040024458343ull, 11567820183272348725ull, 7262361968713187567ull, 8288517894565617977ull}}, {{12799249284228980417ull, 14147416642186299809ull, 16068191276514211989ull, 5180323684103511235ull}}, {{2164003550004061809ull, 3849212747450711050ull, 15473553077215377083ull, 6475404605129389044ull}}, {{11928376474359853069ull, 199829915886000908ull, 895197272809669738ull, 8094255756411736306ull}}, {{16678607333329683976ull, 4736579715856138471ull, 5171184313933431490ull, 5058909847757335191ull}}, {{16236573148234717066ull, 15144096681674948897ull, 1852294373989401458ull, 6323637309696668989ull}}, {{6460658380011232621ull, 9706748815238910314ull, 6927053985914139727ull, 7904546637120836236ull}}, {{8649597505934408292ull, 12984247037165400802ull, 13552780778051113137ull, 4940341648200522647ull}}, {{1588624845563234557ull, 2395250741174587291ull, 12329289954136503518ull, 6175427060250653309ull}}, {{15820839112236206908ull, 12217435463323009921ull, 1576554387388465685ull, 7719283825313316637ull}}, {{2970495417506547462ull, 9941740173790575153ull, 3291189501331485005ull, 4824552390820822898ull}}, {{8324805290310572231ull, 17038861235665606845ull, 13337358913519132064ull, 6030690488526028622ull}}, {{15017692631315603193ull, 2851832470872456940ull, 7448326605044139273ull, 7538363110657535778ull}}, {{162685857717476188ull, 13311610340363755348ull, 9266890146579974949ull, 4711476944160959861ull}}, {{203357322146845234ull, 2804454870172530473ull, 16195298701652356591ull, 5889346180201199826ull}}, {{4865882671110944447ull, 17340626642997826803ull, 11020751340210669930ull, 7361682725251499783ull}}, {{1470667320461292654ull, 12452411266892507696ull, 9164253156835949509ull, 9202103406564374729ull}}, {{919167075288307909ull, 10088600051021511262ull, 17256873269090938203ull, 5751314629102734205ull}}, {{10372330880965160694ull, 7999064045349501173ull, 7736033531081509042ull, 7189143286378417757ull}}, {{17577099619633838772ull, 775458019832100658ull, 14281727932279274207ull, 8986429107973022196ull}}, {{15597373280698537137ull, 7402190290036144767ull, 18149451994529322187ull, 5616518192483138872ull}}, {{14885030582445783517ull, 4641051844117793055ull, 4240070919452101118ull, 7020647740603923591ull}}, {{13994602209629841492ull, 15024686842002017127ull, 688402630887738493ull, 8775809675754904489ull}}, {{15664155408659732788ull, 11696272285464954656ull, 11959466690373306318ull, 5484881047346815305ull}}, {{1133450187115114369ull, 5396968319976417513ull, 1114275307684469186ull, 6856101309183519132ull}}, {{6028498752321280866ull, 15969582436825297699ull, 1392844134605586482ull, 8570126636479398915ull}}, {{1461968710987106589ull, 14592675041443198966ull, 17011428648624349215ull, 5356329147799624321ull}}, {{11050832925588659044ull, 13629157783376610803ull, 7429227755498272807ull, 6695411434749530402ull}}, {{9201855138558435901ull, 12424761210793375600ull, 63162657518065201ull, 8369264293436913003ull}}, {{5751159461599022439ull, 847946729104777894ull, 16180377725444648415ull, 5230790183398070626ull}}, {{16412321363853553856ull, 14894991466663136079ull, 11002100119951034710ull, 6538487729247588283ull}}, {{15903715686389554416ull, 9395367296474144291ull, 9140939131511405484ull, 8173109661559485354ull}}, {{7633979294779777558ull, 15095476597151115990ull, 10324772975622016331ull, 5108193538474678346ull}}, {{319102081619946140ull, 14257659728011507084ull, 3682594182672744606ull, 6385241923093347933ull}}, {{398877602024932674ull, 8598702623159608047ull, 9214928746768318662ull, 7981552403866684916ull}}, {{7166827528906664778ull, 762503121047367125ull, 14982702503584974972ull, 4988470252416678072ull}}, {{13570220429560718876ull, 953128901309208906ull, 281634055771667099ull, 6235587815520847591ull}}, {{7739403500096122787ull, 15026469181918674845ull, 14187100624996747585ull, 7794484769401059488ull}}, {{7142970196773770694ull, 2474014211058089922ull, 8866937890622967241ull, 4871552980875662180ull}}, {{18152084782821989175ull, 7704203782250000306ull, 11083672363278709051ull, 6089441226094577725ull}}, {{13466733941672710661ull, 5018568709385112479ull, 19532398816222602ull, 7611801532618222157ull}}, {{15334237741186526019ull, 7748291461793083203ull, 2318050758473833078ull, 4757375957886388848ull}}, {{14556111158055769620ull, 461992290386578196ull, 2897563448092291348ull, 5946719947357986060ull}}, {{18195138947569712025ull, 577490362983222745ull, 3621954310115364185ull, 7433399934197482575ull}}, {{4454432814589988160ull, 11890146522932983976ull, 9181250471463184471ull, 4645874958873426609ull}}, {{5568041018237485200ull, 10250997135238842066ull, 16088249107756368493ull, 5807343698591783261ull}}, {{16183423309651632307ull, 17425432437475940486ull, 6275253329413296904ull, 7259179623239729077ull}}, {{11005907100209764576ull, 3335046473135373992ull, 12455752680194009035ull, 9073974529049661346ull}}, {{6878691937631102860ull, 18225305110205466409ull, 12396531443548643550ull, 5671234080656038341ull}}, {{13210050940466266479ull, 13558259350902057203ull, 1660606249153640726ull, 7089042600820047927ull}}, {{11900877657155445195ull, 7724452151772795696ull, 15910815866724214620ull, 8861303251025059908ull}}, {{7438048535722153247ull, 14051154631712773118ull, 720887879847858329ull, 5538314531890662443ull}}, {{74188632797915751ull, 3728885234358802686ull, 14736167905091986624ull, 6922893164863328053ull}}, {{9316107827852170496ull, 4661106542948503357ull, 4585151826082819568ull, 8653616456079160067ull}}, {{8128410401621300512ull, 2913191589342814598ull, 559876882088068278ull, 5408510285049475042ull}}, {{937140965171849832ull, 12864861523533294056ull, 9923218139464861155ull, 6760637856311843802ull}}, {{1171426206464812290ull, 11469390885989229666ull, 3180650637476300636ull, 8450797320389804753ull}}, {{5343827397467895585ull, 16391741340598044349ull, 13517121694491157657ull, 5281748325243627970ull}}, {{11291470265262257386ull, 6654618620465391724ull, 7673030081259171264ull, 6602185406554534963ull}}, {{14114337831577821732ull, 8318273275581739655ull, 4979601583146576176ull, 8252731758193168704ull}}, {{15738990172377220439ull, 5198920797238587284ull, 3112250989466610110ull, 5157957348870730440ull}}, {{1226993641761973932ull, 15722023033403009914ull, 3890313736833262637ull, 6447446686088413050ull}}, {{10757114089057243223ull, 5817470736471598680ull, 14086264207896354105ull, 8059308357610516312ull}}, {{6723196305660777015ull, 15165134256363218935ull, 8803915129935221315ull, 5037067723506572695ull}}, {{3792309363648583364ull, 14344731802026635765ull, 6393207893991638740ull, 6296334654383215869ull}}, {{9352072722988117109ull, 17930914752533294706ull, 12603195885916936329ull, 7870418317979019836ull}}, {{10456731470294961097ull, 4289292692692227335ull, 17100369465552861014ull, 4919011448736887397ull}}, {{8459228319441313468ull, 14584987902720059977ull, 7540403776658912555ull, 6148764310921109247ull}}, {{15185721417729029738ull, 13619548859972687067ull, 4813818702396252790ull, 7685955388651386559ull}}, {{7185232876866949635ull, 3900532019055541513ull, 9926165716638739850ull, 4803722117907116599ull}}, {{13593227114511074947ull, 14099037060674202699ull, 7796021127371036908ull, 6004652647383895749ull}}, {{12379847874711455780ull, 17623796325842753374ull, 14356712427641184039ull, 7505815809229869686ull}}, {{3125718903267271959ull, 17932401731292802715ull, 4361259248848352120ull, 4691134880768668554ull}}, {{17742206684366253660ull, 3968758090406451777ull, 14674946097915215959ull, 5863918600960835692ull}}, {{8342700300175653363ull, 349261594580676818ull, 18343682622394019949ull, 7329898251201044615ull}}, {{1205003338364790896ull, 5048263011653233927ull, 18317917259565137032ull, 9162372814001305769ull}}, {{7670656114119076166ull, 3155164382283271204ull, 4531169259587128789ull, 5726483008750816106ull}}, {{9588320142648845207ull, 8555641496281476909ull, 14887333611338686794ull, 7158103760938520132ull}}, {{16597086196738444413ull, 1471179833497070328ull, 162422940463806877ull, 8947629701173150166ull}}, {{10373178872961527758ull, 3225330405149362907ull, 13936572393072043010ull, 5592268563233218853ull}}, {{8354787572774521794ull, 13255035043291479442ull, 3585657436057890050ull, 6990335704041523567ull}}, {{1220112429113376434ull, 7345421767259573495ull, 18317129850354526275ull, 8737919630051904458ull}}, {{7680099295836942128ull, 2285045595323539482ull, 16059892174898966826ull, 5461199768782440286ull}}, {{376752082941401851ull, 12079679031009200161ull, 10851493181768932724ull, 6826499710978050358ull}}, {{5082626122104140218ull, 15099598788761500201ull, 4340994440356390097ull, 8533124638722562948ull}}, {{14705856372383557396ull, 2519720215334855769ull, 11936493562077519619ull, 5333202899201601842ull}}, {{4547262410197283033ull, 16984708324450733424ull, 5697244915742123715ull, 6666503624002002303ull}}, {{5684078012746603792ull, 16619199387136028876ull, 2509870126250266740ull, 8333129530002502879ull}}, {{12775920794821403178ull, 1163627580105242239ull, 8486197856547498569ull, 5208205956251564299ull}}, {{11358214975099366068ull, 6066220493558940703ull, 5996061302256985307ull, 6510257445314455374ull}}, {{9586082700446819681ull, 2971089598521287975ull, 16718448664676007442ull, 8137821806643069217ull}}, {{12908830715420344157ull, 6468617017503192888ull, 3531501387781422795ull, 5086138629151918261ull}}, {{16136038394275430196ull, 3474085253451603206ull, 9026062753154166398ull, 6357673286439897826ull}}, {{10946675955989511937ull, 13565978603669279816ull, 2059206404587932189ull, 7947091608049872283ull}}, {{6841672472493444961ull, 10784579636506993837ull, 17427905067363315282ull, 4966932255031170176ull}}, {{13163776609044194105ull, 4257352508778966488ull, 3338137260494592487ull, 6208665318788962721ull}}, {{16454720761305242631ull, 710004617546320206ull, 8784357594045628513ull, 7760831648486203401ull}}, {{5672514457388388741ull, 11972967932034919889ull, 17019438542346987580ull, 4850519780303877125ull}}, {{11702329090162873830ull, 14966209915043649861ull, 7439240122651570763ull, 6063149725379846407ull}}, {{792853307421428575ull, 14096076375377174423ull, 4687364134887075550ull, 7578937156724808009ull}}, {{7413062344779474715ull, 4198361716183346110ull, 14458817630372891979ull, 4736835722953005005ull}}, {{42955894119567586ull, 636266126801794734ull, 4238463982683951262ull, 5921044653691256257ull}}, {{9277066904504235291ull, 10018704695357019225ull, 9909765996782326981ull, 7401305817114070321ull}}, {{17327381861383616817ull, 8567533443811830967ull, 17722818794057424123ull, 4625816135696293950ull}}, {{17047541308302133117ull, 6097730786337400805ull, 12930151455717004346ull, 5782270169620367438ull}}, {{7474368580095502684ull, 16845535519776526815ull, 6939317282791479624ull, 7227837712025459298ull}}, {{4731274706691990451ull, 2610175326011106903ull, 17897518640344125339ull, 9034797140031824122ull}}, {{9874575719323575888ull, 17772260643252799478ull, 15797635168642466240ull, 5646748212519890076ull}}, {{3119847612299694052ull, 3768581730356447732ull, 1300299887093531185ull, 7058435265649862596ull}}, {{3899809515374617565ull, 9322413181372947569ull, 1625374858866913981ull, 8823044082062328245ull}}, {{13966595993177605738ull, 8132351247571786182ull, 3321702296005515190ull, 5514402551288955153ull}}, {{8234872954617231365ull, 942067022609956920ull, 8763813888434281892ull, 6893003189111193941ull}}, {{10293591193271539206ull, 1177583778262446150ull, 15566453378970240269ull, 8616253986388992426ull}}, {{1821808477367324100ull, 3041832870627722796ull, 14340719380283788072ull, 5385158741493120266ull}}, {{2277260596709155124ull, 3802291088284653495ull, 8702527188499959282ull, 6731448426866400333ull}}, {{16681633801168607617ull, 13976235897210592676ull, 15489845004052337006ull, 8414310533583000416ull}}, {{1202649088875603953ull, 4123461417329232519ull, 9681153127532710629ull, 5258944083489375260ull}}, {{15338369416376668653ull, 9766012790088928552ull, 12101441409415888286ull, 6573680104361719075ull}}, {{726217696761284200ull, 2984143950756384883ull, 10515115743342472454ull, 8217100130452148844ull}}, {{16594787124971660289ull, 15700148024504904263ull, 15795319376443821091ull, 5135687581532593027ull}}, {{16131797887787187458ull, 15013499012203742425ull, 15132463202127388460ull, 6419609476915741284ull}}, {{6329689304451820610ull, 320129691545126416ull, 468834928949683960ull, 8024511846144676606ull}}, {{3956055815282387881ull, 200081057215704010ull, 14128079885875716187ull, 5015319903840422878ull}}, {{14168441805957760660ull, 14085159376801793724ull, 8436727820489869425ull, 6269149879800528598ull}}, {{17710552257447200824ull, 3771391165720078443ull, 1322537738757560974ull, 7836437349750660748ull}}, {{8763252151690806563ull, 16192177533857212739ull, 10049958123578251416ull, 4897773343594162967ull}}, {{6342379171186120300ull, 1793477843611964308ull, 7950761636045426367ull, 6122216679492703709ull}}, {{7927973963982650375ull, 16076905359797119097ull, 14550138063484170862ull, 7652770849365879636ull}}, {{16484198773557626245ull, 5436379831445811531ull, 18317208326532382597ull, 4782981780853674772ull}}, {{15993562448519644902ull, 11407160807734652318ull, 4449766334455926630ull, 5978727226067093466ull}}, {{10768581023794780319ull, 5035578972813539590ull, 14785579954924684096ull, 7473409032583866832ull}}, {{2118677121444349796ull, 3147236858008462244ull, 9240987471827927560ull, 4670880645364916770ull}}, {{2648346401805437244ull, 3934046072510577805ull, 2327862302930133642ull, 5838600806706145963ull}}, {{7922119020684184459ull, 14140929627492998064ull, 16744885933944830764ull, 7298251008382682453ull}}, {{9902648775855230574ull, 17676162034366247580ull, 7096049362148874743ull, 9122813760478353067ull}}, {{15412527521764294917ull, 17965130299119986593ull, 2129187842129352762ull, 5701758600298970667ull}}, {{5430601346923204934ull, 13233040837045207434ull, 16496542857943854665ull, 7127198250373713333ull}}, {{16011623720508781975ull, 2706242991024345580ull, 6785620517147654620ull, 8908997812967141667ull}}, {{783892788463212927ull, 10914773906244991796ull, 1935169814003590185ull, 5568123633104463542ull}}, {{979865985579016158ull, 18255153401233627649ull, 11642334304359263539ull, 6960154541380579427ull}}, {{5836518500401158102ull, 18207255733114646657ull, 9941231862021691520ull, 8700193176725724284ull}}, {{15177039108819193574ull, 11379534833196654160ull, 15436641950618333008ull, 5437620735453577677ull}}, {{524554812314440351ull, 14224418541495817701ull, 5460744382990752548ull, 6797025919316972097ull}}, {{5267379533820438343ull, 17780523176869772126ull, 11437616497165828589ull, 8496282399146215121ull}}, {{17127170263919937677ull, 13418669994757301530ull, 230981283087561012ull, 5310176499466384451ull}}, {{12185590793045146288ull, 16773337493446626913ull, 14123784659141614977ull, 6637720624332980563ull}}, {{1396930436024269147ull, 7131613811526119930ull, 13043044805499630818ull, 8297150780416225704ull}}, {{5484767540942556121ull, 9068944650631212860ull, 8151903003437269261ull, 5185719237760141065ull}}, {{6855959426178195151ull, 15947866831716403979ull, 14801564772723974480ull, 6482149047200176331ull}}, {{3958263264295356035ull, 1488089465935953358ull, 13890269947477580197ull, 8102686309000220414ull}}, {{16308972595466761234ull, 3235898925423664800ull, 4069732698746099719ull, 5064178943125137759ull}}, {{1939471670623899927ull, 17879931712061744713ull, 475479855005236744ull, 6330223678906422199ull}}, {{7036025606707262812ull, 3903170566367629275ull, 14429407874038709643ull, 7912779598633027748ull}}, {{2091672994978345306ull, 133638594766074345ull, 18241751958128969335ull, 4945487249145642342ull}}, {{7226277262150319536ull, 14002106298739756643ull, 13578817910806435860ull, 6181859061432052928ull}}, {{4421160559260511516ull, 17502632873424695804ull, 16973522388508044825ull, 7727323826790066160ull}}, {{11986597386392595506ull, 4021616518249353021ull, 10608451492817528016ull, 4829577391743791350ull}}, {{1148188677708580670ull, 5027020647811691277ull, 4037192329167134212ull, 6036971739679739188ull}}, {{6046921865563113741ull, 6283775809764614096ull, 5046490411458917765ull, 7546214674599673985ull}}, {{3779326165976946088ull, 6233202890316577762ull, 14683271553230293363ull, 4716384171624796240ull}}, {{13947529744325958418ull, 3179817594468334298ull, 18354089441537866704ull, 5895480214530995300ull}}, {{8211040143552672215ull, 3974771993085417873ull, 4495867728212781764ull, 7369350268163744126ull}}, {{14875486197868228173ull, 4968464991356772341ull, 14843206697120753013ull, 9211687835204680157ull}}, {{11603021882881336560ull, 5411133628811676665ull, 11582847194914164585ull, 5757304897002925098ull}}, {{668719298319506988ull, 11375603054441983736ull, 5255186956787929923ull, 7196631121253656373ull}}, {{835899122899383735ull, 9607817799625091766ull, 11180669714412300308ull, 8995788901567070466ull}}, {{14357495007094278546ull, 15228258161620458161ull, 11599604589935075596ull, 5622368063479419041ull}}, {{4111810703585684471ull, 588578628316021086ull, 664447682136680784ull, 7027960079349273802ull}}, {{14363135416336881397ull, 735723285395026357ull, 10053931639525626788ull, 8784950099186592252ull}}, {{11282802644424244825ull, 9683199090226667281ull, 15507079311558292550ull, 5490593811991620157ull}}, {{268445250248142319ull, 2880626825928558294ull, 5548791084165701976ull, 6863242264989525197ull}}, {{9558928599664953707ull, 3600783532410697867ull, 11547674873634515374ull, 8579052831236906496ull}}, {{3668487365576902115ull, 16085547763038849879ull, 7217296796021572108ull, 5361908019523066560ull}}, {{18420667262253291356ull, 1660190630089010732ull, 9021620995026965136ull, 6702385024403833200ull}}, {{4579090004107062578ull, 2075238287611263416ull, 11277026243783706420ull, 8377981280504791500ull}}, {{2861931252566914112ull, 10520395966611815443ull, 16271513439219592320ull, 5236238300315494687ull}}, {{17412472120990806351ull, 13150494958264769303ull, 15727705780597102496ull, 6545297875394368359ull}}, {{17153904132811120035ull, 16438118697830961629ull, 15047946207318990216ull, 8181622344242960449ull}}, {{13027033092220643974ull, 10273824186144351018ull, 2487437351933287029ull, 5113513965151850281ull}}, {{7060419328421029160ull, 17453966251107826677ull, 7720982708343996690ull, 6391892456439812851ull}}, {{13437210178953674353ull, 12594085777030007538ull, 5039542367002607959ull, 7989865570549766064ull}}, {{13009942380273434375ull, 14788832638284836567ull, 3149713979376629974ull, 4993665981593603790ull}}, {{11650741956914405065ull, 9262668761001269901ull, 13160514511075563276ull, 6242082476992004737ull}}, {{728369390860842619ull, 11578335951251587377ull, 2615585083562290383ull, 7802603096240005922ull}}, {{11984445915356496397ull, 14153988997173323966ull, 6246426695653819393ull, 4876626935150003701ull}}, {{5757185357340844688ull, 3857428191184491246ull, 12419719387994662146ull, 6095783668937504626ull}}, {{16419853733530831668ull, 14045157275835389865ull, 6301277198138551874ull, 7619729586171880783ull}}, {{3344879555815687937ull, 13389909315824506570ull, 10855827276477676777ull, 4762330991357425489ull}}, {{13404471481624385729ull, 2902328589498469500ull, 18181470114024483876ull, 5952913739196781861ull}}, {{16755589352030482161ull, 3627910736873086875ull, 8891779587248441133ull, 7441142173995977327ull}}, {{8166400335805357399ull, 4573287219759373249ull, 12474891269671357564ull, 4650713858747485829ull}}, {{14819686438184084652ull, 5716609024699216561ull, 1758556031807033243ull, 5813392323434357287ull}}, {{4689549992447942103ull, 2534075262446632798ull, 16033253095040955266ull, 7266740404292946608ull}}, {{15085309527414703437ull, 12390966114913066805ull, 1594822295091642466ull, 9083425505366183261ull}}, {{11734161463847883600ull, 12356039840248054657ull, 3302606943645970493ull, 5677140940853864538ull}}, {{832643774527690788ull, 1609991745027904610ull, 13351630716412238925ull, 7096426176067330672ull}}, {{10264176755014389293ull, 6624175699712268666ull, 16689538395515298656ull, 8870532720084163340ull}}, {{11026796490311381212ull, 4140109812320167916ull, 1207589460342285852ull, 5544082950052602088ull}}, {{13783495612889226515ull, 5175137265400209895ull, 1509486825427857315ull, 6930103687565752610ull}}, {{12617683497684145240ull, 1857235563322874465ull, 11110230568639597452ull, 8662629609457190762ull}}, {{968523158411508919ull, 10384144263931572349ull, 11555580123827136311ull, 5414143505910744226ull}}, {{5822339966441774053ull, 8368494311487077532ull, 5221103117929144581ull, 6767679382388430283ull}}, {{7277924958052217566ull, 15072303907786234819ull, 1914692878984042822ull, 8459599227985537854ull}}, {{2242860089568942027ull, 4808503923939008858ull, 15031741104647190476ull, 5287249517490961158ull}}, {{12026947148815953341ull, 6010629904923761072ull, 9566304343954212287ull, 6609061896863701448ull}}, {{15033683936019941677ull, 2901601362727313436ull, 11957880429942765359ull, 8261327371079626810ull}}, {{172680423157687740ull, 8731029879345652754ull, 12085361287141616253ull, 5163329606924766756ull}}, {{9439222565801885483ull, 15525473367609453846ull, 15106701608927020316ull, 6454162008655958445ull}}, {{2575656170397581046ull, 960097635802265692ull, 5048318955876611684ull, 8067702510819948057ull}}, {{10833157143353263962ull, 9823433059231191865ull, 14684414393491352062ull, 5042314069262467535ull}}, {{18153132447618967856ull, 3055919287184214023ull, 13743831973436802174ull, 6302892586578084419ull}}, {{18079729541096321916ull, 13043271145835043337ull, 12568103948368614813ull, 7878615733222605524ull}}, {{4382301935544119342ull, 10457887475360596038ull, 17078437004585160066ull, 4924134833264128452ull}}, {{14701249456284924985ull, 3848987307345969239ull, 2901302182021898467ull, 6155168541580160566ull}}, {{13764875801928768327ull, 199548115755073645ull, 12849999764382148892ull, 7693960676975200707ull}}, {{10908890385419174157ull, 9348089609201696836ull, 5725406843525149105ull, 4808725423109500442ull}}, {{13636112981773967696ull, 16296798029929508949ull, 16380130591261212189ull, 6010906778886875552ull}}, {{3210083171935295907ull, 6535939482129722475ull, 2028419165366963621ull, 7513633473608594441ull}}, {{18147203046955417606ull, 6390805185544770498ull, 12796977024422822023ull, 4696020921005371525ull}}, {{13460631771839496200ull, 3376820463503575219ull, 2161163225246363817ull, 5870026151256714407ull}}, {{12214103696371982345ull, 8832711597806856928ull, 16536512086840118483ull, 7337532689070893008ull}}, {{15267629620464977932ull, 6429203478831183256ull, 2223896034840596488ull, 9171915861338616261ull}}, {{9542268512790611207ull, 4018252174269489535ull, 3695778030989066757ull, 5732447413336635163ull}}, {{7316149622560876105ull, 9634501236264249823ull, 8036520308945542ull, 7165559266670793954ull}}, {{4533501009773707227ull, 2819754508475536471ull, 9233417687240957736ull, 8956949083338492442ull}}, {{9750967158749648873ull, 1762346567797210294ull, 10382572072952986489ull, 5598093177086557776ull}}, {{2965336911582285284ull, 6814619228173900772ull, 12978215091191233111ull, 6997616471358197220ull}}, {{3706671139477856604ull, 3906588016789988061ull, 16222768863989041389ull, 8747020589197746525ull}}, {{4622512471387354330ull, 4747460519707436490ull, 12445073549206844820ull, 5466887868248591578ull}}, {{15001512626088968720ull, 5934325649634295612ull, 6332969899653780217ull, 6833609835310739473ull}}, {{305146708901659284ull, 12029593080470257420ull, 12527898392994613175ull, 8542012294138424341ull}}, {{9414088729918312861ull, 14436024702934992743ull, 10135779504835327186ull, 5338757683836515213ull}}, {{7155924893970503172ull, 8821658841813965121ull, 17281410399471546887ull, 6673447104795644016ull}}, {{13556592135890516869ull, 6415387533840068497ull, 3155018925629881993ull, 8341808880994555021ull}}, {{1555341057290491187ull, 15538832254718512571ull, 4277729837732370197ull, 5213630550621596888ull}}, {{15779234376895277696ull, 5588482263115977001ull, 5347162297165462747ull, 6517038188276996110ull}}, {{5888984915836933408ull, 2373916810467583348ull, 15907324908311604242ull, 8146297735346245137ull}}, {{12903987609252859188ull, 6095384024969627496ull, 3024549040053670795ull, 5091436084591403211ull}}, {{16129984511566073985ull, 3007544012784646466ull, 17615744355349252206ull, 6364295105739254013ull}}, {{10939108602602816673ull, 12982802052835583891ull, 8184622388904401545ull, 7955368882174067517ull}}, {{4531099867413066469ull, 1196722255381158076ull, 7421232002278944918ull, 4972105551358792198ull}}, {{5663874834266333086ull, 10719274856081223403ull, 53167965993905339ull, 6215131939198490248ull}}, {{2468157524405528453ull, 8787407551674141350ull, 66459957492381674ull, 7768914923998112810ull}}, {{15377656508035618995ull, 10103815738223726247ull, 4653223491860126450ull, 4855571827498820506ull}}, {{14610384616617135840ull, 3406397635924882001ull, 15039901401679933871ull, 6069464784373525632ull}}, {{4427922715489256088ull, 18093055100188266214ull, 353132678390365722ull, 7586830980466907041ull}}, {{16602509752462948767ull, 15919845456045054287ull, 11749922970062448336ull, 4741769362791816900ull}}, {{16141451172151298055ull, 1453062746346766243ull, 14687403712578060421ull, 5927211703489771125ull}}, {{15565127946761734664ull, 6428014451360845708ull, 4524196585440411814ull, 7409014629362213907ull}}, {{504832929871308357ull, 17852567087382692280ull, 521779856686563431ull, 4630634143351383692ull}}, {{631041162339135447ull, 17704022840800977446ull, 652224820858204289ull, 5788292679189229615ull}}, {{10012173489778695116ull, 8294970495719058095ull, 14650339081354919074ull, 7235365848986537018ull}}, {{7903530843795980991ull, 1145341082794046811ull, 9089551814838873035ull, 9044207311233171273ull}}, {{2633863768158794168ull, 16856739241242136921ull, 17210184930342765406ull, 5652629569520732045ull}}, {{7904015728625880613ull, 11847552014697895343ull, 7677673107646293046ull, 7065786961900915057ull}}, {{5268333642354962863ull, 5586067981517593371ull, 14208777402985254212ull, 8832233702376143821ull}}, {{986865517258157837ull, 12714664525303271665ull, 11186328886079477834ull, 5520146063985089888ull}}, {{5845267915000085201ull, 6669958619774313773ull, 13982911107599347293ull, 6900182579981362360ull}}, {{11918270912177494405ull, 12949134293145280120ull, 17478638884499184116ull, 8625228224976702950ull}}, {{7448919320110934003ull, 17316580970070575883ull, 6312463284384602168ull, 5390767640610439344ull}}, {{4699463131711279600ull, 3198982138878668238ull, 7890579105480752711ull, 6738459550763049180ull}}, {{15097700951493875308ull, 17833785728880499009ull, 9863223881850940888ull, 8423074438453811475ull}}, {{2518534067042590211ull, 11146116080550311881ull, 3858671916943144103ull, 5264421524033632172ull}}, {{7759853602230625668ull, 9320959082260501947ull, 4823339896178930129ull, 6580526905042040215ull}}, {{5088130984360894181ull, 16262884871253015338ull, 1417488851796274757ull, 8225658631302550269ull}}, {{7791767883652946767ull, 12470146053746828538ull, 3191773541586365675ull, 5141036644564093918ull}}, {{516337817711407651ull, 10975996548756147769ull, 13213088963837732902ull, 6426295805705117397ull}}, {{5257108290566647468ull, 4496623649090408903ull, 2681303149515002416ull, 8032869757131396747ull}}, {{10203221709245236523ull, 2810389780681505564ull, 17816715532942734174ull, 5020543598207122966ull}}, {{12754027136556545654ull, 12736359262706657763ull, 13047522379323641909ull, 6275679497758903708ull}}, {{11330847902268294164ull, 2085391023101158492ull, 16309402974154552387ull, 7844599372198629635ull}}, {{16305151975772459660ull, 17444270453934081721ull, 7887533849632901289ull, 4902874607624143522ull}}, {{6546381914433410863ull, 7970280012135438440ull, 636045275186350804ull, 6128593259530179403ull}}, {{8182977393041763579ull, 9962850015169298050ull, 14630114649265102217ull, 7660741574412724253ull}}, {{9726046889078490141ull, 17755996305549281041ull, 11449664665004382837ull, 4787963484007952658ull}}, {{16769244629775500580ull, 8359937326654437589ull, 5088708794400702739ull, 5984954355009940823ull}}, {{7126497731937212013ull, 5838235639890659083ull, 1749199974573490520ull, 7481192943762426029ull}}, {{2148218073247063557ull, 3648897274931661927ull, 3399092993322125527ull, 4675745589851516268ull}}, {{16520330646840993158ull, 18396179648946741120ull, 4248866241652656908ull, 5844681987314395335ull}}, {{2203669234841689831ull, 4548480487473874785ull, 699396783638433232ull, 7305852484142994169ull}}, {{7366272561979500192ull, 5685600609342343481ull, 5485931997975429444ull, 9132315605178742711ull}}, {{16133135397305657380ull, 12776872417693740483ull, 10346236526375725258ull, 5707697253236714194ull}}, {{15554733228204683821ull, 6747718485262399796ull, 3709423621114880765ull, 7134621566545892743ull}}, {{996672461546303161ull, 13046334125005387650ull, 25093507966213052ull, 8918276958182365929ull}}, {{5234606306893827380ull, 17377330864983143089ull, 11544898488547352917ull, 5573923098863978705ull}}, {{11154943902044672128ull, 7886605525946765149ull, 596065055402027435ull, 6967403873579973382ull}}, {{108621822273676448ull, 5246570889006068533ull, 9968453356107310102ull, 8709254841974966727ull}}, {{2373731648134741732ull, 17114164860910956545ull, 13147812375208150669ull, 5443284276234354204ull}}, {{7578850578595815069ull, 7557648020856531969ull, 16434765469010188337ull, 6804105345292942755ull}}, {{14085249241672156741ull, 14058746044498052865ull, 15931770817835347517ull, 8505131681616178444ull}}, {{1885751748404016107ull, 11092559287024976993ull, 733984724292316390ull, 5315707301010111528ull}}, {{6968875703932408038ull, 4642327071926445433ull, 917480905365395488ull, 6644634126262639410ull}}, {{13322780648342897951ull, 5802908839908056791ull, 10370223168561520168ull, 8305792657828299262ull}}, {{15244266932855393076ull, 3626818024942535494ull, 1869703461923562201ull, 5191120411142687039ull}}, {{9831961629214465536ull, 9145208549605557272ull, 16172187382686616463ull, 6488900513928358798ull}}, {{12289952036518081920ull, 6819824668579558686ull, 10991862191503494771ull, 8111125642410448498ull}}, {{3069534004396413296ull, 1956547408648530227ull, 11481599888117072136ull, 5069453526506530311ull}}, {{17671975560777680332ull, 2445684260810662783ull, 9740313841718952266ull, 6336816908133162889ull}}, {{17478283432544712511ull, 12280477362868104287ull, 16787078320576078236ull, 7921021135166453611ull}}, {{17841456172981527176ull, 16898670388647340987ull, 8186080941146354945ull, 4950638209479033507ull}}, {{17690134197799521066ull, 7288279930527012522ull, 5620915158005555778ull, 6188297761848791884ull}}, {{12889295710394625524ull, 18333721950013541461ull, 7026143947506944722ull, 7735372202310989855ull}}, {{10361652828210334905ull, 16070262237185851317ull, 11308868994832922307ull, 4834607626444368659ull}}, {{17563752053690306535ull, 15476141778054926242ull, 9524400225113764980ull, 6043259533055460824ull}}, {{12731318030258107360ull, 898433148859106187ull, 11905500281392206226ull, 7554074416319326030ull}}, {{5651230759697623148ull, 5173206736464329271ull, 2829251657442740987ull, 4721296510199578769ull}}, {{2452352431194641031ull, 1854822402153023685ull, 8148250590230814138ull, 5901620637749473461ull}}, {{7677126557420689193ull, 11541900039546055414ull, 14796999256215905576ull, 7377025797186841826ull}}, {{373036159921085683ull, 14427375049432569268ull, 9272877033415106162ull, 9221282246483552283ull}}, {{9456519636805454360ull, 13628795424322743696ull, 3489705136670747399ull, 5763301404052220177ull}}, {{11820649546006817950ull, 12424308261976041716ull, 8973817439265822153ull, 7204126755065275221ull}}, {{14775811932508522437ull, 1695327272187888433ull, 15828957817509665596ull, 9005158443831594026ull}}, {{2317353430176744667ull, 10282951581972206079ull, 14504784654370928901ull, 5628224027394746266ull}}, {{16731749843003094546ull, 17465375495892645502ull, 8907608781108885318ull, 7035280034243432833ull}}, {{11691315266899092375ull, 12608347333011031070ull, 15746196994813494552ull, 8794100042804291041ull}}, {{2695386023384544830ull, 7880217083131894419ull, 2923844094117352239ull, 5496312526752681901ull}}, {{17204290584512844750ull, 5238585335487480119ull, 8266491136074078203ull, 6870390658440852376ull}}, {{16893677212213668033ull, 1936545650931962245ull, 10333113920092597754ull, 8587988323051065470ull}}, {{12864391266847236473ull, 5822027050259864307ull, 1846510181630485692ull, 5367492701906915919ull}}, {{11468803065131657687ull, 7277533812824830384ull, 16143195782320270827ull, 6709365877383644898ull}}, {{14336003831414572109ull, 4485231247603650076ull, 10955622691045562726ull, 8386707346729556123ull}}, {{18183374431488883376ull, 16638327585034445009ull, 4541421172689782751ull, 5241692091705972577ull}}, {{8894159984078940508ull, 16186223462865668358ull, 10288462484289616343ull, 6552115114632465721ull}}, {{1894327943243899827ull, 15621093310154697544ull, 17472264123789408333ull, 8190143893290582151ull}}, {{1183954964527437392ull, 12069026328060379917ull, 17837694105009462064ull, 5118839933306613844ull}}, {{6091629724086684644ull, 15086282910075474896ull, 3850373557552275964ull, 6398549916633267306ull}}, {{7614537155108355805ull, 411109563884792004ull, 14036338983795120764ull, 7998187395791584132ull}}, {{13982457758797498186ull, 9480315514282770810ull, 17996083901726726285ull, 4998867122369740082ull}}, {{8254700161642096924ull, 16462080411280851417ull, 13271732840303632048ull, 6248583902962175103ull}}, {{14930061220480009059ull, 2130856440391512655ull, 11977980031952152157ull, 7810729878702718879ull}}, {{16248817290441087518ull, 3637628284458389361ull, 14403766547611176954ull, 4881706174189199299ull}}, {{6475963557769195686ull, 13770407392427762510ull, 13393022166086583288ull, 6102132717736499124ull}}, {{17318326484066270415ull, 17213009240534703137ull, 16741277707608229110ull, 7627665897170623905ull}}, {{3906425024900337154ull, 6146444756906801557ull, 3545769539614061338ull, 4767291185731639941ull}}, {{9494717299552809346ull, 16906427982988277754ull, 9043897942944964576ull, 5959113982164549926ull}}, {{2645024587586235874ull, 2686290905025795577ull, 2081500391826429913ull, 7448892477705687408ull}}, {{13182355413309867182ull, 13208146861709591995ull, 1300937744891518695ull, 4655557798566054630ull}}, {{11866258248209946073ull, 11898497558709602090ull, 10849544217969174177ull, 5819447248207568287ull}}, {{5609450773407656783ull, 1038063893104838901ull, 8950244254034079818ull, 7274309060259460359ull}}, {{11623499485186958883ull, 10520951903235824434ull, 6576119299115211868ull, 9092886325324325449ull}}, {{11876373196669237206ull, 15798966976377166079ull, 15639289608015477177ull, 5683053953327703405ull}}, {{10233780477409158603ull, 5913650665189293887ull, 5714053954737182760ull, 7103817441659629257ull}}, {{8180539578334060350ull, 7392063331486617359ull, 11754253461848866354ull, 8879771802074536571ull}}, {{12030366264099869575ull, 9231725600606523753ull, 5040565404441847519ull, 5549857376296585357ull}}, {{1202899774842673256ull, 6927970982330766788ull, 10912392773979697303ull, 6937321720370731696ull}}, {{1503624718553341570ull, 4048277709486070581ull, 13640490967474621629ull, 8671652150463414620ull}}, {{3245608458309532434ull, 4836016577642488065ull, 17748678891526414326ull, 5419782594039634137ull}}, {{8668696591314303446ull, 15268392758907885889ull, 8350790559125854195ull, 6774728242549542672ull}}, {{15447556757570267211ull, 14473804930207469457ull, 10438488198907317744ull, 8468410303186928340ull}}, {{2737193945840335151ull, 9046128081379668411ull, 15747427161171849398ull, 5292756439491830212ull}}, {{17256550487582582651ull, 2084288064869809705ull, 1237539877755260132ull, 6615945549364787766ull}}, {{7735630054196064602ull, 2605360081087262132ull, 10770296884048850973ull, 8269931936705984707ull}}, {{14058140820727316184ull, 3934193059893232784ull, 4425592543316837906ull, 5168707460441240442ull}}, {{17572676025909145230ull, 14141113361721316788ull, 14755362716000823190ull, 6460884325551550552ull}}, {{3519100958676879922ull, 8453019665296870178ull, 18444203395001028988ull, 8076105406939438190ull}}, {{6811124117600437855ull, 14506509327665319669ull, 6915941103448255213ull, 5047565879337148869ull}}, {{13125591165427935223ull, 4298078604299485874ull, 13256612397737706921ull, 6309457349171436086ull}}, {{7183616919930143220ull, 9984284273801745247ull, 7347393460317357843ull, 7886821686464295108ull}}, {{11407289602597421369ull, 3934334661912396827ull, 13815492949553124460ull, 4929263554040184442ull}}, {{9647425984819388807ull, 4917918327390496034ull, 8045994150086629767ull, 6161579442550230553ull}}, {{2835910444169460201ull, 1535711890810732139ull, 14669178706035675113ull, 7701974303187788191ull}}, {{17913345092101770290ull, 12489034977825177346ull, 16085765718913378801ull, 4813733939492367619ull}}, {{13168309328272437054ull, 1776235666999307971ull, 15495521130214335598ull, 6017167424365459524ull}}, {{11848700641913158413ull, 11443666620603910772ull, 922657339058367881ull, 7521459280456824406ull}}, {{16628809938050499816ull, 234762610236362376ull, 14411718892193643638ull, 4700912050285515253ull}}, {{2339268348853573154ull, 9516825299650228779ull, 4179590559959890835ull, 5876140062856894067ull}}, {{16759143491349130155ull, 7284345606135398069ull, 612802181522475640ull, 7345175078571117584ull}}, {{7113871308904248982ull, 9105432007669247587ull, 766002726903094550ull, 9181468848213896980ull}}, {{2140326558851461662ull, 1079208986365891838ull, 9702123741169209902ull, 5738418030133685612ull}}, {{11898780235419102885ull, 10572383269812140605ull, 12127654676461512377ull, 7173022537667107015ull}}, {{1038417238991714894ull, 17827165105692563661ull, 10547882327149502567ull, 8966278172083883769ull}}, {{2954853783583515761ull, 18059507218698934144ull, 18121641500536908864ull, 5603923857552427355ull}}, {{3693567229479394701ull, 4127639949664116064ull, 18040365857243748177ull, 7004904821940534194ull}}, {{4616959036849243376ull, 9771235955507532984ull, 13327085284699909413ull, 8756131027425667743ull}}, {{2885599398030777110ull, 8412865481405902067ull, 15246957330578525239ull, 5472581892141042339ull}}, {{17442057302820635100ull, 5904395833329989679ull, 14447010644795768645ull, 6840727365176302924ull}}, {{17190885610098405971ull, 11992180810089875003ull, 18058763305994710806ull, 8550909206470378655ull}}, {{8438460497097809780ull, 2883426987878783973ull, 18204256093887776110ull, 5344318254043986659ull}}, {{15159761639799650129ull, 12827655771703255774ull, 18143634098932332233ull, 6680397817554983324ull}}, {{9726330012894786853ull, 2199511659346906006ull, 4232798549955863676ull, 8350497271943729156ull}}, {{1467270239631853879ull, 10598066823946592062ull, 11868871130577190605ull, 5219060794964830722ull}}, {{11057459836394593157ull, 17859269548360627981ull, 5612716876366712448ull, 6523825993706038403ull}}, {{18433510813920629350ull, 3877342861741233360ull, 2404210077031002657ull, 8154782492132548004ull}}, {{11520944258700393344ull, 13952554334656740610ull, 10726003334999152468ull, 5096739057582842502ull}}, {{5177808286520715872ull, 17440692918320925763ull, 4184132131894164777ull, 6370923821978553128ull}}, {{1860574339723506935ull, 7965808092618993492ull, 5230165164867705972ull, 7963654777473191410ull}}, {{10386230999181967643ull, 14202002094741646740ull, 7880539246469704136ull, 4977284235920744631ull}}, {{12982788748977459553ull, 17752502618427058425ull, 5238988039659742266ull, 6221605294900930789ull}}, {{2393427880939660730ull, 12967256236179047224ull, 11160421068002065737ull, 7777006618626163486ull}}, {{1495892425587287956ull, 1187006119970822659ull, 2363577149073903182ull, 4860629136641352179ull}}, {{15704923587266273657ull, 10707129686818304131ull, 16789529491624542689ull, 6075786420801690223ull}}, {{15019468465655454167ull, 17995598126950268068ull, 16375225846103290457ull, 7594733026002112779ull}}, {{163795754179883047ull, 4329719801702835687ull, 7928673144600862584ull, 4746708141251320487ull}}, {{14039802748007017520ull, 5412149752128544608ull, 5299155412323690326ull, 5933385176564150609ull}}, {{17549753435008771900ull, 15988559227015456568ull, 11235630283832000811ull, 7416731470705188261ull}}, {{10968595896880482438ull, 7687006507670966403ull, 9328111936608694459ull, 4635457169190742663ull}}, {{9099058852673215143ull, 4997072116161320100ull, 7048453902333480170ull, 5794321461488428329ull}}, {{11373823565841518929ull, 15469712182056425933ull, 13422253396344238116ull, 7242901826860535411ull}}, {{382221402019734949ull, 890396153860980801ull, 12166130727002909742ull, 9053627283575669264ull}}, {{11768103422330804103ull, 14391555651445276712ull, 7603831704376818588ull, 5658517052234793290ull}}, {{14710129277913505129ull, 17989444564306595890ull, 281417593616247427ull, 7073146315293491613ull}}, {{9164289560537105603ull, 17875119686955856959ull, 4963458010447697188ull, 8841432894116864516ull}}, {{12645210002976772858ull, 1948577767492634791ull, 12325533293384586551ull, 5525895558823040322ull}}, {{11194826485293578169ull, 16270780264647957201ull, 6183544579875957380ull, 6907369448528800403ull}}, {{158475051334808999ull, 1891731257100394886ull, 3117744706417558822ull, 8634211810661000504ull}}, {{13934104962366419336ull, 15017390090969910515ull, 1948590441510974263ull, 5396382381663125315ull}}, {{12805945184530636266ull, 14160051595285000240ull, 16270796107170881541ull, 6745477977078906643ull}}, {{16007431480663295333ull, 3865006438824086588ull, 15726809115536214023ull, 8431847471348633304ull}}, {{781272638559783775ull, 9333158051906135974ull, 9829255697210133764ull, 5269904669592895815ull}}, {{10199962835054505527ull, 11666447564882669967ull, 7674883603085279301ull, 6587380836991119769ull}}, {{8138267525390744004ull, 748001400821173747ull, 14205290522283987031ull, 8234226046238899711ull}}, {{2780574194155521051ull, 7385029903154315448ull, 15795835604068573750ull, 5146391278899312319ull}}, {{3475717742694401313ull, 7915342088118502ull, 15133108486658329284ull, 6432989098624140399ull}}, {{13568019215222777450ull, 9894177610148127ull, 14304699589895523701ull, 8041236373280175499ull}}, {{15397541037155317762ull, 2312026870220036531ull, 6634594234471008361ull, 5025772733300109687ull}}, {{14635240278016759299ull, 7501719606202433568ull, 3681556774661372547ull, 6282215916625137109ull}}, {{18294050347520949123ull, 4765463489325654056ull, 9213631986754103588ull, 7852769895781421386ull}}, {{11433781467200593202ull, 12201786717683309593ull, 10370206010148702646ull, 4907981184863388366ull}}, {{457168778718577791ull, 6028861360249361184ull, 3739385475831102500ull, 6134976481079235458ull}}, {{571460973398222238ull, 7536076700311701480ull, 13897603881643653933ull, 7668720601349044322ull}}, {{357163108373888899ull, 7015890946908507377ull, 13297688444454671612ull, 4792950375843152701ull}}, {{5058139903894749028ull, 8769863683635634221ull, 2787052500286175803ull, 5991187969803940877ull}}, {{10934360898295824189ull, 6350643586117154872ull, 8095501643785107658ull, 7488984962254926096ull}}, {{6833975561434890118ull, 8580838259750609699ull, 5059688527365692286ull, 4680615601409328810ull}}, {{3930783433366224743ull, 1502675787833486316ull, 15547982696061891166ull, 5850769501761661012ull}}, {{4913479291707780929ull, 11101716771646633703ull, 988234296367812341ull, 7313461877202076266ull}}, {{1530163096207338257ull, 42087909276128417ull, 10458664907314541235ull, 9141827346502595332ull}}, {{12485566981198056171ull, 16167206007793437924ull, 15760037603926364079ull, 5713642091564122082ull}}, {{15606958726497570214ull, 15597321491314409501ull, 10476674968053179291ull, 7142052614455152603ull}}, {{5673640352839799055ull, 14884965845715623973ull, 8484157691639086210ull, 8927565768068940754ull}}, {{5851868229738568361ull, 13914789671999652887ull, 9914284575701816785ull, 5579728605043087971ull}}, {{2703149268745822548ull, 3558429034717402397ull, 7781169701199883078ull, 6974660756303859964ull}}, {{7990622604359666089ull, 13671408330251528804ull, 9726462126499853847ull, 8718325945379824955ull}}, {{14217511164579567114ull, 15462159234048287358ull, 3773195819848714702ull, 5448953715862390597ull}}, {{8548516918869683084ull, 10104327005705583390ull, 9328180793238281282ull, 6811192144827988246ull}}, {{1462274111732328047ull, 3407036720277203430ull, 2436853954693075795ull, 8513990181034985308ull}}, {{14748979375114868741ull, 18270299014669109807ull, 10746405758537948179ull, 5321243863146865817ull}}, {{13824538200466198023ull, 18226187749908999355ull, 18044693216599823128ull, 6651554828933582271ull}}, {{12668986732155359624ull, 4335990613676697578ull, 17944180502322391007ull, 8314443536166977839ull}}, {{12529802726024487669ull, 9627523161189017842ull, 18132641841592576235ull, 5196527210104361149ull}}, {{6438881370675833778ull, 7422717933058884399ull, 8830744246708556582ull, 6495659012630451437ull}}, {{3436915694917404319ull, 55025379468829691ull, 15650116326813083632ull, 8119573765788064296ull}}, {{18288973373819235363ull, 34390862168018556ull, 9781322704258177270ull, 5074733603617540185ull}}, {{4414472643564492588ull, 9266360614564799004ull, 16838339398750109491ull, 6343417004521925231ull}}, {{5518090804455615735ull, 6971264749778610851ull, 16436238230010248960ull, 7929271255652406539ull}}, {{1142963743571065883ull, 4357040468611631782ull, 7966805884542711648ull, 4955794534782754087ull}}, {{10652076716318608161ull, 5446300585764539727ull, 5346821337251001656ull, 6194743168478442609ull}}, {{8703409876970872297ull, 6807875732205674659ull, 11295212689991139974ull, 7743428960598053261ull}}, {{3133788163893101234ull, 18089980387910710374ull, 9365350940458156435ull, 4839643100373783288ull}}, {{13140607241721152350ull, 18000789466461000063ull, 11706688675572695544ull, 6049553875467229110ull}}, {{11814073033724052534ull, 4054242759366698463ull, 5409988807611093623ull, 7561942344334036388ull}}, {{14301324673718614690ull, 9451430752245268395ull, 12604615041611709322ull, 4726213965208772742ull}}, {{13264969823720880458ull, 2590916403451809686ull, 6532396765159860845ull, 5907767456510965928ull}}, {{7357840242796324765ull, 7850331522742150012ull, 8165495956449826056ull, 7384709320638707410ull}}, {{13822022188602478786ull, 4906457201713843757ull, 9715120991208529189ull, 4615443325399192131ull}}, {{3442469680470934770ull, 10744757520569692601ull, 7532215220583273582ull, 5769304156748990164ull}}, {{8914773119016056367ull, 4207574863857339943ull, 9415269025729091978ull, 7211630195936237705ull}}, {{6531780380342682555ull, 14482840616676450737ull, 16380772300588752876ull, 9014537744920297131ull}}, {{15611577783782646357ull, 18275147422277557518ull, 7932139678654276595ull, 5634086090575185707ull}}, {{10291100192873532138ull, 18232248259419558994ull, 5303488579890457840ull, 7042607613218982134ull}}, {{3640503204237139364ull, 4343566250564897127ull, 15852732761717848109ull, 8803259516523727667ull}}, {{9192843530289293959ull, 5020571915816754656ull, 7602114966859961116ull, 5502037197827329792ull}}, {{11491054412861617448ull, 6275714894770943320ull, 9502643708574951395ull, 6877546497284162240ull}}, {{14363818016077021810ull, 3232957600036291246ull, 11878304635718689244ull, 8596933121605202800ull}}, {{4365700241620750728ull, 11243970536877457837ull, 7423940397324180777ull, 5373083201003251750ull}}, {{10068811320453326313ull, 219905115814658584ull, 56553459800450164ull, 6716354001254064688ull}}, {{12586014150566657892ull, 274881394768323230ull, 70691824750562705ull, 8395442501567580860ull}}, {{3254572825676773279ull, 11701015917798671779ull, 9267554427323877498ull, 5247151563479738037ull}}, {{17903274087378130310ull, 5402897860393563915ull, 16196129052582234777ull, 6558939454349672546ull}}, {{17767406590795274983ull, 11365308343919342798ull, 11021789278873017663ull, 8198674317937090683ull}}, {{6492943100819658961ull, 14020846742590671105ull, 4582775290081942087ull, 5124171448710681677ull}}, {{12727864894451961605ull, 12914372409810950977ull, 10340155131029815513ull, 6405214310888352096ull}}, {{2074773062782788294ull, 2307907456981525010ull, 12925193913787269392ull, 8006517888610440120ull}}, {{5908419182666630588ull, 1442442160613453131ull, 8078246196117043370ull, 5004073680381525075ull}}, {{2773837959905900331ull, 11026424737621592222ull, 5486121726718916308ull, 6255092100476906344ull}}, {{12690669486737151221ull, 13783030922026990277ull, 6857652158398645385ull, 7818865125596132930ull}}, {{10237511438424413466ull, 1696865298625787067ull, 8897718617426541270ull, 4886790703497583081ull}}, {{8185203279603128928ull, 11344453660137009642ull, 15733834290210564491ull, 6108488379371978851ull}}, {{1008132062649135352ull, 9568881056743874149ull, 15055606844335817710ull, 7635610474214973564ull}}, {{2935925548369403547ull, 1368864642037533439ull, 186382240855110261ull, 4772256546384358478ull}}, {{17504964990743918146ull, 6322766820974304702ull, 9456349837923663634ull, 5965320682980448097ull}}, {{12657834201575121874ull, 17126830563072656686ull, 16432123315831967446ull, 7456650853725560121ull}}, {{3299460357557063267ull, 6092583083493022525ull, 3352548044753897798ull, 4660406783578475076ull}}, {{8736011465373716988ull, 16839100891221053964ull, 4190685055942372247ull, 5825508479473093845ull}}, {{10920014331717146235ull, 16437190095598929551ull, 9850042338355353213ull, 7281885599341367306ull}}, {{9038331896219044890ull, 6711429564216498227ull, 3089180886089415709ull, 9102356999176709133ull}}, {{3343114425923209104ull, 6500486486849005344ull, 4236581063019578770ull, 5688973124485443208ull}}, {{4178893032404011380ull, 17348980145416032488ull, 5295726328774473462ull, 7111216405606804010ull}}, {{5223616290505014225ull, 12462853144915264802ull, 15843029947822867636ull, 8889020507008505012ull}}, {{7876446199993021795ull, 17012655252426816309ull, 678521680534516464ull, 5555637816880315633ull}}, {{14457243768418665147ull, 2819074991823968770ull, 5459838119095533485ull, 6944547271100394541ull}}, {{8848182673668555626ull, 8135529758207348867ull, 11436483667296804760ull, 8680684088875493176ull}}, {{3224271161829153314ull, 5084706098879593042ull, 7147802292060502975ull, 5425427555547183235ull}}, {{13253710989141217451ull, 1744196605172103398ull, 4323066846648240815ull, 6781784444433979044ull}}, {{7343766699571746006ull, 16015303811747292960ull, 5403833558310301018ull, 8477230555542473805ull}}, {{4589854187232341254ull, 14621250900769446004ull, 5683238983157632088ull, 5298269097214046128ull}}, {{5737317734040426567ull, 18276563625961807505ull, 7104048728947040110ull, 6622836371517557660ull}}, {{11783333185977921113ull, 13622332495597483573ull, 8880060911183800138ull, 8278545464396947075ull}}, {{9670426250449894648ull, 13125643828175815137ull, 3244195060276181134ull, 5174090915248091922ull}}, {{16699718831489756213ull, 7183682748364993113ull, 13278615862200002226ull, 6467613644060114902ull}}, {{7039590484080031555ull, 18202975472311017200ull, 7374897790895226974ull, 8084517055075143628ull}}, {{4399744052550019722ull, 6765173651766997846ull, 13832683156164292667ull, 5052823159421964767ull}}, {{14723052102542300460ull, 3844781046281359403ull, 12679167926777977930ull, 6316028949277455959ull}}, {{13792129109750487671ull, 14029348344706475062ull, 11237273890045084508ull, 7895036186596819949ull}}, {{4008394675166666891ull, 17991714752296322722ull, 9329139190491871769ull, 4934397616623012468ull}}, {{14233865380813109421ull, 8654585385088239690ull, 11661423988114839712ull, 6167997020778765585ull}}, {{8568959689161610968ull, 10818231731360299613ull, 741721929861385928ull, 7709996275973456982ull}}, {{7661442814939700807ull, 6761394832100187258ull, 14298634261445529917ull, 4818747672483410613ull}}, {{353431481819850201ull, 13063429558552621977ull, 4038234771524748684ull, 6023434590604263267ull}}, {{5053475370702200655ull, 16329286948190777471ull, 436107445978547951ull, 7529293238255329084ull}}, {{10075951134329957266ull, 17123333370260317775ull, 9495939190591368277ull, 4705808273909580677ull}}, {{7983252899485058678ull, 7569108657543233507ull, 16481610006666598251ull, 5882260342386975846ull}}, {{5367380105928935443ull, 4849699803501653980ull, 11378640471478472006ull, 7352825427983719808ull}}, {{6709225132411169304ull, 15285496791231843283ull, 14223300589348090007ull, 9191031784979649760ull}}, {{1887422698543286863ull, 16470964522160983908ull, 8889562868342556254ull, 5744394865612281100ull}}, {{2359278373179108579ull, 11365333615846454077ull, 11111953585428195318ull, 7180493582015351375ull}}, {{7560783984901273627ull, 4983294982953291788ull, 9278255963357856244ull, 8975616977519189219ull}}, {{13948862027418071825ull, 12337931401200583175ull, 3493066967884966200ull, 5609760610949493262ull}}, {{12824391515845201878ull, 15422414251500728969ull, 13589705746710983558ull, 7012200763686866577ull}}, {{2195431339524338635ull, 10054645777521135404ull, 3152074128106565736ull, 8765250954608583222ull}}, {{10595516624057487455ull, 6284153610950709627ull, 15805104385348767297ull, 5478281846630364513ull}}, {{8632709761644471415ull, 12466878032115774938ull, 5921322426403795409ull, 6847852308287955642ull}}, {{1567515165200813460ull, 1748539484862554961ull, 16625025069859520070ull, 8559815385359944552ull}}, {{12508912024318978173ull, 14927895233321260562ull, 10390640668662200043ull, 5349884615849965345ull}}, {{6412767993543946908ull, 14048183023224187799ull, 17599986854255137958ull, 6687355769812456681ull}}, {{3404273973502545731ull, 8336856742175458941ull, 8164925512536758736ull, 8359194712265570852ull}}, {{4433514242652785034ull, 5210535463859661838ull, 14326450482190250018ull, 5224496695165981782ull}}, {{14765264840170757100ull, 15736541366679353105ull, 8684691065883036714ull, 6530620868957477228ull}}, {{4621522994931282663ull, 10447304671494415574ull, 10855863832353795893ull, 8163276086196846535ull}}, {{16723509927114215377ull, 8835408428897703685ull, 13702443922862204289ull, 5102047553873029084ull}}, {{7069329353610605509ull, 15655946554549517511ull, 17128054903577755361ull, 6377559442341286355ull}}, {{4224975673585868982ull, 5734875137904733177ull, 16798382611044806298ull, 7971949302926607944ull}}, {{14169824842059637874ull, 8195982979617846139ull, 10498989131903003936ull, 4982468314329129965ull}}, {{13100595034147159438ull, 10244978724522307674ull, 17735422433306142824ull, 6228085392911412456ull}}, {{7152371755829173489ull, 12806223405652884593ull, 3722533967923126914ull, 7785106741139265571ull}}, {{15999447393461703191ull, 12615575646960440774ull, 20740720738260369ull, 4865691713212040982ull}}, {{10775937204972353181ull, 1934411503418387256ull, 9249297937777601270ull, 6082114641515051227ull}}, {{13469921506215441476ull, 11641386416127759878ull, 6949936403794613683ull, 7602643301893814034ull}}, {{3807014922957263019ull, 4970023500866155972ull, 8955396270799021456ull, 4751652063683633771ull}}, {{4758768653696578773ull, 6212529376082694965ull, 6582559320071388916ull, 5939565079604542214ull}}, {{10560146835548111370ull, 7765661720103368706ull, 17451571186944011953ull, 7424456349505677767ull}}, {{11211777790644957511ull, 16382753621133075201ull, 17824761019481089326ull, 4640285218441048604ull}}, {{179664183024033176ull, 11255069989561568194ull, 3834207200641810042ull, 5800356523051310756ull}}, {{9447952265634817278ull, 4845465450097184434ull, 4792759000802262553ull, 7250445653814138445ull}}, {{2586568295188745789ull, 10668517831048868447ull, 10602634769430216095ull, 9063057067267673056ull}}, {{8534134212134047975ull, 13585352672046624635ull, 6626646730893885059ull, 5664410667042295660ull}}, {{6055981746740172064ull, 12370004821630892890ull, 8283308413617356324ull, 7080513333802869575ull}}, {{16793349220279990888ull, 15462506027038616112ull, 5742449498594307501ull, 8850641667253586969ull}}, {{10495843262674994305ull, 11969909276112829022ull, 15118245982689911948ull, 5531651042033491855ull}}, {{3896432041488967073ull, 14962386595141036278ull, 14286121459935002031ull, 6914563802541864819ull}}, {{14093912088715984649ull, 14091297225498907443ull, 13245965806491364635ull, 8643204753177331024ull}}, {{6502852046233796454ull, 6501217756723123200ull, 8278728629057102897ull, 5402002970735831890ull}}, {{8128565057792245568ull, 12738208214331291904ull, 1125038749466602813ull, 6752503713419789863ull}}, {{10160706322240306959ull, 2087702212631951168ull, 15241356492115417229ull, 8440629641774737328ull}}, {{6350441451400191850ull, 3610656892108663432ull, 9525847807572135768ull, 5275393526109210830ull}}, {{7938051814250239812ull, 4513321115135829290ull, 2683937722610393902ull, 6594241907636513538ull}}, {{699192730958023957ull, 14865023430774562421ull, 12578294190117768185ull, 8242802384545641922ull}}, {{2742838466062458925ull, 2373110616593019657ull, 12473119887250993020ull, 5151751490341026201ull}}, {{8040234101005461560ull, 2966388270741274571ull, 1756341803781577563ull, 6439689362926282752ull}}, {{5438606607829439046ull, 17543043393708756926ull, 2195427254726971953ull, 8049611703657853440ull}}, {{17234187185175563116ull, 4046873093426891222ull, 1372142034204357471ull, 5031007314786158400ull}}, {{12319361944614678087ull, 446905348356226124ull, 1715177542755446839ull, 6288759143482698000ull}}, {{15399202430768347609ull, 14393689740727446367ull, 2143971928444308548ull, 7860948929353372500ull}}, {{16542030546871299112ull, 18219428124809429787ull, 10563354492132468650ull, 4913093080845857812ull}}, {{16065852165161735985ull, 13550913119157011426ull, 13204193115165585813ull, 6141366351057322265ull}}, {{10858943169597394174ull, 3103583343664100571ull, 2670183338674818555ull, 7676707938821652832ull}}, {{4480996471784677407ull, 18080640654285920521ull, 1668864586671761596ull, 4797942461763533020ull}}, {{10212931608158234662ull, 4154056744147849035ull, 2086080733339701996ull, 5997428077204416275ull}}, {{8154478491770405424ull, 5192570930184811294ull, 16442658971956791207ull, 7496785096505520343ull}}, {{484863038929115486ull, 10162885859006588915ull, 17194190885114076360ull, 4685490685315950214ull}}, {{14441136853943558069ull, 12703607323758236143ull, 12269366569537819642ull, 5856863356644937768ull}}, {{13439735049002059683ull, 6656137117843019371ull, 15336708211922274553ull, 7321079195806172210ull}}, {{12187982792825186699ull, 12931857415731162118ull, 9947513228048067383ull, 9151348994757715263ull}}, {{3005803227088353783ull, 14999939912473058180ull, 13134724795171123970ull, 5719593121723572039ull}}, {{3757254033860442229ull, 9526552853736546917ull, 11806719975536517059ull, 7149491402154465049ull}}, {{9308253560752940690ull, 7296505048743295742ull, 923341914138482612ull, 8936864252693081312ull}}, {{1205972457043200027ull, 13783687692319335647ull, 577088696336551632ull, 5585540157933175820ull}}, {{15342523626586163746ull, 17229609615399169558ull, 721360870420689540ull, 6981925197416469775ull}}, {{9954782496377928875ull, 3090267945539410332ull, 14736759143308025638ull, 8727406496770587218ull}}, {{15445111097090981355ull, 15766475521244295169ull, 13822160482994903927ull, 5454629060481617011ull}}, {{5471330816081562981ull, 15096408383127981058ull, 12666014585316242005ull, 6818286325602021264ull}}, {{16062535556956729535ull, 5035452423627812610ull, 15832518231645302507ull, 8522857907002526580ull}}, {{14650770741525343863ull, 841314755553688929ull, 671951857923538259ull, 5326786191876579113ull}}, {{4478405371624516117ull, 14886701499724274874ull, 5451625840831810727ull, 6658482739845723891ull}}, {{14821378751385420954ull, 13996690856227955688ull, 2202846282612375505ull, 8323103424807154864ull}}, {{9263361719615888097ull, 1830402757501390449ull, 1376778926632734691ull, 5201939640504471790ull}}, {{16190888167947248025ull, 16123061502158901773ull, 10944345695145694171ull, 6502424550630589737ull}}, {{6403552154651896319ull, 15542140859271239313ull, 18292118137359505618ull, 8128030688288237171ull}}, {{15531435142725904959ull, 14325524055471912474ull, 9126730826635997059ull, 5080019180180148232ull}}, {{10190921891552605391ull, 13295219050912502689ull, 11408413533294996324ull, 6350023975225185290ull}}, {{17350338382868144643ull, 16619023813640628361ull, 5037144879763969597ull, 7937529969031481613ull}}, {{3926432461651508546ull, 12692732892739086678ull, 5454058559066174950ull, 4960956230644676008ull}}, {{14131412613919161490ull, 6642544079069082539ull, 6817573198832718688ull, 6201195288305845010ull}}, {{13052579748971563959ull, 8303180098836353174ull, 17745338535395674168ull, 7751494110382306262ull}}, {{3546176324679839570ull, 5189487561772720734ull, 6479150566194908451ull, 4844683818988941414ull}}, {{13656092442704575271ull, 1875173433788513013ull, 17322310244598411372ull, 6055854773736176767ull}}, {{3235057498098555376ull, 2343966792235641267ull, 17041201787320626311ull, 7569818467170220959ull}}, {{18162812000807454774ull, 8382508272788357647ull, 17568280144716473300ull, 4731136541981388099ull}}, {{18091828982581930564ull, 10478135340985447059ull, 17348664162468203721ull, 5913920677476735124ull}}, {{18003100209800025301ull, 17709355194659196728ull, 3239086129375703035ull, 7392400846845918906ull}}, {{11251937631125015813ull, 8762503987448304003ull, 6636114849287202301ull, 4620250529278699316ull}}, {{9453236020478881862ull, 15564816002737767908ull, 8295143561609002876ull, 5775313161598374145ull}}, {{11816545025598602328ull, 1009275929712658269ull, 14980615470438641500ull, 7219141451997967681ull}}, {{935623226716089197ull, 1261594912140822837ull, 4890711282766138163ull, 9023926814997459602ull}}, {{2890607525911249701ull, 16929397884583871937ull, 7668380570156224255ull, 5639954259373412251ull}}, {{8224945425816450030ull, 16550061337302452017ull, 4973789694267892415ull, 7049942824216765314ull}}, {{14892867800697950441ull, 16075890653200677117ull, 15440609154689641327ull, 8812428530270956642ull}}, {{11613885384649912978ull, 16964960685891505054ull, 14262066740108413733ull, 5507767831419347901ull}}, {{5293984693957615414ull, 7371142802082217606ull, 3992525369853353455ull, 6884709789274184877ull}}, {{15840852904301795075ull, 4602242484175384103ull, 9602342730744079723ull, 8605887236592731096ull}}, {{16818062092829703778ull, 570558543395921112ull, 6001464206715049827ull, 5378679522870456935ull}}, {{2575833542327578107ull, 14548256234527065103ull, 2890144239966424379ull, 6723349403588071169ull}}, {{17054849983191636345ull, 13573634274731443474ull, 8224366318385418378ull, 8404186754485088961ull}}, {{15270967257922160620ull, 13095207440134540075ull, 16669443995059356246ull, 5252616721553180600ull}}, {{14477023053975312871ull, 7145637263313399286ull, 2390060920114643692ull, 6565770901941475751ull}}, {{8872906780614365281ull, 8932046579141749108ull, 16822634205425468327ull, 8207213627426844688ull}}, {{14768938774738754109ull, 12500058139604675048ull, 10514146378390917704ull, 5129508517141777930ull}}, {{14429394713891020ull, 15625072674505843811ull, 3919310936133871322ull, 6411885646427222413ull}}, {{13853094798674527486ull, 10307968806277528955ull, 9510824688594727057ull, 8014857058034028016ull}}, {{6352341239957885727ull, 17971695549991925357ull, 5944265430371704410ull, 5009285661271267510ull}}, {{12552112568374745063ull, 13241247400635130888ull, 16653703824819406321ull, 6261607076589084387ull}}, {{15690140710468431328ull, 2716501195511749898ull, 16205443762596869998ull, 7827008845736355484ull}}, {{14418023962470157484ull, 15532871302477007398ull, 905030314768267940ull, 4891880528585222178ull}}, {{8799157916232921047ull, 969345054386707632ull, 10354659930315110734ull, 6114850660731527722ull}}, {{10998947395291151309ull, 10435053354838160348ull, 3719952876039112609ull, 7643563325914409653ull}}, {{16097714158911745376ull, 18051123392842319977ull, 4630813556738139332ull, 4777227078696506033ull}}, {{6287084643357518008ull, 4117160167343348356ull, 10400202964350062070ull, 5971533848370632541ull}}, {{7858855804196897510ull, 14369822246033961253ull, 17611939723864965491ull, 7464417310463290676ull}}, {{7217627886836754896ull, 6675295894557531831ull, 1784090290560827624ull, 4665260819039556673ull}}, {{4410348840118555716ull, 8344119868196914789ull, 6841798881628422434ull, 5831576023799445841ull}}, {{10124622068575582549ull, 1206777798391367678ull, 13163934620462915947ull, 7289470029749307301ull}}, {{3432405548864702378ull, 15343530303271373310ull, 2619860220296481221ull, 9111837537186634127ull}}, {{15980311523322602698ull, 11895549448758302270ull, 8554941665326382619ull, 5694898460741646329ull}}, {{10752017367298477565ull, 10257750792520489934ull, 15305363100085366178ull, 7118623075927057911ull}}, {{4216649672268321148ull, 3598816453795836610ull, 14520017856679319819ull, 8898278844908822389ull}}, {{7247092063595088622ull, 18390161348118255545ull, 11380854169638268838ull, 5561424278068013993ull}}, {{13670551097921248681ull, 13764329648293043623ull, 391009656765672336ull, 6951780347585017492ull}}, {{12476502853974172947ull, 17205412060366304529ull, 488762070957090420ull, 8689725434481271865ull}}, {{880285256092776236ull, 1530010500874164523ull, 11834691340416651273ull, 5431078396550794915ull}}, {{14935414625398134007ull, 6524199144520093557ull, 10181678157093426187ull, 6788847995688493644ull}}, {{4834210226465503797ull, 3543562912222729043ull, 12727097696366782734ull, 8486059994610617055ull}}, {{715538382327245921ull, 16049784875421369364ull, 14871965087870321064ull, 5303787496631635659ull}}, {{894422977909057401ull, 1615487020567160089ull, 13978270341410513427ull, 6629734370789544574ull}}, {{5729714740813709656ull, 15854416830991113823ull, 8249465889908365975ull, 8287167963486930718ull}}, {{10498600740649650391ull, 16826539547010527995ull, 544230162765340830ull, 5179479977179331699ull}}, {{8511564907384675084ull, 11809802396908384186ull, 14515345758738839750ull, 6474349971474164623ull}}, {{1416084097376068047ull, 5538880959280704425ull, 13532496179996161784ull, 8092937464342705779ull}}, {{12414267606928512290ull, 3461800599550440265ull, 6151967103283907163ull, 5058085915214191112ull}}, {{1682776453378476650ull, 18162308804720214044ull, 7689958879104883953ull, 6322607394017738890ull}}, {{2103470566723095813ull, 8867827950618103843ull, 389076562026329134ull, 7903259242522173613ull}}, {{17455570168697792547ull, 930706450708926997ull, 2549015860480149661ull, 4939537026576358508ull}}, {{7984404655590076972ull, 5775069081813546651ull, 3186269825600187076ull, 6174421283220448135ull}}, {{5368819801060208311ull, 7218836352266933314ull, 17817895337282397557ull, 7718026604025560168ull}}, {{7967198394090018098ull, 6817615729380527273ull, 11136184585801498473ull, 4823766627515975105ull}}, {{14570684011039910527ull, 13133705680153046995ull, 85172676969709379ull, 6029708284394968882ull}}, {{13601668995372500254ull, 11805446081763920840ull, 9329837883066912532ull, 7537135355493711102ull}}, {{8501043122107812659ull, 16601775837957226333ull, 1219462658489432428ull, 4710709597183569439ull}}, {{15237989921062153728ull, 2305475723736981300ull, 15359386378393954248ull, 5888386996479461798ull}}, {{600743327618140544ull, 2881844654671226626ull, 9975860936137667002ull, 7360483745599327248ull}}, {{9974301196377451487ull, 12825677855193809090ull, 12469826170172083752ull, 9200604681999159060ull}}, {{10845624266163295084ull, 8016048659496130681ull, 17017013393212328153ull, 5750377926249474412ull}}, {{18168716351131506759ull, 14631746842797551255ull, 2824522667805858575ull, 7187972407811843016ull}}, {{18099209420486995544ull, 13677997535069551165ull, 3530653334757323219ull, 8984965509764803770ull}}, {{13617848897018066167ull, 6242905450204775526ull, 6818344352650714916ull, 5615603443603002356ull}}, {{7798939084417806901ull, 7803631812755969408ull, 8522930440813393645ull, 7019504304503752945ull}}, {{9748673855522258626ull, 14366225784372349664ull, 15265349069444129960ull, 8774380380629691181ull}}, {{6092921159701411641ull, 8978891115232718540ull, 11846686177616275177ull, 5483987737893556988ull}}, {{7616151449626764552ull, 15835299912468286079ull, 14808357722020343971ull, 6854984672366946235ull}}, {{4908503293606067786ull, 15182438872157969695ull, 13898761134098042060ull, 8568730840458682794ull}}, {{9985343586144874222ull, 265652258243955251ull, 13298411727238664192ull, 5355456775286676746ull}}, {{7869993464253704874ull, 332065322804944064ull, 7399642622193554432ull, 6694320969108345933ull}}, {{9837491830317131092ull, 415081653506180080ull, 13861239296169330944ull, 8367901211385432416ull}}, {{6148432393948206933ull, 259426033441362550ull, 8663274560105831840ull, 5229938257115895260ull}}, {{16908912529290034474ull, 324282541801703187ull, 10829093200132289800ull, 6537422821394869075ull}}, {{16524454643185155188ull, 405353177252128984ull, 8924680481737974346ull, 8171778526743586344ull}}, {{10327784151990721993ull, 4865031754209968519ull, 5577925301086233966ull, 5107361579214741465ull}}, {{8298044171561014587ull, 15304661729617236457ull, 11584092644785180361ull, 6384201974018426831ull}}, {{14984241232878656137ull, 5295769106739381859ull, 9868429787554087548ull, 7980252467523033539ull}}, {{7059307761335466134ull, 12533227728566889470ull, 3861925608007610765ull, 4987657792201895962ull}}, {{18047506738524108475ull, 1831476605426448125ull, 14050779046864289265ull, 6234572240252369952ull}}, {{8724325367872971882ull, 6901031775210448061ull, 17563473808580361581ull, 7793215300315462440ull}}, {{7758546364134301378ull, 6618987868720223990ull, 10977171130362725988ull, 4870759562697164025ull}}, {{474810918313100915ull, 8273734835900279988ull, 18333149931380795389ull, 6088449453371455031ull}}, {{593513647891376143ull, 14953854563302737889ull, 18304751395798606332ull, 7610561816714318789ull}}, {{11900161076000579850ull, 122787065209435372ull, 13746312631587822910ull, 4756601135446449243ull}}, {{14875201345000724812ull, 9376855868366570023ull, 12571204771057390733ull, 5945751419308061554ull}}, {{13982315662823518111ull, 16332755853885600433ull, 6490633926966962608ull, 7432189274135076943ull}}, {{1821418261623616964ull, 10207972408678500271ull, 10974175231995433486ull, 4645118296334423089ull}}, {{16111830882311684916ull, 3536593473993349530ull, 18329405058421679762ull, 5806397870418028861ull}}, {{10916416566034830337ull, 13644113879346462721ull, 9076698267744935990ull, 7257997338022536077ull}}, {{18257206725970925826ull, 7831770312328302593ull, 15957558853108557892ull, 9072496672528170096ull}}, {{4493225176090746785ull, 14118228482059964929ull, 9973474283192848682ull, 5670310420330106310ull}}, {{10228217488540821385ull, 8424413565720180353ull, 3243470817136285045ull, 7087888025412632888ull}}, {{17396957879103414636ull, 15142202975577613345ull, 4054338521420356306ull, 8859860031765791110ull}}, {{3955569646798552291ull, 14075562878163396245ull, 16369019631169886403ull, 5537412519853619443ull}}, {{9556148076925578268ull, 12982767579276857402ull, 15849588520534970100ull, 6921765649817024304ull}}, {{2721813059302197027ull, 16228459474096071753ull, 1365241576959161009ull, 8652207062271280381ull}}, {{13230348208132342902ull, 3225258143668962989ull, 3159118994813169583ull, 5407629413919550238ull}}, {{2702877204883264916ull, 17866630734868367449ull, 13172270780371237786ull, 6759536767399437797ull}}, {{7990282524531469048ull, 13109916381730683503ull, 2630280420181883521ull, 8449420959249297247ull}}, {{11911455605473250011ull, 1276168710940595333ull, 8561454290254759057ull, 5280888099530810779ull}}, {{1054261451559398802ull, 6206896907103132071ull, 6090131844391060917ull, 6601110124413513474ull}}, {{15152884869731412214ull, 12370307152306302992ull, 16836036842343601954ull, 8251387655516891842ull}}, {{9470553043582132634ull, 12343127988618827274ull, 15134209044892139125ull, 5157117284698057401ull}}, {{2614819267622889985ull, 1593851930491370381ull, 5082703250833010195ull, 6446396605872571752ull}}, {{7880210102956000385ull, 15827372968396376688ull, 6353379063541262743ull, 8057995757340714690ull}}, {{4925131314347500241ull, 16809637132888817286ull, 8582547933140677118ull, 5036247348337946681ull}}, {{15379786179789151109ull, 11788674379256245799ull, 15339870934853234302ull, 6295309185422433351ull}}, {{14613046706309050982ull, 5512470937215531441ull, 14563152650139154974ull, 7869136481778041689ull}}, {{2215625163802075008ull, 17280352391041870863ull, 2184441378695890002ull, 4918210301111276056ull}}, {{16604589510034757472ull, 12377068451947562770ull, 2730551723369862503ull, 6147762876389095070ull}}, {{11532364850688671031ull, 10859649546507065559ull, 12636561691067103937ull, 7684703595486368837ull}}, {{14125257059321501251ull, 18316496012635385734ull, 10203694066130633912ull, 4802939747178980523ull}}, {{8433199287297100755ull, 4448875942084680552ull, 8142931564235904487ull, 6003674683973725654ull}}, {{10541499109121375944ull, 949408909178462786ull, 955292418440104801ull, 7504593354967157068ull}}, {{11200122961628247869ull, 12122595614305009001ull, 9820429798379841308ull, 4690370846854473167ull}}, {{165095646753146124ull, 15153244517881261252ull, 7663851229547413731ull, 5862963558568091459ull}}, {{206369558441432655ull, 14329869628924188661ull, 4968128018506879260ull, 7328704448210114324ull}}, {{4869647966479178723ull, 17912337036155235826ull, 6210160023133599075ull, 9160880560262642905ull}}, {{7655215997476874606ull, 8889367638383328439ull, 15410565060526969182ull, 5725550350164151815ull}}, {{4957333978418705354ull, 1888337511124384741ull, 14651520307231323574ull, 7156937937705189769ull}}, {{10808353491450769596ull, 11583793925760256734ull, 4479342328756990755ull, 8946172422131487212ull}}, {{2143534913729343094ull, 4934028194386466507ull, 12022960992327895030ull, 5591357763832179507ull}}, {{16514476697443842579ull, 15390907279837858941ull, 10417015221982480883ull, 6989197204790224384ull}}, {{6808037816522639511ull, 14626948081369935773ull, 13021269027478101104ull, 8736496505987780480ull}}, {{6560866644540343647ull, 9141842550856209858ull, 8138293142173813190ull, 5460310316242362800ull}}, {{17424455342530205366ull, 2203931151715486514ull, 10172866427717266488ull, 6825387895302953500ull}}, {{12557197141307980900ull, 2754913939644358143ull, 12716083034646583110ull, 8531734869128691875ull}}, {{14765777240958569919ull, 15556879267559887551ull, 5641708887440420491ull, 5332334293205432422ull}}, {{13845535532770824494ull, 14834413066022471535ull, 16275508146155301422ull, 6665417866506790527ull}}, {{12695233397536142714ull, 9319644295673313611ull, 15732699164266738874ull, 8331772333133488159ull}}, {{5628677864246395244ull, 10436463703223208911ull, 16750466005307793652ull, 5207357708208430099ull}}, {{2424161311880606151ull, 13045579629029011139ull, 16326396488207354161ull, 6509197135260537624ull}}, {{16865259695132921401ull, 2471916481004100211ull, 1961251536549641086ull, 8136496419075672031ull}}, {{8234944300244381924ull, 15380005855909726344ull, 8143311237984607534ull, 5085310261922295019ull}}, {{10293680375305477404ull, 10001635283032382122ull, 5567453029053371514ull, 6356637827402868774ull}}, {{3643728432277070947ull, 3278672066935701845ull, 16182688323171490201ull, 7945797284253585967ull}}, {{4583173279386863294ull, 13578385087903283413ull, 17031709229623263231ull, 4966123302658491229ull}}, {{10340652617660967022ull, 12361295341451716362ull, 7454578481746915327ull, 6207654128323114037ull}}, {{3702443735221432969ull, 10839933158387257549ull, 13929909120611032063ull, 7759567660403892546ull}}, {{4619870343727089558ull, 13692487251633117824ull, 13317879218809282943ull, 4849729787752432841ull}}, {{5774837929658861947ull, 12503923046114009376ull, 2812290968229439967ull, 6062162234690541052ull}}, {{7218547412073577434ull, 11018217789215123816ull, 3515363710286799959ull, 7577702793363176315ull}}, {{4511592132545985896ull, 13803915145900534241ull, 18338003383425107638ull, 4736064245851985196ull}}, {{10251176184109870274ull, 8031521895520891993ull, 4475760155571832932ull, 5920080307314981496ull}}, {{17425656248564725747ull, 10039402369401114991ull, 5594700194464791165ull, 7400100384143726870ull}}, {{17808564182994035448ull, 8580469490089390821ull, 17331745676822658190ull, 4625062740089829293ull}}, {{8425647173460380598ull, 1502214825756962719ull, 7829624040746159026ull, 5781328425112286617ull}}, {{5920372948398087843ull, 11101140569050979207ull, 14398716069360086686ull, 7226660531390358271ull}}, {{2788780167070221900ull, 4653053674458948201ull, 13386709068272720454ull, 9033325664237947839ull}}, {{13272202650487358448ull, 16743216601819006337ull, 15284222195311532139ull, 5645828540148717399ull}}, {{2755195257827034347ull, 16317334733846370018ull, 14493591725712027270ull, 7057285675185896749ull}}, {{12667366109138568742ull, 11173296380453186714ull, 4281931601857870376ull, 8821607093982370937ull}}, {{12528789836638993368ull, 6983310237783241696ull, 14205422297229638745ull, 5513504433738981835ull}}, {{15660987295798741710ull, 13340823815656440024ull, 13145091853109660527ull, 6891880542173727294ull}}, {{1129490046038875521ull, 12064343751143162127ull, 7207992779532299851ull, 8614850677717159118ull}}, {{7623460306415379057ull, 5234371835250782377ull, 18340053542489851119ull, 5384281673573224448ull}}, {{14141011401446611725ull, 1931278775636090067ull, 4478322854402762283ull, 6730352091966530561ull}}, {{13064578233380876752ull, 16249156524827276296ull, 10209589586430840757ull, 8412940114958163201ull}}, {{8165361395863047970ull, 12461565837230741637ull, 17910208537587745233ull, 5258087571848852000ull}}, {{14818387763256197867ull, 1741899241256263334ull, 3941016598275129926ull, 6572609464811065001ull}}, {{9299612667215471525ull, 11400746088425104976ull, 9537956766271300311ull, 8215761831013831251ull}}, {{5812257917009669703ull, 14042995332906772466ull, 3655379969705868742ull, 5134851144383644532ull}}, {{16488694433116862937ull, 8330372129278689774ull, 4569224962132335928ull, 6418563930479555665ull}}, {{11387496004541302863ull, 10412965161598362218ull, 10323217221092807814ull, 8023204913099444581ull}}, {{11728871021265702194ull, 1896417207571588482ull, 8757853772396698836ull, 5014503070687152863ull}}, {{5437716739727351934ull, 2370521509464485603ull, 6335631197068485641ull, 6268128838358941079ull}}, {{2185459906231802013ull, 7574837905257994908ull, 3307852977908219147ull, 7835161047948676349ull}}, {{10589284478249652067ull, 2428430681572552865ull, 4373251120406330919ull, 4896975654967922718ull}}, {{17848291616239452987ull, 16870596407247854793ull, 14689935937362689456ull, 6121219568709903397ull}}, {{8475306465017152522ull, 2641501435350266876ull, 4527361866421198109ull, 7651524460887379247ull}}, {{14520438577490496134ull, 3956781406307610749ull, 9747130194154330674ull, 4782202788054612029ull}}, {{4315490166580956456ull, 14169348794739289245ull, 16795598761120301246ull, 5977753485068265036ull}}, {{10006048726653583474ull, 8488313956569335748ull, 2547754377690824942ull, 7472191856335331296ull}}, {{15477152491013265479ull, 693510204428446938ull, 1592346486056765589ull, 4670119910209582060ull}}, {{10123068576911806041ull, 5478573773962946577ull, 1990433107570956986ull, 5837649887761977575ull}}, {{17265521739567145455ull, 16071589254308459029ull, 16323099439745859944ull, 7297062359702471968ull}}, {{7746844119176768107ull, 1642742494176022171ull, 1957130225972773315ull, 9121327949628089961ull}}, {{2535934565271786115ull, 17167615123355871521ull, 12752421437301453081ull, 5700829968517556225ull}}, {{7781604225017120547ull, 7624460848912675689ull, 2105468741344652640ull, 7126037460646945282ull}}, {{14338691299698788588ull, 9530576061140844611ull, 11855207963535591608ull, 8907546825808681602ull}}, {{6655839053098048916ull, 5956610038213027882ull, 12021190995637132659ull, 5567216766130426001ull}}, {{17543170853227336953ull, 2834076529338896948ull, 1191430689264252112ull, 6959020957663032502ull}}, {{3482219492824619575ull, 3542595661673621186ull, 10712660398435090948ull, 8698776197078790627ull}}, {{6788073201442775138ull, 11437494325400789049ull, 4389569739808237890ull, 5436735123174244142ull}}, {{13096777520230856827ull, 5073495869896210503ull, 14710334211615073171ull, 6795918903967805177ull}}, {{11759285881861183129ull, 1730183818942875225ull, 4552859709236677752ull, 8494898629959756472ull}}, {{432024648522157600ull, 1081364886839297016ull, 2845537318272923595ull, 5309311643724847795ull}}, {{540030810652697000ull, 15186764163831284982ull, 17391979703123318205ull, 6636639554656059743ull}}, {{9898410550170647058ull, 5148397149506942515ull, 17128288610476759853ull, 8295799443320074679ull}}, {{3880663584642960459ull, 5523591227655533024ull, 17622709409189056764ull, 5184874652075046674ull}}, {{4850829480803700574ull, 6904489034569416280ull, 12805014724631545147ull, 6481093315093808343ull}}, {{6063536851004625717ull, 4018925274784382446ull, 11394582387362043530ull, 8101366643867260429ull}}, {{17624768587160054785ull, 7123514315167626932ull, 9427457001314971158ull, 5063354152417037768ull}}, {{3584216660240516866ull, 18127764930814309474ull, 11784321251643713947ull, 6329192690521297210ull}}, {{13703642862155421890ull, 18048020145090498938ull, 5507029527699866626ull, 7911490863151621513ull}}, {{13176462807274526585ull, 15891698609108949740ull, 14971108500880886401ull, 4944681789469763445ull}}, {{16470578509093158232ull, 6029565206104023463ull, 4878827570818944290ull, 6180852236837204307ull}}, {{15976537117939059886ull, 16760328544484805137ull, 1486848445096292458ull, 7726065296046505384ull}}, {{3067806671070830573ull, 15086891358730391115ull, 929280278185182786ull, 4828790810029065865ull}}, {{17669816394120701928ull, 9635242161558213085ull, 5773286366158866387ull, 6035988512536332331ull}}, {{8252212437368713697ull, 7432366683520378453ull, 2604921939271195080ull, 7544985640670415414ull}}, {{7463475782569140013ull, 4645229177200236533ull, 15463134267326660637ull, 4715616025419009633ull}}, {{13941030746638812920ull, 10418222489927683570ull, 5493859778876162084ull, 5894520031773762042ull}}, {{8202916396443740342ull, 13022778112409604463ull, 16090696760449978413ull, 7368150039717202552ull}}, {{5641959477127287524ull, 2443414585229841867ull, 1666626876852921401ull, 9210187549646503191ull}}, {{1220381663990860750ull, 13056349161837120927ull, 7959170825674157731ull, 5756367218529064494ull}}, {{15360535135270739650ull, 11708750433869013254ull, 725591495237921356ull, 7195459023161330618ull}}, {{9977296882233648754ull, 14635938042336266568ull, 10130361405902177503ull, 8994323778951663272ull}}, {{6235810551396030472ull, 16064990304101248461ull, 6331475878688860939ull, 5621452361844789545ull}}, {{12406449207672425993ull, 15469551861699172672ull, 12526030866788464078ull, 7026815452305986931ull}}, {{15508061509590532492ull, 10113567790269190032ull, 11045852565058192194ull, 8783519315382483664ull}}, {{9692538443494082807ull, 10932665887345631674ull, 6903657853161370121ull, 5489699572114052290ull}}, {{2892301017512827701ull, 18277518377609427497ull, 17852944353306488459ull, 6862124465142565362ull}}, {{8227062290318422530ull, 18235211953584396467ull, 13092808404778334766ull, 8577655581428206703ull}}, {{2836070922235320130ull, 6785321452562859888ull, 15100534280627541085ull, 5361034738392629189ull}}, {{3545088652794150162ull, 13093337834130962764ull, 5040609795502262644ull, 6701293422990786487ull}}, {{4431360815992687702ull, 16366672292663703455ull, 1689076225950440401ull, 8376616778738483109ull}}, {{9687129537636511670ull, 3311641155273732803ull, 3361515650432719203ull, 5235385486711551943ull}}, {{7497225903618251684ull, 17974609499374329716ull, 18036952618323062715ull, 6544231858389439928ull}}, {{9371532379522814604ull, 17856575855790524241ull, 4099446699194276778ull, 8180289822986799911ull}}, {{17386422783270228888ull, 15772045928296465554ull, 9479683214637504842ull, 5112681139366749944ull}}, {{12509656442233010302ull, 10491685373515806135ull, 11849604018296881053ull, 6390851424208437430ull}}, {{11025384534363874973ull, 17726292735322145573ull, 5588632986016325508ull, 7988564280260546788ull}}, {{9196708343191115810ull, 1855560922721565175ull, 12716267653114979251ull, 4992852675162841742ull}}, {{6884199410561506859ull, 16154509208684120181ull, 6671962529538948255ull, 6241065843953552178ull}}, {{13216935281629271477ull, 15581450492427762322ull, 17563325198778461127ull, 7801332304941940222ull}}, {{12872270569445682578ull, 16655935585408433307ull, 6365392230809150300ull, 4875832690588712639ull}}, {{11478652193379715318ull, 2373175408050990018ull, 3345054270084049972ull, 6094790863235890799ull}}, {{5124943204869868339ull, 2966469260063737523ull, 18016375892887226177ull, 7618488579044863498ull}}, {{897246493829973760ull, 13383258333608305712ull, 15871920951481904264ull, 4761555361903039686ull}}, {{1121558117287467200ull, 16729072917010382140ull, 10616529152497604522ull, 5951944202378799608ull}}, {{1401947646609334000ull, 11687969109408201867ull, 13270661440622005653ull, 7439930252973499510ull}}, {{17017118343626691414ull, 9610823702593820118ull, 3682477381961365629ull, 4649956408108437194ull}}, {{12048025892678588460ull, 16625215646669663052ull, 13826468764306482844ull, 5812445510135546492ull}}, {{15060032365848235574ull, 2334775484627527199ull, 17283085955383103556ull, 7265556887669433115ull}}, {{14213354438882906564ull, 2918469355784408999ull, 16992171425801491541ull, 9081946109586791394ull}}, {{15800875551942898459ull, 4129886356578949576ull, 15231793159553320117ull, 5676216318491744621ull}}, {{1304350366219071457ull, 9774043964151074875ull, 5204683394159486434ull, 7095270398114680777ull}}, {{15465496013056003033ull, 2994182918334067785ull, 11117540261126745947ull, 8869087997643350971ull}}, {{2748405980518920040ull, 18012265388454650030ull, 4642619653990522264ull, 5543179998527094357ull}}, {{12658879512503425858ull, 4068587661858760921ull, 10414960585915540735ull, 6928974998158867946ull}}, {{1988541335347118610ull, 474048558896063248ull, 3795328695539650111ull, 8661218747698584933ull}}, {{1242838334591949132ull, 7213809376951121386ull, 4677923443925975271ull, 5413261717311615583ull}}, {{10776919955094712222ull, 4405575702761513828ull, 1235718286480081185ull, 6766577146639519479ull}}, {{13471149943868390278ull, 10118655646879280189ull, 15379705913382265193ull, 8458221433299399348ull}}, {{10725311724131437876ull, 17853374825368019878ull, 388944159009139937ull, 5286388395812124593ull}}, {{4183267618309521537ull, 8481660476427861136ull, 5097866217188812826ull, 6607985494765155741ull}}, {{5229084522886901921ull, 1378703558680050612ull, 10984018789913403937ull, 8259981868456444676ull}}, {{12491549863659089509ull, 12390904770243501392ull, 16088383780550653268ull, 5162488667785277922ull}}, {{15614437329573861886ull, 15488630962804376740ull, 10887107688833540777ull, 6453110834731597403ull}}, {{1071302588257775741ull, 5525730648223307214ull, 8997198592614538068ull, 8066388543414496754ull}}, {{14504622172943273550ull, 12676953691994342816ull, 10234935138811474196ull, 5041492839634060471ull}}, {{18130777716179091938ull, 15846192114992928520ull, 8181982905086954841ull, 6301866049542575589ull}}, {{4216728071514313306ull, 5972682088458996939ull, 14839164649786081456ull, 7877332561928219486ull}}, {{329612035482751864ull, 3732926305286873087ull, 4662791887688913006ull, 4923332851205137179ull}}, {{14247073099635603542ull, 13889529918463367166ull, 1216803841183753353ull, 6154166064006421474ull}}, {{8585469337689728620ull, 3526854342797045246ull, 10744376838334467500ull, 7692707580008026842ull}}, {{754232317628692484ull, 11427656001102929087ull, 11326921542386430091ull, 4807942237505016776ull}}, {{14777848452318029316ull, 9672883982951273454ull, 14158651927983037614ull, 6009927796881270970ull}}, {{9248938528542760837ull, 2867732941834316010ull, 8474942873124021210ull, 7512409746101588713ull}}, {{10392272598766613428ull, 6404019107073835410ull, 16826054341770983016ull, 4695256091313492945ull}}, {{3766968711603490976ull, 8005023883842294263ull, 7197509871931565058ull, 5869070114141866182ull}}, {{97024871076975816ull, 782907817948092021ull, 18220259376769232131ull, 7336337642677332727ull}}, {{4732967107273607674ull, 14813692827717278738ull, 18163638202534152259ull, 9170422053346665909ull}}, {{7569790460473392701ull, 6952715008109605259ull, 13658116885797539114ull, 5731513783341666193ull}}, {{4850552057164352972ull, 17914265796991782382ull, 3237588051964760180ull, 7164392229177082742ull}}, {{15286562108310217022ull, 3946088172530176361ull, 13270357101810726034ull, 8955490286471353427ull}}, {{2636572290052803783ull, 7077991126258748130ull, 5988130179418009819ull, 5597181429044595892ull}}, {{12519087399420780537ull, 4235802889396047258ull, 7485162724272512274ull, 6996476786305744865ull}}, {{6425487212421199863ull, 14518125648599834881ull, 13968139423768028246ull, 8745595982882181081ull}}, {{15545144553831719674ull, 4462142511947508896ull, 1812558112213935798ull, 5465997489301363176ull}}, {{984686618580097977ull, 14801050176789161929ull, 2265697640267419747ull, 6832496861626703970ull}}, {{5842544291652510375ull, 13889626702559064507ull, 12055494087189050492ull, 8540621077033379962ull}}, {{1345747173069125033ull, 17904388725954191125ull, 12146369822920544461ull, 5337888173145862476ull}}, {{6293869984763794195ull, 8545427852160575194ull, 15182962278650680577ull, 6672360216432328095ull}}, {{17090709517809518551ull, 15293470833628106896ull, 14367016829885962817ull, 8340450270540410119ull}}, {{10681693448630949095ull, 2640890243376484954ull, 15896914546319808617ull, 5212781419087756324ull}}, {{4128744773933910560ull, 7912798822647994097ull, 1424399109190209155ull, 6515976773859695406ull}}, {{9772616985844776104ull, 5279312509882604717ull, 11003870923342537252ull, 8144970967324619257ull}}, {{8413728625366679017ull, 12522942355531403756ull, 18406634373157555542ull, 5090606854577887035ull}}, {{10517160781708348771ull, 6430305907559478887ull, 18396606948019556524ull, 6363258568222358794ull}}, {{8534764958708048060ull, 8037882384449348609ull, 13772386648169669847ull, 7954073210277948493ull}}, {{16863443145260999798ull, 11941205517921924736ull, 10913584664319737606ull, 4971295756423717808ull}}, {{2632559857866698131ull, 5703134860547630113ull, 13641980830399672008ull, 6214119695529647260ull}}, {{7902385840760760568ull, 7128918575684537641ull, 17052476037999590010ull, 7767649619412059075ull}}, {{16468206196543945115ull, 9067260128230223929ull, 8351954514536049804ull, 4854781012132536922ull}}, {{6750199690397767682ull, 11334075160287779912ull, 1216571106315286447ull, 6068476265165671153ull}}, {{8437749612997209602ull, 9555907931932336986ull, 6132399901321495963ull, 7585595331457088941ull}}, {{9885279526550643905ull, 3666599448244016664ull, 6138592947539628929ull, 4740997082160680588ull}}, {{12356599408188304882ull, 9194935328732408734ull, 7673241184424536161ull, 5926246352700850735ull}}, {{6222377223380605294ull, 16105355179342898822ull, 4979865462103282297ull, 7407807940876063419ull}}, {{17724043819895042021ull, 3148317959448229907ull, 806572904600857484ull, 4629879963047539637ull}}, {{17543368756441414622ull, 3935397449310287384ull, 5619902149178459759ull, 5787349953809424546ull}}, {{3482466871842216661ull, 307560793210471327ull, 16248249723327850507ull, 7234187442261780682ull}}, {{18188141645084934539ull, 14219509046795252870ull, 11086940117305037325ull, 9042734302827225853ull}}, {{6755902509750696183ull, 11193036163460726996ull, 9235180582529342280ull, 5651708939267016158ull}}, {{8444878137188370228ull, 13991295204325908745ull, 2320603691306902042ull, 7064636174083770198ull}}, {{15167783689912850689ull, 8265746968552610123ull, 12124126650988403361ull, 8830795217604712747ull}}, {{7174021796981837729ull, 16695306901413851087ull, 5271736147654058148ull, 5519247011002945467ull}}, {{4355841227799909257ull, 2422389553057762243ull, 1977984166140184782ull, 6899058763753681834ull}}, {{833115516322498667ull, 12251358978176978612ull, 11695852244530006785ull, 8623823454692102292ull}}, {{9744069234556337475ull, 739570333719529776ull, 16533279689686030049ull, 5389889659182563932ull}}, {{12180086543195421844ull, 5536148935576800124ull, 2219855538397985945ull, 6737362073978204916ull}}, {{15225108178994277305ull, 11531872187898388059ull, 2774819422997482431ull, 8421702592472756145ull}}, {{7209849602657729364ull, 14124949145077574393ull, 13263477185441896279ull, 5263564120295472590ull}}, {{13623998021749549609ull, 13044500412919580087ull, 7355974444947594541ull, 6579455150369340738ull}}, {{12418311508759549107ull, 2470567460867311397ull, 18418340093039268985ull, 8224318937961675922ull}}, {{10067287702188412144ull, 13073319709110539383ull, 16123148576576931019ull, 5140199336226047451ull}}, {{7972423609308127276ull, 11729963617960786325ull, 15542249702293775870ull, 6425249170282559314ull}}, {{14577215530062546998ull, 5439082485596207098ull, 10204440091012444030ull, 8031561462853199143ull}}, {{13722445724716479778ull, 17234484608779793148ull, 13295304084523859374ull, 5019725914283249464ull}}, {{17153057155895599723ull, 12319733724119965627ull, 16619130105654824218ull, 6274657392854061830ull}}, {{16829635426442111749ull, 6176295118295181226ull, 11550540595213754465ull, 7843321741067577288ull}}, {{15130208159953707747ull, 15389399495002958026ull, 7219087872008596540ull, 4902076088167235805ull}}, {{9689388163087358876ull, 790005295044145917ull, 13635545858438133580ull, 6127595110209044756ull}}, {{16723421222286586499ull, 987506618805182396ull, 17044432323047666975ull, 7659493887761305945ull}}, {{1228766227074340754ull, 7534720664394320854ull, 3735241174263710003ull, 4787183679850816216ull}}, {{10759329820697701750ull, 4806714812065513163ull, 4669051467829637504ull, 5983979599813520270ull}}, {{8837476257444739284ull, 6008393515081891454ull, 15059686371641822688ull, 7479974499766900337ull}}, {{911736642475574149ull, 3755245946926182159ull, 2494774954635057324ull, 4674984062354312711ull}}, {{14974728858376631398ull, 4694057433657727698ull, 16953526748575985367ull, 5843730077942890888ull}}, {{9495039036116013439ull, 1255885773644771719ull, 2745164362010430093ull, 7304662597428613611ull}}, {{7257112776717628895ull, 6181543235483352553ull, 17266513507795201328ull, 9130828246785767013ull}}, {{16064910531516987819ull, 3863464522177095345ull, 13097413951585694782ull, 5706767654241104383ull}}, {{6246080109114071062ull, 14052702689576144990ull, 11760081421054730573ull, 7133459567801380479ull}}, {{17030972173247364635ull, 3730820306688017525ull, 10088415757891025313ull, 8916824459751725599ull}}, {{12950200617493296849ull, 13860977737748480713ull, 13222788876322972676ull, 5573015287344828499ull}}, {{2352692716584457350ull, 17326222172185600892ull, 11916800076976327941ull, 6966269109181035624ull}}, {{2940865895730571687ull, 7822719659949837403ull, 14896000096220409927ull, 8707836386476294530ull}}, {{17978942249327464968ull, 11806728815109730232ull, 13921686078565144108ull, 5442397741547684081ull}}, {{4026933737949779594ull, 14758411018887162791ull, 3567049542924266423ull, 6802997176934605102ull}}, {{421981154009836589ull, 13836327755181565585ull, 13682183965510108837ull, 8503746471168256377ull}}, {{11792953267324617628ull, 10953547856202172442ull, 1633835950802736167ull, 5314841544480160236ull}}, {{5517819547300996227ull, 9080248801825327649ull, 2042294938503420209ull, 6643551930600200295ull}}, {{11508960452553633188ull, 15961997020709047465ull, 16387926728411438973ull, 8304439913250250368ull}}, {{275571255204938887ull, 12282091147156848618ull, 10242454205257149358ull, 5190274945781406480ull}}, {{9567836105860949416ull, 6129241897091284964ull, 12803067756571436698ull, 6487843682226758100ull}}, {{11959795132326186770ull, 16884924408218882013ull, 16003834695714295872ull, 8109804602783447625ull}}, {{9780714966917560683ull, 10553077755136801258ull, 3084867657180353064ull, 5068627876739654766ull}}, {{3002521671792175046ull, 13191347193921001573ull, 13079456608330217138ull, 6335784845924568457ull}}, {{8364838108167606712ull, 7265811955546476158ull, 2514262705130607711ull, 7919731057405710572ull}}, {{616337799177366291ull, 11458661499857629455ull, 10794786227561405627ull, 4949831910878569107ull}}, {{14605480304253871576ull, 9711640856394648914ull, 8881796766024369130ull, 6187289888598211384ull}}, {{9033478343462563661ull, 2916179033638535335ull, 11102245957530461413ull, 7734112360747764230ull}}, {{12563452992305184145ull, 4128454905237778536ull, 2327217705029150479ull, 4833820225467352644ull}}, {{15704316240381480181ull, 548882613119835266ull, 2909022131286438099ull, 6042275281834190805ull}}, {{10407023263622074418ull, 14521161321681957795ull, 8247963682535435527ull, 7552844102292738506ull}}, {{4198546530550102559ull, 15993254853692305478ull, 9766663320012035108ull, 4720527563932961566ull}}, {{14471555200042404007ull, 1544824493405830231ull, 2984957113160268078ull, 5900659454916201958ull}}, {{13477757981625617104ull, 11154402653612063597ull, 12954568428305110905ull, 7375824318645252447ull}}, {{3012139421749857668ull, 107945261732915785ull, 11581524516954000728ull, 9219780398306565559ull}}, {{13411802184662130803ull, 67465788583072365ull, 14155981850737332311ull, 5762362748941603474ull}}, {{2929694675545499791ull, 13919390291011004169ull, 8471605276566889580ull, 7202953436177004343ull}}, {{8273804362859262643ull, 17399237863763755211ull, 5977820577281224071ull, 9003691795221255429ull}}, {{2865284717573345200ull, 17792052692493428863ull, 6041980870014458996ull, 5627307372013284643ull}}, {{17416663952248845212ull, 3793321791907234462ull, 2940790069090685842ull, 7034134215016605804ull}}, {{12547457903456280707ull, 13965024276738818886ull, 3675987586363357302ull, 8792667768770757255ull}}, {{3230475171232787538ull, 4116454154534373900ull, 9215021269118180170ull, 5495417355481723284ull}}, {{4038093964040984422ull, 14368939730022743183ull, 11518776586397725212ull, 6869271694352154105ull}}, {{435931436623842624ull, 17961174662528428979ull, 563412677714992803ull, 8586589617940192632ull}}, {{16413358212385759304ull, 8919891154866574159ull, 352132923571870502ull, 5366618511212620395ull}}, {{15905011747054811226ull, 1926491906728441891ull, 14275224209747001840ull, 6708273139015775493ull}}, {{15269578665391126128ull, 2408114883410552364ull, 4008972206901588588ull, 8385341423769719367ull}}, {{320114629014678022ull, 10728443838986371036ull, 9423136656954574723ull, 5240838389856074604ull}}, {{400143286268347528ull, 8798868780305575891ull, 11778920821193218404ull, 6551047987320093255ull}}, {{14335237163117598122ull, 10998585975381969863ull, 10111965008064135101ull, 8188809984150116569ull}}, {{15877052254589580682ull, 9179959243827425116ull, 17849193176108554198ull, 5118006240093822855ull}}, {{1399571244527424237ull, 2251577017929505588ull, 17699805451708304844ull, 6397507800117278569ull}}, {{1749464055659280296ull, 2814471272411881985ull, 8289698759353217343ull, 7996884750146598212ull}}, {{12622630080855519945ull, 8676573572898508096ull, 14404433761450536647ull, 4998052968841623882ull}}, {{15778287601069399931ull, 6234030947695747216ull, 8782170164958395001ull, 6247566211052029853ull}}, {{1276115427627198298ull, 12404224703047071925ull, 15589398724625381655ull, 7809457763815037316ull}}, {{3103415151480692888ull, 14670169467045501809ull, 520002166036087726ull, 4880911102384398323ull}}, {{8490954957778254014ull, 9114339796952101453ull, 14485060762827273370ull, 6101138877980497903ull}}, {{15225379715650205422ull, 2169552709335351008ull, 13494639935106703809ull, 7626423597475622379ull}}, {{9515862322281378389ull, 12885185489403064140ull, 6128306950227995928ull, 4766514748422263987ull}}, {{11894827902851722986ull, 16106481861753830175ull, 3048697669357607006ull, 5958143435527829984ull}}, {{10256848860137265828ull, 10909730290337511911ull, 3810872086697008758ull, 7447679294409787480ull}}, {{13328059565226872999ull, 2206895413033557040ull, 2381795054185630474ull, 4654799559006117175ull}}, {{16660074456533591248ull, 11981991303146722108ull, 16812301873014201804ull, 5818499448757646468ull}}, {{2378348996957437444ull, 14977489128933402636ull, 2568633267558200639ull, 7273124310947058086ull}}, {{2972936246196796805ull, 14110175392739365391ull, 12434163621302526607ull, 9091405388683822607ull}}, {{8775614181514079860ull, 15736388648103185225ull, 14688881290955160985ull, 5682128367927389129ull}}, {{15581203745319987728ull, 5835427754846817819ull, 4526043558411787520ull, 7102660459909236412ull}}, {{14864818663222596756ull, 7294284693558522274ull, 5657554448014734400ull, 8878325574886545515ull}}, {{13902197682941510877ull, 4558927933474076421ull, 1230128520795515048ull, 5548953484304090947ull}}, {{3542689048394724884ull, 5698659916842595527ull, 15372718706276557522ull, 6936191855380113683ull}}, {{18263419365775569817ull, 16346696932908020216ull, 14604212364418308998ull, 8670239819225142104ull}}, {{11414637103609731136ull, 5604999564640124731ull, 9127632727761443124ull, 5418899887015713815ull}}, {{9656610361084776016ull, 7006249455800155914ull, 6797854891274416001ull, 6773624858769642269ull}}, {{2847390914501194211ull, 13369497838177582797ull, 13109004632520407905ull, 8467031073462052836ull}}, {{4085462330776940334ull, 1438407121219907392ull, 17416499932180030749ull, 5291894420913783022ull}}, {{5106827913471175418ull, 6409694919952272144ull, 12547252878370262628ull, 6614868026142228778ull}}, {{6383534891838969272ull, 8012118649940340180ull, 6460694061108052477ull, 8268585032677785973ull}}, {{13213081344254131603ull, 7313417165426406564ull, 6343776797406226750ull, 5167865645423616233ull}}, {{16516351680317664504ull, 18365143493637784013ull, 12541407015185171341ull, 6459832056779520291ull}}, {{6810381545114916918ull, 9121371311765066305ull, 11065072750554076273ull, 8074790070974400364ull}}, {{15785703511765292834ull, 17230072115921636200ull, 16139042505951073478ull, 5046743794359000227ull}}, {{1285385315997064426ull, 12314218108047269443ull, 15562117114011453944ull, 6308429742948750284ull}}, {{15441789700278494244ull, 15392772635059086803ull, 1005902318804765814ull, 7885537178685937856ull}}, {{7345275553460364951ull, 5008796878484541348ull, 628688949252978634ull, 4928460736678711160ull}}, {{9181594441825456189ull, 15484368134960452493ull, 785861186566223292ull, 6160575920848388950ull}}, {{16088679070709208140ull, 908716094991014000ull, 10205698520062554924ull, 7700719901060486187ull}}, {{10055424419193255087ull, 9791319596224159558ull, 4072718565825402875ull, 4812949938162803867ull}}, {{3345908487136793051ull, 7627463476852811544ull, 479212188854365690ull, 6016187422703504834ull}}, {{4182385608920991314ull, 310957309211238622ull, 9822387272922732921ull, 7520234278379381042ull}}, {{16449049060857783283ull, 11723563364325493898ull, 10750678064004095979ull, 4700146423987113151ull}}, {{11337939289217453296ull, 10042768186979479469ull, 8826661561577732070ull, 5875183029983891439ull}}, {{337366056239652908ull, 3330088196869573529ull, 6421640933544777184ull, 7343978787479864299ull}}, {{5033393588726954039ull, 4162610246086966911ull, 3415365148503583576ull, 9179973484349830374ull}}, {{10063400020595428130ull, 2601631403804354319ull, 15969661273096903447ull, 5737483427718643983ull}}, {{7967564007316897259ull, 17087097310037606611ull, 15350390572943741404ull, 7171854284648304979ull}}, {{5347768990718733670ull, 2912127563837456648ull, 14576302197752288852ull, 8964817855810381224ull}}, {{3342355619199208544ull, 11043451764253186213ull, 9110188873595180532ull, 5603011159881488265ull}}, {{8789630542426398583ull, 13804314705316482766ull, 15999422110421363569ull, 7003763949851860331ull}}, {{1763666141178222421ull, 3420335326363439746ull, 15387591619599316558ull, 8754704937314825414ull}}, {{5713977356663776917ull, 15972767634259313553ull, 5005558743822184944ull, 5471690585821765884ull}}, {{11754157714257109051ull, 1519215469114590325ull, 6256948429777731181ull, 6839613232277207355ull}}, {{857639087539222601ull, 6510705354820625811ull, 3209499518794776072ull, 8549516540346509194ull}}, {{16676925494207871790ull, 4069190846762891131ull, 6617623217674122949ull, 5343447837716568246ull}}, {{16234470849332451833ull, 9698174576881001818ull, 17495401058947429494ull, 6679309797145710307ull}}, {{11069716524810788983ull, 2899346184246476465ull, 17257565305256898964ull, 8349137246432137884ull}}, {{1043800365661259ull, 11035463402008823599ull, 1562606278930786044ull, 5218210779020086178ull}}, {{13836362805739240285ull, 13794329252511029498ull, 11176629885518258363ull, 6522763473775107722ull}}, {{8072081470319274549ull, 12631225547211398969ull, 4747415320043047146ull, 8153454342218884653ull}}, {{16574265965018016353ull, 12506201985434512259ull, 5272977584240598418ull, 5095908963886802908ull}}, {{16106146437845132537ull, 6409380444938364516ull, 6591221980300748023ull, 6369886204858503635ull}}, {{1685938973596864055ull, 3400039537745567742ull, 3627341456948547125ull, 7962357756073129544ull}}, {{14888769913780203747ull, 4430867720304673790ull, 2267088410592841953ull, 4976473597545705965ull}}, {{9387590355370478875ull, 10150270668808230142ull, 7445546531668440345ull, 6220591996932132456ull}}, {{2511115907358322786ull, 17299524354437675582ull, 9306933164585550431ull, 7775739996165165570ull}}, {{15404505497381115454ull, 17729731749164629094ull, 10428519246293356923ull, 4859837497603228481ull}}, {{10032259834871618509ull, 17550478668028398464ull, 17647335076294084058ull, 6074796872004035601ull}}, {{12540324793589523136ull, 12714726298180722272ull, 8224110790085441361ull, 7593496090005044502ull}}, {{7837702995993451960ull, 1029174908721869564ull, 528383225376012947ull, 4745935056253152814ull}}, {{9797128744991814950ull, 15121526691184500667ull, 9883851068574791991ull, 5932418820316441017ull}}, {{7634724912812380783ull, 14290222345553237930ull, 16966499854145877893ull, 7415523525395551271ull}}, {{9383389088935125894ull, 11237231975184467658ull, 17521591436482255539ull, 4634702203372219544ull}}, {{2505864324314131559ull, 9434853950553196669ull, 3455245221893267808ull, 5793377754215274431ull}}, {{7744016423820052353ull, 11793567438191495836ull, 18154114582648748472ull, 7241722192769093038ull}}, {{9680020529775065441ull, 14741959297739369795ull, 13469271191456159782ull, 9052152740961366298ull}}, {{3744169821895721949ull, 4602038542659718218ull, 13029980513087487768ull, 5657595463100853936ull}}, {{13903584314224428244ull, 5752548178324647772ull, 16287475641359359710ull, 7071994328876067420ull}}, {{17379480392780535305ull, 16414057259760585523ull, 1912600477989648021ull, 8839992911095084276ull}}, {{8556332236274140614ull, 12564628796564059904ull, 10418747335598305821ull, 5524995569434427672ull}}, {{10695415295342675767ull, 1870727940422911168ull, 13023434169497882277ull, 6906244461793034590ull}}, {{13369269119178344708ull, 6950095943956026864ull, 7055920675017577038ull, 8632805577241293238ull}}, {{8355793199486465443ull, 18178868020254680502ull, 18245008477168149360ull, 5395503485775808273ull}}, {{1221369462503305996ull, 4276840951608799012ull, 8971202541178022989ull, 6744379357219760342ull}}, {{1526711828129132494ull, 9957737207938386669ull, 1990631139617752928ull, 8430474196524700428ull}}, {{3260037901794401761ull, 6223585754961491668ull, 10467516499115871388ull, 5269046372827937767ull}}, {{4075047377243002201ull, 7779482193701864585ull, 8472709605467451331ull, 6586307966034922209ull}}, {{9705495239981140656ull, 5112666723699942827ull, 15202573025261702068ull, 8232884957543652761ull}}, {{3760091515774518958ull, 12418788739167240075ull, 2584079113147481936ull, 5145553098464782976ull}}, {{88428376290760793ull, 15523485923959050094ull, 3230098891434352420ull, 6431941373080978720ull}}, {{9333907507218226799ull, 957613331239261001ull, 4037623614292940526ull, 8039926716351223400ull}}, {{17362907238079861510ull, 14433566387306701837ull, 2523514758933087828ull, 5024954197719514625ull}}, {{7868575992317663175ull, 18041957984133377297ull, 7766079467093747689ull, 6281192747149393281ull}}, {{14447406008824466873ull, 8717389424884557909ull, 14319285352294572516ull, 7851490933936741601ull}}, {{11335471764728985748ull, 14671740427407624501ull, 2032024317543025966ull, 4907181833710463501ull}}, {{334281650629068472ull, 9116303497404754819ull, 7151716415356170362ull, 6133977292138079376ull}}, {{14252910118568499302ull, 2172007334901167715ull, 8939645519195212953ull, 7667471615172599220ull}}, {{6602225814891618112ull, 12886719630381699582ull, 14810650486351783903ull, 4792169759482874512ull}}, {{17476154305469298448ull, 11496713519549736573ull, 66569034230178263ull, 5990212199353593141ull}}, {{8010134826554459348ull, 9759205881009782813ull, 4694897311215110733ull, 7487765249191991426ull}}, {{7312177275810231045ull, 8405346684844808210ull, 7545996837936832112ull, 4679853280744994641ull}}, {{18363593631617564614ull, 10506683356056010262ull, 14044182065848428044ull, 5849816600931243301ull}}, {{13731120002667179959ull, 13133354195070012828ull, 3720169527028371343ull, 7312270751164054127ull}}, {{17163900003333974949ull, 11805006725410128131ull, 38525890358076275ull, 9140338438955067659ull}}, {{8421594492870040391ull, 5072286194167636130ull, 16164979745969655336ull, 5712711524346917286ull}}, {{1303621079232774681ull, 6340357742709545163ull, 10982852645607293362ull, 7140889405433646608ull}}, {{15464584404323132063ull, 17148819215241707261ull, 13728565807009116702ull, 8926111756792058260ull}}, {{11971208261915651492ull, 6106325991098679134ull, 17803725666235473747ull, 5578819847995036412ull}}, {{5740638290539788556ull, 3021221470445961014ull, 3807913009084790568ull, 6973524809993795516ull}}, {{16399169900029511503ull, 3776526838057451267ull, 4759891261355988210ull, 8716906012492244395ull}}, {{7943638178304750738ull, 6972015292213294946ull, 669089029133798679ull, 5448066257807652747ull}}, {{706175686026162614ull, 4103333096839230779ull, 14671419341699412061ull, 6810082822259565933ull}}, {{14717777662814866979ull, 9740852389476426377ull, 4504216121842101364ull, 8512603527824457417ull}}, {{2281082011618210006ull, 15311404780277542294ull, 14344350122219783112ull, 5320377204890285885ull}}, {{12074724551377538316ull, 692511901637376251ull, 4095379597492565179ull, 6650471506112857357ull}}, {{10481719670794534991ull, 14700697932328884026ull, 9730910515293094377ull, 8313089382641071696ull}}, {{11162760812673972273ull, 2270407180064470660ull, 6081819072058183986ull, 5195680864150669810ull}}, {{13953451015842465341ull, 12061381011935364133ull, 16825645876927505790ull, 6494601080188337262ull}}, {{3606755714520917965ull, 5853354228064429359ull, 11808685309304606430ull, 8118251350235421578ull}}, {{9171751349216655584ull, 17493404447822432061ull, 11992114336742766922ull, 5073907093897138486ull}}, {{16076375204948207384ull, 12643383522923264268ull, 5766770884073682845ull, 6342383867371423108ull}}, {{1648724932475707614ull, 1969171348371916624ull, 7208463605092103557ull, 7927979834214278885ull}}, {{1030453082797317259ull, 3536575101946141842ull, 6811132762396258675ull, 4954987396383924303ull}}, {{10511438390351422382ull, 18255776932714841014ull, 3902229934567935439ull, 6193734245479905379ull}}, {{3915925951084502169ull, 18208035147466163364ull, 266101399782531395ull, 7742167806849881724ull}}, {{11670825756282589664ull, 9074178957952658150ull, 9389685411718857930ull, 4838854879281176077ull}}, {{5365160158498461271ull, 2119351660586046880ull, 16348792783075960317ull, 6048568599101470096ull}}, {{6706450198123076589ull, 7260875594159946504ull, 1989246905135398780ull, 7560710748876837621ull}}, {{4191531373826922868ull, 13761419283204742373ull, 3549122324923318189ull, 4725444218048023513ull}}, {{9851100235711041489ull, 3366716048723764254ull, 9048088924581535641ull, 5906805272560029391ull}}, {{3090503257784026054ull, 8820081079332093222ull, 6698425137299531647ull, 7383506590700036739ull}}, {{15766622591397179996ull, 12430079702223640119ull, 1880672701598513327ull, 4614691619187522962ull}}, {{15096592220819087091ull, 10925913609352162245ull, 11574212913852917467ull, 5768364523984403702ull}}, {{5035682220741695151ull, 9045705993262814903ull, 5244394105461371026ull, 7210455654980504628ull}}, {{1682916757499731035ull, 2083760454723742821ull, 6555492631826713783ull, 9013069568725630785ull}}, {{3357665982651025849ull, 8219879311843421119ull, 15626397940960165874ull, 5633168480453519240ull}}, {{18032140533595946023ull, 1051477102949500590ull, 1086253352490655727ull, 7041460600566899051ull}}, {{13316803630140156721ull, 15149404433969039450ull, 15192874745895483370ull, 8801825750708623813ull}}, {{12934688287264985855ull, 14080063789658037560ull, 11801389725398371058ull, 5501141094192889883ull}}, {{16168360359081232318ull, 8376707700217771142ull, 10140051138320575919ull, 6876426367741112354ull}}, {{10987078411996764589ull, 5859198606844826024ull, 3451691886045944091ull, 8595532959676390443ull}}, {{6866924007497977869ull, 1356156120064322313ull, 18298208493274572721ull, 5372208099797744026ull}}, {{13195341027799860240ull, 6306881168507790795ull, 13649388579738440093ull, 6715260124747180033ull}}, {{11882490266322437395ull, 12495287479062126398ull, 3226677669390886404ull, 8394075155933975042ull}}, {{2814870398024135468ull, 17032926711268604807ull, 6628359561796691906ull, 5246296972458734401ull}}, {{17353646052812333047ull, 12067786352230980200ull, 12897135470673252787ull, 6557871215573418001ull}}, {{3245313492305864693ull, 10473046921861337347ull, 2286361283059402272ull, 8197339019466772502ull}}, {{18169221997187023097ull, 6545654326163335841ull, 15264033857194290132ull, 5123336887166732813ull}}, {{8876469441201615159ull, 8182067907704169802ull, 5244984266210698953ull, 6404171108958416017ull}}, {{1872214764647243141ull, 14839270903057600157ull, 11167916351190761595ull, 8005213886198020021ull}}, {{3475977237118220915ull, 6968701305197306146ull, 9285790728707919949ull, 5003258678873762513ull}}, {{13568343583252551952ull, 13322562649924020586ull, 16218924429312287840ull, 6254073348592203141ull}}, {{7737057442210914132ull, 16653203312405025733ull, 6438597481358196088ull, 7817591685740253927ull}}, {{7141503910595515285ull, 10408252070253141083ull, 10941652453489954411ull, 4885994803587658704ull}}, {{4315193869817006202ull, 8398629069389038450ull, 13677065566862443014ull, 6107493504484573380ull}}, {{14617364374126033560ull, 1274914299881522254ull, 17096331958578053768ull, 7634366880605716725ull}}, {{4524166715401383071ull, 796821437425951409ull, 12991050483324977557ull, 4771479300378572953ull}}, {{10266894412679116743ull, 5607712815209827165ull, 2403755048874058234ull, 5964349125473216192ull}}, {{17445304034276283833ull, 16233013055867059764ull, 3004693811092572792ull, 7455436406841520240ull}}, {{1679942984567901588ull, 10145633159916912353ull, 1877933631932857995ull, 4659647754275950150ull}}, {{6711614749137264888ull, 8070355431468752537ull, 11570789076770848302ull, 5824559692844937687ull}}, {{13001204454848969014ull, 864572252481164863ull, 9851800327536172474ull, 7280699616056172109ull}}, {{11639819550133823364ull, 10304087352456231887ull, 16926436427847603496ull, 9100874520070215136ull}}, {{14192416246474721458ull, 6440054595285144929ull, 10579022767404752185ull, 5688046575043884460ull}}, {{3905462252811238111ull, 12661754262533819066ull, 13223778459255940231ull, 7110058218804855575ull}}, {{14105199852868823447ull, 11215506809739885928ull, 11918037055642537385ull, 8887572773506069469ull}}, {{8815749908043014654ull, 92162728446346849ull, 9754616168990279818ull, 5554732983441293418ull}}, {{15631373403481156222ull, 9338575447412709369ull, 2969898174383073964ull, 6943416229301616773ull}}, {{5704158699069281565ull, 11673219309265886712ull, 8324058736406230359ull, 8679270286627020966ull}}, {{3565099186918300978ull, 14213291095932261051ull, 590850691826506070ull, 5424543929141888104ull}}, {{18291432038930039935ull, 8543241833060550505ull, 738563364783132588ull, 6780679911427360130ull}}, {{9029231993380386206ull, 10679052291325688132ull, 10146576242833691543ull, 8475849889284200162ull}}, {{14866642032717517187ull, 13591936709719636938ull, 10953296170198445118ull, 5297406180802625101ull}}, {{9359930504042120676ull, 7766548850294770365ull, 18303306231175444302ull, 6621757726003281376ull}}, {{16311599148480038749ull, 484814026013687148ull, 4432388715259753762ull, 8277197157504101721ull}}, {{971377430945248410ull, 4914694784685942372ull, 14299457993105815861ull, 5173248223440063575ull}}, {{1214221788681560513ull, 10755054499284815869ull, 13262636472954881922ull, 6466560279300079469ull}}, {{6129463254279338545ull, 4220446087251244028ull, 2743237535911438691ull, 8083200349125099337ull}}, {{13054286570779362399ull, 331935795318333565ull, 13243738506013118942ull, 5052000218203187085ull}}, {{2482800158192039286ull, 9638291781002692765ull, 2719615077234234965ull, 6315000272753983857ull}}, {{7715186216167437011ull, 16659550744680753860ull, 8011204864970181610ull, 7893750340942479821ull}}, {{14045363421959423940ull, 15023905233852859066ull, 7312846049820057458ull, 4933593963089049888ull}}, {{8333332240594504117ull, 9556509505461298025ull, 9141057562275071823ull, 6166992453861312360ull}}, {{15028351319170518051ull, 7333950863399234627ull, 11426321952843839779ull, 7708740567326640450ull}}, {{7086876565267879830ull, 2277876280410827690ull, 11753137238954787766ull, 4817962854579150281ull}}, {{18081967743439625595ull, 12070717387368310420ull, 856363493411320995ull, 6022453568223937852ull}}, {{4155715605589980378ull, 10476710715783000122ull, 1070454366764151244ull, 7528066960279922315ull}}, {{7209008271921125640ull, 15771316234219150884ull, 16809935043723452191ull, 4705041850174951446ull}}, {{9011260339901407050ull, 15102459274346550701ull, 11789046767799539431ull, 5881302312718689308ull}}, {{15875761443304146717ull, 14266388074505800472ull, 14736308459749424289ull, 7351627890898361635ull}}, {{1397957730420631780ull, 3997927037850086879ull, 13808699556259392458ull, 9189534863622952044ull}}, {{7791252609153976718ull, 7110390417083692203ull, 17853809259516896094ull, 5743459289764345027ull}}, {{5127379743015082994ull, 18111360058209391062ull, 17705575555968732213ull, 7179324112205431284ull}}, {{15632596715623629550ull, 8804142017479575115ull, 3685225371251363651ull, 8974155140256789106ull}}, {{7464529938051074517ull, 3196745751711040495ull, 6914951875459490186ull, 5608846962660493191ull}}, {{4718976404136455242ull, 13219304226493576427ull, 4032003825896974828ull, 7011058703325616489ull}}, {{1287034486743181149ull, 16524130283116970534ull, 9651690800798606439ull, 8763823379157020611ull}}, {{14639454609496651930ull, 17245110454589188439ull, 3726463741285435072ull, 5477389611973137882ull}}, {{13687632243443427009ull, 3109643994526933933ull, 13881451713461569649ull, 6846737014966422352ull}}, {{3274482249022120049ull, 8498741011586055321ull, 17351814641826962061ull, 8558421268708027940ull}}, {{13575766451707294791ull, 7617556141454978527ull, 1621512114287075480ull, 5349013292942517463ull}}, {{12358022046206730584ull, 9521945176818723159ull, 15861948198141008062ull, 6686266616178146828ull}}, {{10835841539331025326ull, 2679059434168628141ull, 1380691173966708462ull, 8357833270222683536ull}}, {{9078243971295584781ull, 15509470201637556300ull, 862931983729192788ull, 5223645793889177210ull}}, {{11347804964119480976ull, 940093678337393759ull, 10302037016516266794ull, 6529557242361471512ull}}, {{9573070186721963316ull, 10398489134776518007ull, 12877546270645333492ull, 8161946552951839390ull}}, {{12900697894342308929ull, 15722427746090099562ull, 3436780400725945528ull, 5101216595594899619ull}}, {{6902500331073110353ull, 1206290608903072837ull, 18131033556189595623ull, 6376520744493624523ull}}, {{13239811432268775845ull, 15342921316411004758ull, 18052105926809606624ull, 7970650930617030654ull}}, {{3663196126740596999ull, 9589325822756877974ull, 6670880185828616236ull, 4981656831635644159ull}}, {{13802367195280522057ull, 11986657278446097467ull, 3726914213858382391ull, 6227071039544555199ull}}, {{12641272975673264667ull, 10371635579630233930ull, 46956748895590085ull, 7783838799430693999ull}}, {{12512481628223178321ull, 8788115246482590158ull, 6946876995700825659ull, 4864899249644183749ull}}, {{6417229998424197093ull, 6373458039675849794ull, 13295282263053419978ull, 6081124062055229686ull}}, {{17244909534885022174ull, 17190194586449588050ull, 7395730791961999164ull, 7601405077569037108ull}}, {{15389754477730526763ull, 1520499579676216723ull, 13845703781831025286ull, 4750878173480648192ull}}, {{14625507078735770550ull, 11123996511450046712ull, 17307129727288781607ull, 5938597716850810240ull}}, {{18281883848419713187ull, 9293309620885170486ull, 3187168085401425393ull, 7423247146063512801ull}}, {{6814491386834932838ull, 17337533559121701314ull, 13521195099444360630ull, 4639529466289695500ull}}, {{17741486270398441855ull, 12448544912047350834ull, 16901493874305450788ull, 5799411832862119375ull}}, {{12953485801143276511ull, 15560681140059188543ull, 16515181324454425581ull, 7249264791077649219ull}}, {{11580171233001707735ull, 5615793369791821967ull, 16032290637140644073ull, 9061580988847061524ull}}, {{14155136048267149190ull, 15039085902188358489ull, 796809611358126737ull, 5663488118029413453ull}}, {{3858862005051772776ull, 4963799322453284400ull, 5607698032625046326ull, 7079360147536766816ull}}, {{4823577506314715970ull, 15428121189921381308ull, 7009622540781307907ull, 8849200184420958520ull}}, {{12238107978301473289ull, 7336732734487169365ull, 4381014087988317442ull, 5530750115263099075ull}}, {{1462576917594677900ull, 18394287954963737515ull, 864581591558008898ull, 6913437644078873844ull}}, {{15663279202275511086ull, 13769487906849896085ull, 1080726989447511123ull, 8641797055098592305ull}}, {{12095392510635888381ull, 6300086932567491101ull, 12204669414473164212ull, 5401123159436620190ull}}, {{1284182583012696764ull, 7875108665709363877ull, 6032464731236679457ull, 6751403949295775238ull}}, {{6216914247193258859ull, 14455571850564092750ull, 16763952950900625129ull, 8439254936619719047ull}}, {{17720629459777950499ull, 2117203378961476112ull, 17394999621953972562ull, 5274534335387324404ull}}, {{3704042751012886508ull, 11869876260556620949ull, 3297005453732914086ull, 6593167919234155506ull}}, {{9241739457193496039ull, 5613973288841000378ull, 13344628854020918416ull, 8241459899042694382ull}}, {{10387773179173322928ull, 3508733305525625236ull, 3728707015335686106ull, 5150912436901683989ull}}, {{12984716473966653660ull, 13609288668761807353ull, 9272569787596995536ull, 6438640546127104986ull}}, {{2395837537176153363ull, 17011610835952259192ull, 2367340197641468612ull, 8048300682658881233ull}}, {{1497398460735095852ull, 1408884735615386187ull, 13008802669594387643ull, 5030187926661800770ull}}, {{15706806131201033527ull, 15596163974801396445ull, 7037631300138208745ull, 6287734908327250963ull}}, {{5798449608719128197ull, 5660146913219581845ull, 4185353106745373028ull, 7859668635409063704ull}}, {{5929874014663149075ull, 12760963857617014461ull, 2615845691715858142ull, 4912292897130664815ull}}, {{12024028536756324248ull, 6727832785166492268ull, 17104865169926986390ull, 6140366121413331018ull}}, {{15030035670945405310ull, 17633163018312891143ull, 12157709425553957179ull, 7675457651766663773ull}}, {{16311301321981960175ull, 8714883877231863012ull, 9904411400184917189ull, 4797161032354164858ull}}, {{1942382578767898602ull, 15505290864967216670ull, 3157142213376370678ull, 5996451290442706073ull}}, {{11651350260314649061ull, 10158241544354245029ull, 8558113785147851252ull, 7495564113053382591ull}}, {{9587936921910349615ull, 15572273002076178951ull, 12266350143358488888ull, 4684727570658364119ull}}, {{7373235133960549115ull, 1018597178885672073ull, 10721251660770723207ull, 5855909463322955149ull}}, {{13828229935878074298ull, 15108304528889253803ull, 18013250594390791912ull, 7319886829153693936ull}}, {{12673601401420204968ull, 438636587402015638ull, 4069819169278938275ull, 9149858536442117421ull}}, {{3309314857460240201ull, 16415048931622117438ull, 4849479990013030373ull, 5718661585276323388ull}}, {{13360015608680076059ull, 6683753109245483085ull, 6061849987516287967ull, 7148326981595404235ull}}, {{2864961455567931362ull, 3743005368129465953ull, 2965626465967972055ull, 8935408726994255294ull}}, {{13319815955798426861ull, 9256907382721998076ull, 15688574596512146246ull, 5584630454371409558ull}}, {{16649769944748033577ull, 2347762191547721787ull, 10387346208785407000ull, 6980788067964261948ull}}, {{16200526412507654067ull, 2934702739434652234ull, 12984182760981758750ull, 8725985084955327435ull}}, {{14737015026244671696ull, 15669247267428821358ull, 5809271216399905266ull, 5453740678097079647ull}}, {{9197896745951063812ull, 10363187047431250890ull, 2649903002072493679ull, 6817175847621349559ull}}, {{2273998895584053956ull, 8342297790861675709ull, 17147436807872780811ull, 8521469809526686948ull}}, {{3727092318953727675ull, 2908093110074853366ull, 1493775968065712199ull, 5325918630954179343ull}}, {{13882237435546935402ull, 17470174442875730419ull, 15702278015364303960ull, 6657398288692724178ull}}, {{12741110776006281348ull, 3390973979885111408ull, 10404475482350604143ull, 8321747860865905223ull}}, {{7963194235003925843ull, 9036887765069276486ull, 13420326204110209445ull, 5201092413041190764ull}}, {{730620756900131495ull, 15907795724763983512ull, 16775407755137761806ull, 6501365516301488455ull}}, {{913275946125164369ull, 10661372619100203582ull, 16357573675494814354ull, 8126706895376860569ull}}, {{14405855521610391443ull, 11275043905365015142ull, 3305954519543177115ull, 5079191809610537856ull}}, {{8783947365158213495ull, 9482118863278881024ull, 4132443149428971394ull, 6348989762013172320ull}}, {{10979934206447766869ull, 2629276542243825472ull, 5165553936786214243ull, 7936237202516465400ull}}, {{6862458879029854293ull, 17784198903398248584ull, 3228471210491383901ull, 4960148251572790875ull}}, {{8578073598787317866ull, 8395190573965647018ull, 17870647068396393589ull, 6200185314465988593ull}}, {{1499219961629371525ull, 15105674235884446677ull, 8503250780213328274ull, 7750231643082485742ull}}, {{3242855485232051155ull, 14052732415855167077ull, 702845719205942267ull, 4843894776926553589ull}}, {{8665255374967451848ull, 12954229501391570942ull, 5490243167434815738ull, 6054868471158191986ull}}, {{1608197181854539002ull, 6969414839884687870ull, 16086175996148295481ull, 7568585588947739982ull}}, {{14840181293941250588ull, 15885099320996399678ull, 5442173979165296771ull, 4730365993092337489ull}}, {{9326854580571787427ull, 15244688132818111694ull, 11414403492384008868ull, 5912957491365421861ull}}, {{2435196188859958476ull, 609116092313088002ull, 432946310197847374ull, 7391196864206777327ull}}, {{6133683636464861952ull, 14215755612977843713ull, 7188120471514736464ull, 4619498040129235829ull}}, {{12278790564008465343ull, 17769694516222304641ull, 13596836607820808484ull, 5774372550161544786ull}}, {{1513430149728417967ull, 3765374071568329186ull, 7772673722921234798ull, 7217965687701930983ull}}, {{11115159724015298267ull, 13930089626315187290ull, 5104156135224155593ull, 9022457109627413729ull}}, {{11558660845936949321ull, 1788776988805910200ull, 14719312630583567006ull, 5639035693517133580ull}}, {{14448326057421186651ull, 11459343272862163558ull, 18399140788229458757ull, 7048794616896416975ull}}, {{8837035534921707506ull, 489121035795540736ull, 18387239966859435543ull, 8810993271120521219ull}}, {{5523147209326067191ull, 7223229675013294816ull, 9186181970073453262ull, 5506870794450325762ull}}, {{6903934011657583989ull, 18252409130621394328ull, 2259355425737040769ull, 6883588493062907203ull}}, {{8629917514571979986ull, 8980453357994579198ull, 16659252337453464674ull, 8604485616328634003ull}}, {{782012428180099587ull, 10224469367173999903ull, 8106189701694721469ull, 5377803510205396252ull}}, {{14812573590507288196ull, 17392272727394887782ull, 10132737127118401836ull, 6722254387756745315ull}}, {{9292344951279334437ull, 3293596835534058112ull, 8054235390470614392ull, 8402817984695931644ull}}, {{5807715594549584023ull, 2058498022208786320ull, 14257269155898909803ull, 5251761240434957277ull}}, {{7259644493186980029ull, 16408180583043146612ull, 3986528389591473541ull, 6564701550543696597ull}}, {{9074555616483725036ull, 6675167673521769553ull, 9594846505416729831ull, 8205876938179620746ull}}, {{17200812306370797908ull, 11089508823592187826ull, 10608465084312844048ull, 5128673086362262966ull}}, {{12277643346108721577ull, 13861886029490234783ull, 4037209318536279252ull, 6410841357952828708ull}}, {{10735368164208514067ull, 17327357536862793479ull, 5046511648170349065ull, 8013551697441035885ull}}, {{13627134130271403148ull, 3912069432898164068ull, 5459912789320162118ull, 5008469810900647428ull}}, {{17033917662839253935ull, 14113458827977480893ull, 6824890986650202647ull, 6260587263625809285ull}}, {{7457339023266903706ull, 13030137516544463213ull, 13142799751740141213ull, 7825734079532261606ull}}, {{6966679898755508769ull, 10449678957053983460ull, 3602563826410200354ull, 4891083799707663504ull}}, {{8708349873444385961ull, 3838726659462703517ull, 4503204783012750443ull, 6113854749634579380ull}}, {{15497123360232870355ull, 186722305900991492ull, 5629005978765938054ull, 7642318437043224225ull}}, {{462330063290768164ull, 13951759496470283395ull, 15047343782797181043ull, 4776449023152015140ull}}, {{14412970634395623917ull, 12828013352160466339ull, 362435654786924688ull, 5970561278940018926ull}}, {{13404527274567141992ull, 16035016690200582924ull, 9676416605338431668ull, 7463201598675023657ull}}, {{17601201583459239553ull, 798513394520588519ull, 17576975424404989553ull, 4664500999171889785ull}}, {{17389815960896661537ull, 5609827761578123553ull, 8136161225224073229ull, 5830626248964862232ull}}, {{7902211895838663209ull, 11623970720400042346ull, 10170201531530091536ull, 7288282811206077790ull}}, {{654392832943553204ull, 14529963400500052933ull, 3489379877557838612ull, 9110353514007597238ull}}, {{2714838529803414704ull, 18304599162167308891ull, 16015920478755812844ull, 5693970946254748273ull}}, {{17228606217536432092ull, 4434004878999584497ull, 6184842543162602344ull, 7117463682818435342ull}}, {{7700699716638376403ull, 5542506098749480622ull, 16954425215808028738ull, 8896829603523044177ull}}, {{201251304471597348ull, 8075752330145813293ull, 3678986732238936105ull, 5560518502201902611ull}}, {{4863250149016884589ull, 14706376431109654520ull, 18433791470580833843ull, 6950648127752378263ull}}, {{6079062686271105736ull, 13771284520459680246ull, 18430553319798654400ull, 8688310159690472829ull}}, {{17634472234201604797ull, 8607052825287300153ull, 13824938834087852952ull, 5430193849806545518ull}}, {{8208032237469842285ull, 10758816031609125192ull, 8057801505755040382ull, 6787742312258181898ull}}, {{10260040296837302856ull, 4225148002656630682ull, 848879845339024670ull, 8484677890322727373ull}}, {{11024211203950702189ull, 16475775556942557888ull, 2836392912550584370ull, 5302923681451704608ull}}, {{13780264004938377736ull, 11371347409323421552ull, 3545491140688230463ull, 6628654601814630760ull}}, {{17225330006172972170ull, 9602498243226889036ull, 4431863925860288079ull, 8285818252268288450ull}}, {{1542459217003331799ull, 12919090429657887504ull, 7381600972090067953ull, 5178636407667680281ull}}, {{1928074021254164748ull, 2313804981790195668ull, 13838687233539972846ull, 6473295509584600351ull}}, {{2410092526567705935ull, 12115628264092520393ull, 12686673023497578153ull, 8091619386980750439ull}}, {{13035522875173285969ull, 654738637416743389ull, 14846699667327068202ull, 5057262116862969024ull}}, {{2459345538684443750ull, 10041795333625705045ull, 111630510449283636ull, 6321577646078711281ull}}, {{7685867941782942591ull, 12552244167032131306ull, 4751224156488992449ull, 7901972057598389101ull}}, {{9415353482041727024ull, 927623576754000210ull, 5275358107019314233ull, 4938732535998993188ull}}, {{2545819815697382971ull, 5771215489369888167ull, 6594197633774142791ull, 6173415669998741485ull}}, {{17017332824903892426ull, 2602333343284972304ull, 12854433060645066393ull, 7716769587498426856ull}}, {{10635833015564932766ull, 13155673385621577450ull, 8034020662903166495ull, 4822980992186516785ull}}, {{4071419232601390150ull, 11832905713599583909ull, 14654211847056346023ull, 6028726240233145981ull}}, {{9700960059179125591ull, 10179446123572091982ull, 4482706753538268817ull, 7535907800291432477ull}}, {{1451414018559565591ull, 17891368873301027249ull, 5107534730175111962ull, 4709942375182145298ull}}, {{6425953541626844892ull, 13140839054771508253ull, 15607790449573665761ull, 5887427968977681622ull}}, {{12644127945460944019ull, 2590990763182221604ull, 10286366025112306394ull, 7359284961222102028ull}}, {{15805159931826180024ull, 12462110490832552813ull, 12857957531390382992ull, 9199106201527627535ull}}, {{12184067966605056467ull, 7788819056770345508ull, 14953752484760071226ull, 5749441375954767209ull}}, {{15230084958256320584ull, 512651784108156077ull, 4857132550667925321ull, 7186801719943459012ull}}, {{5202548142538237018ull, 5252500748562583001ull, 6071415688334906651ull, 8983502149929323765ull}}, {{14780807635154867896ull, 976969958637920423ull, 6100477814423010609ull, 5614688843705827353ull}}, {{13864323525516196966ull, 5832898466724788433ull, 12237283286456151165ull, 7018361054632284191ull}}, {{3495346351613082496ull, 11902809101833373446ull, 10684918089642801052ull, 8772951318290355239ull}}, {{16019649525040340272ull, 16662627725500634211ull, 13595602833667832513ull, 5483094573931472024ull}}, {{15412875887873037436ull, 6993226601593629052ull, 16994503542084790642ull, 6853868217414340030ull}}, {{819350786131745179ull, 17964905288846812124ull, 12019757390751212494ull, 8567335271767925038ull}}, {{9735466278187116545ull, 6616379787101869673ull, 2900662350792119905ull, 5354584544854953149ull}}, {{16781018866161283585ull, 12882160752304724995ull, 8237513956917537785ull, 6693230681068691436ull}}, {{16364587564274216577ull, 2267642885098742532ull, 10296892446146922232ull, 8366538351335864295ull}}, {{1004495190816609553ull, 1417276803186714083ull, 13353086806482908251ull, 5229086469584915184ull}}, {{15090677043802925653ull, 15606654059265556315ull, 16691358508103635313ull, 6536358086981143980ull}}, {{14251660286326269162ull, 5673259518799781682ull, 2417454061419992526ull, 8170447608726429976ull}}, {{13518973697381306130ull, 17380845254532027263ull, 1510908788387495328ull, 5106529755454018735ull}}, {{12287031103299244759ull, 3279312494455482463ull, 15723694040766532873ull, 6383162194317523418ull}}, {{10747102860696668045ull, 8710826636496740983ull, 10431245514103390283ull, 7978952742896904273ull}}, {{13634468315576499384ull, 3138423638596769162ull, 18048743492383088687ull, 4986845464310565170ull}}, {{7819713357615848422ull, 17758087603528125165ull, 13337557328624085050ull, 6233556830388206463ull}}, {{14386327715447198431ull, 12974237467555380648ull, 12060260642352718409ull, 7791946037985258079ull}}, {{8991454822154499020ull, 1191369389581031049ull, 14455191929111530862ull, 4869966273740786299ull}}, {{15851004546120511679ull, 10712583773831064619ull, 13457303892962025673ull, 6087457842175982874ull}}, {{15202069664223251694ull, 18002415735716218678ull, 7598257829347756283ull, 7609322302719978593ull}}, {{4889607521712144405ull, 8945666825608942722ull, 16278126189410817437ull, 4755826439199986620ull}}, {{15335381438994956314ull, 15793769550438566306ull, 1900913663053970180ull, 5944783048999983276ull}}, {{9945854761888919584ull, 1295467864338656267ull, 2376142078817462726ull, 7430978811249979095ull}}, {{3910316216966880788ull, 14644725470493823879ull, 8402617826901996059ull, 4644361757031236934ull}}, {{276209252781213081ull, 13694220819689891945ull, 1279900246772719266ull, 5805452196289046168ull}}, {{4956947584403904256ull, 7894403987757589123ull, 1599875308465899083ull, 7256815245361307710ull}}, {{1584498462077492416ull, 5256318966269598500ull, 11223216172437149662ull, 9071019056701634637ull}}, {{10213683575653208568ull, 17120257409200662774ull, 9320353116986912490ull, 5669386910438521648ull}}, {{3543732432711734902ull, 12176949724646052660ull, 11650441396233640613ull, 7086733638048152060ull}}, {{4429665540889668627ull, 1386129100525402113ull, 14563051745292050767ull, 8858417047560190075ull}}, {{14297756009124512652ull, 7783859715469458176ull, 6796064331593837777ull, 5536510654725118797ull}}, {{17872195011405640815ull, 14341510662764210624ull, 13106766432919685125ull, 6920638318406398496ull}}, {{3893499690547499403ull, 4091830273173099569ull, 16383458041149606407ull, 8650797898007998120ull}}, {{13962652352660656887ull, 9474922948374269086ull, 10239661275718504004ull, 5406748686254998825ull}}, {{8229943403971045300ull, 11843653685467836358ull, 17411262613075517909ull, 6758435857818748531ull}}, {{1064057218109030817ull, 969509051552631736ull, 17152392247917009483ull, 8448044822273435664ull}}, {{665035761318144261ull, 16746844221716252499ull, 10720245154948130926ull, 5280028013920897290ull}}, {{14666352756929844038ull, 11710183240290539815ull, 4176934406830387850ull, 6600035017401121613ull}}, {{13721254927734917144ull, 5414357013508398961ull, 9832854026965372717ull, 8250043771751402016ull}}, {{1658255302193241359ull, 5689816142656443303ull, 6145533766853357948ull, 5156277357344626260ull}}, {{15907877183023715411ull, 7112270178320554128ull, 7681917208566697435ull, 6445346696680782825ull}}, {{1438102405070092647ull, 4278651704473304757ull, 14214082529135759698ull, 8056683370850978531ull}}, {{3204657012382501857ull, 7285843333723203377ull, 6577958571496155859ull, 5035427106781861582ull}}, {{8617507283905515225ull, 4495618148726616317ull, 17445820251224970632ull, 6294283883477326977ull}}, {{15383570123309281935ull, 5619522685908270396ull, 7972217258749049578ull, 7867854854346658722ull}}, {{391359290213525401ull, 8123887697120056902ull, 9594321805145543890ull, 4917409283966661701ull}}, {{9712571149621682560ull, 931487584545295319ull, 16604588274859317767ull, 6146761604958327126ull}}, {{7529027918599715295ull, 14999417535963782861ull, 11532363306719371400ull, 7683452006197908908ull}}, {{7011485458338516012ull, 9374635959977364288ull, 16431099103554382933ull, 4802157503873693067ull}}, {{8764356822923145015ull, 16329980968399093264ull, 15927187861015590762ull, 6002696879842116334ull}}, {{10955446028653931268ull, 11189104173644090772ull, 10685612789414712645ull, 7503371099802645418ull}}, {{16070525804763482851ull, 9299033117741250684ull, 11290194011811583307ull, 4689606937376653386ull}}, {{1641413182244801947ull, 7012105378749175452ull, 4889370477909703326ull, 5862008671720816733ull}}, {{2051766477806002434ull, 17988503760291245123ull, 10723399115814517061ull, 7327510839651020916ull}}, {{16399766152539666754ull, 8650571645081892691ull, 13404248894768146327ull, 9159388549563776145ull}}, {{7944010836123597770ull, 12324136305817264788ull, 1460126531589009598ull, 5724617843477360091ull}}, {{9930013545154497212ull, 6181798345416805177ull, 15660216219768425710ull, 7155772304346700113ull}}, {{17024202949870509419ull, 16950619968625782279ull, 5740212219428368425ull, 8944715380433375142ull}}, {{17557655871310150243ull, 3676608452750032068ull, 17422690692424893978ull, 5590447112770859463ull}}, {{3500325765428136188ull, 13819132602792315894ull, 17166677347103729568ull, 6988058890963574329ull}}, {{13598779243639946042ull, 17273915753490394867ull, 7623288628597498248ull, 8735073613704467912ull}}, {{6193394018061272325ull, 10796197345931496792ull, 4764555392873436405ull, 5459421008565292445ull}}, {{7741742522576590406ull, 18106932700841758894ull, 10567380259519183410ull, 6824276260706615556ull}}, {{453806116365962199ull, 13410293839197422810ull, 13209225324398979263ull, 8530345325883269445ull}}, {{4895314841156114279ull, 15298962677139471112ull, 10561608836963055991ull, 5331465828677043403ull}}, {{6119143551445142848ull, 14512017327996950986ull, 8590325027776432085ull, 6664332285846304254ull}}, {{16872301476161204368ull, 4304963604714025020ull, 1514534247865764299ull, 8330415357307880318ull}}, {{1321816385745976922ull, 384759243732571686ull, 14781641960198266399ull, 5206509598317425198ull}}, {{10875642519037246961ull, 14316007109947878319ull, 9253680413393057190ull, 6508136997896781498ull}}, {{8982867130369170797ull, 8671636850580072091ull, 2343728479886545680ull, 8135171247370976873ull}}, {{3308448947267037796ull, 5419773031612545057ull, 12994045345997560810ull, 5084482029606860545ull}}, {{8747247202511185149ull, 15998088326370457129ull, 2407498627214787300ull, 6355602537008575682ull}}, {{15545745021566369340ull, 1550866334253519795ull, 12232745320873259934ull, 7944503171260719602ull}}, {{7410247629265286886ull, 14804349514190613584ull, 12257151843973175362ull, 4965314482037949751ull}}, {{9262809536581608607ull, 9282064855883491172ull, 10709753786539081299ull, 6206643102547437189ull}}, {{11578511920727010759ull, 6990895051426976061ull, 17998878251601239528ull, 7758303878184296486ull}}, {{9542412959668075676ull, 4369309407141860038ull, 6637612888823386801ull, 4848939923865185304ull}}, {{2704644162730318787ull, 10073322777354712952ull, 8297016111029233501ull, 6061174904831481630ull}}, {{3380805203412898484ull, 17203339490120779094ull, 1147898101931766068ull, 7576468631039352038ull}}, {{15948061307415225265ull, 1528715144470711125ull, 14552494368989517505ull, 4735292894399595023ull}}, {{6100018578986867869ull, 6522579949015776811ull, 13578931942809508977ull, 5919116117999493779ull}}, {{3013337205306196932ull, 12764910954697108918ull, 12361978910084498317ull, 7398895147499367224ull}}, {{15718393808598536795ull, 10283912355899387025ull, 7726236818802811448ull, 4624309467187104515ull}}, {{5812934205466007281ull, 12854890444874233782ull, 5046110005076126406ull, 5780386833983880644ull}}, {{16489539793687284909ull, 6845241019238016419ull, 6307637506345158008ull, 7225483542479850805ull}}, {{16000238723681718232ull, 8556551274047520524ull, 12496232901358835414ull, 9031854428099813506ull}}, {{776777165446298087ull, 736158527852312424ull, 12421831581776660038ull, 5644909017562383441ull}}, {{970971456807872609ull, 10143570196670166338ull, 1692231421938661335ull, 7056136271952979302ull}}, {{10437086357864616569ull, 8067776727410320018ull, 11338661314278102477ull, 8820170339941224127ull}}, {{11134864992092773260ull, 7348203463845143963ull, 14004192349064895904ull, 5512606462463265079ull}}, {{9306895221688578671ull, 9185254329806429954ull, 12893554417903731976ull, 6890758078079081349ull}}, {{2410246990255947531ull, 11481567912258037443ull, 2281884967097501258ull, 8613447597598851687ull}}, {{17647305433405824871ull, 11787665963588661305ull, 8343707132077020142ull, 5383404748499282304ull}}, {{8224073736475117376ull, 5511210417631050824ull, 10429633915096275178ull, 6729255935624102880ull}}, {{10280092170593896720ull, 16112385058893589338ull, 13037042393870343972ull, 8411569919530128600ull}}, {{11036743625048573354ull, 846868624953717528ull, 8148151496168964983ull, 5257231199706330375ull}}, {{13795929531310716693ull, 14893643836474310622ull, 5573503351783818324ull, 6571538999632912969ull}}, {{8021539877283620058ull, 170310721883336662ull, 11578565208157160810ull, 8214423749541141211ull}}, {{401776404874874632ull, 4718130219604473318ull, 4930760245884531554ull, 5134014843463213257ull}}, {{9725592542948369098ull, 15121034811360367455ull, 10775136325783052346ull, 6417518554329016571ull}}, {{7545304660258073469ull, 9677921477345683511ull, 8857234388801427529ull, 8021898192911270714ull}}, {{11633344440302377774ull, 17577915969409521954ull, 10147457511428280109ull, 5013686370569544196ull}}, {{5318308513523196410ull, 8137336906479738731ull, 12684321889285350137ull, 6267107963211930245ull}}, {{2036199623476607608ull, 14783357151527061318ull, 2020344306324523959ull, 7833884954014912807ull}}, {{15107682819955043467ull, 16157127247345495179ull, 8180244219093909330ull, 4896178096259320504ull}}, {{14272917506516416430ull, 10973037022327093166ull, 10225305273867386663ull, 6120222620324150630ull}}, {{8617774846290744729ull, 9104610259481478554ull, 3558259555479457521ull, 7650278275405188288ull}}, {{9997795297359103360ull, 17219596458244393856ull, 2223912222174660950ull, 4781423922128242680ull}}, {{12497244121698879200ull, 12301123535950716512ull, 2779890277718326188ull, 5976779902660303350ull}}, {{15621555152123599000ull, 15376404419938395640ull, 12698234884002683543ull, 7470974878325379187ull}}, {{9763471970077249375ull, 16527781790102579131ull, 5630553793287983262ull, 4669359298953361992ull}}, {{7592653944169173815ull, 11436355200773448106ull, 7038192241609979078ull, 5836699123691702490ull}}, {{267445393356691460ull, 5072071964112034325ull, 18021112338867249656ull, 7295873904614628112ull}}, {{4945992760123252229ull, 6340089955140042906ull, 4079646349874510454ull, 9119842380768285141ull}}, {{7702931493504420547ull, 17797614277244690528ull, 4855621977885262985ull, 5699901487980178213ull}}, {{9628664366880525684ull, 8411959791273699448ull, 10681213490783966636ull, 7124876859975222766ull}}, {{12035830458600657105ull, 10514949739092124310ull, 4128144826625182487ull, 8906096074969028458ull}}, {{2910708018198022787ull, 13489372614573659550ull, 7191776535068126958ull, 5566310046855642786ull}}, {{12861757059602304291ull, 7638343731362298629ull, 18213092705689934506ull, 6957887558569553482ull}}, {{2242138269220716652ull, 324557627348097479ull, 13542993845257642325ull, 8697359448211941853ull}}, {{8318865445904029764ull, 2508691526306254876ull, 10770214162499720405ull, 5435849655132463658ull}}, {{10398581807380037204ull, 7747550426310206499ull, 4239395666269874698ull, 6794812068915579573ull}}, {{8386541240797658601ull, 461065996032982316ull, 9910930601264731277ull, 8493515086144474466ull}}, {{14464960312353312434ull, 2594009256734307899ull, 10806017644217844952ull, 5308446928840296541ull}}, {{13469514372014252638ull, 3242511570917884874ull, 18119208073699694094ull, 6635558661050370676ull}}, {{7613520928163039990ull, 13276511500502131901ull, 4202266018415066001ull, 8294448326312963346ull}}, {{7064293589315593946ull, 1380290660172750582ull, 7238102279936804155ull, 5184030203945602091ull}}, {{18053739023499268240ull, 15560421380498101939ull, 4435941831493617289ull, 6480037754932002614ull}}, {{17955487760946697396ull, 5615468670340463712ull, 14768299326221797420ull, 8100047193665003267ull}}, {{11222179850591685873ull, 12733039955817565628ull, 6924344069674929435ull, 5062529496040627042ull}}, {{14027724813239607341ull, 11304613926344569131ull, 17878802123948437602ull, 6328161870050783802ull}}, {{12922969998122121272ull, 4907395371075935606ull, 13125130618080771195ull, 7910202337563479753ull}}, {{3465170230398937891ull, 761279097708765802ull, 1285677608659400141ull, 4943876460977174846ull}}, {{13554834824853448172ull, 5563284890563345156ull, 10830469047679025984ull, 6179845576221468557ull}}, {{16943543531066810215ull, 6954106113204181445ull, 18149772328026170384ull, 7724806970276835696ull}}, {{12895557716130450336ull, 4346316320752613403ull, 11343607705016356490ull, 4828004356423022310ull}}, {{11507761126735675016ull, 14656267437795542562ull, 4956137594415669804ull, 6035005445528777888ull}}, {{5161329371564817962ull, 18320334297244428203ull, 6195171993019587255ull, 7543756806910972360ull}}, {{919987848014317275ull, 18367737963418849483ull, 3871982495637242034ull, 4714848004319357725ull}}, {{14985042865300060305ull, 13736300417418786045ull, 9451664137973940447ull, 5893560005399197156ull}}, {{4896245526342911669ull, 12558689503346094653ull, 11814580172467425559ull, 7366950006748996445ull}}, {{10731992926356027491ull, 11086675860755230412ull, 933167160302118237ull, 9208687508436245557ull}}, {{15930867615827292990ull, 9235015422185712959ull, 2889072484402517850ull, 5755429692772653473ull}}, {{15301898501356728333ull, 2320397240877365391ull, 8223026623930535217ull, 7194287115965816841ull}}, {{14515687108268522512ull, 7512182569524094643ull, 14890469298340556925ull, 8992858894957271051ull}}, {{6766461433454132618ull, 7000957115166253104ull, 7000700302249154126ull, 5620536809348294407ull}}, {{8458076791817665773ull, 17974568430812592188ull, 4139189359384054753ull, 7025671011685368009ull}}, {{10572595989772082216ull, 8633152483233576523ull, 9785672717657456346ull, 8782088764606710011ull}}, {{4302029484393857433ull, 10007406320448373231ull, 3810202439322216264ull, 5488805477879193757ull}}, {{765850837064933887ull, 12509257900560466539ull, 9374439067580158234ull, 6861006847348992196ull}}, {{14792371601613331071ull, 6413200338845807365ull, 11718048834475197793ull, 8576258559186240245ull}}, {{11551075260222025872ull, 15537465257847099363ull, 9629623530760692572ull, 5360161599491400153ull}}, {{9827158056850144435ull, 975087498599322588ull, 16648715431878253620ull, 6700201999364250191ull}}, {{12283947571062680544ull, 1218859373249153235ull, 16199208271420429121ull, 8375252499205312739ull}}, {{5371624222700481388ull, 12291002154349190532ull, 7818662160424074248ull, 5234532812003320462ull}}, {{6714530278375601735ull, 15363752692936488165ull, 549955663675317002ull, 6543166015004150578ull}}, {{13004848866396890073ull, 9981318829315834398ull, 9910816616448922061ull, 8178957518755188222ull}}, {{3516344523070668392ull, 8544167277536090451ull, 1582574366853188384ull, 5111848449221992639ull}}, {{18230488709120499201ull, 10680209096920113063ull, 15813276013848649192ull, 6389810561527490798ull}}, {{18176424867973236098ull, 13350261371150141329ull, 10543222980456035682ull, 7987263201909363498ull}}, {{4442736514842190705ull, 12955599375396226235ull, 11201200381212410205ull, 4992039501193352186ull}}, {{941734625125350477ull, 2359441163963119082ull, 4778128439660736949ull, 6240049376491690233ull}}, {{10400540318261463905ull, 7560987473381286756ull, 10584346568003309090ull, 7800061720614612791ull}}, {{15723709735768190749ull, 9337303189290692126ull, 13532745632643150037ull, 4875038575384132994ull}}, {{10431265132855462628ull, 16283315005040753062ull, 7692560003949161738ull, 6093798219230166243ull}}, {{3815709379214552476ull, 11130771719446165520ull, 5004013986509064269ull, 7617247774037707804ull}}, {{2384818362009095298ull, 9262575333867547402ull, 12350880778422940976ull, 4760779858773567377ull}}, {{12204394989366144930ull, 11578219167334434252ull, 1603542917746512508ull, 5950974823466959222ull}}, {{15255493736707681163ull, 14472773959168042815ull, 11227800684037916443ull, 7438718529333699027ull}}, {{16452212613083382583ull, 6739640715266332807ull, 4711532418310003825ull, 4649199080833561892ull}}, {{15953579747926840324ull, 13036236912510303913ull, 5889415522887504781ull, 5811498851041952365ull}}, {{6106916629626386693ull, 2460238085355716180ull, 11973455422036768881ull, 7264373563802440456ull}}, {{7633645787032983367ull, 7686983625122033129ull, 14966819277545961101ull, 9080466954753050570ull}}, {{16300243662964084364ull, 7110207774914964657ull, 13965948066893613592ull, 5675291846720656606ull}}, {{6540246523422941743ull, 8887759718643705822ull, 8234063046762241182ull, 7094114808400820758ull}}, {{17398680191133452987ull, 1886327611449856469ull, 1069206771598025670ull, 8867643510501025948ull}}, {{13180018128672102069ull, 15014012812438324005ull, 9891626269103541851ull, 5542277194063141217ull}}, {{2639964605557963874ull, 14155829997120517103ull, 16976218854806815218ull, 6927846492578926521ull}}, {{17135013812229618555ull, 8471415459545870570ull, 7385215513226355311ull, 8659808115723658152ull}}, {{15321069651070899501ull, 12212163689857250962ull, 4615759695766472069ull, 5412380072327286345ull}}, {{9927965026983848568ull, 1430146557039399991ull, 10381385638135477991ull, 6765475090409107931ull}}, {{7798270265302422806ull, 15622741251581413701ull, 8365046029241959584ull, 8456843863011384914ull}}, {{7179761925027708206ull, 9764213282238383563ull, 9839839786703612644ull, 5285527414382115571ull}}, {{4363016387857247353ull, 12205266602797979454ull, 7688113714952127901ull, 6606909267977644464ull}}, {{14677142521676334999ull, 1421525198215310605ull, 9610142143690159877ull, 8258636584972055580ull}}, {{11479057085261403327ull, 3194296258098263080ull, 15229710876661125731ull, 5161647865607534737ull}}, {{14348821356576754158ull, 17827928377904992562ull, 5202080540544243451ull, 6452059832009418422ull}}, {{8712654658866166890ull, 17673224453953852799ull, 15725972712535080122ull, 8065074790011773027ull}}, {{12362938189432436162ull, 15657451302148545903ull, 7522889936120731124ull, 5040671743757358142ull}}, {{10841986718363157299ull, 1125070053976130763ull, 180240383296138098ull, 6300839679696697678ull}}, {{8940797379526558719ull, 10629709604324939262ull, 9448672515974948430ull, 7876049599620872097ull}}, {{976312343776711296ull, 2031882484275699135ull, 17434635368552812529ull, 4922530999763045060ull}}, {{15055448485003052832ull, 7151539123772011822ull, 3346550136981464045ull, 6153163749703806326ull}}, {{9595938569399040231ull, 13551109923142402682ull, 13406559708081605864ull, 7691454687129757907ull}}, {{10609147624301788049ull, 8469443701964001676ull, 6073256808337309713ull, 4807159179456098692ull}}, {{13261434530377235061ull, 15198490645882389999ull, 7591571010421637141ull, 6008948974320123365ull}}, {{11965107144544155922ull, 5163055252070823787ull, 14101149781454434331ull, 7511186217900154206ull}}, {{5172348956126403499ull, 921066523330570915ull, 4201532594981633553ull, 4694491386187596379ull}}, {{1853750176730616470ull, 5763019172590601548ull, 640229725299654037ull, 5868114232734495474ull}}, {{2317187720913270588ull, 11815459984165639839ull, 10023659193479343354ull, 7335142790918119342ull}}, {{16731542706423751946ull, 5545952943352273990ull, 3306201954994403385ull, 9168928488647649178ull}}, {{5845528173087457063ull, 14995435635663641004ull, 6678062240298890019ull, 5730580305404780736ull}}, {{7306910216359321328ull, 14132608526152163351ull, 8347577800373612524ull, 7163225381755975920ull}}, {{4521951752021763756ull, 17665760657690204189ull, 10434472250467015655ull, 8954031727194969900ull}}, {{5132062854227296300ull, 17958629438697459474ull, 15744917193396660592ull, 5596269829496856187ull}}, {{15638450604638896183ull, 4001542724662272726ull, 15069460473318437837ull, 6995337286871070234ull}}, {{10324691218943844420ull, 9613614424255228812ull, 9613453554793271488ull, 8744171608588837793ull}}, {{15676304048694678571ull, 6008509015159518007ull, 17537623517814264440ull, 5465107255368023620ull}}, {{14983694042440960309ull, 7510636268949397509ull, 3475285323558278934ull, 6831384069210029526ull}}, {{4894559497769036674ull, 164923299331971079ull, 13567478691302624476ull, 8539230086512536907ull}}, {{9976628713746729778ull, 9326449098937257732ull, 6173831172850446345ull, 5337018804070335567ull}}, {{12470785892183412222ull, 16269747392098960069ull, 3105602947635670027ull, 6671273505087919459ull}}, {{1753424309947101565ull, 15725498221696312183ull, 17717061739826751246ull, 8339091881359899323ull}}, {{8013419221358020335ull, 5216750370132807210ull, 8767320578178025577ull, 5211932425849937077ull}}, {{793401989842749610ull, 11132623981093396917ull, 15570836741149919875ull, 6514915532312421346ull}}, {{5603438505730824917ull, 9304093957939358242ull, 10240173889582624036ull, 8143644415390526683ull}}, {{8113835084509153477ull, 15038430760566874709ull, 4094265671775446070ull, 5089777759619079177ull}}, {{14753979874063829750ull, 9574666413853817578ull, 9729518108146695492ull, 6362222199523848971ull}}, {{9219102805725011380ull, 11968333017317271973ull, 7550211616755981461ull, 7952777749404811214ull}}, {{8067782262791826064ull, 9786051145036988935ull, 107196242045100509ull, 4970486093378007009ull}}, {{5473041810062394676ull, 16844249949723624073ull, 4745681320983763540ull, 6213107616722508761ull}}, {{11452988281005381249ull, 2608568363444978475ull, 10543787669657092330ull, 7766384520903135951ull}}, {{4852274666414669329ull, 6242041245580499451ull, 13507396321176764562ull, 4853990325564459969ull}}, {{1453657314590948757ull, 17025923593830400122ull, 3049187346188791990ull, 6067487906955574962ull}}, {{11040443680093461754ull, 12059032455433224344ull, 13034856219590765796ull, 7584359883694468702ull}}, {{6900277300058413597ull, 16760267321500541023ull, 3535099118816840718ull, 4740224927309042939ull}}, {{4013660606645629092ull, 11726962115020900471ull, 18253931953803214610ull, 5925281159136303673ull}}, {{405389739879648460ull, 5435330606921349781ull, 8982356886971854551ull, 7406601448920379592ull}}, {{2559211596638474240ull, 10314610656966925469ull, 5613973054357409094ull, 4629125905575237245ull}}, {{7810700514225480704ull, 3669891284353881028ull, 11629152336374149272ull, 5786407381969046556ull}}, {{9763375642781850880ull, 4587364105442351285ull, 14536440420467686590ull, 7233009227461308195ull}}, {{16815905571904701503ull, 14957577168657714914ull, 13558864507157220333ull, 9041261534326635244ull}}, {{15121627000867826344ull, 11654328739624765773ull, 17697662353828038516ull, 5650788458954147027ull}}, {{5066975695802619218ull, 14567910924530957217ull, 17510391923857660241ull, 7063485573692683784ull}}, {{10945405638180661926ull, 4374830600381532809ull, 3441245831112523686ull, 8829356967115854731ull}}, {{18370093569931383464ull, 16569327180520621717ull, 18291679708941184967ull, 5518348104447409206ull}}, {{9127558907132065618ull, 16099972957223389243ull, 13641227599321705401ull, 6897935130559261508ull}}, {{6797762615487694118ull, 6289908141247072842ull, 17051534499152131752ull, 8622418913199076885ull}}, {{8860287653107196728ull, 3931192588279420526ull, 12963052071183776297ull, 5389011820749423053ull}}, {{1851987529529220102ull, 9525676753776663562ull, 2368757033697556659ull, 6736264775936778817ull}}, {{11538356448766300935ull, 7295409923793441548ull, 7572632310549333728ull, 8420330969920973521ull}}, {{16434844817333713893ull, 4559631202370900967ull, 16262110240161803340ull, 5262706856200608450ull}}, {{15931870003239754462ull, 5699539002963626209ull, 11104265763347478367ull, 6578383570250760563ull}}, {{6079779448767529365ull, 2512737735277144858ull, 9268646185756960055ull, 8222979462813450704ull}}, {{8411548173907093757ull, 8487990112189297392ull, 5792903866098100034ull, 5139362164258406690ull}}, {{10514435217383867197ull, 1386615603381845932ull, 16464501869477400851ull, 6424202705323008362ull}}, {{13143044021729833996ull, 15568327559509471127ull, 11357255299991975255ull, 8030253381653760453ull}}, {{15131931541222228103ull, 16647733752334501310ull, 9404127571708678486ull, 5018908363533600283ull}}, {{9691542389673009321ull, 11586295153563350830ull, 7143473446208460204ull, 6273635454417000354ull}}, {{2891055950236485843ull, 14482868941954188538ull, 18152713844615351063ull, 7842044318021250442ull}}, {{6418595987325191556ull, 15969322116362449692ull, 15957132171311982318ull, 4901277698763281526ull}}, {{8023244984156489445ull, 10738280608598286307ull, 10723043177285202090ull, 6126597123454101908ull}}, {{5417370211768223902ull, 4199478723893082076ull, 13403803971606502613ull, 7658246404317627385ull}}, {{12609228419209915747ull, 4930517211646870249ull, 1459848454612982277ull, 4786404002698517116ull}}, {{1926477468730230972ull, 10774832532985975716ull, 1824810568266227846ull, 5983005003373146395ull}}, {{2408096835912788715ull, 4245168629377693837ull, 16116071265614948520ull, 7478756254216432993ull}}, {{3810903531659186899ull, 2653230393361058648ull, 3155015513368260969ull, 4674222658885270621ull}}, {{4763629414573983623ull, 7928224010128711214ull, 8555455410137714115ull, 5842778323606588276ull}}, {{15177908805072255337ull, 5298593994233501113ull, 10694319262672142644ull, 7303472904508235345ull}}, {{5137327951058155459ull, 6623242492791876392ull, 17979585096767566209ull, 9129341130635294181ull}}, {{3210829969411347162ull, 15668741604063392505ull, 13543083694693422832ull, 5705838206647058863ull}}, {{8625223480191571857ull, 1139182931369689015ull, 12317168599939390637ull, 7132297758308823579ull}}, {{6169843331812076917ull, 6035664682639499173ull, 10784774731496850392ull, 8915372197886029474ull}}, {{6161995091596242025ull, 3772290426649686983ull, 11352170225612919399ull, 5572107623678768421ull}}, {{3090807846067914627ull, 103677014884720825ull, 355154726733985537ull, 6965134529598460527ull}}, {{8475195826012281188ull, 4741282287033288935ull, 14279001463699645633ull, 8706418161998075658ull}}, {{12214526418898757599ull, 14492516475464275344ull, 13536061933239666424ull, 5441511351248797286ull}}, {{15268158023623446998ull, 18115645594330344180ull, 7696705379694807222ull, 6801889189060996608ull}}, {{638453455819757132ull, 13421184956058154418ull, 9620881724618509028ull, 8502361486326245760ull}}, {{5010719428314736112ull, 17611612634391122319ull, 6013051077886568142ull, 5313975928953903600ull}}, {{1651713266966032235ull, 12791143756134127091ull, 7516313847358210178ull, 6642469911192379500ull}}, {{15899699638989704006ull, 6765557658312883055ull, 9395392309197762723ull, 8303087388990474375ull}}, {{16854841302009646860ull, 1922630527231857957ull, 12789649220889683558ull, 5189429618119046484ull}}, {{7233493572229894863ull, 11626660195894598255ull, 15987061526112104447ull, 6486787022648808105ull}}, {{4430180946859980674ull, 9921639226440859915ull, 6148768852357966847ull, 8108483778311010132ull}}, {{463020082573793970ull, 13118553544166619303ull, 13066352569578505087ull, 5067802361444381332ull}}, {{14413833158499406174ull, 11786505911780886224ull, 16332940711973131359ull, 6334752951805476665ull}}, {{18017291448124257717ull, 10121446371298719876ull, 6581117834684250487ull, 7918441189756845832ull}}, {{2037435118222885266ull, 13243433009702781779ull, 4113198646677656554ull, 4949025743598028645ull}}, {{16381851953060770294ull, 7330919225273701415ull, 9753184326774458597ull, 6186282179497535806ull}}, {{15865628922898574963ull, 13775335050019514673ull, 2968108371613297438ull, 7732852724371919758ull}}, {{2998489049170527496ull, 3997898387834808767ull, 15690125787540474611ull, 4833032952732449848ull}}, {{17583169366745323082ull, 385686966366123054ull, 1165913160716041648ull, 6041291190915562311ull}}, {{12755589671576878044ull, 482108707957653818ull, 15292449506177215772ull, 7551613988644452888ull}}, {{12583929563162936682ull, 9524689979328309444ull, 9557780941360759857ull, 4719758742902783055ull}}, {{15729911953953670852ull, 16517548492587774709ull, 7335540158273561917ull, 5899698428628478819ull}}, {{5827331887159924853ull, 6811877560452554675ull, 4557739179414564493ull, 7374623035785598524ull}}, {{2672478840522518162ull, 13126532968993081248ull, 5697173974268205616ull, 9218278794731998155ull}}, {{1670299275326573852ull, 8204083105620675780ull, 1254890724703934558ull, 5761424246707498847ull}}, {{2087874094158217315ull, 1031731845171068917ull, 15403671461162081910ull, 7201780308384373558ull}}, {{7221528636125159547ull, 10513036843318611954ull, 10031217289597826579ull, 9002225385480466948ull}}, {{9125141416005612621ull, 4264805017860438519ull, 15492882842853417420ull, 5626390865925291842ull}}, {{6794740751579627872ull, 5331006272325548149ull, 10142731516711995967ull, 7032988582406614803ull}}, {{13105111957901922744ull, 2052071821979547282ull, 8066728377462607055ull, 8791235728008268504ull}}, {{12802380992116089619ull, 8200073916378298907ull, 5041705235914129409ull, 5494522330005167815ull}}, {{11391290221717724120ull, 14861778413900261538ull, 1690445526465273857ull, 6868152912506459769ull}}, {{5015740740292379342ull, 4742164962093163211ull, 6724742926508980226ull, 8585191140633074711ull}}, {{828994953469043137ull, 7575539119735614911ull, 11120493356709194497ull, 5365744462895671694ull}}, {{14871301747118467633ull, 14081109918096906542ull, 4677244659031717313ull, 6707180578619589618ull}}, {{9365755147043308733ull, 3766329342338969466ull, 15069927860644422450ull, 8383975723274487022ull}}, {{10465282985329455862ull, 6965641857389243820ull, 4807018894475376127ull, 5239984827046554389ull}}, {{13081603731661819828ull, 4095366303309166871ull, 10620459636521608063ull, 6549981033808192986ull}}, {{11740318646149886881ull, 507521860709070685ull, 4052202508797234271ull, 8187476292260241233ull}}, {{9643542163057373253ull, 7234730190584251034ull, 14061841614066741179ull, 5117172682662650770ull}}, {{2831055666966940758ull, 4431726719802925889ull, 8353929980728650666ull, 6396465853328313463ull}}, {{8150505602136063851ull, 14763030436608433169ull, 5830726457483425428ull, 7995582316660391829ull}}, {{16623281047403509667ull, 3521986025494922ull, 5950047045140834845ull, 4997238947912744893ull}}, {{11555729272399611276ull, 4616088500959256557ull, 12049244824853431460ull, 6246548684890931116ull}}, {{609603535217350382ull, 5770110626199070697ull, 15061556031066789325ull, 7808185856113663895ull}}, {{11910217255579313749ull, 5912162150588113137ull, 16331001547057825184ull, 4880116160071039934ull}}, {{1052713514191978474ull, 7390202688235141422ull, 11190379896967505672ull, 6100145200088799918ull}}, {{10539263929594748901ull, 9237753360293926777ull, 4764602834354606282ull, 7625181500110999898ull}}, {{18116255002065187823ull, 10385281868611092139ull, 7589562789899016830ull, 4765738437569374936ull}}, {{18033632734154096875ull, 3758230298909089366ull, 9486953487373771038ull, 5957173046961718670ull}}, {{13318668880837845285ull, 13921159910491137516ull, 2635319822362437989ull, 7446466308702148338ull}}, {{17547540087378429112ull, 11006567953270654899ull, 6258760907403911647ull, 4654041442938842711ull}}, {{17322739090795648485ull, 9146523923160930720ull, 3211765115827501655ull, 5817551803673553389ull}}, {{3206679789785008991ull, 6821468885523775497ull, 8626392413211764973ull, 7271939754591941736ull}}, {{8620035755658649142ull, 13138522125332107275ull, 10782990516514706216ull, 9089924693239927170ull}}, {{3081679338072961762ull, 8211576328332567047ull, 11351055091249079289ull, 5681202933274954481ull}}, {{17687157227873365914ull, 14876156428843096712ull, 353760808779185399ull, 7101503666593693102ull}}, {{3662202461132155777ull, 13983509517626482987ull, 9665573047828757557ull, 8876879583242116377ull}}, {{18429777602703455025ull, 11045536457730245818ull, 17570198200961443233ull, 5548049739526322735ull}}, {{13813849966524542973ull, 18418606590590195177ull, 17351061732774416137ull, 6935062174407903419ull}}, {{3432254402873515004ull, 9188200182955580260ull, 17077141147540632268ull, 8668827718009879274ull}}, {{11368531038650722686ull, 14965997151202013470ull, 15284899235640283071ull, 5418017323756174546ull}}, {{4987291761458627549ull, 14095810420575128934ull, 9882752007695578031ull, 6772521654695218183ull}}, {{15457486738678060244ull, 13008077007291523263ull, 7741753991192084635ull, 8465652068369022729ull}}, {{16578458239314869509ull, 5824205120343508087ull, 16367811290563522657ull, 5291032542730639205ull}}, {{16111386780716198982ull, 11891942418856773013ull, 6624706057922239609ull, 6613790678413299007ull}}, {{6304175420613085015ull, 1029869968288802555ull, 3669196553975411608ull, 8267238348016623759ull}}, {{1634266628669484183ull, 643668730180501597ull, 9210776873875714111ull, 5167023967510389849ull}}, {{6654519304264243132ull, 14639643968007790708ull, 16125157110772030542ull, 6458779959387987311ull}}, {{8318149130330303915ull, 9076182923154962577ull, 15544760370037650274ull, 8073474949234984139ull}}, {{16728058252524909707ull, 10284300345399239514ull, 7409632222059837469ull, 5045921843271865087ull}}, {{11686700778801361326ull, 17467061450176437297ull, 4650354259147408932ull, 6307402304089831359ull}}, {{773317918219537945ull, 3387082739010995006ull, 1201256805506873262ull, 7884252880112289199ull}}, {{14318381754169374928ull, 15951984767164035590ull, 7668314531082877644ull, 4927658050070180749ull}}, {{8674605155856942852ull, 1493236885245492872ull, 14197079182280984960ull, 6159572562587725936ull}}, {{10843256444821178564ull, 1866546106556866090ull, 17746348977851231200ull, 7699465703234657420ull}}, {{11388721296440624507ull, 1166591316598041306ull, 1868096074302243692ull, 4812166064521660888ull}}, {{5012529583696004826ull, 1458239145747551633ull, 2335120092877804615ull, 6015207580652076110ull}}, {{10877347998047393936ull, 15657856987466603253ull, 12142272152952031576ull, 7519009475815095137ull}}, {{9104185507993315162ull, 9786160617166627033ull, 671391067953937879ull, 4699380922384434461ull}}, {{15991917903419031856ull, 7621014753030895887ull, 5450924853369810253ull, 5874226152980543076ull}}, {{15378211360846401916ull, 14137954459716007763ull, 6813656066712262816ull, 7342782691225678845ull}}, {{14611078182630614491ull, 17672443074645009704ull, 13128756101817716424ull, 9178478364032098556ull}}, {{9131923864144134057ull, 11045276921653131065ull, 17428844600490848573ull, 5736548977520061597ull}}, {{16026590848607555476ull, 18418282170493801735ull, 7950997695331397004ull, 7170686221900076997ull}}, {{15421552542332056440ull, 4576108639407700553ull, 14550433137591634160ull, 8963357777375096246ull}}, {{2720941311316453419ull, 2860067899629812846ull, 4482334692567383446ull, 5602098610859435154ull}}, {{12624548676000342582ull, 12798456911392041865ull, 14826290402564005115ull, 7002623263574293942ull}}, {{1945627789718264515ull, 11386385120812664428ull, 9309490966350230586ull, 8753279079467867428ull}}, {{10439389405428691130ull, 11728176718935303171ull, 15041803890823669924ull, 5470799424667417142ull}}, {{8437550738358476009ull, 14660220898669128964ull, 9578882826674811597ull, 6838499280834271428ull}}, {{10546938422948095011ull, 4490218068054247493ull, 11973603533343514497ull, 8548124101042839285ull}}, {{8897679523556253334ull, 14335601338602374443ull, 9789345217553390512ull, 5342577563151774553ull}}, {{6510413386017928763ull, 17919501673252968054ull, 16848367540369126044ull, 6678221953939718191ull}}, {{17361388769377186762ull, 3952633017856658451ull, 16448773407034019652ull, 8347777442424647739ull}}, {{8545024971647047774ull, 11693767673015187340ull, 7974640370182568330ull, 5217360901515404837ull}}, {{10681281214558809718ull, 5393837554414208367ull, 14579986481155598317ull, 6521701126894256046ull}}, {{8739915499771124243ull, 11353982961445148363ull, 9001611064589722088ull, 8152126408617820058ull}}, {{3156604178143258700ull, 7096239350903217727ull, 10237692933795964209ull, 5095079005386137536ull}}, {{17780813277961237087ull, 13481985207056410062ull, 12797116167244955261ull, 6368848756732671920ull}}, {{13002644560596770551ull, 3017423453538348866ull, 15996395209056194077ull, 7961060945915839900ull}}, {{12738338868800369499ull, 4191732667675161993ull, 774374968805345490ull, 4975663091197399938ull}}, {{2087865530718298161ull, 14463037871448728300ull, 10191340747861457670ull, 6219578863996749922ull}}, {{2609831913397872701ull, 8855425302456134567ull, 3515803897972046280ull, 7774473579995937403ull}}, {{8548673973514752294ull, 5534640814035084104ull, 18338278500728386589ull, 4859045987497460876ull}}, {{10685842466893440368ull, 11529987035971243034ull, 4476104052200931620ull, 6073807484371826096ull}}, {{4133931046762024652ull, 14412483794964053793ull, 5595130065251164525ull, 7592259355464782620ull}}, {{14112921950294735168ull, 11313645381066227572ull, 12720328327636753636ull, 4745162097165489137ull}}, {{17641152437868418959ull, 14142056726332784465ull, 2065352354263778333ull, 5931452621456861422ull}}, {{8216382492053359987ull, 3842512852633816870ull, 11805062479684498725ull, 7414315776821076777ull}}, {{523553039105962088ull, 4707413542109829496ull, 460635022161729847ull, 4633947360513172986ull}}, {{654441298882452610ull, 1272580909209898966ull, 9799165814556938117ull, 5792434200641466232ull}}, {{10041423660457841570ull, 6202412154939761611ull, 12248957268196172646ull, 7240542750801832790ull}}, {{7940093557144914059ull, 16976387230529477822ull, 6087824548390439999ull, 9050678438502290988ull}}, {{350872454788183383ull, 17527771046722005495ull, 13028262379598800807ull, 5656674024063931867ull}}, {{14273648623767392940ull, 17298027789975118964ull, 11673641956071113105ull, 7070842530079914834ull}}, {{17842060779709241175ull, 7787476682186734993ull, 5368680408234115574ull, 8838553162599893543ull}}, {{4233758959677193879ull, 255486907939321467ull, 10272954282787404090ull, 5524095726624933464ull}}, {{680512681169104444ull, 9542730671778927642ull, 12841192853484255112ull, 6905119658281166830ull}}, {{10074012888316156363ull, 11928413339723659552ull, 6828119030000543082ull, 8631399572851458538ull}}, {{6296258055197597727ull, 12066944355754675124ull, 8879260412177727330ull, 5394624733032161586ull}}, {{7870322568996997159ull, 5860308407838568097ull, 1875703478367383355ull, 6743280916290201983ull}}, {{14449589229673634353ull, 2713699491370822217ull, 16179687403241392906ull, 8429101145362752478ull}}, {{2113464240904939615ull, 6307748200534151790ull, 5500618608598482662ull, 5268188215851720299ull}}, {{11865202337985950326ull, 17108057287522465545ull, 2264087242320715423ull, 6585235269814650374ull}}, {{996444867200274196ull, 16773385590975694028ull, 12053481089755670087ull, 8231544087268312967ull}}, {{9846150078854947180ull, 17400895022000890623ull, 14450954708738375660ull, 5144715054542695604ull}}, {{7696001580141296071ull, 3304374703791561663ull, 18063693385922969576ull, 6430893818178369505ull}}, {{5008315956749232185ull, 4130468379739452079ull, 8744558677121548258ull, 8038617272722961882ull}}, {{10047726500609351972ull, 7193228755764545453ull, 10077035191628355565ull, 5024135795451851176ull}}, {{17171344144189077869ull, 13603221963133069720ull, 12596293989535444456ull, 6280169744314813970ull}}, {{3017436106526795720ull, 17004027453916337151ull, 6521995450064529762ull, 7850212180393517463ull}}, {{8803426594220329181ull, 15239203177125098623ull, 10993776183931412957ull, 4906382612745948414ull}}, {{6392597224348023572ull, 5213945916124209567ull, 4518848193059490389ull, 6132978265932435518ull}}, {{3379060512007641561ull, 11129118413582649863ull, 14871932278179138794ull, 7666222832415544397ull}}, {{9029441847645857832ull, 11567385026916544068ull, 11600800683075655698ull, 4791389270259715248ull}}, {{11286802309557322290ull, 5235859246790904277ull, 14501000853844569623ull, 5989236587824644060ull}}, {{273444831664489150ull, 1933138040061242443ull, 18126251067305712029ull, 7486545734780805075ull}}, {{16311804084286163383ull, 3514054284251970478ull, 9023063907852376066ull, 4679091084238003172ull}}, {{11166383068502928421ull, 13615939892169738906ull, 11278829884815470082ull, 5848863855297503965ull}}, {{4734606798773884718ull, 7796552828357397825ull, 263479300737173891ull, 7311079819121879957ull}}, {{10529944516894743801ull, 5134005017019359377ull, 4941035144348855268ull, 9138849773902349946ull}}, {{18110430369127684636ull, 12432125172491875418ull, 7699832983645422446ull, 5711781108688968716ull}}, {{13414665924554829987ull, 6316784428760068465ull, 9624791229556778058ull, 7139726385861210895ull}}, {{2933274350411373771ull, 17119352572804861390ull, 7419303018518584668ull, 8924657982326513619ull}}, {{15668354524289272319ull, 1476223321148262560ull, 2331221377360421466ull, 5577911238954071012ull}}, {{1138699081652038783ull, 11068651188290104009ull, 2914026721700526832ull, 6972389048692588765ull}}, {{6035059870492436382ull, 13835813985362630011ull, 8254219420553046444ull, 8715486310865735956ull}}, {{1466069409844078787ull, 17870755777706419565ull, 14382259174700429835ull, 5447178944291084972ull}}, {{6444272780732486388ull, 17726758703705636552ull, 17977823968375537294ull, 6808973680363856215ull}}, {{8055340975915607985ull, 12935076342777269882ull, 17860593942042033714ull, 8511217100454820269ull}}, {{9646274128374642895ull, 12696108732663181580ull, 13468714222989965023ull, 5319510687784262668ull}}, {{12057842660468303618ull, 11258449897401589071ull, 16835892778737456279ull, 6649388359730328335ull}}, {{10460617307157991618ull, 9461376353324598435ull, 16433179954994432445ull, 8311735449662910419ull}}, {{4232042807760050810ull, 8219203230041567974ull, 7964894462657826326ull, 5194834656039319012ull}}, {{14513425546554839320ull, 1050632000697184159ull, 9956118078322282908ull, 6493543320049148765ull}}, {{13530095914766161246ull, 1313290000871480199ull, 17056833616330241539ull, 8116929150061435956ull}}, {{15373838974369932635ull, 16961707315040532788ull, 1437148973351625153ull, 5073080718788397473ull}}, {{770554644252864178ull, 7367076088518502274ull, 6408122235116919346ull, 6341350898485496841ull}}, {{10186565342170856030ull, 18432217147502903650ull, 12621838812323537086ull, 7926688623106871051ull}}, {{10978289357284172923ull, 6908449698761926877ull, 5582806248488516727ull, 4954180389441794407ull}}, {{18334547715032604057ull, 4023876105025020692ull, 2366821792183258005ull, 6192725486802243009ull}}, {{4471440570081203456ull, 9641531149708663770ull, 7570213258656460410ull, 7740906858502803761ull}}, {{7406336374728140064ull, 10637642986995302760ull, 16260598332728757516ull, 4838066786564252350ull}}, {{9257920468410175080ull, 13297053733744128450ull, 11102375879056171087ull, 6047583483205315438ull}}, {{2349028548657943042ull, 12009631148752772659ull, 4654597811965438051ull, 7559479354006644298ull}}, {{17609043907407072065ull, 5200176458756788959ull, 7520809650905786686ull, 4724674596254152686ull}}, {{17399618865831452177ull, 15723592610300762007ull, 177640026777457549ull, 5905843245317690858ull}}, {{17137837563861927318ull, 5819432707593788797ull, 9445422070326597745ull, 7382304056647113572ull}}, {{13016991486627398526ull, 15166360488314587758ull, 15126760830808899398ull, 4613940035404445982ull}}, {{7047867321429472349ull, 9734578573538458890ull, 9685079001656348440ull, 5767425044255557478ull}}, {{18033206188641616244ull, 12168223216923073612ull, 2882976715215659742ull, 7209281305319446848ull}}, {{4094763662092468689ull, 5986906984299066208ull, 3603720894019574678ull, 9011601631649308560ull}}, {{2559227288807792931ull, 17576874920469080092ull, 2252325558762234173ull, 5632251019780817850ull}}, {{3199034111009741163ull, 8136035595304186403ull, 12038778985307568525ull, 7040313774726022312ull}}, {{17833850694044340166ull, 14781730512557620907ull, 15048473731634460656ull, 8800392218407527890ull}}, {{8840313674564018652ull, 9238581570348513067ull, 14016982100698925814ull, 5500245136504704931ull}}, {{6438706074777635411ull, 2324854926080865526ull, 12909541607446269364ull, 6875306420630881164ull}}, {{17271754630326820071ull, 2906068657601081907ull, 16136927009307836705ull, 8594133025788601455ull}}, {{8489003634740568593ull, 13345507957069145952ull, 17003108408458479796ull, 5371333141117875909ull}}, {{10611254543425710741ull, 16681884946336432440ull, 7418827455290936033ull, 6714166426397344887ull}}, {{13264068179282138426ull, 7017298127638376838ull, 4661848300686282138ull, 8392708032996681109ull}}, {{3678356593623948612ull, 8997497348201373428ull, 5219498197142620288ull, 5245442520622925693ull}}, {{4597945742029935765ull, 11246871685251716785ull, 11136058764855663264ull, 6556803150778657116ull}}, {{10359118195964807611ull, 14058589606564645981ull, 13920073456069579080ull, 8196003938473321395ull}}, {{8780291881691698709ull, 8786618504102903738ull, 6394202900829792973ull, 5122502461545825872ull}}, {{1751992815259847578ull, 15594959148556017577ull, 7992753626037241216ull, 6403128076932282340ull}}, {{6801677037502197376ull, 1046954861985470355ull, 9990942032546551521ull, 8003910096165352925ull}}, {{1945205139225179408ull, 12183561834809388732ull, 8550181779555288652ull, 5002443810103345578ull}}, {{2431506424031474260ull, 15229452293511735915ull, 1464355187589335007ull, 6253054762629181973ull}}, {{16874441085321506537ull, 14425129348462281989ull, 6442130002914056663ull, 7816318453286477466ull}}, {{12852368687539635538ull, 15933234870430008099ull, 8638017270248673318ull, 4885199033304048416ull}}, {{11453774840997156518ull, 10693171551182734316ull, 10797521587810841648ull, 6106498791630060520ull}}, {{14317218551246445648ull, 13366464438978417895ull, 13496901984763552060ull, 7633123489537575650ull}}, {{15865790622170110386ull, 17577412311216286992ull, 13047249758904607941ull, 4770702180960984781ull}}, {{1385494204003086367ull, 8136707333738195029ull, 2474004143348596215ull, 5963377726201230977ull}}, {{6343553773431245862ull, 5559198148745355882ull, 7704191197613133173ull, 7454222157751538721ull}}, {{8576407126821916568ull, 5780341852179541378ull, 16344334544576677993ull, 4658888848594711700ull}}, {{1497136871672619902ull, 11837113333651814627ull, 1983674107011295875ull, 5823611060743389626ull}}, {{15706479144872938589ull, 10184705648637380379ull, 11702964670618895652ull, 7279513825929237032ull}}, {{15021412912663785332ull, 12730882060796725474ull, 14628705838273619565ull, 9099392282411546290ull}}, {{14000069088842253737ull, 10262644297211647373ull, 13754627167348400132ull, 5687120176507216431ull}}, {{3665028305770653459ull, 12828305371514559217ull, 12581597940758112261ull, 7108900220634020539ull}}, {{9192971400640704728ull, 2200323659111035309ull, 11115311407520252423ull, 8886125275792525674ull}}, {{8051450134614134407ull, 8292731314585478924ull, 11558755648127545668ull, 5553828297370328546ull}}, {{10064312668267668009ull, 10365914143231848655ull, 5225072523304656277ull, 6942285371712910683ull}}, {{7968704816907197107ull, 17569078697467198723ull, 1919654635703432442ull, 8677856714641138354ull}}, {{2674597501353304240ull, 15592360204344387106ull, 5811470165742033180ull, 5423660446650711471ull}}, {{12566618913546406108ull, 1043706181720932266ull, 2652651688750153572ull, 6779575558313389339ull}}, {{6484901605078231826ull, 1304632727151165333ull, 17150872666219855677ull, 8474469447891736673ull}}, {{6358906512387588844ull, 3121238463683172285ull, 3801766388746327942ull, 5296543404932335421ull}}, {{12560319158911873958ull, 13124920116458741164ull, 9363894004360297831ull, 6620679256165419276ull}}, {{15700398948639842448ull, 11794464127146038551ull, 11704867505450372289ull, 8275849070206774095ull}}, {{16730278370540983386ull, 454011051825192238ull, 14233071218547564537ull, 5172405668879233809ull}}, {{11689475926321453425ull, 5179199833208878202ull, 3956280967902291959ull, 6465507086099042262ull}}, {{5388472871047040973ull, 1862313773083709849ull, 14168723246732640757ull, 8081883857623802827ull}}, {{14897010590472870368ull, 3469789117391012607ull, 6549609019994206521ull, 5051177411014876767ull}}, {{14009577219663700056ull, 8948922415166153663ull, 3575325256565370247ull, 6313971763768595959ull}}, {{12900285506152237166ull, 6574467000530304175ull, 18304214625988876521ull, 7892464704710744948ull}}, {{14980207468986230085ull, 15638256921399909869ull, 2216762104388272017ull, 4932790440444215593ull}}, {{4890201280950623894ull, 5712763096467723625ull, 7382638648912727926ull, 6165988050555269491ull}}, {{10724437619615667771ull, 16364325907439430339ull, 4616612292713522003ull, 7707485063194086864ull}}, {{4396930503046098405ull, 7921860682935950010ull, 2885382682945951252ull, 4817178164496304290ull}}, {{14719535165662398814ull, 9902325853669937512ull, 12830100390537214873ull, 6021472705620380362ull}}, {{18399418957077998518ull, 16989593335514809794ull, 6814253451316742783ull, 7526840882025475453ull}}, {{16111322866601136978ull, 17536024862337837977ull, 6564751416286658191ull, 4704275551265922158ull}}, {{6304095527969257510ull, 17308345059494909568ull, 17429311307213098547ull, 5880344439082402697ull}}, {{7880119409961571888ull, 17023745305941249056ull, 7951581078734209472ull, 7350430548853003372ull}}, {{9850149262451964859ull, 2832937558717009704ull, 9939476348417761841ull, 9188038186066254215ull}}, {{6156343289032478037ull, 13299801020266600825ull, 13129701745402183006ull, 5742523866291408884ull}}, {{12307115129717985451ull, 7401379238478475223ull, 16412127181752728758ull, 7178154832864261105ull}}, {{10772207893720093909ull, 28352011243318221ull, 6680100921908747236ull, 8972693541080326382ull}}, {{9038472942788752645ull, 9241092043881849696ull, 18010121131475130734ull, 5607933463175203988ull}}, {{11298091178485940807ull, 2327993017997536312ull, 4065907340634361802ull, 7009916828969004986ull}}, {{14122613973107426008ull, 12133363309351696198ull, 14305756212647728060ull, 8762396036211256232ull}}, {{4214947714764753351ull, 16806724105199585932ull, 8941097632904830037ull, 5476497522632035145ull}}, {{5268684643455941689ull, 7173347076217318703ull, 15788058059558425451ull, 6845621903290043931ull}}, {{1974169785892539207ull, 4354997826844260475ull, 15123386556020643910ull, 8557027379112554914ull}}, {{17374757180678694669ull, 16556931697059826508ull, 14063802615940290347ull, 5348142111945346821ull}}, {{3271702402138816720ull, 16084478602897395232ull, 3744695214643199222ull, 6685177639931683527ull}}, {{4089628002673520899ull, 10882226216766968232ull, 69182999876611124ull, 8356472049914604409ull}}, {{2556017501670950562ull, 16024763422334130953ull, 11572454420991351712ull, 5222795031196627755ull}}, {{7806707895516076107ull, 1584210204208112075ull, 9853882007811801737ull, 6528493788995784694ull}}, {{5146698850967707229ull, 6591948773687527998ull, 3093980472909976363ull, 8160617236244730868ull}}, {{17051744837136980730ull, 1814124974341011046ull, 11157109832423511035ull, 5100385772652956792ull}}, {{12091309009566450105ull, 16102714273208427520ull, 13946387290529388793ull, 6375482215816195990ull}}, {{15114136261958062631ull, 6293334786228370688ull, 8209612076306960184ull, 7969352769770244988ull}}, {{9446335163723789145ull, 3933334241392731680ull, 14354379584546625923ull, 4980845481106403117ull}}, {{11807918954654736431ull, 304981783313526696ull, 4107916425401118692ull, 6226056851383003897ull}}, {{14759898693318420538ull, 381227229141908370ull, 9746581550178786269ull, 7782571064228754871ull}}, {{13836622701751400741ull, 2544110027427386683ull, 13009142496502823274ull, 4864106915142971794ull}}, {{12684092358761863022ull, 12403509571139009162ull, 7038056083773753284ull, 6080133643928714743ull}}, {{6631743411597552969ull, 15504386963923761453ull, 4185884086289803701ull, 7600167054910893429ull}}, {{6450682641462164558ull, 11996084861666044860ull, 4922020563144821265ull, 4750104409319308393ull}}, {{8063353301827705697ull, 1160048021800392363ull, 10764211722358414486ull, 5937630511649135491ull}}, {{5467505608857244217ull, 10673432064105266262ull, 8843578634520630203ull, 7422038139561419364ull}}, {{17252249060817941348ull, 4365052030852097461ull, 14750608683430169685ull, 4638773837225887102ull}}, {{7730253270740262973ull, 10068001056992509731ull, 9214888817432936298ull, 5798467296532358878ull}}, {{5051130569997940812ull, 3361629284385861356ull, 2295238984936394565ull, 7248084120665448598ull}}, {{6313913212497426015ull, 8813722623909714599ull, 12092420768025269014ull, 9060105150831810747ull}}, {{10863724785451973115ull, 896890621516183720ull, 5251919970802099182ull, 5662565719269881717ull}}, {{13579655981814966394ull, 10344485313750005458ull, 11176585981930011881ull, 7078207149087352146ull}}, {{7751197940413932184ull, 17542292660614894727ull, 4747360440557739043ull, 8847758936359190183ull}}, {{11762027740399789471ull, 8658089903670615252ull, 9884629302989668758ull, 5529849335224493864ull}}, {{14702534675499736839ull, 1599240342733493257ull, 12355786628737085948ull, 6912311669030617330ull}}, {{4543110289092507337ull, 1999050428416866572ull, 6221361249066581627ull, 8640389586288271663ull}}, {{12062815967537592894ull, 17390307582256399271ull, 10805879808307695372ull, 5400243491430169789ull}}, {{10466833940994603213ull, 3291140404110947473ull, 18119035778812007120ull, 6750304364287712236ull}}, {{17695228444670641920ull, 4113925505138684341ull, 4202050649805457284ull, 8437880455359640296ull}}, {{13365360787132845152ull, 11794575477566453521ull, 2626281656128410802ull, 5273675284599775185ull}}, {{2871642928633892728ull, 5519847310103291094ull, 7894538088587901407ull, 6592094105749718981ull}}, {{12812925697647141718ull, 2288123119201725963ull, 14479858629162264663ull, 8240117632187148726ull}}, {{5702235551815769622ull, 8347605977142160583ull, 4438225624799027510ull, 5150073520116967954ull}}, {{2516108421342324123ull, 1211135434572924921ull, 14771154067853560196ull, 6437591900146209942ull}}, {{7756821545105293058ull, 1513919293216156151ull, 9240570547962174437ull, 8046989875182762428ull}}, {{11765542493331890018ull, 3252042567473791546ull, 14998728629331134831ull, 5029368671989226517ull}}, {{5483556079810086714ull, 17900111264624403145ull, 4913352731381754826ull, 6286710839986533147ull}}, {{11466131118189996296ull, 13151767043925728123ull, 1530004895799805629ull, 7858388549983166434ull}}, {{4860488939655053733ull, 10525697411667274029ull, 5567939078302266422ull, 4911492843739479021ull}}, {{10687297192996205070ull, 3933749727729316728ull, 11571609866305220932ull, 6139366054674348776ull}}, {{13359121491245256338ull, 4917187159661645910ull, 14464512332881526165ull, 7674207568342935970ull}}, {{3737764913600897307ull, 5379084984002222646ull, 13652006226478341757ull, 4796379730214334981ull}}, {{13895578178855897442ull, 11335542248430166211ull, 3229949727815763484ull, 5995474662767918727ull}}, {{12757786705142483899ull, 14169427810537707764ull, 17872495215051868067ull, 7494343328459898408ull}}, {{17196988727568828245ull, 6550049372372373400ull, 11170309509407417542ull, 4683964580287436505ull}}, {{3049491835751483690ull, 17410933752320242559ull, 127828831477108215ull, 5854955725359295632ull}}, {{17646922849971518324ull, 17151981171972915294ull, 159786039346385269ull, 7318694656699119540ull}}, {{12835281525609622097ull, 7604918409683980406ull, 199732549182981587ull, 9148368320873899425ull}}, {{3410364935078625907ull, 2447230996838793802ull, 11654047889307833252ull, 5717730200546187140ull}}, {{13486328205703058191ull, 3059038746048492252ull, 14567559861634791565ull, 7147162750682733925ull}}, {{16857910257128822739ull, 8435484450988003219ull, 4374391771761325744ull, 8933953438353417407ull}}, {{8230350901491820260ull, 5272177781867502012ull, 9651523884991910446ull, 5583720898970885879ull}}, {{10287938626864775325ull, 15813594264189153323ull, 7452718837812500153ull, 6979651123713607349ull}}, {{8248237265153581252ull, 5931934774954277942ull, 13927584565693013096ull, 8724563904642009186ull}}, {{543462272293600379ull, 3707459234346423714ull, 13316426371985521089ull, 5452852440401255741ull}}, {{9902699877221776281ull, 9246010061360417546ull, 2810474909699737649ull, 6816065550501569677ull}}, {{3155002809672444544ull, 16169198595127909837ull, 8124779655552059965ull, 8520081938126962096ull}}, {{4277719765258971792ull, 12411592131168637600ull, 5077987284720037478ull, 5325051211329351310ull}}, {{5347149706573714740ull, 6291118127106021192ull, 15570856142754822656ull, 6656314014161689137ull}}, {{6683937133217143425ull, 7863897658882526490ull, 5628512123161364608ull, 8320392517702111422ull}}, {{8789146726688102545ull, 4914936036801579056ull, 17352878132258016592ull, 5200245323563819638ull}}, {{10986433408360128181ull, 6143670046001973820ull, 12467725628467744932ull, 6500306654454774548ull}}, {{13733041760450160226ull, 7679587557502467275ull, 15584657035584681165ull, 8125383318068468185ull}}, {{6277308091067656189ull, 7105585232652735999ull, 2822881619599343872ull, 5078364573792792616ull}}, {{3234949095407182332ull, 8881981540815919999ull, 3528602024499179840ull, 6347955717240990770ull}}, {{17878744424541141627ull, 11102476926019899998ull, 13634124567478750608ull, 7934944646551238462ull}}, {{6562529246910825613ull, 6939048078762437499ull, 3909641836246831226ull, 4959340404094524039ull}}, {{3591475540211144113ull, 17897182135307822682ull, 275366276881151128ull, 6199175505118155049ull}}, {{13712716462118705949ull, 3924733595425226736ull, 4955893864528826815ull, 7748969381397693811ull}}, {{8570447788824191218ull, 9370487524781848566ull, 791590656116822807ull, 4843105863373558632ull}}, {{1489687699175463214ull, 7101423387549922804ull, 989488320146028509ull, 6053882329216948290ull}}, {{1862109623969329018ull, 13488465252864791409ull, 10460232437037311444ull, 7567352911521185362ull}}, {{12693033561049300396ull, 17653662819895270438ull, 11149331291575707556ull, 4729595569700740851ull}}, {{6642919914456849687ull, 3620334451159536432ull, 9324978096042246542ull, 5911994462125926064ull}}, {{8303649893071062109ull, 13748790100804196348ull, 11656222620052808177ull, 7389993077657407580ull}}, {{14413153220024189626ull, 1675464785361540861ull, 16508511174387780919ull, 4618745673535879737ull}}, {{4181383469748073321ull, 15929389036984089789ull, 6800580912702562436ull, 5773432091919849672ull}}, {{9838415355612479555ull, 1464992222520560620ull, 8500726140878203046ull, 7216790114899812090ull}}, {{12298019194515599443ull, 11054612315005476583ull, 1402535639242977999ull, 9020987643624765113ull}}, {{14603791024213331508ull, 13826661724519504720ull, 12405799820595331009ull, 5638117277265478195ull}}, {{18254738780266664385ull, 3448269100367217188ull, 10895563757316775858ull, 7047646596581847744ull}}, {{4371679401623778866ull, 13533708412313797294ull, 13619454696645969822ull, 8809558245727309680ull}}, {{16567357681297025503ull, 3846881739268735404ull, 8512159185403731139ull, 5505973903579568550ull}}, {{2262453027911730263ull, 196916155658531352ull, 1416826944899888116ull, 6882467379474460688ull}}, {{2828066284889662828ull, 246145194573164190ull, 1771033681124860145ull, 8603084224343075860ull}}, {{15602599483338202980ull, 11683055792676697378ull, 10330268087557813398ull, 5376927640214422412ull}}, {{10279877317317977917ull, 5380447703991095915ull, 12912835109447266748ull, 6721159550268028015ull}}, {{8238160628220084492ull, 6725559629988869894ull, 11529357868381695531ull, 8401449437835035019ull}}, {{537164374210164904ull, 1897631759529349732ull, 4900005658524865755ull, 5250905898646896887ull}}, {{671455467762706129ull, 16207097754693850877ull, 1513321054728694289ull, 6563632373308621109ull}}, {{5451005353130770566ull, 6423814138085149884ull, 6503337336838255766ull, 8204540466635776386ull}}, {{12630250382561507412ull, 17849941891585382389ull, 8676271853951297757ull, 5127837791647360241ull}}, {{1952754922919720552ull, 8477369309199564275ull, 15457025835866510101ull, 6409797239559200301ull}}, {{16276001708931814402ull, 15208397654926843247ull, 5486224239550973914ull, 8012246549449000377ull}}, {{17090030095723465858ull, 14116934552756664933ull, 14958105195787828456ull, 5007654093405625235ull}}, {{7527479564372168610ull, 17646168190945831167ull, 14085945476307397666ull, 6259567616757031544ull}}, {{4797663437037822858ull, 12834338201827513151ull, 17607431845384247083ull, 7824459520946289430ull}}, {{9916068675789721143ull, 5715618366928501767ull, 6392958884937766523ull, 4890287200591430894ull}}, {{7783399826309763524ull, 2532836940233239305ull, 17214570643026983962ull, 6112859000739288617ull}}, {{14340935801314592309ull, 12389418212146324939ull, 7683155248501566240ull, 7641073750924110772ull}}, {{6657241866607926241ull, 7743386382591453087ull, 14025344067168254708ull, 4775671094327569232ull}}, {{3709866314832519898ull, 9679232978239316359ull, 17531680083960318385ull, 5969588867909461540ull}}, {{25646875113261968ull, 16710727241226533353ull, 3467856031240846365ull, 7461986084886826926ull}}, {{11545244343014258490ull, 12750047534980277297ull, 16002468074807692690ull, 4663741303054266828ull}}, {{596497373485659401ull, 6714187381870570814ull, 1556341019800064247ull, 5829676628817833536ull}}, {{9968993753711850059ull, 3781048208910825613ull, 1945426274750080309ull, 7287095786022291920ull}}, {{17072928210567200477ull, 9337996279565919920ull, 2431782843437600386ull, 9108869732527864900ull}}, {{10670580131604500298ull, 10447933693156087854ull, 10743236314003276049ull, 5693043582829915562ull}}, {{4114853127650849565ull, 17671603134872497722ull, 4205673355649319253ull, 7116304478537394453ull}}, {{14366938446418337764ull, 8254445863308458440ull, 9868777712989036971ull, 8895380598171743066ull}}, {{8979336529011461103ull, 2853185655354092573ull, 10779672089045536011ull, 5559612873857339416ull}}, {{15835856679691714282ull, 17401540124474779428ull, 13474590111306920013ull, 6949516092321674270ull}}, {{1348076775905091237ull, 7916867100311310574ull, 7619865602278874209ull, 8686895115402092838ull}}, {{14677606040222845735ull, 16477256983763038868ull, 150729982996908476ull, 5429309447126308024ull}}, {{18347007550278557169ull, 2149827155994246969ull, 188412478746135596ull, 6786636808907885030ull}}, {{9098701382566032749ull, 2687283944992808712ull, 9458887635287445303ull, 8483296011134856287ull}}, {{5686688364103770468ull, 8597081493261587301ull, 12829333799695735170ull, 5302060006959285179ull}}, {{11720046473557100989ull, 1522979829722208318ull, 11424981231192281059ull, 6627575008699106474ull}}, {{5426686055091600428ull, 15738782842434924110ull, 5057854502135575515ull, 8284468760873883093ull}}, {{17226736839714413980ull, 7530896267308133616ull, 5467002073048428649ull, 5177792975546176933ull}}, {{3086676975933465859ull, 14025306352562554925ull, 11445438609737923715ull, 6472241219432721166ull}}, {{8470032238344220227ull, 12919946922275805752ull, 5083426225317628836ull, 8090301524290901458ull}}, {{5293770148965137642ull, 17298338863277154403ull, 7788827409250905926ull, 5056438452681813411ull}}, {{2005526667779034149ull, 12399551542241667196ull, 5124348243136244504ull, 6320548065852266764ull}}, {{2506908334723792686ull, 15499439427802083995ull, 6405435303920305630ull, 7900685082315333455ull}}, {{17707718773698228093ull, 5075463623948914592ull, 10920926092591272875ull, 4937928176447083409ull}}, {{3687904393413233500ull, 1732643511508755337ull, 18262843634166478998ull, 6172410220558854261ull}}, {{9221566510193929779ull, 11389176426240719979ull, 8993496487425935035ull, 7715512775698567827ull}}, {{3457636059657512160ull, 4812392257186756035ull, 3315092295427515445ull, 4822195484811604892ull}}, {{18157103129854053912ull, 10627176339910832947ull, 4143865369284394306ull, 6027744356014506115ull}}, {{18084692893890179485ull, 4060598388033765376ull, 568145693178104979ull, 7534680445018132644ull}}, {{11302933058681362179ull, 232030983307409408ull, 9578463095091091420ull, 4709175278136332902ull}}, {{14128666323351702723ull, 290038729134261760ull, 2749706832009088467ull, 5886469097670416128ull}}, {{17660832904189628404ull, 14197606466699990912ull, 3437133540011360583ull, 7358086372088020160ull}}, {{3629297056527483889ull, 13135322064947600737ull, 4296416925014200729ull, 9197607965110025200ull}}, {{13797525706398147191ull, 1292047262951168604ull, 2685260578133875456ull, 5748504978193765750ull}}, {{17246907132997683988ull, 1615059078688960755ull, 12579947759522120128ull, 7185631222742207187ull}}, {{16946947897819717081ull, 2018823848361200944ull, 11113248680975262256ull, 8982039028427758984ull}}, {{10591842436137323176ull, 1261764905225750590ull, 6945780425609538910ull, 5613774392767349365ull}}, {{4016431008316878162ull, 10800578168386964046ull, 13293911550439311541ull, 7017217990959186706ull}}, {{14243910797250873510ull, 18112408728911092961ull, 7394017401194363618ull, 8771522488698983383ull}}, {{1984915220640714088ull, 15931941473996821005ull, 11538789903387559117ull, 5482201555436864614ull}}, {{7092830044228280514ull, 6079868787213862544ull, 5200115342379673089ull, 6852751944296080768ull}}, {{8866037555285350642ull, 12211522002444716084ull, 6500144177974591361ull, 8565939930370100960ull}}, {{14764645508908119959ull, 714672223886865696ull, 4062590111234119601ull, 5353712456481313100ull}}, {{9062812425598333ull, 5505026298285970025ull, 5078237639042649501ull, 6692140570601641375ull}}, {{4623014533959385820ull, 11492968891284850435ull, 1736111030375923972ull, 8365175713252051719ull}}, {{583541074510922186ull, 16406477593907807330ull, 8002598421626034338ull, 5228234820782532324ull}}, {{9952798379993428540ull, 11284724955529983354ull, 10003248027032542923ull, 6535293525978165405ull}}, {{3217625938137009867ull, 9494220175985091289ull, 17115746052218066558ull, 8169116907472706756ull}}, {{13540231257404100927ull, 1322201591563294151ull, 1473969245781515791ull, 5105698067170441723ull}}, {{12313603053327738255ull, 15487810044736281401ull, 15677519612509058450ull, 6382122583963052153ull}}, {{1556945761377509106ull, 10136390519065575944ull, 5761841460354159351ull, 7977653229953815192ull}}, {{973091100860943192ull, 13252773102057066821ull, 3601150912721349594ull, 4986033268721134495ull}}, {{5828049894503566893ull, 7342594340716557718ull, 18336496696183850705ull, 6232541585901418118ull}}, {{16508434404984234425ull, 13789928944323085051ull, 13697248833375037573ull, 7790676982376772648ull}}, {{8011928493901452564ull, 10924548599415622109ull, 8560780520859398483ull, 4869173113985482905ull}}, {{14626596635804203608ull, 9043999730842139732ull, 15312661669501636008ull, 6086466392481853631ull}}, {{18283245794755254510ull, 11304999663552674665ull, 14529141068449657106ull, 7608082990602317039ull}}, {{4509499594080952213ull, 11677310808147809570ull, 15998242195422117547ull, 4755051869126448149ull}}, {{14860246529455966074ull, 9984952491757374058ull, 6162744688995483222ull, 5943814836408060187ull}}, {{9351936124965181785ull, 3257818577841941765ull, 3091744842816966124ull, 7429768545510075234ull}}, {{8150803087316932568ull, 11259508648005989411ull, 6544026545187991731ull, 4643605340943797021ull}}, {{5576817840718777806ull, 9462699791580098860ull, 12791719199912377568ull, 5804506676179746276ull}}, {{6971022300898472257ull, 11828374739475123575ull, 15989648999890471960ull, 7255633345224682845ull}}, {{4102091857695702417ull, 14785468424343904469ull, 6152003194580926238ull, 9069541681530853557ull}}, {{4869650420273507963ull, 4629231746787552389ull, 6150845005826772851ull, 5668463550956783473ull}}, {{10698749043769272857ull, 1174853665057052582ull, 12300242275710853968ull, 7085579438695979341ull}}, {{4150064267856815263ull, 1468567081321315728ull, 1540244789356403748ull, 8856974298369974177ull}}, {{2593790167410509540ull, 10141226462680598138ull, 12491868039416222102ull, 5535608936481233860ull}}, {{12465609746117912733ull, 3453161041495971864ull, 15614835049270277628ull, 6919511170601542325ull}}, {{15582012182647390916ull, 4316451301869964830ull, 5683485756305683323ull, 8649388963251927907ull}}, {{5127071595727231419ull, 391939054455034067ull, 1246335588477358125ull, 5405868102032454942ull}}, {{1797153476231651369ull, 5101609836496180488ull, 10781291522451473464ull, 6757335127540568677ull}}, {{2246441845289564211ull, 6377012295620225610ull, 18088300421491729734ull, 8446668909425710846ull}}, {{6015712171733365536ull, 17820690740044804718ull, 6693501745004943179ull, 5279168068391069279ull}}, {{16743012251521482728ull, 17664177406628617993ull, 3755191162828791070ull, 6598960085488836599ull}}, {{7093707259119689698ull, 12856849721430996684ull, 82302935108600934ull, 8248700106861045749ull}}, {{13656939073804581869ull, 3423845057466985023ull, 2357282343656569536ull, 5155437566788153593ull}}, {{12459487823828339433ull, 4279806321833731279ull, 7558288947998099824ull, 6444296958485191991ull}}, {{10962673761358036387ull, 5349757902292164099ull, 4836175166570236876ull, 8055371198106489989ull}}, {{4545828091635078790ull, 12566970725787378370ull, 5328452488320091999ull, 5034606998816556243ull}}, {{14905657151398624295ull, 11097027388806835058ull, 2048879591972727095ull, 6293258748520695304ull}}, {{9408699402393504561ull, 9259598217581155919ull, 2561099489965908869ull, 7866573435650869130ull}}, {{12797966154137022207ull, 8093091895201916401ull, 6212373199656080947ull, 4916608397281793206ull}}, {{2162399637389114046ull, 5504678850575007598ull, 16988838536424876992ull, 6145760496602241507ull}}, {{11926371583591168366ull, 6880848563218759497ull, 16624362152103708336ull, 7682200620752801884ull}}, {{536453212103398373ull, 4300530352011724686ull, 1166854308210041902ull, 4801375387970501178ull}}, {{9893938551984023774ull, 14599034976869431665ull, 10681939922117328185ull, 6001719234963126472ull}}, {{16979109208407417621ull, 4413735665804625869ull, 13352424902646660232ull, 7502149043703908090ull}}, {{12917786264468329965ull, 2758584791127891168ull, 12956951582581550549ull, 4688843152314942556ull}}, {{16147232830585412457ull, 8059917007337251864ull, 16196189478226938186ull, 5861053940393678195ull}}, {{1737296964522213955ull, 851524222316789023ull, 15633550829356284829ull, 7326317425492097744ull}}, {{16006679260934931155ull, 5676091296323374182ull, 1095194462985804420ull, 9157896781865122181ull}}, {{5392488519656944068ull, 12770929097056884672ull, 2990339548579821714ull, 5723685488665701363ull}}, {{6740610649571180085ull, 6740289334466330032ull, 17572982491006940855ull, 7154606860832126703ull}}, {{8425763311963975106ull, 3813675649655524636ull, 17354542095331288165ull, 8943258576040158379ull}}, {{14489474106832260250ull, 4689390290248396849ull, 8540745800368361151ull, 5589536610025098987ull}}, {{4276784578258161600ull, 1250051844383108158ull, 6064246232033063535ull, 6986920762531373734ull}}, {{14569352759677477808ull, 15397622860761048909ull, 16803679826896105226ull, 8733650953164217167ull}}, {{11411688484012117582ull, 14235200306403043472ull, 17419828919451147622ull, 5458531845727635729ull}}, {{14264610605015146977ull, 8570628346149028532ull, 7939728094031770816ull, 6823164807159544662ull}}, {{17830763256268933722ull, 10713285432686285665ull, 701288080684937712ull, 8528956008949430828ull}}, {{4226698007527001720ull, 6695803395428928541ull, 9661677087282861878ull, 5330597505593394267ull}}, {{9895058527836140054ull, 17593126281140936484ull, 7465410340676189443ull, 6663246881991742834ull}}, {{12368823159795175068ull, 17379721832998782701ull, 108390888990460996ull, 8329058602489678543ull}}, {{10036357484085678369ull, 1638954108769463380ull, 6985273333260119979ull, 5205661626556049089ull}}, {{12545446855107097962ull, 15883750691243992937ull, 13343277685002537877ull, 6507077033195061361ull}}, {{1846750513601708740ull, 6019630308772827460ull, 2844039050971008635ull, 8133846291493826702ull}}, {{10377591107855843771ull, 1456425933769323210ull, 15612582462139044109ull, 5083653932183641688ull}}, {{3748616847965028905ull, 6432218435639041917ull, 1068984003964253520ull, 6354567415229552111ull}}, {{9297457078383674035ull, 8040273044548802396ull, 15171288060237480612ull, 7943209269036940138ull}}, {{15034282710844572080ull, 14248542689697777305ull, 14093741056075813286ull, 4964505793148087586ull}}, {{4957795333273551388ull, 8587306325267445824ull, 8393804283239990800ull, 6205632241435109483ull}}, {{6197244166591939235ull, 10734132906584307280ull, 5880569335622600596ull, 7757040301793886854ull}}, {{3873277604119962022ull, 15932205103469967858ull, 17510413890046289084ull, 4848150188621179283ull}}, {{14064969042004728336ull, 1468512305627908206ull, 17276331344130473452ull, 6060187735776474104ull}}, {{8357839265651134611ull, 1835640382034885258ull, 3148670106453540199ull, 7575234669720592631ull}}, {{9835335559459347036ull, 8064804266412885142ull, 8885447844174544480ull, 4734521668575370394ull}}, {{3070797412469407987ull, 10081005333016106428ull, 1883437768363404792ull, 5918152085719212993ull}}, {{3838496765586759984ull, 12601256666270133035ull, 6965983228881643894ull, 7397690107149016241ull}}, {{93217469278031038ull, 3264099397991445243ull, 15882954564119497194ull, 4623556316968135150ull}}, {{13951579891879702510ull, 13303496284344082361ull, 10630321168294595684ull, 5779445396210168938ull}}, {{3604416809567464425ull, 16629370355430102952ull, 4064529423513468797ull, 7224306745262711173ull}}, {{4505521011959330531ull, 6951654889005464978ull, 9692347797819223901ull, 9030383431578388966ull}}, {{7427636650901969486ull, 6650627314842109563ull, 1446031355209627034ull, 5643989644736493104ull}}, {{4672859795200073953ull, 17536656180407412762ull, 1807539194012033792ull, 7054987055920616380ull}}, {{15064446780854868250ull, 3474076151799714336ull, 2259423992515042241ull, 8818733819900770475ull}}, {{9415279238034292656ull, 13700512640943291220ull, 17553041059817759064ull, 5511708637437981546ull}}, {{11769099047542865820ull, 17125640801179114025ull, 12717929287917423022ull, 6889635796797476933ull}}, {{876315754146418563ull, 12183678964619116724ull, 2062353554614615066ull, 8612044745996846167ull}}, {{9771069383196287410ull, 12226485371314335856ull, 8206499999275216272ull, 5382527966248028854ull}}, {{12213836728995359262ull, 15283106714142919820ull, 1034752962239244532ull, 6728159957810036068ull}}, {{15267295911244199078ull, 657139318969098159ull, 1293441202799055666ull, 8410199947262545085ull}}, {{16459588972168706280ull, 5022398092783074253ull, 3114243760963103743ull, 5256374967039090678ull}}, {{6739428159928719138ull, 1666311597551454913ull, 13116176738058655487ull, 6570468708798863347ull}}, {{13035971218338286826ull, 15917947552221482353ull, 11783534904145931454ull, 8213085885998579184ull}}, {{1229952983820347410ull, 5337031201711038567ull, 7364709315091207159ull, 5133178678749111990ull}}, {{15372499285057597975ull, 2059602983711410304ull, 18429258680718784757ull, 6416473348436389987ull}}, {{768880032612445853ull, 7186189748066650785ull, 18424887332471093042ull, 8020591685545487484ull}}, {{12009765066451248418ull, 9103054610969044644ull, 2292182545939657343ull, 5012869803465929678ull}}, {{15012206333064060522ull, 6767132245283917901ull, 12088600219279347487ull, 6266087254332412097ull}}, {{4930199861047911941ull, 3847229288177509473ull, 1275692218817020647ull, 7832609067915515122ull}}, {{14610589959223414723ull, 9322047332752025276ull, 5408993655188025808ull, 4895380667447196951ull}}, {{18263237449029268404ull, 11652559165940031595ull, 2149556050557644356ull, 6119225834308996189ull}}, {{18217360792859197601ull, 14565698957425039494ull, 7298631081624443349ull, 7649032292886245236ull}}, {{6774164477109610597ull, 11409404857604343636ull, 13785016462870052901ull, 4780645183053903272ull}}, {{8467705596387013246ull, 426698016723265833ull, 17231270578587566127ull, 5975806478817379090ull}}, {{15196318013911154461ull, 14368430576186246003ull, 12315716186379681850ull, 7469758098521723863ull}}, {{7191855749480777586ull, 13591955128543791656ull, 14614851644128383012ull, 4668598811576077414ull}}, {{8989819686850971983ull, 16989943910679739570ull, 9045192518305702957ull, 5835748514470096768ull}}, {{2013902571708939170ull, 7402371833067510751ull, 11306490647882128697ull, 7294685643087620960ull}}, {{16352436269918337675ull, 13864650809761776342ull, 14133113309852660871ull, 9118357053859526200ull}}, {{5608586650271573143ull, 15582935783742192070ull, 8833195818657913044ull, 5698973158662203875ull}}, {{16234105349694242237ull, 1031925655968188471ull, 6429808754895003402ull, 7123716448327754844ull}}, {{15680945668690414892ull, 10513279106815011397ull, 8037260943618754252ull, 8904645560409693555ull}}, {{12106434052145203259ull, 15794171478614157931ull, 2717445080548027455ull, 5565403475256058472ull}}, {{10521356546754116170ull, 15131028329840309510ull, 3396806350685034319ull, 6956754344070073090ull}}, {{3928323646587869405ull, 14302099393872998984ull, 13469379975211068707ull, 8695942930087591362ull}}, {{2455202279117418378ull, 6632969111956930413ull, 13030048502934305846ull, 5434964331304744601ull}}, {{7680688867324160876ull, 17514583426800938824ull, 2452502573385718595ull, 6793705414130930752ull}}, {{9600861084155201095ull, 17281543265073785626ull, 3065628216732148244ull, 8492131767663663440ull}}, {{10612224196024388589ull, 1577592503816340208ull, 1916017635457592653ull, 5307582354789789650ull}}, {{13265280245030485736ull, 6583676648197813164ull, 11618394081176766624ull, 6634477943487237062ull}}, {{16581600306288107170ull, 8229595810247266455ull, 5299620564616182472ull, 8293097429359046328ull}}, {{17281029219071148837ull, 5143497381404541534ull, 3312262852885114045ull, 5183185893349403955ull}}, {{12377914486984160238ull, 11041057745183064822ull, 17975386621388556268ull, 6478982366686754943ull}}, {{6249021071875424490ull, 13801322181478831028ull, 17857547258308307431ull, 8098727958358443679ull}}, {{13129010206776916114ull, 15543355391065351248ull, 18078496064083774000ull, 5061704973974027299ull}}, {{16411262758471145143ull, 982450165122137444ull, 17986434061677329597ull, 6327131217467534124ull}}, {{2067334374379379813ull, 5839748724830059710ull, 4036298503387110380ull, 7908914021834417656ull}}, {{15127142039269276095ull, 12873214989873563126ull, 2522686564616943987ull, 4943071263646511035ull}}, {{9685555512231819311ull, 11479832718914566004ull, 16988416261053343696ull, 6178839079558138793ull}}, {{12106944390289774138ull, 14349790898643207505ull, 7400462271034515908ull, 7723548849447673492ull}}, {{649311216290026981ull, 18191991348506780499ull, 13848660956251348250ull, 4827218030904795932ull}}, {{14646697075644697438ull, 13516617148778699815ull, 17310826195314185313ull, 6034022538630994915ull}}, {{13696685326128483893ull, 3060713380691211057ull, 17026846725715343738ull, 7542528173288743644ull}}, {{1642899301189220577ull, 6524631881359394815ull, 1418407166717314028ull, 4714080108305464778ull}}, {{15888682181768689433ull, 8155789851699243518ull, 10996380995251418343ull, 5892600135381830972ull}}, {{10637480690356085984ull, 5583051296196666494ull, 13745476244064272929ull, 7365750169227288715ull}}, {{4073478826090331671ull, 11590500138673221022ull, 12570159286652953257ull, 9207187711534110894ull}}, {{16380982321588621007ull, 326533559029681282ull, 3244663535730707882ull, 5754492319708819309ull}}, {{11252855865131000450ull, 9631538985641877411ull, 8667515438090772756ull, 7193115399636024136ull}}, {{9454383812986362659ull, 12039423732052346764ull, 10834394297613465945ull, 8991394249545030170ull}}, {{15132361919971252470ull, 607110804891634871ull, 11383182454435804120ull, 5619621405965643856ull}}, {{14303766381536677683ull, 758888506114543589ull, 14228978068044755150ull, 7024526757457054820ull}}, {{4044649921638683392ull, 10171982669497955295ull, 17786222585055943937ull, 8780658446821318525ull}}, {{9445435228665258976ull, 17886704214504691819ull, 13422232124873658912ull, 5487911529263324078ull}}, {{7195108017404185816ull, 3911636194421313158ull, 7554418119237297833ull, 6859889411579155098ull}}, {{18217257058610008078ull, 9501231261454029351ull, 219650612191846483ull, 8574861764473943873ull}}, {{18303314689272336905ull, 3632426529195074392ull, 11666496678688373812ull, 5359288602796214920ull}}, {{4432399287880869515ull, 4540533161493842991ull, 14583120848360467265ull, 6699110753495268650ull}}, {{928813091423698990ull, 10287352470294691643ull, 9005529023595808273ull, 8373888441869085813ull}}, {{16721409246635669533ull, 17958810340002652036ull, 7934298648961074122ull, 5233680276168178633ull}}, {{2455017484585035300ull, 13225140888148539238ull, 14529559329628730557ull, 6542100345210223291ull}}, {{12292143892586069933ull, 2696368054903510335ull, 13550263143608525293ull, 8177625431512779114ull}}, {{14600118960507375564ull, 3991073043528387911ull, 13080600483182716212ull, 5111015894695486946ull}}, {{13638462682206831551ull, 4988841304410484889ull, 7127378567123619457ull, 6388769868369358683ull}}, {{3213020297476375727ull, 10847737648940494016ull, 4297537190477136417ull, 7985962335461698354ull}}, {{2008137685922734829ull, 18309051076656278520ull, 7297646762475598164ull, 4991226459663561471ull}}, {{2510172107403418537ull, 4439569772110796534ull, 4510372434667109802ull, 6239033074579451839ull}}, {{12361087171109048979ull, 14772834251993271475ull, 1026279524906499348ull, 7798791343224314799ull}}, {{5419836472729461660ull, 9649370641018864ull, 7558953730707643949ull, 4874244589515196749ull}}, {{6774795590911827075ull, 4623747731728661484ull, 14060378181811942840ull, 6092805736893995936ull}}, {{8468494488639783843ull, 5779684664660826855ull, 17575472727264928550ull, 7616007171117494920ull}}, {{12210338083040946758ull, 17447360970695180496ull, 10984670454540580343ull, 4760004481948434325ull}}, {{15262922603801183448ull, 17197515194941587716ull, 18342524086603113333ull, 5950005602435542906ull}}, {{631909181041927693ull, 7661835938394820934ull, 13704783071399115859ull, 7437507003044428633ull}}, {{14230001293433368521ull, 2482804452283069131ull, 1647960391983365556ull, 4648441876902767896ull}}, {{13175815598364322747ull, 3103505565353836414ull, 2059950489979206945ull, 5810552346128459870ull}}, {{7246397461100627625ull, 8491067975119683422ull, 11798310149328784489ull, 7263190432660574837ull}}, {{18281368863230560339ull, 15225520987326992181ull, 912829631378816899ull, 9078988040825718547ull}}, {{13731698548732794164ull, 7210107607865676161ull, 16711419584107618226ull, 5674367525516074091ull}}, {{3329565130633828993ull, 18236006546686871010ull, 16277588461707134878ull, 7092959406895092614ull}}, {{13385328450147062049ull, 13571636146503812954ull, 11123613540279142790ull, 8866199258618865768ull}}, {{12977516299769301685ull, 3870586573137495192ull, 6952258462674464244ull, 5541374536636791105ull}}, {{16221895374711627106ull, 4838233216421868990ull, 13302009096770468209ull, 6926718170795988881ull}}, {{11053997181534758074ull, 10659477538954724142ull, 2792453315680921549ull, 8658397713494986102ull}}, {{2297062220031835893ull, 8968016471060396541ull, 15580341377582739680ull, 5411498570934366313ull}}, {{7483013793467182770ull, 11210020588825495676ull, 5640368666696260888ull, 6764373213667957892ull}}, {{9353767241833978462ull, 14012525736031869595ull, 7050460833370326110ull, 8455466517084947365ull}}, {{3540261516932542587ull, 4146142566592530593ull, 6712381030070147771ull, 5284666573178092103ull}}, {{9037012914593066138ull, 570992189813275337ull, 3778790269160296810ull, 6605833216472615129ull}}, {{15907952161668720576ull, 9937112274121369979ull, 9335173854877758916ull, 8257291520590768911ull}}, {{7636627091829256408ull, 15434067208180632045ull, 12752012686939681178ull, 5160807200369230569ull}}, {{14157469883213958414ull, 10069211973371014248ull, 2104957803392437761ull, 6451009000461538212ull}}, {{17696837354017448017ull, 17198200985141155714ull, 2631197254240547201ull, 8063761250576922765ull}}, {{15672209364688292915ull, 3831346588072140465ull, 3950341293114035953ull, 5039850781610576728ull}}, {{5755203650578202432ull, 9400869253517563486ull, 4937926616392544941ull, 6299813477013220910ull}}, {{16417376600077528847ull, 16362772585324342261ull, 15395780307345456984ull, 7874766846266526137ull}}, {{12566703384262149482ull, 10226732865827713913ull, 2704833664449828759ull, 4921729278916578836ull}}, {{1873321175045523140ull, 8171730063857254488ull, 3381042080562285949ull, 6152161598645723545ull}}, {{2341651468806903925ull, 14826348598248956014ull, 8837988619130245340ull, 7690201998307154431ull}}, {{15298590223286478665ull, 43095837050821700ull, 12441271914597485194ull, 4806376248941971519ull}}, {{676493705398546716ull, 9277241833168302934ull, 10939903874819468588ull, 6007970311177464399ull}}, {{10068989168602959202ull, 11596552291460378667ull, 9063193825096947831ull, 7509962888971830499ull}}, {{3987275221163155550ull, 14165374209803818523ull, 3358653131471898442ull, 4693726805607394062ull}}, {{372408008026556533ull, 8483345725399997346ull, 13421688451194648861ull, 5867158507009242577ull}}, {{9688882046887971474ull, 15215868175177384586ull, 2942052508711147364ull, 7333948133761553222ull}}, {{2887730521755188535ull, 573091145262179117ull, 12900937672743710014ull, 9167435167201941527ull}}, {{4110674585310686786ull, 14193240021071025660ull, 14980615073105900614ull, 5729646979501213454ull}}, {{5138343231638358483ull, 8518177989484006267ull, 9502396804527599960ull, 7162058724376516818ull}}, {{1811243021120560199ull, 10647722486855007834ull, 2654623968804724142ull, 8952573405470646023ull}}, {{5743712906627738029ull, 2043140535856991992ull, 8576669008144034445ull, 5595358378419153764ull}}, {{7179641133284672536ull, 7165611688248627894ull, 10720836260180043056ull, 6994197973023942205ull}}, {{18197923453460616478ull, 8957014610310784867ull, 18012731343652441724ull, 8742747466279927756ull}}, {{9067859149199191347ull, 14821506168299016350ull, 2034585052928000269ull, 5464217166424954848ull}}, {{2111451899644213375ull, 4691824655091606726ull, 2543231316160000337ull, 6830271458031193560ull}}, {{11862686911410042527ull, 10476466837291896311ull, 3179039145200000421ull, 8537839322538991950ull}}, {{14331708347272358436ull, 8853634782521129146ull, 15821957521032163975ull, 5336149576586869968ull}}, {{8691263397235672236ull, 6455357459724023529ull, 1330702827580653353ull, 6670186970733587461ull}}, {{15475765264971978199ull, 12680882843082417315ull, 6275064552903204595ull, 8337733713416984326ull}}, {{7366510281393792423ull, 5619708767712816870ull, 17756973400846666584ull, 5211083570885615203ull}}, {{18431509888597016336ull, 7024635959641021087ull, 17584530732630945326ull, 6513854463607019004ull}}, {{18427701342318882516ull, 18004166986406052167ull, 3533919342079130041ull, 8142318079508773756ull}}, {{18434842366590383429ull, 4335075338862700748ull, 11432071625654232084ull, 5088948799692983597ull}}, {{4596808884528427670ull, 5418844173578375936ull, 455031476785626393ull, 6361185999616229497ull}}, {{5746011105660534587ull, 11385241235400357824ull, 5180475364409420895ull, 7951482499520286871ull}}, {{3591256941037834117ull, 14033304799766305496ull, 10155326130396969915ull, 4969676562200179294ull}}, {{4489071176297292646ull, 12929944981280493966ull, 3470785626141436586ull, 6212095702750224118ull}}, {{14834711007226391616ull, 6939059189745841649ull, 13561854069531571541ull, 7765119628437780147ull}}, {{2354165351875412904ull, 6642755002804844983ull, 6170315784243538261ull, 4853199767773612592ull}}, {{16777764745126429842ull, 12915129771933444132ull, 7712894730304422826ull, 6066499709717015740ull}}, {{2525461857698485686ull, 6920540178062029358ull, 9641118412880528533ull, 7583124637146269675ull}}, {{15413471716343717266ull, 6631180620502462300ull, 3719855998836636381ull, 4739452898216418547ull}}, {{820095571720094967ull, 12900661794055465780ull, 38133980118407572ull, 5924316122770523184ull}}, {{1025119464650118708ull, 16125827242569332225ull, 47667475148009465ull, 7405395153463153980ull}}, {{12169914711474793953ull, 3161112998964750784ull, 9253164208822281724ull, 4628371970914471237ull}}, {{15212393389343492441ull, 3951391248705938480ull, 16178141279455240059ull, 5785464963643089046ull}}, {{568747662969813935ull, 327553042455035197ull, 10999304562464274266ull, 7231831204553861308ull}}, {{5322620597139655322ull, 9632813339923569804ull, 13749130703080342832ull, 9039789005692326635ull}}, {{12550009910067060385ull, 6020508337452231127ull, 6287363680211520318ull, 5649868128557704147ull}}, {{11075826369156437577ull, 16749007458670064717ull, 3247518581837012493ull, 7062335160697130184ull}}, {{9724906163383259ull, 7101201268055417185ull, 4059398227296265617ull, 8827918950871412730ull}}, {{11535293112420584297ull, 15967465838603105500ull, 7148809910487553914ull, 5517449344294632956ull}}, {{14419116390525730371ull, 10735960261399106067ull, 8936012388109442393ull, 6896811680368291195ull}}, {{13412209469729775060ull, 18031636345176270488ull, 6558329466709415087ull, 8621014600460363994ull}}, {{8382630918581109413ull, 18187301743376250911ull, 8710641935120772333ull, 5388134125287727496ull}}, {{5866602629798998862ull, 8899069123938149927ull, 10888302418900965417ull, 6735167656609659370ull}}, {{2721567268821360673ull, 15735522423350075313ull, 4387005986771430963ull, 8418959570762074213ull}}, {{13230194589081820181ull, 7528858505380103118ull, 5047721750945838304ull, 5261849731726296383ull}}, {{7314371199497499418ull, 9411073131725128898ull, 1697966170254909976ull, 6577312164657870479ull}}, {{18366336036226650080ull, 11763841414656411122ull, 15957515768100801182ull, 8221640205822338098ull}}, {{16090646041069044204ull, 2740714865732869047ull, 14585133373490388643ull, 5138525128638961311ull}}, {{15501621532908917351ull, 17260951637448250021ull, 13619730698435597899ull, 6423156410798701639ull}}, {{5541968860853982977ull, 16964503528382924623ull, 12412977354617109470ull, 8028945513498377049ull}}, {{10381259565674821217ull, 5991128686811939985ull, 840581818994611563ull, 5018090945936485656ull}}, {{17588260475520914425ull, 2877224840087537077ull, 1050727273743264454ull, 6272613682420607070ull}}, {{8150267539118979319ull, 12819903086964197155ull, 10536781129033856375ull, 7840767103025758837ull}}, {{2788074202735668122ull, 14929968456993705078ull, 8891331214859854186ull, 4900479439391099273ull}}, {{12708464790274360961ull, 9439088534387355539ull, 15725850037002205637ull, 6125599299238874091ull}}, {{11273894969415563297ull, 16410546686411582328ull, 15045626527825369142ull, 7656999124048592614ull}}, {{7046184355884727061ull, 5644905660579851051ull, 4791830561463467810ull, 4785624452530370384ull}}, {{4196044426428520922ull, 16279504112579589622ull, 5989788201829334762ull, 5982030565662962980ull}}, {{14468427569890426960ull, 11126008103869711219ull, 7487235252286668453ull, 7477538207078703725ull}}, {{6736924221967822898ull, 9259598074132263464ull, 6985365041892861735ull, 4673461379424189828ull}}, {{8421155277459778623ull, 6962811574237941426ull, 8731706302366077169ull, 5841826724280237285ull}}, {{1303072059969947470ull, 13315200486224814687ull, 15526318896384984365ull, 7302283405350296606ull}}, {{15463898130244598050ull, 2808942552498854646ull, 10184526583626454649ull, 9127854256687870758ull}}, {{5053250312975485877ull, 13284804141380253914ull, 1753643096339146251ull, 5704908910429919224ull}}, {{15539934928074133155ull, 11994319158297929488ull, 2192053870423932814ull, 7131136138037399030ull}}, {{978174586383114827ull, 5769526911017636053ull, 11963439374884691826ull, 8913920172546748787ull}}, {{2917202125703140719ull, 8217640337813410437ull, 5171306600089238439ull, 5571200107841717992ull}}, {{8258188675556313803ull, 5660364403839375142ull, 6464133250111548049ull, 6964000134802147490ull}}, {{1099363807590616445ull, 11687141523226606832ull, 17303538599494210869ull, 8705000168502684362ull}}, {{687102379744135279ull, 9610306461230323222ull, 15426397643111269697ull, 5440625105314177726ull}}, {{10082250011534944906ull, 16624569094965291931ull, 10059625017034311313ull, 6800781381642722158ull}}, {{7991126495991293228ull, 6945653313424451202ull, 3351159234438113334ull, 8500976727053402698ull}}, {{9606140078421946172ull, 18176091376172445713ull, 6706160539951208737ull, 5313110454408376686ull}}, {{16619361116454820619ull, 8885056164933393429ull, 17606072711793786730ull, 6641388068010470857ull}}, {{6939143340286362061ull, 1882948169311965979ull, 8172532834460069701ull, 8301735085013088572ull}}, {{2031121578465282337ull, 3482685615033672689ull, 14331205058392319371ull, 5188584428133180357ull}}, {{7150587991508990825ull, 18188415074074254573ull, 4078948267708235501ull, 6485730535166475447ull}}, {{13549921007813626435ull, 8900460787310654504ull, 486999316207906473ull, 8107163168958094309ull}}, {{8468700629883516522ull, 17092003038137628825ull, 2610217581843635497ull, 5066976980598808943ull}}, {{15197561805781783556ull, 7529945742389872319ull, 17097830032586708084ull, 6333721225748511178ull}}, {{14385266238799841541ull, 9412432177987340399ull, 12148915503878609297ull, 7917151532185638973ull}}, {{15908320426890982819ull, 17411985157310557509ull, 9898915199137824762ull, 4948219707616024358ull}}, {{6050342478331564812ull, 12541609409783421079ull, 3150271962067505145ull, 6185274634520030448ull}}, {{2951242079487068111ull, 1841953706947112637ull, 3937839952584381432ull, 7731593293150038060ull}}, {{4150369308893111522ull, 1151221066841945398ull, 11684522007220014203ull, 4832245808218773787ull}}, {{14411333672971165210ull, 15274084388834595459ull, 9993966490597629849ull, 6040307260273467234ull}}, {{13402481072786568608ull, 5257547430761080612ull, 3269086076392261504ull, 7550384075341834043ull}}, {{17599922707346381188ull, 3285967144225675382ull, 18184079862241021104ull, 4718990047088646276ull}}, {{12776531347328200677ull, 4107458930282094228ull, 4283355754091724764ull, 5898737558860807846ull}}, {{15970664184160250846ull, 5134323662852617785ull, 14577566729469431763ull, 7373421948576009807ull}}, {{6128272174918149846ull, 1806218560138384328ull, 13610272393409401800ull, 9216777435720012259ull}}, {{3830170109323843654ull, 1128886600086490205ull, 6200577236667182173ull, 5760485897325007662ull}}, {{9399398655082192471ull, 6022794268535500660ull, 16974093582688753524ull, 7200607371656259577ull}}, {{11749248318852740589ull, 7528492835669375825ull, 7382558923078778193ull, 9000759214570324472ull}}, {{425751171641881012ull, 16234523068361829651ull, 4614099326924236370ull, 5625474509106452795ull}}, {{14367247019834514977ull, 11069781798597511255ull, 1155938140227907559ull, 7031843136383065994ull}}, {{13347372756365755817ull, 9225541229819501165ull, 10668294712139660257ull, 8789803920478832492ull}}, {{10647950981942291338ull, 17295178314705657988ull, 15891056231942063468ull, 5493627450299270307ull}}, {{13309938727427864172ull, 3172228819672520869ull, 15252134271500191432ull, 6867034312874087884ull}}, {{2802365354002666503ull, 3965286024590651087ull, 618423765665687674ull, 8583792891092609856ull}}, {{8669007373892748421ull, 7089989783796544833ull, 386514853541054796ull, 5364870556932881160ull}}, {{15447945235793323430ull, 8862487229745681041ull, 483143566926318495ull, 6706088196166101450ull}}, {{5474873489459490575ull, 6466423018754713398ull, 9827301495512673927ull, 8382610245207626812ull}}, {{17256853986194345322ull, 10959043414362777729ull, 15365435471550197012ull, 5239131403254766757ull}}, {{7736009427460767940ull, 13698804267953472162ull, 5371736284155582553ull, 6548914254068458447ull}}, {{446639747471184117ull, 3288447279659676491ull, 2102984336767090288ull, 8186142817585573059ull}}, {{16420050906665347737ull, 2055279549787297806ull, 17455266274975289094ull, 5116339260990983161ull}}, {{11301691596476908863ull, 11792471474088898066ull, 7984024788436947655ull, 6395424076238728952ull}}, {{4903742458741360271ull, 10128903324183734679ull, 9980030985546184569ull, 7994280095298411190ull}}, {{9982368064354432026ull, 17859779623683303934ull, 1625833347538977451ull, 4996425059561506994ull}}, {{3254588043588264224ull, 17713038511176742014ull, 11255663721278497622ull, 6245531324451883742ull}}, {{13291607091340106088ull, 12917926102116151709ull, 4846207614743346220ull, 7806914155564854678ull}}, {{10613097441301260257ull, 17297075850677370626ull, 16863937814496755099ull, 4879321347228034173ull}}, {{4042999764771799513ull, 17009658794919325379ull, 7244864212838780162ull, 6099151684035042717ull}}, {{442063687537361487ull, 12038701456794380916ull, 13667766284475863107ull, 7623939605043803396ull}}, {{9499661841565626738ull, 5218345401282794120ull, 17765725964652190250ull, 4764962253152377122ull}}, {{11874577301957033422ull, 15746303788458268458ull, 12983785418960462004ull, 5956202816440471403ull}}, {{5619849590591515969ull, 1236135661863283957ull, 11618045755273189602ull, 7445253520550589254ull}}, {{5818249003333391433ull, 5384270807091940377ull, 2649592578618355597ull, 4653283450344118284ull}}, {{11884497272594127195ull, 11342024527292313375ull, 3311990723272944496ull, 5816604312930147855ull}}, {{10243935572315271090ull, 14177530659115391719ull, 17975046459373344332ull, 7270755391162684818ull}}, {{8193233446966700958ull, 17721913323894239649ull, 13245436037361904607ull, 9088444238953356023ull}}, {{16649985950422657859ull, 17993724855074981636ull, 15195926550992272235ull, 5680277649345847514ull}}, {{2365738364318770708ull, 17880470050416339142ull, 9771536151885564486ull, 7100347061682309393ull}}, {{12180544992253239193ull, 13127215526165648119ull, 16826106208284343512ull, 8875433827102886741ull}}, {{14530369647799356352ull, 8204509703853530074ull, 12822159389391408647ull, 5547146141939304213ull}}, {{8939590022894419631ull, 5643951111389524689ull, 2192641181457097097ull, 6933932677424130267ull}}, {{15786173547045412443ull, 11666624907664293765ull, 16575859532103535083ull, 8667415846780162833ull}}, {{12172201476117076729ull, 4985797558076489651ull, 3442383179923627571ull, 5417134904237601771ull}}, {{10603565826718958007ull, 1620560929168224160ull, 18138037030186698176ull, 6771418630297002213ull}}, {{13254457283398697509ull, 2025701161460280200ull, 8837488232451209008ull, 8464273287871252767ull}}, {{8284035802124185943ull, 1266063225912675125ull, 12440959172923087486ull, 5290170804919532979ull}}, {{14966730771082620333ull, 10805951069245619714ull, 10939512947726471453ull, 6612713506149416224ull}}, {{9485041426998499608ull, 18119124854984412547ull, 13674391184658089316ull, 8265891882686770280ull}}, {{3622307882660368303ull, 2101080997510482034ull, 8546494490411305823ull, 5166182426679231425ull}}, {{13751256890180236187ull, 16461409302170266254ull, 15294804131441520182ull, 6457728033349039281ull}}, {{7965699075870519426ull, 11353389590858057010ull, 5283447109019736516ull, 8072160041686299102ull}}, {{9590247940846462545ull, 16319240531141061439ull, 17137212498419499034ull, 5045100026053936938ull}}, {{7376123907630690277ull, 11175678627071550991ull, 12198143586169597985ull, 6306375032567421173ull}}, {{4608468866110974942ull, 134540228557275027ull, 1412621427429833770ull, 7882968790709276467ull}}, {{574450032105665387ull, 4695773661275684796ull, 17023789456639503770ull, 4926855494193297791ull}}, {{718062540132081734ull, 15093089113449381803ull, 16668050802371991808ull, 6158569367741622239ull}}, {{14732636230447265879ull, 419617318102175637ull, 16223377484537601857ull, 7698211709677027799ull}}, {{11513740653243235127ull, 11791475869882329533ull, 17057139955477083016ull, 4811382318548142374ull}}, {{557117761271880196ull, 14739344837352911917ull, 12098052907491577962ull, 6014227898185177968ull}}, {{5308083220017238149ull, 9200809009836364088ull, 15122566134364472453ull, 7517784872731472460ull}}, {{3317552012510773843ull, 8056348640361421507ull, 228231797123019475ull, 4698615545457170288ull}}, {{17981998070920631016ull, 5458749782024388979ull, 285289746403774344ull, 5873269431821462860ull}}, {{17865811570223400866ull, 6823437227530486224ull, 356612183004717930ull, 7341586789776828575ull}}, {{3885520389069699467ull, 17752668571267883589ull, 14280823284038061124ull, 9176983487221035718ull}}, {{4734293252382256119ull, 1872045820187651435ull, 4313828534096400299ull, 5735614679513147324ull}}, {{1306180547050432244ull, 16175115330516728006ull, 5392285667620500373ull, 7169518349391434155ull}}, {{10856097720667816113ull, 6383836107863746295ull, 2128671066098237563ull, 8961897936739292694ull}}, {{13702590103058466927ull, 1684054558201147482ull, 15165477471593562189ull, 5601186210462057933ull}}, {{7904865591968307851ull, 6716754216178822257ull, 5121788784209789024ull, 7001482763077572417ull}}, {{14492768008387772717ull, 8395942770223527821ull, 11013921998689624184ull, 8751853453846965521ull}}, {{11363823014456051900ull, 5247464231389704888ull, 18412916295249484875ull, 5469908408654353450ull}}, {{14204778768070064875ull, 1947644270809743206ull, 13792773332207080286ull, 6837385510817941813ull}}, {{8532601423232805286ull, 11657927375366954816ull, 3405908609976686645ull, 8546731888522427267ull}}, {{5332875889520503304ull, 9592047618818040712ull, 18269593945731286817ull, 5341707430326517041ull}}, {{6666094861900629130ull, 16601745541949938794ull, 9001934376881944809ull, 6677134287908146302ull}}, {{17555990614230562220ull, 6917123872155259780ull, 2029045934247655204ull, 8346417859885182878ull}}, {{1749122097039325580ull, 13546574456951813171ull, 15103211764186948214ull, 5216511162428239298ull}}, {{16021460676581320687ull, 7709846034334990655ull, 9655642668378909460ull, 6520638953035299123ull}}, {{15415139827299262954ull, 9637307542918738319ull, 7457867317046248921ull, 8150798691294123904ull}}, {{16551991419703121203ull, 17552532260392681209ull, 4661167073153905575ull, 5094249182058827440ull}}, {{6854931219346737791ull, 17328979307063463608ull, 5826458841442381969ull, 6367811477573534300ull}}, {{8568664024183422239ull, 7826166078547165798ull, 7283073551802977462ull, 7959764346966917875ull}}, {{743728996687250995ull, 279667780664590720ull, 2246077960663166962ull, 4974852716854323672ull}}, {{929661245859063744ull, 9572956762685514208ull, 2807597450828958702ull, 6218565896067904590ull}}, {{1162076557323829680ull, 2742823916502116952ull, 12732868850390974186ull, 7773207370084880737ull}}, {{726297848327393550ull, 6325950966241210999ull, 1040514003853277010ull, 4858254606303050461ull}}, {{14742930365691405650ull, 17130810744656289556ull, 5912328523243984166ull, 6072818257878813076ull}}, {{18428662957114257062ull, 12190141393965586137ull, 7390410654054980208ull, 7591022822348516345ull}}, {{4600385320555328808ull, 7618838371228491336ull, 16148221704852832390ull, 4744389263967822715ull}}, {{5750481650694161010ull, 300175927180838362ull, 15573591112638652584ull, 5930486579959778394ull}}, {{16411474100222477070ull, 375219908976047952ull, 10243616853943539922ull, 7413108224949722993ull}}, {{10257171312639048169ull, 4846198461537417874ull, 17931475579783182211ull, 4633192640593576870ull}}, {{3598092103944034403ull, 1446062058494384439ull, 13190972437874201956ull, 5791490800741971088ull}}, {{18332673185212206716ull, 1807577573117980548ull, 16488715547342752445ull, 7239363500927463860ull}}, {{4469097407805706779ull, 6871157984824863590ull, 2164150360468888940ull, 9049204376159329826ull}}, {{16628243935160730449ull, 13517845777370315551ull, 5964279993720443491ull, 5655752735099581141ull}}, {{16173618900523525157ull, 12285621203285506535ull, 12067036010577942268ull, 7069690918874476426ull}}, {{15605337607227018542ull, 15357026504106883169ull, 5860422976367652027ull, 8837113648593095533ull}}, {{2835806976875804733ull, 7292298555853108029ull, 5968607369443476469ull, 5523196030370684708ull}}, {{8156444739522143820ull, 13727059213243772940ull, 7460759211804345586ull, 6903995037963355885ull}}, {{10195555924402679775ull, 7935451979699940367ull, 13937635033182819887ull, 8629993797454194856ull}}, {{13289751480392756715ull, 11877186514953544585ull, 8711021895739262429ull, 5393746123408871785ull}}, {{2777131295208782182ull, 1011425088409767020ull, 15500463388101465941ull, 6742182654261089731ull}}, {{3471414119010977728ull, 5875967378939596679ull, 14763893216699444522ull, 8427728317826362164ull}}, {{9087162852022942936ull, 8284165630264635828ull, 4061223582377018ull, 5267330198641476353ull}}, {{11358953565028678670ull, 1131835000976018977ull, 4616762547905359177ull, 6584162748301845441ull}}, {{363633901003684625ull, 6026479769647411626ull, 10382639203309086875ull, 8230203435377306801ull}}, {{4838957206554690795ull, 1460706846815938314ull, 18018364548136649057ull, 5143877147110816750ull}}, {{15272068545048139302ull, 6437569576947310796ull, 13299583648316035513ull, 6429846433888520938ull}}, {{643341607600622511ull, 12658647989611526400ull, 7401107523540268583ull, 8037308042360651173ull}}, {{402088504750389069ull, 14829184021148285856ull, 6931535211426361816ull, 5023317526475406983ull}}, {{502610630937986337ull, 89735952725805704ull, 4052732995855564367ull, 6279146908094258729ull}}, {{628263288672482921ull, 13947227996189420842ull, 9677602263246843362ull, 7848933635117823411ull}}, {{5004350573847689730ull, 13328703516045775930ull, 3742658405315583149ull, 4905583521948639632ull}}, {{15478810254164387970ull, 2825821339775056200ull, 4678323006644478937ull, 6131979402435799540ull}}, {{901768743995933346ull, 8143962693146208155ull, 5847903758305598671ull, 7664974253044749425ull}}, {{16704506529493316006ull, 12007505710857461952ull, 15184154895009468929ull, 4790608908152968390ull}}, {{2433889088157093391ull, 1174324083289663729ull, 9756821581907060354ull, 5988261135191210488ull}}, {{7654047378623754642ull, 10691277140966855469ull, 12196026977383825442ull, 7485326418989013110ull}}, {{7089622620853540604ull, 11293734231531672572ull, 3010830842437502997ull, 4678329011868133194ull}}, {{8862028276066925755ull, 282109734132427003ull, 12986910589901654555ull, 5847911264835166492ull}}, {{6465849326656269289ull, 14187695222947697466ull, 16233638237377068193ull, 7309889081043958115ull}}, {{17305683695175112419ull, 3899560973402458120ull, 15680361778293947338ull, 9137361351304947644ull}}, {{10816052309484445262ull, 7048911626803924229ull, 576854074578941278ull, 5710850844565592278ull}}, {{18131751405282944482ull, 18034511570359681094ull, 9944439630078452405ull, 7138563555706990347ull}}, {{13441317219748904794ull, 8708081407667437656ull, 7818863519170677603ull, 8923204444633737934ull}}, {{8400823262343065496ull, 3136707870578454583ull, 275103681054285598ull, 5577002777896086209ull}}, {{5889343059501443966ull, 13144256875077844037ull, 4955565619745244901ull, 6971253472370107761ull}}, {{11973364842804192862ull, 2595263038565141334ull, 10806143043108944031ull, 8714066840462634701ull}}, {{2871667008325232635ull, 8539568426744295190ull, 9059682411156783971ull, 5446291775289146688ull}}, {{12812955797261316601ull, 6062774515002981083ull, 11324603013945979964ull, 6807864719111433360ull}}, {{11404508728149257848ull, 7578468143753726354ull, 14155753767432474955ull, 8509830898889291700ull}}, {{11739503973520674059ull, 2430699580632385019ull, 18070718141500072655ull, 5318644311805807312ull}}, {{10062693948473454670ull, 16873432531072644986ull, 4141653603165539202ull, 6648305389757259141ull}}, {{3354995398737042529ull, 11868418626986030425ull, 9788753022384311907ull, 8310381737196573926ull}}, {{13626087170279121341ull, 5111918632652575063ull, 1506284620562807038ull, 5193988585747858704ull}}, {{12420922944421513772ull, 15613270327670494637ull, 1882855775703508797ull, 6492485732184823380ull}}, {{1691095625244728503ull, 5681529854305954585ull, 2353569719629385997ull, 8115607165231029225ull}}, {{12586149811846425074ull, 5856799168154915567ull, 13000196120836836008ull, 5072254478269393265ull}}, {{11121001246380643439ull, 7320998960193644459ull, 2415187095763881298ull, 6340318097836741582ull}}, {{9289565539548416394ull, 18374620737096831382ull, 12242355906559627430ull, 7925397622295926977ull}}, {{1194292443790372343ull, 6872451942258131710ull, 733943413958685288ull, 4953373513934954361ull}}, {{10716237591592741236ull, 8590564927822664637ull, 5529115285875744514ull, 6191716892418692951ull}}, {{18006983007918314449ull, 1514834122923554988ull, 2299708088917292739ull, 7739646115523366189ull}}, {{2030992343094170723ull, 17087672391323079532ull, 3743160564787001913ull, 4837278822202103868ull}}, {{2538740428867713403ull, 7524532433871685703ull, 4678950705983752392ull, 6046598527752629835ull}}, {{17008483591366805466ull, 9405665542339607128ull, 1237002364052302586ull, 7558248159690787294ull}}, {{10630302244604253417ull, 10490226982389642359ull, 14608184532814852828ull, 4723905099806742058ull}}, {{8676191787327928867ull, 13112783727987052949ull, 9036858629163790227ull, 5904881374758427573ull}}, {{15456925752587298987ull, 11779293641556428282ull, 15907759304882125688ull, 7381101718448034466ull}}, {{14272264613794449771ull, 7362058525972767676ull, 14554035583978716459ull, 4613188574030021541ull}}, {{17840330767243062214ull, 4590887139038571691ull, 4357486424691231862ull, 5766485717537526927ull}}, {{17688727440626439863ull, 14961980960652990422ull, 835172012436651923ull, 7208107146921908659ull}}, {{12887537263928274021ull, 14090790182388850124ull, 14879023070827978616ull, 9010133933652385823ull}}, {{17278082826809947071ull, 8806743863993031327ull, 16216918446908568491ull, 5631333708532741139ull}}, {{16985917515085045935ull, 6396743811563901255ull, 15659462040208322710ull, 7039167135665926424ull}}, {{16620710875428919514ull, 17219301801309652377ull, 1127583476550851771ull, 8798958919582408031ull}}, {{3470415269501992841ull, 8456220616604838784ull, 7622268700485364213ull, 5499349324739005019ull}}, {{4338019086877491051ull, 15181961789183436384ull, 4916149857179317362ull, 6874186655923756274ull}}, {{5422523858596863813ull, 9754080199624519672ull, 15368559358328922511ull, 8592733319904695342ull}}, {{3389077411623039883ull, 13013829152406406651ull, 4993663580528188665ull, 5370458324940434589ull}}, {{18071404819810963566ull, 2432228385225844601ull, 10853765494087623736ull, 6713072906175543236ull}}, {{8754197969481540746ull, 3040285481532305752ull, 13567206867609529670ull, 8391341132719429045ull}}, {{5471373730925962966ull, 15735236481239854807ull, 10785347301469649995ull, 5244588207949643153ull}}, {{2227531145230065804ull, 15057359583122430605ull, 18093370145264450398ull, 6555735259937053941ull}}, {{7396099949964970158ull, 9598327442048262448ull, 8781654626298399286ull, 8194669074921317427ull}}, {{4622562468728106349ull, 1387268632852776126ull, 3182691132222805602ull, 5121668171825823392ull}}, {{15001575122764908744ull, 10957457827920745965ull, 3978363915278507002ull, 6402085214782279240ull}}, {{4916910848173972218ull, 4473450248046156649ull, 4972954894098133753ull, 8002606518477849050ull}}, {{14602284326177202397ull, 14325121451097317665ull, 7719782827238721499ull, 5001629074048655656ull}}, {{4417797352439339284ull, 13294715795444259178ull, 9649728534048401874ull, 6252036342560819570ull}}, {{14745618727403949912ull, 7395022707450548164ull, 2838788630705726535ull, 7815045428201024463ull}}, {{18439383741482244503ull, 11539418219797674458ull, 8691771921832160940ull, 4884403392625640289ull}}, {{13825857639998029821ull, 14424272774747093073ull, 15476400920717589079ull, 6105504240782050361ull}}, {{3447263994715373564ull, 13418654950006478438ull, 5510443095614822637ull, 7631880300977562952ull}}, {{15989598051979272190ull, 10692502352967742975ull, 3444026934759264148ull, 4769925188110976845ull}}, {{15375311546546702333ull, 13365627941209678719ull, 8916719686876468089ull, 5962406485138721056ull}}, {{14607453414755990013ull, 2871976871229934687ull, 11145899608595585112ull, 7453008106423401320ull}}, {{16047187411863575614ull, 1794985544518709179ull, 6966187255372240695ull, 4658130066514625825ull}}, {{15447298246402081613ull, 16078789985930550186ull, 13319420087642688772ull, 5822662583143282281ull}}, {{10085750771147826209ull, 1651743408703636117ull, 2814217054271197254ull, 7278328228929102852ull}}, {{17218874482362170665ull, 11288051297734320954ull, 3517771317838996567ull, 9097910286161378565ull}}, {{15373482569903744570ull, 13972561088725032452ull, 4504450082863066806ull, 5686193928850861603ull}}, {{770109138670129096ull, 8242329324051514758ull, 1018876585151445604ull, 7107742411063577004ull}}, {{10186008460192437178ull, 10302911655064393447ull, 1273595731439307005ull, 8884678013829471255ull}}, {{13283784315261355092ull, 8745162793628939856ull, 7713526359790648734ull, 5552923758643419534ull}}, {{16604730394076693865ull, 1708081455181399012ull, 418535912883535110ull, 6941154698304274418ull}}, {{2309168918886315715ull, 11358473855831524574ull, 9746541927959194695ull, 8676443372880343022ull}}, {{15278288629586111034ull, 14016575187535784714ull, 1479902686547108780ull, 5422777108050214389ull}}, {{9874488750127862985ull, 17520718984419730893ull, 6461564376611273879ull, 6778471385062767986ull}}, {{16954796956087216635ull, 17289212712097275712ull, 17300327507618868157ull, 8473089231328459982ull}}, {{10596748097554510397ull, 13111600954274491272ull, 6201018673834404694ull, 5295680769580287489ull}}, {{13245935121943137996ull, 7166129155988338282ull, 12362959360720393772ull, 6619600961975359361ull}}, {{7334046865574146687ull, 8957661444985422853ull, 1618641145618328503ull, 8274501202469199202ull}}, {{6889622300197535632ull, 12516067430756971139ull, 5623336734438843218ull, 5171563251543249501ull}}, {{4000341856819531635ull, 6421712251591438116ull, 11640856936475941927ull, 6464454064429061876ull}}, {{5000427321024414544ull, 3415454296061909741ull, 14551071170594927409ull, 8080567580536327345ull}}, {{5431110084853953042ull, 13663873981107163348ull, 2176890453980747774ull, 5050354737835204591ull}}, {{6788887606067441303ull, 7856470439529178377ull, 16556171122758098430ull, 6312943422294005738ull}}, {{13097795526011689532ull, 597216012556697163ull, 11471841866592847230ull, 7891179277867507173ull}}, {{5880279194543612006ull, 14208318063130099439ull, 9475744175834223470ull, 4931987048667191983ull}}, {{2738662974752127103ull, 8537025542057848491ull, 7232994201365391434ull, 6164983810833989979ull}}, {{17258386773722322591ull, 1447909890717534805ull, 4429556733279351389ull, 7706229763542487474ull}}, {{13092334742790145571ull, 3210786690912153205ull, 7380158976726982522ull, 4816393602214054671ull}}, {{2530360373205518252ull, 13236855400494967315ull, 4613512702481340248ull, 6020492002767568339ull}}, {{16998008521789061527ull, 16546069250618709143ull, 1155204859674287406ull, 7525615003459460424ull}}, {{17541284353759245311ull, 5729607263209305310ull, 722003037296429629ull, 4703509377162162765ull}}, {{12703233405344280830ull, 11773695097439019542ull, 5514189815047924940ull, 5879386721452703456ull}}, {{6655669719825575229ull, 14717118871798774428ull, 6892737268809906175ull, 7349233401815879320ull}}, {{8319587149781969037ull, 13784712571321080131ull, 8615921586012382719ull, 9186541752269849150ull}}, {{2893898959400036696ull, 15532974384716756938ull, 773264972830351295ull, 5741588595168655719ull}}, {{12840745736104821678ull, 14804531962468558268ull, 14801639271320102831ull, 7176985743960819648ull}}, {{16050932170131027097ull, 13893978934658309931ull, 55305015440576923ull, 8971232179951024561ull}}, {{7725989597118197984ull, 6377893824947749755ull, 11563780680718830337ull, 5607020112469390350ull}}, {{5045800977970359576ull, 12584053299612075098ull, 5231353814043762113ull, 7008775140586737938ull}}, {{15530623259317725278ull, 1895008569232930160ull, 15762564304409478450ull, 8760968925733422422ull}}, {{9706639537073578299ull, 5796066374197969254ull, 5239916671828536127ull, 5475605578583389014ull}}, {{2909927384487197065ull, 2633396949320073664ull, 15773267876640445967ull, 6844506973229236267ull}}, {{3637409230608996332ull, 17126804241932255792ull, 15104898827373169554ull, 8555633716536545334ull}}, {{2273380769130622707ull, 15315938669635047774ull, 4828875748680843067ull, 5347271072835340834ull}}, {{12065097998268054192ull, 14533237318616421813ull, 15259466722705829642ull, 6684088841044176042ull}}, {{1246314442552904028ull, 8943174611415751459ull, 9850961366527511245ull, 8355111051305220053ull}}, {{16919847591091422682ull, 7895327141348538613ull, 8462693863293388480ull, 5221944407065762533ull}}, {{7314751433582114640ull, 9869158926685673267ull, 15190053347544123504ull, 6527430508832203166ull}}, {{4531753273550255396ull, 12336448658357091584ull, 9764194647575378572ull, 8159288136040253958ull}}, {{2832345795968909623ull, 16933652448327958048ull, 1490935636307223703ull, 5099555085025158724ull}}, {{3540432244961137028ull, 16555379541982559656ull, 1863669545384029629ull, 6374443856281448405ull}}, {{4425540306201421285ull, 6859166372196035858ull, 6941272950157424941ull, 7968054820351810506ull}}, {{7377648709803276207ull, 6592821991836216363ull, 8949981612275778492ull, 4980034262719881566ull}}, {{4610374868826707355ull, 8241027489795270454ull, 1964104978489947307ull, 6225042828399851958ull}}, {{14986340622888160002ull, 5689598343816700163ull, 11678503259967209942ull, 7781303535499814947ull}}, {{7060619880091406049ull, 17391057020167601314ull, 4993221528265812261ull, 4863314709687384342ull}}, {{18049146886969033370ull, 7903763219927337930ull, 15464898947187041135ull, 6079143387109230427ull}}, {{13338061571856515904ull, 5268018006481784509ull, 14719437665556413515ull, 7598929233886538034ull}}, {{10642131491624016392ull, 986668244837421366ull, 13811334559400146351ull, 4749330771179086271ull}}, {{4079292327675244682ull, 15068393361328940420ull, 12652482180822795034ull, 5936663463973857839ull}}, {{5099115409594055852ull, 9612119664806399717ull, 11203916707601105889ull, 7420829329967322299ull}}, {{5492790140209978860ull, 17536789836572469583ull, 4696604933036997228ull, 4638018331229576437ull}}, {{2254301656835085671ull, 3474243222006035363ull, 10482442184723634440ull, 5797522914036970546ull}}, {{16652935126326020800ull, 4342804027507544203ull, 3879680694049767242ull, 7246903642546213183ull}}, {{16204482889480138096ull, 14651877071239206062ull, 237914849134821148ull, 9058629553182766479ull}}, {{5516115787497698406ull, 18380795206379279597ull, 7066225808350345073ull, 5661643470739229049ull}}, {{11506830752799510912ull, 9140935952691935784ull, 13444468278865319246ull, 7077054338424036311ull}}, {{14383538440999388640ull, 2202797904010143922ull, 12193899330154261154ull, 8846317923030045389ull}}, {{13601397544052005804ull, 5988434708433727855ull, 9927030090560107173ull, 5528948701893778368ull}}, {{12390060911637619351ull, 12097229403969547723ull, 12408787613200133966ull, 6911185877367222960ull}}, {{10875890121119636284ull, 5898164718107158846ull, 15510984516500167458ull, 8638982346709028700ull}}, {{2185745307272384774ull, 8298038967244362183ull, 470993285957828853ull, 5399363966693142938ull}}, {{16567239689372644679ull, 14984234727482840632ull, 9812113644302061874ull, 6749204958366428672ull}}, {{2262305538006254233ull, 9506921372498774983ull, 12265142055377577343ull, 8436506197958035840ull}}, {{8331469988894990752ull, 12859354885452816220ull, 7665713784610985839ull, 5272816373723772400ull}}, {{10414337486118738440ull, 11462507588388632371ull, 9582142230763732299ull, 6591020467154715500ull}}, {{8406235839221035145ull, 9716448467058402560ull, 11977677788454665374ull, 8238775583943394375ull}}, {{5253897399513146966ull, 1461094273484113696ull, 14403577645425247715ull, 5149234739964621484ull}}, {{6567371749391433707ull, 15661425897137305832ull, 18004472056781559643ull, 6436543424955776855ull}}, {{8209214686739292134ull, 14965096352994244386ull, 17893904052549561650ull, 8045679281194721069ull}}, {{9742445197639445488ull, 13964871239048790645ull, 13489533042057169983ull, 5028549550746700668ull}}, {{16789742515476694764ull, 12844403030383600402ull, 16861916302571462479ull, 6285686938433375835ull}}, {{11763806107491092647ull, 11443817769552112599ull, 16465709359786940195ull, 7857108673041719794ull}}, {{14269907844823014760ull, 4846543096756376422ull, 14902754368294225526ull, 4910692920651074871ull}}, {{8614012769173992642ull, 15281550907800246336ull, 14016756941940394003ull, 6138366150813843589ull}}, {{10767515961467490803ull, 14490252616322920016ull, 3685888122143328792ull, 7672957688517304487ull}}, {{6729697475917181752ull, 9056407885201825010ull, 9221209103980662351ull, 4795598555323315304ull}}, {{17635493881751252998ull, 6708823838074893358ull, 11526511379975827939ull, 5994498194154144130ull}}, {{12820995315334290439ull, 3774343779166228794ull, 5184767188115009116ull, 7493122742692680163ull}}, {{12624808090511319429ull, 11582336898833668804ull, 934636483358186745ull, 4683201714182925102ull}}, {{15781010113139149286ull, 642863068259922293ull, 10391667641052509240ull, 5854002142728656377ull}}, {{5891204586141772895ull, 803578835324902867ull, 17601270569743024454ull, 7317502678410820471ull}}, {{2752319714249828215ull, 10227845581010904392ull, 17389902193751392663ull, 9146878348013525589ull}}, {{1720199821406142634ull, 13309932515772897101ull, 13174531880308314366ull, 5716798967508453493ull}}, {{6761935795185066197ull, 7414043607861345568ull, 2633106795103229246ull, 7145998709385566867ull}}, {{8452419743981332746ull, 44182472971906152ull, 17126441549161200270ull, 8932498386731958583ull}}, {{5282762339988332966ull, 13862672100889605057ull, 17621554995866832024ull, 5582811491707474114ull}}, {{11215138943412804112ull, 17328340126112006321ull, 12803571707978764222ull, 6978514364634342643ull}}, {{183865623983841428ull, 12437053120785232094ull, 11392778616546067374ull, 8723142955792928304ull}}, {{13949974070272064604ull, 3161472182063382154ull, 7120486635341292109ull, 5451964347370580190ull}}, {{8214095550985304947ull, 8563526246006615597ull, 18123980331031390944ull, 6814955434213225237ull}}, {{14879305457159019088ull, 10704407807508269496ull, 8819917358507074968ull, 8518694292766531547ull}}, {{9299565910724386930ull, 6690254879692668435ull, 3206605339853227903ull, 5324183932979082217ull}}, {{7012771369978095759ull, 3751132581188447640ull, 8619942693243922783ull, 6655229916223852771ull}}, {{8765964212472619698ull, 77229708058171646ull, 6163242348127515575ull, 8319037395279815964ull}}, {{867041614367999408ull, 6965797595177439135ull, 13075398504434473042ull, 5199398372049884977ull}}, {{14918860073242162971ull, 17930619030826574726ull, 2509190075260927590ull, 6499247965062356222ull}}, {{9425203054697927906ull, 13189901751678442600ull, 12359859630930935296ull, 8124059956327945277ull}}, {{5890751909186204942ull, 8243688594799026625ull, 10030755278545528512ull, 5077537472704965798ull}}, {{11975125904910144081ull, 10304610743498783281ull, 3315072061327134832ull, 6346921840881207248ull}}, {{1133849325855516389ull, 12880763429373479102ull, 4143840076658918540ull, 7933652301101509060ull}}, {{14543713883941861455ull, 17273849180213200246ull, 11813272084766599895ull, 4958532688188443162ull}}, {{8956270318072551011ull, 16980625456839112404ull, 5543218069103474061ull, 6198165860235553953ull}}, {{11195337897590688764ull, 7390723765766726793ull, 11540708604806730481ull, 7747707325294442441ull}}, {{79557158353098621ull, 16148417399672674006ull, 295413850363124694ull, 4842317078309026526ull}}, {{9322818484796149085ull, 10962149712736066699ull, 9592639349808681676ull, 6052896347886283157ull}}, {{7041837087567798452ull, 13702687140920083374ull, 16602485205688239999ull, 7566120434857853946ull}}, {{18236206235012037744ull, 15481708490716133964ull, 14988239271982537903ull, 4728825271786158716ull}}, {{4348513720055495564ull, 14740449594967779552ull, 288555016268620763ull, 5911031589732698396ull}}, {{5435642150069369455ull, 13813875975282336536ull, 360693770335775954ull, 7388789487165872995ull}}, {{3397276343793355910ull, 13245358502978848239ull, 16366334670955717635ull, 4617993429478670621ull}}, {{18081653485023858599ull, 11945012110296172394ull, 6622860283412483332ull, 5772491786848338277ull}}, {{13378694819425047441ull, 14931265137870215493ull, 12890261372692992069ull, 7215614733560422846ull}}, {{2888310468999145589ull, 4829023367055605655ull, 6889454679011464279ull, 9019518416950528558ull}}, {{8722723070765547849ull, 9935668632050835390ull, 18140967229664328886ull, 5637199010594080348ull}}, {{1680031801602159003ull, 3196213753208768430ull, 4229464963370859492ull, 7046498763242600436ull}}, {{11323411788857474562ull, 3995267191510960537ull, 5286831204213574365ull, 8808123454053250545ull}}, {{159603340394839746ull, 4802885003908044288ull, 14833484548701953738ull, 5505077158783281590ull}}, {{199504175493549682ull, 15226978291739831168ull, 9318483649022666364ull, 6881346448479101988ull}}, {{249380219366937102ull, 586978790965237344ull, 11648104561278332956ull, 8601683060598877485ull}}, {{155862637104335689ull, 9590233781208049148ull, 9585908360012652049ull, 5376051912874298428ull}}, {{194828296380419611ull, 16599478244937449339ull, 11982385450015815061ull, 6720064891092873035ull}}, {{14078593425757688226ull, 6914289750889647961ull, 10366295794092380923ull, 8400081113866091294ull}}, {{1881591863457473285ull, 2015588085092336024ull, 1867248852880350173ull, 5250050696166307059ull}}, {{2351989829321841607ull, 7131171124792807934ull, 16169119121382601428ull, 6562563370207883823ull}}, {{12163359323507077816ull, 8913963905991009917ull, 15599712883300863881ull, 8203204212759854779ull}}, {{9907942586405617587ull, 17100442487312850958ull, 7443977542849345973ull, 5127002632974909237ull}}, {{3161556196152246176ull, 7540495053858899986ull, 13916657946989070371ull, 6408753291218636546ull}}, {{13175317282045083528ull, 4813932798896237078ull, 8172450396881562156ull, 8010941614023295683ull}}, {{3622887282850789301ull, 12232080036164923982ull, 2801938488837282395ull, 5006838508764559802ull}}, {{13751981140418262434ull, 10678414026778767073ull, 12725795147901378802ull, 6258548135955699752ull}}, {{3354918370240664331ull, 4124645496618683034ull, 15907243934876723503ull, 7823185169944624690ull}}, {{6708509999827803111ull, 9495432463027758752ull, 14553713477725340093ull, 4889490731215390431ull}}, {{8385637499784753888ull, 16480976597212086344ull, 13580455828729287212ull, 6111863414019238039ull}}, {{10482046874730942360ull, 2154476672805556314ull, 12363883767484221112ull, 7639829267524047549ull}}, {{11162965315134226879ull, 1346547920503472696ull, 10033270363891332147ull, 4774893292202529718ull}}, {{13953706643917783599ull, 15518242955911504582ull, 3318215918009389375ull, 5968616615253162148ull}}, {{8218761268042453691ull, 14786117676461992824ull, 4147769897511736719ull, 7460770769066452685ull}}, {{5136725792526533557ull, 16158852575429827371ull, 4898199195158529401ull, 4662981730666532928ull}}, {{1809221222230779042ull, 6363507664005120502ull, 6122748993948161752ull, 5828727163333166160ull}}, {{11484898564643249610ull, 7954384580006400627ull, 7653436242435202190ull, 7285908954166457700ull}}, {{9744437187376674109ull, 719608688153224976ull, 9566795303044002738ull, 9107386192708072125ull}}, {{6090273242110421318ull, 5061441448523153514ull, 8285090073616195663ull, 5692116370442545078ull}}, {{16836213589492802456ull, 1715115792226553988ull, 1132990555165468771ull, 7115145463053181348ull}}, {{2598522913156451454ull, 15978952795565356198ull, 1416238193956835963ull, 8893931828816476685ull}}, {{15459134876004945871ull, 7681002488014653671ull, 3190991880436716429ull, 5558707393010297928ull}}, {{14712232576578794434ull, 14212939128445704993ull, 3988739850545895536ull, 6948384241262872410ull}}, {{4555232665441329331ull, 17766173910557131242ull, 14209296850037145228ull, 8685480301578590512ull}}, {{7458706434328218736ull, 1880486657243431218ull, 8880810531273215768ull, 5428425188486619070ull}}, {{100011006055497612ull, 2350608321554289023ull, 1877641127236743902ull, 6785531485608273838ull}}, {{13960071812851535726ull, 12161632438797637086ull, 11570423445900705685ull, 8481914357010342297ull}}, {{4113358864604821925ull, 9906863283462217131ull, 313985626046859197ull, 5301196473131463936ull}}, {{530012562328639502ull, 16995265122755159318ull, 392482032558573996ull, 6626495591414329920ull}}, {{9885887739765575186ull, 2797337329734397531ull, 490602540698217496ull, 8283119489267912400ull}}, {{3872836828139790539ull, 1748335831083998457ull, 306626587936385935ull, 5176949680792445250ull}}, {{9452732053602126078ull, 16020477844137161783ull, 9606655271775258226ull, 6471187100990556562ull}}, {{7204229048575269693ull, 10802225268316676421ull, 2784947052864296975ull, 8088983876238195703ull}}, {{6808486164573237511ull, 13668919820339004619ull, 8658120935681267465ull, 5055614922648872314ull}}, {{3898921687289158984ull, 3251091720141592062ull, 1599279132746808524ull, 6319518653311090393ull}}, {{14097024145966224538ull, 4063864650176990077ull, 6610784934360898559ull, 7899398316638862991ull}}, {{11116483100442584288ull, 9457444434001700654ull, 11049269611616643455ull, 4937123947899289369ull}}, {{4672231838698454552ull, 7210119524074737914ull, 18423273032948192223ull, 6171404934874111711ull}}, {{15063661835227843998ull, 4400963386666034488ull, 18417405272757852375ull, 7714256168592639639ull}}, {{9414788647017402499ull, 9668131144307353411ull, 18428407323114739590ull, 4821410105370399774ull}}, {{7156799790344365220ull, 2861791893529415956ull, 13812137117038648680ull, 6026762631712999718ull}}, {{8945999737930456525ull, 3577239866911769945ull, 8041799359443535042ull, 7533453289641249648ull}}, {{17120464882275005088ull, 6847460935247244119ull, 5026124599652209401ull, 4708408306025781030ull}}, {{16788895084416368456ull, 13171012187486443053ull, 15506027786420037559ull, 5885510382532226287ull}}, {{7151060800238296858ull, 11852079215930665913ull, 14770848714597659045ull, 7356887978165282859ull}}, {{13550512018725258976ull, 980040964631168679ull, 13851874874819685903ull, 9196109972706603574ull}}, {{15386599039344368716ull, 7530054630535562280ull, 4045735778334915785ull, 5747568732941627234ull}}, {{786504725470909279ull, 14024254306596840755ull, 14280541759773420539ull, 7184460916177034042ull}}, {{14818188962120800311ull, 12918631864818663039ull, 8627305162861999866ull, 8980576145221292553ull}}, {{16178897128966582051ull, 12685830933939052303ull, 16921280772857219676ull, 5612860090763307845ull}}, {{15611935392780839659ull, 15857288667423815379ull, 7316542910789360883ull, 7016075113454134807ull}}, {{14903233222548661670ull, 15209924815852381320ull, 4533992620059313200ull, 8770093891817668509ull}}, {{9314520764092913544ull, 9506203009907738325ull, 5139588396750764702ull, 5481308682386042818ull}}, {{16254836973543529834ull, 2659381725529897098ull, 15647857532793231686ull, 6851635852982553522ull}}, {{11095174180074636484ull, 12547599193767147181ull, 10336449879136763799ull, 8564544816228191903ull}}, {{9240326871760341755ull, 14759778523745548844ull, 13377810202101559230ull, 5352840510142619939ull}}, {{11550408589700427193ull, 9226351117827160247ull, 12110576734199561134ull, 6691050637678274924ull}}, {{9826324718698146087ull, 2309566860429174501ull, 15138220917749451418ull, 8363813297097843655ull}}, {{8447295958400035257ull, 6055165306195621967ull, 16378917101234488992ull, 5227383310686152284ull}}, {{5947433929572656167ull, 7568956632744527459ull, 2026902302833559624ull, 6534229138357690356ull}}, {{2822606393538432304ull, 9461195790930659324ull, 2533627878541949530ull, 8167786422947112945ull}}, {{10987501032816295998ull, 10524933387759049981ull, 13112732470157188216ull, 5104866514341945590ull}}, {{18346062309447757902ull, 13156166734698812476ull, 7167543550841709462ull, 6381083142927431988ull}}, {{4485833813100145761ull, 7221836381518739788ull, 8959429438552136828ull, 7976353928659289985ull}}, {{12027018170042366909ull, 13737019775303988175ull, 17128858445163555277ull, 4985221205412056240ull}}, {{10422086694125570732ull, 3336216663847821507ull, 2964328982744892481ull, 6231526506765070301ull}}, {{8415922349229575511ull, 8781956848237164788ull, 8317097246858503505ull, 7789408133456337876ull}}, {{14483323505123260503ull, 17017938076216697752ull, 14421557816141340498ull, 4868380083410211172ull}}, {{18104154381404075628ull, 12049050558416096382ull, 18026947270176675623ull, 6085475104262763965ull}}, {{13406820939900318727ull, 10449627179592732574ull, 8698626032438680817ull, 7606843880328454957ull}}, {{3767577069010311301ull, 18060232033313927619ull, 7742484279487869462ull, 4754277425205284348ull}}, {{97785317835501222ull, 13351918004787633716ull, 9678105349359836828ull, 5942846781506605435ull}}, {{122231647294376527ull, 16689897505984542145ull, 7485945668272408131ull, 7428558476883256794ull}}, {{11605609825627455089ull, 8125342932026644888ull, 9290402061097642986ull, 4642849048052035496ull}}, {{14507012282034318862ull, 933306628178530302ull, 11613002576372053733ull, 5803561310065044370ull}}, {{8910393315688122769ull, 5778319303650550782ull, 5292881183610291358ull, 7254451637581305463ull}}, {{1914619607755377653ull, 16446271166417964286ull, 2004415461085476293ull, 9068064546976631829ull}}, {{15031695310129274745ull, 12584762488224921630ull, 3558602672392116635ull, 5667540341860394893ull}}, {{9566247100806817624ull, 11119267091853764134ull, 9059939358917533698ull, 7084425427325493616ull}}, {{2734436839153746221ull, 4675711827962429360ull, 11324924198646917123ull, 8855531784156867020ull}}, {{1709023024471091389ull, 616476883262824398ull, 16301449661009099010ull, 5534707365098041887ull}}, {{11359650817443640044ull, 9993968140933306305ull, 15765126057833985858ull, 6918384206372552359ull}}, {{364505466522386342ull, 3269088139311857074ull, 15094721553865094419ull, 8647980257965690449ull}}, {{4839501935003879368ull, 18184081151565768335ull, 2516671943524602155ull, 5404987661228556531ull}}, {{1437691400327461306ull, 18118415421029822515ull, 16980897984687916406ull, 6756234576535695663ull}}, {{15632172305691490344ull, 13424647239432502335ull, 16614436462432507604ull, 8445293220669619579ull}}, {{16687636718698263321ull, 17613776561500089767ull, 8078179779806623300ull, 5278308262918512237ull}}, {{16247859879945441248ull, 3570476628165560593ull, 14709410743185667030ull, 6597885328648140296ull}}, {{6474766794649637848ull, 13686467822061726550ull, 18386763428982083787ull, 8247356660810175370ull}}, {{17881787301938187367ull, 6248199379574885141ull, 16103413161541190271ull, 5154597913006359606ull}}, {{8517176072140570496ull, 3198563206041218523ull, 10905894415071712031ull, 6443247391257949508ull}}, {{6034784071748325216ull, 17833262062833686866ull, 13632368018839640038ull, 8054059239072436885ull}}, {{8383426063270091164ull, 6534102770843666387ull, 10826073020988468976ull, 5033787024420273053ull}}, {{5867596560660226051ull, 8167628463554582984ull, 18144277294662974124ull, 6292233780525341316ull}}, {{7334495700825282564ull, 10209535579443228730ull, 4233602544619166039ull, 7865292225656676646ull}}, {{9195745831443189507ull, 13298488764793099812ull, 16481059645669142486ull, 4915807641035422903ull}}, {{11494682289303986883ull, 7399738919136598957ull, 15989638538659040204ull, 6144759551294278629ull}}, {{533294806347819892ull, 9249673648920748697ull, 6151990118041636543ull, 7680949439117848287ull}}, {{11862524300035857193ull, 12698575058216549791ull, 10762522851417104695ull, 4800593399448655179ull}}, {{10216469356617433587ull, 11261532804343299335ull, 8841467545843992965ull, 6000741749310818974ull}}, {{8158900677344404079ull, 241857950146960457ull, 1828462395450215399ull, 7500927186638523718ull}}, {{16628527969408722310ull, 7068690246482932141ull, 14977847052438548336ull, 4688079491649077323ull}}, {{6950601906478739175ull, 8835862808103665177ull, 14110622797120797516ull, 5860099364561346654ull}}, {{13299938401525811873ull, 11044828510129581471ull, 8414906459546221087ull, 7325124205701683318ull}}, {{12013236983479876937ull, 9194349619234588935ull, 1295261037578000551ull, 9156405257127104148ull}}, {{14425802142316004942ull, 12663997539662699940ull, 10032910185341026152ull, 5722753285704440092ull}}, {{18032252677895006177ull, 15829996924578374925ull, 12541137731676282690ull, 7153441607130550115ull}}, {{8705257792086594009ull, 10564124118868192849ull, 11064736146167965459ull, 8941802008913187644ull}}, {{16970001166122591016ull, 4296734565078926578ull, 16138832128209754220ull, 5588626255570742277ull}}, {{11989129420798462962ull, 5370918206348658223ull, 6338482104980029063ull, 6985782819463427847ull}}, {{10374725757570690798ull, 2101961739508434875ull, 3311416612797648425ull, 8732228524329284809ull}}, {{4178360589267987797ull, 12842941133261241557ull, 13598850429067000025ull, 5457642827705803005ull}}, {{9834636755012372650ull, 2218618361294388234ull, 3163504981051586320ull, 6822053534632253757ull}}, {{3069923906910690005ull, 2773272951617985293ull, 8566067244741870804ull, 8527566918290317196ull}}, {{4224545451032875205ull, 10956667631616016616ull, 14577164064818445060ull, 5329729323931448247ull}}, {{5280681813791094006ull, 13695834539520020770ull, 13609769062595668421ull, 6662161654914310309ull}}, {{15824224304093643316ull, 3284735119117862250ull, 3177153272962421815ull, 8327702068642887887ull}}, {{14501826208485914976ull, 8970488477089745762ull, 8903249823242595490ull, 5204813792901804929ull}}, {{8903910723752617912ull, 1989738559507406395ull, 15740748297480632267ull, 6506017241127256161ull}}, {{6518202386263384486ull, 16322231254666421706ull, 5840877316568626621ull, 8132521551409070202ull}}, {{8685562509842003208ull, 12507237543380207518ull, 8262234341282779542ull, 5082825969630668876ull}}, {{1633581100447728202ull, 6410674892370483590ull, 10327792926603474428ull, 6353532462038336095ull}}, {{11265348412414436061ull, 8013343615463104487ull, 8298055139826955131ull, 7941915577547920119ull}}, {{13958371785400104394ull, 2702496750450746352ull, 12103813490032928813ull, 4963697235967450074ull}}, {{17447964731750130492ull, 7989806956490820844ull, 5906394825686385208ull, 6204621544959312593ull}}, {{3363211840978111499ull, 9987258695613526056ull, 11994679550535369414ull, 7755776931199140741ull}}, {{2102007400611319687ull, 1630350666331065881ull, 9802517728298299836ull, 4847360581999462963ull}}, {{7239195269191537513ull, 2037938332913832351ull, 7641461141945486891ull, 6059200727499328704ull}}, {{4437308068062033987ull, 16382480971424454151ull, 9551826427431858613ull, 7574000909374160880ull}}, {{9690846570179853098ull, 12544893616353977796ull, 5969891517144911633ull, 4733750568358850550ull}}, {{12113558212724816373ull, 1846058965160308533ull, 16685736433285915350ull, 5917188210448563187ull}}, {{1306889710623856754ull, 11530945743305161475ull, 16245484523180006283ull, 7396485263060703984ull}}, {{16957707133635768135ull, 4900998080352031969ull, 10153427826987503927ull, 4622803289412939990ull}}, {{7362075861762546457ull, 1514561582012652058ull, 3468412746879604101ull, 5778504111766174988ull}}, {{18425966864057958879ull, 6504887995943202976ull, 4335515933599505126ull, 7223130139707718735ull}}, {{4585714506362896982ull, 17354482031783779529ull, 807708898571993503ull, 9028912674634648419ull}}, {{14395286612545280374ull, 17764080297505944061ull, 16645719126103353603ull, 5643070421646655261ull}}, {{4159050210399436756ull, 17593414353455042173ull, 6972090852347028292ull, 7053838027058319077ull}}, {{9810498781426683848ull, 3545023868109251100ull, 13326799583861173270ull, 8817297533822898846ull}}, {{15354933775246453213ull, 16050697972850445649ull, 3717563721485845389ull, 5510810958639311779ull}}, {{5358609163775902805ull, 6228314410780893350ull, 35268633429918833ull, 6888513698299139724ull}}, {{15921633491574654314ull, 12397079031903504591ull, 44085791787398541ull, 8610642122873924655ull}}, {{16868549959875240802ull, 10054017404153384321ull, 6945082647508205944ull, 5381651326796202909ull}}, {{7250629394561887291ull, 12567521755191730402ull, 13293039327812645334ull, 6727064158495253636ull}}, {{18286658780057134921ull, 6486030157134887194ull, 16616299159765806668ull, 8408830198119067045ull}}, {{16040847755963097230ull, 13277140885064080304ull, 12691029984067323119ull, 5255518873824416903ull}}, {{1604315621244319921ull, 11984740087902712477ull, 11252101461656765995ull, 6569398592280521129ull}}, {{6617080544982787806ull, 10369239091451002692ull, 230068771788793782ull, 8211748240350651412ull}}, {{13359047377469018187ull, 1869088413729488778ull, 9367165019222771922ull, 5132342650219157132ull}}, {{7475437184981496925ull, 11559732554016636781ull, 11708956274028464902ull, 6415428312773946415ull}}, {{13955982499654259060ull, 5226293655666020168ull, 10024509324108193224ull, 8019285390967433019ull}}, {{8722489062283911913ull, 3266433534791262605ull, 3959475318353926813ull, 5012053369354645637ull}}, {{15514797346282277795ull, 8694727936916466160ull, 9561030166369796420ull, 6265066711693307046ull}}, {{946752609143295628ull, 10868409921145582701ull, 2727915671107469717ull, 7831333389616633808ull}}, {{2897563389928253720ull, 9098599209929683140ull, 1704947294442168573ull, 4894583368510396130ull}}, {{3621954237410317149ull, 15984935030839491829ull, 11354556154907486524ull, 6118229210637995162ull}}, {{9139128815190284340ull, 1534424714839813170ull, 4969823156779582348ull, 7647786513297493953ull}}, {{10323641527921315617ull, 10182387483629659039ull, 14635354519055708727ull, 4779866570810933720ull}}, {{8292865891474256617ull, 8116298336109685895ull, 18294193148819635909ull, 5974833213513667150ull}}, {{5754396345915432867ull, 14757058938564495273ull, 13644369399169769078ull, 7468541516892083938ull}}, {{15125712762265615302ull, 4611475818175421641ull, 13139416892908493578ull, 4667838448057552461ull}}, {{5072082897549855416ull, 14987716809574052860ull, 2589213060853453260ull, 5834798060071940577ull}}, {{6340103621937319269ull, 287901938258014459ull, 7848202344494204480ull, 7293497575089925721ull}}, {{3313443508994261183ull, 359877422822518074ull, 14421938949045143504ull, 9116871968862407151ull}}, {{6682588211548801143ull, 224923389264073796ull, 15931240870794296546ull, 5698044980539004469ull}}, {{8353235264436001429ull, 9504526273434868053ull, 6078993033210706970ull, 7122556225673755587ull}}, {{15053230098972389690ull, 2657285804938809258ull, 2987055273085995809ull, 8903195282092194484ull}}, {{14019954830285131461ull, 13190018674155225546ull, 11090281582533523188ull, 5564497051307621552ull}}, {{8301571501001638518ull, 16487523342694031933ull, 13862851978166903985ull, 6955621314134526940ull}}, {{14988650394679436051ull, 6774346123085376204ull, 17328564972708629982ull, 8694526642668158675ull}}, {{144534459819871724ull, 18069024382210523840ull, 8524510098729199786ull, 5434079151667599172ull}}, {{180668074774839655ull, 13362908440908378992ull, 10655637623411499733ull, 6792598939584498965ull}}, {{225835093468549568ull, 2868577495853310028ull, 17931233047691762571ull, 8490748674480623706ull}}, {{9364518970272619288ull, 17933761999404176431ull, 15818706673234739510ull, 5306717921550389816ull}}, {{7093962694413386206ull, 13193830462400444731ull, 1326639267833872772ull, 6633397401937987271ull}}, {{4255767349589344854ull, 16492288078000555914ull, 15493357140074504677ull, 8291746752422484088ull}}, {{7271540611920728438ull, 12613523057964041398ull, 9683348212546565423ull, 5182341720264052555ull}}, {{18312797801755686355ull, 11155217804027663843ull, 7492499247255818875ull, 6477927150330065694ull}}, {{18279311233767220040ull, 9332336236607191900ull, 142252022214997786ull, 8097408937912582118ull}}, {{2201197484249736717ull, 10444396166306882842ull, 13923965569166537328ull, 5060880586195363823ull}}, {{11974868892166946704ull, 13055495207883603552ull, 12793270943030783756ull, 6326100732744204779ull}}, {{14968586115208683380ull, 16319369009854504440ull, 11379902660361091791ull, 7907625915930255974ull}}, {{9355366322005427113ull, 17117134658800147131ull, 2500753144298294465ull, 4942266197456409984ull}}, {{7082521884079395987ull, 7561360268218020202ull, 3125941430372868082ull, 6177832746820512480ull}}, {{18076524391954020792ull, 228328298417749444ull, 3907426787966085103ull, 7722290933525640600ull}}, {{2074455708116487187ull, 7060234214152175259ull, 2442141742478803189ull, 4826431833453525375ull}}, {{16428127690427772695ull, 13436978786117606977ull, 16887735233380667698ull, 6033039791816906718ull}}, {{6700101557752552157ull, 7572851445792232914ull, 11886297004871058815ull, 7541299739771133398ull}}, {{8799249492022733002ull, 11650561181261227427ull, 2817249609617023855ull, 4713312337356958374ull}}, {{6387375846601028349ull, 9951515458149146380ull, 12744934048876055627ull, 5891640421696197967ull}}, {{7984219808251285436ull, 7827708304259045071ull, 11319481542667681630ull, 7364550527120247459ull}}, {{5368588741886718891ull, 561263343469030531ull, 9537665909907214134ull, 9205688158900309324ull}}, {{1049524954465505355ull, 14185847644950307794ull, 15184413230546784641ull, 5753555099312693327ull}}, {{10535278229936657502ull, 3897251500905721030ull, 14368830519756092898ull, 7191943874140866659ull}}, {{3945725750566046069ull, 14094936412986927096ull, 13349352131267728218ull, 8989929842676083324ull}}, {{2466078594103778793ull, 13421021276544217339ull, 17566717118897105944ull, 5618706151672552077ull}}, {{16917656297911887203ull, 16776276595680271673ull, 8123338343339218718ull, 7023382689590690097ull}}, {{7312012317107695292ull, 11746973707745563784ull, 14765858947601411302ull, 8779228361988362621ull}}, {{4570007698192309558ull, 2730172548913589461ull, 11534504851464576016ull, 5487017726242726638ull}}, {{10324195641167774851ull, 3412715686141986826ull, 5194759027475944212ull, 6858772157803408298ull}}, {{3681872514604942756ull, 4265894607677483533ull, 15716820821199706073ull, 8573465197254260372ull}}, {{4607013330841783175ull, 14195399175866896968ull, 599640976395040487ull, 5358415748283912733ull}}, {{5758766663552228968ull, 13132562951406233306ull, 5361237238921188513ull, 6698019685354890916ull}}, {{16421830366295062018ull, 2580645633975627920ull, 6701546548651485642ull, 8372524606693613645ull}}, {{10263643978934413761ull, 6224589539662155354ull, 6494309602120872478ull, 5232827879183508528ull}}, {{3606182936813241394ull, 17004108961432470001ull, 8117887002651090597ull, 6541034848979385660ull}}, {{9119414689443939646ull, 7420078146508423789ull, 10147358753313863247ull, 8176293561224232075ull}}, {{8005477190116156231ull, 11555077869208846724ull, 4036256211607470577ull, 5110183475765145047ull}}, {{10006846487645195289ull, 608789281228894693ull, 433634246081950318ull, 6387729344706431309ull}}, {{17120244127983882015ull, 9984358638390894174ull, 5153728826029825801ull, 7984661680883039136ull}}, {{6088466561562538355ull, 17769439195062778619ull, 3221080516268641125ull, 4990413550551899460ull}}, {{2998897183525785040ull, 8376740938546309562ull, 4026350645335801407ull, 6238016938189874325ull}}, {{12971993516262007108ull, 5859240154755499048ull, 9644624325097139663ull, 7797521172737342906ull}}, {{8107495947663754443ull, 10579554124363268761ull, 10639576221613100193ull, 4873450732960839316ull}}, {{14746055953007080957ull, 17836128673881473855ull, 13299470277016375241ull, 6091813416201049145ull}}, {{13820883922831463292ull, 8460102787069678607ull, 2789279790988305340ull, 7614766770251311432ull}}, {{15555581479410746414ull, 14510936278773324937ull, 1743299869367690837ull, 4759229231407069645ull}}, {{5609418793981269305ull, 4303612293184492460ull, 6790810855137001451ull, 5949036539258837056ull}}, {{7011773492476586631ull, 767829348053227671ull, 8488513568921251814ull, 7436295674073546320ull}}, {{11299887460438948501ull, 14314951397815431006ull, 5305320980575782383ull, 4647684796295966450ull}}, {{4901487288693909818ull, 13282003228841900854ull, 15855023262574503787ull, 5809605995369958062ull}}, {{15350231147722163080ull, 11990818017624988163ull, 10595407041363353926ull, 7262007494212447578ull}}, {{14576102916225315946ull, 5765150485176459396ull, 4020886764849416600ull, 9077509367765559473ull}}, {{18333436359495598274ull, 3603219053235287122ull, 14042269274099355135ull, 5673443354853474670ull}}, {{13693423412514722035ull, 18339081871826272615ull, 8329464555769418110ull, 7091804193566843338ull}}, {{12505093247216014640ull, 13700480302928064961ull, 1188458657856996830ull, 8864755241958554173ull}}, {{898154251868927294ull, 3951114170902652697ull, 3048629670374316971ull, 5540472026224096358ull}}, {{5734378833263547021ull, 327206695200927967ull, 13034159124822672022ull, 6925590032780120447ull}}, {{2556287523152045873ull, 9632380405855935767ull, 11681012887600952123ull, 8656987540975150559ull}}, {{8515208729611110527ull, 3714394744446265902ull, 14218162082391676933ull, 5410617213109469099ull}}, {{1420638875159112350ull, 9254679448985220282ull, 13161016584562208262ull, 6763271516386836374ull}}, {{10999170630803666245ull, 2344977274376749544ull, 7227898693847984520ull, 8454089395483545468ull}}, {{6874481644252291404ull, 1465610796485468465ull, 13740808720509766133ull, 5283805872177215917ull}}, {{13204788073742752158ull, 6443699514034223485ull, 3340952845355043954ull, 6604757340221519897ull}}, {{2670927036896276486ull, 17277996429397555165ull, 8787877075121192846ull, 8255946675276899871ull}}, {{3975172407273866756ull, 6187061749946084074ull, 12409952199591827385ull, 5159966672048062419ull}}, {{14192337545947109253ull, 12345513205859992996ull, 10900754231062396327ull, 6449958340060078024ull}}, {{17740421932433886566ull, 10820205488897603341ull, 13625942788827995409ull, 8062447925075097530ull}}, {{13393606716984873056ull, 18291843476629471848ull, 13127900261444885034ull, 5039029953171935956ull}}, {{16742008396231091320ull, 13641432308932064002ull, 16409875326806106293ull, 6298787441464919945ull}}, {{11704138458434088341ull, 3216732330882916291ull, 6677286103225469155ull, 7873484301831149932ull}}, {{5009243527307611261ull, 18151358771297680346ull, 13396675851370694029ull, 4920927688644468707ull}}, {{15484926445989289885ull, 8854140408839936720ull, 12134158795785979633ull, 6151159610805585884ull}}, {{909413983777060740ull, 15679361529477308805ull, 15167698494732474541ull, 7688949513506982355ull}}, {{2874226749074356915ull, 12105443965137011955ull, 7173968549994102636ull, 4805593445941863972ull}}, {{17427841491625109855ull, 15131804956421264943ull, 8967460687492628295ull, 6006991807427329965ull}}, {{17173115846103999415ull, 14303070177099193275ull, 15821011877793173273ull, 7508739759284162456ull}}, {{8427354394601305682ull, 2021889833045913941ull, 9888132423620733296ull, 4692962349552601535ull}}, {{15145879011679020007ull, 2527362291307392426ull, 7748479511098528716ull, 5866202936940751919ull}}, {{9708976727743999200ull, 3159202864134240533ull, 5073913370445772991ull, 7332753671175939899ull}}, {{16747906928107386904ull, 17784061635449964378ull, 1730705694629828334ull, 9165942088969924874ull}}, {{15079127848494504719ull, 6503352503728839832ull, 5693377077571030613ull, 5728713805606203046ull}}, {{402165736908579283ull, 12740876648088437695ull, 16340093383818564074ull, 7160892257007753807ull}}, {{14337765226417887816ull, 6702723773255771310ull, 15813430711345817189ull, 8951115321259692259ull}}, {{4349417248083791981ull, 6495045367498551021ull, 7577551185377441791ull, 5594447075787307662ull}}, {{10048457578532127880ull, 3507120690945800872ull, 248566944867026431ull, 6993058844734134578ull}}, {{12560571973165159850ull, 18218958918964414802ull, 9534080717938558846ull, 8741323555917668222ull}}, {{12462043501655612811ull, 6775163305925371347ull, 1347114430284211375ull, 5463327222448542639ull}}, {{10965868358642128109ull, 3857268113979326280ull, 15518951093137427931ull, 6829159028060678298ull}}, {{13707335448302660136ull, 209899124046769946ull, 10175316829567009106ull, 8536448785075847873ull}}, {{13178770673616550489ull, 4742872970956619120ull, 17888788064547850451ull, 5335280490672404920ull}}, {{16473463342020688112ull, 1316905195268385996ull, 3914241006975261448ull, 6669100613340506151ull}}, {{2145085103816308523ull, 1646131494085482496ull, 281115240291688906ull, 8336375766675632689ull}}, {{1340678189885192827ull, 5640518202230814464ull, 11704912071250775326ull, 5210234854172270430ull}}, {{1675847737356491034ull, 16274019789643293888ull, 5407768052208693349ull, 6512793567715338038ull}}, {{2094809671695613792ull, 6507466681771953648ull, 15983082102115642495ull, 8140991959644172547ull}}, {{1309256044809758620ull, 10984695703748552886ull, 7683583304608582607ull, 5088119974777607842ull}}, {{10859942092866974083ull, 9119183611258303203ull, 381107093905952451ull, 6360149968472009803ull}}, {{8963241597656329700ull, 6787293495645491100ull, 14311441922664604276ull, 7950187460590012253ull}}, {{14825398035389981871ull, 13465430471633207745ull, 11250494210879071624ull, 4968867162868757658ull}}, {{4696689488955313626ull, 16831788089541509682ull, 4839745726744063722ull, 6211083953585947073ull}}, {{15094233898048917841ull, 11816363075072111294ull, 10661368176857467557ull, 7763854941982433841ull}}, {{4822210167853185747ull, 9691069931133763511ull, 18192570156604386983ull, 4852409338739021150ull}}, {{1416076691389094279ull, 7502151395489816485ull, 13517340658900707921ull, 6065511673423776438ull}}, {{6381781882663755753ull, 13989375262789658510ull, 7673303786771109093ull, 7581889591779720548ull}}, {{17823671731947011058ull, 11049202548457230520ull, 14019186903586718991ull, 4738680994862325342ull}}, {{3832845591224212206ull, 9199817167144150247ull, 8300611592628622931ull, 5923351243577906678ull}}, {{179370970602877353ull, 6888085440502799905ull, 1152392453931002856ull, 7404189054472383348ull}}, {{11641321902695268106ull, 4305053400314249940ull, 9943617320561652593ull, 4627618159045239592ull}}, {{14551652378369085132ull, 9993002768820200329ull, 12429521650702065741ull, 5784522698806549490ull}}, {{4354507417679192703ull, 17102939479452638316ull, 6313530026522806368ull, 7230653373508186863ull}}, {{5443134272098990879ull, 2931930275606246279ull, 3280226514726120057ull, 9038316716885233579ull}}, {{10319487947702951156ull, 13361671468322373684ull, 18191042636199682699ull, 5648947948053270986ull}}, {{12899359934628688944ull, 12090403316975579201ull, 13515431258394827566ull, 7061184935066588733ull}}, {{2289141863003697468ull, 5889632109364698194ull, 3059231017711370746ull, 8826481168833235917ull}}, {{6042399682804698822ull, 8292706086780324275ull, 4217862395283300668ull, 5516550730520772448ull}}, {{2941313585078485623ull, 10365882608475405344ull, 5272327994104125835ull, 6895688413150965560ull}}, {{3676641981348107029ull, 8345667242166868776ull, 6590409992630157294ull, 8619610516438706950ull}}, {{2297901238342566893ull, 604356007926905081ull, 17954064300676012021ull, 5387256572774191843ull}}, {{7484062566355596521ull, 5367131028336019255ull, 17830894357417627122ull, 6734070715967739804ull}}, {{4743392189517107747ull, 15932285822274799877ull, 3841873873062482286ull, 8417588394959674756ull}}, {{5270463127661886294ull, 5345992620494362019ull, 11624543207518827237ull, 5260992746849796722ull}}, {{1976392891149969963ull, 11294176794045340428ull, 5307306972543758238ull, 6576240933562245903ull}}, {{2470491113937462454ull, 4894348955701899727ull, 2022447697252309894ull, 8220301166952807379ull}}, {{8461585973851995890ull, 16894026152595851041ull, 17404930875278551347ull, 5137688229345504611ull}}, {{15188668485742382766ull, 16505846672317425897ull, 17144477575670801280ull, 6422110286681880764ull}}, {{5150777551895814746ull, 2185564266687230756ull, 2983852895878949985ull, 8027637858352350956ull}}, {{12442608006789660024ull, 12895192712747988982ull, 11088280096779119548ull, 5017273661470219347ull}}, {{6329887971632299222ull, 16118990890934986228ull, 9248664102546511531ull, 6271592076837774184ull}}, {{7912359964540374027ull, 15537052595241344881ull, 11560830128183139414ull, 7839490096047217730ull}}, {{16474440023906203527ull, 5098971853598452646ull, 11837204848541850038ull, 4899681310029511081ull}}, {{11369677993027978601ull, 15597086853852841616ull, 961448005395148835ull, 6124601637536888852ull}}, {{14212097491284973251ull, 14884672548888664116ull, 1201810006743936044ull, 7655752046921111065ull}}, {{18105932968907884090ull, 79548306200639264ull, 12280346300283429788ull, 4784845029325694415ull}}, {{4185672137425303497ull, 99435382750799081ull, 10738746856926899331ull, 5981056286657118019ull}}, {{9843776190209017275ull, 13959352283720662563ull, 8811747552731236259ull, 7476320358321397524ull}}, {{3846517109666941845ull, 6418752168111720150ull, 14730714257311798470ull, 4672700223950873452ull}}, {{14031518423938453114ull, 17246812246994425995ull, 18413392821639748087ull, 5840875279938591815ull}}, {{12927712011495678488ull, 16946829290315644590ull, 18405055008622297205ull, 7301094099923239769ull}}, {{6936267977514822302ull, 7348478557612392026ull, 9171260705495707795ull, 9126367624904049712ull}}, {{8946853504374151843ull, 2286956089294051064ull, 5732037940934817372ull, 5703979765565031070ull}}, {{11183566880467689804ull, 2858695111617563830ull, 16388419463023297523ull, 7129974706956288837ull}}, {{4756086563729836446ull, 17408426944804118500ull, 6650466273496958191ull, 8912468383695361047ull}}, {{12195926139185923587ull, 17797795868143655918ull, 11074070448576680725ull, 5570292739809600654ull}}, {{6021535637127628676ull, 8412186779897406186ull, 4619216023866075099ull, 6962865924762000818ull}}, {{16750291583264311653ull, 5903547456444369828ull, 14997392066687369682ull, 8703582405952501022ull}}, {{1245560202685418975ull, 8301403178705119047ull, 4761684023252218147ull, 5439739003720313139ull}}, {{15392008308638937431ull, 5765067954954010904ull, 1340419010637884780ull, 6799673754650391424ull}}, {{793266312089120172ull, 7206334943692513631ull, 1675523763297355975ull, 8499592193312989280ull}}, {{7413320472696781964ull, 11421488367448902875ull, 1047202352060847484ull, 5312245120820618300ull}}, {{4654964572443589551ull, 14276860459311128594ull, 1309002940076059355ull, 6640306401025772875ull}}, {{15042077752409262746ull, 13234389555711522838ull, 15471311730377237906ull, 8300383001282216093ull}}, {{4789612576828401313ull, 12883179490747089678ull, 11975412840699467643ull, 5187739375801385058ull}}, {{15210387757890277449ull, 11492288345006474193ull, 5745894014019558746ull, 6484674219751731323ull}}, {{5177926642080683099ull, 5141988394403316934ull, 2570681499097060529ull, 8105842774689664154ull}}, {{17071262206582590649ull, 14742957792570542843ull, 6218361955363050734ull, 5066151734181040096ull}}, {{16727391739800850407ull, 9205325203858402746ull, 7772952444203813418ull, 6332689667726300120ull}}, {{11685867637896287201ull, 2283284467968227625ull, 9716190555254766773ull, 7915862084657875150ull}}, {{386138246044097645ull, 3732895801693836218ull, 1460933078606841329ull, 4947413802911171969ull}}, {{9706044844409897864ull, 9277805770544683176ull, 6437852366685939565ull, 6184267253638964961ull}}, {{12132556055512372329ull, 16208943231608241874ull, 12659001476784812360ull, 7730334067048706201ull}}, {{12194533553122620610ull, 10130589519755151171ull, 994346895349425869ull, 4831458791905441376ull}}, {{10631480922975887858ull, 17274922918121326868ull, 1242933619186782336ull, 6039323489881801720ull}}, {{13289351153719859823ull, 3146909573942106969ull, 1553667023983477921ull, 7549154362352252150ull}}, {{1388315443433830534ull, 13496033529782286616ull, 14806099945271837412ull, 4718221476470157593ull}}, {{1735394304292288167ull, 16870041912227858270ull, 4672566876307633053ull, 5897776845587696992ull}}, {{11392614917220136016ull, 7252494335002659125ull, 5840708595384541317ull, 7372221056984621240ull}}, {{405710591243006308ull, 13677303937180711811ull, 7300885744230676646ull, 9215276321230776550ull}}, {{16394470184022736607ull, 3936628942310556977ull, 18398111645426336616ull, 5759547700769235343ull}}, {{6658029674746257046ull, 4920786177888196222ull, 18385953538355532866ull, 7199434625961544179ull}}, {{17545909130287597116ull, 15374354759215021085ull, 18370755904517028178ull, 8999293282451930224ull}}, {{13272036215643442150ull, 14220657742936776082ull, 11481722440323142611ull, 5624558301532456390ull}}, {{7366673232699526879ull, 13164136160243582199ull, 5128781013549152456ull, 7030697876915570488ull}}, {{4596655522447020695ull, 16455170200304477749ull, 6410976266936440570ull, 8788372346144463110ull}}, {{5178752710743081886ull, 14896167393617686497ull, 17841918222117439068ull, 5492732716340289443ull}}, {{11085126906856240262ull, 173465168312556505ull, 17690711759219410932ull, 6865915895425361804ull}}, {{21350578288136615ull, 216831460390695632ull, 3666645625314712049ull, 8582394869281702256ull}}, {{13344111430085385ull, 11664734708812654530ull, 2291653515821695030ull, 5363996793301063910ull}}, {{9240052176142382539ull, 5357546349161042354ull, 12087938931631894596ull, 6704995991626329887ull}}, {{2326693183323202365ull, 6696932936451302943ull, 10498237646112480341ull, 8381244989532912359ull}}, {{8371712267218083334ull, 6491426094495758291ull, 13478927556461382069ull, 5238278118458070224ull}}, {{5852954315595216264ull, 12725968636547085768ull, 16848659445576727586ull, 6547847648072587780ull}}, {{7316192894494020330ull, 6684088758829081402ull, 2614080233261357867ull, 8184809560090734726ull}}, {{9184306577486150610ull, 1871712465054481924ull, 15468858201070512379ull, 5115505975056709203ull}}, {{11480383221857688263ull, 16174698636600266117ull, 14724386732910752569ull, 6394382468820886504ull}}, {{515420972039946616ull, 6383315240468168935ull, 18405483416138440712ull, 7992978086026108130ull}}, {{7239667135166048491ull, 3989572025292605584ull, 16115113153513913349ull, 4995611303766317581ull}}, {{9049583918957560614ull, 9598651050043144884ull, 6308833386610227974ull, 6244514129707896977ull}}, {{11311979898696950767ull, 2774941775699155297ull, 12497727751690172872ull, 7805642662134871221ull}}, {{152458409044512374ull, 1734338609811972061ull, 10116922854020051997ull, 4878526663834294513ull}}, {{4802259029733028371ull, 6779609280692352980ull, 17257839585952452900ull, 6098158329792868141ull}}, {{6002823787166285464ull, 8474511600865441225ull, 7737241427158402413ull, 7622697912241085177ull}}, {{15280979913047398175ull, 7602412759754594717ull, 16364990938042471268ull, 4764186195150678235ull}}, {{5266166836027084007ull, 9503015949693243397ull, 15844552654125701181ull, 5955232743938347794ull}}, {{11194394563461242912ull, 16490455955543942150ull, 10582318780802350668ull, 7444040929922934743ull}}, {{2384810583735888916ull, 1083162935360188036ull, 13531478265642551024ull, 4652525581201834214ull}}, {{2981013229669861145ull, 1353953669200235045ull, 7690975795198412972ull, 5815656976502292768ull}}, {{8337952555514714336ull, 1692442086500293806ull, 9613719743998016215ull, 7269571220627865960ull}}, {{1199068657538617111ull, 15950610663407530970ull, 12017149679997520268ull, 9086964025784832450ull}}, {{5361103929389023599ull, 745759627774931048ull, 12122404568425838072ull, 5679352516115520281ull}}, {{6701379911736279498ull, 932199534718663810ull, 1317947655250133878ull, 7099190645144400352ull}}, {{17600096926525125181ull, 10388621455253105570ull, 1647434569062667347ull, 8873988306430500440ull}}, {{15611746597505591142ull, 4187045400319497029ull, 1029646605664167092ull, 5546242691519062775ull}}, {{5679625191599825216ull, 5233806750399371287ull, 15122116312362372577ull, 6932803364398828468ull}}, {{2487845471072393615ull, 11153944456426602013ull, 455901316743414105ull, 8666004205498535586ull}}, {{3860746428633939962ull, 53686257625544402ull, 4896624341392021720ull, 5416252628436584741ull}}, {{14049305072647200760ull, 67107822031930502ull, 10732466445167415054ull, 6770315785545730926ull}}, {{8338259303954225142ull, 9307256814394688936ull, 4192211019604493009ull, 8462894731932163658ull}}, {{5211412064971390714ull, 17346250555065150345ull, 7231817905680196034ull, 5289309207457602286ull}}, {{11125951099641626296ull, 12459441156976662123ull, 18263144418955020851ull, 6611636509322002857ull}}, {{9295752856124644966ull, 10962615427793439750ull, 8993872468411612352ull, 8264545636652503572ull}}, {{1198159516650515200ull, 6851634642370899844ull, 14844542329612033528ull, 5165341022907814732ull}}, {{1497699395813144000ull, 8564543302963624805ull, 108933838305490294ull, 6456676278634768416ull}}, {{6483810263193817904ull, 1482307091849755198ull, 136167297881862868ull, 8070845348293460520ull}}, {{17887439469778299902ull, 10149813969260872806ull, 85104561176164292ull, 5044278342683412825ull}}, {{13135927300368099070ull, 12687267461576091008ull, 4718066719897593269ull, 6305347928354266031ull}}, {{16419909125460123837ull, 2024026271687950048ull, 1285897381444603683ull, 7881684910442832539ull}}, {{10262443203412577398ull, 17405917484300826444ull, 16944586927898734965ull, 4926053069026770336ull}}, {{12828054004265721748ull, 7922338800093869343ull, 2733989586163867091ull, 6157566336283462921ull}}, {{11423381486904764280ull, 5291237481689948775ull, 8029173001132221768ull, 7696957920354328651ull}}, {{14057142456956559531ull, 3307023426056217984ull, 2712390116493944653ull, 4810598700221455407ull}}, {{17571428071195699414ull, 8745465300997660384ull, 17225545700899594528ull, 6013248375276819258ull}}, {{3517541015285072652ull, 10931831626247075481ull, 12308560089269717352ull, 7516560469096024073ull}}, {{13727678180621640167ull, 6832394766404422175ull, 775321028152491489ull, 4697850293185015046ull}}, {{12547911707349662305ull, 13152179476432915623ull, 10192523322045390169ull, 5872312866481268807ull}}, {{11073203615759689977ull, 2605166290258980817ull, 8128968134129349808ull, 7340391083101586009ull}}, {{6446464417448760ull, 3256457862823726022ull, 14772896186089075164ull, 9175488853876982511ull}}, {{13839087095543069187ull, 11258658201119604571ull, 16150589143946753833ull, 5734680533673114069ull}}, {{12687172851001448579ull, 238264696117342002ull, 6353178374651278580ull, 7168350667091392587ull}}, {{6635594026897034916ull, 297830870146677503ull, 3329786949886710321ull, 8960438333864240734ull}}, {{11064775294451728679ull, 11715359339910143199ull, 15916174898961357662ull, 5600273958665150458ull}}, {{9219283099637272944ull, 5420827138032903191ull, 10671846586846921270ull, 7000342448331438073ull}}, {{6912417856119203276ull, 15999405959395904797ull, 17951494251986039491ull, 8750428060414297591ull}}, {{6626104169288196000ull, 7693785715408746546ull, 18137212935132356538ull, 5469017537758935994ull}}, {{17506002248465020808ull, 393860107406157374ull, 13448144132060669865ull, 6836271922198669993ull}}, {{12659130773726500202ull, 5104011152685084622ull, 2975122109793673619ull, 8545339902748337492ull}}, {{3300270715151674722ull, 884163961214483937ull, 11082823355475821820ull, 5340837439217710932ull}}, {{8737024412366981307ull, 1105204951518104921ull, 13853529194344777275ull, 6676046799022138665ull}}, {{15532966533886114537ull, 15216564244679794863ull, 3481853437648807881ull, 8345058498777673332ull}}, {{16625633111319903442ull, 2592823625283789933ull, 11399530435385280734ull, 5215661561736045832ull}}, {{6946983333867715590ull, 12464401568459513225ull, 14249413044231600917ull, 6519576952170057290ull}}, {{13295415185762032392ull, 1745443905292227819ull, 8588394268434725339ull, 8149471190212571613ull}}, {{6003791481887576293ull, 17231803505303500051ull, 7673589426985397288ull, 5093419493882857258ull}}, {{2893053333932082462ull, 3093010307919823448ull, 368614746876970803ull, 6366774367353571573ull}}, {{3616316667415103078ull, 17701320940181943022ull, 5072454452023601407ull, 7958467959191964466ull}}, {{16095255972416603136ull, 17980854615254796244ull, 7781970050942138783ull, 4974042474494977791ull}}, {{1672325891811202303ull, 17864382250641107402ull, 5115776545250285575ull, 6217553093118722239ull}}, {{11313779401618778687ull, 17718791794873996348ull, 1783034663135469065ull, 7771941366398402799ull}}, {{16294484162866512488ull, 4156715844155165861ull, 8031925692100750022ull, 4857463353999001749ull}}, {{6533047148300976897ull, 14419266842048733135ull, 14651593133553325431ull, 6071829192498752186ull}}, {{3554622916948833218ull, 13412397534133528515ull, 9091119380086880981ull, 7589786490623440233ull}}, {{18362540387588878425ull, 10688591468047149273ull, 17211164658622770373ull, 4743616556639650145ull}}, {{9118117429203934319ull, 17972425353486324496ull, 7678897767996299254ull, 5929520695799562682ull}}, {{11397646786504917899ull, 13242159655003129812ull, 375250173140598260ull, 7411900869749453353ull}}, {{16346901278420349495ull, 17499721821231731940ull, 11763746404281343672ull, 4632438043593408345ull}}, {{1986882524315885253ull, 3427908202830113310ull, 869624950069515879ull, 5790547554491760432ull}}, {{11706975192249632374ull, 18119943308819805349ull, 1087031187586894848ull, 7238184443114700540ull}}, {{798660935029876755ull, 4203185062315205071ull, 1358788984483618561ull, 9047730553893375675ull}}, {{7416692112034754828ull, 14156205710015472929ull, 16990144179798119264ull, 5654831596183359796ull}}, {{13882551158470831439ull, 17695257137519341161ull, 2790936151038097464ull, 7068539495229199746ull}}, {{3518130892806375587ull, 3672327348189624836ull, 12712042225652397639ull, 8835674369036499682ull}}, {{11422203844858760550ull, 9212733620259597378ull, 12556712409460136428ull, 5522296480647812301ull}}, {{5054382769218674879ull, 11515917025324496723ull, 1860832456543006823ull, 6902870600809765377ull}}, {{1706292443095955695ull, 9783210263228233000ull, 6937726589106146433ull, 8628588251012206721ull}}, {{1066432776934972310ull, 17643721460586115385ull, 15865294164259811280ull, 5392867656882629200ull}}, {{5944726989596103291ull, 3607907752023092615ull, 1384873631615212485ull, 6741084571103286501ull}}, {{2819222718567741209ull, 9121570708456253673ull, 6342778057946403510ull, 8426355713879108126ull}}, {{13291229245173308016ull, 1089295674357770641ull, 17799294341498665906ull, 5266472321174442578ull}}, {{2778978501184471308ull, 10584991629801989110ull, 13025745890018556574ull, 6583090401468053223ull}}, {{12697095163335364943ull, 4007867500397710579ull, 11670496344095807814ull, 8228863001835066529ull}}, {{5629841467870909137ull, 16339975243030732824ull, 376531187418798027ull, 5143039376146916581ull}}, {{7037301834838636422ull, 15813283035361028126ull, 5082350002700885438ull, 6428799220183645726ull}}, {{18019999330403071335ull, 10543231757346509349ull, 15576309540230882606ull, 8035999025229557157ull}}, {{13568342590715613537ull, 1977833829914180439ull, 12041036471857995581ull, 5022499390768473223ull}}, {{12348742219967129017ull, 7083978305820113453ull, 10439609571395106572ull, 6278124238460591529ull}}, {{1600869719676747559ull, 8854972882275141817ull, 17661197982671271119ull, 7847655298075739411ull}}, {{12529758620866436984ull, 12451887079063045491ull, 8732405729955850497ull, 4904784561297337132ull}}, {{11050512257655658326ull, 1729800793546643152ull, 10915507162444813122ull, 6130980701621671415ull}}, {{13813140322069572908ull, 11385623028788079748ull, 9032697934628628498ull, 7663725877027089269ull}}, {{17856584738148258876ull, 11727700411419937746ull, 7951279218356586763ull, 4789828673141930793ull}}, {{13097358885830547786ull, 10047939495847534279ull, 14550785041373121358ull, 5987285841427413491ull}}, {{11760012588860796829ull, 3336552332954642041ull, 13576795283289013794ull, 7484107301784266864ull}}, {{432478840396916162ull, 6697031226524039180ull, 8485497052055633621ull, 4677567063615166790ull}}, {{540598550496145203ull, 12982975051582436879ull, 1383499278214766218ull, 5846958829518958488ull}}, {{14510806243402345215ull, 7005346777623270290ull, 1729374097768457773ull, 7308698536898698110ull}}, {{8915135767398155711ull, 13368369490456475767ull, 11385089659065348024ull, 9135873171123372637ull}}, {{12489488882264929175ull, 8355230931535297354ull, 9421524046129536467ull, 5709920731952107898ull}}, {{6388489065976385661ull, 5832352645991733789ull, 2553533020807144776ull, 7137400914940134873ull}}, {{12597297350897869980ull, 7290440807489667236ull, 7803602294436318874ull, 8921751143675168591ull}}, {{17096682881165944546ull, 9168211523108429926ull, 11794780461663781152ull, 5576094464796980369ull}}, {{12147481564602654874ull, 11460264403885537408ull, 908417521797562728ull, 6970118080996225462ull}}, {{15184351955753318593ull, 14325330504856921760ull, 10358893939101729218ull, 8712647601245281827ull}}, {{9490219972345824121ull, 13565017583962964004ull, 4168465702724886809ull, 5445404750778301142ull}}, {{11862774965432280151ull, 3121213924671541293ull, 14433954165260884320ull, 6806755938472876427ull}}, {{993410651508186476ull, 3901517405839426617ull, 13430756688148717496ull, 8508444923091095534ull}}, {{12150096703261086308ull, 2438448378649641635ull, 3782536911665560531ull, 5317778076931934709ull}}, {{10575934860648969981ull, 16883118528594215756ull, 9339857158009338567ull, 6647222596164918386ull}}, {{13219918575811212476ull, 16492212142315381791ull, 2451449410656897401ull, 8309028245206147983ull}}, {{15179978137523089653ull, 3390103561306031763ull, 8449684909301642732ull, 5193142653253842489ull}}, {{14363286653476474163ull, 4237629451632539704ull, 15173792155054441319ull, 6491428316567303111ull}}, {{17954108316845592703ull, 685350796113286726ull, 14355554175390663745ull, 8114285395709128889ull}}, {{6609631679601107536ull, 11957559293639273964ull, 2054692331978082984ull, 5071428372318205556ull}}, {{8262039599501384419ull, 14946949117049092455ull, 2568365414972603730ull, 6339285465397756945ull}}, {{5715863480949342620ull, 9460314359456589761ull, 7822142787143142567ull, 7924106831747196181ull}}, {{15101629721661808898ull, 12830225502301450456ull, 7194682251178158056ull, 4952566769841997613ull}}, {{430293078367709506ull, 16037781877876813071ull, 13605038832400085474ull, 6190708462302497016ull}}, {{14372924403241800595ull, 10823855310491240530ull, 17006298540500106843ull, 7738385577878121270ull}}, {{13594763770453513276ull, 4459066559843331379ull, 6017250569385178873ull, 4836490986173825794ull}}, {{12381768694639503691ull, 10185519218231552128ull, 16744935248586249399ull, 6045613732717282242ull}}, {{15477210868299379613ull, 8120213004362052256ull, 11707797023878035941ull, 7557017165896602803ull}}, {{9673256792687112258ull, 7380976136939976612ull, 5011530130710078511ull, 4723135728685376752ull}}, {{12091570990858890323ull, 4614534152747582861ull, 6264412663387598139ull, 5903919660856720940ull}}, {{1279405683291449191ull, 1156481672507090673ull, 7830515829234497674ull, 7379899576070901175ull}}, {{12328843598125625505ull, 5334487063744319574ull, 11811601420912642902ull, 4612437235044313234ull}}, {{6187682460802256073ull, 15891480866535175276ull, 5541129739286027819ull, 5765546543805391543ull}}, {{7734603076002820091ull, 15252665064741581191ull, 2314726155680146870ull, 7206933179756739429ull}}, {{5056567826576137210ull, 9842459294072200681ull, 7505093713027571492ull, 9008666474695924286ull}}, {{14689569937678555516ull, 15374909095649901233ull, 78997552214844278ull, 5630416546684952679ull}}, {{4526904366816030683ull, 9995264332707600734ull, 13933804995550719060ull, 7038020683356190848ull}}, {{14882002495374814162ull, 12494080415884500917ull, 17417256244438398825ull, 8797525854195238560ull}}, {{11607094568822952803ull, 891271232286731217ull, 10885785152773999266ull, 5498453658872024100ull}}, {{673810155746527292ull, 10337461077213189830ull, 13607231440967499082ull, 6873067073590030125ull}}, {{10065634731537934923ull, 3698454309661711479ull, 3173981245927210141ull, 8591333841987537657ull}}, {{13208550734852291183ull, 4617376952752263626ull, 13512953324772976098ull, 5369583651242211035ull}}, {{7287316381710588171ull, 14995093227795105341ull, 12279505637538832218ull, 6711979564052763794ull}}, {{13720831495565623117ull, 9520494497889105868ull, 6126010010068764465ull, 8389974455065954743ull}}, {{17798891721583290256ull, 17479524107249160927ull, 10746285283934059646ull, 5243734034416221714ull}}, {{17636928633551724916ull, 12626033097206675351ull, 4209484568062798750ull, 6554667543020277143ull}}, {{17434474773512268241ull, 6559169334653568381ull, 650169691651110534ull, 8193334428775346429ull}}, {{13202389742658861603ull, 17934538889440643950ull, 2712199066495638035ull, 5120834017984591518ull}}, {{7279615141468801196ull, 17806487593373417034ull, 12613620869974323352ull, 6401042522480739397ull}}, {{18322890963690777303ull, 3811365418007219676ull, 1931968032185740479ull, 8001303153100924247ull}}, {{2228434815451960006ull, 9299632413895594154ull, 8125009047757169655ull, 5000814470688077654ull}}, {{12008915556169725816ull, 7012854498942104788ull, 932889272841686261ull, 6251018088360097068ull}}, {{15011144445212157269ull, 13377754142105018889ull, 1166111591052107826ull, 7813772610450121335ull}}, {{2464436250616516438ull, 12972782357243024710ull, 7646348772048649247ull, 4883607881531325834ull}}, {{12303917350125421355ull, 11604291928126392983ull, 334563928206035751ull, 6104509851914157293ull}}, {{10768210669229388789ull, 9893678891730603325ull, 5029890928684932593ull, 7630637314892696616ull}}, {{9035974677482061946ull, 17712764353400096838ull, 3143681830428082870ull, 4769148321807935385ull}}, {{2071596309997801624ull, 12917583404895345240ull, 8541288306462491492ull, 5961435402259919231ull}}, {{2589495387497252030ull, 16146979256119181550ull, 6064924364650726461ull, 7451794252824899039ull}}, {{15453492672467946231ull, 12397705044288182420ull, 10708106755547785894ull, 4657371408015561899ull}}, {{870121766875381172ull, 6273759268505452218ull, 8773447426007344464ull, 5821714260019452374ull}}, {{10311024245449002273ull, 7842199085631815272ull, 1743437245654404772ull, 7277142825024315468ull}}, {{12888780306811252842ull, 9802748857039769090ull, 2179296557068005965ull, 9096428531280394335ull}}, {{12667173710184420930ull, 8432561044863549633ull, 8279589375808585584ull, 5685267832050246459ull}}, {{1998909082448362451ull, 10540701306079437042ull, 5737800701333344076ull, 7106584790062808074ull}}, {{11722008389915228871ull, 13175876632599296302ull, 16395622913521455903ull, 8883230987578510092ull}}, {{2714569225269630141ull, 15152451923015642045ull, 1023892284096134131ull, 5552019367236568808ull}}, {{8004897550014425580ull, 14328878885342164652ull, 1279865355120167664ull, 6940024209045711010ull}}, {{10006121937518031974ull, 17911098606677705815ull, 10823203730754985388ull, 8675030261307138762ull}}, {{13171355238589851840ull, 1971064592318790326ull, 11376188350149253772ull, 5421893913316961726ull}}, {{7240822011382538992ull, 2463830740398487908ull, 4996863400831791407ull, 6777367391646202158ull}}, {{9051027514228173740ull, 16914846480780273597ull, 15469451287894515066ull, 8471709239557752697ull}}, {{7962735205606302540ull, 15183465068915058902ull, 2750878027292990060ull, 5294818274723595436ull}}, {{730046970153102366ull, 532587262434272012ull, 3438597534116237576ull, 6618522843404494295ull}}, {{912558712691377958ull, 665734078042840015ull, 18133304972927460682ull, 8273153554255617868ull}}, {{7487878223073193080ull, 5027769817204162913ull, 2109943571224887118ull, 5170720971409761168ull}}, {{13971533797268879254ull, 15508084308359979449ull, 2637429464031108897ull, 6463401214262201460ull}}, {{3629359191303935355ull, 5550047330167810600ull, 3296786830038886122ull, 8079251517827751825ull}}, {{2268349494564959597ull, 8080465599782269529ull, 13589706814842773586ull, 5049532198642344890ull}}, {{7447122886633587400ull, 877209962873061103ull, 7763761481698691175ull, 6311915248302931113ull}}, {{4697217589864596346ull, 14931570508873490091ull, 14316387870550751872ull, 7889894060378663891ull}}, {{629917984451678765ull, 9332231568045931307ull, 6641899409880525968ull, 4931183787736664932ull}}, {{14622455535846762168ull, 11665289460057414133ull, 8302374262350657460ull, 6163979734670831165ull}}, {{4443011364526288997ull, 14581611825071767667ull, 14989653846365709729ull, 7704974668338538956ull}}, {{471039093615236672ull, 2195978363028772936ull, 145161617123792773ull, 4815609167711586848ull}}, {{588798867019045839ull, 7356658972213354074ull, 181452021404740966ull, 6019511459639483560ull}}, {{9959370620628583107ull, 18419195752121468400ull, 226815026755926207ull, 7524389324549354450ull}}, {{6224606637892864442ull, 18429526372716999606ull, 4753445410149841783ull, 4702743327843346531ull}}, {{17004130334220856360ull, 18425221947468861603ull, 1330120744259914325ull, 5878429159804183164ull}}, {{16643476899348682546ull, 9196469379053913292ull, 1662650930324892907ull, 7348036449755228955ull}}, {{2357602050476301567ull, 6883900705390003712ull, 15913371718188279846ull, 9185045562194036193ull}}, {{1473501281547688480ull, 18137495996150916032ull, 3028328296226593047ull, 5740653476371272621ull}}, {{1841876601934610599ull, 18060183976761257136ull, 8397096388710629213ull, 7175816845464090776ull}}, {{2302345752418263249ull, 8740171915669407708ull, 10496370485888286517ull, 8969771056830113470ull}}, {{10662338132116190339ull, 7768450456507073769ull, 1948545535252791169ull, 5606106910518820919ull}}, {{17939608683572625827ull, 14322249089061230115ull, 16270739974348152673ull, 7007633638148526148ull}}, {{17812824836038394380ull, 4067753306044373932ull, 1891680894225639226ull, 8759542047685657686ull}}, {{1909643485669220680ull, 7154031834705121612ull, 15017358614173188228ull, 5474713779803536053ull}}, {{2387054357086525850ull, 8942539793381402015ull, 4936640212434321573ull, 6843392224754420067ull}}, {{16818876001640321024ull, 15789860760154140422ull, 1559114247115514062ull, 8554240280943025084ull}}, {{5900111482597812736ull, 5256976956668949860ull, 10197818441301972097ull, 5346400175589390677ull}}, {{7375139353247265920ull, 11182907214263575229ull, 17358959070054853025ull, 6683000219486738346ull}}, {{13830610209986470304ull, 143575962547305324ull, 12475326800713790474ull, 8353750274358422933ull}}, {{17867503418096319748ull, 4701420995019453731ull, 10102922259659812998ull, 5221093921474014333ull}}, {{17722693254193011781ull, 15100148280629092972ull, 17240338843002154151ull, 6526367401842517916ull}}, {{3706622494031713110ull, 14263499332358978312ull, 3103679480043141073ull, 8157959252303147396ull}}, {{2316639058769820694ull, 1997158055083279589ull, 11163171711881738979ull, 5098724532689467122ull}}, {{7507484841889663771ull, 16331505624136263198ull, 4730592602997397915ull, 6373405665861833903ull}}, {{160984015507303906ull, 15802696011742941094ull, 1301554735319359490ull, 7966757082327292379ull}}, {{13935673064974228654ull, 14488371025766726087ull, 16954372774070457345ull, 4979223176454557736ull}}, {{12807905312790397913ull, 4275405726926243897ull, 2746221893878520066ull, 6224028970568197171ull}}, {{2174823585705833679ull, 14567629195512580680ull, 17267835422630313794ull, 7780036213210246463ull}}, {{1359264741066146049ull, 13716454265622750829ull, 17709926166785027977ull, 4862522633256404039ull}}, {{6310766944760070466ull, 3310509776746274824ull, 17525721690053897068ull, 6078153291570505049ull}}, {{7888458680950088082ull, 4138137220932843530ull, 8072094057285207623ull, 7597691614463131312ull}}, {{9541972694021192955ull, 9503864790724109062ull, 5045058785803254764ull, 4748557259039457070ull}}, {{2704093830671715386ull, 11879830988405136328ull, 15529695519108844263ull, 5935696573799321337ull}}, {{3380117288339644233ull, 10238102717079032506ull, 5577061343603891617ull, 7419620717249151672ull}}, {{6724259323639665550ull, 17928029244242865076ull, 3485663339752432260ull, 4637262948280719795ull}}, {{8405324154549581937ull, 3963292481594029729ull, 18192137229972704038ull, 5796578685350899743ull}}, {{15118341211614365325ull, 14177487638847312969ull, 18128485519038492143ull, 7245723356688624679ull}}, {{5062868459235792944ull, 13110173530131753308ull, 18048920880370727275ull, 9057154195860780849ull}}, {{12387664823877146398ull, 5888015447118651865ull, 4363046522590622691ull, 5660721372412988031ull}}, {{1649522974564269286ull, 2748333290470926928ull, 842122134810890460ull, 7075901715516235039ull}}, {{2061903718205336607ull, 3435416613088658660ull, 14887710723795776787ull, 8844877144395293798ull}}, {{10512061860733111187ull, 18288036447676269326ull, 4693133183944972587ull, 5528048215247058624ull}}, {{3916705289061613176ull, 18248359541167948754ull, 5866416479931215734ull, 6910060269058823280ull}}, {{14119253648181792278ull, 13587077389605160134ull, 7333020599914019668ull, 8637575336323529100ull}}, {{4212847511686232270ull, 17715295405358000892ull, 13806509911801038100ull, 5398484585202205687ull}}, {{5266059389607790337ull, 3697375182987949499ull, 12646451371323909722ull, 6748105731502757109ull}}, {{1970888218582350018ull, 13845091015589712682ull, 1973006158872723440ull, 8435132164378446387ull}}, {{5843491155041356665ull, 8653181884743570426ull, 17374029913791309814ull, 5271957602736528991ull}}, {{16527735980656471639ull, 1593105319074687224ull, 17105851373811749364ull, 6589947003420661239ull}}, {{2212925902111037933ull, 1991381648843359031ull, 16770628198837298801ull, 8237433754275826549ull}}, {{8300607716460480564ull, 12773828576595569154ull, 12787485633487005702ull, 5148396096422391593ull}}, {{1152387608720824897ull, 6743913683889685635ull, 2149298986576593416ull, 6435495120527989492ull}}, {{15275542566183194834ull, 8429892104862107043ull, 2686623733220741770ull, 8044368900659986865ull}}, {{7241371094650802819ull, 9880368583966204806ull, 13208354879331433366ull, 5027730562912491790ull}}, {{18275085905168279332ull, 3127088693102980199ull, 7287071562309515900ull, 6284663203640614738ull}}, {{18232171363032961261ull, 3908860866378725249ull, 18332211489741670683ull, 7855829004550768422ull}}, {{4477578074254518932ull, 137195032273009329ull, 6845946162661156273ull, 4909893127844230264ull}}, {{10208658611245536569ull, 4783179808768649565ull, 8557432703326445341ull, 6137366409805287830ull}}, {{17372509282484308615ull, 10590660779388199860ull, 1473418842303280868ull, 7671708012256609788ull}}, {{1634446264697917077ull, 15842535023972400721ull, 10144258813294326350ull, 4794817507660381117ull}}, {{6654743849299784250ull, 10579796743110725093ull, 17292009535045295842ull, 5993521884575476396ull}}, {{12930115830052118216ull, 4001373892033630558ull, 3168267845097068187ull, 7491902355719345496ull}}, {{3469636375355185981ull, 195015673307325147ull, 1980167403185667617ull, 4682438972324590935ull}}, {{18172103524476146188ull, 4855455610061544337ull, 16310267309264248233ull, 5853048715405738668ull}}, {{8880071350313019023ull, 10681005531004318326ull, 1941090062870758675ull, 7316310894257173336ull}}, {{1876717151036497971ull, 8739570895328010004ull, 2426362578588448344ull, 9145388617821466670ull}}, {{10396320256252587040ull, 5462231809580006252ull, 15351534666899943927ull, 5715867886138416668ull}}, {{12995400320315733800ull, 2216103743547619911ull, 742674259915378293ull, 7144834857673020836ull}}, {{11632564381967279346ull, 7381815697861912793ull, 928342824894222866ull, 8931043572091276045ull}}, {{352823711088467735ull, 9225320829591083400ull, 2886057274772583243ull, 5581902232557047528ull}}, {{441029638860584669ull, 6919965018561466346ull, 3607571593465729054ull, 6977377790696309410ull}}, {{9774659085430506644ull, 17873328310056608740ull, 13732836528686937125ull, 8721722238370386762ull}}, {{15332533965248842461ull, 13476673202999074414ull, 13194708848856723607ull, 5451076398981491726ull}}, {{9942295419706277268ull, 12234155485321455114ull, 7270014024216128701ull, 6813845498726864658ull}}, {{3204497237778070777ull, 1457636301369655181ull, 18310889567124936685ull, 8517306873408580822ull}}, {{4308653782824988188ull, 3216865697569728440ull, 6832619961025697524ull, 5323316795880363014ull}}, {{5385817228531235234ull, 4021082121962160550ull, 17764146988136897713ull, 6654145994850453767ull}}, {{15955643572518819851ull, 9638038670880088591ull, 17593497716743734237ull, 8317682493563067209ull}}, {{16889806260465344263ull, 8329617178513749321ull, 4078407045323752042ull, 5198551558476917006ull}}, {{7277199770299516617ull, 1188649436287410844ull, 14321380843509465861ull, 6498189448096146257ull}}, {{9096499712874395771ull, 6097497813786651459ull, 4066667999104668614ull, 8122736810120182822ull}}, {{3379469311332803405ull, 17645994188898820874ull, 16376725554722581595ull, 5076710506325114263ull}}, {{13447708676020780064ull, 17445806717696138188ull, 15859220924975839090ull, 6345888132906392829ull}}, {{16809635845025975080ull, 12583886360265396927ull, 5988968100937635151ull, 7932360166132991037ull}}, {{17423551430782316281ull, 14782458002806954935ull, 6048948072299715921ull, 4957725103833119398ull}}, {{17167753270050507447ull, 4643014448226529957ull, 16784557127229420710ull, 6197156379791399247ull}}, {{7624633532280970597ull, 15027140097137938255ull, 16369010390609387983ull, 7746445474739249059ull}}, {{11682924985316688479ull, 16309491588352293265ull, 7924788484917173537ull, 4841528421712030662ull}}, {{768598176363696887ull, 6551806430158202870ull, 682613569291691114ull, 6051910527140038328ull}}, {{10184119757309396917ull, 17413130074552529395ull, 853266961614613892ull, 7564888158925047910ull}}, {{4059231839104679121ull, 1659834259740555064ull, 14368349906291297395ull, 4728055099328154943ull}}, {{5074039798880848901ull, 15909850879957857542ull, 13348751364436733839ull, 5910068874160193679ull}}, {{15565921785455836934ull, 15275627581519934023ull, 12074253187118529395ull, 7387586092700242099ull}}, {{16646230143550979940ull, 7241424229236264812ull, 5240565232735386920ull, 4617241307937651312ull}}, {{2361043605729173309ull, 9051780286545331016ull, 6550706540919233650ull, 5771551634922064140ull}}, {{2951304507161466636ull, 2091353321326887962ull, 8188383176149042063ull, 7214439543652580175ull}}, {{12912502670806609103ull, 16449249706940773664ull, 5623792951758914674ull, 9018049429565725219ull}}, {{8070314169254130690ull, 14892467085265371444ull, 1209027585635627719ull, 5636280893478578262ull}}, {{10087892711567663362ull, 14003897838154326401ull, 10734656518899310457ull, 7045351116848222827ull}}, {{17221551907886967106ull, 3669814242410744289ull, 8806634630196750168ull, 8806688896060278534ull}}, {{3845940914788272586ull, 2293633901506715181ull, 892460625445580951ull, 5504180560037674084ull}}, {{9419112161912728636ull, 16702100432165557688ull, 1115575781806976188ull, 6880225700047092605ull}}, {{11773890202390910795ull, 2430881466497395494ull, 6006155745686108140ull, 8600282125058865756ull}}, {{2746995358066931343ull, 10742672953415647992ull, 12977219377908593395ull, 5375176328161791097ull}}, {{3433744197583664178ull, 8816655173342172086ull, 2386466167103578032ull, 6718970410202238872ull}}, {{13515552283834356031ull, 11020818966677715107ull, 2983082708879472540ull, 8398713012752798590ull}}, {{6141377168182778568ull, 16111383891028347750ull, 15699484748331834049ull, 5249195632970499118ull}}, {{16900093497083249017ull, 6304171808503270975ull, 10400983898560016754ull, 6561494541213123898ull}}, {{16513430852926673367ull, 17103586797483864527ull, 3777857836345245134ull, 8201868176516404873ull}}, {{17238423310720252711ull, 6078055730000027425ull, 13890376193784247969ull, 5126167610322753045ull}}, {{7712971083118152176ull, 12209255680927422186ull, 3527912186948146249ull, 6407709512903441307ull}}, {{417841817042914412ull, 1426511545877114021ull, 18244948288967346524ull, 8009636891129301633ull}}, {{2566994144865515460ull, 10114941753027972071ull, 4485563652963509721ull, 5006023056955813521ull}}, {{17043800736364058037ull, 17255363209712352992ull, 10218640584631775055ull, 6257528821194766901ull}}, {{2858006846745520930ull, 16957517993713053337ull, 17384986749217106723ull, 7821911026493458626ull}}, {{13315469325284420341ull, 8292605736856964383ull, 15477302736688079606ull, 4888694391558411641ull}}, {{12032650638178137523ull, 1142385134216429671ull, 5511570365577935796ull, 6110867989448014552ull}}, {{10429127279295283999ull, 1427981417770537089ull, 6889462956972419745ull, 7638584986810018190ull}}, {{18047419595628022260ull, 12421703432175055440ull, 18140972403389926052ull, 4774115616756261368ull}}, {{4112530420825476208ull, 15527129290218819301ull, 4229471430527855949ull, 5967644520945326711ull}}, {{9752349044459233164ull, 5573853557491360414ull, 675153269732432033ull, 7459555651181658389ull}}, {{1483532134359632824ull, 15012873519500570019ull, 2727813802796463972ull, 4662222281988536493ull}}, {{15689473223231704742ull, 319347825666160907ull, 8021453271922967870ull, 5827777852485670616ull}}, {{15000155510612243023ull, 9622556818937476942ull, 10026816589903709837ull, 7284722315607088270ull}}, {{9526822351410527971ull, 16639882042099234082ull, 3310148700524861488ull, 9105902894508860338ull}}, {{10565949988058967886ull, 10399926276312021301ull, 6680528956255426334ull, 5691189309068037711ull}}, {{17819123503501097761ull, 3776535808535250818ull, 3738975176891895014ull, 7113986636335047139ull}}, {{13050532342521596393ull, 13944041797523839331ull, 62032952687480863ull, 8892483295418808924ull}}, {{5850739704862303794ull, 15632555151093481438ull, 9262142632284451347ull, 5557802059636755577ull}}, {{16536796667932655551ull, 14929007920439463893ull, 16189364308782952088ull, 6947252574545944471ull}}, {{6835937779633655726ull, 214515826839778251ull, 15625019367551302207ull, 8684065718182430589ull}}, {{1966618103057340877ull, 7051601419415943263ull, 12071480113933257831ull, 5427541073864019118ull}}, {{16293330684103839808ull, 4202815755842541174ull, 5865978105561796481ull, 6784426342330023898ull}}, {{11143291318275023952ull, 9865205713230564372ull, 16555844668807021409ull, 8480532927912529872ull}}, {{16187929110776665778ull, 17694968616837572492ull, 10347402918004388380ull, 5300333079945331170ull}}, {{1788167314761280607ull, 3671966697337414000ull, 3710881610650709668ull, 6625416349931663963ull}}, {{2235209143451600758ull, 4589958371671767500ull, 26915994885999181ull, 8281770437414579954ull}}, {{10620377751512026282ull, 5174566991508548639ull, 4628508515231137392ull, 5176106523384112471ull}}, {{8663786170962644948ull, 6468208739385685799ull, 1173949625611533836ull, 6470133154230140589ull}}, {{6218046695275918281ull, 8085260924232107249ull, 6079123050441805199ull, 8087666442787675736ull}}, {{15415494230615918686ull, 11970817105286148886ull, 3799451906526128249ull, 5054791526742297335ull}}, {{10045995751415122549ull, 1128463326325522396ull, 137628864730272408ull, 6318489408427871669ull}}, {{12557494689268903187ull, 1410579157906902995ull, 4783722099340228414ull, 7898111760534839586ull}}, {{5542591171579370540ull, 14716670028973978084ull, 7601512330515030662ull, 4936319850334274741ull}}, {{6928238964474213175ull, 9172465499362696797ull, 14113576431571176232ull, 6170399812917843426ull}}, {{13271984724020154372ull, 11465581874203370996ull, 8418598502609194482ull, 7712999766147304283ull}}, {{17518362489367372291ull, 11777674689804494776ull, 2955781054917052599ull, 4820624853842065177ull}}, {{3451209037999663747ull, 10110407343828230567ull, 8306412337073703653ull, 6025781067302581471ull}}, {{18149069352781743396ull, 17249695198212676112ull, 5771329402914741662ull, 7532226334128226839ull}}, {{11343168345488589623ull, 6169373480455534666ull, 10524609904462795395ull, 4707641458830141774ull}}, {{4955588395005961220ull, 3100030832142030429ull, 3932390343723718436ull, 5884551823537677218ull}}, {{10806171512184839429ull, 3875038540177538036ull, 14138859966509423853ull, 7355689779422096522ull}}, {{13507714390231049286ull, 9455484193649310449ull, 8450202921282004008ull, 9194612224277620653ull}}, {{1524792466253323948ull, 5909677621030819031ull, 7587219835014946457ull, 5746632640173512908ull}}, {{15741048638098818647ull, 11998783044715911692ull, 9484024793768683071ull, 7183290800216891135ull}}, {{1229566723913971693ull, 10386792787467501712ull, 7243344973783465935ull, 8979113500271113919ull}}, {{768479202446232308ull, 13409274519808270426ull, 11444619636255748065ull, 5611945937669446199ull}}, {{10183971039912566193ull, 2926535094478174320ull, 9694088526892297178ull, 7014932422086807749ull}}, {{12729963799890707741ull, 12881540904952493708ull, 16729296677042759376ull, 8768665527608509686ull}}, {{17179599411786468147ull, 8050963065595308567ull, 5844124404724336706ull, 5480415954755318554ull}}, {{16862813246305697279ull, 840331795139359901ull, 16528527542760196691ull, 6850519943444148192ull}}, {{7243458502599957887ull, 14885472799206363589ull, 2213915354740694247ull, 8563149929305185241ull}}, {{6833004573338667631ull, 16220949527145059099ull, 12912912142781403664ull, 5351968705815740775ull}}, {{3929569698245946635ull, 1829442835221772258ull, 11529454160049366677ull, 6689960882269675969ull}}, {{14135334159662209102ull, 6898489562454603226ull, 576759644779544634ull, 8362451102837094962ull}}, {{13446269868216268593ull, 8923241994961514920ull, 4972160796414603300ull, 5226531939273184351ull}}, {{16807837335270335741ull, 11154052493701893650ull, 1603514977090866221ull, 6533164924091480439ull}}, {{11786424632233143868ull, 107507561845203351ull, 15839451776645746489ull, 8166456155114350548ull}}, {{14284044422786796774ull, 11596407272221721854ull, 676285323548815747ull, 5104035096946469093ull}}, {{8631683491628720159ull, 9883823071849764414ull, 5457042672863407588ull, 6380043871183086366ull}}, {{1566232327681124390ull, 12354778839812205518ull, 16044675377934035293ull, 7975054838978857957ull}}, {{14813953260082866456ull, 10027579784096322400ull, 12333765120422466010ull, 4984409274361786223ull}}, {{70697501394031454ull, 3311102693265627193ull, 10805520382100694609ull, 6230511592952232779ull}}, {{4700057895169927222ull, 8750564385009421895ull, 8895214459198480357ull, 7788139491190290974ull}}, {{9855065212122286370ull, 7774945749844582636ull, 947823018571662319ull, 4867587181993931859ull}}, {{12318831515152857962ull, 5106996168878340391ull, 15019836828496741611ull, 6084483977492414823ull}}, {{10786853375513684548ull, 1772059192670537585ull, 14163110017193539110ull, 7605604971865518529ull}}, {{18270998405764522603ull, 14942595050701249702ull, 1934414733104880087ull, 4753503107415949081ull}}, {{13615375970350877446ull, 14066557794949174224ull, 7029704434808488013ull, 5941878884269936351ull}}, {{17019219962938596807ull, 3748139188404304068ull, 4175444525083222113ull, 7427348605337420439ull}}, {{1413640439981847196ull, 13871802038821159803ull, 9527181855818095676ull, 4642092878335887774ull}}, {{15602108605259472707ull, 17339752548526449753ull, 2685605282917843787ull, 5802616097919859718ull}}, {{5667577701292177172ull, 17063004667230674288ull, 12580378640502080542ull, 7253270122399824647ull}}, {{7084472126615221465ull, 12105383797183567052ull, 11113787282200212774ull, 9066587652999780809ull}}, {{13651167115989289224ull, 2954178854812341503ull, 28588023734051128ull, 5666617283124863006ull}}, {{12452272876559223626ull, 3692723568515426879ull, 9259107066522339718ull, 7083271603906078757ull}}, {{10953655077271641628ull, 13839276497499059407ull, 16185569851580312551ull, 8854089504882598446ull}}, {{13763563450935857874ull, 15567076838577993985ull, 5504295138810307440ull, 5533805940551624029ull}}, {{3369396258387658630ull, 1012101974512940866ull, 11492054941940272205ull, 6917257425689530036ull}}, {{13435117359839349095ull, 5876813486568563986ull, 14365068677425340256ull, 8646571782111912545ull}}, {{13008634368326981089ull, 3673008429105352491ull, 2060638895749755804ull, 5404107363819945341ull}}, {{11649106941981338457ull, 4591260536381690614ull, 7187484638114582659ull, 6755134204774931676ull}}, {{5338011640621897263ull, 1127389652049725364ull, 8984355797643228324ull, 8443917755968664595ull}}, {{12559629312243461597ull, 9927990569385854160ull, 3309379364313323750ull, 5277448597480415372ull}}, {{15699536640304326997ull, 3186616174877541892ull, 4136724205391654688ull, 6596810746850519215ull}}, {{1177676726670857130ull, 3983270218596927366ull, 559219238312180456ull, 8246013433563149019ull}}, {{14571106009451449418ull, 2489543886623079603ull, 16490413088440970449ull, 5153758395976968136ull}}, {{13602196493386923869ull, 7723615876706237408ull, 2166272286841661445ull, 6442197994971210171ull}}, {{17002745616733654836ull, 14266205864310184664ull, 16542898413834240518ull, 8052747493714012713ull}}, {{10626716010458534273ull, 4304692646766477511ull, 3421782481005318468ull, 5032967183571257946ull}}, {{8671708994645779937ull, 5380865808458096889ull, 13500600138111423893ull, 6291208979464072432ull}}, {{15451322261734612825ull, 11337768279000009015ull, 16875750172639279866ull, 7864011224330090540ull}}, {{16574605441225214872ull, 11697791192802393538ull, 1323971821044774108ull, 4915007015206306588ull}}, {{11494884764676742781ull, 14622238991002991923ull, 1654964776305967635ull, 6143758769007883235ull}}, {{9756919937418540573ull, 13666112720326352000ull, 15903764025664623256ull, 7679698461259854043ull}}, {{6098074960886587858ull, 8541320450203970000ull, 7634009506826695583ull, 4799811538287408777ull}}, {{7622593701108234822ull, 6064964544327574596ull, 14154197901960757383ull, 5999764422859260971ull}}, {{9528242126385293528ull, 2969519661982080341ull, 13081061359023558825ull, 7499705528574076214ull}}, {{8260994338204502407ull, 13385164834807269973ull, 3563977330962336361ull, 4687315955358797634ull}}, {{14937928941183015913ull, 2896397988226923754ull, 13678343700557696260ull, 5859144944198497042ull}}, {{9449039139623994083ull, 3620497485283654693ull, 7874557588842344517ull, 7323931180248121303ull}}, {{16422984942957380507ull, 9137307875031956270ull, 5231510967625542742ull, 9154913975310151629ull}}, {{5652679570920974913ull, 1099131403467584765ull, 5575537363979658166ull, 5721821234568844768ull}}, {{11677535482078606546ull, 10597286291189256764ull, 6969421704974572707ull, 7152276543211055960ull}}, {{14596919352598258182ull, 8634921845559183051ull, 8711777131218215884ull, 8940345679013819950ull}}, {{6817231586160217412ull, 14620198190329265215ull, 833174688583997023ull, 5587716049383637469ull}}, {{3909853464272883861ull, 13663561719484193615ull, 5653154379157384183ull, 6984645061729546836ull}}, {{275630811913716922ull, 12467766130927854115ull, 7066442973946730229ull, 8730806327161933545ull}}, {{16313170321941930740ull, 10098196841043602773ull, 15945741904785176153ull, 5456753954476208465ull}}, {{6556404847145249713ull, 17234432069731891371ull, 6097119325699306479ull, 6820942443095260582ull}}, {{3583820040504174237ull, 16931354068737476310ull, 16844771193978908907ull, 8526178053869075727ull}}, {{16074945580597272611ull, 8276253283747228741ull, 17445511023877899923ull, 5328861283668172329ull}}, {{6258623920464427051ull, 5733630586256648023ull, 7971830724565211192ull, 6661076604585215412ull}}, {{3211593882153145910ull, 7167038232820810029ull, 9964788405706513990ull, 8326345755731519265ull}}, {{4313089185559410146ull, 18314456950795169980ull, 17757207799635041003ull, 5203966097332199540ull}}, {{5391361481949262682ull, 18281385170066574571ull, 3749765675834249638ull, 6504957621665249426ull}}, {{2127515834009190448ull, 13628359425728442406ull, 13910579131647587856ull, 8131197027081561782ull}}, {{15164755451537907742ull, 8517724641080276503ull, 4082425938852354506ull, 5081998141925976114ull}}, {{14344258295994996774ull, 1423783764495569821ull, 14326404460420218941ull, 6352497677407470142ull}}, {{4095264814711582255ull, 6391415724046850181ull, 8684633538670497868ull, 7940622096759337678ull}}, {{4865383518408432862ull, 13218006864384057171ull, 816209943241673263ull, 4962888810474586049ull}}, {{1470043379583153173ull, 11910822562052683560ull, 5631948447479479483ull, 6203611013093232561ull}}, {{1837554224478941466ull, 10276842184138466546ull, 11651621577776737258ull, 7754513766366540701ull}}, {{5760157408726726321ull, 11034712383513929495ull, 9588106495324154738ull, 4846571103979087938ull}}, {{2588510742481019997ull, 4570018442537636061ull, 2761761082300417615ull, 6058213879973859923ull}}, {{7847324446528662900ull, 1100837034744657172ull, 17287259408157685731ull, 7572767349967324903ull}}, {{14127949815935190120ull, 16828924211211268396ull, 17722066157739635437ull, 4732979593729578064ull}}, {{17659937269918987650ull, 7201097208731921783ull, 3705838623464992681ull, 5916224492161972581ull}}, {{17463235568971346659ull, 13613057529342290133ull, 9243984297758628755ull, 7395280615202465726ull}}, {{13220365239820785614ull, 6202317946625237381ull, 1165804167671755068ull, 4622050384501541079ull}}, {{2690398494493818305ull, 7752897433281546727ull, 15292313264871857547ull, 5777562980626926348ull}}, {{17198056173399436594ull, 5079435773174545504ull, 668647507380270318ull, 7221953725783657936ull}}, {{3050826143039744126ull, 15572666753322957689ull, 835809384225337897ull, 9027442157229572420ull}}, {{13435981385468309839ull, 2815387693185766699ull, 9745752901995611994ull, 5642151348268482762ull}}, {{12183290713407999394ull, 12742606653336984182ull, 2958819090639739184ull, 7052689185335603453ull}}, {{6005741354905223435ull, 15928258316671230228ull, 8310209881727061884ull, 8815861481669504316ull}}, {{12976960383670540455ull, 731789411064743084ull, 14417253212934189486ull, 5509913426043440197ull}}, {{16221200479588175569ull, 10138108800685704663ull, 4186508460885573145ull, 6887391782554300247ull}}, {{15664814581057831557ull, 17284322019284518733ull, 621449557679578527ull, 8609239728192875309ull}}, {{12096352122374838675ull, 17720230289693906064ull, 2694248982763430531ull, 5380774830120547068ull}}, {{15120440152968548344ull, 17538601843689994676ull, 3367811228454288164ull, 6725968537650683835ull}}, {{453806117501133814ull, 3476508230902941730ull, 18044822090850023918ull, 8407460672063354793ull}}, {{4895314841865596538ull, 16007875699596502293ull, 4360484779140183092ull, 5254662920039596746ull}}, {{10730829570759383576ull, 1563100550786076250ull, 14673978010780004674ull, 6568328650049495932ull}}, {{4190164926594453662ull, 11177247725337371121ull, 18342472513475005842ull, 8210410812561869915ull}}, {{14148068125190003299ull, 11597465846763244854ull, 9158202311708184699ull, 5131506757851168697ull}}, {{8461713119632728315ull, 9885146290026668164ull, 16059438908062618778ull, 6414383447313960871ull}}, {{10577141399540910394ull, 3133060825678559397ull, 15462612616650885569ull, 8017979309142451089ull}}, {{8916556383926762949ull, 13487378062117569383ull, 2746603857765721624ull, 5011237068214031931ull}}, {{6534009461481065782ull, 16859222577646961729ull, 17268312877489315742ull, 6264046335267539913ull}}, {{12779197845278720131ull, 11850656185203926353ull, 7750333041579480966ull, 7830057919084424892ull}}, {{1069469625658118226ull, 2794974097325066067ull, 14067330187841951412ull, 4893786199427765557ull}}, {{15171895087354811494ull, 3493717621656332583ull, 3749104679520275553ull, 6117232749284706947ull}}, {{14353182840766126464ull, 8978833045497803633ull, 74694830972956537ull, 7646540936605883684ull}}, {{2053210247837747184ull, 17140985699504597031ull, 9270056306212873643ull, 4779088085378677302ull}}, {{16401570865079347692ull, 16814546105953358384ull, 2364198345911316246ull, 5973860106723346628ull}}, {{2055219507639632999ull, 11794810595586922173ull, 2955247932389145308ull, 7467325133404183285ull}}, {{3590355201488464576ull, 16595128659096602166ull, 4152872966956909769ull, 4667078208377614553ull}}, {{13711316038715356528ull, 6908852768588588995ull, 9802777227123525116ull, 5833847760472018191ull}}, {{12527459029966807756ull, 8636065960735736244ull, 7641785515477018491ull, 7292309700590022739ull}}, {{15659323787458509695ull, 6183396432492282401ull, 4940545875918885210ull, 9115387125737528424ull}}, {{2869548339520486704ull, 8476308788735064405ull, 3087841172449303256ull, 5697116953585955265ull}}, {{8198621442827996284ull, 10595385985918830506ull, 8471487483989016974ull, 7121396191982444081ull}}, {{1024904766680219546ull, 4020860445543762325ull, 15201045373413659122ull, 8901745239978055101ull}}, {{2946408488388831169ull, 7124723796892239357ull, 11806496367597230903ull, 5563590774986284438ull}}, {{8294696628913426865ull, 4294218727687911292ull, 5534748422641762821ull, 6954488468732855548ull}}, {{10368370786141783581ull, 9979459428037277019ull, 6918435528302203526ull, 8693110585916069435ull}}, {{4174388732124920786ull, 1625476124095910233ull, 2018179195975183252ull, 5433194116197543397ull}}, {{9829671933583538887ull, 2031845155119887791ull, 7134410013396366969ull, 6791492645246929246ull}}, {{7675403898552035704ull, 7151492462327247643ull, 18141384553600234519ull, 8489365806558661557ull}}, {{2491284427381328363ull, 11387211816595611633ull, 13644208355213840526ull, 5305853629099163473ull}}, {{7725791552654048358ull, 5010642733889738733ull, 3220202388735136946ull, 6632317036373954342ull}}, {{14268925459244948351ull, 15486675454216949224ull, 13248625022773696990ull, 8290396295467442927ull}}, {{8918078412028092720ull, 5067486140458205361ull, 15197919666874642475ull, 5181497684667151829ull}}, {{15759284033462503804ull, 1722671657145368797ull, 5162341528311139382ull, 6476872105833939787ull}}, {{5864046986545966042ull, 11376711608286486805ull, 1841240891961536323ull, 8096090132292424734ull}}, {{5970872375804922729ull, 4804601745965360301ull, 14985833612758123914ull, 5060056332682765458ull}}, {{12075276488183541315ull, 15229124219311476184ull, 9508919979092879084ull, 6325070415853456823ull}}, {{15094095610229426643ull, 589661200429793614ull, 7274463955438710952ull, 7906338019816821029ull}}, {{4822123737966003748ull, 368538250268621009ull, 6852382981362888297ull, 4941461262385513143ull}}, {{10639340690884892589ull, 5072358831263164165ull, 3953792708276222467ull, 6176826577981891429ull}}, {{17910861882033503640ull, 1728762520651567302ull, 9553926903772665988ull, 7721033222477364286ull}}, {{6582602657843551871ull, 10303848612262005372ull, 1359518296430528338ull, 4825645764048352679ull}}, {{8228253322304439839ull, 3656438728472730907ull, 15534455925820324135ull, 6032057205060440848ull}}, {{5673630634453161895ull, 18405606465873077346ull, 971325833565853552ull, 7540071506325551061ull}}, {{8157705164960614088ull, 11503504041170673341ull, 2912921655192352422ull, 4712544691453469413ull}}, {{14808817474628155514ull, 5156008014608565868ull, 8252838087417828432ull, 5890680864316836766ull}}, {{64277769575642777ull, 6445010018260707336ull, 1092675572417509732ull, 7363351080396045958ull}}, {{80347211969553471ull, 8056262522825884170ull, 10589216502376662973ull, 9204188850495057447ull}}, {{4661903025908358824ull, 7341007085979871558ull, 13535789341626496214ull, 5752618031559410904ull}}, {{15050750819240224337ull, 18399630894329615255ull, 16919736677033120267ull, 7190772539449263630ull}}, {{14201752505622892517ull, 18387852599484631165ull, 11926298809436624526ull, 8988465674311579538ull}}, {{11181938325228001776ull, 6880721856250506574ull, 12065622774325278233ull, 5617791046444737211ull}}, {{4754050869680226411ull, 13212588338740521122ull, 10470342449479209887ull, 7022238808055921514ull}}, {{15165935623955058822ull, 11904049404998263498ull, 3864556024994236551ull, 8777798510069901893ull}}, {{14090395783399299668ull, 14357559905764996542ull, 4721190524835091796ull, 5486124068793688683ull}}, {{8389622692394348777ull, 17946949882206245678ull, 1289802137616476841ull, 6857655085992110854ull}}, {{1263656328638160163ull, 8598629297475643386ull, 10835624708875371860ull, 8572068857490138567ull}}, {{5401471223826238006ull, 14597515347777052924ull, 13689794470688189268ull, 5357543035931336604ull}}, {{6751839029782797507ull, 18246894184721316155ull, 17112243088360236585ull, 6696928794914170755ull}}, {{3828112768801108980ull, 8973559675619481482ull, 16778617842022907828ull, 8371160993642713444ull}}, {{7004256498928081017ull, 14831846834116951734ull, 1263264114409541584ull, 5231975621026695903ull}}, {{17978692660514877079ull, 93064468936638051ull, 15414138198294090693ull, 6539969526283369878ull}}, {{17861679807216208444ull, 4728016604598185468ull, 10044300711012837558ull, 8174961907854212348ull}}, {{1940177842655354470ull, 16790068433156029630ull, 15501059981237799281ull, 5109351192408882717ull}}, {{11648594340173968895ull, 7152527486162873325ull, 5541266921265085390ull, 6386688990511103397ull}}, {{725684869935297407ull, 18164031394558367465ull, 11538269670008744641ull, 7983361238138879246ull}}, {{11982768089778030640ull, 4434990593957897809ull, 2599732525328077497ull, 4989600773836799529ull}}, {{1143402056940374587ull, 10155424260874760166ull, 7861351675087484775ull, 6237000967295999411ull}}, {{10652624608030244042ull, 8082594307666062303ull, 5215003575431968065ull, 7796251209119999264ull}}, {{13575419407659984382ull, 16580836488359758699ull, 3259377234644980040ull, 4872657005699999540ull}}, {{12357588241147592574ull, 2279301536740146758ull, 4074221543306225051ull, 6090821257124999425ull}}, {{6223613264579714909ull, 16684184976207347160ull, 9704462947560169217ull, 7613526571406249281ull}}, {{3889758290362321819ull, 3510086582488510119ull, 17594504388293575521ull, 4758454107128905800ull}}, {{250511844525514369ull, 8999294246538025553ull, 3546386411657417785ull, 5948067633911132251ull}}, {{4924825824084280865ull, 15860803826599919845ull, 18268041069853935943ull, 7435084542388915313ull}}, {{5383859149266369493ull, 16830531419266031759ull, 4499996641017628108ull, 4646927838993072071ull}}, {{2118137918155573962ull, 2591420200372988083ull, 1013309782844647232ull, 5808659798741340089ull}}, {{16482730452976631164ull, 3239275250466235103ull, 5878323246983196944ull, 7260824748426675111ull}}, {{15991727047793401051ull, 4049094063082793879ull, 2736218040301608276ull, 9076030935533343889ull}}, {{16912358432511957513ull, 11754055826281521982ull, 13239351321256974932ull, 5672519334708339930ull}}, {{11917076003785171083ull, 14692569782851902478ull, 7325817114716442857ull, 7090649168385424913ull}}, {{5672972967876688046ull, 4530654173282714386ull, 13768957411822941476ull, 8863311460481781141ull}}, {{8157294123350317933ull, 12055030895156472299ull, 10911441391603032374ull, 5539569662801113213ull}}, {{5584931635760509512ull, 5845416582090814566ull, 18250987757931178372ull, 6924462078501391516ull}}, {{16204536581555412698ull, 7306770727613518207ull, 4366990623704421349ull, 8655577598126739396ull}}, {{17045364391113214793ull, 6872574713972142831ull, 11952741176670039151ull, 5409735998829212122ull}}, {{16695019470464130587ull, 3979032374037790635ull, 5717554433982773131ull, 6762169998536515153ull}}, {{16257088319652775329ull, 362104449119850390ull, 11758629060905854318ull, 8452712498170643941ull}}, {{5548994181355596677ull, 14061373335982070206ull, 9654986172279852900ull, 5282945311356652463ull}}, {{16159614763549271654ull, 17576716669977587757ull, 7457046696922428221ull, 6603681639195815579ull}}, {{6364460399154425855ull, 8135837782189820985ull, 4709622352725647373ull, 8254602048994769474ull}}, {{15507002795539985920ull, 7390741623082332067ull, 7555199988880917512ull, 5159126280621730921ull}}, {{14772067475997594496ull, 9238427028852915084ull, 14055686004528534794ull, 6448907850777163651ull}}, {{18340271287441503ull, 2324661749211368048ull, 12957921487233280589ull, 8061134813471454564ull}}, {{11462669554650940ull, 3758756602470798982ull, 17322072966375576176ull, 5038209258419659102ull}}, {{9237700373798089483ull, 4698445753088498727ull, 12429219171114694412ull, 6297761573024573878ull}}, {{6935439448820223949ull, 5873057191360623409ull, 6313151927038592207ull, 7872201966280717348ull}}, {{15863864701581109728ull, 10588189772241471486ull, 13169091991253895937ull, 4920126228925448342ull}}, {{10606458840121611352ull, 17846923233729227262ull, 7237992952212594113ull, 6150157786156810428ull}}, {{4034701513297238382ull, 8473595986879370366ull, 9047491190265742642ull, 7687697232696013035ull}}, {{16356746501092937701ull, 9907683510226994382ull, 3348838984702395199ull, 4804810770435008147ull}}, {{11222561089511396318ull, 7772918369356355074ull, 18021106786160157711ull, 6006013463043760183ull}}, {{4804829325034469590ull, 5104461943268055939ull, 17914697464272809235ull, 7507516828804700229ull}}, {{697175318932849542ull, 884445705328841010ull, 13502528924384199724ull, 4692198018002937643ull}}, {{10094841185520837735ull, 1105557131661051262ull, 12266475137052861751ull, 5865247522503672054ull}}, {{3395179445046271361ull, 15217004469858477790ull, 6109721884461301380ull, 7331559403129590068ull}}, {{13467346343162615009ull, 574511513613545621ull, 7637152355576626726ull, 9164449253911987585ull}}, {{10722934473690328333ull, 14194127751290629725ull, 16302435268303861463ull, 5727780783694992240ull}}, {{18015354110540298320ull, 13130973670685899252ull, 1931300011670275213ull, 7159725979618740301ull}}, {{4072448564465821284ull, 2578659033075210354ull, 7025811033015231921ull, 8949657474523425376ull}}, {{7156966371218526206ull, 13140876941740476231ull, 4391131895634519950ull, 5593535921577140860ull}}, {{4334521945595769854ull, 7202724140320819481ull, 5488914869543149938ull, 6991919901971426075ull}}, {{10029838450422100221ull, 18226777212255800159ull, 2249457568501549518ull, 8739899877464282594ull}}, {{13186178059154894494ull, 6780049739232487195ull, 6017596998740856353ull, 5462437423415176621ull}}, {{11871036555516230214ull, 13086748192467996898ull, 12133682266853458345ull, 6828046779268970776ull}}, {{5615423657540511959ull, 2523377185302832411ull, 15167102833566822932ull, 8535058474086213470ull}}, {{1203796776749126023ull, 10800482777669046065ull, 4867753252551876428ull, 5334411546303883419ull}}, {{6116431989363795432ull, 13500603472086307581ull, 1473005547262457631ull, 6668014432879854274ull}}, {{12257226005132132194ull, 12264068321680496572ull, 11064628970932847847ull, 8335018041099817842ull}}, {{16884138290062358430ull, 14582571728691392213ull, 11527079125260417808ull, 5209386275687386151ull}}, {{7270114807295784325ull, 18228214660864240267ull, 9797162888148134356ull, 6511732844609232689ull}}, {{4475957490692342502ull, 4338524252370748718ull, 16858139628612555850ull, 8139666055761540861ull}}, {{16632531486964877776ull, 7323263676159105852ull, 12842180277096541358ull, 5087291284850963038ull}}, {{2343920284996545604ull, 18377451632053658124ull, 6829353309515900889ull, 6359114106063703798ull}}, {{2929900356245682005ull, 9136756484784908943ull, 17760063673749651920ull, 7948892632579629747ull}}, {{8748716750294633109ull, 5710472802990568089ull, 8794196786879838498ull, 4968057895362268592ull}}, {{15547581956295679290ull, 16361463040592985919ull, 10992745983599798122ull, 6210072369202835740ull}}, {{14822791426942211209ull, 11228456763886456591ull, 13740932479499747653ull, 7762590461503544675ull}}, {{16181773669479963862ull, 9323628486642729321ull, 6282239790473648331ull, 4851619038439715422ull}}, {{6392159031567791115ull, 7042849589876023748ull, 17076171774946836222ull, 6064523798049644277ull}}, {{7990198789459738893ull, 18026934024199805493ull, 7510156663401381565ull, 7580654747562055347ull}}, {{7299717252626030761ull, 13572676774338572385ull, 2388004905412169526ull, 4737909217226284592ull}}, {{13736332584209926355ull, 7742473931068439673ull, 2985006131765211908ull, 5922386521532855740ull}}, {{3335357674980244231ull, 9678092413835549592ull, 3731257664706514885ull, 7402983151916069675ull}}, {{2084598546862652645ull, 8354650767860912447ull, 26193031227877851ull, 4626864469947543547ull}}, {{16440806238860479518ull, 5831627441398752654ull, 13867799344317011026ull, 5783580587434429433ull}}, {{11327635761720823589ull, 16512906338603216626ull, 3499691125114100070ull, 7229475734293036792ull}}, {{4936172665296253678ull, 11417760886399244975ull, 4374613906392625088ull, 9036844667866295990ull}}, {{10002636943451240405ull, 7136100553999528109ull, 16569191746777554392ull, 5648027917416434993ull}}, {{17114982197741438410ull, 8920125692499410136ull, 6876431628189779278ull, 7060034896770543742ull}}, {{2946983673467246397ull, 1926785078769486863ull, 17818911572091999906ull, 8825043620963179677ull}}, {{8759393823558110854ull, 5815926692658317193ull, 13442662741771193893ull, 5515652263101987298ull}}, {{15560928297875026471ull, 11881594384250284395ull, 7579956390359216558ull, 6894565328877484123ull}}, {{14839474353916395185ull, 5628620943458079686ull, 4863259469521632794ull, 8618206661096855154ull}}, {{4662985452770359087ull, 8129574108088687708ull, 7651223186878408400ull, 5386379163185534471ull}}, {{5828731815962948858ull, 10161967635110859635ull, 4952342965170622596ull, 6732973953981918089ull}}, {{2674228751526298169ull, 12702459543888574544ull, 10802114724890666149ull, 8416217442477397611ull}}, {{1671392969703936356ull, 10244880224144053042ull, 4445478693842972391ull, 5260135901548373507ull}}, {{11312613248984696253ull, 8194414261752678398ull, 945162348876327585ull, 6575169876935466884ull}}, {{4917394524376094508ull, 14854703845618235902ull, 1181452936095409481ull, 8218962346169333605ull}}, {{16908429633017222779ull, 2366660875870315582ull, 3044251094273324878ull, 5136851466355833503ull}}, {{11912165004416752666ull, 12181698131692670286ull, 17640371923123819809ull, 6421064332944791878ull}}, {{5666834218666165025ull, 1392064609333674146ull, 12827092867049998954ull, 8026330416180989848ull}}, {{8153457405093741045ull, 5481726399260934245ull, 8016933041906249346ull, 5016456510113118655ull}}, {{14803507774794564210ull, 16075530035930943614ull, 5409480283955423778ull, 6270570637641398319ull}}, {{9281012681638429454ull, 10871040508058903710ull, 2150164336516891819ull, 7838213297051747899ull}}, {{1188946907596630505ull, 4488557308323120867ull, 17484753774818915051ull, 4898883310657342436ull}}, {{15321241689777951843ull, 999010616976513179ull, 3409198144814092198ull, 6123604138321678046ull}}, {{14539866093795051900ull, 10472135308075417282ull, 13484869717872391055ull, 7654505172902097557ull}}, {{13699102327049295341ull, 13462613595188217657ull, 10733886582883938361ull, 4784065733063810973ull}}, {{3288819853529455465ull, 2993208938703108360ull, 18029044247032310856ull, 5980082166329763716ull}}, {{4111024816911819331ull, 3741511173378885450ull, 4089561235080836954ull, 7475102707912204646ull}}, {{7181076528997274986ull, 6950130501789191310ull, 16391033827207686808ull, 4671939192445127903ull}}, {{18199717698101369540ull, 8687663127236489137ull, 15877106265582220606ull, 5839923990556409879ull}}, {{8914589067344548213ull, 1636206872190835614ull, 15234696813550387854ull, 7299904988195512349ull}}, {{1919864297325909458ull, 11268630627093320326ull, 5208312961655821105ull, 9124881235244390437ull}}, {{15034973241110857124ull, 125365114292243347ull, 5561038610248582143ull, 5703050772027744023ull}}, {{14182030532961183500ull, 13991764448147467896ull, 2339612244383339774ull, 7128813465034680029ull}}, {{17727538166201479375ull, 8266333523329559062ull, 7536201323906562622ull, 8911016831293350036ull}}, {{6468025335448536706ull, 554772433653586510ull, 13933497864296377447ull, 5569385519558343772ull}}, {{17308403706165446690ull, 14528523597349146849ull, 17416872330370471808ull, 6961731899447929715ull}}, {{7800446577424644651ull, 18160654496686433562ull, 17159404394535701856ull, 8702164874309912144ull}}, {{9486965129317790811ull, 11350409060429020976ull, 10724627746584813660ull, 5438853046443695090ull}}, {{11858706411647238513ull, 14188011325536276220ull, 4182412646376241267ull, 6798566308054618863ull}}, {{14823383014559048142ull, 13123328138492957371ull, 616329789542913680ull, 8498207885068273579ull}}, {{6958771374885711137ull, 8202080086558098357ull, 16526107182960178714ull, 5311379928167670986ull}}, {{13310150237034526825ull, 1029228071342847138ull, 11434261941845447585ull, 6639224910209588733ull}}, {{7414315759438382723ull, 5898221107605946827ull, 457769372024645769ull, 8299031137761985917ull}}, {{2328104340435295250ull, 15215603238322186527ull, 2591948866729097557ull, 5186894461101241198ull}}, {{16745188480826282774ull, 5184445992620569446ull, 12463308120266147755ull, 6483618076376551497ull}}, {{11708113564178077660ull, 1868871472348323904ull, 1744077095050520982ull, 8104522595470689372ull}}, {{7317570977611298537ull, 15003102725499866152ull, 10313420221261351421ull, 5065326622169180857ull}}, {{9146963722014123172ull, 4918820351592668978ull, 17503461295004077181ull, 6331658277711476071ull}}, {{2210332615662878157ull, 10760211457918224127ull, 17267640600327708572ull, 7914572847139345089ull}}, {{8298986912430380704ull, 15948504198053665887ull, 3874746347563736001ull, 4946608029462090681ull}}, {{5762047622110587976ull, 6100572192284918647ull, 9455118952882057906ull, 6183260036827613351ull}}, {{2590873509210847066ull, 16849087277210924117ull, 7207212672675184478ull, 7729075046034516689ull}}, {{3925138952470473368ull, 5918993529829439669ull, 16033722966490460059ull, 4830671903771572930ull}}, {{9518109709015479614ull, 2787055893859411682ull, 10818781671258299266ull, 6038339879714466163ull}}, {{2674265099414573710ull, 12707191904179040411ull, 8911791070645486178ull, 7547924849643082704ull}}, {{17812316751629966233ull, 12553680958539288160ull, 5569869419153428861ull, 4717453031026926690ull}}, {{3818651865827906175ull, 1857043142891946489ull, 16185708810796561885ull, 5896816288783658362ull}}, {{9385000850712270622ull, 6932989947042321015ull, 11008763976640926548ull, 7371020360979572953ull}}, {{7119565044962950374ull, 8666237433802901269ull, 18372640989228546089ull, 9213775451224466191ull}}, {{6755571162315537936ull, 16945613442195283053ull, 18400429645908923161ull, 5758609657015291369ull}}, {{13056149971321810324ull, 7346958747461940104ull, 9165479002103990240ull, 7198262071269114212ull}}, {{16320187464152262904ull, 9183698434327425130ull, 11456848752629987800ull, 8997827589086392765ull}}, {{14811803183522552219ull, 5739811521454640706ull, 9466373479607436327ull, 5623642243178995478ull}}, {{9291381942548414466ull, 2563078383390912979ull, 2609594812654519601ull, 7029552803973744348ull}}, {{7002541409758130179ull, 7815533997666029128ull, 3261993515818149501ull, 8786941004967180435ull}}, {{4376588381098831362ull, 7190551757754962157ull, 18179647011882201102ull, 5491838128104487771ull}}, {{10082421494800927106ull, 18211561734048478504ull, 18112872746425363473ull, 6864797660130609714ull}}, {{12603026868501158883ull, 8929394112278434418ull, 13417718896176928534ull, 8580997075163262143ull}}, {{12488577811240612206ull, 969185301746633607ull, 15303603337751662190ull, 5363123171977038839ull}}, {{10999036245623377353ull, 10434853664038067817ull, 14517818153762189833ull, 6703903964971298549ull}}, {{18360481325456609595ull, 17655253098474972675ull, 4312214636920573579ull, 8379879956214123187ull}}, {{9169457819196687045ull, 8728690177333163970ull, 389291138861664535ull, 5237424972633826992ull}}, {{2238450237141082998ull, 6299176703239067059ull, 486613923577080669ull, 6546781215792283740ull}}, {{16633120851708517460ull, 12485656897476221727ull, 608267404471350836ull, 8183476519740354675ull}}, {{17313229559958905269ull, 17026907597777414387ull, 16521068192290451936ull, 5114672824837721671ull}}, {{17029850931521243682ull, 2836890423512216368ull, 16039649221935677017ull, 6393341031047152089ull}}, {{2840569590692002986ull, 8157799047817658365ull, 6214503472137432559ull, 7991676288808940112ull}}, {{4081199003396195818ull, 12016153432527118334ull, 3884064670085895349ull, 4994797680505587570ull}}, {{14324870791100020581ull, 1185133735376734205ull, 14078452874462144995ull, 6243497100631984462ull}}, {{4071030433592862014ull, 15316475224503081469ull, 8374694056222905435ull, 7804371375789980578ull}}, {{4850237030209232711ull, 7266954006100731966ull, 9845869803566703801ull, 4877732109868737861ull}}, {{15286168324616316697ull, 13695378526053302861ull, 16919023272885767655ull, 6097165137335922326ull}}, {{5272652350488232159ull, 12507537139139240673ull, 11925407054252433761ull, 7621456421669902908ull}}, {{14824622765123614859ull, 899681684320943564ull, 16676751445762546909ull, 4763410263543689317ull}}, {{84034382694966958ull, 5736288123828567360ull, 7010881251921019924ull, 5954262829429611647ull}}, {{105042978368708697ull, 7170360154785709200ull, 4151915546473887001ull, 7442828536787014559ull}}, {{65651861480442936ull, 16010690142809538010ull, 9512476244187261231ull, 4651767835491884099ull}}, {{9305436863705329478ull, 15401676660084534608ull, 7278909286806688635ull, 5814709794364855124ull}}, {{11631796079631661847ull, 14640409806678280356ull, 9098636608508360794ull, 7268387242956068905ull}}, {{14539745099539577309ull, 9077140221493074637ull, 15984981779062838897ull, 9085484053695086131ull}}, {{11393183696425929770ull, 17202427684501641408ull, 7684770602700580358ull, 5678427533559428832ull}}, {{14241479620532412213ull, 12279662568772275952ull, 9605963253375725448ull, 7098034416949286040ull}}, {{17801849525665515266ull, 15349578210965344940ull, 12007454066719656810ull, 8872543021186607550ull}}, {{1902783916686171233ull, 14205172400280728492ull, 2892972773272397602ull, 5545339388241629719ull}}, {{2378479895857714042ull, 8533093463496134807ull, 17451274021872660715ull, 6931674235302037148ull}}, {{16808157925104306264ull, 6054680810942780604ull, 3367348453631274278ull, 8664592794127546436ull}}, {{1281726666335415607ull, 17619233562121401590ull, 11327964820374322231ull, 5415370496329716522ull}}, {{10825530369774045317ull, 17412355934224364083ull, 4936583988613126981ull, 6769213120412145653ull}}, {{8920226943790168742ull, 7930386862498291392ull, 10782416004193796631ull, 8461516400515182066ull}}, {{5575141839868855464ull, 11874020816702513976ull, 11350696021048510798ull, 5288447750321988791ull}}, {{6968927299836069330ull, 5619153984023366662ull, 9576684007883250594ull, 6610559687902485989ull}}, {{17934531161649862470ull, 16247314516883984135ull, 16582541028281451146ull, 8263199609878107486ull}}, {{18126611003672245900ull, 14766257591479877988ull, 5752402124248519062ull, 5164499756173817179ull}}, {{4211519680880755759ull, 9234449952495071678ull, 2578816636883260924ull, 6455624695217271474ull}}, {{14487771637955720506ull, 11543062440618839597ull, 12446892832958851963ull, 8069530869021589342ull}}, {{11360700282936019269ull, 4908571016173080796ull, 3167622002171894573ull, 5043456793138493339ull}}, {{14200875353670024086ull, 10747399788643738899ull, 17794585557997031928ull, 6304320991423116673ull}}, {{13139408173660142203ull, 13434249735804673624ull, 8408173892214126198ull, 7880401239278895842ull}}, {{8212130108537588877ull, 3784720066450533111ull, 9866794701061216778ull, 4925250774549309901ull}}, {{5653476617244598192ull, 13954272119917942197ull, 16945179394753908876ull, 6156563468186637376ull}}, {{11678531789983135644ull, 17442840149897427746ull, 2734730169732834479ull, 7695704335233296721ull}}, {{11910768387166847682ull, 17819304121326974197ull, 13238421402151491309ull, 4809815209520810450ull}}, {{1053402428676395890ull, 8439072096376554035ull, 7324654715834588329ull, 6012269011901013063ull}}, {{15151811091127658574ull, 15160526138898080447ull, 4544132376365847507ull, 7515336264876266329ull}}, {{16387410959595868465ull, 7169485827597606327ull, 14369297781297124452ull, 4697085165547666455ull}}, {{15872577681067447677ull, 8961857284497007909ull, 13349936208194017661ull, 5871356456934583069ull}}, {{6005664046052145885ull, 15814007624048647791ull, 2852362204960358364ull, 7339195571168228837ull}}, {{2895394039137794452ull, 1320765456351258123ull, 8177138774627835860ull, 9173994463960286046ull}}, {{17950522338956979196ull, 10048850447074312134ull, 499025715715009508ull, 5733746539975178779ull}}, {{13214780886841448187ull, 12561063058842890168ull, 14458840199925925597ull, 7167183174968973473ull}}, {{16518476108551810234ull, 1866270768271448998ull, 4238492194625243285ull, 8958978968711216842ull}}, {{5712361549417493492ull, 3472262239383349576ull, 7260743640068164957ull, 5599361855444510526ull}}, {{7140451936771866865ull, 8952013817656574874ull, 18299301586939982004ull, 6999202319305638157ull}}, {{18148936957819609390ull, 11190017272070718592ull, 9039068928392813793ull, 8749002899132047697ull}}, {{11343085598637255869ull, 76231767403117264ull, 17178633126313978381ull, 5468126811957529810ull}}, {{14178856998296569836ull, 4706975727681284484ull, 12249919371037697168ull, 6835158514946912263ull}}, {{17723571247870712295ull, 5883719659601605605ull, 10700713195369733556ull, 8543948143683640329ull}}, {{13383075039132889136ull, 12900696824105779311ull, 18217160793174553232ull, 5339967589802275205ull}}, {{12117157780488723516ull, 16125871030132224139ull, 8936392936186027828ull, 6674959487252844007ull}}, {{10534761207183516491ull, 1710594713955728558ull, 6558805151805146882ull, 8343699359066055009ull}}, {{1972539736062309903ull, 5680807714649718253ull, 15628468265946686561ull, 5214812099416284380ull}}, {{7077360688505275283ull, 11712695661739535720ull, 1088841258723806585ull, 6518515124270355476ull}}, {{8846700860631594104ull, 805811521892255938ull, 1361051573404758232ull, 8148143905337944345ull}}, {{10140874056322134219ull, 503632201182659961ull, 12379872279446443655ull, 5092589940836215215ull}}, {{17287778588830055677ull, 14464598306760488663ull, 10863154330880666664ull, 6365737426045269019ull}}, {{16998037217610181693ull, 18080747883450610829ull, 8967256895173445426ull, 7957171782556586274ull}}, {{12929616270220057510ull, 15912153445584019672ull, 10216221577910791295ull, 4973232364097866421ull}}, {{16162020337775071888ull, 15278505788552636686ull, 17381962990815877023ull, 6216540455122333026ull}}, {{10979153385364064051ull, 14486446217263407954ull, 12504081701665070471ull, 7770675568902916283ull}}, {{11473656884279927936ull, 15971557913430711827ull, 5509208054326975092ull, 4856672230564322677ull}}, {{9730385086922522016ull, 1517703318078838168ull, 11498196086336106770ull, 6070840288205403346ull}}, {{12162981358653152520ull, 11120501184453323518ull, 5149373071065357654ull, 7588550360256754183ull}}, {{2990177330730832421ull, 2338627221855939295ull, 10135887197056930390ull, 4742843975160471364ull}}, {{17572779718695704238ull, 12146656064174699926ull, 12669858996321162987ull, 5928554968950589205ull}}, {{12742602611514854490ull, 10571634061790987004ull, 2002265690119290022ull, 7410693711188236507ull}}, {{17187498669051559864ull, 1995585270191978973ull, 17392317120820413928ull, 4631683569492647816ull}}, {{7649315281032286118ull, 2494481587739973717ull, 3293652327315965794ull, 5789604461865809771ull}}, {{14173330119717745552ull, 12341474021529742954ull, 17952123464427120954ull, 7237005577332262213ull}}, {{8493290612792406132ull, 6203470490057402885ull, 8605096275251737481ull, 9046256971665327767ull}}, {{7614149642208947785ull, 15406384102354346563ull, 12295714199673417781ull, 5653910607290829854ull}}, {{4906001034333796827ull, 5422922072660769492ull, 6146270712736996419ull, 7067388259113537318ull}}, {{6132501292917246033ull, 2166966572398573961ull, 16906210427776021332ull, 8834235323891921647ull}}, {{15362028354141748531ull, 10577726144603884533ull, 17483910545001095188ull, 5521397077432451029ull}}, {{5367477387395021951ull, 13222157680754855667ull, 8019830125969205273ull, 6901746346790563787ull}}, {{2097660715816389535ull, 2692639045661405872ull, 5413101639034118688ull, 8627182933488204734ull}}, {{1311037947385243460ull, 1682899403538378670ull, 17218246579678487892ull, 5391989333430127958ull}}, {{10862169471086330132ull, 2103624254422973337ull, 12299436187743334057ull, 6739986666787659948ull}}, {{18189397857285300569ull, 7241216336456104575ull, 15374295234679167571ull, 8424983333484574935ull}}, {{18285902688444394712ull, 2219917201071371407ull, 16526463549315561588ull, 5265614583427859334ull}}, {{18245692342128105486ull, 2774896501339214259ull, 11434707399789676177ull, 6582018229284824168ull}}, {{18195429409232743953ull, 8080306645101405728ull, 14293384249737095221ull, 8227522786606030210ull}}, {{11372143380770464971ull, 7356034662402072532ull, 13545051174513072417ull, 5142201741628768881ull}}, {{14215179225963081214ull, 13806729346429978569ull, 3096255912859176809ull, 6427752177035961102ull}}, {{3933915977171687805ull, 3423353627755309500ull, 13093691927928746820ull, 8034690221294951377ull}}, {{11682069522587080686ull, 11362968054201844245ull, 1266028427314384906ull, 5021681388309344611ull}}, {{767528847951687146ull, 4980338030897529499ull, 15417593589425144845ull, 6277101735386680763ull}}, {{14794469115221772644ull, 10837108557049299777ull, 14660305968354043152ull, 7846377169233350954ull}}, {{2329014169372526047ull, 6773192848155812361ull, 13774377248648664874ull, 4903985730770844346ull}}, {{7522953730143045462ull, 17689863097049541259ull, 7994599523956055284ull, 6129982163463555433ull}}, {{4792006144251418924ull, 3665584797602374958ull, 14604935423372457010ull, 7662477704329444291ull}}, {{16830061895439300539ull, 6902676516928872252ull, 6822241630394091679ull, 4789048565205902682ull}}, {{2590833295589574058ull, 4016659627733702412ull, 17751174074847390407ull, 5986310706507378352ull}}, {{3238541619486967573ull, 409138516239740111ull, 3742223519849686393ull, 7482888383134222941ull}}, {{8941617539820436589ull, 11784926618718307329ull, 4644732709119747947ull, 4676805239458889338ull}}, {{15788707943202933640ull, 10119472254970496257ull, 15029287923254460742ull, 5846006549323611672ull}}, {{5900826873721503338ull, 3425968281858344514ull, 339865830358524312ull, 7307508186654514591ull}}, {{16599405629006654981ull, 4282460352322930642ull, 14259890343230319102ull, 9134385233318143238ull}}, {{14986314536556547267ull, 16511595775483995363ull, 4300745446091561534ull, 5708990770823839524ull}}, {{14121207152268296180ull, 11416122682500218396ull, 5375931807614451918ull, 7136238463529799405ull}}, {{17651508940335370225ull, 5046781316270497187ull, 11331600777945452802ull, 8920298079412249256ull}}, {{8726350078495912439ull, 7765924341096448646ull, 7082250486215908001ull, 5575186299632655785ull}}, {{1684565561265114740ull, 14319091444797948712ull, 13464499126197272905ull, 6968982874540819731ull}}, {{2105706951581393425ull, 4063806250715272178ull, 12218937889319203228ull, 8711228593176024664ull}}, {{5927752863165758795ull, 11763250943551820919ull, 7636836180824502017ull, 5444517870735015415ull}}, {{2798005060529810589ull, 869005624157612437ull, 4934359207603239618ull, 6805647338418769269ull}}, {{8109192344089651141ull, 10309629067051791354ull, 10779635027931437426ull, 8507059173023461586ull}}, {{9679931233483419867ull, 11055204185334757500ull, 11348957910884536295ull, 5316911983139663491ull}}, {{12099914041854274834ull, 9207319213241058971ull, 9574511370178282465ull, 6646139978924579364ull}}, {{10513206533890455638ull, 16120835034978711618ull, 11968139212722853081ull, 8307674973655724205ull}}, {{11182440102108922678ull, 3157992869220612905ull, 9785930017165477128ull, 5192296858534827628ull}}, {{142992072353989635ull, 3947491086525766132ull, 12232412521456846410ull, 6490371073168534535ull}}, {{178740090442487044ull, 14157735895011983473ull, 10678829633393670108ull, 8112963841460668169ull}}, {{11640927602595024163ull, 18071956971237265478ull, 18203483566939513577ull, 5070602400912917605ull}}, {{5327787466389004395ull, 8754888158764418136ull, 8919296403392228260ull, 6338253001141147007ull}}, {{6659734332986255494ull, 10943610198455522670ull, 6537434485812897421ull, 7922816251426433759ull}}, {{17997392013398573396ull, 9145599383248395620ull, 11003425581274142744ull, 4951760157141521099ull}}, {{4049995943038665129ull, 11431999229060494526ull, 9142595958165290526ull, 6189700196426901374ull}}, {{14285866965653107219ull, 5066626999470842349ull, 2204872910851837350ull, 7737125245533626718ull}}, {{11234509862746885964ull, 17001699929951440180ull, 15213103624564562055ull, 4835703278458516698ull}}, {{14043137328433607455ull, 16640438894011912321ull, 9793007493850926761ull, 6044629098073145873ull}}, {{3718863605259845606ull, 6965490562232726690ull, 16852945385741046356ull, 7555786372591432341ull}}, {{6935975771714791408ull, 13576803638250229989ull, 12838933875301847924ull, 4722366482869645213ull}}, {{13281655733070877164ull, 16971004547812787486ull, 2213609288845146193ull, 5902958103587056517ull}}, {{7378697629483820647ull, 7378697629483820646ull, 7378697629483820646ull, 7378697629483820646ull}}, {{0ull, 0ull, 0ull, 9223372036854775808ull}}, {{0ull, 0ull, 0ull, 5764607523034234880ull}}, {{0ull, 0ull, 0ull, 7205759403792793600ull}}, {{0ull, 0ull, 0ull, 9007199254740992000ull}}, {{0ull, 0ull, 0ull, 5629499534213120000ull}}, {{0ull, 0ull, 0ull, 7036874417766400000ull}}, {{0ull, 0ull, 0ull, 8796093022208000000ull}}, {{0ull, 0ull, 0ull, 5497558138880000000ull}}, {{0ull, 0ull, 0ull, 6871947673600000000ull}}, {{0ull, 0ull, 0ull, 8589934592000000000ull}}, {{0ull, 0ull, 0ull, 5368709120000000000ull}}, {{0ull, 0ull, 0ull, 6710886400000000000ull}}, {{0ull, 0ull, 0ull, 8388608000000000000ull}}, {{0ull, 0ull, 0ull, 5242880000000000000ull}}, {{0ull, 0ull, 0ull, 6553600000000000000ull}}, {{0ull, 0ull, 0ull, 8192000000000000000ull}}, {{0ull, 0ull, 0ull, 5120000000000000000ull}}, {{0ull, 0ull, 0ull, 6400000000000000000ull}}, {{0ull, 0ull, 0ull, 8000000000000000000ull}}, {{0ull, 0ull, 0ull, 5000000000000000000ull}}, {{0ull, 0ull, 0ull, 6250000000000000000ull}}, {{0ull, 0ull, 0ull, 7812500000000000000ull}}, {{0ull, 0ull, 0ull, 4882812500000000000ull}}, {{0ull, 0ull, 0ull, 6103515625000000000ull}}, {{0ull, 0ull, 0ull, 7629394531250000000ull}}, {{0ull, 0ull, 0ull, 4768371582031250000ull}}, {{0ull, 0ull, 0ull, 5960464477539062500ull}}, {{0ull, 0ull, 0ull, 7450580596923828125ull}}, {{0ull, 0ull, 2305843009213693952ull, 4656612873077392578ull}}, {{0ull, 0ull, 12105675798371893248ull, 5820766091346740722ull}}, {{0ull, 0ull, 5908722711110090752ull, 7275957614183425903ull}}, {{0ull, 0ull, 2774217370460225536ull, 9094947017729282379ull}}, {{0ull, 0ull, 17874786921033498624ull, 5684341886080801486ull}}, {{0ull, 0ull, 13120111614437097472ull, 7105427357601001858ull}}, {{0ull, 0ull, 7176767481191596032ull, 8881784197001252323ull}}, {{0ull, 0ull, 2179636666531053568ull, 5551115123125782702ull}}, {{0ull, 0ull, 11947917870018592768ull, 6938893903907228377ull}}, {{0ull, 0ull, 1099839282241077248ull, 8673617379884035472ull}}, {{0ull, 0ull, 687399551400673280ull, 5421010862427522170ull}}, {{0ull, 0ull, 10082621476105617408ull, 6776263578034402712ull}}, {{0ull, 0ull, 12603276845132021760ull, 8470329472543003390ull}}, {{0ull, 0ull, 3265362009780125696ull, 5293955920339377119ull}}, {{0ull, 0ull, 17916760567507320832ull, 6617444900424221398ull}}, {{0ull, 0ull, 13172578672529375232ull, 8271806125530276748ull}}, {{0ull, 0ull, 17456233707185635328ull, 5169878828456422967ull}}, {{0ull, 0ull, 17208606115554656256ull, 6462348535570528709ull}}, {{0ull, 0ull, 7675699589161156608ull, 8077935669463160887ull}}, {{0ull, 0ull, 11714841270866804736ull, 5048709793414475554ull}}, {{0ull, 0ull, 5420179551728730112ull, 6310887241768094443ull}}, {{0ull, 0ull, 2163538421233524736ull, 7888609052210118054ull}}, {{0ull, 0ull, 15187269568553116672ull, 4930380657631323783ull}}, {{0ull, 0ull, 14372400942264007936ull, 6162975822039154729ull}}, {{0ull, 0ull, 4130443122547846208ull, 7703719777548943412ull}}, {{0ull, 0ull, 11804898988447179688ull, 4814824860968089632ull}}, {{0ull, 0ull, 14756123735558974610ull, 6018531076210112040ull}}, {{0ull, 9223372036854775808ull, 18445154669448718262ull, 7523163845262640050ull}}, {{0ull, 1152921504606846976ull, 16139907686832836818ull, 4701977403289150031ull}}, {{0ull, 10664523917613334528ull, 15563198590113658118ull, 5877471754111437539ull}}, {{0ull, 4107282860161892352ull, 14842312219214684744ull, 7346839692639296924ull}}, {{0ull, 5134103575202365440ull, 106146200308804314ull, 9183549615799121156ull}}, {{0ull, 7820500752928866304ull, 9289713412047778504ull, 5739718509874450722ull}}, {{0ull, 9775625941161082880ull, 2388769728204947322ull, 7174648137343063403ull}}, {{0ull, 2996160389596577792ull, 16821020215538347865ull, 8968310171678829253ull}}, {{0ull, 13401815289566330880ull, 12818980643925161367ull, 5605193857299268283ull}}, {{0ull, 12140583093530525696ull, 11412039786479063805ull, 7006492321624085354ull}}, {{0ull, 1340670811630993408ull, 5041677696244053949ull, 8758115402030106693ull}}, {{0ull, 3143762266483064832ull, 5456891569366227670ull, 5473822126268816683ull}}, {{0ull, 13153074869958606848ull, 2209428443280396683ull, 6842277657836020854ull}}, {{0ull, 11829657569020870656ull, 11985157590955271662ull, 8552847072295026067ull}}, {{0ull, 2781849962210656256ull, 5184880485133350837ull, 5345529420184391292ull}}, {{0ull, 8088998471190708224ull, 6481100606416688546ull, 6681911775230489115ull}}, {{0ull, 887876052133609472ull, 3489689739593472779ull, 8352389719038111394ull}}, {{0ull, 16695823597079363584ull, 6792742105673308390ull, 5220243574398819621ull}}, {{0ull, 11646407459494428672ull, 13102613650519023392ull, 6525304467998524526ull}}, {{0ull, 14558009324368035840ull, 7154895026294003432ull, 8156630584998155658ull}}, {{0ull, 9098755827730022400ull, 9083495409861140049ull, 5097894115623847286ull}}, {{0ull, 15985130803089915904ull, 2130997225471649253ull, 6372367644529809108ull}}, {{0ull, 6146355448580231168ull, 2663746531839561567ull, 7965459555662261385ull}}, {{0ull, 10759001183003726336ull, 13194056628468195739ull, 4978412222288913365ull}}, {{0ull, 8837065460327270016ull, 2657512730303080962ull, 6223015277861141707ull}}, {{0ull, 1822959788554311712ull, 17156948968161014915ull, 7778769097326427133ull}}, {{0ull, 17280250932342302484ull, 13028936114314328273ull, 4861730685829016958ull}}, {{0ull, 7765255610145714393ull, 7062798106038134534ull, 6077163357286271198ull}}, {{4611686018427387904ull, 483197475827367183ull, 18051869669402443976ull, 7596454196607838997ull}}, {{9799832789158199296ull, 301998422392104489ull, 13588261552590221437ull, 4747783872879899373ull}}, {{16861477004875137024ull, 4989184046417518515ull, 3150268885455613084ull, 5934729841099874217ull}}, {{16465160237666533376ull, 6236480058021898144ull, 8549522125246904259ull, 7418412301374842771ull}}, {{10290725148541583360ull, 1591957027049992388ull, 3037608319065621210ull, 4636507688359276732ull}}, {{12863406435676979200ull, 11213318320667266293ull, 3797010398832026512ull, 5795634610449095915ull}}, {{2244199989314060288ull, 14016647900834082867ull, 134576980112645236ull, 7244543263061369894ull}}, {{16640308041924739072ull, 17520809876042603583ull, 9391593261995582353ull, 9055679078826712367ull}}, {{17317721553844043776ull, 4032977144885545383ull, 12787274816388320827ull, 5659799424266695229ull}}, {{17035465923877666816ull, 429535412679543825ull, 2149035465203237322ull, 7074749280333369037ull}}, {{7459274349564919808ull, 9760291302704205590ull, 7297980349931434556ull, 8843436600416711296ull}}, {{50360450050686976ull, 15323554101044904302ull, 4561237718707146597ull, 5527147875260444560ull}}, {{9286322599418134528ull, 5319384571023966665ull, 5701547148383933247ull, 6908934844075555700ull}}, {{16219589267700056064ull, 2037544695352570427ull, 7126933935479916559ull, 8636168555094444625ull}}, {{7831400283098841088ull, 8190994462236438373ull, 15983548755743417609ull, 5397605346934027890ull}}, {{14400936372300939264ull, 14850429096222935870ull, 10756063907824496203ull, 6747006683667534863ull}}, {{8777798428521398272ull, 13951350351851281934ull, 8833393866353232350ull, 8433758354584418579ull}}, {{874437999398486016ull, 4107907951479663305ull, 3215028157257076267ull, 5271098971615261612ull}}, {{5704733517675495424ull, 523198920922191227ull, 4018785196571345334ull, 6588873714519077015ull}}, {{2519230878666981376ull, 9877370688007514842ull, 411795477286793763ull, 8236092143148846269ull}}, {{6186205317594251264ull, 3867513670791002824ull, 2563215182517940054ull, 5147557589468028918ull}}, {{7732756646992814080ull, 14057764125343529338ull, 12427391015002200875ull, 6434446986835036147ull}}, {{442573771886241792ull, 12960519138252023769ull, 10922552750325363190ull, 8043058733543795184ull}}, {{11805823653497370880ull, 3488638442980126951ull, 6826595468953351994ull, 5026911708464871990ull}}, {{10145593548444325696ull, 13584170090579934497ull, 17756616373046465800ull, 6283639635581089987ull}}, {{17293677953982795024ull, 16980212613224918121ull, 17584084447880694346ull, 7854549544476362484ull}}, {{3891019693598165034ull, 15224318901692961730ull, 1766680743070658158ull, 4909093465297726553ull}}, {{14087146653852482101ull, 9807026590261426354ull, 6820036947265710602ull, 6136366831622158191ull}}, {{8385561280460826818ull, 3035411200972007135ull, 3913360165654750349ull, 7670458539527697739ull}}, {{12158504827929098618ull, 4202975009821198411ull, 140007094320525016ull, 4794036587204811087ull}}, {{10586445016483985368ull, 5253718762276498014ull, 14010066923182819982ull, 5992545734006013858ull}}, {{4009684233750205902ull, 15790520489700398326ull, 8289211617123749169ull, 7490682167507517323ull}}, {{16341110701376042401ull, 2951546278421667097ull, 2874914251488649279ull, 4681676354692198327ull}}, {{6591330321437889289ull, 17524490903309247584ull, 17428700869642975310ull, 5852095443365247908ull}}, {{8239162901797361611ull, 12682241592281783672ull, 3339132013344167522ull, 7315119304206559886ull}}, {{10298953627246702013ull, 6629429953497453782ull, 13397287053534985211ull, 9143899130258199857ull}}, {{1825159998601800855ull, 1837550711722214662ull, 1455775380818283901ull, 5714936956411374911ull}}, {{11504822035107026876ull, 6908624408080156231ull, 15654777281305018588ull, 7143671195514218638ull}}, {{9769341525456395691ull, 8635780510100195289ull, 10345099564776497427ull, 8929588994392773298ull}}, {{17635053499478717067ull, 3091519809598928103ull, 11077373246412698796ull, 5580993121495483311ull}}, {{17432130855921008430ull, 3864399761998660129ull, 9235030539588485591ull, 6976241401869354139ull}}, {{7955105514619096825ull, 218813684070937258ull, 6932102156058219085ull, 8720301752336692674ull}}, {{9583626965064323420ull, 2442601561758029738ull, 8944249865963774832ull, 5450188595210432921ull}}, {{2756161669475628467ull, 3053251952197537173ull, 15791998350882106444ull, 6812735744013041151ull}}, {{8056888105271923487ull, 3816564940246921466ull, 15128311920175245151ull, 8515919680016301439ull}}, {{9647241084222340084ull, 9302882115295407772ull, 16372723977750610075ull, 5322449800010188399ull}}, {{12059051355277925104ull, 7016916625691871811ull, 15854218953760874690ull, 6653062250012735499ull}}, {{10462128175670018476ull, 17994517818969615572ull, 15206087673773705458ull, 8316327812515919374ull}}, {{15762202146648537356ull, 15858259655283397636ull, 4892118777681178007ull, 5197704882822449609ull}}, {{1256008609601120079ull, 15211138550676859142ull, 10726834490528860413ull, 6497131103528062011ull}}, {{10793382798856175906ull, 5178865133063910215ull, 8796857094733687613ull, 8121413879410077514ull}}, {{13663393276926191798ull, 5542633717378637836ull, 10109721702635942662ull, 5075883674631298446ull}}, {{17079241596157739747ull, 16151664183578073103ull, 3413780091440152519ull, 6344854593289123058ull}}, {{16737365976769786780ull, 15577894211045203475ull, 13490597151154966457ull, 7931068241611403822ull}}, {{8155010726267422785ull, 2818654854262170316ull, 3819937201044466132ull, 4956917651007127389ull}}, {{10193763407834278482ull, 3523318567827712895ull, 9386607519732970569ull, 6196147063758909236ull}}, {{8130518241365460198ull, 9015834228212029023ull, 11733259399666213211ull, 7745183829698636545ull}}, {{11999102928494494480ull, 3329053383418824187ull, 415758097150301401ull, 4840739893561647841ull}}, {{10387192642190730196ull, 8773002747700918138ull, 5131383639865264655ull, 6050924866952059801ull}}, {{3760618765883636937ull, 6354567416198759769ull, 11025915568258968723ull, 7563656083690074751ull}}, {{13879601774745742846ull, 1665761625910530903ull, 13808726257802937308ull, 4727285052306296719ull}}, {{12737816200004790653ull, 2082202032388163629ull, 12649221803826283731ull, 5909106315382870899ull}}, {{2087212194723824604ull, 16437810595767368249ull, 11199841236355466759ull, 7386382894228588624ull}}, {{12833722667770860138ull, 17191160649995687011ull, 6999900772722166724ull, 4616489308892867890ull}}, {{11430467316286187268ull, 3042206738785057148ull, 17973248002757484214ull, 5770611636116084862ull}}, {{14288084145357734085ull, 13026130460336097243ull, 13243187966592079459ull, 7213264545145106078ull}}, {{13248419163269779702ull, 11670977056992733650ull, 7330612921385323516ull, 9016580681431382598ull}}, {{12891947995471000218ull, 16517732697475234339ull, 18416691131147990909ull, 5635362925894614123ull}}, {{11503248975911362368ull, 6812107816561879212ull, 18409177895507600733ull, 7044203657368267654ull}}, {{14379061219889202960ull, 13126820789129736919ull, 13788100332529725108ull, 8805254571710334568ull}}, {{15904442290071833706ull, 17427635030060861382ull, 8617562707831078192ull, 5503284107318959105ull}}, {{10657180825735016325ull, 3337799713866525112ull, 15383639403216235645ull, 6879105134148698881ull}}, {{13321476032168770406ull, 8783935660760544294ull, 5394491198738130844ull, 8598881417685873602ull}}, {{3714236501678093600ull, 14713331824830115992ull, 7983243017638719681ull, 5374300886053671001ull}}, {{4642795627097617000ull, 4556606725755481278ull, 14590739790475787506ull, 6717876107567088751ull}}, {{15026866570726797057ull, 14919130444049127405ull, 13626738719667346478ull, 8397345134458860939ull}}, {{11697634615917942113ull, 4712770509103316724ull, 6210868690578397597ull, 5248340709036788087ull}}, {{14622043269897427641ull, 10502649154806533809ull, 3151899844795609092ull, 6560425886295985109ull}}, {{4442496032089620839ull, 13128311443508167262ull, 8551560824421899269ull, 8200532357869981386ull}}, {{16611618075338176737ull, 10511037661406298490ull, 9956411533691074947ull, 5125332723668738366ull}}, {{11541150557317945113ull, 8527111058330485209ull, 3222142380259067876ull, 6406665904585922958ull}}, {{591380141365267679ull, 10658888822913106512ull, 13251050012178610653ull, 8008332380732403697ull}}, {{369612588353292299ull, 8967648523534385522ull, 1364377229970549802ull, 5005207737957752311ull}}, {{9685387772296391182ull, 1986188617563206094ull, 15540529592745350965ull, 6256509672447190388ull}}, {{2883362678515713170ull, 7094421790381395522ull, 978917917222137090ull, 7820637090558987986ull}}, {{6413787692499708635ull, 9045699637415760105ull, 5223509716691223585ull, 4887898181599367491ull}}, {{12628920634052023698ull, 15918810565197088035ull, 1917701127436641577ull, 6109872726999209364ull}}, {{11174464774137641718ull, 6063455151214196332ull, 2397126409295801972ull, 7637340908749011705ull}}, {{16207412520690801882ull, 13013031506363648515ull, 13027419051878345992ull, 4773338067968132315ull}}, {{15647579632436114448ull, 16266289382954560644ull, 11672587796420544586ull, 5966672584960165394ull}}, {{1112730466835591444ull, 11109489691838424998ull, 5367362708670904925ull, 7458340731200206743ull}}, {{14530514597054408365ull, 9249274066612709575ull, 10272130720560397434ull, 4661462957000129214ull}}, {{13551457227890622552ull, 2338220546411111161ull, 3616791363845720985ull, 5826828696250161518ull}}, {{3104263479581114478ull, 7534461701441276856ull, 13744361241661927039ull, 7283535870312701897ull}}, {{3880329349476393097ull, 4806391108374208166ull, 3345393496795245087ull, 9104419837890877372ull}}, {{16260263898704909398ull, 9921523470374961959ull, 11314242972351803987ull, 5690262398681798357ull}}, {{15713643854953748843ull, 7790218319541314545ull, 307745660157591272ull, 7112827998352247947ull}}, {{5806996763410022342ull, 9737772899426643182ull, 14219740130479152802ull, 8891034997940309933ull}}, {{17464431032413427676ull, 10697794080569039892ull, 11193180590763164453ull, 5556896873712693708ull}}, {{3383794716807232979ull, 17983928619138687770ull, 13991475738453955566ull, 6946121092140867135ull}}, {{13453115432863817032ull, 13256538737068583904ull, 12877658654640056554ull, 8682651365176083919ull}}, {{8408197145539885645ull, 12897022729095252844ull, 14966065686791117202ull, 5426657103235052449ull}}, {{10510246431924857056ull, 6897906374514290247ull, 4872524053206732791ull, 6783321379043815562ull}}, {{8526122021478683416ull, 4010696949715474905ull, 15314027103363191797ull, 8479151723804769452ull}}, {{16858041309492646895ull, 4812528602785865767ull, 347894902747219065ull, 5299469827377980908ull}}, {{16460865618438420715ull, 10627346771909720113ull, 434868628434023831ull, 6624337284222476135ull}}, {{6741023967765862181ull, 8672497446459762238ull, 14378643840824693501ull, 8280421605278095168ull}}, {{18048198035135827576ull, 7726153913251045350ull, 8986652400515433438ull, 5175263503298809480ull}}, {{13336875507065008661ull, 434320354709030880ull, 11233315500644291798ull, 6469079379123511850ull}}, {{16671094383831260826ull, 9766272480241064408ull, 4818272338950588939ull, 8086349223904389813ull}}, {{10419433989894538017ull, 3798077290936971303ull, 5317263221057812039ull, 5053968264940243633ull}}, {{8412606468940784617ull, 135910595243826225ull, 11258265044749652953ull, 6317460331175304541ull}}, {{15127444104603368675ull, 4781574262482170685ull, 237773250654902479ull, 7896825413969130677ull}}, {{11760495574590799374ull, 9906012941692438534ull, 2454451290873008001ull, 4935515883730706673ull}}, {{5477247431383723409ull, 16994202195542936072ull, 7679750132018647905ull, 6169394854663383341ull}}, {{6846559289229654262ull, 7407694689146506378ull, 14211373683450697786ull, 7711743568329229176ull}}, {{8890785574195921818ull, 9241495199143954390ull, 8882108552156686116ull, 4819839730205768235ull}}, {{1890109930890126464ull, 11551868998929942988ull, 6490949671768469741ull, 6024799662757210294ull}}, {{2362637413612658080ull, 604778193380265023ull, 17337059126565362985ull, 7530999578446512867ull}}, {{8394177411148993156ull, 11907201416931135399ull, 8529818944889657913ull, 4706874736529070542ull}}, {{5881035745508853541ull, 1048943715881755537ull, 1438901644257296584ull, 5883593420661338178ull}}, {{11962980700313454830ull, 1311179644852194421ull, 11021999092176396538ull, 7354491775826672722ull}}, {{1118667820109654825ull, 10862346592920018835ull, 4554126828365719864ull, 9193114719783340903ull}}, {{16840068452064391930ull, 6788966620575011771ull, 9763858295369656771ull, 5745696699864588064ull}}, {{16438399546653102009ull, 3874522257291376810ull, 12204822869212070964ull, 7182120874830735080ull}}, {{11324627396461601703ull, 4843152821614221013ull, 15256028586515088705ull, 8977651093538418850ull}}, {{9383735132002195016ull, 14556185559577357893ull, 14146703884999318344ull, 5611031933461511781ull}}, {{16341354933430131674ull, 18195231949471697366ull, 3848321800966984218ull, 7013789916826889727ull}}, {{11203321629932888785ull, 13520667899984845900ull, 198716232781342369ull, 8767237396033612159ull}}, {{16225448055562831299ull, 1532888409849446831ull, 7041726673129420837ull, 5479523372521007599ull}}, {{15670124051026151219ull, 6527796530739196443ull, 4190472322984388142ull, 6849404215651259499ull}}, {{14975969045355301120ull, 17383117700278771362ull, 626404385303097273ull, 8561755269564074374ull}}, {{13971666671774451104ull, 3946919535033150245ull, 14226560796096599508ull, 5351097043477546483ull}}, {{3629525284435900168ull, 4933649418791437807ull, 13171514976693361481ull, 6688871304346933104ull}}, {{18371964660827038922ull, 10778747791916685162ull, 16464393720866701851ull, 8361089130433666380ull}}, {{16094163931444287230ull, 4430874360734234274ull, 1066874038686912849ull, 5225680706521041488ull}}, {{10894332877450583230ull, 10150278969345180747ull, 1333592548358641061ull, 6532100883151301860ull}}, {{9006230078385841133ull, 17299534730108863838ull, 1666990685448301326ull, 8165126103939127325ull}}, {{1017207780563762804ull, 6200523187890651995ull, 3347712187618882281ull, 5103203814961954578ull}}, {{15106567780986867217ull, 12362340003290702897ull, 13408012271378378659ull, 6379004768702443222ull}}, {{5048151670951420310ull, 10841238985685990718ull, 7536643302368197516ull, 7973755960878054028ull}}, {{16990152849626801406ull, 15999146402908520006ull, 13933774100834899255ull, 4983597475548783767ull}}, {{12014319025178725949ull, 15387246985208262104ull, 12805531607616236165ull, 6229496844435979709ull}}, {{15017898781473407436ull, 5399000676228163918ull, 2171856454238131495ull, 7786871055544974637ull}}, {{4774500719993491744ull, 10291904450283684305ull, 3663253293112526136ull, 4866794409715609148ull}}, {{10579811918419252584ull, 12864880562854605381ull, 4579066616390657670ull, 6083493012144511435ull}}, {{17836450916451453633ull, 6857728666713480918ull, 1112147252060934184ull, 7604366265180639294ull}}, {{6536095804354770617ull, 4286080416695925574ull, 14530150087820247577ull, 4752728915737899558ull}}, {{17393491792298239079ull, 9969286539297294871ull, 8939315572920533663ull, 5940911144672374448ull}}, {{17130178721945410945ull, 7849922155694230685ull, 11174144466150667079ull, 7426138930840468060ull}}, {{13012204710429575793ull, 11823730374949976034ull, 16207212328198942732ull, 4641336831775292537ull}}, {{7041883851182193933ull, 14779662968687470043ull, 6423957354966514703ull, 5801671039719115672ull}}, {{4190668795550354512ull, 13862892692431949650ull, 8029946693708143379ull, 7252088799648894590ull}}, {{14461708031292718948ull, 12716929847112549158ull, 814061330280403416ull, 9065110999561118238ull}}, {{4426881501130561438ull, 7948081154445343224ull, 14343846386707415847ull, 5665694374725698898ull}}, {{5533601876413201798ull, 5323415424629291126ull, 8706435946529494001ull, 7082117968407123623ull}}, {{16140374382371278055ull, 11265955299214001811ull, 6271358914734479597ull, 8852647460508904529ull}}, {{7781890979768354833ull, 9347065071222445084ull, 15448814367777519508ull, 5532904662818065330ull}}, {{9727363724710443541ull, 11683831339028056355ull, 10087645922867123577ull, 6916130828522581663ull}}, {{7547518637460666522ull, 769731118502906732ull, 7997871385156516568ull, 8645163535653227079ull}}, {{13940571185267692384ull, 481081949064316707ull, 11916198643363904711ull, 5403227209783266924ull}}, {{12814027963157227576ull, 14436410491612559596ull, 14895248304204880888ull, 6754034012229083655ull}}, {{16017534953946534470ull, 18045513114515699495ull, 14007374361828713206ull, 8442542515286354569ull}}, {{16928488373857665900ull, 6666759678144924280ull, 1837079948501863898ull, 5276589072053971606ull}}, {{2713866393612530759ull, 17556821634535931159ull, 11519721972482105680ull, 6595736340067464507ull}}, {{17227391047297827161ull, 3499282969460362332ull, 9787966447175244197ull, 8244670425084330634ull}}, {{1543747367706366168ull, 4492894865126420410ull, 10729165047911915527ull, 5152919015677706646ull}}, {{11153056246487733517ull, 1004432562980637608ull, 4188084273035118601ull, 6441148769597133308ull}}, {{13941320308109666897ull, 5867226722153184914ull, 5235105341293898251ull, 8051435961996416635ull}}, {{13325011210995929715ull, 1361173692132046619ull, 966097829094992455ull, 5032147476247760397ull}}, {{12044577995317524239ull, 15536525170447221986ull, 5819308304796128472ull, 6290184345309700496ull}}, {{5832350457292129491ull, 973912389349475867ull, 7274135380995160591ull, 7862730431637125620ull}}, {{1339376026593886980ull, 7526224270984504273ull, 13769706649976751177ull, 4914206519773203512ull}}, {{6285906051669746629ull, 14019466357158018245ull, 17212133312470938971ull, 6142758149716504390ull}}, {{12469068583014571190ull, 12912646928020134902ull, 12291794603733897906ull, 7678447687145630488ull}}, {{3181481845956719090ull, 12682090348439972218ull, 7682371627333686191ull, 4799029804466019055ull}}, {{13200224344300674670ull, 11240926917122577368ull, 4991278515739719835ull, 5998787255582523819ull}}, {{16500280430375843337ull, 9439472627975833806ull, 1627412126247261890ull, 7498484069478154774ull}}, {{5700989250557514182ull, 10511356410912284033ull, 14852190634186702393ull, 4686552543423846733ull}}, {{11737922581624280632ull, 17750881532067742945ull, 4730180237451214279ull, 5858190679279808417ull}}, {{837345171748187077ull, 17576915896657290778ull, 10524411315241405753ull, 7322738349099760521ull}}, {{10270053501540009654ull, 8136086815539449760ull, 17767200162479145096ull, 9153422936374700651ull}}, {{6418783438462506034ull, 5085054259712156100ull, 8798657092335771733ull, 5720889335234187907ull}}, {{8023479298078132543ull, 10968003843067583029ull, 6386635346992326762ull, 7151111669042734884ull}}, {{14641035141025053582ull, 4486632766979702978ull, 7983294183740408453ull, 8938889586303418605ull}}, {{13762332981568046393ull, 5109988488576008313ull, 7295401874051449235ull, 5586805991439636628ull}}, {{3367858171677894279ull, 1775799592292622488ull, 9119252342564311544ull, 6983507489299545785ull}}, {{4209822714597367849ull, 2219749490365778110ull, 16010751446632777334ull, 8729384361624432231ull}}, {{16466197251905518618ull, 15222401486760775030ull, 16924248681786567689ull, 5455865226015270144ull}}, {{11359374528027122464ull, 5192943803168805076ull, 2708566778523657996ull, 6819831532519087681ull}}, {{14199218160033903080ull, 6491179753961006345ull, 7997394491581960399ull, 8524789415648859601ull}}, {{1956982322380107569ull, 10974516373866710822ull, 16527586603307195009ull, 5327993384780537250ull}}, {{11669599939829910269ull, 18329831485760776431ull, 11436111217279217953ull, 6659991730975671563ull}}, {{9975313906359999932ull, 9077231301918806827ull, 9683453003171634538ull, 8324989663719589454ull}}, {{3928728182261306006ull, 10284955582126642171ull, 1440472108554883682ull, 5203118539824743409ull}}, {{299224209399244603ull, 3632822440803526906ull, 6412276154120992507ull, 6503898174780929261ull}}, {{9597402298603831562ull, 18376086106286572344ull, 12627031211078628537ull, 8129872718476161576ull}}, {{5998376436627394726ull, 4567524788788025859ull, 7891894506924142836ull, 5081170449047600985ull}}, {{2886284527356855504ull, 5709405985985032324ull, 14476554152082566449ull, 6351463061309501231ull}}, {{3607855659196069380ull, 11748443500908678309ull, 13484006671675820157ull, 7939328826636876539ull}}, {{4560752796211237315ull, 9648620197281617895ull, 6121661160583693646ull, 4962080516648047837ull}}, {{1089254976836658739ull, 2837403209747246561ull, 12263762469157004962ull, 6202600645810059796ull}}, {{5973254739473211328ull, 12770126049038834009ull, 15329703086446256202ull, 7753250807262574745ull}}, {{15262499258239226840ull, 12593014799076659159ull, 2663535401387828270ull, 4845781754539109216ull}}, {{14466438054371645646ull, 6517896461991048141ull, 3329419251734785338ull, 6057227193173886520ull}}, {{4247989512682393345ull, 17370742614343585985ull, 4161774064668481672ull, 7571533991467358150ull}}, {{14184208491494965601ull, 10856714133964741240ull, 16436166845699964757ull, 4732208744667098843ull}}, {{17730260614368707001ull, 18182578685883314454ull, 15933522538697568042ull, 5915260930833873554ull}}, {{12939453731106107943ull, 13504851320499367260ull, 10693531136517184245ull, 7394076163542341943ull}}, {{17310530618796093273ull, 10746375084525798489ull, 13600985987964322009ull, 4621297602213963714ull}}, {{7803105218212952879ull, 18044654874084636016ull, 7777860448100626703ull, 5776622002767454643ull}}, {{9753881522766191098ull, 17944132574178407116ull, 5110639541698395475ull, 7220777503459318304ull}}, {{12192351903457738873ull, 17818479699295620991ull, 6388299427122994344ull, 9025971879324147880ull}}, {{14537748967302168652ull, 11136549812059763119ull, 3992687141951871465ull, 5641232424577592425ull}}, {{13560500190700322911ull, 85629209792540187ull, 9602544945867227236ull, 7051540530721990531ull}}, {{12338939219948015734ull, 107036512240675234ull, 7391495163906646141ull, 8814425663402488164ull}}, {{12323523030894897738ull, 2372740829364115973ull, 13843056514296429646ull, 5509016039626555102ull}}, {{1569345733336458460ull, 12189298073559920775ull, 8080448606015761249ull, 6886270049533193878ull}}, {{15796740221952736787ull, 1401564536667737256ull, 877188720664925754ull, 8607837561916492348ull}}, {{9872962638720460492ull, 5487663853844723689ull, 9771614987270354404ull, 5379898476197807717ull}}, {{16952889316827963519ull, 6859579817305904611ull, 16826204752515330909ull, 6724873095247259646ull}}, {{16579425627607566495ull, 13186160790059768668ull, 11809383903789387828ull, 8406091369059074558ull}}, {{1138768980399953251ull, 17464722530642131226ull, 2769178921440979488ull, 5253807105661921599ull}}, {{10646833262354717372ull, 3384159089593112416ull, 17296531707083388073ull, 6567258882077401998ull}}, {{13308541577943396715ull, 8841884880418778424ull, 12397292596999459283ull, 8209073602596752498ull}}, {{8317838486214622947ull, 3220335041048042563ull, 12359993891552049956ull, 5130671001622970311ull}}, {{5785612089340890780ull, 4025418801310053204ull, 10838306346012674541ull, 6413338752028712889ull}}, {{7232015111676113475ull, 9643459520064954409ull, 18159568950943231080ull, 8016673440035891111ull}}, {{16049224490866040682ull, 6027162200040596505ull, 18267259621980601281ull, 5010420900022431944ull}}, {{6226472558300387140ull, 12145638768478133536ull, 4387330453766199985ull, 6263026125028039931ull}}, {{7783090697875483925ull, 1346990405315503208ull, 872477048780362078ull, 7828782656285049914ull}}, {{4864431686172177453ull, 14676927058604353217ull, 5156984173915114202ull, 4892989160178156196ull}}, {{10692225626142609721ull, 9122786786400665713ull, 6446230217393892753ull, 6116236450222695245ull}}, {{17976968051105650055ull, 16015169501428220045ull, 12669473790169753845ull, 7645295562778369056ull}}, {{13541448041154725236ull, 12315323947606331480ull, 7918421118856096153ull, 4778309726736480660ull}}, {{16926810051443406545ull, 1559096879225750638ull, 9898026398570120192ull, 5972887158420600825ull}}, {{11935140527449482373ull, 1948871099032188298ull, 16984219016640038144ull, 7466108948025751031ull}}, {{12071148848083314388ull, 1218044436895117686ull, 17532665913041105696ull, 4666318092516094394ull}}, {{5865564023249367176ull, 1522555546118897108ull, 12692460354446606312ull, 5832897615645117993ull}}, {{7331955029061708970ull, 1903194432648621385ull, 2030517387776094178ull, 7291122019556397492ull}}, {{13776629804754524117ull, 11602365077665552539ull, 2538146734720117722ull, 9113902524445496865ull}}, {{6304550618757883621ull, 11863164191968358241ull, 13115556755268543336ull, 5696189077778435540ull}}, {{12492374291874742430ull, 14828955239960447801ull, 16394445944085679170ull, 7120236347223044425ull}}, {{1780409809561264326ull, 9312822013095783944ull, 6657999374824935251ull, 8900295434028805532ull}}, {{1112756130975790204ull, 3514670748971171013ull, 13384621646120360340ull, 5562684646268003457ull}}, {{6002631182147125659ull, 4393338436213963766ull, 2895719002368286713ull, 6953355807835004322ull}}, {{16726661014538682881ull, 10103359063694842611ull, 12843020789815134199ull, 8691694759793755402ull}}, {{8148320124872982849ull, 13232128442450358488ull, 12638574012061846778ull, 5432309224871097126ull}}, {{10185400156091228561ull, 7316788516208172302ull, 6574845478222532665ull, 6790386531088871408ull}}, {{3508378158259259893ull, 13757671663687603282ull, 8218556847778165831ull, 8487983163861089260ull}}, {{6804422367339425337ull, 15516073817445833907ull, 14359970066716129452ull, 5304989477413180787ull}}, {{3893841940746893768ull, 948348198097740768ull, 13338276564967773912ull, 6631236846766475984ull}}, {{4867302425933617209ull, 1185435247622175960ull, 16672845706209717390ull, 8289046058458094980ull}}, {{3042064016208510756ull, 14575955085046023687ull, 1197156529526297560ull, 5180653786536309363ull}}, {{17637638075542802157ull, 18219943856307529608ull, 15331503717190035662ull, 6475817233170386703ull}}, {{3600303520718951080ull, 13551557783529636203ull, 14552693628060156674ull, 8094771541462983379ull}}, {{18391090764945202089ull, 13081409633133410530ull, 6789590508323903969ull, 5059232213414364612ull}}, {{13765491419326726803ull, 2516703986134599451ull, 8486988135404879962ull, 6324040266767955765ull}}, {{12595178255731020600ull, 12369252019523025122ull, 15220421187683487856ull, 7905050333459944706ull}}, {{12483672428259275779ull, 7730782512201890701ull, 14124449260729567814ull, 4940656458412465441ull}}, {{1769532480041931012ull, 440106103397587569ull, 3820503520629796056ull, 6175820573015581802ull}}, {{6823601618479801669ull, 550132629246984461ull, 13999001437642020878ull, 7719775716269477252ull}}, {{6570594020763569995ull, 14178890948561529000ull, 17972747935381038856ull, 4824859822668423282ull}}, {{8213242525954462494ull, 17723613685701911250ull, 13242562882371522762ull, 6031074778335529103ull}}, {{1043181120588302309ull, 12931145070272613255ull, 11941517584537015549ull, 7538843472919411379ull}}, {{7569517228008770799ull, 10387808678134077236ull, 5157605481121940766ull, 4711777170574632112ull}}, {{9461896535010963499ull, 3761388810812820737ull, 6447006851402425958ull, 5889721463218290140ull}}, {{16439056687191092278ull, 13925108050370801729ull, 8058758564253032447ull, 7362151829022862675ull}}, {{6713762803706701635ull, 12794699044536114258ull, 5461762186888902655ull, 9202689786278578344ull}}, {{8807787770744076426ull, 14914215930476153267ull, 3413601366805564159ull, 5751681116424111465ull}}, {{6398048695002707629ull, 14031083894667803680ull, 8878687726934343103ull, 7189601395530139331ull}}, {{7997560868753384536ull, 12927168849907366696ull, 6486673640240540975ull, 8987001744412674164ull}}, {{4998475542970865335ull, 14997009558833186041ull, 13277543062005113917ull, 5616876090257921352ull}}, {{10859780447140969573ull, 4911203893259318839ull, 16596928827506392397ull, 7021095112822401690ull}}, {{8963039540498824062ull, 10750690885001536453ull, 11522788997528214688ull, 8776368891028002113ull}}, {{7907742722025458991ull, 6719181803125960283ull, 284214095814052324ull, 5485230556892501321ull}}, {{5272992384104435834ull, 8398977253907450354ull, 4966953638194953309ull, 6856538196115626651ull}}, {{15814612516985320601ull, 15110407585811700846ull, 1597006029316303732ull, 8570672745144533314ull}}, {{5272446804688437472ull, 220632704277537221ull, 5609814786750077737ull, 5356670465715333321ull}}, {{11202244524287934743ull, 4887476898774309430ull, 11623954501864985075ull, 6695838082144166651ull}}, {{4779433618505142621ull, 1497660105040498884ull, 9918257108903843440ull, 8369797602680208314ull}}, {{12210518048420489946ull, 936037565650311802ull, 10810596711492290054ull, 5231123501675130196ull}}, {{6039775523670836625ull, 10393418993917665561ull, 13513245889365362567ull, 6538904377093912745ull}}, {{12161405423015933685ull, 8380087723969694047ull, 3056499306424539497ull, 8173630471367390932ull}}, {{14518407417026040409ull, 16766769873549528539ull, 11133684103370112993ull, 5108519044604619332ull}}, {{13536323252855162607ull, 7123404286654746962ull, 13917105129212641242ull, 6385648805755774165ull}}, {{7697032029214177451ull, 18127627395173209511ull, 3561323356233637840ull, 7982061007194717707ull}}, {{11728174045899942763ull, 11329767121983255944ull, 18366728162141881314ull, 4988788129496698566ull}}, {{14660217557374928454ull, 4938836865624294122ull, 13735038165822575835ull, 6235985161870873208ull}}, {{9101899909863884759ull, 1561860063602979749ull, 17168797707278219794ull, 7794981452338591510ull}}, {{7994530452878621927ull, 5587848558179250247ull, 6118812548621499467ull, 4871863407711619694ull}}, {{5381477047670889504ull, 2373124679296674905ull, 16871887722631650142ull, 6089829259639524617ull}}, {{11338532328015999784ull, 12189777885975619439ull, 7254801598007398965ull, 7612286574549405772ull}}, {{14004111732651081721ull, 9924454187948456101ull, 13757623035609400161ull, 4757679109093378607ull}}, {{3670081610531688440ull, 17017253753362958031ull, 12585342776084362297ull, 5947098886366723259ull}}, {{18422660068446774261ull, 7436509136421533826ull, 11119992451678064968ull, 7433873607958404074ull}}, {{16125848561206621817ull, 4647818210263458641ull, 11561681300726178509ull, 4646171004974002546ull}}, {{6322252646226113560ull, 10421458781256711206ull, 5228729589052947328ull, 5807713756217503183ull}}, {{17126187844637417758ull, 13026823476570889007ull, 1924225967888796256ull, 7259642195271878979ull}}, {{16796048787369384293ull, 16283529345713611259ull, 16240340515143159032ull, 9074552744089848723ull}}, {{8191687482892171231ull, 10177205841071007037ull, 7844369812750780443ull, 5671595465056155452ull}}, {{14851295372042601943ull, 8109821282911370892ull, 9805462265938475554ull, 7089494331320194315ull}}, {{117375141343700812ull, 913904566784437808ull, 7645141813995706539ull, 8861867914150242894ull}}, {{73359463339813008ull, 16712091418736131294ull, 166527615319928682ull, 5538667446343901809ull}}, {{9315071366029542068ull, 11666742236565388309ull, 4819845537577298757ull, 6923334307929877261ull}}, {{16255525225964315489ull, 748369740424571674ull, 10636492940399011351ull, 8654167884912346576ull}}, {{14771389284655085085ull, 7385260115406439152ull, 6647808087749382094ull, 5408854928070216610ull}}, {{17492532109304740ull, 8203107403273133ull, 17533132146541503426ull, 6761068660087770762ull}}, {{4633551683564018828ull, 9233625921108867224ull, 12693043146322103474ull, 8451335825109713453ull}}, {{2895969802227511768ull, 10382702219120429919ull, 10238994975665008623ull, 5282084890693570908ull}}, {{17455020308066553422ull, 8366691755473149494ull, 12798743719581260779ull, 6602606113366963635ull}}, {{12595403348228415969ull, 5846678675914048964ull, 11386743631049188070ull, 8253257641708704544ull}}, {{17095499129497535789ull, 17489232227728444314ull, 7116714769405742543ull, 5158286026067940340ull}}, {{12146001875017143928ull, 17249854266233167489ull, 8895893461757178179ull, 6447857532584925425ull}}, {{1347444288489266198ull, 16950631814364071458ull, 15731552845623860628ull, 8059821915731156781ull}}, {{5453838698733179278ull, 1370772847122768853ull, 12138063537728606845ull, 5037388697331972988ull}}, {{11428984391843862001ull, 6325152077330848970ull, 15172579422160758556ull, 6296735871664966235ull}}, {{5062858452950051693ull, 7906440096663561213ull, 14354038259273560291ull, 7870919839581207794ull}}, {{5470129542307476261ull, 2635682051201031806ull, 13582959930473363086ull, 4919324899738254871ull}}, {{16061033964739121134ull, 12517974600856065565ull, 12367013894664315953ull, 6149156124672818589ull}}, {{6241234400641737705ull, 1812410195787918245ull, 1623709313048231230ull, 7686445155841023237ull}}, {{6206614509614780018ull, 14967814427649612615ull, 3320661329868838470ull, 4804028222400639523ull}}, {{3146582118591087118ull, 9486395997707239961ull, 17985884717618211800ull, 6005035278000799403ull}}, {{8544913666666246801ull, 11857994997134049951ull, 17870669878595376846ull, 7506294097500999254ull}}, {{12258100069307486107ull, 2799560854781393315ull, 6557482655694722625ull, 4691433810938124534ull}}, {{10710939068206969730ull, 8111137086904129548ull, 17420225356473179089ull, 5864292263672655667ull}}, {{13388673835258712162ull, 14750607377057549839ull, 17163595677164085957ull, 7330365329590819584ull}}, {{12124156275646002298ull, 4603201166039773587ull, 3007750522745555831ull, 9162956661988524481ull}}, {{5271754663065057485ull, 9794529756415940348ull, 13409059122784442154ull, 5726847913742827800ull}}, {{6589693328831321856ull, 3019790158665149627ull, 16761323903480552693ull, 7158559892178534750ull}}, {{3625430642611764415ull, 8386423716758824938ull, 11728282842495915058ull, 8948199865223168438ull}}, {{6877580170059740664ull, 9853200841401653490ull, 2718490758132559007ull, 5592624915764480274ull}}, {{17820347249429451638ull, 7704815033324678958ull, 12621485484520474567ull, 6990781144705600342ull}}, {{13052062024932038739ull, 5019332773228460794ull, 6553484818795817401ull, 8738476430882000428ull}}, {{12769224784009912116ull, 14666298029336257756ull, 13319300048602161683ull, 5461547769301250267ull}}, {{15961530980012390145ull, 13721186518242934291ull, 12037439042325314200ull, 6826934711626562834ull}}, {{15340227706588099777ull, 17151483147803667864ull, 5823426766051866942ull, 8533668389533203543ull}}, {{9587642316617562361ull, 6107990948949904511ull, 10557170756423498695ull, 5333542743458252214ull}}, {{7372866877344565047ull, 3023302667759992735ull, 3973091408674597561ull, 6666928429322815268ull}}, {{4604397578253318405ull, 8390814353127378823ull, 4966364260843246951ull, 8333660536653519085ull}}, {{9795277514049405859ull, 12161787998345693620ull, 5409820672240723296ull, 5208537835408449428ull}}, {{12244096892561757324ull, 15202234997932117025ull, 6762275840300904120ull, 6510672294260561785ull}}, {{1470063060420032942ull, 556049673705594666ull, 13064530818803518055ull, 8138340367825702231ull}}, {{5530475431189908493ull, 7265060073707078522ull, 15082860789393280640ull, 5086462729891063894ull}}, {{16136466325842161424ull, 9081325092133848152ull, 9630203949886824992ull, 6358078412363829868ull}}, {{1723838833593150164ull, 11351656365167310191ull, 12037754937358531240ull, 7947598015454787335ull}}, {{7994928298636800709ull, 7094785228229568869ull, 14441125863490163881ull, 4967248759659242084ull}}, {{14605346391723388790ull, 13480167553714348990ull, 18051407329362704851ull, 6209060949574052605ull}}, {{9033310952799460179ull, 12238523423715548334ull, 8729201106421217352ull, 7761326186967565757ull}}, {{1034133327072274708ull, 7649077139822217709ull, 7761593700726954797ull, 4850828866854728598ull}}, {{5904352677267731289ull, 14173032443205160040ull, 478620089053917688ull, 6063536083568410748ull}}, {{7380440846584664111ull, 17716290554006450050ull, 598275111317397110ull, 7579420104460513435ull}}, {{9224461547542802974ull, 6460995577826643377ull, 16514823009069230858ull, 4737137565287820896ull}}, {{16142262952855891621ull, 17299616509138080029ull, 2196784687626986956ull, 5921421956609776121ull}}, {{6342770635787700814ull, 3177776562713048421ull, 7357666877961121600ull, 7401777445762220151ull}}, {{6270074656581006961ull, 1986110351695655263ull, 11516070826366782856ull, 4626110903601387594ull}}, {{3225907302298870797ull, 2482637939619569079ull, 5171716496103702762ull, 5782638629501734493ull}}, {{17867442183155752209ull, 12326669461379237156ull, 11076331638557016356ull, 7228298286877168116ull}}, {{3887558655235138645ull, 15408336826724046446ull, 13845414548196270445ull, 9035372858596460145ull}}, {{16264782214804125365ull, 11936053525916222980ull, 1735855064981587172ull, 5647108036622787591ull}}, {{1884233694795605090ull, 14920066907395278726ull, 16004876886509147677ull, 7058885045778484488ull}}, {{11578664155349282171ull, 4815025578961934695ull, 1559352034426882981ull, 8823606307223105611ull}}, {{14154194124734383213ull, 5315233996064903136ull, 17115496086012659527ull, 5514753942014441006ull}}, {{17692742655917979016ull, 2032356476653741016ull, 12170998070661048601ull, 6893442427518051258ull}}, {{3669184246187922154ull, 7152131614244564175ull, 5990375551471534943ull, 8616803034397564073ull}}, {{9210769181508533202ull, 11387611286543934465ull, 15273199765738179099ull, 5385501896498477545ull}}, {{16125147495313054407ull, 9622828089752530177ull, 5256441651890560162ull, 6731877370623096932ull}}, {{6321376313859154296ull, 2805163075335886914ull, 6570552064863200203ull, 8414846713278871165ull}}, {{8562546214589359339ull, 17894127986580786985ull, 6412438049753194078ull, 5259279195799294478ull}}, {{15314868786664087078ull, 13144287946371207923ull, 17238919599046268406ull, 6574098994749118097ull}}, {{14531899964902720943ull, 7206987896109234096ull, 7713591443525671796ull, 8217623743436397622ull}}, {{9082437478064200590ull, 13727739471923047118ull, 209308633776156968ull, 5136014839647748514ull}}, {{2129674810725474929ull, 17159674339903808898ull, 9485007829074972018ull, 6420018549559685642ull}}, {{11885465550261619469ull, 12226220888024985314ull, 2632887749488939215ull, 8025023186949607053ull}}, {{12040101987340900073ull, 14558917082656697677ull, 3951397852644280961ull, 5015639491843504408ull}}, {{1215069428893961379ull, 4363588298038708385ull, 4939247315805351202ull, 6269549364804380510ull}}, {{6130522804544839627ull, 14677857409403161289ull, 15397431181611464810ull, 7836936706005475637ull}}, {{15360791798908994527ull, 13785346899304363709ull, 11929237497720859458ull, 4898085441253422273ull}}, {{5365931693354079447ull, 8008311587275678829ull, 1076488816868910611ull, 6122606801566777842ull}}, {{11319100635119987212ull, 5398703465667210632ull, 10568983057940914072ull, 7653258501958472302ull}}, {{7074437896949992008ull, 3374189666042006645ull, 1993928392785683391ull, 4783286563724045189ull}}, {{13454733389614877914ull, 18052795137834672018ull, 7104096509409492142ull, 5979108204655056486ull}}, {{7595044700163821584ull, 13342621885438564215ull, 18103492673616640986ull, 7473885255818820607ull}}, {{11664431965243470346ull, 12950824696826490538ull, 18232211948651482472ull, 4671178284886762879ull}}, {{5357167919699562125ull, 16188530871033113173ull, 18178578917386965186ull, 5838972856108453599ull}}, {{11308145918051840560ull, 11012291551936615658ull, 18111537628306318579ull, 7298716070135566999ull}}, {{4911810360710024891ull, 9153678421493381669ull, 18027736016955510320ull, 9123395087669458749ull}}, {{5375724484657459509ull, 5721049013433363543ull, 13573178019810887902ull, 5702121929793411718ull}}, {{2107969587394436483ull, 16374683303646480237ull, 7743100487908834069ull, 7127652412241764648ull}}, {{7246648002670433507ull, 6633296074275936584ull, 9678875609886042587ull, 8909565515302205810ull}}, {{4529155001669020942ull, 1839967037208766413ull, 10660983274606164521ull, 5568478447063878631ull}}, {{10273129770513664082ull, 6911644814938345920ull, 8714543074830317747ull, 6960598058829848289ull}}, {{12841412213142080102ull, 4027870000245544496ull, 15504864861965285088ull, 8700747573537310361ull}}, {{8025882633213800064ull, 2517418750153465310ull, 2773011511087221324ull, 5437967233460818976ull}}, {{808981254662474272ull, 3146773437691831638ull, 3466264388859026655ull, 6797459041826023720ull}}, {{10234598605182868647ull, 17768524852396953259ull, 4332830486073783318ull, 8496823802282529650ull}}, {{4090781119025598953ull, 6493642014320707883ull, 7319705072223502478ull, 5310514876426581031ull}}, {{501790380354610787ull, 17340424554755660662ull, 4537945321851990193ull, 6638143595533226289ull}}, {{9850610012298039291ull, 7840472638162412115ull, 10284117670742375646ull, 8297679494416532861ull}}, {{3850788248472580605ull, 288609380424119668ull, 8733416553427678731ull, 5186049684010333038ull}}, {{4813485310590725757ull, 14195819780812313297ull, 1693398654929822605ull, 6482562105012916298ull}}, {{10628542656665795100ull, 3909716670733227909ull, 11340120355517054065ull, 8103202631266145372ull}}, {{8948682169629815889ull, 13972787965276737203ull, 16310947259052934598ull, 5064501644541340857ull}}, {{6574166693609881958ull, 8242612919741145696ull, 6553626018534004536ull, 6330627055676676072ull}}, {{8217708367012352447ull, 10303266149676432120ull, 8192032523167505670ull, 7913283819595845090ull}}, {{5136067729382720280ull, 1827855325120382171ull, 9731706345407078948ull, 4945802387247403181ull}}, {{1808398643301012445ull, 2284819156400477714ull, 16776318950186236589ull, 6182252984059253976ull}}, {{11483870340981041365ull, 7467709963927985046ull, 2523654614023244120ull, 7727816230074067471ull}}, {{2565732944685762949ull, 4667318727454990654ull, 8494813161405609431ull, 4829885143796292169ull}}, {{12430538217711979494ull, 1222462390891350413ull, 15230202470184399693ull, 6037356429745365211ull}}, {{1703114716857810656ull, 6139764007041575921ull, 14426067069303111712ull, 7546695537181706514ull}}, {{12593661744104601420ull, 3837352504400984950ull, 13627977936741832724ull, 4716684710738566571ull}}, {{6518705143275975967ull, 4796690630501231188ull, 12423286402499903001ull, 5895855888423208214ull}}, {{8148381429094969958ull, 10607549306553926889ull, 6305735966270102943ull, 7369819860529010268ull}}, {{14797162804796100352ull, 8647750614765020707ull, 7882169957837628679ull, 9212274825661262835ull}}, {{6942383743783868768ull, 12322373161869219798ull, 2620513214434823972ull, 5757671766038289272ull}}, {{17901351716584611768ull, 15402966452336524747ull, 3275641518043529965ull, 7197089707547861590ull}}, {{17765003627303376806ull, 5418650010138492222ull, 13317923934409188265ull, 8996362134434826987ull}}, {{6491441248637222600ull, 14915871302405027399ull, 6017859449792048713ull, 5622726334021766867ull}}, {{3502615542369140346ull, 4809781072724120537ull, 2910638293812672988ull, 7028407917527208584ull}}, {{8989955446388813336ull, 6012226340905150671ull, 3638297867265841235ull, 8785509896909010730ull}}, {{12536251181634090191ull, 1451798453852025217ull, 6885622185468538676ull, 5490943685568131706ull}}, {{1835255921760449027ull, 1814748067315031522ull, 17830399768690449153ull, 6863679606960164632ull}}, {{11517441939055337091ull, 6880121102571177306ull, 3841255637153509825ull, 8579599508700205791ull}}, {{11810087230336973586ull, 15829290735175455576ull, 9318313800862025496ull, 5362249692937628619ull}}, {{14762609037921216983ull, 1339869345259767854ull, 7036206232650143967ull, 6702812116172035774ull}}, {{9229889260546745420ull, 15509894736856873530ull, 18018629827667455766ull, 8378515145215044717ull}}, {{10380366806269103792ull, 5081998192108158052ull, 13567486651505853806ull, 5236571965759402948ull}}, {{12975458507836379740ull, 15575869776989973373ull, 16959358314382317257ull, 6545714957199253685ull}}, {{2384265079513310963ull, 5634779165955303005ull, 7364139837695732860ull, 8182143696499067107ull}}, {{3796008683909513304ull, 12745109015576840186ull, 2296744389346139085ull, 5113839810311916942ull}}, {{13968382891741667438ull, 2096328214188886520ull, 12094302523537449665ull, 6392299762889896177ull}}, {{17460478614677084297ull, 7232096286163496054ull, 1282820099139648369ull, 7990374703612370222ull}}, {{6301113115745789782ull, 16049275224920654794ull, 14636820617244443942ull, 4993984189757731388ull}}, {{17099763431537013035ull, 10838221994296042684ull, 18296025771555554928ull, 6242480237197164235ull}}, {{2927960215711714678ull, 13547777492870053356ull, 18258346196017055756ull, 7803100296496455294ull}}, {{11053347171674597482ull, 17690732969898559155ull, 6799780354083271943ull, 4876937685310284559ull}}, {{9204997946165858948ull, 17501730193945811040ull, 3888039424176702025ull, 6096172106637855699ull}}, {{11506247432707323685ull, 8042104687150100088ull, 248363261793489628ull, 7620215133297319624ull}}, {{7191404645442077303ull, 14249687466323588363ull, 155227038620931017ull, 4762634458310824765ull}}, {{4377569788375208725ull, 3977051277622321742ull, 4805719816703551676ull, 5953293072888530956ull}}, {{14695334272323786714ull, 4971314097027902177ull, 6007149770879439595ull, 7441616341110663695ull}}, {{2267054892561284840ull, 801228301428744909ull, 10671997634440731603ull, 4651010213194164809ull}}, {{7445504634128993954ull, 14836593432068094848ull, 17951683061478302407ull, 5813762766492706011ull}}, {{9306880792661242443ull, 13934055771657730656ull, 17827917808420490105ull, 7267203458115882514ull}}, {{11633600990826553054ull, 3582511659289999608ull, 13061525223670836824ull, 9084004322644853143ull}}, {{7271000619266595659ull, 2239069787056249755ull, 15080982292435354871ull, 5677502701653033214ull}}, {{4477064755655856669ull, 16633895289102475906ull, 9627855828689417780ull, 7096878377066291518ull}}, {{14819702981424596644ull, 2345625037668543266ull, 2811447749006996418ull, 8871097971332864398ull}}, {{13874000381817760807ull, 6077701666970227445ull, 15592212898411536473ull, 5544436232083040248ull}}, {{3507442421990037297ull, 12208813102140172211ull, 1043522049304868975ull, 6930545290103800311ull}}, {{18219361082769710333ull, 10649330359247827359ull, 15139460616913249931ull, 8663181612629750388ull}}, {{18304629704372150814ull, 4349988465316198147ull, 238790848716005399ull, 5414488507893593993ull}}, {{18269101112037800613ull, 825799563217859780ull, 4910174579322394653ull, 6768110634866992491ull}}, {{4389632316337699151ull, 5643935472449712630ull, 1526032205725605412ull, 8460138293583740614ull}}, {{16578578252993225681ull, 12750831707135846201ull, 14788828183860667094ull, 5287586433489837883ull}}, {{6888164760959368390ull, 6715167597065031944ull, 13874349211398445964ull, 6609483041862297354ull}}, {{8610205951199210487ull, 8393959496331289930ull, 8119564477393281647ull, 8261853802327871693ull}}, {{9993064737926894458ull, 12163753712848138062ull, 7380570807584494981ull, 5163658626454919808ull}}, {{3267958885553842265ull, 1369634085778008866ull, 9225713509480618727ull, 6454573283068649760ull}}, {{13308320643797078639ull, 15547100662504674794ull, 11532141886850773408ull, 8068216603835812200ull}}, {{12929386420800562054ull, 9716937914065421746ull, 7207588679281733380ull, 5042635377397382625ull}}, {{6938360989145926759ull, 12146172392581777183ull, 13621171867529554629ull, 6303294221746728281ull}}, {{4061265218005020544ull, 1347657435445057767ull, 3191406779129779575ull, 7879117777183410352ull}}, {{9455819788894219696ull, 7759814924794242960ull, 1994629236956112234ull, 4924448610739631470ull}}, {{11819774736117774620ull, 476396619138027892ull, 11716658583049916101ull, 6155560763424539337ull}}, {{14774718420147218275ull, 5207181792349922769ull, 810765173530231414ull, 7694450954280674172ull}}, {{2316669984950929566ull, 17089546675500865443ull, 9730100270311170441ull, 4809031846425421357ull}}, {{16730895536470825670ull, 7526875289093918091ull, 16774311356316350956ull, 6011289808031776696ull}}, {{16301933402161144183ull, 9408594111367397614ull, 2521145121685887079ull, 7514112260039720871ull}}, {{5577022357923327211ull, 12797900347245705365ull, 8493244728694761280ull, 4696320162524825544ull}}, {{11582963965831546917ull, 15997375434057131706ull, 10616555910868451600ull, 5870400203156031930ull}}, {{5255332920434657838ull, 1549975218861863017ull, 4047322851730788693ull, 7338000253945039913ull}}, {{11180852168970710202ull, 6549155042004716675ull, 9670839583090873770ull, 9172500317431299891ull}}, {{4682189596392999924ull, 8704907919680335826ull, 3738431730218102154ull, 5732812698394562432ull}}, {{15076109032346025713ull, 1657762862745643974ull, 4673039662772627693ull, 7166015872993203040ull}}, {{9621764253577756333ull, 6683889596859442872ull, 5841299578465784616ull, 8957519841241503800ull}}, {{6013602658486097709ull, 4177430998037151795ull, 3650812236541115385ull, 5598449900775939875ull}}, {{2905317304680234232ull, 9833474765973827648ull, 18398573350958557943ull, 6998062375969924843ull}}, {{3631646630850292789ull, 7680157439039896656ull, 18386530670270809525ull, 8747577969962406054ull}}, {{2269779144281432994ull, 7105941408613629362ull, 6879895650491868049ull, 5467236231226503784ull}}, {{12060595967206567050ull, 13494112779194424606ull, 8599869563114835061ull, 6834045289033129730ull}}, {{5852372922153433004ull, 3032582918710867046ull, 1526464917038768019ull, 8542556611291412163ull}}, {{17492791131628059340ull, 18036265388690149567ull, 17094941637645087675ull, 5339097882057132601ull}}, {{17254302896107686271ull, 17933645717435299055ull, 7533618991774195882ull, 6673872352571415752ull}}, {{16956192601707219934ull, 13193685109939348011ull, 9417023739717744853ull, 8342340440714269690ull}}, {{8291777366853318507ull, 10551896202925786459ull, 10497325855750978437ull, 5213962775446418556ull}}, {{5753035690139260230ull, 17801556272084620978ull, 13121657319688723046ull, 6517453469308023195ull}}, {{16414666649528851095ull, 13028573303251000414ull, 11790385631183515904ull, 8146816836635028994ull}}, {{5647480637528144031ull, 8142858314531875259ull, 11980677037917085344ull, 5091760522896893121ull}}, {{2447664778482792134ull, 10178572893164844074ull, 1140788242114192968ull, 6364700653621116402ull}}, {{12282953009958265975ull, 12723216116456055092ull, 10649357339497517018ull, 7955875817026395502ull}}, {{16900217668078692043ull, 12563696091212422336ull, 2044162318758560232ull, 4972422385641497189ull}}, {{2678528011388813437ull, 15704620114015527921ull, 7166888916875588194ull, 6215527982051871486ull}}, {{7959846032663404701ull, 10407403105664634093ull, 18181983182949261051ull, 7769409977564839357ull}}, {{7280746779628321890ull, 4198783931826702356ull, 13669582498556982109ull, 4855881235978024598ull}}, {{9100933474535402362ull, 9860165933210765849ull, 7863606086341451828ull, 6069851544972530748ull}}, {{15987852861596640857ull, 12325207416513457311ull, 9829507607926814785ull, 7587314431215663435ull}}, {{16909937066138982392ull, 785725607679828963ull, 3837599245740565289ull, 4742071519509789647ull}}, {{16525735314246340086ull, 5593843028027174108ull, 185313038748318707ull, 5927589399387237059ull}}, {{2210425069098373491ull, 2380617766606579732ull, 14066699353717562096ull, 7409486749234046323ull}}, {{10604887705041259240ull, 1487886104129112332ull, 6485844086859782358ull, 4630929218271278952ull}}, {{13256109631301574050ull, 11083229667016166223ull, 8107305108574727947ull, 5788661522839098690ull}}, {{11958451020699579658ull, 9242351065342819875ull, 910759348863634126ull, 7235826903548873363ull}}, {{10336377757447086669ull, 2329566794823749036ull, 14973507241361706370ull, 9044783629436091703ull}}, {{15683608135259204976ull, 6067665265192231051ull, 16275971053492148337ull, 5652989768397557314ull}}, {{14992824150646618316ull, 12196267599917676718ull, 11121591780010409613ull, 7066237210496946643ull}}, {{9517658151453497087ull, 1410276444614932186ull, 9290303706585624113ull, 8832796513121183304ull}}, {{10560222363085823583ull, 12410637823952802376ull, 5806439816616015070ull, 5520497820700739565ull}}, {{13200277953857279479ull, 6289925243086227162ull, 11869735789197406742ull, 6900622275875924456ull}}, {{7276975405466823541ull, 17085778590712559761ull, 14837169736496758427ull, 8625777844844905570ull}}, {{16077324674485234473ull, 8372768609981655898ull, 13884917103737861921ull, 5391111153028065981ull}}, {{10873283806251767283ull, 15077646780904457777ull, 3521088324390163689ull, 6738888941285082477ull}}, {{18203290776242097008ull, 5012000420848408509ull, 9013046423915092516ull, 8423611176606353096ull}}, {{13682899744365004582ull, 12355872299885031126ull, 5633154014946932822ull, 5264756985378970685ull}}, {{7880252643601479920ull, 6221468338001513100ull, 11653128537111053932ull, 6580946231723713356ull}}, {{9850315804501849900ull, 7776835422501891375ull, 14566410671388817415ull, 8226182789654641695ull}}, {{13073976405454738043ull, 11778051166704763965ull, 16021535697259092740ull, 5141364243534151059ull}}, {{2507412451536258842ull, 14722563958380954957ull, 15415233603146478021ull, 6426705304417688824ull}}, {{7745951582847711457ull, 4568146892694029984ull, 822297930223545911ull, 8033381630522111031ull}}, {{4841219739279819661ull, 9772620835574850596ull, 7431465234030798050ull, 5020863519076319394ull}}, {{6051524674099774576ull, 2992404007613787437ull, 65959505683721755ull, 6276079398845399243ull}}, {{12176091861052106123ull, 17575563064799398008ull, 13917507437386815905ull, 7845099248556749053ull}}, {{7610057413157566327ull, 4067197887858541899ull, 11004285157580453893ull, 4903187030347968158ull}}, {{4900885748019570005ull, 9695683378250565278ull, 4531984410120791558ull, 6128983787934960198ull}}, {{15349479221879238314ull, 2896232185958430789ull, 14888352549505765256ull, 7661229734918700247ull}}, {{11899267522888217898ull, 1810145116224019243ull, 16222749371082185141ull, 4788268584324187654ull}}, {{10262398385182884469ull, 6874367413707411958ull, 11055064676997955618ull, 5985335730405234568ull}}, {{3604625944623829778ull, 17816331303989040756ull, 13818830846247444522ull, 7481669663006543210ull}}, {{11476263252244669419ull, 15746893083420538376ull, 13248455297332040730ull, 4676043539379089506ull}}, {{14345329065305836774ull, 10460244317420897162ull, 7337197084810275105ull, 5845054424223861883ull}}, {{8708289294777520160ull, 17686991415203509357ull, 4559810337585455977ull, 7306318030279827354ull}}, {{15497047636899288103ull, 8273681213722222984ull, 14923134958836595780ull, 9132897537849784192ull}}, {{9685654773062055065ull, 14394422795431165173ull, 9326959349272872362ull, 5708060961156115120ull}}, {{16718754484754956735ull, 8769656457434180658ull, 11658699186591090453ull, 7135076201445143900ull}}, {{11675071069088920111ull, 15573756590220113727ull, 14573373983238863066ull, 8918845251806429875ull}}, {{14214448445821656925ull, 14345283887314958983ull, 6802515730310595464ull, 5574278282379018672ull}}, {{13156374538849683252ull, 17931604859143698729ull, 8503144662888244330ull, 6967847852973773340ull}}, {{2610410118279940353ull, 13191134037074847604ull, 10628930828610305413ull, 8709809816217216675ull}}, {{10854878360779738529ull, 10550301782385473704ull, 4337238758667746931ull, 5443631135135760422ull}}, {{13568597950974673161ull, 8576191209554454226ull, 14644920485189459472ull, 6804538918919700527ull}}, {{7737375401863565643ull, 10720239011943067783ull, 13694464588059436436ull, 8505673648649625659ull}}, {{11753388653805810383ull, 15923521419319193172ull, 6253197358323453820ull, 5316046030406016037ull}}, {{14691735817257262979ull, 1457657700439439849ull, 12428182716331705180ull, 6645057538007520046ull}}, {{4529611716289415012ull, 1822072125549299812ull, 6311856358559855667ull, 8306321922509400058ull}}, {{12054379359535660190ull, 17279696142964170046ull, 8556596242527297695ull, 5191451201568375036ull}}, {{5844602162564799430ull, 16987934160277824654ull, 10695745303159122119ull, 6489314001960468795ull}}, {{16529124740060775095ull, 16623231681919892913ull, 8757995610521514745ull, 8111642502450585994ull}}, {{3413173934896902579ull, 3471990773558851215ull, 10085433275003334620ull, 5069776564031616246ull}}, {{18101525473903291935ull, 4339988466948564018ull, 3383419556899392467ull, 6337220705039520308ull}}, {{13403534805524339111ull, 813299565258317119ull, 4229274446124240584ull, 7921525881299400385ull}}, {{15294738281093793801ull, 508312228286448199ull, 14172511574896120125ull, 4950953675812125240ull}}, {{14506736832939854347ull, 5247076303785448153ull, 17715639468620150156ull, 6188692094765156550ull}}, {{4298362985892654221ull, 6558845379731810192ull, 12921177298920411887ull, 7735865118456445688ull}}, {{2686476866182908888ull, 11016807389973463226ull, 8075735811825257429ull, 4834915699035278555ull}}, {{12581468119583411918ull, 18382695255894216936ull, 5482983746354183882ull, 6043644623794098194ull}}, {{15726835149479264898ull, 13754997033012995362ull, 16077101719797505661ull, 7554555779742622742ull}}, {{14440957986851928465ull, 10902716154846816053ull, 5436502556446053134ull, 4721597362339139214ull}}, {{4216139428282746870ull, 4405023156703744259ull, 16019000232412342226ull, 5901996702923924017ull}}, {{658488266926045683ull, 14729650982734456132ull, 6188692235233264070ull, 7377495878654905022ull}}, {{823110333657557103ull, 9188691691563294357ull, 16959237330896355896ull, 9221869848318631277ull}}, {{2820286967749667142ull, 5742932307227058973ull, 12905366341023916387ull, 5763668655199144548ull}}, {{8137044728114471831ull, 2566979365606435812ull, 16131707926279895484ull, 7204585818998930685ull}}, {{10171305910143089789ull, 3208724207008044765ull, 6329576852567705643ull, 9005732273748663357ull}}, {{8662909203053125070ull, 18146353693875885642ull, 6261828542068509978ull, 5628582671092914598ull}}, {{1605264466961630530ull, 13459570080490081245ull, 17050657714440413281ull, 7035728338866143247ull}}, {{6618266602129426066ull, 2989404545330437844ull, 16701636124623128698ull, 8794660423582679059ull}}, {{13359788663185667099ull, 6480063859258911556ull, 8132679568675761484ull, 5496662764739174412ull}}, {{16699735828982083874ull, 8100079824073639445ull, 10165849460844701855ull, 6870828455923968015ull}}, {{7039611730945441131ull, 5513413761664661403ull, 8095625807628489415ull, 8588535569904960019ull}}, {{2093914322627206755ull, 10363412628681495233ull, 2753923120554111932ull, 5367834731190600012ull}}, {{7229078921711396347ull, 12954265785851869041ull, 3442403900692639915ull, 6709793413988250015ull}}, {{13648034670566633338ull, 11581146213887448397ull, 18138062931147963606ull, 8387241767485312518ull}}, {{10835864678317839788ull, 2626530365252267344ull, 6724603313540089350ull, 5242026104678320324ull}}, {{13544830847897299735ull, 12506534993420109988ull, 8405754141925111687ull, 6552532630847900405ull}}, {{16931038559871624669ull, 11021482723347749581ull, 15118878695833777513ull, 8190665788559875506ull}}, {{12887742109133459370ull, 18417641748160813248ull, 14060985203323498849ull, 5119166117849922191ull}}, {{16109677636416824213ull, 9186994129918852848ull, 12964545485726985658ull, 6398957647312402739ull}}, {{1690352971811478650ull, 2260370625543790253ull, 11593995838731344169ull, 7998697059140503424ull}}, {{3362313616595868108ull, 12941946687033338668ull, 7246247399207090105ull, 4999185661962814640ull}}, {{4202892020744835135ull, 2342375303509509623ull, 9057809249008862632ull, 6248982077453518300ull}}, {{641929007503656015ull, 2927969129386887029ull, 11322261561261078290ull, 7811227596816897875ull}}, {{2707048638903478962ull, 6441666724294192297ull, 4770570466574479979ull, 4882017248010561172ull}}, {{7995496817056736606ull, 3440397386940352467ull, 5963213083218099974ull, 6102521560013201465ull}}, {{5382685002893532853ull, 13523868770530216392ull, 12065702372450012871ull, 7628151950016501831ull}}, {{3364178126808458034ull, 15369947009222467101ull, 14458593010422339900ull, 4767594968760313644ull}}, {{8816908676937960446ull, 765689687818532260ull, 18073241263027924876ull, 5959493710950392055ull}}, {{11021135846172450557ull, 957112109773165325ull, 17979865560357518191ull, 7449367138687990069ull}}, {{9194052913071475550ull, 7515724096249310184ull, 13543258984437142821ull, 4655854461679993793ull}}, {{11492566141339344438ull, 14006341138739025634ull, 3094015675264264814ull, 5819818077099992242ull}}, {{5142335639819404739ull, 8284554386569006235ull, 13090891630935106826ull, 7274772596374990302ull}}, {{1816233531346868020ull, 1132320946356481986ull, 7140242501814107725ull, 9093465745468737878ull}}, {{5746831975519180417ull, 3013543600686495193ull, 18297709618915981040ull, 5683416090917961173ull}}, {{11795225987826363425ull, 3766929500858118991ull, 9037078968362812588ull, 7104270113647451467ull}}, {{10132346466355566377ull, 4708661876072648739ull, 6684662692026127831ull, 8880337642059314334ull}}, {{4026873532258535034ull, 9860442700186487318ull, 18012972237798493606ull, 5550211026287071458ull}}, {{14256963952177944600ull, 3102181338378333339ull, 13292843260393341200ull, 6937763782858839323ull}}, {{13209518921795042846ull, 3877726672972916674ull, 12004368057064288596ull, 8672204728573549154ull}}, {{12867635344549289683ull, 11646951207462848729ull, 12114416054092568276ull, 5420127955358468221ull}}, {{2249486125404448391ull, 14558689009328560912ull, 1307962012333546633ull, 6775159944198085277ull}}, {{2811857656755560489ull, 4363303206378537428ull, 6246638533844321196ull, 8468949930247606596ull}}, {{10980783072327001114ull, 11950436540841361700ull, 13127521120507476555ull, 5293093706404754122ull}}, {{13725978840408751392ull, 10326359657624314221ull, 7186029363779569886ull, 6616367133005942653ull}}, {{3322415495228775528ull, 3684577535175616969ull, 13594222723151850262ull, 8270458916257428316ull}}, {{13605724730586454465ull, 16137919014766924317ull, 17719761238824682221ull, 5169036822660892697ull}}, {{3172097857950904369ull, 6337340713176491685ull, 8314643493248689065ull, 6461296028326115872ull}}, {{8576808340866018366ull, 12533361909898002510ull, 10393304366560861331ull, 8076620035407644840ull}}, {{748819194613873575ull, 5527508184472557617ull, 6495815229100538332ull, 5047887522129778025ull}}, {{5547710011694729872ull, 6909385230590697021ull, 12731455054803060819ull, 6309859402662222531ull}}, {{11546323533045800244ull, 4025045519810983372ull, 11302632800076438120ull, 7887324253327778164ull}}, {{16439824245008400961ull, 2515653449881864607ull, 16287517536902549633ull, 4929577658329861352ull}}, {{15938094287833113297ull, 7756252830779718663ull, 1912652847418635425ull, 6161972072912326691ull}}, {{15310931841364003717ull, 14307002056902036233ull, 16225874114555457993ull, 7702465091140408363ull}}, {{2651803373211420467ull, 2024347257922690790ull, 7835328312383467294ull, 4814040681962755227ull}}, {{12538126253369051392ull, 11753806109258139295ull, 5182474372051946213ull, 6017550852453444034ull}}, {{11060971798283926336ull, 857199581290510407ull, 15701465001919708575ull, 7521938565566805042ull}}, {{13830636401568535816ull, 7453278765947650860ull, 14425101644627205763ull, 4701211603479253151ull}}, {{17288295501960669770ull, 4704912439007175671ull, 13419691037356619300ull, 5876514504349066439ull}}, {{16998683359023449308ull, 5881140548758969589ull, 12162927778268386221ull, 7345643130436333049ull}}, {{7413296143497147923ull, 11963111704376099891ull, 1368601667553319064ull, 9182053913045416312ull}}, {{2327467080472023500ull, 7476944815235062432ull, 855376042220824415ull, 5738783695653385195ull}}, {{2909333850590029375ull, 4734495000616440136ull, 14904278108058194231ull, 7173479619566731493ull}}, {{3636667313237536719ull, 1306432732343162266ull, 4795289579790579077ull, 8966849524458414367ull}}, {{6884603089200848354ull, 3122363466928170368ull, 9914585015010193779ull, 5604280952786508979ull}}, {{8605753861501060442ull, 17738012388942376672ull, 7781545250335354319ull, 7005351190983136224ull}}, {{10757192326876325552ull, 17560829467750582936ull, 9726931562919192899ull, 8756688988728920280ull}}, {{6723245204297703470ull, 8669675408130420383ull, 6079332226824495562ull, 5472930617955575175ull}}, {{3792370486944741434ull, 1613722223308249671ull, 2987479265103231549ull, 6841163272444468969ull}}, {{128777090253538888ull, 6628838797562699993ull, 8346035099806427340ull, 8551454090555586211ull}}, {{11609700727476931565ull, 13366396285331463303ull, 2910428928165323135ull, 5344658806597241382ull}}, {{9900439890918776552ull, 12096309338236941225ull, 12861408197061429727ull, 6680823508246551727ull}}, {{16987235882075858594ull, 10508700654368788627ull, 11465074227899399255ull, 8351029385308189659ull}}, {{8311179417083717670ull, 13485466936621574748ull, 4859828383223430582ull, 5219393365817618537ull}}, {{10388974271354647087ull, 7633461633922192627ull, 10686471497456676132ull, 6524241707272023171ull}}, {{8374531820765920954ull, 9541827042402740784ull, 8746403353393457261ull, 8155302134090028964ull}}, {{5234082387978700597ull, 8269484910715406942ull, 14689874132725686596ull, 5097063833806268102ull}}, {{15765975021828151554ull, 10336856138394258677ull, 9138970629052332437ull, 6371329792257835128ull}}, {{5872410722003025730ull, 17532756191420211251ull, 11423713286315415546ull, 7964162240322293910ull}}, {{1364413692038197130ull, 15569658638065019936ull, 2528134785519746812ull, 4977601400201433694ull}}, {{1705517115047746412ull, 1015329223871723304ull, 12383540518754459324ull, 6222001750251792117ull}}, {{2131896393809683015ull, 1269161529839654130ull, 1644367593160910443ull, 7777502187814740147ull}}, {{5944121264558439788ull, 16934127020645641495ull, 17168630810221426690ull, 4860938867384212591ull}}, {{2818465562270661831ull, 11944286738952276061ull, 16849102494349395459ull, 6076173584230265739ull}}, {{8134767971265715193ull, 10318672405262957172ull, 16449692099509356420ull, 7595216980287832174ull}}, {{14307602018895847804ull, 15672542290144124040ull, 5669371543765959858ull, 4747010612679895109ull}}, {{17884502523619809755ull, 10367305825825379242ull, 11698400448134837727ull, 5933763265849868886ull}}, {{13132256117669986385ull, 8347446263854336149ull, 5399628523313771351ull, 7417204082312336108ull}}, {{10513503082757435443ull, 12134682942550041949ull, 12598139863925882902ull, 4635752551445210067ull}}, {{17753564871874182207ull, 5944981641332776628ull, 11135988811479965724ull, 5794690689306512584ull}}, {{3745212016133176143ull, 7431227051665970786ull, 13919986014349957155ull, 7243363361633140730ull}}, {{13904887057021245987ull, 4677347796155075578ull, 8176610481082670636ull, 9054204202041425913ull}}, {{13302240429065666646ull, 12146714409451698044ull, 16639596596745138907ull, 5658877626275891195ull}}, {{16627800536332083307ull, 10571706993387234651ull, 16187809727504035730ull, 7073597032844863994ull}}, {{16173064651987716230ull, 3991261704879267506ull, 11011390122525268855ull, 8841996291056079993ull}}, {{14719851425919710548ull, 9412067593190624047ull, 18411333872646762794ull, 5526247681910049995ull}}, {{13788128263972250281ull, 2541712454633504251ull, 18402481322381065589ull, 6907809602387562494ull}}, {{12623474311537924947ull, 7788826586719268218ull, 13779729616121556178ull, 8634762002984453118ull}}, {{12501357463138590996ull, 9479702635126930540ull, 4000644991648584707ull, 5396726251865283199ull}}, {{15626696828923238745ull, 7237942275481275271ull, 389120221133342980ull, 6745907814831603999ull}}, {{14921685017726660527ull, 9047427844351594089ull, 14321458331698842437ull, 8432384768539504998ull}}, {{2408524108438080974ull, 7960485411933440258ull, 4339225438884388619ull, 5270240480337190624ull}}, {{12234027172402377025ull, 5338920746489412418ull, 5424031798605485774ull, 6587800600421488280ull}}, {{6069161928648195473ull, 15897022969966541331ull, 6780039748256857217ull, 8234750750526860350ull}}, {{1487383196191428219ull, 3018110328588006476ull, 18072582897942699473ull, 5146719219079287718ull}}, {{1859228995239285273ull, 8384323929162395999ull, 13367356585573598533ull, 6433399023849109648ull}}, {{16159094299331270304ull, 15092090929880382902ull, 16709195731966998166ull, 8041748779811387060ull}}, {{5487747918654656036ull, 4820870812747851410ull, 1219875295624598046ull, 5026092987382116913ull}}, {{16083056935173095853ull, 15249460552789590070ull, 6136530137958135461ull, 6282616234227646141ull}}, {{10880449132111594008ull, 5226767635704823876ull, 12282348690875057231ull, 7853270292784557676ull}}, {{16023652744424522063ull, 10184258799956596778ull, 16899839968651686577ull, 4908293932990348547ull}}, {{10806193893675876771ull, 17342009518373133877ull, 16513113942387220317ull, 6135367416237935684ull}}, {{18119428385522233867ull, 7842453842684253634ull, 2194648354274473781ull, 7669209270297419606ull}}, {{15936328759378784071ull, 7207376660891352473ull, 15206713276703709825ull, 4793255793935887253ull}}, {{6085352893941316377ull, 13620906844541578496ull, 5173333540597473569ull, 5991569742419859067ull}}, {{7606691117426645471ull, 3191075500394809408ull, 1854980907319454058ull, 7489462178024823834ull}}, {{4754181948391653420ull, 6606108206174143784ull, 5771049085502046690ull, 4680913861265514896ull}}, {{5942727435489566774ull, 17481007294572455538ull, 7213811356877558362ull, 5851142326581893620ull}}, {{16651781331216734276ull, 12627887081360793614ull, 9017264196096947953ull, 7313927908227367025ull}}, {{11591354627166142037ull, 1949800796418828306ull, 15883266263548572846ull, 9142409885284208781ull}}, {{11856282660406226677ull, 15053683553043931403ull, 12232884423931551980ull, 5714006178302630488ull}}, {{10208667307080395442ull, 370360367595362638ull, 15291105529914439976ull, 7142507722878288110ull}}, {{3537462096995718495ull, 462950459494203298ull, 9890509875538274162ull, 8928134653597860138ull}}, {{6822599829049711963ull, 4901030055611264965ull, 10793254690638809255ull, 5580084158498662586ull}}, {{13139935804739527858ull, 1514601551086693302ull, 4268196326443735761ull, 6975105198123328233ull}}, {{7201547719069634014ull, 6504937957285754532ull, 9946931426482057605ull, 8718881497654160291ull}}, {{13724339361273297067ull, 6371429232517290534ull, 3910989132337592051ull, 5449300936033850182ull}}, {{7932052164736845526ull, 3352600522219225264ull, 14112108452276765872ull, 6811626170042312727ull}}, {{9915065205921056907ull, 4190750652774031580ull, 13028449546918569436ull, 8514532712552890909ull}}, {{15420287790555436375ull, 11842591194838545545ull, 10448623976037799849ull, 5321582945345556818ull}}, {{5440301682912131757ull, 968180938266018220ull, 3837407933192474004ull, 6651978681681946023ull}}, {{6800377103640164696ull, 1210226172832522775ull, 185073898063204601ull, 8314973352102432529ull}}, {{11167764717416184791ull, 12285606404088796494ull, 11644886232357972635ull, 5196858345064020330ull}}, {{4736333859915455181ull, 10745321986683607714ull, 5332735753592689986ull, 6496072931330025413ull}}, {{15143789361749094784ull, 4208280446499733834ull, 11277605710418250387ull, 8120091164162531766ull}}, {{14076554369520572144ull, 324332269848639694ull, 2436817550584018588ull, 5075056977601582354ull}}, {{8372320925045939372ull, 405415337310799618ull, 12269393975084799043ull, 6343821222001977942ull}}, {{1242029119452648407ull, 14341827226920663235ull, 6113370432001222995ull, 7929776527502472428ull}}, {{16917169264153762919ull, 6657799007611720569ull, 13044228556855540180ull, 4956110329689045267ull}}, {{7311403524910039936ull, 8322248759514650712ull, 11693599677642037321ull, 6195137912111306584ull}}, {{9139254406137549920ull, 15014496967820701294ull, 14616999597052546651ull, 7743922390139133230ull}}, {{1100347985408580796ull, 7078217595674244357ull, 4523938729730453753ull, 4839951493836958269ull}}, {{5987121000188113899ull, 13459458013020193350ull, 10266609430590455095ull, 6049939367296197836ull}}, {{16707273287089918182ull, 12212636497847853783ull, 12833261788238068869ull, 7562424209120247295ull}}, {{17359574832072280720ull, 9938740820368602566ull, 14938317645289874899ull, 4726515130700154559ull}}, {{12476096503235575092ull, 7811740007033365304ull, 14061211038184955720ull, 5908143913375193199ull}}, {{15595120629044468864ull, 9764675008791706630ull, 12964827779303806746ull, 7385179891718991499ull}}, {{5135264374725405136ull, 10714607898922204548ull, 5797174352851185264ull, 4615737432324369687ull}}, {{6419080468406756420ull, 13393259873652755685ull, 2634781922636593676ull, 5769671790405462109ull}}, {{12635536603935833429ull, 16741574842065944606ull, 7905163421723129999ull, 7212089738006827636ull}}, {{6571048718065015979ull, 16315282534155042854ull, 9881454277153912499ull, 9015112172508534545ull}}, {{17941963504072798699ull, 7891208574633207831ull, 17705123969289665072ull, 5634445107817834090ull}}, {{17815768361663610469ull, 9864010718291509789ull, 12908032924757305532ull, 7043056384772292613ull}}, {{8434652396797349375ull, 12330013397864387237ull, 2299983100664468203ull, 8803820480965365767ull}}, {{7577500757212037311ull, 5400415364451548071ull, 8355018465556374483ull, 5502387800603353604ull}}, {{4860189928087658735ull, 2138833187137047185ull, 10443773081945468104ull, 6877984750754192005ull}}, {{10686923428536961323ull, 2673541483921308981ull, 17666402370859223034ull, 8597480938442740006ull}}, {{8985170152049294779ull, 6282649445878206017ull, 6429815463359626492ull, 5373425586526712504ull}}, {{15843148708489006377ull, 7853311807347757521ull, 8037269329199533115ull, 6716781983158390630ull}}, {{5968877830329094260ull, 5204953740757308998ull, 823214624644640586ull, 8395977478947988288ull}}, {{17565606699237847624ull, 7864782106400706027ull, 514509140402900366ull, 5247485924342492680ull}}, {{17345322355619921626ull, 607605596146106726ull, 643136425503625458ull, 6559357405428115850ull}}, {{12458280907670126225ull, 9982879032037409216ull, 10027292568734307630ull, 8199196756785144812ull}}, {{7786425567293828891ull, 1627613376595992856ull, 15490429892313718077ull, 5124497972990715507ull}}, {{9733031959117286113ull, 6646202739172378974ull, 14751351346964759692ull, 6405622466238394384ull}}, {{2942917912041831834ull, 8307753423965473718ull, 18439189183705949615ull, 8007028082797992980ull}}, {{15674381750308308608ull, 12109874917619502929ull, 2301121202961442701ull, 5004392551748745613ull}}, {{5757919132603222048ull, 1302285591742214950ull, 7488087522129191281ull, 6255490689685932016ull}}, {{16420770952608803368ull, 6239543008105156591ull, 9360109402661489101ull, 7819363362107415020ull}}, {{17180510873021583961ull, 6205557389279416821ull, 15073440413518206496ull, 4887102101317134387ull}}, {{7640580535994816239ull, 7756946736599271027ull, 14230114498470370216ull, 6108877626646417984ull}}, {{4939039651566132395ull, 9696183420749088784ull, 17787643123087962770ull, 7636097033308022480ull}}, {{3086899782228832747ull, 10671800656395568394ull, 11117276951929976731ull, 4772560645817514050ull}}, {{13081996764640816742ull, 8728064802067072588ull, 4673224153057695106ull, 5965700807271892563ull}}, {{16352495955801020927ull, 1686708965729064927ull, 1229844172894730979ull, 7457126009089865704ull}}, {{17137839000016719936ull, 17195094168076523243ull, 768652608059206861ull, 4660703755681166065ull}}, {{16810612731593512015ull, 7658809654813490342ull, 5572501778501396481ull, 5825879694601457581ull}}, {{11789893877637114211ull, 14185198086944250832ull, 11577313241554133505ull, 7282349618251821976ull}}, {{14737367347046392764ull, 3896439553398149828ull, 14471641551942666882ull, 9102937022814777470ull}}, {{18434226628758771286ull, 7046960739301231546ull, 4433089951536778897ull, 5689335639259235919ull}}, {{13819411249093688299ull, 13420386942553927337ull, 929676420993585717ull, 7111669549074044899ull}}, {{3439206006084946661ull, 2940425622910245460ull, 14997153581524145859ull, 8889586936342556123ull}}, {{11372875790657867472ull, 17978667078814761076ull, 7067377979238897209ull, 5555991835214097577ull}}, {{14216094738322334339ull, 8638275793236287633ull, 13445908492476009416ull, 6944989794017621971ull}}, {{3935060367620754212ull, 10797844741545359542ull, 12195699597167623866ull, 8681237242522027464ull}}, {{16294470785045135095ull, 11360338981893237617ull, 7622312248229764916ull, 5425773276576267165ull}}, {{6533030426024255156ull, 14200423727366547022ull, 14139576328714594049ull, 6782216595720333956ull}}, {{17389660069385094753ull, 3915471603926020065ull, 17674470410893242562ull, 8477770744650417445ull}}, {{3951008515724602365ull, 7058855770881150445ull, 13352387016021970553ull, 5298606715406510903ull}}, {{9550446663083140860ull, 13435255732028825960ull, 12078797751600075287ull, 6623258394258138629ull}}, {{11938058328853926075ull, 12182383646608644546ull, 1263439134217930397ull, 8279072992822673287ull}}, {{12072972473961091701ull, 9919832788344096793ull, 7707178486527288354ull, 5174420620514170804ull}}, {{1256157537169200914ull, 3176418948575345184ull, 9633973108159110443ull, 6468025775642713505ull}}, {{1570196921461501143ull, 17805581741001345192ull, 16654152403626275957ull, 8085032219553391881ull}}, {{981373075913438214ull, 13434331597339534697ull, 3491316224625340617ull, 5053145137220869926ull}}, {{5838402363319185672ull, 2957856441392254659ull, 13587517317636451580ull, 6316431421526087407ull}}, {{2686316935721594185ull, 3697320551740318324ull, 12372710628618176571ull, 7895539276907609259ull}}, {{10902320121680772174ull, 4982335624005000ull, 5427101133672666405ull, 4934712048067255787ull}}, {{13627900152100965218ull, 4617913937957394154ull, 2172190398663445102ull, 6168390060084069734ull}}, {{7811503153271430714ull, 14995764459301518501ull, 11938610035184082185ull, 7710487575105087167ull}}, {{7188032480008338148ull, 2454823759422367207ull, 14379160299631133222ull, 4819054734440679479ull}}, {{4373354581583034781ull, 12291901736132734817ull, 13362264356111528623ull, 6023818418050849349ull}}, {{10078379245406181380ull, 10753191151738530617ull, 2867772389857247067ull, 7529773022563561687ull}}, {{17828202074447333123ull, 4414901460622887683ull, 8709886771301861273ull, 4706108139102226054ull}}, {{17673566574631778500ull, 10130312844205997508ull, 1663986427272550783ull, 5882635173877782568ull}}, {{3645214144580171508ull, 8051205036830108982ull, 2079983034090688479ull, 7353293967347228210ull}}, {{13779889717579990193ull, 5452320277610248323ull, 11823350829468136407ull, 9191617459184035262ull}}, {{6306588064273799919ull, 10325229201147487058ull, 2777908249990197350ull, 5744760911990022039ull}}, {{17106607117197025707ull, 3683164464579583014ull, 17307443367769910400ull, 7180951139987527548ull}}, {{12159886859641506325ull, 4603955580724478768ull, 3187560136002836384ull, 8976188924984409436ull}}, {{7599929287275941453ull, 2877472237952799230ull, 11215597121856548548ull, 5610118078115255897ull}}, {{276539572240151009ull, 3596840297440999038ull, 184438347038521973ull, 7012647597644069872ull}}, {{9569046502154964569ull, 9107736390228636701ull, 230547933798152466ull, 8765809497055087340ull}}, {{8286497073060546808ull, 10304021262320285842ull, 9367464495478621099ull, 5478630935659429587ull}}, {{1134749304470907701ull, 8268340559472969399ull, 7097644600920888470ull, 6848288669574286984ull}}, {{15253494685870798339ull, 1112053662486435940ull, 8872055751151110588ull, 8560360836967858730ull}}, {{310062141814473154ull, 9918405575908798271ull, 10156720862896832021ull, 5350225523104911706ull}}, {{14222635732550255154ull, 17009692988313385742ull, 3472529041766264218ull, 6687781903881139633ull}}, {{8554922628833043135ull, 12038744198536956370ull, 8952347320635218177ull, 8359727379851424541ull}}, {{9958512661448039863ull, 606686096444515875ull, 7901060084610705313ull, 5224829612407140338ull}}, {{7836454808382661925ull, 5370043638983032748ull, 652953068908605833ull, 6531037015508925423ull}}, {{9795568510478327406ull, 11324240567156178839ull, 14651249391417921003ull, 8163796269386156778ull}}, {{13039759346690036485ull, 4771807345258917822ull, 13768716888063588531ull, 5102372668366347986ull}}, {{7076327146507769798ull, 1353073163146259374ull, 7987524073224709856ull, 6377965835457934983ull}}, {{18068780969989488056ull, 1691341453932824217ull, 5372719073103499416ull, 7972457294322418729ull}}, {{4375459078602348179ull, 1057088408708015136ull, 14887164466758156895ull, 4982785808951511705ull}}, {{5469323848252935223ull, 15156418566167182632ull, 4773897528165532406ull, 6228482261189389632ull}}, {{6836654810316169029ull, 9722151170854202482ull, 5967371910206915508ull, 7785602826486737040ull}}, {{8884595274874993547ull, 15299716518638652359ull, 3729607443879322192ull, 4866001766554210650ull}}, {{6494058075166354030ull, 677901574588763833ull, 13885381341703928549ull, 6082502208192763312ull}}, {{12729258612385330442ull, 5459062986663342695ull, 17356726677129910686ull, 7603127760240954140ull}}, {{14873315660381913382ull, 17246972421946752896ull, 1624582136351418370ull, 4751954850150596338ull}}, {{144900501767840112ull, 12335343490578665313ull, 11254099707294048771ull, 5939943562688245422ull}}, {{4792811645637188043ull, 10807493344795943737ull, 4844252597262785156ull, 7424929453360306778ull}}, {{14524722324591712287ull, 15978055377352240643ull, 7639343891716628626ull, 4640580908350191736ull}}, {{13544216887312252455ull, 10749197184835524996ull, 9549179864645785783ull, 5800726135437739670ull}}, {{16930271109140315569ull, 8824810462617018341ull, 2713102793952456421ull, 7250907669297174588ull}}, {{7327780831143230749ull, 15642699096698660831ull, 3391378492440570526ull, 9063634586621468235ull}}, {{11497392047105601074ull, 5165000917009275115ull, 18260512622271214243ull, 5664771616638417646ull}}, {{9760054040454613439ull, 1844565127834205990ull, 13602268740984241996ull, 7080964520798022058ull}}, {{2976695513713490990ull, 2305706409792757488ull, 7779463889375526687ull, 8851205650997527573ull}}, {{1860434696070931869ull, 8358595533761555286ull, 7168007940073398131ull, 5532003531873454733ull}}, {{11548915406943440644ull, 5836558398774556203ull, 13571695943519135568ull, 6915004414841818416ull}}, {{9824458240251912901ull, 7295697998468195254ull, 16964619929398919460ull, 8643755518552273020ull}}, {{1528600381730057659ull, 13783183285897397842ull, 1379515419019548854ull, 5402347199095170638ull}}, {{11134122514017347882ull, 8005607070516971494ull, 10947766310629211876ull, 6752933998868963297ull}}, {{4694281105666909044ull, 10007008838146214368ull, 18296393906713902749ull, 8441167498586204121ull}}, {{2933925691041818153ull, 8560223533055077932ull, 4517717164055107362ull, 5275729686616377576ull}}, {{3667407113802272691ull, 1476907379464071607ull, 5647146455068884203ull, 6594662108270471970ull}}, {{18419316947535004576ull, 15681192279612253220ull, 16282305105690881061ull, 8243327635338089962ull}}, {{2288701055354602052ull, 12106588183971352215ull, 14788126709484188567ull, 5152079772086306226ull}}, {{16695934374475416277ull, 10521549211536802364ull, 9261786350000459901ull, 6440099715107882783ull}}, {{2423173894384718730ull, 17763622532848390860ull, 6965546919073186972ull, 8050124643884853479ull}}, {{10737855720845225014ull, 1878892046175468479ull, 11270995852061823714ull, 5031327902428033424ull}}, {{8810633632629143364ull, 11571987094574111407ull, 14088744815077279642ull, 6289159878035041780ull}}, {{6401606022359041301ull, 5241611831362863451ull, 17610931018846599553ull, 7861449847543802225ull}}, {{1695160754760706861ull, 14805222440670259417ull, 4089302859138042864ull, 4913406154714876391ull}}, {{6730636961878271480ull, 59783977128272655ull, 499942555495165677ull, 6141757693393595489ull}}, {{3801610183920451446ull, 4686415989837728723ull, 5236614212796345000ull, 7677197116741994361ull}}, {{70163355736588202ull, 2929009993648580452ull, 14802098929066185385ull, 4798248197963746475ull}}, {{87704194670735252ull, 8272948510488113469ull, 13890937642905343827ull, 5997810247454683094ull}}, {{4721316261765806969ull, 5729499619682753932ull, 8140300016776903976ull, 7497262809318353868ull}}, {{12174194700458405164ull, 3580937262301721207ull, 14311059547340340793ull, 4685789255823971167ull}}, {{10606057357145618551ull, 9087857596304539413ull, 13277138415748038087ull, 5857236569779963959ull}}, {{17869257714859411093ull, 6748135976953286362ull, 11984737001257659705ull, 7321545712224954949ull}}, {{13113200106719488058ull, 13046855989618995857ull, 1145863196289910919ull, 9151932140281193687ull}}, {{1278221039058598180ull, 15071814021152954267ull, 7633693525322276180ull, 5719957587675746054ull}}, {{15432834354105411437ull, 393023452731641217ull, 318744869798069418ull, 7149946984594682568ull}}, {{5455984887349600584ull, 9714651352769327330ull, 398431087247586772ull, 8937433730743353210ull}}, {{8021676573020888269ull, 15295029132335605389ull, 4860705447957129636ull, 5585896081714595756ull}}, {{14638781734703498241ull, 672042341709955120ull, 6075881809946412046ull, 6982370102143244695ull}}, {{18298477168379372801ull, 10063424963992219708ull, 2983166244005627153ull, 8727962627679055869ull}}, {{2213176193382332193ull, 17818855648563607078ull, 4170321911717210922ull, 5454976642299409918ull}}, {{11989842278582691049ull, 13050197523849733039ull, 14436274426501289461ull, 6818720802874262397ull}}, {{10375616829800975907ull, 2477688849530002587ull, 4210284977844448115ull, 8523401003592827997ull}}, {{4178917509411915990ull, 17689456595452109281ull, 4937271120366474023ull, 5327125627245517498ull}}, {{9835332905192282891ull, 17500134725887748697ull, 15394960937312868337ull, 6658907034056896872ull}}, {{16905852149917741518ull, 8040110352077522159ull, 796957097931533806ull, 8323633792571121091ull}}, {{17483686621339670305ull, 413382951621063445ull, 16638999250703066293ull, 5202271120356950681ull}}, {{8019550221392424169ull, 5128414707953717211ull, 6963691008096669154ull, 6502838900446188352ull}}, {{5412751758313142307ull, 15633890421796922322ull, 8704613760120836442ull, 8128548625557735440ull}}, {{7994655867373101846ull, 14382867532050464355ull, 5440383600075522776ull, 5080342890973584650ull}}, {{5381633815788989403ull, 17978584415063080444ull, 16023851536949179278ull, 6350428613716980812ull}}, {{6727042269736236754ull, 13249858481974074747ull, 1583070347476922482ull, 7938035767146226016ull}}, {{1898558409371454020ull, 12892847569661184621ull, 989418967173076551ull, 4961272354466391260ull}}, {{6984884030141705428ull, 11504373443649092872ull, 1236773708966345689ull, 6201590443082989075ull}}, {{8731105037677131785ull, 545408749279202378ull, 15381025191490095824ull, 7751988053853736343ull}}, {{10068626666975595270ull, 340880468299501486ull, 16530669772322391746ull, 4844992533658585214ull}}, {{3362411296864718279ull, 9649472622229152666ull, 11439965178548213874ull, 6056240667073231518ull}}, {{13426386157935673657ull, 2838468740931665024ull, 5076584436330491535ull, 7570300833841539398ull}}, {{8391491348709796036ull, 8691571990723372496ull, 17007923327988720921ull, 4731438021150962123ull}}, {{10489364185887245045ull, 15476151006831603524ull, 16648218141558513247ull, 5914297526438702654ull}}, {{13111705232359056306ull, 14733502740112116501ull, 11586900640093365751ull, 7392871908048378318ull}}, {{10500658779438104143ull, 16125968240211154669ull, 2630126881630965690ull, 4620544942530236449ull}}, {{17737509492725018083ull, 10934088263409167528ull, 7899344620466095017ull, 5775681178162795561ull}}, {{3725142792196720988ull, 18279296347688847315ull, 14485866794010006675ull, 7219601472703494451ull}}, {{44742471818513330ull, 18237434416183671240ull, 13495647474085120440ull, 9024501840879368064ull}}, {{27964044886570832ull, 11398396510114794525ull, 8434779671303200275ull, 5640313650549605040ull}}, {{4646641074535601443ull, 9636309619216105252ull, 10543474589129000344ull, 7050392063187006300ull}}, {{5808301343169501804ull, 12045387024020131565ull, 13179343236411250430ull, 8812990078983757875ull}}, {{5936031348694632580ull, 2916680871585194324ull, 5931246513543337567ull, 5508118799364848672ull}}, {{7420039185868290725ull, 17480909144763656617ull, 7414058141929171958ull, 6885148499206060840ull}}, {{13886735000762751310ull, 12627764394099794963ull, 9267572677411464948ull, 8606435624007576050ull}}, {{6373366366263025617ull, 17115724783167147660ull, 10403918941809553496ull, 5379022265004735031ull}}, {{7966707957828782021ull, 2947911905249382959ull, 8393212658834553967ull, 6723777831255918789ull}}, {{5346698928858589622ull, 17519947936843892411ull, 15103201841970580362ull, 8404722289069898486ull}}, {{1035843821322924562ull, 15561653478954820661ull, 4827815132804224822ull, 5252951430668686554ull}}, {{5906490795081043606ull, 10228694811838750018ull, 15258140952860056836ull, 6566189288335858192ull}}, {{16606485530706080316ull, 12785868514798437522ull, 625932117365519429ull, 8207736610419822741ull}}, {{14990739475118688101ull, 10297010830962717403ull, 2697050582567143595ull, 5129835381512389213ull}}, {{14126738325470972223ull, 8259577520276008850ull, 7982999246636317398ull, 6412294226890486516ull}}, {{8435050869983939470ull, 1101099863490235255ull, 9978749058295396748ull, 8015367783613108145ull}}, {{12189435821381044025ull, 9911559451536172842ull, 17765933207503092727ull, 5009604864758192590ull}}, {{6013422739871529223ull, 7777763295992828149ull, 12984044472524090101ull, 6262006080947740738ull}}, {{12128464443266799433ull, 14333890138418423090ull, 7006683553800336818ull, 7827507601184675923ull}}, {{12191976295469137550ull, 13570367354938902335ull, 2073334211911516559ull, 4892192250740422452ull}}, {{10628284350909034033ull, 12351273175246240015ull, 2591667764889395699ull, 6115240313425528065ull}}, {{8673669420208904637ull, 10827405450630412115ull, 7851270724539132528ull, 7644050391781910081ull}}, {{3115200378416871446ull, 6767128406644007572ull, 16436259248905427590ull, 4777531494863693800ull}}, {{3894000473021089308ull, 17682282545159785273ull, 2098579987422232871ull, 5971914368579617251ull}}, {{9479186609703749539ull, 17491167163022343687ull, 16458283039559954801ull, 7464892960724521563ull}}, {{12842020658705925318ull, 4014450449247882948ull, 7980583890511277799ull, 4665558100452825977ull}}, {{16052525823382406647ull, 406377043132465781ull, 14587415881566485153ull, 5831947625566032471ull}}, {{6230599223945844597ull, 5119657322342970131ull, 13622583833530718537ull, 7289934531957540589ull}}, {{3176563011504917842ull, 11011257671356100568ull, 3193171736631234459ull, 9112418164946925737ull}}, {{1985351882190573652ull, 4576193035383868903ull, 13524947381462991297ull, 5695261353091828585ull}}, {{16316747908020380776ull, 10331927312657224032ull, 3071126171546575409ull, 7119076691364785732ull}}, {{1949190811315924354ull, 17526595159248917945ull, 3838907714433219261ull, 8898845864205982165ull}}, {{12747459303140922482ull, 13259964983744267667ull, 4705160330734455990ull, 5561778665128738853ull}}, {{11322638110498765198ull, 7351584192825558776ull, 10493136431845457892ull, 6952223331410923566ull}}, {{14153297638123456497ull, 9189480241031948470ull, 3893048502952046557ull, 8690279164263654458ull}}, {{4234125005399772407ull, 8049268159858661746ull, 7044841332772417002ull, 5431424477664784036ull}}, {{14516028293604491317ull, 838213162968551374ull, 8806051665965521253ull, 6789280597080980045ull}}, {{8921663330150838338ull, 5659452472138077122ull, 15619250600884289470ull, 8486600746351225056ull}}, {{10187725599771661865ull, 17372215850368461913ull, 9762031625552680918ull, 5304125466469515660ull}}, {{17346343018141965235ull, 12491897776105801583ull, 12202539531940851148ull, 6630156833086894575ull}}, {{17071242754250068640ull, 15614872220132251979ull, 10641488396498676031ull, 8287696041358618219ull}}, {{8363683712192598948ull, 16676824165223739343ull, 4345087238597978567ull, 5179810025849136387ull}}, {{5842918621813360781ull, 16234344188102286275ull, 819673029820085305ull, 6474762532311420484ull}}, {{2691962258839313072ull, 6457872179845694132ull, 1024591287275106632ull, 8093453165389275605ull}}, {{10905848448629346478ull, 4036170112403558832ull, 2946212563760635597ull, 5058408228368297253ull}}, {{13632310560786683098ull, 9656898658931836444ull, 8294451723128182400ull, 6323010285460371566ull}}, {{17040388200983353872ull, 12071123323664795555ull, 1144692617055452192ull, 7903762856825464458ull}}, {{8344399616400902218ull, 7544452077290497222ull, 5327118904087045524ull, 4939851785515915286ull}}, {{1207127483646351965ull, 9430565096613121528ull, 15882270666963582713ull, 6174814731894894107ull}}, {{1508909354557939956ull, 16399892389193789814ull, 15241152315277090487ull, 7718518414868617634ull}}, {{14778126401880876185ull, 17167461770887200489ull, 14137406215475569458ull, 4824074009292886021ull}}, {{4637599947068931519ull, 12235955176754224804ull, 3836699714062298111ull, 6030092511616107527ull}}, {{5796999933836164398ull, 10683257952515393101ull, 184188624150484735ull, 7537615639520134409ull}}, {{5928967967861296701ull, 13594565247963202544ull, 11644332936162522719ull, 4711009774700084005ull}}, {{7411209959826620876ull, 12381520541526615276ull, 720358114920989687ull, 5888762218375105007ull}}, {{9264012449783276095ull, 10865214658480881191ull, 14735505698933400821ull, 7360952772968881258ull}}, {{6968329543801707215ull, 18193204341528489393ull, 9196010086811975218ull, 9201190966211101573ull}}, {{15884421010944536769ull, 15982438731882693774ull, 8053349313471178463ull, 5750744353881938483ull}}, {{10632154226825895154ull, 15366362396425979314ull, 5455000623411585175ull, 7188430442352423104ull}}, {{4066820746677593134ull, 14596266977105086239ull, 6818750779264481469ull, 8985538052940528880ull}}, {{9459291994314577565ull, 11428509869904372851ull, 4261719237040300918ull, 5615961283087830550ull}}, {{7212428974465834052ull, 5062265300525690256ull, 14550521083155151956ull, 7019951603859788187ull}}, {{9015536218082292565ull, 6327831625657112820ull, 13576465335516552041ull, 8774939504824735234ull}}, {{14858082173156208661ull, 15484109812104165272ull, 13096976853125232929ull, 5484337190515459521ull}}, {{125858642735709210ull, 5520079209848042879ull, 2536163011124377450ull, 6855421488144324402ull}}, {{13992381358701800225ull, 16123471049164829406ull, 12393575800760247620ull, 8569276860180405502ull}}, {{4133552330761237237ull, 853797368873242571ull, 3134298857047766859ull, 5355798037612753439ull}}, {{555254395024158642ull, 14902304766373716926ull, 17752931626591872285ull, 6694747547015941798ull}}, {{9917440030634974110ull, 4792822902684982445ull, 12967792496385064549ull, 8368434433769927248ull}}, {{8504243028360552771ull, 5301357323391807980ull, 8104870310240665343ull, 5230271521106204530ull}}, {{10630303785450690964ull, 2015010635812372071ull, 907715850946055871ull, 6537839401382755663ull}}, {{8676193713385975800ull, 16353821350047628801ull, 14969702868964733550ull, 8172299251728444578ull}}, {{16951836116934704635ull, 5609452325352380096ull, 13967750311530346373ull, 5107687032330277861ull}}, {{2743051072458829178ull, 11623501425117863025ull, 3624629834130769254ull, 6384608790412847327ull}}, {{8040499859000924377ull, 5306004744542552973ull, 18365845347945625280ull, 7980760988016059158ull}}, {{7331155421089271688ull, 3316252965339095608ull, 6866967324038627896ull, 4987975617510036974ull}}, {{9163944276361589609ull, 4145316206673869510ull, 17807081191903060678ull, 6234969521887546217ull}}, {{2231558308597211203ull, 14405017295197112696ull, 8423793434596662135ull, 7793711902359432772ull}}, {{1394723942873257002ull, 15920664837139277291ull, 14488242933477689642ull, 4871069938974645482ull}}, {{15578462983873734965ull, 10677459009569320805ull, 8886931629992336245ull, 6088837423718306853ull}}, {{5638020674560004994ull, 17958509780389038911ull, 15720350555917808210ull, 7611046779647883566ull}}, {{10441291949241084977ull, 15835754631170537223ull, 5213533079021242227ull, 4756904237279927229ull}}, {{8439928918123968318ull, 15183007270535783625ull, 11128602367203940688ull, 5946130296599909036ull}}, {{15161597166082348301ull, 532015014460177915ull, 13910752959004925861ull, 7432662870749886295ull}}, {{7170155219587773736ull, 2638352393251305149ull, 15611749627019160519ull, 4645414294218678934ull}}, {{13574380042912105074ull, 17132998546846295148ull, 10291314996919174840ull, 5806767867773348668ull}}, {{16967975053640131343ull, 2969504109848317319ull, 12864143746148968551ull, 7258459834716685835ull}}, {{16598282798622776274ull, 17546938192592560361ull, 11468493664258822784ull, 9073074793395857294ull}}, {{3456397721498153315ull, 10966836370370350226ull, 2556122521734376336ull, 5670671745872410809ull}}, {{13543869188727467452ull, 13708545462962937782ull, 7806839170595358324ull, 7088339682340513511ull}}, {{7706464449054558507ull, 17135681828703672228ull, 5146862944816810001ull, 8860424602925641889ull}}, {{14039912317513874875ull, 3792272115298713286ull, 14746004386578976011ull, 5537765376828526180ull}}, {{8326518360037567786ull, 128654125696003704ull, 18432505483223720014ull, 6922206721035657725ull}}, {{10408147950046959732ull, 9384189693974780438ull, 9205573798747486305ull, 8652758401294572157ull}}, {{1893406450351961929ull, 17394333604802707534ull, 8059326633430872892ull, 5407974000809107598ull}}, {{11590130099794728219ull, 3296172932293832801ull, 850786254933815308ull, 6759967501011384498ull}}, {{652604569461246561ull, 4120216165367291002ull, 10286854855522044943ull, 8449959376264230622ull}}, {{5019563874340667005ull, 9492664130995638732ull, 1817598266273890185ull, 5281224610165144139ull}}, {{6274454842925833756ull, 16477516182171936319ull, 16107055888124526443ull, 6601530762706430173ull}}, {{3231382535229904291ull, 15985209209287532495ull, 6298761804873494342ull, 8251913453383037717ull}}, {{8937143112159772038ull, 5379069737377319905ull, 6242569137259627916ull, 5157445908364398573ull}}, {{15783114908627102952ull, 6723837171721649881ull, 12414897440001922799ull, 6446807385455498216ull}}, {{5893835580501714977ull, 3793110446224674448ull, 15518621800002403499ull, 8058509231819372770ull}}, {{3683647237813571861ull, 64851019676727578ull, 14310824643428890091ull, 5036568269887107981ull}}, {{13827931084121740634ull, 13916121829878073184ull, 4053472749003948901ull, 6295710337358884977ull}}, {{17284913855152175793ull, 3560094232065427768ull, 9678526954682324031ull, 7869637921698606221ull}}, {{10803071159470109871ull, 9142587922681974211ull, 8354922355890146471ull, 4918523701061628888ull}}, {{8892152930910249434ull, 6816548884925079860ull, 10443652944862683089ull, 6148154626327036110ull}}, {{11115191163637811792ull, 13132372124583737729ull, 3831194144223578053ull, 7685193282908795138ull}}, {{29465449632550514ull, 10513575587078530033ull, 7006182358567124187ull, 4803245801817996961ull}}, {{4648517830468076047ull, 8530283465420774637ull, 13369413966636293138ull, 6004057252272496201ull}}, {{10422333306512482963ull, 1439482294921192488ull, 2876709403013202711ull, 7505071565340620252ull}}, {{6513958316570301852ull, 7817205461966827161ull, 11021315413738027502ull, 4690669728337887657ull}}, {{12754133914140265219ull, 548134790603758143ull, 18388330285599922282ull, 5863337160422359571ull}}, {{11330981374247943619ull, 9908540525109473487ull, 18373726838572514948ull, 7329171450527949464ull}}, {{9552040699382541620ull, 12385675656386841859ull, 4520414474506092069ull, 9161464313159936831ull}}, {{3664182427900394561ull, 10046890294455470114ull, 9742788074207389399ull, 5725915195724960519ull}}, {{13803600071730269009ull, 7946926849641949738ull, 7566799074331848845ull, 7157393994656200649ull}}, {{8031128052808060453ull, 14545344580479825077ull, 14070184861342198960ull, 8946742493320250811ull}}, {{7325298042218731735ull, 9090840362799890673ull, 6488022529125180398ull, 5591714058325156757ull}}, {{13768308571200802573ull, 2140178416645087533ull, 12721714179833863402ull, 6989642572906445946ull}}, {{3375327658718839504ull, 11898595057661135225ull, 6678770687937553444ull, 8737053216133057433ull}}, {{13638794832767744450ull, 16659993947892985323ull, 15703446726029440662ull, 5460658260083160895ull}}, {{12436807522532292658ull, 11601620398011455846ull, 15017622389109412924ull, 6825822825103951119ull}}, {{6322637366310590015ull, 14502025497514319808ull, 14160341967959378251ull, 8532278531379938899ull}}, {{3951648353944118760ull, 6757922926732755928ull, 6544370720760917455ull, 5332674082112461812ull}}, {{4939560442430148449ull, 3835717639988557006ull, 8180463400951146819ull, 6665842602640577265ull}}, {{15397822589892461369ull, 182961031558308353ull, 14837265269616321428ull, 8332303253300721581ull}}, {{2706110091041706500ull, 9337722681578718529ull, 11579133802723894844ull, 5207689533312950988ull}}, {{7994323632229521029ull, 11672153351973398161ull, 14473917253404868555ull, 6509611916641188735ull}}, {{14604590558714289190ull, 9978505671539359797ull, 13480710548328697790ull, 8137014895801485919ull}}, {{11433712108410124696ull, 1624880026284711969ull, 15342973120346517975ull, 5085634309875928699ull}}, {{457082080230492158ull, 15866158088138053674ull, 14567030382005759564ull, 6357042887344910874ull}}, {{9794724637142891005ull, 1385953536463015476ull, 8985415940652423648ull, 7946303609181138593ull}}, {{15345074935069082686ull, 866220960289384672ull, 17145100008976234540ull, 4966439755738211620ull}}, {{734599595126801742ull, 1082776200361730841ull, 2984630937510741559ull, 6208049694672764526ull}}, {{5529935512335890081ull, 15188528305734327263ull, 12954160708743202756ull, 7760062118340955657ull}}, {{10373738722851013157ull, 269458154229178731ull, 1178821415323419867ull, 4850038823963097286ull}}, {{8355487385136378542ull, 14171880748068637126ull, 10696898806009050641ull, 6062548529953871607ull}}, {{1220987194565697370ull, 3879792879803632696ull, 8759437489083925398ull, 7578185662442339509ull}}, {{763116996603560856ull, 16259928605159434147ull, 7780491439891147325ull, 4736366039026462193ull}}, {{14788954301036614782ull, 6489852701167128971ull, 14337300318291322061ull, 5920457548783077741ull}}, {{13874506857868380573ull, 12724001894886299118ull, 4086567342581988864ull, 7400571935978847177ull}}, {{4059880767740349955ull, 7952501184303936949ull, 14083319635182212800ull, 4625357459986779485ull}}, {{9686536978102825347ull, 9940626480379921186ull, 3769091488695602288ull, 5781696824983474357ull}}, {{2884799185773755876ull, 12425783100474901483ull, 9323050379296890764ull, 7227121031229342946ull}}, {{17441057037499358557ull, 15532228875593626853ull, 2430440937266337647ull, 9033901289036678683ull}}, {{13206503657650793050ull, 16625172074887098639ull, 17659926650287318693ull, 5646188305647924176ull}}, {{11896443553636103408ull, 6946407038326709587ull, 3628164239149596751ull, 7057735382059905221ull}}, {{10258868423617741356ull, 4071322779480999080ull, 9146891317364383843ull, 8822169227574881526ull}}, {{6411792764761088348ull, 238733727961930473ull, 1105121054925351998ull, 5513855767234300954ull}}, {{12626426974378748339ull, 9521789196807188899ull, 10604773355511465805ull, 6892319709042876192ull}}, {{11171347699546047519ull, 16513922514436374028ull, 13255966694389332256ull, 8615399636303595240ull}}, {{16205464349071055508ull, 10321201571522733767ull, 8284979183993332660ull, 5384624772689747025ull}}, {{15645144417911431481ull, 12901501964403417209ull, 14967909998419053729ull, 6730780965862183781ull}}, {{5721372467107125639ull, 2291819400222107800ull, 4874829442741653450ull, 8413476207327729727ull}}, {{3575857791941953524ull, 6044073143566205279ull, 9964297429354615262ull, 5258422629579831079ull}}, {{18304880295209605617ull, 16778463466312532406ull, 7843685768265881173ull, 6573028286974788849ull}}, {{13657728332157231214ull, 7138021277608501796ull, 14416293228759739371ull, 8216285358718486061ull}}, {{17759452244453045317ull, 2155420289291619670ull, 11316026277188531059ull, 5135178349199053788ull}}, {{12975943268711530838ull, 16529333416896688300ull, 14145032846485663823ull, 6418972936498817235ull}}, {{16219929085889413547ull, 16049980752693472471ull, 13069605039679691875ull, 8023716170623521544ull}}, {{17054984706321965323ull, 7725394961219726342ull, 8168503149799807422ull, 5014822606639700965ull}}, {{12095358846047680846ull, 433371664669882120ull, 14822314955677147182ull, 6268528258299626206ull}}, {{15119198557559601057ull, 9765086617692128458ull, 9304521657741658169ull, 7835660322874532758ull}}, {{14061185116902138565ull, 17632394182126050046ull, 1203640017661148451ull, 4897287701796582974ull}}, {{8353109359272897398ull, 17428806709230174654ull, 10727922058931211372ull, 6121609627245728717ull}}, {{1218014662236345939ull, 3339264312828166702ull, 18021588592091402120ull, 7652012034057160896ull}}, {{14596317219179879924ull, 2087040195517604188ull, 11263492870057126325ull, 4782507521285725560ull}}, {{18245396523974849905ull, 7220486262824393139ull, 14079366087571407906ull, 5978134401607156950ull}}, {{18195059636541174477ull, 18248979865385267232ull, 8375835572609484074ull, 7472668002008946188ull}}, {{11371912272838234049ull, 16017298434293179924ull, 14458269269735703354ull, 4670417501255591367ull}}, {{14214890341047792561ull, 10798251006011699097ull, 13461150568742241289ull, 5838021876569489209ull}}, {{3933554871027576989ull, 18109499775942011776ull, 2991380155645637899ull, 7297527345711861512ull}}, {{4916943588784471236ull, 18025188701500126816ull, 3739225194557047374ull, 9121909182139826890ull}}, {{3073089742990294522ull, 6654056920010191356ull, 6948701765025542513ull, 5701193238837391806ull}}, {{3841362178737868153ull, 12929257168440127099ull, 17909249243136703949ull, 7126491548546739757ull}}, {{190016704994947287ull, 2326513405267995162ull, 8551503498638716225ull, 8908114435683424697ull}}, {{4730446459049229959ull, 12983285924360966736ull, 16873904732717667400ull, 5567571522302140435ull}}, {{5913058073811537448ull, 16229107405451208420ull, 16480694897469696346ull, 6959464402877675544ull}}, {{7391322592264421810ull, 11063012219959234717ull, 2154124548127568817ull, 8699330503597094431ull}}, {{6925419629378957583ull, 18443597683542991458ull, 8263856870220812366ull, 5437081564748184019ull}}, {{17880146573578472787ull, 13831125067573963514ull, 5718135069348627554ull, 6796351955935230024ull}}, {{13126811180118315176ull, 8065534297612678585ull, 7147668836685784443ull, 8495439944919037530ull}}, {{1286727959932865129ull, 2735115926794230164ull, 9078979041356003181ull, 5309649965574398456ull}}, {{1608409949916081411ull, 8030580926920175609ull, 11348723801695003976ull, 6637062456967998070ull}}, {{6622198455822489668ull, 10038226158650219511ull, 4962532715263979162ull, 8296328071209997588ull}}, {{11056403062530137899ull, 10885577367583775098ull, 12324954983894762784ull, 5185205044506248492ull}}, {{4597131791307896565ull, 13606971709479718873ull, 15406193729868453480ull, 6481506305632810615ull}}, {{10358100757562258610ull, 17008714636849648591ull, 14646056143908178946ull, 8101882882041013269ull}}, {{13391342001117493488ull, 15242132666458418273ull, 11459628099156305793ull, 5063676801275633293ull}}, {{2904119446114703147ull, 5217607777790859130ull, 489477068663218530ull, 6329596001594541617ull}}, {{12853521344498154742ull, 15745381759093349720ull, 5223532354256411066ull, 7911995001993177021ull}}, {{8033450840311346714ull, 14452549617860731479ull, 5570550730623950868ull, 4944996876245735638ull}}, {{5430127531961795488ull, 18065687022325914349ull, 16186560450134714393ull, 6181246095307169547ull}}, {{11399345433379632264ull, 8747050722625229224ull, 15621514544241005088ull, 7726557619133961934ull}}, {{7124590895862270165ull, 5466906701640768265ull, 5151760571723240276ull, 4829098511958726209ull}}, {{13517424638255225611ull, 6833633377050960331ull, 11051386733081438249ull, 6036373139948407761ull}}, {{12285094779391644109ull, 13153727739741088318ull, 18425919434779185715ull, 7545466424935509701ull}}, {{3066498218692389664ull, 5915236828124486247ull, 13822042655950685024ull, 4715916515584693563ull}}, {{17668180828647650792ull, 7394046035155607808ull, 12665867301510968376ull, 5894895644480866954ull}}, {{3638481962100011874ull, 9242557543944509761ull, 6608962090033934662ull, 7368619555601083693ull}}, {{9159788471052402747ull, 2329824893075861393ull, 12872888630969806232ull, 9210774444501354616ull}}, {{17254082840476221477ull, 1456140558172413370ull, 8045555394356128895ull, 5756734027813346635ull}}, {{12344231513740501038ull, 15655233752997680425ull, 5445258224517773214ull, 7195917534766683294ull}}, {{1595231336893462585ull, 10345670154392324724ull, 16029944817501992326ull, 8994896918458354117ull}}, {{10220391622413189924ull, 1854357828067815048ull, 12324558520152439156ull, 5621810574036471323ull}}, {{12775489528016487405ull, 2317947285084768810ull, 10794012131763161041ull, 7027263217545589154ull}}, {{6745989873165833448ull, 7509120124783348917ull, 4269143127849175493ull, 8784079021931986443ull}}, {{6522086679942339857ull, 6999043087203287025ull, 362371445692040731ull, 5490049388707491527ull}}, {{12764294368355312725ull, 4137117840576720877ull, 14288022362397214626ull, 6862561735884364408ull}}, {{2120309905161977195ull, 14394769337575676905ull, 17860027952996518282ull, 8578202169855455510ull}}, {{12854408736794705507ull, 13608416854412185969ull, 6550831452195436022ull, 5361376356159659694ull}}, {{2232952865711218171ull, 7787149031160456654ull, 17411911352099070836ull, 6701720445199574617ull}}, {{12014563118993798522ull, 9733936288950570817ull, 7929831134841674833ull, 8377150556499468272ull}}, {{591572921730042221ull, 17612925226662576521ull, 4956144459276046770ull, 5235719097812167670ull}}, {{5351152170589940680ull, 12792784496473444843ull, 15418552610949834271ull, 6544648872265209587ull}}, {{2077254194810037945ull, 11379294602164418150ull, 14661504745259904935ull, 8180811090331511984ull}}, {{15133341927038437428ull, 14029588153993843199ull, 9163440465787440584ull, 5113006931457194990ull}}, {{14304991390370658881ull, 17536985192492303999ull, 2230928545379524922ull, 6391258664321493738ull}}, {{13269553219535935697ull, 12697859453760604191ull, 12012032718579181961ull, 7989073330401867172ull}}, {{15210999789851041667ull, 1018633130959295763ull, 16730892485966764534ull, 4993170831501166982ull}}, {{14402063718886414179ull, 10496663450553895512ull, 11690243570603679859ull, 6241463539376458728ull}}, {{18002579648608017724ull, 8509143294764981486ull, 14612804463254599824ull, 7801829424220573410ull}}, {{6639926261952623174ull, 5318214559228113429ull, 13744688807961512794ull, 4876143390137858381ull}}, {{12911593845868166871ull, 15871140235889917594ull, 3345802954669727280ull, 6095179237672322977ull}}, {{6916120270480432781ull, 1392181221152845377ull, 8793939711764547005ull, 7618974047090403721ull}}, {{15851790215118740248ull, 3175956272434222312ull, 17025427365921311638ull, 4761858779431502325ull}}, {{1367993695188873694ull, 13193317377397553699ull, 7446726152119475835ull, 5952323474289377907ull}}, {{15545050174268255829ull, 11879960703319554219ull, 4696721671721956890ull, 7440404342861722384ull}}, {{7409813349703965942ull, 12036661458002109291ull, 2935451044826223056ull, 4650252714288576490ull}}, {{4650580668702569523ull, 15045826822502636614ull, 12892685842887554628ull, 5812815892860720612ull}}, {{15036597872732987711ull, 360539454418744151ull, 16115857303609443286ull, 7266019866075900765ull}}, {{14184061322488846735ull, 9674046354878205997ull, 6309763574229640395ull, 9082524832594875957ull}}, {{11170881335769223162ull, 3740435962585184796ull, 6249445243107219199ull, 5676578020371797473ull}}, {{13963601669711528952ull, 63858934804093091ull, 12423492572311411903ull, 7095722525464746841ull}}, {{12842816068712023286ull, 13914881723787280076ull, 1694307660107101166ull, 8869653156830933552ull}}, {{17250132079799790362ull, 4085115058939662143ull, 1058942287566938229ull, 5543533223019333470ull}}, {{16950979081322350048ull, 9718079842101965583ull, 10547049896313448594ull, 6929416528774166837ull}}, {{16577037833225549656ull, 2924227765772681171ull, 17795498388819198647ull, 8661770660967708546ull}}, {{8054805636552274583ull, 8745171381249007588ull, 15733872511439387058ull, 5413606663104817841ull}}, {{10068507045690343229ull, 1708092189706483677ull, 5832282584017070111ull, 6767008328881022302ull}}, {{17197319825540316940ull, 15970173292415268308ull, 16513725266876113446ull, 8458760411101277877ull}}, {{1524952854107922280ull, 5369672289332154789ull, 12626921301011264856ull, 5286725256938298673ull}}, {{6517877086062290754ull, 6712090361665193486ull, 1948593570981917358ull, 6608406571172873342ull}}, {{17370718394432639250ull, 17613484988936267665ull, 11659114000582172505ull, 8260508213966091677ull}}, {{3939169968879317675ull, 4090899090444085435ull, 9592789259577551768ull, 5162817633728807298ull}}, {{312276442671759190ull, 5113623863055106794ull, 2767614537617163902ull, 6453522042161009123ull}}, {{9613717590194474795ull, 15615401865673659300ull, 17294576227303618589ull, 8066902552701261403ull}}, {{15231945530726322555ull, 12065469175259731014ull, 8503267132851067666ull, 5041814095438288377ull}}, {{9816559876553127386ull, 5858464432219887960ull, 15240769934491222487ull, 6302267619297860471ull}}, {{12270699845691409232ull, 2711394521847472046ull, 14439276399686640205ull, 7877834524122325589ull}}, {{3057501385129742866ull, 4000464585368363981ull, 11330390759017844080ull, 4923646577576453493ull}}, {{8433562749839566487ull, 5000580731710454976ull, 327930393490141388ull, 6154558221970566867ull}}, {{10541953437299458108ull, 6250725914638068720ull, 14244971047144840447ull, 7693197777463208583ull}}, {{6588720898312161318ull, 10824232724289874806ull, 15820635932106607135ull, 4808248610914505364ull}}, {{17459273159744977455ull, 8918604886934955603ull, 1329050841423707303ull, 6010310763643131706ull}}, {{17212405431253833915ull, 6536570090241306600ull, 10884685588634409937ull, 7512888454553914632ull}}, {{10757753394533646197ull, 15614571352469286385ull, 6802928492896506210ull, 4695555284096196645ull}}, {{18058877761594445650ull, 10294842153731832173ull, 13115346634548020667ull, 5869444105120245806ull}}, {{8738539146710893351ull, 8256866673737402313ull, 7170811256330250026ull, 7336805131400307258ull}}, {{15534859951816004592ull, 1097711305316977083ull, 18186886107267588341ull, 9171006414250384072ull}}, {{7403444460671308918ull, 2991912575036804629ull, 11366803817042242713ull, 5731879008906490045ull}}, {{13865991594266524052ull, 8351576737223393690ull, 373446716020639679ull, 7164848761133112557ull}}, {{8109117455978379257ull, 5827784903101854209ull, 5078494413453187503ull, 8956060951416390696ull}}, {{16597413456054956796ull, 10559894592079740736ull, 3174059008408242189ull, 5597538094635244185ull}}, {{2300022746359144378ull, 17811554258527063825ull, 8579259778937690640ull, 6996922618294055231ull}}, {{7486714451376318377ull, 3817698749449278165ull, 6112388705244725397ull, 8746153272867569039ull}}, {{6985039541323892938ull, 4691904727619492805ull, 10737771968419035229ull, 5466345795542230649ull}}, {{13342985445082254076ull, 10476566927951753910ull, 18033900978951181940ull, 6832932244427788311ull}}, {{7455359769498041787ull, 13095708659939692388ull, 17930690205261589521ull, 8541165305534735389ull}}, {{13882971892791051925ull, 1267288884821225886ull, 13512524387502187403ull, 5338228315959209618ull}}, {{8130342829134039098ull, 15419169161308696070ull, 7667283447522958445ull, 6672785394949012023ull}}, {{939556499562773065ull, 5438903396353706376ull, 4972418290976310153ull, 8340981743686265029ull}}, {{587222812226733166ull, 14928529668789536245ull, 5413604441073887797ull, 5213113589803915643ull}}, {{5345714533710804361ull, 4825604030704756594ull, 2155319532914971843ull, 6516391987254894554ull}}, {{15905515203993281259ull, 1420319019953557838ull, 11917521452998490612ull, 8145489984068618192ull}}, {{5329260984068412883ull, 10111071424325749457ull, 7448450908124056632ull, 5090931240042886370ull}}, {{11273262248512904008ull, 12638839280407186821ull, 87191598300294982ull, 6363664050053607963ull}}, {{256519755358966297ull, 6575177063654207719ull, 13944047553157532440ull, 7954580062567009953ull}}, {{7077853874740435792ull, 4109485664783879824ull, 1797500693082375919ull, 4971612539104381221ull}}, {{8847317343425544740ull, 525171062552461876ull, 6858561884780357803ull, 6214515673880476526ull}}, {{11059146679281930925ull, 14491521883472741057ull, 17796574392830223061ull, 7768144592350595657ull}}, {{18441181720619676588ull, 11363044186384157112ull, 4205329967877807557ull, 4855090370219122286ull}}, {{4604733077065044119ull, 368747177698032679ull, 14480034496702035255ull, 6068862962773902857ull}}, {{1144230327903917245ull, 14295992027404704561ull, 4264985065595380356ull, 7586078703467378572ull}}, {{12244359001008418038ull, 18158367053982716158ull, 11888987702851888530ull, 4741299189667111607ull}}, {{6082076714405746740ull, 13474586780623619390ull, 10249548610137472759ull, 5926623987083889509ull}}, {{16825967929861959232ull, 12231547457352136333ull, 17423621781099228853ull, 7408279983854861886ull}}, {{12822072965377418472ull, 9950560170058779160ull, 6278077594759630129ull, 4630174989909288679ull}}, {{16027591206721773090ull, 17049886231000861854ull, 3235910975022149757ull, 5787718737386610849ull}}, {{10811116971547440555ull, 7477299733468913606ull, 8656574737205075101ull, 7234648421733263561ull}}, {{4290524177579524885ull, 13958310685263529912ull, 15432404439933731780ull, 9043310527166579451ull}}, {{2681577610987203054ull, 17947316215144482003ull, 7339409765744888410ull, 5652069079479112157ull}}, {{17187030069016167529ull, 13210773232075826695ull, 13785948225608498417ull, 7065086349348890196ull}}, {{16872101567842821507ull, 2678408484812619657ull, 17232435282010623022ull, 8831357936686112745ull}}, {{3627534452260681586ull, 15509063358290050998ull, 3852743023615557532ull, 5519598710428820466ull}}, {{13757790102180627790ull, 939585124153012131ull, 14039300816374222724ull, 6899498388036025582ull}}, {{12585551609298396834ull, 1174481405191265164ull, 8325753983613002597ull, 8624372985045031978ull}}, {{17089341792666273829ull, 3039893887458234679ull, 9815282258185514527ull, 5390233115653144986ull}}, {{16749991222405454383ull, 17634925414604957061ull, 3045730785877117350ull, 6737791394566431233ull}}, {{7102430972724654266ull, 12820284731401420519ull, 8418849500773784592ull, 8422239243208039041ull}}, {{11356548385593990772ull, 8012677957125887824ull, 16790995984052085130ull, 5263899527005024400ull}}, {{14195685481992488465ull, 792475409552583972ull, 2542000906355554797ull, 6579874408756280501ull}}, {{17744606852490610582ull, 5602280280368117869ull, 7789187151371831400ull, 8224843010945350626ull}}, {{13396222292020325566ull, 3501425175230073668ull, 9479927988034782529ull, 5140526881840844141ull}}, {{16745277865025406957ull, 8988467487464979989ull, 16461596003470866065ull, 6425658602301055176ull}}, {{7096539275999594984ull, 15847270377758612891ull, 2130250930629030965ull, 8032073252876318971ull}}, {{2129494038286052913ull, 12210386995312827009ull, 17472307896139002017ull, 5020045783047699356ull}}, {{7273553566284954046ull, 1427925688858870049ull, 3393640796464200906ull, 6275057228809624196ull}}, {{13703627976283580461ull, 11008279147928363369ull, 4242050995580251132ull, 7843821536012030245ull}}, {{1647238457536155932ull, 16103546504310002914ull, 4957124881451350909ull, 4902388460007518903ull}}, {{11282420108774970723ull, 6294375075105339930ull, 1584720083386800733ull, 6127985575009398629ull}}, {{4879653099113937596ull, 12479654862309062817ull, 6592586122660888820ull, 7659981968761748286ull}}, {{14578998233014680758ull, 17023156325797940068ull, 17955424381945219224ull, 4787488730476092678ull}}, {{18223747791268350947ull, 2832201333537873469ull, 13220908440576748223ull, 5984360913095115848ull}}, {{8944626683803274971ull, 17375309722204505549ull, 16526135550720935278ull, 7480451141368894810ull}}, {{7896234686590740809ull, 6247882557950428064ull, 14940520737627972453ull, 4675281963355559256ull}}, {{9870293358238426011ull, 12421539215865422984ull, 228906848325413950ull, 5844102454194449071ull}}, {{12337866697798032514ull, 6303551982977002922ull, 14121191615688931150ull, 7305128067743061338ull}}, {{6198961335392764835ull, 17102812015576029461ull, 8428117482756388129ull, 9131410084678826673ull}}, {{6180193843834171974ull, 3771728482093936557ull, 16796788472791212341ull, 5707131302924266670ull}}, {{12336928323220102871ull, 9326346621044808600ull, 11772613554134239618ull, 7133914128655333338ull}}, {{15421160404025128589ull, 2434561239451234942ull, 5492394905813023715ull, 8917392660819166673ull}}, {{5026539234088317464ull, 17662501839152879503ull, 14961961862201609581ull, 5573370413011979170ull}}, {{1671488024183008926ull, 8243069243658935667ull, 9479080290897236169ull, 6966713016264973963ull}}, {{15924418085510924870ull, 14915522573001057487ull, 7237164345194157307ull, 8708391270331217454ull}}, {{16870290331085409900ull, 7016358598911966977ull, 18358285771028512029ull, 5442744543957010908ull}}, {{7252804858574598662ull, 13382134267067346626ull, 4501113140076088420ull, 6803430679946263636ull}}, {{18289378110073024136ull, 16727667833834183282ull, 5626391425095110525ull, 8504288349932829545ull}}, {{16042547337223027989ull, 12760635405360058503ull, 15045709686752913838ull, 5315180218708018465ull}}, {{15441498153101397082ull, 6727422219845297321ull, 4972079053158978586ull, 6643975273385023082ull}}, {{5466814636094582641ull, 17632649811661397460ull, 15438470853303499040ull, 8304969091731278852ull}}, {{12640131184413889959ull, 11020406132288373412ull, 425672246459911092ull, 5190605682332049283ull}}, {{15800163980517362448ull, 13775507665360466765ull, 14367148363357052577ull, 6488257102915061603ull}}, {{5915146920364539348ull, 3384326526418419745ull, 13347249435768927818ull, 8110321378643827004ull}}, {{15226181871296306853ull, 6726890097438900244ull, 17565402934210355694ull, 5068950861652391877ull}}, {{585983265410831950ull, 17631984658653401114ull, 8121695612480780905ull, 6336188577065489847ull}}, {{9955851118618315745ull, 8204922768034587680ull, 5540433497173588228ull, 7920235721331862309ull}}, {{6222406949136447341ull, 14351448766876393108ull, 5768613944947186594ull, 4950147325832413943ull}}, {{7778008686420559176ull, 8715938921740715577ull, 2599081412756595339ull, 6187684157290517429ull}}, {{14334196876453086874ull, 6283237633748506567ull, 7860537784373132078ull, 7734605196613146786ull}}, {{15876402075424261152ull, 17762081576374980316ull, 9524522133660595452ull, 4834128247883216741ull}}, {{1398758520570774824ull, 3755857896759173780ull, 16517338685503132220ull, 6042660309854020926ull}}, {{1748448150713468530ull, 4694822370948967225ull, 11423301320024139467ull, 7553325387317526158ull}}, {{12621995140264387592ull, 628420972629410563ull, 2527877306587699263ull, 4720828367073453849ull}}, {{11165807906903096585ull, 14620584271068926916ull, 7771532651662011982ull, 5901035458841817311ull}}, {{13957259883628870732ull, 9052358301981382837ull, 5102729796150127074ull, 7376294323552271639ull}}, {{3611516799253924702ull, 2092075840621952739ull, 1766726226760270939ull, 9220367904440339549ull}}, {{18398099064029560603ull, 17448448464884578125ull, 3410046900938863288ull, 5762729940275212218ull}}, {{9162565774754787042ull, 3363816507396171041ull, 13485930663028354919ull, 7203412425344015272ull}}, {{16064893236870871706ull, 18039828689527377513ull, 16857413328785443648ull, 9004265531680019090ull}}, {{3123029245403212961ull, 11274892930954610946ull, 15147569348918290184ull, 5627665957300011931ull}}, {{13127158593608792009ull, 14093616163693263682ull, 14322775667720474826ull, 7034582446625014914ull}}, {{7185576205156214203ull, 8393648167761803795ull, 8680097547795817725ull, 8793228058281268643ull}}, {{2185142119008939925ull, 7551873114064821324ull, 3119217958158692126ull, 5495767536425792902ull}}, {{2731427648761174906ull, 216469355726250847ull, 13122394484553140966ull, 6869709420532241127ull}}, {{17249342616233632344ull, 9493958731512589366ull, 11791307087264038303ull, 8587136775665301409ull}}, {{6169153116718632311ull, 12851253234836450210ull, 452037901898942083ull, 5366960484790813381ull}}, {{16934813432753066197ull, 11452380525118174858ull, 5176733395801065508ull, 6708700605988516726ull}}, {{11945144754086556938ull, 14315475656397718573ull, 15694288781606107693ull, 8385875757485645907ull}}, {{9771558480517792039ull, 11253015294462268060ull, 7503087479290123356ull, 5241172348428528692ull}}, {{12214448100647240048ull, 14066269118077835075ull, 9378859349112654195ull, 6551465435535660865ull}}, {{10656374107381662156ull, 12971150379169905940ull, 16335260204818205648ull, 8189331794419576081ull}}, {{15883605853968314656ull, 8106968986981191212ull, 3292008600370296674ull, 5118332371512235051ull}}, {{1407763243750841703ull, 910339196871713208ull, 17950068805745034555ull, 6397915464390293813ull}}, {{1759704054688552129ull, 14972982051371805222ull, 8602527951899129481ull, 7997394330487867267ull}}, {{14934873089462508793ull, 2440584754466296407ull, 3070736960723261974ull, 4998371456554917042ull}}, {{14056905343400748087ull, 12274102979937646317ull, 13061793237758853275ull, 6247964320693646302ull}}, {{3736073623968771397ull, 10730942706494669993ull, 7103869510343790786ull, 7809955400867057878ull}}, {{13864261061048951883ull, 11318525209986556649ull, 18274976499247032953ull, 4881222125541911173ull}}, {{3495268271029026142ull, 313098457201032100ull, 9008662568776627480ull, 6101527656927388967ull}}, {{4369085338786282677ull, 391373071501290125ull, 6649142192543396446ull, 7626909571159236209ull}}, {{5036521345955120625ull, 14079666224970470040ull, 15684928916408092538ull, 4766818481974522630ull}}, {{6295651682443900782ull, 8376210744358311742ull, 10382789108655339865ull, 5958523102468153288ull}}, {{17092936639909651785ull, 15081949448875277581ull, 12978486385819174831ull, 7448153878085191610ull}}, {{12988928409157226318ull, 16343747433188130344ull, 12723240009564372173ull, 4655096173803244756ull}}, {{16236160511446532897ull, 6594626236202999218ull, 15904050011955465217ull, 5818870217254055945ull}}, {{11071828602453390313ull, 12854968813681136927ull, 6045004459662167809ull, 7273587771567569932ull}}, {{9228099734639349987ull, 2233652961819257447ull, 7556255574577709762ull, 9091984714459462415ull}}, {{12685091361790675598ull, 6007719119564423808ull, 11640188761752150457ull, 5682490446537164009ull}}, {{15856364202238344498ull, 12121334917882917664ull, 715177896908024359ull, 7103113058171455012ull}}, {{1373711179088379006ull, 10539982628926259177ull, 893972371135030449ull, 8878891322714318765ull}}, {{12387784532998706639ull, 18116704189147381745ull, 2864575741173087982ull, 5549307076696449228ull}}, {{1649672610966219587ull, 13422508199579451374ull, 3580719676466359978ull, 6936633845870561535ull}}, {{11285462800562550291ull, 7554763212619538409ull, 18310957650865113685ull, 8670792307338201918ull}}, {{135885222710512076ull, 7027570017100905458ull, 6832662513363308149ull, 5419245192086376199ull}}, {{9393228565242915903ull, 13396148539803519726ull, 3929142123276747282ull, 6774056490107970249ull}}, {{2518163669698869071ull, 7521813637899623850ull, 9523113672523322007ull, 8467570612634962811ull}}, {{6185538311989181073ull, 11618662551328346762ull, 3646103036113382302ull, 5292231632896851757ull}}, {{16955294926841252150ull, 5299956152305657644ull, 9169314813569115782ull, 6615289541121064696ull}}, {{2747374584842013571ull, 15848317227236847864ull, 11461643516961394727ull, 8269111926401330870ull}}, {{1717109115526258482ull, 16822727294664111771ull, 2551841179673483800ull, 5168194954000831794ull}}, {{15981444449689986814ull, 2581665044620588097ull, 12413173511446630559ull, 6460243692501039742ull}}, {{6141747506830319806ull, 17062139361057898834ull, 6293094852453512390ull, 8075304615626299678ull}}, {{8450278210196337783ull, 6052151082233798867ull, 17768242338065608956ull, 5047065384766437298ull}}, {{5951161744318034324ull, 7565188852792248584ull, 12986930885727235387ull, 6308831730958046623ull}}, {{7438952180397542905ull, 4844800047562922826ull, 11621977588731656330ull, 7886039663697558279ull}}, {{9261031131175852220ull, 7639686048154214670ull, 14181265020598367062ull, 4928774789810973924ull}}, {{2352916877115039467ull, 326235523337992530ull, 17726581275747958828ull, 6160968487263717405ull}}, {{12164518133248575142ull, 407794404172490662ull, 8323168539402784823ull, 7701210609079646757ull}}, {{2991137814852971560ull, 7172400530248888520ull, 7507823346340434466ull, 4813256630674779223ull}}, {{3738922268566214449ull, 18188872699665886458ull, 4773093164498155178ull, 6016570788343474029ull}}, {{13897024872562543870ull, 13512718837727582264ull, 10578052474050081877ull, 7520713485429342536ull}}, {{8685640545351589919ull, 10751292282793432867ull, 6611282796281301173ull, 4700445928393339085ull}}, {{6245364663262099494ull, 18050801371919178988ull, 12875789513779014370ull, 5875557410491673856ull}}, {{7806705829077624368ull, 13340129678044197927ull, 16094736892223767963ull, 7344446763114592320ull}}, {{5146696267919642556ull, 12063476079127859505ull, 1671677041570158338ull, 9180558453893240401ull}}, {{14745900213518246357ull, 12151358567882300094ull, 12574013197049818721ull, 5737849033683275250ull}}, {{9209003230043032139ull, 1354140154570711406ull, 6494144459457497594ull, 7172311292104094063ull}}, {{2287882000699014365ull, 10916047230068165066ull, 3505994555894484088ull, 8965389115130117579ull}}, {{6041612268864271882ull, 6822529518792603166ull, 18332147661929910219ull, 5603368196956323486ull}}, {{16775387372935115661ull, 3916475880063366053ull, 13691812540557611966ull, 7004210246195404358ull}}, {{7134176160886730864ull, 14118966886933983375ull, 7891393638842239149ull, 8755262807744255448ull}}, {{11376389128195288646ull, 11130197313547433561ull, 4932121024276399468ull, 5472039254840159655ull}}, {{385428354961947096ull, 13912746641934291952ull, 1553465261918111431ull, 6840049068550199569ull}}, {{481785443702433869ull, 12779247283990477036ull, 6553517595825027193ull, 8550061335687749461ull}}, {{9524487939168796977ull, 1069500524852966291ull, 6401791506604335948ull, 5343788334804843413ull}}, {{7293923905533608317ull, 1336875656066207864ull, 12613925401682807839ull, 6679735418506054266ull}}, {{9117404881917010396ull, 15506152625364923542ull, 6544034715248733990ull, 8349669273132567833ull}}, {{1086692032770743593ull, 5079659372425689310ull, 15619236743098928504ull, 5218543295707854895ull}}, {{10581737077818205300ull, 6349574215532111637ull, 14912359910446272726ull, 6523179119634818619ull}}, {{17838857365700144528ull, 17160339806269915354ull, 14028763869630453003ull, 8153973899543523274ull}}, {{15760971871989978234ull, 8419369369705003144ull, 13379663436946421031ull, 5096233687214702046ull}}, {{1254470766277921177ull, 5912525693703866027ull, 7501207259328250481ull, 6370292109018377558ull}}, {{15403146513129565183ull, 12002343135557220437ull, 153137037305537293ull, 7962865136272971948ull}}, {{11932809579919672192ull, 9807307468936956725ull, 9319082685170736616ull, 4976790710170607467ull}}, {{1080953919617426527ull, 12259134336171195907ull, 7037167338036032866ull, 6220988387713259334ull}}, {{15186250454803946871ull, 6100545883359219075ull, 18019831209399816891ull, 7776235484641574167ull}}, {{7185563525038772843ull, 1506998167885817970ull, 18179923533515967413ull, 4860147177900983854ull}}, {{18205326443153241861ull, 6495433728284660366ull, 13501532380040183458ull, 6075183972376229818ull}}, {{13533286017086776518ull, 17342664197210601266ull, 7653543438195453514ull, 7593979965470287273ull}}, {{13069989779106623228ull, 15450851141684013695ull, 16312679694940628206ull, 4746237478418929545ull}}, {{11725801205455891131ull, 10090191890250241311ull, 6555791563393621546ull, 5932796848023661932ull}}, {{10045565488392476010ull, 3389367825958025831ull, 8194739454242026933ull, 7415996060029577415ull}}, {{13196007457886379362ull, 4424197900437460096ull, 12039241186542348689ull, 4634997537518485884ull}}, {{16495009322357974203ull, 10141933393974213024ull, 15049051483177935861ull, 5793746921898107355ull}}, {{2172017579237916137ull, 17289102760895154185ull, 14199628335545031922ull, 7242183652372634194ull}}, {{7326707992474783075ull, 12388006414264166923ull, 8526163382576514095ull, 9052729565465792743ull}}, {{2273349486083045470ull, 14660033036556186183ull, 12246381141751403165ull, 5657955978416120464ull}}, {{16676744912885970550ull, 4489983240413069016ull, 15307976427189253957ull, 7072444973020150580ull}}, {{2399187067397911571ull, 10224165068943724175ull, 688226460277015830ull, 8840556216275188226ull}}, {{8417020944764776588ull, 1778417149662439705ull, 5041827556100522798ull, 5525347635171992641ull}}, {{15132962199383358639ull, 11446393473932825439ull, 10913970463553041401ull, 6906684543964990801ull}}, {{14304516730801810395ull, 472933787133868087ull, 18254149097868689656ull, 8633355679956238501ull}}, {{15857851984392213353ull, 295583616958667554ull, 13714686195381624987ull, 5395847299972649063ull}}, {{10598942943635490883ull, 14204537576480498155ull, 12531671725799643329ull, 6744809124965811329ull}}, {{8636992661116975699ull, 3920613915318458982ull, 1829531601967390450ull, 8431011406207264162ull}}, {{786434394770721908ull, 7062069715501424768ull, 5755143269657006935ull, 5269382128879540101ull}}, {{983042993463402385ull, 4215901125949393056ull, 11805615105498646573ull, 6586727661099425126ull}}, {{1228803741829252982ull, 9881562425864129224ull, 5533646845018532408ull, 8233409576374281408ull}}, {{768002338643283114ull, 6175976516165080765ull, 3458529278136582755ull, 5145880985233925880ull}}, {{5571688941731491796ull, 3108284626778963052ull, 4323161597670728444ull, 6432351231542407350ull}}, {{6964611177164364745ull, 3885355783473703815ull, 14627324033943186363ull, 8040439039428009187ull}}, {{11270411013368809822ull, 122504355457370932ull, 6836234512000797525ull, 5025274399642505742ull}}, {{14088013766711012277ull, 4764816462749101569ull, 17768665176855772714ull, 6281592999553132177ull}}, {{3774959153106601634ull, 15179392615291152770ull, 8375773415787552180ull, 7851991249441415222ull}}, {{6971035489119013926ull, 263748347702194673ull, 623172366439832209ull, 4907494530900884514ull}}, {{13325480379826155311ull, 4941371453055131245ull, 10002337494904566069ull, 6134368163626105642ull}}, {{2821792419500530426ull, 10788400334746301961ull, 3279549831775931778ull, 7667960204532632053ull}}, {{13292835308256301277ull, 11354436227643826629ull, 4355561654073651313ull, 4792475127832895033ull}}, {{2780986080038212884ull, 357987229272619575ull, 10056138086019452046ull, 5990593909791118791ull}}, {{17311290655329929816ull, 9670856073445550276ull, 7958486589096927153ull, 7488242387238898489ull}}, {{1596184622726430327ull, 17573500091971938683ull, 16503269164254049230ull, 4680151492024311555ull}}, {{15830288833690201621ull, 12743503078110147545ull, 16017400436890173634ull, 5850189365030389444ull}}, {{5952802986830588314ull, 6706006810782908624ull, 1575006472403165427ull, 7312736706287986806ull}}, {{7441003733538235393ull, 3770822495051247876ull, 11192130127358732592ull, 9140920882859983507ull}}, {{13873999370316172929ull, 2356764059407029922ull, 4689238320385513918ull, 5713075551787489692ull}}, {{8119127176040440353ull, 12169327111113563211ull, 5861547900481892397ull, 7141344439734362115ull}}, {{5537222951623162537ull, 1376600833609790302ull, 2715248857174977593ull, 8926680549667952644ull}}, {{17295822400046640298ull, 12389590567074588698ull, 10920402572589136803ull, 5579175343542470402ull}}, {{12396405963203524564ull, 10875302190415847969ull, 4427131178881645196ull, 6973969179428088003ull}}, {{1660449398722241993ull, 13594127738019809962ull, 922227955174668591ull, 8717461474285110004ull}}, {{5649466892628789150ull, 15413858863903463082ull, 9799764508838943677ull, 5448413421428193752ull}}, {{16285205652640762245ull, 5432265524597165140ull, 12249705636048679597ull, 6810516776785242190ull}}, {{1909762992091401190ull, 11402017924173844330ull, 6088760008206073688ull, 8513145970981552738ull}}, {{5805287888484513648ull, 7126261202608652706ull, 8417161023556183959ull, 5320716231863470461ull}}, {{16479981897460417868ull, 4296140484833427978ull, 15133137297872617853ull, 6650895289829338076ull}}, {{11376605334970746527ull, 9981861624469172877ull, 469677548631220700ull, 8313619112286672596ull}}, {{9416221343570410531ull, 15462035552148008856ull, 9516920504749288745ull, 5196011945179170372ull}}, {{11770276679463013164ull, 5492486384902847358ull, 11896150630936610932ull, 6495014931473962965ull}}, {{5489473812473990647ull, 6865607981128559198ull, 1035130233388599953ull, 8118768664342453707ull}}, {{17265979188078407867ull, 15820220034273819258ull, 16787857460363732634ull, 5074230415214033566ull}}, {{12359101948243234025ull, 10551903005987498265ull, 11761449788599889985ull, 6342788019017541958ull}}, {{1613819380021878819ull, 17801564775911760736ull, 5478440198895086673ull, 7928485023771927448ull}}, {{1008637112513674262ull, 4208448957303768604ull, 3424025124309429171ull, 4955303139857454655ull}}, {{1260796390642092828ull, 648875178202322851ull, 18115089460668950176ull, 6194128924821818318ull}}, {{15411053543584779747ull, 811093972752903563ull, 13420489788981411912ull, 7742661156027272898ull}}, {{7326065455526793390ull, 506933732970564727ull, 12999492136540770349ull, 4839163222517045561ull}}, {{4545895800981103833ull, 5245353184640593813ull, 2414307115393799224ull, 6048954028146306952ull}}, {{10294055769653767695ull, 6556691480800742266ull, 3017883894242249030ull, 7561192535182883690ull}}, {{11045470874460992714ull, 17932990230782627628ull, 6497863452328793547ull, 4725745334489302306ull}}, {{13806838593076240892ull, 17804551770050896631ull, 17345701352265767742ull, 5907181668111627882ull}}, {{12646862222917913211ull, 13032317675708844981ull, 12458754653477433870ull, 7383977085139534853ull}}, {{10210131898537389709ull, 3533512528890640209ull, 10092564667637090121ull, 4614985678212209283ull}}, {{17374350891599125040ull, 9028576679540688165ull, 8004019816118974747ull, 5768732097765261604ull}}, {{7882880559216742588ull, 6674034830998472303ull, 10005024770148718434ull, 7210915122206577005ull}}, {{5241914680593540331ull, 17565915575602866187ull, 17117966981113285946ull, 9013643902758221256ull}}, {{970353666157268755ull, 15590383253179179271ull, 10698729363195803716ull, 5633527439223888285ull}}, {{15048000137978749656ull, 1041234992764422472ull, 17985097722422142550ull, 7041909299029860356ull}}, {{363256098763885453ull, 10524915777810303899ull, 4034628079318126571ull, 8802386623787325446ull}}, {{16367936126223286073ull, 4272229351917745984ull, 16356700604855992819ull, 5501491639867078403ull}}, {{2013176084069555975ull, 728600671469794577ull, 15834189737642603120ull, 6876864549833848004ull}}, {{7128156123514332872ull, 910750839337243221ull, 1345993098343702284ull, 8596080687292310006ull}}, {{6760940586410151997ull, 9792591311440552821ull, 14676303741746977639ull, 5372550429557693753ull}}, {{13062861751440077900ull, 7629053120873303122ull, 4510321621901558337ull, 6715688036947117192ull}}, {{7105205152445321567ull, 14148002419519016807ull, 5637902027376947921ull, 8394610046183896490ull}}, {{11358282247919407836ull, 1924972484558303648ull, 8135374785537980355ull, 5246631278864935306ull}}, {{14197852809899259795ull, 16241273660980043272ull, 945846445067699635ull, 6558289098581169133ull}}, {{17747316012374074743ull, 15689906057797666186ull, 5793994074762012448ull, 8197861373226461416ull}}, {{15703758526161184619ull, 9806191286123541366ull, 3621246296726257780ull, 5123663358266538385ull}}, {{10406326120846704965ull, 12257739107654426708ull, 9138243889335210129ull, 6404579197833172981ull}}, {{13007907651058381206ull, 1487115829285869673ull, 16034490880096400566ull, 8005723997291466226ull}}, {{1212413254270406398ull, 14764505448585832258ull, 14633242818487638257ull, 5003577498307166391ull}}, {{10738888604692783806ull, 4620573755450126610ull, 13679867504682159918ull, 6254471872883957989ull}}, {{4200238719011203949ull, 14999089231167434071ull, 3264776325570536185ull, 7818089841104947487ull}}, {{9542678227023084324ull, 2456901741838564438ull, 8958014231122666972ull, 4886306150690592179ull}}, {{2704975746924079597ull, 3071127177298205548ull, 6585831770475945811ull, 6107882688363240224ull}}, {{3381219683655099496ull, 17673967026904920647ull, 8232289713094932263ull, 7634853360454050280ull}}, {{9030791329925519041ull, 17963758419456657260ull, 5145181070684332664ull, 4771783350283781425ull}}, {{11288489162406898802ull, 4007953950611269959ull, 11043162356782803735ull, 5964729187854726781ull}}, {{9498925434581235598ull, 398256419836699545ull, 18415638964405892573ull, 7455911484818408476ull}}, {{17466043442681742009ull, 2554753271611631167ull, 2286402315898907050ull, 4659944678011505298ull}}, {{17220868284924789607ull, 12416813626369314767ull, 12081374931728409620ull, 5824930847514381622ull}}, {{16914399337728599105ull, 15521017032961643459ull, 5878346627805736217ull, 7281163559392977028ull}}, {{16531313153733360977ull, 5566213235919890612ull, 7347933284757170272ull, 9101454449241221285ull}}, {{1108698684228574803ull, 3478883272449931633ull, 6898301312186925372ull, 5688409030775763303ull}}, {{5997559373713106407ull, 4348604090562414541ull, 4011190621806268811ull, 7110511288469704129ull}}, {{12108635235568770913ull, 824069094775630272ull, 9625674295685223918ull, 8888139110587130161ull}}, {{7567897022230481821ull, 14350101239516932632ull, 17545261480871734708ull, 5555086944116956350ull}}, {{9459871277788102276ull, 17937626549396165790ull, 12708204814234892577ull, 6943858680146195438ull}}, {{2601467060380352037ull, 8586975131463043526ull, 6661883980938839914ull, 8679823350182744298ull}}, {{15460974968019883735ull, 9978545475591790107ull, 8775363506514162850ull, 5424889593864215186ull}}, {{14714532691597466765ull, 3249809807634961826ull, 1745832346287927755ull, 6781111992330268983ull}}, {{9169793827642057648ull, 17897320314825865995ull, 16017348488142073405ull, 8476389990412836228ull}}, {{3425278133062592078ull, 13491668205979860199ull, 787470768234020070ull, 5297743744008022643ull}}, {{18116655721610403809ull, 7641213220620049440ull, 14819396515574688800ull, 6622179680010028303ull}}, {{4199075578303453146ull, 9551516525775061801ull, 13912559626040973096ull, 8277724600012535379ull}}, {{14153637282508127976ull, 5969697828609413625ull, 6389506757061914233ull, 5173577875007834612ull}}, {{3856988547852996258ull, 12073808304189154936ull, 7986883446327392791ull, 6466972343759793265ull}}, {{4821235684816245322ull, 10480574361809055766ull, 14595290326336628893ull, 8083715429699741581ull}}, {{16848330358292317039ull, 8856201985344353805ull, 11427899463174087010ull, 5052322143562338488ull}}, {{7225354892583232586ull, 1846880444825666449ull, 14284874328967608763ull, 6315402679452923110ull}}, {{13643379634156428637ull, 16143658611314246773ull, 8632720874354735145ull, 7894253349316153888ull}}, {{10832955280561461850ull, 3172257604430322377ull, 5395450546471709466ull, 4933908343322596180ull}}, {{18152880119129215217ull, 13188694042392678779ull, 6744313183089636832ull, 6167385429153245225ull}}, {{18079414130484131117ull, 16485867552990848474ull, 13042077497289433944ull, 7709231786441556531ull}}, {{15911319849979969852ull, 10303667220619280296ull, 5845455426592202263ull, 4818269866525972832ull}}, {{1442405738765410699ull, 8267898007346712467ull, 7306819283240252829ull, 6022837333157466040ull}}, {{15638065228738927086ull, 14946558527610778487ull, 9133524104050316036ull, 7528546666446832550ull}}, {{16691319795602911285ull, 118227042901960746ull, 1096766546604059619ull, 4705341666529270344ull}}, {{11640777707648863298ull, 13982841858909614645ull, 1370958183255074523ull, 5881677083161587930ull}}, {{715914079278915410ull, 12866866305209630403ull, 10937069765923618962ull, 7352096353951984912ull}}, {{14729950654380807974ull, 6860210844657262195ull, 13671337207404523703ull, 9190120442439981140ull}}, {{6900376149774311032ull, 11205160805551870728ull, 17767957791482603122ull, 5743825276524988212ull}}, {{8625470187217888790ull, 4783078970085062602ull, 3763203165643702287ull, 7179781595656235266ull}}, {{1558465697167585179ull, 1367162694178940349ull, 13927375993909403667ull, 8974726994570294082ull}}, {{3279884069943434689ull, 16995377748357695382ull, 13316296014620765195ull, 5609204371606433801ull}}, {{13323227124284069170ull, 16632536167019731323ull, 2810311962993792782ull, 7011505464508042252ull}}, {{12042347886927698558ull, 11567298171919888346ull, 3512889953742240978ull, 8764381830635052815ull}}, {{12138153447757199503ull, 11841247375877318120ull, 9113085248729982467ull, 5477738644146908009ull}}, {{15172691809696499378ull, 10189873201419259746ull, 16003042579339865988ull, 6847173305183635011ull}}, {{9742492725265848415ull, 12737341501774074683ull, 15392117205747444581ull, 8558966631479543764ull}}, {{3783214944077461308ull, 10266681447822490629ull, 396701216737377055ull, 5349354144674714853ull}}, {{9340704698524214538ull, 8221665791350725382ull, 5107562539349109223ull, 6686692680843393566ull}}, {{2452508836300492365ull, 5665396220761018824ull, 15607825211041162337ull, 8358365851054241957ull}}, {{1532818022687807728ull, 15070087684044106525ull, 12060733766114420412ull, 5223978656908901223ull}}, {{6527708546787147564ull, 390865531345581540ull, 10464231189215637612ull, 6529973321136126529ull}}, {{8159635683483934455ull, 488581914181976925ull, 17691975004946934919ull, 8162466651420158161ull}}, {{7405615311391152987ull, 7222892724004817434ull, 4139955350450752468ull, 5101541657137598851ull}}, {{33647102384165425ull, 9028615905006021793ull, 563258169636052681ull, 6376927071421998564ull}}, {{4653744896407594685ull, 15897455899684915145ull, 704072712045065851ull, 7971158839277498205ull}}, {{14437805606323216438ull, 7630066928089378013ull, 2745888454241860109ull, 4981974274548436378ull}}, {{4212198952621856836ull, 14149269678539110421ull, 12655732604657100944ull, 6227467843185545472ull}}, {{9876934709204708949ull, 17686587098173888026ull, 15819665755821376180ull, 7784334803981931840ull}}, {{10784770211680330997ull, 1830744899503904208ull, 9887291097388360113ull, 4865209252488707400ull}}, {{13480962764600413746ull, 6900117142807268164ull, 12359113871735450141ull, 6081511565610884250ull}}, {{16851203455750517183ull, 13236832446936473109ull, 6225520302814536868ull, 7601889457013605313ull}}, {{12837845169057767191ull, 17496392316190071501ull, 15420165235327555302ull, 4751180910633503320ull}}, {{2212248406040045277ull, 12647118358382813569ull, 828462470449892512ull, 5938976138291879151ull}}, {{7376996525977444500ull, 15808897947978516961ull, 14870636143344529352ull, 7423720172864848938ull}}, {{16139837874804372573ull, 9880561217486573100ull, 13905833608017718749ull, 4639825108040530586ull}}, {{1728053269795914100ull, 16962387540285604280ull, 8158919973167372628ull, 5799781385050663233ull}}, {{2160066587244892625ull, 2756240351647453734ull, 14810335984886603690ull, 7249726731313329041ull}}, {{11923455270910891589ull, 12668672476414092975ull, 4677861925826090900ull, 9062158414141661302ull}}, {{14369688571960389099ull, 17141292334613583917ull, 16758721758923470524ull, 5663849008838538313ull}}, {{4127052659668322662ull, 2979871344557428281ull, 7113344143372174444ull, 7079811261048172892ull}}, {{9770501843012791231ull, 3724839180696785351ull, 8891680179215218055ull, 8849764076310216115ull}}, {{13024092679524076376ull, 9245553515576572700ull, 3251457102795817332ull, 5531102547693885072ull}}, {{16280115849405095470ull, 11556941894470715875ull, 4064321378494771665ull, 6913878184617356340ull}}, {{15738458793328981433ull, 611119312806231132ull, 5080401723118464582ull, 8642347730771695425ull}}, {{613164708975837588ull, 14217007625786058170ull, 14704466123017510123ull, 5401467331732309640ull}}, {{9989827923074572793ull, 13159573513805184808ull, 18380582653771887654ull, 6751834164665387050ull}}, {{12487284903843215991ull, 7226094855401705202ull, 13752356280360083760ull, 8439792705831733813ull}}, {{12416239083329397898ull, 4516309284626065751ull, 10901065684438746302ull, 5274870441144833633ull}}, {{10908612835734359469ull, 14868758642637357997ull, 18238018123975820781ull, 6593588051431042041ull}}, {{18247452063095337240ull, 4750890248014533784ull, 8962464599687612265ull, 8241985064288802552ull}}, {{11404657539434585775ull, 14498521451077553375ull, 5601540374804757665ull, 5151240665180501595ull}}, {{9644135905865844315ull, 4288093758564778007ull, 2390239450078559178ull, 6439050831475626994ull}}, {{7443483863904917489ull, 14583489235060748317ull, 12211171349452974780ull, 8048813539344533742ull}}, {{6958020424154267383ull, 18338052808767743506ull, 3020296074980721333ull, 5030508462090333589ull}}, {{17920897567047610037ull, 9087507955677515670ull, 8387056112153289571ull, 6288135577612916986ull}}, {{13177749921954736738ull, 6747698926169506684ull, 1260448103336836156ull, 7860169472016146233ull}}, {{17459465738076486269ull, 13440683865710717485ull, 12316995110653992357ull, 4912605920010091395ull}}, {{7989274117313444124ull, 2965796776856233145ull, 10784557869890102543ull, 6140757400012614244ull}}, {{14598278665069193059ull, 17542304026352455143ull, 13480697337362628178ull, 7675946750015767805ull}}, {{16041453193309327518ull, 15575626034897672368ull, 10731278845065336563ull, 4797466718759854878ull}}, {{1605072417927107782ull, 14857846525194702557ull, 4190726519476894896ull, 5996833398449818598ull}}, {{6618026540836272631ull, 125564082783826580ull, 14461780186200894429ull, 7496041748062273247ull}}, {{13359638624877446203ull, 2384320560953585564ull, 15956141644016640874ull, 4685026092538920779ull}}, {{16699548281096807753ull, 12203772738046757763ull, 15333491036593413188ull, 5856282615673650974ull}}, {{16262749332943621787ull, 15254715922558447204ull, 9943491758886990677ull, 7320353269592063718ull}}, {{1881692592469975618ull, 5233336847915895294ull, 3205992661753962539ull, 9150441586990079648ull}}, {{15011115925575898473ull, 964992520733740606ull, 2003745413596226587ull, 5719025991868799780ull}}, {{9540522870115097284ull, 15041298706199339470ull, 2504681766995283233ull, 7148782489835999725ull}}, {{2702281550789095796ull, 4966565327467010626ull, 7742538227171491946ull, 8935978112294999656ull}}, {{6300611987670572777ull, 7715789348094269545ull, 4839086391982182466ull, 5584986320184374785ull}}, {{12487451003015603875ull, 421364648263061123ull, 10660544008405115987ull, 6981232900230468481ull}}, {{10997627735342116940ull, 14361763865610990116ull, 17937366028933782887ull, 8726541125288085601ull}}, {{16096889371443598895ull, 15893631443647950678ull, 4293324740442532448ull, 5454088203305053501ull}}, {{10897739677449722811ull, 1420295230850386732ull, 9978341943980553465ull, 6817610254131316876ull}}, {{13622174596812153514ull, 6387055056990371319ull, 12472927429975691831ull, 8522012817664146095ull}}, {{15431388150648677802ull, 10909438438260063930ull, 14713108671375889250ull, 5326258011040091309ull}}, {{10065863151456071445ull, 4413426010970304105ull, 4556327783937697851ull, 6657822513800114137ull}}, {{17194014957747477210ull, 905096495285492227ull, 10307095748349510218ull, 8322278142250142671ull}}, {{8440416339378479304ull, 5177371327980820546ull, 13359463870359525742ull, 5201423838906339169ull}}, {{1327148387368323322ull, 15695086196830801491ull, 2864271782667243465ull, 6501779798632923962ull}}, {{15493993539492567865ull, 5783799690756338151ull, 12803711765188830140ull, 8127224748291154952ull}}, {{16601274989823936772ull, 12838246843577487152ull, 8002319853243018837ull, 5079515467681971845ull}}, {{2304849663570369348ull, 2212750499189695229ull, 14614585834981161451ull, 6349394334602464806ull}}, {{7492748097890349589ull, 16600996179269282748ull, 9044860256871676005ull, 7936742918253081008ull}}, {{13906339598036244302ull, 12681465621256995669ull, 5653037660544797503ull, 4960464323908175630ull}}, {{3547866442263141665ull, 11240146008143856683ull, 16289669112535772687ull, 6200580404885219537ull}}, {{18269891108111090793ull, 9438496491752432949ull, 6527028335387552147ull, 7750725506106524422ull}}, {{13724524951783125698ull, 3593217298131576641ull, 17914450764899383804ull, 4844203441316577763ull}}, {{3320598134446743410ull, 4491521622664470802ull, 17781377437696841851ull, 6055254301645722204ull}}, {{13374119704913205071ull, 1002716009903200598ull, 3779977723411500698ull, 7569067877057152756ull}}, {{3747138797143365265ull, 5238383524616888278ull, 11585858113986963744ull, 4730667423160720472ull}}, {{13907295533283982389ull, 6547979405771110347ull, 14482322642483704680ull, 5913334278950900590ull}}, {{12772433398177590083ull, 8184974257213887934ull, 8879531266249855042ull, 7391667848688625738ull}}, {{3371084855433605898ull, 9727294929186067863ull, 10161393059833547305ull, 4619792405430391086ull}}, {{18048914124574171084ull, 16770804679909972732ull, 3478369287937158323ull, 5774740506787988858ull}}, {{4114398582008162239ull, 16351819831460078012ull, 13571333646776223712ull, 7218425633484986072ull}}, {{5142998227510202799ull, 1993030715615545899ull, 16964167058470279641ull, 9023032041856232590ull}}, {{908530882980182797ull, 12774859243328185947ull, 5990918393116536871ull, 5639395026160145369ull}}, {{14970721659007392209ull, 11356888035732844529ull, 12100334009823058993ull, 7049243782700181711ull}}, {{4878344018477076549ull, 361051989383891950ull, 10513731493851435838ull, 8811554728375227139ull}}, {{16884023066830336555ull, 14060715548647096180ull, 4265239174443453446ull, 5507221705234516962ull}}, {{2658284759828369078ull, 8352522398954094418ull, 14554921004909092616ull, 6884027131543146202ull}}, {{12546227986640237155ull, 10440652998692618022ull, 8970279219281589962ull, 8605033914428932753ull}}, {{3229706473222760318ull, 11137094142610274168ull, 17135639558119463486ull, 5378146196518082970ull}}, {{4037133091528450398ull, 4697995641408066902ull, 12196177410794553550ull, 6722682745647603713ull}}, {{14269788401265338805ull, 15095866588614859435ull, 1410163708211028225ull, 8403353432059504642ull}}, {{6612774741577142801ull, 2517387590243205291ull, 5493038336059280545ull, 5252095895037190401ull}}, {{3654282408544040597ull, 7758420506231394518ull, 11477983938501488585ull, 6565119868796488001ull}}, {{13791225047534826555ull, 14309711651216631051ull, 512421867844697019ull, 8206399835995610002ull}}, {{6313672645495572645ull, 6637726772796700455ull, 4931949685830323541ull, 5128999897497256251ull}}, {{3280404788442077902ull, 12908844484423263473ull, 1553251088860516522ull, 6411249871871570314ull}}, {{8712192003979985281ull, 6912683568674303533ull, 11164935897930421461ull, 8014062339839462892ull}}, {{7750963011701184753ull, 6626270239635133660ull, 16201456973061289221ull, 5008788962399664307ull}}, {{9688703764626480941ull, 12894523817971304979ull, 15640135197899223622ull, 6260986202999580384ull}}, {{7499193687355713272ull, 6894782735609355416ull, 1103424923664477912ull, 7826232753749475481ull}}, {{4686996054597320795ull, 4309239209755847135ull, 12218855623358768455ull, 4891395471093422175ull}}, {{1247059049819263090ull, 774862993767421015ull, 10661883510771072665ull, 6114244338866777719ull}}, {{15393881867556242574ull, 5580264760636664172ull, 8715668370036452927ull, 7642805423583472149ull}}, {{397804130367875801ull, 10405194503038996964ull, 7753135740486477031ull, 4776753389739670093ull}}, {{497255162959844751ull, 8394807110371358301ull, 14303105694035484193ull, 5970941737174587616ull}}, {{5233254972127193843ull, 15105194906391585780ull, 17878882117544355241ull, 7463677171468234520ull}}, {{12494156394434271960ull, 2523217788853659256ull, 11174301323465222026ull, 4664798232167646575ull}}, {{15617695493042839950ull, 12377394272921849878ull, 9356190635904139628ull, 5830997790209558219ull}}, {{10298747329448774129ull, 15471742841152312348ull, 7083552276452786631ull, 7288747237761947774ull}}, {{12873434161810967662ull, 14727992533013002531ull, 18077812382420759097ull, 9110934047202434717ull}}, {{5740053341918160837ull, 2287466305492044726ull, 13604475748226668388ull, 5694333779501521698ull}}, {{16398438714252476854ull, 2859332881865055907ull, 7782222648428559677ull, 7117917224376902123ull}}, {{15886362374388208163ull, 8185852120758707788ull, 5116092292108311692ull, 8897396530471127654ull}}, {{705604447137854294ull, 14339529612328968176ull, 17032615737849858519ull, 5560872831544454783ull}}, {{882005558922317867ull, 13312725996983822316ull, 16679083653884935245ull, 6951091039430568479ull}}, {{1102506948652897334ull, 2805849440947614183ull, 16237168548928781153ull, 8688863799288210599ull}}, {{7606595870549142690ull, 13282870946660728624ull, 17065759370721570076ull, 5430539874555131624ull}}, {{9508244838186428362ull, 16603588683325910780ull, 2885455139692410979ull, 6788174843193914531ull}}, {{11885306047733035453ull, 16142799835730000571ull, 17441876979897677436ull, 8485218553992393163ull}}, {{5122473270619453206ull, 865877860476474549ull, 8595330103222354446ull, 5303261596245245727ull}}, {{11014777606701704412ull, 10305719362450368994ull, 6132476610600555153ull, 6629076995306557159ull}}, {{4545099971522354707ull, 17493835221490349147ull, 3053909744823306037ull, 8286346244133196449ull}}, {{534844472987777740ull, 13239490022645162169ull, 13437908636583036033ull, 5178966402583247780ull}}, {{5280241609662110079ull, 2714304473024288999ull, 16797385795728795042ull, 6473708003229059725ull}}, {{1988615993650249694ull, 12616252628135137057ull, 7161674189378830090ull, 8092135004036324657ull}}, {{12772100042099875819ull, 12496843911011848564ull, 16005261414430238566ull, 5057584377522702910ull}}, {{15965125052624844774ull, 6397682851910034897ull, 10783204731183022400ull, 6321980471903378638ull}}, {{6121348260498892255ull, 7997103564887543622ull, 4255633877124002192ull, 7902475589879223298ull}}, {{17660900718093971372ull, 4998189728054714763ull, 7271457191629889274ull, 4939047243674514561ull}}, {{17464439879190076310ull, 15471109196923169262ull, 13701007507964749496ull, 6173809054593143201ull}}, {{12607177812132819580ull, 892142422444409962ull, 3291201329673773159ull, 7717261318241429002ull}}, {{12491172151010400142ull, 7475118041668838082ull, 6668686849473496128ull, 4823288323900893126ull}}, {{6390593151908224369ull, 9343897552086047603ull, 17559230598696645968ull, 6029110404876116407ull}}, {{3376555421457892557ull, 11679871940107559504ull, 17337352229943419556ull, 7536388006095145509ull}}, {{2110347138411182848ull, 16523291999422000498ull, 13141688152928331174ull, 4710242503809465943ull}}, {{11861305959868754368ull, 11430742962422724814ull, 11815424172733026064ull, 5887803129761832429ull}}, {{5603260412981167152ull, 14288428703028406018ull, 934222160634118868ull, 7359753912202290537ull}}, {{16227447553081234748ull, 17860535878785507522ull, 5779463719220036489ull, 9199692390252863171ull}}, {{14753840739103159622ull, 4245305896599860345ull, 1306321815298828854ull, 5749807743908039482ull}}, {{4607242868596785815ull, 14530004407604601240ull, 10856274305978311875ull, 7187259679885049352ull}}, {{5759053585745982269ull, 13550819491078363646ull, 13570342882472889844ull, 8984074599856311690ull}}, {{17434466546373402630ull, 17692634218778753086ull, 13093150319972944056ull, 5615046624910194806ull}}, {{12569711146111977479ull, 3669048699763889742ull, 7143065863111404263ull, 7018808281137743508ull}}, {{6488766895785196041ull, 18421368929987025890ull, 8928832328889255328ull, 8773510351422179385ull}}, {{8667165328293135430ull, 11513355581241891181ull, 17109735251624254340ull, 5483443969638862115ull}}, {{15445642678793807191ull, 14391694476552363976ull, 16775483046102930021ull, 6854304962048577644ull}}, {{860309274782707373ull, 4154560040408291259ull, 2522609733919110911ull, 8567881202560722056ull}}, {{16678594361235049772ull, 9514129052896263892ull, 1576631083699444319ull, 5354925751600451285ull}}, {{2401498877834260599ull, 7280975297692941962ull, 6582474873051693303ull, 6693657189500564106ull}}, {{12225245634147601557ull, 4489533103688789548ull, 17451465628169392437ull, 8367071486875705132ull}}, {{16864150558197026781ull, 5111801199019187419ull, 1683793980751094465ull, 5229419679297315708ull}}, {{16468502179318895572ull, 11001437517201372178ull, 2104742475938868081ull, 6536774599121644635ull}}, {{11362255687293843657ull, 18363482914929103127ull, 16465986150205748813ull, 8170968248902055793ull}}, {{14018938832199734142ull, 13783019831044383406ull, 3373712316237511152ull, 5106855155563784871ull}}, {{8300301503394891869ull, 17228774788805479258ull, 18052198450579052652ull, 6383568944454731088ull}}, {{1152004842388839029ull, 3089224412297297457ull, 4118503989514264200ull, 7979461180568413861ull}}, {{12249218072561494153ull, 1930765257685810910ull, 4879908002660109077ull, 4987163237855258663ull}}, {{6088150553847091883ull, 7025142590534651542ull, 1488198984897748442ull, 6233954047319073329ull}}, {{16833560229163640662ull, 18004800275023090235ull, 6471934749549573456ull, 7792442559148841661ull}}, {{8215132134013581462ull, 11253000171889431397ull, 6350802227682177362ull, 4870276599468026038ull}}, {{14880601185944364731ull, 4842878178007013438ull, 17161874821457497511ull, 6087845749335032547ull}}, {{9377379445575680106ull, 1441911704081378894ull, 16840657508394483985ull, 7609807186668790684ull}}, {{1249176135057412162ull, 12430409861119331569ull, 1302038905891776682ull, 4756129491667994178ull}}, {{6173156187249153107ull, 6314640289544388653ull, 10850920669219496661ull, 5945161864584992722ull}}, {{12328131252488829288ull, 12504986380357873720ull, 4340278799669595018ull, 7431452330731240903ull}}, {{7705082032805518305ull, 12427302506151058979ull, 9630203277434578742ull, 4644657706707025564ull}}, {{5019666522579509977ull, 6310756095834047916ull, 12037754096793223428ull, 5805822133383781955ull}}, {{6274583153224387471ull, 7888445119792559895ull, 10435506602564141381ull, 7257277666729727444ull}}, {{3231542923103096435ull, 14472242418168087773ull, 13044383253205176726ull, 9071597083412159305ull}}, {{4325557336153129224ull, 4433465492927666954ull, 1235210505612153598ull, 5669748177132599566ull}}, {{14630318707046187338ull, 14765203903014359500ull, 10767385168869967805ull, 7087185221415749457ull}}, {{18287898383807734172ull, 4621446823485785663ull, 18070917479514847661ull, 8858981526769686821ull}}, {{18347465517520915714ull, 5194247273892309991ull, 13600166433910473740ull, 5536863454231054263ull}}, {{18322645878473756738ull, 6492809092365387489ull, 12388522023960704271ull, 6921079317788817829ull}}, {{9068249292810032210ull, 3504325347029346458ull, 1650594474668716627ull, 8651349147236022287ull}}, {{10279341826433658036ull, 18331104406389199200ull, 7949150574309029747ull, 5407093217022513929ull}}, {{12849177283042072545ull, 18302194489559111096ull, 14548124236313675088ull, 6758866521278142411ull}}, {{16061471603802590681ull, 4430999038239337254ull, 13573469276964705957ull, 8448583151597678014ull}}, {{5426733733949231272ull, 5075217408113279736ull, 3871732279675553319ull, 5280364469748548759ull}}, {{6783417167436539089ull, 1732335741714211766ull, 227979331167053745ull, 6600455587185685949ull}}, {{17702643496150449669ull, 6777105695570152611ull, 4896660182386205085ull, 8250569483982107436ull}}, {{8758309175880337092ull, 6541534068945039334ull, 12283784650846153986ull, 5156605927488817147ull}}, {{1724514432995645556ull, 17400289623036074976ull, 10743044795130304578ull, 6445757409361021434ull}}, {{2155643041244556945ull, 12526989991940317912ull, 4205433957058104915ull, 8057196761701276793ull}}, {{1347276900777848091ull, 5523525735749004743ull, 14157611269229785332ull, 5035747976063297995ull}}, {{15519154181254473826ull, 6904407169686255928ull, 13085328068109843761ull, 6294684970079122494ull}}, {{952198652858540666ull, 13242194980535207815ull, 7133288048282528893ull, 7868356212598903118ull}}, {{7512653185677669772ull, 10582214872048198836ull, 18293363085458744270ull, 4917722632874314448ull}}, {{9390816482097087215ull, 4004396553205472737ull, 4419959783113878722ull, 6147153291092893061ull}}, {{16350206621048746923ull, 14228867728361616729ull, 10136635747319736306ull, 7683941613866116326ull}}, {{3301350110514384971ull, 13504728348653398360ull, 1723711323647447287ull, 4802463508666322704ull}}, {{4126687638142981214ull, 12269224417389360046ull, 2154639154559309109ull, 6003079385832903380ull}}, {{14381731584533502325ull, 1501472466454536345ull, 2693298943199136387ull, 7503849232291129225ull}}, {{2071053212692357097ull, 17079321356029942880ull, 13212526885567930001ull, 4689905770181955765ull}}, {{2588816515865446372ull, 7514093639755264888ull, 2680600551677748790ull, 5862382212727444707ull}}, {{3236020644831807964ull, 169245012839305302ull, 17185808744879349700ull, 7327977765909305883ull}}, {{13268397842894535763ull, 211556266049131627ull, 16870574912671799221ull, 9159972207386632354ull}}, {{5986905642595390900ull, 2438065675494401219ull, 15155795338847262417ull, 5724982629616645221ull}}, {{2871946034816850721ull, 7659268112795389428ull, 5109686118276914309ull, 7156228287020806527ull}}, {{3589932543521063401ull, 14185771159421624689ull, 1775421629418754982ull, 8945285358776008159ull}}, {{13772922885769134386ull, 4254420956211127526ull, 8027167546027803720ull, 5590803349235005099ull}}, {{7992781570356642174ull, 5318026195263909408ull, 5422273414107366746ull, 6988504186543756374ull}}, {{9990976962945802718ull, 15870904780934662568ull, 16001213804488984240ull, 8735630233179695467ull}}, {{6244360601841126699ull, 9919315488084164105ull, 7694915618591921198ull, 5459768895737309667ull}}, {{12417136770728796277ull, 3175772323250429323ull, 5006958504812513594ull, 6824711119671637084ull}}, {{10909734944983607443ull, 13193087440917812462ull, 6258698131015641992ull, 8530888899589546355ull}}, {{2206898322187366748ull, 8245679650573632789ull, 1605843322671082293ull, 5331805562243466472ull}}, {{7370308921161596339ull, 14918785581644428890ull, 2007304153338852866ull, 6664756952804333090ull}}, {{18436258188306771231ull, 9425109940200760304ull, 11732502228528341891ull, 8330946191005416362ull}}, {{11522661367691732020ull, 3584850703411781238ull, 11944499911257601586ull, 5206841369378385226ull}}, {{5179954672759889217ull, 13704435416119502356ull, 5707252852217226174ull, 6508551711722981533ull}}, {{6474943340949861521ull, 7907172233294602137ull, 11745752083698920622ull, 8135689639653726916ull}}, {{15576054634162133211ull, 330296627381738431ull, 16564467089166601197ull, 5084806024783579322ull}}, {{14858382274275278609ull, 5024556802654560943ull, 11482211824603475688ull, 6356007530979474153ull}}, {{13961291824416710357ull, 6280696003318201179ull, 517706725472180898ull, 7945009413724342692ull}}, {{6419964381046750021ull, 8537121020501263641ull, 9546938740274888869ull, 4965630883577714182ull}}, {{12636641494735825431ull, 15283087294053967455ull, 2710301388488835278ull, 6207038604472142728ull}}, {{11184115849992393884ull, 9880487080712683511ull, 3387876735611044098ull, 7758798255590178410ull}}, {{13907601433886328034ull, 10786990443872815098ull, 6729108978184290465ull, 4849248909743861506ull}}, {{8161129755503134234ull, 18095424073268406777ull, 17634758259585138889ull, 6061561137179826882ull}}, {{14813098212806305697ull, 8784222036303344759ull, 12820075787626647804ull, 7576951421474783603ull}}, {{16175715410645022917ull, 14713510809544366282ull, 5706704358052960925ull, 4735594638421739752ull}}, {{10996272226451502838ull, 4556830456648294141ull, 7133380447566201157ull, 5919493298027174690ull}}, {{18357026301491766451ull, 10307724089237755580ull, 18140097596312527254ull, 7399366622533968362ull}}, {{2249769401577578224ull, 1830641537346209334ull, 15949247016122717438ull, 4624604139083730226ull}}, {{12035583788826748588ull, 11511673958537537475ull, 10713186733298620989ull, 5780755173854662783ull}}, {{10432793717606047831ull, 554534392889758132ull, 8779797398195888333ull, 7225943967318328479ull}}, {{13040992147007559788ull, 5304854009539585569ull, 6363060729317472512ull, 9032429959147910599ull}}, {{1233091064238643012ull, 3315533755962240981ull, 10894441983464502176ull, 5645268724467444124ull}}, {{6153049848725691669ull, 4144417194952801226ull, 13618052479330627720ull, 7056585905584305155ull}}, {{16914684347761890394ull, 5180521493691001532ull, 12410879580735896746ull, 8820732381980381444ull}}, {{1348305680496405688ull, 7849511951984263862ull, 16980171774814711274ull, 5512957738737738402ull}}, {{10908754137475282918ull, 588517903125554019ull, 12001842681663613285ull, 6891197173422173003ull}}, {{9024256653416715744ull, 5347333397334330428ull, 10390617333652128702ull, 8613996466777716254ull}}, {{14863532445240223148ull, 17177141428616120229ull, 1882449815105192534ull, 5383747791736072659ull}}, {{4744357501268115223ull, 12248054748915374479ull, 16188120324163654380ull, 6729684739670090823ull}}, {{1318760858157756124ull, 15310068436144218099ull, 15623464386777180071ull, 8412105924587613529ull}}, {{16965126600844455242ull, 16486321800231218167ull, 2847136214094655688ull, 5257566202867258456ull}}, {{16594722232628181148ull, 2161158176579471093ull, 3558920267618319611ull, 6571957753584073070ull}}, {{6908344735503062723ull, 16536505776006502579ull, 13672022371377675321ull, 8214947191980091337ull}}, {{2011872450475720250ull, 3417787082362982256ull, 1627484954469965220ull, 5134341994987557086ull}}, {{2514840563094650313ull, 4272233852953727820ull, 11257728229942232333ull, 6417927493734446357ull}}, {{3143550703868312891ull, 9951978334619547679ull, 237102232145626704ull, 8022409367168057947ull}}, {{8882248217558777413ull, 6219986459137217299ull, 16289089959586874354ull, 5014005854480036216ull}}, {{6491124253521083862ull, 16998355110776297432ull, 1914618375774041326ull, 6267507318100045271ull}}, {{8113905316901354827ull, 12024571851615595982ull, 16228331024999715370ull, 7834384147625056588ull}}, {{459504804635958863ull, 12127043425687135393ull, 919334853770046298ull, 4896490092265660368ull}}, {{5186067024222336483ull, 5935432245254143433ull, 1149168567212557873ull, 6120612615332075460ull}}, {{11094269798705308508ull, 12030976324995067195ull, 1436460709015697341ull, 7650765769165094325ull}}, {{4628075614977123865ull, 9825203212335610949ull, 3203630952348504790ull, 4781728605728183953ull}}, {{10396780537148792736ull, 3058131978564737878ull, 8616224708863018892ull, 5977160757160229941ull}}, {{3772603634581215111ull, 3822664973205922348ull, 15381966904506161519ull, 7471450946450287426ull}}, {{11581249308468035253ull, 9306694635894783323ull, 14225415333743738853ull, 4669656841531429641ull}}, {{9864875617157656162ull, 16245054313295867058ull, 3946711111897509854ull, 5837071051914287052ull}}, {{3107722484592294394ull, 11082945854765058015ull, 4933388889871887318ull, 7296338814892858815ull}}, {{17719711161022531705ull, 4630310281601546710ull, 1555050093912471244ull, 9120423518616073519ull}}, {{6463133457211694412ull, 12117315962855742502ull, 7889435336336376383ull, 5700264699135045949ull}}, {{17302288858369393822ull, 10534958935142290223ull, 14473480188847858383ull, 7125330873918807436ull}}, {{17016175054534354374ull, 8557012650500474875ull, 18091850236059822979ull, 8906663592398509295ull}}, {{8329266399870277532ull, 3042289897349102845ull, 18224935425178471218ull, 5566664745249068309ull}}, {{15023269018265234819ull, 13026234408541154364ull, 8946111226190925310ull, 6958330931561335387ull}}, {{332342199121991907ull, 7059420973821667148ull, 6570953014311268734ull, 8697913664451669234ull}}, {{9431085911306020750ull, 18247196163920705679ull, 8718531652371930862ull, 5436196040282293271ull}}, {{7177171370705138034ull, 13585623168046106291ull, 6286478547037525674ull, 6795245050352866589ull}}, {{4359778194954034638ull, 7758656923202857056ull, 12469784202224294997ull, 8494056312941083236ull}}, {{2724861371846271649ull, 7155003586215479612ull, 17016987163244960181ull, 5308785195588177022ull}}, {{3406076714807839561ull, 13555440501196737419ull, 12047861917201424418ull, 6635981494485221278ull}}, {{18092653948791963163ull, 7720928589641145965ull, 5836455359647004715ull, 8294976868106526598ull}}, {{13613751727208670929ull, 2519737359312022276ull, 17482842655061541659ull, 5184360542566579123ull}}, {{17017189659010838661ull, 16984729754422191557ull, 17241867300399539169ull, 6480450678208223904ull}}, {{7436429018481384614ull, 7395854137745575735ull, 3105590051789872346ull, 8100563347760279881ull}}, {{11565297164191947240ull, 9234094854518372738ull, 13470208828437139976ull, 5062852092350174925ull}}, {{5233249418385158242ull, 11542618568147965923ull, 3002702980264261258ull, 6328565115437718657ull}}, {{1929875754554059899ull, 5204901173330181596ull, 8365064743757714477ull, 7910706394297148321ull}}, {{10429544383451063245ull, 5558906242545057449ull, 16757380510917041308ull, 4944191496435717700ull}}, {{17648616497741216960ull, 6948632803181321811ull, 2499981564936750019ull, 6180239370544647126ull}}, {{17449084603749133296ull, 4074104985549264360ull, 12348348993025713332ull, 7725299213180808907ull}}, {{10905677877343208310ull, 11769687652823066033ull, 5411875111427376880ull, 4828312008238005567ull}}, {{18243783365106398291ull, 14712109566028832541ull, 2153157870856833196ull, 6035390010297506959ull}}, {{8969671151100834152ull, 18390136957536040677ull, 16526505393853205207ull, 7544237512871883698ull}}, {{7911887478651715297ull, 18411364626101107279ull, 14940751889585641158ull, 4715148445544927311ull}}, {{5278173329887256217ull, 13790833745771608291ull, 14064253843554663544ull, 5893935556931159139ull}}, {{1986030643931682368ull, 17238542182214510364ull, 12968631286015941526ull, 7367419446163948924ull}}, {{2482538304914602959ull, 12324805690913362147ull, 16210789107519926908ull, 9209274307704936155ull}}, {{17692487505067484514ull, 16926375593675627149ull, 7825900182986260365ull, 5755796442315585097ull}}, {{8280551326052191930ull, 7322911436812370225ull, 14394061247160213361ull, 7194745552894481371ull}}, {{14962375175992627817ull, 13765325314442850685ull, 13380890540522878797ull, 8993431941118101714ull}}, {{11657327494209086338ull, 10909171330740475630ull, 12974742606254187152ull, 5620894963198813571ull}}, {{5348287330906582114ull, 13636464163425594538ull, 11606742239390346036ull, 7026118703998516964ull}}, {{15908731200488003450ull, 17045580204281993172ull, 14508427799237932545ull, 8782648379998146205ull}}, {{719584963450226349ull, 3735958600035163877ull, 11373610383737401793ull, 5489155237498841378ull}}, {{5511167222740170840ull, 9281634268471342750ull, 4993640942816976433ull, 6861444046873551723ull}}, {{16112331065279989357ull, 16213728854016566341ull, 1630365160093832637ull, 8576805058591939654ull}}, {{12376049925013687301ull, 12439423542974047915ull, 14854036280340809110ull, 5360503161619962283ull}}, {{10858376387839721222ull, 6325907391862784086ull, 13955859331998623484ull, 6700628952024952854ull}}, {{4349598447944875719ull, 7907384239828480108ull, 8221452128143503547ull, 8375786190031191068ull}}, {{11941871066820323132ull, 2636272140679106115ull, 14361779616944465525ull, 5234866368769494417ull}}, {{10315652815098016011ull, 7907026194276270548ull, 4117166465898418194ull, 6543582960961868022ull}}, {{12894566018872520014ull, 660410705990562377ull, 14369830119227798551ull, 8179478701202335027ull}}, {{1141574734154243153ull, 7330285718885183342ull, 6675300815303680142ull, 5112174188251459392ull}}, {{10650340454547579749ull, 18386229185461254985ull, 8344126019129600177ull, 6390217735314324240ull}}, {{17924611586611862590ull, 9147728426544405019ull, 10430157523912000222ull, 7987772169142905300ull}}, {{8897039232418720167ull, 1105644248162865233ull, 15742220489299775947ull, 4992357605714315812ull}}, {{15732985058950788113ull, 15217113365485745253ull, 1231031537915168317ull, 6240447007142894766ull}}, {{5831173268406321429ull, 5186333651575017855ull, 10762161459248736205ull, 7800558758928618457ull}}, {{10562012320395032749ull, 5547301541448080111ull, 18255565958098929888ull, 4875349224330386535ull}}, {{8590829382066403032ull, 6934126926810100139ull, 18207771429196274456ull, 6094186530412983169ull}}, {{6126850709155615886ull, 8667658658512625174ull, 8924656231213179358ull, 7617733163016228962ull}}, {{17664339748504423641ull, 805600643143002829ull, 10189596162935625003ull, 4761083226885143101ull}}, {{8245366630348365839ull, 14842058859210917249ull, 17348681222096919157ull, 5951354033606428876ull}}, {{14918394306362845203ull, 4717515518731482849ull, 3239107453911597331ull, 7439192542008036096ull}}, {{2406467413835696396ull, 642604189993482829ull, 2024442158694748332ull, 4649495338755022560ull}}, {{7619770285722008399ull, 803255237491853536ull, 2530552698368435415ull, 5811869173443778200ull}}, {{9524712857152510499ull, 14839127102146980632ull, 3163190872960544268ull, 7264836466804722750ull}}, {{11905891071440638123ull, 102164803974174174ull, 13177360628055456144ull, 9081045583505903437ull}}, {{2829495901223010923ull, 63853002483858859ull, 10541693401748354042ull, 5675653489691189648ull}}, {{17371927931810927366ull, 9303188289959599381ull, 13177116752185442552ull, 7094566862113987060ull}}, {{7879851859481495495ull, 11628985362449499227ull, 16471395940231803190ull, 8868208577642483825ull}}, {{2619064402962240733ull, 2656429833103549113ull, 3377093435003795138ull, 5542630361026552391ull}}, {{7885516522130188820ull, 12543909328234212199ull, 18056424849036907634ull, 6928287951283190488ull}}, {{5245209634235348120ull, 6456514623437989441ull, 4123786987586582927ull, 8660359939103988111ull}}, {{14807471067465562335ull, 10952850667289825256ull, 9494895894882696185ull, 5412724961939992569ull}}, {{62594760622401303ull, 18302749352539669475ull, 16480305887030758135ull, 6765906202424990711ull}}, {{13913301506060165341ull, 18266750672247198939ull, 15988696340361059765ull, 8457382753031238389ull}}, {{6389970432073909386ull, 13722562179368193289ull, 12298778221939356305ull, 5285864220644523993ull}}, {{12599149058519774637ull, 3318144668928077899ull, 1538414722142031670ull, 6607330275805654992ull}}, {{11137250304722330392ull, 13371052873014873182ull, 1923018402677539587ull, 8259162844757068740ull}}, {{2349095422024068591ull, 6051065036420601787ull, 10425258538528238050ull, 5161976777973167962ull}}, {{16771427332812249451ull, 16787203332380528041ull, 3808201136305521754ull, 6452470972466459953ull}}, {{7129226110733148101ull, 11760632128620884244ull, 9371937438809290097ull, 8065588715583074941ull}}, {{13679138356062993371ull, 432866052746970796ull, 8163303908469500263ull, 5040992947239421838ull}}, {{17098922945078741714ull, 14376140621215877207ull, 980757848732099520ull, 6301241184049277298ull}}, {{16761967662921039239ull, 17970175776519846509ull, 10449319347769900208ull, 7876551480061596622ull}}, {{12782072798539343476ull, 11231359860324904068ull, 1919138573928799726ull, 4922844675038497889ull}}, {{15977590998174179345ull, 4815827788551354277ull, 7010609235838387562ull, 6153555843798122361ull}}, {{6136930692435560469ull, 15243156772543968655ull, 13374947563225372356ull, 7691944804747652951ull}}, {{10753110710413307150ull, 303600945985204601ull, 15276871254656939579ull, 4807465502967283094ull}}, {{18053074406444021841ull, 14214559237763669463ull, 9872717031466398665ull, 6009331878709103868ull}}, {{17954656989627639397ull, 3933140991922423117ull, 12340896289332998332ull, 7511664848386379835ull}}, {{13527503627730968575ull, 11681585156806290256ull, 5407217171619430005ull, 4694790530241487397ull}}, {{16909379534663710719ull, 766923390725699108ull, 11370707482951675411ull, 5868488162801859246ull}}, {{2689980344620086783ull, 14793712293689287598ull, 4990012316834818455ull, 7335610203502324058ull}}, {{12585847467629884286ull, 13880454348684221593ull, 15460887432898298877ull, 9169512754377905072ull}}, {{948625639627595823ull, 10981126977141332448ull, 9663054645561436798ull, 5730945471486190670ull}}, {{1185782049534494779ull, 4503036684571889752ull, 2855446270097020190ull, 7163681839357738338ull}}, {{1482227561918118473ull, 14852167892569637998ull, 12792679874476051045ull, 8954602299197172922ull}}, {{14761450281480987758ull, 11588447942069717700ull, 12607110939974919807ull, 5596626436998233076ull}}, {{5068778141683081ull, 9873873909159759222ull, 15758888674968649759ull, 6995783046247791345ull}}, {{9229708009531879659ull, 7730656368022311123ull, 5863552788428648487ull, 8744728807809739182ull}}, {{3462724496743730835ull, 11749189257655026308ull, 17499778548050069016ull, 5465455504881086988ull}}, {{4328405620929663544ull, 14686486572068782885ull, 3427979111353034654ull, 6831819381101358736ull}}, {{10022193044589467334ull, 9134736178231202798ull, 4284973889191293318ull, 8539774226376698420ull}}, {{1652184634441029180ull, 1097524092967113845ull, 11901480717599334132ull, 5337358891485436512ull}}, {{6676916811478674379ull, 1371905116208892306ull, 14876850896999167665ull, 6671698614356795640ull}}, {{17569518051203118781ull, 6326567413688503286ull, 149319547539407965ull, 8339623267945994551ull}}, {{6369262763574561335ull, 6259947642769008506ull, 7010853744853211834ull, 5212264542466246594ull}}, {{17184950491322977476ull, 17048306590316036440ull, 17986939217921290600ull, 6515330678082808242ull}}, {{3034444040444170229ull, 2863639164185493935ull, 13260301985546837443ull, 8144163347603510303ull}}, {{8814056552918688249ull, 17930675542111791373ull, 15205217768607855257ull, 5090102092252193939ull}}, {{15629256709575748215ull, 8578286372357575504ull, 14394836192332431168ull, 6362627615315242424ull}}, {{1089826813260133653ull, 10722857965446969381ull, 17993545240415538960ull, 7953284519144053030ull}}, {{2986984767501277485ull, 6701786228404355863ull, 6634279756832323946ull, 4970802824465033144ull}}, {{17568789014658760569ull, 17600604822360220636ull, 8292849696040404932ull, 6213503530581291430ull}}, {{3514242194613899095ull, 3554011954240724180ull, 1142690083195730358ull, 7766879413226614288ull}}, {{11419773408488462742ull, 16056315526682616324ull, 714181301997331473ull, 4854299633266633930ull}}, {{14274716760610578428ull, 6235336353071106693ull, 10116098664351440150ull, 6067874541583292412ull}}, {{4008337895481059323ull, 17017542478193659175ull, 12645123330439300187ull, 7584843176979115515ull}}, {{9422740212316743933ull, 8330121039657343032ull, 5597359072310868665ull, 4740526985611947197ull}}, {{11778425265395929916ull, 15024337317999066694ull, 11608384858815973735ull, 5925658732014933996ull}}, {{5499659544890136587ull, 14168735629071445464ull, 14510481073519967169ull, 7407073415018667495ull}}, {{3437287215556335367ull, 1937930740528571559ull, 15986579698591061337ull, 4629420884386667184ull}}, {{18131667074727582921ull, 7034099444088102352ull, 1536480549529275055ull, 5786776105483333981ull}}, {{4217839769699927035ull, 4180938286682740037ull, 6532286705338981723ull, 7233470131854167476ull}}, {{9883985730552296697ull, 614486839926037142ull, 8165358381673727154ull, 9041837664817709345ull}}, {{1565805063167797532ull, 4995740293381161118ull, 16632564034614549231ull, 5651148540511068340ull}}, {{11180628365814522723ull, 1632989348299063493ull, 2343960969558634923ull, 7063935675638835426ull}}, {{140727401985989691ull, 15876294740655993079ull, 12153323248803069461ull, 8829919594548544282ull}}, {{7005483653882325413ull, 12228527222123689626ull, 12207513048929306317ull, 5518699746592840176ull}}, {{17980226604207682574ull, 1450600972372448320ull, 15259391311161632897ull, 6898374683241050220ull}}, {{4028539181550051602ull, 6424937233892948305ull, 627495065242489505ull, 8622968354051312776ull}}, {{14047052034537252011ull, 15544800817251562450ull, 392184415776555940ull, 5389355221282070485ull}}, {{8335443006316789206ull, 984256947854901447ull, 5101916538148082830ull, 6736694026602588106ull}}, {{5807617739468598603ull, 10453693221673402617ull, 15600767709539879345ull, 8420867533253235132ull}}, {{15158976133236343887ull, 18062773309614346395ull, 527107781607648782ull, 5263042208283271958ull}}, {{14337034148118041955ull, 13355094600163157186ull, 9882256763864336786ull, 6578802760354089947ull}}, {{8697920648292776636ull, 7470496213349170675ull, 7741134936403033079ull, 8223503450442612434ull}}, {{3130357395969291446ull, 11586589160984313528ull, 9449895353679283578ull, 5139689656526632771ull}}, {{3912946744961614307ull, 5259864414375616102ull, 7200683173671716569ull, 6424612070658290964ull}}, {{14114555468056793691ull, 11186516536396908031ull, 9000853967089645711ull, 8030765088322863705ull}}, {{15739126195176577913ull, 13909101862889149375ull, 17154748775499498329ull, 5019228180201789815ull}}, {{15062221725543334487ull, 3551319273329273007ull, 16831749950946985008ull, 6274035225252237269ull}}, {{14216091138501780205ull, 4439149091661591259ull, 7204629383401567548ull, 7842544031565296587ull}}, {{6579213952349918676ull, 11997840219143270345ull, 2197050355412285765ull, 4901590019728310367ull}}, {{12835703458864786249ull, 1162242218646924219ull, 16581370999547520919ull, 6126987524660387958ull}}, {{11432943305153594908ull, 15287860828590818986ull, 11503341712579625340ull, 7658734405825484948ull}}, {{11757275584148384721ull, 331540981014486058ull, 16412960607217041646ull, 4786709003640928092ull}}, {{5473222443330705094ull, 9637798263122883381ull, 2069456685311750441ull, 5983386254551160116ull}}, {{11453214072590769271ull, 16658933847330992130ull, 2586820856639688051ull, 7479232818188950145ull}}, {{11769944813796618699ull, 8105990645368176129ull, 13145978081468274792ull, 4674520511368093840ull}}, {{877372961963609661ull, 10132488306710220162ull, 16432472601835343490ull, 5843150639210117300ull}}, {{10320088239309287884ull, 3442238346532999394ull, 2093846678584627747ull, 7303938299012646626ull}}, {{3676738262281834047ull, 18137855988448412955ull, 11840680385085560491ull, 9129922873765808282ull}}, {{18438862478422003944ull, 9030316983566564144ull, 12012111259105863211ull, 5706201796103630176ull}}, {{4601834024317953313ull, 6676210211030817277ull, 15015139073882329014ull, 7132752245129537720ull}}, {{10363978548824829546ull, 17568634800643297404ull, 322179768643359651ull, 8915940306411922151ull}}, {{15700858629870294274ull, 8674553741188366925ull, 7118891383043181638ull, 5572462691507451344ull}}, {{5791015232055704131ull, 1619820139630682849ull, 8898614228803977048ull, 6965578364384314180ull}}, {{11850455058497018067ull, 2024775174538353561ull, 11123267786004971310ull, 8706972955480392725ull}}, {{489005383919554436ull, 15100542539368634688ull, 9257885375466801020ull, 5441858097175245453ull}}, {{611256729899443045ull, 428934100501241744ull, 16184042737760889180ull, 6802322621469056816ull}}, {{764070912374303806ull, 536167625626552180ull, 1783309348491559859ull, 8502903276836321021ull}}, {{9700916357088715687ull, 16476005830512452776ull, 3420411352020918863ull, 5314314548022700638ull}}, {{12126145446360894609ull, 15983321269713178066ull, 13498886226880924387ull, 6642893185028375797ull}}, {{5934309771096342453ull, 15367465568714084679ull, 3038549728318991772ull, 8303616481285469747ull}}, {{10626472634576295889ull, 381293943591527116ull, 18039994644695227522ull, 5189760300803418591ull}}, {{13283090793220369861ull, 9699989466344184703ull, 17938307287441646498ull, 6487200376004273239ull}}, {{11992177473098074423ull, 2901614796075455071ull, 17811198090874670219ull, 8109000470005341549ull}}, {{14412639948327378370ull, 17954410312043017083ull, 13437841816010362838ull, 5068125293753338468ull}}, {{13404113916981835059ull, 13219640853198995546ull, 16797302270012953548ull, 6335156617191673085ull}}, {{7531770359372518015ull, 16524551066498744433ull, 7161569782234028223ull, 7918945771489591357ull}}, {{16236571520676293520ull, 17245373444202797126ull, 6781824123109961591ull, 4949341107180994598ull}}, {{11072342363990591092ull, 16945030786826108504ull, 17700652190742227797ull, 6186676383976243247ull}}, {{13840427954988238864ull, 7346230428250471918ull, 17514129220000396843ull, 7733345479970304059ull}}, {{4038581453440261386ull, 2285551008442850997ull, 8640487753286554075ull, 4833340924981440037ull}}, {{9659912835227714637ull, 16691996815835727458ull, 15412295710035580497ull, 6041676156226800046ull}}, {{2851519007179867488ull, 7029937964512495611ull, 10041997600689699814ull, 7552095195283500058ull}}, {{17923100443983274844ull, 18228769283102473468ull, 10887934518858450287ull, 4720059497052187536ull}}, {{3957131481269541939ull, 18174275585450703932ull, 13609918148573062859ull, 5900074371315234420ull}}, {{4946414351586927424ull, 18106158463385992011ull, 17012397685716328574ull, 7375092964144043025ull}}, {{1571331921056271376ull, 13409326042377714206ull, 7430439051863247006ull, 9218866205180053782ull}}, {{14817140505942333322ull, 3769142758058683474ull, 32338388987141475ull, 5761791378237533614ull}}, {{9298053595573140844ull, 99742429145966439ull, 9263795023088702652ull, 7202239222796917017ull}}, {{7010880976039038151ull, 124678036432458049ull, 16191429797288266219ull, 9002799028496146271ull}}, {{15911015656092868605ull, 16218824837266143944ull, 17037172650946248242ull, 5626749392810091419ull}}, {{1442025496406534140ull, 11050159009727904123ull, 16684779795255422399ull, 7033436741012614274ull}}, {{15637589925790331387ull, 9201012743732492249ull, 11632602707214502191ull, 8791795926265767843ull}}, {{2855964675977875261ull, 12668161992473889512ull, 4964533682795369917ull, 5494872453916104902ull}}, {{3569955844972344076ull, 2000144435310198178ull, 15429039140348988205ull, 6868590567395131127ull}}, {{13685816843070205903ull, 7111866562565135626ull, 14674612907008847352ull, 8585738209243913909ull}}, {{13165321545346266593ull, 4444916601603209766ull, 11477476076094223547ull, 5366086380777446193ull}}, {{7233279894828057434ull, 944459733576624304ull, 511787039835615722ull, 6707607975971807742ull}}, {{9041599868535071792ull, 10403946703825556188ull, 9863105836649295460ull, 8384509969964759677ull}}, {{14874371954689195678ull, 15725838726745748425ull, 8470284157119503614ull, 5240318731227974798ull}}, {{4757906888079330886ull, 10433926371577409724ull, 1364483159544603710ull, 6550398414034968498ull}}, {{5947383610099163607ull, 3819035927616986347ull, 10928975986285530446ull, 8187998017543710622ull}}, {{1411271747098283302ull, 16221955510042780179ull, 2218923973001068624ull, 5117498760964819139ull}}, {{15599147739155017840ull, 1830700313843923607ull, 16608713021533499493ull, 6396873451206023923ull}}, {{14887248655516384396ull, 6900061410732292413ull, 16149205258489486462ull, 7996091814007529904ull}}, {{11610373418911434200ull, 18147596436989846470ull, 10093253286555929038ull, 4997557383754706190ull}}, {{5289594736784516941ull, 13461123509382532280ull, 3393194571340135490ull, 6246946729693382738ull}}, {{6611993420980646177ull, 7603032349873389542ull, 13464865251029945171ull, 7808683412116728422ull}}, {{17967553943395067573ull, 2446052209457174511ull, 3803854763466327828ull, 4880427132572955264ull}}, {{17847756410816446562ull, 3057565261821468139ull, 4754818454332909785ull, 6100533915716194080ull}}, {{17698009495093170298ull, 8433642595704223078ull, 5943523067916137231ull, 7625667394645242600ull}}, {{6449569916005843532ull, 12188555649956221280ull, 3714701917447585769ull, 4766042121653276625ull}}, {{8061962395007304415ull, 1400636507163112888ull, 9255063415236870116ull, 5957552652066595781ull}}, {{10077452993759130519ull, 1750795633953891110ull, 16180515287473475549ull, 7446940815083244726ull}}, {{1686722102672068671ull, 3400090280434875896ull, 5501136036243534314ull, 4654338009427027954ull}}, {{2108402628340085838ull, 13473484887398370678ull, 16099792082159193700ull, 5817922511783784942ull}}, {{11858875322279883105ull, 16841856109247963347ull, 10901368065844216317ull, 7272403139729731178ull}}, {{10211908134422465978ull, 7217262081277790472ull, 4403338045450494589ull, 9090503924662163973ull}}, {{6382442584014041236ull, 6816631810012312997ull, 5057929287620253070ull, 5681564952913852483ull}}, {{12589739248444939449ull, 17744161799370167054ull, 1710725591097928433ull, 7101956191142315604ull}}, {{6513802023701398503ull, 8345144193930545106ull, 2138406988872410542ull, 8877445238927894505ull}}, {{8682812283240761969ull, 604029102779202787ull, 12865719414113726349ull, 5548403274329934065ull}}, {{6241829335623564557ull, 5366722396901391388ull, 2247091212359994224ull, 6935504092912417582ull}}, {{7802286669529455696ull, 6708402996126739235ull, 12032236052304768588ull, 8669380116140521977ull}}, {{2570586159242215858ull, 13416123909433987830ull, 602618505049398511ull, 5418362572587826236ull}}, {{12436604735907545631ull, 12158468868365096883ull, 753273131311748139ull, 6772953215734782795ull}}, {{10934069901457044134ull, 10586400067028983200ull, 14776649469421848886ull, 8466191519668478493ull}}, {{6833793688410652584ull, 2004814023465726596ull, 11541248927602349506ull, 5291369699792799058ull}}, {{8542242110513315730ull, 11729389566186934053ull, 5203189122648161074ull, 6614212124740998823ull}}, {{15289488656569032566ull, 5438364920878891758ull, 1892300384882813439ull, 8267765155926248529ull}}, {{4944244391928257450ull, 10316507103190389205ull, 12711902786620228159ull, 5167353222453905330ull}}, {{10791991508337709716ull, 8283947860560598602ull, 6666506446420509391ull, 6459191528067381663ull}}, {{4266617348567361337ull, 5743248807273360349ull, 3721447039598248835ull, 8073989410084227079ull}}, {{4972478852068294788ull, 1283687495332156266ull, 9243433427389987378ull, 5046243381302641924ull}}, {{15438970601940144293ull, 10827981406019971140ull, 11554291784237484222ull, 6307804226628302405ull}}, {{851969178715628750ull, 4311604720670188118ull, 607806675014691566ull, 7884755283285378007ull}}, {{14367538791979431681ull, 16529811005701031285ull, 7297408199525264084ull, 4927972052053361254ull}}, {{4124365434692125889ull, 2215519683416737491ull, 18345132286261355914ull, 6159965065066701567ull}}, {{543770774937769457ull, 11992771641125697672ull, 18319729339399306988ull, 7699956331333376959ull}}, {{339856734336105911ull, 16718854312558336853ull, 18367359864765648723ull, 4812472707083360599ull}}, {{5036506936347520293ull, 16286881872270533162ull, 18347513812529673000ull, 6015590883854200749ull}}, {{15519005707289176174ull, 1911858266628614836ull, 9099334210379927539ull, 7519488604817750937ull}}, {{476006530200959301ull, 17335812481138741937ull, 17216298927555924471ull, 4699680378011094335ull}}, {{5206694181178587030ull, 17058079582996039517ull, 16908687641017517685ull, 5874600472513867919ull}}, {{11120053744900621691ull, 7487541423462885684ull, 16524173532844509203ull, 7343250590642334899ull}}, {{13900067181125777114ull, 4747740760901219201ull, 16043530897628248600ull, 9179063238302918624ull}}, {{1770012960562528840ull, 2967337975563262001ull, 10027206811017655375ull, 5736914523939324140ull}}, {{6824202219130548954ull, 17544230524736241213ull, 12534008513772069218ull, 7171143154924155175ull}}, {{13141938792340574097ull, 12706916119065525708ull, 11055824623787698619ull, 8963928943655193969ull}}, {{17437083782067634619ull, 5635979565202259615ull, 18439105435935781397ull, 5602455589784496230ull}}, {{17184668709157155369ull, 11656660474930212423ull, 13825509758064950938ull, 7003069487230620288ull}}, {{16869149868019056307ull, 5347453556807989721ull, 17281887197581188673ull, 8753836859038275360ull}}, {{3625689639870828336ull, 14871373519073463336ull, 10801179498488242920ull, 5471148036898922100ull}}, {{4532112049838535420ull, 142472825132277554ull, 13501474373110303651ull, 6838935046123652625ull}}, {{14888512099152945083ull, 14013149086697510654ull, 3041784911105715851ull, 8548668807654565782ull}}, {{4693634043543202773ull, 6452375169972250207ull, 15736173624723236119ull, 5342918004784103613ull}}, {{1255356536001615562ull, 3453782944037924855ull, 5835158975621881437ull, 6678647505980129517ull}}, {{15404253725284183165ull, 8928914698474793972ull, 11905634737954739700ull, 8348309382475161896ull}}, {{404286541447838670ull, 14803943723401522041ull, 7441021711221712312ull, 5217693364046976185ull}}, {{5117044195237186241ull, 58185580542350935ull, 13912963157454528295ull, 6522116705058720231ull}}, {{1784619225619094898ull, 13907790030960102381ull, 12779517928390772464ull, 8152645881323400289ull}}, {{3421230025225628263ull, 8692368769350063988ull, 1069669677603150934ull, 5095403675827125181ull}}, {{4276537531532035329ull, 1642088924832804177ull, 5948773115431326572ull, 6369254594783906476ull}}, {{9957357932842432065ull, 2052611156041005221ull, 7435966394289158215ull, 7961568243479883095ull}}, {{8529191717240213993ull, 8200411000166710119ull, 11565008024071805740ull, 4975980152174926934ull}}, {{6049803628122879587ull, 10250513750208387649ull, 5232887993234981367ull, 6219975190218658668ull}}, {{12173940553580987388ull, 8201456169333096657ull, 6541109991543726709ull, 7774968987773323335ull}}, {{691183818347035261ull, 7431753115046879363ull, 11005722772355911049ull, 4859355617358327084ull}}, {{14699037828215957789ull, 13901377412235987107ull, 13757153465444888811ull, 6074194521697908855ull}}, {{13762111266842559332ull, 12765035746867595980ull, 12584755813378723110ull, 7592743152122386069ull}}, {{17824691578631375390ull, 3366461323364859583ull, 10171315392575395896ull, 4745464470076491293ull}}, {{17669178454861831334ull, 4208076654206074479ull, 17325830259146632774ull, 5931830587595614116ull}}, {{17474787050149901263ull, 14483467854612368907ull, 3210543750223739351ull, 7414788234494517646ull}}, {{8615898897129994338ull, 15969696436773812423ull, 15841647899172000806ull, 4634242646559073528ull}}, {{6158187602985105018ull, 10738748509112489721ull, 1355315800255449392ull, 5792803308198841911ull}}, {{12309420522158769176ull, 13423435636390612151ull, 15529202805601475452ull, 7241004135248552388ull}}, {{10775089634271073566ull, 16779294545488265189ull, 964759433292292699ull, 9051255169060690486ull}}, {{9040274030633114931ull, 8181216081716471791ull, 14438032701089846649ull, 5657034480662931553ull}}, {{6688656519864005760ull, 14838206120572977643ull, 4212482821080144599ull, 7071293100828664442ull}}, {{3749134631402619296ull, 13936071632288834150ull, 14488975563204956557ull, 8839116376035830552ull}}, {{16178267199908800772ull, 11015887779394215295ull, 9055609727003097848ull, 5524447735022394095ull}}, {{15611147981458613061ull, 13769859724242769119ull, 6707826140326484406ull, 6905559668777992619ull}}, {{14902248958395878422ull, 7988952618448685591ull, 3773096656980717604ull, 8631949585972490774ull}}, {{16231434626638505870ull, 14216467423385204302ull, 16193243465895112214ull, 5394968491232806733ull}}, {{11065921246443356529ull, 8547212242376729570ull, 6406496277086726556ull, 6743710614041008417ull}}, {{4609029521199419854ull, 10684015302970911963ull, 12619806364785796099ull, 8429638267551260521ull}}, {{574800441535943457ull, 4371666555143126025ull, 969849950350040706ull, 5268523917219537826ull}}, {{5330186570347317225ull, 14687955230783683339ull, 10435684474792326690ull, 6585654896524422282ull}}, {{2051047194506758627ull, 9136572001624828366ull, 3821233556635632555ull, 8232068620655527853ull}}, {{15116962551848887854ull, 3404514491801823776ull, 4694113982110964299ull, 5145042887909704908ull}}, {{449459116101558201ull, 18090701170034443433ull, 5867642477638705373ull, 6431303609887131135ull}}, {{5173509913554335655ull, 8778318407260890579ull, 2722867078620993813ull, 8039129512358913919ull}}, {{927600686757765833ull, 7792292013751750564ull, 8619320951779202989ull, 5024455945224321199ull}}, {{1159500858447207291ull, 14352051035617076109ull, 6162465171296615832ull, 6280569931530401499ull}}, {{6061062091486397018ull, 17940063794521345136ull, 3091395445693381886ull, 7850712414413001874ull}}, {{3788163807178998136ull, 6600853853148452806ull, 6543808171985751583ull, 4906695259008126171ull}}, {{13958576795828523478ull, 3639381298008178103ull, 3568074196554801575ull, 6133369073760157714ull}}, {{12836534976358266443ull, 18384284677792386341ull, 13683464782548277776ull, 7666711342200197142ull}}, {{10328677369437610479ull, 11490177923620241463ull, 3940479470665285706ull, 4791694588875123214ull}}, {{8299160693369625195ull, 5139350367670526021ull, 14148971375186382941ull, 5989618236093904017ull}}, {{14985636885139419398ull, 11035873978015545430ull, 3851156163700814964ull, 7487022795117380022ull}}, {{4754337034784749220ull, 16120793273114491702ull, 16242030657595173064ull, 4679389246948362513ull}}, {{15166293330335712333ull, 1704247517683563011ull, 6467480266711802619ull, 5849236558685453142ull}}, {{14346180644492252512ull, 15965367452386617476ull, 17307722370244529081ull, 7311545698356816427ull}}, {{17932725805615315639ull, 6121651260201108133ull, 17022966944378273448ull, 9139432122946020534ull}}, {{13513796637723266227ull, 3826032037625692583ull, 6027668321809033001ull, 5712145076841262834ull}}, {{12280559778726694879ull, 9394226065459503633ull, 16757957439116067059ull, 7140181346051578542ull}}, {{1515641668126204887ull, 7131096563396991638ull, 11724074762040308016ull, 8925226682564473178ull}}, {{14782334097861041767ull, 4456935352123119773ull, 11939232744702580414ull, 5578266676602795736ull}}, {{4642859567044138496ull, 14794541227008675525ull, 14924040930878225517ull, 6972833345753494670ull}}, {{10415260477232561024ull, 4658118478478680694ull, 9431679126743006089ull, 8716041682191868338ull}}, {{1897851779842962736ull, 14440539095117645194ull, 10506485472641766709ull, 5447526051369917711ull}}, {{11595686761658479228ull, 4215615813614892780ull, 8521420822374820483ull, 6809407564212397139ull}}, {{14494608452073099035ull, 657833748591228071ull, 6040090009541137700ull, 8511759455265496424ull}}, {{15976659310186768753ull, 9634518129724293352ull, 3775056255963211062ull, 5319849659540935265ull}}, {{1524080064023909325ull, 2819775625300590883ull, 9330506338381401732ull, 6649812074426169081ull}}, {{15740158135312050368ull, 3524719531625738603ull, 16274818941404140069ull, 8312265093032711351ull}}, {{7531755825356337528ull, 4508792716479780579ull, 17089290866018669399ull, 5195165683145444594ull}}, {{4803008763268034006ull, 1024304877172337820ull, 12138241545668560941ull, 6493957103931805743ull}}, {{6003760954085042508ull, 5892067114892810179ull, 10561115913658313272ull, 8117446379914757179ull}}, {{1446507587089457616ull, 3682541946808006362ull, 4294854436822751843ull, 5073403987446723237ull}}, {{11031506520716597827ull, 18438235488792171664ull, 9980254064455827707ull, 6341754984308404046ull}}, {{13789383150895747284ull, 18436108342562826676ull, 3251945543715008826ull, 7927193730385505058ull}}, {{17841736506164617861ull, 16134253732529154576ull, 6644151983249268420ull, 4954496081490940661ull}}, {{3855426558996220710ull, 1721073091951891605ull, 12916875997488973430ull, 6193120101863675826ull}}, {{9430969217172663791ull, 11374713401794640314ull, 6922722960006440979ull, 7741400127329594783ull}}, {{10506041779160302774ull, 4803352866907956244ull, 11244230877645107468ull, 4838375079580996739ull}}, {{13132552223950378467ull, 6004191083634945305ull, 9443602578628996431ull, 6047968849476245924ull}}, {{2580632224655809372ull, 2893552836116293728ull, 11804503223286245539ull, 7559961061845307405ull}}, {{1612895140409880857ull, 17949371587068541244ull, 9683657523767597413ull, 4724975663653317128ull}}, {{2016118925512351072ull, 8601656428553512843ull, 12104571904709496767ull, 5906219579566646410ull}}, {{16355206712172602551ull, 6140384517264503149ull, 5907342844032095151ull, 7382774474458308013ull}}, {{12527847204321570547ull, 10755269350931396324ull, 5997932286733753421ull, 4614234046536442508ull}}, {{15659809005401963183ull, 18055772707091633309ull, 7497415358417191776ull, 5767792558170553135ull}}, {{5739703201470290267ull, 4122971810154990021ull, 4760083179594101817ull, 7209740697713191419ull}}, {{11786315020265250738ull, 9765400781121125430ull, 1338417956065239367ull, 9012175872141489274ull}}, {{2754760869238393807ull, 13020904515841785250ull, 5448197240968162508ull, 5632609920088430796ull}}, {{12666823123402768067ull, 16276130644802231562ull, 6810246551210203135ull, 7040762400110538495ull}}, {{6610156867398684276ull, 15733477287575401549ull, 3901122170585366015ull, 8800953000138173119ull}}, {{6437191051337871624ull, 16750952332375707824ull, 9355730384256935615ull, 5500595625086358199ull}}, {{8046488814172339530ull, 16327004397042246876ull, 7082976961893781615ull, 6875744531357947749ull}}, {{10058111017715424413ull, 15797069477875420691ull, 13465407220794614923ull, 8594680664197434686ull}}, {{3980476376858446306ull, 7567325414458443980ull, 3804193494569246423ull, 5371675415123396679ull}}, {{4975595471073057883ull, 4847470749645667071ull, 143555849784170125ull, 6714594268904245849ull}}, {{1607808320413934449ull, 10671024455484471743ull, 4791130830657600560ull, 8393242836130307311ull}}, {{7922409227899790887ull, 6669390284677794839ull, 9911985796802082206ull, 5245776772581442069ull}}, {{5291325516447350705ull, 17560109892702019357ull, 17001668264429990661ull, 6557220965726802586ull}}, {{11225842913986576285ull, 8115079310595360484ull, 12028713293682712519ull, 8196526207158503233ull}}, {{16239523858096385986ull, 11989453596763182158ull, 600416780910613468ull, 5122828879474064521ull}}, {{11076032785765706675ull, 14986816995953977698ull, 5362206994565654739ull, 6403536099342580651ull}}, {{4621668945352357535ull, 14121835226515084219ull, 2091072724779680520ull, 8004420124178225814ull}}, {{582700081631529508ull, 8826147016571927637ull, 15141978508269464037ull, 5002762577611391133ull}}, {{5340061120466799788ull, 15644369789142297450ull, 5092415080054666334ull, 6253453222014238917ull}}, {{15898448437438275543ull, 10332090199573096004ull, 10977204868495720822ull, 7816816527517798646ull}}, {{713158236544146407ull, 1845870356305797099ull, 2249067024382437610ull, 4885510329698624154ull}}, {{14726505850962346720ull, 11530709982237022181ull, 12034705817332822820ull, 6106887912123280192ull}}, {{4573074258420769688ull, 14413387477796277727ull, 15043382271666028525ull, 7633609890154100240ull}}, {{9775700439154062911ull, 11314210182836367531ull, 9402113919791267828ull, 4771006181346312650ull}}, {{7607939530515190735ull, 14142762728545459414ull, 2529270362884308977ull, 5963757726682890813ull}}, {{286552376289212611ull, 3843395355399660556ull, 7773273972032774126ull, 7454697158353613516ull}}, {{9402467272035533690ull, 16237180152406951559ull, 14081668269375259636ull, 4659185723971008447ull}}, {{7141398071617029208ull, 1849731116799137833ull, 12990399318291686642ull, 5823982154963760559ull}}, {{13538433607948674414ull, 11535535932853698099ull, 11626313129437220398ull, 7279977693704700699ull}}, {{12311355991508455114ull, 5196047879212346816ull, 9921205393369137594ull, 9099972117130875874ull}}, {{7694597494692784446ull, 7859215942935104664ull, 10812439389283098900ull, 5687482573206797421ull}}, {{9618246868365980558ull, 9824019928668880830ull, 18127235255031261529ull, 7109353216508496776ull}}, {{2799436548602699889ull, 16891710929263488942ull, 4212299995079525295ull, 8886691520635620971ull}}, {{15584705898158851143ull, 17474848358430762444ull, 326844487711009357ull, 5554182200397263107ull}}, {{1034138298989012312ull, 8008502392756289344ull, 14243613664920925409ull, 6942727750496578883ull}}, {{1292672873736265390ull, 14622314009372749584ull, 13192831062723768857ull, 8678409688120723604ull}}, {{807920546085165869ull, 2221417228216886634ull, 17468891451057131344ull, 5424006055075452252ull}}, {{10233272719461233144ull, 2776771535271108292ull, 3389370240111862564ull, 6780007568844315316ull}}, {{12791590899326541430ull, 3470964419088885365ull, 4236712800139828205ull, 8475009461055394145ull}}, {{10300587321292782346ull, 4475195771144247305ull, 14177160546155862388ull, 5296880913159621340ull}}, {{17487420170043365836ull, 5593994713930309131ull, 17721450682694827985ull, 6621101141449526675ull}}, {{17247589194126819391ull, 11604179410840274318ull, 17540127334941147077ull, 8276376426811908344ull}}, {{6168057227901874216ull, 9558455140988865401ull, 10962579584338216923ull, 5172735266757442715ull}}, {{12321757553304730674ull, 7336382907808693847ull, 9091538461995383250ull, 6465919083446803394ull}}, {{10790510923203525438ull, 18393850671615643117ull, 2141051040639453254ull, 8082398854308504243ull}}, {{9049912336215897351ull, 6884470651332389044ull, 17479057964895515948ull, 5051499283942815151ull}}, {{11312390420269871688ull, 8605588314165486305ull, 17237136437692007031ull, 6314374104928518939ull}}, {{305429970055175898ull, 6145299374279469978ull, 16934734528687620885ull, 7892967631160648674ull}}, {{4802579749711872841ull, 6146655118138362688ull, 15195895098857150957ull, 4933104769475405421ull}}, {{6003224687139841051ull, 12295004916100341264ull, 5159810818289274984ull, 6166380961844256777ull}}, {{7504030858924801313ull, 15368756145125426580ull, 11061449541288981634ull, 7707976202305320971ull}}, {{13913391323682776629ull, 14217158609130779516ull, 4607562954091919569ull, 4817485126440825607ull}}, {{17391739154603470786ull, 3936390206131310683ull, 1147767674187511558ull, 6021856408051032009ull}}, {{17127987924826950579ull, 14143859794518914162ull, 6046395611161777351ull, 7527320510063790011ull}}, {{15316678471444232016ull, 15757441399215403207ull, 1473154247762416892ull, 4704575318789868757ull}}, {{14534162070877902116ull, 1250057675309702393ull, 6453128828130409020ull, 5880719148487335946ull}}, {{4332644533315213932ull, 1562572094137127992ull, 17289783072017787083ull, 7350898935609169932ull}}, {{5415805666644017415ull, 15788273172953573702ull, 3165484766312682237ull, 9188623669511462416ull}}, {{17219936596934674597ull, 12173513742309677515ull, 1978427978945426398ull, 5742889793444664010ull}}, {{16913234727740955342ull, 5993520141032321086ull, 11696407010536558806ull, 7178612241805830012ull}}, {{11918171372821418369ull, 16715272213145177166ull, 14620508763170698507ull, 8973265302257287515ull}}, {{2837171089585998577ull, 8141202124002041777ull, 6831974967767992615ull, 5608290813910804697ull}}, {{8158149880409886125ull, 5564816636575164317ull, 13151654728137378673ull, 7010363517388505871ull}}, {{14809373368939745560ull, 11567706814146343300ull, 11827882391744335437ull, 8762954396735632339ull}}, {{32486318732565167ull, 9535659768055158515ull, 5086583485626515696ull, 5476846497959770212ull}}, {{13875665953697870171ull, 11919574710068948143ull, 6358229357033144620ull, 6846058122449712765ull}}, {{12732896423694949810ull, 14899468387586185179ull, 12559472714718818679ull, 8557572653062140956ull}}, {{5652217255595649679ull, 16229696769882447593ull, 17073042483554037482ull, 5348482908163838097ull}}, {{11676957587921950003ull, 11063748925498283683ull, 7506245049160383141ull, 6685603635204797622ull}}, {{9984510966475049600ull, 18441372175300242508ull, 159434274595703118ull, 8357004544005997028ull}}, {{15463691390901681808ull, 6914171591135263663ull, 9323018458477090257ull, 5223127840003748142ull}}, {{14717928220199714356ull, 13254400507346467483ull, 2430401036241587013ull, 6528909800004685178ull}}, {{13785724256822255041ull, 2732942578900920642ull, 12261373332156759575ull, 8161137250005856472ull}}, {{13227763678941297305ull, 8625618139454157257ull, 7663358332597974734ull, 5100710781253660295ull}}, {{2699646543394457919ull, 1558650637462920764ull, 4967511897320080514ull, 6375888476567075369ull}}, {{3374558179243072398ull, 11171685333683426763ull, 10821075890077488546ull, 7969860595708844211ull}}, {{18249999926522777913ull, 11593989351979529630ull, 4457329422084736389ull, 4981162872318027632ull}}, {{13589127871298696583ull, 657428634692248326ull, 5571661777605920487ull, 6226453590397534540ull}}, {{7763037802268594921ull, 14656843848647474120ull, 6964577222007400608ull, 7783066987996918175ull}}, {{4851898626417871826ull, 9160527405404671325ull, 11270389791395707236ull, 4864416867498073859ull}}, {{10676559301449727686ull, 11450659256755839156ull, 9476301220817246141ull, 6080521084372592324ull}}, {{13345699126812159607ull, 478266015662635233ull, 11845376526021557677ull, 7600651355465740405ull}}, {{1423532926616517899ull, 2604759269002840973ull, 9709203337977167500ull, 4750407097166087753ull}}, {{6391102176698035277ull, 3255949086253551216ull, 16748190190898847279ull, 5938008871457609691ull}}, {{7988877720872544096ull, 17904994413099102732ull, 16323551720196171194ull, 7422511089322012114ull}}, {{14216420612400115868ull, 15802307526614327111ull, 14813905843549994900ull, 4639069430826257571ull}}, {{13158839747072756931ull, 1306140334558357273ull, 13905696286010105722ull, 5798836788532821964ull}}, {{2613491628558782452ull, 10856047455052722400ull, 17382120357512632152ull, 7248545985666027455ull}}, {{3266864535698478065ull, 13570059318815903000ull, 17115964428463402286ull, 9060682482082534319ull}}, {{2041790334811548791ull, 3869601055832551471ull, 17615006795430708285ull, 5662926551301583949ull}}, {{16387295973796599701ull, 9448687338218077242ull, 8183700439006221644ull, 7078658189126979937ull}}, {{11260747930390973818ull, 11810859172772596553ull, 14841311567185164959ull, 8848322736408724921ull}}, {{120438428853276780ull, 14299316010623954702ull, 2358290701849646243ull, 5530201710255453076ull}}, {{9373920072921371783ull, 13262458994852555473ull, 2947863377312057804ull, 6912752137819316345ull}}, {{16329086109579102633ull, 16578073743565694341ull, 8296515240067460159ull, 8640940172274145431ull}}, {{12511521827700633098ull, 17278825117369640819ull, 12102851052683244455ull, 5400587607671340894ull}}, {{11027716266198403468ull, 16986845378284663120ull, 5905191778999279761ull, 6750734509589176118ull}}, {{13784645332748004335ull, 7398498667573665188ull, 16604861760603875510ull, 8438418136986470147ull}}, {{17838775369822278517ull, 12375648806152838ull, 8072195591163728242ull, 5274011335616543842ull}}, {{13075097175423072339ull, 9238841597862466856ull, 866872452099884494ull, 6592514169520679803ull}}, {{16343871469278840423ull, 2325179960473307762ull, 14918648620407019330ull, 8240642711900849753ull}}, {{14826605686726663169ull, 6064923493723205255ull, 2406626360113305225ull, 5150401694938031096ull}}, {{13921571089980941057ull, 12192840385581394473ull, 3008282950141631531ull, 6438002118672538870ull}}, {{3566905807194012609ull, 10629364463549355188ull, 12983725724531815222ull, 8047502648340673587ull}}, {{11452688166351033689ull, 2031666771290959088ull, 5808985568618690562ull, 5029689155212920992ull}}, {{14315860207938792111ull, 11762955500968474668ull, 7261231960773363202ull, 6287111444016151240ull}}, {{17894825259923490138ull, 5480322339355817527ull, 9076539950966704003ull, 7858889305020189050ull}}, {{18101794815093263193ull, 1119358452883692002ull, 10284523487781577906ull, 4911805815637618156ull}}, {{13403871482011803183ull, 10622570102959390811ull, 12855654359726972382ull, 6139757269547022695ull}}, {{12143153334087366074ull, 4054840591844462706ull, 11457881931231327574ull, 7674696586933778369ull}}, {{12201156852231991701ull, 16369333425184952903ull, 243647179378497877ull, 4796685366833611481ull}}, {{10639760046862601722ull, 6626608726199027417ull, 4916244992650510251ull, 5995856708542014351ull}}, {{17911386077005640056ull, 3671574889321396367ull, 1533620222385749910ull, 7494820885677517939ull}}, {{18112145325769606891ull, 16129792361108036441ull, 17099413703486951357ull, 4684263053548448711ull}}, {{8805123601929844902ull, 6327182396102881840ull, 16762581110931301293ull, 5855328816935560889ull}}, {{11006404502412306127ull, 12520664013555990204ull, 7118168333381962904ull, 7319161021169451112ull}}, {{13758005628015382659ull, 15650830016944987755ull, 8897710416727453630ull, 9148951276461813890ull}}, {{6292910508295920210ull, 5170082742163229443ull, 10172755028882046423ull, 5718094547788633681ull}}, {{3254452116942512358ull, 1850917409276648900ull, 17327629804529945933ull, 7147618184735792101ull}}, {{4068065146178140448ull, 6925332780023199029ull, 7824479200380268704ull, 8934522730919740127ull}}, {{4848383725575031732ull, 4328332987514499393ull, 11807828527878749796ull, 5584076706824837579ull}}, {{10672165675396177569ull, 5410416234393124241ull, 10148099641421049341ull, 6980095883531046974ull}}, {{17951893112672609865ull, 11374706311418793205ull, 3461752514921535868ull, 8725119854413808718ull}}, {{13525776204634075118ull, 16332563481491521561ull, 15998653377108123629ull, 5453199909008630448ull}}, {{3072162200510430185ull, 6580646296582238240ull, 1551572647675602921ull, 6816499886260788061ull}}, {{3840202750638037731ull, 12837493889155185704ull, 6551151828021891555ull, 8520624857825985076ull}}, {{2400126719148773582ull, 5717590671508297113ull, 13317841929368458030ull, 5325390536141240672ull}}, {{7611844417363354882ull, 16370360376240147199ull, 16647302411710572537ull, 6656738170176550840ull}}, {{4903119503276805698ull, 6627892415018020287ull, 2362383940928664056ull, 8320922712720688551ull}}, {{9981978717189085417ull, 4142432759386262679ull, 8394018990721496891ull, 5200576695450430344ull}}, {{7865787378058968868ull, 566354930805440445ull, 10492523738401871114ull, 6500720869313037930ull}}, {{14443920241001098988ull, 9931315700361576364ull, 3892282636147563084ull, 8125901086641297413ull}}, {{18250822187480462676ull, 15430444349580761035ull, 4738519656805920879ull, 5078688179150810883ull}}, {{18201841715923190441ull, 14676369418548563390ull, 1311463552580013195ull, 6348360223938513604ull}}, {{13528930108049212243ull, 13733775754758316334ull, 1639329440725016494ull, 7935450279923142005ull}}, {{3843895299103369748ull, 3971923828296559805ull, 3330423909666829261ull, 4959656424951963753ull}}, {{9416555142306600089ull, 9576590803798087660ull, 8774715905510924480ull, 6199570531189954691ull}}, {{11770693927883250111ull, 11970738504747609575ull, 6356708863461267696ull, 7749463163987443364ull}}, {{14274212732568113175ull, 7481711565467255984ull, 13196315076518068118ull, 4843414477492152102ull}}, {{17842765915710141469ull, 128767419979294172ull, 7272021808792809340ull, 6054268096865190128ull}}, {{3856713320928125220ull, 160959274974117716ull, 9090027260991011675ull, 7567835121081487660ull}}, {{11633817862434854071ull, 16241500611354681236ull, 14904639074974158104ull, 4729896950675929787ull}}, {{14542272328043567589ull, 1855131690483799929ull, 14019112825290309727ull, 5912371188344912234ull}}, {{4342782354772295774ull, 16153972668386913624ull, 8300518994758111350ull, 7390463985431140293ull}}, {{2714238971732684859ull, 5484546899314433111ull, 7493667380937513546ull, 4619039990894462683ull}}, {{17227856769948019785ull, 16079055660997817196ull, 4755398207744504028ull, 5773799988618078354ull}}, {{3088076888725473115ull, 1652075502537719880ull, 15167619796535405844ull, 7217249985772597942ull}}, {{3860096110906841394ull, 2065094378172149850ull, 9736152708814481497ull, 9021562482215747428ull}}, {{7024246087744163775ull, 12819899032426063416ull, 15308467479863826743ull, 5638476551384842142ull}}, {{8780307609680204719ull, 11413187772105191366ull, 9912212312975007621ull, 7048095689231052678ull}}, {{1752012475245480091ull, 431426659849325496ull, 3166893354363983719ull, 8810119611538815848ull}}, {{1095007797028425057ull, 7187170690046910291ull, 1979308346477489824ull, 5506324757211759905ull}}, {{15203817801567695033ull, 8983963362558637863ull, 7085821451524250184ull, 6882905946514699881ull}}, {{14393086233532230887ull, 11229954203198297329ull, 13468962832832700634ull, 8603632433143374851ull}}, {{2078149868316562449ull, 11630407395426323735ull, 6112258761306743944ull, 5377270270714609282ull}}, {{16432745390677866773ull, 14538009244282904668ull, 16863695488488205738ull, 6721587838393261602ull}}, {{2094187664637781850ull, 8949139518498855028ull, 11856247323755481365ull, 8401984797991577003ull}}, {{10532239327253389464ull, 7899055208275478344ull, 5104311568133481901ull, 5251240498744735627ull}}, {{13165299159066736830ull, 14485505028771735834ull, 1768703441739464472ull, 6564050623430919534ull}}, {{7233251911978645230ull, 18106881285964669793ull, 11434251339029106398ull, 8205063279288649417ull}}, {{16049997491055123029ull, 6705114785300530716ull, 228878059252109643ull, 5128164549555405886ull}}, {{1615752790109352170ull, 3769707463198275492ull, 9509469610919912862ull, 6410205686944257357ull}}, {{2019690987636690212ull, 13935506365852620173ull, 16498523032077278981ull, 8012757108680321696ull}}, {{3568149876486625335ull, 11015534487871581560ull, 10311576895048299363ull, 5007973192925201060ull}}, {{4460187345608281668ull, 9157732091412089046ull, 12889471118810374204ull, 6259966491156501325ull}}, {{14798606218865127893ull, 11447165114265111307ull, 2276780843230804043ull, 7824958113945626657ull}}, {{6943285877577010982ull, 4848635187202000615ull, 12952203073087722287ull, 4890598821216016660ull}}, {{4067421328543875823ull, 1449107965575112865ull, 16190253841359652859ull, 6113248526520020825ull}}, {{9695962679107232682ull, 15646443012251054793ull, 6402759246417402361ull, 7641560658150026032ull}}, {{17589191720510490187ull, 2861497855015827389ull, 4001724529010876476ull, 4775975411343766270ull}}, {{8151431595355949021ull, 3576872318769784237ull, 14225527698118371403ull, 5969969264179707837ull}}, {{14800975512622324180ull, 18306148453744394008ull, 3946851567365800541ull, 7462461580224634797ull}}, {{9250609695388952613ull, 13747185792803940207ull, 4772625238817319290ull, 4664038487640396748ull}}, {{6951576100808802862ull, 7960610204150149451ull, 5965781548521649113ull, 5830048109550495935ull}}, {{4077784107583615673ull, 14562448773615074718ull, 2845540917224673487ull, 7287560136938119919ull}}, {{14320602171334295400ull, 13591374948591455493ull, 17391984201813005571ull, 9109450171172649898ull}}, {{11256219366297628577ull, 6188766333655965731ull, 15481676144560516386ull, 5693406356982906186ull}}, {{9458588189444647817ull, 16959329953924732972ull, 10128723143845869674ull, 7116757946228632733ull}}, {{11823235236805809771ull, 11975790405551140407ull, 17272589948234724997ull, 8895947432785790916ull}}, {{14307051050644712963ull, 9790712012683156706ull, 1571996680791927315ull, 5559967145491119323ull}}, {{8660441776451115396ull, 7626703997426557979ull, 15800053906272072856ull, 6949958931863899153ull}}, {{6213866202136506341ull, 9533379996783197474ull, 5915009327557927358ull, 8687448664829873942ull}}, {{8495352394762704367ull, 1346676479562110517ull, 17531938885005868311ull, 5429655415518671213ull}}, {{15230876511880768363ull, 15518403654734801858ull, 8079865550975171676ull, 6787069269398339017ull}}, {{9815223602996184645ull, 951260494708950707ull, 14711517957146352500ull, 8483836586747923771ull}}, {{3828671742658921452ull, 9817909846047870000ull, 6888855714002776360ull, 5302397866717452357ull}}, {{4785839678323651814ull, 12272387307559837500ull, 13222755660930858354ull, 6627997333396815446ull}}, {{5982299597904564768ull, 6117112097595021067ull, 7305072539308797135ull, 8284996666746019308ull}}, {{1433094239476659028ull, 10740724088637970023ull, 13789042373922774017ull, 5178122916716262067ull}}, {{15626425854627987497ull, 18037591129224850432ull, 12624616948976079617ull, 6472653645895327584ull}}, {{1086288244575432755ull, 8711930856248899329ull, 15780771186220099522ull, 8090817057369159480ull}}, {{12208145198928115232ull, 10056642803582949984ull, 9862981991387562201ull, 5056760660855724675ull}}, {{15260181498660144040ull, 17182489522906075384ull, 7717041470807064847ull, 6320950826069655844ull}}, {{628482799615628434ull, 16866425885205206327ull, 9646301838508831059ull, 7901188532587069805ull}}, {{7310330777400849627ull, 8235673169039560002ull, 8334781658281713364ull, 4938242832866918628ull}}, {{18361285508605837842ull, 10294591461299450002ull, 10418477072852141705ull, 6172803541083648285ull}}, {{13728234848902521494ull, 17479925345051700407ull, 17634782359492565035ull, 7716004426354560356ull}}, {{15497675808205157790ull, 8619110331443618802ull, 1798366937828077339ull, 4822502766471600223ull}}, {{10148722723401671430ull, 6162201895877135599ull, 16083016727567260386ull, 6028128458089500278ull}}, {{8074217385824701383ull, 16926124406701195307ull, 10880398872604299674ull, 7535160572611875348ull}}, {{2740542856926744413ull, 15190513772615634971ull, 16023621332232463104ull, 4709475357882422092ull}}, {{17260736626440594228ull, 541398142059992097ull, 1582782591581027265ull, 5886844197353027616ull}}, {{7740862727768579072ull, 5288433696002378026ull, 1978478239476284081ull, 7358555246691284520ull}}, {{452706372855948032ull, 11222228138430360437ull, 2473097799345355101ull, 9198194058364105650ull}}, {{2588784492248661472ull, 9319735595732669225ull, 6157372143018234842ull, 5748871286477566031ull}}, {{7847666633738214744ull, 2426297457811060723ull, 3085029160345405649ull, 7186089108096957539ull}}, {{5197897273745380526ull, 7644557840691213808ull, 17691344505713920773ull, 8982611385121196923ull}}, {{3248685796090862829ull, 7083691659645702582ull, 8751247306857506531ull, 5614132115700748077ull}}, {{13284229281968354344ull, 4242928556129740323ull, 15550745151999271068ull, 7017665144625935096ull}}, {{11993600584033055026ull, 5303660695162175404ull, 991687366289537219ull, 8772081430782418871ull}}, {{16719372401875435200ull, 1008944925262665675ull, 7537333631572042618ull, 5482550894239011794ull}}, {{16287529483916906095ull, 10484553193433107902ull, 198295002610277464ull, 6853188617798764743ull}}, {{11136039818041356811ull, 13105691491791384878ull, 14082926808545010542ull, 8566485772248455928ull}}, {{2348338867848460103ull, 3579371163942227645ull, 8801829255340631589ull, 5354053607655284955ull}}, {{7547109603237963033ull, 9085899973355172460ull, 6390600550748401582ull, 6692567009569106194ull}}, {{9433887004047453791ull, 2134002929839189767ull, 17211622725290277786ull, 8365708761961382742ull}}, {{12813708405170740475ull, 5945437849576881508ull, 6145578184879035712ull, 5228567976225864214ull}}, {{16017135506463425594ull, 7431797311971101885ull, 16905344767953570448ull, 6535709970282330267ull}}, {{6186361327797118281ull, 9289746639963877357ull, 16519994941514575156ull, 8169637462852912834ull}}, {{6172318839086892878ull, 15029463686832199156ull, 14936682856873997376ull, 5106023414283070521ull}}, {{7715398548858616097ull, 340085534830697329ull, 4835795515810333009ull, 6382529267853838152ull}}, {{14255934204500658025ull, 5036792936965759565ull, 6044744394762916261ull, 7978161584817297690ull}}, {{11215801887026605218ull, 5453838594817293680ull, 8389651265154210567ull, 4986350990510811056ull}}, {{14019752358783256522ull, 2205612225094229196ull, 10487064081442763209ull, 6232938738138513820ull}}, {{17524690448479070652ull, 7368701299795174399ull, 13108830101803454011ull, 7791173422673142275ull}}, {{17870460557940501014ull, 2299595303158290047ull, 5887175804413464805ull, 4869483389170713922ull}}, {{17726389678998238363ull, 7486180147375250463ull, 16582341792371606814ull, 6086854236463392402ull}}, {{17546301080320410050ull, 134353147364287271ull, 11504555203609732710ull, 7608567795579240503ull}}, {{17883967202841338137ull, 13919028772384843256ull, 14107876029897164799ull, 4755354872237025314ull}}, {{3908214929842121056ull, 12787099947053666167ull, 8411473000516680191ull, 5944193590296281643ull}}, {{273582643875263416ull, 11372188915389694805ull, 5902655232218462335ull, 7430241987870352054ull}}, {{2476832161635733587ull, 14025147099759641109ull, 17524217575418702671ull, 4643901242418970033ull}}, {{7707726220472054887ull, 12919747856272163482ull, 8070213913991214627ull, 5804876553023712542ull}}, {{411285738735292801ull, 11537998801912816449ull, 864395355634242476ull, 7256095691279640678ull}}, {{5125793191846503905ull, 14422498502391020561ull, 10303866231397578903ull, 9070119614099550847ull}}, {{14732835790972534701ull, 15931590591635469706ull, 13357445422264568670ull, 5668824758812219279ull}}, {{9192672701860892568ull, 10691116202689561325ull, 12085120759403322934ull, 7086030948515274099ull}}, {{16102526895753503614ull, 4140523216507175848ull, 10494714930826765764ull, 8857538685644092624ull}}, {{10064079309845939759ull, 11811199047171760713ull, 6559196831766728602ull, 5535961678527557890ull}}, {{17191785155734812603ull, 5540626772109925083ull, 17422368076563186561ull, 6919952098159447362ull}}, {{16878045426241127849ull, 11537469483564794258ull, 12554588058849207393ull, 8649940122699309203ull}}, {{15160464409828092810ull, 293389399586914555ull, 5540774527567060669ull, 5406212576687068252ull}}, {{14338894493857728108ull, 4978422767911031098ull, 6925968159458825836ull, 6757765720858835315ull}}, {{8700246080467384327ull, 6223028459888788873ull, 4045774180896144391ull, 8447207151073544144ull}}, {{16966868846360584965ull, 10806921815071574901ull, 2528608863060090244ull, 5279504469420965090ull}}, {{7373528002668567494ull, 13508652268839468627ull, 12384133115679888613ull, 6599380586776206362ull}}, {{4605223984908321463ull, 3050757280767172072ull, 6256794357745084959ull, 8249225733470257953ull}}, {{2878264990567700915ull, 8824252328120564401ull, 15439711519659147859ull, 5155766083418911220ull}}, {{8209517256637014047ull, 6418629391723317597ull, 852895325864383208ull, 6444707604273639026ull}}, {{14873582589223655463ull, 8023286739654146996ull, 10289491194185254818ull, 8055884505342048782ull}}, {{72617081410008856ull, 9626240230711229777ull, 1819245977938396357ull, 5034927815838780489ull}}, {{4702457370189898974ull, 16644486306816425125ull, 6885743490850383350ull, 6293659769798475611ull}}, {{10489757731164761622ull, 11582235846665755598ull, 3995493345135591284ull, 7867074712248094514ull}}, {{1944412563550588110ull, 16462269441020873057ull, 7108869359137132456ull, 4916921695155059071ull}}, {{7042201722865623041ull, 2131092727566539705ull, 4274400680494027667ull, 6146152118943823839ull}}, {{13414438172009416705ull, 16498923964740338343ull, 731314832190146679ull, 7682690148679779799ull}}, {{15301552885146967297ull, 17229356505603793320ull, 7374600797759923530ull, 4801681342924862374ull}}, {{680197032724157505ull, 12313323595149965843ull, 18441623034054680221ull, 6002101678656077967ull}}, {{14685304346187360593ull, 1556596438655293591ull, 18440342774140962373ull, 7502627098320097459ull}}, {{16095844244008182227ull, 3278715783373252446ull, 9219371224624407531ull, 4689141936450060912ull}}, {{10896433268155451976ull, 17933452784498729270ull, 11524214030780509413ull, 5861427420562576140ull}}, {{4397169548339539161ull, 8581757925341247876ull, 14405267538475636767ull, 7326784275703220175ull}}, {{5496461935424423952ull, 6115511388249171941ull, 13394898404667158055ull, 9158480344629025219ull}}, {{5741131718853958922ull, 10739723645296814319ull, 6065968493703279832ull, 5724050215393140762ull}}, {{2564728630140060748ull, 13424654556621017899ull, 16805832653983875598ull, 7155062769241425952ull}}, {{17040968842957239647ull, 7557446158921496565ull, 2560546743770292882ull, 8943828461551782441ull}}, {{12956448536061968732ull, 9335089867753323257ull, 13129556760924902811ull, 5589892788469864025ull}}, {{2360502614795297203ull, 7057176316264266168ull, 2576887895873964802ull, 6987365985587330032ull}}, {{2950628268494121503ull, 18044842432185108518ull, 3221109869842456002ull, 8734207481984162540ull}}, {{15679200723090989652ull, 15889712538543080727ull, 11236565705506310809ull, 5458879676240101587ull}}, {{14987314885436349160ull, 6027082617896687197ull, 9434021113455500608ull, 6823599595300126984ull}}, {{4899085551513272738ull, 7533853272370858997ull, 11792526391819375760ull, 8529499494125158730ull}}, {{5367771478909489414ull, 4708658295231786873ull, 11982015013314497754ull, 5330937183828224206ull}}, {{11321400367064249671ull, 15109194905894509399ull, 5754146729788346384ull, 6663671479785280258ull}}, {{9540064440402924185ull, 439749558658585133ull, 16416055449090208789ull, 8329589349731600322ull}}, {{8268383284465521568ull, 2580686483375309660ull, 14871720674108768397ull, 5205993343582250201ull}}, {{10335479105581901959ull, 7837544122646524979ull, 4754592787353796784ull, 6507491679477812752ull}}, {{8307662863549989545ull, 9796930153308156224ull, 5943240984192245980ull, 8134364599347265940ull}}, {{5192289289718743466ull, 15346453382672373448ull, 12937897651974929545ull, 5083977874592041212ull}}, {{6490361612148429332ull, 5348008673058303098ull, 16172372064968661932ull, 6354972343240051515ull}}, {{17336324052040312473ull, 6685010841322878872ull, 15603779062783439511ull, 7943715429050064394ull}}, {{10835202532525195296ull, 11095660803467881151ull, 14364047932667037598ull, 4964822143156290246ull}}, {{8932317147229106216ull, 4646203967480075631ull, 8731687878979021190ull, 6206027678945362808ull}}, {{6553710415608994866ull, 15031126996204870347ull, 10914609848723776487ull, 7757534598681703510ull}}, {{1790226000541927839ull, 16311983400269125823ull, 2209945137024972400ull, 4848459124176064694ull}}, {{16072840555959573511ull, 1943235176626855662ull, 11985803458135991309ull, 6060573905220080867ull}}, {{10867678658094691080ull, 7040729989210957482ull, 10370568304242601232ull, 7575717381525101084ull}}, {{11403985179736569829ull, 4400456243256848426ull, 15704977227006401578ull, 4734823363453188177ull}}, {{5031609437815936479ull, 14723942340925836341ull, 5796163478475838260ull, 5918529204316485222ull}}, {{10901197815697308502ull, 18404927926157295426ull, 16468576384949573633ull, 7398161505395606527ull}}, {{11424934653238205718ull, 4585550926207227785ull, 17210389268234565377ull, 4623850940872254079ull}}, {{446110261265593435ull, 10343624676186422636ull, 16901300566865818817ull, 5779813676090317599ull}}, {{557637826581991794ull, 17541216863660416199ull, 16514939690154885617ull, 7224767095112896999ull}}, {{14532105338509653455ull, 8091463024293356536ull, 16031988594266219118ull, 9030958868891121249ull}}, {{9082565836568533409ull, 445478371755959931ull, 3102463843775305093ull, 5644349293056950781ull}}, {{6741521277283278858ull, 5168533983122337818ull, 8489765823146519270ull, 7055436616321188476ull}}, {{17650273633458874380ull, 15684039515757698080ull, 10612207278933149087ull, 8819295770401485595ull}}, {{11031421020911796488ull, 16720053724989643156ull, 4326786540119524227ull, 5512059856500928497ull}}, {{13789276276139745609ull, 16288381137809666041ull, 10020169193576793188ull, 6890074820626160621ull}}, {{3401537289892518300ull, 1913732348552530936ull, 17136897510398379390ull, 8612593525782700776ull}}, {{2125960806182823937ull, 15031140773127495547ull, 10710560943998987118ull, 5382870953614187985ull}}, {{16492509063010693634ull, 9565553929554593625ull, 17999887198426121802ull, 6728588692017734981ull}}, {{6780578273481203330ull, 2733570375088466224ull, 8664800942750488541ull, 8410735865022168727ull}}, {{4237861420925752081ull, 4014324493643985342ull, 12333029616860137194ull, 5256709915638855454ull}}, {{14520698813011965910ull, 14241277653909757485ull, 6192914984220395684ull, 6570887394548569318ull}}, {{4315815460982793675ull, 17801597067387196857ull, 16964515767130270413ull, 8213609243185711647ull}}, {{14226599709182715807ull, 13431841176330691987ull, 17520351382097500864ull, 5133505776991069779ull}}, {{13171563618051006855ull, 16789801470413364984ull, 17288753209194488176ull, 6416882221238837224ull}}, {{16464454522563758568ull, 2540507764307154614ull, 3164197437783558605ull, 8021102776548546531ull}}, {{5678598058174961201ull, 3893660361905665586ull, 18118524463110581792ull, 5013189235342841581ull}}, {{16321619609573477309ull, 4867075452382081982ull, 8813097523606063528ull, 6266486544178551977ull}}, {{11178652475112070829ull, 6083844315477602478ull, 15628057922934967314ull, 7833108180223189971ull}}, {{2374971778517656364ull, 8414088715600889453ull, 7461693192620660619ull, 4895692612639493732ull}}, {{7580400741574458359ull, 5905924876073723912ull, 9327116490775825774ull, 6119615765799367165ull}}, {{9475500926968072949ull, 16605778131946930698ull, 16270581631897170121ull, 7649519707249208956ull}}, {{10533874097782433497ull, 3461082304825749830ull, 945741483080955518ull, 4780949817030755598ull}}, {{3943970585373266063ull, 13549724917886963096ull, 10405548890705970205ull, 5976187271288444497ull}}, {{4929963231716582579ull, 3102098092076540158ull, 17618622131809850661ull, 7470234089110555621ull}}, {{16916285075105027824ull, 4244654316761531550ull, 13317481841594850615ull, 4668896305694097263ull}}, {{11921984307026508972ull, 694131877524526534ull, 12035166283566175365ull, 5836120382117621579ull}}, {{5679108346928360407ull, 5479350865333046072ull, 10432271836030331302ull, 7295150477647026974ull}}, {{7098885433660450508ull, 16072560618521083398ull, 3816967758183138319ull, 9118938097058783718ull}}, {{18271861451319945280ull, 16962879414216758979ull, 16220662904146625161ull, 5699336310661739823ull}}, {{18228140795722543696ull, 7368541212488785012ull, 15664142611755893548ull, 7124170388327174779ull}}, {{4338431920943628004ull, 9210676515610981266ull, 14968492246267479031ull, 8905212985408968474ull}}, {{7323205969017155406ull, 12674201849897945147ull, 13966993672344562298ull, 5565758115880605296ull}}, {{4542321442844056354ull, 6619380275517655626ull, 17458742090430702873ull, 6957197644850756620ull}}, {{14901273840409846250ull, 12885911362824457436ull, 3376683539328826975ull, 8696497056063445776ull}}, {{89924113401378099ull, 14971223629406367754ull, 2110427212080516859ull, 5435310660039653610ull}}, {{9335777178606498431ull, 14102343518330571788ull, 11861406051955421882ull, 6794138325049567012ull}}, {{11669721473258123039ull, 8404557361058438927ull, 14826757564944277353ull, 8492672906311958765ull}}, {{14211104948427408755ull, 16782063396729994089ull, 11572566487303867297ull, 5307920566444974228ull}}, {{3928823130252097232ull, 7142521190630328900ull, 14465708109129834122ull, 6634900708056217785ull}}, {{4911028912815121540ull, 18151523525142686933ull, 4247077081130128940ull, 8293625885070272232ull}}, {{5375236079723144915ull, 2121330166359403525ull, 2654423175706330588ull, 5183516178168920145ull}}, {{11330731118081319047ull, 2651662707949254406ull, 7929714988060301139ull, 6479395222711150181ull}}, {{4940041860746873001ull, 17149636440218731720ull, 14523829753502764327ull, 8099244028388937726ull}}, {{3087526162966795626ull, 17636051802777789181ull, 4465707577511839800ull, 5062027517743086079ull}}, {{8471093722135882436ull, 3598320679762684860ull, 970448453462411847ull, 6327534397178857599ull}}, {{10588867152669853045ull, 18332958904985519787ull, 15048118622110178520ull, 7909417996473571998ull}}, {{4312198961204964201ull, 11458099315615949867ull, 4793388120391473671ull, 4943386247795982499ull}}, {{778562683078817348ull, 9710938126092549430ull, 1380049132061954185ull, 6179232809744978124ull}}, {{10196575390703297492ull, 16750358676043074691ull, 1725061415077442731ull, 7724041012181222655ull}}, {{4067016609975866981ull, 8163131163313227730ull, 7995692412064483563ull, 4827525632613264159ull}}, {{14307142799324609534ull, 5592227935714146758ull, 5382929496653216550ull, 6034407040766580199ull}}, {{8660556462300986109ull, 16213656956497459256ull, 2116975852389132783ull, 7543008800958225249ull}}, {{5412847788938116319ull, 17051064625451993891ull, 12852324953811677749ull, 4714380500598890780ull}}, {{2154373717745257494ull, 7478772726532828652ull, 16065406192264597187ull, 5892975625748613475ull}}, {{2692967147181571867ull, 4736779889738647911ull, 15470071721903358580ull, 7366219532185766844ull}}, {{17201266989259128546ull, 5920974862173309888ull, 890845578669646609ull, 9207774415232208556ull}}, {{10750791868286955342ull, 15229824334926788440ull, 9780150523523304938ull, 5754859009520130347ull}}, {{13438489835358694177ull, 9813908381803709742ull, 7613502135976743269ull, 7193573761900162934ull}}, {{7574740257343591913ull, 16879071495682025082ull, 293505633116153278ull, 8991967202375203668ull}}, {{9345898679267132850ull, 5937733666373877772ull, 9406813057552371607ull, 5619979501484502292ull}}, {{11682373349083916062ull, 2810481064539959311ull, 11758516321940464509ull, 7024974376855627865ull}}, {{9991280667927507173ull, 8124787349102337043ull, 863087347143416924ull, 8781217971069534832ull}}, {{3938707408240998032ull, 14301364130043736460ull, 539429591964635577ull, 5488261231918459270ull}}, {{4923384260301247539ull, 4041647107272506863ull, 9897659026810570280ull, 6860326539898074087ull}}, {{1542544306949171520ull, 5052058884090633579ull, 7760387765085824946ull, 8575408174872592609ull}}, {{17104991256339089864ull, 7769222820984033890ull, 16379457399247110351ull, 5359630109295370380ull}}, {{12157867033569086522ull, 5099842507802654459ull, 2027577675349336323ull, 6699537636619212976ull}}, {{10585647773533970249ull, 1763117116325930170ull, 2534472094186670404ull, 8374422045774016220ull}}, {{11227715876886119310ull, 10325320234558482164ull, 10807417095721444810ull, 5234013778608760137ull}}, {{14034644846107649137ull, 3683278256343326897ull, 18120957388079193917ull, 6542517223260950171ull}}, {{3708248002352397709ull, 9215783838856546526ull, 18039510716671604492ull, 8178146529076187714ull}}, {{16152713056752412280ull, 14983236936140117386ull, 15886380216347140711ull, 5111341580672617321ull}}, {{10967519284085739542ull, 14117360151747758829ull, 6022917215151762177ull, 6389176975840771652ull}}, {{18321085123534562332ull, 3811642134402534824ull, 7528646518939702722ull, 7986471219800964565ull}}, {{11450678202209101457ull, 6993962352428972169ull, 7011247083551008153ull, 4991544512375602853ull}}, {{478289697479213110ull, 13354138958963603116ull, 13375744872866148095ull, 6239430640469503566ull}}, {{597862121849016387ull, 12080987680277115991ull, 7496309054227909311ull, 7799288300586879458ull}}, {{7291192853796717098ull, 14468146327814279350ull, 9296879177319831223ull, 4874555187866799661ull}}, {{18337363104100672180ull, 13473496891340461283ull, 16232784990077176933ull, 6093193984833499576ull}}, {{18310017861698452321ull, 3006813058893412892ull, 1844237163886919551ull, 7616492481041874471ull}}, {{2220389126706756893ull, 8796787189449464914ull, 8070177255070406575ull, 4760307800651171544ull}}, {{11998858445238221924ull, 6384297968384443238ull, 10087721568838008219ull, 5950384750813964430ull}}, {{5775201019693001597ull, 3368686442053166144ull, 3386279924192734466ull, 7437980938517455538ull}}, {{3609500637308125998ull, 6717115044710616744ull, 6728110971047846945ull, 4648738086573409711ull}}, {{4511875796635157498ull, 13008079824315658834ull, 3798452695382420777ull, 5810922608216762139ull}}, {{14863216782648722680ull, 2425041725112409830ull, 136379850800638068ull, 7263653260270952674ull}}, {{9355648941456127542ull, 3031302156390512288ull, 9393846850355573393ull, 9079566575338690842ull}}, {{5847280588410079714ull, 13423778893812539940ull, 10482840299899621274ull, 5674729109586681776ull}}, {{7309100735512599642ull, 7556351580410899117ull, 13103550374874526593ull, 7093411386983352220ull}}, {{13748061937818137457ull, 14057125493941011800ull, 16379437968593158241ull, 8866764233729190275ull}}, {{8592538711136335911ull, 1868174406072050519ull, 7931305721157029949ull, 5541727646080743922ull}}, {{6128987370493031984ull, 6946904026017451053ull, 690760114591511628ull, 6927159557600929903ull}}, {{12272920231543677884ull, 8683630032521813816ull, 14698508198521553247ull, 8658949447001162378ull}}, {{7670575144714798678ull, 12344797797967215491ull, 13798253642503358683ull, 5411843404375726486ull}}, {{4976532912466110443ull, 10819311229031631460ull, 8024445016274422546ull, 6764804255469658108ull}}, {{6220666140582638054ull, 4300766999434763517ull, 10030556270343028183ull, 8456005319337072635ull}}, {{6193759347077842736ull, 9605508402287809054ull, 3963254659750698662ull, 5285003324585670397ull}}, {{16965571220702079228ull, 2783513466004985509ull, 9565754343115761232ull, 6606254155732087996ull}}, {{7371905970595435322ull, 3479391832506231887ull, 11957192928894701540ull, 8257817694665109995ull}}, {{11524970259263228933ull, 11397991932171170737ull, 5167402571345494510ull, 5161136059165693747ull}}, {{571154768796872454ull, 5024117878359187614ull, 1847567195754480234ull, 6451420073957117184ull}}, {{9937315497850866375ull, 15503519384803760325ull, 2309458994693100292ull, 8064275092446396480ull}}, {{8516665195370485437ull, 466327578647574395ull, 1443411871683187683ull, 5040171932778997800ull}}, {{6034145475785718892ull, 14417967528591631706ull, 1804264839603984603ull, 6300214915973747250ull}}, {{16766053881586924422ull, 13410773392312151728ull, 11478703086359756562ull, 7875268644967184062ull}}, {{10478783675991827764ull, 12993419388622482734ull, 2562503410547459947ull, 4922042903104490039ull}}, {{3875107558135008897ull, 11630088217350715514ull, 17038187318466488646ull, 6152553628880612548ull}}, {{14067256484523536929ull, 5314238234833618584ull, 2850990074373559192ull, 7690692036100765686ull}}, {{8792035302827210581ull, 3321398896771011615ull, 15616926851765638207ull, 4806682522562978553ull}}, {{6378358110106625322ull, 17986806676245928231ull, 5686100509424884046ull, 6008353153203723192ull}}, {{3361261619205893748ull, 13260136308452634481ull, 7107625636781105058ull, 7510441441504653990ull}}, {{13630003558072153353ull, 12899271211210284454ull, 18277324078270354373ull, 4694025900940408743ull}}, {{7814132410735415883ull, 2289030958730691856ull, 18234969079410555063ull, 5867532376175510929ull}}, {{9767665513419269854ull, 16696346753695528532ull, 8958653293981030116ull, 7334415470219388662ull}}, {{12209581891774087317ull, 2423689368409859049ull, 1974944580621511838ull, 9168019337774235828ull}}, {{713459654717722717ull, 15349863910538325618ull, 10457712399743220706ull, 5730012086108897392ull}}, {{10115196605251929205ull, 9963957851318131214ull, 13072140499679025883ull, 7162515107636121740ull}}, {{3420623719710135698ull, 7843261295720276114ull, 16340175624598782354ull, 8953143884545152175ull}}, {{6749575843246222715ull, 9513724328252560475ull, 17130138793015320827ull, 5595714927840720109ull}}, {{3825283785630390490ull, 7280469391888312690ull, 7577615435986987322ull, 6994643659800900137ull}}, {{14004976768892763920ull, 18323958776715166670ull, 14083705313411122056ull, 8743304574751125171ull}}, {{4141424462130589546ull, 11452474235446979169ull, 6496472811668257333ull, 5464565359219453232ull}}, {{9788466596090624837ull, 480534739026560249ull, 8120591014585321667ull, 6830706699024316540ull}}, {{16847269263540668950ull, 14435726479065364023ull, 10150738768231652083ull, 8538383373780395675ull}}, {{17447072317353999950ull, 6716486040202158562ull, 4038368720931088600ull, 5336489608612747297ull}}, {{12585468359837724129ull, 8395607550252698203ull, 9659646919591248654ull, 6670612010765934121ull}}, {{11120149431369767257ull, 1271137400961096946ull, 16686244667916448722ull, 8338265013457417651ull}}, {{11561779413033492440ull, 5406146894028073495ull, 8123059908234086499ull, 5211415633410886032ull}}, {{9840538247864477646ull, 2145997599107703965ull, 10153824885292608124ull, 6514269541763607540ull}}, {{16912358828257984961ull, 2682496998884629956ull, 12692281106615760155ull, 8142836927204509425ull}}, {{1346852230806464793ull, 17817461688798751387ull, 1015146663993768240ull, 5089273079502818391ull}}, {{15518623343790244703ull, 3825083037288887617ull, 15103991385274374013ull, 6361591349378522988ull}}, {{5563221124455642167ull, 9393039815038497426ull, 433245157883415900ull, 7951989186723153736ull}}, {{8088699221212164258ull, 15094021921253836699ull, 270778223677134937ull, 4969993241701971085ull}}, {{5499188008087817419ull, 5032469346285132162ull, 4950158798023806576ull, 6212491552127463856ull}}, {{16097357046964547581ull, 6290586682856415202ull, 6187698497529758220ull, 7765614440159329820ull}}, {{14672534172780230143ull, 13154988713640035309ull, 13090683597810874695ull, 4853509025099581137ull}}, {{4505609660693123966ull, 11832049873622656233ull, 2528296441981429657ull, 6066886281374476422ull}}, {{10243698094293792862ull, 955004286746156579ull, 12383742589331562880ull, 7583607851718095527ull}}, {{4096468299719926587ull, 596877679216347862ull, 14657368145973308656ull, 4739754907323809704ull}}, {{14343957411504684041ull, 746097099020434827ull, 18321710182466635820ull, 5924693634154762130ull}}, {{13318260745953467147ull, 932621373775543534ull, 13678765691228518967ull, 7405867042693452663ull}}, {{3712226947793529063ull, 7500417386250796565ull, 15466757584658906210ull, 4628666901683407914ull}}, {{9251969703169299233ull, 152149695958719898ull, 10110074943968856955ull, 5785833627104259893ull}}, {{2341590092106848233ull, 14025245175230563585ull, 17249279698388459097ull, 7232292033880324866ull}}, {{7538673633560948195ull, 3696498413756040769ull, 12338227586130798064ull, 9040365042350406083ull}}, {{16240886067044062382ull, 2310311508597525480ull, 5405549232118054838ull, 5650228151469003802ull}}, {{1854363510095526362ull, 12111261422601682659ull, 15980308577002344355ull, 7062785189336254752ull}}, {{16153012442901571664ull, 10527390759824715419ull, 1528641647543378828ull, 8828481486670318441ull}}, {{7789789767599788338ull, 15802991261745222945ull, 12484616075783081527ull, 5517800929168949025ull}}, {{14348923227927123327ull, 15142053058754140777ull, 1770712039446688197ull, 6897251161461186282ull}}, {{4101095979626740446ull, 5092508268160512260ull, 11436762086163136055ull, 8621563951826482852ull}}, {{11786557024121488587ull, 10100346695241402018ull, 16371348340706735842ull, 5388477469891551782ull}}, {{5509824243297084926ull, 3402061332196976715ull, 11240813389028643995ull, 6735596837364439728ull}}, {{2275594285693968253ull, 18087634720528384606ull, 14051016736285804993ull, 8419496046705549660ull}}, {{15257304483840893870ull, 4387242672689158522ull, 18005257497033403929ull, 5262185029190968537ull}}, {{9848258567946341530ull, 10095739359288836057ull, 8671513816009591199ull, 6577731286488710672ull}}, {{16922009228360314816ull, 8007988180683657167ull, 10839392270011988999ull, 8222164108110888340ull}}, {{17493784795366278616ull, 11922521640568367585ull, 15997992205612268932ull, 5138852567569305212ull}}, {{8032172938925684558ull, 14903152050710459482ull, 1550746183305784549ull, 6423565709461631516ull}}, {{816844136802329889ull, 4793882008105910641ull, 1938432729132230687ull, 8029457136827039395ull}}, {{12039742631569925941ull, 9913705282707276006ull, 17352421520203501843ull, 5018410710516899621ull}}, {{5826306252607631618ull, 7780445584956707104ull, 7855468844972213592ull, 6273013388146124527ull}}, {{7282882815759539523ull, 9725556981195883880ull, 5207650037787879086ull, 7841266735182655659ull}}, {{4551801759849712202ull, 1466787094820039521ull, 948938264403730477ull, 4900791709489159787ull}}, {{10301438218239528156ull, 6445169886952437305ull, 15021230885786826808ull, 6125989636861449733ull}}, {{17488483791226798099ull, 8056462358690546631ull, 4941480551951369798ull, 7657487046076812167ull}}, {{17847831397157830668ull, 423602955754203740ull, 10005954372610687980ull, 4785929403798007604ull}}, {{3863045172737736719ull, 529503694692754676ull, 12507442965763359975ull, 5982411754747509505ull}}, {{4828806465922170899ull, 14496937673648107057ull, 1799245651922036256ull, 7478014693434386882ull}}, {{14547219087269826572ull, 9060586046030066910ull, 5736214550878660564ull, 4673759183396491801ull}}, {{8960651822232507407ull, 11325732557537583638ull, 11781954207025713609ull, 5842198979245614751ull}}, {{1977442740935858450ull, 322107641639815836ull, 10115756740354754108ull, 7302748724057018439ull}}, {{2471803426169823063ull, 402634552049769795ull, 8033009907016054731ull, 9128435905071273049ull}}, {{17685778205851997078ull, 16392547659526963785ull, 16549846237953503966ull, 5705272440669545655ull}}, {{8272164702032832636ull, 11267312537553928924ull, 16075621779014492054ull, 7131590550836932069ull}}, {{10340205877541040795ull, 4860768635087635347ull, 6259469168485951356ull, 8914488188546165087ull}}, {{4156785664249456545ull, 12261352433784547900ull, 10829697257944801453ull, 5571555117841353179ull}}, {{5195982080311820681ull, 1491632486948521163ull, 8925435554003613913ull, 6964443897301691474ull}}, {{1883291581962387947ull, 6476226627113039358ull, 1933422405649741583ull, 8705554871627114343ull}}, {{15012115294008656179ull, 10965170669586731454ull, 8125918031172170345ull, 5440971794766946464ull}}, {{9541772080656044416ull, 18318149355410802222ull, 10157397538965212931ull, 6801214743458683080ull}}, {{2703843063965279712ull, 18286000675836114874ull, 12696746923706516164ull, 8501518429323353850ull}}, {{6301587933405687724ull, 2205378385542795988ull, 12547152845743960507ull, 5313449018327096156ull}}, {{7876984916757109655ull, 16591781037210658697ull, 15683941057179950633ull, 6641811272908870195ull}}, {{14457917164373774972ull, 6904668241231159659ull, 14993240303047550388ull, 8302264091136087744ull}}, {{6730355218519915406ull, 13538789687624250595ull, 9370775189404718992ull, 5188915056960054840ull}}, {{3801258004722506353ull, 16923487109530313244ull, 11713468986755898740ull, 6486143821200068550ull}}, {{4751572505903132941ull, 2707614813203339939ull, 5418464196590097618ull, 8107679776500085688ull}}, {{663889806975764137ull, 6303945276679475366ull, 3386540122868811011ull, 5067299860312553555ull}}, {{10053234295574480979ull, 3268245577421956303ull, 18068233208868177476ull, 6334124825390691943ull}}, {{7954856851040713319ull, 4085306971777445379ull, 17973605492657833941ull, 7917656031738364929ull}}, {{2665942522686751873ull, 4859159866574597314ull, 4315974405270064357ull, 4948535019836478081ull}}, {{12555800190213215649ull, 10685635851645634546ull, 10006654025014968350ull, 6185668774795597601ull}}, {{6471378200911743753ull, 4133672777702267375ull, 17120003549696098342ull, 7732085968494497001ull}}, {{10962140403210921702ull, 16418603541346080821ull, 3782473190918979607ull, 4832553730309060626ull}}, {{18314361522441040031ull, 15911568408255213122ull, 13951463525503500317ull, 6040692162886325782ull}}, {{13669579866196524231ull, 6054402455036852691ull, 8215957370024599589ull, 7550865203607907228ull}}, {{6237644407159133692ull, 6089844543611726884ull, 14358345393120150551ull, 4719290752254942017ull}}, {{7797055508948917115ull, 3000619661087270701ull, 4112873686118024477ull, 5899113440318677522ull}}, {{14358005404613534298ull, 8362460594786476280ull, 14364464144502306404ull, 7373891800398346902ull}}, {{17947506755766917872ull, 10453075743483095350ull, 8732208143773107197ull, 9217364750497933628ull}}, {{6605505703926935766ull, 8839015348890628546ull, 14681002126712967806ull, 5760852969061208517ull}}, {{17480254166763445516ull, 1825397149258509874ull, 4516194603109046046ull, 7201066211326510647ull}}, {{12626945671599531087ull, 11505118473427913151ull, 1033557235458919653ull, 9001332764158138309ull}}, {{14809370072390788785ull, 9496542055106139671ull, 2951816281375518735ull, 5625832977598836443ull}}, {{13900026572061098078ull, 7258991550455286685ull, 17524828407001562131ull, 7032291221998545553ull}}, {{3539975159794208885ull, 4462053419641720453ull, 8070977453469788952ull, 8790364027498181942ull}}, {{4518327484085074505ull, 2788783387276075283ull, 432674889991230191ull, 5493977517186363714ull}}, {{1036223336678955227ull, 17321037289377257816ull, 9764215649343813546ull, 6867471896482954642ull}}, {{1295279170848694034ull, 12427924574866796462ull, 2981897524824991125ull, 8584339870603693303ull}}, {{14644607537062597484ull, 10073295868505441740ull, 8781214980656701309ull, 5365212419127308314ull}}, {{18305759421328246854ull, 17203305854059190079ull, 1753146688966100828ull, 6706515523909135393ull}}, {{18270513258232920664ull, 3057388243864435983ull, 6803119379635013940ull, 8383144404886419241ull}}, {{18336599814036657271ull, 11134239689270048297ull, 15781164658340353472ull, 5239465253054012025ull}}, {{9085691712263657877ull, 13917799611587560372ull, 5891397767643278128ull, 6549331566317515032ull}}, {{11357114640329572346ull, 17397249514484450465ull, 7364247209554097660ull, 8186664457896893790ull}}, {{180667622564900860ull, 1649908909698005733ull, 18437712561253474750ull, 5116665286185558618ull}}, {{4837520546633513979ull, 11285758173977282974ull, 13823768664712067629ull, 6395831607731948273ull}}, {{15270272720146668282ull, 272139662189440005ull, 3444652775607920825ull, 7994789509664935342ull}}, {{11849763459305361628ull, 11699302334936869763ull, 15987966040037114227ull, 4996743443540584588ull}}, {{10200518305704314131ull, 10012441900243699300ull, 1538213476336841168ull, 6245929304425730736ull}}, {{12750647882130392664ull, 12515552375304624125ull, 1922766845421051460ull, 7807411630532163420ull}}, {{10274997935545189367ull, 17045592271420165886ull, 10425101315242932970ull, 4879632269082602137ull}}, {{3620375382576710901ull, 12083618302420431550ull, 17643062662481054117ull, 6099540336353252671ull}}, {{13748841265075664434ull, 1269464822743375725ull, 17442142309673929743ull, 7624425420441565839ull}}, {{10898868799885984223ull, 7710944541855691684ull, 17818867971187287945ull, 4765265887775978649ull}}, {{13623585999857480279ull, 14250366695747002509ull, 8438526908701946219ull, 5956582359719973312ull}}, {{3194424444539686637ull, 13201272351256365233ull, 10548158635877432774ull, 7445727949649966640ull}}, {{13525730323905773908ull, 3639109201107840366ull, 6592599147423395484ull, 4653579968531229150ull}}, {{7683790868027441577ull, 4548886501384800458ull, 17464120971134020163ull, 5816974960664036437ull}}, {{381366548179526163ull, 1074422108303612669ull, 7995093158635361492ull, 7271218700830045547ull}}, {{5088394203651795608ull, 1343027635379515836ull, 5382180429866813961ull, 9089023376037556934ull}}, {{12403618414137148063ull, 12368607318180667157ull, 17198920823948922437ull, 5680639610023473083ull}}, {{1669464962389271367ull, 1625701092443670235ull, 16886965011508765143ull, 7100799512529341354ull}}, {{15921889258268752920ull, 15867184420836751505ull, 11885334227531180620ull, 8875999390661676693ull}}, {{3033651758776888719ull, 693618226168193883ull, 9734176901420681840ull, 5547499619163547933ull}}, {{17627122753753274611ull, 867022782710242353ull, 16779407145203240204ull, 6934374523954434916ull}}, {{8198845386909429552ull, 1083778478387802942ull, 2527514857794498639ull, 8667968154943043646ull}}, {{512592348391005566ull, 7594890576633458695ull, 15414754841403725361ull, 5417480096839402278ull}}, {{14475798490770920669ull, 14105299239219211272ull, 10045071514899880893ull, 6771850121049252848ull}}, {{18094748113463650837ull, 3796565993741850378ull, 12556339393624851117ull, 8464812651311566060ull}}, {{15920903589342169677ull, 4678696755302350438ull, 17071084157870307756ull, 5290507907069728787ull}}, {{10677757449822936288ull, 5848370944127938048ull, 16727169178910496791ull, 6613134883837160984ull}}, {{13347196812278670360ull, 2698777661732534656ull, 2462217399928569373ull, 8266418604796451231ull}}, {{8341998007674168975ull, 3992579047796528112ull, 8456414902596437714ull, 5166511627997782019ull}}, {{10427497509592711219ull, 14214095846600435948ull, 5958832609818159238ull, 6458139534997227524ull}}, {{13034371886990889024ull, 8544247771395769127ull, 7448540762272699048ull, 8072674418746534405ull}}, {{15064011457010387496ull, 5340154857122355704ull, 6961180985634130857ull, 5045421511716584003ull}}, {{383270247553432754ull, 11286879589830332535ull, 4089790213615275667ull, 6306776889645730004ull}}, {{14314145864723954654ull, 9496913468860527764ull, 5112237767019094584ull, 7883471112057162505ull}}, {{18169713202307247467ull, 5935570918037829852ull, 14724363650455403875ull, 4927169445035726565ull}}, {{4265397429174507718ull, 2807777629119899412ull, 4570396507787091132ull, 6158961806294658207ull}}, {{5331746786468134647ull, 3509722036399874265ull, 1101309616306476011ull, 7698702257868322759ull}}, {{14861556787611053915ull, 18334477337245779079ull, 7605847537832629362ull, 4811688911167701724ull}}, {{13965259966086429489ull, 13694724634702448041ull, 9507309422290786703ull, 6014611138959627155ull}}, {{3621516902325873149ull, 12506719774950672148ull, 7272450759436095475ull, 7518263923699533944ull}}, {{11486820100808446526ull, 5510856850130476140ull, 4545281724647559672ull, 4698914952312208715ull}}, {{14358525126010558158ull, 6888571062663095175ull, 1069916137382061686ull, 5873643690390260894ull}}, {{13336470389085809793ull, 17834085865183644777ull, 10560767208582352915ull, 7342054612987826117ull}}, {{2835529931075098529ull, 17680921313052168068ull, 17812645029155329048ull, 9177568266234782646ull}}, {{10995578243776712389ull, 11050575820657605042ull, 6521217124794692751ull, 5735980166396739154ull}}, {{4521100767866114678ull, 9201533757394618399ull, 17374893442848141747ull, 7169975207995923942ull}}, {{1039689941405255444ull, 6890231178315885095ull, 12495244766705401376ull, 8962469009994904928ull}}, {{7567335241019366509ull, 4306394486447428184ull, 7809527979190875860ull, 5601543131246815580ull}}, {{9459169051274208136ull, 5382993108059285230ull, 9761909973988594825ull, 7001928914058519475ull}}, {{2600589277237984361ull, 11340427403501494442ull, 7590701449058355627ull, 8752411142573149344ull}}, {{6237054316701128130ull, 4781924117974740074ull, 4744188405661472267ull, 5470256964108218340ull}}, {{17019689932731185970ull, 1365719129041037188ull, 5930235507076840334ull, 6837821205135272925ull}}, {{2827868342204430847ull, 10930520948156072294ull, 12024480402273438321ull, 8547276506419091156ull}}, {{15602475769159932991ull, 18360790638666014943ull, 16738672288275674758ull, 5342047816511931972ull}}, {{14891408693022528335ull, 13727616261477742871ull, 2476596286635041832ull, 6677559770639914966ull}}, {{14002574847850772515ull, 17159520326847178589ull, 12319117395148578098ull, 8346949713299893707ull}}, {{11057452289120426774ull, 15336386222706874522ull, 5393605362754167359ull, 5216843570812433567ull}}, {{4598443324545757659ull, 14558796759956205249ull, 2130320685015321295ull, 6521054463515541959ull}}, {{10359740174109584978ull, 13586809931517868657ull, 16497958911551315331ull, 8151318079394427448ull}}, {{18004052654886960371ull, 6185913197984973958ull, 10311224319719572082ull, 5094573799621517155ull}}, {{13281693781753924656ull, 16955763534335993256ull, 8277344381222077198ull, 6368217249526896444ull}}, {{16602117227192405820ull, 11971332381065215762ull, 10346680476527596498ull, 7960271561908620555ull}}, {{14988009285422641542ull, 12093768756593147755ull, 4160832288616053859ull, 4975169726192887847ull}}, {{14123325588350914023ull, 10505524927314046790ull, 589354342342679420ull, 6218962157741109809ull}}, {{8430784948583866721ull, 13131906159142558488ull, 5348378946355737179ull, 7773702697176387261ull}}, {{5269240592864916701ull, 5901598340250405103ull, 5648579850686029689ull, 4858564185735242038ull}}, {{1974864722653757972ull, 11988683943740394283ull, 16284096850212312919ull, 6073205232169052547ull}}, {{16303638958599361176ull, 10374168911248104949ull, 15743435044338003245ull, 7591506540211315684ull}}, {{12495617358338294687ull, 8789698578743759545ull, 616274865856476220ull, 4744691587632072303ull}}, {{1784463642640704647ull, 10987123223429699432ull, 14605401637602758987ull, 5930864484540090378ull}}, {{2230579553300880809ull, 9122218010859736386ull, 9033380010148672926ull, 7413580605675112973ull}}, {{6005798239240438410ull, 1089700238359947337ull, 7951705515556614531ull, 4633487878546945608ull}}, {{12118933817477935916ull, 15197183353232097883ull, 9939631894445768163ull, 5791859848183682010ull}}, {{10536981253420031991ull, 14384793173112734450ull, 3201167831202434396ull, 7239824810229602513ull}}, {{3947854529920264181ull, 17980991466390918063ull, 8613145807430430899ull, 9049781012787003141ull}}, {{9384938108841246969ull, 8932276657280629837ull, 7689059138857713264ull, 5656113132991876963ull}}, {{16342858654478946615ull, 11165345821600787296ull, 4999637905144753676ull, 7070141416239846204ull}}, {{1981829244389131653ull, 13956682277000984121ull, 6249547381430942095ull, 8837676770299807755ull}}, {{12767858323811677043ull, 15640455450766696931ull, 1600124104180644857ull, 5523547981437379847ull}}, {{11348136886337208400ull, 5715511258176207452ull, 15835213185507969784ull, 6904434976796724808ull}}, {{14185171107921510500ull, 7144389072720259315ull, 1347272408175410614ull, 8630543720995906011ull}}, {{6559888933237250111ull, 18300301225732325784ull, 16982946319605489297ull, 5394089825622441256ull}}, {{8199861166546562638ull, 9040318476883243518ull, 2781938825797310006ull, 6742612282028051571ull}}, {{1026454421328427489ull, 2077026059249278590ull, 17312481587528801220ull, 8428265352535064463ull}}, {{14476592068612430893ull, 10521513323885574926ull, 17737830019846582618ull, 5267665845334415289ull}}, {{8872368048910762808ull, 3928519618002192850ull, 8337229469526064561ull, 6584582306668019112ull}}, {{1867088024283677702ull, 9522335540930128967ull, 10421536836907580701ull, 8230727883335023890ull}}, {{8084459042818380420ull, 8257302722295024556ull, 11125146541494625842ull, 5144204927084389931ull}}, {{10105573803522975525ull, 1098256366014004887ull, 9294747158440894399ull, 6430256158855487414ull}}, {{8020281235976331502ull, 15207878512799669821ull, 2395061911196342190ull, 8037820198569359268ull}}, {{7318518781698901141ull, 4893238052072405734ull, 10720285731352489677ull, 5023637624105849542ull}}, {{18371520513978402234ull, 10728233583517895071ull, 4176985127335836288ull, 6279547030132311928ull}}, {{18352714624045614888ull, 13410291979397368839ull, 5221231409169795360ull, 7849433787665389910ull}}, {{18387975667669591161ull, 8381432487123355524ull, 17098327686013285812ull, 4905896117290868693ull}}, {{4538225510877437336ull, 10476790608904194406ull, 7537851552234443553ull, 6132370146613585867ull}}, {{14896153925451572478ull, 17707674279557630911ull, 4810628421865666537ull, 7665462683266982334ull}}, {{16227625231048314655ull, 4149767397082437463ull, 16841700818948205298ull, 4790914177041863958ull}}, {{15672845520383005414ull, 14410581283207822637ull, 11828753986830480814ull, 5988642721302329948ull}}, {{5755998845196593056ull, 8789854567155002489ull, 14785942483538101018ull, 7485803401627912435ull}}, {{15126714324316340420ull, 10105345122899264459ull, 6935371042997619184ull, 4678627126017445272ull}}, {{14296706886968037621ull, 12631681403624080574ull, 8669213803747023980ull, 5848283907521806590ull}}, {{8647511571855271218ull, 15789601754530100718ull, 1613145217829004167ull, 7310354884402258238ull}}, {{1586017427964313214ull, 15125316174735237994ull, 11239803559141031017ull, 9137943605502822797ull}}, {{5602946910905083663ull, 2535793581568441890ull, 9330720233676838338ull, 5711214753439264248ull}}, {{16227055675486130387ull, 12393114013815328170ull, 11663400292096047922ull, 7139018441799080310ull}}, {{11060447557502887175ull, 6268020480414384405ull, 5355878328265284095ull, 8923773052248850388ull}}, {{9218622732652998437ull, 10835041827900072109ull, 12570795992020578367ull, 5577358157655531492ull}}, {{16134964434243635950ull, 8932116266447702232ull, 15713494990025722959ull, 6971697697069414365ull}}, {{1721961469094993321ull, 6553459314632239887ull, 5806810682249989987ull, 8714622121336767957ull}}, {{7993754945825452682ull, 1790069062431455977ull, 5935099685619937694ull, 5446638825835479973ull}}, {{14603879700709203756ull, 11460958364894095779ull, 12030560625452310021ull, 6808298532294349966ull}}, {{13643163607459116791ull, 491139900835456012ull, 5814828744960611719ull, 8510373165367937458ull}}, {{17750349291516723803ull, 7224491465663241863ull, 8245953984027770228ull, 5318983228354960911ull}}, {{17576250595968516849ull, 9030614332079052329ull, 5695756461607324881ull, 6648729035443701139ull}}, {{8135255189678482349ull, 15899953933526203316ull, 2508009558581768197ull, 8310911294304626424ull}}, {{14307906530403827277ull, 12243314217667571024ull, 1567505974113605123ull, 5194319558940391515ull}}, {{17884883163004784096ull, 10692456753657075876ull, 15794440522924170116ull, 6492899448675489393ull}}, {{3909359880046428503ull, 13365570942071344846ull, 5907992598373048933ull, 8116124310844361742ull}}, {{16278407980311181527ull, 10659324848008284480ull, 17527553429265319295ull, 5072577694277726088ull}}, {{1901265901679425292ull, 8712470041582967697ull, 3462697712872097503ull, 6340722117847157611ull}}, {{6988268395526669519ull, 6278901533551321717ull, 18163430196372285591ull, 7925902647308947013ull}}, {{6673510756417862402ull, 10841842486110657929ull, 13657986881946372446ull, 4953689154568091883ull}}, {{12953574463949715906ull, 4328931070783546603ull, 12460797584005577654ull, 6192111443210114854ull}}, {{11580282061509756978ull, 14634535875334209062ull, 6352624943152196259ull, 7740139304012643568ull}}, {{2625990270016210208ull, 6840741912870186712ull, 3970390589470122662ull, 4837587065007902230ull}}, {{3282487837520262760ull, 17774299427942509198ull, 14186360273692429135ull, 6046983831259877787ull}}, {{13326481833755104257ull, 17606188266500748593ull, 13121264323688148515ull, 7558729789074847234ull}}, {{1411522118455858305ull, 8698024657349273919ull, 12812476220732480726ull, 4724206118171779521ull}}, {{15599460703351986593ull, 1649158784831816590ull, 2180537220633437196ull, 5905257647714724402ull}}, {{10275953842335207433ull, 2061448481039770738ull, 11949043562646572303ull, 7381572059643405502ull}}, {{11034157169886892550ull, 8205934328290938567ull, 2856466208226719785ull, 4613482537277128439ull}}, {{9181010443931227783ull, 14869103928791061113ull, 17405640815565563443ull, 5766853171596410548ull}}, {{16087949073341422633ull, 13974693892561438487ull, 3310306945747402688ull, 7208566464495513186ull}}, {{15498250323249390387ull, 17468367365701798109ull, 13361255719039029168ull, 9010708080619391482ull}}, {{11992249461244562944ull, 10917729603563623818ull, 12962470842826781134ull, 5631692550387119676ull}}, {{5766939789700927872ull, 4423789967599753965ull, 16203088553533476418ull, 7039615687983899595ull}}, {{11820360755553547744ull, 14753109496354468264ull, 15642174673489457618ull, 8799519609979874494ull}}, {{7387725472220967340ull, 13832379453648930569ull, 5164673152503523107ull, 5499699756237421559ull}}, {{13846342858703597079ull, 12678788298633775307ull, 1844155422202015980ull, 6874624695296776949ull}}, {{12696242554952108445ull, 15848485373292219134ull, 6916880296179907879ull, 8593280869120971186ull}}, {{3323465578417679874ull, 16822832385948718815ull, 8934736203539830328ull, 5370800543200606991ull}}, {{17989390028304263555ull, 2581796408726346902ull, 6556734235997400007ull, 6713500679000758739ull}}, {{13263365498525553635ull, 17062303566190097340ull, 3584231776569362104ull, 8391875848750948424ull}}, {{17512975473433246830ull, 10663939728868810837ull, 2240144860355851315ull, 5244922405469342765ull}}, {{8056161286509394826ull, 8718238642658625643ull, 7411867093872202048ull, 6556153006836678456ull}}, {{5458515589709355628ull, 10897798303323282054ull, 9264833867340252560ull, 8195191258545848070ull}}, {{17246630298850510980ull, 6811123939577051283ull, 1178835148660269946ull, 5121994536591155044ull}}, {{16946601855135750820ull, 17737276961326089912ull, 1473543935825337432ull, 6402493170738943805ull}}, {{2736508245210136909ull, 3724852127948060775ull, 6453615938209059695ull, 8003116463423679756ull}}, {{8627846680897417424ull, 9245561607608619840ull, 13256881998235438117ull, 5001947789639799847ull}}, {{10784808351121771780ull, 16168638027938162704ull, 11959416479366909742ull, 6252434737049749809ull}}, {{13481010438902214725ull, 10987425498067927572ull, 1114212543926473466ull, 7815543421312187262ull}}, {{17649003561168660012ull, 11478826954719842636ull, 14531440895236209628ull, 4884714638320117038ull}}, {{3614510377751273398ull, 14348533693399803296ull, 8940929082190486227ull, 6105893297900146298ull}}, {{4518137972189091748ull, 13323981098322366216ull, 1952789315883331976ull, 7632366622375182873ull}}, {{2823836232618182343ull, 8327488186451478885ull, 12749708368495552245ull, 4770229138984489295ull}}, {{8141481309200115832ull, 15021046251491736510ull, 11325449442192052402ull, 5962786423730611619ull}}, {{953479599645368982ull, 9552935777509894830ull, 9545125784312677599ull, 7453483029663264524ull}}, {{14430982805060519326ull, 12888113888584766124ull, 15189075652050199307ull, 4658426893539540327ull}}, {{18038728506325649157ull, 11498456342303569751ull, 14374658546635361230ull, 5823033616924425409ull}}, {{17936724614479673543ull, 5149698391024686381ull, 4133265128012037826ull, 7278792021155531762ull}}, {{8585847712817428216ull, 15660495025635633785ull, 14389953446869823090ull, 9098490026444414702ull}}, {{16895369866579362395ull, 14399495409449659019ull, 4382034885866251527ull, 5686556266527759189ull}}, {{16507526314796815090ull, 13387683243384685870ull, 10089229625760202313ull, 7108195333159698986ull}}, {{11411035856641243054ull, 2899545998948693626ull, 3388164995345477084ull, 8885244166449623733ull}}, {{11743583428828164813ull, 11035588286197709324ull, 4423446131304617129ull, 5553277604031014833ull}}, {{14679479286035206016ull, 18406171376174524559ull, 10140993682558159315ull, 6941597005038768541ull}}, {{13737663089116619616ull, 18396028201790767795ull, 17287928121625087048ull, 8676996256298460676ull}}, {{6280196421484193308ull, 11497517626119229872ull, 1581583039160903597ull, 5423122660186537923ull}}, {{7850245526855241635ull, 536838977366873628ull, 15812036854233293209ull, 6778903325233172403ull}}, {{9812806908569052044ull, 5282734740135979939ull, 15153360049364228607ull, 8473629156541465504ull}}, {{3827161308641963576ull, 10219238240226069318ull, 9470850030852642879ull, 5296018222838415940ull}}, {{14007323672657230277ull, 8162361781855198743ull, 11838562538565803599ull, 6620022778548019925ull}}, {{12897468572394149943ull, 5591266208891610525ull, 963145117925090787ull, 8275028473185024907ull}}, {{10366760866960037666ull, 1188698371343562626ull, 16742866763199039406ull, 5171892795740640566ull}}, {{3735079046845271275ull, 10709245001034229091ull, 11705211417144023449ull, 6464865994675800708ull}}, {{57162790129201189ull, 17998242269720174268ull, 14631514271430029311ull, 8081082493344750885ull}}, {{9259098780685526552ull, 18166430446216190773ull, 11450539428857462271ull, 5050676558340469303ull}}, {{16185559494284296093ull, 18096352039342850562ull, 9701488267644439935ull, 6313345697925586629ull}}, {{11008577331000594309ull, 18008754030751175299ull, 16738546352982937823ull, 7891682122406983286ull}}, {{4574517822661677491ull, 18173000296860566418ull, 5849905452186948235ull, 4932301326504364554ull}}, {{14941519315181872672ull, 18104564352648320118ull, 16535753852088461102ull, 6165376658130455692ull}}, {{9453527107122565031ull, 13407333403955624340ull, 2222948241401024762ull, 7706720822663069616ull}}, {{15131826478806378953ull, 12991269395899653116ull, 1389342650875640476ull, 4816700514164418510ull}}, {{468039024798422075ull, 16239086744874566396ull, 10960050350449326403ull, 6020875642705523137ull}}, {{585048780998027594ull, 15687172412665820091ull, 18311748956489045908ull, 7526094553381903921ull}}, {{16506556552619624910ull, 581110721061361748ull, 4527314070164571837ull, 4703809095863689951ull}}, {{2186451617064979522ull, 5338074419754090090ull, 1047456569278326892ull, 5879761369829612439ull}}, {{11956436558186000210ull, 6672593024692612612ull, 15144378766880072327ull, 7349701712287015548ull}}, {{14945545697732500262ull, 3729055262438377861ull, 483729384890538793ull, 9187127140358769436ull}}, {{11646809070296506616ull, 13859874585092455923ull, 9525702902411362553ull, 5741954462724230897ull}}, {{9946825319443245366ull, 3489785176083406192ull, 16518814646441591096ull, 7177443078405288621ull}}, {{12433531649304056707ull, 4362231470104257740ull, 6813460252769825158ull, 8971803848006610777ull}}, {{16994329317669811250ull, 16561452724097324799ull, 15787627704049610483ull, 5607377405004131735ull}}, {{16631225628659876159ull, 16090129886694268095ull, 15122848611634625200ull, 7009221756255164669ull}}, {{16177346017397457294ull, 1665918284658283503ull, 5068502709261117789ull, 8761527195318955837ull}}, {{17028370288514492665ull, 3347041937125121141ull, 5473657202501892570ull, 5475954497074347398ull}}, {{7450404805360952119ull, 13407174458261177235ull, 16065443539982141520ull, 6844943121342934247ull}}, {{4701319988273802245ull, 16758968072826471544ull, 15470118406550288996ull, 8556178901678667809ull}}, {{2938324992671126403ull, 1250983008661768907ull, 2751294976452848767ull, 5347611813549167381ull}}, {{17507964296121071716ull, 15398786816109374845ull, 8050804738993448862ull, 6684514766936459226ull}}, {{8049897314869175933ull, 10025111483281942749ull, 840133886887035270ull, 8355643458670574033ull}}, {{7337028831006928910ull, 1654008658623826314ull, 12054298725372866804ull, 5222277161669108770ull}}, {{18394658075613436946ull, 2067510823279782892ull, 5844501369861307697ull, 6527846452086385963ull}}, {{4546578520807244566ull, 7196074547527116520ull, 2693940693899246717ull, 8159808065107982454ull}}, {{2841611575504527854ull, 6803389601418141777ull, 15518770988969192910ull, 5099880040692489033ull}}, {{8163700487808047721ull, 17727609038627453029ull, 5563405680929327425ull, 6374850050865611292ull}}, {{14816311628187447555ull, 8324453243002152574ull, 6954257101161659282ull, 7968562563582014115ull}}, {{4648508749189766818ull, 9814469295303733263ull, 2040567679012343099ull, 4980351602238758822ull}}, {{1198949918059820619ull, 7656400600702278675ull, 11774081635620204682ull, 6225439502798448527ull}}, {{15333745452856939485ull, 347128714023072535ull, 10105916026097867949ull, 7781799378498060659ull}}, {{16501119935676669034ull, 2522798455478114286ull, 4010354507097473516ull, 4863624611561287912ull}}, {{11403027882741060485ull, 3153498069347642858ull, 5012943133871841895ull, 6079530764451609890ull}}, {{5030412816571549798ull, 17776930641966717285ull, 15489550954194578176ull, 7599413455564512362ull}}, {{5449851019570912576ull, 11110581651229198303ull, 14292655364798999264ull, 4749633409727820226ull}}, {{2200627756036252816ull, 13888227064036497879ull, 8642447169143973272ull, 5937041762159775283ull}}, {{16585842750327479732ull, 17360283830045622348ull, 6191372943002578686ull, 7421302202699719104ull}}, {{1142779682099899025ull, 6238491375351126064ull, 3869608089376611679ull, 4638313876687324440ull}}, {{1428474602624873781ull, 3186428200761519676ull, 4837010111720764599ull, 5797892345859155550ull}}, {{1785593253281092226ull, 17818093306234063307ull, 15269634676505731556ull, 7247365432323944437ull}}, {{16067049621883528994ull, 3825872559083027517ull, 5251985290350000734ull, 9059206790404930547ull}}, {{12347749022890899573ull, 16226228404709055910ull, 976647797255056506ull, 5662004244003081592ull}}, {{6211314241758848658ull, 11059413469031544080ull, 1220809746568820633ull, 7077505305003851990ull}}, {{7764142802198560823ull, 18435952854716818004ull, 10749384220065801599ull, 8846881631254814987ull}}, {{14075961288228876323ull, 18439999561839093108ull, 4412522128327432047ull, 5529301019534259367ull}}, {{17594951610286095403ull, 18438313433871478481ull, 903966641981902155ull, 6911626274417824209ull}}, {{8158631457575455542ull, 18436205773911960198ull, 5741644320904765598ull, 8639532843022280261ull}}, {{487458642557271810ull, 6910942590267587220ull, 5894370709779172451ull, 5399708026888925163ull}}, {{609323303196589762ull, 4026992219407096121ull, 2756277368796577660ull, 6749635033611156454ull}}, {{5373340147423125106ull, 5033740274258870151ull, 12668718747850497883ull, 8437043792013945567ull}}, {{10275866619780535048ull, 840244662198099892ull, 14835478245047643033ull, 5273152370008715979ull}}, {{12844833274725668810ull, 5661991846175012769ull, 13932661787882165887ull, 6591440462510894974ull}}, {{2220983538124922300ull, 2465803789291378058ull, 8192455197997931551ull, 8239300578138618718ull}}, {{5999800729755464342ull, 8458656395948193142ull, 508598480321319315ull, 5149562861336636699ull}}, {{16723122949049106235ull, 5961634476507853523ull, 14470806155683812856ull, 6436953576670795873ull}}, {{16292217667883994889ull, 7452043095634816904ull, 4253449639322602358ull, 8046191970838494842ull}}, {{10182636042427496806ull, 45840916344372661ull, 7270092043004014378ull, 5028869981774059276ull}}, {{17339981071461758911ull, 9280673182285241634ull, 9087615053755017972ull, 6286087477217574095ull}}, {{12451604302472422831ull, 11600841477856552043ull, 6747832798766384561ull, 7857609346521967619ull}}, {{5476409679831570318ull, 332996896019263171ull, 1911552490015296399ull, 4911005841576229762ull}}, {{2233826081362074993ull, 14251304175306242676ull, 11612812649373896306ull, 6138757301970287202ull}}, {{2792282601702593741ull, 8590758182278027537ull, 5292643774862594575ull, 7673446627462859003ull}}, {{13274391672132590848ull, 12286752891564849066ull, 1002059350075427657ull, 4795904142164286877ull}}, {{7369617553310962752ull, 1523383059173897621ull, 5864260206021672476ull, 5994880177705358596ull}}, {{13823707960066091344ull, 1904228823967372026ull, 7330325257527090595ull, 7493600222131698245ull}}, {{13251503493468694994ull, 17331044079475465180ull, 6887296295168125573ull, 4683500138832311403ull}}, {{16564379366835868743ull, 7828747044062167763ull, 3997434350532769063ull, 5854375173540389254ull}}, {{16093788190117448024ull, 5174247786650321800ull, 14220164975020737137ull, 7317968966925486567ull}}, {{1670491163937258414ull, 11079495751740290155ull, 13163520200348533517ull, 9147461208656858209ull}}, {{17184958041956644173ull, 9230527854051375298ull, 1309671097576751592ull, 5717163255410536381ull}}, {{12257825515591029408ull, 11538159817564219123ull, 6248774890398327394ull, 7146454069263170476ull}}, {{10710595876061398856ull, 5199327735100498096ull, 7810968612997909243ull, 8933067586578963095ull}}, {{6694122422538374285ull, 943736825224117358ull, 11799384410764775133ull, 5583167241611851934ull}}, {{17591025065027743665ull, 5791357049957534601ull, 5525858476601193108ull, 6978959052014814918ull}}, {{8153723276002515869ull, 7239196312446918252ull, 16130695132606267193ull, 8723698815018518647ull}}, {{14319449084356348226ull, 16053712741347793667ull, 16999213485519998851ull, 5452311759386574154ull}}, {{13287625337018047378ull, 15455454908257354180ull, 12025644820045222756ull, 6815389699233217693ull}}, {{16609531671272559223ull, 872574561612141109ull, 1196997969774364734ull, 8519237124041522117ull}}, {{12686800303759043467ull, 14380417156289751905ull, 3053966740322671910ull, 5324523202525951323ull}}, {{2023442324416640621ull, 8752149408507414074ull, 17652516480685503600ull, 6655654003157439153ull}}, {{11752674942375576584ull, 10940186760634267592ull, 8230587545574715788ull, 8319567503946798942ull}}, {{7345421838984735365ull, 16060988762251193053ull, 532431197556809463ull, 5199729689966749339ull}}, {{13793463317158307111ull, 15464549934386603412ull, 14500597052228175541ull, 6499662112458436673ull}}, {{17241829146447883888ull, 5495629362701090553ull, 4290688260003055715ull, 8124577640573045842ull}}, {{3858614188888845574ull, 1128925342474487644ull, 7293366180929297726ull, 5077861025358153651ull}}, {{4823267736111056968ull, 10634528714947885363ull, 4505021707734234253ull, 6347326281697692064ull}}, {{1417398651711433305ull, 17904846912112244608ull, 5631277134667792816ull, 7934157852122115080ull}}, {{885874157319645816ull, 11190529320070152880ull, 3519548209167370510ull, 4958848657576321925ull}}, {{1107342696649557270ull, 4764789613232915292ull, 9011121279886601042ull, 6198560821970402406ull}}, {{1384178370811946587ull, 15179359053395919923ull, 2040529563003475494ull, 7748201027463003008ull}}, {{17006012546253324281ull, 4875413389945062047ull, 1275330976877172184ull, 4842625642164376880ull}}, {{16645829664389267447ull, 6094266737431327559ull, 1594163721096465230ull, 6053282052705471100ull}}, {{16195601062059196405ull, 16841205458643935257ull, 1992704651370581537ull, 7566602565881838875ull}}, {{3204721636145915897ull, 3608224384011377680ull, 17386341471602471125ull, 4729126603676149296ull}}, {{4005902045182394872ull, 9121966498441610004ull, 3286182765793537290ull, 5911408254595186621ull}}, {{5007377556477993589ull, 2179086086197236697ull, 8719414475669309517ull, 7389260318243983276ull}}, {{14658826018867215754ull, 3667771813086966887ull, 14673006084148094256ull, 4618287698902489547ull}}, {{13711846505156631788ull, 4584714766358708609ull, 13729571586757729916ull, 5772859623628111934ull}}, {{3304750076163626023ull, 5730893457948385762ull, 7938592446592386587ull, 7216074529535139918ull}}, {{13354309632059308336ull, 2551930804008094298ull, 699868521385707426ull, 9020093161918924898ull}}, {{12958129538464455614ull, 6206642770932446840ull, 5049103844293455045ull, 5637558226199328061ull}}, {{16197661923080569518ull, 12369989482092946454ull, 10923065823794206710ull, 7046947782749160076ull}}, {{11023705366995936089ull, 6239114815761407260ull, 13653832279742758388ull, 8808684728436450095ull}}, {{16113187891227235864ull, 13122818796705655345ull, 15451174202480305848ull, 5505427955272781309ull}}, {{6306426808751881118ull, 16403523495882069182ull, 5478909697818218598ull, 6881784944090976637ull}}, {{17106405547794627205ull, 11281032332997810669ull, 11460323140700161152ull, 8602231180113720796ull}}, {{12997346476585335955ull, 7050645208123631668ull, 16386073999792376528ull, 5376394487571075497ull}}, {{16246683095731669944ull, 8813306510154539585ull, 6647534444458306948ull, 6720493109463844372ull}}, {{6473295814382423718ull, 11016633137693174482ull, 8309418055572883685ull, 8400616386829805465ull}}, {{8657495902416402728ull, 9191238720271928003ull, 16722601330801522063ull, 5250385241768628415ull}}, {{6210183859593115506ull, 6877362381912522100ull, 16291565645074514675ull, 6562981552210785519ull}}, {{7762729824491394382ull, 3985016958963264721ull, 15752771037915755440ull, 8203726940263481899ull}}, {{16380921186375591249ull, 2490635599352040450ull, 7539638889483653198ull, 5127329337664676187ull}}, {{11252779446114713253ull, 12336666536044826371ull, 4812862593427178593ull, 6409161672080845234ull}}, {{9454288289216003662ull, 1585775114773869252ull, 15239450278638749050ull, 8011452090101056542ull}}, {{15132302217614778097ull, 5602795465161056186ull, 4912970405721830252ull, 5007157556313160339ull}}, {{9692005735163696813ull, 7003494331451320233ull, 1529526988724899911ull, 6258946945391450424ull}}, {{16726693187382008920ull, 4142681895886762387ull, 1911908735906124889ull, 7823683681739313030ull}}, {{8148340232900061623ull, 14118391230997696252ull, 15030001015223491767ull, 4889802301087070643ull}}, {{10185425291125077029ull, 13036303020319732411ull, 14175815250601976805ull, 6112252876358838304ull}}, {{8120095595478958382ull, 2460320720117501802ull, 17719769063252471007ull, 7640316095448547880ull}}, {{9686745765601736893ull, 8455229477714520482ull, 11074855664532794379ull, 4775197559655342425ull}}, {{2885060170147395308ull, 5957350828715762699ull, 8511525383829262ull, 5968996949569178032ull}}, {{17441383267966407847ull, 16670060572749479181ull, 10639406729786577ull, 7461246186961472540ull}}, {{13206707551692698857ull, 3501258830327342632ull, 9230021666060892419ull, 4663278866850920337ull}}, {{16508384439615873571ull, 18211631593191342002ull, 16149213101003503427ull, 5829098583563650421ull}}, {{11412108512665066155ull, 18152853473061789599ull, 6351458320972215572ull, 7286373229454563027ull}}, {{9653449622403944790ull, 4244322767617685383ull, 3327636882787881562ull, 9107966536818203784ull}}, {{12950935041643547350ull, 7264387748188441268ull, 2079773051742425976ull, 5692479085511377365ull}}, {{16188668802054434187ull, 9080484685235551585ull, 7211402333105420374ull, 7115598856889221706ull}}, {{6400777947285879022ull, 2127233819689663674ull, 18237624953236551276ull, 8894498571111527132ull}}, {{8612172235481062293ull, 10552893174160815604ull, 2175143558918068739ull, 5559061606944704458ull}}, {{10765215294351327866ull, 8579430449273631601ull, 11942301485502361732ull, 6948827008680880572ull}}, {{18068205136366547737ull, 10724288061592039501ull, 14927876856877952165ull, 8686033760851100715ull}}, {{13598471219442786288ull, 9008523047708718640ull, 7024080026335026151ull, 5428771100531937947ull}}, {{16998089024303482859ull, 6648967791208510396ull, 4168414014491394785ull, 6785963875664922434ull}}, {{2800867206669801958ull, 12922895757438025900ull, 14433889554969019289ull, 8482454844581153042ull}}, {{10973914041023402032ull, 1159280820757684331ull, 13632866990283024960ull, 5301534277863220651ull}}, {{9105706532851864636ull, 1449101025947105414ull, 12429397719426393296ull, 6626917847329025814ull}}, {{2158761129210054987ull, 1811376282433881768ull, 6313375112428215812ull, 8283647309161282268ull}}, {{1349225705756284367ull, 10355482213375951913ull, 13169231482122410690ull, 5177279568225801417ull}}, {{6298218150622743362ull, 3720980729865164083ull, 2626481297370849651ull, 6471599460282251772ull}}, {{3261086669851041299ull, 39539893904067200ull, 3283101621713562064ull, 8089499325352814715ull}}, {{2038179168656900812ull, 24712433690042000ull, 18192839578066833954ull, 5055937078345509196ull}}, {{2547723960821126015ull, 9254262578967328308ull, 4294305398873990826ull, 6319921347931886496ull}}, {{3184654951026407518ull, 2344456186854384577ull, 5367881748592488533ull, 7899901684914858120ull}}, {{13519624390459974459ull, 3771128125997684312ull, 3354926092870305333ull, 4937438553071786325ull}}, {{16899530488074968074ull, 9325596175924493294ull, 8805343634515269570ull, 6171798191339732906ull}}, {{11901041073238934284ull, 2433623183050840810ull, 1783307506289311155ull, 7714747739174666133ull}}, {{12049836689201721832ull, 17661915553902633170ull, 3420410200644513423ull, 4821717336984166333ull}}, {{5838923824647376482ull, 17465708423950903559ull, 8887198769233029683ull, 6027146671230207916ull}}, {{2686968762381832698ull, 17220449511511241545ull, 11108998461541287104ull, 7533933339037759895ull}}, {{13208570522557115196ull, 10762780944694525965ull, 13860653066104386296ull, 4708708336898599934ull}}, {{2675655097914230283ull, 13453476180868157457ull, 8102444295775707062ull, 5885885421123249918ull}}, {{7956254890820175758ull, 7593473189230421013ull, 904683332864858020ull, 7357356776404062398ull}}, {{14557004631952607602ull, 9491841486538026266ull, 10354226202935848333ull, 9196695970505077997ull}}, {{13709813913397767655ull, 8238243938299960368ull, 8777234386048599160ull, 5747934981565673748ull}}, {{17137267391747209569ull, 10297804922874950460ull, 10971542982560748950ull, 7184918726957092185ull}}, {{2974840165974460345ull, 3648884116738912268ull, 18326114746628324092ull, 8981148408696365231ull}}, {{11082647140588813524ull, 11503924609816595975ull, 18371350744283784413ull, 5613217755435228269ull}}, {{9241622907308629001ull, 544847706988581257ull, 9129130375072566805ull, 7016522194294035337ull}}, {{16163714652563174155ull, 5292745652163114475ull, 16023098987268096410ull, 8770652742867544171ull}}, {{7796478648638289895ull, 7919652051029334451ull, 7708593857828866304ull, 5481657964292215107ull}}, {{5133912292370474464ull, 9899565063786668064ull, 5024056303858694976ull, 6852072455365268884ull}}, {{6417390365463093080ull, 12374456329733335080ull, 6280070379823368720ull, 8565090569206586105ull}}, {{4010868978414433175ull, 7734035206083334425ull, 15454259033458075210ull, 5353181605754116315ull}}, {{9625272241445429373ull, 444171970749392223ull, 14706137773395206109ull, 6691477007192645394ull}}, {{7419904283379398812ull, 5166900981864128183ull, 9159300179889231828ull, 8364346258990806743ull}}, {{11554969204753206114ull, 12452685150519855922ull, 12642091640071851748ull, 5227716411869254214ull}}, {{5220339469086731834ull, 15565856438149819903ull, 6579242513235038877ull, 6534645514836567768ull}}, {{1913738317931026889ull, 5622262492405111167ull, 8224053141543798597ull, 8168306893545709710ull}}, {{8113615476347973662ull, 5819757066966888431ull, 528347195037486219ull, 5105191808466068569ull}}, {{5530333327007579173ull, 2663010315281222635ull, 5272120012224245678ull, 6381489760582585711ull}}, {{2301230640332086062ull, 12552134930956304102ull, 1978463996852919193ull, 7976862200728232139ull}}, {{15273327205489717501ull, 927555304206608207ull, 17377441062528932160ull, 4985538875455145086ull}}, {{14479972988434758972ull, 1159444130258260259ull, 12498429291306389392ull, 6231923594318931358ull}}, {{13488280217116060811ull, 1449305162822825324ull, 6399664577278210932ull, 7789904492898664198ull}}, {{17653547172552313815ull, 10129187763619041635ull, 17834848416081045544ull, 4868690308061665123ull}}, {{17455247947263004365ull, 12661484704523802044ull, 17681874501673919026ull, 6085862885077081404ull}}, {{3372315860369203840ull, 6603483843799976748ull, 3655599053382847167ull, 7607328606346351756ull}}, {{11331069449585528208ull, 11044706430016067323ull, 11508121445219055287ull, 4754580378966469847ull}}, {{9552150793554522356ull, 9194197019092696250ull, 9773465788096431205ull, 5943225473708087309ull}}, {{2716816455088377137ull, 16104432292293258217ull, 16828518253547926910ull, 7429031842135109136ull}}, {{13227225330498705471ull, 5453584164255898481ull, 10517823908467454319ull, 4643144901334443210ull}}, {{2698973607841218126ull, 2205294186892485198ull, 3923907848729542091ull, 5803931126668054013ull}}, {{12597089046656298466ull, 16591675788897770209ull, 9516570829339315517ull, 7254913908335067516ull}}, {{1911303253038209370ull, 6904536680840049050ull, 11895713536674144397ull, 9068642385418834395ull}}, {{5806250551576268760ull, 6621178434738724608ull, 5128977951207646296ull, 5667901490886771497ull}}, {{7257813189470335950ull, 8276473043423405760ull, 11022908457436945774ull, 7084876863608464371ull}}, {{9072266486837919938ull, 1122219267424481392ull, 9166949553368794314ull, 8856096079510580464ull}}, {{5670166554273699961ull, 5313073060567688774ull, 5729343470855496446ull, 5535060049694112790ull}}, {{16311080229696900759ull, 15864713362564386775ull, 16385051375424146365ull, 6918825062117640987ull}}, {{15777164268693738045ull, 5995833647923319757ull, 15869628200852795053ull, 8648531327647051234ull}}, {{12166570677147280230ull, 6053239039165768800ull, 14530203643960384812ull, 5405332079779407021ull}}, {{15208213346434100288ull, 7566548798957211000ull, 4327696499668317303ull, 6756665099724258777ull}}, {{563522609333073744ull, 4846499980269125847ull, 10021306643012784533ull, 8445831374655323471ull}}, {{7269730658474252946ull, 5334905496881897606ull, 13180845679524072189ull, 5278644609159577169ull}}, {{18310535359947591990ull, 11280317889529759911ull, 2640999044122926524ull, 6598305761449471462ull}}, {{18276483181507102084ull, 14100397361912199889ull, 12524620842008433963ull, 8247882201811839327ull}}, {{4505272960800856947ull, 6506905341981430979ull, 14745417053896353083ull, 5154926376132399579ull}}, {{1019905182573683279ull, 3521945659049400820ull, 13820085298943053450ull, 6443657970165499474ull}}, {{1274881478217104099ull, 13625804110666526833ull, 8051734586824041004ull, 8054572462706874343ull}}, {{12326015969954159822ull, 17739499606021355078ull, 11949863144406107483ull, 5034107789191796464ull}}, {{6184147925587923969ull, 17562688489099305944ull, 14937328930507634354ull, 6292634736489745580ull}}, {{7730184906984904961ull, 12729988574519356622ull, 224917089424991327ull, 7865793420612181976ull}}, {{219679548438177697ull, 14873771886715679745ull, 140573180890619579ull, 4916120887882613735ull}}, {{4886285453975110025ull, 13980528839967211777ull, 14010774531395438186ull, 6145151109853267168ull}}, {{10719542835896275435ull, 8252289013104238913ull, 17513468164244297733ull, 7681438887316583960ull}}, {{18228929318503641907ull, 7463523642403843272ull, 10945917602652686083ull, 4800899304572864975ull}}, {{4339417574420000768ull, 4717718534577416187ull, 9070710984888469700ull, 6001124130716081219ull}}, {{812585949597613056ull, 5897148168221770234ull, 6726702712683199221ull, 7501405163395101524ull}}, {{5119552236925896064ull, 5991560614352300348ull, 13427561232281775321ull, 4688378227121938452ull}}, {{6399440296157370080ull, 12101136786367763339ull, 16784451540352219151ull, 5860472783902423065ull}}, {{3387614351769324696ull, 10514734964532316270ull, 7145506370158110227ull, 7325590979878028832ull}}, {{13457889976566431678ull, 8531732687238007433ull, 8931882962697637784ull, 9156988724847536040ull}}, {{1493652207712937943ull, 5332332929523754646ull, 5582426851686023615ull, 5723117953029710025ull}}, {{11090437296495948236ull, 2053730143477305403ull, 11589719583034917423ull, 7153897441287137531ull}}, {{9251360602192547391ull, 16402220734628795466ull, 9875463460366258874ull, 8942371801608921914ull}}, {{10393786394797730024ull, 14863073977570385070ull, 10783850681156299700ull, 5588982376005576196ull}}, {{3768860956642386722ull, 132098398253429722ull, 13479813351445374626ull, 6986227970006970245ull}}, {{13934448232657759210ull, 9388495034671562960ull, 3014708634024554570ull, 8732784962508712807ull}}, {{8709030145411099506ull, 10479495415097114754ull, 8801721923906428462ull, 5457990601567945504ull}}, {{1662915644909098575ull, 3875997232016617635ull, 11002152404883035578ull, 6822488251959931880ull}}, {{15913702611418536930ull, 14068368576875547851ull, 13752690506103794472ull, 8528110314949914850ull}}, {{7640221122922891630ull, 8792730360547217407ull, 13207117584742259449ull, 5330068946843696781ull}}, {{4938590385226226633ull, 15602598969111409663ull, 2673838925645660599ull, 6662586183554620977ull}}, {{1561551963105395387ull, 14891562692961874175ull, 7953984675484463653ull, 8328232729443276221ull}}, {{7893499004581953973ull, 11613069692314865311ull, 7277083431391483735ull, 5205145455902047638ull}}, {{5255187737300054562ull, 9904651096966193735ull, 18319726326094130477ull, 6506431819877559547ull}}, {{1957298653197680299ull, 16992499889635130073ull, 18287971889190275192ull, 8133039774846949434ull}}, {{12752526704317019947ull, 10620312431021956295ull, 16041668449171309899ull, 5083149859279343396ull}}, {{11328972361968887030ull, 8663704520350057465ull, 1605341487754585758ull, 6353937324099179246ull}}, {{326157397178945075ull, 1606258613582796024ull, 11230048896548008006ull, 7942421655123974057ull}}, {{203848373236840672ull, 14838969688771411227ull, 101251532701423147ull, 4964013534452483786ull}}, {{14089868521828214552ull, 13937026092536876129ull, 9349936452731554742ull, 6205016918065604732ull}}, {{3777277597003104478ull, 8197910578816319354ull, 11687420565914443428ull, 7756271147582005915ull}}, {{6972484516554328203ull, 14347066148614975404ull, 4998794844482833190ull, 4847669467238753697ull}}, {{8715605645692910253ull, 8710460648913943447ull, 10860179574030929392ull, 6059586834048442121ull}}, {{6282821038688749912ull, 10888075811142429309ull, 18186910485966049644ull, 7574483542560552651ull}}, {{6232606158394162647ull, 16028419418818794126ull, 9060976044515087075ull, 4734052214100345407ull}}, {{17014129734847479117ull, 15423838255096104753ull, 6714534037216470940ull, 5917565267625431759ull}}, {{7432604113277185184ull, 833053745160579326ull, 3781481528093200772ull, 7396956584531789699ull}}, {{33691552370852836ull, 9744030627580137887ull, 57582945844556530ull, 4623097865332368562ull}}, {{13877172495745729757ull, 2956666247620396550ull, 9295350719160471471ull, 5778872331665460702ull}}, {{8123093582827386389ull, 17530890864807659400ull, 2395816362095813530ull, 7223590414581825878ull}}, {{10153866978534232986ull, 12690241544154798442ull, 12218142489474542721ull, 9029488018227282347ull}}, {{10957852880011283520ull, 1013871937455667170ull, 5330496046707895249ull, 5643430011392051467ull}}, {{4473944063159328592ull, 5879025940246971867ull, 2051434039957481157ull, 7054287514240064334ull}}, {{980744060521772836ull, 11960468443736102738ull, 11787664586801627254ull, 8817859392800080417ull}}, {{5224651056253495927ull, 2863606758907676307ull, 449761339109935178ull, 5511162120500050261ull}}, {{1919127801889482004ull, 12802880485489371192ull, 5173887692314806876ull, 6888952650625062826ull}}, {{2398909752361852505ull, 16003600606861713990ull, 15690731652248284403ull, 8611190813281328532ull}}, {{15334376650508321528ull, 7696407370074877291ull, 583335245800401944ull, 5381994258300830333ull}}, {{14556284794708014006ull, 9620509212593596614ull, 5340855075677890334ull, 6727492822876037916ull}}, {{8971983956530241699ull, 2802264478887219960ull, 6676068844597362918ull, 8409366028595047395ull}}, {{5607489972831401062ull, 15586473354586676187ull, 1866700018659657871ull, 5255853767871904622ull}}, {{2397676447611863424ull, 14871405674805957330ull, 11556747060179348147ull, 6569817209839880777ull}}, {{12220467596369605087ull, 13977571075080058758ull, 610875769942021472ull, 8212271512299850972ull}}, {{3026106229303615276ull, 8735981921925036724ull, 9605169393068539228ull, 5132669695187406857ull}}, {{3782632786629519095ull, 10919977402406295905ull, 16618147759763061939ull, 6415837118984258571ull}}, {{9339977001714286772ull, 9038285734580481977ull, 16160998681276439520ull, 8019796398730323214ull}}, {{17366700672139898993ull, 5648928584112801235ull, 5488938157370386796ull, 5012372749206452009ull}}, {{17096689821747485837ull, 7061160730141001544ull, 11472858715140371399ull, 6265465936508065011ull}}, {{2924118203474805680ull, 4214764894248864027ull, 9729387375498076345ull, 7831832420635081264ull}}, {{17968474941667611214ull, 14163443104974009776ull, 6080867109686297715ull, 4894895262896925790ull}}, {{4013849603374962402ull, 13092617862790124317ull, 16824455923962647952ull, 6118619078621157237ull}}, {{9628998022646090906ull, 16365772328487655396ull, 7195511849671146228ull, 7648273848276446547ull}}, {{15241495801008582624ull, 1005235668450008814ull, 2191351896830772441ull, 4780171155172779092ull}}, {{9828497714405952472ull, 5868230603989898922ull, 2739189871038465551ull, 5975213943965973865ull}}, {{3062250106152664782ull, 2723602236559985749ull, 8035673357225469843ull, 7469017429957467331ull}}, {{4219749325559109441ull, 17843152462345848757ull, 2716452839052224699ull, 4668135893723417082ull}}, {{9886372675376274705ull, 17692254559504923042ull, 12618938085670056682ull, 5835169867154271352ull}}, {{3134593807365567573ull, 12891946162526377995ull, 15773672607087570853ull, 7293962333942839190ull}}, {{17753300314489123179ull, 2279874647875808781ull, 10493718722004687759ull, 9117452917428548988ull}}, {{13401655705769395939ull, 8342450682563462344ull, 15781946238107705657ull, 5698408073392843117ull}}, {{16752069632211744923ull, 15039749371631715834ull, 5892374742352468359ull, 7123010091741053897ull}}, {{11716715003409905346ull, 14188000696112256889ull, 11977154446367973353ull, 8903762614676317371ull}}, {{405417849490108986ull, 1949971407429078700ull, 5179878519766289394ull, 5564851634172698357ull}}, {{506772311862636232ull, 11660836296141124183ull, 11086534168135249646ull, 6956064542715872946ull}}, {{14468523445110459002ull, 5352673333321629420ull, 4634795673314286250ull, 8695080678394841183ull}}, {{18266199190048812684ull, 7957106851753406291ull, 9814276323462510762ull, 5434425423996775739ull}}, {{18221062969133627951ull, 723011527836982056ull, 7656159385900750549ull, 6793031779995969674ull}}, {{4329584637707483323ull, 5515450428223615475ull, 346827195521162378ull, 8491289724994962093ull}}, {{400147389353483125ull, 8058842536067147576ull, 2522610006414420438ull, 5307056078121851308ull}}, {{500184236691853906ull, 850181133229158662ull, 3153262508018025548ull, 6633820097652314135ull}}, {{9848602332719593190ull, 1062726416536448327ull, 17776636190304695647ull, 8292275122065392668ull}}, {{13072905485590827600ull, 7581733037976362060ull, 1887025582085658971ull, 5182671951290870418ull}}, {{16341131856988534500ull, 4865480279043064671ull, 11582154014461849522ull, 6478339939113588022ull}}, {{15814728802808280221ull, 15305222385658606647ull, 5254320481222536094ull, 8097924923891985028ull}}, {{16801734529396256994ull, 4954077972609241250ull, 12507322337618860867ull, 5061203077432490642ull}}, {{11778796124890545435ull, 1580911447334163659ull, 6410780885168800276ull, 6326503846790613303ull}}, {{10111809137685793889ull, 1976139309167704574ull, 3401790088033612441ull, 7908129808488266629ull}}, {{1708194692626233277ull, 12764302114298285119ull, 4431961814234701727ull, 4942581130305166643ull}}, {{15970301421064955308ull, 11343691624445468494ull, 928266249365989255ull, 6178226412881458304ull}}, {{10739504739476418327ull, 9567928512129447714ull, 1160332811707486569ull, 7722783016101822880ull}}, {{11323876480600149359ull, 17509170366149374581ull, 725208007317179105ull, 4826739385063639300ull}}, {{319787545468022986ull, 8051404902404554515ull, 906510009146473882ull, 6033424231329549125ull}}, {{14234792487117192445ull, 840884091150917335ull, 5744823529860480257ull, 7541780289161936406ull}}, {{15814274332089327134ull, 12054767603037793094ull, 17425572761444963872ull, 4713612680726210253ull}}, {{10544470878256883109ull, 15068459503797241368ull, 7946907896524041128ull, 5892015850907762817ull}}, {{13180588597821103887ull, 388830306037000094ull, 14545320889082439315ull, 7365019813634703521ull}}, {{7252363710421604050ull, 14321095937828413830ull, 4346593056070885431ull, 9206274767043379402ull}}, {{18367785374295666244ull, 15868213988783840499ull, 7328306678471691298ull, 5753921729402112126ull}}, {{18348045699442194900ull, 10611895449125024816ull, 18383755384944389931ull, 7192402161752640157ull}}, {{4488313050593192009ull, 8653183292978893117ull, 9144636175898323702ull, 8990502702190800197ull}}, {{5111038665834438958ull, 796553539684420294ull, 8021240619150146266ull, 5619064188869250123ull}}, {{15612170369147824505ull, 10219063961460301175ull, 5414864755510294928ull, 7023830236086562654ull}}, {{14903526943007392728ull, 12773829951825376469ull, 15991952981242644468ull, 8779787795108203317ull}}, {{11620547348593314407ull, 17207015756745636101ull, 12300813622490346744ull, 5487367371942627073ull}}, {{690626130459479296ull, 3062025622222493511ull, 1540958972830769719ull, 6859209214928283842ull}}, {{14698340718356512832ull, 17662590083060280600ull, 11149570752893237956ull, 8574011518660354802ull}}, {{9186462948972820520ull, 1815746765057899567ull, 11580167738985661627ull, 5358757199162721751ull}}, {{6871392667788637746ull, 16104741511604538171ull, 9863523655304689129ull, 6698446498953402189ull}}, {{3977554816308409279ull, 6295868834223509002ull, 16941090587558249316ull, 8373058123691752736ull}}, {{7097657778620143704ull, 13158290058244468934ull, 10588181617223905822ull, 5233161327307345460ull}}, {{18095444260129955437ull, 7224490535950810359ull, 13235227021529882278ull, 6541451659134181825ull}}, {{18007619306735056393ull, 18253985206793288757ull, 2708975721630189135ull, 8176814573917727282ull}}, {{13560605075923104198ull, 18326269781886887329ull, 6304795844446256113ull, 5110509108698579551ull}}, {{3115698289621716535ull, 9072779172076445450ull, 3269308787130432238ull, 6388136385873224439ull}}, {{13117994898881921476ull, 2117601928240781004ull, 17921694039195204010ull, 7985170482341530548ull}}, {{17422118848655976731ull, 5935187223577876031ull, 1977686737642226698ull, 4990731551463456593ull}}, {{17165962542392583010ull, 16642356066327120847ull, 7083794440480171276ull, 6238414439329320741ull}}, {{16845767159563340858ull, 2356201009199349443ull, 13466429069027602000ull, 7798018049161650926ull}}, {{8222761465513394084ull, 1472625630749593402ull, 3804832149714863346ull, 4873761280726031829ull}}, {{1055079795036966797ull, 11064154075291767561ull, 9367726205570967086ull, 6092201600907539786ull}}, {{5930535762223596400ull, 4606820557259933643ull, 2486285720108933050ull, 7615252001134424733ull}}, {{1400741842176053798ull, 7490948866714846431ull, 3859771584281777108ull, 4759532500709015458ull}}, {{15585985358002230960ull, 9363686083393558038ull, 14048086517206997193ull, 5949415625886269322ull}}, {{10259109660648012892ull, 16316293622669335452ull, 8336736109653970683ull, 7436769532357836653ull}}, {{15635315574759783866ull, 7891840504954640705ull, 7516303077747425629ull, 4647980957723647908ull}}, {{5709086413167566120ull, 14476486649620688786ull, 9395378847184282036ull, 5809976197154559885ull}}, {{16359730053314233458ull, 18095608312025860982ull, 16355909577407740449ull, 7262470246443199856ull}}, {{11226290529788016014ull, 8784452334750162516ull, 1998142898050123946ull, 9078087808053999821ull}}, {{16239803617972285817ull, 10101968727646239476ull, 3554682320495021418ull, 5673804880033749888ull}}, {{1853010448755805655ull, 3404088872703023538ull, 4443352900618776773ull, 7092256100042187360ull}}, {{11539635097799532877ull, 8866797109306167326ull, 5554191125773470966ull, 8865320125052734200ull}}, {{2600585917697320144ull, 930062174888966675ull, 3471369453608419354ull, 5540825078157958875ull}}, {{17085790452403813892ull, 10385949755465984151ull, 18174269872292687904ull, 6926031347697448593ull}}, {{16745552047077379461ull, 12982437194332480189ull, 8882779285083696168ull, 8657539184621810742ull}}, {{12771813038637056115ull, 8114023246457800118ull, 940051034749922201ull, 5410961990388631714ull}}, {{6741394261441544336ull, 14754215076499638052ull, 10398435830292178559ull, 6763702487985789642ull}}, {{8426742826801930420ull, 13831082827197159661ull, 3774672751010447391ull, 8454628109982237053ull}}, {{7572557275964900465ull, 15561955794639306644ull, 4665013478595223571ull, 5284142568738898158ull}}, {{9465696594956125581ull, 14840758724871745401ull, 15054638885098805272ull, 6605178210923622697ull}}, {{16443806762122544880ull, 104204332380130135ull, 4983240551091342879ull, 8256472763654528372ull}}, {{17194908253967672406ull, 6982656735378663190ull, 12337897381286865107ull, 5160295477284080232ull}}, {{12270263280604814699ull, 4116634900795941084ull, 15422371726608581384ull, 6450369346605100290ull}}, {{15337829100756018374ull, 5145793625994926355ull, 10054592621405950922ull, 8062961683256375363ull}}, {{7280300178758817532ull, 7827807034674216876ull, 3978277379165025374ull, 5039351052035234602ull}}, {{9100375223448521915ull, 561386756487995287ull, 14196218760811057526ull, 6299188815044043252ull}}, {{6763783010883264489ull, 9925105482464769917ull, 17745273451013821907ull, 7873986018805054065ull}}, {{6533207391015734258ull, 3897347917326787246ull, 4173266879242556836ull, 4921241261753158791ull}}, {{17389881275624443630ull, 4871684896658484057ull, 604897580625808141ull, 6151551577191448489ull}}, {{7902293539248390826ull, 10701292139250492976ull, 5367807994209648080ull, 7689439471489310611ull}}, {{4938933462030244266ull, 6688307587031558110ull, 1049036987167336098ull, 4805899669680819132ull}}, {{15397038864392581141ull, 17583756520644223445ull, 1311296233959170122ull, 6007374587101023915ull}}, {{5411240525208562714ull, 12756323613950503499ull, 15474178347731126365ull, 7509218233876279893ull}}, {{1076182319041657744ull, 10278545267932758639ull, 11977204476545647930ull, 4693261396172674933ull}}, {{15180285954084235892ull, 3624809548061172490ull, 1136447540399896201ull, 5866576745215843667ull}}, {{9751985405750519057ull, 9142697953503853517ull, 15255617480782033963ull, 7333220931519804583ull}}, {{16801667775615536725ull, 6816686423452428992ull, 14457835832550154550ull, 9166526164399755729ull}}, {{10501042359759710454ull, 18095487069939931832ull, 2118618367702764737ull, 5729078852749847331ull}}, {{13126302949699638067ull, 8784300782142751078ull, 16483331014910619634ull, 7161348565937309163ull}}, {{7184506650269771775ull, 1757003940823663040ull, 15992477750210886639ull, 8951685707421636454ull}}, {{4490316656418607360ull, 8015656490655871256ull, 5383612575454416245ull, 5594803567138522784ull}}, {{5612895820523259200ull, 14631256631747226974ull, 6729515719318020306ull, 6993504458923153480ull}}, {{16239491812508849808ull, 9065698752829257909ull, 8411894649147525383ull, 8741880573653941850ull}}, {{12455525392031725082ull, 12583590748159368049ull, 9869120174144591268ull, 5463675358533713656ull}}, {{1734348684757492640ull, 15729488435199210062ull, 12336400217680739085ull, 6829594198167142070ull}}, {{11391307892801641608ull, 5826802488716848865ull, 6197128235246148049ull, 8536992747708927588ull}}, {{202038405359944149ull, 15170966601516500301ull, 13096577183883618338ull, 5335620467318079742ull}}, {{4864234025127318090ull, 9740336215040849568ull, 7147349442999747115ull, 6669525584147599678ull}}, {{6080292531409147613ull, 7563734250373674056ull, 18157558840604459702ull, 8336906980184499597ull}}, {{3800182832130717258ull, 115647888056158381ull, 13654317284591481266ull, 5210566862615312248ull}}, {{9361914558590784477ull, 9367931896924973784ull, 17067896605739351582ull, 6513208578269140310ull}}, {{11702393198238480596ull, 2486542834301441422ull, 12111498720319413670ull, 8141510722836425388ull}}, {{2702309730471662469ull, 15389147326720564601ull, 16793058737054409351ull, 5088444201772765867ull}}, {{7989573181516965990ull, 14624748139973317847ull, 16379637402890623785ull, 6360555252215957334ull}}, {{5375280458468819583ull, 4445877119684483597ull, 11251174716758503924ull, 7950694065269946668ull}}, {{5665393295756706191ull, 12002045236657578056ull, 16255356234828840760ull, 4969183790793716667ull}}, {{7081741619695882739ull, 15002556545821972570ull, 15707509275108663046ull, 6211479738492145834ull}}, {{18075549061474629232ull, 9529823645422689904ull, 10411014557031053000ull, 7764349673115182293ull}}, {{11297218163421643270ull, 5956139778389181190ull, 8812727107358102077ull, 4852718545696988933ull}}, {{4898150667422278280ull, 12056860741413864392ull, 15627594902625015500ull, 6065898182121236166ull}}, {{6122688334277847849ull, 15071075926767330490ull, 10311121591426493567ull, 7582372727651545208ull}}, {{8438366227351042810ull, 16336951481870663412ull, 6444450994641558479ull, 4738982954782215755ull}}, {{10547957784188803512ull, 15809503333910941361ull, 3443877724874560195ull, 5923728693477769694ull}}, {{17796633248663392294ull, 15150193148961288797ull, 13528219192947976052ull, 7404660866847212117ull}}, {{13428738789628314136ull, 245498681246029690ull, 10760980004806178985ull, 4627913041779507573ull}}, {{7562551450180616862ull, 4918559369984925017ull, 18062911024435111635ull, 5784891302224384466ull}}, {{14064875331153158981ull, 1536513194053768367ull, 13355266743689113736ull, 7231114127780480583ull}}, {{12969408145514060823ull, 1920641492567210459ull, 12082397411184004266ull, 9038892659725600729ull}}, {{5800037081732594062ull, 5812086951281894441ull, 633969354348920810ull, 5649307912328500456ull}}, {{11861732370593130482ull, 16488480725957143859ull, 792461692936151012ull, 7061634890410625570ull}}, {{10215479444814025198ull, 2163856833736878208ull, 10213949153024964574ull, 8827043613013281962ull}}, {{6384674653008765749ull, 15187468576367712592ull, 10995404239067990762ull, 5516902258133301226ull}}, {{7980843316260957186ull, 9760963683604864932ull, 4520883261980212645ull, 6896127822666626533ull}}, {{9976054145326196483ull, 16812890622933469069ull, 10262790095902653710ull, 8620159778333283166ull}}, {{8540876850042566754ull, 5896370620906030264ull, 1802557791511770665ull, 5387599861458301979ull}}, {{10676096062553208442ull, 11982149294559925734ull, 16088255294671877043ull, 6734499826822877473ull}}, {{4121748041336734745ull, 10366000599772519264ull, 6275261063057682592ull, 8418124783528596842ull}}, {{2576092525835459216ull, 6478750374857824540ull, 8533724182838439524ull, 5261327989705373026ull}}, {{3220115657294324019ull, 8098437968572280675ull, 1443783191693273597ull, 6576659987131716283ull}}, {{17860202626900068736ull, 14734733479142738747ull, 15639787044898755708ull, 8220824983914645353ull}}, {{8856783632598849008ull, 18432580461318987525ull, 2857337875420640461ull, 5138015614946653346ull}}, {{15682665559175949164ull, 9205667521366570694ull, 12795044381130576385ull, 6422519518683316682ull}}, {{10379959912115160647ull, 16118770420135601272ull, 6770433439558444673ull, 8028149398354145853ull}}, {{6487474945071975405ull, 3156702484943668939ull, 6537363908937721873ull, 5017593373971341158ull}}, {{3497657662912581352ull, 8557564124606974078ull, 17395076923026928149ull, 6271991717464176447ull}}, {{13595444115495502497ull, 15308641174186105501ull, 17132160135356272282ull, 7839989646830220559ull}}, {{10802995581398383013ull, 14179586752293703842ull, 17625129112238752032ull, 4899993529268887849ull}}, {{4280372439893202958ull, 17724483440367129803ull, 8196353335016276328ull, 6124991911586109812ull}}, {{738779531439115794ull, 3708860226749360638ull, 10245441668770345411ull, 7656239889482637265ull}}, {{14296795262431611083ull, 12194632504656446ull, 17932616089049935642ull, 4785149930926648290ull}}, {{8647622041184738046ull, 9238615327485596366ull, 13192398074457643744ull, 5981437413658310363ull}}, {{1586155514626146749ull, 11548269159356995458ull, 11878811574644666776ull, 7476796767072887954ull}}, {{5603033215068729622ull, 7217668224598122161ull, 12035943252580304639ull, 4672997979420554971ull}}, {{11615477537263299932ull, 4410399262320264797ull, 10433243047297992895ull, 5841247474275693714ull}}, {{684288866296961203ull, 901313059472943093ull, 3818181772267715311ull, 7301559342844617143ull}}, {{5467047101298589407ull, 14961699379623342578ull, 161041196907256234ull, 9126949178555771429ull}}, {{8028590456739006284ull, 13962748130691977015ull, 2406493757280729098ull, 5704343236597357143ull}}, {{5424052052496369951ull, 8230063126510195461ull, 16843175251883075085ull, 7130429045746696428ull}}, {{11391751084047850342ull, 14899264926565132230ull, 2607224991144292240ull, 8913036307183370536ull}}, {{2508158409102518560ull, 9312040579103207644ull, 1629515619465182650ull, 5570647691989606585ull}}, {{3135198011378148200ull, 2416678687024233747ull, 6648580542758866217ull, 6963309614987008231ull}}, {{17754055569504848962ull, 7632534377207680087ull, 3699039660021194867ull, 8704137018733760289ull}}, {{18013813758581612457ull, 2464490976541106102ull, 13841114833581716552ull, 5440085636708600180ull}}, {{13293895161372239763ull, 3080613720676382628ull, 17301393541977145690ull, 6800107045885750225ull}}, {{16617368951715299704ull, 13074139187700254093ull, 7791683872189268400ull, 8500133807357187782ull}}, {{12691698604035756267ull, 8171336992312658808ull, 258116401690904846ull, 5312583629598242364ull}}, {{15864623255044695334ull, 990799203536047702ull, 322645502113631058ull, 6640729536997802955ull}}, {{10607407031951093359ull, 10461871041274835436ull, 14238364932924202534ull, 8300911921247253693ull}}, {{15853001431824209158ull, 1926983382369384243ull, 11204821092291320536ull, 5188069950779533558ull}}, {{15204565771352873543ull, 2408729227961730304ull, 4782654328509374862ull, 6485087438474416948ull}}, {{558963140481540313ull, 12234283571806938689ull, 5978317910636718577ull, 8106359298093021185ull}}, {{11878567008869432456ull, 728898204738254824ull, 15265663740216418871ull, 5066474561308138240ull}}, {{14848208761086790569ull, 14746180811204982242ull, 635335601560971972ull, 6333093201635172801ull}}, {{9336888914503712404ull, 18432726014006227803ull, 5405855520378602869ull, 7916366502043966001ull}}, {{3529712562351126301ull, 13826296767967586329ull, 14907874746305096553ull, 4947729063777478750ull}}, {{9023826721366295780ull, 3447812904677319199ull, 9411471396026594884ull, 6184661329721848438ull}}, {{6668097383280481820ull, 4309766130846648999ull, 2540967208178467797ull, 7730826662152310548ull}}, {{11085089892191382994ull, 4999446840992849576ull, 10811476541966318181ull, 4831766663845194092ull}}, {{13856362365239228742ull, 10860994569668449874ull, 13514345677457897726ull, 6039708329806492615ull}}, {{8097080919694260120ull, 4352871175230786535ull, 12281246078394984254ull, 7549635412258115769ull}}, {{11978204602449994431ull, 16555602539801405296ull, 758249771355783302ull, 4718522132661322356ull}}, {{14972755753062493039ull, 11471131137896980812ull, 947812214194729128ull, 5898152665826652945ull}}, {{269200617618564682ull, 14338913922371226016ull, 5796451286170799314ull, 7372690832283316181ull}}, {{336500772023205852ull, 8700270366109256712ull, 11857250126140887047ull, 9215863540354145226ull}}, {{210312982514503658ull, 12355198006459367301ull, 12022467347265442308ull, 5759914712721340766ull}}, {{4874577246570517476ull, 15443997508074209126ull, 5804712147227027077ull, 7199893390901675958ull}}, {{15316593595067922653ull, 5469938829810597695ull, 16479262220888559655ull, 8999866738627094947ull}}, {{16490400024558533514ull, 10336240796272705415ull, 7993695878841655832ull, 5624916711641934342ull}}, {{16001314012270778989ull, 12920300995340881769ull, 768747811697293982ull, 7031145889552417928ull}}, {{6166584460056310024ull, 6927004207321326404ull, 960934764621617478ull, 8788932361940522410ull}}, {{13077487324389969573ull, 18164435684857992714ull, 5212270246315898827ull, 5493082726212826506ull}}, {{7123487118632686158ull, 18093858587645102989ull, 15738709844749649342ull, 6866353407766033132ull}}, {{13516044916718245602ull, 13393951197701602928ull, 1226643232227510062ull, 8582941759707541416ull}}, {{8447528072948903501ull, 3759533480136113926ull, 766652020142193789ull, 5364338599817213385ull}}, {{1336038054331353569ull, 9311102868597530312ull, 5570001043605130140ull, 6705423249771516731ull}}, {{1670047567914191961ull, 11638878585746912890ull, 2350815286079024771ull, 8381779062214395914ull}}, {{5655465748373757880ull, 4968456106878126604ull, 6080945572226778386ull, 5238611913883997446ull}}, {{7069332185467197349ull, 15433942170452434063ull, 16824554002138248790ull, 6548264892354996807ull}}, {{4224979213406608783ull, 10069055676210766771ull, 16419006484245423084ull, 8185331115443746009ull}}, {{334768999165436537ull, 15516531834486505040ull, 3344350025012307571ull, 5115831947152341256ull}}, {{418461248956795672ull, 14783978774680743396ull, 4180437531265384464ull, 6394789933940426570ull}}, {{523076561195994589ull, 33229394641377629ull, 14448918950936506389ull, 7993487417425533212ull}}, {{2632765859961190570ull, 2326611380864554970ull, 18253946381190092301ull, 4995929635890958257ull}}, {{12514329361806264021ull, 7519950244508081616ull, 8982374921205451664ull, 6244912044863697822ull}}, {{15642911702257830026ull, 9399937805635102020ull, 2004596614652038772ull, 7806140056079622278ull}}, {{553447777056367958ull, 15098333165376714571ull, 15087930939439687944ull, 4878837535049763923ull}}, {{14526867776602623660ull, 426172383011341597ull, 14248227655872222027ull, 6098546918812204904ull}}, {{4323526665471115863ull, 14367773534046340709ull, 17810284569840277533ull, 7623183648515256130ull}}, {{5008047175133141366ull, 11285701467992656895ull, 15743113874577561362ull, 4764489780322035081ull}}, {{1648372950489038804ull, 4883754798136045311ull, 5843834287939787991ull, 5955612225402543852ull}}, {{15895524243393462217ull, 1493007479242668734ull, 7304792859924734989ull, 7444515281753179815ull}}, {{5323016633693525982ull, 3238972683740361911ull, 11483024565094041224ull, 4652822051095737384ull}}, {{2042084773689519573ull, 4048715854675452389ull, 14353780706367551530ull, 5816027563869671730ull}}, {{7164291985539287370ull, 14284266855199091294ull, 8718853846104663604ull, 7270034454837089663ull}}, {{18178737018778885021ull, 17855333568998864117ull, 6286881289203441601ull, 9087543068546362079ull}}, {{13667553645950497090ull, 4242054452983208217ull, 10846829833393232857ull, 5679714417841476299ull}}, {{3249384002155957650ull, 9914254084656398176ull, 8946851273314153167ull, 7099643022301845374ull}}, {{4061730002694947063ull, 7781131587393109816ull, 1960192054787915651ull, 8874553777877306718ull}}, {{2538581251684341914ull, 2557364232906999683ull, 15060178089524610994ull, 5546596111173316698ull}}, {{17008284619887591105ull, 12420077327988525411ull, 9601850575050987934ull, 6933245138966645873ull}}, {{16648669756432100977ull, 6301724623130880956ull, 16613999237241122822ull, 8666556423708307341ull}}, {{1182046560915287303ull, 17773635944738964310ull, 12689592532489395715ull, 5416597764817692088ull}}, {{10700930237998884936ull, 17605358912496317483ull, 15861990665611744644ull, 6770747206022115110ull}}, {{8764476779071218266ull, 3559954566910845238ull, 10604116295159904998ull, 8463434007527643888ull}}, {{866111968492123513ull, 16060029659601441986ull, 6627572684474940623ull, 5289646254704777430ull}}, {{10306011997469930199ull, 15463351056074414578ull, 17507837892448451587ull, 6612057818380971787ull}}, {{3659142959982636940ull, 14717502801665630319ull, 17273111347133176580ull, 8265072272976214734ull}}, {{9204493377630229944ull, 18421811287895794757ull, 6184008573530847458ull, 5165670170610134209ull}}, {{16117302740465175334ull, 13803892073014967638ull, 12341696735340947227ull, 6457087713262667761ull}}, {{10923256388726693359ull, 12643179072841321644ull, 1592062863894020322ull, 8071359641578334702ull}}, {{16050407279808959158ull, 12513672938953213931ull, 14830097345215926413ull, 5044599775986459188ull}}, {{15451323081333811043ull, 1807033118409353702ull, 90877607810356401ull, 6305749719983073986ull}}, {{10090781814812487996ull, 6870477416439080032ull, 9336969046617721309ull, 7882187149978842482ull}}, {{6306738634257804997ull, 6599891394488118972ull, 10447291672563463722ull, 4926366968736776551ull}}, {{7883423292822256247ull, 17473236279964924523ull, 8447428572276941748ull, 6157958710920970689ull}}, {{5242593097600432404ull, 3394801276246604038ull, 15170971733773565090ull, 7697448388651213361ull}}, {{17111678741282433965ull, 6733436816081515427ull, 2564328305967396325ull, 4810905242907008351ull}}, {{16777912408175654552ull, 13028482038529282188ull, 17040468437741409118ull, 6013631553633760438ull}}, {{2525646436510016574ull, 7062230511306826928ull, 12077213510321985590ull, 7517039442042200548ull}}, {{1578529022818760359ull, 18248952124848930542ull, 16771630480806016801ull, 4698149651276375342ull}}, {{11196533315378226256ull, 8976132100778999465ull, 11741166064152745194ull, 5872687064095469178ull}}, {{160608588940619108ull, 1996793089118973524ull, 5453085543336155685ull, 7340858830119336473ull}}, {{200760736175773885ull, 7107677379826104809ull, 11428042947597582510ull, 9176073537649170591ull}}, {{11654690506178328438ull, 18277356417673479217ull, 14060055869889570924ull, 5735045961030731619ull}}, {{733305077440746836ull, 4399951448382297406ull, 12963383818934575752ull, 7168807451288414524ull}}, {{10140003383655709353ull, 5499939310477871757ull, 16204229773668219690ull, 8961009314110518155ull}}, {{8643345123998512298ull, 8049148087476057752ull, 7821800599328943354ull, 5600630821319073847ull}}, {{10804181404998140372ull, 838063072490296382ull, 5165564730733791289ull, 7000788526648842309ull}}, {{4281854719392899657ull, 5659264859040258382ull, 11068641931844627015ull, 8750985658311052886ull}}, {{16511217254902725998ull, 10454569564541243344ull, 2306215188975503980ull, 5469366036444408054ull}}, {{2192277494918855881ull, 13068211955676554181ull, 12106141023074155783ull, 6836707545555510067ull}}, {{7352032887075957755ull, 11723578926168304822ull, 10520990260415306825ull, 8545884431944387584ull}}, {{18430078609704637309ull, 409707801214108657ull, 6575618912759566766ull, 5341177769965242240ull}}, {{9202540206848632924ull, 9735506788372411630ull, 8219523640949458457ull, 6676472212456552800ull}}, {{2279803221706015347ull, 16781069503892902442ull, 10274404551186823071ull, 8345590265570691000ull}}, {{6036563031993647496ull, 17405697467574145882ull, 6421502844491764419ull, 5215993915981681875ull}}, {{16769075826846835178ull, 17145435816040294448ull, 3415192537187317620ull, 6519992394977102344ull}}, {{2514600709848992357ull, 2985050696340816445ull, 4268990671484147026ull, 8149990493721377930ull}}, {{3877468452869314175ull, 6477342703640398182ull, 7279805188104979795ull, 5093744058575861206ull}}, {{14070207602941418527ull, 3484992361123109823ull, 18323128521986000552ull, 6367180073219826507ull}}, {{12976073485249385254ull, 4356240451403887279ull, 18292224634055112786ull, 7958975091524783134ull}}, {{15027574955921947640ull, 7334336300554817453ull, 6820954377857057587ull, 4974359432202989459ull}}, {{4949410639620270838ull, 4556234357266133913ull, 3914506953893934080ull, 6217949290253736824ull}}, {{10798449317952726451ull, 5695292946582667391ull, 4893133692367417600ull, 7772436612817171030ull}}, {{13666559851361535888ull, 3559558091614167119ull, 16893266613011799712ull, 4857772883010731893ull}}, {{12471513795774531956ull, 4449447614517708899ull, 7281525210982585928ull, 6072216103763414867ull}}, {{10977706226290777041ull, 5561809518147136124ull, 4490220495300844506ull, 7590270129704268584ull}}, {{16084438428286511459ull, 8087816967269347981ull, 2806387809563027816ull, 4743918831065167865ull}}, {{6270489980075975611ull, 10109771209086684977ull, 8119670780381172674ull, 5929898538831459831ull}}, {{12449798493522357418ull, 3413841974503580413ull, 5537902457049077939ull, 7412373173539324789ull}}, {{10086967067665167339ull, 18274552298560595422ull, 5767032044869367663ull, 4632733233462077993ull}}, {{3385336797726683365ull, 18231504354773356374ull, 11820476074514097483ull, 5790916541827597491ull}}, {{13455043034013130014ull, 18177694425039307563ull, 10163909074715233950ull, 7238645677284496864ull}}, {{12207117774089024614ull, 13498745994444358646ull, 12704886343394042438ull, 9048307096605621080ull}}, {{3017762590378252480ull, 3825030228100336250ull, 7940553964621276524ull, 5655191935378513175ull}}, {{12995575274827591408ull, 4781287785125420312ull, 5314006437349207751ull, 7068989919223141469ull}}, {{16244469093534489259ull, 1364923712979387486ull, 11254194065113897593ull, 8836237399028926836ull}}, {{5541107165031667883ull, 12382292366680586939ull, 16257243327550961803ull, 5522648374393079272ull}}, {{2314697937862196950ull, 10866179439923345770ull, 1874810085729150638ull, 6903310467991349091ull}}, {{12116744459182521995ull, 4359352263049406404ull, 16178570662443602010ull, 8629138084989186363ull}}, {{16796337323843852055ull, 7336281182833266906ull, 7805763654813557304ull, 5393211303118241477ull}}, {{11772049617950039261ull, 9170351478541583633ull, 14368890586944334534ull, 6741514128897801846ull}}, {{880003967155385364ull, 2239567311322203734ull, 8737741196825642360ull, 8426892661122252308ull}}, {{14385060534754279565ull, 1399729569576377333ull, 14684460284870802283ull, 5266807913201407692ull}}, {{4146267613160685744ull, 15584720017252635379ull, 18355575356088502853ull, 6583509891501759615ull}}, {{571148498023469276ull, 5645841966283630512ull, 18332783176683240663ull, 8229387364377199519ull}}, {{356967811264668297ull, 10446180256568350926ull, 18375518513068107270ull, 5143367102735749699ull}}, {{9669581800935611180ull, 3834353283855662849ull, 18357712122907746184ull, 6429208878419687124ull}}, {{16698663269596901878ull, 4792941604819578561ull, 4500396079925131114ull, 8036511098024608906ull}}, {{3519135515856981818ull, 7607274521439624505ull, 7424433568380594850ull, 5022819436265380566ull}}, {{9010605413248615177ull, 285721114944754823ull, 57169923620967755ull, 6278524295331725708ull}}, {{6651570748133381067ull, 14192209448963107241ull, 71462404526209693ull, 7848155369164657135ull}}, {{15686446763651832927ull, 11175973914815635977ull, 6962193030469962914ull, 4905097105727910709ull}}, {{5773000399282627446ull, 4746595356664769164ull, 13314427306514841547ull, 6131371382159888386ull}}, {{7216250499103284308ull, 1321558177403573551ull, 7419662096288776126ull, 7664214227699860483ull}}, {{11427685589580634549ull, 14661031916159397181ull, 2331445800966791126ull, 4790133892312412802ull}}, {{449548931693629474ull, 9102917858344470669ull, 12137679288063264716ull, 5987667365390516002ull}}, {{5173622183044424746ull, 11378647322930588336ull, 5948727073224305087ull, 7484584206738145003ull}}, {{3233513864402765466ull, 14029183604472699566ull, 1412111411551496727ull, 4677865129211340627ull}}, {{13265264367358232641ull, 12924793487163486553ull, 15600197319721534621ull, 5847331411514175783ull}}, {{2746522403915627089ull, 2320933803672194480ull, 14888560631224530373ull, 7309164264392719729ull}}, {{3433153004894533861ull, 7512853273017631004ull, 4775642733748499254ull, 9136455330490899662ull}}, {{11369092664913859471ull, 83847277208631473ull, 16819834763874975746ull, 5710284581556812288ull}}, {{376307775860160627ull, 9328181133365565150ull, 2578049381134168066ull, 7137855726946015361ull}}, {{9693756756679976592ull, 2436854379852180629ull, 7834247744845097987ull, 8922319658682519201ull}}, {{8364440982138679322ull, 17663935051903470557ull, 16425619886596656001ull, 5576449786676574500ull}}, {{15067237246100737056ull, 8244860759597174484ull, 2085280784536268386ull, 6970562233345718126ull}}, {{387302483916369704ull, 1082703912641692298ull, 11829973017525111291ull, 8713202791682147657ull}}, {{4853750070875118969ull, 16817591009896915350ull, 476204108312112700ull, 5445751744801342286ull}}, {{15290559625448674520ull, 2575244688661592571ull, 9818627172244916684ull, 6807189681001677857ull}}, {{14501513513383455246ull, 3219055860826990714ull, 16884969983733533759ull, 8508987101252097321ull}}, {{13675131964292047433ull, 8929438940657951052ull, 3635577212192376743ull, 5318116938282560826ull}}, {{17093914955365059291ull, 6550112657395050911ull, 13767843552095246737ull, 6647646172853201032ull}}, {{16755707675778936209ull, 12799326840171201543ull, 17209804440119058421ull, 8309557716066501290ull}}, {{17389846325002916987ull, 10305422284320694916ull, 15367813793501799417ull, 5193473572541563306ull}}, {{3290563832544094618ull, 17493463873828256550ull, 9986395205022473463ull, 6491841965676954133ull}}, {{13336576827534894080ull, 17255143823857932783ull, 17094680024705479733ull, 8114802457096192666ull}}, {{15252889544850390656ull, 13090307899124901941ull, 15295861033868312737ull, 5071751535685120416ull}}, {{5231053875780824608ull, 2527826818623963715ull, 673082218625839306ull, 6339689419606400521ull}}, {{1927131326298642856ull, 12383155560134730452ull, 5453038791709687036ull, 7924611774508000651ull}}, {{10427829115791427593ull, 16962844261938982340ull, 1102306235604860445ull, 4952882359067500407ull}}, {{13034786394739284491ull, 7368497272141564213ull, 15212940849788239269ull, 6191102948834375508ull}}, {{2458424938141941902ull, 13822307608604343171ull, 569431988525747470ull, 7738878686042969386ull}}, {{17677416650834571353ull, 4027256236950326577ull, 4967581011255980073ull, 4836799178776855866ull}}, {{8261712758261050479ull, 9645756314615296126ull, 15432848300924750899ull, 6045998973471069832ull}}, {{1103768910971537291ull, 7445509374841732254ull, 844316302446387008ull, 7557498716838837291ull}}, {{14524913624639374519ull, 4653443359276082658ull, 16668598753524849544ull, 4723436698024273306ull}}, {{8932769993944442340ull, 5816804199095103323ull, 11612376405051286122ull, 5904295872530341633ull}}, {{6554276474003165021ull, 16494377285723654962ull, 680412451031943940ull, 7380369840662927042ull}}, {{8708108814679366043ull, 1085613766722508543ull, 5036943800322352867ull, 4612731150414329401ull}}, {{6273449999921819649ull, 15192075263685299391ull, 10907865768830328987ull, 5765913938017911751ull}}, {{3230126481474886657ull, 14378408061179236335ull, 9023146192610523330ull, 7207392422522389689ull}}, {{17872716157125772033ull, 8749638039619269610ull, 15890618759190542067ull, 9009240528152987111ull}}, {{15782133616630995425ull, 3162680765548349554ull, 16849165752135170648ull, 5630775330095616944ull}}, {{10504294983933968473ull, 3953350956935436943ull, 2614713116459411694ull, 7038469162619521181ull}}, {{8518682711490072687ull, 14165060733024071987ull, 7880077414001652521ull, 8798086453274401476ull}}, {{3018333685467601478ull, 1935633930498963136ull, 14148420420605808634ull, 5498804033296500922ull}}, {{3772917106834501847ull, 11642914449978479728ull, 8462153488902484984ull, 6873505041620626153ull}}, {{4716146383543127309ull, 14553643062473099660ull, 15189377879555494134ull, 8591881302025782691ull}}, {{12170963526569230376ull, 4484340895618299383ull, 7187518165508489882ull, 5369925813766114182ull}}, {{10602018389784150066ull, 14828798156377650037ull, 18207769743740388160ull, 6712407267207642727ull}}, {{17864209005657575486ull, 89253621762510930ull, 18148026161248097297ull, 8390509084009553409ull}}, {{15776816646963372583ull, 11584998559670039091ull, 4424987323138978954ull, 5244068177505970881ull}}, {{15109334790276827825ull, 5257876162732773056ull, 10142920172351111597ull, 6555085221882463601ull}}, {{439924414136483165ull, 11184031221843354225ull, 17290336233866277400ull, 8193856527353079501ull}}, {{11804167804903771738ull, 6990019513652096390ull, 13112303155380117327ull, 5121160329595674688ull}}, {{5531837719274938865ull, 4125838373637732584ull, 16390378944225146659ull, 6401450411994593360ull}}, {{6914797149093673581ull, 545611948619777826ull, 2041229606571881708ull, 8001813014993241701ull}}, {{8933434236610933892ull, 9564379504742136949ull, 3581611513321120019ull, 5001133134370776063ull}}, {{15778478814191055269ull, 7343788362500283282ull, 18312072446933563736ull, 6251416417963470078ull}}, {{10499726480884043278ull, 9179735453125354103ull, 13666718521812178862ull, 7814270522454337598ull}}, {{13479858078193608905ull, 1125648639775958410ull, 3930013057705223885ull, 4883919076533960999ull}}, {{7626450560887235323ull, 6018746818147335917ull, 300830303704141952ull, 6104898845667451249ull}}, {{14144749219536432058ull, 7523433522684169896ull, 4987723898057565344ull, 7631123557084314061ull}}, {{8840468262210270036ull, 4702145951677606185ull, 5423170445499672292ull, 4769452223177696288ull}}, {{15662271346190225449ull, 5877682439597007731ull, 6778963056874590365ull, 5961815278972120360ull}}, {{14966153164310393908ull, 11958789067923647568ull, 8473703821093237956ull, 7452269098715150450ull}}, {{9353845727693996192ull, 16697615204307055538ull, 9907750906610661626ull, 4657668186696969031ull}}, {{2468935122762719432ull, 11648646968529043615ull, 7773002614835939129ull, 5822085233371211289ull}}, {{16921226958735563002ull, 725750655379140806ull, 14327939286972311816ull, 7277606541714014111ull}}, {{11928161661564677945ull, 907188319223926008ull, 13298238090288001866ull, 9097008177142517639ull}}, {{7455101038477923716ull, 5178678717942341659ull, 15228927834071083022ull, 5685630110714073524ull}}, {{4707190279670016741ull, 15696720434282702882ull, 589415718879302161ull, 7107037638392591906ull}}, {{15107359886442296734ull, 5785842487571214890ull, 9960141685453903510ull, 8883797047990739882ull}}, {{14053785947453823363ull, 17451209610014173018ull, 10836774571836077597ull, 5552373154994212426ull}}, {{8343860397462503395ull, 7978953957235552561ull, 4322596177940321189ull, 6940466443742765533ull}}, {{15041511515255517148ull, 14585378464971828605ull, 10014931240852789390ull, 8675583054678456916ull}}, {{11706787706248392170ull, 4504175522180004974ull, 15482704062387769177ull, 5422239409174035572ull}}, {{5410112595955714404ull, 10241905421152394122ull, 906636004275159855ull, 6777799261467544466ull}}, {{15986012781799418813ull, 8190695758013104748ull, 10356667042198725627ull, 8472249076834430582ull}}, {{767885951769860950ull, 2813341839544496516ull, 1861230882946815613ull, 5295155673021519114ull}}, {{959857439712326188ull, 8128363317858008549ull, 11549910640538295324ull, 6618944591276898892ull}}, {{5811507818067795638ull, 10160454147322510686ull, 14437388300672869155ull, 8273680739096123615ull}}, {{17467250441574535986ull, 4044440832862875226ull, 15940896715561625078ull, 5171050461935077259ull}}, {{12610691015113394175ull, 14278923077933369841ull, 15314434876024643443ull, 6463813077418846574ull}}, {{1928305713609579006ull, 13236967828989324398ull, 9919671558176028496ull, 8079766346773558218ull}}, {{15040249126288150591ull, 8273104893118327748ull, 10811480742287405714ull, 5049853966733473886ull}}, {{353567334150636623ull, 1118009079543133878ull, 4290978891004481335ull, 6312317458416842358ull}}, {{9665331204543071586ull, 15232569404711081059ull, 14587095650610377476ull, 7890396823021052947ull}}, {{3734988993625725790ull, 296983841089649854ull, 6811091772417791971ull, 4931498014388158092ull}}, {{13892108278886933045ull, 14206287856644226029ull, 8513864715522239963ull, 6164372517985197615ull}}, {{3530077293326502594ull, 13146173802377894633ull, 6030644875975412050ull, 7705465647481497019ull}}, {{13735513354397533881ull, 12828044644913572049ull, 1463310038270938579ull, 4815916029675935637ull}}, {{3334333637714753640ull, 11423369787714577158ull, 6440823566266061128ull, 6019895037094919546ull}}, {{13391289083998217857ull, 14279212234643221447ull, 17274401494687352218ull, 7524868796368649432ull}}, {{15287084705139968017ull, 13536193665079401308ull, 10796500934179595136ull, 4703042997730405895ull}}, {{662111807715408405ull, 16920242081349251636ull, 8883940149297106016ull, 5878803747163007369ull}}, {{827639759644260506ull, 2703558527977012929ull, 15716611205048770425ull, 7348504683953759211ull}}, {{5646235717982713537ull, 7991134178398654065ull, 15034077987883575127ull, 9185630854942199014ull}}, {{15058112369807665721ull, 11911987889140240646ull, 4784612723999846550ull, 5741019284338874384ull}}, {{9599268425404806343ull, 5666612824570525000ull, 5980765904999808188ull, 7176274105423592980ull}}, {{11999085531756007928ull, 7083266030713156250ull, 7475957381249760235ull, 8970342631779491225ull}}, {{12111114475774892859ull, 2121198259982028704ull, 16201688409349569907ull, 5606464144862182015ull}}, {{15138893094718616074ull, 16486555880259699592ull, 15640424493259574479ull, 7008080181077727519ull}}, {{476872294688718476ull, 15996508831897236587ull, 14938844598147080195ull, 8760100226347159399ull}}, {{16438946248676306712ull, 7691975010722078914ull, 16254306901483006978ull, 5475062641466974624ull}}, {{11325310773990607582ull, 391596726547822835ull, 1871139553144207107ull, 6843828301833718281ull}}, {{9544952449060871573ull, 14324553963466942256ull, 6950610459857646787ull, 8554785377292147851ull}}, {{5965595280663044733ull, 6647003217953144958ull, 2038288528197335290ull, 5346740860807592407ull}}, {{16680366137683581725ull, 17532126059296207005ull, 16382918715528832824ull, 6683426076009490508ull}}, {{7015399616822313444ull, 3468413500410707141ull, 2031904320701489415ull, 8354282595011863136ull}}, {{6690467769727639854ull, 9085287465397773819ull, 1269940200438430884ull, 5221426621882414460ull}}, {{3751398693732161914ull, 11356609331747217274ull, 1587425250548038605ull, 6526783277353018075ull}}, {{13912620404019978200ull, 360703609401857880ull, 15819339618467211969ull, 8158479096691272593ull}}, {{8695387752512486375ull, 11754654801944630935ull, 2969558233900925624ull, 5099049435432045371ull}}, {{6257548672213220065ull, 14693318502430788669ull, 17547005847658320742ull, 6373811794290056713ull}}, {{12433621858693912985ull, 9143276091183710028ull, 8098699254290737216ull, 7967264742862570892ull}}, {{16994385698538471424ull, 5714547556989818767ull, 14285059070786486568ull, 4979540464289106807ull}}, {{16631296104745701376ull, 7143184446237273459ull, 13244637820055720306ull, 6224425580361383509ull}}, {{16177434112504738816ull, 18152352594651367632ull, 2720739219787486670ull, 7780531975451729387ull}}, {{10110896320315461760ull, 6733534353229716866ull, 17841363076863036833ull, 4862832484657330866ull}}, {{3415248363539551392ull, 13028603959964533987ull, 13078331809224020233ull, 6078540605821663583ull}}, {{18104118509706602952ull, 2450696894673503771ull, 11736228743102637388ull, 7598175757277079479ull}}, {{9009231059352932893ull, 10755057596025715665ull, 14252671992080230223ull, 4748859848298174674ull}}, {{15873224842618554020ull, 8832135976604756677ull, 8592467953245511971ull, 5936074810372718343ull}}, {{6006472997991028813ull, 6428483952328557943ull, 6128898923129502060ull, 7420093512965897929ull}}, {{10671574651385474864ull, 13241174507060124522ull, 15359776873024408547ull, 4637558445603686205ull}}, {{4116096277377067772ull, 11939782115397767749ull, 5364663035998346972ull, 5796948057004607757ull}}, {{9756806365148722619ull, 14924727644247209686ull, 11317514813425321619ull, 7246185071255759696ull}}, {{2972635919581127466ull, 14044223536881624204ull, 14146893516781652024ull, 9057731339069699620ull}}, {{11081269486592980474ull, 8777639710551015127ull, 18065180484843308323ull, 5661082086918562262ull}}, {{9239900839813837689ull, 6360363619761381005ull, 13358103569199359596ull, 7076352608648202828ull}}, {{16161562068194685015ull, 7950454524701726256ull, 16697629461499199495ull, 8845440760810253535ull}}, {{10100976292621678135ull, 11886563105579660766ull, 17353547441078081540ull, 5528400475506408459ull}}, {{3402848328922321860ull, 14858203881974575958ull, 17080248282920214021ull, 6910500594383010574ull}}, {{13476932448007678133ull, 4737696797186056235ull, 12126938316795491719ull, 8638125742978763218ull}}, {{6117239770791104881ull, 9878589525882367003ull, 12191022466424570228ull, 5398828589361727011ull}}, {{3034863695061493197ull, 12348236907352958754ull, 10627092064603324881ull, 6748535736702158764ull}}, {{13016951655681642305ull, 1600238078909034730ull, 13283865080754156102ull, 8435669670877698455ull}}, {{12747280803228414345ull, 14835206854600310418ull, 15219944703112429419ull, 5272293544298561534ull}}, {{6710728967180742123ull, 13932322549823000119ull, 9801558842035760966ull, 6590366930373201918ull}}, {{3776725190548539749ull, 8192031150423974341ull, 3028576515689925400ull, 8237958662966502398ull}}, {{4666296253306531295ull, 5120019469014983963ull, 15727918377588367087ull, 5148724164354063998ull}}, {{1221184298205776215ull, 1788338317841342050ull, 10436525935130683051ull, 6435905205442579998ull}}, {{10749852409611996077ull, 16070480952583841274ull, 3822285382058578005ull, 8044881506803224998ull}}, {{11330343774434885452ull, 12349893604578594748ull, 16223986419068774965ull, 5028050941752015623ull}}, {{14162929718043606815ull, 1602308950441079723ull, 15668297005408580803ull, 6285063677190019529ull}}, {{13091976129127120615ull, 15837944243333513366ull, 5750313201478562291ull, 7856329596487524412ull}}, {{3570799062277062480ull, 7592872142869751902ull, 12817317787778877240ull, 4910205997804702757ull}}, {{13686870864701103908ull, 9491090178587189877ull, 2186589179441432838ull, 6137757497255878447ull}}, {{3273530525594216173ull, 2640490686379211539ull, 16568294529583954760ull, 7672196871569848058ull}}, {{18186857642992242773ull, 1650306678987007211ull, 14966870099417359629ull, 4795123044731155036ull}}, {{18121886035312915562ull, 6674569367161146918ull, 261843550562147920ull, 5993903805913943796ull}}, {{13428985507286368644ull, 8343211708951433648ull, 327304438202684900ull, 7492379757392429745ull}}, {{8393115942053980403ull, 14437879354949421838ull, 11733780319945147822ull, 4682737348370268590ull}}, {{1268022890712699695ull, 8823977156832001490ull, 5443853363076658970ull, 5853421685462835738ull}}, {{10808400650245650427ull, 1806599409185226054ull, 16028188740700599521ull, 7316777106828544672ull}}, {{4287128775952287225ull, 6869935279908920472ull, 1588491852166197785ull, 9145971383535680841ull}}, {{2679455484970179516ull, 15822924596011545055ull, 12522022453672343375ull, 5716232114709800525ull}}, {{17184377411494888107ull, 15166969726587043414ull, 1817470011808265507ull, 7145290143387250657ull}}, {{12257099727513834326ull, 14347026139806416364ull, 6883523533187719788ull, 8931612679234063321ull}}, {{16884059366550922262ull, 18190263374233786035ull, 15831417254310794627ull, 5582257924521289575ull}}, {{16493388189761264923ull, 18126143199364844640ull, 15177585549461105380ull, 6977822405651611969ull}}, {{2169991163492029538ull, 4210934925496504185ull, 5136923881544218014ull, 8722278007064514962ull}}, {{12885459523250988221ull, 16466892383717478827ull, 7822263444392524162ull, 5451423754415321851ull}}, {{11495138385636347372ull, 11360243442792072726ull, 5166143287063267299ull, 6814279693019152314ull}}, {{5145550945190658407ull, 9588618285062703004ull, 15681051145683859932ull, 8517849616273940392ull}}, {{12439341377598937313ull, 15216258465018965185ull, 9800656966052412457ull, 5323656010171212745ull}}, {{1714118666716507929ull, 5185265025991542770ull, 16862507225992903476ull, 6654570012714015931ull}}, {{11366020370250410719ull, 6481581282489428462ull, 16466448014063741441ull, 8318212515892519914ull}}, {{2492076712979118795ull, 15580203347624362549ull, 14903216027217226304ull, 5198882822432824946ull}}, {{7726781909651286398ull, 1028510110820901570ull, 9405647997166757073ull, 6498603528041031183ull}}, {{435105350209332190ull, 5897323656953514867ull, 7145373978031058437ull, 8123254410051288979ull}}, {{16412841908376690283ull, 5991670294809640743ull, 2160015727055717571ull, 5077034006282055612ull}}, {{15904366367043474949ull, 2877901850084663025ull, 2700019658819646964ull, 6346292507852569515ull}}, {{6045399903522179974ull, 3597377312605828782ull, 17210082628806722417ull, 7932865634815711893ull}}, {{17613432994983526196ull, 13777575866447112748ull, 13062144652217895462ull, 4958041021759819933ull}}, {{3570047170019856129ull, 7998597796204115128ull, 2492622759990205616ull, 6197551277199774917ull}}, {{4462558962524820161ull, 9998247245255143910ull, 7727464468415144924ull, 7746939096499718646ull}}, {{16624157406860176313ull, 15472276565139240751ull, 217979274332077673ull, 4841836935312324154ull}}, {{16168510740147832487ull, 5505287651141887227ull, 9495846129769872900ull, 6052296169140405192ull}}, {{15598952406757402705ull, 6881609563927359034ull, 11869807662212341125ull, 7565370211425506490ull}}, {{14361031272650764595ull, 6606848986668293348ull, 12030315807310101107ull, 4728356382140941556ull}}, {{17951289090813455743ull, 3646875214907978781ull, 15037894759137626384ull, 5910445477676176945ull}}, {{8604053308234655967ull, 4558594018634973477ull, 4962310393639869268ull, 7388056847095221182ull}}, {{7683376326860353932ull, 12072493298501634231ull, 16936502051307082004ull, 4617535529434513238ull}}, {{4992534390148054510ull, 15090616623127042789ull, 11947255527279076697ull, 5771919411793141548ull}}, {{10852354006112456042ull, 5028212723626639774ull, 14934069409098845872ull, 7214899264741426935ull}}, {{4342070470785794244ull, 6285265904533299718ull, 14055900742946169436ull, 9018624080926783669ull}}, {{16548852099523285115ull, 13151663227188088131ull, 11090780973555049849ull, 5636640050579239793ull}}, {{16074379105976718489ull, 2604520978702946452ull, 28418161661648600ull, 7045800063224049742ull}}, {{1646229808761346495ull, 3255651223378683066ull, 9258894738931836558ull, 8807250079030062177ull}}, {{5640579648903229464ull, 15869840069893840628ull, 17316024257900867608ull, 5504531299393788860ull}}, {{7050724561129036830ull, 1390556013657749169ull, 3198286248666532895ull, 6880664124242236076ull}}, {{13425091719838683941ull, 15573253072354350173ull, 3997857810833166118ull, 8600830155302795095ull}}, {{10696525334112871415ull, 5121597151794080954ull, 9416190159411810680ull, 5375518847064246934ull}}, {{4147284630786313461ull, 6401996439742601193ull, 2546865662409987542ull, 6719398558830308668ull}}, {{9795791806910279730ull, 17225867586533027299ull, 3183582078012484427ull, 8399248198537885835ull}}, {{3816526870105230879ull, 8460324232369448110ull, 18130639863253660431ull, 5249530124086178646ull}}, {{13994030624486314407ull, 5963719272034422233ull, 13439927792212299731ull, 6561912655107723308ull}}, {{3657480225325729297ull, 2842963071615639888ull, 16799909740265374664ull, 8202390818884654135ull}}, {{2285925140828580811ull, 1776851919759774930ull, 17417472615306941021ull, 5126494261802908834ull}}, {{12080778462890501821ull, 6832750918127106566ull, 12548468732278900468ull, 6408117827253636043ull}}, {{5877601041758351469ull, 8540938647658883208ull, 11073899896921237681ull, 8010147284067045054ull}}, {{3673500651098969668ull, 16867301700855271765ull, 2309501417148385646ull, 5006342052541903159ull}}, {{9203561832301099989ull, 11860755089214313898ull, 16721934826717645770ull, 6257927565677378948ull}}, {{2281080253521599178ull, 5602571824663116565ull, 2455674459687505597ull, 7822409457096723686ull}}, {{3731518167664693438ull, 5807450399628141805ull, 15369854592586854710ull, 4889005910685452303ull}}, {{9276083728008254702ull, 16482685036389953064ull, 14600632222306180483ull, 6111257388356815379ull}}, {{11595104660010318377ull, 15991670277060053426ull, 13639104259455337700ull, 7639071735446019224ull}}, {{11858626430933836890ull, 771421886307757583ull, 8524440162159586063ull, 4774419834653762015ull}}, {{10211597020239908208ull, 14799335413166860691ull, 6043864184272094674ull, 5968024793317202519ull}}, {{8152810256872497356ull, 9275797229603800056ull, 2943144211912730439ull, 7460030991646503149ull}}, {{5095506410545310848ull, 12714902296143456891ull, 4145308141659150476ull, 4662519369779064468ull}}, {{1757696994754250656ull, 15893627870179321114ull, 5181635177073938095ull, 5828149212223830585ull}}, {{11420493280297589128ull, 15255348819296763488ull, 11088729989769810523ull, 7285186515279788231ull}}, {{14275616600371986409ull, 14457500005693566456ull, 9249226468784875250ull, 9106483144099735289ull}}, {{8922260375232491506ull, 13647623521985866939ull, 17309981589059016791ull, 5691551965062334555ull}}, {{6541139450613226478ull, 12447843384054945770ull, 17025790967896383085ull, 7114439956327918194ull}}, {{17399796350121308906ull, 1724746174786518500ull, 12058866673015703049ull, 8893049945409897743ull}}, {{1651500681971042258ull, 12607181405310043823ull, 14454320698275896261ull, 5558156215881186089ull}}, {{15899433907745966535ull, 1923918701355391066ull, 4232842817562706615ull, 6947695269851482612ull}}, {{10650920347827682360ull, 16239956431976402545ull, 5291053521953383268ull, 8684619087314353265ull}}, {{18186040263460771235ull, 926600733130475782ull, 14836123497289334303ull, 5427886929571470790ull}}, {{13509178292471188236ull, 14993308971695258440ull, 9321782334756892070ull, 6784858661964338488ull}}, {{16886472865588985295ull, 9518264177764297242ull, 11652227918446115088ull, 8481073327455423110ull}}, {{15165731559420503714ull, 5948915111102685776ull, 2670956430601434026ull, 5300670829659639444ull}}, {{510420375566078026ull, 16659515925733133029ull, 3338695538251792532ull, 6625838537074549305ull}}, {{5249711487884985436ull, 2377650833456864670ull, 8785055441242128570ull, 8282298171343186631ull}}, {{17116127735210279610ull, 6097717789337928322ull, 12408188678417412212ull, 5176436357089491644ull}}, {{12171787632158073704ull, 7622147236672410403ull, 15510235848021765265ull, 6470545446361864555ull}}, {{10603048521770204226ull, 14139370064267900908ull, 14776108791599818677ull, 8088181807952330694ull}}, {{15850277362961153449ull, 11142949299381132019ull, 4623381976322498769ull, 5055113629970206684ull}}, {{15201160685274053908ull, 93628568944251312ull, 5779227470403123462ull, 6318892037462758355ull}}, {{554706782883015769ull, 9340407748035089949ull, 2612348319576516423ull, 7898615046828447944ull}}, {{2652534748515578808ull, 12755283870163013074ull, 1632717699735322764ull, 4936634404267779965ull}}, {{12539040472499249317ull, 15944104837703766342ull, 6652583143096541359ull, 6170793005334724956ull}}, {{6450428553769285838ull, 15318445028702320024ull, 8315728928870676699ull, 7713491256668406195ull}}, {{4031517846105803649ull, 7268185133725256063ull, 2891487571330478985ull, 4820932035417753872ull}}, {{427711289204866657ull, 13696917435583957983ull, 3614359464163098731ull, 6026165044272192340ull}}, {{14369697166788247034ull, 12509460776052559574ull, 4517949330203873414ull, 7532706305340240425ull}}, {{4369374710815266492ull, 3206726966605461830ull, 14352933377445890644ull, 4707941440837650265ull}}, {{14685090425373858923ull, 4008408708256827287ull, 4106108666525199593ull, 5884926801047062832ull}}, {{13744677013289935750ull, 9622196903748422013ull, 5132635833156499491ull, 7356158501308828540ull}}, {{3345788211330255975ull, 7416060111258139613ull, 6415794791445624364ull, 9195198126636035675ull}}, {{4396960641295103937ull, 13858409606391113066ull, 1704028735439821275ull, 5746998829147522297ull}}, {{14719572838473655729ull, 12711325989561503428ull, 6741721937727164498ull, 7183748536434402871ull}}, {{18399466048092069661ull, 6665785450097103477ull, 3815466403731567719ull, 8979685670543003589ull}}, {{13805509289271237490ull, 11083644933951771529ull, 4690509511545923776ull, 5612303544089377243ull}}, {{3421828556306883151ull, 13854556167439714412ull, 1251450871005016816ull, 7015379430111721554ull}}, {{4277285695383603938ull, 17318195209299643015ull, 10787685625611046828ull, 8769224287639651942ull}}, {{9590832587255834317ull, 1600499968957501076ull, 2130617497579516364ull, 5480765179774782464ull}}, {{11988540734069792897ull, 2000624961196876345ull, 2663271871974395455ull, 6850956474718478080ull}}, {{1150617862305077409ull, 16335839256778259144ull, 3329089839967994318ull, 8563695593398097600ull}}, {{719136163940673381ull, 5598213517059024061ull, 2080681149979996449ull, 5352309745873811000ull}}, {{5510606223353229630ull, 11609452914751167980ull, 2600851437474995561ull, 6690387182342263750ull}}, {{6888257779191537037ull, 676758088156796263ull, 12474436333698520260ull, 8362983977927829687ull}}, {{11222690139635792504ull, 9646345841952773472ull, 14714051736202657018ull, 5226864986204893554ull}}, {{14028362674544740630ull, 2834560265586191032ull, 9169192633398545465ull, 6533581232756116943ull}}, {{17535453343180925788ull, 8154886350410126694ull, 6849804773320793927ull, 8166976540945146179ull}}, {{6347972321060690714ull, 12014332996647411040ull, 1975284974111802252ull, 5104360338090716362ull}}, {{7934965401325863392ull, 15017916245809263800ull, 11692478254494528623ull, 6380450422613395452ull}}, {{9918706751657329240ull, 14160709288834191846ull, 14615597818118160779ull, 7975563028266744315ull}}, {{1587505701358442871ull, 6544600296307675952ull, 6828905627110156535ull, 4984726892666715197ull}}, {{1984382126698053589ull, 3569064351957207036ull, 13147818052315083573ull, 6230908615833393996ull}}, {{2480477658372566986ull, 9073016458373896699ull, 16434772565393854466ull, 7788635769791742495ull}}, {{17691199600978712030ull, 10282321304911073340ull, 17189261881012240897ull, 4867897356119839059ull}}, {{3667255427513838422ull, 17464587649566229580ull, 16874891332837913217ull, 6084871695149798824ull}}, {{4584069284392298027ull, 7995676506675623263ull, 2646870092337839906ull, 7606089618937248531ull}}, {{9782572330386268123ull, 9608983835099652443ull, 17795194872207007605ull, 4753806011835780331ull}}, {{7616529394555447250ull, 16622915812301953458ull, 17632307571831371602ull, 5942257514794725414ull}}, {{297289706339533254ull, 11555272728522666015ull, 12817012427934438695ull, 7427821893493406768ull}}, {{7103335094103290140ull, 14139574482967748115ull, 8010632767459024184ull, 4642388683433379230ull}}, {{4267482849201724771ull, 17674468103709685144ull, 789918922469004422ull, 5802985854291724038ull}}, {{5334353561502155963ull, 12869713092782330622ull, 10210770689941031336ull, 7253732317864655047ull}}, {{15891313988732470762ull, 16087141365977913277ull, 8151777343998901266ull, 9067165397330818809ull}}, {{12237914252171488178ull, 14666149372163583702ull, 16624075886067783051ull, 5666978373331761755ull}}, {{6074020778359584415ull, 13721000696777091724ull, 16168408839157340910ull, 7083722966664702194ull}}, {{7592525972949480518ull, 7927878834116588847ull, 10987139012091900330ull, 8854653708330877743ull}}, {{11662857760734507180ull, 9566610289750255933ull, 13784490910198519562ull, 5534158567706798589ull}}, {{743514145635970263ull, 2734890825333044109ull, 3395555582465985741ull, 6917698209633498237ull}}, {{5541078700472350733ull, 8030299550093693040ull, 8856130496509870080ull, 8647122762041872796ull}}, {{3463174187795219208ull, 5018937218808558150ull, 14758453597173444608ull, 5404451726276170497ull}}, {{13552339771598799818ull, 6273671523510697687ull, 4613008941184642048ull, 6755564657845213122ull}}, {{12328738696071111869ull, 7842089404388372109ull, 14989633213335578368ull, 8444455822306516402ull}}, {{10011304694258138870ull, 4901305877742732568ull, 13980206776762124384ull, 5277784888941572751ull}}, {{12514130867822673587ull, 6126632347178415710ull, 12863572452525267576ull, 6597231111176965939ull}}, {{6419291547923566176ull, 7658290433973019638ull, 11467779547229196566ull, 8246538888971207424ull}}, {{17847115272734392572ull, 174745502805749369ull, 7167362217018247854ull, 5154086805607004640ull}}, {{8473836035635827003ull, 9441803915361962520ull, 8959202771272809817ull, 6442608507008755800ull}}, {{10592295044544783754ull, 16413940912629841054ull, 11199003464091012271ull, 8053260633760944750ull}}, {{2008498384413101942ull, 17176242098034732515ull, 2387691146629494765ull, 5033287896100590469ull}}, {{16345681035798541140ull, 7635244567261251931ull, 7596299951714256361ull, 6291609870125738086ull}}, {{15820415276320788521ull, 14155741727503952818ull, 272002902788044643ull, 7864512337657172608ull}}, {{14499445566127880730ull, 6541495570476276559ull, 170001814242527902ull, 4915320211035732880ull}}, {{13512620939232463008ull, 17400241499950121507ull, 212502267803159877ull, 6144150263794666100ull}}, {{12279090155613190856ull, 7915243819655488172ull, 265627834753949847ull, 7680187829743332625ull}}, {{16897803384113020093ull, 11864556414925761963ull, 11695232442789688414ull, 4800117393589582890ull}}, {{16510568211713887212ull, 5607323481802426646ull, 5395668516632334710ull, 6000146741986978613ull}}, {{11414838227787583207ull, 16232526389107809116ull, 11356271664217806291ull, 7500183427483723266ull}}, {{16357645929222015313ull, 7839485983978686745ull, 11709355808563516836ull, 4687614642177327041ull}}, {{6611999356245355429ull, 9799357479973358432ull, 801636705422232333ull, 5859518302721658802ull}}, {{8264999195306694286ull, 16860882868394085944ull, 10225417918632566224ull, 7324397878402073502ull}}, {{10331248994133367857ull, 2629359511783055814ull, 3558400361435931973ull, 9155497348002591878ull}}, {{1845344602905967007ull, 3949192704078103836ull, 16059058281179621195ull, 5722185842501619923ull}}, {{2306680753632458758ull, 324804861670241891ull, 15462136833047138590ull, 7152732303127024904ull}}, {{16718408997322737160ull, 9629378113942578171ull, 880926967599371621ull, 8940915378908781131ull}}, {{8143162614113016773ull, 8324204330427805309ull, 16691480419245464927ull, 5588072111817988206ull}}, {{14790639286068658870ull, 5793569394607368732ull, 11640978487202055351ull, 6985090139772485258ull}}, {{41555033876271972ull, 2630275724831823012ull, 5327851072147793381ull, 8731362674715606573ull}}, {{9249343933027445790ull, 3949765337233583334ull, 5635749929306064815ull, 5457101671697254108ull}}, {{2338307879429531430ull, 325520653114591264ull, 7044687411632581019ull, 6821377089621567635ull}}, {{2922884849286914287ull, 14241958871675402792ull, 4194173246113338369ull, 8526721362026959544ull}}, {{1826803030804321430ull, 1983695267156044889ull, 2621358278820836481ull, 5329200851266849715ull}}, {{6895189806932789691ull, 7091305102372444015ull, 17111755903808209313ull, 6661501064083562143ull}}, {{4007301240238599210ull, 13475817396392942923ull, 16778008861332873737ull, 8326876330104452679ull}}, {{198720265935430554ull, 1504856845104507471ull, 17403784565974127942ull, 5204297706315282924ull}}, {{14083458387701451905ull, 11104443093235410146ull, 3307986633758108311ull, 6505372132894103656ull}}, {{8380950947772039073ull, 9268867848116874779ull, 4134983292197635389ull, 8131715166117629570ull}}, {{2932251333143830469ull, 8098885414286740689ull, 7196050576050910022ull, 5082321978823518481ull}}, {{8277000184857175990ull, 900234731003650053ull, 13606749238491025432ull, 6352902473529398101ull}}, {{14957936249498857891ull, 1125293413754562566ull, 3173378492831618078ull, 7941128091911747627ull}}, {{4737024137509398278ull, 14538366438878765316ull, 18124262622515618962ull, 4963205057444842266ull}}, {{5921280171886747847ull, 8949586011743680837ull, 13431956241289747895ull, 6204006321806052833ull}}, {{12013286233285822713ull, 6575296496252213142ull, 2954887246330021157ull, 7755007902257566042ull}}, {{2896617877376251292ull, 6415403319371327166ull, 6458490547383651127ull, 4846879938910978776ull}}, {{12844144383575089923ull, 3407568130786771053ull, 8073113184229563909ull, 6058599923638723470ull}}, {{2220122424186698691ull, 8871146181910851721ull, 868019443432179078ull, 7573249904548404338ull}}, {{12916791561185156442ull, 932780345266894421ull, 5154198170572499828ull, 4733281190342752711ull}}, {{2310931396199281841ull, 1165975431583618027ull, 1831061694788236881ull, 5916601487928440889ull}}, {{16723722300531266013ull, 6069155307906910437ull, 6900513136912684005ull, 7395751859910551111ull}}, {{12758169447045735210ull, 6099065076655512975ull, 11230349738211509359ull, 4622344912444094444ull}}, {{11336025790379781109ull, 3012145327392003315ull, 14037937172764386699ull, 5777931140555118055ull}}, {{9558346219547338482ull, 17600239714522167856ull, 12935735447528095469ull, 7222413925693897569ull}}, {{11947932774434173102ull, 8165241587870546108ull, 2334611254127955625ull, 9028017407117371962ull}}, {{16690830020876133997ull, 16632491038487561077ull, 6070818052257360169ull, 5642510879448357476ull}}, {{7028479470813003784ull, 6955555742827287635ull, 7588522565321700212ull, 7053138599310446845ull}}, {{4173913320088866826ull, 8694444678534109544ull, 14097339225079513169ull, 8816423249138058556ull}}, {{2608695825055541766ull, 16963242970152288225ull, 18034209052529471538ull, 5510264530711286597ull}}, {{7872555799746815112ull, 11980681675835584473ull, 8707703260379675711ull, 6887830663389108247ull}}, {{14452380768110906794ull, 10364166076367092687ull, 6272943057047206735ull, 8609788329236385309ull}}, {{15950267007710398602ull, 13395132825370514785ull, 6226432419868198161ull, 5381117705772740818ull}}, {{6102775704355834541ull, 2908857976430979770ull, 17006412561690023510ull, 6726397132215926022ull}}, {{16851841667299568984ull, 12859444507393500520ull, 12034643665257753579ull, 8407996415269907528ull}}, {{10532401042062230615ull, 5731309807907243873ull, 7521652290786095987ull, 5254997759543692205ull}}, {{17777187321005176173ull, 2552451241456666937ull, 14013751381910007888ull, 6568747199429615256ull}}, {{8386426095974306504ull, 3190564051820833672ull, 17517189227387509860ull, 8210933999287019070ull}}, {{5241516309983941565ull, 11217474569242796853ull, 6336557248689805758ull, 5131833749554386919ull}}, {{11163581405907314860ull, 4798471174698720258ull, 3309010542434869294ull, 6414792186942983649ull}}, {{4731104720529367767ull, 15221461005228176131ull, 8747949196470974521ull, 8018490233678729561ull}}, {{651097441117160903ull, 2595884100626528226ull, 16996683293862828836ull, 5011556396049205975ull}}, {{10037243838251226936ull, 3244855125783160282ull, 16634168098901148141ull, 6264445495061507469ull}}, {{3323182760959257862ull, 8667754925656338257ull, 6957652068344271464ull, 7830556868826884337ull}}, {{13606204271668005924ull, 5417346828535211410ull, 15877747588783639425ull, 4894098043016802710ull}}, {{7784383302730231597ull, 11383369554096402167ull, 10623812449124773473ull, 6117622553771003388ull}}, {{5118793109985401592ull, 394153887338338997ull, 13279765561405966842ull, 7647028192213754235ull}}, {{5505088702954569947ull, 4858032198013849777ull, 5994010466665035324ull, 4779392620133596397ull}}, {{11493046897120600338ull, 6072540247517312221ull, 12104199101758682059ull, 5974240775166995496ull}}, {{531250566118586710ull, 2978989290969252373ull, 15130248877198352574ull, 7467800968958744370ull}}, {{2637874613037810646ull, 15696926362137946445ull, 14068091566676358262ull, 4667375605599215231ull}}, {{7909029284724651211ull, 10397785915817657248ull, 12973428439918059924ull, 5834219506999019039ull}}, {{9886286605905814014ull, 12997232394772071560ull, 11605099531470187001ull, 7292774383748773799ull}}, {{12357858257382267517ull, 2411482438182925738ull, 9894688395910345848ull, 9115967979685967249ull}}, {{12335347429291305103ull, 1507176523864328586ull, 17713395293512435915ull, 5697479987303729530ull}}, {{6195812249759355570ull, 15719028710112574445ull, 12918372080035769085ull, 7121849984129661913ull}}, {{12356451330626582366ull, 5813727832358554344ull, 2312907044762547645ull, 8902312480162077392ull}}, {{7722782081641613979ull, 5939422904437790417ull, 1445566902976592278ull, 5563945300101298370ull}}, {{14265163620479405378ull, 16647650667402013829ull, 11030330665575516155ull, 6954931625126622962ull}}, {{3996396470317093010ull, 16197877315825129383ull, 4564541295114619386ull, 8693664531408278703ull}}, {{9415276821589264988ull, 14735359340818093768ull, 9770367337087718972ull, 5433540332130174189ull}}, {{11769096026986581234ull, 18419199176022617210ull, 16824645189787036619ull, 6791925415162717736ull}}, {{5487997996878450735ull, 18412312951600883609ull, 2584062413524244158ull, 8489906768953397171ull}}, {{14959213794117501469ull, 6896009576323164351ull, 17755940072948510263ull, 5306191730595873231ull}}, {{14087331224219488933ull, 4008325951976567535ull, 17583239072758249925ull, 6632739663244841539ull}}, {{12997478011846973262ull, 9622093458398097323ull, 17367362822520424502ull, 8290924579056051924ull}}, {{5817580748190664337ull, 1402122393071422923ull, 1631229727220489506ull, 5181827861910032453ull}}, {{2660289916810942517ull, 10976025028194054462ull, 6650723177452999786ull, 6477284827387540566ull}}, {{12548734432868453954ull, 4496659248387792269ull, 17536776008671025541ull, 8096606034234425707ull}}, {{10148802029756477673ull, 5116255039456064120ull, 8654641996205697011ull, 5060378771396516067ull}}, {{12686002537195597092ull, 1783632780892692246ull, 6206616476829733360ull, 6325473464245645084ull}}, {{6634131134639720556ull, 2229540976115865308ull, 7758270596037166700ull, 7906841830307056355ull}}, {{13369703996004601156ull, 10616835146927191625ull, 2543076113309535235ull, 4941776143941910222ull}}, {{2877071939723587733ull, 8659357915231601628ull, 12402217178491694852ull, 6177220179927387777ull}}, {{3596339924654484666ull, 10824197394039502035ull, 1667713417832454853ull, 7721525224909234722ull}}, {{18388613517404910580ull, 9070966380488382723ull, 5654006904572672187ull, 4825953265568271701ull}}, {{18374080878328750321ull, 6727021957183090500ull, 11679194649143228138ull, 6032441581960339626ull}}, {{4520857024201386286ull, 17632149483333638934ull, 5375621274574259364ull, 7540551977450424533ull}}, {{16660593695408030141ull, 1796721390228748525ull, 5665606305822606055ull, 4712844985906515333ull}}, {{6990684063977873964ull, 16080959793068099369ull, 11693693900705645472ull, 5891056232383144166ull}}, {{13350041098399730358ull, 1654455667625572595ull, 5393745339027281033ull, 7363820290478930208ull}}, {{12075865354572275044ull, 6679755602959353648ull, 6742181673784101291ull, 9204775363098662760ull}}, {{7547415846607671903ull, 1869004242635902078ull, 4213863546115063307ull, 5752984601936664225ull}}, {{210897771404814070ull, 16171313358577041310ull, 9879015451071217037ull, 7191230752420830281ull}}, {{9486994251110793396ull, 6379083642939137925ull, 16960455332266409201ull, 8989038440526037851ull}}, {{8235214416157939824ull, 15516142322905430963ull, 8294441573452811798ull, 5618149025328773657ull}}, {{5682332001770036876ull, 10171805866777012896ull, 14979737985243402652ull, 7022686281660967071ull}}, {{7102915002212546095ull, 12714757333471266120ull, 14112986463126865411ull, 8778357852076208839ull}}, {{4439321876382841310ull, 5640880324205847373ull, 15738145567095372738ull, 5486473657547630524ull}}, {{10160838363905939541ull, 16274472442112085024ull, 1225937885159664306ull, 6858092071934538156ull}}, {{12701047954882424426ull, 11119718515785330472ull, 1532422356449580383ull, 8572615089918172695ull}}, {{7938154971801515267ull, 13867353100006913401ull, 7875293000422069595ull, 5357884431198857934ull}}, {{14534379733179281987ull, 12722505356581253847ull, 620744213672811186ull, 6697355538998572418ull}}, {{13556288648046714580ull, 6679759658871791501ull, 9999302303945789791ull, 8371694423748215522ull}}, {{10778523414242890565ull, 11092378814435951544ull, 10861249958393506523ull, 5232309014842634701ull}}, {{13473154267803613206ull, 9253787499617551526ull, 18188248466419271058ull, 6540386268553293376ull}}, {{7618070797899740699ull, 2343862337667163600ull, 4288566509314537207ull, 8175482835691616721ull}}, {{4761294248687337937ull, 8382442988683059106ull, 14209569114390055514ull, 5109676772307260450ull}}, {{15174989847713948229ull, 1254681698999048074ull, 8538589356132793585ull, 6387095965384075563ull}}, {{9745365272787659478ull, 6180038142176197997ull, 6061550676738604077ull, 7983869956730094454ull}}, {{8396696304705981126ull, 6168366848073817700ull, 17623527228243791260ull, 4989918722956309033ull}}, {{10495870380882476408ull, 7710458560092272125ull, 8194350980022575363ull, 6237398403695386292ull}}, {{17731523994530483413ull, 5026387181687952252ull, 10242938725028219204ull, 7796748004619232865ull}}, {{1858830459726776325ull, 12364864025409745966ull, 17931051749211106762ull, 4872967502887020540ull}}, {{11546910111513246215ull, 6232707994907406649ull, 3967070612804331837ull, 6091209378608775676ull}}, {{598579584109394056ull, 12402571012061646216ull, 4958838266005414796ull, 7614011723260969595ull}}, {{374112240068371285ull, 16974978919393304693ull, 793430907039690295ull, 4758757327038105997ull}}, {{5079326318512852011ull, 16607037630814242962ull, 5603474652227000773ull, 5948446658797632496ull}}, {{15572529934995840821ull, 6923738983235639990ull, 7004343315283750967ull, 7435558323497040620ull}}, {{5121145190945012609ull, 11244865892163356850ull, 13601086608907120162ull, 4647223952185650387ull}}, {{15624803525536041570ull, 4832710328349420254ull, 12389672242706512299ull, 5809029940232062984ull}}, {{10307632370065276154ull, 1429201892009387414ull, 15487090303383140374ull, 7261287425290078730ull}}, {{3661168425726819384ull, 11009874401866510076ull, 10135490842374149659ull, 9076609281612598413ull}}, {{11511602302934037923ull, 4575328491952874845ull, 8640524785697537489ull, 5672880801007874008ull}}, {{554444823385383692ull, 10330846633368481461ull, 10800655982121921861ull, 7091101001259842510ull}}, {{5304742047659117519ull, 17525244310137989730ull, 4277447940797626518ull, 8863876251574803138ull}}, {{7927149798214336353ull, 6341591675408855677ull, 7285090981425904478ull, 5539922657234251961ull}}, {{14520623266195308346ull, 17150361631115845404ull, 13718049745209768501ull, 6924903321542814951ull}}, {{18150779082744135432ull, 7602893983612643043ull, 12535876163084822723ull, 8656129151928518689ull}}, {{9038393917501390693ull, 2445965730544207950ull, 917393574286932346ull, 5410080719955324181ull}}, {{2074620360021962558ull, 12280829200035035746ull, 5758427986286053336ull, 6762600899944155226ull}}, {{11816647486882229006ull, 15351036500043794682ull, 16421407019712342478ull, 8453251124930194032ull}}, {{11997090697728781033ull, 4982711794099983772ull, 10263379387320214049ull, 5283281953081371270ull}}, {{14996363372160976291ull, 10840075761052367619ull, 3605852197295491753ull, 6604102441351714088ull}}, {{14133768196773832460ull, 18161780719742847428ull, 4507315246619364691ull, 8255128051689642610ull}}, {{18056977159838421095ull, 9045269940625585690ull, 7428758047564490836ull, 5159455032306026631ull}}, {{13347849412943250561ull, 11306587425781982113ull, 4674261541028225641ull, 6449318790382533289ull}}, {{2849753710896899489ull, 298176226945313930ull, 10454512944712669956ull, 8061648487978166611ull}}, {{6392782087737950085ull, 9409732178695597014ull, 4228227581231724770ull, 5038530304986354132ull}}, {{17214349646527213414ull, 2538793186514720459ull, 5285284476539655963ull, 6298162881232942665ull}}, {{16906251039731628864ull, 17008549538425564286ull, 11218291614101957857ull, 7872703601541178331ull}}, {{5954720881404880136ull, 3712814433874895823ull, 4705589249600029709ull, 4920439750963236457ull}}, {{2831715083328712266ull, 9252704060771007683ull, 10493672580427425040ull, 6150549688704045571ull}}, {{17374701909443054044ull, 11565880075963759603ull, 8505404707106893396ull, 7688187110880056964ull}}, {{8553345684188214826ull, 16452047084332125560ull, 14539249978796584180ull, 4805116944300035602ull}}, {{10691682105235268532ull, 2118314781705605334ull, 8950690436640954418ull, 6006396180375044503ull}}, {{4141230594689309857ull, 11871265513986782476ull, 6576677027373805118ull, 7507995225468805629ull}}, {{11811641158535594469ull, 2807854927814351143ull, 6416266151322322151ull, 4692497015918003518ull}}, {{10152865429742105182ull, 17344876715050102641ull, 17243704726007678496ull, 5865621269897504397ull}}, {{17302767805605019381ull, 3234351820103076685ull, 7719572852227434409ull, 7332026587371880497ull}}, {{7793401701724110514ull, 8654625793556233761ull, 14261152083711680915ull, 9165033234214850621ull}}, {{16400091109646038832ull, 3103298111758952148ull, 11219063061533494524ull, 5728145771384281638ull}}, {{2053369813347996923ull, 3879122639698690186ull, 4800456790062092347ull, 7160182214230352048ull}}, {{11790084303539771962ull, 237217281195974828ull, 6000570987577615434ull, 8950227767787940060ull}}, {{16592174726567133285ull, 4759946819174872171ull, 12973728904090785454ull, 5593892354867462537ull}}, {{16128532389781528702ull, 15173305560823366022ull, 2382103074831318105ull, 6992365443584328172ull}}, {{10937293450372135069ull, 5131573895747043816ull, 2977628843539147632ull, 8740456804480410215ull}}, {{6835808406482584418ull, 3207233684841902385ull, 8778547054853049126ull, 5462785502800256384ull}}, {{13156446526530618427ull, 13232414142907153789ull, 10973183818566311407ull, 6828481878500320480ull}}, {{2610500102881109321ull, 11928831660206554333ull, 13716479773207889259ull, 8535602348125400600ull}}, {{3937405573514387278ull, 5149676778415402506ull, 8572799858254930787ull, 5334751467578375375ull}}, {{14145129003747759905ull, 1825409954591865228ull, 6104313804391275580ull, 6668439334472969219ull}}, {{17681411254684699881ull, 2281762443239831535ull, 3018706237061706571ull, 8335549168091211524ull}}, {{17968411061819019282ull, 17567002591520752373ull, 11110063435018342414ull, 5209718230057007202ull}}, {{8625455771991610390ull, 12735381202546164659ull, 4664207256918152210ull, 6512147787571259003ull}}, {{6170133696562125084ull, 6695854466327930016ull, 1218573052720302359ull, 8140184734464073754ull}}, {{3856333560351328178ull, 11102438069096038116ull, 5373294176377576878ull, 5087615459040046096ull}}, {{4820416950439160222ull, 4654675549515271837ull, 6716617720471971098ull, 6359519323800057620ull}}, {{10637207206476338181ull, 15041716473748865604ull, 8395772150589963872ull, 7949399154750072025ull}}, {{15871626540902487172ull, 9401072796093041002ull, 16776572640187197180ull, 4968374471718795015ull}}, {{10616161139273333156ull, 11751340995116301253ull, 16359029781806608571ull, 6210468089648493769ull}}, {{17881887442519054349ull, 10077490225467988662ull, 6613729171976097002ull, 7763085112060617212ull}}, {{6564493633147021064ull, 10910117409344880818ull, 13356952769339836434ull, 4851928195037885757ull}}, {{17428989078288552138ull, 4414274724826325214ull, 2861132906392631831ull, 6064910243797357197ull}}, {{12562864311005914365ull, 906157387605518614ull, 8188102151418177693ull, 7581137804746696496ull}}, {{3240104175951308574ull, 2872191376467143086ull, 5117563844636361058ull, 4738211127966685310ull}}, {{13273502256793911526ull, 12813611257438704665ull, 15620326842650227130ull, 5922763909958356637ull}}, {{2756819765710225695ull, 6793642034943605024ull, 5690350498030620201ull, 7403454887447945797ull}}, {{1723012353568891060ull, 15775241317908222900ull, 5862312070482831577ull, 4627159304654966123ull}}, {{2153765441961113824ull, 5883993592103114913ull, 2716204069676151568ull, 5783949130818707654ull}}, {{7303892820878780184ull, 7354991990128893641ull, 12618627123949965268ull, 7229936413523384567ull}}, {{13741552044525863134ull, 9193739987661117051ull, 11161597886510068681ull, 9037420516904230709ull}}, {{6282627018614970507ull, 17275302538356667917ull, 9281841688282486877ull, 5648387823065144193ull}}, {{12464969791696101038ull, 7759070117663671184ull, 16213988128780496501ull, 7060484778831430241ull}}, {{15581212239620126297ull, 14310523665506976884ull, 6432427105693456914ull, 8825605973539287802ull}}, {{514885612907803128ull, 13555763309369248457ull, 8631952959485798475ull, 5516003733462054876ull}}, {{5255293034562141814ull, 12333018118284172667ull, 10789941199357248094ull, 6895004666827568595ull}}, {{1957430274775289363ull, 6192900611000440026ull, 8875740480769172214ull, 8618755833534460744ull}}, {{5835079940161943756ull, 17705620937157438728ull, 5547337800480732633ull, 5386722395959037965ull}}, {{7293849925202429695ull, 8296968116164634698ull, 11545858269028303696ull, 6733402994948797456ull}}, {{18340684443357812927ull, 10371210145205793372ull, 14432322836285379620ull, 8416753743685996820ull}}, {{2239555740243857271ull, 15705378377608396666ull, 18243573809533138070ull, 5260471089803748012ull}}, {{12022816712159597397ull, 10408350935155720024ull, 4357723188206870972ull, 6575588862254685016ull}}, {{15028520890199496746ull, 13010438668944650030ull, 5447153985258588715ull, 8219486077818356270ull}}, {{4781139537947297562ull, 5825681158876712317ull, 17239529296068781659ull, 5137178798636472668ull}}, {{10588110440861509857ull, 2670415430168502492ull, 3102667546376425458ull, 6421473498295590836ull}}, {{13235138051076887321ull, 12561391324565403923ull, 3878334432970531822ull, 8026841872869488545ull}}, {{5966118272709360624ull, 3239183559425989548ull, 13953174066675052149ull, 5016776170543430340ull}}, {{7457647840886700780ull, 8660665467709874839ull, 17441467583343815186ull, 6270970213179287925ull}}, {{4710373782680988071ull, 1602459797782567741ull, 7966776423897605271ull, 7838712766474109907ull}}, {{5249826623389311496ull, 7919066401255186694ull, 2673392255722309342ull, 4899195479046318692ull}}, {{15785655316091415178ull, 675460964714207559ull, 3341740319652886678ull, 6123994348807898365ull}}, {{15120383126686881069ull, 10067698242747535257ull, 8788861417993496251ull, 7654992936009872956ull}}, {{2532710426538218812ull, 3986468392503515584ull, 14716410423100710965ull, 4784370585006170597ull}}, {{3165888033172773515ull, 9594771509056782384ull, 4560454973593724994ull, 5980463231257713247ull}}, {{3957360041465966894ull, 2770092349466202172ull, 1088882698564768339ull, 7475579039072141559ull}}, {{11696722062771005117ull, 17872208782912234021ull, 7598080714244062067ull, 4672236899420088474ull}}, {{785844523181592684ull, 17728574960212904623ull, 274228855950301776ull, 5840296124275110593ull}}, {{14817363709259154567ull, 3713974626556579162ull, 4954472088365265125ull, 7300370155343888241ull}}, {{9298332599719167400ull, 9254154301623111857ull, 10804776128883969310ull, 9125462694179860301ull}}, {{17340672920892949385ull, 1172160420087057006ull, 9058828089766174771ull, 5703414183862412688ull}}, {{12452469114261410923ull, 15300258580390984970ull, 11323535112207718463ull, 7129267729828015860ull}}, {{6342214355971987846ull, 14513637207061343309ull, 14154418890259648079ull, 8911584662285019825ull}}, {{6269726981696186356ull, 15988552282054421424ull, 1928982778771198193ull, 5569740413928137391ull}}, {{7837158727120232945ull, 6150632297285863068ull, 16246286528746161454ull, 6962175517410171738ull}}, {{9796448408900291181ull, 16911662408462104643ull, 11084486124077926009ull, 8702719396762714673ull}}, {{3816937246348988036ull, 3652259977647733546ull, 10274799907621900ull, 5439199622976696671ull}}, {{13994543594791010853ull, 4565324972059666932ull, 13847901555166691087ull, 6798999528720870838ull}}, {{17493179493488763566ull, 1094970196647195761ull, 8086504907103588051ull, 8498749410901088548ull}}, {{4015708155789395373ull, 16825257437400355015ull, 14277437603794518339ull, 5311718381813180342ull}}, {{407949176309356312ull, 16419885778323055865ull, 8623424967888372116ull, 6639647977266475428ull}}, {{5121622488814083294ull, 2078113149194268215ull, 10779281209860465146ull, 8299559971583094285ull}}, {{10118543083149883915ull, 5910506736673805538ull, 9042893765376484668ull, 5187224982239433928ull}}, {{3424806817082579086ull, 7388133420842256923ull, 11303617206720605835ull, 6484031227799292410ull}}, {{18116066576635387569ull, 4623480757625433249ull, 4906149471545981486ull, 8105039034749115513ull}}, {{4405012582756035375ull, 16724733528798059493ull, 14595558465784708188ull, 5065649396718197195ull}}, {{10117951746872432123ull, 2459172837288022750ull, 13632762063803497332ull, 6332061745897746494ull}}, {{3424067646735764345ull, 3073966046610028438ull, 7817580542899595857ull, 7915077182372183118ull}}, {{15975100334492016428ull, 13450443825199737533ull, 274301820884859506ull, 4946923238982614449ull}}, {{6133817362832856823ull, 7589682744644896109ull, 4954563294533462287ull, 6183654048728268061ull}}, {{12278957721968458932ull, 4875417412378732232ull, 10804890136594215763ull, 7729567560910335076ull}}, {{7674348576230286833ull, 741292873523013693ull, 15976428372226160660ull, 4830979725568959422ull}}, {{14204621738715246445ull, 926616091903767116ull, 10747163428427925017ull, 6038724656961199278ull}}, {{17755777173394058056ull, 5769956133307096799ull, 4210582248680130463ull, 7548405821201499098ull}}, {{18014889761012368141ull, 10523751610958017355ull, 7243299923852469443ull, 4717753638250936936ull}}, {{17906926182838072272ull, 8543003495270133790ull, 9054124904815586804ull, 5897192047813671170ull}}, {{13160285691692814532ull, 10678754369087667238ull, 2094284094164707697ull, 7371490059767088963ull}}, {{7226985077761242357ull, 17960128979786971952ull, 16452913172988048333ull, 9214362574708861203ull}}, {{4516865673600776473ull, 13530923621580551422ull, 7977227723903836256ull, 5758976609193038252ull}}, {{14869454128855746400ull, 16913654526975689277ull, 9971534654879795320ull, 7198720761491297815ull}}, {{4751759605787519288ull, 2695324085010059981ull, 7852732300172356247ull, 8998400951864122269ull}}, {{5275692762830893507ull, 8602106580772369344ull, 7213800696821416606ull, 5624000594915076418ull}}, {{6594615953538616883ull, 1529261189110685872ull, 18240622907881546566ull, 7030000743643845522ull}}, {{8243269941923271104ull, 11134948523243133148ull, 13577406597997157399ull, 8787500929554806903ull}}, {{14375415750556820248ull, 13876871854668040073ull, 15403408151389305230ull, 5492188080971754314ull}}, {{4134211632913861598ull, 8122717781480274284ull, 10030888152381855730ull, 6865235101214692893ull}}, {{5167764541142326998ull, 930025189995567047ull, 17150296208904707567ull, 8581543876518366116ull}}, {{10147381865855036230ull, 7498794771388311260ull, 1495563093710666421ull, 5363464922823978823ull}}, {{12684227332318795287ull, 13985179482662776979ull, 15704511922420496738ull, 6704331153529973528ull}}, {{11243598146971106205ull, 8258102316473695416ull, 1183895829316069307ull, 8380413941912466911ull}}, {{7027248841856941378ull, 2855470938582365683ull, 7657463920963625173ull, 5237758713695291819ull}}, {{4172375033893788819ull, 8181024691655345008ull, 4960143882777143562ull, 6547198392119114774ull}}, {{5215468792367236023ull, 1002908827714405452ull, 15423551890326205261ull, 8183997990148893467ull}}, {{12483040032084298323ull, 2932661026535197359ull, 7333876922240184336ull, 5114998743843058417ull}}, {{10992114021677984999ull, 3665826283168996699ull, 13779032171227618324ull, 6393748429803823021ull}}, {{9128456508670093345ull, 4582282853961245874ull, 3388732158752359193ull, 7992185537254778777ull}}, {{10316971336346196245ull, 14393141829794248431ull, 13647172645288694255ull, 4995115960784236735ull}}, {{8284528152005357402ull, 13379741268815422635ull, 12447279788183479915ull, 6243894950980295919ull}}, {{5743974171579308848ull, 12112990567591890390ull, 10947413716801961990ull, 7804868688725369899ull}}, {{17425041912519231742ull, 2958933086317543589ull, 4536290563787532292ull, 4878042930453356187ull}}, {{7946244335366875966ull, 3698666357896929487ull, 1058677186307027461ull, 6097553663066695234ull}}, {{5321119400781207053ull, 9235018965798549763ull, 10546718519738560134ull, 7621942078833369042ull}}, {{1019856616274560456ull, 1160200835196705698ull, 11203385093263987988ull, 4763713799270855651ull}}, {{10498192807197976378ull, 1450251043995882122ull, 9392545348152597081ull, 5954642249088569564ull}}, {{3899368972142694665ull, 6424499823422240557ull, 11740681685190746351ull, 7443302811360711955ull}}, {{4742948616802878118ull, 10932841417279982204ull, 5032083044030522517ull, 4652064257100444972ull}}, {{5928685771003597647ull, 18277737790027365659ull, 6290103805038153146ull, 5815080321375556215ull}}, {{2799171195327109154ull, 13623800200679431266ull, 3250943737870303529ull, 7268850401719445269ull}}, {{12722336031013662251ull, 3194692195567125370ull, 8675365690765267316ull, 9086063002149306586ull}}, {{12563146037810926811ull, 11220054659084229164ull, 10033789575155679976ull, 5678789376343316616ull}}, {{15703932547263658514ull, 14025068323855286455ull, 12542236968944599970ull, 7098486720429145770ull}}, {{15018229665652185238ull, 8307963367964332261ull, 6454424174325974155ull, 8873108400536432213ull}}, {{11692236550246309726ull, 2886634095764013711ull, 6339858118167427799ull, 5545692750335270133ull}}, {{10003609669380499253ull, 17443350674987180851ull, 12536508666136672652ull, 6932115937919087666ull}}, {{7892826068298236162ull, 3357444270024424448ull, 6447263795816065008ull, 8665144922398859583ull}}, {{4933016292686397602ull, 2098402668765265280ull, 10947068900026122486ull, 5415715576499287239ull}}, {{6166270365857997002ull, 11846375372811357408ull, 9072150106605265203ull, 6769644470624109049ull}}, {{7707837957322496252ull, 10196283197586808856ull, 15951873651683969408ull, 8462055588280136311ull}}, {{4817398723326560158ull, 6372676998491755535ull, 16887450059943562736ull, 5288784742675085194ull}}, {{1410062385730812293ull, 7965846248114694419ull, 11885940538074677612ull, 6610980928343856493ull}}, {{15597636037445679079ull, 9957307810143368023ull, 1022367617311183303ull, 8263726160429820617ull}}, {{16666051551044631280ull, 13140846408980686870ull, 12168194806887959324ull, 5164828850268637885ull}}, {{11609192401951013292ull, 16426058011225858588ull, 1375185453327785443ull, 6456036062835797357ull}}, {{14511490502438766615ull, 15920886495604935331ull, 6330667835087119708ull, 8070045078544746696ull}}, {{6763838554810535183ull, 727182022898308774ull, 3956667396929449818ull, 5043778174090466685ull}}, {{17678170230367944786ull, 10132349565477661775ull, 9557520264589200176ull, 6304722717613083356ull}}, {{17486026769532543079ull, 12665436956847077219ull, 11946900330736500220ull, 7880903397016354195ull}}, {{8622923721744145472ull, 17139270134884199070ull, 5160969697496618685ull, 4925564623135221372ull}}, {{1555282615325406032ull, 7589029613323085126ull, 6451212121870773357ull, 6156955778919026715ull}}, {{11167475306011533348ull, 14097973035081244311ull, 3452329133911078792ull, 7696194723648783394ull}}, {{13897201093898290199ull, 8811233146925777694ull, 6769391727121812149ull, 4810121702280489621ull}}, {{8148129330518086940ull, 15625727452084610022ull, 13073425677329653090ull, 6012652127850612026ull}}, {{961789626292832867ull, 10308787278250986720ull, 7118410059807290555ull, 7515815159813265033ull}}, {{601118516433020542ull, 4137149039693172748ull, 15978221333448026357ull, 4697384474883290645ull}}, {{751398145541275678ull, 9783122318043853839ull, 6137718611527869234ull, 5871730593604113307ull}}, {{14774305737208758309ull, 3005530860700041490ull, 3060462245982448639ull, 7339663242005141634ull}}, {{9244510134656172078ull, 17591971631157215575ull, 13048949844332836606ull, 9174579052506427042ull}}, {{12695347861801189405ull, 6383296251045871830ull, 12767279671135410783ull, 5734111907816516901ull}}, {{6645812790396710948ull, 3367434295379951884ull, 2124041533637099767ull, 7167639884770646127ull}}, {{8307265987995888685ull, 18044350924507103567ull, 16490109972328538420ull, 8959549855963307658ull}}, {{12109570270138512284ull, 2054347290962163921ull, 14918004751132724417ull, 5599718659977067286ull}}, {{1301904782390976643ull, 7179620132130092806ull, 9424133902061129713ull, 6999648324971334108ull}}, {{10850753014843496612ull, 13586211183590003911ull, 11780167377576412141ull, 8749560406214167635ull}}, {{13699249661918267239ull, 10797224998957446396ull, 5056761601771563636ull, 5468475253883854772ull}}, {{17124062077397834048ull, 13496531248696807995ull, 6320952002214454545ull, 6835594067354818465ull}}, {{16793391578319904656ull, 3035606005588846282ull, 12512876021195456086ull, 8544492584193523081ull}}, {{15107555754877328314ull, 15732311808775192638ull, 903018485606078197ull, 5340307865120951926ull}}, {{9661072656741884585ull, 5830331705686827086ull, 10352145143862373555ull, 6675384831401189907ull}}, {{2852968784072579923ull, 2676228613681145954ull, 8328495411400579040ull, 8344231039251487384ull}}, {{6394791508472750356ull, 1672642883550716221ull, 5205309632125361900ull, 5215144399532179615ull}}, {{12605175404018325849ull, 2090803604438395276ull, 1894951021729314471ull, 6518930499415224519ull}}, {{15756469255022907311ull, 16448562560830157807ull, 16203746832443806800ull, 8148663124269030648ull}}, {{16765322312030398926ull, 10280351600518848629ull, 10127341770277379250ull, 5092914452668144155ull}}, {{7121594834755834945ull, 3627067463793784979ull, 8047491194419336159ull, 6366143065835180194ull}}, {{4290307525017405777ull, 18368892385024394936ull, 835991956169394390ull, 7957678832293975243ull}}, {{2681442203135878611ull, 6868871722212858931ull, 16663396037101729158ull, 4973549270183734526ull}}, {{17186860809202011975ull, 17809461689620849471ull, 11605873009522385639ull, 6216936587729668158ull}}, {{16871889993075127065ull, 17650141093598673935ull, 5283969225048206241ull, 7771170734662085198ull}}, {{17462460273313036272ull, 4113809155858089353ull, 17137538820937292613ull, 4856981709163803248ull}}, {{7993017286359131628ull, 9753947463249999596ull, 2975179452462064150ull, 6071227136454754061ull}}, {{9991271607948914534ull, 2969062292207723687ull, 8330660334004968092ull, 7589033920568442576ull}}, {{13162073782609153440ull, 11079035969484603112ull, 5206662708753105057ull, 4743146200355276610ull}}, {{16452592228261441800ull, 13736906573590178ull, 15731700422796157130ull, 5928932750444095762ull}}, {{11342368248472026442ull, 9240543170071763531ull, 10441253491640420604ull, 7411165938055119703ull}}, {{4783137146081322574ull, 14998711518149628015ull, 13443312459916344733ull, 4631978711284449814ull}}, {{1367235414174265314ull, 4913331342404871307ull, 7580768538040655109ull, 5789973389105562268ull}}, {{15544102322999995354ull, 10753350196433477037ull, 9475960672550818886ull, 7237466736381952835ull}}, {{5595069848467830481ull, 4218315708687070489ull, 7233264822261135704ull, 9046833420477441044ull}}, {{15026133701360863811ull, 2636447317929419055ull, 13744162550767985623ull, 5654270887798400652ull}}, {{14170981108273691859ull, 17130617202693937531ull, 17180203188459982028ull, 7067838609748000815ull}}, {{13102040366914726920ull, 2966527429657870298ull, 16863567967147589632ull, 8834798262185001019ull}}, {{12800461247749092229ull, 1854079643536168936ull, 8233886970253549568ull, 5521748913865625637ull}}, {{16000576559686365286ull, 2317599554420211170ull, 14904044731244324864ull, 6902186142332032046ull}}, {{10777348662753180800ull, 2896999443025263963ull, 9406683877200630272ull, 8627732677915040058ull}}, {{4429999905007044048ull, 1810624651890789977ull, 10490863441677781824ull, 5392332923696900036ull}}, {{10149185899686192964ull, 2263280814863487471ull, 13113579302097227280ull, 6740416154621125045ull}}, {{8074796356180353301ull, 2829101018579359339ull, 2556916072339370388ull, 8425520193276406307ull}}, {{2740904713399026861ull, 10991560173466875395ull, 17738973609707964156ull, 5265950120797753941ull}}, {{17261188947030947288ull, 13739450216833594243ull, 8338658956852791483ull, 6582437650997192427ull}}, {{16964800165361296206ull, 12562626752614604900ull, 5811637677638601450ull, 8228047063746490534ull}}, {{1379628066496034321ull, 12463327738811515967ull, 17467331603806289618ull, 5142529414841556583ull}}, {{15559593138402206613ull, 6355787636659619150ull, 17222478486330474119ull, 6428161768551945729ull}}, {{10226119386147982458ull, 3333048527397136034ull, 7693040052630928937ull, 8035202210689932162ull}}, {{11003010634769876941ull, 13612370375691679781ull, 9419836051321718489ull, 5022001381681207601ull}}, {{18365449311889734080ull, 3180404914332436014ull, 16386481082579536016ull, 6277501727101509501ull}}, {{13733439603007391792ull, 3975506142915545018ull, 6648043297942256308ull, 7846877158876886877ull}}, {{13195085770307007774ull, 11708063376176991444ull, 6460870070427604144ull, 4904298224298054298ull}}, {{16493857212883759717ull, 14635079220221239305ull, 17299459624889280988ull, 6130372780372567872ull}}, {{6782263460822535934ull, 18293849025276549132ull, 3177580457402049619ull, 7662965975465709841ull}}, {{13462286699868860767ull, 9127812631584149255ull, 13515202831944750772ull, 4789353734666068650ull}}, {{12216172356408688055ull, 11409765789480186569ull, 7670631503076162657ull, 5986692168332585813ull}}, {{1435157390228696356ull, 427149181568069500ull, 14199975397272591226ull, 7483365210415732266ull}}, {{10120345405747711031ull, 4878654256907431341ull, 13486670641722757420ull, 4677103256509832666ull}}, {{17262117775612026693ull, 6098317821134289176ull, 7634966265298670967ull, 5846379070637290833ull}}, {{3130903145805481750ull, 3011211257990473567ull, 14155393850050726613ull, 7307973838296613541ull}}, {{17748686987539015899ull, 8375700090915479862ull, 3859184257281244554ull, 9134967297870766927ull}}, {{6481243348784497033ull, 9846498575249562818ull, 9329519188441859702ull, 5709354561169229329ull}}, {{17324926222835397099ull, 3084751182207177714ull, 16273585003979712532ull, 7136693201461536661ull}}, {{12432785741689470566ull, 3855938977758972143ull, 6506923199692476953ull, 8920866501826920827ull}}, {{14688020116197000960ull, 13939176907167827349ull, 1760983990594104143ull, 5575541563641825517ull}}, {{4524967089964087488ull, 12812285115532396283ull, 6812916006670018083ull, 6969426954552281896ull}}, {{1044522844027721455ull, 11403670375988107450ull, 8516145008337522604ull, 8711783693190352370ull}}, {{5264512795944713814ull, 16350666021847342964ull, 9934276648638339531ull, 5444864808243970231ull}}, {{6580640994930892267ull, 15826646508881790801ull, 7806159792370536510ull, 6806081010304962789ull}}, {{12837487262091003238ull, 10559936099247462693ull, 14369385758890558542ull, 8507601262881203486ull}}, {{10329272548020570976ull, 1988274043602276279ull, 4369180080879211185ull, 5317250789300752179ull}}, {{8299904666598325816ull, 7097028572930233253ull, 849789082671626077ull, 6646563486625940224ull}}, {{14986566851675295173ull, 13482971734590179470ull, 1062236353339532596ull, 8308204358282425280ull}}, {{4754918263869671580ull, 17650229370973637977ull, 663897720837207872ull, 5192627723926515800ull}}, {{10555333848264477378ull, 3616042640007495855ull, 829872151046509841ull, 6490784654908144750ull}}, {{8582481291903208819ull, 9131739318436757723ull, 10260712225662913109ull, 8113480818635180937ull}}, {{3058207798225811560ull, 8013180083236667529ull, 17942160187107790453ull, 5070925511646988085ull}}, {{8434445766209652354ull, 14628161122473222315ull, 8592642178602574354ull, 6338656889558735107ull}}, {{5931371189334677538ull, 9061829366236752086ull, 6129116704825830039ull, 7923321111948418884ull}}, {{17542165048616337174ull, 12581172381539051909ull, 13054069977370919582ull, 4952075694967761802ull}}, {{8092648255488257755ull, 6503093440069039079ull, 7094215434858873670ull, 6190094618709702253ull}}, {{5504124300932934289ull, 17352238836941074657ull, 13479455312000979991ull, 7737618273387127816ull}}, {{14969292734151553691ull, 17762678300729253516ull, 8424659570000612494ull, 4836011420866954885ull}}, {{264871843979890498ull, 12979975839056791088ull, 15142510480928153522ull, 6045014276083693606ull}}, {{331089804974863122ull, 7001597761966213052ull, 9704766064305416095ull, 7556267845104617008ull}}, {{9430303164964065259ull, 11293527628869965013ull, 6065478790190885059ull, 4722667403190385630ull}}, {{16399564974632469478ull, 9505223517660068362ull, 16805220524593382132ull, 5903334253987982037ull}}, {{11276084181435811040ull, 11881529397075085453ull, 7171467600459563953ull, 7379167817484977547ull}}, {{9353395622611075852ull, 508426845530846552ull, 2176324241073533519ull, 4611979885928110967ull}}, {{11691744528263844815ull, 14470591612195721902ull, 16555463356624080610ull, 5764974857410138708ull}}, {{5391308623475030210ull, 8864867478389876570ull, 2247585122070549147ull, 7206218571762673386ull}}, {{15962507816198563571ull, 6469398329559957808ull, 12032853439442962242ull, 9007773214703341732ull}}, {{9976567385124102232ull, 8655059974402361534ull, 16743905436506627209ull, 5629858259189588582ull}}, {{3247337194550351982ull, 15430510986430339822ull, 11706509758778508203ull, 7037322823986985728ull}}, {{13282543530042715785ull, 14676452714610536873ull, 14633137198473135254ull, 8796653529983732160ull}}, {{1384060678635615510ull, 4561096928204197642ull, 9145710749045709534ull, 5497908456239832600ull}}, {{10953447885149295195ull, 14924743197110022860ull, 11432138436307136917ull, 6872385570299790750ull}}, {{13691809856436618994ull, 4820870941105364863ull, 5066801008529145339ull, 8590481962874738438ull}}, {{15474910187913968727ull, 707201328977159087ull, 17001808685612879549ull, 5369051226796711523ull}}, {{14731951716465073005ull, 5495687679648836763ull, 16640574838588711532ull, 6711314033495889404ull}}, {{13803253627153953352ull, 6869609599561045954ull, 2353974474526337799ull, 8389142541869861756ull}}, {{13238719535398608749ull, 11211035027366735577ull, 10694606083433736932ull, 5243214088668663597ull}}, {{2713341363966097225ull, 14013793784208419472ull, 17979943622719559069ull, 6554017610835829496ull}}, {{3391676704957621531ull, 3682184174978360628ull, 4028185454689897221ull, 8192522013544786871ull}}, {{11343169977453289265ull, 4607208118575169344ull, 9435144936822267619ull, 5120326258465491794ull}}, {{14178962471816611581ull, 1147324129791573776ull, 2570559134173058716ull, 6400407823081864743ull}}, {{17723703089770764476ull, 1434155162239467220ull, 17048256972998487107ull, 8000509778852330928ull}}, {{1853942394251951990ull, 17037248040895524677ull, 10655160608124054441ull, 5000318611782706830ull}}, {{6929114011242327891ull, 7461501995837242134ull, 4095578723300292244ull, 6250398264728383538ull}}, {{17884764550907685672ull, 9326877494796552667ull, 14342845440980141113ull, 7812997830910479422ull}}, {{8872134835103609593ull, 17358513480316315177ull, 4352592382185200291ull, 4883123644319049639ull}}, {{15701854562306899895ull, 17086455831968006067ull, 829054459304112460ull, 6103904555398812049ull}}, {{15015632184456236965ull, 2911325716250455968ull, 5648004092557528480ull, 7629880694248515061ull}}, {{9384770115285148103ull, 1819578572656534980ull, 5835845567062149252ull, 4768675433905321913ull}}, {{11730962644106435129ull, 2274473215820668725ull, 11906492977255074469ull, 5960844292381652391ull}}, {{828645249850880199ull, 7454777538203223811ull, 10271430203141455182ull, 7451055365477065489ull}}, {{16658804345652657788ull, 47549942949626977ull, 17948858923031879249ull, 4656909603423165930ull}}, {{6988447376783658523ull, 4671123447114421626ull, 13212701616935073253ull, 5821137004278957413ull}}, {{17958931257834348962ull, 10450590327320414936ull, 2680818965886677854ull, 7276421255348696767ull}}, {{4001919998583384587ull, 3839865872295742863ull, 17186081762640511030ull, 9095526569185870958ull}}, {{9418729026755697223ull, 16234974225467003001ull, 6129615083222931489ull, 5684704105741169349ull}}, {{16385097301872009432ull, 6458659726551590039ull, 12273704872456052266ull, 7105880132176461686ull}}, {{15869685608912623886ull, 17296696695044263357ull, 6118759053715289524ull, 8882350165220577108ull}}, {{12224396514784083881ull, 1587063397547888790ull, 13047596445426831761ull, 5551468853262860692ull}}, {{6057123606625329043ull, 6595515265362248892ull, 16309495556783539701ull, 6939336066578575865ull}}, {{7571404508281661304ull, 12856080100130199019ull, 6551811390697260914ull, 8674170083223219832ull}}, {{2426284808462344363ull, 12646736081008762291ull, 4094882119185788071ull, 5421356302014512395ull}}, {{16867914065860094166ull, 11196734082833564959ull, 506916630554847185ull, 6776695377518140494ull}}, {{16473206563897729803ull, 160859548259792487ull, 9857017825048334790ull, 8470869221897675617ull}}, {{17213283130077162983ull, 13935595272944534016ull, 17689851186723679003ull, 5294293263686047260ull}}, {{3069859838886902113ull, 12807808072753279617ull, 3665569909695047138ull, 6617866579607559076ull}}, {{8449010817036015545ull, 6786388054086823713ull, 4581962387118808923ull, 8272333224509448845ull}}, {{16809846806715979476ull, 1935649524590570868ull, 5169569501162949529ull, 5170208265318405528ull}}, {{2565564434685422729ull, 7031247924165601490ull, 6461961876453686911ull, 6462760331648006910ull}}, {{12430327580211554219ull, 4177373886779613958ull, 17300824382421884447ull, 8078450414560008637ull}}, {{3157268719204833483ull, 9528387706878340580ull, 13118858248227371731ull, 5049031509100005398ull}}, {{3946585899006041853ull, 7298798615170537821ull, 7175200773429438856ull, 6311289386375006748ull}}, {{9544918392184940221ull, 9123498268963172276ull, 8969000966786798570ull, 7889111732968758435ull}}, {{15188946031970363446ull, 10313872436529370576ull, 3299782595028055154ull, 4930694833105474022ull}}, {{539438466253402691ull, 3668968508806937413ull, 13348100280639844751ull, 6163368541381842527ull}}, {{5285984101244141268ull, 18421268691290835478ull, 12073439332372418034ull, 7704210676727303159ull}}, {{17138798118559752005ull, 16124978950484160077ull, 14463428610373843127ull, 4815131672954564474ull}}, {{7588439592917526294ull, 15544537669677812193ull, 8855913726112528101ull, 6018914591193205593ull}}, {{14097235509574295771ull, 5595614031815101529ull, 15681578176068048031ull, 7523643238991506991ull}}, {{1893243165842853001ull, 10414787797525520312ull, 16718515387683611875ull, 4702277024369691869ull}}, {{2366553957303566251ull, 8406798728479512486ull, 7063086179322351132ull, 5877846280462114837ull}}, {{12181564483484233622ull, 10508498410599390607ull, 13440543742580326819ull, 7347307850577643546ull}}, {{10615269585927904124ull, 8523936994821850355ull, 7577307641370632716ull, 9184134813222054433ull}}, {{4328700481991246125ull, 14550832658618432280ull, 16265032321925115207ull, 5740084258263784020ull}}, {{5410875602489057657ull, 13576854804845652446ull, 1884546328696842393ull, 7175105322829730026ull}}, {{15986966539966097879ull, 3136010450774901845ull, 11579054947725828800ull, 8968881653537162532ull}}, {{12297697096692505126ull, 1960006531734313653ull, 16460281379183418808ull, 5605551033460726582ull}}, {{1537063315583467696ull, 2450008164667892067ull, 11351979687124497702ull, 7006938791825908228ull}}, {{15756387199761498332ull, 12285882242689640891ull, 14189974608905622127ull, 8758673489782385285ull}}, {{7541898990637242505ull, 14596205429322107413ull, 11174577139779707781ull, 5474170931113990803ull}}, {{14039059756723941036ull, 4410198731370470554ull, 9356535406297246823ull, 6842713663892488504ull}}, {{8325452659050150487ull, 901062395785700289ull, 11695669257871558529ull, 8553392079865610630ull}}, {{16732622957974813814ull, 12092379043434532440ull, 2698107267742336176ull, 5345870049916006644ull}}, {{2469034623758965652ull, 15115473804293165551ull, 3372634084677920220ull, 6682337562395008305ull}}, {{16921351334980870776ull, 447598181656905322ull, 8827478624274788180ull, 8352921952993760381ull}}, {{15187530602790432139ull, 9503120900390341634ull, 7823017149385436564ull, 5220576220621100238ull}}, {{9761041216633264366ull, 11878901125487927043ull, 555399399877019897ull, 6525720275776375298ull}}, {{7589615502364192554ull, 1013568351577745092ull, 9917621286701050680ull, 8157150344720469122ull}}, {{13966881725832396154ull, 633480219736090682ull, 10810199322615544579ull, 5098218965450293201ull}}, {{8235230120435719385ull, 14626908329952277065ull, 18124435171696818627ull, 6372773706812866501ull}}, {{14905723668972037135ull, 13671949394012958427ull, 8820485909338859572ull, 7965967133516083127ull}}, {{7010234283893829257ull, 17768340408112874825ull, 12430332720977869088ull, 4978729458447551954ull}}, {{13374478873294674476ull, 3763681436431541915ull, 6314543864367560553ull, 6223411823059439943ull}}, {{12106412573190955190ull, 9316287813966815298ull, 3281493812032062787ull, 7779264778824299929ull}}, {{12178193876671734898ull, 3516836874515565609ull, 13580148678588509002ull, 4862040486765187455ull}}, {{1387684290557504911ull, 13619418129999232820ull, 12363499829808248348ull, 6077550608456484319ull}}, {{1734605363196881138ull, 17024272662499041025ull, 10842688768832922531ull, 7596938260570605399ull}}, {{12613343398066520472ull, 8334327404848206688ull, 13694209508161658438ull, 4748086412856628374ull}}, {{15766679247583150589ull, 1194537219205482552ull, 7894389848347297240ull, 5935108016070785468ull}}, {{1261604985769386620ull, 1493171524006853191ull, 9867987310434121550ull, 7418885020088481835ull}}, {{7706032143746948494ull, 14768290257786446956ull, 3861649059807632016ull, 4636803137555301147ull}}, {{9632540179683685617ull, 13618748523507079ull, 215375306332152117ull, 5796003921944126434ull}}, {{7428989206177219118ull, 4628709454081771753ull, 9492591169769965954ull, 7245004902430158042ull}}, {{13897922526148911801ull, 15009258854456990499ull, 2642366925357681634ull, 9056256128037697553ull}}, {{6380358569629375924ull, 13992472802463006966ull, 13180694374417020781ull, 5660160080023560970ull}}, {{17198820248891495712ull, 3655532947796594995ull, 7252495931166500169ull, 7075200100029451213ull}}, {{16886839292686981736ull, 9181102203173131648ull, 13677305932385513115ull, 8844000125036814016ull}}, {{10554274557929363585ull, 3432345867769513328ull, 8548316207740945697ull, 5527500078148008760ull}}, {{13192843197411704482ull, 8902118353139279564ull, 10685395259676182121ull, 6909375097685010950ull}}, {{16491053996764630602ull, 15739333959851487359ull, 4133372037740451843ull, 8636718872106263688ull}}, {{17224437775618975982ull, 7531240715693485647ull, 2583357523587782402ull, 5397949295066414805ull}}, {{16918861201096332074ull, 190678857762081251ull, 7840882922912115907ull, 6747436618833018506ull}}, {{16536890482943027188ull, 14073406627484765276ull, 577731616785369075ull, 8434295773541273133ull}}, {{1112184514984616185ull, 6490036132964284346ull, 2666925269704549624ull, 5271434858463295708ull}}, {{10613602680585546039ull, 8112545166205355432ull, 3333656587130687030ull, 6589293573079119635ull}}, {{13267003350731932549ull, 917309420901918482ull, 18002128789195522500ull, 8236616966348899543ull}}, {{12903563112634845747ull, 9796690424918474859ull, 18168859520888283418ull, 5147885603968062214ull}}, {{11517767872366169280ull, 3022490994293317766ull, 13487702364255578465ull, 6434857004960077768ull}}, {{5173837803602935792ull, 8389799761294035112ull, 16859627955319473081ull, 8043571256200097210ull}}, {{3233648627251834870ull, 16772839896877241705ull, 15148953490502058579ull, 5027232035125060756ull}}, {{8653746802492181491ull, 16354363852669164227ull, 489447789418021608ull, 6284040043906325946ull}}, {{6205497484687838960ull, 1996210742126903668ull, 9835181773627302819ull, 7855050054882907432ull}}, {{13101807964784675158ull, 17388532778325172456ull, 6146988608517064261ull, 4909406284301817145ull}}, {{16377259955980843948ull, 7900607917624301858ull, 12295421779073718231ull, 6136757855377271431ull}}, {{11248202908121279126ull, 5264073878602989419ull, 10757591205414759885ull, 7670947319221589289ull}}, {{4724283808362105502ull, 5595889183340562339ull, 18252709549452694688ull, 4794342074513493305ull}}, {{1293668742025243974ull, 6994861479175702924ull, 8980828881533704648ull, 5992927593141866632ull}}, {{1617085927531554967ull, 8743576848969628655ull, 11226036101917130810ull, 7491159491427333290ull}}, {{7928207732348303710ull, 10076421549033405813ull, 11627958582125594660ull, 4681974682142083306ull}}, {{14521945683862767542ull, 12595526936291757266ull, 5311576190802217517ull, 5852468352677604133ull}}, {{8929060067973683619ull, 1909350615082532871ull, 11251156256930159801ull, 7315585440847005166ull}}, {{6549639066539716620ull, 6998374287280553993ull, 4840573284307923943ull, 9144481801058756458ull}}, {{15622739462655792648ull, 11291512957191428101ull, 7637044321119840368ull, 5715301125661722786ull}}, {{5693366273037577097ull, 14114391196489285127ull, 322933364545024652ull, 7144126407077153483ull}}, {{2505021822869583468ull, 17642988995611606409ull, 14238724760963444527ull, 8930158008846441853ull}}, {{13094853685361959428ull, 17944397149898335861ull, 11205045984815846781ull, 5581348755529026158ull}}, {{2533509051420285572ull, 8595438382090756115ull, 4782935444165032669ull, 6976685944411282698ull}}, {{17001944369557520677ull, 15355983996040833047ull, 15202041342061066644ull, 8720857430514103372ull}}, {{17543744258614532279ull, 374117960670744846ull, 277903801933390845ull, 5450535894071314608ull}}, {{12706308286413389541ull, 5079333469265818962ull, 347379752416738556ull, 6813169867589143260ull}}, {{6659513321161961118ull, 6349166836582273703ull, 434224690520923195ull, 8516462334486429075ull}}, {{11079724853367307555ull, 1662386263650227112ull, 16412291496071434661ull, 5322788959054018171ull}}, {{13849656066709134444ull, 6689668847990171794ull, 15903678351661905422ull, 6653486198817522714ull}}, {{8088698046531642247ull, 17585458096842490551ull, 10656225902722605969ull, 8316857748521903393ull}}, {{11972965306723358260ull, 4073382282885474738ull, 18189356235270098491ull, 5198036092826189620ull}}, {{5742834596549422017ull, 480041835179455519ull, 4289951220378071498ull, 6497545116032737026ull}}, {{2566857227259389617ull, 9823424330829095207ull, 14585811062327365180ull, 8121931395040921282ull}}, {{8521814794678200367ull, 15363012243622960312ull, 13727817932381991141ull, 5076207121900575801ull}}, {{10652268493347750459ull, 5368707249246536678ull, 3324714360195325215ull, 6345258902375719752ull}}, {{4091963579829912265ull, 2099198043130782944ull, 4155892950244156519ull, 7931573627969649690ull}}, {{2557477237393695166ull, 8229527804597821196ull, 7209119112329985728ull, 4957233517481031056ull}}, {{3196846546742118957ull, 10286909755747276495ull, 9011398890412482160ull, 6196541896851288820ull}}, {{17831116238709812409ull, 12858637194684095618ull, 11264248613015602700ull, 7745677371064111025ull}}, {{15756133667621020660ull, 17260020283532335569ull, 122626355493669831ull, 4841048356915069391ull}}, {{5860109029244112112ull, 16963339335988031558ull, 13988340999649251001ull, 6051310446143836738ull}}, {{16548508323409915948ull, 7369116114702875735ull, 8262054212706787944ull, 7564138057679795923ull}}, {{17260346729772279324ull, 4605697571689297334ull, 2857940873728048513ull, 4727586286049872452ull}}, {{12352061375360573347ull, 10368807983039009572ull, 3572426092160060641ull, 5909482857562340565ull}}, {{15440076719200716683ull, 17572695997226149869ull, 9077218633627463705ull, 7386853571952925706ull}}, {{11955890958714141879ull, 4065405970625261812ull, 10284947664444552720ull, 4616783482470578566ull}}, {{14944863698392677349ull, 5081757463281577265ull, 3632812543700915092ull, 5770979353088223208ull}}, {{4846021567708682974ull, 6352196829101971582ull, 4541015679626143865ull, 7213724191360279010ull}}, {{15280898996490629525ull, 12551932054804852381ull, 14899641636387455639ull, 9017155239200348762ull}}, {{11856404882020337406ull, 14762486561894114594ull, 13923962041169547678ull, 5635722024500217976ull}}, {{5597134065670645949ull, 9229736165512867435ull, 17404952551461934598ull, 7044652530625272470ull}}, {{2384731563660919532ull, 2313798170036308486ull, 12532818652472642440ull, 8805815663281590588ull}}, {{15325515282570238420ull, 1446123856272692803ull, 17056383694650177333ull, 5503634789550994117ull}}, {{14545208084785410120ull, 6419340838768253908ull, 7485421563030557954ull, 6879543486938742647ull}}, {{18181510105981762650ull, 17247548085315093193ull, 4745090935360809538ull, 8599429358673428309ull}}, {{4445914788597519801ull, 15391403571749321150ull, 5271524843814199913ull, 5374643349170892693ull}}, {{14780765522601675559ull, 5404196409404487725ull, 11201092073195137796ull, 6718304186463615866ull}}, {{4640898847969930736ull, 6755245511755609657ull, 4777993054639146437ull, 8397880233079519833ull}}, {{14429776826049676470ull, 6527871454060949987ull, 14515460705217936283ull, 5248675145674699895ull}}, {{13425535014134707684ull, 3548153299148799580ull, 13532639863095032450ull, 6560843932093374869ull}}, {{16781918767668384605ull, 13658563660790775283ull, 3080741773586626850ull, 8201054915116718587ull}}, {{8182856220579046426ull, 13148288306421622456ull, 18066364672987499445ull, 5125659321947949116ull}}, {{10228570275723808033ull, 2600302327744864358ull, 4136211767524822691ull, 6407074152434936396ull}}, {{3562340807799984233ull, 17085435964963244160ull, 5170264709406028363ull, 8008842690543670495ull}}, {{2226463004874990146ull, 8372554468888333648ull, 10148944471019849583ull, 5005526681589794059ull}}, {{2783078756093737682ull, 5854007067683029156ull, 8074494570347424075ull, 6256908351987242574ull}}, {{3478848445117172102ull, 2705822816176398541ull, 869746176079504286ull, 7821135439984053218ull}}, {{4480123287411926516ull, 15526197315392412800ull, 5155277378477078082ull, 4888209649990033261ull}}, {{5600154109264908145ull, 10184374607385740192ull, 11055782741523735507ull, 6110262062487541576ull}}, {{7000192636581135181ull, 8118782240804787336ull, 13819728426904669384ull, 7637827578109426970ull}}, {{4375120397863209488ull, 5074238900502992085ull, 13249016285242806269ull, 4773642236318391856ull}}, {{10080586515756399764ull, 10954484644056128010ull, 16561270356553507836ull, 5967052795397989820ull}}, {{3377361107840723897ull, 13693105805070160013ull, 2254843871982333179ull, 7458815994247487276ull}}, {{4416693701614146388ull, 6252348118955156056ull, 10632649456843734045ull, 4661759996404679547ull}}, {{5520867127017682985ull, 12427121167121332974ull, 8679125802627279652ull, 5827199995505849434ull}}, {{16124455945626879539ull, 15533901458901666217ull, 1625535216429323757ull, 7283999994382311793ull}}, {{6320511876751435711ull, 5582318768344919060ull, 6643605038964042601ull, 9104999992977889741ull}}, {{13173691959824423128ull, 15018164276284044172ull, 6458096158566220577ull, 5690624995611181088ull}}, {{16467114949780528910ull, 4937647290072891503ull, 8072620198207775722ull, 7113281244513976360ull}}, {{15972207668798273233ull, 15395431149445890187ull, 10090775247759719652ull, 8891601555642470450ull}}, {{7676786783785226819ull, 398772431548905559ull, 10918420548277212687ull, 5557250972276544031ull}}, {{4984297461304145619ull, 14333523594718295661ull, 9036339666919127954ull, 6946563715345680039ull}}, {{10842057845057569928ull, 8693532456543093768ull, 6683738565221522039ull, 8683204644182100049ull}}, {{6776286153160981205ull, 12350986812980515461ull, 15706551649331921034ull, 5427002902613812530ull}}, {{13082043709878614410ull, 6215361479370868518ull, 10409817524810125485ull, 6783753628267265663ull}}, {{7129182600493492205ull, 12380887867640973552ull, 8400585887585268952ull, 8479692035334082079ull}}, {{4455739125308432628ull, 7738054917275608470ull, 12167895207381874951ull, 5299807522083801299ull}}, {{14793045943490316593ull, 5060882628167122683ull, 10598182990799955785ull, 6624759402604751624ull}}, {{13879621410935507837ull, 10937789303636291258ull, 13247728738499944731ull, 8280949253255939530ull}}, {{13286449400262080303ull, 4530275305558988084ull, 12891516479989853361ull, 5175593283284962206ull}}, {{16608061750327600378ull, 10274530150376123009ull, 6891023563132540893ull, 6469491604106202758ull}}, {{6925019132627336760ull, 17454848706397541666ull, 17837151490770451924ull, 8086864505132753447ull}}, {{8939822976319473379ull, 1685908404643687733ull, 18065748709372614309ull, 5054290315707970904ull}}, {{15786464738826729628ull, 6719071524231997570ull, 4135441813006216270ull, 6317862894634963631ull}}, {{10509708886678636227ull, 17622211442144772771ull, 557616247830382433ull, 7897328618293704539ull}}, {{4262725044960453690ull, 4096353123699401126ull, 16489411219389846685ull, 4935830386433565336ull}}, {{14551778343055342921ull, 9732127423051639311ull, 2165019950527756740ull, 6169787983041956671ull}}, {{13578036910391790747ull, 12165159278814549139ull, 16541332993441859637ull, 7712234978802445838ull}}, {{6180430059781175265ull, 9909067558472787164ull, 5726647102473774369ull, 4820146861751528649ull}}, {{7725537574726469081ull, 16998020466518371859ull, 11769994896519605865ull, 6025183577189410811ull}}, {{5045235949980698447ull, 7412467527865801112ull, 10100807602222119428ull, 7531479471486763514ull}}, {{3153272468737936530ull, 13856164241770901503ull, 10924690769816212546ull, 4707174669679227196ull}}, {{17776648641204584374ull, 8096833265358851070ull, 13655863462270265683ull, 5883968337099033995ull}}, {{12997438764650954659ull, 5509355563271175934ull, 12458143309410444200ull, 7354960421373792494ull}}, {{7023426418958917516ull, 6886694454088969918ull, 6349307099908279442ull, 9193700526717240618ull}}, {{18224699567131487160ull, 8915870052232994102ull, 8580002955870062555ull, 5746062829198275386ull}}, {{13557502422059583141ull, 6533151546863854724ull, 1501631657982802386ull, 7182578536497844233ull}}, {{16946878027574478926ull, 17389811470434594213ull, 6488725590905890886ull, 8978223170622305291ull}}, {{12897641776447743281ull, 6256946150594233479ull, 1749610485102487852ull, 5611389481638940807ull}}, {{11510366202132291197ull, 7821182688242791849ull, 16022071161660273527ull, 7014236852048676008ull}}, {{552899697383200285ull, 5164792341876101908ull, 1580844878365790293ull, 8767796065060845011ull}}, {{9568934347719275986ull, 5533838222886257644ull, 17128929113474476597ull, 5479872540663028131ull}}, {{11961167934649094982ull, 11528983797035209959ull, 16799475373415707842ull, 6849840675828785164ull}}, {{10339773899883980824ull, 5187857709439236641ull, 2552600143060083187ull, 8562300844785981456ull}}, {{17991573733495957775ull, 936568059185828948ull, 1595375089412551992ull, 5351438027991238410ull}}, {{4042723093160395603ull, 1170710073982286186ull, 11217590898620465798ull, 6689297534989048012ull}}, {{14276775903305270311ull, 10686759629332633540ull, 14021988623275582247ull, 8361621918736310015ull}}, {{18146356976420569753ull, 13596753795973977818ull, 15681271917188320760ull, 5226013699210193759ull}}, {{13459574183670936383ull, 16995942244967472273ull, 14989903878058013046ull, 6532517124012742199ull}}, {{2989409674306506767ull, 12021555769354564534ull, 14125693829145128404ull, 8165646405015927749ull}}, {{15703439101723730441ull, 16736844392701378641ull, 11134401652429399204ull, 5103529003134954843ull}}, {{5794240821872499339ull, 2474311417167171686ull, 9306316047109361102ull, 6379411253918693554ull}}, {{16466173064195399982ull, 12316261308313740415ull, 2409523022031925569ull, 7974264067398366943ull}}, {{17208887192763206845ull, 780134290055005903ull, 8423480916411035337ull, 4983915042123979339ull}}, {{16899422972526620652ull, 5586853880996145283ull, 5917665127086406267ull, 6229893802654974174ull}}, {{16512592697230887911ull, 2371881332817793700ull, 16620453445712783642ull, 7787367253318717717ull}}, {{1096998398914529137ull, 6094111851438508967ull, 12693626412784183728ull, 4867104533324198573ull}}, {{15206306053925325133ull, 7617639814298136208ull, 2031974960698065948ull, 6083880666655248217ull}}, {{561138493697104800ull, 9522049767872670261ull, 7151654719299970339ull, 7604850833319060271ull}}, {{2656554567774384452ull, 3645438095706724961ull, 11387313227203563318ull, 4753031770824412669ull}}, {{7932379228145368469ull, 13780169656488182009ull, 399083478722290435ull, 5941289713530515837ull}}, {{14527160053609098490ull, 12613526052182839607ull, 5110540366830250948ull, 7426612141913144796ull}}, {{15997004061146768412ull, 17106825819469050562ull, 12417459766123682650ull, 4641632588695715497ull}}, {{10772883039578684707ull, 12160160237481537395ull, 1686766652372439601ull, 5802040735869644372ull}}, {{8854417781045967980ull, 1365142241569758032ull, 2108458315465549502ull, 7252550919837055465ull}}, {{11068022226307459975ull, 10929799838816973348ull, 7247258912759324781ull, 9065688649796319331ull}}, {{16140885928296938293ull, 9136967908474302294ull, 2223693811260884036ull, 5666055406122699582ull}}, {{10952735373516397058ull, 11421209885592877868ull, 12002989300930880853ull, 7082569257653374477ull}}, {{13690919216895496322ull, 441454301708933623ull, 1168678570881437355ull, 8853211572066718097ull}}, {{15474353538200767057ull, 16416810003063941178ull, 12259639152869368106ull, 5533257232541698810ull}}, {{10119569885896183014ull, 11297640466975150665ull, 6101176904231934325ull, 6916571540677123513ull}}, {{17261148375797616671ull, 286992528436774619ull, 12238157148717305811ull, 8645714425846404391ull}}, {{8482374725659816467ull, 16320271394768841801ull, 14566377245589397987ull, 5403571516154002744ull}}, {{15214654425502158488ull, 15788653225033664347ull, 18207971556986747484ull, 6754464395192503430ull}}, {{14406632013450310206ull, 1289072457582528818ull, 13536592409378658548ull, 8443080493990629288ull}}, {{13615831026833831783ull, 10029042322843856319ull, 8460370255861661592ull, 5276925308744143305ull}}, {{12408102765114901825ull, 12536302903554820399ull, 15187148838254464894ull, 6596156635930179131ull}}, {{10898442437966239377ull, 6447006592588749691ull, 14372250029390693214ull, 8245195794912723914ull}}, {{4505683514515205659ull, 17864437175650132269ull, 13594342286796571162ull, 5153247371820452446ull}}, {{10243790411571394977ull, 13107174432707889528ull, 7769555821640938145ull, 6441559214775565558ull}}, {{12804738014464243721ull, 2548909985602698198ull, 488572740196396874ull, 8051949018469456948ull}}, {{3391275240612764422ull, 6204754759429074278ull, 9528729999477523854ull, 5032468136543410592ull}}, {{13462466087620731335ull, 16979315486141118655ull, 11910912499346904817ull, 6290585170679263240ull}}, {{12216396591098526265ull, 7389086302394234607ull, 14888640624183631022ull, 7863231463349079050ull}}, {{14552776897077660772ull, 6492920569008725ull, 13917086408542157293ull, 4914519664593174406ull}}, {{4355913066064912253ull, 4619802169138648811ull, 8172985973822920808ull, 6143149580741468008ull}}, {{833205314153752412ull, 5774752711423311014ull, 10216232467278651010ull, 7678936975926835010ull}}, {{14355811376628258970ull, 8220906463066957287ull, 10996831310476544785ull, 4799335609954271881ull}}, {{13333078202357935808ull, 14887819097261084513ull, 18357725156523068885ull, 5999169512442839851ull}}, {{2831289697665256048ull, 4774715816294191930ull, 18335470427226448203ull, 7498961890553549814ull}}, {{6381242079468172934ull, 678354375970176004ull, 6847982998589142223ull, 4686851181595968634ull}}, {{7976552599335216167ull, 14683001025244883717ull, 17783350785091203586ull, 5858563976994960792ull}}, {{14582376767596408113ull, 9130379244701328838ull, 3782444407654452867ull, 7323204971243700991ull}}, {{9004598922640734333ull, 6801288037449273144ull, 116369491140678180ull, 9154006214054626239ull}}, {{5627874326650458958ull, 13474177060260571523ull, 6990259959604005718ull, 5721253883784141399ull}}, {{2423156889885685794ull, 7619349288470938596ull, 4126138931077619244ull, 7151567354730176749ull}}, {{3028946112357107242ull, 9524186610588673245ull, 9769359682274411959ull, 8939459193412720936ull}}, {{4198934329436885979ull, 12870145659259002634ull, 6105849801421507474ull, 5587161995882950585ull}}, {{14472039948650883281ull, 6864310037218977484ull, 12243998270204272247ull, 6983952494853688231ull}}, {{18090049935813604101ull, 3968701528096333951ull, 10693311819327952405ull, 8729940618567110289ull}}, {{18223810237524584419ull, 4786281464273902671ull, 18212534933148440013ull, 5456212886604443930ull}}, {{18168076778478342620ull, 10594537848769766243ull, 13542296629580774208ull, 6820266108255554913ull}}, {{18098409954670540371ull, 13243172310962207804ull, 3092812731693804048ull, 8525332635319443642ull}}, {{2088134184814311924ull, 8276982694351379878ull, 6544693975736015434ull, 5328332897074652276ull}}, {{11833539767872665713ull, 1122856331084449039ull, 8180867469670019293ull, 6660416121343315345ull}}, {{10180238691413444237ull, 6015256432282949203ull, 14837770355514912020ull, 8325520151679144181ull}}, {{4056806172919708696ull, 12982907307031619060ull, 11579449481410513964ull, 5203450094799465113ull}}, {{5071007716149635870ull, 16228634133789523825ull, 639253796480978743ull, 6504312618499331392ull}}, {{10950445663614432742ull, 15674106648809516877ull, 799067245601223429ull, 8130390773124164240ull}}, {{9149871548972714416ull, 12102159664719642000ull, 499417028500764643ull, 5081494233202602650ull}}, {{11437339436215893020ull, 10516013562472164596ull, 9847643322480731612ull, 6351867791503253312ull}}, {{14296674295269866275ull, 13145016953090205745ull, 12309554153100914515ull, 7939834739379066640ull}}, {{2017892406902584566ull, 5909792586467684639ull, 7693471345688071572ull, 4962396712111916650ull}}, {{16357423563910394419ull, 7387240733084605798ull, 393467145255313657ull, 6202995890139895813ull}}, {{11223407418033217216ull, 13845736934783145152ull, 5103519949996529975ull, 7753744862674869766ull}}, {{7014629636270760760ull, 15571114611880547576ull, 17024758024029994946ull, 4846090539171793603ull}}, {{8768287045338450950ull, 10240521227995908662ull, 16669261511610105779ull, 6057613173964742004ull}}, {{1736986769818287879ull, 8188965516567497924ull, 2389832815803080608ull, 7572016467455927506ull}}, {{10308988767991205733ull, 5118103447854686202ull, 6105331528304313284ull, 4732510292159954691ull}}, {{3662863923134231358ull, 6397629309818357753ull, 3019978391953003701ull, 5915637865199943364ull}}, {{9190265922345177101ull, 12608722655700335095ull, 3774972989941254626ull, 7394547331499929205ull}}, {{12661445229106817544ull, 12492137678240097338ull, 4665201127926978093ull, 4621592082187455753ull}}, {{6603434499528746122ull, 1780114042517957961ull, 10443187428336110521ull, 5776990102734319691ull}}, {{12865979142838320557ull, 6836828571574835355ull, 8442298266992750247ull, 7221237628417899614ull}}, {{11470787910120512792ull, 3934349696041156290ull, 1329500796886162001ull, 9026547035522374518ull}}, {{11780928462252708399ull, 13988183606094192441ull, 14665996053336014962ull, 5641591897201484073ull}}, {{891102522533721787ull, 8261857470762964744ull, 4497437011387854991ull, 7051989871501855092ull}}, {{1113878153167152233ull, 5715635820026318026ull, 5621796264234818739ull, 8814987339377318865ull}}, {{5307859864156858050ull, 1266429378302754814ull, 15042837711215231472ull, 5509367087110824290ull}}, {{15858196867050848370ull, 1583036722878443517ull, 9580175102164263532ull, 6886708858888530363ull}}, {{5987688028531396751ull, 1978795903598054397ull, 7363532859277941511ull, 8608386073610662954ull}}, {{6048148027045816922ull, 8154276467389865854ull, 9213894055476101348ull, 5380241296006664346ull}}, {{16783557070662046960ull, 10192845584237332317ull, 2293995532490350877ull, 6725301620008330433ull}}, {{7144388283045394988ull, 17352742998724053301ull, 7479180434040326500ull, 8406627025010413041ull}}, {{6771085686117065819ull, 1622092337347757505ull, 16203702817343673823ull, 5254141890631508150ull}}, {{13075543126073720178ull, 15862673476966860593ull, 11031256484824816470ull, 6567677363289385188ull}}, {{2509370852309986511ull, 10604969809353799934ull, 13789070606031020588ull, 8209596704111731485ull}}, {{15403414837975905281ull, 15851478167700900766ull, 10924012137983081819ull, 5130997940069832178ull}}, {{10030896510615105793ull, 15202661691198738054ull, 4431643135624076466ull, 6413747425087290223ull}}, {{3315248601414106434ull, 9779955077143646760ull, 927867901102707679ull, 8017184281359112779ull}}, {{2072030375883816521ull, 13030000950855861081ull, 16720818502685049963ull, 5010740175849445486ull}}, {{7201723988282158555ull, 11675815170142438447ull, 11677651091501536646ull, 6263425219811806858ull}}, {{4390468966925310290ull, 5371396925823272251ull, 5373691827522145000ull, 7829281524764758573ull}}, {{438200095114624980ull, 3357123078639545157ull, 5664400401415034577ull, 4893300952977974108ull}}, {{5159436137320669128ull, 8808089866726819350ull, 7080500501768793221ull, 6116626191222467635ull}}, {{15672667208505612218ull, 15621798351835912091ull, 4238939608783603622ull, 7645782739028084544ull}}, {{7489573996102313685ull, 5151937951470057153ull, 2649337255489752264ull, 4778614211892552840ull}}, {{13973653513555280010ull, 6439922439337571441ull, 3311671569362190330ull, 5973267764865691050ull}}, {{3632008836661936300ull, 17273275086026740110ull, 13362961498557513720ull, 7466584706082113812ull}}, {{16105063578195873900ull, 10795796928766712568ull, 17575222973453221883ull, 4666615441301321132ull}}, {{1684585399035290758ull, 8883060142531002807ull, 3522284643106975738ull, 5833269301626651416ull}}, {{15940789804076277160ull, 1880453141308977700ull, 4402855803883719673ull, 7291586627033314270ull}}, {{1479243181385794834ull, 6962252445063610030ull, 14726941791709425399ull, 9114483283791642837ull}}, {{14759585043648285483ull, 11268936805805838124ull, 11510181629032084826ull, 5696552052369776773ull}}, {{2737230850805238ull, 4862798970402521848ull, 552668981007942321ull, 7120690065462220967ull}}, {{3421538563506547ull, 10690184731430540214ull, 14525894281542091613ull, 8900862581827776208ull}}, {{13837196516884355304ull, 8987208466357781585ull, 9078683925963807258ull, 5563039113642360130ull}}, {{3461437590823280418ull, 2010638546092451174ull, 2124982870599983265ull, 6953798892052950163ull}}, {{13550169025383876331ull, 7124984201042951871ull, 16491286643532142793ull, 8692248615066187703ull}}, {{15386384668506004563ull, 15982330171720314679ull, 17224583179848671101ull, 5432655384416367314ull}}, {{14621294817205117799ull, 6142854659368229637ull, 12307356937956063069ull, 6790819230520459143ull}}, {{4441560466224233537ull, 12290254342637674951ull, 10772510154017690932ull, 8488524038150573929ull}}, {{9693504319031227817ull, 16904781001003322652ull, 18262033892329526592ull, 5305327523844108705ull}}, {{12116880398789034771ull, 2684232177544601699ull, 8992484310129744529ull, 6631659404805135882ull}}, {{10534414480058905560ull, 7966976240358140028ull, 2017233350807404853ull, 8289574256006419853ull}}, {{15807381086891591783ull, 7285203159437531469ull, 3566613853468321985ull, 5180983910004012408ull}}, {{5924168303332326017ull, 13718189967724302241ull, 4458267316835402481ull, 6476229887505015510ull}}, {{12016896397592795425ull, 3312679404373214089ull, 14796206182899028910ull, 8095287359381269387ull}}, {{593031220854415285ull, 15905482683015422518ull, 6941785855098199116ull, 5059554599613293367ull}}, {{9964661062922794914ull, 1435109280059726531ull, 4065546300445360992ull, 6324443249516616709ull}}, {{7844140310226105738ull, 1793886600074658164ull, 9693618893984089144ull, 7905554061895770886ull}}, {{14125959730746091894ull, 1121179125046661352ull, 1446825790312667811ull, 4940971288684856804ull}}, {{17657449663432614868ull, 15236531961590490402ull, 1808532237890834763ull, 6176214110856071005ull}}, {{12848440042435992777ull, 14433978933560725099ull, 6872351315790931358ull, 7720267638570088756ull}}, {{5724432017308801534ull, 4409550815048065283ull, 13518591609224107907ull, 4825167274106305472ull}}, {{2543854003208614013ull, 900252500382693700ull, 16898239511530134884ull, 6031459092632881840ull}}, {{3179817504010767516ull, 1125315625478367125ull, 2676055315703116989ull, 7539323865791102301ull}}, {{4293228949220423650ull, 3009165275137673405ull, 3978377581528142070ull, 4712077416119438938ull}}, {{9978222204952917466ull, 12984828630776867564ull, 14196344013764953395ull, 5890096770149298672ull}}, {{12472777756191146832ull, 11619349770043696551ull, 17745430017206191744ull, 7362620962686623340ull}}, {{10979286176811545636ull, 14524187212554620689ull, 3735043447798188064ull, 9203276203358279176ull}}, {{18391268906575685783ull, 9077617007846637930ull, 2334402154873867540ull, 5752047627098924485ull}}, {{13765714096364831420ull, 11347021259808297413ull, 7529688712019722329ull, 7190059533873655606ull}}, {{3372084565173875563ull, 348718519478208055ull, 188738853169877104ull, 8987574417342069508ull}}, {{9025081880874754083ull, 217949074673880034ull, 9341333820085948998ull, 5617234010838793442ull}}, {{2057980314238666796ull, 9495808380197125851ull, 2453295238252660439ull, 7021542513548491803ull}}, {{16407533448080497207ull, 7258074456819019409ull, 16901677103097989261ull, 8776928141935614753ull}}, {{3337179377409228899ull, 6842139544725581083ull, 3646019161795161432ull, 5485580088709759221ull}}, {{18006532277043699835ull, 8552674430906976353ull, 9169209970671339694ull, 6856975110887199026ull}}, {{8673107291022461082ull, 1467471001778944634ull, 2238140426484398810ull, 8571218888608998783ull}}, {{10032378075316426080ull, 5528855394539228300ull, 8316366794193831112ull, 5357011805380624239ull}}, {{12540472594145532600ull, 6911069243174035375ull, 5783772474314900986ull, 6696264756725780299ull}}, {{11063904724254527846ull, 17862208590822320027ull, 2618029574466238328ull, 8370330945907225374ull}}, {{4609097443445385952ull, 11163880369263950017ull, 15471326539323562667ull, 5231456841192015858ull}}, {{10373057822734120344ull, 9343164443152549617ull, 10115786137299677526ull, 6539321051490019823ull}}, {{17578008296845038334ull, 2455583517085911213ull, 8033046653197209004ull, 8174151314362524779ull}}, {{13292098194741842911ull, 10758111735033470316ull, 2714811149034561675ull, 5108844571476577987ull}}, {{16615122743427303638ull, 8835953650364449991ull, 17228571991575365806ull, 6386055714345722483ull}}, {{16157217410856741644ull, 1821570026100786681ull, 16924028971041819354ull, 7982569642932153104ull}}, {{3180731854144381672ull, 5750167284740379580ull, 10577518106901137096ull, 4989106026832595690ull}}, {{3975914817680477089ull, 7187709105925474475ull, 3998525596771645562ull, 6236382533540744613ull}}, {{358207503673208457ull, 18208008419261618902ull, 9609843014391944856ull, 7795478166925930766ull}}, {{14058937745077918998ull, 11380005262038511813ull, 1394465865567577631ull, 4872173854328706729ull}}, {{3738614126065235036ull, 9613320559120751863ull, 6354768350386859943ull, 6090217317910883411ull}}, {{61581639154155890ull, 7404964680473551925ull, 3331774419556187025ull, 7612771647388604264ull}}, {{2344331533685041384ull, 16157317971364439713ull, 2082359012222616890ull, 4757982279617877665ull}}, {{7542100435533689633ull, 10973275427350773833ull, 7214634783705659017ull, 5947477849522347081ull}}, {{14039311562844499946ull, 18328280302615855195ull, 13629979498059461675ull, 7434347311902933851ull}}, {{6468726717564118514ull, 9149332179921215545ull, 6212894177073469595ull, 4646467069939333657ull}}, {{12697594415382536047ull, 6824979206474131527ull, 12377803739769224898ull, 5808083837424167071ull}}, {{11260307000800782154ull, 17754596044947440217ull, 10860568656284143218ull, 7260104796780208839ull}}, {{240325695718813981ull, 12969873019329524464ull, 8964024801927791119ull, 9075130995975261049ull}}, {{150203559824258738ull, 15023699664722034646ull, 17131730547273339209ull, 5671956872484538155ull}}, {{9411126486635099230ull, 4944566525620379595ull, 16802977165664286108ull, 7089946090605672694ull}}, {{7152222089866486134ull, 6180708157025474494ull, 11780349420225581827ull, 8862432613257090868ull}}, {{18305196861448717546ull, 1557099588927227606ull, 16586090424495764450ull, 5539020383285681792ull}}, {{13658124039956121124ull, 11169746523013810316ull, 2285868956910153946ull, 6923775479107102241ull}}, {{17072655049945151405ull, 4738811116912487087ull, 7469022214565080337ull, 8654719348883877801ull}}, {{17587938433856801484ull, 14490971994138774189ull, 16197353930171644970ull, 5409199593052423625ull}}, {{8149864987038838143ull, 8890342955818691929ull, 6411634357432392501ull, 6761499491315529532ull}}, {{14799017252225935583ull, 15724614713200752815ull, 8014542946790490626ull, 8451874364144411915ull}}, {{16166914810282291596ull, 14439570214177858413ull, 2703246332530362689ull, 5282421477590257447ull}}, {{6373585457570700782ull, 4214404712440159305ull, 17214115970945117074ull, 6603026846987821808ull}}, {{12578667840390763882ull, 14491377927404974939ull, 3070900889971844726ull, 8253783558734777261ull}}, {{5555824391030533474ull, 4445425186200721433ull, 4225156065446096906ull, 5158614724209235788ull}}, {{11556466507215554747ull, 14780153519605677599ull, 5281445081807621132ull, 6448268405261544735ull}}, {{9833897115592055529ull, 28447825797545383ull, 1990120333832138512ull, 8060335506576930919ull}}, {{13063714724886116562ull, 17779891123465864ull, 8161354236286168426ull, 5037709691610581824ull}}, {{16329643406107645702ull, 9245596900759108138ull, 10201692795357710532ull, 6297137114513227280ull}}, {{11188682220779781320ull, 11556996125948885173ull, 12752115994197138165ull, 7871421393141534100ull}}, {{9298769397201057277ull, 9528965587931747185ull, 17193444533227987161ull, 4919638370713458812ull}}, {{16235147764928709500ull, 16522893003342071885ull, 3045061592825432335ull, 6149547963391823516ull}}, {{6458876650878723163ull, 16041930235750201953ull, 3806326991031790419ull, 7686934954239779395ull}}, {{15566012952867671737ull, 7720363388130182268ull, 73111360181175060ull, 4804334346399862122ull}}, {{1010772117375038055ull, 9650454235162727836ull, 9314761237081244633ull, 6005417932999827652ull}}, {{1263465146718797569ull, 16674753812380797699ull, 11643451546351555791ull, 7506772416249784565ull}}, {{16930566781195106145ull, 17339250160379080417ull, 9583000225683416321ull, 4691732760156115353ull}}, {{7328150421211718969ull, 7839004645191686810ull, 16590436300531658306ull, 5864665950195144191ull}}, {{18383560063369424519ull, 575383769634832704ull, 16126359357237184979ull, 7330832437743930239ull}}, {{4532706005502229033ull, 14554287767325704593ull, 15546263178119093319ull, 9163540547179912799ull}}, {{14362156299507362906ull, 16013958882219647226ull, 16633943513965515180ull, 5727212841987445499ull}}, {{8729323337529427824ull, 1570704529065007417ull, 16180743374029506072ull, 7159016052484306874ull}}, {{15523340190339172684ull, 1963380661331259271ull, 11002557180682106782ull, 8948770065605383593ull}}, {{16619616646603064784ull, 15062170968614200756ull, 18405813283994786498ull, 5592981291003364745ull}}, {{2327776734544279363ull, 9604341673912975138ull, 9172208549711319411ull, 6991226613754205932ull}}, {{12133092955035125012ull, 7393741073963831018ull, 11465260687139149264ull, 8739033267192757415ull}}, {{12194869115324341037ull, 4621088171227394386ull, 14083316957103050146ull, 5461895791995473384ull}}, {{6020214357300650488ull, 14999732250889018791ull, 17604146196378812682ull, 6827369739994341730ull}}, {{2913581928198425206ull, 9526293276756497681ull, 12781810708618740045ull, 8534212174992927163ull}}, {{13350203751192485514ull, 8259776307186505002ull, 5682788683673018576ull, 5333882609370579477ull}}, {{7464382652135831084ull, 10324720383983131253ull, 11715171873018661124ull, 6667353261713224346ull}}, {{13942164333597176759ull, 12905900479978914066ull, 5420592804418550597ull, 8334191577141530433ull}}, {{13325538726925623378ull, 10372030809200515243ull, 14917085548830063883ull, 5208869735713456520ull}}, {{12045237390229641319ull, 8353352493073256150ull, 199612862328028238ull, 6511087169641820651ull}}, {{5833174700932275841ull, 1218318579486794380ull, 14084574133192199010ull, 8138858962052275813ull}}, {{12869106224937448209ull, 5373135130606634391ull, 11108701842458818333ull, 5086786851282672383ull}}, {{11474696762744422357ull, 11328104931685680893ull, 9274191284646135012ull, 6358483564103340479ull}}, {{508312898148364234ull, 14160131164607101117ull, 6981053087380280861ull, 7948104455129175599ull}}, {{2623538570556421598ull, 11155924987093132150ull, 11280687207253757394ull, 4967565284455734749ull}}, {{12502795250050302806ull, 4721534197011639379ull, 265800953785033031ull, 6209456605569668437ull}}, {{11016808044135490603ull, 1290231727837161320ull, 4943937210658679193ull, 7761820756962085546ull}}, {{6885505027584681627ull, 12335609875966695585ull, 7701646775089062399ull, 4851137973101303466ull}}, {{13218567302908239938ull, 10807826326530981577ull, 403686432006552191ull, 6063922466376629333ull}}, {{2688151073353136210ull, 8898096889736339068ull, 5116294058435578143ull, 7579903082970786666ull}}, {{10903466457700485939ull, 12478839583726293773ull, 7809369804949624243ull, 4737439426856741666ull}}, {{18241019090552995328ull, 10986863461230479312ull, 538340219332254496ull, 5921799283570927083ull}}, {{4354529789481692544ull, 13733579326538099141ull, 14507983329447481832ull, 7402249104463658853ull}}, {{5027424127639751792ull, 8583487079086311963ull, 11373332590118370097ull, 4626405690289786783ull}}, {{1672594141122301836ull, 15341044867285277858ull, 9604979719220574717ull, 5783007112862233479ull}}, {{11314114713257653103ull, 5341248028824433610ull, 7394538630598330493ull, 7228758891077791849ull}}, {{4919271354717290571ull, 11288246054457929917ull, 13854859306675301020ull, 9035948613847239811ull}}, {{5380387605912000559ull, 16278525820890982006ull, 6353444057458369185ull, 5647467883654524882ull}}, {{15948856544244776506ull, 6513099220831563795ull, 17165177108677737290ull, 7059334854568156102ull}}, {{15324384661878582729ull, 17364746062894230552ull, 12233099348992395804ull, 8824168568210195128ull}}, {{9577740413674114206ull, 1629594252454118287ull, 7645687093120247378ull, 5515105355131371955ull}}, {{7360489498665254853ull, 11260364852422423667ull, 4945422847972921318ull, 6893881693914214944ull}}, {{4588925854904180662ull, 4852084028673253776ull, 6181778559966151648ull, 8617352117392768680ull}}, {{2868078659315112914ull, 3032552517920783610ull, 3863611599978844780ull, 5385845073370480425ull}}, {{12808470360998666950ull, 3790690647400979512ull, 9441200518400943879ull, 6732306341713100531ull}}, {{16010587951248333688ull, 126677290823836486ull, 7189814629573791945ull, 8415382927141375664ull}}, {{5394931451102820651ull, 11608388352833367564ull, 4493634143483619965ull, 5259614329463359790ull}}, {{6743664313878525814ull, 675427385759545743ull, 14840414716209300765ull, 6574517911829199737ull}}, {{3817894373920769363ull, 5455970250626820083ull, 4715460339979462244ull, 8218147389786499672ull}}, {{80340974486786900ull, 12633353443496538360ull, 2947162712487163902ull, 5136342118616562295ull}}, {{100426218108483625ull, 6568319767515897142ull, 17519011445891118590ull, 6420427648270702868ull}}, {{9348904809490380339ull, 17433771746249647235ull, 3452020233654346621ull, 8025534560338378586ull}}, {{3537222496717793760ull, 13201950350619723474ull, 6769198664461354542ull, 5015959100211486616ull}}, {{13644900157752018008ull, 7279065901419878534ull, 8461498330576693178ull, 6269948875264358270ull}}, {{7832753160335246702ull, 18322204413629623976ull, 1353500876366090664ull, 7837436094080447838ull}}, {{4895470725209529189ull, 11451377758518514985ull, 14680996103010970377ull, 4898397558800279898ull}}, {{10731024424939299390ull, 479164142865980019ull, 9127873091908937164ull, 6122996948500349873ull}}, {{8802094512746736333ull, 598955178582475024ull, 16021527383313559359ull, 7653746185625437341ull}}, {{5501309070466710209ull, 7291876014255128746ull, 12319297623784668551ull, 4783591366015898338ull}}, {{16100008374938163569ull, 4503158999391523028ull, 6175749992876059881ull, 5979489207519872923ull}}, {{1678266394963152845ull, 10240634767666791690ull, 3108001472667686947ull, 7474361509399841154ull}}, {{5660602515279358432ull, 4094553720578050854ull, 6554186938844692246ull, 4671475943374900721ull}}, {{16299125180953973848ull, 14341564187577339375ull, 12804419691983253211ull, 5839344929218625901ull}}, {{15762220457765079406ull, 13315269216044286315ull, 2170466559696902802ull, 7299181161523282377ull}}, {{15091089553778961353ull, 7420714483200582086ull, 7324769218048516407ull, 9123976451904102971ull}}, {{4820244952684462942ull, 11555475579641445660ull, 2272137752066628802ull, 5702485282440064357ull}}, {{6025306190855578677ull, 5220972437697031267ull, 7451858208510673907ull, 7128106603050080446ull}}, {{2919946720142085442ull, 1914529528693901180ull, 91450723783566576ull, 8910133253812600558ull}}, {{11048338736943579210ull, 1196580955433688237ull, 13892214757646892822ull, 5568833283632875348ull}}, {{18422109439606861916ull, 10719098231146886104ull, 17365268447058616027ull, 6961041604541094185ull}}, {{4580892725799025779ull, 8787186770506219727ull, 7871527503541106322ull, 8701302005676367732ull}}, {{9780586981265472968ull, 10103677749993775233ull, 14143076726567967259ull, 5438313753547729832ull}}, {{16837419745009229114ull, 8017911169064831137ull, 17678845908209959074ull, 6797892191934662290ull}}, {{7211716625979372680ull, 799016924476263114ull, 12875185348407673035ull, 8497365239918327863ull}}, {{9119008909664495829ull, 16640286642293522110ull, 14964519870395877502ull, 5310853274948954914ull}}, {{2175389100225843979ull, 11576986266012126830ull, 9482277801140071070ull, 6638566593686193643ull}}, {{11942608412137080781ull, 5247860795660382729ull, 7241161232997700934ull, 8298208242107742054ull}}, {{546601229944593632ull, 17114971052569902918ull, 18360783825905726795ull, 5186380151317338783ull}}, {{9906623574285517848ull, 16782027797284990743ull, 18339293763954770590ull, 6482975189146673479ull}}, {{7771593449429509406ull, 11754162709751462621ull, 18312431186516075334ull, 8103718986433341849ull}}, {{7163088915107137331ull, 2734665675167276234ull, 4527740463931465228ull, 5064824366520838656ull}}, {{18177233180738697472ull, 3418332093959095292ull, 5659675579914331535ull, 6331030458151048320ull}}, {{4274797402213820224ull, 18107973172731032828ull, 7074594474892914418ull, 7913788072688810400ull}}, {{11895120413238413448ull, 15929169251384283421ull, 4421621546808071511ull, 4946117545430506500ull}}, {{1033842461265853098ull, 15299775545802966373ull, 5527026933510089389ull, 6182646931788133125ull}}, {{5903989095009704276ull, 5289661376971544254ull, 11520469685314999641ull, 7728308664735166406ull}}, {{17525051239663228885ull, 14835253406675684918ull, 2588607534894486871ull, 4830192915459479004ull}}, {{12682942012724260298ull, 13932380739917218244ull, 3235759418618108589ull, 6037741144324348755ull}}, {{15853677515905325372ull, 3580417869614359093ull, 17879757328554799449ull, 7547176430405435943ull}}, {{12214391456654522310ull, 13766976214577444193ull, 18092377357987831511ull, 4716985269003397464ull}}, {{1432931265535989175ull, 12597034249794417338ull, 4168727623775237773ull, 5896231586254246831ull}}, {{11014536118774762277ull, 1911234756960857960ull, 599223511291659313ull, 7370289482817808539ull}}, {{13768170148468452846ull, 7000729464628460354ull, 14584087444396737853ull, 9212861853522260673ull}}, {{13216792361220170933ull, 6681298924606481673ull, 2197525625106879302ull, 5758038658451412921ull}}, {{2685932396243049954ull, 17574995692612877900ull, 7358593049810987031ull, 7197548323064266151ull}}, {{3357415495303812442ull, 17357058597338709471ull, 4586555293836345885ull, 8996935403830332689ull}}, {{9015913712205964633ull, 13154004632550387371ull, 14395812104716185938ull, 5623084627393957930ull}}, {{6658206121830067887ull, 7219133753833208406ull, 8771393094040456615ull, 7028855784242447413ull}}, {{17546129689142360666ull, 4412231173864122603ull, 15575927385977958673ull, 8786069730303059266ull}}, {{8660488046500281465ull, 14286859529733546387ull, 14346640634663612074ull, 5491293581439412041ull}}, {{6213924039697963927ull, 8635202375312157176ull, 4098242738047351381ull, 6864116976799265052ull}}, {{7767405049622454908ull, 15405688987567584374ull, 5122803422559189226ull, 8580146220999081315ull}}, {{242942137586646414ull, 14240241635657128138ull, 895909129885799314ull, 5362591388124425822ull}}, {{9527049708838083825ull, 8576930007716634364ull, 10343258449212024951ull, 6703239235155532277ull}}, {{11908812136047604781ull, 6109476491218405051ull, 17540759079942419093ull, 8379049043944415346ull}}, {{5137164575816059036ull, 6124265816225197109ull, 15574660443391399837ull, 5236905652465259591ull}}, {{11033141738197461699ull, 12267018288708884290ull, 14856639535811861892ull, 6546132065581574489ull}}, {{4568055135892051316ull, 15333772860886105363ull, 4735741364482663653ull, 8182665081976968112ull}}, {{549191450718838121ull, 11889451047267509804ull, 2959838352801664783ull, 5114165676235605070ull}}, {{686489313398547651ull, 10250127790656999351ull, 12923169977856856787ull, 6392707095294506337ull}}, {{14693169697030348275ull, 8200973719893861284ull, 2318904417038907272ull, 7990883869118132922ull}}, {{18406603097498743480ull, 5125608574933663302ull, 6061001279076704949ull, 4994302418198833076ull}}, {{13784881835018653542ull, 11018696737094467032ull, 7576251598845881186ull, 6242878022748541345ull}}, {{17231102293773316928ull, 4549998884513307982ull, 14082000516984739387ull, 7803597528435676681ull}}, {{6157752915180935176ull, 537906293607123537ull, 1883721295474380261ull, 4877248455272297926ull}}, {{12308877162403556874ull, 5284068885436292325ull, 11578023656197751134ull, 6096560569090372407ull}}, {{1551038397722282380ull, 15828458143650141215ull, 9860843551819801013ull, 7620700711362965509ull}}, {{7886928026217508344ull, 12198629348995032211ull, 8468870229101069585ull, 4762937944601853443ull}}, {{5246974014344497526ull, 1413228630961626552ull, 5974401767948949078ull, 5953672430752316804ull}}, {{6558717517930621907ull, 10989907825556808998ull, 7468002209936186347ull, 7442090538440396005ull}}, {{17934256503988802404ull, 4562849381759311671ull, 6973344390423810419ull, 4651306586525247503ull}}, {{17806134611558615101ull, 1091875708771751685ull, 4104994469602375120ull, 5814133233156559379ull}}, {{8422610209166105164ull, 1364844635964689607ull, 519557068575580996ull, 7267666541445699224ull}}, {{5916576743030243551ull, 1706055794955862009ull, 649446335719476245ull, 9084583176807124030ull}}, {{15227075510462371979ull, 3372127881061107707ull, 14240962015106836365ull, 5677864485504452518ull}}, {{14422158369650577070ull, 8826845869753772538ull, 8577830482028769648ull, 7097330606880565648ull}}, {{8804325925208445530ull, 11033557337192215673ull, 10722288102535962060ull, 8871663258600707060ull}}, {{17031918749323748216ull, 16119345372599910603ull, 15924802100939752095ull, 5544789536625441912ull}}, {{16678212418227297366ull, 15537495697322500350ull, 1459258552465138503ull, 6930986920781802391ull}}, {{11624393485929345900ull, 14810183603225737534ull, 15659131245863586841ull, 8663733650977252988ull}}, {{2653559910278453283ull, 2338835724375004103ull, 563584991809965968ull, 5414833531860783118ull}}, {{17152007943130230316ull, 2923544655468755128ull, 9927853276617233268ull, 6768541914825978897ull}}, {{2993265855203236279ull, 3654430819335943911ull, 17021502614198929489ull, 8460677393532473621ull}}, {{8788320187143104531ull, 13813234308153434704ull, 12944282143088024882ull, 5287923370957796013ull}}, {{10985400233928880663ull, 8043170848337017572ull, 2345294623577867391ull, 6609904213697245017ull}}, {{13731750292411100829ull, 5442277541993884061ull, 7543304297899722143ull, 8262380267121556271ull}}, {{10888186941970631970ull, 10318952491387259394ull, 11632094213828408195ull, 5163987666950972669ull}}, {{4386861640608514155ull, 8287004595806686339ull, 705059712003346532ull, 6454984583688715837ull}}, {{871891032333254789ull, 10358755744758357924ull, 5493010658431571069ull, 8068730729610894796ull}}, {{9768303932063060051ull, 8780065349687667654ull, 12656503698374507726ull, 5042956706006809247ull}}, {{2987007878224049256ull, 1751709650254808760ull, 11208943604540746754ull, 6303695882508511559ull}}, {{3733759847780061570ull, 11413009099673286758ull, 9399493487248545538ull, 7879619853135639449ull}}, {{16168657960144702193ull, 11744816705723192127ull, 17403898475598810721ull, 4924762408209774655ull}}, {{15599136431753489838ull, 845962826871826447ull, 17143187076071125498ull, 6155953010262218319ull}}, {{14887234521264474393ull, 10280825570444558867ull, 16817297826661518968ull, 7694941262827772899ull}}, {{6998678566576602544ull, 6425515981527849292ull, 8204968132449755403ull, 4809338289267358062ull}}, {{8748348208220753180ull, 3420208958482423711ull, 1032838128707418446ull, 6011672861584197578ull}}, {{6323749241848553570ull, 13498633234957805447ull, 10514419697739048865ull, 7514591076980246972ull}}, {{10869872303796427838ull, 1519116744207546548ull, 15794884347941681349ull, 4696619423112654357ull}}, {{13587340379745534797ull, 6510581948686821089ull, 5908547379644937974ull, 5870774278890817947ull}}, {{3149117419399754784ull, 17361599472713302170ull, 2773998206128784563ull, 7338467848613522434ull}}, {{13159768811104469288ull, 17090313322464239808ull, 12690869794515756512ull, 9173084810766903042ull}}, {{8224855506940293305ull, 10681445826540149880ull, 12543479639999735724ull, 5733178006729314401ull}}, {{10281069383675366631ull, 13351807283175187350ull, 1844291494717505943ull, 7166472508411643002ull}}, {{3627964692739432481ull, 12078073085541596284ull, 11528736405251658237ull, 8958090635514553752ull}}, {{11490849969816921109ull, 9854638687677191629ull, 7205460253282286398ull, 5598806647196596095ull}}, {{528504406988987674ull, 3094926322741713729ull, 4395139298175470094ull, 6998508308995745119ull}}, {{5272316527163622496ull, 13092029940281917969ull, 882238104291949713ull, 8748135386244681399ull}}, {{14824412875545733820ull, 1264989685035116874ull, 7468927842823550427ull, 5467584616402925874ull}}, {{9307144057577391467ull, 15416295161576059805ull, 112787766674662225ull, 6834480770503657343ull}}, {{16245616090399127238ull, 5435310896687911044ull, 13976042763625491494ull, 8543100963129571678ull}}, {{930138019644678716ull, 17232127365712108115ull, 4123340708838544279ull, 5339438101955982299ull}}, {{14997730579838012107ull, 16928473188712747239ull, 542489867620792445ull, 6674297627444977874ull}}, {{14135477206370127229ull, 7325533430608770337ull, 9901484371380766365ull, 8342872034306222342ull}}, {{1917144226340247663ull, 6884301403344175413ull, 1576741713685591074ull, 5214295021441388964ull}}, {{7008116301352697482ull, 17828748791034995074ull, 1970927142106988842ull, 6517868776801736205ull}}, {{17983517413545647661ull, 13062563951938968034ull, 7075344946061123957ull, 8147335971002170256ull}}, {{15851384401893417692ull, 10469945479175548973ull, 4422090591288202473ull, 5092084981876356410ull}}, {{5979172447084608403ull, 17699117867396824121ull, 14750985275965028899ull, 6365106227345445512ull}}, {{12085651577283148407ull, 17512211315818642247ull, 18438731594956286124ull, 7956382784181806890ull}}, {{14471061263443049611ull, 1721760035531875596ull, 16135893265275066732ull, 4972739240113629306ull}}, {{18088826579303812013ull, 2152200044414844495ull, 10946494544739057607ull, 6215924050142036633ull}}, {{17999347205702377113ull, 16525308110800719331ull, 18294804199351209912ull, 7769905062677545791ull}}, {{8943748994350291744ull, 10328317569250449582ull, 18351781652235588051ull, 4856190664173466119ull}}, {{1956314206083088871ull, 8298710943135674074ull, 18328041046867097160ull, 6070238330216832649ull}}, {{11668764794458636897ull, 10373388678919592592ull, 9074993253301707738ull, 7587797912771040812ull}}, {{7292977996536648061ull, 11095053942752133274ull, 14895242820168343144ull, 4742373695481900507ull}}, {{18339594532525585884ull, 13868817428440166592ull, 14007367506783041026ull, 5927967119352375634ull}}, {{4477749091947430739ull, 8112649748695432433ull, 8285837346624025475ull, 7409958899190469543ull}}, {{14327808228535613972ull, 2764563083720951318ull, 12096177369281097778ull, 4631224311994043464ull}}, {{8686388248814741657ull, 12679075891505964956ull, 15120221711601372222ull, 5789030389992554330ull}}, {{10857985311018427071ull, 6625472827527680387ull, 9676905102646939470ull, 7236287987490692913ull}}, {{8960795620345645935ull, 17505213071264376292ull, 16707817396736062241ull, 9045359984363366141ull}}, {{14823869299570804517ull, 4023229141899153326ull, 12748228882173732853ull, 5653349990227103838ull}}, {{9306464587608729838ull, 9640722445801329562ull, 6711914065862390258ull, 7066687487783879798ull}}, {{2409708697656136490ull, 2827531020396886145ull, 17613264619182763631ull, 8833359359729849747ull}}, {{13035282982103555066ull, 8684735915389135696ull, 8702447377775533317ull, 5520849599831156092ull}}, {{16294103727629443833ull, 15467605912663807524ull, 10878059222219416646ull, 6901061999788945115ull}}, {{1920885585827253175ull, 10111135353974983598ull, 8985888009346882904ull, 8626327499736181394ull}}, {{15035611546424196947ull, 6319459596234364748ull, 10227866024269189719ull, 5391454687335113371ull}}, {{347770359320694567ull, 3287638476865568032ull, 8173146511909099245ull, 6739318359168891714ull}}, {{434712949150868209ull, 8721234114509347944ull, 993061103031598248ull, 8424147948961114643ull}}, {{271695593219292631ull, 5450771321568342465ull, 16761564253890606569ull, 5265092468100696651ull}}, {{4951305509951503692ull, 11425150170387815985ull, 16340269298935870307ull, 6581365585125870814ull}}, {{10800817905866767519ull, 9669751694557382077ull, 11201964586815062076ull, 8226706981407338518ull}}, {{9056354200380423652ull, 15266966845953139606ull, 2389541848332025893ull, 5141691863379586574ull}}, {{2097070713620753756ull, 5248650502159260796ull, 12210299347269808175ull, 6427114829224483217ull}}, {{2621338392025942195ull, 1949127109271688091ull, 1427816128805096507ull, 8033893536530604022ull}}, {{17779237559512071536ull, 17359105507790662720ull, 14727443135785349028ull, 5021183460331627513ull}}, {{3777302875680537804ull, 3252137811028776785ull, 4574245864449522574ull, 6276479325414534392ull}}, {{9333314613028060159ull, 13288544300640746789ull, 5717807330561903217ull, 7845599156768167990ull}}, {{8139164642356231552ull, 1387811160259384887ull, 17408687636883353223ull, 4903499472980104993ull}}, {{5562269784517901535ull, 15569822005606394821ull, 7925801490822027816ull, 6129374341225131242ull}}, {{11564523249074764823ull, 1015533433298441910ull, 683879826672758963ull, 7661717926531414053ull}}, {{2616141012244340111ull, 16775609460307383858ull, 2733267900884168303ull, 4788573704082133783ull}}, {{12493548302160200946ull, 16357825806956841918ull, 17251642931387374091ull, 5985717130102667228ull}}, {{6393563340845475375ull, 15835596240268664494ull, 3117809590524665998ull, 7482146412628334036ull}}, {{17831035143310585821ull, 5285561631740527404ull, 11172003030932692057ull, 4676341507892708772ull}}, {{3842049855428680661ull, 11218638058103047160ull, 13965003788665865071ull, 5845426884865885965ull}}, {{4802562319285850826ull, 9411611554201421046ull, 3621196680550167627ull, 7306783606082357457ull}}, {{15226574935962089340ull, 7152828424324388403ull, 9138181869115097438ull, 9133479507602946821ull}}, {{7210766325762611886ull, 18305575820484906464ull, 8017206677410629850ull, 5708424692251841763ull}}, {{9013457907203264857ull, 13658597738751357272ull, 5409822328335899409ull, 7135530865314802204ull}}, {{11266822384004081071ull, 3238189118157032878ull, 6762277910419874262ull, 8919413581643502755ull}}, {{2430077971575162766ull, 15858926254130309261ull, 1920580684798727461ull, 5574633488527189222ull}}, {{7649283482896341361ull, 5988599762380722864ull, 11624097892853185135ull, 6968291860658986527ull}}, {{9561604353620426701ull, 2874063684548515676ull, 9918436347639093515ull, 8710364825823733159ull}}, {{15199374757867542496ull, 17937190867338679961ull, 13116551744915515302ull, 5443978016139833224ull}}, {{5164160392052264408ull, 13198116547318574144ull, 16395689681144394128ull, 6804972520174791530ull}}, {{6455200490065330510ull, 16497645684148217680ull, 11271240064575716852ull, 8506215650218489413ull}}, {{4034500306290831569ull, 1087656515737860242ull, 9350368049573516985ull, 5316384781386555883ull}}, {{14266497419718315269ull, 5971256663099713206ull, 7076274043539508327ull, 6645480976733194854ull}}, {{8609749737793118278ull, 2852384810447253604ull, 18068714591279161217ull, 8306851220916493567ull}}, {{14604465622975474732ull, 13311955552598003262ull, 18210475647190557616ull, 5191782013072808479ull}}, {{9032209991864567607ull, 16639944440747504078ull, 18151408540560809116ull, 6489727516341010599ull}}, {{2066890452975933701ull, 2353186477224828482ull, 18077574657273623492ull, 8112159395426263249ull}}, {{5903492551537346467ull, 10694113585120293609ull, 4380955133154932826ull, 5070099622141414531ull}}, {{11991051707849070988ull, 4144269944545591203ull, 864507898016278129ull, 6337624527676768164ull}}, {{10377128616383950831ull, 9792023449109376908ull, 1080634872520347661ull, 7922030659595960205ull}}, {{15709077422094745077ull, 8425857664907054519ull, 2981239804538911240ull, 4951269162247475128ull}}, {{15024660759191043442ull, 10532322081133818149ull, 3726549755673639050ull, 6189086452809343910ull}}, {{4945767893706640591ull, 3942030564562496879ull, 13881559231446824621ull, 7736358066011679887ull}}, {{10008633961207732226ull, 4769612112065254501ull, 15593503547295347244ull, 4835223791257299929ull}}, {{17122478469937053186ull, 5962015140081568126ull, 5656821378837020343ull, 6044029739071624912ull}}, {{12179726050566540674ull, 2840832906674572254ull, 7071026723546275429ull, 7555037173839531140ull}}, {{3000642763176700018ull, 4081363575885301611ull, 13642763739071197951ull, 4721898233649706962ull}}, {{17585861509253038734ull, 490018451429239109ull, 7830082636984221631ull, 5902372792062133703ull}}, {{8147268831284134705ull, 14447581119568712599ull, 5175917277802889134ull, 7377965990077667129ull}}, {{5572400020677780477ull, 8836104362606114941ull, 11081582615680999322ull, 9222457487597083911ull}}, {{5788593022137306750ull, 10134251245056209742ull, 13843518162441706432ull, 5764035929748177444ull}}, {{16459113314526409246ull, 12667814056320262177ull, 17304397703052133040ull, 7205044912185221805ull}}, {{6738833587875847845ull, 15834767570400327722ull, 7795439073533002588ull, 9006306140231527257ull}}, {{8823457010849792808ull, 673357694645429018ull, 16401364467026596378ull, 5628941337644704535ull}}, {{1805949226707465201ull, 10065069155161562081ull, 15890019565355857568ull, 7036176672055880669ull}}, {{6869122551811719405ull, 12581336443951952601ull, 6027466401412658248ull, 8795220840069850837ull}}, {{15822416640950794389ull, 7863335277469970375ull, 6073009510096605357ull, 5497013025043656773ull}}, {{15166334782761105082ull, 14440855115264850873ull, 12202947906048144600ull, 6871266281304570966ull}}, {{5122860423169217640ull, 18051068894081063592ull, 6030312845705404942ull, 8589082851630713708ull}}, {{3201787764480761025ull, 6670232040373276841ull, 12992317565420653897ull, 5368176782269196067ull}}, {{8613920724028339185ull, 12949476068893983955ull, 11628710938348429467ull, 6710220977836495084ull}}, {{6155714886608036077ull, 11575159067690092040ull, 14535888672935536834ull, 8387776222295618855ull}}, {{3847321804130022549ull, 11846160435733695429ull, 16002459448225792377ull, 5242360138934761784ull}}, {{9420838273589916090ull, 972642489384955574ull, 1556330236572688856ull, 6552950173668452231ull}}, {{2552675805132619304ull, 1215803111731194468ull, 15780470850998024782ull, 8191187717085565288ull}}, {{10818794415062662873ull, 14594935000114160254ull, 9862794281873765488ull, 5119492323178478305ull}}, {{4300120981973552783ull, 18243668750142700318ull, 16940178870769594764ull, 6399365403973097881ull}}, {{14598523264321716787ull, 4357841863968823781ull, 7340165533179829744ull, 7999206754966372352ull}}, {{11429920049414766944ull, 2723651164980514863ull, 4587603458237393590ull, 4999504221853982720ull}}, {{9675714043341070776ull, 12627935993080419387ull, 5734504322796741987ull, 6249380277317478400ull}}, {{7482956535748950566ull, 11173233972923136330ull, 7168130403495927484ull, 7811725346646848000ull}}, {{9288533853270482008ull, 16206643269931736014ull, 4480081502184954677ull, 4882328341654280000ull}}, {{2387295279733326702ull, 6423246032132506306ull, 5600101877731193347ull, 6102910427067850000ull}}, {{12207491136521434185ull, 3417371521738244978ull, 7000127347163991684ull, 7628638033834812500ull}}, {{12241367978753284270ull, 11359229237941178919ull, 13598451628832270610ull, 4767898771146757812ull}}, {{10690023955014217433ull, 4975664510571697841ull, 16998064536040338263ull, 5959873463933447265ull}}, {{17974215962195159695ull, 1607894619787234397ull, 7412522614768259117ull, 7449841829916809082ull}}, {{13539727985585668762ull, 3310777146580715450ull, 9244512652657549852ull, 4656151143698005676ull}}, {{7701287945127310144ull, 4138471433225894313ull, 11555640815821937315ull, 5820188929622507095ull}}, {{14238295949836525584ull, 561403273104979987ull, 9832865001350033740ull, 7275236162028133869ull}}, {{13186183918868269076ull, 701754091381224984ull, 16902767270114930079ull, 9094045202535167336ull}}, {{8241364949292668173ull, 7356125334754347471ull, 10564229543821831299ull, 5683778251584479585ull}}, {{5690020168188447312ull, 4583470650015546435ull, 17816972948204677028ull, 7104722814480599481ull}}, {{2500839191808171235ull, 5729338312519433044ull, 8436158129973682573ull, 8880903518100749352ull}}, {{10786396531734882830ull, 5886679454538339604ull, 5272598831233551608ull, 5550564698812968345ull}}, {{13482995664668603538ull, 7358349318172924505ull, 11202434557469327414ull, 6938205873516210431ull}}, {{3018686525553590710ull, 18421308684570931440ull, 9391357178409271363ull, 8672757341895263039ull}}, {{1886679078470994194ull, 9207474918643138198ull, 12787127264146876458ull, 5420473338684539399ull}}, {{11581720884943518550ull, 2285971611449146939ull, 11372223061756207669ull, 6775591673355674249ull}}, {{9865465087752010284ull, 7469150532738821578ull, 380220771913095874ull, 8469489591694592812ull}}, {{10777601698272394332ull, 9279905101389151390ull, 9461010019300460729ull, 5293430994809120507ull}}, {{4248630085985717106ull, 16211567395163827142ull, 7214576505698188007ull, 6616788743511400634ull}}, {{14534159644336922191ull, 15652773225527396023ull, 18241592668977510817ull, 8270985929389250792ull}}, {{16001378805351658225ull, 2865454238313540658ull, 11400995418110944261ull, 5169366205868281745ull}}, {{10778351469834796974ull, 8193503816319313727ull, 416186217356516614ull, 6461707757335352182ull}}, {{8861253318866108313ull, 1018507733544366351ull, 9743604808550421576ull, 8077134696669190227ull}}, {{12455812351932399552ull, 636567333465228969ull, 3783909996130319533ull, 5048209185418243892ull}}, {{1734707384633335728ull, 5407395185258924116ull, 4729887495162899416ull, 6310261481772804865ull}}, {{2168384230791669659ull, 6759243981573655145ull, 10524045387381012174ull, 7887826852216006081ull}}, {{12884455190313263297ull, 18059585543765698177ull, 18106743413181602368ull, 4929891782635003800ull}}, {{2270510932609415409ull, 4127737855997571106ull, 4186685192767451345ull, 6162364728293754751ull}}, {{12061510702616545070ull, 9771358338424351786ull, 621670472531926277ull, 7702955910367193439ull}}, {{12150130207562728573ull, 8412941970728913818ull, 7306073072973535779ull, 4814347443979495899ull}}, {{5964290722598634908ull, 5904491444983754369ull, 4520905322789531820ull, 6017934304974369874ull}}, {{12067049421675681539ull, 7380614306229692961ull, 14874503690341690583ull, 7522417881217962342ull}}, {{624376860906219106ull, 11530412969034639957ull, 4684878788036168710ull, 4701511175761226464ull}}, {{5392157094560161786ull, 5189644174438524138ull, 5856098485045210888ull, 5876888969701533080ull}}, {{15963568405054978041ull, 6487055218048155172ull, 7320123106306513610ull, 7346111212126916350ull}}, {{1507716432609170935ull, 17332191059414969774ull, 18373525919737917820ull, 9182639015158645437ull}}, {{14777380825662895546ull, 1609247375279580300ull, 13789296709049892590ull, 5739149384474153398ull}}, {{24981958369067817ull, 11234931255954251184ull, 8013248849457589929ull, 7173936730592691748ull}}, {{31227447961334771ull, 208606014660650268ull, 10016561061821987412ull, 8967420913240864685ull}}, {{9242889191830610040ull, 9353750796017682225ull, 8566193672852436084ull, 5604638070775540428ull}}, {{16165297508215650454ull, 11692188495022102781ull, 10707742091065545105ull, 7005797588469425535ull}}, {{6371563829987399355ull, 780177563495464765ull, 8772991595404543478ull, 8757246985586781919ull}}, {{6288070402955818549ull, 14322669032466829190ull, 12400648774768921529ull, 5473279365991738699ull}}, {{17083460040549548994ull, 4068278235301372775ull, 10889124950033764008ull, 6841599207489673374ull}}, {{16742639032259548339ull, 5085347794126715969ull, 4388034150687429202ull, 8551999009362091718ull}}, {{3546620367521135856ull, 7790028389756585385ull, 16577579399461806963ull, 5344999380851307323ull}}, {{9044961477828807724ull, 5125849468768343827ull, 16110288230899870800ull, 6681249226064134154ull}}, {{6694515828858621751ull, 6407311835960429784ull, 10914488251770062692ull, 8351561532580167693ull}}, {{4184072393036638594ull, 13227941934330044423ull, 9127398166569983134ull, 5219725957862604808ull}}, {{618404472868410339ull, 7311555381057779721ull, 11409247708212478918ull, 6524657447328256010ull}}, {{5384691609512900827ull, 18362816263177000459ull, 5038187598410822839ull, 8155821809160320013ull}}, {{1059589246731869065ull, 18394289192126707143ull, 5454710258220458226ull, 5097388630725200008ull}}, {{15159544613697000043ull, 13769489453303608120ull, 6818387822775572783ull, 6371735788406500010ull}}, {{502686693411698438ull, 12600175798202122247ull, 17746356815324241787ull, 7964669735508125012ull}}, {{7231708211023393380ull, 5569266864662632452ull, 1868100972722875309ull, 4977918584692578133ull}}, {{9039635263779241725ull, 11573269599255678469ull, 6946812234330982040ull, 6222398230865722666ull}}, {{15911230098151440060ull, 14466586999069598086ull, 17906887329768503358ull, 7777997788582153332ull}}, {{5332832792917262134ull, 4429930855991110900ull, 1968432544250538791ull, 4861248617863845833ull}}, {{6666040991146577667ull, 925727551561500721ull, 7072226698740561393ull, 6076560772329807291ull}}, {{12944237257360609988ull, 5768845457879263805ull, 4228597354998313837ull, 7595700965412259114ull}}, {{10395991295064075194ull, 5911371420388233830ull, 7254559365301334052ull, 4747313103382661946ull}}, {{3771617081975318185ull, 7389214275485292288ull, 18291571243481443373ull, 5934141379228327432ull}}, {{4714521352469147731ull, 13848203862784003264ull, 4417719980642252600ull, 7417676724035409291ull}}, {{2946575845293217332ull, 8655127414240002040ull, 455231978687713923ull, 4636047952522130807ull}}, {{3683219806616521665ull, 6207223249372614646ull, 14404098028641806116ull, 5795059940652663508ull}}, {{13827396795125427889ull, 7759029061715768307ull, 18005122535802257645ull, 7243824925815829385ull}}, {{12672559975479396957ull, 14310472345572098288ull, 8671345114470658344ull, 9054781157269786732ull}}, {{7920349984674623099ull, 8944045215982561430ull, 14642962733398937273ull, 5659238223293616707ull}}, {{677065443988503065ull, 15791742538405589692ull, 13692017398321283687ull, 7074047779117020884ull}}, {{846331804985628831ull, 15127992154579599211ull, 17115021747901604609ull, 8842559723896276105ull}}, {{16669858442611875684ull, 2537466068971167650ull, 3779359564797421025ull, 5526599827435172566ull}}, {{11613951016410068796ull, 7783518604641347467ull, 13947571492851552089ull, 6908249784293965707ull}}, {{9905752752085198091ull, 14341084274229072238ull, 12822778347637052207ull, 8635312230367457134ull}}, {{1579409451625860903ull, 15880706699034252005ull, 3402550448845769725ull, 5397070143979660709ull}}, {{6585947832959714033ull, 6015825318510651294ull, 8864874079484600061ull, 6746337679974575886ull}}, {{17455806828054418349ull, 12131467666565702021ull, 1857720562500974268ull, 8432922099968219858ull}}, {{13215722276747705420ull, 16805539328458339571ull, 5772761369990496821ull, 5270576312480137411ull}}, {{11907966827507243871ull, 7171866105290760752ull, 2604265694060733123ull, 6588220390600171764ull}}, {{14884958534384054839ull, 4353146613186063036ull, 3255332117575916404ull, 8235275488250214705ull}}, {{79727047135258467ull, 11944088670096065206ull, 13563797619553417512ull, 5147047180156384190ull}}, {{9323030845773848891ull, 14930110837620081507ull, 7731374987586996082ull, 6433808975195480238ull}}, {{7042102538789923210ull, 9439266510170326076ull, 440846697628969295ull, 8042261218994350298ull}}, {{13624686123598477814ull, 12817070596497535653ull, 4887215204445493713ull, 5026413261871468936ull}}, {{3195799599215933556ull, 2186280190339755855ull, 6109019005556867142ull, 6283016577339336170ull}}, {{17829807554302080657ull, 11956222274779470626ull, 16859645793800859735ull, 7853770721674170212ull}}, {{15755315739866188315ull, 14390167949378250997ull, 1313906584270761526ull, 4908606701046356383ull}}, {{5859086619550571681ull, 8764337899868037939ull, 15477441285620615620ull, 6135758376307945478ull}}, {{2712172256010826697ull, 10955422374835047424ull, 10123429570170993717ull, 7669697970384931848ull}}, {{1695107660006766686ull, 9152981993485598592ull, 6327143481356871073ull, 4793561231490582405ull}}, {{2118884575008458357ull, 16052913510284386144ull, 12520615370123476745ull, 5991951539363228006ull}}, {{2648605718760572947ull, 6231083832573318968ull, 6427397175799570124ull, 7489939424204035008ull}}, {{1655378574225358092ull, 13117799432213100163ull, 4017123234874731327ull, 4681212140127521880ull}}, {{15904281273063861327ull, 11785563271838987299ull, 5021404043593414159ull, 5851515175159402350ull}}, {{15268665572902438754ull, 10120268071371346220ull, 15500127091346543507ull, 7314393968949252937ull}}, {{639087892418496827ull, 8038649070786794872ull, 5540100808901015672ull, 9142992461186566172ull}}, {{399429932761560517ull, 5024155669241746795ull, 12685935042417910603ull, 5714370288241603857ull}}, {{14334345471234114358ull, 1668508568124795589ull, 2022360747740224542ull, 7142962860302004822ull}}, {{4082873783760479235ull, 11309007747010770295ull, 11751322971530056485ull, 8928703575377506027ull}}, {{9469325142491381378ull, 9373972851095425386ull, 5038733847992591351ull, 5580439734610941267ull}}, {{2613284391259450915ull, 7105780045441893829ull, 1686731291563351285ull, 6975549668263676584ull}}, {{7878291507501701547ull, 13493911075229755190ull, 2108414114454189106ull, 8719437085329595730ull}}, {{312246173761175563ull, 13045380440445984898ull, 5929444839961256095ull, 5449648178330997331ull}}, {{9613679754056245262ull, 11695039532130093218ull, 2800120031524182215ull, 6812060222913746664ull}}, {{2793727655715530769ull, 10007113396735228619ull, 3500150039405227769ull, 8515075278642183330ull}}, {{17886980849318064395ull, 17783660919027987646ull, 6799279793055655259ull, 5321922049151364581ull}}, {{13135354024792804685ull, 17617890130357596654ull, 13110785759746956978ull, 6652402561439205726ull}}, {{7195820494136230049ull, 12798990626092220010ull, 7165110162828920415ull, 8315503201799007158ull}}, {{9109073827262531685ull, 14916898168948719362ull, 18313251907050238971ull, 5197189501124379473ull}}, {{2162970247223388798ull, 14034436692758511299ull, 9056506828530635002ull, 6496486876405474342ull}}, {{16538770864311399709ull, 8319673829093363315ull, 2097261498808517945ull, 8120608595506842928ull}}, {{8030888780980930866ull, 16729011189251821832ull, 1310788436755323715ull, 5075380372191776830ull}}, {{10038610976226163583ull, 16299577968137389386ull, 10861857582798930452ull, 6344225465239721037ull}}, {{3324891683427928670ull, 1927728386462185117ull, 18189007996926050970ull, 7930281831549651296ull}}, {{4383900311356149371ull, 5816516259966253602ull, 11368129998078781856ull, 4956426144718532060ull}}, {{14703247426049962522ull, 7270645324957817002ull, 14210162497598477320ull, 6195532680898165075ull}}, {{9155687245707677344ull, 9088306656197271253ull, 13151017103570708746ull, 7744415851122706344ull}}, {{8028147537780992292ull, 10291877678550682437ull, 8219385689731692966ull, 4840259906951691465ull}}, {{14646870440653628269ull, 3641475061333577238ull, 14885918130592004112ull, 6050324883689614331ull}}, {{9085216013962259528ull, 4551843826666971548ull, 13995711644812617236ull, 7562906104612017914ull}}, {{14901632045581188013ull, 12068274428521633025ull, 13359005796435273676ull, 4726816315382511196ull}}, {{4791982001694321305ull, 15085343035652041282ull, 16698757245544092095ull, 5908520394228138995ull}}, {{15213349538972677439ull, 14244992776137663698ull, 16261760538502727215ull, 7385650492785173744ull}}, {{14120029480285311303ull, 15820649512727121667ull, 10163600336564204509ull, 4616031557990733590ull}}, {{13038350831929251225ull, 5940753835626738372ull, 3481128383850479829ull, 5770039447488416988ull}}, {{16297938539911564031ull, 12037628312960810869ull, 4351410479813099786ull, 7212549309360521235ull}}, {{6537365119607291327ull, 5823663354346237779ull, 827577081338986829ull, 9015686636700651544ull}}, {{1780010190540863127ull, 5945632605680092564ull, 517235675836866768ull, 5634804147937907215ull}}, {{2225012738176078909ull, 7432040757100115705ull, 14481602650078247172ull, 7043505184922384018ull}}, {{7392951941147486540ull, 9290050946375144631ull, 8878631275743033157ull, 8804381481152980023ull}}, {{11538123990858260944ull, 8112124850698159346ull, 12466673574980477579ull, 5502738425720612514ull}}, {{5199282951718050372ull, 5528470044945311279ull, 6359969931870821166ull, 6878423032150765643ull}}, {{1887417671220175061ull, 16133959593036414907ull, 3338276396411138553ull, 8598028790188457054ull}}, {{17320537109008467077ull, 3166195718006677460ull, 15921480803039125308ull, 5373767993867785658ull}}, {{3203927312551032230ull, 3957744647508346826ull, 10678478966944130827ull, 6717209992334732073ull}}, {{13228281177543566096ull, 335494790958045628ull, 17959784727107551438ull, 8396512490418415091ull}}, {{17491047772819504618ull, 14044742299630942229ull, 8919022445228525696ull, 5247820306511509432ull}}, {{8028751660742217060ull, 17555927874538677787ull, 11148778056535657120ull, 6559775383139386790ull}}, {{5424253557500383421ull, 3498165769463795618ull, 4712600533814795593ull, 8199719228924233488ull}}, {{8001844491865127543ull, 13715568651983342021ull, 2945375333634247245ull, 5124824518077645930ull}}, {{14613991633258797332ull, 3309402759697013814ull, 12905091203897584865ull, 6406030647597057412ull}}, {{9044117504718720857ull, 8748439468048655172ull, 16131364004871981081ull, 8007538309496321765ull}}, {{14875945477303976344ull, 16996989713598879242ull, 12387945512258682127ull, 5004711443435201103ull}}, {{9371559809775194622ull, 16634551123571211149ull, 10873245871895964755ull, 6255889304294001379ull}}, {{16326135780646381181ull, 16181502886036626032ull, 8979871321442568040ull, 7819861630367501724ull}}, {{10203834862903988238ull, 10113439303772891270ull, 14835791612756380833ull, 4887413518979688577ull}}, {{3531421541775209490ull, 17253485148143501992ull, 4709681460663312329ull, 6109266898724610722ull}}, {{4414276927219011862ull, 7731798379897213778ull, 15110473862683916220ull, 7636583623405763402ull}}, {{7370609097939270318ull, 14055746024290534419ull, 14055732182604835541ull, 4772864764628602126ull}}, {{4601575353996699993ull, 3734624475081004312ull, 8346293191401268619ull, 5966080955785752658ull}}, {{5751969192495874991ull, 56594575423867486ull, 1209494452396809966ull, 7457601194732190823ull}}, {{17430038800592085582ull, 13870429664922080890ull, 7673463060389088084ull, 4661000746707619264ull}}, {{12564176463885331169ull, 17338037081152601113ull, 9591828825486360105ull, 5826250933384524080ull}}, {{1870162524574500249ull, 7837488296158587680ull, 11989786031857950132ull, 7282813666730655100ull}}, {{2337703155718125312ull, 9796860370198234600ull, 14987232539822437665ull, 9103517083413318875ull}}, {{1461064472323828320ull, 17652252777442366385ull, 7061177328175329588ull, 5689698177133324297ull}}, {{6438016608832173304ull, 3618571898093406365ull, 13438157678646549890ull, 7112122721416655371ull}}, {{12659206779467604534ull, 13746586909471533764ull, 12186011079880799458ull, 8890153401770819214ull}}, {{17135376274022028642ull, 13203302836847096506ull, 3004570906498111757ull, 5556345876106762009ull}}, {{12195848305672759994ull, 2669070490776706921ull, 8367399651550027601ull, 6945432345133452511ull}}, {{1409752326808786280ull, 7948024131898271556ull, 5847563546010146597ull, 8681790431416815639ull}}, {{10104467241110267233ull, 7273358091650113674ull, 10572256243897423479ull, 5426119019635509774ull}}, {{3407212014533058234ull, 4480011596135254189ull, 3991948268017003541ull, 6782648774544387218ull}}, {{8870701036593710696ull, 10211700513596455640ull, 14213307371876030234ull, 8478310968180484022ull}}, {{5544188147871069185ull, 10993998839425172679ull, 4271631088995130992ull, 5298944355112802514ull}}, {{2318549166411448577ull, 13742498549281465849ull, 14562910898098689548ull, 6623680443891003142ull}}, {{7509872476441698625ull, 17178123186601832311ull, 8980266585768586127ull, 8279600554863753928ull}}, {{11611199325417143497ull, 17653856019267227050ull, 5612666616105366329ull, 5174750346789846205ull}}, {{5290627119916653563ull, 8232261968801870101ull, 11627519288559095816ull, 6468437933487307756ull}}, {{11224969918323204858ull, 10290327461002337626ull, 14534399110698869770ull, 8085547416859134695ull}}, {{11627292217379390940ull, 11043140681553848920ull, 16001528471827875462ull, 5053467135536959184ull}}, {{14534115271724238675ull, 4580553815087535342ull, 1555166516075292712ull, 6316833919421198981ull}}, {{8944272052800522536ull, 5725692268859419178ull, 6555644163521503794ull, 7896042399276498726ull}}, {{10201856051427714489ull, 8190243686464524890ull, 17932335657483103583ull, 4935026499547811703ull}}, {{3528948027429867303ull, 5626118589653268209ull, 17803733553426491575ull, 6168783124434764629ull}}, {{9022871052714722033ull, 2420962218639197357ull, 8419608886500950757ull, 7710978905543455787ull}}, {{7945137417160395223ull, 3818944395863192300ull, 2956412544849400271ull, 4819361815964659867ull}}, {{9931421771450494029ull, 161994476401602471ull, 17530573736343914051ull, 6024202269955824833ull}}, {{7802591195885729632ull, 14037551150784166801ull, 8078159115147728851ull, 7530252837444781042ull}}, {{16405834543497050780ull, 6467626460026410298ull, 9660535465394718436ull, 4706408023402988151ull}}, {{11283921142516537667ull, 8084533075033012873ull, 7463983313316010141ull, 5883010029253735189ull}}, {{269843372863508371ull, 14717352362218653996ull, 13941665160072400580ull, 7353762536567168986ull}}, {{337304216079385464ull, 18396690452773317495ull, 8203709413235724917ull, 9192203170708961233ull}}, {{7128344162690697771ull, 13803774542197017386ull, 16656533429340797833ull, 5745126981693100770ull}}, {{18133802240218148022ull, 3419660122464108020ull, 11597294749821221484ull, 7181408727116375963ull}}, {{4220508726563133411ull, 4274575153080135026ull, 9884932418849138951ull, 8976760908895469954ull}}, {{7249503972529346286ull, 9589138498316166247ull, 10789768780208099748ull, 5610475568059668721ull}}, {{4450193947234294954ull, 11986423122895207809ull, 18098896993687512589ull, 7013094460074585901ull}}, {{10174428452470256596ull, 1147970848336846049ull, 8788563186827227025ull, 8766368075093232377ull}}, {{17888232828862380133ull, 12246696826278998540ull, 17022067037835486650ull, 5478980046933270235ull}}, {{3913546962368423550ull, 6084998995993972368ull, 16665897778866970409ull, 6848725058666587794ull}}, {{4891933702960529437ull, 12217934763419853364ull, 11609000186728937203ull, 8560906323333234743ull}}, {{12280830601205106706ull, 5330366217923714400ull, 14173154144346667608ull, 5350566452083271714ull}}, {{15351038251506383383ull, 6662957772404643000ull, 8493070643578558702ull, 6688208065104089643ull}}, {{742053740673427612ull, 17552069252360579559ull, 6004652286045810473ull, 8360260081380112054ull}}, {{7381312615561974114ull, 4052514255084280368ull, 17587965734060795258ull, 5225162550862570033ull}}, {{9226640769452467642ull, 14289014855710126268ull, 8149899112293830360ull, 6531453188578212542ull}}, {{11533300961815584553ull, 17861268569637657835ull, 964001853512512142ull, 8164316485722765678ull}}, {{4902470091921046394ull, 6551606837596148243ull, 14437559213727483801ull, 5102697803576728548ull}}, {{1516401596473920088ull, 12801194565422573208ull, 18046949017159354751ull, 6378372254470910685ull}}, {{1895501995592400110ull, 11389807188350828606ull, 8723628216167029727ull, 7972965318088638357ull}}, {{15019746802527413781ull, 14036158520360349734ull, 7758110644318087531ull, 4983103323805398973ull}}, {{9551311466304491418ull, 12933512132023049264ull, 14309324323824997318ull, 6228879154756748716ull}}, {{11939139332880614272ull, 6943518128174035772ull, 17886655404781246648ull, 7786098943445935895ull}}, {{16685334119905159728ull, 4339698830108772357ull, 18096688655629361011ull, 4866311839653709934ull}}, {{7021609594599285948ull, 812937519208577543ull, 13397488782681925456ull, 6082889799567137418ull}}, {{4165325974821719531ull, 1016171899010721929ull, 7523488941497631012ull, 7603612249458921773ull}}, {{14132543780332044467ull, 9858479473736477013ull, 7008023597649713334ull, 4752257655911826108ull}}, {{3830621670132891872ull, 3099727305315820459ull, 8760029497062141668ull, 5940322069889782635ull}}, {{176591069238726936ull, 3874659131644775574ull, 6338350852900289181ull, 7425402587362228294ull}}, {{13945427473556368047ull, 4727504966491678685ull, 17796527338344844450ull, 4640876617101392683ull}}, {{3596726286663296347ull, 15132753244969374165ull, 17633973154503667658ull, 5801095771376740854ull}}, {{9107593876756508337ull, 9692569519356941898ull, 12819094406274808765ull, 7251369714220926068ull}}, {{2161120309090859613ull, 16727397917623565277ull, 16023868007843510956ull, 9064212142776157585ull}}, {{3656543202395481210ull, 1231251661659952490ull, 3097388477261112492ull, 5665132589235098491ull}}, {{13794051039849127321ull, 1539064577074940612ull, 17706793651858554327ull, 7081415736543873113ull}}, {{17242563799811409151ull, 15758888776625839477ull, 8298434009541029196ull, 8851769670679841392ull}}, {{13082445384095824672ull, 625933448536373865ull, 5186521255963143248ull, 5532356044174900870ull}}, {{2517998674837617127ull, 782416810670467332ull, 15706523606808704868ull, 6915445055218626087ull}}, {{3147498343547021409ull, 978021013338084165ull, 15021468490083493181ull, 8644306319023282609ull}}, {{4273029473930582333ull, 2917106142549996555ull, 2470888778661101382ull, 5402691449389551631ull}}, {{729600823985840012ull, 12869754715042271502ull, 16923669028608540439ull, 6753364311736939538ull}}, {{10135373066837075823ull, 11475507375375451473ull, 11931214248905899741ull, 8441705389671174423ull}}, {{17863823212841642149ull, 9478035118823351122ull, 14374537933207269194ull, 5276065868544484014ull}}, {{13106406979197276879ull, 2624171861674413095ull, 8744800379654310685ull, 6595082335680605018ull}}, {{11771322705569208194ull, 7891900845520404273ull, 1707628437713112548ull, 8243852919600756273ull}}, {{439547663339673266ull, 14155810065305028479ull, 12596482819639165102ull, 5152408074750472670ull}}, {{14384492634456755294ull, 8471390544776509790ull, 6522231487694180570ull, 6440510093438090838ull}}, {{8757243756216168309ull, 1365866144115861430ull, 17376161396472501521ull, 8050637616797613547ull}}, {{861591329207717289ull, 12382881386140883154ull, 8554257863581619498ull, 5031648510498508467ull}}, {{10300361198364422420ull, 6255229695821328134ull, 6081136311049636469ull, 6289560638123135584ull}}, {{3652079461100752216ull, 12430723138204048072ull, 7601420388812045586ull, 7861950797653919480ull}}, {{2282549663187970135ull, 12380887979804917949ull, 4750887743007528491ull, 4913719248533699675ull}}, {{7464873097412350573ull, 10864423956328759532ull, 1326923660332022710ull, 6142149060667124594ull}}, {{9331091371765438216ull, 4357157908556173607ull, 10882026612269804196ull, 7677686325833905742ull}}, {{12749461134994480741ull, 11946595729702384312ull, 2189580614241239718ull, 4798553953646191089ull}}, {{15936826418743100927ull, 5709872625273204582ull, 7348661786228937552ull, 5998192442057738861ull}}, {{10697660986574100350ull, 7137340781591505728ull, 13797513251213559844ull, 7497740552572173576ull}}, {{6686038116608812719ull, 13684210025349466888ull, 8623445782008474902ull, 4686087845357608485ull}}, {{8357547645761015899ull, 7881890494832057802ull, 15390993245937981532ull, 5857609806697010606ull}}, {{1223562520346494065ull, 9852363118540072253ull, 10015369520567701107ull, 7322012258371263258ull}}, {{6141139168860505485ull, 7703767879747702412ull, 3295839863854850576ull, 9152515322964079073ull}}, {{13061584017392591737ull, 4814854924842314007ull, 13589114960977751370ull, 5720322076852549420ull}}, {{11715294003313351767ull, 15241940692907668317ull, 16986393701222189212ull, 7150402596065686775ull}}, {{809059448859525996ull, 605681792425033781ull, 16621306108100348612ull, 8938003245082108469ull}}, {{2811505164750897700ull, 9601923157120421921ull, 12694159326776411834ull, 5586252028176317793ull}}, {{8126067474366010029ull, 2779031909545751593ull, 2032641103188351081ull, 6982815035220397242ull}}, {{14769270361384900440ull, 8085475905359577395ull, 11764173415840214659ull, 8728518794025496552ull}}, {{6924950966651868823ull, 2747579431636041920ull, 7352608384900134162ull, 5455324246265935345ull}}, {{8656188708314836029ull, 12657846326399828208ull, 13802446499552555606ull, 6819155307832419181ull}}, {{10820235885393545036ull, 6598935871145009452ull, 3418000069158530796ull, 8523944134790523977ull}}, {{15986019465225741455ull, 13347706956320406715ull, 13665465089292551507ull, 5327465084244077485ull}}, {{15370838313104788915ull, 12072947676973120490ull, 3246773306333525672ull, 6659331355305096857ull}}, {{9990175854526210336ull, 15091184596216400613ull, 8670152651344294994ull, 8324164194131371071ull}}, {{8549702918292575412ull, 14043676391062638287ull, 12336374434731266227ull, 5202602621332106919ull}}, {{6075442629438331361ull, 12942909470400909955ull, 10808782024986694880ull, 6503253276665133649ull}}, {{2982617268370526297ull, 16178636838001137444ull, 18122663549660756504ull, 8129066595831417061ull}}, {{11087507829586354744ull, 10111648023750710902ull, 13632507727751666767ull, 5080666622394635663ull}}, {{4636012750128167622ull, 8027874011261000724ull, 12428948641262195555ull, 6350833277993294579ull}}, {{5795015937660209527ull, 5423156495648863001ull, 10924499783150356540ull, 7938541597491618224ull}}, {{15151100007106100715ull, 12612844846635315183ull, 6827812364468972837ull, 4961588498432261390ull}}, {{14327188990455237989ull, 1930998003011980267ull, 17758137492440991855ull, 6201985623040326737ull}}, {{13297300219641659582ull, 16248805559047139046ull, 8362613810269076106ull, 7752482028800408422ull}}, {{3699126618848649335ull, 14767189492831849808ull, 614947612990784662ull, 4845301268000255264ull}} }; static const BID_UINT256 bid_multipliers2_binary80[] = { {{6207925045053820451ull, 7278732838564269635ull, 11692571226397904350ull, 2627592000557903659ull}}, {{3148220287889887660ull, 18321788085060112852ull, 10004028014569992533ull, 3284490000697379574ull}}, {{3935275359862359575ull, 9067177051042977353ull, 3281662981357714859ull, 4105612500871724468ull}}, {{13988762145982444495ull, 3361142647688166893ull, 11274411400203347595ull, 2566007813044827792ull}}, {{3650894627195891906ull, 18036486364892372329ull, 14093014250254184493ull, 3207509766306034740ull}}, {{9175304302422252786ull, 8710549900833301699ull, 17616267812817730617ull, 4009387207882543425ull}}, {{3428722179800214040ull, 16973308734089283322ull, 4092638355369999779ull, 2505867004926589641ull}}, {{13509274761605043357ull, 16604949899184216248ull, 9727483962639887628ull, 3132333756158237051ull}}, {{16886593452006304197ull, 2309443300270718694ull, 7547668934872471632ull, 3915417195197796314ull}}, {{5942434889076552219ull, 1443402062669199184ull, 9328979102722682674ull, 2447135746998622696ull}}, {{7428043611345690274ull, 11027624615191274788ull, 11661223878403353342ull, 3058919683748278370ull}}, {{9285054514182112842ull, 4561158732134317677ull, 5353157811149415870ull, 3823649604685347963ull}}, {{8109002080577514479ull, 16685782262866112260ull, 1039880622754690966ull, 2389781002928342477ull}}, {{10136252600721893098ull, 11633855791727864517ull, 5911536796870751612ull, 2987226253660428096ull}}, {{17282001769329754276ull, 14542319739659830646ull, 7389420996088439515ull, 3734032817075535120ull}}, {{6189565087403708519ull, 6783106828073700202ull, 4618388122555274697ull, 2333770510672209450ull}}, {{16960328396109411457ull, 13090569553519513156ull, 14996357190048869179ull, 2917213138340261812ull}}, {{2753666421427212705ull, 11751525923472003542ull, 298702413851534858ull, 3646516422925327266ull}}, {{12665455063638791689ull, 5466035367485228619ull, 9596750054169194381ull, 4558145528656659082ull}}, {{5610066405560550854ull, 5722115113891961839ull, 10609654802283134392ull, 2848840955410411926ull}}, {{2400896988523300663ull, 7152643892364952299ull, 4038696465999142182ull, 3561051194263014908ull}}, {{16836179290936289540ull, 18164176902310966181ull, 5048370582498927727ull, 4451313992828768635ull}}, {{12828455066048874915ull, 18270139591585435719ull, 849388604848135877ull, 2782071245517980397ull}}, {{11423882814133705740ull, 9002616434199630937ull, 5673421774487557751ull, 3477589056897475496ull}}, {{444795462384968462ull, 6641584524322150768ull, 7091777218109447189ull, 4346986321121844370ull}}, {{277997163990605289ull, 6456833336915038182ull, 9044046779745792397ull, 2716866450701152731ull}}, {{9570868491843032419ull, 12682727689571185631ull, 6693372456254852592ull, 3396083063376440914ull}}, {{7351899596376402620ull, 15853409611963982039ull, 17590087607173341548ull, 4245103829220551142ull}}, {{11512466275376333494ull, 685008970622712966ull, 6382118736055950564ull, 2653189893262844464ull}}, {{5167210807365641059ull, 856261213278391208ull, 7977648420069938205ull, 3316487366578555580ull}}, {{6459013509207051324ull, 5682012535025376914ull, 9972060525087422756ull, 4145609208223194475ull}}, {{8648569461681794981ull, 12774629871245636379ull, 3926694818965945270ull, 2591005755139496547ull}}, {{6199025808674855823ull, 6744915302202269666ull, 296682505280043684ull, 3238757193924370684ull}}, {{16972154297698345586ull, 8431144127752837082ull, 370853131600054605ull, 4048446492405463355ull}}, {{15219282454488853896ull, 7575308089059217128ull, 16372684271745891792ull, 2530279057753414596ull}}, {{577358994401515753ull, 9469135111324021411ull, 2019111265972813124ull, 3162848822191768246ull}}, {{14556756798284058404ull, 11836418889155026763ull, 11747261119320792213ull, 3953561027739710307ull}}, {{6792129989713842550ull, 9703604814935585679ull, 5036195190361801181ull, 2470975642337318942ull}}, {{3878476468714915284ull, 16741192037096870003ull, 15518616024807027284ull, 3088719552921648677ull}}, {{236409567466256201ull, 2479745972661535888ull, 5563211975726620394ull, 3860899441152060847ull}}, {{147755979666410126ull, 6161527251340847834ull, 10394536512470219602ull, 2413062150720038029ull}}, {{9408067011437788465ull, 16925281101030835600ull, 17604856659015162406ull, 3016327688400047536ull}}, {{11760083764297235581ull, 11933229339433768692ull, 3559326750059401392ull, 3770409610500059421ull}}, {{16573424389540548046ull, 7458268337146105432ull, 4530422228000819822ull, 2356506006562537138ull}}, {{2270036413216133442ull, 99463384577855983ull, 14886399821855800586ull, 2945632508203171422ull}}, {{16672603571802330514ull, 9347701267577095786ull, 9384627740464974924ull, 3682040635253964278ull}}, {{11617382427898137335ull, 11684626584471369733ull, 2507412638726442847ull, 4602550794067455348ull}}, {{9566707026650029786ull, 14220420642935687939ull, 10790504936058802587ull, 2876594246292159592ull}}, {{7346697764885149329ull, 13163839785242222020ull, 13488131170073503234ull, 3595742807865199490ull}}, {{9183372206106436661ull, 7231427694698001717ull, 7636791925737103235ull, 4494678509831499363ull}}, {{8045450638030216865ull, 2213799299972557121ull, 2467151944371995570ull, 2809174068644687102ull}}, {{14668499315965158985ull, 11990621161820472209ull, 12307311967319770270ull, 3511467585805858877ull}}, {{4500566089674285020ull, 5764904415420814454ull, 1549081903867549126ull, 4389334482257323597ull}}, {{16647911861328591849ull, 17438123314920172745ull, 3274019199130912155ull, 2743334051410827248ull}}, {{6974831771378576100ull, 17185968125222828028ull, 4092523998913640194ull, 3429167564263534060ull}}, {{8718539714223220124ull, 12259088119673759227ull, 5115654998642050243ull, 4286459455329417575ull}}, {{3143244312175818626ull, 5356087065582405565ull, 10114813401792363258ull, 2679037159580885984ull}}, {{8540741408647161186ull, 15918480868832782764ull, 12643516752240454072ull, 3348796449476107480ull}}, {{10675926760808951483ull, 1451357012331426839ull, 15804395940300567591ull, 4185995561845134350ull}}, {{13589983253146676533ull, 7824627160348223630ull, 5266061444260466840ull, 2616247226153208969ull}}, {{7764107029578569858ull, 9780783950435279538ull, 11194262823752971454ull, 3270309032691511211ull}}, {{481761750118436514ull, 3002607901189323615ull, 9381142511263826414ull, 4087886290864389014ull}}, {{7218630121465104678ull, 15711687993525490971ull, 1251528051112503604ull, 2554928931790243134ull}}, {{4411601633403992943ull, 1192865918197312098ull, 10787782100745405314ull, 3193661164737803917ull}}, {{14737874078609766987ull, 10714454434601415930ull, 18096413644359144546ull, 3992076455922254896ull}}, {{13822857317558492271ull, 11308220040053272860ull, 11310258527724465341ull, 2495047784951409310ull}}, {{17278571646948115338ull, 300216994784427363ull, 4914451122800805869ull, 3118809731189261638ull}}, {{16986528540257756269ull, 4986957261907922108ull, 15366435940355783144ull, 3898512163986577047ull}}, {{1393208300806321860ull, 3116848288692451318ull, 16521551490363446321ull, 2436570102491610654ull}}, {{10964882412862678133ull, 8507746379292952051ull, 11428567326099532093ull, 3045712628114513318ull}}, {{9094416997650959762ull, 15246368992543577968ull, 5062337120769639308ull, 3807140785143141648ull}}, {{5684010623531849852ull, 305608583484960422ull, 3163960700481024568ull, 2379462990714463530ull}}, {{16328385316269588122ull, 382010729356200527ull, 13178322912456056518ull, 2974328738393079412ull}}, {{15798795626909597249ull, 9700885448550026467ull, 16472903640570070647ull, 3717910922991349265ull}}, {{7568404257604804329ull, 12980582432984848398ull, 3378035747715212298ull, 2323694326869593291ull}}, {{237133285151229603ull, 7002356004376284690ull, 18057602739926179085ull, 2904617908586991613ull}}, {{9519788643293812811ull, 13364631023897743766ull, 8736945369625560144ull, 3630772385733739517ull}}, {{2676363767262490206ull, 16705788779872179708ull, 15532867730459338084ull, 4538465482167174396ull}}, {{10896099391393832187ull, 1217745950565336509ull, 484670294682310495ull, 2836540926354483998ull}}, {{18231810257669678138ull, 15357240493488834348ull, 9829209905207663926ull, 3545676157943104997ull}}, {{4343018748377546056ull, 9973178580006267128ull, 16898198399936967812ull, 4432095197428881246ull}}, {{2714386717735966285ull, 15456608649358692763ull, 5949687981533216978ull, 2770059498393050779ull}}, {{17228041452452121568ull, 10097388774843590145ull, 2825423958489133319ull, 3462574372991313474ull}}, {{7699993760282988248ull, 8010049950127099778ull, 12755151984966192457ull, 4328217966239141842ull}}, {{9424182118604255559ull, 16535496264897907121ull, 12583656009031258189ull, 2705136228899463651ull}}, {{16391913666682707353ull, 6834312275840220189ull, 11117883992861684833ull, 3381420286124329564ull}}, {{6654834028071220479ull, 13154576363227663141ull, 13897354991077106041ull, 4226775357655411955ull}}, {{6465114276758206752ull, 1304081199376207607ull, 6380003860209497324ull, 2641734598534632472ull}}, {{3469706827520370535ull, 1630101499220259509ull, 7975004825261871655ull, 3302168248168290590ull}}, {{8948819552827851073ull, 15872684929307488098ull, 745383994722563760ull, 4127710310210363238ull}}, {{10204698238944794825ull, 9920428080817180061ull, 14300923051983766062ull, 2579818943881477023ull}}, {{17367558817108381435ull, 3177163064166699268ull, 13264467796552319674ull, 3224773679851846279ull}}, {{3262704447675925178ull, 13194825867063149894ull, 11968898727263011688ull, 4030967099814807849ull}}, {{15874248335079616948ull, 8246766166914468683ull, 563032676898300449ull, 2519354437384254906ull}}, {{15231124400422133281ull, 14920143727070473758ull, 9927162882977651369ull, 3149193046730318632ull}}, {{9815533463672890793ull, 4815121603555928486ull, 12408953603722064212ull, 3936491308412898290ull}}, {{1523022396368168842ull, 12232823039077231112ull, 12367282020753678036ull, 2460307067758061431ull}}, {{1903777995460211052ull, 15291028798846538890ull, 10847416507514709641ull, 3075383834697576789ull}}, {{11603094531180039623ull, 5278727943276009900ull, 18170956652820774956ull, 3844229793371970986ull}}, {{16475306118842300573ull, 12522577001402281995ull, 15968533926440372251ull, 2402643620857481866ull}}, {{15982446630125487812ull, 11041535233325464590ull, 10737295371195689506ull, 3003304526071852333ull}}, {{10754686250802083957ull, 4578547004802054930ull, 18033305232421999787ull, 3754130657589815416ull}}, {{11333364925178690377ull, 555748868787590379ull, 11270815770263749867ull, 2346331660993634635ull}}, {{9555020138045975067ull, 14529744141266651686ull, 9476833694402299429ull, 2932914576242043294ull}}, {{2720403135702693026ull, 4327122121301150896ull, 2622670081148098479ull, 3666143220302554118ull}}, {{3400503919628366282ull, 797216633199050716ull, 12501709638289898907ull, 4582679025378192647ull}}, {{11348686986622504735ull, 16639161460245264361ull, 14731097551572268672ull, 2864174390861370404ull}}, {{350800677995967206ull, 2352207751597028836ull, 18413871939465335841ull, 3580217988576713005ull}}, {{438500847494959008ull, 7551945707923673949ull, 9182281869049506089ull, 4475272485720891257ull}}, {{2579906038898043332ull, 16249181113520765978ull, 17268141214224411065ull, 2797045303575557035ull}}, {{12448254585477329973ull, 6476418336618793760ull, 16973490499353125928ull, 3496306629469446294ull}}, {{15560318231846662466ull, 8095522920773492200ull, 11993491087336631602ull, 4370383286836807868ull}}, {{9725198894904164041ull, 9671387843910820529ull, 16719303966440170559ull, 2731489554273004917ull}}, {{16768184637057592956ull, 7477548786461137757ull, 7064071902768049487ull, 3414361942841256147ull}}, {{7125172741039827482ull, 4735249964649034293ull, 4218403860032673955ull, 4267952428551570184ull}}, {{6759075972363586129ull, 653688218691952481ull, 2636502412520421222ull, 2667470267844731365ull}}, {{13060530983881870565ull, 10040482310219716409ull, 7907314034077914431ull, 3334337834805914206ull}}, {{2490605674570174494ull, 7938916869347257608ull, 660770505742617231ull, 4167922293507392758ull}}, {{1556628546606359059ull, 11879352070983117861ull, 14248039621371299481ull, 2604951433442120473ull}}, {{6557471701685336727ull, 1014132033446733614ull, 3974991471431960640ull, 3256189291802650592ull}}, {{17420211663961446717ull, 1267665041808417017ull, 4968739339289950800ull, 4070236614753313240ull}}, {{3970103262334822342ull, 792290651130260636ull, 3105462087056219250ull, 2543897884220820775ull}}, {{4962629077918527928ull, 10213735350767601603ull, 17716885664102437774ull, 3179872355276025968ull}}, {{1591600328970772006ull, 3543797151604726196ull, 3699363006418495602ull, 3974840444095032461ull}}, {{10218122242461508312ull, 6826559238180341776ull, 4617944888225253703ull, 2484275277559395288ull}}, {{12772652803076885390ull, 3921513029298039316ull, 5772431110281567129ull, 3105344096949244110ull}}, {{15965816003846106737ull, 9513577305049937049ull, 16438910924706734719ull, 3881680121186555137ull}}, {{3061105974762734855ull, 12863514843297292512ull, 3356790300300627343ull, 2426050075741596961ull}}, {{3826382468453418568ull, 11467707535694227736ull, 8807673893803172083ull, 3032562594676996201ull}}, {{4782978085566773210ull, 9722948401190396766ull, 15621278385681353008ull, 3790703243346245251ull}}, {{16824419358761396969ull, 6076842750743997978ull, 7457455981837151678ull, 2369189527091403282ull}}, {{11807152161596970403ull, 16819425475284773281ull, 98447940441663789ull, 2961486908864254103ull}}, {{923882146714049291ull, 7189223788823802890ull, 13958117980834243449ull, 3701858636080317628ull}}, {{5189112360123668711ull, 16022479914083346566ull, 17947195774876177963ull, 2313661647550198517ull}}, {{15709762487009361697ull, 15416413874176795303ull, 8598936663313058742ull, 2892077059437748147ull}}, {{15025517090334314217ull, 10047145305866218321ull, 6136984810713935524ull, 3615096324297185184ull}}, {{4946838307635729059ull, 12558931632332772902ull, 7671231013392419405ull, 4518870405371481480ull}}, {{16926831997554494374ull, 10155175279421677015ull, 4794519383370262128ull, 2824294003357175925ull}}, {{16546853978515730063ull, 12693969099277096269ull, 10604835247640215564ull, 3530367504196469906ull}}, {{6848509417862498867ull, 15867461374096370337ull, 4032672022695493647ull, 4412959380245587383ull}}, {{15809533432232531552ull, 16834692386451313316ull, 9437949041825765385ull, 2758099612653492114ull}}, {{1315172716581112824ull, 7208307427781977934ull, 2574064265427430924ull, 3447624515816865143ull}}, {{10867337932581166838ull, 9010384284727472417ull, 17052638387066452367ull, 4309530644771081428ull}}, {{18321301253931699034ull, 12549019205595752116ull, 1434526955061756921ull, 2693456652981925893ull}}, {{4454882493705072176ull, 1851215951712526434ull, 6404844712254584056ull, 3366820816227407366ull}}, {{14791975153986116028ull, 2314019939640658042ull, 17229427927173005878ull, 4208526020284259207ull}}, {{13856670489668710422ull, 15281320517557574988ull, 17685921482124210529ull, 2630328762677662004ull}}, {{17320838112085888027ull, 5266592591664805023ull, 3660657778945711546ull, 3287910953347077506ull}}, {{17039361621679972130ull, 15806612776435782087ull, 13799194260536915240ull, 4109888691683846882ull}}, {{17567130041191064437ull, 9879132985272363804ull, 13236182431262959929ull, 2568680432302404301ull}}, {{3512168477779278930ull, 16960602250017842660ull, 2710169983796536199ull, 3210850540378005377ull}}, {{4390210597224098663ull, 16589066794094915421ull, 7999398498173058153ull, 4013563175472506721ull}}, {{5049724632478755617ull, 3450637718668240282ull, 16528839107426631106ull, 2508476984670316700ull}}, {{15535527827453220329ull, 13536669185190076160ull, 2214304810573737266ull, 3135596230837895876ull}}, {{972665710606973795ull, 7697464444632819393ull, 2767881013217171583ull, 3919495288547369845ull}}, {{12137131115197828382ull, 11728444305536593976ull, 4035768642474426191ull, 2449684555342106153ull}}, {{15171413893997285477ull, 10048869363493354566ull, 9656396821520420643ull, 3062105694177632691ull}}, {{9740895330641831038ull, 7949400685939305304ull, 7458810008473137900ull, 3827632117722040864ull}}, {{6088059581651144399ull, 14191747465566841623ull, 4661756255295711187ull, 2392270073576275540ull}}, {{2998388458636542595ull, 13127998313531164125ull, 5827195319119638984ull, 2990337591970344425ull}}, {{8359671591723066147ull, 16409997891913955156ull, 11895680167326936634ull, 3737921989962930531ull}}, {{14448166781681692150ull, 14867934700873609876ull, 5128957095365641444ull, 2336201243726831582ull}}, {{18060208477102115188ull, 138174302382460729ull, 15634568406061827614ull, 2920251554658539477ull}}, {{8740202541095480273ull, 9396089914832851720ull, 5708152452295120805ull, 3650314443323174347ull}}, {{10925253176369350341ull, 16356798411968452554ull, 2523504546941513102ull, 4562893054153967934ull}}, {{11439969253658231867ull, 5611312989052894942ull, 15412248397120609401ull, 2851808158846229958ull}}, {{5076589530218014026ull, 11625827254743506582ull, 10041938459545985943ull, 3564760198557787448ull}}, {{15569108949627293340ull, 9920598050001995323ull, 12552423074432482429ull, 4455950248197234310ull}}, {{7424850084303364386ull, 8506216790464941029ull, 3233578403092913614ull, 2784968905123271444ull}}, {{13892748623806593386ull, 1409398951226400478ull, 4041973003866142018ull, 3481211131404089305ull}}, {{8142563742903465924ull, 10985120725887776406ull, 9664152273260065426ull, 4351513914255111631ull}}, {{477416320887278299ull, 11477386472107248158ull, 12957624198428622747ull, 2719696196409444769ull}}, {{9820142437963873681ull, 9735047071706672293ull, 2361972192753614722ull, 3399620245511805962ull}}, {{16886864065882230006ull, 2945436802778564558ull, 12175837277796794211ull, 4249525306889757452ull}}, {{5942604022749005850ull, 17981799066232460513ull, 16833270335477772189ull, 2655953316806098407ull}}, {{12039941046863645216ull, 8642190777508411929ull, 16429901900919827333ull, 3319941646007623009ull}}, {{1214868253297392808ull, 15414424490312902816ull, 6702319320867620454ull, 4149927057509528762ull}}, {{759292658310870505ull, 5022329288018176356ull, 8800635593969650688ull, 2593704410943455476ull}}, {{949115822888588131ull, 6277911610022720445ull, 11000794492462063360ull, 3242130513679319345ull}}, {{5798080797038123068ull, 7847389512528400556ull, 18362679134004967104ull, 4052663142099149181ull}}, {{12847172535003602726ull, 4904618445330250347ull, 13782517467966798392ull, 2532914463811968238ull}}, {{11447279650327115503ull, 6130773056662812934ull, 8004774798103722182ull, 3166143079764960298ull}}, {{5085727526054118571ull, 16886838357683291976ull, 782596460774876919ull, 3957678849706200373ull}}, {{3178579703783824107ull, 17471803001193139341ull, 2794965797197992026ull, 2473549281066375233ull}}, {{8584910648157168037ull, 12616381714636648368ull, 8105393264924877937ull, 3091936601332969041ull}}, {{10731138310196460047ull, 1935419088013646748ull, 14743427599583485326ull, 3864920751666211301ull}}, {{15930333480727563337ull, 15044694985290692929ull, 11520485258953372280ull, 2415575469791382063ull}}, {{6077858795627290460ull, 359124657903814546ull, 9788920555264327447ull, 3019469337239227579ull}}, {{16820695531388888882ull, 14283963877661931894ull, 7624464675653021404ull, 3774336671549034474ull}}, {{5901248688690667648ull, 18150849460393483242ull, 9376976440710526281ull, 2358960419718146546ull}}, {{16599932897718110367ull, 8853503770209690340ull, 2497848514033382044ull, 2948700524647683183ull}}, {{2303172048438086343ull, 11066879712762112926ull, 16957368697823891267ull, 3685875655809603978ull}}, {{12102337097402383737ull, 9221913622525253253ull, 11973338835425088276ull, 4607344569762004973ull}}, {{9869803695090183788ull, 14987068050933059091ull, 9789179781354374124ull, 2879590356101253108ull}}, {{7725568600435341830ull, 287090989956772248ull, 12236474726692967656ull, 3599487945126566385ull}}, {{9656960750544177288ull, 358863737445965310ull, 1460535353084045858ull, 4499359931408207982ull}}, {{1423914450662722901ull, 4835975854331116223ull, 14747892650959692373ull, 2812099957130129988ull}}, {{15614951118610567338ull, 10656655836341283182ull, 18434865813699615466ull, 3515124946412662485ull}}, {{10295316861408433365ull, 4097447758571828170ull, 9208524211842355621ull, 4393906183015828107ull}}, {{11046259056807658757ull, 4866747858321086558ull, 3449484623187778311ull, 2746191364384892567ull}}, {{4584451784154797638ull, 1471748804473970294ull, 18146913834266886601ull, 3432739205481115708ull}}, {{14953936767048272856ull, 6451372024019850771ull, 4236898219124056635ull, 4290924006851394636ull}}, {{7040367470191476583ull, 1726264505798712780ull, 11871433423807311205ull, 2681827504282121647ull}}, {{8800459337739345729ull, 6769516650675778879ull, 10227605761331751102ull, 3352284380352652059ull}}, {{6388888153746794257ull, 17685267850199499407ull, 8172821183237300973ull, 4190355475440815074ull}}, {{10910584123732828267ull, 13359135415588381081ull, 9719699257950701012ull, 2618972172150509421ull}}, {{18249916173093423237ull, 16698919269485476351ull, 16761310090865764169ull, 3273715215188136776ull}}, {{18200709197939391142ull, 7038591031574681727ull, 2504893539872653596ull, 4092144018985170971ull}}, {{18292972276353201320ull, 13622491431588951887ull, 17706459526916266161ull, 2557590011865731856ull}}, {{18254529327014113746ull, 3193056234204026147ull, 3686330334935781086ull, 3196987514832164821ull}}, {{18206475640340254279ull, 13214692329609808492ull, 9219598937097114261ull, 3996234393540206026ull}}, {{2155675238357883116ull, 10565025715219824260ull, 10373935354113084317ull, 2497646495962628766ull}}, {{2694594047947353895ull, 17817968162452168229ull, 3744047155786579588ull, 3122058119953285958ull}}, {{7979928578361580273ull, 3825716129355658670ull, 13903430981588000294ull, 3902572649941607447ull}}, {{375769343048599767ull, 16226130636129450381ull, 15607173391133582039ull, 2439107906213504654ull}}, {{5081397697238137612ull, 15670977276734425072ull, 10285594702062201741ull, 3048884882766880818ull}}, {{6351747121547672015ull, 5753663540635867628ull, 3633621340722976369ull, 3811106103458601023ull}}, {{13193213987822070818ull, 15125254758965887027ull, 9188542365592942086ull, 2381941314661625639ull}}, {{11879831466350200618ull, 9683196411852582976ull, 6873991938563789704ull, 2977426643327032049ull}}, {{14849789332937750772ull, 12103995514815728720ull, 13204175941632125034ull, 3721783304158790061ull}}, {{9281118333086094233ull, 12176683215187218354ull, 10558452972733772098ull, 2326114565099243788ull}}, {{2378025879502841983ull, 5997481982129247135ull, 13198066215917215123ull, 2907643206374054735ull}}, {{16807590404660716191ull, 2885166459234171014ull, 11885896751469131000ull, 3634554007967568419ull}}, {{11786115968971119430ull, 3606458074042713768ull, 10245684920909025846ull, 4543192509959460524ull}}, {{7366322480606949644ull, 16089094351558859817ull, 15626925112422916961ull, 2839495318724662827ull}}, {{13819589119186074959ull, 6276309884166411059ull, 14921970372101258298ull, 3549369148405828534ull}}, {{12662800380555205795ull, 17068759392062789632ull, 9429090928271797064ull, 4436711435507285668ull}}, {{7914250237847003622ull, 10667974620039243520ull, 15116553867024648973ull, 2772944647192053542ull}}, {{9892812797308754527ull, 17946654293476442304ull, 9672320296926035408ull, 3466180808990066928ull}}, {{12366015996635943159ull, 3986573793136001264ull, 12090400371157544261ull, 4332726011237583660ull}}, {{7728759997897464474ull, 4797451629923694742ull, 16779872268828240971ull, 2707953757023489787ull}}, {{437577960517054785ull, 1385128518977230524ull, 16363154317607913310ull, 3384942196279362234ull}}, {{546972450646318481ull, 10954782685576313963ull, 11230570860155115829ull, 4231177745349202793ull}}, {{16482758846149806715ull, 9152582187698890178ull, 101577759955865537ull, 2644486090843251746ull}}, {{11380076520832482585ull, 16052413753051000627ull, 9350344236799607729ull, 3305607613554064682ull}}, {{9613409632613215328ull, 6230459136031587072ull, 2464558259144733854ull, 4132009516942580853ull}}, {{6008381020383259580ull, 17729095015301905632ull, 3846191921179152610ull, 2582505948089113033ull}}, {{7510476275479074475ull, 12937996732272606232ull, 9419425919901328667ull, 3228132435111391291ull}}, {{9388095344348843093ull, 11560809896913369886ull, 7162596381449272930ull, 4035165543889239114ull}}, {{1255873571790639030ull, 11837192203998244083ull, 9088308756833183485ull, 2521978464930774446ull}}, {{15404900020020462499ull, 961432199715641391ull, 2137013909186703549ull, 3152473081163468058ull}}, {{14644439006598190219ull, 5813476268071939643ull, 11894639423338155244ull, 3940591351454335072ull}}, {{6846931369910174935ull, 12856794704399738085ull, 7434149639586347027ull, 2462869594658959420ull}}, {{13170350230815106573ull, 11459307362072284702ull, 9292687049482933784ull, 3078586993323699275ull}}, {{7239565751664107408ull, 14324134202590355878ull, 7004172793426279326ull, 3848233741654624094ull}}, {{18359786650072230842ull, 4340897858191584519ull, 18212666051173588291ull, 2405146088534140058ull}}, {{18338047294162900649ull, 814436304312092745ull, 13542460527112209556ull, 3006432610667675073ull}}, {{9087501062421462099ull, 1018045380390115932ull, 3093017603608098233ull, 3758040763334593842ull}}, {{14903060200868189620ull, 12165493408812292217ull, 6544822020682449299ull, 2348775477084121151ull}}, {{4793767195803073313ull, 10595180742587977368ull, 3569341507425673720ull, 2935969346355151439ull}}, {{5992208994753841641ull, 13243975928234971710ull, 18296734939564255862ull, 3669961682943939298ull}}, {{16713633280297077859ull, 7331597873438938829ull, 13647546637600544020ull, 4587452103679924123ull}}, {{12751863809399367614ull, 13805620707754112576ull, 6223873639286646060ull, 2867157564799952577ull}}, {{15939829761749209517ull, 17257025884692640720ull, 12391528067535695479ull, 3583946955999940721ull}}, {{1478043128476960281ull, 16959596337438412997ull, 1654352029137455637ull, 4479933694999925902ull}}, {{3229619964511794128ull, 12905590720112702075ull, 14869028073493073485ull, 2799958559374953688ull}}, {{17872083010921906371ull, 2296930344858713881ull, 139541018156790241ull, 3499948199218692111ull}}, {{8505045708370219252ull, 7482848949500780256ull, 14009484327978151513ull, 4374935249023365138ull}}, {{5315653567731387033ull, 16205995639506457420ull, 13367613723413732599ull, 2734334530639603211ull}}, {{6644566959664233791ull, 15645808530955683871ull, 12097831135839777845ull, 3417918163299504014ull}}, {{3694022681152904334ull, 5722202608412441127ull, 5898916882944946499ull, 4272397704124380018ull}}, {{9226293203361647065ull, 1270533621044081752ull, 8298509070267979466ull, 2670248565077737511ull}}, {{11532866504202058831ull, 10811539063159877998ull, 5761450319407586428ull, 3337810706347171889ull}}, {{5192711093397797731ull, 13514423828949847498ull, 11813498917686870939ull, 4172263382933964861ull}}, {{7857130451801011486ull, 6140671883879960734ull, 9689279832767988289ull, 2607664614333728038ull}}, {{598041027896488549ull, 12287525873277338822ull, 2888227754105209553ull, 3259580767917160048ull}}, {{9970923321725386495ull, 1524349286314509815ull, 3610284692631511942ull, 4074475959896450060ull}}, {{13149356103719448415ull, 14787776359228732346ull, 11479799969749470771ull, 2546547474935281287ull}}, {{7213323092794534711ull, 13873034430608527529ull, 9738063943759450560ull, 3183184343669101609ull}}, {{13628339884420556293ull, 17341293038260659411ull, 16784265948126701104ull, 3978980429586377011ull}}, {{6211869418549153731ull, 10838308148912912132ull, 8184323208365494238ull, 2486862768491485632ull}}, {{7764836773186442164ull, 4324513149286364357ull, 10230404010456867798ull, 3108578460614357040ull}}, {{14317731984910440609ull, 14629013473462731254ull, 12788005013071084747ull, 3885723075767946300ull}}, {{4336896472141637477ull, 6837290411700513082ull, 17215875170024203775ull, 2428576922354966437ull}}, {{14644492627031822654ull, 3934926996198253448ull, 7684785907248091007ull, 3035721152943708047ull}}, {{18305615783789778317ull, 306972726820428906ull, 4994296365632725855ull, 3794651441179635059ull}}, {{16052695883295999352ull, 7109386981903849922ull, 815592219306759707ull, 2371657150737271912ull}}, {{10842497817265223382ull, 4275047708952424499ull, 1019490274133449634ull, 2964571438421589890ull}}, {{8941436253154141324ull, 14567181673045306432ull, 10497734879521587850ull, 3705714298026987362ull}}, {{5588397658221338327ull, 13716174564080704424ull, 11172770318128380310ull, 2316071436266867101ull}}, {{6985497072776672909ull, 7921846168246104722ull, 130904842378311676ull, 2895089295333583877ull}}, {{17955243377825616944ull, 9902307710307630902ull, 4775317071400277499ull, 3618861619166979846ull}}, {{13220682185427245372ull, 7766198619457150724ull, 15192518376105122682ull, 4523577023958724807ull}}, {{17486298402746804166ull, 9465560155588107106ull, 16412853012706783532ull, 2827235639974203004ull}}, {{12634500966578729399ull, 11831950194485133883ull, 2069322192173927799ull, 3534044549967753756ull}}, {{11181440189796023845ull, 10178251724679029450ull, 2586652740217409749ull, 4417555687459692195ull}}, {{11600086137049902807ull, 8667250337138087358ull, 17757559027131738757ull, 2760972304662307621ull}}, {{5276735634457602701ull, 15445748939849997102ull, 8361890728632509734ull, 3451215380827884527ull}}, {{15819291579926779184ull, 10083814137957720569ull, 5840677392363249264ull, 4314019226034855659ull}}, {{2969528209813155134ull, 6302383836223575356ull, 1344580361013336838ull, 2696262016271784787ull}}, {{3711910262266443918ull, 17101351832134245003ull, 15515783506548834759ull, 3370327520339730983ull}}, {{28201809405666993ull, 16765003771740418350ull, 14783043364758655545ull, 4212909400424663729ull}}, {{13852684186160705583ull, 3560598329696679612ull, 2321873075333077860ull, 2633068375265414831ull}}, {{17315855232700881978ull, 4450747912120849515ull, 16737399399448511037ull, 3291335469081768538ull}}, {{17033133022448714569ull, 10175120908578449798ull, 11698377212455862988ull, 4114169336352210673ull}}, {{6034022120603058702ull, 15582822604716306932ull, 393956730143832511ull, 2571355835220131671ull}}, {{7542527650753823377ull, 14866842237467995761ull, 14327503967961954351ull, 3214194794025164588ull}}, {{14039845581869667125ull, 13971866778407606797ull, 17909379959952442939ull, 4017743492531455735ull}}, {{11080746497882235905ull, 6426573727291060296ull, 18110891502611358693ull, 2511089682832159834ull}}, {{13850933122352794882ull, 12644903177541213274ull, 13415242341409422558ull, 3138862103540199793ull}}, {{8090294366086217794ull, 6582756935071740785ull, 2933994871479614486ull, 3923577629425249742ull}}, {{16585649024872355881ull, 17949281139702001702ull, 15668804849956922765ull, 2452236018390781088ull}}, {{11508689244235669044ull, 8601543369345338416ull, 1139261988736601841ull, 3065295022988476361ull}}, {{14385861555294586304ull, 15363615230109060924ull, 6035763504348140205ull, 3831618778735595451ull}}, {{18214535508913892248ull, 11908102528031857029ull, 1466509181003893676ull, 2394761736709747157ull}}, {{8933111330860201598ull, 14885128160039821287ull, 6444822494682254999ull, 2993452170887183946ull}}, {{6554703145147864094ull, 13994724181622388705ull, 17279400155207594557ull, 3741815213608979932ull}}, {{15625904511785884819ull, 11052545622727686892ull, 1576253060149970790ull, 2338634508505612458ull}}, {{1085636566022804407ull, 4592309991554832808ull, 11193688362042239296ull, 2923293135632015572ull}}, {{1357045707528505509ull, 5740387489443541010ull, 13992110452552799120ull, 3654116419540019465ull}}, {{10919679171265407694ull, 7175484361804426262ull, 3655080010408835188ull, 4567645524425024332ull}}, {{2213113463613491905ull, 13708049762982542222ull, 11507797043360297800ull, 2854778452765640207ull}}, {{11989763866371640689ull, 17135062203728177777ull, 9773060285772984346ull, 3568473065957050259ull}}, {{1152146777682387150ull, 12195455717805446414ull, 7604639338788842529ull, 4460591332446312824ull}}, {{14555149791333655681ull, 704630795987322152ull, 4752899586743026581ull, 2787869582778945515ull}}, {{18193937239167069601ull, 5492474513411540594ull, 1329438465001395322ull, 3484836978473681894ull}}, {{13519049512104061193ull, 16088965178619201551ull, 10885170118106519960ull, 4356046223092102367ull}}, {{15366934972706120102ull, 10055603236637000969ull, 13720760351457656831ull, 2722528889432563979ull}}, {{5373610660600486415ull, 7957818027368863308ull, 12539264420894683135ull, 3403161111790704974ull}}, {{6717013325750608019ull, 5335586515783691231ull, 6450708489263578111ull, 4253951389738381218ull}}, {{11115662356235211868ull, 10252270600005888875ull, 8643378824217124223ull, 2658719618586488261ull}}, {{9282891926866626931ull, 8203652231579973190ull, 15415909548698793183ull, 3323399523233110326ull}}, {{2380242871728507855ull, 5642879271047578584ull, 10046514899018715671ull, 4154249404041387908ull}}, {{1487651794830317410ull, 10444328572045818471ull, 15502443848741473102ull, 2596405877525867442ull}}, {{15694622798820060474ull, 3832038678202497280ull, 10154682774072065570ull, 3245507346907334303ull}}, {{1171534424815523976ull, 14013420384607897409ull, 8081667449162694058ull, 4056884183634167879ull}}, {{12261424061578172245ull, 13370073758807323784ull, 11968571183367765642ull, 2535552614771354924ull}}, {{15326780076972715307ull, 7489220161654378922ull, 14960713979209707053ull, 3169440768464193655ull}}, {{9935103059361118325ull, 13973211220495361557ull, 14089206455584745912ull, 3961800960580242069ull}}, {{8515282421314392905ull, 8733257012809600973ull, 11111597043954160147ull, 2476125600362651293ull}}, {{15255789045070379036ull, 6304885247584613312ull, 54438249660536472ull, 3095157000453314117ull}}, {{622992232628422178ull, 7881106559480766641ull, 4679733830503058494ull, 3868946250566642646ull}}, {{11918585191461233622ull, 314005581248091246ull, 16759891699346575271ull, 2418091406604151653ull}}, {{5674859452471766219ull, 14227565031842277770ull, 7114806568901055376ull, 3022614258255189567ull}}, {{16316946352444483582ull, 17784456289802847212ull, 4281822192698931316ull, 3778267822818986959ull}}, {{974719433423026431ull, 1891913144272003700ull, 9593667898077913929ull, 2361417389261866849ull}}, {{1218399291778783038ull, 6976577448767392529ull, 16603770891024780315ull, 2951771736577333561ull}}, {{6134685133150866702ull, 4109035792531852757ull, 6919655558498811682ull, 3689714670721666952ull}}, {{6140021217432985641ull, 7179833388759795877ull, 4324784724061757301ull, 2306071669201041845ull}}, {{12286712540218619955ull, 13586477754377132750ull, 10017666923504584530ull, 2882589586501302306ull}}, {{6135018638418499135ull, 7759725156116640130ull, 3298711617525954855ull, 3603236983126627883ull}}, {{16892145334877899727ull, 5087970426718412258ull, 17958447577189607281ull, 4504046228908284853ull}}, {{15169276852726075234ull, 14709196562767477421ull, 13529872744957198502ull, 2815028893067678033ull}}, {{5126538010625430330ull, 9163123666604570969ull, 3077282875914334416ull, 3518786116334597542ull}}, {{11019858531709175816ull, 11453904583255713711ull, 13069975631747693828ull, 4398482645418246927ull}}, {{13804940609959316741ull, 16382062401389596877ull, 15086263797483390498ull, 2749051653386404329ull}}, {{3421117707166982215ull, 11254205964882220289ull, 5022771691572074411ull, 3436314566733005412ull}}, {{8888083152386115672ull, 9456071437675387457ull, 6278464614465093014ull, 4295393208416256765ull}}, {{17084267016309792055ull, 1298358630119729256ull, 6229883393254377086ull, 2684620755260160478ull}}, {{2908589696677688453ull, 10846320324504437379ull, 17010726278422747165ull, 3355775944075200597ull}}, {{17470795176129274278ull, 18169586424057934627ull, 7428349792746270244ull, 4194719930094000747ull}}, {{8613403975867102472ull, 2132619478181433334ull, 2336875611252724951ull, 2621699956308750467ull}}, {{1543382932979102282ull, 16500832403008955380ull, 16756152569348069900ull, 3277124945385938083ull}}, {{1929228666223877852ull, 2179296430051642609ull, 16333504693257699472ull, 4096406181732422604ull}}, {{12734982962458393418ull, 1362060268782276630ull, 985068396431286362ull, 2560253863582764128ull}}, {{6695356666218215964ull, 10925947372832621596ull, 1231335495539107952ull, 3200317329478455160ull}}, {{8369195832772769955ull, 13657434216040776995ull, 1539169369423884940ull, 4000396661848068950ull}}, {{2924904386269287270ull, 17759268421880261430ull, 14797038911172091799ull, 2500247913655043093ull}}, {{12879502519691384895ull, 17587399508922938883ull, 4661240583682951037ull, 3125309892068803867ull}}, {{11487692131186843215ull, 8149191330871509892ull, 1214864711176300893ull, 3906637365086004834ull}}, {{16403179618846552818ull, 7399087591008387634ull, 5370976462912575962ull, 2441648353178753021ull}}, {{11280602486703415214ull, 25487451905708735ull, 11325406597068107857ull, 3052060441473441276ull}}, {{9489067089951881113ull, 4643545333309523823ull, 14156758246335134821ull, 3815075551841801595ull}}, {{12848195958861007552ull, 5208058842532146341ull, 6542130894745765311ull, 2384422219901125997ull}}, {{2225186893294095728ull, 1898387534737795023ull, 12789349636859594543ull, 2980527774876407496ull}}, {{16616541671899783372ull, 16208042473704407490ull, 15986687046074493178ull, 3725659718595509370ull}}, {{14997024563364752511ull, 14741712564492642585ull, 14603365422223946140ull, 2328537324122193356ull}}, {{4911222648923776927ull, 18427140705615803232ull, 18254206777779932675ull, 2910671655152741695ull}}, {{6139028311154721159ull, 18422239863592366136ull, 18206072453797527940ull, 3638339568940927119ull}}, {{7673785388943401449ull, 4581055755780906054ull, 18145904548819522022ull, 4547924461176158899ull}}, {{184429849662238002ull, 16698217902645229996ull, 9035347333798507311ull, 2842452788235099312ull}}, {{230537312077797502ull, 16261086359879149591ull, 11294184167248134139ull, 3553065985293874140ull}}, {{14123229695379410589ull, 15714671931421549084ull, 14117730209060167674ull, 4441332481617342675ull}}, {{18050390596466907426ull, 14433355975565856081ull, 6517738371448910844ull, 2775832801010839172ull}}, {{8727930190301470571ull, 18041694969457320102ull, 8147172964311138555ull, 3469791001263548965ull}}, {{1686540701022062405ull, 17940432693394262224ull, 14795652223816311098ull, 4337238751579436206ull}}, {{1054087938138789004ull, 15824456451798801794ull, 4635596621457806532ull, 2710774219737147629ull}}, {{10540981959528262062ull, 1333826491038950626ull, 10406181795249646070ull, 3388467774671434536ull}}, {{3952855412555551770ull, 10890655150653464091ull, 13007727244062057587ull, 4235584718339293170ull}}, {{164691623633525904ull, 4500816459944721105ull, 12741515545966173896ull, 2647240448962058231ull}}, {{4817550547969295284ull, 5626020574930901381ull, 11315208414030329466ull, 3309050561202572789ull}}, {{10633624203389007009ull, 16255897755518402534ull, 308952462255748120ull, 4136313201503215987ull}}, {{2034329108690741477ull, 10159936097199001584ull, 16333996353405700239ull, 2585195750939509991ull}}, {{2542911385863426846ull, 8088234103071364076ull, 15805809423329737395ull, 3231494688674387489ull}}, {{3178639232329283557ull, 5498606610411817191ull, 5922203723880008032ull, 4039368360842984362ull}}, {{8904178547846884080ull, 3436629131507385744ull, 8313063345852392924ull, 2524605225526865226ull}}, {{11130223184808605099ull, 4295786414384232180ull, 1167957145460715347ull, 3155756531908581533ull}}, {{13912778981010756374ull, 758046999552902321ull, 6071632450253282088ull, 3944695664885726916ull}}, {{1777957835490640878ull, 473779374720563951ull, 13018142318263077113ull, 2465434790553579322ull}}, {{16057505349645464809ull, 5203910236828092842ull, 7049305860974070583ull, 3081793488191974153ull}}, {{10848509650202055204ull, 1893201777607728149ull, 13423318344644976133ull, 3852241860239967691ull}}, {{9086161540589978454ull, 3489094120218524045ull, 6083730956189416131ull, 2407651162649979807ull}}, {{15969387944164860972ull, 18196425705555318768ull, 2992977676809382259ull, 3009563953312474759ull}}, {{1514990856496524599ull, 18133846113516760557ull, 17576280151293891536ull, 3761954941640593448ull}}, {{3252712294524021826ull, 11333653820947975348ull, 10985175094558682210ull, 2351221838525370905ull}}, {{4065890368155027283ull, 4943695239330193377ull, 18343154886625740667ull, 2939027298156713631ull}}, {{9694048978621172007ull, 1567933030735353817ull, 18317257589854787930ull, 3673784122695892039ull}}, {{16729247241703852913ull, 11183288325273968079ull, 18284885968891097008ull, 4592230153369865049ull}}, {{17373308553705989927ull, 6989555203296230049ull, 4510524702915853774ull, 2870143845856165656ull}}, {{7881577636850323697ull, 17960316040975063370ull, 5638155878644817217ull, 3587679807320207070ull}}, {{628600009208128813ull, 8615336995936665501ull, 16271066885160797330ull, 4484599759150258837ull}}, {{2698718014968774460ull, 9996271640887803842ull, 12475259812439192283ull, 2802874849468911773ull}}, {{12596769555565743883ull, 7883653532682366898ull, 1759016710266826642ull, 3503593561836139717ull}}, {{6522589907602404046ull, 631194878998182815ull, 6810456906260921207ull, 4379491952295174646ull}}, {{10994147719892584385ull, 7312025827014946115ull, 18091593621695239466ull, 2737182470184484153ull}}, {{9130998631438342577ull, 18363404320623458452ull, 8779433971836885620ull, 3421478087730605192ull}}, {{11413748289297928221ull, 4507511327069771449ull, 10974292464796107026ull, 4276847609663256490ull}}, {{216063653170123282ull, 7428880597845995060ull, 11470618808924954795ull, 2673029756039535306ull}}, {{270079566462654103ull, 4674414728880105921ull, 5114901474301417686ull, 3341287195049419133ull}}, {{4949285476505705532ull, 15066390447954908209ull, 11005312861304160011ull, 4176608993811773916ull}}, {{14622518468884535718ull, 7110651020758123678ull, 16101692575169875815ull, 2610380621132358697ull}}, {{9054776049250893839ull, 4276627757520266694ull, 6292057663680181057ull, 3262975776415448372ull}}, {{2095098024708841491ull, 9957470715327721272ull, 7865072079600226321ull, 4078719720519310465ull}}, {{1309436265443025932ull, 17752634243148295555ull, 16444885095818611210ull, 2549199825324569040ull}}, {{15471853387085946127ull, 12967420767080593635ull, 2109362296063712397ull, 3186499781655711301ull}}, {{14728130715430044754ull, 2374217903568578332ull, 7248388888507028401ull, 3983124727069639126ull}}, {{18428453733998553780ull, 13013101235798831217ull, 18365301110599056462ull, 2489452954418524453ull}}, {{9200509112216028512ull, 7043004507893763214ull, 9121568332966656866ull, 3111816193023155567ull}}, {{2277264353415259832ull, 18027127671721979826ull, 6790274397780933178ull, 3889770241278944459ull}}, {{6034976239311925299ull, 15878640813253625295ull, 1938078489399389284ull, 2431106400799340287ull}}, {{2932034280712518720ull, 1401556942857480003ull, 16257656167031400318ull, 3038883000999175358ull}}, {{17500100906172812112ull, 10975318215426625811ull, 11098698171934474589ull, 3798603751248969198ull}}, {{8631720057144313618ull, 9165416893855335084ull, 2325000339031658714ull, 2374127344530605749ull}}, {{10789650071430392023ull, 2233399080464393047ull, 7517936442216961297ull, 2967659180663257186ull}}, {{8875376570860602124ull, 7403434869007879213ull, 174048515916425813ull, 3709573975829071483ull}}, {{7852953366001570280ull, 6932989802343618460ull, 16249681386943623797ull, 2318483734893169676ull}}, {{9816191707501962850ull, 13277923271356910979ull, 1865357659969978130ull, 2898104668616462096ull}}, {{7658553615950065658ull, 7374032052341362916ull, 2331697074962472663ull, 3622630835770577620ull}}, {{9573192019937582072ull, 4605854046999315741ull, 2914621343703090829ull, 4528288544713222025ull}}, {{8289088021674682747ull, 5184501788588266290ull, 13350853385882901528ull, 2830180340445763765ull}}, {{1137987990238577626ull, 6480627235735332863ull, 2853508677071463198ull, 3537725425557204707ull}}, {{15257543043080385744ull, 17324156081523941886ull, 17401943901621492709ull, 4422156781946505883ull}}, {{4924278383497853186ull, 13133440560166157631ull, 8570371929299738991ull, 2763847988716566177ull}}, {{1543661960944928579ull, 11805114681780309135ull, 15324650930052061643ull, 3454809985895707721ull}}, {{15764635506463324436ull, 10144707333797998514ull, 5320755607282913342ull, 4318512482369634652ull}}, {{14464583209966965676ull, 1728756065196361167ull, 12548844291406596647ull, 2699070301481021657ull}}, {{13469042994031319191ull, 15996003136777615171ull, 1850997308976082096ull, 3373837876851277072ull}}, {{12224617724111761085ull, 1548259847262467348ull, 2313746636220102621ull, 4217297346064096340ull}}, {{16863758114424626486ull, 3273505413752736044ull, 10669463684492339946ull, 2635810841290060212ull}}, {{2632953569321231492ull, 13315253804045695864ull, 13336829605615424932ull, 3294763551612575265ull}}, {{3291191961651539365ull, 16644067255057119830ull, 2835978951737117453ull, 4118454439515719082ull}}, {{15892053031314375815ull, 12708385043624393845ull, 6384172863263086312ull, 2574034024697324426ull}}, {{6030008233860806057ull, 15885481304530492307ull, 17203588115933633698ull, 3217542530871655532ull}}, {{2925824273898619667ull, 10633479593808339576ull, 3057741071207490507ull, 4021928163589569416ull}}, {{1828640171186637292ull, 4340081736916518283ull, 1911088169504681567ull, 2513705102243480885ull}}, {{16120858269265460327ull, 813416152718259949ull, 7000546230308239863ull, 3142131377804351106ull}}, {{6316014781299661696ull, 14851828246179988649ull, 17974054824740075636ull, 3927664222255438882ull}}, {{15476724284380758320ull, 59020617007717097ull, 15845470283889935177ull, 2454790138909649301ull}}, {{5510847300193784188ull, 4685461789687034276ull, 5971779799580255259ull, 3068487673637061627ull}}, {{6888559125242230235ull, 1245141218681404941ull, 2853038731047931170ull, 3835609592046327034ull}}, {{6611192462490087849ull, 5389899280103265992ull, 6394835225332344885ull, 2397255995028954396ull}}, {{8263990578112609812ull, 11349060118556470394ull, 7993544031665431106ull, 2996569993786192995ull}}, {{1106616185785986456ull, 4962953111340812185ull, 5380244021154400979ull, 3745712492232741244ull}}, {{12220850162184711295ull, 796002685374313663ull, 12586024550076276420ull, 2341070307645463277ull}}, {{10664376684303501215ull, 995003356717892079ull, 1897472632313181813ull, 2926337884556829097ull}}, {{8718784836951988615ull, 5855440214324753003ull, 6983526808818865170ull, 3657922355696036371ull}}, {{6286795027762597864ull, 16542672304760717062ull, 4117722492596193558ull, 4572402944620045464ull}}, {{17764304947633787377ull, 5727484172048060259ull, 2573576557872620974ull, 2857751840387528415ull}}, {{17593695166114846318ull, 16382727251914851132ull, 17052028752622939929ull, 3572189800484410518ull}}, {{3545374883934006281ull, 6643351009611400204ull, 12091663903923899104ull, 4465237250605513148ull}}, {{11439231339313529734ull, 4152094381007125127ull, 16780661976807212748ull, 2790773281628445717ull}}, {{9687353155714524263ull, 5190117976258906409ull, 7140769415726852223ull, 3488466602035557147ull}}, {{16720877463070543233ull, 1875961451896245107ull, 4314275751231177375ull, 4360583252544446434ull}}, {{8144705405205395569ull, 8090004935076235048ull, 7308108362946873763ull, 2725364532840279021ull}}, {{10180881756506744461ull, 5500820150417905906ull, 13746821472110980108ull, 3406705666050348776ull}}, {{3502730158778654768ull, 6876025188022382383ull, 17183526840138725135ull, 4258382082562935970ull}}, {{9106735376877741086ull, 11215044770155070845ull, 15351390293514091113ull, 2661488801601834981ull}}, {{15995105239524564261ull, 183747907411674844ull, 5354179811610450180ull, 3326861002002293727ull}}, {{1547137475696153711ull, 229684884264593556ull, 2081038746085674821ull, 4158576252502867159ull}}, {{10190332959164871877ull, 2449396061879064924ull, 8218178243944628619ull, 2599110157814291974ull}}, {{12737916198956089846ull, 16896803132630994867ull, 1049350768076009965ull, 3248887697267864968ull}}, {{11310709230267724404ull, 7285945860506579872ull, 1311688460095012457ull, 4061109621584831210ull}}, {{7069193268917327753ull, 16082931208885082180ull, 5431491305986770689ull, 2538193513490519506ull}}, {{8836491586146659691ull, 6268605955824189013ull, 16012736169338239170ull, 3172741891863149382ull}}, {{15657300501110712517ull, 17059129481635012074ull, 10792548174818023154ull, 3965927364828936728ull}}, {{14397498831621583227ull, 15273641944449270450ull, 6745342609261264471ull, 2478704603018085455ull}}, {{8773501502672203226ull, 14480366412134200159ull, 3819992243149192685ull, 3098380753772606819ull}}, {{6355190859912866129ull, 4265399959885586487ull, 163304285509102953ull, 3872975942215758524ull}}, {{10889523315086623187ull, 14195090020996961314ull, 9325437215297965153ull, 2420609963884849077ull}}, {{4388532107003503175ull, 3908804470964037931ull, 16268482537549844346ull, 3025762454856061346ull}}, {{873979115326991065ull, 14109377625559823222ull, 11112231135082529624ull, 3782203068570076683ull}}, {{14381295002361533128ull, 8818361015974889513ull, 4639301450212887063ull, 2363876917856297927ull}}, {{4141560697669752697ull, 6411265251541223988ull, 1187440794338720925ull, 2954846147320372409ull}}, {{5176950872087190872ull, 12625767582853917889ull, 6095987011350789060ull, 3693557684150465511ull}}, {{14764809341122964055ull, 17114476776138474488ull, 10727520909735325018ull, 2308473552594040944ull}}, {{9267602694153453ull, 12169723933318317303ull, 13409401137169156273ull, 2885591940742551180ull}}, {{13846642558649855528ull, 1377096861365732916ull, 16761751421461445342ull, 3606989925928188975ull}}, {{17308303198312319409ull, 10944743113561941953ull, 16340503258399418773ull, 4508737407410236219ull}}, {{3900160471304117775ull, 9146307455189907673ull, 7906971527285942781ull, 2817960879631397637ull}}, {{9486886607557535123ull, 16044570337414772495ull, 14495400427534816380ull, 3522451099539247046ull}}, {{7246922241019530999ull, 1608968848058914003ull, 8895878497563744668ull, 4403063874424058808ull}}, {{2223483391423512923ull, 10228977566891597060ull, 5559924060977340417ull, 2751914921515036755ull}}, {{2779354239279391153ull, 17397907977041884229ull, 2338219057794287617ull, 3439893651893795944ull}}, {{8085878817526626846ull, 7912326916020191574ull, 2922773822242859522ull, 4299867064867244930ull}}, {{441988242526753875ull, 9556890340940007638ull, 6438419657329175105ull, 2687416915542028081ull}}, {{9775857340013218151ull, 16557798944602397451ull, 12659710590088856785ull, 3359271144427535101ull}}, {{7608135656589134785ull, 6862190625470833102ull, 1989580182328907270ull, 4199088930534418877ull}}, {{143398766940821337ull, 18123927196201434401ull, 3549330623169260995ull, 2624430581584011798ull}}, {{4790934477103414575ull, 18043222976824405097ull, 13660035315816352052ull, 3280538226980014747ull}}, {{10600354114806656122ull, 4107284647320954755ull, 12463358126343052162ull, 4100672783725018434ull}}, {{4319378312540466125ull, 7178738923002984626ull, 12401284847391795505ull, 2562920489828136521ull}}, {{14622594927530358464ull, 13585109672181118686ull, 1666548003957580669ull, 3203650612285170652ull}}, {{9054871622558172271ull, 3146329034944234646ull, 2083185004946975837ull, 4004563265356463315ull}}, {{1047608745671469766ull, 4272298656053840606ull, 17442891692587717562ull, 2502852040847789571ull}}, {{10532882968944113015ull, 14563745356922076565ull, 17191928597307259048ull, 3128565051059736964ull}}, {{17777789729607529173ull, 18204681696152595706ull, 3043166672924522194ull, 3910706313824671206ull}}, {{15722804599432093637ull, 15989612078522760220ull, 15737037225859990083ull, 2444191446140419503ull}}, {{1206761675580565430ull, 15375329079726062372ull, 15059610513897599700ull, 3055239307675524379ull}}, {{1508452094475706788ull, 772417275948026349ull, 14212827123944611722ull, 3819049134594405474ull}}, {{3248625568261010695ull, 5094446815894904372ull, 13494702970892770230ull, 2386905709121503421ull}}, {{4060781960326263368ull, 15591430556723406273ull, 3033320658333799075ull, 2983632136401879277ull}}, {{9687663468835217114ull, 14877602177476869937ull, 8403336841344636748ull, 3729540170502349096ull}}, {{17584004714090480456ull, 75129324068267902ull, 5252085525840397968ull, 2330962606563968185ull}}, {{12756633855758324762ull, 93911655085334878ull, 11176792925727885364ull, 2913703258204960231ull}}, {{6722420282843130145ull, 117389568856668598ull, 9359305138732468801ull, 3642129072756200289ull}}, {{17626397390408688489ull, 4758422979498223651ull, 16310817441842973905ull, 4552661340945250361ull}}, {{8710655359791736354ull, 14503229408254859542ull, 3276731873510776834ull, 2845413338090781476ull}}, {{1664947162884894634ull, 8905664723463798620ull, 4095914841888471043ull, 3556766672613476845ull}}, {{2081183953606118293ull, 6520394885902360371ull, 9731579570787976708ull, 4445958340766846056ull}}, {{17441641035499681597ull, 13298618840543751039ull, 6082237231742485442ull, 2778723962979278785ull}}, {{17190365275947214092ull, 7399901513824912991ull, 12214482558105494707ull, 3473404953724098481ull}}, {{16876270576506629711ull, 4638190873853753335ull, 1433045142349704672ull, 4341756192155123102ull}}, {{17465198137957725426ull, 2898869296158595834ull, 14730711269250729132ull, 2713597620096951938ull}}, {{12608125635592380974ull, 3623586620198244793ull, 9190017049708635607ull, 3391997025121189923ull}}, {{1925098989208312505ull, 18364541330529969704ull, 6875835293708406604ull, 4239996281401487404ull}}, {{1203186868255195316ull, 2254466294726455257ull, 13520769095422529936ull, 2649997675875929627ull}}, {{6115669603746382049ull, 2818082868408069071ull, 12289275350850774516ull, 3312497094844912034ull}}, {{3032900986255589657ull, 3522603585510086339ull, 6138222151708692337ull, 4140621368556140043ull}}, {{18036464180905601200ull, 13730842287012273721ull, 1530545835604238758ull, 2587888355347587527ull}}, {{8710522170849837788ull, 7940180821910566344ull, 15748240349787462160ull, 3234860444184484408ull}}, {{10888152713562297234ull, 9925226027388207930ull, 1238556363524776084ull, 4043575555230605511ull}}, {{11416781464403823676ull, 15426638303972405764ull, 7691626754844066908ull, 2527234722019128444ull}}, {{14270976830504779595ull, 836553806255955589ull, 9614533443555083636ull, 3159043402523910555ull}}, {{4003662982848810781ull, 1045692257819944487ull, 7406480786016466641ull, 3948804253154888194ull}}, {{9419818391921588594ull, 12182772707205935064ull, 9240736509687679554ull, 2468002658221805121ull}}, {{11774772989901985743ull, 6005093847152643022ull, 16162606655536987347ull, 3085003322777256401ull}}, {{5495094200522706370ull, 2894681290513415874ull, 6368200264139070472ull, 3856254153471570502ull}}, {{8046119893754079386ull, 1809175806570884921ull, 17815183220369082757ull, 2410158845919731563ull}}, {{14669335885619987136ull, 6873155776640994055ull, 17657293007033965542ull, 3012698557399664454ull}}, {{13724983838597596016ull, 17814816757656018377ull, 12848244221937681119ull, 3765873196749580568ull}}, {{1660585871482415654ull, 18051789501176093342ull, 8030152638711050699ull, 2353670747968487855ull}}, {{11299104376207795375ull, 17953050858042728773ull, 5426004779961425470ull, 2942088434960609819ull}}, {{288822414977580507ull, 13217941535698635159ull, 2170819956524393934ull, 3677610543700762274ull}}, {{14196086074004139346ull, 7299054882768518140ull, 11936896982510268226ull, 4597013179625952842ull}}, {{18095925833107362899ull, 9173595320157711741ull, 12072246632496305545ull, 2873133237266220526ull}}, {{8784849236102039912ull, 16078680168624527581ull, 5866936253765606123ull, 3591416546582775658ull}}, {{15592747563554937794ull, 15486664192353271572ull, 16557042354061783462ull, 4489270683228469572ull}}, {{522095190367060313ull, 5067479101793406829ull, 1124779434433838856ull, 2805794177017793483ull}}, {{5264305006386213296ull, 6334348877241758536ull, 15241032348324462282ull, 3507242721272241853ull}}, {{6580381257982766619ull, 17141308133406973978ull, 5216232380123414140ull, 4384053401590302317ull}}, {{8724424304666617041ull, 1489945546524582928ull, 5565988246790827790ull, 2740033375993938948ull}}, {{10905530380833271302ull, 11085803970010504468ull, 6957485308488534737ull, 3425041719992423685ull}}, {{13631912976041589127ull, 22196907230966873ull, 13308542654038056326ull, 4281302149990529606ull}}, {{1602416582384911348ull, 13848931122301518008ull, 3706153140346397299ull, 2675813843744081004ull}}, {{2003020727981139185ull, 12699477884449509606ull, 4632691425432996624ull, 3344767304680101255ull}}, {{11727147946831199790ull, 15874347355561887007ull, 1179178263363857876ull, 4180959130850126569ull}}, {{14246996494410581725ull, 698095060371403571ull, 12266201460670880933ull, 2613099456781329105ull}}, {{13197059599585839252ull, 5484304843891642368ull, 1497693770556437454ull, 3266374320976661382ull}}, {{16496324499482299065ull, 16078753091719328768ull, 11095489250050322625ull, 4082967901220826727ull}}, {{10310202812176436916ull, 3131691654683498624ull, 13852209808922533497ull, 2551854938263016704ull}}, {{12887753515220546144ull, 8526300586781761184ull, 17315262261153166871ull, 3189818672828770880ull}}, {{16109691894025682680ull, 6046189715049813576ull, 3197333752731906973ull, 3987273341035963601ull}}, {{10068557433766051675ull, 6084711581119827437ull, 13527548641525911618ull, 2492045838147477250ull}}, {{17197382810634952498ull, 16829261513254560104ull, 7686063765052613714ull, 3115057297684346563ull}}, {{3049984439584139006ull, 11813204854713424323ull, 4995893687888379239ull, 3893821622105433204ull}}, {{18047141339235944543ull, 14300782061836972057ull, 12345805591785012832ull, 2433638513815895752ull}}, {{8723868618762766967ull, 17875977577296215072ull, 15432256989731266040ull, 3042048142269869690ull}}, {{10904835773453458709ull, 3898227897910717224ull, 10066949200309306743ull, 3802560177837337113ull}}, {{6815522358408411693ull, 9353921463835280121ull, 17821058296261786474ull, 2376600111148335695ull}}, {{13131088966437902520ull, 2469029792939324343ull, 17664636851899845189ull, 2970750138935419619ull}}, {{11802175189619990246ull, 7697973259601543333ull, 17469110046447418582ull, 3713437673669274524ull}}, {{9682202502726187856ull, 199547268823576679ull, 1694821742174860806ull, 2320898546043296578ull}}, {{7491067109980346916ull, 9472806122884246657ull, 11341899214573351815ull, 2901123182554120722ull}}, {{13975519905902821549ull, 7229321635177920417ull, 4954001981361913961ull, 3626403978192650903ull}}, {{3634341827096363224ull, 13648338062399788426ull, 1580816458275004547ull, 4533004972740813629ull}}, {{6883149660362614919ull, 6224368279786173814ull, 3293853295635571794ull, 2833128107963008518ull}}, {{17827309112308044457ull, 17003832386587493075ull, 13340688656399240550ull, 3541410134953760647ull}}, {{17672450371957667667ull, 12031418446379590536ull, 12064174802071662784ull, 4426762668692200809ull}}, {{11045281482473542292ull, 7519636528987244085ull, 622580223653707384ull, 2766726667932625506ull}}, {{18418287871519315769ull, 9399545661234055106ull, 10001597316421910038ull, 3458408334915781882ull}}, {{13799487802544368903ull, 2526060039687793075ull, 3278624608672611740ull, 4323010418644727353ull}}, {{6318836867376536612ull, 10802159561659646480ull, 13578355426488852097ull, 2701881511652954595ull}}, {{7898546084220670765ull, 18114385470501946004ull, 12361258264683677217ull, 3377351889566193244ull}}, {{9873182605275838457ull, 8807923782845268793ull, 15451572830854596522ull, 4221689861957741555ull}}, {{17699954174365868796ull, 10116638382705680899ull, 7351390010070428874ull, 2638556163723588472ull}}, {{17513256699529948090ull, 3422425941527325316ull, 9189237512588036093ull, 3298195204654485590ull}}, {{3444826800702883497ull, 8889718445336544550ull, 2263174853880269308ull, 4122744005818106988ull}}, {{15988074805721465898ull, 14779446065190116151ull, 10637856320529944125ull, 2576715003636316867ull}}, {{15373407488724444468ull, 4639249526205481477ull, 8685634382235042253ull, 3220893754545396084ull}}, {{5381701305623391873ull, 10410747926184239751ull, 10857042977793802816ull, 4026117193181745105ull}}, {{10281092343655701777ull, 6506717453865149844ull, 18314866907189596520ull, 2516323245738590690ull}}, {{12851365429569627221ull, 8133396817331437305ull, 13670211597132219842ull, 3145404057173238363ull}}, {{2229148731679870314ull, 943373984809520824ull, 12476078477987886899ull, 3931755071466547954ull}}, {{1393217957299918946ull, 16730509805001808179ull, 12409235067169817215ull, 2457346919666592471ull}}, {{15576580501907062395ull, 16301451237824872319ull, 10899857815534883615ull, 3071683649583240589ull}}, {{14859039608956440089ull, 15765128028853702495ull, 18236508287845992423ull, 3839604561979050736ull}}, {{16204428783238856912ull, 16770734045674645915ull, 11397817679903745264ull, 2399752851236906710ull}}, {{15643849960621183236ull, 2516673483383755778ull, 5023900063024905773ull, 2999691064046133388ull}}, {{10331440413921703237ull, 7757527872657082627ull, 6279875078781132216ull, 3749613830057666735ull}}, {{4151307249487370571ull, 4848454920410676642ull, 10842450951879289491ull, 2343508643786041709ull}}, {{14412506098713989022ull, 1448882632085957898ull, 18164749708276499768ull, 2929385804732552136ull}}, {{8792260586537710469ull, 1811103290107447373ull, 4259193061636073094ull, 3661732255915690171ull}}, {{15602011751599525990ull, 11487251149489085024ull, 712305308617703463ull, 4577165319894612714ull}}, {{9751257344749703744ull, 14097060996071759996ull, 5056876836313452568ull, 2860728324934132946ull}}, {{12189071680937129680ull, 17621326245089699995ull, 15544468082246591518ull, 3575910406167666182ull}}, {{10624653582744024196ull, 12803285769507349186ull, 10207213065953463590ull, 4469888007709582728ull}}, {{11252094507642403027ull, 3390367587514705337ull, 6379508166220914744ull, 2793680004818489205ull}}, {{230060079270840071ull, 4237959484393381672ull, 12586071226203531334ull, 3492100006023111506ull}}, {{287575099088550089ull, 14520821392346502898ull, 6509216995899638359ull, 4365125007528889383ull}}, {{4791420455357731710ull, 15993042397857646167ull, 10985789650078355830ull, 2728203129705555864ull}}, {{1377589550769776733ull, 10767930960467281901ull, 13732237062597944788ull, 3410253912131944830ull}}, {{6333672956889608820ull, 13459913700584102376ull, 7941924291392655177ull, 4262817390164931038ull}}, {{3958545598056005513ull, 1494917035223982129ull, 352016663693021582ull, 2664260868853081899ull}}, {{9559868015997394795ull, 11092018330884753469ull, 14275078884898440689ull, 3330326086066352373ull}}, {{16561521038424131397ull, 29964858323778124ull, 4008790550840887150ull, 4162907607582940467ull}}, {{1127578612160306316ull, 13853786091734525040ull, 199651085061860516ull, 2601817254739337792ull}}, {{1409473265200382894ull, 17317232614668156300ull, 249563856327325645ull, 3252271568424172240ull}}, {{1761841581500478618ull, 7811482713053031663ull, 311954820409157057ull, 4065339460530215300ull}}, {{8018680016078880992ull, 16411391741726614549ull, 9418343799610498968ull, 2540837162831384562ull}}, {{14635036038525989144ull, 2067495603448716570ull, 2549557712658347903ull, 3176046453539230703ull}}, {{9070423011302710622ull, 16419427559593059425ull, 17022005196105098590ull, 3970058066924038378ull}}, {{17198229428132663899ull, 5650456206318274236ull, 15250439265993074523ull, 2481286291827523986ull}}, {{3051042711456278258ull, 2451384239470454892ull, 9839677045636567346ull, 3101607864784404983ull}}, {{3813803389320347822ull, 12287602336192844423ull, 7687910288618321278ull, 3877009830980506229ull}}, {{9301156145966299245ull, 3068065441693139860ull, 7110786939600144751ull, 2423131144362816393ull}}, {{11626445182457874056ull, 17670139857398588537ull, 13500169692927568842ull, 3028913930453520491ull}}, {{697998422790178858ull, 12864302784893459864ull, 12263526097732073149ull, 3786142413066900614ull}}, {{436249014243861786ull, 10346032249772106367ull, 3053017792655157814ull, 2366339008166812884ull}}, {{14380369323086990945ull, 3709168275360357150ull, 3816272240818947268ull, 2957923760208516105ull}}, {{8752089617003962873ull, 4636460344200446438ull, 9382026319451071989ull, 3697404700260645131ull}}, {{858369992200088892ull, 5203630724338972976ull, 3557923440443226041ull, 2310877937662903207ull}}, {{1072962490250111115ull, 11116224423851104124ull, 18282462355836196263ull, 2888597422078629008ull}}, {{1341203112812638893ull, 9283594511386492251ull, 4406333871085693713ull, 3610746777598286261ull}}, {{15511561946297962328ull, 16216179157660503217ull, 10119603357284505045ull, 4513433471997857826ull}}, {{2777197188795144599ull, 12440954982751508463ull, 10936438116730203557ull, 2820895919998661141ull}}, {{17306554541276094461ull, 1716135673157221866ull, 18282233664340142351ull, 3526119899998326426ull}}, {{12409821139740342268ull, 15980227646728691045ull, 13629420043570402130ull, 4407649874997908033ull}}, {{10061981221551407870ull, 14599328297632819807ull, 1600858499590419475ull, 2754781171873692521ull}}, {{7965790508511871933ull, 13637474353613636855ull, 6612759142915412248ull, 3443476464842115651ull}}, {{5345552117212452012ull, 17046842942017046069ull, 3654262910216877406ull, 4304345581052644564ull}}, {{5646813082471476460ull, 6042590820333265889ull, 11507286355740324187ull, 2690215988157902852ull}}, {{11670202371516733479ull, 2941552506989194457ull, 14384107944675405234ull, 3362769985197378565ull}}, {{752694909113753136ull, 12900312670591268880ull, 4145076875562092830ull, 4203462481496723207ull}}, {{470434318196095710ull, 3451009400692155146ull, 9508202074867389875ull, 2627164050935452004ull}}, {{9811414934599895446ull, 18148819806147357644ull, 11885252593584237343ull, 3283955063669315005ull}}, {{12264268668249869307ull, 18074338739256809151ull, 1021507686698132967ull, 4104943829586643757ull}}, {{14582696945297250173ull, 18213990739676587575ull, 2944285313400027056ull, 2565589893491652348ull}}, {{13616685163194174812ull, 4320744350886182853ull, 3680356641750033821ull, 3206987366864565435ull}}, {{3185798398710554803ull, 10012616457035116471ull, 18435503857469705988ull, 4008734208580706793ull}}, {{8908653026835178608ull, 15481257322501723602ull, 4604660883277484386ull, 2505458880362941746ull}}, {{1912444246689197452ull, 10128199616272378695ull, 14979198140951631291ull, 3131823600453677182ull}}, {{16225613363643660527ull, 8048563501913085464ull, 9500625639334763306ull, 3914779500567096478ull}}, {{10141008352277287830ull, 9642038207123066319ull, 1326205006156839162ull, 2446737187854435299ull}}, {{8064574421919221883ull, 2829175722049057091ull, 15492814312978212665ull, 3058421484818044123ull}}, {{5469032008971639450ull, 8148155670988709268ull, 14754331872795377927ull, 3823026856022555154ull}}, {{12641517042462050464ull, 12010126322009025148ull, 13833143438924499108ull, 2389391785014096971ull}}, {{15801896303077563080ull, 15012657902511281435ull, 12679743280228235981ull, 2986739731267621214ull}}, {{15140684360419565946ull, 4930764322856938082ull, 6626307063430519169ull, 3733424664084526518ull}}, {{14074613743689616620ull, 14610942747854056061ull, 17976499969926238192ull, 2333390415052829073ull}}, {{3758209124329857063ull, 18263678434817570077ull, 8635566907125634028ull, 2916738018816036342ull}}, {{9309447423839709233ull, 4382853969812410980ull, 1571086597052266728ull, 3645922523520045428ull}}, {{11636809279799636541ull, 5478567462265513725ull, 1963858246315333410ull, 4557403154400056785ull}}, {{9578848809088466791ull, 8035790682343333982ull, 12756626450015553141ull, 2848376971500035490ull}}, {{2750188974505807680ull, 14656424371356555382ull, 6722411025664665618ull, 3560471214375044363ull}}, {{12661108254987035408ull, 9097158427340918419ull, 3791327763653444119ull, 4450589017968805454ull}}, {{5607349650153203178ull, 12603253044729155868ull, 16204637907565566286ull, 2781618136230503408ull}}, {{7009187062691503973ull, 6530694269056669027ull, 1809053310747406242ull, 3477022670288129261ull}}, {{4149797809936992062ull, 17386739873175612092ull, 6873002656861645706ull, 4346278337860161576ull}}, {{11816995668065395847ull, 15478398439162145461ull, 4295626660538528566ull, 2716423961162600985ull}}, {{936186529799581096ull, 10124626012097906019ull, 9981219344100548612ull, 3395529951453251231ull}}, {{15005291217531640082ull, 12655782515122382523ull, 7864838161698297861ull, 4244412439316564039ull}}, {{7072464001743581099ull, 10215707081165183029ull, 11833052878702518019ull, 2652757774572852524ull}}, {{13452266020606864278ull, 8157947833029090882ull, 14791316098378147524ull, 3315947218216065655ull}}, {{7591960488903804540ull, 10197434791286363603ull, 13877459104545296501ull, 4144934022770082069ull}}, {{2439132296351183885ull, 8679239753767671204ull, 10979254949554504265ull, 2590583764231301293ull}}, {{3048915370438979857ull, 15460735710636976909ull, 18335754705370518235ull, 3238229705289126616ull}}, {{8422830231476112725ull, 14714233619868833232ull, 4472949308003596178ull, 4047787131611408271ull}}, {{5264268894672570453ull, 13808082030845408674ull, 9713122345143329467ull, 2529866957257130169ull}}, {{15803708155195488874ull, 12648416520129372938ull, 16753088949856549738ull, 3162333696571412711ull}}, {{10531263157139585285ull, 6587148613306940365ull, 16329675168893299269ull, 3952917120714265889ull}}, {{8887882482425934755ull, 6422810892530531680ull, 3288517952917230187ull, 2470573200446416181ull}}, {{11109853103032418444ull, 3416827597235776696ull, 8722333459573925638ull, 3088216500558020226ull}}, {{13887316378790523055ull, 13494406533399496678ull, 1679544787612631239ull, 3860270625697525283ull}}, {{4067886718316689005ull, 15351533111015767280ull, 17190616556753752188ull, 2412669141060953301ull}}, {{5084858397895861257ull, 742672315060157484ull, 7653212640660026524ull, 3015836426326191627ull}}, {{6356072997369826571ull, 928340393825196855ull, 4954829782397645251ull, 3769795532907739534ull}}, {{10890074650997223463ull, 16721113810636605698ull, 16931826669280691993ull, 2356122208067337208ull}}, {{4389221276891753520ull, 7066334208013593411ull, 2718039262891313376ull, 2945152760084171511ull}}, {{874840577687303996ull, 8832917760016991764ull, 17232607133896305432ull, 3681440950105214388ull}}, {{1093550722109129995ull, 11041147200021239705ull, 3094014843660830174ull, 4601801187631517986ull}}, {{12212684247386676007ull, 2289030981585886911ull, 6545445295715406763ull, 2876125742269698741ull}}, {{10654169290805957105ull, 16696346782264522351ull, 12793492638071646357ull, 3595157177837123426ull}}, {{8706025595080058477ull, 7035375422548489227ull, 6768493760734782139ull, 4493946472296404283ull}}, {{3135422987711342596ull, 2091266629879111815ull, 1924465591245544885ull, 2808716545185252677ull}}, {{17754336789921341957ull, 7225769305776277672ull, 7017268007484319010ull, 3510895681481565846ull}}, {{3746176913692125831ull, 18255583669075122899ull, 17994957046210174570ull, 4388619601851957307ull}}, {{35517561843884692ull, 16021425811599339716ull, 8941005144667665154ull, 2742887251157473317ull}}, {{44396952304855865ull, 10803410227644398837ull, 15787942449261969347ull, 3428609063946841646ull}}, {{4667182208808457735ull, 8892576766128110642ull, 10511556024722685876ull, 4285761329933552058ull}}, {{7528674898932673989ull, 14781232515684844959ull, 11181408533879066576ull, 2678600831208470036ull}}, {{4799157605238454582ull, 29796570896504583ull, 13976760667348833221ull, 3348251039010587545ull}}, {{1387260988120680323ull, 4648931732048018633ull, 3635892778903877814ull, 4185313798763234432ull}}, {{12396253163643894962ull, 16740640387812175357ull, 2272432986814923633ull, 2615821124227021520ull}}, {{1660258399272704991ull, 7090742429483055485ull, 2840541233518654542ull, 3269776405283776900ull}}, {{6687009017518269142ull, 18086800073708595164ull, 3550676541898318177ull, 4087220506604721125ull}}, {{13402752672803694022ull, 4386721018426790121ull, 4525015847900142813ull, 2554512816627950703ull}}, {{2918382785722453815ull, 10095087291460875556ull, 1044583791447790612ull, 3193141020784938379ull}}, {{3647978482153067269ull, 12618859114326094445ull, 15140787794591901977ull, 3991426275981172973ull}}, {{4585829560559360995ull, 969257918812727172ull, 11768835380833632688ull, 2494641422488233108ull}}, {{5732286950699201244ull, 1211572398515908965ull, 14711044226042040860ull, 3118301778110291385ull}}, {{11777044706801389459ull, 1514465498144886206ull, 4553747227270387363ull, 3897877222637864232ull}}, {{2748966923323480508ull, 17087442000836411543ull, 2846092017043992101ull, 2436173264148665145ull}}, {{17271266709436514347ull, 7524244445763350716ull, 8169301039732378031ull, 3045216580185831431ull}}, {{3142339313086091318ull, 4793619538776800492ull, 5599940281238084635ull, 3806520725232289289ull}}, {{11187334107533582882ull, 690169202521806355ull, 15029177721842272657ull, 2379075453270180805ull}}, {{9372481615989590698ull, 5474397521579645848ull, 4951414097020677109ull, 2973844316587726007ull}}, {{11715602019986988372ull, 11454682920401945214ull, 1577581602848458482ull, 3717305395734657509ull}}, {{2710565244064479829ull, 11770862843678603663ull, 3291831510993980503ull, 2323315872334160943ull}}, {{17223264610362763498ull, 10101892536170866674ull, 17949847444024639341ull, 2904144840417701178ull}}, {{12305708726098678564ull, 17239051688640971247ull, 13213937268176023368ull, 3630181050522126473ull}}, {{10770449889195960301ull, 3102070537091662443ull, 2682363529937865499ull, 4537726313152658092ull}}, {{4425688171533781237ull, 18079695150178146691ull, 10899849243065941744ull, 2836078945720411307ull}}, {{920424195989838642ull, 4152874864013131748ull, 9013125535405039277ull, 3545098682150514134ull}}, {{1150530244987298302ull, 9802779598443802589ull, 2043034882401523288ull, 4431373352688142668ull}}, {{3024924412330755391ull, 6126737249027376618ull, 10500268838355727863ull, 2769608345430089167ull}}, {{13004527552268220046ull, 3046735542856832868ull, 8513650029517271925ull, 3462010431787611459ull}}, {{16255659440335275058ull, 8420105446998428989ull, 6030376518469202002ull, 4327513039734514324ull}}, {{12465630159423240863ull, 9874251922801406022ull, 12992357360898027059ull, 2704695649834071452ull}}, {{6358665662424275271ull, 7731128885074369624ull, 16240446701122533824ull, 3380869562292589315ull}}, {{7948332078030344089ull, 9663911106342962030ull, 15688872357975779376ull, 4226086952865736644ull}}, {{356021530341577152ull, 6039944441464351269ull, 582173186880086302ull, 2641304345541085403ull}}, {{5056712931354359343ull, 16773302588685214894ull, 14562774538882271589ull, 3301630431926356753ull}}, {{15544263201047724987ull, 7131570180574354905ull, 4368410118320675775ull, 4127038039907945942ull}}, {{2797635473013746261ull, 11374760390500053672ull, 16565314379232586071ull, 2579398774942466213ull}}, {{3497044341267182826ull, 9606764469697679186ull, 6871584918758568877ull, 3224248468678082767ull}}, {{13594677463438754341ull, 16620141605549486886ull, 3977795130020823192ull, 4030310585847603459ull}}, {{3884987396221833559ull, 10387588503468429304ull, 180278947049320543ull, 2518944116154752162ull}}, {{4856234245277291949ull, 8372799610908148726ull, 9448720720666426487ull, 3148680145193440202ull}}, {{15293664843451390744ull, 5854313495207798003ull, 2587528863978257301ull, 3935850181491800253ull}}, {{7252697517943425263ull, 5964788943718567704ull, 3923048549200104765ull, 2459906363432375158ull}}, {{9065871897429281579ull, 12067672198075597534ull, 14127182723354906764ull, 3074882954290468947ull}}, {{2108967834931826165ull, 15084590247594496918ull, 13047292385766245551ull, 3843603692863086184ull}}, {{15153162952114555066ull, 16345397932387642429ull, 8154557741103903469ull, 2402252308039428865ull}}, {{5106395634861030120ull, 6596689360202389325ull, 14804883194807267241ull, 3002815385049286081ull}}, {{10994680562003675554ull, 12857547718680374560ull, 4671045938226920339ull, 3753519231311607602ull}}, {{6871675351252297221ull, 5730124314961540148ull, 7531089729819213116ull, 2345949519569754751ull}}, {{8589594189065371526ull, 7162655393701925185ull, 4802176143846628491ull, 2932436899462193439ull}}, {{15348678754759102312ull, 4341633223700018577ull, 1391034161380897710ull, 3665546124327741799ull}}, {{5350790388166714178ull, 14650413566479799030ull, 15573850757008285849ull, 4581932655409677248ull}}, {{17179302047886360073ull, 2238979451408792537ull, 9733656723130178656ull, 2863707909631048280ull}}, {{7639069504575786379ull, 2798724314260990672ull, 12167070903912723320ull, 3579634887038810350ull}}, {{9548836880719732974ull, 3498405392826238340ull, 5985466593036128342ull, 4474543608798512938ull}}, {{15191395087304608917ull, 16021561425798562674ull, 8352602639074968117ull, 2796589755499070586ull}}, {{9765871822275985338ull, 6191893726966039631ull, 1217381261988934339ull, 3495737194373838233ull}}, {{7595653759417593769ull, 3128181140280161635ull, 6133412595913555828ull, 4369671492967297791ull}}, {{2441440590422302154ull, 11178485249529876830ull, 10750911900087054248ull, 2731044683104561119ull}}, {{12275172774882653500ull, 13973106561912346037ull, 8826953856681429906ull, 3413805853880701399ull}}, {{1508907913321153163ull, 8243011165535656739ull, 6422006302424399479ull, 4267257317350876749ull}}, {{17083968510321578391ull, 12069411006100867317ull, 6319596948228943626ull, 2667035823344297968ull}}, {{7519902582619809276ull, 5863391720771308339ull, 7899496185286179533ull, 3333794779180372460ull}}, {{4788192209847373691ull, 11940925669391523328ull, 9874370231607724416ull, 4167243473975465575ull}}, {{2992620131154608557ull, 7463078543369702080ull, 13089010422395909616ull, 2604527171234665984ull}}, {{3740775163943260697ull, 9328848179212127600ull, 16361263027994887020ull, 3255658964043332480ull}}, {{4675968954929075871ull, 11661060224015159500ull, 2004834711284057159ull, 4069573705054165601ull}}, {{12145852633685448227ull, 14205691667650556543ull, 12782236740621005484ull, 2543483565658853500ull}}, {{10570629773679422380ull, 17757114584563195679ull, 15977795925776256855ull, 3179354457073566875ull}}, {{8601601198671890071ull, 17584707212276606695ull, 15360558888792933165ull, 3974193071341958594ull}}, {{12293529776811013150ull, 13296285016886573136ull, 14212035323922971132ull, 2483870669588724121ull}}, {{15366912221013766438ull, 16620356271108216420ull, 3929986099621550203ull, 3104838336985905152ull}}, {{761896202557656431ull, 16163759320457882622ull, 4912482624526937754ull, 3881047921232381440ull}}, {{14311243181880698982ull, 14714035593713564542ull, 3070301640329336096ull, 2425654950770238400ull}}, {{8665681940496097919ull, 18392544492141955678ull, 3837877050411670120ull, 3032068688462798000ull}}, {{1608730388765346591ull, 4543936541467892982ull, 4797346313014587651ull, 3790085860578497500ull}}, {{14840514548260505331ull, 534117329203739161ull, 12221713482488893090ull, 2368803662861560937ull}}, {{4715585130043467952ull, 9891018698359449760ull, 1442083797828952650ull, 2961004578576951172ull}}, {{5894481412554334940ull, 3140401336094536392ull, 1802604747286190813ull, 3701255723221188965ull}}, {{3684050882846459338ull, 4268593844272779197ull, 3432470976267563210ull, 2313284827013243103ull}}, {{9216749621985462076ull, 14559114342195749804ull, 18125646775616617724ull, 2891606033766553878ull}}, {{11520937027481827595ull, 18198892927744687255ull, 13433686432665996347ull, 3614507542208192348ull}}, {{9789485265924896590ull, 18136930141253471165ull, 16792108040832495434ull, 4518134427760240435ull}}, {{8424271300416754321ull, 15947267356710807382ull, 8189224516306615694ull, 2823834017350150272ull}}, {{1306967088666167093ull, 10710712159033733420ull, 10236530645383269618ull, 3529792521687687840ull}}, {{1633708860832708866ull, 4165018161937390967ull, 12795663306729087023ull, 4412240652109609800ull}}, {{7938597065661524897ull, 9520665378851951210ull, 7997289566705679389ull, 2757650407568506125ull}}, {{699874295222130313ull, 16512517741992326917ull, 14608297976809487140ull, 3447063009460632656ull}}, {{5486528887455050796ull, 2193903103780857030ull, 18260372471011858926ull, 4308828761825790820ull}}, {{17264138609941570459ull, 15206247495145199355ull, 2189360757527636020ull, 2693017976141119263ull}}, {{16968487243999575170ull, 561065295221947578ull, 16571759002191708738ull, 3366272470176399078ull}}, {{11987237018144693155ull, 9924703655882210281ull, 11491326715884860114ull, 4207840587720498848ull}}, {{574494108699351366ull, 10814625803353769330ull, 7182079197428037571ull, 2629900367325311780ull}}, {{9941489672728965015ull, 8906596235764823758ull, 8977598996785046964ull, 3287375459156639725ull}}, {{3203490054056430461ull, 11133245294706029698ull, 15833684764408696609ull, 4109219323945799656ull}}, {{6613867302212656942ull, 40749281550186705ull, 9896052977755435381ull, 2568262077466124785ull}}, {{12879020146193209082ull, 4662622620365121285ull, 16981752240621682130ull, 3210327596832655981ull}}, {{2263717127459347640ull, 15051650312311177415ull, 7392132245494938950ull, 4012909496040819977ull}}, {{8332352232303174131ull, 4795595426767097980ull, 16149297699502806604ull, 2508068435025512485ull}}, {{10415440290378967664ull, 5994494283458872475ull, 6351564069096344543ull, 3135085543781890607ull}}, {{8407614344546321676ull, 2881431835896202690ull, 3327769067943042775ull, 3918856929727363259ull}}, {{9866444983768838951ull, 8718423925076208537ull, 18220756731960259398ull, 2449285581079602036ull}}, {{16944742248138436593ull, 1674657869490484863ull, 4329201841240772632ull, 3061606976349502546ull}}, {{16569241791745657837ull, 2093322336863106079ull, 14634874338405741598ull, 3827008720436878182ull}}, {{17273305147482118005ull, 15143384515821605011ull, 4535110443076200594ull, 2391880450273048864ull}}, {{16979945415925259602ull, 9705858607922230456ull, 5668888053845250743ull, 2989850562841311080ull}}, {{2778187696197022886ull, 7520637241475400167ull, 7086110067306563429ull, 3737313203551638850ull}}, {{8653896337764221160ull, 7006241285135819056ull, 9040504810493990047ull, 2335820752219774281ull}}, {{10817370422205276450ull, 4146115587992385916ull, 15912317031544875463ull, 2919775940274717851ull}}, {{13521713027756595562ull, 570958466563094491ull, 15278710271003706425ull, 3649719925343397314ull}}, {{12290455266268356548ull, 5325384101631256018ull, 9875015801899857223ull, 4562149906679246643ull}}, {{12293220559845110747ull, 10245894091160616867ull, 3866041866973716812ull, 2851343691674529152ull}}, {{10754839681379000529ull, 12807367613950771084ull, 4832552333717146015ull, 3564179614593161440ull}}, {{13443549601723750662ull, 11397523499011075951ull, 6040690417146432519ull, 4455224518241451800ull}}, {{15319747528718426020ull, 14040981214523004325ull, 3775431510716520324ull, 2784515323900907375ull}}, {{5314626355615868813ull, 17551226518153755407ull, 107603369968262501ull, 3480644154876134219ull}}, {{2031596926092448112ull, 8103975092410030547ull, 13969562267742491839ull, 4350805193595167773ull}}, {{17410649143303637734ull, 11982513460397350947ull, 11036819426552751351ull, 2719253245996979858ull}}, {{17151625410702159263ull, 10366455807069300780ull, 4572652246336163381ull, 3399066557496224823ull}}, {{2992787689668147463ull, 17569755777264013880ull, 1104129289492816322ull, 4248833196870281029ull}}, {{1870492306042592165ull, 15592783379217396579ull, 2995923815146704153ull, 2655520748043925643ull}}, {{16173173437835403918ull, 5655921168739582011ull, 17579962824215543904ull, 3319400935054907053ull}}, {{15604780778866866993ull, 7069901460924477514ull, 8139895474987266168ull, 4149251168818633817ull}}, {{14364674005219179775ull, 4418688413077798446ull, 16616649717935511115ull, 2593281980511646135ull}}, {{8732470469669198910ull, 911674497919860154ull, 16159126128992000990ull, 3241602475639557669ull}}, {{1692216050231722830ull, 10362965159254601001ull, 6363849605957837525ull, 4052003094549447087ull}}, {{12586850077463296529ull, 8782696233747819577ull, 10894935031364730309ull, 2532501934093404429ull}}, {{1898504541546956949ull, 15590056310612162376ull, 18230354807633300790ull, 3165627417616755536ull}}, {{2373130676933696186ull, 10264198351410427162ull, 4341199435832074372ull, 3957034272020944421ull}}, {{6094892691510948020ull, 15638496006486292784ull, 5019092656608740434ull, 2473146420013090263ull}}, {{7618615864388685025ull, 10324747971253090172ull, 1662179802333537639ull, 3091433025016362829ull}}, {{9523269830485856282ull, 8294248945638974811ull, 6689410771344309953ull, 3864291281270453536ull}}, {{3646200634839966224ull, 16713120637092829017ull, 4180881732090193720ull, 2415182050794033460ull}}, {{9169436811977345684ull, 2444656722656484655ull, 5226102165112742151ull, 3018977563492541825ull}}, {{6850109996544294201ull, 16890878958602769531ull, 11144313724818315592ull, 3773721954365677281ull}}, {{1975475738626489924ull, 10556799349126730957ull, 47667050370365389ull, 2358576221478548301ull}}, {{7081030691710500309ull, 17807685204835801600ull, 4671269831390344640ull, 2948220276848185376ull}}, {{8851288364638125386ull, 3812862432335200384ull, 5839087289237930801ull, 3685275346060231720ull}}, {{11064110455797656732ull, 9377764058846388384ull, 7298859111547413501ull, 4606594182575289650ull}}, {{6915069034873535458ull, 8166945545992686692ull, 9173472963144521342ull, 2879121364109556031ull}}, {{8643836293591919322ull, 985309895636082557ull, 6855155185503263774ull, 3598901705136945039ull}}, {{15416481385417287056ull, 10455009406399879004ull, 3957257963451691813ull, 4498627131421181299ull}}, {{411928829031028602ull, 8840223888213618330ull, 167443217943613431ull, 2811641957138238312ull}}, {{9738283073143561561ull, 6438593841839635008ull, 209304022429516789ull, 3514552446422797890ull}}, {{12172853841429451951ull, 12659928320726931664ull, 9485002064891671794ull, 4393190558028497362ull}}, {{7608033650893407470ull, 12524141218881720194ull, 10539812308984682775ull, 2745744098767810851ull}}, {{286670026761983529ull, 11043490505174762339ull, 8563079367803465565ull, 3432180123459763564ull}}, {{14193395588734643123ull, 18416049149895840827ull, 10703849209754331956ull, 4290225154324704455ull}}, {{6565029233745458000ull, 2286658681830124709ull, 13607434783737539329ull, 2681390721452940284ull}}, {{12817972560609210404ull, 7470009370715043790ull, 17009293479671924161ull, 3351738401816175355ull}}, {{6799093663906737197ull, 13949197731821192642ull, 16649930831162517297ull, 4189673002270219194ull}}, {{8861119558369098652ull, 1800719554747163545ull, 15017892787903961215ull, 2618545626418886996ull}}, {{15688085466388761219ull, 16085957498716118143ull, 325621911170399902ull, 3273182033023608746ull}}, {{14998420814558563620ull, 10884074836540371871ull, 9630399425817775686ull, 4091477541279510932ull}}, {{16291542036740184118ull, 2190860754410344515ull, 15242371677990885612ull, 2557173463299694332ull}}, {{15752741527497842244ull, 2738575943012930644ull, 606220523779055399ull, 3196466829124617916ull}}, {{1244182835662751189ull, 17258277984048327018ull, 757775654723819248ull, 3995583536405772395ull}}, {{5389300290716607397ull, 10786423740030204386ull, 16614510848698244694ull, 2497239710253607746ull}}, {{15959997400250535054ull, 4259657638182979674ull, 11544766524018030060ull, 3121549637817009683ull}}, {{10726624713458393010ull, 5324572047728724593ull, 9819272136595149671ull, 3901937047271262104ull}}, {{18233355491979965391ull, 10245386557471534726ull, 6137045085371968544ull, 2438710654544538815ull}}, {{13568322328120180931ull, 12806733196839418408ull, 3059620338287572776ull, 3048388318180673519ull}}, {{16960402910150226164ull, 16008416496049273010ull, 17659583478141629682ull, 3810485397725841898ull}}, {{15211937837271279256ull, 14616946328458183535ull, 15648925692265906455ull, 2381553373578651186ull}}, {{14403236278161711166ull, 13659496892145341515ull, 10337785078477607261ull, 2976941716973313983ull}}, {{13392359329274751054ull, 3239313059899513182ull, 8310545329669621173ull, 3721177146216642479ull}}, {{3758538562369331505ull, 4330413671650889691ull, 12111619858684595089ull, 2325735716385401549ull}}, {{86487184534276477ull, 10024703107991000018ull, 1304466768073580149ull, 2907169645481751937ull}}, {{9331481017522621404ull, 17142564903416137926ull, 6242269478519363090ull, 3633962056852189921ull}}, {{2440979235048500947ull, 12204834092415396600ull, 12414522866576591767ull, 4542452571065237401ull}}, {{1525612021905313092ull, 14545550335400704731ull, 841547763969287998ull, 2839032856915773376ull}}, {{15742073082663805077ull, 8958565882396105105ull, 1051934704961609998ull, 3548791071144716720ull}}, {{5842533298047592634ull, 1974835316140355574ull, 1314918381202012498ull, 4435988838930895900ull}}, {{17486641366561909109ull, 5845958091015110137ull, 10045196025106033619ull, 2772493024331809937ull}}, {{8023243652920222674ull, 2695761595341499768ull, 17168181049809929928ull, 3465616280414762421ull}}, {{10029054566150278342ull, 3369701994176874710ull, 7625168256980248698ull, 4332020350518453027ull}}, {{1656473085416536060ull, 6717749764787934598ull, 2459887151398961484ull, 2707512719074033142ull}}, {{11293963393625445883ull, 8397187205984918247ull, 12298230976103477663ull, 3384390898842541427ull}}, {{9505768223604419449ull, 5884797989053759905ull, 10761102701701959175ull, 4230488623553176784ull}}, {{17470320185821231916ull, 10595527770799681796ull, 6725689188563724484ull, 2644055389720735490ull}}, {{3391156158566988279ull, 13244409713499602246ull, 17630483522559431413ull, 3305069237150919362ull}}, {{13462317235063511156ull, 2720454086592339095ull, 12814732366344513459ull, 4131336546438649203ull}}, {{15331477299555776329ull, 17841184868616069598ull, 5703364719751626959ull, 2582085341524155752ull}}, {{9940974587589944603ull, 17689795067342699094ull, 7129205899689533699ull, 3227606676905194690ull}}, {{3202846197632654946ull, 17500557815750985964ull, 18134879411466692932ull, 4034508346131493362ull}}, {{11225150910375185149ull, 1714476597989590419ull, 15945985650594070987ull, 2521567716332183351ull}}, {{9419752619541593532ull, 15978153802769151736ull, 15320796044815200829ull, 3151959645415229189ull}}, {{11774690774426991915ull, 6137634198179275958ull, 5315937000736837325ull, 3939949556769036487ull}}, {{2747495715589482043ull, 6141864383075741426ull, 10239989653101605184ull, 2462468472980647804ull}}, {{12657741681341628362ull, 7677330478844676782ull, 12799987066377006480ull, 3078085591225809755ull}}, {{6598805064822259644ull, 9596663098555845978ull, 11388297814543870196ull, 3847606989032262194ull}}, {{8735939183941300182ull, 15221286473452179544ull, 11729372152517306776ull, 2404754368145163871ull}}, {{10919923979926625227ull, 579864018105672814ull, 10050029172219245567ull, 3005942960181454839ull}}, {{4426532938053505726ull, 14559888077914254730ull, 7950850446846669054ull, 3757428700226818549ull}}, {{7378269104710828983ull, 4488244030269021302ull, 7275124538492862111ull, 2348392937641761593ull}}, {{18446208417743312037ull, 998619019408888723ull, 13705591691543465543ull, 2935491172052201991ull}}, {{18446074503751752142ull, 15083331829543274616ull, 12520303596001944024ull, 3669363965065252489ull}}, {{4610849055980138561ull, 407420713219541655ull, 1815321439720266319ull, 4586704956331565612ull}}, {{9799309687628668457ull, 7172166973403295390ull, 10357947936679942257ull, 2866690597707228507ull}}, {{3025765072681059763ull, 13576894735181507142ull, 8335748902422539917ull, 3583363247134035634ull}}, {{13005578377706100511ull, 3136060363694720215ull, 1196314091173399089ull, 4479204058917544543ull}}, {{15046015513707394676ull, 13489252773377669894ull, 7665225334624456286ull, 2799502536823465339ull}}, {{9584147355279467537ull, 7638193929867311560ull, 4969845649853182454ull, 3499378171029331674ull}}, {{11980184194099334421ull, 324370375479363642ull, 15435679099171253876ull, 4374222713786664592ull}}, {{12099301139739471917ull, 9426103521529378084ull, 9647299436982033672ull, 2733889196116665370ull}}, {{15124126424674339896ull, 11782629401911722605ull, 2835752259372766282ull, 3417361495145831713ull}}, {{5070099975560761158ull, 5504914715534877449ull, 8156376342643345757ull, 4271701868932289641ull}}, {{14698027530793945484ull, 5746414706422992357ull, 16626950260220560858ull, 2669813668082681025ull}}, {{4537476358210268143ull, 16406390419883516255ull, 6948629769993537360ull, 3337267085103351282ull}}, {{1060159429335447274ull, 2061243951144843703ull, 17909159249346697509ull, 4171583856379189102ull}}, {{7580128670975736403ull, 3594120478679221266ull, 6581538512414298039ull, 2607239910236993189ull}}, {{251788801864894695ull, 18327708653631190295ull, 12838609158945260452ull, 3259049887796241486ull}}, {{14149794057613282081ull, 4462891743329436252ull, 6824889411826799758ull, 4073812359745301858ull}}, {{18066993322863077109ull, 16624365394863061369ull, 8877241900819137752ull, 2546132724840813661ull}}, {{8748683598296682674ull, 2333712669869275096ull, 15708238394451310095ull, 3182665906051017076ull}}, {{10935854497870853342ull, 16752198892618757582ull, 1188553919354586002ull, 3978332382563771346ull}}, {{2223223042741895435ull, 15081810326314111393ull, 5354532218024004155ull, 2486457739102357091ull}}, {{7390714821854757198ull, 14240576889465251337ull, 2081479254102617290ull, 3108072173877946364ull}}, {{13850079545745834401ull, 8577349074976788363ull, 2601849067628271613ull, 3885090217347432955ull}}, {{6350456706877452549ull, 7666686181074186679ull, 17767056731763527422ull, 2428181385842145596ull}}, {{3326384865169427782ull, 359985689487957541ull, 3762076840994857662ull, 3035226732302681996ull}}, {{8769667099889172631ull, 9673354148714722734ull, 4702596051243572077ull, 3794033415378352495ull}}, {{869355919003344991ull, 8351689352160395661ull, 9856651559668314404ull, 2371270884611470309ull}}, {{5698380917181569142ull, 10439611690200494576ull, 16932500468012780909ull, 2964088605764337886ull}}, {{7122976146476961428ull, 17661200631178006124ull, 11942253548161200328ull, 3705110757205422358ull}}, {{13675232128402876700ull, 11038250394486253827ull, 2852222449173362301ull, 2315694223253388974ull}}, {{12482354142076207971ull, 18409499011535205188ull, 12788650098321478684ull, 2894617779066736217ull}}, {{15602942677595259964ull, 4565129690709454869ull, 2150754567619684644ull, 3618272223833420272ull}}, {{5668620291711911243ull, 5706412113386818587ull, 2688443209524605805ull, 4522840279791775340ull}}, {{1237044673106250575ull, 5872350580080455569ull, 10903649042807654436ull, 2826775174869859587ull}}, {{6157991859810201123ull, 7340438225100569461ull, 9017875285082180141ull, 3533468968587324484ull}}, {{12309175843190139307ull, 13787233799803099730ull, 11272344106352725176ull, 4416836210734155605ull}}, {{12304920920421224971ull, 8617021124876937331ull, 9351058075684147187ull, 2760522631708847253ull}}, {{10769465132099143310ull, 6159590387668783760ull, 16300508613032571888ull, 3450653289636059066ull}}, {{13461831415123929137ull, 7699487984585979700ull, 11152263729435939052ull, 4313316612045073833ull}}, {{17637016671307231519ull, 14035552027221013120ull, 52635803256380051ull, 2695822882528171146ull}}, {{3599526765424487783ull, 12932754015598878497ull, 9289166790925250872ull, 3369778603160213932ull}}, {{9111094475207997632ull, 16165942519498598121ull, 11611458488656563590ull, 4212223253950267415ull}}, {{17223649093073468280ull, 5492028056259235921ull, 14174690583051434100ull, 2632639533718917134ull}}, {{7694503311059671638ull, 6865035070324044902ull, 8494991191959516817ull, 3290799417148646418ull}}, {{394757101969813740ull, 13192979856332444032ull, 1395366953094620213ull, 4113499271435808023ull}}, {{246723188731133588ull, 10551455419421471472ull, 7789633373325219489ull, 2570937044647380014ull}}, {{308403985913916984ull, 17801005292704227244ull, 513669679801748553ull, 3213671305809225018ull}}, {{385504982392396230ull, 8416198560598120343ull, 9865459136606961500ull, 4017089132261531272ull}}, {{7158469641636329500ull, 14483496137228601022ull, 6165911960379350937ull, 2510680707663457045ull}}, {{18171459088900187683ull, 4269312116253587565ull, 12319075968901576576ull, 3138350884579321306ull}}, {{8879265805843070892ull, 5336640145316984457ull, 6175472924272194912ull, 3922938605724151633ull}}, {{17078756174720389067ull, 3335400090823115285ull, 15388885623738591580ull, 2451836628577594770ull}}, {{7513387163118322622ull, 4169250113528894107ull, 10012734992818463667ull, 3064795785721993463ull}}, {{4780047935470515374ull, 599876623483729730ull, 7904232722595691680ull, 3830994732152491829ull}}, {{7599215978096460013ull, 374922889677331081ull, 7245988460836001252ull, 2394371707595307393ull}}, {{14110705991047962920ull, 468653612096663851ull, 13669171594472389469ull, 2992964634494134241ull}}, {{13026696470382565746ull, 5197503033548217718ull, 3251406437808323124ull, 3741205793117667802ull}}, {{3529999275561715687ull, 12471811432822411882ull, 6643815042057589856ull, 2338253620698542376ull}}, {{13635871131306920417ull, 15589764291028014852ull, 8304768802571987320ull, 2922817025873177970ull}}, {{17044838914133650521ull, 1040461290075466949ull, 1157588966360208343ull, 3653521282341472463ull}}, {{7470990587384899439ull, 15135634667876497399ull, 15282044263232424140ull, 4566901602926840578ull}}, {{11586898144756644006ull, 236399630568035066ull, 14162963682947652992ull, 2854313501829275361ull}}, {{5260250644091029199ull, 295499538210043833ull, 3868646548402402528ull, 3567891877286594202ull}}, {{11186999323541174402ull, 369374422762554791ull, 14059180222357778968ull, 4459864846608242752ull}}, {{13909403604854315858ull, 230859014226596744ull, 8786987638973611855ull, 2787415529130151720ull}}, {{17386754506067894822ull, 14123631823065409642ull, 10983734548717014818ull, 3484269411412689650ull}}, {{12510071095730092719ull, 8431167741976986245ull, 4506296149041492715ull, 4355336764265862063ull}}, {{10124637444045001902ull, 2963636829521922451ull, 9733964120792014803ull, 2722085477666163789ull}}, {{8044110786628864473ull, 17539604092184566776ull, 16779141169417406407ull, 3402606847082704736ull}}, {{10055138483286080591ull, 17312819096803320566ull, 2527182388062206393ull, 4253258558853380921ull}}, {{1672775533626412466ull, 3902982907860993498ull, 13108704038607348756ull, 2658286599283363075ull}}, {{11314341453887791390ull, 4878728634826241872ull, 11774194029831798041ull, 3322858249104203844ull}}, {{14142926817359739237ull, 10710096811960190244ull, 14717742537289747551ull, 4153572811380254805ull}}, {{18062701297704612832ull, 13611339535116200758ull, 11504432095019786171ull, 2595983007112659253ull}}, {{13355004585275990231ull, 12402488400467863044ull, 545482063492569002ull, 3244978758890824067ull}}, {{16693755731594987789ull, 6279738463730052997ull, 14516910634647874965ull, 4056223448613530083ull}}, {{12739440341460561320ull, 6230679549044977075ull, 6767226137441227901ull, 2535139655383456302ull}}, {{11312614408398313746ull, 12400035454733609248ull, 17682404708656310684ull, 3168924569229320377ull}}, {{14140768010497892183ull, 15500044318417011560ull, 8267947830538224643ull, 3961155711536650472ull}}, {{8837980006561182614ull, 7381684689796938273ull, 5167467394086390402ull, 2475722319710406545ull}}, {{15659161026628866172ull, 3733825391397033ull, 11071020261035375907ull, 3094652899638008181ull}}, {{5738893228003919003ull, 13839725337021410004ull, 3717271012056171ull, 3868316124547510227ull}}, {{12810180304357225185ull, 6343985326424687300ull, 16143224358878392771ull, 2417697577842193891ull}}, {{16012725380446531481ull, 3318295639603471221ull, 15567344430170603060ull, 3022121972302742364ull}}, {{6180848670276000639ull, 4147869549504339027ull, 1012436464003702209ull, 3777652465378427956ull}}, {{1557187409708806448ull, 14121633514508681652ull, 9856144826857089688ull, 2361032790861517472ull}}, {{1946484262136008059ull, 17652041893135852065ull, 12320181033571362110ull, 2951290988576896840ull}}, {{7044791346097397978ull, 12841680329565039273ull, 15400226291964202638ull, 3689113735721121050ull}}, {{13417675201049135377ull, 6828728375101523283ull, 10026910828100477490ull, 4611392169651401313ull}}, {{6080203991442015659ull, 8879641252865839956ull, 17796034313631268191ull, 2882120106032125820ull}}, {{7600254989302519573ull, 6487865547654912041ull, 3798298818329533623ull, 3602650132540157276ull}}, {{14112004755055537370ull, 3498145916141252147ull, 4747873522911917029ull, 4503312665675196595ull}}, {{6514159962696016905ull, 4492184206801976544ull, 661577942606254191ull, 2814570416046997872ull}}, {{8142699953370021131ull, 1003544240075082776ull, 826972428257817739ull, 3518213020058747340ull}}, {{10178374941712526413ull, 15089488355376017182ull, 1033715535322272173ull, 4397766275073434175ull}}, {{1749798320142941104ull, 11736773231323704691ull, 7563601237217501964ull, 2748603921920896359ull}}, {{16022305955460840092ull, 14670966539154630863ull, 4842815528094489551ull, 3435754902401120449ull}}, {{15416196425898662211ull, 13727022155515900675ull, 10665205428545499843ull, 4294693628001400561ull}}, {{7329279756972969930ull, 6273545837983743970ull, 18194968438909407162ull, 2684183517500875350ull}}, {{18384971733070988221ull, 17065304334334455770ull, 13520338511781983144ull, 3355229396876094188ull}}, {{13757842629483959468ull, 2884886344208518097ull, 16900423139727478931ull, 4194036746095117735ull}}, {{1681122615786392812ull, 17943955029626181475ull, 17480293489970756187ull, 2621272966309448584ull}}, {{15936461325015154726ull, 17818257768605338939ull, 3403622788753893618ull, 3276591207886810731ull}}, {{15308890637841555504ull, 13049450173901897866ull, 18089586541224530735ull, 4095739009858513413ull}}, {{14179742667078360094ull, 15073435386329768022ull, 13611834597479025661ull, 2559836881161570883ull}}, {{8501306296993174309ull, 5006736177630046316ull, 12403107228421394173ull, 3199796101451963604ull}}, {{10626632871241467887ull, 10870106240464945799ull, 15503884035526742716ull, 3999745126814954505ull}}, {{13559174572166999285ull, 16017188437145366932ull, 2772398494563132341ull, 2499840704259346566ull}}, {{16948968215208749107ull, 6186427491149544953ull, 12688870155058691235ull, 3124800880324183207ull}}, {{7351152213728772671ull, 3121348345509543288ull, 11249401675395976140ull, 3906001100405229009ull}}, {{4594470133580482920ull, 11174214752798240363ull, 113347019481403231ull, 2441250687753268131ull}}, {{1131401648548215745ull, 9356082422570412550ull, 13976741829633917751ull, 3051563359691585163ull}}, {{10637624097540045490ull, 7083417009785627783ull, 12859241268615009285ull, 3814454199614481454ull}}, {{13566044088603610287ull, 6732978640329711316ull, 3425339774456992899ull, 2384033874759050909ull}}, {{16957555110754512859ull, 3804537281984751241ull, 8893360736498629028ull, 2980042343448813636ull}}, {{7361885833160977361ull, 4755671602480939052ull, 11116700920623286285ull, 3725052929311017045ull}}, {{13824550682580386659ull, 5278137760764280859ull, 9253781084603247880ull, 2328158080819385653ull}}, {{12669002334798095420ull, 6597672200955351074ull, 16178912374181447754ull, 2910197601024232066ull}}, {{6612880881642843467ull, 17470462288048964651ull, 11000268430872033884ull, 3637747001280290083ull}}, {{3654415083626166429ull, 3391333786351654198ull, 9138649520162654452ull, 4547183751600362604ull}}, {{16119067482548517730ull, 11342955653324559681ull, 14935027986956434840ull, 2841989844750226627ull}}, {{6313776297903483451ull, 14178694566655699602ull, 14057098965268155646ull, 3552487305937783284ull}}, {{17115592409234130121ull, 8499996171464848694ull, 17571373706585194558ull, 4440609132422229105ull}}, {{6085559237343943422ull, 700811588738142530ull, 4064579538974664743ull, 2775380707763893191ull}}, {{16830321083534705085ull, 14711072541204841874ull, 469038405290943024ull, 3469225884704866489ull}}, {{11814529317563605549ull, 18388840676506052343ull, 5197984025041066684ull, 4336532355881083111ull}}, {{14301609851118335324ull, 2269653385961506906ull, 10166269043291748534ull, 2710332722425676944ull}}, {{8653640277043143347ull, 12060438769306659441ull, 12707836304114685667ull, 3387915903032096180ull}}, {{15428736364731317088ull, 10463862443205936397ull, 15884795380143357084ull, 4234894878790120225ull}}, {{11948803237170767132ull, 15763286063858486056ull, 3010468084948516321ull, 2646809299243825141ull}}, {{14936004046463458915ull, 5869049524540943858ull, 8374771124613033306ull, 3308511624054781426ull}}, {{9446633021224547835ull, 16559683942530955631ull, 1245091868911515824ull, 4135639530068476783ull}}, {{12821674665906424253ull, 10349802464081847269ull, 7695711445710779246ull, 2584774706292797989ull}}, {{2192035277100866605ull, 3713881043247533279ull, 14231325325565861962ull, 3230968382865997486ull}}, {{16575102151658246968ull, 13865723340914192406ull, 8565784620102551644ull, 4038710478582496858ull}}, {{5747752826359016451ull, 17889449124926146062ull, 9965301405991482681ull, 2524194049114060536ull}}, {{16408063069803546371ull, 8526753350875518865ull, 12456626757489353352ull, 3155242561392575670ull}}, {{6675020781972269252ull, 10658441688594398582ull, 6347411410006915882ull, 3944053201740719588ull}}, {{18006946044014831995ull, 11273212073798887017ull, 13190504168109098234ull, 2465033251087949742ull}}, {{8673624499736376281ull, 4868143055393832964ull, 7264758173281596985ull, 3081291563859937178ull}}, {{10842030624670470352ull, 10696864837669679109ull, 18304319753456772039ull, 3851614454824921472ull}}, {{9082112149632737922ull, 13603069551184631299ull, 11440199845910482524ull, 2407259034265575920ull}}, {{6740954168613534498ull, 17003836938980789124ull, 14300249807388103155ull, 3009073792831969900ull}}, {{8426192710766918123ull, 16643110155298598501ull, 17875312259235128944ull, 3761342241039962375ull}}, {{7572213453443017779ull, 10401943847061624063ull, 18089599189663037446ull, 2350838900649976484ull}}, {{4853580798376384320ull, 3779057771972254271ull, 4165254913369245192ull, 2938548625812470606ull}}, {{1455289979543092495ull, 4723822214965317839ull, 14429940678566332298ull, 3673185782265588257ull}}, {{15654170529711029331ull, 15128149805561423106ull, 4202367792925751660ull, 4591482227831985322ull}}, {{14395542599496781236ull, 231721591621113633ull, 7238165889005982692ull, 2869676392394990826ull}}, {{4159370194088812833ull, 289651989526392042ull, 18271079398112254173ull, 3587095490493738532ull}}, {{14422584779465791849ull, 4973751005335377956ull, 4392105173930766100ull, 4483869363117173166ull}}, {{18237487524020895714ull, 12331966415189387030ull, 16580123788988892524ull, 2802418351948233228ull}}, {{13573487368171343834ull, 15414958018986733788ull, 2278410662526564039ull, 3503022939935291536ull}}, {{16966859210214179793ull, 14657011505306029331ull, 2848013328158205049ull, 4378778674919114420ull}}, {{8298443997170168419ull, 2243103163175186476ull, 11003380366953653964ull, 2736736671824446512ull}}, {{10373054996462710523ull, 2803878953968983095ull, 13754225458692067455ull, 3420920839780558140ull}}, {{8354632727151000250ull, 17339906747743392581ull, 17192781823365084318ull, 4276151049725697675ull}}, {{7527488463683069108ull, 6225755698912232459ull, 8439645630389483747ull, 2672594406078561047ull}}, {{4797674561176448481ull, 3170508605212902670ull, 5937871019559466780ull, 3340743007598201309ull}}, {{15220465238325336409ull, 3963135756516128337ull, 12034024792876721379ull, 4175928759497751636ull}}, {{2595261746312253400ull, 171116838608886259ull, 16744637532402726670ull, 2609955474686094772ull}}, {{17079135238172480462ull, 9437268085115883631ull, 2484052841793856721ull, 3262444343357618466ull}}, {{16737233029288212673ull, 16408271124822242443ull, 12328438089097096709ull, 4078055429197023082ull}}, {{8154927634091438969ull, 12561012462227595479ull, 12316959824113073347ull, 2548784643248139426ull}}, {{5581973524186910807ull, 11089579559357106445ull, 6172827743286565876ull, 3185980804060174283ull}}, {{11589152923661026413ull, 13861974449196383056ull, 3104348660680819441ull, 3982476005075217854ull}}, {{7243220577288141508ull, 1746205003106657554ull, 15775275968207675863ull, 2489047503172011158ull}}, {{18277397758464952693ull, 16017814309165485654ull, 10495722923404819020ull, 3111309378965013948ull}}, {{13623375161226415058ull, 1575523812747305452ull, 13119653654256023776ull, 3889136723706267435ull}}, {{17737981512621285220ull, 984702382967065907ull, 5893940524696320908ull, 2430710452316417147ull}}, {{17560790872349218620ull, 1230877978708832384ull, 2755739637443013231ull, 3038388065395521434ull}}, {{3504244516726971659ull, 15373655528668204193ull, 12668046583658542346ull, 3797985081744401792ull}}, {{13719367869022827047ull, 14220220723845015524ull, 7917529114786588966ull, 2373740676090251120ull}}, {{17149209836278533809ull, 8551903867951493597ull, 9896911393483236208ull, 2967175845112813900ull}}, {{7601454240066003549ull, 10689879834939366997ull, 12371139241854045260ull, 3708969806391017375ull}}, {{7056751909254946170ull, 15904546933691880181ull, 14649491053799860143ull, 2318106128994385859ull}}, {{13432625904996070617ull, 15268997648687462322ull, 13700177798822437275ull, 2897632661242982324ull}}, {{7567410344390312463ull, 14474561042431939999ull, 17125222248528046594ull, 3622040826553727905ull}}, {{4847576912060502675ull, 8869829266185149191ull, 7571469755377894531ull, 4527551033192159882ull}}, {{9947264597678896028ull, 3237800282152024292ull, 9343854615538571986ull, 2829719395745099926ull}}, {{12434080747098620035ull, 13270622389544806173ull, 2456446232568439174ull, 3537149244681374908ull}}, {{1707542878591111331ull, 7364905950076231909ull, 3070557790710548968ull, 4421436555851718635ull}}, {{3373057308333138534ull, 4603066218797644943ull, 18059999683689950769ull, 2763397847407324146ull}}, {{18051379690698586880ull, 10365518791924444082ull, 13351627567757662653ull, 3454247309259155183ull}}, {{13340852576518457791ull, 17568584508332943007ull, 12077848441269690412ull, 4317809136573943979ull}}, {{15255561887965117976ull, 1756993280853313571ull, 5242812266579862556ull, 2698630710358714987ull}}, {{14457766341529009566ull, 2196241601066641964ull, 1941829314797440291ull, 3373288387948393734ull}}, {{18072207926911261957ull, 16580360056615466167ull, 11650658680351576171ull, 4216610484935492167ull}}, {{18212658981960620579ull, 8056882026170972402ull, 14199190702860816963ull, 2635381553084682604ull}}, {{13542451690595999916ull, 5459416514286327599ull, 17748988378576021204ull, 3294226941355853255ull}}, {{12316378594817611991ull, 6824270642857909499ull, 17574549454792638601ull, 4117783676694816569ull}}, {{5391893612547313542ull, 15794384197854663197ull, 4066564381604317269ull, 2573614797934260356ull}}, {{11351553034111529832ull, 5907922192036165284ull, 5083205477005396587ull, 3217018497417825445ull}}, {{14189441292639412290ull, 2773216721617818701ull, 10965692864684133638ull, 4021273121772281806ull}}, {{11174243817113326633ull, 15568318506293300400ull, 2241872022000195619ull, 2513295701107676129ull}}, {{13967804771391658291ull, 14848712114439237596ull, 7414026045927632428ull, 3141619626384595161ull}}, {{17459755964239572864ull, 114146069339495379ull, 13879218575836928440ull, 3927024532980743951ull}}, {{8606504468436039088ull, 71341293337184612ull, 15592040637539162131ull, 2454390333112964969ull}}, {{10758130585545048860ull, 13924234671953644477ull, 5654992741641788951ull, 3067987916391206212ull}}, {{18059349250358698979ull, 12793607321514667692ull, 7068740927052236189ull, 3834984895489007765ull}}, {{2063721244619411054ull, 10301847585160361260ull, 6723806088621341570ull, 2396865559680629853ull}}, {{2579651555774263818ull, 3653937444595675767ull, 13016443629204064867ull, 2996081949600787316ull}}, {{17059622499999993484ull, 18402479861026758420ull, 16270554536505081083ull, 3745102437000984145ull}}, {{1438892025645220120ull, 9195706903928030061ull, 3251567557674593821ull, 2340689023125615091ull}}, {{6410301050483913053ull, 16106319648337425480ull, 17899517502375405988ull, 2925861278907018863ull}}, {{8012876313104891317ull, 1686155486712230234ull, 17762710859541869582ull, 3657326598633773579ull}}, {{792723354526338338ull, 11331066395245063601ull, 17591702555999949073ull, 4571658248292216974ull}}, {{12024667142647431221ull, 164387469387082894ull, 6383128079072580267ull, 2857286405182635609ull}}, {{5807461891454513218ull, 14040542392016017330ull, 12590596117268113237ull, 3571608006478294511ull}}, {{16482699401172917331ull, 3715619934737857950ull, 11126559128157753643ull, 4464510008097868139ull}}, {{5690001107305685428ull, 16419449997467267ull, 4648256445884902075ull, 2790318755061167587ull}}, {{2500815365704718881ull, 13855582367778997796ull, 1198634538928739689ull, 3487898443826459484ull}}, {{3126019207130898601ull, 3484419904441583533ull, 1498293173660924612ull, 4359873054783074355ull}}, {{4259605013670505578ull, 11401134477130765516ull, 17077334298033935546ull, 2724920659239421471ull}}, {{5324506267088131972ull, 5028046059558681087ull, 16734981854115031529ull, 3406150824049276839ull}}, {{2043946815432777061ull, 10896743592875739263ull, 16307041299216401507ull, 4257688530061596049ull}}, {{8194995787286567519ull, 4504621736333643087ull, 3274371784369169086ull, 2661055331288497531ull}}, {{5632058715680821495ull, 14854149207271829667ull, 17928022785743625069ull, 3326319164110621913ull}}, {{2428387376173638965ull, 4732628453807623372ull, 8574970426897367625ull, 4157898955138277392ull}}, {{10741114146963300161ull, 14487107829698234367ull, 5359356516810854765ull, 2598686846961423370ull}}, {{8814706665276737297ull, 4273826731840629247ull, 15922567682868344265ull, 3248358558701779212ull}}, {{6406697313168533717ull, 9953969433228174463ull, 1456465529875878715ull, 4060448198377224016ull}}, {{10921714848371415430ull, 3915387886553915087ull, 910290956172424197ull, 2537780123985765010ull}}, {{9040457542036881383ull, 9505920876619781763ull, 10361235732070306054ull, 3172225154982206262ull}}, {{6688885909118713824ull, 2659029058919951396ull, 3728172628233106760ull, 3965281443727757828ull}}, {{13403925730053971948ull, 1661893161824969622ull, 11553479929500467533ull, 2478300902329848642ull}}, {{7531535125712689127ull, 6689052470708599932ull, 5218477875020808608ull, 3097876127912310803ull}}, {{9414418907140861409ull, 8361315588385749915ull, 1911411325348622856ull, 3872345159890388504ull}}, {{3578168807749344429ull, 5225822242741093697ull, 1194632078342889285ull, 2420215724931492815ull}}, {{9084397028114068440ull, 11143963821853755025ull, 15328348153210775318ull, 3025269656164366018ull}}, {{15967182303569973454ull, 4706582740462417973ull, 9937063154658693340ull, 3781587070205457523ull}}, {{12285331948944927361ull, 12164986249643787041ull, 3904821462447989385ull, 2363491918878410952ull}}, {{1521606880898995489ull, 1371174756772570090ull, 4881026828059986732ull, 2954364898598013690ull}}, {{11125380637978520169ull, 1713968445965712612ull, 15324655571929759223ull, 3692956123247517112ull}}, {{16176734935591350914ull, 7988759306369652238ull, 9577909732456099514ull, 2308097577029698195ull}}, {{10997546632634412834ull, 762577096107289490ull, 7360701147142736489ull, 2885121971287122744ull}}, {{4523561253938240235ull, 5564907388561499767ull, 9200876433928420611ull, 3606402464108903430ull}}, {{1042765548995412389ull, 2344448217274486805ull, 2277723505555749956ull, 4508003080136129288ull}}, {{2957571477335826695ull, 10688652172651330061ull, 1423577190972343722ull, 2817501925085080805ull}}, {{8308650365097171273ull, 4137443178959386768ull, 6391157507142817557ull, 3521877406356351006ull}}, {{10385812956371464091ull, 9783489992126621364ull, 17212318920783297754ull, 4402346757945438757ull}}, {{15714505134586940865ull, 10726367263506526256ull, 13063542334703255048ull, 2751466723715899223ull}}, {{1196387344524124465ull, 13407959079383157821ull, 11717741899951680906ull, 3439333404644874029ull}}, {{6107170199082543486ull, 7536576812374171468ull, 812119319657437421ull, 4299166755806092537ull}}, {{13040353411281365487ull, 7016203516947551119ull, 12036789620854368148ull, 2686979222378807835ull}}, {{11688755745674318954ull, 8770254396184438899ull, 10434301007640572281ull, 3358724027973509794ull}}, {{9999258663665510789ull, 15574504013657936528ull, 3819504222695939543ull, 4198405034966887243ull}}, {{6249536664790944243ull, 16651594036177292186ull, 81347129971268262ull, 2624003146854304527ull}}, {{17035292867843456112ull, 11591120508366839424ull, 13936741967746249040ull, 3280003933567880658ull}}, {{2847372011094768524ull, 14488900635458549281ull, 8197555422828035492ull, 4100004916959850823ull}}, {{13308822553002700087ull, 18278934934016369108ull, 12041001166908604038ull, 2562503073099906764ull}}, {{16636028191253375109ull, 13625296630665685577ull, 15051251458635755048ull, 3203128841374883455ull}}, {{6959977183784555174ull, 17031620788332106972ull, 14202378304867305906ull, 4003911051718604319ull}}, {{13573357776720122792ull, 15256449011134954761ull, 15794015468183148047ull, 2502444407324127699ull}}, {{3131639165617989778ull, 14458875245491305548ull, 15130833316801547155ull, 3128055509155159624ull}}, {{3914548957022487222ull, 13461908038436744031ull, 466797572292382328ull, 3910069386443949531ull}}, {{9364122125780136370ull, 8413692524022965019ull, 16432649547178596619ull, 2443793366527468456ull}}, {{7093466638797782559ull, 5905429636601318370ull, 2094067860263694158ull, 3054741708159335571ull}}, {{18090205335352004006ull, 16605159082606423770ull, 16452642880611781409ull, 3818427135199169463ull}}, {{15918064353022390408ull, 3460695398987933000ull, 17200430828023445237ull, 2386516959499480914ull}}, {{1450836367568436394ull, 8937555267162304155ull, 12277166498174530738ull, 2983146199374351143ull}}, {{15648603514742709204ull, 1948572047098104385ull, 10734772104290775519ull, 3728932749217938929ull}}, {{2862848169073111397ull, 8135386557077397097ull, 18238447611250204459ull, 2330582968261211830ull}}, {{8190246229768777150ull, 5557547177919358467ull, 13574687477207979766ull, 2913228710326514788ull}}, {{5626121768783583533ull, 16170306009253973892ull, 16968359346509974707ull, 3641535887908143485ull}}, {{7032652210979479417ull, 15601196493140079461ull, 7375391127855304672ull, 4551919859885179357ull}}, {{6701250641075868588ull, 9750747808212549663ull, 6915462464123259372ull, 2844949912428237098ull}}, {{3764877282917447830ull, 12188434760265687079ull, 17867700117008850023ull, 3556187390535296372ull}}, {{94410585219421884ull, 10623857431904720945ull, 3887881072551510913ull, 4445234238169120466ull}}, {{11588221661830608438ull, 18169125941008920350ull, 7041611688772082224ull, 2778271398855700291ull}}, {{5261905040433484739ull, 4264663352551598822ull, 4190328592537714877ull, 3472839248569625364ull}}, {{15800753337396631731ull, 9942515209116886431ull, 5237910740672143596ull, 4341049060712031705ull}}, {{16792999863513976688ull, 15437444042552829827ull, 14802909258988559507ull, 2713155662945019815ull}}, {{16379563810965082956ull, 14685119034763649380ull, 13891950555308311480ull, 3391444578681274769ull}}, {{2027710689996802079ull, 18356398793454561726ull, 3529880138853225638ull, 4239305723351593462ull}}, {{15102377236530165012ull, 6861063227481713174ull, 16041233142065429736ull, 2649566077094745913ull}}, {{9654599508807930456ull, 8576329034352141468ull, 6216483372299623458ull, 3311957596368432392ull}}, {{12068249386009913070ull, 1497039256085401027ull, 7770604215374529323ull, 4139946995460540490ull}}, {{5236812857042501717ull, 17076550599549233306ull, 9468313653036468730ull, 2587466872162837806ull}}, {{15769388108157902954ull, 12122316212581765824ull, 2612020029440810105ull, 3234333590203547258ull}}, {{1264991061487827077ull, 1317837210445043569ull, 12488397073655788440ull, 4042916987754434072ull}}, {{12319834459498361683ull, 823648256528152230ull, 7805248171034867775ull, 2526823117346521295ull}}, {{6176421037518176296ull, 14864618375942354000ull, 5144874195366196814ull, 3158528896683151619ull}}, {{7720526296897720370ull, 9357400933073166692ull, 1819406725780358114ull, 3948161120853939524ull}}, {{14048700972415851039ull, 10460061601598117086ull, 10360501240467499629ull, 2467600700533712202ull}}, {{8337504178665037991ull, 17686763020425034262ull, 3727254513729598728ull, 3084500875667140253ull}}, {{1198508186476521681ull, 3661709701821741212ull, 9270754160589386315ull, 3855626094583925316ull}}, {{9972439653402601859ull, 18429469628134445921ull, 15017593387223142254ull, 2409766309114953322ull}}, {{17077235585180640227ull, 13813464998313281593ull, 9548619697174152010ull, 3012207886393691653ull}}, {{7511486426193636572ull, 8043459211036826184ull, 16547460639895077917ull, 3765259857992114566ull}}, {{4694679016371022858ull, 7333005016111710317ull, 5730476881507035794ull, 2353287411245071604ull}}, {{10480034788891166476ull, 18389628306994413704ull, 7163096101883794742ull, 2941609264056339505ull}}, {{13100043486113958095ull, 13763663346888241322ull, 13565556145782131332ull, 3677011580070424381ull}}, {{7151682320787671810ull, 17204579183610301653ull, 3121887126945500453ull, 4596264475088030477ull}}, {{6775644459705988834ull, 13058704998970132485ull, 4257022463554631735ull, 2872665296930019048ull}}, {{13081241593059873946ull, 11711695230285277702ull, 5321278079443289669ull, 3590831621162523810ull}}, {{7128179954470066624ull, 804560982574433416ull, 15874969636158887895ull, 4488539526453154762ull}}, {{4455112471543791640ull, 7420379641750102741ull, 14533542041026692838ull, 2805337204033221726ull}}, {{10180576607857127454ull, 52102515332852618ull, 8943555514428590240ull, 3506671505041527158ull}}, {{3502348722966633510ull, 65128144166065773ull, 1956072356180961992ull, 4383339381301908948ull}}, {{4494810961067839896ull, 40705090103791108ull, 10445917259467877053ull, 2739587113313693092ull}}, {{5618513701334799869ull, 4662567381057126789ull, 13057396574334846316ull, 3424483891642116365ull}}, {{11634828145095887741ull, 5828209226321408486ull, 2486687662636394183ull, 4280604864552645457ull}}, {{2660081572257541934ull, 10560159794091962160ull, 13083394835216216124ull, 2675378040345403410ull}}, {{3325101965321927418ull, 13200199742614952700ull, 7130871507165494347ull, 3344222550431754263ull}}, {{4156377456652409272ull, 11888563659841302971ull, 4301903365529480030ull, 4180278188039692829ull}}, {{291892901194061843ull, 2818666268973426453ull, 4994532612669618971ull, 2612673867524808018ull}}, {{4976552144919965208ull, 17358390891498946778ull, 15466537802691799521ull, 3265842334406010022ull}}, {{15444062218004732318ull, 7862930559091519760ull, 10109800216509973594ull, 4082302918007512528ull}}, {{9652538886252957699ull, 9526017617859587754ull, 6318625135318733496ull, 2551439323754695330ull}}, {{2842301570961421315ull, 11907522022324484693ull, 17121653456003192678ull, 3189299154693369162ull}}, {{8164562982129164548ull, 5661030491050830058ull, 12178694783149215040ull, 3986623943366711453ull}}, {{9714537882258115747ull, 3538144056906768786ull, 9917527248681953352ull, 2491639964604194658ull}}, {{2919800315967868875ull, 4422680071133460983ull, 3173537023997665882ull, 3114549955755243323ull}}, {{17484808450241999806ull, 14751722125771602036ull, 17801979335279246064ull, 3893187444694054153ull}}, {{1704633244546474071ull, 9219826328607251273ull, 4208708056908446934ull, 2433242152933783846ull}}, {{6742477574110480492ull, 2301410873904288283ull, 14484257107990334476ull, 3041552691167229807ull}}, {{3816410949210712711ull, 2876763592380360354ull, 13493635366560530191ull, 3801940863959037259ull}}, {{6996942861684083349ull, 8715506272878807077ull, 6127679094886637417ull, 2376213039974398287ull}}, {{13357864595532492090ull, 15506068859525896750ull, 3047912850180908867ull, 2970266299967997859ull}}, {{7473958707560839304ull, 14770900055979983034ull, 17644949118008299796ull, 3712832874959997323ull}}, {{9282910210652912469ull, 8440498132713588ull, 8722250189541493421ull, 2320520546849998327ull}}, {{11603637763316140587ull, 4622236641093279889ull, 6291126718499478872ull, 2900650683562497909ull}}, {{669489148863012021ull, 5777795801366599862ull, 12475594416551736494ull, 3625813354453122386ull}}, {{10060233472933540834ull, 16445616788563025635ull, 6371120983834894809ull, 4532266693066402983ull}}, {{3981802911369769070ull, 3360981465210809166ull, 10899479642537891112ull, 2832666683166501864ull}}, {{14200625676066987145ull, 4201226831513511457ull, 13624349553172363890ull, 3540833353958127330ull}}, {{3915724039801570219ull, 14474905576246665130ull, 7807064904610679054ull, 4426041692447659163ull}}, {{7059013543303369291ull, 4435129966726777802ull, 2573572556167980457ull, 2766276057779786977ull}}, {{18047138965983987422ull, 10155598476835860156ull, 7828651713637363475ull, 3457845072224733721ull}}, {{4112179633770432661ull, 8082812077617437292ull, 14397500660474092248ull, 4322306340280917151ull}}, {{11793484307961296221ull, 5051757548510898307ull, 15915966940437389511ull, 2701441462675573219ull}}, {{10130169366524232372ull, 1703010917211234980ull, 15283272657119348985ull, 3376801828344466524ull}}, {{12662711708155290465ull, 6740449664941431629ull, 657346747689634615ull, 4221002285430583156ull}}, {{10220037826810750493ull, 11130310068229476624ull, 9634213754160797442ull, 2638126428394114472ull}}, {{12775047283513438116ull, 4689515548432069972ull, 12042767192700996803ull, 3297658035492643090ull}}, {{15968809104391797645ull, 1250208417112699561ull, 5830086954021470196ull, 4122072544365803863ull}}, {{3062976662603791672ull, 10004752297550213034ull, 10561333373904500728ull, 2576295340228627414ull}}, {{13052092865109515398ull, 12505940371937766292ull, 3978294680525850102ull, 3220369175285784268ull}}, {{16315116081386894248ull, 6409053428067432057ull, 4972868350657312628ull, 4025461469107230335ull}}, {{3279418523225727049ull, 13229030429396920844ull, 10025571746801902248ull, 2515913418192018959ull}}, {{4099273154032158811ull, 16536288036746151055ull, 7920278665074989906ull, 3144891772740023699ull}}, {{512405424112810610ull, 11446988009077913011ull, 5288662312916349479ull, 3931114715925029624ull}}, {{16461154454566364295ull, 14071896533314777487ull, 3305413945572718424ull, 2456946697453143515ull}}, {{15964757049780567465ull, 17589870666643471859ull, 17966825487248061742ull, 3071183371816429393ull}}, {{15344260293798321427ull, 12763966296449564016ull, 8623473803777913466ull, 3838979214770536742ull}}, {{9590162683623950892ull, 12589164953708365414ull, 777985108933808012ull, 2399362009231585464ull}}, {{2764331317675162807ull, 15736456192135456768ull, 972481386167260015ull, 2999202511539481830ull}}, {{3455414147093953509ull, 15058884221741933056ull, 10438973769563850827ull, 3749003139424352287ull}}, {{2159633841933720943ull, 7105959629375014208ull, 13441887633618488623ull, 2343126962140220179ull}}, {{2699542302417151179ull, 4270763518291379856ull, 12190673523595722875ull, 2928908702675275224ull}}, {{3374427878021438973ull, 726768379436836916ull, 15238341904494653594ull, 3661135878344094030ull}}, {{4218034847526798717ull, 10131832511150821953ull, 9824555343763541184ull, 4576419847930117538ull}}, {{14165486825772718958ull, 6332395319469263720ull, 10752033108279601144ull, 2860262404956323461ull}}, {{17706858532215898698ull, 7915494149336579650ull, 18051727403776889334ull, 3575328006195404326ull}}, {{12910201128415097564ull, 670995649815948755ull, 13341287217866335860ull, 4469160007744255408ull}}, {{5763032696045742026ull, 9642744317989743780ull, 8338304511166459912ull, 2793225004840159630ull}}, {{7203790870057177532ull, 12053430397487179725ull, 1199508602103299082ull, 3491531256050199538ull}}, {{13616424605998859819ull, 5843415960004198848ull, 10722757789483899661ull, 4364414070062749422ull}}, {{8510265378749287387ull, 5957977984216318232ull, 2090037600000049384ull, 2727758793789218389ull}}, {{10637831723436609233ull, 7447472480270397790ull, 7224233018427449634ull, 3409698492236522986ull}}, {{4073917617440985734ull, 85968563483221430ull, 18253663309889087851ull, 4262123115295653732ull}}, {{16381256566182779796ull, 16194631416672871057ull, 2185167531825904098ull, 2663826947059783583ull}}, {{6641512652446311033ull, 11019917233986313014ull, 16566517470064543835ull, 3329783683824729478ull}}, {{17525262852412664599ull, 9163210524055503363ull, 11484774800725903986ull, 4162229604780911848ull}}, {{8647446273544221422ull, 10338692595962077506ull, 7177984250453689991ull, 2601393502988069905ull}}, {{1585935805075500970ull, 8311679726525208979ull, 13584166331494500393ull, 3251741878735087381ull}}, {{15817477811626539924ull, 15001285676583899127ull, 3145149859085961779ull, 4064677348418859227ull}}, {{16803452659907669309ull, 7069960538651243002ull, 18106619726424583776ull, 2540423342761787016ull}}, {{11780943788029810828ull, 8837450673314053753ull, 4186530584321178104ull, 3175529178452233771ull}}, {{891121679755099823ull, 11046813341642567192ull, 621477211974084726ull, 3969411473065292214ull}}, {{556951049846937389ull, 2292572320099216591ull, 14223481312765966666ull, 2480882170665807633ull}}, {{14531246867590835448ull, 12089087436978796546ull, 3944293585675294620ull, 3101102713332259542ull}}, {{8940686547633768502ull, 15111359296223495683ull, 14153739018948894083ull, 3876378391665324427ull}}, {{3282086083057411362ull, 7138756550925990850ull, 6540243877629364850ull, 2422736494790827767ull}}, {{13325979640676540011ull, 18146817725512264370ull, 3563618828609318158ull, 3028420618488534709ull}}, {{7434102513990899205ull, 13460150120035554655ull, 9066209554189035602ull, 3785525773110668386ull}}, {{11563843098885393859ull, 13024279843449609563ull, 10278066989795535155ull, 2365953608194167741ull}}, {{9843117855179354420ull, 11668663785884624050ull, 17459269755671806848ull, 2957442010242709676ull}}, {{3080525282119417217ull, 14585829732355780063ull, 3377343120880206944ull, 3696802512803387096ull}}, {{8842857328965717617ull, 9116143582722362539ull, 2110839450550129340ull, 2310501570502116935ull}}, {{6441885642779759117ull, 11395179478402953174ull, 16473607368469825387ull, 2888126963127646168ull}}, {{17275729090329474704ull, 9632288329576303563ull, 2145265136877730118ull, 3610158703909557711ull}}, {{16982975344484455476ull, 2816988375115603646ull, 16516639476379326360ull, 4512698379886947138ull}}, {{6002673571875396769ull, 1760617734447252279ull, 14934585691164466879ull, 2820436487429341961ull}}, {{2891655946416858057ull, 16035830223341229061ull, 4833174058673419886ull, 3525545609286677452ull}}, {{8226255951448460475ull, 10821415742321760518ull, 6041467573341774858ull, 4406932011608346815ull}}, {{529723951227899893ull, 11375070857378488228ull, 10693446260979691142ull, 2754332507255216759ull}}, {{662154939034874866ull, 4995466534868334477ull, 8755121807797226024ull, 3442915634069020949ull}}, {{5439379692220981486ull, 6244333168585418096ull, 15555588278173920434ull, 4303644542586276186ull}}, {{3399612307638113429ull, 8514394248793274214ull, 14333928692286088175ull, 2689777839116422616ull}}, {{13472887421402417594ull, 6031306792564204863ull, 17917410865357610219ull, 3362222298895528270ull}}, {{12229423258325634089ull, 2927447472277868175ull, 13173391544842236966ull, 4202777873619410338ull}}, {{14560918564094603162ull, 15664712725455831321ull, 12845055733953786007ull, 2626736171012131461ull}}, {{4366090149836090240ull, 14969204888392401248ull, 2221261612160068797ull, 3283420213765164327ull}}, {{5457612687295112800ull, 4876448055208337848ull, 16611635070482249709ull, 4104275267206455408ull}}, {{3411007929559445500ull, 5353623043718905107ull, 10382271919051406068ull, 2565172042004034630ull}}, {{18098817967231470587ull, 6692028804648631383ull, 3754467861959481777ull, 3206465052505043288ull}}, {{18011836440611950330ull, 12976722024238177133ull, 4693084827449352221ull, 4008081315631304110ull}}, {{13563240784596162908ull, 10416294274362554660ull, 16768236072438008850ull, 2505050822269565068ull}}, {{16954050980745203635ull, 3796995806098417517ull, 2513551016837959447ull, 3131313527836956336ull}}, {{7357505670649340832ull, 134558739195633993ull, 3141938771047449309ull, 3914141909796195420ull}}, {{16127656090224307780ull, 2389942221210965197ull, 11187083768759431626ull, 2446338693622622137ull}}, {{6324512057498221013ull, 12210799813368482305ull, 148796655667125820ull, 3057923367028277672ull}}, {{12517326090300164170ull, 15263499766710602881ull, 185995819583907275ull, 3822404208785347090ull}}, {{905799778796520750ull, 7233844344980432849ull, 4727933405667329951ull, 2389002630490841931ull}}, {{5743935741923038842ull, 4430619412798153157ull, 1298230738656774535ull, 2986253288113552414ull}}, {{11791605695831186456ull, 926588247570303542ull, 10846160460175743977ull, 3732816610141940517ull}}, {{2758067541467103631ull, 12108332700799909474ull, 9084693296823533937ull, 2333010381338712823ull}}, {{12670956463688655347ull, 1300357820717723130ull, 6744180602602029518ull, 2916262976673391029ull}}, {{6615323542756043376ull, 10848819312751929721ull, 13041911771679924801ull, 3645328720841738786ull}}, {{12880840446872442124ull, 18172710159367300055ull, 7079017677745130193ull, 4556660901052173483ull}}, {{14968054306936358183ull, 4440414821963480678ull, 2118543039377012419ull, 2847913063157608427ull}}, {{9486695846815671921ull, 938832509026962944ull, 16483236854503429236ull, 3559891328947010533ull}}, {{11858369808519589901ull, 1173540636283703680ull, 6768988012847122833ull, 4449864161183763167ull}}, {{7411481130324743689ull, 12262677943745784560ull, 11148146535670533626ull, 2781165100739851979ull}}, {{9264351412905929611ull, 6104975392827454892ull, 9323497151160779129ull, 3476456375924814974ull}}, {{11580439266132412013ull, 12242905259461706519ull, 2430999402096198103ull, 4345570469906018718ull}}, {{14155303568973839364ull, 14569344814804648430ull, 15354432681592287526ull, 2715981543691261698ull}}, {{8470757424362523397ull, 8988308981651034730ull, 9969668815135583600ull, 3394976929614077123ull}}, {{1365074743598378438ull, 11235386227063793413ull, 7850400000492091596ull, 4243721162017596404ull}}, {{3159014723962680476ull, 16245488428769646691ull, 14129872037162333055ull, 2652325726260997752ull}}, {{17783826460235514307ull, 15695174517534670459ull, 17662340046452916319ull, 3315407157826247190ull}}, {{17618097056867004980ull, 15007282128490950170ull, 12854553021211369591ull, 4144258947282808988ull}}, {{15622996678969266017ull, 16297080357947925712ull, 17257467675111881802ull, 2590161842051755617ull}}, {{1082001775002030905ull, 11147978410580131333ull, 7736776538607688541ull, 3237702302564694522ull}}, {{5964188237179926535ull, 99914957943000454ull, 447598636404834869ull, 4047127878205868153ull}}, {{17562675703519617796ull, 2368289857928069235ull, 11808964193821491553ull, 2529454923878667595ull}}, {{17341658610972134341ull, 7572048340837474448ull, 10149519223849476537ull, 3161818654848334494ull}}, {{3230329190005616311ull, 14076746444474230965ull, 3463526992957069863ull, 3952273318560418118ull}}, {{4324798752967204146ull, 15715495555437476209ull, 15999762425880332376ull, 2470170824100261323ull}}, {{10017684459636393087ull, 1197625370587293645ull, 15388017013923027567ull, 3087713530125326654ull}}, {{17133791592972879262ull, 15332089768516280768ull, 10011649230549008650ull, 3859641912656658318ull}}, {{10708619745608049539ull, 14194242123750063384ull, 1645594750665742502ull, 2412276195410411449ull}}, {{13385774682010061924ull, 8519430617832803422ull, 6668679456759566032ull, 3015345244263014311ull}}, {{7508846315657801597ull, 10649288272291004278ull, 3724163302522069636ull, 3769181555328767889ull}}, {{81342928858738094ull, 15879177207036653482ull, 13856817110144763282ull, 2355738472080479930ull}}, {{9325050697928198425ull, 10625599471941041044ull, 8097649350826178295ull, 2944673090100599913ull}}, {{11656313372410248032ull, 8670313321498913401ull, 14733747706960110773ull, 3680841362625749891ull}}, {{735333660230646327ull, 15449577670301029656ull, 13805498615272750562ull, 4601051703282187364ull}}, {{459583537644153955ull, 14267672062365531439ull, 17851808671400244909ull, 2875657314551367102ull}}, {{14409537477337356155ull, 3999532022674750586ull, 13091388802395530329ull, 3594571643189208878ull}}, {{8788549809816919386ull, 9611101046770826137ull, 7140863966139637103ull, 4493214553986511098ull}}, {{17022058677204044377ull, 12924467181872848191ull, 9074725997264661093ull, 2808259096241569436ull}}, {{16665887328077667567ull, 2320525922058896527ull, 11343407496580826367ull, 3510323870301961795ull}}, {{16220673141669696554ull, 16735715457855784371ull, 9567573352298645054ull, 4387904837877452244ull}}, {{7832077704329866394ull, 5848136142732477328ull, 15203105382041428967ull, 2742440523673407652ull}}, {{9790097130412332993ull, 2698484159988208756ull, 557137653842234593ull, 3428050654591759566ull}}, {{12237621413015416241ull, 7984791218412648849ull, 9919794104157569049ull, 4285063318239699457ull}}, {{730984355493553295ull, 16519709557576375291ull, 17729086361166950415ull, 2678164573899812160ull}}, {{14748788499649105330ull, 16037950928543081209ull, 3714613877749136403ull, 3347705717374765201ull}}, {{4600927569279217951ull, 15435752642251463608ull, 9254953365613808408ull, 4184632146718456501ull}}, {{2875579730799511220ull, 9647345401407164755ull, 8090188862722324207ull, 2615395091699035313ull}}, {{17429532718781552736ull, 7447495733331568039ull, 14724422096830293163ull, 3269243864623794141ull}}, {{17175229880049553016ull, 4697683648237072145ull, 4570469565755702742ull, 4086554830779742677ull}}, {{3816989647389888779ull, 16771110335430333803ull, 5162386487811008165ull, 2554096769237339173ull}}, {{159551040809973070ull, 7128829864005753542ull, 11064669128191148111ull, 3192620961546673966ull}}, {{9422810837867242145ull, 4299351311579804023ull, 4607464373384159331ull, 3990776201933342458ull}}, {{12806785801308108197ull, 381251560523683562ull, 7491351251792487486ull, 2494235126208339036ull}}, {{6785110214780359438ull, 9699936487509380261ull, 9364189064740609357ull, 3117793907760423795ull}}, {{13093073786902837202ull, 16736606627814113230ull, 7093550312498373792ull, 3897242384700529744ull}}, {{3571485098386885347ull, 10460379142383820769ull, 4433468945311483620ull, 2435776490437831090ull}}, {{9076042391410994588ull, 13075473927979775961ull, 14765208218494130333ull, 3044720613047288862ull}}, {{15956739007691131139ull, 2509284354692556239ull, 9233138236262887109ull, 3805900766309111078ull}}, {{16890490907448038818ull, 3874145730896541601ull, 1159025379236916539ull, 2378687978943194424ull}}, {{7278055579027884810ull, 230996145193289098ull, 1448781724046145674ull, 2973359973678993030ull}}, {{18320941510639631821ull, 9512117218346387180ull, 11034349191912457900ull, 3716699967098741287ull}}, {{2227216407294994080ull, 15168445298321267796ull, 13813997272586368043ull, 2322937479436713304ull}}, {{2784020509118742600ull, 14348870604474196841ull, 17267496590732960054ull, 2903671849295891630ull}}, {{8091711654825816154ull, 8712716218737970243ull, 12360998701561424260ull, 3629589811619864538ull}}, {{5502953550104882288ull, 10890895273422462804ull, 6227876340097004517ull, 4536987264524830673ull}}, {{12662718005670327238ull, 9112652555102733204ull, 15421637758629097583ull, 2835617040328019170ull}}, {{15828397507087909048ull, 6779129675451028601ull, 10053675161431596171ull, 3544521300410023963ull}}, {{5950438828577722598ull, 3862226075886397848ull, 7955407933362107310ull, 4430651625512529954ull}}, {{3719024267861076624ull, 16248949352711162367ull, 9583815976778704972ull, 2769157265945331221ull}}, {{37094316398957876ull, 1864442617179401343ull, 16591455989400769120ull, 3461446582431664026ull}}, {{13881425950780861056ull, 2330553271474251678ull, 11515947949896185592ull, 4326808228039580033ull}}, {{4064205200810650256ull, 1456595794671407299ull, 279938441044034139ull, 2704255142524737521ull}}, {{468570482585924916ull, 15655802798621422836ull, 4961609069732430577ull, 3380318928155921901ull}}, {{585713103232406145ull, 5734695442994614833ull, 10813697355592926126ull, 4225398660194902376ull}}, {{11895285735588723601ull, 17419242707153797982ull, 6758560847245578828ull, 2640874162621813985ull}}, {{5645735132631128693ull, 3327309310232695862ull, 13059887077484361440ull, 3301092703277267481ull}}, {{16280540952643686674ull, 4159136637790869827ull, 2489800791573288088ull, 4126365879096584352ull}}, {{7869495086188610220ull, 2599460398619293642ull, 1556125494733305055ull, 2578978674435365220ull}}, {{613496820880986966ull, 17084383553556280765ull, 1945156868416631318ull, 3223723343044206525ull}}, {{5378557044528621612ull, 12132107405090575148ull, 7043132103948177052ull, 4029654178805258156ull}}, {{12584970189685164316ull, 16805939165036385275ull, 13625329601822386465ull, 2518533861753286347ull}}, {{11119526718679067490ull, 7172365901013317882ull, 12419975983850595178ull, 3148167327191607934ull}}, {{4676036361494058555ull, 18188829413121423161ull, 6301597942958468164ull, 3935209158989509918ull}}, {{14451737772002256357ull, 2144646346346113667ull, 17773556769631206315ull, 2459505724368443698ull}}, {{13452986196575432542ull, 16515865988214805796ull, 12993573925184232085ull, 3074382155460554623ull}}, {{16816232745719290677ull, 6809774429986343533ull, 11630281388052902203ull, 3842977694325693279ull}}, {{12815988475288250626ull, 1950266009527770756ull, 14186454895174145733ull, 2401861058953558299ull}}, {{16019985594110313282ull, 7049518530337101349ull, 13121382600540294262ull, 3002326323691947874ull}}, {{6189923937355727890ull, 18035270199776152495ull, 7178356213820592019ull, 3752907904614934843ull}}, {{10786231488488411788ull, 8966200865646401357ull, 2180629624424176060ull, 2345567440384334277ull}}, {{18094475379037902638ull, 11207751082058001696ull, 7337473048957607979ull, 2931959300480417846ull}}, {{4171350150087826682ull, 9398002834145114217ull, 18395213348051785782ull, 3664949125600522307ull}}, {{9825873706037171256ull, 2524131505826616963ull, 18382330666637344324ull, 4581186407000652884ull}}, {{3835328057059538083ull, 10800954227996411410ull, 2265584629793564394ull, 2863241504375408053ull}}, {{14017532108179198412ull, 4277820748140738454ull, 7443666805669343397ull, 3579051880469260066ull}}, {{8298543098369222207ull, 9958961953603310972ull, 81211470231903438ull, 4473814850586575083ull}}, {{14409961473335539687ull, 1612665202574681453ull, 16191658233390797313ull, 2796134281616609426ull}}, {{4177393786387260897ull, 6627517521645739721ull, 11016200754883720833ull, 3495167852020761783ull}}, {{9833428251411464025ull, 12896082920484562555ull, 9158564925177263137ull, 4368959815025952229ull}}, {{3840049647918471064ull, 1142522797661769741ull, 8029946087449483413ull, 2730599884391220143ull}}, {{9411748078325476734ull, 6039839515504600080ull, 5425746590884466362ull, 3413249855489025179ull}}, {{11764685097906845917ull, 16773171431235525908ull, 2170497220178195048ull, 4266562319361281474ull}}, {{16576300223046554506ull, 10483232144522203692ull, 5968246781038759809ull, 2666601449600800921ull}}, {{2273631205098641517ull, 17715726199080142520ull, 12071994494725837665ull, 3333251812001001151ull}}, {{2842039006373301896ull, 8309599693568014438ull, 10478307099979909178ull, 4166564765001251439ull}}, {{15611332434265477397ull, 9805185826907396927ull, 13466470965128525092ull, 2604102978125782149ull}}, {{14902479524404458842ull, 12256482283634246159ull, 2998030651128492653ull, 3255128722657227687ull}}, {{14016413387078185649ull, 1485544799260643987ull, 17582596369192779529ull, 4068910903321534608ull}}, {{6454415357710172079ull, 12457680545606372252ull, 10989122730745487205ull, 2543069314575959130ull}}, {{8068019197137715098ull, 1737042626725801603ull, 4513031376577083199ull, 3178836643219948913ull}}, {{5473337977994755969ull, 16006361338689415716ull, 10252975239148741902ull, 3973545804024936141ull}}, {{12644208273101498289ull, 5392289818253496918ull, 8713952533681657641ull, 2483466127515585088ull}}, {{6581888304522097053ull, 11352048291244259052ull, 10892440667102072051ull, 3104332659394481360ull}}, {{8227360380652621316ull, 9578374345627935911ull, 13615550833877590064ull, 3880415824243101700ull}}, {{12059629265548970179ull, 5986483966017459944ull, 17733091308028269598ull, 2425259890151938562ull}}, {{15074536581936212723ull, 16706476994376600738ull, 12942992098180561189ull, 3031574862689923203ull}}, {{9619798690565490096ull, 7048038187688587211ull, 11567054104298313583ull, 3789468578362404004ull}}, {{3706531172389737358ull, 11322552894946448863ull, 16452780852041221797ull, 2368417861476502502ull}}, {{21477947059783793ull, 318133063400897367ull, 11342604028196751439ull, 2960522326845628128ull}}, {{13861905489106893454ull, 14232724384533285420ull, 14178255035245939298ull, 3700652908557035160ull}}, {{17887062967546584217ull, 13507138758760691291ull, 8861409397028712061ull, 2312908067848146975ull}}, {{17747142691005842367ull, 3048865393168700402ull, 6465075727858502173ull, 2891135084810183719ull}}, {{12960556326902527150ull, 8422767759888263407ull, 3469658641395739812ull, 3613918856012729649ull}}, {{11589009390200771034ull, 10528459699860329259ull, 8948759320172062669ull, 4517398570015912061ull}}, {{4937287859661787944ull, 8886130321626399739ull, 7898817584321233120ull, 2823374106259945038ull}}, {{1559923806149847026ull, 11107662902032999674ull, 650149943546765592ull, 3529217632824931298ull}}, {{11173276794542084591ull, 13884578627541249592ull, 10036059466288232798ull, 4411522041031164122ull}}, {{6983297996588802869ull, 4066175623785893091ull, 10884223184857533403ull, 2757201275644477576ull}}, {{4117436477308615683ull, 471033511304978460ull, 13605278981071916754ull, 3446501594555596970ull}}, {{5146795596635769603ull, 9812163925985998883ull, 7783226689485120134ull, 4308126993194496213ull}}, {{910904238683662050ull, 1520916435313861398ull, 7170359690141894036ull, 2692579370746560133ull}}, {{10362002335209353370ull, 1901145544142326747ull, 13574635631104755449ull, 3365724213433200166ull}}, {{8340816900584303809ull, 6988117948605296338ull, 7744922502026168503ull, 4207155266791500208ull}}, {{9824696581292577785ull, 11285102745519392067ull, 4840576563766355314ull, 2629472041744687630ull}}, {{7669184708188334327ull, 4883006395044464276ull, 15274092741562719951ull, 3286840052180859537ull}}, {{9586480885235417908ull, 1492071975378192441ull, 5257557871671236227ull, 4108550065226074422ull}}, {{17520765599340605953ull, 17073446049107227939ull, 17121031725076686353ull, 2567843790766296513ull}}, {{17289270980748369537ull, 7506749506101871212ull, 7566231601063694230ull, 3209804738457870642ull}}, {{3164844652225910305ull, 160064845772563208ull, 234417464474841980ull, 4012255923072338303ull}}, {{1978027907641193941ull, 9323412565462627813ull, 7064039942937858093ull, 2507659951920211439ull}}, {{7084220902978880330ull, 16265951725255672670ull, 4218363910244934712ull, 3134574939900264299ull}}, {{18078648165578376220ull, 1885695582860039221ull, 661268869378780487ull, 3918218674875330374ull}}, {{13604998112700179090ull, 8096088766928606369ull, 14248351098643901516ull, 2448886671797081483ull}}, {{3171189585593060150ull, 10120110958660757962ull, 13198752854877488991ull, 3061108339746351854ull}}, {{13187359018846100996ull, 8038452679898559548ull, 7275069031742085431ull, 3826385424682939818ull}}, {{17465471423633588931ull, 11941561952577681573ull, 9158604163266191298ull, 2391490890426837386ull}}, {{7996781224259822451ull, 5703580403867326159ull, 2224883167227963315ull, 2989363613033546733ull}}, {{5384290511897390160ull, 2517789486406769795ull, 7392789977462342048ull, 3736704516291933416ull}}, {{1059338560722174898ull, 1573618429004231122ull, 4620493735913963780ull, 2335440322682458385ull}}, {{10547545237757494430ull, 1967023036255288902ull, 10387303188319842629ull, 2919300403353072981ull}}, {{3961059510342092230ull, 7070464813746499032ull, 17595815003827191190ull, 3649125504191341226ull}}, {{4951324387927615287ull, 18061453054037899598ull, 12771396717929213179ull, 4561406880239176533ull}}, {{16929635797736923267ull, 8982565149559993296ull, 10287965957919452189ull, 2850879300149485333ull}}, {{2715300673461602467ull, 15839892455377379525ull, 17471643465826703140ull, 3563599125186856666ull}}, {{8005811860254390988ull, 1353121495512172790ull, 12616182295428603118ull, 4454498906483570833ull}}, {{391946394231606464ull, 14680758989977271706ull, 967584907001795092ull, 2784061816552231771ull}}, {{9713305029644283887ull, 18350948737471589632ull, 15044539189034407577ull, 3480077270690289713ull}}, {{12141631287055354859ull, 9103627866557323328ull, 4970615931010845760ull, 4350096588362862142ull}}, {{7588519554409596787ull, 5689767416598327080ull, 16941693012163942312ull, 2718810367726788838ull}}, {{9485649443011995984ull, 7112209270747908850ull, 11953744228350152082ull, 3398512959658486048ull}}, {{2633689766910219172ull, 18113633625289661871ull, 14942180285437690102ull, 4248141199573107560ull}}, {{8563585131959968839ull, 6709334997378650765ull, 9338862678398556314ull, 2655088249733192225ull}}, {{15316167433377348952ull, 17610040783578089264ull, 16285264366425583296ull, 3318860312166490281ull}}, {{698465218012134574ull, 3565806905763059965ull, 6521522402749815409ull, 4148575390208112852ull}}, {{2742383770471278061ull, 13757844362170382238ull, 13299323538573410438ull, 2592859618880070532ull}}, {{12651351749943873384ull, 7973933415858201989ull, 16624154423216763048ull, 3241074523600088165ull}}, {{1979131632147678018ull, 9967416769822752487ull, 6945134973738790098ull, 4051343154500110207ull}}, {{8154486297733380617ull, 10841321499566608208ull, 11258238386227825667ull, 2532089471562568879ull}}, {{10193107872166725772ull, 8939965856030872356ull, 9461111964357394180ull, 3165111839453211099ull}}, {{12741384840208407214ull, 11174957320038590445ull, 7214703937019354821ull, 3956389799316513874ull}}, {{10269208534343948461ull, 9290191334237812980ull, 9120875979064484667ull, 2472743624572821171ull}}, {{12836510667929935576ull, 7001053149369878321ull, 6789408955403217930ull, 3090929530716026464ull}}, {{2210580279630255758ull, 17974688473567123710ull, 8486761194254022412ull, 3863661913395033080ull}}, {{15216670730051073561ull, 2010808259124676510ull, 5304225746408764008ull, 2414788695871895675ull}}, {{9797466375709066143ull, 2513510323905845638ull, 2018596164583567106ull, 3018485869839869594ull}}, {{3023460932781556871ull, 12365259941737082856ull, 11746617242584234690ull, 3773107337299836992ull}}, {{1889663082988473044ull, 12339973482013064689ull, 7341635776615146681ull, 2358192085812398120ull}}, {{6973764872162979209ull, 1589908797234167149ull, 9177044720768933352ull, 2947740107265497650ull}}, {{13328892108631111916ull, 1987385996542708936ull, 2247933864106390882ull, 3684675134081872063ull}}, {{16661115135788889895ull, 11707604532533161978ull, 16644975385415152314ull, 4605843917602340078ull}}, {{15024882978295444088ull, 11928938851260614140ull, 5791423597457082292ull, 2878652448501462549ull}}, {{334359649159753494ull, 14911173564075767676ull, 11850965515248740769ull, 3598315560626828186ull}}, {{417949561449691868ull, 4803908899812545883ull, 5590334857206150154ull, 4497894450783535233ull}}, {{16402119540401915081ull, 7614129080810229080ull, 15023174331822313606ull, 2811184031739709520ull}}, {{2055905351792842236ull, 294289314158010543ull, 332223841068340392ull, 3513980039674636901ull}}, {{16404939745023216507ull, 367861642697513178ull, 5026965819762813394ull, 4392475049593296126ull}}, {{14864773359066898221ull, 4841599545113333640ull, 16976911692633922083ull, 2745296905995810078ull}}, {{134222625124071160ull, 1440313412964279147ull, 11997767578937626796ull, 3431621132494762598ull}}, {{14002836336687252662ull, 1800391766205348933ull, 5773837436817257687ull, 4289526415618453248ull}}, {{11057615719643226866ull, 8042773881519424939ull, 3608648398010786054ull, 2680954009761533280ull}}, {{9210333631126645678ull, 830095315044505366ull, 4510810497513482568ull, 3351192512201916600ull}}, {{2289545002053531289ull, 1037619143805631708ull, 5638513121891853210ull, 4188990640252395750ull}}, {{10654337663138232864ull, 5260197983305907721ull, 17359128756464571968ull, 2618119150157747343ull}}, {{17929608097350178984ull, 6575247479132384651ull, 17087224927153327056ull, 3272648937697184179ull}}, {{17800324103260335826ull, 8219059348915480814ull, 16747345140514270916ull, 4090811172121480224ull}}, {{6513516546110321987ull, 14360284129926951317ull, 10467090712821419322ull, 2556756982575925140ull}}, {{12753581701065290388ull, 8726983125553913338ull, 13083863391026774153ull, 3195946228219906425ull}}, {{6718605089476837177ull, 15520414925369779577ull, 2519771183501303979ull, 3994932785274883032ull}}, {{15728343226991492996ull, 7394416319142418283ull, 1574856989688314987ull, 2496832990796801895ull}}, {{15048743015311978341ull, 4631334380500634950ull, 15803629292392557446ull, 3121041238496002368ull}}, {{9587556732285197118ull, 15012540012480569496ull, 1307792541781145191ull, 3901301548120002961ull}}, {{5992222957678248199ull, 16300366535441437791ull, 12346585384681685504ull, 2438313467575001850ull}}, {{2878592678670422344ull, 1928714095592245623ull, 6209859693997331073ull, 3047891834468752313ull}}, {{17433298903620191642ull, 7022578637917694932ull, 12374010635924051745ull, 3809864793085940391ull}}, {{1672439777907843969ull, 15918326694767029093ull, 14651285675093614196ull, 2381165495678712744ull}}, {{6702235740812192865ull, 1451164294749234750ull, 18314107093867017746ull, 2976456869598390930ull}}, {{17601166712870016889ull, 11037327405291319245ull, 13669261830478996374ull, 3720571086997988663ull}}, {{13306572204757454508ull, 2286643609879686624ull, 15460817671690454590ull, 2325356929373742914ull}}, {{16633215255946818134ull, 12081676549204384088ull, 10102650052758292429ull, 2906696161717178643ull}}, {{2344774996223971052ull, 1267037631223316399ull, 8016626547520477633ull, 3633370202146473304ull}}, {{16766026800562127527ull, 6195483057456533402ull, 10020783184400597041ull, 4541712752683091630ull}}, {{15090452768778717608ull, 15401391956978803136ull, 1651303471822985246ull, 2838570470426932269ull}}, {{416321887263845394ull, 10028367909368728113ull, 6675815358206119462ull, 3548213088033665336ull}}, {{5132088377507194647ull, 3312087849856134333ull, 8344769197757649328ull, 4435266360042081670ull}}, {{5513398245155690606ull, 2070054906160083958ull, 603794730171142926ull, 2772041475026301044ull}}, {{16115119843299389066ull, 11810940669554880755ull, 754743412713928657ull, 3465051843782876305ull}}, {{15532213785696848428ull, 928617781661437232ull, 5555115284319798726ull, 4331314804728595381ull}}, {{9707633616060530268ull, 14415444168820561982ull, 5777790061913568155ull, 2707071752955372113ull}}, {{2911169983220887027ull, 13407619192598314574ull, 11833923595819348098ull, 3383839691194215141ull}}, {{12862334515880884591ull, 7536151953893117409ull, 957346439492021411ull, 4229799613992768927ull}}, {{1121430044784471014ull, 2404251961969504429ull, 7515870552323595238ull, 2643624758745480579ull}}, {{6013473574407976671ull, 12228686989316656344ull, 4783152171977106143ull, 3304530948431850724ull}}, {{7516841968009970839ull, 10674172718218432526ull, 5978940214971382679ull, 4130663685539813405ull}}, {{86340211578843870ull, 13588886976527602185ull, 6042680643570808126ull, 2581664803462383378ull}}, {{4719611282900942742ull, 7762736683804726923ull, 16776722841318285966ull, 3227081004327979222ull}}, {{1287828085198790523ull, 480048817901132846ull, 11747531514793081650ull, 4033851255409974028ull}}, {{14639950608531407789ull, 4911716529615595932ull, 16565579233600451839ull, 2521157034631233767ull}}, {{18299938260664259736ull, 1527959643592107011ull, 16095288023573176895ull, 3151446293289042209ull}}, {{18263236807402936766ull, 15745007609772297476ull, 6284051974184307406ull, 3939307866611302762ull}}, {{2191150967772059671ull, 5228943737680298019ull, 8539218502292580033ull, 2462067416632064226ull}}, {{16573996764997238301ull, 11147865690527760427ull, 1450651091010949233ull, 3077584270790080283ull}}, {{16105809937819159972ull, 99774057877536822ull, 15648371919045850254ull, 3846980338487600353ull}}, {{5454445192709587079ull, 13897416841455624226ull, 2862703421762574552ull, 2404362711554750221ull}}, {{16041428527741759656ull, 17371771051819530282ull, 8190065295630606094ull, 3005453389443437776ull}}, {{10828413622822423762ull, 12491341777919637045ull, 10237581619538257618ull, 3756816736804297220ull}}, {{9073601523477708803ull, 12418774629627161057ull, 15621860549066186819ull, 2348010460502685762ull}}, {{15953687922774523908ull, 10911782268606563417ull, 10303953649477957716ull, 2935013075628357203ull}}, {{6107051848185991173ull, 13639727835758204272ull, 8268256043420059241ull, 3668766344535446504ull}}, {{7633814810232488966ull, 3214601739415591628ull, 10335320054275074052ull, 4585957930669308130ull}}, {{13994506293250081412ull, 11232498123989520575ull, 11071261052349309186ull, 2866223706668317581ull}}, {{12881446848135213861ull, 4817250618132124911ull, 4018260154472771ull, 3582779633335396977ull}}, {{11490122541741629422ull, 1409877254237768235ull, 4616708843620478868ull, 4478474541669246221ull}}, {{4875483579374824437ull, 10104545320753380955ull, 5191286036476493244ull, 2799046588543278888ull}}, {{1482668455791142642ull, 12630681650941726194ull, 6489107545595616555ull, 3498808235679098610ull}}, {{11076707606593704110ull, 11176666045249769838ull, 17334756468849296502ull, 4373510294598873262ull}}, {{2311256235693677165ull, 2373730259853718245ull, 6222536774603422410ull, 2733443934124295789ull}}, {{7500756313044484360ull, 12190534861671923614ull, 12389856986681665916ull, 3416804917655369736ull}}, {{152573354450829642ull, 15238168577089904518ull, 15487321233352082395ull, 4271006147069212170ull}}, {{13930416401813932239ull, 7218012351467496371ull, 14291261789272439401ull, 2669378841918257606ull}}, {{12801334483840027394ull, 13634201457761758368ull, 8640705199735773443ull, 3336723552397822008ull}}, {{16001668104800034243ull, 12431065803774810056ull, 10800881499669716804ull, 4170904440497277510ull}}, {{10001042565500021402ull, 16992788164214032093ull, 2138864918866185098ull, 2606815275310798444ull}}, {{17112989225302414656ull, 12017613168412764308ull, 2673581148582731373ull, 3258519094138498055ull}}, {{2944492457918466704ull, 1186958405233791674ull, 17177034491010577929ull, 4073148867673122568ull}}, {{6451993804626429594ull, 12271064049339589556ull, 10735646556881611205ull, 2545718042295701605ull}}, {{8064992255783036993ull, 1503772006392323233ull, 18031244214529401911ull, 3182147552869627006ull}}, {{14692926338156184145ull, 15714773063272567753ull, 13315683231306976580ull, 3977684441087033758ull}}, {{2265549933706533235ull, 598361127690579038ull, 3710616001139472459ull, 2486052775679396099ull}}, {{12055309453987942351ull, 14583009464895387509ull, 26583982996952669ull, 3107565969599245124ull}}, {{1234078762202764227ull, 4393703775837070675ull, 33229978746190837ull, 3884457461999056405ull}}, {{16912200290872585306ull, 5051907869111863123ull, 2326611745930063225ull, 2427785913749410253ull}}, {{16528564345163343728ull, 10926570854817216808ull, 7519950700839966935ull, 3034732392186762816ull}}, {{2213961357744628044ull, 9046527550094133107ull, 9399938376049958669ull, 3793415490233453520ull}}, {{17524626913086250192ull, 7959922728022527143ull, 5874961485031224168ull, 2370884681395908450ull}}, {{17294097622930424836ull, 9949903410028158929ull, 16567073893143806018ull, 2963605851744885562ull}}, {{7782563973380867332ull, 3214007225680422854ull, 11485470329574981715ull, 3704507314681106953ull}}, {{252416464935654179ull, 18149655580546121948ull, 260889928343281715ull, 2315317071675691846ull}}, {{315520581169567724ull, 18075383457255264531ull, 9549484447283877952ull, 2894146339594614807ull}}, {{14229458781744123366ull, 4147485247859529047ull, 7325169540677459537ull, 3617682924493268509ull}}, {{13175137458752766304ull, 9796042578251799213ull, 13768147944274212325ull, 4522103655616585636ull}}, {{10540303920934172892ull, 8428369620621068460ull, 17828464502026158511ull, 2826314784760366022ull}}, {{13175379901167716115ull, 5923776007348947671ull, 13062208590677922331ull, 3532893480950457528ull}}, {{11857538858032257240ull, 2793033990758796685ull, 16327760738347402914ull, 4416116851188071910ull}}, {{9716804795483854727ull, 6357332262651635832ull, 5593164443039738917ull, 2760073031992544944ull}}, {{12146005994354818409ull, 12558351346741932694ull, 6991455553799673646ull, 3450091289990681180ull}}, {{5959135456088747203ull, 6474567146572640060ull, 8739319442249592058ull, 4312614112488351475ull}}, {{12947831696910242810ull, 8658290485035287941ull, 3156231642192301084ull, 2695383820305219672ull}}, {{2349731565855639800ull, 10822863106294109927ull, 3945289552740376355ull, 3369229775381524590ull}}, {{16772222512601713462ull, 8916892864440249504ull, 14154983977780246252ull, 4211537219226905737ull}}, {{10482639070376070914ull, 14796430077129931748ull, 1929335958471572051ull, 2632210762016816086ull}}, {{13103298837970088642ull, 13883851577985026781ull, 11635041984944240872ull, 3290263452521020107ull}}, {{2544065492180447091ull, 17354814472481283477ull, 9932116462752913186ull, 4112829315651275134ull}}, {{3895883941826473384ull, 15458445063728190077ull, 1595886770793182837ull, 2570518322282046959ull}}, {{9481540945710479634ull, 5487998274378073884ull, 15829916518773642259ull, 3213147902852558698ull}}, {{11851926182138099542ull, 2248311824545204451ull, 10564023611612277016ull, 4016434878565698373ull}}, {{5101610854622618262ull, 1405194890340752782ull, 8908357766471367087ull, 2510271799103561483ull}}, {{15600385605133048635ull, 15591551668208104689ull, 6523761189661820954ull, 3137839748879451854ull}}, {{5665423951134147082ull, 10266067548405355054ull, 17378073523932052001ull, 3922299686099314817ull}}, {{17375948024741005638ull, 17945507263821816668ull, 3943766924816450644ull, 2451437303812071761ull}}, {{3273190957216705432ull, 3985140006067719220ull, 9541394674447951210ull, 3064296629765089701ull}}, {{4091488696520881790ull, 14204797044439424833ull, 16538429361487326916ull, 3830370787206362126ull}}, {{14086395481394020879ull, 18101370189629416328ull, 5724832332502191418ull, 2393981742003976329ull}}, {{17607994351742526098ull, 13403340700181994602ull, 11767726434055127177ull, 2992477177504970411ull}}, {{12786620902823381815ull, 2919117819945329541ull, 10097972024141521068ull, 3740596471881213014ull}}, {{10297481073478307587ull, 11047820674320606771ull, 1699546496661062763ull, 2337872794925758134ull}}, {{8260165323420496579ull, 9198089824473370560ull, 11347805157681104262ull, 2922340993657197667ull}}, {{10325206654275620724ull, 2274240243736937392ull, 9573070428673992424ull, 3652926242071497084ull}}, {{12906508317844525904ull, 2842800304671171740ull, 11966338035842490530ull, 4566157802589371355ull}}, {{17289939735507604498ull, 6388436208846870241ull, 5173118263187862629ull, 2853848626618357097ull}}, {{7777366614102341911ull, 12597231279485975706ull, 11078083847412216190ull, 3567310783272946371ull}}, {{498336230773151581ull, 6523167062502693825ull, 9235918790837882334ull, 4459138479091182964ull}}, {{11840675190301689498ull, 17912037469346347352ull, 14995821281128452266ull, 2786961549431989352ull}}, {{14800843987877111872ull, 13166674799828158382ull, 298032527701013717ull, 3483701936789986691ull}}, {{9277682947991614032ull, 2623285444503034266ull, 14207598714908430859ull, 4354627420987483363ull}}, {{10410237860922146674ull, 17780454467310254080ull, 6573906187604075334ull, 2721642138117177102ull}}, {{13012797326152683343ull, 13002196047283041792ull, 17440754771359869976ull, 3402052672646471377ull}}, {{16265996657690854179ull, 16252745059103802240ull, 7965885408917673758ull, 4252565840808089222ull}}, {{10166247911056783862ull, 5546279643512488496ull, 366992362146158195ull, 2657853650505055764ull}}, {{12707809888820979827ull, 2321163535963222716ull, 458740452682697744ull, 3322317063131319705ull}}, {{15884762361026224784ull, 2901454419954028395ull, 5185111584280760084ull, 4152896328914149631ull}}, {{7622133466427696538ull, 11036781049326043555ull, 10158223767816556908ull, 2595560205571343519ull}}, {{4915980814607232768ull, 13795976311657554444ull, 8086093691343308231ull, 3244450256964179399ull}}, {{6144976018259040960ull, 12633284371144555151ull, 5495931095751747385ull, 4055562821205224249ull}}, {{10758139039052982456ull, 978273704324265113ull, 14964171980913311876ull, 2534726763253265155ull}}, {{18059359817243615974ull, 1222842130405331391ull, 14093528957714251941ull, 3168408454066581444ull}}, {{17962513753127132064ull, 6140238681434052143ull, 17616911197142814926ull, 3960510567583226805ull}}, {{18144100123345539396ull, 17672707231178446301ull, 13316412507427953280ull, 2475319104739516753ull}}, {{8845067098899760533ull, 3644139965263506261ull, 2810457579002777889ull, 3094148880924395942ull}}, {{15668019892052088570ull, 9166860975006770730ull, 12736444010608248169ull, 3867686101155494927ull}}, {{14404198450959943261ull, 17258503155447701466ull, 14877806534271236961ull, 2417303813222184329ull}}, {{8781876026845153268ull, 7738070889027463121ull, 4762200112556882490ull, 3021629766527730412ull}}, {{15589031051983829488ull, 449216574429553093ull, 5952750140696103113ull, 3777037208159663015ull}}, {{12048987416703587382ull, 11809975405086940443ull, 10637997865576146301ull, 2360648255099789384ull}}, {{10449548252452096324ull, 927411201076511842ull, 13297497331970182877ull, 2950810318874736730ull}}, {{3838563278710344597ull, 5770950019773027707ull, 7398499628107952788ull, 3688512898593420913ull}}, {{186518079960542842ull, 7213687524716284634ull, 13859810553562328889ull, 4610641123241776141ull}}, {{4728259818402727180ull, 16037769749016147656ull, 10968224605190149507ull, 2881650702026110088ull}}, {{5910324773003408975ull, 15435526167842796666ull, 13710280756487686884ull, 3602063377532637610ull}}, {{16611278003109037027ull, 847663636093944216ull, 7914478908754832798ull, 4502579221915797013ull}}, {{10382048751943148142ull, 14364847827840878847ull, 7252392327185464450ull, 2814112013697373133ull}}, {{8365874921501547273ull, 8732687747946322751ull, 13677176427409218467ull, 3517640017121716416ull}}, {{5845657633449546188ull, 6304173666505515535ull, 17096470534261523084ull, 4397050021402145520ull}}, {{10571065048547048223ull, 13163480578420723017ull, 10685294083913451927ull, 2748156263376340950ull}}, {{17825517329111198183ull, 11842664704598515867ull, 4133245568037039101ull, 3435195329220426188ull}}, {{17670210642961609825ull, 968272825465981122ull, 5166556960046298877ull, 4293994161525532735ull}}, {{15655567670278394045ull, 2911013525129932153ull, 10146627127670018654ull, 2683746350953457959ull}}, {{5734401532565828844ull, 12862138943267191000ull, 8071597891160135413ull, 3354682938691822449ull}}, {{7168001915707286055ull, 2242615623801825038ull, 14701183382377557171ull, 4193353673364778061ull}}, {{18315059252599217496ull, 17542535829371998312ull, 11494082623199667183ull, 2620846045852986288ull}}, {{4447079992039470254ull, 17316483768287609987ull, 14367603278999583979ull, 3276057557316232860ull}}, {{947163971621949914ull, 17033918691932124580ull, 17959504098749479974ull, 4095071946645291075ull}}, {{9815349519118494504ull, 6034513164030189958ull, 8918847052504731032ull, 2559419966653306922ull}}, {{3045814862043342322ull, 7543141455037737448ull, 1925186778776137982ull, 3199274958316633653ull}}, {{3807268577554177903ull, 205554781942396002ull, 7018169491897560382ull, 3999093697895792066ull}}, {{6991228879398749093ull, 13963529793996161213ull, 8998041950863363142ull, 2499433561184870041ull}}, {{13350722117675824270ull, 8231040205640425708ull, 15859238457006591832ull, 3124291951481087551ull}}, {{16688402647094780338ull, 10288800257050532135ull, 15212362052830851886ull, 3905364939351359439ull}}, {{17347780682075319567ull, 1818814142229194680ull, 16425255310660364285ull, 2440853087094599649ull}}, {{3237981778884597843ull, 6885203696213881255ull, 6696511083043291644ull, 3051066358868249562ull}}, {{17882535278887911016ull, 8606504620267351568ull, 17594010890658890363ull, 3813832948585311952ull}}, {{11176584549304944385ull, 3073222378453400778ull, 10996256806661806477ull, 2383645592865819970ull}}, {{4747358649776404673ull, 8453213991494138877ull, 4521948971472482288ull, 2979556991082274963ull}}, {{10545884330647893745ull, 10566517489367673596ull, 1040750195913214956ull, 3724446238852843704ull}}, {{15814549743509709399ull, 15827445467709571805ull, 650468872445759347ull, 2327778899283027315ull}}, {{5933129124104973037ull, 15172620816209576853ull, 14648144145839362896ull, 2909723624103784143ull}}, {{12028097423558604200ull, 519031946552419450ull, 13698494163871815717ull, 3637154530129730179ull}}, {{5811749742593479442ull, 5260475951617912217ull, 12511431686412381742ull, 4546443162662162724ull}}, {{15161558635189394411ull, 17122855525043358847ull, 17043016840862514396ull, 2841526976663851702ull}}, {{14340262275559355110ull, 2956825332594646943ull, 12080399014223367188ull, 3551908720829814628ull}}, {{13313641826021805983ull, 3696031665743308679ull, 15100498767779208985ull, 4439885901037268285ull}}, {{15238555168904710596ull, 13839234837158037684ull, 11743654739075699567ull, 2774928688148292678ull}}, {{601449887421336628ull, 12687357528020159202ull, 5456196386989848651ull, 3468660860185365848ull}}, {{9975184396131446593ull, 11247510891597811098ull, 6820245483737310814ull, 4335826075231707310ull}}, {{10846176266009542025ull, 2418008288821244032ull, 18097711482617982971ull, 2709891297019817068ull}}, {{13557720332511927531ull, 16857568416308718752ull, 4175395279562927097ull, 3387364121274771336ull}}, {{16947150415639909414ull, 7236902465103734728ull, 5219244099453658872ull, 4234205151593464170ull}}, {{10591969009774943384ull, 4523064040689834205ull, 7873713580585924699ull, 2646378219745915106ull}}, {{17851647280646067134ull, 1042144032434904852ull, 618769938877630066ull, 3307972774682393883ull}}, {{3867815027098032301ull, 10526052077398406874ull, 14608520478879201294ull, 4134965968352992353ull}}, {{7029070410363658092ull, 1967096529946616392ull, 2212796271658418953ull, 2584353730220620221ull}}, {{8786338012954572615ull, 7070556680860658394ull, 7377681358000411595ull, 3230442162775775276ull}}, {{1759550479338439961ull, 4226509832648435089ull, 9222101697500514494ull, 4038052703469719095ull}}, {{12628934095654994736ull, 16476626700687435642ull, 12681342588578903414ull, 2523782939668574434ull}}, {{6562795582713967612ull, 11372411339004518745ull, 6628306198868853460ull, 3154728674585718043ull}}, {{12815180496819847418ull, 14215514173755648431ull, 3673696730158678921ull, 3943410843232147554ull}}, {{14927016838153486493ull, 1967167330956198413ull, 6907746474776562230ull, 2464631777020092221ull}}, {{4823712992409694404ull, 11682331200550023825ull, 13246369111898090691ull, 3080789721275115276ull}}, {{10641327258939505909ull, 9991227982260141877ull, 16557961389872613364ull, 3850987151593894095ull}}, {{8956672546050885145ull, 15467889525767364481ull, 17266254896311465208ull, 2406866969746183809ull}}, {{15807526700990994335ull, 888117833499653985ull, 7747760565107167799ull, 3008583712182729762ull}}, {{5924350320956579207ull, 14945205347156731194ull, 461328669529183940ull, 3760729640228412203ull}}, {{8314404969025249908ull, 117381305118181188ull, 16429231482951597627ull, 2350456025142757626ull}}, {{10393006211281562385ull, 13981784686679890197ull, 11313167316834721225ull, 2938070031428447033ull}}, {{17602943782529340886ull, 3642172803067699034ull, 306401090761237820ull, 3672587539285558792ull}}, {{12780307691306900299ull, 4552716003834623793ull, 383001363451547275ull, 4590734424106948490ull}}, {{1070163279425730831ull, 539604493182945919ull, 4851061870584604951ull, 2869209015066842806ull}}, {{15172762154564327251ull, 14509563671760846110ull, 15287199375085531996ull, 3586511268833553507ull}}, {{9742580656350633255ull, 18136954589701057638ull, 14497313200429527091ull, 4483139086041941884ull}}, {{1477426891791757881ull, 9029753609349467072ull, 18284192787123230240ull, 2801961928776213677ull}}, {{1846783614739697351ull, 11287192011686833840ull, 9020182928621874088ull, 3502452410970267097ull}}, {{2308479518424621688ull, 14108990014608542300ull, 15886914679204730514ull, 4378065513712833871ull}}, {{10666171735870164363ull, 13429804777557726841ull, 16846850702144038427ull, 2736290946070521169ull}}, {{17944400688265093358ull, 12175569953519770647ull, 7223505322397884322ull, 3420363682588151462ull}}, {{17818814841903978794ull, 5996090405044937501ull, 18252753689852131211ull, 4275454603235189327ull}}, {{13442602285403680698ull, 1441713493939391986ull, 18325500083798663863ull, 2672159127021993329ull}}, {{7579880819899825065ull, 15637199922706403695ull, 9071817049466166116ull, 3340198908777491662ull}}, {{4863165006447393427ull, 1099755829673453003ull, 2116399274977931838ull, 4175248635971864578ull}}, {{733635119815926940ull, 14522405448828071839ull, 5934435565288595302ull, 2609530397482415361ull}}, {{14752101955052072387ull, 8929634774180313990ull, 12029730475038132032ull, 3261912996853019201ull}}, {{9216755406960314675ull, 11162043467725392488ull, 1202105038515501328ull, 4077391246066274002ull}}, {{5760472129350196672ull, 6976277167328370305ull, 5363001667499576234ull, 2548369528791421251ull}}, {{11812276180115133744ull, 17943718496015238689ull, 2092066065947082388ull, 3185461910989276564ull}}, {{930287169861753468ull, 3982904046309496746ull, 2615082582433852986ull, 3981827388736595705ull}}, {{5193115499590983822ull, 7101001047370823370ull, 13163641660089627876ull, 2488642117960372315ull}}, {{15714766411343505585ull, 8876251309213529212ull, 11842866056684646941ull, 3110802647450465394ull}}, {{1196713940469830365ull, 15707000154944299420ull, 5580210534001032868ull, 3888503309313081743ull}}, {{9971318249648419786ull, 593503059985411329ull, 10405160611391727399ull, 2430314568320676089ull}}, {{17075833830487912637ull, 14576936880263927873ull, 17618136782667047152ull, 3037893210400845111ull}}, {{7509734232827727084ull, 18221171100329909842ull, 17410984959906421036ull, 3797366513001056389ull}}, {{9305269913944717332ull, 2164859900851417843ull, 13187708609155207100ull, 2373354070625660243ull}}, {{7019901374003508760ull, 2706074876064272304ull, 11872949743016620971ull, 2966692588282075304ull}}, {{8774876717504385950ull, 17217651650362504092ull, 14841187178770776213ull, 3708365735352594130ull}}, {{14707669985295017027ull, 13066875290690259009ull, 13887428005159123037ull, 2317728584595371331ull}}, {{4549529426336607572ull, 2498536058080660050ull, 12747598988021515893ull, 2897160730744214164ull}}, {{14910283819775535273ull, 7734856091028212966ull, 15934498735026894866ull, 3621450913430267705ull}}, {{9414482737864643283ull, 445198076930490400ull, 6083065363501454871ull, 4526813641787834632ull}}, {{5884051711165402052ull, 7195777825722638356ull, 3801915852188409294ull, 2829258526117396645ull}}, {{7355064638956752565ull, 18218094319008073753ull, 9364080833662899521ull, 3536573157646745806ull}}, {{13805516817123328610ull, 8937559843477928479ull, 2481729005223848594ull, 4420716447058432258ull}}, {{15545977038343162237ull, 10197660920601093203ull, 6162766646692293275ull, 2762947779411520161ull}}, {{14820785279501564893ull, 8135390132323978600ull, 12315144326792754498ull, 3453684724264400201ull}}, {{79237525667404500ull, 945865628550197443ull, 1558872353208779411ull, 4317105905330500252ull}}, {{16190424518037985476ull, 16732067082339731065ull, 10197667257610262939ull, 2698191190831562657ull}}, {{6402972592265318133ull, 16303397834497275928ull, 17358770090440216578ull, 3372738988539453321ull}}, {{8003715740331647667ull, 11155875256266819102ull, 7863404557768107011ull, 4215923735674316652ull}}, {{390636319279891888ull, 4666579025953067987ull, 14137999885459842690ull, 2634952334796447907ull}}, {{14323353454382028572ull, 15056595819296110791ull, 13060813838397415458ull, 3293690418495559884ull}}, {{13292505799550147810ull, 9597372737265362681ull, 16326017297996769323ull, 4117113023119449855ull}}, {{1390287097077760526ull, 3692514951577157724ull, 17121289838889062683ull, 2573195639449656159ull}}, {{1737858871347200657ull, 3957671044059251ull, 16789926280183940450ull, 3216494549312070199ull}}, {{16007381644466164533ull, 9228319125659849871ull, 16375721831802537658ull, 4020618186640087749ull}}, {{16922142555432434689ull, 10379385471964794073ull, 12540669154090279988ull, 2512886366650054843ull}}, {{7317620139008379650ull, 12974231839955992592ull, 11064150424185462081ull, 3141107958312568554ull}}, {{9147025173760474562ull, 2382731744662827028ull, 4606815993377051794ull, 3926384947890710693ull}}, {{14940262770455072409ull, 6100893358841654796ull, 5185103005074351323ull, 2453990592431694183ull}}, {{228584389359288896ull, 3014430680124680592ull, 1869692737915551250ull, 3067488240539617729ull}}, {{285730486699111119ull, 12991410387010626548ull, 6948801940821826966ull, 3834360300674522161ull}}, {{9401953591041720258ull, 3507945473454253688ull, 15872216259082111614ull, 2396475187921576350ull}}, {{11752441988802150322ull, 13608303878672592918ull, 10616898286997863709ull, 2995593984901970438ull}}, {{5467180449147912095ull, 3175321793058577436ull, 4047750821892553829ull, 3744492481127463048ull}}, {{12640359817572220867ull, 4290419129875304849ull, 2529844263682846143ull, 2340307800704664405ull}}, {{1965391716683112372ull, 751337893916743158ull, 7773991348030945583ull, 2925384750880830506ull}}, {{11680111682708666273ull, 14774230422678092659ull, 494117148183906170ull, 3656730938601038133ull}}, {{9988453584958444937ull, 9244415991492840016ull, 5229332453657270617ull, 4570913673251297666ull}}, {{6242783490599028086ull, 17306975040751494770ull, 7880018801963182039ull, 2856821045782061041ull}}, {{17026851400103560915ull, 17022032782511980558ull, 14461709520881365453ull, 3571026307227576301ull}}, {{12060192213274675336ull, 7442482922857811986ull, 4242078845819543105ull, 4463782884034470377ull}}, {{12149306151724059989ull, 16180766872854602251ull, 14180514324705684200ull, 2789864302521543985ull}}, {{10574946671227687082ull, 1779214517358701198ull, 3890584850599941539ull, 3487330378151929982ull}}, {{3995311302179833045ull, 16059076201980540210ull, 14086603100104702731ull, 4359162972689912477ull}}, {{7108755582289783557ull, 7731079617024143679ull, 11109969946779133159ull, 2724476857931195298ull}}, {{4274258459434841542ull, 5052163502852791695ull, 4664090396619140641ull, 3405596072413994123ull}}, {{731137055866164024ull, 10926890396993377523ull, 1218426977346537897ull, 4256995090517492654ull}}, {{16597861724412210179ull, 18358521544189330711ull, 14596574916123749897ull, 2660621931573432908ull}}, {{16135641137087874820ull, 9113093874954499677ull, 18245718645154687372ull, 3325777414466791135ull}}, {{6334493366077679812ull, 11391367343693124597ull, 18195462288015971311ull, 4157221768083488919ull}}, {{6264901363012243835ull, 14037133617449284729ull, 18289692957651063925ull, 2598263605052180574ull}}, {{12442812722192692697ull, 3711358966529442199ull, 13638744160209054099ull, 3247829506315225718ull}}, {{10941829884313477968ull, 27512689734414845ull, 7825058163406541816ull, 4059786882894032148ull}}, {{9144486686909617682ull, 17195431084009278ull, 14114033388983864443ull, 2537366801808770092ull}}, {{2207236321782246294ull, 13856552344137175310ull, 17642541736229830553ull, 3171708502260962615ull}}, {{11982417439082583676ull, 3485632374889305425ull, 17441491151859900288ull, 3964635627826203269ull}}, {{571481871785532942ull, 2178520234305815891ull, 13206774979126131632ull, 2477897267391377043ull}}, {{14549410395014079889ull, 2723150292882269863ull, 11896782705480276636ull, 3097371584239221304ull}}, {{13575076975340211957ull, 3403937866102837329ull, 14870978381850345795ull, 3871714480299026630ull}}, {{1566894081946550617ull, 18268362230810130995ull, 4682675470229078217ull, 2419821550186891644ull}}, {{15793675657715351983ull, 9000394733230500031ull, 5853344337786347772ull, 3024776937733614555ull}}, {{15130408553716802075ull, 11250493416538125039ull, 2704994403805546811ull, 3780971172167018194ull}}, {{16374034373714083153ull, 4725715376122634197ull, 6302307520805854661ull, 2363106982604386371ull}}, {{6632484911860440229ull, 10518830238580680651ull, 3266198382579930422ull, 2953883728255482964ull}}, {{3678920121398162383ull, 3925165761371075006ull, 4082747978224913028ull, 3692354660319353705ull}}, {{16134383131156015201ull, 11676600637711697686ull, 14080932532459040402ull, 2307721662699596065ull}}, {{10944606877090243193ull, 5372378760284846300ull, 3766107610291636791ull, 2884652078374495082ull}}, {{13680758596362803992ull, 2103787431928669971ull, 13931006549719321797ull, 3605815097968118852ull}}, {{12489262227026117086ull, 7241420308338225368ull, 17413758187149152246ull, 4507268872460148565ull}}, {{7805788891891323179ull, 18360945747993554567ull, 13189441876181914105ull, 2817043045287592853ull}}, {{5145550096436766069ull, 9116124129709779497ull, 2651744289945228920ull, 3521303806609491067ull}}, {{11043623638973345490ull, 11395155162137224371ull, 17149738417713699862ull, 4401629758261863833ull}}, {{4596421765144646980ull, 2510285957908377328ull, 3801057483429980558ull, 2751018598913664896ull}}, {{5745527206430808724ull, 12361229484240247468ull, 4751321854287475697ull, 3438773248642081120ull}}, {{7181909008038510905ull, 1616478800018145623ull, 5939152317859344622ull, 4298466560802601400ull}}, {{11406222157665151172ull, 14845357305293504726ull, 3711970198662090388ull, 2686541600501625875ull}}, {{5034405660226663157ull, 109952557907329292ull, 28276729900225082ull, 3358177000627032344ull}}, {{6293007075283328946ull, 9360812734238937423ull, 35345912375281352ull, 4197721250783790430ull}}, {{10850658449693162448ull, 5850507958899335889ull, 13857149250516714557ull, 2623575781739869018ull}}, {{18175009080543840963ull, 11924820967051557765ull, 8098064526291117388ull, 3279469727174836273ull}}, {{8883703295397637492ull, 14906026208814447207ull, 14734266676291284639ull, 4099337158968545341ull}}, {{12469843587264605289ull, 16233795408150111360ull, 11514759681895746851ull, 2562085724355340838ull}}, {{15587304484080756611ull, 15680558241760251296ull, 5170077565514907756ull, 3202607155444176048ull}}, {{1037386531391394147ull, 1153953728490762505ull, 6462596956893634696ull, 4003258944305220060ull}}, {{12177581628188091102ull, 721221080306726565ull, 13262495134913297493ull, 2502036840190762537ull}}, {{1386918979952950166ull, 5513212368810796111ull, 2743060863359458154ull, 3127546050238453172ull}}, {{15568706780223351419ull, 16114887497868270946ull, 3428826079199322692ull, 3909432562798066465ull}}, {{14342127756066982541ull, 848432649312893533ull, 13672231345568046443ull, 2443395351748791540ull}}, {{4092601639801564464ull, 14895598866923280629ull, 17090289181960058053ull, 3054244189685989425ull}}, {{9727438068179343484ull, 4784440528371937074ull, 7527803422167908855ull, 3817805237107486782ull}}, {{10691334811039477582ull, 9907804357873542527ull, 93191120427555130ull, 2386128273192179239ull}}, {{8752482495371959073ull, 3161383410487152351ull, 13951546955816607625ull, 2982660341490224048ull}}, {{6328917100787560937ull, 8563415281536328343ull, 17439433694770759531ull, 3728325426862780060ull}}, {{10873102215633307442ull, 3046291541746511262ull, 1676274022376948899ull, 2330203391789237538ull}}, {{4368005732686858494ull, 17642922482465302790ull, 11318714564825961931ull, 2912754239736546922ull}}, {{14683379202713348926ull, 17441967084654240583ull, 4925021169177676606ull, 3640942799670683653ull}}, {{13742537984964298253ull, 12579086818963024921ull, 10767962479899483662ull, 4551178499588354566ull}}, {{1671557212961604552ull, 3250243243424502672ull, 2118290531509789385ull, 2844486562242721604ull}}, {{2089446516202005690ull, 8674490072708016244ull, 2647863164387236731ull, 3555608202803402005ull}}, {{2611808145252507113ull, 6231426572457632401ull, 7921514973911433818ull, 4444510253504252506ull}}, {{13161595136851286706ull, 8506327626213408154ull, 9562632877122034040ull, 2777818908440157816ull}}, {{7228621884209332574ull, 10632909532766760193ull, 11953291096402542550ull, 3472273635550197270ull}}, {{13647463373689053621ull, 4067764879103674433ull, 5718241833648402380ull, 4340342044437746588ull}}, {{1612135580914576657ull, 11765725086294572329ull, 12797273182885027295ull, 2712713777773591617ull}}, {{6626855494570608726ull, 10095470339440827507ull, 2161533423324120407ull, 3390892222216989522ull}}, {{3671883349785873003ull, 8007651905873646480ull, 11925288816009926317ull, 4238615277771236902ull}}, {{2294927093616170627ull, 7310625450384723002ull, 2841619491578816044ull, 2649134548607023064ull}}, {{12092030903874989092ull, 9138281812980903752ull, 3552024364473520055ull, 3311418185758778830ull}}, {{15115038629843736365ull, 6811166247798741786ull, 13663402492446675877ull, 4139272732198473537ull}}, {{14058585162079723132ull, 6562821914087907568ull, 1622097530138090567ull, 2587045457624045961ull}}, {{17573231452599653915ull, 3591841374182496556ull, 6639307931100001113ull, 3233806822030057451ull}}, {{3519795242040015778ull, 9101487736155508600ull, 3687448895447613487ull, 4042258527537571814ull}}, {{2199872026275009861ull, 12605958862738274731ull, 16139713614936922141ull, 2526411579710982383ull}}, {{16584898088125926038ull, 1922390523140679701ull, 15562956000243764773ull, 3158014474638727979ull}}, {{6896064554875243836ull, 7014674172353237531ull, 14842008981877318062ull, 3947518093298409974ull}}, {{2004197337583333446ull, 18219229413002937169ull, 4664569595245935884ull, 2467198808311506234ull}}, {{7116932690406554711ull, 4327292692544119845ull, 15054084030912195664ull, 3083998510389382792ull}}, {{13507851881435581292ull, 5409115865680149806ull, 370860964930692964ull, 3854998137986728491ull}}, {{3830721407469850404ull, 12604069452904869437ull, 16372689167577540766ull, 2409373836241705306ull}}, {{9400087777764700909ull, 6531714779276310988ull, 11242489422617150150ull, 3011717295302131633ull}}, {{11750109722205876136ull, 17388015510950164543ull, 218053722989273975ull, 3764646619127664542ull}}, {{14261347604019754441ull, 17785038721984934695ull, 13971341632150459946ull, 2352904136954790338ull}}, {{13214998486597305147ull, 13007926365626392561ull, 8240805003333299125ull, 2941130171193487923ull}}, {{2683690052964467722ull, 2424849901750826990ull, 5689320235739236003ull, 3676412713991859904ull}}, {{12577984603060360460ull, 16866120432470697449ull, 7111650294674045003ull, 4595515892489824880ull}}, {{943711349271643432ull, 8235482261080491954ull, 4444781434171278127ull, 2872197432806140550ull}}, {{10403011223444330098ull, 5682666807923227038ull, 14779348829568873467ull, 3590246791007675687ull}}, {{3780391992450636814ull, 2491647491476645894ull, 13862500018533703930ull, 4487808488759594609ull}}, {{16197803050563811721ull, 6168965700600291587ull, 1746533483942483100ull, 2804880305474746631ull}}, {{15635567794777376747ull, 7711207125750364484ull, 16018224910210267587ull, 3506100381843433288ull}}, {{1097715669762169318ull, 5027322888760567702ull, 1576037064053282868ull, 4382625477304291611ull}}, {{14521130348883519536ull, 12365448842330130621ull, 17125924229529159456ull, 2739140923315182256ull}}, {{4316354880822235708ull, 15456811052912663277ull, 2960661213201897704ull, 3423926154143977821ull}}, {{10007129619455182538ull, 874269742431277480ull, 8312512534929760035ull, 4279907692679972276ull}}, {{6254456012159489087ull, 16687319653515406089ull, 14418692371185875829ull, 2674942307924982672ull}}, {{12429756033626749262ull, 7024091511612093899ull, 18023365463982344787ull, 3343677884906228340ull}}, {{10925509023606048674ull, 4168428371087729470ull, 4082462756268379368ull, 4179597356132785426ull}}, {{2216757121326392517ull, 2605267731929830919ull, 7163225241095125009ull, 2612248347582990891ull}}, {{16606004456940154358ull, 7868270683339676552ull, 4342345532941518357ull, 3265310434478738614ull}}, {{2310761497465641332ull, 14447024372601983595ull, 14651303953031673754ull, 4081638043098423267ull}}, {{17585127000411883497ull, 13641076251303627650ull, 6851221961431102144ull, 2551023776936514542ull}}, {{12758036713660078563ull, 17051345314129534563ull, 17787399488643653488ull, 3188779721170643177ull}}, {{11335859873647710299ull, 2867437568952366588ull, 8399191305522403149ull, 3985974651463303972ull}}, {{16308284457884594745ull, 4097991489808923069ull, 14472866602806277776ull, 2491234157164564982ull}}, {{6550297517073579719ull, 5122489362261153837ull, 8867711216653071412ull, 3114042696455706228ull}}, {{12799557914769362553ull, 6403111702826442296ull, 11084639020816339265ull, 3892553370569632785ull}}, {{7999723696730851596ull, 15531159860334996195ull, 10370360369130184ull, 2432845856606020491ull}}, {{5387968602486176591ull, 967205751709193628ull, 13848021005743576443ull, 3041057320757525613ull}}, {{6734960753107720738ull, 15044065244918655747ull, 3474968201897306841ull, 3801321650946907017ull}}, {{1903507461478631510ull, 2485011750433077986ull, 13701070172254286536ull, 2375826031841816885ull}}, {{11602756363703065195ull, 3106264688041347482ull, 3291279660035694458ull, 2969782539802271107ull}}, {{5280073417774055685ull, 13106202896906460161ull, 17949157630326781784ull, 3712228174752838883ull}}, {{14829260932177254564ull, 8191376810566537600ull, 8912380509740544663ull, 2320142609220524302ull}}, {{89832091512016588ull, 5627534994780784097ull, 1917103600320905021ull, 2900178261525655378ull}}, {{4723976132817408639ull, 11646104761903368025ull, 11619751537255907084ull, 3625222826907069222ull}}, {{10516656184449148703ull, 14557630952379210031ull, 5301317384715108047ull, 4531528533633836528ull}}, {{13490439142921799796ull, 16016048372878088125ull, 3313323365446942529ull, 2832205333521147830ull}}, {{3027990873370086032ull, 6185002410815446445ull, 13365026243663453970ull, 3540256666901434787ull}}, {{8396674610139995444ull, 16954625050374083864ull, 12094596786151929558ull, 4425320833626793484ull}}, {{5247921631337497153ull, 5984954638056414511ull, 16782495028199731782ull, 2765825521016745927ull}}, {{1948216020744483537ull, 16704565334425293947ull, 16366432766822276823ull, 3457281901270932409ull}}, {{16270328081212768133ull, 16269020649604229529ull, 6622982903245682317ull, 4321602376588665512ull}}, {{3251426023116898227ull, 12473980915216337408ull, 4139364314528551448ull, 2701001485367915945ull}}, {{4064282528896122784ull, 15592476144020421760ull, 9785891411588077214ull, 3376251856709894931ull}}, {{5080353161120153480ull, 10267223143170751392ull, 7620678246057708614ull, 4220314820887368664ull}}, {{3175220725700095925ull, 1805328446054331716ull, 4762923903786067884ull, 2637696763054605415ull}}, {{3969025907125119906ull, 2256660557567914645ull, 1341968861305196951ull, 3297120953818256769ull}}, {{9572968402333787787ull, 16655883752242057018ull, 6289147095058884092ull, 4121401192272820961ull}}, {{10594791269886005271ull, 1186555308296509828ull, 15459931980480272318ull, 2575875745170513100ull}}, {{13243489087357506588ull, 10706566172225413093ull, 878170901890788781ull, 3219844681463141376ull}}, {{2719303303914719523ull, 17994893733709154271ull, 1097713627363485976ull, 4024805851828926720ull}}, {{8617093592587781558ull, 11246808583568221419ull, 686071017102178735ull, 2515503657393079200ull}}, {{6159680972307339044ull, 9446824711032888870ull, 857588771377723419ull, 3144379571741349000ull}}, {{16922973252238949613ull, 7196844870363723183ull, 1071985964222154274ull, 3930474464676686250ull}}, {{17494387310290425364ull, 9109714062404714893ull, 5281677246066234325ull, 2456546540422928906ull}}, {{8032926082580867993ull, 15998828596433281521ull, 15825468594437568714ull, 3070683175528661132ull}}, {{14652843621653472895ull, 10775163708686826093ull, 1335091669337409277ull, 3838353969410826416ull}}, {{11463870272747114512ull, 9040320327142960260ull, 834432293335880798ull, 2398971230881766510ull}}, {{14329837840933893139ull, 2077028372073924517ull, 10266412403524626806ull, 2998714038602208137ull}}, {{4077239245885202712ull, 11819657501947181455ull, 17444701522833171411ull, 3748392548252760171ull}}, {{9465803556319333551ull, 5081442929503294457ull, 8597095442557038180ull, 2342745342657975107ull}}, {{16443940463826554843ull, 6351803661879118071ull, 6134683284768909821ull, 2928431678322468884ull}}, {{15943239561355805650ull, 12551440595776285493ull, 7668354105961137276ull, 3660539597903086105ull}}, {{6093991396412593350ull, 15689300744720356867ull, 14197128650878809499ull, 4575674497378857631ull}}, {{1502901613544176892ull, 7499969956236529090ull, 15790734434440337793ull, 2859796560861786019ull}}, {{11101999053784996923ull, 13986648463723049266ull, 15126732024623034337ull, 3574745701077232524ull}}, {{4654126780376470345ull, 3648252524371647871ull, 461670957069241306ull, 4468432126346540656ull}}, {{9826358265376375822ull, 6891843846159667823ull, 288544348168275816ull, 2792770078966587910ull}}, {{7671261813293081873ull, 8614804807699584779ull, 9584052472065120578ull, 3490962598708234887ull}}, {{4977391248188964438ull, 1545133972769705166ull, 7368379571654012819ull, 4363703248385293609ull}}, {{16945927585400266486ull, 17106609797476923392ull, 16134452278352227771ull, 2727314530240808505ull}}, {{2735665408040781491ull, 16771576228418766337ull, 6333007292658121002ull, 3409143162801010632ull}}, {{8031267778478364768ull, 11741098248668682113ull, 7916259115822651253ull, 4261428953501263290ull}}, {{16548757407617447740ull, 9644029414631620272ull, 9559347965816544937ull, 2663393095938289556ull}}, {{2239202685812258059ull, 16666722786716913245ull, 11949184957270681171ull, 3329241369922861945ull}}, {{7410689375692710477ull, 16221717464968753652ull, 1101423141306187752ull, 4161551712403577432ull}}, {{13855052896662719857ull, 10138573415605471032ull, 688389463316367345ull, 2600969820252235895ull}}, {{17318816120828399821ull, 17284902787934226694ull, 14695544884427622893ull, 3251212275315294868ull}}, {{12425148114180723968ull, 7771070429635619656ull, 18369431105534528617ull, 4064015344144118585ull}}, {{7765717571362952480ull, 16386134064590732045ull, 4563365413317998529ull, 2540009590090074116ull}}, {{14318832982631078504ull, 6647609525456251344ull, 5704206766647498162ull, 3175011987612592645ull}}, {{17898541228288848130ull, 17532883943675089988ull, 11741944476736760606ull, 3968764984515740806ull}}, {{1963216230825754273ull, 6346366446369543339ull, 2727029279533087475ull, 2480478115322338004ull}}, {{16289078343814356553ull, 3321272039534541269ull, 3408786599416359344ull, 3100597644152922505ull}}, {{6526289874485781980ull, 4151590049418176587ull, 8872669267697837084ull, 3875747055191153131ull}}, {{1773088162339919785ull, 11818115817741136175ull, 3239575283097454225ull, 2422341909494470707ull}}, {{16051418258207063444ull, 937586716894256506ull, 17884527159153981494ull, 3027927386868088383ull}}, {{10840900785904053496ull, 10395355432972596441ull, 17743972930515088963ull, 3784909233585110479ull}}, {{18304778037258503195ull, 4191254136394178823ull, 18007512109213012458ull, 2365568270990694049ull}}, {{18269286528145741090ull, 14462439707347499337ull, 8674332081234101860ull, 2956960338738367562ull}}, {{9001550104900012651ull, 18078049634184374172ull, 1619543064687851517ull, 3696200423422959453ull}}, {{14849340852417283715ull, 13604624030578927809ull, 3318057424643601150ull, 2310125264639349658ull}}, {{4726618010239440931ull, 7782408001368883954ull, 13370943817659277246ull, 2887656580799187072ull}}, {{15131644549654076972ull, 504637964856329134ull, 16713679772074096558ull, 3609570725998983840ull}}, {{9691183650212820407ull, 9854169492925187226ull, 2445355641383069081ull, 4511963407498729801ull}}, {{10668675799810400659ull, 17688070979146711776ull, 13057562321932887935ull, 2819977129686706125ull}}, {{13335844749763000823ull, 17498402705506001816ull, 2486894847133946207ull, 3524971412108382657ull}}, {{16669805937203751029ull, 17261317363455114366ull, 7720304577344820663ull, 4406214265135478321ull}}, {{5806942692324956489ull, 17705852379800528335ull, 16354405406908982674ull, 2753883915709673950ull}}, {{2646992346978807707ull, 12908943437895884611ull, 11219634721781452535ull, 3442354894637092438ull}}, {{17143798489005673346ull, 11524493278942467859ull, 4801171365372039861ull, 4302943618296365548ull}}, {{8409031046414851889ull, 9508651308552736364ull, 12224104140212300721ull, 2689339761435228467ull}}, {{10511288808018564862ull, 16497500154118308359ull, 10668444156837987997ull, 3361674701794035584ull}}, {{8527424991595818173ull, 6786817137365721737ull, 13335555196047484997ull, 4202093377242544480ull}}, {{16858855665815856118ull, 6547603720067270037ull, 8334721997529678123ull, 2626308360776590300ull}}, {{7238511526987656436ull, 3572818631656699643ull, 10418402496912097654ull, 3282885450970737875ull}}, {{4436453390307182641ull, 13689395326425650362ull, 8411317102712734163ull, 4103606813713422344ull}}, {{7384469387369377055ull, 6250029069802337524ull, 5257073189195458852ull, 2564754258570888965ull}}, {{9230586734211721318ull, 7812536337252921905ull, 11183027504921711469ull, 3205942823213611206ull}}, {{16149919436192039551ull, 14377356439993540285ull, 4755412344297363528ull, 4007428529017014008ull}}, {{12399542656833718672ull, 8985847774995962678ull, 2972132715185852205ull, 2504642830635633755ull}}, {{6276056284187372532ull, 15843995737172341252ull, 17550223949264478968ull, 3130803538294542193ull}}, {{7845070355234215664ull, 1358250597755874949ull, 8102721881298434999ull, 3913504422868177742ull}}, {{7209011981235078742ull, 7766435651238503699ull, 452515157384133970ull, 2445940264292611089ull}}, {{4399578958116460524ull, 484672527193353816ull, 5177329965157555367ull, 3057425330365763861ull}}, {{5499473697645575655ull, 14440898714273855982ull, 11083348474874332112ull, 3821781662957204826ull}}, {{17272229116310648496ull, 9025561696421159988ull, 11538778815223845474ull, 2388613539348253016ull}}, {{3143542321678759004ull, 2058580083671674178ull, 14423473519029806843ull, 2985766924185316270ull}}, {{13152799938953224563ull, 16408283159871756434ull, 8805969861932482745ull, 3732208655231645338ull}}, {{12832185980273153256ull, 3337647947278765915ull, 10115417182135189620ull, 2332630409519778336ull}}, {{11428546456914053666ull, 4172059934098457394ull, 12644271477668987025ull, 2915788011899722920ull}}, {{5062311034287791275ull, 9826760936050459647ull, 15805339347086233781ull, 3644735014874653650ull}}, {{1716202774432351189ull, 16895137188490462463ull, 10533302147003016418ull, 4555918768593317063ull}}, {{7990155761661301349ull, 15171146761233926943ull, 13500842869517967117ull, 2847449230370823164ull}}, {{5376008683649238783ull, 5128875396260244967ull, 16876053586897458897ull, 3559311537963528955ull}}, {{2108324836134160574ull, 11022780263752694113ull, 16483380965194435717ull, 4449139422454411194ull}}, {{12846918068652320119ull, 9195080674059127772ull, 14913799121673910227ull, 2780712139034006996ull}}, {{16058647585815400149ull, 6882164824146521811ull, 195504828382836168ull, 3475890173792508746ull}}, {{15461623463841862282ull, 8602706030183152264ull, 9467753072333321018ull, 4344862717240635932ull}}, {{9663514664901163926ull, 9988377287291858069ull, 15140717707063101444ull, 2715539198275397457ull}}, {{16691079349553842812ull, 12485471609114822586ull, 5090839078546713093ull, 3394423997844246822ull}}, {{11640477150087527707ull, 1771781456111364521ull, 15586920885038167175ull, 4243029997305308527ull}}, {{357769191163622961ull, 8024892437710684682ull, 16659354580789936340ull, 2651893748315817829ull}}, {{9670583525809304509ull, 10031115547138355852ull, 6989135170705256713ull, 3314867185394772287ull}}, {{12088229407261630636ull, 17150580452350332719ull, 4124732944954182987ull, 4143583981743465359ull}}, {{14472672407179601004ull, 8413269773505263997ull, 9495487118237446223ull, 2589739988589665849ull}}, {{4255782453692337542ull, 5904901198454192093ull, 16481044916224195683ull, 3237174985737082311ull}}, {{9931414085542809832ull, 2769440479640352212ull, 15989620126852856700ull, 4046468732171352889ull}}, {{15430505840319031953ull, 10954272336629995940ull, 3075983551641953581ull, 2529042957607095556ull}}, {{841388226689238325ull, 18304526439214882830ull, 3844979439552441976ull, 3161303697008869445ull}}, {{10275107320216323715ull, 4433913975309051921ull, 9417910317867940375ull, 3951629621261086806ull}}, {{17951157121203672082ull, 9688725262209239306ull, 1274507930240074830ull, 2469768513288179254ull}}, {{13215574364649814294ull, 2887534540906773325ull, 10816506949654869346ull, 3087210641610224067ull}}, {{2684409900530104156ull, 12832790212988242465ull, 8908947668641198778ull, 3859013302012780084ull}}, {{13206971233899784857ull, 12632179901545039444ull, 14791464329755525044ull, 2411883313757987552ull}}, {{16508714042374731072ull, 15790224876931299305ull, 42586338484854689ull, 3014854142197484441ull}}, {{6800834497686250127ull, 5902723040881960420ull, 4664918941533456266ull, 3768567677746855551ull}}, {{13473893597908682138ull, 8300887918978613166ull, 9833103366099492022ull, 2355354798591784719ull}}, {{7618994960531076864ull, 1152737861868490650ull, 7679693189196977124ull, 2944193498239730899ull}}, {{300371663809070272ull, 1440922327335613313ull, 4987930468068833501ull, 3680241872799663624ull}}, {{4987150598188725744ull, 6412838927596904545ull, 6234913085086041876ull, 4600302340999579530ull}}, {{14646184169936423350ull, 13231396366602841148ull, 8508506696606164076ull, 2875188963124737206ull}}, {{18307730212420529188ull, 16539245458253551435ull, 1412261333902929287ull, 3593986203905921508ull}}, {{18272976747098273580ull, 16062370804389551390ull, 1765326667378661609ull, 4492482754882401885ull}}, {{6808924448509033084ull, 3121452725102387763ull, 3409172176325357458ull, 2807801721801501178ull}}, {{3899469542208903451ull, 13125187943232760512ull, 13484837257261472630ull, 3509752152251876472ull}}, {{4874336927761129313ull, 7183112892186174832ull, 16856046571576840788ull, 4387190190314845590ull}}, {{3046460579850705821ull, 13712817594471135078ull, 5923343088808137588ull, 2741993868946778494ull}}, {{13031447761668158084ull, 17141021993088918847ull, 16627550897864947793ull, 3427492336183473117ull}}, {{11677623683657809701ull, 7591219436078984847ull, 6949380567049021030ull, 4284365420229341397ull}}, {{14216043829927212919ull, 132826129121977625ull, 6649205863619332096ull, 2677728387643338373ull}}, {{3934996732126852437ull, 166032661402472032ull, 12923193347951553024ull, 3347160484554172966ull}}, {{4918745915158565546ull, 207540826753090040ull, 6930619648084665472ull, 4183950605692716208ull}}, {{3074216196974103467ull, 129713016720681275ull, 4331637280052915920ull, 2614969128557947630ull}}, {{17677828301499793045ull, 162141270900851593ull, 14637918636920920708ull, 3268711410697434537ull}}, {{8262227321592577594ull, 202676588626064492ull, 4462340240868987173ull, 4085889263371793172ull}}, {{14387264112850136805ull, 2432515877104984259ull, 12012334687397892791ull, 2553680789607370732ull}}, {{13372394122635283102ull, 16875702901663394036ull, 15015418359247365988ull, 3192100987009213415ull}}, {{16715492653294103877ull, 2647884553369690929ull, 14157586930631819582ull, 3990126233761516769ull}}, {{3529653880667733067ull, 15489985901138220543ull, 1930962804003805382ull, 2493828896100947981ull}}, {{18247125406116830046ull, 10139110339567999870ull, 7025389523432144632ull, 3117286120126184976ull}}, {{13585534720791261749ull, 12673887924459999838ull, 8781736904290180790ull, 3896607650157731220ull}}, {{3879273182067150689ull, 3309493934360111995ull, 14711957602036138802ull, 2435379781348582012ull}}, {{237405459156550458ull, 13360239454804915802ull, 18389947002545173502ull, 3044224726685727515ull}}, {{9520128860800463880ull, 7476927281651368944ull, 18375747734754078974ull, 3805280908357159394ull}}, {{5950080538000289925ull, 61393532604717686ull, 16096528352648687263ull, 2378300567723224621ull}}, {{16660972709355138214ull, 13911799971038060819ull, 6285602385528695366ull, 2972875709654030777ull}}, {{16214529868266534864ull, 8166377926942800216ull, 12468689000338257112ull, 3716094637067538471ull}}, {{10134081167666584290ull, 5103986204339250135ull, 14710459652852492551ull, 2322559148167211544ull}}, {{8055915441155842458ull, 1768296736996674765ull, 18388074566065615689ull, 2903198935209014430ull}}, {{14681580319872190977ull, 6822056939673231360ull, 13761721170727243803ull, 3628998669011268038ull}}, {{18351975399840238721ull, 3915885156164151296ull, 7978779426554278946ull, 4536248336264085048ull}}, {{11469984624900149201ull, 7059114241029982464ull, 4986737141596424341ull, 2835155210165053155ull}}, {{14337480781125186501ull, 13435578819714865984ull, 1621735408568142522ull, 3543944012706316444ull}}, {{17921850976406483126ull, 7571101487788806672ull, 2027169260710178153ull, 4429930015882895555ull}}, {{11201156860254051954ull, 16261153475936473930ull, 17407881852439719009ull, 2768706259926809721ull}}, {{4778074038462789134ull, 6491383789638428701ull, 7924794260267485050ull, 3460882824908512152ull}}, {{10584278566505874322ull, 17337601773902811684ull, 9905992825334356312ull, 4326103531135640190ull}}, {{15838546140920947259ull, 10836001108689257302ull, 1579559497406584791ull, 2703814706959775119ull}}, {{10574810639296408266ull, 8933315367434183724ull, 15809507427040394701ull, 3379768383699718898ull}}, {{13218513299120510332ull, 15778330227720117559ull, 10538512246945717568ull, 4224710479624648623ull}}, {{15179099839591400814ull, 9861456392325073474ull, 13504099181982155336ull, 2640444049765405389ull}}, {{9750502762634475209ull, 12326820490406341843ull, 3045065922195530458ull, 3300555062206756737ull}}, {{7576442434865706107ull, 6185153576153151496ull, 8418018421171800977ull, 4125693827758445921ull}}, {{4735276521791066317ull, 15394936031164189445ull, 16790476559300845370ull, 2578558642349028700ull}}, {{10530781670666220801ull, 10020298002100460998ull, 2541351625416505097ull, 3223198302936285876ull}}, {{3940105051478000193ull, 17137058521052964152ull, 3176689531770631371ull, 4028997878670357345ull}}, {{2462565657173750121ull, 8404818566444408643ull, 13514646003425114367ull, 2518123674168973340ull}}, {{16913265126749351363ull, 5894337189628122899ull, 16893307504281392959ull, 3147654592711216675ull}}, {{16529895390009301299ull, 2756235468607765720ull, 16504948361924353295ull, 3934568240889020844ull}}, {{10331184618755813312ull, 8640176195520935431ull, 1092220689347945001ull, 2459105150555638028ull}}, {{8302294755017378736ull, 15411906262828557193ull, 1365275861684931251ull, 3073881438194547535ull}}, {{14989554462199111324ull, 14653196810108308587ull, 15541652882388327776ull, 3842351797743184418ull}}, {{7062628529660750626ull, 9158248006317692867ull, 14325219069920092764ull, 2401469873589490261ull}}, {{4216599643648550378ull, 11447810007897116084ull, 4071465782117952243ull, 3001837341986862827ull}}, {{5270749554560687972ull, 9698076491444007201ull, 477646209220052400ull, 3752296677483578534ull}}, {{14823433517668899743ull, 6061297807152504500ull, 14133586936044696462ull, 2345185423427236583ull}}, {{82547823376573062ull, 16799994295795406434ull, 13055297651628482673ull, 2931481779284045729ull}}, {{9326556816075492136ull, 7164934814462094330ull, 2484064009253439630ull, 3664352224105057162ull}}, {{2434823983239589362ull, 18179540554932393721ull, 12328452048421575345ull, 4580440280131321452ull}}, {{13050980035593213111ull, 4444683819191664219ull, 16928654567118260399ull, 2862775175082075907ull}}, {{11702039026064128485ull, 944168755562192370ull, 16549132190470437595ull, 3578468968852594884ull}}, {{5404176745725384798ull, 15015268999734904175ull, 2239671164378495377ull, 4473086211065743606ull}}, {{10295139493719447355ull, 2467014097193233253ull, 15234852533018723323ull, 2795678881916089753ull}}, {{17480610385576697098ull, 16918825676773705278ull, 5208507610991240441ull, 3494598602395112192ull}}, {{12627390945116095564ull, 7313474040684967886ull, 6510634513739050552ull, 4368248252993890240ull}}, {{3280433322270171824ull, 4570921275428104929ull, 4069146571086906595ull, 2730155158121181400ull}}, {{8712227671265102683ull, 1101965575857743257ull, 5086433213858633244ull, 3412693947651476750ull}}, {{15501970607508766258ull, 1377456969822179071ull, 15581413554178067363ull, 4265867434564345937ull}}, {{16606260657334060768ull, 17001811670634719583ull, 2820854443720210245ull, 2666167146602716211ull}}, {{16146139803240188055ull, 7417206533011235767ull, 17361126109932426519ull, 3332708933253395263ull}}, {{15570988735622847165ull, 4659822147836656805ull, 17089721618988145245ull, 4165886166566744079ull}}, {{12037710968977973430ull, 5218231851611604455ull, 17598605039508672634ull, 2603678854104215049ull}}, {{10435452692795078884ull, 15746161851369281377ull, 8163198244103677080ull, 3254598567630268812ull}}, {{17656001884421236509ull, 1235958240502050105ull, 10203997805129596351ull, 4068248209537836015ull}}, {{4117472150122190962ull, 7690002927954863172ull, 13295027655847079575ull, 2542655130961147509ull}}, {{5146840187652738702ull, 5000817641516191061ull, 2783726514526685757ull, 3178318913701434387ull}}, {{11045236252993311282ull, 10862708070322626730ull, 17314716198440520908ull, 3972898642126792983ull}}, {{11514958676548207455ull, 16012564580806417514ull, 17739226651666407423ull, 2483061651329245614ull}}, {{5170326308830483511ull, 15404019707580633989ull, 12950661277728233471ull, 3103827064161557018ull}}, {{11074593904465492293ull, 14643338616048404582ull, 6964954560305516031ull, 3879783830201946273ull}}, {{2309935171863544779ull, 16069615662671334720ull, 15882311646259417279ull, 2424864893876216420ull}}, {{2887418964829430974ull, 15475333559911780496ull, 1406145484114719983ull, 3031081117345270526ull}}, {{3609273706036788717ull, 14732480931462337716ull, 10981053891998175787ull, 3788851396681588157ull}}, {{11479168103127768756ull, 6901957572950267120ull, 9169001691712553819ull, 2368032122925992598ull}}, {{14348960128909710945ull, 4015760947760445996ull, 2237880077785916466ull, 2960040153657490748ull}}, {{17936200161137138682ull, 14243073221555333303ull, 2797350097232395582ull, 3700050192071863435ull}}, {{18127654128351793532ull, 4290234745044695410ull, 17889244875266104903ull, 2312531370044914646ull}}, {{13436195623584966107ull, 751107412878481359ull, 13138184057227855321ull, 2890664212556143308ull}}, {{12183558511053819730ull, 5550570284525489603ull, 16422730071534819151ull, 3613330265695179135ull}}, {{10617762120389886758ull, 2326526837229474100ull, 15916726570991136035ull, 4516662832118973919ull}}, {{15859473362098455032ull, 17594980337764278976ull, 16865483134510541877ull, 2822914270074358699ull}}, {{1377597628913517174ull, 8158667366923185009ull, 16470167899710789443ull, 3528642837592948374ull}}, {{6333683054569284371ull, 5586648190226593357ull, 11364337837783710996ull, 4410803546991185468ull}}, {{6264394918319496684ull, 12715027155746396656ull, 16326083185469595180ull, 2756752216869490917ull}}, {{7830493647899370855ull, 15893783944682995820ull, 6572545926554830263ull, 3445940271086863647ull}}, {{9788117059874213569ull, 15255543912426356871ull, 3603996389766149925ull, 4307425338858579559ull}}, {{13035102190062465337ull, 11840557954480166996ull, 9170026771244925559ull, 2692140836786612224ull}}, {{16293877737578081671ull, 10189011424672820841ull, 11462533464056156949ull, 3365176045983265280ull}}, {{6532289116690438376ull, 17347950299268413956ull, 14328166830070196186ull, 4206470057479081600ull}}, {{13306052734786299793ull, 15454154955470146626ull, 8955104268793872616ull, 2629043785924426000ull}}, {{7409193881628098934ull, 870949620628131667ull, 11193880335992340771ull, 3286304732405532500ull}}, {{4649806333607735763ull, 14923745081067328296ull, 13992350419990425963ull, 4107880915506915625ull}}, {{2906128958504834852ull, 7021497666453386233ull, 1827689984852934371ull, 2567425572191822266ull}}, {{8244347216558431469ull, 4165186064639344887ull, 11507984517920943772ull, 3209281965239777832ull}}, {{5693748002270651432ull, 5206482580799181109ull, 14384980647401179715ull, 4011602456549722290ull}}, {{5864435510632851097ull, 948208603785794241ull, 13602298923053125226ull, 2507251535343576431ull}}, {{11942230406718451775ull, 10408632791587018609ull, 12391187635389018628ull, 3134064419179470539ull}}, {{1092729953115901007ull, 13010790989483773262ull, 10877298525808885381ull, 3917580523974338174ull}}, {{14518014275979601842ull, 10437587377641052240ull, 2186625560203165459ull, 2448487827483961359ull}}, {{18147517844974502302ull, 8435298203623927396ull, 16568340005536120536ull, 3060609784354951698ull}}, {{4237653232508576261ull, 10544122754529909246ull, 11487052970065374862ull, 3825762230443689623ull}}, {{16483591325600023875ull, 1978390703153805374ull, 14096937133931941145ull, 2391101394027306014ull}}, {{11381117120145254036ull, 7084674397369644622ull, 8397799380560150623ull, 2988876742534132518ull}}, {{5003024363326791737ull, 4244156978284667874ull, 1273877188845412471ull, 3736095928167665648ull}}, {{7738576245506632740ull, 9570127139068999277ull, 796173243028382794ull, 2335059955104791030ull}}, {{14284906325310678829ull, 2739286886981473288ull, 10218588590640254301ull, 2918824943880988787ull}}, {{17856132906638348536ull, 8035794627154229514ull, 8161549719872929972ull, 3648531179851235984ull}}, {{13096794096443159862ull, 10044743283942786893ull, 10201937149841162465ull, 4560663974814044980ull}}, {{10491339319490668866ull, 17807179598532711568ull, 15599582755505502348ull, 2850414984258778112ull}}, {{13114174149363336082ull, 3812230424456337844ull, 1052734370672326320ull, 3563018730323472641ull}}, {{16392717686704170102ull, 4765288030570422305ull, 5927603981767795804ull, 4453773412904340801ull}}, {{3327919526549024458ull, 12201677055961289749ull, 15233967534673342137ull, 2783608383065213000ull}}, {{8771585426613668477ull, 1417038264669448474ull, 595715344632126056ull, 3479510478831516251ull}}, {{1741109746412309788ull, 1771297830836810593ull, 14579702236072321282ull, 4349388098539395313ull}}, {{12617408637576163377ull, 5718747162700394524ull, 2194784869904118945ull, 2718367561587122071ull}}, {{15771760796970204222ull, 11760119971802881059ull, 16578539142662312393ull, 3397959451983902588ull}}, {{15103014977785367373ull, 865091909471437612ull, 2276429854618338876ull, 4247449314979878236ull}}, {{216012324261078800ull, 9764054480274424316ull, 10646140695991237605ull, 2654655821862423897ull}}, {{270015405326348500ull, 16816754118770418299ull, 17919361888416434910ull, 3318319777328029871ull}}, {{14172577311940099337ull, 11797570611608247065ull, 17787516342093155734ull, 4147899721660037339ull}}, {{1940331792321480230ull, 2761795613827766512ull, 8811354704594528382ull, 2592437326037523337ull}}, {{2425414740401850287ull, 12675616554139483948ull, 15625879399170548381ull, 3240546657546904171ull}}, {{3031768425502312859ull, 2009462637392191223ull, 14920663230535797573ull, 4050683321933630214ull}}, {{8812384293580027393ull, 3561757157583813466ull, 4713728500657485579ull, 2531677076208518884ull}}, {{1792108330120258433ull, 18287254502261930545ull, 5892160625821856973ull, 3164596345260648605ull}}, {{6851821431077710945ull, 9024010072545249469ull, 11976886800704709121ull, 3955745431575810756ull}}, {{6588231403637263293ull, 17169221341409250678ull, 16708926287295219008ull, 2472340894734881722ull}}, {{17458661291401354924ull, 3014782603052011731ull, 11662785822264247953ull, 3090426118418602153ull}}, {{17211640595824305751ull, 8380164272242402568ull, 743424222548146229ull, 3863032648023252692ull}}, {{10757275372390191095ull, 7543445679365195557ull, 9688012175947367201ull, 2414395405014532932ull}}, {{18058280233915126772ull, 14040993117633882350ull, 12110015219934209001ull, 3017994256268166165ull}}, {{13349478255539132657ull, 3716183341760189226ull, 1302460969635597540ull, 3772492820335207707ull}}, {{12955109928139345815ull, 11545986625454894074ull, 16954939170518106126ull, 2357808012709504816ull}}, {{6970515373319406460ull, 5209111244963841785ull, 2746929889438081042ull, 2947260015886881021ull}}, {{13324830235076645979ull, 15734761093059578039ull, 8045348380224989206ull, 3684075019858601276ull}}, {{12044351775418419570ull, 10445079329469696741ull, 10056685475281236508ull, 4605093774823251595ull}}, {{9833562868850206183ull, 15751546617773336271ull, 3979585412837078865ull, 2878183609264532247ull}}, {{7680267567635369825ull, 5854375216934506627ull, 362795747618960678ull, 3597729511580665309ull}}, {{4988648441116824377ull, 16541341058022909092ull, 5065180702951088751ull, 4497161889475831636ull}}, {{12341277312552791044ull, 17255867188905400038ull, 12389109976199206277ull, 2810726180922394772ull}}, {{6203224603836212997ull, 7734775930849586336ull, 15486387470249007847ull, 3513407726152993465ull}}, {{7754030754795266246ull, 5056783895134595016ull, 5522926282529096097ull, 4391759657691241832ull}}, {{4846269221747041404ull, 14689704980527591645ull, 3451828926580685060ull, 2744849786057026145ull}}, {{10669522545611189659ull, 18362131225659489556ull, 8926472176653244229ull, 3431062232571282681ull}}, {{13336903182013987073ull, 9117605976792198233ull, 15769776239243943191ull, 4288827790714103351ull}}, {{1418035461117660065ull, 12616032763136205752ull, 16773639177168546350ull, 2680517369196314594ull}}, {{1772544326397075081ull, 6546668917065481382ull, 11743676934605907130ull, 3350646711495393243ull}}, {{11439052444851119659ull, 17406708183186627535ull, 10067910149829996008ull, 4188308389369241554ull}}, {{14066936805673031643ull, 10879192614491642209ull, 10904129862071135409ull, 2617692743355775971ull}}, {{3748612951809125842ull, 18210676786541940666ull, 9018476309161531357ull, 3272115929194719964ull}}, {{13909138226616183110ull, 8928287927895262120ull, 11273095386451914197ull, 4090144911493399955ull}}, {{8693211391635114444ull, 7886022964148232777ull, 4739841607318752421ull, 2556340569683374972ull}}, {{15478200257971280959ull, 14469214723612678875ull, 5924802009148440526ull, 3195425712104218715ull}}, {{14736064304036713295ull, 8863146367661072786ull, 2794316493008162754ull, 3994282140130273394ull}}, {{13821726208450333713ull, 10151152498215558395ull, 6358133826557489625ull, 2496426337581420871ull}}, {{12665471742135529238ull, 17300626641196835898ull, 3335981264769474127ull, 3120532921976776089ull}}, {{6608467640814635739ull, 17014097283068656969ull, 8781662599389230563ull, 3900666152470970111ull}}, {{15659507321577617097ull, 8327967792704216653ull, 12406068152259350958ull, 2437916345294356319ull}}, {{5739326096689857659ull, 1186587704025495009ull, 10895899171896800794ull, 3047395431617945399ull}}, {{11785843639289709978ull, 10706606666886644569ull, 9008187946443613088ull, 3809244289522431749ull}}, {{448623246914986880ull, 6691629166804152856ull, 7935960475740952132ull, 2380777680951519843ull}}, {{560779058643733600ull, 8364536458505191070ull, 5308264576248802261ull, 2975972101189399804ull}}, {{9924345860159442808ull, 15067356591558876741ull, 6635330720311002826ull, 3719965126486749755ull}}, {{8508559171813345707ull, 14028783888151685867ull, 1841238690980682814ull, 2324978204054218597ull}}, {{6024012946339294230ull, 8312607823334831526ull, 6913234382153241422ull, 2906222755067773246ull}}, {{16753388219778893595ull, 1167387742313763599ull, 17864915014546327586ull, 3632778443834716557ull}}, {{16330049256296229090ull, 10682606714746980307ull, 8496085712900745770ull, 4540973054793395697ull}}, {{7900437775971449230ull, 11288315215144250596ull, 16839268616631435866ull, 2838108159245872310ull}}, {{9875547219964311537ull, 4887021982075537437ull, 11825713733934519025ull, 3547635199057340388ull}}, {{16956120043382777325ull, 10720463496021809700ull, 14782142167418148781ull, 4434543998821675485ull}}, {{1374202990259460020ull, 9006132694227325015ull, 11544681863850036940ull, 2771589999263547178ull}}, {{15552811793106488737ull, 11257665867784156268ull, 5207480292957770367ull, 3464487499079433973ull}}, {{994270667673559305ull, 9460396316302807432ull, 11121036384624600863ull, 4330609373849292466ull}}, {{621419167295974566ull, 12830276725330336501ull, 11562333758817763443ull, 2706630858655807791ull}}, {{5388459977547356111ull, 11426159888235532722ull, 9841231180094816400ull, 3383288573319759739ull}}, {{15958947008788970947ull, 14282699860294415902ull, 7689852956691132596ull, 4229110716649699674ull}}, {{5362655862065718938ull, 18150059449538785747ull, 9417844116359345776ull, 2643194197906062296ull}}, {{2091633809154760769ull, 4240830238213930568ull, 11772305145449182221ull, 3303992747382577870ull}}, {{2614542261443450961ull, 9912723816194801114ull, 5492009394956701968ull, 4129990934228222338ull}}, {{6245774931829544755ull, 6195452385121750696ull, 8044191890275326634ull, 2581244333892638961ull}}, {{7807218664786930943ull, 16967687518256964178ull, 14666925881271546196ull, 3226555417365798701ull}}, {{535651294128887871ull, 2762865324111653607ull, 4498599296307269034ull, 4033194271707248377ull}}, {{7252311086471636775ull, 6338476845997171408ull, 14340839606260512906ull, 2520746419817030235ull}}, {{9065388858089545969ull, 17146468094351240068ull, 13314363489398253228ull, 3150933024771287794ull}}, {{11331736072611932461ull, 2986341044229498469ull, 7419582324893040728ull, 3938666280964109743ull}}, {{9388178054596151740ull, 1866463152643436543ull, 11554767980699232311ull, 2461666425602568589ull}}, {{7123536549817801771ull, 16168136996086459391ull, 608401920591876676ull, 3077083032003210737ull}}, {{4292734668844864310ull, 1763427171398522623ull, 5372188419167233750ull, 3846353790004013421ull}}, {{9600488195669122050ull, 14937200037406240351ull, 5663460771193215045ull, 2403971118752508388ull}}, {{7388924226159014658ull, 4836441991475636727ull, 7079325963991518807ull, 3004963898440635485ull}}, {{4624469264271380419ull, 1433866470917158005ull, 13460843473416786413ull, 3756204873050794356ull}}, {{5196136299383306714ull, 3202009553536917705ull, 17636399207740267316ull, 2347628045656746472ull}}, {{11106856392656521296ull, 4002511941921147131ull, 3598754935965782529ull, 2934535057070933091ull}}, {{9271884472393263716ull, 9614825945828821818ull, 18333501725239391873ull, 3668168821338666363ull}}, {{2366483553636803837ull, 16630218450713415177ull, 18305191138121851937ull, 4585211026673332954ull}}, {{13008267267091472159ull, 3476357504054802629ull, 16052430479753545365ull, 2865756891670833096ull}}, {{2425276028582176486ull, 8957132898495891191ull, 1618794025982380090ull, 3582196114588541371ull}}, {{16866653091009884319ull, 1973044086265088180ull, 15858550587760138825ull, 4477745143235676713ull}}, {{1318286145026401892ull, 12762367599984149873ull, 2994065089709004909ull, 2798590714522297946ull}}, {{6259543699710390269ull, 2117901444698023629ull, 12965953398991031945ull, 3498238393152872432ull}}, {{12436115643065375740ull, 7259062824299917440ull, 16207441748738789931ull, 4372797991441090540ull}}, {{7772572276915859837ull, 2231071255973754448ull, 906279056106967899ull, 2732998744650681588ull}}, {{9715715346144824797ull, 16623897125249356772ull, 1132848820133709873ull, 3416248430813351985ull}}, {{12144644182681030996ull, 6944813351279532253ull, 6027747043594525246ull, 4270310538516689981ull}}, {{9896245623389338325ull, 18175566399831871370ull, 6073184911460272230ull, 2668944086572931238ull}}, {{3146934992381897098ull, 13496085962935063405ull, 16814853176180116096ull, 3336180108216164047ull}}, {{8545354758904759276ull, 16870107453668829256ull, 16406880451797757216ull, 4170225135270205059ull}}, {{5340846724315474548ull, 10543817158543018285ull, 7948457273159904308ull, 2606390709543878162ull}}, {{11287744423821731088ull, 13179771448178772856ull, 712199554595104577ull, 3257988386929847703ull}}, {{14109680529777163860ull, 2639656254941302358ull, 14725307498526044434ull, 4072485483662309628ull}}, {{4206864312683339509ull, 6261471177765701878ull, 18426689223433553579ull, 2545303427288943517ull}}, {{14481952427708950194ull, 3215152953779739443ull, 9198303474009778262ull, 3181629284111179397ull}}, {{13490754516208799838ull, 13242313229079450112ull, 16109565360939610731ull, 3977036605138974246ull}}, {{8431721572630499899ull, 5970602758960962368ull, 5456792332159868803ull, 2485647878211858904ull}}, {{10539651965788124874ull, 2851567430273815056ull, 6820990415199836004ull, 3107059847764823630ull}}, {{13174564957235156092ull, 3564459287842268820ull, 17749610055854570813ull, 3883824809706029537ull}}, {{17457475135126748366ull, 4533630064115111964ull, 4175977257268024902ull, 2427390506066268461ull}}, {{3375099845198883841ull, 14890409616998665764ull, 9831657590012419031ull, 3034238132582835576ull}}, {{4218874806498604801ull, 14001326002820944301ull, 12289571987515523789ull, 3792797665728544470ull}}, {{4942639763275321953ull, 11056671760976784140ull, 3069296473769814464ull, 2370498541080340294ull}}, {{6178299704094152441ull, 13820839701220980175ull, 13059992629067043888ull, 2963123176350425367ull}}, {{3111188611690302647ull, 17276049626526225219ull, 11713304767906416956ull, 3703903970438031709ull}}, {{18085393946802296819ull, 1574158979724114953ull, 9626658489155204550ull, 2314939981523769818ull}}, {{8771684378220707311ull, 11191070761509919500ull, 2809951074589229879ull, 2893674976904712273ull}}, {{10964605472775884139ull, 9377152433460011471ull, 8124124861663925253ull, 3617093721130890341ull}}, {{9094070822542467270ull, 16333126560252402243ull, 14766842095507294470ull, 4521367151413612926ull}}, {{3377951254875348092ull, 5596518081730363498ull, 4617590291264671140ull, 2825854469633508079ull}}, {{13445811105448960922ull, 6995647602162954372ull, 1160301845653451021ull, 3532318087041885099ull}}, {{16807263881811201153ull, 13356245521131080869ull, 15285435362348977488ull, 4415397608802356373ull}}, {{12810382935345694673ull, 8347653450706925543ull, 11859240110681804882ull, 2759623505501472733ull}}, {{11401292650754730437ull, 1211194776528881121ull, 988992083070092391ull, 3449529381876840917ull}}, {{416557758161249334ull, 15349051525943265114ull, 5847926122265003392ull, 4311911727346051146ull}}, {{4872034617278168738ull, 9593157203714540696ull, 8266639844843015024ull, 2694944829591281966ull}}, {{6090043271597710922ull, 11991446504643175870ull, 1109927769198992972ull, 3368681036989102458ull}}, {{16835926126351914461ull, 14989308130803969837ull, 10610781748353517023ull, 4210851296236378072ull}}, {{12828296838183640490ull, 16285846609393563004ull, 6631738592720948139ull, 2631782060147736295ull}}, {{16035371047729550613ull, 15745622243314565851ull, 3677987222473797270ull, 3289727575184670369ull}}, {{15432527791234550362ull, 10458655767288431506ull, 9209170046519634492ull, 4112159468980837961ull}}, {{14257015887948981880ull, 15760031891410045499ull, 17284946325143241317ull, 2570099668113023725ull}}, {{13209583841508839446ull, 5864981808980393162ull, 7771124851146887935ull, 3212624585141279657ull}}, {{7288607765031273499ull, 2719541242798103549ull, 14325592082360997823ull, 4015780731426599571ull}}, {{6861222862358239889ull, 8617242304389896574ull, 6647652042261929687ull, 2509862957141624732ull}}, {{17799900614802575670ull, 6159866862059982813ull, 8309565052827412109ull, 3137328696427030915ull}}, {{8414817713221055875ull, 12311519596002366421ull, 5775270297606877232ull, 3921660870533788644ull}}, {{7565104079976853874ull, 7694699747501479013ull, 12832915972859074078ull, 2451038044083617902ull}}, {{14068066118398455246ull, 395002647522072958ull, 6817772929219066790ull, 3063797555104522378ull}}, {{8361710611143293250ull, 9717125346257367006ull, 17745588198378609295ull, 3829746943880652972ull}}, {{614383113537170377ull, 12990732369051936235ull, 1867620587131855001ull, 2393591839925408108ull}}, {{14603036947203626683ull, 2403357406032756581ull, 2334525733914818752ull, 2991989799906760135ull}}, {{4418738128722369642ull, 3004196757540945727ull, 16753215222675687152ull, 3739987249883450168ull}}, {{9679240358092562883ull, 1877622973463091079ull, 10470759514172304470ull, 2337492031177156355ull}}, {{7487364429188315699ull, 11570400753683639657ull, 8476763374287992683ull, 2921865038971445444ull}}, {{13970891554912782528ull, 9851314923677161667ull, 10595954217859990854ull, 3652331298714306805ull}}, {{12851928425213590256ull, 3090771617741676276ull, 17856628790752376472ull, 4565414123392883506ull}}, {{17255827302613269718ull, 1931732261088547672ull, 15772079012647623199ull, 2853383827120552191ull}}, {{3123040054557035531ull, 16249723381642848303ull, 15103412747382141094ull, 3566729783900690239ull}}, {{17738858123478458126ull, 11088782190198784570ull, 14267579915800288464ull, 4458412229875862799ull}}, {{15698472345601424233ull, 6930488868874240356ull, 15834766475016262146ull, 2786507643672414249ull}}, {{1176346358292228675ull, 17886483122947576254ull, 5958400038488163970ull, 3483134554590517812ull}}, {{10693804984720061652ull, 13134731866829694509ull, 7448000048110204963ull, 4353918193238147265ull}}, {{8989471124663732484ull, 5903364407554865116ull, 16184215076137347862ull, 2721198870773842040ull}}, {{11236838905829665605ull, 16602577546298357203ull, 1783524771462133211ull, 3401498588467302551ull}}, {{9434362613859694103ull, 16141535914445558600ull, 16064464019609830226ull, 4251873235584128188ull}}, {{5896476633662308814ull, 14700145964955862029ull, 816917975401368083ull, 2657420772240080118ull}}, {{11982281810505273922ull, 13763496437767439632ull, 10244519506106485912ull, 3321775965300100147ull}}, {{14977852263131592402ull, 17204370547209299540ull, 8193963364205719486ull, 4152219956625125184ull}}, {{137785627602469444ull, 6141045573578424309ull, 5121227102628574679ull, 2595137472890703240ull}}, {{4783918052930474708ull, 3064620948545642482ull, 6401533878285718349ull, 3243921841113379050ull}}, {{15203269603017869193ull, 8442462204109441006ull, 17225289384711923744ull, 4054902301391723812ull}}, {{4890357483458780342ull, 5276538877568400629ull, 1542433828590176532ull, 2534313938369827383ull}}, {{10724632872750863331ull, 6595673596960500786ull, 15763100341019884377ull, 3167892422962284228ull}}, {{4182419054083803356ull, 12856278014628013887ull, 1257131352565303855ull, 3959865528702855286ull}}, {{9531540936443458954ull, 14952702786783590535ull, 14620765150635478621ull, 2474915955439284553ull}}, {{7302740152126935788ull, 4855820428197324457ull, 4440898383012184565ull, 3093644944299105692ull}}, {{13740111208586057639ull, 10681461553674043475ull, 5551122978765230706ull, 3867056180373882115ull}}, {{6281726496152592073ull, 11287599489473665076ull, 1163608852514575239ull, 2416910112733676322ull}}, {{7852158120190740091ull, 9497813343414693441ull, 10677883102497994857ull, 3021137640917095402ull}}, {{14426883668665813017ull, 16483952697695754705ull, 4123981841267717763ull, 3776422051146369253ull}}, {{2099273265275051280ull, 7996627426846152739ull, 4883331660006017554ull, 2360263781966480783ull}}, {{16459149636875977812ull, 772412246702915115ull, 1492478556580134039ull, 2950329727458100979ull}}, {{15962251027667584360ull, 14800573363660807606ull, 15700656251007331260ull, 3687912159322626223ull}}, {{10729441747729704642ull, 53972630866457892ull, 15014134295331776172ull, 4609890199153282779ull}}, {{15929273129185841210ull, 9257104931146311990ull, 7077990925368666155ull, 2881181374470801737ull}}, {{10688219374627525704ull, 6959695145505502084ull, 13459174675138220598ull, 3601476718088502171ull}}, {{13360274218284407130ull, 17922990968736653413ull, 12212282325495387843ull, 4501845897610627714ull}}, {{10656014395641448408ull, 8896026346246714431ull, 12244362471862005306ull, 2813653686006642321ull}}, {{8708331976124422606ull, 1896660895953617231ull, 1470395034545342921ull, 3517067107508302902ull}}, {{6273728951728140354ull, 6982512138369409443ull, 11061365830036454459ull, 4396333884385378627ull}}, {{1615237585616393769ull, 2058227077267186950ull, 4607510634559090085ull, 2747708677740861642ull}}, {{11242419018875268019ull, 7184469865011371591ull, 14982760330053638414ull, 3434635847176077052ull}}, {{9441337755166697120ull, 18203959368118990297ull, 281706338857496401ull, 4293294808970096316ull}}, {{17430051143047655460ull, 4459945577433287079ull, 9399438498640711059ull, 2683309255606310197ull}}, {{17175877910382181421ull, 963245953364220945ull, 16360984141728276728ull, 3354136569507887746ull}}, {{7634789332695563064ull, 1204057441705276182ull, 11227858140305570102ull, 4192670711884859683ull}}, {{160057314507339011ull, 14587593956347961326ull, 4711568328477287361ull, 2620419194928037302ull}}, {{9423443679988949572ull, 4399434390152787945ull, 15112832447451385010ull, 3275523993660046627ull}}, {{16390990618413574869ull, 14722665024545760739ull, 14279354540886843358ull, 4094404992075058284ull}}, {{7938526127294790341ull, 4589979621913712558ull, 18147968624909052907ull, 2559003120046911427ull}}, {{699785622263712119ull, 1125788508964752794ull, 18073274762708928230ull, 3198753900058639284ull}}, {{10098104064684415956ull, 10630607673060716800ull, 4144849379676608671ull, 3998442375073299106ull}}, {{6311315040427759973ull, 13561658823304029856ull, 7202216880725268323ull, 2499026484420811941ull}}, {{7889143800534699966ull, 12340387510702649416ull, 13614457119333973308ull, 3123783105526014926ull}}, {{9861429750668374957ull, 15425484388378311770ull, 7794699362312690827ull, 3904728881907518658ull}}, {{10775079612595122252ull, 7335084733522750904ull, 9483373119872819671ull, 2440455551192199161ull}}, {{13468849515743902815ull, 4557169898476050726ull, 16465902418268412493ull, 3050569438990248951ull}}, {{7612689857825102711ull, 10308148391522451312ull, 15970692004408127712ull, 3813211798737811189ull}}, {{4757931161140689195ull, 6442592744701532070ull, 12287525511968773772ull, 2383257374211131993ull}}, {{15170785988280637301ull, 8053240930876915087ull, 1524348834678803503ull, 2979071717763914992ull}}, {{14351796466923408722ull, 5454865145168755955ull, 1905436043348504379ull, 3723839647204893740ull}}, {{6664029782613436500ull, 1103447706516778520ull, 10414269563947591045ull, 2327399779503058587ull}}, {{8330037228266795624ull, 5990995651573361054ull, 8406150936507100902ull, 2909249724378823234ull}}, {{1189174498478718722ull, 16712116601321477126ull, 1284316633779100319ull, 3636562155473529043ull}}, {{10709840159953174211ull, 16278459733224458503ull, 15440453847506039111ull, 4545702694341911303ull}}, {{13611179127611815738ull, 17091566360906368420ull, 16567812682332356300ull, 2841064183963694564ull}}, {{17013973909514769672ull, 2917713877423408909ull, 2263021779205893760ull, 3551330229954618206ull}}, {{7432409331611298378ull, 3647142346779261137ull, 12052149260862143008ull, 4439162787443272757ull}}, {{16174470878325531247ull, 2279463966737038210ull, 9838436297252533332ull, 2774476742152045473ull}}, {{10994716561052138250ull, 2849329958421297763ull, 16909731389993054569ull, 3468095927690056841ull}}, {{9131709682887784909ull, 8173348466454010108ull, 7302106182209154499ull, 4335119909612571052ull}}, {{14930690588659641376ull, 2802499782320062365ull, 13787188400735497370ull, 2709449943507856907ull}}, {{4828305180542388008ull, 12726496764754853765ull, 12622299482491983808ull, 3386812429384821134ull}}, {{10647067494105372914ull, 15908120955943567206ull, 6554502316260203952ull, 4233515536731026418ull}}, {{2042731165388470167ull, 9942575597464729504ull, 8708249966090015374ull, 2645947210456891511ull}}, {{2553413956735587709ull, 3204847459976136072ull, 6273626439185131314ull, 3307434013071114389ull}}, {{3191767445919484636ull, 13229431361824945898ull, 12453719067408802046ull, 4134292516338892986ull}}, {{6606540672127065802ull, 3656708582713203282ull, 12395260435557889183ull, 2583932822711808116ull}}, {{17481547877013608060ull, 18405943783673667814ull, 15494075544447361478ull, 3229916028389760145ull}}, {{12628562809412234267ull, 13784057692737308960ull, 5532536375277038136ull, 4037395035487200182ull}}, {{7892851755882646417ull, 8615036057960818100ull, 17292893289830312547ull, 2523371897179500113ull}}, {{9866064694853308021ull, 6157109054023634721ull, 7781058557005726972ull, 3154214871474375142ull}}, {{16944266886994022930ull, 7696386317529543401ull, 502951159402382907ull, 3942768589342968928ull}}, {{3672637776730182476ull, 2504398439242270674ull, 314344474626489317ull, 2464230368339355580ull}}, {{13814169257767503903ull, 7742184067480226246ull, 392930593283111646ull, 3080287960424194475ull}}, {{8044339535354604070ull, 454358047495507000ull, 14326221296886053270ull, 3850359950530243093ull}}, {{5027712209596627544ull, 14119031834966855587ull, 11259731319767477245ull, 2406474969081401933ull}}, {{1672954243568396526ull, 3813731738426405772ull, 239606094427182845ull, 3008093711351752417ull}}, {{2091192804460495657ull, 9378850691460395119ull, 4911193636461366460ull, 3760117139189690521ull}}, {{8224524530428891642ull, 15085153719017522757ull, 14598711068856823797ull, 2350073211993556575ull}}, {{14892341681463502456ull, 5021384093489739734ull, 13636702817643641843ull, 2937591514991945719ull}}, {{9392055064974602262ull, 1665044098434786764ull, 12434192503627164400ull, 3671989393739932149ull}}, {{11740068831218252828ull, 2081305123043483455ull, 1707682574251791788ull, 4589986742174915187ull}}, {{14255072047152489873ull, 10524187738756952967ull, 17208202673403227531ull, 2868741713859321991ull}}, {{13207154040513224438ull, 8543548655018803305ull, 16898567323326646510ull, 3585927142324152489ull}}, {{2673884495359366835ull, 1456063781918728324ull, 7288151098876144426ull, 4482408927905190612ull}}, {{10894549846454380080ull, 5521725882126593106ull, 13778466473652366074ull, 2801505579940744132ull}}, {{4394815271213199292ull, 16125529389513017191ull, 17223083092065457592ull, 3501881974925930165ull}}, {{881833070589111211ull, 1710167663181719873ull, 7693795809799658279ull, 4377352468657412707ull}}, {{12080360715186664267ull, 7986383817129656776ull, 2502779371911092472ull, 2735845292910882942ull}}, {{15100450893983330334ull, 9982979771412070970ull, 12351846251743641398ull, 3419806616138603677ull}}, {{9652191580624387109ull, 3255352677410312905ull, 1604749759397388036ull, 4274758270173254597ull}}, {{17561834783958711703ull, 11257967460236221373ull, 3308811608837061474ull, 2671723918858284123ull}}, {{8117235424666225917ull, 4849087288440500909ull, 17971072566328490555ull, 3339654898572855153ull}}, {{14758230299260170300ull, 1449673092123238232ull, 8628782652628449482ull, 4174568623216068942ull}}, {{9223893937037606438ull, 5517731701004411799ull, 781303139465393022ull, 2609105389510043089ull}}, {{6918181402869620143ull, 16120536663110290557ull, 5588314942759129181ull, 3261381736887553861ull}}, {{13259412772014413083ull, 6315612773605699484ull, 11597079696876299381ull, 4076727171109442326ull}}, {{17510505019363783985ull, 6253100992717256129ull, 2636488792120299209ull, 2547954481943401454ull}}, {{8053073218922566269ull, 12428062259323958066ull, 12518983027005149819ull, 3184943102429251817ull}}, {{842969486798432028ull, 10923391805727559679ull, 1813670728474273562ull, 3981178878036564772ull}}, {{7444384956890101874ull, 11438805897007112703ull, 10356916242151196784ull, 2488236798772852982ull}}, {{4693795177685239438ull, 14298507371258890879ull, 3722773265834220172ull, 3110295998466066228ull}}, {{1255557953679161393ull, 17873134214073613599ull, 4653466582292775215ull, 3887869998082582785ull}}, {{7702252748690557727ull, 18088237911437090355ull, 14437631660001454269ull, 2429918748801614240ull}}, {{5016129917435809255ull, 8775239334014199232ull, 18047039575001817837ull, 3037398436002017800ull}}, {{6270162396794761568ull, 15580735185945136944ull, 4112055395042720680ull, 3796748045002522251ull}}, {{3918851497996725980ull, 9737959491215710590ull, 264191612688006473ull, 2372967528126576407ull}}, {{14121936409350683283ull, 16784135382447026141ull, 14165297571142171803ull, 2966209410158220508ull}}, {{3817362456406190392ull, 16368483209631394773ull, 17706621963927714754ull, 3707761762697775635ull}}, {{4691694544467562947ull, 14841988024447009637ull, 8760795718241127769ull, 2317351101686109772ull}}, {{10476304199011841588ull, 4717426975276598334ull, 10950994647801409712ull, 2896688877107637215ull}}, {{3872008211910026177ull, 5896783719095747918ull, 9077057291324374236ull, 3620861096384546519ull}}, {{14063382301742308529ull, 7370979648869684897ull, 6734635595728079891ull, 4526076370480683149ull}}, {{1872084910947860975ull, 2301019271329859109ull, 6514990256543743884ull, 2828797731550426968ull}}, {{6951792157112214122ull, 2876274089162323886ull, 8143737820679679855ull, 3535997164438033710ull}}, {{17913112233245043461ull, 17430400666735068569ull, 956300238994824010ull, 4419996455547542138ull}}, {{4278166118137070307ull, 15505686435136805760ull, 5209373667799152910ull, 2762497784717213836ull}}, {{5347707647671337884ull, 10158736007066231392ull, 6511717084748941138ull, 3453122230896517295ull}}, {{6684634559589172354ull, 3475047971978013432ull, 3527960337508788519ull, 4316402788620646619ull}}, {{4177896599743232722ull, 9089434010127340251ull, 18345876275438850488ull, 2697751742887904136ull}}, {{610684731251652998ull, 11361792512659175314ull, 4485601270589011494ull, 3372189678609880171ull}}, {{9986727950919342055ull, 4978868603969193334ull, 995315569808876464ull, 4215237098262350214ull}}, {{1630018950897200881ull, 3111792877480745834ull, 14457130286412711502ull, 2634523186413968883ull}}, {{11260895725476276909ull, 13113113133705708100ull, 13459726839588501473ull, 3293153983017461104ull}}, {{14076119656845346136ull, 2556333361849971413ull, 16824658549485626842ull, 4116442478771826380ull}}, {{11103417794742035287ull, 6209394369583620037ull, 1292039556573740968ull, 2572776549232391488ull}}, {{44214188145380397ull, 7761742961979525047ull, 1615049445717176210ull, 3215970686540489360ull}}, {{13890325790463889208ull, 478806665619630500ull, 2018811807146470263ull, 4019963358175611700ull}}, {{17904825655894706563ull, 7216783193653350918ull, 10485129416321319722ull, 2512477098859757312ull}}, {{13157660033013607396ull, 18244351028921464456ull, 13106411770401649652ull, 3140596373574696640ull}}, {{16447075041267009245ull, 4358694712442278954ull, 16383014713002062066ull, 3925745466968370800ull}}, {{14891107919219268682ull, 7335870213703812250ull, 10239384195626288791ull, 2453590916855231750ull}}, {{9390512862169310044ull, 4558151748702377409ull, 3575858207678085181ull, 3066988646069039688ull}}, {{16349827096139025459ull, 10309375704305359665ull, 4469822759597606476ull, 3833735807586299610ull}}, {{3301112907445809056ull, 15666731852045625599ull, 7405325243175891951ull, 2396084879741437256ull}}, {{17961449189589425032ull, 14971728796629644094ull, 9256656553969864939ull, 2995106099676796570ull}}, {{13228439450132005482ull, 14102974977359667214ull, 2347448655607555366ull, 3743882624595995713ull}}, {{3656088637905115523ull, 4202673342422404105ull, 12996370455823191864ull, 2339926640372497320ull}}, {{9181796815808782307ull, 5253341678028005131ull, 16245463069778989830ull, 2924908300465621650ull}}, {{6865560001333589980ull, 15790049134389782222ull, 11083456800368961479ull, 3656135375582027063ull}}, {{17805322038521763283ull, 15125875399559839873ull, 9242634982033813945ull, 4570169219477533829ull}}, {{4210797246435020196ull, 2536143097083818065ull, 8082489872984827668ull, 2856355762173458643ull}}, {{9875182576471163149ull, 3170178871354772581ull, 5491426322803646681ull, 3570444702716823304ull}}, {{16955664239016341840ull, 8574409607620853630ull, 6864282903504558351ull, 4463055878396029130ull}}, {{5985604130957825746ull, 12276535032404115375ull, 8901862833117736873ull, 2789409923997518206ull}}, {{2870319145269894278ull, 1510610735222980507ull, 1903956504542395284ull, 3486762404996897758ull}}, {{17422956986869531560ull, 1888263419028725633ull, 11603317667532769913ull, 4358453006246122197ull}}, {{3971819089152375369ull, 12709379682961423281ull, 9557916551421675147ull, 2724033128903826373ull}}, {{9576459879867857115ull, 11275038585274391197ull, 16559081707704481838ull, 3405041411129782966ull}}, {{16582260868262209298ull, 4870426194738213188ull, 11475480097775826490ull, 4256301763912228708ull}}, {{1140541005809105003ull, 7655702390138771147ull, 16395547097964667364ull, 2660188602445142942ull}}, {{15260734312543544966ull, 9569627987673463933ull, 11271061835601058397ull, 3325235753056428678ull}}, {{5240859835397267496ull, 16573721003019217821ull, 4865455257646547188ull, 4156544691320535848ull}}, {{5581380406336986137ull, 1135203590032235330ull, 3040909536029091993ull, 2597840432075334905ull}}, {{16200097544776008479ull, 6030690505967682066ull, 8412822938463752895ull, 3247300540094168631ull}}, {{11026749894115234791ull, 2926677114032214679ull, 5904342654652303215ull, 4059125675117710789ull}}, {{13809247711463103600ull, 8746702223911216030ull, 5996057168371383461ull, 2536953546948569243ull}}, {{8038187602474103692ull, 15545063798316407942ull, 2883385442036841422ull, 3171191933685711554ull}}, {{824362466237853807ull, 10207957711040734120ull, 12827603839400827586ull, 3963989917107139442ull}}, {{515226541398658630ull, 10991659587827846729ull, 12628938418052905145ull, 2477493698191962151ull}}, {{5255719195175711191ull, 18351260503212196315ull, 11174487004138743527ull, 3096867122739952689ull}}, {{1957962975542251085ull, 18327389610587857490ull, 133050699891265697ull, 3871083903424940862ull}}, {{5835412878141294832ull, 4537089478976329075ull, 13918214742714204773ull, 2419427439640588038ull}}, {{2682580079249230636ull, 10283047867147799248ull, 8174396391537980158ull, 3024284299550735048ull}}, {{3353225099061538295ull, 3630437797079973252ull, 10217995489422475198ull, 3780355374438418810ull}}, {{11319137723768237242ull, 16104081678457146994ull, 10997933199316434902ull, 2362722109024011756ull}}, {{4925550117855520745ull, 10906730061216657935ull, 13747416499145543628ull, 2953402636280014695ull}}, {{1545251628892013027ull, 13633412576520822419ull, 12572584605504541631ull, 3691753295350018369ull}}, {{17106683332553365806ull, 15438411887966595867ull, 940336350799256663ull, 2307345809593761481ull}}, {{16771668147264319354ull, 14686328841530856930ull, 5787106456926458733ull, 2884182261992201851ull}}, {{11741213147225623384ull, 4522852996631407451ull, 2622197052730685513ull, 3605227827490252314ull}}, {{10064830415604641326ull, 10265252264216647218ull, 12501118352768132699ull, 4506534784362815392ull}}, {{10902205028180288733ull, 4109939655921710559ull, 7813198970480082937ull, 2816584240226759620ull}}, {{9016070266797973012ull, 9749110588329526103ull, 9766498713100103671ull, 3520730300283449525ull}}, {{6658401815070078361ull, 7574702216984519725ull, 16819809409802517493ull, 4400912875354311906ull}}, {{6467344143632492928ull, 7040031894829018780ull, 15124066899553961337ull, 2750570547096444941ull}}, {{8084180179540616159ull, 13411725886963661379ull, 5070025569160287959ull, 3438213183870556177ull}}, {{5493539205998382295ull, 12152971340277188820ull, 10949217979877747853ull, 4297766479838195221ull}}, {{12656834040603764743ull, 9901450096886936964ull, 9149104246637286360ull, 2686104049898872013ull}}, {{15821042550754705928ull, 12376812621108671205ull, 16048066326723995854ull, 3357630062373590016ull}}, {{5941245133161218698ull, 6247643739531063199ull, 1613338834695443202ull, 4197037577966987521ull}}, {{10630807235866843542ull, 8516463355634302403ull, 12537551817753121761ull, 2623148486229367200ull}}, {{8676823026406166524ull, 15257265212970265908ull, 15671939772191402201ull, 3278935607786709000ull}}, {{10846028783007708155ull, 5236523460930668673ull, 1143180641529701136ull, 4098669509733386251ull}}, {{18307983035448287357ull, 3272827163081667920ull, 16855388965451920874ull, 2561668443583366406ull}}, {{4438234720600807580ull, 13314405990706860709ull, 11845864169960125284ull, 3202085554479208008ull}}, {{10159479419178397379ull, 16643007488383575886ull, 14807330212450156605ull, 4002606943099010010ull}}, {{1737988618559110458ull, 12707722689453428881ull, 13866267401208735782ull, 2501629339436881256ull}}, {{6784171791626275976ull, 6661281324962010293ull, 17332834251510919728ull, 3127036674296101570ull}}, {{13091900757960232874ull, 8326601656202512866ull, 12442670777533873852ull, 3908795842870126963ull}}, {{12794123992152533451ull, 14427498071981346349ull, 5470826226744977205ull, 2442997401793829352ull}}, {{2157596934908503101ull, 4199314534694519225ull, 6838532783431221507ull, 3053746752242286690ull}}, {{7308682187063016780ull, 637457149940761127ull, 17771538016143802692ull, 3817183440302858362ull}}, {{11485455394555467344ull, 9621782755567751512ull, 15718897278517264586ull, 2385739650189286476ull}}, {{14356819243194334180ull, 2803856407604913582ull, 1201877524437029117ull, 2982174562736608096ull}}, {{8722652017138141917ull, 8116506527933529882ull, 1502346905546286396ull, 3727718203420760120ull}}, {{10063343529138726602ull, 14296188616813231984ull, 938966815966428997ull, 2329823877137975075ull}}, {{12579179411423408252ull, 4035177715734376268ull, 15008766575240199959ull, 2912279846422468843ull}}, {{15723974264279260315ull, 432286126240582431ull, 14149272200622862045ull, 3640349808028086054ull}}, {{15043281811921687490ull, 5152043676228115943ull, 8463218213923801748ull, 4550437260035107568ull}}, {{16319580160092136537ull, 12443399334497348272ull, 5289511383702376092ull, 2844023287521942230ull}}, {{1952731126405619056ull, 15554249168121685341ull, 15835261266482745923ull, 3555029109402427787ull}}, {{7052599926434411724ull, 14831125441724718772ull, 15182390564676044500ull, 4443786386753034734ull}}, {{13631246990876283135ull, 46081364223173424ull, 4877308084495139909ull, 2777366491720646709ull}}, {{17039058738595353919ull, 4669287723706354684ull, 10708321124046312790ull, 3471708114650808386ull}}, {{2852079349534640783ull, 15059981691487719164ull, 4162029368203115179ull, 4339635143313510483ull}}, {{11005921630313926297ull, 7106645547966130525ull, 295425345913253035ull, 2712271964570944052ull}}, {{18369088056319795776ull, 4271620916530275252ull, 369281682391566294ull, 3390339955713680065ull}}, {{4514615996690193103ull, 14562898182517619874ull, 5073288121416845771ull, 4237924944642100081ull}}, {{7433321016358758594ull, 6795968354859818469ull, 14700020121953998367ull, 2648703090401312550ull}}, {{13903337288875836146ull, 3883274425147385182ull, 9151653115587722151ull, 3310878863001640688ull}}, {{8155799574240019375ull, 242407013006843574ull, 11439566394484652689ull, 4138598578752050860ull}}, {{485688715472624205ull, 11680719429197746994ull, 16373101033407683738ull, 2586624111720031787ull}}, {{9830482931195556065ull, 5377527249642407934ull, 15854690273332216769ull, 3233280139650039734ull}}, {{3064731627139669273ull, 11333595080480397822ull, 10594990804810495153ull, 4041600174562549668ull}}, {{15750515322244457008ull, 165967897659166782ull, 15845241289861335279ull, 2526000109101593542ull}}, {{10464772115950795451ull, 14042517927356122190ull, 10583179575471893290ull, 3157500136376991928ull}}, {{3857593108083718506ull, 8329775372340376930ull, 13228974469339866613ull, 3946875170471239910ull}}, {{7022681710979711970ull, 7511952616926429533ull, 3656423024910028729ull, 2466796981544524944ull}}, {{13390038157152027867ull, 14001626789585424820ull, 4570528781137535911ull, 3083496226930656180ull}}, {{16737547696440034834ull, 12890347468554393121ull, 5713160976421919889ull, 3854370283663320225ull}}, {{3543438282633939915ull, 1138938140205413845ull, 15099940656332169691ull, 2408981427289575140ull}}, {{9040983871719812798ull, 15258730730538931018ull, 428181746705660497ull, 3011226784111968926ull}}, {{2077857802794990189ull, 5238355357891500061ull, 9758599220236851430ull, 3764033480139961157ull}}, {{3604504135960562820ull, 17109030153964351250ull, 8404967521861726095ull, 2352520925087475723ull}}, {{13729002206805479333ull, 16774601674028051158ull, 5894523383899769715ull, 2940651156359344654ull}}, {{7937880721652073359ull, 16356566074107676044ull, 16591526266729487952ull, 3675813945449180817ull}}, {{9922350902065091698ull, 1998963518925043439ull, 6904349778129696229ull, 4594767431811476022ull}}, {{13118998341431764167ull, 3555195208541846101ull, 18150276666613223855ull, 2871729644882172513ull}}, {{2563689871507541497ull, 18279052065959471339ull, 8852787777984366106ull, 3589662056102715642ull}}, {{17039670394666590583ull, 13625443045594563365ull, 1842612685625681825ull, 4487077570128394553ull}}, {{12955637005880313067ull, 1598372875855520247ull, 12680847974584520901ull, 2804423481330246595ull}}, {{11582860238923003429ull, 6609652113246788213ull, 11239373949803263222ull, 3505529351662808244ull}}, {{643517243371590575ull, 17485437178413261075ull, 14049217437254079027ull, 4381911689578510305ull}}, {{16543099341603101773ull, 8622555227294594219ull, 1863231870642717536ull, 2738694805986568941ull}}, {{16067188158576489313ull, 10778194034118242774ull, 6940725856730784824ull, 3423368507483211176ull}}, {{10860613161365835833ull, 13472742542647803468ull, 8675907320913481030ull, 4279210634354013970ull}}, {{16011255262708423204ull, 3808778070727489263ull, 10034128093998313548ull, 2674506646471258731ull}}, {{15402383059958141100ull, 4760972588409361579ull, 7930974099070504031ull, 3343133308089073414ull}}, {{14641292806520288471ull, 1339529717084314070ull, 690345586983354231ull, 4178916635111341768ull}}, {{4539121985647792391ull, 7754735100818778150ull, 431465991864596394ull, 2611822896944588605ull}}, {{14897274518914516296ull, 470046839168696879ull, 5151018508258133397ull, 3264778621180735756ull}}, {{14009907130215757466ull, 5199244567388259003ull, 6438773135322666746ull, 4080973276475919695ull}}, {{6450348947171154465ull, 7861213873045049781ull, 10941762237217748572ull, 2550608297797449809ull}}, {{12674622202391330985ull, 9826517341306312226ull, 18288888814949573619ull, 3188260372246812261ull}}, {{6619905716134387923ull, 7671460658205502379ull, 9026052963404803312ull, 3985325465308515327ull}}, {{1831598063370298500ull, 4794662911378438987ull, 12558812129769083926ull, 2490828415817822079ull}}, {{16124555634495036837ull, 15216700676077824541ull, 11086829143783967003ull, 3113535519772277599ull}}, {{6320636487836632334ull, 14409189826669892773ull, 9246850411302570850ull, 3891919399715346999ull}}, {{6256240814111589161ull, 13617429660096070887ull, 12696810534705188637ull, 2432449624822091874ull}}, {{3208614999212098547ull, 3186729019837924897ull, 6647641131526709989ull, 3040562031027614843ull}}, {{8622454767442511087ull, 8595097293224794025ull, 3697865395980999582ull, 3800702538784518554ull}}, {{16918249275720039190ull, 760249789838108361ull, 6922851890915512643ull, 2375439086740324096ull}}, {{7312753539367885275ull, 14785370292579799164ull, 8653564863644390803ull, 2969298858425405120ull}}, {{9140941924209856594ull, 13870026847297361051ull, 10816956079555488504ull, 3711623573031756400ull}}, {{3407245693417466419ull, 8668766779560850657ull, 6760597549722180315ull, 2319764733144847750ull}}, {{8870743135199220928ull, 6224272456023675417ull, 17674118974007501202ull, 2899705916431059687ull}}, {{15700114937426414064ull, 17003712606884370079ull, 17480962699081988598ull, 3624632395538824609ull}}, {{15013457653355629676ull, 12031268721750686791ull, 8016145318570322036ull, 4530790494423530762ull}}, {{16300940060988350403ull, 16742914987948955052ull, 9621776842533839176ull, 2831744059014706726ull}}, {{1929431002525886388ull, 2481899661226642200ull, 2803849016312523163ull, 3539680073768383408ull}}, {{2411788753157357985ull, 16937432631815466462ull, 3504811270390653953ull, 4424600092210479260ull}}, {{15342426026005512453ull, 3668366367243584682ull, 11413879080848934529ull, 2765375057631549537ull}}, {{9954660495652114758ull, 9197143977481868757ull, 432290795779004449ull, 3456718822039436922ull}}, {{17055011637992531351ull, 16108115990279723850ull, 9763735531578531369ull, 4320898527549296152ull}}, {{15271068292172719999ull, 3150043466283745550ull, 6102334707236582106ull, 2700561579718310095ull}}, {{9865463328361124190ull, 13160926369709457746ull, 3016232365618339728ull, 3375701974647887619ull}}, {{3108457123596629430ull, 16451157962136822183ull, 17605348512305088372ull, 4219627468309859523ull}}, {{8860314729888975250ull, 1058601689480738056ull, 8697499810976986281ull, 2637267167693662202ull}}, {{11075393412361219062ull, 5934938130278310474ull, 1648502726866457043ull, 3296583959617077753ull}}, {{4620869728596748020ull, 2806986644420500189ull, 6672314427010459208ull, 4120729949521347191ull}}, {{5193886589586661464ull, 1754366652762812618ull, 11087725544522618861ull, 2575456218450841994ull}}, {{15715730273838102638ull, 6804644334380903676ull, 4636284893798497768ull, 3219320273063552493ull}}, {{1197918768588076682ull, 8505805417976129596ull, 10407042135675510114ull, 4024150341329440616ull}}, {{9972071267222323734ull, 9927814404662468901ull, 6504401334797193821ull, 2515093963330900385ull}}, {{17076775102455292572ull, 17021454024255474030ull, 12742187686923880180ull, 3143867454163625481ull}}, {{12122596841214339907ull, 2830073456609790922ull, 2092676553372686514ull, 3929834317704531852ull}}, {{12188309044186350346ull, 6380481928808507230ull, 10531294882712704879ull, 2456146448565332407ull}}, {{6012014268378162124ull, 3363916392583246134ull, 8552432584963493195ull, 3070183060706665509ull}}, {{16738389872327478463ull, 18039953546011221379ull, 15302226749631754397ull, 3837728825883331886ull}}, {{8155650660990980088ull, 13580813975470707314ull, 4952205700092458594ull, 2398580516177082429ull}}, {{971191289383949301ull, 7752645432483608335ull, 10801943143542961147ull, 2998225645221353036ull}}, {{15049047167012100339ull, 5079120772177122514ull, 13502428929428701434ull, 3747782056526691295ull}}, {{14017340497809950616ull, 7786136501038089475ull, 15356547108534020252ull, 2342363785329182059ull}}, {{12909989603835050366ull, 9732670626297611844ull, 14583997867240137411ull, 2927954731661477574ull}}, {{16137487004793812957ull, 7554152264444626901ull, 9006625297195395956ull, 3659943414576846968ull}}, {{6336800700710102484ull, 9442690330555783627ull, 11258281621494244945ull, 4574929268221058710ull}}, {{1654657428730120101ull, 17430896502665834527ull, 2424739995006515186ull, 2859330792638161694ull}}, {{15903379841194813838ull, 12565248591477517350ull, 12254297030612919791ull, 3574163490797702117ull}}, {{10655852764638741489ull, 11094874720919508784ull, 1482813232983986027ull, 4467704363497127647ull}}, {{6659907977899213431ull, 4628453691360999038ull, 7844287298256073123ull, 2792315227185704779ull}}, {{17548257009228792597ull, 1173881095773860893ull, 5193673104392703500ull, 3490394033982130974ull}}, {{8100263206253827034ull, 1467351369717326117ull, 15715463417345655183ull, 4362992542477663717ull}}, {{7368507513122335848ull, 7834623633714410679ull, 12128007645054728441ull, 2726870339048539823ull}}, {{4598948372975531906ull, 14404965560570401253ull, 10548323537891022647ull, 3408587923810674779ull}}, {{10360371484646802786ull, 13394520932285613662ull, 8573718403936390405ull, 4260734904763343474ull}}, {{1863546159476863838ull, 10677418591892202491ull, 9970260020887631907ull, 2662959315477089671ull}}, {{16164490754628243509ull, 8735087221437865209ull, 7851139007682151980ull, 3328699144346362089ull}}, {{6370555388003140674ull, 10918859026797331512ull, 14425609778030077879ull, 4160873930432952611ull}}, {{3981597117501962922ull, 13741815919389414051ull, 6710163102055104722ull, 2600546206520595382ull}}, {{365310378450065748ull, 7953897862381991756ull, 17611075914423656711ull, 3250682758150744227ull}}, {{456637973062582185ull, 5330686309550101791ull, 17402158874602182985ull, 4063353447688430284ull}}, {{7202927760805195722ull, 14860893989537283379ull, 1652977259771588557ull, 2539595904805268928ull}}, {{4391973682579106748ull, 4741059431639440512ull, 2066221574714485697ull, 3174494881006586160ull}}, {{5489967103223883435ull, 10538010307976688544ull, 2582776968393107121ull, 3968118601258232700ull}}, {{3431229439514927147ull, 18115471488553900100ull, 10837607642100467758ull, 2480074125786395437ull}}, {{4289036799393658933ull, 13420967323837599317ull, 18158695571052972602ull, 3100092657232994296ull}}, {{9972982017669461571ull, 7552837117942223338ull, 4251625390106664137ull, 3875115821541242871ull}}, {{10844799779470801386ull, 16249738244782359346ull, 9574794896457746941ull, 2421947388463276794ull}}, {{4332627687483725924ull, 6477114750695785471ull, 2745121583717407869ull, 3027434235579095993ull}}, {{804098590927269501ull, 12708079456797119743ull, 8043087998074147740ull, 3784292794473869991ull}}, {{7420090646970625294ull, 17165921697352975647ull, 11944459026437424193ull, 2365182996546168744ull}}, {{4663427290285893714ull, 7622344066409055847ull, 14930573783046780242ull, 2956478745682710930ull}}, {{1217598094429979238ull, 304558046156544001ull, 9439845191953699495ull, 3695598432103388663ull}}, {{12290213855087206784ull, 7107877806488921856ull, 12817432272612144040ull, 2309749020064617914ull}}, {{15362767318859008480ull, 8884847258111152320ull, 6798418303910404242ull, 2887186275080772393ull}}, {{756715074864208984ull, 1882687035784164593ull, 13109708898315393207ull, 3608982843850965491ull}}, {{5557579862007649134ull, 16188416850012369453ull, 11775450104466853604ull, 4511228554813706864ull}}, {{5779330422968474661ull, 894388494402955100ull, 7359656315291783503ull, 2819517846758566790ull}}, {{7224163028710593326ull, 14953043673285857587ull, 18422942430969505186ull, 3524397308448208487ull}}, {{4418517767460853753ull, 9467932554752546176ull, 18416992020284493579ull, 4405496635560260609ull}}, {{2761573604663033596ull, 3611614837506647408ull, 4593090985036726631ull, 2753435397225162881ull}}, {{3451967005828791995ull, 18349576602165472972ull, 10353049749723296192ull, 3441794246531453601ull}}, {{4314958757285989993ull, 4490226678997289599ull, 17552998205581508145ull, 4302242808164317001ull}}, {{9614378250944825602ull, 14335606720441775759ull, 4053094850847360734ull, 2688901755102698126ull}}, {{7406286795253644098ull, 8696136363697443891ull, 14289740600413976726ull, 3361127193878372657ull}}, {{4646172475639667219ull, 1646798417767029056ull, 4027117695235307196ull, 4201408992347965822ull}}, {{2903857797274792012ull, 10252621047959168968ull, 16352006614804230709ull, 2625880620217478638ull}}, {{3629822246593490015ull, 17427462328376349114ull, 11216636231650512578ull, 3282350775271848298ull}}, {{13760649845096638326ull, 12560955873615660584ull, 4797423252708364915ull, 4102938469089810373ull}}, {{8600406153185398954ull, 5544754411796093913ull, 5304232542156422024ull, 2564336543181131483ull}}, {{15362193709909136597ull, 6930943014745117391ull, 2018604659268139626ull, 3205420678976414354ull}}, {{14591056118959032842ull, 17887050805286172547ull, 11746627860939950340ull, 4006775848720517942ull}}, {{6813567065135701574ull, 1956034716449082034ull, 2729956394660081059ull, 2504234905450323714ull}}, {{17740330868274402776ull, 16280101450843516254ull, 12635817530179877131ull, 3130293631812904642ull}}, {{12952041548488227661ull, 15738440795127007414ull, 6571399875870070606ull, 3912867039766130803ull}}, {{3483339949377754385ull, 5224839478526991730ull, 1801281913205100177ull, 2445541899853831752ull}}, {{13577546973576968789ull, 11142735366586127566ull, 2251602391506375221ull, 3056927374817289690ull}}, {{7748561680116435178ull, 93361152950495746ull, 12037875026237744835ull, 3821159218521612112ull}}, {{9454537068500159890ull, 16199251785089917505ull, 7523671891398590521ull, 2388224511576007570ull}}, {{16429857354052587767ull, 6414006676080233169ull, 181217827393462344ull, 2985280639470009463ull}}, {{6702263637283570996ull, 8017508345100291462ull, 14061580339523991642ull, 3731600799337511828ull}}, {{18023972828584395585ull, 9622628734115070067ull, 18011859749057270584ull, 2332250499585944892ull}}, {{17918280017303106577ull, 12028285917643837584ull, 4068080612612036614ull, 2915313124482431116ull}}, {{3951105947919331605ull, 5811985360200021173ull, 5085100765765045768ull, 3644141405603038895ull}}, {{9550568453326552410ull, 7264981700250026466ull, 1744689938778919306ull, 4555176757003798619ull}}, {{10580791301756483160ull, 9152299581083654445ull, 17231332276232682230ull, 2846985473127374136ull}}, {{17837675145622991854ull, 2217002439499792248ull, 3092421271581301172ull, 3558731841409217671ull}}, {{3850349858319188202ull, 2771253049374740311ull, 17700584644758790177ull, 4448414801761522088ull}}, {{9323997689090574482ull, 13261248201927682454ull, 11062865402974243860ull, 2780259251100951305ull}}, {{2431625074508442295ull, 16576560252409603068ull, 18440267772145192729ull, 3475324063876189131ull}}, {{3039531343135552868ull, 6885642260229840123ull, 18438648696754103008ull, 4344155079845236414ull}}, {{18040608153955578207ull, 4303526412643650076ull, 6912469417043926476ull, 2715096924903272759ull}}, {{4104016118734921143ull, 5379408015804562596ull, 4028900752877520191ull, 3393871156129090949ull}}, {{5130020148418651428ull, 2112574001328315341ull, 9647811959524288143ull, 4242338945161363686ull}}, {{5512105601975351095ull, 8237887778471278944ull, 1418196456275292185ull, 2651461840725852304ull}}, {{6890132002469188868ull, 14909045741516486584ull, 1772745570344115231ull, 3314327300907315380ull}}, {{8612665003086486085ull, 14024621158468220326ull, 2215931962930144039ull, 4142909126134144225ull}}, {{771229608501665900ull, 15682917251683719560ull, 12914172522899809784ull, 2589318203833840140ull}}, {{964037010627082374ull, 1156902490895097834ull, 16142715653624762231ull, 3236647754792300175ull}}, {{10428418300138628776ull, 15281186168901036004ull, 15566708548603564884ull, 4045809693490375219ull}}, {{15741133474441418793ull, 327369318708371694ull, 7423349833663534101ull, 2528631058431484512ull}}, {{10453044806196997683ull, 5020897666812852522ull, 9279187292079417626ull, 3160788823039355640ull}}, {{3842933970891471296ull, 15499494120370841461ull, 11598984115099272032ull, 3950986028799194550ull}}, {{4707676741020863512ull, 9687183825231775913ull, 2637679053509657116ull, 2469366267999496594ull}}, {{10496281944703467294ull, 12108979781539719891ull, 12520470853741847203ull, 3086707834999370742ull}}, {{8508666412451946213ull, 10524538708497261960ull, 6427216530322533196ull, 3858384793749213428ull}}, {{5317916507782466383ull, 15801208729665564533ull, 13240382368306359055ull, 2411490496093258392ull}}, {{11259081653155470883ull, 15139824893654567762ull, 16550477960382948819ull, 3014363120116572990ull}}, {{4850480029589562796ull, 14313095098640821799ull, 11464725413623910216ull, 3767953900145716238ull}}, {{9949079046134558604ull, 8945684436650513624ull, 2553767365087555981ull, 2354971187591072649ull}}, {{12436348807668198254ull, 15793791564240529934ull, 7803895224786832880ull, 2943713984488840811ull}}, {{6322063972730472010ull, 1295495381591110802ull, 5143183012556153197ull, 3679642480611051014ull}}, {{17125952002767865820ull, 6231055245416276406ull, 15652350802549967304ull, 4599553100763813767ull}}, {{6092033983302528234ull, 3894409528385172754ull, 16700248279234811421ull, 2874720687977383604ull}}, {{16838414515982936100ull, 9479697928908853846ull, 2428566275333962660ull, 3593400859971729506ull}}, {{11824646108123894317ull, 11849622411136067308ull, 12259079881022229133ull, 4491751074964661882ull}}, {{16613775854432209756ull, 9711857016173736019ull, 12273610944066281112ull, 2807344421852913676ull}}, {{16155533799612874291ull, 12139821270217170024ull, 15342013680082851390ull, 3509180527316142095ull}}, {{1747673175806541248ull, 5951404550916686723ull, 14565831081676176334ull, 4386475659145177619ull}}, {{17233196799374945944ull, 17554685899605092913ull, 6797801416833916256ull, 2741547286965736012ull}}, {{7706437943936518718ull, 3496613300796814526ull, 8497251771042395321ull, 3426934108707170015ull}}, {{409675393065872590ull, 8982452644423406062ull, 6009878695375606247ull, 4283667635883962519ull}}, {{14091105175948334081ull, 12531561930405710644ull, 10673703212250835760ull, 2677292272427476574ull}}, {{17613881469935417601ull, 15664452413007138305ull, 4118756978458768892ull, 3346615340534345718ull}}, {{8182293782137108289ull, 1133821442549371266ull, 14371818259928236924ull, 4183269175667932147ull}}, {{9725619632263080585ull, 9932010438448132849ull, 6676543403241454125ull, 2614543234792457592ull}}, {{16768710558756238635ull, 17026699066487553965ull, 8345679254051817656ull, 3268179043490571990ull}}, {{7125830143163134581ull, 2836629759399890841ull, 1208727030709996263ull, 4085223804363214988ull}}, {{15982858885545428873ull, 8690422627266013631ull, 9978826431048523472ull, 2553264877727009367ull}}, {{15366887588504398188ull, 10863028284082517039ull, 7861847020383266436ull, 3191581097158761709ull}}, {{14596923467203109831ull, 13578785355103146299ull, 14438994793906470949ull, 3989476371448452136ull}}, {{6817234157788249692ull, 10792583856153160389ull, 9024371746191544343ull, 2493422732155282585ull}}, {{13133228715662700019ull, 8879043801764062582ull, 15892150701166818333ull, 3116778415194103231ull}}, {{7193163857723599216ull, 15710490770632466132ull, 15253502358031135012ull, 3895973018992629039ull}}, {{13719099447932025318ull, 595684694790515524ull, 16450968001410541239ull, 2434983136870393149ull}}, {{17148874309915031648ull, 14579663923770308117ull, 6728651946481012836ull, 3043728921087991437ull}}, {{7601034832111625847ull, 18224579904712885147ull, 13022500951528653949ull, 3804661151359989296ull}}, {{2444803760856072203ull, 13696205449659247169ull, 8139063094705408718ull, 2377913219599993310ull}}, {{7667690719497478157ull, 7896884775219283153ull, 950456831526985090ull, 2972391524499991638ull}}, {{14196299417799235600ull, 647733932169328133ull, 10411443076263507171ull, 3715489405624989547ull}}, {{11178530145338216202ull, 16545734772101687747ull, 4201308913450998029ull, 2322180878515618467ull}}, {{9361476663245382349ull, 6847110409844945972ull, 639950123386359633ull, 2902726098144523084ull}}, {{11701845829056727936ull, 13170574030733570369ull, 799937654232949541ull, 3628407622680653855ull}}, {{792249231038746208ull, 2628159483134799250ull, 14834980123073350639ull, 4535509528350817318ull}}, {{5106841787826604284ull, 8560128704600331387ull, 4660176558493456245ull, 2834693455219260824ull}}, {{1771866216355867451ull, 15311846899177802138ull, 5825220698116820306ull, 3543366819024076030ull}}, {{11438204807299610122ull, 9916436587117476864ull, 16504897909500801191ull, 4429208523780095037ull}}, {{7148878004562256326ull, 13115301894589504896ull, 12621404202651694696ull, 2768255327362559398ull}}, {{8936097505702820408ull, 16394127368236881120ull, 6553383216459842562ull, 3460319159203199248ull}}, {{11170121882128525510ull, 11269287173441325592ull, 8191729020574803203ull, 4325398949003999060ull}}, {{6981326176330328444ull, 4737461474187134543ull, 14343202674714027810ull, 2703374343127499412ull}}, {{4114971701985522650ull, 15145198879588693987ull, 17929003343392534762ull, 3379217928909374265ull}}, {{532028609054515409ull, 9708126562631091676ull, 8576196123958504741ull, 4224022411136717832ull}}, {{9555889917513847939ull, 8373422110858126249ull, 5360122577474065463ull, 2640014006960448645ull}}, {{16556548415319697827ull, 5855091620145269907ull, 11311839240269969733ull, 3300017508700560806ull}}, {{16083999500722234380ull, 11930550543608975288ull, 4916427013482686358ull, 4125021885875701008ull}}, {{10052499687951396488ull, 2844908071328221651ull, 3072766883426678974ull, 2578138678672313130ull}}, {{7953938591511857706ull, 12779507126015052872ull, 13064330641138124525ull, 3222673348340391412ull}}, {{9942423239389822132ull, 2139325852236652378ull, 16330413301422655657ull, 4028341685425489265ull}}, {{10825700543046026737ull, 12866293703716377496ull, 3288979285748077929ull, 2517713553390930791ull}}, {{13532125678807533421ull, 2247809074363308158ull, 17946282162467261124ull, 3147141941738663488ull}}, {{7691785061654640968ull, 2809761342954135198ull, 3986108629374524789ull, 3933927427173329361ull}}, {{195679645106762701ull, 4061943848560028451ull, 14020532939427547753ull, 2458704641983330850ull}}, {{14079657611665617088ull, 9689115829127423467ull, 8302294137429658883ull, 3073380802479163563ull}}, {{12987885996154633456ull, 7499708767981891430ull, 5766181653359685700ull, 3841726003098954454ull}}, {{3505742729169258006ull, 13910690016843457952ull, 17438921588631967274ull, 2401078751936846533ull}}, {{4382178411461572508ull, 8164990484199546632ull, 7963593930507795381ull, 3001348439921058167ull}}, {{5477723014326965634ull, 14817924123676821194ull, 5342806394707356322ull, 3751685549901322709ull}}, {{8035262902381741426ull, 13872888595725401150ull, 5645097005905791653ull, 2344803468688326693ull}}, {{820706591122400974ull, 3506052689374587726ull, 11668057275809627471ull, 2931004335860408366ull}}, {{10249255275757777025ull, 18217623917000398369ull, 5361699557907258530ull, 3663755419825510458ull}}, {{17423255113124609185ull, 13548657859395722153ull, 15925496484238848971ull, 4579694274781888072ull}}, {{3972005418061798885ull, 6162068152908632394ull, 9953435302649280607ull, 2862308921738680045ull}}, {{14188378809432024414ull, 3090899172708402588ull, 17053480146738988663ull, 3577886152173350056ull}}, {{17735473511790030518ull, 17698682021167666947ull, 2870106109714184212ull, 4472357690216687571ull}}, {{8778827935655075122ull, 1838304226375016034ull, 17934717383067222797ull, 2795223556385429731ull}}, {{1750162882714068094ull, 6909566301396157947ull, 17806710710406640592ull, 3494029445481787164ull}}, {{16022761658674748829ull, 8636957876745197433ull, 3811644314298749124ull, 4367536806852233956ull}}, {{3096697009030636163ull, 14621470709820524204ull, 11605649733291494010ull, 2729710504282646222ull}}, {{3870871261288295203ull, 9053466350420879447ull, 5283690129759591705ull, 3412138130353307778ull}}, {{226903058182981100ull, 15928518956453487213ull, 15827984699054265439ull, 4265172662941634722ull}}, {{2447657420578057140ull, 16872853375424511364ull, 14504176455336303803ull, 2665732914338521701ull}}, {{3059571775722571424ull, 16479380700853251301ull, 4295162513888216042ull, 3332166142923152127ull}}, {{8436150738080602184ull, 11375853839211788318ull, 757267123932882149ull, 4165207678653940159ull}}, {{660908192872988461ull, 9415751658721061651ull, 7390820980099133199ull, 2603254799158712599ull}}, {{14661193296373399289ull, 7158003554973939159ull, 4626840206696528595ull, 3254068498948390749ull}}, {{13714805602039361207ull, 4335818425290036045ull, 10395236276798048648ull, 4067585623685488436ull}}, {{10877596510488294706ull, 2709886515806272528ull, 15720394709853556213ull, 2542241014803430272ull}}, {{13596995638110368383ull, 7999044163185228564ull, 1203749313607393650ull, 3177801268504287841ull}}, {{16996244547637960478ull, 775433167126759897ull, 6116372660436629967ull, 3972251585630359801ull}}, {{3705123814632643443ull, 7402174757095306792ull, 15351947958841363489ull, 2482657241018974875ull}}, {{4631404768290804304ull, 13864404464796521394ull, 14578248930124316457ull, 3103321551273718594ull}}, {{15012627997218281188ull, 3495447525713488030ull, 8999439125800619764ull, 3879151939092148243ull}}, {{4771206479834037838ull, 11408026740425705827ull, 3318806444411693400ull, 2424469961932592652ull}}, {{1352322081365159394ull, 14260033425532132284ull, 4148508055514616750ull, 3030587452415740815ull}}, {{1690402601706449242ull, 8601669745060389547ull, 573949050965883034ull, 3788234315519676019ull}}, {{17197402690562388441ull, 9987729609090131370ull, 16499619221349534560ull, 2367646447199797511ull}}, {{12273381326348209743ull, 12484662011362664213ull, 16012838008259530296ull, 2959558058999746889ull}}, {{1506668602653098466ull, 15605827514203330267ull, 6180989455042249158ull, 3699447573749683612ull}}, {{17082568941154044206ull, 5141956177949693512ull, 13086490446256181532ull, 2312154733593552257ull}}, {{2906467102733003641ull, 6427445222437116891ull, 2523055002538063203ull, 2890193416991940322ull}}, {{17468141933698418263ull, 3422620509619008209ull, 12377190790027354812ull, 3612741771239925402ull}}, {{8000119361840859116ull, 4278275637023760262ull, 6248116450679417707ull, 4515927214049906753ull}}, {{388388582723149044ull, 368079263926156212ull, 15434287827743105827ull, 2822454508781191720ull}}, {{485485728403936305ull, 14295157135189858977ull, 846115710969330667ull, 3528068135976489651ull}}, {{5218543178932308285ull, 13257260400559935817ull, 14892702693993827046ull, 4410085169970612063ull}}, {{14790804532901162438ull, 3674101731922571981ull, 16225468211387223760ull, 2756303231231632539ull}}, {{4653447610844289336ull, 4592627164903214977ull, 15670149245806641796ull, 3445379039039540674ull}}, {{10428495531982749574ull, 5740783956129018721ull, 10364314520403526437ull, 4306723798799425843ull}}, {{18047024753557688244ull, 5893832981794330652ull, 4171853566038510071ull, 2691702374249641152ull}}, {{4112036868237558688ull, 2755605208815525412ull, 5214816957548137589ull, 3364627967812051440ull}}, {{5140046085296948360ull, 8056192529446794669ull, 6518521196935171986ull, 4205784959765064300ull}}, {{5518371812524286677ull, 9646806349331634572ull, 13297447784939258299ull, 2628615599853165187ull}}, {{6897964765655358347ull, 7446821918237155311ull, 12010123712746684970ull, 3285769499816456484ull}}, {{4010769938641810029ull, 85155360941668331ull, 15012654640933356213ull, 4107211874770570605ull}}, {{200888202437437316ull, 2359065109802236659ull, 11688752159797041585ull, 2567007421731606628ull}}, {{14086168308328960357ull, 7560517405680183727ull, 14610940199746301981ull, 3208759277164508285ull}}, {{12996024366983812543ull, 14062332775527617563ull, 4428617194400713764ull, 4010949096455635357ull}}, {{5816672220151188887ull, 18012330021559536785ull, 5073728755714140054ull, 2506843185284772098ull}}, {{11882526293616374013ull, 13292040490094645173ull, 15565532981497450876ull, 3133553981605965122ull}}, {{1018099811738303804ull, 16615050612618306467ull, 10233544190017037787ull, 3916942477007456403ull}}, {{16777213446832297542ull, 8078563623672747589ull, 4090122109546954665ull, 2448089048129660252ull}}, {{7136458753258208215ull, 14709890548018322391ull, 5112652636933693331ull, 3060111310162075315ull}}, {{4308887423145372365ull, 13775677166595515085ull, 1779129777739728760ull, 3825139137702594144ull}}, {{4998897648679551680ull, 8609798229122196928ull, 1111956111087330475ull, 2390711961064121340ull}}, {{6248622060849439600ull, 6150561767975358256ull, 1389945138859163094ull, 2988389951330151675ull}}, {{7810777576061799500ull, 16911574246823973628ull, 15572489478856117579ull, 3735487439162689593ull}}, {{14105108021893400496ull, 8263890895051289565ull, 2815276896643991631ull, 2334679649476680996ull}}, {{3796326972084586908ull, 5718177600386724053ull, 3519096120804989539ull, 2918349561845851245ull}}, {{9357094733533121538ull, 2536035982056017162ull, 9010556169433624828ull, 3647936952307314056ull}}, {{2472996380061626115ull, 3170044977570021453ull, 11263195211792031035ull, 4559921190384142570ull}}, {{3851465746752210274ull, 18122179175477121072ull, 11651183025797407300ull, 2849950743990089106ull}}, {{4814332183440262842ull, 4205979895636849724ull, 5340606745391983318ull, 3562438429987611383ull}}, {{6017915229300328553ull, 14480846906400837963ull, 2064072413312591243ull, 4453048037484514229ull}}, {{1455354009099011394ull, 6744686307286829775ull, 3595888267534063479ull, 2783155023427821393ull}}, {{15654250566655927954ull, 3819171865681149314ull, 9106546352844967253ull, 3478943779284776741ull}}, {{10344441171465134134ull, 9385650850528824547ull, 15994868959483596970ull, 4348679724105970926ull}}, {{4159432722952014882ull, 10477717800007903246ull, 5385107081249860202ull, 2717924827566231829ull}}, {{14422662940544794410ull, 3873775213155103249ull, 11343069869989713157ull, 3397406034457789786ull}}, {{4193270620398829301ull, 9453905034871266966ull, 4955465300632365638ull, 4246757543072237233ull}}, {{16455852193031432025ull, 1297004628367153949ull, 14626380858963698284ull, 2654223464420148270ull}}, {{6734757186007126319ull, 1621255785458942437ull, 9059604036849847047ull, 3317779330525185338ull}}, {{13030132500936295803ull, 15861627787105841758ull, 2101133009207533000ull, 4147224163156481673ull}}, {{3532146794657796973ull, 9913517366941151099ull, 12842423176823177885ull, 2592015101972801045ull}}, {{18250241548604409928ull, 17003582727103826777ull, 2217970915746808644ull, 3240018877466001307ull}}, {{8977743880473348698ull, 2807734335170231856ull, 16607521699965674518ull, 4050023596832501633ull}}, {{5611089925295842937ull, 15589892014763558622ull, 3462172034837464717ull, 2531264748020313521ull}}, {{16237234443474579479ull, 5652306963172284565ull, 8939401061974218801ull, 3164080935025391901ull}}, {{6461484999061060636ull, 11677069722392743611ull, 15785937345895161405ull, 3955101168781739876ull}}, {{1732585115199468946ull, 9604011585709158709ull, 642838804329700070ull, 2471938230488587423ull}}, {{6777417412426724086ull, 2781642445281672578ull, 14638606560694288800ull, 3089922788110734278ull}}, {{17695143802388180916ull, 3477053056602090722ull, 9074886164013085192ull, 3862403485138417848ull}}, {{15671150894920000976ull, 2173158160376306701ull, 5671803852508178245ull, 2414002178211511155ull}}, {{5753880563367837508ull, 7328133718897771281ull, 2478068797207834902ull, 3017502722764388944ull}}, {{11804036722637184789ull, 18383539185476989909ull, 3097585996509793627ull, 3771878403455486180ull}}, {{9683365960861934446ull, 9183868981709424741ull, 11159363284673396825ull, 2357424002159678862ull}}, {{16715893469504805961ull, 16091522245564168830ull, 4725832068986970223ull, 2946780002699598578ull}}, {{11671494800026231643ull, 15502716788527823134ull, 15130662123088488587ull, 3683475003374498222ull}}, {{5365996463178013746ull, 14766709967232391014ull, 9689955617005834926ull, 4604343754218122778ull}}, {{17188805844768422303ull, 4617507711092856479ull, 10667908279056034733ull, 2877714846386326736ull}}, {{16874321287533139975ull, 10383570657293458503ull, 13334885348820043416ull, 3597143557982908420ull}}, {{16481215590989037064ull, 12979463321616823129ull, 16668606686025054270ull, 4496429447478635525ull}}, {{3383230716727066309ull, 3500478557583126552ull, 12723722187979352871ull, 2810268404674147203ull}}, {{4229038395908832887ull, 18210656252261071902ull, 11292966716546803184ull, 3512835505842684004ull}}, {{14509670031740816916ull, 4316576241616788261ull, 14116208395683503981ull, 4391044382303355005ull}}, {{11374386779051704525ull, 5003703160224186615ull, 11128473256515883940ull, 2744402738939596878ull}}, {{9606297455387242752ull, 6254628950280233269ull, 4687219533790079117ull, 3430503423674496098ull}}, {{16619557837661441344ull, 12429972206277679490ull, 15082396454092374704ull, 4288129279593120122ull}}, {{14998909666965788744ull, 7768732628923549681ull, 14038183802235122094ull, 2680080799745700076ull}}, {{4913579028425072218ull, 487543749299661294ull, 17547729752793902618ull, 3350100999682125095ull}}, {{15365345822386116080ull, 9832801723479352425ull, 17322976172564990368ull, 4187626249602656369ull}}, {{2685812111350240694ull, 6145501077174595266ull, 3909331080212037124ull, 2617266406001660231ull}}, {{12580637176042576676ull, 7681876346468244082ull, 274977831837658501ull, 3271583007502075289ull}}, {{6502424433198445037ull, 14214031451512693007ull, 4955408308224461030ull, 4089478759377594111ull}}, {{10981544298390110004ull, 4272083638768045225ull, 10014659220281370000ull, 2555924224610996319ull}}, {{18338616391415025409ull, 5340104548460056531ull, 7906638006924324596ull, 3194905280763745399ull}}, {{18311584470841393857ull, 6675130685575070664ull, 5271611490228017841ull, 3993631600954681749ull}}, {{11444740294275871161ull, 15701171724552888925ull, 5600600190606205102ull, 2496019750596676093ull}}, {{470867312562675239ull, 10403092618836335349ull, 11612436256685144282ull, 3120024688245845116ull}}, {{5200270159130731953ull, 3780493736690643378ull, 14515545320856430353ull, 3900030860307306395ull}}, {{7861854867884095375ull, 13892023631500121871ull, 6766372816321575018ull, 2437519287692066497ull}}, {{5215632566427731314ull, 8141657502520376531ull, 13069652038829356677ull, 3046899109615083121ull}}, {{1907854689607276238ull, 14788757896577858568ull, 2502006993254532134ull, 3808623887018853902ull}}, {{1192409181004547649ull, 4631287666933773701ull, 15398812426066246296ull, 2380389929386783688ull}}, {{6102197494683072465ull, 5789109583667217126ull, 801771458873256254ull, 2975487411733479611ull}}, {{16851118905208616390ull, 16459759016438797215ull, 14837272378873734029ull, 3719359264666849513ull}}, {{17449478343396467100ull, 12593192394487942211ull, 2355766209155001912ull, 2324599540416780946ull}}, {{17200161910818195970ull, 15741490493109927764ull, 12168079798298528198ull, 2905749425520976182ull}}, {{3053458314813193347ull, 10453491079532633898ull, 5986727711018384440ull, 3632186781901220228ull}}, {{13040194930371267492ull, 13066863849415792372ull, 7483409638772980550ull, 4540233477376525285ull}}, {{17373493868336817990ull, 3555103887457482328ull, 6982974033446806796ull, 2837645923360328303ull}}, {{3270123261711470872ull, 4443879859321852911ull, 4117031523381120591ull, 3547057404200410379ull}}, {{17922712132421502302ull, 943163805724928234ull, 534603385799012835ull, 4433821755250512974ull}}, {{15813381101190826843ull, 16730378443073937810ull, 14169185171406546733ull, 2771138597031570608ull}}, {{10543354339633757745ull, 7077914998560258551ull, 17711481464258183417ull, 3463923246289463260ull}}, {{8567506906114809278ull, 13459079766627711093ull, 3692607756613177655ull, 4329904057861829076ull}}, {{7660534825535449751ull, 15329453881783401289ull, 11531251884738011842ull, 2706190036163643172ull}}, {{14187354550346700092ull, 9938445315374475803ull, 14414064855922514803ull, 3382737545204553965ull}}, {{13122507169505987211ull, 7811370625790706850ull, 4182523014620979792ull, 4228421931505692457ull}}, {{12813252999368629911ull, 4882106641119191781ull, 14143291930206582130ull, 2642763707191057785ull}}, {{2181508193928623677ull, 15326005338253765535ull, 3844056857476063950ull, 3303454633988822232ull}}, {{16561943297692943308ull, 9934134635962431110ull, 4805071071845079938ull, 4129318292486027790ull}}, {{5739528542630701664ull, 10820520165903907348ull, 16838227475185338673ull, 2580823932803767368ull}}, {{7174410678288377079ull, 18137336225807272089ull, 2601040270272121725ull, 3226029916004709211ull}}, {{13579699366287859253ull, 8836612226976926399ull, 17086358393122315869ull, 4032537395005886513ull}}, {{15404841131570993889ull, 7828725651074272951ull, 3761444968060365562ull, 2520335871878679071ull}}, {{14644365396036354458ull, 562535026988065381ull, 90120191648069049ull, 3150419839848348839ull}}, {{4470398689763279360ull, 5314854802162469631ull, 13947708294842250023ull, 3938024799810436048ull}}, {{9711528208743131456ull, 10239313278992625375ull, 8717317684276406264ull, 2461265499881522530ull}}, {{7527724242501526416ull, 12799141598740781719ull, 1673275068490732022ull, 3076581874851903163ull}}, {{4797969284699520116ull, 6775554961571201341ull, 15926651890895578740ull, 3845727343564878953ull}}, {{5304573812150894025ull, 13458093887836776646ull, 3036628404168654856ull, 2403579589728049346ull}}, {{15854089302043393339ull, 16822617359795970807ull, 13019157542065594378ull, 3004474487160061682ull}}, {{15205925609126853769ull, 11804899662890187701ull, 7050574890727217165ull, 3755593108950077103ull}}, {{11809546514917977558ull, 9683905298520061265ull, 11324138334345592584ull, 2347245693093798189ull}}, {{926875088365308235ull, 12104881623150076582ull, 320114862649827018ull, 2934057116367247737ull}}, {{10381965897311411102ull, 5907729992082819919ull, 5011829596739671677ull, 3667571395459059671ull}}, {{8365771353211875973ull, 11996348508530912803ull, 1653100977497201692ull, 4584464244323824589ull}}, {{2922764086543728532ull, 16721089854686596310ull, 3339031120149445009ull, 2865290152702390368ull}}, {{12876827145034436472ull, 7066304263076081675ull, 4173788900186806262ull, 3581612690877987960ull}}, {{11484347912865657686ull, 18056252365699877902ull, 5217236125233507827ull, 4477015863597484950ull}}, {{2566031427113648150ull, 8979314719348729737ull, 17095830633553106104ull, 2798134914748428093ull}}, {{7819225302319448092ull, 11224143399185912171ull, 7534730236659218918ull, 3497668643435535117ull}}, {{5162345609471922210ull, 4806807212127614406ull, 14030098814251411552ull, 4372085804294418896ull}}, {{17061524061202115094ull, 3004254507579759003ull, 8768811758907132220ull, 2732553627684011810ull}}, {{16715219058075255963ull, 3755318134474698754ull, 1737642661779139467ull, 3415692034605014763ull}}, {{11670651785739294145ull, 82461649665985539ull, 16007111382506088046ull, 4269615043256268453ull}}, {{4988314356873364889ull, 13886596586323404674ull, 12310287623279998980ull, 2668509402035167783ull}}, {{15458764982946481919ull, 17358245732904255842ull, 10776173510672610821ull, 3335636752543959729ull}}, {{10100084191828326591ull, 7862749110848156091ull, 18081902906768151431ull, 4169545940679949661ull}}, {{4006709610679010168ull, 11831747221921179413ull, 13607032325943788596ull, 2605966212924968538ull}}, {{9620073031776150613ull, 14789684027401474266ull, 7785418370574959937ull, 3257457766156210673ull}}, {{2801719252865412459ull, 4652046978969679121ull, 14343458981646087826ull, 4071822207695263341ull}}, {{13280289579109352547ull, 7519215380283437354ull, 11270504872742498843ull, 2544888879809539588ull}}, {{7376989937031914875ull, 4787333206926908789ull, 14088131090928123554ull, 3181111099761924485ull}}, {{13832923439717281498ull, 15207538545513411794ull, 3775105808377990730ull, 3976388874702405607ull}}, {{13257263168250688840ull, 14116397609373270275ull, 9276970157877326062ull, 2485243046689003504ull}}, {{11959892941885973146ull, 8422124974861812036ull, 11596212697346657578ull, 3106553808361254380ull}}, {{14949866177357466433ull, 1304284181722489237ull, 14495265871683321973ull, 3883192260451567975ull}}, {{11649509370062110473ull, 3121020622790249725ull, 15977070197443158089ull, 2426995162782229984ull}}, {{726828657295474379ull, 8512961796915200061ull, 1524593673094395995ull, 3033743953477787481ull}}, {{5520221840046730877ull, 6029516227716612172ull, 6517428109795382898ull, 3792179941847234351ull}}, {{12673510686883982607ull, 8380133660750270511ull, 10990921596263196167ull, 2370112463654521469ull}}, {{11230202340177590354ull, 5863481057510450235ull, 18350338013756383113ull, 2962640579568151836ull}}, {{9426066906794600038ull, 11941037340315450698ull, 4491178443485927275ull, 3703300724460189796ull}}, {{10502977835174012928ull, 5157305328483462734ull, 12030358564033480355ull, 2314562952787618622ull}}, {{3905350257112740352ull, 1834945642176940514ull, 5814576168187074636ull, 2893203690984523278ull}}, {{14105059858245701248ull, 2293682052721175642ull, 16491592247088619103ull, 3616504613730654097ull}}, {{8407952785952350752ull, 16702160621183633265ull, 6779432253578610166ull, 4520630767163317622ull}}, {{16784185537288688980ull, 5827164369812382886ull, 18072203213768795066ull, 2825394229477073513ull}}, {{11756859884756085417ull, 16507327499120254416ull, 8755195961928830120ull, 3531742786846341892ull}}, {{14696074855945106771ull, 2187415300190766404ull, 10943994952411037651ull, 4414678483557927365ull}}, {{18408418821820467540ull, 17508035627115086666ull, 9145839854470592483ull, 2759174052223704603ull}}, {{13787151490420808617ull, 17273358515466470429ull, 6820613799660852700ull, 3448967565279630754ull}}, {{3398881307743847059ull, 3144954070623536421ull, 17749139286430841684ull, 4311209456599538442ull}}, {{4430143826553598364ull, 11188968330994486071ull, 15704898072446663956ull, 2694505910374711526ull}}, {{925993764764610051ull, 13986210413743107589ull, 10407750553703554137ull, 3368132387968389408ull}}, {{5769178224383150468ull, 3647704961896720774ull, 13009688192129442672ull, 4210165484960486760ull}}, {{17440794445521632755ull, 2279815601185450483ull, 8131055120080901670ull, 2631353428100304225ull}}, {{17189307038474653039ull, 12073141538336588912ull, 14775504918528514991ull, 3289191785125380281ull}}, {{3039889724383764683ull, 10479740904493348237ull, 4634323092878480027ull, 4111489731406725352ull}}, {{4205774086953546879ull, 4243995056094648696ull, 2896451933049050017ull, 2569681082129203345ull}}, {{5257217608691933599ull, 9916679838545698774ull, 8232250934738700425ull, 3212101352661504181ull}}, {{15794894047719692806ull, 17007535816609511371ull, 14901999686850763435ull, 4015126690826880226ull}}, {{7565965770611114052ull, 8323866876167250655ull, 13925435822709115051ull, 2509454181766800141ull}}, {{4845771194836504661ull, 5793147576781675415ull, 3571736723104230102ull, 3136817727208500177ull}}, {{1445527975118242922ull, 16464806507831870077ull, 9076356922307675531ull, 3921022159010625221ull}}, {{3209297993662595778ull, 7984661058181224846ull, 7978566085655991159ull, 2450638849381640763ull}}, {{13234994528933020531ull, 5369140304299143153ull, 5361521588642601045ull, 3063298561727050954ull}}, {{2708685105884111951ull, 11323111398801316846ull, 15925274022658027114ull, 3829123202158813692ull}}, {{15527986246459733682ull, 11688630642678210932ull, 729924227306491138ull, 2393202001349258558ull}}, {{963238734365115486ull, 5387416266492987858ull, 10135777320987889731ull, 2991502501686573197ull}}, {{10427420454811170166ull, 2122584314688846918ull, 17281407669662250068ull, 3739378127108216496ull}}, {{1905451765829593450ull, 10549987233535305132ull, 10800879793538906292ull, 2337111329442635310ull}}, {{2381814707286991812ull, 13187484041919131415ull, 4277727705068857057ull, 2921389161803294138ull}}, {{16812326439390903477ull, 2649296997116750556ull, 14570531668190847130ull, 3651736452254117672ull}}, {{2568663975529077730ull, 12534993283250714004ull, 18213164585238558912ull, 4564670565317647090ull}}, {{10828787021560449389ull, 7834370802031696252ull, 15994913884201487224ull, 2852919103323529431ull}}, {{13535983776950561737ull, 9792963502539620315ull, 15381956336824471126ull, 3566148879154411789ull}}, {{12308293702760814267ull, 3017832341319749586ull, 5392387365748425196ull, 4457686098943014737ull}}, {{12304369582652896821ull, 11109517250179619299ull, 14899457149661235507ull, 2786053811839384210ull}}, {{10768775959888733122ull, 9275210544297136220ull, 9400949400221768576ull, 3482567264799230263ull}}, {{13460969949860916402ull, 11594013180371420275ull, 7139500731849822816ull, 4353209080999037829ull}}, {{6107263209449378800ull, 7246258237732137672ull, 6768030966619833212ull, 2720755675624398643ull}}, {{7634079011811723499ull, 9057822797165172090ull, 3848352689847403611ull, 3400944594530498304ull}}, {{319226727909878566ull, 6710592478029077209ull, 4810440862309254514ull, 4251180743163122880ull}}, {{11728731751012143864ull, 8805806317195561159ull, 3006525538943284071ull, 2656987964476951800ull}}, {{10049228670337791926ull, 6395571878067063545ull, 3758156923679105089ull, 3321234955596189750ull}}, {{17173221856349627811ull, 12606150866011217335ull, 13921068191453657169ull, 4151543694495237187ull}}, {{17650792687859599238ull, 961315263615928978ull, 6394824610444841779ull, 2594714809059523242ull}}, {{12840118822969723240ull, 15036702134802074935ull, 17216902799910828031ull, 3243393511324404052ull}}, {{11438462510284766145ull, 14184191650075205765ull, 3074384426178983423ull, 4054241889155505066ull}}, {{9454882078141672793ull, 15782648808938085459ull, 6533176284789252543ull, 2533901180722190666ull}}, {{7206916579249703087ull, 15116624992745218920ull, 17389842392841341487ull, 3167376475902738332ull}}, {{9008645724062128859ull, 14284095222504135746ull, 3290558917342125243ull, 3959220594878422916ull}}, {{10242089595966218441ull, 6621716504851390889ull, 11279971360193604085ull, 2474512871799014322ull}}, {{17414298013385160955ull, 12888831649491626515ull, 4876592163387229298ull, 3093141089748767903ull}}, {{17156186498304063290ull, 6887667525009757336ull, 1484054185806648719ull, 3866426362185959879ull}}, {{10722616561440039556ull, 11222321230772180191ull, 7845062893770237305ull, 2416516476366224924ull}}, {{8791584683372661541ull, 192843483183061527ull, 9806328617212796632ull, 3020645595457781155ull}}, {{6377794835788439022ull, 241054353978826909ull, 7646224753088607886ull, 3775806994322226444ull}}, {{6291964781581468341ull, 13985717026518930530ull, 14002262507535155736ull, 2359879371451391527ull}}, {{17088328013831611234ull, 17482146283148663162ull, 12891142115991556766ull, 2949849214314239409ull}}, {{12137037980434738235ull, 12629310817081053145ull, 2278869589707282246ull, 3687311517892799262ull}}, {{1336239420261259081ull, 6563266484496540624ull, 12071959023988878616ull, 4609139397365999077ull}}, {{835149637663286926ull, 4102041552810337890ull, 9850817399206743087ull, 2880712123353749423ull}}, {{10267309083933884466ull, 515865922585534458ull, 7701835730581040955ull, 3600890154192186779ull}}, {{3610764318062579774ull, 14479890458514081785ull, 5015608644798913289ull, 4501112692740233474ull}}, {{13785942744857582119ull, 2132402508930219259ull, 7746441421426708710ull, 2813195432962645921ull}}, {{12620742412644589744ull, 11888875173017549882ull, 14294737795210773791ull, 3516494291203307401ull}}, {{6552555978950961372ull, 10249407947844549449ull, 4033364188731303527ull, 4395617864004134252ull}}, {{15624562532912820618ull, 13323408995043925261ull, 11744224654811840512ull, 2747261165002583907ull}}, {{5695645110858862060ull, 16654261243804906577ull, 10068594800087412736ull, 3434076456253229884ull}}, {{11731242407000965479ull, 2371082481046581605ull, 12585743500109265921ull, 4292595570316537355ull}}, {{9637869513589297377ull, 13011141596722583263ull, 5560246678354597248ull, 2682872231447835847ull}}, {{7435650873559233817ull, 16263926995903229079ull, 2338622329515858656ull, 3353590289309794809ull}}, {{4682877573521654367ull, 1883164671169484733ull, 7534963930322211225ull, 4191987861637243511ull}}, {{5232641492664727931ull, 12706192965549397718ull, 11626881484092463871ull, 2619992413523277194ull}}, {{15764173902685685722ull, 11271055188509359243ull, 5310229818260804031ull, 3274990516904096493ull}}, {{15093531359929719249ull, 9477132967209311150ull, 11249473291253392943ull, 4093738146130120616ull}}, {{4821771081528686627ull, 12840737132146901325ull, 7030920807033370589ull, 2558586341331325385ull}}, {{10638899870338246187ull, 2215863359901462944ull, 13400337027219101141ull, 3198232926664156731ull}}, {{13298624837922807734ull, 7381515218304216584ull, 12138735265596488522ull, 3997791158330195914ull}}, {{8311640523701754834ull, 9225133029867523269ull, 12198395559425193230ull, 2498619473956372446ull}}, {{15001236673054581446ull, 2308044250479628278ull, 6024622412426715730ull, 3123274342445465558ull}}, {{9528173804463450999ull, 12108427349954311156ull, 16754150052388170470ull, 3904092928056831947ull}}, {{15178480664644432683ull, 2956081075294056568ull, 8165500773528912592ull, 2440058080035519967ull}}, {{526356757095989237ull, 3695101344117570711ull, 5595189948483752836ull, 3050072600044399959ull}}, {{14493004001652150259ull, 4618876680146963388ull, 2382301417177303141ull, 3812590750055499949ull}}, {{18281499537887369720ull, 5192640934305546069ull, 3794781394949508415ull, 2382869218784687468ull}}, {{9016816367077048438ull, 1879115149454544683ull, 4743476743686885519ull, 2978586523480859335ull}}, {{6659334440418922643ull, 16183951992100344566ull, 1317659911181218994ull, 3723233154351074169ull}}, {{17997142080543990364ull, 14726656013490103257ull, 12352752490556731631ull, 2327020721469421355ull}}, {{8661369545397824243ull, 13796633998435241168ull, 10829254594768526635ull, 2908775901836776694ull}}, {{10826711931747280304ull, 12634106479616663556ull, 4313196206605882486ull, 3635969877295970868ull}}, {{13533389914684100379ull, 6569261062666053637ull, 5391495258257353108ull, 4544962346619963585ull}}, {{10764211705891256689ull, 13329160201021059331ull, 14898899582479315452ull, 2840601466637477240ull}}, {{8843578613936682957ull, 16661450251276324164ull, 176880404389592699ull, 3550751833296846551ull}}, {{11054473267420853697ull, 16215126795668017301ull, 14056158560769154586ull, 4438439791621058188ull}}, {{9214888801351727513ull, 14746140265719898717ull, 18008471137335497424ull, 2774024869763161367ull}}, {{16130297020117047295ull, 18432675332149873396ull, 17898902903241983876ull, 3467531087203951709ull}}, {{1716127201436757502ull, 4594100091477790130ull, 8538570573770316134ull, 4334413859004939637ull}}, {{5684265519325361343ull, 16706370612455782543ull, 7642449617820141535ull, 2709008661878087273ull}}, {{2493645880729313775ull, 16271277247142340275ull, 14164748040702564823ull, 3386260827347609091ull}}, {{16952115406193805930ull, 15727410540500537439ull, 13094249032450818125ull, 4232826034184511364ull}}, {{17512601156512210563ull, 12135474597026529851ull, 17407277682136537136ull, 2645516271365319602ull}}, {{17279065427212875299ull, 15169343246283162314ull, 12535725065815895612ull, 3306895339206649503ull}}, {{12375459747161318316ull, 514934984144401277ull, 11057970313842481612ull, 4133619174008311879ull}}, {{10040505351189517900ull, 9545206401945026606ull, 13828760473792632863ull, 2583511983755194924ull}}, {{3327259652132121566ull, 7319821984003895354ull, 17285950592240791079ull, 3229389979693993655ull}}, {{13382446602019927766ull, 4538091461577481288ull, 16995752221873600945ull, 4036737474617492069ull}}, {{8364029126262454854ull, 14365522209554395565ull, 12928188147884694542ull, 2522960921635932543ull}}, {{15066722426255456471ull, 8733530725088218648ull, 11548549166428480274ull, 3153701152044915679ull}}, {{386658959109768973ull, 1693541369505497503ull, 9824000439608212439ull, 3942126440056144599ull}}, {{7159190877084687464ull, 7975992383582017795ull, 13057529302396214630ull, 2463829025035090374ull}}, {{4337302577928471426ull, 746618442622746436ull, 7098539591140492480ull, 3079786281293862968ull}}, {{5421628222410589282ull, 933273053278433045ull, 8873174488925615600ull, 3849732851617328710ull}}, {{5694360648220312254ull, 583295658299020653ull, 934048037151121846ull, 2406083032260830444ull}}, {{11729636828702778221ull, 9952491609728551624ull, 1167560046438902307ull, 3007603790326038055ull}}, {{14662046035878472776ull, 7828928493733301626ull, 15294508113330791596ull, 3759504737907547568ull}}, {{13775464790851433389ull, 14116452345438089324ull, 9559067570831744747ull, 2349690461192217230ull}}, {{17219330988564291736ull, 13033879413370223751ull, 2725462426684905126ull, 2937113076490271538ull}}, {{16912477717277976766ull, 7068977229858003881ull, 12630200070210907216ull, 3671391345612839422ull}}, {{7305539091315307246ull, 8836221537322504852ull, 6564378050908858212ull, 4589239182016049278ull}}, {{13789333968926842837ull, 14746010497681341340ull, 17937794337100200094ull, 2868274488760030798ull}}, {{17236667461158553546ull, 9209141085246900867ull, 13198870884520474310ull, 3585343110950038498ull}}, {{16934148308020804028ull, 2288054319703850276ull, 7275216568795817080ull, 4481678888687548123ull}}, {{1360470655658226710ull, 1430033949814906423ull, 2241167346283691723ull, 2801049305429717577ull}}, {{15535646374854947099ull, 15622600492550796740ull, 7413145201282002557ull, 3501311631787146971ull}}, {{972813894859132258ull, 5693192560406332214ull, 4654745483175115293ull, 4376639539733933714ull}}, {{14443066739569121373ull, 5864088359467651585ull, 7520901945411834962ull, 2735399712333708571ull}}, {{4218775369179238005ull, 16553482486189340290ull, 4789441413337405798ull, 3419249640417135714ull}}, {{14496841248328823314ull, 11468481070881899554ull, 15210173803526533056ull, 4274062050521419642ull}}, {{13672211798632902475ull, 7167800669301187221ull, 14118044645631471064ull, 2671288781575887276ull}}, {{3255206693008964382ull, 8959750836626484027ull, 17647555807039338830ull, 3339110976969859095ull}}, {{17904066421543369189ull, 1976316508928329225ull, 17447758740371785634ull, 4173888721212323869ull}}, {{4272512485823523887ull, 5846883836507593670ull, 13210692221946059973ull, 2608680450757702418ull}}, {{14564012644134180667ull, 11920290814061879991ull, 7289993240577799158ull, 3260850563447128023ull}}, {{13593329786740337930ull, 5676991480722574181ull, 4500805532294861044ull, 4076063204308910029ull}}, {{10801674125926405158ull, 12771491712306384671ull, 5118846466897982104ull, 2547539502693068768ull}}, {{8890406638980618544ull, 15964364640382980839ull, 6398558083622477630ull, 3184424378366335960ull}}, {{6501322280298385276ull, 10732083763623950241ull, 7998197604528097038ull, 3980530472957919950ull}}, {{15592541471254960558ull, 2095866333837580996ull, 387187484402672745ull, 2487831545598699969ull}}, {{1043932765359149081ull, 7231518935724364150ull, 5095670373930728835ull, 3109789431998374961ull}}, {{10528287993553712159ull, 4427712651228067283ull, 10981273985840798948ull, 3887236789997968701ull}}, {{4274336986757376147ull, 11990692443872317860ull, 9169139250364193294ull, 2429522993748730438ull}}, {{5342921233446720184ull, 5764993517985621517ull, 2238052026100465810ull, 3036903742185913048ull}}, {{11290337560235788134ull, 16429613934336802704ull, 2797565032625582262ull, 3796129677732391310ull}}, {{7056460975147367584ull, 5656822690533113786ull, 15583536200673152626ull, 2372581048582744568ull}}, {{18043948255788985288ull, 16294400400021168040ull, 1032676177131889166ull, 2965726310728430711ull}}, {{4108191246026679994ull, 11144628463171684243ull, 15125903276697025170ull, 3707157888410538388ull}}, {{261776519552981044ull, 11577078807909690556ull, 230317511080864923ull, 2316973680256586493ull}}, {{327220649441226305ull, 9859662491459725291ull, 4899582907278469058ull, 2896217100320733116ull}}, {{14244083867083696593ull, 3101206077469880805ull, 6124478634098086323ull, 3620271375400916395ull}}, {{3970046778572457030ull, 17711565652119514719ull, 3043912274195219999ull, 4525339219251145494ull}}, {{9398808264248867500ull, 17987257560215778555ull, 15737503226654176211ull, 2828337012031965933ull}}, {{7136824311883696470ull, 17872385931842335290ull, 5836820978035556552ull, 3535421265039957417ull}}, {{18144402426709396396ull, 3893738341093367496ull, 11907712240971833595ull, 4419276581299946771ull}}, {{11340251516693372748ull, 127743453969660733ull, 5136477141393702045ull, 2762047863312466732ull}}, {{340256340584552222ull, 4771365335889463821ull, 6420596426742127556ull, 3452559829140583415ull}}, {{5037006444158078182ull, 5964206669861829776ull, 3414059515000271541ull, 4315699786425729269ull}}, {{3148129027598798864ull, 6033472177877337562ull, 4439630206088863665ull, 2697312366516080793ull}}, {{13158533321353274388ull, 12153526240774059856ull, 10161223776038467485ull, 3371640458145100991ull}}, {{16448166651691592985ull, 1356849745685411108ull, 8089843701620696453ull, 4214550572681376239ull}}, {{1056732120452469808ull, 3153874100267075895ull, 11973681341154017139ull, 2634094107925860149ull}}, {{15155973205847750971ull, 17777400680616008580ull, 1132043621160357711ull, 3292617634907325187ull}}, {{498222433600137098ull, 17610064832342622822ull, 15250112581732610851ull, 4115772043634156483ull}}, {{14146447076282249398ull, 8700447511000445311ull, 7225477354369187830ull, 2572357527271347802ull}}, {{13071372826925423844ull, 1652187351895780831ull, 18255218729816260596ull, 3215446909089184752ull}}, {{11727530015229391901ull, 2065234189869726039ull, 4372279338560774129ull, 4019308636361480941ull}}, {{14247235287159451794ull, 12819986414737048534ull, 5038517595814177782ull, 2512067897725925588ull}}, {{8585672072094538935ull, 6801610981566534860ull, 6298146994767722228ull, 3140084872157406985ull}}, {{10732090090118173668ull, 8502013726958168575ull, 12484369761887040689ull, 3925106090196758731ull}}, {{13625085333964940399ull, 16842973625417325119ull, 5496888091965706478ull, 2453191306372974207ull}}, {{12419670649028787594ull, 11830344994916880591ull, 2259424096529745194ull, 3066489132966217759ull}}, {{10912902292858596589ull, 5564559206791324931ull, 16659338175944345205ull, 3833111416207772198ull}}, {{4514720923822928916ull, 5783692513458272034ull, 5800400341537827849ull, 2395694635129857624ull}}, {{14866773191633436953ull, 11841301660250227946ull, 7250500426922284811ull, 2994618293912322030ull}}, {{9360094452687020383ull, 10189941056885397029ull, 18286497570507631822ull, 3743272867390402537ull}}, {{8155902042143081692ull, 1757027142125985239ull, 4511531953926188033ull, 2339545542119001586ull}}, {{5583191534251464211ull, 6807969946084869453ull, 14862786979262510849ull, 2924431927648751982ull}}, {{11590675436241718167ull, 13121648451033474720ull, 9355111687223362753ull, 3655539909560939978ull}}, {{14488344295302147709ull, 2567002508509679688ull, 2470517572174427634ull, 4569424886951174973ull}}, {{9055215184563842318ull, 6216062586245937709ull, 3849916491822711223ull, 2855890554344484358ull}}, {{15930704999132190802ull, 3158392214380034232ull, 14035767651633164837ull, 3569863192930605447ull}}, {{1466637175205686886ull, 8559676286402430695ull, 12933023546114068142ull, 4462328991163256809ull}}, {{7834177262144636160ull, 738111660574131280ull, 1165610688680210733ull, 2788955619477035506ull}}, {{9792721577680795200ull, 5534325594145052004ull, 10680385397705039224ull, 3486194524346294382ull}}, {{12240901972100993999ull, 6917906992681315005ull, 4127109710276523222ull, 4357743155432867978ull}}, {{9956406741776815202ull, 18158749925707985590ull, 7191129587350214917ull, 2723589472145542486ull}}, {{3222136390366243194ull, 8863379351852818276ull, 18212284021042544455ull, 3404486840181928107ull}}, {{4027670487957803993ull, 6467538171388634941ull, 18153669007875792665ull, 4255608550227410134ull}}, {{4823137064187321448ull, 15571426403186366598ull, 6734357111494982511ull, 2659755343892131334ull}}, {{15252293367088927617ull, 14852596985555570343ull, 17641318426223503947ull, 3324694179865164167ull}}, {{14453680690433771617ull, 13954060213517075025ull, 17439962014351992030ull, 4155867724831455209ull}}, {{2116021403880025405ull, 4109601615020783987ull, 3982447231328913163ull, 2597417328019659506ull}}, {{16480084810132195468ull, 525316000348592079ull, 14201431076015917262ull, 3246771660024574382ull}}, {{15988419994237856431ull, 9880017037290515907ull, 8528416808165120769ull, 4058464575030717978ull}}, {{7686919487184966318ull, 17704225694375042202ull, 9941946523530588384ull, 2536540359394198736ull}}, {{385277322126432089ull, 3683538044259251137ull, 12427433154413235481ull, 3170675449242748420ull}}, {{5093282671085428015ull, 9216108573751451825ull, 15534291443016544351ull, 3963344311553435525ull}}, {{14712516715496862270ull, 12677596886235739246ull, 12014775161099034171ull, 2477090194720897203ull}}, {{9167273857516302029ull, 11235310089367286154ull, 10406782932946404810ull, 3096362743401121504ull}}, {{2235720285040601728ull, 4820765574854331885ull, 13008478666183006013ull, 3870453429251401880ull}}, {{3703168187364070032ull, 5318821493497651380ull, 8130299166364378758ull, 2419033393282126175ull}}, {{4628960234205087540ull, 15871898903726840033ull, 5551187939528085543ull, 3023791741602657719ull}}, {{10397886311183747329ull, 15228187611231162137ull, 2327298905982719025ull, 3779739677003322149ull}}, {{18027893990558311841ull, 2600088229378394479ull, 3760404825452893343ull, 2362337298127076343ull}}, {{17923181469770501897ull, 17085168342005156811ull, 88820013388728774ull, 2952921622658845429ull}}, {{17792290818785739467ull, 12133088390651670206ull, 4722711035163298872ull, 3691152028323556786ull}}, {{6508495743313699263ull, 7583180244157293879ull, 7563380415404449699ull, 2306970017702222991ull}}, {{3523933660714736175ull, 4867289286769229445ull, 4842539500828174220ull, 2883712522127778739ull}}, {{9016603094320808122ull, 6084111608461536806ull, 1441488357607829871ull, 3604640652659723424ull}}, {{2047381831046234345ull, 2993453492149533104ull, 1801860447009787339ull, 4505800815824654280ull}}, {{1279613644403896466ull, 18011809497089315854ull, 1126162779381117086ull, 2816125509890408925ull}}, {{10822889092359646390ull, 13291389834506869009ull, 6019389492653784262ull, 3520156887363011156ull}}, {{18140297383876945891ull, 7390865256278810453ull, 7524236865817230328ull, 4400196109203763945ull}}, {{13643528874136785134ull, 4619290785174256533ull, 16231863087204238715ull, 2750122568252352465ull}}, {{3219353037388817706ull, 1162427463040432763ull, 6454770803723134682ull, 3437653210315440582ull}}, {{17859249352018185844ull, 10676406365655316761ull, 17291835541508694160ull, 4297066512894300727ull}}, {{4244501817370284297ull, 6672753978534572976ull, 17724926241084015706ull, 2685666570558937954ull}}, {{5305627271712855371ull, 17564314510022992028ull, 12932785764500243824ull, 3357083213198672443ull}}, {{6632034089641069213ull, 3508649063819188419ull, 11554296187197916877ull, 4196354016498340554ull}}, {{1839178296811974306ull, 4498748674100686714ull, 11833121135426085952ull, 2622721260311462846ull}}, {{11522344907869743691ull, 5623435842625858392ull, 5568029382427831632ull, 3278401575389328558ull}}, {{14402931134837179614ull, 7029294803282322990ull, 16183408764889565348ull, 4098001969236660697ull}}, {{4390145940845849355ull, 13616681288906227677ull, 3197101450414896486ull, 2561251230772912936ull}}, {{10099368444484699597ull, 7797479574278008788ull, 3996376813018620608ull, 3201564038466141170ull}}, {{12624210555605874496ull, 9746849467847510985ull, 14218843053128051568ull, 4001955048082676462ull}}, {{972602569612589704ull, 6091780917404694366ull, 4275090889777644326ull, 2501221905051672789ull}}, {{10439125248870512938ull, 16838098183610643765ull, 9955549630649443311ull, 3126527381314590986ull}}, {{17660592579515529077ull, 16435936711085916802ull, 3221065001457028331ull, 3908159226643238733ull}}, {{15649556380624593577ull, 7966617435215004049ull, 4319008635124336659ull, 2442599516652024208ull}}, {{5726887420498578259ull, 5346585775591367158ull, 5398760793905420824ull, 3053249395815030260ull}}, {{16381981312477998632ull, 6683232219489208947ull, 6748450992381776030ull, 3816561744768787825ull}}, {{7932895311085055193ull, 18012078192462919304ull, 15746996916307079778ull, 2385351090480492390ull}}, {{9916119138856318992ull, 13291725703723873322ull, 10460374108529073915ull, 2981688863100615488ull}}, {{3171776886715622931ull, 12002971111227453749ull, 13075467635661342394ull, 3727111078875769360ull}}, {{4288203563410958284ull, 12113542962944546497ull, 8172167272288338996ull, 2329444424297355850ull}}, {{9971940472691085759ull, 15141928703680683121ull, 991837053505647937ull, 2911805530371694813ull}}, {{17076611609291245103ull, 5092352824318690189ull, 5851482335309447826ull, 3639756912964618516ull}}, {{7510706456331892666ull, 15588813067253138545ull, 7314352919136809782ull, 4549696141205773145ull}}, {{16223406581275902677ull, 5131322148605823686ull, 16100685620528975874ull, 2843560088253608215ull}}, {{11055886189740102538ull, 15637524722612055416ull, 15514171007233831938ull, 3554450110317010269ull}}, {{13819857737175128172ull, 10323533866410293462ull, 5557655703760126211ull, 4443062637896262837ull}}, {{4025725067307067204ull, 4146365657292739462ull, 5779377824063772834ull, 2776914148685164273ull}}, {{14255528370988609813ull, 14406329108470700135ull, 11835908298507103946ull, 3471142685856455341ull}}, {{13207724445308374362ull, 8784539348733599361ull, 959827317851716221ull, 4338928357320569177ull}}, {{1337298750676652120ull, 7796180102172193553ull, 12129107119725792398ull, 2711830223325355735ull}}, {{6283309456773203054ull, 521853090860466133ull, 10549697881229852594ull, 3389787779156694669ull}}, {{12465822839393891721ull, 9875688400430358474ull, 17798808369964703646ull, 4237234723945868336ull}}, {{12402825293048570230ull, 1560619231841586142ull, 11124255231227939779ull, 2648271702466167710ull}}, {{6280159579455936979ull, 15785832095084146390ull, 4681947002180148915ull, 3310339628082709638ull}}, {{17073571511174697032ull, 15120604100427795083ull, 15075805789579961952ull, 4137924535103387047ull}}, {{8365139185270491693ull, 9450377562767371927ull, 16339907646128558076ull, 2586202834439616904ull}}, {{5844737963160726713ull, 11812971953459214909ull, 1978140483951145979ull, 3232753543049521131ull}}, {{11917608472378296295ull, 10154528923396630732ull, 16307733660221096186ull, 4040941928811901413ull}}, {{16671877332091210992ull, 10958266595550282111ull, 12498176546851879068ull, 2525588705507438383ull}}, {{16228160646686625836ull, 13697833244437852639ull, 11011034665137460931ull, 3156985881884297979ull}}, {{15673514789930894391ull, 12510605537119927895ull, 9152107312994438260ull, 3946232352355372474ull}}, {{16713475771347890851ull, 17042500497554730742ull, 10331753089048911816ull, 2466395220222107796ull}}, {{11668472677330087755ull, 2856381548233861812ull, 12914691361311139771ull, 3082994025277634745ull}}, {{14585590846662609694ull, 17405534990574490977ull, 2308306146356761001ull, 3853742531597043432ull}}, {{2198465251523049203ull, 3960930341467975005ull, 1442691341472975626ull, 2408589082248152145ull}}, {{7359767582831199407ull, 14174534963689744564ull, 6415050195268607436ull, 3010736352810190181ull}}, {{9199709478538999259ull, 17718168704612180705ull, 12630498762513147199ull, 3763420441012737726ull}}, {{17279033470155344297ull, 17991384468023694796ull, 3282375708143329095ull, 2352137775632961079ull}}, {{3152047763984628755ull, 17877544566602230592ull, 17938027690461325081ull, 2940172219541201348ull}}, {{3940059704980785944ull, 8511872652970624528ull, 3975790539367104736ull, 3675215274426501686ull}}, {{4925074631225982430ull, 10639840816213280660ull, 14193110211063656728ull, 4594019093033127107ull}}, {{12301543681371014827ull, 6649900510133300412ull, 6564850872701091503ull, 2871261933145704442ull}}, {{15376929601713768534ull, 3700689619239237611ull, 17429435627731140187ull, 3589077416432130552ull}}, {{14609475983714822763ull, 14176005621659110ull, 3340050460954373618ull, 4486346770540163191ull}}, {{4519236471394376323ull, 4620546021940924848ull, 9005060565737565367ull, 2803966731587601994ull}}, {{5649045589242970404ull, 1163996508998768156ull, 2032953670317180901ull, 3504958414484502493ull}}, {{7061306986553713004ull, 6066681654675848099ull, 7152878106323864030ull, 4381198018105628116ull}}, {{2107473857382376676ull, 17626734089454568774ull, 13693920853307190826ull, 2738248761316017572ull}}, {{11857714358582746653ull, 12810045574963435159ull, 17117401066633988533ull, 3422810951645021965ull}}, {{10210456929801045412ull, 2177498913422130237ull, 7561693278010321955ull, 4278513689556277457ull}}, {{8687378590339347335ull, 17501837885384689062ull, 16255273344824920981ull, 2674071055972673410ull}}, {{1635851201069408360ull, 8042239301448697616ull, 11095719644176375419ull, 3342588819965841763ull}}, {{2044814001336760450ull, 5441113108383484116ull, 9257963536793081370ull, 4178236024957302204ull}}, {{10501380787690251089ull, 8012381711167065476ull, 15009599247350451664ull, 2611397515598313877ull}}, {{13126725984612813862ull, 10015477138958831845ull, 4926941003905900868ull, 3264246894497892347ull}}, {{2573349425483853615ull, 12519346423698539807ull, 1546990236454988181ull, 4080308618122365434ull}}, {{8525872418568490365ull, 10130434524025281331ull, 5578554916211755517ull, 2550192886326478396ull}}, {{6045654504783225053ull, 17274729173458989568ull, 6973193645264694396ull, 3187741107908097995ull}}, {{7557068130979031316ull, 3146667393114185344ull, 4104806038153480092ull, 3984676384885122494ull}}, {{4723167581861894573ull, 11190039157551141648ull, 16400561829128088769ull, 2490422740553201558ull}}, {{5903959477327368216ull, 152490891656763348ull, 11277330249555335154ull, 3113028425691501948ull}}, {{7379949346659210269ull, 9413985651425729993ull, 14096662811944168942ull, 3891285532114377435ull}}, {{16141683387730476179ull, 1272055013713693341ull, 6504571248251411637ull, 2432053457571485897ull}}, {{6342046179380931511ull, 6201754785569504581ull, 12742400078741652450ull, 3040066821964357371ull}}, {{12539243742653552293ull, 16975565518816656534ull, 11316314079999677658ull, 3800083527455446714ull}}, {{3225341320731082279ull, 15221414467687798238ull, 11684382318427186440ull, 2375052204659654196ull}}, {{13255048687768628657ull, 580024010900196181ull, 14605477898033983051ull, 2968815255824567745ull}}, {{2733752804428622109ull, 14560088068907408939ull, 4421789317260315101ull, 3711019069780709682ull}}, {{17849496567263746482ull, 11405898052280824538ull, 7375304341715084842ull, 2319386918612943551ull}}, {{13088498672224907295ull, 5034000528496254865ull, 4607444408716468149ull, 2899233648266179439ull}}, {{2525565284998970406ull, 10904186679047706486ull, 1147619492468197282ull, 3624042060332724299ull}}, {{12380328643103488816ull, 4406861311954857299ull, 15269582420867410315ull, 4530052575415905373ull}}, {{5431862392725986558ull, 448445310758091860ull, 11849332022255825399ull, 2831282859634940858ull}}, {{6789827990907483197ull, 14395614693729778537ull, 5588292990965005940ull, 3539103574543676073ull}}, {{13098971007061741900ull, 17994518367162223171ull, 11597052257133645329ull, 4423879468179595091ull}}, {{5881013870199894736ull, 4329044951835307626ull, 4942314651494834379ull, 2764924667612246932ull}}, {{16574639374604644228ull, 799620171366746628ull, 6177893314368542974ull, 3456155834515308665ull}}, {{2271555144546253669ull, 10222897251063209094ull, 12334052661388066621ull, 4320194793144135831ull}}, {{15254780020623572255ull, 8695153791128199635ull, 14626311941008623494ull, 2700121745715084894ull}}, {{14456789007352077415ull, 1645570202055473736ull, 9059517889406003560ull, 3375152182143856118ull}}, {{18070986259190096768ull, 2056962752569342170ull, 2101025324902728642ull, 4218940227679820148ull}}, {{15906052430421198384ull, 5897287738783226760ull, 10536512864918981209ull, 2636837642299887592ull}}, {{1435821464316946364ull, 11983295691906421355ull, 13170641081148726511ull, 3296047052874859490ull}}, {{15629834885678346667ull, 10367433596455638789ull, 7239929314581132331ull, 4120058816093574363ull}}, {{12074489812762660619ull, 4173802988571080291ull, 2219112812399513755ull, 2575036760058483977ull}}, {{10481426247525937870ull, 605567717286462460ull, 7385577033926780098ull, 3218795950073104971ull}}, {{13101782809407422337ull, 9980331683462853883ull, 4620285273981087218ull, 4023494937591381214ull}}, {{5882771246665945009ull, 10849393320591671581ull, 16722736351520343223ull, 2514684335994613258ull}}, {{11965150076759819165ull, 8950055632312201572ull, 11680048402545653221ull, 3143355419993266573ull}}, {{14956437595949773956ull, 15799255558817639869ull, 765002447899902814ull, 3929194274991583217ull}}, {{11653616506682302675ull, 5262848705833637014ull, 12007341576005909019ull, 2455746421869739510ull}}, {{5343648596498102535ull, 1966874863864658364ull, 5785804933152610466ull, 3069683027337174388ull}}, {{6679560745622628169ull, 11681965616685598763ull, 7232256166440763082ull, 3837103784171467985ull}}, {{1868882456800448654ull, 11912914528855887131ull, 16049375150093946686ull, 2398189865107167490ull}}, {{16171161126282724529ull, 5667771124215083105ull, 10838346900762657550ull, 2997737331383959363ull}}, {{6378893352571241950ull, 16308085942123629690ull, 8936247607525934033ull, 3747171664229949204ull}}, {{8598494363784414123ull, 3275024686186186700ull, 14808526791558484579ull, 2341982290143718252ull}}, {{10748117954730517653ull, 17928838913014897087ull, 63914415738554107ull, 2927477862679647816ull}}, {{8823461424985759162ull, 17799362622841233455ull, 79893019673192634ull, 3659347328349559770ull}}, {{6417640762804811049ull, 13025831241696766011ull, 9323238311446266601ull, 4574184160436949712ull}}, {{1705182467539312954ull, 1223615498419396901ull, 5827023944653916626ull, 2858865100273093570ull}}, {{6743164102851529096ull, 10752891409879021934ull, 16507151967672171590ull, 3573581375341366962ull}}, {{17652327165419187178ull, 4217742225494001609ull, 11410567922735438680ull, 4466976719176708703ull}}, {{4115175450745910130ull, 2636088890933751006ull, 14049133979350731031ull, 2791860449485442939ull}}, {{14367341350287163471ull, 17130169168949352469ull, 12949731455761025884ull, 3489825561856803674ull}}, {{4124118632576790626ull, 2965967387477138971ull, 6963792282846506548ull, 4362281952321004593ull}}, {{271731136146800190ull, 11077101654027987665ull, 15881585222847536352ull, 2726426220200627870ull}}, {{4951349938610888141ull, 13846377067534984581ull, 10628609491704644632ull, 3408032775250784838ull}}, {{10800873441690998080ull, 17307971334418730726ull, 4062389827776029982ull, 4260040969063481048ull}}, {{2138859882629485896ull, 6205796065584318800ull, 2538993642360018739ull, 2662525605664675655ull}}, {{2673574853286857370ull, 3145559063553010596ull, 17008800108232187136ull, 3328157007080844568ull}}, {{3341968566608571713ull, 3931948829441263245ull, 2814256061580682304ull, 4160196258851055711ull}}, {{4394573363344051273ull, 2457468018400789528ull, 8676439066129008296ull, 2600122661781909819ull}}, {{5493216704180064091ull, 3071835023000986910ull, 6233862814233872466ull, 3250153327227387274ull}}, {{16089892917079855921ull, 13063165815606009445ull, 17015700554647116390ull, 4062691659034234092ull}}, {{12362026082388603903ull, 3552792616326367999ull, 1411440809799671936ull, 2539182286896396308ull}}, {{10840846584558366974ull, 4440990770407959999ull, 1764301012249589920ull, 3173977858620495385ull}}, {{8939372212270570814ull, 5551238463009949999ull, 6817062283739375304ull, 3967472323275619231ull}}, {{12504636660310188615ull, 3469524039381218749ull, 11178192954978191421ull, 2479670202047262019ull}}, {{1795737770105572057ull, 8948591067653911341ull, 9361055175295351372ull, 3099587752559077524ull}}, {{6856358231059352975ull, 11185738834567389176ull, 11701318969119189215ull, 3874484690698846905ull}}, {{4285223894412095609ull, 13908615799245700091ull, 395795328058411403ull, 2421552931686779316ull}}, {{744843849587731607ull, 12774083730629737210ull, 494744160073014254ull, 3026941164608474145ull}}, {{10154426848839440317ull, 6744232626432395704ull, 5230116218518655722ull, 3783676455760592681ull}}, {{6346516780524650198ull, 8826831409947635219ull, 14798037682642629586ull, 2364797784850370425ull}}, {{3321459957228424844ull, 1810167225579768216ull, 4662489048021123271ull, 2955997231062963032ull}}, {{4151824946535531055ull, 16097767087256873982ull, 5828111310026404088ull, 3694996538828703790ull}}, {{16429948646866870621ull, 10061104429535546238ull, 17477627624048666267ull, 2309372836767939868ull}}, {{11314063771728812469ull, 7964694518492044894ull, 3400290456351281218ull, 2886716045959924836ull}}, {{4919207677806239778ull, 732496111260280310ull, 4250363070439101523ull, 3608395057449906045ull}}, {{15372381634112575530ull, 14750678194357514099ull, 9924639856476264807ull, 4510493821812382556ull}}, {{7301895512106665754ull, 16136702899114528168ull, 15426271947152441312ull, 2819058638632739097ull}}, {{9127369390133332193ull, 1724134550183608594ull, 5447781878658387929ull, 3523823298290923872ull}}, {{2185839700811889433ull, 6766854206156898647ull, 6809727348322984911ull, 4404779122863654840ull}}, {{8283678840648512752ull, 11146812906489143510ull, 4256079592701865569ull, 2752986951789784275ull}}, {{1131226513955865132ull, 98458077829265676ull, 708413472449944058ull, 3441233689737230344ull}}, {{1414033142444831414ull, 9346444634141357903ull, 885516840562430072ull, 4301542112171537930ull}}, {{7801299741669101490ull, 5841527896338348689ull, 5165134043778906699ull, 2688463820107211206ull}}, {{14363310695513764767ull, 2690223851995547957ull, 15679789591578409182ull, 3360579775134014007ull}}, {{4119080314110042246ull, 12586151851849210755ull, 14988050971045623573ull, 4200724718917517509ull}}, {{268582187105082452ull, 10172187916619450674ull, 11673374866117208685ull, 2625452949323448443ull}}, {{9559099770736128873ull, 17326920914201701246ull, 9980032564219122952ull, 3281816186654310554ull}}, {{2725502676565385283ull, 3211907069042574942ull, 3251668668419127883ull, 4102270233317888193ull}}, {{15538497228135529514ull, 18148342982647467002ull, 13561507963830424686ull, 2563918895823680120ull}}, {{10199749498314636084ull, 13462056691454557945ull, 16951884954788030858ull, 3204898619779600150ull}}, {{17361372891320683009ull, 7604198827463421623ull, 11966484156630262765ull, 4006123274724500188ull}}, {{17768387084716508737ull, 7058467276378332466ull, 16702424634748690036ull, 2503827046702812617ull}}, {{12987111819040860113ull, 8823084095472915583ull, 7042972738153698833ull, 3129783808378515772ull}}, {{11622203755373687237ull, 15640541137768532383ull, 8803715922692123541ull, 3912229760473144715ull}}, {{14181406374749636380ull, 12081181220319026691ull, 3196479442468883261ull, 2445143600295715447ull}}, {{13115071950009657570ull, 1266418470116619652ull, 17830657358368267789ull, 3056429500369644308ull}}, {{16393839937512071963ull, 6194709106073162469ull, 3841577624250783120ull, 3820536875462055386ull}}, {{12551992970158738929ull, 3871693191295726543ull, 7012672033584127354ull, 2387835547163784616ull}}, {{11078305194271035757ull, 14062988525974433987ull, 8765840041980159192ull, 2984794433954730770ull}}, {{9236195474411406792ull, 17578735657468042484ull, 1733928015620423182ull, 3730993042443413463ull}}, {{14995994208361905053ull, 6375023767490138648ull, 8001234037403846345ull, 2331870651527133414ull}}, {{298248686742829701ull, 12580465727790061215ull, 778170509900032123ull, 2914838314408916768ull}}, {{14207868913710700838ull, 11113896141310188614ull, 972713137375040154ull, 3643547893011145960ull}}, {{8536464105283600239ull, 4668998139782959960ull, 1215891421718800193ull, 4554434866263932450ull}}, {{5335290065802250149ull, 14447338883432819735ull, 5371618157001638024ull, 2846521791414957781ull}}, {{2057426563825424783ull, 18059173604291024669ull, 11326208714679435434ull, 3558152239268697226ull}}, {{7183469223209168882ull, 13350594968509005028ull, 4934388856494518485ull, 4447690299085871533ull}}, {{13713040301360506360ull, 10649964864531822094ull, 5389836044522768005ull, 2779806436928669708ull}}, {{7917928339845857141ull, 17924142099092165522ull, 6737295055653460006ull, 3474758046160837135ull}}, {{674038387952545619ull, 13181805587010431095ull, 3809932801139437104ull, 4343447557701046419ull}}, {{7338803020111422868ull, 8238628491881519434ull, 75364991498454238ull, 2714654723563154012ull}}, {{18396875811994054393ull, 1074913577997123484ull, 94206239373067798ull, 3393318404453942515ull}}, {{4549350691283016375ull, 10567014009351180164ull, 13952815854498498459ull, 4241648005567428143ull}}, {{12066716218906661042ull, 4298540746630793650ull, 15638038936702643393ull, 2651030003479642589ull}}, {{5860023236778550495ull, 9984861951715879967ull, 5712490615596140529ull, 3313787504349553237ull}}, {{2713343027545800214ull, 17092763458072237863ull, 11752299287922563565ull, 4142234380436941546ull}}, {{8613368419857206990ull, 12988820170508842616ull, 11956873073378990132ull, 2588896487773088466ull}}, {{10766710524821508738ull, 16236025213136053270ull, 5722719304868961857ull, 3236120609716360583ull}}, {{4235016119172110114ull, 6459973461137902876ull, 2541713112658814418ull, 4045150762145450729ull}}, {{11870257111337344629ull, 8649169431638577201ull, 13117785741480228771ull, 2528219226340906705ull}}, {{1002763333889517075ull, 6199775771120833598ull, 2562174121568122252ull, 3160274032926133382ull}}, {{10476826204216672151ull, 7749719713901041997ull, 12426089688814928623ull, 3950342541157666727ull}}, {{8853859386849114047ull, 11761103848829233104ull, 14683835083150412245ull, 2468964088223541704ull}}, {{11067324233561392558ull, 866321755754377668ull, 18354793853938015307ull, 3086205110279427130ull}}, {{13834155291951740698ull, 14917960249975135797ull, 13720120280567743325ull, 3857756387849283913ull}}, {{10952190066683531888ull, 11629568165448153825ull, 1657546147713757722ull, 2411097742405802446ull}}, {{18301923601781802764ull, 5313588169955416473ull, 11295304721496972961ull, 3013872178007253057ull}}, {{9042346446945089743ull, 11253671230871658496ull, 284072846589052489ull, 3767340222509066322ull}}, {{5651466529340681090ull, 116015491653704704ull, 4789231547545545710ull, 2354587639068166451ull}}, {{7064333161675851362ull, 9368391401421906688ull, 1374853416004544233ull, 2943234548835208064ull}}, {{8830416452094814202ull, 16322175270204771264ull, 1718566770005680291ull, 3679043186044010080ull}}, {{11038020565118517753ull, 15791033069328576176ull, 2148208462507100364ull, 4598803982555012600ull}}, {{6898762853199073596ull, 646023631475584302ull, 1342630289066937728ull, 2874252489096882875ull}}, {{17846825603353617802ull, 807529539344480377ull, 15513345916615835872ull, 3592815611371103593ull}}, {{8473473948909858541ull, 1009411924180600472ull, 5556624340487631128ull, 4491019514213879492ull}}, {{5295921218068661588ull, 630882452612875295ull, 12696262249659545263ull, 2806887196383674682ull}}, {{2008215504158439081ull, 14623661121048257831ull, 6646955775219655770ull, 3508608995479593353ull}}, {{16345327435480212563ull, 9056204364455546480ull, 12920380737451957617ull, 4385761244349491691ull}}, {{10215829647175132852ull, 17189342773853186310ull, 5769394951693779558ull, 2741100777718432307ull}}, {{3546415022114140257ull, 12263306430461707080ull, 2600057671189836544ull, 3426375972148040384ull}}, {{4433018777642675321ull, 15329133038077133850ull, 3250072088987295680ull, 4282969965185050480ull}}, {{7382322754454059980ull, 9580708148798208656ull, 2031295055617059800ull, 2676856228240656550ull}}, {{9227903443067574975ull, 11975885185997760820ull, 11762490856376100558ull, 3346070285300820687ull}}, {{11534879303834468718ull, 5746484445642425217ull, 10091427552042737794ull, 4182587856626025859ull}}, {{291770537255461093ull, 8203238796953903665ull, 4001299210813017169ull, 2614117410391266162ull}}, {{4976399189996714270ull, 14865734514619767485ull, 14224996050371047269ull, 3267646762989082702ull}}, {{10832185005923280742ull, 4747110087992545644ull, 8557873026109033279ull, 4084558453736353378ull}}, {{15993487665556826272ull, 9884472832636422883ull, 9960356659745533703ull, 2552849033585220861ull}}, {{15380173563518644936ull, 7743905022368140700ull, 17062131843109305033ull, 3191061291981526076ull}}, {{778472880688754553ull, 14291567296387563780ull, 2880920730177079675ull, 3988826614976907596ull}}, {{9709917587285247404ull, 6626386551028533410ull, 11023947493215450605ull, 2493016634360567247ull}}, {{2914024947251783447ull, 12894669207213054667ull, 9168248348091925352ull, 3116270792950709059ull}}, {{17477589239346893021ull, 16118336509016318333ull, 6848624416687518786ull, 3895338491188386324ull}}, {{13229336283805502090ull, 14685646336562586862ull, 13503762297284475049ull, 2434586556992741452ull}}, {{7313298317902101804ull, 4521999865421069866ull, 16879702871605593812ull, 3043233196240926815ull}}, {{18364994934232403063ull, 5652499831776337332ull, 16487942571079604361ull, 3804041495301158519ull}}, {{2254749797040476107ull, 15062027440928680593ull, 17222493134565834581ull, 2377525934563224074ull}}, {{7430123264727983037ull, 4992476245878687029ull, 12304744381352517419ull, 2971907418204030093ull}}, {{13899340099337366701ull, 1628909288920970882ull, 1545872421408483062ull, 3714884272755037617ull}}, {{13298773580513242092ull, 14853126360857770513ull, 12495385309448771673ull, 2321802670471898510ull}}, {{2788408920359388903ull, 4731349895790049430ull, 6395859599956188784ull, 2902253338089873138ull}}, {{12708883187304011937ull, 5914187369737561787ull, 17218196536800011788ull, 3627816672612341422ull}}, {{11274417965702627017ull, 7392734212171952234ull, 12299373634145238927ull, 4534770840765426778ull}}, {{11658197246991529790ull, 11537987910248552002ull, 12298794539768162233ull, 2834231775478391736ull}}, {{5349374521884636429ull, 587426832528526291ull, 15373493174710202792ull, 3542789719347989670ull}}, {{2075032133928407632ull, 734283540660657864ull, 9993494431532977682ull, 4428487149184987088ull}}, {{1296895083705254770ull, 5070613231340299069ull, 6245934019708111051ull, 2767804468240616930ull}}, {{6232804873058956367ull, 1726580520747985932ull, 17030789561489914622ull, 3459755585300771162ull}}, {{7791006091323695458ull, 11381597687789758223ull, 12065114915007617469ull, 4324694481625963953ull}}, {{11786907834718391518ull, 9419341564082292841ull, 623167794238679062ull, 2702934051016227471ull}}, {{898576738115825685ull, 2550804918248090244ull, 14614017798080512540ull, 3378667563770284338ull}}, {{1123220922644782106ull, 3188506147810112805ull, 9044150210745864867ull, 4223334454712855423ull}}, {{3007856085866682768ull, 18133717406877178167ull, 12570122909357247397ull, 2639584034195534639ull}}, {{17594878162615517172ull, 8832088703314308996ull, 11100967618269171343ull, 3299480042744418299ull}}, {{3546853629559844849ull, 6428424860715498342ull, 9264523504409076275ull, 4124350053430522874ull}}, {{16051841573757066743ull, 1711922528733492511ull, 10402013208683060576ull, 2577718783394076796ull}}, {{15453115948768945525ull, 2139903160916865639ull, 13002516510853825720ull, 3222148479242595995ull}}, {{14704708917533794002ull, 2674878951146082049ull, 11641459620139894246ull, 4027685599053244994ull}}, {{2272914045817539395ull, 15506857399748464993ull, 11887598281014821807ull, 2517303499408278121ull}}, {{7452828575699312148ull, 14771885731258193337ull, 1024439795986363547ull, 3146629374260347652ull}}, {{13927721738051528089ull, 13853171145645353767ull, 1280549744982954434ull, 3933286717825434565ull}}, {{15622355113923286912ull, 13269917984455734008ull, 3106186599828040473ull, 2458304198640896603ull}}, {{1081199818694557023ull, 2752339425287503799ull, 17717791305067214304ull, 3072880248301120753ull}}, {{15186557828650359991ull, 3440424281609379748ull, 8312181076051854168ull, 3841100310376400942ull}}, {{268226606051699187ull, 2150265176005862343ull, 583427154105020951ull, 2400687693985250589ull}}, {{14170341312846787695ull, 16522889525289491640ull, 5340969961058664092ull, 3000859617481563236ull}}, {{17712926641058484619ull, 2206867832902312934ull, 6676212451323330116ull, 3751074521851954045ull}}, {{6458893132234164983ull, 10602664432418721392ull, 6478475791290775274ull, 2344421576157471278ull}}, {{8073616415292706229ull, 4029958503668625932ull, 17321466775968244901ull, 2930526970196839097ull}}, {{10092020519115882786ull, 9649134148013170319ull, 7816775414678142414ull, 3663158712746048872ull}}, {{8003339630467465578ull, 2838045648161687091ull, 9770969268347678018ull, 4578948390932561090ull}}, {{2696244259828472034ull, 6385464548528442336ull, 10718541811144686665ull, 2861842744332850681ull}}, {{3370305324785590043ull, 12593516704087940824ull, 18009863282358246235ull, 3577303430416063351ull}}, {{4212881655981987553ull, 11130209861682538126ull, 17900643084520419890ull, 4471629288020079189ull}}, {{16468109090270905933ull, 11568067181978974232ull, 13493744937038956383ull, 2794768305012549493ull}}, {{2138392289129080800ull, 9848397959046329887ull, 3032123116016531767ull, 3493460381265686867ull}}, {{16508048416693514712ull, 7698811430380524454ull, 17625211950302828421ull, 4366825476582108583ull}}, {{5705844242006058791ull, 7117600153201521736ull, 17933286496580349619ull, 2729265922863817864ull}}, {{7132305302507573489ull, 4285314173074514266ull, 3969864047015885408ull, 3411582403579772331ull}}, {{18138753664989242669ull, 5356642716343142832ull, 350644040342468856ull, 4264478004474715414ull}}, {{11336721040618276668ull, 3347901697714464270ull, 14054210580496206747ull, 2665298752796697133ull}}, {{4947529263918070027ull, 18019935177425244050ull, 3732705170338094721ull, 3331623440995871417ull}}, {{15407783616752363342ull, 8689860916499391350ull, 9277567481350006306ull, 4164529301244839271ull}}, {{5018178742042839185ull, 10042849091239507498ull, 12716008703484835797ull, 2602830813278024544ull}}, {{15496095464408324789ull, 17165247382476772276ull, 15895010879356044746ull, 3253538516597530680ull}}, {{923375256800854370ull, 12233187191241189538ull, 1422019525485504317ull, 4066923145746913351ull}}, {{5188795553927921886ull, 9951585003739437413ull, 7806291231069522054ull, 2541826966091820844ull}}, {{11097680460837290261ull, 3216109217819520958ull, 9757864038836902568ull, 3177283707614776055ull}}, {{4648728539191837018ull, 4020136522274401198ull, 7585644030118740306ull, 3971604634518470069ull}}, {{16740513392277061848ull, 7124271344848888652ull, 7046870528037906643ull, 2482252896574043793ull}}, {{2478897666636775694ull, 4293653162633722912ull, 13420274178474771208ull, 3102816120717554741ull}}, {{3098622083295969618ull, 5367066453292153640ull, 2940284667811300298ull, 3878520150896943427ull}}, {{1936638802059981011ull, 7966102551734983929ull, 17978578981877920350ull, 2424075094310589641ull}}, {{7032484521002364168ull, 734256152813954103ull, 8638165672065236726ull, 3030093867888237052ull}}, {{4178919632825567306ull, 10141192227872218437ull, 10797707090081545907ull, 3787617334860296315ull}}, {{4917667779729673518ull, 4032402133206442571ull, 4442723922087272240ull, 2367260834287685197ull}}, {{1535398706234703994ull, 5040502666508053214ull, 10165090921036478204ull, 2959076042859606496ull}}, {{11142620419648155800ull, 6300628333135066517ull, 12706363651295597755ull, 3698845053574508120ull}}, {{9269980771493791327ull, 1632049698995722621ull, 7941477282059748597ull, 2311778158484067575ull}}, {{16199161982794627063ull, 6651748142172041180ull, 5315160584147297842ull, 2889722698105084469ull}}, {{1802208404783732213ull, 17538057214569827284ull, 11255636748611510206ull, 3612153372631355586ull}}, {{2252760505979665266ull, 12699199481357508297ull, 4846173898909611950ull, 4515191715789194483ull}}, {{12937190362305760551ull, 3325313657421054781ull, 723015677604813517ull, 2821994822368246552ull}}, {{2336429897600036977ull, 8768328090203706381ull, 903769597006016896ull, 3527493527960308190ull}}, {{7532223390427434125ull, 10960410112754632976ull, 10353084033112296928ull, 4409366909950385237ull}}, {{4707639619017146328ull, 6850256320471645610ull, 8776520529908879532ull, 2755854318718990773ull}}, {{15107921560626208718ull, 8562820400589557012ull, 15582336680813487319ull, 3444817898398738466ull}}, {{438157877073209282ull, 6091839482309558362ull, 10254548814162083341ull, 4306022372998423083ull}}, {{4885534691598143705ull, 6113242685657167928ull, 4103249999637608136ull, 2691263983124014427ull}}, {{6106918364497679631ull, 7641553357071459910ull, 517376481119622266ull, 3364079978905018034ull}}, {{16857019992476875347ull, 328569659484549079ull, 9870092638254303641ull, 4205099973631272542ull}}, {{17453166522939128948ull, 11734571083246312934ull, 1557121880481551871ull, 2628187483519545339ull}}, {{12593086116819135377ull, 10056527835630503264ull, 15781460405884103551ull, 3285234354399431673ull}}, {{15741357646023919221ull, 7958973776110741176ull, 5891767452072965727ull, 4106542942999289592ull}}, {{9838348528764949513ull, 11891887637710295091ull, 3682354657545603579ull, 2566589339374555995ull}}, {{7686249642528798988ull, 10253173528710480960ull, 18438001377214168186ull, 3208236674218194993ull}}, {{9607812053160998735ull, 3593094874033325392ull, 9212443666235546521ull, 4010295842772743742ull}}, {{6004882533225624209ull, 13774899342339298130ull, 1146091272969828671ull, 2506434901732964839ull}}, {{16729475203386806069ull, 12606938159496734758ull, 15267672146494449551ull, 3133043627166206048ull}}, {{11688471967378731779ull, 11146986680943530544ull, 637846109408510323ull, 3916304533957757561ull}}, {{7305294979611707362ull, 4661023666376012638ull, 11927868864448788712ull, 2447690333723598475ull}}, {{18354990761369410010ull, 5826279582970015797ull, 10298150062133597986ull, 3059612917154498094ull}}, {{9108680396429598801ull, 16506221515567295555ull, 3649315540812221674ull, 3824516146443122618ull}}, {{3387082238554805299ull, 14928074465656947626ull, 6892508231435026450ull, 2390322591526951636ull}}, {{13457224835048282431ull, 9436721045216408724ull, 8615635289293783063ull, 2987903239408689545ull}}, {{16821531043810353039ull, 7184215288093123001ull, 15381230130044616733ull, 3734879049260861931ull}}, {{3595927874740388793ull, 6795977564271895828ull, 7307425822064191506ull, 2334299405788038707ull}}, {{4494909843425485992ull, 17718343992194645593ull, 4522596259152851478ull, 2917874257235048384ull}}, {{10230323322709245393ull, 12924557953388531183ull, 5653245323941064348ull, 3647342821543810480ull}}, {{8176218134959168838ull, 16155697441735663979ull, 7066556654926330435ull, 4559178526929763100ull}}, {{2804293325135786572ull, 7791467891871096035ull, 13639969946183732330ull, 2849486579331101937ull}}, {{17340424711701896927ull, 515962827984094235ull, 3214904377447501701ull, 3561858224163877422ull}}, {{17063844871199983254ull, 5256639553407505698ull, 13242002508664152934ull, 4452322780204846777ull}}, {{15276589062927377438ull, 17120457776161854773ull, 1358722540274013727ull, 2782701737628029236ull}}, {{5260678273377058085ull, 16788886201774930563ull, 1698403175342517159ull, 3478377172035036545ull}}, {{1964161823293934703ull, 16374421733791275300ull, 6734689987605534353ull, 4347971465043795681ull}}, {{10450973176413484997ull, 3316484555978465206ull, 15738396288321928731ull, 2717482165652372300ull}}, {{3840344433662080438ull, 17980663750255245220ull, 1226251286692859297ull, 3396852707065465376ull}}, {{4800430542077600548ull, 8640771632536892813ull, 1532814108366074122ull, 4246065883831831720ull}}, {{5306112098012194295ull, 10012168288762945912ull, 958008817728796326ull, 2653791177394894825ull}}, {{6632640122515242868ull, 3291838324098906582ull, 5809197040588383312ull, 3317238971743618531ull}}, {{17514172189998829393ull, 4114797905123633227ull, 2649810282308091236ull, 4146548714679523164ull}}, {{8640514609535574419ull, 11795120727557046575ull, 10879503463297332830ull, 2591592946674701977ull}}, {{6188957243492080119ull, 5520528872591532411ull, 18211065347549053942ull, 3239491183343377471ull}}, {{3124510535937712245ull, 16124033127594191322ull, 18152145666008929523ull, 4049363979179221839ull}}, {{6564505103388458057ull, 7771677695532675624ull, 18262620068896662808ull, 2530852486987013649ull}}, {{8205631379235572572ull, 9714597119415844530ull, 8993217030838664798ull, 3163565608733767062ull}}, {{1033667187189689907ull, 2919874362415029855ull, 2018149251693555190ull, 3954457010917208828ull}}, {{7563571019634638048ull, 15659979531791557371ull, 10484715319163247801ull, 2471535631823255517ull}}, {{4842777756115909656ull, 5739916359457283002ull, 17717580167381447656ull, 3089419539779069396ull}}, {{15276844231999662877ull, 7174895449321603752ull, 3700231135517257954ull, 3861774424723836746ull}}, {{9548027644999789299ull, 9095995674253390249ull, 6924330478125674125ull, 2413609015452397966ull}}, {{16546720574677124527ull, 15981680611244125715ull, 17878785134511868464ull, 3017011269315497457ull}}, {{16071714699919017755ull, 1530356690345605528ull, 8513423362857671869ull, 3771264086644371822ull}}, {{10044821687449386097ull, 3262315940679697407ull, 709203583358657014ull, 2357040054152732389ull}}, {{7944341090884344717ull, 13301266962704397567ull, 5498190497625709171ull, 2946300067690915486ull}}, {{5318740345178042992ull, 12014897684953109055ull, 16096110158886912272ull, 3682875084613644357ull}}, {{2036739413045165836ull, 15018622106191386319ull, 6285079643326476628ull, 4603593855767055447ull}}, {{8190491160794310504ull, 163266779514840641ull, 10845703804720129749ull, 2877246159854409654ull}}, {{14849799969420276033ull, 4815769492820938705ull, 4333757719045386378ull, 3596557699818012068ull}}, {{4727191906493181330ull, 15243083902880949190ull, 5417197148806732972ull, 4495697124772515085ull}}, {{16789552996840402043ull, 303555402445817435ull, 5691591227217902060ull, 2809810702982821928ull}}, {{16375255227623114650ull, 379444253057271794ull, 7114489034022377575ull, 3512263378728527410ull}}, {{11245696997674117504ull, 14309363371603753455ull, 18116483329382747776ull, 4390329223410659262ull}}, {{13946089651187405296ull, 8943352107252345909ull, 6711116062436829456ull, 2743955764631662039ull}}, {{3597554008702092908ull, 11179190134065432387ull, 3777209059618648916ull, 3429944705789577549ull}}, {{18332000566159779847ull, 13973987667581790483ull, 9333197342950699049ull, 4287430882236971936ull}}, {{9151657344636168453ull, 1816213264597537196ull, 5833248339344186906ull, 2679644301398107460ull}}, {{11439571680795210566ull, 11493638617601697303ull, 7291560424180233632ull, 3349555376747634325ull}}, {{9687778582566625303ull, 14367048272002121629ull, 13726136548652679944ull, 4186944220934542906ull}}, {{8360704623317834767ull, 8979405170001326018ull, 13190521361335312869ull, 2616840138084089316ull}}, {{1227508742292517650ull, 15835942480929045427ull, 16488151701669141086ull, 3271050172605111645ull}}, {{15369443983147810775ull, 10571556064306530975ull, 6775131571804262646ull, 4088812715756389557ull}}, {{16523431517108463590ull, 1995536521764193955ull, 6540300241591358106ull, 2555507947347743473ull}}, {{16042603377958191584ull, 11717792689060018252ull, 12787061320416585536ull, 3194384934184679341ull}}, {{1606510148738187864ull, 14647240861325022816ull, 2148768595238568208ull, 3992981167730849177ull}}, {{1004068842961367415ull, 9154525538328139260ull, 12872195418092574890ull, 2495613229831780735ull}}, {{1255086053701709269ull, 2219784886055398267ull, 11478558254188330709ull, 3119516537289725919ull}}, {{15403915622409300298ull, 7386417125996635737ull, 9736511799308025482ull, 3899395671612157399ull}}, {{2709918236364730830ull, 9228196722175285240ull, 13002848902208597782ull, 2437122294757598374ull}}, {{3387397795455913538ull, 2311873865864330742ull, 7030189090905971420ull, 3046402868446997968ull}}, {{13457619281174667730ull, 2889842332330413427ull, 8787736363632464275ull, 3808003585558747460ull}}, {{6105169041520473379ull, 17947052522202366056ull, 14715707264125065979ull, 2380002240974217162ull}}, {{7631461301900591724ull, 17822129634325569666ull, 9171262043301556666ull, 2975002801217771453ull}}, {{315954590520963847ull, 13054290006052186275ull, 16075763572554333737ull, 3718753501522214316ull}}, {{16338372683571460069ull, 1241402226141534565ull, 823980195991682778ull, 2324220938451383948ull}}, {{6587907799182161374ull, 10775124819531694015ull, 1029975244989603472ull, 2905276173064229935ull}}, {{3623198730550313813ull, 13468906024414617519ull, 15122527111519168052ull, 3631595216330287418ull}}, {{18364056468470055978ull, 16836132530518271898ull, 9679786852544184257ull, 4539494020412859273ull}}, {{16089221311221172890ull, 3605053803932838080ull, 17579081828908584921ull, 2837183762758037045ull}}, {{1664782565316914497ull, 9118003273343435505ull, 8138794230853567439ull, 3546479703447546307ull}}, {{6692664225073531025ull, 6785818073251906477ull, 5561806770139571395ull, 4433099629309432884ull}}, {{6488758149884650843ull, 1935293286568747596ull, 12699501268192007930ull, 2770687268318395552ull}}, {{8110947687355813553ull, 11642488645065710303ull, 15874376585240009912ull, 3463359085397994440ull}}, {{5526998590767379037ull, 14553110806332137879ull, 1396226657840460774ull, 4329198856747493051ull}}, {{10371903146870693755ull, 4484008235530198270ull, 17013542725646145648ull, 2705749285467183156ull}}, {{3741506896733591385ull, 5605010294412747838ull, 2820184333348130444ull, 3382186606833978946ull}}, {{13900255657771765039ull, 7006262868015934797ull, 12748602453539938863ull, 4227733258542473682ull}}, {{10993502795321047102ull, 11296443320151041104ull, 12579562551889849693ull, 2642333286589046051ull}}, {{13741878494151308877ull, 285496094906637668ull, 11112767171434924213ull, 3302916608236307564ull}}, {{17177348117689136096ull, 4968556137060684989ull, 13890958964293655266ull, 4128645760295384455ull}}, {{13041685582769404012ull, 7717033604090316022ull, 15599378380324616397ull, 2580403600184615284ull}}, {{7078734941606979207ull, 14257978023540282932ull, 1052478901696218880ull, 3225504500230769106ull}}, {{8848418677008724009ull, 17822472529425353665ull, 10538970663975049408ull, 4031880625288461382ull}}, {{17059476719198922266ull, 11139045330890846040ull, 1975170646557017976ull, 2519925390805288364ull}}, {{2877601825289101216ull, 13923806663613557551ull, 2468963308196272470ull, 3149906738506610455ull}}, {{17432060336893540232ull, 8181386292662171130ull, 16921262190527504300ull, 3937383423133263068ull}}, {{15506723728985850549ull, 14336738469768632764ull, 1352416832224914379ull, 2460864639458289418ull}}, {{936660587522761570ull, 13309237068783403052ull, 10913893077135918782ull, 3076080799322861772ull}}, {{1170825734403451963ull, 7413174299124478007ull, 13642366346419898478ull, 3845100999153577215ull}}, {{7649295111643239333ull, 21547918525410850ull, 15444007994153518405ull, 2403188124470985759ull}}, {{338246852699273358ull, 4638620916584151467ull, 14693323974264510102ull, 3003985155588732199ull}}, {{14257866621156255409ull, 15021648182584965141ull, 13754968949403249723ull, 3754981444485915249ull}}, {{11217009647436353583ull, 7082687104901909261ull, 1679326565735949221ull, 2346863402803697031ull}}, {{186204004013278267ull, 13465044899554774481ull, 15934216262452100238ull, 2933579253504621288ull}}, {{4844441023443985737ull, 7607934087588692293ull, 1471026254355573682ull, 3666974066880776611ull}}, {{10667237297732370076ull, 286545572631089558ull, 15673840873226630815ull, 4583717583600970763ull}}, {{2055337292655343393ull, 7096620010535512830ull, 7490307536552950307ull, 2864823489750606727ull}}, {{11792543652673955050ull, 4259088994742003133ull, 4751198402263799980ull, 3581029362188258409ull}}, {{905621510560280100ull, 5323861243427503917ull, 10550684021257137879ull, 4476286702735323011ull}}, {{2871856453313869015ull, 10244942304783271804ull, 4288334504072017222ull, 2797679189209576882ull}}, {{3589820566642336268ull, 3582805844124313947ull, 14583790166944797336ull, 3497098986511971102ull}}, {{18322333763585084047ull, 4478507305155392433ull, 9006365671826220862ull, 4371373733139963878ull}}, {{4533929574599595674ull, 16634125121004283983ull, 1017292526464000134ull, 2732108583212477424ull}}, {{1055725949822106688ull, 11569284364400579171ull, 1271615658080000168ull, 3415135729015596780ull}}, {{15154715492559797072ull, 14461605455500723963ull, 1589519572600000210ull, 4268919661269495975ull}}, {{7165854173636179218ull, 13650189428115340381ull, 7910978760516081987ull, 2668074788293434984ull}}, {{13569003735472611926ull, 12451050766716787572ull, 9888723450645102484ull, 3335093485366793730ull}}, {{16961254669340764908ull, 15563813458395984465ull, 3137532276451602297ull, 4168866856708492163ull}}, {{3683255140696896212ull, 2809854383856408435ull, 18101858737278109100ull, 2605541785442807601ull}}, {{18439126981153283976ull, 3512317979820510543ull, 8792265366315472663ull, 3256927231803509502ull}}, {{18437222708014217066ull, 18225455530057801891ull, 1766959671039565020ull, 4071159039754386878ull}}, {{9217421183295191715ull, 2167537669431350374ull, 14939407849681891850ull, 2544474399846491798ull}}, {{2298404442264213835ull, 11932794123643963776ull, 9450887775247589004ull, 3180592999808114748ull}}, {{2873005552830267294ull, 14915992654554954720ull, 11813609719059486255ull, 3975741249760143435ull}}, {{1795628470518917059ull, 16240024436737928556ull, 5077663065198484957ull, 2484838281100089647ull}}, {{2244535588148646323ull, 6464972490640246983ull, 1735392813070718293ull, 3106047851375112059ull}}, {{16640727540467971616ull, 12692901631727696632ull, 16004299071620561578ull, 3882559814218890073ull}}, {{10400454712792482260ull, 12544749538257198299ull, 3085157892121769130ull, 2426599883886806296ull}}, {{8388882372563214921ull, 6457564885966722066ull, 3856447365152211413ull, 3033249854858507870ull}}, {{1262730928849242843ull, 12683642125885790487ull, 14043931243295040074ull, 3791562318573134837ull}}, {{7706735858171858633ull, 12538962347106006958ull, 11083300036273093998ull, 2369726449108209273ull}}, {{410047785860047484ull, 6450330897027732890ull, 19066990059203786ull, 2962158061385261592ull}}, {{9735931769179835162ull, 17286285658139441920ull, 23833737574004732ull, 3702697576731576990ull}}, {{6084957355737396977ull, 1580556499482375392ull, 13849954141265916670ull, 2314185985457235618ull}}, {{7606196694671746221ull, 11199067661207745048ull, 8089070639727620029ull, 2892732481821544523ull}}, {{9507745868339682776ull, 163776521227517598ull, 5499652281232137133ull, 3615915602276930654ull}}, {{2661310298569827661ull, 4816406669961784902ull, 16097937388394947224ull, 4519894502846163317ull}}, {{15498376991888306001ull, 3010254168726115563ull, 12367053876960535967ull, 2824934064278852073ull}}, {{14761285221432994597ull, 17597875766189808166ull, 1623759290918506246ull, 3531167580348565092ull}}, {{9228234489936467438ull, 12773972670882484400ull, 2029699113648132808ull, 4413959475435706365ull}}, {{5767646556210292149ull, 7983732919301552750ull, 3574404955243776957ull, 2758724672147316478ull}}, {{16432930232117640994ull, 14591352167554328841ull, 13691378230909497004ull, 3448405840184145597ull}}, {{6706104734864887530ull, 18239190209442911052ull, 3279164733354707543ull, 4310507300230181997ull}}, {{13414687496145330515ull, 18317022908542901263ull, 4355320967560386166ull, 2694067062643863748ull}}, {{12156673351754275239ull, 13672906598823850771ull, 5444151209450482708ull, 3367583828304829685ull}}, {{10584155671265456145ull, 17091133248529813464ull, 11416875030240491289ull, 4209479785381037106ull}}, {{6615097294540910091ull, 3764429252690051559ull, 11747232912327694960ull, 2630924865863148191ull}}, {{3657185599748749709ull, 4705536565862564449ull, 10072355121982230796ull, 3288656082328935239ull}}, {{9183168018113325040ull, 5881920707328205561ull, 7978757884050400591ull, 4110820102911169049ull}}, {{17268695057389297910ull, 10593729469721210331ull, 16515938723599970129ull, 2569262564319480655ull}}, {{16974182803309234484ull, 17853847855578900818ull, 16033237386072574757ull, 3211578205399350819ull}}, {{11994356467281767297ull, 8482251764191462311ull, 15429860714163330543ull, 4014472756749188524ull}}, {{14414001819692186417ull, 12218936380260745800ull, 420290909497305781ull, 2509045472968242828ull}}, {{18017502274615233021ull, 1438612420043768538ull, 525363636871632227ull, 3136306841210303535ull}}, {{13298505806414265468ull, 15633323580336874385ull, 14491762601371703995ull, 3920383551512879418ull}}, {{1394037101367834061ull, 7464984228496852539ull, 13669037644284702901ull, 2450239719695549636ull}}, {{15577604431991956289ull, 13942916304048453577ull, 17086297055355878626ull, 3062799649619437045ull}}, {{5636947484707781649ull, 8205273343205791164ull, 7522813263912684571ull, 3828499562024296307ull}}, {{12746464214797139339ull, 2822452830289925525ull, 2395915280731733905ull, 2392812226265185192ull}}, {{2098022213214260461ull, 8139752056289794811ull, 2994894100914667381ull, 2991015282831481490ull}}, {{16457585821799989288ull, 14786376088789631417ull, 12966989662998110034ull, 3738769103539351862ull}}, {{3368462110983911449ull, 13853171073920907540ull, 3492682520946430867ull, 2336730689712094914ull}}, {{4210577638729889312ull, 12704777823973746521ull, 13589225188037814392ull, 2920913362140118642ull}}, {{9874908066839749543ull, 15880972279967183151ull, 7763159448192492182ull, 3651141702675148303ull}}, {{7731949065122299025ull, 10627843313104203131ull, 5092263291813227324ull, 4563927128343935379ull}}, {{2526625156487742939ull, 15865774107544902765ull, 876821548169573125ull, 2852454455214959612ull}}, {{7769967464037066578ull, 5997159579148964744ull, 1096026935211966407ull, 3565568069018699515ull}}, {{9712459330046333222ull, 2884763455508818026ull, 15205091724297121721ull, 4456960086273374393ull}}, {{10681973099706346168ull, 13332192205761481026ull, 2585653300044619219ull, 2785600053920858996ull}}, {{4129094337778156902ull, 12053554238774463379ull, 3232066625055774024ull, 3482000067401073745ull}}, {{549681903795308223ull, 15066942798468079224ull, 8651769299747105434ull, 4352500084251342181ull}}, {{343551189872067640ull, 14028525267469937419ull, 7713198821555634848ull, 2720312552657088863ull}}, {{14264497042622248261ull, 17535656584337421773ull, 5029812508517155656ull, 3400390690821361079ull}}, {{3995563247995646614ull, 3472826656712225601ull, 1675579617219056667ull, 4250488363526701349ull}}, {{14026442076065748894ull, 18311417724940998664ull, 3353080269975604368ull, 2656555227204188343ull}}, {{17533052595082186118ull, 4442528082466696714ull, 18026408392751669173ull, 3320694034005235428ull}}, {{12692943706997956839ull, 10164846121510758797ull, 4086266417230034850ull, 4150867542506544286ull}}, {{10238932826087416977ull, 10964714844371612152ull, 16388974566050935493ull, 2594292214066590178ull}}, {{12798666032609271221ull, 18317579573891903094ull, 11262846170708893558ull, 3242865267583237723ull}}, {{6774960503906813218ull, 13673602430510103060ull, 9466871694958729044ull, 4053581584479047154ull}}, {{13457722351796534069ull, 17769373555923590220ull, 10528480827776593556ull, 2533488490299404471ull}}, {{16822152939745667586ull, 3764972871194936159ull, 8548915016293354042ull, 3166860612874255589ull}}, {{16416005156254696579ull, 13929588125848446007ull, 15297829788794080456ull, 3958575766092819486ull}}, {{17177532250300267218ull, 8705992578655278754ull, 4949457599568912381ull, 2474109853808012179ull}}, {{12248543276020558214ull, 15494176741746486347ull, 1575135981033752572ull, 3092637317260015224ull}}, {{10698993076598309864ull, 920976853473556318ull, 1968919976292190716ull, 3865796646575019030ull}}, {{2075184654446555761ull, 9798982570275748507ull, 15065633040464782909ull, 2416122904109386893ull}}, {{16429038873340358413ull, 16860414231272073537ull, 4996983245298814924ull, 3020153630136733617ull}}, {{6701240536393284304ull, 2628773715380540306ull, 10857915075050906560ull, 3775192037670917021ull}}, {{8799961353673190594ull, 1642983572112837691ull, 9092039931120510552ull, 2359495023544323138ull}}, {{6388265673664100339ull, 2053729465141047114ull, 2141677877045862382ull, 2949368779430403923ull}}, {{17208704128934901231ull, 11790533868281084700ull, 16512155401589491689ull, 3686710974288004903ull}}, {{3064136087459074923ull, 903109280069192164ull, 16028508233559476708ull, 4608388717860006129ull}}, {{11138457091516697635ull, 9787815336898020910ull, 3100288618333591086ull, 2880242948662503831ull}}, {{4699699327541096236ull, 3011397134267750330ull, 17710418828199152570ull, 3600303685828129788ull}}, {{15097996196281146103ull, 12987618454689463720ull, 3691279461539389096ull, 4500379607285162236ull}}, {{9436247622675716314ull, 8117261534180914825ull, 11530421700316893993ull, 2812737254553226397ull}}, {{16406995546772033297ull, 14758262936153531435ull, 577969070113953779ull, 3515921568191532997ull}}, {{15897058415037653717ull, 13836142651764526390ull, 5334147356069830128ull, 4394901960239416246ull}}, {{5323975490971145669ull, 8647589157352828994ull, 17168900152825807542ull, 2746813725149635153ull}}, {{15878341400568707894ull, 1586114409836260434ull, 7626067135750095716ull, 3433517156437043942ull}}, {{10624554713856109060ull, 1982643012295325543ull, 309211882832843837ull, 4291896445546304928ull}}, {{13557875723801150019ull, 3544994891898272416ull, 193257426770527398ull, 2682435278466440580ull}}, {{16947344654751437523ull, 13654615651727616328ull, 241571783463159247ull, 3353044098083050725ull}}, {{2737436744729745288ull, 12456583546232132507ull, 4913650747756336963ull, 4191305122603813406ull}}, {{17851799029951948469ull, 5479521707181388864ull, 16906089772629874314ull, 2619565701627383378ull}}, {{3868004713730383970ull, 16072774170831511889ull, 11909240178932567084ull, 3274457127034229223ull}}, {{9446691910590367867ull, 1644223639829838245ull, 10274864205238320952ull, 4093071408792786529ull}}, {{8210025453332673869ull, 1027639774893648903ull, 17951005174342420355ull, 2558169630495491580ull}}, {{5650845798238454432ull, 15119607773899224841ull, 3992012394218473827ull, 3197712038119364476ull}}, {{11675243266225455944ull, 14287823698946643147ull, 4990015492773092284ull, 3997140047649205595ull}}, {{4991184032177216013ull, 18153261848696427775ull, 812916673769488725ull, 2498212529780753497ull}}, {{1627294021794132112ull, 8856519255588371007ull, 5627831860639248811ull, 3122765662225941871ull}}, {{15869175582524828852ull, 6458963051058075854ull, 2423103807371673110ull, 3903457077782427339ull}}, {{5306548720650630129ull, 17871909962193461121ull, 17655340944103153357ull, 2439660673614017086ull}}, {{11244871919240675565ull, 8504829397459662689ull, 12845804143274165889ull, 3049575842017521358ull}}, {{221031843768680744ull, 15242722765251966266ull, 6833883142237931553ull, 3811969802521901698ull}}, {{4749830920782813369ull, 2609172700641397060ull, 8882862982326095125ull, 2382481126576188561ull}}, {{5937288650978516711ull, 7873151894229134229ull, 15715264746335006810ull, 2978101408220235701ull}}, {{12033296832150533793ull, 618067830931641978ull, 5809022877636594801ull, 3722626760275294627ull}}, {{12132496538521471525ull, 11915507440400745996ull, 1324796289309177798ull, 2326641725172059142ull}}, {{15165620673151839406ull, 5671012263646156687ull, 10879367398491248056ull, 2908302156465073927ull}}, {{14345339823012411353ull, 7088765329557695859ull, 8987523229686672166ull, 3635377695581342409ull}}, {{13319988760338126287ull, 18084328698801895632ull, 15846090055535728111ull, 4544222119476678011ull}}, {{8324992975211328930ull, 18220234464392266626ull, 7597963275496136117ull, 2840138824672923757ull}}, {{1182869182159385354ull, 8940235025208169571ull, 14109140112797558051ull, 3550173530841154696ull}}, {{15313644532981395405ull, 6563607763082824059ull, 17636425140996947564ull, 4437716913551443370ull}}, {{7265184823899678176ull, 13325626888781540845ull, 15634451731550480131ull, 2773573070969652106ull}}, {{13693167048301985624ull, 12045347592549538152ull, 10319692627583324356ull, 3466966338712065133ull}}, {{17116458810377482030ull, 15056684490686922690ull, 17511301802906543349ull, 4333707923390081416ull}}, {{15309472774913314173ull, 11716270815893020633ull, 10944563626816589593ull, 2708567452118800885ull}}, {{5301782913359479004ull, 810280464584112080ull, 18292390551948124896ull, 3385709315148501106ull}}, {{6627228641699348755ull, 1012850580730140100ull, 13642116153080380312ull, 4232136643935626383ull}}, {{13365389937916868780ull, 633031612956337562ull, 15443851623316319551ull, 2645085402459766489ull}}, {{7483365385541310167ull, 14626347571477585665ull, 5469756473863235726ull, 3306356753074708112ull}}, {{13965892750354025612ull, 9059562427492206273ull, 6837195592329044658ull, 4132945941343385140ull}}, {{1811153941330184152ull, 10273912535610016825ull, 13496619282060428719ull, 2583091213339615712ull}}, {{6875628445090118094ull, 8230704651085133127ull, 16870774102575535899ull, 3228864016674519640ull}}, {{3982849537935259713ull, 5676694795429028505ull, 2641723554509868258ull, 4036080020843149551ull}}, {{14018496007278007081ull, 8159620265570530719ull, 8568606249209749517ull, 2522550013026968469ull}}, {{12911433990670120947ull, 14811211350390551303ull, 15322443829939574800ull, 3153187516283710586ull}}, {{11527606469910263279ull, 67270114278637513ull, 9929682750569692693ull, 3941484395354638233ull}}, {{287225016052832694ull, 2347886830637842398ull, 17735266765174527693ull, 2463427747096648895ull}}, {{9582403306920816675ull, 7546544556724690901ull, 17557397438040771712ull, 3079284683870811119ull}}, {{16589690152078408748ull, 9433180695905863626ull, 17335060779123576736ull, 3849105854838513899ull}}, {{14980242363476393372ull, 5895737934941164766ull, 8528569977738541508ull, 2405691159274071187ull}}, {{9501930917490715906ull, 7369672418676455958ull, 6049026453745788981ull, 3007113949092588984ull}}, {{2654041610008619075ull, 13823776541772957852ull, 7561283067182236226ull, 3758892436365736230ull}}, {{10882148043110162730ull, 13251546357035486561ull, 114115898561509737ull, 2349307772728585144ull}}, {{18214371072315091316ull, 2729374891012194489ull, 142644873201887172ull, 2936634715910731430ull}}, {{8932905785111700433ull, 3411718613765243112ull, 9401678128357134773ull, 3670793394888414287ull}}, {{11166132231389625542ull, 8876334285633941794ull, 7140411642019030562ull, 4588491743610517859ull}}, {{11590518663045903868ull, 10159394946948601525ull, 2156914267048200149ull, 2867807339756573662ull}}, {{653090273525216122ull, 17310929702113139811ull, 11919514870665025994ull, 3584759174695717077ull}}, {{14651420897188683865ull, 12415290090786648955ull, 1064335533049118781ull, 4480948968369646347ull}}, {{6851295051529233464ull, 10065399315955349549ull, 16806110772651556902ull, 2800593105231028966ull}}, {{13175804832838929734ull, 3358377108089411128ull, 11784266428959670320ull, 3500741381538786208ull}}, {{16469756041048662167ull, 4197971385111763910ull, 14730333036199587900ull, 4375926726923482760ull}}, {{5681911507228025950ull, 11847104152549628252ull, 9206458147624742437ull, 2734954204327176725ull}}, {{7102389384035032438ull, 973822135404871603ull, 16119758702958315951ull, 3418692755408970906ull}}, {{4266300711616402643ull, 15052335724538253216ull, 10926326341843119130ull, 4273365944261213633ull}}, {{2666437944760251652ull, 14019395846263796164ull, 18358169009720419216ull, 2670853715163258520ull}}, {{3333047430950314565ull, 17524244807829745205ull, 4500967188440972404ull, 3338567143954073151ull}}, {{8777995307115281110ull, 3458561936077629890ull, 1014522967123827602ull, 4173208929942591439ull}}, {{10097933085374438598ull, 6773287228475906585ull, 7551605882093474107ull, 2608255581214119649ull}}, {{17234102375145436152ull, 3854923017167495327ull, 14051193371044230538ull, 3260319476517649561ull}}, {{16930941950504407285ull, 14042025808314144967ull, 3728933658523124460ull, 4075399345647061952ull}}, {{17499367746706336410ull, 17999638167051116412ull, 2330583536576952787ull, 2547124591029413720ull}}, {{3427465609673368896ull, 17887861690386507612ull, 2913229420721190984ull, 3183905738786767150ull}}, {{4284332012091711120ull, 3913083039273582899ull, 12864908812756264539ull, 3979882173483458937ull}}, {{371864498343625498ull, 139833890332295360ull, 1123038980331583481ull, 2487426358427161836ull}}, {{464830622929531872ull, 4786478381342757104ull, 1403798725414479351ull, 3109282948033952295ull}}, {{581038278661914840ull, 1371411958251058476ull, 15589806462050262901ull, 3886603685042440368ull}}, {{9586520961018472583ull, 3162975483120605499ull, 9743629038781414313ull, 2429127303151525230ull}}, {{7371465182845702825ull, 8565405372328144778ull, 2956164261621992083ull, 3036409128939406538ull}}, {{18437703515411904339ull, 6095070696982793068ull, 12918577363882265912ull, 3795511411174258172ull}}, {{2300192660277664404ull, 3809419185614245668ull, 17297482889281192003ull, 2372194631983911357ull}}, {{2875240825347080505ull, 150087963590419181ull, 7786795556319326292ull, 2965243289979889197ull}}, {{8205737050111238535ull, 187609954488023976ull, 14345180463826545769ull, 3706554112474861496ull}}, {{5128585656319524085ull, 11646471267623484745ull, 8965737789891591105ull, 2316596320296788435ull}}, {{11022418088826793010ull, 723031029247192219ull, 6595486218937100978ull, 2895745400370985544ull}}, {{9166336592606103358ull, 10127160823413766082ull, 8244357773671376222ull, 3619681750463731930ull}}, {{2234548703902853390ull, 3435578992412431795ull, 1082075180234444470ull, 4524602188079664913ull}}, {{17537494004435141033ull, 15982294925539933583ull, 12205512033714997553ull, 2827876367549790570ull}}, {{17310181487116538387ull, 6142810601642753267ull, 6033518005288971134ull, 3534845459437238213ull}}, {{17026040840468285079ull, 16901885288908217392ull, 12153583525038601821ull, 4418556824296547766ull}}, {{10641275525292678175ull, 12869521314781329822ull, 2984303684721738234ull, 2761598015185342354ull}}, {{4078222369761071910ull, 6863529606621886470ull, 12953751642756948601ull, 3451997518981677942ull}}, {{14321149999056115696ull, 13191098026704745991ull, 6968817516591409943ull, 4314996898727097428ull}}, {{15868247777051154166ull, 15161965294331548100ull, 13578882984724407022ull, 2696873061704435892ull}}, {{1388565647604391091ull, 9729084581059659318ull, 16973603730905508778ull, 3371091327130544865ull}}, {{10959079096360264672ull, 2937983689469798339ull, 7381946608349722261ull, 4213864158913181082ull}}, {{4543581426011471468ull, 4142082815132317914ull, 9225402648645964317ull, 2633665099320738176ull}}, {{14902848819369115143ull, 9789289537342785296ull, 11531753310807455396ull, 3292081374150922720ull}}, {{181816950501842313ull, 12236611921678481621ull, 14414691638509319245ull, 4115101717688653400ull}}, {{2419478603277345398ull, 9953725460262744965ull, 9009182274068324528ull, 2571938573555408375ull}}, {{7636034272524069651ull, 12442156825328431206ull, 6649791824158017756ull, 3214923216944260469ull}}, {{321670803800311256ull, 15552696031660539008ull, 12923925798624910099ull, 4018654021180325586ull}}, {{201044252375194535ull, 7414592010574142928ull, 12689139642567956716ull, 2511658763237703491ull}}, {{251305315468993169ull, 9268240013217678660ull, 11249738534782557991ull, 3139573454047129364ull}}, {{314131644336241461ull, 6973613998094710421ull, 14062173168478197489ull, 3924466817558911705ull}}, {{2502175286923844865ull, 15887723794877663773ull, 1871329202657791574ull, 2452791760974319816ull}}, {{7739405127082193985ull, 10636282706742303908ull, 2339161503322239468ull, 3065989701217899770ull}}, {{9674256408852742481ull, 13295353383427879885ull, 12147323916007575143ull, 3832487126522374712ull}}, {{8352253264746658003ull, 15227124892283506784ull, 7592077447504734464ull, 2395304454076484195ull}}, {{10440316580933322504ull, 587162041644831864ull, 4878410790953530177ull, 2994130567595605244ull}}, {{13050395726166653129ull, 5345638570483427734ull, 6098013488691912721ull, 3742663209494506555ull}}, {{3544811310426770302ull, 14870239152620612094ull, 1505415421218751498ull, 2339164505934066597ull}}, {{13654386174888238686ull, 9364426903920989309ull, 6493455294950827277ull, 2923955632417583246ull}}, {{3232924663328134645ull, 16317219648328624541ull, 17340191155543309904ull, 3654944540521979057ull}}, {{8652841847587556210ull, 1949780486701229060ull, 7840180889146973669ull, 4568680675652473822ull}}, {{14631398191596998439ull, 3524455813401962114ull, 288427037289470639ull, 2855425422282796139ull}}, {{9065875702641472241ull, 18240627822034616355ull, 14195591851894002010ull, 3569281777853495173ull}}, {{6720658609874452397ull, 13577412740688494636ull, 3909431759585338801ull, 4461602222316868967ull}}, {{13423783668026308556ull, 1568353935289227291ull, 9360923877381918607ull, 2788501388948043104ull}}, {{12168043566605497791ull, 15795500474393697826ull, 11701154846727398258ull, 3485626736185053880ull}}, {{5986682421402096431ull, 10521003556137346475ull, 14626443558409247823ull, 4357033420231317350ull}}, {{1435833504162616318ull, 13493156250226923403ull, 4529841205578391985ull, 2723145887644573344ull}}, {{15629849935485434109ull, 3031387257501490541ull, 5662301506972989982ull, 3403932359555716680ull}}, {{5702254364074628924ull, 13012606108731638985ull, 7077876883716237477ull, 4254915449444645850ull}}, {{15093124023615112838ull, 10438721827170968317ull, 9035359070750036327ull, 2659322155902903656ull}}, {{5031346974236727335ull, 8436716265536322493ull, 11294198838437545409ull, 3324152694878629570ull}}, {{10900869736223297073ull, 15157581350347791020ull, 4894376511192155953ull, 4155190868598286963ull}}, {{16036415621994336479ull, 2555959316326287531ull, 753142310281403519ull, 2596994292873929352ull}}, {{15433833509065532694ull, 17030007200690023126ull, 941427887851754398ull, 3246242866092411690ull}}, {{10068919849477140060ull, 12064136964007753100ull, 10400156896669468806ull, 4057803582615514612ull}}, {{15516446942777988345ull, 2928399584077457783ull, 15723470097273193812ull, 2536127239134696632ull}}, {{14783872660045097528ull, 3660499480096822229ull, 1207593547881940649ull, 3170159048918370791ull}}, {{4644782769774208197ull, 9187310368548415691ull, 15344549990134589523ull, 3962698811147963488ull}}, {{597146221895186172ull, 3436225971129065855ull, 9590343743834118452ull, 2476686756967477180ull}}, {{14581490832651146426ull, 4295282463911332318ull, 11987929679792648065ull, 3095858446209346475ull}}, {{9003491503959157225ull, 9980789098316553302ull, 10373226081313422177ull, 3869823057761683094ull}}, {{1015496171547085362ull, 17767208232516315574ull, 1871580282393500956ull, 2418639411101051934ull}}, {{10492742251288632510ull, 3762266216935842851ull, 11562847389846652004ull, 3023299263876314917ull}}, {{8504241795683402733ull, 4702832771169803564ull, 618501182026151293ull, 3779124079845393647ull}}, {{14538523159156902517ull, 5245113491194821179ull, 7304092266407426414ull, 2361952549903371029ull}}, {{13561467930518740242ull, 15779763900848302282ull, 13741801351436670921ull, 2952440687379213786ull}}, {{7728462876293649494ull, 5889646820778214141ull, 7953879652441062844ull, 3690550859224017233ull}}, {{7136132306897224886ull, 12904401299841159646ull, 16500389828844134037ull, 2306594287015010770ull}}, {{18143537420476306915ull, 2295443569519285845ull, 11402115249200391739ull, 2883242858768763463ull}}, {{8844363720313219932ull, 16704362517181271019ull, 9640958043073101769ull, 3604053573460954329ull}}, {{6443768631964137011ull, 7045395091194425062ull, 16662883572268765116ull, 4505066966826192911ull}}, {{17862413450259749344ull, 13626743968851291471ull, 17331831260309060053ull, 2815666854266370569ull}}, {{17716330794397298776ull, 3198371905781950627ull, 7829731020104161355ull, 3519583567832963212ull}}, {{17533727474569235565ull, 17833022937509601996ull, 9787163775130201693ull, 4399479459791204015ull}}, {{1735207634750996421ull, 13451482345157195200ull, 13034506387097457914ull, 2749674662369502509ull}}, {{2169009543438745526ull, 7590980894591718192ull, 2458074928589658681ull, 3437093327961878137ull}}, {{2711261929298431907ull, 14100412136667035644ull, 7684279679164461255ull, 4296366659952347671ull}}, {{10917910742666295750ull, 15730286613057979133ull, 11720203827118870140ull, 2685229162470217294ull}}, {{18259074446760257591ull, 1216114192612922300ull, 5426882747043811868ull, 3356536453087771618ull}}, {{4377098984740770373ull, 1520142740766152876ull, 16006975470659540643ull, 4195670566359714522ull}}, {{11959058902317757291ull, 17090990277474703211ull, 14616045687589600805ull, 2622294103974821576ull}}, {{10337137609469808710ull, 7528679791561215302ull, 18270057109487001007ull, 3277867629968526970ull}}, {{3698049974982485079ull, 4799163721024131224ull, 13614199350003975451ull, 4097334537460658713ull}}, {{2311281234364053175ull, 693634316426388063ull, 1591345566111402801ull, 2560834085912911696ull}}, {{16724159598237230180ull, 5478728913960372982ull, 1989181957639253501ull, 3201042607391139620ull}}, {{11681827460941761917ull, 11460097160877854132ull, 2486477447049066876ull, 4001303259238924525ull}}, {{16524514199943377007ull, 16385932762403434640ull, 3859891413619360749ull, 2500814537024327828ull}}, {{2208898676219669642ull, 6647357897722129589ull, 4824864267024200937ull, 3126018171280409785ull}}, {{7372809363701974956ull, 12920883390580049890ull, 10642766352207639075ull, 3907522714100512231ull}}, {{9219691870741122252ull, 5769709109898837229ull, 13569257997770856278ull, 2442201696312820144ull}}, {{16136300856853790719ull, 16435508424228322344ull, 16961572497213570347ull, 3052752120391025180ull}}, {{1723631997357686782ull, 15932699511858015027ull, 2755221547807411318ull, 3815940150488781476ull}}, {{17218171062844411903ull, 5346251176483871487ull, 10945385504234407882ull, 2384962594055488422ull}}, {{16911027810128126975ull, 15906186007459615167ull, 4458359843438234044ull, 2981203242569360528ull}}, {{16527098744232770815ull, 1435988435614967343ull, 5572949804297792556ull, 3726504053211700660ull}}, {{17246965742786563615ull, 10120864809114130397ull, 12706465664540896155ull, 2329065033257312912ull}}, {{7723649123201040807ull, 8039394992965275093ull, 15883082080676120194ull, 2911331291571641140ull}}, {{14266247422428688913ull, 825871704351818058ull, 1407108527135598627ull, 3639164114464551426ull}}, {{8609437241181085333ull, 14867397685721936285ull, 10982257695774274091ull, 4548955143080689282ull}}, {{7686741284951872285ull, 6986280544362516226ull, 11475597078286309211ull, 2843096964425430801ull}}, {{385054569335064548ull, 4121164662025757379ull, 509438292575722802ull, 3553871205531788502ull}}, {{14316376266950994397ull, 14374827864386972531ull, 9860169902574429310ull, 4442339006914735627ull}}, {{6641892157630677546ull, 4372581396814469928ull, 3856763179895324367ull, 2776461879321709767ull}}, {{8302365197038346933ull, 854040727590699506ull, 209267956441767555ull, 3470577349152137209ull}}, {{1154584459443157858ull, 14902608964770538095ull, 4873270963979597347ull, 4338221686440171511ull}}, {{7639144314793055517ull, 7008287593767892357ull, 9963323380128330198ull, 2711388554025107194ull}}, {{14160616411918707301ull, 17983731529064641254ull, 3230782188305636939ull, 3389235692531383993ull}}, {{8477398478043608318ull, 17867978392903413664ull, 8650163753809434078ull, 4236544615664229991ull}}, {{5298374048777255199ull, 6555800477137245636ull, 12323881373771978155ull, 2647840384790143744ull}}, {{6622967560971568998ull, 3583064577994169141ull, 15404851717214972694ull, 3309800480987679680ull}}, {{12890395469641849152ull, 13702202759347487234ull, 809320572809164251ull, 4137250601234599601ull}}, {{12668183186953543624ull, 6258033715378485569ull, 12035040404074197417ull, 2585781625771624750ull}}, {{2000170928409765818ull, 12434228162650494866ull, 5820428468237970963ull, 3232227032214530938ull}}, {{11723585697366983080ull, 10931099184885730678ull, 16498907622152239512ull, 4040283790268163672ull}}, {{2715555042426976521ull, 6831936990553581674ull, 10311817263845149695ull, 2525177368917602295ull}}, {{12617815839888496460ull, 3928235219764589188ull, 8278085561379049215ull, 3156471711147002869ull}}, {{15772269799860620574ull, 298608006278348581ull, 14959292970151199423ull, 3945589638933753586ull}}, {{12163511634126581811ull, 7104159031565049719ull, 13961244124771887543ull, 2465993524333595991ull}}, {{10592703524230839360ull, 4268512771028924245ull, 12839869137537471525ull, 3082491905416994989ull}}, {{17852565423715937104ull, 9947326982213543210ull, 2214778366639675694ull, 3853114881771243737ull}}, {{15769539408249848594ull, 1605393345456076602ull, 12913451525218267069ull, 2408196801107027335ull}}, {{10488552223457534934ull, 6618427700247483657ull, 11530128388095445932ull, 3010246001383784169ull}}, {{17722376297749306572ull, 8273034625309354571ull, 577602429837143703ull, 3762807501729730212ull}}, {{8770642176879622656ull, 12088175668459428463ull, 9584373555502990622ull, 2351754688581081382ull}}, {{6351616702672140415ull, 5886847548719509771ull, 2757094907523962470ull, 2939693360726351728ull}}, {{3327834859912787615ull, 16581931472754163022ull, 3446368634404953087ull, 3674616700907939660ull}}, {{13383165611745760327ull, 16115728322515315873ull, 4307960793006191359ull, 4593270876134924575ull}}, {{1446949479700018348ull, 16989859229213154277ull, 9610004523269951455ull, 2870794297584327859ull}}, {{6420372868052410839ull, 16625638018089054942ull, 7400819635660051415ull, 3588492871980409824ull}}, {{17248838121920289357ull, 16170361504183930773ull, 9251024544575064269ull, 4485616089975512280ull}}, {{13086366835413874800ull, 12412318949328650685ull, 5781890340359415168ull, 2803510056234695175ull}}, {{2522900488985179788ull, 15515398686660813357ull, 2615676907021881056ull, 3504387570293368969ull}}, {{7765311629658862639ull, 947504284616465080ull, 7881282152204739225ull, 4380484462866711211ull}}, {{4853319768536789150ull, 12121405223953760435ull, 2619958335914268063ull, 2737802789291694507ull}}, {{1454963692243598533ull, 10540070511514812640ull, 17110005975174998791ull, 3422253486614618133ull}}, {{1818704615304498166ull, 8563402120966127896ull, 7552449413686584777ull, 4277816858268272667ull}}, {{1136690384565311354ull, 16881341371672299695ull, 2414437874340421533ull, 2673635536417670417ull}}, {{15255921035988802904ull, 7266618659308210906ull, 7629733361352914821ull, 3342044420522088021ull}}, {{9846529258131227822ull, 13694959342562651537ull, 14148852720118531430ull, 4177555525652610026ull}}, {{17683295832400487149ull, 3947663570674269306ull, 13454718968501470048ull, 2610972203532881266ull}}, {{12880747753645833128ull, 4934579463342836633ull, 7595026673772061752ull, 3263715254416101583ull}}, {{2265876636775127698ull, 6168224329178545792ull, 4882097323787689286ull, 4079644068020126979ull}}, {{1416172897984454812ull, 17690198261018754832ull, 745467818153611851ull, 2549777542512579362ull}}, {{1770216122480568514ull, 17501061807846055636ull, 10155206809546790622ull, 3187221928140724202ull}}, {{2212770153100710643ull, 12652955222952793737ull, 3470636475078712470ull, 3984027410175905253ull}}, {{12912196391756413912ull, 3296410995918108181ull, 4474990806137889246ull, 2490017131359940783ull}}, {{2305187434413353678ull, 13343885781752411035ull, 982052489244973653ull, 3112521414199925979ull}}, {{16716542348298855809ull, 2844799171908350081ull, 15062623666838380779ull, 3890651767749907473ull}}, {{3530309940045703025ull, 17918900546938576465ull, 2496610764132906130ull, 2431657354843692171ull}}, {{9024573443484516685ull, 13175253646818444773ull, 16955821510448296375ull, 3039571693554615213ull}}, {{15892402822783033760ull, 11857381040095668062ull, 7359718832778206757ull, 3799464616943269017ull}}, {{5321065745812008196ull, 9716706159273486491ull, 16129039316554848983ull, 2374665385589543135ull}}, {{2039646163837622341ull, 7534196680664470210ull, 15549613127266173325ull, 2968331731986928919ull}}, {{11772929741651803734ull, 14029431869257975666ull, 14825330390655328752ull, 3710414664983661149ull}}, {{11969767106959765238ull, 8768394918286234791ull, 11571674503373274422ull, 2319009165614788218ull}}, {{10350522865272318644ull, 1737121611003017681ull, 5241221092361817220ull, 2898761457018485273ull}}, {{17549839600017786208ull, 2171402013753772101ull, 11163212383879659429ull, 3623451821273106591ull}}, {{8102241444740069048ull, 7325938535619603031ull, 9342329461422186382ull, 4529314776591383239ull}}, {{11981429930603625011ull, 18413769640044415606ull, 12756484941029948344ull, 2830821735369614524ull}}, {{5753415376399755456ull, 4570467976345967892ull, 15945606176287435431ull, 3538527169212018155ull}}, {{7191769220499694320ull, 1101398952005071961ull, 15320321701931906385ull, 4423158961515022694ull}}, {{16024070808880778710ull, 12217589391071639735ull, 4963515045280053586ull, 2764474350946889184ull}}, {{15418402492673585484ull, 6048614701984773861ull, 6204393806600066983ull, 3455592938683611480ull}}, {{5437945060559818142ull, 2949082359053579423ull, 7755492258250083729ull, 4319491173354514350ull}}, {{10316244690490968195ull, 13372391520476956899ull, 235496642978914426ull, 2699681983346571469ull}}, {{8283619844686322340ull, 7492117363741420316ull, 4906056822151030937ull, 3374602479183214336ull}}, {{10354524805857902925ull, 13976832723104163299ull, 6132571027688788671ull, 4218253098979017920ull}}, {{4165734994447495376ull, 15653049479581183918ull, 3832856892305492919ull, 2636408186861886200ull}}, {{14430540779914145028ull, 14954625831049091993ull, 4791071115381866149ull, 3295510233577357750ull}}, {{4203117919610517573ull, 4858224233529201280ull, 15212210931082108495ull, 4119387791971697187ull}}, {{2626948699756573483ull, 9953919173596832656ull, 7201788822712623857ull, 2574617369982310742ull}}, {{3283685874695716854ull, 17054084985423428724ull, 18225608065245555629ull, 3218271712477888427ull}}, {{4104607343369646067ull, 7482548176497122193ull, 18170324063129556633ull, 4022839640597360534ull}}, {{14094594635674498552ull, 16205807656379171130ull, 6744766521028584991ull, 2514274775373350334ull}}, {{8394871257738347382ull, 15645573552046576009ull, 17654330188140507047ull, 3142843469216687917ull}}, {{15105275090600322132ull, 14945280921630832107ull, 8232854679893470097ull, 3928554336520859897ull}}, {{7134953922411507380ull, 2423271548378188211ull, 16674749221001888571ull, 2455346460325537435ull}}, {{4307006384586996321ull, 16864147490754898976ull, 16231750507824972809ull, 3069183075406921794ull}}, {{5383757980733745402ull, 7245126308161460008ull, 11066316097926440204ull, 3836478844258652243ull}}, {{3364848737958590876ull, 13751575979455688313ull, 4610604551990331175ull, 2397799277661657652ull}}, {{8817746940875626499ull, 12577783955892222487ull, 5763255689987913969ull, 2997249097077072065ull}}, {{6410497657667145220ull, 1887171889583114397ull, 11815755630912280366ull, 3746561371346340081ull}}, {{6312404045255659715ull, 15014540486271610210ull, 467318241679093372ull, 2341600857091462551ull}}, {{17113877093424350451ull, 321431534129961146ull, 14419205857381030428ull, 2927001071364328188ull}}, {{12168974329925662256ull, 401789417662451433ull, 18024007321726288035ull, 3658751339205410235ull}}, {{1376159857124914108ull, 14337294827360228004ull, 17918323133730472139ull, 4573439174006762794ull}}, {{10083471947557847125ull, 6654966257886448550ull, 15810637977008932991ull, 2858399483754226746ull}}, {{3380967897592533099ull, 3707021803930672784ull, 10539925434406390431ull, 3572999354692783433ull}}, {{4226209871990666373ull, 22091236485953076ull, 17786592811435375943ull, 4466249193365979291ull}}, {{11864753206848942291ull, 6931336050444802528ull, 8810777497933416012ull, 2791405745853737057ull}}, {{14830941508561177864ull, 8664170063056003160ull, 15625157890844157919ull, 3489257182317171321ull}}, {{91932811991920714ull, 6218526560392616047ull, 5696389308273033687ull, 4361571477896464152ull}}, {{6974987035136032302ull, 10804108127886466885ull, 3560243317670646054ull, 2725982173685290095ull}}, {{13330419812347428282ull, 4281763123003307798ull, 18285362202370471280ull, 3407477717106612618ull}}, {{7439652728579509544ull, 5352203903754134748ull, 13633330716108313292ull, 4259347146383265773ull}}, {{13873154992216969273ull, 12568499476701110025ull, 10826674706781389759ull, 2662091966489541108ull}}, {{3506385684989047880ull, 11098938327448999628ull, 13533343383476737199ull, 3327614958111926385ull}}, {{4382982106236309849ull, 9261986890883861631ull, 3081621174063757787ull, 4159518697639907982ull}}, {{9656892844038775512ull, 3482898797588719567ull, 15761071289072012329ull, 2599699186024942488ull}}, {{7459430036621081486ull, 8965309515413287363ull, 1254595037630463795ull, 3249623982531178111ull}}, {{4712601527348963953ull, 6594950875839221300ull, 15403301852320243456ull, 4062029978163972638ull}}, {{12168747991447878279ull, 4121844297399513312ull, 5015377639272764256ull, 2538768736352482899ull}}, {{15210934989309847849ull, 5152305371749391640ull, 1657536030663567416ull, 3173460920440603624ull}}, {{566924662927758195ull, 6440381714686739551ull, 2071920038329459270ull, 3966826150550754530ull}}, {{7271856941970930728ull, 17860296626961375931ull, 5906636042383299947ull, 2479266344094221581ull}}, {{4478135159036275506ull, 17713684765274332010ull, 11994981071406512838ull, 3099082930117776976ull}}, {{14821040985650120190ull, 12918733919738139204ull, 14993726339258141048ull, 3873853662647221220ull}}, {{39778579176549311ull, 8074208699836337003ull, 147706925181562347ull, 2421158539154513263ull}}, {{13884781279252850351ull, 5481074856368033349ull, 14019691711759116646ull, 3026448173943141578ull}}, {{3520918543783899226ull, 16074715607314817495ull, 8301242602844119999ull, 3783060217428926973ull}}, {{9118103117506018872ull, 16964226282212842790ull, 7494119635991268951ull, 2364412635893079358ull}}, {{2174256860027747782ull, 16593596834338665584ull, 144277508134310381ull, 2955515794866349198ull}}, {{2717821075034684728ull, 6906937987641168268ull, 9403718922022663785ull, 3694394743582936497ull}}, {{10922010208751453763ull, 15846051288344199927ull, 17406539372332634625ull, 2308996714739335310ull}}, {{9040826742511929300ull, 5972506055148086197ull, 12534802178561017474ull, 2886245893424169138ull}}, {{15912719446567299529ull, 16689004605789883554ull, 6445130686346496034ull, 3607807366780211423ull}}, {{10667527271354348603ull, 11637883720382578635ull, 3444727339505732139ull, 4509759208475264279ull}}, {{4361361535382773925ull, 4967834316025417695ull, 9070483614832164443ull, 2818599505297040174ull}}, {{840015900801079502ull, 1598106876604384215ull, 2114732481685429746ull, 3523249381621300218ull}}, {{14885077931283513089ull, 11221005632610256076ull, 11866787638961562990ull, 4404061727026625272ull}}, {{79801670197419873ull, 2401442501954022144ull, 7416742274350976869ull, 2752538579391640795ull}}, {{99752087746774841ull, 7613489145869915584ull, 4659241824511333182ull, 3440673224239550994ull}}, {{124690109683468551ull, 293489395482618672ull, 15047424317493942286ull, 4300841530299438742ull}}, {{77931318552167845ull, 14018488927458800382ull, 4792954180006326024ull, 2688025956437149214ull}}, {{9320786185044985614ull, 17523111159323500477ull, 15214564761862683338ull, 3360032445546436517ull}}, {{16262668749733619921ull, 12680516912299599788ull, 5183147897046190461ull, 4200040556933045647ull}}, {{940795931728736643ull, 10231166079400943820ull, 10156996463294950894ull, 2625025348083153529ull}}, {{1175994914660920804ull, 3565585562396403967ull, 17307931597546076522ull, 3281281685103941911ull}}, {{15305051698608314716ull, 13680353989850280766ull, 17023228478505207748ull, 4101602106379927389ull}}, {{4953971293202808794ull, 17773593280511201287ull, 12945360808279448794ull, 2563501316487454618ull}}, {{1580778098076123088ull, 12993619563784225801ull, 6958328973494535185ull, 3204376645609318273ull}}, {{6587658641022541764ull, 2406966399448118539ull, 13309597235295556886ull, 4005470807011647841ull}}, {{1811443641425394651ull, 15339412054937237799ull, 1400969244418641197ull, 2503419254382279901ull}}, {{16099362607063907025ull, 5339207013389383536ull, 6362897573950689401ull, 3129274067977849876ull}}, {{1677459185120332166ull, 11285694785164117325ull, 7953621967438361751ull, 3911592584972312345ull}}, {{3354254999913901556ull, 13971088268368655184ull, 16500228775717445854ull, 2444745365607695215ull}}, {{4192818749892376944ull, 8240488298606043172ull, 16013599951219419414ull, 3055931707009619019ull}}, {{5241023437365471180ull, 1077238336402778157ull, 15405313920596886364ull, 3819914633762023774ull}}, {{5581482657567113440ull, 9896645997106512156ull, 5016635181945666073ull, 2387446646101264859ull}}, {{6976853321958891800ull, 16982493514810528099ull, 1659107959004694687ull, 2984308307626581074ull}}, {{4109380634021226846ull, 16616430875085772220ull, 11297256985610644167ull, 3730385384533226342ull}}, {{11791734933118042587ull, 17302798324569689493ull, 2449099597579264700ull, 2331490865333266464ull}}, {{904610611115389521ull, 3181753832002560251ull, 3061374496974080876ull, 2914363581666583080ull}}, {{14965821319176400613ull, 3977192290003200313ull, 3826718121217601095ull, 3642954477083228850ull}}, {{4872218593688337055ull, 359804344076612488ull, 14006769688376777177ull, 4553693096354036062ull}}, {{3045136621055210659ull, 11754092761116352565ull, 4142545036808097831ull, 2846058185221272539ull}}, {{8418106794746401228ull, 10080929932968052802ull, 566495277582734385ull, 3557572731526590674ull}}, {{1299261456578225727ull, 17212848434637453907ull, 9931491133833193789ull, 4446965914408238342ull}}, {{16952939474857248744ull, 13063873280862102643ull, 1595495940218358214ull, 2779353696505148964ull}}, {{16579488325144173025ull, 7106469564222852496ull, 1994369925272947768ull, 3474192120631436205ull}}, {{2277616332720664666ull, 8883086955278565621ull, 7104648425018572614ull, 4342740150789295256ull}}, {{3729353217164109368ull, 940243328621715609ull, 4440405265636607884ull, 2714212594243309535ull}}, {{9273377539882524614ull, 1175304160777144511ull, 938820563618371951ull, 3392765742804136919ull}}, {{6980035906425767863ull, 15304188256253594351ull, 15008583759805128650ull, 4240957178505171148ull}}, {{11280051469157186771ull, 14176803678585884373ull, 156992813023429598ull, 2650598236565731968ull}}, {{265006281164319751ull, 8497632561377579659ull, 196241016279286998ull, 3313247795707164960ull}}, {{14166315906737563401ull, 1398668664867198765ull, 245301270349108748ull, 4141559744633956200ull}}, {{11159790450924671078ull, 10097539952396775036ull, 153313293968192967ull, 2588474840396222625ull}}, {{13949738063655838847ull, 8010238922068580891ull, 4803327635887629113ull, 3235593550495278281ull}}, {{12825486561142410655ull, 14624484671013114018ull, 10615845563286924295ull, 4044491938119097851ull}}, {{12627615119141394564ull, 16057831947024278117ull, 4329060467840633732ull, 2527807461324436157ull}}, {{1949460843644579492ull, 1625545860070796031ull, 10023011603228180070ull, 3159759326655545196ull}}, {{16271884109837888077ull, 11255304361943270846ull, 12528764504035225087ull, 3949699158319431495ull}}, {{5558241550221292144ull, 13952094253855626135ull, 14748006842663097535ull, 2468561973949644684ull}}, {{2336115919349227276ull, 12828431798892144765ull, 18435008553328871919ull, 3085702467437055855ull}}, {{7531830917613921999ull, 11423853730187793052ull, 18432074673233701995ull, 3857128084296319819ull}}, {{13930766360363477058ull, 4834065572153676705ull, 9214203661557369795ull, 2410705052685199887ull}}, {{3578399895172182610ull, 1430895946764707978ull, 6906068558519324340ull, 3013381315856499859ull}}, {{13696371905820004071ull, 1788619933455884972ull, 4020899679721767521ull, 3766726644820624824ull}}, {{17783604477992278352ull, 12647102504478397867ull, 2513062299826104700ull, 2354204153012890515ull}}, {{17617819579062960036ull, 15808878130597997334ull, 16976385930064794587ull, 2942755191266113143ull}}, {{12798902436973924237ull, 15149411644820108764ull, 16608796394153605330ull, 3678443989082641429ull}}, {{15998628046217405296ull, 9713392519170360147ull, 6925937437409842951ull, 4598054986353301787ull}}, {{7693299519672184358ull, 12988399352122556948ull, 2022867889167457892ull, 2873784366470813617ull}}, {{9616624399590230448ull, 16235499190153196185ull, 7140270879886710269ull, 3592230458088517021ull}}, {{16632466517915175964ull, 6459315932409331519ull, 13537024618285775741ull, 4490288072610646276ull}}, {{17312820601338066834ull, 6342915466969526151ull, 17684012423283385646ull, 2806430045381653922ull}}, {{17029339733245195638ull, 17152016370566683497ull, 12881643492249456249ull, 3508037556727067403ull}}, {{7451616611274330835ull, 7604962407926190660ull, 11490368346884432408ull, 4385046945908834254ull}}, {{13880632418901232580ull, 4753101504953869162ull, 2569794198375382351ull, 2740654341193021409ull}}, {{8127418486771764917ull, 1329690862764948549ull, 7823928766396615843ull, 3425817926491276761ull}}, {{14770959126892094050ull, 15497171633738349398ull, 14391596976423157707ull, 4282272408114095951ull}}, {{4620163435880170878ull, 7379889261872774422ull, 15912277137905555423ull, 2676420255071309969ull}}, {{14998576331704989405ull, 4613175558913580123ull, 6055288367099780567ull, 3345525318839137462ull}}, {{14136534396203848852ull, 1154783430214587250ull, 16792482495729501517ull, 4181906648548921827ull}}, {{13447020016054793437ull, 3027582653097810983ull, 8189458550617244496ull, 2613691655343076142ull}}, {{12197089001641103892ull, 3784478316372263729ull, 1013451151416779812ull, 3267114569178845178ull}}, {{1411303196769216152ull, 4730597895465329662ull, 10490185976125750573ull, 4083893211473556472ull}}, {{14717122553262923807ull, 5262466693879524990ull, 6556366235078594108ull, 2552433257170972795ull}}, {{9173031154723878951ull, 6578083367349406238ull, 3583771775420854731ull, 3190541571463715994ull}}, {{2242916906550072881ull, 3610918190759369894ull, 13703086756130844222ull, 3988176964329644992ull}}, {{15236881121875959263ull, 16091881924506769895ull, 8564429222581777638ull, 2492610602706028120ull}}, {{14434415383917561174ull, 10891480368778686561ull, 10705536528227222048ull, 3115763253382535150ull}}, {{4207961174614787756ull, 13614350460973358202ull, 4158548623429251752ull, 3894704066728168938ull}}, {{7241661752561630252ull, 8508969038108348876ull, 7210778908070670249ull, 2434190041705105586ull}}, {{9052077190702037814ull, 15247897316062823999ull, 18236845671943113619ull, 3042737552131381982ull}}, {{6703410469950159364ull, 14448185626651142095ull, 13572685053074116216ull, 3803421940164227478ull}}, {{11107160571359931459ull, 9030116016656963809ull, 3871242139743934731ull, 2377138712602642174ull}}, {{48892658917750611ull, 6675959002393816858ull, 14062424711534694222ull, 2971423390753302717ull}}, {{9284487860501964072ull, 17568320789847046880ull, 3742972834136204065ull, 3714279238441628397ull}}, {{5802804912813727545ull, 4062671466013322444ull, 4645201030548821493ull, 2321424524026017748ull}}, {{7253506141017159431ull, 9690025350944040959ull, 5806501288186026866ull, 2901780655032522185ull}}, {{4455196657844061385ull, 2889159651825275391ull, 11869812628659921487ull, 3627225818790652731ull}}, {{957309803877688827ull, 17446507620063757951ull, 10225579767397513954ull, 4534032273488315914ull}}, {{7515847655064637373ull, 15515753280967236623ull, 11002673373050834125ull, 2833770170930197446ull}}, {{4783123550403408812ull, 5559633545926882067ull, 4529969679458766849ull, 3542212713662746808ull}}, {{1367218419576873111ull, 11561227950835990488ull, 5662462099323458561ull, 4427765892078433510ull}}, {{854511512235545695ull, 308238441631412199ull, 17374096867359325313ull, 2767353682549020943ull}}, {{14903197445576595830ull, 4996984070466653152ull, 17105935065771768737ull, 3459192103186276179ull}}, {{182252733261193171ull, 10857916106510704345ull, 16770732813787323017ull, 4323990128982845224ull}}, {{11643123004356715492ull, 18315412612637659975ull, 10481708008617076885ull, 2702493830614278265ull}}, {{9942217737018506461ull, 9059207710514911257ull, 17713821029198734011ull, 3378117288267847831ull}}, {{17039458189700520980ull, 6712323619716251167ull, 17530590268071029610ull, 4222646610334809789ull}}, {{17567190396203907469ull, 8806888280750044883ull, 13262461926758087458ull, 2639154131459256118ull}}, {{17347301976827496432ull, 1785238314082780296ull, 7354705371592833515ull, 3298942664324070148ull}}, {{3237383397324818924ull, 16066605947885639083ull, 9193381714491041893ull, 4123678330405087685ull}}, {{18164265687823869492ull, 12347471726642218378ull, 8051706580770595135ull, 2577298956503179803ull}}, {{13481960072925061056ull, 10822653639875385069ull, 5452947207535856015ull, 3221623695628974754ull}}, {{3017392035874162608ull, 8916631031416843433ull, 16039556046274595827ull, 4027029619536218442ull}}, {{13415085068489821390ull, 3267051385421833193ull, 14636408547349010296ull, 2516893512210136526ull}}, {{2933798280330113026ull, 4083814231777291492ull, 9072138647331487062ull, 3146116890262670658ull}}, {{3667247850412641282ull, 14328139826576390173ull, 2116801272309583019ull, 3932646112828338323ull}}, {{4597872915721594754ull, 6649244382396549906ull, 17463901859689347051ull, 2457903820517711451ull}}, {{14970713181506769250ull, 3699869459568299478ull, 17218191306184295910ull, 3072379775647139314ull}}, {{9490019440028685754ull, 13848208861315150156ull, 12299367095875594079ull, 3840474719558924143ull}}, {{15154634186872704405ull, 15572659565963050703ull, 14604633462563328155ull, 2400296699724327589ull}}, {{14331606715163492602ull, 14854138439026425475ull, 4420733772921996482ull, 3000370874655409487ull}}, {{13302822375526977848ull, 9344301011928256036ull, 914231197725107699ull, 3750463593319261859ull}}, {{17537636021559136963ull, 3534345123241466070ull, 16712295563074049976ull, 2344039745824538661ull}}, {{12698672990094145396ull, 4417931404051832588ull, 7055311398560398758ull, 2930049682280673327ull}}, {{15873341237617681745ull, 14745786291919566543ull, 4207453229773110543ull, 3662562102850841659ull}}, {{15229990528594714277ull, 13820546846472070275ull, 647630518789000275ull, 4578202628563552074ull}}, {{7212901071158002471ull, 6331998769831349970ull, 5016455092670513076ull, 2861376642852220046ull}}, {{18239498375802278897ull, 7914998462289187462ull, 15493940902692917153ull, 3576720803565275057ull}}, {{13576000932898072813ull, 14505434096288872232ull, 5532368073083982729ull, 4470901004456593822ull}}, {{8485000583061295508ull, 2148367282539463289ull, 17292788100959652918ull, 2794313127785371138ull}}, {{15217936747254007289ull, 11908831140029104919ull, 12392613089344790339ull, 3492891409731713923ull}}, {{14410734915640121207ull, 10274352906608993245ull, 10879080343253600020ull, 4366114262164642404ull}}, {{11312552331488769707ull, 15644842603485396586ull, 16022797251388275820ull, 2728821413852901502ull}}, {{4917318377506186325ull, 1109309180647194117ull, 10805124527380568968ull, 3411026767316126878ull}}, {{10758333990310120811ull, 1386636475808992646ull, 4283033622370935402ull, 4263783459145158598ull}}, {{2112272725516437603ull, 5478333815808008308ull, 16511954069263998338ull, 2664864661965724123ull}}, {{2640340906895547003ull, 16071289306614786193ull, 16028256568152610018ull, 3331080827457155154ull}}, {{7912112152046821658ull, 10865739596413706933ull, 10811948673335986715ull, 4163851034321443943ull}}, {{7250913104242957488ull, 4485244238544872881ull, 13674996948476073553ull, 2602406896450902464ull}}, {{13675327398731084764ull, 10218241316608479005ull, 17093746185595091941ull, 3253008620563628080ull}}, {{3259101193131692243ull, 17384487664187986661ull, 2920438658284313310ull, 4066260775704535101ull}}, {{4342781254921001604ull, 6253618771690103759ull, 4131117170641389771ull, 2541412984815334438ull}}, {{816790550223864101ull, 3205337446185241795ull, 14387268500156513022ull, 3176766231019168047ull}}, {{14856046243061993839ull, 13230043844586328051ull, 13372399606768253373ull, 3970957788773960059ull}}, {{6979185892700052197ull, 10574620412080148984ull, 6051906745016464406ull, 2481848617983725037ull}}, {{8723982365875065246ull, 3994903478245410422ull, 12176569449697968412ull, 3102310772479656296ull}}, {{1681605920489055750ull, 4993629347806763028ull, 15220711812122460515ull, 3877888465599570370ull}}, {{10274375737160435652ull, 815175333165532940ull, 14124630901003925726ull, 2423680290999731481ull}}, {{12842969671450544565ull, 10242341203311691983ull, 3820730570972743445ull, 3029600363749664352ull}}, {{11442026070885792802ull, 17414612522567002883ull, 4775913213715929306ull, 3787000454687080440ull}}, {{4845423285089926549ull, 15495818845031764706ull, 2984945758572455816ull, 2366875284179425275ull}}, {{15280151143217183995ull, 923029482580154266ull, 17566240253497733483ull, 2958594105224281593ull}}, {{9876816892166704185ull, 14988844908507356545ull, 8122742261590003141ull, 3698242631530351992ull}}, {{17702225603672659876ull, 11673871077030791792ull, 5076713913493751963ull, 2311401644706469995ull}}, {{3681037930881273229ull, 9980652827861101837ull, 1734206373439802050ull, 2889252055883087494ull}}, {{9212983432028979440ull, 3252443997971601488ull, 11391130003654528371ull, 3611565069853859367ull}}, {{11516229290036224299ull, 17900613052746665572ull, 9627226486140772559ull, 4514456337317324209ull}}, {{16421015343127415995ull, 18105412185607747838ull, 17546231599906452609ull, 2821535210823327630ull}}, {{11302897142054494186ull, 8796707176727521086ull, 12709417463028289954ull, 3526919013529159538ull}}, {{4905249390713341924ull, 1772511934054625550ull, 6663399791930586635ull, 4408648766911449423ull}}, {{16900838924478002415ull, 17248721023279998632ull, 11082153897597698502ull, 2755405479319655889ull}}, {{2679304581887951403ull, 12337529242245222483ull, 17634316714959416ull, 3444256849149569862ull}}, {{17184188782642102965ull, 15421911552806528103ull, 9245414932748475078ull, 4305321061436962327ull}}, {{17657647016792396209ull, 5027008702076692160ull, 12695913360608878780ull, 2690825663398101454ull}}, {{3625314697280943646ull, 6283760877595865201ull, 6646519663906322667ull, 3363532079247626818ull}}, {{9143329390028567461ull, 3243015078567443597ull, 17531521616737679142ull, 4204415099059533522ull}}, {{8020423877981548615ull, 15861942479386815960ull, 15568887028888437367ull, 2627759436912208451ull}}, {{10025529847476935769ull, 15215742080806132046ull, 14849422767683158805ull, 3284699296140260564ull}}, {{3308540272491393903ull, 5184619545725501346ull, 115034385894396891ull, 4105874120175325706ull}}, {{6679523688734509094ull, 934544206864744389ull, 4683582509611385961ull, 2566171325109578566ull}}, {{12961090629345524271ull, 5779866277008318390ull, 15077850173869008259ull, 3207714156386973207ull}}, {{6977991249827129530ull, 2613146827833010084ull, 14235626698908872420ull, 4009642695483716509ull}}, {{13584616567996731765ull, 10856588804250407110ull, 11203109696031739214ull, 2506026684677322818ull}}, {{7757398673141138898ull, 4347363968458233080ull, 4780515083184898210ull, 3132533355846653523ull}}, {{9696748341426423622ull, 14657576997427567158ull, 1363957835553734858ull, 3915666694808316904ull}}, {{1448781694964126860ull, 13772671641819617378ull, 852473647221084286ull, 2447291684255198065ull}}, {{11034349155559934383ull, 7992467515419745914ull, 5677278077453743262ull, 3059114605318997581ull}}, {{4569564407595142170ull, 767212357419906585ull, 11708283615244566982ull, 3823893256648746976ull}}, {{14385192800815433617ull, 14314565778669605327ull, 7317677259527854363ull, 2389933285405466860ull}}, {{13369804982591904117ull, 13281521204909618755ull, 9147096574409817954ull, 2987416606756833575ull}}, {{12100570209812492242ull, 7378529469282247636ull, 6822184699584884539ull, 3734270758446041969ull}}, {{16786228417987583459ull, 2305737909087710820ull, 15793080483309022597ull, 2333919224028776230ull}}, {{2536041448774927708ull, 7493858404787026430ull, 10517978567281502438ull, 2917399030035970288ull}}, {{12393423847823435443ull, 143950969129007229ull, 13147473209101878048ull, 3646748787544962860ull}}, {{1656721754497130592ull, 179938711411259037ull, 16434341511377347560ull, 4558435984431203575ull}}, {{3341294105774400572ull, 112461694632036898ull, 17188992472251924081ull, 2849022490269502234ull}}, {{13399989669072776523ull, 4752263136717434026ull, 12262868553460129293ull, 3561278112836877793ull}}, {{7526615049486194845ull, 10552014939324180437ull, 1493527636542997904ull, 4451597641046097242ull}}, {{7009977415142565731ull, 6595009337077612773ull, 5545140791266761594ull, 2782248525653810776ull}}, {{13374157787355595067ull, 17467133708201791774ull, 6931425989083451992ull, 3477810657067263470ull}}, {{7494325197339718026ull, 3387173061542688102ull, 17887654523209090799ull, 4347263321334079337ull}}, {{72267229909935862ull, 9034512191105261920ull, 4262255049364599893ull, 2717039575833799586ull}}, {{90334037387419828ull, 15904826257308965304ull, 14551190848560525674ull, 3396299469792249482ull}}, {{112917546734274784ull, 10657660784781430822ull, 8965616523845881285ull, 4245374337240311853ull}}, {{13905631521991085452ull, 8966880999702088215ull, 7909353336617369755ull, 2653358960775194908ull}}, {{12770353384061468911ull, 6596915231200222365ull, 9886691670771712194ull, 3316698700968993635ull}}, {{2127883674794672427ull, 17469516075855053765ull, 7746678570037252338ull, 4145873376211242044ull}}, {{3635770305960364219ull, 15530133565836796507ull, 14065046143128058519ull, 2591170860132026277ull}}, {{18379770937732618986ull, 14800980938868607729ull, 3746249623627909437ull, 3238963575165032847ull}}, {{9139655616883610020ull, 4666168118303595950ull, 71126011107498893ull, 4048704468956291059ull}}, {{1100598742124868359ull, 5222198083153441421ull, 16185354821438044472ull, 2530440293097681911ull}}, {{5987434446083473352ull, 6527747603941801776ull, 15620007508370167686ull, 3163050366372102389ull}}, {{7484293057604341690ull, 17383056541782028028ull, 5689951330180545895ull, 3953812957965127987ull}}, {{13901055197857489365ull, 17781939366254849373ull, 1250376572149147232ull, 2471133098728204992ull}}, {{3541260942039697994ull, 3780680134109010101ull, 1562970715186434041ull, 3088916373410256240ull}}, {{9038262195977010396ull, 9337536186063650530ull, 1953713393983042551ull, 3861145466762820300ull}}, {{10260599890913019402ull, 12753489143930863437ull, 10444442908094177402ull, 2413215916726762687ull}}, {{17437435882068662156ull, 6718489393058803488ull, 8443867616690333849ull, 3016519895908453359ull}}, {{3350050778876276079ull, 13009797759750892265ull, 5943148502435529407ull, 3770649869885566699ull}}, {{13622996782866142309ull, 15048652627485389521ull, 1408624804808511927ull, 2356656168678479187ull}}, {{3193687923300514175ull, 14199129765929348998ull, 15595839061292803621ull, 2945820210848098983ull}}, {{13215481940980418526ull, 3913854152129522535ull, 14883112808188616623ull, 3682275263560123729ull}}, {{11907666407798135254ull, 280631671734515265ull, 4768832954953607067ull, 4602844079450154662ull}}, {{524762477232752678ull, 16316295859329929705ull, 16815578652128168128ull, 2876777549656346663ull}}, {{5267639114968328751ull, 1948625750452860515ull, 16407787296732822257ull, 3595971937070433329ull}}, {{1972862875283023035ull, 7047468206493463548ull, 6674676065633864109ull, 4494964921338041662ull}}, {{10456411333906665205ull, 6710510638272108669ull, 18006730596303328780ull, 2809353075836276038ull}}, {{17682200185810719410ull, 8388138297840135836ull, 13285041208524385167ull, 3511691344795345048ull}}, {{3656006158553847646ull, 5873486853872781892ull, 16606301510655481459ull, 4389614180994181310ull}}, {{11508375885950930587ull, 1365086274456794730ull, 5767252425732288008ull, 2743508863121363319ull}}, {{5162097820583887426ull, 1706357843070993413ull, 2597379513737972106ull, 3429386078901704149ull}}, {{11064308294157247186ull, 11356319340693517574ull, 7858410410599853036ull, 4286732598627130186ull}}, {{2303506665420891588ull, 16321071624788224292ull, 9523192525052296051ull, 2679207874141956366ull}}, {{2879383331776114484ull, 15789653512557892461ull, 2680618619460594256ull, 3349009842677445458ull}}, {{8210915183147531009ull, 1290322816987813960ull, 12574145311180518629ull, 4186262303346806822ull}}, {{5131821989467206881ull, 3112294769831077677ull, 3247154801060436239ull, 2616413939591754264ull}}, {{11026463505261396505ull, 17725426517571010808ull, 4058943501325545298ull, 3270517424489692830ull}}, {{13783079381576745631ull, 12933411110108987702ull, 14297051413511707431ull, 4088146780612116037ull}}, {{4002738595058078116ull, 15000910971459199170ull, 11241500142658511096ull, 2555091737882572523ull}}, {{14226795280677373453ull, 304394640614447346ull, 9440189159895750967ull, 3193864672353215654ull}}, {{8560122063991941008ull, 14215551356050222895ull, 2576864413014912900ull, 3992330840441519568ull}}, {{12267605317636044986ull, 18108091634386165117ull, 1610540258134320562ull, 2495206775275949730ull}}, {{1499448591762892520ull, 13411742506127930589ull, 11236547359522676511ull, 3119008469094937162ull}}, {{6485996758131003554ull, 12152992114232525332ull, 4822312162548569831ull, 3898760586368671453ull}}, {{13277120010686653030ull, 14513149099036410188ull, 5319788110806550096ull, 2436725366480419658ull}}, {{16596400013358316287ull, 18141436373795512735ull, 15873107175362963428ull, 3045906708100524572ull}}, {{16133813998270507454ull, 4230051393534839303ull, 1394639895494152670ull, 3807383385125655716ull}}, {{17001162776560149015ull, 16478840176241438276ull, 10095021971538621226ull, 2379614615703534822ull}}, {{2804709396990634653ull, 11375178183447022038ull, 3395405427568500725ull, 2974518269629418528ull}}, {{12729258783093069124ull, 383914674026613835ull, 4244256784460625907ull, 3718147837036773160ull}}, {{5649943730219474251ull, 16380847735762491311ull, 2652660490287891191ull, 2323842398147983225ull}}, {{2450743644346954909ull, 15864373651275726235ull, 7927511631287251893ull, 2904802997684979031ull}}, {{16898487610715857348ull, 5995409008812494081ull, 5297703520681676963ull, 3631003747106223789ull}}, {{7288051458112657973ull, 2882575242588229698ull, 11233815419279484108ull, 4538754683882779736ull}}, {{9166718179747799137ull, 11024981563472419369ull, 7021134637049677567ull, 2836721677426737335ull}}, {{16070083743112136826ull, 9169540935913136307ull, 4164732277884709055ull, 3545902096783421669ull}}, {{15475918660462783128ull, 6850240151464032480ull, 9817601365783274223ull, 4432377620979277086ull}}, {{9672449162789239455ull, 11198929122306102156ull, 1524314835187158485ull, 2770236013112048179ull}}, {{12090561453486549319ull, 163603347600463983ull, 15740451599266111819ull, 3462795016390060223ull}}, {{10501515798430798745ull, 14039562239782743691ull, 15063878480655251869ull, 4328493770487575279ull}}, {{4257604364805555264ull, 11080569409077908759ull, 16332453078050614274ull, 2705308606554734549ull}}, {{710319437579556175ull, 4627339724492610141ull, 6580508292281104131ull, 3381635758193418187ull}}, {{5499585315401833123ull, 1172488637188374772ull, 3613949346923992260ull, 4227044697741772734ull}}, {{12660612858980921510ull, 9956177435097510040ull, 16093776397109658874ull, 2641902936088607958ull}}, {{15825766073726151887ull, 3221849757017111742ull, 10893848459532297785ull, 3302378670110759948ull}}, {{10558835555302914051ull, 8638998214698777582ull, 13617310574415372231ull, 4127973337638449935ull}}, {{1987586203636933378ull, 12316902911827817845ull, 15428348136650689500ull, 2579983336024031209ull}}, {{7096168772973554627ull, 15396128639784772306ull, 5450377115531198163ull, 3224979170030039012ull}}, {{18093583003071719091ull, 14633474781303577478ull, 6812971394413997704ull, 4031223962537548765ull}}, {{6696803358492436528ull, 9145921738314735924ull, 6563950130722442517ull, 2519514976585967978ull}}, {{8371004198115545660ull, 16044088191320807809ull, 17428309700257828954ull, 3149393720732459972ull}}, {{15075441266071819979ull, 10831738202296233953ull, 3338643051612734577ull, 3936742150915574966ull}}, {{2504621763653805631ull, 18299051422503615981ull, 15921709962540122822ull, 2460463844322234353ull}}, {{7742463222994644943ull, 13650442241274744168ull, 6067079397892989816ull, 3075579805402792942ull}}, {{9678079028743306178ull, 17063052801593430210ull, 16807221284221013078ull, 3844474756753491177ull}}, {{10660485411391954266ull, 6052721982568505977ull, 3586984274997051318ull, 2402796722970931986ull}}, {{17937292782667330736ull, 16789274515065408279ull, 13707102380601089955ull, 3003495903713664982ull}}, {{17809929959906775516ull, 16374907125404372445ull, 7910505938896586636ull, 3754369879642081228ull}}, {{13437049234155428649ull, 1010944916522956970ull, 14167438248665142456ull, 2346481174776300767ull}}, {{7572939505839510004ull, 1263681145653696213ull, 13097611792404040166ull, 2933101468470375959ull}}, {{14077860400726775408ull, 10802973468921896074ull, 11760328722077662303ull, 3666376835587969949ull}}, {{8373953464053693452ull, 8892030817724982189ull, 865352847314914167ull, 4582971044484962437ull}}, {{7539563924247252360ull, 12475048288719195724ull, 2846688538785515306ull, 2864356902803101523ull}}, {{9424454905309065450ull, 6370438324044218847ull, 17393418728764057845ull, 3580446128503876903ull}}, {{7168882613208943908ull, 12574733923482661463ull, 17130087392527684402ull, 4475557660629846129ull}}, {{11398080660896671799ull, 12470894720604051318ull, 3788775592688720895ull, 2797223537893653831ull}}, {{5024228789266063940ull, 10976932382327676244ull, 124283472433513215ull, 3496529422367067289ull}}, {{6280285986582579925ull, 9109479459482207401ull, 4767040358969279423ull, 4370661777958834111ull}}, {{15454393787682582214ull, 12610953689817461481ull, 9896929251996881495ull, 2731663611224271319ull}}, {{5482934179321064055ull, 11152006093844438948ull, 7759475546568713965ull, 3414579514030339149ull}}, {{6853667724151330068ull, 104949562023384973ull, 14311030451638280361ull, 4268224392537923936ull}}, {{6589385336808275245ull, 11594808522333085368ull, 8944394032273925225ull, 2667640245336202460ull}}, {{8236731671010344056ull, 658452597634192998ull, 11180492540342406532ull, 3334550306670253075ull}}, {{1072542551908154262ull, 823065747042741248ull, 9363929657000620261ull, 4168187883337816344ull}}, {{670339094942596414ull, 2820259101115407232ull, 5852456035625387663ull, 2605117427086135215ull}}, {{837923868678245517ull, 17360381931676422752ull, 2703884026104346674ull, 3256396783857669019ull}}, {{1047404835847806896ull, 12477105377740752632ull, 17214913087912597055ull, 4070495979822086273ull}}, {{654628022404879310ull, 14715719888729052251ull, 3841791652304291303ull, 2544059987388803921ull}}, {{14653343083288262850ull, 13782963842483927409ull, 9413925583807752033ull, 3180074984236004901ull}}, {{4481620798828164850ull, 3393646747822745550ull, 16379092998187077946ull, 3975093730295006126ull}}, {{16636071054549766744ull, 6732715235816603872ull, 5625247105439535812ull, 2484433581434378829ull}}, {{2348344744477656813ull, 8415894044770754841ull, 11643244900226807669ull, 3105541976792973536ull}}, {{7547116949024458921ull, 15131553574390831455ull, 14554056125283509586ull, 3881927470991216920ull}}, {{11634477120781368682ull, 14068907002421657563ull, 9096285078302193491ull, 2426204669369510575ull}}, {{9931410382549322948ull, 12974447734599684050ull, 6758670329450353960ull, 3032755836711888219ull}}, {{3190890941331877877ull, 16218059668249605063ull, 3836651893385554546ull, 3790944795889860274ull}}, {{8911835865973505529ull, 14747973311083391068ull, 7009593451793359495ull, 2369340497431162671ull}}, {{11139794832466881911ull, 13823280620426850931ull, 4150305796314311465ull, 2961675621788953339ull}}, {{9313057522156214485ull, 3444042720251399952ull, 576196226965501428ull, 3702094527236191674ull}}, {{5820660951347634053ull, 11375898737011900778ull, 4971808660280826296ull, 2313809079522619796ull}}, {{16499198226039318374ull, 14219873421264875972ull, 6214760825351032870ull, 2892261349403274745ull}}, {{2177253708839596352ull, 8551469739726319158ull, 12380137050116178992ull, 3615326686754093431ull}}, {{11944939172904271248ull, 10689337174657898947ull, 10863485294217835836ull, 4519158358442616789ull}}, {{5159743973851475578ull, 15904207771015962650ull, 9095521318099841349ull, 2824473974026635493ull}}, {{15673052004169120280ull, 6045201658487789600ull, 15981087666052189591ull, 3530592467533294366ull}}, {{1144570931501848734ull, 2944816054682349097ull, 10752987545710461181ull, 4413240584416617958ull}}, {{12244571878257125219ull, 4146353043390162137ull, 2108931197641650334ull, 2758275365260386224ull}}, {{1470656792539242812ull, 14406313341092478480ull, 2636163997052062917ull, 3447844206575482780ull}}, {{1838320990674053515ull, 4172833621083434388ull, 3295204996315078647ull, 4309805258219353475ull}}, {{10372322656026059255ull, 9525550040818228348ull, 18200404187192781818ull, 2693628286387095921ull}}, {{12965403320032574069ull, 2683565514168009627ull, 8915447178708813561ull, 3367035357983869902ull}}, {{11595068131613329682ull, 7966142911137399938ull, 1920936936531241143ull, 4208794197479837378ull}}, {{11858603600685718955ull, 11896368347101956817ull, 5812271603759413618ull, 2630496373424898361ull}}, {{988196445574984982ull, 5647088397022670214ull, 11877025523126654927ull, 3288120466781122951ull}}, {{10458617593823507035ull, 2447174477850949863ull, 10234595885480930755ull, 4110150583476403689ull}}, {{13454165023780773753ull, 17670385113152701328ull, 17925837474494051481ull, 2568844114672752305ull}}, {{16817706279725967191ull, 8252923336158712948ull, 8572238787835400640ull, 3211055143340940382ull}}, {{2575388775947907373ull, 10316154170198391186ull, 1491926447939474992ull, 4013818929176175478ull}}, {{6221304003394830012ull, 6447596356373994491ull, 14767512085244335582ull, 2508636830735109673ull}}, {{3164943985816149611ull, 17282867482322268922ull, 4624332051273255765ull, 3135796038418887092ull}}, {{13179552019124962822ull, 7768526297620672440ull, 5780415064091569707ull, 3919745048023608865ull}}, {{8237220011953101764ull, 2549485926799226323ull, 15141974461125700827ull, 2449840655014755540ull}}, {{5684838996513989301ull, 17021915463781196616ull, 480724002697574417ull, 3062300818768444426ull}}, {{7106048745642486626ull, 7442336274444332058ull, 9824277040226743830ull, 3827876023460555532ull}}, {{9052966484453942045ull, 39774153100319632ull, 15363545186996490702ull, 2392422514662847207ull}}, {{11316208105567427557ull, 9273089728230175348ull, 14592745465318225473ull, 2990528143328559009ull}}, {{14145260131959284446ull, 16203048178715107089ull, 4405873776365618129ull, 3738160179160698762ull}}, {{1923258554833470923ull, 3209376084055860075ull, 7365357128655899235ull, 2336350111975436726ull}}, {{16239131248824002365ull, 17846778160351988805ull, 18430068447674649851ull, 2920437639969295907ull}}, {{6463856005747839244ull, 17696786682012598103ull, 18425899541165924410ull, 3650547049961619884ull}}, {{3468133988757411151ull, 12897611315660971821ull, 4585630352747853897ull, 4563183812452024856ull}}, {{4473426752187075922ull, 1143478044647025532ull, 2866018970467408686ull, 2851989882782515535ull}}, {{5591783440233844902ull, 10652719592663557723ull, 17417581768366424569ull, 3564987353478144418ull}}, {{2378043281864918223ull, 17927585509256835058ull, 12548605173603254903ull, 4456234191847680523ull}}, {{6097963069592961794ull, 18122269970926603767ull, 5537035224288340362ull, 2785146369904800327ull}}, {{3010767818563814338ull, 13429465426803478901ull, 2309608011933037549ull, 3481432962381000409ull}}, {{8375145791632155827ull, 2951773728222184914ull, 7498696033343684841ull, 4351791202976250511ull}}, {{9846152138197485296ull, 13374073626207335331ull, 11604214048480884881ull, 2719869501860156569ull}}, {{7696004154319468716ull, 2882533977477005452ull, 670209505318942390ull, 3399836877325195712ull}}, {{9620005192899335894ull, 12826539508701032623ull, 837761881648677987ull, 4249796096656494640ull}}, {{12930032273203166790ull, 5710744183724451437ull, 523601176030423742ull, 2656122560410309150ull}}, {{2327482286221794776ull, 16361802266510340105ull, 9877873506892805485ull, 3320153200512886437ull}}, {{7521038876204631373ull, 6617194777855761419ull, 16959027902043394761ull, 4150191500641108046ull}}, {{2394806288414200657ull, 15664961782228320647ull, 5987706420349733821ull, 2593869687900692529ull}}, {{16828565915799914533ull, 5746144172503237096ull, 12096319043864555181ull, 3242337109875865661ull}}, {{2588963321040341550ull, 11794366234056434275ull, 1285340749548530264ull, 4052921387344832077ull}}, {{17759003140146071133ull, 7371478896285271421ull, 3109180977681525367ull, 2533075867090520048ull}}, {{8363695869900425204ull, 4602662601929201373ull, 3886476222101906709ull, 3166344833863150060ull}}, {{15066305855802919409ull, 10365014270838889620ull, 4858095277627383386ull, 3957931042328937575ull}}, {{193069123022048823ull, 11089819937701693917ull, 9953838576158196472ull, 2473706901455585984ull}}, {{4853022422204948932ull, 13862274922127117396ull, 12442298220197745590ull, 3092133626819482480ull}}, {{6066278027756186165ull, 8104471615804120937ull, 15552872775247181988ull, 3865167033524353100ull}}, {{15320638813416086113ull, 14288666796732351393ull, 497173447674712934ull, 2415729395952720688ull}}, {{5315740461487943929ull, 8637461459060663434ull, 621466809593391168ull, 3019661744940900860ull}}, {{15868047613714705720ull, 10796826823825829292ull, 776833511991738960ull, 3774577181176126075ull}}, {{694157721716915267ull, 6748016764891143308ull, 16626422009490694514ull, 2359110738235078796ull}}, {{867697152146144084ull, 17658392992968704943ull, 2336283438153816526ull, 2948888422793848496ull}}, {{14919679495464843816ull, 12849619204356105370ull, 2920354297692270658ull, 3686110528492310620ull}}, {{9426227332476278962ull, 6838651968590355905ull, 3650442872115338323ull, 4607638160615388275ull}}, {{17420607128866144112ull, 1968314471155278488ull, 18422427859567944116ull, 2879773850384617671ull}}, {{3329014837373128523ull, 2460393088944098111ull, 18416348806032542241ull, 3599717312980772089ull}}, {{17996326601998574366ull, 7687177379607510542ull, 9185377952258514089ull, 4499646641225965112ull}}, {{6636018107821721075ull, 16333700908323163849ull, 5740861220161571305ull, 2812279150766228195ull}}, {{12906708653204539248ull, 6582068080121791099ull, 2564390506774576228ull, 3515348938457785244ull}}, {{11521699798078286156ull, 8227585100152238874ull, 3205488133468220285ull, 4394186173072231555ull}}, {{11812748392226316751ull, 7448083696808843248ull, 18144331147913495342ull, 2746366358170144721ull}}, {{14765935490282895939ull, 86732584156278252ull, 8845355879609705466ull, 3432957947712680902ull}}, {{10675289144068308ull, 9331787767050123624ull, 1833322812657356024ull, 4291197434640851128ull}}, {{6672055715042693ull, 5832367354406327265ull, 1145826757910847515ull, 2681998396650531955ull}}, {{4620026088071191270ull, 2678773174580521177ull, 15267341502670723106ull, 3352497995813164943ull}}, {{10386718628516376991ull, 12571838505080427279ull, 14472490859911015978ull, 4190622494766456179ull}}, {{13409228170463817475ull, 12469085084102654953ull, 6739463778230691034ull, 2619139059229035112ull}}, {{2926477157797608132ull, 6362984318273542884ull, 8424329722788363793ull, 3273923824036293890ull}}, {{3658096447247010165ull, 12565416416269316509ull, 1307040116630678933ull, 4092404780045367363ull}}, {{4592153288743075305ull, 10159228269382016770ull, 16957801137390031997ull, 2557752987528354601ull}}, {{14963563647783619940ull, 17310721355154908866ull, 7362193366455376284ull, 3197191234410443252ull}}, {{9481082522874749116ull, 3191657620234084467ull, 9202741708069220356ull, 3996489043013054065ull}}, {{3619833567583024246ull, 11218158049501078600ull, 17280928613611732482ull, 2497805651883158790ull}}, {{4524791959478780307ull, 4799325525021572442ull, 12377788730159889795ull, 3122257064853948488ull}}, {{14879361986203251192ull, 1387470887849577648ull, 15472235912699862244ull, 3902821331067435610ull}}, {{9299601241377031995ull, 10090541341760761838ull, 14281833463864801806ull, 2439263331917147256ull}}, {{2401129514866514186ull, 3389804640346176490ull, 17852291829831002258ull, 3049079164896434070ull}}, {{12224783930437918540ull, 13460627837287496420ull, 13091992750433977014ull, 3811348956120542588ull}}, {{16863861993378474896ull, 3801206379877297358ull, 17405867505876011442ull, 2382093097575339117ull}}, {{11856455454868317812ull, 13974880011701397506ull, 7922276327062850590ull, 2977616371969173897ull}}, {{5597197281730621456ull, 8245227977771971075ull, 14514531427255951142ull, 3722020464961467371ull}}, {{1192405291867944458ull, 541581467680094018ull, 6765739132821275512ull, 2326262790600917107ull}}, {{10713878651689706381ull, 676976834600117522ull, 3845487897599206486ull, 2907828488251146384ull}}, {{4168976277757357168ull, 10069593080104922711ull, 4806859871999008107ull, 3634785610313932980ull}}, {{599534328769308556ull, 7975305331703765485ull, 6008574839998760134ull, 4543482012892416225ull}}, {{2680551964694511800ull, 372879813887465524ull, 15284574321067694844ull, 2839676258057760140ull}}, {{3350689955868139749ull, 466099767359331905ull, 658973827625066939ull, 3549595322572200176ull}}, {{8800048463262562591ull, 14417682764481328593ull, 823717284531333673ull, 4436994153215250220ull}}, {{17029245335607571379ull, 2093522700159748514ull, 9738195339686859354ull, 2773121345759531387ull}}, {{12063184632654688416ull, 11840275412054461451ull, 7561058156181186288ull, 3466401682199414234ull}}, {{10467294772390972616ull, 14800344265068076814ull, 227950658371707052ull, 4333002102749267793ull}}, {{1930373214316969981ull, 26843128812772201ull, 11671684207550786668ull, 2708126314218292370ull}}, {{7024652536323600380ull, 33553911015965251ull, 5366233222583707527ull, 3385157892772865463ull}}, {{4169129651977112571ull, 13877000444052120276ull, 2096105509802246504ull, 4231447365966081829ull}}, {{11829078069340471165ull, 8673125277532575172ull, 3615908952840098017ull, 2644654603728801143ull}}, {{14786347586675588956ull, 15453092615343106869ull, 18354944246332286233ull, 3305818254661001428ull}}, {{4647876428062322483ull, 5481307713896719875ull, 4496936234205806176ull, 4132272818326251786ull}}, {{599079758325257600ull, 3425817321185449922ull, 7422271164806016764ull, 2582670511453907366ull}}, {{9972221734761347808ull, 4282271651481812402ull, 54466919152745147ull, 3228338139317384208ull}}, {{3241905131596908952ull, 741153545924877599ull, 68083648940931434ull, 4035422674146730260ull}}, {{8943719734889149951ull, 5074906984630436403ull, 9265924317442857954ull, 2522139171341706412ull}}, {{6567963650184049535ull, 15567005767642821312ull, 11582405396803572442ull, 3152673964177133015ull}}, {{8209954562730061919ull, 10235385172698750832ull, 9866320727577077649ull, 3940842455221416269ull}}, {{5131221601706288699ull, 17926330779005189030ull, 8472293463949367482ull, 2463026534513385168ull}}, {{15637399038987636682ull, 13184541436901710479ull, 10590366829936709353ull, 3078783168141731460ull}}, {{14935062780307157948ull, 2645618740844974387ull, 13237958537420886692ull, 3848478960177164325ull}}, {{7028571228478279766ull, 10876883749882884800ull, 10579567095101748134ull, 2405299350110727703ull}}, {{8785714035597849707ull, 4372732650498830192ull, 8612772850449797264ull, 3006624187638409629ull}}, {{10982142544497312134ull, 5465915813123537740ull, 15377652081489634484ull, 3758280234548012036ull}}, {{16087211127165595892ull, 12639569420056986895ull, 387660514076245744ull, 2348925146592507523ull}}, {{15497327890529606961ull, 15799461775071233619ull, 14319633697877470892ull, 2936156433240634403ull}}, {{14759973844734620797ull, 1302583145129490408ull, 13287856103919450712ull, 3670195541550793004ull}}, {{3223232208724380ull, 1628228931411863011ull, 16609820129899313390ull, 4587744426938491255ull}}, {{16142915584626310402ull, 14852701137414578093ull, 17298666608828152724ull, 2867340266836557034ull}}, {{6343586425500724290ull, 119132348058671001ull, 12399961224180415098ull, 3584175333545696293ull}}, {{12541169050303293266ull, 9372287471928114559ull, 1664893474943355160ull, 4480219166932120367ull}}, {{14755759684080640148ull, 5857679669955071599ull, 7958087449480678831ull, 2800136979332575229ull}}, {{13833013586673412280ull, 2710413569016451595ull, 14559295330278236443ull, 3500171224165719036ull}}, {{12679580964914377446ull, 17223075016552728206ull, 18199119162847795553ull, 4375214030207148795ull}}, {{3313052084644098000ull, 3846892857704373273ull, 9068606467566178269ull, 2734508768879467997ull}}, {{8753001124232510404ull, 9420302090557854495ull, 15947444102885110740ull, 3418135961099334996ull}}, {{6329565386863250101ull, 11775377613197318119ull, 1487561054896836809ull, 4272669951374168746ull}}, {{10873507394430613169ull, 442081980607241968ull, 5541411677737910910ull, 2670418719608855466ull}}, {{13591884243038266462ull, 9775974512613828268ull, 16150136634027164445ull, 3338023399511069332ull}}, {{16989855303797833077ull, 16831654159194673239ull, 1740926718824403940ull, 4172529249388836666ull}}, {{17536188592514727529ull, 1296411812641894966ull, 5699765217692640367ull, 2607830780868022916ull}}, {{12696863703788633603ull, 15455572821084532420ull, 7124706522115800458ull, 3259788476085028645ull}}, {{15871079629735792004ull, 10096093989500889717ull, 13517569171072138477ull, 4074735595106285806ull}}, {{12225267777798563955ull, 8615901752651750025ull, 3836794713492698644ull, 2546709746941428629ull}}, {{1446526666966041231ull, 10769877190814687532ull, 9407679410293261209ull, 3183387183676785786ull}}, {{1808158333707551539ull, 18074032506945747319ull, 2536227226011800703ull, 3979233979595982233ull}}, {{8047627986208301568ull, 18213799344482173930ull, 13114357062325845199ull, 2487021237247488895ull}}, {{836162945905601152ull, 18155563162175329509ull, 11781260309479918595ull, 3108776546559361119ull}}, {{5656889700809389344ull, 18082767934291773982ull, 10114889368422510340ull, 3885970683199201399ull}}, {{17370614118288032052ull, 2078357922077582930ull, 13239334882905150819ull, 2428731676999500874ull}}, {{12489895611005264257ull, 16433005457879142375ull, 7325796566776662715ull, 3035914596249376093ull}}, {{11000683495329192417ull, 15929570803921540065ull, 13768931726898216298ull, 3794893245311720116ull}}, {{18404642230649215021ull, 14567667770878350444ull, 17828954366166160994ull, 2371808278319825072ull}}, {{4559058714601967160ull, 8986212676743162248ull, 3839448883998149627ull, 2964760347899781341ull}}, {{5698823393252458950ull, 6621079827501564906ull, 9410997123425074938ull, 3705950434874726676ull}}, {{8173450639210174748ull, 8749860910615865970ull, 15105245238995447644ull, 2316219021796704172ull}}, {{993441262157942627ull, 10937326138269832463ull, 434812475034757939ull, 2895273777245880216ull}}, {{15076859632979591995ull, 9059971654409902674ull, 543515593793447424ull, 3619092221557350270ull}}, {{9622702504369714186ull, 11324964568012378343ull, 9902766529096585088ull, 4523865276946687837ull}}, {{12931718092872153222ull, 7078102855007736464ull, 8495072089899059632ull, 2827415798091679898ull}}, {{16164647616090191528ull, 8847628568759670580ull, 1395468075519048732ull, 3534269747614599873ull}}, {{1759065446403187794ull, 11059535710949588226ull, 6356021112826198819ull, 4417837184518249841ull}}, {{5711101922429380275ull, 4606366810129798689ull, 15501728241584844022ull, 2761148240323906150ull}}, {{11750563421464113248ull, 14981330549517024169ull, 10153788265126279219ull, 3451435300404882688ull}}, {{853146221547977848ull, 14114977168468892308ull, 12692235331407849024ull, 4314294125506103360ull}}, {{9756588425322261963ull, 8821860730293057692ull, 7932647082129905640ull, 2696433828441314600ull}}, {{12195735531652827454ull, 11027325912866322115ull, 9915808852662382050ull, 3370542285551643250ull}}, {{10632983396138646413ull, 4560785354228126836ull, 3171389028973201755ull, 4213177856939554063ull}}, {{15868986659441429816ull, 544647837178885320ull, 8899647170749332953ull, 2633236160587221289ull}}, {{1389489250592235654ull, 5292495814900994555ull, 15736244981864054095ull, 3291545200734026611ull}}, {{15571919618522458280ull, 2003933750198855289ull, 15058620208902679715ull, 4114431500917533264ull}}, {{2814920733935454569ull, 17393359658370142220ull, 9411637630564174821ull, 2571519688073458290ull}}, {{3518650917419318211ull, 7906641517680514063ull, 2541175001350442719ull, 3214399610091822863ull}}, {{18233371702056311476ull, 5271615878673254674ull, 17011526806970217111ull, 4017999512614778578ull}}, {{16007543332212582577ull, 10212288951811866027ull, 15243890272783773598ull, 2511249695384236611ull}}, {{15397743146838340317ull, 3541989152910056726ull, 14443176822552329094ull, 3139062119230295764ull}}, {{10023806896693149588ull, 13650858477992346716ull, 18053971028190411367ull, 3923827649037869705ull}}, {{15488251347287994300ull, 15449315576386298553ull, 4366202864977925248ull, 2452392280648668566ull}}, {{5525256128827829163ull, 864900396773321576ull, 14681125618077182369ull, 3065490350810835707ull}}, {{6906570161034786454ull, 5692811514394039874ull, 13739721004169090057ull, 3831862938513544634ull}}, {{8928292369074129438ull, 15087222242564744681ull, 13199011646033069189ull, 2394914336570965396ull}}, {{15772051479770049701ull, 5023969747923767139ull, 16498764557541336487ull, 2993642920713706745ull}}, {{15103378331285174223ull, 1668276166477321020ull, 6788397641644506897ull, 3742053650892133432ull}}, {{216239420198458081ull, 12571887650116795398ull, 4242748526027816810ull, 2338783531807583395ull}}, {{9493671312102848410ull, 6491487525791218439ull, 691749639107383109ull, 2923479414759479244ull}}, {{7255403121701172608ull, 12726045425666410953ull, 864687048884228886ull, 3654349268449349055ull}}, {{13680939920553853664ull, 6684184745228237883ull, 14915916866387449820ull, 4567936585561686318ull}}, {{6244744441132464588ull, 13400987502622424485ull, 4710762023064768233ull, 2854960365976053949ull}}, {{12417616569842968639ull, 2916176322995866894ull, 10500138547258348196ull, 3568700457470067436ull}}, {{6298648675448934990ull, 3645220403744833618ull, 13125173184072935245ull, 4460875571837584295ull}}, {{8548341440582972273ull, 4584105761554214963ull, 15120762267686666384ull, 2788047232398490184ull}}, {{6073740782301327437ull, 5730132201942768704ull, 454208760898781364ull, 3485059040498112731ull}}, {{7592175977876659297ull, 7162665252428460880ull, 14402819006405640417ull, 4356323800622640913ull}}, {{4745109986172912061ull, 16005880828836257810ull, 2084232851362443404ull, 2722702375389150571ull}}, {{15154759519570915884ull, 1560606962335770646ull, 16440349119485217968ull, 3403377969236438213ull}}, {{9720077362608869046ull, 1950758702919713308ull, 6715378344074358748ull, 4254222461545547767ull}}, {{15298420388485318962ull, 10442596226179596625ull, 11114640492687556073ull, 2658889038465967354ull}}, {{5287967430324484991ull, 17664931301151883686ull, 4669928579004669283ull, 3323611298082459193ull}}, {{15833331324760382046ull, 17469478108012466703ull, 10449096742183224508ull, 4154514122603073991ull}}, {{16813361105616320635ull, 1695051780653015881ull, 13448214491505597174ull, 2596571326626921244ull}}, {{7181643326738237082ull, 11342186762671045660ull, 16810268114381996467ull, 3245714158283651555ull}}, {{8977054158422796352ull, 9566047434911419171ull, 16401149124550107680ull, 4057142697854564444ull}}, {{3304815839800553768ull, 5978779646819636982ull, 1027346165989041492ull, 2535714186159102778ull}}, {{13354391836605468018ull, 7473474558524546227ull, 10507554744341077673ull, 3169642732698878472ull}}, {{12081303777329447118ull, 13953529216583070688ull, 13134443430426347091ull, 3962053415873598090ull}}, {{7550814860830904449ull, 6415112751150725228ull, 12820713162443854836ull, 2476283384920998806ull}}, {{9438518576038630561ull, 8018890938938406535ull, 6802519416200042737ull, 3095354231151248508ull}}, {{7186462201620900298ull, 14635299692100396073ull, 8503149270250053421ull, 3869192788939060635ull}}, {{16020753922081532446ull, 11452905316776441497ull, 3008625284692589436ull, 2418245493086912897ull}}, {{6190884347319751846ull, 14316131645970551872ull, 8372467624293124699ull, 3022806866358641121ull}}, {{7738605434149689807ull, 13283478539035801936ull, 15077270548793793778ull, 3778508582948301401ull}}, {{4836628396343556129ull, 12913860105324764114ull, 2505765065355039255ull, 2361567864342688376ull}}, {{15269157532284220970ull, 11530639113228567238ull, 3132206331693799069ull, 2951959830428360470ull}}, {{9863074878500500404ull, 578240836253545336ull, 13138629951472024645ull, 3689949788035450587ull}}, {{6164421799062812753ull, 2667243531872159787ull, 5905800710456321451ull, 2306218617522156617ull}}, {{3093841230401128037ull, 17169112470122363446ull, 11993936906497789717ull, 2882773271902695771ull}}, {{13090673574856185854ull, 7626332532370790595ull, 10380735114694849243ull, 3603466589878369714ull}}, {{11751655950142844413ull, 4921229647036100340ull, 3752546856513785746ull, 4504333237347962143ull}}, {{16568157005694053566ull, 7687454547824950616ull, 9262870812962197947ull, 2815208273342476339ull}}, {{2263452183408015342ull, 4997632166353800367ull, 6966902497775359530ull, 3519010341678095424ull}}, {{16664373284542182889ull, 15470412244797026266ull, 8708628122219199412ull, 4398762927097619280ull}}, {{15026919321266252210ull, 445635616143365608ull, 5442892576386999633ull, 2749226829436012050ull}}, {{336905077873263646ull, 5168730538606594915ull, 16026987757338525349ull, 3436533536795015062ull}}, {{14256189402623743270ull, 11072599191685631547ull, 10810362659818380878ull, 4295666920993768828ull}}, {{6604275367426145592ull, 2308688476376131813ull, 15979848699241263857ull, 2684791825621105517ull}}, {{12867030227710069894ull, 7497546613897552670ull, 6139752818769416109ull, 3355989782026381897ull}}, {{6860415747782811559ull, 13983619285799328742ull, 12286377041889158040ull, 4194987227532977371ull}}, {{18122817897646420936ull, 8739762053624580463ull, 5373142641967029823ull, 2621867017208110857ull}}, {{18041836353630638266ull, 6313016548603337675ull, 11328114320886175183ull, 3277333771510138571ull}}, {{17940609423610909929ull, 3279584667326784190ull, 9548456882680331075ull, 4096667214387673214ull}}, {{6601194871329430802ull, 18190641481575097783ull, 1356099533247819017ull, 2560417008992295759ull}}, {{3639807570734400598ull, 8903243796686708517ull, 15530182471841937484ull, 3200521261240369698ull}}, {{9161445481845388652ull, 11129054745858385646ull, 10189356052947646047ull, 4000651576550462123ull}}, {{1114217407725980003ull, 13873188243802572885ull, 4062504523878584827ull, 2500407235344038827ull}}, {{6004457778084862908ull, 12729799286325828202ull, 466444636420843130ull, 3125509044180048534ull}}, {{16728944259460854443ull, 6688877071052509444ull, 9806427832380829721ull, 3906886305225060667ull}}, {{1232218125308258219ull, 15709763215476288163ull, 3823174386024324623ull, 2441803940765662917ull}}, {{15375330711917486486ull, 15025518000917972299ull, 9390654000957793683ull, 3052254925957078646ull}}, {{14607477371469470203ull, 14170211482720077470ull, 2514945464342466296ull, 3815318657446348308ull}}, {{4517987338741030973ull, 8856382176700048419ull, 10795212952068817243ull, 2384574160903967692ull}}, {{1035798154998900812ull, 6458791702447672620ull, 13494016190086021554ull, 2980717701129959615ull}}, {{1294747693748626015ull, 17296861664914366583ull, 12255834219180139038ull, 3725897126412449519ull}}, {{7726746336233973116ull, 6198852522144091210ull, 14577425414628668755ull, 2328685704007780949ull}}, {{435060883437690586ull, 3136879634252726109ull, 4386723713003672232ull, 2910857130009726187ull}}, {{5155512122724501137ull, 3921099542815907636ull, 871718622827202386ull, 3638571412512157734ull}}, {{6444390153405626421ull, 14124746465374660353ull, 10313020315388778790ull, 4548214265640197167ull}}, {{15556958891946986273ull, 4216280522431774816ull, 13363166724759068600ull, 2842633916025123229ull}}, {{999454541224181226ull, 5270350653039718521ull, 2868900350666672038ull, 3553292395031404037ull}}, {{5861004194957614436ull, 15811310353154423959ull, 8197811456760727951ull, 4441615493789255046ull}}, {{10580656649489590879ull, 16799597998362596830ull, 511946142048067065ull, 2776009683618284404ull}}, {{4002448775007212790ull, 7164439442671082326ull, 639932677560083832ull, 3470012104522855505ull}}, {{14226433005613791795ull, 8955549303338852907ull, 5411601865377492694ull, 4337515130653569381ull}}, {{6585677619294925920ull, 985532296159395163ull, 5688094175074626886ull, 2710946956658480863ull}}, {{3620411005691269496ull, 10455287407054019762ull, 2498431700415895703ull, 3388683695823101079ull}}, {{13748885793968862678ull, 8457423240390136798ull, 16958097680802033341ull, 4235854619778876348ull}}, {{3981367602803151270ull, 7591732534457529451ull, 1375439013646495030ull, 2647409137361797718ull}}, {{365023485076551183ull, 266293631217136006ull, 10942670803912894596ull, 3309261421702247147ull}}, {{9679651393200464787ull, 332867039021420007ull, 9066652486463730341ull, 4136576777127808934ull}}, {{12967311148391372348ull, 2513884908602081456ull, 1054971785612443559ull, 2585360485704880584ull}}, {{16209138935489215435ull, 16977414191034765532ull, 1318714732015554448ull, 3231700607131100730ull}}, {{1814679595651967678ull, 2775023665083905300ull, 10871765451874218869ull, 4039625758913875912ull}}, {{10357546784137255607ull, 4040232799891134764ull, 6794853407421386793ull, 2524766099321172445ull}}, {{12946933480171569508ull, 9661977018291306359ull, 13105252777704121395ull, 3155957624151465556ull}}, {{11571980831787073981ull, 7465785254436745045ull, 16381565972130151744ull, 3944947030189331945ull}}, {{9538331029080615191ull, 4666115784022965653ull, 3320949704940262984ull, 2465591893868332466ull}}, {{16534599804778156892ull, 5832644730028707066ull, 13374559168030104538ull, 3081989867335415582ull}}, {{11444877719117920307ull, 16514177949390659641ull, 7494826923182854864ull, 3852487334169269478ull}}, {{235519546807618336ull, 10321361218369162276ull, 72580808561896386ull, 2407804583855793424ull}}, {{294399433509522920ull, 3678329486106677037ull, 90726010702370483ull, 3009755729819741780ull}}, {{4979685310314291554ull, 18432969912915510008ull, 113407513377963103ull, 3762194662274677225ull}}, {{3112303318946432221ull, 18438135223213275611ull, 11600094741929696699ull, 2351371663921673265ull}}, {{17725437203965203988ull, 18435983010589206609ull, 665060372129957162ull, 2939214579902091582ull}}, {{8321738449674341273ull, 13821606726381732454ull, 10054697502017222261ull, 3674018224877614477ull}}, {{1178801025238150784ull, 3441950352695001856ull, 17180057895948915731ull, 4592522781097018096ull}}, {{736750640773844240ull, 18292120034930233824ull, 10737536184968072331ull, 2870326738185636310ull}}, {{920938300967305300ull, 18253464025235404376ull, 4198548194355314606ull, 3587908422732045388ull}}, {{1151172876209131625ull, 13593457994689479662ull, 5248185242944143258ull, 4484885528415056735ull}}, {{14554541102912870978ull, 13107597265108312692ull, 10197644804481171392ull, 2803053455259410459ull}}, {{18193176378641088722ull, 16384496581385390865ull, 8135369987174076336ull, 3503816819074263074ull}}, {{8906412418019197190ull, 2033876653022186966ull, 945840447112819613ull, 4379771023842828843ull}}, {{954821742834610340ull, 3577015917352560806ull, 16732051343941369922ull, 2737356889901768026ull}}, {{10416899215398038733ull, 13694641933545476815ull, 11691692143071936594ull, 3421696112377210033ull}}, {{8409438000820160512ull, 7894930380077070211ull, 779557123557757031ull, 4277120140471512542ull}}, {{2950055741298906368ull, 11851860515189250738ull, 14322281257505761856ull, 2673200087794695338ull}}, {{12910941713478408768ull, 14814825643986563422ull, 8679479535027426512ull, 3341500109743369173ull}}, {{6915305104993235152ull, 71787981273652662ull, 15461035437211671045ull, 4176875137179211466ull}}, {{18157123745902935682ull, 2350710497509726865ull, 14274833166684682307ull, 2610546960737007166ull}}, {{8861346627096505891ull, 16773446177169322294ull, 8620169421501077075ull, 3263183700921258958ull}}, {{1853311247015856555ull, 16355121703034264964ull, 1551839740021570536ull, 4078979626151573698ull}}, {{10381691566239686155ull, 10221951064396415602ull, 5581585855940869489ull, 2549362266344733561ull}}, {{3753742420944831886ull, 17389124848922907407ull, 11588668338353474765ull, 3186702832930916951ull}}, {{80492007753651953ull, 7901348005871470547ull, 9874149404514455553ull, 3983378541163646189ull}}, {{16191208569341890135ull, 16467557549738138851ull, 8477186387035228672ull, 2489611588227278868ull}}, {{15627324693249974765ull, 2137702863463121948ull, 10596482983794035841ull, 3112014485284098585ull}}, {{1087411792852916840ull, 7283814597756290340ull, 17857289748169932705ull, 3890018106605123231ull}}, {{9903004407387848833ull, 16081599169666151222ull, 18078335120247289796ull, 2431261316628202019ull}}, {{3155383472380035233ull, 1655254888373137412ull, 17986232881881724342ull, 3039076645785252524ull}}, {{3944229340475044041ull, 11292440647321197573ull, 4036047028642603811ull, 3798845807231565656ull}}, {{4770986347010596478ull, 4751932395362054531ull, 2522529392901627382ull, 2374278629519728535ull}}, {{1352046915335857693ull, 15163287531057343972ull, 16988219796409197939ull, 2967848286899660668ull}}, {{1690058644169822117ull, 14342423395394292061ull, 2788530671801945808ull, 3709810358624575836ull}}, {{3362129661819832775ull, 8964014622121432538ull, 10966203706730991938ull, 2318631474140359897ull}}, {{13426034114129566777ull, 1981646240797014864ull, 18319440651841127827ull, 2898289342675449871ull}}, {{16782542642661958471ull, 16312115856278432292ull, 18287614796374021879ull, 3622861678344312339ull}}, {{2531434229617896472ull, 15778458801920652462ull, 18247832477040139445ull, 4528577097930390424ull}}, {{15417204448793349007ull, 12167379760414101740ull, 11404895298150087153ull, 2830360686206494015ull}}, {{824761487282134643ull, 1374166645235463464ull, 9644433104260221038ull, 3537950857758117519ull}}, {{1030951859102668304ull, 10941080343399105138ull, 7443855361897888393ull, 4422438572197646899ull}}, {{5256030930366555594ull, 18367390260692910471ull, 2346566591972486293ull, 2764024107623529312ull}}, {{1958352644530806588ull, 9124179770583974377ull, 2933208239965607867ull, 3455030134529411640ull}}, {{7059626824090896139ull, 6793538694802580067ull, 3666510299957009834ull, 4318787668161764550ull}}, {{2106423755843116135ull, 8857647702679000446ull, 16126626992755294858ull, 2699242292601102843ull}}, {{11856401731658670977ull, 1848687591493974749ull, 15546597722516730669ull, 3374052865751378554ull}}, {{985444109291175009ull, 6922545507794856341ull, 10209875116291137528ull, 4217566082189223193ull}}, {{2921745577520678333ull, 4326590942371785213ull, 17910386993750430715ull, 2635978801368264495ull}}, {{8263867990328235820ull, 796552659537343612ull, 17776297723760650490ull, 3294973501710330619ull}}, {{10329834987910294775ull, 10219062861276455323ull, 17608686136273425208ull, 4118716877137913274ull}}, {{4150303858230240282ull, 6386914288297784577ull, 15617114853598278659ull, 2574198048211195796ull}}, {{9799565841215188257ull, 3371956841944842817ull, 1074649493288296708ull, 3217747560263994746ull}}, {{16861143319946373225ull, 4214946052431053521ull, 10566683903465146693ull, 4022184450329993432ull}}, {{3620685547325401410ull, 4940184291983102403ull, 6604177439665716683ull, 2513865281456245895ull}}, {{18360914989438915474ull, 1563544346551490099ull, 3643535781154757950ull, 3142331601820307369ull}}, {{18339457718371256439ull, 11177802470044138432ull, 9166105744870835341ull, 3927914502275384211ull}}, {{11462161073982035274ull, 9291969552991280472ull, 3422973081330578136ull, 2454946563922115132ull}}, {{14327701342477544093ull, 11614961941239100590ull, 4278716351663222670ull, 3068683204902643915ull}}, {{8686254641242154308ull, 5295330389694099930ull, 736709421151640434ull, 3835854006128304894ull}}, {{10040595169203734347ull, 7921267511986200360ull, 14295501443501938983ull, 2397408753830190558ull}}, {{12550743961504667933ull, 5289898371555362546ull, 8646004767522647921ull, 2996760942287738198ull}}, {{6465057915026059108ull, 11224058982871591087ull, 1584133922548534093ull, 3745951177859672748ull}}, {{10958190224532368799ull, 9320879873508438381ull, 10213455738447609616ull, 2341219486162295467ull}}, {{18309423799092848902ull, 11651099841885547976ull, 8155133654632124116ull, 2926524357702869334ull}}, {{4440035675156509512ull, 14563874802356934971ull, 970545031435379337ull, 3658155447128586668ull}}, {{938358575518248986ull, 4369785447664005002ull, 1213181289294224172ull, 4572694308910733335ull}}, {{5198160128126293520ull, 11954487941644778934ull, 7675767333449971963ull, 2857933943069208334ull}}, {{15721072197012642708ull, 10331423908628585763ull, 371337129957689146ull, 3572417428836510418ull}}, {{15039654227838415481ull, 3690907848930956396ull, 9687543449301887241ull, 4465521786045638022ull}}, {{176411855544233868ull, 13836032451650317508ull, 1443028637386291621ull, 2790951116278523764ull}}, {{220514819430292335ull, 3459982509280733173ull, 1803785796732864527ull, 3488688895348154705ull}}, {{4887329542715253322ull, 18160036191883080178ull, 6866418264343468562ull, 4360861119185193381ull}}, {{7666266982624421231ull, 15961708638354313015ull, 6597354424428361803ull, 2725538199490745863ull}}, {{4971147709853138634ull, 15340449779515503365ull, 3635007012108064350ull, 3406922749363432329ull}}, {{10825620655743811197ull, 9952190187539603398ull, 9155444783562468342ull, 4258653436704290411ull}}, {{2154326891412494094ull, 1608432848784864220ull, 3416309980512848762ull, 2661658397940181507ull}}, {{2692908614265617617ull, 11233913097835856083ull, 18105445530923224664ull, 3327072997425226883ull}}, {{17201193823114185734ull, 14042391372294820103ull, 18020120895226642926ull, 4158841246781533604ull}}, {{17668275167087447940ull, 4164808589256874660ull, 2039203522661876021ull, 2599275779238458503ull}}, {{3638599885149758309ull, 9817696754998481230ull, 16384062458609508738ull, 3249094724048073128ull}}, {{13771621893291973694ull, 3048748906893325729ull, 2033333999552334307ull, 4061368405060091411ull}}, {{1689734655666401703ull, 18046369131304186245ull, 17411734814216066605ull, 2538355253162557131ull}}, {{6723854338010390032ull, 8722903358848069094ull, 17152982499342695353ull, 3172944066453196414ull}}, {{17628189959367763348ull, 15515315216987474271ull, 12217856087323593383ull, 3966180083066495518ull}}, {{17935147752245933949ull, 16614601038258253275ull, 3024474036149857960ull, 2478862551916559699ull}}, {{17807248671880029532ull, 2321507224113264978ull, 17615650600469486163ull, 3098578189895699623ull}}, {{13035688802995261107ull, 16736942085423744935ull, 17407877232159469799ull, 3873222737369624529ull}}, {{15064834529513120048ull, 17378117831030922440ull, 3962394242458586768ull, 2420764210856015331ull}}, {{384299088181848444ull, 3275903215079101435ull, 341306784645845557ull, 3025955263570019164ull}}, {{14315431915509474267ull, 8706565037276264697ull, 426633480807306946ull, 3782444079462523955ull}}, {{2029615919552339561ull, 10053289166725053340ull, 16407546990000424505ull, 2364027549664077471ull}}, {{2537019899440424451ull, 17178297476833704579ull, 15897747719073142727ull, 2955034437080096839ull}}, {{17006332929582694275ull, 16861185827614742819ull, 15260498630414040505ull, 3693793046350121049ull}}, {{8323115071775489970ull, 3620712114618132406ull, 2620282616367693460ull, 2308620653968825656ull}}, {{1180521802864586655ull, 4525890143272665508ull, 3275353270459616825ull, 2885775817461032070ull}}, {{1475652253580733318ull, 10269048697518219789ull, 13317563624929296839ull, 3607219771826290087ull}}, {{6456251335403304552ull, 8224624853470386832ull, 12035268512734233145ull, 4509024714782862609ull}}, {{4035157084627065345ull, 16669605579487461530ull, 604513792817813859ull, 2818140446739289131ull}}, {{14267318392638607489ull, 16225320955931939008ull, 14590700296304431036ull, 3522675558424111413ull}}, {{17834147990798259361ull, 1834907121205372144ull, 4403317315098375084ull, 4403344448030139267ull}}, {{11146342494248912101ull, 10370188987608133398ull, 446230312722790475ull, 2752090280018837042ull}}, {{4709556080956364318ull, 8351050216082778844ull, 9781159927758263902ull, 3440112850023546302ull}}, {{5886945101195455398ull, 1215440733248697747ull, 3003077872843054070ull, 4300141062529432878ull}}, {{1373497679033465672ull, 14594708513562599804ull, 15711981725809072505ull, 2687588164080895548ull}}, {{1716872098791832089ull, 4408327586671086043ull, 1193233083551789016ull, 3359485205101119436ull}}, {{15981148178771953824ull, 5510409483338857553ull, 1491541354439736270ull, 4199356506376399295ull}}, {{3070688584091389284ull, 17279063982368949683ull, 7849742374165917024ull, 2624597816485249559ull}}, {{17673418785396400317ull, 3152085904251635487ull, 5200491949280008377ull, 3280747270606561949ull}}, {{17480087463318112492ull, 8551793398741932263ull, 11112300955027398375ull, 4100934088258202436ull}}, {{17842583692214902164ull, 12262399901854789520ull, 16168560133746899792ull, 2563083805161376522ull}}, {{3856485541559076088ull, 15327999877318486901ull, 10987328130328848932ull, 3203854756451720653ull}}, {{9432292945376233014ull, 713255772938557010ull, 18345846181338449070ull, 4004818445564650816ull}}, {{10506869109287533538ull, 14280842913368761843ull, 11466153863336530668ull, 2503011528477906760ull}}, {{8521900368182029019ull, 17851053641710952304ull, 14332692329170663335ull, 3128764410597383450ull}}, {{10652375460227536273ull, 17702131033711302476ull, 8692493374608553361ull, 3910955513246729313ull}}, {{15881106699496985979ull, 4146302868428482191ull, 16962023405198815611ull, 2444347195779205820ull}}, {{15239697355943844570ull, 571192567108214835ull, 2755785182788967898ull, 3055433994724007276ull}}, {{14437935676502417808ull, 9937362745740044352ull, 3444731478486209872ull, 3819292493405009095ull}}, {{9023709797814011130ull, 6210851716087527720ull, 9070486201694963026ull, 2387057808378130684ull}}, {{11279637247267513912ull, 16986936681964185458ull, 11338107752118703782ull, 2983822260472663355ull}}, {{4876174522229616582ull, 12010298815600456015ull, 9560948671720991824ull, 3729777825590829194ull}}, {{9965138104034592220ull, 7506436759750285009ull, 10587278938253007794ull, 2331111140994268246ull}}, {{17068108648470628179ull, 159673912833080453ull, 4010726635961483935ull, 2913888926242835308ull}}, {{7500077755306121512ull, 14034650446323514279ull, 5013408294951854918ull, 3642361157803544135ull}}, {{4763411175705263986ull, 8319941021049617041ull, 1655074350262430744ull, 4552951447254430169ull}}, {{14506347030884259751ull, 5199963138156010650ull, 12563636514982488975ull, 2845594654534018855ull}}, {{8909561751750548881ull, 1888267904267625409ull, 11092859625300723315ull, 3556993318167523569ull}}, {{15748638208115574005ull, 16195392935616695473ull, 31016476343740431ull, 4446241647709404462ull}}, {{2925369852431151897ull, 17039649612401516527ull, 13854443352997001481ull, 2778901029818377788ull}}, {{17491770370821103584ull, 7464503960219731946ull, 17318054191246251852ull, 3473626287272972235ull}}, {{12641340926671603671ull, 9330629950274664933ull, 17035881720630426911ull, 4342032859091215294ull}}, {{10206681088383446247ull, 12749172746562747439ull, 6035740056966628915ull, 2713770536932009559ull}}, {{8146665342051919904ull, 11324779914776046395ull, 2932989052780898240ull, 3392213171165011949ull}}, {{5571645659137511976ull, 14155974893470057994ull, 8277922334403510704ull, 4240266463956264936ull}}, {{8093964555388332889ull, 8847484308418786246ull, 5173701459002194190ull, 2650166539972665585ull}}, {{894083657380640304ull, 1835983348668707000ull, 11078812842180130642ull, 3312708174965831981ull}}, {{1117604571725800379ull, 11518351222690659558ull, 13457997442999590ull, 4140885218707289977ull}}, {{14533560912610788949ull, 2587283495754274319ull, 11537626294470344504ull, 2588053261692056235ull}}, {{13555265122336098282ull, 3234104369692842899ull, 9810346849660542726ull, 3235066577115070294ull}}, {{12332395384492734949ull, 13266002498970829432ull, 3039561525220902599ull, 4043833221393837868ull}}, {{7707747115307959343ull, 15208780589497850251ull, 11123097990117839932ull, 2527395763371148667ull}}, {{5022997875707561275ull, 564231663162761198ull, 9292186469219912012ull, 3159244704213935834ull}}, {{15502119381489227402ull, 705289578953451497ull, 2391861049670114207ull, 3949055880267419793ull}}, {{2771295585789685270ull, 7358335014486989042ull, 13024128202112291139ull, 2468159925167137370ull}}, {{12687491519091882396ull, 4586232749681348398ull, 7056788215785588116ull, 3085199906458921713ull}}, {{6635992362010077186ull, 5732790937101685498ull, 13432671288159373049ull, 3856499883073652141ull}}, {{8759181244683686146ull, 15112209381757023196ull, 10701262564313302107ull, 2410312426921032588ull}}, {{10948976555854607682ull, 14278575708768891091ull, 13376578205391627634ull, 3012890533651290735ull}}, {{9074534676390871698ull, 8624847599106338056ull, 12109036738312146639ull, 3766113167064113419ull}}, {{5671584172744294812ull, 12308058777082543141ull, 5262304952231397697ull, 2353820729415070887ull}}, {{11701166234357756418ull, 1550015416071015214ull, 1966195171861859218ull, 2942275911768838609ull}}, {{5403085756092419715ull, 11160891306943544826ull, 7069429983254711926ull, 3677844889711048261ull}}, {{15977229231970300451ull, 4727742096824655224ull, 13448473497495777812ull, 4597306112138810326ull}}, {{9985768269981437782ull, 12178210847370185323ull, 3793609917507473228ull, 2873316320086756454ull}}, {{7870524319049409324ull, 15222763559212731654ull, 13965384433739117343ull, 3591645400108445567ull}}, {{614783361956985847ull, 14416768430588526664ull, 12845044523746508775ull, 4489556750135556959ull}}, {{384239601223116154ull, 15928009296758911021ull, 14945681854982649840ull, 2805972968834723099ull}}, {{5091985519956283097ull, 1463267547239087160ull, 14070416300300924397ull, 3507466211043403874ull}}, {{6364981899945353871ull, 6440770452476246854ull, 8364648338521379688ull, 4384332763804254843ull}}, {{17813171742748009882ull, 4025481532797654283ull, 2922062202362168353ull, 2740207977377659277ull}}, {{17654778660007624448ull, 9643537934424455758ull, 8264263771380098345ull, 3425259971722074096ull}}, {{12845101288154754752ull, 16666108436457957602ull, 10330329714225122931ull, 4281574964652592620ull}}, {{12639874323524109624ull, 8110474763572529549ull, 15679828108245477640ull, 2675984352907870387ull}}, {{1964784849122973318ull, 10138093454465661937ull, 14988099116879459146ull, 3344980441134837984ull}}, {{7067667079831104551ull, 3449244781227301613ull, 288379822389772317ull, 4181225551418547481ull}}, {{6723134934108134297ull, 4461620997480757460ull, 11709452435062077458ull, 2613265969636592175ull}}, {{8403918667635167871ull, 14800398283705722633ull, 10025129525400208918ull, 3266582462045740219ull}}, {{15116584352971347742ull, 9277125817777377483ull, 7919725888322873244ull, 4083228077557175274ull}}, {{7142022211393398387ull, 15021575672965636735ull, 9561514698629183681ull, 2552017548473234546ull}}, {{4315841745814360080ull, 4941911535924882207ull, 2728521336431703794ull, 3190021935591543183ull}}, {{783116163840562195ull, 15400761456760878567ull, 17245709725821793454ull, 3987527419489428978ull}}, {{7406976630041433228ull, 5013789892048161200ull, 15390254597066008813ull, 2492204637180893111ull}}, {{9258720787551791535ull, 10878923383487589404ull, 14626132227905123112ull, 3115255796476116389ull}}, {{11573400984439739419ull, 13598654229359486755ull, 4447607229599240178ull, 3894069745595145487ull}}, {{4927532606061143185ull, 13110844911777067126ull, 9697283546140606967ull, 2433793590996965929ull}}, {{15382787794431204789ull, 11776870121293946003ull, 16733290451103146613ull, 3042241988746207411ull}}, {{14616798724611618082ull, 886029596335268792ull, 16304927045451545363ull, 3802802485932759264ull}}, {{9135499202882261302ull, 16694669562205400659ull, 10190579403407215851ull, 2376751553707974540ull}}, {{6807687985175438723ull, 16256650934329362920ull, 12738224254259019814ull, 2970939442134968175ull}}, {{8509609981469298404ull, 11097441631056927842ull, 11311094299396386864ull, 3713674302668710219ull}}, {{9930192256845699406ull, 6935901019410579901ull, 4763590927909047838ull, 2321046439167943887ull}}, {{17024426339484512162ull, 17893248311118000684ull, 1342802641458921893ull, 2901308048959929859ull}}, {{2833788850646088586ull, 8531502333615337144ull, 15513561357105816079ull, 3626635061199912323ull}}, {{3542236063307610733ull, 6052691898591783526ull, 14780265677954882195ull, 4533293826499890404ull}}, {{16048955594849420420ull, 1477089427406170751ull, 14294011867025564ull, 2833308641562431503ull}}, {{15449508475134387621ull, 1846361784257713439ull, 13852925570115945667ull, 3541635801953039378ull}}, {{14700199575490596622ull, 16143010285604305511ull, 8092784925790156275ull, 4427044752441299223ull}}, {{16105153762322704745ull, 7783538419288996992ull, 11975519606259929528ull, 2766902970275812014ull}}, {{1684698129193829315ull, 9729423024111246241ull, 5746027470970136102ull, 3458628712844765018ull}}, {{6717558679919674548ull, 2938406743284281993ull, 16405906375567445936ull, 4323285891055956272ull}}, {{15727689221018266353ull, 1836504214552676245ull, 10253691484729653710ull, 2702053681909972670ull}}, {{5824553470990669229ull, 11519002305045621115ull, 3593742319057291329ull, 3377567102387465838ull}}, {{2669005820310948632ull, 563694826024862682ull, 13715549935676389970ull, 4221958877984332297ull}}, {{6279814656121730799ull, 4963995284692927080ull, 1654689682156661875ull, 2638724298740207686ull}}, {{7849768320152163499ull, 1593308087438770946ull, 11291734139550603152ull, 3298405373425259607ull}}, {{588838363335428565ull, 1991635109298463683ull, 9502981656010866036ull, 4123006716781574509ull}}, {{16508925041580500517ull, 10468143980166315609ull, 8245206544220485224ull, 2576879197988484068ull}}, {{6801098246693461935ull, 13085179975207894512ull, 10306508180275606530ull, 3221098997485605085ull}}, {{8501372808366827418ull, 7133102932155092332ull, 17494821243771896067ull, 4026373746857006356ull}}, {{14536730042084042945ull, 2152346323383238755ull, 1710891240502659234ull, 2516483591785628973ull}}, {{13559226534177665777ull, 11913804941083824252ull, 6750300069055711946ull, 3145604489732036216ull}}, {{16949033167722082221ull, 5668884139500004507ull, 8437875086319639933ull, 3932005612165045270ull}}, {{8287302720612607436ull, 5848895596401196769ull, 661985910522387054ull, 2457503507603153294ull}}, {{14970814419193147199ull, 16534491532356271769ull, 10050854425007759625ull, 3071879384503941617ull}}, {{4878459968709270287ull, 6833056360163176000ull, 17175254049687087436ull, 3839849230629927021ull}}, {{3049037480443293929ull, 13494032261956760808ull, 13040376790268123599ull, 2399905769143704388ull}}, {{3811296850554117411ull, 12255854309018563106ull, 16300470987835154499ull, 2999882211429630485ull}}, {{13987493100047422572ull, 10708131867845815978ull, 6540530679511779412ull, 3749852764287038107ull}}, {{13353869205957027012ull, 15915954454258410794ull, 1781988665481168180ull, 2343657977679398817ull}}, {{7468964470591507957ull, 1448198994113461877ull, 6839171850278848130ull, 2929572472099248521ull}}, {{13947891606666772850ull, 11033620779496603154ull, 13160650831275948066ull, 3661965590124060651ull}}, {{8211492471478690254ull, 4568653937515978135ull, 11839127520667547179ull, 4577456987655075814ull}}, {{12049711822315263265ull, 549565701733792382ull, 2787768681989829083ull, 2860910617284422384ull}}, {{5838767741039303273ull, 14522015182449404190ull, 3484710852487286353ull, 3576138271605527980ull}}, {{16521831713153904899ull, 4317460922779591525ull, 4355888565609107942ull, 4470172839506909975ull}}, {{12631987829934884514ull, 16533471132019408415ull, 9639959381146774319ull, 2793858024691818734ull}}, {{11178298768991217739ull, 16055152896596872615ull, 2826577189578692091ull, 3492322530864773418ull}}, {{9361187442811634269ull, 15457255102318702865ull, 12756593523828140922ull, 4365403163580966772ull}}, {{17379957197825741178ull, 14272470457376577194ull, 17196242989247363884ull, 2728376977238104232ull}}, {{12501574460427400665ull, 17840588071720721493ull, 3048559662849653239ull, 3410471221547630291ull}}, {{1791910020252087119ull, 17689049071223513963ull, 17645757633844230261ull, 4263089026934537863ull}}, {{17260844827153412114ull, 13361498678728390178ull, 17946127548793725769ull, 2664430641834086164ull}}, {{12352683997086989334ull, 2866815293128324011ull, 3985915362282605596ull, 3330538302292607706ull}}, {{10829168977931348763ull, 3583519116410405014ull, 14205766239708032803ull, 4163172877865759632ull}}, {{2156544592779705073ull, 18380600512252360798ull, 8878603899817520501ull, 2601983048666099770ull}}, {{11919052777829407149ull, 9140692585033287285ull, 1874882837917124819ull, 3252478810832624713ull}}, {{1063757917004595224ull, 6814179712864221203ull, 6955289565823793928ull, 4065598513540780891ull}}, {{16805749762623729679ull, 4258862320540138251ull, 2041212969426177253ull, 2540999070962988057ull}}, {{16395501184852274195ull, 9935263919102560718ull, 7163202230210109470ull, 3176248838703735071ull}}, {{11271004444210566936ull, 3195707862023425090ull, 4342316769335248934ull, 3970311048379668839ull}}, {{11656063796058992239ull, 15832375469046804393ull, 9631477008475612439ull, 2481444405237293024ull}}, {{735021689791576587ull, 15178783317881117588ull, 12039346260594515549ull, 3101805506546616280ull}}, {{918777112239470733ull, 5138421092069233273ull, 15049182825743144437ull, 3877256883183270350ull}}, {{12103450741218138969ull, 5517356191756964747ull, 4794053247662077369ull, 2423285551989543969ull}}, {{10517627408095285807ull, 11508381258123593838ull, 10604252578004984615ull, 3029106939986929961ull}}, {{3923662223264331450ull, 9773790554227104394ull, 17867001740933618673ull, 3786383674983662451ull}}, {{7063974907967595060ull, 17637834142460410006ull, 8861033078869817718ull, 2366489796864789032ull}}, {{18053340671814269633ull, 12823920641220736699ull, 11076291348587272148ull, 2958112246080986290ull}}, {{17954989821340449138ull, 16029900801525920874ull, 4621992148879314377ull, 3697640307601232863ull}}, {{15833554656765168615ull, 3101158973312618690ull, 9806274120690653342ull, 2311025192250770539ull}}, {{10568571284101684961ull, 13099820753495549171ull, 7646156632435928773ull, 2888781490313463174ull}}, {{8599028086699718297ull, 2539717886587272752ull, 334323753690135159ull, 3610976862891828968ull}}, {{10748785108374647871ull, 17009705413516254652ull, 417904692112668948ull, 4513721078614786210ull}}, {{15941362729588930728ull, 1407693846592883349ull, 4872876450997805997ull, 2821075674134241381ull}}, {{6091645356703999697ull, 6371303326668492091ull, 10702781582174645400ull, 3526344592667801726ull}}, {{3002870677452611718ull, 7964129158335615114ull, 4155104940863530942ull, 4407930740834752158ull}}, {{6488480191835270228ull, 365894705532371542ull, 16431998643321870551ull, 2754956713021720098ull}}, {{17333972276648863593ull, 14292426437197628139ull, 11316626267297562380ull, 3443695891277150123ull}}, {{17055779327383691587ull, 17865533046497035174ull, 9534096815694565071ull, 4304619864096437654ull}}, {{6048176061187419338ull, 18083487181701728840ull, 1347124491381715265ull, 2690387415060273534ull}}, {{7560220076484274172ull, 8769300921844997338ull, 10907277651081919890ull, 3362984268825341917ull}}, {{226903058750566907ull, 1738254115451470865ull, 18245783082279787767ull, 4203730336031677396ull}}, {{11671029457787574077ull, 8003937849798251146ull, 2180242389570091546ull, 2627331460019798373ull}}, {{5365414785379691788ull, 781550275393038125ull, 7336989005390002337ull, 3284164325024747966ull}}, {{11318454500152002639ull, 5588623862668685560ull, 18394608293592278729ull, 4105205406280934957ull}}, {{7074034062595001650ull, 15022104960236398235ull, 13802473192708868157ull, 2565753378925584348ull}}, {{4230856559816364158ull, 4942573145013334082ull, 17253091490886085197ull, 3207191723656980435ull}}, {{14511942736625231005ull, 10789902449694055506ull, 16954678345180218592ull, 4008989654571225544ull}}, {{13681650228818157283ull, 6743689031058784691ull, 10596673965737636620ull, 2505618534107015965ull}}, {{12490376767595308699ull, 8429611288823480864ull, 17857528475599433679ull, 3132023167633769956ull}}, {{15612970959494135874ull, 5925328092601963176ull, 3875166520789740483ull, 3915028959542212446ull}}, {{9758106849683834921ull, 1397487048662533033ull, 16257037130775751514ull, 2446893099713882778ull}}, {{16809319580532181555ull, 10970230847682942099ull, 11097924376614913584ull, 3058616374642353473ull}}, {{16399963457237839040ull, 13712788559603677624ull, 37347415486478268ull, 3823270468302941842ull}}, {{10249977160773649400ull, 17793864886607074323ull, 4635028153106436821ull, 2389544042689338651ull}}, {{8200785432539673846ull, 8407273052976679192ull, 1182099172955658123ull, 2986930053361673314ull}}, {{10250981790674592308ull, 5897405297793461086ull, 10700996003049348462ull, 3733662566702091642ull}}, {{1795177600744232288ull, 17520936366403076891ull, 11299808520333230692ull, 2333539104188807276ull}}, {{16079030056212454072ull, 3454426384294294497ull, 14124760650416538366ull, 2916923880236009095ull}}, {{6263729514983403878ull, 13541405017222643930ull, 13044264794593285053ull, 3646154850295011369ull}}, {{17053033930584030656ull, 3091698216246141200ull, 2470272937959442605ull, 4557693562868764212ull}}, {{10658146206615019160ull, 4238154394367532202ull, 10767292623079427436ull, 2848558476792977632ull}}, {{4099310721413998142ull, 5297692992959415253ull, 13459115778849284295ull, 3560698095991222040ull}}, {{9735824420194885581ull, 2010430222771881162ull, 16823894723561605369ull, 4450872619989027550ull}}, {{10696576281049191393ull, 12785733935300895486ull, 5903248183798615451ull, 2781795387493142219ull}}, {{4147348314456713433ull, 11370481400698731454ull, 2767374211320881410ull, 3477244234366427774ull}}, {{14407557429925667599ull, 4989729714018638509ull, 12682589801005877571ull, 4346555292958034717ull}}, {{11310566402917236201ull, 812738062047955116ull, 10232461634842367434ull, 2716597058098771698ull}}, {{14138208003646545252ull, 10239294614414719703ull, 3567205006698183484ull, 3395746322623464623ull}}, {{13061073986130793660ull, 12799118268018399629ull, 18294064313654893067ull, 4244682903279330778ull}}, {{10469014250545439990ull, 5693605908297805816ull, 16045476214461696071ull, 2652926814549581736ull}}, {{13086267813181799987ull, 2505321366944869366ull, 1610101194367568473ull, 3316158518186977171ull}}, {{7134462729622474176ull, 7743337727108474612ull, 15847684548241624303ull, 4145198147733721463ull}}, {{13682411242868822168ull, 11757115107083878488ull, 16822331870292097045ull, 2590748842333575914ull}}, {{17103014053586027710ull, 861335828572684398ull, 11804542801010345499ull, 3238436052916969893ull}}, {{12155395530127758829ull, 14911727840998019210ull, 920620445980768161ull, 4048045066146212367ull}}, {{12208808224757237173ull, 2402300872982680150ull, 7492916806379061957ull, 2530028166341382729ull}}, {{6037638244091770658ull, 7614562109655738092ull, 13977832026401215350ull, 3162535207926728411ull}}, {{7547047805114713322ull, 294830600214896807ull, 12860604014574131284ull, 3953169009908410514ull}}, {{11634433905837777682ull, 9407641161989086312ull, 12649563527536219956ull, 2470730631192756571ull}}, {{14543042382297222103ull, 11759551452486357890ull, 11200268390992887041ull, 3088413288990945714ull}}, {{8955430941016751820ull, 864381260325783651ull, 4776963451886332994ull, 3860516611238682143ull}}, {{3291301328921775936ull, 5151924306131002686ull, 9903131185070039977ull, 2412822882024176339ull}}, {{13337498698006995728ull, 11051591401091141261ull, 7767227962910162067ull, 3016028602530220424ull}}, {{2836815317226580948ull, 9202803232936538673ull, 9709034953637702584ull, 3770035753162775530ull}}, {{13302224619335082852ull, 5751752020585336670ull, 10679832864450952019ull, 2356272345726734706ull}}, {{7404408737314077757ull, 2578004007304282934ull, 4126419043708914216ull, 2945340432158418383ull}}, {{32138884787821389ull, 3222505009130353668ull, 546337786208754866ull, 3681675540198022979ull}}, {{40173605984776736ull, 13251503298267717893ull, 14517980288043107294ull, 4602094425247528723ull}}, {{2330951512954179412ull, 3670503542989935779ull, 6767894670813248107ull, 2876309015779705452ull}}, {{16748747446474887977ull, 18423187484019583435ull, 8459868338516560133ull, 3595386269724631815ull}}, {{16324248289666222067ull, 9193926299742315582ull, 5963149404718312263ull, 4494232837155789769ull}}, {{5590969162614000888ull, 12663732964980029095ull, 15256183424017414924ull, 2808895523222368605ull}}, {{2377025434840113206ull, 15829666206225036369ull, 5235171224739604943ull, 3511119404027960757ull}}, {{7582967811977529411ull, 15175396739353907557ull, 11155650049351894083ull, 4388899255034950946ull}}, {{7045197891699649834ull, 7178779952882498271ull, 11583967299272321706ull, 2743062034396844341ull}}, {{4194811346197174389ull, 18196846977957898647ull, 644901068808238420ull, 3428827542996055427ull}}, {{631828164319080082ull, 4299314648737821693ull, 14641184391292461738ull, 4286034428745069283ull}}, {{2700735611913119003ull, 7298757673888526462ull, 6844897235344094634ull, 2678771517965668302ull}}, {{12599291551746174562ull, 18346819129215433885ull, 17779493581034894100ull, 3348464397457085377ull}}, {{1914056384400554490ull, 4486779837809740741ull, 8389308921011453914ull, 4185580496821356722ull}}, {{3502128249464040509ull, 7415923417058475867ull, 9855004094059546600ull, 2615987810513347951ull}}, {{18212718367112214348ull, 9269904271323094833ull, 7707069099147045346ull, 3269984763141684939ull}}, {{8930839903608104222ull, 2364008302299092734ull, 5022150355506418779ull, 4087480953927106174ull}}, {{970088921327677235ull, 17618406253432790623ull, 16973902027473675448ull, 2554675596204441358ull}}, {{15047669206941760256ull, 3576263743081436662ull, 11994005497487318503ull, 3193344495255551698ull}}, {{9586214471822424512ull, 18305387734133959540ull, 5769134835004372320ull, 3991680619069439623ull}}, {{15214756081743791128ull, 11440867333833724712ull, 10523238299518814556ull, 2494800386918399764ull}}, {{571701028470187294ull, 14301084167292155891ull, 13154047874398518195ull, 3118500483647999705ull}}, {{14549684340869897829ull, 13264669190687806959ull, 2607501787715984032ull, 3898125604559999632ull}}, {{16011081740684767999ull, 8290418244179879349ull, 1629688617322490020ull, 2436328502849999770ull}}, {{6178794120573796287ull, 10363022805224849187ull, 11260482808507888333ull, 3045410628562499712ull}}, {{3111806632289857455ull, 17565464524958449388ull, 14075603510634860416ull, 3806763285703124640ull}}, {{11168251182035936718ull, 10978415328099030867ull, 8797252194146787760ull, 2379227053564452900ull}}, {{9348627959117532993ull, 13723019160123788584ull, 10996565242683484700ull, 2974033816955566125ull}}, {{11685784948896916241ull, 17153773950154735730ull, 18357392571781743779ull, 3717542271194457656ull}}, {{11915301611487960555ull, 8415265709633015879ull, 11473370357363589862ull, 2323463919496536035ull}}, {{10282440995932562789ull, 1295710100186494041ull, 9730026928277099424ull, 2904329899370670044ull}}, {{17464737263343091390ull, 1619637625233117551ull, 12162533660346374280ull, 3630412374213337555ull}}, {{17219235560751476334ull, 2024547031541396939ull, 10591481057005579946ull, 4538015467766671944ull}}, {{8456179216255978757ull, 5877027913140760991ull, 6619675660628487466ull, 2836259667354169965ull}}, {{5958538001892585542ull, 16569656928280727047ull, 12886280594212997236ull, 3545324584192712456ull}}, {{2836486483938344023ull, 2265327086641357193ull, 16107850742766246546ull, 4431655730240890570ull}}, {{13302019098529934775ull, 6027515447578236149ull, 14679092732656291995ull, 2769784831400556606ull}}, {{2792465817880254756ull, 2922708291045407283ull, 9125493878965589186ull, 3462231039250695758ull}}, {{17325640327632482157ull, 12876757400661534911ull, 2183495311852210674ull, 4327788799063369698ull}}, {{17746054232411383205ull, 12659659393840847223ull, 5976370588335019575ull, 2704867999414606061ull}}, {{17570881772086841102ull, 11212888223873671125ull, 12082149253846162373ull, 3381084999268257576ull}}, {{8128544159826387665ull, 181052224559925195ull, 15102686567307702967ull, 4226356249085321970ull}}, {{2774497090677798339ull, 7030686667991035103ull, 14050865122994702258ull, 2641472655678326231ull}}, {{17303179418629411635ull, 18011730371843569686ull, 12951895385315989918ull, 3301840819597907789ull}}, {{12405602236431988736ull, 13291290927949686300ull, 2354811176362823686ull, 4127301024497384737ull}}, {{16976873434624768768ull, 3695370811541166033ull, 13000972031295234564ull, 2579563140310865460ull}}, {{7386033737998797248ull, 4619213514426457542ull, 16251215039119043205ull, 3224453925388581825ull}}, {{9170135643720752ull, 10385702911460459832ull, 6478960743616640294ull, 4030567406735727282ull}}, {{5731334777325470ull, 1879378301235399491ull, 8661036483187788088ull, 2519104629209829551ull}}, {{13842222223753820550ull, 2349222876544249363ull, 6214609585557347206ull, 3148880786512286939ull}}, {{12691091761264887783ull, 12159900632535087512ull, 3156575963519296103ull, 3936100983140358674ull}}, {{7931932350790554864ull, 14517466922975511551ull, 6584545995626947968ull, 2460063114462724171ull}}, {{5303229420060805676ull, 18146833653719389439ull, 3618996476106297056ull, 3075078893078405214ull}}, {{2017350756648619191ull, 4236797993439685183ull, 13747117631987647129ull, 3843848616348006517ull}}, {{8178373250546468851ull, 14177213791968272999ull, 10897791529205973407ull, 2402405385217504073ull}}, {{5611280544755698159ull, 13109831221532953345ull, 18233925429934854663ull, 3003006731521880091ull}}, {{11625786699372010603ull, 11775603008488803777ull, 18180720768991180425ull, 3753758414402350114ull}}, {{348587659466424771ull, 442222852664420505ull, 15974636499046875670ull, 2346099009001468821ull}}, {{5047420592760418868ull, 9776150602685301439ull, 6133237568526430875ull, 2932623761251836027ull}}, {{1697589722523135681ull, 7608502234929238895ull, 3054860942230650690ull, 3665779701564795034ull}}, {{15957045208436083313ull, 287255756806772810ull, 13041948214643089171ull, 4582224626955993792ull}}, {{14584839273699939975ull, 16320435912500090670ull, 8151217634151930731ull, 2863890391847496120ull}}, {{9007677055270149160ull, 15788858872197725434ull, 10189022042689913414ull, 3579862989809370150ull}}, {{2036224282232910642ull, 10512701553392380985ull, 3512905516507615960ull, 4474828737261712688ull}}, {{12801855222464038911ull, 6570438470870238115ull, 2195565947817259975ull, 2796767960788570430ull}}, {{11390633009652660735ull, 3601362070160409740ull, 11967829471626350777ull, 3495959950985713037ull}}, {{14238291262065825919ull, 9113388606127900079ull, 1124728784250774759ull, 4369949938732141297ull}}, {{15816461066432223055ull, 12613396906471019405ull, 12232170536225203984ull, 2731218711707588310ull}}, {{5935518277758115107ull, 15766746133088774257ull, 6066841133426729172ull, 3414023389634485388ull}}, {{12031083865625031788ull, 1261688592651416205ull, 7583551416783411466ull, 4267529237043106735ull}}, {{9825270425229338820ull, 5400241388834523032ull, 11657248663130714022ull, 2667205773151941709ull}}, {{12281588031536673524ull, 15973673772897929598ull, 736502773631228815ull, 3334007216439927137ull}}, {{6128613002566066097ull, 15355406197695024094ull, 5532314485466423923ull, 4167509020549908921ull}}, {{17665441181885955023ull, 7291285864345696106ull, 14986911599484984712ull, 2604693137843693075ull}}, {{12858429440502667971ull, 9114107330432120133ull, 14121953480928842986ull, 3255866422304616344ull}}, {{2237978745346171251ull, 2169262126185374359ull, 17652441851161053733ull, 4069833027880770430ull}}, {{8316265743482438888ull, 3661631838079552926ull, 6421090138548270679ull, 2543645642425481519ull}}, {{1171960142498272802ull, 18412097852881604870ull, 3414676654757950444ull, 3179557053031851899ull}}, {{10688322214977616811ull, 4568378242392454471ull, 18103403873729601768ull, 3974446316289814873ull}}, {{13597730412002092363ull, 2855236401495284044ull, 4397098393439919249ull, 2484028947681134296ull}}, {{16997163015002615453ull, 8180731520296492959ull, 5496372991799899061ull, 3105036184601417870ull}}, {{16634767750325881413ull, 14837600418798004103ull, 16093838276604649634ull, 3881295230751772337ull}}, {{17314258871594757739ull, 13885186280176140468ull, 3141119895236824165ull, 2425809519219857711ull}}, {{3196079515783895558ull, 3521424794938011874ull, 17761457924328193919ull, 3032261899024822138ull}}, {{13218471431584645255ull, 18236839048954678554ull, 12978450368555466590ull, 3790327373781027673ull}}, {{12873230663167791189ull, 6786338387169286192ull, 1194002452706084763ull, 2368954608613142296ull}}, {{16091538328959738986ull, 3871236965534219836ull, 1492503065882605954ull, 2961193260766427870ull}}, {{1667678837490122116ull, 14062418243772550604ull, 11089000869208033250ull, 3701491575958034837ull}}, {{10265671310286102131ull, 13400697420785232031ull, 9236468552468714733ull, 2313432234973771773ull}}, {{8220403119430239759ull, 2915813720699376327ull, 16157271709013281321ull, 2891790293717214716ull}}, {{5663817880860411795ull, 8256453169301608313ull, 1749845562557050035ull, 3614737867146518396ull}}, {{11691458369502902647ull, 5708880443199622487ull, 2187306953196312544ull, 4518422333933147995ull}}, {{14224690508580396011ull, 3568050276999764054ull, 17507967910243553004ull, 2824013958708217496ull}}, {{8557491098870719205ull, 4460062846249705068ull, 3438215814094889639ull, 3530017448385271871ull}}, {{10696863873588399007ull, 963392539384743431ull, 18132827822900775761ull, 4412521810481589838ull}}, {{13603068948633831235ull, 12131335383183934404ull, 6721331370885596946ull, 2757826131550993649ull}}, {{17003836185792289044ull, 5940797192125142197ull, 13013350232034384087ull, 3447282664438742061ull}}, {{7419737176958197593ull, 2814310471729039843ull, 2431629734760816397ull, 4309103330548427577ull}}, {{2331492726385179544ull, 4064787054044343854ull, 13048983630293980008ull, 2693189581592767235ull}}, {{12137737944836250237ull, 5080983817555429817ull, 11699543519440087106ull, 3366486976990959044ull}}, {{1337114375763149085ull, 15574601808799063080ull, 14624429399300108882ull, 4208108721238698805ull}}, {{835696484851968178ull, 14345812148926802329ull, 11446111383776262003ull, 2630067950774186753ull}}, {{5656306624492348127ull, 13320579167731115007ull, 472581174438163792ull, 3287584938467733442ull}}, {{2458697262188047254ull, 16650723959663893759ull, 9814098504902480548ull, 4109481173084666802ull}}, {{8454214816508611390ull, 1183330437935157791ull, 10745497583991438247ull, 2568425733177916751ull}}, {{5956082502208376333ull, 15314221102701110951ull, 8820185961561909904ull, 3210532166472395939ull}}, {{2833417109333082513ull, 696032304666837073ull, 6413546433524999477ull, 4013165208090494924ull}}, {{13300100739401646331ull, 2740863199630467122ull, 13231838557807900481ull, 2508228255056559327ull}}, {{7401753887397282105ull, 8037765017965471807ull, 11928112178832487697ull, 3135285318820699159ull}}, {{4640506340819214727ull, 14658892290884227663ull, 10298454205113221717ull, 3919106648525873949ull}}, {{9817845490653091061ull, 11467650691016336241ull, 8742376887409457525ull, 2449441655328671218ull}}, {{16883992881743751730ull, 499505308488256589ull, 1704599072407046099ull, 3061802069160839023ull}}, {{7269933046897525950ull, 14459439690892484449ull, 15965806895790971335ull, 3827252586451048778ull}}, {{16072923200379423479ull, 15954678834448884636ull, 14590315328296744988ull, 2392032866531905486ull}}, {{1644409926764727733ull, 1496604469351554180ull, 9014522123516155428ull, 2990041083164881858ull}}, {{2055512408455909666ull, 1870755586689442725ull, 2044780617540418477ull, 3737551353956102323ull}}, {{3590538264498637493ull, 3475065250894595655ull, 17418888950458619212ull, 2335969596222563951ull}}, {{18323230885905460578ull, 4343831563618244568ull, 17161925169645886111ull, 2919961995278204939ull}}, {{4457294533672274107ull, 818103436095417807ull, 16840720443629969735ull, 3649952494097756174ull}}, {{959932148662954729ull, 14857687350401435971ull, 11827528517682686360ull, 4562440617622195218ull}}, {{16740858657410204370ull, 9286054594000897481ull, 12003891341979066879ull, 2851525386013872011ull}}, {{7091015266480591750ull, 6995882224073733948ull, 10393178159046445695ull, 3564406732517340014ull}}, {{8863769083100739688ull, 4133166761664779531ull, 3768100661953281311ull, 4455508415646675018ull}}, {{3234012667724268353ull, 9500758253681569063ull, 6966748932148188723ull, 2784692759779171886ull}}, {{17877573889937499153ull, 7264261798674573424ull, 17931808202040011712ull, 3480865949723964857ull}}, {{3900223288712322326ull, 9080327248343216781ull, 8579702197267850928ull, 4351082437154956072ull}}, {{4743482564658895406ull, 5675204530214510488ull, 5362313873292406830ull, 2719426523221847545ull}}, {{5929353205823619257ull, 16317377699622913918ull, 11314578360042896441ull, 3399283154027309431ull}}, {{16635063544134299879ull, 6561664069246478685ull, 9531536931626232648ull, 4249103942534136789ull}}, {{12702757724297631377ull, 4101040043279049178ull, 8263053591480089357ull, 2655689964083835493ull}}, {{6655075118517263413ull, 9737986072526199377ull, 14940503007777499600ull, 3319612455104794366ull}}, {{12930529916573967170ull, 12172482590657749221ull, 9452256722867098692ull, 4149515568880992958ull}}, {{10387424207072423433ull, 16831173656015869071ull, 1295974433364548778ull, 2593447230550620599ull}}, {{8372594240413141387ull, 11815595033165060531ull, 15455026096987849685ull, 3241809038188275748ull}}, {{5854056782089038830ull, 934435736174161952ull, 872038547525260491ull, 4052261297735344686ull}}, {{3658785488805649269ull, 16724923399604708884ull, 14380082147485451518ull, 2532663311084590428ull}}, {{4573481861007061586ull, 11682782212651110297ull, 17975102684356814398ull, 3165829138855738035ull}}, {{10328538344686214887ull, 5380105728959112063ull, 17857192337018630094ull, 3957286423569672544ull}}, {{13372865493069966160ull, 17197624135881608751ull, 11160745210636643808ull, 2473304014731045340ull}}, {{12104395847910069796ull, 3050286096142459323ull, 13950931513295804761ull, 3091630018413806675ull}}, {{10518808791460199341ull, 8424543638605462058ull, 12826978373192368047ull, 3864537523017258344ull}}, {{11185941513090012492ull, 12182868801769495642ull, 8016861483245230029ull, 2415335951885786465ull}}, {{4759054854507739807ull, 1393527946929705841ull, 14632762872483925441ull, 3019169939857233081ull}}, {{10560504586562062663ull, 6353595952089520205ull, 4455895535322743089ull, 3773962424821541352ull}}, {{8906158375814983117ull, 15500212516124419888ull, 2784934709576714430ull, 2358726515513463345ull}}, {{11132697969768728896ull, 10151893608300749052ull, 8092854405398280942ull, 2948408144391829181ull}}, {{13915872462210911119ull, 3466494973521160507ull, 14727754025175239082ull, 3685510180489786476ull}}, {{12783154559336250995ull, 13556490753756226442ull, 18409692531469048852ull, 4606887725612233095ull}}, {{12601157618012544776ull, 17696178757952417334ull, 18423586859809237388ull, 2879304828507645684ull}}, {{6528074985660905162ull, 3673479373730970052ull, 4582739501051995120ull, 3599131035634557106ull}}, {{8160093732076131452ull, 4591849217163712565ull, 14951796413169769708ull, 4498913794543196382ull}}, {{7405901591761276110ull, 12093277797582096161ull, 4733186739803718163ull, 2811821121589497739ull}}, {{13869063008128983041ull, 10504911228550232297ull, 1304797406327259800ull, 3514776401986872174ull}}, {{3501270704879065090ull, 13131139035687790372ull, 10854368794763850558ull, 4393470502483590217ull}}, {{11411666227404191489ull, 3595275878877481078ull, 18313195542795876359ull, 2745919064052243885ull}}, {{5041210747400463553ull, 18329152903879015060ull, 9056436373212681736ull, 3432398830065304857ull}}, {{6301513434250579442ull, 4464697056139217209ull, 15932231484943240075ull, 4290498537581631071ull}}, {{15467660942475081911ull, 484592650873316803ull, 16875173705730606903ull, 2681561585988519419ull}}, {{14722890159666464485ull, 14440798868873809716ull, 16482281113735870724ull, 3351951982485649274ull}}, {{18403612699583080606ull, 18050998586092262145ull, 11379479355315062597ull, 4189939978107061593ull}}, {{4584728909598343523ull, 13587717125521357793ull, 194645569430832267ull, 2618712486316913496ull}}, {{10342597155425317307ull, 12372960388474309337ull, 243306961788540334ull, 3273390607896141870ull}}, {{17539932462709034538ull, 6242828448738110863ull, 9527505739090451226ull, 4091738259870177337ull}}, {{17879986816834228443ull, 8513453798888707193ull, 17483906133000001776ull, 2557336412418860835ull}}, {{8514925465760621841ull, 10641817248610883992ull, 17243196647822614316ull, 3196670515523576044ull}}, {{10643656832200777301ull, 13302271560763604990ull, 3107251736068716279ull, 3995838144404470056ull}}, {{2040599501698097909ull, 15231448753118334975ull, 1942032335042947674ull, 2497398840252793785ull}}, {{16385807432404786099ull, 9815938904543142910ull, 7039226437231072497ull, 3121748550315992231ull}}, {{11258887253651206815ull, 16881609649106316542ull, 4187347028111452717ull, 3902185687894990289ull}}, {{2425118515104616356ull, 12856849039905141791ull, 14146306938638127708ull, 2438866054934368930ull}}, {{16866456199162934157ull, 16071061299881427238ull, 8459511636442883827ull, 3048582568667961163ull}}, {{11859698212098891888ull, 15477140606424396144ull, 5962703527126216880ull, 3810728210834951454ull}}, {{7412311382561807430ull, 9673212879015247590ull, 17561747759736049262ull, 2381705131771844658ull}}, {{42017191347483479ull, 2868144061914283680ull, 12728812662815285770ull, 2977131414714805823ull}}, {{52521489184354349ull, 12808552114247630408ull, 11299329810091719308ull, 3721414268393507279ull}}, {{32825930740221468ull, 17228717108259544813ull, 13979610158948406423ull, 2325883917745942049ull}}, {{4652718431852664739ull, 16924210366897043112ull, 3639454643403344317ull, 2907354897182427562ull}}, {{5815898039815830924ull, 7320204903339140178ull, 13772690341108956205ull, 3634193621478034452ull}}, {{16493244586624564463ull, 13761942147601313126ull, 17215862926386195256ull, 4542742026847543065ull}}, {{5696591848212964885ull, 8601213842250820704ull, 3842385301350290179ull, 2839213766779714416ull}}, {{7120739810266206107ull, 6139831284386137976ull, 4802981626687862724ull, 3549017208474643020ull}}, {{8900924762832757633ull, 7674789105482672470ull, 6003727033359828405ull, 4436271510593303775ull}}, {{951391958343085617ull, 7102586200140364246ull, 10669858423490974609ull, 2772669694120814859ull}}, {{10412611984783632829ull, 13489918768602843211ull, 8725637010936330357ull, 3465837117651018574ull}}, {{8404078962552153132ull, 3027340405471390302ull, 1683674226815637139ull, 4332296397063773218ull}}, {{640863333167707804ull, 18032988817915476603ull, 5663982410187161115ull, 2707685248164858261ull}}, {{14636137221741798467ull, 17929550003966957849ull, 11691664031161339298ull, 3384606560206072826ull}}, {{4460113471895084371ull, 13188565468103921504ull, 5391208002096898315ull, 4230758200257591033ull}}, {{2787570919934427732ull, 5937010408351256988ull, 14898720047379031207ull, 2644223875160994395ull}}, {{3484463649918034665ull, 2809576992011683331ull, 14011714040796401105ull, 3305279843951242994ull}}, {{18190637617679707043ull, 8123657258441992067ull, 8291270514140725573ull, 4131599804939053743ull}}, {{9063305501836122950ull, 7383128795739938994ull, 12099573098979035339ull, 2582249878086908589ull}}, {{2105759840440377880ull, 4617224976247535839ull, 1289408318441630462ull, 3227812347608635737ull}}, {{16467257855832636061ull, 14994903257164195606ull, 6223446416479425981ull, 4034765434510794671ull}}, {{5680350141468009635ull, 11677657544941316206ull, 10807183037940723094ull, 2521728396569246669ull}}, {{16323809713689787851ull, 5373699894321869449ull, 18120664815853291772ull, 3152160495711558336ull}}, {{6569704086830071102ull, 6717124867902336812ull, 4204086946107063099ull, 3940200619639447921ull}}, {{13329437091123570247ull, 1892360033225266555ull, 14156769387385384197ull, 2462625387274654950ull}}, {{12050110345477074904ull, 6977136059958971098ull, 8472589697376954438ull, 3078281734093318688ull}}, {{5839265894991567822ull, 17944792111803489681ull, 10590737121721193047ull, 3847852167616648360ull}}, {{15178756230438199649ull, 18133024097518262906ull, 6619210701075745654ull, 2404907604760405225ull}}, {{9750073251192973753ull, 13442908085043052825ull, 12885699394772069972ull, 3006134505950506531ull}}, {{16799277582418605095ull, 16803635106303816031ull, 11495438225037699561ull, 3757668132438133164ull}}, {{17417077516652710041ull, 3584742913798803163ull, 16408020927503338034ull, 2348542582773833227ull}}, {{17159660877388499647ull, 13704300679103279762ull, 15898340140951784638ull, 2935678228467291534ull}}, {{12226204059880848751ull, 7907003812024323895ull, 10649553139334954990ull, 3669597785584114418ull}}, {{10671069056423673034ull, 660382728175629061ull, 4088569387313917930ull, 4586997231980143023ull}}, {{8975261169478489598ull, 5024425223537156067ull, 9472884894712280562ull, 2866873269987589389ull}}, {{6607390443420724094ull, 15503903566276220892ull, 16452792136817738606ull, 3583591587484486736ull}}, {{8259238054275905117ull, 10156507420990500307ull, 2119246097312621642ull, 4479489484355608421ull}}, {{2856180774708746746ull, 10959503156546450596ull, 3630371820034082478ull, 2799680927722255263ull}}, {{3570225968385933433ull, 4476006908828287437ull, 18373022830324766810ull, 3499601159652819078ull}}, {{9074468478909804695ull, 14818380672890135104ull, 13742906501051182704ull, 4374501449566023848ull}}, {{5671542799318627935ull, 9261487920556334440ull, 8589316563156989190ull, 2734063405978764905ull}}, {{7089428499148284918ull, 2353487863840642242ull, 15348331722373624392ull, 3417579257473456131ull}}, {{18085157660790131956ull, 2941859829800802802ull, 14573728634539642586ull, 4271974071841820164ull}}, {{15914909556421220376ull, 6450348412052889655ull, 18331952433442052424ull, 2669983794901137602ull}}, {{15281950927099137566ull, 8062935515066112069ull, 13691568504947789722ull, 3337479743626422003ull}}, {{5267380603591758246ull, 855297356977864279ull, 12502774612757349249ull, 4171849679533027504ull}}, {{10209641904885930760ull, 12063775894179634934ull, 7814234132973343280ull, 2607406049708142190ull}}, {{3538680344252637642ull, 15079719867724543668ull, 544420629361903292ull, 3259257562135177738ull}}, {{4423350430315797052ull, 402905760946127969ull, 9903897823557154924ull, 4074071952668972172ull}}, {{14293809065015842918ull, 9475188137446105788ull, 15413308176577997635ull, 2546294970418107607ull}}, {{17867261331269803647ull, 7232299153380244331ull, 14654949202295109140ull, 3182868713022634509ull}}, {{17722390645659866655ull, 9040373941725305414ull, 4483628447586722713ull, 3978585891278293137ull}}, {{6464808135110028755ull, 17179448759646785644ull, 14331482825810171455ull, 2486616182048933210ull}}, {{8081010168887535944ull, 16862624931131094151ull, 8690981495407938511ull, 3108270227561166513ull}}, {{5489576692682032026ull, 16466595145486479785ull, 15475412887687311043ull, 3885337784451458141ull}}, {{14960200478994739776ull, 7985778956715355913ull, 11977976064018263354ull, 2428336115282161338ull}}, {{4865192543461261008ull, 758851659039419084ull, 5749098043168053385ull, 3035420144102701673ull}}, {{6081490679326576260ull, 5560250592226661759ull, 11798058572387454635ull, 3794275180128377091ull}}, {{10718460702220192019ull, 1169313610927969647ull, 5067943598528465195ull, 2371421987580235682ull}}, {{8786389859347852119ull, 15296700068942125771ull, 15558301535015357301ull, 2964277484475294602ull}}, {{6371301305757427245ull, 5285817030895493502ull, 10224504881914420819ull, 3705346855594118253ull}}, {{17817121371380555740ull, 997792635095989486ull, 8696158560410206964ull, 2315841784746323908ull}}, {{13048029677370918867ull, 1247240793869986858ull, 10870198200512758705ull, 2894802230932904885ull}}, {{7086665059858872776ull, 6170737010764871477ull, 18199433769068336285ull, 3618502788666131106ull}}, {{13470017343250978874ull, 12325107281883477250ull, 13525920174480644548ull, 4523128485832663883ull}}, {{13030446857959249701ull, 16926564088031949089ull, 6147857099836708890ull, 2826955303645414927ull}}, {{2453000517166898414ull, 11934833073185160554ull, 3073135356368498209ull, 3533694129556768659ull}}, {{12289622683313398825ull, 1083483286199286980ull, 17676477250742786474ull, 4417117661945960823ull}}, {{16904386213925650074ull, 5288863072301942266ull, 17965327309355323402ull, 2760698538716225514ull}}, {{11907110730552286784ull, 15834450877232203641ull, 13233287099839378444ull, 3450873173395281893ull}}, {{1048830357908194768ull, 1346319522830702936ull, 2706550819517059344ull, 4313591466744102367ull}}, {{655518973692621730ull, 841449701769189335ull, 8609123289839243946ull, 2695994666715063979ull}}, {{14654456772397940874ull, 10275184164066262476ull, 6149718093871667028ull, 3369993333393829974ull}}, {{18318070965497426093ull, 12843980205082828095ull, 16910519654194359593ull, 4212491666742287467ull}}, {{18366323381076973164ull, 1109958600535685703ull, 8263231774657780794ull, 2632807291713929667ull}}, {{18346218207918828551ull, 10610820287524382937ull, 5717353699894838088ull, 3291009114642412084ull}}, {{9097714704616371977ull, 13263525359405478672ull, 7146692124868547610ull, 4113761393303015105ull}}, {{5686071690385232486ull, 12901389368055812074ull, 15995897624111312016ull, 2571100870814384440ull}}, {{16330961649836316415ull, 16126736710069765092ull, 1548127956429588404ull, 3213876088517980551ull}}, {{1966957988585843903ull, 1711676813877654750ull, 15770218000819149218ull, 4017345110647475688ull}}, {{15064406798148316151ull, 5681484027100922122ull, 9856386250511968261ull, 2510840694154672305ull}}, {{9607136460830619381ull, 11713541052303540557ull, 16932168831567348230ull, 3138550867693340381ull}}, {{16620606594465662130ull, 5418554278524649888ull, 7330152984177021576ull, 3923188584616675477ull}}, {{10387879121541038832ull, 3386596424077906180ull, 6887188624324332437ull, 2451992865385422173ull}}, {{12984848901926298539ull, 8844931548524770629ull, 13220671798832803450ull, 3064991081731777716ull}}, {{2396003072125709462ull, 1832792398801187479ull, 16525839748541004313ull, 3831238852164722145ull}}, {{8415030947719650270ull, 12674710295319211934ull, 3411120815197045839ull, 2394524282602951341ull}}, {{1295416647794787029ull, 11231701850721627014ull, 8875587037423695203ull, 2993155353253689176ull}}, {{10842642846598259595ull, 9427941294974645863ull, 11094483796779619004ull, 3741444191567111470ull}}, {{13694180806764994103ull, 15115835346213929472ull, 2322366354559873973ull, 2338402619729444669ull}}, {{17117726008456242628ull, 5059736127485248128ull, 7514643961627230371ull, 2923003274661805836ull}}, {{2950413436860751669ull, 1712984140929172257ull, 9393304952034037964ull, 3653754093327257295ull}}, {{8299702814503327491ull, 2141230176161465321ull, 7129945171615159551ull, 4567192616659071619ull}}, {{16716529305133049442ull, 8255797887741997681ull, 2150372723045780767ull, 2854495385411919762ull}}, {{7060603576134148090ull, 5708061341250109198ull, 11911337940662001767ull, 3568119231764899702ull}}, {{18049126507022460921ull, 2523390658135248593ull, 5665800388972726401ull, 4460149039706124628ull}}, {{4363175039247956220ull, 13106334207403000131ull, 12764497279962729808ull, 2787593149816327892ull}}, {{842282780632557370ull, 16382917759253750164ull, 15955621599953412260ull, 3484491437270409865ull}}, {{1052853475790696713ull, 2031903125357636089ull, 6109468944659601614ull, 4355614296588012332ull}}, {{12187248468437655206ull, 15104997508630686267ull, 13041790127267026816ull, 2722258935367507707ull}}, {{10622374567119681103ull, 434502812078806218ull, 11690551640656395617ull, 3402823669209384634ull}}, {{4054596172044825571ull, 5154814533525895677ull, 5389817513965718713ull, 4253529586511730793ull}}, {{4839965616741709934ull, 14750974129522154558ull, 14897850992297043955ull, 2658455991569831745ull}}, {{15273329057781913225ull, 13827031643475305293ull, 4787255685089141232ull, 3323069989462289682ull}}, {{5256603266945227819ull, 17283789554344131617ull, 15207441643216202348ull, 4153837486827862102ull}}, {{14814592087909237147ull, 1578996434610306452ull, 4892965008582738564ull, 2596148429267413814ull}}, {{71496036176994818ull, 1973745543262883066ull, 15339578297583199013ull, 3245185536584267267ull}}, {{9312742082076019330ull, 7078867947505991736ull, 14562786853551610862ull, 4056481920730334084ull}}, {{5820463801297512082ull, 18259350522473408547ull, 18325113820324532596ull, 2535301200456458802ull}}, {{2663893733194502198ull, 4377444079382209068ull, 13683020238550889938ull, 3169126500570573503ull}}, {{3329867166493127747ull, 14695177136082537143ull, 12492089279761224518ull, 3961408125713216879ull}}, {{8998696006699286698ull, 4572799691624197810ull, 14725084827491847180ull, 2475880078570760549ull}}, {{2024997971519332565ull, 5715999614530247263ull, 4571297979082645263ull, 3094850098213450687ull}}, {{16366305519681329418ull, 2533313499735421174ull, 1102436455425918675ull, 3868562622766813359ull}}, {{5617254931373442982ull, 17724222001830495898ull, 7606551812282281027ull, 2417851639229258349ull}}, {{16244940701071579536ull, 17543591483860731968ull, 14119875783780239188ull, 3022314549036572936ull}}, {{1859431802629922803ull, 3482745281116363345ull, 17649844729725298986ull, 3777893186295716170ull}}, {{12691359922712171512ull, 6788401819125114994ull, 15642838974505699770ull, 2361183241434822606ull}}, {{6640827866535438582ull, 17708874310761169551ull, 10330176681277348904ull, 2951479051793528258ull}}, {{3689348814741910324ull, 3689348814741910323ull, 3689348814741910323ull, 3689348814741910323ull}}, {{0ull, 0ull, 0ull, 4611686018427387904ull}}, {{0ull, 0ull, 0ull, 2882303761517117440ull}}, {{0ull, 0ull, 0ull, 3602879701896396800ull}}, {{0ull, 0ull, 0ull, 4503599627370496000ull}}, {{0ull, 0ull, 0ull, 2814749767106560000ull}}, {{0ull, 0ull, 0ull, 3518437208883200000ull}}, {{0ull, 0ull, 0ull, 4398046511104000000ull}}, {{0ull, 0ull, 0ull, 2748779069440000000ull}}, {{0ull, 0ull, 0ull, 3435973836800000000ull}}, {{0ull, 0ull, 0ull, 4294967296000000000ull}}, {{0ull, 0ull, 0ull, 2684354560000000000ull}}, {{0ull, 0ull, 0ull, 3355443200000000000ull}}, {{0ull, 0ull, 0ull, 4194304000000000000ull}}, {{0ull, 0ull, 0ull, 2621440000000000000ull}}, {{0ull, 0ull, 0ull, 3276800000000000000ull}}, {{0ull, 0ull, 0ull, 4096000000000000000ull}}, {{0ull, 0ull, 0ull, 2560000000000000000ull}}, {{0ull, 0ull, 0ull, 3200000000000000000ull}}, {{0ull, 0ull, 0ull, 4000000000000000000ull}}, {{0ull, 0ull, 0ull, 2500000000000000000ull}}, {{0ull, 0ull, 0ull, 3125000000000000000ull}}, {{0ull, 0ull, 0ull, 3906250000000000000ull}}, {{0ull, 0ull, 0ull, 2441406250000000000ull}}, {{0ull, 0ull, 0ull, 3051757812500000000ull}}, {{0ull, 0ull, 0ull, 3814697265625000000ull}}, {{0ull, 0ull, 0ull, 2384185791015625000ull}}, {{0ull, 0ull, 0ull, 2980232238769531250ull}}, {{0ull, 0ull, 9223372036854775808ull, 3725290298461914062ull}}, {{0ull, 0ull, 1152921504606846976ull, 2328306436538696289ull}}, {{0ull, 0ull, 6052837899185946624ull, 2910383045673370361ull}}, {{0ull, 0ull, 12177733392409821184ull, 3637978807091712951ull}}, {{0ull, 0ull, 10610480722084888576ull, 4547473508864641189ull}}, {{0ull, 0ull, 8937393460516749312ull, 2842170943040400743ull}}, {{0ull, 0ull, 6560055807218548736ull, 3552713678800500929ull}}, {{0ull, 0ull, 12811755777450573824ull, 4440892098500626161ull}}, {{0ull, 0ull, 1089818333265526784ull, 2775557561562891351ull}}, {{0ull, 0ull, 15197330971864072192ull, 3469446951953614188ull}}, {{0ull, 0ull, 549919641120538624ull, 4336808689942017736ull}}, {{0ull, 0ull, 343699775700336640ull, 2710505431213761085ull}}, {{0ull, 0ull, 5041310738052808704ull, 3388131789017201356ull}}, {{0ull, 0ull, 6301638422566010880ull, 4235164736271501695ull}}, {{0ull, 0ull, 10856053041744838656ull, 2646977960169688559ull}}, {{0ull, 0ull, 8958380283753660416ull, 3308722450212110699ull}}, {{0ull, 0ull, 6586289336264687616ull, 4135903062765138374ull}}, {{0ull, 0ull, 17951488890447593472ull, 2584939414228211483ull}}, {{0ull, 0ull, 17827675094632103936ull, 3231174267785264354ull}}, {{0ull, 0ull, 13061221831435354112ull, 4038967834731580443ull}}, {{0ull, 0ull, 5857420635433402368ull, 2524354896707237777ull}}, {{0ull, 0ull, 11933461812719140864ull, 3155443620884047221ull}}, {{0ull, 0ull, 1081769210616762368ull, 3944304526105059027ull}}, {{0ull, 0ull, 16817006821131334144ull, 2465190328815661891ull}}, {{0ull, 0ull, 16409572507986779776ull, 3081487911019577364ull}}, {{0ull, 0ull, 2065221561273923104ull, 3851859888774471706ull}}, {{0ull, 0ull, 5902449494223589844ull, 2407412430484044816ull}}, {{0ull, 0ull, 7378061867779487305ull, 3009265538105056020ull}}, {{0ull, 4611686018427387904ull, 9222577334724359131ull, 3761581922631320025ull}}, {{0ull, 576460752303423488ull, 17293325880271194217ull, 2350988701644575015ull}}, {{0ull, 5332261958806667264ull, 17004971331911604867ull, 2938735877055718769ull}}, {{0ull, 2053641430080946176ull, 7421156109607342372ull, 3673419846319648462ull}}, {{0ull, 2567051787601182720ull, 53073100154402157ull, 4591774807899560578ull}}, {{0ull, 3910250376464433152ull, 4644856706023889252ull, 2869859254937225361ull}}, {{0ull, 4887812970580541440ull, 10417756900957249469ull, 3587324068671531701ull}}, {{0ull, 10721452231653064704ull, 17633882144623949740ull, 4484155085839414626ull}}, {{0ull, 15924279681637941248ull, 15632862358817356491ull, 2802596928649634141ull}}, {{0ull, 15293663583620038656ull, 5706019893239531902ull, 3503246160812042677ull}}, {{0ull, 9893707442670272512ull, 11744210884976802782ull, 4379057701015053346ull}}, {{0ull, 1571881133241532416ull, 11951817821537889643ull, 2736911063134408341ull}}, {{0ull, 15799909471834079232ull, 1104714221640198341ull, 3421138828918010427ull}}, {{0ull, 5914828784510435328ull, 15215950832332411639ull, 4276423536147513033ull}}, {{0ull, 10614297017960103936ull, 2592440242566675418ull, 2672764710092195646ull}}, {{0ull, 4044499235595354112ull, 12463922340063120081ull, 3340955887615244557ull}}, {{0ull, 9667310062921580544ull, 1744844869796736389ull, 4176194859519055697ull}}, {{0ull, 8347911798539681792ull, 12619743089691430003ull, 2610121787199409810ull}}, {{0ull, 5823203729747214336ull, 6551306825259511696ull, 3262652233999262263ull}}, {{0ull, 7279004662184017920ull, 3577447513147001716ull, 4078315292499077829ull}}, {{0ull, 13772749950719787008ull, 4541747704930570024ull, 2548947057811923643ull}}, {{0ull, 17215937438399733760ull, 1065498612735824626ull, 3186183822264904554ull}}, {{0ull, 12296549761144891392ull, 10555245302774556591ull, 3982729777831130692ull}}, {{0ull, 14602872628356638976ull, 15820400351088873677ull, 2489206111144456682ull}}, {{0ull, 4418532730163635008ull, 10552128402006316289ull, 3111507638930570853ull}}, {{0ull, 10134851931131931664ull, 17801846520935283265ull, 3889384548663213566ull}}, {{0ull, 17863497503025927050ull, 6514468057157164136ull, 2430865342914508479ull}}, {{9223372036854775808ull, 3882627805072857196ull, 3531399053019067267ull, 3038581678643135599ull}}, {{11529215046068469760ull, 241598737913683591ull, 18249306871555997796ull, 3798227098303919498ull}}, {{14123288431433875456ull, 9374371248050828052ull, 16017502813149886526ull, 2373891936439949686ull}}, {{17654110539292344320ull, 2494592023208759257ull, 10798506479582582350ull, 2967364920549937108ull}}, {{8232580118833266688ull, 12341612065865724880ull, 13498133099478227937ull, 3709206150687421385ull}}, {{5145362574270791680ull, 795978513524996194ull, 1518804159532810605ull, 2318253844179638366ull}}, {{15655075254693265408ull, 5606659160333633146ull, 11121877236270789064ull, 2897817305224547957ull}}, {{10345472031511805952ull, 7008323950417041433ull, 67288490056322618ull, 3622271631530684947ull}}, {{17543526057817145344ull, 17983776974876077599ull, 13919168667852566984ull, 4527839539413356183ull}}, {{17882232813776797696ull, 11239860609297548499ull, 15617009445048936221ull, 2829899712133347614ull}}, {{17741104998793609216ull, 214767706339771912ull, 10297889769456394469ull, 3537374640166684518ull}}, {{3729637174782459904ull, 4880145651352102795ull, 3648990174965717278ull, 4421718300208355648ull}}, {{25180225025343488ull, 16885149087377227959ull, 2280618859353573298ull, 2763573937630222280ull}}, {{13866533336563843072ull, 11883064322366759140ull, 2850773574191966623ull, 3454467422037777850ull}}, {{17333166670704803840ull, 10242144384531061021ull, 12786839004594734087ull, 4318084277547222312ull}}, {{13139072178404196352ull, 13318869267972994994ull, 7991774377871708804ull, 2698802673467013945ull}}, {{7200468186150469632ull, 16648586584966243743ull, 14601403990767023909ull, 3373503341833767431ull}}, {{4388899214260699136ull, 6975675175925640967ull, 13640068970031391983ull, 4216879177292209289ull}}, {{9660591036554018816ull, 11277326012594607460ull, 1607514078628538133ull, 2635549485807630806ull}}, {{12075738795692523520ull, 261599460461095613ull, 11232764635140448475ull, 3294436857259538507ull}}, {{1259615439333490688ull, 14162057380858533229ull, 9429269775498172689ull, 4118046071574423134ull}}, {{3093102658797125632ull, 1933756835395501412ull, 1281607591258970027ull, 2573778794734014459ull}}, {{3866378323496407040ull, 16252254099526540477ull, 15437067544355876245ull, 3217223493417518073ull}}, {{9444658922797896704ull, 6480259569126011884ull, 5461276375162681595ull, 4021529366771897592ull}}, {{15126283863603461248ull, 1744319221490063475ull, 3413297734476675997ull, 2513455854232435995ull}}, {{14296168811076938656ull, 6792085045289967248ull, 18101680223378008708ull, 3141819817790544993ull}}, {{17870211013846173320ull, 8490106306612459060ull, 8792042223940347173ull, 3927274772238181242ull}}, {{1945509846799082517ull, 7612159450846480865ull, 10106712408390104887ull, 2454546732648863276ull}}, {{7043573326926241051ull, 4903513295130713177ull, 12633390510487631109ull, 3068183415811079095ull}}, {{13416152677085189217ull, 10741077637340779375ull, 11180052119682150982ull, 3835229269763848869ull}}, {{15302624450819325117ull, 2101487504910599205ull, 9293375584015038316ull, 2397018293602405543ull}}, {{5293222508241992684ull, 2626859381138249007ull, 7005033461591409991ull, 2996272867003006929ull}}, {{2004842116875102951ull, 17118632281704974971ull, 13367977845416650392ull, 3745341083753758661ull}}, {{17393927387542797009ull, 10699145176065609356ull, 10660829162599100447ull, 2340838177346099163ull}}, {{3295665160718944645ull, 8762245451654623792ull, 8714350434821487655ull, 2926047721682623954ull}}, {{4119581450898680806ull, 6341120796140891836ull, 1669566006672083761ull, 3657559652103279943ull}}, {{5149476813623351007ull, 12538087013603502699ull, 15922015563622268413ull, 4571949565129099928ull}}, {{912579999300900428ull, 10142147392715883139ull, 9951259727263917758ull, 2857468478205687455ull}}, {{14975783054408289246ull, 3454312204040078115ull, 7827388640652509294ull, 3571835597757109319ull}}, {{14108042799582973654ull, 13541262291904873452ull, 5172549782388248713ull, 4464794497196386649ull}}, {{18040898786594134342ull, 1545759904799464051ull, 14762058660061125206ull, 2790496560747741655ull}}, {{17939437464815280023ull, 11155571917854105872ull, 13840887306649018603ull, 3488120700934677069ull}}, {{3977552757309548413ull, 9332778878890244437ull, 3466051078029109542ull, 4360150876168346337ull}}, {{4791813482532161710ull, 1221300780879014869ull, 13695496969836663224ull, 2725094297605216460ull}}, {{10601452871592590042ull, 1526625976098768586ull, 17119371212295829030ull, 3406367872006520575ull}}, {{4028444052635961744ull, 11131654506978236541ull, 16787527996942398383ull, 4257959840008150719ull}}, {{4823620542111170042ull, 13874813094502479694ull, 17409734025730080845ull, 2661224900005094199ull}}, {{15252897714493738360ull, 3508458312845935905ull, 17150481513735213153ull, 3326531125006367749ull}}, {{5231064087835009238ull, 8997258909484807786ull, 7603043836886852729ull, 4158163906257959687ull}}, {{7881101073324268678ull, 17152501864496474626ull, 11669431425695364811ull, 2598852441411224804ull}}, {{628004304800560040ull, 16828941312193205379ull, 14586789282119206014ull, 3248565551764031005ull}}, {{14620063436282863761ull, 11812804603386730915ull, 4398428547366843806ull, 4060706939705038757ull}}, {{6831696638463095899ull, 2771316858689318918ull, 5054860851317971331ull, 2537941837315649223ull}}, {{17762992834933645682ull, 17299204128643812359ull, 1706890045720076259ull, 3172427296644561529ull}}, {{17592055025239669198ull, 17012319142377377545ull, 6745298575577483228ull, 3965534120805701911ull}}, {{4077505363133711393ull, 1409327427131085158ull, 11133340637377008874ull, 2478458825503563694ull}}, {{14320253740771915049ull, 10985031320768632255ull, 4693303759866485284ull, 3098073531879454618ull}}, {{13288631157537505907ull, 13731289150960790319ull, 15090001736687882413ull, 3872591914849318272ull}}, {{15222923501102023048ull, 10887898728564187901ull, 9431251085429926508ull, 2420369946780823920ull}}, {{5193596321095365098ull, 13609873410705234877ull, 11789063856787408135ull, 3025462433476029900ull}}, {{11103681419796594277ull, 12400655744954155692ull, 14736329820984260169ull, 3781828041845037375ull}}, {{16163172924227647231ull, 832880812955265451ull, 16127735165756244462ull, 2363642526153148359ull}}, {{15592280136857171135ull, 10264473053048857622ull, 15547982938767917673ull, 2954553157691435449ull}}, {{10266978134216688110ull, 17442277334738459932ull, 5599920618177733379ull, 3693191447114294312ull}}, {{15640233370740205877ull, 8595580324997843505ull, 3499950386361083362ull, 2308244654446433945ull}}, {{5715233658143093634ull, 1521103369392528574ull, 8986624001378742107ull, 2885305818058042431ull}}, {{16367414109533642851ull, 15736437267022824429ull, 6621593983296039729ull, 3606632272572553039ull}}, {{6624209581634889851ull, 5835488528496366825ull, 3665306460692661758ull, 4508290340715691299ull}}, {{15669346034590275917ull, 17482238385592392977ull, 18431717602428771262ull, 2817681462947307061ull}}, {{5751624487955681184ull, 12629425945135715414ull, 9204588947753800366ull, 3522101828684133827ull}}, {{16412902646799377288ull, 6563410394564868459ull, 6894050166264862554ull, 4402627285855167284ull}}, {{7952221145035916853ull, 8713817515030430691ull, 13532153390770314904ull, 2751642053659479552ull}}, {{5328590412867508163ull, 10892271893788038364ull, 16915191738462893630ull, 3439552567074349440ull}}, {{6660738016084385203ull, 4391967830380272147ull, 2697245599369065422ull, 4299440708842936801ull}}, {{1857118250839046800ull, 16580037949269833804ull, 13214993545674135648ull, 2687150443026835500ull}}, {{2321397813548808500ull, 2278303362877740639ull, 16518741932092669561ull, 3358938053783544375ull}}, {{16736805322218174337ull, 7459565222024563702ull, 16036741396688449047ull, 4198672567229430469ull}}, {{5848817307958971057ull, 11579757291406434170ull, 12328806382143974606ull, 2624170354518394043ull}}, {{16534393671803489629ull, 5251324577403266904ull, 10799321959252580354ull, 3280212943147992554ull}}, {{2221248016044810420ull, 15787527758608859439ull, 4275780412210949634ull, 4100266178934990693ull}}, {{8305809037669088369ull, 14478890867557925053ull, 4978205766845537473ull, 2562666361834369183ull}}, {{14993947315513748365ull, 4263555529165242604ull, 1611071190129533938ull, 3203332952292961479ull}}, {{295690070682633840ull, 14552816448311329064ull, 15848897042944081134ull, 4004166190366201848ull}}, {{184806294176646150ull, 4483824261767192761ull, 9905560651840050709ull, 2502603868978876155ull}}, {{4842693886148195591ull, 10216466345636378855ull, 7770264796372675482ull, 3128254836223595194ull}}, {{1441681339257856585ull, 3547210895190697761ull, 489458958611068545ull, 3910318545279493993ull}}, {{12430265883104630126ull, 13746221855562655860ull, 11835126895200387600ull, 2443949090799683745ull}}, {{15537832353880787657ull, 17182777319453319825ull, 958850563718320788ull, 3054936363499604682ull}}, {{5587232387068820859ull, 3031727575607098166ull, 10421935241502676794ull, 3818670454374505852ull}}, {{17327078297200176749ull, 6506515753181824257ull, 15737081562793948804ull, 2386669033984066157ull}}, {{7823789816218057224ull, 8133144691477280322ull, 5836293898210272293ull, 2983336292480082697ull}}, {{556365233417795722ull, 14778116882773988307ull, 11907053391190228270ull, 3729170365600103371ull}}, {{16488629335381979991ull, 4624637033306354787ull, 5136065360280198717ull, 2330731478500064607ull}}, {{15999100650800087084ull, 10392482310060331388ull, 1808395681922860492ull, 2913414348125080759ull}}, {{1552131739790557239ull, 12990602887575414236ull, 16095552657685739327ull, 3641767935156350948ull}}, {{1940164674738196549ull, 11626567591041879891ull, 1672696748397622543ull, 4552209918945438686ull}}, {{17353503986207230507ull, 14184133772042256787ull, 14880493523030677801ull, 2845131199340899178ull}}, {{17080193964331650230ull, 3895109159770657272ull, 9377244866933571444ull, 3556413999176123973ull}}, {{2903498381705011171ull, 4868886449713321591ull, 16333242102094352209ull, 4445517498970154966ull}}, {{8732215516206713838ull, 14572269077139295754ull, 5596590295381582226ull, 2778448436856346854ull}}, {{1691897358403616490ull, 8991964309569343885ull, 16219109906081753591ull, 3473060546070433567ull}}, {{6726557716431908516ull, 6628269368534291952ull, 15662201364174804085ull, 4341325682588041959ull}}, {{4204098572769942823ull, 6448511364547626422ull, 16706404880250334409ull, 2713328551617526224ull}}, {{14478495252817204336ull, 12672325224111920931ull, 2436262026603366395ull, 3391660689521907781ull}}, {{13486433047594117516ull, 11228720511712513260ull, 7657013551681595898ull, 4239575861902384726ull}}, {{17652392691601099256ull, 11629636338247708691ull, 173947451373609532ull, 2649734913688990454ull}}, {{17453804846073986166ull, 14537045422809635864ull, 9440806351071787723ull, 3312168642111238067ull}}, {{3370511983882931091ull, 13559620760084656927ull, 7189321920412346750ull, 4140210802639047584ull}}, {{9024099017567913788ull, 3863076956625522675ull, 4493326200257716719ull, 2587631751649404740ull}}, {{6668437753532504331ull, 217160177354515440ull, 5616657750322145899ull, 3234539689561755925ull}}, {{8335547191915630413ull, 14106508276975308012ull, 11632508206330070277ull, 4043174611952194906ull}}, {{14433089031802044817ull, 11122410682323261459ull, 11882003647383681827ull, 2526984132470121816ull}}, {{13429675271325168117ull, 9291327334476688920ull, 14852504559229602284ull, 3158730165587652270ull}}, {{16787094089156460146ull, 11614159168095861150ull, 9342258662182227047ull, 3948412706984565338ull}}, {{5880247787295399687ull, 14176378507700995075ull, 10450597682291279808ull, 2467757941865353336ull}}, {{2738623715691861705ull, 17720473134626243844ull, 13063247102864099760ull, 3084697427331691670ull}}, {{3423279644614827131ull, 3703847344573253189ull, 7105686841725348893ull, 3855871784164614588ull}}, {{4445392787097960909ull, 4620747599571977195ull, 13664426312933118866ull, 2409919865102884117ull}}, {{945054965445063232ull, 14999306536319747302ull, 3245474835884234870ull, 3012399831378605147ull}}, {{10404690743661104848ull, 9525761133544908319ull, 17891901600137457300ull, 3765499789223256433ull}}, {{13420460742429272386ull, 15176972745320343507ull, 4264909472444828956ull, 2353437368264535271ull}}, {{12163889909609202579ull, 524471857940877768ull, 719450822128648292ull, 2941796710330669089ull}}, {{15204862387011503223ull, 655589822426097210ull, 5510999546088198269ull, 3677245887913336361ull}}, {{9782705946909603221ull, 5431173296460009417ull, 11500435451037635740ull, 4596557359891670451ull}}, {{17643406262886971773ull, 12617855347142281693ull, 4881929147684828385ull, 2872848349932294032ull}}, {{8219199773326551005ull, 1937261128645688405ull, 6102411434606035482ull, 3591060437415367540ull}}, {{14885685735085576660ull, 11644948447661886314ull, 7628014293257544352ull, 4488825546769209425ull}}, {{13915239602855873316ull, 7278092779788678946ull, 16296723979354434980ull, 2805515966730755890ull}}, {{8170677466715065837ull, 9097615974735848683ull, 11147532937338267917ull, 3506894958413444863ull}}, {{5601660814966444393ull, 15983705986847198758ull, 9322730153245446992ull, 4383618698016806079ull}}, {{17336096064636191458ull, 9989816241779499223ull, 12744235373419486226ull, 2739761686260503799ull}}, {{17058434062367851418ull, 3263898265369598221ull, 11318608198346969879ull, 3424702107825629749ull}}, {{7487984522677650560ull, 17914930886994161489ull, 313202192651548636ull, 4280877634782037187ull}}, {{16209205372742001360ull, 1973459767516575122ull, 16336652434903075562ull, 2675548521738773241ull}}, {{11038134679072725892ull, 11690196746250494711ull, 6585757488346680740ull, 3344435652173466552ull}}, {{9185982330413519461ull, 14612745932813118389ull, 8232196860433350925ull, 4180544565216833190ull}}, {{8047081965722143615ull, 11438809217221892945ull, 533437019343456424ull, 2612840353260520744ull}}, {{14670538475580067423ull, 14298511521527366181ull, 666796274179320530ull, 3266050441575650930ull}}, {{4503115039192920567ull, 8649767365054431919ull, 10056867379578926471ull, 4082563051969563662ull}}, {{9731975927136657210ull, 12323633630800101805ull, 1673856093809441140ull, 2551601907480977289ull}}, {{16776655927348209417ull, 15404542038500127256ull, 6704006135689189329ull, 3189502384351221611ull}}, {{2524075835475710155ull, 5420619492842995359ull, 3768321651184098758ull, 3986877980439027014ull}}, {{8495076424813400703ull, 17222945238309035811ull, 16190259087272225435ull, 2491798737774391883ull}}, {{6007159512589362975ull, 16916995529458906860ull, 15626137840662893890ull, 3114748422217989854ull}}, {{7508949390736703718ull, 11922872374968857767ull, 10309300263973841555ull, 3893435527772487318ull}}, {{11610622396851521680ull, 5145952225141842152ull, 1831626646556263068ull, 2433397204857804574ull}}, {{14513277996064402100ull, 6432440281427302690ull, 11512905345050104643ull, 3041746506072255717ull}}, {{8918225458225726817ull, 3428864333356740459ull, 556073626030467092ull, 3802183132590319647ull}}, {{3268047902177385309ull, 11366412245202738595ull, 7265075043910123788ull, 2376364457868949779ull}}, {{17920117933003895348ull, 14208015306503423243ull, 4469657786460266831ull, 2970455572336187224ull}}, {{17788461397827481281ull, 13148333114701891150ull, 5587072233075333539ull, 3713069465420234030ull}}, {{6506102355214787897ull, 5911865187474988017ull, 17326978200954247174ull, 2320668415887646268ull}}, {{12744313962445872775ull, 16613203521198510829ull, 3211978677483257351ull, 2900835519859557836ull}}, {{2095334397775177256ull, 16154818383070750633ull, 4014973346854071689ull, 3626044399824447295ull}}, {{7230854015646359474ull, 6358464923556274579ull, 407030665140201708ull, 4532555499780559119ull}}, {{2213440750565280719ull, 13197412614077447420ull, 7171923193353707923ull, 2832847187362849449ull}}, {{2766800938206600899ull, 11885079749169421371ull, 13576590010119522808ull, 3541058984203561811ull}}, {{17293559228040414836ull, 14856349686461776713ull, 12359051494222015606ull, 4426323730254452264ull}}, {{3890945489884177417ull, 4673532535611222542ull, 7724407183888759754ull, 2766452331409032665ull}}, {{14087053899209997579ull, 15065287706368803985ull, 14267194998288337596ull, 3458065414261290831ull}}, {{3773759318730333261ull, 384865559251453366ull, 13222307729433034092ull, 4322581767826613539ull}}, {{16193657629488622000ull, 9463913011386934161ull, 5958099321681952355ull, 2701613604891633462ull}}, {{6407013981578613788ull, 7218205245806279798ull, 16670996188957216252ull, 3377017006114541827ull}}, {{17232139513828043043ull, 9022756557257849747ull, 16227059217769132411ull, 4221271257643177284ull}}, {{8464244186928832950ull, 3333379839072462140ull, 918539974250931949ull, 2638294536026985803ull}}, {{10580305233661041188ull, 8778410817267965579ull, 14983233023095828648ull, 3297868170033732253ull}}, {{8613695523648913581ull, 10973013521584956974ull, 4893983223587622098ull, 4122335212542165317ull}}, {{771873683853183084ull, 11469819469417986013ull, 5364582523955957763ull, 2576459507838853323ull}}, {{5576528123243866759ull, 9725588318345094612ull, 2094042136517559300ull, 3220574384798566654ull}}, {{6970660154054833449ull, 12156985397931368265ull, 11840924707501724933ull, 4025717980998208317ull}}, {{15885877642352740666ull, 9903958882920799117ull, 9706420951402272035ull, 2516073738123880198ull}}, {{6022288997658762120ull, 7768262585223610993ull, 2909654152398064236ull, 3145092172654850248ull}}, {{12139547265500840554ull, 9710328231529513741ull, 3637067690497580295ull, 3931365215818562810ull}}, {{9893060050151719298ull, 12986484172347027944ull, 6884853324988375588ull, 2457103259886601756ull}}, {{12366325062689649123ull, 16233105215433784930ull, 8606066656235469485ull, 3071379074858252195ull}}, {{6234534291507285595ull, 6456323464010067451ull, 6145897301866948953ull, 3839223843572815244ull}}, {{1590740922978359545ull, 15564417211074761917ull, 13064557850521618903ull, 2399514902233009527ull}}, {{6600112172150337335ull, 14843835495416064492ull, 11719011294724635725ull, 2999393627791261909ull}}, {{8250140215187921669ull, 4719736313987916903ull, 813706063123630945ull, 3749242034739077387ull}}, {{12073866662133532899ull, 14479050242310917824ull, 16649467353948127004ull, 2343276271711923366ull}}, {{15092333327666916124ull, 18098812802888647280ull, 11588462155580382947ull, 2929095339639904208ull}}, {{418672585874093539ull, 18011829985183421197ull, 14485577694475478684ull, 3661369174549880260ull}}, {{5135026750770004827ull, 4068043407769724880ull, 18106972118094348356ull, 4576711468187350325ull}}, {{3209391719231253017ull, 11765899166710853858ull, 13622700583022661674ull, 2860444667617093953ull}}, {{13235111685893842080ull, 5484001921533791514ull, 3193317673496163381ull, 3575555834521367442ull}}, {{7320517570512526791ull, 11466688420344627297ull, 13215019128724980034ull, 4469444793151709302ull}}, {{16104538527638799005ull, 11778366281142779964ull, 3647700937025724617ull, 2793402995719818314ull}}, {{1683929085838947140ull, 887899796146311244ull, 13782998208136931580ull, 3491753744649772892ull}}, {{2104911357298683925ull, 1109874745182889055ull, 17228747760171164475ull, 4364692180812216115ull}}, {{8233098625952759309ull, 16834572780235163323ull, 8462124340893283844ull, 2727932613007635072ull}}, {{5679687264013561232ull, 2596471901584402538ull, 10577655426116604806ull, 3409915766259543840ull}}, {{16322981116871727348ull, 12468961913835278980ull, 13222069282645756007ull, 4262394707824429800ull}}, {{978491161190053785ull, 14710630223788131219ull, 8263793301653597504ull, 2663996692390268625ull}}, {{15058172006769730943ull, 18388287779735164023ull, 14941427645494384784ull, 3329995865487835781ull}}, {{14211028990034775774ull, 4538615650959403413ull, 4841726501585817269ull, 4162494831859794727ull}}, {{11187736127985428811ull, 5142477791063321085ull, 9943608091132217649ull, 2601559269912371704ull}}, {{149612104699622302ull, 11039783257256539261ull, 12429510113915272061ull, 3251949087390464630ull}}, {{4798701149301915781ull, 18411415089998061980ull, 6313515605539314268ull, 4064936359238080788ull}}, {{12222560255168473171ull, 2283762394394012929ull, 13169319290316847226ull, 2540585224523800492ull}}, {{1443142263678427752ull, 12078075029847291970ull, 16461649112896059032ull, 3175731530654750615ull}}, {{11027299866452810498ull, 15097593787309114962ull, 15965375372692685886ull, 3969664413318438269ull}}, {{11503748434960394466ull, 4824310098640808947ull, 12284202617146622631ull, 2481040258324023918ull}}, {{9767999525273105178ull, 1418701604873623280ull, 6131881234578502481ull, 3101300322905029898ull}}, {{12209999406591381472ull, 6385063024519417004ull, 16888223580077903909ull, 3876625403631287372ull}}, {{16854621665974389228ull, 6296507399538329579ull, 1331767700693914135ull, 2422890877269554608ull}}, {{16456591064040598631ull, 3258948230995524070ull, 1664709625867392669ull, 3028613596586943260ull}}, {{11347366793195972481ull, 8685371307171792992ull, 2080887032334240836ull, 3785766995733679075ull}}, {{7092104245747482801ull, 14651729103837146428ull, 17441455459704758186ull, 2366104372333549421ull}}, {{8865130307184353501ull, 9091289342941657227ull, 7966761269348784021ull, 2957630465416936777ull}}, {{6469726865553053972ull, 15975797697104459438ull, 14570137605113367930ull, 3697038081771170971ull}}, {{17878637346252822445ull, 14596559579117675052ull, 6800492993982161004ull, 2310648801106981857ull}}, {{3901552609106476440ull, 18245699473897093816ull, 13112302260905089159ull, 2888311001383727321ull}}, {{4876940761383095549ull, 18195438323943979366ull, 2555319770849197737ull, 3610388751729659152ull}}, {{15319547988583645245ull, 8909239849647810495ull, 3194149713561497172ull, 4512985939662073940ull}}, {{16492246520505860134ull, 14791646942884657367ull, 11219715607830711540ull, 2820616212288796212ull}}, {{16003622132204937264ull, 42814604896270093ull, 14024644509788389426ull, 3525770265360995265ull}}, {{6169469609974007867ull, 9276890292975113425ull, 3695747581953323070ull, 4407212831701244082ull}}, {{15385133552302224677ull, 1186370414682057986ull, 6921528257148214823ull, 2754508019813277551ull}}, {{10008044903523005038ull, 15318021073634736195ull, 4040224303007880624ull, 3443135024766596939ull}}, {{7898370110976368394ull, 700782268333868628ull, 438594360332462877ull, 4303918780958246174ull}}, {{14159853356215006054ull, 2743831926922361844ull, 14109179530489953010ull, 2689949238098903858ull}}, {{17699816695268757568ull, 12653161945507728113ull, 8413102376257665454ull, 3362436547623629823ull}}, {{8289712813803783248ull, 6593080395029884334ull, 5904691951894693914ull, 4203045684529537279ull}}, {{569384490199976626ull, 8732361265321065613ull, 10607961497575265552ull, 2626903552830960799ull}}, {{5323416631177358686ull, 10915451581651332016ull, 8648265853541694036ull, 3283629441038700999ull}}, {{6654270788971698358ull, 13644314477064165020ull, 6198646298499729641ull, 4104536801298376249ull}}, {{13382291279962087282ull, 1610167520524021281ull, 15403368982630800786ull, 2565335500811485155ull}}, {{2892806044670445390ull, 11236081437509802410ull, 14642525209861113078ull, 3206669376014356444ull}}, {{12839379592692832546ull, 4821729760032477204ull, 18303156512326391348ull, 4008336720017945555ull}}, {{17247984282287796149ull, 12236953136875074060ull, 9133629810990300640ull, 2505210450011215972ull}}, {{3113236279150193570ull, 15296191421093842576ull, 11417037263737875800ull, 3131513062514019965ull}}, {{3891545348937741963ull, 673495202657751604ull, 436238524390181039ull, 3914391328142524957ull}}, {{11655587879940864535ull, 7338463529302176608ull, 2578492086957557101ull, 2446494580089078098ull}}, {{14569484849926080669ull, 13784765430055108664ull, 12446487145551722184ull, 3058118225111347622ull}}, {{18211856062407600836ull, 17230956787568885830ull, 6334736895084876922ull, 3822647781389184528ull}}, {{6770724020577362618ull, 15381034010657941548ull, 3959210559428048076ull, 2389154863368240330ull}}, {{8463405025721703273ull, 779548439612875319ull, 14172385236139835904ull, 2986443579210300412ull}}, {{5967570263724741187ull, 974435549516094149ull, 17715481545174794880ull, 3733054474012875515ull}}, {{6035574424041657194ull, 609022218447558843ull, 8766332956520552848ull, 2333159046258047197ull}}, {{2932782011624683588ull, 761277773059448554ull, 15569602214078078964ull, 2916448807822558996ull}}, {{12889349551385630293ull, 951597216324310692ull, 1015258693888047089ull, 3645561009778198746ull}}, {{16111686939232037867ull, 5801182538832776269ull, 10492445404214834669ull, 4556951262222748432ull}}, {{12375647346233717619ull, 5931582095984179120ull, 6557778377634271668ull, 2848094538889217770ull}}, {{15469559182792147023ull, 7414477619980223900ull, 17420595008897615393ull, 3560118173611522212ull}}, {{890204904780632163ull, 13879783043402667780ull, 3328999687412467625ull, 4450147717014402766ull}}, {{9779750102342670910ull, 1757335374485585506ull, 15915682859914955978ull, 2781342323134001728ull}}, {{3001315591073562830ull, 11420041254961757691ull, 1447859501184143356ull, 3476677903917502161ull}}, {{17586702544124117249ull, 14275051568702197113ull, 6421510394907567099ull, 4345847379896877701ull}}, {{4074160062436491425ull, 6616064221225179244ull, 6319287006030923389ull, 2716154612435548563ull}}, {{5092700078045614281ull, 12881766294958861959ull, 3287422739111266332ull, 3395193265544435704ull}}, {{1754189079129629947ull, 16102207868698577449ull, 4109278423889082915ull, 4243991581930544630ull}}, {{12625583220524488477ull, 7758036908722916953ull, 16403357070212840534ull, 2652494738706590393ull}}, {{1946920970373446884ull, 474174099048870384ull, 6669138282483886956ull, 3315618423383237992ull}}, {{2433651212966808605ull, 592717623811087980ull, 8336422853104858695ull, 4144523029229047490ull}}, {{10744404044959031186ull, 7287977542523011843ull, 9821950301617924588ull, 2590326893268154681ull}}, {{8818819037771401079ull, 9109971928153764804ull, 16889123895449793639ull, 3237908616585193351ull}}, {{11023523797214251348ull, 6775778891764818101ull, 16499718850884854145ull, 4047385770731491689ull}}, {{9195545382472601045ull, 15764076853421481073ull, 3394795254161951984ull, 2529616106707182306ull}}, {{16106117746518139210ull, 1258351993067299725ull, 13466866104557215789ull, 3162020133383977882ull}}, {{6297589127865510300ull, 6184626009761512561ull, 7610210593841743928ull, 3952525166729972353ull}}, {{15465208250984413698ull, 3865391256100945350ull, 16285596667219559715ull, 2470328229206232720ull}}, {{10108138276875741314ull, 220053051698793784ull, 1910251760314898028ull, 3087910286507790901ull}}, {{12635172846094676643ull, 275066314623492230ull, 6999500718821010439ull, 3859887858134738626ull}}, {{3285297010381784998ull, 7089445474280764500ull, 8986373967690519428ull, 2412429911334211641ull}}, {{4106621262977231247ull, 8861806842850955625ull, 15844653478040537189ull, 3015537389167764551ull}}, {{9744962597148926963ull, 15688944571991082435ull, 15194130829123283582ull, 3769421736459705689ull}}, {{3784758614004385400ull, 5193904339067038618ull, 2578802740560970383ull, 2355888585287316056ull}}, {{13954320304360257558ull, 1880694405406410368ull, 3223503425701212979ull, 2944860731609145070ull}}, {{17442900380450321947ull, 16185926062040176672ull, 13252751318981292031ull, 3681075914511431337ull}}, {{3356881401853350818ull, 15620721559122832937ull, 2730881093444451327ull, 4601344893139289172ull}}, {{13627265922226814021ull, 16680480002092852441ull, 10930172720257557887ull, 2875840558212055732ull}}, {{3199024347501353815ull, 16238913984188677648ull, 13662715900321947359ull, 3594800697765069665ull}}, {{3998780434376692268ull, 15686956461808459156ull, 3243336820120270487ull, 4493500872206337082ull}}, {{11722609808340208476ull, 16721876816271368828ull, 6638771531002556958ull, 2808438045128960676ull}}, {{14653262260425260595ull, 11678973983484435227ull, 8298464413753196198ull, 3510547556411200845ull}}, {{13704891807104187839ull, 5375345442500768226ull, 14984766535618883152ull, 4388184445514001056ull}}, {{13177243397867505304ull, 3359590901562980141ull, 9365479084761801970ull, 2742615278446250660ull}}, {{2636496192052217917ull, 13422860663808500985ull, 11706848855952252462ull, 3428269098057813325ull}}, {{7907306258492660301ull, 7555203792905850423ull, 798503014658151866ull, 4285336372572266657ull}}, {{11859595439198994544ull, 9333688388993544418ull, 12028279430229814676ull, 2678335232857666660ull}}, {{5601122262143967372ull, 11667110486241930523ull, 15035349287787268345ull, 3347919041072083325ull}}, {{2389716809252571311ull, 748830052520249442ull, 4959128554451921720ull, 4184898801340104157ull}}, {{6105259024210244973ull, 468018782825155901ull, 5405298355746145027ull, 2615561750837565098ull}}, {{12243259798690194121ull, 14420081533813608588ull, 15979994981537457091ull, 3269452188546956372ull}}, {{15304074748362742651ull, 13413415898839622831ull, 1528249653212269748ull, 4086815235683695466ull}}, {{16482575745367796013ull, 17606756973629540077ull, 5566842051685056496ull, 2554259522302309666ull}}, {{6768161626427581304ull, 3561702143327373481ull, 16181924601461096429ull, 3192824402877887082ull}}, {{13071888051461864534ull, 9063813697586604755ull, 11004033714971594728ull, 3991030503597358853ull}}, {{5864087022949971382ull, 5664883560991627972ull, 9183364081070940657ull, 2494394064748349283ull}}, {{7330108778687464227ull, 11692790469666922869ull, 6867519082911287917ull, 3117992580935436604ull}}, {{13774321991786718188ull, 780930031801489874ull, 8584398853639109897ull, 3897490726169295755ull}}, {{13220637263294086772ull, 12017296315944400931ull, 3059406274310749733ull, 2435931703855809847ull}}, {{11914110560690220560ull, 1186562339648337452ull, 17659315898170600879ull, 3044914629819762308ull}}, {{14892638200862775700ull, 15318260979842585527ull, 3627400799003699482ull, 3806143287274702886ull}}, {{16225427903180316669ull, 14185599130829003858ull, 16102183554659475888ull, 2378839554546689303ull}}, {{11058412842120620028ull, 17731998913536254823ull, 15516043424896956956ull, 2973549443183361629ull}}, {{9211330034223387131ull, 3718254568210766913ull, 5559996225839032484ull, 3716936803979202037ull}}, {{17286296317458086717ull, 11547281141986505128ull, 5780840650363089254ull, 2323085502487001273ull}}, {{3161126323113056780ull, 5210729390628355603ull, 11837736831381249472ull, 2903856878108751591ull}}, {{17786465959173484687ull, 6513411738285444503ull, 10185485020799173936ull, 3629821097635939489ull}}, {{17621396430539467955ull, 8141764672856805629ull, 17343542294426355324ull, 4537276372044924361ull}}, {{13319215778300861424ull, 14311974957390279326ull, 3922184906375390221ull, 2835797732528077726ull}}, {{7425647686021300972ull, 4054910641455685446ull, 14126103169824013585ull, 3544747165660097157ull}}, {{58687570671850406ull, 9680324320246994712ull, 3822570906997853269ull, 4430933957075121447ull}}, {{36679731669906504ull, 8356045709368065647ull, 9306635844514740149ull, 2769333723171950904ull}}, {{13880907719869546842ull, 15056743155137469962ull, 11633294805643425186ull, 3461667153964938630ull}}, {{8127762612982157745ull, 9597556907067061645ull, 5318246470199505675ull, 4327083942456173288ull}}, {{7385694642327542543ull, 3692630057703219576ull, 3323904043874691047ull, 2704427464035108305ull}}, {{9232118302909428178ull, 4101553701636566ull, 8766566073270751713ull, 3380534330043885381ull}}, {{2316775841782009414ull, 4616812960554433612ull, 15569893610015827545ull, 4225667912554856726ull}}, {{10671356937968531692ull, 14414723146414990767ull, 5119497487832504311ull, 2641042445346785454ull}}, {{8727510154033276711ull, 13406717914591350555ull, 15622743896645406197ull, 3301303056683481817ull}}, {{6297701674114207985ull, 2923339337957024482ull, 5693371815524594035ull, 4126628820854352272ull}}, {{8547749564748767895ull, 17967988150718997965ull, 3558357384702871271ull, 2579143013033970170ull}}, {{15296372974363347772ull, 17848299169971359552ull, 13671318767733364897ull, 3223928766292462712ull}}, {{673722144244633099ull, 8475315907182035729ull, 17089148459666706122ull, 4029910957865578390ull}}, {{11950291386221365447ull, 9908758460416160234ull, 6069031768864303422ull, 2518694348665986494ull}}, {{5714492195921931001ull, 3162576038665424485ull, 16809661747935155086ull, 3148367935832483117ull}}, {{11754801263329801655ull, 13176592085186556414ull, 7177019129636780145ull, 3935459919790603897ull}}, {{2735064771153738131ull, 1317841025600515903ull, 16014852002091457351ull, 2459662449869127435ull}}, {{17253889019224336375ull, 15482359337282808590ull, 15406878984186933784ull, 3074578062336409294ull}}, {{12343989237175644661ull, 906205097893959122ull, 10035226693378891423ull, 3843222577920511618ull}}, {{12326679291662165817ull, 7483907213824806307ull, 10883702701789195043ull, 2402014111200319761ull}}, {{10796663096150319367ull, 4743197998853619980ull, 18216314395663881708ull, 3002517639000399701ull}}, {{13495828870187899209ull, 5928997498567024975ull, 8935334939297688423ull, 3753147048750499627ull}}, {{15352422071508518862ull, 10623152464245472465ull, 3278741327847361312ull, 2345716905469062267ull}}, {{5355469534103484865ull, 13278940580306840582ull, 17933484715091365352ull, 2932146131836327833ull}}, {{15917708954484131889ull, 16598675725383550727ull, 8581797838582042978ull, 3665182664795409792ull}}, {{15285450174677776957ull, 11524972619874662601ull, 10727247298227553723ull, 4581478330994262240ull}}, {{2635877331532528743ull, 4897264878207970174ull, 6704529561392221077ull, 2863423956871413900ull}}, {{12518218701270436736ull, 10733267116187350621ull, 8380661951740276346ull, 3579279946089267375ull}}, {{1812715321305882208ull, 4193211858379412469ull, 5864141421247957529ull, 4474099932611584219ull}}, {{3438790085029870332ull, 14149972457555602553ull, 1359245379066279503ull, 2796312457882240137ull}}, {{8910173624714725819ull, 13075779553517115287ull, 6310742742260237283ull, 3495390572352800171ull}}, {{6526031012466019370ull, 11733038423469006205ull, 3276742409397908700ull, 4369238215441000214ull}}, {{6384612392004956058ull, 16556521051522904686ull, 15883022061155856649ull, 2730773884650625133ull}}, {{17204137526860970881ull, 6860593259121467145ull, 6018719521162657100ull, 3413467355813281417ull}}, {{7670113853294049889ull, 8575741573901833932ull, 12135085419880709279ull, 4266834194766601771ull}}, {{14017193195163556989ull, 12277367511329728063ull, 5278585378211749347ull, 2666771371729126107ull}}, {{12909805475527058332ull, 10735023370734772175ull, 1986545704337298780ull, 3333464214661407634ull}}, {{11525570825981435011ull, 13418779213418465219ull, 11706554167276399283ull, 4166830268326759542ull}}, {{4897638757024702930ull, 6080893999172846810ull, 2704910336120361648ull, 2604268917704224714ull}}, {{15345420483135654470ull, 7601117498966058512ull, 12604509957005227868ull, 3255336147130280892ull}}, {{735031530210016471ull, 9501396873707573141ull, 15755637446256534835ull, 4069170183912851115ull}}, {{2765237715594954247ull, 3632530036853539261ull, 7541430394696640320ull, 2543231364945531947ull}}, {{8068233162921080712ull, 4540662546066924076ull, 4815101974943412496ull, 3179039206181914934ull}}, {{10085291453651350890ull, 5675828182583655095ull, 15242249505534041428ull, 3973799007727393667ull}}, {{13220836186173176163ull, 12770764650969560242ull, 7220562931745081940ull, 2483624379829621042ull}}, {{7302673195861694395ull, 15963455813711950303ull, 18249075701536128233ull, 3104530474787026302ull}}, {{4516655476399730090ull, 6119261711857774167ull, 13587972590065384484ull, 3880663093483782878ull}}, {{9740438700390913162ull, 13047910606765884662ull, 3880796850363477398ull, 2425414433427364299ull}}, {{2952176338633865645ull, 7086516221602580020ull, 239310044526958844ull, 3031768041784205374ull}}, {{3690220423292332056ull, 8858145277003225025ull, 9522509592513474363ull, 3789710052230256717ull}}, {{13835602810626177295ull, 3230497788913321688ull, 8257411504534615429ull, 2368568782643910448ull}}, {{17294503513282721619ull, 8649808254569040014ull, 10321764380668269286ull, 2960710978304888060ull}}, {{12394757354748626215ull, 1588888281356524210ull, 12902205475835336608ull, 3700888722881110075ull}}, {{12358409365145279289ull, 993055175847827631ull, 5758035413183391428ull, 2313055451800693797ull}}, {{10836325688004211207ull, 1241318969809784539ull, 11809230284906627189ull, 2891319314750867246ull}}, {{8933721091577876105ull, 6163334730689618578ull, 5538165819278508178ull, 3614149143438584058ull}}, {{1943779327617569323ull, 16927540450216799031ull, 16146079310952911030ull, 4517686429298230072ull}}, {{8132391107402062683ull, 5968026762958111490ull, 10091299569345569394ull, 2823554018311393795ull}}, {{942116847397802545ull, 16683405490552415171ull, 8002438443254573838ull, 3529442522889242244ull}}, {{15012704114529416894ull, 11630884826335743155ull, 10003048054068217298ull, 4411803153611552805ull}}, {{7077097062367191607ull, 11880989034887227376ull, 8557748043006329763ull, 2757376971007220503ull}}, {{8846371327958989508ull, 10239550275181646316ull, 6085499035330524300ull, 3446721213759025629ull}}, {{11057964159948736885ull, 12799437843977057895ull, 12218559812590543279ull, 4308401517198782036ull}}, {{13828756627609042409ull, 14917177680126743040ull, 16859971919723865357ull, 2692750948249238772ull}}, {{17285945784511303012ull, 4811414044876265088ull, 2628220825945280081ull, 3365938685311548466ull}}, {{3160688156929577148ull, 10625953574522719265ull, 12508648069286375909ull, 4207423356639435582ull}}, {{13504645144149455478ull, 8947063993290393492ull, 3206219024876597039ull, 2629639597899647239ull}}, {{16880806430186819347ull, 6572143973185603961ull, 17842831836377910011ull, 3287049497374559048ull}}, {{7265949982451360472ull, 3603493948054617048ull, 3856795721762835898ull, 4108811871718198811ull}}, {{4541218739032100295ull, 6863869735961523559ull, 104654316888078484ull, 2568007419823874257ull}}, {{1064837405362737465ull, 8579837169951904449ull, 4742503914537486009ull, 3210009274779842821ull}}, {{5942732775130809735ull, 15336482480867268465ull, 10539815911599245415ull, 4012511593474803526ull}}, {{15243423030525225845ull, 16502830578183124646ull, 1975698926322140480ull, 2507819745921752204ull}}, {{9830906751301756498ull, 2181794149019354192ull, 2469623657902675601ull, 3134774682402190255ull}}, {{12288633439127195622ull, 7338928704701580644ull, 16922087627660508213ull, 3918468353002737818ull}}, {{16903767936309273072ull, 6892673449652181854ull, 15187990785715205537ull, 2449042720626711136ull}}, {{11906337883531815532ull, 13227527830492615222ull, 538244408434455305ull, 3061303400783388921ull}}, {{5659550317559993606ull, 2699351732833605316ull, 5284491528970457036ull, 3826629250979236151ull}}, {{12760590985329771812ull, 10910466869875779130ull, 10220336233247617503ull, 2391643281862022594ull}}, {{6727366694807438957ull, 9026397568917336009ull, 3552048254704746071ull, 2989554102327528243ull}}, {{13020894386936686600ull, 6671310942719282107ull, 18275118373663096301ull, 3736942627909410303ull}}, {{5832215982621735173ull, 6475412348413245269ull, 18339478011180517044ull, 2335589142443381439ull}}, {{11901955996704556871ull, 8094265435516556586ull, 18312661495548258401ull, 2919486428054226799ull}}, {{5654072959025920280ull, 14729517812823083637ull, 18279140851007935097ull, 3649358035067783499ull}}, {{11679277217209788254ull, 4576839210746690834ull, 18237240045332530968ull, 4561697543834729374ull}}, {{11911234279183505563ull, 2860524506716681771ull, 6786589009905443951ull, 2851060964896705859ull}}, {{10277356830551994050ull, 17410713688678015926ull, 3871550243954417034ull, 3563826206120882324ull}}, {{3623324001335216754ull, 12540020073992744100ull, 4839437804943021293ull, 4454782757651102905ull}}, {{11487949537689286279ull, 10143355555459159014ull, 14553863674157858068ull, 2784239223531939315ull}}, {{5136564885256832041ull, 12679194444323948768ull, 13580643574269934681ull, 3480299029414924144ull}}, {{6420706106571040051ull, 2013935000122772248ull, 16975804467837418352ull, 4350373786768655180ull}}, {{4012941316606900032ull, 1258709375076732655ull, 1386505755543610662ull, 2718983616730409488ull}}, {{404490627331237136ull, 10796758755700691627ull, 1733132194429513327ull, 3398729520913011860ull}}, {{14340671339446210132ull, 8884262426198476629ull, 2166415243036891659ull, 4248411901141264825ull}}, {{11268762596367575285ull, 3246821007160353941ull, 12883224572966527047ull, 2655257438213290515ull}}, {{250895190177305394ull, 17893584314232606139ull, 11492344697780770904ull, 3319071797766613144ull}}, {{14148677043003795454ull, 3920236319081206057ull, 14365430872225963631ull, 4148839747208266430ull}}, {{1925394124236290303ull, 9367676727066835642ull, 4366708276713839365ull, 2593024842005166519ull}}, {{11630114692150138687ull, 16321281927260932456ull, 846699327464911302ull, 3241281052506458149ull}}, {{14537643365187673358ull, 11178230372221389762ull, 5670060177758527032ull, 4051601315633072686ull}}, {{13697713121669683753ull, 6986393982638368601ull, 17378845666381243107ull, 2532250822270670428ull}}, {{3287083346804940979ull, 4121306459870572848ull, 3276813009267002268ull, 3165313527838338036ull}}, {{4108854183506176224ull, 5151633074838216060ull, 4096016261583752835ull, 3956641909797922545ull}}, {{11791405901546135948ull, 913927662560191085ull, 14089225209558315282ull, 2472901193623701590ull}}, {{904199321650506223ull, 10365781615055014665ull, 8388159475093118294ull, 3091126492029626988ull}}, {{5741935170490520683ull, 3733854981963992523ull, 10485199343866397868ull, 3863908115037033735ull}}, {{1282866472342881475ull, 11557031400582271135ull, 13470778617557580523ull, 2414942571898146084ull}}, {{15438641145710765555ull, 9834603232300451014ull, 16838473271946975654ull, 3018678214872682605ull}}, {{10074929395283681136ull, 3069882003520787960ull, 7213033534651555856ull, 3773347768590853257ull}}, {{6296830872052300710ull, 1918676252200492475ull, 16037361005225692170ull, 2358342355369283285ull}}, {{3259352571637987984ull, 11621717352105391402ull, 6211643201249951500ull, 2947927944211604107ull}}, {{13297562751402260787ull, 14527146690131739252ull, 3152867983135051471ull, 3684909930264505134ull}}, {{16621953439252825984ull, 13547247344237286161ull, 13164457015773590147ull, 4606137412830631417ull}}, {{3471191871891934384ull, 6161186580934609899ull, 1310256607217411986ull, 2878835883019144636ull}}, {{18174047895147081692ull, 16924855263023038181ull, 1637820759021764982ull, 3598544853773930795ull}}, {{8882501813651688403ull, 11932697041924021919ull, 15882334004059369940ull, 4498181067217413493ull}}, {{12469092661173387108ull, 16681307688057289507ull, 12232301761750800164ull, 2811363167010883433ull}}, {{10974679808039345981ull, 2404890536362060268ull, 1455319146906336494ull, 3514203958763604292ull}}, {{13718349760049182476ull, 12229485207307351143ull, 1819148933632920617ull, 4392754948454505365ull}}, {{15491497627671820904ull, 725899226926012608ull, 3442811092734269338ull, 2745471842784065853ull}}, {{917627960880224514ull, 10130746070512291569ull, 8915199884345224576ull, 3431839803480082316ull}}, {{5758720969527668546ull, 12663432588140364461ull, 11143999855431530720ull, 4289799754350102895ull}}, {{5905043615168486793ull, 7914645367587727788ull, 13882528937285788556ull, 2681124846468814309ull}}, {{7381304518960608492ull, 9893306709484659735ull, 3518103116325071983ull, 3351406058086017887ull}}, {{4614944630273372710ull, 7754947368428436765ull, 18232686950688503691ull, 4189257572607522358ull}}, {{5190183403134551896ull, 2540999096054079026ull, 6783743325752926903ull, 2618285982879701474ull}}, {{15711101290772965678ull, 17011306925349762494ull, 17703051194045934436ull, 3272857478599626842ull}}, {{10415504576611431290ull, 2817389582977651502ull, 12905441955702642238ull, 4091071848249533553ull}}, {{1898004341954756652ull, 15595926544643195901ull, 1148372194673069542ull, 2556919905155958471ull}}, {{6984191445870833719ull, 10271536143949219068ull, 15270523298623500640ull, 3196149881444948088ull}}, {{8730239307338542149ull, 12839420179936523835ull, 641410049569824184ull, 3995187351806185111ull}}, {{3150556557872894891ull, 8024637612460327397ull, 7318410308622221971ull, 2496992094878865694ull}}, {{8549881715768506518ull, 5419110997148021342ull, 18371384922632553272ull, 3121240118598582117ull}}, {{1463980107855857339ull, 6773888746435026678ull, 9129173098008527878ull, 3901550148248227647ull}}, {{14750045622692074549ull, 18068738521804055385ull, 12623262213896411779ull, 2438468842655142279ull}}, {{4602498973082929474ull, 17974237133827681328ull, 11167391748943126820ull, 3048086053318927849ull}}, {{5753123716353661843ull, 4021052343575050044ull, 124181630896744814ull, 3810107566648659812ull}}, {{12819074359575814460ull, 16348215770016569989ull, 9300985556165241316ull, 2381317229155412382ull}}, {{2188784894187604363ull, 1988525638811160871ull, 2402859908351775838ull, 2976646536444265478ull}}, {{16571039173016669165ull, 11709029085368726896ull, 12226946922294495605ull, 3720808170555331847ull}}, {{10356899483135418228ull, 9623986187569148262ull, 14559370854075141609ull, 2325505106597082404ull}}, {{3722752317064496977ull, 16641668752888823232ull, 18199213567593927011ull, 2906881383246353005ull}}, {{4653440396330621222ull, 16190399922683641136ull, 8913958904210245052ull, 3633601729057941257ull}}, {{5816800495413276527ull, 1791255829644999804ull, 15754134648690194220ull, 4542002161322426571ull}}, {{12858872346488073638ull, 10342906930382900685ull, 7540491146217677435ull, 2838751350826516607ull}}, {{2238532377827928335ull, 8316947644551237953ull, 4813927914344708890ull, 3548439188533145759ull}}, {{7409851490712298322ull, 1172812518834271633ull, 1405723874503498209ull, 4435548985666432199ull}}, {{16160372227763656212ull, 12262222870339889530ull, 7796106449205768236ull, 2772218116041520124ull}}, {{10977093247849794457ull, 15327778587924861913ull, 9745133061507210295ull, 3465272645051900155ull}}, {{18333052578239630975ull, 14548037216478689487ull, 7569730308456624965ull, 4331590806314875194ull}}, {{18375686889040851215ull, 11398366269512874881ull, 9342767461212778507ull, 2707244253946796996ull}}, {{9134550556018900307ull, 9636271818463705698ull, 11678459326515973134ull, 3384055317433496245ull}}, {{2194816158168849576ull, 2821967736224856315ull, 763016102862802706ull, 4230069146791870307ull}}, {{17512661163351388649ull, 6375415853567923100ull, 16617786128785109355ull, 2643793216744918941ull}}, {{3444082380479684195ull, 3357583798532515972ull, 6937174605699222982ull, 3304741520931148677ull}}, {{4305102975599605244ull, 13420351785020420773ull, 13283154275551416631ull, 4130926901163935846ull}}, {{4996532368963447229ull, 15305248893278844839ull, 3690285403792247490ull, 2581829313227459904ull}}, {{1633979442776921133ull, 9908189079743780241ull, 4612856754740309363ull, 3227286641534324880ull}}, {{6654160321898539320ull, 7773550331252337397ull, 5766070943425386704ull, 4034108301917906100ull}}, {{6464693210400281027ull, 4858468957032710873ull, 12827166376495642498ull, 2521317688698691312ull}}, {{12692552531427739188ull, 15296458233145664399ull, 16033957970619553122ull, 3151647110873364140ull}}, {{11254004645857286080ull, 9897200754577304691ull, 1595703389564889787ull, 3939558888591705176ull}}, {{4727909894447109848ull, 3879907462397121480ull, 997314618478056117ull, 2462224305369815735ull}}, {{5909887368058887310ull, 9461570346423789754ull, 15081701328379733858ull, 3077780381712269668ull}}, {{16610731246928384946ull, 2603590896174961384ull, 405382586765115707ull, 3847225477140337086ull}}, {{10381707029330240591ull, 17768145374605208529ull, 14088422172010361028ull, 2404515923212710678ull}}, {{17588819805090188643ull, 3763437644546959045ull, 8387155678158175478ull, 3005644904015888348ull}}, {{8150966701080572092ull, 13927669092538474615ull, 10483944597697719347ull, 3757056130019860435ull}}, {{12011883215816439414ull, 6398950173622852682ull, 4246622364347380640ull, 2348160081262412772ull}}, {{5791481982915773459ull, 7998687717028565853ull, 5308277955434225800ull, 2935200101578015965ull}}, {{11851038497072104727ull, 9998359646285707316ull, 11247033462720170154ull, 3669000126972519956ull}}, {{14813798121340130909ull, 3274577521002358337ull, 14058791828400212693ull, 4586250158715649945ull}}, {{2341094798196499962ull, 4352453959840167913ull, 1869215865109051077ull, 2866406349197281216ull}}, {{7538054516173012857ull, 10052253468227597795ull, 2336519831386313846ull, 3583007936496601520ull}}, {{4810882126788878167ull, 3341944798429721436ull, 2920649789232892308ull, 4478759920620751900ull}}, {{12230173366097824663ull, 11312087535873351705ull, 11048778155125333500ull, 2799224950387969937ull}}, {{1452658652340117116ull, 14140109419841689632ull, 18422658712334054779ull, 3499031187984962421ull}}, {{1815823315425146395ull, 13063450756374724136ull, 9193265335135404762ull, 4373788984981203027ull}}, {{1134889572140716497ull, 12776342741161590489ull, 3439947825245934024ull, 2733618115613251892ull}}, {{6030297983603283525ull, 15970428426451988111ull, 4299934781557417530ull, 3417022644516564865ull}}, {{2926186461076716502ull, 10739663496210209331ull, 9986604495374159817ull, 4271278305645706081ull}}, {{17969767602668805478ull, 18241504731199850591ull, 17770842855677319645ull, 2669548941028566300ull}}, {{17850523484908618944ull, 8966822858717649527ull, 3766809495887097941ull, 3336936176285707876ull}}, {{17701468337708385775ull, 15820214591824449813ull, 4708511869858872426ull, 4171170220357134845ull}}, {{13369260720281435062ull, 14499320138317669037ull, 5248662927875489218ull, 2606981387723209278ull}}, {{2876517845069630115ull, 8900778136042310489ull, 15784200696699137331ull, 3258726734654011597ull}}, {{8207333324764425548ull, 6514286651625500207ull, 5895192815591757952ull, 4073408418317514497ull}}, {{12047112355618847824ull, 4071429157265937629ull, 15213710555813318480ull, 2545880261448446560ull}}, {{1223832389241396067ull, 5089286446582422037ull, 570394121057096484ull, 3182350326810558201ull}}, {{6141476504979132988ull, 6361608058228027546ull, 5324678669748758509ull, 3977937908513197751ull}}, {{8450108834039346022ull, 6281848045606211168ull, 10245453196234055924ull, 2486211192820748594ull}}, {{10562636042549182527ull, 7852310057007763960ull, 3583444458437794097ull, 3107763991025935743ull}}, {{13203295053186478159ull, 14427073589687092854ull, 18314363628329406333ull, 3884704988782419678ull}}, {{3640373389814160945ull, 11322764002768126986ull, 6834791249278491054ull, 2427940617989012299ull}}, {{13773838774122476989ull, 4930082966605382924ull, 3931803043170725914ull, 3034925772486265374ull}}, {{17217298467653096237ull, 15385975745111504463ull, 14138125840818183200ull, 3793657215607831717ull}}, {{17678340569924267004ull, 9616234840694690289ull, 11142171659725058452ull, 2371035759754894823ull}}, {{8262867657123170043ull, 12020293550868362862ull, 9316028556228935161ull, 2963794699693618529ull}}, {{1105212534549186746ull, 1190308883303289866ull, 16256721713713556856ull, 3704743374617023161ull}}, {{5302443852520629620ull, 743943052064556166ull, 3242922043429891179ull, 2315464609135639476ull}}, {{15851426852505562833ull, 14764986870362858919ull, 4053652554287363973ull, 2894330761419549345ull}}, {{15202597547204565637ull, 4621175532671409937ull, 9678751711286592871ull, 3617913451774436681ull}}, {{5168188878723543335ull, 1164783397411874518ull, 16710125657535628993ull, 4522391814718045851ull}}, {{17065176104484378296ull, 12257204669450891333ull, 8137985526746074168ull, 2826494884198778657ull}}, {{7496412075323309158ull, 15321505836813614167ull, 14784167926859980614ull, 3533118605248473321ull}}, {{4758829075726748544ull, 9928510259162241901ull, 4645151853292812056ull, 4416398256560591652ull}}, {{5280111181542911792ull, 6205318911976401188ull, 12126591945162783343ull, 2760248910350369782ull}}, {{6600138976928639740ull, 3144962621543113581ull, 5934867894598703371ull, 3450311137937962228ull}}, {{12861859739588187579ull, 17766261332211055688ull, 7418584868248379213ull, 4312888922422452785ull}}, {{8038662337242617237ull, 13409756341845603757ull, 16165830588723706768ull, 2695555576514032990ull}}, {{14660013939980659450ull, 16762195427307004696ull, 10983916199049857652ull, 3369444470642541238ull}}, {{18325017424975824312ull, 2506000210424204254ull, 4506523211957546258ull, 4211805588303176548ull}}, {{6841449872182502291ull, 6177936149942515563ull, 12039949044328242219ull, 2632378492689485342ull}}, {{3940126321800739960ull, 3110734169000756550ull, 5826564268555526966ull, 3290473115861856678ull}}, {{14148529939105700758ull, 13111789748105721495ull, 16506577372549184515ull, 4113091394827320847ull}}, {{15760360239582144830ull, 5889025583352381982ull, 17234139885484322178ull, 2570682121767075529ull}}, {{10477078262622905229ull, 16584654016045253286ull, 7707616801573239010ull, 3213352652208844412ull}}, {{3872975791423855729ull, 11507445483201790800ull, 9634521001966548763ull, 4016690815261055515ull}}, {{2420609869639909831ull, 4886310417787425298ull, 3715732617015399025ull, 2510431759538159697ull}}, {{12249134373904663096ull, 10719574040661669526ull, 9256351789696636685ull, 3138039699422699621ull}}, {{6088045930526053062ull, 18011153569254474812ull, 16182125755548183760ull, 3922549624278374526ull}}, {{13028400743433558972ull, 11256970980784046757ull, 5502142578790226946ull, 2451593515173984079ull}}, {{2450442874009785003ull, 4847841689125282639ull, 2265992205060395779ull, 3064491893967480099ull}}, {{16898111647794394965ull, 1448116092979215394ull, 16667548311607658436ull, 3830614867459350123ull}}, {{15173005798298884757ull, 10128444594966785429ull, 8111374685541092570ull, 2394134292162093827ull}}, {{5131199192591442235ull, 3437183706853705979ull, 5527532338498977809ull, 2992667865202617284ull}}, {{1802312972311914889ull, 8908165651994520378ull, 6909415423123722261ull, 3740834831503271605ull}}, {{5738131626122334710ull, 7873446541710269188ull, 6624227648666020365ull, 2338021769689544753ull}}, {{7172664532652918387ull, 14453494195565224389ull, 12891970579259913360ull, 2922527212111930941ull}}, {{13577516684243535888ull, 18066867744456530486ull, 2279905168792727988ull, 3653159015139913677ull}}, {{7748523818449644052ull, 4136840606861111492ull, 7461567479418297890ull, 4566448768924892096ull}}, {{14066199423385803341ull, 7197211397715582586ull, 4663479674636436181ull, 2854030480578057560ull}}, {{8359377242377478368ull, 13608200265571866137ull, 5829349593295545226ull, 3567538100722571950ull}}, {{15060907571399235864ull, 7786878295110056863ull, 16510059028474207341ull, 4459422625903214937ull}}, {{16330596259765604271ull, 7172641943657479491ull, 3401257865155297732ull, 2787139141189509336ull}}, {{15801559306279617434ull, 8965802429571849364ull, 4251572331444122165ull, 3483923926486886670ull}}, {{1305205059139970177ull, 15818939055392199610ull, 14537837451159928514ull, 4354904908108608337ull}}, {{5427439180389869265ull, 14498522928047512660ull, 2168619379333873465ull, 2721815567567880211ull}}, {{6784298975487336581ull, 4288095604777227113ull, 16545832279449505544ull, 3402269459459850263ull}}, {{13092059737786558630ull, 5360119505971533891ull, 16070604330884494026ull, 4252836824324812829ull}}, {{5876694326902905192ull, 7961760709659596586ull, 12349970716016502718ull, 2658023015203008018ull}}, {{16569239945483407298ull, 728828850219719924ull, 6214091358165852590ull, 3322528769003760023ull}}, {{2264805858144707506ull, 10134408099629425714ull, 3155928179279927833ull, 4153160961254700029ull}}, {{6027189679767830095ull, 17863220108336860831ull, 4278298121263648847ull, 2595725600784187518ull}}, {{2922301081282399715ull, 17717339116993688135ull, 14571244688434336867ull, 3244657000980234397ull}}, {{17487934406885163356ull, 17534987877814722264ull, 4378997805260757372ull, 4055821251225292997ull}}, {{10929959004303227098ull, 1735995386779425607ull, 5042716637501667310ull, 2534888282015808123ull}}, {{9050762736951645968ull, 11393366270329057817ull, 1691709778449696233ull, 3168610352519760154ull}}, {{15925139439616945364ull, 406649782629158559ull, 11338009259916896100ull, 3960762940649700192ull}}, {{16870741177401672709ull, 9477528150997999907ull, 7086255787448060062ull, 2475476837906062620ull}}, {{16476740453324702982ull, 2623538151892724076ull, 8857819734310075078ull, 3094346047382578275ull}}, {{2149181492946327111ull, 12502794726720680904ull, 6460588649460205943ull, 3867932559228222844ull}}, {{1343238433091454444ull, 14731775731841507421ull, 13261239942767404522ull, 2417457849517639277ull}}, {{6290734059791705959ull, 9191347627947108468ull, 2741491873177091941ull, 3021822311897049097ull}}, {{7863417574739632449ull, 16100870553361273489ull, 8038550859898752830ull, 3777277889871311371ull}}, {{16443851030280740041ull, 5451358077423408026ull, 2718251278223026567ull, 2360798681169569607ull}}, {{11331441750996149243ull, 2202511578351872129ull, 17232872153060946921ull, 2950998351461962008ull}}, {{329244133463022842ull, 7364825491367228066ull, 3094346117616632035ull, 3688747939327452511ull}}, {{9634927203683554360ull, 4594345845781647178ull, 17702990702302953756ull, 4610934924159315638ull}}, {{10633515520729609379ull, 12094838190468305294ull, 6452683170511958193ull, 2881834327599572274ull}}, {{4068522364057235916ull, 1283489682803217906ull, 17289225999994723550ull, 3602292909499465342ull}}, {{14309024991926320703ull, 10827734140358798190ull, 12388160463138628629ull, 4502866136874331678ull}}, {{4331454601526562535ull, 9073176846937942821ull, 3130914271034254989ull, 2814291335546457299ull}}, {{10026004270335591073ull, 15953157077099816430ull, 17748700894074982448ull, 3517864169433071623ull}}, {{3309133301064713033ull, 1494702272665218922ull, 17574190099166340157ull, 4397330211791339529ull}}, {{6679894331592833550ull, 3240031929629455778ull, 4066339784337880742ull, 2748331382369587206ull}}, {{17573239951345817745ull, 13273411948891595530ull, 14306296767277126735ull, 3435414227961984007ull}}, {{12743177902327496374ull, 11980078917687106509ull, 13271184940669020515ull, 4294267784952480009ull}}, {{10270329198168379186ull, 5181706314340747616ull, 1376961560277055966ull, 2683917365595300006ull}}, {{12837911497710473982ull, 15700504929780710328ull, 10944573987201095765ull, 3354896706994125007ull}}, {{16047389372138092477ull, 5790573106943724198ull, 9069031465573981803ull, 4193620883742656259ull}}, {{5417932339158919894ull, 1313265182626133672ull, 3362301656770044675ull, 2621013052339160162ull}}, {{6772415423948649868ull, 15476639533564830802ull, 13426249107817331651ull, 3276266315423950202ull}}, {{17688891316790588143ull, 14734113398528650598ull, 7559439347916888756ull, 4095332894279937753ull}}, {{6443871054566729685ull, 18432192910935182432ull, 16253864638516525232ull, 2559583058924961095ull}}, {{8054838818208412107ull, 4593497064959426424ull, 15705644779718268637ull, 3199478823656201369ull}}, {{10068548522760515133ull, 10353557349626670934ull, 5796997919365672084ull, 3999348529570251712ull}}, {{1681156808297934054ull, 15694345380371445142ull, 3623123699603545052ull, 2499592830981407320ull}}, {{11324818047227193376ull, 1171187651754754811ull, 4528904624504431316ull, 3124491038726759150ull}}, {{9544336540606603816ull, 1463984564693443514ull, 14884502817485314953ull, 3905613798408448937ull}}, {{10576896356306515289ull, 12444205399001871956ull, 2385285233287239989ull, 2441008624005280586ull}}, {{13221120445383144111ull, 1720198693470176233ull, 12204978578463825795ull, 3051260780006600732ull}}, {{2691342501446766427ull, 15985306422119884004ull, 15256223223079782243ull, 3814075975008250915ull}}, {{10905461100259004825ull, 7684973504611233550ull, 7229296505211169950ull, 2383797484380156822ull}}, {{4408454338468980223ull, 382844843909266130ull, 18259992668368738246ull, 2979746855475196027ull}}, {{14733939959941001087ull, 9701928091741358470ull, 18213304817033534903ull, 3724683569343995034ull}}, {{4597026456535737775ull, 12981234084979430900ull, 15995001529073347218ull, 2327927230839996896ull}}, {{5746283070669672219ull, 7003170569369512817ull, 1547007837632132407ull, 2909909038549996121ull}}, {{11794539856764478178ull, 4142277193284503117ull, 6545445815467553413ull, 3637386298187495151ull}}, {{908116765673434010ull, 9789532510033016801ull, 3570121250907053862ull, 4546732872734368939ull}}, {{12096788024614366017ull, 1506771800343247596ull, 18372226846312766328ull, 2841708045458980586ull}}, {{15120985030767957521ull, 1883464750429059495ull, 13741911521036182102ull, 3552135056823725733ull}}, {{14289545270032558997ull, 11577702974891100177ull, 3342331346013063915ull, 4440168821029657167ull}}, {{2013436766129267517ull, 4930221350093243659ull, 9006486118899246803ull, 2775105513143535729ull}}, {{16351854012943748108ull, 1551090669189166669ull, 15869793667051446408ull, 3468881891429419661ull}}, {{6604759460897521423ull, 1938863336486458337ull, 6002184028532144298ull, 4336102364286774577ull}}, {{15657189709129420650ull, 5823475603731424364ull, 15280580063901059946ull, 2710063977679234110ull}}, {{1124743062702224196ull, 16502716541519056264ull, 9877353043021549124ull, 3387579972099042638ull}}, {{1405928828377780245ull, 2181651603189268714ull, 3123319266922160598ull, 4234474965123803298ull}}, {{5490391536163500557ull, 15198590307275456658ull, 6563760560253738277ull, 2646546853202377061ull}}, {{16086361457059151504ull, 5163179828812157110ull, 12816386718744560751ull, 3308183566502971326ull}}, {{10884579784469163572ull, 1842288767587808484ull, 6797111361575925131ull, 4135229458128714158ull}}, {{16026234402148003041ull, 17292331544238237966ull, 18083252656267116918ull, 2584518411330446348ull}}, {{10809420965830227993ull, 12392042393443021650ull, 4157321746624344532ull, 3230648014163057936ull}}, {{4288404170433009183ull, 15490052991803777063ull, 5196652183280430665ull, 4038310017703822420ull}}, {{9597781634161712596ull, 2763754092236278808ull, 12471279651405044974ull, 2523943761064889012ull}}, {{11997227042702140744ull, 12678064652150124318ull, 15589099564256306217ull, 3154929701331111265ull}}, {{5773161766522900122ull, 2012522759905491686ull, 5651316400038219060ull, 3943662126663889082ull}}, {{17443284159358976289ull, 10481198761795708111ull, 8143758768451274816ull, 2464788829164930676ull}}, {{17192419180771332457ull, 13101498452244635139ull, 10179698460564093520ull, 3080986036456163345ull}}, {{16878837957536777667ull, 16376873065305793924ull, 17336309094132504804ull, 3851232545570204181ull}}, {{1325901686605710234ull, 1012173628961345395ull, 13141036193046509455ull, 2407020340981377613ull}}, {{15492435163539301504ull, 15100275091483845455ull, 2591237186025973106ull, 3008775426226722017ull}}, {{14753857935996738976ull, 9651971827500031011ull, 7850732500959854287ull, 3760969282783402521ull}}, {{6915318200784267908ull, 12950011419828601238ull, 16435922859168378689ull, 2350605801739626575ull}}, {{17867519787835110693ull, 2352456219503587835ull, 15933217555533085458ull, 2938257252174533219ull}}, {{17722713716366500462ull, 12163942311234260602ull, 15304835925988968918ull, 3672821565218166524ull}}, {{12930020108603349770ull, 5981555852188049945ull, 684300833776659532ull, 4591026956522708156ull}}, {{1163733540236011750ull, 12961844444472307024ull, 9651060057965188015ull, 2869391847826692597ull}}, {{1454666925295014688ull, 11590619537162995876ull, 16675511090883872923ull, 3586739809783365746ull}}, {{1818333656618768360ull, 9876588403026356941ull, 11621016826750065346ull, 4483424762229207183ull}}, {{3442301544600424177ull, 10784553770318860992ull, 14180664544359872697ull, 2802140476393254489ull}}, {{4302876930750530221ull, 18092378231325964144ull, 3890772625167677159ull, 3502675595491568112ull}}, {{5378596163438162776ull, 18003786770730067276ull, 4863465781459596449ull, 4378344494364460140ull}}, {{12584994639003627543ull, 4334837704065210191ull, 12263038150267023589ull, 2736465308977787587ull}}, {{11119557280327146525ull, 10030233148508900643ull, 10717111669406391582ull, 3420581636222234484ull}}, {{9287760581981545252ull, 3314419398781349996ull, 13396389586757989478ull, 4275727045277793105ull}}, {{15028222400593241591ull, 15906570179520507459ull, 1455214464082661567ull, 2672329403298620691ull}}, {{14173591982314164084ull, 15271526705973246420ull, 15654076135385490671ull, 3340411754123275863ull}}, {{17716989977892705105ull, 14477722364039170121ull, 14955909150804475435ull, 4175514692654094829ull}}, {{4155589708541858835ull, 6742733468310787374ull, 11653286228466491099ull, 2609696682908809268ull}}, {{14417859172532099352ull, 3816730816961096313ull, 14566607785583113874ull, 3262120853636011585ull}}, {{4187265910382960477ull, 13994285558056146200ull, 4373201676696728630ull, 4077651067045014482ull}}, {{2617041193989350299ull, 4134742455357703471ull, 7344937066362843298ull, 2548531916903134051ull}}, {{17106359547768851585ull, 14391800106051905146ull, 4569485314526166218ull, 3185664896128917564ull}}, {{12159577397856288673ull, 8766378095710105625ull, 5711856643157707773ull, 3982081120161146955ull}}, {{682206846019098565ull, 7784829319032509968ull, 1264067392759873406ull, 2488800700100716847ull}}, {{852758557523873206ull, 507664611935861652ull, 15415142296232005470ull, 3111000875125896058ull}}, {{1065948196904841508ull, 9857952801774602873ull, 10045555833435231029ull, 3888751093907370073ull}}, {{12195432669133995702ull, 8467063510322820747ull, 17807687441965489153ull, 2430469433692106295ull}}, {{10632604817990106724ull, 15195515406330913838ull, 17647923284029473537ull, 3038086792115132869ull}}, {{4067383985632857597ull, 5159336202631478586ull, 8224846049754678210ull, 3797608490143916087ull}}, {{7153801009447923902ull, 7836271145072062020ull, 12058057808737755737ull, 2373505306339947554ull}}, {{8942251261809904878ull, 14407024949767465429ull, 5849200224067418863ull, 2966881632924934443ull}}, {{15789500095689769001ull, 13397095168781943882ull, 2699814261656885675ull, 3708602041156168054ull}}, {{14480123578233493530ull, 6067341471275020974ull, 15522441968817717259ull, 2317876275722605033ull}}, {{8876782435937091104ull, 2972490820666388314ull, 5567994405739982862ull, 2897345344653256292ull}}, {{1872606008066588072ull, 12938985562687761201ull, 6959993007174978577ull, 3621681680816570365ull}}, {{6952443528510622994ull, 2338673898077537789ull, 13311677277396111126ull, 4527102101020712956ull}}, {{6651120214532833323ull, 15296729241580624830ull, 17543170335227345261ull, 2829438813137945597ull}}, {{17537272305020817462ull, 5285853496693617325ull, 8093904863752017865ull, 3536798516422431997ull}}, {{8086532325993858115ull, 11219002889294409561ull, 14729067098117410235ull, 4420998145528039996ull}}, {{16583297749814631082ull, 4706033796595312023ull, 18429038973178157205ull, 2763123840955024997ull}}, {{16117436168840900949ull, 10494228264171527933ull, 9201240661190532794ull, 3453904801193781247ull}}, {{6311737155768962474ull, 3894413293359634109ull, 6889864808060778089ull, 4317381001492226559ull}}, {{6250678731569295498ull, 13963223354418241078ull, 11223694532679068161ull, 2698363125932641599ull}}, {{17036720451316395181ull, 3618971137740637635ull, 9417932147421447298ull, 3372953907415801999ull}}, {{16684214545718106072ull, 13747085959030572852ull, 7160729165849421218ull, 4216192384269752499ull}}, {{1204262054219040487ull, 13203614742821495937ull, 2169612719442194309ull, 2635120240168595312ull}}, {{6117013586201188513ull, 2669460373244706209ull, 2712015899302742887ull, 3293900300210744140ull}}, {{12257953001178873545ull, 17171883521838046473ull, 3390019874128428608ull, 4117375375263430175ull}}, {{743691598095714110ull, 10732427201148779046ull, 9036291448971349736ull, 2573359609539643859ull}}, {{10152986534474418445ull, 13415534001435973807ull, 6683678292786799266ull, 3216699511924554824ull}}, {{8079547149665635152ull, 7546045464940191451ull, 8354597865983499083ull, 4020874389905693530ull}}, {{2743873959327328018ull, 2410435406373925705ull, 9833309684667074831ull, 2513046493691058456ull}}, {{8041528467586547927ull, 16848102313249570843ull, 12291637105833843538ull, 3141308117113823070ull}}, {{5440224566055797004ull, 11836755854707187746ull, 6141174345437528615ull, 3926635146392278838ull}}, {{8011826372212261032ull, 14315501436833074197ull, 17673292021180619096ull, 2454146966495174273ull}}, {{14626468983692714194ull, 17894376796041342746ull, 8256556971193610158ull, 3067683708118967842ull}}, {{9059714192761116934ull, 13144598958196902625ull, 1097324177137236890ull, 3834604635148709803ull}}, {{17191536416544167844ull, 12827060367300452044ull, 16826728675206630720ull, 2396627896967943626ull}}, {{3042676446970658189ull, 16033825459125565056ull, 11810038807153512592ull, 2995784871209929533ull}}, {{3803345558713322736ull, 1595537750197404704ull, 927490453659727029ull, 3744731089012411917ull}}, {{2377090974195826710ull, 3303054103087071892ull, 2885524542751023345ull, 2340456930632757448ull}}, {{2971363717744783387ull, 8740503647286227769ull, 3606905678438779181ull, 2925571163290946810ull}}, {{8325890665608367138ull, 15537315577535172615ull, 13732004134903249784ull, 3656963954113683512ull}}, {{5795677313583071019ull, 974900398209414153ull, 17165005168629062231ull, 4571204942642104390ull}}, {{15151513367057889147ull, 7526841776521965701ull, 6116442211965775990ull, 2857003089151315244ull}}, {{5104333653540197721ull, 185180183797681319ull, 7645552764957219988ull, 3571253861439144055ull}}, {{1768731048497859248ull, 231475229747101649ull, 4945254937769137081ull, 4464067326798930069ull}}, {{12634671951379631790ull, 11673887064660408290ull, 5396627345319404627ull, 2790042079249331293ull}}, {{6569967902369763929ull, 9980672812398122459ull, 11357470200076643688ull, 3487552599061664116ull}}, {{3600773859534817007ull, 12475841015497653074ull, 14196837750095804610ull, 4359440748827080145ull}}, {{6862169680636648534ull, 12409086653113421075ull, 1955494566168796025ull, 2724650468016925091ull}}, {{3966026082368422763ull, 1676300261109612632ull, 16279426262993158744ull, 3405813085021156363ull}}, {{4957532602960528454ull, 2095375326387015790ull, 15737596810314060526ull, 4257266356276445454ull}}, {{16933515932132493996ull, 15144667634274048580ull, 5224311988018899924ull, 2660791472672778409ull}}, {{2720150841456065879ull, 484090469133009110ull, 11142076003451012810ull, 3325989340840973011ull}}, {{12623560588674858156ull, 9828485123271037195ull, 9315908985886378108ull, 4157486676051216264ull}}, {{5583882358708092396ull, 15366175238899174055ull, 5822443116178986317ull, 2598429172532010165ull}}, {{2368166929957727591ull, 5372660993341803857ull, 11889739913651120801ull, 3248036465665012706ull}}, {{7571894680874547392ull, 11327512260104642725ull, 5638802855209125193ull, 4060045582081265883ull}}, {{7038277184760286072ull, 162166134924319847ull, 1218408775292009294ull, 2537528488800791177ull}}, {{4186160462522969686ull, 9426079705510175617ull, 6134696987542399521ull, 3171910611000988971ull}}, {{9844386596581100012ull, 16394285650315107425ull, 3056685216000611497ull, 3964888263751236214ull}}, {{17681956668931657268ull, 3328899503805860284ull, 15745486315282545898ull, 2478055164844522633ull}}, {{3655701762455019968ull, 13384496416612101164ull, 5846799838821018660ull, 3097568956055653292ull}}, {{4569627203068774960ull, 16730620520765126455ull, 7308499798526273325ull, 3871961195069566615ull}}, {{9773546029559066206ull, 12762480834691897986ull, 11485341401720002684ull, 2419975746918479134ull}}, {{2993560500094056950ull, 15953101043364872483ull, 5133304715295227547ull, 3024969683648098918ull}}, {{17577008680399734899ull, 15329690285778702699ull, 15640002930973810242ull, 3781212104560123647ull}}, {{8679787416036140360ull, 14192742447039077091ull, 16692530859499713257ull, 2363257565350077279ull}}, {{6238048251617787546ull, 3905870003516682652ull, 16253977555947253668ull, 2954071956687596599ull}}, {{7797560314522234432ull, 4882337504395853315ull, 15705785926506679181ull, 3692589945859495749ull}}, {{2567632187362702568ull, 5357303949461102274ull, 12121959213280368440ull, 2307868716162184843ull}}, {{12432912271058154018ull, 6696629936826377842ull, 10540762998173072646ull, 2884835895202731054ull}}, {{6317768301967916715ull, 17594159457887748111ull, 3952581710861564999ull, 3606044869003413818ull}}, {{3285524359032507990ull, 17381013303932297235ull, 14164099175431732057ull, 4507556086254267272ull}}, {{18194353788891175158ull, 3945604287316603915ull, 8852561984644832536ull, 2817222553908917045ull}}, {{18131256217686581043ull, 4932005359145754894ull, 15677388499233428574ull, 3521528192386146306ull}}, {{13440698235253450496ull, 15388378735786969426ull, 10373363587187009909ull, 4401910240482682883ull}}, {{13012122415460794464ull, 11923579719080549843ull, 4177509232778187241ull, 2751193900301676802ull}}, {{11653467000898605176ull, 1069416593568523592ull, 14445258577827509860ull, 3438992375377096002ull}}, {{14566833751123256470ull, 1336770741960654490ull, 8833201185429611517ull, 4298740469221370003ull}}, {{13715957112879423198ull, 3141324722939103008ull, 3214907731679813246ull, 2686712793263356252ull}}, {{17144946391099278997ull, 13150027940528654568ull, 4018634664599766557ull, 3358390991579195315ull}}, {{2984438915164547130ull, 2602476870378654499ull, 411607312322320293ull, 4197988739473994144ull}}, {{18006175386473699620ull, 3932391053200353013ull, 257254570201450183ull, 2623742962171246340ull}}, {{8672661177809960813ull, 303802798073053363ull, 321568212751812729ull, 3279678702714057925ull}}, {{6229140453835063113ull, 4991439516018704608ull, 5013646284367153815ull, 4099598378392572406ull}}, {{3893212783646914446ull, 10037178725152772236ull, 16968586983011634846ull, 2562248986495357753ull}}, {{4866515979558643057ull, 3323101369586189487ull, 7375675673482379846ull, 3202811233119197192ull}}, {{1471458956020915917ull, 13377248748837512667ull, 9219594591852974807ull, 4003514041398996490ull}}, {{17060562912008930112ull, 15278309495664527272ull, 10373932638335497158ull, 2502196275874372806ull}}, {{2878959566301611024ull, 9874514832725883283ull, 3744043761064595640ull, 3127745344842966008ull}}, {{17433757513159177492ull, 12343143540907354103ull, 4680054701330744550ull, 3909681681053707510ull}}, {{17813627473365567789ull, 3102778694639708410ull, 16760092243613879056ull, 2443551050658567193ull}}, {{13043662304852183928ull, 3878473368299635513ull, 7115057249235185108ull, 3054438813323208992ull}}, {{2469519825783066198ull, 4848091710374544392ull, 8893821561543981385ull, 3818048516654011240ull}}, {{1543449891114416374ull, 14559272365052560005ull, 5558638475964988365ull, 2386280322908757025ull}}, {{6540998382320408371ull, 4364032401033536294ull, 11559984113383623361ull, 2982850403635946281ull}}, {{17399620014755286272ull, 10066726519719308271ull, 614922086447365489ull, 3728563004544932852ull}}, {{17792291536863135776ull, 17820919120893037429ull, 9607698340884379238ull, 2330351877840583032ull}}, {{8405306365796756008ull, 13052776864261520979ull, 12009622926105474048ull, 2912939847300728790ull}}, {{5894946938818557106ull, 16315971080326901224ull, 5788656620777066752ull, 3641174809125910988ull}}, {{7368683673523196382ull, 1948219776699074914ull, 7235820775971333441ull, 4551468511407388735ull}}, {{9217113314379385643ull, 12746852406505391581ull, 11439917012623165256ull, 2844667819629617959ull}}, {{16133077661401619958ull, 15933565508131739476ull, 9688210247351568666ull, 3555834774537022449ull}}, {{1719603003042473331ull, 10693584848309898538ull, 16721948827616848737ull, 4444793468171278061ull}}, {{5686437895328933736ull, 18212705576262156346ull, 12757061026474224412ull, 2777995917607048788ull}}, {{16331419406015942978ull, 4319137896618143816ull, 15946326283092780516ull, 3472494897008810985ull}}, {{1967530183810377106ull, 5398922370772679771ull, 6097849798583811933ull, 4340618621261013732ull}}, {{17370607429377343356ull, 5680169490946618808ull, 13034528160969658266ull, 2712886638288133582ull}}, {{3266515213012127578ull, 16323583900538049319ull, 7069788164357297024ull, 3391108297860166978ull}}, {{17918202071547323185ull, 1957735801963010032ull, 18060607242301397089ull, 4238885372325208722ull}}, {{11198876294717076991ull, 12752799922295351030ull, 15899565544865761084ull, 2649303357703255451ull}}, {{4775223331541570430ull, 15940999902869188788ull, 15262770912654813451ull, 3311629197129069314ull}}, {{5969029164426963038ull, 15314563860159098081ull, 9855091603963741006ull, 4139536496411336643ull}}, {{15259858273835321659ull, 4959916394172048396ull, 3853589243263644177ull, 2587210310257085402ull}}, {{628078768584600457ull, 10811581511142448400ull, 14040358590934331029ull, 3234012887821356752ull}}, {{785098460730750572ull, 18126162907355448404ull, 17550448238667913786ull, 4042516109776695940ull}}, {{9714058574811494915ull, 15940537835524543156ull, 1745658112312670308ull, 2526572568610434963ull}}, {{12142573218514368644ull, 1478928220696127329ull, 16017130695673001598ull, 3158215710763043703ull}}, {{1343158467860797093ull, 11072032312724934970ull, 15409727351163864093ull, 3947769638453804629ull}}, {{5451160060840386087ull, 9225863204666778308ull, 11936922603691109010ull, 2467356024033627893ull}}, {{6813950076050482609ull, 2308956968978697077ull, 1086095199331722551ull, 3084195030042034867ull}}, {{13129123613490491165ull, 16721254266505535058ull, 15192677054446816900ull, 3855243787552543583ull}}, {{12817388276858944882ull, 1227411879711183603ull, 16412952186670342419ull, 2409527367220339739ull}}, {{11410049327646293199ull, 15369322904921143216ull, 15904504214910540119ull, 3011909209025424674ull}}, {{14262561659557866498ull, 14599967612724041116ull, 10657258231783399341ull, 3764886511281780843ull}}, {{18137473074078442370ull, 11430822767166219649ull, 4354943385650930636ull, 2353054069551113027ull}}, {{8836783287315889250ull, 14288528458957774562ull, 831993213636275391ull, 2941317586938891284ull}}, {{1822607072290085754ull, 13248974555269830299ull, 1039991517045344239ull, 3676646983673614105ull}}, {{16113316895644770905ull, 11949532175659899969ull, 5911675414734068203ull, 4595808729592017631ull}}, {{3153294032136899960ull, 5162614600573743529ull, 10612326161849874483ull, 2872380455995011019ull}}, {{8553303558598512854ull, 1841582232289791507ull, 8653721683884955200ull, 3590475569993763774ull}}, {{6079943429820753163ull, 2301977790362239384ull, 1593780068001418192ull, 4488094462492204718ull}}, {{3799964643637970727ull, 1438736118976399615ull, 14831170597783050082ull, 2805059039057627948ull}}, {{138269786120075505ull, 11021792185575275327ull, 92219173519260986ull, 3506323798822034936ull}}, {{14007895287932258093ull, 4553868195114318350ull, 115273966899076233ull, 4382904748527543670ull}}, {{4143248536530273404ull, 14375382668014918729ull, 13907104284594086357ull, 2739315467829714793ull}}, {{9790746689090229659ull, 4134170279736484699ull, 3548822300460444235ull, 3424144334787143492ull}}, {{7626747342935399170ull, 556026831243217970ull, 4436027875575555294ull, 4280180418483929365ull}}, {{9378403107762012385ull, 14182574824809174943ull, 5078360431448416010ull, 2675112761552455853ull}}, {{7111317866275127577ull, 8504846494156692871ull, 10959636557737907917ull, 3343890951940569816ull}}, {{4277461314416521568ull, 15242744136123253993ull, 13699545697172384896ull, 4179863689925712270ull}}, {{14202628367578795740ull, 9526715085077033745ull, 3950530042305352656ull, 2612414806203570169ull}}, {{3918227404191330963ull, 11908393856346292182ull, 9549848571309078724ull, 3265518507754462711ull}}, {{14121156292093939511ull, 14885492320432865227ull, 7325624695708960501ull, 4081898134693078389ull}}, {{6519879673345018243ull, 11609275709484234719ull, 6884358444031794265ull, 2551186334183173993ull}}, {{3538163573253884899ull, 676536581573129687ull, 13217134073467130736ull, 3188982917728967491ull}}, {{18257762521849519836ull, 845670726966412108ull, 11909731573406525516ull, 3986228647161209364ull}}, {{2187729539301174090ull, 9751916241208783376ull, 16666954270233854255ull, 2491392904475755852ull}}, {{2734661924126467612ull, 7578209283083591316ull, 2386948764082766203ull, 3114241130594694816ull}}, {{3418327405158084515ull, 4861075585427101241ull, 2983685955103457754ull, 3892801413243368520ull}}, {{13665669674292272582ull, 7649858259319326179ull, 1864803721939661096ull, 2433000883277105325ull}}, {{12470401074437952823ull, 9562322824149157724ull, 6942690670851964274ull, 3041251104096381656ull}}, {{15588001343047441029ull, 2729531493331671347ull, 8678363338564955343ull, 3801563880120477070ull}}, {{7436657830190956691ull, 8623486210973376448ull, 812291068175709185ull, 2375977425075298169ull}}, {{9295822287738695864ull, 15391043782144108464ull, 5627049853647024385ull, 2969971781344122711ull}}, {{11619777859673369830ull, 5403746672397971868ull, 2422126298631392578ull, 3712464726680153389ull}}, {{16485733199150631952ull, 7989027688676120321ull, 3819671945858314313ull, 2320290454175095868ull}}, {{6772108443656126228ull, 14597970629272538306ull, 4774589932322892891ull, 2900363067718869835ull}}, {{17688507591424933593ull, 13635777268163284978ull, 1356551396976228210ull, 3625453834648587294ull}}, {{12887262452426391183ull, 7821349548349330415ull, 10919061283075061071ull, 4531817293310734117ull}}, {{14972068060407576345ull, 11805872495359413365ull, 9130256311135607121ull, 2832385808319208823ull}}, {{4880027020227306720ull, 922282563917102995ull, 6801134370492120998ull, 3540482260399011029ull}}, {{1488347756856745495ull, 10376225241751154552ull, 13113103981542539151ull, 4425602825498763786ull}}, {{930217348035465935ull, 13402669803735553451ull, 12807376006891474873ull, 2766001765936727366ull}}, {{14997829740326496130ull, 2918279199387278101ull, 6785847971759567784ull, 3457502207420909208ull}}, {{4912229120125956451ull, 3647848999234097627ull, 8482309964699459730ull, 4321877759276136510ull}}, {{764300190865028830ull, 6891591642948698921ull, 689757709509774427ull, 2701173599547585319ull}}, {{5567061257008673941ull, 4002803535258485747ull, 14697255192169381746ull, 3376466999434481648ull}}, {{2347140552833454522ull, 14226876455927882992ull, 18371568990211727182ull, 4220583749293102060ull}}, {{1466962845520909077ull, 4280111766527538966ull, 2258858582027553681ull, 2637864843308188788ull}}, {{11057075593755912154ull, 9961825726586811611ull, 2823573227534442101ull, 3297331054135235985ull}}, {{9209658473767502288ull, 17063968176660902418ull, 8141152552845440530ull, 4121663817669044981ull}}, {{10367722564532076834ull, 15276666128840451915ull, 7394063354742094283ull, 2576039886043153113ull}}, {{8347967187237708139ull, 14484146642623176990ull, 13854265211855005758ull, 3220049857553941391ull}}, {{1211586947192359365ull, 8881811266424195430ull, 12706145496391369294ull, 4025062321942426739ull}}, {{14592299897277388315ull, 939446023087734239ull, 5635497926030911857ull, 2515663951214016712ull}}, {{13628688853169347490ull, 5785993547287055703ull, 7044372407538639821ull, 3144579939017520890ull}}, {{12424175048034296459ull, 11844177952536207533ull, 18028837546278075584ull, 3930724923771901112ull}}, {{10070952414235129239ull, 7402611220335129708ull, 11268023466423797240ull, 2456703077357438195ull}}, {{12588690517793911548ull, 9253264025418912135ull, 9473343314602358646ull, 3070878846696797744ull}}, {{11124177128815001531ull, 2343207994918864361ull, 11841679143252948308ull, 3838598558370997180ull}}, {{35081677868294101ull, 10687877033679066034ull, 16624421501387868500ull, 2399124098981873237ull}}, {{9267224134190143434ull, 13359846292098832542ull, 6945468821452671913ull, 2998905123727341547ull}}, {{2360658130882903485ull, 2864749809841376966ull, 4070150008388451988ull, 3748631404659176934ull}}, {{15310469387083978390ull, 11013840668005636411ull, 16378901810524946204ull, 2342894627911985583ull}}, {{14526400715427585084ull, 13767300835007045514ull, 15861941244728794851ull, 2928618284889981979ull}}, {{8934628857429705547ull, 12597440025331418989ull, 15215740537483605660ull, 3660772856112477474ull}}, {{15779972090214519837ull, 15746800031664273736ull, 9796303634999731267ull, 4575966070140596843ull}}, {{9862482556384074898ull, 7535907010576477133ull, 3816846762661138090ull, 2859978793837873027ull}}, {{16939789213907481527ull, 196511726365820608ull, 159372434899034709ull, 3574973492297341284ull}}, {{2727992443674800292ull, 4857325676384663665ull, 199215543623793386ull, 4468716865371676605ull}}, {{13234210323365219943ull, 7647514566167802694ull, 2430352723978564818ull, 2792948040857297878ull}}, {{7319390867351749121ull, 336021170854977560ull, 12261312941827981831ull, 3491185051071622347ull}}, {{9149238584189686401ull, 14255084518850885662ull, 10714955158857589384ull, 4363981313839527934ull}}, {{1106588096691166097ull, 8909427824281803539ull, 2085160955858605461ull, 2727488321149704959ull}}, {{15218293176146121333ull, 15748470798779642327ull, 16441509250105420538ull, 3409360401437131198ull}}, {{14411180451755263762ull, 10462216461619777101ull, 11328514525776999865ull, 4261700501796413998ull}}, {{11312830791560733803ull, 18068100334580830448ull, 2468635560183237011ull, 2663562813622758749ull}}, {{14141038489450917254ull, 17973439399798650156ull, 7697480468656434168ull, 3329453517028448436ull}}, {{17676298111813646567ull, 4020055176038761079ull, 9621850585820542711ull, 4161816896285560545ull}}, {{17965215347524610961ull, 9430063512665307530ull, 17542871662206308954ull, 2601135560178475340ull}}, {{13233147147550987893ull, 2564207353976858605ull, 3481845504048334577ull, 3251419450223094176ull}}, {{2706375879156571154ull, 7816945210898461161ull, 4352306880060418221ull, 4064274312778867720ull}}, {{13220699970541326731ull, 7191433766025232177ull, 2720191800037761388ull, 2540171445486792325ull}}, {{2690816907894494702ull, 8989292207531540222ull, 8011925768474589639ull, 3175214306858490406ull}}, {{12586893171722894185ull, 6624929240987037373ull, 791535173738461241ull, 3969017883573113008ull}}, {{10172651241540502818ull, 15669795821685368118ull, 494709483586538275ull, 2480636177233195630ull}}, {{3492442015070852714ull, 14975558758679322244ull, 9841758891337948652ull, 3100795221541494537ull}}, {{4365552518838565893ull, 272704374639601189ull, 16913884632599823720ull, 3875994026926868171ull}}, {{5034313333487797635ull, 170440234149750743ull, 8265334886161195873ull, 2422496266829292607ull}}, {{1681205648432359140ull, 4824736311114576333ull, 5719982589274106937ull, 3028120333536615759ull}}, {{6713193078967836829ull, 10642606407320608320ull, 2538292218165245767ull, 3785150416920769699ull}}, {{4195745674354898018ull, 13569158032216462056ull, 17727333700849136268ull, 2365719010575481061ull}}, {{5244682092943622523ull, 16961447540270577570ull, 8324109070779256623ull, 2957148763219351327ull}}, {{15779224653034303961ull, 16590123406910834058ull, 5793450320046682875ull, 3696435954024189159ull}}, {{14473701426573827880ull, 8062984120105577334ull, 10538435477670258653ull, 2310272471265118224ull}}, {{8868754746362509042ull, 14690416168559359572ull, 13173044347087823316ull, 2887840589081397780ull}}, {{11085943432953136302ull, 18363020210699199465ull, 16466305433859779145ull, 3609800736351747225ull}}, {{22371235909256665ull, 9118717208091835620ull, 6747823737042560220ull, 4512250920439684032ull}}, {{9237354059298061224ull, 14922570291912173070ull, 4217389835651600137ull, 2820156825274802520ull}}, {{2323320537267800722ull, 4818154809608052626ull, 5271737294564500172ull, 3525196031593503150ull}}, {{12127522708439526710ull, 6022693512010065782ull, 15813043655060401023ull, 4406495039491878937ull}}, {{2968015674347316290ull, 10681712472647372970ull, 2965623256771668783ull, 2754059399682424336ull}}, {{12933391629788921171ull, 8740454572381828308ull, 3707029070964585979ull, 3442574249603030420ull}}, {{16166739537236151463ull, 6313882197049897481ull, 4633786338705732474ull, 4303217812003788025ull}}, {{3186683183131512809ull, 8557862391583573830ull, 14425331507759552556ull, 2689511132502367515ull}}, {{13206726015769166819ull, 10697327989479467287ull, 13419978366272052791ull, 3361888915627959394ull}}, {{11896721501284070619ull, 8759973968421946205ull, 7551600920985290181ull, 4202361144534949243ull}}, {{9741293947516238089ull, 7780826739477410330ull, 2413907566402112411ull, 2626475715334343277ull}}, {{2953245397540521803ull, 5114347405919375009ull, 7629070476430028418ull, 3283094644167929096ull}}, {{8303242765353040158ull, 15616306294253994569ull, 9536338095537535522ull, 4103868305209911370ull}}, {{16718741774414119859ull, 14371877452336134509ull, 10571897328138347605ull, 2564917690756194606ull}}, {{7063369162735486112ull, 4129788760138004425ull, 3991499623318158699ull, 3206147113445243258ull}}, {{13440897471846745543ull, 550549931745117627ull, 14212746566002474182ull, 4007683891806554072ull}}, {{6094717910690522013ull, 14179151762622862229ull, 8882966603751546363ull, 2504802432379096295ull}}, {{12230083406790540420ull, 13112253684851189882ull, 6492022236262045050ull, 3131003040473870369ull}}, {{6064232221633399717ull, 7166945069209211545ull, 12726713813754944217ull, 3913753800592337961ull}}, {{15319360184589344583ull, 16008555714324226975ull, 1036667105955758279ull, 2446096125370211226ull}}, {{14537514212309292825ull, 15399008624477895815ull, 10519205919299473657ull, 3057620156712764032ull}}, {{13560206746959228127ull, 5413702725315206057ull, 13149007399124342072ull, 3822025195890955040ull}}, {{1557600189208435723ull, 3383564203322003786ull, 8218129624452713795ull, 2388765747431846900ull}}, {{11170372273365320462ull, 18064513309434668444ull, 10272662030565892243ull, 2985957184289808625ull}}, {{13962965341706650578ull, 17968955618365947651ull, 17452513556634753208ull, 3732446480362260781ull}}, {{6421010329352962659ull, 11230597261478717282ull, 13213663982110414707ull, 2332779050226412988ull}}, {{17249634948545979132ull, 9426560558421008698ull, 16517079977638018384ull, 2915973812783016235ull}}, {{12338671648827698107ull, 11783200698026260873ull, 16034663953620135076ull, 3644967265978770294ull}}, {{1588281505752458921ull, 14729000872532826092ull, 10819957905170393037ull, 4556209082473462868ull}}, {{10216047977950062634ull, 11511468554546710259ull, 15985845727586271456ull, 2847630676545914292ull}}, {{8158373954010190388ull, 14389335693183387824ull, 1535563085773287704ull, 3559538345682392866ull}}, {{10197967442512737985ull, 17986669616479234780ull, 11142825894071385438ull, 4449422932102991082ull}}, {{15597101688425237049ull, 6629982491872133833ull, 11575952202222003803ull, 2780889332564369426ull}}, {{5661319055249382599ull, 3675792096412779388ull, 5246568215922728946ull, 3476111665705461783ull}}, {{7076648819061728249ull, 13818112157370750043ull, 1946524251476023278ull, 4345139582131827229ull}}, {{2117062502699886204ull, 4024634079929330873ull, 3522420666386208501ull, 2715712238832392018ull}}, {{7258014146802245659ull, 9642478618339051495ull, 13626397869837536434ull, 3394640298540490022ull}}, {{4460831665075419169ull, 2829726236069038561ull, 7809625300442144735ull, 4243300373175612528ull}}, {{14317234836740606741ull, 8686107925184230956ull, 4881015812776340459ull, 2652062733234757830ull}}, {{17896543545925758426ull, 6245948888052900791ull, 15324641802825201382ull, 3315078416543447287ull}}, {{17758993413979810128ull, 17030808146920901797ull, 14544116235104113823ull, 4143848020679309109ull}}, {{13405213892951075282ull, 17561784119466645479ull, 11395915656153765091ull, 2589905012924568193ull}}, {{12144831347761456199ull, 17340544130905918945ull, 409836514910042652ull, 3237381266155710242ull}}, {{1345981129419656536ull, 3228936089922847066ull, 9735667680492329124ull, 4046726582694637802ull}}, {{5452924224314673239ull, 11241457093056555224ull, 10696478318735093606ull, 2529204114184148626ull}}, {{6816155280393341549ull, 4828449329465918222ull, 4147225861564091200ull, 3161505142730185783ull}}, {{17743566137346452744ull, 6035561661832397777ull, 572346308527726096ull, 3951881428412732229ull}}, {{4172199808200451109ull, 3772226038645248611ull, 2663559452043522762ull, 2469925892757957643ull}}, {{603563741823175983ull, 13938654585161336572ull, 17164507370336567164ull, 3087407365947447053ull}}, {{754454677278969978ull, 17423318231451670715ull, 7620576157638545243ull, 3859259207434308817ull}}, {{16612435237795213901ull, 8583730885443600244ull, 16292075144592560537ull, 2412037004646443010ull}}, {{2318799973534465760ull, 15341349625231888210ull, 11141721893885924863ull, 3015046255808053763ull}}, {{12121872003772858007ull, 14565001013112472358ull, 9315466348930018175ull, 3768807819760067204ull}}, {{2964483983930648351ull, 16020654660836377080ull, 15045538504936037167ull, 2355504887350042002ull}}, {{3705604979913310438ull, 15414132307618083446ull, 9583551094315270651ull, 2944381109187552503ull}}, {{13855378261746413856ull, 14655979366095216403ull, 7367752849466700410ull, 3680476386484440629ull}}, {{12707536808755629416ull, 9096602170764244696ull, 13821377080260763417ull, 4600595483105550786ull}}, {{7942210505472268385ull, 17214591402796122695ull, 13250046693590365039ull, 2875372176940969241ull}}, {{5316077113412947577ull, 16906553235067765465ull, 2727500311705792587ull, 3594215221176211552ull}}, {{11256782410193572375ull, 16521505525407318927ull, 3409375389632240734ull, 4492769026470264440ull}}, {{13953018034012064591ull, 5714254934952186425ull, 2130859618520150459ull, 2807980641543915275ull}}, {{3606214487232917026ull, 2531132650262845128ull, 16498632578432351786ull, 3509975801929894093ull}}, {{4507768109041146283ull, 12387287849683332218ull, 6788232667758276020ull, 4387469752412367617ull}}, {{7429041086578104331ull, 16965426942906858444ull, 15771860463417392272ull, 2742168595257729760ull}}, {{9286301358222630413ull, 2760039604924021439ull, 1268081505562188725ull, 3427710744072162201ull}}, {{6996190679350900113ull, 8061735524582414703ull, 6196787900380123810ull, 4284638430090202751ull}}, {{11290148202235394427ull, 9650270721291397093ull, 10790521465378659237ull, 2677899018806376719ull}}, {{277627197512079321ull, 16674524420041634271ull, 8876465813295936142ull, 3347373773507970899ull}}, {{14182092052172262863ull, 11619783488197267030ull, 6483896248192532274ull, 4184217216884963624ull}}, {{4252121514180276386ull, 11874050698550679798ull, 4052435155120332671ull, 2615135760553102265ull}}, {{14538523929580121290ull, 10230877354760961843ull, 9677229962327803743ull, 3268919700691377831ull}}, {{13561468893547763708ull, 8176910675023814400ull, 7484851434482366775ull, 4086149625864222289ull}}, {{8475918058467352318ull, 12028098199530965856ull, 16207247192619948994ull, 2553843516165138930ull}}, {{10594897573084190397ull, 5811750712558931512ull, 11035686953920160435ull, 3192304395206423663ull}}, {{13243621966355237997ull, 2653002372271276486ull, 9182922673972812640ull, 3990380494008029579ull}}, {{3665577710544635844ull, 1658126482669547804ull, 3433483662019313948ull, 2493987808755018487ull}}, {{4581972138180794805ull, 2072658103336934755ull, 18126912632806306147ull, 3117484760943773108ull}}, {{1115779154298605602ull, 16425880684453332156ull, 4211896717298331067ull, 3896855951179716386ull}}, {{9920734008291404309ull, 7960332418569638645ull, 7244121466738844821ull, 2435534969487322741ull}}, {{17012603528791643291ull, 14562101541639436210ull, 13666837851850943930ull, 3044418711859153426ull}}, {{12042382374134778305ull, 8979254890194519455ull, 7860175277958904105ull, 3805523389823941783ull}}, {{14444018011475318297ull, 17141249352440044419ull, 11830138576365396921ull, 2378452118639963614ull}}, {{13443336495916759967ull, 7591503635267891812ull, 5564301183601970344ull, 2973065148299954518ull}}, {{16804170619895949959ull, 9489379544084864765ull, 16178748516357238738ull, 3716331435374943147ull}}, {{12808449646648662676ull, 10542548233480428382ull, 7805874813509580259ull, 2322707147109339467ull}}, {{6787190021456052537ull, 8566499273423147574ull, 5145657498459587420ull, 2903383933886674334ull}}, {{17707359563674841480ull, 10708124091778934467ull, 15655443909929260083ull, 3629229917358342917ull}}, {{17522513436166163945ull, 8773469096296280180ull, 5734246832129411392ull, 4536537396697928647ull}}, {{1728198860749076658ull, 5483418185185175113ull, 10501433297721963976ull, 2835335872936205404ull}}, {{6771934594363733726ull, 6854272731481468891ull, 13126791622152454970ull, 3544169841170256755ull}}, {{3853232224527279254ull, 17791212951206611922ull, 11796803509263180808ull, 4430212301462820944ull}}, {{7019956158756937438ull, 11119508094504132451ull, 7373002193289488005ull, 2768882688414263090ull}}, {{4163259180018783893ull, 64327062848001852ull, 18439624778466635815ull, 3461103360517828862ull}}, {{5204073975023479866ull, 13915466883842166027ull, 13826158936228518960ull, 4326379200647286078ull}}, {{946703225175980965ull, 8697166802401353767ull, 4029663316715436446ull, 2703987000404553799ull}}, {{15018437086752139918ull, 1648086466146916400ull, 425393127466907654ull, 3379983750505692249ull}}, {{326302284730623281ull, 11283480119538421309ull, 5143427427761022471ull, 4224979688132115311ull}}, {{2509781937170333503ull, 13969704102352595174ull, 10132171169991720900ull, 2640612305082572069ull}}, {{12360599458317692686ull, 17462130127940743967ull, 17276899980917039029ull, 3300765381353215086ull}}, {{10839063304469727954ull, 7992604604643766247ull, 12372752939291522979ull, 4125956726691518858ull}}, {{13691943592934661827ull, 2689534868688659952ull, 12344656605484589766ull, 2578722954182199286ull}}, {{17114929491168327284ull, 12585290622715600748ull, 6207448720000961399ull, 3223403692727749108ull}}, {{2946917790250857489ull, 11119927259967113032ull, 7759310900001201749ull, 4029254615909686385ull}}, {{1841823618906785931ull, 9255797546693139597ull, 16378784358569220853ull, 2518284134943553990ull}}, {{6913965542060870317ull, 16181432951793812400ull, 11250108411356750258ull, 3147855168679442488ull}}, {{8642456927576087897ull, 11003419152887489692ull, 14062635514195937823ull, 3934818960849303110ull}}, {{14624907616589830744ull, 13794665998195762913ull, 4177461177945073235ull, 2459261850530814444ull}}, {{4446076465455124717ull, 12631646479317315738ull, 5221826472431341544ull, 3074077313163518055ull}}, {{14780967618673681704ull, 15789558099146644672ull, 1915597072111789026ull, 3842596641454397569ull}}, {{9238104761671051065ull, 14480159830394040824ull, 12726463216138337901ull, 2401622900908998480ull}}, {{11547630952088813832ull, 4265141732710387318ull, 15908079020172922377ull, 3002028626136248100ull}}, {{5211166653256241482ull, 9943113184315372052ull, 1438354701506601355ull, 3752535782670310126ull}}, {{12480351195139926734ull, 3908602730983413580ull, 14734029743723789559ull, 2345334864168943828ull}}, {{15600438993924908418ull, 274067395301879071ull, 18417537179654736949ull, 2931668580211179785ull}}, {{14888862723978747618ull, 4954270262554736743ull, 9186863419286257474ull, 3664585725263974732ull}}, {{13999392386546046618ull, 15416209865048196737ull, 11483579274107821842ull, 4580732156579968415ull}}, {{1832091213950197281ull, 14246817184082510865ull, 14094766073958470507ull, 2862957597862480259ull}}, {{6901800035865134505ull, 13196835461675750677ull, 13006771574020700230ull, 3578696997328100324ull}}, {{13238936063258806035ull, 7272672290239912538ull, 16258464467525875288ull, 4473371246660125405ull}}, {{12886021057964141676ull, 4545420181399945336ull, 12467383301417366007ull, 2795857029162578378ull}}, {{16107526322455177095ull, 1070089208322543766ull, 6360857089916931701ull, 3494821286453222973ull}}, {{10911035866214195560ull, 5949297528830567612ull, 12562757380823552530ull, 4368526608066528716ull}}, {{16042769453238648033ull, 8329996973946492661ull, 17075095399869496139ull, 2730329130041580447ull}}, {{6218403761266146329ull, 5800810199005727923ull, 16732183231409482270ull, 3412911412551975559ull}}, {{3161318683155295008ull, 16474384785611935712ull, 16303543020834464933ull, 4266139265689969449ull}}, {{1975824176972059380ull, 12602333500221153772ull, 3272185360380458727ull, 2666337041056230906ull}}, {{2469780221215074225ull, 11141230856849054311ull, 13313603737330349217ull, 3332921301320288632ull}}, {{16922283331801006493ull, 91480515779154176ull, 16642004671662936522ull, 4166151626650360790ull}}, {{10576427082375629058ull, 4668861340789359264ull, 5789566901361947422ull, 2603844766656475494ull}}, {{13220533852969536323ull, 15059448712841474888ull, 16460330663557210085ull, 3254805958320594367ull}}, {{16525667316211920403ull, 4989252835769679898ull, 15963727311019124703ull, 4068507447900742959ull}}, {{14940228091059838156ull, 10035812049997131792ull, 16894858597028034795ull, 2542817154937964349ull}}, {{228541040115246079ull, 7933079044069026837ull, 7283515191002879782ull, 3178521443672455437ull}}, {{4897362318571445503ull, 692976768231507738ull, 13716080007180987632ull, 3973151804590569296ull}}, {{7672537467534541343ull, 433110480144692336ull, 8572550004488117270ull, 2483219877869105810ull}}, {{9590671834418176679ull, 9764760137035641228ull, 1492315468755370779ull, 3104024847336382263ull}}, {{11988339793022720849ull, 7594264152867163631ull, 15700452391226377186ull, 3880031059170477828ull}}, {{14410241398280282387ull, 9358101113969365173ull, 589410707661709933ull, 2425019411981548643ull}}, {{4177743692568189271ull, 16309312410889094371ull, 14571821439859301128ull, 3031274264976935803ull}}, {{610493597282848685ull, 1939896439901816348ull, 13603090781396738507ull, 3789092831221169754ull}}, {{9604930535156556236ull, 17353336339434492881ull, 13113617756800349470ull, 2368183019513231096ull}}, {{16617849187373083199ull, 12468298387438340293ull, 16392022196000436838ull, 2960228774391538870ull}}, {{6937253428934190287ull, 6362000947443149559ull, 11266655708145770240ull, 3700285967989423588ull}}, {{11253312420724950786ull, 3976250592151968474ull, 16265031854445882208ull, 2312678729993389742ull}}, {{4843268489051412674ull, 4970313240189960593ull, 11107917781202576952ull, 2890848412491737178ull}}, {{10665771629741653746ull, 6212891550237450741ull, 4661525189648445382ull, 3613560515614671473ull}}, {{17943900555604455087ull, 16989486474651589234ull, 10438592505487944631ull, 4516950644518339341ull}}, {{15826623865680172333ull, 17535958074298325127ull, 8829963325143659346ull, 2823094152823962088ull}}, {{15171593813672827512ull, 12696575556018130601ull, 11037454156429574183ull, 3528867691029952610ull}}, {{5129434211808870678ull, 11259033426595275348ull, 4573445658682191921ull, 4411084613787440763ull}}, {{12429268419235319982ull, 119366863980965236ull, 552560527462675999ull, 2756927883617150477ull}}, {{15536585524044149978ull, 13984266635258370257ull, 5302386677755732902ull, 3446159854521438096ull}}, {{5585673849773023760ull, 8256961257218187014ull, 6627983347194666128ull, 4307699818151797620ull}}, {{17326104211390303562ull, 5160600785761366883ull, 13365861628851442138ull, 2692312386344873512ull}}, {{17045944245810491549ull, 15674123019056484412ull, 16707327036064302672ull, 3365390482931091890ull}}, {{2860686233553562820ull, 1145909700111053900ull, 11660786758225602533ull, 4206738103663864863ull}}, {{11011300932825752570ull, 3022036571783102639ull, 14205520751532083439ull, 2629211314789915539ull}}, {{9152440147604802809ull, 17612603770011042011ull, 13145214920987716394ull, 3286514143487394424ull}}, {{6828864166078615607ull, 12792382675659026706ull, 16431518651234645493ull, 4108142679359243030ull}}, {{8879726122226522659ull, 10301082181500585643ull, 5658013138594265529ull, 2567589174599526894ull}}, {{6487971634355765419ull, 17488038745303119958ull, 16295888460097607719ull, 3209486468249408617ull}}, {{17333336579799482582ull, 17248362413201512043ull, 6534802519839845937ull, 4011858085311760772ull}}, {{8527492353160982662ull, 3862697480609863171ull, 13307623611754679519ull, 2507411303319850482ull}}, {{6047679423023840423ull, 216685832334941060ull, 7411157477838573591ull, 3134264129149813103ull}}, {{7559599278779800529ull, 14105915345700840037ull, 4652260828870829084ull, 3917830161437266379ull}}, {{7030592558451069283ull, 18039569127917800831ull, 601820008830574225ull, 2448643850898291487ull}}, {{4176554679636448699ull, 8714403354615087327ull, 14587333066320381494ull, 3060804813622864358ull}}, {{609007331118172970ull, 1669632156414083351ull, 9010794296045701060ull, 3826006017028580448ull}}, {{7298158609589939962ull, 10266892134613577902ull, 5631746435028563162ull, 2391253760642862780ull}}, {{18346070298842200761ull, 3610243131412196569ull, 7039683043785703953ull, 2989067200803578475ull}}, {{9097529818270587239ull, 9124489932692633616ull, 4187917786304742037ull, 3736334001004473094ull}}, {{5685956136419117025ull, 8008649217146589962ull, 16452506671722627485ull, 2335208750627795683ull}}, {{16330817207378672089ull, 14622497539860625356ull, 15953947321225896452ull, 2919010938284744604ull}}, {{1966777435513788495ull, 18278121924825781696ull, 1495690077822818949ull, 3648763672855930756ull}}, {{2458471794392235618ull, 9012594350750063408ull, 1869612597278523687ull, 4560954591069913445ull}}, {{1536544871495147261ull, 12550400496859871486ull, 3474350882512771256ull, 2850596619418695903ull}}, {{11144053126223709885ull, 15688000621074839357ull, 18177996658423127782ull, 3563245774273369878ull}}, {{95008352497473644ull, 10386628739488773389ull, 13499123786174133920ull, 4454057217841712348ull}}, {{2365223229524614980ull, 6491642962180483368ull, 17660324403213609508ull, 2783785761151070217ull}}, {{2956529036905768724ull, 8114553702725604210ull, 8240347448734848173ull, 3479732201438837772ull}}, {{12919033332986986713ull, 14754878146834393166ull, 10300434310918560216ull, 4349665251798547215ull}}, {{3462709814689478792ull, 9221798841771495729ull, 13355300471965181991ull, 2718540782374092009ull}}, {{8940073286789236394ull, 6915562533786981757ull, 2859067534674313777ull, 3398175977967615012ull}}, {{15786777626913933396ull, 13256139185661115100ull, 3573834418342892221ull, 4247719972459518765ull}}, {{643363979966432565ull, 10590930000251890890ull, 4539489520678001590ull, 2654824982787199228ull}}, {{10027577011812816514ull, 4015290463460087804ull, 5674361900847501988ull, 3318531228483999035ull}}, {{12534471264766020642ull, 5019113079325109755ull, 2481266357631989581ull, 4148164035604998794ull}}, {{5528201531265068950ull, 5442788683791887549ull, 6162477491947381392ull, 2592602522253124246ull}}, {{11521937932508724091ull, 6803485854739859436ull, 16926468901789002548ull, 3240753152816405307ull}}, {{14402422415635905113ull, 8504357318424824295ull, 16546400108808865281ull, 4050941441020506634ull}}, {{15919043037413522552ull, 16844438370083984944ull, 14953186086432928704ull, 2531838400637816646ull}}, {{1452059723057351574ull, 2608803888895429565ull, 9468110571186385073ull, 3164798000797270808ull}}, {{6426760672249077371ull, 7872690879546674860ull, 11835138213982981341ull, 3955997500996588510ull}}, {{13240097457010449165ull, 7226274808930365739ull, 2785275365311975434ull, 2472498438122867819ull}}, {{11938435802835673552ull, 18256215548017732982ull, 17316652261922133004ull, 3090623047653584773ull}}, {{5699672716689816132ull, 4373525361312614612ull, 7810757272120502544ull, 3863278809566980967ull}}, {{12785667484785910891ull, 2733453350820384132ull, 11799252322716395946ull, 2414549255979363104ull}}, {{15982084355982388614ull, 12640188725380255973ull, 14749065403395494932ull, 3018186569974203880ull}}, {{6142547389695822055ull, 15800235906725319967ull, 18436331754244368665ull, 3772733212467754850ull}}, {{10756621146200970640ull, 2957618414062243123ull, 16134393364830118320ull, 2357958257792346781ull}}, {{8834090414323825396ull, 3697023017577803904ull, 6332933650755484188ull, 2947447822240433477ull}}, {{11042613017904781745ull, 4621278771972254880ull, 12527853081871743139ull, 3684309777800541846ull}}, {{13803266272380977182ull, 1164912446537930696ull, 6436444315484903116ull, 4605387222250677308ull}}, {{8627041420238110739ull, 9951442315940982493ull, 13246149734032840255ull, 2878367013906673317ull}}, {{15395487793725026327ull, 7827616876498840212ull, 2722629112258886607ull, 3597958767383341647ull}}, {{797615668446731293ull, 5172835077196162362ull, 17238344445605771971ull, 4497448459229177058ull}}, {{5110195811206594962ull, 927178914033907524ull, 15385651296930995386ull, 2810905287018235661ull}}, {{6387744764008243703ull, 10382345679397160213ull, 5397006065881580520ull, 3513631608772794577ull}}, {{12596366973437692532ull, 12977932099246450266ull, 11357943600779363554ull, 4392039510965993221ull}}, {{12484415376825945737ull, 12722893580456419320ull, 9404557759700796173ull, 2745024694353745763ull}}, {{15605519221032432171ull, 2068558920288360438ull, 7144011181198607313ull, 3431280867942182204ull}}, {{10283526989435764406ull, 7197384668787838452ull, 8930013976498259141ull, 4289101084927727755ull}}, {{15650576405252128562ull, 6804208427206092984ull, 3275415726097718011ull, 2680688178079829847ull}}, {{1116476432855609086ull, 3893574515580228327ull, 17929327712904311226ull, 3350860222599787308ull}}, {{15230653596351675069ull, 14090340181330061216ull, 3964915567420837416ull, 4188575278249734136ull}}, {{9519158497719796919ull, 8806462613331288260ull, 2478072229638023385ull, 2617859548906083835ull}}, {{11898948122149746148ull, 15619764285091498229ull, 16932648342329692943ull, 3272324436132604793ull}}, {{1038627097405018973ull, 14913019337936984883ull, 7330752372629952467ull, 4090405545165755992ull}}, {{16790043000373994522ull, 7014794076996921599ull, 4581720232893720292ull, 2556503465728597495ull}}, {{16375867732040105249ull, 8768492596246151999ull, 1115464272689762461ull, 3195629332160746869ull}}, {{15858148646622743657ull, 15572301763735077903ull, 6006016359289590980ull, 3994536665200933586ull}}, {{16828871931780296642ull, 509316565479647881ull, 8365446242983382267ull, 2496585415750583491ull}}, {{7201031859443207090ull, 14471703762131723564ull, 5845121785301839929ull, 3120731769688229364ull}}, {{9001289824304008862ull, 4254571647382490743ull, 7306402231627299912ull, 3900914712110286705ull}}, {{12543335167831087395ull, 2659107279614056714ull, 16095716440835532205ull, 2438071695068929190ull}}, {{6455796922934083436ull, 7935570117944958797ull, 10896273514189639448ull, 3047589618836161488ull}}, {{12681432172094992199ull, 9919462647431198496ull, 13620341892737049310ull, 3809487023545201860ull}}, {{7925895107559370124ull, 1587978136217111156ull, 17736085719815431627ull, 2380929389715751162ull}}, {{9907368884449212655ull, 15820030725553552657ull, 12946735112914513725ull, 2976161737144688953ull}}, {{16995897123988903723ull, 5939980351659777109ull, 2348360835860978445ull, 3720202171430861192ull}}, {{12928278711706758779ull, 6018330729001054645ull, 1467725522413111528ull, 2325126357144288245ull}}, {{2325290334351284762ull, 7522913411251318307ull, 6446342921443777314ull, 2906407946430360306ull}}, {{16741670973221269664ull, 180269727209372075ull, 17281300688659497451ull, 3633009933037950382ull}}, {{16315402698099199176ull, 14060395214293878806ull, 12378253823969596005ull, 4541262416297437978ull}}, {{5585440667884611581ull, 11093590018147368206ull, 12348094658408385407ull, 2838289010185898736ull}}, {{16205172871710540284ull, 9255301504256822353ull, 15435118323010481759ull, 3547861262732373420ull}}, {{6421408034356011643ull, 6957440861893640038ull, 847153830053550583ull, 4434826578415466776ull}}, {{17848438076754670989ull, 11265929566324606879ull, 529471143783469114ull, 2771766611509666735ull}}, {{17698861577515950832ull, 4859039921050982791ull, 14496896985011500105ull, 3464708264387083418ull}}, {{17511890953467550636ull, 10685485919741116393ull, 8897749194409599323ull, 4330885330483854273ull}}, {{4027402818276137292ull, 4372585690624503794ull, 17090308292574469337ull, 2706803331552408920ull}}, {{14257625559699947423ull, 10077418131708017646ull, 2916141292008535055ull, 3383504164440511151ull}}, {{8598659912770158470ull, 7985086646207634154ull, 17480234670292832531ull, 4229380205550638938ull}}, {{9985848463908736948ull, 2684836144666077394ull, 15536832687360408236ull, 2643362628469149336ull}}, {{3258938543031145377ull, 3356045180832596743ull, 974296785490958679ull, 3304203285586436671ull}}, {{17908731234071095433ull, 18030114531322909640ull, 15052929037145862060ull, 4130254106983045838ull}}, {{11192957021294434646ull, 2045449545222042717ull, 4796394629788775884ull, 2581408816864403649ull}}, {{156138221335879595ull, 2556811931527553397ull, 10607179305663357759ull, 3226761021080504561ull}}, {{4806858795097237398ull, 17031072969691605458ull, 17870660150506585102ull, 4033451276350630701ull}}, {{7615972765363161278ull, 6032734587629865507ull, 13475005603280309641ull, 2520907047719144188ull}}, {{4908279938276563693ull, 12152604252964719788ull, 16843757004100387051ull, 3151133809648930235ull}}, {{6135349922845704616ull, 10579069297778511831ull, 16443010236698095910ull, 3938917262061162794ull}}, {{10752122729419647241ull, 2000232292684181990ull, 14888567416363697848ull, 2461823288788226746ull}}, {{4216781374919783244ull, 2500290365855227488ull, 9387337233599846502ull, 3077279110985283433ull}}, {{5270976718649729054ull, 12348734994173810168ull, 16345857560427196031ull, 3846598888731604291ull}}, {{3294360449156080659ull, 14635488398999713211ull, 7910317966053303567ull, 2404124305457252682ull}}, {{17953008616727264536ull, 13682674480322253609ull, 664525420711853651ull, 3005155381821565853ull}}, {{8606202715626916958ull, 12491657081975429108ull, 5442342794317204968ull, 3756444227276957316ull}}, {{14602248734121598907ull, 7807285676234643192ull, 12624836283303028913ull, 2347777642048098322ull}}, {{18252810917651998633ull, 14370793113720691894ull, 6557673317274010333ull, 2934722052560122903ull}}, {{13592641610210222484ull, 4128433336868701156ull, 3585405628165125013ull, 3668402565700153629ull}}, {{16990802012762778104ull, 9772227689513264349ull, 9093443053633794170ull, 4585503207125192036ull}}, {{12925094267190430267ull, 10719328324373178122ull, 14906773945375897164ull, 2865939504453245022ull}}, {{6932995797133262026ull, 13399160405466472653ull, 9410095394865095647ull, 3582424380566556278ull}}, {{13277930764843965437ull, 12137264488405702912ull, 2539247206726593751ull, 4478030475708195348ull}}, {{8298706728027478398ull, 14503319332894646176ull, 10810401541058896902ull, 2798769047317622092ull}}, {{10373383410034347997ull, 8905777129263531912ull, 13513001926323621128ull, 3498461309147027615ull}}, {{12966729262542934997ull, 11132221411579414890ull, 12279566389477138506ull, 4373076636433784519ull}}, {{12715891807516722277ull, 11569324400664522210ull, 14592258021064293422ull, 2733172897771115324ull}}, {{6671492722541127038ull, 5238283463975876955ull, 18240322526330366778ull, 3416466122213894155ull}}, {{3727679884749020894ull, 15771226366824622002ull, 18188717139485570568ull, 4270582652767367694ull}}, {{6941485946395525963ull, 9857016479265388751ull, 6756262193751093701ull, 2669114157979604809ull}}, {{4065171414567019549ull, 16932956617509123843ull, 13057013760616255030ull, 3336392697474506011ull}}, {{469778249781386533ull, 11942823735031628996ull, 11709581182342930884ull, 4170490871843132514ull}}, {{9516983442968142391ull, 16687636871249543930ull, 11930174257391719706ull, 2606556794901957821ull}}, {{2672857266855402181ull, 11636174052207154105ull, 1077659766457485921ull, 3258195993627447277ull}}, {{7952757601996640630ull, 710159509976778919ull, 5958760726499245306ull, 4072744992034309096ull}}, {{11888002528888982250ull, 5055535712162874728ull, 3724225454062028316ull, 2545465620021443185ull}}, {{14860003161111227812ull, 6319419640203593410ull, 9266967836004923299ull, 3181832025026803981ull}}, {{9351631914534258957ull, 3287588531827103859ull, 16195395813433542028ull, 3977290031283504976ull}}, {{3538926937370217896ull, 11278114869246715720ull, 10122122383395963767ull, 2485806269552190610ull}}, {{4423658671712772370ull, 9485957568131006746ull, 3429280942390178901ull, 3107257836940238263ull}}, {{14752945376495741271ull, 16469132978591146336ull, 18121659233269887338ull, 3884072296175297828ull}}, {{9220590860309838294ull, 14904894130046854364ull, 2102664983938903778ull, 2427545185109561143ull}}, {{11525738575387297868ull, 9407745625703792147ull, 16463389285205793435ull, 3034431481386951428ull}}, {{9795487200806734431ull, 7147996013702352280ull, 2132492532797690178ull, 3793039351733689286ull}}, {{6122179500504209019ull, 9079183526991358079ull, 15167865888280720073ull, 2370649594833555803ull}}, {{3041038357202873370ull, 15960665427166585503ull, 14348146341923512187ull, 2963311993541944754ull}}, {{17636356001785755424ull, 15339145765530843974ull, 8711810890549614426ull, 3704139991927430943ull}}, {{6411036482688709236ull, 14198652121884165388ull, 12362410834234590872ull, 2315087494954644339ull}}, {{8013795603360886545ull, 17748315152355206735ull, 10841327524365850686ull, 2893859368693305424ull}}, {{5405558485773720278ull, 12962021903589232611ull, 13551659405457313358ull, 3617324210866631780ull}}, {{2145262088789762443ull, 6979155342631764956ull, 16939574256821641698ull, 4521655263583289725ull}}, {{10564160842348377335ull, 8973658107572241001ull, 12893076919727220013ull, 2826034539739556078ull}}, {{17816887071362859573ull, 15828758652892689155ull, 6892974112804249208ull, 3532543174674445098ull}}, {{17659422820776186562ull, 1339204242406309828ull, 17839589677860087319ull, 4415678968343056372ull}}, {{1813767226130340793ull, 7754531679145025499ull, 1926371511807778766ull, 2759799355214410233ull}}, {{16102267087945089703ull, 469792562076506065ull, 7019650408187111362ull, 3449749194018012791ull}}, {{6292775804649198417ull, 9810612739450408390ull, 4162876991806501298ull, 4312186492522515989ull}}, {{17768042933187912723ull, 10743318980583893147ull, 4907641129092757263ull, 2695116557826572493ull}}, {{17598367648057503000ull, 8817462707302478530ull, 10746237429793334483ull, 3368895697283215616ull}}, {{12774587523217102941ull, 6410142365700710259ull, 13432796787241668104ull, 4211119621604019520ull}}, {{5678274192796995386ull, 4006338978562943912ull, 8395497992026042565ull, 2631949763502512200ull}}, {{7097842740996244233ull, 9619609741631067794ull, 10494372490032553206ull, 3289937204378140250ull}}, {{18095675463100081099ull, 2801140140184058934ull, 3894593575685915700ull, 4112421505472675313ull}}, {{6698111146010162783ull, 10974084624469812642ull, 13963336030872167072ull, 2570263440920422070ull}}, {{17596010969367479287ull, 13717605780587265802ull, 8230798001735433032ull, 3212829301150527588ull}}, {{12771641674854573300ull, 17147007225734082253ull, 10288497502169291290ull, 4016036626438159485ull}}, {{10288119055997802265ull, 15328565534511189312ull, 8736153948069501008ull, 2510022891523849678ull}}, {{12860148819997252831ull, 713962844429435024ull, 1696820398232100453ull, 3137528614404812098ull}}, {{16075186024996566039ull, 5504139573964181684ull, 11344397534644901374ull, 3921910768006015122ull}}, {{823619228768077966ull, 17275145289009777265ull, 11701934477580451262ull, 2451194230003759451ull}}, {{5641210054387485362ull, 12370559574407445773ull, 10015732078548176174ull, 3063992787504699314ull}}, {{11663198586411744606ull, 6239827431154531408ull, 3296293061330444410ull, 3829990984380874143ull}}, {{7289499116507340379ull, 8511578162898970034ull, 8977712190972609612ull, 2393744365238046339ull}}, {{18335245932488951282ull, 10639472703623712542ull, 6610454220288374111ull, 2992180456547557924ull}}, {{13695685378756413294ull, 8687654861102252774ull, 8263067775360467639ull, 3740225570684447405ull}}, {{3948117343295370405ull, 12347313315829989840ull, 7470260368813986226ull, 2337640981677779628ull}}, {{4935146679119213006ull, 6210769607932711492ull, 9337825461017482783ull, 2922051227097224535ull}}, {{6168933348899016257ull, 3151775991488501461ull, 7060595807844465575ull, 3652564033871530669ull}}, {{12322852704551158226ull, 17774778044642790538ull, 13437430778232969872ull, 4565705042339413336ull}}, {{12313468958771861795ull, 11109236277901744086ull, 8398394236395606170ull, 2853565651462133335ull}}, {{6168464161610051436ull, 4663173310522404300ull, 5886306777067119809ull, 3566957064327666669ull}}, {{7710580202012564295ull, 10440652656580393279ull, 11969569489761287665ull, 4458696330409583336ull}}, {{11736641653898934540ull, 18054622956431215559ull, 7480980931100804790ull, 2786685206505989585ull}}, {{10059116048946280271ull, 13344906658684243641ull, 13962912182303393892ull, 3483356508132486981ull}}, {{17185581079610238243ull, 16681133323355304551ull, 3618582172597078653ull, 4354195635165608727ull}}, {{17658517202397480758ull, 12731551336310759296ull, 9179142885514256014ull, 2721372271978505454ull}}, {{3626402429287299331ull, 6691067133533673313ull, 2250556570038044210ull, 3401715339973131818ull}}, {{9144689055036512068ull, 17587205953771867449ull, 12036567749402331070ull, 4252144174966414772ull}}, {{17244645705466289803ull, 6380317702680029251ull, 16746226880231232727ull, 2657590109354009232ull}}, {{16944121113405474349ull, 3363711109922648660ull, 2486039526579489293ull, 3321987636692511541ull}}, {{2733407318047291321ull, 8816324905830698730ull, 7719235426651749520ull, 4152484545865639426ull}}, {{6320065592206944980ull, 5510203066144186706ull, 9436208160084731354ull, 2595302841166024641ull}}, {{17123454027113457032ull, 16111125869535009190ull, 16406946218533302096ull, 3244128551457530801ull}}, {{12180945497037045482ull, 1692163263209209872ull, 6673624717884463909ull, 4055160689321913502ull}}, {{7613090935648153427ull, 3363445048719450122ull, 18006073503959953655ull, 2534475430826195938ull}}, {{292991632705415975ull, 18039364366181476365ull, 13284219843095166260ull, 3168094288532744923ull}}, {{4977925559309157873ull, 4102461384017293840ull, 11993588785441569922ull, 3960117860665931154ull}}, {{3111203474568223671ull, 7175724383438196554ull, 12107679009328369105ull, 2475073662916206971ull}}, {{13112376380065055396ull, 13581341497725133596ull, 10522912743233073477ull, 3093842078645258714ull}}, {{16390470475081319245ull, 3141618816874253283ull, 3930268892186566039ull, 3867302598306573393ull}}, {{7938201037712130576ull, 8881040788187490158ull, 13985633103685073534ull, 2417064123941608370ull}}, {{699379260285387412ull, 1877928948379586890ull, 8258669342751566110ull, 3021330154927010463ull}}, {{10097596112211510073ull, 11570783222329259420ull, 5711650660012069733ull, 3776662693658763079ull}}, {{15534369606986969604ull, 9537582523169481089ull, 10487310690148625439ull, 2360414183536726924ull}}, {{5582903953451548293ull, 7310292135534463458ull, 13109138362685781799ull, 2950517729420908655ull}}, {{16202001978669211174ull, 4526179150990691418ull, 11774736934929839345ull, 3688147161776135819ull}}, {{11029130436481738159ull, 10269409957165752177ull, 10106735150234911277ull, 4610183952220169774ull}}, {{18422421568869556110ull, 8724224232442289062ull, 1705023450469431644ull, 2881364970137606109ull}}, {{13804654924232169329ull, 10905280290552861328ull, 6742965331514177459ull, 3601706212672007636ull}}, {{17255818655290211661ull, 9019914344763688756ull, 8428706664392721824ull, 4502132765840009545ull}}, {{1561514622701606481ull, 5637446465477305473ull, 16797156711313920900ull, 2813832978650005965ull}}, {{6563579296804396005ull, 7046808081846631841ull, 7161387833860237413ull, 3517291223312507457ull}}, {{12816160139432882910ull, 13420196120735677705ull, 13563420810752684670ull, 4396614029140634321ull}}, {{1092571059504469963ull, 3775936557032410662ull, 1559608979079346063ull, 2747883768212896451ull}}, {{10589085861235363261ull, 108234677863125423ull, 15784569279131346291ull, 3434854710266120563ull}}, {{8624671308116816172ull, 13970351402611070491ull, 15119025580486794959ull, 4293568387832650704ull}}, {{3084576558359316156ull, 15648998654273000913ull, 9449390987804246849ull, 2683480242395406690ull}}, {{8467406716376533099ull, 5726190262559087429ull, 2588366697900532754ull, 3354350302994258363ull}}, {{15195944413898054277ull, 16381109865053635094ull, 17070516427657829654ull, 4192937878742822953ull}}, {{4885779240258896020ull, 5626507647231134030ull, 3751543739645061678ull, 2620586174214264346ull}}, {{15330596087178395832ull, 16256506595893693345ull, 13912801711411102905ull, 3275732717767830432ull}}, {{5328187053690831078ull, 6485575189584952970ull, 17391002139263878632ull, 4094665897209788040ull}}, {{7941802926984157328ull, 4053484493490595606ull, 10869376337039924145ull, 2559166185756117525ull}}, {{703881621875420852ull, 9678541635290632412ull, 18198406439727293085ull, 3198957732195146906ull}}, {{879852027344276065ull, 16709863062540678419ull, 13524636012804340548ull, 3998697165243933633ull}}, {{16690808581586030205ull, 1220292377233148203ull, 1535368480361630987ull, 2499185728277458521ull}}, {{16251824708555149852ull, 15360423526823598966ull, 6530896618879426637ull, 3123982160346823151ull}}, {{11091408848839161507ull, 5365471353247334996ull, 3551934755171895393ull, 3904977700433528939ull}}, {{16155502567379251750ull, 14882634641848054132ull, 18360860286478292284ull, 2440611062770955586ull}}, {{1747634135514513071ull, 156549228600516050ull, 13727703321243089548ull, 3050763828463694483ull}}, {{11407914706247917147ull, 195686535750645062ull, 12547943133126474031ull, 3813454785579618104ull}}, {{2518260672977560313ull, 7039833112485235020ull, 7842464458204046269ull, 2383409240987261315ull}}, {{3147825841221950391ull, 13411477409033931679ull, 5191394554327669932ull, 2979261551234076644ull}}, {{17769840356809601701ull, 16764346761292414598ull, 6489243192909587415ull, 3724076939042595805ull}}, {{6494464204578613159ull, 17395245753448840980ull, 6361620004782186086ull, 2327548086901622378ull}}, {{8118080255723266449ull, 12520685154956275417ull, 17175397042832508416ull, 2909435108627027972ull}}, {{14759286338081470965ull, 15650856443695344271ull, 3022502229831083904ull, 3636793885783784966ull}}, {{13837421904174450802ull, 1116826480909628723ull, 13001499824143630689ull, 4545992357229731207ull}}, {{6342545680895337799ull, 12227231596636987712ull, 15043466417730851036ull, 2841245223268582004ull}}, {{7928182101119172249ull, 15284039495796234640ull, 357588948454012179ull, 3551556529085727506ull}}, {{9910227626398965311ull, 14493363351317905396ull, 9670358222422291032ull, 4439445661357159382ull}}, {{15417264303354129128ull, 9058352094573690872ull, 1432287870586543991ull, 2774653538348224614ull}}, {{824836305483109794ull, 6711254099789725687ull, 11013731875087955797ull, 3468316922935280767ull}}, {{14866103437136050954ull, 13000753643164545012ull, 9155478825432556842ull, 4335396153669100959ull}}, {{67942611355256038ull, 12737157045405228537ull, 12639703293536429882ull, 2709622596043188099ull}}, {{4696614282621457952ull, 6698074269901759863ull, 11187943098493149449ull, 3387028245053985124ull}}, {{1259081834849434536ull, 12984278855804587733ull, 13984928873116436811ull, 4233785306317481405ull}}, {{3092769155994590537ull, 5809331275664173381ull, 11046423554911466959ull, 2646115816448425878ull}}, {{8477647463420626075ull, 2649978076152828822ull, 4584657406784557891ull, 3307644770560532348ull}}, {{1373687292421006786ull, 17147530650473199740ull, 5730821758480697363ull, 4134555963200665435ull}}, {{10081926594617905049ull, 8411363647332055885ull, 1275920589836741900ull, 2584097477000415897ull}}, {{17214094261699769215ull, 10514204559165069856ull, 6206586755723315279ull, 3230121846250519871ull}}, {{3070873753415159903ull, 8531069680528949417ull, 3146547426226756195ull, 4037652307813149839ull}}, {{13448511141952944700ull, 3026075541116899433ull, 8884121169032804478ull, 2523532692383218649ull}}, {{2975580872159017162ull, 13005966463250900100ull, 15716837479718393501ull, 3154415865479023311ull}}, {{3719476090198771453ull, 2422400023781461413ull, 15034360831220603973ull, 3943019831848779139ull}}, {{4630515565587926110ull, 3819843024077107335ull, 7090632510299183531ull, 2464387394905486962ull}}, {{1176458438557519734ull, 163117761668996265ull, 18086662674728755222ull, 3080484243631858702ull}}, {{6082259066624287571ull, 9427269238941021139ull, 13384956306556168219ull, 3850605304539823378ull}}, {{1495568907426485780ull, 3586200265124444260ull, 12977283710024993041ull, 2406628315337389611ull}}, {{1869461134283107225ull, 9094436349832943229ull, 11609918619103853397ull, 3008285394171737014ull}}, {{6948512436281271935ull, 15979731455718566940ull, 5289026237025040938ull, 3760356742714671268ull}}, {{13566192309530570768ull, 14599018178251492241ull, 12529013434995426394ull, 2350222964196669542ull}}, {{3122682331631049747ull, 9025400685959589494ull, 6437894756889507185ull, 2937778705245836928ull}}, {{13126724951393587992ull, 15893436875876874771ull, 8047368446111883981ull, 3672223381557296160ull}}, {{11796720170814597086ull, 6031738039563929752ull, 10059210557639854977ull, 4590279226946620200ull}}, {{7372950106759123179ull, 15299051320795925855ull, 6287006598524909360ull, 2868924516841637625ull}}, {{4604501615021516070ull, 677070077285355703ull, 12470444266583524605ull, 3586155646052047031ull}}, {{1143941000349507183ull, 5458023615034082533ull, 10976369314802017852ull, 4482694557565058789ull}}, {{3020806134432135941ull, 12634636796251077391ull, 9166073830964955109ull, 2801684098478161743ull}}, {{17611065723322333639ull, 1958237940031683026ull, 6845906270278805983ull, 3502105123097702179ull}}, {{12790460117298141240ull, 16282855480321767495ull, 3945696819421119574ull, 4377631403872127724ull}}, {{14911566600952420131ull, 5565098656773716780ull, 11689432548992975542ull, 2736019627420079827ull}}, {{192714177480973548ull, 16179745357821921784ull, 10000104667813831523ull, 3420024534275099784ull}}, {{240892721851216935ull, 15612995678850014326ull, 12500130834767289404ull, 4275030667843874730ull}}, {{13985616006439174297ull, 534750262426483145ull, 12424267790156943782ull, 2671894167402421706ull}}, {{3646961952766804159ull, 9891809864887879740ull, 6306962700841403919ull, 3339867709253027133ull}}, {{4558702440958505198ull, 7753076312682461771ull, 12495389394479142803ull, 4174834636566283916ull}}, {{543346016385371797ull, 2539829686212844655ull, 17032990408404240060ull, 2609271647853927447ull}}, {{14514240575763878458ull, 3174787107766055818ull, 16679551992077912171ull, 3261589559817409309ull}}, {{8919428682850072264ull, 17803541939989733485ull, 7014381934815226501ull, 4076986949771761637ull}}, {{7880485935994989117ull, 13433056721707277380ull, 6689831718473210515ull, 2548116843607351023ull}}, {{9850607419993736397ull, 12179634883706708821ull, 3750603629664125240ull, 3185146054509188779ull}}, {{16924945293419558400ull, 15224543604633386026ull, 76568518652768646ull, 3981432568136485974ull}}, {{15189776826814611904ull, 4903653734468478362ull, 13882913379440144116ull, 2488395355085303733ull}}, {{9763848996663489072ull, 6129567168085597953ull, 3518583669018016433ull, 3110494193856629667ull}}, {{16816497264256749244ull, 12273644978534385345ull, 18233287641554684253ull, 3888117742320787083ull}}, {{3592781762519386422ull, 9976871120797684793ull, 9089961766757983706ull, 2430073588950491927ull}}, {{9102663221576620931ull, 3247716864142330183ull, 6750766190020091729ull, 3037591986188114909ull}}, {{6766643008543388259ull, 8671332098605300633ull, 13050143755952502565ull, 3796989982735143636ull}}, {{15758366926408087422ull, 7725425570842006847ull, 17379711884325089911ull, 2373118739209464772ull}}, {{15086272639582721374ull, 5045095945125120655ull, 3277895781696810773ull, 2966398424011830966ull}}, {{14246154781051013813ull, 10918055949833788723ull, 13320741763975789274ull, 3707998030014788707ull}}, {{6598003728943189681ull, 11435470987073505856ull, 6019620593271174344ull, 2317498768759242942ull}}, {{8247504661178987102ull, 14294338733841882320ull, 16747897778443743738ull, 2896873460949053677ull}}, {{10309380826473733877ull, 8644551380447577092ull, 7099814167772515961ull, 3621091826186317097ull}}, {{12886726033092167346ull, 15417375243986859269ull, 13486453728143032855ull, 4526364782732896371ull}}, {{10360046779896298543ull, 16553388555132868899ull, 6123190570875701582ull, 2828977989208060232ull}}, {{8338372456442985275ull, 11468363657061310316ull, 7653988213594626978ull, 3536222486510075290ull}}, {{10422965570553731594ull, 5112082534471862087ull, 344113230138507915ull, 4420278108137594113ull}}, {{13431882509237164102ull, 889208574831219852ull, 11744285814905037207ull, 2762673817585996320ull}}, {{16789853136546455128ull, 14946568773821188527ull, 14680357268631296508ull, 3453342271982495400ull}}, {{16375630402255681006ull, 236466893566934043ull, 18350446585789120636ull, 4316677839978119250ull}}, {{7928925992196106677ull, 9371163845334109585ull, 16080715134545588301ull, 2697923649986324531ull}}, {{14522843508672521250ull, 16325640825095024885ull, 15489207899754597472ull, 3372404562482905664ull}}, {{4318496330558487850ull, 1960306957659229491ull, 914765800983695225ull, 4215505703103632081ull}}, {{393217197385360954ull, 12754406894605488192ull, 12100943671683279275ull, 2634691064439770050ull}}, {{491521496731701193ull, 11331322599829472336ull, 5902807552749323286ull, 3293363830549712563ull}}, {{614401870914626491ull, 4940781212932064612ull, 2766823422509266204ull, 4116704788187140704ull}}, {{9607373206176417365ull, 12311360294937316190ull, 1729264639068291377ull, 2572940492616962940ull}}, {{2785844470865745898ull, 1554142313389481526ull, 2161580798835364222ull, 3216175615771203675ull}}, {{12705677625436958181ull, 11166049928591627715ull, 16537034053826368989ull, 4020219519714004593ull}}, {{5635205506684404911ull, 9284624214583461274ull, 3418117256000398762ull, 2512637199821252871ull}}, {{16267378920210281947ull, 2382408231374550784ull, 18107704625282662165ull, 3140796499776566088ull}}, {{1887479576553300817ull, 7589696307645576385ull, 4187886707893776090ull, 3925995624720707611ull}}, {{12708889781414282771ull, 9355246210705873144ull, 311586183219916104ull, 2453747265450442257ull}}, {{15886112226767853464ull, 11694057763382341430ull, 5001168747452283034ull, 3067184081813052821ull}}, {{10634268246605041021ull, 5394200167373150980ull, 10863146952742741697ull, 3833980102266316026ull}}, {{15869789690982926447ull, 14900590150676689122ull, 11401152863891601464ull, 2396237563916447516ull}}, {{10613865076873882250ull, 178993614636309787ull, 14251441079864501831ull, 2995296954895559395ull}}, {{8655645327664964908ull, 14058800073577550946ull, 13202615331403239384ull, 3744121193619449244ull}}, {{10021464348217990972ull, 8786750045985969341ull, 17475006618981800423ull, 2340075746012155777ull}}, {{17138516453699876619ull, 6371751539055073772ull, 8008700218445086817ull, 2925094682515194722ull}}, {{2976401493415294157ull, 12576375442246230120ull, 787503236201582713ull, 3656368353143993403ull}}, {{3720501866769117697ull, 1885411247525623938ull, 14819437100534142104ull, 4570460441429991753ull}}, {{6936999685158086465ull, 1178382029703514961ull, 2344619160192756959ull, 2856537775893744846ull}}, {{13282935624874995985ull, 15308035592411557413ull, 12154145987095722006ull, 3570672219867181057ull}}, {{2768611475811581269ull, 9911672453659670959ull, 1357624428587488796ull, 4463340274833976322ull}}, {{8647911200023320149ull, 15418167320392070157ull, 5460201286294568401ull, 2789587671771235201ull}}, {{15421575018456538090ull, 5437651095207923984ull, 11436937626295598406ull, 3486984589714044001ull}}, {{830224699361120997ull, 16020435905864680789ull, 461113977587334295ull, 4358730737142555002ull}}, {{2824733446314394575ull, 16930301468806507349ull, 4899882254419471838ull, 2724206710714096876ull}}, {{8142602826320381123ull, 11939504799153358378ull, 6124852818024339798ull, 3405258388392621095ull}}, {{954881496045700595ull, 5701008962086922165ull, 3044380004103036844ull, 4256572985490776369ull}}, {{2902643944242256824ull, 12786502638159102161ull, 13431952548632867787ull, 2660358115931735230ull}}, {{8239990948730208934ull, 11371442279271489797ull, 7566568648936308926ull, 3325447644914669038ull}}, {{14911674704340149072ull, 4990930812234586438ull, 234838774315610350ull, 4156809556143336298ull}}, {{4708110671785205266ull, 16954389812928780236ull, 4758460252374644372ull, 2598005972589585186ull}}, {{5885138339731506582ull, 2746243192451423679ull, 15171447352323081274ull, 3247507465736981482ull}}, {{2744736906236995324ull, 12656176027419055407ull, 9740937153549075784ull, 4059384332171226853ull}}, {{8632989594039203934ull, 7910110017136909629ull, 8393928730181866317ull, 2537115207607016783ull}}, {{15402923010976392821ull, 14499323539848524940ull, 5880724894299944992ull, 3171394009508770979ull}}, {{806909690010939410ull, 18124154424810656176ull, 2739220099447543336ull, 3964242511885963724ull}}, {{504318556256837131ull, 11327596515506660110ull, 10935384599009490393ull, 2477651569928727327ull}}, {{9853770232175822222ull, 324437589101161425ull, 9057544730334475088ull, 3097064462410909159ull}}, {{16928898808647165682ull, 405546986376451781ull, 6710244894490705956ull, 3871330578013636449ull}}, {{12886404764618172503ull, 9476838903340058171ull, 15723118105125160982ull, 2419581611258522780ull}}, {{11496319937345327725ull, 2622676592320296906ull, 1207153557696899612ull, 3024477014073153476ull}}, {{5147027884826883848ull, 3278345740400371133ull, 1508941947121124515ull, 3780596267591441845ull}}, {{5522735437230496357ull, 18189867152246089622ull, 3248931726164396773ull, 2362872667244651153ull}}, {{16126791333392896254ull, 8902275885025448315ull, 8672850676132883871ull, 2953590834055813941ull}}, {{15546803148313732414ull, 6516158837854422490ull, 15452749363593492743ull, 3691988542569767426ull}}, {{14328437986123470663ull, 10990128301300095912ull, 14269654370673320868ull, 2307492839106104641ull}}, {{17910547482654338328ull, 13737660376625119890ull, 4002009908059487373ull, 2884366048882630802ull}}, {{13164812316463147102ull, 3337017415499236151ull, 14225884421929135025ull, 3605457561103288502ull}}, {{11844329377151545974ull, 8782957787801433093ull, 8558983490556642973ull, 4506821951379110628ull}}, {{9708548869933410186ull, 7795191626589589635ull, 14572736718452677666ull, 2816763719611944142ull}}, {{7524000068989374828ull, 520617496382211236ull, 8992548861211071275ull, 3520954649514930178ull}}, {{9405000086236718535ull, 14485829925759927757ull, 2017314039659063285ull, 4401193311893662723ull}}, {{8183968063111643037ull, 11359486712813648800ull, 17401722339282772217ull, 2750745819933539201ull}}, {{10229960078889553796ull, 364300335734897288ull, 7917094868821301560ull, 3438432274916924002ull}}, {{12787450098611942244ull, 455375419668621610ull, 672996549171851142ull, 4298040343646155003ull}}, {{12603842330059851807ull, 14119667692575052218ull, 16561523907728264627ull, 2686275214778846876ull}}, {{6531430875720038950ull, 13037898597291427369ull, 2255160810950779168ull, 3357844018473558596ull}}, {{12775974613077436592ull, 16297373246614284211ull, 2818951013688473960ull, 4197305023091948245ull}}, {{5679141123959703918ull, 10185858279133927632ull, 4067687392768990177ull, 2623315639432467653ull}}, {{7098926404949629898ull, 17344008867344797444ull, 9696295259388625625ull, 3279144549290584566ull}}, {{8873658006187037372ull, 7844953028898833093ull, 2896997037381006224ull, 4098930686613230708ull}}, {{7851879263080592310ull, 4903095643061770683ull, 11033995185217904698ull, 2561831679133269192ull}}, {{5203163060423352483ull, 15352241590681989162ull, 13792493981522380872ull, 3202289598916586490ull}}, {{15727325862383966411ull, 743557914642934836ull, 8017245440048200283ull, 4002861998645733113ull}}, {{606206627135203199ull, 16605624761147691937ull, 16539993446098594936ull, 2501788749153583195ull}}, {{5369444302346391903ull, 2310286877725063305ull, 16063305789195855767ull, 3127235936441978994ull}}, {{11323491396360377783ull, 16722916652438492843ull, 10855760199640043900ull, 3909044920552473743ull}}, {{4771339113511542162ull, 1228450870919282219ull, 13702379152416109294ull, 2443153075345296089ull}}, {{1352487873462039799ull, 10758935625503878582ull, 3292915885237972905ull, 3053941344181620112ull}}, {{10913981878682325556ull, 18060355550307236131ull, 4116144856547466131ull, 3817426680227025140ull}}, {{4515395664962759521ull, 8981879209728328630ull, 11795962572196942140ull, 2385891675141890712ull}}, {{14867616618058225209ull, 11227349012160410787ull, 14744953215246177675ull, 2982364593927363390ull}}, {{13972834754145393607ull, 9422500246773125580ull, 9207819482202946286ull, 3727955742409204238ull}}, {{17956393758195646813ull, 1277376635805815583ull, 1143201157949453525ull, 2329972339005752649ull}}, {{17833806179317170612ull, 6208406813184657383ull, 6040687465864204810ull, 2912465423757190811ull}}, {{17680571705719075361ull, 16983880553335597537ull, 2939173313902868108ull, 3640581779696488514ull}}, {{8265656576866680489ull, 2783106617959945306ull, 12897338679233360944ull, 4550727224620610642ull}}, {{9777721378969063210ull, 1739441636224965816ull, 12672522692948238494ull, 2844204515387881651ull}}, {{12222151723711329012ull, 11397674082135983078ull, 11228967347757910213ull, 3555255644234852064ull}}, {{6054317617784385457ull, 412034547387815136ull, 14036209184697387767ull, 4444069555293565080ull}}, {{3783948511115240911ull, 7175050619758466316ull, 8772630740435867354ull, 2777543472058478175ull}}, {{4729935638894051138ull, 18192185311552858703ull, 6354102407117446288ull, 3471929340073097719ull}}, {{1300733530190176019ull, 4293487565731521763ull, 3330941990469419957ull, 4339911675091372149ull}}, {{16953859520864717676ull, 4989272737795895053ull, 4387681753257081425ull, 2712444796932107593ull}}, {{7357266345798733383ull, 10848276940672256721ull, 10096288209998739685ull, 3390555996165134491ull}}, {{13808268950675804632ull, 18172032194267708805ull, 8008674244071036702ull, 4238194995206418114ull}}, {{10936011103386071847ull, 6745834102989930099ull, 9617107420971785843ull, 2648871872004011321ull}}, {{9058327860805201905ull, 3820606610310024720ull, 16633070294642120208ull, 3311089840005014151ull}}, {{11322909826006502381ull, 4775758262887530900ull, 16179651849875262356ull, 4138862300006267689ull}}, {{16300190678108839796ull, 12208220951159482620ull, 3194753378530957116ull, 2586788937503917306ull}}, {{1928494273926498129ull, 15260276188949353276ull, 13216813760018472203ull, 3233486171879896632ull}}, {{2410617842408122661ull, 14463659217759303691ull, 16521017200023090254ull, 4041857714849870790ull}}, {{17647537216000934328ull, 4428100992672176902ull, 5713949731587043505ull, 2526161071781169244ull}}, {{12836049483146392101ull, 10146812259267609032ull, 7142437164483804381ull, 3157701339726461555ull}}, {{16045061853932990127ull, 17295201342511899194ull, 4316360437177367572ull, 3947126674658076944ull}}, {{14639849677135506733ull, 1586128802215161188ull, 2697725273235854733ull, 2466954171661298090ull}}, {{18299812096419383417ull, 6594347021196339389ull, 12595528628399594224ull, 3083692714576622612ull}}, {{9039707065242065559ull, 8242933776495424237ull, 15744410785499492780ull, 3854615893220778265ull}}, {{7955659924989984926ull, 14375205647164415956ull, 2922727713296101131ull, 2409134933262986416ull}}, {{9944574906237481158ull, 13357321040528132041ull, 3653409641620126414ull, 3011418666578733020ull}}, {{17042404651224239351ull, 7473279263805389243ull, 4566762052025158018ull, 3764273333223416275ull}}, {{8345659897801455643ull, 9282485558305756181ull, 548383273302029809ull, 2352670833264635172ull}}, {{15043760890679207457ull, 16214792966309583130ull, 685479091627537261ull, 2940838541580793965ull}}, {{9581329076494233513ull, 6433433152604815201ull, 5468534882961809481ull, 3676048176975992456ull}}, {{16588347364045179795ull, 12653477459183406905ull, 6835668603702261851ull, 4595060221219990570ull}}, {{3450188074887155516ull, 5602580402775935364ull, 8883978895741301561ull, 2871912638262494106ull}}, {{4312735093608944395ull, 11614911521897307109ull, 1881601582821851143ull, 3589890797828117633ull}}, {{10002604885438568398ull, 9906953383944245982ull, 6963687996954701833ull, 4487363497285147041ull}}, {{1639942034971717345ull, 17721060911033623499ull, 15881520044165158405ull, 2804602185803216900ull}}, {{15884985598996810393ull, 8316268083509865661ull, 1405155981496896391ull, 3505752732254021126ull}}, {{6021173943463849279ull, 5783649085959944173ull, 10979817013725896297ull, 4382190915317526407ull}}, {{6069076723878599752ull, 15143995724793434868ull, 13779914661219767041ull, 2738869322073454004ull}}, {{7586345904848249689ull, 5094936600709629873ull, 17224893326524708802ull, 3423586652591817505ull}}, {{14094618399487700016ull, 15592042787741813149ull, 7696058602873722290ull, 4279483315739771882ull}}, {{11114979508893506462ull, 14356712760766021122ull, 9421722645223464335ull, 2674677072337357426ull}}, {{4670352349262107269ull, 13334204932530138499ull, 2553781269674554611ull, 3343346340421696783ull}}, {{1226254418150246183ull, 12056070147235285220ull, 17027284642375356976ull, 4179182925527120978ull}}, {{9989781048198679672ull, 7535043842022053262ull, 15253738919911986014ull, 2611989328454450611ull}}, {{3263854273393573782ull, 195432765672790770ull, 14455487631462594614ull, 3264986660568063264ull}}, {{13303189878596743036ull, 9467662993945764270ull, 18069359539328243267ull, 4081233325710079080ull}}, {{3702807655695576494ull, 3611446362002408717ull, 11293349712080152042ull, 2550770828568799425ull}}, {{9240195588046858521ull, 13737679989357786704ull, 281629084818026340ull, 3188463535710999282ull}}, {{11550244485058573151ull, 17172099986697233380ull, 9575408392877308733ull, 3985579419638749102ull}}, {{16442274840016384027ull, 13038405500899464814ull, 1372944227120930054ull, 2490987137274218189ull}}, {{11329471513165704226ull, 7074634839269555210ull, 6327866302328550472ull, 3113733921592772736ull}}, {{4938467354602354475ull, 8843293549086944013ull, 7909832877910688090ull, 3892167401990965920ull}}, {{5392385105840165499ull, 10138744486606727912ull, 4943645548694180056ull, 2432604626244353700ull}}, {{6740481382300206873ull, 12673430608258409890ull, 6179556935867725070ull, 3040755782805442125ull}}, {{17648973764730034400ull, 6618416223468236554ull, 12336132188262044242ull, 3800944728506802656ull}}, {{15642294621383659404ull, 8748196158095035750ull, 7710082617663777651ull, 2375590455316751660ull}}, {{10329496239874798447ull, 6323559179191406784ull, 9637603272079722064ull, 2969488069145939575ull}}, {{12911870299843498058ull, 7904448973989258480ull, 7435318071672264676ull, 3711860086432424469ull}}, {{8069918937402186287ull, 14163652645598062358ull, 6952916804008859374ull, 2319912554020265293ull}}, {{864026634897957050ull, 8481193770142802140ull, 13302832023438462122ull, 2899890692525331616ull}}, {{1080033293622446313ull, 1378120175823726867ull, 16628540029298077653ull, 3624863365656664520ull}}, {{15185099672310221603ull, 6334336238207046487ull, 2338930962913045450ull, 4531079207070830651ull}}, {{16408216322834970358ull, 8570646167306791958ull, 17602732916316511070ull, 2831924504419269156ull}}, {{11286898366688937139ull, 1489935672278714140ull, 3556672071686087222ull, 3539905630524086446ull}}, {{14108622958361171424ull, 11085791627203168483ull, 13669212126462384835ull, 4424882038155108057ull}}, {{6512046339762038188ull, 4622776757788286350ull, 1625728551397908666ull, 2765551273846942536ull}}, {{17363429961557323543ull, 15001842984090133745ull, 2032160689247385832ull, 3456939092308678170ull}}, {{7869229396664490717ull, 305559656403115566ull, 11763572898414008099ull, 4321173865385847712ull}}, {{306582354487918794ull, 16331875849747804893ull, 7352233061508755061ull, 2700733665866154820ull}}, {{4994913961537286397ull, 6579786756902592404ull, 9190291326885943827ull, 3375917082332693525ull}}, {{6243642451921607996ull, 3613047427700852601ull, 16099550177034817688ull, 4219896352915866906ull}}, {{15431491578519474757ull, 2258154642313032875ull, 14673904879074148959ull, 2637435220572416816ull}}, {{14677678454721955543ull, 16657751358173454806ull, 18342381098842686198ull, 3296794025715521020ull}}, {{9123726031547668620ull, 11598817160862042700ull, 4481232299843806132ull, 4120992532144401276ull}}, {{14925700806572068696ull, 16472632762393552495ull, 12024142224257154640ull, 2575620332590250797ull}}, {{14045439989787697966ull, 2144046879282389003ull, 1195119725039279589ull, 3219525415737813497ull}}, {{12945113968807234553ull, 7291744617530374158ull, 6105585674726487390ull, 4024406769672266871ull}}, {{3479010212077133692ull, 18392398441238647561ull, 10733520074345136474ull, 2515254231045166794ull}}, {{8960448783523805019ull, 13767126014693533643ull, 4193528056076644785ull, 3144067788806458493ull}}, {{6588874960977368369ull, 3373849463084753342ull, 9853596088523193886ull, 3930084736008073116ull}}, {{17953104905893018943ull, 15943713969710134550ull, 15381869592181771986ull, 2456302960005045697ull}}, {{13218009095511497870ull, 10706270425282892380ull, 5392278934945051271ull, 3070378700006307122ull}}, {{16522511369389372338ull, 8771152013176227571ull, 15963720705536089897ull, 3837973375007883902ull}}, {{8020726596654663759ull, 17011185054303611992ull, 5365639422532668281ull, 2398733359379927439ull}}, {{10025908245818329699ull, 7428923262597351278ull, 2095363259738447448ull, 2998416699224909299ull}}, {{3309013270418136316ull, 9286154078246689098ull, 16454262129955223022ull, 3748020874031136623ull}}, {{6679819312438723102ull, 1192160280476792782ull, 17201442858863096245ull, 2342513046269460389ull}}, {{17573146177403179685ull, 6101886369023378881ull, 7666745518296706594ull, 2928141307836825487ull}}, {{8131374666471810894ull, 16850729998133999410ull, 4971745879443495338ull, 3660176634796031859ull}}, {{940846296234987809ull, 11840040460812723455ull, 1602996330876981269ull, 4575220793495039824ull}}, {{7505557962787949237ull, 9705868297221646111ull, 1001872706798113293ull, 2859512995934399890ull}}, {{4770261435057548642ull, 16744021389954445543ull, 10475712920352417424ull, 3574391244917999862ull}}, {{1351140775394547898ull, 2483282663733505313ull, 3871269113585745973ull, 4467989056147499828ull}}, {{12373678030690062197ull, 3857894674047134772ull, 11642915232845867041ull, 2792493160092187392ull}}, {{15467097538362577746ull, 9434054360986306369ull, 14553644041057333801ull, 3490616450115234240ull}}, {{5498813867671058470ull, 16404253969660270866ull, 18192055051321667251ull, 4363270562644042800ull}}, {{8048444685721799448ull, 7946815721823975339ull, 11370034407076042032ull, 2727044101652526750ull}}, {{5448869838724861406ull, 9933519652279969174ull, 4989170971990276732ull, 3408805127065658438ull}}, {{16034459335260852565ull, 12416899565349961467ull, 15459835751842621723ull, 4261006408832073047ull}}, {{7715694075324338901ull, 5454719219130031965ull, 16579926372542720433ull, 2663129005520045654ull}}, {{14256303612582811531ull, 11430085042339927860ull, 11501535928823624733ull, 3328911256900057068ull}}, {{17820379515728514413ull, 452548247642746113ull, 14376919911029530917ull, 4161139071125071335ull}}, {{4220208169689239652ull, 2588685663990410273ull, 15903103972034538679ull, 2600711919453169584ull}}, {{9886946230538937469ull, 17070915135270176553ull, 1432135891333621732ull, 3250889899316461981ull}}, {{16970368806601059741ull, 2891899845378169075ull, 6401855882594415070ull, 4063612374145577476ull}}, {{8300637494911968386ull, 15642495458643519384ull, 13224531963476285226ull, 2539757733840985922ull}}, {{10375796868639960482ull, 10329747286449623422ull, 7307292917490580725ull, 3174697167301232403ull}}, {{3746374048945174795ull, 17523870126489417182ull, 4522430128435838002ull, 3968371459126540504ull}}, {{16176541835872897959ull, 15564104847483273642ull, 2826518830272398751ull, 2480232161954087815ull}}, {{10997305257986346641ull, 14843445040926704149ull, 17368206593122662151ull, 3100290202442609768ull}}, {{18358317590910321205ull, 13942620282730992282ull, 3263514167693776073ull, 3875362753053262211ull}}, {{16085634512746338657ull, 1796608649065788320ull, 18180597419304467710ull, 2422101720658288881ull}}, {{1660299067223371705ull, 11469132848187011209ull, 8890688718848420925ull, 3027627150822861102ull}}, {{6687059852456602536ull, 501358004951600299ull, 1889988861705750349ull, 3784533938528576378ull}}, {{1873569398571682633ull, 2619191762308444139ull, 5792929056993481872ull, 2365333711580360236ull}}, {{16177019803496767003ull, 3273989702885555173ull, 7241161321241852340ull, 2956667139475450295ull}}, {{6386216699088795042ull, 4092487128606943967ull, 4439765633124927521ull, 3695833924344312869ull}}, {{10908914464571578757ull, 14087019501447809739ull, 5080696529916773652ull, 2309896202715195543ull}}, {{9024457062287085542ull, 17608774376809762174ull, 1739184643968579161ull, 2887370253393994429ull}}, {{2057199291004081120ull, 8175909915730039006ull, 6785666823388111856ull, 3609212816742493036ull}}, {{11794871150609877208ull, 10219887394662548757ull, 8482083529235139820ull, 4511516020928116295ull}}, {{9677637478344867207ull, 15610801658518868781ull, 12218831233413044243ull, 2819697513080072684ull}}, {{16708732866358471913ull, 14901816054721198072ull, 15273539041766305304ull, 3524621891350090855ull}}, {{2439172009238538275ull, 180525994691945975ull, 14480237783780493727ull, 4405777364187613569ull}}, {{8442011533415168278ull, 7030357774323548090ull, 2132619587221726723ull, 2753610852617258481ull}}, {{1329142379914184539ull, 4176261199477047209ull, 7277460502454546308ull, 3442013565771573101ull}}, {{6273113993320118578ull, 5220326499346309011ull, 13708511646495570789ull, 4302516957214466376ull}}, {{1614853236611380159ull, 5568547071305137084ull, 8567819779059731743ull, 2689073098259041485ull}}, {{2018566545764225199ull, 2348997820704033451ull, 15321460742252052583ull, 3361341372823801856ull}}, {{16358266237487445211ull, 16771305331162205525ull, 705081854105514112ull, 4201676716029752321ull}}, {{12529759407643347209ull, 10482065831976378453ull, 11969891204884416080ull, 2626047947518595200ull}}, {{1827141204272020299ull, 13102582289970473067ull, 14962364006105520100ull, 3282559934398244000ull}}, {{16118984560622189086ull, 16378227862463091333ull, 256210933922348509ull, 4103199917997805001ull}}, {{12380208359602562131ull, 12542235423253126035ull, 11689346879769937578ull, 2564499948748628125ull}}, {{10863574431075814759ull, 6454422242211631736ull, 776625544430258261ull, 3205624935935785157ull}}, {{13579468038844768449ull, 12679713821191927574ull, 5582467948965210730ull, 4007031169919731446ull}}, {{3875481505850592377ull, 12536507156672342638ull, 17324100523385420418ull, 2504394481199832153ull}}, {{14067723919168016279ull, 6447261908985652489ull, 7820067598949611811ull, 3130493101499790192ull}}, {{3749596843677856636ull, 3447391367804677708ull, 9775084498687014764ull, 3913116376874737740ull}}, {{11566870064153436206ull, 11377991641732699375ull, 15332799848534160035ull, 2445697735546711087ull}}, {{9846901561764407353ull, 9610803533738486315ull, 14554313792240312140ull, 3057122169433388859ull}}, {{7696940933778121287ull, 12013504417173107894ull, 13581206221873002271ull, 3821402711791736074ull}}, {{198902065183937901ull, 14425969288374274290ull, 13099939907098014323ull, 2388376694869835046ull}}, {{9471999618334698184ull, 13420775592040454958ull, 7151552847017742096ull, 2985470868587293808ull}}, {{2616627486063596922ull, 16775969490050568698ull, 8939441058772177620ull, 3731838585734117260ull}}, {{6247078197217135980ull, 1261608894426829628ull, 14810522698587386821ull, 2332399116083823287ull}}, {{7808847746521419975ull, 6188697136460924939ull, 13901467354806845622ull, 2915498895104779109ull}}, {{5149373664724387065ull, 16959243457430931982ull, 3541776138226393315ull, 3644373618880973887ull}}, {{15660089117760259639ull, 16587368303361277073ull, 18262278228065155356ull, 4555467023601217358ull}}, {{2870026670959080419ull, 1143733152746022363ull, 6802237874113334194ull, 2847166889750760849ull}}, {{17422591393981014235ull, 10653038477787303761ull, 13114483361069055646ull, 3558958612188451061ull}}, {{7943181187194104082ull, 4092926060379353894ull, 2558046146054155846ull, 4448698265235563827ull}}, {{352802223568927147ull, 16393136843019259896ull, 17739679905779705067ull, 2780436415772227391ull}}, {{441002779461158934ull, 15879735035346686966ull, 17562913863797243430ull, 3475545519715284239ull}}, {{9774625511181224475ull, 10626296757328582899ull, 17341956311319166384ull, 4344431899644105299ull}}, {{3803297935274571345ull, 6641435473330364312ull, 8532879685360785038ull, 2715269937277565812ull}}, {{4754122419093214181ull, 17525166378517731198ull, 10666099606700981297ull, 3394087421596957265ull}}, {{15166025060721293535ull, 8071399917865000285ull, 17944310526803614526ull, 4242609276996196581ull}}, {{11784608672164502411ull, 432938930238237274ull, 13521037088465953031ull, 2651630798122622863ull}}, {{5507388803350852206ull, 14376231718079960305ull, 12289610342155053384ull, 3314538497653278579ull}}, {{11495922022615953162ull, 17970289647599950381ull, 10750326909266428826ull, 4143173122066598224ull}}, {{9490794273348664678ull, 15843117048177356892ull, 6718954318291518016ull, 2589483201291623890ull}}, {{11863492841685830848ull, 1357152236512144499ull, 17622064934719173329ull, 3236854001614529862ull}}, {{10217680033679900655ull, 6308126314067568528ull, 12804209131544190853ull, 4046067502018162328ull}}, {{6386050021049937910ull, 6248421955505924282ull, 8002630707215119283ull, 2528792188761351455ull}}, {{17205934563167198195ull, 3198841425955017448ull, 5391602365591511200ull, 3160990235951689319ull}}, {{3060674130249446128ull, 3998551782443771811ull, 2127816938562001096ull, 3951237794939611649ull}}, {{18053822395901761494ull, 2499094864027357381ull, 12859100632669720445ull, 2469523621837257280ull}}, {{8732219939595038155ull, 7735554598461584631ull, 16073875790837150556ull, 3086904527296571600ull}}, {{6303588906066409790ull, 9669443248076980789ull, 1645600664836886579ull, 3858630659120714501ull}}, {{6245586075505200071ull, 3737559020834419041ull, 3334343424736748064ull, 2411644161950446563ull}}, {{12418668612808887993ull, 4671948776043023801ull, 18002987336203098792ull, 3014555202438058203ull}}, {{1688277710728946279ull, 5839935970053779752ull, 17892048151826485586ull, 3768194003047572754ull}}, {{1055173569205591424ull, 8261645999711000249ull, 15794216113318941395ull, 2355121251904732971ull}}, {{5930652979934377184ull, 5715371481211362407ull, 15131084123221288840ull, 2943901564880916214ull}}, {{2801630206490583576ull, 7144214351514203009ull, 9690483117171835242ull, 3679876956101145268ull}}, {{8113723776540617374ull, 18153639976247529569ull, 12113103896464794052ull, 4599846195126431585ull}}, {{16600292406406355619ull, 2122652948299930172ull, 653160907649414427ull, 2874903871954019741ull}}, {{2303621434298392908ull, 16488374240657076428ull, 5428137152989155937ull, 3593629839942524676ull}}, {{2879526792872991135ull, 6775409745539181823ull, 6785171441236444922ull, 4492037299928155845ull}}, {{8717233273186701315ull, 8846317109389376543ull, 6546575159986472028ull, 2807523312455097403ull}}, {{6284855573055988740ull, 11057896386736720679ull, 3571532931555702131ull, 3509404140568871754ull}}, {{3244383447892598021ull, 9210684464993512945ull, 13687788201299403472ull, 4386755175711089692ull}}, {{13556954701001343523ull, 5756677790620945590ull, 17778239662666902978ull, 2741721984819431057ull}}, {{7722821339396903596ull, 16419219275130957796ull, 8387741523051465010ull, 3427152481024288822ull}}, {{9653526674246129495ull, 11300652057058921437ull, 1261304866959555455ull, 4283940601280361028ull}}, {{8339297180617524886ull, 13980436563302907754ull, 10011687578704497967ull, 2677462875800225642ull}}, {{1200749438917130300ull, 12863859685701246789ull, 3291237436525846651ull, 3346828594750282053ull}}, {{6112622817073800779ull, 11468138588699170582ull, 8725732814084696218ull, 4183535743437852566ull}}, {{17655447315953289199ull, 11779272636364369517ull, 841896990375547232ull, 2614709839648657854ull}}, {{8234251089659447786ull, 14724090795455461897ull, 10275743274824209848ull, 3268387299560822317ull}}, {{14904499880501697637ull, 18405113494319327371ull, 17456365111957650214ull, 4085484124451027896ull}}, {{7009469416099867071ull, 6891509915522191703ull, 10910228194973531384ull, 2553427577781892435ull}}, {{4150150751697445935ull, 8614387394402739629ull, 9026099225289526326ull, 3191784472227365544ull}}, {{9799374458049195323ull, 1544612206148648728ull, 11282624031611907908ull, 3989730590284206930ull}}, {{6124609036280747077ull, 10188754665697681263ull, 11663326038184830346ull, 2493581618927629331ull}}, {{3044075276923545942ull, 3512571295267325771ull, 9967471529303650029ull, 3116977023659536664ull}}, {{17640152151436596139ull, 9002400137511545117ull, 12459339411629562536ull, 3896221279574420830ull}}, {{13330938103861566539ull, 5626500085944715698ull, 3175401113841088681ull, 2435138299734013019ull}}, {{7440300592972182366ull, 11644811125858282527ull, 17804309447583524563ull, 3043922874667516273ull}}, {{4688689722787840053ull, 9944327888895465255ull, 8420328754197241992ull, 3804903593334395342ull}}, {{9847960104383481889ull, 6215204930559665784ull, 651019452945888341ull, 2378064745833997089ull}}, {{12309950130479352362ull, 12380692181626970134ull, 5425460334609748330ull, 2972580932292496361ull}}, {{6164065626244414644ull, 6252493190178936860ull, 11393511436689573317ull, 3715726165365620451ull}}, {{13075913053257534961ull, 6213651253075529489ull, 4815101638717289371ull, 2322328853353512782ull}}, {{2509833261289754989ull, 3155378047917023958ull, 15242249085251387522ull, 2902911066691890977ull}}, {{12360663613466969544ull, 13167594596751055755ull, 5217753301282070690ull, 3628638833364863722ull}}, {{10839143498406324026ull, 7236121209084043886ull, 15745563663457364171ull, 4535798541706079652ull}}, {{2162778668076564612ull, 2216732746463833477ull, 617605252806076799ull, 2834874088566299783ull}}, {{7315159353523093669ull, 16605973988361955558ull, 14607064621289759710ull, 3543592610707874728ull}}, {{18367321228758642894ull, 11534095448597668639ull, 18258830776612199638ull, 4429490763384843410ull}}, {{18397104795615233665ull, 2597123636946154995ull, 16023455253810012678ull, 2768431727115527131ull}}, {{18384694976091654177ull, 12469776583037469552ull, 15417633048835127943ull, 3460539658894408914ull}}, {{4534124646405016105ull, 10975534710369449037ull, 10048669274189134121ull, 4325674573618011143ull}}, {{5139670913216829018ull, 18388924240049375408ull, 13197947324009290681ull, 2703546608511256964ull}}, {{6424588641521036273ull, 9151097244779555548ull, 16497434155011613352ull, 3379433260639071205ull}}, {{8030735801901295341ull, 11438871555974444435ull, 6786734638482352978ull, 4224291575798839007ull}}, {{2713366866974615636ull, 11760980740911415676ull, 11159238176692552467ull, 2640182234874274379ull}}, {{3391708583718269545ull, 10089539907711881691ull, 9337361702438302680ull, 3300227793592842974ull}}, {{18074693784930000643ull, 12611924884639852113ull, 2448330091193102542ull, 4125284741991053718ull}}, {{4379154587940168546ull, 3270767034472519667ull, 15365264362277852801ull, 2578302963744408573ull}}, {{862257216497822778ull, 8700144811518037488ull, 5371522397565152289ull, 3222878704680510717ull}}, {{1077821520622278473ull, 15486867032824934764ull, 11326089015383828265ull, 4028598380850638396ull}}, {{9897010487243699854ull, 2761762867874502371ull, 16302177671469668474ull, 2517873988031648997ull}}, {{7759577090627236913ull, 12675575621697903772ull, 6542664034054921880ull, 3147342485039561247ull}}, {{9699471363284046141ull, 15844469527122379715ull, 3566644024141264446ull, 3934178106299451559ull}}, {{3756326592838834886ull, 5291107436024099418ull, 9146681542729372135ull, 2458861316437157224ull}}, {{13918780277903319416ull, 2002198276602736368ull, 11433351928411715169ull, 3073576645546446530ull}}, {{17398475347379149270ull, 7114433864180808364ull, 5068317873659868153ull, 3841970806933058163ull}}, {{1650675055257192486ull, 15975736211181474988ull, 861855661823723643ull, 2401231754333161352ull}}, {{2063343819071490607ull, 15357984245549455831ull, 1077319577279654554ull, 3001539692916451690ull}}, {{16414237829121526971ull, 9974108270082043980ull, 10570021508454344001ull, 3751924616145564612ull}}, {{1035526606346178549ull, 17763032714869747248ull, 15829635479638740808ull, 2344952885090977882ull}}, {{1294408257932723186ull, 3757046819877632444ull, 10563672312693650203ull, 2931191106363722353ull}}, {{1618010322415903982ull, 84622506419652651ull, 17816276409294450658ull, 3663988882954652941ull}}, {{15857570958302043690ull, 9329150169879341621ull, 8435287456335899610ull, 4579986103693316177ull}}, {{12216824858152471258ull, 10442404874601976417ull, 16801269706278407016ull, 2862491314808322610ull}}, {{1435973017408425361ull, 13053006093252470522ull, 11778215095993232962ull, 3578114143510403263ull}}, {{11018338308615307509ull, 7092885579710812344ull, 10111082851564153299ull, 4472642679388004079ull}}, {{6886461442884567193ull, 2127210478105563763ull, 13236955809868677668ull, 2795401674617502549ull}}, {{3996390785178321087ull, 2659013097631954704ull, 2711136707053683373ull, 3494252093271878187ull}}, {{4995488481472901359ull, 7935452390467331284ull, 17223978939099267928ull, 4367815116589847733ull}}, {{12345552337775339158ull, 4959657744042082052ull, 13070829846150736407ull, 2729884447868654833ull}}, {{15431940422219173947ull, 1587886161625214661ull, 2503479252406256797ull, 3412355559835818542ull}}, {{5454867472491803722ull, 6596543720458906231ull, 12352721102362596804ull, 4265444449794773177ull}}, {{10326821197948459182ull, 13346211862141592202ull, 802921661335541146ull, 2665902781121733236ull}}, {{3685154460580798170ull, 7459392790822214445ull, 1003652076669426433ull, 3332378476402166545ull}}, {{9218129094153385616ull, 13935927006955155960ull, 5866251114264170945ull, 4165473095502708181ull}}, {{5761330683845866010ull, 1792425351705890619ull, 5972249955628800793ull, 2603420684689192613ull}}, {{2589977336379944609ull, 6852217708059751178ull, 12076998462963388895ull, 3254275855861490766ull}}, {{12460843707329706569ull, 3953586116647301068ull, 5872876041849460311ull, 4067844819826863458ull}}, {{17011399353935842414ull, 9388520350545645023ull, 8282233544583300598ull, 2542403012391789661ull}}, {{16652563173992415113ull, 2512278401327280471ull, 14964477949156513652ull, 3178003765489737076ull}}, {{16204017949063130987ull, 3140348001659100589ull, 258853362736090449ull, 3972504706862171346ull}}, {{12433354227378150819ull, 13491932547105407628ull, 4773469370137444434ull, 2482815441788857091ull}}, {{15541692784222688524ull, 7641543647026983727ull, 1355150694244417639ull, 3103519302236071364ull}}, {{14815429961850972750ull, 4940243540356341755ull, 1693938367805522049ull, 3879399127795089205ull}}, {{6953800716943164017ull, 14616867258791183357ull, 3364554489092145232ull, 2424624454871930753ull}}, {{13303936914606342925ull, 18271084073488979196ull, 8817379129792569444ull, 3030780568589913441ull}}, {{16629921143257928657ull, 4392111018151672379ull, 15633409930668099710ull, 3788475710737391801ull}}, {{8087857705322511459ull, 16580127441626958949ull, 2853352179026480462ull, 2367797319210869876ull}}, {{14721508150080527227ull, 11501787265178922878ull, 3566690223783100578ull, 2959746649013587345ull}}, {{9178513150745883226ull, 5153862044618877790ull, 9070048798156263627ull, 3699683311266984181ull}}, {{1124884700788789112ull, 915320768673104667ull, 7974623508061358719ull, 2312302069541865113ull}}, {{15241163931268150102ull, 14979209016123544545ull, 14579965403504086302ull, 2890377586927331391ull}}, {{5216396858803023916ull, 9500639233299654874ull, 13613270735952719974ull, 3612971983659164239ull}}, {{15743868110358555702ull, 2652427004769792784ull, 12404902401513512064ull, 4516214979573955299ull}}, {{9839917568974097314ull, 1657766877981120490ull, 5447220991732251088ull, 2822634362233722062ull}}, {{3076524924362845835ull, 2072208597476400613ull, 16032398276520089668ull, 3528292952792152577ull}}, {{8457342173880945197ull, 2590260746845500766ull, 6205439790367948373ull, 4410366190990190722ull}}, {{674152840248202844ull, 3924755975992131931ull, 8490085887407355637ull, 2756478869368869201ull}}, {{14677749105592417267ull, 9517630988417552817ull, 15224293377686582450ull, 3445598586711086501ull}}, {{4512128326708357872ull, 2673666698667165214ull, 5195308666826064351ull, 4306998233388858127ull}}, {{16655138259474887382ull, 8588570714308060114ull, 10164596944407372075ull, 2691873895868036329ull}}, {{11595550787488833420ull, 6124027374457687239ull, 17317432198936602998ull, 3364842369835045411ull}}, {{9882752465933653870ull, 16878406254926884857ull, 17035104230243365843ull, 4206052962293806764ull}}, {{17705935337277003429ull, 8243160900115609083ull, 1423568107047327844ull, 2628783101433629228ull}}, {{17520733153168866382ull, 10303951125144511354ull, 1779460133809159805ull, 3285978876792036535ull}}, {{12677544404606307170ull, 17491624924858027097ull, 16059383222543613468ull, 4107473595990045668ull}}, {{1005936225237860125ull, 1708893541181491128ull, 813742477234982610ull, 2567170997493778543ull}}, {{1257420281547325157ull, 11359488963331639718ull, 14852236151825891974ull, 3208963746867223178ull}}, {{10795147388788932254ull, 4975989167309773839ull, 9341923152927589160ull, 4011204683584028973ull}}, {{13664496145634164515ull, 3109993229568608649ull, 8144544979793437177ull, 2507002927240018108ull}}, {{3245562126760541931ull, 8499177555388148716ull, 10180681224741796471ull, 3133753659050022635ull}}, {{4056952658450677414ull, 6012285925807797991ull, 8114165512499857685ull, 3917192073812528294ull}}, {{9453124439172755240ull, 6063521712843567696ull, 459667426885023149ull, 2448245046132830184ull}}, {{11816405548965944050ull, 12191088159481847524ull, 574584283606278936ull, 3060306307666037730ull}}, {{14770506936207430062ull, 15238860199352309405ull, 9941602391362624478ull, 3825382884582547162ull}}, {{11537409844343337741ull, 4912601606167805474ull, 10825187513029028203ull, 2390864302864091976ull}}, {{5198390268574396368ull, 1529065989282368939ull, 13531484391286285254ull, 2988580378580114970ull}}, {{1886301817290607556ull, 11134704523457736982ull, 7690983452253080759ull, 3735725473225143713ull}}, {{15013996691088793435ull, 13876719354802167469ull, 16336079703726645234ull, 2334828420765714820ull}}, {{4932437808578828081ull, 8122527156647933529ull, 1973355555948754927ull, 2918535525957143526ull}}, {{10777233279150923005ull, 5541472927382529007ull, 11690066481790719467ull, 3648169407446429407ull}}, {{8859855580511265853ull, 2315155140800773355ull, 10000897083811011430ull, 4560211759308036759ull}}, {{3231566728605847206ull, 15282030018282647059ull, 13168089705022963999ull, 2850132349567522974ull}}, {{17874516466039472719ull, 14490851504425920919ull, 7236740094423929191ull, 3562665436959403718ull}}, {{17731459564121952995ull, 13501878362105013245ull, 18269297154884687297ull, 4453331796199254647ull}}, {{13388005236789914574ull, 1521144948674551422ull, 18335839749444011417ull, 2783332372624534154ull}}, {{7511634509132617410ull, 6513117204270577182ull, 13696427649950238463ull, 3479165465780667693ull}}, {{166171099560995954ull, 3529710486910833574ull, 3285476507155634367ull, 4348956832225834617ull}}, {{13938914992507786183ull, 9123598081960352839ull, 13582637863040741239ull, 2718098020141146635ull}}, {{12811957722207344825ull, 6792811584023053145ull, 12366611310373538645ull, 3397622525176433294ull}}, {{2179889097477017319ull, 13102700498456204336ull, 6234892101112147498ull, 4247028156470541618ull}}, {{1362430685923135825ull, 12800873829962515614ull, 8508493581622480090ull, 2654392597794088511ull}}, {{10926410394258695589ull, 6777720250598368709ull, 6023930958600712209ull, 3317990747242610639ull}}, {{18269699011250757390ull, 13083836331675348790ull, 2918227679823502357ull, 4147488434053263299ull}}, {{6806875863604335465ull, 10483240716510786946ull, 17964793364385546637ull, 2592180271283289561ull}}, {{17731966866360195139ull, 17715736914065871586ull, 8620933650199769584ull, 3240225339104111952ull}}, {{12941586546095468115ull, 3697927068872787867ull, 10776167062749711981ull, 4050281673880139940ull}}, {{5782648582095973620ull, 4617047427259186369ull, 15958476451073345796ull, 2531426046175087462ull}}, {{11839996746047354929ull, 5771309284073982961ull, 10724723526986906437ull, 3164282557718859328ull}}, {{964937877277029950ull, 11825822623519866606ull, 13405904408733633046ull, 3955353197148574160ull}}, {{14438144228580307431ull, 2779453121272528724ull, 8378690255458520654ull, 2472095748217858850ull}}, {{18047680285725384288ull, 12697688438445436713ull, 1249990782468375009ull, 3090119685272323563ull}}, {{8724542301874566648ull, 2037052492774632180ull, 15397546533367632474ull, 3862649606590404453ull}}, {{14676210975526379963ull, 5884843826411533016ull, 11929309592568464248ull, 2414156004119002783ull}}, {{18345263719407974954ull, 7356054783014416270ull, 10299950972283192406ull, 3017695005148753479ull}}, {{13708207612405192884ull, 18418440515622796146ull, 8263252696926602603ull, 3772118756435941849ull}}, {{13179315776180633457ull, 9205682313050553639ull, 16693747981647596387ull, 2357574222772463655ull}}, {{11862458701798403917ull, 6895416872885804145ull, 16255498958632107580ull, 2946967778465579569ull}}, {{993015321965841184ull, 8619271091107255182ull, 6484315643007970763ull, 3683709723081974462ull}}, {{10464641189312077288ull, 6162402845456681073ull, 17328766590614739262ull, 4604637153852468077ull}}, {{18069615789388518065ull, 17686559833692589382ull, 13136322128347905990ull, 2877898221157792548ull}}, {{13363647699880871773ull, 12884827755260960920ull, 16420402660434882488ull, 3597372776447240685ull}}, {{16704559624851089717ull, 16106034694076201150ull, 6690445270261439398ull, 4496715970559050857ull}}, {{5828663747104543169ull, 5454585665370237815ull, 15710743339981869384ull, 2810447481599406785ull}}, {{2674143665453291057ull, 6818232081712797269ull, 5803371119695173018ull, 3513059351999258482ull}}, {{7954365600244001725ull, 17746162138995772394ull, 16477585936473742080ull, 4391324189999073102ull}}, {{9583164518579888983ull, 11091351336872357746ull, 5686805191868700896ull, 2744577618749420689ull}}, {{2755583611370085420ull, 13864189171090447183ull, 11720192508263264024ull, 3430722023436775861ull}}, {{17279537569494770487ull, 17330236463863058978ull, 815182580046916318ull, 4288402529295969827ull}}, {{15411396999361619459ull, 6219711771487023957ull, 16650390177025180363ull, 2680251580809981141ull}}, {{5429188193919860611ull, 3162953695931392043ull, 6977929665999311742ull, 3350314476012476427ull}}, {{2174799223972437860ull, 13177064156769015862ull, 4110726064071751773ull, 4187893095015595534ull}}, {{15194307570264937374ull, 10541508107194328865ull, 16404261845327008570ull, 2617433184384747208ull}}, {{5157826407549008006ull, 3953513097138135274ull, 2058583232949209097ull, 3271791480480934011ull}}, {{15670655046291035815ull, 9553577389850056996ull, 16408287096468675083ull, 4089739350601167513ull}}, {{570787367077121577ull, 3665142859442591671ull, 3337650407651840071ull, 2556087094125729696ull}}, {{14548542264128565683ull, 18416486629585403300ull, 4172063009564800088ull, 3195108867657162120ull}}, {{18185677830160707103ull, 4573864213272202509ull, 5215078761956000111ull, 3993886084571452650ull}}, {{13671891653064135892ull, 9776194160936208424ull, 7871110244649887973ull, 2496178802857157906ull}}, {{17089864566330169865ull, 16831928719597648434ull, 615515768957584158ull, 3120223503571447383ull}}, {{12138958671057936523ull, 11816538862642284735ull, 14604452766479143910ull, 3900279379464309228ull}}, {{14504378197052292183ull, 2773650770724040055ull, 18351155015904240752ull, 2437674612165193267ull}}, {{13518786727887977324ull, 3467063463405050069ull, 18327257751452913036ull, 3047093265206491584ull}}, {{3063425354577807943ull, 4333829329256312587ull, 4462328115606589679ull, 3808866581508114481ull}}, {{18055541911106987629ull, 9626172358426277222ull, 14318170118322588309ull, 2380541613442571550ull}}, {{13346055352028958728ull, 16644401466460234432ull, 8674340611048459578ull, 2975677016803214438ull}}, {{16682569190036198410ull, 11582129796220517232ull, 1619553726955798665ull, 3719596271004018048ull}}, {{10426605743772624006ull, 321302094996741414ull, 1012221079347374166ull, 2324747669377511280ull}}, {{3809885142861004200ull, 9624999655600702576ull, 1265276349184217707ull, 2905934586721889100ull}}, {{4762356428576255250ull, 7419563551073490316ull, 1581595436480272134ull, 3632418233402361375ull}}, {{5952945535720319062ull, 51082401987087087ull, 15812052350882503880ull, 4540522791752951718ull}}, {{10638119987466281270ull, 31926501241929429ull, 5270846700874177021ull, 2837826744845594824ull}}, {{17909336002760239491ull, 4651594144979799690ull, 6588558376092721276ull, 3547283431056993530ull}}, {{13163297966595523556ull, 5814492681224749613ull, 17459070006970677403ull, 4434104288821241912ull}}, {{10532904238335896175ull, 1328214916551774556ull, 10911918754356673377ull, 2771315180513276195ull}}, {{13166130297919870218ull, 6271954664117106099ull, 9028212424518453817ull, 3464143975641595244ull}}, {{11845976853972449868ull, 12451629348573770528ull, 11285265530648067271ull, 4330179969551994055ull}}, {{7403735533732781168ull, 14699797370499688436ull, 13970819984296123900ull, 2706362480969996284ull}}, {{9254669417165976460ull, 18374746713124610545ull, 17463524980370154875ull, 3382953101212495355ull}}, {{16180022789884858479ull, 18356747372978375277ull, 17217720207035305690ull, 4228691376515619194ull}}, {{12418357252891730501ull, 16084653126538872452ull, 15372761147824453960ull, 2642932110322261996ull}}, {{15522946566114663127ull, 1659072334464038949ull, 769207361071015835ull, 3303665137902827496ull}}, {{5568625152361165196ull, 15908898473362212399ull, 961509201338769793ull, 4129581422378534370ull}}, {{10397919747866810104ull, 3025532518210300893ull, 5212629269264119025ull, 2580988388986583981ull}}, {{17609085703260900534ull, 8393601666190264020ull, 11127472605007536685ull, 3226235486233229976ull}}, {{3564613055366574051ull, 15103688101165217930ull, 13909340756259420856ull, 4032794357791537470ull}}, {{6839569178031496686ull, 9439805063228261206ull, 4081651954234750131ull, 2520496473619710919ull}}, {{17772833509394146665ull, 7188070310607938603ull, 490378924366049760ull, 3150620592024638649ull}}, {{17604355868315295428ull, 8985087888259923254ull, 5224659673884950104ull, 3938275740030798311ull}}, {{6391036399269671738ull, 5615679930162452034ull, 10182941323819175671ull, 2461422337519248944ull}}, {{17212167535941865481ull, 2407913894275677138ull, 12728676654773969589ull, 3076777921899061180ull}}, {{12291837383072556043ull, 7621578386271984327ull, 15910845818467461986ull, 3845972402373826475ull}}, {{14599927392061429383ull, 9375172509847378108ull, 7638435627328469789ull, 2403732751483641547ull}}, {{18249909240076786729ull, 16330651655736610539ull, 4936358515733199332ull, 3004665939354551934ull}}, {{18200700531668595507ull, 1966570495961211558ull, 15393820181521274974ull, 3755832424193189917ull}}, {{6763751813865484288ull, 15064164615257920936ull, 11926980622664490810ull, 2347395265120743698ull}}, {{8454689767331855360ull, 9606833732217625362ull, 5685353741475837705ull, 2934244081400929623ull}}, {{1344990172310043392ull, 16620228183699419607ull, 2495006158417409227ull, 3667805101751162029ull}}, {{15516295770669717951ull, 16163599211196886604ull, 7730443716449149438ull, 4584756377188952536ull}}, {{474312819813797912ull, 5490563488570666224ull, 4831527322780718399ull, 2865472735743095335ull}}, {{592891024767247390ull, 2251518342285944876ull, 1427723135048510095ull, 3581840919678869169ull}}, {{741113780959059237ull, 16649455983139594807ull, 6396339937238025522ull, 4477301149598586461ull}}, {{7380725140740493879ull, 15017596007889634658ull, 6303555469987459903ull, 2798313218499116538ull}}, {{2534389070841541ull, 14160308991434655419ull, 17102816374339100687ull, 3497891523123895672ull}}, {{13838226041620715638ull, 13088700220865931369ull, 2931776394214324243ull, 4372364403904869591ull}}, {{1731362248371865418ull, 5874594628827513154ull, 8749889274025034508ull, 2732727752440543494ull}}, {{11387574847319607580ull, 7343243286034391442ull, 1713989555676517327ull, 3415909690550679368ull}}, {{5011096522294733667ull, 4567368089115601399ull, 2142486944595646659ull, 4269887113188349210ull}}, {{10049464354075290398ull, 548762046483556922ull, 5950740358799667066ull, 2668679445742718256ull}}, {{3338458405739337190ull, 9909324594959221961ull, 7438425448499583832ull, 3335849307178397820ull}}, {{8784759025601559391ull, 12386655743699027451ull, 9298031810624479790ull, 4169811633972997275ull}}, {{3184631381787280668ull, 3129973821384504253ull, 3505426872426605917ull, 2606132271233123297ull}}, {{8592475245661488738ull, 8524153295158018220ull, 8993469608960645300ull, 3257665339041404121ull}}, {{10740594057076860923ull, 10655191618947522775ull, 15853523029628194529ull, 4072081673801755151ull}}, {{13630400313314119933ull, 18188709807910671494ull, 16825980921158703436ull, 2545051046126096969ull}}, {{7814628354787874108ull, 4289143186178787752ull, 7197418096166215584ull, 3181313807657621212ull}}, {{9768285443484842635ull, 5361428982723484690ull, 8996772620207769480ull, 3976642259572026515ull}}, {{10716864420605414551ull, 3350893114202177931ull, 3317139878416161973ull, 2485401412232516572ull}}, {{8784394507329380285ull, 8800302411180110318ull, 4146424848020202466ull, 3106751765290645715ull}}, {{1757121097306949548ull, 1777005977120362090ull, 571345041597865179ull, 3883439706613307144ull}}, {{5709886704244231371ull, 17251529800196083970ull, 357090650998665736ull, 2427149816633316965ull}}, {{16360730417160065022ull, 3117668176535553346ull, 5058049332175720075ull, 3033937270791646206ull}}, {{11227540984595305470ull, 17732143275951605395ull, 15545933702074425901ull, 3792421588489557757ull}}, {{4711370106158371967ull, 13388432556683447324ull, 12022051573010210140ull, 2370263492805973598ull}}, {{5889212632697964958ull, 16735540695854309155ull, 5804192429407986867ull, 2962829366007466998ull}}, {{2749829772445068294ull, 16307739851390498540ull, 16478612573614759392ull, 3703536707509333747ull}}, {{10942015644632943492ull, 10192337407119061587ull, 7993289849295530668ull, 2314710442193333592ull}}, {{9065833537363791461ull, 12740421758898826984ull, 9991612311619413335ull, 2893388052741666990ull}}, {{11332291921704739326ull, 11313841180196145826ull, 3266143352669490861ull, 3616735065927083738ull}}, {{4941992865276148349ull, 307243419963018571ull, 13306051227691639385ull, 4520918832408854672ull}}, {{782902531583898766ull, 11721242183545356367ull, 8316282017307274615ull, 2825574270255534170ull}}, {{14813686219762037170ull, 10039866711004307554ull, 1171980484779317461ull, 3531967837819417713ull}}, {{9293735737847770654ull, 17161519407182772347ull, 6076661624401534730ull, 4414959797274272141ull}}, {{3502741826941162707ull, 15337635647916620621ull, 6103756524464653158ull, 2759349873296420088ull}}, {{8990113302103841287ull, 9948672523040999968ull, 7629695655580816448ull, 3449187341620525110ull}}, {{11237641627629801609ull, 12435840653801249960ull, 313747532621244752ull, 4311484177025656388ull}}, {{7023526017268626006ull, 7772400408625781225ull, 9419464244743053778ull, 2694677610641035242ull}}, {{13391093540013170411ull, 492128473927450723ull, 2550958269074041415ull, 3368347013301294053ull}}, {{12127180906589075110ull, 14450218647691477116ull, 7800383854769939672ull, 4210433766626617566ull}}, {{16802860103472947752ull, 9031386654807173197ull, 263553890803824391ull, 2631521104141635979ull}}, {{7168517074059020978ull, 6677547300081578593ull, 14164500418786944201ull, 3289401380177044973ull}}, {{13572332361001164126ull, 12958620143529361145ull, 3870567468201516539ull, 4111751725221306217ull}}, {{1565178697984645723ull, 5793294580492156764ull, 13948319713694417597ull, 2569844828263316385ull}}, {{1956473372480807154ull, 11853304244042583859ull, 3600341586835858284ull, 3212306035329145482ull}}, {{16280649770883172654ull, 14816630305053229823ull, 13723799020399598663ull, 4015382544161431852ull}}, {{17092935134443064765ull, 16177922968299350495ull, 17800746424604524972ull, 2509614090100894907ull}}, {{16754482899626443052ull, 1775659636664636503ull, 17639247012328268312ull, 3137017612626118634ull}}, {{16331417606105665911ull, 2219574545830795629ull, 12825686728555559582ull, 3921272015782648293ull}}, {{12512979013029735146ull, 15222292146426410980ull, 10321897214560918690ull, 2450795009864155183ull}}, {{15641223766287168933ull, 9804493146178237917ull, 8290685499773760459ull, 3063493762330193979ull}}, {{5716471652576797454ull, 7643930414295409493ull, 5751670856289812670ull, 3829367202912742474ull}}, {{5878637792074192361ull, 165770490507243029ull, 8206480303608520823ull, 2393354501820464046ull}}, {{11959983258520128355ull, 14042271168416217498ull, 1034728342655875220ull, 2991693127275580058ull}}, {{5726607036295384636ull, 17552838960520271873ull, 10516782465174619833ull, 3739616409094475072ull}}, {{15108344443753085158ull, 4052995322684088064ull, 6572989040734137396ull, 2337260255684046920ull}}, {{438686480981804831ull, 5066244153355110081ull, 8216236300917671745ull, 2921575319605058650ull}}, {{5160044119654643942ull, 10944491210121275505ull, 1046923339292313873ull, 3651969149506323313ull}}, {{11061741167995692832ull, 18292300031078982285ull, 5920340192542780245ull, 4564961436882904141ull}}, {{9219431239211001972ull, 13738530528638057880ull, 6006055629552931605ull, 2853100898051815088ull}}, {{11524289049013752465ull, 3338105105515408638ull, 7507569536941164507ull, 3566376122564768860ull}}, {{5181989274412414773ull, 18007689437176424510ull, 9384461921176455633ull, 4457970153205961075ull}}, {{17073801351789922945ull, 4337276870594183462ull, 3559445691521590819ull, 2786231345753725672ull}}, {{12118879652882627874ull, 809910069815341424ull, 4449307114401988524ull, 3482789182192157090ull}}, {{15148599566103284842ull, 1012387587269176780ull, 14785005929857261463ull, 4353486477740196362ull}}, {{244502691959777218ull, 7550271269684317344ull, 13852314724588176318ull, 2720929048587622726ull}}, {{305628364949721523ull, 214467050250620872ull, 8092021368880444590ull, 3401161310734528408ull}}, {{382035456187151903ull, 9491455849668051898ull, 10115026711100555737ull, 4251451638418160510ull}}, {{4850458178544357844ull, 17461374952111002196ull, 1710205676010459431ull, 2657157274011350319ull}}, {{6063072723180447305ull, 17215032671711364841ull, 15972815150295238001ull, 3321446592514187898ull}}, {{12190526922402947035ull, 7683732784357042339ull, 10742646901014271694ull, 4151808240642734873ull}}, {{5313236317288147945ull, 190646971795763558ull, 18243369359202389569ull, 2594880150401709295ull}}, {{15864917433464960739ull, 4849994733172092351ull, 18192525680575599057ull, 3243600188002136619ull}}, {{15219460773403813020ull, 10674179434892503343ull, 18128971082292110917ull, 4054500235002670774ull}}, {{16429692011018464993ull, 8977205156021508541ull, 6718920908005181419ull, 2534062646876669234ull}}, {{6702056958490917530ull, 6609820426599497773ull, 17622023171861252582ull, 3167578308595836542ull}}, {{12989257216541034816ull, 17485647570104148024ull, 12804156927971789919ull, 3959472885744795678ull}}, {{8118285760338146760ull, 17846058758956174371ull, 3390912061554980795ull, 2474670553590497299ull}}, {{5536171181995295546ull, 17695887430267830060ull, 18073698132225889706ull, 3093338191988121623ull}}, {{6920213977494119432ull, 12896487250980011767ull, 17980436646854974229ull, 3866672739985152029ull}}, {{11242662763574906501ull, 10366147541076201306ull, 13543615913498052845ull, 2416670462490720018ull}}, {{4829956417613857319ull, 17569370444772639537ull, 7706147855017790248ull, 3020838078113400023ull}}, {{10649131540444709552ull, 3514968982256247805ull, 5020998800344849907ull, 3776047597641750029ull}}, {{8961550221991637422ull, 18337756678406012542ull, 5443967259429225143ull, 2360029748526093768ull}}, {{1978565740634770970ull, 18310509829580127774ull, 6804959074286531429ull, 2950037185657617210ull}}, {{11696579212648239520ull, 9053079231692996005ull, 17729570879712940095ull, 3687546482072021512ull}}, {{785665960528135688ull, 6704663021188857103ull, 3715219525931623503ull, 4609433102590026891ull}}, {{7408570252971166661ull, 11107943415884117545ull, 16169194493570737ull, 2880895689118766807ull}}, {{13872398834641346230ull, 49871214572983219ull, 13855269548399127134ull, 3601119611398458508ull}}, {{12728812524874294884ull, 9285711055071004832ull, 17319086935498908917ull, 4501399514248073135ull}}, {{7955507828046434303ull, 8109412418633071972ull, 17741958362327899929ull, 2813374696405045709ull}}, {{9944384785058042878ull, 14748451541718727869ull, 8342389897627711199ull, 3516718370506307137ull}}, {{17042166999749941502ull, 13823878408721021932ull, 15039673390462026903ull, 4395897963132883921ull}}, {{1427982337988937631ull, 15557453033091720564ull, 2482266841397684958ull, 2747436226958052451ull}}, {{1784977922486172038ull, 10223444254509874897ull, 16937891607029269910ull, 3434295283697565563ull}}, {{6842908421535102952ull, 3555933281282567813ull, 16560678490359199484ull, 4292869104621956954ull}}, {{6582660772673133297ull, 11445830337656380691ull, 14962110074901887581ull, 2683043190388723096ull}}, {{3616639947414028717ull, 472229866788312152ull, 255893519917807861ull, 3353803987985903871ull}}, {{4520799934267535896ull, 5201973351912778094ull, 14154924955179423538ull, 4192254984982379838ull}}, {{16660558014199373647ull, 7862919363372874212ull, 4235142078559751807ull, 2620159365613987399ull}}, {{2378953444039665443ull, 5216963185788704862ull, 682241579772301855ull, 3275199207017484249ull}}, {{12197063841904357612ull, 1909517963808493173ull, 5464487993142765223ull, 4093999008771855311ull}}, {{9929007910403917459ull, 8110977755021390089ull, 10332834023355310120ull, 2558749380482409569ull}}, {{17022945906432284728ull, 10138722193776737611ull, 17527728547621525554ull, 3198436725603011961ull}}, {{16666996364612968006ull, 3450030705366146206ull, 8074602629244743231ull, 3998045907003764952ull}}, {{5805186709455717100ull, 9073798218494923235ull, 5046626643277964519ull, 2498778691877353095ull}}, {{2644797368392258471ull, 6730561754691266140ull, 1696597285670067745ull, 3123473364846691369ull}}, {{3305996710490323089ull, 13024888211791470579ull, 6732432625514972585ull, 3904341706058364211ull}}, {{18207149008552309595ull, 1223026104728587255ull, 1901927381733163914ull, 2440213566286477632ull}}, {{18147250242262999089ull, 10752154667765509877ull, 2377409227166454892ull, 3050266957858097040ull}}, {{8849004747546585149ull, 13440193334706887347ull, 2971761533958068615ull, 3812833697322621300ull}}, {{3224784958002921766ull, 15317649861832886448ull, 11080722995578568692ull, 2383021060826638312ull}}, {{4030981197503652208ull, 700318253581556444ull, 13850903744473210866ull, 2978776326033297890ull}}, {{5038726496879565260ull, 10098769853831721363ull, 8090257643736737774ull, 3723470407541622363ull}}, {{843361051336034336ull, 1700045140217437948ull, 2750568018121767157ull, 2327169004713513977ull}}, {{1054201314170042919ull, 6736742443699185339ull, 8049896041079596850ull, 2908961255891892471ull}}, {{15152809697994717361ull, 17644300091478757481ull, 5450684032922108158ull, 3636201569864865589ull}}, {{5105954067211232989ull, 12832003077493671044ull, 11425041059580023102ull, 4545251962331081986ull}}, {{12414593328861796426ull, 3408315905006156498ull, 11752336680664902343ull, 2840782476456926241ull}}, {{6294869624222469725ull, 18095452936539859335ull, 855362795548964216ull, 3550978095571157802ull}}, {{3256901011850699252ull, 4172572096965272553ull, 10292575531290981079ull, 4438722619463947252ull}}, {{13564778178475156793ull, 9525386588244377201ull, 15656231743911638982ull, 2774201637164967032ull}}, {{3120914667811782279ull, 2683361198450695694ull, 1123545606179997112ull, 3467752046456208791ull}}, {{13124515371619503656ull, 3354201498063369617ull, 15239490063007160102ull, 4334690058070260988ull}}, {{1285293079621107929ull, 15931433991571769723ull, 301309252524699255ull, 2709181286293913118ull}}, {{15441674404808548624ull, 15302606471037324249ull, 9600008602510649877ull, 3386476607867391397ull}}, {{5467034950728522067ull, 5293200033514491600ull, 16611696771565700251ull, 4233095759834239246ull}}, {{3416896844205326292ull, 1002407011732863298ull, 5770624463801174753ull, 2645684849896399529ull}}, {{13494493092111433673ull, 5864694783093467026ull, 11824966598178856345ull, 3307106062370499411ull}}, {{7644744328284516283ull, 11942554497294221687ull, 10169522229296182527ull, 4133882577963124264ull}}, {{11695494232818904533ull, 14381625588449970410ull, 6355951393310114079ull, 2583676611226952665ull}}, {{5395995754168854858ull, 13365345967135075109ull, 12556625260065030503ull, 3229595764033690831ull}}, {{11356680711138456477ull, 12094996440491455982ull, 11084095556653900225ull, 4036994705042113539ull}}, {{2486239426034147394ull, 641843747666078133ull, 4621716713694993689ull, 2523121690651320962ull}}, {{7719485300970072147ull, 5413990703009985570ull, 15000517928973517919ull, 3153902113314151202ull}}, {{425984589357814375ull, 2155802360335094059ull, 9527275374362121591ull, 3942377641642689003ull}}, {{16407141432844491649ull, 8264905502850515642ull, 3648704099762632042ull, 2463986026026680627ull}}, {{11285554754200838753ull, 1107759841708368745ull, 18395938179985453765ull, 3079982532533350783ull}}, {{271885387468884729ull, 5996385820562848836ull, 18383236706554429302ull, 3849978165666688479ull}}, {{9393300404022828764ull, 17582799193133944234ull, 18407051969237600169ull, 2406236353541680299ull}}, {{2518253468173760147ull, 8143440936135266581ull, 18397128943119612308ull, 3007795441927100374ull}}, {{7759502853644588087ull, 10179301170169083226ull, 13773039142044739577ull, 3759744302408875468ull}}, {{9461375301955255459ull, 17891278277424146776ull, 17831521500632738043ull, 2349840189005547167ull}}, {{11826719127444069323ull, 17752411828352795566ull, 17677715857363534650ull, 2937300236256933959ull}}, {{5560026872450310846ull, 12967142748586218650ull, 17485458803277030409ull, 3671625295321167449ull}}, {{16173405627417664365ull, 2373870380450609600ull, 8021765448814124300ull, 4589531619151459312ull}}, {{10108378517136040228ull, 10707041024636406808ull, 5013603405508827687ull, 2868457261969662070ull}}, {{12635473146420050285ull, 8772115262368120606ull, 15490376293740810417ull, 3585571577462077587ull}}, {{6570969396170287049ull, 15576830096387538662ull, 14751284348748625117ull, 4481964471827596984ull}}, {{17941913927888593118ull, 12041361819455905615ull, 9219552717967890698ull, 2801227794892248115ull}}, {{17815706391433353493ull, 5828330237465106211ull, 6912754879032475469ull, 3501534743615310144ull}}, {{17657946970864303962ull, 11897098815258770668ull, 8640943598790594336ull, 4376918429519137680ull}}, {{1812844819935414168ull, 7435686759536731668ull, 5400589749244121460ull, 2735574018449461050ull}}, {{2266056024919267710ull, 9294608449420914585ull, 15974109223409927633ull, 3419467523061826312ull}}, {{7444256049576472542ull, 16229946580203531135ull, 1520892455552857925ull, 4274334403827282891ull}}, {{11570189058626377195ull, 12449559621840900911ull, 17091458849216393867ull, 2671459002392051806ull}}, {{9851050304855583589ull, 10950263508873738235ull, 12140951524665716526ull, 3339323752990064758ull}}, {{7702126862642091583ull, 4464457349237396986ull, 5952817368977369850ull, 4174154691237580948ull}}, {{9425515307578695143ull, 7401971861700761020ull, 12943882892465631964ull, 2608846682023488092ull}}, {{11781894134473368929ull, 9252464827125951275ull, 16179853615582039955ull, 3261058352529360115ull}}, {{10115681649664323257ull, 6953895015480051190ull, 15613131001050162040ull, 4076322940661700144ull}}, {{1710615012612814132ull, 4346184384675031994ull, 9758206875656351275ull, 2547701837913562590ull}}, {{11361640802620793473ull, 821044462416402088ull, 2974386557715663286ull, 3184627297391953238ull}}, {{14202051003275991841ull, 10249677614875278418ull, 12941355233999354915ull, 3980784121739941547ull}}, {{13487967895474882805ull, 4100205500083355059ull, 5782504012035902870ull, 2487990076087463467ull}}, {{12248273850916215602ull, 14348628911958969632ull, 2616443996617490683ull, 3109987595109329334ull}}, {{15310342313645269502ull, 13324100121521324136ull, 12493927032626639162ull, 3887484493886661667ull}}, {{9568963946028293439ull, 12939248594378215489ull, 5502861386177955524ull, 2429677808679163542ull}}, {{16572890950962754703ull, 16174060742972769361ull, 16101948769577220213ull, 3037097260848954427ull}}, {{6881055633421279666ull, 6382517873433797990ull, 15515749943544137363ull, 3796371576061193034ull}}, {{18135717826170463503ull, 1683230661682429791ull, 14309029733142473756ull, 2372732235038245646ull}}, {{18057961264285691475ull, 2104038327103037239ull, 8662915129573316387ull, 2965915293797807058ull}}, {{17960765561929726440ull, 16465105964160960261ull, 1605271875111869675ull, 3707394117247258823ull}}, {{13531321485419772977ull, 7984848218386906211ull, 7920823949586000403ull, 2317121323279536764ull}}, {{12302465838347328317ull, 5369374254556244860ull, 9901029936982500504ull, 2896401654099420955ull}}, {{15378082297934160396ull, 6711717818195306075ull, 7764601402800737726ull, 3620502067624276194ull}}, {{14610916853990312591ull, 17613019309598908402ull, 482379716646146349ull, 4525627584530345243ull}}, {{13743509052171333274ull, 13313980077713011703ull, 16442388387399699132ull, 2828517240331465776ull}}, {{12567700296786778688ull, 16642475097141264629ull, 2106241410540072299ull, 3535646550414332221ull}}, {{1874567315701309648ull, 16191407852999192883ull, 7244487781602478278ull, 4419558188017915276ull}}, {{17312505636809176194ull, 5507943889697107647ull, 13751176900356324732ull, 2762223867511197047ull}}, {{17028946027584082339ull, 6884929862121384559ull, 12577285107018018011ull, 3452779834388996309ull}}, {{16674496516052715019ull, 3994476309224342795ull, 1886548328490358802ull, 4315974792986245387ull}}, {{8115717313319252935ull, 7108233711692602151ull, 17319993769802331915ull, 2697484245616403366ull}}, {{5532960623221678265ull, 4273606121188364785ull, 12426620175398139086ull, 3371855307020504208ull}}, {{11527886797454485735ull, 14565379688340231789ull, 15533275219247673857ull, 4214819133775630260ull}}, {{9510772257622747537ull, 2185833277571563012ull, 484924975175020353ull, 2634261958609768913ull}}, {{11888465322028434421ull, 7343977615391841669ull, 5217842237396163345ull, 3292827448262211141ull}}, {{1025523597253379314ull, 13791658037667189991ull, 11133988815172592085ull, 4116034310327763926ull}}, {{7558481275924443927ull, 10925629282755687696ull, 2347056991055482149ull, 2572521443954852454ull}}, {{9448101594905554909ull, 18268722621871997524ull, 12157193275674128494ull, 3215651804943565567ull}}, {{11810126993631943636ull, 13612531240485221097ull, 10584805576165272714ull, 4019564756179456959ull}}, {{463800343378882917ull, 13119518043730651090ull, 13533032512744377302ull, 2512227972612160599ull}}, {{9803122466078379454ull, 7176025517808538054ull, 12304604622503083724ull, 3140284965765200749ull}}, {{3030531045743198509ull, 8970031897260672568ull, 1545697722846690943ull, 3925356207206500937ull}}, {{1894081903589499068ull, 12523798963429002211ull, 12495276122847651599ull, 2453347629504063085ull}}, {{16202660434769037547ull, 11043062685858864859ull, 1784037098277400787ull, 3066684536880078857ull}}, {{15641639525033909030ull, 9192142338896193170ull, 6841732391274138888ull, 3833355671100098571ull}}, {{14387710721573581048ull, 5745088961810120731ull, 1970239735332642853ull, 2395847294437561607ull}}, {{13372952383539588406ull, 11793047220690038818ull, 16297857724447967278ull, 2994809118046952008ull}}, {{7492818442569709699ull, 5517936989007772715ull, 1925578081850407482ull, 3743511397558690011ull}}, {{2377168517392374610ull, 8060396636557245851ull, 17344387365652362340ull, 2339694623474181256ull}}, {{16806518702022631975ull, 10075495795696557313ull, 3233740133355901309ull, 2924618279342726571ull}}, {{7173090322246126256ull, 17206055763048084546ull, 17877233221977040348ull, 3655772849178408213ull}}, {{18189734939662433628ull, 3060825630100554066ull, 8511483472189136724ull, 4569716061473010267ull}}, {{15980270355716408922ull, 11136388055667622099ull, 3013834160904516500ull, 2856072538420631417ull}}, {{15363651926218123248ull, 13920485069584527624ull, 8378978719558033529ull, 3570090673025789271ull}}, {{757820834063102444ull, 3565548281698495819ull, 5862037381020154008ull, 4462613341282236589ull}}, {{16614539085785296692ull, 2228467676061559886ull, 5969616372351290207ull, 2789133338301397868ull}}, {{11544801820376845056ull, 16620642650359113570ull, 7462020465439112758ull, 3486416672876747335ull}}, {{5207630238616280512ull, 11552431276094116155ull, 4715839563371503044ull, 4358020841095934169ull}}, {{948925889921481368ull, 16443641584413598405ull, 14476614773175659162ull, 2723763025684958855ull}}, {{5797843380829239614ull, 11331179943662222198ull, 13484082448042186049ull, 3404703782106198569ull}}, {{16470676262891325326ull, 328916874295614035ull, 3020045004770568850ull, 4255879727632748212ull}}, {{7988329655093384377ull, 4817259064862146676ull, 11110900164836381339ull, 2659924829770467632ull}}, {{9985412068866730471ull, 1409887812650295441ull, 13888625206045476674ull, 3324906037213084540ull}}, {{17093451104510800992ull, 10985731802667645109ull, 17360781507556845842ull, 4156132546516355675ull}}, {{12989249949532944572ull, 11477768395094666097ull, 8544645433009334699ull, 2597582841572722297ull}}, {{2401504381634017003ull, 9735524475440944718ull, 15292492809689056278ull, 3246978551965902871ull}}, {{12225252513897297062ull, 2946033557446405089ull, 14503929993683932444ull, 4058723189957378589ull}}, {{723253793544728808ull, 11064643010258778989ull, 11370799255266151729ull, 2536701993723361618ull}}, {{5515753260358298914ull, 18442489781250861640ull, 4990127032227913853ull, 3170877492154202023ull}}, {{6894691575447873642ull, 9218054171281413338ull, 1625972771857504413ull, 3963596865192752529ull}}, {{8920868253082308931ull, 8067126866264577288ull, 12545448028479410018ull, 2477248040745470330ull}}, {{11151085316352886163ull, 860536545975945802ull, 6458437998744486715ull, 3096560050931837913ull}}, {{4715484608586331896ull, 14910728737752095965ull, 12684733516857996297ull, 3870700063664797391ull}}, {{5253020889580151387ull, 2401676433453978122ull, 14845487475677329542ull, 2419187539790498369ull}}, {{15789648148829965042ull, 12225467578672248460ull, 4721801289314498215ull, 3023984424738122962ull}}, {{1290316112327904686ull, 10670148454912922672ull, 15125623648497898577ull, 3779980530922653702ull}}, {{806447570204940429ull, 18198057830389046430ull, 4841828761883798706ull, 2362487831826658564ull}}, {{10231431499610951344ull, 13524200251131532229ull, 6052285952354748383ull, 2953109789783323205ull}}, {{17400975392941077084ull, 12293564295487027382ull, 12177043458870823383ull, 3691387237229154006ull}}, {{6263923602160785274ull, 14601006712320473970ull, 2998966143366876710ull, 2307117023268221254ull}}, {{17053276539555757400ull, 9027886353545816654ull, 12972079716063371696ull, 2883896279085276567ull}}, {{12093223637589920942ull, 11284857941932270818ull, 11603413626651826716ull, 3604870348856595709ull}}, {{5893157510132625369ull, 14106072427415338523ull, 669208978032619683ull, 4506087936070744637ull}}, {{1377380434619196904ull, 6510452257920892625ull, 2724098620484081254ull, 2816304960044215398ull}}, {{6333411561701384034ull, 17361437359255891589ull, 12628495312459877375ull, 3520381200055269247ull}}, {{12528450470554117946ull, 17090110680642476582ull, 11173933122147458815ull, 4400476500069086559ull}}, {{3218595525668935812ull, 17598848203042629720ull, 13901237228983243615ull, 2750297812543179099ull}}, {{4023244407086169765ull, 17386874235375899246ull, 12764860517801666615ull, 3437872265678973874ull}}, {{14252427545712488015ull, 17121906775792486153ull, 6732703610397307461ull, 4297340332098717343ull}}, {{1990238188429223153ull, 13007034744083997798ull, 11125468784139399019ull, 2685837707561698339ull}}, {{11711169772391304750ull, 11647107411677609343ull, 9295149961746860870ull, 3357297134452122924ull}}, {{10027276197061743033ull, 5335512227742235871ull, 11618937452183576088ull, 4196621418065153655ull}}, {{13184576650804671252ull, 3334695142338897419ull, 14179364935255816911ull, 2622888386290721034ull}}, {{11869034795078451161ull, 18003426983205785486ull, 8500834132214995330ull, 3278610482863401293ull}}, {{5612921456993288143ull, 13280911692152456050ull, 15237728683696132067ull, 4098263103579251616ull}}, {{8119761929048192993ull, 5994726798381591079ull, 9523580427310082542ull, 2561414439737032260ull}}, {{5538016392882853338ull, 16716780534831764657ull, 11904475534137603177ull, 3201768049671290325ull}}, {{11534206509530954576ull, 7060917613257542109ull, 1045536362389840260ull, 4002210062089112907ull}}, {{9514722077670540562ull, 13636445545140739626ull, 16794361290989507826ull, 2501381288805695566ull}}, {{2670030560233399894ull, 7822184894571148725ull, 11769579576882108975ull, 3126726611007119458ull}}, {{7949224218719137772ull, 5166045099786548002ull, 5488602434247860411ull, 3908408263758899323ull}}, {{9579951155126849012ull, 922935178152898549ull, 1124533512191218805ull, 2442755164849312077ull}}, {{16586624962335949168ull, 5765354991118511090ull, 6017352908666411410ull, 3053443956061640096ull}}, {{11509909166065160652ull, 16430065775752914671ull, 7521691135833014262ull, 3816804945077050120ull}}, {{14111222256431807264ull, 5657105091418183765ull, 4701056959895633914ull, 2385503090673156325ull}}, {{3803969765257595368ull, 16294753401127505515ull, 10488007218296930296ull, 2981878863341445406ull}}, {{143276188144606306ull, 1921697677699830278ull, 3886636986016387063ull, 3727348579176806758ull}}, {{13924605672872542653ull, 8118590076203475779ull, 16264206171542405626ull, 2329592861985504223ull}}, {{12794071072663290412ull, 924865558399568916ull, 15718571696000619129ull, 2911991077481880279ull}}, {{15992588840829113015ull, 5767767966426849049ull, 15036528601573386007ull, 3639988846852350349ull}}, {{6155677995754227557ull, 2598023939606173408ull, 4960602696684568797ull, 4549986058565437937ull}}, {{3847298747346392223ull, 3929607971467552332ull, 14629591731496325258ull, 2843741286603398710ull}}, {{4809123434182990279ull, 14135382001189216223ull, 9063617627515630764ull, 3554676608254248388ull}}, {{1399718274301349945ull, 17669227501486520279ull, 11329522034394538455ull, 4443345760317810485ull}}, {{7792352949079425572ull, 17960796216070157030ull, 9386794280710280486ull, 2777091100198631553ull}}, {{517069149494506156ull, 13227623233232920480ull, 16345178869315238512ull, 3471363875248289441ull}}, {{646336436868132695ull, 16534529041541150600ull, 6596415531361884428ull, 4339204844060361802ull}}, {{403960273042582935ull, 1110708614108443317ull, 8734445725528565672ull, 2712003027537726126ull}}, {{5116636359730616572ull, 1388385767635554146ull, 1694685120055931282ull, 3390003784422157658ull}}, {{15619167486518046523ull, 10958854246399218490ull, 11341728436924689910ull, 4237504730527697072ull}}, {{14373665697501166981ull, 2237597885572123652ull, 7088580273077931194ull, 2648440456579810670ull}}, {{17967082121876458726ull, 12020369393819930373ull, 18084097378202189800ull, 3310550570724763337ull}}, {{8623794597063409696ull, 15025461742274912967ull, 8770063667470573538ull, 4138188213405954172ull}}, {{12307400650805712916ull, 14002599607349208508ull, 14704661829023884269ull, 2586367633378721357ull}}, {{15384250813507141145ull, 3668191453904346923ull, 4545769230997691625ull, 3232959541723401697ull}}, {{14618627498456538527ull, 9196925335807821558ull, 10293897557174502435ull, 4041199427154252121ull}}, {{4524956168107948676ull, 3442235325666194522ull, 17962901019302533782ull, 2525749641971407575ull}}, {{14879567246989711652ull, 13526166193937518960ull, 17841940255700779323ull, 3157187052464259469ull}}, {{152714985027587949ull, 12296021723994510797ull, 8467367264343810442ull, 3946483815580324337ull}}, {{2401289874855936421ull, 12296699595923957152ull, 16821319586283351286ull, 2466552384737702710ull}}, {{3001612343569920526ull, 6147502458050170632ull, 11803277445999413300ull, 3083190480922128388ull}}, {{3752015429462400657ull, 7684378072562713290ull, 14754096807499266625ull, 3853988101152660485ull}}, {{6956695661841388315ull, 16331951341420165566ull, 11527153513900735592ull, 2408742563220412803ull}}, {{17919241614156511201ull, 1968195103065655341ull, 9797255873948531587ull, 3010928204025516004ull}}, {{8563993962413475290ull, 16295301934114232889ull, 12246569842435664483ull, 3763660255031895005ull}}, {{16881711272576891816ull, 7878720699607701603ull, 9959949160735984254ull, 2352287659394934378ull}}, {{16490453072293726866ull, 625028837654851196ull, 3226564414065204510ull, 2940359574243667973ull}}, {{2166322266657606966ull, 10004658083923339804ull, 8644891536008893541ull, 3675449467804584966ull}}, {{2707902833322008708ull, 17117508623331562659ull, 1582742383156341118ull, 4594311834755731208ull}}, {{17833340335322113107ull, 6086756871154838757ull, 989213989472713199ull, 2871444896722332005ull}}, {{8456617363870477671ull, 2996760070516160543ull, 5848203505268279403ull, 3589306120902915006ull}}, {{5959085686410709185ull, 17581008143427364391ull, 16533626418440125061ull, 4486632651128643757ull}}, {{10641957581647775097ull, 13293973098855796696ull, 12639359520738772115ull, 2804145406955402348ull}}, {{13302446977059718871ull, 12005780355142357966ull, 15799199400923465144ull, 3505181758694252935ull}}, {{7404686684469872780ull, 15007225443927947458ull, 15137313232726943526ull, 4381477198367816169ull}}, {{9239615196221058392ull, 4767829884027579257ull, 2543291742813257848ull, 2738423248979885106ull}}, {{16161205013703710894ull, 5959787355034474071ull, 12402486715371348118ull, 3423029061224856382ull}}, {{15589820248702250713ull, 16673106230647868397ull, 6279736357359409339ull, 4278786326531070478ull}}, {{12049480664652600648ull, 8114848384941223796ull, 17759893278631794549ull, 2674241454081919048ull}}, {{15061850830815750810ull, 14755246499603917649ull, 3753122524580191570ull, 3342801817602398811ull}}, {{4992255483237524800ull, 9220686087650121254ull, 79717137297851559ull, 4178502272002998514ull}}, {{16955217732305616712ull, 12680457832422407639ull, 4661509229238545128ull, 2611563920001874071ull}}, {{16582336146954632986ull, 15850572290528009549ull, 1215200518120793506ull, 3264454900002342589ull}}, {{6892862128411127521ull, 10589843326305236129ull, 6130686666078379787ull, 4080568625002928236ull}}, {{15837253876325424461ull, 4312809069727078628ull, 13055051203153763175ull, 2550355390626830147ull}}, {{1349823271697228960ull, 779325318731460382ull, 11707127985514816065ull, 3187944238283537684ull}}, {{10910651126476312007ull, 5585842666841713381ull, 14633909981893520081ull, 3984930297854422105ull}}, {{9124999963261388957ull, 15020366712844540623ull, 2228664711042368194ull, 2490581436159013816ull}}, {{6794563935649348292ull, 9552086354200899971ull, 2785830888802960243ull, 3113226795198767270ull}}, {{3881518901134297461ull, 7328421924323737060ull, 12705660647858476112ull, 3891533493998459087ull}}, {{11649321350063711721ull, 4580263702702335662ull, 14858566932552629426ull, 2432208433749036929ull}}, {{5338279650724863843ull, 14948701665232695386ull, 4738150610408623070ull, 3040260542186296162ull}}, {{15896221600260855612ull, 9462505044686093424ull, 15146060299865554646ull, 3800325677732870202ull}}, {{9935138500163034758ull, 1302379634501420486ull, 14077973705843359558ull, 2375203548583043876ull}}, {{3195551088349017639ull, 10851346579981551416ull, 17597467132304199447ull, 2969004435728804845ull}}, {{3994438860436272048ull, 8952497206549551366ull, 8161775860098085597ull, 3711255544661006057ull}}, {{16331582343054833742ull, 7901153763307163555ull, 16630324958629773258ull, 2319534715413128785ull}}, {{15802791910391154274ull, 653070167279178636ull, 6952848143005052861ull, 2899418394266410982ull}}, {{1306745814279391226ull, 5428023727526361200ull, 17914432215611091884ull, 3624272992833013727ull}}, {{1633432267849239033ull, 6785029659407951500ull, 17781354251086476951ull, 4530341241041267159ull}}, {{10244267204260550204ull, 11158172564771051543ull, 18030875434570129950ull, 2831463275650791974ull}}, {{8193647986898299851ull, 4724343669109038621ull, 13315222256357886630ull, 3539329094563489968ull}}, {{14853746002050262717ull, 15128801623241074084ull, 16644027820447358287ull, 4424161368204362460ull}}, {{60219214426638390ull, 16373030042166753159ull, 1179145350924823121ull, 2765100855127726538ull}}, {{13910332073315461700ull, 6631229497426277736ull, 10697303725510804710ull, 3456376068909658172ull}}, {{17387915091644327125ull, 17512408908637622978ull, 13371629656888505887ull, 4320470086137072715ull}}, {{15479132950705092357ull, 17862784595539596217ull, 6051425526341622227ull, 2700293803835670447ull}}, {{5513858133099201734ull, 17716794725997107368ull, 2952595889499639880ull, 3375367254794588059ull}}, {{6892322666374002168ull, 3699249333786832594ull, 17525802917156713563ull, 4219209068493235073ull}}, {{8919387684911139259ull, 6187824403076419ull, 4036097795581864121ull, 2637005667808271921ull}}, {{6537548587711536170ull, 4619420798931233428ull, 9656808262904718055ull, 3296257084760339901ull}}, {{8171935734639420212ull, 1162589980236653881ull, 16682696347058285473ull, 4120321355950424876ull}}, {{16636674880218107393ull, 12255833783716378435ull, 1203313180056652612ull, 2575200847469015548ull}}, {{16184157581845246337ull, 15319792229645473044ull, 1504141475070815765ull, 3219001059336269435ull}}, {{1783452903597006305ull, 5314682231774677594ull, 15715234899120683419ull, 4023751324170336793ull}}, {{5726344083175516845ull, 1015833385645479544ull, 2904492784309345281ull, 2514844577606460496ull}}, {{7157930103969396056ull, 5881477750484237334ull, 3630615980386681601ull, 3143555722008075620ull}}, {{18170784666816520877ull, 11963533206532684571ull, 4538269975483352001ull, 3929444652510094525ull}}, {{9050897407546631597ull, 559679226441846001ull, 5142261743890788953ull, 2455902907818809078ull}}, {{15925307777860677400ull, 5311285051479695405ull, 15651199216718261999ull, 3069878634773511347ull}}, {{6071576667043683037ull, 2027420295922231353ull, 14952313002470439595ull, 3837348293466889184ull}}, {{15323950462970771659ull, 17408038749447252259ull, 9345195626544024746ull, 2398342683416805740ull}}, {{14543252060286076669ull, 12536676399954289516ull, 11681494533180030933ull, 2997928354271007175ull}}, {{18179065075357595836ull, 1835787444660698183ull, 9990182148047650763ull, 3747410442838758969ull}}, {{18279444699739579254ull, 17288268217408794028ull, 17773078888598251486ull, 2342131526774224355ull}}, {{4402561800964922451ull, 12386963234906216728ull, 17604662592320426454ull, 2927664408467780444ull}}, {{5503202251206153064ull, 6260332006777995102ull, 3559084166690981452ull, 3659580510584725556ull}}, {{16102374850862467138ull, 7825415008472493877ull, 4448855208363726815ull, 4574475638230906945ull}}, {{12369827291002735913ull, 11808413407936390529ull, 14309749551295799019ull, 2859047273894316840ull}}, {{1627226058471256179ull, 10148830741493100258ull, 17887186939119748774ull, 3573809092367896050ull}}, {{11257404609943846032ull, 3462666390011599514ull, 13135611637044910160ull, 4467261365459870063ull}}, {{11647563899642291674ull, 2164166493757249696ull, 15127286300794150706ull, 2792038353412418789ull}}, {{14559454874552864593ull, 11928580154051337928ull, 5074049820710524670ull, 3490047941765523487ull}}, {{18199318593191080741ull, 5687353155709396602ull, 1730876257460767934ull, 4362559927206904359ull}}, {{15986260139171813367ull, 17389653777600536588ull, 7999326688554061814ull, 2726599954504315224ull}}, {{1536081100255215093ull, 12513695185145894928ull, 9999158360692577268ull, 3408249943130394030ull}}, {{1920101375319018866ull, 15642118981432368660ull, 3275575914010945777ull, 4260312428912992538ull}}, {{10423435396429162599ull, 2858795335754148556ull, 6658920964684229015ull, 2662695268070620336ull}}, {{13029294245536453249ull, 17408552224974849407ull, 8323651205855286268ull, 3328369085088275420ull}}, {{11674931788493178657ull, 3313946207509010143ull, 10404564007319107836ull, 4160461356360344275ull}}, {{14214361395449318517ull, 11294588416547907147ull, 4197009495360748445ull, 2600288347725215172ull}}, {{13156265725884260242ull, 283177465402720222ull, 5246261869200935557ull, 3250360434656518965ull}}, {{7221960120500549494ull, 4965657850180788182ull, 11169513354928557350ull, 4062950543320648706ull}}, {{18348783130595007146ull, 16938594211645156325ull, 11592631865257736247ull, 2539344089575405441ull}}, {{9100920857961595221ull, 16561556746129057503ull, 655731776290006597ull, 3174180111969256802ull}}, {{6764465054024606122ull, 6866887877379158167ull, 10043036757217284055ull, 3967725139961571002ull}}, {{11145319686406460682ull, 11209333951003055710ull, 10888583991688190438ull, 2479828212475981876ull}}, {{4708277571153300045ull, 4788295401899043830ull, 13610729989610238048ull, 3099785265594977345ull}}, {{15108719000796400864ull, 5985369252373804787ull, 3178354431730633848ull, 3874731581993721682ull}}, {{7137106366284056588ull, 3740855782733627992ull, 6598157538259034059ull, 2421707238746076051ull}}, {{8921382957855070735ull, 64383709989647086ull, 3636010904396404670ull, 3027134048432595064ull}}, {{1928356660464062610ull, 9303851674341834666ull, 4545013630495505837ull, 3783917560540743830ull}}, {{5816908931217427036ull, 8120750305677340618ull, 16675691574341854860ull, 2364948475337964893ull}}, {{16494508200876559603ull, 10150937882096675772ull, 7009556412645154863ull, 2956185594172456117ull}}, {{2171391177386147887ull, 8076986334193456812ull, 13373631534233831483ull, 3695231992715570146ull}}, {{10580491522721118238ull, 2742273449657216555ull, 12970205727323532581ull, 2309519995447231341ull}}, {{8613928384974009893ull, 8039527830498908598ull, 2377699103872252014ull, 2886899994309039177ull}}, {{1544038444362736558ull, 826037751268859940ull, 7583809898267702922ull, 3608624992886298971ull}}, {{1930048055453420697ull, 10255919225940850733ull, 4868076354407240748ull, 4510781241107873714ull}}, {{3512123043872081888ull, 15633321553067807516ull, 7654233739931913371ull, 2819238275692421071ull}}, {{4390153804840102360ull, 14929965922907371491ull, 4956106156487503810ull, 3524047844615526339ull}}, {{876006237622740046ull, 9439085366779438556ull, 1583446677181991859ull, 4405059805769407924ull}}, {{9770875935368988337ull, 3593585345023455145ull, 10213026210093520720ull, 2753162378605879952ull}}, {{16825280937638623325ull, 4491981681279318931ull, 12766282762616900900ull, 3441452973257349940ull}}, {{16419915153620891252ull, 5614977101599148664ull, 15957853453271126125ull, 4301816216571687425ull}}, {{10262446971013057033ull, 5815203697713161867ull, 3056129380653371972ull, 2688635135357304641ull}}, {{8216372695338933387ull, 7269004622141452334ull, 8431847744244102869ull, 3360793919196630801ull}}, {{1047093832318890925ull, 13697941796104203322ull, 15151495698732516490ull, 4200992398995788501ull}}, {{5266119663626694732ull, 13172899640992514980ull, 11775527820921516758ull, 2625620249372367813ull}}, {{6582649579533368415ull, 7242752514385867917ull, 884351720869732236ull, 3282025311715459767ull}}, {{12839997992844098423ull, 9053440642982334896ull, 14940497706369329007ull, 4102531639644324708ull}}, {{8024998745527561515ull, 12575929429505041166ull, 114439029626054821ull, 2564082274777702943ull}}, {{807876395054676085ull, 1884853731599137746ull, 13978106842314732239ull, 3205102843472128678ull}}, {{10233217530673120914ull, 16191125219781085894ull, 8249261516038639490ull, 4006378554340160848ull}}, {{1784074938243312668ull, 14731139280790566588ull, 5155788447524149681ull, 2503986596462600530ull}}, {{2230093672804140834ull, 4578866045706044523ull, 15668107596259962910ull, 3129983245578250662ull}}, {{16622675146287339755ull, 14946954593987331461ull, 10361762458470177829ull, 3912479056972813328ull}}, {{12695014975643281299ull, 11647689630455776115ull, 6476101536543861143ull, 2445299410608008330ull}}, {{11257082701126713720ull, 9947926019642332240ull, 17318498957534602237ull, 3056624263260010412ull}}, {{14071353376408392149ull, 17046593542980303204ull, 3201379623208701180ull, 3820780329075013016ull}}, {{18017967897110020902ull, 1430748927507913694ull, 2000862264505438238ull, 2387987705671883135ull}}, {{13299087834532750319ull, 11011808196239667926ull, 16336135885913961509ull, 2984984632089853918ull}}, {{7400487756311162090ull, 18376446263726972812ull, 11196797820537676078ull, 3731230790112317398ull}}, {{13848676884549252115ull, 6873592896401970103ull, 2386312619408659645ull, 2332019243820198374ull}}, {{12699160087259177239ull, 13203677138929850533ull, 12206262811115600364ull, 2915024054775247967ull}}, {{2038892053791807837ull, 16504596423662313167ull, 10646142495467112551ull, 3643780068469059959ull}}, {{16383673122521923508ull, 16019059511150503554ull, 8695992100906502785ull, 4554725085586324949ull}}, {{14851481720003590097ull, 3094383166827982865ull, 7740838072280258193ull, 2846703178491453093ull}}, {{4729294094722323909ull, 8479664976962366486ull, 14287733608777710645ull, 3558378973114316366ull}}, {{15134989655257680694ull, 15211267239630346011ull, 8636294974117362498ull, 4447973716392895458ull}}, {{7153525525322356482ull, 14118728043196354161ull, 10009370377250739465ull, 2779983572745559661ull}}, {{13553592925080333506ull, 3813351998713278989ull, 17123398989990812236ull, 3474979465931949576ull}}, {{3106933101068253171ull, 4766689998391598737ull, 2957504663778963679ull, 4343724332414936971ull}}, {{13471048234236127992ull, 9896710276635831066ull, 17989341479357709963ull, 2714827707759335606ull}}, {{7615438255940384182ull, 7759201827367400929ull, 13263304812342361646ull, 3393534634699169508ull}}, {{14130983838352868131ull, 475630247354475353ull, 16579131015427952058ull, 4241918293373961885ull}}, {{1914335871329460726ull, 4908954923023935000ull, 12667799893856163988ull, 2651198933358726178ull}}, {{2392919839161825907ull, 6136193653779918750ull, 6611377830465429177ull, 3313998666698407723ull}}, {{12214521835807058192ull, 12281928085652286341ull, 3652536269654398567ull, 4142498333373009654ull}}, {{9939919156593105322ull, 14593734081173760819ull, 16117893223816162816ull, 2589061458358131033ull}}, {{7813212927313993749ull, 18242167601467201024ull, 6312308474488039808ull, 3236326822947663792ull}}, {{9766516159142492186ull, 4355965428124449664ull, 7890385593110049761ull, 4045408528684579740ull}}, {{6104072599464057616ull, 14251693438646250800ull, 14154863032548556908ull, 2528380330427862337ull}}, {{7630090749330072020ull, 17814616798307813500ull, 3858520735403532423ull, 3160475413034827922ull}}, {{9537613436662590025ull, 17656584979457378971ull, 14046522956109191337ull, 3950594266293534902ull}}, {{3655165388700424814ull, 4117836584519780001ull, 4167390829140856682ull, 2469121416433459314ull}}, {{9180642754302918921ull, 14370667767504500809ull, 14432610573280846660ull, 3086401770541824142ull}}, {{16087489461306036555ull, 17963334709380626011ull, 8817391179746282517ull, 3858002213177280178ull}}, {{7748837904102578895ull, 13532927202576585209ull, 10122555505768814477ull, 2411251383235800111ull}}, {{14297733398555611523ull, 3081100947938567799ull, 8041508363783630193ull, 3014064229044750139ull}}, {{13260480729767126500ull, 8463062203350597653ull, 5440199436302149837ull, 3767580286305937674ull}}, {{10593643465318148015ull, 7595256886307817485ull, 8011810666116231552ull, 2354737678941211046ull}}, {{17853740350075072922ull, 9494071107884771856ull, 791391295790513632ull, 2943422098676513808ull}}, {{3870431363884289536ull, 11867588884855964821ull, 989239119738142040ull, 3679277623345642260ull}}, {{9449725223282749824ull, 14834486106069956026ull, 1236548899672677550ull, 4599097029182052825ull}}, {{10517764282979106544ull, 4659867797866334612ull, 12302058108363893229ull, 2874435643238783015ull}}, {{13147205353723883180ull, 10436520765760306169ull, 10765886617027478632ull, 3593044554048478769ull}}, {{2598948636872690263ull, 13045650957200382712ull, 18069044289711736194ull, 4491305692560598461ull}}, {{1624342898045431415ull, 12765217866677627099ull, 13598995690283529073ull, 2807066057850374038ull}}, {{15865486677838952980ull, 2121464278064870161ull, 7775372575999635534ull, 3508832572312967548ull}}, {{5996800292016527513ull, 11875202384435863510ull, 9719215719999544417ull, 4386040715391209435ull}}, {{17583058237792493408ull, 504472462631332837ull, 3768666815786021309ull, 2741275447119505897ull}}, {{8143764741958453048ull, 5242276596716553951ull, 9322519538159914540ull, 3426594308899382371ull}}, {{5568019909020678406ull, 6552845745895692439ull, 7041463404272505271ull, 4283242886124227964ull}}, {{10397541470779005860ull, 11013057618825889630ull, 13624286664525091602ull, 2677026803827642477ull}}, {{3773554801618981517ull, 4542949986677586230ull, 3195300275374200791ull, 3346283504784553097ull}}, {{13940315538878502704ull, 1067001464919594883ull, 8605811362645138893ull, 4182854380980691371ull}}, {{6406854202585370238ull, 2972718924788440754ull, 3072789092439517856ull, 2614283988112932107ull}}, {{17231939790086488605ull, 3715898655985550942ull, 17676044420831561032ull, 3267854985141165133ull}}, {{12316552700753334949ull, 4644873319981938678ull, 8259997470757287578ull, 4084818731426456417ull}}, {{3086159419543446439ull, 7514731843416099578ull, 16691713465291774496ull, 2553011707141535260ull}}, {{13081071311284083857ull, 9393414804270124472ull, 2417897757905166504ull, 3191264633926919076ull}}, {{16351339139105104821ull, 11741768505337655590ull, 3022372197381458130ull, 3989080792408648845ull}}, {{5607900943513302609ull, 11950291334263422648ull, 4194825632577105283ull, 2493175495255405528ull}}, {{7009876179391628261ull, 10326178149401890406ull, 5243532040721381604ull, 3116469369069256910ull}}, {{17985717261094311134ull, 12907722686752363007ull, 15777787087756502813ull, 3895586711336571137ull}}, {{18158602315825026315ull, 10373169688433920831ull, 2943587902206732402ull, 2434741694585356961ull}}, {{18086566876353894990ull, 3743090073687625231ull, 8291170896185803407ull, 3043427118231696201ull}}, {{17996522577014980833ull, 67176573682143635ull, 14975649638659642163ull, 3804283897789620251ull}}, {{8941983601420669069ull, 16182886423047197436ull, 7053938014948582399ull, 2377677436118512657ull}}, {{11177479501775836336ull, 15616922010381608891ull, 13429108537113115903ull, 2972096795148140821ull}}, {{9360163358792407516ull, 14909466494549623210ull, 2951327616109231167ull, 3715120993935176027ull}}, {{10461788117672642602ull, 16235945586734596362ull, 17985480824564127143ull, 2321950621209485016ull}}, {{3853863110236027444ull, 15683245964990857549ull, 4035106956995607313ull, 2902438276511856271ull}}, {{9429014906222422209ull, 5768999400956408224ull, 432197677817121238ull, 3628047845639820339ull}}, {{11786268632778027761ull, 16434621288050286088ull, 14375305152553565259ull, 4535059807049775423ull}}, {{7366417895486267351ull, 7965795295817734853ull, 15902094747987060143ull, 2834412379406109639ull}}, {{13819708387785222092ull, 5345558101344780662ull, 15265932416556437275ull, 3543015474257637049ull}}, {{8051263447876751807ull, 2070261608253587924ull, 5247357465413382882ull, 4428769342822046312ull}}, {{14255411691777745688ull, 5905599523585880356ull, 3279598415883364301ull, 2767980839263778945ull}}, {{17819264614722182110ull, 11993685422909738349ull, 8711184038281593280ull, 3459976049079723681ull}}, {{8439022713120563925ull, 14992106778637172937ull, 15500666066279379504ull, 4324970061349654601ull}}, {{16803604241768822213ull, 9370066736648233085ull, 2770387263783530334ull, 2703106288343534126ull}}, {{7169447246928864054ull, 2489211383955515549ull, 12686356116584188726ull, 3378882860429417657ull}}, {{13573495077088467972ull, 12334886266799170244ull, 2022887090448072195ull, 4223603575536772072ull}}, {{17706806460035068291ull, 5403460907535787450ull, 1264304431530045122ull, 2639752234710482545ull}}, {{12910136038189059555ull, 15977698171274510121ull, 6192066557839944306ull, 3299690293388103181ull}}, {{2302611992454160732ull, 10748750677238361844ull, 12351769215727318287ull, 4124612866735128976ull}}, {{10662504532138626266ull, 13635498200915058008ull, 7719855759829573929ull, 2577883041709455610ull}}, {{13328130665173282832ull, 3209314695861658798ull, 426447662932191604ull, 3222353802136819513ull}}, {{7436791294611827732ull, 4011643369827073498ull, 5144745597092627409ull, 4027942252671024391ull}}, {{9259680577559780236ull, 14036492152210390696ull, 10132995025823973986ull, 2517463907919390244ull}}, {{11574600721949725295ull, 8322243153408212562ull, 12666243782279967483ull, 3146829884899237805ull}}, {{5244878865582380811ull, 5791117923332877799ull, 1997746672567795642ull, 3933537356124047257ull}}, {{10195578318630069863ull, 8231134720510436528ull, 12777806716423342036ull, 2458460847577529535ull}}, {{12744472898287587329ull, 10288918400638045660ull, 11360572377101789641ull, 3073076059471911919ull}}, {{15930591122859484161ull, 17472834019224944979ull, 9589029452949849147ull, 3841345074339889899ull}}, {{7650776442573483649ull, 8614678252801896660ull, 3687300398879961765ull, 2400840671462431187ull}}, {{9563470553216854561ull, 15380033834429758729ull, 18444183553882115918ull, 3001050839328038983ull}}, {{16566024209948456105ull, 10001670256182422603ull, 18443543423925256994ull, 3751313549160048729ull}}, {{8047922122004091114ull, 10862729928541402031ull, 4609685612312203765ull, 2344570968225030456ull}}, {{5448216634077725988ull, 18190098429104140443ull, 5762107015390254706ull, 2930713710281288070ull}}, {{2198584774169769581ull, 13514250999525399746ull, 16426005806092594191ull, 3663392137851610087ull}}, {{11971603004566987784ull, 12281127730979361778ull, 15920821239188354835ull, 4579240172314512609ull}}, {{12093937896281755269ull, 5369861822648407159ull, 3032984246851639916ull, 2862025107696570381ull}}, {{10505736351924806182ull, 6712327278310508949ull, 8402916326991937799ull, 3577531384620712976ull}}, {{17743856458333395632ull, 3778723079460748282ull, 10503645408739922249ull, 4471914230775891220ull}}, {{15701596304885760174ull, 13890916970731437436ull, 15788150417317227213ull, 2794946394234932012ull}}, {{1180251307397648602ull, 3528588158132133084ull, 1288443947936982401ull, 3493682992793665016ull}}, {{1475314134247060752ull, 9022421216092554259ull, 1610554934921228001ull, 4367103740992081270ull}}, {{17062972398400270634ull, 17168228306126316171ull, 14841654889607931212ull, 2729439838120050793ull}}, {{16717029479572950388ull, 3013541308948343598ull, 4717010556727750304ull, 3411799797650063492ull}}, {{11672914812611412177ull, 3766926636185429498ull, 5896263195909687880ull, 4264749747062579365ull}}, {{11907257776309520515ull, 2354329147615893436ull, 5991007506657248877ull, 2665468591914112103ull}}, {{14884072220386900644ull, 7554597452947254699ull, 2877073364894173192ull, 3331835739892640129ull}}, {{13993404257056237901ull, 9443246816184068374ull, 8208027724545104394ull, 4164794674865800161ull}}, {{4134191642232760784ull, 10513715278542430638ull, 16659232373909160006ull, 2602996671791125100ull}}, {{14391111589645726788ull, 3918772061323262489ull, 2377296393676898392ull, 3253745839738906376ull}}, {{4153831431774994773ull, 4898465076654078112ull, 2971620492096122990ull, 4067182299673632970ull}}, {{2596144644859371733ull, 16896598728190962532ull, 6468948825987464772ull, 2541988937296020606ull}}, {{3245180806074214666ull, 2674004336529151549ull, 17309558069339106774ull, 3177486171620025757ull}}, {{8668162026020156237ull, 12565877457516215244ull, 7801889531391719755ull, 3971857714525032197ull}}, {{14640973303117373456ull, 5547830401733940575ull, 7182023966333518799ull, 2482411071578145123ull}}, {{13689530610469328916ull, 2323101983740037815ull, 4365843939489510595ull, 3103013839472681404ull}}, {{12500227244659273241ull, 16738935534957210981ull, 5457304924361888243ull, 3878767299340851755ull}}, {{10118485037125739728ull, 8155991700134562911ull, 1104972568512486200ull, 2424229562088032347ull}}, {{8036420277979786756ull, 10194989625168203639ull, 15216273765922771462ull, 3030286952610040433ull}}, {{5433839329047345540ull, 3520364994605478741ull, 5185284152121300616ull, 3787858690762550542ull}}, {{5701992589868284915ull, 2200228121628424213ull, 17075860650357976597ull, 2367411681726594088ull}}, {{11739176755762744048ull, 7361971170462918170ull, 2898081739237919130ull, 2959264602158242611ull}}, {{5450598907848654251ull, 18425835999933423521ull, 17457660229329562624ull, 3699080752697803263ull}}, {{14935839363473878667ull, 11516147499958389700ull, 17828566670972058496ull, 2311925470436127039ull}}, {{223055130632796718ull, 14395184374947987126ull, 17674022320287685216ull, 2889906838045158799ull}}, {{9502190950145771705ull, 17993980468684983907ull, 17480841881932218616ull, 3612383547556448499ull}}, {{7266052669254826728ull, 4045731512146678268ull, 17239366333987885367ull, 4515479434445560624ull}}, {{13764654955139042513ull, 9446111222732755773ull, 10774603958742428354ull, 2822174646528475390ull}}, {{3370760638641639429ull, 2584266991561168909ull, 4244882911573259635ull, 3527718308160594238ull}}, {{8825136816729437190ull, 17065391794733624848ull, 14529475676321350351ull, 4409647885200742797ull}}, {{5515710510455898244ull, 17583398899349597386ull, 11386765306914537921ull, 2756029928250464248ull}}, {{16118010174924648613ull, 8144190568904833020ull, 14233456633643172402ull, 3445037410313080310ull}}, {{1700768644946259150ull, 956866174276265468ull, 8568448755199189695ull, 4306296762891350388ull}}, {{10286352439946187777ull, 7515570386563747773ull, 14578652508854269367ull, 2691435476807093992ull}}, {{17469626568360122625ull, 4782776964777296812ull, 18223315636067836709ull, 3364294346008867490ull}}, {{3390289136740601665ull, 10590157224399008920ull, 13555772508230020078ull, 4205367932511084363ull}}, {{2118930710462876041ull, 2007162246821992671ull, 6166514808430068597ull, 2628354957819427727ull}}, {{16483721443360758763ull, 7120638826954878742ull, 3096457492110197842ull, 3285443697274284659ull}}, {{11381279767346172646ull, 18124170570548374236ull, 17705629920419911014ull, 4106804621592855823ull}}, {{16336671891446133712ull, 6715920588165345993ull, 17983547727903526240ull, 2566752888495534889ull}}, {{6585781809025503428ull, 8394900735206682492ull, 8644376604597244088ull, 3208441110619418612ull}}, {{8232227261281879284ull, 10493625919008353115ull, 10805470755746555110ull, 4010551388274273265ull}}, {{2839299029087480601ull, 1946830180952832793ull, 18282634268410066704ull, 2506594617671420790ull}}, {{8160809804786738655ull, 2433537726191040991ull, 13629920798657807572ull, 3133243272089275988ull}}, {{5589326237556035415ull, 3041922157738801239ull, 17037400998322259465ull, 3916554090111594985ull}}, {{10410857926113603990ull, 13430416394655220534ull, 3730846596310330309ull, 2447846306319746866ull}}, {{3790200370787229180ull, 2952962438036861956ull, 13886930282242688695ull, 3059807882899683582ull}}, {{4737750463484036475ull, 17526261102828241157ull, 8135290815948585060ull, 3824759853624604478ull}}, {{5266937048891216749ull, 1730541152412874915ull, 472870741540477759ull, 2390474908515377799ull}}, {{1971985292686633032ull, 15998234495798257356ull, 14426146482207760910ull, 2988093635644222248ull}}, {{2464981615858291290ull, 10774421082893045887ull, 18032683102759701138ull, 3735117044555277810ull}}, {{8458142537552513912ull, 11345699195235541583ull, 15882112957652201115ull, 2334448152847048631ull}}, {{5960992153513254486ull, 9570437975617039075ull, 15240955178637863490ull, 2918060191058810789ull}}, {{2839554173464180204ull, 2739675432666523036ull, 5216135918015165651ull, 3647575238823513487ull}}, {{3549442716830225254ull, 17259652346115317507ull, 1908483879091569159ull, 4559469048529391859ull}}, {{18359302762514748448ull, 17704811743963155297ull, 17333703488928088388ull, 2849668155330869911ull}}, {{9114070397861271848ull, 3684270606244392506ull, 17055443342732722582ull, 3562085194163587389ull}}, {{2169215960471814002ull, 13828710294660266441ull, 7484246123133739515ull, 4452606492704484237ull}}, {{12884975021363353511ull, 6337100924948972573ull, 6983496836172281149ull, 2782879057940302648ull}}, {{2271160721422028177ull, 12533062174613603621ull, 8729371045215351436ull, 3478598822425378310ull}}, {{7450636920204923125ull, 15666327718267004526ull, 1688341769664413487ull, 4348248528031722888ull}}, {{44962056700689050ull, 16708983851557959685ull, 1055213606040258429ull, 2717655330019826805ull}}, {{4667888589303249216ull, 7051171759165285894ull, 5930703025977710941ull, 3397069162524783506ull}}, {{15058232773483837328ull, 13425650717383995271ull, 16636750819326914484ull, 4246336453155979382ull}}, {{16328924511068480186ull, 17614403735219772852ull, 5786283243651933648ull, 2653960283222487114ull}}, {{1964411565126048616ull, 3571260595315164450ull, 16456226091419692869ull, 3317450354028108892ull}}, {{11678886493262336578ull, 9075761762571343466ull, 2123538540565064470ull, 4146812942535136116ull}}, {{11910990076716348266ull, 1060665083179701762ull, 10550583624707941102ull, 2591758089084460072ull}}, {{5665365559040659524ull, 10549203390829403011ull, 13188229530884926377ull, 3239697611355575090ull}}, {{2470020930373436501ull, 17798190256964141668ull, 7261914876751382163ull, 4049622014194468863ull}}, {{10767135118338173621ull, 8818025901388894590ull, 11456225825610695708ull, 2531013758871543039ull}}, {{4235546861067941218ull, 11022532376736118238ull, 9708596263585981731ull, 3163767198589428799ull}}, {{14517805613189702331ull, 9166479452492759893ull, 7524059311055089260ull, 3954708998236785999ull}}, {{11379471517457257909ull, 14952421694662750741ull, 11620066097050512643ull, 2471693123897991249ull}}, {{389281341539408674ull, 14078841099901050523ull, 690024566030977092ull, 3089616404872489062ull}}, {{14321659732206424554ull, 17598551374876313153ull, 10085902744393497173ull, 3862020506090611327ull}}, {{2033508304987933491ull, 13304937618511389673ull, 13221218242887017589ull, 2413762816306632079ull}}, {{7153571399662304767ull, 2796113967857073379ull, 11914836785181384083ull, 3017203520383290099ull}}, {{4330278231150493055ull, 17330200515103505436ull, 10281859963049342199ull, 3771504400479112624ull}}, {{11929795931323833968ull, 17748904349580772753ull, 6426162476905838874ull, 2357190250299445390ull}}, {{1077186858872628747ull, 12962758400121190134ull, 17256075132987074401ull, 2946487812874306737ull}}, {{10569855610445561742ull, 2368389944869323955ull, 7735035860951679290ull, 3683109766092883422ull}}, {{8600633494629564273ull, 12183859467941430752ull, 445422789334823304ull, 4603887207616104278ull}}, {{5375395934143477671ull, 7614912167463394220ull, 14113447298616428277ull, 2877429504760065173ull}}, {{6719244917679347089ull, 14130326227756630679ull, 3806751067988371634ull, 3596786880950081467ull}}, {{3787370128671795957ull, 8439535747841012541ull, 146752816558076639ull, 4495983601187601834ull}}, {{4672949339633566425ull, 12192238870041714694ull, 4703406528776185803ull, 2809989750742251146ull}}, {{15064558711396733839ull, 10628612569124755463ull, 15102630197825008062ull, 3512487188427813932ull}}, {{14219012370818529395ull, 4062393674551168521ull, 431543673571708462ull, 4390608985534767416ull}}, {{1969353704120499016ull, 16374054101876644038ull, 269714795982317788ull, 2744130615959229635ull}}, {{11685064167005399578ull, 2020823553636253431ull, 14172201550260060948ull, 3430163269949037043ull}}, {{9994644190329361568ull, 2526029442045316789ull, 13103565919397688281ull, 4287704087436296304ull}}, {{8552495628169544932ull, 13107983447346792753ull, 8189728699623555175ull, 2679815054647685190ull}}, {{15302305553639319069ull, 11773293290756103037ull, 1013788837674668161ull, 3349768818309606488ull}}, {{5292823886766985125ull, 881558558162965085ull, 1267236047093335202ull, 4187211022887008110ull}}, {{5613857938443059655ull, 5162660117279241082ull, 14627080584715498213ull, 2617006889304380068ull}}, {{16240694459908600377ull, 11065011165026439256ull, 18283850730894372766ull, 3271258611630475085ull}}, {{1854124001176198855ull, 4607891919428273263ull, 9019755358335802246ull, 4089073264538093857ull}}, {{8076356528376206140ull, 16714990504924834501ull, 17166562145028346163ull, 2555670790336308660ull}}, {{14707131678897645579ull, 16282052112728655222ull, 3011458607575881088ull, 3194588487920385826ull}}, {{9160542561767281166ull, 1905821067201267412ull, 12987695296324627169ull, 3993235609900482282ull}}, {{14948711137959326537ull, 12720353213069261892ull, 12728995578630279884ull, 2495772256187801426ull}}, {{239144848739606555ull, 15900441516336577366ull, 6687872436433074047ull, 3119715320234751783ull}}, {{9522303097779284002ull, 15263865876993333803ull, 3748154527113954655ull, 3899644150293439729ull}}, {{3645596426898358549ull, 16457445200761915483ull, 13871811625514691419ull, 2437277593933399830ull}}, {{18392053588905111898ull, 15960120482525006449ull, 8116392495038588466ull, 3046596992416749788ull}}, {{9155008930849226161ull, 10726778566301482254ull, 10145490618798235583ull, 3808246240520937235ull}}, {{1110194563353378447ull, 13621765631579508265ull, 4035088627535203287ull, 2380153900325585772ull}}, {{5999429222619110962ull, 12415521021046997427ull, 5043860784419004109ull, 2975192375406982215ull}}, {{2887600509846500799ull, 1684343221026583072ull, 1693139962096367233ull, 3718990469258727769ull}}, {{1804750318654062999ull, 12581929559210084180ull, 12587427522378699280ull, 2324369043286704855ull}}, {{2255937898317578749ull, 15727411949012605225ull, 11122598384545986196ull, 2905461304108381069ull}}, {{7431608391324361340ull, 1212520862556204915ull, 68189925400319034ull, 3631826630135476337ull}}, {{4677824470728063771ull, 10739023115050031952ull, 4696923425177786696ull, 4539783287669345421ull}}, {{2923640294205039857ull, 6711889446906269970ull, 5241420149949810637ull, 2837364554793340888ull}}, {{12877922404611075629ull, 13001547827060225366ull, 6551775187437263296ull, 3546705693491676110ull}}, {{6874030968909068729ull, 16251934783825281708ull, 17413091021151354928ull, 4433382116864595137ull}}, {{13519641392422943764ull, 10157459239890801067ull, 3965652860578514974ull, 2770863823040371961ull}}, {{12287865722101291800ull, 3473452013008725526ull, 9568752094150531622ull, 3463579778800464951ull}}, {{6136460115771838942ull, 13565187053115682716ull, 7349254099260776623ull, 4329474723500581189ull}}, {{13058659609212175147ull, 15395770935838383553ull, 6899126821251679341ull, 2705921702187863243ull}}, {{2488266456233055222ull, 5409655614515815730ull, 4012222508137211273ull, 3382402127734829054ull}}, {{12333705107146094835ull, 11373755536572157566ull, 14238650172026289899ull, 4228002659668536317ull}}, {{3096879673538921368ull, 4802754201143904527ull, 11204999366730125139ull, 2642501662292835198ull}}, {{17706157647205815422ull, 1391756733002492754ull, 4782877171557880616ull, 3303127077866043998ull}}, {{12909325022152493469ull, 1739695916253115943ull, 15201968501302126578ull, 4128908847332554997ull}}, {{14985857166486390275ull, 5698995966085585368ull, 11807073322527523063ull, 2580568029582846873ull}}, {{285577384398436227ull, 2512058939179593807ull, 923783597877240117ull, 3225710036978558592ull}}, {{14192029785780208996ull, 7751759692401880162ull, 1154729497346550146ull, 4032137546223198240ull}}, {{13481704634540018527ull, 9456535826178563005ull, 721705935841593841ull, 2520085966389498900ull}}, {{3017072737892859446ull, 16432355801150591661ull, 902132419801992301ull, 3150107457986873625ull}}, {{8383026940793462211ull, 6705386696156075864ull, 5739351543179878281ull, 3937634322483592031ull}}, {{5239391837995913882ull, 15720081731166017175ull, 10504623742128505781ull, 2461021451552245019ull}}, {{1937553779067504449ull, 5815044108675357757ull, 8519093659233244323ull, 3076276814440306274ull}}, {{7033628242261768465ull, 2657119117416809292ull, 1425495037186779596ull, 3845346018050382843ull}}, {{13619389688268381099ull, 10884071485240281615ull, 17031835462737594911ull, 2403341261281489276ull}}, {{12412551091908088469ull, 8993403338122964115ull, 2843050254712442023ull, 3004176576601861596ull}}, {{10904002846457722682ull, 6630068154226317240ull, 3553812818390552529ull, 3755220720752326995ull}}, {{6815001779036076677ull, 15673007642459918035ull, 18362034075989952994ull, 2347012950470204371ull}}, {{3907066205367707942ull, 10367887516220121736ull, 18340856576560053339ull, 2933766188087755464ull}}, {{4883832756709634927ull, 8348173376847764266ull, 4479326646990515058ull, 3667207735109694331ull}}, {{15328162982741819467ull, 1211844684204929524ull, 987472290310755919ull, 4584009668887117914ull}}, {{356729827358861359ull, 7674931955269162809ull, 5228856199871610353ull, 2865006043054448696ull}}, {{5057598302625964603ull, 14205350962513841415ull, 6536070249839512941ull, 3581257553818060870ull}}, {{1710311859855067849ull, 3921630647860138057ull, 17393459849154166985ull, 4476571942272576087ull}}, {{12598159958477887166ull, 13980234200981056045ull, 17788441433362436221ull, 2797857463920360054ull}}, {{1912641892815195245ull, 3640234695944156345ull, 13012179754848269469ull, 3497321829900450068ull}}, {{7002488384446381960ull, 9161979388357583335ull, 16265224693560336836ull, 4371652287375562585ull}}, {{11294084267920070581ull, 14949609154578265392ull, 3248236405834128666ull, 2732282679609726616ull}}, {{14117605334900088227ull, 9463639406368055932ull, 4060295507292660833ull, 3415353349512158270ull}}, {{17647006668625110283ull, 16441235276387457819ull, 14298741420970601849ull, 4269191686890197837ull}}, {{8723536158676999975ull, 3358243020101079281ull, 11242556397320320108ull, 2668244804306373648ull}}, {{15516106216773637873ull, 4197803775126349101ull, 14053195496650400135ull, 3335306005382967060ull}}, {{5560074715684883629ull, 635568700480548473ull, 17566494370813000169ull, 4169132506728708825ull}}, {{15004261743371522028ull, 11926445483868812555ull, 4061529954117043249ull, 2605707816705443016ull}}, {{14143641160787014631ull, 1072998799553851982ull, 5076912442646304062ull, 3257134770881803770ull}}, {{8456179414128992481ull, 10564620536297090786ull, 15569512590162655885ull, 4071418463602254712ull}}, {{9896798152258008205ull, 8908730844399375693ull, 9730945368851659928ull, 2544636539751409195ull}}, {{16982683708749898160ull, 11135913555499219616ull, 7551995692637187006ull, 3180795674689261494ull}}, {{2781610562227821084ull, 4696519907519248713ull, 216622578941707950ull, 3975994593361576868ull}}, {{13267721647460857937ull, 16770382997481694157ull, 9358761148693343276ull, 2484996620850985542ull}}, {{2749594004043908710ull, 2516234673142566081ull, 2475079399011903288ull, 3106245776063731928ull}}, {{8048678523482273791ull, 3145293341428207601ull, 3093849248764879110ull, 3882807220079664910ull}}, {{16559639123244890880ull, 15800866393674793462ull, 15768713835760213155ull, 2426754512549790568ull}}, {{11476176867201337791ull, 15139396973666103924ull, 1264148220990714828ull, 3033443140687238211ull}}, {{14345221084001672239ull, 477502143373078289ull, 15415243331520557248ull, 3791803925859047763ull}}, {{2048234149859963294ull, 298438839608173931ull, 7328684072986654328ull, 2369877453661904852ull}}, {{16395350742607117829ull, 373048549510217413ull, 9160855091233317910ull, 2962346817077381065ull}}, {{6659130372976733574ull, 9689682723742547575ull, 16062754882469035291ull, 3702933521346726331ull}}, {{11079485510751540340ull, 3750208693125398282ull, 7733378792329453105ull, 2314333450841703957ull}}, {{4625984851584649617ull, 9299446884834135757ull, 14278409508839204285ull, 2892916813552129946ull}}, {{10394167082908199925ull, 16235994624470057600ull, 8624639849194229548ull, 3616146016940162433ull}}, {{12992708853635249906ull, 1848249206878020384ull, 15392485829920174840ull, 4520182521175203041ull}}, {{8120443033522031191ull, 1155155754298762740ull, 2702774616059027419ull, 2825114075734501901ull}}, {{10150553791902538989ull, 15279002748155617137ull, 7990154288501172177ull, 3531392594668127376ull}}, {{17299878258305561640ull, 5263695379912357709ull, 9987692860626465222ull, 4414240743335159220ull}}, {{13118266920654669977ull, 17124867667727387280ull, 15465680074746316571ull, 2758900464584474512ull}}, {{16397833650818337472ull, 16794398566231846196ull, 885356019723344098ull, 3448625580730593141ull}}, {{2050547989813370223ull, 11769626170935031938ull, 5718381043081568027ull, 4310781975913241426ull}}, {{5893278512060744294ull, 5050173347620701009ull, 8185674170353367921ull, 2694238734945775891ull}}, {{11978284158503318271ull, 10924402702953264165ull, 5620406694514321997ull, 3367798418682219864ull}}, {{1137797142846984127ull, 18267189397118968111ull, 7025508368142902496ull, 4209748023352774830ull}}, {{7628652241920446935ull, 11416993373199355069ull, 18226000785371477772ull, 2631092514595484268ull}}, {{14147501320827946573ull, 14271241716499193836ull, 4335756908004795599ull, 3288865643244355336ull}}, {{17684376651034933216ull, 13227366127196604391ull, 5419696135005994499ull, 4111082054055444170ull}}, {{17970264434537915116ull, 5961260820284183792ull, 7998996102806134466ull, 2569426283784652606ull}}, {{4016086469462842279ull, 16674948062210005549ull, 775373091652892274ull, 3211782854730815758ull}}, {{9631794105255940753ull, 11620313040907731128ull, 10192588401420891151ull, 4014728568413519697ull}}, {{6019871315784962971ull, 14180224678208413811ull, 17899582796956526729ull, 2509205355258449810ull}}, {{2913153126303815809ull, 3890222792478353552ull, 13151106459340882604ull, 3136506694073062263ull}}, {{3641441407879769762ull, 4862778490597941940ull, 11827197055748715351ull, 3920633367591327829ull}}, {{11499272916779631909ull, 9956765584264795568ull, 9697841169056641046ull, 2450395854744579893ull}}, {{14374091145974539886ull, 3222584943476218652ull, 16733987479748189212ull, 3062994818430724866ull}}, {{17967613932468174858ull, 4028231179345273315ull, 11694112312830460707ull, 3828743523038406083ull}}, {{8923915698578915334ull, 211801477877101870ull, 5002977186305343990ull, 2392964701899003802ull}}, {{1931522586368868360ull, 9488123884201153146ull, 15477093519736455795ull, 2991205877373754752ull}}, {{11637775269815861258ull, 7248468836824053528ull, 899622825961018128ull, 3739007346717193441ull}}, {{7273609543634913286ull, 4530293023015033455ull, 12091479312294106090ull, 2336879591698245900ull}}, {{4480325911116253704ull, 14886238315623567627ull, 15114349140367632612ull, 2921099489622807375ull}}, {{988721370467929225ull, 161053820819907918ull, 14281250407032152862ull, 3651374362028509219ull}}, {{10459273749939687340ull, 9424689312879660705ull, 13239876990362803173ull, 4564217952535636524ull}}, {{18066261139780774347ull, 8196273829763481892ull, 17498295155831527791ull, 2852636220334772827ull}}, {{4136082351016416318ull, 5633656268776964462ull, 17261182926362021835ull, 3565795275418466034ull}}, {{14393474975625296206ull, 2430384317543817673ull, 12353106621097751486ull, 4457244094273082543ull}}, {{2078392832124728273ull, 15354048253747049758ull, 14638220665827176534ull, 2785777558920676589ull}}, {{11821363077010686149ull, 9969188280329036389ull, 4462717777001806956ull, 3482221948650845737ull}}, {{941645790981193974ull, 12461485350411295487ull, 10190083239679646599ull, 4352777435813557171ull}}, {{7506057647004328090ull, 14705957371648141535ull, 4062959015586085172ull, 2720485897383473232ull}}, {{4770886040328022208ull, 18382446714560176919ull, 5078698769482606465ull, 3400607371729341540ull}}, {{1351921531982639856ull, 9143000337918057437ull, 6348373461853258082ull, 4250759214661676925ull}}, {{3150793966702843862ull, 10326061229626173802ull, 6273576422871980253ull, 2656724509163548078ull}}, {{13161864495233330636ull, 17519262555460105156ull, 17065342565444751124ull, 3320905636454435097ull}}, {{16452330619041663294ull, 3452334120615579829ull, 7496620151523775194ull, 4151132045568043872ull}}, {{12588549646114733511ull, 6769394843812125297ull, 4685387594702359496ull, 2594457528480027420ull}}, {{1900629002361253177ull, 8461743554765156622ull, 5856734493377949370ull, 3243071910600034275ull}}, {{11599158289806342279ull, 1353807406601669969ull, 2709232098295048809ull, 4053839888250042844ull}}, {{331944903487882069ull, 12375344675194513491ull, 10916642098289181313ull, 2533649930156276777ull}}, {{14249989184642016298ull, 1634122788710978151ull, 18257488641288864546ull, 3167062412695345971ull}}, {{13200800462375132468ull, 11266025522743498497ull, 18210174783183692778ull, 3958828015869182464ull}}, {{1332971261343375937ull, 11652951970142074465ull, 11381359239489807986ull, 2474267509918239040ull}}, {{6277900095106607825ull, 5342817925822817273ull, 14226699049362259983ull, 3092834387397798800ull}}, {{12459061137310647685ull, 2066836388851133687ull, 17783373811702824979ull, 3866042984247248500ull}}, {{14704442238460236659ull, 17432673807527816218ull, 1891236595459489803ull, 2416276865154530313ull}}, {{9157180761220520016ull, 17179156240982382369ull, 6975731762751750158ull, 3020346081443162891ull}}, {{16058161969953037924ull, 12250573264373202153ull, 4107978685012299794ull, 3775432601803953614ull}}, {{3118822203579566846ull, 12268294308660639250ull, 16402544733414851083ull, 2359645376127471008ull}}, {{13121899791329234366ull, 10723681867398411158ull, 2056436843059012238ull, 2949556720159338761ull}}, {{7179002702306767149ull, 4181230297393238140ull, 7182232072251153202ull, 3686945900199173451ull}}, {{8973753377883458936ull, 14449909908596323483ull, 4366104071886553598ull, 4608682375248966814ull}}, {{3302752851963467883ull, 4419507674445314273ull, 16563873100211259711ull, 2880426484530604258ull}}, {{8740127083381722758ull, 912698574629254937ull, 11481469338409298831ull, 3600533105663255323ull}}, {{15536844872654541352ull, 14975931273568732383ull, 9740150654584235634ull, 4500666382079069154ull}}, {{16628057073050170201ull, 13971643064407845643ull, 10699280177542535175ull, 2812916488799418221ull}}, {{16173385322885324847ull, 12852867812082419150ull, 17985786240355556873ull, 3516145610999272776ull}}, {{10993359616751880251ull, 2231026709820860226ull, 4035488726734894476ull, 4395182013749090971ull}}, {{11482535778897313061ull, 10617763730492813449ull, 216337444995615095ull, 2746988758593181857ull}}, {{518111668339477614ull, 8660518644688628908ull, 4882107824671906773ull, 3433735948241477321ull}}, {{647639585424347017ull, 15437334324288174039ull, 10714320799267271370ull, 4292169935301846651ull}}, {{7322303768531298742ull, 14260019971107496678ull, 4390607490328350654ull, 2682606209563654157ull}}, {{18376251747518899235ull, 8601652927029595039ull, 10099945381337826222ull, 3353257761954567696ull}}, {{18358628665971236140ull, 1528694121932217991ull, 12624931726672282778ull, 4191572202443209620ull}}, {{18391671943873104444ull, 5567119844635024148ull, 17113954366024952544ull, 2619732626527006012ull}}, {{4542845856131828939ull, 6958899805793780186ull, 2945698883821639064ull, 3274665783158757516ull}}, {{14901929357019561981ull, 8698624757242225232ull, 3682123604777048830ull, 4093332228948446895ull}}, {{9313705848137226238ull, 824954454849002866ull, 9218856280626737375ull, 2558332643092779309ull}}, {{2418760273316756990ull, 14866251123843417295ull, 16135256369210809622ull, 3197915803865974136ull}}, {{16858508396928109949ull, 9359441867949495810ull, 1722326387803960412ull, 3997394754832467671ull}}, {{15148253766507456622ull, 15073023204323210689ull, 7993983020018557113ull, 2498371721770292294ull}}, {{5100259152852157066ull, 5006220950121849650ull, 769106738168420584ull, 3122964652212865368ull}}, {{15598695977919972140ull, 6257776187652312062ull, 961383422710525730ull, 3903705815266081710ull}}, {{5137498967772594684ull, 8522796135710082943ull, 14435922694476242293ull, 2439816134541301068ull}}, {{1810187691288355451ull, 15265181188064991583ull, 18044903368095302866ull, 3049770168176626335ull}}, {{16097792669392608025ull, 9858104448226463670ull, 17944443191691740679ull, 3812212710220782919ull}}, {{5449434399942992112ull, 13078844307782621650ull, 18132806022448419780ull, 2382632943887989324ull}}, {{16035165036783515948ull, 16348555384728277062ull, 4219263454350973109ull, 2978291179859986656ull}}, {{10820584259124619127ull, 6600636175628182616ull, 5274079317938716387ull, 3722863974824983320ull}}, {{6762865161952886954ull, 1819554600553920183ull, 3296299573711697742ull, 2326789984265614575ull}}, {{3841895434013720789ull, 11497815287547176037ull, 17955432522421785889ull, 2908487480332018218ull}}, {{9414055310944538890ull, 537211054151806334ull, 13220918616172456554ull, 3635609350415022773ull}}, {{2544197101825897804ull, 9894885854544533726ull, 2691090214933406980ull, 4544511688018778467ull}}, {{15425181243923349840ull, 15407675695945109386ull, 17822832448829237026ull, 2840319805011736541ull}}, {{10058104518049411492ull, 10036222583076610925ull, 8443482505754382571ull, 3550399756264670677ull}}, {{17184316665989152268ull, 7933592210418375752ull, 15166039150620366118ull, 4437999695330838346ull}}, {{10740197916243220168ull, 346809113084096941ull, 14090460487565116728ull, 2773749809581773966ull}}, {{18036933413731413114ull, 433511391355121176ull, 8389703572601620102ull, 3467187261977217458ull}}, {{4099422693454714776ull, 9765261276048677279ull, 1263757428897249319ull, 4333984077471521823ull}}, {{9479668211050278591ull, 13020817325171505155ull, 7707377420701862680ull, 2708740048419701139ull}}, {{7237899245385460335ull, 16276021656464381444ull, 5022535757449940446ull, 3385925060524626424ull}}, {{9047374056731825419ull, 11121655033725700997ull, 6278169696812425558ull, 4232406325655783030ull}}, {{7960451794671084839ull, 2339348377651175219ull, 17758914115789929686ull, 2645253953534864393ull}}, {{5338878724911468144ull, 12147557508918744832ull, 8363584589455248395ull, 3306567441918580492ull}}, {{6673598406139335180ull, 10572760867721043136ull, 10454480736819060494ull, 4133209302398225615ull}}, {{4170999003837084488ull, 1996289523898264056ull, 13451579488152994665ull, 2583255813998891009ull}}, {{5213748754796355610ull, 7107047923300217974ull, 2979416304909079619ull, 3229069767498613762ull}}, {{15740557980350220320ull, 4272123885697884563ull, 12947642417991125332ull, 4036337209373267202ull}}, {{7532005728505193748ull, 11893449465415953660ull, 12703962529671841236ull, 2522710755858292001ull}}, {{9415007160631492185ull, 14866811831769942075ull, 2044895106807637833ull, 3153388444822865002ull}}, {{7157072932361977327ull, 4748456734430263882ull, 11779490920364323100ull, 3941735556028581252ull}}, {{9084856601153623734ull, 12191157495873690734ull, 16585553862082477745ull, 2463584722517863282ull}}, {{2132698714587253859ull, 1403888814559949706ull, 11508570290748321374ull, 3079480903147329103ull}}, {{11889245430088843132ull, 10978233055054712940ull, 9774026845008013813ull, 3849351128934161379ull}}, {{16654150430660302766ull, 9167238668622889539ull, 3802923768916314681ull, 2405844455583850862ull}}, {{16206002019897990553ull, 16070734354205999828ull, 13977026748000169159ull, 3007305569479813577ull}}, {{1810758451162936575ull, 15476731924330111882ull, 3636225379718047737ull, 3759131961849766972ull}}, {{5743410050404223263ull, 2755428425065238070ull, 11496012899178555644ull, 2349457476156104357ull}}, {{16402634599860054887ull, 3444285531331547587ull, 534958068691030843ull, 2936821845195130447ull}}, {{15891607231397680705ull, 18140414969446598196ull, 14503755641145952265ull, 3671027306493913058ull}}, {{1417764965537549265ull, 8840460656526084034ull, 8906322514577664524ull, 4588784133117391323ull}}, {{5497789121888356195ull, 14748659947183578329ull, 3260608562397346375ull, 2867990083198369577ull}}, {{11483922420787833147ull, 13824138915552085007ull, 8687446721424070873ull, 3584987603997961971ull}}, {{9743217007557403530ull, 3445115589157942547ull, 6247622383352700688ull, 4481234504997452464ull}}, {{3783667620509683255ull, 2153197243223714092ull, 3904763989595437930ull, 2800771565623407790ull}}, {{4729584525637104068ull, 11914868590884418423ull, 14104327023849073220ull, 3500964457029259737ull}}, {{1300294638618992181ull, 14893585738605523029ull, 3795350724529177813ull, 4376205571286574672ull}}, {{3118527158350564065ull, 11614334095842145845ull, 2372094202830736133ull, 2735128482054109170ull}}, {{8509844966365592985ull, 682859564520518594ull, 12188489790393195975ull, 3418910602567636462ull}}, {{1413934171102215424ull, 14688632510932811955ull, 6012240201136719160ull, 4273638253209545578ull}}, {{17024609921434742304ull, 9180395319333007471ull, 8369336144137837379ull, 2671023908255965986ull}}, {{16669076383366039976ull, 6863808130738871435ull, 1238298143317520916ull, 3338779885319957483ull}}, {{16224659460780162066ull, 8579760163423589294ull, 15382930734429064857ull, 4173474856649946853ull}}, {{5528726144560213387ull, 16891565148208213069ull, 11920174718231859487ull, 2608421785406216783ull}}, {{11522593699127654638ull, 16502770416832878432ull, 10288532379362436455ull, 3260527231757770979ull}}, {{14403242123909568297ull, 16016777002613710136ull, 8248979455775657665ull, 4075659039697213724ull}}, {{9002026327443480186ull, 3092956598992486979ull, 14378984196714561849ull, 2547286899810758577ull}}, {{6640846890876962328ull, 8477881767167996628ull, 4138672190611038599ull, 3184108624763448222ull}}, {{8301058613596202910ull, 5985666190532607881ull, 14396712275118574057ull, 3980135780954310277ull}}, {{16717376679566096579ull, 15270256415151349685ull, 11303788181162802737ull, 2487584863096443923ull}}, {{7061662794175457012ull, 5252762463657023395ull, 9518049208026115518ull, 3109481078870554904ull}}, {{4215392474291933361ull, 15789325116426055052ull, 11897561510032644397ull, 3886851348588193630ull}}, {{11857992333287234159ull, 12174171206979978359ull, 2824289925343014844ull, 2429282092867621019ull}}, {{10210804398181654794ull, 15217714008724972949ull, 17365420461960932267ull, 3036602616084526273ull}}, {{17375191516154456396ull, 14410456492478828282ull, 7871717522169001622ull, 3795753270105657842ull}}, {{15471180716023923152ull, 4394849289371879772ull, 9531509469783013918ull, 2372345793816036151ull}}, {{892231821320352324ull, 14716933648569625524ull, 7302700818801379493ull, 2965432242270045189ull}}, {{1115289776650440405ull, 4561109005429868193ull, 13740062041929112271ull, 3706790302837556486ull}}, {{12226271156474995013ull, 9768222156034749476ull, 3975852757778307265ull, 2316743939273472804ull}}, {{15282838945593743766ull, 16821963713470824749ull, 4969815947222884081ull, 2895929924091841005ull}}, {{5268490626710015996ull, 7192396586556367225ull, 10823955952455993006ull, 3619912405114801256ull}}, {{11197299301814907899ull, 18213867770050234839ull, 13529944940569991257ull, 4524890506393501570ull}}, {{13915841091275399293ull, 4466138328640314918ull, 13067901606283632440ull, 2828056566495938481ull}}, {{8171429327239473308ull, 5582672910800393648ull, 2499818952572376838ull, 3535070708119923102ull}}, {{10214286659049341635ull, 16201713175355267868ull, 12348145727570246855ull, 4418838385149903877ull}}, {{15607301198760614330ull, 17043599762238124273ull, 10023434088945098236ull, 2761773990718689923ull}}, {{5674068443168604200ull, 2857755629088103726ull, 7917606592753984892ull, 3452217488398362404ull}}, {{16315957590815531058ull, 3572194536360129657ull, 9897008240942481115ull, 4315271860497953005ull}}, {{3279944466618625056ull, 18373522649720938700ull, 8491473159802744648ull, 2697044912811220628ull}}, {{4099930583273281319ull, 4520159238441621759ull, 10614341449753430811ull, 3371306141014025785ull}}, {{513227210664213745ull, 1038513029624639295ull, 17879612830619176418ull, 4214132676267532231ull}}, {{7238296034306215447ull, 5260756661942787463ull, 18092287046778067117ull, 2633832922667207644ull}}, {{4436184024455381404ull, 11187631845855872233ull, 4168614734763032280ull, 3292291153334009556ull}}, {{10156916048996614659ull, 13984539807319840291ull, 5210768418453790350ull, 4115363941667511945ull}}, {{4042229521409190210ull, 4128651361147512278ull, 14785945307602088729ull, 2572102463542194965ull}}, {{14276158938616263571ull, 9772500219861778251ull, 4647373579220447199ull, 3215128079427743707ull}}, {{13233512654842941559ull, 7603939256399834910ull, 1197530955598171095ull, 4018910099284679634ull}}, {{3659259390849450571ull, 11669991062890978675ull, 5360142865676244838ull, 2511818812052924771ull}}, {{18409132293843976925ull, 5364116791758947535ull, 2088492563667918144ull, 3139773515066155964ull}}, {{18399729348877583252ull, 6705145989698684419ull, 2610615704584897680ull, 3924716893832694955ull}}, {{9193987833834795581ull, 4190716243561677762ull, 17772535879861418714ull, 2452948058645434346ull}}, {{2269112755438718668ull, 14461767341306873011ull, 12992297812971997584ull, 3066185073306792933ull}}, {{16671448999580562047ull, 18077209176633591263ull, 2405314210932833268ull, 3832731341633491167ull}}, {{17337184652378933136ull, 2074883698541218731ull, 8420850409474102649ull, 2395457088520931979ull}}, {{17059794797046278515ull, 7205290641603911318ull, 5914376993415240407ull, 2994321360651164974ull}}, {{12101371459453072336ull, 4394927283577501244ull, 16616343278623826317ull, 3742901700813956217ull}}, {{16786729199012946018ull, 5052672561449632229ull, 3467685521498809592ull, 2339313563008722636ull}}, {{7148353443484018811ull, 6315840701812040287ull, 4334606901873511990ull, 2924141953760903295ull}}, {{4323755785927635609ull, 17118172914119826167ull, 806572608914502083ull, 3655177442201129119ull}}, {{793008713982156607ull, 16786030124222394805ull, 14843273816425291316ull, 4568971802751411398ull}}, {{2801473455452541832ull, 1267896790784220945ull, 4665360116838419169ull, 2855607376719632124ull}}, {{8113527837743065194ull, 6196557006907664085ull, 5831700146048023961ull, 3569509220899540155ull}}, {{14753595815606219396ull, 12357382277061968010ull, 2677939164132642047ull, 4461886526124425194ull}}, {{13832683403181275027ull, 14640892950804811862ull, 6285397996010289183ull, 2788679078827765746ull}}, {{8067482217121817975ull, 13689430170078626924ull, 17080119531867637287ull, 3485848848534707182ull}}, {{10084352771402272469ull, 12500101694170895751ull, 12126777377979770801ull, 4357311060668383978ull}}, {{13220249509767502149ull, 895034531215727988ull, 12190921879664744655ull, 2723319412917739986ull}}, {{16525311887209377686ull, 14953851219301823697ull, 6015280312726155010ull, 3404149266147174983ull}}, {{6821581803729558396ull, 9468941987272503814ull, 2907414372480305859ull, 4255186582683968729ull}}, {{18098546682613137710ull, 3612245732831620931ull, 13346349028868660922ull, 2659491614177480455ull}}, {{18011497334839034233ull, 13738679202894301972ull, 12071250267658438248ull, 3324364517721850569ull}}, {{4067627594839241175ull, 17173349003617877466ull, 1254004779290884098ull, 4155455647152313212ull}}, {{7153953265201913639ull, 15345029145688561320ull, 10007125023911578369ull, 2597159779470195757ull}}, {{8942441581502392048ull, 5346228376828537938ull, 17120592298316860866ull, 3246449724337744696ull}}, {{1954679940023214252ull, 15906157507890448231ull, 2953996299186524466ull, 4058062155422180871ull}}, {{8139203990155590764ull, 14553034460858918048ull, 8763776714632659647ull, 2536288847138863044ull}}, {{10174004987694488454ull, 13579607057646259656ull, 10954720893290824559ull, 3170361058923578805ull}}, {{12717506234618110568ull, 12362822803630436666ull, 18305087135040918603ull, 3962951323654473506ull}}, {{12560127415063707009ull, 5420921243055328964ull, 16052365477827962031ull, 2476844577284045941ull}}, {{15700159268829633761ull, 2164465535391773301ull, 6230398792002788827ull, 3096055721605057427ull}}, {{5790141030754878489ull, 16540639974521880339ull, 3176312471576098129ull, 3870069652006321784ull}}, {{1312995135008105104ull, 3420370956435093356ull, 1985195294735061331ull, 2418793532503951115ull}}, {{1641243918760131380ull, 18110521750826030407ull, 16316552173700990375ull, 3023491915629938893ull}}, {{15886612953732327937ull, 18026466170105150104ull, 6560632161844074257ull, 3779364894537423617ull}}, {{9929133096082704961ull, 4349012328674636959ull, 15629610147221016171ull, 2362103059085889760ull}}, {{7799730351675993297ull, 824579392415908295ull, 1090268610316718598ull, 2952628823857362201ull}}, {{5137976921167603717ull, 10254096277374661177ull, 5974521781323286151ull, 3690786029821702751ull}}, {{14740450621798222083ull, 13326339201000245091ull, 10651605140968135700ull, 2306741268638564219ull}}, {{13813877258820389700ull, 16657924001250306364ull, 8702820407782781721ull, 2883426585798205274ull}}, {{17267346573525487125ull, 6987346946280719243ull, 1655153472873701344ull, 3604283232247756593ull}}, {{16972497198479471002ull, 8734183682850899054ull, 6680627859519514584ull, 4505354040309695741ull}}, {{5996124730622281472ull, 5458864801781811909ull, 6481235421413390567ull, 2815846275193559838ull}}, {{12106841931705239744ull, 2211894983799876982ull, 17324916313621514017ull, 3519807843991949797ull}}, {{5910180377776773872ull, 7376554748177234132ull, 7821087336744728809ull, 4399759804989937247ull}}, {{12917234772965259478ull, 16139561763679241092ull, 11805708613106537361ull, 2749849878118710779ull}}, {{16146543466206574348ull, 6339394149316887653ull, 10145449747955783798ull, 3437312347648388474ull}}, {{6348121277476054223ull, 17147614723500885375ull, 3458440148089953939ull, 4296640434560485593ull}}, {{10885104826063615745ull, 8411416192974359407ull, 13690740138624690972ull, 2685400271600303495ull}}, {{8994695014152131778ull, 10514270241217949259ull, 12501739154853475811ull, 3356750339500379369ull}}, {{6631682749262776818ull, 8531151783095048670ull, 1792115888284681052ull, 4195937924375474212ull}}, {{17979859773571399223ull, 14555341901289181226ull, 10343444467032701465ull, 2622461202734671382ull}}, {{13251452680109473221ull, 4359119321329312821ull, 3705933546936101024ull, 3278076503418339228ull}}, {{2729257794854677814ull, 5448899151661641027ull, 4632416933670126280ull, 4097595629272924035ull}}, {{17846687186280031298ull, 3405561969788525641ull, 589417574330134973ull, 2560997268295577522ull}}, {{8473300927567875410ull, 8868638480663044956ull, 9960144004767444524ull, 3201246585369471902ull}}, {{10591626159459844263ull, 11085798100828806195ull, 3226807969104529847ull, 4001558231711839878ull}}, {{4313923340448708712ull, 13846152840659085728ull, 15851813035972494866ull, 2500973894819899923ull}}, {{5392404175560885890ull, 8084319013969081352ull, 15203080276538230679ull, 3126217368524874904ull}}, {{6740505219451107363ull, 5493712749033963786ull, 557106271963236733ull, 3907771710656093631ull}}, {{8824501780584330006ull, 5739413477359921318ull, 7265720447618104814ull, 2442357319160058519ull}}, {{1807255188875636699ull, 16397638883554677456ull, 4470464541095243113ull, 3052946648950073149ull}}, {{2259068986094545874ull, 6661990549161183108ull, 10199766694796441796ull, 3816183311187591436ull}}, {{10635290153163866980ull, 13387116130080515250ull, 15598226221102551930ull, 2385114569492244647ull}}, {{4070740654600057916ull, 7510523125745868255ull, 14886096757950802009ull, 2981393211865305809ull}}, {{476739799822684491ull, 13999839925609723223ull, 4772562892156338799ull, 3726741514831632262ull}}, {{7215491402530259663ull, 15667428981147158870ull, 16817909862879875461ull, 2329213446769770163ull}}, {{18242736290017600387ull, 5749228171151784875ull, 16410701310172456423ull, 2911516808462212704ull}}, {{18191734344094612580ull, 2574849195512343190ull, 2066632564006018913ull, 3639396010577765881ull}}, {{13516295893263489916ull, 7830247512817816892ull, 7194976723434911545ull, 4549245013222207351ull}}, {{17671056970144457006ull, 16423119741579605317ull, 11414389479787901571ull, 2843278133263879594ull}}, {{8253763157398407545ull, 15917213658547118743ull, 5044614812880101156ull, 3554097666579849493ull}}, {{5705517928320621527ull, 1449772999474346813ull, 10917454534527514350ull, 4442622083224811866ull}}, {{5871791714414082407ull, 14741166179953630470ull, 11435095102507084372ull, 2776638802015507416ull}}, {{16563111679872378816ull, 18426457724942038087ull, 14293868878133855465ull, 3470798502519384270ull}}, {{16092203581413085616ull, 9198014100895383897ull, 8643964060812543524ull, 4338498128149230338ull}}, {{3140098210742096654ull, 14972130849914390744ull, 10014163556435227606ull, 2711561330093268961ull}}, {{3925122763427620818ull, 9491791525538212622ull, 17129390463971422412ull, 3389451662616586201ull}}, {{14129775491139301830ull, 11864739406922765777ull, 7576680024682114303ull, 4236814578270732752ull}}, {{1913580654320981788ull, 14332991156967810467ull, 4735425015426321439ull, 2648009111419207970ull}}, {{16227033873183390947ull, 13304552927782375179ull, 15142653306137677607ull, 3310011389274009962ull}}, {{15672106323051850780ull, 12019005141300581070ull, 9704944595817321201ull, 4137514236592512453ull}}, {{5183380433480018833ull, 594349185671781313ull, 8371433381599519703ull, 2585946397870320283ull}}, {{11090911560277411446ull, 14577994537371890353ull, 5852605708572011724ull, 3232432997337900354ull}}, {{28581395064600595ull, 18222493171714862942ull, 16539129172569790463ull, 4040541246672375442ull}}, {{13852921427197539084ull, 18306587259962871194ull, 14948641751283506943ull, 2525338279170234651ull}}, {{8092779747142148047ull, 18271548056526201089ull, 14074116170676995775ull, 3156672848962793314ull}}, {{14727660702355072963ull, 18227749052230363457ull, 8369273176491468911ull, 3945841061203491643ull}}, {{2287258911330838746ull, 18309872185285059017ull, 2924952726093474117ull, 2466150663252182277ull}}, {{7470759657590936336ull, 9052282176324160059ull, 8267876926044230551ull, 3082688329065227846ull}}, {{4726763553561282516ull, 6703666701977812170ull, 1111474120700512381ull, 3853360411331534808ull}}, {{7565913239403189477ull, 6495634697949826558ull, 694671325437820238ull, 2408350257082209255ull}}, {{234019512399211038ull, 17342915409292059006ull, 14703397212079439009ull, 3010437821352761568ull}}, {{9515896427353789605ull, 7843586206332910045ull, 18379246515099298762ull, 3763047276690951960ull}}, {{8253278276309812455ull, 9513927397385456682ull, 11487029071937061726ull, 2351904547931844975ull}}, {{1093225808532489761ull, 2669037209877045045ull, 9747100321493939254ull, 2939880684914806219ull}}, {{5978218279093000105ull, 12559668549201082114ull, 7572189383440036163ull, 3674850856143507774ull}}, {{16696144885721025939ull, 11087899668073964738ull, 241864692445269396ull, 4593563570179384718ull}}, {{15046776572003029116ull, 16153309329401003769ull, 13986223488060457084ull, 2870977231362115448ull}}, {{4973412659721622683ull, 1744892588041703096ull, 17482779360075571356ull, 3588721539202644310ull}}, {{6216765824652028354ull, 2181115735052128870ull, 12630102163239688387ull, 4485901924003305388ull}}, {{17720536695689681433ull, 17504098398903438207ull, 17117185888879581049ull, 2803688702502065867ull}}, {{17538984851184713888ull, 8045064943347134047ull, 16784796342672088408ull, 3504610878127582334ull}}, {{17312045045553504455ull, 10056331179183917559ull, 11757623391485334702ull, 4380763597659477918ull}}, {{17737557181112022141ull, 1673520968562560570ull, 2736828601250946285ull, 2737977248537173699ull}}, {{12948574439535251868ull, 6703587229130588617ull, 17256093806845846568ull, 3422471560671467123ull}}, {{2350659994136901123ull, 8379484036413235772ull, 16958431240129920306ull, 4278089450839333904ull}}, {{10692534533190339010ull, 9848863541185660261ull, 10599019525081200191ull, 2673805906774583690ull}}, {{17977354184915311666ull, 7699393408054687422ull, 4025402369496724431ull, 3342257383468229613ull}}, {{13248320694289363775ull, 5012555741640971374ull, 9643438980298293443ull, 4177821729335287016ull}}, {{3668514415503464455ull, 827004329311913157ull, 6027149362686433402ull, 2611138580834554385ull}}, {{9197329037806718473ull, 10257127448494667254ull, 12145622721785429656ull, 3263923226043192981ull}}, {{2273289260403622283ull, 12821409310618334068ull, 1346970346949623358ull, 4079904032553991227ull}}, {{10644177824607039735ull, 3401694800709070888ull, 16982757531339372263ull, 2549940020346244516ull}}, {{13305222280758799669ull, 18087176556168502322ull, 2781702840464663712ull, 3187425025432805646ull}}, {{7408155814093723778ull, 4162226621501076287ull, 12700500587435605449ull, 3984281281791007057ull}}, {{11547626411449659217ull, 14130606684506642439ull, 1020283839506171549ull, 2490175801119379411ull}}, {{9822846995884686118ull, 3828200300351139337ull, 15110412854664878149ull, 3112719751399224263ull}}, {{16890244763283245551ull, 9396936393866312075ull, 14276330049903709782ull, 3890899689249030329ull}}, {{8250559967838334517ull, 1261399227739057143ull, 2005177253548736758ull, 2431812305780643956ull}}, {{5701513941370530243ull, 10800121071528597237ull, 2506471566935920947ull, 3039765382225804945ull}}, {{11738578445140550707ull, 8888465320983358642ull, 7744775477097289088ull, 3799706727782256181ull}}, {{11948297546640232096ull, 5555290825614599151ull, 7146327682399499632ull, 2374816704863910113ull}}, {{10323685914872902216ull, 6944113532018248939ull, 13544595621426762444ull, 2968520881079887641ull}}, {{8292921375163739866ull, 8680141915022811174ull, 3095686471501289343ull, 3710651101349859552ull}}, {{571389841049949513ull, 12342617724530338840ull, 1934804044688305839ull, 2319156938343662220ull}}, {{714237301312436891ull, 10816586137235535646ull, 2418505055860382299ull, 2898946172929577775ull}}, {{10116168663495321921ull, 8909046653117031653ull, 16858189375107641586ull, 3623682716161972218ull}}, {{17256896847796540305ull, 1912936279541513758ull, 11849364682029776175ull, 4529603395202465273ull}}, {{6173874511445449787ull, 8113114202354527955ull, 488323898627528253ull, 2831002122001540796ull}}, {{3105657120879424329ull, 14753078771370547848ull, 610404873284410316ull, 3538752652501925995ull}}, {{3882071401099280412ull, 18441348464213184810ull, 14598064146887676607ull, 4423440815627407493ull}}, {{7037980644114438162ull, 18443371817774322362ull, 11429633101018491831ull, 2764650509767129683ull}}, {{18020847841997823510ull, 18442528753790515048ull, 9675355357845726885ull, 3455813137208912104ull}}, {{4079315728787727771ull, 9218102886955980099ull, 12094194197307158607ull, 4319766421511140130ull}}, {{243729321278635905ull, 12678843331988569418ull, 12170557391744362033ull, 2699854013444462581ull}}, {{9528033688453070689ull, 2013496109703548060ull, 1378138684398288830ull, 3374817516805578227ull}}, {{11910042110566338361ull, 11740242173984210883ull, 15557731410780024749ull, 4218521896006972783ull}}, {{5137933309890267524ull, 9643494367953825754ull, 16641111159378597324ull, 2636576185004357989ull}}, {{15645788674217610213ull, 12054367959942282192ull, 6966330893941082943ull, 3295720231255447487ull}}, {{1110491769062461150ull, 10456273931500464837ull, 4096227598998965775ull, 4119650289069309359ull}}, {{2999900364877732171ull, 13452700234828872379ull, 9477671277015435465ull, 2574781430668318349ull}}, {{17584933511379328926ull, 2980817238253926761ull, 16458775114696682236ull, 3218476788335397936ull}}, {{8146108833941997445ull, 3726021547817408452ull, 2126724819661301179ull, 4023095985419247421ull}}, {{14314690058068524211ull, 22920458172186330ull, 3635046021502007189ull, 2514434990887029638ull}}, {{8669990535730879456ull, 4640336591142620817ull, 13767179563732284794ull, 3143043738608787047ull}}, {{15449174188090987224ull, 15023792775783051829ull, 12597288436237968088ull, 3928804673260983809ull}}, {{11961576876770560967ull, 9389870484864407393ull, 955776245007648199ull, 2455502920788114881ull}}, {{1116913040681037497ull, 7125652087653121338ull, 5806406324686948153ull, 3069378650985143601ull}}, {{10619513337706072679ull, 13518751127993789576ull, 11869693924286073095ull, 3836723313731429501ull}}, {{6637195836066295424ull, 15366748482637200341ull, 9724401711892489636ull, 2397952071082143438ull}}, {{12908180813510257184ull, 761691529586948810ull, 2932130103010836238ull, 2997440088852679298ull}}, {{6911853980033045672ull, 10175486448838461821ull, 12888534665618321105ull, 3746800111065849122ull}}, {{6625751746734347497ull, 17888894076592508398ull, 12667020184438838594ull, 2341750069416155701ull}}, {{17505561720272710180ull, 13137745558885859689ull, 1998717175266384531ull, 2927187586770194627ull}}, {{8046894095058724012ull, 11810495930179936708ull, 16333454524365144376ull, 3658984483462743283ull}}, {{10058617618823405015ull, 14763119912724920885ull, 15805132137029042566ull, 4573730604328429104ull}}, {{8592479020978322087ull, 4615263927025687649ull, 9878207585643151604ull, 2858581627705268190ull}}, {{15352284794650290512ull, 5769079908782109561ull, 3124387445199163697ull, 3573227034631585238ull}}, {{5355297938030699428ull, 11823035904405024856ull, 13128856343353730429ull, 4466533793289481547ull}}, {{3347061211269187143ull, 9695240449466834487ull, 5899692205382387566ull, 2791583620805925967ull}}, {{18018884569368647641ull, 2895678524978767300ull, 2762929238300596554ull, 3489479526007407459ull}}, {{4076861638001257935ull, 12842970193078234934ull, 17288719603157909404ull, 4361849407509259323ull}}, {{16383096579032949921ull, 17250228407528672641ull, 8499606742759999425ull, 2726155879693287077ull}}, {{6643812668509023689ull, 7727727454128677090ull, 15236194446877387186ull, 3407694849616608846ull}}, {{17528137872491055420ull, 436287280806070554ull, 9821871021741958175ull, 4259618562020761058ull}}, {{15566772188734297542ull, 7190208578144875952ull, 10750355407016111763ull, 2662261601262975661ull}}, {{1011721162208320311ull, 4376074704253707037ull, 18049630277197527608ull, 3327827001578719576ull}}, {{5876337471187788292ull, 5470093380317133796ull, 4115293772787357894ull, 4159783751973399471ull}}, {{12896082956347143491ull, 17253866417980372334ull, 9489587635633180539ull, 2599864844983374669ull}}, {{6896731658579153556ull, 16955647004048077514ull, 16473670562968863578ull, 3249831056229218336ull}}, {{17844286610078717752ull, 11971186718205321084ull, 2145344130001527857ull, 4062288820286522921ull}}, {{1929307094444422787ull, 564462671237243822ull, 12870055127319424671ull, 2538930512679076825ull}}, {{11635005904910304292ull, 14540636394328718489ull, 2252510853867117126ull, 3173663140848846032ull}}, {{708699325855716653ull, 8952423456056122304ull, 2815638567333896408ull, 3967078926061057540ull}}, {{442937078659822908ull, 5595264660035076440ull, 10983146141438461063ull, 2479424328788160962ull}}, {{553671348324778635ull, 2382394806616457646ull, 4505560639943300521ull, 3099280410985201203ull}}, {{9915461222260749102ull, 7589679526697959961ull, 1020264781501737747ull, 3874100513731501504ull}}, {{17726378309981437949ull, 2437706694972531023ull, 637665488438586092ull, 2421312821082188440ull}}, {{17546286869049409532ull, 3047133368715663779ull, 797081860548232615ull, 3026641026352735550ull}}, {{17321172567884374011ull, 17643974766176743436ull, 10219724362540066576ull, 3783301282940919437ull}}, {{1602360818072957949ull, 11027484228860464648ull, 8693170735801235562ull, 2364563301838074648ull}}, {{2002951022591197436ull, 4560983249220805002ull, 10866463419751544453ull, 2955704127297593310ull}}, {{11727060815093772603ull, 10312915079953394156ull, 4359707237834654758ull, 3694630159121991638ull}}, {{16552785046288383685ull, 1833885906543483443ull, 16559875078928822936ull, 2309143849451244773ull}}, {{16079295289433091702ull, 2292357383179354304ull, 6864785793378864958ull, 2886429811814055967ull}}, {{1652375038081813012ull, 12088818765828968689ull, 3969296223296193293ull, 3608037264767569959ull}}, {{6677154816029654168ull, 1275965402004047149ull, 349934260692853713ull, 4510046580959462449ull}}, {{6479064769232227807ull, 12326693422320999228ull, 11747923959001503330ull, 2818779113099664030ull}}, {{8098830961540284759ull, 6184994741046473227ull, 5461532911897103355ull, 3523473891374580038ull}}, {{5511852683497968045ull, 3119557407880703630ull, 16050288176726155002ull, 4404342364218225047ull}}, {{17279965982468393740ull, 6561409398352827672ull, 16948959138094928732ull, 2752713977636390654ull}}, {{3153213404375940559ull, 8201761747941034591ull, 11962826885763885107ull, 3440892472045488318ull}}, {{17776574810752089411ull, 5640516166498905334ull, 5730161570350080576ull, 4301115590056860398ull}}, {{6498673238292667978ull, 3525322604061815834ull, 17416409036750964072ull, 2688197243785537748ull}}, {{17346713584720610780ull, 4406653255077269792ull, 3323767222229153474ull, 3360246554731922186ull}}, {{3236647907191211859ull, 14731688605701363049ull, 13378081064641217650ull, 4200308193414902732ull}}, {{13552119988062977172ull, 13818991396990739809ull, 17584672702255536839ull, 2625192620884314207ull}}, {{3105091929796557753ull, 12662053227811036858ull, 17369154859392033145ull, 3281490776105392759ull}}, {{13104736949100472999ull, 1992508479481632360ull, 17099757555812653528ull, 4101863470131740949ull}}, {{8190460593187795625ull, 1245317799676020225ull, 12993191481596602407ull, 2563664668832338093ull}}, {{14849761759912132435ull, 15391705304877188993ull, 2406431296713589296ull, 3204580836040422617ull}}, {{4727144144608001831ull, 792887557386934626ull, 7619725139319374525ull, 4005726045050528271ull}}, {{7566151108807389049ull, 2801397732580528093ull, 11679857239715690934ull, 2503578778156580169ull}}, {{14069374904436624215ull, 12725119202580435924ull, 764763494362449955ull, 3129473472695725212ull}}, {{17586718630545780268ull, 11294712984798157001ull, 955954367953062444ull, 3911841840869656515ull}}, {{4074170116450030812ull, 16282567652353623934ull, 16738372544466521691ull, 2444901150543535321ull}}, {{14316084682417314323ull, 15741523547014642013ull, 7087907625300988402ull, 3056126438179419152ull}}, {{4060047797739479191ull, 10453532396913526709ull, 8859884531626235503ull, 3820158047724273940ull}}, {{4843372882800868447ull, 13450986775712036049ull, 14760799869121172997ull, 2387598779827671212ull}}, {{10665902121928473462ull, 2978675414357881349ull, 4255762691914631ull, 2984498474784589016ull}}, {{17944063670837979732ull, 17558402323229515398ull, 5319703364893288ull, 3730623093480736270ull}}, {{6603353775846349429ull, 10974001452018447124ull, 13838382869885222017ull, 2331639433425460168ull}}, {{8254192219807936786ull, 18329187833450446809ull, 17297978587356527521ull, 2914549291781825210ull}}, {{14929426293187308886ull, 9076426736530894799ull, 12399101197340883594ull, 3643186614727281513ull}}, {{14050096848056748203ull, 2122161383808842691ull, 1663818441393940781ull, 4553983268409101892ull}}, {{6475467520821773675ull, 3632193874094220634ull, 10263258562725988796ull, 2846239542755688682ull}}, {{17317706437881992902ull, 4540242342617775792ull, 3605701166552710187ull, 3557799428444610853ull}}, {{3200388973642939511ull, 1063616909844831837ull, 9118812476618275638ull, 4447249285555763566ull}}, {{4306086117740531147ull, 14499818623935183610ull, 1087571779459034369ull, 2779530803472352229ull}}, {{14605979684030439741ull, 4289715224636815800ull, 5971150742751180866ull, 3474413504340440286ull}}, {{18257474605038049677ull, 14585516067650795558ull, 16687310465293751890ull, 4343016880425550357ull}}, {{6799235609721393144ull, 13727633560709135128ull, 12735412050022288883ull, 2714385550265968973ull}}, {{8499044512151741430ull, 12547855932459031006ull, 2084207007245697392ull, 3392981937832461217ull}}, {{1400433603334900979ull, 15684819915573788758ull, 7216944777484509644ull, 4241227422290576521ull}}, {{14710329057366476824ull, 579640410378842165ull, 16039805531996288288ull, 2650767138931610325ull}}, {{4552853266425932318ull, 724550512973552707ull, 6214698859713196648ull, 3313458923664512907ull}}, {{1079380564605027494ull, 905688141216940884ull, 3156687556214107906ull, 4141823654580641134ull}}, {{9897984889732917992ull, 5177741106687975956ull, 15807987777915981153ull, 2588639784112900708ull}}, {{12372481112166147489ull, 11083862401787357849ull, 1313240648685424825ull, 3235799730141125886ull}}, {{1630543334925520650ull, 19769946952033600ull, 10864922847711556840ull, 4044749662676407357ull}}, {{1019089584328450406ull, 12356216845021000ull, 9096419789033416977ull, 2527968539172754598ull}}, {{1273861980410563008ull, 4627131289483664154ull, 2147152699436995413ull, 3159960673965943248ull}}, {{10815699512367979567ull, 10395600130281968096ull, 2683940874296244266ull, 3949950842457429060ull}}, {{6759812195229987230ull, 11108936099853617964ull, 10900835083289928474ull, 2468719276535893162ull}}, {{8449765244037484037ull, 4662798087962246647ull, 4402671817257634785ull, 3085899095669866453ull}}, {{5950520536619467142ull, 10440183628380196213ull, 10115025789999431385ull, 3857373869587333066ull}}, {{6024918344600860916ull, 18054329813806092393ull, 10933577137177032519ull, 2410858668492083166ull}}, {{12142833949178464049ull, 17956226248830227587ull, 4443599384616514841ull, 3013573335615103958ull}}, {{10566856418045692157ull, 8610224755755620772ull, 14777871267625419360ull, 3766966669518879947ull}}, {{15827657298133333406ull, 5381390472347262982ull, 6930326533052193148ull, 2354354168449299967ull}}, {{10561199585811890950ull, 6726738090434078728ull, 4051222147887853531ull, 2942942710561624959ull}}, {{13201499482264863687ull, 3796736594615210506ull, 452341666432429010ull, 3678678388202031199ull}}, {{7278502315976303801ull, 13969292780123788941ull, 14400485138322699974ull, 4598347985252538998ull}}, {{6854906956698883828ull, 4119121969149980184ull, 4388617193024299580ull, 2873967490782836874ull}}, {{8568633695873604785ull, 5148902461437475230ull, 14709143528135150283ull, 3592459363478546092ull}}, {{1487420082987230173ull, 1824442058369456134ull, 18386429410168937854ull, 4490574204348182615ull}}, {{14764695607149182570ull, 14975334341763073795ull, 18409047408996668014ull, 2806608877717614134ull}}, {{13844183490509090309ull, 9495795890349066436ull, 13787937224391059210ull, 3508261097147017668ull}}, {{17305229363136362886ull, 2646372826081557237ull, 17234921530488824013ull, 4385326371433772085ull}}, {{13121611361173920756ull, 3959826025514667225ull, 13077668965769208960ull, 2740828982146107553ull}}, {{2566956146185237232ull, 4949782531893334032ull, 2512028151929347488ull, 3426036227682634442ull}}, {{3208695182731546540ull, 6187228164866667540ull, 12363407226766460168ull, 4282545284603293052ull}}, {{11228806526061992396ull, 3867017603041667212ull, 16950501553583813413ull, 2676590802877058157ull}}, {{14036008157577490495ull, 9445458022229471919ull, 7353068886697603054ull, 3345738503596322697ull}}, {{12933324178544475214ull, 2583450490932064091ull, 13803022126799391722ull, 4182173129495403371ull}}, {{5777484602376603057ull, 6226342575259927961ull, 6321045820035925874ull, 2613858205934627107ull}}, {{11833541771398141725ull, 17006300255929685759ull, 3289621256617519438ull, 3267322757418283884ull}}, {{10180241195820289253ull, 12034503283057331391ull, 4112026570771899298ull, 4084153446772854855ull}}, {{13280179775028762639ull, 12133250570338220023ull, 9487545634373518917ull, 2552595904233034284ull}}, {{11988538700358565395ull, 1331505157640611317ull, 11859432042966898647ull, 3190744880291292855ull}}, {{1150615320166043031ull, 15499439502332927859ull, 10212604035281235404ull, 3988431100364116069ull}}, {{16860035639599634559ull, 463777652103304103ull, 8688720531264466080ull, 2492769437727572543ull}}, {{16463358531072155294ull, 579722065129130129ull, 6249214645653194696ull, 3115961797159465679ull}}, {{6744140108558030406ull, 724652581411412662ull, 3199832288639105466ull, 3894952246449332099ull}}, {{18050145623130932716ull, 5064593881809520817ull, 18140796244895298580ull, 2434345154030832561ull}}, {{8727623973631502183ull, 6330742352261901022ull, 8840937250836959513ull, 3042931442538540702ull}}, {{1686157930184601920ull, 12525113958754764182ull, 1827799526691423583ull, 3803664303173175878ull}}, {{14888906761647539912ull, 14745725251862809469ull, 14977432759464303451ull, 2377290189483234923ull}}, {{4776075396777261178ull, 13820470546401123933ull, 14110104930902991410ull, 2971612736854043654ull}}, {{10581780264398964377ull, 8052216146146629108ull, 8414259126773963455ull, 3714515921067554568ull}}, {{15836984702104128544ull, 11950164118982725048ull, 5258911954233727159ull, 2321572450667221605ull}}, {{1349486803920609063ull, 10326019130301018407ull, 11185325961219546853ull, 2901965563334027006ull}}, {{15521916560182925041ull, 17519209931303660912ull, 4758285414669657758ull, 3627456954167533758ull}}, {{955651626519104685ull, 12675640377274800333ull, 15171228805191848006ull, 4534321192709417197ull}}, {{2903125275788134380ull, 3310589217369362304ull, 11787861012458598956ull, 2833950745443385748ull}}, {{3628906594735167975ull, 4138236521711702880ull, 14734826265573248695ull, 3542438431804232185ull}}, {{4536133243418959969ull, 561109633712240696ull, 4583474776684397157ull, 4428048039755290232ull}}, {{2835083277136849981ull, 2656536530283844387ull, 2864671735427748223ull, 2767530024847056395ull}}, {{17378912151703226188ull, 17155728718136969195ull, 17415897724566848990ull, 3459412531058820493ull}}, {{17111954171201644831ull, 12221288860816435686ull, 7934814100426397526ull, 4324265663823525617ull}}, {{6083285338573640115ull, 3026619519582884400ull, 16488473858834968214ull, 2702666039889703510ull}}, {{7604106673217050144ull, 13006646436333381308ull, 11387220286688934459ull, 3378332549862129388ull}}, {{9505133341521312680ull, 11646622026989338731ull, 14234025358361168074ull, 4222915687327661735ull}}, {{3634865329237126473ull, 11890824785295724611ull, 15813794876616811902ull, 2639322304579788584ull}}, {{18378639716828571803ull, 5640158944764879955ull, 1320499522061463262ull, 3299152880724735731ull}}, {{18361613627608326850ull, 16273570717810875752ull, 15485682457858992789ull, 4123941100905919663ull}}, {{11476008517255204282ull, 12476824707845491297ull, 16596080563802952349ull, 2577463188066199789ull}}, {{509952591286841640ull, 1760972829524700410ull, 6910042649471526725ull, 3221828985082749737ull}}, {{9860812775963327858ull, 6812902055333263416ull, 13249239330266796310ull, 4027286231353437171ull}}, {{6163007984977079911ull, 18093121839865453347ull, 5974931572203053741ull, 2517053894595898232ull}}, {{3092073962793961985ull, 8781344244549652972ull, 7468664465253817177ull, 3146317368244872790ull}}, {{3865092453492452481ull, 15588366324114454119ull, 112458544712495663ull, 3932896710306090988ull}}, {{9333211811073864657ull, 16660257980212615680ull, 9293658627300085597ull, 2458060443941306867ull}}, {{11666514763842330821ull, 6990264419983605888ull, 7005387265697719093ull, 3072575554926633584ull}}, {{14583143454802913526ull, 13349516543406895264ull, 8756734082122148866ull, 3840719443658291980ull}}, {{9114464659251820954ull, 12955133858056697444ull, 14696330838181118849ull, 2400449652286432487ull}}, {{11393080824064776192ull, 2358859267288708093ull, 13758727529299010658ull, 3000562065358040609ull}}, {{406292974798806528ull, 12171946120965660925ull, 3363351356341599610ull, 3750702581697550762ull}}, {{2559776118462948032ull, 12219152344030925982ull, 6713780616140887660ull, 2344189113560969226ull}}, {{12423092184933460848ull, 15273940430038657477ull, 17615597807030885383ull, 2930236391951211532ull}}, {{1693807175884662348ull, 14480739519120933943ull, 3572753185079055113ull, 3662795489939014416ull}}, {{15952317025137991647ull, 4265866343619003716ull, 4465941481348818892ull, 4578494362423768020ull}}, {{746826103856468972ull, 11889538501616653131ull, 12014585462697787615ull, 2861558976514855012ull}}, {{14768590685102749926ull, 10250237108593428509ull, 15018231828372234519ull, 3576948720643568765ull}}, {{4625680301096273696ull, 8201110367314397733ull, 4937731730183129437ull, 4471185900804460957ull}}, {{5196893197398865012ull, 7431536988785192535ull, 5391925340578149850ull, 2794491188002788098ull}}, {{1884430478321193361ull, 66049199126714861ull, 15963278712577463121ull, 3493113985003485122ull}}, {{6967224116328879605ull, 4694247517335781480ull, 10730726353867053093ull, 4366392481254356403ull}}, {{4354515072705549753ull, 5239747707548557377ull, 4400860961953214231ull, 2728995300783972752ull}}, {{10054829859309325096ull, 1937998616008308817ull, 5501076202441517789ull, 3411244125979965940ull}}, {{17180223342564044273ull, 7034184288437773925ull, 6876345253051897236ull, 4264055157474957425ull}}, {{13043482598316221623ull, 13619737217128384511ull, 15826930829225905532ull, 2665034473421848390ull}}, {{11692667229467889125ull, 17024671521410480639ull, 10560291499677606107ull, 3331293091777310488ull}}, {{10004148018407473502ull, 16669153383335712895ull, 13200364374597007634ull, 4164116364721638110ull}}, {{13170121539145752795ull, 15029906883012208463ull, 3638541715695741867ull, 2602572727951023819ull}}, {{11850965905504803089ull, 14175697585337872675ull, 18383235199901841046ull, 3253215909938779773ull}}, {{10202021363453615958ull, 8496249944817565036ull, 9143985944595137596ull, 4066519887423474717ull}}, {{15599635389013285782ull, 14533528252365753955ull, 8020834224585654949ull, 2541574929639671698ull}}, {{14887858217839219323ull, 4331852260175028732ull, 802670743877292879ull, 3176968662049589623ull}}, {{163078698589472538ull, 803129306791398012ull, 14838396485128779811ull, 3971210827561987028ull}}, {{9325296223473196144ull, 16642856881240481421ull, 50625766350711573ull, 2482006767226241893ull}}, {{16268306297768883084ull, 6968513046268438064ull, 4674968226365777371ull, 3102508459032802366ull}}, {{1888638798501552239ull, 4098955289408159677ull, 15067082319811997522ull, 3878135573791002957ull}}, {{3486242258277164102ull, 7173533074307487702ull, 11722769459096192403ull, 2423834733619376848ull}}, {{13581174859701230935ull, 4355230324456971723ull, 14653461823870240504ull, 3029793417024221060ull}}, {{12364782556199150764ull, 5444037905571214654ull, 18316827279837800630ull, 3787241771280276325ull}}, {{3116303079197081324ull, 17237581746264172871ull, 13753860059112319345ull, 2367026107050172703ull}}, {{17730436904278515367ull, 7711919127548052376ull, 12580639055463011278ull, 2958782633812715879ull}}, {{3716302056638592592ull, 416526872580289663ull, 11114112800901376194ull, 3698478292265894849ull}}, {{9240217813040202226ull, 4872015313790068943ull, 28791472922278265ull, 2311548932666184281ull}}, {{6938586247872864879ull, 10701705160664974083ull, 4647675359580235735ull, 2889436165832730351ull}}, {{4061546791413693195ull, 8765445432403829700ull, 1197908181047906765ull, 3611795207290912939ull}}, {{5076933489267116493ull, 15568492808932175029ull, 15332443281592047168ull, 4514744009113641173ull}}, {{5478926440005641760ull, 9730308005582609393ull, 11888620060208723432ull, 2821715005696025733ull}}, {{11460344068434440104ull, 12162885006978261741ull, 1025717019978740578ull, 3527143757120032167ull}}, {{490372030260886418ull, 5980234221868051369ull, 15117204330255589435ull, 4408929696400040208ull}}, {{11835697564981523772ull, 1431803379453838153ull, 9448252706409743397ull, 2755581060250025130ull}}, {{959563900944741002ull, 6401440242744685596ull, 2586943846157403438ull, 3444476325312531413ull}}, {{1199454876180926253ull, 17225172340285632803ull, 7845365826124142201ull, 4305595406640664266ull}}, {{16890560362108936572ull, 3848203685037438645ull, 9515039659754976780ull, 2690997129150415166ull}}, {{7278142397354007003ull, 4810254606296798307ull, 2670427537838945167ull, 3363746411438018958ull}}, {{4485991978265120850ull, 1401132239443609980ull, 12561406459153457267ull, 4204683014297523697ull}}, {{12027117023270476339ull, 17016608714148113901ull, 933350009329828935ull, 2627926883935952311ull}}, {{1198838223805931712ull, 16659074874257754473ull, 15001745566944449881ull, 3284908604919940388ull}}, {{6110233798184802544ull, 6988785537540029379ull, 305437884971010736ull, 4106135756149925486ull}}, {{1513053114651807638ull, 4367990960962518362ull, 14025956733389045422ull, 2566334847593703428ull}}, {{11114688430169535356ull, 14683360738057923760ull, 17532445916736306777ull, 3207918559492129285ull}}, {{13893360537711919194ull, 4519142867290240988ull, 8080499340638219760ull, 4009898199365161607ull}}, {{17906722372924725305ull, 2824464292056400617ull, 11967841115539969206ull, 2506186374603226004ull}}, {{8548344910873742919ull, 12753952401925276580ull, 14959801394424961507ull, 3132732968254032505ull}}, {{10685431138592178648ull, 11330754483979207821ull, 4864693687749038172ull, 3915916210317540632ull}}, {{8984237470833805607ull, 16305093589341780696ull, 3040433554843148857ull, 2447447631448462895ull}}, {{11230296838542257009ull, 6546308931395062158ull, 17635599998836099784ull, 3059309539310578618ull}}, {{4814499011323045453ull, 8182886164243827698ull, 12821127961690348922ull, 3824136924138223273ull}}, {{7620747900504291312ull, 9725989871079780215ull, 1095675948415386220ull, 2390085577586389546ull}}, {{4914248857202976236ull, 12157487338849725269ull, 10592966972374008583ull, 2987606971982986932ull}}, {{10754497089931108199ull, 10585173155134768682ull, 13241208715467510729ull, 3734508714978733665ull}}, {{11333246699634330529ull, 18144948268027700186ull, 1358226419526112349ull, 2334067946861708541ull}}, {{4943186337688137353ull, 8846127279752461521ull, 6309469042835028341ull, 2917584933577135676ull}}, {{10790668940537559595ull, 15669345118117964805ull, 7886836303543785426ull, 3646981166971419595ull}}, {{18100022194099337398ull, 10363309360792680198ull, 5246859361002343879ull, 4558726458714274494ull}}, {{6700827852884697970ull, 13394597378136506980ull, 17114345155908628636ull, 2849204036696421558ull}}, {{8376034816105872462ull, 16743246722670633725ull, 12169559408031009987ull, 3561505045870526948ull}}, {{15081729538559728481ull, 16317372384910904252ull, 15211949260038762484ull, 4451881307338158685ull}}, {{202708924745054493ull, 974985703714539350ull, 11813311296737920505ull, 2782425817086349178ull}}, {{9476758192786093924ull, 5830418148070562091ull, 5543267084067624823ull, 3478032271357936473ull}}, {{7234261722555229501ull, 2676336666660814710ull, 11540769873511918933ull, 4347540339197420591ull}}, {{18356471631879182150ull, 3978553425876703145ull, 14130510198586031189ull, 2717212711998387869ull}}, {{9110531484566813976ull, 9584877800773266836ull, 3828079692950375274ull, 3396515889997984837ull}}, {{11388164355708517470ull, 2757725214111807737ull, 9396785634615356997ull, 4245644862497481046ull}}, {{200073694676741563ull, 4029421268033573788ull, 1261305003207210219ull, 2653528039060925654ull}}, {{250092118345926953ull, 425090566614579331ull, 10800003290863788582ull, 3316910048826157067ull}}, {{14147673203214572403ull, 9754735245122999971ull, 8888318095152347823ull, 4146137561032696334ull}}, {{6536452742795413800ull, 13014238555842956838ull, 943512791042829485ull, 2591335975645435209ull}}, {{17393937965349043058ull, 2432740139521532335ull, 5791077007230924761ull, 3239169969556794011ull}}, {{17130736438258915919ull, 7652611192829303323ull, 2627160240611268047ull, 4048962461945992514ull}}, {{8400867264698128497ull, 11700411023159396433ull, 6253661168809430433ull, 2530601538716245321ull}}, {{15112770099300048526ull, 790455723667081829ull, 12428762479439175946ull, 3163251923395306651ull}}, {{5055904568842896945ull, 10211441691438628095ull, 10924267080871582028ull, 3954064904244133314ull}}, {{10077469383167892447ull, 15605523094003918367ull, 11439352943972126671ull, 2471290565152583321ull}}, {{7985150710532477654ull, 14895217849077510055ull, 464133124682994627ull, 3089113206440729152ull}}, {{5369752369738209164ull, 14007336292919499665ull, 580166405853743284ull, 3861391508050911440ull}}, {{14885310277154850488ull, 17977957219929463098ull, 362604003658589552ull, 2413369692531819650ull}}, {{9383265809588787301ull, 4025702451202277257ull, 9676627041428012749ull, 3016712115664774562ull}}, {{16340768280413372031ull, 9643814082430234475ull, 2872411764930240128ull, 3770890144580968203ull}}, {{7907137166044663567ull, 6027383801518896547ull, 17936158417577257744ull, 2356806340363105126ull}}, {{5272235439128441555ull, 7534229751898620684ull, 13196825985116796372ull, 2946007925453881408ull}}, {{6590294298910551944ull, 9417787189873275855ull, 16496032481395995465ull, 3682509906817351760ull}}, {{3626181855210802025ull, 16383920005768982723ull, 2173296528035442715ull, 4603137383521689701ull}}, {{18407264724002608930ull, 7934106994391920249ull, 3664153339235845649ull, 2876960864701056063ull}}, {{9174022849721097450ull, 14529319761417288216ull, 18415249729326970773ull, 3596201080876320078ull}}, {{11467528562151371813ull, 4326591646489446558ull, 13795690124803937659ull, 4495251351095400098ull}}, {{2555519332917219479ull, 398276769842210147ull, 13233992346429848941ull, 2809532094434625061ull}}, {{17029457221428688061ull, 5109531980730150587ull, 2707432377755147464ull, 3511915118043281327ull}}, {{16675135508358472172ull, 6386914975912688234ull, 17219348527476098042ull, 4389893897554101658ull}}, {{15033645711151433012ull, 8603507878372818050ull, 15373778848099949180ull, 2743683685971313536ull}}, {{9568685102084515456ull, 10754384847966022563ull, 770479486415384859ull, 3429604607464141921ull}}, {{7349170359178256416ull, 8831295041530140300ull, 5574785376446618978ull, 4287005759330177401ull}}, {{13816603511341186068ull, 10131245419383725591ull, 15013455906347606621ull, 2679378599581360875ull}}, {{12659068370749094681ull, 17275742792657044893ull, 14155133864507120372ull, 3349223249476701094ull}}, {{1988777408154204640ull, 3147934417111754501ull, 8470545293779124658ull, 4186529061845876368ull}}, {{3548828889310071852ull, 6579145029122234467ull, 5294090808611952911ull, 2616580663653672730ull}}, {{18271094166919753527ull, 3612245267975405179ull, 15840985547619716947ull, 3270725829567090912ull}}, {{18227181690222304005ull, 18350364640251420186ull, 1354487860815094567ull, 4088407286958863641ull}}, {{16003674574816327907ull, 18386506927798219472ull, 12375769959077903864ull, 2555254554349289775ull}}, {{1557849144810858268ull, 4536389586038222725ull, 10858026430419991927ull, 3194068192936612219ull}}, {{6558997449440960738ull, 1058800964120390502ull, 8960847019597602005ull, 3992585241170765274ull}}, {{17934431461182764174ull, 2967593611788938015ull, 10212215405675889157ull, 2495365775731728296ull}}, {{17806353308051067313ull, 8321178033163560423ull, 12765269257094861446ull, 3119207219664660370ull}}, {{17646255616636446237ull, 1178100504599674721ull, 6733214534513801000ull, 3899009024580825463ull}}, {{4111380732756697042ull, 736312815374796701ull, 11125788111712207481ull, 2436880640363015914ull}}, {{9750911934373259207ull, 5532077037645883780ull, 4683863102785483543ull, 3046100800453769893ull}}, {{12188639917966574008ull, 2303410278629966821ull, 10466514896909242333ull, 3807626000567212366ull}}, {{9923742957942802707ull, 3745474433357423215ull, 1929885792140888554ull, 2379766250354507729ull}}, {{7792992679001115480ull, 13905215078551554827ull, 7024043258603498596ull, 2974707812943134661ull}}, {{5129554830324006446ull, 17381518848189443534ull, 13391740091681761149ull, 3718384766178918326ull}}, {{17041029824234667741ull, 13169292289332096160ull, 3758151538873712814ull, 2323990478861823954ull}}, {{2854543206583783060ull, 7238243324810344393ull, 13921061460446916826ull, 2904988098577279942ull}}, {{8179865026657116729ull, 18271176192867706299ull, 8177954788703870224ull, 3631235123221599928ull}}, {{5613145264894008007ull, 4392226167375081258ull, 10222443485879837781ull, 4539043904026999910ull}}, {{8119901808986142909ull, 5050984363823119738ull, 1777341160247510709ull, 2836902440016874944ull}}, {{926505224377902828ull, 10925416473206287577ull, 2221676450309388386ull, 3546128050021093680ull}}, {{5769817548899766439ull, 4433398554653083663ull, 2777095562886735483ull, 4432660062526367100ull}}, {{10523664995703435880ull, 465031087444483337ull, 10959056763658985485ull, 2770412539078979437ull}}, {{17766267263056682754ull, 5192974877732992075ull, 18310506973001119760ull, 3463015673848724296ull}}, {{17596148060393465539ull, 6491218597166240094ull, 4441389642541848084ull, 4328769592310905371ull}}, {{6385906519318528058ull, 13280383660083675867ull, 470025517374961100ull, 2705480995194315857ull}}, {{3370697130720772168ull, 16600479575104594834ull, 5199217915146089279ull, 3381851243992894821ull}}, {{13436743450255741018ull, 16138913450453355638ull, 11110708412359999503ull, 4227314054991118526ull}}, {{3786278637982450233ull, 17004349934174429130ull, 2332506739297611785ull, 2642071284369449079ull}}, {{13956220334332838599ull, 7420379362435872700ull, 16750691479404178444ull, 3302589105461811348ull}}, {{17445275417916048248ull, 9275474203044840875ull, 2491620275545671439ull, 4128236381827264186ull}}, {{8597454126983836203ull, 12714700404544107403ull, 6168948690643432553ull, 2580147738642040116ull}}, {{6135131640302407350ull, 2058317450397970542ull, 7711185863304290692ull, 3225184673302550145ull}}, {{16892286587232784995ull, 2572896812997463177ull, 14250668347557751269ull, 4031480841628187681ull}}, {{3640150089379408766ull, 3913903517337108438ull, 1989138689582512687ull, 2519675526017617301ull}}, {{13773559648579036766ull, 280693378243997643ull, 7098109380405528763ull, 3149594407522021626ull}}, {{12605263542296408053ull, 14185924778087160766ull, 18096008762361686761ull, 3936993009402527032ull}}, {{3266603695507867129ull, 1948673958663393623ull, 11310005476476054226ull, 2460620630876579395ull}}, {{17918312674666997623ull, 11659214485184017836ull, 9525820827167679878ull, 3075775788595724244ull}}, {{3951146769624195413ull, 5350646069625246488ull, 11907276033959599848ull, 3844719735744655305ull}}, {{2469466731015122133ull, 3344153793515779055ull, 524518493583668049ull, 2402949834840409566ull}}, {{16921891469051066379ull, 8791878260322111722ull, 9879020153834360869ull, 3003687293550511957ull}}, {{11928992299459057165ull, 15601533843830027557ull, 16960461210720338990ull, 3754609116938139946ull}}, {{9761463196375604680ull, 5139272633966379319ull, 15211974275127599773ull, 2346630698086337466ull}}, {{7590142977042117946ull, 11035776810885362053ull, 9791595807054723908ull, 2933288372607921833ull}}, {{14099364739730035337ull, 13794721013606702566ull, 16851180777245792789ull, 3666610465759902291ull}}, {{8400833887807768363ull, 3408343211726214496ull, 16452289953129853083ull, 4583263082199877864ull}}, {{5250521179879855227ull, 18271115571824741724ull, 10282681220706158176ull, 2864539426374923665ull}}, {{6563151474849819034ull, 4392150391071375539ull, 17465037544310085625ull, 3580674282968654581ull}}, {{3592253325134885888ull, 10101874007266607328ull, 7996238875105443319ull, 4475842853710818227ull}}, {{2245158328209303680ull, 13231200282182711436ull, 2691806287727208122ull, 2797401783569261392ull}}, {{2806447910261629600ull, 7315628315873613487ull, 3364757859659010153ull, 3496752229461576740ull}}, {{17343117943109200712ull, 13756221413269404762ull, 4205947324573762691ull, 4370940286826970925ull}}, {{15451134732870638349ull, 6291795374079684024ull, 4934560087072295634ull, 2731837679266856828ull}}, {{867174342378746320ull, 17088116254454380839ull, 6168200108840369542ull, 3414797099083571035ull}}, {{14919025983255596612ull, 12136773281213200240ull, 3098564117623074024ull, 4268496373854463794ull}}, {{9324391239534747883ull, 7585483300758250150ull, 6548288591941809169ull, 2667810233659039871ull}}, {{2432117012563659045ull, 14093540144375200592ull, 3573674721499873557ull, 3334762792073799839ull}}, {{3040146265704573807ull, 3781867125186837028ull, 18302151457157005659ull, 4168453490092249798ull}}, {{11123463452920134437ull, 57823944028079190ull, 6827158642295740633ull, 2605283431307656124ull}}, {{4680957279295392239ull, 4683965948462486892ull, 8533948302869675791ull, 3256604289134570155ull}}, {{5851196599119240298ull, 1243271417150720711ull, 6055749360159706835ull, 4070755361418212694ull}}, {{10574526902090607043ull, 16917945700215058108ull, 17619901405381980483ull, 2544222100886382933ull}}, {{13218158627613258803ull, 16535746106841434731ull, 8189818701445311892ull, 3180277626107978667ull}}, {{11911012266089185600ull, 2222938559842241798ull, 5625587358379251962ull, 3975347032634973334ull}}, {{2832696647878353096ull, 6001022618328789028ull, 17351050154269196188ull, 2484591895396858333ull}}, {{3540870809847941370ull, 7501278272910986285ull, 7853754637554331523ull, 3105739869246072917ull}}, {{9037774530737314616ull, 4764911822711344952ull, 14428879315370302308ull, 3882174836557591146ull}}, {{5648609081710821635ull, 12201441926049366403ull, 13629735590533826846ull, 2426359272848494466ull}}, {{2449075333711139140ull, 6028430370706932196ull, 7813797451312507750ull, 3032949091060618083ull}}, {{3061344167138923925ull, 16758910000238441053ull, 5155560795713246783ull, 3791186363825772604ull}}, {{4219183113675521405ull, 17391847777790107514ull, 12445597534175555047ull, 2369491477391107877ull}}, {{14497350928949177564ull, 17128123703810246488ull, 1721938862437280097ull, 2961864346738884847ull}}, {{18121688661186471955ull, 7575096574480644398ull, 15987481633328763834ull, 3702330433423606058ull}}, {{6714369394814157068ull, 9346121377477790653ull, 14603862039257865300ull, 2313956520889753786ull}}, {{13004647761945084239ull, 11682651721847238316ull, 9031455512217555817ull, 2892445651112192233ull}}, {{16255809702431355299ull, 768256597026884183ull, 15901005408699332676ull, 3615557063890240291ull}}, {{15708076109611806220ull, 960320746283605229ull, 15264570742446777941ull, 4519446329862800364ull}}, {{12123390577721072839ull, 2906043475640947220ull, 316984677174460405ull, 2824653956164250228ull}}, {{15154238222151341049ull, 8244240362978571929ull, 396230846468075506ull, 3530817445205312785ull}}, {{5107739722407012599ull, 1081928416868439104ull, 5106974576512482287ull, 4413521806506640981ull}}, {{3192337326504382875ull, 7593734288183856296ull, 5497702119533995381ull, 2758451129066650613ull}}, {{3990421658130478593ull, 14103853878657208274ull, 11483813667844882130ull, 3448063911333313266ull}}, {{14211399109517874050ull, 8406445311466734534ull, 5131395047951326855ull, 4310079889166641583ull}}, {{4270438425021283377ull, 12171557347307790940ull, 10124650932610661140ull, 2693799930729150989ull}}, {{5338048031276604221ull, 15214446684134738675ull, 17267499684190714329ull, 3367249913411438736ull}}, {{2060874020668367373ull, 5183000299886259632ull, 3137630531528841296ull, 4209062391764298421ull}}, {{1288046262917729608ull, 3239375187428912270ull, 4266862091419219762ull, 2630663994852686513ull}}, {{10833429865501937818ull, 13272591021140916145ull, 9945263632701412606ull, 3288329993565858141ull}}, {{18153473350304810176ull, 7367366739571369373ull, 17043265559304153662ull, 4110412491957322676ull}}, {{13651763853154200312ull, 18439662267514269570ull, 1428668937710320230ull, 2569007807473326673ull}}, {{7841332779587974582ull, 13826205797538061155ull, 6397522190565288192ull, 3211259759341658341ull}}, {{5189979956057580324ull, 17282757246922576444ull, 12608588756633998144ull, 4014074699177072926ull}}, {{12467109509390763511ull, 10801723279326610277ull, 3268681954468860936ull, 2508796686985670579ull}}, {{1748828831456290676ull, 13502154099158262847ull, 17920910498368239882ull, 3135995858732088223ull}}, {{16021094094602527057ull, 7654320587093052750ull, 17789452104532911949ull, 3919994823415110279ull}}, {{5401497790699191507ull, 7089793376146851921ull, 18035936592974151824ull, 2449996764634443924ull}}, {{11363558256801377287ull, 8862241720183564901ull, 4098176667508138164ull, 3062495955793054906ull}}, {{369389765719557897ull, 11077802150229456127ull, 14346092871239948513ull, 3828119944741318632ull}}, {{7148397631215805542ull, 6097316252328223ull, 8966308044524967821ull, 2392574965463324145ull}}, {{4323811020592369023ull, 4619307663742798183ull, 15819571074083597680ull, 2990718706829155181ull}}, {{793077757313073375ull, 5774134579678497729ull, 5939405787322333388ull, 3738398383536443977ull}}, {{12024888644389140619ull, 12832206149153836888ull, 15241343663144928127ull, 2336498989710277485ull}}, {{15031110805486425774ull, 11428571668014908206ull, 5216621523648996447ull, 2920623737137846857ull}}, {{9565516470003256410ull, 9674028566591247354ull, 11132462922988633463ull, 3650779671422308571ull}}, {{2733523550649294704ull, 7480849689811671289ull, 9303892635308403925ull, 4563474589277885714ull}}, {{13237667265224278950ull, 6981374065345988507ull, 10426618915495140357ull, 2852171618298678571ull}}, {{11935398063102960784ull, 13338403600109873538ull, 8421587625941537542ull, 3565214522873348214ull}}, {{5695875542023925171ull, 7449632463282566115ull, 1303612495572146120ull, 4456518153591685268ull}}, {{1254079204551259280ull, 4656020289551603822ull, 10038129846587367133ull, 2785323845994803292ull}}, {{10790971042543849908ull, 10431711380366892681ull, 12547662308234208916ull, 3481654807493504115ull}}, {{18100399821607200289ull, 13039639225458615851ull, 11072891866865373241ull, 4352068509366880144ull}}, {{9006906879290806229ull, 1232245488270553051ull, 6920557416790858276ull, 2720042818354300090ull}}, {{6646947580686119882ull, 1540306860338191314ull, 17874068807843348653ull, 3400053522942875112ull}}, {{17532056512712425660ull, 6537069593850127046ull, 3895841936094634200ull, 4250066903678593891ull}}, {{6345849302017878134ull, 4085668496156329404ull, 129058200845452423ull, 2656291814799121182ull}}, {{7932311627522347667ull, 495399601768023851ull, 9384694787911591337ull, 3320364768498901477ull}}, {{5303703515975546680ull, 5230935520637417718ull, 16342554503316877075ull, 4150455960623626846ull}}, {{17149872752766880387ull, 963491691184692121ull, 5602410546145660268ull, 2594034975389766779ull}}, {{7602282885676436772ull, 1204364613980865152ull, 2391327164254687431ull, 3242543719237208474ull}}, {{9502853607095545965ull, 15340513822758245152ull, 12212530992173135096ull, 4053179649046510592ull}}, {{5939283504434716228ull, 9587821139223903220ull, 7632831870108209435ull, 2533237280654069120ull}}, {{7424104380543395285ull, 7373090405602491121ull, 9541039837635261794ull, 3166546600817586400ull}}, {{13891816494106632010ull, 18439735043857889709ull, 11926299797044077242ull, 3958183251021983000ull}}, {{10988228318030338959ull, 16136520420838568972ull, 7453937373152548276ull, 2473864531888739375ull}}, {{13735285397537923698ull, 1723906452338659599ull, 4705735698013297442ull, 3092330664860924219ull}}, {{12557420728495016718ull, 11378255102278100307ull, 1270483604089233898ull, 3865413331076155274ull}}, {{5542544946095691497ull, 11723095457351200596ull, 5405738270983159090ull, 2415883331922597046ull}}, {{6928181182619614371ull, 5430497284834224937ull, 15980544875583724671ull, 3019854164903246307ull}}, {{13271912496701905868ull, 2176435587615393267ull, 15363995076052267935ull, 3774817706129057884ull}}, {{5989102301224997216ull, 8277801269900702648ull, 379124885677891651ull, 2359261066330661178ull}}, {{7486377876531246520ull, 5735565568948490406ull, 9697278143952140372ull, 2949076332913326472ull}}, {{134600308809282341ull, 7169456961185613008ull, 12121597679940175465ull, 3686345416141658090ull}}, {{168250386011602926ull, 13573507219909404164ull, 5928625063070443523ull, 4607931770177072613ull}}, {{9328528528112027637ull, 6177599003229683650ull, 6011233673632721154ull, 2879957356360670383ull}}, {{2437288623285258738ull, 16945370790891880371ull, 2902356073613513538ull, 3599946695450837979ull}}, {{16881668834388737135ull, 11958341451760074655ull, 17463003147299055635ull, 4499933369313547473ull}}, {{17468572049134042565ull, 5168120398136352707ull, 3996847939420827916ull, 2812458355820967171ull}}, {{17224029042990165303ull, 6460150497670440884ull, 384373905848646991ull, 3515572944776208964ull}}, {{3083292230028155012ull, 3463502103660663202ull, 480467382310808739ull, 4394466180970261205ull}}, {{6538743662194984787ull, 18305589879283772165ull, 2606135123157949413ull, 2746541363106413253ull}}, {{12785115596171118887ull, 9046929293822551494ull, 7869354922374824671ull, 3433176703883016566ull}}, {{6758022458359122801ull, 6696975598850801464ull, 613321616113755031ull, 4291470879853770708ull}}, {{4223764036474451751ull, 11103138776922832771ull, 9606698046925872702ull, 2682169299908606692ull}}, {{668019027165676785ull, 4655551434298765156ull, 12008372558657340878ull, 3352711624885758365ull}}, {{835023783957095981ull, 15042811329728232253ull, 1175407643039512385ull, 4190889531107197957ull}}, {{2827732874186878940ull, 2484228053439063302ull, 3040472786113389193ull, 2619305956941998723ull}}, {{12758038129588374483ull, 7716971085226217031ull, 17635649037923900203ull, 3274132446177498403ull}}, {{11335861643558080200ull, 5034527838105383385ull, 17432875278977487350ull, 4092665557721873004ull}}, {{167384499582718269ull, 16981637954098028328ull, 1672175012506153785ull, 2557915973576170628ull}}, {{209230624478397836ull, 7391989387340371698ull, 2090218765632692232ull, 3197394966970213285ull}}, {{9484910317452773103ull, 9239986734175464622ull, 7224459475468253194ull, 3996743708712766606ull}}, {{1316382929980595285ull, 10386677727287053293ull, 18350345227449821958ull, 2497964817945479128ull}}, {{6257164680903132011ull, 3759975122254040808ull, 4491187460602725832ull, 3122456022431848911ull}}, {{7821455851128915013ull, 4699968902817551010ull, 1002298307326019386ull, 3903070028039811139ull}}, {{9500095925382959787ull, 7549166582688357285ull, 16767337506574619780ull, 2439418767524881961ull}}, {{16486805925156087638ull, 9436458228360446606ull, 7124113827936111013ull, 3049273459406102452ull}}, {{11385135369590333740ull, 16407258803877946162ull, 8905142284920138766ull, 3811591824257628065ull}}, {{11727395624421346491ull, 5642850733996328447ull, 17094928974143556489ull, 2382244890161017540ull}}, {{10047558512099295210ull, 11665249435922798463ull, 2921917143969893995ull, 2977806112701271926ull}}, {{7947762121696731109ull, 9969875776476110175ull, 12875768466817143302ull, 3722257640876589907ull}}, {{11884880353701538799ull, 1619486341870180955ull, 5741512282547020612ull, 2326411025547868692ull}}, {{10244414423699535595ull, 2024357927337726194ull, 7176890353183775765ull, 2908013781934835865ull}}, {{3582145992769643685ull, 7142133427599545647ull, 13582798959907107610ull, 3635017227418544831ull}}, {{18312740546244218319ull, 18151038821354207866ull, 12366812681456496608ull, 4543771534273181039ull}}, {{16057148859830024353ull, 11344399263346379916ull, 14646786953551392236ull, 2839857208920738149ull}}, {{1624692001077978825ull, 14180499079182974896ull, 4473425636657076583ull, 3549821511150922687ull}}, {{2030865001347473532ull, 13113937830551330716ull, 980096027393957825ull, 4437276888938653359ull}}, {{10492662662696946765ull, 1278682116453499841ull, 7530089044762305497ull, 2773298055586658349ull}}, {{17727514346798571361ull, 6210038663994262705ull, 14024297324380269775ull, 3466622569483322936ull}}, {{8324334878216050489ull, 3150862311565440478ull, 17530371655475337219ull, 4333278211854153670ull}}, {{591023280457643652ull, 18110190009224257963ull, 6344796266244697857ull, 2708298882408846044ull}}, {{14573837155854218276ull, 8802679456248158741ull, 7930995332805872322ull, 3385373603011057555ull}}, {{4382238389535609133ull, 1779977283455422619ull, 5302058147579952499ull, 4231717003763821944ull}}, {{433055984246061757ull, 17253386866655496801ull, 3313786342237470311ull, 2644823127352388715ull}}, {{5153005998734965100ull, 16955047564891983097ull, 17977290983079001601ull, 3306028909190485893ull}}, {{11052943516846094278ull, 7358751400832815159ull, 8636555673566588290ull, 4132536136488107367ull}}, {{13825618725669890780ull, 9210905643947897378ull, 12315376323620199537ull, 2582835085305067104ull}}, {{8058651370232587667ull, 16125318073362259627ull, 15394220404525249421ull, 3228543856631333880ull}}, {{5461628194363346680ull, 6321589536420660822ull, 796031431947010161ull, 4035679820789167351ull}}, {{17248575676759255387ull, 15480208506331382773ull, 7415048672607963206ull, 2522299887993229594ull}}, {{7725661540666905522ull, 10126888596059452659ull, 45438803905178200ull, 3152874859991536993ull}}, {{5045390907406243998ull, 12658610745074315824ull, 4668484523308860654ull, 3941093574989421241ull}}, {{3153369317128902499ull, 3299945697244059486ull, 14447017873136507669ull, 2463183484368388275ull}}, {{13165083683265903932ull, 8736618139982462261ull, 13447086322993246682ull, 3078979355460485344ull}}, {{2621296548800216202ull, 1697400638123302019ull, 16808857903741558353ull, 3848724194325606680ull}}, {{17779211407495992791ull, 12590090444895533521ull, 10505536189838473970ull, 2405452621453504175ull}}, {{8388956204087827276ull, 6514241019264641094ull, 8520234218870704559ull, 3006815776816880219ull}}, {{1262823218255008287ull, 3531115255653413464ull, 6038606755160992795ull, 3758519721021100274ull}}, {{789264511409380180ull, 18347848099279241079ull, 8385815240403008400ull, 2349074825638187671ull}}, {{14821638694543888936ull, 4488066050389499732ull, 5870583032076372597ull, 2936343532047734589ull}}, {{80304294470309554ull, 10221768581414262570ull, 11949914808522853650ull, 3670429415059668236ull}}, {{9323752404942662751ull, 3553838689913052404ull, 14937393510653567063ull, 4588036768824585295ull}}, {{15050717289943940027ull, 9138678208836739608ull, 16253399971799561270ull, 2867522980515365809ull}}, {{366652538720373418ull, 2199975724191148703ull, 6481691909467287876ull, 3584403725644207262ull}}, {{14293373728682630485ull, 2749969655238935878ull, 17325486923688885653ull, 4480504657055259077ull}}, {{4321672561999256149ull, 4024574043738028876ull, 13134272336519247485ull, 2800315410659536923ull}}, {{5402090702499070186ull, 9642403573099923999ull, 11806154402221671452ull, 3500394263324421154ull}}, {{2140927359696449829ull, 12053004466374904999ull, 5534320965922313507ull, 4375492829155526443ull}}, {{8255608627451362999ull, 5227284782270621672ull, 1153107594487751990ull, 2734683018222204027ull}}, {{10319510784314203749ull, 15757478014693052898ull, 15276442548391853699ull, 3418353772777755033ull}}, {{3676016443537978878ull, 15085161499938928219ull, 5260495130207653412ull, 4272942215972193792ull}}, {{18438411341707094463ull, 204853900607054328ull, 3287809456379783383ull, 2670588884982621120ull}}, {{4601270103424316462ull, 14091125431040981623ull, 4109761820474729228ull, 3338236106228276400ull}}, {{1139901610853007674ull, 17613906788801227029ull, 5137202275593411535ull, 4172795132785345500ull}}, {{3018281515996823748ull, 17926220770641848749ull, 12434123459100658017ull, 2607996957990840937ull}}, {{8384537913423417589ull, 8572717908020147224ull, 1707596268593658810ull, 3259996197488551172ull}}, {{10480672391779271987ull, 1492525348170408222ull, 2134495335742073513ull, 4074995246860688965ull}}, {{1938734226434657088ull, 12462043388674974899ull, 3639902594052489897ull, 2546872029287930603ull}}, {{16258475838325485072ull, 1742496180561554911ull, 18384936297847776084ull, 3183590036609913253ull}}, {{15711408779479468435ull, 2178120225701943639ull, 9146112317027556393ull, 3979487545762391567ull}}, {{16737159514815749628ull, 12890540187132184534ull, 12633849225783304601ull, 2487179716101494729ull}}, {{11698077356664911227ull, 2278117178633066956ull, 1957253476946967040ull, 3108974645126868412ull}}, {{14622596695831139034ull, 2847646473291333695ull, 2446566846183708800ull, 3886218306408585515ull}}, {{16056651962535543752ull, 1779779045807083559ull, 17670005343360675664ull, 2428886441505365946ull}}, {{15459128934742041786ull, 2224723807258854449ull, 12864134642346068772ull, 3036108051881707433ull}}, {{5488853113145388521ull, 2780904759073568062ull, 2245110247650422253ull, 3795135064852134292ull}}, {{17265591250998031538ull, 4043908483634673990ull, 10626565941636289716ull, 2371959415532583932ull}}, {{12358617026892763614ull, 5054885604543342488ull, 13283207427045362145ull, 2964949269415729915ull}}, {{15448271283615954517ull, 10930293024106566014ull, 11992323265379314777ull, 3706186586769662394ull}}, {{5043483533832583670ull, 18360648186135073519ull, 12106888059289459639ull, 2316366616731038996ull}}, {{1692668398863341683ull, 18339124214241453995ull, 15133610074111824549ull, 2895458270913798745ull}}, {{15950893553861340815ull, 9088847212519653781ull, 5081954537357616975ull, 3619322838642248432ull}}, {{6103558887044512307ull, 6749372997222179323ull, 6352443171697021219ull, 4524153548302810540ull}}, {{1508881295189126240ull, 1912515114050168125ull, 13193649019165414070ull, 2827595967689256587ull}}, {{6497787637413795704ull, 11614015929417485964ull, 11880375255529379683ull, 3534494959611570734ull}}, {{8122234546767244630ull, 9905833893344469551ull, 5627097032556948796ull, 4418118699514463418ull}}, {{11993925619370609750ull, 15414518220195069277ull, 8128621663775480901ull, 2761324187196539636ull}}, {{1157348968931098475ull, 5433089719961672885ull, 10160777079719351127ull, 3451655233995674545ull}}, {{6058372229591260998ull, 2179676131524703202ull, 17312657368076576813ull, 4314569042494593181ull}}, {{8398168661921926028ull, 3668140591416633453ull, 13126253864261554460ull, 2696605651559120738ull}}, {{15109396845829795439ull, 4585175739270791816ull, 7184445293472167267ull, 3370757064448900923ull}}, {{440001983577692682ull, 1119783655661101867ull, 4368870598412821180ull, 4213446330561126154ull}}, {{16415902304231915591ull, 9923236821642964474ull, 7342230142435401141ull, 2633403956600703846ull}}, {{11296505843435118680ull, 17015732045481093497ull, 18401159714899027234ull, 3291754945750879807ull}}, {{285574249011734638ull, 12046293019996591064ull, 18389763625196396139ull, 4114693682188599759ull}}, {{178483905632334149ull, 5223090128284175463ull, 18411131293388829443ull, 2571683551367874849ull}}, {{14058162937322581398ull, 1917176641927831424ull, 9178856061453873092ull, 3214604439209843562ull}}, {{17572703671653226747ull, 2396470802409789280ull, 2250198039962565557ull, 4018255549012304453ull}}, {{10982939794783266717ull, 3803637260719812252ull, 3712216784190297425ull, 2511409718132690283ull}}, {{13728674743479083397ull, 9366232594327153219ull, 28584961810483877ull, 3139262147665862854ull}}, {{12549157410921466342ull, 16319476761336329428ull, 9259103239117880654ull, 3924077684582328567ull}}, {{17066595418680692272ull, 5587986957407817988ull, 12704468552089757265ull, 2452548552863955354ull}}, {{2886500199641313723ull, 11596669715187160390ull, 6657213653257420773ull, 3065685691079944193ull}}, {{12831497286406417962ull, 660779088701786775ull, 12933203084999163871ull, 3832107113849930241ull}}, {{14937214831645093083ull, 7330515958079698590ull, 1165722900483395563ull, 2395066946156206401ull}}, {{9448146502701590545ull, 4551458929172235334ull, 6068839644031632358ull, 2993833682695258001ull}}, {{2586811091522212373ull, 14912695698320069976ull, 12197735573466928351ull, 3742292103369072501ull}}, {{1616756932201382733ull, 16237963839091125591ull, 9929427742630524171ull, 2338932564605670313ull}}, {{15856004220533892129ull, 15685768780436519084ull, 17023470696715543118ull, 2923665705757087891ull}}, {{1373261201957813545ull, 10383838938690873048ull, 16667652352467040994ull, 3654582132196359864ull}}, {{1716576502447266931ull, 3756426636508815502ull, 2387821366874249627ull, 4568227665245449831ull}}, {{14907918369311705544ull, 41923638604315736ull, 8409917381937487873ull, 2855142290778406144ull}}, {{188153887930080314ull, 4664090566682782575ull, 10512396727421859841ull, 3568927863473007680ull}}, {{14070250415194764104ull, 10441799226780866122ull, 13140495909277324801ull, 4461159829341259600ull}}, {{13405592527924115469ull, 18055339562806511086ull, 8212809943298328000ull, 2788224893338287250ull}}, {{7533618623050368528ull, 4122430379798587242ull, 1042640392268134193ull, 3485281116672859063ull}}, {{193651241958184852ull, 9764723993175621957ull, 15138358545617331453ull, 4356601395841073828ull}}, {{2426875035437559485ull, 8408795504948457675ull, 238102054156056350ull, 2722875872400671143ull}}, {{16868651849579113068ull, 1287622344330796285ull, 14132685622977234150ull, 3403594840500838928ull}}, {{7250756756691727623ull, 10832899967268271165ull, 17665857028721542687ull, 4254493550626048660ull}}, {{6837565982146023717ull, 13688091507183751334ull, 1817788606096188371ull, 2659058469141280413ull}}, {{17770329514537305454ull, 12498428365552301263ull, 6883921776047623368ull, 3323823086426600516ull}}, {{17601225874744243913ull, 15623035456940376579ull, 8604902220059529210ull, 4154778858033250645ull}}, {{8694923162501458494ull, 14376083179015123266ull, 7683906896750899708ull, 2596736786270781653ull}}, {{1645281916272047309ull, 17970103973768904083ull, 14216569639366012539ull, 3245920982838477066ull}}, {{15891660450622222848ull, 17850943948783742199ull, 8547340012352739866ull, 4057401228548096333ull}}, {{16849816809279971136ull, 15768525986417226778ull, 7647930516934156368ull, 2535875767842560208ull}}, {{11838898974745188112ull, 1263913409311981857ull, 9559913146167695461ull, 3169844709803200260ull}}, {{963565663149321428ull, 6191577780067365226ull, 11949891432709619326ull, 3962305887254000325ull}}, {{5213914557895713797ull, 17704794167824266978ull, 9774525154657206030ull, 2476441179533750203ull}}, {{15740765234224418054ull, 12907620672925557914ull, 7606470424894119634ull, 3095551474417187754ull}}, {{10452584505925746759ull, 6911153804302171585ull, 284715994262873735ull, 3869439343021484693ull}}, {{18062080362272061485ull, 11237000155329939096ull, 2483790505627990036ull, 2418399589388427933ull}}, {{4130856379130525240ull, 14046250194162423871ull, 7716424150462375449ull, 3022999486735534916ull}}, {{551884455485768646ull, 3722754687420866127ull, 9645530188077969312ull, 3778749358419418645ull}}, {{7262456812319687260ull, 2326721679638041329ull, 8334299376762424772ull, 2361718349012136653ull}}, {{13689757033826996978ull, 2908402099547551661ull, 15029560239380418869ull, 2952147936265170816ull}}, {{3277138237001582511ull, 8247188642861827481ull, 340206225515971970ull, 3690184920331463521ull}}, {{13577426444194458830ull, 9766178920216030079ull, 11741843937015952241ull, 2306365575207164700ull}}, {{12360097036815685633ull, 16819409668697425503ull, 14677304921269940301ull, 2882956969008955875ull}}, {{10838435277592219137ull, 7189204030589618167ull, 13734945133160037473ull, 3603696211261194844ull}}, {{8936358078562886017ull, 13598191056664410613ull, 17168681416450046841ull, 4504620264076493555ull}}, {{7891066808315497713ull, 1581340382774174777ull, 8424582876067585324ull, 2815387665047808472ull}}, {{14475519528821760045ull, 1976675478467718471ull, 10530728595084481655ull, 3519234581309760590ull}}, {{13482713392599812152ull, 16305902403366811801ull, 3940038707000826260ull, 4399043226637200738ull}}, {{1509166842733800739ull, 967816965249481568ull, 7074210210302904317ull, 2749402016648250461ull}}, {{1886458553417250924ull, 5821457224989239864ull, 13454448781306018300ull, 3436752520810313076ull}}, {{2358073191771563655ull, 7276821531236549830ull, 16818060976632522875ull, 4295940651012891345ull}}, {{15308853800139390996ull, 2242170447809149691ull, 3593759082754244941ull, 2684962906883057091ull}}, {{14524381231746850841ull, 7414399078188825018ull, 18327256908724969888ull, 3356203633603821363ull}}, {{8932104502828787743ull, 9267998847736031273ull, 18297385117478824456ull, 4195254542004776704ull}}, {{17111780360336462100ull, 5792499279835019545ull, 11435865698424265285ull, 2622034088752985440ull}}, {{7554667395138413913ull, 11852310118221162336ull, 14294832123030331606ull, 3277542610941231800ull}}, {{9443334243923017391ull, 5592015610921677112ull, 17868540153787914508ull, 4096928263676539750ull}}, {{5902083902451885869ull, 12718381793680824003ull, 6556151577690058663ull, 2560580164797837344ull}}, {{2765918859637469433ull, 11286291223673642100ull, 8195189472112573329ull, 3200725205997296680ull}}, {{3457398574546836791ull, 272805974309888913ull, 10243986840140716662ull, 4000906507496620850ull}}, {{13690089155160242754ull, 14005561789225844282ull, 11014177793515335817ull, 2500566567185388031ull}}, {{7889239407095527635ull, 3671894181250141641ull, 9156036223466781868ull, 3125708208981735039ull}}, {{14473235277296797447ull, 4589867726562677051ull, 6833359260906089431ull, 3907135261227168799ull}}, {{6739929039096804453ull, 9786196356742755013ull, 11188378565707387750ull, 2441959538266980499ull}}, {{13036597317298393470ull, 3009373409073667958ull, 9373787188706846784ull, 3052449422833725624ull}}, {{7072374609768216029ull, 3761716761342084948ull, 11717233985883558480ull, 3815561778542157030ull}}, {{13643606167959910826ull, 2351072975838803092ull, 2711585222749836146ull, 2384726111588848144ull}}, {{17054507709949888533ull, 12162213256653279673ull, 3389481528437295182ull, 2980907639486060180ull}}, {{7483076582155196954ull, 5979394533961823784ull, 4236851910546618978ull, 3726134549357575225ull}}, {{4676922863846998096ull, 8348807602153527769ull, 14177247490160106621ull, 2328834093348484515ull}}, {{10457839598236135524ull, 15047695521119297615ull, 13109873344272745372ull, 2911042616685605644ull}}, {{8460613479367781501ull, 362875327689570403ull, 16387341680340931716ull, 3638803270857007055ull}}, {{5964080830782338973ull, 453594159611963004ull, 15872491081998776741ull, 4548504088571258819ull}}, {{12950922556093737666ull, 2589339358971170829ull, 7614463917035541511ull, 2842815055357036762ull}}, {{2353595139835008371ull, 17071732253996127249ull, 294707859439651080ull, 3553518819196295953ull}}, {{7553679943221148367ull, 2892921243785607445ull, 4980070842726951755ull, 4441898523995369941ull}}, {{7026892973726911682ull, 17948976841861862317ull, 5418387285918038798ull, 2776186577497106213ull}}, {{13395302235586027506ull, 13212849015472552088ull, 11384670125824936402ull, 3470233221871382766ull}}, {{16744127794482534382ull, 7292689232485914302ull, 5007465620426394695ull, 4337791527339228458ull}}, {{5853393853124196085ull, 11475459797944778295ull, 7741352031193884588ull, 2711119704587017786ull}}, {{2705056297977857202ull, 14344324747430972869ull, 453318002137579927ull, 3388899630733772233ull}}, {{7993006390899709407ull, 13318719915861328182ull, 5178333521099362813ull, 4236124538417215291ull}}, {{383942975884930475ull, 10630042956627024066ull, 930615441473407806ull, 2647577836510759557ull}}, {{9703300756710938902ull, 4064181658929004274ull, 5774955320269147662ull, 3309472295638449446ull}}, {{2905753909033897819ull, 14303599110516031151ull, 16442066187191210385ull, 4136840369548061807ull}}, {{8733625220787267993ull, 2022220416431437613ull, 17193820394635588347ull, 2585525230967538629ull}}, {{15528717544411472896ull, 16362833575821460728ull, 7657217438012321721ull, 3231906538709423287ull}}, {{964152856804789503ull, 6618483914494662199ull, 4959835779088014248ull, 4039883173386779109ull}}, {{7520124563144075296ull, 4136552446559163874ull, 5405740371143702857ull, 2524926983366736943ull}}, {{176783667075318312ull, 9782376576626342747ull, 2145489445502240667ull, 3156158729208421179ull}}, {{14056037639126311601ull, 7616284702355540529ull, 16516919862159964546ull, 3945198411510526473ull}}, {{1867494496812862895ull, 9371863957399600735ull, 3405545886208895985ull, 2465749007194079046ull}}, {{16169426176298242331ull, 16326515965176888822ull, 13480304394615895789ull, 3082186258992598807ull}}, {{10988410683518027105ull, 6573086901188947316ull, 12238694474842481833ull, 3852732823740748509ull}}, {{16091128714053542749ull, 15637394359311561832ull, 9955027055990245097ull, 2407958014837967818ull}}, {{1667166818857376820ull, 5711684893857288579ull, 3220411783133030564ull, 3009947518547459773ull}}, {{15919016578853884737ull, 7139606117321610723ull, 8637200747343676109ull, 3762434398184324716ull}}, {{7643542352569984009ull, 6768096832539700654ull, 14621622503944573376ull, 2351521498865202947ull}}, {{331055903857704203ull, 8460121040674625818ull, 13665342111503328816ull, 2939401873581503684ull}}, {{9637191916676906061ull, 10575151300843282272ull, 17081677639379161020ull, 3674252341976879605ull}}, {{12046489895846132577ull, 13218939126054102840ull, 7517038993941787563ull, 4592815427471099507ull}}, {{7529056184903832861ull, 5955993944570120323ull, 2392306361999923275ull, 2870509642169437192ull}}, {{4799634212702403172ull, 2833306412285262500ull, 2990382952499904094ull, 3588137052711796490ull}}, {{5999542765878003964ull, 12765005052211353933ull, 12961350727479655925ull, 4485171315889745612ull}}, {{6055557237887446430ull, 10283971166845790160ull, 17324216241529560761ull, 2803232072431091007ull}}, {{7569446547359308037ull, 17466649976984625604ull, 17043584283484563047ull, 3504040090538863759ull}}, {{9461808184199135046ull, 17221626452803394101ull, 16692794335928315905ull, 4380050113173579699ull}}, {{8219473124338153356ull, 3845987505361039457ull, 8127153450741503489ull, 2737531320733487312ull}}, {{14886027423850079599ull, 9419170400128687225ull, 10158941813426879361ull, 3421914150916859140ull}}, {{4772476224530435787ull, 16385649018588246936ull, 12698677266783599201ull, 4277392688646073925ull}}, {{2982797640331522367ull, 3323501608976572479ull, 10242516300953443453ull, 2673370430403796203ull}}, {{17563555105696566671ull, 8766063029648103502ull, 8191459357764416412ull, 3341713038004745254ull}}, {{12731071845265932530ull, 10957578787060129378ull, 1015952160350744707ull, 4177141297505931568ull}}, {{12568605921718595735ull, 4542643732698886909ull, 634970100219215442ull, 2610713310941207230ull}}, {{1875699346866080957ull, 14901676702728384445ull, 10017084662128795110ull, 3263391638676509037ull}}, {{6956310202009989100ull, 9403723841555704748ull, 17133041846088381792ull, 4079239548345636296ull}}, {{13571065913111018996ull, 5877327400972315467ull, 10708151153805238620ull, 2549524717716022685ull}}, {{12352146372961385841ull, 7346659251215394334ull, 17996874960683936179ull, 3186905897145028356ull}}, {{6216810929346956493ull, 4571638045591855014ull, 4049349627145368608ull, 3983632371431285446ull}}, {{17720564886124011520ull, 2857273778494909383ull, 16365901572248019092ull, 2489770232144553403ull}}, {{17539020089227626496ull, 3571592223118636729ull, 15845690946882635961ull, 3112212790180691754ull}}, {{8088717056252369408ull, 9076176297325683816ull, 10583741646748519143ull, 3890265987725864693ull}}, {{5055448160157730880ull, 12590139213469634241ull, 8920681538431518416ull, 2431416242328665433ull}}, {{10930996218624551504ull, 15737674016837042801ull, 15762537941466785924ull, 3039270302910831791ull}}, {{18275431291708077284ull, 1225348447336751885ull, 15091486408406094502ull, 3799087878638539739ull}}, {{13727987566531242255ull, 14600900834867633640ull, 7126335996040115111ull, 2374429924149087337ull}}, {{17159984458164052818ull, 13639440025157154146ull, 13519606013477531793ull, 2968037405186359171ull}}, {{12226608535850290215ull, 3214241976164278971ull, 12287821498419526838ull, 3710046756482948964ull}}, {{5335787325692737432ull, 15843959290384838069ull, 16903260473366980081ull, 2318779222801843102ull}}, {{11281420175543309694ull, 5969891057698883874ull, 11905703554853949294ull, 2898474028502303878ull}}, {{4878403182574361310ull, 16685735858978380651ull, 5658757406712660809ull, 3623092535627879848ull}}, {{1486317959790563733ull, 7022111768440812102ull, 7073446758390826012ull, 4528865669534849810ull}}, {{14764006780151266045ull, 13612191892130283371ull, 9032590242421654161ull, 2830541043459281131ull}}, {{13843322456761694653ull, 3180181809880690502ull, 6679051784599679798ull, 3538176304324101414ull}}, {{8080781034097342508ull, 13198599299205638936ull, 17572186767604375555ull, 4422720380405126767ull}}, {{5050488146310839068ull, 5943281552789830383ull, 17900145757393816578ull, 2764200237753204229ull}}, {{1701424164461160930ull, 16652473977842063787ull, 8540124141460107010ull, 3455250297191505287ull}}, {{15961838260858614875ull, 11592220435447803925ull, 6063469158397745859ull, 4319062871489381609ull}}, {{12281991922250328249ull, 4939294762941183501ull, 15318883270067060922ull, 2699414294680863505ull}}, {{1517431847530746599ull, 15397490490531255185ull, 5313546032301662440ull, 3374267868351079382ull}}, {{6508475827840821153ull, 800119039454517365ull, 15865304577231853859ull, 4217834835438849227ull}}, {{6373640401614207173ull, 16640975464154931017ull, 7609972351556214709ull, 2636146772149280767ull}}, {{12578736520445146870ull, 6966161274911500059ull, 4900779421017880483ull, 3295183465186600959ull}}, {{11111734632129045683ull, 4096015575211987170ull, 1514288257844962700ull, 4118979331483251199ull}}, {{11556520163508041456ull, 11783381771362267789ull, 7863959188794183543ull, 2574362082177031999ull}}, {{610592149102888108ull, 10117541195775446833ull, 5218262967565341525ull, 3217952602721289999ull}}, {{5374926204805998039ull, 17258612513146696445ull, 1911142691029289002ull, 4022440753401612499ull}}, {{5665171887217442726ull, 15398318839144073182ull, 17335365246389163290ull, 2514025470876007811ull}}, {{16304836895876579216ull, 10024526512075315669ull, 17057520539559066209ull, 3142531838595009764ull}}, {{6545988064563560308ull, 17142344158521532491ull, 2875156600739281145ull, 3928164798243762206ull}}, {{1785399531138531240ull, 3796436071434875951ull, 15632030930744214428ull, 2455102998902351378ull}}, {{16066807469205327762ull, 4745545089293594938ull, 10316666626575492227ull, 3068878748627939223ull}}, {{10860137299651883895ull, 1320245343189605769ull, 8284147264791977380ull, 3836098435784924029ull}}, {{18316800858350897195ull, 10048525376348279413ull, 7483435049708679814ull, 2397561522365577518ull}}, {{9060943017656457781ull, 3337284683580573459ull, 130921775281073960ull, 2996951902956971898ull}}, {{6714492753643184322ull, 4171605854475716824ull, 9387024255956118258ull, 3746189878696214872ull}}, {{4196557971026990202ull, 7218939677474710919ull, 5866890159972573911ull, 2341368674185134295ull}}, {{634011445356349848ull, 4411988578416000745ull, 2721926681538329485ull, 2926710842731417869ull}}, {{5404200325122825214ull, 10126671741447388835ull, 8014094370350299760ull, 3658388553414272336ull}}, {{2143564387976143613ull, 12658339676809236044ull, 10017617962937874700ull, 4572985691767840420ull}}, {{10563099779339865566ull, 17134834334860548335ull, 15484383263690947495ull, 2858116057354900262ull}}, {{8592188705747444054ull, 16806856900148297515ull, 10132107042758908561ull, 3572645071693625328ull}}, {{6128549863756917163ull, 7173513069903208182ull, 12665133803448635702ull, 4465806339617031660ull}}, {{17665401720130236939ull, 18318503723971668825ull, 17139080664010173121ull, 2791128962260644787ull}}, {{8246694094880632462ull, 9063071599682422320ull, 16812164811585328498ull, 3488911202825805984ull}}, {{10308367618600790577ull, 2105467462748252092ull, 2568461940772109007ull, 4361139003532257481ull}}, {{15666101798480269919ull, 8233446191858739413ull, 13134503759051037889ull, 2725711877207660925ull}}, {{5747569192818173686ull, 14903493758250812171ull, 2583071643531633649ull, 3407139846509576157ull}}, {{2572775472595329204ull, 4794309142531351502ull, 7840525572841929966ull, 4258924808136970196ull}}, {{15443042725654244465ull, 16831501269364258400ull, 14123700519880982036ull, 2661828005085606372ull}}, {{857059333358253965ull, 2592632512995771385ull, 17654625649851227546ull, 3327285006357007965ull}}, {{5683010185125205360ull, 12464162678099490039ull, 8233224007031870720ull, 4159106257946259957ull}}, {{10469410393344335206ull, 7790101673812181274ull, 7451608013608613152ull, 2599441411216412473ull}}, {{3863390954825643199ull, 9737627092265226593ull, 13926196035438154344ull, 3249301764020515591ull}}, {{9440924711959441903ull, 12172033865331533241ull, 12796059025870305026ull, 4061627205025644489ull}}, {{17429792991043120950ull, 12219207184259596179ull, 1080007863527858785ull, 2538517003141027806ull}}, {{17175555220376513283ull, 1438950925042331512ull, 10573381866264599290ull, 3173146253926284757ull}}, {{3022699951761089987ull, 11022060693157690199ull, 17828413351258137016ull, 3966432817407855946ull}}, {{8806716497491763098ull, 6888787933223556374ull, 15754444362963723539ull, 2479020510879909966ull}}, {{1785023585009928065ull, 3999298898102057564ull, 10469683416849878616ull, 3098775638599887458ull}}, {{2231279481262410081ull, 4999123622627571955ull, 3863732234207572462ull, 3873469548249859323ull}}, {{17535450740284863965ull, 16959510319424396183ull, 108989637166038836ull, 2420918467656162077ull}}, {{17307627406928692052ull, 2752643825570943613ull, 4747923064884936450ull, 3026148084570202596ull}}, {{7799476203378701353ull, 12664176818818455325ull, 5934903831106170562ull, 3782685105712753245ull}}, {{7180515636325382298ull, 12526796530188922482ull, 6015157903655050553ull, 2364178191070470778ull}}, {{18199016582261503680ull, 1823437607453989390ull, 16742319416423589000ull, 2955222738838088472ull}}, {{13525398690972103792ull, 2279297009317486738ull, 2481155196819934634ull, 3694028423547610591ull}}, {{13065060200284952774ull, 6036246649250817115ull, 8468251025653541002ull, 2308767764717256619ull}}, {{11719639231928803063ull, 16768680348418297202ull, 5973627763639538348ull, 2885959705896570774ull}}, {{5426177003056228021ull, 2514106361813319887ull, 16690406741404198744ull, 3607449632370713467ull}}, {{2171035235392897122ull, 3142632952266649859ull, 16251322408327860526ull, 4509312040463391834ull}}, {{17497798086616418366ull, 15799203650448819873ull, 14768762523632300732ull, 2818320025289619896ull}}, {{8037189552988359245ull, 1302260489351473226ull, 14209080830824300ull, 3522900031612024871ull}}, {{823114904380673248ull, 1627825611689341533ull, 13852819406320694087ull, 4403625039515031088ull}}, {{2820289824451614732ull, 7934920034946920314ull, 8658012128950433804ull, 2752265649696894430ull}}, {{12748734317419294223ull, 9918650043683650392ull, 1599143124333266447ull, 3440332062121118038ull}}, {{15935917896774117779ull, 7786626536177175086ull, 11222300942271358867ull, 4300415077651397547ull}}, {{5348262667056435708ull, 2560798575897040477ull, 4708095079705905340ull, 2687759423532123467ull}}, {{11297014352247932539ull, 3200998219871300596ull, 1273432831204993771ull, 3359699279415154334ull}}, {{14121267940309915673ull, 17836305830121289457ull, 10815163075861018021ull, 4199624099268942917ull}}, {{1908263435052615440ull, 13453534153039499863ull, 9065319931626830215ull, 2624765062043089323ull}}, {{16220387349097933012ull, 12205231672871986924ull, 6719963896106149865ull, 3280956327553861654ull}}, {{1828740112662864649ull, 1421481535807819944ull, 17623326906987463140ull, 4101195409442327067ull}}, {{1142962570414290406ull, 10111797996734663273ull, 8708736307653470510ull, 2563247130901454417ull}}, {{6040389231445250911ull, 3416375459063553283ull, 15497606402994226042ull, 3204058913626818021ull}}, {{2938800520879175735ull, 13493841360684217412ull, 5536949948460618840ull, 4005073642033522527ull}}, {{11060122362404260642ull, 8433650850427635882ull, 10378122745428968631ull, 2503171026270951579ull}}, {{4601780916150549995ull, 5930377544607156949ull, 8360967413358822885ull, 3128963782838689474ull}}, {{10363912163615575397ull, 12024657949186334090ull, 1227837229843752798ull, 3911204728548361843ull}}, {{11089131120687122527ull, 2903725199814070902ull, 16908299333148203163ull, 2444502955342726151ull}}, {{4638041864004127351ull, 17464714555049752340ull, 16523688148007866049ull, 3055628694178407689ull}}, {{5797552330005159189ull, 7995835138530026713ull, 6819552129727668850ull, 3819535867723009612ull}}, {{15152685252321694253ull, 9609082980008654599ull, 13485592117934568839ull, 2387209917326881007ull}}, {{14329170546974729912ull, 7399667706583430345ull, 12245304128990823145ull, 2984012396658601259ull}}, {{4076405128436248678ull, 13861270651656675836ull, 10694944142811141027ull, 3730015495823251574ull}}, {{11771125242127431232ull, 6357451148071728445ull, 2072654070829575238ull, 2331259684889532234ull}}, {{878848497377125328ull, 17170185971944436365ull, 11814189625391744855ull, 2914074606111915292ull}}, {{5710246640148794564ull, 16851046446503157552ull, 14767737031739681069ull, 3642593257639894115ull}}, {{7137808300185993205ull, 7228750002846783228ull, 13847985271247213433ull, 4553241572049867644ull}}, {{13684502224471021561ull, 16047183797847709277ull, 17878362831384284203ull, 2845775982531167277ull}}, {{3270569725306613239ull, 15447293728882248693ull, 8512895483948191542ull, 3557219978163959097ull}}, {{8699898175060654453ull, 10085745124248035058ull, 15252805373362627332ull, 4446524972704948871ull}}, {{10049122377840296937ull, 15526962739509797719ull, 16450532385992723938ull, 2779078107940593044ull}}, {{7949716953872983268ull, 10185331387532471341ull, 2116421408781353307ull, 3473847634925741306ull}}, {{14548832210768616988ull, 8119978215988201272ull, 11868898797831467442ull, 4342309543657176632ull}}, {{9093020131730385618ull, 9686672403420013699ull, 7418061748644667151ull, 2713943464785735395ull}}, {{6754589146235594118ull, 7496654485847629220ull, 4660891167378446035ull, 3392429330982169244ull}}, {{8443236432794492648ull, 4759132088882148621ull, 5826113959223057544ull, 4240536663727711555ull}}, {{7582865779710251857ull, 2974457555551342888ull, 1335478215300717013ull, 2650335414829819722ull}}, {{9478582224637814821ull, 8329757962866566514ull, 10892719805980672074ull, 3312919268537274652ull}}, {{2624855743942492718ull, 1188825416728432335ull, 13615899757475840093ull, 4141149085671593315ull}}, {{8558063867605139805ull, 3048858894668964161ull, 6204094339208706106ull, 2588218178544745822ull}}, {{15309265852933812660ull, 13034445655190981009ull, 16978489960865658440ull, 3235272723180932277ull}}, {{5301524260885102113ull, 16293057068988726262ull, 7388054395799909338ull, 4044090903976165347ull}}, {{17148510718335352533ull, 14794846686545341817ull, 2311690988161249384ull, 2527556814985103342ull}}, {{7600580342637026954ull, 46814284472125656ull, 12112985772056337539ull, 3159446018731379177ull}}, {{9500725428296283693ull, 13893575910872320782ull, 1306174159788258211ull, 3949307523414223972ull}}, {{1326267374257789404ull, 6377641935081506537ull, 10039730886722437190ull, 2468317202133889982ull}}, {{6269520236249624659ull, 17195424455706658979ull, 3326291571548270679ull, 3085396502667362478ull}}, {{3225214276884642919ull, 16882594551205935820ull, 13381236501290114157ull, 3856745628334203097ull}}, {{11239130959907677633ull, 12857464603717403839ull, 1445743785665239492ull, 2410466017708876936ull}}, {{9437227681457209137ull, 16071830754646754799ull, 1807179732081549365ull, 3013082522136096170ull}}, {{7184848583394123517ull, 6254730388026279787ull, 11482346701956712515ull, 3766353152670120212ull}}, {{2184687355407633246ull, 1603363483302730915ull, 16399838725577721130ull, 2353970720418825132ull}}, {{16565917249541705270ull, 11227576390983189451ull, 2053054333262599796ull, 2942463400523531416ull}}, {{16095710543499743683ull, 14034470488728986814ull, 2566317916578249745ull, 3678079250654414270ull}}, {{10896266142519903796ull, 3708030055629069806ull, 12431269432577587990ull, 4597599063318017837ull}}, {{2198480320647551969ull, 16152576840050332341ull, 10075386404574686445ull, 2873499414573761148ull}}, {{7359786419236827865ull, 6355662994780751714ull, 12594233005718358057ull, 3591874268217201435ull}}, {{18423105060900810639ull, 12556264761903327546ull, 11131105238720559667ull, 4489842835271501794ull}}, {{16126126681490394553ull, 5541822466975885764ull, 11568626792627737696ull, 2806151772044688621ull}}, {{1710914278153441576ull, 6927278083719857206ull, 625725435502508408ull, 3507689715055860777ull}}, {{11362014884546577777ull, 8659097604649821507ull, 5393842812805523414ull, 4384612143819825971ull}}, {{4795416293627917159ull, 800249984478750538ull, 1065308748789758182ull, 2740382589887391232ull}}, {{15217642403889672257ull, 10223684517453213980ull, 1331635935987197727ull, 3425478237359239040ull}}, {{575308931152538705ull, 8167919628389129572ull, 1664544919983997159ull, 4281847796699048800ull}}, {{9582940118825112499ull, 12022478795384287838ull, 1040340574989998224ull, 2676154872936905500ull}}, {{2755303111676614815ull, 15028098494230359798ull, 1300425718737497780ull, 3345193591171131875ull}}, {{12667500926450544327ull, 338379044078398131ull, 15460590203704035938ull, 4181491988963914843ull}}, {{5611345069817896252ull, 4823172920976386736ull, 7357025868101328509ull, 2613432493102446777ull}}, {{7014181337272370315ull, 10640652169647871324ull, 13807968353554048540ull, 3266790616378058471ull}}, {{8767726671590462894ull, 13300815212059839155ull, 12648274423515172771ull, 4083488270472573089ull}}, {{3173986160530345357ull, 6007166498323705520ull, 987642487055901126ull, 2552180169045358181ull}}, {{3967482700662931696ull, 16732330159759407708ull, 5846239127247264311ull, 3190225211306697726ull}}, {{4959353375828664620ull, 16303726681271871731ull, 16531170945913856197ull, 3987781514133372157ull}}, {{793752850679221436ull, 12495672185008613784ull, 12637824850409854075ull, 2492363446333357598ull}}, {{992191063349026795ull, 11007904212833379326ull, 6573909026157541786ull, 3115454307916696998ull}}, {{10463610866041059301ull, 4536508229186948349ull, 17440758319551703041ull, 3894317884895871247ull}}, {{8845599800489356015ull, 14364532689310312478ull, 17818002977360896256ull, 2433948678059919529ull}}, {{1833627713756919211ull, 17955665861637890598ull, 8437445666418956608ull, 3042435847574899412ull}}, {{11515406679050924822ull, 3997838253337811631ull, 10546807083023695761ull, 3803044809468624265ull}}, {{14114658202047909870ull, 14027863954404602029ull, 18120969472958279610ull, 2376903005917890165ull}}, {{3808264697277723625ull, 8311457906150976729ull, 8816153785915685801ull, 2971128757397362707ull}}, {{9372016890024542435ull, 15001008401116108815ull, 6408506213967219347ull, 3713910946746703384ull}}, {{12775039583906420878ull, 7069787241483874057ull, 4005316383729512092ull, 2321194341716689615ull}}, {{2133741424600862386ull, 8837234051854842572ull, 394959461234502211ull, 2901492927145862019ull}}, {{2667176780751077982ull, 6434856546391165311ull, 14328757381825291476ull, 3626866158932327523ull}}, {{17169029031221011189ull, 8043570682988956638ull, 13299260708854226441ull, 4533582698665409404ull}}, {{6118957126085744089ull, 16556446722936567659ull, 17535409979888667333ull, 2833489186665880877ull}}, {{3037010389179792208ull, 6860500348388545862ull, 8084204419578670455ull, 3541861483332351097ull}}, {{13019635023329516067ull, 3963939417058294423ull, 14716941542900725973ull, 4427326854165438871ull}}, {{15054800917222029398ull, 4783305144875127966ull, 16115617491954035589ull, 2767079283853399294ull}}, {{9595129109672760940ull, 10590817449521297862ull, 10921149828087768678ull, 3458849104816749118ull}}, {{2770539350236175367ull, 4015149775046846520ull, 4428065248254935040ull, 4323561381020936398ull}}, {{1731587093897609604ull, 2509468609404279075ull, 16602598835441498112ull, 2702225863138085248ull}}, {{15999541922654175717ull, 3136835761755348843ull, 2306504470592321024ull, 3377782328922606561ull}}, {{15387741384890331743ull, 3921044702194186054ull, 7494816606667789184ull, 4222227911153258201ull}}, {{5005652347129069435ull, 2450652938871366284ull, 16213475425235838000ull, 2638892444470786375ull}}, {{6257065433911336794ull, 3063316173589207855ull, 15655158263117409596ull, 3298615555588482969ull}}, {{3209645773961783088ull, 3829145216986509819ull, 5733889773614598283ull, 4123269444485603712ull}}, {{18146929673221972094ull, 87372751402874684ull, 3583681108509123927ull, 2577043402803502320ull}}, {{4236918017817913502ull, 13944273994535757068ull, 4479601385636404908ull, 3221304253504377900ull}}, {{5296147522272391877ull, 17430342493169696335ull, 5599501732045506135ull, 4026630316880472375ull}}, {{10227621229061326779ull, 17811493085872142065ull, 10417217610169523190ull, 2516643948050295234ull}}, {{17396212554754046378ull, 13040994320485401773ull, 3798149975857128180ull, 3145804935062869043ull}}, {{7910207638160394261ull, 16301242900606752217ull, 136001451394022321ull, 3932256168828586304ull}}, {{16473094819918716173ull, 3270747785238138279ull, 85000907121263951ull, 2457660105517866440ull}}, {{15979682506471007312ull, 17923492786829836561ull, 106251133901579938ull, 3072075131897333050ull}}, {{6139545077806595428ull, 13180993946682519894ull, 9356185954231750731ull, 3840093914871666312ull}}, {{17672273728911285855ull, 5932278207462880981ull, 5847616221394844207ull, 2400058696794791445ull}}, {{8255284105856943606ull, 2803661740901213323ull, 11921206295170943163ull, 3000073370993489306ull}}, {{5707419113893791604ull, 17339635231408680366ull, 5678135832108903145ull, 3750091713741861633ull}}, {{17402195001465783465ull, 3919742991989343372ull, 15078049941136534226ull, 2343807321088663520ull}}, {{3305999678122677715ull, 14123050776841455024ull, 400818352711116166ull, 2929759151360829401ull}}, {{4132499597653347143ull, 8430441434197042972ull, 5112708959316283112ull, 3662198939201036751ull}}, {{5165624497066683929ull, 10538051792746303715ull, 1779200180717965986ull, 4577748674001295939ull}}, {{922672301452983504ull, 11197968388893827726ull, 17252901177444586405ull, 2861092921250809961ull}}, {{10376712413671005187ull, 162402430835120945ull, 7731068416523569295ull, 3576366151563512452ull}}, {{17582576535516144388ull, 14038061093826064893ull, 9663835520654461618ull, 4470457689454390565ull}}, {{13294953343911284195ull, 13385474202068678462ull, 8345740209622732463ull, 2794036055908994103ull}}, {{7395319643034329435ull, 12120156734158460174ull, 5820489243601027675ull, 3492545069886242629ull}}, {{20777516938135986ull, 10538509899270687314ull, 11887297572928672498ull, 4365681337357803286ull}}, {{4624671966513722895ull, 11198254705471567475ull, 2817874964653032407ull, 2728550835848627054ull}}, {{1169153939714765715ull, 9386132363412071440ull, 12745715742671066317ull, 3410688544810783817ull}}, {{1461442424643457144ull, 16344351472692477204ull, 2097086623056669184ull, 4263360681013479772ull}}, {{10136773552256936523ull, 10215219670432798252ull, 10534051176265194048ull, 2664600425633424857ull}}, {{12670966940321170654ull, 12769024588040997815ull, 17779249988758880464ull, 3330750532041781071ull}}, {{11227022656974075413ull, 15961280735051247269ull, 17612376467521212676ull, 4163438165052226339ull}}, {{9322732169822491085ull, 752428422552253735ull, 8701892282987063971ull, 2602148853157641462ull}}, {{7041729193850725953ull, 14775593583472480881ull, 1653993316879054155ull, 3252686066447051828ull}}, {{13413847510740795345ull, 13857805960913213197ull, 2067491646098817694ull, 4065857583058814785ull}}, {{10689497703426691043ull, 4049442707143370344ull, 12821397324880230819ull, 2541160989411759240ull}}, {{13361872129283363803ull, 450117365501825026ull, 16026746656100288524ull, 3176451236764699050ull}}, {{7478968124749428946ull, 562646706877281283ull, 10810061283270584847ull, 3970564045955873813ull}}, {{2368512068754699139ull, 7269183219439382658ull, 9062131311257809481ull, 2481602528722421133ull}}, {{12184012122798149732ull, 13698165042726616226ull, 15939350157499649755ull, 3102003160903026416ull}}, {{6006643116642911357ull, 12511020284980882379ull, 1477443623165010578ull, 3877503951128783021ull}}, {{1448308938688125646ull, 12431073696540439391ull, 3229245273691825563ull, 2423439969455489388ull}}, {{15645444228642320770ull, 10927156102248161334ull, 4036556592114781954ull, 3029299961819361735ull}}, {{10333433248948125154ull, 4435573090955425860ull, 434009721716089539ull, 3786624952274202169ull}}, {{15681767817447354029ull, 466390172633447210ull, 11800471122141025722ull, 2366640595171376355ull}}, {{10378837734954416729ull, 9806359752646584821ull, 10138902884248894248ull, 2958300743964220444ull}}, {{17585233187120408815ull, 12257949690808231026ull, 12673628605311117810ull, 3697875929955275555ull}}, {{15602456760377643413ull, 12272904575182532295ull, 5615174869105754679ull, 2311172456222047222ull}}, {{14891384932044666363ull, 10729444700550777465ull, 16242340623236969157ull, 2888965570277559027ull}}, {{4779173109773669241ull, 18023491894115859736ull, 15691239760618823542ull, 3611206962846948784ull}}, {{5973966387217086551ull, 13305992830790048862ull, 1167305627063977812ull, 4514008703558685981ull}}, {{17568787047292842807ull, 17539617556098556346ull, 3035409026128680084ull, 2821255439724178738ull}}, {{12737611772261277700ull, 3477777871413643817ull, 13017633319515625914ull, 3526569299655223422ull}}, {{2086956660044433413ull, 13570594376121830580ull, 7048669612539756584ull, 4408211624569029278ull}}, {{10527719949382546691ull, 8481621485076144112ull, 18240476563119511577ull, 2755132265355643298ull}}, {{13159649936728183364ull, 15213712874772568044ull, 13577223667044613663ull, 3443915331694554123ull}}, {{16449562420910229205ull, 14405455075038322151ull, 12359843565378379175ull, 4304894164618192654ull}}, {{17198505540709975109ull, 15920938449540033200ull, 3113216209934099080ull, 2690558852886370409ull}}, {{3051387852177917271ull, 1454428988215489885ull, 8503206280845011755ull, 3363198566107963011ull}}, {{8425920833649784492ull, 15653094290551526068ull, 6017321832628876789ull, 4203998207634953764ull}}, {{14489572557885891116ull, 12089026940808397744ull, 12984198182247823801ull, 2627498879771846102ull}}, {{18111965697357363895ull, 1276225620728333468ull, 7006875690955003944ull, 3284373599714807628ull}}, {{4193213047987153252ull, 1595282025910416836ull, 8758594613693754930ull, 4105466999643509535ull}}, {{11844130191846746591ull, 5608737284621398426ull, 12391650661199678687ull, 2565916874777193459ull}}, {{5581790702953657430ull, 2399235587349360129ull, 10877877308072210455ull, 3207396093471491824ull}}, {{11588924397119459692ull, 16834102539468863873ull, 13597346635090263068ull, 4009245116839364780ull}}, {{325548720558580452ull, 1297942050313264113ull, 17721713683786190226ull, 2505778198024602987ull}}, {{5018621919125613468ull, 10845799599746355949ull, 17540456086305349878ull, 3132222747530753734ull}}, {{10884963417334404739ull, 4333877462828169128ull, 12702198071026911540ull, 3915278434413442168ull}}, {{6803102135834002962ull, 11932045451122381513ull, 7938873794391819712ull, 2447049021508401355ull}}, {{13115563688219891607ull, 14915056813902976891ull, 5311906224562386736ull, 3058811276885501694ull}}, {{11782768591847476604ull, 197076943669169498ull, 15863254817557759229ull, 3823514096106877117ull}}, {{11975916388332060782ull, 2429016099006924888ull, 12220377270187293470ull, 2389696310066798198ull}}, {{14969895485415075977ull, 12259642160613431918ull, 6052099550879341029ull, 2987120387583497748ull}}, {{9488997319914069163ull, 1489494645484626186ull, 7565124438599176287ull, 3733900484479372185ull}}, {{10542309343373681131ull, 7848463181068973222ull, 16257417820192954939ull, 2333687802799607615ull}}, {{3954514642362325606ull, 5198892957908828624ull, 15710086256813805770ull, 2917109753499509519ull}}, {{4943143302952907007ull, 15721988234240811588ull, 15025921802589869308ull, 3646387191874386899ull}}, {{6178929128691133759ull, 1205741219091462869ull, 14170716234809948732ull, 4557983989842983624ull}}, {{6167673714645652552ull, 9976960298786940101ull, 8856697646756217957ull, 2848739993651864765ull}}, {{12321278161734453593ull, 17082886391911063030ull, 15682558076872660350ull, 3560924992064830956ull}}, {{6178225665313291183ull, 12130235953034052980ull, 1156453522381273822ull, 4451156240081038696ull}}, {{13084763077675582798ull, 2969711452218895208ull, 722783451488296139ull, 2781972650050649185ull}}, {{16355953847094478497ull, 17547197370555782722ull, 5515165332787758077ull, 3477465812563311481ull}}, {{11221570272013322313ull, 8098938657912564691ull, 11505642684412085501ull, 4346832265704139351ull}}, {{4707638410794632494ull, 7367679670409046884ull, 14108555705398635294ull, 2716770166065087094ull}}, {{5884548013493290617ull, 18432971624866084413ull, 8412322594893518309ull, 3395962707581358868ull}}, {{11967371035294001176ull, 9206156475800441804ull, 10515403243616897887ull, 4244953384476698585ull}}, {{16702978933913526543ull, 12671376825016357983ull, 18101342073329030939ull, 2653095865297936615ull}}, {{16267037648964520275ull, 11227535012843059575ull, 18014991573233900770ull, 3316369831622420769ull}}, {{15722111042778262439ull, 4811046729199048661ull, 8683681411260212251ull, 4145462289528025962ull}}, {{12132162410950107977ull, 701061196535711461ull, 10038986900465020561ull, 2590913930955016226ull}}, {{1330144958405471259ull, 5488012514097027231ull, 3325361588726499893ull, 3238642413693770283ull}}, {{15497739253289002785ull, 11471701661048671942ull, 17991760041190288578ull, 4048303017117212853ull}}, {{5074401014878238837ull, 11781499556582807868ull, 13550693034957624313ull, 2530189385698258033ull}}, {{6343001268597798546ull, 891816390446346123ull, 3103308238414866680ull, 3162736732122822542ull}}, {{3317065567319860278ull, 1114770488057932654ull, 13102507334873359158ull, 3953420915153528177ull}}, {{15908224034857076386ull, 14531789610318371620ull, 1271538056654767617ull, 2470888071970955111ull}}, {{1438535969861793867ull, 4329678957615800814ull, 15424480626100623234ull, 3088610089963693888ull}}, {{11021541999182018141ull, 14635470733874526825ull, 833856708916227426ull, 3860762612454617361ull}}, {{18417678795557231098ull, 13758855227098967169ull, 12050375489141111901ull, 2412976632784135850ull}}, {{9187040439164375161ull, 3363510978591545250ull, 5839597324571614069ull, 3016220790980169813ull}}, {{2260428512100693143ull, 8816074741666819467ull, 11911182674141905490ull, 3770275988725212266ull}}, {{17553668884558790879ull, 10121732731969150070ull, 12056175189766078835ull, 2356422492953257666ull}}, {{12718714068843712790ull, 8040479896534049684ull, 5846846950352822736ull, 2945528116191572083ull}}, {{15898392586054640987ull, 10050599870667562105ull, 2696872669513640516ull, 3681910145239465104ull}}, {{6037932677286137522ull, 12563249838334452632ull, 3371090836892050645ull, 4602387681549331380ull}}, {{3773707923303835952ull, 10157874158172726847ull, 11330303809912307461ull, 2876492300968332112ull}}, {{105448885702407035ull, 17309028716143296463ull, 14162879762390384326ull, 3595615376210415140ull}}, {{13966869162410172506ull, 12412913858324344770ull, 17703599702987980408ull, 4494519220263018925ull}}, {{13340979244933745720ull, 7758071161452715481ull, 13370592823581181707ull, 2809074512664386828ull}}, {{2841166000885018438ull, 5085902933388506448ull, 16713241029476477134ull, 3511343140830483535ull}}, {{3551457501106273048ull, 15580750703590408868ull, 16279865268418208513ull, 4389178926038104419ull}}, {{11443032975046196463ull, 2820440162102923686ull, 7869072783547686369ull, 2743236828773815262ull}}, {{5080419181952969771ull, 8137236221056042512ull, 612968942579832153ull, 3429046035967269078ull}}, {{6350523977441212213ull, 14783231294747441044ull, 9989583215079565999ull, 4286307544959086347ull}}, {{13192449522755533442ull, 16157048586858232508ull, 3937646500211034797ull, 2678942215599428967ull}}, {{16490561903444416802ull, 6361252678290626923ull, 310372106836405593ull, 3348677769499286209ull}}, {{16001516360878133098ull, 12563251866290671558ull, 4999651151972894895ull, 4185847211874107761ull}}, {{5389261707121445283ull, 14769561444072751580ull, 14653997016051529069ull, 2616154507421317350ull}}, {{6736577133901806603ull, 4626893749808775763ull, 9094124233209635529ull, 3270193134276646688ull}}, {{3809035398949870350ull, 10395303205688357608ull, 11367655291512044411ull, 4087741417845808360ull}}, {{2380647124343668969ull, 4191221494341529553ull, 7104784557195027757ull, 2554838386153630225ull}}, {{7587494923856974115ull, 9850712886354299845ull, 13492666714921172600ull, 3193547982692037781ull}}, {{14096054673248605547ull, 12313391107942874806ull, 3030775338369302038ull, 3991934978365047227ull}}, {{4198348152352990563ull, 3084183424036908850ull, 18035135650976671438ull, 2494959361478154516ull}}, {{14471307227296014012ull, 13078601316900911870ull, 4097175490011287681ull, 3118699201847693146ull}}, {{8865761997265241707ull, 2513193590843976126ull, 14344841399368885410ull, 3898374002309616432ull}}, {{929415229863388163ull, 6182432012704872983ull, 8965525874605553381ull, 2436483751443510270ull}}, {{14996827092611398916ull, 12339726034308479132ull, 1983535306402165918ull, 3045604689304387838ull}}, {{299289792054697028ull, 6201285506030823108ull, 11702791169857483206ull, 3807005861630484797ull}}, {{9410428156888961451ull, 17710861496551428154ull, 9620087490374620955ull, 2379378663519052998ull}}, {{2539663159256426006ull, 17526890852261897289ull, 2801737326113500386ull, 2974223329398816248ull}}, {{7786264967497920411ull, 12685241528472595803ull, 3502171657641875483ull, 3717779161748520310ull}}, {{2560572595472506305ull, 5622432946081678425ull, 16023915341308335889ull, 2323611976092825193ull}}, {{7812401762768020785ull, 11639727201029485935ull, 6194836121353256149ull, 2904514970116031492ull}}, {{5153816185032638077ull, 714600946004693707ull, 7743545151691570187ull, 3630643712645039365ull}}, {{1830584212863409692ull, 14728309237788030846ull, 14291117458041850637ull, 4538304640806299206ull}}, {{14979173188321794770ull, 11511036282831213230ull, 4320262392848768744ull, 2836440400503937004ull}}, {{9500594448547467654ull, 14388795353539016538ull, 5400327991060960930ull, 3545550500629921255ull}}, {{2652371023829558760ull, 8762622155068994865ull, 2138723970398813259ull, 4431938125787401569ull}}, {{13186946935961943985ull, 3170795837704427838ull, 12865917527567728047ull, 2769961328617125980ull}}, {{7260311633097654173ull, 17798552852412698510ull, 16082396909459660058ull, 3462451660771407475ull}}, {{18298761578226843524ull, 13024819028661097329ull, 15491310118397187169ull, 4328064575964259344ull}}, {{4519196958750695347ull, 1222982865272103975ull, 9682068823998241981ull, 2705040359977662090ull}}, {{1037310180010981279ull, 6140414600017517873ull, 2879213993143026668ull, 3381300449972077613ull}}, {{5908323743441114503ull, 7675518250021897341ull, 8210703509856171239ull, 4226625562465097016ull}}, {{5998545348864390517ull, 11714727933904767694ull, 5131689693660107024ull, 2641640976540685635ull}}, {{16721553722935263954ull, 14643409917380959617ull, 1802926098647745876ull, 3302051220675857044ull}}, {{7066884098386916230ull, 18304262396726199522ull, 2253657623309682345ull, 4127564025844821305ull}}, {{9028488579919210548ull, 4522634970312792845ull, 12937751060637021226ull, 2579727516153013315ull}}, {{15897296743326401089ull, 14876665749745766864ull, 11560502807368888628ull, 3224659395191266644ull}}, {{1424876855448449745ull, 149088113472656965ull, 14450628509211110786ull, 4030824243989083305ull}}, {{3196391043868975043ull, 4704866089347798507ull, 2114113790615862385ull, 2519265152493177066ull}}, {{17830546860118382515ull, 10492768630112136037ull, 11866014275124603789ull, 3149081440616471332ull}}, {{8453125519865814432ull, 17727646806067557951ull, 14832517843905754736ull, 3936351800770589165ull}}, {{12200732477557215876ull, 11079779253792223719ull, 11576166661654790662ull, 2460219875481618228ull}}, {{10639229578519131941ull, 4626352030385503841ull, 14470208327068488328ull, 3075274844352022785ull}}, {{17910722991576302830ull, 5782940037981879801ull, 4252702353553446698ull, 3844093555440028482ull}}, {{4276672842094107413ull, 8226023542166062780ull, 7269624989398292090ull, 2402558472150017801ull}}, {{5345841052617634266ull, 1059157390852802667ull, 13698717255175253017ull, 3003198090187522251ull}}, {{2070615297344654929ull, 5935632756993391238ull, 12511710550541678367ull, 3753997612734402814ull}}, {{15129192616122573043ull, 10627299500761951379ull, 3208133075661161075ull, 2346248507959001759ull}}, {{14299804751725828399ull, 8672438357525051320ull, 17845224399858615056ull, 2932810634948752198ull}}, {{17874755939657285499ull, 10840547946906314150ull, 13083158462968493012ull, 3666013293685940248ull}}, {{13120072887716831065ull, 13550684933632892688ull, 16353948078710616265ull, 4582516617107425310ull}}, {{8200045554823019416ull, 1551649055879476074ull, 5609531530766747262ull, 2864072885692140819ull}}, {{1026684906673998462ull, 11162933356704120901ull, 2400228395031046173ull, 3580091107115176024ull}}, {{5895042151769885981ull, 118608640597987414ull, 3000285493788807717ull, 4475113883893970030ull}}, {{17519459400138342451ull, 2379973409587436085ull, 15710236488900168535ull, 2796946177433731268ull}}, {{8064266194890764351ull, 16810024817266458819ull, 1191051537415659052ull, 3496182721792164086ull}}, {{5468646725186067535ull, 2565786947873521908ull, 10712186458624349624ull, 4370228402240205107ull}}, {{12641276240096068017ull, 1603616842420951192ull, 4389273527426524563ull, 2731392751400128192ull}}, {{15801595300120085022ull, 15839579108308352702ull, 5486591909283155703ull, 3414240939250160240ull}}, {{10528622088295330469ull, 15187787866958052974ull, 6858239886603944629ull, 4267801174062700300ull}}, {{1968702786757193639ull, 11798210426062477061ull, 13509771965982241201ull, 2667375733789187687ull}}, {{7072564501873879953ull, 912704977295932614ull, 12275528939050413598ull, 3334219667236484609ull}}, {{18064077664197125749ull, 10364253258474691575ull, 1509353118530853285ull, 4167774584045605762ull}}, {{18207577567764285449ull, 8783501295760376186ull, 5555031717509171207ull, 2604859115028503601ull}}, {{13536099922850581003ull, 6367690601273082329ull, 11555475665313851913ull, 3256073893785629501ull}}, {{3085066848281062542ull, 12571299270018740816ull, 609286526360151179ull, 4070092367232036877ull}}, {{1928166780175664089ull, 5551219034548019058ull, 2686647088188788439ull, 2543807729520023048ull}}, {{11633580512074355919ull, 2327337774757635918ull, 3358308860235985549ull, 3179759661900028810ull}}, {{5318603603238169091ull, 7520858236874432802ull, 13421258112149757744ull, 3974699577375036012ull}}, {{7935813270451243586ull, 4700536398046520501ull, 17611658356948374398ull, 2484187235859397507ull}}, {{14531452606491442386ull, 15099042534412926434ull, 17402886927758080093ull, 3105234044824246884ull}}, {{8940943721259527175ull, 5038745112733994331ull, 3306864585988048501ull, 3881542556030308606ull}}, {{3282246816573510532ull, 5455058704672440409ull, 15901848421524694025ull, 2425964097518942878ull}}, {{8714494539144276069ull, 11430509399267938415ull, 10653938490051091723ull, 3032455121898678598ull}}, {{6281432155502957183ull, 9676450730657535115ull, 4094051075709088846ull, 3790568902373348248ull}}, {{1620052087975654287ull, 1436095688233571543ull, 2558781922318180529ull, 2369105563983342655ull}}, {{15860123165251731571ull, 6406805628719352332ull, 17033535458179889373ull, 2961381954979178318ull}}, {{1378409882855112848ull, 12620193054326578320ull, 12068547285870085908ull, 3701727443723972898ull}}, {{861506176784445530ull, 17110992695808887258ull, 12154528072096191596ull, 2313579652327483061ull}}, {{10300254757835332720ull, 2941996796051557456ull, 1358102034838075784ull, 2891974565409353827ull}}, {{12875318447294165900ull, 3677495995064446820ull, 15532685598829758442ull, 3614968206761692283ull}}, {{16094148059117707375ull, 13820242030685334333ull, 14804170980109810148ull, 4518710258452115354ull}}, {{12364685546162261062ull, 17861023306033109766ull, 13864292880996019246ull, 2824193911532572096ull}}, {{6232484895848050519ull, 13102907095686611400ull, 17330366101245024058ull, 3530242389415715120ull}}, {{7790606119810063149ull, 7155261832753488442ull, 3216213552846728457ull, 4412802986769643901ull}}, {{9480814843308677372ull, 16001253691539400036ull, 4315976479742899237ull, 2758001866731027438ull}}, {{11851018554135846715ull, 6166509059142086333ull, 14618342636533399855ull, 3447502333413784297ull}}, {{978715137387644682ull, 3096450305500220013ull, 4437870240384586107ull, 4309377916767230372ull}}, {{2917539970080971878ull, 18076182505433495172ull, 11997040937095142124ull, 2693361197979518982ull}}, {{3646924962601214848ull, 4148484058082317349ull, 5772929134514151848ull, 3366701497474398728ull}}, {{9170342221678906464ull, 5185605072602896686ull, 7216161418142689810ull, 4208376871842998410ull}}, {{1119777870121928636ull, 7852689188804198333ull, 9121786904766569035ull, 2630235544901874006ull}}, {{6011408356079798699ull, 5204175467577860012ull, 2178861594103435486ull, 3287794431127342508ull}}, {{7514260445099748373ull, 15728591371327100823ull, 2723576992629294357ull, 4109743038909178135ull}}, {{11613941805828424589ull, 12136212616293131966ull, 8619764648034390829ull, 2568589399318236334ull}}, {{5294055220430754929ull, 1335207715084251246ull, 1551333773188212729ull, 3210736749147795418ull}}, {{15840941062393219469ull, 6280695662282701961ull, 11162539253340041719ull, 4013420936434744272ull}}, {{2983059136354680312ull, 10842963816567770582ull, 6976587033337526074ull, 2508388085271715170ull}}, {{12952195957298126198ull, 4330332733854937419ull, 17944105828526683401ull, 3135485106589643962ull}}, {{11578558928195269844ull, 10024601935746059678ull, 13206760248803578443ull, 3919356383237054953ull}}, {{2624913311694655748ull, 3959533200627593347ull, 1336696127861154671ull, 2449597739523159346ull}}, {{17116199694900483397ull, 337730482357103779ull, 10894242196681219147ull, 3061997174403949182ull}}, {{16783563600198216343ull, 14257221158228543436ull, 4394430708996748125ull, 3827496468004936478ull}}, {{1266355213269109406ull, 11216606233106533600ull, 16581577248405131290ull, 2392185292503085298ull}}, {{1582944016586386758ull, 4797385754528391192ull, 11503599523651638305ull, 2990231615628856623ull}}, {{1978680020732983447ull, 10608418211587876894ull, 9767813386137159977ull, 3737789519536070779ull}}, {{15071733068240278367ull, 18159476428310892818ull, 3799040357122031033ull, 2336118449710044237ull}}, {{9616294298445572150ull, 8864287480106452311ull, 9360486464829926696ull, 2920148062137555296ull}}, {{7408681854629577284ull, 11080359350133065389ull, 11700608081037408370ull, 3650185077671944120ull}}, {{13872538336714359508ull, 4627077150811555928ull, 14625760101296760463ull, 4562731347089930150ull}}, {{8670336460446474693ull, 9809452246898304311ull, 4529414044883087385ull, 2851707091931206344ull}}, {{6226234557130705462ull, 16873501327050268293ull, 5661767556103859231ull, 3564633864914007930ull}}, {{12394479214840769731ull, 16480190640385447462ull, 16300581481984599847ull, 4455792331142509912ull}}, {{3134863490848093178ull, 17217648177881986520ull, 10187863426240374904ull, 2784870206964068695ull}}, {{3918579363560116473ull, 3075316148642931534ull, 8123143264373080727ull, 3481087758705085869ull}}, {{14121596241304921399ull, 17679203241085828129ull, 14765615098893738812ull, 4351359698381357336ull}}, {{1908468623174494018ull, 1826129988823866773ull, 9228509436808586758ull, 2719599811488348335ull}}, {{6997271797395505427ull, 11506034522884609274ull, 6923950777583345543ull, 3399499764360435419ull}}, {{17969961783599157591ull, 9770857135178373688ull, 4043252453551794025ull, 4249374705450544274ull}}, {{11231226114749473495ull, 17636000755554953315ull, 7138718801897259169ull, 2655859190906590171ull}}, {{9427346625009453964ull, 8209942889161527932ull, 4311712483944186058ull, 3319823988633237714ull}}, {{11784183281261817455ull, 1039056574597134107ull, 14613012641785008381ull, 4149779985791547142ull}}, {{5059271541574941958ull, 2955253368336902769ull, 4521446882688242334ull, 2593612491119716964ull}}, {{10935775445396065351ull, 12917438747275904269ull, 5651808603360302917ull, 3242015613899646205ull}}, {{18281405325172469593ull, 2311740378812716624ull, 11676446772627766551ull, 4052519517374557756ull}}, {{11425878328232793496ull, 8362366764399029746ull, 16521151269747129902ull, 2532824698359098597ull}}, {{5058975873436216062ull, 1229586418644011375ull, 6816381031901748666ull, 3166030872948873247ull}}, {{1712033823367882173ull, 10760355060159790027ull, 3908790271449797928ull, 3957538591186091559ull}}, {{17210922204100784022ull, 6725221912599868766ull, 9360522947297205561ull, 2473461619491307224ull}}, {{12290280718271204220ull, 13018213409177223862ull, 11700653684121506951ull, 3091827024364134030ull}}, {{6139478860984229466ull, 11661080743044141924ull, 5402445068297107881ull, 3864783780455167538ull}}, {{13060546324969919225ull, 370646436761506846ull, 7988214186113080330ull, 2415489862784479711ull}}, {{7102310869357623223ull, 9686680082806659366ull, 5373581714213962508ull, 3019362328480599639ull}}, {{18101260623551804836ull, 12108350103508324207ull, 2105291124340065231ull, 3774202910600749549ull}}, {{18230816917360959879ull, 14485247842333784485ull, 3621649961926234721ull, 2358876819125468468ull}}, {{8953463091419036136ull, 4271501747635066895ull, 4527062452407793402ull, 2948596023906835585ull}}, {{6580142845846407266ull, 14562749221398609427ull, 10270514083937129656ull, 3685745029883544481ull}}, {{3613492538880621179ull, 18203436526748261784ull, 17449828623348799974ull, 4607181287354430601ull}}, {{2258432836800388237ull, 6765461810790275711ull, 3988613861951918128ull, 2879488304596519126ull}}, {{16658099101282649008ull, 8456827263487844638ull, 14209139364294673468ull, 3599360380745648907ull}}, {{11599251839748535452ull, 10571034079359805798ull, 13149738186940953931ull, 4499200475932061134ull}}, {{2637846381415446754ull, 4301053290386184672ull, 3606900348410708303ull, 2812000297457538209ull}}, {{3297307976769308442ull, 764630594555342936ull, 9120311453940773283ull, 3515000371821922761ull}}, {{4121634970961635552ull, 14790846298476342382ull, 16012075335853354507ull, 4393750464777403451ull}}, {{16411079912133185932ull, 6938435927334020036ull, 7701704075694652615ull, 2746094040485877157ull}}, {{2067105816456930799ull, 4061358890740137142ull, 14238816113045703673ull, 3432617550607346446ull}}, {{11807254307425939307ull, 9688384631852559331ull, 8575148104452353783ull, 4290771938259183058ull}}, {{5073690932927518115ull, 12972769422548931438ull, 9971153583710109018ull, 2681732461411989411ull}}, {{15565485703014173452ull, 6992589741331388489ull, 7852255961210248369ull, 3352165576764986764ull}}, {{5621799073485553103ull, 13352423195091623516ull, 9815319951512810461ull, 4190206970956233455ull}}, {{12736996457783246497ull, 10651107506145958649ull, 13052103997336588394ull, 2618879356847645909ull}}, {{2086187516946894410ull, 4090512345827672504ull, 2480071941388571781ull, 3273599196059557387ull}}, {{2607734396183618012ull, 9724826450711978534ull, 16935147982017878438ull, 4091998995074446733ull}}, {{15464892052896924970ull, 1466330513267598679ull, 12890310497974867976ull, 2557499371921529208ull}}, {{14719429047693768308ull, 1832913141584498349ull, 16112888122468584970ull, 3196874214901911510ull}}, {{4564228254335046673ull, 11514513463835398745ull, 10917738116230955404ull, 3996092768627389388ull}}, {{14381857705027873931ull, 16419942951751900023ull, 16046958359499122935ull, 2497557980392118367ull}}, {{13365636112857454509ull, 15913242671262487125ull, 15447011930946515765ull, 3121947475490147959ull}}, {{2871987085789654424ull, 6056495283795945195ull, 14697078895255756803ull, 3902434344362684949ull}}, {{17935892993114391679ull, 1479466543158771794ull, 11491517318748541954ull, 2439021465226678093ull}}, {{13196494204538213791ull, 11072705215803240551ull, 529338593153513730ull, 3048776831533347617ull}}, {{11883931737245379335ull, 4617509482899274881ull, 5273359259869280067ull, 3810971039416684521ull}}, {{509928308137280228ull, 580100417598352849ull, 14825064583486769802ull, 2381856899635427825ull}}, {{5249096403598988189ull, 9948497558852716869ull, 4696272674076298540ull, 2977321124544284782ull}}, {{11173056522926123141ull, 12435621948565896086ull, 15093712879450148983ull, 3721651405680355977ull}}, {{2371474308401439059ull, 14689792745494766910ull, 2516041522015261258ull, 2326032128550222486ull}}, {{12187714922356574632ull, 9138868895013682829ull, 12368423939373852381ull, 2907540160687778107ull}}, {{1399585597663554577ull, 16035272137194491441ull, 10848843905789927572ull, 3634425200859722634ull}}, {{6361168015506831126ull, 1597346097783562685ull, 4337682845382633658ull, 4543031501074653293ull}}, {{6281573018905463406ull, 5610027329542114582ull, 5016894787577839988ull, 2839394688171658308ull}}, {{17075338310486605065ull, 7012534161927643227ull, 6271118484472299985ull, 3549243360214572885ull}}, {{16732486869680868427ull, 13377353720836941938ull, 12450584124017762885ull, 4436554200268216106ull}}, {{15069490311977930671ull, 10666689084736782663ull, 12393301095938489707ull, 2772846375167635066ull}}, {{14225176871545025435ull, 8721675337493590425ull, 6268254333068336326ull, 3466057968959543833ull}}, {{3946413034149118081ull, 1678722135012212224ull, 12447003934762808312ull, 4332572461199429791ull}}, {{2466508146343198801ull, 1049201334382632640ull, 14696906486867837051ull, 2707857788249643619ull}}, {{3083135182928998501ull, 15146559723260454512ull, 13759447090157408409ull, 3384822235312054524ull}}, {{3853918978661248126ull, 5098141598793404428ull, 17199308862696760512ull, 4231027794140068155ull}}, {{11632071398518055887ull, 3186338499245877767ull, 8443725029971781368ull, 2644392371337542597ull}}, {{9928403229720181955ull, 3982923124057347209ull, 15166342305892114614ull, 3305490464171928246ull}}, {{17022190055577615348ull, 14202025941926459819ull, 9734555845510367459ull, 4131863080214910308ull}}, {{8333025775522315640ull, 6570423204490343435ull, 15307469440298755470ull, 2582414425134318942ull}}, {{5804596200975506646ull, 17436401042467705102ull, 9910964763518668529ull, 3228018031417898678ull}}, {{16479117288074159116ull, 7960443247802467665ull, 3165333917543559854ull, 4035022539272373348ull}}, {{3381919277405267592ull, 363591011449154387ull, 11201705735319500717ull, 2521889087045233342ull}}, {{18062457152038748201ull, 5066174782738830887ull, 4778760132294600088ull, 3152361358806541678ull}}, {{17966385421621047348ull, 6332718478423538609ull, 15196822202223025918ull, 3940451698508177097ull}}, {{4311461860872072736ull, 17793007104296875343ull, 2580484848748309342ull, 2462782311567610686ull}}, {{777641307662703016ull, 13017886843516318371ull, 12448978097790162486ull, 3078477889459513357ull}}, {{14807109689860542482ull, 7048986517540622155ull, 1726164566955539396ull, 3848097361824391697ull}}, {{6948600546949145100ull, 13628988610317664655ull, 12608067900415681882ull, 2405060851140244810ull}}, {{4074064665259043470ull, 7812863726042305011ull, 6536712838664826545ull, 3006326063925306013ull}}, {{480894813146416434ull, 14377765675980269168ull, 12782577066758421085ull, 3757907579906632516ull}}, {{300559258216510271ull, 11291946556701362182ull, 17212482703578788986ull, 2348692237441645322ull}}, {{9599071109625413647ull, 4891561159021926919ull, 12292231342618710425ull, 2935865296802056653ull}}, {{7387152868604379155ull, 10726137467204796553ull, 1530231122991224319ull, 3669831621002570817ull}}, {{13845627104182861847ull, 8795985815578607787ull, 6524474922166418303ull, 4587289526253213521ull}}, {{6347673930900594703ull, 12415020162377711723ull, 15607011872422481199ull, 2867055953908258450ull}}, {{3322906395198355474ull, 10907089184544751750ull, 10285392803673325691ull, 3583819942385323063ull}}, {{13377005030852720151ull, 9022175462253551783ull, 8245054986164269210ull, 4479774927981653829ull}}, {{15278157171924031950ull, 10250545682335857768ull, 7459002375566362208ull, 2799859329988533643ull}}, {{650952391195488322ull, 12813182102919822211ull, 4712066951030564856ull, 3499824162485667054ull}}, {{14648748544276524114ull, 16016477628649777763ull, 15113455725642981878ull, 4374780203107083817ull}}, {{6849624830959133620ull, 5398612499478723198ull, 2528380800885781818ull, 2734237626941927386ull}}, {{17785403075553692832ull, 15971637661203179805ull, 12383848037962003080ull, 3417797033677409232ull}}, {{8396695789159952328ull, 1517803002794423141ull, 15479810047452503851ull, 4272246292096761540ull}}, {{7553777877438664157ull, 17089527941242372127ull, 451509242803039098ull, 2670153932560475963ull}}, {{4830536328370942293ull, 12138537889698189351ull, 14399444608785962585ull, 3337692415700594953ull}}, {{1426484392036289962ull, 1338114306840572977ull, 4164247705700289520ull, 4172115519625743692ull}}, {{12420767791091150986ull, 836321441775358110ull, 11826026852917456758ull, 2607572199766089807ull}}, {{6302587702009162925ull, 10268773839073973446ull, 10170847547719433043ull, 3259465249707612259ull}}, {{17101606664366229464ull, 8224281280415078903ull, 8101873416221903400ull, 4074331562134515324ull}}, {{17606033192869975271ull, 5140175800259424314ull, 14287042921993465433ull, 2546457226334072077ull}}, {{12784169454232693281ull, 11036905768751668297ull, 4023745597209668079ull, 3183071532917590097ull}}, {{2145153762508702889ull, 9184446192512197468ull, 9641368014939473003ull, 3978839416146987621ull}}, {{10564093138422715114ull, 3434435861106429465ull, 8331698018550864579ull, 2486774635091867263ull}}, {{17816802441455781796ull, 18128102881665200543ull, 5802936504761192819ull, 3108468293864834079ull}}, {{17659317033392339341ull, 18048442583654112775ull, 2641984612524103120ull, 3885585367331042599ull}}, {{17954602173511293944ull, 11280276614783820484ull, 8568769410468646306ull, 2428490854581901624ull}}, {{3996508643179565814ull, 4876973731624999798ull, 10710961763085807883ull, 3035613568227377030ull}}, {{14219007840829233075ull, 1484531146103861843ull, 4165330167002484046ull, 3794516960284221288ull}}, {{6581036891304576720ull, 14762890021597077364ull, 2603331354376552528ull, 2371573100177638305ull}}, {{8226296114130720900ull, 6868453286795089ull, 7865850211398078565ull, 2964466375222047881ull}}, {{14894556161090789029ull, 4620271585035881765ull, 14443998782674986110ull, 3705582969027559851ull}}, {{11614940609895437095ull, 16722727795929589815ull, 6721656229958172366ull, 2315989355642224907ull}}, {{9906989743941908465ull, 11680037708057211461ull, 3790384269020327554ull, 2894986694552781134ull}}, {{16995423198354773485ull, 5376675098216738518ull, 13961352373130185251ull, 3618733368190976417ull}}, {{12020906961088691049ull, 2109157854343535244ull, 3616632411130567852ull, 4523416710238720522ull}}, {{16736438887535207714ull, 10541595695819485335ull, 6872081275383992811ull, 2827135443899200326ull}}, {{16308862590991621738ull, 8565308601346968765ull, 17813473631084766822ull, 3533919304874000407ull}}, {{6551020183457363460ull, 1483263714828935149ull, 17655156020428570624ull, 4417399131092500509ull}}, {{6400230623874546115ull, 927039821768084468ull, 13340315521981550592ull, 2760874456932812818ull}}, {{8000288279843182643ull, 1158799777210105585ull, 7452022365622162432ull, 3451093071166016023ull}}, {{14612046368231366208ull, 1448499721512631981ull, 4703341938600315136ull, 4313866338957520029ull}}, {{11438371989358297832ull, 905312325945394988ull, 5245431720838890912ull, 2696166461848450018ull}}, {{14297964986697872290ull, 1131640407431743735ull, 15780161687903389448ull, 3370208077310562522ull}}, {{13260770214944952459ull, 1414550509289679669ull, 10501830073024461002ull, 4212760096638203153ull}}, {{10593824393554289239ull, 5495780086733437697ull, 18092858841708757886ull, 2632975060398876970ull}}, {{17853966510370249452ull, 16093097145271572929ull, 13392701515281171549ull, 3291218825498596213ull}}, {{8482400082680648103ull, 6281313376307302450ull, 2905818838819300725ull, 4114023531873245267ull}}, {{9913186070102792969ull, 6231663869405757983ull, 17957037838757920617ull, 2571264707420778291ull}}, {{7779796569201103307ull, 12401265855184585383ull, 17834611280020012867ull, 3214080884275972864ull}}, {{5113059693073991229ull, 10889896300553343825ull, 3846520026315464468ull, 4017601105344966081ull}}, {{14724877354239714279ull, 16029557224700615698ull, 13933290062515635052ull, 2511000690840603800ull}}, {{9182724655944867040ull, 1590202457166218007ull, 17416612578144543816ull, 3138750863550754750ull}}, {{6866719801503695896ull, 1987753071457772509ull, 12547393685825903962ull, 3923438579438443438ull}}, {{6597542885153503887ull, 5854031688088495722ull, 3230435035213802072ull, 2452149112149027149ull}}, {{17470300643296655667ull, 7317539610110619652ull, 8649729812444640494ull, 3065186390186283936ull}}, {{3391131730411267967ull, 18370296549493050374ull, 10812162265555800617ull, 3831482987732854920ull}}, {{15954515386789206192ull, 4563906315792074627ull, 6757601415972375386ull, 2394676867333034325ull}}, {{15331458215059119836ull, 14928254931594869092ull, 13058687788392857136ull, 2993346084166292906ull}}, {{717578695114348178ull, 213574590784034750ull, 7099987698636295613ull, 3741682605207866133ull}}, {{14283544739728631324ull, 2439327128453715670ull, 6743335320861378710ull, 2338551628254916333ull}}, {{8631058887806013347ull, 12272530947421920396ull, 13040855169504111291ull, 2923189535318645416ull}}, {{10788823609757516683ull, 10728977665850012591ull, 16301068961880139114ull, 3653986919148306770ull}}, {{8874343493769507950ull, 4187850045457739931ull, 11152964165495398085ull, 4567483648935383463ull}}, {{3240621674392248517ull, 4923249287624781409ull, 13888131631075705659ull, 2854677280584614664ull}}, {{8662463111417698550ull, 1542375591103588857ull, 17360164538844632074ull, 3568346600730768330ull}}, {{15439764907699511091ull, 11151341525734261879ull, 12476833636701014284ull, 4460433250913460413ull}}, {{16567382094953276288ull, 16192960490438689482ull, 10103864032151827879ull, 2787770781820912758ull}}, {{11485855581836819552ull, 15629514594620973949ull, 3406458003335009041ull, 3484713477276140948ull}}, {{522261422013860728ull, 5701835187994053725ull, 4258072504168761302ull, 4355891846595176185ull}}, {{2632256397972356907ull, 17398705047778447290ull, 14190510361173945573ull, 2722432404121985115ull}}, {{12513692534320221942ull, 7913323254440895400ull, 13126451933040044063ull, 3403040505152481394ull}}, {{15642115667900277427ull, 5279968049623731346ull, 7184692879445279271ull, 4253800631440601743ull}}, {{14388008310865061296ull, 10217509058655913947ull, 11407962077294381400ull, 2658625394650376089ull}}, {{13373324370153938716ull, 12771886323319892434ull, 424894541335813038ull, 3323281743312970112ull}}, {{7493283425837647587ull, 6741485867295089735ull, 531118176669766298ull, 4154102179141212640ull}}, {{11600831168789611598ull, 8825114685486818988ull, 331948860418603936ull, 2596313861963257900ull}}, {{14501038960987014497ull, 11031393356858523735ull, 414936075523254920ull, 3245392327454072375ull}}, {{13514612682806380218ull, 13789241696073154669ull, 14353728149686232362ull, 4056740409317590468ull}}, {{10752475935967681588ull, 13229962078473109572ull, 18194452130408671034ull, 2535462755823494042ull}}, {{13440594919959601985ull, 7314080561236611157ull, 13519693126156062985ull, 3169328444779367553ull}}, {{2965685594667338769ull, 13754286719973151851ull, 3064558352412915019ull, 3961660555974209442ull}}, {{17994454561162944395ull, 6290586190769525954ull, 6527034988685459791ull, 2476037847483880901ull}}, {{13269696164598904686ull, 3251546720034519539ull, 12770479754284212643ull, 3095047309354851126ull}}, {{11975434187321242953ull, 17899491455325313136ull, 6739727656000489995ull, 3868809136693563908ull}}, {{7484646367075776846ull, 8881339150364626758ull, 13435701821855082055ull, 2418005710433477442ull}}, {{132435921989945249ull, 6489987919528395544ull, 7571255240464076761ull, 3022507138041846803ull}}, {{165544902487431561ull, 12724170917837882334ull, 4852383032152708047ull, 3778133922552308504ull}}, {{13938523619336808438ull, 14870135851289758314ull, 3032739395095442529ull, 2361333701595192815ull}}, {{8199782487316234739ull, 4752611758830034181ull, 17625982299151466874ull, 2951667126993991018ull}}, {{14861414127572681328ull, 15164136735392318534ull, 12809105837084557784ull, 3689583908742488773ull}}, {{4676697811305537926ull, 9477585459620199084ull, 10311534157391542567ull, 2305989942964055483ull}}, {{5845872264131922408ull, 7235295806097860951ull, 8277731678312040305ull, 2882487428705069354ull}}, {{2695654311737515105ull, 13655805776049714093ull, 1123792561035274573ull, 3603109285881336693ull}}, {{7981253908099281786ull, 3234699164779978904ull, 6016426719721481121ull, 4503886607351670866ull}}, {{4988283692562051116ull, 13550902024055956575ull, 8371952718253313604ull, 2814929129594794291ull}}, {{1623668597275175991ull, 16938627530069945719ull, 5853254879389254101ull, 3518661411993492864ull}}, {{15864643801876133701ull, 7338226357305268436ull, 7316568599236567627ull, 4398326764991866080ull}}, {{692030339317807755ull, 2280548464102098821ull, 4572855374522854767ull, 2748954228119916300ull}}, {{5476723942574647598ull, 16685743635409787238ull, 5716069218153568458ull, 3436192785149895375ull}}, {{16069276965073085305ull, 11633807507407458239ull, 2533400504264572669ull, 4295240981437369219ull}}, {{16960827130811760172ull, 9576972701343355351ull, 17724276379661215582ull, 2684525613398355761ull}}, {{16589347895087312311ull, 2747843839824418381ull, 8320287419294355766ull, 3355657016747944702ull}}, {{6901626813576976676ull, 12658176836635298785ull, 1176987237263168899ull, 4194571270934930878ull}}, {{15842731804554080183ull, 5605517513683367788ull, 14570675078571644274ull, 2621607044334331798ull}}, {{1356670681983048613ull, 16230268928958985544ull, 8989971811359779534ull, 3277008805417914748ull}}, {{1695838352478810766ull, 11064464124343956122ull, 11237464764199724418ull, 4096261006772393435ull}}, {{5671584988726644633ull, 11526976096142360480ull, 4717572468411133809ull, 2560163129232745897ull}}, {{7089481235908305791ull, 573662064895786888ull, 10508651603941305166ull, 3200203911540932371ull}}, {{8861851544885382238ull, 9940449617974509418ull, 8524128486499243553ull, 4000254889426165464ull}}, {{10150343233980751803ull, 17741996057302538146ull, 5327580304062027220ull, 2500159305891353415ull}}, {{3464557005621163946ull, 3730750997918621067ull, 2047789361650146122ull, 3125199132364191769ull}}, {{18165754312308618644ull, 13886810784253052141ull, 7171422720490070556ull, 3906498915455239711ull}}, {{13659439454406580605ull, 17902628777012933396ull, 11399668227947375953ull, 2441561822159524819ull}}, {{17074299318008225756ull, 8543227915984003033ull, 9637899266506832038ull, 3051952277699406024ull}}, {{7507816092228118483ull, 1455662858125227984ull, 12047374083133540048ull, 3814940347124257530ull}}, {{4692385057642574052ull, 909789286328267490ull, 12141294820385850434ull, 2384337716952660956ull}}, {{15088853358907993373ull, 10360608644765110170ull, 15176618525482313042ull, 2980422146190826195ull}}, {{9637694661780215908ull, 3727388769101611905ull, 14359087138425503399ull, 3725527682738532744ull}}, {{17552774209681104702ull, 9247147008329589296ull, 8974429461515939624ull, 2328454801711582965ull}}, {{3494223688391829262ull, 11558933760411986621ull, 15829722845322312434ull, 2910568502139478706ull}}, {{8979465628917174481ull, 5225295163660207468ull, 10563781519798114735ull, 3638210627674348383ull}}, {{11224332036146468102ull, 1919932936147871431ull, 8593040881320255515ull, 4547763284592935479ull}}, {{13932736550232624420ull, 17340859149588277308ull, 12288179578466241552ull, 2842352052870584674ull}}, {{17415920687790780524ull, 3229329863275795019ull, 6136852436228026133ull, 3552940066088230843ull}}, {{17158214841311087751ull, 8648348347522131678ull, 3059379526857644762ull, 4441175082610288554ull}}, {{6112198257392041941ull, 10016903735628720203ull, 6523798222713415880ull, 2775734426631430346ull}}, {{3028561803312664522ull, 12521129669535900254ull, 17378119815246545658ull, 3469668033289287932ull}}, {{13009074290995606460ull, 6428040050065099509ull, 3275905695348630457ull, 4337085041611609916ull}}, {{10436514441085947990ull, 15546740077359156953ull, 11270813096447669843ull, 2710678151007256197ull}}, {{17657329069784822891ull, 14821739078271558287ull, 253458315277423592ull, 3388347688759070247ull}}, {{17459975318803640710ull, 80429774129896243ull, 14151880949378943203ull, 4235434610948837808ull}}, {{8606641565038581492ull, 16191169673327042816ull, 8844925593361839501ull, 2647146631843023630ull}}, {{10758301956298226865ull, 6403904036376639808ull, 1832784954847523569ull, 3308933289803779538ull}}, {{13447877445372783581ull, 12616566063898187664ull, 11514353230414180269ull, 4136166612254724422ull}}, {{8404923403357989738ull, 10191196799150061242ull, 2584784750581474764ull, 2585104132659202764ull}}, {{1282782217342711365ull, 12738995998937576553ull, 3230980938226843455ull, 3231380165824003455ull}}, {{6215163790105777110ull, 11312058980244582787ull, 17873784228065718031ull, 4039225207280004318ull}}, {{1578634359602416742ull, 13987565890293946098ull, 6559429124113685865ull, 2524515754550002699ull}}, {{11196664986357796735ull, 3649399307585268910ull, 3587600386714719428ull, 3155644693187503374ull}}, {{4772459196092470111ull, 4561749134481586138ull, 13707872520248175093ull, 3944555866484379217ull}}, {{7594473015985181723ull, 5156936218264685288ull, 1649891297514027577ull, 2465347416552737011ull}}, {{9493091269981477154ull, 11057856291258244514ull, 15897422177174698183ull, 3081684270690921263ull}}, {{2642992050622070634ull, 9210634345645417739ull, 15260091703040984825ull, 3852105338363651579ull}}, {{17792771096134651811ull, 17285861512096855846ull, 7231714305186921563ull, 2407565836477282237ull}}, {{13017591833313538955ull, 16995640871693681904ull, 13651328899911039858ull, 3009457295596602796ull}}, {{16271989791641923694ull, 12021179052762326572ull, 17064161124888799823ull, 3761821619495753495ull}}, {{946621582921426501ull, 14430765935617535964ull, 17582629730696581745ull, 2351138512184845934ull}}, {{1183276978651783126ull, 4203399364239756243ull, 12754915126515951374ull, 2938923140231057418ull}}, {{15314154278596892619ull, 14477621242154471111ull, 6720271871290163409ull, 3673653925288821773ull}}, {{14531006829818727870ull, 4261968497410925177ull, 13012025857540092166ull, 4592067406611027216ull}}, {{2164350240995623063ull, 16498788366163991948ull, 8132516160962557603ull, 2870042129131892010ull}}, {{2705437801244528829ull, 16011799439277602031ull, 942273164348421196ull, 3587552661414865013ull}}, {{17216855306837824748ull, 1568005225387450922ull, 5789527473862914400ull, 4484440826768581266ull}}, {{15372220585201028371ull, 980003265867156826ull, 8230140689591709404ull, 2802775516730363291ull}}, {{9991903694646509656ull, 1225004082333946033ull, 5675989843562248851ull, 3503469395912954114ull}}, {{17101565636735524974ull, 15366313158199596253ull, 16318359341307586871ull, 4379336744891192642ull}}, {{12994321532173397061ull, 16521474751515829514ull, 14810660606744629698ull, 2737085465556995401ull}}, {{7019529878361970518ull, 11428471402540011085ull, 4678267703148623411ull, 3421356831946244252ull}}, {{13386098366379851052ull, 9673903234747625952ull, 5847834628935779264ull, 4276696039932805315ull}}, {{8366311478987406907ull, 6046189521717266220ull, 1349053633871168088ull, 2672935024958003322ull}}, {{10457889348734258634ull, 7557736902146582775ull, 10909689079193735918ull, 3341168781197504152ull}}, {{8460675667490435388ull, 223799090828452661ull, 13637111348992169898ull, 4176460976496880190ull}}, {{7593765301395216070ull, 4751560450195170817ull, 3911508574692718282ull, 2610288110310550119ull}}, {{14103892645171407991ull, 15162822599598739329ull, 277699699938509948ull, 3262860137888187649ull}}, {{3794807751182096277ull, 506784175788872546ull, 4958810643350525340ull, 4078575172360234561ull}}, {{6983440862916198077ull, 9540112146722821149ull, 14628471698162548097ull, 2549109482725146600ull}}, {{13340987097072635501ull, 16536826201830914340ull, 18285589622703185121ull, 3186386853406433250ull}}, {{16676233871340794376ull, 6835974697006479213ull, 13633614991524205594ull, 3982983566758041563ull}}, {{12728489178801690437ull, 8884170204056437412ull, 6215166360488934544ull, 2489364729223775977ull}}, {{15910611473502113046ull, 11105212755070546765ull, 12380643969038556084ull, 3111705911529719971ull}}, {{6053206286595477595ull, 13881515943838183457ull, 10864118942870807201ull, 3889632389412149964ull}}, {{15312468975190643257ull, 1758418437257782804ull, 16013446376149030309ull, 2431020243382593727ull}}, {{693842145278752456ull, 6809709064999616410ull, 15405121951758899982ull, 3038775304228242159ull}}, {{10090674718453216377ull, 17735508368104296320ull, 14644716421271237073ull, 3798469130285302699ull}}, {{6306671699033260236ull, 4167163702424103344ull, 6847104754080829219ull, 2374043206428314187ull}}, {{7883339623791575295ull, 597268609602741276ull, 3947194924173648620ull, 2967554008035392734ull}}, {{9854174529739469118ull, 746585762003426595ull, 14157365692071836583ull, 3709442510044240917ull}}, {{3853016071873474247ull, 7384145128893223478ull, 11154196566758591816ull, 2318401568777650573ull}}, {{14039642126696618617ull, 9230181411116529347ull, 107687653166076058ull, 2898001960972063217ull}}, {{12937866639943385367ull, 2314354727040885876ull, 4746295584884982977ull, 3622502451215079021ull}}, {{16172333299929231709ull, 7504629427228495249ull, 10544555499533616625ull, 4528128064018848776ull}}, {{3190179284814687962ull, 16219608438086279291ull, 6590347187208510390ull, 2830080040011780485ull}}, {{17822782161300523664ull, 11051138510753073305ull, 12849620002438025892ull, 3537600050014725606ull}}, {{8443419646343490868ull, 13813923138441341632ull, 6838652966192756557ull, 4422000062518407008ull}}, {{5277137278964681793ull, 10939544970739532472ull, 4274158103870472848ull, 2763750039074004380ull}}, {{6596421598705852241ull, 13674431213424415590ull, 5342697629838091060ull, 3454687548842505475ull}}, {{17468899035237091109ull, 17093039016780519487ull, 2066686018870225921ull, 4318359436053131844ull}}, {{17835590924664263799ull, 3765620357846742823ull, 10515050798648667009ull, 2698974647533207402ull}}, {{17682802637402941845ull, 9318711465735816433ull, 3920441461456057953ull, 3373718309416509253ull}}, {{8268445241471513594ull, 16260075350597158446ull, 9512237845247460345ull, 4217147886770636566ull}}, {{556092257492308093ull, 3245018066482142173ull, 1333462634852274812ull, 2635717429231647854ull}}, {{5306801340292773020ull, 4056272583102677716ull, 10890200330420119323ull, 3294646786539559817ull}}, {{6633501675365966275ull, 458654710450959241ull, 18224436431452537058ull, 4118308483174449771ull}}, {{15675153593172198682ull, 4898345212459237429ull, 9084429760444141709ull, 2573942801984031107ull}}, {{5758883936183084640ull, 10734617534001434691ull, 6743851182127789232ull, 3217428502480038884ull}}, {{2586918901801467896ull, 13418271917501793364ull, 8429813977659736540ull, 4021785628100048605ull}}, {{10840196350480693243ull, 17609791985293396660ull, 7574476745251029289ull, 2513616017562530378ull}}, {{13550245438100866554ull, 8177181926334582113ull, 244723894709010804ull, 3142020021953162973ull}}, {{3102748742343919480ull, 10221477407918227642ull, 4917590886813651409ull, 3927525027441453716ull}}, {{6550903982392337579ull, 17917638426017362036ull, 12296866341113307938ull, 2454703142150908572ull}}, {{8188629977990421974ull, 13173675995666926737ull, 15371082926391634923ull, 3068378927688635715ull}}, {{14847473490915415371ull, 11855408976156270517ull, 14602167639562155750ull, 3835473659610794644ull}}, {{11585513941035828559ull, 2797944591670281169ull, 18349726811581123152ull, 2397171037256746652ull}}, {{646834371012621987ull, 3497430739587851462ull, 4490414440766852324ull, 2996463796570933316ull}}, {{10031915000620553292ull, 4371788424484814327ull, 5613018050958565405ull, 3745579745713666645ull}}, {{13187475903028927663ull, 5038210774516702906ull, 5813979291062797330ull, 2340987341071041653ull}}, {{7260972841931383771ull, 15521135505000654441ull, 11879160132255884566ull, 2926234176338802066ull}}, {{13687902070841617618ull, 10178047344396042243ull, 5625578128465079900ull, 3657792720423502583ull}}, {{12498191570124634118ull, 12722559180495052804ull, 2420286642153961971ull, 4572240900529378229ull}}, {{17034741768182672132ull, 5645756478595714050ull, 3818522160559920184ull, 2857650562830861393ull}}, {{12070055173373564357ull, 7057195598244642563ull, 9384838719127288134ull, 3572063203538576741ull}}, {{10475882948289567542ull, 18044866534660579012ull, 16342734417336498071ull, 4465079004423220926ull}}, {{15770798879535755522ull, 18195570611803943738ull, 5602522992407923390ull, 2790674377764513079ull}}, {{10490126562564918594ull, 13521091227900153865ull, 2391467722082516334ull, 3488342972205641349ull}}, {{17724344221633536147ull, 7677991998020416523ull, 7601020671030533322ull, 4360428715257051686ull}}, {{8771872129307266140ull, 9410431017190148231ull, 138951900966695422ull, 2725267947035657304ull}}, {{6353154143206694771ull, 2539666734632909481ull, 173689876208369278ull, 3406584933794571630ull}}, {{12553128697435756367ull, 12397955455145912659ull, 9440484382115237405ull, 4258231167243214537ull}}, {{5539862426683653778ull, 10054565168679889364ull, 17429517784890493138ull, 2661394479527009085ull}}, {{6924828033354567222ull, 3344834423995085897ull, 7951839175830952711ull, 3326743099408761357ull}}, {{13267721060120596932ull, 18016101085276021083ull, 14551484988216078792ull, 4158428874260951696ull}}, {{5986482653361679130ull, 11260063178297513177ull, 9094678117635049245ull, 2599018046413094810ull}}, {{12094789335129486817ull, 240020917589727759ull, 2144975610189035749ull, 3248772558016368513ull}}, {{10506800650484470617ull, 4911712165414547603ull, 7292905531163682590ull, 4060965697520460641ull}}, {{4260907397339100184ull, 16904878158666255964ull, 16087281003045771378ull, 2538103560950287900ull}}, {{5326134246673875230ull, 11907725661478044147ull, 1662357180097662607ull, 3172629451187859876ull}}, {{2045981789914956133ull, 10272971058420167280ull, 2077946475122078259ull, 3965786813984824845ull}}, {{1278738618696847583ull, 4114763902298910598ull, 3604559556164992864ull, 2478616758740515528ull}}, {{10821795310225835287ull, 5143454877873638247ull, 4505699445206241080ull, 3098270948425644410ull}}, {{8915558119354906205ull, 6429318597342047809ull, 14855496343362577158ull, 3872838685532055512ull}}, {{17101438870665286138ull, 17853382178620943592ull, 9284685214601610723ull, 2420524178457534695ull}}, {{2930054514622056056ull, 17705041704848791587ull, 6994170499824625500ull, 3025655223071918369ull}}, {{17497626198559733782ull, 3684558057351437867ull, 13354399143208169780ull, 3782069028839897961ull}}, {{8630173364886139662ull, 11526220822699424475ull, 1428970436864024256ull, 2363793143024936226ull}}, {{6176030687680286674ull, 14407776028374280594ull, 11009585082934806128ull, 2954741428781170282ull}}, {{16943410396455134150ull, 18009720035467850742ull, 4538609316813731852ull, 3693426785976462853ull}}, {{5977945479357070940ull, 2032702985312630906ull, 5142473832222276360ull, 2308391741235289283ull}}, {{16695803886051114483ull, 2540878731640788632ull, 1816406271850457546ull, 2885489676544111604ull}}, {{2423010783854341487ull, 12399470451405761599ull, 2270507839813071932ull, 3606862095680139505ull}}, {{16863821535100090571ull, 15499338064257201998ull, 7449820818193727819ull, 4508577619600174381ull}}, {{5928202441010168703ull, 7381243280947057297ull, 6961981020584773839ull, 2817861012250108988ull}}, {{12021939069690098783ull, 4614868082756433717ull, 8702476275730967299ull, 3522326265312636235ull}}, {{1192365781830459766ull, 1156899085018154243ull, 6266409326236321220ull, 4402907831640795294ull}}, {{16886129678139895018ull, 9946433964991122209ull, 17751563884179864474ull, 2751817394775497058ull}}, {{7272604042392705060ull, 3209670419384126954ull, 12966082818370054785ull, 3439771743469371323ull}}, {{18314127089845657133ull, 8623774042657546596ull, 11595917504535180577ull, 4299714679336714154ull}}, {{2222957394298759901ull, 16919073822729436383ull, 11859134458761875764ull, 2687321674585446346ull}}, {{16613754798155613588ull, 2702098204702243862ull, 5600546036597568898ull, 3359152093231807933ull}}, {{11543821460839741176ull, 12600994792732580636ull, 11612368564174349026ull, 4198940116539759916ull}}, {{16438260449879614043ull, 12487307763885250801ull, 16481102389463743949ull, 2624337572837349947ull}}, {{6712767507067353842ull, 1774076649574399790ull, 15989691968402292033ull, 3280421966046687434ull}}, {{17614331420688968111ull, 6829281830395387641ull, 10763742923648089233ull, 4100527457558359293ull}}, {{4091428110289523213ull, 15797516190065587036ull, 9033182336493749722ull, 2562829660973974558ull}}, {{5114285137861904017ull, 10523523200727207987ull, 2068105883762411345ull, 3203537076217468198ull}}, {{1781170403899992117ull, 17766090019336397888ull, 11808504391557789989ull, 4004421345271835247ull}}, {{1113231502437495073ull, 13409649271298942632ull, 14297844272364700599ull, 2502763340794897029ull}}, {{1391539378046868841ull, 12150375570696290386ull, 4037247285173712037ull, 3128454175993621287ull}}, {{10962796259413361859ull, 1352911408088199270ull, 434873088039752143ull, 3910567719992026609ull}}, {{2240061643705963258ull, 7763098657696206400ull, 11801010726093314849ull, 2444104824995016630ull}}, {{2800077054632454073ull, 14315559340547645904ull, 5527891370761867753ull, 3055131031243770788ull}}, {{3500096318290567591ull, 4059391120402393668ull, 6909864213452334692ull, 3818913789054713485ull}}, {{11410932235786380552ull, 11760491487106271850ull, 6624508142621403134ull, 2386821118159195928ull}}, {{5040293257878199882ull, 5477242322028064005ull, 8280635178276753918ull, 2983526397698994910ull}}, {{10912052590775137757ull, 16069924939389855814ull, 1127421935991166589ull, 3729407997123743638ull}}, {{2208346850807073194ull, 12349546096332353836ull, 14539696765276642830ull, 2330879998202339773ull}}, {{2760433563508841493ull, 6213560583560666487ull, 4339562901313639826ull, 2913599997752924717ull}}, {{17285600009668215578ull, 16990322766305608916ull, 10036139645069437686ull, 3641999997191155896ull}}, {{3160255938375717856ull, 12014531421027235338ull, 12545174556336797108ull, 4552499996488944870ull}}, {{6586845979912211564ull, 16732454174996797894ull, 3229048079283110288ull, 2845312497805590544ull}}, {{17456929511745040263ull, 2468823645036445751ull, 4036310099103887861ull, 3556640622256988180ull}}, {{17209475871253912425ull, 7697715574722945093ull, 5045387623879859826ull, 4445800777821235225ull}}, {{13061765428747389218ull, 9422758252629228587ull, 14682582310993382151ull, 2778625486138272015ull}}, {{11715520767506848618ull, 7166761797359147830ull, 13741541870314339785ull, 3473281857672840019ull}}, {{5421028922528784964ull, 13570138265126322692ull, 12565241319465536827ull, 4341602322091050024ull}}, {{12611515113435266411ull, 6175493406490257730ull, 7853275824665960517ull, 2713501451306906265ull}}, {{6541021854939307205ull, 12331052776540210067ull, 14428280799259838550ull, 3391876814133632831ull}}, {{3564591300246746103ull, 6190443933820486776ull, 13423664980647410284ull, 4239846017667041039ull}}, {{2227869562654216314ull, 13092399495492580043ull, 15307319640545713283ull, 2649903761041900649ull}}, {{16619895008599934105ull, 11753813350938337149ull, 5299091495399977892ull, 3312379701302375812ull}}, {{6939810705467753919ull, 14692266688672921437ull, 6623864369249972365ull, 4140474626627969765ull}}, {{6643224700131040152ull, 11488509689634269850ull, 6445758239994926680ull, 2587796641642481103ull}}, {{17527402912018575997ull, 14360637112042837312ull, 3445511781566270446ull, 3234745802053101379ull}}, {{3462509566313668380ull, 8727424353198770833ull, 18141947782240001770ull, 4043432252566376723ull}}, {{13693283525014512498ull, 10066326239176619674ull, 9032874354686307154ull, 2527145157853985452ull}}, {{7893232369413364814ull, 3359535762115998785ull, 11291092943357883943ull, 3158931447317481815ull}}, {{14478226480194093922ull, 18034477757927162193ull, 9502180160769967024ull, 3948664309146852269ull}}, {{2131362522480226845ull, 11271548598704476371ull, 8244705609694923342ull, 2467915193216782668ull}}, {{16499261208382447269ull, 4866063711525819655ull, 10305882012118654178ull, 3084893991520978335ull}}, {{16012390492050671182ull, 15305951676262050377ull, 8270666496720929818ull, 3856117489401222919ull}}, {{3090215029890587633ull, 14177905816091169390ull, 12086695588091662992ull, 2410073430875764324ull}}, {{13086140824218010349ull, 17722382270113961737ull, 15108369485114578740ull, 3012591788594705405ull}}, {{2522617974990349224ull, 3706233763932900556ull, 5050403801111059714ull, 3765739735743381757ull}}, {{10800008271223744073ull, 6928082120885450751ull, 5462345384908106273ull, 2353587334839613598ull}}, {{8888324320602292187ull, 13271788669534201343ull, 16051303767989908649ull, 2941984168549516997ull}}, {{6498719382325477330ull, 2754677781635587967ull, 6229071654705222100ull, 3677480210686896247ull}}, {{3511713209479458758ull, 3443347227044484959ull, 3174653549954139721ull, 4596850263358620309ull}}, {{9112349783565743580ull, 13681307062971272859ull, 4290001477935031277ull, 2873031414599137693ull}}, {{6778751211029791571ull, 3266575773431927362ull, 9974187865846177001ull, 3591289268248922116ull}}, {{17696811050642015271ull, 8694905735217297106ull, 12467734832307721251ull, 4489111585311152645ull}}, {{15672192925078647449ull, 3128473075297116739ull, 10098177279406019734ull, 2805694740819470403ull}}, {{14978555137920921407ull, 13133963380976171732ull, 8011035580830136763ull, 3507118426024338004ull}}, {{276449848691600143ull, 11805768207792826762ull, 10013794476037670954ull, 4383898032530422505ull}}, {{4784467173859637993ull, 11990291148297904630ull, 17787836593592014106ull, 2739936270331514065ull}}, {{15203956004179323299ull, 5764491898517604979ull, 8399737686707853921ull, 3424920337914392582ull}}, {{14393258986796766220ull, 11817300891574394128ull, 1276300071530041593ull, 4281150422392990728ull}}, {{8995786866747978888ull, 468284029592914474ull, 797687544706275996ull, 2675719013995619205ull}}, {{2021361546580197802ull, 585355036991143093ull, 5608795449310232899ull, 3344648767494524006ull}}, {{7138387951652635156ull, 14566751851521092578ull, 16234366348492566931ull, 4180810959368155007ull}}, {{9073178488210284877ull, 6798376897986988909ull, 17064007995448936188ull, 2613006849605096879ull}}, {{15953159128690244000ull, 8497971122483736136ull, 16718323975883782331ull, 3266258562006371099ull}}, {{1494704837153253384ull, 6010777884677282267ull, 16286218951427340010ull, 4082823202507963874ull}}, {{17075091587716641029ull, 8368422196350689320ull, 14790572863069475410ull, 2551764501567477421ull}}, {{2897120410936249670ull, 1237155708583585843ull, 4653158023554680551ull, 3189705626959346777ull}}, {{17456458568952475799ull, 15381502691011646015ull, 10428133547870738592ull, 3987132033699183471ull}}, {{17827815633236379231ull, 9613439181882278759ull, 13435112495060293476ull, 2491957521061989669ull}}, {{17673083523118086134ull, 12016798977352848449ull, 2958832563543203133ull, 3114946901327487087ull}}, {{8256296348615443956ull, 1185940666408896850ull, 17533598759711167629ull, 3893683626659358858ull}}, {{9771871236312040377ull, 3047055925719254483ull, 15570185243246867672ull, 2433552266662099286ull}}, {{7603153026962662567ull, 3808819907149068104ull, 10239359517203808782ull, 3041940333327624108ull}}, {{9503941283703328208ull, 13984396920791110938ull, 12799199396504760977ull, 3802425416659530135ull}}, {{10551649320741968034ull, 1822719047853362480ull, 14917028650456557467ull, 2376515885412206334ull}}, {{13189561650927460043ull, 16113456865098866812ull, 9422913776215921025ull, 2970644856765257918ull}}, {{16486952063659325053ull, 6306763026091419803ull, 2555270183415125474ull, 3713306070956572398ull}}, {{7998502030573384206ull, 8553412909734525281ull, 15432101919916617133ull, 2320816294347857748ull}}, {{14609813556644118162ull, 15303452155595544505ull, 843383326186219800ull, 2901020367934822186ull}}, {{4427208890522983990ull, 682571120784879016ull, 10277601194587550559ull, 3626275459918527732ull}}, {{5534011113153729988ull, 14688271956263262482ull, 12847001493234438198ull, 4532844324898159665ull}}, {{8070442964148469147ull, 4568483954237151147ull, 1111846905630442018ull, 2833027703061349791ull}}, {{5476367686758198529ull, 14933976979651214742ull, 15224866687320216234ull, 3541284628826687238ull}}, {{16068831645302523969ull, 9444099187709242619ull, 9807711322295494485ull, 4426605786033359048ull}}, {{7737176769100383529ull, 8208405001531970589ull, 6129819576434684053ull, 2766628616270849405ull}}, {{14283156979802867315ull, 14872192270342351140ull, 12273960488970742970ull, 3458285770338561756ull}}, {{17853946224753584144ull, 9366868301073163117ull, 15342450611213428713ull, 4322857212923202195ull}}, {{13464559399684684042ull, 17383507734239196708ull, 7283188622794698993ull, 2701785758077001372ull}}, {{16830699249605855052ull, 7894326612516832173ull, 9103985778493373742ull, 3377232197596251715ull}}, {{7203316006725155103ull, 644536228791264409ull, 6768296204689329274ull, 4221540246995314644ull}}, {{16031287550271691700ull, 5014521161421928159ull, 13453557164785606604ull, 2638462654372071652ull}}, {{15427423419412226721ull, 6268151451777410199ull, 16816946455982008255ull, 3298078317965089565ull}}, {{14672593255837895497ull, 3223503296294374845ull, 7186125014695346607ull, 4122597897456361957ull}}, {{11476213794112378638ull, 8932218587825066134ull, 6797171143398285581ull, 2576623685910226223ull}}, {{5121895205785697489ull, 15776959253208720572ull, 3884777910820469072ull, 3220779607387782779ull}}, {{6402369007232121861ull, 1274454992801349099ull, 244286370098198437ull, 4025974509234728474ull}}, {{1695637620306382211ull, 3102377379714537139ull, 4764364999738761927ull, 2516234068271705296ull}}, {{15954605080665141476ull, 17713029779925335135ull, 5955456249673452408ull, 3145292585339631620ull}}, {{15331570332404038941ull, 3694543151197117303ull, 7444320312091815511ull, 3931615731674539525ull}}, {{16499760485393606194ull, 9226618497139280170ull, 6958543204271078646ull, 2457259832296587203ull}}, {{11401328569887231935ull, 2309901084569324405ull, 4086492986911460404ull, 3071574790370734004ull}}, {{416602657076876206ull, 2887376355711655507ull, 5108116233639325505ull, 3839468487963417505ull}}, {{16401277725168905293ull, 13333825268388254451ull, 14721787692093048200ull, 2399667804977135940ull}}, {{15889911138033743712ull, 16667281585485318064ull, 18402234615116310250ull, 2999584756221419925ull}}, {{1415644848832628024ull, 11610729945001871773ull, 9167735213613224101ull, 3749480945276774907ull}}, {{3190621039734086467ull, 9562549224839863810ull, 3423991499294571111ull, 2343425590797984317ull}}, {{13211648336522383892ull, 7341500512622441858ull, 8891675392545601793ull, 2929281988497480396ull}}, {{7291188383798204057ull, 13788561659205440227ull, 11114594240682002241ull, 3661602485621850495ull}}, {{4502299461320367167ull, 3400644018724636572ull, 9281556782425114898ull, 4577003107027313119ull}}, {{12037309200180005287ull, 6737088530130285761ull, 12718502016656778667ull, 2860626941892070699ull}}, {{1211578444942842897ull, 3809674644235469298ull, 11286441502393585430ull, 3575783677365088374ull}}, {{10737845093033329429ull, 13985465342149112430ull, 4884679841137205979ull, 4469729596706360468ull}}, {{2099467164718442990ull, 6435072829629501317ull, 12276296937565529545ull, 2793580997941475292ull}}, {{7236019974325441641ull, 12655527055464264550ull, 15345371171956911931ull, 3491976247426844115ull}}, {{18268397004761577859ull, 11207722800902942783ull, 14570027946518752010ull, 4364970309283555144ull}}, {{18335277155617068018ull, 11616512768991727143ull, 9106267466574220006ull, 2728106443302221965ull}}, {{18307410426093947118ull, 5297268924384883121ull, 15994520351645162912ull, 3410133054127777456ull}}, {{9049204977335270186ull, 6621586155481103902ull, 1546406365846902024ull, 4262666317659721821ull}}, {{1044067092407155962ull, 4138491347175689939ull, 3272346987868007717ull, 2664166448537326138ull}}, {{15140141920791108665ull, 9784800202397000327ull, 13313805771689785454ull, 3330208060671657672ull}}, {{14313491382561497927ull, 3007628216141474601ull, 16642257214612231818ull, 4162760075839572090ull}}, {{2028403086459854348ull, 6491453653515809530ull, 15013096777560032790ull, 2601725047399732556ull}}, {{11758875894929593743ull, 17337689103749537720ull, 319626898240489371ull, 3252156309249665696ull}}, {{14698594868661992179ull, 17060425361259534246ull, 399533622800611714ull, 4065195386562082120ull}}, {{4574935774486357208ull, 15274451869214596808ull, 249708514250382321ull, 2540747116601301325ull}}, {{5718669718107946510ull, 5258006781236082298ull, 4923821661240365806ull, 3175933895751626656ull}}, {{16371709184489708946ull, 15795880513399878680ull, 6154777076550457257ull, 3969917369689533320ull}}, {{10232318240306068091ull, 2954896293233842319ull, 3846735672844035786ull, 2481198356055958325ull}}, {{8178711781955197210ull, 12916992403397078707ull, 9420105609482432636ull, 3101497945069947906ull}}, {{5611703709016608608ull, 16146240504246348384ull, 2551759974998264987ull, 3876872431337434883ull}}, {{3507314818135380380ull, 7785557305940273788ull, 17735751048869773281ull, 2423045269585896801ull}}, {{4384143522669225475ull, 14343632650852730139ull, 8334630755805052889ull, 3028806586982371002ull}}, {{868493384909143940ull, 4094482758283748962ull, 1194916407901540304ull, 3786008233727963753ull}}, {{5154494383995602867ull, 2559051723927343101ull, 12276037801006932450ull, 2366255146079977345ull}}, {{11054803998421891487ull, 12422186691763954684ull, 1509989195976501850ull, 2957818932599971682ull}}, {{13818504998027364359ull, 6304361327850167547ull, 11110858531825403121ull, 3697273665749964602ull}}, {{6330722614553408772ull, 15469440875974824477ull, 11555972600818264854ull, 2310796041093727876ull}}, {{12525089286619148869ull, 10113429058113754788ull, 14444965751022831068ull, 2888495051367159845ull}}, {{15656361608273936087ull, 12641786322642193485ull, 4221149133496375123ull, 3610618814208949807ull}}, {{5735393955060256396ull, 11190546884875353953ull, 664750398443081000ull, 4513273517761187259ull}}, {{15113836267981130008ull, 6994091803047096220ull, 16556370063522783289ull, 2820795948600742036ull}}, {{445551261266860894ull, 13354300772236258180ull, 2248718505693927495ull, 3525994935750927546ull}}, {{556939076583576117ull, 12081189946867934821ull, 12034270168972185177ull, 4407493669688659432ull}}, {{2653929932078429025ull, 633214689151377407ull, 7521418855607615736ull, 2754683543555412145ull}}, {{17152470470380199993ull, 791518361439221758ull, 14013459587936907574ull, 3443354429444265181ull}}, {{12217216051120474184ull, 10212769988653803006ull, 3681766429638970755ull, 4304193036805331477ull}}, {{3024074013522908461ull, 4077138233694932927ull, 4606947027738050674ull, 2690120648003332173ull}}, {{17615150572185799288ull, 14319794828973441966ull, 10370369803099951246ull, 3362650810004165216ull}}, {{12795566178377473302ull, 8676371499362026650ull, 12962962253874939058ull, 4203313512505206520ull}}, {{12608914879913308718ull, 10034418205528654560ull, 8101851408671836911ull, 2627070945315754075ull}}, {{15761143599891635897ull, 7931336738483430296ull, 5515628242412408235ull, 3283838681644692594ull}}, {{1254685426154993256ull, 5302484904676899967ull, 16117907339870286102ull, 4104798352055865742ull}}, {{7701707418987952641ull, 17149111120705226191ull, 5462006068991540909ull, 2565498970034916089ull}}, {{5015448255307552897ull, 7601330845599369027ull, 11439193604666814041ull, 3206873712543645111ull}}, {{1657624300707053217ull, 14113349575426599188ull, 9687305987406129647ull, 4008592140679556389ull}}, {{10259387224796684069ull, 15738372512282706348ull, 8360409251342524981ull, 2505370087924722743ull}}, {{12824234030995855086ull, 5837907585071219223ull, 5838825545750768323ull, 3131712609905903429ull}}, {{11418606520317430953ull, 2685698462911636125ull, 11910217950615848308ull, 3914640762382379286ull}}, {{9442472084412088298ull, 10901933576174548386ull, 2832200200707517288ull, 2446650476488987054ull}}, {{2579718068660334564ull, 13627416970218185483ull, 12763622287739172418ull, 3058313095611233817ull}}, {{17059705641107581917ull, 7810899175917956045ull, 2119469804391801811ull, 3822891369514042272ull}}, {{12968159034905932651ull, 2575968975735028576ull, 1324668627744876132ull, 2389307105946276420ull}}, {{16210198793632415813ull, 3219961219668785720ull, 1655835784681095165ull, 2986633882432845525ull}}, {{1816004418330968150ull, 8636637543013370055ull, 6681480749278756860ull, 3733292353041056906ull}}, {{8052531789097936950ull, 14621270501238132092ull, 8787611486726610941ull, 2333307720650660566ull}}, {{10065664736372421187ull, 4441530071265501403ull, 1761142321553487869ull, 2916634650813325708ull}}, {{7970394902038138580ull, 10163598607509264658ull, 2201427901941859836ull, 3645793313516657135ull}}, {{739621590692897417ull, 12704498259386580823ull, 16586842932709488507ull, 4557241641895821418ull}}, {{7379792521824142742ull, 5634468402902919062ull, 14978462851370818221ull, 2848276026184888386ull}}, {{1368615425402619ull, 11654771522056036732ull, 9499706527358746968ull, 3560345032731110483ull}}, {{1710769281753274ull, 14568464402570045915ull, 7262947140771045806ull, 4450431290913888104ull}}, {{16141970295296953460ull, 4493604233178890792ull, 4539341962981903629ull, 2781519556821180065ull}}, {{1730718795411640209ull, 10228691309901001395ull, 10285863472154767440ull, 3476899446026475081ull}}, {{15998456549546713974ull, 12785864137376251743ull, 17469015358620847204ull, 4346124307533093851ull}}, {{16916564371107778090ull, 17214537122714933147ull, 8612291589924335550ull, 2716327692208183657ull}}, {{16534019445457334708ull, 12294799366538890626ull, 15377050505832807342ull, 3395409615260229571ull}}, {{11444152269966892577ull, 6145127171318837475ull, 14609627113863621274ull, 4244262019075286964ull}}, {{4846752159515613909ull, 8452390500501661326ull, 18354388983019539104ull, 2652663761922054352ull}}, {{15281812236249293194ull, 10565488125627076657ull, 4496242155064872264ull, 3315829702402567941ull}}, {{5267207240029452780ull, 13206860157033845822ull, 10231988712258478234ull, 4144787128003209926ull}}, {{17127062580300571700ull, 12865973616573541542ull, 1783306926734160992ull, 2590491955002006204ull}}, {{12185456188520938817ull, 16082467020716926928ull, 2229133658417701240ull, 3238114943752507755ull}}, {{15231820235651173521ull, 1656339702186607044ull, 16621475128304290263ull, 4047643679690634693ull}}, {{296515610427207643ull, 7952741341507711259ull, 12694264964403875366ull, 2529777299806646683ull}}, {{14205702568316173265ull, 717554640029863265ull, 11256145187077456304ull, 3162221624758308354ull}}, {{3922070155113052869ull, 896943300037329082ull, 4846809446992044572ull, 3952777030947885443ull}}, {{7062979865373045947ull, 9783961599378106484ull, 723412895156333905ull, 2470485644342428402ull}}, {{8828724831716307434ull, 16841638017650021009ull, 10127638155800193189ull, 3088107055428035502ull}}, {{15647592058072772197ull, 7216989466780362549ull, 3436175657895465679ull, 3860133819285044378ull}}, {{12085588045509176575ull, 11428147444378808449ull, 6759295804612053953ull, 2412583637053152736ull}}, {{1271927001604307007ull, 450126250191346850ull, 8449119755765067442ull, 3015729546316440920ull}}, {{10813280788860159566ull, 9786029849593959370ull, 10561399694706334302ull, 3769661932895551150ull}}, {{11369986511464987633ull, 1504582637568836702ull, 1989188790764071035ull, 2356038708059719469ull}}, {{4989111102476458733ull, 15715786352243209590ull, 7098172006882476697ull, 2945048385074649336ull}}, {{15459760914950349224ull, 5809674885021848275ull, 8872715008603095872ull, 3681310481343311670ull}}, {{14713015125260548626ull, 7262093606277310344ull, 1867521723899094032ull, 4601638101679139588ull}}, {{9195634453287842892ull, 4538808503923318965ull, 10390573114291709578ull, 2876023813549462242ull}}, {{16106229085037191518ull, 14896882666758924514ull, 3764844356009861164ull, 3595029766936827803ull}}, {{10909414319441713590ull, 174359259739104027ull, 94369426584938552ull, 4493787208671034754ull}}, {{4512540940437377042ull, 108974537336940017ull, 4670666910042974499ull, 2808617005419396721ull}}, {{10252362193974109206ull, 13971276226953338733ull, 10450019655981106027ull, 3510771256774245901ull}}, {{17427138760895024412ull, 12852409265264285512ull, 17674210588403770438ull, 4388464070967807376ull}}, {{10891961725559390258ull, 3421069772362790541ull, 11046381617752356524ull, 2742790044354879610ull}}, {{18226638175376625726ull, 4276337215453488176ull, 4584604985335669847ull, 3428487555443599513ull}}, {{4336553645511230541ull, 733735500889472317ull, 10342442250096975213ull, 4285609444304499391ull}}, {{5016189037658213040ull, 2764427697269614150ull, 13381555433951691364ull, 2678505902690312119ull}}, {{15493608333927542108ull, 3455534621587017687ull, 12115258274012226301ull, 3348132378362890149ull}}, {{14755324398982039731ull, 8931104295411160013ull, 1309014787233119164ull, 4185165472953612687ull}}, {{11527920758577468784ull, 14805312221486750816ull, 7735663269661781333ull, 2615728420596007929ull}}, {{14409900948221835980ull, 4671582221576274808ull, 14281265105504614571ull, 3269660525745009911ull}}, {{18012376185277294975ull, 1227791758542955606ull, 13239895363453380310ull, 4087075657181262389ull}}, {{6646049097370921456ull, 14602427904371510966ull, 10580777611372056645ull, 2554422285738288993ull}}, {{17530933408568427627ull, 4417976825182224995ull, 17837658032642458711ull, 3193027857172861241ull}}, {{17301980742283146630ull, 910785013050393340ull, 8462014485520909677ull, 3991284821466076552ull}}, {{1590365927072190836ull, 2875083642370189790ull, 5288759053450568548ull, 2494553013416297845ull}}, {{11211329445695014353ull, 3593854552962737237ull, 11222634835240598589ull, 3118191266770372306ull}}, {{179103751836604229ull, 9104004209630809451ull, 4804921507195972428ull, 3897739083462965383ull}}, {{16252840909393735307ull, 14913374667874031714ull, 9920604969638564623ull, 2436086927164353364ull}}, {{11092679099887393326ull, 14030032316415151739ull, 12400756212048205779ull, 3045108658955441705ull}}, {{9254162856431853753ull, 12925854377091551770ull, 1665887209778093512ull, 3806385823694302132ull}}, {{10395537803697296500ull, 8078658985682219856ull, 10264551542966084253ull, 2378991139808938832ull}}, {{12994422254621620625ull, 14710009750530162724ull, 12830689428707605316ull, 2973738924761173540ull}}, {{16243027818277025781ull, 18387512188162703405ull, 16038361785884506645ull, 3717173655951466925ull}}, {{12457735395636835065ull, 13798038126815383580ull, 12329819125391510605ull, 2323233534969666828ull}}, {{15572169244546043832ull, 3412489603237065763ull, 15412273906739388257ull, 2904041918712083535ull}}, {{14853525537255166885ull, 8877298022473720108ull, 14653656364996847417ull, 3630052398390104419ull}}, {{120162847859406991ull, 15708308546519538040ull, 13705384437818671367ull, 4537565497987630524ull}}, {{75101779912129369ull, 16735221869215793131ull, 17789237310491445412ull, 2835978436242269077ull}}, {{13928935280172325423ull, 2472283262810189797ull, 8401488582832143054ull, 3544973045302836347ull}}, {{3576111044933243067ull, 12313726115367513055ull, 5890174710112790913ull, 4431216306628545434ull}}, {{9152598430724358773ull, 778549794463613803ull, 8293045212247882225ull, 2769510191642840896ull}}, {{6829062019978060562ull, 5584873261506905158ull, 10366306515309852781ull, 3461887739553551120ull}}, {{17759699561827351511ull, 11592777595311019351ull, 12957883144137315976ull, 4327359674441938900ull}}, {{18017341253783176550ull, 7245485997069387094ull, 17322049001940598293ull, 2704599796526211812ull}}, {{13298304530374194880ull, 13668543514764121772ull, 3205817178716196250ull, 3380749745657764766ull}}, {{16622880662967743600ull, 7862307356600376407ull, 13230643510250021121ull, 4225937182072205957ull}}, {{17306829441995921606ull, 16443157143943705014ull, 10574995203119957152ull, 2641210738795128723ull}}, {{12410164765640126199ull, 2107202356220079652ull, 8607057985472558537ull, 3301513423493910904ull}}, {{15512705957050157749ull, 7245688963702487469ull, 10758822481840698171ull, 4126891779367388630ull}}, {{12001284232370042545ull, 2222712593100360716ull, 2112578032723048453ull, 2579307362104617894ull}}, {{15001605290462553182ull, 7390076759802838799ull, 11864094577758586374ull, 3224134202630772367ull}}, {{14140320594650803573ull, 14223912898772691ull, 10218432203770845064ull, 4030167753288465459ull}}, {{6531857362443058281ull, 8889945561732932ull, 4080677118143084213ull, 2518854845805290912ull}}, {{8164821703053822851ull, 4622798450379554069ull, 5100846397678855266ull, 3148568557256613640ull}}, {{14817713147244666468ull, 15001870099829218394ull, 6376057997098569082ull, 3935710696570767050ull}}, {{13872756735455304447ull, 13987854830820649400ull, 8596722266613993580ull, 2459819185356729406ull}}, {{17340945919319130558ull, 17484818538525811750ull, 1522530796412716167ull, 3074773981695911758ull}}, {{12452810362294137390ull, 17244337154729876784ull, 11126535532370671017ull, 3843467477119889697ull}}, {{7783006476433835869ull, 3860181694065091134ull, 36555680090587530ull, 2402167173199931061ull}}, {{505386058687519028ull, 14048599154436139726ull, 4657380618540622316ull, 3002708966499913826ull}}, {{9855104610214174593ull, 17560748943045174657ull, 15045097810030553703ull, 3753386208124892282ull}}, {{17688655427452328881ull, 17892997117044316016ull, 14014872149696483968ull, 2345866380078057676ull}}, {{3664075210605859485ull, 3919502322595843405ull, 17518590187120604961ull, 2932332975097572095ull}}, {{9191780031684712260ull, 9511063921672192160ull, 17286551715473368297ull, 3665416218871965119ull}}, {{11489725039605890325ull, 16500515920517628104ull, 16996503625914322467ull, 4581770273589956399ull}}, {{7181078149753681453ull, 8006979441109823613ull, 17540343793837533398ull, 2863606420993722749ull}}, {{13588033705619489720ull, 785352264532503708ull, 8090371687014753036ull, 3579508026242153437ull}}, {{16985042132024362150ull, 981690330665629635ull, 14724650627195829199ull, 4474385032802691796ull}}, {{8309808323301532392ull, 7531085484307100378ull, 18426278678852169057ull, 2796490645501682372ull}}, {{1163888367272139682ull, 14025542873811263377ull, 4586104274855659705ull, 3495613306877102966ull}}, {{6066546477517562506ull, 3696870536981915509ull, 14956002380424350440ull, 4369516633596378707ull}}, {{6097434557662170519ull, 2310544085613697193ull, 7041658478551525073ull, 2730947895997736692ull}}, {{12233479215505101052ull, 7499866125444509395ull, 8802073098189406341ull, 3413684869997170865ull}}, {{10680163000953988411ull, 13986518675233024648ull, 15614277391164145830ull, 4267106087496463581ull}}, {{6675101875596242757ull, 4129888153593252501ull, 12064766378691285096ull, 2666941304685289738ull}}, {{12955563362922691350ull, 5162360191991565626ull, 5857585936509330562ull, 3333676630856612173ull}}, {{6971082166798588380ull, 15676322276844232841ull, 11933668439064051106ull, 4167095788570765216ull}}, {{15886141400317587497ull, 14409387441455033429ull, 7458542774415031941ull, 2604434867856728260ull}}, {{6022618695114820660ull, 4176676246536628075ull, 9323178468018789927ull, 3255543584820910325ull}}, {{2916587350466137921ull, 609159289743397190ull, 16265659103450875313ull, 4069429481026137906ull}}, {{15657925149323499913ull, 11909939602158093003ull, 14777722958084184974ull, 2543393425641336191ull}}, {{14960720418226986987ull, 5664052465842840446ull, 13860467679177843314ull, 3179241782051670239ull}}, {{9477528485928957925ull, 16303437619158326366ull, 12713898580544916238ull, 3974052227564587799ull}}, {{1311769285278210799ull, 5577962493546566075ull, 14863715640481654505ull, 2483782642227867374ull}}, {{15474769661879927211ull, 11584139135360595497ull, 9356272513747292323ull, 3104728302784834218ull}}, {{5508404022067745302ull, 9868487900773356468ull, 2471968605329339596ull, 3880910378481042773ull}}, {{12666124550647116622ull, 15391176974838123600ull, 3850823387544531199ull, 2425568986550651733ull}}, {{15832655688308895777ull, 14627285200120266596ull, 9425215252858051903ull, 3031961233188314666ull}}, {{1344075536676568105ull, 13672420481722945342ull, 2558147029217789071ull, 3789951541485393333ull}}, {{14675105265705018778ull, 15462791828717922694ull, 3904684902474812121ull, 2368719713428370833ull}}, {{9120509545276497664ull, 5493431730615239656ull, 9492542146520903056ull, 2960899641785463541ull}}, {{11400636931595622080ull, 6866789663269049570ull, 16477363701578516724ull, 3701124552231829426ull}}, {{11737084100674651704ull, 13515115576397931789ull, 14910038331913960856ull, 2313202845144893391ull}}, {{836297070561150918ull, 16893894470497414737ull, 14025861896465063166ull, 2891503556431116739ull}}, {{5657057356628826552ull, 11893996051266992613ull, 12920641352153941054ull, 3614379445538895924ull}}, {{11683007714213421094ull, 5644123027228964958ull, 16150801690192426318ull, 4517974306923619905ull}}, {{2690193802956000280ull, 17362634947300266811ull, 3176722028729184592ull, 2823733941827262441ull}}, {{17197800308977164061ull, 3256549610415781897ull, 8582588554338868645ull, 3529667427284078051ull}}, {{7662192330939291365ull, 8682373031447115276ull, 6116549674496197902ull, 4412084284105097564ull}}, {{14012242243691832911ull, 814797126227059143ull, 13046215583414899497ull, 2757552677565685977ull}}, {{12903616786187403235ull, 5630182426211211833ull, 2472711423986460659ull, 3446940846957107472ull}}, {{2294462927452090331ull, 2426042014336626888ull, 3090889279983075824ull, 4308676058696384340ull}}, {{1434039329657556457ull, 1516276258960391805ull, 11155177836844198198ull, 2692922536685240212ull}}, {{6404235180499333475ull, 11118717360555265564ull, 13943972296055247747ull, 3366153170856550265ull}}, {{8005293975624166844ull, 9286710682266694051ull, 3594907314786895972ull, 4207691463570687832ull}}, {{2697465725551410326ull, 15027566213271459590ull, 2246817071741809982ull, 2629807164731679895ull}}, {{12595204193794038715ull, 9561085729734548679ull, 16643579394959426190ull, 3287258955914599868ull}}, {{11132319223815160490ull, 2727985125313410041ull, 2357730169989731122ull, 4109073694893249836ull}}, {{40170487243393450ull, 6316676721748269180ull, 10696953393098357759ull, 2568171059308281147ull}}, {{50213109054241813ull, 3284159883757948571ull, 8759505722945559295ull, 3210213824135351434ull}}, {{13897824441599965978ull, 17940257909979599425ull, 1726010116827173310ull, 4012767280169189293ull}}, {{1768611248358896880ull, 6600975175309861737ull, 3384599332230677271ull, 2507979550105743308ull}}, {{6822450078876009004ull, 3639532950709939267ull, 4230749165288346589ull, 3134974437632179135ull}}, {{3916376580167623351ull, 9161102206814811988ull, 676750438183045332ull, 3918718047040223919ull}}, {{11671107399459540403ull, 14949060916114033300ull, 7340498051505485188ull, 2449198779400139949ull}}, {{14588884249324425503ull, 239582071432990009ull, 13787308582809244390ull, 3061498474250174936ull}}, {{4401047256373368167ull, 9522849626146013320ull, 17234135728511555487ull, 3826873092812718670ull}}, {{2750654535233355105ull, 12869310043982340181ull, 6159648811892334275ull, 2391795683007949169ull}}, {{8050004187469081785ull, 11474951536550537322ull, 12311247033292805748ull, 2989744603759936461ull}}, {{839133197481576423ull, 14343689420688171653ull, 1554000736333843473ull, 3737180754699920577ull}}, {{2830301257639679216ull, 2047276860289025427ull, 12500465506277121931ull, 2335737971687450360ull}}, {{17372934627331762732ull, 16394154130643445495ull, 15625581882846402413ull, 2919672464609312950ull}}, {{17104482265737315511ull, 6657634608022143157ull, 10308605316703227209ull, 3649590580761641188ull}}, {{7545544776889480677ull, 12933729278455066851ull, 12885756645879034011ull, 4561988225952051485ull}}, {{2410122476342231471ull, 5777737789820722830ull, 10359440912888090209ull, 2851242641220032178ull}}, {{12236025132282565147ull, 11833858255703291441ull, 3725929104255336953ull, 3564053301525040223ull}}, {{1459973360071042721ull, 957264764346950590ull, 45725361891783288ull, 4455066626906300279ull}}, {{14747541405326565413ull, 598290477716844118ull, 6946107378823446411ull, 2784416641816437674ull}}, {{9211054719803430958ull, 14582921152428218860ull, 17906006260384083821ull, 3480520802270547092ull}}, {{11513818399754288698ull, 4393593385253109863ull, 3935763751770553161ull, 4350651002838183866ull}}, {{14113665527487512292ull, 14275210911851663424ull, 7071538363283983629ull, 2719156876773864916ull}}, {{17642081909359390365ull, 4008955584532415568ull, 8839422954104979537ull, 3398946095967331145ull}}, {{3605858312989686340ull, 9622880499092907365ull, 15660964711058612325ull, 4248682619959163931ull}}, {{4559504454832247915ull, 8320143321146761055ull, 7482259935197938751ull, 2655426637474477457ull}}, {{1087694550112921990ull, 5788493133006063415ull, 13964510937424811343ull, 3319283296843096821ull}}, {{15194676242923316199ull, 2623930397830191364ull, 3620580616498850467ull, 4149104121053871027ull}}, {{273300614972296816ull, 17780857563139727267ull, 18403763949807639205ull, 2593190075658669391ull}}, {{14176683823997534732ull, 8391013898642495371ull, 18393018918832161103ull, 3241487594573336739ull}}, {{13109168761569530511ull, 5877081354875731310ull, 18379587630112813475ull, 4051859493216670924ull}}, {{3581544457553568666ull, 1367332837583638117ull, 2263870231965732614ull, 2532412183260419328ull}}, {{9088616590369348736ull, 10932538083834323454ull, 2829837789957165767ull, 3165515229075524160ull}}, {{2137398701106910112ull, 9053986586365516414ull, 3537297237446457209ull, 3956894036344405200ull}}, {{15170932243473982532ull, 17187956662546917518ull, 2210810773404035755ull, 2473058772715253250ull}}, {{9740293267487702357ull, 16873259809756258994ull, 11986885503609820502ull, 3091323465894066562ull}}, {{2951994547504852138ull, 11868202725340547935ull, 5760234842657499820ull, 3864154332367583203ull}}, {{8762525619831614443ull, 16640998740192618267ull, 1294303767447243435ull, 2415096457729739502ull}}, {{6341471006362130149ull, 16189562406813384930ull, 10841251746163830102ull, 3018870572162174377ull}}, {{17150210794807438494ull, 11013580971661955354ull, 18163250701132175532ull, 3773588215202717971ull}}, {{15330567765182036963ull, 16106860144143497904ull, 9046188678993915755ull, 2358492634501698732ull}}, {{716465632767994588ull, 15521889161751984477ull, 11307735848742394694ull, 2948115793127123415ull}}, {{5507268059387381139ull, 10178989415335204788ull, 9522983792500605464ull, 3685144741408904269ull}}, {{6884085074234226423ull, 12723736769169005985ull, 16515415759053144734ull, 4606430926761130336ull}}, {{15831768217464861275ull, 3340649462303240836ull, 10322134849408215459ull, 2879019329225706460ull}}, {{1342966198121524977ull, 18010869883161214758ull, 12902668561760269323ull, 3598774161532133075ull}}, {{10902079784506682029ull, 17901901335524130543ull, 11516649683772948750ull, 4498467701915166344ull}}, {{13731328892957758125ull, 6577002316275193685ull, 7197906052358092969ull, 2811542313696978965ull}}, {{3329103060915033944ull, 12832938913771380011ull, 13609068583875004115ull, 3514427892121223706ull}}, {{17996436881425956141ull, 11429487623786837109ull, 7787963692988979336ull, 4393034865151529633ull}}, {{13553616060104916541ull, 7143429764866773193ull, 16396692354186581845ull, 2745646790719706020ull}}, {{3106962019848981964ull, 13540973224510854396ull, 2049121369023675690ull, 3432058488399632526ull}}, {{3883702524811227454ull, 7702844493783792187ull, 11784773748134370421ull, 4290073110499540657ull}}, {{121471068793323207ull, 7120120817828564069ull, 447954564942899657ull, 2681295694062212911ull}}, {{4763524854419041913ull, 13511837040713092990ull, 14395001261460788283ull, 3351619617577766138ull}}, {{15177778104878578199ull, 12278110282463978333ull, 8770379539971209546ull, 4189524521972207673ull}}, {{11791954324762805326ull, 12285504944967374362ull, 17010702258550475726ull, 2618452826232629795ull}}, {{5516570869098730850ull, 6133509144354442145ull, 16651691804760706754ull, 3273066032790787244ull}}, {{11507399604800801466ull, 16890258467297828489ull, 2367870682241331826ull, 4091332540988484056ull}}, {{274595725359419061ull, 15168097560488530710ull, 1479919176400832391ull, 2557082838117802535ull}}, {{9566616693554049634ull, 14348435932183275483ull, 15684957025783204201ull, 3196353547647253168ull}}, {{7346584848515174138ull, 4100486859946930642ull, 1159452208519453636ull, 3995441934559066461ull}}, {{9203301548749371740ull, 11786176324321607459ull, 3030500639538352474ull, 2497151209099416538ull}}, {{6892440917509326771ull, 5509348368547233516ull, 13011497836277716401ull, 3121439011374270672ull}}, {{8615551146886658464ull, 11498371479111429799ull, 16264372295347145501ull, 3901798764217838340ull}}, {{12302248494445243396ull, 9492325183658337576ull, 941860647737190130ull, 2438624227636148963ull}}, {{15377810618056554245ull, 2642034442718146162ull, 15012383864953651375ull, 3048280284545186203ull}}, {{9998891235715916998ull, 17137601108679846415ull, 14153793812764676314ull, 3810350355681482754ull}}, {{13166836049963529980ull, 15322686711352291913ull, 13457807151405310600ull, 2381468972300926721ull}}, {{2623487007172248763ull, 706614315480813276ull, 2987200883974474539ull, 2976836215376158402ull}}, {{3279358758965310954ull, 14718325949633180307ull, 12957373141822868981ull, 3721045269220198002ull}}, {{18190500288849177010ull, 11504796727734431643ull, 12710044232066681017ull, 2325653293262623751ull}}, {{18126439342634083359ull, 545937854385875842ull, 11275869271655963368ull, 2907066616578279689ull}}, {{13434677141437828390ull, 682422317982344803ull, 259778534287790498ull, 3633833270722849612ull}}, {{12181660408369897584ull, 10076399934332706812ull, 324723167859738122ull, 4542291588403562015ull}}, {{16836909792085961798ull, 10909435977385329661ull, 7120481007553418182ull, 2838932242752226259ull}}, {{7211079184825288535ull, 4413422934876886269ull, 4288915241014384824ull, 3548665303440282824ull}}, {{13625534999458998573ull, 5516778668596107836ull, 5361144051267981030ull, 4435831629300353530ull}}, {{17739331411516649916ull, 17283044723154731109ull, 7962401050469876047ull, 2772394768312720956ull}}, {{8339106209113648683ull, 16992119885516025983ull, 9953001313087345059ull, 3465493460390901195ull}}, {{5812196742964672950ull, 16628463838467644575ull, 7829565622931793420ull, 4331866825488626494ull}}, {{10550151991994002450ull, 1169417862187502051ull, 281792495904982984ull, 2707416765930391559ull}}, {{8576003971565115158ull, 1461772327734377564ull, 14187298675163392442ull, 3384270957412989448ull}}, {{10720004964456393948ull, 11050587446522747763ull, 17734123343954240552ull, 4230338696766236810ull}}, {{4394160093571552266ull, 6906617154076717352ull, 15695513108398788249ull, 2643961685478898006ull}}, {{5492700116964440332ull, 13244957461023284594ull, 10396019348643709503ull, 3304952106848622508ull}}, {{16089247183060326223ull, 11944510807851717838ull, 12995024185804636879ull, 4131190133560778135ull}}, {{5444093470985315985ull, 14382848282548405505ull, 15039419143768979905ull, 2581993833475486334ull}}, {{11416802857159032886ull, 4143502297903343169ull, 9575901892856449074ull, 3227492291844357918ull}}, {{435945516166627395ull, 14402749909233954770ull, 2746505329215785534ull, 4034365364805447398ull}}, {{4884151966031530026ull, 4390032674843833827ull, 15551623886042029671ull, 2521478353003404623ull}}, {{1493503939112024628ull, 875854825127404380ull, 14827843839125149185ull, 3151847941254255779ull}}, {{1866879923890030785ull, 5706504549836643379ull, 13923118780479048577ull, 3939809926567819724ull}}, {{17307701016927126905ull, 15095780389716371871ull, 17925321274654181168ull, 2462381204104887327ull}}, {{17022940252731520727ull, 422981413435913223ull, 17794965574890338557ull, 3077976505131109159ull}}, {{16666989297487013005ull, 5140412785222279433ull, 17632020950185535292ull, 3847470631413886449ull}}, {{3499339283288301272ull, 12436130027618700454ull, 4102484066224877701ull, 2404669144633679031ull}}, {{13597546140965152398ull, 1710104479241211855ull, 516419064353709223ull, 3005836430792098789ull}}, {{12385246657779052593ull, 15972688654333678531ull, 5257209848869524432ull, 3757295538490123486ull}}, {{5434936151898213919ull, 9982930408958549082ull, 17120814210825616482ull, 2348309711556327178ull}}, {{16017042226727543207ull, 3255290974343410544ull, 12177645726677244795ull, 2935387139445408973ull}}, {{1574558709699877392ull, 17904171773211426893ull, 1386999103064392281ull, 3669233924306761217ull}}, {{6579884405552234644ull, 8545156661232119904ull, 6345434897257878256ull, 4586542405383451521ull}}, {{4112427753470146653ull, 5340722913270074940ull, 15495111856854643670ull, 2866589003364657200ull}}, {{5140534691837683316ull, 15899275678442369483ull, 922145747358752971ull, 3583236254205821501ull}}, {{1813982346369716241ull, 15262408579625573950ull, 5764368202625829118ull, 4479045317757276876ull}}, {{14968797021763236363ull, 4927319343838595814ull, 12826102163495919007ull, 2799403323598298047ull}}, {{9487624240349269645ull, 1547463161370856864ull, 11420941685942510855ull, 3499254154497872559ull}}, {{11859530300436587056ull, 15769387006995734792ull, 9664491089000750664ull, 4374067693122340699ull}}, {{7412206437772866910ull, 9855866879372334245ull, 3734463921411775213ull, 2733792308201462937ull}}, {{13876944065643471542ull, 16931519617642805710ull, 9279765920192106920ull, 3417240385251828671ull}}, {{8122808045199563619ull, 2717655448343955522ull, 6988021381812745747ull, 4271550481564785839ull}}, {{9688441046677115166ull, 17839435719710829865ull, 11285042391274047947ull, 2669719050977991149ull}}, {{16722237326773781862ull, 17687608631211149427ull, 271244933810396222ull, 3337148813722488937ull}}, {{16291110640039839423ull, 12886138752159160976ull, 4950742185690383182ull, 4171436017153111171ull}}, {{10181944150024899640ull, 3442150701672087706ull, 788370856842795537ull, 2607147510720694482ull}}, {{3504058150676348741ull, 8914374395517497537ull, 10208835607908270229ull, 3258934388400868102ull}}, {{8991758706772823831ull, 15754654012824259825ull, 3537672473030561978ull, 4073667985501085128ull}}, {{17149064237801484654ull, 14458344776442550294ull, 2211045295644101236ull, 2546042490938178205ull}}, {{12212958260397080010ull, 18072930970553187868ull, 7375492637982514449ull, 3182553113672722756ull}}, {{15266197825496350012ull, 8756105657909321123ull, 9219365797478143062ull, 3978191392090903445ull}}, {{7235530631721524806ull, 860880017765937798ull, 8067946632637533366ull, 2486369620056814653ull}}, {{18267785326506681815ull, 10299472059062198055ull, 14696619309224304611ull, 3107962025071018316ull}}, {{18223045639705964365ull, 8262654055400359665ull, 18370774136530380764ull, 3884952531338772895ull}}, {{4471874497175145872ull, 14387530821480000599ull, 18399262862972569833ull, 2428095332086733059ull}}, {{978157103041544436ull, 4149355471567837037ull, 18387392560288324388ull, 3035119165108416324ull}}, {{5834382397229318449ull, 5186694339459796296ull, 4537496626650853869ull, 3793898956385520406ull}}, {{3646488998268324031ull, 5547526971376066637ull, 16670993446938947380ull, 2371186847740950253ull}}, {{9169797266262792942ull, 6934408714220083296ull, 7003683753391520513ull, 2963983559676187817ull}}, {{11462246582828491178ull, 13279696911202492024ull, 13366290710166788545ull, 3704979449595234771ull}}, {{7163904114267806986ull, 1382281541860475659ull, 6048088684640548889ull, 2315612155997021732ull}}, {{4343194124407370829ull, 6339537945752982478ull, 7560110855800686111ull, 2894515194996277165ull}}, {{14652364692363989344ull, 3312736413763840193ull, 14061824588178245543ull, 3618143993745346456ull}}, {{4480397810172822968ull, 17975978572486963954ull, 17577280735222806928ull, 4522679992181683070ull}}, {{7411934649785402259ull, 11234986607804352471ull, 6374114441086866426ull, 2826674995113551919ull}}, {{4653232293804364919ull, 4820361222900664781ull, 3355957032931195129ull, 3533343743891939899ull}}, {{10428226385682844053ull, 10637137547053218880ull, 18030004346446157623ull, 4416679679864924873ull}}, {{6517641491051777533ull, 13565739994549343656ull, 4351223688887766658ull, 2760424799915578046ull}}, {{8147051863814721917ull, 7733802956331903762ull, 14662401647964484131ull, 3450530999894472557ull}}, {{960442792913626588ull, 5055567676987491799ull, 4492944004673441452ull, 4313163749868090697ull}}, {{7517805773212098474ull, 12383101834971958182ull, 14337305048989370667ull, 2695727343667556685ull}}, {{173885179660347284ull, 10867191275287559824ull, 4086573255954549622ull, 3369659179584445857ull}}, {{217356474575434105ull, 4360617057254673972ull, 9719902588370574932ull, 4212073974480557321ull}}, {{9359219833464422124ull, 11948757697638947040ull, 17604154163800079092ull, 2632546234050348325ull}}, {{11699024791830527654ull, 14935947122048683800ull, 8170134649467935153ull, 3290682792562935407ull}}, {{14623780989788159568ull, 4834875847278691038ull, 5600982293407531038ull, 4113353490703669259ull}}, {{4528177100190211826ull, 16856855459831345611ull, 1194770924166012946ull, 2570845931689793287ull}}, {{1048535356810376878ull, 11847697287934406206ull, 15328521710489679895ull, 3213557414612241608ull}}, {{10534041232867746906ull, 10197935591490619853ull, 713908064402548253ull, 4016946768265302011ull}}, {{8889618779756035768ull, 8679552753895331360ull, 16587093604747450322ull, 2510591730165813756ull}}, {{11112023474695044710ull, 1626068905514388392ull, 2287122932224761287ull, 3138239662707267196ull}}, {{13890029343368805888ull, 15867644187175149202ull, 2858903665280951608ull, 3922799578384083995ull}}, {{13292954358032891584ull, 9917277616984468251ull, 17927715855296452419ull, 2451749736490052496ull}}, {{12004506929113726576ull, 7784911002803197410ull, 3962900745411013908ull, 3064687170612565621ull}}, {{5782261624537382412ull, 9731138753503996763ull, 9565311950191155289ull, 3830858963265707026ull}}, {{1308070506122170056ull, 17611176767008467737ull, 10590005987296859959ull, 2394286852041066891ull}}, {{6246774151080100473ull, 17402284940333196767ull, 8625821465693687045ull, 2992858565051333614ull}}, {{3196781670422737688ull, 7917798120134332247ull, 1558904795262332999ull, 3741073206314167018ull}}, {{8915517571655292911ull, 11866152852725039510ull, 5586001515466346028ull, 2338170753946354386ull}}, {{1921024927714340331ull, 14832691065906299388ull, 16205873931187708343ull, 2922713442432942982ull}}, {{2401281159642925413ull, 13929177813955486331ull, 11033970377129859621ull, 3653391803041178728ull}}, {{16836659504835820478ull, 3576414212162194201ull, 13792462971412324527ull, 4566739753801473410ull}}, {{3605383162881305943ull, 9152787910242453232ull, 13231975375560090733ull, 2854212346125920881ull}}, {{4506728953601632429ull, 16052670906230454444ull, 2704911164167949704ull, 3567765432657401102ull}}, {{5633411192002040536ull, 1619094559078516439ull, 12604510992064712939ull, 4459706790821751377ull}}, {{10438411022642357191ull, 17152835163919930438ull, 960290342399363730ull, 2787316744263594611ull}}, {{3824641741448170681ull, 12217671918045137240ull, 15035420983281368375ull, 3484145930329493263ull}}, {{4780802176810213351ull, 10660403879129033646ull, 14182590210674322565ull, 4355182412911866579ull}}, {{16823059415788547056ull, 8968595433669339980ull, 6558275872457757651ull, 2721989008069916612ull}}, {{2582080196026132204ull, 6599058273659287072ull, 8197844840572197064ull, 3402486260087395765ull}}, {{3227600245032665255ull, 8248822842074108840ull, 14858992069142634234ull, 4253107825109244706ull}}, {{2017250153145415785ull, 9767200294723705929ull, 13898556061641534300ull, 2658192390693277941ull}}, {{7133248709859157635ull, 12209000368404632411ull, 3538137021769754163ull, 3322740488366597427ull}}, {{4304874868896559139ull, 10649564442078402610ull, 18257729332494356416ull, 4153425610458246783ull}}, {{7302232811487737366ull, 6655977776299001631ull, 18328609860450054616ull, 2595891006536404239ull}}, {{4516104995932283804ull, 8319972220373752039ull, 18299076307135180366ull, 3244863758170505299ull}}, {{1033445226487966851ull, 1176593238612414241ull, 18262159365491587554ull, 4056079697713131624ull}}, {{12175118312623449042ull, 5347056792560146804ull, 11413849603432242221ull, 2535049811070707265ull}}, {{15218897890779311302ull, 11295507009127571409ull, 432253949008139064ull, 3168812263838384082ull}}, {{5188564308191975416ull, 14119383761409464262ull, 9763689473114949638ull, 3961015329797980102ull}}, {{17077910747902148347ull, 4212928832453527259ull, 1490619902269455620ull, 2475634581123737564ull}}, {{16735702416450297529ull, 5266161040566909074ull, 1863274877836819525ull, 3094543226404671955ull}}, {{11696255983708096104ull, 11194387319136024247ull, 16164151652578188118ull, 3868179033005839943ull}}, {{14227689017458641921ull, 2384806056032627250ull, 17020123810502449430ull, 2417611895628649964ull}}, {{8561239234968526593ull, 12204379606895559871ull, 2828410689418510171ull, 3022014869535812456ull}}, {{6089863025283270337ull, 10643788490192061935ull, 3535513361773137714ull, 3777518586919765570ull}}, {{10723693418443125817ull, 11264053824797426613ull, 6821381869535598975ull, 2360949116824853481ull}}, {{18016302791481295175ull, 9468381262569395362ull, 13138413355346886623ull, 2951186396031066851ull}}, {{13297006452496843161ull, 7223790559784356299ull, 11811330675756220375ull, 3688982995038833564ull}}, {{12009572047193666047ull, 4418052181303057470ull, 14764163344695275469ull, 4611228743798541955ull}}, {{2894296511068653375ull, 5067125622528104871ull, 6921759081220853216ull, 2882017964874088722ull}}, {{17452928694117980431ull, 6333907028160131088ull, 17875570888380842328ull, 3602522456092610902ull}}, {{3369416793937923923ull, 7917383785200163861ull, 13121091573621277102ull, 4503153070115763628ull}}, {{4411728505424896404ull, 336678847322714509ull, 17424054270368073997ull, 2814470668822352267ull}}, {{10126346650208508409ull, 5032534577580781040ull, 17168381819532704592ull, 3518088336027940334ull}}, {{12657933312760635511ull, 6290668221975976300ull, 12237105237561104932ull, 4397610420034925418ull}}, {{17134580357330173003ull, 13155039675589760995ull, 12259876791903078486ull, 2748506512521828386ull}}, {{16806539428235328349ull, 7220427557632425436ull, 6101473953024072300ull, 3435633140652285483ull}}, {{2561430211584608820ull, 9025534447040531796ull, 3015156422852702471ull, 4294541425815356854ull}}, {{10824265919095156321ull, 12558488057041414228ull, 15719530819565102756ull, 2684088391134598033ull}}, {{13530332398868945401ull, 15698110071301767785ull, 5814355469174214733ull, 3355110488918247542ull}}, {{3077857443304018039ull, 5787579533845046020ull, 16491316373322544225ull, 4193888111147809427ull}}, {{11147032938919787083ull, 15146452254721623522ull, 8001229724112896188ull, 2621180069467380892ull}}, {{4710419136794958045ull, 486321244692477787ull, 10001537155141120236ull, 3276475086834226115ull}}, {{1276337902566309652ull, 607901555865597234ull, 7890235425499012391ull, 4095593858542782644ull}}, {{5409397207531331437ull, 7297467500057080127ull, 14154769177791658552ull, 2559746161589239152ull}}, {{2150060490986776392ull, 9121834375071350159ull, 17693461472239573190ull, 3199682701986548940ull}}, {{16522633669015634202ull, 2178920931984411890ull, 3670082766589914872ull, 3999603377483186176ull}}, {{14938332061562159280ull, 1361825582490257431ull, 2293801729118696795ull, 2499752110926991360ull}}, {{14061229058525311196ull, 15537340033394985501ull, 2867252161398370993ull, 3124690138658739200ull}}, {{3741478267874475283ull, 5586616986461568165ull, 3584065201747963742ull, 3905862673323424000ull}}, {{4644266926635241004ull, 17326693671820643815ull, 2240040751092477338ull, 2441164170827140000ull}}, {{1193647639866663351ull, 12434995052921028961ull, 2800050938865596673ull, 3051455213533925000ull}}, {{6103745568260717093ull, 1708685760869122489ull, 3500063673581995842ull, 3814319016917406250ull}}, {{15344056026231417943ull, 5679614618970589459ull, 6799225814416135305ull, 2383949385573378906ull}}, {{14568384014361884525ull, 11711204292140624728ull, 17722404304874944939ull, 2979936731966723632ull}}, {{18210480017952355656ull, 10027319346748393006ull, 3706261307384129558ull, 3724920914958404541ull}}, {{6769863992792834381ull, 1655388573290357725ull, 4622256326328774926ull, 2328075571849002838ull}}, {{13074016009418430880ull, 11292607753467722964ull, 15001192444765744465ull, 2910094464811253547ull}}, {{16342520011773038600ull, 280701636552489993ull, 14139804537529792678ull, 3637618081014066934ull}}, {{6593091959434134538ull, 9574249082545388300ull, 8451383635057465039ull, 4547022601267583668ull}}, {{13344054511501109895ull, 12901434704231949543ull, 14505486808765691457ull, 2841889125792239792ull}}, {{12068382120948999464ull, 2291735325007773217ull, 18131858510957114322ull, 3552361407240299740ull}}, {{1250419595904085618ull, 12088041193114492330ull, 4218079064986841286ull, 4440451759050374676ull}}, {{5393198265867441415ull, 2943339727269169802ull, 11859671452471551612ull, 2775282349406484172ull}}, {{15964869869189077577ull, 3679174659086462252ull, 14824589315589439515ull, 3469102936758105215ull}}, {{1509343262776795355ull, 18434026379140241528ull, 13919050626059411489ull, 4336378670947631519ull}}, {{943339539235497097ull, 4603737459321569099ull, 15616935668928214037ull, 2710236669342269699ull}}, {{15014232479326535083ull, 10366357842579349277ull, 14909483567732879642ull, 3387795836677837124ull}}, {{4932732543876005142ull, 3734575266369410789ull, 190110385956547937ull, 4234744795847296406ull}}, {{5388800849136197166ull, 13863324587549351503ull, 13953877046505006172ull, 2646715497404560253ull}}, {{2124315042992858553ull, 17329155734436689379ull, 3607288252849094003ull, 3308394371755700317ull}}, {{16490451859023236904ull, 17049758649618473819ull, 9120796334488755408ull, 4135492964694625396ull}}, {{8000689402675829113ull, 10656099156011546137ull, 14923869745910247938ull, 2584683102934140872ull}}, {{14612547771772174295ull, 4096751908159656863ull, 208093108678258307ull, 3230853878667676091ull}}, {{13653998696287829965ull, 509253866772183175ull, 14095174441129986596ull, 4038567348334595113ull}}, {{15451278212820975584ull, 9541655703587390292ull, 1891954998065159766ull, 2524104592709121946ull}}, {{867353692316667864ull, 2703697592629462058ull, 11588315784436225516ull, 3155130740886402432ull}}, {{10307564152250610638ull, 3379621990786827572ull, 14485394730545281895ull, 3943913426108003040ull}}, {{15665599632011407457ull, 9029792771882849088ull, 9053371706590801184ull, 2464945891317501900ull}}, {{1135255466304707705ull, 11287240964853561361ull, 11316714633238501480ull, 3081182364146877375ull}}, {{6030755351308272535ull, 14109051206066951701ull, 9534207273120738946ull, 3851477955183596719ull}}, {{6075065103781364287ull, 13429843022219232717ull, 12876408573341543697ull, 2407173721989747949ull}}, {{12205517398154093262ull, 2952245722491877184ull, 2260452661394765910ull, 3008967152487184937ull}}, {{15256896747692616578ull, 12913679189969622288ull, 7437251845170845291ull, 3761208940608981171ull}}, {{9535560467307885361ull, 5765206484517319978ull, 2342439394018084355ull, 2350755587880613232ull}}, {{2696078547280080893ull, 2594822087219262069ull, 2928049242522605444ull, 2938444484850766540ull}}, {{7981784202527489021ull, 3243527609024077586ull, 3660061553153256805ull, 3673055606063458175ull}}, {{753858216304585468ull, 8666095529707484887ull, 18410134996723734718ull, 4591319507579322718ull}}, {{7388690412831447773ull, 804623687639790150ull, 6894648354524946295ull, 2869574692237076699ull}}, {{12490979184533909ull, 14840837664831901400ull, 4006624424728794964ull, 3586968365296345874ull}}, {{15613723980667386ull, 104303007330325134ull, 14231652567765769514ull, 4483710456620432342ull}}, {{13844816632770080828ull, 4676875398008841112ull, 4283096836426218042ull, 2802319035387770214ull}}, {{17306020790962601035ull, 15069466284365827198ull, 14577243082387548360ull, 3502898794234712767ull}}, {{12409153951848475486ull, 390088781747732382ull, 13609867834557047547ull, 4378623492793390959ull}}, {{3144035201477909275ull, 16384706553088190403ull, 15423696424239236572ull, 2736639682995869349ull}}, {{17765102057129550305ull, 2034139117650686387ull, 5444562475016882004ull, 3420799603744836687ull}}, {{17594691552984549978ull, 2542673897063357984ull, 2194017075343714601ull, 4275999504681045859ull}}, {{10996682220615343736ull, 13118386231733068500ull, 17512161736585679289ull, 2672499690425653661ull}}, {{13745852775769179670ull, 2562924734384171913ull, 8055144115449935400ull, 3340624613032067077ull}}, {{3347257914429310876ull, 3203655917980214892ull, 14680616162739807154ull, 4175780766290083846ull}}, {{11315408233373095105ull, 6613970967165022211ull, 4563699083284991567ull, 2609862978931302404ull}}, {{9532574273288980978ull, 3655777690528889860ull, 5704623854106239459ull, 3262328723664128005ull}}, {{11915717841611226222ull, 18404780168443276037ull, 11742465836060187227ull, 4077910904580160006ull}}, {{9753166660220710341ull, 9197144596063353571ull, 2727355129110229113ull, 2548694315362600004ull}}, {{7579772306848500022ull, 16108116763506579868ull, 3409193911387786391ull, 3185867894203250005ull}}, {{9474715383560625027ull, 15523459935955836931ull, 8873178407662120893ull, 3982334867754062506ull}}, {{3615854105511696690ull, 12008005469186092034ull, 10157422523216213462ull, 2488959292346289066ull}}, {{13743189668744396671ull, 5786634799627839234ull, 3473406117165491020ull, 3111199115432861333ull}}, {{7955615049075720030ull, 7233293499534799043ull, 8953443664884251679ull, 3888998894291076666ull}}, {{2666416396458631067ull, 11438337464850331258ull, 10207588308980045203ull, 2430624308931922916ull}}, {{12556392532428064642ull, 9686235812635526168ull, 12759485386225056504ull, 3038280386164903645ull}}, {{15695490665535080802ull, 12107794765794407710ull, 2114298677499156918ull, 3797850482706129557ull}}, {{5197995647532037597ull, 2955685710194116915ull, 3627279682650667026ull, 2373656551691330973ull}}, {{1885808540987659093ull, 12917979174597421952ull, 9145785621740721686ull, 2967070689614163716ull}}, {{2357260676234573866ull, 6924101931392001632ull, 11432232027175902108ull, 3708838362017704645ull}}, {{1473287922646608666ull, 13550935743974776828ull, 9450988026198632769ull, 2318023976261065403ull}}, {{1841609903308260833ull, 3103611624686307323ull, 7202049014320903058ull, 2897529970326331754ull}}, {{16137070434417489753ull, 13102886567712659961ull, 18225933304755904630ull, 3621912462907914692ull}}, {{6336279987739698479ull, 7155236172786049144ull, 4335672557235329172ull, 4527390578634893366ull}}, {{3960174992337311550ull, 13695394644846056523ull, 16544853403554244444ull, 2829619111646808353ull}}, {{338532721994251533ull, 17119243306057570654ull, 6846008699160641843ull, 3537023889558510442ull}}, {{9646537939347590224ull, 16787368114144575413ull, 17780882910805578112ull, 4421279861948138052ull}}, {{8334929221305937842ull, 10492105071340359633ull, 1889679782398710512ull, 2763299913717586283ull}}, {{15030347545059810206ull, 13115131339175449541ull, 16197157783280551852ull, 3454124892146982853ull}}, {{4952876376042599046ull, 16393914173969311927ull, 6411389173818526103ull, 4317656115183728567ull}}, {{10013076762667706260ull, 17163725386371901810ull, 10924647261277660670ull, 2698535071989830354ull}}, {{3292973916479857017ull, 12231284696110101455ull, 4432437039742300030ull, 3373168839987287943ull}}, {{17951275450881984983ull, 6065733833282851010ull, 928860281250487134ull, 4216461049984109929ull}}, {{15831233175228628518ull, 17626141701083945593ull, 12109752721850024218ull, 2635288156240068705ull}}, {{5953983413753621936ull, 12809305089500156184ull, 1302132847030366561ull, 3294110195300085882ull}}, {{7442479267192027420ull, 2176573306593031518ull, 10851038095642734010ull, 4117637744125107352ull}}, {{39863523567629234ull, 5972044335048032603ull, 6781898809776708756ull, 2573523590078192095ull}}, {{13884887459741700254ull, 7465055418810040753ull, 3865687493793498041ull, 3216904487597740119ull}}, {{3521051269394961605ull, 13943005291939938846ull, 220423348814484647ull, 4021130609497175149ull}}, {{16035715098654014715ull, 15631907335103543634ull, 2443607602222746856ull, 2513206630935734468ull}}, {{10821271836462742586ull, 1093140095169877927ull, 3054509502778433571ull, 3141508288669668085ull}}, {{8914903777151040329ull, 15201483174244511121ull, 8429822896900429867ull, 3926885360837085106ull}}, {{17101029906787869966ull, 7195083974689125498ull, 9880325328990156571ull, 2454303350523178191ull}}, {{12152915346630061649ull, 4382168949934018969ull, 7738720642810307810ull, 3067879188153972739ull}}, {{1356086128005413349ull, 14701083224272299520ull, 5061714785085496858ull, 3834848985192465924ull}}, {{847553830003383343ull, 13799863033597575104ull, 12386943777533211344ull, 2396780615745291202ull}}, {{1059442287504229179ull, 17249828791996968880ull, 6260307685061738372ull, 2995975769681614003ull}}, {{1324302859380286474ull, 3115541916286659484ull, 3213698587899785062ull, 3744969712102017504ull}}, {{10051061323967454854ull, 15782271752961325889ull, 2008561617437365663ull, 2340606070063760940ull}}, {{17175512673386706472ull, 15116153672774269457ull, 2510702021796707079ull, 2925757587579701175ull}}, {{7634332786451219377ull, 14283506072540448918ull, 16973435582528047561ull, 3657196984474626468ull}}, {{319543946209248414ull, 4019324535393397436ull, 2770050404450507836ull, 4571496230593283086ull}}, {{9423087003235556067ull, 11735449871475649205ull, 15566339558063731109ull, 2857185144120801928ull}}, {{16390544772471832987ull, 834254284062397794ull, 1011180373870112271ull, 3571481430151002411ull}}, {{11264808928735015426ull, 14877875910360160955ull, 15099033522619804050ull, 4464351787688753013ull}}, {{4734662571245690689ull, 13910358462402488501ull, 11742738960851071483ull, 2790219867305470633ull}}, {{10530014232484501266ull, 12776262059575722722ull, 843365645781675642ull, 3487774834131838292ull}}, {{3939145753750850774ull, 6746955537614877595ull, 1054207057227094553ull, 4359718542664797865ull}}, {{156123086880587782ull, 15746062257077768257ull, 12188094456835403855ull, 2724824089165498665ull}}, {{4806839877028122631ull, 15070891802919822417ull, 1400060015762091107ull, 3406030111456873332ull}}, {{10620235864712541193ull, 14226928735222390117ull, 1750075019702613884ull, 4257537639321091665ull}}, {{8943490424659032198ull, 18115202496368769631ull, 12623011933382603437ull, 2660961024575682290ull}}, {{6567677012396402343ull, 8808945065178798327ull, 6555392879873478489ull, 3326201280719602863ull}}, {{3597910247068115025ull, 15622867349900885813ull, 3582555081414460207ull, 4157751600899503579ull}}, {{4554536913631265843ull, 16681821121329135489ull, 18379997990379895293ull, 2598594750562189736ull}}, {{10304857160466470207ull, 7017218346379255649ull, 4528253414265317501ull, 3248243438202737171ull}}, {{17492757469010475663ull, 13383208951401457465ull, 1048630749404258972ull, 4060304297753421464ull}}, {{4015444390490465433ull, 17587877631480686724ull, 655394218377661857ull, 2537690186095888415ull}}, {{5019305488113081792ull, 8149788984068694693ull, 14654300828254241034ull, 3172112732619860518ull}}, {{10885817878568740143ull, 963864193231092558ull, 9094503998463025485ull, 3965140915774825648ull}}, {{2191950155678074686ull, 2908258129983126801ull, 5684064999039390928ull, 2478213072359266030ull}}, {{7351623713024981261ull, 3635322662478908501ull, 16328453285654014468ull, 3097766340449082537ull}}, {{13801215659708614480ull, 4544153328098635626ull, 6575508551785354373ull, 3872207925561353172ull}}, {{13237445805745271954ull, 5145938839275341218ull, 13333064881720622291ull, 2420129953475845732ull}}, {{7323435220326814135ull, 1820737530666788619ull, 16666331102150777864ull, 3025162441844807165ull}}, {{4542608006981129764ull, 2275921913333485774ull, 6997855822406308618ull, 3781453052306008957ull}}, {{16674188059645369815ull, 6034137214260816512ull, 6679502898217636838ull, 2363408157691255598ull}}, {{2395991000847160653ull, 16766043554680796449ull, 17572750659626821855ull, 2954260197114069497ull}}, {{7606674769486338720ull, 16345868424923607657ull, 8130880269251363607ull, 3692825246392586872ull}}, {{16283386776997431460ull, 17133696793218336641ull, 5081800168282102254ull, 2308015778995366795ull}}, {{6519175415964625613ull, 12193748954668144994ull, 1740564191925239914ull, 2885019723744208494ull}}, {{17372341306810557824ull, 6018814156480405434ull, 11399077276761325701ull, 3606274654680260617ull}}, {{12492054596658421472ull, 12135203714027894697ull, 413788540669493414ull, 4507843318350325772ull}}, {{890005095270431564ull, 2972816302840046282ull, 9481989874773209192ull, 2817402073968953607ull}}, {{10335878405942815263ull, 3716020378550057852ull, 7240801325039123586ull, 3521752592461192009ull}}, {{12919848007428519078ull, 13868397510042348123ull, 13662687674726292386ull, 4402190740576490011ull}}, {{5769061995429130472ull, 13279434462203855481ull, 6233336787490238789ull, 2751369212860306257ull}}, {{11823013512713800994ull, 2764235022472655639ull, 12403357002790186391ull, 3439211516075382821ull}}, {{10167080872464863339ull, 17290351833372983261ull, 1669138198205569276ull, 4299014395094228527ull}}, {{8660268554504233539ull, 1583097859003338730ull, 7960740401519562654ull, 2686883996933892829ull}}, {{1601963656275516115ull, 11202244360608949221ull, 14562611520326841221ull, 3358604996167366036ull}}, {{6614140588771783048ull, 167747395479022814ull, 18203264400408551527ull, 4198256245209207545ull}}, {{17968895923264528117ull, 7022371149815471114ull, 4459511222614262848ull, 2623910153255754716ull}}, {{13237747867225884338ull, 8777963937269338893ull, 5574389028267828560ull, 3279887691569693395ull}}, {{2712126778750191711ull, 10972454921586673617ull, 2356300266907397796ull, 4099859614462116744ull}}, {{13224294282787339580ull, 16081156362846446818ull, 1472687666817123622ull, 2562412259038822965ull}}, {{7306995816629398666ull, 10878073416703282715ull, 6452545601948792432ull, 3203015323798528706ull}}, {{4522058752359360429ull, 13597591770879103394ull, 17289054039290766348ull, 4003769154748160882ull}}, {{7437972738651988172ull, 17721866893654215429ull, 15417344792984116871ull, 2502355721717600551ull}}, {{13909151941742373119ull, 17540647598640381382ull, 14659994972802758185ull, 3127944652147000689ull}}, {{8163067890323190591ull, 8090751443018313016ull, 4489935660721284020ull, 3909930815183750862ull}}, {{5101917431451994119ull, 14280091688741221443ull, 16641267843232966224ull, 2443706759489844288ull}}, {{1765710770887604745ull, 17850114610926526804ull, 2354840730331656164ull, 3054633449362305361ull}}, {{2207138463609505931ull, 3865899189948606889ull, 7555236931341958110ull, 3818291811702881701ull}}, {{12908676585824410967ull, 16251245049000043017ull, 7027866091302417770ull, 2386432382314301063ull}}, {{2300787676998349997ull, 11090684274395277964ull, 4173146595700634309ull, 2983040477892876329ull}}, {{2875984596247937496ull, 28297287711933743ull, 9828119263053180791ull, 3728800597366095411ull}}, {{8715019400296042791ull, 6935214832461040445ull, 3836731530194544042ull, 2330500373353809632ull}}, {{15505460268797441393ull, 17892390577431076364ull, 4795914412743180052ull, 2913125466692262040ull}}, {{935081262287250125ull, 3918744148079293840ull, 5994893015928975066ull, 3641406833365327550ull}}, {{1168851577859062656ull, 14121802221953893108ull, 16716988306765994640ull, 4551758541706659437ull}}, {{9953904273016689968ull, 8826126388721183192ull, 12753960700942440602ull, 2844849088566662148ull}}, {{12442380341270862460ull, 1809285949046703182ull, 15942450876178050753ull, 3556061360708327685ull}}, {{6329603389733802267ull, 6873293454735766882ull, 6093005539940399729ull, 4445076700885409607ull}}, {{8567688137011014321ull, 15825023455278324061ull, 10725657490103831686ull, 2778172938053381004ull}}, {{15321296189691155805ull, 10557907282243129268ull, 13407071862629789608ull, 3472716172566726255ull}}, {{704876163404393140ull, 13197384102803911586ull, 12147153809859849106ull, 4340895215708407819ull}}, {{5052233620555133617ull, 12860051082679832645ull, 5286128121948711739ull, 2713059509817754887ull}}, {{10926978044121304925ull, 11463377834922402902ull, 1995974134008501770ull, 3391324387272193609ull}}, {{4435350518296855348ull, 5105850256798227820ull, 7106653685938015117ull, 4239155484090242011ull}}, {{11995466110790310401ull, 5496999419712586339ull, 2135815544497565496ull, 2649472177556401257ull}}, {{10382646620060500097ull, 6871249274640732924ull, 7281455449049344774ull, 3311840221945501571ull}}, {{12978308275075625121ull, 17812433630155691963ull, 4490133292884293063ull, 4139800277431876964ull}}, {{5805599662708571749ull, 18050300046488389333ull, 12029705344907458972ull, 2587375173394923102ull}}, {{11868685596813102590ull, 4116130984400935050ull, 5813759644279547908ull, 3234218966743653878ull}}, {{5612484959161602429ull, 5145163730501168813ull, 16490571592204210693ull, 4042773708429567347ull}}, {{5813646108689695470ull, 5521570340776924460ull, 8000764235913937731ull, 2526733567768479592ull}}, {{7267057635862119338ull, 2290276907543767671ull, 10000955294892422164ull, 3158416959710599490ull}}, {{4472136026400261268ull, 2862846134429709589ull, 3277822081760751897ull, 3948021199638249363ull}}, {{5100928025713857245ull, 13318493880087038253ull, 18189539865596327599ull, 2467513249773905851ull}}, {{10987846050569709460ull, 12036431331681409912ull, 18125238813568021595ull, 3084391562217382314ull}}, {{13734807563212136825ull, 10433853146174374486ull, 13433176480105251186ull, 3855489452771727893ull}}, {{3972568708580197612ull, 11132844234786371958ull, 10701578309279475943ull, 2409680907982329933ull}}, {{14189082922580022823ull, 9304369275055577043ull, 17988658905026732833ull, 3012101134977912416ull}}, {{13124667634797640624ull, 16242147612246859208ull, 4039079557573864425ull, 3765126418722390521ull}}, {{8202917271748525390ull, 3233813230013205149ull, 14053639769552135026ull, 2353204011701494075ull}}, {{14865332608113044642ull, 13265638574371282244ull, 12955363693512780878ull, 2941505014626867594ull}}, {{134921686431754186ull, 7358676181109326998ull, 6970832580036200290ull, 3676881268283584493ull}}, {{9392024144894468540ull, 18421717263241434555ull, 13325226743472638266ull, 4596101585354480616ull}}, {{3564172081345348886ull, 16125259307953284501ull, 8328266714670398916ull, 2872563490846550385ull}}, {{9066901120109074011ull, 1709830061232054010ull, 15022019411765386550ull, 3590704363558187981ull}}, {{2110254363281566706ull, 11360659613394843321ull, 4942466209424569475ull, 4488380454447734977ull}}, {{12848124023119448951ull, 4794569249158083123ull, 14618256426958825682ull, 2805237784029834360ull}}, {{11448469010471923285ull, 15216583598302379712ull, 18272820533698532102ull, 3506547230037292950ull}}, {{14310586263089904106ull, 9797357461023198832ull, 13617653630268389320ull, 4383184037546616188ull}}, {{8944116414431190067ull, 6123348413139499270ull, 17734405555772519133ull, 2739490023466635117ull}}, {{1956773481184211775ull, 12265871534851761992ull, 8332948889433485204ull, 3424362529333293897ull}}, {{2445966851480264719ull, 15332339418564702490ull, 15027872130219244409ull, 4280453161666617371ull}}, {{6140415300602553353ull, 2665183108961857200ull, 7086577072173333804ull, 2675283226041635857ull}}, {{7675519125753191692ull, 3331478886202321500ull, 13469907358644055159ull, 3344104032552044821ull}}, {{9594398907191489614ull, 17999406663035065587ull, 3002326143022905236ull, 4180130040690056027ull}}, {{3690656307780987057ull, 2026257127542140184ull, 18017354903885173437ull, 2612581275431285016ull}}, {{4613320384726233821ull, 7144507427855063134ull, 4074949556146915180ull, 3265726594289106271ull}}, {{14990022517762568085ull, 8930634284818828917ull, 482000926756256071ull, 4082158242861382839ull}}, {{11674607082815299005ull, 12499175455652849929ull, 7218779606863741900ull, 2551348901788364274ull}}, {{758200798236960044ull, 15623969319566062412ull, 18246846545434453183ull, 3189186127235455342ull}}, {{947750997796200055ull, 14918275631030190111ull, 13585186144938290671ull, 3986482659044319178ull}}, {{7509873401263706891ull, 16241451297034950675ull, 13102427359013819573ull, 2491551661902699486ull}}, {{4775655733152245709ull, 6466756066011524632ull, 7154662161912498659ull, 3114439577378374358ull}}, {{5969569666440307136ull, 3471759064087017886ull, 18166699739245399132ull, 3893049471722967947ull}}, {{17566039096807355672ull, 11393221451909161986ull, 9048344327814680505ull, 2433155919826854967ull}}, {{12734176834154418782ull, 406468759604288771ull, 6698744391340962728ull, 3041444899783568709ull}}, {{11306035024265635574ull, 508085949505360964ull, 12985116507603591314ull, 3801806124729460886ull}}, {{16289643927020798042ull, 4929239736868238506ull, 3504011798824856667ull, 2376128827955913054ull}}, {{11138682871921221744ull, 1549863652657910229ull, 13603386785385846642ull, 2970161034944891317ull}}, {{88295534619363468ull, 11160701602677163595ull, 3169175426450144590ull, 3712701293681114147ull}}, {{16196085773632959832ull, 2363752483245839342ull, 18121635706027198033ull, 2320438308550696341ull}}, {{11021735180186423982ull, 7566376622484687082ull, 8816986577251833829ull, 2900547885688370427ull}}, {{4553796938378254169ull, 14069656796533246757ull, 6409547203137404382ull, 3625684857110463034ull}}, {{10303932191400205615ull, 8363698958811782638ull, 17235306040776531286ull, 4532106071388078792ull}}, {{1828271601197740605ull, 615625830829976245ull, 10772066275485332054ull, 2832566294617549245ull}}, {{6897025519924563661ull, 9992904325392246114ull, 18076768862784052971ull, 3540707868271936556ull}}, {{17844653936760480384ull, 7879444388312919738ull, 4149217004770514598ull, 4425884835339920696ull}}, {{15764594728902688144ull, 312966724268186932ull, 2593260627981571624ull, 2766178022087450435ull}}, {{1258999337418808564ull, 391208405335233666ull, 17076633840259128242ull, 3457722527609313043ull}}, {{10797121208628286513ull, 9712382543523817890ull, 16734106281896522398ull, 4322153159511641304ull}}, {{11359886773820066975ull, 1458553071274998277ull, 10458816426185326499ull, 2701345724694775815ull}}, {{364800411992920006ull, 15658249394375911559ull, 8461834514304270219ull, 3376682155868469769ull}}, {{14291058570273313720ull, 14961125724542501544ull, 15188979161307725678ull, 4220852694835587211ull}}, {{8931911606420821075ull, 4739017559411675561ull, 7187268966603634597ull, 2638032934272242007ull}}, {{15776575526453414248ull, 10535457967691982355ull, 4372400189827155342ull, 3297541167840302509ull}}, {{15109033389639379905ull, 3945950422760202136ull, 10077186255711332082ull, 4121926459800378136ull}}, {{9443145868524612441ull, 7077905032652514239ull, 6298241409819582551ull, 2576204037375236335ull}}, {{7192246317228377647ull, 4235695272388254895ull, 3261115743847090285ull, 3220255046719045419ull}}, {{4378621878108084155ull, 9906305108912706523ull, 17911452735091026568ull, 4025318808398806773ull}}, {{430795664603858645ull, 6191440693070441577ull, 13500500968645585557ull, 2515824255249254233ull}}, {{5150180599182211210ull, 12350986884765439875ull, 3040568155524818234ull, 3144780319061567792ull}}, {{1826039730550376108ull, 6215361569102024036ull, 3800710194406022793ull, 3930975398826959740ull}}, {{10364646868448760876ull, 15413816026757234782ull, 11598815908358540053ull, 2456859624266849837ull}}, {{3732436548706175287ull, 5432211978164379766ull, 663461830166011355ull, 3071074530333562297ull}}, {{13888917722737494916ull, 2178578954278086803ull, 5441013306134902098ull, 3838843162916952871ull}}, {{6374730567497240371ull, 5973297864851192156ull, 10318162343975395667ull, 2399276976823095544ull}}, {{7968413209371550464ull, 2854936312636602291ull, 12897702929969244584ull, 2999096221028869430ull}}, {{5348830493287050175ull, 3568670390795752864ull, 6898756625606779922ull, 3748870276286086788ull}}, {{3343019058304406360ull, 6842105012674733444ull, 13535094927859013259ull, 2343043922678804242ull}}, {{4178773822880507950ull, 3940945247416028901ull, 7695496622968990766ull, 2928804903348505303ull}}, {{9835153297028022841ull, 14149553596124811934ull, 5007684760283850553ull, 3661006129185631629ull}}, {{3070569584430252743ull, 3851883939873851206ull, 10871291968782201096ull, 4576257661482039536ull}}, {{15754164045551071677ull, 2407427462421157003ull, 6794557480488875685ull, 2860161038426274710ull}}, {{15081019038511451692ull, 7620970346453834158ull, 17716568887465870414ull, 3575201298032843387ull}}, {{9627901761284538806ull, 302840896212516890ull, 17534025090904950114ull, 4469001622541054234ull}}, {{10629124619230224658ull, 4800961578560210960ull, 15570451700242981725ull, 2793126014088158896ull}}, {{13286405774037780823ull, 10612887991627651604ull, 1016320551594175540ull, 3491407517610198621ull}}, {{16608007217547226028ull, 13266109989534564505ull, 5882086707920107329ull, 4364259397012748276ull}}, {{3462475483325934412ull, 1373789715818020960ull, 12899676229304842889ull, 2727662123132967672ull}}, {{4328094354157418015ull, 6328923163199914104ull, 16124595286631053611ull, 3409577653916209590ull}}, {{5410117942696772518ull, 3299467935572504726ull, 10932372071434041206ull, 4261972067395261988ull}}, {{17216381769467646536ull, 15897225515014979165ull, 16056104581501051561ull, 2663732542122038742ull}}, {{7685419156552394458ull, 6036473838486560245ull, 10846758690021538644ull, 3329665677652548428ull}}, {{14218459964117880976ull, 7545592298108200306ull, 13558448362526923305ull, 4162082097065685535ull}}, {{13498223496001063514ull, 16245210232386094951ull, 15391559254220408921ull, 2601301310666053459ull}}, {{12261093351573941489ull, 6471454735200454977ull, 14627763049348123248ull, 3251626638332566824ull}}, {{1491308634185263149ull, 8089318419000568722ull, 18284703811685154060ull, 4064533297915708530ull}}, {{5543753914793177372ull, 14279196048730131259ull, 16039625900730609191ull, 2540333311197317831ull}}, {{2318006375064083811ull, 13237309042485276170ull, 15437846357485873585ull, 3175416638996647289ull}}, {{12120880005684880572ull, 2711578247824431500ull, 5462249891575178270ull, 3969270798745809112ull}}, {{16798922040407826166ull, 15529794460172433399ull, 3413906182234486418ull, 2480794249216130695ull}}, {{16386966532082394803ull, 10188871038360765941ull, 18102440783075271735ull, 3100992811520163368ull}}, {{6648650109820829791ull, 8124402779523569523ull, 4181306905134538053ull, 3876241014400204211ull}}, {{1849563309424324668ull, 7383594746415924904ull, 307473806495392331ull, 2422650634000127632ull}} }; #endif // matches #if __ENABLE_BINARY80__ // ********************************************************************** static const BID_UINT128 bid_breakpoints_binary128[] = { {{2195700805160846264ull, 1755099732929698ull}}, {{9135258273612497656ull, 1404079786343758ull}}, {{10927064423038085928ull, 2246527658150013ull}}, {{16120349167914289388ull, 1797222126520010ull}}, {{12896279334331431512ull, 1437777701216008ull}}, {{17695721096948965856ull, 1150222160972806ull}}, {{2487712051924973104ull, 1840355457556491ull}}, {{16747564900507619776ull, 1472284366045192ull}}, {{6019354290922275176ull, 1177827492836154ull}}, {{17009664494959460928ull, 1884523988537846ull}}, {{9918382781225658420ull, 1507619190830277ull}}, {{556008595496706088ull, 1206095352664222ull}}, {{4578962567536640064ull, 1929752564262755ull}}, {{3663170054029312052ull, 1543802051410204ull}}, {{6619884857965359964ull, 1235041641128163ull}}, {{6902466958002665620ull, 1976066625805061ull}}, {{1832624751660222172ull, 1580853300644049ull}}, {{5155448616070088060ull, 1264682640515239ull}}, {{15627415415195961544ull, 2023492224824382ull}}, {{5123234702672948588ull, 1618793779859506ull}}, {{409238947396448548ull, 1295035023887605ull}}, {{654782315834317676ull, 2072056038220168ull}}, {{7902523482151274788ull, 1657644830576134ull}}, {{10011367600462930152ull, 1326115864460907ull}}, {{1260792901773046952ull, 2121785383137452ull}}, {{12076680765644168532ull, 1697428306509961ull}}, {{5971995797773424504ull, 1357942645207969ull}}, {{16933890905921299852ull, 2172708232332750ull}}, {{13547112724737039880ull, 1738166585866200ull}}, {{10837690179789631904ull, 1390533268692960ull}}, {{17340304287663411048ull, 2224853229908736ull}}, {{10182894615388818516ull, 1779882583926989ull}}, {{11835664507052965136ull, 1423906067141591ull}}, {{5779182790900461784ull, 1139124853713273ull}}, {{5557343650698828532ull, 1822599765941237ull}}, {{15513921364784793796ull, 1458079812752989ull}}, {{16100485906569745360ull, 1166463850202391ull}}, {{18382079821027771928ull, 1866342160323826ull}}, {{11016315042080307220ull, 1493073728259061ull}}, {{5123703218922335452ull, 1194458982607249ull}}, {{15576622779759557372ull, 1911134372171598ull}}, {{1393251779581914928ull, 1528907497737279ull}}, {{4803950238407442264ull, 1223125998189823ull}}, {{3996971566709997300ull, 1957001597103717ull}}, {{14265623697593728808ull, 1565601277682973ull}}, {{344452513849252076ull, 1252481022146379ull}}, {{7929821651642623972ull, 2003969635434206ull}}, {{2654508506572188852ull, 1603175708347365ull}}, {{2123606805257751084ull, 1282540566677892ull}}, {{7087119703154312056ull, 2052064906684627ull}}, {{16737742206749180616ull, 1641651925347701ull}}, {{9700844950657434168ull, 1313321540278161ull}}, {{8142654291568074024ull, 2101314464445058ull}}, {{13892821062738279864ull, 1681051571556046ull}}, {{7424908035448713568ull, 1344841257244837ull}}, {{15569201671459852032ull, 2151746011591739ull}}, {{16144710151909791948ull, 1721396809273391ull}}, {{9226419306785923236ull, 1377117447418713ull}}, {{11072922076115566856ull, 2203387915869941ull}}, {{5168988846150543160ull, 1762710332695953ull}}, {{11513888706404255176ull, 1410168266156762ull}}, {{1832413335639583492ull, 1128134612925410ull}}, {{2931861337023333592ull, 1805015380680656ull}}, {{17102884328586308164ull, 1444012304544524ull}}, {{17371656277610956856ull, 1155209843635619ull}}, {{16726603599951800000ull, 1848335749816991ull}}, {{9691934065219529676ull, 1478668599853593ull}}, {{15132244881659444388ull, 1182934879882874ull}}, {{13143545366429380048ull, 1892695807812599ull}}, {{14204185107885414364ull, 1514156646250079ull}}, {{15052696901050241812ull, 1211325317000063ull}}, {{1948222153228924964ull, 1938120507200102ull}}, {{12626624166808870940ull, 1550496405760081ull}}, {{6411950518705186428ull, 1240397124608065ull}}, {{10259120829928298284ull, 1984635399372904ull}}, {{11896645478684548952ull, 1587708319498323ull}}, {{16896014012431459808ull, 1270166655598658ull}}, {{4897529531438873752ull, 2032266648957854ull}}, {{7607372439893009324ull, 1625813319166283ull}}, {{13464595581398228108ull, 1300650655333026ull}}, {{14164655300753344324ull, 2081041048532842ull}}, {{3953026611118854812ull, 1664832838826274ull}}, {{6851770103636994172ull, 1331866271061019ull}}, {{18341529795303011324ull, 2130986033697630ull}}, {{14673223836242409060ull, 1704788826958104ull}}, {{15427927883735837572ull, 1363831061566483ull}}, {{2548591725525878176ull, 2182129698506374ull}}, {{5728222195162612864ull, 1745703758805099ull}}, {{8271926570872000612ull, 1396563007044079ull}}, {{2167036069169470012ull, 2234500811270527ull}}, {{12801675299561306980ull, 1787600649016421ull}}, {{6551991424907135260ull, 1430080519213137ull}}, {{16309639584151439176ull, 1144064415370509ull}}, {{15027376890416571716ull, 1830503064592815ull}}, {{12021901512333257372ull, 1464402451674252ull}}, {{2238823580382785252ull, 1171521961339402ull}}, {{7271466543354366724ull, 1874435138143043ull}}, {{13195870864167314024ull, 1499548110514434ull}}, {{14246045506075761544ull, 1199638488411547ull}}, {{8036277550753577176ull, 1919421581458476ull}}, {{2739673225860951420ull, 1535537265166781ull}}, {{16949133839656402428ull, 1228429812133424ull}}, {{16050567699224512916ull, 1965487699413479ull}}, {{16529802974121520656ull, 1572390159530783ull}}, {{2155795935071485556ull, 1257912127624627ull}}, {{7138622310856287212ull, 2012659404199403ull}}, {{13089595478168850416ull, 1610127523359522ull}}, {{3092978753051259684ull, 1288102018687618ull}}, {{1259417190140105172ull, 2060963229900189ull}}, {{4696882566853994460ull, 1648770583920151ull}}, {{68157238741285244ull, 1319016467136121ull}}, {{11177098026211787364ull, 2110426347417793ull}}, {{16320376050453250536ull, 1688341077934234ull}}, {{16745649655104510752ull, 1350672862347387ull}}, {{12035644189199575912ull, 2161076579755820ull}}, {{9628515351359660728ull, 1728861263804656ull}}, {{4013463466345818260ull, 1383089011043725ull}}, {{6421541546153309216ull, 2212942417669960ull}}, {{5137233236922647372ull, 1770353934135968ull}}, {{11488484219021938544ull, 1416283147308774ull}}, {{12880136189959461160ull, 1133026517847019ull}}, {{9540171459709406884ull, 1812842428555231ull}}, {{3942788353025615184ull, 1450273942844185ull}}, {{3154230682420492148ull, 1160219154275348ull}}, {{1357420277130877116ull, 1856350646840557ull}}, {{12153982665930432660ull, 1485080517472445ull}}, {{9723186132744346128ull, 1188064413977956ull}}, {{8178400182907133160ull, 1900903062364730ull}}, {{6542720146325706528ull, 1520722449891784ull}}, {{8923524931802475544ull, 1216577959913427ull}}, {{17966988705625871196ull, 1946524735861483ull}}, {{3305544520274965988ull, 1557219788689187ull}}, {{13712482060445703760ull, 1245775830951349ull}}, {{10871924852487395044ull, 1993241329522159ull}}, {{12386888696731826360ull, 1594593063617727ull}}, {{2530813327901640440ull, 1275674450894182ull}}, {{7738650139384535028ull, 2041079121430691ull}}, {{2501571296765717700ull, 1632863297144553ull}}, {{9379954666896394804ull, 1306290637715642ull}}, {{250532208066590396ull, 2090065020345028ull}}, {{7579123395937092964ull, 1672052016276022ull}}, {{17131345160975405340ull, 1337641613020817ull}}, {{12652756998593007252ull, 2140226580833308ull}}, {{17500903228358226448ull, 1712181264666646ull}}, {{10311373767944670836ull, 1369745011733317ull}}, {{1740802769743832044ull, 2191592018773308ull}}, {{8771339845278886280ull, 1753273615018646ull}}, {{3327723061481198700ull, 1402618892014917ull}}, {{9013705713111828248ull, 2244190227223867ull}}, {{18279011014715193568ull, 1795352181779093ull}}, {{3555162367546423884ull, 1436281745423275ull}}, {{2844129894037139108ull, 1149025396338620ull}}, {{4550607830459422572ull, 1838440634141792ull}}, {{14708532708593269028ull, 1470752507313433ull}}, {{698779722648884252ull, 1176602005850747ull}}, {{4807396370980125128ull, 1882563209361195ull}}, {{3845917096784100100ull, 1506050567488956ull}}, {{17834128936394921372ull, 1204840453991164ull}}, {{17466559854006143228ull, 1927744726385863ull}}, {{2905201438979183612ull, 1542195781108691ull}}, {{17081556410150988184ull, 1233756624886952ull}}, {{12573094997273939800ull, 1974010599819124ull}}, {{13747824812561062164ull, 1579208479855299ull}}, {{14687608664790760052ull, 1263366783884239ull}}, {{12432127419439485116ull, 2021386854214783ull}}, {{17324399565035408740ull, 1617109483371826ull}}, {{10170170837286416668ull, 1293687586697461ull}}, {{8893575710174446024ull, 2069900138715938ull}}, {{14493558197623377464ull, 1655920110972750ull}}, {{11594846558098701972ull, 1324736088778200ull}}, {{105010419248371540ull, 2119577742045121ull}}, {{14841403594366338524ull, 1695662193636096ull}}, {{8183774060751160496ull, 1356529754908877ull}}, {{16783387311943767116ull, 2170447607854203ull}}, {{2358663405329282724ull, 1736358086283363ull}}, {{9265628353747246824ull, 1389086469026690ull}}, {{14825005365995594920ull, 2222538350442704ull}}, {{15549353107538386260ull, 1778030680354163ull}}, {{1371436041804978036ull, 1422424544283331ull}}, {{15854544092411623724ull, 1137939635426664ull}}, {{14299224103632866988ull, 1820703416682663ull}}, {{371332838680562620ull, 1456562733346131ull}}, {{15054461529912091388ull, 1165250186676904ull}}, {{13019092003633615252ull, 1864400298683047ull}}, {{3036575973423071556ull, 1491520238946438ull}}, {{9807958408222277892ull, 1193216191157150ull}}, {{15692733453155644628ull, 1909145905851440ull}}, {{12554186762524515700ull, 1527316724681152ull}}, {{2664651780535791912ull, 1221853379744922ull}}, {{7952791663599177388ull, 1954965407591875ull}}, {{6362233330879341908ull, 1563972326073500ull}}, {{5089786664703473528ull, 1251177860858800ull}}, {{8143658663525557644ull, 2001884577374080ull}}, {{6514926930820446116ull, 1601507661899264ull}}, {{8901290359398267216ull, 1281206129519411ull}}, {{6863366945553406900ull, 2049929807231058ull}}, {{12869391185926546164ull, 1639943845784846ull}}, {{6606164133999326608ull, 1311955076627877ull}}, {{14259211429140832896ull, 2099128122604603ull}}, {{339322699086935348ull, 1679302498083683ull}}, {{7650155788753368924ull, 1343441998466946ull}}, {{4861551632521569632ull, 2149507197547114ull}}, {{7578590120759166028ull, 1719605758037691ull}}, {{2373523281865422500ull, 1375684606430153ull}}, {{108288436242765680ull, 2201095370288245ull}}, {{86630748994212544ull, 1760876296230596ull}}, {{14826699858163011328ull, 1408701036984476ull}}, {{8172011071788498736ull, 1126960829587581ull}}, {{5696520085377777336ull, 1803137327340130ull}}, {{4557216068302221868ull, 1442509861872104ull}}, {{7335121669383687816ull, 1154007889497683ull}}, {{8046845856271990184ull, 1846412623196293ull}}, {{13816174314501412792ull, 1477130098557034ull}}, {{14742288266343040556ull, 1181704078845627ull}}, {{8830265967181223600ull, 1890726526153004ull}}, {{10753561588486889204ull, 1512581220922403ull}}, {{15981546900273332008ull, 1210064976737922ull}}, {{10813079781469689924ull, 1936103962780676ull}}, {{4961115010433841616ull, 1548883170224541ull}}, {{279543193605162968ull, 1239106536179633ull}}, {{15204664368735902044ull, 1982570457887412ull}}, {{4785033865504900988ull, 1586056366309930ull}}, {{3828027092403920788ull, 1268845093047944ull}}, {{13503540977330093912ull, 2030152148876710ull}}, {{10802832781864075128ull, 1624121719101368ull}}, {{16020963854975080748ull, 1299297375281094ull}}, {{14565495723734398228ull, 2078875800449751ull}}, {{7963047764245608260ull, 1663100640359801ull}}, {{2681089396654576284ull, 1330480512287841ull}}, {{15357789478873053024ull, 2128768819660545ull}}, {{12286231583098442420ull, 1703015055728436ull}}, {{6139636451736843612ull, 1362412044582749ull}}, {{17202115952262770428ull, 2179859271332398ull}}, {{2693646317584485372ull, 1743887417065919ull}}, {{5844265868809498620ull, 1395109933652735ull}}, {{9350825390095197792ull, 2232175893844376ull}}, {{3791311497334247912ull, 1785740715075501ull}}, {{17790444456835039620ull, 1428592572060400ull}}, {{14232355565468031696ull, 1142874057648320ull}}, {{4325024831039299100ull, 1828598492237313ull}}, {{10838717494315259924ull, 1462878793789850ull}}, {{8670973995452207940ull, 1170303035031880ull}}, {{13873558392723532704ull, 1872484856051008ull}}, {{30800269953095196ull, 1497987884840807ull}}, {{11092686660188207124ull, 1198390307872645ull}}, {{17748298656301131400ull, 1917424492596232ull}}, {{6819941295557084476ull, 1533939594076986ull}}, {{1766604221703757256ull, 1227151675261589ull}}, {{10205264384209832256ull, 1963442680418542ull}}, {{785513877884045160ull, 1570754144334834ull}}, {{4317759917049146448ull, 1256603315467867ull}}, {{10597764682020544644ull, 2010565304748587ull}}, {{1099514116132615068ull, 1608452243798870ull}}, {{879611292906092056ull, 1286761795039096ull}}, {{12475424512875478256ull, 2058818872062553ull}}, {{17359037239784203252ull, 1647055097650042ull}}, {{6508532162343541956ull, 1317644078120034ull}}, {{17792349089233487776ull, 2108230524992054ull}}, {{17923228086128700544ull, 1686584419993643ull}}, {{3270536024677229464ull, 1349267535994915ull}}, {{5232857639483567144ull, 2158828057591864ull}}, {{7875634926328764040ull, 1727062446073491ull}}, {{2611159126321100908ull, 1381649956858793ull}}, {{488505787371851128ull, 2210639930974069ull}}, {{4080153444639391228ull, 1768511944779255ull}}, {{3264122755711512980ull, 1414809555823404ull}}, {{6300647019311120708ull, 1131847644658723ull}}, {{6391686416155882808ull, 1810956231453957ull}}, {{16181395577150437216ull, 1448764985163165ull}}, {{12945116461720349772ull, 1159011988130532ull}}, {{5954791079784918344ull, 1854419181008852ull}}, {{15831879308053665644ull, 1483535344807081ull}}, {{8976154631701022192ull, 1186828275845665ull}}, {{14361847410721635508ull, 1898925241353064ull}}, {{15178826743319218732ull, 1519140193082451ull}}, {{8453712579913464660ull, 1215312154465961ull}}, {{6147242498377722812ull, 1944499447145538ull}}, {{12296491628185998896ull, 1555599557716430ull}}, {{9837193302548799116ull, 1244479646173144ull}}, {{4671462839852347616ull, 1991167433877031ull}}, {{47821457139967772ull, 1592933947101625ull}}, {{38257165711974216ull, 1274347157681300ull}}, {{61211465139158748ull, 2038955452290080ull}}, {{48969172111326996ull, 1631164361832064ull}}, {{3728524152430971920ull, 1304931489465651ull}}, {{17033685088115286044ull, 2087890383145041ull}}, {{9937599255750318512ull, 1670312306516033ull}}, {{15328777034084075456ull, 1336249845212826ull}}, {{17147345625050700084ull, 2137999752340522ull}}, {{6339178870556739420ull, 1710399801872418ull}}, {{12450040725929212180ull, 1368319841497934ull}}, {{8852018717261008520ull, 2189311746396695ull}}, {{7081614973808806816ull, 1751449397117356ull}}, {{1975943164305135128ull, 1401159517693885ull}}, {{3161509062888216208ull, 2241855228310216ull}}, {{17286602509278214260ull, 1793484182648172ull}}, {{6450584377938750760ull, 1434787346118538ull}}, {{12539165131834821256ull, 1147829876894830ull}}, {{1615920137226162392ull, 1836527803031729ull}}, {{4982084924522840236ull, 1469222242425383ull}}, {{11364365569102092836ull, 1175377793940306ull}}, {{10804287281079527892ull, 1880604470304490ull}}, {{8643429824863622312ull, 1504483576243592ull}}, {{17982790304116628820ull, 1203586860994873ull}}, {{6636371598135144172ull, 1925738977591798ull}}, {{12687794907991935984ull, 1540591182073438ull}}, {{17528933555877369432ull, 1232472945658750ull}}, {{9599549615694239480ull, 1971956713054001ull}}, {{3990290877813481260ull, 1577565370443201ull}}, {{17949627961218426300ull, 1262052296354560ull}}, {{10272660664239930464ull, 2019283674167297ull}}, {{839430901908123724ull, 1615426939333838ull}}, {{8050242351010319628ull, 1292341551467070ull}}, {{12880387761616511404ull, 2067746482347312ull}}, {{2925612579809388476ull, 1654197185877850ull}}, {{2340490063847510780ull, 1323357748702280ull}}, {{3744784102156017252ull, 2117372397923648ull}}, {{10374524911208634448ull, 1693897918338918ull}}, {{15678317558450728204ull, 1355118334671134ull}}, {{14017261649295434156ull, 2168189335473815ull}}, {{11213809319436347324ull, 1734551468379052ull}}, {{1592349826065257212ull, 1387641174703242ull}}, {{6237108536446321864ull, 2220225879525187ull}}, {{16057733273382788460ull, 1776180703620149ull}}, {{16535535433448141092ull, 1420944562896119ull}}, {{16917777161500423196ull, 1136755650316895ull}}, {{8621699384691125500ull, 1818809040507033ull}}, {{14276057137236721044ull, 1455047232405626ull}}, {{7731496895047466512ull, 1164037785924501ull}}, {{4991697402592125776ull, 1862460457479202ull}}, {{15061404366299431588ull, 1489968365983361ull}}, {{8359774678297634948ull, 1191974692786689ull}}, {{2307593041050484948ull, 1907159508458703ull}}, {{9224772062324208604ull, 1525727606766962ull}}, {{1120020375546236ull, 1220582085413570ull}}, {{1792032600873980ull, 1952931336661712ull}}, {{11069480070306430152ull, 1562345069329369ull}}, {{12544932870987054444ull, 1249876055463495ull}}, {{1625148519869735496ull, 1999801688741593ull}}, {{8678816445379609044ull, 1599841350993274ull}}, {{10632401971045597560ull, 1279873080794619ull}}, {{5943796709447225124ull, 2047796929271391ull}}, {{1065688552815869776ull, 1638237543417113ull}}, {{8231248471736516468ull, 1310590034733690ull}}, {{13169997554778426348ull, 2096944055573904ull}}, {{14225346858564651400ull, 1677555244459123ull}}, {{312231042625990152ull, 1342044195567299ull}}, {{7878267297685404888ull, 2147270712907678ull}}, {{13681311467632144556ull, 1717816570326142ull}}, {{3566351544621895000ull, 1374253256260914ull}}, {{13084860100878852648ull, 2198805210017462ull}}, {{3089190451219261472ull, 1759044168013970ull}}, {{2471352360975409176ull, 1407235334411176ull}}, {{15022210221786385652ull, 2251576535057881ull}}, {{8328419362687198196ull, 1801261228046305ull}}, {{6662735490149758556ull, 1441008982437044ull}}, {{9019537206861717168ull, 1152807185949635ull}}, {{14431259530978747472ull, 1844491497519416ull}}, {{7855658810041087652ull, 1475593198015533ull}}, {{13663224677516690768ull, 1180474558412426ull}}, {{14482461854542884584ull, 1888759293459882ull}}, {{4207271854150487020ull, 1511007434767906ull}}, {{18123212742288030908ull, 1208805947814324ull}}, {{17929093943435118488ull, 1934089516502919ull}}, {{18032623969490005112ull, 1547271613202335ull}}, {{14426099175592004088ull, 1237817290561868ull}}, {{945665792495744604ull, 1980507664898990ull}}, {{756532633996595684ull, 1584406131919192ull}}, {{11673272551423007516ull, 1267524905535353ull}}, {{14987887267534901704ull, 2028039848856565ull}}, {{11990309814027921364ull, 1622431879085252ull}}, {{2213550221738516444ull, 1297945503268202ull}}, {{7231029169523536632ull, 2076712805229123ull}}, {{13163520965102649952ull, 1661370244183298ull}}, {{17909514401565940608ull, 1329096195346638ull}}, {{6519130154054043036ull, 2126553912554622ull}}, {{16283350567468965396ull, 1701243130043697ull}}, {{5647982824491351672ull, 1360994504034958ull}}, {{5347423704444252352ull, 2177591206455933ull}}, {{11656636593039222528ull, 1742072965164746ull}}, {{5635960459689467700ull, 1393658372131797ull}}, {{12706885550245058644ull, 2229853395410875ull}}, {{10165508440196046912ull, 1783882716328700ull}}, {{8132406752156837532ull, 1427106173062960ull}}, {{6505925401725470024ull, 1141684938450368ull}}, {{6720131828018841716ull, 1826695901520589ull}}, {{9065454277156983696ull, 1461356721216471ull}}, {{3563014606983676632ull, 1169085376973177ull}}, {{9390172185915792936ull, 1870536603157083ull}}, {{14890835378216454996ull, 1496429282525666ull}}, {{8223319487831253672ull, 1197143426020533ull}}, {{9467962365788095556ull, 1915429481632853ull}}, {{14953067522114297088ull, 1532343585306282ull}}, {{4583756388207617024ull, 1225874868245026ull}}, {{18402056665357918212ull, 1961399789192041ull}}, {{11032296517544424244ull, 1569119831353633ull}}, {{16204534843519360044ull, 1255295865082906ull}}, {{101814046437603808ull, 2008473384132651ull}}, {{14838846496117724336ull, 1606778707306120ull}}, {{11871077196894179468ull, 1285422965844896ull}}, {{11615025885546866504ull, 2056676745351834ull}}, {{12981369523179403528ull, 1645341396281467ull}}, {{3006397989059702176ull, 1316273117025174ull}}, {{12188934411979344128ull, 2106036987240278ull}}, {{17129845159067295948ull, 1684829589792222ull}}, {{6325178497770016112ull, 1347863671833778ull}}, {{6430936781690115456ull, 2156581874934045ull}}, {{5144749425352092364ull, 1725265499947236ull}}, {{426450725539763568ull, 1380212399957789ull}}, {{8061018790347442356ull, 2208339839932462ull}}, {{17516861476503684856ull, 1766671871945969ull}}, {{17702837995944858208ull, 1413337497556775ull}}, {{14162270396755886564ull, 1130669998045420ull}}, {{4212888561099866888ull, 1809071996872673ull}}, {{10749008478363714156ull, 1447257597498138ull}}, {{15977904412174791972ull, 1157806077998510ull}}, {{7117902985770115540ull, 1852489724797617ull}}, {{16762368832841823400ull, 1481991779838093ull}}, {{2341848622047727752ull, 1185593423870475ull}}, {{3746957795276364404ull, 1896949478192760ull}}, {{2997566236221091520ull, 1517559582554208ull}}, {{9776750618460693864ull, 1214047666043366ull}}, {{8264103360053289536ull, 1942476265669386ull}}, {{2921933873300721304ull, 1553981012535509ull}}, {{6026895913382487368ull, 1243184810028407ull}}, {{13332382276153890112ull, 1989095696045451ull}}, {{6976557006181201768ull, 1591276556836361ull}}, {{1891896790203051088ull, 1273021245469089ull}}, {{10405732493808702392ull, 2036833992750542ull}}, {{945888365563141264ull, 1629467194200434ull}}, {{4446059507192423336ull, 1303573755360347ull}}, {{10803044026249787660ull, 2085718008576555ull}}, {{8642435220999830128ull, 1668574406861244ull}}, {{10603296991541774424ull, 1334859525488995ull}}, {{16965275186466839080ull, 2135775240782392ull}}, {{6193522519689650620ull, 1708620192625914ull}}, {{8644166830493630816ull, 1366896154100731ull}}, {{6451969299305988664ull, 2187033846561170ull}}, {{5161575439444790932ull, 1749627077248936ull}}, {{439911536813922420ull, 1399701661799149ull}}, {{8082556088386096520ull, 2239522658878638ull}}, {{13844742500192697864ull, 1791618127102910ull}}, {{11075794000154158288ull, 1433294501682328ull}}, {{16239332829607147276ull, 1146635601345862ull}}, {{11225537268403794352ull, 1834616962153380ull}}, {{8980429814723035480ull, 1467693569722704ull}}, {{10873692666520338708ull, 1174154855778163ull}}, {{13708559451690631612ull, 1878647769245061ull}}, {{7277498746610594964ull, 1502918215396049ull}}, {{9511347812030386296ull, 1202334572316839ull}}, {{4150110055022887104ull, 1923735315706943ull}}, {{10698785673502130328ull, 1538988252565554ull}}, {{12248377353543614584ull, 1231190602052443ull}}, {{15908054950927873016ull, 1969904963283909ull}}, {{16415792775484208736ull, 1575923970627127ull}}, {{5753936590903546340ull, 1260739176501702ull}}, {{12895647360187584472ull, 2017182682402723ull}}, {{17695215517633888224ull, 1613746145922178ull}}, {{3088125969881379608ull, 1290996916737743ull}}, {{1251652737068297052ull, 2065595066780389ull}}, {{4690671004396547964ull, 1652476053424311ull}}, {{63187988775328048ull, 1321980842739449ull}}, {{7479798411524345524ull, 2115169348383118ull}}, {{13362536358703297064ull, 1692135478706494ull}}, {{14379377901704547976ull, 1353708382965195ull}}, {{4560260569017725144ull, 2165933412744313ull}}, {{11026906084698000760ull, 1732746730195450ull}}, {{8821524867758400608ull, 1386197384156360ull}}, {{14114439788413440976ull, 2217915814650176ull}}, {{7602203015988842456ull, 1774332651720141ull}}, {{2392413598049163640ull, 1419466121376113ull}}, {{9292628507923151560ull, 1135572897100890ull}}, {{14868205612677042496ull, 1816916635361424ull}}, {{15583913304883544320ull, 1453533308289139ull}}, {{16156479458648745780ull, 1162826646631311ull}}, {{24925430644620984ull, 1860522634610099ull}}, {{3709289159257607112ull, 1488418107688079ull}}, {{6656780142147996012ull, 1190734486150463ull}}, {{6961499412694883296ull, 1905175177840741ull}}, {{1879850715413996312ull, 1524140142272593ull}}, {{8882578201815017696ull, 1219312113818074ull}}, {{3144078678678297344ull, 1950899382108919ull}}, {{6204611757684548200ull, 1560719505687135ull}}, {{4963689406147638560ull, 1248575604549708ull}}, {{4252554235094311372ull, 1997720967279533ull}}, {{10780741017559269744ull, 1598176773823626ull}}, {{4935243999305505472ull, 1278541419058901ull}}, {{517692769404988108ull, 2045666270494242ull}}, {{11482200659749721456ull, 1636533016395393ull}}, {{16564458157283597812ull, 1309226413116314ull}}, {{15435086607428025528ull, 2094762260986103ull}}, {{1280022841716689452ull, 1675809808788883ull}}, {{8402715902857172208ull, 1340647847031106ull}}, {{6065647815087654888ull, 2145036555249770ull}}, {{4852518252070123912ull, 1716029244199816ull}}, {{192665786914188804ull, 1372823395359853ull}}, {{15065660518030343384ull, 2196517432575764ull}}, {{15741877229166185028ull, 1757213946060611ull}}, {{8904152968591037700ull, 1405771156848489ull}}, {{3178598305519929352ull, 2249233850957583ull}}, {{9921576273899764128ull, 1799387080766066ull}}, {{4247912204377900976ull, 1439509664612853ull}}, {{10777027392986141428ull, 1151607731690282ull}}, {{2485848569810184992ull, 1842572370704452ull}}, {{13056725300073878964ull, 1474057896563561ull}}, {{6756031425317192848ull, 1179246317250849ull}}, {{18188347909991329204ull, 1886794107601358ull}}, {{3482631883767332392ull, 1509435286081087ull}}, {{13854151951239596884ull, 1207548228864869ull}}, {{11098596677757624044ull, 1932077166183791ull}}, {{5189528527464188912ull, 1545661732947033ull}}, {{11530320451455171776ull, 1236529386357626ull}}, {{11069815092844454196ull, 1978447018172202ull}}, {{1477154444791742712ull, 1582757614537762ull}}, {{12249770000059125136ull, 1266206091630209ull}}, {{8531585555868869252ull, 2025929746608335ull}}, {{6825268444695095400ull, 1620743797286668ull}}, {{12838912385239896968ull, 1296595037829334ull}}, {{9474213372158104180ull, 2074552060526935ull}}, {{7579370697726483344ull, 1659641648421548ull}}, {{13442194187665007320ull, 1327713318737238ull}}, {{17818161885522101388ull, 2124341309979581ull}}, {{10565180693675770788ull, 1699473047983665ull}}, {{8452144554940616628ull, 1359578438386932ull}}, {{17212780102646896932ull, 2175325501419091ull}}, {{10080875267375607224ull, 1740260401135273ull}}, {{15443397843384306424ull, 1392208320908218ull}}, {{2573343660963428340ull, 2227533313453150ull}}, {{2058674928770742672ull, 1782026650762520ull}}, {{1646939943016594136ull, 1425621320610016ull}}, {{16074947213380916600ull, 1140497056488012ull}}, {{10962520282441825272ull, 1824795290380820ull}}, {{8770016225953460216ull, 1459836232304656ull}}, {{3326664166020857848ull, 1167868985843725ull}}, {{5322662665633372560ull, 1868590377349960ull}}, {{4258130132506698048ull, 1494872301879968ull}}, {{10785201735489179084ull, 1195897841503974ull}}, {{6188276332556955568ull, 1913436546406359ull}}, {{8639969880787474776ull, 1530749237125087ull}}, {{17980022348855710792ull, 1224599389700069ull}}, {{17699989313943406296ull, 1959359023520111ull}}, {{10470642636412814712ull, 1567487218816089ull}}, {{12065862923872162092ull, 1253989775052871ull}}, {{11926683048711638704ull, 2006383640084594ull}}, {{13230695253711221288ull, 1605106912067675ull}}, {{10584556202968977028ull, 1284085529654140ull}}, {{16935289924750363248ull, 2054536847446624ull}}, {{17237580754542200920ull, 1643629477957299ull}}, {{17479413418375671060ull, 1314903582365839ull}}, {{16899015025175342728ull, 2103845731785343ull}}, {{2451165575914543212ull, 1683076585428275ull}}, {{1960932460731634568ull, 1346461268342620ull}}, {{3137491937170615312ull, 2154338029348192ull}}, {{13578039993962223216ull, 1723470423478553ull}}, {{18241129624653599220ull, 1378776338782842ull}}, {{14428412140478117460ull, 2206042142052548ull}}, {{474683268156763000ull, 1764833713642039ull}}, {{4069095429267320720ull, 1411866970913631ull}}, {{18012671602381497868ull, 1129493576730904ull}}, {{17752228119584665624ull, 1807189722769447ull}}, {{6823084866183911852ull, 1445751778215558ull}}, {{12837165522430950128ull, 1156601422572446ull}}, {{13160767206405699560ull, 1850562276115914ull}}, {{14217962579866469968ull, 1480449820892731ull}}, {{7685021249151265652ull, 1184359856714185ull}}, {{12296033998642025044ull, 1894975770742696ull}}, {{6147478384171709712ull, 1515980616594157ull}}, {{15986029151563098740ull, 1212784493275325ull}}, {{7130902568791406368ull, 1940455189240521ull}}, {{2015373240291214772ull, 1552364151392417ull}}, {{12680345036458702784ull, 1241891321113933ull}}, {{16599203243592014136ull, 1987026113782293ull}}, {{2211316150647880336ull, 1589620891025835ull}}, {{1769052920518304268ull, 1271696712820668ull}}, {{17587879931796928124ull, 2034714740513068ull}}, {{3002257501211811532ull, 1627771792410455ull}}, {{2401806000969449224ull, 1302217433928364ull}}, {{11221587231034939408ull, 2083547894285382ull}}, {{1598572155344130880ull, 1666838315428306ull}}, {{16036252983242945996ull, 1333470652342644ull}}, {{14589958328962982624ull, 2133553043748231ull}}, {{7982617848428475776ull, 1706842434998585ull}}, {{6386094278742780620ull, 1365473947998868ull}}, {{6528402031246538668ull, 2184758316798189ull}}, {{8912070439739141260ull, 1747806653438551ull}}, {{3440307537049402684ull, 1398245322750841ull}}, {{16572538503504775264ull, 2237192516401345ull}}, {{13258030802803820212ull, 1789754013121076ull}}, {{6917075827501145844ull, 1431803210496861ull}}, {{1844311847259006352ull, 1145442568397489ull}}, {{10329596585098230812ull, 1832708109435982ull}}, {{884979638594764004ull, 1466166487548786ull}}, {{15465378969843452496ull, 1172933190039028ull}}, {{2608513463298062052ull, 1876693104062446ull}}, {{16844206029606090936ull, 1501354483249956ull}}, {{9786016008942962424ull, 1201083586599965ull}}, {{15657625614308739880ull, 1921733738559944ull}}, {{16215449306188902228ull, 1537386990847955ull}}, {{12972359444951121780ull, 1229909592678364ull}}, {{9687728667696063880ull, 1967855348285383ull}}, {{15128880563640671752ull, 1574284278628306ull}}, {{8413755636170627076ull, 1259427422902645ull}}, {{13462009017873003324ull, 2015083876644232ull}}, {{3390909584814582012ull, 1612067101315386ull}}, {{17470122926819306904ull, 1289653681052308ull}}, {{5816103794459429108ull, 2063445889683694ull}}, {{8342231850309453608ull, 1650756711746955ull}}, {{6673785480247562884ull, 1320605369397564ull}}, {{18056754397879921264ull, 2112968591036102ull}}, {{7066705888820116364ull, 1690374872828882ull}}, {{16721411155281824060ull, 1352299898263105ull}}, {{8307513774741366884ull, 2163679837220969ull}}, {{10335359834535003828ull, 1730943869776775ull}}, {{8268287867628003064ull, 1384755095821420ull}}, {{13229260588204804904ull, 2215608153314272ull}}, {{3204710841080023276ull, 1772486522651418ull}}, {{9942466302347839264ull, 1417989218121134ull}}, {{11643321856620181736ull, 1134391374496907ull}}, {{3871919711624649484ull, 1815026199195052ull}}, {{14165582213525450556ull, 1452020959356041ull}}, {{7643116956078450124ull, 1161616767484833ull}}, {{8539638314983609872ull, 1858586827975733ull}}, {{14210408281470708544ull, 1486869462380586ull}}, {{7678977810434656512ull, 1189495569904469ull}}, {{1218318052469719452ull, 1903192911847151ull}}, {{15732049700943416852ull, 1522554329477720ull}}, {{12585639760754733484ull, 1218043463582176ull}}, {{12758325987723752928ull, 1948869541731482ull}}, {{2827963160695181696ull, 1559095633385186ull}}, {{17019765787523786648ull, 1247276506708148ull}}, {{5095532371586596700ull, 1995642410733038ull}}, {{11455123526753098004ull, 1596513928586430ull}}, {{9164098821402478404ull, 1277211142869144ull}}, {{3594511670018234476ull, 2043537828590631ull}}, {{17633004594982228876ull, 1634830262872504ull}}, {{17795752490727693424ull, 1307864210298003ull}}, {{6337111096712847536ull, 2092582736476806ull}}, {{1380340062628367708ull, 1674066189181445ull}}, {{1104272050102694164ull, 1339252951345156ull}}, {{12834881724390041636ull, 2142804722152249ull}}, {{13957254194253943632ull, 1714243777721799ull}}, {{14855152170145065228ull, 1371395022177439ull}}, {{12700197028006373396ull, 2194232035483903ull}}, {{17538855251888919364ull, 1755385628387122ull}}, {{6652386572027314844ull, 1404308502709698ull}}, {{6954469700501793428ull, 2246893604335517ull}}, {{16631622204627165712ull, 1797514883468413ull}}, {{2237251319476001600ull, 1438011906774731ull}}, {{16547196314548442572ull, 1150409525419784ull}}, {{15407467659051777144ull, 1840655240671655ull}}, {{12325974127241421716ull, 1472524192537324ull}}, {{13550128116535047696ull, 1178019354029859ull}}, {{10612158542230345344ull, 1884830966447775ull}}, {{8489726833784276276ull, 1507864773158220ull}}, {{6791781467027421020ull, 1206291818526576ull}}, {{3488152717760052988ull, 1930066909642522ull}}, {{13858568618433773360ull, 1544053527714017ull}}, {{3708157265263198040ull, 1235242822171214ull}}, {{13311749253904937512ull, 1976388515473942ull}}, {{3270701773640129364ull, 1581110812379154ull}}, {{6305910233654013812ull, 1264888649903323ull}}, {{6400107559104511780ull, 2023821839845317ull}}, {{16188132491509340392ull, 1619057471876253ull}}, {{1882459548981741344ull, 1295245977501003ull}}, {{17769330537338427444ull, 2072393564001604ull}}, {{17904813244612652276ull, 1657914851201283ull}}, {{3255804151464390852ull, 1326331880961027ull}}, {{8898635457084935688ull, 2122131009537643ull}}, {{14497605995151769196ull, 1697704807630114ull}}, {{15287433610863325680ull, 1358163846104091ull}}, {{17081196147897500444ull, 2173062153766546ull}}, {{9975608103576090032ull, 1738449723013237ull}}, {{601788853377051376ull, 1390759778410590ull}}, {{962862165403282204ull, 2225215645456944ull}}, {{4459638547064536088ull, 1780172516365555ull}}, {{3567710837651628868ull, 1424138013092444ull}}, {{6543517484863213416ull, 1139310410473955ull}}, {{10469627975781141468ull, 1822896656758328ull}}, {{15754400010108733820ull, 1458317325406662ull}}, {{5224822378603166412ull, 1166653860325330ull}}, {{8359715805765066260ull, 1866646176520528ull}}, {{14066470274095873652ull, 1493316941216422ull}}, {{3874478589792878276ull, 1194653552973138ull}}, {{2509816928926694920ull, 1911445684757021ull}}, {{16765248802108997228ull, 1529156547805616ull}}, {{9722850226945287460ull, 1223325238244493ull}}, {{11867211548370549612ull, 1957320381191189ull}}, {{13183118053438350012ull, 1565856304952951ull}}, {{6857145628008769684ull, 1252685043962361ull}}, {{3592735375330210852ull, 2004296070339778ull}}, {{10252885929747989328ull, 1603436856271822ull}}, {{823611114314570816ull, 1282749485017458ull}}, {{16075173041870954600ull, 2052399176027932ull}}, {{5481440804012943032ull, 1641919340822346ull}}, {{695803828468444104ull, 1313535472657877ull}}, {{4802634940291420888ull, 2101656756252603ull}}, {{11220805581716957356ull, 1681325405002082ull}}, {{1597946835889745240ull, 1345060324001666ull}}, {{13624761381649323352ull, 2152096518402665ull}}, {{10899809105319458680ull, 1721677214722132ull}}, {{1341149654771746300ull, 1377341771777706ull}}, {{13213885891860525048ull, 2203746834844329ull}}, {{14260457528230330360ull, 1762997467875463ull}}, {{340319578358533320ull, 1410397974300371ull}}, {{15029650921654467948ull, 1128318379440296ull}}, {{16668743845163328072ull, 1805309407104474ull}}, {{17024343890872572780ull, 1444247525683579ull}}, {{17308823927439968548ull, 1155398020546863ull}}, {{5558025395452487736ull, 1848636832874982ull}}, {{15514466760587721156ull, 1478909466299985ull}}, {{12411573408470176924ull, 1183127573039988ull}}, {{16169168638810372760ull, 1893004116863981ull}}, {{9245986096306387884ull, 1514403293491185ull}}, {{7396788877045110308ull, 1211522634792948ull}}, {{8145513388530266168ull, 1938436215668717ull}}, {{17584457155049943904ull, 1550748972534973ull}}, {{2999519279814224152ull, 1240599178027979ull}}, {{12177928477186579292ull, 1984958684844766ull}}, {{6052993967007353112ull, 1587966947875813ull}}, {{12221092803089703136ull, 1270373558300650ull}}, {{1107004411233973400ull, 2032597693281041ull}}, {{15642998787954820012ull, 1626078154624832ull}}, {{5135701400880035364ull, 1300862523699866ull}}, {{838424611924235936ull, 2081380037919786ull}}, {{15428134948507030040ull, 1665104030335828ull}}, {{1274461514579893064ull, 1332083224268663ull}}, {{16796533682295470196ull, 2131333158829860ull}}, {{13437226945836376156ull, 1705066527063888ull}}, {{18128479186152921572ull, 1364053221651110ull}}, {{10558822624135122900ull, 2182485154641777ull}}, {{1068360469824277672ull, 1745988123713422ull}}, {{11922734820085153108ull, 1396790498970737ull}}, {{4318980453168603680ull, 2234864798353180ull}}, {{3455184362534882944ull, 1787891838682544ull}}, {{6453496304769816676ull, 1430313470946035ull}}, {{5162797043815853340ull, 1144250776756828ull}}, {{4571126455363455024ull, 1830801242810925ull}}, {{3656901164290764020ull, 1464640994248740ull}}, {{2925520931432611216ull, 1171712795398992ull}}, {{8370182305034088268ull, 1874740472638387ull}}, {{17764192288253001584ull, 1499792378110709ull}}, {{17900702645344311588ull, 1199833902488567ull}}, {{13883728973583257252ull, 1919734243981708ull}}, {{38936734640874832ull, 1535787395185367ull}}, {{11099195831938430836ull, 1228629916148293ull}}, {{14069364516359579012ull, 1965807865837269ull}}, {{14944840427829573532ull, 1572646292669815ull}}, {{11955872342263658828ull, 1258117034135852ull}}, {{4372000488654212832ull, 2012987254617364ull}}, {{7186949205665280588ull, 1610389803693891ull}}, {{2060210549790314144ull, 1288311842955113ull}}, {{18053732138632143928ull, 2061298948728180ull}}, {{14442985710905715140ull, 1649039158982544ull}}, {{15243737383466482436ull, 1319231327186035ull}}, {{5943235739836820284ull, 2110770123497657ull}}, {{15822635036095187196ull, 1688616098798125ull}}, {{12658108028876149756ull, 1350892879038500ull}}, {{1806228772492287996ull, 2161428606461601ull}}, {{16202378276961471688ull, 1729142885169280ull}}, {{12961902621569177352ull, 1383314308135424ull}}, {{9670997750284952792ull, 2213302893016679ull}}, {{11426147014969872556ull, 1770642314413343ull}}, {{16519615241459718692ull, 1416513851530674ull}}, {{16905041007909685276ull, 1133211081224539ull}}, {{15980019168429765472ull, 1813137729959263ull}}, {{1715968890518081408ull, 1450510183967411ull}}, {{16130170371382106420ull, 1160408147173928ull}}, {{3672179705759908332ull, 1856653035478286ull}}, {{17695139023575567960ull, 1485322428382628ull}}, {{3088064774634723396ull, 1188257942706103ull}}, {{1251554824673647112ull, 1901212708329765ull}}, {{1001243859738917688ull, 1520970166663812ull}}, {{11869041532016865120ull, 1216776133331049ull}}, {{7922420007001253224ull, 1946841813329679ull}}, {{10027284820342912904ull, 1557473450663743ull}}, {{15400525485758150968ull, 1245978760530994ull}}, {{13572794332987310580ull, 1993566016849591ull}}, {{7168886651647938140ull, 1594852813479673ull}}, {{13113806950802171160ull, 1275882250783738ull}}, {{17292742306541563532ull, 2041411601253981ull}}, {{10144845030491340504ull, 1633129281003185ull}}, {{8115876024393072400ull, 1306503424802548ull}}, {{9296052824287005520ull, 2090405479684077ull}}, {{58144629945783768ull, 1672324383747262ull}}, {{11114562148182357984ull, 1337859506997809ull}}, {{6715252992866041808ull, 2140575211196495ull}}, {{5372202394292833444ull, 1712460168957196ull}}, {{608413100692356432ull, 1369968135165757ull}}, {{4662809775849680616ull, 2191949016265211ull}}, {{40899005937834168ull, 1753559213012169ull}}, {{3722068019492177660ull, 1402847370409735ull}}, {{5955308831187484256ull, 2244555792655576ull}}, {{1074898250208077080ull, 1795644634124461ull}}, {{15617313859134102956ull, 1436515707299568ull}}, {{1425804643081551396ull, 1149212565839655ull}}, {{2281287428930482232ull, 1838740105343448ull}}, {{9203727572628206432ull, 1470992084274758ull}}, {{14741679687586385792ull, 1176793667419806ull}}, {{16207989870654396624ull, 1882869867871690ull}}, {{12966391896523517296ull, 1506295894297352ull}}, {{2994415887734993192ull, 1205036715437882ull}}, {{8480414235117899432ull, 1928058744700611ull}}, {{3094982573352409220ull, 1542446995760489ull}}, {{6165334873423837700ull, 1233957596608391ull}}, {{2485838167994319672ull, 1974332154573426ull}}, {{16746065793363097032ull, 1579465723658740ull}}, {{13396852634690477624ull, 1263572578926992ull}}, {{6677568956537122908ull, 2021716126283188ull}}, {{12720752794713518972ull, 1617372901026550ull}}, {{10176602235770815176ull, 1293898320821240ull}}, {{16282563577233304284ull, 2070237313313984ull}}, {{16715399676528553752ull, 1656189850651187ull}}, {{5993622111739022356ull, 1324951880520950ull}}, {{9589795378782435768ull, 2119923008833520ull}}, {{7671836303025948612ull, 1695938407066816ull}}, {{2448120227678848568ull, 1356750725653453ull}}, {{227643549544247384ull, 2170801161045525ull}}, {{182114839635397908ull, 1736640928836420ull}}, {{145691871708318328ull, 1389312743069136ull}}, {{11301153438959040292ull, 2222900388910617ull}}, {{1662225121683411588ull, 1778320311128494ull}}, {{5019128912088639592ull, 1422656248902795ull}}, {{4015303129670911672ull, 1138124999122236ull}}, {{17492531451699189648ull, 1820999998595577ull}}, {{6615327531875531072ull, 1456799998876462ull}}, {{16360308469726155828ull, 1165439999101169ull}}, {{15108447107336118356ull, 1864703998561871ull}}, {{8397408871126984360ull, 1491763198849497ull}}, {{17785973541127318456ull, 1193410559079597ull}}, {{13700162406836068240ull, 1909456894527356ull}}, {{7270781110726944268ull, 1527565515621885ull}}, {{5816624888581555416ull, 1222052412497508ull}}, {{5617251006988578340ull, 1955283859996013ull}}, {{11872498435074683320ull, 1564227087996810ull}}, {{9497998748059746656ull, 1251381670397448ull}}, {{11507449182153684324ull, 2002210672635917ull}}, {{1827261716239126812ull, 1601768538108734ull}}, {{5151158187733211772ull, 1281414830486987ull}}, {{11931201915115049164ull, 2050263728779179ull}}, {{13234310346833949652ull, 1640210983023343ull}}, {{17966145906950980368ull, 1312168786418674ull}}, {{17677787006895837620ull, 2099470058269879ull}}, {{17831578420258580420ull, 1679576046615903ull}}, {{3197216291981133364ull, 1343660837292723ull}}, {{1426197252427903064ull, 2149857339668357ull}}, {{12209004246168053420ull, 1719885871734685ull}}, {{9767203396934442736ull, 1375908697387748ull}}, {{11938176620353198056ull, 2201453915820397ull}}, {{2171843666798737796ull, 1761163132656318ull}}, {{9116172562922810884ull, 1408930506125054ull}}, {{10982286865080159028ull, 1127144404900043ull}}, {{13882310169386344124ull, 1803431047840069ull}}, {{14795196950250985624ull, 1442744838272055ull}}, {{11836157560200788496ull, 1154195870617644ull}}, {{7869805652095530628ull, 1846713392988231ull}}, {{2606495706934514180ull, 1477370714390585ull}}, {{2085196565547611344ull, 1181896571512468ull}}, {{18093709763843819444ull, 1891034514419948ull}}, {{3406921366849324584ull, 1512827611535959ull}}, {{6414885908221369988ull, 1210262089228767ull}}, {{13953166267896102308ull, 1936419342766027ull}}, {{3783835384833061200ull, 1549135474212822ull}}, {{14095114752092179928ull, 1239308379370257ull}}, {{7794788344379846596ull, 1982893406992412ull}}, {{17303877119729608244ull, 1586314725593929ull}}, {{17532450510525596920ull, 1269051780475143ull}}, {{5915827928389493132ull, 2030482848760230ull}}, {{4732662342711594504ull, 1624386279008184ull}}, {{7475478688911185928ull, 1299509023206547ull}}, {{15650114716999807808ull, 2079214437130475ull}}, {{12520091773599846244ull, 1663371549704380ull}}, {{10016073418879876996ull, 1330697239763504ull}}, {{4957671025982072224ull, 2129115583621607ull}}, {{15034183265011388748ull, 1703292466897285ull}}, {{12027346612009111000ull, 1362633973517828ull}}, {{15554405764472667276ull, 2180214357628525ull}}, {{12443524611578133820ull, 1744171486102820ull}}, {{9954819689262507056ull, 1395337188882256ull}}, {{8549013873336190644ull, 2232539502211610ull}}, {{6839211098668952516ull, 1786031601769288ull}}, {{12850066508418982660ull, 1428825281415430ull}}, {{10280053206735186128ull, 1143060225132344ull}}, {{5380038686550566836ull, 1828896360211751ull}}, {{614682134498543144ull, 1463117088169401ull}}, {{15249140966566475808ull, 1170493670535520ull}}, {{5951881472796809676ull, 1872789872856833ull}}, {{12140202807721268388ull, 1498231898285466ull}}, {{6022813431435104388ull, 1198585518628373ull}}, {{5947152675554256696ull, 1917736829805397ull}}, {{15825768584669136328ull, 1534189463844317ull}}, {{5281917238251488416ull, 1227351571075454ull}}, {{15829765210686202112ull, 1963762513720726ull}}, {{8974463353807051364ull, 1571010010976581ull}}, {{3490221868303730768ull, 1256808008781265ull}}, {{5584354989285969232ull, 2010892814050024ull}}, {{8156832806170685708ull, 1608714251240019ull}}, {{10214815059678458888ull, 1286971400992015ull}}, {{16343704095485534224ull, 2059154241587224ull}}, {{16764312091130337700ull, 1647323393269779ull}}, {{17100798487646180484ull, 1317858714615823ull}}, {{5225184691782426836ull, 2108573943385318ull}}, {{11558845382909762116ull, 1686859154708254ull}}, {{12936425121069720016ull, 1349487323766603ull}}, {{17008931378969641700ull, 2159179718026565ull}}, {{13607145103175713360ull, 1727343774421252ull}}, {{3507018453056750040ull, 1381875019537002ull}}, {{9300578339632710392ull, 2211000031259203ull}}, {{14819160301189988960ull, 1768800025007362ull}}, {{4476630611468170520ull, 1415040020005890ull}}, {{3581304489174536416ull, 1132032016004712ull}}, {{9419435997421168588ull, 1811251225607539ull}}, {{11224897612678845196ull, 1449000980486031ull}}, {{5290569275401165832ull, 1159200784388825ull}}, {{8464910840641865332ull, 1854721255022120ull}}, {{6771928672513492264ull, 1483777004017696ull}}, {{1728194123268883488ull, 1187021603214157ull}}, {{6454459411972123908ull, 1899234565142651ull}}, {{1474218714835788800ull, 1519387652114121ull}}, {{15936770230836272332ull, 1215510121691296ull}}, {{18120134739854215088ull, 1944816194706074ull}}, {{18185456606625282392ull, 1555852955764859ull}}, {{18237714100042136236ull, 1244682364611887ull}}, {{14422947301099776688ull, 1991491783379020ull}}, {{11538357840879821352ull, 1593193426703216ull}}, {{5541337457961946756ull, 1274554741362573ull}}, {{5176791117997204488ull, 2039287586180117ull}}, {{15209479338623494560ull, 1631430068944093ull}}, {{1099537026673064680ull, 1305144055155275ull}}, {{1759259242676903488ull, 2088230488248440ull}}, {{1407407394141522788ull, 1670584390598752ull}}, {{12193972359538949200ull, 1336467512479001ull}}, {{12131658145778498076ull, 2138348019966402ull}}, {{2326628887138977812ull, 1710678415973122ull}}, {{12929349553936913220ull, 1368542732778497ull}}, {{5929564027331419860ull, 2189668372445596ull}}, {{1054302407123225564ull, 1751734697956477ull}}, {{11911488369924311420ull, 1401387758365181ull}}, {{11679683762395077628ull, 2242220413384290ull}}, {{9343747009916062104ull, 1793776330707432ull}}, {{96299978449029036ull, 1435021064565946ull}}, {{14834435241726864520ull, 1148016851652756ull}}, {{16356398757279162588ull, 1836826962644410ull}}, {{13085119005823330068ull, 1469461570115528ull}}, {{17846792834142484700ull, 1175569256092422ull}}, {{13797473275660334232ull, 1880910809747876ull}}, {{7348629805786357060ull, 1504728647798301ull}}, {{2189555029887175324ull, 1203782918238641ull}}, {{14571334492045211492ull, 1926052669181825ull}}, {{11657067593636169192ull, 1540842135345460ull}}, {{9325654074908935352ull, 1232673708276368ull}}, {{11231697705112386244ull, 1972277933242189ull}}, {{12674706978831819316ull, 1577822346593751ull}}, {{6450416768323545132ull, 1262257877275001ull}}, {{2941969199833851564ull, 2019612603640002ull}}, {{13421621804092812220ull, 1615690082912001ull}}, {{7047948628532339452ull, 1292552066329601ull}}, {{3898020176167922480ull, 2068083306127362ull}}, {{14186462585160068952ull, 1654466644901889ull}}, {{15038518882869965484ull, 1323573315921511ull}}, {{16682932583108124132ull, 2117717305474418ull}}, {{2278299622260768336ull, 1694173844379535ull}}, {{1822639697808614668ull, 1355339075503628ull}}, {{17673618775461424760ull, 2168542520805804ull}}, {{17828243835111050132ull, 1734834016644643ull}}, {{3194548623863109136ull, 1387867213315715ull}}, {{5111277798180974620ull, 2220587541305144ull}}, {{7778371053286690016ull, 1776470033044115ull}}, {{6222696842629352012ull, 1421176026435292ull}}, {{16046203918329212580ull, 1136940821148233ull}}, {{3537833380875278188ull, 1819105313837174ull}}, {{6519615519442132876ull, 1455284251069739ull}}, {{8905041230295616624ull, 1164227400855791ull}}, {{6869368338989165952ull, 1862763841369266ull}}, {{1806145856449422436ull, 1490211073095413ull}}, {{8823614314643358596ull, 1192168858476330ull}}, {{14117782903429373756ull, 1907470173562128ull}}, {{226179878517768032ull, 1525976138849703ull}}, {{7559641532298035072ull, 1220780911079762ull}}, {{15784775266418766440ull, 1953249457727619ull}}, {{16317169027876923476ull, 1562599566182095ull}}, {{13053735222301538780ull, 1250079652945676ull}}, {{13507278726198641404ull, 2000127444713082ull}}, {{3427125351475092476ull, 1600101955770466ull}}, {{17499095540147715272ull, 1280081564616372ull}}, {{13241157605268703144ull, 2048130503386196ull}}, {{6903577269473052192ull, 1638504402708957ull}}, {{16590908259804172724ull, 1310803522167165ull}}, {{8098709141977124740ull, 2097285635467465ull}}, {{6478967313581699792ull, 1677828508373972ull}}, {{16251220295091090804ull, 1342262806699177ull}}, {{11244557213178103996ull, 2147620490718684ull}}, {{12684994585284393520ull, 1718096392574947ull}}, {{2769298038743694168ull, 1374477114059958ull}}, {{741528047248000348ull, 2199163382495933ull}}, {{7971920067282220924ull, 1759330705996746ull}}, {{2688187239083866416ull, 1407464564797397ull}}, {{13218596235492824100ull, 1125971651837917ull}}, {{6392358717820877272ull, 1801554642940668ull}}, {{12492584603740522464ull, 1441243714352534ull}}, {{13683416497734328292ull, 1152994971482027ull}}, {{7136071137407283976ull, 1844791954371244ull}}, {{9398205724667737504ull, 1475833563496995ull}}, {{7518564579734190004ull, 1180666850797596ull}}, {{4651005698090883360ull, 1889066961276154ull}}, {{7410153373214617012ull, 1511253569020923ull}}, {{13306820328055514256ull, 1209002855216738ull}}, {{17601563710146912484ull, 1934404568346781ull}}, {{10391902153375619664ull, 1547523654677425ull}}, {{8313521722700495732ull, 1238018923741940ull}}, {{13301634756320793172ull, 1980830277987104ull}}, {{14330656619798544860ull, 1584664222389683ull}}, {{396478851613104916ull, 1267731377911747ull}}, {{4323714977322878192ull, 2028370204658795ull}}, {{3458971981858302552ull, 1622696163727036ull}}, {{17524572844454283336ull, 1298156930981628ull}}, {{5903223662675391400ull, 2077051089570606ull}}, {{1033230115398402796ull, 1661640871656485ull}}, {{826584092318722236ull, 1329312697325188ull}}, {{16079929806677596872ull, 2126900315720300ull}}, {{12863943845342077496ull, 1701520252576240ull}}, {{10291155076273661996ull, 1361216202060992ull}}, {{1708452863070217904ull, 2177945923297588ull}}, {{8745459919939994968ull, 1742356738638070ull}}, {{6996367935951995976ull, 1393885390910456ull}}, {{3815491068039372912ull, 2230216625456730ull}}, {{3052392854431498332ull, 1784173300365384ull}}, {{6131263098287108988ull, 1427338640292307ull}}, {{15973056922855418160ull, 1141870912233845ull}}, {{7110147002859117440ull, 1826993459574153ull}}, {{13066815231771114596ull, 1461594767659322ull}}, {{3074754555933071032ull, 1169275814127458ull}}, {{1230258474751003328ull, 1870841302603933ull}}, {{8362904409284623308ull, 1496673042083146ull}}, {{3000974712685788324ull, 1197338433666517ull}}, {{8490908355039171640ull, 1915741493866427ull}}, {{17860773128257068284ull, 1532593195093141ull}}, {{10599269687863744304ull, 1226074556074513ull}}, {{13269482685840080560ull, 1961719289719221ull}}, {{6926237333930154124ull, 1569375431775377ull}}, {{16609036311369854268ull, 1255500345420301ull}}, {{749016394998394572ull, 2008800552672483ull}}, {{7977910745482536304ull, 1607040442137986ull}}, {{2692979781644118720ull, 1285632353710389ull}}, {{11687465280114410596ull, 2057011765936622ull}}, {{1971274594607707832ull, 1645609412749298ull}}, {{8955717305169986912ull, 1316487530199438ull}}, {{10639798873530068736ull, 2106380048319101ull}}, {{4822490284082144664ull, 1685104038655281ull}}, {{168643412523805408ull, 1348083230924225ull}}, {{269829460038088656ull, 2156933169478760ull}}, {{215863568030470924ull, 1725546535583008ull}}, {{7551388483908197384ull, 1380437228466406ull}}, {{4703523944769295168ull, 2208699565546250ull}}, {{3762819155815436136ull, 1766959652437000ull}}, {{3010255324652348908ull, 1413567721949600ull}}, {{2408204259721879124ull, 1130854177559680ull}}, {{3853126815555006604ull, 1809366684095488ull}}, {{10461199081927825928ull, 1447493347276390ull}}, {{8368959265542260744ull, 1157994677821112ull}}, {{17079683639609527512ull, 1852791484513779ull}}, {{17353095726429532332ull, 1482233187611023ull}}, {{2814430136917894896ull, 1185786550088819ull}}, {{11881785848552452480ull, 1897258480142110ull}}, {{9505428678841961984ull, 1517806784113688ull}}, {{14983040572557390232ull, 1214245427290950ull}}, {{5526120842382272760ull, 1942792683665521ull}}, {{731547859163907884ull, 1554234146932417ull}}, {{11653284731556857276ull, 1243387317545933ull}}, {{14955906755749061320ull, 1989419708073493ull}}, {{896678960373518084ull, 1591535766458795ull}}, {{717343168298814468ull, 1273228613167036ull}}, {{12215795513503834120ull, 2037165781067257ull}}, {{2393938781319246648ull, 1629732624853806ull}}, {{16672546284023038612ull, 1303786099883044ull}}, {{15608027610211130808ull, 2086057759812871ull}}, {{8797073273426994324ull, 1668846207850297ull}}, {{18105705062967326428ull, 1335076966280237ull}}, {{14211732841780080996ull, 2136123146048380ull}}, {{11369386273424064796ull, 1708898516838704ull}}, {{12784857833481162160ull, 1367118813470963ull}}, {{16766423718827949132ull, 2187390101553541ull}}, {{9723790160320448984ull, 1749912081242833ull}}, {{15157729757740179832ull, 1399929664994266ull}}, {{16873669982900467084ull, 2239887463990826ull}}, {{9809587171578463344ull, 1791909971192661ull}}, {{4158320922520860352ull, 1433527976954129ull}}, {{7016005552758598604ull, 1146822381563303ull}}, {{7536260069671847444ull, 1834915810501285ull}}, {{6029008055737477956ull, 1467932648401028ull}}, {{12201904074073803012ull, 1174346118720822ull}}, {{4765651259550443524ull, 1878953789953316ull}}, {{123172192898444496ull, 1503163031962653ull}}, {{7477235383802576244ull, 1202530425570122ull}}, {{15652925428826032312ull, 1924048680912195ull}}, {{12522340343060825852ull, 1539238944729756ull}}, {{6328523459706750356ull, 1231391155783805ull}}, {{10125637535530800572ull, 1970225849254088ull}}, {{15479207657908461104ull, 1576180679403270ull}}, {{12383366126326768884ull, 1260944543522616ull}}, {{12434688172639009568ull, 2017511269636186ull}}, {{6258401723369297332ull, 1614009015708949ull}}, {{8696070193437348188ull, 1291207212567159ull}}, {{2845665865274026132ull, 2065931540107455ull}}, {{2276532692219220904ull, 1652745232085964ull}}, {{5510574968517287048ull, 1322196185668771ull}}, {{1438222320143838628ull, 2115513897070034ull}}, {{4839926670856981224ull, 1692411117656027ull}}, {{14939987780911315948ull, 1353928894124821ull}}, {{16525282819974284876ull, 2166286230599714ull}}, {{16909575070721338224ull, 1733028984479771ull}}, {{9838311241835160256ull, 1386423187583817ull}}, {{983902727968615116ull, 2218277100134108ull}}, {{8165819811858712740ull, 1774621680107286ull}}, {{2843307034745059868ull, 1419697344085829ull}}, {{5963994442537958216ull, 1135757875268663ull}}, {{5853042293318822824ull, 1817212600429861ull}}, {{993085019913147936ull, 1453770080343889ull}}, {{4483816830672428672ull, 1163016064275111ull}}, {{18242153373301616844ull, 1860825702840177ull}}, {{7215025069157472828ull, 1488660562272142ull}}, {{16840066499551709232ull, 1190928449817713ull}}, {{4808013510831272836ull, 1905485519708342ull}}, {{14914457252890749236ull, 1524388415766673ull}}, {{863519358086868420ull, 1219510732613339ull}}, {{8760328602422810120ull, 1951217172181342ull}}, {{18076309326163979064ull, 1560973737745073ull}}, {{3393001016705452280ull, 1248778990196059ull}}, {{12807499256212544296ull, 1998046384313694ull}}, {{13935348219711945760ull, 1598437107450955ull}}, {{11148278575769556608ull, 1278749685960764ull}}, {{6769199277005559604ull, 2045999497537223ull}}, {{12794057051088268328ull, 1636799598029778ull}}, {{17613943270354435308ull, 1309439678423822ull}}, {{13424913973599455204ull, 2095103485478116ull}}, {{7050582364137653840ull, 1676082788382493ull}}, {{13019163520793943716ull, 1340866230705994ull}}, {{9762615189044578980ull, 2145385969129591ull}}, {{4120743336493752860ull, 1716308775303673ull}}, {{10675292298678822936ull, 1373047020242938ull}}, {{13391118863144206372ull, 2196875232388701ull}}, {{7023546275773454776ull, 1757500185910961ull}}, {{1929488205876853496ull, 1406000148728769ull}}, {{10465878758886786240ull, 2249600237966030ull}}, {{8372703007109428992ull, 1799680190372824ull}}, {{10387511220429453516ull, 1439744152298259ull}}, {{11999357791085473136ull, 1151795321838607ull}}, {{4441577206769115728ull, 1842872514941772ull}}, {{14621308209641023552ull, 1474298011953417ull}}, {{4318348938228998192ull, 1179438409562734ull}}, {{14288055930650217756ull, 1887101455300374ull}}, {{15119793559262084528ull, 1509681164240299ull}}, {{15785183662151577944ull, 1207744931392239ull}}, {{14188247415216793744ull, 1932391890227583ull}}, {{282551487947704024ull, 1545913512182067ull}}, {{11294087634583894188ull, 1236730809745653ull}}, {{14381191400592320380ull, 1978769295593045ull}}, {{11504953120473856304ull, 1583015436474436ull}}, {{5514613681637174720ull, 1266412349179549ull}}, {{16202079520103300200ull, 2026259758687278ull}}, {{1893617171856909192ull, 1621007806949823ull}}, {{8893591366969348000ull, 1296806245559858ull}}, {{10540397372409046476ull, 2074889992895773ull}}, {{15811015527411057824ull, 1659911994316618ull}}, {{1580765977703115292ull, 1327929595453295ull}}, {{2529225564324984468ull, 2124687352725272ull}}, {{13091426895685718544ull, 1699749882180217ull}}, {{3094443887064754188ull, 1359799905744174ull}}, {{12329807848787427348ull, 2175679849190678ull}}, {{17242543908513762524ull, 1740543879352542ull}}, {{6415337497327189372ull, 1392435103482034ull}}, {{17643237625207323644ull, 2227896165571254ull}}, {{17803938914907769236ull, 1782316932457003ull}}, {{3175104687700484420ull, 1425853545965603ull}}, {{9918781379644208180ull, 1140682836772482ull}}, {{1112654948463091800ull, 1825092538835972ull}}, {{11958170402996204408ull, 1460074031068777ull}}, {{2187838692913142880ull, 1168059224855022ull}}, {{7189890723402938932ull, 1868894759768035ull}}, {{5751912578722351144ull, 1495115807814428ull}}, {{11980227692461701564ull, 1196092646251542ull}}, {{4410969048971081208ull, 1913748234002468ull}}, {{10907472868660685612ull, 1530998587201974ull}}, {{12415327109670458812ull, 1224798869761579ull}}, {{8796476931247003132ull, 1959678191618527ull}}, {{18105227989223333476ull, 1567742553294821ull}}, {{10794833576636756456ull, 1254194042635857ull}}, {{2514338463651169040ull, 2006710468217372ull}}, {{13079517215146666200ull, 1605368374573897ull}}, {{3084916142633512312ull, 1284294699659118ull}}, {{1246517013471709380ull, 2054871519454589ull}}, {{4686562425519277828ull, 1643897215563671ull}}, {{59901125673511936ull, 1315117772450937ull}}, {{3785190615819529424ull, 2104188435921499ull}}, {{6717501307397533864ull, 1683350748737199ull}}, {{9063349860659937412ull, 1346680598989759ull}}, {{3433313332830168892ull, 2154688958383615ull}}, {{2746650666264135112ull, 1723751166706892ull}}, {{13265366977237039060ull, 1379000933365513ull}}, {{17535238348837352172ull, 2206401493384821ull}}, {{10338841864327971416ull, 1765121194707857ull}}, {{892375861978556484ull, 1412096955766286ull}}, {{15471295948550486480ull, 1129677564613028ull}}, {{2617980629229316432ull, 1807484103380846ull}}, {{16851779762351094436ull, 1445987282704676ull}}, {{9792074995138965228ull, 1156789826163741ull}}, {{8288622362738523716ull, 1850863721861986ull}}, {{2941549075448908648ull, 1480690977489589ull}}, {{6042588075101037244ull, 1184552781991671ull}}, {{2289443290677838944ull, 1895284451186674ull}}, {{5520903447284181476ull, 1516227560949339ull}}, {{8106071572569255504ull, 1212982048759471ull}}, {{5591016886626988160ull, 1940771278015154ull}}, {{8162162324043500852ull, 1552617022412123ull}}, {{13908427488718621328ull, 1242093617929698ull}}, {{117391093498332188ull, 1987349788687518ull}}, {{7472610504282486396ull, 1589879830950014ull}}, {{9667437218167899440ull, 1271903864760011ull}}, {{8089201919584818456ull, 2035046183616018ull}}, {{13850059165151675412ull, 1628036946892814ull}}, {{14769396146863250652ull, 1302429557514251ull}}, {{16252336205497380400ull, 2083887292022802ull}}, {{5623171334914083672ull, 1667109833618242ull}}, {{15566583512156997908ull, 1333687866894593ull}}, {{2770440730999734712ull, 2133900587031350ull}}, {{2216352584799787768ull, 1707120469625080ull}}, {{1773082067839830216ull, 1365696375700064ull}}, {{10215628938027548992ull, 2185114201120102ull}}, {{793805520938218548ull, 1748091360896082ull}}, {{11703090860976305808ull, 1398473088716865ull}}, {{278201303852537676ull, 2237556941946985ull}}, {{222561043082030140ull, 1790045553557588ull}}, {{7556746463949444760ull, 1432036442846070ull}}, {{6045397171159555808ull, 1145629154276856ull}}, {{2293937844371468644ull, 1833006646842970ull}}, {{1835150275497174916ull, 1466405317474376ull}}, {{16225515479365381224ull, 1173124253979500ull}}, {{7514080693275058344ull, 1876998806367201ull}}, {{2321915739878136352ull, 1501599045093761ull}}, {{16614927850870150376ull, 1201279236075008ull}}, {{4447791672940778660ull, 1922046777720014ull}}, {{7247582153094533252ull, 1537637422176011ull}}, {{2108716907733716276ull, 1230109937740809ull}}, {{10752644681857766692ull, 1968175900385294ull}}, {{12291464560228123676ull, 1574540720308235ull}}, {{9833171648182498940ull, 1259632576246588ull}}, {{12043725822350087984ull, 2015412121994541ull}}, {{5945631843138160064ull, 1612329697595633ull}}, {{12135203103994348696ull, 1289863758076506ull}}, {{12037627336907137268ull, 2063782012922410ull}}, {{9630101869525709816ull, 1651025610337928ull}}, {{15082779125104388496ull, 1320820488270342ull}}, {{9375051341199380304ull, 2113312781232548ull}}, {{14878738702443324888ull, 1690650224986038ull}}, {{834944517728928940ull, 1352520179988831ull}}, {{12403957672592017276ull, 2164032287982129ull}}, {{13612514952815524144ull, 1731225830385703ull}}, {{18268709591736239960ull, 1384980664308562ull}}, {{14472540087810342648ull, 2215969062893700ull}}, {{11578032070248274116ull, 1772775250314960ull}}, {{9262425656198619292ull, 1418220200251968ull}}, {{14788638154442716080ull, 1134576160201574ull}}, {{12593774602882614760ull, 1815321856322519ull}}, {{13764368497048002132ull, 1452257485058015ull}}, {{11011494797638401704ull, 1161805988046412ull}}, {{2860996417253801436ull, 1858889580874260ull}}, {{2288797133803041148ull, 1487111664699408ull}}, {{9209735336526253564ull, 1189689331759526ull}}, {{7356878908958185060ull, 1903502930815242ull}}, {{16953549571392279016ull, 1522802344652193ull}}, {{2494793212888092244ull, 1218241875721755ull}}, {{3991669140620947588ull, 1949187001154808ull}}, {{10572032941980578716ull, 1559349600923846ull}}, {{4768277538842552652ull, 1247479680739077ull}}, {{11318592876889994564ull, 1995967489182523ull}}, {{16433571930995816300ull, 1596773991346018ull}}, {{2078811100570922068ull, 1277419193076815ull}}, {{3326097760913475312ull, 2043870708922904ull}}, {{6350227023472690572ull, 1635096567138323ull}}, {{12458879248261973104ull, 1308077253710658ull}}, {{16244857982477246644ull, 2092923605937053ull}}, {{1927839941756066344ull, 1674338884749643ull}}, {{8920969582888673720ull, 1339471107799714ull}}, {{3205504888396146988ull, 2143153772479543ull}}, {{9943101540200738236ull, 1714523017983634ull}}, {{11643830046902500912ull, 1371618414386907ull}}, {{3872732816076360164ull, 2194589463019052ull}}, {{14166232697086819100ull, 1755671570415241ull}}, {{7643637342927544956ull, 1404537256332193ull}}, {{8540470933942161612ull, 2247259610131509ull}}, {{10521725561895639612ull, 1797807688105207ull}}, {{1038682820032691044ull, 1438246150484166ull}}, {{15588341514993794128ull, 1150596920387332ull}}, {{10183951165022429312ull, 1840955072619732ull}}, {{768463302534122800ull, 1472764058095786ull}}, {{15372165900994939532ull, 1178211246476628ull}}, {{2459372553140441316ull, 1885137994362606ull}}, {{16724893301479994344ull, 1508110395490084ull}}, {{17069263455925905800ull, 1206488316392067ull}}, {{12553426270513807988ull, 1930381306227308ull}}, {{17421438645894867036ull, 1544305044981846ull}}, {{10247802101973983304ull, 1235444035985477ull}}, {{1639088104190731996ull, 1976710457576764ull}}, {{5000619298094495920ull, 1581368366061411ull}}, {{311146623733686412ull, 1265094692849129ull}}, {{7876532227457718908ull, 2024151508558606ull}}, {{2611876967224264800ull, 1619321206846885ull}}, {{2089501573779411840ull, 1295456965477508ull}}, {{18100597777014700240ull, 2072731144764012ull}}, {{7101780592127939544ull, 1658184915811210ull}}, {{5681424473702351636ull, 1326547932648968ull}}, {{5400930343181852296ull, 2122476692238349ull}}, {{8010093089287392160ull, 1697981353790679ull}}, {{10097423286171824048ull, 1358385083032543ull}}, {{12466528443133008156ull, 2173416132852069ull}}, {{13662571569248316848ull, 1738732906281655ull}}, {{10930057255398653480ull, 1390986325025324ull}}, {{6420045164412114596ull, 2225578120040519ull}}, {{8825384946271602000ull, 1780462496032415ull}}, {{7060307957017281600ull, 1424369996825932ull}}, {{16716292809839556248ull, 1139495997460745ull}}, {{8299324422033738384ull, 1823193595937193ull}}, {{14018157167110811352ull, 1458554876749754ull}}, {{14903874548430559404ull, 1166843901399803ull}}, {{1710106389037433112ull, 1866950242239686ull}}, {{16125480370197587780ull, 1493560193791748ull}}, {{1832337851932339256ull, 1194848155033399ull}}, {{10310438192575563456ull, 1911757048053438ull}}, {{15627048183544271412ull, 1529405638442750ull}}, {{12501638546835417128ull, 1223524510754200ull}}, {{1555877601227115788ull, 1957639217206721ull}}, {{16002097339949333924ull, 1566111373765376ull}}, {{9112329057217556816ull, 1252889099012301ull}}, {{7201028862064270260ull, 2004622558419682ull}}, {{16828869533877147176ull, 1603698046735745ull}}, {{13463095627101717740ull, 1282958437388596ull}}, {{14162255373878927740ull, 2052733499821754ull}}, {{15019153113845052516ull, 1642186799857403ull}}, {{947276046850311044ull, 1313749439885923ull}}, {{16273036933928138960ull, 2101999103817476ull}}, {{9329080732400600844ull, 1681599283053981ull}}, {{3773915771178570352ull, 1345279426443185ull}}, {{6038265233885712568ull, 2152447082309096ull}}, {{1141263372366659728ull, 1721957665847277ull}}, {{11981057142119058752ull, 1377566132677821ull}}, {{11790993797906673360ull, 2204105812284514ull}}, {{13122143853067249008ull, 1763284649827611ull}}, {{6808366267711888884ull, 1410627719862089ull}}, {{9136041828911421432ull, 1128502175889671ull}}, {{7238969296774453644ull, 1805603481423474ull}}, {{9480524252161473236ull, 1444482785138779ull}}, {{11273768216471088912ull, 1155586228111023ull}}, {{14348680331611831940ull, 1848937964977637ull}}, {{4100246635805644904ull, 1479150371982110ull}}, {{3280197308644515924ull, 1183320297585688ull}}, {{1558966879089315156ull, 1893312476137101ull}}, {{16004568762239093416ull, 1514649980909680ull}}, {{12803655009791274732ull, 1211719984727744ull}}, {{9417801571440308604ull, 1938751975564391ull}}, {{3844892442410336560ull, 1551001580451513ull}}, {{10454611583412089892ull, 1240801264361210ull}}, {{16727378533459343832ull, 1985282022977936ull}}, {{9692554012025564740ull, 1588225618382349ull}}, {{11443392024362362116ull, 1270580494705879ull}}, {{7241380794754048416ull, 2032928791529407ull}}, {{16861151080028969704ull, 1626343033223525ull}}, {{13488920864023175760ull, 1301074426578820ull}}, {{3135529308727529604ull, 2081719082526113ull}}, {{9887121076465844328ull, 1665375266020890ull}}, {{7909696861172675464ull, 1332300212816712ull}}, {{16344863792618191064ull, 2131680340506739ull}}, {{16765239848836463176ull, 1705344272405391ull}}, {{9722843064327260216ull, 1364275417924313ull}}, {{11867200088181706024ull, 2182840668678901ull}}, {{5804411255803454496ull, 1746272534943121ull}}, {{954180189900853272ull, 1397018027954497ull}}, {{5216037118583275560ull, 2235228844727195ull}}, {{4172829694866620448ull, 1788183075781756ull}}, {{18095659014860937652ull, 1430546460625404ull}}, {{18165876026630660444ull, 1144437168500323ull}}, {{6929308754157594772ull, 1831099469600518ull}}, {{12922144632809896464ull, 1464879575680414ull}}, {{14027064520989827492ull, 1171903660544331ull}}, {{15064605604099903344ull, 1875045856870930ull}}, {{12051684483279922676ull, 1500036685496744ull}}, {{13330696401365848464ull, 1200029348397395ull}}, {{2882370168475805924ull, 1920046957435833ull}}, {{9684593764264465388ull, 1536037565948666ull}}, {{4058326196669661984ull, 1228830052758933ull}}, {{2803973099929548856ull, 1966128084414293ull}}, {{9621876109427459728ull, 1572902467531434ull}}, {{11386849702283878108ull, 1258321974025147ull}}, {{3461564264686563680ull, 2013315158440236ull}}, {{17526646670716892236ull, 1610652126752188ull}}, {{2953270892347782820ull, 1288521701401751ull}}, {{15793279871982183480ull, 2061634722242801ull}}, {{8945275082843836460ull, 1649307777794241ull}}, {{3466871251533158844ull, 1319446222235393ull}}, {{1857645187711143832ull, 2111113955576629ull}}, {{5175464964910825388ull, 1688891164461303ull}}, {{11519069601412480956ull, 1351112931569042ull}}, {{3673116103292328236ull, 2161780690510468ull}}, {{10317190512117683236ull, 1729424552408374ull}}, {{11943101224436056912ull, 1383539641926699ull}}, {{8040915514871960088ull, 2213663427082719ull}}, {{10122081226639478396ull, 1770930741666175ull}}, {{8097664981311582716ull, 1416744593332940ull}}, {{6478131985049266172ull, 1133395674666352ull}}, {{14054359990820736200ull, 1813433079466163ull}}, {{175441548430857988ull, 1450746463572931ull}}, {{14897748497712327684ull, 1160597170858344ull}}, {{12768351152113993324ull, 1856955473373351ull}}, {{6525332106949284336ull, 1485564378698681ull}}, {{1530916870817517148ull, 1188451502958945ull}}, {{2449466993308027436ull, 1901522404734312ull}}, {{13027620038872152916ull, 1521217923787449ull}}, {{14111444845839632656ull, 1216974339029959ull}}, {{11510265309117681284ull, 1947158942447935ull}}, {{9208212247294145024ull, 1557727153958348ull}}, {{14745267427319136668ull, 1246181723166678ull}}, {{1456334995259156728ull, 1993890757066686ull}}, {{15922463255174966676ull, 1595112605653348ull}}, {{1669924159914242368ull, 1276090084522679ull}}, {{10050576285346608440ull, 2041744135236286ull}}, {{4351112213535376428ull, 1633395308189029ull}}, {{7170238585570211464ull, 1306716246551223ull}}, {{7783032922170428024ull, 2090745994481957ull}}, {{17294472781962073388ull, 1672596795585565ull}}, {{13835578225569658708ull, 1338077436468452ull}}, {{7379529901943812644ull, 2140923898349524ull}}, {{9592972736296960436ull, 1712739118679619ull}}, {{11363727003779478672ull, 1370191294943695ull}}, {{18181963206047165876ull, 2192306071909912ull}}, {{7166872935353912056ull, 1753844857527930ull}}, {{5733498348283129644ull, 1403075886022344ull}}, {{16552294986736828076ull, 2244921417635750ull}}, {{13241835989389462460ull, 1795937134108600ull}}, {{10593468791511569968ull, 1436749707286880ull}}, {{8474775033209255976ull, 1149399765829504ull}}, {{2491593608909078592ull, 1839039625327207ull}}, {{13061321331352993844ull, 1471231700261765ull}}, {{10449057065082395072ull, 1176985360209412ull}}, {{1961096045164190824ull, 1883176576335060ull}}, {{1568876836131352660ull, 1506541261068048ull}}, {{8633799098388902776ull, 1205233008854438ull}}, {{10124729742680334116ull, 1928372814167101ull}}, {{4410434979402356968ull, 1542698251333681ull}}, {{18285743242489526868ull, 1234158601066944ull}}, {{18189142743757512020ull, 1974653761707111ull}}, {{10861965380264099292ull, 1579723009365689ull}}, {{12378921118953189756ull, 1263778407492551ull}}, {{12427576160841282968ull, 2022045451988082ull}}, {{2563363299189205728ull, 1617636361590466ull}}, {{16808085898319005872ull, 1294109089272372ull}}, {{12135542178342768104ull, 2070574542835796ull}}, {{6019084927932304160ull, 1656459634268637ull}}, {{15883314386571574296ull, 1325167707414909ull}}, {{14345256574288787908ull, 2120268331863855ull}}, {{11476205259431030328ull, 1696214665491084ull}}, {{12870313022286734584ull, 1356971732392867ull}}, {{5835105576691134044ull, 2171154771828588ull}}, {{12046782090836727880ull, 1736923817462870ull}}, {{9637425672669382304ull, 1389539053970296ull}}, {{8041183446787191040ull, 2223262486352474ull}}, {{10122295572171663156ull, 1778609989081979ull}}, {{11787185272479240848ull, 1422887991265583ull}}, {{16808445847467213324ull, 1138310393012466ull}}, {{1068071652754169056ull, 1821296628819947ull}}, {{11922503766429066216ull, 1457037303055957ull}}, {{2159305383659432324ull, 1165629842444766ull}}, {{14522935058080822692ull, 1865007747911625ull}}, {{11618348046464658152ull, 1492006198329300ull}}, {{9294678437171726520ull, 1193604958663440ull}}, {{14871485499474762436ull, 1909767933861504ull}}, {{15586537214321720272ull, 1527814347089203ull}}, {{1401183327231645248ull, 1222251477671363ull}}, {{16999288582538273688ull, 1955602364274180ull}}, {{13599430866030618952ull, 1564481891419344ull}}, {{14568893507566405484ull, 1251585513135475ull}}, {{4863485538396697160ull, 2002536821016761ull}}, {{201439615975447404ull, 1602029456813409ull}}, {{3850500507522268244ull, 1281623565450727ull}}, {{9850149626777539516ull, 2050597704721163ull}}, {{15258817330905852260ull, 1640478163776930ull}}, {{12207053864724681808ull, 1312382531021544ull}}, {{8463239739333759924ull, 2099812049634471ull}}, {{3081242976725097616ull, 1679849639707577ull}}, {{13533040825605809060ull, 1343879711766061ull}}, {{14274167691485473852ull, 2150207538825698ull}}, {{351287708962648112ull, 1720166031060559ull}}, {{3970378981912028812ull, 1376132824848447ull}}, {{10041955185801156424ull, 2201812519757515ull}}, {{8033564148640925140ull, 1761450015806012ull}}, {{17494897763138471080ull, 1409160012644809ull}}, {{17685267025252687188ull, 1127328010115847ull}}, {{13539031981436658208ull, 1803724816185356ull}}, {{7141876770407416244ull, 1442979852948285ull}}, {{5713501416325932992ull, 1154383882358628ull}}, {{5452253451379582468ull, 1847014211773805ull}}, {{4361802761103665972ull, 1477611369419044ull}}, {{7178791023624843100ull, 1182089095535235ull}}, {{11486065637799748964ull, 1891342552856376ull}}, {{5499503695497888848ull, 1513074042285101ull}}, {{710254141656400756ull, 1210459233828081ull}}, {{12204453070875972180ull, 1936734774124929ull}}, {{13452911271442688064ull, 1549387819299943ull}}, {{18141026646637971100ull, 1239510255439954ull}}, {{17957596190395022788ull, 1983216408703927ull}}, {{6987379322832197584ull, 1586573126963142ull}}, {{16657949902491489036ull, 1269258501570513ull}}, {{4516626955534920520ull, 2030813602512822ull}}, {{14681348008653667384ull, 1624650882010257ull}}, {{4366380777439113260ull, 1299720705608206ull}}, {{18054255688128312188ull, 2079553128973129ull}}, {{18132753365244560076ull, 1663642503178503ull}}, {{3438156247969917088ull, 1330914002542803ull}}, {{1811701182009957020ull, 2129462404068485ull}}, {{1449360945607965616ull, 1703569923254788ull}}, {{8538186385970193140ull, 1362855938603830ull}}, {{13661098217552309024ull, 2180569501766128ull}}, {{18307576203525667864ull, 1744455601412902ull}}, {{7267363333336713644ull, 1395564481130322ull}}, {{15317130148080652156ull, 2232903169808515ull}}, {{12253704118464521724ull, 1786322535846812ull}}, {{2424265665287796732ull, 1429058028677450ull}}, {{1939412532230237388ull, 1143246422941960ull}}, {{3103060051568379820ull, 1829194276707136ull}}, {{17239843300222345148ull, 1463355421365708ull}}, {{2723828195952145148ull, 1170684337092567ull}}, {{8047473928265342560ull, 1873094939348107ull}}, {{17506025586838005020ull, 1498475951478485ull}}, {{14004820469470404016ull, 1198780761182788ull}}, {{271619862701184484ull, 1918049217892462ull}}, {{11285342334386678556ull, 1534439374313969ull}}, {{12717622682251253168ull, 1227551499451175ull}}, {{1901452217892453456ull, 1964082399121881ull}}, {{16278557033281604056ull, 1571265919297504ull}}, {{16712194441367193568ull, 1257012735438003ull}}, {{4603418217736047772ull, 2011220376700806ull}}, {{18440129833156479508ull, 1608976301360644ull}}, {{18441452681267093928ull, 1287181041088515ull}}, {{11059580216317798672ull, 2059489665741625ull}}, {{8847664173054238940ull, 1647591732593300ull}}, {{7078131338443391152ull, 1318073386074640ull}}, {{11325010141509425840ull, 2108917417719424ull}}, {{12749356927949450996ull, 1687133934175539ull}}, {{13888834357101471120ull, 1349707147340431ull}}, {{14843437341878533148ull, 2159531435744690ull}}, {{11874749873502826516ull, 1727625148595752ull}}, {{2121102269318440568ull, 1382100118876602ull}}, {{7083112445651415232ull, 2211360190202563ull}}, {{13045187586004952832ull, 1769088152162050ull}}, {{10436150068803962264ull, 1415270521729640ull}}, {{8348920055043169812ull, 1132216417383712ull}}, {{17047620902810982020ull, 1811546267813939ull}}, {{17327445536990695940ull, 1449237014251151ull}}, {{10172607614850646428ull, 1159389611400921ull}}, {{8897474554277213640ull, 1855023378241474ull}}, {{10807328458163681236ull, 1484018702593179ull}}, {{12335211581272855312ull, 1187214962074543ull}}, {{16046989715294658176ull, 1899543939319269ull}}, {{16526940586977636864ull, 1519635151455415ull}}, {{13221552469582109492ull, 1215708121164332ull}}, {{6397088692363733892ull, 1945132993862932ull}}, {{16185717398116718084ull, 1556106395090345ull}}, {{12948573918493374468ull, 1244885116072276ull}}, {{13339020640105578500ull, 1991816185715642ull}}, {{3292518882600642152ull, 1593452948572514ull}}, {{6323363920822424044ull, 1274762358858011ull}}, {{2738684643832057828ull, 2039619774172818ull}}, {{9569645344549466908ull, 1631695819338254ull}}, {{11345065090381483848ull, 1305356655470603ull}}, {{14462755329868463836ull, 2088570648752965ull}}, {{11570204263894771068ull, 1670856519002372ull}}, {{1877465781631996208ull, 1336685215201898ull}}, {{17761340509578835228ull, 2138696344323036ull}}, {{10519723592921157860ull, 1710957075458429ull}}, {{12105127689078836608ull, 1368765660366743ull}}, {{15678855487784228252ull, 2190025056586789ull}}, {{16232433204969292924ull, 1752020045269431ull}}, {{9296597749233524016ull, 1401616036215545ull}}, {{14874556398773638428ull, 2242585657944872ull}}, {{4520947489535090096ull, 1794068526355898ull}}, {{10995455621111892724ull, 1435254821084718ull}}, {{16175062126373334824ull, 1148203856867774ull}}, {{14812052957971604752ull, 1837126170988439ull}}, {{15538991181119194124ull, 1469700936790751ull}}, {{8741844130153444976ull, 1175760749432601ull}}, {{6608252978761691316ull, 1881217199092162ull}}, {{16354648827235084020ull, 1504973759273729ull}}, {{16773067876529977540ull, 1203979007418983ull}}, {{4700815713996502124ull, 1926366411870374ull}}, {{7450001385939112024ull, 1541093129496299ull}}, {{9649349923493199940ull, 1232874503597039ull}}, {{4370913433363388936ull, 1972599205755263ull}}, {{10875428376174531796ull, 1578079364604210ull}}, {{8700342700939625436ull, 1262463491683368ull}}, {{10231199506761490376ull, 2019941586693389ull}}, {{11874308420151102624ull, 1615953269354711ull}}, {{5810097921378971776ull, 1292762615483769ull}}, {{16674854303690175488ull, 2068420184774030ull}}, {{13339883442952140392ull, 1654736147819224ull}}, {{14361255569103622636ull, 1323788918255379ull}}, {{11909962466340065248ull, 2118062269208607ull}}, {{2149272343588231552ull, 1694449815366886ull}}, {{16476813133838226532ull, 1355559852293508ull}}, {{4226808125689700516ull, 2168895763669614ull}}, {{7070795315293670736ull, 1735116610935691ull}}, {{1967287437493026264ull, 1388093288748553ull}}, {{17905055158956483316ull, 2220949261997684ull}}, {{18013392941907096976ull, 1776759409598147ull}}, {{7032016724041856936ull, 1421407527678518ull}}, {{13004311008717306192ull, 1137126022142814ull}}, {{9738851169721958940ull, 1819401635428503ull}}, {{15169778565261387800ull, 1455521308342802ull}}, {{4757125222725289592ull, 1164417046674242ull}}, {{11300749171102373672ull, 1863067274678787ull}}, {{1661901707398078292ull, 1490453819743030ull}}, {{1329521365918462632ull, 1192363055794424ull}}, {{9505931814953360860ull, 1907780889271078ull}}, {{14983443081446509332ull, 1526224711416862ull}}, {{4608056835673386820ull, 1220979769133490ull}}, {{7372890937077418912ull, 1953567630613584ull}}, {{9587661564403845452ull, 1562854104490867ull}}, {{291431622039255716ull, 1250283283592694ull}}, {{7844988224746629792ull, 2000453253748310ull}}, {{6275990579797303836ull, 1600362602998648ull}}, {{12399490093321663712ull, 1280290082398918ull}}, {{16149835334572751620ull, 2048464131838269ull}}, {{16609217082400111620ull, 1638771305470615ull}}, {{13287373665920089296ull, 1311017044376492ull}}, {{6502402606504501580ull, 2097627271002388ull}}, {{12580619714687421908ull, 1678101816801910ull}}, {{10064495771749937528ull, 1342481453441528ull}}, {{12413844420057989720ull, 2147970325506445ull}}, {{9931075536046391776ull, 1718376260405156ull}}, {{4255511614095203096ull, 1374701008324125ull}}, {{6808818582552324956ull, 2199521613318600ull}}, {{5447054866041859964ull, 1759617290654880ull}}, {{4357643892833487972ull, 1407693832523904ull}}, {{7175463929008700700ull, 1126155066019123ull}}, {{7791393471672010800ull, 1801848105630597ull}}, {{17301161221563339608ull, 1441478484504477ull}}, {{6462231347766851040ull, 1153182787603582ull}}, {{14028918971168871988ull, 1845092460165731ull}}, {{7533786362193187268ull, 1476073968132585ull}}, {{6027029089754549812ull, 1180859174506068ull}}, {{5953897728865369380ull, 1889374679209709ull}}, {{8452466997834205824ull, 1511499743367767ull}}, {{17830020042493095628ull, 1209199794694213ull}}, {{6391939179537491068ull, 1934719671510742ull}}, {{16181597787855723824ull, 1547775737208593ull}}, {{1877231786058848092ull, 1238220589766875ull}}, {{3003570857694156944ull, 1981152943627000ull}}, {{2402856686155325556ull, 1584922354901600ull}}, {{1922285348924260444ull, 1267937883921280ull}}, {{3075656558278816712ull, 2028700614274048ull}}, {{9839222876106874016ull, 1622960491419238ull}}, {{15250075930369319860ull, 1298368393135390ull}}, {{5953377414881360160ull, 2077389429016625ull}}, {{4762701931905088128ull, 1661911543213300ull}}, {{3810161545524070500ull, 1329529234570640ull}}, {{6096258472838512804ull, 2127246775313024ull}}, {{8566355593012720564ull, 1701797420250419ull}}, {{10542433289152086776ull, 1361437936200335ull}}, {{16867893262643338840ull, 2178300697920536ull}}, {{9804965795372760748ull, 1742640558336429ull}}, {{11533321451040118924ull, 1394112446669143ull}}, {{14763965506922279952ull, 2230579914670629ull}}, {{15500521220279734284ull, 1784463931736503ull}}, {{1332370531998056460ull, 1427571145389203ull}}, {{8444594055082265812ull, 1142056916311362ull}}, {{17200699302873535624ull, 1827291066098179ull}}, {{17449908257040738824ull, 1461832852878543ull}}, {{2891880161406860088ull, 1169466282302835ull}}, {{4627008258250976140ull, 1871146051684536ull}}, {{12257791858870588ull, 1496916841347629ull}}, {{3699155048229006796ull, 1197533473078103ull}}, {{2229299262424500548ull, 1916053556924965ull}}, {{1783439409939600440ull, 1532842845539972ull}}, {{12494797972177411320ull, 1226274276431977ull}}, {{5234281496516216820ull, 1962038842291164ull}}, {{7876774011954883780ull, 1569631073832931ull}}, {{2612070394821996700ull, 1255704859066345ull}}, {{4179312631715194720ull, 2009127774506152ull}}, {{14411496549597886748ull, 1607302219604921ull}}, {{7839848424936399072ull, 1285841775683937ull}}, {{16233106294640148844ull, 2057346841094299ull}}, {{16675833850454029396ull, 1645877472875439ull}}, {{17030015895105133840ull, 1316701978300351ull}}, {{1422583728974841884ull, 2106723165280563ull}}, {{8516764612663694152ull, 1685378532224450ull}}, {{6813411690130955320ull, 1348302825779560ull}}, {{10901458704209528516ull, 2157284521247296ull}}, {{5031818148625712488ull, 1725827616997837ull}}, {{15093500963126300960ull, 1380662093598269ull}}, {{13081555096776350568ull, 2209059349757231ull}}, {{6775895262679170132ull, 1767247479805785ull}}, {{5420716210143336104ull, 1413797983844628ull}}, {{11715270597598489528ull, 1131038387075702ull}}, {{3987037697189941956ull, 1809661419321124ull}}, {{6878978972493863888ull, 1447729135456899ull}}, {{9192531992737001432ull, 1158183308365519ull}}, {{3640004744153471324ull, 1853093293384831ull}}, {{17669399054290418352ull, 1482474634707864ull}}, {{17824868058174245004ull, 1185979707766291ull}}, {{2694347189885419744ull, 1897567532426067ull}}, {{13223524196134066764ull, 1518054025940853ull}}, {{17957516986391074060ull, 1214443220752682ull}}, {{13974631919258077200ull, 1943109153204292ull}}, {{3801007905922641116ull, 1554487322563434ull}}, {{6730155139480023216ull, 1243589858050747ull}}, {{14457597037909947468ull, 1989743772881195ull}}, {{11566077630327957972ull, 1591795018304956ull}}, {{5563513289520456056ull, 1273436014643965ull}}, {{8901621263232729688ull, 2037497623430344ull}}, {{10810645825328094076ull, 1629998098744275ull}}, {{8648516660262475260ull, 1303998478995420ull}}, {{13837626656419960416ull, 2086397566392672ull}}, {{3691403695652147684ull, 1669118053114138ull}}, {{10331820586005538796ull, 1335294442491310ull}}, {{16530912937608862072ull, 2136471107986096ull}}, {{9535381535345179336ull, 1709176886388877ull}}, {{249607598792322820ull, 1367341509111102ull}}, {{4088720972809626836ull, 2187746414577763ull}}, {{10649674407731522116ull, 1750197131662210ull}}, {{8519739526185217692ull, 1400157705329768ull}}, {{9942234427154437988ull, 2240252328527629ull}}, {{11643136356465460712ull, 1792201862822103ull}}, {{16693206714656189216ull, 1433761490257682ull}}, {{5975867742241130724ull, 1147009192206146ull}}, {{2182690758101988516ull, 1835214707529834ull}}, {{5435501421223501136ull, 1468171766023867ull}}, {{15416447581204531876ull, 1174537412819093ull}}, {{2530223241475789064ull, 1879259860510550ull}}, {{2024178593180631252ull, 1503407888408440ull}}, {{1619342874544505000ull, 1202726310726752ull}}, {{6280297414013118328ull, 1924362097162803ull}}, {{12402935560694315308ull, 1539489677730242ull}}, {{2543650819071631600ull, 1231591742184194ull}}, {{11448538939998431208ull, 1970546787494710ull}}, {{9158831151998744964ull, 1576437429995768ull}}, {{14705762551082816616ull, 1261149943996614ull}}, {{12461173637506775620ull, 2017839910394583ull}}, {{17347636539489241140ull, 1614271928315666ull}}, {{10188760416849482588ull, 1291417542652533ull}}, {{12612667852217261820ull, 2066268068244053ull}}, {{17468831911257630104ull, 1653014454595242ull}}, {{6596367899522283436ull, 1322411563676194ull}}, {{17932886268719474144ull, 2115858501881910ull}}, {{14346309014975579316ull, 1692686801505528ull}}, {{409000767754732484ull, 1354149441204423ull}}, {{15411796487375213264ull, 2166639105927076ull}}, {{8640088375158260288ull, 1733311284741661ull}}, {{3222721885384697908ull, 1386649027793329ull}}, {{12535052646099337300ull, 2218638444469326ull}}, {{6338693302137559516ull, 1774910755575461ull}}, {{1381605826968137288ull, 1419928604460369ull}}, {{4794633476316420156ull, 1135942883568295ull}}, {{7671413562106272248ull, 1817508613709272ull}}, {{17205177293910748768ull, 1454006890967417ull}}, {{6385444205644778368ull, 1163205512773934ull}}, {{17595408358515466036ull, 1861128820438294ull}}, {{17765675501554283152ull, 1488903056350635ull}}, {{14212540401243426520ull, 1191122445080508ull}}, {{603971753538020496ull, 1905795912128814ull}}, {{4172526217572326720ull, 1524636729703051ull}}, {{18095416233025502668ull, 1219709383762440ull}}, {{10505921899131252652ull, 1951535014019905ull}}, {{8404737519305002124ull, 1561228011215924ull}}, {{10413138830185912020ull, 1248982408972739ull}}, {{5592975684071728264ull, 1998371854356383ull}}, {{11853078176741203256ull, 1598697483485106ull}}, {{5793113726651052284ull, 1278957986788085ull}}, {{9268981962641683652ull, 2046332778860936ull}}, {{3725836755371436600ull, 1637066223088749ull}}, {{6670018219039059600ull, 1309652978470999ull}}, {{18050726779946316012ull, 2095444765553598ull}}, {{3372534979731321840ull, 1676355812442879ull}}, {{6387376798526967792ull, 1341084649954303ull}}, {{6530454062901238148ull, 2145735439926885ull}}, {{5224363250320990516ull, 1716588351941508ull}}, {{11558188229740613060ull, 1373270681553206ull}}, {{11114403538101160252ull, 2197233090485130ull}}, {{8891522830480928200ull, 1757786472388104ull}}, {{10802567079126652884ull, 1406229177910483ull}}, {{13594758511860734292ull, 2249966684656773ull}}, {{18254504438972408080ull, 1799973347725418ull}}, {{3535557106952195492ull, 1439978678180335ull}}, {{2828445685561756396ull, 1151982942544268ull}}, {{836164282156899908ull, 1843172708070829ull}}, {{4358280240467430248ull, 1474538166456663ull}}, {{10865321821857764844ull, 1179630533165330ull}}, {{17384514914972423756ull, 1887408853064528ull}}, {{2839565487752208032ull, 1509927082451623ull}}, {{9650350019685587072ull, 1207941665961298ull}}, {{11751211216755028996ull, 1932706665538077ull}}, {{2022271343920202548ull, 1546165332430462ull}}, {{12685863519361893008ull, 1236932265944369ull}}, {{9229335186753297844ull, 1979091625510991ull}}, {{3694119334660727952ull, 1583273300408793ull}}, {{10333993097212403008ull, 1266618640327034ull}}, {{5466342511314113844ull, 2026589824523255ull}}, {{4373074009051291076ull, 1621271859618604ull}}, {{7187808021982943184ull, 1297017487694883ull}}, {{7811144020430798772ull, 2075227980311813ull}}, {{13627612845828459664ull, 1660182384249450ull}}, {{10902090276662767728ull, 1328145907399560ull}}, {{17443344442660428368ull, 2125033451839296ull}}, {{10265326739386432372ull, 1700026761471437ull}}, {{833563762025325248ull, 1360021409177150ull}}, {{1333702019240520400ull, 2176034254683440ull}}, {{1066961615392416320ull, 1740827403746752ull}}, {{11921615736539664024ull, 1392661922997401ull}}, {{11695887548979641796ull, 2228259076795842ull}}, {{1978012409699892788ull, 1782607261436674ull}}, {{5271758742501824556ull, 1426085809149339ull}}, {{7906755808743369968ull, 1140868647319471ull}}, {{5272111664505571300ull, 1825389835711154ull}}, {{7907038146346367364ull, 1460311868568923ull}}, {{13704328146560914536ull, 1168249494855138ull}}, {{18237576219755552936ull, 1869199191768221ull}}, {{10900712161062532028ull, 1495359353414577ull}}, {{1341872099366204976ull, 1196287482731662ull}}, {{5836344173727838284ull, 1914059972370659ull}}, {{8358424153724180948ull, 1531247977896527ull}}, {{17754785767205075728ull, 1224998382317221ull}}, {{2582215524334748904ull, 1959997411707555ull}}, {{2065772419467799124ull, 1567997929366044ull}}, {{5341966750316149620ull, 1254398343492835ull}}, {{8547146800505839396ull, 2007037349588536ull}}, {{3148368625662761192ull, 1605629879670829ull}}, {{6208043715272119276ull, 1284503903736663ull}}, {{6243521129693480520ull, 2055206245978661ull}}, {{1305468089012874092ull, 1644164996782929ull}}, {{4733723285952209596ull, 1315331997426343ull}}, {{3884608442781625032ull, 2104531195882149ull}}, {{6797035568967210348ull, 1683624956705719ull}}, {{9126977269915678604ull, 1346899965364575ull}}, {{14603163631865085764ull, 2155039944583320ull}}, {{11682530905492068612ull, 1724031955666656ull}}, {{5656675909651744564ull, 1379225564533325ull}}, {{9050681455442791308ull, 2206760903253320ull}}, {{7240545164354233044ull, 1765408722602656ull}}, {{2103087316741476112ull, 1412326978082125ull}}, {{1682469853393180888ull, 1129861582465700ull}}, {{2691951765429089424ull, 1807778531945120ull}}, {{2153561412343271540ull, 1446222825556096ull}}, {{16480244388842258524ull, 1156978260444876ull}}, {{542949318954241376ull, 1851165216711803ull}}, {{7813057084647213748ull, 1480932173369442ull}}, {{17318492111943501968ull, 1184745738695553ull}}, {{5573494490658141208ull, 1895593181912886ull}}, {{769446777784602644ull, 1516474545530309ull}}, {{4304906236969592436ull, 1213179636424247ull}}, {{10577198793893258224ull, 1941087418278795ull}}, {{8461759035114606580ull, 1552869934623036ull}}, {{3080058413349774940ull, 1242295947698429ull}}, {{12306791090843460552ull, 1987673516317486ull}}, {{6156084057932858116ull, 1590138813053989ull}}, {{8614216061088196816ull, 1272111050443191ull}}, {{6404048068257294264ull, 2035377680709106ull}}, {{1433889639863925088ull, 1628302144567285ull}}, {{1147111711891140068ull, 1302641715653828ull}}, {{16592773997993465404ull, 2084226745046124ull}}, {{16963568013136682644ull, 1667381396036899ull}}, {{17260203225251256440ull, 1333905116829519ull}}, {{16548278716176279336ull, 2134248186927231ull}}, {{9549274158199113144ull, 1707398549541785ull}}, {{7639419326559290516ull, 1365918839633428ull}}, {{8533722107752954500ull, 2185470143413485ull}}, {{6826977686202363600ull, 1748376114730788ull}}, {{12840279778445711528ull, 1398700891784630ull}}, {{2097703571803586828ull, 2237921426855409ull}}, {{5367511672184779784ull, 1790337141484327ull}}, {{15362055781973554796ull, 1432269713187461ull}}, {{8600295810836933516ull, 1145815770549969ull}}, {{2692426853113362656ull, 1833305232879951ull}}, {{16911336741458331416ull, 1466644186303960ull}}, {{13529069393166665132ull, 1173315349043168ull}}, {{17957162214324753888ull, 1877304558469069ull}}, {{18055078586201713436ull, 1501843646775255ull}}, {{14444062868961370748ull, 1201474917420204ull}}, {{12042454146112462228ull, 1922359867872327ull}}, {{2255265687406149136ull, 1537887894297862ull}}, {{12872258994150650276ull, 1230310315438289ull}}, {{9527567946415309476ull, 1968496504701263ull}}, {{15000751986616068228ull, 1574797203761010ull}}, {{12000601589292854580ull, 1259837763008808ull}}, {{15511613728126657008ull, 2015740420814093ull}}, {{1341244538275594636ull, 1612592336651275ull}}, {{1072995630620475708ull, 1290073869321020ull}}, {{1716793008992761136ull, 2064118190913632ull}}, {{12441480851419939876ull, 1651294552730905ull}}, {{9953184681135951900ull, 1321035642184724ull}}, {{4857049045591792072ull, 2113657027495559ull}}, {{7574988051215343980ull, 1690925621996447ull}}, {{17128036885198006156ull, 1352740497597157ull}}, {{12647463757349168556ull, 2164384796155452ull}}, {{2739273376395514196ull, 1731507836924362ull}}, {{13259465145342142328ull, 1385206269539489ull}}, {{10147097788321696756ull, 2216330031263183ull}}, {{15496375860141178048ull, 1773064025010546ull}}, {{8707751873371032116ull, 1418451220008437ull}}, {{18034247942922556664ull, 1134760976006749ull}}, {{17786750264450359692ull, 1815617561610799ull}}, {{17918749026302198076ull, 1452494049288639ull}}, {{18024348035783668784ull, 1161995239430911ull}}, {{3013515154060497792ull, 1859192383089459ull}}, {{6100160937990308556ull, 1487353906471567ull}}, {{15948175194617977816ull, 1189883125177253ull}}, {{3380987422937302564ull, 1903813000283606ull}}, {{17462185197317483344ull, 1523050400226884ull}}, {{17659096972595897000ull, 1218440320181507ull}}, {{13497159897185793904ull, 1949504512290412ull}}, {{3419030288264814476ull, 1559603609832330ull}}, {{2735224230611851580ull, 1247682887865864ull}}, {{11755056398462783180ull, 1996292620585382ull}}, {{2025347489286405896ull, 1597034096468306ull}}, {{16377673250396766008ull, 1277627277174644ull}}, {{15136230756409094648ull, 2044203643479431ull}}, {{8419635790385365392ull, 1635362914783545ull}}, {{6735708632308292316ull, 1308290331826836ull}}, {{3398436182209447056ull, 2093264530922938ull}}, {{10097446575251378292ull, 1674611624738350ull}}, {{8077957260201102632ull, 1339689299790680ull}}, {{12924731616321764216ull, 2143502879665088ull}}, {{17718482922541232016ull, 1714802303732070ull}}, {{14174786338032985612ull, 1371841842985656ull}}, {{15300960511368956336ull, 2194946948777050ull}}, {{12240768409095165068ull, 1755957559021640ull}}, {{9792614727276132056ull, 1404766047217312ull}}, {{910788304674169996ull, 2247625675547700ull}}, {{728630643739335996ull, 1798100540438160ull}}, {{582904514991468796ull, 1438480432350528ull}}, {{7845021241476995684ull, 1150784345880422ull}}, {{16241382801105103416ull, 1841254953408675ull}}, {{12993106240884082732ull, 1473003962726940ull}}, {{10394484992707266188ull, 1178403170181552ull}}, {{1873780729363984608ull, 1885445072290484ull}}, {{5188373398233098008ull, 1508356057832387ull}}, {{15218745162812209376ull, 1206684846265909ull}}, {{13281945816273804032ull, 1930695754025455ull}}, {{10625556653019043228ull, 1544556603220364ull}}, {{12189794137157144904ull, 1235645282576291ull}}, {{12124972989967611200ull, 1977032452122066ull}}, {{6010629577232178636ull, 1581625961697653ull}}, {{12187201291269563556ull, 1265300769358122ull}}, {{4742126807063660396ull, 2024481230972996ull}}, {{104352630909017996ull, 1619584984778397ull}}, {{11151528548952945364ull, 1295667987822717ull}}, {{3085050419357071292ull, 2073068780516348ull}}, {{9846737964969477680ull, 1658455024413078ull}}, {{15256088001459402788ull, 1326764019530462ull}}, {{9652345543367403172ull, 2122822431248740ull}}, {{7721876434693922536ull, 1698257944998992ull}}, {{17245547591980869000ull, 1358606355999193ull}}, {{5456783258717928460ull, 2173770169598710ull}}, {{4365426606974342768ull, 1739016135678968ull}}, {{10871038915063294860ull, 1391212908543174ull}}, {{6325615819875540808ull, 2225940653669079ull}}, {{8749841470642342968ull, 1780752522935263ull}}, {{14378570805997695020ull, 1424602018348210ull}}, {{11502856644798156016ull, 1139681614678568ull}}, {{14715221816935139304ull, 1823490583485709ull}}, {{15461526268290021768ull, 1458792466788567ull}}, {{4990523385148196768ull, 1167033973430854ull}}, {{15363535045720935472ull, 1867254357489366ull}}, {{8601479221834838056ull, 1493803485991493ull}}, {{14259881006951691092ull, 1195042788793194ull}}, {{11747763166896974776ull, 1912068462069111ull}}, {{5708861718775669496ull, 1529654769655289ull}}, {{8256438189762445920ull, 1223723815724231ull}}, {{5831603474136092828ull, 1957958105158770ull}}, {{4665282779308874260ull, 1566366484127016ull}}, {{42877408705189084ull, 1253093187301613ull}}, {{14825999112895943832ull, 2004949099682580ull}}, {{11860799290316755064ull, 1603959279746064ull}}, {{13177988246995314376ull, 1283167423796851ull}}, {{13706083565708682356ull, 2053067878074962ull}}, {{3586169223083125236ull, 1642454302459970ull}}, {{2868935378466500188ull, 1313963441967976ull}}, {{15658343049772131272ull, 2102341507148761ull}}, {{8837325625075794696ull, 1681873205719009ull}}, {{10759209314802546080ull, 1345498564575207ull}}, {{2457339644716432436ull, 2152797703320332ull}}, {{13033918159998876916ull, 1722238162656265ull}}, {{10427134527999101532ull, 1377790530125012ull}}, {{1926019985830921160ull, 2204464848200020ull}}, {{1540815988664736928ull, 1763571878560016ull}}, {{15990048049899430836ull, 1410857502848012ull}}, {{5413340810435724020ull, 1128686002278410ull}}, {{8661345296697158436ull, 1805897603645456ull}}, {{3239727422615816424ull, 1444718082916365ull}}, {{2591781938092653140ull, 1155774466333092ull}}, {{7836199915690155348ull, 1849239146132947ull}}, {{17337006376777855248ull, 1479391316906357ull}}, {{6490907471938463552ull, 1183513053525086ull}}, {{3006754325617721036ull, 1893620885640138ull}}, {{9784101089977997476ull, 1514896708512110ull}}, {{7827280871982397980ull, 1211917366809688ull}}, {{8834300580429926444ull, 1939067786895501ull}}, {{3378091649602030832ull, 1551254229516401ull}}, {{17459868578649265960ull, 1241003383613120ull}}, {{9489045652129273920ull, 1985605413780993ull}}, {{14969934151187239780ull, 1588484331024794ull}}, {{15665296135691702148ull, 1270787464819835ull}}, {{6617729743397171820ull, 2033259943711737ull}}, {{16362230238943468428ull, 1626607954969389ull}}, {{16779133005896685064ull, 1301286363975511ull}}, {{1021171106241323840ull, 2082058182360819ull}}, {{4506285699734969396ull, 1665646545888655ull}}, {{3605028559787975516ull, 1332517236710924ull}}, {{13146743325144581472ull, 2132027578737478ull}}, {{17896092289599485824ull, 1705622062989982ull}}, {{6938176202195768012ull, 1364497650391986ull}}, {{3722384294029408176ull, 2183196240627178ull}}, {{10356605064707347188ull, 1746556992501742ull}}, {{906586422282057104ull, 1397245594001394ull}}, {{8829235905135112012ull, 2235592950402230ull}}, {{7063388724108089608ull, 1788474360321784ull}}, {{9340059794028382008ull, 1430779488257427ull}}, {{93350205738884960ull, 1144623590605942ull}}, {{3838709143924126260ull, 1831397744969507ull}}, {{14139013759365031980ull, 1465118195975605ull}}, {{11311211007492025584ull, 1172094556780484ull}}, {{7029891167761509964ull, 1875351290848775ull}}, {{5623912934209207972ull, 1500281032679020ull}}, {{4499130347367366376ull, 1200224826143216ull}}, {{18266655000013517172ull, 1920359721829145ull}}, {{14613324000010813736ull, 1536287777463316ull}}, {{8001310385266740668ull, 1229030221970653ull}}, {{9112747801684874744ull, 1966448355153045ull}}, {{7290198241347899796ull, 1573158684122436ull}}, {{2142809778336409512ull, 1258526947297949ull}}, {{10807193274822075868ull, 2013643115676718ull}}, {{16024452249341481340ull, 1610914492541374ull}}, {{16508910614215095396ull, 1288731594033099ull}}, {{15346210538518421664ull, 2061970550452959ull}}, {{15966317245556647652ull, 1649576440362367ull}}, {{5394356166961497476ull, 1319661152289894ull}}, {{16009667496622216608ull, 2111457843663830ull}}, {{12807733997297773288ull, 1689166274931064ull}}, {{13935536012580128952ull, 1351333019944851ull}}, {{14918159990644385680ull, 2162132831911762ull}}, {{4555830363031687896ull, 1729706265529410ull}}, {{3644664290425350316ull, 1383765012423528ull}}, {{2142114049938650184ull, 2214024019877645ull}}, {{1713691239950920148ull, 1771219215902116ull}}, {{16128348250928377408ull, 1416975372721692ull}}, {{5523980971258881280ull, 1133580298177354ull}}, {{16217067183498030696ull, 1813728477083766ull}}, {{9284304932056514236ull, 1450982781667013ull}}, {{14806141575129032032ull, 1160786225333610ull}}, {{5243082446496899640ull, 1857257960533777ull}}, {{15262512401423250680ull, 1485806368427021ull}}, {{8520661106396690220ull, 1188645094741617ull}}, {{17322406584976614676ull, 1901832151586587ull}}, {{6479227638497471096ull, 1521465721269270ull}}, {{5183382110797976876ull, 1217172577015416ull}}, {{914713747792942356ull, 1947476123224666ull}}, {{15489166257201995176ull, 1557980898579732ull}}, {{5012635376277775496ull, 1246384718863786ull}}, {{641518972560620148ull, 1994215550182058ull}}, {{7891912807532316764ull, 1595372440145646ull}}, {{2624181431283943088ull, 1276297952116517ull}}, {{7888039104796219264ull, 2042076723386427ull}}, {{17378477728062706380ull, 1633661378709141ull}}, {{10213433367708254780ull, 1306929102967313ull}}, {{12652144573591297328ull, 2091086564747701ull}}, {{6432366844131127536ull, 1672869251798161ull}}, {{1456544660562991708ull, 1338295401438529ull}}, {{9709169086384607380ull, 2141272642301646ull}}, {{4077986454365775580ull, 1713018113841317ull}}, {{14330435607718351432ull, 1370414491073053ull}}, {{792604083897900352ull, 2192663185716886ull}}, {{15391478526085961576ull, 1754130548573508ull}}, {{1245136376643038292ull, 1403304438858807ull}}, {{5681567017370771588ull, 2245287102174091ull}}, {{855904799154706948ull, 1796229681739273ull}}, {{8063421468807586204ull, 1436983745391418ull}}, {{13829434804529889608ull, 1149586996313134ull}}, {{11059049243022092408ull, 1839339194101015ull}}, {{8847239394417673924ull, 1471471355280812ull}}, {{18145837959759870108ull, 1177177084224649ull}}, {{17965294291390061204ull, 1883483334759439ull}}, {{18061584247853959288ull, 1506786667807551ull}}, {{10759918583541257108ull, 1205429334246041ull}}, {{9837172104182190724ull, 1928686934793666ull}}, {{4180388868603842256ull, 1542949547834933ull}}, {{10723008724366894452ull, 1234359638267946ull}}, {{9778116329503210476ull, 1974975421228714ull}}, {{11511841878344478704ull, 1579980336982971ull}}, {{5520124687933672640ull, 1263984269586377ull}}, {{12521548315435786548ull, 2022374831338203ull}}, {{17395936281832449884ull, 1617899865070562ull}}, {{6538051395982139260ull, 1294319892056450ull}}, {{10460882233571422820ull, 2070911827290320ull}}, {{8368705786857138256ull, 1656729461832256ull}}, {{3005615814743800280ull, 1325383569465805ull}}, {{4808985303590080448ull, 2120613711145288ull}}, {{11225885872355885004ull, 1696490968916230ull}}, {{8980708697884708004ull, 1357192775132984ull}}, {{3301087472389801836ull, 2171508440212775ull}}, {{2640869977911841468ull, 1737206752170220ull}}, {{2112695982329473176ull, 1389765401736176ull}}, {{14448360015952888052ull, 2223624642777881ull}}, {{7869339198020400116ull, 1778899714222305ull}}, {{6295471358416320092ull, 1423119771377844ull}}, {{8725725901474966396ull, 1138495817102275ull}}, {{13961161442359946236ull, 1821593307363640ull}}, {{11168929153887956988ull, 1457274645890912ull}}, {{1556445693626544944ull, 1165819716712730ull}}, {{2490313109802471912ull, 1865311546740368ull}}, {{9370948117325798176ull, 1492249237392294ull}}, {{11186107308602548864ull, 1193799389913835ull}}, {{17897771693764078184ull, 1910079023862136ull}}, {{10628868540269352224ull, 1528063219089709ull}}, {{12192443646957392100ull, 1222450575271767ull}}, {{4750514576164186072ull, 1955920920434828ull}}, {{11179109290415169504ull, 1564736736347862ull}}, {{1564589802848314956ull, 1251789389078290ull}}, {{2503343684557303928ull, 2002863022525264ull}}, {{5692023762387753468ull, 1602290418020211ull}}, {{864270195168292448ull, 1281832334416169ull}}, {{8761529941753088568ull, 2050931735065870ull}}, {{7009223953402470852ull, 1640745388052696ull}}, {{1918030347980066360ull, 1312596310442157ull}}, {{6758197371510016500ull, 2100154096707451ull}}, {{1717209082466102876ull, 1680123277365961ull}}, {{16131162524940523592ull, 1344098621892768ull}}, {{3673767151453375808ull, 2150557795028430ull}}, {{2939013721162700648ull, 1720446236022744ull}}, {{6040559791672070840ull, 1376356988818195ull}}, {{9664895666675313348ull, 2202171182109112ull}}, {{353218903856430032ull, 1761736945687290ull}}, {{282575123085144024ull, 1409389556549832ull}}, {{11294106542693846188ull, 1127511645239865ull}}, {{18070570468310153904ull, 1804018632383784ull}}, {{18145805189390033444ull, 1443214905907027ull}}, {{7137946522028206108ull, 1154571924725622ull}}, {{15110063249987040100ull, 1847315079560995ull}}, {{12088050599989632080ull, 1477852063648796ull}}, {{5981091665249795340ull, 1182281650919037ull}}, {{13259095479141582868ull, 1891650641470459ull}}, {{14296625198055176616ull, 1513320513176367ull}}, {{4058602528960320648ull, 1210656410541094ull}}, {{13872461675820333684ull, 1937050256865750ull}}, {{11097969340656266944ull, 1549640205492600ull}}, {{8878375472525013556ull, 1239712164394080ull}}, {{14205400756040021692ull, 1983539463030528ull}}, {{296274160606286384ull, 1586831570424423ull}}, {{7615716957968849752ull, 1269465256339538ull}}, {{8495798318008249280ull, 2031144410143261ull}}, {{3107289839664689100ull, 1624915528114609ull}}, {{6175180686473661604ull, 1299932422491687ull}}, {{13569637913099768892ull, 2079891875986699ull}}, {{14545059145221725436ull, 1663913500789359ull}}, {{15325396130919290672ull, 1331130800631487ull}}, {{9763238550503223780ull, 2129809281010380ull}}, {{7810590840402579024ull, 1703847424808304ull}}, {{9937821487063973544ull, 1363077939846643ull}}, {{12211165564560447348ull, 2180924703754629ull}}, {{13458281266390268200ull, 1744739763003703ull}}, {{18145322642596035208ull, 1395791810402962ull}}, {{14275120969186015040ull, 2233266896644740ull}}, {{11420096775348812032ull, 1786613517315792ull}}, {{1757379790795228976ull, 1429290813852634ull}}, {{5095252647378093504ull, 1143432651082107ull}}, {{11841753050546859932ull, 1829492241731371ull}}, {{5784053625695577620ull, 1463593793385097ull}}, {{15695289344782193068ull, 1170875034708077ull}}, {{10355067692683867616ull, 1873400055532924ull}}, {{11973402968889004416ull, 1498720044426339ull}}, {{13268071189853113856ull, 1198976035541071ull}}, {{13850216274281161524ull, 1918361656865714ull}}, {{14769521834166839540ull, 1534689325492571ull}}, {{8126268652591561308ull, 1227751460394057ull}}, {{16691378658888408420ull, 1964402336630491ull}}, {{9663754112368816412ull, 1571521869304393ull}}, {{15109700919378873776ull, 1257217495443514ull}}, {{13107475026780467072ull, 2011547992709623ull}}, {{17864677650908194304ull, 1609238394167698ull}}, {{3223695676500824472ull, 1287390715334159ull}}, {{12536610711885139804ull, 2059825144534654ull}}, {{13718637384250022164ull, 1647860115627723ull}}, {{18353607536883838380ull, 1318288092502178ull}}, {{7229679170562679468ull, 2109260948003486ull}}, {{2094394521708233252ull, 1687408758402789ull}}, {{5364864432108496924ull, 1349927006722231ull}}, {{1205085461889774432ull, 2159883210755570ull}}, {{964068369511819544ull, 1727906568604456ull}}, {{15528649954577096928ull, 1382325254883564ull}}, {{13777793483097624116ull, 2211720407813703ull}}, {{18400932415961919940ull, 1769376326250962ull}}, {{7342048303285715304ull, 1415501061000770ull}}, {{5873638642628572244ull, 1132400848800616ull}}, {{2019124198721894944ull, 1811841358080986ull}}, {{16372694617945157248ull, 1449473086464788ull}}, {{2030109250130394828ull, 1159578469171831ull}}, {{14316221244434362696ull, 1855325550674929ull}}, {{15142325810289400480ull, 1484260440539943ull}}, {{1045814204005789416ull, 1187408352431955ull}}, {{1673302726409263064ull, 1899853363891128ull}}, {{8717339810611231096ull, 1519882691112902ull}}, {{18041918292714715848ull, 1215906152890321ull}}, {{3041627565150173092ull, 1945449844624515ull}}, {{2433302052120138476ull, 1556359875699612ull}}, {{13014688085921841748ull, 1245087900559689ull}}, {{9755454493249215828ull, 1992140640895503ull}}, {{15183061224083193308ull, 1593712512716402ull}}, {{4767751349782734000ull, 1274970010173122ull}}, {{11317750974394284728ull, 2039952016276995ull}}, {{9054200779515427780ull, 1631961613021596ull}}, {{3554011808870431900ull, 1305569290417277ull}}, {{9375767708934601364ull, 2088910864667643ull}}, {{14879311796631501740ull, 1671128691734114ull}}, {{15592798252047111712ull, 1336902953387291ull}}, {{17569779573791558096ull, 2139044725419666ull}}, {{10366474844291336152ull, 1711235780335733ull}}, {{15671877504916889568ull, 1368988624268586ull}}, {{17696306378383202664ull, 2190381798829738ull}}, {{3088998658480831164ull, 1752305439063791ull}}, {{17228594185752306224ull, 1401844351251032ull}}, {{12808355438236048664ull, 2242950962001652ull}}, {{2867986721105018284ull, 1794360769601322ull}}, {{13362435821109745596ull, 1435488615681057ull}}, {{3311251027403975832ull, 1148390892544846ull}}, {{16366048088072092300ull, 1837425428071753ull}}, {{2024792026231942868ull, 1469940342457403ull}}, {{8998531250469374940ull, 1175952273965922ull}}, {{18086998815492910232ull, 1881523638345475ull}}, {{14469599052394328184ull, 1505218910676380ull}}, {{11575679241915462548ull, 1204175128541104ull}}, {{7453040342839009108ull, 1926680205665767ull}}, {{17030478718496938256ull, 1541344164532613ull}}, {{2556336530571819632ull, 1233075331626091ull}}, {{15158184893140642384ull, 1972920530601745ull}}, {{12126547914512513908ull, 1578336424481396ull}}, {{6011889516868100804ull, 1262669139585117ull}}, {{13308372041730871608ull, 2020270623336187ull}}, {{3268000003900876640ull, 1616216498668950ull}}, {{2614400003120701312ull, 1292973198935160ull}}, {{4183040004993122100ull, 2068757118296256ull}}, {{18103827262962138972ull, 1655005694637004ull}}, {{18172410625111621500ull, 1324004555709603ull}}, {{6939764111727132464ull, 2118407289135366ull}}, {{1862462474639795648ull, 1694725831308293ull}}, {{8868667609195657164ull, 1355780665046634ull}}, {{3121821730487320492ull, 2169249064074615ull}}, {{2497457384389856392ull, 1735399251259692ull}}, {{13066012351737616084ull, 1388319401007753ull}}, {{17216270948038275412ull, 2221311041612405ull}}, {{13773016758430620328ull, 1777048833289924ull}}, {{14707762221486406588ull, 1421639066631939ull}}, {{15455558591931035592ull, 1137311253305551ull}}, {{17350196117605836304ull, 1819698005288882ull}}, {{6501459264600848396ull, 1455758404231106ull}}, {{1511818596938768392ull, 1164606723384885ull}}, {{2418909755102029428ull, 1863370757415816ull}}, {{16692523063049264836ull, 1490696605932652ull}}, {{5975320820955591220ull, 1192557284746122ull}}, {{13249862128270856280ull, 1908091655593795ull}}, {{10599889702616685024ull, 1526473324475036ull}}, {{4790562947351437696ull, 1221178659580029ull}}, {{15043598345246120960ull, 1953885855328046ull}}, {{8345529861454986444ull, 1563108684262437ull}}, {{17744470333389720124ull, 1250486947409949ull}}, {{17323106089197821232ull, 2000779115855919ull}}, {{17547833686100167308ull, 1600623292684735ull}}, {{14038266948880133844ull, 1280498634147788ull}}, {{325134229756752216ull, 2048797814636462ull}}, {{11328153828031132740ull, 1639038251709169ull}}, {{12751871877166816516ull, 1311230601367335ull}}, {{1956250929757354808ull, 2097968962187737ull}}, {{12633047188031614816ull, 1678375169750189ull}}, {{13795786565167202176ull, 1342700135800151ull}}, {{14694560874783702836ull, 2148320217280242ull}}, {{4376951070343141624ull, 1718656173824194ull}}, {{7190909671016423620ull, 1374924939059355ull}}, {{11505455473626277796ull, 2199879902494968ull}}, {{16583062008384842880ull, 1759903921995974ull}}, {{16955798421449784628ull, 1407923137596779ull}}, {{17253987551901738024ull, 1126338510077423ull}}, {{5470287194591318904ull, 1802141616123878ull}}, {{11754927385156875768ull, 1441713292899102ull}}, {{2025244278641679968ull, 1153370634319282ull}}, {{6929739660568598272ull, 1845393014910851ull}}, {{1854442913712968296ull, 1476314411928681ull}}, {{16240949589938015928ull, 1181051529542944ull}}, {{14917472899675094516ull, 1889682447268711ull}}, {{8244629504998165288ull, 1511745957814969ull}}, {{10285052418740442556ull, 1209396766251975ull}}, {{16456083869984708088ull, 1935034826003160ull}}, {{13164867095987766472ull, 1548027860802528ull}}, {{17910591306274033824ull, 1238422288642022ull}}, {{13899550831070812824ull, 1981475661827236ull}}, {{7430291850114739936ull, 1585180529461789ull}}, {{9633582294833702272ull, 1268144423569431ull}}, {{8035034042250102988ull, 2029031077711090ull}}, {{6428027233800082392ull, 1623224862168872ull}}, {{16210468231265796880ull, 1298579889735097ull}}, {{11179353911057633720ull, 2077727823576156ull}}, {{5254134314104196652ull, 1662182258860925ull}}, {{4203307451283357320ull, 1329745807088740ull}}, {{6725291922053371716ull, 2127593291341984ull}}, {{9069582352384607696ull, 1702074633073587ull}}, {{18323712326133417124ull, 1361659706458869ull}}, {{18249893277587736432ull, 2178655530334191ull}}, {{10910565807328278820ull, 1742924424267353ull}}, {{16107150275346443704ull, 1394339539413882ull}}, {{11014045181586668632ull, 2230943263062212ull}}, {{1432538515785514260ull, 1784754610449770ull}}, {{1146030812628411408ull, 1427803688359816ull}}, {{15674219909070370420ull, 1142242950687852ull}}, {{10321356595544951380ull, 1827588721100564ull}}, {{11946434091177871424ull, 1462070976880451ull}}, {{5867798458200386816ull, 1169656781504361ull}}, {{2009779903636798260ull, 1871450850406978ull}}, {{8986521552393259256ull, 1497160680325582ull}}, {{18257263686140338372ull, 1197728544260465ull}}, {{10764877824114989784ull, 1916365670816745ull}}, {{8611902259291991824ull, 1533092536653396ull}}, {{3200172992691683136ull, 1226474029322717ull}}, {{8809625603048603344ull, 1962358446916347ull}}, {{18115746926664613644ull, 1569886757533077ull}}, {{7113899911847870268ull, 1255909406026462ull}}, {{15071588673698502752ull, 2009455049642339ull}}, {{15746619753700712524ull, 1607564039713871ull}}, {{8907946988218659696ull, 1286051231771097ull}}, {{17942063995891765840ull, 2057681970833755ull}}, {{14353651196713412672ull, 1646145576667004ull}}, {{15172269772112640460ull, 1316916461333603ull}}, {{2139538746928762796ull, 2107066338133766ull}}, {{16469026256510651532ull, 1685653070507012ull}}, {{5796523375724700576ull, 1348522456405610ull}}, {{9274437401159520924ull, 2157635930248976ull}}, {{3730201106185706416ull, 1726108744199181ull}}, {{17741556143916206424ull, 1380886995359344ull}}, {{17318443386040199312ull, 2209419192574951ull}}, {{10165405894090249128ull, 1767535354059961ull}}, {{4442975900530288976ull, 1414028283247969ull}}, {{7243729535166141504ull, 1131222626598375ull}}, {{11589967256265826408ull, 1809956202557400ull}}, {{9271973805012661128ull, 1447964962045920ull}}, {{7417579044010128900ull, 1158371969636736ull}}, {{4489428840932385596ull, 1853395151418778ull}}, {{10970240702229729124ull, 1482716121135022ull}}, {{1397494932299962652ull, 1186172896908018ull}}, {{16993387150647581536ull, 1897876635052828ull}}, {{2526663276292334260ull, 1518301308042263ull}}, {{9400028250517688052ull, 1214641046433810ull}}, {{15040045200828300888ull, 1943425674294096ull}}, {{8342687345920730388ull, 1554740539435277ull}}, {{17742196320962315280ull, 1243792431548221ull}}, {{2562072410346332184ull, 1990067890477155ull}}, {{2049657928277065748ull, 1592054312381724ull}}, {{5329075157363562920ull, 1273643449905379ull}}, {{15905217881265521320ull, 2037829519848606ull}}, {{9034825490270506732ull, 1630263615878885ull}}, {{7227860392216405384ull, 1304210892703108ull}}, {{7875227812804338296ull, 2086737428324973ull}}, {{13678879879727291280ull, 1669389942659978ull}}, {{18321801533265653672ull, 1335511954127982ull}}, {{14557487194257404584ull, 2136819126604772ull}}, {{4267292125922103020ull, 1709455301283818ull}}, {{10792531330221503060ull, 1367564241027054ull}}, {{6200003684128673928ull, 2188102785643287ull}}, {{16028049391528670112ull, 1750482228514629ull}}, {{16511788327964846412ull, 1400385782811703ull}}, {{4282768436292292324ull, 2240617252498726ull}}, {{18183610008001475152ull, 1792493801998980ull}}, {{14546888006401180120ull, 1433995041599184ull}}, {{15326859219862854420ull, 1147196033279347ull}}, {{9765579492812925780ull, 1835513653246956ull}}, {{4123114779508430300ull, 1468410922597565ull}}, {{3298491823606744240ull, 1174728738078052ull}}, {{8966935732512701108ull, 1879565980924883ull}}, {{14552246215493981532ull, 1503652784739906ull}}, {{7952448157653274900ull, 1202922227791925ull}}, {{12723917052245239844ull, 1924675564467080ull}}, {{10179133641796191876ull, 1539740451573664ull}}, {{11832655728178863824ull, 1231792361258931ull}}, {{11553551535602361472ull, 1970867778014290ull}}, {{9242841228481889176ull, 1576694222411432ull}}, {{15575353301690696ull, 1261355377929146ull}}, {{11092967009508436080ull, 2018168604686633ull}}, {{16253071237090569512ull, 1614534883749306ull}}, {{9313108174930545284ull, 1291627906999445ull}}, {{14900973079888872460ull, 2066604651199112ull}}, {{4542080834427277320ull, 1653283720959290ull}}, {{3633664667541821856ull, 1322626976767432ull}}, {{9503212282808825292ull, 2116203162827891ull}}, {{3913221011505149912ull, 1692962530262313ull}}, {{10509274438687940576ull, 1354370024209850ull}}, {{16814839101900704920ull, 2166992038735760ull}}, {{13451871281520563936ull, 1733593630988608ull}}, {{18140194654700271796ull, 1386874904790886ull}}, {{3198869744327062612ull, 2218999847665419ull}}, {{6248444610203560412ull, 1775199878132335ull}}, {{4998755688162848328ull, 1420159902505868ull}}, {{11377702180014099308ull, 1136127922004694ull}}, {{7136277043796827924ull, 1817804675207511ull}}, {{2019672820295552016ull, 1454243740166009ull}}, {{5305087070978351936ull, 1163394992132807ull}}, {{12177488128307273424ull, 1861431987412491ull}}, {{6052641687903908416ull, 1489145589929993ull}}, {{12220810979806947376ull, 1191316471943994ull}}, {{8485251123465384836ull, 1906106355110391ull}}, {{3098852084030397544ull, 1524885084088313ull}}, {{9857779296708138684ull, 1219908067270650ull}}, {{15772446874733021892ull, 1951852907633040ull}}, {{12617957499786417512ull, 1561482326106432ull}}, {{2715668370345313364ull, 1249185860885146ull}}, {{15413115836778232352ull, 1998697377416233ull}}, {{1262446225196854912ull, 1598957901932987ull}}, {{12078003424383214900ull, 1279166321546389ull}}, {{8256759034787412872ull, 2046666114474223ull}}, {{13984104857313750944ull, 1637332891579378ull}}, {{119237441625269784ull, 1309866313263503ull}}, {{14948175165568072948ull, 2095786101221604ull}}, {{15647888947196368680ull, 1676628880977283ull}}, {{1450264713531363976ull, 1341303104781827ull}}, {{6009772356392092684ull, 2146084967650923ull}}, {{12186515514597494792ull, 1716867974120738ull}}, {{17127910041161816480ull, 1373494379296590ull}}, {{8957911992149354756ull, 2197591006874545ull}}, {{7166329593719483804ull, 1758072805499636ull}}, {{2043714860233676720ull, 1406458244399709ull}}, {{10648641405857703400ull, 2250333191039534ull}}, {{12208261939428073040ull, 1800266552831627ull}}, {{2387911922058637788ull, 1440213242265302ull}}, {{12978375981872641200ull, 1152170593812241ull}}, {{13386703941512405272ull, 1843472950099586ull}}, {{7020014338468013896ull, 1474778360079669ull}}, {{9305360285516321440ull, 1179822688063735ull}}, {{14888576456826114304ull, 1887716300901976ull}}, {{8221512350718981120ull, 1510173040721581ull}}, {{2887861065833274572ull, 1208138432577265ull}}, {{4620577705333239316ull, 1933021492123624ull}}, {{7385810979008501776ull, 1546417193698899ull}}, {{9597997597948711744ull, 1237133754959119ull}}, {{4288749712492207820ull, 1979414007934591ull}}, {{18188395028961407548ull, 1583531206347672ull}}, {{7172018393685305392ull, 1266824965078138ull}}, {{7785880615154578304ull, 2026919944125021ull}}, {{2539355677381752320ull, 1621535955300017ull}}, {{13099530986131132824ull, 1297228764240013ull}}, {{17269900763067902200ull, 2075566022784021ull}}, {{10126571795712411436ull, 1660452818227217ull}}, {{722559807086108500ull, 1328362254581774ull}}, {{8534793320821594248ull, 2125379607330838ull}}, {{14206532286141096044ull, 1700303685864670ull}}, {{11365225828912876836ull, 1360242948691736ull}}, {{10805663696776782292ull, 2176388717906778ull}}, {{16023228586905246480ull, 1741110974325422ull}}, {{5439885240040376536ull, 1392888779460338ull}}, {{5014467569322692136ull, 2228622047136541ull}}, {{322225240716243388ull, 1782897637709233ull}}, {{7636477822056815356ull, 1426318110167386ull}}, {{2419833442903541960ull, 1141054488133909ull}}, {{11250431138129487784ull, 1825687181014254ull}}, {{12689693725245500552ull, 1460549744811403ull}}, {{17530452609680221088ull, 1168439795849122ull}}, {{13291328916520712448ull, 1869503673358596ull}}, {{6943714318474659632ull, 1495602938686877ull}}, {{16623017899005458676ull, 1196482350949501ull}}, {{771386935215361620ull, 1914371761519203ull}}, {{7995807177656109944ull, 1531497409215362ull}}, {{17464692186350618924ull, 1225197927372289ull}}, {{16875461053935259308ull, 1960316683795663ull}}, {{2432322398922476476ull, 1568253347036531ull}}, {{16703253178105622472ull, 1254602677629224ull}}, {{15657158640743264988ull, 2007364284206759ull}}, {{16215075727336522316ull, 1605891427365407ull}}, {{5593362952385397204ull, 1284713141892326ull}}, {{1570683094332814884ull, 2055541027027722ull}}, {{12324592919691982876ull, 1644432821622177ull}}, {{2480976706269765652ull, 1315546257297742ull}}, {{7658911544773535368ull, 2104874011676387ull}}, {{17195175680044559264ull, 1683899209341109ull}}, {{17445489358777557736ull, 1347119367472887ull}}, {{13155387715076451084ull, 2155390987956620ull}}, {{10524310172061160868ull, 1724312790365296ull}}, {{4730099322907018368ull, 1379450232292237ull}}, {{11257507731393139716ull, 2207120371667579ull}}, {{12695354999856422096ull, 1765696297334063ull}}, {{17534981629368958324ull, 1412557037867250ull}}, {{14027985303495166656ull, 1130045630293800ull}}, {{3998032411882715036ull, 1808073008470081ull}}, {{17955821188473813324ull, 1446458406776064ull}}, {{18054005765520960980ull, 1157166725420851ull}}, {{3060967521640165308ull, 1851466760673363ull}}, {{9827471646795952892ull, 1481173408538690ull}}, {{7861977317436762312ull, 1184938726830952ull}}, {{16268512522640730028ull, 1895901962929523ull}}, {{1946763573886853052ull, 1516721570343619ull}}, {{5246759673851392764ull, 1213377256274895ull}}, {{8394815478162228424ull, 1941403610039832ull}}, {{17783898826755513708ull, 1553122888031865ull}}, {{14227119061404410964ull, 1242498310425492ull}}, {{8005995239279416252ull, 1987997296680788ull}}, {{13783493820907353648ull, 1590397837344630ull}}, {{11026795056725882920ull, 1272318269875704ull}}, {{6574825646535681700ull, 2035709231801127ull}}, {{16327906961454276332ull, 1628567385440901ull}}, {{9372976754421510740ull, 1302853908352721ull}}, {{7618065177590596540ull, 2084566253364354ull}}, {{9783800956814387556ull, 1667653002691483ull}}, {{15205738394935330688ull, 1334122402153186ull}}, {{16950483802412708460ull, 2134595843445098ull}}, {{2492340597704435796ull, 1707676674756079ull}}, {{5683221292905458960ull, 1366141339804863ull}}, {{5403805253906824016ull, 2185826143687781ull}}, {{633695388383548888ull, 1748660914950225ull}}, {{506956310706839108ull, 1398928731960180ull}}, {{811130097130942576ull, 2238285971136288ull}}, {{8027601707188574708ull, 1790628776909030ull}}, {{6422081365750859764ull, 1432503021527224ull}}, {{8827013907342598136ull, 1146002417221779ull}}, {{3055175807522426048ull, 1833603867554847ull}}, {{13512187090243671808ull, 1466883094043877ull}}, {{3431052042711116800ull, 1173506475235102ull}}, {{9179032083079697204ull, 1877610360376163ull}}, {{14721923295947578408ull, 1502088288300930ull}}, {{11777538636758062728ull, 1201670630640744ull}}, {{7776015374587169392ull, 1922673009025191ull}}, {{2531463484927825192ull, 1538138407220153ull}}, {{9403868417426080800ull, 1230510725776122ull}}, {{288794208914087988ull, 1968817161241796ull}}, {{14988430626098911684ull, 1575053728993436ull}}, {{8301395686137219024ull, 1260042983194749ull}}, {{2214186653593819468ull, 2016068773111599ull}}, {{5460698137616965896ull, 1612855018489279ull}}, {{8057907324835483040ull, 1290284014791423ull}}, {{9203302904994862540ull, 2064454423666277ull}}, {{18430688768221621004ull, 1651563538933021ull}}, {{11055202199835386480ull, 1321250831146417ull}}, {{2930928260768977076ull, 2114001329834268ull}}, {{9723440238099002304ull, 1691201063867414ull}}, {{11468101005221112168ull, 1352960851093931ull}}, {{10970263978869958824ull, 2164737361750290ull}}, {{8776211183095967056ull, 1731789889400232ull}}, {{18089015390702504616ull, 1385431911520185ull}}, {{10495680551414455768ull, 2216691058432297ull}}, {{1017846811647743968ull, 1773352846745838ull}}, {{8192975078802015820ull, 1418682277396670ull}}, {{6554380063041612656ull, 1134945821917336ull}}, {{3108310471382759604ull, 1815913315067738ull}}, {{9865346006590028328ull, 1452730652054190ull}}, {{7892276805272022664ull, 1162184521643352ull}}, {{16316991703177146584ull, 1859495234629363ull}}, {{1985546918315986300ull, 1487596187703491ull}}, {{16345832793620430332ull, 1190076950162792ull}}, {{11395937210825047240ull, 1904123120260468ull}}, {{16495447398143858436ull, 1523298496208374ull}}, {{16885706733256997072ull, 1218638796966699ull}}, {{15949084328985464348ull, 1949822075146719ull}}, {{16448616277930281800ull, 1559857660117375ull}}, {{13158893022344225440ull, 1247886128093900ull}}, {{2607484762041209088ull, 1996617804950241ull}}, {{16843383068600608564ull, 1597294243960192ull}}, {{6096008825396666204ull, 1277835395168154ull}}, {{17132311750118486576ull, 2044536632269046ull}}, {{10016500585352878936ull, 1635629305815237ull}}, {{634502838798482504ull, 1308503444652190ull}}, {{1015204542077572004ull, 2093605511443504ull}}, {{4501512448403967928ull, 1674884409154803ull}}, {{10979907588206994988ull, 1339907527323842ull}}, {{2810456882163550688ull, 2143852043718148ull}}, {{9627063135214661196ull, 1715081634974518ull}}, {{15080348137655549604ull, 1372065307979614ull}}, {{13060510576023148396ull, 2195304492767383ull}}, {{17827106090302339364ull, 1756243594213906ull}}, {{10572336057499961168ull, 1404994875371125ull}}, {{16915737691999937868ull, 2247991800593800ull}}, {{13532590153599950296ull, 1798393440475040ull}}, {{10826072122879960236ull, 1438714752380032ull}}, {{1282160068820147540ull, 1150971801904026ull}}, {{13119502554337967036ull, 1841554883046441ull}}, {{6806253228728463304ull, 1473243906437153ull}}, {{12823700212466591292ull, 1178595125149722ull}}, {{5760525080978904772ull, 1885752200239556ull}}, {{919071250041213496ull, 1508601760191645ull}}, {{735257000032970796ull, 1206881408153316ull}}, {{12244457644278484244ull, 1931010253045305ull}}, {{9795566115422787396ull, 1544808202436244ull}}, {{11525801707080140240ull, 1235846561948995ull}}, {{18441282731328224384ull, 1977354499118392ull}}, {{7374328555578758860ull, 1581883599294714ull}}, {{9588811659204917412ull, 1265506879435771ull}}, {{7963401025244047212ull, 2024811007097234ull}}, {{10060069634937148092ull, 1619848805677787ull}}, {{669358078465897828ull, 1295879044542230ull}}, {{1070972925545436524ull, 2073406471267568ull}}, {{8235475969920169864ull, 1658725177014054ull}}, {{10277729590678046216ull, 1326980141611243ull}}, {{12755018530342963620ull, 2123168226577989ull}}, {{13893363639016281220ull, 1698534581262391ull}}, {{7425342096471114652ull, 1358827665009913ull}}, {{8191198539611873124ull, 2174124264015861ull}}, {{2863610016947588176ull, 1739299411212689ull}}, {{5980236828299980864ull, 1391439528970151ull}}, {{2189681295796148736ull, 2226303246352242ull}}, {{12819791480862649956ull, 1781042597081793ull}}, {{17634530814173940612ull, 1424834077665434ull}}, {{17796973466081062812ull, 1139867262132347ull}}, {{13717762286762059208ull, 1823787619411756ull}}, {{7284861014667737044ull, 1459030095529405ull}}, {{5827888811734189632ull, 1167224076423524ull}}, {{16703319728258524060ull, 1867558522277638ull}}, {{2294609338381088280ull, 1494046817822111ull}}, {{16593082729672511916ull, 1195237454257688ull}}, {{4412839479024557128ull, 1912379926812302ull}}, {{14598318027445376672ull, 1529903941449841ull}}, {{7989305607214391012ull, 1223923153159873ull}}, {{9093540156801115300ull, 1958277045055797ull}}, {{18342878569666623208ull, 1566621636044637ull}}, {{7295605226249477920ull, 1253297308835710ull}}, {{11672968361999164672ull, 2005275694137136ull}}, {{5649025874857421416ull, 1604220555309709ull}}, {{8208569514627847456ull, 1283376444247767ull}}, {{16823060038146466252ull, 2053402310796427ull}}, {{6079750401033352356ull, 1642721848637142ull}}, {{15931846765052412852ull, 1314177478909713ull}}, {{3354861935632398628ull, 2102683966255542ull}}, {{13751935992731649872ull, 1682147173004433ull}}, {{18380246423669140544ull, 1345717738403546ull}}, {{3582952574677252608ull, 2153148381445675ull}}, {{2866362059741802084ull, 1722518705156540ull}}, {{2293089647793441668ull, 1378014964125232ull}}, {{7358292251211416992ull, 2204823942600371ull}}, {{2197284986227223272ull, 1763859154080297ull}}, {{12825874433207509584ull, 1411087323264237ull}}, {{2882001917082187020ull, 1128869858611390ull}}, {{4611203067331499236ull, 1806191773778224ull}}, {{7378311268607109712ull, 1444953419022579ull}}, {{9591997829627598092ull, 1155962735218063ull}}, {{11657847712662246624ull, 1849540376348901ull}}, {{5636929355387886976ull, 1479632301079121ull}}, {{820194669568399256ull, 1183705840863297ull}}, {{5001660286051349136ull, 1893929345381275ull}}, {{4001328228841079308ull, 1515143476305020ull}}, {{3201062583072863448ull, 1212114781044016ull}}, {{16189746577142312484ull, 1939383649670425ull}}, {{12951797261713849988ull, 1551506919736340ull}}, {{10361437809371079988ull, 1241205535789072ull}}, {{1820905236026086692ull, 1985928857262516ull}}, {{16214119447788510648ull, 1588743085810012ull}}, {{5592597928746987872ull, 1270994468648010ull}}, {{8948156685995180592ull, 2033591149836816ull}}, {{3469176534054234152ull, 1626872919869453ull}}, {{10154038856727207968ull, 1301498335895562ull}}, {{1489066911795891456ull, 2082397337432900ull}}, {{1191253529436713164ull, 1665917869946320ull}}, {{953002823549370532ull, 1332734295957056ull}}, {{12592850961904723820ull, 2132374873531289ull}}, {{13763629584265689380ull, 1705899898825031ull}}, {{7321554852670641180ull, 1364719919060025ull}}, {{11714487764273025888ull, 2183551870496040ull}}, {{9371590211418420712ull, 1746841496396832ull}}, {{118574539650915920ull, 1397473197117466ull}}, {{11257765707667196444ull, 2235957115387945ull}}, {{9006212566133757156ull, 1788765692310356ull}}, {{3515621238165095400ull, 1431012553848285ull}}, {{2812496990532076320ull, 1144810043078628ull}}, {{810646370109411792ull, 1831696068925805ull}}, {{648517096087529432ull, 1465356855140644ull}}, {{4208162491611933868ull, 1172285484112515ull}}, {{6733059986579094192ull, 1875656774580024ull}}, {{9075796804005185676ull, 1500525419664019ull}}, {{10949986257946058864ull, 1200420335731215ull}}, {{17519978012713694180ull, 1920672537169944ull}}, {{17705331224912865668ull, 1536538029735955ull}}, {{14164264979930292536ull, 1229230423788764ull}}, {{11594777523662737088ull, 1966768678062023ull}}, {{16654519648414010316ull, 1573414942449618ull}}, {{2255569274505477284ull, 1258731953959695ull}}, {{3608910839208763652ull, 2013971126335512ull}}, {{13955175115592741892ull, 1611176901068409ull}}, {{14853488907216103836ull, 1288941520854727ull}}, {{9008186992578124844ull, 2062306433367564ull}}, {{10895898408804410200ull, 1649845146694051ull}}, {{5027369912301617836ull, 1319876117355241ull}}, {{665094230198767892ull, 2111801787768386ull}}, {{15289470643126655608ull, 1689441430214708ull}}, {{1163530070275593516ull, 1351553144171767ull}}, {{5550996927182859948ull, 2162485030674827ull}}, {{15508843985972018928ull, 1729988024539861ull}}, {{8717726374035704820ull, 1383990419631889ull}}, {{2880315754231396740ull, 2214384671411023ull}}, {{9682950232868938040ull, 1771507737128818ull}}, {{15125057815778971076ull, 1417206189703054ull}}, {{15789395067365087184ull, 1133764951762443ull}}, {{3126939219332677556ull, 1814023922819910ull}}, {{2501551375466142044ull, 1451219138255928ull}}, {{9379938729856734284ull, 1160975310604742ull}}, {{250506708803133560ull, 1857560496967588ull}}, {{7579102996526327496ull, 1486048397574070ull}}, {{6063282397221061996ull, 1188838718059256ull}}, {{2322554206069878548ull, 1902141948894810ull}}, {{1858043364855902836ull, 1521713559115848ull}}, {{8865132321368542916ull, 1217370847292678ull}}, {{10494862899447758344ull, 1947793355668285ull}}, {{8395890319558206676ull, 1558234684534628ull}}, {{14095409885130385984ull, 1246587747627702ull}}, {{7795260557240976284ull, 1994540396204324ull}}, {{9925557260534691352ull, 1595632316963459ull}}, {{11629794623169663404ull, 1276505853570767ull}}, {{3850276138103820152ull, 2042409365713228ull}}, {{10458918539966876768ull, 1633927492570582ull}}, {{988437202489680768ull, 1307141994056466ull}}, {{12649545968209220200ull, 2091427190490345ull}}, {{10119636774567376160ull, 1673141752392276ull}}, {{4406360604911990604ull, 1338513401913821ull}}, {{18118223412084915936ull, 2141621443062113ull}}, {{3426532285442201780ull, 1713297154449691ull}}, {{17498621087321402716ull, 1370637723559752ull}}, {{13240398480746603056ull, 2193020357695604ull}}, {{14281667599339192768ull, 1754416286156483ull}}, {{357287635245623244ull, 1403533028925187ull}}, {{4261009031134907512ull, 2245652846280299ull}}, {{7098156039649836332ull, 1796522277024239ull}}, {{9367873646461779388ull, 1437217821619391ull}}, {{3804950102427513188ull, 1149774257295513ull}}, {{2398571349142110780ull, 1839638811672821ull}}, {{16676252338281329916ull, 1471711049338256ull}}, {{9651653055883153608ull, 1177368839470605ull}}, {{15442644889413045776ull, 1883790143152968ull}}, {{1286069467304705652ull, 1507032114522375ull}}, {{1028855573843764520ull, 1205625691617900ull}}, {{1646168918150023232ull, 1929001106588640ull}}, {{1316935134520018588ull, 1543200885270912ull}}, {{12121594551841745840ull, 1234560708216729ull}}, {{8326504838721062372ull, 1975297133146767ull}}, {{17729250315202580868ull, 1580237706517413ull}}, {{3115353807936333724ull, 1264190165213931ull}}, {{16052612536923864928ull, 2022704264342289ull}}, {{16531438844281002264ull, 1618163411473831ull}}, {{9535802260682891488ull, 1294530729179065ull}}, {{15257283617092626384ull, 2071249166686504ull}}, {{15895175708416011428ull, 1656999333349203ull}}, {{1648094122507078172ull, 1325599466679363ull}}, {{17394345854978966372ull, 2120959146686980ull}}, {{13915476683983173096ull, 1696767317349584ull}}, {{14821730161928448800ull, 1357413853879667ull}}, {{8957373000117876788ull, 2171862166207468ull}}, {{14544596029578122076ull, 1737489732965974ull}}, {{15325025638404407984ull, 1389991786372779ull}}, {{13451994577221321808ull, 2223986858196447ull}}, {{3382898032293236800ull, 1779189486557158ull}}, {{10085016055318410084ull, 1423351589245726ull}}, {{4378664029512817744ull, 1138681271396581ull}}, {{18073908891446239364ull, 1821890034234529ull}}, {{18148475927898901812ull, 1457512027387623ull}}, {{3450734298093390480ull, 1166009621910099ull}}, {{12899872506433245416ull, 1865615395056158ull}}, {{17698595634630416980ull, 1492492316044926ull}}, {{10469527692962423260ull, 1193993852835941ull}}, {{9372546679256056568ull, 1910390164537506ull}}, {{3808688528662934932ull, 1528312131630005ull}}, {{3046950822930347944ull, 1222649705304004ull}}, {{12253818946172377360ull, 1956239528486406ull}}, {{6113706342195991564ull, 1564991622789125ull}}, {{4890965073756793252ull, 1251993298231300ull}}, {{7825544118010869204ull, 2003189277170080ull}}, {{6260435294408695360ull, 1602551421736064ull}}, {{8697697050268866612ull, 1282041137388851ull}}, {{6537617650946365936ull, 2051265819822162ull}}, {{16298140564982823716ull, 1641012655857729ull}}, {{16727861266728169296ull, 1312810124686183ull}}, {{4628485138313608936ull, 2100496199497894ull}}, {{7392136925392797472ull, 1680396959598315ull}}, {{5913709540314237976ull, 1344317567678652ull}}, {{13151284079244691088ull, 2150908108285843ull}}, {{17899724892879573516ull, 1720726486628674ull}}, {{18009128729045569136ull, 1376581189302939ull}}, {{17746559522247179648ull, 2202529902884703ull}}, {{3129201173572012748ull, 1762023922307763ull}}, {{9882058568341430844ull, 1409619137846210ull}}, {{7905646854673144676ull, 1127695310276968ull}}, {{8959686152735121160ull, 1804312496443149ull}}, {{10857097736930007252ull, 1443449997154519ull}}, {{12375027004285916124ull, 1154759997723615ull}}, {{1353299133147914180ull, 1847615996357785ull}}, {{1082639306518331344ull, 1478092797086228ull}}, {{8244809074698485720ull, 1182474237668982ull}}, {{16881043334259487480ull, 1891958780270371ull}}, {{9815485852665679660ull, 1513567024216297ull}}, {{473691052648723080ull, 1210853619373038ull}}, {{15515300943205598224ull, 1937365790996860ull}}, {{12412240754564478580ull, 1549892632797488ull}}, {{17308490233135403508ull, 1239914106237990ull}}, {{9246840299307094000ull, 1983862569980785ull}}, {{7397472239445675200ull, 1587090055984628ull}}, {{13296675421040360804ull, 1269672044787702ull}}, {{6517285414696935996ull, 2031475271660324ull}}, {{8903177146499459120ull, 1625180217328259ull}}, {{10811890531941477620ull, 1300144173862607ull}}, {{2541629592138722900ull, 2080230678180172ull}}, {{13101350117936709288ull, 1664184542544137ull}}, {{3102382464865546784ull, 1331347634035310ull}}, {{4963811943784874856ull, 2130156214456496ull}}, {{281700740285989560ull, 1704124971565197ull}}, {{11293407036454522616ull, 1363299977252157ull}}, {{3312055999359594896ull, 2181279963603452ull}}, {{13717691243713406888ull, 1745023970882761ull}}, {{7284804180228815184ull, 1396019176706209ull}}, {{587640244140373328ull, 2233630682729935ull}}, {{470112195312298664ull, 1786904546183948ull}}, {{7754787385733659576ull, 1429523636947158ull}}, {{13582527538070748308ull, 1143618909557726ull}}, {{14353346431429376644ull, 1829790255292362ull}}, {{4103979515659680668ull, 1463832204233890ull}}, {{3283183612527744536ull, 1171065763387112ull}}, {{8942442594786301580ull, 1873705221419379ull}}, {{10843302890570951588ull, 1498964177135503ull}}, {{16053339941940581916ull, 1199171341708402ull}}, {{10927948648137289776ull, 1918674146733444ull}}, {{12431707733251742144ull, 1534939317386755ull}}, {{9945366186601393712ull, 1227951453909404ull}}, {{4844539454336498972ull, 1964722326255047ull}}, {{14943678007694930148ull, 1571777861004037ull}}, {{4576244776672123472ull, 1257422288803230ull}}, {{7321991642675397556ull, 2011875662085168ull}}, {{13236290943624138692ull, 1609500529668134ull}}, {{14278381569641221276ull, 1287600423734507ull}}, {{8088015252458312748ull, 2060160677975212ull}}, {{17538458646192381168ull, 1648128542380169ull}}, {{17720115731695815256ull, 1318502833904135ull}}, {{9905441097003752796ull, 2109604534246617ull}}, {{545655248119181592ull, 1687683627397294ull}}, {{4125873013237255596ull, 1350146901917835ull}}, {{6601396821179608952ull, 2160235043068536ull}}, {{1591768642201776840ull, 1728188034454829ull}}, {{4962763728503331796ull, 1382550427563863ull}}, {{4251073150863420548ull, 2212080684102181ull}}, {{18158253779658377732ull, 1769664547281744ull}}, {{18215951838468612508ull, 1415731637825395ull}}, {{14572761470774890004ull, 1132585310260316ull}}, {{15937720723756003364ull, 1812136496416506ull}}, {{9060827764262892368ull, 1449709197133205ull}}, {{7248662211410313892ull, 1159767357706564ull}}, {{529813094030771260ull, 1855627772330503ull}}, {{7802548104708437656ull, 1484502217864402ull}}, {{17310084927992481092ull, 1187601774291521ull}}, {{1870694181594597488ull, 1900162838866435ull}}, {{1496555345275677992ull, 1520130271093148ull}}, {{8575941905704363040ull, 1216104216874518ull}}, {{10032158234385070540ull, 1945766746999229ull}}, {{11715075402249966756ull, 1556613397599383ull}}, {{16750757951283794048ull, 1245290718079506ull}}, {{975771018860698216ull, 1992465148927211ull}}, {{15538012074056199868ull, 1593972119141768ull}}, {{1362363215019228924ull, 1275177695313415ull}}, {{2179781144030766280ull, 2040284312501464ull}}, {{5433173729966523344ull, 1632227450001171ull}}, {{657190169231308352ull, 1305781960000937ull}}, {{4740853085512003688ull, 2089251136001499ull}}, {{7482031283151513276ull, 1671400908801199ull}}, {{9674973841263120944ull, 1337120727040959ull}}, {{4411911701795262540ull, 2139393163265535ull}}, {{3529529361436210032ull, 1711514530612428ull}}, {{10202321118632788672ull, 1369211624489942ull}}, {{1566318530844820580ull, 2190738599183908ull}}, {{8631752454159677112ull, 1752590879347126ull}}, {{3216053148585831364ull, 1402072703477701ull}}, {{16213731481963061156ull, 2243316325564321ull}}, {{9281636370828538600ull, 1794653060451457ull}}, {{46611467179010232ull, 1435722448361166ull}}, {{14794684432710849480ull, 1148577958688932ull}}, {{8914099833369717876ull, 1837724733902292ull}}, {{18199326310921505268ull, 1470179787121833ull}}, {{3491414604511473244ull, 1176143829697467ull}}, {{9275612181960267516ull, 1881830127515947ull}}, {{41792116084393368ull, 1505464102012758ull}}, {{7412131322351335340ull, 1204371281610206ull}}, {{4480712486278315900ull, 1926994050576330ull}}, {{3584569989022652720ull, 1541595240461064ull}}, {{6557004805960032496ull, 1233276192368851ull}}, {{3112510060052231352ull, 1973241907790162ull}}, {{13558054492267516048ull, 1578593526232129ull}}, {{14535792408555923164ull, 1262874820985703ull}}, {{1121174965238015120ull, 2020599713577126ull}}, {{15654335231158053388ull, 1616479770861700ull}}, {{12523468184926442712ull, 1293183816689360ull}}, {{1590805022172756724ull, 2069094106702977ull}}, {{12340690461963936348ull, 1655275285362381ull}}, {{6183203554829238756ull, 1324220228289905ull}}, {{9893125687726782008ull, 2118752365263848ull}}, {{15293198179665246252ull, 1695001892211078ull}}, {{1166512099506466032ull, 1356001513768863ull}}, {{16623814618177986948ull, 2169602422030180ull}}, {{13299051694542389556ull, 1735681937624144ull}}, {{14328590170375821968ull, 1388545550099315ull}}, {{4479000198891763536ull, 2221672880158905ull}}, {{3583200159113410828ull, 1777338304127124ull}}, {{6555908942032638984ull, 1421870643301699ull}}, {{8934075968368021512ull, 1137496514641359ull}}, {{3226475105163103448ull, 1819994423426175ull}}, {{2581180084130482756ull, 1455995538740940ull}}, {{2064944067304386204ull, 1164796430992752ull}}, {{6993259322428928252ull, 1863674289588403ull}}, {{12973305087426963248ull, 1490939431670722ull}}, {{2999946440457749952ull, 1192751545336578ull}}, {{1110565489990489604ull, 1908402472538525ull}}, {{888452391992391680ull, 1526721978030820ull}}, {{710761913593913344ull, 1221377582424656ull}}, {{12205265505975992324ull, 1954204131879449ull}}, {{13453561219522704180ull, 1563363305503559ull}}, {{14452197790360073668ull, 1250690644402847ull}}, {{8366121205608476576ull, 2001105031044556ull}}, {{3003548149744870936ull, 1600884024835645ull}}, {{2402838519795896748ull, 1280707219868516ull}}, {{14912588075899165768ull, 2049131551789625ull}}, {{11930070460719332616ull, 1639305241431700ull}}, {{9544056368575466092ull, 1311444193145360ull}}, {{15270490189720745748ull, 2098310709032576ull}}, {{8527043337034686276ull, 1678648567226061ull}}, {{3132285854885838696ull, 1342918853780849ull}}, {{12390354997301162560ull, 2148670166049358ull}}, {{17290981627324750696ull, 1718936132839486ull}}, {{10143436487117890232ull, 1375148906271589ull}}, {{5161451935162893404ull, 2200238250034543ull}}, {{11507859177614135368ull, 1760190600027634ull}}, {{12895636156833218620ull, 1408152480022107ull}}, {{2937811295982754248ull, 1126521984017686ull}}, {{15768544517798137768ull, 1802435174428297ull}}, {{5236137984754689568ull, 1441948139542638ull}}, {{11567608017287572300ull, 1153558511634110ull}}, {{61428753950564064ull, 1845693618614577ull}}, {{11117189447386182220ull, 1476554894891661ull}}, {{5204402743167035452ull, 1181243915913329ull}}, {{15705742018551077372ull, 1889990265461326ull}}, {{8875244800098951576ull, 1511992212369061ull}}, {{3410847025337250936ull, 1209593769895249ull}}, {{12836052870023422144ull, 1935350031832398ull}}, {{17647539925502558364ull, 1548280025465918ull}}, {{3049985496176315720ull, 1238624020372735ull}}, {{4879976793882105152ull, 1981798432596376ull}}, {{214632620363773800ull, 1585438746077101ull}}, {{14929101355258660332ull, 1268350996861680ull}}, {{5439818094704304916ull, 2029361594978689ull}}, {{8041203290505354256ull, 1623489275982951ull}}, {{2743613817662373080ull, 1298791420786361ull}}, {{15457828552485527900ull, 2078066273258177ull}}, {{4987565212504601672ull, 1662453018606542ull}}, {{15058098614229412308ull, 1329962414885233ull}}, {{1956864894315597752ull, 2127939863816374ull}}, {{5254840730194388524ull, 1702351891053099ull}}, {{7893221398897421144ull, 1361881512842479ull}}, {{1561107794010142860ull, 2179010420547967ull}}, {{12316932679433845260ull, 1743208336438373ull}}, {{17232243773030896852ull, 1394566669150698ull}}, {{5435497148397973024ull, 2231306670641118ull}}, {{11727095348202199068ull, 1785045336512894ull}}, {{13071025093303669576ull, 1428036269210315ull}}, {{10456820074642935660ull, 1142429015368252ull}}, {{1973516860461055764ull, 1827886424589204ull}}, {{5268162303110754936ull, 1462309139671363ull}}, {{11593227471972424596ull, 1169847311737090ull}}, {{102419881446327736ull, 1871755698779345ull}}, {{81935905157062188ull, 1497404559023476ull}}, {{14822943983093291044ull, 1197923647218780ull}}, {{5269966299239714052ull, 1916677835550049ull}}, {{7905321854133681564ull, 1533342268440039ull}}, {{10013606298048855576ull, 1226673814752031ull}}, {{8643072447394348276ull, 1962678103603250ull}}, {{6914457957915478620ull, 1570142482882600ull}}, {{5531566366332382896ull, 1256113986306080ull}}, {{8850506186131812636ull, 2009782378089728ull}}, {{14459102578389270752ull, 1607825902471782ull}}, {{4188584433227595956ull, 1286260721977426ull}}, {{17769781537389884500ull, 2058017155163881ull}}, {{10526476415169997276ull, 1646413724131105ull}}, {{8421181132135997820ull, 1317130979304884ull}}, {{2405843367191865544ull, 2107409566887815ull}}, {{1924674693753492436ull, 1685927653510252ull}}, {{12607786199228524916ull, 1348742122808201ull}}, {{12793760289281819224ull, 2157987396493122ull}}, {{2856310601941634732ull, 1726389917194498ull}}, {{9663746111037128432ull, 1381111933755598ull}}, {{11772644962917495168ull, 2209779094008957ull}}, {{2039418340850175488ull, 1767823275207166ull}}, {{16388929931647781684ull, 1414258620165732ull}}, {{5732446315834404700ull, 1131406896132586ull}}, {{1793216475851226872ull, 1810251033812138ull}}, {{8813270810164802144ull, 1448200827049710ull}}, {{7050616648131841716ull, 1158560661639768ull}}, {{7591637822269036424ull, 1853697058623629ull}}, {{9762659072557139460ull, 1482957646898903ull}}, {{15188824887529532216ull, 1186366117519122ull}}, {{9544724561079610252ull, 1898185788030596ull}}, {{3946430834121777880ull, 1518548630424477ull}}, {{14225191111523153272ull, 1214838904339581ull}}, {{15381608148953224588ull, 1943742246943330ull}}, {{12305286519162579672ull, 1554993797554664ull}}, {{13533578030071974060ull, 1243995038043731ull}}, {{14275027218631337852ull, 1990392060869970ull}}, {{11420021774905070280ull, 1592313648695976ull}}, {{5446668605182145900ull, 1273850918956781ull}}, {{1335972138807612796ull, 2038161470330850ull}}, {{1068777711046090236ull, 1630529176264680ull}}, {{855022168836872188ull, 1304423341011744ull}}, {{8746733099622816148ull, 2087077345618790ull}}, {{6997386479698252920ull, 1669661876495032ull}}, {{16665955627984333304ull, 1335729501196025ull}}, {{8218784931065381672ull, 2137167201913641ull}}, {{2885679130110395012ull, 1709733761530913ull}}, {{9687240933572136656ull, 1367787009224730ull}}, {{15499585493715418652ull, 2188459214759568ull}}, {{1331621950746603952ull, 1750767371807655ull}}, {{1065297560597283160ull, 1400613897446124ull}}, {{9083173726439473704ull, 2240982235913798ull}}, {{14645236610635399612ull, 1792785788731038ull}}, {{648142844282588720ull, 1434228630984831ull}}, {{15275909534393712268ull, 1147382904787864ull}}, {{13373408810804208660ull, 1835812647660583ull}}, {{18077424678127187572ull, 1468650118128466ull}}, {{10772590927759839736ull, 1174920094502773ull}}, {{13546796669673833252ull, 1879872151204437ull}}, {{3458739706255245956ull, 1503897720963550ull}}, {{2766991765004196764ull, 1203118176770840ull}}, {{4427186824006714824ull, 1924989082833344ull}}, {{7231098273947282184ull, 1539991266266675ull}}, {{5784878619157825744ull, 1231993013013340ull}}, {{9255805790652521196ull, 1971188820821344ull}}, {{11093993447263927280ull, 1576951056657075ull}}, {{8875194757811141824ull, 1261560845325660ull}}, {{14200311612497826916ull, 2018497352521056ull}}, {{7670900475256351208ull, 1614797882016845ull}}, {{6136720380205080968ull, 1291838305613476ull}}, {{2440054978844308904ull, 2066941288981562ull}}, {{13020090427301178092ull, 1653553031185249ull}}, {{14105421156582852796ull, 1322842424948199ull}}, {{11500627406306833504ull, 2116547879917119ull}}, {{12889850739787377128ull, 1693238303933695ull}}, {{10311880591829901700ull, 1354590643146956ull}}, {{9120311317444022076ull, 2167345029035130ull}}, {{7296249053955217660ull, 1733876023228104ull}}, {{9526348057906084452ull, 1387100818582483ull}}, {{11552808077907824800ull, 2219361309731973ull}}, {{16620944091810080488ull, 1775489047785578ull}}, {{2228708829222333420ull, 1420391238228463ull}}, {{9161664692861687380ull, 1136312990582770ull}}, {{14658663508578699812ull, 1818100784932432ull}}, {{4348233177379139200ull, 1454480627945946ull}}, {{18235981800870952652ull, 1163584502356756ull}}, {{3352129178200151984ull, 1861735203770811ull}}, {{17439098601527762880ull, 1489388163016648ull}}, {{2883232436996479336ull, 1191510530413319ull}}, {{11991869528678187584ull, 1906416848661310ull}}, {{9593495622942550064ull, 1525133478929048ull}}, {{15053494127837860700ull, 1220106783143238ull}}, {{1949497716089115180ull, 1952170853029182ull}}, {{12627644617097023112ull, 1561736682423345ull}}, {{10102115693677618492ull, 1249389345938676ull}}, {{8784687480400368940ull, 1999022953501882ull}}, {{18095796428546026120ull, 1599218362801505ull}}, {{14476637142836820896ull, 1279374690241204ull}}, {{12094572984313182464ull, 2046999504385927ull}}, {{2296960757966725324ull, 1637599603508742ull}}, {{12905615050599111228ull, 1310079682806993ull}}, {{16959635266216667644ull, 2096127492491189ull}}, {{17257057027715244440ull, 1676901993992951ull}}, {{10116296807430285228ull, 1341521595194361ull}}, {{8807377262404635720ull, 2146434552310978ull}}, {{14424599439407529220ull, 1717147641848782ull}}, {{4160981922042202728ull, 1373718113479026ull}}, {{17725617519493255340ull, 2197948981566441ull}}, {{10491145200852693948ull, 1758359185253153ull}}, {{15771613790165975804ull, 1406687348202522ull}}, {{10477186805297919996ull, 2250699757124036ull}}, {{4692400629496425672ull, 1800559805699229ull}}, {{7443269318339050860ull, 1440447844559383ull}}, {{13333313084155061336ull, 1152358275647506ull}}, {{13954603305164277488ull, 1843773241036010ull}}, {{11163682644131421992ull, 1475018592828808ull}}, {{16309643744788958240ull, 1180014874263046ull}}, {{269988288468960920ull, 1888023798820875ull}}, {{215990630775168736ull, 1510419039056700ull}}, {{172792504620134988ull, 1208335231245360ull}}, {{276468007392215984ull, 1933336369992576ull}}, {{14978569664881414080ull, 1546669095994060ull}}, {{11982855731905131264ull, 1237335276795248ull}}, {{15483220356306299700ull, 1979736442872397ull}}, {{5007878655561219112ull, 1583789154297918ull}}, {{11385000553932795936ull, 1267031323438334ull}}, {{7147954442066742528ull, 2027250117501335ull}}, {{5718363553653394024ull, 1621800094001068ull}}, {{11953388472406535864ull, 1297440075200854ull}}, {{8057375111624726416ull, 2075904120321367ull}}, {{17513946533525512100ull, 1660723296257093ull}}, {{2943110782594678712ull, 1328578637005675ull}}, {{4708977252151485936ull, 2125725819209080ull}}, {{3767181801721188748ull, 1700580655367264ull}}, {{6703094256118861324ull, 1360464524293811ull}}, {{3346253180306357472ull, 2176743238870098ull}}, {{10055700173728906624ull, 1741394591096078ull}}, {{15423257768466945944ull, 1393115672876862ull}}, {{9919817170579472220ull, 2228985076602980ull}}, {{7935853736463577776ull, 1783188061282384ull}}, {{10038031803912772544ull, 1426550449025907ull}}, {{651727813646397388ull, 1141240359220726ull}}, {{12110810946059966792ull, 1825984574753161ull}}, {{5999299942106063108ull, 1460787659802529ull}}, {{8488788768426760812ull, 1168630127842023ull}}, {{9892713214740906976ull, 1869808204547237ull}}, {{535472942308904932ull, 1495846563637790ull}}, {{428378353847123944ull, 1196677250910232ull}}, {{4374754180897308636ull, 1914683601456371ull}}, {{18257198603685488204ull, 1531746881165096ull}}, {{10916410068206480240ull, 1225397504932077ull}}, {{2708860850162727088ull, 1960636007891324ull}}, {{5856437494872091996ull, 1568508806313059ull}}, {{8374498810639583920ull, 1254807045050447ull}}, {{17088546911765244592ull, 2007691272080715ull}}, {{13670837529412195676ull, 1606153017664572ull}}, {{3557972394045935892ull, 1284922414131658ull}}, {{2003407015731587108ull, 2055875862610653ull}}, {{8981423242069090332ull, 1644700690088522ull}}, {{18253185037881003236ull, 1315760552070817ull}}, {{14447700801641963884ull, 2105216883313308ull}}, {{490114197087840136ull, 1684173506650647ull}}, {{11460137801896003080ull, 1347338805320517ull}}, {{3578825224065963632ull, 2155742088512828ull}}, {{10241757808736591552ull, 1724593670810262ull}}, {{814708617505452596ull, 1379674936648210ull}}, {{1303533788008724156ull, 2207479898637136ull}}, {{15800222289374620616ull, 1765983918909708ull}}, {{1572131387273965524ull, 1412787135127767ull}}, {{12325751554044903388ull, 1130229708102213ull}}, {{16031853671729935096ull, 1808367532963541ull}}, {{9136134122642037756ull, 1446694026370833ull}}, {{14687604927597450848ull, 1157355221096666ull}}, {{16121470254672100716ull, 1851768353754666ull}}, {{9207827388995770248ull, 1481414683003733ull}}, {{14744959540680436844ull, 1185131746402986ull}}, {{16213237635604878304ull, 1896210794244778ull}}, {{1902543664258171676ull, 1516968635395823ull}}, {{8900732560890357984ull, 1213574908316658ull}}, {{10551823282682662456ull, 1941719853306653ull}}, {{15820156255629950608ull, 1553375882645322ull}}, {{5277427375020139840ull, 1242700706116258ull}}, {{4754534985290313424ull, 1988321129786013ull}}, {{11182325617716071384ull, 1590656903828810ull}}, {{8945860494172857108ull, 1272525523063048ull}}, {{10624027975934661052ull, 2036040836900877ull}}, {{1120524751263908192ull, 1628832669520702ull}}, {{11964466245236857524ull, 1303066135616561ull}}, {{11764448362895151392ull, 2084905816986498ull}}, {{16790256319799941760ull, 1667924653589198ull}}, {{2364158611614222440ull, 1334339722871359ull}}, {{11161351408066576548ull, 2134943556594174ull}}, {{12618429941195171564ull, 1707954845275339ull}}, {{13784092767698047572ull, 1366363876220271ull}}, {{14675850798833055472ull, 2186182201952434ull}}, {{15430029453808354700ull, 1748945761561947ull}}, {{4965325933562863112ull, 1399156609249558ull}}, {{4255172678958670660ull, 2238650574799293ull}}, {{10782835772650757172ull, 1790920459839434ull}}, {{12315617432862516060ull, 1432736367871547ull}}, {{2473796316806192200ull, 1146189094297238ull}}, {{268725292147997200ull, 1833902550875581ull}}, {{14972375492686039052ull, 1467122040700464ull}}, {{15667249208890741564ull, 1173697632560371ull}}, {{17688901104741365860ull, 1877916212096594ull}}, {{17840469698535003012ull, 1502332969677275ull}}, {{14272375758828002408ull, 1201866375741820ull}}, {{4389057140415252236ull, 1922986201186913ull}}, {{10889943341816022436ull, 1538388960949530ull}}, {{8711954673452817948ull, 1230711168759624ull}}, {{2871081033298777748ull, 1969137870015399ull}}, {{5986213641380932524ull, 1575310296012319ull}}, {{8478319727846656340ull, 1260248236809855ull}}, {{13565311564554650148ull, 2016397178895768ull}}, {{18230946881127540764ull, 1613117743116614ull}}, {{18274106319643942932ull, 1290494194493291ull}}, {{3413128408236936432ull, 2064790711189267ull}}, {{13798549170815280116ull, 1651832568951413ull}}, {{18417536966136044736ull, 1321466055161130ull}}, {{11021315072108119964ull, 2114345688257809ull}}, {{12506400872428406296ull, 1691476550606247ull}}, {{2626423068458904388ull, 1353181240484998ull}}, {{512928094792336700ull, 2165089984775997ull}}, {{11478388920059600332ull, 1732071987820797ull}}, {{1804013506563859616ull, 1385657590256638ull}}, {{17643816869469816680ull, 2217052144410620ull}}, {{14115053495575853344ull, 1773641715528496ull}}, {{7602693981718772352ull, 1418913372422797ull}}, {{17150201629600748852ull, 1135130697938237ull}}, {{12682927348393556872ull, 1816209116701180ull}}, {{10146341878714845496ull, 1452967293360944ull}}, {{11806422317713786720ull, 1162373834688755ull}}, {{443531634632507136ull, 1859798135502009ull}}, {{4044174122447916032ull, 1487838508401607ull}}, {{14303385742184063796ull, 1190270806721285ull}}, {{4438673113784950456ull, 1904433290754057ull}}, {{14618984935253691336ull, 1523546632603245ull}}, {{11695187948202953068ull, 1218837306082596ull}}, {{11333603087640904264ull, 1950139689732154ull}}, {{12756231284854633732ull, 1560111751785723ull}}, {{17583682657367527632ull, 1248089401428578ull}}, {{5997799363336582272ull, 1996943042285726ull}}, {{1108890675927355496ull, 1597554433828581ull}}, {{15644507799709525688ull, 1278043547062864ull}}, {{13963166035309510132ull, 2044869675300583ull}}, {{102486384021877136ull, 1635895740240467ull}}, {{11150035551443232680ull, 1308716592192373ull}}, {{14150708067567261964ull, 2093946547507797ull}}, {{3941868824569988924ull, 1675157238006238ull}}, {{10532192689139811784ull, 1340125790404990ull}}, {{16851508302623698856ull, 2144201264647984ull}}, {{17170555456840869408ull, 1715361011718387ull}}, {{6357746735988874880ull, 1372288809374710ull}}, {{10172394777582199808ull, 2195662094999536ull}}, {{4448567007323849524ull, 1756529675999629ull}}, {{7248202420600989940ull, 1405223740799703ull}}, {{7907775058219673584ull, 2248357985279525ull}}, {{6326220046575738868ull, 1798686388223620ull}}, {{5060976037260591092ull, 1438949110578896ull}}, {{359432015066562552ull, 1151159288463117ull}}, {{4264440038848410408ull, 1841854861540987ull}}, {{14479598475304459296ull, 1473483889232789ull}}, {{15273027594985477760ull, 1178787111386231ull}}, {{17058146522492943768ull, 1886059378217970ull}}, {{13646517217994355016ull, 1508847502574376ull}}, {{7227864959653573688ull, 1207078002059501ull}}, {{4185886305961897256ull, 1931324803295202ull}}, {{14416755488995248772ull, 1545059842636161ull}}, {{7844055576454288696ull, 1236047874108929ull}}, {{1482442478101130944ull, 1977676598574287ull}}, {{12254000426706635724ull, 1582141278859429ull}}, {{13492549156107218904ull, 1265713023087543ull}}, {{17898729835029639920ull, 2025140836940069ull}}, {{18008332682765622260ull, 1620112669552055ull}}, {{14406666146212497808ull, 1296090135641644ull}}, {{11982619389714265524ull, 2073744217026631ull}}, {{5896746697029502096ull, 1658995373621305ull}}, {{4717397357623601676ull, 1327196298897044ull}}, {{14926533401681583328ull, 2123514078235270ull}}, {{11941226721345266664ull, 1698811262588216ull}}, {{5863632562334303008ull, 1359049010070573ull}}, {{5692463284992974488ull, 2174478416112917ull}}, {{15622017072220110560ull, 1739582732890333ull}}, {{1429567213550357480ull, 1391666186312267ull}}, {{5976656356422482288ull, 2226665898099627ull}}, {{15849371529363716800ull, 1781332718479701ull}}, {{8990148408749063116ull, 1425066174783761ull}}, {{3502769912257340168ull, 1140052939827009ull}}, {{12983129489095564920ull, 1824084703723214ull}}, {{14075852406018362260ull, 1459267762978571ull}}, {{7571333110072779484ull, 1167414210382857ull}}, {{15803481790858357496ull, 1867862736612571ull}}, {{8953436617944775676ull, 1494290189290057ull}}, {{18230795738581551508ull, 1195432151432045ull}}, {{10722529108020930800ull, 1912691442291273ull}}, {{15956720915900565284ull, 1530153153833018ull}}, {{1697330288494721260ull, 1224122523066415ull}}, {{2715728461591554016ull, 1958596036906264ull}}, {{5861931584015153536ull, 1566876829525011ull}}, {{1000196452470212504ull, 1253501463620009ull}}, {{8979011953436160652ull, 2005602341792014ull}}, {{10872558377490838844ull, 1604481873433611ull}}, {{5008697887250760752ull, 1283585498746889ull}}, {{15392614249085037852ull, 2053736797995022ull}}, {{4935393769784209636ull, 1642989438396018ull}}, {{11327012645311188356ull, 1314391550716814ull}}, {{7055173788272170400ull, 2103026481146903ull}}, {{13022836660101556964ull, 1682421184917522ull}}, {{3039571698597424924ull, 1345936947934018ull}}, {{1173965903013969556ull, 2153499116694429ull}}, {{4628521537153085968ull, 1722799293355543ull}}, {{11081514859206289420ull, 1378239434684434ull}}, {{6662377330504332104ull, 2205183095495095ull}}, {{5329901864403465684ull, 1764146476396076ull}}, {{574572676780862224ull, 1411317181116861ull}}, {{15217053400392331072ull, 1129053744893488ull}}, {{2211192552176267776ull, 1806485991829582ull}}, {{12837000485966745192ull, 1445188793463665ull}}, {{10269600388773396152ull, 1156151034770932ull}}, {{1673965363069792552ull, 1849841655633492ull}}, {{12407218734681565012ull, 1479873324506793ull}}, {{17304472617229072656ull, 1183898659605434ull}}, {{16619109743340785280ull, 1894237855368695ull}}, {{13295287794672628224ull, 1515390284294956ull}}, {{6946881420996192256ull, 1212312227435965ull}}, {{11115010273593907608ull, 1939699563897544ull}}, {{12581357033617036408ull, 1551759651118035ull}}, {{10065085626893629128ull, 1241407720894428ull}}, {{12414788188287896280ull, 1986252353431085ull}}, {{9931830550630317024ull, 1589001882744868ull}}, {{15324162069988074264ull, 1271201506195894ull}}, {{13450612867755187856ull, 2033922409913431ull}}, {{7071141479462239960ull, 1627137927930745ull}}, {{5656913183569791968ull, 1301710342344596ull}}, {{1672363464227846504ull, 2082736547751354ull}}, {{5027239586124187528ull, 1666189238201083ull}}, {{11400489298383170668ull, 1332951390560866ull}}, {{10862085247929252424ull, 2132722224897386ull}}, {{5000319383601491616ull, 1706177779917909ull}}, {{7689604321623103616ull, 1364942223934327ull}}, {{15992715729338876108ull, 2183907558294923ull}}, {{1726126139245369916ull, 1747126046635939ull}}, {{5070249726138206256ull, 1397700837308751ull}}, {{733701932337309364ull, 2236321339694002ull}}, {{11655007990095578460ull, 1789057071755201ull}}, {{5634657577334552444ull, 1431245657404161ull}}, {{818377247125731632ull, 1144996525923329ull}}, {{8688101224884991260ull, 1831994441477326ull}}, {{3261132165166082684ull, 1465595553181861ull}}, {{17366300991100507440ull, 1172476442545488ull}}, {{5649988697309349964ull, 1875962308072782ull}}, {{15588037402073210940ull, 1500769846458225ull}}, {{12470429921658568752ull, 1200615877166580ull}}, {{1505943800944158388ull, 1920985403466529ull}}, {{4894103855497237032ull, 1536788322773223ull}}, {{11293980713881610272ull, 1229430658218578ull}}, {{14381020327468666116ull, 1967089053149725ull}}, {{11504816261974932892ull, 1573671242519780ull}}, {{9203853009579946312ull, 1258936994015824ull}}, {{3658118371102183132ull, 2014299190425319ull}}, {{6615843511623656828ull, 1611439352340255ull}}, {{5292674809298925464ull, 1289151481872204ull}}, {{15846977324362101388ull, 2062642370995526ull}}, {{8988233044747770788ull, 1650113896796421ull}}, {{3501237621056306304ull, 1320091117437137ull}}, {{9291329008432000412ull, 2112145787899419ull}}, {{11122412021487510652ull, 1689716630319535ull}}, {{8897929617190008524ull, 1351773304255628ull}}, {{10547338572762103312ull, 2162837286809005ull}}, {{8437870858209682652ull, 1730269829447204ull}}, {{10439645501309656444ull, 1384215863557763ull}}, {{13014083987353539988ull, 2214745381692421ull}}, {{6721918375140921668ull, 1771796305353937ull}}, {{16445581144338468304ull, 1417437044283149ull}}, {{16845813730212684964ull, 1133949635426519ull}}, {{15885255524114564976ull, 1814319416682431ull}}, {{9018855604549741656ull, 1451455533345945ull}}, {{7215084483639793324ull, 1161164426676756ull}}, {{4165437544339848676ull, 1857863082682810ull}}, {{3332350035471878940ull, 1486290466146248ull}}, {{10044577657861323796ull, 1189032372916998ull}}, {{12381975437836207752ull, 1902451796667197ull}}, {{2526882720785145556ull, 1521961437333758ull}}, {{9400203806111937092ull, 1217569149867006ull}}, {{7661628460295278700ull, 1948110639787210ull}}, {{6129302768236222960ull, 1558488511829768ull}}, {{12282139844072799012ull, 1246790809463814ull}}, {{8583377306290747452ull, 1994865295142103ull}}, {{14245399474516418608ull, 1595892236113682ull}}, {{4017621950129314240ull, 1276713788890946ull}}, {{17496241564432633756ull, 2042742062225513ull}}, {{2928946807320376036ull, 1634193649780411ull}}, {{17100552704823942120ull, 1307354919824328ull}}, {{5224791439266845452ull, 2091767871718926ull}}, {{490484336671566040ull, 1673414297375141ull}}, {{15149782728304894124ull, 1338731437900112ull}}, {{9482257106320189308ull, 2141970300640180ull}}, {{7585805685056151444ull, 1713576240512144ull}}, {{9757993362786831480ull, 1370860992409715ull}}, {{15612789380458930368ull, 2193377587855544ull}}, {{16179580319109054616ull, 1754702070284435ull}}, {{12943664255287243692ull, 1403761656227548ull}}, {{17020513993717679588ull, 2246018649964077ull}}, {{6237713565490323024ull, 1796814919971262ull}}, {{16058217296617989388ull, 1437451935977009ull}}, {{16535922652036301832ull, 1149961548781607ull}}, {{11700080984290441640ull, 1839938478050572ull}}, {{1981367157948532664ull, 1471950782440458ull}}, {{8963791355842646780ull, 1177560625952366ull}}, {{6963368539864414200ull, 1884097001523786ull}}, {{1881346017149621036ull, 1507277601219029ull}}, {{5194425628461607152ull, 1205822080975223ull}}, {{4621732190796661120ull, 1929315329560357ull}}, {{14765432196863059868ull, 1543452263648285ull}}, {{11812345757490447892ull, 1234761810918628ull}}, {{15210404397242806304ull, 1975618897469805ull}}, {{12168323517794245044ull, 1580495117975844ull}}, {{13424007628977306360ull, 1264396094380675ull}}, {{3031668132654138560ull, 2023033751009081ull}}, {{17182729765090952140ull, 1618427000807264ull}}, {{17435532626814672036ull, 1294741600645811ull}}, {{2071410499710102992ull, 2071586561033299ull}}, {{5346477214509992716ull, 1657269248826639ull}}, {{7966530586349904496ull, 1325815399061311ull}}, {{5367751308676026548ull, 2121304638498098ull}}, {{11672898676424641884ull, 1697043710798478ull}}, {{16717016570623534156ull, 1357634968638782ull}}, {{11989831254030013356ull, 2172215949822052ull}}, {{2213167373740190036ull, 1737772759857642ull}}, {{12838580343217883000ull, 1390218207886113ull}}, {{16852379734406702476ull, 2224349132617781ull}}, {{9792554972783451660ull, 1779479306094225ull}}, {{7834043978226761328ull, 1423583444875380ull}}, {{6267235182581409060ull, 1138866755900304ull}}, {{17406273921614075144ull, 1822186809440486ull}}, {{10235670322549349792ull, 1457749447552389ull}}, {{11877885072781390156ull, 1166199558041911ull}}, {{11625918486966403604ull, 1865919292867058ull}}, {{16679432419056943528ull, 1492735434293646ull}}, {{9654197120503644500ull, 1194188347434917ull}}, {{689320133838189908ull, 1910701355895868ull}}, {{7930153736554372572ull, 1528561084716694ull}}, {{10033471803985408380ull, 1222848867773355ull}}, {{16053554886376653412ull, 1956558188437368ull}}, {{1774797464875591760ull, 1565246550749895ull}}, {{1419837971900473408ull, 1252197240599916ull}}, {{13339787199266488420ull, 2003515584959865ull}}, {{10671829759413190736ull, 1602812467967892ull}}, {{1158766178046731944ull, 1282249974374314ull}}, {{9232723514358591756ull, 2051599958998902ull}}, {{7481182003052760ull, 1641279967199122ull}}, {{11074031389828173176ull, 1313023973759297ull}}, {{2961054964757435788ull, 2100838358014876ull}}, {{17126239230773589924ull, 1680670686411900ull}}, {{13700991384618871940ull, 1344536549129520ull}}, {{3474842141680643488ull, 2151258478607233ull}}, {{10158571342828335436ull, 1721006782885786ull}}, {{4437508259520758024ull, 1376805426308629ull}}, {{14478710844717033488ull, 2202888682093806ull}}, {{7893619861031716468ull, 1762310945675045ull}}, {{6314895888825373172ull, 1409848756540036ull}}, {{1362567896318388216ull, 1127879005232029ull}}, {{9558806263593241792ull, 1804606408371246ull}}, {{3957696196132683108ull, 1443685126696997ull}}, {{14234203401131877456ull, 1154948101357597ull}}, {{8017330182843362640ull, 1847916962172156ull}}, {{2724515331532779788ull, 1478333569737725ull}}, {{2179612265226223828ull, 1182666855790180ull}}, {{3487379624361958128ull, 1892266969264288ull}}, {{10168601328973387148ull, 1513813575411430ull}}, {{8134881063178709720ull, 1211050860329144ull}}, {{1947763256860204580ull, 1937681376526631ull}}, {{16315605864455804956ull, 1550145101221304ull}}, {{16741833506306554288ull, 1240116080977043ull}}, {{4650840721639024924ull, 1984185729563270ull}}, {{3720672577311219940ull, 1587348583650616ull}}, {{17733933320816617244ull, 1269878866920492ull}}, {{13616898054338946300ull, 2031806187072788ull}}, {{18272216072954977684ull, 1625444949658230ull}}, {{14617772858363982148ull, 1300355959726584ull}}, {{12320390129156640468ull, 2080569535562535ull}}, {{9856312103325312372ull, 1664455628450028ull}}, {{15263747312144070544ull, 1331564502760022ull}}, {{9664600440462871580ull, 2130503204416036ull}}, {{4042331537628386940ull, 1704402563532829ull}}, {{6923214044844619876ull, 1363522050826263ull}}, {{7387793657009481480ull, 2181635281322021ull}}, {{2220886110865674860ull, 1745308225057617ull}}, {{12844755332918270856ull, 1396246580046093ull}}, {{16862259717927323048ull, 2233994528073749ull}}, {{17179156589083768760ull, 1787195622458999ull}}, {{17432674086008925332ull, 1429756497967199ull}}, {{17635488083549050588ull, 1143805198373759ull}}, {{17148734489452749972ull, 1830088317398015ull}}, {{13718987591562199976ull, 1464070653918412ull}}, {{3596492443765939336ull, 1171256523134730ull}}, {{5754387910025502936ull, 1874010437015568ull}}, {{11982207957504222996ull, 1499208349612454ull}}, {{13275115180745288720ull, 1199366679689963ull}}, {{17550835474450551628ull, 1918986687503941ull}}, {{10351319564818530980ull, 1535189350003153ull}}, {{15659753281338645432ull, 1228151480002522ull}}, {{10298209991174191396ull, 1965042368004036ull}}, {{4549219178197442792ull, 1572033894403229ull}}, {{7328724157299864556ull, 1257627115522583ull}}, {{8036609836937872972ull, 2012203384836133ull}}, {{13807985499034119024ull, 1609762707868906ull}}, {{7357039584485384896ull, 1287810166295125ull}}, {{11771263335176615832ull, 2060496266072200ull}}, {{9417010668141292664ull, 1648397012857760ull}}, {{7533608534513034132ull, 1318717610286208ull}}, {{8364424840478944288ull, 2109948176457933ull}}, {{14070237501866976076ull, 1687958541166346ull}}, {{7566841186751670540ull, 1350366832933077ull}}, {{15796294713544583184ull, 2160586932692923ull}}, {{1568989326609935580ull, 1728469546154339ull}}, {{4944540276029858784ull, 1382775636923471ull}}, {{532566812163953412ull, 2212441019077554ull}}, {{4115402264473073052ull, 1769952815262043ull}}, {{10671019441062279088ull, 1415962252209634ull}}, {{12226164367591733592ull, 1132769801767707ull}}, {{4804467729179132456ull, 1812431682828332ull}}, {{14911620627569036936ull, 1449945346262665ull}}, {{11929296502055229548ull, 1159956277010132ull}}, {{4329479144320725984ull, 1855930043216212ull}}, {{14531629759682311756ull, 1484744034572969ull}}, {{15314652622487759728ull, 1187795227658375ull}}, {{6056700122270863952ull, 1900472364253401ull}}, {{1156011283074780836ull, 1520377891402721ull}}, {{15682204285427465960ull, 1216302313122176ull}}, {{17712829227200124892ull, 1946083700995482ull}}, {{6791565752276279268ull, 1556866960796386ull}}, {{1743903787079113092ull, 1245493568637109ull}}, {{10168943688810401592ull, 1992789709819374ull}}, {{11824503765790231596ull, 1594231767855499ull}}, {{13148951827374095600ull, 1275385414284399ull}}, {{9970276479572821992ull, 2040616662855039ull}}, {{11665569998400167916ull, 1632493330284031ull}}, {{5643107183978224008ull, 1305994664227225ull}}, {{9028971494365158416ull, 2089591462763560ull}}, {{7223177195492126732ull, 1671673170210848ull}}, {{13157239385877522032ull, 1337338536168678ull}}, {{17362234202662124928ull, 2139741657869885ull}}, {{13889787362129699944ull, 1711793326295908ull}}, {{43783445478028984ull, 1369434661036727ull}}, {{3759402327506756700ull, 2191095457658763ull}}, {{10386219491489226008ull, 1752876366127010ull}}, {{8308975593191380804ull, 1402301092901608ull}}, {{9605012134364298964ull, 2243681748642573ull}}, {{15062707336975259820ull, 1794945398914058ull}}, {{982119425354476884ull, 1435956319131247ull}}, {{11853741984509312476ull, 1148765055304997ull}}, {{4208591916247258672ull, 1838024088487996ull}}, {{18124268791965448228ull, 1470419270790396ull}}, {{10810066218830448260ull, 1176335416632317ull}}, {{2538710691161075924ull, 1882136666611708ull}}, {{9409666182412681384ull, 1505709333289366ull}}, {{3838384131188234784ull, 1204567466631493ull}}, {{2452065795159265332ull, 1927307946610389ull}}, {{5651001450869322588ull, 1541846357288311ull}}, {{831452345953547748ull, 1233477085830649ull}}, {{8709021383009497044ull, 1973563337329038ull}}, {{14345914735891418280ull, 1578850669863230ull}}, {{11476731788713134624ull, 1263080535890584ull}}, {{7294724417715284432ull, 2020928857424935ull}}, {{5835779534172227544ull, 1616743085939948ull}}, {{12047321256821602680ull, 1293394468751958ull}}, {{15586365196172653968ull, 2069431150003133ull}}, {{1401045712712392204ull, 1655544920002507ull}}, {{12188883014395644732ull, 1324435936002005ull}}, {{1055468749323479960ull, 2119097497603209ull}}, {{4533723814200694288ull, 1695277998082567ull}}, {{14695025495586286400ull, 1356222398466053ull}}, {{1375947904486596304ull, 2169955837545686ull}}, {{15858153582556918336ull, 1735964670036548ull}}, {{1618476421819803700ull, 1388771736029239ull}}, {{9968259904395506564ull, 2222034777646782ull}}, {{595910294032584604ull, 1777627822117426ull}}, {{15234123494193708976ull, 1422102257693940ull}}, {{12187298795354967180ull, 1137681806155152ull}}, {{4742282813600306196ull, 1820290889848244ull}}, {{7483175065622155280ull, 1456232711878595ull}}, {{5986540052497724224ull, 1164986169502876ull}}, {{2199766454512538112ull, 1863977871204602ull}}, {{12827859607835761460ull, 1491182296963681ull}}, {{6572938871526698844ull, 1192945837570945ull}}, {{10516702194442718152ull, 1908713340113512ull}}, {{1034664126070353876ull, 1526970672090810ull}}, {{827731300856283100ull, 1221576537672648ull}}, {{16081765340337694252ull, 1954522460276236ull}}, {{9176063457528245080ull, 1563617968220989ull}}, {{11030199580764506388ull, 1250894374576791ull}}, {{10269621699739389572ull, 2001430999322866ull}}, {{4526348545049601336ull, 1601144799458293ull}}, {{10999776465523501712ull, 1280915839566634ull}}, {{6531595900611871772ull, 2049465343306615ull}}, {{5225276720489497420ull, 1639572274645292ull}}, {{15248267820617328904ull, 1311657819716233ull}}, {{2261135624536264308ull, 2098652511545974ull}}, {{5498257314370921768ull, 1678922009236779ull}}, {{8087954666238647740ull, 1343137607389423ull}}, {{9251378651239926060ull, 2149020171823077ull}}, {{22405291508120200ull, 1719216137458462ull}}, {{11085970677432227128ull, 1375372909966769ull}}, {{6669506639665832440ull, 2200596655946831ull}}, {{1646256496990755628ull, 1760477324757465ull}}, {{1317005197592604500ull, 1408381859805972ull}}, {{12121650602299814572ull, 1126705487844777ull}}, {{4637245704712062020ull, 1802728780551644ull}}, {{7399145378511559940ull, 1442183024441315ull}}, {{5919316302809247952ull, 1153746419553052ull}}, {{13160254899236707048ull, 1845994271284883ull}}, {{17906901548873186284ull, 1476795417027906ull}}, {{10636172424356638704ull, 1181436333622325ull}}, {{17017875878970621928ull, 1890298133795720ull}}, {{13614300703176497540ull, 1512238507036576ull}}, {{7202091747799287708ull, 1209790805629261ull}}, {{4144649166995039688ull, 1935665289006818ull}}, {{10694416963079852396ull, 1548532231205454ull}}, {{12244882385205792240ull, 1238825784964363ull}}, {{15902463001587357264ull, 1982121255942981ull}}, {{9032621586527975488ull, 1585697004754385ull}}, {{7226097269222380388ull, 1268557603803508ull}}, {{7872406816013898300ull, 2029692166085613ull}}, {{13676623082294939288ull, 1623753732868490ull}}, {{10941298465835951428ull, 1299002986294792ull}}, {{2748682286369880992ull, 2078404778071668ull}}, {{9577643458579725440ull, 1662723822457334ull}}, {{11351463581605690676ull, 1330179057965867ull}}, {{3404946471601463788ull, 2128286492745388ull}}, {{10102654806764991676ull, 1702629194196310ull}}, {{8082123845411993340ull, 1362103355357048ull}}, {{9242049337917279024ull, 2179365368571277ull}}, {{14941840850002572ull, 1743492294857022ull}}, {{11079999916905733028ull, 1394793835885617ull}}, {{2970604608081531552ull, 2231670137416988ull}}, {{9755181315949045888ull, 1785336109933590ull}}, {{7804145052759236712ull, 1428268887946872ull}}, {{17311362486433120336ull, 1142615110357497ull}}, {{12940784719325351248ull, 1828184176571996ull}}, {{6663278960718370676ull, 1462547341257597ull}}, {{16398669612800427508ull, 1170037873006077ull}}, {{11480476121513042724ull, 1872060596809724ull}}, {{12873729711952344500ull, 1497648477447779ull}}, {{13988332584303785924ull, 1198118781958223ull}}, {{245239246434595540ull, 1916990051133158ull}}, {{7574889026631497076ull, 1533592040906526ull}}, {{2370562406563287340ull, 1226873632725221ull}}, {{14860946294726990712ull, 1962997812360353ull}}, {{820710591555861600ull, 1570398249888283ull}}, {{8035266102728509928ull, 1256318599910626ull}}, {{5477728134881795236ull, 2010109759857002ull}}, {{15450228952131167160ull, 1608087807885601ull}}, {{8670834346963023404ull, 1286470246308481ull}}, {{6494637325657016800ull, 2058352394093570ull}}, {{5195709860525613440ull, 1646681915274856ull}}, {{467219073678580428ull, 1317345532219885ull}}, {{747550517885728688ull, 2107752851551816ull}}, {{15355435673276224240ull, 1686202281241452ull}}, {{4905650909137158748ull, 1348961824993162ull}}, {{11538390269361364320ull, 2158338919989059ull}}, {{12920061030231001776ull, 1726671135991247ull}}, {{2957351194700980776ull, 1381336908792998ull}}, {{1042413096779658920ull, 2210139054068797ull}}, {{11901976921649458104ull, 1768111243255037ull}}, {{2142883907835745836ull, 1414488994604030ull}}, {{1714307126268596668ull, 1131591195683224ull}}, {{10121589031513575316ull, 1810545913093158ull}}, {{15475968854694680900ull, 1448436730474526ull}}, {{8691426269013834396ull, 1158749384379621ull}}, {{6527584400938314388ull, 1853999015007394ull}}, {{8911416335492561832ull, 1483199212005915ull}}, {{7129133068394049468ull, 1186559369604732ull}}, {{15095961724172389472ull, 1898494991367571ull}}, {{8387420564596001252ull, 1518795993094057ull}}, {{17777982895902531972ull, 1215036794475245ull}}, {{9998028559734499540ull, 1944058871160393ull}}, {{15377120477271420280ull, 1555247096928314ull}}, {{15991045196559046544ull, 1244197677542651ull}}, {{18206974685010653828ull, 1990716284068242ull}}, {{7186882118524702416ull, 1592573027254594ull}}, {{9438854509561672256ull, 1274058421803675ull}}, {{15102167215298675608ull, 2038493474885880ull}}, {{12081733772238940488ull, 1630794779908704ull}}, {{13354735832533062712ull, 1304635823926963ull}}, {{17678228517310990016ull, 2087417318283141ull}}, {{10453233999106881692ull, 1669933854626513ull}}, {{15741284828769326000ull, 1335947083701210ull}}, {{6739311652321369984ull, 2137515333921937ull}}, {{16459495766082826956ull, 1710012267137549ull}}, {{16856945427608171888ull, 1368009813710039ull}}, {{15903066239947344052ull, 2188815701936063ull}}, {{1654406547732144272ull, 1751052561548851ull}}, {{16080920497153356708ull, 1400842049239080ull}}, {{7282728721735819120ull, 2241347278782529ull}}, {{9515531792130565620ull, 1793077823026023ull}}, {{14991123063188273140ull, 1434462258420818ull}}, {{924852006324887544ull, 1147569806736655ull}}, {{1479763210119820068ull, 1836111690778648ull}}, {{8562508197579676700ull, 1468889352622918ull}}, {{14228704187547562008ull, 1175111482098334ull}}, {{11697880255850368244ull, 1880178371357335ull}}, {{9358304204680294596ull, 1504142697085868ull}}, {{14865340993228056320ull, 1203314157668694ull}}, {{12716499144939159144ull, 1925302652269911ull}}, {{6483850501209416992ull, 1540242121815929ull}}, {{8876429215709443916ull, 1232193697452743ull}}, {{10512937930393199944ull, 1971509915924389ull}}, {{12099699159056470280ull, 1577207932739511ull}}, {{5990410512503265900ull, 1261766346191609ull}}, {{16963354449489046088ull, 2018826153906574ull}}, {{17260032374333147192ull, 1615060923125259ull}}, {{17497374714208428076ull, 1292048738500207ull}}, {{13238404283765843632ull, 2067277981600332ull}}, {{3212025797528854260ull, 1653822385280266ull}}, {{17327015896990724700ull, 1323057908224212ull}}, {{12965830176217518228ull, 2116892653158740ull}}, {{10372664140974014580ull, 1693514122526992ull}}, {{919433683295391016ull, 1354811298021594ull}}, {{8849791522756446276ull, 2167698076834550ull}}, {{7079833218205157020ull, 1734158461467640ull}}, {{5663866574564125616ull, 1387326769174112ull}}, {{12751535334044511312ull, 2219722830678579ull}}, {{13890577081977519372ull, 1775778264542863ull}}, {{44415221356284528ull, 1420622611634291ull}}, {{14792927436052668912ull, 1136498089307432ull}}, {{8911288638716628972ull, 1818396942891892ull}}, {{18197077355199034144ull, 1454717554313513ull}}, {{3489615439933496348ull, 1163774043450811ull}}, {{16651431148119325124ull, 1862038469521297ull}}, {{5942447289011639452ull, 1489630775617038ull}}, {{12132655460693132208ull, 1191704620493630ull}}, {{965504663399459920ull, 1906727392789809ull}}, {{4461752545461478260ull, 1525381914231847ull}}, {{14637448480594913576ull, 1220305531385477ull}}, {{8662522309984220428ull, 1952488850216764ull}}, {{10619366662729286668ull, 1561991080173411ull}}, {{4806144515441519008ull, 1249592864138729ull}}, {{15068528854190251064ull, 1999348582621966ull}}, {{8365474268610290528ull, 1599478866097573ull}}, {{14071077044372053068ull, 1279583092878058ull}}, {{377630382543822968ull, 2047332948604894ull}}, {{3991453120776968700ull, 1637866358883915ull}}, {{3193162496621574960ull, 1310293087107132ull}}, {{8798408809336430256ull, 2096468939371411ull}}, {{3349378232727233884ull, 1677175151497129ull}}, {{6368851400923697428ull, 1341740121197703ull}}, {{6500813426736005564ull, 2146784193916325ull}}, {{5200650741388804452ull, 1717427355133060ull}}, {{4160520593111043560ull, 1373941884106448ull}}, {{2967484134235759376ull, 2198307014570317ull}}, {{13442033751614338468ull, 1758645611656253ull}}, {{18132324630775291420ull, 1406916489325002ull}}, {{14254324150272824984ull, 2251066382920004ull}}, {{15092808134960170308ull, 1800853106336003ull}}, {{1006200063742405276ull, 1440682485068803ull}}, {{8183657680477744868ull, 1152545988055042ull}}, {{16783201103506302112ull, 1844073580888067ull}}, {{6047863253321221044ull, 1475258864710454ull}}, {{8527639417398887156ull, 1180207091768363ull}}, {{9954874253096309128ull, 1888331346829381ull}}, {{4274550587735136980ull, 1510665077463505ull}}, {{3419640470188109584ull, 1208532061970804ull}}, {{12850122381784795980ull, 1933651299153286ull}}, {{6590749090685926460ull, 1546921039322629ull}}, {{8961948087290651492ull, 1237536831458103ull}}, {{10649768124923132064ull, 1980058930332965ull}}, {{8519814499938505652ull, 1584047144266372ull}}, {{17883898044176535492ull, 1267237715413097ull}}, {{13856841611714815492ull, 2027580344660956ull}}, {{7396124474629942072ull, 1622064275728765ull}}, {{5916899579703953656ull, 1297651420583012ull}}, {{13156388142268236176ull, 2076242272932819ull}}, {{14214459328556499264ull, 1660993818346255ull}}, {{11371567462845199408ull, 1328795054677004ull}}, {{7126461496326588088ull, 2126072087483207ull}}, {{16769215641287001440ull, 1700857669986565ull}}, {{13415372513029601152ull, 1360686135989252ull}}, {{6707200761879720548ull, 2177097817582804ull}}, {{9055109424245686764ull, 1741678254066243ull}}, {{14622785168880370056ull, 1393342603252994ull}}, {{12328409825982861120ull, 2229348165204791ull}}, {{6173379046044378572ull, 1783478532163833ull}}, {{12317400866319323504ull, 1426782825731066ull}}, {{6164571878313548480ull, 1141426260584853ull}}, {{6173966190559767248ull, 1826282016935765ull}}, {{4939172952447813796ull, 1461025613548612ull}}, {{15019384806183982008ull, 1168820490838889ull}}, {{12962969245668640244ull, 1870112785342223ull}}, {{17749073026018732840ull, 1496090228273778ull}}, {{3131211976589255300ull, 1196872182619023ull}}, {{1320590347800898160ull, 1914995492190437ull}}, {{12124518722466449496ull, 1531996393752349ull}}, {{13388963792715069920ull, 1225597115001879ull}}, {{10354295624118380904ull, 1960955384003007ull}}, {{904738869810884076ull, 1568764307202406ull}}, {{15481186354816348556ull, 1255011445761924ull}}, {{13701851723480426720ull, 2008018313219079ull}}, {{14650830193526251696ull, 1606414650575263ull}}, {{652617710595270388ull, 1285131720460211ull}}, {{12112234781178163592ull, 2056210752736337ull}}, {{2311090195458710228ull, 1644968602189070ull}}, {{1848872156366968180ull, 1315974881751256ull}}, {{14026241894412880060ull, 2105559810802009ull}}, {{14910342330272214372ull, 1684447848641607ull}}, {{4549576234733950848ull, 1347558278913286ull}}, {{18347368419800052332ull, 2156093246261257ull}}, {{7299197106356221216ull, 1724874597009006ull}}, {{2150008870343066652ull, 1379899677607205ull}}, {{3440014192548906644ull, 2207839484171528ull}}, {{10130708983522945960ull, 1766271587337222ull}}, {{725869557334536120ull, 1413017269869778ull}}, {{7959393275351449544ull, 1130413815895822ull}}, {{16424378055304229592ull, 1808662105433315ull}}, {{13139502444243383672ull, 1446929684346652ull}}, {{3132904325910886292ull, 1157543747477322ull}}, {{8701995736199328392ull, 1852069995963715ull}}, {{6961596588959462712ull, 1481655996770972ull}}, {{16637323715393301140ull, 1185324797416777ull}}, {{11862322685661640532ull, 1896519675866844ull}}, {{13179206963271222748ull, 1517215740693475ull}}, {{10543365570616978200ull, 1213772592554780ull}}, {{16869384912987165120ull, 1942036148087648ull}}, {{2427461486164001124ull, 1553628918470119ull}}, {{5631318003673111224ull, 1242903134776095ull}}, {{9010108805876977956ull, 1988645015641752ull}}, {{18276133488927313336ull, 1590916012513401ull}}, {{10931557976399940344ull, 1272732810010721ull}}, {{10111795132756083908ull, 2036372496017154ull}}, {{11778784920946777448ull, 1629097996813723ull}}, {{16801725566241242604ull, 1303278397450978ull}}, {{4746668017534526228ull, 2085245435921566ull}}, {{107985599285710660ull, 1668196348737253ull}}, {{7465086108912389172ull, 1334557078989802ull}}, {{15633486589001733004ull, 2135291326383683ull}}, {{1438742826975655432ull, 1708233061106947ull}}, {{12219040705806255316ull, 1366586448885557ull}}, {{4793069870322367212ull, 2186538318216892ull}}, {{14902502340483624740ull, 1749230654573513ull}}, {{853955428161168820ull, 1399384523658811ull}}, {{12434375129283601084ull, 2239015237854097ull}}, {{2568802473943060220ull, 1791212190283278ull}}, {{9433739608638268824ull, 1432969752226622ull}}, {{168294057426794412ull, 1146375801781298ull}}, {{15026665750850512352ull, 1834201282850076ull}}, {{8331983785938499556ull, 1467361026280061ull}}, {{2976238214008889324ull, 1173888821024049ull}}, {{12140678771898043564ull, 1878222113638478ull}}, {{17091240647002255496ull, 1502577690910782ull}}, {{6294294888117983752ull, 1202062152728626ull}}, {{2692174191504953356ull, 1923299444365802ull}}, {{13221785797429693656ull, 1538639555492641ull}}, {{6888079823201844600ull, 1230911644394113ull}}, {{7331578902381041036ull, 1969458631030581ull}}, {{2175914307162922508ull, 1575566904824465ull}}, {{1740731445730338004ull, 1260453523859572ull}}, {{6474519127910451132ull, 2016725638175315ull}}, {{5179615302328360904ull, 1613380510540252ull}}, {{15211738686088419692ull, 1290704408432201ull}}, {{16960084268257650864ull, 2065127053491522ull}}, {{6189369785122300044ull, 1652101642793218ull}}, {{12330193457581660680ull, 1321681314234574ull}}, {{8660263087904926124ull, 2114690102775319ull}}, {{10617559285065851220ull, 1691752082220255ull}}, {{8494047428052680976ull, 1353401665776204ull}}, {{2522429440658558592ull, 2165442665241927ull}}, {{13085989996752577844ull, 1732354132193541ull}}, {{6779443182660151952ull, 1385883305754833ull}}, {{7157760277514332800ull, 2217413289207733ull}}, {{13104905851495286888ull, 1773930631366186ull}}, {{6794575866454319184ull, 1419144505092949ull}}, {{9125009507905365672ull, 1135315604074359ull}}, {{3531968768422854104ull, 1816504966518975ull}}, {{2825575014738283284ull, 1453203973215180ull}}, {{2260460011790626628ull, 1162563178572144ull}}, {{10995433648348823252ull, 1860101085715430ull}}, {{8796346918679058600ull, 1488080868572344ull}}, {{10726426349685157204ull, 1190464694857875ull}}, {{17162282159496251524ull, 1904743511772600ull}}, {{13729825727597001220ull, 1523794809418080ull}}, {{10983860582077600976ull, 1219035847534464ull}}, {{6506130487098430592ull, 1950457356055143ull}}, {{12583602019162565120ull, 1560365884844114ull}}, {{13756230430071962420ull, 1248292707875291ull}}, {{14631271058631319224ull, 1997268332600466ull}}, {{8015668032163145056ull, 1597814666080373ull}}, {{13791232055214336692ull, 1278251732864298ull}}, {{18376622473601028384ull, 2045202772582877ull}}, {{7322600349397002060ull, 1636162218066302ull}}, {{16926126723743332616ull, 1308929774453041ull}}, {{1256361054795959928ull, 2094287639124867ull}}, {{12073135288062498912ull, 1675430111299893ull}}, {{17037205859933819776ull, 1340344089039914ull}}, {{16191482931668380672ull, 2144550542463863ull}}, {{1885139901108973568ull, 1715640433971091ull}}, {{16265507179854820144ull, 1372512347176872ull}}, {{11267416228800070940ull, 2196019755482996ull}}, {{5324584168298146428ull, 1756815804386397ull}}, {{15327713778864248112ull, 1405452643509117ull}}, {{9766946787215155688ull, 2248724229614588ull}}, {{15192255059255945196ull, 1798979383691670ull}}, {{12153804047404756156ull, 1439183506953336ull}}, {{6033694423181894604ull, 1151346805562669ull}}, {{17032608706574852012ull, 1842154888900270ull}}, {{13626086965259881608ull, 1473723911120216ull}}, {{7211520757465994964ull, 1178979128896173ull}}, {{7849084397203681620ull, 1886366606233877ull}}, {{17347313961988676264ull, 1509093284987101ull}}, {{10188502354849030688ull, 1207274627989681ull}}, {{8922906138274628456ull, 1931639404783490ull}}, {{7138324910619702764ull, 1545311523826792ull}}, {{16778706372721493180ull, 1236249219061433ull}}, {{4709837307902927152ull, 1977998750498294ull}}, {{7457218661064252044ull, 1582399000398635ull}}, {{5965774928851401636ull, 1265919200318908ull}}, {{5855891071420332292ull, 2025470720510253ull}}, {{12063410486620086480ull, 1620376576408202ull}}, {{2272030759812248536ull, 1296301261126562ull}}, {{7324598030441507984ull, 2074082017802499ull}}, {{9549027239095116712ull, 1659265614241999ull}}, {{11328570606018003692ull, 1327412491393599ull}}, {{7057666525403074936ull, 2123859986229759ull}}, {{9335482035064370272ull, 1699087988983807ull}}, {{89687998567675572ull, 1359270391187046ull}}, {{11211547241934011884ull, 2174832625899273ull}}, {{16347935423031030152ull, 1739866100719418ull}}, {{2010301894199093152ull, 1391892880575535ull}}, {{3216483030718549048ull, 2227028608920856ull}}, {{17330581683542480528ull, 1781622887136684ull}}, {{17553814161575894748ull, 1425298309709347ull}}, {{6664353699776895152ull, 1140238647767478ull}}, {{6973617104901121920ull, 1824381836427965ull}}, {{5578893683920897536ull, 1459505469142372ull}}, {{15531161391362448996ull, 1167604375313897ull}}, {{10092462967212277104ull, 1868167000502236ull}}, {{4384621559027911360ull, 1494533600401789ull}}, {{7197046061964239408ull, 1195626880321431ull}}, {{4136576069658962412ull, 1913003008514290ull}}, {{3309260855727169928ull, 1530402406811432ull}}, {{13715455128807466912ull, 1224321925449145ull}}, {{3497984132382395444ull, 1958915080718633ull}}, {{10177084935389737000ull, 1567132064574906ull}}, {{4452319133569879276ull, 1253705651659925ull}}, {{7123710613711806844ull, 2005929042655880ull}}, {{5698968490969445476ull, 1604743234124704ull}}, {{8248523607517466704ull, 1283794587299763ull}}, {{9508288957286036404ull, 2054071339679621ull}}, {{3917282351086918800ull, 1643257071743697ull}}, {{14201872325095266008ull, 1314605657394957ull}}, {{7965600461184784320ull, 2103369051831932ull}}, {{17440526813173558428ull, 1682695241465545ull}}, {{13952421450538846740ull, 1346156193172436ull}}, {{14945176691378334140ull, 2153849909075898ull}}, {{888094908876936344ull, 1723079927260719ull}}, {{4399824741843459396ull, 1378463941808575ull}}, {{7039719586949535036ull, 2205542306893720ull}}, {{5631775669559628028ull, 1764433845514976ull}}, {{816071720905792100ull, 1411547076411981ull}}, {{15410252635692274972ull, 1129237661129584ull}}, {{13588357772881908984ull, 1806780257807335ull}}, {{10870686218305527188ull, 1445424206245868ull}}, {{16075246604128242396ull, 1156339364996694ull}}, {{14652348122379456868ull, 1850142983994711ull}}, {{8032529683161655168ull, 1480114387195769ull}}, {{10115372561271234460ull, 1184091509756615ull}}, {{16184596098033975136ull, 1894546415610584ull}}, {{16637025693169090432ull, 1515637132488467ull}}, {{5930922925051451696ull, 1212509705990774ull}}, {{16868174309566143364ull, 1940015529585238ull}}, {{2426493003427183720ull, 1552012423668191ull}}, {{16698589661709388268ull, 1241609938934552ull}}, {{11960348199767379940ull, 1986575902295284ull}}, {{13257627374555814272ull, 1589260721836227ull}}, {{3227404270160830772ull, 1271408577468982ull}}, {{8853195646999239560ull, 2034253723950371ull}}, {{3393207702857481324ull, 1627402979160297ull}}, {{13782612606511716028ull, 1301922383328237ull}}, {{7294784911451104356ull, 2083075813325180ull}}, {{5835827929160883484ull, 1666460650660144ull}}, {{8358011158070617108ull, 1333168520528115ull}}, {{13372817852912987376ull, 2133069632844984ull}}, {{14387603097072300224ull, 1706455706275987ull}}, {{4131384848174019532ull, 1365164565020790ull}}, {{6610215757078431252ull, 2184263304033264ull}}, {{8977521420404655324ull, 1747410643226611ull}}, {{3492668321581813936ull, 1397928514581289ull}}, {{12966966944014722944ull, 2236685623330062ull}}, {{2994875925727957708ull, 1789348498664050ull}}, {{2395900740582366168ull, 1431478798931240ull}}, {{1916720592465892932ull, 1145183039144992ull}}, {{6756101762687339020ull, 1832292862631987ull}}, {{16472927854375602184ull, 1465834290105589ull}}, {{16867691098242392068ull, 1172667432084471ull}}, {{1162864053994455052ull, 1876267891335155ull}}, {{930291243195564040ull, 1501014313068124ull}}, {{4433581809298361556ull, 1200811450454499ull}}, {{14472428524361199136ull, 1921298320727198ull}}, {{509896375263228340ull, 1537038656581759ull}}, {{4097265914952492992ull, 1229630925265407ull}}, {{10244974278665899112ull, 1967409480424651ull}}, {{4506630608190808968ull, 1573927584339721ull}}, {{18362699745520288468ull, 1259142067471776ull}}, {{3554877889639089284ull, 2014627307954843ull}}, {{10222599941195092072ull, 1611701846363874ull}}, {{11867428767697983980ull, 1289361477091099ull}}, {{7919839584091043404ull, 2062978363345759ull}}, {{10025220482014745044ull, 1650382690676607ull}}, {{641478756127975388ull, 1320306152541286ull}}, {{12094412454030491592ull, 2112489844066057ull}}, {{2296832333740572628ull, 1689991875252846ull}}, {{16594861125960099396ull, 1351993500202276ull}}, {{726336098342786772ull, 2163189600323643ull}}, {{7959766508158050064ull, 1730551680258914ull}}, {{10057162021268350372ull, 1384441344207131ull}}, {{8712761604545539952ull, 2215106150731410ull}}, {{6970209283636431960ull, 1772084920585128ull}}, {{12954865056392966216ull, 1417667936468102ull}}, {{2985194415630552324ull, 1134134349174482ull}}, {{8465659879750794044ull, 1814614958679171ull}}, {{3083179089058724912ull, 1451691966943337ull}}, {{13534589715472710900ull, 1161353573554669ull}}, {{10587297100530606468ull, 1858165717687471ull}}, {{4780488865682574852ull, 1486532574149977ull}}, {{14892437536771790852ull, 1189226059319981ull}}, {{16449202429351044716ull, 1902761694911970ull}}, {{13159361943480835772ull, 1522209355929576ull}}, {{6838140740042758296ull, 1217767484743661ull}}, {{3562327554584592624ull, 1948427975589858ull}}, {{10228559673151494748ull, 1558742380471886ull}}, {{4493498923779285472ull, 1246993904377509ull}}, {{14568295907530677404ull, 1995190247004014ull}}, {{15343985540766452248ull, 1596152197603211ull}}, {{8585839617871251472ull, 1276921758082569ull}}, {{2669296944368271388ull, 2043074812932111ull}}, {{16892832814462258404ull, 1634459850345688ull}}, {{2446219807344075752ull, 1307567880276551ull}}, {{14981998135976252176ull, 2092108608442481ull}}, {{8296249694039091416ull, 1673686886753985ull}}, {{6636999755231273132ull, 1338949509403188ull}}, {{6929850793628126692ull, 2142319215045101ull}}, {{1854531820160591028ull, 1713855372036081ull}}, {{16241020715096114116ull, 1371084297628864ull}}, {{14917586699928051616ull, 2193734876206183ull}}, {{866022915716710324ull, 1754987900964947ull}}, {{11760864776799099228ull, 1403990320771957ull}}, {{4059988383910917472ull, 2246384513235132ull}}, {{14316037151354464948ull, 1797107610588105ull}}, {{11452829721083571960ull, 1437686088470484ull}}, {{12851612591608767888ull, 1150148870776387ull}}, {{5805184887606387332ull, 1840238193242220ull}}, {{4644147910085109864ull, 1472190554593776ull}}, {{25969513326177568ull, 1177752443675021ull}}, {{11109597665547615080ull, 1884403909880033ull}}, {{16266375761921912708ull, 1507523127904026ull}}, {{9323751794795619844ull, 1206018502323221ull}}, {{7539305242189171104ull, 1929629603717154ull}}, {{9720793008493247208ull, 1543703682973723ull}}, {{15155332036278418412ull, 1234962946378978ull}}, {{2112438369594007520ull, 1975940714206366ull}}, {{16447345954642847308ull, 1580752571365092ull}}, {{5779179134230457200ull, 1264602057092074ull}}, {{16625384244252552168ull, 2023363291347318ull}}, {{2232260951176310764ull, 1618690633077855ull}}, {{1785808760941048612ull, 1294952506462284ull}}, {{10235991646989498424ull, 2071924010339654ull}}, {{11878142132333509064ull, 1657539208271723ull}}, {{16881211335350627896ull, 1326031366617378ull}}, {{4873845248109542696ull, 2121650186587806ull}}, {{209727383745723832ull, 1697320149270245ull}}, {{167781906996579068ull, 1357856119416196ull}}, {{11336497495420257476ull, 2172569791065913ull}}, {{16447895625820026628ull, 1738055832852730ull}}, {{13158316500656021304ull, 1390444666282184ull}}, {{9985259956823903116ull, 2224711466051495ull}}, {{7988207965459122492ull, 1779769172841196ull}}, {{2701217557625387668ull, 1423815338272957ull}}, {{13229020490326041104ull, 1139052270618365ull}}, {{2719688710812114152ull, 1822483632989385ull}}, {{2175750968649691324ull, 1457986906391508ull}}, {{9119298404403573704ull, 1166389525113206ull}}, {{7212179817561897280ull, 1866223240181130ull}}, {{5769743854049517824ull, 1492978592144904ull}}, {{8305143897981524584ull, 1194382873715923ull}}, {{9598881422028529008ull, 1911012597945477ull}}, {{300407508139002560ull, 1528810078356382ull}}, {{11308372450736933016ull, 1223048062685105ull}}, {{18093395921179092828ull, 1956876900296168ull}}, {{3406670292717543292ull, 1565501520236935ull}}, {{2725336234174034636ull, 1252401216189548ull}}, {{671189159936545092ull, 2003841945903277ull}}, {{11604997772174967044ull, 1603073556722621ull}}, {{5594649402998063312ull, 1282458845378097ull}}, {{12640787859538811624ull, 2051934152604955ull}}, {{10112630287631049296ull, 1641547322083964ull}}, {{11779453044846749760ull, 1313237857667171ull}}, {{11468427242270978972ull, 2101180572267474ull}}, {{12864090608558693500ull, 1680944457813979ull}}, {{13980621301588865124ull, 1344755566251183ull}}, {{232901194090722260ull, 2151608906001894ull}}, {{3875669770014488132ull, 1721287124801515ull}}, {{3100535816011590504ull, 1377029699841212ull}}, {{8650206120360455132ull, 2203247519745939ull}}, {{10609513711030274428ull, 1762598015796751ull}}, {{4798262154082309220ull, 1410078412637401ull}}, {{149260908523937052ull, 1128062730109921ull}}, {{11306863897864030252ull, 1804900368175873ull}}, {{16424188747775044848ull, 1443920294540698ull}}, {{2071304553994304908ull, 1155136235632559ull}}, {{10692784915874708500ull, 1848217977012094ull}}, {{12243576747441677124ull, 1478574381609675ull}}, {{9794861397953341700ull, 1182859505287740ull}}, {{15671778236725346720ull, 1892575208460384ull}}, {{16226771404122187696ull, 1514060166768307ull}}, {{5602719493813929512ull, 1211248133414646ull}}, {{1585653560618466572ull, 1937997013463434ull}}, {{4957871663236683580ull, 1550397610770747ull}}, {{15034343774815077836ull, 1240318088616597ull}}, {{9297554780736483244ull, 1984508941786556ull}}, {{3748695009847276272ull, 1587607153429245ull}}, {{2998956007877821016ull, 1270085722743396ull}}, {{15866376056830244596ull, 2032137156389433ull}}, {{1625054401238464708ull, 1625709725111547ull}}, {{12368089965216502736ull, 1300567780089237ull}}, {{5031548685378763084ull, 2080908448142780ull}}, {{4025238948303010468ull, 1664726758514224ull}}, {{6909539973384318696ull, 1331781406811379ull}}, {{18433961586898730564ull, 2130850250898206ull}}, {{11057820454777074128ull, 1704680200718565ull}}, {{8846256363821659300ull, 1363744160574852ull}}, {{17843358996856565204ull, 2181990656919763ull}}, {{3206640753259521196ull, 1745592525535811ull}}, {{17322707861575258248ull, 1396474020428648ull}}, {{5580239690068951260ull, 2234358432685838ull}}, {{11842889381538981652ull, 1787486746148670ull}}, {{9474311505231185320ull, 1429989396918936ull}}, {{3890100389443037932ull, 1143991517535149ull}}, {{13602858252592681340ull, 1830386428056238ull}}, {{18260984231557965720ull, 1464309142444990ull}}, {{14608787385246372576ull, 1171447313955992ull}}, {{8616664557426554828ull, 1874315702329588ull}}, {{14272029275425064508ull, 1499452561863670ull}}, {{11417623420340051608ull, 1199562049490936ull}}, {{10889499843060261924ull, 1919299279185498ull}}, {{16090297503932030188ull, 1535439423348398ull}}, {{1804191558919893180ull, 1228351538678719ull}}, {{10265404123755649736ull, 1965362461885950ull}}, {{8212323299004519788ull, 1572289969508760ull}}, {{6569858639203615828ull, 1257831975607008ull}}, {{6822425007983875004ull, 2012531160971213ull}}, {{12836637635870920648ull, 1610024928776970ull}}, {{10269310108696736520ull, 1288019943021576ull}}, {{9052198544430957784ull, 2060831908834522ull}}, {{18309805279770497196ull, 1648665527067617ull}}, {{7269146594332577112ull, 1318932421654094ull}}, {{562588106706392412ull, 2110291874646551ull}}, {{15207465744332755220ull, 1688233499717240ull}}, {{12165972595466204176ull, 1350586799773792ull}}, {{4708160893778285388ull, 2160938879638068ull}}, {{11145226344506448956ull, 1728751103710454ull}}, {{12605529890347069488ull, 1383000882968363ull}}, {{16479499009813400860ull, 2212801412749381ull}}, {{9494250393108810364ull, 1770241130199505ull}}, {{7595400314487048292ull, 1416192904159604ull}}, {{9765669066331548956ull, 1132954323327683ull}}, {{11935721691388568008ull, 1812726917324293ull}}, {{16927274982594675052ull, 1450181533859434ull}}, {{17231168800817650364ull, 1160145227087547ull}}, {{12812474822340599292ull, 1856232363340076ull}}, {{6560631043130569108ull, 1484985890672061ull}}, {{1559156019762544964ull, 1187988712537649ull}}, {{9873347261103892592ull, 1900781940060238ull}}, {{15277375438366934720ull, 1520625552048190ull}}, {{12221900350693547776ull, 1216500441638552ull}}, {{4797645302142035148ull, 1946400706621684ull}}, {{7527465056455538440ull, 1557120565297347ull}}, {{17090018489390161720ull, 1245696452237877ull}}, {{12586634324056617464ull, 1993114323580604ull}}, {{13758656273987204292ull, 1594491458864483ull}}, {{18385622648673584080ull, 1275593167091586ull}}, {{3591554534684362268ull, 2040949067346539ull}}, {{6562592442489400136ull, 1632759253877231ull}}, {{1560725139249609784ull, 1306207403101785ull}}, {{2497160222799375660ull, 2089931844962856ull}}, {{16755123437207141820ull, 1671945475970284ull}}, {{17093447564507623780ull, 1337556380776227ull}}, {{12592120844244556752ull, 2140090209241964ull}}, {{13763045490137555724ull, 1712072167393571ull}}, {{7321087577368134256ull, 1369657733914857ull}}, {{15403088938530925136ull, 2191452374263771ull}}, {{8633122336082829784ull, 1753161899411017ull}}, {{17974544313091994796ull, 1402529519528813ull}}, {{6623178012495729736ull, 2244047231246102ull}}, {{16366588854222314760ull, 1795237784996881ull}}, {{9403922268635941484ull, 1436190227997505ull}}, {{7523137814908753188ull, 1148952182398004ull}}, {{968974059628274128ull, 1838323491836807ull}}, {{11843225691928350272ull, 1470658793469445ull}}, {{9474580553542680220ull, 1176527034775556ull}}, {{7780631256184467704ull, 1882443255640890ull}}, {{6224505004947574164ull, 1505954604512712ull}}, {{16047650448183790300ull, 1204763683610169ull}}, {{14608194272868333512ull, 1927621893776271ull}}, {{7997206603552756484ull, 1542097515021017ull}}, {{17465811727067936156ull, 1233678012016813ull}}, {{5809205874857235912ull, 1973884819226902ull}}, {{15715411144111519700ull, 1579107855381521ull}}, {{8882980100547305436ull, 1263286284305217ull}}, {{17902116975617599024ull, 2021258054888347ull}}, {{6942995951010258572ull, 1617006443910678ull}}, {{12933094390292027504ull, 1293605155128542ull}}, {{5935555765499602712ull, 2069768248205668ull}}, {{12127142241883502816ull, 1655814598564534ull}}, {{13391062608248712576ull, 1324651678851627ull}}, {{6668304914230298828ull, 2119442686162604ull}}, {{9023992746126149388ull, 1695554148930083ull}}, {{14597891826384740156ull, 1356443319144066ull}}, {{15977929292731763604ull, 2170309310630506ull}}, {{9092994619443500560ull, 1736247448504405ull}}, {{7274395695554800448ull, 1388997958803524ull}}, {{570986668661949748ull, 2222396734085639ull}}, {{4146138149671470120ull, 1777917387268511ull}}, {{18074305778704817388ull, 1422333909814808ull}}, {{3391398178738122940ull, 1137867127851847ull}}, {{9115585900722907028ull, 1820587404562955ull}}, {{7292468720578325624ull, 1456469923650364ull}}, {{9523323791204570820ull, 1165175938920291ull}}, {{7858620436443492668ull, 1864281502272466ull}}, {{2597547534412883812ull, 1491425201817973ull}}, {{9456735657014127696ull, 1193140161454378ull}}, {{11441428236480693992ull, 1909024258327005ull}}, {{9153142589184555192ull, 1527219406661604ull}}, {{11011862886089554476ull, 1221775525329283ull}}, {{13929631803001376840ull, 1954840840526853ull}}, {{75658998175370504ull, 1563872672421483ull}}, {{7439224828024117048ull, 1251098137937186ull}}, {{4524062095354766632ull, 2001757020699498ull}}, {{10997947305767633952ull, 1601405616559598ull}}, {{16177055474097927808ull, 1281124493247678ull}}, {{3747195870105222552ull, 2049799189196286ull}}, {{17755151955051819336ull, 1639839351357028ull}}, {{3136075119815724496ull, 1311871481085623ull}}, {{1328371376963248876ull, 2098994369736997ull}}, {{12130743545796330068ull, 1679195495789597ull}}, {{2325897207153243408ull, 1343356396631678ull}}, {{32086716703279132ull, 2149370234610685ull}}, {{25669373362623304ull, 1719496187688548ull}}, {{7399233128173919288ull, 1375596950150838ull}}, {{8149424190336360540ull, 2200955120241341ull}}, {{2830190537527178108ull, 1760764096193073ull}}, {{9642850059505563132ull, 1408611276954458ull}}, {{15092977677088271152ull, 1126889021563566ull}}, {{16770066653857413200ull, 1803022434501706ull}}, {{9726704508344020236ull, 1442417947601365ull}}, {{7781363606675216188ull, 1153934358081092ull}}, {{16139530585422256224ull, 1846294972929747ull}}, {{5532926838853984332ull, 1477035978343798ull}}, {{11805039100567008112ull, 1181628782675038ull}}, {{15198713746165302660ull, 1890606052280061ull}}, {{8469622182190331804ull, 1512484841824049ull}}, {{10465046560494175764ull, 1209987873459239ull}}, {{5676028052564950256ull, 1935980597534783ull}}, {{11919520071535780852ull, 1548784478027826ull}}, {{5846267242486714356ull, 1239027582422261ull}}, {{1975329958494922328ull, 1982444131875618ull}}, {{8958961596279758508ull, 1585955305500494ull}}, {{10856518091765717128ull, 1268764244400395ull}}, {{17370428946825147408ull, 2030022791040632ull}}, {{6517645527976297280ull, 1624018232832506ull}}, {{1524767607639127500ull, 1299214586266005ull}}, {{2439628172222604000ull, 2078743338025608ull}}, {{9330400167261903848ull, 1662994670420486ull}}, {{3774971319067612752ull, 1330395736336389ull}}, {{13418651739992001052ull, 2128633178138222ull}}, {{3356223762509780196ull, 1702906542510578ull}}, {{10063676639491644804ull, 1362325234008462ull}}, {{1344487364218990392ull, 2179720374413540ull}}, {{1075589891375192312ull, 1743776299530832ull}}, {{11928518357325884820ull, 1395021039624665ull}}, {{638885298011864096ull, 2232033663399465ull}}, {{511108238409491276ull, 1785626930719572ull}}, {{11476933034953323992ull, 1428501544575657ull}}, {{1802848798478838548ull, 1142801235660526ull}}, {{13952604521791872644ull, 1828481977056841ull}}, {{7472734802691587792ull, 1462785581645473ull}}, {{13356885471637090880ull, 1170228465316378ull}}, {{17681667939877435084ull, 1872365544506205ull}}, {{14145334351901948068ull, 1497892435604964ull}}, {{15005616296263468776ull, 1198313948483971ull}}, {{16630288444537729400ull, 1917302317574354ull}}, {{16993579570372093840ull, 1533841854059483ull}}, {{2526817212071944104ull, 1227073483247587ull}}, {{7732256354057020888ull, 1963317573196139ull}}, {{9875153897987527036ull, 1570654058556911ull}}, {{4210774303648111304ull, 1256523246845529ull}}, {{14115936515320798732ull, 2010437194952846ull}}, {{7603400397514728664ull, 1608349755962277ull}}, {{17150766762237513900ull, 1286679804769821ull}}, {{1615785116386649980ull, 2058687687631715ull}}, {{1292628093109319984ull, 1646950150105372ull}}, {{12102148918713186956ull, 1317560120084297ull}}, {{4606043010973457836ull, 2108096192134876ull}}, {{18442229667746407560ull, 1686476953707900ull}}, {{14753783734197126048ull, 1349181562966320ull}}, {{5159309901005850064ull, 2158690500746113ull}}, {{11506145550288500696ull, 1726952400596890ull}}, {{9204916440230800556ull, 1381561920477512ull}}, {{18417215119111191216ull, 2210499072764019ull}}, {{18423120910030863296ull, 1768399258211215ull}}, {{14738496728024690636ull, 1414719406568972ull}}, {{4412099752935931864ull, 1131775525255178ull}}, {{3370010789955580656ull, 1810840840408285ull}}, {{2696008631964464524ull, 1448672672326628ull}}, {{9535504535055392268ull, 1158938137861302ull}}, {{499411997120986336ull, 1854301020578084ull}}, {{4088878412438699392ull, 1483440816462467ull}}, {{14339149174176690480ull, 1186752653169973ull}}, {{806545790231242832ull, 1898804245071958ull}}, {{8023934261668814912ull, 1519043396057566ull}}, {{2729798594593141604ull, 1215234716846053ull}}, {{678328936607116248ull, 1944375546953685ull}}, {{542663149285692996ull, 1555500437562948ull}}, {{7812828148912375044ull, 1244400350050358ull}}, {{8811176223517889748ull, 1991040560080573ull}}, {{14427638608298132444ull, 1592832448064458ull}}, {{474064442412774984ull, 1274265958451567ull}}, {{4447851922602350300ull, 2038825533522507ull}}, {{14626327982307611212ull, 1631060426818005ull}}, {{11701062385846088968ull, 1304848341454404ull}}, {{7653653373128011380ull, 2087757346327047ull}}, {{17190969142728140072ull, 1670205877061637ull}}, {{6374077684698691412ull, 1336164701649310ull}}, {{10198524295517906260ull, 2137863522638896ull}}, {{4469470621672414684ull, 1710290818111117ull}}, {{14643622941563662716ull, 1368232654488893ull}}, {{1293703818050398408ull, 2189172247182230ull}}, {{1034963054440318728ull, 1751337797745784ull}}, {{4517319258294165304ull, 1401070238196627ull}}, {{10917059628012574812ull, 2241712381114603ull}}, {{16112345331893880496ull, 1793369904891682ull}}, {{5511178636031283748ull, 1434695923913346ull}}, {{719594094083116676ull, 1147756739130677ull}}, {{4840699365274897004ull, 1836410782609083ull}}, {{11251257121703738252ull, 1469128626087266ull}}, {{5311656882621080276ull, 1175302900869813ull}}, {{4809302197451818120ull, 1880484641391701ull}}, {{158092943219544172ull, 1504387713113361ull}}, {{14883869613543276632ull, 1203510170490688ull}}, {{1678098493217780672ull, 1925616272785102ull}}, {{12410525238799955508ull, 1540493018228081ull}}, {{6239071376298054080ull, 1232394414582465ull}}, {{9982514202076886532ull, 1971831063331944ull}}, {{11675360176403419548ull, 1577464850665555ull}}, {{9340288141122735640ull, 1261971880532444ull}}, {{3876414581570646052ull, 2019155008851911ull}}, {{17858526924224158136ull, 1615324007081528ull}}, {{3218775095153595536ull, 1292259205665223ull}}, {{1460691337503842540ull, 2067614729064357ull}}, {{12236599514228805000ull, 1654091783251485ull}}, {{9789279611383044000ull, 1323273426601188ull}}, {{11973498563470960076ull, 2117237482561901ull}}, {{5889450036034857740ull, 1693789986049521ull}}, {{1022211214085975868ull, 1355031988839617ull}}, {{5324886757279471712ull, 2168051182143387ull}}, {{15327955850049308340ull, 1734440945714709ull}}, {{15951713494781356992ull, 1387552756571767ull}}, {{10765346332682529896ull, 2220084410514828ull}}, {{15990974695629844564ull, 1776067528411862ull}}, {{5414082127020055004ull, 1420854022729490ull}}, {{4331265701616044004ull, 1136683218183592ull}}, {{10619373937327580728ull, 1818693149093747ull}}, {{1116801520378243936ull, 1454954519274998ull}}, {{8272138845786415796ull, 1163963615419998ull}}, {{9546073338516354952ull, 1862341784671997ull}}, {{258161041329263312ull, 1489873427737598ull}}, {{7585226462547231296ull, 1191898742190078ull}}, {{8447013525333659752ull, 1907037987504125ull}}, {{6757610820266927804ull, 1525630390003300ull}}, {{5406088656213542240ull, 1220504312002640ull}}, {{8649741849941667588ull, 1952806899204224ull}}, {{10609142294695244392ull, 1562245519363379ull}}, {{12176662650498105836ull, 1249796415490703ull}}, {{15793311426055059016ull, 1999674264785125ull}}, {{12634649140844047212ull, 1599739411828100ull}}, {{10107719312675237772ull, 1279791529462480ull}}, {{16172350900280380432ull, 2047666447139968ull}}, {{1869834275998573376ull, 1638133157711975ull}}, {{1495867420798858700ull, 1310506526169580ull}}, {{2393387873278173924ull, 2096810441871328ull}}, {{9293407928106359784ull, 1677448353497062ull}}, {{56028713001267180ull, 1341958682797650ull}}, {{89645940802027492ull, 2147133892476240ull}}, {{71716752641621992ull, 1717707113980992ull}}, {{11125419846339028564ull, 1374165691184793ull}}, {{14111322939400535380ull, 2198665105895669ull}}, {{14978407166262338624ull, 1758932084716535ull}}, {{11982725733009870900ull, 1407145667773228ull}}, {{15483012358073883120ull, 2251433068437165ull}}, {{12386409886459106496ull, 1801146454749732ull}}, {{2530430279683464548ull, 1440917163799786ull}}, {{16781739482714412932ull, 1152733731039828ull}}, {{4714690283891598752ull, 1844373969663726ull}}, {{82403412371368676ull, 1475499175730981ull}}, {{14823317988864736236ull, 1180399340584784ull}}, {{12649262337957847008ull, 1888638944935655ull}}, {{10119409870366277604ull, 1510911155948524ull}}, {{11784876711034932408ull, 1208728924758819ull}}, {{7787756293430160884ull, 1933966279614111ull}}, {{2540856220002218384ull, 1547173023691289ull}}, {{5722033790743685028ull, 1237738418953031ull}}, {{1776556435706075400ull, 1980381470324850ull}}, {{1421245148564860320ull, 1584305176259880ull}}, {{1136996118851888256ull, 1267444141007904ull}}, {{9197891419646841856ull, 2027910625612646ull}}, {{3668964320975563164ull, 1622328500490117ull}}, {{14003217901006181500ull, 1297862800392093ull}}, {{269055753158428460ull, 2076580480627350ull}}, {{215244602526742768ull, 1661264384501880ull}}, {{172195682021394212ull, 1329011507601504ull}}, {{7654210720718051388ull, 2126418412162406ull}}, {{2434019761832530788ull, 1701134729729925ull}}, {{1947215809466024632ull, 1360907783783940ull}}, {{3115545295145639408ull, 2177452454054304ull}}, {{6181785050858421852ull, 1741961963243443ull}}, {{12324125670170558128ull, 1393569570594754ull}}, {{8650554628047162032ull, 2229711312951607ull}}, {{17988490146663460596ull, 1783769050361285ull}}, {{14390792117330768476ull, 1427015240289028ull}}, {{444587249638883812ull, 1141612192231223ull}}, {{15468734858389855392ull, 1826579507569956ull}}, {{8685639071969973992ull, 1461263606055965ull}}, {{6948511257575979192ull, 1169010884844772ull}}, {{14806966826863477032ull, 1870417415751635ull}}, {{11845573461490781624ull, 1496333932601308ull}}, {{16855156398676445944ull, 1197067146081046ull}}, {{1142808534688941252ull, 1915307433729675ull}}, {{914246827751153000ull, 1532245946983740ull}}, {{731397462200922400ull, 1225796757586992ull}}, {{4859584754263386164ull, 1961274812139187ull}}, {{14955714247636439900ull, 1569019849711349ull}}, {{15653920212851062244ull, 1255215879769079ull}}, {{13978225896335968620ull, 2008345407630527ull}}, {{3803883087584954252ull, 1606676326104422ull}}, {{14111152914293694368ull, 1285341060883537ull}}, {{7820449403902269700ull, 2056545697413660ull}}, {{6256359523121815760ull, 1645236557930928ull}}, {{12383785247981273252ull, 1316189246344742ull}}, {{5056661137802395912ull, 2105902794151588ull}}, {{11424026539725737376ull, 1684722235321270ull}}, {{9139221231780589900ull, 1347777788257016ull}}, {{7244056341365123196ull, 2156444461211226ull}}, {{2105896258350188232ull, 1725155568968981ull}}, {{16442112265647791880ull, 1380124455175184ull}}, {{15239333180810736040ull, 2208199128280295ull}}, {{12191466544648588832ull, 1766559302624236ull}}, {{6063824420976960740ull, 1413247442099389ull}}, {{8540408351523478916ull, 1130597953679511ull}}, {{6285955732953745620ull, 1808956725887218ull}}, {{12407462215846817140ull, 1447165380709774ull}}, {{13615318587419364036ull, 1157732304567819ull}}, {{10716463295645251488ull, 1852371687308511ull}}, {{4883821821774290868ull, 1481897349846809ull}}, {{7596406272161343016ull, 1185517879877447ull}}, {{15843598850200059152ull, 1896828607803915ull}}, {{12674879080160047320ull, 1517462886243132ull}}, {{2761205634644217212ull, 1213970308994506ull}}, {{15485975459656478508ull, 1942352494391209ull}}, {{16078129182467093128ull, 1553881995512967ull}}, {{5483805716489853856ull, 1243105596410374ull}}, {{16152786775867586816ull, 1988968954256598ull}}, {{1854182976468338484ull, 1591175163405279ull}}, {{5172695195916581108ull, 1272940130724223ull}}, {{4586963498724619452ull, 2036704209158757ull}}, {{14737617243205426532ull, 1629363367327005ull}}, {{11790093794564341224ull, 1303490693861604ull}}, {{7796103627077214992ull, 2085585110178567ull}}, {{17304929345887502964ull, 1668468088142853ull}}, {{2775897032484271400ull, 1334774470514283ull}}, {{752086437232923920ull, 2135639152822853ull}}, {{7980366779270159780ull, 1708511322258282ull}}, {{17452339867641858792ull, 1366809057806625ull}}, {{9476999714517422456ull, 2186894492490601ull}}, {{3892250956872027640ull, 1749515593992481ull}}, {{17871196024465263404ull, 1399612475193984ull}}, {{17525867194918690480ull, 2239379960310375ull}}, {{14020693755934952384ull, 1791503968248300ull}}, {{11216555004747961908ull, 1433203174598640ull}}, {{8973244003798369524ull, 1146562539678912ull}}, {{18046539220819301564ull, 1834500063486259ull}}, {{18126580191397351572ull, 1467600050789007ull}}, {{7122566523634060612ull, 1174080040631206ull}}, {{4017408808330676336ull, 1878528065009930ull}}, {{3213927046664541068ull, 1502822452007944ull}}, {{6260490452073543176ull, 1202257961606355ull}}, {{10016784723317669084ull, 1923612738570168ull}}, {{15392125408137955912ull, 1538890190856134ull}}, {{16003049141252275052ull, 1231112152684907ull}}, {{10847483367035998792ull, 1969779444295852ull}}, {{1299289064144978388ull, 1575823555436682ull}}, {{12107477695541713680ull, 1260658844349345ull}}, {{925220239157190272ull, 2017054150958953ull}}, {{8118873820809572864ull, 1613643320767162ull}}, {{17563145500873389260ull, 1290914656613729ull}}, {{17032986357171691848ull, 2065463450581967ull}}, {{6247691456253532832ull, 1652370760465574ull}}, {{8687501979744736588ull, 1321896608372459ull}}, {{2831956723365847572ull, 2115034573395935ull}}, {{2265565378692678056ull, 1692027658716748ull}}, {{9191149932437963092ull, 1353622126973398ull}}, {{11016491077158830624ull, 2165795403157437ull}}, {{1434495232243243852ull, 1732636322525950ull}}, {{1147596185794595084ull, 1386109058020760ull}}, {{1836153897271352132ull, 2217774492833216ull}}, {{16226318376784723000ull, 1774219594266572ull}}, {{5602357071943957752ull, 1419375675413258ull}}, {{11860583287038986848ull, 1135500540330606ull}}, {{11598235629778558312ull, 1816800864528970ull}}, {{9278588503822846648ull, 1453440691623176ull}}, {{3733521988316366996ull, 1162752553298541ull}}, {{17041681625531918164ull, 1860404085277665ull}}, {{13633345300425534532ull, 1488323268222132ull}}, {{3527978610856606976ull, 1190658614577706ull}}, {{16712812221596302136ull, 1905053783324329ull}}, {{17059598592018952032ull, 1524043026659463ull}}, {{2579632429389430656ull, 1219234421327571ull}}, {{15195458331248820016ull, 1950775074124113ull}}, {{1088320220773325044ull, 1560620059299291ull}}, {{15628051435586301328ull, 1248496047439432ull}}, {{10247487037970440832ull, 1997593675903092ull}}, {{819292000892532020ull, 1598074940722474ull}}, {{4344782415455935940ull, 1278459952577979ull}}, {{14330349494213318148ull, 2045535924124766ull}}, {{7774930780628744196ull, 1636428739299813ull}}, {{13598642253986816004ull, 1309142991439850ull}}, {{3311083532669353988ull, 2094628786303761ull}}, {{17406262085103124484ull, 1675703029043008ull}}, {{2856963223856768616ull, 1340562423234407ull}}, {{8260489972912740112ull, 2144899877175051ull}}, {{2919043163588281764ull, 1715919901740041ull}}, {{17092629789838266704ull, 1372735921392032ull}}, {{12590812404773585436ull, 2196377474227252ull}}, {{2693952294335047704ull, 1757101979381802ull}}, {{13223208279693769132ull, 1405681583505441ull}}, {{13778435618026209964ull, 2249090533608706ull}}, {{7333399679679057648ull, 1799272426886965ull}}, {{5866719743743246116ull, 1439417941509572ull}}, {{15761422239220327864ull, 1151534353207657ull}}, {{10460880323784883292ull, 1842454965132252ull}}, {{990006629544085984ull, 1473963972105802ull}}, {{11860051747860999756ull, 1179171177684641ull}}, {{11597385167093778968ull, 1886673884295426ull}}, {{5588559318933112848ull, 1509339107436341ull}}, {{781498640404579956ull, 1207471285949073ull}}, {{16007793083614969224ull, 1931954057518516ull}}, {{9116885652150065056ull, 1545563246014813ull}}, {{14672206151203872692ull, 1236450596811850ull}}, {{5028785768216644688ull, 1978320954898961ull}}, {{333679799831405428ull, 1582656763919169ull}}, {{3956292654607034664ull, 1266125411135335ull}}, {{6330068247371255464ull, 2025800657816536ull}}, {{1374705783155094048ull, 1620640526253229ull}}, {{4789113441265985564ull, 1296512421002583ull}}, {{3973232691283666576ull, 2074419873604133ull}}, {{10557283782510753908ull, 1659535898883306ull}}, {{4756478211266692804ull, 1327628719106645ull}}, {{7610365138026708484ull, 2124205950570632ull}}, {{17156338554647097756ull, 1699364760456505ull}}, {{13725070843717678204ull, 1359491808365204ull}}, {{10892066905722554160ull, 2175186893384327ull}}, {{1334955895094222680ull, 1740149514707462ull}}, {{12136011160301109116ull, 1392119611765969ull}}, {{8349571412256043616ull, 2227391378825551ull}}, {{2990308315062924568ull, 1781913103060441ull}}, {{17149641911017980948ull, 1425530482448352ull}}, {{6341015899330564112ull, 1140424385958682ull}}, {{13834974253670812900ull, 1824679017533891ull}}, {{7378630588194739996ull, 1459743214027113ull}}, {{13281602100039612644ull, 1167794571221690ull}}, {{2803819286353828616ull, 1868471313954705ull}}, {{2243055429083062892ull, 1494777051163764ull}}, {{5483793158008360636ull, 1195821640931011ull}}, {{1395371423329556372ull, 1913314625489618ull}}, {{8494994768147465744ull, 1530651700391694ull}}, {{10485344629259882920ull, 1224521360313355ull}}, {{16776551406815812672ull, 1959234176501368ull}}, {{2353194681226919168ull, 1567387341201095ull}}, {{1882555744981535332ull, 1253909872960876ull}}, {{14080135636196187504ull, 2006255796737401ull}}, {{7574759694215039680ull, 1605004637389921ull}}, {{2370458940630121420ull, 1284003709911937ull}}, {{7482083119750104596ull, 2054405935859099ull}}, {{9675015310541994000ull, 1643524748687279ull}}, {{11429361063175505524ull, 1314819798949823ull}}, {{14597628886338898516ull, 2103711678319717ull}}, {{4299405479587298164ull, 1682969342655774ull}}, {{7128873198411748856ull, 1346375474124619ull}}, {{338150673233067200ull, 2154200758599391ull}}, {{15027915797554095052ull, 1723360606879512ull}}, {{4643635008559455396ull, 1378688485503610ull}}, {{7429816013695128632ull, 2205901576805776ull}}, {{2254503996214192584ull, 1764721261444621ull}}, {{16560998455938995360ull, 1411777009155696ull}}, {{9559449950009285964ull, 1129421607324557ull}}, {{537724661047216248ull, 1807074571719292ull}}, {{11498226173063503968ull, 1445659657375433ull}}, {{16577278567934623820ull, 1156527725900346ull}}, {{698204005502025852ull, 1850444361440555ull}}, {{558563204401620680ull, 1480355489152444ull}}, {{4136199378263206868ull, 1184284391321955ull}}, {{6617919005221130988ull, 1894855026115128ull}}, {{12673032833660725436ull, 1515884020892102ull}}, {{2759728637444759704ull, 1212707216713682ull}}, {{8104914634653525848ull, 1940331546741891ull}}, {{2794582892980910356ull, 1552265237393513ull}}, {{9614363943868548932ull, 1241812189914810ull}}, {{15382982310189678292ull, 1986899503863696ull}}, {{8617037033409832308ull, 1589519603090957ull}}, {{17961676070953596816ull, 1271615682472765ull}}, {{10291937639816203292ull, 2034585091956425ull}}, {{8233550111852962632ull, 1627668073565140ull}}, {{6586840089482370104ull, 1302134458852112ull}}, {{14228292957913702492ull, 2083415134163379ull}}, {{15071983181072872316ull, 1666732107330703ull}}, {{989540100632566884ull, 1333385685864563ull}}, {{16340659419979748308ull, 2133417097383300ull}}, {{13072527535983798648ull, 1706733677906640ull}}, {{10458022028787038916ull, 1365386942325312ull}}, {{1975439987091620976ull, 2184619107720500ull}}, {{1580351989673296780ull, 1747695286176400ull}}, {{1264281591738637424ull, 1398156228941120ull}}, {{2022850546781819880ull, 2237049966305792ull}}, {{12686326881651186872ull, 1789639973044633ull}}, {{17527759134804770144ull, 1431711978435706ull}}, {{10332858493101905792ull, 1145369582748565ull}}, {{16532573588963049268ull, 1832591332397704ull}}, {{16915407685912349736ull, 1466073065918163ull}}, {{2464279704504148820ull, 1172858452734531ull}}, {{15010893971432369080ull, 1876573524375249ull}}, {{15698063991887805588ull, 1501258819500199ull}}, {{16247800008252154792ull, 1201007055600159ull}}, {{14928433568977716700ull, 1921611288960255ull}}, {{11942746855182173360ull, 1537289031168204ull}}, {{13243546298887649012ull, 1229831224934563ull}}, {{17500325263478328096ull, 1967729959895301ull}}, {{10310911396040752152ull, 1574183967916241ull}}, {{4559380302090691400ull, 1259347174332993ull}}, {{3605659668603195916ull, 2014955478932789ull}}, {{6573876549624467056ull, 1611964383146231ull}}, {{1569752424957663320ull, 1289571506516985ull}}, {{2511603879932261316ull, 2063314410427176ull}}, {{16766678362913450344ull, 1650651528341740ull}}, {{13413342690330760276ull, 1320521222673392ull}}, {{6703953045561575148ull, 2112833956277428ull}}, {{12741860065933080764ull, 1690267165021942ull}}, {{2814790423262643964ull, 1352213732017554ull}}, {{11882362306704050992ull, 2163541971228086ull}}, {{5816541030621330468ull, 1730833576982469ull}}, {{8342581639238974700ull, 1384666861585975ull}}, {{13348130622782359520ull, 2215466978537560ull}}, {{10678504498225887616ull, 1772373582830048ull}}, {{15921501228064530736ull, 1417898866264038ull}}, {{1669154538225893620ull, 1134319093011231ull}}, {{13738693705387160764ull, 1814910548817969ull}}, {{14680303779051638932ull, 1451928439054375ull}}, {{11744243023241311148ull, 1161542751243500ull}}, {{344044763476546220ull, 1858468401989601ull}}, {{15032631069748878268ull, 1486774721591680ull}}, {{12026104855799102612ull, 1189419777273344ull}}, {{8173721325052833212ull, 1903071643637351ull}}, {{2849628245300356248ull, 1522457314909881ull}}, {{17037097855207926292ull, 1217965851927904ull}}, {{16191310124106951096ull, 1948745363084647ull}}, {{5574350469801740228ull, 1558996290467718ull}}, {{11838178005325212828ull, 1247197032374174ull}}, {{7873038364294609560ull, 1995515251798679ull}}, {{9987779506177597972ull, 1596412201438943ull}}, {{15368921234425899024ull, 1277129761151154ull}}, {{13522227530855707468ull, 2043407617841847ull}}, {{3439084395200745328ull, 1634726094273478ull}}, {{10129965145644416908ull, 1307780875418782ull}}, {{1450548974063425760ull, 2092449400670052ull}}, {{12228485623476471576ull, 1673959520536041ull}}, {{6093439684039266940ull, 1339167616428833ull}}, {{6060154679720916780ull, 2142668186286133ull}}, {{12226821373260554068ull, 1714134549028906ull}}, {{6092108283866532932ull, 1371307639223125ull}}, {{9747373254186452692ull, 2194092222757000ull}}, {{7797898603349162152ull, 1755273778205600ull}}, {{6238318882679329724ull, 1404219022564480ull}}, {{9981310212286927556ull, 2246750436103168ull}}, {{15363745799313362692ull, 1797400348882534ull}}, {{15980345454192600476ull, 1437920279106027ull}}, {{5405578733870259736ull, 1150336223284822ull}}, {{12338274788934325900ull, 1840537957255715ull}}, {{9870619831147460720ull, 1472430365804572ull}}, {{517798235434147928ull, 1177944292643658ull}}, {{15585872435662277980ull, 1884710868229852ull}}, {{5090000319046001736ull, 1507768694583882ull}}, {{15140046699462532360ull, 1206214955667105ull}}, {{5777330645430500160ull, 1929943929067369ull}}, {{8311213331086310452ull, 1543955143253895ull}}, {{6648970664869048360ull, 1235164114603116ull}}, {{3259655434306656732ull, 1976262583364986ull}}, {{17365119606412966676ull, 1581010066691988ull}}, {{2824049240904642372ull, 1264808053353591ull}}, {{15586525229673158764ull, 2023692885365745ull}}, {{12469220183738527012ull, 1618954308292596ull}}, {{6286027332248911284ull, 1295163446634077ull}}, {{13746992546340168380ull, 2072261514614523ull}}, {{18376291666555955352ull, 1657809211691618ull}}, {{3632986889019033312ull, 1326247369353295ull}}, {{5812779022430453300ull, 2121995790965272ull}}, {{15718269662170093608ull, 1697596632772217ull}}, {{5195918100252254240ull, 1358077306217774ull}}, {{15692166589887427432ull, 2172923689948438ull}}, {{1485686827684210976ull, 1738338951958751ull}}, {{15945944721115010072ull, 1390671161567000ull}}, {{7066767480074464500ull, 2225073858507201ull}}, {{1964065169317661276ull, 1780059086805761ull}}, {{16328647394421770312ull, 1424047269444608ull}}, {{1994871471311685280ull, 1139237815555687ull}}, {{6881143168840606776ull, 1822780504889099ull}}, {{9194263349814395744ull, 1458224403911279ull}}, {{11044759494593426916ull, 1166579523129023ull}}, {{13982266376607572744ull, 1866527237006437ull}}, {{3807115471802237548ull, 1493221789605150ull}}, {{3045692377441790040ull, 1194577431684120ull}}, {{4873107803906864064ull, 1911323890694592ull}}, {{14966532687351222220ull, 1529059112555673ull}}, {{905179705655246804ull, 1223247290044539ull}}, {{8826985158532215536ull, 1957195664071262ull}}, {{18129634571051503400ull, 1565756531257009ull}}, {{18193056471583113040ull, 1252605225005607ull}}, {{14351495095565339576ull, 2004168360008972ull}}, {{4102498446968451012ull, 1603334688007178ull}}, {{10660696387058581456ull, 1282667750405742ull}}, {{2299718960326089040ull, 2052268400649188ull}}, {{9218472797744691876ull, 1641814720519350ull}}, {{7374778238195753500ull, 1313451776415480ull}}, {{11799645181113205604ull, 2101522842264768ull}}, {{16818413774374385128ull, 1681218273811814ull}}, {{17144079834241418424ull, 1344974619049451ull}}, {{1605086031592897220ull, 2151959390479123ull}}, {{8662766454758138424ull, 1721567512383298ull}}, {{14308910793290331384ull, 1377254009906638ull}}, {{758164380813068276ull, 2203606415850622ull}}, {{11674577948876185588ull, 1762885132680497ull}}, {{1960964729617127824ull, 1410308106144398ull}}, {{8947469413177522908ull, 1128246484915518ull}}, {{10626602246342126328ull, 1805194375864829ull}}, {{12190630611815611384ull, 1444155500691863ull}}, {{17131202118936309752ull, 1155324400553490ull}}, {{8963179316588543992ull, 1848519040885585ull}}, {{7170543453270835192ull, 1478815232708468ull}}, {{13115132392100488800ull, 1183052186166774ull}}, {{9916165383135051112ull, 1892883497866839ull}}, {{11622281121249951212ull, 1514306798293471ull}}, {{5608476082258050648ull, 1211445438634777ull}}, {{12662910546354791360ull, 1938312701815643ull}}, {{17509026066567653732ull, 1550650161452514ull}}, {{17696569667996033308ull, 1240520129162011ull}}, {{2489069765600281032ull, 1984832206659219ull}}, {{5680604627222135148ull, 1587865765327375ull}}, {{4544483701777708120ull, 1270292612261900ull}}, {{7271173922844332992ull, 2032468179619040ull}}, {{5816939138275466392ull, 1625974543695232ull}}, {{15721597754846104084ull, 1300779634956185ull}}, {{6707812334044214920ull, 2081247415929897ull}}, {{16434296311461102904ull, 1664997932743917ull}}, {{5768739419685061676ull, 1331998346195134ull}}, {{16608680700979919332ull, 2131197353912214ull}}, {{16976293375525845788ull, 1704957883129771ull}}, {{9891685885678766308ull, 1363966306503817ull}}, {{1069302158118384800ull, 2182346090406108ull}}, {{8234139355978528484ull, 1745876872324886ull}}, {{2897962670040912464ull, 1396701497859909ull}}, {{12015437901549280592ull, 2234722396575854ull}}, {{13301699135981334796ull, 1787777917260683ull}}, {{18020056938268888480ull, 1430222333808546ull}}, {{10726696735873200460ull, 1144177867046837ull}}, {{2405319518429479448ull, 1830684587274940ull}}, {{1924255614743583556ull, 1464547669819952ull}}, {{12607450936020597816ull, 1171638135855961ull}}, {{12793223868149135860ull, 1874621017369538ull}}, {{17613276724003129332ull, 1499696813895630ull}}, {{14090621379202503468ull, 1199757451116504ull}}, {{11476947762498274576ull, 1919611921786407ull}}, {{1802860580514799016ull, 1535689537429126ull}}, {{16199683723379480504ull, 1228551629943300ull}}, {{7472749883697617192ull, 1965682607909281ull}}, {{2288851092216183432ull, 1572546086327425ull}}, {{1831080873772946744ull, 1258036869061940ull}}, {{2929729398036714792ull, 2012858990499104ull}}, {{6033132333171282156ull, 1610287192399283ull}}, {{12205203496020846372ull, 1288229753919426ull}}, {{12149627964149533548ull, 2061167606271082ull}}, {{2341004741835806192ull, 1648934085016866ull}}, {{16630199052436286244ull, 1319147268013492ull}}, {{11850923224930416700ull, 2110635628821588ull}}, {{16859436209428154008ull, 1688508503057270ull}}, {{13487548967542523204ull, 1350806802445816ull}}, {{14201380718584216484ull, 2161290883913306ull}}, {{7671755760125462864ull, 1729032707130645ull}}, {{6137404608100370292ull, 1383226165704516ull}}, {{2441149743476771820ull, 2213161865127226ull}}, {{16710315053749058748ull, 1770529492101780ull}}, {{13368252042999246996ull, 1416423593681424ull}}, {{14383950449141307920ull, 1133138874945139ull}}, {{11946274274400361704ull, 1813022199912223ull}}, {{16935717049004110012ull, 1450417759929778ull}}, {{2480527194977557040ull, 1160334207943823ull}}, {{279494697222180940ull, 1856534732710117ull}}, {{11291642202003475720ull, 1485227786168093ull}}, {{16412011391086601224ull, 1188182228934474ull}}, {{15191171781512830988ull, 1901091566295159ull}}, {{15842286239952175112ull, 1520873253036127ull}}, {{5295131362477919444ull, 1216698602428902ull}}, {{12161558994706581432ull, 1946717763886243ull}}, {{17107944825249085792ull, 1557374211108994ull}}, {{17375704674941178956ull, 1245899368887195ull}}, {{9354383406196334716ull, 1993438990219513ull}}, {{14862204354440888420ull, 1594751192175610ull}}, {{11889763483552710736ull, 1275800953740488ull}}, {{15334272758942426856ull, 2041281525984781ull}}, {{8578069392412031160ull, 1633025220787825ull}}, {{6862455513929624928ull, 1306420176630260ull}}, {{10979928822287399884ull, 2090272282608416ull}}, {{5094594243088009584ull, 1672217826086733ull}}, {{11454373023954228312ull, 1337774260869386ull}}, {{10948299208842944656ull, 2140438817391018ull}}, {{16137336996558176372ull, 1712351053912814ull}}, {{16599218411988451420ull, 1369880843130251ull}}, {{733307755988150012ull, 2191809349008403ull}}, {{7965343834274340656ull, 1753447479206722ull}}, {{17440321511645203492ull, 1402757983365377ull}}, {{13147119159664684296ull, 2244412773384604ull}}, {{14207044142473657760ull, 1795530218707683ull}}, {{297588869753195240ull, 1436424174966147ull}}, {{11306117540028287160ull, 1149139339972917ull}}, {{3332392805077618164ull, 1838622943956668ull}}, {{10044611873545915176ull, 1470898355165334ull}}, {{11725038313578642464ull, 1176718684132267ull}}, {{4002666042758186652ull, 1882749894611628ull}}, {{10580830463690369968ull, 1506199915689302ull}}, {{1085966741468475328ull, 1204959932551442ull}}, {{5426895601091470848ull, 1927935892082307ull}}, {{15409562925098907648ull, 1542348713665845ull}}, {{12327650340079126116ull, 1233878970932676ull}}, {{12345542914642781144ull, 1974206353492282ull}}, {{2497736702230404268ull, 1579365082793826ull}}, {{16755584620751964708ull, 1263492066235060ull}}, {{8362191319493591916ull, 2021587305976097ull}}, {{17757799499820604500ull, 1617269844780877ull}}, {{6827541970372662956ull, 1293815875824702ull}}, {{14613415967338171052ull, 2070105401319523ull}}, {{622686329644805872ull, 1656084321055619ull}}, {{4187497878457755020ull, 1324867456844495ull}}, {{6699996605532408032ull, 2119787930951192ull}}, {{16428043728651657396ull, 1695830344760953ull}}, {{2074388538695594948ull, 1356664275808763ull}}, {{18076416920880593208ull, 2170662841294020ull}}, {{14461133536704474564ull, 1736530273035216ull}}, {{7879558014621669328ull, 1389224218428173ull}}, {{8917944008652760604ull, 2222758749485077ull}}, {{18202401651147939452ull, 1778206999588061ull}}, {{10872572506176441240ull, 1422565599670449ull}}, {{12387406819683063312ull, 1138052479736359ull}}, {{8751804467267170332ull, 1820883967578175ull}}, {{7001443573813736268ull, 1456707174062540ull}}, {{5601154859050989012ull, 1165365739250032ull}}, {{12651196589223492744ull, 1864585182800051ull}}, {{6431608456636883872ull, 1491668146240041ull}}, {{1455937950567596776ull, 1193334516992033ull}}, {{17086895979875796132ull, 1909335227187252ull}}, {{6290819154416816260ull, 1527468181749802ull}}, {{16100701767759183976ull, 1221974545399841ull}}, {{18382425198930873716ull, 1955159272639746ull}}, {{11016591344402788652ull, 1564127418111797ull}}, {{1434575446038410272ull, 1251301934489438ull}}, {{17052715972629097732ull, 2002083095183100ull}}, {{13642172778103278184ull, 1601666476146480ull}}, {{10913738222482622548ull, 1281333180917184ull}}, {{6393934711746465108ull, 2050133089467495ull}}, {{5115147769397172084ull, 1640106471573996ull}}, {{402769400775827344ull, 1312085177259197ull}}, {{4333779855983234076ull, 2099336283614715ull}}, {{3467023884786587260ull, 1679469026891772ull}}, {{13841665552055000776ull, 1343575221513417ull}}, {{7389269624320359952ull, 2149720354421468ull}}, {{13290113328940108608ull, 1719776283537174ull}}, {{14321439477893997208ull, 1375821026829739ull}}, {{11846256720404664568ull, 2201313642927583ull}}, {{16855703005807552300ull, 1761050914342066ull}}, {{9795213589904131516ull, 1408840731473653ull}}, {{15214868501407125860ull, 1127072585178922ull}}, {{9586394343283760084ull, 1803316136286276ull}}, {{3979766659885097744ull, 1442652909029021ull}}, {{17941208586875719488ull, 1154122327223216ull}}, {{2880492035807778916ull, 1846595723557147ull}}, {{13372440072871954104ull, 1477276578845717ull}}, {{3319254428813742636ull, 1181821263076574ull}}, {{12689504715585808864ull, 1890914020922518ull}}, {{17530301401952467736ull, 1512731216738014ull}}, {{17713589936303884512ull, 1210184973390411ull}}, {{2516302194892842960ull, 1936295957424659ull}}, {{5702390570656184688ull, 1549036765939727ull}}, {{15629958900750678720ull, 1239229412751781ull}}, {{17629236611717265308ull, 1982767060402850ull}}, {{14103389289373812248ull, 1586213648322280ull}}, {{11282711431499049796ull, 1268970918657824ull}}, {{6984291846172748708ull, 2030353469852519ull}}, {{9276782291680109288ull, 1624282775882015ull}}, {{7421425833344087432ull, 1299426220705612ull}}, {{15563630148092450212ull, 2079081953128979ull}}, {{16140252933215870492ull, 1663265562503183ull}}, {{1844155902346965424ull, 1330612450002547ull}}, {{6639998258497055004ull, 2128979920004075ull}}, {{5311998606797644004ull, 1703183936003260ull}}, {{4249598885438115200ull, 1362547148802608ull}}, {{3110009401959074000ull, 2180075438084173ull}}, {{9866705151051079848ull, 1744060350467338ull}}, {{15272061750324684524ull, 1395248280373870ull}}, {{5988554726809943620ull, 2232397248598193ull}}, {{12169541410931775544ull, 1785917798878554ull}}, {{13424981943487330756ull, 1428734239102843ull}}, {{18118683184273685252ull, 1142987391282274ull}}, {{17921846650612165436ull, 1828779826051639ull}}, {{18026826135231642672ull, 1463023860841311ull}}, {{10732112093443403812ull, 1170419088673049ull}}, {{6103332905283715132ull, 1872670541876879ull}}, {{8572015138968882428ull, 1498136433501503ull}}, {{14236309740658926588ull, 1198509146801202ull}}, {{8020700326086641252ull, 1917614634881924ull}}, {{10105909075611223324ull, 1534091707905539ull}}, {{11774076075230888980ull, 1227273366324431ull}}, {{11459824090885601724ull, 1963637386119090ull}}, {{9167859272708481380ull, 1570909908895272ull}}, {{18402333862392516072ull, 1256727927116217ull}}, {{14686338920860384424ull, 2010764683385948ull}}, {{681024692462576572ull, 1608611746708759ull}}, {{4234168568711971580ull, 1286889397367007ull}}, {{10464018524681064852ull, 2059023035787211ull}}, {{4681866005002941556ull, 1647218428629769ull}}, {{7434841618744263568ull, 1317774742903815ull}}, {{11895746589990821712ull, 2108439588646104ull}}, {{13205946086734567692ull, 1686751670916883ull}}, {{17943454498871474800ull, 1349401336733506ull}}, {{2884085495000987416ull, 2159042138773611ull}}, {{17064663654968431228ull, 1727233711018888ull}}, {{2583684479749014012ull, 1381786968815111ull}}, {{15201941611824153388ull, 2210859150104177ull}}, {{4782855659975502064ull, 1768687320083342ull}}, {{14894330972206132620ull, 1414949856066673ull}}, {{847418333539175128ull, 1131959884853339ull}}, {{8734566963146500848ull, 1811135815765342ull}}, {{18055700014742931648ull, 1448908652612273ull}}, {{3376513567568614348ull, 1159126922089819ull}}, {{12781119337593603608ull, 1854603075343710ull}}, {{10224895470074882884ull, 1483682460274968ull}}, {{15558614005543726952ull, 1186945968219974ull}}, {{13825735964644232156ull, 1899113549151959ull}}, {{14749937586457296048ull, 1519290839321567ull}}, {{4421252439682016192ull, 1215432671457254ull}}, {{14452701532975046556ull, 1944692274331606ull}}, {{7872812411638126920ull, 1555753819465285ull}}, {{6298249929310501536ull, 1244603055572228ull}}, {{6387851072154892136ull, 1991364888915565ull}}, {{5110280857723913708ull, 1593091911132452ull}}, {{15156271130404861936ull, 1274473528905961ull}}, {{16871336179163958452ull, 2039157646249538ull}}, {{2429022499105435792ull, 1631326116999631ull}}, {{16700613258251989924ull, 1305060893599704ull}}, {{15652934768977452912ull, 2088097429759527ull}}, {{5143650185698141684ull, 1670477943807622ull}}, {{15182966592784244316ull, 1336382355046097ull}}, {{9535351289487149612ull, 2138211768073756ull}}, {{3938932216847809368ull, 1710569414459005ull}}, {{3151145773478247492ull, 1368455531567204ull}}, {{12420530867049016636ull, 2189528850507526ull}}, {{6247075878897302984ull, 1751623080406021ull}}, {{1308311888375932064ull, 1401298464324817ull}}, {{5782647836143401628ull, 2242077542919707ull}}, {{15694164713140452272ull, 1793662034335765ull}}, {{12555331770512361816ull, 1434929627468612ull}}, {{2665567786926068808ull, 1147943701974890ull}}, {{4264908459081710092ull, 1836709923159824ull}}, {{7101275582007278396ull, 1469367938527859ull}}, {{9370369280347733040ull, 1175494350822287ull}}, {{235195589588731572ull, 1880790961315660ull}}, {{188156471670985256ull, 1504632769052528ull}}, {{7529222806820608852ull, 1203706215242022ull}}, {{15736105305654884488ull, 1925929944387235ull}}, {{12588884244523907588ull, 1540743955509788ull}}, {{17449805025102946716ull, 1232595164407830ull}}, {{9472943966455163132ull, 1972152263052529ull}}, {{11267703987906040828ull, 1577721810442023ull}}, {{16392860819808653308ull, 1262177448353618ull}}, {{4092484423242383356ull, 2019483917365790ull}}, {{3273987538593906684ull, 1615587133892632ull}}, {{13687236475100856316ull, 1292469707114105ull}}, {{3452834286451818492ull, 2067951531382569ull}}, {{6451616243903365116ull, 1654361225106055ull}}, {{5161292995122692092ull, 1323488980084844ull}}, {{15636766421680127996ull, 2117582368135750ull}}, {{12509413137344102396ull, 1694065894508600ull}}, {{10007530509875281916ull, 1355252715606880ull}}, {{16012048815800451068ull, 2168404344971008ull}}, {{1741592608414629884ull, 1734723475976807ull}}, {{12461320530957434876ull, 1387778780781445ull}}, {{1491368775822344188ull, 2220446049250313ull}}, {{8571792650141695996ull, 1776356839400250ull}}, {{6857434120113356796ull, 1421085471520200ull}}, {{5485947296090685436ull, 1136868377216160ull}}, {{8777515673745096700ull, 1818989403545856ull}}, {{3332663724254167036ull, 1455191522836685ull}}, {{2666130979403333628ull, 1164153218269348ull}}, {{576460752303423484ull, 1862645149230957ull}}, {{11529215046068469756ull, 1490116119384765ull}}, {{9223372036854775804ull, 1192092895507812ull}}, {{18446744073709551612ull, 1907348632812499ull}}, {{18446744073709551612ull, 1525878906249999ull}}, {{18446744073709551612ull, 1220703124999999ull}}, {{18446744073709551612ull, 1953124999999999ull}}, {{18446744073709551612ull, 1562499999999999ull}}, {{18446744073709551612ull, 1249999999999999ull}}, {{18446744073709551612ull, 1999999999999999ull}}, {{18446744073709551612ull, 1599999999999999ull}}, {{18446744073709551612ull, 1279999999999999ull}}, {{18446744073709551612ull, 2047999999999999ull}}, {{18446744073709551612ull, 1638399999999999ull}}, {{18446744073709551612ull, 1310719999999999ull}}, {{18446744073709551612ull, 2097151999999999ull}}, {{18446744073709551612ull, 1677721599999999ull}}, {{18446744073709551612ull, 1342177279999999ull}}, {{18446744073709551612ull, 2147483647999999ull}}, {{18446744073709551612ull, 1717986918399999ull}}, {{18446744073709551612ull, 1374389534719999ull}}, {{18446744073709551612ull, 2199023255551999ull}}, {{18446744073709551612ull, 1759218604441599ull}}, {{18446744073709551612ull, 1407374883553279ull}}, {{18446744073709551612ull, 1125899906842623ull}}, {{7378697629483820644ull, 1801439850948198ull}}, {{13281655733070877160ull, 1441151880758558ull}}, {{18004022215940522376ull, 1152921504606846ull}}, {{2980993842311463540ull, 1844674407370955ull}}, {{2384795073849170832ull, 1475739525896764ull}}, {{5597184873821246988ull, 1180591620717411ull}}, {{1576798168630174536ull, 1888946593147858ull}}, {{8640136164387960272ull, 1511157274518286ull}}, {{3222760116768457896ull, 1208925819614629ull}}, {{12535113816313353280ull, 1934281311383406ull}}, {{6338742238308772300ull, 1547425049106725ull}}, {{5070993790647017840ull, 1237940039285380ull}}, {{8113590065035228544ull, 1980704062856608ull}}, {{13869569681512003484ull, 1584563250285286ull}}, {{7406306930467692464ull, 1267650600228229ull}}, {{782044644522576972ull, 2028240960365167ull}}, {{11693682159843792548ull, 1622592768292133ull}}, {{16733643357358854684ull, 1298074214633706ull}}, {{948387668580795232ull, 2076918743413931ull}}, {{15516105393832277476ull, 1661534994731144ull}}, {{16102233129807732304ull, 1329227995784915ull}}, {{7316828933982820072ull, 2126764793255865ull}}, {{5853463147186256060ull, 1701411834604692ull}}, {{15750816961974735816ull, 1361129467683753ull}}, {{3065214250708115368ull, 2177807148294006ull}}, {{17209566659534133588ull, 1742245718635204ull}}, {{17457002142369217192ull, 1393796574908163ull}}, {{5795110539339285568ull, 2230074519853062ull}}, {{15704134875697159424ull, 1784059615882449ull}}, {{16252656715299637864ull, 1427247692705959ull}}, {{16691474186981620612ull, 1141798154164767ull}}, {{11948963440202951688ull, 1826877046663628ull}}, {{16937868381646181996ull, 1461501637330902ull}}, {{6171597075833124952ull, 1169201309864722ull}}, {{13563904136074910244ull, 1870722095783555ull}}, {{10851123308859928196ull, 1496577676626844ull}}, {{12370247461829852880ull, 1197262141301475ull}}, {{1345651865218212992ull, 1915619426082361ull}}, {{15833916751142211688ull, 1532495540865888ull}}, {{1599086956688038380ull, 1225996432692711ull}}, {{13626585574926592376ull, 1961594292308337ull}}, {{3522570830457453256ull, 1569275433846670ull}}, {{2818056664365962604ull, 1255420347077336ull}}, {{15576937107211271136ull, 2008672555323737ull}}, {{5082852056285196264ull, 1606938044258990ull}}, {{4066281645028157008ull, 1285550435407192ull}}, {{10195399446786961540ull, 2056880696651507ull}}, {{777621927945748584ull, 1645504557321206ull}}, {{15379492801324240160ull, 1316403645856964ull}}, {{13539142037893053288ull, 2106245833371143ull}}, {{18210011259798263276ull, 1684996666696914ull}}, {{18257357822580520944ull, 1347997333357531ull}}, {{3386330812935461248ull, 2156795733372051ull}}, {{17466459909316010292ull, 1725436586697640ull}}, {{13973167927452808232ull, 1380349269358112ull}}, {{7599673424956851880ull, 2208558830972980ull}}, {{6079738739965481504ull, 1766847064778384ull}}, {{8553139806714295528ull, 1413477651822707ull}}, {{17910558289597167392ull, 1130782121458165ull}}, {{10210149189645916208ull, 1809251394333065ull}}, {{8168119351716732968ull, 1447401115466452ull}}, {{17602541925599117344ull, 1157920892373161ull}}, {{2338625377765215488ull, 1852673427797059ull}}, {{5560249116954082712ull, 1482138742237647ull}}, {{15516245737788997140ull, 1185710993790117ull}}, {{10068597921494754132ull, 1897137590064188ull}}, {{15433575966679623952ull, 1517710072051350ull}}, {{12346860773343699160ull, 1214168057641080ull}}, {{1308233163640367044ull, 1942668892225729ull}}, {{4735935345654203956ull, 1554135113780583ull}}, {{11167445906007183812ull, 1243308091024466ull}}, {{10489215820127673452ull, 1989292945639146ull}}, {{4702023841360228440ull, 1591434356511317ull}}, {{14829665517313913720ull, 1273147485209053ull}}, {{1591371939250800016ull, 2037035976334486ull}}, {{16030492810368281304ull, 1629628781067588ull}}, {{1756347804068894072ull, 1303703024854071ull}}, {{13878202930735961488ull, 2085924839766513ull}}, {{34515900363038220ull, 1668739871813211ull}}, {{14785007979258071868ull, 1334991897450568ull}}, {{1519919878361453052ull, 2135987035920910ull}}, {{1215935902689162440ull, 1708789628736728ull}}, {{8351446351635150600ull, 1367031702989382ull}}, {{17051662977358151284ull, 2187250724783011ull}}, {{9951981567144610704ull, 1749800579826409ull}}, {{11650934068457598884ull, 1399840463861127ull}}, {{3884099250564516924ull, 2239744742177804ull}}, {{6796628215193523860ull, 1791795793742243ull}}, {{12816000201638639736ull, 1433436634993794ull}}, {{13942148976052822112ull, 1146749307995035ull}}, {{3860694287974963764ull, 1834798892792057ull}}, {{14156601874605701980ull, 1467839114233645ull}}, {{11325281499684561584ull, 1174271291386916ull}}, {{10741752770011477888ull, 1878834066219066ull}}, {{4904053401267271988ull, 1503067252975253ull}}, {{11301940350497638236ull, 1202453802380202ull}}, {{3325709301828579884ull, 1923926083808324ull}}, {{6349916256204774232ull, 1539140867046659ull}}, {{8769281819705729708ull, 1231312693637327ull}}, {{17720199726271077856ull, 1970100309819723ull}}, {{3108113336791131316ull, 1576080247855779ull}}, {{6175839484174815376ull, 1260864198284623ull}}, {{6191994359937794280ull, 2017382717255397ull}}, {{16021641932175966392ull, 1613906173804317ull}}, {{5438615916256952468ull, 1291124939043454ull}}, {{16080483095494944596ull, 2065799902469526ull}}, {{9175037661654045352ull, 1652639921975621ull}}, {{3650681314581325956ull, 1322111937580497ull}}, {{9530438918072031856ull, 2115379100128795ull}}, {{7624351134457625484ull, 1692303280103036ull}}, {{2410132092824190064ull, 1353842624082429ull}}, {{11234908978002524752ull, 2166148198531886ull}}, {{5298578367660109476ull, 1732918558825509ull}}, {{7928211508869997904ull, 1386334847060407ull}}, {{16374487228933906972ull, 2218135755296651ull}}, {{9410240968405215252ull, 1774508604237321ull}}, {{3838843959982261880ull, 1419606883389857ull}}, {{14139121612211540472ull, 1135685506711885ull}}, {{4175850505828913140ull, 1817096810739017ull}}, {{14408726848888861484ull, 1453677448591213ull}}, {{458935034885358216ull, 1162941958872971ull}}, {{11802342500042304116ull, 1860707134196753ull}}, {{16820571629517663940ull, 1488565707357402ull}}, {{6077759674130310504ull, 1190852565885922ull}}, {{13413764293350407132ull, 1905364105417475ull}}, {{10731011434680325704ull, 1524291284333980ull}}, {{8584809147744260564ull, 1219433027467184ull}}, {{2667648192165085932ull, 1951092843947495ull}}, {{2134118553732068744ull, 1560874275157996ull}}, {{16464690101953296288ull, 1248699420126396ull}}, {{518062459931901800ull, 1997919072202235ull}}, {{414449967945521440ull, 1598335257761788ull}}, {{7710257603840237800ull, 1278668206209430ull}}, {{12336412166144380480ull, 2045869129935088ull}}, {{17247827362399325028ull, 1636695303948070ull}}, {{13798261889919460024ull, 1309356243158456ull}}, {{14698521394387315392ull, 2094969989053530ull}}, {{11758817115509852312ull, 1675975991242824ull}}, {{13096402507149792172ull, 1340780792994259ull}}, {{9886197567213936508ull, 2145249268790815ull}}, {{7908958053771149208ull, 1716199415032652ull}}, {{17395212887242650336ull, 1372959532026121ull}}, {{2006898916394868272ull, 2196735251241795ull}}, {{1605519133115894620ull, 1757388200993436ull}}, {{16041810565460356988ull, 1405910560794748ull}}, {{3530804016285109240ull, 2249456897271598ull}}, {{10203340842511908040ull, 1799565517817278ull}}, {{15541370303493347076ull, 1439652414253822ull}}, {{5054398613310857016ull, 1151721931403058ull}}, {{4397688966555460904ull, 1842755090244893ull}}, {{10896848802728189368ull, 1474204072195914ull}}, {{12406827856924461816ull, 1179363257756731ull}}, {{12472226941595318260ull, 1886981212410770ull}}, {{9977781553276254608ull, 1509584969928616ull}}, {{4292876427879093364ull, 1207667975942893ull}}, {{3179253469864639060ull, 1932268761508629ull}}, {{6232751590633621572ull, 1545815009206903ull}}, {{12364898901990717904ull, 1236652007365522ull}}, {{5026442984217507352ull, 1978643211784836ull}}, {{331805572632095560ull, 1582914569427869ull}}, {{3954793272847586768ull, 1266331655542295ull}}, {{6327669236556138832ull, 2026130648867672ull}}, {{16130181833470642036ull, 1620904519094137ull}}, {{5525447837292692980ull, 1296723615275310ull}}, {{8840716539668308772ull, 2074757784440496ull}}, {{3383224416992736692ull, 1659806227552397ull}}, {{13774625977819920324ull, 1327844982041917ull}}, {{7282006305544231228ull, 2124551971267068ull}}, {{13204302673919205628ull, 1699641577013654ull}}, {{14252790953877274824ull, 1359713261610923ull}}, {{668372637752177780ull, 2175541218577478ull}}, {{7913395739685562872ull, 1740432974861982ull}}, {{17398763035974181268ull, 1392346379889585ull}}, {{9391276783849138412ull, 2227754207823337ull}}, {{134323797595490084ull, 1782203366258670ull}}, {{107459038076392064ull, 1425762693006936ull}}, {{14843362489428754944ull, 1140610154405548ull}}, {{1613287094634545972ull, 1824976247048878ull}}, {{8669327305191457424ull, 1459980997639102ull}}, {{18003508288378896908ull, 1167984798111281ull}}, {{2980171558212862792ull, 1868775676978051ull}}, {{17141532505537931528ull, 1495020541582440ull}}, {{13713226004430345220ull, 1196016433265952ull}}, {{7183766348120911064ull, 1913626293225524ull}}, {{9436361893238639172ull, 1530901034580419ull}}, {{11238438329332821660ull, 1224720827664335ull}}, {{17981501326932514660ull, 1959553324262936ull}}, {{10695852246804101404ull, 1567642659410349ull}}, {{12246030612185191444ull, 1254114127528279ull}}, {{8525602535270575344ull, 2006582604045247ull}}, {{17888528472442191244ull, 1605266083236197ull}}, {{6932125148469932348ull, 1284212866588958ull}}, {{7402051422809981436ull, 2054740586542333ull}}, {{13300338767731805796ull, 1643792469233866ull}}, {{6950922199443534312ull, 1315033975387093ull}}, {{7432126704367744576ull, 2104054360619349ull}}, {{9635050178236105984ull, 1683243488495479ull}}, {{11397388957330795112ull, 1346594790796383ull}}, {{14546473516987361856ull, 2154551665274213ull}}, {{569132369364158516ull, 1723641332219371ull}}, {{15212701154458968104ull, 1378913065775496ull}}, {{16961624217650528320ull, 2206260905240794ull}}, {{17258648188862332980ull, 1765008724192635ull}}, {{13806918551089866384ull, 1412006979354108ull}}, {{18424232470355713752ull, 1129605583483286ull}}, {{3653330249375769744ull, 1807368933573259ull}}, {{6612013014242526116ull, 1445895146858607ull}}, {{16357656855619751864ull, 1156716117486885ull}}, {{7725506895282051364ull, 1850745787979017ull}}, {{17248451960451372060ull, 1480596630383213ull}}, {{2730715124135366680ull, 1184477304306571ull}}, {{15437190642842317660ull, 1895163686890513ull}}, {{1281706070048123156ull, 1516130949512411ull}}, {{15782760115006139816ull, 1212904759609928ull}}, {{3116323295558361772ull, 1940647615375886ull}}, {{17250453895414330708ull, 1552518092300708ull}}, {{2732316672105733596ull, 1242014473840567ull}}, {{8061055490111084080ull, 1987223158144907ull}}, {{17516890836314598232ull, 1589778526515925ull}}, {{14013512669051678584ull, 1271822821212740ull}}, {{3974876196773134124ull, 2034916513940385ull}}, {{3179900957418507296ull, 1627933211152308ull}}, {{9922618395418626484ull, 1302346568921846ull}}, {{8497491803185981728ull, 2083754510274954ull}}, {{10487342257290695708ull, 1667003608219963ull}}, {{15768571435316377212ull, 1333602886575970ull}}, {{6782970222796651924ull, 2133764618521553ull}}, {{12805073807721142184ull, 1707011694817242ull}}, {{2865361416693093100ull, 1365609355853794ull}}, {{11963275896192769608ull, 2184974969366070ull}}, {{9570620716954215688ull, 1747979975492856ull}}, {{3967147758821462224ull, 1398383980394285ull}}, {{6347436414114339560ull, 2237414368630856ull}}, {{1388600316549561324ull, 1789931494904685ull}}, {{1110880253239649060ull, 1431945195923748ull}}, {{8267401832075539896ull, 1145556156738998ull}}, {{9538494116578953508ull, 1832889850782397ull}}, {{252097663779342160ull, 1466311880625918ull}}, {{7580375760507294376ull, 1173049504500734ull}}, {{1060554772585940032ull, 1876879207201175ull}}, {{848443818068752024ull, 1501503365760940ull}}, {{678755054455001620ull, 1201202692608752ull}}, {{4775356901869912916ull, 1921924308174003ull}}, {{11198983150979750976ull, 1537539446539202ull}}, {{1580488891299980136ull, 1230031557231362ull}}, {{6218131040821878540ull, 1968050491570179ull}}, {{8663853647399413156ull, 1574440393256143ull}}, {{14309780547403351172ull, 1259552314604914ull}}, {{11827602431619630904ull, 2015283703367863ull}}, {{16840779574779525368ull, 1612226962694290ull}}, {{13472623659823620296ull, 1289781570155432ull}}, {{6798802596750151180ull, 2063650512248692ull}}, {{16507088521625851912ull, 1650920409798953ull}}, {{2137624373074950560ull, 1320736327839163ull}}, {{18177594255887562192ull, 2113178124542660ull}}, {{14542075404710049752ull, 1690542499634128ull}}, {{565613879542308832ull, 1352433999707303ull}}, {{15662377466235335424ull, 2163894399531684ull}}, {{16219250787730178664ull, 1731115519625347ull}}, {{5596703000700322284ull, 1384892415700278ull}}, {{5265375986378605332ull, 2215827865120445ull}}, {{4212300789102884264ull, 1772662292096356ull}}, {{18127235890249948704ull, 1418129833677084ull}}, {{18191137526941869288ull, 1134503866941667ull}}, {{14348424784139349568ull, 1815206187106668ull}}, {{410693383085748684ull, 1452164949685335ull}}, {{328554706468598948ull, 1161731959748268ull}}, {{15283082789317399608ull, 1858771135597228ull}}, {{1158419787228188716ull, 1487016908477783ull}}, {{8305433459266371620ull, 1189613526782226ull}}, {{5909995905342373944ull, 1903381642851562ull}}, {{15796043168499630124ull, 1522705314281249ull}}, {{16326183349541614424ull, 1218164251424999ull}}, {{15053846915040852108ull, 1949062802279999ull}}, {{15732426346774592008ull, 1559250241823999ull}}, {{16275289892161583932ull, 1247400193459199ull}}, {{14972417383232803320ull, 1995840309534719ull}}, {{15667282721328152980ull, 1596672247627775ull}}, {{12533826177062522384ull, 1277337798102220ull}}, {{1607377809590484196ull, 2043740476963553ull}}, {{8664599877156208004ull, 1634992381570842ull}}, {{17999726345950697372ull, 1307993905256673ull}}, {{6663469265069653860ull, 2092790248410678ull}}, {{12709473041539543732ull, 1674232198728542ull}}, {{2788880803747814340ull, 1339385758982834ull}}, {{11840906915480323592ull, 2143017214372534ull}}, {{13162074347126169196ull, 1714413771498027ull}}, {{3150961848217114708ull, 1371531017198422ull}}, {{8730887771889293860ull, 2194449627517475ull}}, {{6984710217511435088ull, 1755559702013980ull}}, {{5587768174009148068ull, 1404447761611184ull}}, {{16319126707898457560ull, 2247116418577894ull}}, {{16744650181060676368ull, 1797693134862315ull}}, {{13395720144848541096ull, 1438154507889852ull}}, {{3337878486395012228ull, 1150523606311882ull}}, {{9029954392973929892ull, 1840837770099011ull}}, {{3534614699637233588ull, 1472670216079209ull}}, {{6517040574451697196ull, 1178136172863367ull}}, {{14116613733864625836ull, 1885017876581387ull}}, {{3914593357607880020ull, 1508014301265110ull}}, {{3131674686086304016ull, 1206411441012088ull}}, {{1321330682996176104ull, 1930258305619341ull}}, {{15814459805364582176ull, 1544206644495472ull}}, {{5272870214807845096ull, 1235365315596378ull}}, {{4747243528950641828ull, 1976584504954205ull}}, {{3797794823160513464ull, 1581267603963364ull}}, {{6727584673270321092ull, 1265014083170691ull}}, {{3385437847748693104ull, 2024022533073106ull}}, {{17465745537166595776ull, 1619218026458484ull}}, {{17661945244475186944ull, 1295374421166787ull}}, {{13501717132192657816ull, 2072599073866860ull}}, {{10801373705754126252ull, 1658079259093488ull}}, {{16019796594087121648ull, 1326463407274790ull}}, {{7184930476829843024ull, 2122341451639665ull}}, {{5747944381463874420ull, 1697873161311732ull}}, {{15666401949396830504ull, 1358298529049385ull}}, {{6619499045325377192ull, 2173277646479017ull}}, {{16363645680486032724ull, 1738622117183213ull}}, {{2022870100163095208ull, 1390897693746571ull}}, {{14304638604486683304ull, 2225436309994513ull}}, {{375664439363615672ull, 1780349047995611ull}}, {{15057926810458533832ull, 1424279238396488ull}}, {{978295004141096096ull, 1139423390717191ull}}, {{12633318450851484720ull, 1823077425147505ull}}, {{10106654760681187776ull, 1458461940118004ull}}, {{11774672623286860544ull, 1166769552094403ull}}, {{15150127382517066548ull, 1866831283351045ull}}, {{12120101906013653240ull, 1493465026680836ull}}, {{6006732710069012268ull, 1194772021344669ull}}, {{16989469965594240276ull, 1911635234151470ull}}, {{13591575972475392220ull, 1529308187321176ull}}, {{7183911963238403452ull, 1223446549856941ull}}, {{4115561511697624880ull, 1957514479771106ull}}, {{18049844468325741196ull, 1566011583816884ull}}, {{18129224389402503280ull, 1252809267053507ull}}, {{14249363764076363956ull, 2004494827285612ull}}, {{4020793381777270516ull, 1603595861828490ull}}, {{3216634705421816412ull, 1282876689462792ull}}, {{8835964343416816584ull, 2052602703140467ull}}, {{18136817918959184236ull, 1642082162512373ull}}, {{3441407890941616420ull, 1313665730009899ull}}, {{12884950254990406920ull, 2101865168015838ull}}, {{17686657833476146180ull, 1681492134412670ull}}, {{14149326266780916944ull, 1345193707530136ull}}, {{15260224397365646468ull, 2152309932048218ull}}, {{1140133073666786204ull, 1721847945638575ull}}, {{912106458933428964ull, 1377478356510860ull}}, {{1459370334293486340ull, 2203965370417376ull}}, {{15924891526402430364ull, 1763172296333900ull}}, {{12739913221121944292ull, 1410537837067120ull}}, {{10191930576897555432ull, 1128430269653696ull}}, {{8928391293552268048ull, 1805488431445914ull}}, {{10832061849583724760ull, 1444390745156731ull}}, {{4976300664925069484ull, 1155512596125385ull}}, {{7962081063880111176ull, 1848820153800616ull}}, {{2680316036362178620ull, 1479056123040493ull}}, {{9522950458573563540ull, 1183244898432394ull}}, {{4168674289491970696ull, 1893191837491831ull}}, {{18092334690561217848ull, 1514553469993464ull}}, {{18163216567190884604ull, 1211642775994771ull}}, {{3235704804312043104ull, 1938628441591635ull}}, {{2588563843449634484ull, 1550902753273308ull}}, {{9449548704243528232ull, 1240722202618646ull}}, {{7740580297305824524ull, 1985155524189834ull}}, {{9881813052586569944ull, 1588124419351867ull}}, {{526752812585435308ull, 1270499535481494ull}}, {{8221502129620517140ull, 2032799256770390ull}}, {{6577201703696413712ull, 1626239405416312ull}}, {{16329807807182861940ull, 1300991524333049ull}}, {{15059646047266848132ull, 2081586438932879ull}}, {{15737065652555388828ull, 1665269151146303ull}}, {{1521606077818580092ull, 1332215320917043ull}}, {{17191964983477369444ull, 2131544513467268ull}}, {{2685525542556164584ull, 1705235610773815ull}}, {{2148420434044931668ull, 1364188488619052ull}}, {{7126821509213800992ull, 2182701581790483ull}}, {{13080154836854861440ull, 1746161265432386ull}}, {{6774775054741978828ull, 1396929012345909ull}}, {{18218337717070986772ull, 2235086419753454ull}}, {{18264018988398699740ull, 1788069135802763ull}}, {{3543168746493228824ull, 1430455308642211ull}}, {{17591930256162224352ull, 1144364246913768ull}}, {{6010995521408097024ull, 1830982795062030ull}}, {{4808796417126477620ull, 1464786236049624ull}}, {{7536385948443092416ull, 1171828988839699ull}}, {{990171073283216900ull, 1874926382143519ull}}, {{4481485673368483844ull, 1499941105714815ull}}, {{3585188538694787072ull, 1199952884571852ull}}, {{9425650476653569640ull, 1919924615314963ull}}, {{14919218010806676360ull, 1535939692251970ull}}, {{11935374408645341088ull, 1228751753801576ull}}, {{11717901424348725096ull, 1966002806082522ull}}, {{1995623509995159428ull, 1572802244866018ull}}, {{8975196437479948188ull, 1258241795892814ull}}, {{3292267855742186132ull, 2013186873428503ull}}, {{10012511914077569552ull, 1610549498742802ull}}, {{631311901778234996ull, 1288439598994242ull}}, {{4699447857587086316ull, 2061503358390787ull}}, {{14827604730295400024ull, 1649202686712629ull}}, {{15551432598978230340ull, 1319362149370103ull}}, {{2746199269913706608ull, 2110979438992166ull}}, {{16954354674898606580ull, 1688783551193732ull}}, {{6184786110435064616ull, 1351026840954986ull}}, {{2516960147212282740ull, 2161642945527978ull}}, {{9392265747253646840ull, 1729314356422382ull}}, {{135114968319096824ull, 1383451485137906ull}}, {{11284230393536285888ull, 2213522376220649ull}}, {{12716733129570939036ull, 1770817900976519ull}}, {{13862735318398661552ull, 1416654320781215ull}}, {{11090188254718929240ull, 1133323456624972ull}}, {{2986905948582645492ull, 1813317530599956ull}}, {{17146920017833757688ull, 1450654024479964ull}}, {{17406884829008916472ull, 1160523219583971ull}}, {{2025574023220894092ull, 1856837151334355ull}}, {{1620459218576715276ull, 1485469721067484ull}}, {{4985716189603282544ull, 1188375776853987ull}}, {{11666494718107162392ull, 1901401242966379ull}}, {{13022544589227640236ull, 1521120994373103ull}}, {{17796733300865932836ull, 1216896795498482ull}}, {{13717378022417851244ull, 1947034872797572ull}}, {{3595204788450460348ull, 1557627898238058ull}}, {{10254861460244188924ull, 1246102318590446ull}}, {{9029080706906881636ull, 1993763709744714ull}}, {{10912613380267415632ull, 1595010967795771ull}}, {{5040741889472022180ull, 1276008774236617ull}}, {{11754535837897145816ull, 2041614038778587ull}}, {{2024931040833896004ull, 1633291231022870ull}}, {{1619944832667116804ull, 1306632984818296ull}}, {{13659958176493117856ull, 2090612775709273ull}}, {{18306664170678314932ull, 1672490220567418ull}}, {{3577284892316920976ull, 1337992176453935ull}}, {{5723655827707073560ull, 2140787482326296ull}}, {{889575847423748524ull, 1712629985861037ull}}, {{11779707122164729788ull, 1370103988688829ull}}, {{7779484951237836692ull, 2192166381902127ull}}, {{17291634405216000324ull, 1753733105521701ull}}, {{10143958709430889936ull, 1402986484417361ull}}, {{8851636305605603252ull, 2244778375067778ull}}, {{14460006673968303248ull, 1795822700054222ull}}, {{4189307709690821952ull, 1436658160043378ull}}, {{10730143797236478208ull, 1149326528034702ull}}, {{2410834816610723840ull, 1838922444855524ull}}, {{5618016668030489396ull, 1471137955884419ull}}, {{8183762149166301840ull, 1176910364707535ull}}, {{13094019438666082944ull, 1883056583532056ull}}, {{6785866736190956032ull, 1506445266825645ull}}, {{5428693388952764824ull, 1205156213460516ull}}, {{1307211792840603072ull, 1928249941536826ull}}, {{15803164693240123752ull, 1542599953229460ull}}, {{12642531754592099000ull, 1234079962583568ull}}, {{16538701992605448080ull, 1974527940133709ull}}, {{16920310408826268784ull, 1579622352106967ull}}, {{6157550697577194380ull, 1263697881685574ull}}, {{17230778745607331660ull, 2021916610696918ull}}, {{2716576552260134356ull, 1617533288557535ull}}, {{2173261241808107484ull, 1294026630846028ull}}, {{18234613245860613272ull, 2070442609353644ull}}, {{18277039411430400940ull, 1656354087482915ull}}, {{14621631529144320752ull, 1325083269986332ull}}, {{8637215187663271908ull, 2120133231978132ull}}, {{17977818594356348496ull, 1696106585582505ull}}, {{14382254875485078796ull, 1356885268466004ull}}, {{11943561356550395108ull, 2171016429545607ull}}, {{2176151455756495440ull, 1736813143636486ull}}, {{16498316423572837644ull, 1389450514909188ull}}, {{4261213389265078292ull, 2223120823854702ull}}, {{14477017155637793604ull, 1778496659083761ull}}, {{7892264909768324560ull, 1422797327267009ull}}, {{10003160742556569968ull, 1138237861813607ull}}, {{1247661929122870660ull, 1821180578901772ull}}, {{12066175987524027496ull, 1456944463121417ull}}, {{2274243160535401352ull, 1165555570497134ull}}, {{11017486686340462808ull, 1864888912795414ull}}, {{12503338163814280568ull, 1491911130236331ull}}, {{6313321716309514132ull, 1193528904189065ull}}, {{10101314746095222612ull, 1909646246702504ull}}, {{11770400611618088412ull, 1527716997362003ull}}, {{16795018118778291376ull, 1222173597889602ull}}, {{12114633731077624912ull, 1955477756623364ull}}, {{13381055799604010252ull, 1564382205298691ull}}, {{7015495824941297876ull, 1251505764238953ull}}, {{7535444505164166280ull, 2002409222782325ull}}, {{6028355604131333024ull, 1601927378225860ull}}, {{4822684483305066420ull, 1281541902580688ull}}, {{4026946358546195948ull, 2050467044129101ull}}, {{17978952345804598052ull, 1640373635303280ull}}, {{14383161876643678440ull, 1312298908242624ull}}, {{11945012558404154536ull, 2099678253188199ull}}, {{13245358861465233952ull, 1679742602550559ull}}, {{14285635903914097484ull, 1343794082040447ull}}, {{8099622187294914684ull, 2150070531264716ull}}, {{2790348935094021424ull, 1720056425011773ull}}, {{9610976777559037784ull, 1376045140009418ull}}, {{11688214029352550136ull, 2201672224015069ull}}, {{13039920038223950432ull, 1761337779212055ull}}, {{10431936030579160344ull, 1409070223369644ull}}, {{12034897639205238596ull, 1127256178695715ull}}, {{809092149018830140ull, 1803609885913145ull}}, {{647273719215064112ull, 1442887908730516ull}}, {{15275214234339692584ull, 1154310326984412ull}}, {{9682947515975866840ull, 1846896523175060ull}}, {{7746358012780693472ull, 1477517218540048ull}}, {{13575784039708375424ull, 1182013774832038ull}}, {{18031905648791490356ull, 1891222039731261ull}}, {{10736175704291281960ull, 1512977631785009ull}}, {{12278289378174935892ull, 1210382105428007ull}}, {{4887867746112256136ull, 1936611368684812ull}}, {{14978340641115535876ull, 1549289094947849ull}}, {{15672021327634339024ull, 1239431275958279ull}}, {{14007187679989211472ull, 1983090041533247ull}}, {{3827052514507548532ull, 1586472033226598ull}}, {{10440339641089859472ull, 1269177626581278ull}}, {{13015194611001864832ull, 2030684202530045ull}}, {{10412155688801491864ull, 1624547362024036ull}}, {{4640375736299283168ull, 1299637889619229ull}}, {{14803298807562673716ull, 2079420623390766ull}}, {{8153290231308228648ull, 1663536498712613ull}}, {{13901329814530403564ull, 1330829198970090ull}}, {{3795383629539094088ull, 2129326718352145ull}}, {{3036306903631275272ull, 1703461374681716ull}}, {{17186440781872661508ull, 1362769099745372ull}}, {{12740909992028617124ull, 2180430559592596ull}}, {{6503379178880983376ull, 1744344447674077ull}}, {{16270749787330517668ull, 1395475558139261ull}}, {{207757956535456008ull, 2232760893022819ull}}, {{3855555179970275132ull, 1786208714418255ull}}, {{3084444143976220104ull, 1428966971534604ull}}, {{6156904129922886404ull, 1143173577227683ull}}, {{6161697793134707928ull, 1829077723564293ull}}, {{12308055863991586988ull, 1463262178851434ull}}, {{13535793505935179912ull, 1170609743081147ull}}, {{6899874350528646568ull, 1872975588929836ull}}, {{1830550665681006932ull, 1498380471143869ull}}, {{5153789347286715868ull, 1198704376915095ull}}, {{8246062955658745392ull, 1917927003064152ull}}, {{17664896808752727280ull, 1534341602451321ull}}, {{10442568632260271500ull, 1227473281961057ull}}, {{1950714552648793112ull, 1963957251137692ull}}, {{12628618086344765460ull, 1571165800910153ull}}, {{17481592098559633012ull, 1256932640728122ull}}, {{13213152098727771528ull, 2011092225164996ull}}, {{6881172864240306900ull, 1608873780131997ull}}, {{16572984735617976488ull, 1287099024105597ull}}, {{11759380318021121088ull, 2059358438568956ull}}, {{5718155439674986548ull, 1647486750855165ull}}, {{4574524351739989240ull, 1317989400684132ull}}, {{11008587777525893104ull, 2108783041094611ull}}, {{5117521407278804160ull, 1687026432875689ull}}, {{7783365940564953652ull, 1349621146300551ull}}, {{5074687875420105196ull, 2159393834080882ull}}, {{15127796744561815128ull, 1727515067264705ull}}, {{12102237395649452100ull, 1382012053811764ull}}, {{8295533388813392392ull, 2211219286098823ull}}, {{14015124340534534560ull, 1768975428879058ull}}, {{144053028201896680ull, 1415180343103247ull}}, {{11183288866787248312ull, 1132144274482597ull}}, {{3135866927891956008ull, 1811430839172156ull}}, {{17266088801281206100ull, 1449144671337724ull}}, {{17502219855766875200ull, 1159315737070179ull}}, {{16935505325001269356ull, 1854905179312287ull}}, {{6169706630517194836ull, 1483924143449830ull}}, {{4935765304413755868ull, 1187139314759864ull}}, {{15275922116545830036ull, 1899422903615782ull}}, {{4842040063752843384ull, 1519538322892626ull}}, {{184283236260364384ull, 1215630658314101ull}}, {{11362899622242313984ull, 1945009053302561ull}}, {{5400970883051940864ull, 1556007242642049ull}}, {{8010125521183463012ull, 1244805794113639ull}}, {{1748154389667809852ull, 1991689270581823ull}}, {{8777221141218068528ull, 1593351416465458ull}}, {{14400474542458275468ull, 1274681133172366ull}}, {{15662061638449420104ull, 2039489813075786ull}}, {{8840300496017625760ull, 1631591850460629ull}}, {{10761589211556010932ull, 1305273480368503ull}}, {{13529193923747707168ull, 2088437568589605ull}}, {{10823355138998165736ull, 1670750054871684ull}}, {{12348032925940442912ull, 1336600043897347ull}}, {{4999457422537067364ull, 2138560070235756ull}}, {{310217123287743568ull, 1710848056188605ull}}, {{248173698630194852ull, 1368678444950884ull}}, {{7775775547292132412ull, 2189885511921414ull}}, {{9909969252575616252ull, 1751908409537131ull}}, {{4238626587318582680ull, 1401526727629705ull}}, {{6781802539709732288ull, 2242442764207528ull}}, {{12804139661251606476ull, 1793954211366022ull}}, {{2864614099517464536ull, 1435163369092818ull}}, {{9670388909097792272ull, 1148130695274254ull}}, {{4404575810330736668ull, 1837009112438807ull}}, {{14591707092490320304ull, 1469607289951045ull}}, {{11673365673992256244ull, 1175685831960836ull}}, {{11298687448903789344ull, 1881097331137338ull}}, {{16417647588606852120ull, 1504877864909870ull}}, {{13134118070885481696ull, 1203902291927896ull}}, {{13635891283932950068ull, 1926243667084634ull}}, {{14598061841888270380ull, 1540994933667707ull}}, {{4299751844026795656ull, 1232795946934166ull}}, {{17947649394668604020ull, 1972473515094665ull}}, {{14358119515734883216ull, 1577978812075732ull}}, {{4107797983104085924ull, 1262383049660586ull}}, {{17640523217192268452ull, 2019812879456937ull}}, {{6733720944269994116ull, 1615850303565550ull}}, {{5386976755415995292ull, 1292680242852440ull}}, {{8619162808665592468ull, 2068288388563904ull}}, {{10584679061674384296ull, 1654630710851123ull}}, {{15846440878823328084ull, 1323704568680898ull}}, {{3218212517665862996ull, 2117927309889438ull}}, {{9953267643616511044ull, 1694341847911550ull}}, {{7962614114893208832ull, 1355473478329240ull}}, {{12740182583829134136ull, 2168757565326784ull}}, {{13881494881805217632ull, 1735006052261427ull}}, {{3726498275960353456ull, 1388004841809142ull}}, {{9651746056278475856ull, 2220807746894627ull}}, {{342699215538960040ull, 1776646197515702ull}}, {{11342205816656899000ull, 1421316958012561ull}}, {{5384415838583608876ull, 1137053566410049ull}}, {{15993762971217594852ull, 1819285706256078ull}}, {{1726963932748344912ull, 1455428565004863ull}}, {{8760268775682496576ull, 1164342852003890ull}}, {{14016430041091994520ull, 1862948563206224ull}}, {{14902492847615505940ull, 1490358850564979ull}}, {{15611343092834315072ull, 1192287080451983ull}}, {{2842056060083442180ull, 1907659328723174ull}}, {{5962993662808664068ull, 1526127462978539ull}}, {{8459743744988841576ull, 1220901970382831ull}}, {{6156892362498325876ull, 1953443152612530ull}}, {{4925513889998660700ull, 1562754522090024ull}}, {{7629759926740838884ull, 1250203617672019ull}}, {{1139569438559611244ull, 2000325788275231ull}}, {{15669050809815330288ull, 1600260630620184ull}}, {{16224589462594174552ull, 1280208504496147ull}}, {{11201947881183037996ull, 2048333607193836ull}}, {{5272209490204520072ull, 1638666885755069ull}}, {{7907116406905526380ull, 1310933508604055ull}}, {{12651386251048842208ull, 2097493613766488ull}}, {{17499806630322894412ull, 1677994891013190ull}}, {{13999845304258315532ull, 1342395912810552ull}}, {{7642357227845663556ull, 2147833460496884ull}}, {{9803234597018441168ull, 1718266768397507ull}}, {{463890048130932288ull, 1374613414718006ull}}, {{11810270521235222632ull, 2199381463548809ull}}, {{13137565231730088428ull, 1759505170839047ull}}, {{3131354555900250096ull, 1407604136671238ull}}, {{9883781274204020724ull, 1126083309336990ull}}, {{15814050038726433156ull, 1801733294939184ull}}, {{16340588845723056848ull, 1441386635951347ull}}, {{5693773447094624832ull, 1153109308761078ull}}, {{5420688700609489408ull, 1844974894017725ull}}, {{4336550960487591528ull, 1475979915214180ull}}, {{3469240768390073220ull, 1180783932171344ull}}, {{12929482858907937800ull, 1889254291474150ull}}, {{10343586287126350240ull, 1511403433179320ull}}, {{8274869029701080192ull, 1209122746543456ull}}, {{5861092818037907664ull, 1934596394469530ull}}, {{4688874254430326128ull, 1547677115575624ull}}, {{7440448218286171228ull, 1238141692460499ull}}, {{836670705032142996ull, 1981026707936799ull}}, {{4358685378767624720ull, 1584821366349439ull}}, {{7176297117756010096ull, 1267857093079551ull}}, {{4103377758925795512ull, 2028571348927282ull}}, {{14350748651366367376ull, 1622857079141825ull}}, {{11480598921093093900ull, 1298285663313460ull}}, {{18368958273748950244ull, 2077257061301536ull}}, {{11005817804257249872ull, 1661805649041229ull}}, {{12494003058147710220ull, 1329444519232983ull}}, {{16301056078294426032ull, 2127111230772773ull}}, {{1972798418409809856ull, 1701688984618219ull}}, {{5267587549469758208ull, 1361351187694575ull}}, {{8428140079151613132ull, 2178161900311320ull}}, {{6742512063321290504ull, 1742529520249056ull}}, {{1704660835915122080ull, 1394023616199245ull}}, {{2727457337464195328ull, 2230437785918792ull}}, {{13250012314197087232ull, 1784350228735033ull}}, {{17978707480841490432ull, 1427480182988026ull}}, {{10693617169931282020ull, 1141984146390421ull}}, {{9731089842406230588ull, 1827174634224674ull}}, {{11474220688666894796ull, 1461739707379739ull}}, {{12868725365675426160ull, 1169391765903791ull}}, {{13211262955596861208ull, 1871026825446066ull}}, {{6879661549735578644ull, 1496821460356853ull}}, {{12882426869272283560ull, 1197457168285482ull}}, {{5854487731868012404ull, 1915931469256772ull}}, {{15751636629720140892ull, 1532745175405417ull}}, {{5222611674292292068ull, 1226196140324334ull}}, {{15734876308351487956ull, 1961913824518934ull}}, {{16277249861423100688ull, 1569531059615147ull}}, {{5643102259654659904ull, 1255624847692118ull}}, {{5339614800705545524ull, 2008999756307389ull}}, {{7961040655306346740ull, 1607199805045911ull}}, {{2679483709503167068ull, 1285759844036729ull}}, {{11665871564688887960ull, 2057215750458766ull}}, {{5643348437009200044ull, 1645772600367013ull}}, {{11893376379091180680ull, 1316618080293610ull}}, {{582658132836337476ull, 2106588928469777ull}}, {{11534172950494800948ull, 1685271142775821ull}}, {{5537989545653930436ull, 1348216914220657ull}}, {{12550132087788199020ull, 2157147062753051ull}}, {{6350756855488648892ull, 1725717650202441ull}}, {{1391256669649008792ull, 1380574120161953ull}}, {{16983405930406055360ull, 2208918592259124ull}}, {{17276073559066754612ull, 1767134873807299ull}}, {{17510207661995314012ull, 1413707899045839ull}}, {{17697514944338161532ull, 1130966319236671ull}}, {{2490582207747686188ull, 1809546110778675ull}}, {{1992465766198148952ull, 1447636888622940ull}}, {{1593972612958519160ull, 1158109510898352ull}}, {{6239704995475540980ull, 1852975217437363ull}}, {{12370461625864253432ull, 1482380173949890ull}}, {{9896369300691402744ull, 1185904139159912ull}}, {{1076795622138603100ull, 1897446622655860ull}}, {{861436497710882480ull, 1517957298124688ull}}, {{8067846827652526628ull, 1214365838499750ull}}, {{12908554924244042608ull, 1942985341599600ull}}, {{10326843939395234088ull, 1554388273279680ull}}, {{8261475151516187268ull, 1243510618623744ull}}, {{2150313798200168660ull, 1989616989797991ull}}, {{16477646297527776220ull, 1591693591838392ull}}, {{5803419408538400332ull, 1273354873470714ull}}, {{16664168683145261176ull, 2037367797553142ull}}, {{5952637317032388296ull, 1629894238042514ull}}, {{8451458668367820960ull, 1303915390434011ull}}, {{6143636239904692888ull, 2086264624694418ull}}, {{12293606621407574956ull, 1669011699755534ull}}, {{13524234111867970288ull, 1335209359804427ull}}, {{6881379320021111168ull, 2136334975687084ull}}, {{9194452270758799260ull, 1709067980549667ull}}, {{18423608260832770376ull, 1367254384439733ull}}, {{7341680328880970664ull, 2187607015103574ull}}, {{9562693077846686852ull, 1750085612082859ull}}, {{11339503277019259804ull, 1400068489666287ull}}, {{3385809984263174396ull, 2240109583466060ull}}, {{2708647987410539516ull, 1792087666772848ull}}, {{9545616019412252260ull, 1433670133418278ull}}, {{15015190445013622452ull, 1146936106734622ull}}, {{9266909453054154636ull, 1835097770775396ull}}, {{3724178747701413384ull, 1468078216620317ull}}, {{14047389442386861676ull, 1174462573296253ull}}, {{339730219367516744ull, 1879140117274006ull}}, {{15029179434461654688ull, 1503312093819204ull}}, {{15712692362311234072ull, 1202649675055363ull}}, {{3004214891246512580ull, 1924239480088582ull}}, {{13471418357222941032ull, 1539391584070865ull}}, {{10777134685778352824ull, 1231513267256692ull}}, {{2486020238277723228ull, 1970421227610708ull}}, {{9367513820105999228ull, 1576336982088566ull}}, {{3804662241342889060ull, 1261069585670853ull}}, {{2398110771406712172ull, 2017711337073365ull}}, {{1918488617125369740ull, 1614169069658692ull}}, {{12602837337926026760ull, 1291335255726953ull}}, {{16475190925939732496ull, 2066136409163125ull}}, {{13180152740751785996ull, 1652909127330500ull}}, {{10544122192601428796ull, 1322327301864400ull}}, {{16870595508162286076ull, 2115723682983040ull}}, {{13496476406529828860ull, 1692578946386432ull}}, {{3418483495740042440ull, 1354063157109146ull}}, {{16537620037409798876ull, 2166501051374633ull}}, {{2162049585702108132ull, 1733200841099707ull}}, {{12797686112787417472ull, 1386560672879765ull}}, {{2029553706750316344ull, 2218497076607625ull}}, {{1623642965400253072ull, 1774797661286100ull}}, {{1298914372320202460ull, 1419838129028880ull}}, {{1039131497856161968ull, 1135870503223104ull}}, {{9041308026053679792ull, 1817392805156966ull}}, {{3543697606101033512ull, 1453914244125573ull}}, {{10213655714364647456ull, 1163131395300458ull}}, {{12652500328241525608ull, 1861010232480733ull}}, {{17500697892077041132ull, 1488808185984586ull}}, {{10311209498919722580ull, 1191046548787669ull}}, {{5429888754045825160ull, 1905674478060271ull}}, {{654562188494749804ull, 1524539582448217ull}}, {{11591696195021530812ull, 1219631665958573ull}}, {{14857365097292538980ull, 1951410665533717ull}}, {{4507194448350210536ull, 1561128532426974ull}}, {{7295104373422078752ull, 1248902825941579ull}}, {{604120553249595036ull, 1998244521506527ull}}, {{11551342886825406996ull, 1598595617205221ull}}, {{5551725494718415276ull, 1278876493764177ull}}, {{12572109606291374764ull, 2046202390022683ull}}, {{17436385314516920456ull, 1636961912018146ull}}, {{10259759436871626044ull, 1309569529614517ull}}, {{1658219840026960376ull, 2095311247383228ull}}, {{8705273501505388948ull, 1676248997906582ull}}, {{18032265245430042128ull, 1340999198325265ull}}, {{10404880318978515788ull, 2145598717320425ull}}, {{8323904255182812628ull, 1716478973856340ull}}, {{6659123404146250104ull, 1373183179085072ull}}, {{14343946261375910488ull, 2197093086536115ull}}, {{11475157009100728392ull, 1757674469228892ull}}, {{1801427977796762068ull, 1406139575383114ull}}, {{10260982393958639952ull, 2249823320612982ull}}, {{830088285683091316ull, 1799858656490386ull}}, {{15421465887514114344ull, 1439886925192308ull}}, {{1269126265785560508ull, 1151909540153847ull}}, {{5719950839998807136ull, 1843055264246155ull}}, {{4575960671999045708ull, 1474444211396924ull}}, {{7350117352341146888ull, 1179555369117539ull}}, {{692141319520104052ull, 1887288590588063ull}}, {{7932410685099903888ull, 1509830872470450ull}}, {{6345928548079923112ull, 1207864697976360ull}}, {{10153485676927876976ull, 1932583516762176ull}}, {{4433439726800391260ull, 1546066813409741ull}}, {{18304147040407954300ull, 1236853450727792ull}}, {{14529240005685085588ull, 1978965521164468ull}}, {{555345560322337500ull, 1583172416931575ull}}, {{444276448257870000ull, 1266537933545260ull}}, {{710842317212592000ull, 2026460693672416ull}}, {{15326069112737714892ull, 1621168554937932ull}}, {{4882157660706351268ull, 1296934843950346ull}}, {{432754627646341384ull, 2075095750320554ull}}, {{4035552516858983428ull, 1660076600256443ull}}, {{10607139642971007388ull, 1328061280205154ull}}, {{5903376984527880856ull, 2124898048328247ull}}, {{15790748031848035652ull, 1699918438662597ull}}, {{5253900795994607876ull, 1359934750930078ull}}, {{4716892458849462280ull, 2175895601488125ull}}, {{3773513967079569824ull, 1740716481190500ull}}, {{3018811173663655856ull, 1392573184952400ull}}, {{4830097877861849372ull, 2228117095923840ull}}, {{3864078302289479500ull, 1782493676739072ull}}, {{14159309086057314568ull, 1425994941391257ull}}, {{3948749639362031008ull, 1140795953113006ull}}, {{17386045867204980584ull, 1825273524980809ull}}, {{17598185508505894788ull, 1460218819984647ull}}, {{6699850777320895184ull, 1168175055987718ull}}, {{7030412428971521972ull, 1869080089580349ull}}, {{9313678757919127900ull, 1495264071664279ull}}, {{11140291821077212644ull, 1196211257331423ull}}, {{14135118098981629908ull, 1913938011730277ull}}, {{3929396849701483280ull, 1531150409384222ull}}, {{14211563923986917592ull, 1224920327507377ull}}, {{7981107019411426856ull, 1959872524011804ull}}, {{10074234430271051808ull, 1567898019209443ull}}, {{15438085173700662092ull, 1254318415367554ull}}, {{13632889833695328380ull, 2006909464588087ull}}, {{3527614237472442056ull, 1605527571670470ull}}, {{2822091389977953644ull, 1284422057336376ull}}, {{15583392668190456804ull, 2055075291738201ull}}, {{8777365319810455120ull, 1644060233390561ull}}, {{3332543441106453772ull, 1315248186712449ull}}, {{12710767135254146680ull, 2104397098739918ull}}, {{17547311337687137992ull, 1683517678991934ull}}, {{17727197884891620716ull, 1346814143193547ull}}, {{13606121356858951856ull, 2154902629109676ull}}, {{7195548270745251160ull, 1723922103287741ull}}, {{2067089801854290604ull, 1379137682630193ull}}, {{18064738941934506260ull, 2206620292208308ull}}, {{3383744709321874040ull, 1765296233766647ull}}, {{13775042211683230200ull, 1412236987013317ull}}, {{3641336139862763512ull, 1129789589610654ull}}, {{13204835453264242268ull, 1807663343377046ull}}, {{6874519547869483492ull, 1446130674701637ull}}, {{16567662082521317764ull, 1156904539761309ull}}, {{15440212887808377452ull, 1851047263618095ull}}, {{12352170310246701960ull, 1480837810894476ull}}, {{6192387433455451244ull, 1184670248715581ull}}, {{2529122264044901348ull, 1895472397944930ull}}, {{2023297811235921076ull, 1516377918355944ull}}, {{5307987063730647184ull, 1213102334684755ull}}, {{8492779301969035496ull, 1940963735495608ull}}, {{14172921071059049044ull, 1552770988396486ull}}, {{7648988042105328912ull, 1242216790717189ull}}, {{1170334423142795288ull, 1987546865147503ull}}, {{8314965167998056876ull, 1590037492118002ull}}, {{17720018578624176472ull, 1272029993694401ull}}, {{2526588022605310092ull, 2035247989911043ull}}, {{9399968047568068720ull, 1628198391928834ull}}, {{11209323252796365300ull, 1302558713543067ull}}, {{3177521945506543188ull, 2084093941668908ull}}, {{9920715185889055196ull, 1667275153335126ull}}, {{4247223333969333832ull, 1333820122668101ull}}, {{17863603778576665104ull, 2134112196268961ull}}, {{10601534208119421760ull, 1707289757015169ull}}, {{12170576181237447728ull, 1365831805612135ull}}, {{1026177816270364752ull, 2185330888979417ull}}, {{11888988697242022772ull, 1748264711183533ull}}, {{16889888587277438864ull, 1398611768946826ull}}, {{1198380036450529920ull, 2237778830314923ull}}, {{8337401658644244580ull, 1790223064251938ull}}, {{14048618956399216312ull, 1432178451401550ull}}, {{11238895165119373048ull, 1145742761121240ull}}, {{17982232264190996880ull, 1833188417793984ull}}, {{18075134626094707824ull, 1466550734235187ull}}, {{7081410071391945612ull, 1173240587388150ull}}, {{11330256114227112984ull, 1877184939821040ull}}, {{9064204891381690388ull, 1501747951856832ull}}, {{18319410357331083280ull, 1201398361485465ull}}, {{10864312498020181632ull, 1922237378376745ull}}, {{8691449998416145304ull, 1537789902701396ull}}, {{3263811183991005920ull, 1230231922161117ull}}, {{8911446709127519796ull, 1968371075457787ull}}, {{18197203811527746804ull, 1574696860366229ull}}, {{18247111863964107768ull, 1259757488292983ull}}, {{7059286093891110488ull, 2015611981268774ull}}, {{9336777689854798716ull, 1612489585015019ull}}, {{11158770966625749296ull, 1289991668012015ull}}, {{17854033546601198872ull, 2063986668819224ull}}, {{17972575652022869420ull, 1651189335055379ull}}, {{18067409336360205860ull, 1320951468044303ull}}, {{6771762049724867436ull, 2113522348870886ull}}, {{1728060825037983628ull, 1690817879096709ull}}, {{5071797474772297224ull, 1352654303277367ull}}, {{11804224774377585884ull, 2164246885243787ull}}, {{2064682190018248060ull, 1731397508195030ull}}, {{1651745752014598448ull, 1385118006556024ull}}, {{10021490832707178164ull, 2216188810489638ull}}, {{15395890295649563176ull, 1772951048391710ull}}, {{12316712236519650540ull, 1418360838713368ull}}, {{17232067418699541080ull, 1134688670970694ull}}, {{16503261425693534756ull, 1815501873553111ull}}, {{9513260325812917480ull, 1452401498842489ull}}, {{11299957075392244308ull, 1161921199073991ull}}, {{10701233691143770248ull, 1859073918518386ull}}, {{4871638138173105876ull, 1487259134814709ull}}, {{7586659325280395024ull, 1189807307851767ull}}, {{15828003735190542360ull, 1903691692562827ull}}, {{5283705358668613240ull, 1522953354050262ull}}, {{15295010731160621564ull, 1218362683240209ull}}, {{13403970725631263532ull, 1949380293184335ull}}, {{10723176580505010824ull, 1559504234547468ull}}, {{15957238893887829308ull, 1247603387637974ull}}, {{14463535785994795920ull, 1996165420220759ull}}, {{15260177443537747060ull, 1596932336176607ull}}, {{4829444325346377000ull, 1277545868941286ull}}, {{348413291070382556ull, 2044073390306058ull}}, {{7657428262340126692ull, 1635258712244846ull}}, {{2436593795130191028ull, 1308206969795877ull}}, {{7587898886950215972ull, 2093131151673403ull}}, {{13449016739043993424ull, 1674504921338722ull}}, {{3380515761751374092ull, 1339603937070978ull}}, {{1719476404060288224ull, 2143366299313565ull}}, {{1375581123248230580ull, 1714693039450852ull}}, {{12168511342824315432ull, 1371754431560681ull}}, {{12090920519035084048ull, 2194807090497090ull}}, {{9672736415228067236ull, 1755845672397672ull}}, {{359491502698633144ull, 1404676537918138ull}}, {{15332581663285454324ull, 2247482460669020ull}}, {{12266065330628363456ull, 1797985968535216ull}}, {{6123503449760780444ull, 1438388774828173ull}}, {{12277500389292445000ull, 1150711019862538ull}}, {{15954651808126001680ull, 1841137631780061ull}}, {{9074372631758891020ull, 1472910105424049ull}}, {{10948846920149023140ull, 1178328084339239ull}}, {{6450108628012706052ull, 1885324934942783ull}}, {{12538784531893985488ull, 1508259947954226ull}}, {{6341678810773278068ull, 1206607958363381ull}}, {{2767988467753424260ull, 1930572733381410ull}}, {{2214390774202739408ull, 1544458186705128ull}}, {{9150210248846012172ull, 1235566549364102ull}}, {{18329685212895529800ull, 1976906478982563ull}}, {{3595701726090692872ull, 1581525183186051ull}}, {{17633956639840195588ull, 1265220146548840ull}}, {{9767586550034761328ull, 2024352234478145ull}}, {{7814069240027809064ull, 1619481787582516ull}}, {{2561906577280336928ull, 1295585430066013ull}}, {{409701708906628760ull, 2072936688105621ull}}, {{15085156626092944300ull, 1658349350484496ull}}, {{8378776486132445116ull, 1326679480387597ull}}, {{17095391192553822512ull, 2122687168620155ull}}, {{13676312954043058008ull, 1698149734896124ull}}, {{14630399177976356728ull, 1358519787916899ull}}, {{12340592240536439800ull, 2173631660667039ull}}, {{13561822607171062160ull, 1738905328533631ull}}, {{7160109270994939404ull, 1391124262826905ull}}, {{11456174833591903052ull, 2225798820523048ull}}, {{16543637496357343088ull, 1780639056418438ull}}, {{2166863552860143500ull, 1424511245134751ull}}, {{16490886101255756092ull, 1139608996107800ull}}, {{7938673688299658132ull, 1823374393772481ull}}, {{2661590135897816180ull, 1458699515017985ull}}, {{2129272108718252944ull, 1166959612014388ull}}, {{18164230632916846008ull, 1867135379223020ull}}, {{14531384506333476804ull, 1493708303378416ull}}, {{7935758790324871120ull, 1194966642702733ull}}, {{9007865249777883472ull, 1911946628324373ull}}, {{14584989829306127424ull, 1529557302659498ull}}, {{599945419219170968ull, 1223645842127599ull}}, {{8338610300234494196ull, 1957833347404158ull}}, {{14049585869671416004ull, 1566266677923326ull}}, {{7550319880995222480ull, 1253013342338661ull}}, {{4701814180108535320ull, 2004821347741858ull}}, {{11140148973570648904ull, 1603857078193486ull}}, {{5222770364114608800ull, 1283085662554789ull}}, {{15735130212067194724ull, 2052937060087662ull}}, {{5209406540169935132ull, 1642349648070130ull}}, {{4167525232135948108ull, 1313879718456104ull}}, {{14046738000901337616ull, 2102207549529766ull}}, {{7548041585979159772ull, 1681766039623813ull}}, {{13417130898267148464ull, 1345412831699050ull}}, {{3020665363517885924ull, 2152660530718481ull}}, {{17173927549781950032ull, 1722128424574784ull}}, {{17428490854567470348ull, 1377702739659827ull}}, {{13128190108340311268ull, 2204324383455724ull}}, {{14191900901414159336ull, 1763459506764579ull}}, {{15042869535873237792ull, 1410767605411663ull}}, {{966249184472859264ull, 1128614084329331ull}}, {{12614045139382305792ull, 1805782534926929ull}}, {{13780584926247754956ull, 1444626027941543ull}}, {{18403165570482024612ull, 1155700822353234ull}}, {{18377018468545508408ull, 1849121315765175ull}}, {{14701614774836406728ull, 1479297052612140ull}}, {{11761291819869125380ull, 1183437642089712ull}}, {{4060671652822959320ull, 1893500227343540ull}}, {{3248537322258367456ull, 1514800181874832ull}}, {{13666876302032424932ull, 1211840145499865ull}}, {{3420258009542328276ull, 1938944232799785ull}}, {{2736206407633862620ull, 1551155386239828ull}}, {{9567662755590910744ull, 1240924308991862ull}}, {{550865149977815896ull, 1985478894386980ull}}, {{440692119982252716ull, 1588383115509584ull}}, {{4041902510727712496ull, 1270706492407667ull}}, {{10156392831906250320ull, 2033130387852267ull}}, {{746416636041179608ull, 1626504310281814ull}}, {{4286482123574854008ull, 1301203448225451ull}}, {{17926417841945497388ull, 2081925517160721ull}}, {{10651785458814487584ull, 1665540413728577ull}}, {{1142730737567769420ull, 1332432330982862ull}}, {{5517717994850341400ull, 2131891729572579ull}}, {{8103523210622183440ull, 1705513383658063ull}}, {{13861516197981567400ull, 1364410706926450ull}}, {{3731681843060956224ull, 2183057131082321ull}}, {{17742740733416406272ull, 1746445704865856ull}}, {{10504843771991214692ull, 1397156563892685ull}}, {{16807750035185943512ull, 2235450502228296ull}}, {{9756851213406844484ull, 1788360401782637ull}}, {{426783341241654940ull, 1430688321426110ull}}, {{341426672993323952ull, 1144550657140888ull}}, {{15303677935756959620ull, 1831281051425420ull}}, {{12242942348605567696ull, 1465024841140336ull}}, {{6105005064142543832ull, 1172019872912269ull}}, {{17146705732111890780ull, 1875231796659630ull}}, {{13717364585689512624ull, 1500185437327704ull}}, {{14663240483293520420ull, 1200148349862163ull}}, {{1325091884818170736ull, 1920237359779462ull}}, {{12128119952080267556ull, 1536189887823569ull}}, {{13391844776406124368ull, 1228951910258855ull}}, {{2980207568540247376ull, 1966323056414169ull}}, {{6073514869574108224ull, 1573058445131335ull}}, {{4858811895659286580ull, 1258446756105068ull}}, {{4084750218312948204ull, 2013514809768109ull}}, {{6957148989392268884ull, 1610811847814487ull}}, {{16633765635739546076ull, 1288649478251589ull}}, {{15545978572957542756ull, 2061839165202543ull}}, {{1368736414140303236ull, 1649471332162035ull}}, {{1094989131312242588ull, 1319577065729628ull}}, {{16509377869067229432ull, 2111323305167404ull}}, {{16896851109995693868ull, 1689058644133923ull}}, {{2449434443770824124ull, 1351246915307139ull}}, {{11297792739517139248ull, 2161995064491422ull}}, {{1659536562129890752ull, 1729596051593138ull}}, {{8706326879187733248ull, 1383676841274510ull}}, {{13930123006700373196ull, 2213882946039216ull}}, {{7454749590618388236ull, 1771106356831373ull}}, {{13342497301978531232ull, 1416885085465098ull}}, {{18052695471066645632ull, 1133508068372078ull}}, {{6748219865255171076ull, 1813612909395326ull}}, {{1709227077462226536ull, 1450890327516261ull}}, {{16124776920937422520ull, 1160712262013008ull}}, {{3663550185048414096ull, 1857139619220814ull}}, {{6620188962780641600ull, 1485711695376651ull}}, {{1606802355482602956ull, 1188569356301321ull}}, {{13638930212997895700ull, 1901710970082113ull}}, {{18289841799882137208ull, 1521368776065690ull}}, {{14631873439905709764ull, 1217095020852552ull}}, {{8653602244881494332ull, 1947352033364084ull}}, {{10612230610647105788ull, 1557881626691267ull}}, {{1111086859033863984ull, 1246305301353014ull}}, {{9156436603938003020ull, 1994088482164822ull}}, {{18393195727376133388ull, 1595270785731857ull}}, {{7335858952417086064ull, 1276216628585486ull}}, {{4358676694383517056ull, 2041946605736778ull}}, {{10865638984990634288ull, 1633557284589422ull}}, {{1313813558508686784ull, 1306845827671538ull}}, {{16859496952581540148ull, 2090953324274460ull}}, {{13487597562065232120ull, 1672762659419568ull}}, {{18168775679136006340ull, 1338210127535654ull}}, {{18001994642391879180ull, 2141136204057047ull}}, {{7022898084429682696ull, 1712908963245638ull}}, {{12997016097027566804ull, 1370327170596510ull}}, {{2348481681534555268ull, 2192523472954417ull}}, {{12946831789453375184ull, 1754018778363533ull}}, {{17736163061046520792ull, 1403215022690826ull}}, {{2552419194481061008ull, 2245144036305323ull}}, {{9420632985068669452ull, 1796115229044258ull}}, {{14915204017538756208ull, 1436892183235406ull}}, {{8242814399289094644ull, 1149513746588325ull}}, {{13188503038862551432ull, 1839221994541320ull}}, {{10550802431090041144ull, 1471377595633056ull}}, {{4751293130130122592ull, 1177102076506445ull}}, {{7602069008208196148ull, 1883363322410312ull}}, {{17149701650792287888ull, 1506690657928249ull}}, {{17409110135375740632ull, 1205352526342599ull}}, {{16786529772375454044ull, 1928564042148159ull}}, {{17118572632642273556ull, 1542851233718527ull}}, {{6316160476629998200ull, 1234280986974822ull}}, {{13795205577349907444ull, 1974849579159715ull}}, {{11036164461879925956ull, 1579879663327772ull}}, {{1450233940020120116ull, 1263903730662218ull}}, {{17077769562999833480ull, 2022245969059548ull}}, {{2594169206174135816ull, 1617796775247639ull}}, {{5764684179681218976ull, 1294237420198111ull}}, {{1844797058006129712ull, 2070779872316978ull}}, {{8854535275888724416ull, 1656623897853582ull}}, {{18151674664936710504ull, 1325299118282865ull}}, {{10595935390189185188ull, 2120478589252585ull}}, {{8476748312151348152ull, 1696382871402068ull}}, {{14160096279204899168ull, 1357106297121654ull}}, {{11588107602502107700ull, 2171370075394647ull}}, {{1891788452517865512ull, 1737096060315718ull}}, {{8892128391498113056ull, 1389676848252574ull}}, {{3159358982171249920ull, 2223482957204119ull}}, {{6216836000478910260ull, 1778786365763295ull}}, {{4973468800383128208ull, 1423029092610636ull}}, {{289426225564592244ull, 1138423274088509ull}}, {{7841779590387168236ull, 1821477238541614ull}}, {{9962772487051644912ull, 1457181790833291ull}}, {{4280869174899405604ull, 1165745432666633ull}}, {{3160041865097138648ull, 1865192692266613ull}}, {{9906731121561531564ull, 1492154153813290ull}}, {{7925384897249225252ull, 1193723323050632ull}}, {{16369964650340670724ull, 1909957316881011ull}}, {{9406622905530626256ull, 1527965853504809ull}}, {{11214647139166411328ull, 1222372682803847ull}}, {{3186040163698616832ull, 1955796292486156ull}}, {{17306227389926534760ull, 1564637033988924ull}}, {{17534330726683138128ull, 1251709627191139ull}}, {{16986882718467290040ull, 2002735403505823ull}}, {{2521459730548101060ull, 1602188322804659ull}}, {{5706516599180391172ull, 1281750658243727ull}}, {{12819775373430536200ull, 2050801053189963ull}}, {{17634517928228249604ull, 1640640842551970ull}}, {{14107614342582599684ull, 1312512674041576ull}}, {{15193485318648338848ull, 2100020278466522ull}}, {{4776090625434850432ull, 1680016222773218ull}}, {{11199570129831700992ull, 1344012978218574ull}}, {{6851265763504990620ull, 2150420765149719ull}}, {{9170361425545902816ull, 1720336612119775ull}}, {{7336289140436722252ull, 1376269289695820ull}}, {{11738062624698755608ull, 2202030863513312ull}}, {{2011752470275183840ull, 1761624690810650ull}}, {{1609401976220147072ull, 1409299752648520ull}}, {{1287521580976117656ull, 1127439802118816ull}}, {{13128080973787519220ull, 1803903683390105ull}}, {{10502464779030015376ull, 1443122946712084ull}}, {{12091320637965922624ull, 1154498357369667ull}}, {{4588717761777834908ull, 1847197371791468ull}}, {{11049671838906088572ull, 1477757897433174ull}}, {{12529086285866781180ull, 1182206317946539ull}}, {{8978491613161118920ull, 1891530108714463ull}}, {{14561490920012715780ull, 1513224086971570ull}}, {{11649192736010172624ull, 1210579269577256ull}}, {{11260010748132455556ull, 1936926831323610ull}}, {{9008008598505964444ull, 1549541465058888ull}}, {{14585104508288592200ull, 1239633172047110ull}}, {{4889423139552195904ull, 1983413075275377ull}}, {{14979584955867487692ull, 1586730460220301ull}}, {{8294319149952079832ull, 1269384368176241ull}}, {{5892213010439507084ull, 2031014989081986ull}}, {{1024421593609695344ull, 1624811991265589ull}}, {{4508886089629666600ull, 1299849593012471ull}}, {{18282264187633197528ull, 2079759348819953ull}}, {{3557764905880827052ull, 1663807479055963ull}}, {{10224909554188482288ull, 1331045983244770ull}}, {{16359855286701571664ull, 2129673573191632ull}}, {{5709186599877436684ull, 1703738858553306ull}}, {{878000465160039024ull, 1362991086842645ull}}, {{1404800744256062436ull, 2180785738948232ull}}, {{12191887039630580920ull, 1744628591158585ull}}, {{9753509631704464736ull, 1395702872926868ull}}, {{11916266595985233256ull, 2233124596682989ull}}, {{13222362091530096928ull, 1786499677346391ull}}, {{6888540858482167216ull, 1429199741877113ull}}, {{12889530316269554420ull, 1143359793501690ull}}, {{2176504432321735456ull, 1829375669602705ull}}, {{1741203545857388364ull, 1463500535682164ull}}, {{5082311651427821016ull, 1170800428545731ull}}, {{753001012800692980ull, 1873280685673170ull}}, {{602400810240554384ull, 1498624548538536ull}}, {{15239315907160084800ull, 1198899638830828ull}}, {{2246812563004673740ull, 1918239422129326ull}}, {{16554845309371380284ull, 1534591537703460ull}}, {{13243876247497104228ull, 1227673230162768ull}}, {{17500853181253456440ull, 1964277168260429ull}}, {{17690031359744675476ull, 1571421734608343ull}}, {{3083978643570009412ull, 1257137387686675ull}}, {{4934365829712015056ull, 2011419820298680ull}}, {{3947492663769612044ull, 1609135856238944ull}}, {{6847342945757599960ull, 1287308684991155ull}}, {{10955748713212159936ull, 2059693895985848ull}}, {{16143296600053548596ull, 1647755116788678ull}}, {{1846590835817107908ull, 1318204093430943ull}}, {{17711940596275013944ull, 2109126549489508ull}}, {{3101506032794280184ull, 1687301239591607ull}}, {{13549251270461155116ull, 1349840991673285ull}}, {{3232057959028296572ull, 2159745586677257ull}}, {{13653692811448368228ull, 1727796469341805ull}}, {{10922954249158694580ull, 1382237175473444ull}}, {{6408680354428180360ull, 2211579480757511ull}}, {{1437595468800633964ull, 1769263584606009ull}}, {{4839425189782417496ull, 1415410867684807ull}}, {{14939586596051664964ull, 1132328694147845ull}}, {{5456594479973112332ull, 1811725910636553ull}}, {{11743973213462310512ull, 1449380728509242ull}}, {{2016480941286027760ull, 1159504582807394ull}}, {{10605067135541465064ull, 1855207332491830ull}}, {{8484053708433172052ull, 1484165865993464ull}}, {{10476591781488447964ull, 1187332692794771ull}}, {{9383849220897696100ull, 1899732308471634ull}}, {{11196428191460067200ull, 1519785846777307ull}}, {{1578444923684233116ull, 1215828677421846ull}}, {{13593558322120503952ull, 1945325883874953ull}}, {{18253544287180223808ull, 1556260707099962ull}}, {{7224137800260358400ull, 1245008565679970ull}}, {{11558620480416573440ull, 1992013705087952ull}}, {{1868198754849438108ull, 1593610964070362ull}}, {{12562605448105281456ull, 1274888771256289ull}}, {{9032122272742719360ull, 2039822034010063ull}}, {{14604395447677996132ull, 1631857627208050ull}}, {{11683516358142396904ull, 1305486101766440ull}}, {{246882099318283436ull, 2088777762826305ull}}, {{197505679454626748ull, 1671022210261044ull}}, {{3847353358305611720ull, 1336817768208835ull}}, {{6155765373288978756ull, 2138908429134136ull}}, {{1235263483889272680ull, 1711126743307309ull}}, {{4677559601853328468ull, 1368901394645847ull}}, {{11173444177707235872ull, 2190242231433355ull}}, {{8938755342165788696ull, 1752193785146684ull}}, {{10840353088474541280ull, 1401755028117347ull}}, {{2587169682591624756ull, 2242808044987756ull}}, {{16827131005040941096ull, 1794246435990204ull}}, {{17151053618774663200ull, 1435397148792163ull}}, {{2652796450793999592ull, 1148317719033731ull}}, {{15312520765496130316ull, 1837308350453969ull}}, {{15939365427138814576ull, 1469846680363175ull}}, {{12751492341711051660ull, 1175877344290540ull}}, {{1955643673028131040ull, 1881403750864865ull}}, {{1564514938422504832ull, 1505123000691892ull}}, {{12319658394963734836ull, 1204098400553513ull}}, {{16022104617200065416ull, 1926557440885621ull}}, {{9128334879018142008ull, 1541245952708497ull}}, {{18370714347440244576ull, 1232996762166797ull}}, {{14635747696936750028ull, 1972794819466876ull}}, {{8019249342807489700ull, 1578235855573501ull}}, {{2726050659504081436ull, 1262588684458801ull}}, {{15429727499432261268ull, 2020141895134081ull}}, {{8654433184803898692ull, 1616113516107265ull}}, {{6923546547843118952ull, 1292890812885812ull}}, {{14767023291290900648ull, 2068625300617299ull}}, {{15502967447774630840ull, 1654900240493839ull}}, {{16091722772961614996ull, 1323920192395071ull}}, {{18368058807254763348ull, 2118272307832114ull}}, {{18383795860545721000ull, 1694617846265691ull}}, {{11017687873694666476ull, 1355694277012553ull}}, {{13938951783169556044ull, 2169110843220085ull}}, {{11151161426535644832ull, 1735288674576068ull}}, {{16299626770712336512ull, 1388230939660854ull}}, {{15011356388914007452ull, 2221169503457367ull}}, {{4630387481647385316ull, 1776935602765894ull}}, {{7393658800059818576ull, 1421548482212715ull}}, {{5914927040047854860ull, 1137238785770172ull}}, {{13153232078818478100ull, 1819582057232275ull}}, {{10522585663054782480ull, 1455665645785820ull}}, {{8418068530443825984ull, 1164532516628656ull}}, {{6090212019226300928ull, 1863252026605850ull}}, {{4872169615381040740ull, 1490601621284680ull}}, {{3897735692304832592ull, 1192481297027744ull}}, {{13615074737171552796ull, 1907970075244390ull}}, {{10892059789737242236ull, 1526376060195512ull}}, {{1334950202305973144ull, 1221100848156410ull}}, {{2135920323689557028ull, 1953761357050256ull}}, {{16466131517919286916ull, 1563009085640204ull}}, {{16862254029077339856ull, 1250407268512163ull}}, {{4843513558072281832ull, 2000651629619462ull}}, {{14942857290683556432ull, 1600521303695569ull}}, {{15643634647288755468ull, 1280417042956455ull}}, {{6583071361952457136ull, 2048667268730329ull}}, {{8955805904303876032ull, 1638933814984263ull}}, {{14543342352926921472ull, 1311147051987410ull}}, {{4822603690973522740ull, 2097835283179857ull}}, {{14926129397004549160ull, 1678268226543885ull}}, {{11940903517603639328ull, 1342614581235108ull}}, {{15416096813423912604ull, 2148183329976173ull}}, {{1264831006513399112ull, 1718546663980939ull}}, {{4701213619952629612ull, 1374837331184751ull}}, {{143244162440386736ull, 2199739729895602ull}}, {{11182641774178040356ull, 1759791783916481ull}}, {{5256764604600521964ull, 1407833427133185ull}}, {{4205411683680417568ull, 1126266741706548ull}}, {{3039309879146757788ull, 1802026786730477ull}}, {{13499494347543137200ull, 1441621429384381ull}}, {{7110246663292599436ull, 1153297143507505ull}}, {{11376394661268159100ull, 1845275429612008ull}}, {{16479813358498347928ull, 1476220343689606ull}}, {{9494501872056768016ull, 1180976274951685ull}}, {{15191202995290828828ull, 1889562039922696ull}}, {{8463613581490752740ull, 1511649631938157ull}}, {{17838937309418333160ull, 1209319705550525ull}}, {{10095555621359781444ull, 1934911528880841ull}}, {{4387095682345914832ull, 1547929223104673ull}}, {{10888374175360552512ull, 1238343378483738ull}}, {{13732049865834973696ull, 1981349405573981ull}}, {{7296291077926068632ull, 1585079524459185ull}}, {{5837032862340854904ull, 1268063619567348ull}}, {{5649903765003457528ull, 2028901791307757ull}}, {{15587969456228496992ull, 1623121433046205ull}}, {{12470375564982797592ull, 1298497146436964ull}}, {{8884554459746745180ull, 2077595434299143ull}}, {{14486341197281216788ull, 1662076347439314ull}}, {{15278421772566883756ull, 1329661077951451ull}}, {{17066777206623193360ull, 2127457724722322ull}}, {{6274724135814734044ull, 1701966179777858ull}}, {{12398476938135607880ull, 1361572943822286ull}}, {{12458865471533151964ull, 2178516710115658ull}}, {{17345790006710342216ull, 1742813368092526ull}}, {{10187283190626363448ull, 1394250694474021ull}}, {{8920955475518360872ull, 2230801111158434ull}}, {{10826113195156599020ull, 1784640888926747ull}}, {{1282192926641458572ull, 1427712711141398ull}}, {{8404451970796987504ull, 1142170168913118ull}}, {{9757774338533269684ull, 1827472270260989ull}}, {{11495568285568526068ull, 1461977816208791ull}}, {{5507105813712910532ull, 1169582252967033ull}}, {{5122020487198746528ull, 1871331604747253ull}}, {{11476314019242817868ull, 1497065283797802ull}}, {{1802353585910433648ull, 1197652227038242ull}}, {{6573114552198604160ull, 1916243563261187ull}}, {{16326538085984614296ull, 1532994850608949ull}}, {{16750579283529601760ull, 1226395880487159ull}}, {{15732880409421631848ull, 1962233408779455ull}}, {{12586304327537305480ull, 1569786727023564ull}}, {{13758392276771754708ull, 1255829381618851ull}}, {{14634730013350986884ull, 2009327010590162ull}}, {{4329086381196968860ull, 1607461608472130ull}}, {{3463269104957575088ull, 1285969286777704ull}}, {{12919928197415940788ull, 2057550858844326ull}}, {{6646593743190842308ull, 1646040687075461ull}}, {{1627926179810763524ull, 1316832549660369ull}}, {{9983379517181042284ull, 2106932079456590ull}}, {{7986703613744833828ull, 1685545663565272ull}}, {{17457409335221598032ull, 1348436530852217ull}}, {{13174459677386915556ull, 2157498449363548ull}}, {{17918265371393353092ull, 1725998759490838ull}}, {{3266565852888951504ull, 1380799007592671ull}}, {{16294551808848053376ull, 2209278412148273ull}}, {{1967595002852711732ull, 1767422729718619ull}}, {{5263424817024079708ull, 1413938183774895ull}}, {{4210739853619263764ull, 1131150547019916ull}}, {{17805230210016552996ull, 1809840875231865ull}}, {{14244184168013242396ull, 1447872700185492ull}}, {{4016649704926773272ull, 1158298160148394ull}}, {{13805337157366657880ull, 1853277056237430ull}}, {{11044269725893326304ull, 1482621644989944ull}}, {{12524764595456571364ull, 1186097315991955ull}}, {{1592879279020962568ull, 1897755705587129ull}}, {{4963652237958680380ull, 1518204564469703ull}}, {{11349619419850764948ull, 1214563651575762ull}}, {{3401995812793582628ull, 1943301842521220ull}}, {{2721596650234866100ull, 1554641474016976ull}}, {{16934672579155534172ull, 1243713179213580ull}}, {{8648732052939303064ull, 1989941086741729ull}}, {{10608334457093352772ull, 1591952869393383ull}}, {{15865365195158502864ull, 1273562295514706ull}}, {{18005886682769783936ull, 2037699672823530ull}}, {{14404709346215827148ull, 1630159738258824ull}}, {{15213116291714572044ull, 1304127790607059ull}}, {{13272939622517584300ull, 2086604464971295ull}}, {{10618351698014067440ull, 1669283571977036ull}}, {{4805332543669343628ull, 1335426857581629ull}}, {{15067229699354770452ull, 2136682972130606ull}}, {{8364434944741906040ull, 1709346377704485ull}}, {{6691547955793524832ull, 1367477102163588ull}}, {{7017127914527729408ull, 2187963363461741ull}}, {{1924353516880273200ull, 1750370690769393ull}}, {{8918180442988039208ull, 1400296552615514ull}}, {{3201042264555131764ull, 2240474484184823ull}}, {{9939531441127926056ull, 1792379587347858ull}}, {{15330322782386161492ull, 1433903669878286ull}}, {{8574909411167018868ull, 1147122935902629ull}}, {{2651808613641499224ull, 1835396697444207ull}}, {{13189493335138930348ull, 1468317357955365ull}}, {{10551594668111144276ull, 1174653886364292ull}}, {{2125156210010189552ull, 1879446218182868ull}}, {{9078822597491972288ull, 1503556974546294ull}}, {{10952406892735488152ull, 1202845579637035ull}}, {{17523851028376781044ull, 1924552927419256ull}}, {{10329732007959514512ull, 1539642341935405ull}}, {{8263785606367611612ull, 1231713873548324ull}}, {{2154010525962447608ull, 1970742197677319ull}}, {{5412557235511868408ull, 1576593758141855ull}}, {{4330045788409494728ull, 1261275006513484ull}}, {{14306770890939012212ull, 2018040010421574ull}}, {{15134765527493120092ull, 1614432008337259ull}}, {{15797161236736406396ull, 1291545606669807ull}}, {{10518062719810608940ull, 2066472970671692ull}}, {{1035752546364666508ull, 1653178376537354ull}}, {{4517950851833643528ull, 1322542701229883ull}}, {{3539372548191919324ull, 2116068321967813ull}}, {{10210195668037356104ull, 1692854657574250ull}}, {{8168156534429884884ull, 1354283726059400ull}}, {{13069050455087815812ull, 2166853961695040ull}}, {{10455240364070252652ull, 1733483169356032ull}}, {{985494661772381472ull, 1386786535484826ull}}, {{12644837903061541328ull, 2218858456775721ull}}, {{6426521507707322740ull, 1775086765420577ull}}, {{16209263650391589160ull, 1420069412336461ull}}, {{9278062105571361004ull, 1136055529869169ull}}, {{3776852924688446640ull, 1817688847790671ull}}, {{17778877598718398604ull, 1454151078232536ull}}, {{10533753264232808560ull, 1163320862586029ull}}, {{5785958778546762728ull, 1861313380137647ull}}, {{15696813467063141152ull, 1489050704110117ull}}, {{5178753144166692272ull, 1191240563288094ull}}, {{15664702660150528284ull, 1905984901260950ull}}, {{12531762128120422628ull, 1524787921008760ull}}, {{10025409702496338104ull, 1219830336807008ull}}, {{12351306709252230640ull, 1951728538891213ull}}, {{17259742996885605160ull, 1561382831112970ull}}, {{13807794397508484128ull, 1249106264890376ull}}, {{14713773406529753956ull, 1998570023824602ull}}, {{4392321095739982520ull, 1598856019059682ull}}, {{14581903320817716984ull, 1279084815247745ull}}, {{4884301239598795560ull, 2046535704396393ull}}, {{11286138621162857096ull, 1637228563517114ull}}, {{12718259711672196000ull, 1309782850813691ull}}, {{12970517909191692952ull, 2095652561301906ull}}, {{6687065512611444040ull, 1676522049041525ull}}, {{5349652410089155232ull, 1341217639233220ull}}, {{8559443856142648368ull, 2145948222773152ull}}, {{17915601529139849664ull, 1716758578218521ull}}, {{10643132408569969408ull, 1373406862574817ull}}, {{2271616594744309760ull, 2197450980119708ull}}, {{9195990905279268456ull, 1757960784095766ull}}, {{3667443909481504440ull, 1406368627276613ull}}, {{2178561440428496784ull, 2250189803642581ull}}, {{16500244411310438720ull, 1800151842914064ull}}, {{16889544343790261296ull, 1440121474331251ull}}, {{9822286660290298716ull, 1152097179465001ull}}, {{8336961026980657300ull, 1843355487144002ull}}, {{17737615265810256808ull, 1474684389715201ull}}, {{10500743397906295124ull, 1179747511772161ull}}, {{9422491807166251552ull, 1887596018835458ull}}, {{14916691075216821888ull, 1510076815068366ull}}, {{8244004045431547184ull, 1208061452054693ull}}, {{9501057657948565176ull, 1932898323287509ull}}, {{11290194941100762464ull, 1546318658630007ull}}, {{1653458323396789324ull, 1237054926904006ull}}, {{13713579761660593888ull, 1979287883046409ull}}, {{14660212624070385432ull, 1583430306437127ull}}, {{4349472469772487700ull, 1266744245149702ull}}, {{10648504766377890644ull, 2026790792239523ull}}, {{15897501442586133160ull, 1621432633791618ull}}, {{1649954709843175560ull, 1297146107033295ull}}, {{2639927535749080896ull, 2075433771253272ull}}, {{13179988472824995688ull, 1660347017002617ull}}, {{3165293148776175904ull, 1328277613602094ull}}, {{12443166667525702092ull, 2125244181763350ull}}, {{9954533334020561672ull, 1700195345410680ull}}, {{7963626667216449336ull, 1360156276328544ull}}, {{1673756223320587972ull, 2176250042125671ull}}, {{16096400237624111668ull, 1741000033700536ull}}, {{9187771375357379012ull, 1392800026960429ull}}, {{3632387756346075452ull, 2228480043136687ull}}, {{13973956649302591332ull, 1782784034509349ull}}, {{14868514134183983388ull, 1426227227607479ull}}, {{15584160122089097032ull, 1140981782085983ull}}, {{2798563306891093312ull, 1825570851337574ull}}, {{5928199460254784972ull, 1460456681070059ull}}, {{8431908382945738300ull, 1168365344856047ull}}, {{17180402227455091608ull, 1869384551769675ull}}, {{13744321781964073284ull, 1495507641415740ull}}, {{10995457425571258628ull, 1196406113132592ull}}, {{2835336621946372512ull, 1914249781012148ull}}, {{9646966927040918656ull, 1531399824809718ull}}, {{15096271171116555572ull, 1225119859847774ull}}, {{13085987429560757944ull, 1960191775756439ull}}, {{14158138758390516680ull, 1568153420605151ull}}, {{7637162191970503020ull, 1254522736484121ull}}, {{4840761877668984188ull, 2007236378374594ull}}, {{7561958316877097672ull, 1605789102699675ull}}, {{6049566653501678136ull, 1284631282159740ull}}, {{9679306645602685020ull, 2055410051455584ull}}, {{11432794131224058340ull, 1644328041164467ull}}, {{1767537675495426024ull, 1315462432931574ull}}, {{10206757910276502288ull, 2104739892690518ull}}, {{15544103957705022476ull, 1683791914152414ull}}, {{16124631980905928304ull, 1347033531321931ull}}, {{18420713539965664640ull, 2155253650115090ull}}, {{14736570831972531712ull, 1724202920092072ull}}, {{4410559036094204724ull, 1379362336073658ull}}, {{3367545643008817236ull, 2206979737717853ull}}, {{10072734143890874432ull, 1765583790174282ull}}, {{679489685628878900ull, 1412467032139426ull}}, {{15300987007470744412ull, 1129973625711540ull}}, {{6034835138243639444ull, 1807957801138465ull}}, {{4827868110594911556ull, 1446366240910772ull}}, {{14930340932701660212ull, 1157092992728617ull}}, {{9131150233355015052ull, 1851348788365788ull}}, {{14683617816167832688ull, 1481079030692630ull}}, {{11746894252934266148ull, 1184863224554104ull}}, {{7726984360469094868ull, 1895781159286567ull}}, {{17249633932601006864ull, 1516624927429253ull}}, {{2731660701855074520ull, 1213299941943403ull}}, {{681308308226208912ull, 1941279907109445ull}}, {{545046646580967128ull, 1553023925687556ull}}, {{15193432576232414996ull, 1242419140550044ull}}, {{13241445677746133024ull, 1987870624880071ull}}, {{6903807727454996096ull, 1590296499904057ull}}, {{16591092626189727848ull, 1272237199923245ull}}, {{8099004128194012940ull, 2035579519877193ull}}, {{13857900932039030996ull, 1628463615901754ull}}, {{14775669560373135120ull, 1302770892721403ull}}, {{1504978408145554256ull, 2084433428354246ull}}, {{15961377985484084696ull, 1667546742683396ull}}, {{9079753573645357436ull, 1334037394146717ull}}, {{18216954532574482220ull, 2134459830634747ull}}, {{7194865996575765128ull, 1707567864507798ull}}, {{13134590426744432748ull, 1366054291606238ull}}, {{17325995868049182076ull, 2185686866569981ull}}, {{10171447879697435336ull, 1748549493255985ull}}, {{8137158303757948268ull, 1398839594604788ull}}, {{9330104471270806908ull, 2238143351367661ull}}, {{3774734762274735204ull, 1790514681094129ull}}, {{6709136624561698484ull, 1432411744875303ull}}, {{12746006929133179436ull, 1145929395900242ull}}, {{5636215827645445804ull, 1833487033440388ull}}, {{11887670291600177288ull, 1466789626752310ull}}, {{9510136233280141832ull, 1173431701401848ull}}, {{11526869158506316608ull, 1877490722242957ull}}, {{1842797697321232640ull, 1501992577794366ull}}, {{16231633416824627404ull, 1201594062235492ull}}, {{11213218207951762552ull, 1922550499576788ull}}, {{16349272195845230688ull, 1538040399661430ull}}, {{13079417756676184552ull, 1230432319729144ull}}, {{9859021966456164312ull, 1968691711566631ull}}, {{4197868758423021128ull, 1574953369253305ull}}, {{3358295006738416900ull, 1259962695402644ull}}, {{12751969640265287688ull, 2015940312644230ull}}, {{10201575712212230152ull, 1612752250115384ull}}, {{11850609384511694444ull, 1290201800092307ull}}, {{4203579756251069820ull, 2064322880147692ull}}, {{14430910249226586824ull, 1651458304118153ull}}, {{476681755155538488ull, 1321166643294523ull}}, {{15520086067216502876ull, 2113866629271236ull}}, {{8726720039031291976ull, 1691093303416989ull}}, {{10670724845966943904ull, 1352874642733591ull}}, {{9694462124063289604ull, 2164599428373746ull}}, {{4066220884508721360ull, 1731679542698997ull}}, {{14321023151832708056ull, 1385343634159197ull}}, {{8156241783964691596ull, 2216549814654716ull}}, {{2835644612429842956ull, 1773239851723773ull}}, {{9647213319427695008ull, 1418591881379018ull}}, {{15096468285025976652ull, 1134873505103214ull}}, {{13086302811815831676ull, 1815797608165143ull}}, {{17847739878936485988ull, 1452638086532114ull}}, {{17967540717891099112ull, 1162110469225691ull}}, {{2922623445432386320ull, 1859376750761107ull}}, {{13406145200571640024ull, 1487501400608885ull}}, {{10724916160457312020ull, 1190001120487108ull}}, {{13470517041989788908ull, 1904001792779373ull}}, {{18155111263075651772ull, 1523201434223498ull}}, {{3456042566234790448ull, 1218561147378799ull}}, {{12908365735459485368ull, 1949697835806078ull}}, {{17705390217851408940ull, 1559758268644862ull}}, {{6785614544797306504ull, 1247806614915890ull}}, {{10856983271675690408ull, 1996490583865424ull}}, {{12374935432082462648ull, 1597192467092339ull}}, {{13589297160407880444ull, 1277753973673871ull}}, {{14364177827168788064ull, 2044406357878194ull}}, {{15180691076476940772ull, 1635525086302555ull}}, {{12144552861181552616ull, 1308420069042044ull}}, {{8363238133664753220ull, 2093472110467271ull}}, {{3001241692189892252ull, 1674777688373817ull}}, {{13469039797977644772ull, 1339822150699053ull}}, {{17861114862022321312ull, 2143715441118485ull}}, {{14288891889617857048ull, 1714972352894788ull}}, {{363067067468554668ull, 1371977882315831ull}}, {{11648953752175418440ull, 2195164611705329ull}}, {{13008511816482245076ull, 1756131689364263ull}}, {{17785507082669616708ull, 1404905351491410ull}}, {{10010067258561835116ull, 2247848562386257ull}}, {{629356177365647448ull, 1798278849909006ull}}, {{15260880200860159248ull, 1438623079927204ull}}, {{15898052975430037724ull, 1150898463941763ull}}, {{3300791872236598416ull, 1841437542306822ull}}, {{13708679942015009704ull, 1473150033845457ull}}, {{3588246324128187116ull, 1178520027076366ull}}, {{16809240562830830356ull, 1885632043322185ull}}, {{13447392450264664284ull, 1508505634657748ull}}, {{18136611589695552072ull, 1206804507726198ull}}, {{6882485655061421380ull, 1930887212361918ull}}, {{12884686153532957748ull, 1544709769889534ull}}, {{13997097737568276524ull, 1235767815911627ull}}, {{7637961121141601144ull, 1977228505458604ull}}, {{9799717711655191240ull, 1581782804366883ull}}, {{15218471798807973636ull, 1265426243493506ull}}, {{16970857248608937172ull, 2024681989589610ull}}, {{13576685798887149740ull, 1619745591671688ull}}, {{18240046268593540436ull, 1295796473337350ull}}, {{10737329956040113084ull, 2073274357339761ull}}, {{4900515150090180144ull, 1658619485871809ull}}, {{7609760934814054436ull, 1326895588697447ull}}, {{15864966310444397424ull, 2123032941915915ull}}, {{12691973048355517940ull, 1698426353532732ull}}, {{2774880809200593704ull, 1358741082826186ull}}, {{15507855738946680900ull, 2173985732521897ull}}, {{5027586961673524072ull, 1739188586017518ull}}, {{11400767198822639904ull, 1391350868814014ull}}, {{7173181073890492876ull, 2226161390102423ull}}, {{13117242488596214948ull, 1780929112081938ull}}, {{17872491620360792604ull, 1424743289665550ull}}, {{14297993296288634084ull, 1139794631732440ull}}, {{4430045200352262920ull, 1823671410771905ull}}, {{3544036160281810336ull, 1458937128617524ull}}, {{6524577742967358592ull, 1167149702894019ull}}, {{17818022018231594392ull, 1867439524630430ull}}, {{14254417614585275512ull, 1493951619704344ull}}, {{15092882906410130732ull, 1195161295763475ull}}, {{5701868576546657560ull, 1912258073221561ull}}, {{872146046495415724ull, 1529806458577249ull}}, {{4387065651938242900ull, 1223845166861799ull}}, {{14398002672585009288ull, 1958152266978878ull}}, {{450355693842276460ull, 1566521813583103ull}}, {{7738982184557641816ull, 1253217450866482ull}}, {{16071720310034137228ull, 2005147921386371ull}}, {{9168027433285399460ull, 1604118337109097ull}}, {{18402468390854050536ull, 1283294669687277ull}}, {{14686554166398839568ull, 2053271471499644ull}}, {{15438592147860981976ull, 1642617177199715ull}}, {{12350873718288785580ull, 1314093741759772ull}}, {{5004002690294415636ull, 2102549986815636ull}}, {{313853337493622188ull, 1682039989452509ull}}, {{3940431484736808072ull, 1345631991562007ull}}, {{9994039190320803240ull, 2153011186499211ull}}, {{4305882537514732268ull, 1722408949199369ull}}, {{7134054844753696136ull, 1377927159359495ull}}, {{11414487751605913820ull, 2204683454975192ull}}, {{1752892571800910408ull, 1763746763980154ull}}, {{5091662872182638652ull, 1410997411184123ull}}, {{11452027927229931568ull, 1128797928947298ull}}, {{14633895868825980184ull, 1806076686315677ull}}, {{4328419065576963500ull, 1444861349052542ull}}, {{14530781696687301768ull, 1155889079242033ull}}, {{1113157826248220892ull, 1849422526787254ull}}, {{4579875075740487036ull, 1479538021429803ull}}, {{11042597690076210276ull, 1183630417143842ull}}, {{2910761045154295152ull, 1893808667430148ull}}, {{9707306465607256768ull, 1515046933944118ull}}, {{15144542801969626060ull, 1212037547155294ull}}, {{13163222038925670728ull, 1939260075448471ull}}, {{6841228816398626256ull, 1551408060358777ull}}, {{16541029497344631976ull, 1241126448287021ull}}, {{640205492558038900ull, 1985802317259235ull}}, {{512164394046431120ull, 1588641853807388ull}}, {{7788429144720965540ull, 1270913483045910ull}}, {{12461486631553544868ull, 2033461572873456ull}}, {{6279840490500925568ull, 1626769258298765ull}}, {{5023872392400740456ull, 1301415406639012ull}}, {{11727544642583095052ull, 2082264650622419ull}}, {{13071384528808386364ull, 1665811720497935ull}}, {{10457107623046709092ull, 1332649376398348ull}}, {{13042023382132824224ull, 2132239002237357ull}}, {{3054921076222438732ull, 1705791201789886ull}}, {{17201332119945592280ull, 1364632961431908ull}}, {{5386038503461485708ull, 2183412738291054ull}}, {{7998179617511098888ull, 1746730190632843ull}}, {{13777241323492699756ull, 1397384152506274ull}}, {{10975539673362588644ull, 2235814644010039ull}}, {{12469780553431981236ull, 1788651715208031ull}}, {{6286475628003674668ull, 1430921372166425ull}}, {{5029180502402939732ull, 1144737097733140ull}}, {{8046688803844703572ull, 1831579356373024ull}}, {{10126699857817673180ull, 1465263485098419ull}}, {{11790708700996048868ull, 1172210788078735ull}}, {{418389847884126576ull, 1875537260925977ull}}, {{11402758322533032228ull, 1500429808740781ull}}, {{5432857843284515460ull, 1200343846992625ull}}, {{8692572549255224736ull, 1920550155188200ull}}, {{6954058039404179788ull, 1536440124150560ull}}, {{5563246431523343832ull, 1229152099320448ull}}, {{5211845475695439808ull, 1966643358912717ull}}, {{15237522824782082816ull, 1573314687130173ull}}, {{1121971815599935280ull, 1258651749704139ull}}, {{9173852534443717100ull, 2013842799526622ull}}, {{18407128471780704648ull, 1611074239621297ull}}, {{7347005147940743072ull, 1288859391697038ull}}, {{8065859421963278592ull, 2062175026715261ull}}, {{2763338722828712552ull, 1649740021372209ull}}, {{5900019793004880364ull, 1319792017097767ull}}, {{13129380483549718904ull, 2111667227356427ull}}, {{3124806757355954476ull, 1689333781885142ull}}, {{13567891850110494552ull, 1351467025508113ull}}, {{18019278145434880960ull, 2162347240812981ull}}, {{10726073701605994444ull, 1729877792650385ull}}, {{8580858961284795556ull, 1383902234120308ull}}, {{10040025523313762564ull, 2214243574592493ull}}, {{15410718048134830700ull, 1771394859673994ull}}, {{16017923253249774880ull, 1417115887739195ull}}, {{12814338602599819904ull, 1133692710191356ull}}, {{13124244134675891204ull, 1813908336306170ull}}, {{10499395307740712960ull, 1451126669044936ull}}, {{4710167431450660044ull, 1160901335235949ull}}, {{14914965519804876720ull, 1857442136377518ull}}, {{863925971618170408ull, 1485953709102015ull}}, {{691140777294536324ull, 1188762967281612ull}}, {{4795174058413168444ull, 1902020747650579ull}}, {{7525488061472445080ull, 1521616598120463ull}}, {{13399088078661776708ull, 1217293278496370ull}}, {{2991796852149291120ull, 1947669245594193ull}}, {{9772135111203253540ull, 1558135396475354ull}}, {{11507056903704513156ull, 1246508317180283ull}}, {{14721942231185310728ull, 1994413307488453ull}}, {{709507340722517612ull, 1595530645990763ull}}, {{7946303502061834736ull, 1276424516792610ull}}, {{12714085603298935580ull, 2042279226868176ull}}, {{6481919667897238140ull, 1633823381494541ull}}, {{1496186919575880188ull, 1307058705195633ull}}, {{17151294330289049592ull, 2091293928313012ull}}, {{6342337834747419028ull, 1673035142650410ull}}, {{5073870267797935224ull, 1338428114120328ull}}, {{4428843613734786032ull, 2141484982592525ull}}, {{3543074890987828828ull, 1713187986074020ull}}, {{2834459912790263060ull, 1370550388859216ull}}, {{15603182304690151868ull, 2192880622174745ull}}, {{12482545843752121496ull, 1754304497739796ull}}, {{6296687860259786872ull, 1403443598191837ull}}, {{13764049391157569320ull, 2245509757106939ull}}, {{14700588327667965780ull, 1796407805685551ull}}, {{8071121847392462300ull, 1437126244548441ull}}, {{2767548663172059516ull, 1149700995638753ull}}, {{738729046333384904ull, 1839521593022005ull}}, {{590983237066707920ull, 1471617274417604ull}}, {{4162135404395276660ull, 1177293819534083ull}}, {{2970067832290532336ull, 1883670111254533ull}}, {{9754751895316246512ull, 1506936089003626ull}}, {{4114452701511086888ull, 1205548871202901ull}}, {{17651170766643469992ull, 1928878193924641ull}}, {{10431587798572865668ull, 1543102555139713ull}}, {{15723967868342113180ull, 1234482044111770ull}}, {{6711604515637829476ull, 1975171270578833ull}}, {{12747981241994084224ull, 1580137016463066ull}}, {{6509036178853357056ull, 1264109613170453ull}}, {{6725109071423460968ull, 2022575381072725ull}}, {{5380087257138768776ull, 1618060304858180ull}}, {{4304069805711015020ull, 1294448243886544ull}}, {{14265209318621444680ull, 2071117190218470ull}}, {{11412167454897155744ull, 1656893752174776ull}}, {{5440385149175814272ull, 1325515001739821ull}}, {{1325918609197482188ull, 2120824002783714ull}}, {{4750083702099896072ull, 1696659202226971ull}}, {{110718146938006536ull, 1357327361781577ull}}, {{3866497849842720780ull, 2171723778850523ull}}, {{10471895909357997272ull, 1737379023080418ull}}, {{15756214356970218464ull, 1389903218464334ull}}, {{14141896526926618572ull, 2223845149542935ull}}, {{11313517221541294856ull, 1779076119634348ull}}, {{16429511406716856532ull, 1423260895707478ull}}, {{2075562681147754256ull, 1138608716565983ull}}, {{18078295548804048100ull, 1821773946505572ull}}, {{7083938809559417836ull, 1457419157204458ull}}, {{13045848677131354912ull, 1165935325763566ull}}, {{13494660253926347216ull, 1865496521221706ull}}, {{7106379388399167448ull, 1492397216977365ull}}, {{5685103510719333960ull, 1193917773581892ull}}, {{12785514431892844660ull, 1910268437731027ull}}, {{2849713916030455080ull, 1528214750184822ull}}, {{13347817577050095032ull, 1222571800147857ull}}, {{6599112864312510764ull, 1956114880236572ull}}, {{16347336735675739580ull, 1564891904189257ull}}, {{5699171759056771016ull, 1251913523351406ull}}, {{1739977185007012980ull, 2003061637362250ull}}, {{1391981748005610384ull, 1602449309889800ull}}, {{1113585398404488308ull, 1281959447911840ull}}, {{1781736637447181292ull, 2051135116658944ull}}, {{5114738124699655356ull, 1640908093327155ull}}, {{4091790499759724284ull, 1312726474661724ull}}, {{13925562429099379504ull, 2100362359458758ull}}, {{72403499053772632ull, 1680289887567007ull}}, {{11125969243468749076ull, 1344231910053605ull}}, {{17801550789549998524ull, 2150771056085768ull}}, {{3173194187414267848ull, 1720616844868615ull}}, {{2538555349931414276ull, 1376493475894892ull}}, {{7751037374632173168ull, 2202389561431827ull}}, {{17268876343931469504ull, 1761911649145461ull}}, {{10125752260403265280ull, 1409529319316369ull}}, {{11789950623064522548ull, 1127623455453095ull}}, {{417176923193684460ull, 1804197528724953ull}}, {{7712439168038768216ull, 1443358022979962ull}}, {{17237997778656745540ull, 1154686418383969ull}}, {{16512750001625061896ull, 1847498269414351ull}}, {{9520851186558139192ull, 1477998615531481ull}}, {{3927332134504601032ull, 1182398892425185ull}}, {{6283731415207361652ull, 1891838227880296ull}}, {{1337636317423978996ull, 1513470582304237ull}}, {{12138155498164914168ull, 1210776465843389ull}}, {{8353002352838131700ull, 1937242345349423ull}}, {{14061099511754326004ull, 1549793876279538ull}}, {{180833165177729836ull, 1239835101023631ull}}, {{11357379508510098704ull, 1983736161637809ull}}, {{12775252421549989288ull, 1586988929310247ull}}, {{2841504307756170784ull, 1269591143448198ull}}, {{857058077667962932ull, 2031345829517117ull}}, {{11753692906360101312ull, 1625076663613693ull}}, {{16781651954571901696ull, 1300061330890954ull}}, {{15782596683089311748ull, 2080098129425527ull}}, {{5247379716987628752ull, 1664078503540422ull}}, {{15265950217815833968ull, 1331262802832337ull}}, {{9668125089537693060ull, 2130020484531740ull}}, {{7734500071630154448ull, 1704016387625392ull}}, {{17255646501529854528ull, 1363213110100313ull}}, {{5472941513996305304ull, 2181140976160502ull}}, {{15446399655422775212ull, 1744912780928401ull}}, {{8667770909596309848ull, 1395930224742721ull}}, {{6489735825870275112ull, 2233488359588354ull}}, {{8881137475438130412ull, 1786790687670683ull}}, {{14483607609834324976ull, 1429432550136546ull}}, {{7897537273125549656ull, 1143546040109237ull}}, {{16325408451742789776ull, 1829673664174779ull}}, {{16749675576136142144ull, 1463738931339823ull}}, {{2331694016683182744ull, 1170991145071859ull}}, {{11109408056176913036ull, 1873585832114974ull}}, {{12576875259683440752ull, 1498868665691979ull}}, {{13750849022488662924ull, 1199094932553583ull}}, {{18312009621239950360ull, 1918551892085733ull}}, {{3581561252766229316ull, 1534841513668587ull}}, {{13933295446438714424ull, 1227873210934869ull}}, {{11225226270076212108ull, 1964597137495791ull}}, {{5290832201319059364ull, 1571677709996633ull}}, {{11611363390539068136ull, 1257342167997306ull}}, {{11199483795378688372ull, 2011747468795690ull}}, {{8959587036302950696ull, 1609397975036552ull}}, {{18235716073268091528ull, 1287518380029241ull}}, {{3351704014035574184ull, 2060029408046787ull}}, {{13749409655454190316ull, 1648023526437429ull}}, {{14688876539105262576ull, 1318418821149943ull}}, {{1366109574116958180ull, 2109470113839910ull}}, {{1092887659293566544ull, 1687576091071928ull}}, {{8253007756918673884ull, 1350060872857542ull}}, {{16894161225811788536ull, 2160097396572067ull}}, {{6136631351165610180ull, 1728077917257654ull}}, {{8598653895674398468ull, 1382462333806123ull}}, {{10068497418337127228ull, 2211939734089797ull}}, {{676100305185881136ull, 1769551787271838ull}}, {{7919577873632525552ull, 1415641429817470ull}}, {{6335662298906020444ull, 1132513143853976ull}}, {{2758362048765812064ull, 1812021030166362ull}}, {{13274736083238380620ull, 1449616824133089ull}}, {{14309137681332614820ull, 1159693459306471ull}}, {{15515922660648363064ull, 1855509534890354ull}}, {{16102086943260600776ull, 1484407627912283ull}}, {{1813623110382749648ull, 1187526102329827ull}}, {{6591145791354309764ull, 1900041763727723ull}}, {{12651614262567268456ull, 1520033410982178ull}}, {{17499989039537635412ull, 1216026728785742ull}}, {{13242587204292575368ull, 1945642766057188ull}}, {{17972767392917880940ull, 1556514212845750ull}}, {{14378213914334304752ull, 1245211370276600ull}}, {{4558398189225335988ull, 1992338192442561ull}}, {{18404113810347910084ull, 1593870553954048ull}}, {{3655244604052597096ull, 1275096443163239ull}}, {{13227088995967976000ull, 2040154309061182ull}}, {{3202973567290560152ull, 1632123447248946ull}}, {{17319774112800089416ull, 1305698757799156ull}}, {{1886196877286770804ull, 2089118012478651ull}}, {{16266352760797057936ull, 1671294409982920ull}}, {{13013082208637646348ull, 1337035527986336ull}}, {{13442233904336413512ull, 2139256844778138ull}}, {{18132484752952951456ull, 1711405475822510ull}}, {{14505987802362361164ull, 1369124380658008ull}}, {{1073487595328315924ull, 2190599009052814ull}}, {{4548138891004563060ull, 1752479207242251ull}}, {{18395906371771291740ull, 1401983365793800ull}}, {{10986706121124515172ull, 2243173385270081ull}}, {{5100016082157701816ull, 1794538708216065ull}}, {{4080012865726161452ull, 1435630966572852ull}}, {{14332056736806660128ull, 1148504773258281ull}}, {{15552593149406835564ull, 1837607637213250ull}}, {{12442074519525468448ull, 1470086109770600ull}}, {{9953659615620374760ull, 1176068887816480ull}}, {{15925855384992599616ull, 1881710220506368ull}}, {{1672637863768348724ull, 1505368176405095ull}}, {{1338110291014678976ull, 1204294541124076ull}}, {{13209022909849217336ull, 1926871265798521ull}}, {{6877869513137463544ull, 1541497012638817ull}}, {{16570342054735701804ull, 1233197610111053ull}}, {{4376454399125660952ull, 1973116176177686ull}}, {{18258558778268170052ull, 1578492940942148ull}}, {{3538800578388805072ull, 1262794352753719ull}}, {{13040778554905908764ull, 2020470964405950ull}}, {{10432622843924727008ull, 1616376771524760ull}}, {{8346098275139781608ull, 1293101417219808ull}}, {{9664408425481740248ull, 2068962267551693ull}}, {{15110224369869212844ull, 1655169814041354ull}}, {{15777528310637280600ull, 1324135851233083ull}}, {{3107952408568187020ull, 2118617361972934ull}}, {{6175710741596459940ull, 1694893889578347ull}}, {{16008615037502898920ull, 1355915111662677ull}}, {{10856388801036996984ull, 2169464178660284ull}}, {{12374459855571507908ull, 1735571342928227ull}}, {{2520870254973385680ull, 1388457074342582ull}}, {{7722741222699327412ull, 2221531318948131ull}}, {{2488844163417551608ull, 1777225055158505ull}}, {{1991075330734041284ull, 1421780044126804ull}}, {{5282209079329143352ull, 1137424035301443ull}}, {{4762185712184719040ull, 1819878456482309ull}}, {{7499097384489685552ull, 1455902765185847ull}}, {{17067324351817479412ull, 1164722212148677ull}}, {{12550323703940325768ull, 1863555539437884ull}}, {{13729607777894170936ull, 1490844431550307ull}}, {{3604988592831516104ull, 1192675545240246ull}}, {{16836028192756156736ull, 1908280872384393ull}}, {{2400776109979194420ull, 1526624697907515ull}}, {{1920620887983355536ull, 1221299758326012ull}}, {{6762342235515279180ull, 1954079613321619ull}}, {{9099222603154133668ull, 1563263690657295ull}}, {{7279378082523306932ull, 1250610952525836ull}}, {{4268307302553470448ull, 2000977524041338ull}}, {{10793343471526597004ull, 1600782019233070ull}}, {{8634674777221277604ull, 1280625615386456ull}}, {{6436782014070223520ull, 2049000984618330ull}}, {{5149425611256178816ull, 1639200787694664ull}}, {{7808889303746853376ull, 1311360630155731ull}}, {{5115525256511144756ull, 2098177008249170ull}}, {{4092420205208915804ull, 1678541606599336ull}}, {{18031331423134773936ull, 1342833285279468ull}}, {{6714037388564176356ull, 2148533256447150ull}}, {{5371229910851341084ull, 1718826605157720ull}}, {{4296983928681072868ull, 1375061284126176ull}}, {{17943220730115447560ull, 2200098054601881ull}}, {{10665227769350447724ull, 1760078443681505ull}}, {{8532182215480358180ull, 1408062754945204ull}}, {{10515094587126196864ull, 1126450203956163ull}}, {{13134802524660004664ull, 1802320326329861ull}}, {{6818493204986093408ull, 1441856261063889ull}}, {{9144143378730785048ull, 1153485008851111ull}}, {{7251931776485435432ull, 1845576014161778ull}}, {{13180243050672168992ull, 1476460811329422ull}}, {{3165496811053914548ull, 1181168649063538ull}}, {{1375446082944352952ull, 1889869838501661ull}}, {{15857752125323123656ull, 1511895870801328ull}}, {{1618155256032767952ull, 1209516696641063ull}}, {{17346443668620070020ull, 1935226714625700ull}}, {{13877154934896056016ull, 1548181371700560ull}}, {{11101723947916844812ull, 1238545097360448ull}}, {{14073409501925041376ull, 1981672155776717ull}}, {{3880029972056212456ull, 1585337724621374ull}}, {{6793372792386880288ull, 1268270179697099ull}}, {{18248094097302829108ull, 2029232287515358ull}}, {{3530428833616532316ull, 1623385830012287ull}}, {{13892389511118956820ull, 1298708664009829ull}}, {{11159776773564599944ull, 2077933862415727ull}}, {{1549123789367859308ull, 1662347089932582ull}}, {{12307345475720018416ull, 1329877671946065ull}}, {{1245008687442477852ull, 2127804275113705ull}}, {{996006949953982280ull, 1702243420090964ull}}, {{4486154374705096148ull, 1361794736072771ull}}, {{18245893443753884808ull, 2178871577716433ull}}, {{3528668310777376876ull, 1743097262173147ull}}, {{13890981092847632472ull, 1394477809738517ull}}, {{7468174489588570660ull, 2231164495581628ull}}, {{13353237221154677176ull, 1784931596465302ull}}, {{3303892147439921092ull, 1427945277172242ull}}, {{13711160162177667844ull, 1142356221737793ull}}, {{18248507444742358228ull, 1827769954780469ull}}, {{18288154770535796904ull, 1462215963824375ull}}, {{14630523816428637524ull, 1169772771059500ull}}, {{4962094032576268424ull, 1871636433695201ull}}, {{280326411319104416ull, 1497309146956161ull}}, {{14981656388022924824ull, 1197847317564928ull}}, {{1834557332385217780ull, 1916555708103886ull}}, {{16225041124875815516ull, 1533244566483108ull}}, {{1911986455674921444ull, 1226595653186487ull}}, {{6748527143821784632ull, 1962553045098379ull}}, {{9088170529799338028ull, 1570042436078703ull}}, {{14649234053323291068ull, 1256033948862962ull}}, {{8681379226349624420ull, 2009654318180740ull}}, {{6945103381079699536ull, 1607723454544592ull}}, {{16624129149089490596ull, 1286178763635673ull}}, {{4462513750091723020ull, 2057886021817078ull}}, {{10948708629557199060ull, 1646308817453662ull}}, {{1380269274161938600ull, 1317047053962930ull}}, {{2208430838659101764ull, 2107275286340688ull}}, {{9145442300411102056ull, 1685820229072550ull}}, {{7316353840328881644ull, 1348656183258040ull}}, {{11706166144526210636ull, 2157849893212864ull}}, {{13054281730362878832ull, 1726279914570291ull}}, {{6754076569548392740ull, 1381023931656233ull}}, {{7117173696535518064ull, 2209638290649973ull}}, {{13072436586712235096ull, 1767710632519978ull}}, {{17836646898853608724ull, 1414168506015982ull}}, {{6890619889599066332ull, 1131334804812786ull}}, {{3646294193874685484ull, 1810135687700458ull}}, {{10295732984583569036ull, 1448108550160366ull}}, {{4547237572924944904ull, 1158486840128293ull}}, {{3586231301938001524ull, 1853578944205269ull}}, {{6558333856292311544ull, 1482863155364215ull}}, {{5246667085033849232ull, 1186290524291372ull}}, {{12084016150796069096ull, 1898064838866195ull}}, {{9667212920636855276ull, 1518451871092956ull}}, {{4044421521767573900ull, 1214761496874365ull}}, {{6471074434828118240ull, 1943618394998984ull}}, {{8866208362604404912ull, 1554894715999187ull}}, {{18161013134309254900ull, 1243915772799349ull}}, {{17989574570669076872ull, 1990265236478959ull}}, {{18081008471277171820ull, 1592212189183167ull}}, {{7086109147537916808ull, 1273769751346534ull}}, {{269728191834935928ull, 2038031602154455ull}}, {{215782553467948740ull, 1630425281723564ull}}, {{3861974857516269316ull, 1304340225378851ull}}, {{17247206216251761876ull, 2086944360606161ull}}, {{10108416158259499176ull, 1669555488484929ull}}, {{11776081741349509664ull, 1335644390787943ull}}, {{15152381971417305140ull, 2137031025260709ull}}, {{15811254391875754436ull, 1709624820208567ull}}, {{5270305884016782900ull, 1367699856166854ull}}, {{15811187043910673292ull, 2188319769866966ull}}, {{8959600820386628308ull, 1750655815893573ull}}, {{14546378285793123292ull, 1400524652714858ull}}, {{1138112368817535332ull, 2240839444343774ull}}, {{4599838709795938588ull, 1792671555475019ull}}, {{7369219782578661192ull, 1434137244380015ull}}, {{5895375826062928952ull, 1147309795504012ull}}, {{13121950136442596652ull, 1835695672806419ull}}, {{14186908923895987644ull, 1468556538245135ull}}, {{11349527139116790116ull, 1174845230596108ull}}, {{14469894607844953860ull, 1879752368953773ull}}, {{507869242050232120ull, 1503801895163019ull}}, {{4095644208382096016ull, 1203041516130415ull}}, {{6553030733411353628ull, 1924866425808664ull}}, {{8931773401470993228ull, 1539893140646931ull}}, {{3456069906434884256ull, 1231914512517545ull}}, {{5529711850295814812ull, 1971063220028072ull}}, {{15491815924462382820ull, 1576850576022457ull}}, {{5014755110086085608ull, 1261480460817966ull}}, {{644910546653916328ull, 2018368737308746ull}}, {{15273323696290774356ull, 1614694989846996ull}}, {{8529310142290709160ull, 1291755991877597ull}}, {{17336245042407044984ull, 2066809587004155ull}}, {{13868996033925635984ull, 1653447669603324ull}}, {{14784545641882419112ull, 1322758135682659ull}}, {{12587226582786139608ull, 2116413017092255ull}}, {{10069781266228911688ull, 1693130413673804ull}}, {{11745173827725039672ull, 1354504330939043ull}}, {{15102929309618153152ull, 2167206929502469ull}}, {{15771692262436432844ull, 1733765543601975ull}}, {{12617353809949146276ull, 1387012434881580ull}}, {{1741022022209082428ull, 2219219895810529ull}}, {{5082166432509176264ull, 1775375916648423ull}}, {{11444430775491161656ull, 1420300733318738ull}}, {{16534242249876749972ull, 1136240586654990ull}}, {{8008043526093248340ull, 1817984938647985ull}}, {{6406434820874598672ull, 1454387950918388ull}}, {{12503845486183499584ull, 1163510360734710ull}}, {{1559408704184047720ull, 1861616577175537ull}}, {{12315573407572969144ull, 1489293261740429ull}}, {{13541807540800285640ull, 1191434609392343ull}}, {{17977543250538546700ull, 1906295375027749ull}}, {{18071383415172747684ull, 1525036300022199ull}}, {{18146455546880108468ull, 1220029040017759ull}}, {{17966282430782442580ull, 1952046464028415ull}}, {{14373025944625954064ull, 1561637171222732ull}}, {{4119723126216942604ull, 1249309736978186ull}}, {{17659603446172839140ull, 1998895579165097ull}}, {{6748985127454450664ull, 1599116463332078ull}}, {{12777885731447381176ull, 1279293170665662ull}}, {{5687221911348168592ull, 2046869073065060ull}}, {{4549777529078534872ull, 1637495258452048ull}}, {{11018519652746648544ull, 1309996206761638ull}}, {{13940282629652727348ull, 2095993930818621ull}}, {{7462877288980271556ull, 1676795144654897ull}}, {{17038348275409948216ull, 1341436115723917ull}}, {{12503961981688275852ull, 2146297785158268ull}}, {{17381867214834441328ull, 1717038228126614ull}}, {{17594842586609463384ull, 1373630582501291ull}}, {{2326306435381769152ull, 2197808932002067ull}}, {{12929091592531146292ull, 1758247145601653ull}}, {{17721970903508737680ull, 1406597716481322ull}}, {{13597758186646338996ull, 2250556346370116ull}}, {{7188857734575160872ull, 1800445077096093ull}}, {{13129783817143949344ull, 1440356061676874ull}}, {{14193175868457069800ull, 1152284849341499ull}}, {{11641034945305580708ull, 1843655758946399ull}}, {{13002176770986374888ull, 1474924607157119ull}}, {{14091090231531010236ull, 1179939685725695ull}}, {{4099000296740064760ull, 1887903497161113ull}}, {{10657897866875872456ull, 1510322797728890ull}}, {{8526318293500697964ull, 1208258238183112ull}}, {{17331458084343027064ull, 1933213181092979ull}}, {{17554515282216331976ull, 1546570544874383ull}}, {{2975565781547334612ull, 1237256435899507ull}}, {{8450254065217645700ull, 1979610297439211ull}}, {{3070854437432206236ull, 1583688237951369ull}}, {{6146032364687675312ull, 1266950590361095ull}}, {{9833651783500280500ull, 2027120944577752ull}}, {{488223797316403756ull, 1621696755662202ull}}, {{11458625482078853972ull, 1297357404529761ull}}, {{10955103141842345712ull, 2075771847247618ull}}, {{16142780142957697216ull, 1660617477798094ull}}, {{16603572929108068096ull, 1328493982238475ull}}, {{8118972612863357336ull, 2125590371581561ull}}, {{2805829275548775544ull, 1700472297265249ull}}, {{5934012235180930760ull, 1360377837812199ull}}, {{16873117205773309864ull, 2176604540499518ull}}, {{2430447320392916920ull, 1741283632399615ull}}, {{1944357856314333536ull, 1393026905919692ull}}, {{6800321384844843980ull, 2228843049471507ull}}, {{16508303552101606156ull, 1783074439577205ull}}, {{13206642841681284924ull, 1426459551661764ull}}, {{14254663088086938260ull, 1141167641329411ull}}, {{15428763311455280572ull, 1825868226127058ull}}, {{1274964204938493488ull, 1460694580901647ull}}, {{12088017808176525760ull, 1168555664721317ull}}, {{4583433234114799924ull, 1869689063554108ull}}, {{11045444216775660584ull, 1495751250843286ull}}, {{5147006558678618144ull, 1196601000674629ull}}, {{15613908123369609680ull, 1914561601079406ull}}, {{8801777683953777420ull, 1531649280863525ull}}, {{7041422147163021936ull, 1225319424690820ull}}, {{11266275435460835096ull, 1960511079505312ull}}, {{1634322718884847432ull, 1568408863604250ull}}, {{1307458175107877944ull, 1254727090883400ull}}, {{2091933080172604712ull, 2007563345413440ull}}, {{1673546464138083768ull, 1606050676330752ull}}, {{12406883615536197984ull, 1284840541064601ull}}, {{12472316155374096132ull, 2055744865703362ull}}, {{2599155294815456256ull, 1644595892562690ull}}, {{2079324235852365004ull, 1315676714050152ull}}, {{7016267592105694332ull, 2105082742480243ull}}, {{12991711703168376112ull, 1684066193984194ull}}, {{14082718177276611212ull, 1347252955187355ull}}, {{4085605009933026324ull, 2155604728299769ull}}, {{6957832822688331384ull, 1724483782639815ull}}, {{5566266258150665108ull, 1379587026111852ull}}, {{12595374827782974496ull, 2207339241778963ull}}, {{17454997491710200240ull, 1765871393423170ull}}, {{13963997993368160192ull, 1412697114738536ull}}, {{7481849579952617832ull, 1130157691790829ull}}, {{902912883698457560ull, 1808252306865327ull}}, {{11790376751184497016ull, 1446601845492261ull}}, {{5742952586205687292ull, 1157281476393809ull}}, {{16567421767412920312ull, 1851650362230094ull}}, {{16943286228672246572ull, 1481320289784075ull}}, {{13554628982937797260ull, 1185056231827260ull}}, {{3240662298990924000ull, 1896089970923617ull}}, {{13660576283418470168ull, 1516871976738893ull}}, {{18307158656218596780ull, 1213497581391114ull}}, {{18223407405724023880ull, 1941596130225783ull}}, {{3510679480353488132ull, 1553276904180627ull}}, {{13876590028508521476ull, 1242621523344501ull}}, {{14823846416129813716ull, 1988194437351202ull}}, {{4480379503420030328ull, 1590555549880962ull}}, {{14652350046961755232ull, 1272444439904769ull}}, {{12375713630913077400ull, 2035911103847631ull}}, {{6211222089988551596ull, 1628728883078105ull}}, {{4968977671990841276ull, 1302983106462484ull}}, {{15329061904669166692ull, 2084772970339974ull}}, {{15952598338477243676ull, 1667818376271979ull}}, {{16451427485523705264ull, 1334254701017583ull}}, {{4186191088386466484ull, 2134807521628134ull}}, {{7038301685451083508ull, 1707846017302507ull}}, {{16698687792586597776ull, 1366276813842005ull}}, {{8271156394429004828ull, 2186042902147209ull}}, {{10306273930285114184ull, 1748834321717767ull}}, {{866321514744270700ull, 1399067457374214ull}}, {{8764812053074653768ull, 2238507931798742ull}}, {{18079896086685453984ull, 1790806345438993ull}}, {{3395870425122632216ull, 1432645076351195ull}}, {{2716696340098105772ull, 1146116061080956ull}}, {{15414760588382700208ull, 1833785697729529ull}}, {{16021157285448070492ull, 1467028558183623ull}}, {{1748879384132725424ull, 1173622846546899ull}}, {{10176904644096181324ull, 1877796554475038ull}}, {{15520221344760765704ull, 1502237243580030ull}}, {{12416177075808612564ull, 1201789794864024ull}}, {{8797836877068049132ull, 1922863671782439ull}}, {{10727618316396349628ull, 1538290937425951ull}}, {{4892745838375169380ull, 1230632749940761ull}}, {{449695711916450360ull, 1969012399905218ull}}, {{7738454199016980936ull, 1575209919924174ull}}, {{9880112173955495072ull, 1260167935939339ull}}, {{4740133034103061144ull, 2016268697502943ull}}, {{11170804056766269564ull, 1613014958002354ull}}, {{12625992060154925972ull, 1290411966401883ull}}, {{16512238481505971236ull, 2064659146243013ull}}, {{2141744340979046016ull, 1651727316994411ull}}, {{16470790731750878108ull, 1321381853595528ull}}, {{4217172282349943032ull, 2114210965752846ull}}, {{18131133084847595720ull, 1691368772602276ull}}, {{10815557653136166252ull, 1353095018081821ull}}, {{9926194615534045356ull, 2164952028930914ull}}, {{11630304507169146608ull, 1731961623144731ull}}, {{5614894790993406964ull, 1385569298515785ull}}, {{8983831665589451140ull, 2216910877625256ull}}, {{3497716517729650588ull, 1773528702100205ull}}, {{2798173214183720472ull, 1418822961680164ull}}, {{5927887386088886700ull, 1135058369344131ull}}, {{2105922188258398076ull, 1816093390950610ull}}, {{1684737750606718460ull, 1452874712760488ull}}, {{8726487829969195412ull, 1162299770208390ull}}, {{13962380527950712664ull, 1859679632333424ull}}, {{14859253237102480452ull, 1487743705866739ull}}, {{15576751404423894684ull, 1190194964693391ull}}, {{17544104617594410852ull, 1904311943509426ull}}, {{10345934879333618356ull, 1523449554807541ull}}, {{4587399088724984364ull, 1218759643846033ull}}, {{3650489727218064656ull, 1950015430153653ull}}, {{10299089411258272372ull, 1560012344122922ull}}, {{860573899522797252ull, 1248009875298338ull}}, {{16134313498204116896ull, 1996815800477340ull}}, {{12907450798563293516ull, 1597452640381872ull}}, {{2947263009366814164ull, 1277962112305498ull}}, {{1026272000244992344ull, 2044739379688797ull}}, {{11889064044421724844ull, 1635791503751037ull}}, {{2132553606053559228ull, 1308633203000830ull}}, {{3412085769685694768ull, 2093813124801328ull}}, {{10108366245232376460ull, 1675050499841062ull}}, {{707995366702080520ull, 1340040399872850ull}}, {{1132792586723328832ull, 2144064639796560ull}}, {{906234069378663068ull, 1715251711837248ull}}, {{8103684884986751100ull, 1372201369469798ull}}, {{9276547001236891436ull, 2195522191151677ull}}, {{42539971505692504ull, 1756417752921342ull}}, {{11102078421430284972ull, 1405134202337073ull}}, {{14073976659546545632ull, 2248214723739317ull}}, {{3880483698153415860ull, 1798571778991454ull}}, {{6793735773264643012ull, 1438857423193163ull}}, {{12813686248095535056ull, 1151085938554530ull}}, {{2055153923243304472ull, 1841737501687249ull}}, {{5333471953336553900ull, 1473390001349799ull}}, {{7956126377411153444ull, 1178712001079839ull}}, {{1661755759632114540ull, 1885939201727743ull}}, {{8708102237189512280ull, 1508751361382194ull}}, {{10655830604493520144ull, 1207001089105755ull}}, {{17049328967189632232ull, 1931201742569208ull}}, {{2571416729525974816ull, 1544961394055367ull}}, {{13125179827846510824ull, 1235969115244293ull}}, {{17310938909812506996ull, 1977550584390869ull}}, {{17538099942591915920ull, 1582040467512695ull}}, {{14030479954073532736ull, 1265632374010156ull}}, {{15070070297033831728ull, 2025011798416250ull}}, {{12056056237627065384ull, 1620009438733000ull}}, {{9644844990101652308ull, 1296007550986400ull}}, {{15431751984162643692ull, 2073612081578240ull}}, {{12345401587330114952ull, 1658889665262592ull}}, {{2497623640380271316ull, 1327111732210074ull}}, {{11374895454092254752ull, 2123378771536118ull}}, {{16478613992757624448ull, 1698703017228894ull}}, {{16872240008948009880ull, 1358962413783115ull}}, {{8548839940607264196ull, 2174339862052985ull}}, {{6839071952485811356ull, 1739471889642388ull}}, {{12849955191472469732ull, 1391577511713910ull}}, {{2113184232646399952ull, 2226524018742257ull}}, {{12758593830342850932ull, 1781219214993805ull}}, {{10206875064274280744ull, 1424975371995044ull}}, {{11854848866161334920ull, 1139980297596035ull}}, {{521014112148584256ull, 1823968476153657ull}}, {{11484857733944598372ull, 1459174780922925ull}}, {{9187886187155678700ull, 1167339824738340ull}}, {{14700617899449085920ull, 1867743719581344ull}}, {{15449843134301179056ull, 1494194975665075ull}}, {{12359874507440943244ull, 1195355980532060ull}}, {{1329055138195957580ull, 1912569568851297ull}}, {{12131290554782497032ull, 1530055655081037ull}}, {{2326334814342176980ull, 1224044524064830ull}}, {{3722135702947483168ull, 1958471238503728ull}}, {{10356406191841807180ull, 1566776990802982ull}}, {{906427323989625096ull, 1253421592642386ull}}, {{12518330162609131128ull, 2005474548227817ull}}, {{2635966500603484256ull, 1604379638582254ull}}, {{5798122015224697728ull, 1283503710865803ull}}, {{5587646409617606040ull, 2053605937385285ull}}, {{4470117127694084832ull, 1642884749908228ull}}, {{10954791331639088512ull, 1314307799926582ull}}, {{2770270871654900328ull, 2102892479882532ull}}, {{13284263141549651232ull, 1682313983906025ull}}, {{10627410513239720984ull, 1345851187124820ull}}, {{17003856821183553576ull, 2153361899399712ull}}, {{6224387827463022212ull, 1722689519519770ull}}, {{4979510261970417772ull, 1378151615615816ull}}, {{588518789668847788ull, 2205042584985306ull}}, {{15228210290702719524ull, 1764034067988244ull}}, {{15871917047304085940ull, 1411227254390595ull}}, {{12697533637843268752ull, 1128981803512476ull}}, {{12937356191065409360ull, 1806370885619962ull}}, {{2971187323368506840ull, 1445096708495970ull}}, {{2376949858694805472ull, 1156077366796776ull}}, {{14871166218137419724ull, 1849723786874841ull}}, {{8207584159768025456ull, 1479779029499873ull}}, {{13944764957298241012ull, 1183823223599898ull}}, {{175531043225723680ull, 1894117157759838ull}}, {{7519122464064399588ull, 1515293726207870ull}}, {{6015297971251519672ull, 1212234980966296ull}}, {{2245779124518610828ull, 1939575969546074ull}}, {{5485972114356798988ull, 1551660775636859ull}}, {{8078126506227349512ull, 1241328620509487ull}}, {{16614351224705669544ull, 1986125792815179ull}}, {{16980829794506445956ull, 1588900634252143ull}}, {{2516617391379425796ull, 1271120507401715ull}}, {{4026587826207081276ull, 2033792811842744ull}}, {{6910619075707575344ull, 1627034249474195ull}}, {{5528495260566060272ull, 1301627399579356ull}}, {{1466894787421875792ull, 2082603839326970ull}}, {{1173515829937500632ull, 1666083071461576ull}}, {{15696207922917641800ull, 1332866457169260ull}}, {{6667188602958675264ull, 2132586331470817ull}}, {{16401797326592671180ull, 1706069065176653ull}}, {{2053391417048405976ull, 1364855252141323ull}}, {{18042821526245090852ull, 2183768403426116ull}}, {{10744908406254162360ull, 1747014722740893ull}}, {{15974624354487150532ull, 1397611778192714ull}}, {{14491352522953709884ull, 2236178845108343ull}}, {{525035574137236936ull, 1788943076086675ull}}, {{420028459309789548ull, 1431154460869340ull}}, {{336022767447831640ull, 1144923568695472ull}}, {{4226985242658440948ull, 1831877709912755ull}}, {{3381588194126752756ull, 1465502167930204ull}}, {{6394619370043312528ull, 1172401734344163ull}}, {{6542042177327389724ull, 1875842774950661ull}}, {{1544284927120001456ull, 1500674219960529ull}}, {{4924776756437911488ull, 1200539375968423ull}}, {{4190293995558748056ull, 1920863001549477ull}}, {{14420281640672729416ull, 1536690401239581ull}}, {{7846876497796273208ull, 1229352320991665ull}}, {{12555002396474037136ull, 1966963713586664ull}}, {{13733350731921140032ull, 1573570970869331ull}}, {{7297331770795001700ull, 1258856776695465ull}}, {{11675730833272002724ull, 2014170842712744ull}}, {{13029933481359512500ull, 1611336674170195ull}}, {{10423946785087610000ull, 1289069339336156ull}}, {{9299617226656355356ull, 2062510942937850ull}}, {{7439693781325084284ull, 1650008754350280ull}}, {{5951755025060067428ull, 1320007003480224ull}}, {{16901505669579928532ull, 2112011205568358ull}}, {{2453158091438211856ull, 1689608964454687ull}}, {{13030572917376300452ull, 1351687171563749ull}}, {{9780870223576349756ull, 2162699474501999ull}}, {{11514044993602990128ull, 1730159579601599ull}}, {{12900584809624302424ull, 1384127663681279ull}}, {{9572889251173152912ull, 2214604261890047ull}}, {{279613771454701684ull, 1771683409512038ull}}, {{7602388646647581992ull, 1417346727609630ull}}, {{6081910917318065592ull, 1133877382087704ull}}, {{17109755097192725596ull, 1814203811340326ull}}, {{9998455263012270152ull, 1451363049072261ull}}, {{4309415395667905800ull, 1161090439257809ull}}, {{14273762262552469928ull, 1857744702812494ull}}, {{15108358624783886264ull, 1486195762249995ull}}, {{12086686899827109012ull, 1188956609799996ull}}, {{11960001410239553772ull, 1902330575679994ull}}, {{13257349942933553340ull, 1521864460543995ull}}, {{10605879954346842672ull, 1217491568435196ull}}, {{9590710297471127632ull, 1947986509496314ull}}, {{11361917052718812428ull, 1558389207597051ull}}, {{5400184827433139616ull, 1246711366077641ull}}, {{1261598094409202744ull, 1994738185724226ull}}, {{15766673734495003488ull, 1595790548579380ull}}, {{12613338987596002788ull, 1276632438863504ull}}, {{9113295935927873496ull, 2042611902181607ull}}, {{18358683192968029764ull, 1634089521745285ull}}, {{14686946554374423812ull, 1307271617396228ull}}, {{1363021598547616160ull, 2091634587833966ull}}, {{15847812537805734220ull, 1673307670267172ull}}, {{5299552400760766728ull, 1338646136213738ull}}, {{4789935026475316444ull, 2141833817941981ull}}, {{142599206438342832ull, 1713467054353585ull}}, {{114079365150674264ull, 1370773643482868ull}}, {{14939922243208720120ull, 2193237829572588ull}}, {{883891350341245124ull, 1754590263658071ull}}, {{15464508339240637392ull, 1403672210926456ull}}, {{17364515713301199184ull, 2245875537482330ull}}, {{13891612570640959348ull, 1796700429985864ull}}, {{14802638871254677800ull, 1437360343988691ull}}, {{8152762282261831916ull, 1149888275190953ull}}, {{9355070836877020744ull, 1839821240305525ull}}, {{7484056669501616596ull, 1471856992244420ull}}, {{5987245335601293276ull, 1177485593795536ull}}, {{2200894907478248596ull, 1883976950072858ull}}, {{9139413555466419524ull, 1507181560058286ull}}, {{3622182029631225296ull, 1205745248046629ull}}, {{13174188876893781120ull, 1929192396874606ull}}, {{6850002286773114572ull, 1543353917499685ull}}, {{5480001829418491656ull, 1234683133999748ull}}, {{5078654112327676328ull, 1975493014399597ull}}, {{15130969734087872032ull, 1580394411519677ull}}, {{4726078157786476980ull, 1264315529215742ull}}, {{11251073867200273492ull, 2022904846745187ull}}, {{1622161464276398144ull, 1618323877396150ull}}, {{1297729171421118516ull, 1294659101916920ull}}, {{2076366674273789628ull, 2071454563067072ull}}, {{12729139783644762672ull, 1657163650453657ull}}, {{2804614197431989488ull, 1325730920362926ull}}, {{15555429160116914156ull, 2121169472580681ull}}, {{8754994513351621000ull, 1696935578064545ull}}, {{7003995610681296800ull, 1357548462451636ull}}, {{3827695347606254236ull, 2172077539922618ull}}, {{10440853907568824032ull, 1737662031938094ull}}, {{12042031940796969548ull, 1390129625550475ull}}, {{820507031565599664ull, 2224207400880761ull}}, {{15413800884220121024ull, 1779365920704608ull}}, {{1262994263150365848ull, 1423492736563687ull}}, {{12078441854746023648ull, 1138794189250949ull}}, {{8257460523367906868ull, 1822070702801519ull}}, {{10295317233436235820ull, 1457656562241215ull}}, {{8236253786748988656ull, 1166125249792972ull}}, {{16867354873540292172ull, 1865800399668755ull}}, {{13493883898832233736ull, 1492640319735004ull}}, {{14484455933807697312ull, 1194112255788003ull}}, {{1039036605640853760ull, 1910579609260806ull}}, {{15588624543480324300ull, 1528463687408644ull}}, {{16160248449526169764ull, 1222770949926915ull}}, {{7409653445532320008ull, 1956433519883065ull}}, {{5927722756425856004ull, 1565146815906452ull}}, {{15810224649366415772ull, 1252117452725161ull}}, {{17917661809502444592ull, 2003387924360258ull}}, {{3266083003376224704ull, 1602710339488207ull}}, {{13680912846926710732ull, 1282168271590565ull}}, {{3442716481373185556ull, 2051469234544905ull}}, {{2754173185098548444ull, 1641175387635924ull}}, {{5892687362820749080ull, 1312940310108739ull}}, {{16806997409997019172ull, 2100704496173982ull}}, {{6066900298513794692ull, 1680563596939186ull}}, {{1164171424069125432ull, 1344450877551349ull}}, {{9241371907994421336ull, 2151121404082158ull}}, {{14771795155879357716ull, 1720897123265726ull}}, {{8128087309961575848ull, 1376717698612581ull}}, {{5626242066454700712ull, 2202748317780130ull}}, {{4500993653163760568ull, 1762198654224104ull}}, {{7290143737272918780ull, 1409758923379283ull}}, {{13210812619302155668ull, 1127807138703426ull}}, {{13758602561399628424ull, 1804491421925482ull}}, {{3628184419635882092ull, 1443593137540386ull}}, {{17659942794676346968ull, 1154874510032308ull}}, {{6119815583030693208ull, 1847799216051694ull}}, {{8585201281166464888ull, 1478239372841355ull}}, {{6868161024933171912ull, 1182591498273084ull}}, {{18367755269376895704ull, 1892146397236934ull}}, {{18383553030243426888ull, 1513717117789547ull}}, {{7328144794710920864ull, 1210973694231638ull}}, {{8035682856795563060ull, 1937557910770621ull}}, {{2739197470694540124ull, 1550046328616497ull}}, {{13259404420781363068ull, 1240037062893197ull}}, {{6457651814282539616ull, 1984059300629116ull}}, {{1476772636684121372ull, 1587247440503293ull}}, {{8560115738831117744ull, 1269797952402634ull}}, {{2628138737904057420ull, 2031676723844215ull}}, {{2102510990323245936ull, 1625341379075372ull}}, {{12750055236484327716ull, 1300273103260297ull}}, {{5642693119407283056ull, 2080436965216476ull}}, {{824805680783916120ull, 1664349572173181ull}}, {{15417239803594774188ull, 1331479657738544ull}}, {{13599537241525907736ull, 2130367452381671ull}}, {{7190280978478815864ull, 1704293961905337ull}}, {{16820271227008783660ull, 1363435169524269ull}}, {{15844387518988322888ull, 2181496271238831ull}}, {{8986161200448747988ull, 1745197016991065ull}}, {{7188928960358998388ull, 1396157613592852ull}}, {{15191635151316307748ull, 2233852181748563ull}}, {{1085261676827315228ull, 1787081745398851ull}}, {{15625604600429493476ull, 1429665396319080ull}}, {{12500483680343594780ull, 1143732317055264ull}}, {{8932727444324020680ull, 1829971707288423ull}}, {{14524879584943037188ull, 1463977365830738ull}}, {{551857223728698780ull, 1171181892664591ull}}, {{11951018002191649020ull, 1873891028263345ull}}, {{9560814401753319216ull, 1499112822610676ull}}, {{3959302706660745048ull, 1199290258088541ull}}, {{17402930774882923048ull, 1918864412941665ull}}, {{13922344619906338440ull, 1535091530353332ull}}, {{3759178066441250104ull, 1228073224282666ull}}, {{17082731350531731136ull, 1964917158852265ull}}, {{13666185080425384908ull, 1571933727081812ull}}, {{3554250434856487280ull, 1257546981665450ull}}, {{5686800695770379652ull, 2012075170664720ull}}, {{4549440556616303720ull, 1609660136531776ull}}, {{18396947704260684268ull, 1287728109225420ull}}, {{10988372253107543216ull, 2060364974760673ull}}, {{16169395431969855216ull, 1648291979808538ull}}, {{1867469901350153204ull, 1318633583846831ull}}, {{14055998286385976096ull, 2109813734154929ull}}, {{14934147443850691200ull, 1687850987323943ull}}, {{879271510854821992ull, 1350280789859155ull}}, {{1406834417367715188ull, 2160449263774648ull}}, {{8504165163377992796ull, 1728359411019718ull}}, {{14182029760186214884ull, 1382687528815774ull}}, {{11623201172072212844ull, 2212300046105239ull}}, {{12987909752399680596ull, 1769840036884191ull}}, {{6700978987177834156ull, 1415872029507353ull}}, {{12739480819226087968ull, 1132697623605882ull}}, {{5625774051794099460ull, 1812316197769412ull}}, {{15568665685661010536ull, 1449852958215529ull}}, {{16144281363270718752ull, 1159882366572423ull}}, {{3694757292781688064ull, 1855811786515878ull}}, {{10334503463709171100ull, 1484649429212702ull}}, {{888905141483516232ull, 1187719543370162ull}}, {{5111597041115536296ull, 1900351269392259ull}}, {{7778626447634339360ull, 1520281015513807ull}}, {{17290947602333202456ull, 1216224812411045ull}}, {{9218772090023572316ull, 1945959699857673ull}}, {{14753715301502678500ull, 1556767759886138ull}}, {{734925796976411828ull, 1245414207908911ull}}, {{12243927719387989896ull, 1992662732654257ull}}, {{2416444546026571272ull, 1594130186123406ull}}, {{16690550895788898308ull, 1275304148898724ull}}, {{15636834989036506324ull, 2040486638237959ull}}, {{16198816805971115384ull, 1632389310590367ull}}, {{5580355815293071660ull, 1305911448472294ull}}, {{16307266933952735304ull, 2089458317555670ull}}, {{13045813547162188244ull, 1671566654044536ull}}, {{6747302022987840272ull, 1337253323235629ull}}, {{18174380866264365080ull, 2139605317177006ull}}, {{10850155878269581740ull, 1711684253741605ull}}, {{8680124702615665392ull, 1369347402993284ull}}, {{2820153079959333660ull, 2190955844789255ull}}, {{2256122463967466928ull, 1752764675831404ull}}, {{5494246785915883864ull, 1402211740665123ull}}, {{5101446042723503860ull, 2243538785064197ull}}, {{15149203278404534056ull, 1794831028051357ull}}, {{4740664993239806600ull, 1435864822441086ull}}, {{103183179849934956ull, 1148691857952869ull}}, {{7543790717243716576ull, 1837906972724590ull}}, {{6035032573794973260ull, 1470325578179672ull}}, {{15896072503261709580ull, 1176260462543737ull}}, {{10676320746251094032ull, 1882016740069980ull}}, {{8541056597000875228ull, 1505613392055984ull}}, {{10522194092342610504ull, 1204490713644787ull}}, {{2078115288780535516ull, 1927185141831660ull}}, {{1662492231024428412ull, 1541748113465328ull}}, {{8708691414303363376ull, 1233398490772262ull}}, {{17623255077627291724ull, 1973437585235619ull}}, {{17787952876843743704ull, 1578750068188495ull}}, {{14230362301474994960ull, 1263000054550796ull}}, {{15389882052876171292ull, 2020800087281274ull}}, {{16001254457042847356ull, 1616640069825019ull}}, {{16490352380376188208ull, 1293312055860015ull}}, {{7937819734892349520ull, 2069299289376025ull}}, {{6350255787913879616ull, 1655439431500820ull}}, {{5080204630331103692ull, 1324351545200656ull}}, {{749629779045945260ull, 2118962472321050ull}}, {{599703823236756208ull, 1695169977856840ull}}, {{479763058589404968ull, 1356135982285472ull}}, {{4456969708484958272ull, 2169817571656755ull}}, {{3565575766787966616ull, 1735854057325404ull}}, {{6541809428172283616ull, 1388683245860323ull}}, {{6777546270333743464ull, 2221893193376517ull}}, {{16490083460492725740ull, 1777514554701213ull}}, {{2124020324168449620ull, 1422011643760971ull}}, {{16456611518302400988ull, 1137609315008776ull}}, {{505136726090469324ull, 1820174904014043ull}}, {{7782807010356196104ull, 1456139923211234ull}}, {{9915594423026867208ull, 1164911938568987ull}}, {{1107555817875346240ull, 1863859101710380ull}}, {{886044654300276992ull, 1491087281368304ull}}, {{4398184538182131916ull, 1192869825094643ull}}, {{3347746446349500740ull, 1908591720151429ull}}, {{6367545971821510916ull, 1526873376121143ull}}, {{12472734406941029380ull, 1221498700896914ull}}, {{8888328606879916040ull, 1954397921435063ull}}, {{14489360514987753476ull, 1563518337148050ull}}, {{11591488411990202780ull, 1250814669718440ull}}, {{99637385474772836ull, 2001303471549505ull}}, {{79709908379818268ull, 1601042777239604ull}}, {{3753116741445764936ull, 1280834221791683ull}}, {{2315637971571313576ull, 2049334754866693ull}}, {{9231208006740871508ull, 1639467803893354ull}}, {{11074315220134607528ull, 1311574243114683ull}}, {{14029555537473461724ull, 2098518788983493ull}}, {{155597985753038408ull, 1678815031186795ull}}, {{124478388602430728ull, 1343052024949436ull}}, {{11267211865989620132ull, 2148883239919097ull}}, {{1635071863307875460ull, 1719106591935278ull}}, {{8686755120130121012ull, 1375285273548222ull}}, {{17588157006950103948ull, 2200456437677155ull}}, {{14070525605560083156ull, 1760365150141724ull}}, {{14945769299189976848ull, 1408292120113379ull}}, {{15645964254093891800ull, 1126633696090703ull}}, {{2897449918098764944ull, 1802613913745126ull}}, {{17075355193446653248ull, 1442091130996100ull}}, {{13660284154757322596ull, 1153672904796880ull}}, {{3409710573902164540ull, 1845876647675009ull}}, {{6417117273863641956ull, 1476701318140007ull}}, {{16201740263316644536ull, 1181361054512005ull}}, {{7476040347597079640ull, 1890177687219209ull}}, {{9670181092819574036ull, 1512142149775367ull}}, {{357447244771838580ull, 1209713719820294ull}}, {{7950613221118762376ull, 1935541951712470ull}}, {{6360490576895009900ull, 1548433561369976ull}}, {{1399043646774097596ull, 1238746849095981ull}}, {{13306516279064287128ull, 1981994958553569ull}}, {{14334561837993340024ull, 1585595966842855ull}}, {{11467649470394672020ull, 1268476773474284ull}}, {{7280192708405744264ull, 2029562837558855ull}}, {{5824154166724595408ull, 1623650270047084ull}}, {{8348672148121586652ull, 1298920216037667ull}}, {{17047224251736448964ull, 2078272345660267ull}}, {{6259081771905338524ull, 1662617876528214ull}}, {{8696614232266181144ull, 1330094301222571ull}}, {{6535885142142069184ull, 2128150881956114ull}}, {{8918056928455565668ull, 1702520705564891ull}}, {{3445096728022542212ull, 1362016564451913ull}}, {{1822805950094157216ull, 2179226503123061ull}}, {{16215640019042967068ull, 1743381202498448ull}}, {{1904465571008642684ull, 1394704961998759ull}}, {{10425842543097648940ull, 2231527939198014ull}}, {{12030022849220029476ull, 1785222351358411ull}}, {{5934669464634113256ull, 1428177881086729ull}}, {{8437084386449200928ull, 1142542304869383ull}}, {{9809986203576811164ull, 1828067687791013ull}}, {{15226686592345269576ull, 1462454150232810ull}}, {{12181349273876215660ull, 1169963320186248ull}}, {{15800810023460034736ull, 1871941312297997ull}}, {{5261950389284207140ull, 1497553049838398ull}}, {{11588257940911186360ull, 1198042439870718ull}}, {{14851863890715987852ull, 1916867903793149ull}}, {{15570839927314700604ull, 1533494323034519ull}}, {{16146020756593670808ull, 1226795458427615ull}}, {{7386889136840321676ull, 1962872733484185ull}}, {{5909511309472257340ull, 1570298186787348ull}}, {{12106306677061626516ull, 1256238549429878ull}}, {{15680741868556692108ull, 2009981679087805ull}}, {{12544593494845353684ull, 1607985343270244ull}}, {{13725023610618193272ull, 1286388274616195ull}}, {{3513293703279557620ull, 2058221239385913ull}}, {{10189332592107466740ull, 1646576991508730ull}}, {{8151466073685973392ull, 1317261593206984ull}}, {{1974299273671826460ull, 2107618549131175ull}}, {{1579439418937461168ull, 1686094839304940ull}}, {{1263551535149968932ull, 1348875871443952ull}}, {{5711031270981860616ull, 2158201394310323ull}}, {{11947522646269309140ull, 1726561115448258ull}}, {{16936715746499267956ull, 1381248892358606ull}}, {{1273303491205456472ull, 2209998227773771ull}}, {{15776038051932006468ull, 1767998582219016ull}}, {{8931481626803694852ull, 1414398865775213ull}}, {{14523882930926776528ull, 1131519092620170ull}}, {{4791468615773290828ull, 1810430548192273ull}}, {{11211872522102453308ull, 1448344438553818ull}}, {{16348195647165783292ull, 1158675550843054ull}}, {{15089066591239522300ull, 1853880881348887ull}}, {{4692555643507797196ull, 1483104705079110ull}}, {{3754044514806237756ull, 1186483764063288ull}}, {{2317122408948070088ull, 1898374022501261ull}}, {{16611093186126097360ull, 1518699218001008ull}}, {{2220828104675146920ull, 1214959374400807ull}}, {{7242673782222145396ull, 1943934999041291ull}}, {{2104790211035805992ull, 1555147999233033ull}}, {{9062529798312465440ull, 1244118399386426ull}}, {{7121350047816124060ull, 1990589439018282ull}}, {{16765126482478630216ull, 1592471551214625ull}}, {{13412101185982904172ull, 1273977240971700ull}}, {{3012617823863095060ull, 2038363585554721ull}}, {{17167489518058117340ull, 1630690868443776ull}}, {{10044642799704583548ull, 1304552694755021ull}}, {{8692730850043513032ull, 2087284311608034ull}}, {{10643533494776720748ull, 1669827449286427ull}}, {{1136129166337555952ull, 1335861959429142ull}}, {{5507155480881999848ull, 2137379135086627ull}}, {{15473770828931330848ull, 1709903308069301ull}}, {{8689667848403154356ull, 1367922646455441ull}}, {{6524770927961226324ull, 2188676234328706ull}}, {{1530467927627070736ull, 1750940987462965ull}}, {{1224374342101656588ull, 1400752789970372ull}}, {{5648347762104560864ull, 2241204463952595ull}}, {{4518678209683648692ull, 1792963571162076ull}}, {{18372337826714560244ull, 1434370856929660ull}}, {{14697870261371648196ull, 1147496685543728ull}}, {{1380499529743175176ull, 1835994696869966ull}}, {{15861794882762181432ull, 1468795757495972ull}}, {{5310738276725924500ull, 1175036605996778ull}}, {{4807832428019568876ull, 1880058569594845ull}}, {{3846265942415655100ull, 1504046855675876ull}}, {{17834408012900165372ull, 1203237484540700ull}}, {{10088308746930712984ull, 1925179975265121ull}}, {{4381298182802660064ull, 1540143980212097ull}}, {{14573084990467859020ull, 1232115184169677ull}}, {{8559540725780933140ull, 1971384294671484ull}}, {{10536981395366656836ull, 1577107435737187ull}}, {{1050887486809504820ull, 1261685948589750ull}}, {{1681419978895207716ull, 2018697517743600ull}}, {{1345135983116166172ull, 1614958014194880ull}}, {{1076108786492932936ull, 1291966411355904ull}}, {{9100471687872513344ull, 2067146258169446ull}}, {{3591028535556100352ull, 1653717006535557ull}}, {{13940869272670611252ull, 1322973605228445ull}}, {{3858646762563426388ull, 2116757768365513ull}}, {{10465615039534561756ull, 1693406214692410ull}}, {{8372492031627649404ull, 1354724971753928ull}}, {{9706638435862328724ull, 2167559954806285ull}}, {{7765310748689862980ull, 1734047963845028ull}}, {{13590946228435711028ull, 1387238371076022ull}}, {{6988118706529496356ull, 2219581393721636ull}}, {{1901146150481686760ull, 1775665114977309ull}}, {{5210265735127259732ull, 1420532091981847ull}}, {{15236259032327538756ull, 1136425673585477ull}}, {{9620619192756420716ull, 1818281077736764ull}}, {{11385844168947046896ull, 1454624862189411ull}}, {{5419326520415727192ull, 1163699889751529ull}}, {{16049620062148984156ull, 1861919823602446ull}}, {{9150347234977277000ull, 1489535858881957ull}}, {{18388324232207552572ull, 1191628687105565ull}}, {{10974574697822532496ull, 1906605899368905ull}}, {{8779659758258025996ull, 1525284719495124ull}}, {{10713076621348331120ull, 1220227775596099ull}}, {{6072876149931598824ull, 1952364440953759ull}}, {{8547649734687189384ull, 1561891552763007ull}}, {{17906166231975482476ull, 1249513242210405ull}}, {{10203121897451220344ull, 1999221187536649ull}}, {{11851846332702886600ull, 1599376950029319ull}}, {{13170825880904219604ull, 1279501560023455ull}}, {{2626577335737199748ull, 2047202496037529ull}}, {{5790610683331670124ull, 1637761996830023ull}}, {{12011186176149156744ull, 1310209597464018ull}}, {{15528549067096740468ull, 2096335355942429ull}}, {{16112188068419302696ull, 1677068284753943ull}}, {{1821704010509711188ull, 1341654627803155ull}}, {{2914726416815537900ull, 2146647404485048ull}}, {{9710478762936250968ull, 1717317923588038ull}}, {{15147080639832821420ull, 1373854338870430ull}}, {{5788584950022962656ull, 2198166942192689ull}}, {{8320216774760280448ull, 1758533553754151ull}}, {{2966824605066314036ull, 1406826843003321ull}}, {{15814965812331833428ull, 2250922948805313ull}}, {{1583926205639735772ull, 1800738359044251ull}}, {{16024536223479429908ull, 1440590687235400ull}}, {{12819628978783543928ull, 1152472549788320ull}}, {{2064662292344118668ull, 1843956079661313ull}}, {{9030427463359115580ull, 1475164863729050ull}}, {{7224341970687292464ull, 1180131890983240ull}}, {{11558947153099667944ull, 1888211025573184ull}}, {{12936506537221644680ull, 1510568820458547ull}}, {{2970507600293495096ull, 1208455056366838ull}}, {{1063463345727681832ull, 1933528090186941ull}}, {{15608165935549786756ull, 1546822472149552ull}}, {{5107835118956008760ull, 1237457977719642ull}}, {{11861885005071524340ull, 1979932764351427ull}}, {{2110810374573398824ull, 1583946211481142ull}}, {{12756694743884450028ull, 1267156969184913ull}}, {{16721362775473209724ull, 2027451150695861ull}}, {{9687741405636657456ull, 1621960920556689ull}}, {{11439541939251236288ull, 1297568736445351ull}}, {{10924569473318157416ull, 2076109978312562ull}}, {{1360957949170705284ull, 1660887982650050ull}}, {{1088766359336564228ull, 1328710386120040ull}}, {{1742026174938502764ull, 2125936617792064ull}}, {{5082969754692712536ull, 1700749294233651ull}}, {{377026989012259704ull, 1360599435386921ull}}, {{11671289626645346496ull, 2176959096619073ull}}, {{16715729330800097844ull, 1741567277295258ull}}, {{2304537020414347304ull, 1393253821836207ull}}, {{7376608047404866012ull, 2229206114937931ull}}, {{2211937623181982488ull, 1783364891950345ull}}, {{1769550098545585988ull, 1426691913560276ull}}, {{16173035337804110084ull, 1141353530848220ull}}, {{7430112466777024520ull, 1826165649357153ull}}, {{13322787602905440260ull, 1460932519485722ull}}, {{3279532452840531564ull, 1168746015588578ull}}, {{1557903109802940176ull, 1869993624941725ull}}, {{1246322487842352140ull, 1495994899953380ull}}, {{997057990273881712ull, 1196795919962704ull}}, {{8973990413922031388ull, 1914873471940326ull}}, {{3489843516395714788ull, 1531898777552261ull}}, {{17549270072084213120ull, 1225519022041808ull}}, {{5942739226883279056ull, 1960830435266894ull}}, {{8443540196248533568ull, 1568664348213515ull}}, {{6754832156998826856ull, 1254931478570812ull}}, {{14497080265940033292ull, 2007890365713299ull}}, {{15287013027493936956ull, 1606312292570639ull}}, {{15918959236737059888ull, 1285049834056511ull}}, {{18091637149295475176ull, 2056079734490418ull}}, {{3405263275210649168ull, 1644863787592335ull}}, {{2724210620168519336ull, 1315891030073868ull}}, {{669388177527720616ull, 2105425648118189ull}}, {{4224859356764086816ull, 1684340518494551ull}}, {{18137282744378910744ull, 1347472414795640ull}}, {{10572908317296705576ull, 2155955863673025ull}}, {{8458326653837364460ull, 1724764690938420ull}}, {{6766661323069891568ull, 1379811752750736ull}}, {{3447960487428005864ull, 2207698804401178ull}}, {{10137066019426225336ull, 1766159043520942ull}}, {{730955186057159624ull, 1412927234816754ull}}, {{4274112963587638020ull, 1130341787853403ull}}, {{3149231926998310512ull, 1808546860565445ull}}, {{2519385541598648408ull, 1446837488452356ull}}, {{16772903692246560020ull, 1157469990761884ull}}, {{15768599463368765064ull, 1851951985219015ull}}, {{12614879570695012048ull, 1481561588175212ull}}, {{2713206027072188992ull, 1185249270540170ull}}, {{4341129643315502388ull, 1896398832864272ull}}, {{14540950158878132880ull, 1517119066291417ull}}, {{4254062497618685656ull, 1213695253033134ull}}, {{14185197625673717700ull, 1941912404853014ull}}, {{15037506915280884484ull, 1553529923882411ull}}, {{8340656717482797264ull, 1242823939105929ull}}, {{2277004303746744652ull, 1988518302569487ull}}, {{12889649887223126692ull, 1590814642055589ull}}, {{14001068724520411676ull, 1272651713644471ull}}, {{15023012329748838036ull, 2036242741831154ull}}, {{15707758678540980752ull, 1628994193464923ull}}, {{1498160498607053632ull, 1303195354771939ull}}, {{9775754427255106456ull, 2085112567635102ull}}, {{441905912320264520ull, 1668090054108082ull}}, {{11421571174081942584ull, 1334472043286465ull}}, {{18274513878531108136ull, 2135155269258344ull}}, {{18308959917566796832ull, 1708124215406675ull}}, {{14647167934053437464ull, 1366499372325340ull}}, {{4988724620775948328ull, 2186398995720545ull}}, {{3990979696620758664ull, 1749119196576436ull}}, {{17950179016264248224ull, 1399295357261148ull}}, {{6584193537571335220ull, 2238872571617838ull}}, {{12646052459540888820ull, 1791098057294270ull}}, {{10116841967632711056ull, 1432878445835416ull}}, {{4404124759364258520ull, 1146302756668333ull}}, {{3357250800240903312ull, 1834084410669333ull}}, {{10064498269676543296ull, 1467267528535466ull}}, {{4362249800999324312ull, 1173814022828373ull}}, {{3290250866857008580ull, 1878102436525397ull}}, {{13700247137711337832ull, 1502481949220317ull}}, {{3581500080685249620ull, 1201985559376254ull}}, {{13109097758580220040ull, 1923176895002006ull}}, {{6797929392122265708ull, 1538541516001605ull}}, {{5438343513697812564ull, 1230833212801284ull}}, {{16080047251400320752ull, 1969333140482054ull}}, {{16553386615862166924ull, 1575466512385643ull}}, {{2174662848464002568ull, 1260373209908515ull}}, {{3479460557542404112ull, 2016597135853624ull}}, {{6472917260775833612ull, 1613277708682899ull}}, {{8867682623362577212ull, 1290622166946319ull}}, {{3120245753154392572ull, 2064995467114111ull}}, {{17253591861491155352ull, 1651996373691288ull}}, {{2734827044967193312ull, 1321597098953031ull}}, {{15443769716173240268ull, 2114555358324849ull}}, {{16044364587680502536ull, 1691644286659879ull}}, {{16524840484886312352ull, 1353315429327903ull}}, {{4303651887366637824ull, 2165304686924646ull}}, {{18200316768860951552ull, 1732243749539716ull}}, {{10870904600346850920ull, 1385794999631773ull}}, {{13704098545813051148ull, 2217271999410837ull}}, {{3584581207166620272ull, 1773817599528670ull}}, {{2867664965733296216ull, 1419054079622936ull}}, {{17051527231554278264ull, 1135243263698348ull}}, {{5146350682035383288ull, 1816389221917358ull}}, {{11495778175112127276ull, 1453111377533886ull}}, {{5507273725347791496ull, 1162489102027109ull}}, {{16190335590040287044ull, 1859982563243374ull}}, {{16641617286774139956ull, 1487986050594699ull}}, {{17002642644161222288ull, 1190388840475759ull}}, {{16136181786432224692ull, 1904622144761215ull}}, {{12908945429145779752ull, 1523697715808972ull}}, {{2948458713832803156ull, 1218958172647178ull}}, {{1028185127390574728ull, 1950333076235485ull}}, {{822548101912459780ull, 1560266460988388ull}}, {{8036736111013788472ull, 1248213168790710ull}}, {{12858777777622061556ull, 1997141070065136ull}}, {{6597673407355738920ull, 1597712856052109ull}}, {{8967487540626501460ull, 1278170284841687ull}}, {{18037328879744312660ull, 2045072455746699ull}}, {{18119211918537360452ull, 1636057964597359ull}}, {{18184718349571798684ull, 1308846371677887ull}}, {{14338154100347236600ull, 2094154194684620ull}}, {{11470523280277789280ull, 1675323355747696ull}}, {{5487069809480321100ull, 1340258684598157ull}}, {{12468660509910424088ull, 2144413895357051ull}}, {{6285579593186428944ull, 1715531116285641ull}}, {{1339114859807232832ull, 1372424893028513ull}}, {{16899979034659213828ull, 2195879828845620ull}}, {{13519983227727371060ull, 1756703863076496ull}}, {{7126637767439986524ull, 1405363090461197ull}}, {{15091969242645888764ull, 2248580944737915ull}}, {{12073575394116711012ull, 1798864755790332ull}}, {{2280162685809548164ull, 1439091804632266ull}}, {{16581525407615279824ull, 1151273443705812ull}}, {{11773045393216806424ull, 1842037509929300ull}}, {{9418436314573445140ull, 1473630007943440ull}}, {{7534749051658756112ull, 1178904006354752ull}}, {{15744947297395920100ull, 1886246410167603ull}}, {{1527911393691005112ull, 1508997128134083ull}}, {{8601026744436624736ull, 1207197702507266ull}}, {{6382945161614778932ull, 1931516324011626ull}}, {{1417007314549912820ull, 1545213059209301ull}}, {{15891001110607571548ull, 1236170447367440ull}}, {{6978857703262562864ull, 1977872715787905ull}}, {{5583086162610050292ull, 1582298172630324ull}}, {{8155817744829950556ull, 1265838538104259ull}}, {{1981261947502189920ull, 2025341660966815ull}}, {{1585009558001751936ull, 1620273328773452ull}}, {{12336054090627132516ull, 1296218663018761ull}}, {{12358988915519591384ull, 2073949860830018ull}}, {{17265888761899493752ull, 1659159888664014ull}}, {{17502059824261505324ull, 1327327910931211ull}}, {{2177854015625036260ull, 2123724657489939ull}}, {{5431632027241939328ull, 1698979725991951ull}}, {{655956807051641140ull, 1359183780793561ull}}, {{12117577335508356796ull, 2174694049269697ull}}, {{2315364238922864788ull, 1739755239415758ull}}, {{9230989020622112476ull, 1391804191532606ull}}, {{7390884803511559320ull, 2226886706452170ull}}, {{5912707842809247456ull, 1781509365161736ull}}, {{1040817459505487640ull, 1425207492129389ull}}, {{4522002782346300436ull, 1140165993703511ull}}, {{18303250895979811668ull, 1824265589925617ull}}, {{7263903087300028688ull, 1459412471940494ull}}, {{9500471284581933272ull, 1167529977552395ull}}, {{15200754055331093236ull, 1868047964083832ull}}, {{4781905614781053940ull, 1494438371267066ull}}, {{136175677082932828ull, 1195550697013653ull}}, {{14975276342300333820ull, 1912881115221844ull}}, {{15669569888582177380ull, 1530304892177475ull}}, {{12535655910865741904ull, 1224243913741980ull}}, {{1610305383675635432ull, 1958790261987169ull}}, {{4977593121682418668ull, 1567032209589735ull}}, {{3982074497345934932ull, 1253625767671788ull}}, {{2681970381011585572ull, 2005801228274861ull}}, {{16902971563776909752ull, 1604640982619888ull}}, {{2454330806795796832ull, 1283712786095911ull}}, {{14994975735099005900ull, 2053940457753457ull}}, {{4617282958595384072ull, 1643152366202766ull}}, {{4477552134396936ull, 1314521892962213ull}}, {{14764559342382676388ull, 2103235028739540ull}}, {{11811647473906141112ull, 1682588022991632ull}}, {{2070620349641092240ull, 1346070418393306ull}}, {{14381039003651478556ull, 2153712669429289ull}}, {{15194180017663093168ull, 1722970135543431ull}}, {{8465995199388564212ull, 1378376108434745ull}}, {{13545592319021702740ull, 2205401773495592ull}}, {{3457776225733541544ull, 1764321418796474ull}}, {{6455569795328743560ull, 1411457135037179ull}}, {{8853804651004905168ull, 1129165708029743ull}}, {{10476738626865937948ull, 1806665132847589ull}}, {{12070739716234660684ull, 1445332106278071ull}}, {{5967242958245818224ull, 1156265685022457ull}}, {{13236937547935219480ull, 1850025096035931ull}}, {{6900201223606265260ull, 1480020076828745ull}}, {{5520160978885012208ull, 1184016061462996ull}}, {{1453559936732198888ull, 1894425698340794ull}}, {{4852196764127669432ull, 1515540558672635ull}}, {{3881757411302135544ull, 1212432446938108ull}}, {{2521463043341506552ull, 1939891915100973ull}}, {{9395868064157025888ull, 1551913532080778ull}}, {{14895392080809441356ull, 1241530825664622ull}}, {{9075232070327464876ull, 1986449321063396ull}}, {{3570836841520061580ull, 1589159456850717ull}}, {{13924715917441780232ull, 1271327565480573ull}}, {{143452579455386432ull, 2034124104768918ull}}, {{7493459693048129792ull, 1627299283815134ull}}, {{9684116569180414156ull, 1301839427052107ull}}, {{737191251721021360ull, 2082943083283372ull}}, {{11657799445602548056ull, 1666354466626697ull}}, {{1947541926998217800ull, 1333083573301358ull}}, {{17873462342164789772ull, 2132933717282172ull}}, {{6920072244248011172ull, 1706346973825738ull}}, {{12914755424882229584ull, 1365077579060590ull}}, {{2216864606102015716ull, 2184124126496945ull}}, {{1773491684881612572ull, 1747299301197556ull}}, {{16176188606872931352ull, 1397839440958044ull}}, {{14813855326770959192ull, 2236543105532871ull}}, {{8161735446674857032ull, 1789234484426297ull}}, {{17597434801565616596ull, 1431387587541037ull}}, {{6699250211768672628ull, 1145110070032830ull}}, {{10718800338829876208ull, 1832176112052528ull}}, {{15953737900547721612ull, 1465740889642022ull}}, {{5384292690954356644ull, 1172592711713618ull}}, {{4925519490785060304ull, 1876148338741789ull}}, {{7629764407369958568ull, 1500918670993431ull}}, {{2414462711154056532ull, 1200734936794745ull}}, {{3863140337846490448ull, 1921175898871592ull}}, {{14158558714502923328ull, 1536940719097273ull}}, {{258800527376607692ull, 1229552575277819ull}}, {{7792778473286392956ull, 1967284120444510ull}}, {{6234222778629114364ull, 1573827296355608ull}}, {{12366075852387112136ull, 1259061837084486ull}}, {{12407023734335558776ull, 2014498939335178ull}}, {{17304316616952267668ull, 1611599151468142ull}}, {{6464755664077993488ull, 1289279321174514ull}}, {{17722306692008610224ull, 2062846913879222ull}}, {{6799147724123067532ull, 1650277531103378ull}}, {{12818015808782274672ull, 1320222024882702ull}}, {{5751430035083998184ull, 2112355239812324ull}}, {{8290492842809108872ull, 1689884191849859ull}}, {{10321743088989197420ull, 1351907353479887ull}}, {{1757393683415074580ull, 2163051765567820ull}}, {{1405914946732059664ull, 1730441412454256ull}}, {{15882127216353289024ull, 1384353129963404ull}}, {{14343357101939531468ull, 2214965007941447ull}}, {{4095988052067804528ull, 1771972006353158ull}}, {{10655488071138064268ull, 1417577605082526ull}}, {{4835041642168541092ull, 1134062084066021ull}}, {{357368997985845100ull, 1814499334505634ull}}, {{3975244013130586404ull, 1451599467604507ull}}, {{14248241654730200092ull, 1161279574083605ull}}, {{4350442573858768532ull, 1858047318533769ull}}, {{7169702873828925148ull, 1486437854827015ull}}, {{5735762299063140120ull, 1189150283861612ull}}, {{12866568493242934512ull, 1902640454178579ull}}, {{13982603609336257932ull, 1522112363342863ull}}, {{118036443243275376ull, 1217689890674291ull}}, {{11256904753414971576ull, 1948303825078865ull}}, {{9005523802731977260ull, 1558643060063092ull}}, {{18272465486411312776ull, 1246914448050473ull}}, {{7099851889806638504ull, 1995063116880758ull}}, {{13058579141329131448ull, 1596050493504606ull}}, {{6757514498321394836ull, 1276840394803685ull}}, {{10812023197314231740ull, 2042944631685896ull}}, {{4960269743109475068ull, 1634355705348717ull}}, {{15036262238713311024ull, 1307484564278973ull}}, {{1921926693489835700ull, 2091975302846358ull}}, {{8916238984275689204ull, 1673580242277086ull}}, {{3443642372678641040ull, 1338864193821669ull}}, {{12888525425769646312ull, 2142182710114670ull}}, {{10310820340615717048ull, 1713746168091736ull}}, {{4559307457750663316ull, 1370996934473389ull}}, {{14673589561884881952ull, 2193595095157422ull}}, {{4360174020024084916ull, 1754876076125938ull}}, {{10866836845503088580ull, 1403900860900750ull}}, {{17386938952804941728ull, 2246241377441200ull}}, {{13909551162243953380ull, 1796993101952960ull}}, {{11127640929795162704ull, 1437594481562368ull}}, {{16280810373319950808ull, 1150075585249894ull}}, {{14981250153086190328ull, 1840120936399831ull}}, {{8295651307727041936ull, 1472096749119865ull}}, {{6636521046181633548ull, 1177677399295892ull}}, {{14307782488632524004ull, 1884283838873427ull}}, {{4067528361422198556ull, 1507427071098742ull}}, {{14322069133363489816ull, 1205941656878993ull}}, {{779217724930121764ull, 1929506651006390ull}}, {{623374179944097412ull, 1543605320805112ull}}, {{11566745788181008900ull, 1234884256644089ull}}, {{7438746816863883268ull, 1975814810630543ull}}, {{13329695082974927260ull, 1580651848504434ull}}, {{14353104881121852132ull, 1264521478803547ull}}, {{8207572550827322120ull, 2023234366085676ull}}, {{2876709225919947372ull, 1618587492868541ull}}, {{17058762639703599192ull, 1294869994294832ull}}, {{12536624964558117412ull, 2071791990871732ull}}, {{2650602342162673284ull, 1657433592697386ull}}, {{16877877132697779920ull, 1325946874157908ull}}, {{4868510523864985932ull, 2121514998652654ull}}, {{7584157233833899068ull, 1697211998922123ull}}, {{13446023416550939900ull, 1357769599137698ull}}, {{17824288651739593520ull, 2172431358620317ull}}, {{6880733291907854168ull, 1737945086896254ull}}, {{9193935448268193656ull, 1390356069517003ull}}, {{11020947902487199532ull, 2224569711227205ull}}, {{8816758321989759624ull, 1779655768981764ull}}, {{10742755472333718024ull, 1423724615185411ull}}, {{4904855563125064096ull, 1138979692148329ull}}, {{15226466530483923200ull, 1822367507437326ull}}, {{8491824409645228236ull, 1457894005949861ull}}, {{3104110712974272264ull, 1166315204759889ull}}, {{12345274770242656272ull, 1866104327615822ull}}, {{2497522186710304368ull, 1492883462092658ull}}, {{9376715378852064140ull, 1194306769674126ull}}, {{7624046976679481980ull, 1910890831478602ull}}, {{17167284025569316556ull, 1528712665182881ull}}, {{10044478405713542920ull, 1222970132146305ull}}, {{16071165449141668672ull, 1956752211434088ull}}, {{1788885915087603968ull, 1565401769147271ull}}, {{16188503991037724468ull, 1252321415317816ull}}, {{76164682466986888ull, 2003714264508507ull}}, {{11128978190199320480ull, 1602971411606805ull}}, {{8903182552159456384ull, 1282377129285444ull}}, {{3177045639229399244ull, 2051803406856711ull}}, {{17299031770351160688ull, 1641442725485368ull}}, {{2771178972055197580ull, 1313154180388295ull}}, {{4433886355288316128ull, 2101046688621272ull}}, {{14615155528456383872ull, 1680837350897017ull}}, {{4313426793281286452ull, 1344669880717614ull}}, {{14280180498733878968ull, 2151471809148182ull}}, {{4045446769503282528ull, 1721177447318546ull}}, {{17993752674570267316ull, 1376941957854836ull}}, {{2964562576119055444ull, 2203107132567739ull}}, {{6060998875637154676ull, 1762485706054191ull}}, {{1159450285767813416ull, 1409988564843353ull}}, {{8306257858098071380ull, 1127990851874682ull}}, {{16979361387698824532ull, 1804785362999491ull}}, {{9894140295417149304ull, 1443828290399593ull}}, {{15294009865817540088ull, 1155062632319674ull}}, {{13402369341082333172ull, 1848100211711479ull}}, {{14411244287607776860ull, 1478480169369183ull}}, {{460948985860490520ull, 1182784135495347ull}}, {{4426867192118695156ull, 1892454616792555ull}}, {{3541493753694956124ull, 1513963693434044ull}}, {{6522543817697875220ull, 1211170954747235ull}}, {{10436070108316600356ull, 1937873527595576ull}}, {{4659507271911369960ull, 1550298822076461ull}}, {{38257002787185644ull, 1240239057661169ull}}, {{7439908833943317680ull, 1984382492257870ull}}, {{5951927067154654144ull, 1587505993806296ull}}, {{1072192838981812992ull, 1270004795045037ull}}, {{5404857357112811108ull, 2032007672072059ull}}, {{8013234700432159212ull, 1625606137657647ull}}, {{17478634204571458336ull, 1300484910126117ull}}, {{13208419468346692048ull, 2080775856201788ull}}, {{17945433204161174284ull, 1664620684961430ull}}, {{14356346563328939428ull, 1331696547969144ull}}, {{11902108057100572116ull, 2130714476750631ull}}, {{5832337630938547368ull, 1704571581400505ull}}, {{4665870104750837896ull, 1363657265120404ull}}, {{14844089797085161280ull, 2181851624192646ull}}, {{8185923022926218700ull, 1745481299354117ull}}, {{17616784862566705928ull, 1396385039483293ull}}, {{6050762891655267548ull, 2234216063173270ull}}, {{4840610313324214040ull, 1787372850538616ull}}, {{183139435917460908ull, 1429898280430893ull}}, {{7525209178217789372ull, 1143918624344714ull}}, {{972288240922732028ull, 1830269798951543ull}}, {{8156528222222006268ull, 1464215839161234ull}}, {{10214571392519515336ull, 1171372671328987ull}}, {{1585918969063583248ull, 1874196274126380ull}}, {{1268735175250866596ull, 1499357019301104ull}}, {{4704336954942603600ull, 1199485615440883ull}}, {{3837590313166255440ull, 1919176984705413ull}}, {{10448769880016824996ull, 1535341587764330ull}}, {{8359015904013459996ull, 1228273270211464ull}}, {{2306379002195805028ull, 1965237232338343ull}}, {{9223800831240464668ull, 1572189785870674ull}}, {{11068389479734282056ull, 1257751828696539ull}}, {{6641376723349120324ull, 2012402925914463ull}}, {{12691799008163116904ull, 1609922340731570ull}}, {{10153439206530493524ull, 1287937872585256ull}}, {{8866805100964968992ull, 2060700596136410ull}}, {{7093444080771975192ull, 1648560476909128ull}}, {{13053452894101400800ull, 1318848381527302ull}}, {{6128129371594599988ull, 2110157410443684ull}}, {{8591852312017590312ull, 1688125928354947ull}}, {{17941528293839803220ull, 1350500742683957ull}}, {{13949050011176043860ull, 2160801188294332ull}}, {{3780542379457014440ull, 1728640950635466ull}}, {{17781829162533252844ull, 1382912760508372ull}}, {{13693531401085563260ull, 2212660416813396ull}}, {{7265476306126540284ull, 1770128333450717ull}}, {{16880427489126963196ull, 1416102666760573ull}}, {{2436295547075839588ull, 1132882133408459ull}}, {{11276770504805163988ull, 1812611413453534ull}}, {{12710765218586041512ull, 1450089130762827ull}}, {{2789914545385012564ull, 1160071304610262ull}}, {{8153212087357930428ull, 1856114087376419ull}}, {{10211918484628254664ull, 1484891269901135ull}}, {{8169534787702603732ull, 1187913015920908ull}}, {{9381906845582255648ull, 1900660825473453ull}}, {{14884223105949625164ull, 1520528660378762ull}}, {{4528680855275879484ull, 1216422928303010ull}}, {{7245889368441407176ull, 1946276685284816ull}}, {{2107362680011215416ull, 1557021348227853ull}}, {{9064587773492792980ull, 1245617078582282ull}}, {{18192689252330379092ull, 1992987325731651ull}}, {{10864802587122392952ull, 1594389860585321ull}}, {{5002493254956004036ull, 1275511888468257ull}}, {{11693338022671516784ull, 2040819021549211ull}}, {{5665321603395303104ull, 1632655217239369ull}}, {{8221606097458152804ull, 1306124173791495ull}}, {{13154569755933044488ull, 2089798678066392ull}}, {{3144958175262614944ull, 1671838942453114ull}}, {{6205315354952002280ull, 1337471153962491ull}}, {{2549806938439383000ull, 2139953846339986ull}}, {{16797240809719147692ull, 1711963077071988ull}}, {{2369746203549587184ull, 1369570461657591ull}}, {{14859640369905070468ull, 2191312738652145ull}}, {{11887712295924056372ull, 1753050190921716ull}}, {{5820821021997334776ull, 1402440152737373ull}}, {{5623964820453825316ull, 2243904244379797ull}}, {{15567218300588791224ull, 1795123395503837ull}}, {{5075077010987212332ull, 1436098716403070ull}}, {{4060061608789769864ull, 1148878973122456ull}}, {{17564145018289362756ull, 1838206356995929ull}}, {{17740664829373400528ull, 1470565085596743ull}}, {{3124485419272989452ull, 1176452068477395ull}}, {{4999176670836783124ull, 1882323309563832ull}}, {{15067387780895157468ull, 1505858647651065ull}}, {{12053910224716125972ull, 1204686918120852ull}}, {{4528861100578160268ull, 1927499068993364ull}}, {{7312437695204438536ull, 1541999255194691ull}}, {{2160601341421640504ull, 1233599404155753ull}}, {{18214357405242266104ull, 1973759046649204ull}}, {{18260834738935723204ull, 1579007237319363ull}}, {{3540621346922847592ull, 1263205789855491ull}}, {{16733040599302287120ull, 2021129263768785ull}}, {{13386432479441829696ull, 1616903411015028ull}}, {{18087843613037284404ull, 1293522728812022ull}}, {{14183154521892013752ull, 2069636366099236ull}}, {{7657174802771700680ull, 1655709092879389ull}}, {{9815088656959270864ull, 1324567274303511ull}}, {{8325444221651012740ull, 2119307638885618ull}}, {{14039053006804630836ull, 1695446111108494ull}}, {{14920591220185614992ull, 1356356888886795ull}}, {{5426201878587432376ull, 2170171022218873ull}}, {{11719659132353766544ull, 1736136817775098ull}}, {{16754424935366833884ull, 1388909454220078ull}}, {{4670987008135472272ull, 2222255126752126ull}}, {{47440791766467496ull, 1777804101401701ull}}, {{14795347892380815288ull, 1422243281121360ull}}, {{11836278313904652232ull, 1137794624897088ull}}, {{15248696487505533248ull, 1820471399835341ull}}, {{8509608375262516272ull, 1456377119868273ull}}, {{14186384329693833664ull, 1165101695894618ull}}, {{562122039058671928ull, 1864162713431390ull}}, {{449697631246937540ull, 1491330170745112ull}}, {{11427804549223281000ull, 1193064136596089ull}}, {{7216440834531518636ull, 1908902618553743ull}}, {{13151850297109035552ull, 1527122094842994ull}}, {{14210829052429138764ull, 1221697675874395ull}}, {{4290582410177070412ull, 1954716281399033ull}}, {{10811163557625476976ull, 1563773025119226ull}}, {{4959582031358471256ull, 1251018420095381ull}}, {{556633620689733364ull, 2001629472152610ull}}, {{445306896551786692ull, 1601303577722088ull}}, {{7734943146725250000ull, 1281042862177670ull}}, {{12375909034760400000ull, 2049668579484272ull}}, {{2522029598324499352ull, 1639734863587418ull}}, {{9396321308143420128ull, 1311787890869934ull}}, {{3966067648803741236ull, 2098860625391895ull}}, {{3172854119042992988ull, 1679088500313516ull}}, {{17295678554202035684ull, 1343270800250812ull}}, {{12915690427755615800ull, 2149233280401300ull}}, {{10332552342204492640ull, 1719386624321040ull}}, {{8266041873763594112ull, 1375509299456832ull}}, {{16915015812763660904ull, 2200814879130931ull}}, {{9842663835469018400ull, 1760651903304745ull}}, {{7874131068375214720ull, 1408521522643796ull}}, {{2609956039958261452ull, 1126817218115037ull}}, {{7865278478675128648ull, 1802907548984059ull}}, {{9981571597682013240ull, 1442326039187247ull}}, {{606559648661789944ull, 1153860831349798ull}}, {{15727890696826505208ull, 1846177330159676ull}}, {{8892963742719293844ull, 1476941864127741ull}}, {{3425022179433524752ull, 1181553491302193ull}}, {{1790686672351729280ull, 1890485586083509ull}}, {{5121898152623293744ull, 1512388468866807ull}}, {{15165564966324365964ull, 1209910775093445ull}}, {{5818159872409433928ull, 1935857240149513ull}}, {{12033225527411367788ull, 1548685792119610ull}}, {{9626580421929094232ull, 1238948633695688ull}}, {{11713179860344640448ull, 1982317813913101ull}}, {{5681195073533802036ull, 1585854251130481ull}}, {{855607244085131304ull, 1268683400904385ull}}, {{1368971590536210088ull, 2029893441447016ull}}, {{15852572531396609364ull, 1623914753157612ull}}, {{5303360395633466844ull, 1299131802526090ull}}, {{8485376633013546952ull, 2078610884041744ull}}, {{10477650121152747884ull, 1662888707233395ull}}, {{8382120096922198308ull, 1330310965786716ull}}, {{6032694525591696644ull, 2128497545258746ull}}, {{1136806805731446992ull, 1702798036206997ull}}, {{11977491888810888564ull, 1362238428965597ull}}, {{4406591763129780408ull, 2179581486344956ull}}, {{18282668669471465620ull, 1743665189075964ull}}, {{18315483750319082820ull, 1394932151260771ull}}, {{3479332297317160248ull, 2231891442017235ull}}, {{2783465837853728200ull, 1785513153613788ull}}, {{9605470299766803204ull, 1428410522891030ull}}, {{7684376239813442564ull, 1142728418312824ull}}, {{1226955539475777132ull, 1828365469300519ull}}, {{4670913246322532028ull, 1462692375440415ull}}, {{3736730597058025624ull, 1170153900352332ull}}, {{9668117770034751320ull, 1872246240563731ull}}, {{4045145401285890732ull, 1497796992450985ull}}, {{3236116321028712588ull, 1198237593960788ull}}, {{1488437298904029816ull, 1917180150337261ull}}, {{15948145098090865144ull, 1533744120269808ull}}, {{1690469634246961148ull, 1226995296215847ull}}, {{6394100229537048160ull, 1963192473945355ull}}, {{5115280183629638528ull, 1570553979156284ull}}, {{7781572961645621144ull, 1256443183325027ull}}, {{16139865553374904156ull, 2010309093320043ull}}, {{1843845998474192356ull, 1608247274656035ull}}, {{1475076798779353884ull, 1286597819724828ull}}, {{17117518137014607508ull, 2058556511559724ull}}, {{17383363324353596328ull, 1646845209247779ull}}, {{17596039474224787384ull, 1317476167398223ull}}, {{6017570270308197880ull, 2107961867837158ull}}, {{12192753845730378948ull, 1686369494269726ull}}, {{6064854261842392836ull, 1349095595415781ull}}, {{2325069189464007892ull, 2158552952665250ull}}, {{1860055351571206312ull, 1726842362132200ull}}, {{1488044281256965048ull, 1381473889705760ull}}, {{2380870850011144080ull, 2210358223529216ull}}, {{16662091938976556556ull, 1768286578823372ull}}, {{5950975921697424600ull, 1414629263058698ull}}, {{12139478366841760324ull, 1131703410446958ull}}, {{15733816572204906200ull, 1810725456715133ull}}, {{1519006813538193988ull, 1448580365372107ull}}, {{12283251895056286160ull, 1158864292297685ull}}, {{1206458958380506240ull, 1854182867676297ull}}, {{12033213610930135964ull, 1483346294141037ull}}, {{2247873259260288124ull, 1186677035312830ull}}, {{3596597214816460996ull, 1898683256500528ull}}, {{10255975401336989444ull, 1518946605200422ull}}, {{826082691585770908ull, 1215157284160338ull}}, {{16079127565504874748ull, 1944251654656540ull}}, {{12863302052403899796ull, 1555401323725232ull}}, {{2911944012439299192ull, 1244321058980186ull}}, {{15727156864128609676ull, 1990913694368297ull}}, {{5203027861819067096ull, 1592730955494638ull}}, {{11541119918939074320ull, 1274184764395710ull}}, {{19047796592967300ull, 2038695623033137ull}}, {{11083284681500104808ull, 1630956498426509ull}}, {{12555976559941994172ull, 1304765198741207ull}}, {{5332167236939549380ull, 2087624317985932ull}}, {{15333780233777370472ull, 1670099454388745ull}}, {{12267024187021896380ull, 1336079563510996ull}}, {{12248541069751213560ull, 2137727301617594ull}}, {{13488181670542881172ull, 1710181841294075ull}}, {{10790545336434304936ull, 1368145473035260ull}}, {{17264872538294887900ull, 2189032756856416ull}}, {{10122549215893999996ull, 1751226205485133ull}}, {{15476737002199020644ull, 1400980964388106ull}}, {{17384081574034612384ull, 2241569543020970ull}}, {{13907265259227689908ull, 1793255634416776ull}}, {{7436463392640241600ull, 1434604507533421ull}}, {{2259821899370282956ull, 1147683606026737ull}}, {{7305063853734363056ull, 1836293769642779ull}}, {{9533399897729400768ull, 1469035015714223ull}}, {{15005417547667341260ull, 1175228012571378ull}}, {{1872575187816284080ull, 1880364820114206ull}}, {{16255455409220668556ull, 1504291856091364ull}}, {{16693713142118445168ull, 1203433484873091ull}}, {{884499324196140008ull, 1925493575796947ull}}, {{11775645903582642976ull, 1540394860637557ull}}, {{2041819093382293732ull, 1232315888510046ull}}, {{14334956993637400944ull, 1971705421616073ull}}, {{399919150684189784ull, 1577364337292859ull}}, {{4009284135289262152ull, 1261891469834287ull}}, {{10104203431204729764ull, 2019026351734859ull}}, {{11772711559705694136ull, 1615221081387887ull}}, {{2039471618280734660ull, 1292176865110310ull}}, {{3263154589249175460ull, 2067482984176496ull}}, {{17367918930366981660ull, 1653986387341196ull}}, {{10204986329551675004ull, 1323189109872957ull}}, {{1570582868315038716ull, 2117102575796732ull}}, {{12324512738877761940ull, 1693682060637385ull}}, {{9859610191102209552ull, 1354945648509908ull}}, {{12086027491021624960ull, 2167913037615853ull}}, {{17047519622301120616ull, 1734330430092682ull}}, {{6259318068357075844ull, 1387464344074146ull}}, {{2636211279887500708ull, 2219942950518634ull}}, {{5798317838651910888ull, 1775954360414907ull}}, {{15706700715147259680ull, 1420763488331925ull}}, {{12565360572117807744ull, 1136610790665540ull}}, {{1657832841678940776ull, 1818577265064865ull}}, {{1326266273343152620ull, 1454861812051892ull}}, {{12129059462900253064ull, 1163889449641513ull}}, {{15717146325898494584ull, 1862223119426421ull}}, {{8884368245976885344ull, 1489778495541137ull}}, {{18175541041007239244ull, 1191822796432909ull}}, {{18012819221385851820ull, 1906916474292655ull}}, {{14410255377108681456ull, 1525533179434124ull}}, {{15217553116428855488ull, 1220426543547299ull}}, {{13280038542060437812ull, 1952682469675679ull}}, {{14313379648390260572ull, 1562145975740543ull}}, {{382657274486477488ull, 1249716780592435ull}}, {{612251639178363980ull, 1999546848947896ull}}, {{15247196570310332476ull, 1599637479158316ull}}, {{8508408441506355660ull, 1279709983326653ull}}, {{9924104691668258732ull, 2047535973322645ull}}, {{7939283753334606984ull, 1638028778658116ull}}, {{2662078187925775264ull, 1310423022926493ull}}, {{569976285939330100ull, 2096676836682389ull}}, {{4145329843493374404ull, 1677341469345911ull}}, {{18073659133762340816ull, 1341873175476728ull}}, {{6781761725568283368ull, 2146997080762766ull}}, {{1736060565712716368ull, 1717597664610213ull}}, {{8767546082053993740ull, 1374078131688170ull}}, {{14028073731286389988ull, 2198525010701072ull}}, {{3843761355545291344ull, 1758820008560858ull}}, {{10453706713920053720ull, 1407056006848686ull}}, {{9347233112788265308ull, 2251289610957898ull}}, {{14856484119714432892ull, 1801031688766318ull}}, {{817140851545815344ull, 1440825351013055ull}}, {{653712681236652276ull, 1152660280810444ull}}, {{8424637919462464288ull, 1844256449296710ull}}, {{6739710335569971428ull, 1475405159437368ull}}, {{12770465897939797788ull, 1180324127549894ull}}, {{9364698992477945496ull, 1888518604079831ull}}, {{3802410379240446072ull, 1510814883263865ull}}, {{3041928303392356856ull, 1208651906611092ull}}, {{8556434100169681296ull, 1933843050577747ull}}, {{17913193724361476008ull, 1547074440462197ull}}, {{6951857350005360160ull, 1237659552369758ull}}, {{7433622945266665932ull, 1980255283791613ull}}, {{13325595985697153392ull, 1584204227033290ull}}, {{10660476788557722712ull, 1267363381626632ull}}, {{2299367602724715048ull, 2027781410602612ull}}, {{12907540526405503008ull, 1622225128482089ull}}, {{14015381235866312728ull, 1297780102785671ull}}, {{15045912347902279720ull, 2076448164457074ull}}, {{15726078693063734100ull, 1661158531565659ull}}, {{16270211769192897604ull, 1328926825252527ull}}, {{11274943571740994872ull, 2126282920404044ull}}, {{12709303672134706220ull, 1701026336323235ull}}, {{10167442937707764976ull, 1360821069058588ull}}, {{12578559885590513640ull, 2177313710493741ull}}, {{6373499093730500588ull, 1741850968394993ull}}, {{12477496904468221116ull, 1393480774715994ull}}, {{8895948602923422820ull, 2229569239545591ull}}, {{3427410067596827932ull, 1783655391636473ull}}, {{10120625683561282992ull, 1426924313309178ull}}, {{15475198176332847040ull, 1141539450647342ull}}, {{10002921823164913972ull, 1826463121035748ull}}, {{15381035088015751824ull, 1461170496828598ull}}, {{1236781626186870488ull, 1168936397462879ull}}, {{9357548231382813428ull, 1870298235940606ull}}, {{3796689770364340420ull, 1496238588752485ull}}, {{3037351816291472336ull, 1196990871001988ull}}, {{1170414091324445412ull, 1915185393603181ull}}, {{15693726532027197624ull, 1532148314882544ull}}, {{16244330040363668420ull, 1225718651906035ull}}, {{7544183990872317860ull, 1961149843049657ull}}, {{17103393636923585256ull, 1568919874439725ull}}, {{13682714909538868204ull, 1255135899551780ull}}, {{3445599781552637512ull, 2008217439282849ull}}, {{6445828639984020332ull, 1606573951426279ull}}, {{8846011726729126588ull, 1285259161141023ull}}, {{10464269948024692220ull, 2056414657825637ull}}, {{992718328935933128ull, 1645131726260510ull}}, {{794174663148746504ull, 1316105381008408ull}}, {{16028074720005635700ull, 2105768609613452ull}}, {{5443762146520687912ull, 1684614887690762ull}}, {{15423056161442281300ull, 1347691910152609ull}}, {{13608843414081919112ull, 2156307056244175ull}}, {{10887074731265535288ull, 1725045644995340ull}}, {{8709659785012428232ull, 1380036515996272ull}}, {{17624804470761795492ull, 2208058425594035ull}}, {{14099843576609436392ull, 1766446740475228ull}}, {{211828417061818144ull, 1413157392380183ull}}, {{7548160363133275164ull, 1130525913904146ull}}, {{4698358951529419616ull, 1808841462246634ull}}, {{7448035975965446016ull, 1447073169797307ull}}, {{17026475224998087780ull, 1157658535837845ull}}, {{8795616286287388832ull, 1852253657340553ull}}, {{14415190658513731712ull, 1481802925872442ull}}, {{4153454897327164724ull, 1185442340697954ull}}, {{14024225465207284204ull, 1896707745116726ull}}, {{7530031557423917040ull, 1517366196093381ull}}, {{2334676431197223308ull, 1213892956874705ull}}, {{3735482289915557296ull, 1942228730999528ull}}, {{10367083461416266484ull, 1553782984799622ull}}, {{914969139649192540ull, 1243026387839698ull}}, {{16221345882406349356ull, 1988842220543516ull}}, {{9287727891183169160ull, 1591073776434813ull}}, {{14808879942430355976ull, 1272859021147850ull}}, {{5247463834179017944ull, 2036574433836561ull}}, {{508622252601304032ull, 1629259547069249ull}}, {{4096246616822953548ull, 1303407637655399ull}}, {{13932692216400546328ull, 2085452220248638ull}}, {{78107328894706092ull, 1668361776198911ull}}, {{14819881122083406164ull, 1334689420959128ull}}, {{1575716906881987928ull, 2135503073534606ull}}, {{16017968784473231632ull, 1708402458827684ull}}, {{16503723842320495628ull, 1366721967062147ull}}, {{11648562888745151716ull, 2186755147299436ull}}, {{5629501496254211048ull, 1749404117839549ull}}, {{8192950011745279164ull, 1399523294271639ull}}, {{2040673574566715692ull, 2239237270834623ull}}, {{9011236489137193200ull, 1791389816667698ull}}, {{14587686820793575204ull, 1433111853334158ull}}, {{602103012409129196ull, 1146489482667327ull}}, {{4652713634596517036ull, 1834383172267723ull}}, {{11100868537161034272ull, 1467506537814178ull}}, {{16259392459212648064ull, 1174005230251342ull}}, {{11257632675772595612ull, 1878408368402148ull}}, {{16384803770101897136ull, 1502726694721718ull}}, {{2039796571855786740ull, 1202181355777375ull}}, {{3263674514969258784ull, 1923490169243800ull}}, {{2610939611975407028ull, 1538792135395040ull}}, {{2088751689580325620ull, 1231033708316032ull}}, {{7031351518070431316ull, 1969653933305651ull}}, {{1935732399714434732ull, 1575723146644521ull}}, {{16305981178739189076ull, 1260578517315616ull}}, {{264128182789330260ull, 2016925627704987ull}}, {{11279348990457195180ull, 1613540502163989ull}}, {{12712828007107666464ull, 1290832401731191ull}}, {{12961827181888445700ull, 2065331842769906ull}}, {{6680112930768846236ull, 1652265474215925ull}}, {{5344090344615076988ull, 1321812379372740ull}}, {{8550544551384123184ull, 2114899806996384ull}}, {{10529784455849208868ull, 1691919845597107ull}}, {{1045129935195546448ull, 1353535876477686ull}}, {{12740254340538605288ull, 2165657402364297ull}}, {{2813505842947063584ull, 1732525921891438ull}}, {{9629502303841471512ull, 1386020737513150ull}}, {{15407203686146354424ull, 2217633180021040ull}}, {{12325762948917083536ull, 1774106544016832ull}}, {{2481912729649846184ull, 1419285235213466ull}}, {{16742925442687518240ull, 1135428188170772ull}}, {{12031285449332387892ull, 1816685101073236ull}}, {{5935679544723999988ull, 1453348080858589ull}}, {{8437892450521110312ull, 1162678464686871ull}}, {{6121930291349955856ull, 1860285543498994ull}}, {{8586893047821875008ull, 1488228434799195ull}}, {{6869514438257500008ull, 1190582747839356ull}}, {{3612525471728179364ull, 1904932396542970ull}}, {{2890020377382543492ull, 1523945917234376ull}}, {{17069411560873676084ull, 1219156733787500ull}}, {{8864314423688330124ull, 1950650774060001ull}}, {{3402102724208753776ull, 1560520619248001ull}}, {{17479077438334644312ull, 1248416495398400ull}}, {{9519779827625879284ull, 1997466392637441ull}}, {{3926475047358793104ull, 1597973114109953ull}}, {{10519877667370855128ull, 1278378491287962ull}}, {{2074409008825726916ull, 2045405586060740ull}}, {{1659527207060581532ull, 1636324468848592ull}}, {{12395668209874196196ull, 1309059575078873ull}}, {{16143720321056803588ull, 2094495320126197ull}}, {{5536278627361622224ull, 1675596256100958ull}}, {{11807720531373118424ull, 1340477004880766ull}}, {{11513655220713168836ull, 2144763207809226ull}}, {{5521575361828624744ull, 1715810566247381ull}}, {{727911474720989472ull, 1372648452997905ull}}, {{1164658359553583156ull, 2196237524796648ull}}, {{8310424317126687172ull, 1756990019837318ull}}, {{14027037083185170384ull, 1405592015869854ull}}, {{11375212888870541644ull, 2248947225391767ull}}, {{1721472681612612668ull, 1799157780313414ull}}, {{5066526960032000456ull, 1439326224250731ull}}, {{363872753283690044ull, 1151460979400585ull}}, {{582196405253904068ull, 1842337567040936ull}}, {{15223152383170764548ull, 1473870053632748ull}}, {{1110475462310880668ull, 1179096042906199ull}}, {{9155458369181229716ull, 1886553668649918ull}}, {{14703064324828804420ull, 1509242934919934ull}}, {{15451800274604953860ull, 1207394347935947ull}}, {{9965485180400284880ull, 1931830956697516ull}}, {{4283039329578317580ull, 1545464765358013ull}}, {{10805129093146474712ull, 1236371812286410ull}}, {{17288206549034359540ull, 1978194899658256ull}}, {{10141216424485577308ull, 1582555919726605ull}}, {{8112973139588461848ull, 1266044735781284ull}}, {{1912710579115807984ull, 2025671577250055ull}}, {{1530168463292646388ull, 1620537261800044ull}}, {{4913483585376027432ull, 1296429809440035ull}}, {{7861573736601643896ull, 2074287695104056ull}}, {{2599910174539404792ull, 1659430156083245ull}}, {{2079928139631523832ull, 1327544124866596ull}}, {{14395931467636169104ull, 2124070599786553ull}}, {{448698729883204312ull, 1699256479829243ull}}, {{7737656613390384096ull, 1359405183863394ull}}, {{1312204137198883584ull, 2175048294181431ull}}, {{15807158568726748160ull, 1740038635345144ull}}, {{16335075669723308852ull, 1392030908276115ull}}, {{7689376997847742548ull, 2227249453241785ull}}, {{6151501598278194036ull, 1781799562593428ull}}, {{12299898908106375876ull, 1425439650074742ull}}, {{2461221497001280056ull, 1140351720059794ull}}, {{11316652024685868736ull, 1824562752095670ull}}, {{9053321619748694988ull, 1459650201676536ull}}, {{3553308481057045664ull, 1167720161341229ull}}, {{13063991199175093712ull, 1868352258145966ull}}, {{6761844144598164648ull, 1494681806516773ull}}, {{12788172945162352364ull, 1195745445213418ull}}, {{16771727897517853460ull, 1913192712341469ull}}, {{17106731132756193092ull, 1530554169873175ull}}, {{13685384906204954472ull, 1224443335898540ull}}, {{3449871776218375540ull, 1959109337437665ull}}, {{2759897420974700432ull, 1567287469950132ull}}, {{13275964381005491316ull, 1253829975960105ull}}, {{2794798935899234488ull, 2006127961536169ull}}, {{5925187963461297912ull, 1604902369228935ull}}, {{4740150370769038332ull, 1283921895383148ull}}, {{3894891778488551008ull, 2054275032613037ull}}, {{14183959867016571776ull, 1643420026090429ull}}, {{15036516708355167744ull, 1314736020872343ull}}, {{1922333844916806452ull, 2103577633395750ull}}, {{1537867075933445160ull, 1682862106716600ull}}, {{1230293660746756128ull, 1346289685373280ull}}, {{1968469857194809804ull, 2154063496597248ull}}, {{8953473515239668492ull, 1723250797277798ull}}, {{14541476441675555440ull, 1378600637822238ull}}, {{1130269418229426764ull, 2205761020515582ull}}, {{11972261978809272380ull, 1764608816412465ull}}, {{9577809583047417904ull, 1411687053129972ull}}, {{283550036954113676ull, 1129349642503978ull}}, {{15211075318094223176ull, 1806959428006364ull}}, {{15858209069217288864ull, 1445567542405091ull}}, {{8997218440631920768ull, 1156454033924073ull}}, {{10706200690269162904ull, 1850326454278517ull}}, {{1186262922731509676ull, 1480261163422814ull}}, {{4638359152927118064ull, 1184208930738251ull}}, {{42677015199568260ull, 1894734289181202ull}}, {{11102188056385385576ull, 1515787431344961ull}}, {{5192401630366398136ull, 1212629945075969ull}}, {{15686540238070057668ull, 1940207912121550ull}}, {{12549232190456046132ull, 1552166329697240ull}}, {{10039385752364836904ull, 1241733063757792ull}}, {{1305621944816097756ull, 1986772902012468ull}}, {{8423195185336698852ull, 1589418321609974ull}}, {{10427904963011269404ull, 1271534657287979ull}}, {{5616601496592300080ull, 2034455451660767ull}}, {{15561327641499571032ull, 1627564361328613ull}}, {{1381015668973925856ull, 1302051489062891ull}}, {{13277671514584012340ull, 2083282382500625ull}}, {{10622137211667209872ull, 1666625906000500ull}}, {{8497709769333767896ull, 1333300724800400ull}}, {{13596335630934028636ull, 2133281159680640ull}}, {{10877068504747222908ull, 1706624927744512ull}}, {{1322957174313957680ull, 1365299942195610ull}}, {{2116731478902332288ull, 2184479907512976ull}}, {{16450780442089507124ull, 1747583926010380ull}}, {{13160624353671605700ull, 1398067140808304ull}}, {{9988952521648838148ull, 2236907425293287ull}}, {{612464387835249872ull, 1789525940234630ull}}, {{489971510268199900ull, 1431620752187704ull}}, {{4081326022956470240ull, 1145296601750163ull}}, {{2840772821988442064ull, 1832474562800261ull}}, {{17030013516558394944ull, 1465979650240208ull}}, {{2555964369020984984ull, 1172783720192167ull}}, {{7778891805175486300ull, 1876453952307467ull}}, {{17291159888366120008ull, 1501163161845973ull}}, {{2764881466467165036ull, 1200930529476779ull}}, {{11802507975831284708ull, 1921488847162846ull}}, {{5752657565923117444ull, 1537191077730277ull}}, {{15670172496964224924ull, 1229752862184221ull}}, {{17693578365658939232ull, 1967604579494754ull}}, {{17844211507269061708ull, 1574083663595803ull}}, {{3207322761589518396ull, 1259266930876643ull}}, {{1442367603801319112ull, 2014827089402629ull}}, {{4843242897782965612ull, 1611861671522103ull}}, {{11253291947710193136ull, 1289489337217682ull}}, {{3247871857368667728ull, 2063182939548292ull}}, {{13666343930120665152ull, 1650546351638633ull}}, {{18311772773580352768ull, 1320437081310906ull}}, {{3473394734535192164ull, 2112699330097451ull}}, {{17536111046595795024ull, 1690159464077960ull}}, {{14028888837276636020ull, 1352127571262368ull}}, {{310129251191155692ull, 2163404114019790ull}}, {{248103400952924552ull, 1730723291215832ull}}, {{11266529164988070612ull, 1384578632972665ull}}, {{18026446663980912980ull, 2215325812756264ull}}, {{18110506145926640708ull, 1772260650205011ull}}, {{10799056101999402244ull, 1417808520164009ull}}, {{12328593696341432116ull, 1134246816131207ull}}, {{4968354655178650096ull, 1814794905809932ull}}, {{15042730168368651044ull, 1451835924647945ull}}, {{12034184134694920836ull, 1161468739718356ull}}, {{11875996986028052692ull, 1858349983549370ull}}, {{9500797588822442152ull, 1486679986839496ull}}, {{3911289256316043400ull, 1189343989471597ull}}, {{9947411624847579764ull, 1902950383154555ull}}, {{7957929299878063808ull, 1522360306523644ull}}, {{10055692254644361372ull, 1217888245218915ull}}, {{16089107607430978196ull, 1948621192350264ull}}, {{16560634900686692880ull, 1558896953880211ull}}, {{9559159105807443980ull, 1247117563104169ull}}, {{4226608125066179396ull, 1995388100966671ull}}, {{18138681759020584812ull, 1596310480773336ull}}, {{10821596592474557524ull, 1277048384618669ull}}, {{6246508103733561072ull, 2043277415389871ull}}, {{1307857668244938532ull, 1634621932311897ull}}, {{12114332578821681796ull, 1307697545849517ull}}, {{4625536867147049584ull, 2092316073359228ull}}, {{11079127123201460312ull, 1673852858687382ull}}, {{1484604069077347604ull, 1339082286949906ull}}, {{13443412954749487136ull, 2142531659119849ull}}, {{14444079178541500032ull, 1714025327295879ull}}, {{15244612157575110348ull, 1371220261836703ull}}, {{2255286563668714616ull, 2193952418938726ull}}, {{16561624509902612988ull, 1755161935150980ull}}, {{13249299607922090388ull, 1404129548120784ull}}, {{10130832928449613652ull, 2246607276993255ull}}, {{8104666342759690924ull, 1797285821594604ull}}, {{10173081888949663060ull, 1437828657275683ull}}, {{15517163140643551096ull, 1150262925820546ull}}, {{17448763395545861108ull, 1840420681312874ull}}, {{17648359531178599208ull, 1472336545050299ull}}, {{17808036439684789688ull, 1177869236040239ull}}, {{17424811859269932536ull, 1884590777664383ull}}, {{2871803043190215056ull, 1507672622131507ull}}, {{13365488878777903016ull, 1206138097705205ull}}, {{2938038132335093208ull, 1929820956328329ull}}, {{6039779320609984892ull, 1543856765062663ull}}, {{12210521085971808560ull, 1235085412050130ull}}, {{1090089663845342080ull, 1976136659280209ull}}, {{4561420545818183984ull, 1580909327424167ull}}, {{14717182880880278156ull, 1264727461939333ull}}, {{1411399720956983116ull, 2023563939102934ull}}, {{4818468591507496816ull, 1618851151282347ull}}, {{14922821317431728420ull, 1295080921025877ull}}, {{9119118848923124180ull, 2072129473641404ull}}, {{10984643893880409668ull, 1657703578913123ull}}, {{16166412744588148380ull, 1326162863130498ull}}, {{3730167502889575472ull, 2121860581008798ull}}, {{10362831631795481024ull, 1697488464807038ull}}, {{15668962934920205464ull, 1357990771845630ull}}, {{6623596622162777128ull, 2172785234953009ull}}, {{8988226112472132024ull, 1738228187962407ull}}, {{18258627334203436588ull, 1390582550369925ull}}, {{10767059661015946928ull, 2224932080591881ull}}, {{4924298914070847220ull, 1779945664473505ull}}, {{3939439131256677776ull, 1423956531578804ull}}, {{6840900119747252544ull, 1139165225263043ull}}, {{7256091376853693744ull, 1822664360420869ull}}, {{9494221916224865320ull, 1458131488336695ull}}, {{7595377532979892256ull, 1166505190669356ull}}, {{4773906423284006964ull, 1866408305070970ull}}, {{3819125138627205568ull, 1493126644056776ull}}, {{17812695369869405748ull, 1194501315245420ull}}, {{10053568518081497584ull, 1911202104392673ull}}, {{15421552443949018712ull, 1528961683514138ull}}, {{1269195510933484000ull, 1223169346811311ull}}, {{13098759261719305372ull, 1957070954898097ull}}, {{3100309779891623648ull, 1565656763918478ull}}, {{9858945453397119564ull, 1252525411134782ull}}, {{1016917466467750012ull, 2004040657815652ull}}, {{11881580417399930980ull, 1603232526252521ull}}, {{5815915519178034460ull, 1282586021002017ull}}, {{12994813645426765460ull, 2052137633603227ull}}, {{3017153286857591720ull, 1641710106882582ull}}, {{13481769073711804348ull, 1313368085506065ull}}, {{3124086444229335340ull, 2101388936809705ull}}, {{2499269155383468272ull, 1681111149447764ull}}, {{5688764139048684940ull, 1344888919558211ull}}, {{1723324992994075260ull, 2151822271293138ull}}, {{8757357623879080852ull, 1721457817034510ull}}, {{7005886099103264680ull, 1377166253627608ull}}, {{7520068943823313168ull, 2203466005804173ull}}, {{13394752784542471180ull, 1762772804643338ull}}, {{18094499857117797592ull, 1410218243714670ull}}, {{14475599885694238072ull, 1128174594971736ull}}, {{15782262187626960272ull, 1805079351954778ull}}, {{1557763305875837248ull, 1444063481563823ull}}, {{8624908274184490444ull, 1155250785251058ull}}, {{10110504423953274388ull, 1848401256401693ull}}, {{15467101168646440156ull, 1478721005121354ull}}, {{16063029749659062448ull, 1182976804097083ull}}, {{3564754711003037976ull, 1892762886555334ull}}, {{6541152583544340704ull, 1514210309244267ull}}, {{16300968511061203532ull, 1211368247395413ull}}, {{3945456729246463716ull, 1938189195832662ull}}, {{14224411827622901940ull, 1550551356666129ull}}, {{15068878276840231876ull, 1240441085332903ull}}, {{1974112354492909064ull, 1984705736532646ull}}, {{16336685142561968544ull, 1587764589226116ull}}, {{9379999299307664512ull, 1270211671380893ull}}, {{11318650064150352896ull, 2032338674209429ull}}, {{12744268866062192640ull, 1625870939367543ull}}, {{17574112722333574756ull, 1300696751494034ull}}, {{17050533911507988644ull, 2081114802390455ull}}, {{13640427129206390916ull, 1664891841912364ull}}, {{14601690518107023056ull, 1331913473529891ull}}, {{15984007199487416240ull, 2131061557647826ull}}, {{9097856944848022668ull, 1704849246118261ull}}, {{3588936741136507812ull, 1363879396894609ull}}, {{13120996415302233148ull, 2182207035031374ull}}, {{14186145946983696840ull, 1745765628025099ull}}, {{15038265572328867796ull, 1396612502420079ull}}, {{12993178471500457504ull, 2234580003872127ull}}, {{3015845147716545356ull, 1787664003097702ull}}, {{13480722562398967256ull, 1430131202478161ull}}, {{7095229235177263480ull, 1144104961982529ull}}, {{284320332057890600ull, 1830567939172047ull}}, {{11295502709872043448ull, 1464454351337637ull}}, {{1657704538413814112ull, 1171563481070110ull}}, {{2652327261462102580ull, 1874501569712176ull}}, {{16879257068137323356ull, 1499601255769740ull}}, {{13503405654509858684ull, 1199681004615792ull}}, {{6848053788248132604ull, 1919489607385268ull}}, {{12857140660082326728ull, 1535591685908214ull}}, {{13975061342807771708ull, 1228473348726571ull}}, {{14981400519008614084ull, 1965557357962514ull}}, {{15674469229948801592ull, 1572445886370011ull}}, {{8850226569217130948ull, 1257956709096009ull}}, {{3092316066521678548ull, 2012730734553615ull}}, {{2473852853217342840ull, 1610184587642892ull}}, {{13047128726799605240ull, 1288147670114313ull}}, {{17186057148137458064ull, 2061036272182901ull}}, {{10059496903768056128ull, 1648829017746321ull}}, {{4358248708272534580ull, 1319063214197057ull}}, {{10662546747977965648ull, 2110501142715291ull}}, {{4840688583640462196ull, 1688400914172233ull}}, {{11251248496396190404ull, 1350720731337786ull}}, {{10623299964750084000ull, 2161153170140458ull}}, {{15877337601283887844ull, 1728922536112366ull}}, {{9012521266285199952ull, 1383138028889893ull}}, {{10730685211314409604ull, 2213020846223829ull}}, {{12273896983793438004ull, 1770416676979063ull}}, {{17197815216518571048ull, 1416333341583250ull}}, {{13758252173214856840ull, 1133066673266600ull}}, {{3566459403434219328ull, 1812906677226561ull}}, {{17610562781715016756ull, 1450325341781248ull}}, {{3020403781146282432ull, 1160260273424999ull}}, {{12211343679317872540ull, 1856416437479998ull}}, {{17147772572938118680ull, 1485133149983998ull}}, {{2650171614124763972ull, 1188106519987199ull}}, {{11618972212083443004ull, 1900970431979518ull}}, {{16673875399150575052ull, 1520776345583614ull}}, {{17028449134062370364ull, 1216621076466891ull}}, {{1420076911306420320ull, 1946593722347027ull}}, {{12204107973270867224ull, 1557274977877621ull}}, {{6073937563874783456ull, 1245819982302097ull}}, {{13407648916941563856ull, 1993311971683355ull}}, {{10726119133553251084ull, 1594649577346684ull}}, {{12270244121584511188ull, 1275719661877347ull}}, {{4874995335567576612ull, 2041151459003756ull}}, {{210647453712150964ull, 1632921167203005ull}}, {{168517962969720772ull, 1306336933762404ull}}, {{7648326370235373884ull, 2090139094019846ull}}, {{2429312281446388784ull, 1672111275215877ull}}, {{13011496269382841996ull, 1337689020172701ull}}, {{13439696401528726548ull, 2140302432276322ull}}, {{3373059491739160592ull, 1712241945821058ull}}, {{10077145222875149120ull, 1369793556656846ull}}, {{8744734727116417944ull, 2191669690650954ull}}, {{10685136596435044680ull, 1753335752520763ull}}, {{15926806906631856388ull, 1402668602016610ull}}, {{7036146976901418608ull, 2244269763226577ull}}, {{16696964025746865856ull, 1795415810581261ull}}, {{9668222405855582360ull, 1436332648465009ull}}, {{11423926739426376212ull, 1149066118772007ull}}, {{3520887524114560648ull, 1838505790035212ull}}, {{13884756463517379488ull, 1470804632028169ull}}, {{14797153985555813912ull, 1176643705622535ull}}, {{5228702303179750644ull, 1882629928996057ull}}, {{15251008286769531484ull, 1506103943196845ull}}, {{12200806629415625188ull, 1204883154557476ull}}, {{12142592977581179656ull, 1927813047291962ull}}, {{2335376752581123076ull, 1542250437833570ull}}, {{1868301402064898460ull, 1233800350266856ull}}, {{14057328687529568508ull, 1974080560426969ull}}, {{14935211764765565128ull, 1579264448341575ull}}, {{11948169411812452104ull, 1263411558673260ull}}, {{670326985190371752ull, 2021458493877217ull}}, {{11604308032378028368ull, 1617166795101773ull}}, {{16662144055386243340ull, 1293733436081418ull}}, {{4523337600166527408ull, 2069973497730270ull}}, {{3618670080133221928ull, 1655978798184216ull}}, {{17652331323074218832ull, 1324783038547372ull}}, {{13486334857951108844ull, 2119652861675796ull}}, {{7099719071618976752ull, 1695722289340637ull}}, {{16747821701520912368ull, 1356577831472509ull}}, {{15728468278207728824ull, 2170524530356015ull}}, {{12582774622566183056ull, 1736419624284812ull}}, {{2687522068569125800ull, 1389135699427850ull}}, {{4300035309710601280ull, 2222617119084560ull}}, {{3440028247768481024ull, 1778093695267648ull}}, {{10130720227698605464ull, 1422474956214118ull}}, {{15483273811642705016ull, 1137979964971294ull}}, {{13705191654402597060ull, 1820767943954071ull}}, {{7274804508780167324ull, 1456614355163257ull}}, {{16887890051249864828ull, 1165291484130605ull}}, {{8573880008290232112ull, 1864466374608969ull}}, {{10548452821374096012ull, 1491573099687175ull}}, {{8438762257099276808ull, 1193258479749740ull}}, {{13502019611358842896ull, 1909213567599584ull}}, {{14490964503828984640ull, 1527370854079667ull}}, {{4214073973579367064ull, 1221896683263734ull}}, {{14121215987210807952ull, 1955034693221974ull}}, {{14986321604510556684ull, 1564027754577579ull}}, {{15678406098350355668ull, 1251222203662063ull}}, {{2949356868909107132ull, 2001955525859302ull}}, {{13427531939353016676ull, 1601564420687441ull}}, {{7052676736740503016ull, 1281251536549953ull}}, {{7594933964042894504ull, 2050002458479925ull}}, {{6075947171234315604ull, 1640001966783940ull}}, {{4860757736987452484ull, 1312001573427152ull}}, {{11466561193921834296ull, 2099202517483443ull}}, {{16551946584621288084ull, 1679362013986754ull}}, {{16930906082438940788ull, 1343489611189403ull}}, {{4953356843450843324ull, 2149583377903046ull}}, {{273336660018764336ull, 1719666702322437ull}}, {{11286715772240742440ull, 1375733361857949ull}}, {{6990698791359456932ull, 2201173378972719ull}}, {{9281907847829475868ull, 1760938703178175ull}}, {{7425526278263580696ull, 1408750962542540ull}}, {{5940421022610864556ull, 1127000770034032ull}}, {{13194022450919293612ull, 1803201232054451ull}}, {{6865869145993524568ull, 1442560985643561ull}}, {{1803346502052909332ull, 1154048788514849ull}}, {{10264052032768475576ull, 1846478061623758ull}}, {{15589939255698601108ull, 1477182449299006ull}}, {{8782602589816970560ull, 1181745959439205ull}}, {{14052164143707152900ull, 1890793535102728ull}}, {{173684870739991352ull, 1512634828082183ull}}, {{7517645526075813728ull, 1210107862465746ull}}, {{4649535212237481316ull, 1936172579945194ull}}, {{7408976984531895376ull, 1548938063956155ull}}, {{5927181587625516300ull, 1239150451164924ull}}, {{16862188169684646728ull, 1982640721863878ull}}, {{2421704091521986412ull, 1586112577491103ull}}, {{9316060902701409776ull, 1268890061992882ull}}, {{148302185354614352ull, 2030224099188612ull}}, {{11186688192509422448ull, 1624179279350889ull}}, {{12638699368749448284ull, 1299343423480711ull}}, {{12843221360515296608ull, 2078949477569138ull}}, {{17653274717896057932ull, 1663159582055310ull}}, {{14122619774316846344ull, 1330527665644248ull}}, {{460098750455492212ull, 2128844265030798ull}}, {{7746776629848214416ull, 1703075412024638ull}}, {{13576118933362392180ull, 1362460329619710ull}}, {{3275046219670275872ull, 2179936527391537ull}}, {{13688083419961951668ull, 1743949221913229ull}}, {{14639815550711471656ull, 1395159377530583ull}}, {{1287611992686892712ull, 2232255004048934ull}}, {{4719438408891424492ull, 1785804003239147ull}}, {{14843597171338870564ull, 1428643202591317ull}}, {{4496180107587275804ull, 1142914562073054ull}}, {{14572585801623461932ull, 1828663299316886ull}}, {{7968719826556859224ull, 1462930639453509ull}}, {{10064324675987397700ull, 1170344511562807ull}}, {{1345524222612195032ull, 1872551218500492ull}}, {{12144465822315486992ull, 1498040974800393ull}}, {{17094270287336210240ull, 1198432779840314ull}}, {{16282786015512205416ull, 1917492447744503ull}}, {{1958182368184033364ull, 1533993958195603ull}}, {{8945243524031047336ull, 1227195166556482ull}}, {{18001738453191586064ull, 1963512266490371ull}}, {{10712041947811358528ull, 1570809813192297ull}}, {{1190935928765266176ull, 1256647850553838ull}}, {{16662892744992067176ull, 2010636560886140ull}}, {{13330314195993653740ull, 1608509248708912ull}}, {{3285553727311102344ull, 1286807398967130ull}}, {{5256885963697763752ull, 2058891838347408ull}}, {{11584206400442031648ull, 1647113470677926ull}}, {{5578016305611714996ull, 1317690776542341ull}}, {{1546128459494923348ull, 2108305242467746ull}}, {{15994298026563579968ull, 1686644193974196ull}}, {{9106089606508953652ull, 1349315355179357ull}}, {{18259092185156236168ull, 2158904568286971ull}}, {{10917924933383078612ull, 1727123654629577ull}}, {{1355642317222642240ull, 1381698923703662ull}}, {{5858376522298137912ull, 2210718277925859ull}}, {{8376050032580420652ull, 1768574622340687ull}}, {{17768886470290067492ull, 1414859697872549ull}}, {{17904457990973964316ull, 1131887758298039ull}}, {{17579086341332611936ull, 1811020413276863ull}}, {{2995222628840358580ull, 1448816330621491ull}}, {{17153573362039928156ull, 1159053064497192ull}}, {{12688322120296243756ull, 1854484903195508ull}}, {{17529355325720815652ull, 1483587922556406ull}}, {{10334135445834742196ull, 1186870338045125ull}}, {{16534616713335587516ull, 1898992540872200ull}}, {{13227693370668470012ull, 1519194032697760ull}}, {{10582154696534776012ull, 1215355226158208ull}}, {{13242098699713731296ull, 1944568361853133ull}}, {{17972376589254805680ull, 1555654689482506ull}}, {{10688552456661934220ull, 1244523751586005ull}}, {{17101683930659094756ull, 1991238002537608ull}}, {{2613300700301544836ull, 1592990402030087ull}}, {{13158687004466966836ull, 1274392321624069ull}}, {{9985852762921415972ull, 2039027714598511ull}}, {{4299333395595222452ull, 1631222171678809ull}}, {{7128815531218088284ull, 1304977737343047ull}}, {{15095453664690851580ull, 2087964379748875ull}}, {{12076362931752681264ull, 1670371503799100ull}}, {{9661090345402145012ull, 1336297203039280ull}}, {{15457744552643432020ull, 2138075524862848ull}}, {{1298149197889014644ull, 1710460419890279ull}}, {{4727868173053122040ull, 1368368335912223ull}}, {{3875240262143084940ull, 2189389337459557ull}}, {{14168238653940198920ull, 1751511469967645ull}}, {{11334590923152159136ull, 1401209175974116ull}}, {{10756647847559633972ull, 2241934681558586ull}}, {{4915969463305796856ull, 1793547745246869ull}}, {{7622124385386547808ull, 1434838196197495ull}}, {{6097699508309238244ull, 1147870556957996ull}}, {{2377621583810960548ull, 1836592891132794ull}}, {{5591446081790678760ull, 1469274312906235ull}}, {{4473156865432543008ull, 1175419450324988ull}}, {{3467702169950158492ull, 1880671120519981ull}}, {{17531556994927768084ull, 1504536896415984ull}}, {{17714594410684124792ull, 1203629517132787ull}}, {{13585955798126958372ull, 1925807227412460ull}}, {{10868764638501566700ull, 1540645781929968ull}}, {{16073709340285074004ull, 1232516625543974ull}}, {{14649888500230387440ull, 1972026600870359ull}}, {{15409259614926220276ull, 1577621280696287ull}}, {{4948710062457155572ull, 1262097024557030ull}}, {{7917936099931448916ull, 2019355239291248ull}}, {{13713046509428979780ull, 1615484191432998ull}}, {{18349134837027004468ull, 1292387353146398ull}}, {{7222522850791745212ull, 2067819765034238ull}}, {{13156715910117216816ull, 1654255812027390ull}}, {{10525372728093773452ull, 1323404649621912ull}}, {{2083201105982396232ull, 2117447439395060ull}}, {{1666560884785916988ull, 1693957951516048ull}}, {{8711946337312554236ull, 1355166361212838ull}}, {{10249765324958176456ull, 2168266177940541ull}}, {{4510463445224630840ull, 1734612942352433ull}}, {{10987068385663525316ull, 1387690353881946ull}}, {{10200611787577819864ull, 2220304566211114ull}}, {{11849838244804166212ull, 1776243652968891ull}}, {{5790521781101422648ull, 1420994922375113ull}}, {{12011115054364958764ull, 1136795937900090ull}}, {{771040013274382408ull, 1818873500640145ull}}, {{616832010619505924ull, 1455098800512116ull}}, {{15250860867463246032ull, 1164079040409692ull}}, {{9643982128973552360ull, 1862526464655508ull}}, {{15093883332662662536ull, 1490021171724406ull}}, {{8385757851388219704ull, 1192016937379525ull}}, {{13417212562221151528ull, 1907227099807240ull}}, {{10733770049776921220ull, 1525781679845792ull}}, {{1208318410337716332ull, 1220625343876634ull}}, {{9312007086024166776ull, 1953000550202614ull}}, {{11138954483561243744ull, 1562400440162091ull}}, {{5221814772107084672ull, 1249920352129673ull}}, {{4665554820629425152ull, 1999872563407477ull}}, {{14800490300729271092ull, 1599898050725981ull}}, {{8151043425841506548ull, 1279918440580785ull}}, {{13041669481346410480ull, 2047869504929256ull}}, {{6743986770335218060ull, 1638295603943405ull}}, {{5395189416268174448ull, 1310636483154724ull}}, {{16011000695512899764ull, 2097018373047558ull}}, {{1740754112184588840ull, 1677614698438047ull}}, {{12460649733973402044ull, 1342091758750437ull}}, {{5179644315389801976ull, 2147346814000700ull}}, {{4143715452311841580ull, 1717877451200560ull}}, {{3314972361849473264ull, 1374301960960448ull}}, {{1614606964217246900ull, 2198883137536717ull}}, {{12359732015599528488ull, 1759106510029373ull}}, {{17266483241963443436ull, 1407285208023498ull}}, {{5490280298690047564ull, 2251656332837598ull}}, {{11770921868435858696ull, 1801325066270078ull}}, {{16795435124232507604ull, 1441060053016062ull}}, {{6057650469902185436ull, 1152848042412850ull}}, {{9692240751843496696ull, 1844556867860560ull}}, {{7753792601474797356ull, 1475645494288448ull}}, {{13581731710663658532ull, 1180516395430758ull}}, {{18041421922319943328ull, 1888826232689213ull}}, {{3365091093630223692ull, 1511060986151371ull}}, {{17449468133871820248ull, 1208848788921096ull}}, {{2093707311001540136ull, 1934158062273755ull}}, {{1674965848801232108ull, 1547326449819004ull}}, {{5029321493782896008ull, 1237861159855203ull}}, {{4357565575310723292ull, 1980577855768325ull}}, {{3486052460248578632ull, 1584462284614660ull}}, {{2788841968198862904ull, 1267569827691728ull}}, {{772798334376270328ull, 2028111724306765ull}}, {{618238667501016260ull, 1622489379445412ull}}, {{11562637378226543980ull, 1297991503556329ull}}, {{7432173360936739396ull, 2076786405690127ull}}, {{17013785132975122488ull, 1661429124552101ull}}, {{9921679291638187664ull, 1329143299641681ull}}, {{8495989237137279620ull, 2126629279426690ull}}, {{6796791389709823696ull, 1701303423541352ull}}, {{16505479555993589924ull, 1361042738833081ull}}, {{583325586396371620ull, 2177668382132931ull}}, {{15224055728084738588ull, 1742134705706344ull}}, {{15868593397209701192ull, 1393707764565075ull}}, {{6943005361825970296ull, 2229932423304121ull}}, {{1865055474718865912ull, 1783945938643297ull}}, {{12560090824000823700ull, 1427156750914637ull}}, {{2669375029716838312ull, 1141725400731710ull}}, {{4271000047546941300ull, 1826760641170736ull}}, {{18174195297005194332ull, 1461408512936588ull}}, {{3471309793378424496ull, 1169126810349271ull}}, {{16622142113631210164ull, 1870602896558833ull}}, {{2229667246679237164ull, 1496482317247067ull}}, {{12851780241569120700ull, 1197185853797653ull}}, {{16873499571768682796ull, 1915497366076245ull}}, {{13498799657414946236ull, 1532397892860996ull}}, {{7109690911190046664ull, 1225918314288797ull}}, {{15064854272645984988ull, 1961469302862075ull}}, {{12051883418116787992ull, 1569175442289660ull}}, {{9641506734493430392ull, 1255340353831728ull}}, {{11737061960447578308ull, 2008544566130765ull}}, {{9389649568358062644ull, 1606835652904612ull}}, {{133022025202629468ull, 1285468522323690ull}}, {{212835240324207152ull, 2056749635717904ull}}, {{3859617007001276044ull, 1645399708574323ull}}, {{10466391235084841480ull, 1316319766859458ull}}, {{13056877161393836048ull, 2106111626975133ull}}, {{17824199358598889484ull, 1684889301580106ull}}, {{10570010672137201264ull, 1347911441264085ull}}, {{16912017075419522024ull, 2156658306022536ull}}, {{9840264845593707296ull, 1725326644818029ull}}, {{11561560691216876160ull, 1380261315854423ull}}, {{14809148291205091532ull, 2208418105367077ull}}, {{4468621003480252580ull, 1766734484293662ull}}, {{14642943247009933032ull, 1413387587434929ull}}, {{15403703412349856748ull, 1130710069947943ull}}, {{2509832571308308860ull, 1809136111916710ull}}, {{2007866057046647088ull, 1447308889533368ull}}, {{8984990475121138316ull, 1157847111626694ull}}, {{3307938315968090336ull, 1852555378602711ull}}, {{17403745911742113564ull, 1482044302882168ull}}, {{2854950285167959880ull, 1185635442305735ull}}, {{4567920456268735808ull, 1897016707689176ull}}, {{18411731623982629940ull, 1517613366151340ull}}, {{14729385299186103952ull, 1214090692921072ull}}, {{8809621219730125032ull, 1942545108673716ull}}, {{3358348161042189700ull, 1554036086938973ull}}, {{10065376158317572408ull, 1243228869551178ull}}, {{12415253038566205528ull, 1989166191281885ull}}, {{9932202430852964424ull, 1591332953025508ull}}, {{15324459574166192184ull, 1273066362420406ull}}, {{17140437689182086848ull, 2036906179872650ull}}, {{13712350151345669480ull, 1629524943898120ull}}, {{10969880121076535584ull, 1303619955118496ull}}, {{10173110564238636288ull, 2085791928189594ull}}, {{11827837266132819352ull, 1668633542551675ull}}, {{9462269812906255480ull, 1334906834041340ull}}, {{15139631700650008772ull, 2135850934466144ull}}, {{15801054175261917340ull, 1708680747572915ull}}, {{12640843340209533872ull, 1366944598058332ull}}, {{5467954085367612904ull, 2187111356893332ull}}, {{15442409712519821292ull, 1749689085514665ull}}, {{12353927770015857032ull, 1399751268411732ull}}, {{5008889173057729960ull, 2239602029458772ull}}, {{15075157782671914940ull, 1791681623567017ull}}, {{4681428596653711304ull, 1433345298853614ull}}, {{7434491692064879364ull, 1146676239082891ull}}, {{4516489077819986340ull, 1834681982532626ull}}, {{18370586521223630364ull, 1467745586026100ull}}, {{14696469216978904292ull, 1174196468820880ull}}, {{5067606673456695252ull, 1878714350113409ull}}, {{7743434153507266524ull, 1502971480090727ull}}, {{17262793767031544188ull, 1202377184072581ull}}, {{1795028324057098440ull, 1923803494516131ull}}, {{16193417918213320044ull, 1539042795612904ull}}, {{16644083149312566360ull, 1231234236490323ull}}, {{4494440150448644236ull, 1969974778384518ull}}, {{10974249749842736036ull, 1575979822707614ull}}, {{12468748614616099152ull, 1260783858166091ull}}, {{12571300153901937996ull, 2017254173065746ull}}, {{6367691308379640072ull, 1613803338452597ull}}, {{16162199490929443028ull, 1291042670762077ull}}, {{11102123926519467552ull, 2065668273219324ull}}, {{12571047955957484364ull, 1652534618575459ull}}, {{13746187179507897816ull, 1322027694860367ull}}, {{7236504228244995212ull, 2115244311776588ull}}, {{13167901012079816816ull, 1692195449421270ull}}, {{10534320809663853452ull, 1353756359537016ull}}, {{9476215665978344876ull, 2166010175259226ull}}, {{3891623718040765580ull, 1732808140207381ull}}, {{17870694233400253756ull, 1386246512165904ull}}, {{17525064329214675040ull, 2217994419465447ull}}, {{6641353833887919384ull, 1774395535572358ull}}, {{12691780696594156152ull, 1419516428457886ull}}, {{6464075742533414600ull, 1135613142766309ull}}, {{17721218817537284008ull, 1816981028426094ull}}, {{17866323868771737528ull, 1453584822740875ull}}, {{14293059095017390024ull, 1162867858192700ull}}, {{4422150478318272420ull, 1860588573108321ull}}, {{18295115641622259228ull, 1488470858486656ull}}, {{10946743698555897060ull, 1190776686789325ull}}, {{17514789917689435296ull, 1905242698862920ull}}, {{14011831934151548236ull, 1524194159090336ull}}, {{7520116732579328264ull, 1219355327272269ull}}, {{964140327901194256ull, 1950968523635631ull}}, {{15528707521288596696ull, 1560774818908504ull}}, {{16112314831772787680ull, 1248619855126803ull}}, {{3643610842384998352ull, 1997791768202886ull}}, {{17672283932875639972ull, 1598233414562308ull}}, {{3069780702074781008ull, 1278586731649847ull}}, {{8600997938061559940ull, 2045738770639755ull}}, {{6880798350449247952ull, 1636591016511804ull}}, {{9193987495101308684ull, 1309272813209443ull}}, {{11021031177420183572ull, 2094836501135109ull}}, {{12506173756678057180ull, 1675869200908087ull}}, {{2626241375858625096ull, 1340695360726470ull}}, {{4201986201373800156ull, 2145112577162352ull}}, {{14429635405324771096ull, 1716090061729881ull}}, {{7854359509517906552ull, 1372872049383905ull}}, {{12566975215228650484ull, 2196595279014248ull}}, {{17432277801666741032ull, 1757276223211398ull}}, {{2877775797107661856ull, 1405820978569119ull}}, {{11983138904856079620ull, 2249313565710590ull}}, {{9586511123884863696ull, 1799450852568472ull}}, {{290511269624070308ull, 1439560682054778ull}}, {{7611106645183076892ull, 1151648545643822ull}}, {{15867119447034833352ull, 1842637673030115ull}}, {{12693695557627866684ull, 1474110138424092ull}}, {{2776258816618472700ull, 1179288110739274ull}}, {{11820711736073376964ull, 1886860977182838ull}}, {{16835267018342522220ull, 1509488781746270ull}}, {{13468213614674017776ull, 1207591025397016ull}}, {{14170444153994607796ull, 1932145640635226ull}}, {{7647006508453775912ull, 1545716512508181ull}}, {{2428256392021110404ull, 1236573210006545ull}}, {{3885210227233776652ull, 1978517136010472ull}}, {{14176214626012752288ull, 1582813708808377ull}}, {{3962274071326381184ull, 1266250967046702ull}}, {{10028987328864120220ull, 2026001547274723ull}}, {{15401887492575116824ull, 1620801237819778ull}}, {{1253463549834362488ull, 1296640990255823ull}}, {{16762936938702621276ull, 2074625584409316ull}}, {{9721000736220186696ull, 1659700467527453ull}}, {{15155498218459970004ull, 1327760374021962ull}}, {{9491401890568310712ull, 2124416598435140ull}}, {{7593121512454648568ull, 1699533278748112ull}}, {{17142543654189449824ull, 1359626622998489ull}}, {{16360023402477388752ull, 2175402596797583ull}}, {{2019972277756180032ull, 1740322077438067ull}}, {{12684024266430674996ull, 1392257661950453ull}}, {{16605090011547169668ull, 2227612259120725ull}}, {{13284072009237735736ull, 1782089807296580ull}}, {{10627257607390188588ull, 1425671845837264ull}}, {{12191154900654061192ull, 1140537476669811ull}}, {{12127150211562677264ull, 1824859962671698ull}}, {{17080417798733962456ull, 1459887970137358ull}}, {{2596287794761438996ull, 1167910376109887ull}}, {{7843409286360212716ull, 1868656601775819ull}}, {{9964076243830080496ull, 1494925281420655ull}}, {{7971260995064064396ull, 1195940225136524ull}}, {{1685971147876772064ull, 1913504360218439ull}}, {{5038125733043327976ull, 1530803488174751ull}}, {{341151771692752056ull, 1224642790539801ull}}, {{11613889278934134260ull, 1959428464863681ull}}, {{5601762608405397084ull, 1567542771890945ull}}, {{4481410086724317668ull, 1254034217512756ull}}, {{18238302582984639240ull, 2006454748020409ull}}, {{18279990881129621716ull, 1605163798416327ull}}, {{7245295075419876724ull, 1284131038733062ull}}, {{15281820935413713084ull, 2054609661972899ull}}, {{15914805563072880792ull, 1643687729578319ull}}, {{16421193265200214956ull, 1314950183662655ull}}, {{7827165150610792312ull, 2103920293860249ull}}, {{9951080935230544172ull, 1683136235088199ull}}, {{11650213562926345660ull, 1346508988070559ull}}, {{7572295256456422092ull, 2154414380912895ull}}, {{6057836205165137672ull, 1723531504730316ull}}, {{1156920149390199812ull, 1378825203784253ull}}, {{16608467497991960996ull, 2206120326054804ull}}, {{16976122813135479120ull, 1764896260843843ull}}, {{2512851806282652324ull, 1411917008675075ull}}, {{2010281445026121860ull, 1129533606940060ull}}, {{3216450312041794976ull, 1807253771104096ull}}, {{17330555508601077276ull, 1445803016883276ull}}, {{10175095592138951496ull, 1156642413506621ull}}, {{8901455317938501748ull, 1850627861610594ull}}, {{10810513069092711720ull, 1480502289288475ull}}, {{8648410455274169376ull, 1184401831430780ull}}, {{13837456728438671004ull, 1895042930289248ull}}, {{1918938525205832ull, 1516034344231399ull}}, {{3690883965562074988ull, 1212827475385119ull}}, {{13284111974383140632ull, 1940523960616190ull}}, {{10627289579506512504ull, 1552419168492952ull}}, {{1123134034121389356ull, 1241935334794362ull}}, {{5486363269336133296ull, 1987096535670979ull}}, {{8078439430210816960ull, 1589677228536783ull}}, {{13841449173652474212ull, 1271741782829426ull}}, {{14767621048360138096ull, 2034786852527082ull}}, {{4435399209204289828ull, 1627829482021666ull}}, {{18305714626331073156ull, 1302263585617332ull}}, {{14531748143162075756ull, 2083621736987732ull}}, {{4246700885045839960ull, 1666897389590186ull}}, {{18154755967004313260ull, 1333517911672148ull}}, {{6911516658755439276ull, 2133628658675438ull}}, {{12907910956488172068ull, 1706902926940350ull}}, {{10326328765190537656ull, 1365522341552280ull}}, {{16522126024304860248ull, 2184835746483648ull}}, {{2149654375218157228ull, 1747868597186919ull}}, {{5409072314916436104ull, 1398294877749535ull}}, {{8654515703866297772ull, 2237271804399256ull}}, {{3234263748351127892ull, 1789817443519405ull}}, {{2587410998680902312ull, 1431853954815524ull}}, {{5759277613686632172ull, 1145483163852419ull}}, {{16593541811382432124ull, 1832773062163870ull}}, {{13274833449105945700ull, 1466218449731096ull}}, {{6930517944542846236ull, 1172974759784877ull}}, {{14778177526010464304ull, 1876759615655803ull}}, {{754495576582640472ull, 1501407692524643ull}}, {{7982294090749933024ull, 1201126154019714ull}}, {{1703624100974161868ull, 1921801846431543ull}}, {{8741596910263150140ull, 1537441477145234ull}}, {{10682626342952430436ull, 1229953181716187ull}}, {{2334806889756247408ull, 1967925090745900ull}}, {{1867845511804997924ull, 1574340072596720ull}}, {{1494276409443998340ull, 1259472058077376ull}}, {{13458888699336128312ull, 2015155292923801ull}}, {{7077762144726992328ull, 1612124234339041ull}}, {{1972860901039683540ull, 1289699387471233ull}}, {{17913972700631134956ull, 2063519019953972ull}}, {{6952480531021087316ull, 1650815215963178ull}}, {{12940682054300690500ull, 1320652172770542ull}}, {{5947696027913463508ull, 2113043476432868ull}}, {{12136854451814591452ull, 1690434781146294ull}}, {{13398832376193583484ull, 1352347824917035ull}}, {{2991387728200181960ull, 2163756519867257ull}}, {{13461156626785876536ull, 1731005215893805ull}}, {{10768925301428701228ull, 1384804172715044ull}}, {{6162234038060191000ull, 2215686676344071ull}}, {{1240438415706242476ull, 1772549341075257ull}}, {{12060397176790724948ull, 1418039472860205ull}}, {{9648317741432579960ull, 1134431578288164ull}}, {{4369261942066396968ull, 1815090525261063ull}}, {{10874107183136938220ull, 1452072420208850ull}}, {{8699285746509550576ull, 1161657936167080ull}}, {{13918857194415280920ull, 1858652697867328ull}}, {{67039311306493768ull, 1486922158293863ull}}, {{7432329078529015660ull, 1189537726635090ull}}, {{11891726525646425056ull, 1903260362616144ull}}, {{13202730035259050368ull, 1522608290092915ull}}, {{10562184028207240296ull, 1218086632074332ull}}, {{2142099186163943180ull, 1948938611318932ull}}, {{12781725793156885512ull, 1559150889055145ull}}, {{10225380634525508408ull, 1247320711244116ull}}, {{8981911385756992812ull, 1995713137990586ull}}, {{3496180293863683924ull, 1596570510392469ull}}, {{6486293049832857464ull, 1277256408313975ull}}, {{10378068879732571940ull, 2043610253302360ull}}, {{8302455103786057552ull, 1634888202641888ull}}, {{14020661712512666688ull, 1307910562113510ull}}, {{3986314666310715084ull, 2092656899381617ull}}, {{14257098177274303036ull, 1674125519505293ull}}, {{337632097593711460ull, 1339300415604235ull}}, {{540211356149938336ull, 2142880664966776ull}}, {{15189564343887591964ull, 1714304531973420ull}}, {{12151651475110073568ull, 1371443625578736ull}}, {{12063944730692297068ull, 2194309800925978ull}}, {{17029853414037658300ull, 1755447840740782ull}}, {{6245185101746305992ull, 1404358272592626ull}}, {{2613598533310268944ull, 2246973236148202ull}}, {{13158925270873946124ull, 1797578588918561ull}}, {{6837791401957246576ull, 1438062871134849ull}}, {{9159581936307707584ull, 1150450296907879ull}}, {{3587284653866601164ull, 1840720475052607ull}}, {{13937874167319011900ull, 1472576380042085ull}}, {{11150299333855209520ull, 1178061104033668ull}}, {{14151130119426424912ull, 1884897766453869ull}}, {{15010252910283050252ull, 1507918213163095ull}}, {{12008202328226440200ull, 1206334570530476ull}}, {{11834426095678483676ull, 1930135312848762ull}}, {{2088843247058966292ull, 1544108250279010ull}}, {{1671074597647173036ull, 1235286600223208ull}}, {{17431114615203118148ull, 1976458560357132ull}}, {{6566194062678673872ull, 1581166848285706ull}}, {{1563606435401028776ull, 1264933478628565ull}}, {{2501770296641646040ull, 2023893565805704ull}}, {{5690765052055227156ull, 1619114852644563ull}}, {{11931309671128002368ull, 1295291882115650ull}}, {{643351400095252176ull, 2072467011385041ull}}, {{15272076379043843036ull, 1657973609108032ull}}, {{4838963473751253780ull, 1326378887286426ull}}, {{363643928518185404ull, 2122206219658282ull}}, {{11358961587040279292ull, 1697764975726625ull}}, {{9087169269632223432ull, 1358211980581300ull}}, {{14539470831411557496ull, 2173139168930080ull}}, {{11631576665129245996ull, 1738511335144064ull}}, {{12994610146845307120ull, 1390809068115251ull}}, {{13412678605468670744ull, 2225294508984402ull}}, {{3351445254891115948ull, 1780235607187522ull}}, {{13749202648138623728ull, 1424188485750017ull}}, {{3620664489027078336ull, 1139350788600014ull}}, {{13171760811927145984ull, 1822961261760022ull}}, {{3158711020057896140ull, 1458369009408018ull}}, {{9905666445530137560ull, 1166695207526414ull}}, {{4781019868622489128ull, 1866712332042263ull}}, {{11203513524381811948ull, 1493369865633810ull}}, {{8962810819505449556ull, 1194695892507048ull}}, {{10651148496466808968ull, 1911513428011277ull}}, {{1142221167689626528ull, 1529210742409022ull}}, {{11981823378377432192ull, 1223368593927217ull}}, {{4413522146436250216ull, 1957389750283548ull}}, {{10909515346632820820ull, 1565911800226838ull}}, {{16106309906790077300ull, 1252729440181470ull}}, {{7323351777154572068ull, 2004367104290353ull}}, {{13237379051207478300ull, 1603493683432282ull}}, {{3211205611482161992ull, 1282794946745826ull}}, {{16205975422597190160ull, 2052471914793321ull}}, {{9275431523335841804ull, 1641977531834657ull}}, {{41647589184852796ull, 1313582025467726ull}}, {{11134682586921495444ull, 2101731240748361ull}}, {{5218397254795286032ull, 1681384992598689ull}}, {{7864066618578139148ull, 1345107994078951ull}}, {{5203808960241201992ull, 2152172790526322ull}}, {{15231093612418692564ull, 1721738232421057ull}}, {{4806177260451133404ull, 1377390585936846ull}}, {{311185987237992800ull, 2203824937498954ull}}, {{3938297604532304564ull, 1763059949999163ull}}, {{10529335713109664296ull, 1410447959999330ull}}, {{8423468570487731436ull, 1128358367999464ull}}, {{2409503268554639332ull, 1805373388799143ull}}, {{9306300244327532112ull, 1444298711039314ull}}, {{11134389010203936012ull, 1155438968831451ull}}, {{10436324786842476972ull, 1848702350130322ull}}, {{970362199990160932ull, 1478961880104258ull}}, {{8154987389475949392ull, 1183169504083406ull}}, {{5669282193677698380ull, 1893071206533450ull}}, {{4535425754942158704ull, 1514456965226760ull}}, {{3628340603953726964ull, 1211565572181408ull}}, {{2115996151584052820ull, 1938504915490253ull}}, {{9071494550751062900ull, 1550803932392202ull}}, {{18325242084826581288ull, 1240643145913761ull}}, {{3494945632529157804ull, 1985029033462019ull}}, {{6485305320765236564ull, 1588023226769615ull}}, {{5188244256612189252ull, 1270418581415692ull}}, {{11990539625321413128ull, 2032669730265107ull}}, {{2213734070773309856ull, 1626135784212086ull}}, {{16528382515586289176ull, 1300908627369668ull}}, {{4309319136486600744ull, 2081453803791470ull}}, {{3447455309189280596ull, 1665163043033176ull}}, {{17515359506319065768ull, 1332130434426540ull}}, {{9577831136400953616ull, 2131408695082465ull}}, {{7662264909120762892ull, 1705126956065972ull}}, {{17197858371522341284ull, 1364101564852777ull}}, {{12759178135468104760ull, 2182562503764444ull}}, {{13896691323116394132ull, 1746050003011555ull}}, {{11117353058493115304ull, 1396840002409244ull}}, {{6719718449363253520ull, 2234944003854791ull}}, {{1686425944748692492ull, 1787955203083833ull}}, {{8727838385282774640ull, 1430364162467066ull}}, {{3292921893484309388ull, 1144291329973653ull}}, {{1579326214832984696ull, 1830866127957845ull}}, {{1263460971866387756ull, 1464692902366276ull}}, {{15768164036460751500ull, 1171754321893020ull}}, {{6782318384627650784ull, 1874806915028833ull}}, {{12804552337185941272ull, 1499845532023066ull}}, {{6554293055006842696ull, 1199876425618453ull}}, {{6797520073269037988ull, 1919802280989525ull}}, {{5438016058615230392ull, 1535841824791620ull}}, {{4350412846892184312ull, 1228673459833296ull}}, {{18028706999253225872ull, 1965877535733273ull}}, {{3354919155176849728ull, 1572702028586619ull}}, {{6373284138883390104ull, 1258161622869295ull}}, {{10197254622213424168ull, 2013058596590872ull}}, {{779106068286918688ull, 1610446877272698ull}}, {{8001982484113355596ull, 1288357501818158ull}}, {{9113823159839458632ull, 2061372002909053ull}}, {{14669756157355387552ull, 1649097602327242ull}}, {{4357107296400489392ull, 1319278081861794ull}}, {{14350069303724603676ull, 2110844930978870ull}}, {{11480055442979682940ull, 1688675944783096ull}}, {{5494695539641836028ull, 1350940755826477ull}}, {{12480861678168847972ull, 2161505209322363ull}}, {{17363386972018899024ull, 1729204167457890ull}}, {{13890709577615119220ull, 1383363333966312ull}}, {{7467740065216549460ull, 2213381334346100ull}}, {{5974192052173239568ull, 1770705067476880ull}}, {{4779353641738591652ull, 1416564053981504ull}}, {{7512831728132783644ull, 1133251243185203ull}}, {{8331181950270543508ull, 1813201989096325ull}}, {{6664945560216434808ull, 1450561591277060ull}}, {{5331956448173147844ull, 1160449273021648ull}}, {{4841781502335126232ull, 1856718836834637ull}}, {{14941471646093831952ull, 1485375069467709ull}}, {{15642526131616975884ull, 1188300055574167ull}}, {{10270646551619520124ull, 1901280088918668ull}}, {{15595214870779436748ull, 1521024071134934ull}}, {{16165520711365459720ull, 1216819256907947ull}}, {{11107437879217094260ull, 1946910811052716ull}}, {{5196601488631765084ull, 1557528648842173ull}}, {{11535978820389232712ull, 1246022919073738ull}}, {{14768217297880862020ull, 1993636670517981ull}}, {{8125225023562779292ull, 1594909336414385ull}}, {{6500180018850223432ull, 1275927469131508ull}}, {{6710939215418447172ull, 2041483950610413ull}}, {{12747449001818578384ull, 1633187160488330ull}}, {{10197959201454862708ull, 1306549728390664ull}}, {{5248688278102049360ull, 2090479565425063ull}}, {{11577648251965460136ull, 1672383652340050ull}}, {{9262118601572368108ull, 1337906921872040ull}}, {{14819389762515788972ull, 2140651074995264ull}}, {{15544860624754541500ull, 1712520859996211ull}}, {{8746539685061722876ull, 1370016687996969ull}}, {{2926417051873025636ull, 2192026700795151ull}}, {{17098528900466061800ull, 1753621360636120ull}}, {{13678823120372849440ull, 1402897088508896ull}}, {{14507419363112738460ull, 2244635341614234ull}}, {{15295284305232101092ull, 1795708273291387ull}}, {{4857529814701860224ull, 1436566618633110ull}}, {{3886023851761488180ull, 1149253294906488ull}}, {{2528289348076470768ull, 1838805271850381ull}}, {{16780026737428817904ull, 1471044217480304ull}}, {{17113370204684964648ull, 1176835373984243ull}}, {{5245299439044481496ull, 1882936598374790ull}}, {{4196239551235585196ull, 1506349278699832ull}}, {{14425038085214199128ull, 1205079422959865ull}}, {{4633316862633166988ull, 1928127076735785ull}}, {{3706653490106533592ull, 1542501661388628ull}}, {{10344020421569047520ull, 1234001329110902ull}}, {{1793037415542834740ull, 1974402126577444ull}}, {{5123778747176178112ull, 1579521701261955ull}}, {{4099022997740942492ull, 1263617361009564ull}}, {{13937134425869328632ull, 2021787777615302ull}}, {{3771009911211642260ull, 1617430222092242ull}}, {{14084854373195044776ull, 1293944177673793ull}}, {{399674108660609704ull, 2070310684278070ull}}, {{319739286928487764ull, 1656248547422456ull}}, {{15013186688510431504ull, 1324998837937964ull}}, {{12953052257390959436ull, 2119998140700743ull}}, {{17741139435396588196ull, 1695998512560594ull}}, {{17882260363059180880ull, 1356798810048475ull}}, {{10164872507185137792ull, 2170878096077561ull}}, {{4442549191006199908ull, 1736702476862049ull}}, {{7243388167546870252ull, 1389361981489639ull}}, {{521374623849261432ull, 2222979170383423ull}}, {{7795797328563229792ull, 1778383336306738ull}}, {{13615335492334404480ull, 1422706669045390ull}}, {{10892268393867523584ull, 1138165335236312ull}}, {{2670234171220396440ull, 1821064536378100ull}}, {{2136187336976317152ull, 1456851629102480ull}}, {{1708949869581053720ull, 1165481303281984ull}}, {{10113017420813506600ull, 1864770085251174ull}}, {{11779762751392715604ull, 1491816068200939ull}}, {{13113159015856082808ull, 1193452854560751ull}}, {{13602356795885911844ull, 1909524567297202ull}}, {{3503187807224908828ull, 1527619653837762ull}}, {{13870596690005658032ull, 1222095723070209ull}}, {{11124908259783321884ull, 1955353156912335ull}}, {{8899926607826657508ull, 1564282525529868ull}}, {{14498638915745146652ull, 1251426020423894ull}}, {{12129775820966503672ull, 2002281632678231ull}}, {{6014471842031292616ull, 1601825306142585ull}}, {{4811577473625034092ull, 1281460244914068ull}}, {{4009175143058144224ull, 2050336391862509ull}}, {{6896688929188425704ull, 1640269113490007ull}}, {{16585397587576471532ull, 1312215290792005ull}}, {{8089892066412802836ull, 2099544465267209ull}}, {{10161262467872152592ull, 1679635572213767ull}}, {{750312344813901428ull, 1343708457771014ull}}, {{8579197381186062928ull, 2149933532433622ull}}, {{17931404349174581312ull, 1719946825946897ull}}, {{6966425849855844404ull, 1375957460757518ull}}, {{7456932545027440724ull, 2201531937212029ull}}, {{9654894850763862900ull, 1761225549769623ull}}, {{15102613510094910968ull, 1408980439815698ull}}, {{1014044363850197804ull, 1127184351852559ull}}, {{9001168611644137132ull, 1803494962964094ull}}, {{10890283704057220028ull, 1442795970371275ull}}, {{8712226963245776024ull, 1154236776297020ull}}, {{13939563141193241640ull, 1846778842075232ull}}, {{3772952883470772664ull, 1477423073660186ull}}, {{17775757565744259424ull, 1181938458928148ull}}, {{6305119216739353140ull, 1891101534285038ull}}, {{12422793002875303156ull, 1512881227428030ull}}, {{9938234402300242524ull, 1210304981942424ull}}, {{4833128599454657072ull, 1936487971107879ull}}, {{7555851694305635980ull, 1549190376886303ull}}, {{13423378984928329432ull, 1239352301509042ull}}, {{6720011116917685796ull, 1982963682414468ull}}, {{12754706523017969284ull, 1586370945931574ull}}, {{13893114033156285752ull, 1269096756745259ull}}, {{11160936008824326232ull, 2030554810792415ull}}, {{8928748807059460984ull, 1624443848633932ull}}, {{18211045489873299756ull, 1299555078907145ull}}, {{10690928710087727996ull, 2079288126251433ull}}, {{15931440597554003044ull, 1663430501001146ull}}, {{9055803663301292112ull, 1330744400800917ull}}, {{18178634676023977704ull, 2129191041281467ull}}, {{7164210111335361516ull, 1703352833025174ull}}, {{9420716903810199536ull, 1362682266420139ull}}, {{4005100601870588288ull, 2180291626272223ull}}, {{10582778110980291276ull, 1744233301017778ull}}, {{15844920118268053668ull, 1395386640814222ull}}, {{10594476930261244576ull, 2232618625302756ull}}, {{4786232729467085336ull, 1786094900242205ull}}, {{3828986183573668268ull, 1428875920193764ull}}, {{6752537761600844936ull, 1143100736155011ull}}, {{3425362789077531256ull, 1828961177848018ull}}, {{10118987860745845652ull, 1463168942278414ull}}, {{11784539103338586844ull, 1170535153822731ull}}, {{11476564935857918304ull, 1872856246116370ull}}, {{9181251948686334644ull, 1498284996893096ull}}, {{3655652744207157392ull, 1198627997514477ull}}, {{9538393205473362148ull, 1917804796023163ull}}, {{15009412193862510364ull, 1534243836818530ull}}, {{12007529755090008292ull, 1227395069454824ull}}, {{8144001163918282300ull, 1963832111127719ull}}, {{10204549745876536160ull, 1571065688902175ull}}, {{8163639796701228928ull, 1256852551121740ull}}, {{13061823674721966288ull, 2010964081794784ull}}, {{14138807754519483352ull, 1608771265435827ull}}, {{3932348574131766036ull, 1287017012348662ull}}, {{9981106533352735980ull, 2059227219757859ull}}, {{11674234041424099108ull, 1647381775806287ull}}, {{1960689603655458640ull, 1317905420645030ull}}, {{3137103365848733824ull, 2108648673032048ull}}, {{9888380322162807704ull, 1686918938425638ull}}, {{15289401887214066812ull, 1349535150740510ull}}, {{6016298945832955280ull, 2159256241184817ull}}, {{15881085600892095196ull, 1727404992947853ull}}, {{1636822036487945184ull, 1381923994358283ull}}, {{17376310517348353592ull, 2211078390973252ull}}, {{6522350784394862224ull, 1768862712778602ull}}, {{16285927071741620748ull, 1415090170222881ull}}, {{9339392842651386276ull, 1132072136178305ull}}, {{14943028548242218044ull, 1811315417885288ull}}, {{886376394368043464ull, 1449052334308231ull}}, {{15466496374462076064ull, 1159241867446584ull}}, {{13678347754913590736ull, 1854786987914535ull}}, {{10942678203930872588ull, 1483829590331628ull}}, {{16132840192628518716ull, 1187063672265302ull}}, {{11055149049237988652ull, 1899301875624484ull}}, {{12533468054132301244ull, 1519441500499587ull}}, {{2648076813822020348ull, 1215553200399670ull}}, {{4236922902115232560ull, 1944885120639472ull}}, {{14457584765917917016ull, 1555908096511577ull}}, {{4187370183250512968ull, 1244726477209262ull}}, {{10389141107942731072ull, 1991562363534819ull}}, {{12000661701096095180ull, 1593249890827855ull}}, {{9600529360876876144ull, 1274599912662284ull}}, {{4292800533177270860ull, 2039359860259655ull}}, {{3434240426541816688ull, 1631487888207724ull}}, {{6436741155975363676ull, 1305190310566179ull}}, {{17677483479044402528ull, 2088304496905886ull}}, {{10452637968493611696ull, 1670643597524709ull}}, {{12051459189536799680ull, 1336514878019767ull}}, {{4524939444291238196ull, 2138423804831628ull}}, {{10998649184916811204ull, 1710739043865302ull}}, {{1420221718449628316ull, 1368591235092242ull}}, {{5961703564261315632ull, 2189745976147587ull}}, {{15837409295634783472ull, 1751796780918069ull}}, {{16359276251249737100ull, 1401437424734455ull}}, {{7728097928290027748ull, 2242299879575129ull}}, {{9871827157373932520ull, 1793839903660103ull}}, {{15276159355382966664ull, 1435071922928082ull}}, {{4842229854822552684ull, 1148057538342466ull}}, {{368870138232263648ull, 1836892061347946ull}}, {{15052491369553452212ull, 1469513649078356ull}}, {{8352644280900851444ull, 1175610919262685ull}}, {{13364230849441362312ull, 1880977470820296ull}}, {{7002035864811179528ull, 1504781976656237ull}}, {{16669675136074674592ull, 1203825581324989ull}}, {{15603433773493748376ull, 1926120930119983ull}}, {{1414700574569267732ull, 1540896744095987ull}}, {{12199806903881145156ull, 1232717395276789ull}}, {{8451644601984101280ull, 1972347832442863ull}}, {{14140013311071101668ull, 1577878265954290ull}}, {{11312010648856881336ull, 1262302612763432ull}}, {{3341821779203368844ull, 2019684180421492ull}}, {{13741503867588426044ull, 1615747344337193ull}}, {{18371900723554561480ull, 1292597875469754ull}}, {{18326994713461567404ull, 2068156600751607ull}}, {{7282898141285433276ull, 1654525280601286ull}}, {{2136969698286436296ull, 1323620224481029ull}}, {{10797849146742118724ull, 2117792359169646ull}}, {{4948930502651784656ull, 1694233887335717ull}}, {{15027190846347158692ull, 1355387109868573ull}}, {{1907412465703991968ull, 2168619375789718ull}}, {{8904627602047014220ull, 1734895500631774ull}}, {{10813050896379521700ull, 1387916400505419ull}}, {{6232834989981503752ull, 2220666240808671ull}}, {{1296919177243292680ull, 1776532992646937ull}}, {{12105581786020365112ull, 1421226394117549ull}}, {{13373814243558202412ull, 1136981115294039ull}}, {{10330056345467392892ull, 1819169784470463ull}}, {{15642742705857734960ull, 1455335827576370ull}}, {{12514194164686187968ull, 1164268662061096ull}}, {{12644013034014080100ull, 1862829859297754ull}}, {{13804559241953174404ull, 1490263887438203ull}}, {{18422345023046360168ull, 1192211109950562ull}}, {{14718356777906534980ull, 1907537775920900ull}}, {{11774685422325227984ull, 1526030220736720ull}}, {{9419748337860182384ull, 1220824176589376ull}}, {{7692899711092471172ull, 1953318682543002ull}}, {{17222366213099707908ull, 1562654946034401ull}}, {{10088544155737856004ull, 1250123956827521ull}}, {{8762973019696748960ull, 2000198330924034ull}}, {{10699727230499309488ull, 1600158664739227ull}}, {{1181084154915626944ull, 1280126931791382ull}}, {{5579083462606913436ull, 2048203090866211ull}}, {{773917955343620424ull, 1638562472692969ull}}, {{4308483179016806664ull, 1310849978154375ull}}, {{6893573086426890660ull, 2097359965047000ull}}, {{5514858469141512528ull, 1677887972037600ull}}, {{4411886775313210024ull, 1342310377630080ull}}, {{7059018840501136036ull, 2147696604208128ull}}, {{13025912701884729476ull, 1718157283366502ull}}, {{3042032532023962936ull, 1374525826693202ull}}, {{8556600865980251020ull, 2199241322709123ull}}, {{14223978322268021460ull, 1759393058167298ull}}, {{311136213588686200ull, 1407514446533839ull}}, {{3938257785612859280ull, 1126011557227071ull}}, {{17369258901206305820ull, 1801618491563313ull}}, {{2827360676739313688ull, 1441294793250651ull}}, {{17019283800359092244ull, 1153035834600520ull}}, {{8784110006864995972ull, 1844857335360833ull}}, {{14405985634975817424ull, 1475885868288666ull}}, {{7835439693238743616ull, 1180708694630933ull}}, {{8847354694440079464ull, 1889133911409493ull}}, {{14456581385035884216ull, 1511307129127594ull}}, {{15254613922770617696ull, 1209045703302075ull}}, {{5960638202723436700ull, 1934473125283321ull}}, {{1079161747436839036ull, 1547578500226657ull}}, {{11931375842175202196ull, 1238062800181325ull}}, {{643457273770771900ull, 1980900480290121ull}}, {{15272161077984258812ull, 1584720384232096ull}}, {{8528380047645496728ull, 1267776307385677ull}}, {{17334756890974705088ull, 2028442091817083ull}}, {{2799759068554033100ull, 1622753673453667ull}}, {{13307853699068957448ull, 1298202938762933ull}}, {{17603217103768421596ull, 2077124702020693ull}}, {{3014527238789006308ull, 1661699761616555ull}}, {{2411621791031205044ull, 1329359809293244ull}}, {{11237292495133748720ull, 2126975694869190ull}}, {{8989833996106998976ull, 1701580555895352ull}}, {{18259913641111330152ull, 1361264444716281ull}}, {{3390420122584755980ull, 2178023111546051ull}}, {{17469731357035446076ull, 1742418489236840ull}}, {{13975785085628356860ull, 1393934791389472ull}}, {{7603860878037729684ull, 2230295666223156ull}}, {{2393739887688273424ull, 1784236532978525ull}}, {{1914991910150618740ull, 1427389226382820ull}}, {{1531993528120494992ull, 1141911381106256ull}}, {{13519236089218522956ull, 1827058209770009ull}}, {{14504737686116728688ull, 1461646567816007ull}}, {{4225092519409562304ull, 1169317254252806ull}}, {{17828194475281030656ull, 1870907606804489ull}}, {{17951904394966734848ull, 1496726085443591ull}}, {{10672174701231477556ull, 1197380868354873ull}}, {{13386130707228453764ull, 1915809389367797ull}}, {{3330206936298942364ull, 1532647511494238ull}}, {{10042863178522974540ull, 1226118009195390ull}}, {{16068581085636759264ull, 1961788814712624ull}}, {{16544213683251317732ull, 1569431051770099ull}}, {{16924719761342964508ull, 1255544841416079ull}}, {{16011505173923012248ull, 2008871746265727ull}}, {{5430506509654589152ull, 1607097397012582ull}}, {{15412451651949402288ull, 1285677917610065ull}}, {{6213178569409492048ull, 2057084668176105ull}}, {{4970542855527593640ull, 1645667734540884ull}}, {{7665783099163985232ull, 1316534187632707ull}}, {{15954601773404286696ull, 2106454700212331ull}}, {{9074332603981519036ull, 1685163760169865ull}}, {{7259466083185215228ull, 1348131008135892ull}}, {{15304494547838254688ull, 2157009613017427ull}}, {{4864898008786783104ull, 1725607690413942ull}}, {{14959964851255157452ull, 1380486152331153ull}}, {{1799850873556789984ull, 2208777843729846ull}}, {{16197275957813073280ull, 1767022274983876ull}}, {{9268471951508548300ull, 1413617819987101ull}}, {{3725428746464928316ull, 1130894255989681ull}}, {{17028732438569616280ull, 1809430809583489ull}}, {{17312334765597603344ull, 1447544647666791ull}}, {{10160518997736172352ull, 1158035718133433ull}}, {{12567481581635965444ull, 1852857149013493ull}}, {{17432682894792593000ull, 1482285719210794ull}}, {{17635495130575984724ull, 1185828575368635ull}}, {{9770048135212023940ull, 1897325720589817ull}}, {{437340878685798508ull, 1517860576471854ull}}, {{4039221517690549128ull, 1214288461177483ull}}, {{2773405613562968284ull, 1942861537883973ull}}, {{9597422120334195272ull, 1554289230307178ull}}, {{15056635325751176864ull, 1243431384245742ull}}, {{9333221262234241692ull, 1989490214793188ull}}, {{14845274639271214000ull, 1591592171834550ull}}, {{11876219711416971200ull, 1273273737467640ull}}, {{555207464557602304ull, 2037237979948225ull}}, {{444165971646081840ull, 1629790383958580ull}}, {{355332777316865472ull, 1303832307166864ull}}, {{7947230073190805404ull, 2086131691466982ull}}, {{17425830502778375292ull, 1668905353173585ull}}, {{13940664402222700232ull, 1335124282538868ull}}, {{168970155104858436ull, 2136198852062190ull}}, {{135176124083886748ull, 1708959081649752ull}}, {{11176187343492840368ull, 1367167265319801ull}}, {{10503202120104723944ull, 2187467624511682ull}}, {{1023864066599958508ull, 1749974099609346ull}}, {{15576486512247608100ull, 1399979279687476ull}}, {{17543680790112352312ull, 2239966847499962ull}}, {{6656247002606061204ull, 1791973477999970ull}}, {{5324997602084848964ull, 1433578782399976ull}}, {{570649266925968848ull, 1146863025919981ull}}, {{11981085271307281124ull, 1834980841471969ull}}, {{13274217031787735224ull, 1467984673177575ull}}, {{10619373625430188176ull, 1174387738542060ull}}, {{16990997800688301084ull, 1879020381667296ull}}, {{9903449425808730544ull, 1503216305333837ull}}, {{544061911163163788ull, 1202573044267070ull}}, {{870499057861062064ull, 1924116870827312ull}}, {{11764445690514580620ull, 1539293496661849ull}}, {{13100905367153574820ull, 1231434797329479ull}}, {{9893402143219988740ull, 1970295675727167ull}}, {{536024085092170348ull, 1576236540581734ull}}, {{4118168082815646600ull, 1260989232465387ull}}, {{10278417747246944884ull, 2017582771944619ull}}, {{11912083012539466232ull, 1614066217555695ull}}, {{9529666410031572984ull, 1291252974044556ull}}, {{7868768626566696128ull, 2066004758471290ull}}, {{6295014901253356904ull, 1652803806777032ull}}, {{16104058365228416492ull, 1322243045421625ull}}, {{7319749310655914772ull, 2115588872674601ull}}, {{2166450633782821492ull, 1692471098139681ull}}, {{16490555765993898488ull, 1353976878511744ull}}, {{15316842781364506612ull, 2166363005618791ull}}, {{8564125410349694964ull, 1733090404495033ull}}, {{14229997957763576620ull, 1386472323596026ull}}, {{15389299102937901944ull, 2218355717753642ull}}, {{4932741652866500908ull, 1774684574202914ull}}, {{7635542137035111048ull, 1419747659362331ull}}, {{2419084894886178516ull, 1135798127489865ull}}, {{3870535831817885628ull, 1817277003983784ull}}, {{6785777480196218824ull, 1453821603187027ull}}, {{16496668428382706028ull, 1163057282549621ull}}, {{569227782218957384ull, 1860891652079395ull}}, {{455382225775165908ull, 1488713321663516ull}}, {{15121701039587774020ull, 1190970657330812ull}}, {{9437326404372797136ull, 1905553051729300ull}}, {{7549861123498237708ull, 1524442441383440ull}}, {{6039888898798590168ull, 1219553953106752ull}}, {{13353171052819654592ull, 1951286324970803ull}}, {{18061234471739544320ull, 1561029059976642ull}}, {{7070289947907814808ull, 1248823247981314ull}}, {{244417472426772728ull, 1998117196770103ull}}, {{7574231607425238828ull, 1598493757416082ull}}, {{17127431730165922032ull, 1278795005932865ull}}, {{8957146694555923636ull, 2046072009492585ull}}, {{7165717355644738908ull, 1636857607594068ull}}, {{13111271513999611772ull, 1309486086075254ull}}, {{9909987978173647868ull, 2095177737720407ull}}, {{549292753055097648ull, 1676142190176326ull}}, {{15196829461411719408ull, 1340913752141060ull}}, {{5868183064549199440ull, 2145462003425697ull}}, {{15762592895865090520ull, 1716369602740557ull}}, {{5231376687208251772ull, 1373095682192446ull}}, {{991505070049382188ull, 2196953091507914ull}}, {{4482552870781416072ull, 1757562473206331ull}}, {{18343437555592774152ull, 1406049978565064ull}}, {{18281453644722707672ull, 2249679965704103ull}}, {{3557116471552435168ull, 1799743972563283ull}}, {{10224390806725768780ull, 1439795178050626ull}}, {{4490163830638704700ull, 1151836142440501ull}}, {{18252308573247658492ull, 1842937827904801ull}}, {{10912498043856216468ull, 1474350262323841ull}}, {{5040649620343062852ull, 1179480209859073ull}}, {{4375690577806990240ull, 1887168335774517ull}}, {{14568598906471323164ull, 1509734668619613ull}}, {{586832680951327560ull, 1207787734895691ull}}, {{12006978733747855068ull, 1932460375833105ull}}, {{9605582986998284052ull, 1545968300666484ull}}, {{11373815204340537564ull, 1236774640533187ull}}, {{3440709067977218812ull, 1978839424853100ull}}, {{2752567254381775048ull, 1583071539882480ull}}, {{2202053803505420040ull, 1266457231905984ull}}, {{10901983715092492712ull, 2026331571049574ull}}, {{12410935786815904492ull, 1621065256839659ull}}, {{13618097444194633916ull, 1296852205471727ull}}, {{7031560651743772972ull, 2074963528754764ull}}, {{9314597336136928700ull, 1659970823003811ull}}, {{3762329054167632636ull, 1327976658403049ull}}, {{13398424116152032868ull, 2124762653444878ull}}, {{18097436922405446940ull, 1699810122755902ull}}, {{7099251908440536904ull, 1359848098204722ull}}, {{15048151868246769372ull, 2175756957127555ull}}, {{12038521494597415500ull, 1740605565702044ull}}, {{13320166010419842720ull, 1392484452561635ull}}, {{2865521542962196740ull, 2227975124098617ull}}, {{13360463678595488360ull, 1782380099278893ull}}, {{18067068572360211336ull, 1425904079423114ull}}, {{18143003672630079392ull, 1140723263538491ull}}, {{3203364173014754764ull, 1825157221661587ull}}, {{13630737782637534780ull, 1460125777329269ull}}, {{14593939040851938148ull, 1168100621863415ull}}, {{4903558391653549420ull, 1868960994981465ull}}, {{3922846713322839536ull, 1495168795985172ull}}, {{14206323814884002596ull, 1196135036788137ull}}, {{7972722844846762864ull, 1913816058861020ull}}, {{6378178275877410292ull, 1531052847088816ull}}, {{1413193805960017908ull, 1224842277671053ull}}, {{17018505348503669948ull, 1959747644273684ull}}, {{17304153093544846284ull, 1567798115418947ull}}, {{6464624845352056380ull, 1254238492335158ull}}, {{6654050937821379884ull, 2006781587736253ull}}, {{12701938379740924552ull, 1605425270189002ull}}, {{2782853074308918996ull, 1284340216151202ull}}, {{8141913733636180720ull, 2054944345841923ull}}, {{13892228616392765220ull, 1643955476673538ull}}, {{45736448888481208ull, 1315164381338831ull}}, {{11141224762447300900ull, 2104263010142129ull}}, {{12602328624699751044ull, 1683410408113703ull}}, {{17460560529243621480ull, 1346728326490962ull}}, {{13179501587822153080ull, 2154765322385540ull}}, {{10543601270257722464ull, 1723812257908432ull}}, {{1056183386722357324ull, 1379049806326746ull}}, {{12757939862981502688ull, 2206479690122793ull}}, {{17585049519869022796ull, 1765183752098234ull}}, {{17757388430637128560ull, 1412147001678587ull}}, {{6827213115025882200ull, 1129717601342870ull}}, {{10923540984041411524ull, 1807548162148592ull}}, {{1360135157749308572ull, 1446038529718874ull}}, {{4777456940941357180ull, 1156830823775099ull}}, {{15022628734989992136ull, 1850929318040158ull}}, {{950056543766262740ull, 1480743454432127ull}}, {{11828091679238741160ull, 1184594763545701ull}}, {{11546249057298165212ull, 1895351621673122ull}}, {{1858301616354711520ull, 1516281297338498ull}}, {{8865338922567589864ull, 1213025037870798ull}}, {{10495193461366233460ull, 1940840060593277ull}}, {{1017457139609166120ull, 1552672048474622ull}}, {{11882012155913063864ull, 1242137638779697ull}}, {{4253824190493260892ull, 1987420222047516ull}}, {{18160454611362250008ull, 1589936177638012ull}}, {{7149666059605979360ull, 1271948942110410ull}}, {{11439465695369566976ull, 2035118307376656ull}}, {{5462223741553743256ull, 1628094645901325ull}}, {{4369778993242994604ull, 1302475716721060ull}}, {{6991646389188791368ull, 2083961146753696ull}}, {{1903968296609122772ull, 1667168917402957ull}}, {{12591221081513029188ull, 1333735133922365ull}}, {{1699209656711295084ull, 2133976214275785ull}}, {{1359367725369036068ull, 1707180971420628ull}}, {{8466191809779049500ull, 1365744777136502ull}}, {{17235255710388389524ull, 2185191643418403ull}}, {{2720158124084980648ull, 1748153314734723ull}}, {{9554824128751805164ull, 1398522651787778ull}}, {{11598369791260977940ull, 2237636242860445ull}}, {{9278695833008782352ull, 1790108994288356ull}}, {{3733607851665115560ull, 1432087195430685ull}}, {{2986886281332092448ull, 1145669756344548ull}}, {{1089669235389437592ull, 1833071610151277ull}}, {{11939781832537281044ull, 1466457288121021ull}}, {{5862476651287914512ull, 1173165830496817ull}}, {{13069311456802573544ull, 1877065328794907ull}}, {{3076751535958238188ull, 1501652263035926ull}}, {{17218796487734231840ull, 1201321810428740ull}}, {{9103330306665219332ull, 1922114896685985ull}}, {{7282664245332175464ull, 1537691917348788ull}}, {{13204829025749561020ull, 1230153533879030ull}}, {{2680982367489746016ull, 1968245654206449ull}}, {{5834134708733707136ull, 1574596523365159ull}}, {{8356656581728876032ull, 1259677218692127ull}}, {{17059999345508111972ull, 2015483549907403ull}}, {{2579953032180758608ull, 1612386839925923ull}}, {{9442660055228427532ull, 1289909471940738ull}}, {{11418907273623573732ull, 2063855155105181ull}}, {{5445777004156948660ull, 1651084124084145ull}}, {{4356621603325558928ull, 1320867299267316ull}}, {{18038641009546625256ull, 2113387678827705ull}}, {{14430912807637300204ull, 1690710143062164ull}}, {{15234079060851750488ull, 1352568114449731ull}}, {{16995828867878980132ull, 2164108983119570ull}}, {{13596663094303184104ull, 1731287186495656ull}}, {{7187981660700636960ull, 1385029749196525ull}}, {{11500770657121019140ull, 2216047598714440ull}}, {{9200616525696815312ull, 1772838078971552ull}}, {{18428539664783183216ull, 1418270463177241ull}}, {{11053482917084636252ull, 1134616370541793ull}}, {{13996223852593507680ull, 1815386192866869ull}}, {{14886327896816716464ull, 1452308954293495ull}}, {{11909062317453373172ull, 1161847163434796ull}}, {{11675802078441576432ull, 1858955461495674ull}}, {{13029990477495171468ull, 1487164369196539ull}}, {{14113341196738047496ull, 1189731495357231ull}}, {{15202648285297055348ull, 1903570392571570ull}}, {{12162118628237644280ull, 1522856314057256ull}}, {{6040346087848205100ull, 1218285051245805ull}}, {{9664553740557128160ull, 1949256081993288ull}}, {{15110340621929523176ull, 1559404865594630ull}}, {{12088272497543618540ull, 1247523892475704ull}}, {{8273189551844058696ull, 1996038227961127ull}}, {{17686598085700977924ull, 1596830582368901ull}}, {{10459929653818872016ull, 1277464465895121ull}}, {{9357189816626374580ull, 2043943145432194ull}}, {{11175100668043009988ull, 1635154516345755ull}}, {{8940080534434407988ull, 1308123613076604ull}}, {{3236082410869321816ull, 2092997780922567ull}}, {{13656912372921188420ull, 1674398224738053ull}}, {{18304227527820771384ull, 1339518579790442ull}}, {{14529368785545592920ull, 2143229727664708ull}} }; static const int bid_exponents_binary128[] = { -115, -112, -108, -105, -102, -99, -95, -92, -89, -85, -82, -79, -75, -72, -69, -65, -62, -59, -55, -52, -49, -45, -42, -39, -35, -32, -29, -25, -22, -19, -15, -12, -9, -6, -2, 1, 4, 8, 11, 14, 18, 21, 24, 28, 31, 34, 38, 41, 44, 48, 51, 54, 58, 61, 64, 68, 71, 74, 78, 81, 84, 87, 91, 94, 97, 101, 104, 107, 111, 114, 117, 121, 124, 127, 131, 134, 137, 141, 144, 147, 151, 154, 157, 161, 164, 167, 171, 174, 177, 181, 184, 187, 190, 194, 197, 200, 204, 207, 210, 214, 217, 220, 224, 227, 230, 234, 237, 240, 244, 247, 250, 254, 257, 260, 264, 267, 270, 274, 277, 280, 283, 287, 290, 293, 297, 300, 303, 307, 310, 313, 317, 320, 323, 327, 330, 333, 337, 340, 343, 347, 350, 353, 357, 360, 363, 367, 370, 373, 377, 380, 383, 386, 390, 393, 396, 400, 403, 406, 410, 413, 416, 420, 423, 426, 430, 433, 436, 440, 443, 446, 450, 453, 456, 460, 463, 466, 470, 473, 476, 479, 483, 486, 489, 493, 496, 499, 503, 506, 509, 513, 516, 519, 523, 526, 529, 533, 536, 539, 543, 546, 549, 553, 556, 559, 563, 566, 569, 572, 576, 579, 582, 586, 589, 592, 596, 599, 602, 606, 609, 612, 616, 619, 622, 626, 629, 632, 636, 639, 642, 646, 649, 652, 656, 659, 662, 666, 669, 672, 675, 679, 682, 685, 689, 692, 695, 699, 702, 705, 709, 712, 715, 719, 722, 725, 729, 732, 735, 739, 742, 745, 749, 752, 755, 759, 762, 765, 768, 772, 775, 778, 782, 785, 788, 792, 795, 798, 802, 805, 808, 812, 815, 818, 822, 825, 828, 832, 835, 838, 842, 845, 848, 852, 855, 858, 862, 865, 868, 871, 875, 878, 881, 885, 888, 891, 895, 898, 901, 905, 908, 911, 915, 918, 921, 925, 928, 931, 935, 938, 941, 945, 948, 951, 955, 958, 961, 964, 968, 971, 974, 978, 981, 984, 988, 991, 994, 998, 1001, 1004, 1008, 1011, 1014, 1018, 1021, 1024, 1028, 1031, 1034, 1038, 1041, 1044, 1048, 1051, 1054, 1058, 1061, 1064, 1067, 1071, 1074, 1077, 1081, 1084, 1087, 1091, 1094, 1097, 1101, 1104, 1107, 1111, 1114, 1117, 1121, 1124, 1127, 1131, 1134, 1137, 1141, 1144, 1147, 1151, 1154, 1157, 1160, 1164, 1167, 1170, 1174, 1177, 1180, 1184, 1187, 1190, 1194, 1197, 1200, 1204, 1207, 1210, 1214, 1217, 1220, 1224, 1227, 1230, 1234, 1237, 1240, 1244, 1247, 1250, 1253, 1257, 1260, 1263, 1267, 1270, 1273, 1277, 1280, 1283, 1287, 1290, 1293, 1297, 1300, 1303, 1307, 1310, 1313, 1317, 1320, 1323, 1327, 1330, 1333, 1337, 1340, 1343, 1347, 1350, 1353, 1356, 1360, 1363, 1366, 1370, 1373, 1376, 1380, 1383, 1386, 1390, 1393, 1396, 1400, 1403, 1406, 1410, 1413, 1416, 1420, 1423, 1426, 1430, 1433, 1436, 1440, 1443, 1446, 1449, 1453, 1456, 1459, 1463, 1466, 1469, 1473, 1476, 1479, 1483, 1486, 1489, 1493, 1496, 1499, 1503, 1506, 1509, 1513, 1516, 1519, 1523, 1526, 1529, 1533, 1536, 1539, 1543, 1546, 1549, 1552, 1556, 1559, 1562, 1566, 1569, 1572, 1576, 1579, 1582, 1586, 1589, 1592, 1596, 1599, 1602, 1606, 1609, 1612, 1616, 1619, 1622, 1626, 1629, 1632, 1636, 1639, 1642, 1645, 1649, 1652, 1655, 1659, 1662, 1665, 1669, 1672, 1675, 1679, 1682, 1685, 1689, 1692, 1695, 1699, 1702, 1705, 1709, 1712, 1715, 1719, 1722, 1725, 1729, 1732, 1735, 1738, 1742, 1745, 1748, 1752, 1755, 1758, 1762, 1765, 1768, 1772, 1775, 1778, 1782, 1785, 1788, 1792, 1795, 1798, 1802, 1805, 1808, 1812, 1815, 1818, 1822, 1825, 1828, 1832, 1835, 1838, 1841, 1845, 1848, 1851, 1855, 1858, 1861, 1865, 1868, 1871, 1875, 1878, 1881, 1885, 1888, 1891, 1895, 1898, 1901, 1905, 1908, 1911, 1915, 1918, 1921, 1925, 1928, 1931, 1934, 1938, 1941, 1944, 1948, 1951, 1954, 1958, 1961, 1964, 1968, 1971, 1974, 1978, 1981, 1984, 1988, 1991, 1994, 1998, 2001, 2004, 2008, 2011, 2014, 2018, 2021, 2024, 2028, 2031, 2034, 2037, 2041, 2044, 2047, 2051, 2054, 2057, 2061, 2064, 2067, 2071, 2074, 2077, 2081, 2084, 2087, 2091, 2094, 2097, 2101, 2104, 2107, 2111, 2114, 2117, 2121, 2124, 2127, 2130, 2134, 2137, 2140, 2144, 2147, 2150, 2154, 2157, 2160, 2164, 2167, 2170, 2174, 2177, 2180, 2184, 2187, 2190, 2194, 2197, 2200, 2204, 2207, 2210, 2214, 2217, 2220, 2223, 2227, 2230, 2233, 2237, 2240, 2243, 2247, 2250, 2253, 2257, 2260, 2263, 2267, 2270, 2273, 2277, 2280, 2283, 2287, 2290, 2293, 2297, 2300, 2303, 2307, 2310, 2313, 2317, 2320, 2323, 2326, 2330, 2333, 2336, 2340, 2343, 2346, 2350, 2353, 2356, 2360, 2363, 2366, 2370, 2373, 2376, 2380, 2383, 2386, 2390, 2393, 2396, 2400, 2403, 2406, 2410, 2413, 2416, 2419, 2423, 2426, 2429, 2433, 2436, 2439, 2443, 2446, 2449, 2453, 2456, 2459, 2463, 2466, 2469, 2473, 2476, 2479, 2483, 2486, 2489, 2493, 2496, 2499, 2503, 2506, 2509, 2513, 2516, 2519, 2522, 2526, 2529, 2532, 2536, 2539, 2542, 2546, 2549, 2552, 2556, 2559, 2562, 2566, 2569, 2572, 2576, 2579, 2582, 2586, 2589, 2592, 2596, 2599, 2602, 2606, 2609, 2612, 2615, 2619, 2622, 2625, 2629, 2632, 2635, 2639, 2642, 2645, 2649, 2652, 2655, 2659, 2662, 2665, 2669, 2672, 2675, 2679, 2682, 2685, 2689, 2692, 2695, 2699, 2702, 2705, 2708, 2712, 2715, 2718, 2722, 2725, 2728, 2732, 2735, 2738, 2742, 2745, 2748, 2752, 2755, 2758, 2762, 2765, 2768, 2772, 2775, 2778, 2782, 2785, 2788, 2792, 2795, 2798, 2802, 2805, 2808, 2811, 2815, 2818, 2821, 2825, 2828, 2831, 2835, 2838, 2841, 2845, 2848, 2851, 2855, 2858, 2861, 2865, 2868, 2871, 2875, 2878, 2881, 2885, 2888, 2891, 2895, 2898, 2901, 2904, 2908, 2911, 2914, 2918, 2921, 2924, 2928, 2931, 2934, 2938, 2941, 2944, 2948, 2951, 2954, 2958, 2961, 2964, 2968, 2971, 2974, 2978, 2981, 2984, 2988, 2991, 2994, 2998, 3001, 3004, 3007, 3011, 3014, 3017, 3021, 3024, 3027, 3031, 3034, 3037, 3041, 3044, 3047, 3051, 3054, 3057, 3061, 3064, 3067, 3071, 3074, 3077, 3081, 3084, 3087, 3091, 3094, 3097, 3100, 3104, 3107, 3110, 3114, 3117, 3120, 3124, 3127, 3130, 3134, 3137, 3140, 3144, 3147, 3150, 3154, 3157, 3160, 3164, 3167, 3170, 3174, 3177, 3180, 3184, 3187, 3190, 3193, 3197, 3200, 3203, 3207, 3210, 3213, 3217, 3220, 3223, 3227, 3230, 3233, 3237, 3240, 3243, 3247, 3250, 3253, 3257, 3260, 3263, 3267, 3270, 3273, 3277, 3280, 3283, 3287, 3290, 3293, 3296, 3300, 3303, 3306, 3310, 3313, 3316, 3320, 3323, 3326, 3330, 3333, 3336, 3340, 3343, 3346, 3350, 3353, 3356, 3360, 3363, 3366, 3370, 3373, 3376, 3380, 3383, 3386, 3389, 3393, 3396, 3399, 3403, 3406, 3409, 3413, 3416, 3419, 3423, 3426, 3429, 3433, 3436, 3439, 3443, 3446, 3449, 3453, 3456, 3459, 3463, 3466, 3469, 3473, 3476, 3479, 3483, 3486, 3489, 3492, 3496, 3499, 3502, 3506, 3509, 3512, 3516, 3519, 3522, 3526, 3529, 3532, 3536, 3539, 3542, 3546, 3549, 3552, 3556, 3559, 3562, 3566, 3569, 3572, 3576, 3579, 3582, 3585, 3589, 3592, 3595, 3599, 3602, 3605, 3609, 3612, 3615, 3619, 3622, 3625, 3629, 3632, 3635, 3639, 3642, 3645, 3649, 3652, 3655, 3659, 3662, 3665, 3669, 3672, 3675, 3679, 3682, 3685, 3688, 3692, 3695, 3698, 3702, 3705, 3708, 3712, 3715, 3718, 3722, 3725, 3728, 3732, 3735, 3738, 3742, 3745, 3748, 3752, 3755, 3758, 3762, 3765, 3768, 3772, 3775, 3778, 3781, 3785, 3788, 3791, 3795, 3798, 3801, 3805, 3808, 3811, 3815, 3818, 3821, 3825, 3828, 3831, 3835, 3838, 3841, 3845, 3848, 3851, 3855, 3858, 3861, 3865, 3868, 3871, 3874, 3878, 3881, 3884, 3888, 3891, 3894, 3898, 3901, 3904, 3908, 3911, 3914, 3918, 3921, 3924, 3928, 3931, 3934, 3938, 3941, 3944, 3948, 3951, 3954, 3958, 3961, 3964, 3968, 3971, 3974, 3977, 3981, 3984, 3987, 3991, 3994, 3997, 4001, 4004, 4007, 4011, 4014, 4017, 4021, 4024, 4027, 4031, 4034, 4037, 4041, 4044, 4047, 4051, 4054, 4057, 4061, 4064, 4067, 4070, 4074, 4077, 4080, 4084, 4087, 4090, 4094, 4097, 4100, 4104, 4107, 4110, 4114, 4117, 4120, 4124, 4127, 4130, 4134, 4137, 4140, 4144, 4147, 4150, 4154, 4157, 4160, 4164, 4167, 4170, 4173, 4177, 4180, 4183, 4187, 4190, 4193, 4197, 4200, 4203, 4207, 4210, 4213, 4217, 4220, 4223, 4227, 4230, 4233, 4237, 4240, 4243, 4247, 4250, 4253, 4257, 4260, 4263, 4266, 4270, 4273, 4276, 4280, 4283, 4286, 4290, 4293, 4296, 4300, 4303, 4306, 4310, 4313, 4316, 4320, 4323, 4326, 4330, 4333, 4336, 4340, 4343, 4346, 4350, 4353, 4356, 4359, 4363, 4366, 4369, 4373, 4376, 4379, 4383, 4386, 4389, 4393, 4396, 4399, 4403, 4406, 4409, 4413, 4416, 4419, 4423, 4426, 4429, 4433, 4436, 4439, 4443, 4446, 4449, 4453, 4456, 4459, 4462, 4466, 4469, 4472, 4476, 4479, 4482, 4486, 4489, 4492, 4496, 4499, 4502, 4506, 4509, 4512, 4516, 4519, 4522, 4526, 4529, 4532, 4536, 4539, 4542, 4546, 4549, 4552, 4555, 4559, 4562, 4565, 4569, 4572, 4575, 4579, 4582, 4585, 4589, 4592, 4595, 4599, 4602, 4605, 4609, 4612, 4615, 4619, 4622, 4625, 4629, 4632, 4635, 4639, 4642, 4645, 4649, 4652, 4655, 4658, 4662, 4665, 4668, 4672, 4675, 4678, 4682, 4685, 4688, 4692, 4695, 4698, 4702, 4705, 4708, 4712, 4715, 4718, 4722, 4725, 4728, 4732, 4735, 4738, 4742, 4745, 4748, 4751, 4755, 4758, 4761, 4765, 4768, 4771, 4775, 4778, 4781, 4785, 4788, 4791, 4795, 4798, 4801, 4805, 4808, 4811, 4815, 4818, 4821, 4825, 4828, 4831, 4835, 4838, 4841, 4844, 4848, 4851, 4854, 4858, 4861, 4864, 4868, 4871, 4874, 4878, 4881, 4884, 4888, 4891, 4894, 4898, 4901, 4904, 4908, 4911, 4914, 4918, 4921, 4924, 4928, 4931, 4934, 4938, 4941, 4944, 4947, 4951, 4954, 4957, 4961, 4964, 4967, 4971, 4974, 4977, 4981, 4984, 4987, 4991, 4994, 4997, 5001, 5004, 5007, 5011, 5014, 5017, 5021, 5024, 5027, 5031, 5034, 5037, 5040, 5044, 5047, 5050, 5054, 5057, 5060, 5064, 5067, 5070, 5074, 5077, 5080, 5084, 5087, 5090, 5094, 5097, 5100, 5104, 5107, 5110, 5114, 5117, 5120, 5124, 5127, 5130, 5134, 5137, 5140, 5143, 5147, 5150, 5153, 5157, 5160, 5163, 5167, 5170, 5173, 5177, 5180, 5183, 5187, 5190, 5193, 5197, 5200, 5203, 5207, 5210, 5213, 5217, 5220, 5223, 5227, 5230, 5233, 5236, 5240, 5243, 5246, 5250, 5253, 5256, 5260, 5263, 5266, 5270, 5273, 5276, 5280, 5283, 5286, 5290, 5293, 5296, 5300, 5303, 5306, 5310, 5313, 5316, 5320, 5323, 5326, 5329, 5333, 5336, 5339, 5343, 5346, 5349, 5353, 5356, 5359, 5363, 5366, 5369, 5373, 5376, 5379, 5383, 5386, 5389, 5393, 5396, 5399, 5403, 5406, 5409, 5413, 5416, 5419, 5423, 5426, 5429, 5432, 5436, 5439, 5442, 5446, 5449, 5452, 5456, 5459, 5462, 5466, 5469, 5472, 5476, 5479, 5482, 5486, 5489, 5492, 5496, 5499, 5502, 5506, 5509, 5512, 5516, 5519, 5522, 5525, 5529, 5532, 5535, 5539, 5542, 5545, 5549, 5552, 5555, 5559, 5562, 5565, 5569, 5572, 5575, 5579, 5582, 5585, 5589, 5592, 5595, 5599, 5602, 5605, 5609, 5612, 5615, 5619, 5622, 5625, 5628, 5632, 5635, 5638, 5642, 5645, 5648, 5652, 5655, 5658, 5662, 5665, 5668, 5672, 5675, 5678, 5682, 5685, 5688, 5692, 5695, 5698, 5702, 5705, 5708, 5712, 5715, 5718, 5721, 5725, 5728, 5731, 5735, 5738, 5741, 5745, 5748, 5751, 5755, 5758, 5761, 5765, 5768, 5771, 5775, 5778, 5781, 5785, 5788, 5791, 5795, 5798, 5801, 5805, 5808, 5811, 5815, 5818, 5821, 5824, 5828, 5831, 5834, 5838, 5841, 5844, 5848, 5851, 5854, 5858, 5861, 5864, 5868, 5871, 5874, 5878, 5881, 5884, 5888, 5891, 5894, 5898, 5901, 5904, 5908, 5911, 5914, 5917, 5921, 5924, 5927, 5931, 5934, 5937, 5941, 5944, 5947, 5951, 5954, 5957, 5961, 5964, 5967, 5971, 5974, 5977, 5981, 5984, 5987, 5991, 5994, 5997, 6001, 6004, 6007, 6010, 6014, 6017, 6020, 6024, 6027, 6030, 6034, 6037, 6040, 6044, 6047, 6050, 6054, 6057, 6060, 6064, 6067, 6070, 6074, 6077, 6080, 6084, 6087, 6090, 6094, 6097, 6100, 6104, 6107, 6110, 6113, 6117, 6120, 6123, 6127, 6130, 6133, 6137, 6140, 6143, 6147, 6150, 6153, 6157, 6160, 6163, 6167, 6170, 6173, 6177, 6180, 6183, 6187, 6190, 6193, 6197, 6200, 6203, 6206, 6210, 6213, 6216, 6220, 6223, 6226, 6230, 6233, 6236, 6240, 6243, 6246, 6250, 6253, 6256, 6260, 6263, 6266, 6270, 6273, 6276, 6280, 6283, 6286, 6290, 6293, 6296, 6300, 6303, 6306, 6309, 6313, 6316, 6319, 6323, 6326, 6329, 6333, 6336, 6339, 6343, 6346, 6349, 6353, 6356, 6359, 6363, 6366, 6369, 6373, 6376, 6379, 6383, 6386, 6389, 6393, 6396, 6399, 6402, 6406, 6409, 6412, 6416, 6419, 6422, 6426, 6429, 6432, 6436, 6439, 6442, 6446, 6449, 6452, 6456, 6459, 6462, 6466, 6469, 6472, 6476, 6479, 6482, 6486, 6489, 6492, 6495, 6499, 6502, 6505, 6509, 6512, 6515, 6519, 6522, 6525, 6529, 6532, 6535, 6539, 6542, 6545, 6549, 6552, 6555, 6559, 6562, 6565, 6569, 6572, 6575, 6579, 6582, 6585, 6589, 6592, 6595, 6598, 6602, 6605, 6608, 6612, 6615, 6618, 6622, 6625, 6628, 6632, 6635, 6638, 6642, 6645, 6648, 6652, 6655, 6658, 6662, 6665, 6668, 6672, 6675, 6678, 6682, 6685, 6688, 6691, 6695, 6698, 6701, 6705, 6708, 6711, 6715, 6718, 6721, 6725, 6728, 6731, 6735, 6738, 6741, 6745, 6748, 6751, 6755, 6758, 6761, 6765, 6768, 6771, 6775, 6778, 6781, 6785, 6788, 6791, 6794, 6798, 6801, 6804, 6808, 6811, 6814, 6818, 6821, 6824, 6828, 6831, 6834, 6838, 6841, 6844, 6848, 6851, 6854, 6858, 6861, 6864, 6868, 6871, 6874, 6878, 6881, 6884, 6887, 6891, 6894, 6897, 6901, 6904, 6907, 6911, 6914, 6917, 6921, 6924, 6927, 6931, 6934, 6937, 6941, 6944, 6947, 6951, 6954, 6957, 6961, 6964, 6967, 6971, 6974, 6977, 6980, 6984, 6987, 6990, 6994, 6997, 7000, 7004, 7007, 7010, 7014, 7017, 7020, 7024, 7027, 7030, 7034, 7037, 7040, 7044, 7047, 7050, 7054, 7057, 7060, 7064, 7067, 7070, 7074, 7077, 7080, 7083, 7087, 7090, 7093, 7097, 7100, 7103, 7107, 7110, 7113, 7117, 7120, 7123, 7127, 7130, 7133, 7137, 7140, 7143, 7147, 7150, 7153, 7157, 7160, 7163, 7167, 7170, 7173, 7176, 7180, 7183, 7186, 7190, 7193, 7196, 7200, 7203, 7206, 7210, 7213, 7216, 7220, 7223, 7226, 7230, 7233, 7236, 7240, 7243, 7246, 7250, 7253, 7256, 7260, 7263, 7266, 7270, 7273, 7276, 7279, 7283, 7286, 7289, 7293, 7296, 7299, 7303, 7306, 7309, 7313, 7316, 7319, 7323, 7326, 7329, 7333, 7336, 7339, 7343, 7346, 7349, 7353, 7356, 7359, 7363, 7366, 7369, 7372, 7376, 7379, 7382, 7386, 7389, 7392, 7396, 7399, 7402, 7406, 7409, 7412, 7416, 7419, 7422, 7426, 7429, 7432, 7436, 7439, 7442, 7446, 7449, 7452, 7456, 7459, 7462, 7465, 7469, 7472, 7475, 7479, 7482, 7485, 7489, 7492, 7495, 7499, 7502, 7505, 7509, 7512, 7515, 7519, 7522, 7525, 7529, 7532, 7535, 7539, 7542, 7545, 7549, 7552, 7555, 7559, 7562, 7565, 7568, 7572, 7575, 7578, 7582, 7585, 7588, 7592, 7595, 7598, 7602, 7605, 7608, 7612, 7615, 7618, 7622, 7625, 7628, 7632, 7635, 7638, 7642, 7645, 7648, 7652, 7655, 7658, 7661, 7665, 7668, 7671, 7675, 7678, 7681, 7685, 7688, 7691, 7695, 7698, 7701, 7705, 7708, 7711, 7715, 7718, 7721, 7725, 7728, 7731, 7735, 7738, 7741, 7745, 7748, 7751, 7755, 7758, 7761, 7764, 7768, 7771, 7774, 7778, 7781, 7784, 7788, 7791, 7794, 7798, 7801, 7804, 7808, 7811, 7814, 7818, 7821, 7824, 7828, 7831, 7834, 7838, 7841, 7844, 7848, 7851, 7854, 7857, 7861, 7864, 7867, 7871, 7874, 7877, 7881, 7884, 7887, 7891, 7894, 7897, 7901, 7904, 7907, 7911, 7914, 7917, 7921, 7924, 7927, 7931, 7934, 7937, 7941, 7944, 7947, 7951, 7954, 7957, 7960, 7964, 7967, 7970, 7974, 7977, 7980, 7984, 7987, 7990, 7994, 7997, 8000, 8004, 8007, 8010, 8014, 8017, 8020, 8024, 8027, 8030, 8034, 8037, 8040, 8044, 8047, 8050, 8053, 8057, 8060, 8063, 8067, 8070, 8073, 8077, 8080, 8083, 8087, 8090, 8093, 8097, 8100, 8103, 8107, 8110, 8113, 8117, 8120, 8123, 8127, 8130, 8133, 8137, 8140, 8143, 8146, 8150, 8153, 8156, 8160, 8163, 8166, 8170, 8173, 8176, 8180, 8183, 8186, 8190, 8193, 8196, 8200, 8203, 8206, 8210, 8213, 8216, 8220, 8223, 8226, 8230, 8233, 8236, 8240, 8243, 8246, 8249, 8253, 8256, 8259, 8263, 8266, 8269, 8273, 8276, 8279, 8283, 8286, 8289, 8293, 8296, 8299, 8303, 8306, 8309, 8313, 8316, 8319, 8323, 8326, 8329, 8333, 8336, 8339, 8342, 8346, 8349, 8352, 8356, 8359, 8362, 8366, 8369, 8372, 8376, 8379, 8382, 8386, 8389, 8392, 8396, 8399, 8402, 8406, 8409, 8412, 8416, 8419, 8422, 8426, 8429, 8432, 8436, 8439, 8442, 8445, 8449, 8452, 8455, 8459, 8462, 8465, 8469, 8472, 8475, 8479, 8482, 8485, 8489, 8492, 8495, 8499, 8502, 8505, 8509, 8512, 8515, 8519, 8522, 8525, 8529, 8532, 8535, 8538, 8542, 8545, 8548, 8552, 8555, 8558, 8562, 8565, 8568, 8572, 8575, 8578, 8582, 8585, 8588, 8592, 8595, 8598, 8602, 8605, 8608, 8612, 8615, 8618, 8622, 8625, 8628, 8631, 8635, 8638, 8641, 8645, 8648, 8651, 8655, 8658, 8661, 8665, 8668, 8671, 8675, 8678, 8681, 8685, 8688, 8691, 8695, 8698, 8701, 8705, 8708, 8711, 8715, 8718, 8721, 8725, 8728, 8731, 8734, 8738, 8741, 8744, 8748, 8751, 8754, 8758, 8761, 8764, 8768, 8771, 8774, 8778, 8781, 8784, 8788, 8791, 8794, 8798, 8801, 8804, 8808, 8811, 8814, 8818, 8821, 8824, 8827, 8831, 8834, 8837, 8841, 8844, 8847, 8851, 8854, 8857, 8861, 8864, 8867, 8871, 8874, 8877, 8881, 8884, 8887, 8891, 8894, 8897, 8901, 8904, 8907, 8911, 8914, 8917, 8921, 8924, 8927, 8930, 8934, 8937, 8940, 8944, 8947, 8950, 8954, 8957, 8960, 8964, 8967, 8970, 8974, 8977, 8980, 8984, 8987, 8990, 8994, 8997, 9000, 9004, 9007, 9010, 9014, 9017, 9020, 9023, 9027, 9030, 9033, 9037, 9040, 9043, 9047, 9050, 9053, 9057, 9060, 9063, 9067, 9070, 9073, 9077, 9080, 9083, 9087, 9090, 9093, 9097, 9100, 9103, 9107, 9110, 9113, 9116, 9120, 9123, 9126, 9130, 9133, 9136, 9140, 9143, 9146, 9150, 9153, 9156, 9160, 9163, 9166, 9170, 9173, 9176, 9180, 9183, 9186, 9190, 9193, 9196, 9200, 9203, 9206, 9210, 9213, 9216, 9219, 9223, 9226, 9229, 9233, 9236, 9239, 9243, 9246, 9249, 9253, 9256, 9259, 9263, 9266, 9269, 9273, 9276, 9279, 9283, 9286, 9289, 9293, 9296, 9299, 9303, 9306, 9309, 9312, 9316, 9319, 9322, 9326, 9329, 9332, 9336, 9339, 9342, 9346, 9349, 9352, 9356, 9359, 9362, 9366, 9369, 9372, 9376, 9379, 9382, 9386, 9389, 9392, 9396, 9399, 9402, 9406, 9409, 9412, 9415, 9419, 9422, 9425, 9429, 9432, 9435, 9439, 9442, 9445, 9449, 9452, 9455, 9459, 9462, 9465, 9469, 9472, 9475, 9479, 9482, 9485, 9489, 9492, 9495, 9499, 9502, 9505, 9508, 9512, 9515, 9518, 9522, 9525, 9528, 9532, 9535, 9538, 9542, 9545, 9548, 9552, 9555, 9558, 9562, 9565, 9568, 9572, 9575, 9578, 9582, 9585, 9588, 9592, 9595, 9598, 9601, 9605, 9608, 9611, 9615, 9618, 9621, 9625, 9628, 9631, 9635, 9638, 9641, 9645, 9648, 9651, 9655, 9658, 9661, 9665, 9668, 9671, 9675, 9678, 9681, 9685, 9688, 9691, 9695, 9698, 9701, 9704, 9708, 9711, 9714, 9718, 9721, 9724, 9728, 9731, 9734, 9738, 9741, 9744, 9748, 9751, 9754, 9758, 9761, 9764, 9768, 9771, 9774, 9778, 9781, 9784, 9788, 9791, 9794, 9797, 9801, 9804, 9807, 9811, 9814, 9817, 9821, 9824, 9827, 9831, 9834, 9837, 9841, 9844, 9847, 9851, 9854, 9857, 9861, 9864, 9867, 9871, 9874, 9877, 9881, 9884, 9887, 9891, 9894, 9897, 9900, 9904, 9907, 9910, 9914, 9917, 9920, 9924, 9927, 9930, 9934, 9937, 9940, 9944, 9947, 9950, 9954, 9957, 9960, 9964, 9967, 9970, 9974, 9977, 9980, 9984, 9987, 9990, 9993, 9997, 10000, 10003, 10007, 10010, 10013, 10017, 10020, 10023, 10027, 10030, 10033, 10037, 10040, 10043, 10047, 10050, 10053, 10057, 10060, 10063, 10067, 10070, 10073, 10077, 10080, 10083, 10087, 10090, 10093, 10096, 10100, 10103, 10106, 10110, 10113, 10116, 10120, 10123, 10126, 10130, 10133, 10136, 10140, 10143, 10146, 10150, 10153, 10156, 10160, 10163, 10166, 10170, 10173, 10176, 10180, 10183, 10186, 10189, 10193, 10196, 10199, 10203, 10206, 10209, 10213, 10216, 10219, 10223, 10226, 10229, 10233, 10236, 10239, 10243, 10246, 10249, 10253, 10256, 10259, 10263, 10266, 10269, 10273, 10276, 10279, 10282, 10286, 10289, 10292, 10296, 10299, 10302, 10306, 10309, 10312, 10316, 10319, 10322, 10326, 10329, 10332, 10336, 10339, 10342, 10346, 10349, 10352, 10356, 10359, 10362, 10366, 10369, 10372, 10376, 10379, 10382, 10385, 10389, 10392, 10395, 10399, 10402, 10405, 10409, 10412, 10415, 10419, 10422, 10425, 10429, 10432, 10435, 10439, 10442, 10445, 10449, 10452, 10455, 10459, 10462, 10465, 10469, 10472, 10475, 10478, 10482, 10485, 10488, 10492, 10495, 10498, 10502, 10505, 10508, 10512, 10515, 10518, 10522, 10525, 10528, 10532, 10535, 10538, 10542, 10545, 10548, 10552, 10555, 10558, 10562, 10565, 10568, 10572, 10575, 10578, 10581, 10585, 10588, 10591, 10595, 10598, 10601, 10605, 10608, 10611, 10615, 10618, 10621, 10625, 10628, 10631, 10635, 10638, 10641, 10645, 10648, 10651, 10655, 10658, 10661, 10665, 10668, 10671, 10674, 10678, 10681, 10684, 10688, 10691, 10694, 10698, 10701, 10704, 10708, 10711, 10714, 10718, 10721, 10724, 10728, 10731, 10734, 10738, 10741, 10744, 10748, 10751, 10754, 10758, 10761, 10764, 10767, 10771, 10774, 10777, 10781, 10784, 10787, 10791, 10794, 10797, 10801, 10804, 10807, 10811, 10814, 10817, 10821, 10824, 10827, 10831, 10834, 10837, 10841, 10844, 10847, 10851, 10854, 10857, 10861, 10864, 10867, 10870, 10874, 10877, 10880, 10884, 10887, 10890, 10894, 10897, 10900, 10904, 10907, 10910, 10914, 10917, 10920, 10924, 10927, 10930, 10934, 10937, 10940, 10944, 10947, 10950, 10954, 10957, 10960, 10963, 10967, 10970, 10973, 10977, 10980, 10983, 10987, 10990, 10993, 10997, 11000, 11003, 11007, 11010, 11013, 11017, 11020, 11023, 11027, 11030, 11033, 11037, 11040, 11043, 11047, 11050, 11053, 11057, 11060, 11063, 11066, 11070, 11073, 11076, 11080, 11083, 11086, 11090, 11093, 11096, 11100, 11103, 11106, 11110, 11113, 11116, 11120, 11123, 11126, 11130, 11133, 11136, 11140, 11143, 11146, 11150, 11153, 11156, 11159, 11163, 11166, 11169, 11173, 11176, 11179, 11183, 11186, 11189, 11193, 11196, 11199, 11203, 11206, 11209, 11213, 11216, 11219, 11223, 11226, 11229, 11233, 11236, 11239, 11243, 11246, 11249, 11252, 11256, 11259, 11262, 11266, 11269, 11272, 11276, 11279, 11282, 11286, 11289, 11292, 11296, 11299, 11302, 11306, 11309, 11312, 11316, 11319, 11322, 11326, 11329, 11332, 11336, 11339, 11342, 11346, 11349, 11352, 11355, 11359, 11362, 11365, 11369, 11372, 11375, 11379, 11382, 11385, 11389, 11392, 11395, 11399, 11402, 11405, 11409, 11412, 11415, 11419, 11422, 11425, 11429, 11432, 11435, 11439, 11442, 11445, 11448, 11452, 11455, 11458, 11462, 11465, 11468, 11472, 11475, 11478, 11482, 11485, 11488, 11492, 11495, 11498, 11502, 11505, 11508, 11512, 11515, 11518, 11522, 11525, 11528, 11532, 11535, 11538, 11542, 11545, 11548, 11551, 11555, 11558, 11561, 11565, 11568, 11571, 11575, 11578, 11581, 11585, 11588, 11591, 11595, 11598, 11601, 11605, 11608, 11611, 11615, 11618, 11621, 11625, 11628, 11631, 11635, 11638, 11641, 11644, 11648, 11651, 11654, 11658, 11661, 11664, 11668, 11671, 11674, 11678, 11681, 11684, 11688, 11691, 11694, 11698, 11701, 11704, 11708, 11711, 11714, 11718, 11721, 11724, 11728, 11731, 11734, 11737, 11741, 11744, 11747, 11751, 11754, 11757, 11761, 11764, 11767, 11771, 11774, 11777, 11781, 11784, 11787, 11791, 11794, 11797, 11801, 11804, 11807, 11811, 11814, 11817, 11821, 11824, 11827, 11831, 11834, 11837, 11840, 11844, 11847, 11850, 11854, 11857, 11860, 11864, 11867, 11870, 11874, 11877, 11880, 11884, 11887, 11890, 11894, 11897, 11900, 11904, 11907, 11910, 11914, 11917, 11920, 11924, 11927, 11930, 11933, 11937, 11940, 11943, 11947, 11950, 11953, 11957, 11960, 11963, 11967, 11970, 11973, 11977, 11980, 11983, 11987, 11990, 11993, 11997, 12000, 12003, 12007, 12010, 12013, 12017, 12020, 12023, 12027, 12030, 12033, 12036, 12040, 12043, 12046, 12050, 12053, 12056, 12060, 12063, 12066, 12070, 12073, 12076, 12080, 12083, 12086, 12090, 12093, 12096, 12100, 12103, 12106, 12110, 12113, 12116, 12120, 12123, 12126, 12129, 12133, 12136, 12139, 12143, 12146, 12149, 12153, 12156, 12159, 12163, 12166, 12169, 12173, 12176, 12179, 12183, 12186, 12189, 12193, 12196, 12199, 12203, 12206, 12209, 12213, 12216, 12219, 12223, 12226, 12229, 12232, 12236, 12239, 12242, 12246, 12249, 12252, 12256, 12259, 12262, 12266, 12269, 12272, 12276, 12279, 12282, 12286, 12289, 12292, 12296, 12299, 12302, 12306, 12309, 12312, 12316, 12319, 12322, 12325, 12329, 12332, 12335, 12339, 12342, 12345, 12349, 12352, 12355, 12359, 12362, 12365, 12369, 12372, 12375, 12379, 12382, 12385, 12389, 12392, 12395, 12399, 12402, 12405, 12409, 12412, 12415, 12418, 12422, 12425, 12428, 12432, 12435, 12438, 12442, 12445, 12448, 12452, 12455, 12458, 12462, 12465, 12468, 12472, 12475, 12478, 12482, 12485, 12488, 12492, 12495, 12498, 12502, 12505, 12508, 12512, 12515, 12518, 12521, 12525, 12528, 12531, 12535, 12538, 12541, 12545, 12548, 12551, 12555, 12558, 12561, 12565, 12568, 12571, 12575, 12578, 12581, 12585, 12588, 12591, 12595, 12598, 12601, 12605, 12608, 12611, 12614, 12618, 12621, 12624, 12628, 12631, 12634, 12638, 12641, 12644, 12648, 12651, 12654, 12658, 12661, 12664, 12668, 12671, 12674, 12678, 12681, 12684, 12688, 12691, 12694, 12698, 12701, 12704, 12708, 12711, 12714, 12717, 12721, 12724, 12727, 12731, 12734, 12737, 12741, 12744, 12747, 12751, 12754, 12757, 12761, 12764, 12767, 12771, 12774, 12777, 12781, 12784, 12787, 12791, 12794, 12797, 12801, 12804, 12807, 12810, 12814, 12817, 12820, 12824, 12827, 12830, 12834, 12837, 12840, 12844, 12847, 12850, 12854, 12857, 12860, 12864, 12867, 12870, 12874, 12877, 12880, 12884, 12887, 12890, 12894, 12897, 12900, 12903, 12907, 12910, 12913, 12917, 12920, 12923, 12927, 12930, 12933, 12937, 12940, 12943, 12947, 12950, 12953, 12957, 12960, 12963, 12967, 12970, 12973, 12977, 12980, 12983, 12987, 12990, 12993, 12997, 13000, 13003, 13006, 13010, 13013, 13016, 13020, 13023, 13026, 13030, 13033, 13036, 13040, 13043, 13046, 13050, 13053, 13056, 13060, 13063, 13066, 13070, 13073, 13076, 13080, 13083, 13086, 13090, 13093, 13096, 13099, 13103, 13106, 13109, 13113, 13116, 13119, 13123, 13126, 13129, 13133, 13136, 13139, 13143, 13146, 13149, 13153, 13156, 13159, 13163, 13166, 13169, 13173, 13176, 13179, 13183, 13186, 13189, 13193, 13196, 13199, 13202, 13206, 13209, 13212, 13216, 13219, 13222, 13226, 13229, 13232, 13236, 13239, 13242, 13246, 13249, 13252, 13256, 13259, 13262, 13266, 13269, 13272, 13276, 13279, 13282, 13286, 13289, 13292, 13295, 13299, 13302, 13305, 13309, 13312, 13315, 13319, 13322, 13325, 13329, 13332, 13335, 13339, 13342, 13345, 13349, 13352, 13355, 13359, 13362, 13365, 13369, 13372, 13375, 13379, 13382, 13385, 13388, 13392, 13395, 13398, 13402, 13405, 13408, 13412, 13415, 13418, 13422, 13425, 13428, 13432, 13435, 13438, 13442, 13445, 13448, 13452, 13455, 13458, 13462, 13465, 13468, 13472, 13475, 13478, 13482, 13485, 13488, 13491, 13495, 13498, 13501, 13505, 13508, 13511, 13515, 13518, 13521, 13525, 13528, 13531, 13535, 13538, 13541, 13545, 13548, 13551, 13555, 13558, 13561, 13565, 13568, 13571, 13575, 13578, 13581, 13584, 13588, 13591, 13594, 13598, 13601, 13604, 13608, 13611, 13614, 13618, 13621, 13624, 13628, 13631, 13634, 13638, 13641, 13644, 13648, 13651, 13654, 13658, 13661, 13664, 13668, 13671, 13674, 13678, 13681, 13684, 13687, 13691, 13694, 13697, 13701, 13704, 13707, 13711, 13714, 13717, 13721, 13724, 13727, 13731, 13734, 13737, 13741, 13744, 13747, 13751, 13754, 13757, 13761, 13764, 13767, 13771, 13774, 13777, 13780, 13784, 13787, 13790, 13794, 13797, 13800, 13804, 13807, 13810, 13814, 13817, 13820, 13824, 13827, 13830, 13834, 13837, 13840, 13844, 13847, 13850, 13854, 13857, 13860, 13864, 13867, 13870, 13873, 13877, 13880, 13883, 13887, 13890, 13893, 13897, 13900, 13903, 13907, 13910, 13913, 13917, 13920, 13923, 13927, 13930, 13933, 13937, 13940, 13943, 13947, 13950, 13953, 13957, 13960, 13963, 13967, 13970, 13973, 13976, 13980, 13983, 13986, 13990, 13993, 13996, 14000, 14003, 14006, 14010, 14013, 14016, 14020, 14023, 14026, 14030, 14033, 14036, 14040, 14043, 14046, 14050, 14053, 14056, 14060, 14063, 14066, 14069, 14073, 14076, 14079, 14083, 14086, 14089, 14093, 14096, 14099, 14103, 14106, 14109, 14113, 14116, 14119, 14123, 14126, 14129, 14133, 14136, 14139, 14143, 14146, 14149, 14153, 14156, 14159, 14163, 14166, 14169, 14172, 14176, 14179, 14182, 14186, 14189, 14192, 14196, 14199, 14202, 14206, 14209, 14212, 14216, 14219, 14222, 14226, 14229, 14232, 14236, 14239, 14242, 14246, 14249, 14252, 14256, 14259, 14262, 14265, 14269, 14272, 14275, 14279, 14282, 14285, 14289, 14292, 14295, 14299, 14302, 14305, 14309, 14312, 14315, 14319, 14322, 14325, 14329, 14332, 14335, 14339, 14342, 14345, 14349, 14352, 14355, 14359, 14362, 14365, 14368, 14372, 14375, 14378, 14382, 14385, 14388, 14392, 14395, 14398, 14402, 14405, 14408, 14412, 14415, 14418, 14422, 14425, 14428, 14432, 14435, 14438, 14442, 14445, 14448, 14452, 14455, 14458, 14461, 14465, 14468, 14471, 14475, 14478, 14481, 14485, 14488, 14491, 14495, 14498, 14501, 14505, 14508, 14511, 14515, 14518, 14521, 14525, 14528, 14531, 14535, 14538, 14541, 14545, 14548, 14551, 14554, 14558, 14561, 14564, 14568, 14571, 14574, 14578, 14581, 14584, 14588, 14591, 14594, 14598, 14601, 14604, 14608, 14611, 14614, 14618, 14621, 14624, 14628, 14631, 14634, 14638, 14641, 14644, 14648, 14651, 14654, 14657, 14661, 14664, 14667, 14671, 14674, 14677, 14681, 14684, 14687, 14691, 14694, 14697, 14701, 14704, 14707, 14711, 14714, 14717, 14721, 14724, 14727, 14731, 14734, 14737, 14741, 14744, 14747, 14750, 14754, 14757, 14760, 14764, 14767, 14770, 14774, 14777, 14780, 14784, 14787, 14790, 14794, 14797, 14800, 14804, 14807, 14810, 14814, 14817, 14820, 14824, 14827, 14830, 14834, 14837, 14840, 14844, 14847, 14850, 14853, 14857, 14860, 14863, 14867, 14870, 14873, 14877, 14880, 14883, 14887, 14890, 14893, 14897, 14900, 14903, 14907, 14910, 14913, 14917, 14920, 14923, 14927, 14930, 14933, 14937, 14940, 14943, 14946, 14950, 14953, 14956, 14960, 14963, 14966, 14970, 14973, 14976, 14980, 14983, 14986, 14990, 14993, 14996, 15000, 15003, 15006, 15010, 15013, 15016, 15020, 15023, 15026, 15030, 15033, 15036, 15039, 15043, 15046, 15049, 15053, 15056, 15059, 15063, 15066, 15069, 15073, 15076, 15079, 15083, 15086, 15089, 15093, 15096, 15099, 15103, 15106, 15109, 15113, 15116, 15119, 15123, 15126, 15129, 15133, 15136, 15139, 15142, 15146, 15149, 15152, 15156, 15159, 15162, 15166, 15169, 15172, 15176, 15179, 15182, 15186, 15189, 15192, 15196, 15199, 15202, 15206, 15209, 15212, 15216, 15219, 15222, 15226, 15229, 15232, 15235, 15239, 15242, 15245, 15249, 15252, 15255, 15259, 15262, 15265, 15269, 15272, 15275, 15279, 15282, 15285, 15289, 15292, 15295, 15299, 15302, 15305, 15309, 15312, 15315, 15319, 15322, 15325, 15329, 15332, 15335, 15338, 15342, 15345, 15348, 15352, 15355, 15358, 15362, 15365, 15368, 15372, 15375, 15378, 15382, 15385, 15388, 15392, 15395, 15398, 15402, 15405, 15408, 15412, 15415, 15418, 15422, 15425, 15428, 15431, 15435, 15438, 15441, 15445, 15448, 15451, 15455, 15458, 15461, 15465, 15468, 15471, 15475, 15478, 15481, 15485, 15488, 15491, 15495, 15498, 15501, 15505, 15508, 15511, 15515, 15518, 15521, 15524, 15528, 15531, 15534, 15538, 15541, 15544, 15548, 15551, 15554, 15558, 15561, 15564, 15568, 15571, 15574, 15578, 15581, 15584, 15588, 15591, 15594, 15598, 15601, 15604, 15608, 15611, 15614, 15618, 15621, 15624, 15627, 15631, 15634, 15637, 15641, 15644, 15647, 15651, 15654, 15657, 15661, 15664, 15667, 15671, 15674, 15677, 15681, 15684, 15687, 15691, 15694, 15697, 15701, 15704, 15707, 15711, 15714, 15717, 15720, 15724, 15727, 15730, 15734, 15737, 15740, 15744, 15747, 15750, 15754, 15757, 15760, 15764, 15767, 15770, 15774, 15777, 15780, 15784, 15787, 15790, 15794, 15797, 15800, 15804, 15807, 15810, 15814, 15817, 15820, 15823, 15827, 15830, 15833, 15837, 15840, 15843, 15847, 15850, 15853, 15857, 15860, 15863, 15867, 15870, 15873, 15877, 15880, 15883, 15887, 15890, 15893, 15897, 15900, 15903, 15907, 15910, 15913, 15916, 15920, 15923, 15926, 15930, 15933, 15936, 15940, 15943, 15946, 15950, 15953, 15956, 15960, 15963, 15966, 15970, 15973, 15976, 15980, 15983, 15986, 15990, 15993, 15996, 16000, 16003, 16006, 16009, 16013, 16016, 16019, 16023, 16026, 16029, 16033, 16036, 16039, 16043, 16046, 16049, 16053, 16056, 16059, 16063, 16066, 16069, 16073, 16076, 16079, 16083, 16086, 16089, 16093, 16096, 16099, 16103, 16106, 16109, 16112, 16116, 16119, 16122, 16126, 16129, 16132, 16136, 16139, 16142, 16146, 16149, 16152, 16156, 16159, 16162, 16166, 16169, 16172, 16176, 16179, 16182, 16186, 16189, 16192, 16196, 16199, 16202, 16205, 16209, 16212, 16215, 16219, 16222, 16225, 16229, 16232, 16235, 16239, 16242, 16245, 16249, 16252, 16255, 16259, 16262, 16265, 16269, 16272, 16275, 16279, 16282, 16285, 16289, 16292, 16295, 16299, 16302, 16305, 16308, 16312, 16315, 16318, 16322, 16325, 16328, 16332, 16335, 16338, 16342, 16345, 16348, 16352, 16355, 16358, 16362, 16365, 16368, 16372, 16375, 16378, 16382, 16385, 16388, 16392, 16395, 16398, 16401, 16405, 16408, 16411, 16415, 16418, 16421, 16425, 16428, 16431, 16435, 16438, 16441, 16445, 16448, 16451, 16455, 16458, 16461, 16465, 16468, 16471, 16475, 16478, 16481, 16485, 16488, 16491, 16494, 16498, 16501, 16504, 16508, 16511, 16514, 16518, 16521, 16524, 16528, 16531, 16534, 16538, 16541, 16544, 16548, 16551, 16554, 16558, 16561, 16564, 16568, 16571, 16574, 16578, 16581, 16584, 16588, 16591, 16594, 16597, 16601, 16604, 16607, 16611, 16614, 16617, 16621, 16624, 16627, 16631, 16634, 16637, 16641, 16644, 16647, 16651, 16654, 16657, 16661, 16664, 16667, 16671, 16674, 16677, 16681, 16684, 16687, 16690, 16694, 16697, 16700, 16704, 16707, 16710, 16714, 16717, 16720, 16724, 16727, 16730, 16734, 16737, 16740, 16744, 16747, 16750, 16754, 16757, 16760, 16764, 16767, 16770, 16774, 16777, 16780, 16784, 16787, 16790, 16793, 16797, 16800, 16803, 16807, 16810, 16813, 16817, 16820, 16823, 16827, 16830, 16833, 16837, 16840, 16843, 16847, 16850, 16853, 16857, 16860, 16863, 16867, 16870, 16873, 16877, 16880, 16883, 16886, 16890, 16893, 16896, 16900, 16903, 16906, 16910, 16913, 16916, 16920, 16923, 16926, 16930, 16933, 16936, 16940, 16943, 16946, 16950, 16953, 16956, 16960, 16963, 16966, 16970, 16973, 16976, 16980, 16983, 16986, 16989, 16993, 16996, 16999, 17003, 17006, 17009, 17013, 17016, 17019, 17023, 17026, 17029, 17033, 17036, 17039, 17043, 17046, 17049, 17053, 17056, 17059, 17063, 17066, 17069, 17073, 17076, 17079, 17082, 17086, 17089, 17092, 17096, 17099, 17102, 17106, 17109, 17112, 17116, 17119, 17122, 17126, 17129, 17132, 17136, 17139, 17142, 17146, 17149, 17152, 17156, 17159, 17162, 17166, 17169, 17172, 17175, 17179, 17182, 17185, 17189, 17192, 17195, 17199, 17202, 17205, 17209, 17212, 17215, 17219, 17222, 17225, 17229, 17232, 17235, 17239, 17242, 17245, 17249, 17252, 17255, 17259, 17262, 17265, 17269, 17272, 17275, 17278, 17282, 17285, 17288, 17292, 17295, 17298, 17302, 17305, 17308, 17312, 17315, 17318, 17322, 17325, 17328, 17332, 17335, 17338, 17342, 17345, 17348, 17352, 17355, 17358, 17362, 17365, 17368, 17371, 17375, 17378, 17381, 17385, 17388, 17391, 17395, 17398, 17401, 17405, 17408, 17411, 17415, 17418, 17421, 17425, 17428, 17431, 17435, 17438, 17441, 17445, 17448, 17451, 17455, 17458, 17461, 17465, 17468, 17471, 17474, 17478, 17481, 17484, 17488, 17491, 17494, 17498, 17501, 17504, 17508, 17511, 17514, 17518, 17521, 17524, 17528, 17531, 17534, 17538, 17541, 17544, 17548, 17551, 17554, 17558, 17561, 17564, 17567, 17571, 17574, 17577, 17581, 17584, 17587, 17591, 17594, 17597, 17601, 17604, 17607, 17611, 17614, 17617, 17621, 17624, 17627, 17631, 17634, 17637, 17641, 17644, 17647, 17651, 17654, 17657, 17660, 17664, 17667, 17670, 17674, 17677, 17680, 17684, 17687, 17690, 17694, 17697, 17700, 17704, 17707, 17710, 17714, 17717, 17720, 17724, 17727, 17730, 17734, 17737, 17740, 17744, 17747, 17750, 17754, 17757, 17760, 17763, 17767, 17770, 17773, 17777, 17780, 17783, 17787, 17790, 17793, 17797, 17800, 17803, 17807, 17810, 17813, 17817, 17820, 17823, 17827, 17830, 17833, 17837, 17840, 17843, 17847, 17850, 17853, 17856, 17860, 17863, 17866, 17870, 17873, 17876, 17880, 17883, 17886, 17890, 17893, 17896, 17900, 17903, 17906, 17910, 17913, 17916, 17920, 17923, 17926, 17930, 17933, 17936, 17940, 17943, 17946, 17950, 17953, 17956, 17959, 17963, 17966, 17969, 17973, 17976, 17979, 17983, 17986, 17989, 17993, 17996, 17999, 18003, 18006, 18009, 18013, 18016, 18019, 18023, 18026, 18029, 18033, 18036, 18039, 18043, 18046, 18049, 18052, 18056, 18059, 18062, 18066, 18069, 18072, 18076, 18079, 18082, 18086, 18089, 18092, 18096, 18099, 18102, 18106, 18109, 18112, 18116, 18119, 18122, 18126, 18129, 18132, 18136, 18139, 18142, 18145, 18149, 18152, 18155, 18159, 18162, 18165, 18169, 18172, 18175, 18179, 18182, 18185, 18189, 18192, 18195, 18199, 18202, 18205, 18209, 18212, 18215, 18219, 18222, 18225, 18229, 18232, 18235, 18239, 18242, 18245, 18248, 18252, 18255, 18258, 18262, 18265, 18268, 18272, 18275, 18278, 18282, 18285, 18288, 18292, 18295, 18298, 18302, 18305, 18308, 18312, 18315, 18318, 18322, 18325, 18328, 18332, 18335, 18338, 18341, 18345, 18348, 18351, 18355, 18358, 18361, 18365, 18368, 18371, 18375, 18378, 18381, 18385, 18388, 18391, 18395, 18398, 18401, 18405, 18408, 18411, 18415, 18418, 18421, 18425, 18428, 18431, 18435, 18438, 18441, 18444, 18448, 18451, 18454, 18458, 18461, 18464, 18468, 18471, 18474, 18478, 18481, 18484, 18488, 18491, 18494, 18498, 18501, 18504, 18508, 18511, 18514, 18518, 18521, 18524, 18528, 18531, 18534, 18537, 18541, 18544, 18547, 18551, 18554, 18557, 18561, 18564, 18567, 18571, 18574, 18577, 18581, 18584, 18587, 18591, 18594, 18597, 18601, 18604, 18607, 18611, 18614, 18617, 18621, 18624, 18627, 18630, 18634, 18637, 18640, 18644, 18647, 18650, 18654, 18657, 18660, 18664, 18667, 18670, 18674, 18677, 18680, 18684, 18687, 18690, 18694, 18697, 18700, 18704, 18707, 18710, 18714, 18717, 18720, 18724, 18727, 18730, 18733, 18737, 18740, 18743, 18747, 18750, 18753, 18757, 18760, 18763, 18767, 18770, 18773, 18777, 18780, 18783, 18787, 18790, 18793, 18797, 18800, 18803, 18807, 18810, 18813, 18817, 18820, 18823, 18826, 18830, 18833, 18836, 18840, 18843, 18846, 18850, 18853, 18856, 18860, 18863, 18866, 18870, 18873, 18876, 18880, 18883, 18886, 18890, 18893, 18896, 18900, 18903, 18906, 18910, 18913, 18916, 18920, 18923, 18926, 18929, 18933, 18936, 18939, 18943, 18946, 18949, 18953, 18956, 18959, 18963, 18966, 18969, 18973, 18976, 18979, 18983, 18986, 18989, 18993, 18996, 18999, 19003, 19006, 19009, 19013, 19016, 19019, 19022, 19026, 19029, 19032, 19036, 19039, 19042, 19046, 19049, 19052, 19056, 19059, 19062, 19066, 19069, 19072, 19076, 19079, 19082, 19086, 19089, 19092, 19096, 19099, 19102, 19106, 19109, 19112, 19116, 19119, 19122, 19125, 19129, 19132, 19135, 19139, 19142, 19145, 19149, 19152, 19155, 19159, 19162, 19165, 19169, 19172, 19175, 19179, 19182, 19185, 19189, 19192, 19195, 19199, 19202, 19205, 19209, 19212, 19215, 19218, 19222, 19225, 19228, 19232, 19235, 19238, 19242, 19245, 19248, 19252, 19255, 19258, 19262, 19265, 19268, 19272, 19275, 19278, 19282, 19285, 19288, 19292, 19295, 19298, 19302, 19305, 19308, 19311, 19315, 19318, 19321, 19325, 19328, 19331, 19335, 19338, 19341, 19345, 19348, 19351, 19355, 19358, 19361, 19365, 19368, 19371, 19375, 19378, 19381, 19385, 19388, 19391, 19395, 19398, 19401, 19405, 19408, 19411, 19414, 19418, 19421, 19424, 19428, 19431, 19434, 19438, 19441, 19444, 19448, 19451, 19454, 19458, 19461, 19464, 19468, 19471, 19474, 19478, 19481, 19484, 19488, 19491, 19494, 19498, 19501, 19504, 19507, 19511, 19514, 19517, 19521, 19524, 19527, 19531, 19534, 19537, 19541, 19544, 19547, 19551, 19554, 19557, 19561, 19564, 19567, 19571, 19574, 19577, 19581, 19584, 19587, 19591, 19594, 19597, 19601, 19604, 19607, 19610, 19614, 19617, 19620, 19624, 19627, 19630, 19634, 19637, 19640, 19644, 19647, 19650, 19654, 19657, 19660, 19664, 19667, 19670, 19674, 19677, 19680, 19684, 19687, 19690, 19694, 19697, 19700, 19703, 19707, 19710, 19713, 19717, 19720, 19723, 19727, 19730, 19733, 19737, 19740, 19743, 19747, 19750, 19753, 19757, 19760, 19763, 19767, 19770, 19773, 19777, 19780, 19783, 19787, 19790, 19793, 19796, 19800, 19803, 19806, 19810, 19813, 19816, 19820, 19823, 19826, 19830, 19833, 19836, 19840, 19843, 19846, 19850, 19853, 19856, 19860, 19863, 19866, 19870, 19873, 19876, 19880, 19883, 19886, 19890, 19893, 19896, 19899, 19903, 19906, 19909, 19913, 19916, 19919, 19923, 19926, 19929, 19933, 19936, 19939, 19943, 19946, 19949, 19953, 19956, 19959, 19963, 19966, 19969, 19973, 19976, 19979, 19983, 19986, 19989, 19992, 19996, 19999, 20002, 20006, 20009, 20012, 20016, 20019, 20022, 20026, 20029, 20032, 20036, 20039, 20042, 20046, 20049, 20052, 20056, 20059, 20062, 20066, 20069, 20072, 20076, 20079, 20082, 20086, 20089, 20092, 20095, 20099, 20102, 20105, 20109, 20112, 20115, 20119, 20122, 20125, 20129, 20132, 20135, 20139, 20142, 20145, 20149, 20152, 20155, 20159, 20162, 20165, 20169, 20172, 20175, 20179, 20182, 20185, 20188, 20192, 20195, 20198, 20202, 20205, 20208, 20212, 20215, 20218, 20222, 20225, 20228, 20232, 20235, 20238, 20242, 20245, 20248, 20252, 20255, 20258, 20262, 20265, 20268, 20272, 20275, 20278, 20281, 20285, 20288, 20291, 20295, 20298, 20301, 20305, 20308, 20311, 20315, 20318, 20321, 20325, 20328, 20331, 20335, 20338, 20341, 20345, 20348, 20351, 20355, 20358, 20361, 20365, 20368, 20371, 20375, 20378, 20381, 20384, 20388, 20391, 20394, 20398, 20401, 20404, 20408, 20411, 20414, 20418, 20421, 20424, 20428, 20431, 20434, 20438, 20441, 20444, 20448, 20451, 20454, 20458, 20461, 20464, 20468, 20471, 20474, 20477, 20481, 20484, 20487, 20491, 20494, 20497, 20501, 20504, 20507, 20511, 20514, 20517, 20521, 20524, 20527, 20531, 20534, 20537, 20541, 20544, 20547, 20551, 20554, 20557, 20561, 20564, 20567, 20571, 20574, 20577, 20580, 20584, 20587, 20590, 20594, 20597, 20600, 20604, 20607, 20610, 20614, 20617, 20620, 20624, 20627, 20630, 20634, 20637, 20640, 20644, 20647, 20650, 20654, 20657, 20660, 20664, 20667, 20670, 20673, 20677, 20680, 20683, 20687, 20690, 20693, 20697, 20700, 20703, 20707, 20710, 20713, 20717, 20720, 20723, 20727, 20730, 20733, 20737, 20740, 20743, 20747, 20750, 20753, 20757, 20760, 20763, 20766, 20770, 20773, 20776, 20780, 20783, 20786, 20790, 20793, 20796, 20800, 20803, 20806, 20810, 20813, 20816, 20820, 20823, 20826, 20830, 20833, 20836, 20840, 20843, 20846, 20850, 20853, 20856, 20860, 20863, 20866, 20869, 20873, 20876, 20879, 20883, 20886, 20889, 20893, 20896, 20899, 20903, 20906, 20909, 20913, 20916, 20919, 20923, 20926, 20929, 20933, 20936, 20939, 20943, 20946, 20949, 20953, 20956, 20959, 20962, 20966, 20969, 20972, 20976, 20979, 20982, 20986, 20989, 20992, 20996, 20999, 21002, 21006, 21009, 21012, 21016, 21019, 21022, 21026, 21029, 21032, 21036, 21039, 21042, 21046, 21049, 21052, 21056, 21059, 21062, 21065, 21069, 21072, 21075, 21079, 21082, 21085, 21089, 21092, 21095, 21099, 21102, 21105, 21109, 21112, 21115, 21119, 21122, 21125, 21129, 21132, 21135, 21139, 21142, 21145, 21149, 21152, 21155, 21158, 21162, 21165, 21168, 21172, 21175, 21178, 21182, 21185, 21188, 21192, 21195, 21198, 21202, 21205, 21208, 21212, 21215, 21218, 21222, 21225, 21228, 21232, 21235, 21238, 21242, 21245, 21248, 21252, 21255, 21258, 21261, 21265, 21268, 21271, 21275, 21278, 21281, 21285, 21288, 21291, 21295, 21298, 21301, 21305, 21308, 21311, 21315, 21318, 21321, 21325, 21328, 21331, 21335, 21338, 21341, 21345, 21348, 21351, 21354, 21358, 21361, 21364, 21368, 21371, 21374, 21378, 21381, 21384, 21388, 21391, 21394, 21398, 21401, 21404, 21408, 21411, 21414, 21418, 21421, 21424, 21428, 21431, 21434, 21438, 21441, 21444, 21447, 21451, 21454, 21457, 21461, 21464, 21467, 21471, 21474, 21477, 21481, 21484, 21487, 21491, 21494, 21497, 21501, 21504, 21507, 21511, 21514, 21517, 21521, 21524, 21527, 21531, 21534, 21537, 21541, 21544, 21547, 21550, 21554, 21557, 21560, 21564, 21567, 21570, 21574, 21577, 21580, 21584, 21587, 21590, 21594, 21597, 21600, 21604, 21607, 21610, 21614, 21617, 21620, 21624, 21627, 21630, 21634, 21637, 21640, 21643, 21647, 21650, 21653, 21657, 21660, 21663, 21667, 21670, 21673, 21677, 21680, 21683, 21687, 21690, 21693, 21697, 21700, 21703, 21707, 21710, 21713, 21717, 21720, 21723, 21727, 21730, 21733, 21737, 21740, 21743, 21746, 21750, 21753, 21756, 21760, 21763, 21766, 21770, 21773, 21776, 21780, 21783, 21786, 21790, 21793, 21796, 21800, 21803, 21806, 21810, 21813, 21816, 21820, 21823, 21826, 21830, 21833, 21836, 21839, 21843, 21846, 21849, 21853, 21856, 21859, 21863, 21866, 21869, 21873, 21876, 21879, 21883, 21886, 21889, 21893, 21896, 21899, 21903, 21906, 21909, 21913, 21916, 21919, 21923, 21926, 21929, 21932, 21936, 21939, 21942, 21946, 21949, 21952, 21956, 21959, 21962, 21966, 21969, 21972, 21976, 21979, 21982, 21986, 21989, 21992, 21996, 21999, 22002, 22006, 22009, 22012, 22016, 22019, 22022, 22026, 22029, 22032, 22035, 22039, 22042, 22045, 22049, 22052, 22055, 22059, 22062, 22065, 22069, 22072, 22075, 22079, 22082, 22085, 22089, 22092, 22095, 22099, 22102, 22105, 22109, 22112, 22115, 22119, 22122, 22125, 22128, 22132, 22135, 22138, 22142, 22145, 22148, 22152, 22155, 22158, 22162, 22165, 22168, 22172, 22175, 22178, 22182, 22185, 22188, 22192, 22195, 22198, 22202, 22205, 22208, 22212, 22215, 22218, 22222, 22225, 22228, 22231, 22235, 22238, 22241, 22245, 22248, 22251, 22255, 22258, 22261, 22265, 22268, 22271, 22275, 22278, 22281, 22285, 22288, 22291, 22295, 22298, 22301, 22305, 22308, 22311, 22315, 22318, 22321, 22324, 22328, 22331, 22334, 22338, 22341, 22344, 22348, 22351, 22354, 22358, 22361, 22364, 22368, 22371, 22374, 22378, 22381, 22384, 22388, 22391, 22394, 22398, 22401, 22404, 22408, 22411, 22414, 22417, 22421, 22424, 22427, 22431, 22434, 22437, 22441, 22444, 22447, 22451, 22454, 22457, 22461, 22464, 22467, 22471, 22474, 22477, 22481, 22484, 22487, 22491, 22494, 22497, 22501, 22504, 22507, 22511, 22514, 22517, 22520, 22524, 22527, 22530, 22534, 22537, 22540, 22544, 22547, 22550, 22554, 22557, 22560, 22564, 22567, 22570, 22574, 22577, 22580, 22584, 22587, 22590, 22594, 22597, 22600, 22604, 22607, 22610, 22613, 22617, 22620, 22623, 22627, 22630, 22633, 22637, 22640, 22643, 22647, 22650, 22653, 22657, 22660, 22663, 22667, 22670, 22673, 22677, 22680, 22683, 22687, 22690, 22693, 22697, 22700, 22703, 22707, 22710, 22713, 22716, 22720, 22723, 22726, 22730, 22733, 22736, 22740, 22743, 22746, 22750, 22753, 22756, 22760, 22763, 22766, 22770, 22773, 22776, 22780, 22783, 22786, 22790, 22793, 22796, 22800, 22803, 22806, 22809, 22813, 22816, 22819, 22823, 22826, 22829, 22833, 22836, 22839, 22843, 22846, 22849, 22853, 22856, 22859, 22863, 22866, 22869, 22873, 22876, 22879, 22883, 22886, 22889, 22893, 22896, 22899, 22902, 22906, 22909, 22912, 22916, 22919, 22922, 22926, 22929, 22932, 22936, 22939, 22942, 22946, 22949, 22952, 22956, 22959, 22962, 22966, 22969, 22972, 22976, 22979, 22982, 22986, 22989, 22992, 22996, 22999, 23002, 23005, 23009, 23012, 23015, 23019, 23022, 23025, 23029, 23032, 23035, 23039, 23042, 23045, 23049, 23052, 23055, 23059, 23062, 23065, 23069, 23072, 23075, 23079, 23082, 23085, 23089, 23092, 23095, 23098, 23102, 23105, 23108, 23112, 23115, 23118, 23122, 23125, 23128, 23132, 23135, 23138, 23142, 23145, 23148, 23152, 23155, 23158, 23162, 23165, 23168, 23172, 23175, 23178, 23182, 23185, 23188, 23192, 23195, 23198, 23201, 23205, 23208, 23211, 23215, 23218, 23221, 23225, 23228, 23231, 23235, 23238, 23241, 23245, 23248, 23251, 23255, 23258, 23261, 23265, 23268, 23271, 23275, 23278, 23281, 23285, 23288, 23291, 23294, 23298, 23301, 23304, 23308, 23311, 23314, 23318, 23321, 23324, 23328, 23331, 23334, 23338, 23341, 23344, 23348, 23351, 23354, 23358, 23361, 23364, 23368, 23371, 23374, 23378, 23381, 23384, 23388, 23391, 23394, 23397, 23401, 23404, 23407, 23411, 23414, 23417, 23421, 23424, 23427, 23431, 23434, 23437, 23441, 23444, 23447, 23451, 23454, 23457, 23461, 23464, 23467, 23471, 23474, 23477, 23481, 23484, 23487, 23490, 23494, 23497, 23500, 23504, 23507, 23510, 23514, 23517, 23520, 23524, 23527, 23530, 23534, 23537, 23540, 23544, 23547, 23550, 23554, 23557, 23560, 23564, 23567, 23570, 23574, 23577, 23580, 23583, 23587, 23590, 23593, 23597, 23600, 23603, 23607, 23610, 23613, 23617, 23620, 23623, 23627, 23630, 23633, 23637, 23640, 23643, 23647, 23650, 23653, 23657, 23660, 23663, 23667, 23670, 23673, 23677, 23680, 23683, 23686, 23690, 23693, 23696, 23700, 23703, 23706, 23710, 23713, 23716, 23720, 23723, 23726, 23730, 23733, 23736, 23740, 23743, 23746, 23750, 23753, 23756, 23760, 23763, 23766, 23770, 23773, 23776, 23779, 23783, 23786, 23789, 23793, 23796, 23799, 23803, 23806, 23809, 23813, 23816, 23819, 23823, 23826, 23829, 23833, 23836, 23839, 23843, 23846, 23849, 23853, 23856, 23859, 23863, 23866, 23869, 23873, 23876, 23879, 23882, 23886, 23889, 23892, 23896, 23899, 23902, 23906, 23909, 23912, 23916, 23919, 23922, 23926, 23929, 23932, 23936, 23939, 23942, 23946, 23949, 23952, 23956, 23959, 23962, 23966, 23969, 23972, 23975, 23979, 23982, 23985, 23989, 23992, 23995, 23999, 24002, 24005, 24009, 24012, 24015, 24019, 24022, 24025, 24029, 24032, 24035, 24039, 24042, 24045, 24049, 24052, 24055, 24059, 24062, 24065, 24068, 24072, 24075, 24078, 24082, 24085, 24088, 24092, 24095, 24098, 24102, 24105, 24108, 24112, 24115, 24118, 24122, 24125, 24128, 24132, 24135, 24138, 24142, 24145, 24148, 24152, 24155, 24158, 24162, 24165, 24168, 24171, 24175, 24178, 24181, 24185, 24188, 24191, 24195, 24198, 24201, 24205, 24208, 24211, 24215, 24218, 24221, 24225, 24228, 24231, 24235, 24238, 24241, 24245, 24248, 24251, 24255, 24258, 24261, 24264, 24268, 24271, 24274, 24278, 24281, 24284, 24288, 24291, 24294, 24298, 24301, 24304, 24308, 24311, 24314, 24318, 24321, 24324, 24328, 24331, 24334, 24338, 24341, 24344, 24348, 24351, 24354, 24358, 24361, 24364, 24367, 24371, 24374, 24377, 24381, 24384, 24387, 24391, 24394, 24397, 24401, 24404, 24407, 24411, 24414, 24417, 24421, 24424, 24427, 24431, 24434, 24437, 24441, 24444, 24447, 24451, 24454, 24457, 24460, 24464, 24467, 24470, 24474, 24477, 24480, 24484, 24487, 24490, 24494, 24497, 24500, 24504, 24507, 24510, 24514, 24517, 24520, 24524, 24527, 24530, 24534, 24537, 24540, 24544, 24547, 24550, 24553, 24557, 24560, 24563, 24567, 24570, 24573, 24577, 24580, 24583, 24587, 24590, 24593, 24597, 24600, 24603, 24607, 24610, 24613, 24617, 24620, 24623, 24627, 24630, 24633, 24637, 24640, 24643, 24647, 24650, 24653, 24656, 24660, 24663, 24666, 24670, 24673, 24676, 24680, 24683, 24686, 24690, 24693, 24696, 24700, 24703, 24706, 24710, 24713, 24716, 24720, 24723, 24726, 24730, 24733, 24736, 24740, 24743, 24746, 24749, 24753, 24756, 24759, 24763, 24766, 24769, 24773, 24776, 24779, 24783, 24786, 24789, 24793, 24796, 24799, 24803, 24806, 24809, 24813, 24816, 24819, 24823, 24826, 24829, 24833, 24836, 24839, 24843, 24846, 24849, 24852, 24856, 24859, 24862, 24866, 24869, 24872, 24876, 24879, 24882, 24886, 24889, 24892, 24896, 24899, 24902, 24906, 24909, 24912, 24916, 24919, 24922, 24926, 24929, 24932, 24936, 24939, 24942, 24945, 24949, 24952, 24955, 24959, 24962, 24965, 24969, 24972, 24975, 24979, 24982, 24985, 24989, 24992, 24995, 24999, 25002, 25005, 25009, 25012, 25015, 25019, 25022, 25025, 25029, 25032, 25035, 25038, 25042, 25045, 25048, 25052, 25055, 25058, 25062, 25065, 25068, 25072, 25075, 25078, 25082, 25085, 25088, 25092, 25095, 25098, 25102, 25105, 25108, 25112, 25115, 25118, 25122, 25125, 25128, 25132, 25135, 25138, 25141, 25145, 25148, 25151, 25155, 25158, 25161, 25165, 25168, 25171, 25175, 25178, 25181, 25185, 25188, 25191, 25195, 25198, 25201, 25205, 25208, 25211, 25215, 25218, 25221, 25225, 25228, 25231, 25234, 25238, 25241, 25244, 25248, 25251, 25254, 25258, 25261, 25264, 25268, 25271, 25274, 25278, 25281, 25284, 25288, 25291, 25294, 25298, 25301, 25304, 25308, 25311, 25314, 25318, 25321, 25324, 25328, 25331, 25334, 25337, 25341, 25344, 25347, 25351, 25354, 25357, 25361, 25364, 25367, 25371, 25374, 25377, 25381, 25384, 25387, 25391, 25394, 25397, 25401, 25404, 25407, 25411, 25414, 25417, 25421, 25424, 25427, 25430, 25434, 25437, 25440, 25444, 25447, 25450, 25454, 25457, 25460, 25464, 25467, 25470, 25474, 25477, 25480, 25484, 25487, 25490, 25494, 25497, 25500, 25504, 25507, 25510, 25514, 25517, 25520, 25524, 25527, 25530, 25533, 25537, 25540, 25543, 25547, 25550, 25553, 25557, 25560, 25563, 25567, 25570, 25573, 25577, 25580, 25583, 25587, 25590, 25593, 25597, 25600, 25603, 25607, 25610, 25613, 25617, 25620, 25623, 25626, 25630, 25633, 25636, 25640, 25643, 25646, 25650, 25653, 25656, 25660, 25663, 25666, 25670, 25673, 25676, 25680, 25683, 25686, 25690, 25693, 25696, 25700, 25703, 25706, 25710, 25713, 25716, 25719, 25723, 25726, 25729, 25733, 25736, 25739, 25743, 25746, 25749, 25753, 25756, 25759, 25763, 25766, 25769, 25773, 25776, 25779, 25783, 25786, 25789, 25793, 25796, 25799, 25803, 25806, 25809, 25813, 25816, 25819, 25822, 25826, 25829, 25832, 25836, 25839, 25842, 25846, 25849, 25852, 25856, 25859, 25862, 25866, 25869, 25872, 25876, 25879, 25882, 25886, 25889, 25892, 25896, 25899, 25902, 25906, 25909, 25912, 25915, 25919, 25922, 25925, 25929, 25932, 25935, 25939, 25942, 25945, 25949, 25952, 25955, 25959, 25962, 25965, 25969, 25972, 25975, 25979, 25982, 25985, 25989, 25992, 25995, 25999, 26002, 26005, 26009, 26012, 26015, 26018, 26022, 26025, 26028, 26032, 26035, 26038, 26042, 26045, 26048, 26052, 26055, 26058, 26062, 26065, 26068, 26072, 26075, 26078, 26082, 26085, 26088, 26092, 26095, 26098, 26102, 26105, 26108, 26111, 26115, 26118, 26121, 26125, 26128, 26131, 26135, 26138, 26141, 26145, 26148, 26151, 26155, 26158, 26161, 26165, 26168, 26171, 26175, 26178, 26181, 26185, 26188, 26191, 26195, 26198, 26201, 26204, 26208, 26211, 26214, 26218, 26221, 26224, 26228, 26231, 26234, 26238, 26241, 26244, 26248, 26251, 26254, 26258, 26261, 26264, 26268, 26271, 26274, 26278, 26281, 26284, 26288, 26291, 26294, 26298, 26301, 26304, 26307, 26311, 26314, 26317, 26321, 26324, 26327, 26331, 26334, 26337, 26341, 26344, 26347, 26351, 26354, 26357, 26361, 26364, 26367, 26371, 26374, 26377, 26381, 26384, 26387, 26391, 26394, 26397, 26400, 26404, 26407, 26410, 26414, 26417, 26420, 26424, 26427, 26430, 26434, 26437, 26440, 26444, 26447, 26450, 26454, 26457, 26460, 26464, 26467, 26470, 26474, 26477, 26480, 26484, 26487, 26490, 26494, 26497, 26500, 26503, 26507, 26510, 26513, 26517, 26520, 26523, 26527, 26530, 26533, 26537, 26540, 26543, 26547, 26550, 26553, 26557, 26560, 26563, 26567, 26570, 26573, 26577, 26580, 26583, 26587, 26590, 26593, 26596, 26600, 26603, 26606, 26610, 26613, 26616, 26620, 26623, 26626, 26630, 26633, 26636, 26640, 26643, 26646, 26650, 26653, 26656, 26660, 26663, 26666, 26670, 26673, 26676, 26680, 26683, 26686, 26689, 26693, 26696, 26699, 26703, 26706, 26709, 26713, 26716, 26719, 26723, 26726, 26729, 26733, 26736, 26739, 26743, 26746, 26749, 26753, 26756, 26759, 26763, 26766, 26769, 26773, 26776, 26779, 26783, 26786, 26789, 26792, 26796, 26799, 26802, 26806, 26809, 26812, 26816, 26819, 26822, 26826, 26829, 26832, 26836, 26839, 26842, 26846, 26849, 26852, 26856, 26859, 26862, 26866, 26869, 26872, 26876, 26879, 26882, 26885, 26889, 26892, 26895, 26899, 26902, 26905, 26909, 26912, 26915, 26919, 26922, 26925, 26929, 26932, 26935, 26939, 26942, 26945, 26949, 26952, 26955, 26959, 26962, 26965, 26969, 26972, 26975, 26979, 26982, 26985, 26988, 26992, 26995, 26998, 27002, 27005, 27008, 27012, 27015, 27018, 27022, 27025, 27028, 27032, 27035, 27038, 27042, 27045, 27048, 27052, 27055, 27058, 27062, 27065, 27068, 27072, 27075, 27078, 27081, 27085, 27088, 27091, 27095, 27098, 27101, 27105, 27108, 27111, 27115, 27118, 27121, 27125, 27128, 27131, 27135, 27138, 27141, 27145, 27148, 27151, 27155, 27158, 27161, 27165, 27168, 27171, 27174, 27178, 27181, 27184, 27188, 27191, 27194, 27198, 27201, 27204, 27208, 27211, 27214, 27218, 27221, 27224, 27228, 27231, 27234, 27238, 27241, 27244, 27248, 27251, 27254, 27258, 27261, 27264, 27268, 27271, 27274, 27277, 27281, 27284, 27287, 27291, 27294, 27297, 27301, 27304, 27307, 27311, 27314, 27317, 27321, 27324, 27327, 27331, 27334, 27337, 27341, 27344, 27347, 27351, 27354, 27357, 27361, 27364, 27367, 27370, 27374, 27377, 27380, 27384, 27387, 27390, 27394, 27397, 27400, 27404, 27407, 27410, 27414, 27417, 27420, 27424, 27427, 27430, 27434, 27437, 27440, 27444, 27447, 27450, 27454, 27457, 27460, 27464, 27467, 27470, 27473, 27477, 27480, 27483, 27487, 27490, 27493, 27497, 27500, 27503, 27507, 27510, 27513, 27517, 27520, 27523, 27527, 27530, 27533, 27537, 27540, 27543, 27547, 27550, 27553, 27557, 27560, 27563, 27566, 27570, 27573, 27576, 27580, 27583, 27586, 27590, 27593, 27596, 27600, 27603, 27606, 27610, 27613, 27616, 27620, 27623, 27626, 27630, 27633, 27636, 27640, 27643, 27646, 27650, 27653, 27656, 27660, 27663, 27666, 27669, 27673, 27676, 27679, 27683, 27686, 27689, 27693, 27696, 27699, 27703, 27706, 27709, 27713, 27716, 27719, 27723, 27726, 27729, 27733, 27736, 27739, 27743, 27746, 27749, 27753, 27756, 27759, 27762, 27766, 27769, 27772, 27776, 27779, 27782, 27786, 27789, 27792, 27796, 27799, 27802, 27806, 27809, 27812, 27816, 27819, 27822, 27826, 27829, 27832, 27836, 27839, 27842, 27846, 27849, 27852, 27855, 27859, 27862, 27865, 27869, 27872, 27875, 27879, 27882, 27885, 27889, 27892, 27895, 27899, 27902, 27905, 27909, 27912, 27915, 27919, 27922, 27925, 27929, 27932, 27935, 27939, 27942, 27945, 27949, 27952, 27955, 27958, 27962, 27965, 27968, 27972, 27975, 27978, 27982, 27985, 27988, 27992, 27995, 27998, 28002, 28005, 28008, 28012, 28015, 28018, 28022, 28025, 28028, 28032, 28035, 28038, 28042, 28045, 28048, 28051, 28055, 28058, 28061, 28065, 28068, 28071, 28075, 28078, 28081, 28085, 28088, 28091, 28095, 28098, 28101, 28105, 28108, 28111, 28115, 28118, 28121, 28125, 28128, 28131, 28135, 28138, 28141, 28145, 28148, 28151, 28154, 28158, 28161, 28164, 28168, 28171, 28174, 28178, 28181, 28184, 28188, 28191, 28194, 28198, 28201, 28204, 28208, 28211, 28214, 28218, 28221, 28224, 28228, 28231, 28234, 28238, 28241, 28244, 28247, 28251, 28254, 28257, 28261, 28264, 28267, 28271, 28274, 28277, 28281, 28284, 28287, 28291, 28294, 28297, 28301, 28304, 28307, 28311, 28314, 28317, 28321, 28324, 28327, 28331, 28334, 28337, 28340, 28344, 28347, 28350, 28354, 28357, 28360, 28364, 28367, 28370, 28374, 28377, 28380, 28384, 28387, 28390, 28394, 28397, 28400, 28404, 28407, 28410, 28414, 28417, 28420, 28424, 28427, 28430, 28434, 28437, 28440, 28443, 28447, 28450, 28453, 28457, 28460, 28463, 28467, 28470, 28473, 28477, 28480, 28483, 28487, 28490, 28493, 28497, 28500, 28503, 28507, 28510, 28513, 28517, 28520, 28523, 28527, 28530, 28533, 28536, 28540, 28543, 28546, 28550, 28553, 28556, 28560, 28563, 28566, 28570, 28573, 28576, 28580, 28583, 28586, 28590, 28593, 28596, 28600, 28603, 28606, 28610, 28613, 28616, 28620, 28623, 28626, 28630, 28633, 28636, 28639, 28643, 28646, 28649, 28653, 28656, 28659, 28663, 28666, 28669, 28673, 28676, 28679, 28683, 28686, 28689, 28693, 28696, 28699, 28703, 28706, 28709, 28713, 28716, 28719, 28723, 28726, 28729, 28732, 28736, 28739, 28742, 28746, 28749, 28752, 28756, 28759, 28762, 28766, 28769, 28772, 28776, 28779, 28782, 28786, 28789, 28792, 28796, 28799, 28802, 28806, 28809, 28812, 28816, 28819, 28822, 28825, 28829, 28832, 28835, 28839, 28842, 28845, 28849, 28852, 28855, 28859, 28862, 28865, 28869, 28872, 28875, 28879, 28882, 28885, 28889, 28892, 28895, 28899, 28902, 28905, 28909, 28912, 28915, 28919, 28922, 28925, 28928, 28932, 28935, 28938, 28942, 28945, 28948, 28952, 28955, 28958, 28962, 28965, 28968, 28972, 28975, 28978, 28982, 28985, 28988, 28992, 28995, 28998, 29002, 29005, 29008, 29012, 29015, 29018, 29021, 29025, 29028, 29031, 29035, 29038, 29041, 29045, 29048, 29051, 29055, 29058, 29061, 29065, 29068, 29071, 29075, 29078, 29081, 29085, 29088, 29091, 29095, 29098, 29101, 29105, 29108, 29111, 29115, 29118, 29121, 29124, 29128, 29131, 29134, 29138, 29141, 29144, 29148, 29151, 29154, 29158, 29161, 29164, 29168, 29171, 29174, 29178, 29181, 29184, 29188, 29191, 29194, 29198, 29201, 29204, 29208, 29211, 29214, 29217, 29221, 29224, 29227, 29231, 29234, 29237, 29241, 29244, 29247, 29251, 29254, 29257, 29261, 29264, 29267, 29271, 29274, 29277, 29281, 29284, 29287, 29291, 29294, 29297, 29301, 29304, 29307, 29310, 29314, 29317, 29320, 29324, 29327, 29330, 29334, 29337, 29340, 29344, 29347, 29350, 29354, 29357, 29360, 29364, 29367, 29370, 29374, 29377, 29380, 29384, 29387, 29390, 29394, 29397, 29400, 29404, 29407, 29410, 29413, 29417, 29420, 29423, 29427, 29430, 29433, 29437, 29440, 29443, 29447, 29450, 29453, 29457, 29460, 29463, 29467, 29470, 29473, 29477, 29480, 29483, 29487, 29490, 29493, 29497, 29500, 29503, 29506, 29510, 29513, 29516, 29520, 29523, 29526, 29530, 29533, 29536, 29540, 29543, 29546, 29550, 29553, 29556, 29560, 29563, 29566, 29570, 29573, 29576, 29580, 29583, 29586, 29590, 29593, 29596, 29600, 29603, 29606, 29609, 29613, 29616, 29619, 29623, 29626, 29629, 29633, 29636, 29639, 29643, 29646, 29649, 29653, 29656, 29659, 29663, 29666, 29669, 29673, 29676, 29679, 29683, 29686, 29689, 29693, 29696, 29699, 29702, 29706, 29709, 29712, 29716, 29719, 29722, 29726, 29729, 29732, 29736, 29739, 29742, 29746, 29749, 29752, 29756, 29759, 29762, 29766, 29769, 29772, 29776, 29779, 29782, 29786, 29789, 29792, 29796, 29799, 29802, 29805, 29809, 29812, 29815, 29819, 29822, 29825, 29829, 29832, 29835, 29839, 29842, 29845, 29849, 29852, 29855, 29859, 29862, 29865, 29869, 29872, 29875, 29879, 29882, 29885, 29889, 29892, 29895, 29898, 29902, 29905, 29908, 29912, 29915, 29918, 29922, 29925, 29928, 29932, 29935, 29938, 29942, 29945, 29948, 29952, 29955, 29958, 29962, 29965, 29968, 29972, 29975, 29978, 29982, 29985, 29988, 29991, 29995, 29998, 30001, 30005, 30008, 30011, 30015, 30018, 30021, 30025, 30028, 30031, 30035, 30038, 30041, 30045, 30048, 30051, 30055, 30058, 30061, 30065, 30068, 30071, 30075, 30078, 30081, 30085, 30088, 30091, 30094, 30098, 30101, 30104, 30108, 30111, 30114, 30118, 30121, 30124, 30128, 30131, 30134, 30138, 30141, 30144, 30148, 30151, 30154, 30158, 30161, 30164, 30168, 30171, 30174, 30178, 30181, 30184, 30187, 30191, 30194, 30197, 30201, 30204, 30207, 30211, 30214, 30217, 30221, 30224, 30227, 30231, 30234, 30237, 30241, 30244, 30247, 30251, 30254, 30257, 30261, 30264, 30267, 30271, 30274, 30277, 30281, 30284, 30287, 30290, 30294, 30297, 30300, 30304, 30307, 30310, 30314, 30317, 30320, 30324, 30327, 30330, 30334, 30337, 30340, 30344, 30347, 30350, 30354, 30357, 30360, 30364, 30367, 30370, 30374, 30377, 30380, 30383, 30387, 30390, 30393, 30397, 30400, 30403, 30407, 30410, 30413, 30417, 30420, 30423, 30427, 30430, 30433, 30437, 30440, 30443, 30447, 30450, 30453, 30457, 30460, 30463, 30467, 30470, 30473, 30476, 30480, 30483, 30486, 30490, 30493, 30496, 30500, 30503, 30506, 30510, 30513, 30516, 30520, 30523, 30526, 30530, 30533, 30536, 30540, 30543, 30546, 30550, 30553, 30556, 30560, 30563, 30566, 30570, 30573, 30576, 30579, 30583, 30586, 30589, 30593, 30596, 30599, 30603, 30606, 30609, 30613, 30616, 30619, 30623, 30626, 30629, 30633, 30636, 30639, 30643, 30646, 30649, 30653, 30656, 30659, 30663, 30666, 30669, 30672, 30676, 30679, 30682, 30686, 30689, 30692, 30696, 30699, 30702, 30706, 30709, 30712, 30716, 30719, 30722, 30726, 30729, 30732, 30736, 30739, 30742, 30746, 30749, 30752, 30756, 30759, 30762, 30766, 30769, 30772, 30775, 30779, 30782, 30785, 30789, 30792, 30795, 30799, 30802, 30805, 30809, 30812, 30815, 30819, 30822, 30825, 30829, 30832, 30835, 30839, 30842, 30845, 30849, 30852, 30855, 30859, 30862, 30865, 30868, 30872, 30875, 30878, 30882, 30885, 30888, 30892, 30895, 30898, 30902, 30905, 30908, 30912, 30915, 30918, 30922, 30925, 30928, 30932, 30935, 30938, 30942, 30945, 30948, 30952, 30955, 30958, 30961, 30965, 30968, 30971, 30975, 30978, 30981, 30985, 30988, 30991, 30995, 30998, 31001, 31005, 31008, 31011, 31015, 31018, 31021, 31025, 31028, 31031, 31035, 31038, 31041, 31045, 31048, 31051, 31055, 31058, 31061, 31064, 31068, 31071, 31074, 31078, 31081, 31084, 31088, 31091, 31094, 31098, 31101, 31104, 31108, 31111, 31114, 31118, 31121, 31124, 31128, 31131, 31134, 31138, 31141, 31144, 31148, 31151, 31154, 31157, 31161, 31164, 31167, 31171, 31174, 31177, 31181, 31184, 31187, 31191, 31194, 31197, 31201, 31204, 31207, 31211, 31214, 31217, 31221, 31224, 31227, 31231, 31234, 31237, 31241, 31244, 31247, 31251, 31254, 31257, 31260, 31264, 31267, 31270, 31274, 31277, 31280, 31284, 31287, 31290, 31294, 31297, 31300, 31304, 31307, 31310, 31314, 31317, 31320, 31324, 31327, 31330, 31334, 31337, 31340, 31344, 31347, 31350, 31353, 31357, 31360, 31363, 31367, 31370, 31373, 31377, 31380, 31383, 31387, 31390, 31393, 31397, 31400, 31403, 31407, 31410, 31413, 31417, 31420, 31423, 31427, 31430, 31433, 31437, 31440, 31443, 31446, 31450, 31453, 31456, 31460, 31463, 31466, 31470, 31473, 31476, 31480, 31483, 31486, 31490, 31493, 31496, 31500, 31503, 31506, 31510, 31513, 31516, 31520, 31523, 31526, 31530, 31533, 31536, 31540, 31543, 31546, 31549, 31553, 31556, 31559, 31563, 31566, 31569, 31573, 31576, 31579, 31583, 31586, 31589, 31593, 31596, 31599, 31603, 31606, 31609, 31613, 31616, 31619, 31623, 31626, 31629, 31633, 31636, 31639, 31642, 31646, 31649, 31652, 31656, 31659, 31662, 31666, 31669, 31672, 31676, 31679, 31682, 31686, 31689, 31692, 31696, 31699, 31702, 31706, 31709, 31712, 31716, 31719, 31722, 31726, 31729, 31732, 31736, 31739, 31742, 31745, 31749, 31752, 31755, 31759, 31762, 31765, 31769, 31772, 31775, 31779, 31782, 31785, 31789, 31792, 31795, 31799, 31802, 31805, 31809, 31812, 31815, 31819, 31822, 31825, 31829, 31832, 31835, 31838, 31842, 31845, 31848, 31852, 31855, 31858, 31862, 31865, 31868, 31872, 31875, 31878, 31882, 31885, 31888, 31892, 31895, 31898, 31902, 31905, 31908, 31912, 31915, 31918, 31922, 31925, 31928, 31931, 31935, 31938, 31941, 31945, 31948, 31951, 31955, 31958, 31961, 31965, 31968, 31971, 31975, 31978, 31981, 31985, 31988, 31991, 31995, 31998, 32001, 32005, 32008, 32011, 32015, 32018, 32021, 32025, 32028, 32031, 32034, 32038, 32041, 32044, 32048, 32051, 32054, 32058, 32061, 32064, 32068, 32071, 32074, 32078, 32081, 32084, 32088, 32091, 32094, 32098, 32101, 32104, 32108, 32111, 32114, 32118, 32121, 32124, 32127, 32131, 32134, 32137, 32141, 32144, 32147, 32151, 32154, 32157, 32161, 32164, 32167, 32171, 32174, 32177, 32181, 32184, 32187, 32191, 32194, 32197, 32201, 32204, 32207, 32211, 32214, 32217, 32221, 32224, 32227, 32230, 32234, 32237, 32240, 32244, 32247, 32250, 32254, 32257, 32260, 32264, 32267, 32270, 32274, 32277, 32280, 32284, 32287, 32290, 32294, 32297, 32300, 32304, 32307, 32310, 32314, 32317, 32320, 32323, 32327, 32330, 32333, 32337, 32340, 32343, 32347, 32350, 32353, 32357, 32360, 32363, 32367, 32370, 32373, 32377, 32380, 32383, 32387, 32390, 32393, 32397, 32400, 32403, 32407, 32410, 32413, 32417, 32420, 32423, 32426, 32430, 32433, 32436, 32440, 32443, 32446, 32450, 32453, 32456, 32460, 32463, 32466, 32470, 32473, 32476, 32480, 32483, 32486, 32490, 32493, 32496, 32500, 32503, 32506, 32510, 32513, 32516, 32519, 32523, 32526, 32529, 32533, 32536, 32539, 32543, 32546, 32549, 32553, 32556, 32559, 32563, 32566, 32569, 32573, 32576, 32579, 32583, 32586, 32589, 32593, 32596, 32599, 32603, 32606, 32609, 32612, 32616, 32619, 32622, 32626, 32629, 32632, 32636, 32639, 32642, 32646, 32649, 32652, 32656, 32659, 32662, 32666, 32669, 32672, 32676, 32679, 32682, 32686, 32689, 32692, 32696, 32699, 32702, 32706, 32709, 32712, 32715, 32719, 32722, 32725, 32729, 32732, 32735, 32739, 32742, 32745, 32749, 32752, 32755, 32759, 32762, 32765, 32769, 32772, 32775, 32779, 32782, 32785, 32789, 32792, 32795, 32799, 32802, 32805, 32808, 32812, 32815, 32818, 32822, 32825, 32828, 32832, 32835, 32838, 32842, 32845, 32848, 32852, 32855, 32858, 32862, 32865, 32868, 32872, 32875, 32878, 32882, }; static const BID_UINT256 bid_multipliers1_binary128[] = { {{15420861665977618167ull, 8795339322986628986ull, 11692172791063221495ull, 5916811177297135519ull}}, {{10052705045617246901ull, 6382488135305898329ull, 10003529970401638965ull, 7396013971621419399ull}}, {{17812155699579249073ull, 6294898093779880407ull, 13169735259142106209ull, 4622508732263387124ull}}, {{17653508606046673438ull, 12480308635652238413ull, 16462169073927632761ull, 5778135915329233905ull}}, {{8231827702276178085ull, 1765327739283134305ull, 6742653287127377240ull, 7222669894161542382ull}}, {{14901470646272610510ull, 2206659674103917881ull, 17651688645763997358ull, 9028337367701927977ull}}, {{2395890126279299713ull, 15214220351597112388ull, 4114776375961416492ull, 5642710854813704986ull}}, {{2994862657849124641ull, 571031365786838869ull, 14366842506806546424ull, 7053388568517131232ull}}, {{8355264340738793705ull, 713789207233548586ull, 17958553133508183030ull, 8816735710646414040ull}}, {{9833726231389133970ull, 14281176309803131578ull, 11224095708442614393ull, 5510459819154008775ull}}, {{3068785752381641654ull, 4016412331971750761ull, 9418433617125880088ull, 6888074773942510969ull}}, {{8447668208904439972ull, 5020515414964688451ull, 16384728039834738014ull, 8610093467428138711ull}}, {{2973949621351581031ull, 16972880189635093994ull, 17157984052537793114ull, 5381308417142586694ull}}, {{12940809063544252096ull, 11992728200189091684ull, 12224108028817465585ull, 6726635521428233368ull}}, {{16176011329430315120ull, 1155852194954200893ull, 15280135036021831982ull, 8408294401785291710ull}}, {{12415850090107640902ull, 14557465677128539270ull, 4938398379086257084ull, 5255184001115807319ull}}, {{6296440575779775320ull, 18196832096410674088ull, 1561311955430433451ull, 6568980001394759149ull}}, {{7870550719724719149ull, 18134354102085954706ull, 6563325962715429718ull, 8211225001743448936ull}}, {{9530780218255337373ull, 6722285295376333787ull, 4102078726697143574ull, 5132015626089655585ull}}, {{7301789254391783812ull, 17626228656075193042ull, 9739284426798817371ull, 6415019532612069481ull}}, {{18350608604844505572ull, 17421099801666603398ull, 16785791551925909618ull, 8018774415765086851ull}}, {{6857444359600428079ull, 15499873394469015028ull, 8185276710739999559ull, 5011734009853179282ull}}, {{8571805449500535098ull, 14763155724658880881ull, 1008223851570223641ull, 6264667512316474103ull}}, {{15326442830303056777ull, 4618886600541437389ull, 15095337869744943264ull, 7830834390395592628ull}}, {{11884869778153104438ull, 2886804125338398368ull, 211214131735813732ull, 4894271493997245393ull}}, {{14856087222691380547ull, 3608505156672997960ull, 4875703683097155069ull, 6117839367496556741ull}}, {{123364954654674068ull, 9122317464268635355ull, 10706315622298831740ull, 7647299209370695926ull}}, {{16218004161155028957ull, 14924820452022672904ull, 2079761245509381933ull, 4779562005856684954ull}}, {{1825761127734234580ull, 4820967509746177419ull, 11823073593741503225ull, 5974452507320856192ull}}, {{16117259464949956936ull, 10637895405610109677ull, 14778841992176879031ull, 7468065634151070240ull}}, {{12379130174807417037ull, 13566213656147400404ull, 9236776245110549394ull, 4667541021344418900ull}}, {{15473912718509271297ull, 7734395033329474697ull, 11545970306388186743ull, 5834426276680523625ull}}, {{5507332842854425409ull, 5056307773234455468ull, 597404827703069717ull, 7293032845850654532ull}}, {{6884166053568031761ull, 10932070734970457239ull, 746756034628837146ull, 9116291057313318165ull}}, {{11220132811121101707ull, 11444230227783923678ull, 2772565530856717168ull, 5697681910820823853ull}}, {{4801793977046601325ull, 14305287784729904598ull, 8077392931998284364ull, 7122102388526029816ull}}, {{15225614508163027464ull, 17881609730912380747ull, 10096741164997855455ull, 8902627985657537270ull}}, {{7210166058388198213ull, 18093535109461319823ull, 1698777209696271755ull, 5564142491035960794ull}}, {{4401021554557859863ull, 18005232868399261875ull, 11346843548975115502ull, 6955178113794950992ull}}, {{889590924769936924ull, 13283169048644301536ull, 14183554436218894378ull, 8693972642243688740ull}}, {{555994327981210578ull, 12913666673830076364ull, 18088093559491584794ull, 5433732901402305462ull}}, {{694992909976513222ull, 6918711305432819647ull, 13386744912509705185ull, 6792166126752881828ull}}, {{14703799192752805239ull, 13260075150218412462ull, 16733431140637131481ull, 8490207658441102285ull}}, {{4578188477043115371ull, 1370017941245425933ull, 12764237472111901128ull, 5306379786525688928ull}}, {{10334421614731282117ull, 1712522426556782416ull, 15955296840139876410ull, 6632974733157111160ull}}, {{12918027018414102647ull, 11364025070050753828ull, 1497376976465293896ull, 8291218416446388951ull}}, {{17297138923363589962ull, 7102515668781721142ull, 7853389637931890541ull, 5182011510278993094ull}}, {{12398051617349711645ull, 13489830604404539332ull, 593365010560087368ull, 6477514387848741368ull}}, {{15497564521687139556ull, 16862288255505674165ull, 741706263200109210ull, 8096892984810926710ull}}, {{11991820835268156175ull, 15150616178118434257ull, 14298624469782231968ull, 5060558115506829193ull}}, {{1154717988803031506ull, 491526148938491206ull, 4038222531945626249ull, 6325697644383536492ull}}, {{10666769522858565191ull, 5226093704600501911ull, 5047778164932032811ull, 7907122055479420615ull}}, {{13584259979427685100ull, 960465556161619742ull, 10072390380723602363ull, 4941951284674637884ull}}, {{7756952937429830567ull, 15035640000484188390ull, 12590487975904502953ull, 6177439105843297355ull}}, {{472819134932512401ull, 4959491945323071776ull, 11126423951453240788ull, 7721798882304121694ull}}, {{295511959332820251ull, 12323054502681695668ull, 2342328951230887588ull, 4826124301440076059ull}}, {{369389949166025313ull, 15403818128352119585ull, 16762969244320773197ull, 6032655376800095073ull}}, {{5073423454884919546ull, 5419714605157985769ull, 7118653500118802785ull, 7540819221000118842ull}}, {{14700104705371544476ull, 14916536674292210865ull, 9060844456001639644ull, 4713012013125074276ull}}, {{4540072826432266883ull, 198926769155711966ull, 11326055570002049556ull, 5891265016406342845ull}}, {{14898463069895109412ull, 248658461444639957ull, 322511407220398233ull, 7364081270507928557ull}}, {{4788020782086723053ull, 4922509095233187851ull, 5014825277452885695ull, 9205101588134910696ull}}, {{686669979590507956ull, 9994097212161824263ull, 3134265798408053559ull, 5753188492584319185ull}}, {{14693395529770298657ull, 7880935496774892424ull, 8529518266437454853ull, 7191485615730398981ull}}, {{18366744412212873321ull, 14462855389396003434ull, 15273583851474206470ull, 8989357019662998726ull}}, {{16090901276060433730ull, 4427598599945114242ull, 4934303888743991140ull, 5618348137289374204ull}}, {{10890254558220766354ull, 5534498249931392803ull, 6167879860929988925ull, 7022935171611717755ull}}, {{9001132179348570039ull, 11529808830841628908ull, 3098163807735098252ull, 8778668964514647194ull}}, {{14849079648947632082ull, 16429502556130793875ull, 6548038398261824311ull, 5486668102821654496ull}}, {{13949663542757152199ull, 15925192176736104440ull, 8185047997827280389ull, 6858335128527068120ull}}, {{17437079428446440248ull, 6071432165637966838ull, 10231309997284100487ull, 8572918910658835150ull}}, {{6286488624351637251ull, 10712174131164811130ull, 1782882729875174900ull, 5358074319161771969ull}}, {{17081482817294322372ull, 13390217663956013912ull, 6840289430771356529ull, 6697592898952214961ull}}, {{2905109447908351349ull, 2902714024662853679ull, 13162047806891583566ull, 8371991123690268701ull}}, {{8733222432583801449ull, 15649254320696447261ull, 10532122888520933680ull, 5232494452306417938ull}}, {{15528214059157139716ull, 1114823827161007460ull, 3941781573796391293ull, 6540618065383022423ull}}, {{963523500236873028ull, 6005215802378647230ull, 315540948818101212ull, 8175772581728778029ull}}, {{14437260242930209355ull, 12976631913341430326ull, 2503056102225007209ull, 5109857863580486268ull}}, {{8823203266807985885ull, 2385731836394624196ull, 3128820127781259012ull, 6387322329475607835ull}}, {{11029004083509982357ull, 2982164795493280245ull, 17746083215008737477ull, 7984152911844509793ull}}, {{9198970561407432925ull, 4169696006396994105ull, 4173772981739379067ull, 4990095569902818621ull}}, {{16110399220186679060ull, 600433989568854727ull, 9828902245601611738ull, 6237619462378523276ull}}, {{15526313006805960921ull, 9973914523815844217ull, 12286127807002014672ull, 7797024327973154095ull}}, {{2786416601612643720ull, 6233696577384902636ull, 14596358907017341026ull, 4873140204983221309ull}}, {{3483020752015804650ull, 17015492758585904103ull, 4410390578489512570ull, 6091425256229026637ull}}, {{18188833995301919524ull, 12045993911377604320ull, 10124674241539278617ull, 7614281570286283296ull}}, {{11368021247063699703ull, 611217166969920844ull, 6327921400962049136ull, 4758925981428927060ull}}, {{14210026558829624628ull, 764021458712401055ull, 7909901751202561420ull, 5948657476786158825ull}}, {{13150847180109642881ull, 955026823390501319ull, 14499063207430589679ull, 7435821845982698531ull}}, {{15136808515209608657ull, 7514420792260145180ull, 6756071495430424597ull, 4647388653739186582ull}}, {{474266570302459205ull, 14004712008752569380ull, 17668461406142806554ull, 5809235817173983227ull}}, {{592833212878074006ull, 8282517974085935917ull, 17473890739251120289ull, 7261544771467479034ull}}, {{5352727534524980412ull, 14964833486034807800ull, 12618991387209124553ull, 9076930964334348793ull}}, {{3345454709078112758ull, 2435491901130673019ull, 969340589364620990ull, 5673081852708967996ull}}, {{18016876441629804659ull, 12267736913268117081ull, 1211675736705776237ull, 7091352315886209995ull}}, {{8686037496755092111ull, 1499613086302982640ull, 15349652726164384009ull, 8864190394857762493ull}}, {{5428773435471932570ull, 12466473225007833910ull, 11899375963066433957ull, 5540118996786101558ull}}, {{16009338831194691520ull, 1748033475977628675ull, 5650847916978266639ull, 6925148745982626948ull}}, {{15399987520565976496ull, 16020099900254199556ull, 7063559896222833298ull, 8656435932478283685ull}}, {{401620163498959502ull, 14624248456086262627ull, 6720567944352964763ull, 5410272457798927303ull}}, {{14337083259655863090ull, 13668624551680440379ull, 3789023912013818050ull, 6762840572248659129ull}}, {{13309668056142440958ull, 7862408652745774666ull, 9347965908444660467ull, 8453550715310823911ull}}, {{12930228553516413503ull, 2608162398752415214ull, 12760007720418994648ull, 5283469197069264944ull}}, {{6939413655040741070ull, 3260202998440519018ull, 15950009650523743310ull, 6604336496336581180ull}}, {{17897639105655702146ull, 13298625784905424580ull, 1490767989445127521ull, 8255420620420726476ull}}, {{1962652404180038033ull, 1394112087924808507ull, 10155102030257980509ull, 5159637887762954047ull}}, {{16288373560507211254ull, 6354326128333398537ull, 8082191519395087732ull, 6449547359703692559ull}}, {{6525408895351850355ull, 7942907660416748172ull, 5491053380816471761ull, 8061934199629615699ull}}, {{13301752596449682280ull, 16493532333828937367ull, 1126065353796600898ull, 5038708874768509812ull}}, {{12015504727134714946ull, 11393543380431395901ull, 1407581692245751123ull, 6298386093460637265ull}}, {{1184322853636229970ull, 9630243207111856973ull, 6371163133734576808ull, 7872982616825796581ull}}, {{3046044792736337684ull, 6018902004444910608ull, 6287819967797804457ull, 4920614135516122863ull}}, {{3807555990920422104ull, 12135313523983526164ull, 3248088941319867667ull, 6150767669395153579ull}}, {{4759444988650527630ull, 10557455886552019801ull, 17895169231931998296ull, 7688459586743941973ull}}, {{14503868163975049529ull, 6598409929095012375ull, 13490323779171192887ull, 4805287241714963733ull}}, {{13518149186541424007ull, 3636326392941377565ull, 3027846668681827397ull, 6006609052143704667ull}}, {{3062628427894616297ull, 9157094009604109861ull, 17619866391134447958ull, 7508261315179630833ull}}, {{4219985776647829138ull, 1111497737575180759ull, 4094887466817948118ull, 4692663321987269271ull}}, {{663296202382398518ull, 10612744208823751757ull, 506923315095047243ull, 5865829152484086589ull}}, {{5440806271405386052ull, 8654244242602301792ull, 5245340162296196958ull, 7332286440605108236ull}}, {{6801007839256732564ull, 1594433266398101432ull, 6556675202870246198ull, 9165358050756385295ull}}, {{4250629899535457853ull, 14831578846780977107ull, 11015451029434985729ull, 5728348781722740809ull}}, {{701601355991934412ull, 4704415503194057672ull, 18380999805221120066ull, 7160435977153426011ull}}, {{877001694989918015ull, 15103891415847347898ull, 18364563738099012178ull, 8950544971441782514ull}}, {{5159812077796086663ull, 14051618153331980340ull, 16089538354739270515ull, 5594090607151114071ull}}, {{6449765097245108329ull, 12952836673237587521ull, 15500236924996700240ull, 6992613258938892589ull}}, {{12673892389983773315ull, 16191045841546984401ull, 5540238100963711588ull, 8740766573673615737ull}}, {{1003653716098776466ull, 896031614112089443ull, 14991863859170789503ull, 5462979108546009835ull}}, {{15089625200405634295ull, 14955097572922275515ull, 14128143805536098974ull, 6828723885682512294ull}}, {{14250345482079654964ull, 9470499929298068586ull, 8436807720065347910ull, 8535904857103140368ull}}, {{13518151944727172257ull, 1307376437383904962ull, 5273004825040842444ull, 5334940535689462730ull}}, {{7674317894054189513ull, 1634220546729881203ull, 15814628068155828863ull, 6668675669611828412ull}}, {{4981211349140348987ull, 15877833738694515216ull, 1321541011485234462ull, 8335844587014785516ull}}, {{3113257093212718117ull, 5311960068256684106ull, 10049335169033047347ull, 5209902866884240947ull}}, {{13114943403370673454ull, 2028264066893467228ull, 7949982942863921280ull, 6512378583605301184ull}}, {{16393679254213341818ull, 2535330083616834035ull, 9937478678579901600ull, 8140473229506626480ull}}, {{7940206524669644684ull, 1584581302260521272ull, 6210924174112438500ull, 5087795768441641550ull}}, {{9925258155837055855ull, 1980726627825651590ull, 16987027254495323933ull, 6359744710552051937ull}}, {{3183200657941544011ull, 7087594303209452392ull, 7398726012836991204ull, 7949680888190064922ull}}, {{1989500411213465007ull, 13653118476360683553ull, 9235889776450507406ull, 4968550555118790576ull}}, {{7098561532444219163ull, 7843026058596078633ull, 11544862220563134258ull, 6210688193898488220ull}}, {{13484887933982661857ull, 580410536390322483ull, 14431077775703917823ull, 7763360242373110275ull}}, {{6122211949525469709ull, 7280285612885033408ull, 6713580600601254687ull, 4852100151483193922ull}}, {{7652764936906837136ull, 4488670997678903856ull, 17615347787606344167ull, 6065125189353992402ull}}, {{9565956171133546420ull, 999152728671241916ull, 12795812697653154401ull, 7581406486692490503ull}}, {{15202094643813242321ull, 12153685501487995957ull, 14914911963674303356ull, 4738379054182806564ull}}, {{5167560249484389189ull, 15192106876859994947ull, 196895880883327579ull, 5922973817728508206ull}}, {{1847764293428098582ull, 14378447577647605780ull, 9469491887958935282ull, 7403717272160635257ull}}, {{10378224720247337422ull, 13598215754457141516ull, 17447647476042804311ull, 4627323295100397035ull}}, {{12972780900309171777ull, 12386083674644038991ull, 17197873326626117485ull, 5784154118875496294ull}}, {{11604290106959076817ull, 1647546538022885027ull, 12273969621427871049ull, 7230192648594370368ull}}, {{9893676615271458117ull, 6671119190955994188ull, 15342462026784838811ull, 9037740810742962960ull}}, {{15406919921399437132ull, 1863606485133802415ull, 9589038766740524257ull, 5648588006714351850ull}}, {{14646963883321908510ull, 6941194124844640923ull, 2762926421570879513ull, 7060735008392939813ull}}, {{13697018835724997734ull, 13288178674483189058ull, 8065344045390987295ull, 8825918760491174766ull}}, {{13172322790755511488ull, 15222640699193075017ull, 429154009941979155ull, 5516199225306984229ull}}, {{2630345433162225648ull, 14416614855563955868ull, 5148128530854861848ull, 6895249031633730286ull}}, {{3287931791452782059ull, 18020768569454944835ull, 15658532700423353118ull, 8619061289542162857ull}}, {{18195858434153846451ull, 6651294337481952617ull, 2869053910123513843ull, 5386913305963851786ull}}, {{8909764987410144352ull, 3702431903425052868ull, 12809689424509168112ull, 6733641632454814732ull}}, {{11137206234262680440ull, 4628039879281316085ull, 16012111780636460140ull, 8417052040568518415ull}}, {{9266596905627869227ull, 12115896961405598361ull, 16925098890538869443ull, 5260657525355324009ull}}, {{16194932150462224438ull, 10533185183329610047ull, 7321315557891423092ull, 6575821906694155012ull}}, {{15631979169650392643ull, 13166481479162012559ull, 9151644447364278865ull, 8219777383367693765ull}}, {{16687516008672577258ull, 1311521896835175993ull, 8025620788816368243ull, 5137360864604808603ull}}, {{7024336955558557860ull, 15474460426326133704ull, 5420339967593072399ull, 6421701080756010754ull}}, {{8780421194448197325ull, 14731389514480279226ull, 15998796996346116307ull, 8027126350945013442ull}}, {{10099449264957511233ull, 6901275437336480564ull, 14610934141143710596ull, 5016953969340633401ull}}, {{12624311581196889041ull, 8626594296670600705ull, 4428609621147474533ull, 6271192461675791752ull}}, {{1945331421213947589ull, 15394928889265638786ull, 5535762026434343166ull, 7838990577094739690ull}}, {{5827518156686105147ull, 5010144537363636337ull, 8071537284948852383ull, 4899369110684212306ull}}, {{11896083714285019338ull, 1650994653277157517ull, 866049569331289671ull, 6124211388355265383ull}}, {{1035046587574110460ull, 15898801371878610609ull, 14917620016946275800ull, 7655264235444081728ull}}, {{12176119163302288798ull, 9936750857424131630ull, 9323512510591422375ull, 4784540147152551080ull}}, {{5996776917273085189ull, 7809252553352776634ull, 11654390638239277969ull, 5980675183940688850ull}}, {{16719343183446132294ull, 14373251710118358696ull, 5344616260944321653ull, 7475843979925861063ull}}, {{10449589489653832684ull, 11289125328037668137ull, 10257914190731282889ull, 4672402487453663164ull}}, {{17673672880494678759ull, 276348604764921459ull, 12822392738414103612ull, 5840503109317078955ull}}, {{17480405082190960545ull, 345435755956151824ull, 11416304904590241611ull, 7300628886646348694ull}}, {{3403762279029149065ull, 14266852750227353493ull, 5047009093883026205ull, 9125786108307935868ull}}, {{4433194433606912118ull, 11222625978105789885ull, 12377752720531667186ull, 5703616317692459917ull}}, {{10153179060436028051ull, 4804910435777461548ull, 1637132845382420271ull, 7129520397115574897ull}}, {{12691473825545035063ull, 1394452026294439031ull, 6658102075155413243ull, 8911900496394468621ull}}, {{14849700168606728771ull, 17012433580929882058ull, 6467156806185827228ull, 5569937810246542888ull}}, {{9338753173903635155ull, 2818797902452800957ull, 8083946007732284036ull, 6962422262808178610ull}}, {{16285127485806931848ull, 3523497378066001196ull, 881560472810579237ull, 8703027828510223263ull}}, {{954832641774556597ull, 4508028870504944700ull, 7468504323147693879ull, 5439392392818889539ull}}, {{1193540802218195746ull, 1023350069703792971ull, 4723944385507229445ull, 6799240491023611924ull}}, {{15326984058054908395ull, 5890873605557129117ull, 5904930481884036806ull, 8499050613779514905ull}}, {{11885208045498011699ull, 17516854058755369410ull, 15219796597245992763ull, 5311906633612196815ull}}, {{5633138020017738816ull, 17284381555016823859ull, 14413059728130103050ull, 6639883292015246019ull}}, {{2429736506594785615ull, 12382104906916254016ull, 13404638641735240909ull, 8299854115019057524ull}}, {{1518585316621741010ull, 10044658576036352712ull, 17601271187939301376ull, 5187408821886910952ull}}, {{1898231645777176262ull, 12555823220045440890ull, 3554844911214575104ull, 6484261027358638691ull}}, {{11596161594076246136ull, 15694779025056801112ull, 18278614194300382592ull, 8105326284198298363ull}}, {{7247600996297653835ull, 9809236890660500695ull, 9118290862224045168ull, 5065828927623936477ull}}, {{4447815226944679390ull, 12261546113325625869ull, 16009549596207444364ull, 6332286159529920596ull}}, {{10171455052108237141ull, 15326932641657032336ull, 1565192921549753839ull, 7915357699412400746ull}}, {{6357159407567648213ull, 16496861928676727066ull, 5589931594395984053ull, 4947098562132750466ull}}, {{17169821296314336074ull, 6786019355563745120ull, 16210786529849755875ull, 6183873202665938082ull}}, {{3015532546683368477ull, 3870838176027293497ull, 11040111125457419036ull, 7729841503332422603ull}}, {{13413922887745575058ull, 11642645896871834243ull, 4594226444197192945ull, 4831150939582764127ull}}, {{12155717591254580919ull, 718249315807629092ull, 1131097036819103278ull, 6038938674478455159ull}}, {{15194646989068226148ull, 10121183681614312173ull, 15248929351306042809ull, 7548673343098068948ull}}, {{11802497377381335295ull, 17854954847077414868ull, 307208807711500947ull, 4717920839436293093ull}}, {{14753121721726669118ull, 17707007540419380681ull, 4995697028066764088ull, 5897401049295366366ull}}, {{4606344096876172686ull, 3687015351814674236ull, 15467993321938230919ull, 7371751311619207957ull}}, {{5757930121095215857ull, 18443827245050506507ull, 5499933597140624936ull, 9214689139524009947ull}}, {{1292863316470815959ull, 11527392028156566567ull, 1131615488999196633ull, 5759180712202506217ull}}, {{15451137200870683660ull, 574181979913544496ull, 6026205379676383696ull, 7198975890253132771ull}}, {{867177427378802959ull, 717727474891930621ull, 2921070706168091716ull, 8998719862816415964ull}}, {{2847828901325445802ull, 9671951708662232446ull, 11049041228209833130ull, 5624199914260259977ull}}, {{12783158163511583060ull, 2866567598973014749ull, 18422987553689679317ull, 7030249892825324971ull}}, {{2143889649107315113ull, 8194895517143656341ull, 18417048423684711242ull, 8787812366031656214ull}}, {{3645774039905765898ull, 9733495716642173117ull, 6898969246375556622ull, 5492382728769785134ull}}, {{9168903568309595276ull, 2943497608947940588ull, 17847083594824221586ull, 6865478410962231417ull}}, {{11461129460386994095ull, 12902744048039701543ull, 8473796438248113270ull, 8581848013702789272ull}}, {{14080734940382953166ull, 3452529011597425560ull, 5296122773905070794ull, 5363655008564243295ull}}, {{17600918675478691457ull, 13539033301351557758ull, 2008467448953950588ull, 6704568760705304119ull}}, {{12777776307493588513ull, 16923791626689447198ull, 16345642366474601947ull, 8380710950881630148ull}}, {{3374424173756104917ull, 8271526757467210547ull, 992654442191850409ull, 5237944344301018843ull}}, {{18053088272477294858ull, 14951094465261401087ull, 15075876108021976723ull, 6547430430376273553ull}}, {{17954674322169230668ull, 14077182063149363455ull, 5009787079745307192ull, 8184288037970341942ull}}, {{18139200478996851024ull, 8798238789468352159ull, 16966174980122980707ull, 5115180023731463713ull}}, {{18062314580318675876ull, 6386112468408052295ull, 7372660669871562172ull, 6393975029664329642ull}}, {{17966207206970956941ull, 7982640585510065369ull, 18439197874194228523ull, 7992468787080412052ull}}, {{4311350476715766232ull, 2683307356730096904ull, 2301126634516617019ull, 4995292991925257533ull}}, {{5389188095894707790ull, 17189192251194784842ull, 7488094311573159177ull, 6244116239906571916ull}}, {{15959857156723160545ull, 7651432258711317340ull, 9360117889466448972ull, 7805145299883214895ull}}, {{751538686097199533ull, 14005517198549349146ull, 12767602708557612463ull, 4878215812427009309ull}}, {{10162795394476275224ull, 12895210479759298528ull, 2124445330414851867ull, 6097769765533761637ull}}, {{12703494243095344030ull, 11507327081271735256ull, 7267242681445952738ull, 7622212206917202046ull}}, {{7939683901934590019ull, 11803765444222222439ull, 18377084731185884173ull, 4763882629323251278ull}}, {{5312918858990849620ull, 919648749995614337ull, 13747983877127579409ull, 5954853286654064098ull}}, {{11252834592165949928ull, 5761246955921905825ull, 7961607809554698453ull, 7443566608317580123ull}}, {{115492592462636849ull, 5906622356664885093ull, 2670161871757992581ull, 4652229130198487577ull}}, {{4756051759005683966ull, 11994963964258494270ull, 7949388358124878630ull, 5815286412748109471ull}}, {{15168436735611880765ull, 5770332918468342029ull, 5325049429228710384ull, 7269108015935136839ull}}, {{5125487864232687244ull, 7212916148085427537ull, 2044625768108500076ull, 9086385019918921049ull}}, {{14732644961213899288ull, 13731444629408168018ull, 12807106151136282307ull, 5678990637449325655ull}}, {{9192434164662598301ull, 12552619768332822119ull, 11397196670492964980ull, 7098738296811657069ull}}, {{6878856687400859973ull, 15690774710416027649ull, 411437782834042513ull, 8873422871014571337ull}}, {{15828500475694007243ull, 2889205166368935424ull, 11786363660339746331ull, 5545889294384107085ull}}, {{1338881520907957438ull, 17446564513243332993ull, 897896520142519201ull, 6932361617980133857ull}}, {{6285287919562334701ull, 7973147586272002529ull, 5734056668605536906ull, 8665452022475167321ull}}, {{15457519995794928948ull, 9594903259847389484ull, 15113000463946930326ull, 5415907514046979575ull}}, {{875155921034109569ull, 2770257037954461048ull, 14279564561506275004ull, 6769884392558724469ull}}, {{1093944901292636962ull, 3462821297443076310ull, 4014397646600680043ull, 8462355490698405587ull}}, {{14518773618590061813ull, 18305164375397780357ull, 203155519911731074ull, 5288972181686503492ull}}, {{4313408967955413554ull, 13658083432392449639ull, 253944399889663843ull, 6611215227108129365ull}}, {{780075191516879039ull, 12460918272063174145ull, 4929116518289467708ull, 8264019033885161706ull}}, {{12016762040766519159ull, 17011445956894259648ull, 7692383842358305221ull, 5165011896178226066ull}}, {{15020952550958148949ull, 7429249390835660848ull, 392107766093105719ull, 6456264870222782583ull}}, {{329446614988134570ull, 4674875720117188157ull, 14325192762898545861ull, 8070331087778478228ull}}, {{2511747143581278059ull, 5227640334286936550ull, 18176617513666366971ull, 5043956929861548892ull}}, {{12363055966331373381ull, 1922864399431282783ull, 4274027818373407098ull, 6304946162326936116ull}}, {{10842133939486828822ull, 11626952536143879287ull, 5342534772966758872ull, 7881182702908670145ull}}, {{13693862739820349870ull, 7266845335089924554ull, 14868299279172694055ull, 4925739189317918840ull}}, {{7893956387920661530ull, 4471870650435017789ull, 138630025256315953ull, 6157173986647398551ull}}, {{14479131503328214816ull, 10201524331471160140ull, 14008345586852558653ull, 7696467483309248188ull}}, {{18272829226434910068ull, 8681795716383169039ull, 17978588028637624966ull, 4810292177068280117ull}}, {{18229350514616249681ull, 1628872608624185491ull, 8638176980514867496ull, 6012865221335350147ull}}, {{18175002124842924197ull, 2036090760780231864ull, 6186035207216196466ull, 7516081526669187684ull}}, {{11359376328026827623ull, 5884242743915032819ull, 13089644041364898599ull, 4697550954168242302ull}}, {{9587534391606146625ull, 2743617411466403120ull, 7138683014851347441ull, 5871938692710302878ull}}, {{11984417989507683281ull, 8041207782760391804ull, 18146725805418960109ull, 7339923365887878597ull}}, {{14980522486884604101ull, 14663195746877877659ull, 8848349201491536424ull, 9174904207359848247ull}}, {{7056983545089183612ull, 9164497341798673537ull, 12447747278573292121ull, 5734315129599905154ull}}, {{13432915449788867418ull, 16067307695675729825ull, 6336312061361839343ull, 7167893911999881443ull}}, {{2956086256953920561ull, 15472448601167274378ull, 3308704058274911275ull, 8959867389999851804ull}}, {{6459239929023588255ull, 7364437366515852534ull, 11291312073276595355ull, 5599917118749907377ull}}, {{17297421948134261126ull, 4593860689717427763ull, 279082036313580482ull, 6999896398437384222ull}}, {{17010091416740438504ull, 14965697899001560512ull, 9572224582246751410ull, 8749870498046730277ull}}, {{10631307135462774065ull, 13965247205303363224ull, 8288483373117913583ull, 5468669061279206423ull}}, {{13289133919328467581ull, 12844872988201816126ull, 5748918197970004075ull, 6835836326599008029ull}}, {{7388045362305808668ull, 11444405216824882254ull, 11797833765889892998ull, 8544795408248760036ull}}, {{5842333013742514ull, 2541067242088163505ull, 16597018140535958932ull, 5340497130155475022ull}}, {{4618988934694566046ull, 3176334052610204381ull, 11522900638815172857ull, 6675621412694343778ull}}, {{10385422186795595462ull, 8582103584190143380ull, 5180253761664190263ull, 8344526765867929723ull}}, {{15714260903602022972ull, 12281343767759921468ull, 931815591826424962ull, 5215329228667456077ull}}, {{1196082055792977098ull, 6128307672845126028ull, 5776455508210419107ull, 6519161535834320096ull}}, {{1495102569741221373ull, 3048698572629019631ull, 7220569385263023884ull, 8148951919792900120ull}}, {{7851968133729345214ull, 11128808644747913077ull, 4512855865789389927ull, 5093094949870562575ull}}, {{14426646185589069422ull, 9299324787507503442ull, 1029383813809349505ull, 6366368687338203219ull}}, {{8809935695131560969ull, 16235842002811767207ull, 15121787822543850593ull, 7957960859172754023ull}}, {{12423738837098307462ull, 3229872224116272648ull, 16368646416730988477ull, 4973725536982971264ull}}, {{15529673546372884327ull, 8649026298572728714ull, 2014063947204183980ull, 6217156921228714081ull}}, {{10188719896111329601ull, 10811282873215910893ull, 7129265952432617879ull, 7771446151535892601ull}}, {{8673792944283274953ull, 13674580823401026164ull, 15985006266338855934ull, 4857153844709932875ull}}, {{10842241180354093691ull, 7869853992396506897ull, 15369571814496182014ull, 6071442305887416094ull}}, {{18164487493870005017ull, 613945453640857813ull, 9988592731265451710ull, 7589302882359270118ull}}, {{13658647692882447088ull, 14218773963807699845ull, 1631184438613519414ull, 4743314301474543824ull}}, {{3238251560820895148ull, 8550095417904848999ull, 2038980548266899268ull, 5929142876843179780ull}}, {{17882872506308282647ull, 10687619272381061248ull, 2548725685333624085ull, 7411428596053974725ull}}, {{11176795316442676654ull, 8985605054451857232ull, 3898796562547209005ull, 4632142872533734203ull}}, {{13970994145553345818ull, 15843692336492209444ull, 261809684756623352ull, 5790178590667167754ull}}, {{17463742681941682272ull, 1357871346905710189ull, 9550634142800554999ull, 7237723238333959692ull}}, {{7994620297144939128ull, 15532397238914301449ull, 11938292678500693748ull, 9047154047917449615ull}}, {{16525852731784056715ull, 484376237466662597ull, 14378961951704015449ull, 5654471279948406009ull}}, {{6822257859447907182ull, 5217156315260716151ull, 4138644384347855599ull, 7068089099935507512ull}}, {{3916136305882496073ull, 1909759375648507285ull, 5173305480434819499ull, 8835111374919384390ull}}, {{4753428200390253998ull, 17334500674276174717ull, 17068373980553925898ull, 5521944609324615243ull}}, {{10553471268915205401ull, 12444753805990442588ull, 16723781457265019469ull, 6902430761655769054ull}}, {{13191839086144006752ull, 1720884202205889523ull, 11681354784726498529ull, 8628038452069711318ull}}, {{5939056419626310268ull, 12604767672447150712ull, 2689160722026673676ull, 5392524032543569574ull}}, {{7423820524532887835ull, 15755959590558938390ull, 12584822939388117903ull, 6740655040679461967ull}}, {{56403618811333985ull, 15083263469771285084ull, 11119342655807759475ull, 8425818800849327459ull}}, {{9258624298611859549ull, 7121196659393359225ull, 4643746150666155720ull, 5266136750530829662ull}}, {{16184966391692212340ull, 8901495824241699031ull, 15028054725187470458ull, 6582670938163537077ull}}, {{15619521971187877521ull, 1903497743447347981ull, 4950010351202174361ull, 8228338672704421347ull}}, {{12068044241206117403ull, 12718901135723062248ull, 787913460287665023ull, 5142711670440263342ull}}, {{15085055301507646754ull, 11286940401226439906ull, 10208263862214357087ull, 6428389588050329177ull}}, {{9632947090029782634ull, 9496989483105661979ull, 17372015846195334263ull, 8035486985062911471ull}}, {{3714748922054920194ull, 12853147454582120593ull, 17775038931513165770ull, 5022179365664319669ull}}, {{9255122170996038147ull, 6843062281372874933ull, 8383740609109293501ull, 6277724207080399587ull}}, {{16180588732172435587ull, 13165513870143481570ull, 5867989742959228972ull, 7847155258850499484ull}}, {{14724553976035160146ull, 17451818205694451789ull, 12890865626204293915ull, 4904472036781562177ull}}, {{4570634414761786471ull, 17203086738690676833ull, 2278523977473203682ull, 6130590045976952722ull}}, {{10324979036879620992ull, 12280486386508570233ull, 12071527008696280411ull, 7663237557471190902ull}}, {{17982326944118232880ull, 5369460982354162443ull, 2933018362007787353ull, 4789523473419494314ull}}, {{17866222661720403196ull, 11323512246370090958ull, 12889644989364509999ull, 5986904341774367892ull}}, {{13109406290295728187ull, 9542704289535225794ull, 16112056236705637499ull, 7483630427217959865ull}}, {{12805064949862218021ull, 3658347171745822169ull, 3152506120299941581ull, 4677269017011224916ull}}, {{2171273132045608814ull, 9184619983109665616ull, 3940632650374926976ull, 5846586271264031145ull}}, {{2714091415057011018ull, 11480774978887082020ull, 9537476831396046624ull, 7308232839080038931ull}}, {{3392614268821263772ull, 14350968723608852525ull, 7310160020817670376ull, 9135291048850048664ull}}, {{4426226927226983810ull, 8969355452255532828ull, 4568850013011043985ull, 5709556905531280415ull}}, {{5532783659033729762ull, 15823380333746803939ull, 1099376497836417077ull, 7136946131914100519ull}}, {{2304293555364774299ull, 5944167361901341212ull, 15209278677577685059ull, 8921182664892625648ull}}, {{10663555508957759745ull, 1409261591974644305ull, 9505799173486053162ull, 5575739165557891030ull}}, {{17941130404624587585ull, 10984949026823081189ull, 2658876930002790644ull, 6969673956947363788ull}}, {{8591354950498570769ull, 13731186283528851487ull, 3323596162503488305ull, 8712092446184204735ull}}, {{12287125871702688587ull, 1664462399564450323ull, 8994776629205762047ull, 5445057778865127959ull}}, {{10747221321200972829ull, 15915636054737726616ull, 6631784768079814654ull, 6806322223581409949ull}}, {{13434026651501216037ull, 10671173031567382462ull, 12901416978527156222ull, 8507902779476762436ull}}, {{3784580638760872119ull, 2057797126302226135ull, 17286757648434248447ull, 5317439237172976522ull}}, {{119039780023702245ull, 16407304463159946381ull, 12385075023688034750ull, 6646799046466220653ull}}, {{4760485743457015710ull, 11285758542095157168ull, 1646285724327879726ull, 8308498808082775817ull}}, {{2975303589660634819ull, 2441913070382085326ull, 12558143623773394589ull, 5192811755051734885ull}}, {{12942501523930569331ull, 7664077356404994561ull, 1862621474434579524ull, 6491014693814668607ull}}, {{2343068849631047952ull, 9580096695506243202ull, 16163334898325388117ull, 8113768367268335758ull}}, {{6076104049446792874ull, 8293403443905095953ull, 5490398293025979669ull, 5071105229542709849ull}}, {{12206816080235878997ull, 14978440323308757845ull, 11474683884709862490ull, 6338881536928387311ull}}, {{1423462045012685034ull, 9499678367281171499ull, 9731668837459940209ull, 7923601921160484139ull}}, {{17030564842628785810ull, 17466514025619201946ull, 3776450014198768678ull, 4952251200725302587ull}}, {{12064834016431206455ull, 12609770495169226625ull, 108876499321072944ull, 6190314000906628234ull}}, {{1245984465256844356ull, 15762213118961533282ull, 9359467661006116988ull, 7737892501133285292ull}}, {{5390426309212915627ull, 628011162496182493ull, 15073039324983598926ull, 4836182813208303307ull}}, {{11349718904943532437ull, 10008385989975003924ull, 14229613137802110753ull, 6045228516510379134ull}}, {{14187148631179415547ull, 17122168505896142809ull, 8563644385397862633ull, 7556535645637973918ull}}, {{1949438866846052861ull, 3783826288544007400ull, 740591722446276242ull, 4722834778523733699ull}}, {{2436798583557566076ull, 13953154897534785058ull, 14760797708340009014ull, 5903543473154667123ull}}, {{12269370266301733403ull, 8218071585063705514ull, 13839311116997623364ull, 7379429341443333904ull}}, {{12280042434865971281ull, 14359666777519591754ull, 8649569448123514602ull, 4612143338402083690ull}}, {{6126681006727688293ull, 8726211435044713885ull, 1588589773299617445ull, 5765179173002604613ull}}, {{12270037276836998270ull, 15519450312233280260ull, 6597423235051909710ull, 7206473966253255766ull}}, {{15337546596046247838ull, 10175940853436824517ull, 17470151080669662946ull, 9008092457816569707ull}}, {{11891809631742598851ull, 10971649051825403227ull, 8613001416204845389ull, 5630057786135356067ull}}, {{10253076021250860659ull, 18326247333209141938ull, 6154565751828668832ull, 7037572232669195084ull}}, {{3592972989708800016ull, 4461065092801875807ull, 7693207189785836041ull, 8796965290836493855ull}}, {{9163137146209081866ull, 14317380729069642139ull, 11725783521257229381ull, 5498103306772808659ull}}, {{6842235414333964429ull, 4061667856054888962ull, 10045543383144148823ull, 6872629133466010824ull}}, {{17776166304772231344ull, 465398801641223298ull, 12556929228930186029ull, 8590786416832513530ull}}, {{15721789958910032494ull, 2596717260239458513ull, 12459766786508754172ull, 5369241510520320956ull}}, {{5817179393355376905ull, 3245896575299323142ull, 15574708483135942715ull, 6711551888150401195ull}}, {{16494846278548996939ull, 17892428774406317639ull, 14856699585492540489ull, 8389439860188001494ull}}, {{17226807951734204943ull, 4265238956362866668ull, 4673751222505449902ull, 5243399912617500934ull}}, {{3086765865958204563ull, 14554920732308359144ull, 15065561064986588185ull, 6554249890771876167ull}}, {{3858457332447755704ull, 4358592860103285218ull, 14220265312805847328ull, 8192812363464845209ull}}, {{7023221851207235219ull, 2724120537564553261ull, 1970136792862572724ull, 5120507727165528256ull}}, {{13390713332436431928ull, 3405150671955691576ull, 2462670991078215905ull, 6400634658956910320ull}}, {{16738391665545539909ull, 8868124358372002374ull, 3078338738847769881ull, 8000793323696137900ull}}, {{5849808772538574540ull, 17071792770050971244ull, 11147333748634631983ull, 5000495827310086187ull}}, {{7312260965673218174ull, 16728054944136326151ull, 9322481167365902075ull, 6250619784137607734ull}}, {{4528640188664134814ull, 16298382661743019785ull, 2429729422352601786ull, 7813274730172009668ull}}, {{14359615163983554019ull, 14798175182016775269ull, 10741952925825151924ull, 4883296706357506042ull}}, {{4114460899697278811ull, 50974903811417471ull, 4204069120426664098ull, 6104120882946882553ull}}, {{531390106194210610ull, 9287090666619047647ull, 9866772418960718026ull, 7630151103683603191ull}}, {{7249647844012463487ull, 10416117685064292683ull, 13084261789491530622ull, 4768844439802251994ull}}, {{4450373786588191455ull, 3796775069475590046ull, 7131955200009637470ull, 5961055549752814993ull}}, {{14786339270090015127ull, 13969340873699263365ull, 13526630018439434741ull, 7451319437191018741ull}}, {{11547305053019953406ull, 11036681055275733555ull, 10759986770738340665ull, 4657074648244386713ull}}, {{9822445297847553854ull, 18407537337522054848ull, 18061669481850313735ull, 5821343310305483391ull}}, {{12278056622309442317ull, 18397735653475180656ull, 17965400833885504265ull, 7276679137881854239ull}}, {{15347570777886802897ull, 9162111511561812108ull, 17845065023929492428ull, 9095848922352317799ull}}, {{368859699324476003ull, 14949691731580908376ull, 18070694667597014623ull, 5684905576470198624ull}}, {{461074624155595003ull, 14075428646048747566ull, 4141624260786716663ull, 7106131970587748281ull}}, {{9799715317049269562ull, 12982599789133546553ull, 9788716344410783733ull, 8882664963234685351ull}}, {{17654037119224263236ull, 10419967877422160547ull, 13035476742897821689ull, 5551665602021678344ull}}, {{17455860380602941141ull, 17636645865205088588ull, 16294345928622277111ull, 6939582002527097930ull}}, {{3373081402044124810ull, 17434121313078972832ull, 11144560373923070581ull, 8674477503158872413ull}}, {{2108175876277578007ull, 13202168829888051972ull, 9271193242915613065ull, 5421548439474295258ull}}, {{2635219845346972508ull, 2667652982077901253ull, 2365619516789740524ull, 6776935549342869073ull}}, {{7905710825111103539ull, 3334566227597376566ull, 7568710414414563559ull, 8471169436678586341ull}}, {{329383247267051808ull, 9001632919889442210ull, 7036287018222796176ull, 5294480897924116463ull}}, {{9635101095938590568ull, 11252041149861802762ull, 4183672754351107316ull, 6618101122405145579ull}}, {{2820504333068462402ull, 14065051437327253453ull, 617904924511496241ull, 8272626403006431974ull}}, {{4068658217381482953ull, 1873128120688451552ull, 14221248633101848863ull, 5170391501879019983ull}}, {{5085822771726853692ull, 16176468206142728152ull, 13164874772949923174ull, 6462989377348774979ull}}, {{6357278464658567114ull, 10997213220823634382ull, 11844407447760016064ull, 8078736721685968724ull}}, {{17808357095693768159ull, 6873258263014771488ull, 16626126691704785848ull, 5049210451053730452ull}}, {{3813702295907658582ull, 8591572828768464361ull, 2335914290921430694ull, 6311513063817163066ull}}, {{9378813888311961132ull, 1516093999105804643ull, 12143264900506564176ull, 7889391329771453832ull}}, {{3555915670981281755ull, 947558749441127902ull, 7589540562816602610ull, 4930869581107158645ull}}, {{13668266625581378002ull, 10407820473656185685ull, 14098611721948141166ull, 6163586976383948306ull}}, {{3250275226694558791ull, 3786403555215456299ull, 8399892615580400650ull, 7704483720479935383ull}}, {{18172323081179956908ull, 6978188240437048090ull, 12167461912378832262ull, 4815302325299959614ull}}, {{13492031814620170327ull, 17946107337401085921ull, 5985955353618764519ull, 6019127906624949518ull}}, {{3029981712993049197ull, 17820948153323969498ull, 16705816228878231457ull, 7523909883281186897ull}}, {{6505424589048043652ull, 4220563568186399080ull, 3523606115407812805ull, 4702443677050741811ull}}, {{8131780736310054565ull, 9887390478660386754ull, 18239565699541929718ull, 5878054596313427263ull}}, {{941353883532792398ull, 3135866061470707635ull, 18187771106000024244ull, 7347568245391784079ull}}, {{15011750409698154210ull, 3919832576838384543ull, 18123027864072642401ull, 9184460306739730099ull}}, {{16299873033702428237ull, 13979110406592460099ull, 9021049405831707548ull, 5740287691712331312ull}}, {{15763155273700647393ull, 17473888008240575124ull, 11276311757289634435ull, 7175359614640414140ull}}, {{1257200018416257625ull, 17230673991873331002ull, 14095389696612043044ull, 8969199518300517675ull}}, {{5397436029937548920ull, 1545799208066056068ull, 6503775551168832951ull, 5605749698937823547ull}}, {{6746795037421936149ull, 15767307065364733797ull, 3518033420533653284ull, 7007187123672279434ull}}, {{13045179815204808091ull, 1262389757996365630ull, 13620913812521842414ull, 8758983904590349292ull}}, {{3541551366075617153ull, 14624051654029892231ull, 17736443169680927316ull, 5474364940368968307ull}}, {{18261997262876685153ull, 18280064567537365288ull, 17558867943673771241ull, 6842956175461210384ull}}, {{4380752504886304825ull, 9015022654139542899ull, 3501840855882662436ull, 8553695219326512981ull}}, {{432127306340246564ull, 14857761195691990120ull, 4494493544140357974ull, 5346059512079070613ull}}, {{540159132925308205ull, 9348829457760211842ull, 10229802948602835372ull, 6682574390098838266ull}}, {{9898570953011411064ull, 11686036822200264802ull, 3563881648898768407ull, 8353217987623547833ull}}, {{10798292864059519819ull, 14221302041516247357ull, 13756641076630200014ull, 5220761242264717395ull}}, {{18109552098501787678ull, 8553255515040533388ull, 12584115327360362114ull, 6525951552830896744ull}}, {{4190196049417682981ull, 1468197356945890928ull, 15730144159200452643ull, 8157439441038620930ull}}, {{2618872530886051863ull, 17058524412587039494ull, 14443026117927670805ull, 5098399650649138081ull}}, {{12496962700462340637ull, 7488097460451635655ull, 4218724592127424795ull, 6372999563311422602ull}}, {{11009517357150537892ull, 4748435807137156665ull, 14496777777014056802ull, 7966249454139278252ull}}, {{18410163394287555943ull, 7579458397888110819ull, 18283858147488561309ull, 4978905908837048907ull}}, {{18401018224432057024ull, 14086009015787526428ull, 18243136665933313732ull, 6223632386046311134ull}}, {{4554528706830519664ull, 17607511269734408036ull, 13580548795561866357ull, 7779540482557888918ull}}, {{12069952478623850598ull, 13310537552797698974ull, 3876156978798778569ull, 4862212801598680574ull}}, {{5864068561425037440ull, 2803113885714960006ull, 14068568260353249020ull, 6077766001998350717ull}}, {{16553457738636072608ull, 3503892357143700007ull, 3750652270159397563ull, 7597207502497938397ull}}, {{17263440114288627236ull, 18330833787710670168ull, 4650000678063317428ull, 4748254689061211498ull}}, {{3132556069151232429ull, 4466798160928786095ull, 15035872884433922594ull, 5935318361326514372ull}}, {{17750753141721204248ull, 14806869738015758426ull, 348097031832851626ull, 7419147951658142966ull}}, {{15705906732003140559ull, 13865979604687236920ull, 14052618700177695978ull, 4636967469786339353ull}}, {{1185639341294374083ull, 8109102469004270343ull, 3730715319939956261ull, 5796209337232924192ull}}, {{15317107231900131315ull, 14748064104682725832ull, 4663394149924945326ull, 7245261671541155240ull}}, {{699639966165612528ull, 9211708093998631483ull, 5829242687406181658ull, 9056577089426444050ull}}, {{16578176043349365494ull, 10369003577176532580ull, 8254962698056251440ull, 5660360680891527531ull}}, {{2275975980477155252ull, 12961254471470665726ull, 5707017354142926396ull, 7075450851114409414ull}}, {{12068342012451219872ull, 16201568089338332157ull, 16357143729533433803ull, 8844313563893011767ull}}, {{9848556766995706372ull, 7820137046622763646ull, 17140743858599477983ull, 5527695977433132354ull}}, {{3087323921889857157ull, 5163485289851066654ull, 12202557786394571671ull, 6909619971791415443ull}}, {{13082526939217097255ull, 1842670593886445413ull, 10641511214565826685ull, 8637024964739269304ull}}, {{10482422346224379736ull, 3457512130392722335ull, 6650944509103641678ull, 5398140602962043315ull}}, {{8491341914353086766ull, 13545262199845678727ull, 3701994617952164193ull, 6747675753702554144ull}}, {{6002491374513970554ull, 3096519694524934697ull, 4627493272440205242ull, 8434594692128192680ull}}, {{15280772155139701356ull, 6547010827505472089ull, 2892183295275128276ull, 5271621682580120425ull}}, {{5265907138642462983ull, 8183763534381840112ull, 8226915137521298249ull, 6589527103225150531ull}}, {{6582383923303078729ull, 14841390436404688044ull, 5671957903474234907ull, 8236908879031438164ull}}, {{13337361988919200014ull, 6970026013539236075ull, 12768345726526172625ull, 5148068049394648852ull}}, {{12060016467721612113ull, 13324218535351432998ull, 15960432158157715781ull, 6435085061743311065ull}}, {{5851648547797239333ull, 2820215113907127536ull, 6115482142414981015ull, 8043856327179138832ull}}, {{3657280342373274583ull, 8680163473833036566ull, 3822176339009363134ull, 5027410204486961770ull}}, {{13794972464821369037ull, 1626832305436519899ull, 14001092460616479726ull, 6284262755608702212ull}}, {{12632029562599323392ull, 11256912418650425682ull, 17501365575770599657ull, 7855328444510877765ull}}, {{12506704495051965024ull, 118041234015434195ull, 13244196494070318738ull, 4909580277819298603ull}}, {{11021694600387568376ull, 9370923579374068552ull, 11943559599160510518ull, 6136975347274123254ull}}, {{13777118250484460470ull, 2490282437362809882ull, 5706077462095862340ull, 7671219184092654068ull}}, {{13222384924980175698ull, 10779798560206531984ull, 12789670450664689770ull, 4794511990057908792ull}}, {{16527981156225219623ull, 4251376163403389172ull, 15987088063330862213ull, 5993139987572385990ull}}, {{2213232371571972912ull, 9925906222681624370ull, 10760488042308801958ull, 7491424984465482488ull}}, {{5994956250659870974ull, 1592005370748627327ull, 6725305026443001224ull, 4682140615290926555ull}}, {{2882009294897450814ull, 1990006713435784159ull, 3794945264626363626ull, 5852675769113658194ull}}, {{17437569673903977229ull, 11710880428649506006ull, 13967053617637730340ull, 7315844711392072742ull}}, {{12573590055525195728ull, 14638600535811882508ull, 8235444985192387117ull, 9144805889240090928ull}}, {{17081865821558023138ull, 11454968344096120519ull, 5147153115745241948ull, 5715503680775056830ull}}, {{16740646258520141019ull, 14318710430120150649ull, 15657313431536328243ull, 7144379600968821037ull}}, {{7090749767868012561ull, 13286702019222800408ull, 5736583734138246592ull, 8930474501211026297ull}}, {{4431718604917507851ull, 8304188762014250255ull, 15114579879904873880ull, 5581546563256891435ull}}, {{927962237719496910ull, 10380235952517812819ull, 14281538831453704446ull, 6976933204071114294ull}}, {{14995010852431534849ull, 3751922903792490215ull, 8628551502462354750ull, 8721166505088892868ull}}, {{16289410810410791137ull, 16180009870152470096ull, 14616216725893747526ull, 5450729065680558042ull}}, {{1915019439303937305ull, 11001640300835811813ull, 9046898870512408600ull, 6813411332100697553ull}}, {{7005460317557309535ull, 13752050376044764766ull, 15920309606567898654ull, 8516764165125871941ull}}, {{18213470753755482171ull, 3983345466600590074ull, 12256036513318630611ull, 5322977603203669963ull}}, {{13543466405339576906ull, 367495814823349689ull, 10708359623220900360ull, 6653722004004587454ull}}, {{3094274951392307421ull, 459369768529187112ull, 4162077492171349642ull, 8317152505005734318ull}}, {{1933921844620192138ull, 4898792123758129849ull, 16436356487889257238ull, 5198220315628583948ull}}, {{7029088324202628076ull, 15346862191552438119ull, 2098701536152019931ull, 6497775394535729936ull}}, {{4174674386825897191ull, 14571891721013159745ull, 2623376920190024914ull, 8122219243169662420ull}}, {{14138386537834655505ull, 13719118344060612744ull, 10862982611973541379ull, 5076387026981039012ull}}, {{17672983172293319381ull, 12537211911648378026ull, 13578728264966926724ull, 6345483783726298765ull}}, {{12867856928511873418ull, 15671514889560472533ull, 3138352275926494693ull, 7931854729657873457ull}}, {{10348253589533614838ull, 12100539815188989285ull, 13490685218522528943ull, 4957409206036170910ull}}, {{17547003005344406452ull, 10513988750558848702ull, 7639984486298385371ull, 6196761507545213638ull}}, {{12710381719825732257ull, 8530799919771172974ull, 326608571018205906ull, 7745951884431517048ull}}, {{3332302556463694757ull, 9943435968284371013ull, 204130356886378691ull, 4841219927769698155ull}}, {{8777064214007006350ull, 7817608941928075862ull, 14090221001390137076ull, 6051524909712122693ull}}, {{1747958230653982129ull, 9772011177410094828ull, 3777718196455507633ull, 7564406137140153367ull}}, {{10315845931013514639ull, 17636722031949779027ull, 9278602900425774126ull, 4727753835712595854ull}}, {{8283121395339505394ull, 12822530503082447976ull, 2374881588677441850ull, 5909692294640744818ull}}, {{10353901744174381743ull, 6804791091998284162ull, 12191974022701578121ull, 7387115368300931022ull}}, {{11082874608536376494ull, 15782209478567397361ull, 3008297745761098421ull, 4616947105188081889ull}}, {{18535205388306905ull, 5892703792927082990ull, 8372058200628760931ull, 5771183881485102361ull}}, {{9246541043590159439ull, 2754193722731465833ull, 15076758769213339068ull, 7213979851856377951ull}}, {{16169862322915087202ull, 3442742153414332291ull, 14234262443089285931ull, 9017474814820472439ull}}, {{7800320942608235550ull, 18292614910379815346ull, 15813943054571885562ull, 5635921759262795274ull}}, {{527029141405518629ull, 13642396601119993375ull, 10544056781360081145ull, 7044902199078494093ull}}, {{14493844482039061998ull, 3217937696117828006ull, 17791756995127489336ull, 8806127748848117616ull}}, {{4446966782847025845ull, 2011211060073642504ull, 11119848121954680835ull, 5503829843030073510ull}}, {{5558708478558782306ull, 16349071880374216842ull, 4676438115588575235ull, 6879787303787591888ull}}, {{16171757635053253691ull, 15824653832040383148ull, 5845547644485719044ull, 8599734129734489860ull}}, {{883976485053507749ull, 667036608170463660ull, 12876839314658350211ull, 5374833831084056162ull}}, {{1104970606316884686ull, 14668853815495243287ull, 6872677106468161955ull, 6718542288855070203ull}}, {{15216271313178269569ull, 13724381250941666204ull, 3979160364657814540ull, 8398177861068837754ull}}, {{286797533881642673ull, 17801110318693317186ull, 7098661246338521991ull, 5248861163168023596ull}}, {{9581868954206829149ull, 17639701879939258578ull, 8873326557923152489ull, 6561076453960029495ull}}, {{2753964155903760628ull, 8214569294641909511ull, 6479972178976552708ull, 8201345567450036869ull}}, {{8638756625080932249ull, 14357477846005969252ull, 6355825621074039394ull, 5125840979656273043ull}}, {{10798445781351165311ull, 8723475270652685757ull, 3333096007915161339ull, 6407301224570341304ull}}, {{18109743245116344542ull, 6292658069888469292ull, 4166370009893951674ull, 8009126530712926630ull}}, {{2095217491342939531ull, 8544597312107681212ull, 16439039311465883508ull, 5005704081695579143ull}}, {{2619021864178674414ull, 10680746640134601515ull, 15937113120904966481ull, 6257130102119473929ull}}, {{17108835385505506729ull, 17962619318595639797ull, 6086333345849044389ull, 7821412627649342412ull}}, {{12998865125154635658ull, 13532480083335968825ull, 13027330378010428551ull, 4888382892280839007ull}}, {{2413523351161130860ull, 12303914085742573128ull, 11672476954085647785ull, 6110478615351048759ull}}, {{3016904188951413575ull, 1544834551896052698ull, 9978910174179671828ull, 7638098269188810949ull}}, {{6497251136522021389ull, 10188893631789808744ull, 8542661868075988844ull, 4773811418243006843ull}}, {{8121563920652526736ull, 12736117039737260930ull, 6066641316667598151ull, 5967264272803758554ull}}, {{928582863960882612ull, 11308460281244188259ull, 16806673682689273497ull, 7459080341004698192ull}}, {{16721265354471409296ull, 150258648136535805ull, 10504171051680795936ull, 4661925213127936370ull}}, {{7066523637807097908ull, 187823310170669757ull, 3906841777746219112ull, 5827406516409920463ull}}, {{13444840565686260289ull, 234779137713337196ull, 271866203755385986ull, 7284258145512400579ull}}, {{16806050707107825362ull, 9516845958996447303ull, 14174890809976396194ull, 9105322681890500723ull}}, {{17421310719583472707ull, 10559714742800167468ull, 6553463747021553669ull, 5690826676181562952ull}}, {{3329894325769789268ull, 17811329446927597240ull, 8191829683776942086ull, 7113533345226953690ull}}, {{4162367907212236585ull, 13040789771804720742ull, 1016415067866401800ull, 8891916681533692113ull}}, {{16436537997289811578ull, 8150493607377950463ull, 12164474463484970885ull, 5557447925958557570ull}}, {{15933986478184876568ull, 14799803027649825983ull, 5982221042501437798ull, 6946809907448196963ull}}, {{15305797079303707806ull, 9276381747707506671ull, 2866090284699409344ull, 8683512384310246204ull}}, {{16483652202205899235ull, 5797738592317191669ull, 11014678464791906648ull, 5427195240193903877ull}}, {{6769507197475210331ull, 7247173240396489587ull, 18380034099417271214ull, 6783994050242379846ull}}, {{3850197978416625010ull, 18282338587350387792ull, 13751670587416813209ull, 8479992562802974808ull}}, {{2406373736510390632ull, 4508932589452910514ull, 8594794117135508256ull, 5299995351751859255ull}}, {{12231339207492764097ull, 5636165736816138142ull, 6131806627991997416ull, 6624994189689824069ull}}, {{6065801972511179314ull, 7045207171020172678ull, 12276444303417384674ull, 8281242737112280086ull}}, {{17626184288101650783ull, 9014940500314995827ull, 3061091671208477517ull, 5175776710695175054ull}}, {{17421044341699675575ull, 15880361643821132688ull, 13049736625865372704ull, 6469720888368968817ull}}, {{3329561353415042852ull, 1403707981066864245ull, 2477112727049552169ull, 8087151110461211022ull}}, {{4386818855098095735ull, 12406532534235259913ull, 15383253509688133817ull, 5054469444038256888ull}}, {{10095209587300007573ull, 1673107612511911179ull, 782322813400615656ull, 6318086805047821111ull}}, {{8007325965697621562ull, 2091384515639888974ull, 14812961572032933282ull, 7897608506309776388ull}}, {{392892710133625572ull, 5918801340702318513ull, 34728945665807493ull, 4936005316443610243ull}}, {{5102801906094419869ull, 12010187694305286045ull, 13878469237364423078ull, 6170006645554512803ull}}, {{10990188401045412740ull, 5789362581026831748ull, 12736400528278140944ull, 7712508306943141004ull}}, {{16092239787508158771ull, 3618351613141769842ull, 17183622367028613898ull, 4820317691839463127ull}}, {{10891927697530422655ull, 13746311553281988111ull, 16867841940358379468ull, 6025397114799328909ull}}, {{9003223603485640415ull, 17182889441602485139ull, 7249744370165810623ull, 7531746393499161137ull}}, {{3321171742964831308ull, 17656834928642635068ull, 16060305277422101399ull, 4707341495936975710ull}}, {{4151464678706039134ull, 17459357642375905931ull, 10852009559922850941ull, 5884176869921219638ull}}, {{577644829955161014ull, 7989138997687718702ull, 4341639913048787869ull, 7355221087401524548ull}}, {{9945428074298727075ull, 14598109765537036281ull, 5427049891310984836ull, 9194026359251905685ull}}, {{17745107592505174182ull, 18347190640315423483ull, 5697749191283059474ull, 5746266474532441053ull}}, {{17569698472204079824ull, 13710616263539503546ull, 11733872507531212247ull, 7182833093165551316ull}}, {{12738751053400323971ull, 12526584310996991529ull, 14667340634414015309ull, 8978541366456939145ull}}, {{1044190380734120626ull, 10134958203586813658ull, 2249558868867677712ull, 5611588354035586966ull}}, {{10528610012772426591ull, 12668697754483517072ull, 12035320622939372948ull, 7014485442544483707ull}}, {{13160762515965533238ull, 15835872193104396340ull, 10432464760246828281ull, 8768106803180604634ull}}, {{17448848609333234082ull, 2979891093049165856ull, 11131976493581655580ull, 5480066751987877896ull}}, {{3364316687956990987ull, 3724863866311457321ull, 13914970616977069475ull, 6850083439984847370ull}}, {{8817081878373626637ull, 44393814461933747ull, 8170341234366561036ull, 8562604299981059213ull}}, {{3204833164769822696ull, 9251118170893484400ull, 7412306280692794599ull, 5351627687488162008ull}}, {{4006041455962278370ull, 6952211695189467596ull, 9265382850865993249ull, 6689534609360202510ull}}, {{5007551819952847963ull, 13301950637414222399ull, 2358356526727715753ull, 8361918261700253138ull}}, {{10047248915111611833ull, 1396190120742807143ull, 6085658847632210250ull, 5226198913562658211ull}}, {{7947375125462126887ull, 10968609687783284737ull, 2995387541112874908ull, 6532748641953322764ull}}, {{14545904925255046513ull, 13710762109729105921ull, 3744234426391093635ull, 8165935802441653455ull}}, {{2173661550643322215ull, 6263383309366997249ull, 9257675544135515378ull, 5103709876526033409ull}}, {{7328762956731540672ull, 17052601173563522369ull, 16183780448596782126ull, 6379637345657541761ull}}, {{13772639714341813744ull, 12092379430099627153ull, 6394667505463813946ull, 7974546682071927202ull}}, {{1690370793822551734ull, 12169423162239654875ull, 8608353209342271620ull, 4984091676294954501ull}}, {{15948021547560353380ull, 15211778952799568593ull, 15372127530105227429ull, 6230114595368693126ull}}, {{6099968879168278012ull, 5179665635717297030ull, 9991787375776758479ull, 7787643244210866408ull}}, {{17647538604762337470ull, 10154820049964392499ull, 6244867109860474049ull, 4867277027631791505ull}}, {{17447737237525533933ull, 17305211080882878528ull, 12417769905752980465ull, 6084096284539739381ull}}, {{3362927473197365801ull, 7796455795821434449ull, 1687154326909061870ull, 7605120355674674227ull}}, {{13631044716816823386ull, 261098853961008626ull, 17195372518814021333ull, 4753200222296671391ull}}, {{7815433859166253424ull, 4938059585878648687ull, 16882529630090138762ull, 5941500277870839239ull}}, {{5157606305530428876ull, 15395946519203086667ull, 16491476019185285548ull, 7426875347338549049ull}}, {{917660931742824095ull, 399094537647153359ull, 3389643484349721612ull, 4641797092086593156ull}}, {{14982134219960693831ull, 498868172058941698ull, 4237054355437152015ull, 5802246365108241445ull}}, {{9504295738096091481ull, 14458643270355840835ull, 9908003962723827922ull, 7252807956385301806ull}}, {{7268683654192726447ull, 8849932051090025236ull, 3161632916550009095ull, 9066009945481627258ull}}, {{13766299320725229838ull, 12448736559572347628ull, 6587706591271143588ull, 5666256215926017036ull}}, {{17207874150906537297ull, 15560920699465434535ull, 8234633239088929485ull, 7082820269907521295ull}}, {{16898156670205783717ull, 5616092819049629457ull, 5681605530433773953ull, 8853525337384401619ull}}, {{3643818891237532967ull, 15039273057974488171ull, 1245160447307414768ull, 5533453335865251012ull}}, {{18389831669329079921ull, 352347248758558597ull, 1556450559134268461ull, 6916816669831563765ull}}, {{9152231531379186189ull, 5052120079375586151ull, 6557249217345223480ull, 8646020837289454706ull}}, {{12637673734753073224ull, 3157575049609741344ull, 8709966779268152579ull, 5403763023305909191ull}}, {{15797092168441341530ull, 17782026867294340392ull, 6275772455657802819ull, 6754703779132386489ull}}, {{1299621136842125297ull, 17615847565690537587ull, 12456401587999641428ull, 8443379723915483111ull}}, {{16953164275022185975ull, 1786532691701810183ull, 14702780020140857749ull, 5277112327447176944ull}}, {{16579769325350344564ull, 6844851883054650633ull, 18378475025176072186ull, 6596390409308971180ull}}, {{6889653601405766993ull, 17779436890673089100ull, 4526349707760538616ull, 8245488011636213976ull}}, {{13529405537733380179ull, 11112148056670680687ull, 2828968567350336635ull, 5153430007272633735ull}}, {{12300070903739337319ull, 9278499052410962955ull, 17371268764470084506ull, 6441787509090792168ull}}, {{10763402611246783745ull, 2374751778658927886ull, 3267341881878054017ull, 8052234386363490211ull}}, {{2115440613601851937ull, 13013434907730299689ull, 18182989740669641424ull, 5032646491477181381ull}}, {{7255986785429702825ull, 16266793634662874611ull, 8893679120554888068ull, 6290808114346476727ull}}, {{4458297463359740627ull, 1886747969619041648ull, 6505412882266222182ull, 7863510142933095909ull}}, {{2786435914599837892ull, 15014275536294064742ull, 6371726060630082815ull, 4914693839333184943ull}}, {{12706416930104573173ull, 14156158401940193023ull, 3352971557360215615ull, 6143367299166481179ull}}, {{11271335144203328562ull, 13083511983997853375ull, 18026272501982433231ull, 7679209123958101473ull}}, {{13962113492768162208ull, 15094724017639740215ull, 4348891286097938913ull, 4799505702473813421ull}}, {{12840955847532814855ull, 5033346966767511557ull, 10047800126049811546ull, 5999382128092266776ull}}, {{2216136754133854857ull, 15515055745314165255ull, 12559750157562264432ull, 7499227660115333470ull}}, {{8302614498974741142ull, 9696909840821353284ull, 3238157830049027366ull, 4687017287572083419ull}}, {{10378268123718426427ull, 2897765264171915797ull, 17882755342843447920ull, 5858771609465104273ull}}, {{17584521173075420938ull, 3622206580214894746ull, 8518386123272146188ull, 7323464511831380342ull}}, {{12757279429489500364ull, 4527758225268618433ull, 1424610617235406927ull, 9154330639789225428ull}}, {{1055770615789855872ull, 9747377918433968377ull, 10113753672626905137ull, 5721456649868265892ull}}, {{5931399288164707744ull, 16795908416469848375ull, 12642192090783631421ull, 7151820812335332365ull}}, {{2802563091778496775ull, 7159827465305146757ull, 1967682058197375565ull, 8939776015419165457ull}}, {{4057444941575254437ull, 6780735175029410675ull, 12759016332441829488ull, 5587360009636978410ull}}, {{460120158541680142ull, 8475918968786763344ull, 6725398378697511052ull, 6984200012046223013ull}}, {{575150198177100177ull, 10594898710983454180ull, 13018433991799276719ull, 8730250015057778766ull}}, {{9582840910715463419ull, 13539340722005740718ull, 3524835226447160045ull, 5456406259411111729ull}}, {{2755179101539553466ull, 3089117847225012186ull, 9017730051486337961ull, 6820507824263889661ull}}, {{12667345913779217640ull, 8473083327458653136ull, 15883848582785310355ull, 8525634780329862076ull}}, {{7917091196112011025ull, 2989834070447964258ull, 704033327386043164ull, 5328521737706163798ull}}, {{672991958285237973ull, 3737292588059955323ull, 10103413696087329763ull, 6660652172132704747ull}}, {{14676298003138711178ull, 59929716647556249ull, 8017581101681774300ull, 8325815215165880934ull}}, {{2255157224320612631ull, 9260828109759498464ull, 399302170123721033ull, 5203634509478675584ull}}, {{2818946530400765788ull, 16187721155626760984ull, 499127712654651291ull, 6504543136848344480ull}}, {{3523683163000957235ull, 15622965426106063326ull, 623909640818314114ull, 8130678921060430600ull}}, {{16037360032157761984ull, 14376039409743677482ull, 389943525511446321ull, 5081674325662769125ull}}, {{10823328003342426672ull, 4134991206897433141ull, 5099115425316695806ull, 6352092907078461406ull}}, {{18140846022605421244ull, 14392111045476567234ull, 15597266318500645565ull, 7940116133848076757ull}}, {{15949714782555776182ull, 11300912412636548473ull, 12054134458276597430ull, 4962572583655047973ull}}, {{6102085422912556515ull, 4902768478940909784ull, 1232610017563583076ull, 6203215729568809967ull}}, {{7627606778640695644ull, 6128460598676137230ull, 15375820577236642557ull, 7754019661961012458ull}}, {{155568218223046873ull, 6136130883386279721ull, 14221573879200289502ull, 4846262288725632786ull}}, {{4806146291206196496ull, 16893535641087625459ull, 8553595312145586069ull, 6057827860907040983ull}}, {{1395996845580357715ull, 7281861496077368112ull, 6080308121754594683ull, 7572284826133801229ull}}, {{872498028487723572ull, 2245320425834661118ull, 6106035585310315629ull, 4732678016333625768ull}}, {{10313994572464430273ull, 7418336550720714301ull, 7632544481637894536ull, 5915847520417032210ull}}, {{17504179234007925746ull, 9272920688400892876ull, 317308565192592362ull, 7394809400521290263ull}}, {{1716739984400177783ull, 10407261448677945952ull, 7115846880886452082ull, 4621755875325806414ull}}, {{2145924980500222229ull, 3785704773992656632ull, 18118180637962840911ull, 5777194844157258017ull}}, {{2682406225625277786ull, 120444949063432886ull, 8812667742171387427ull, 7221493555196572522ull}}, {{12576379818886373040ull, 13985614241611454819ull, 1792462640859458475ull, 9026866943995715653ull}}, {{5554394377590289198ull, 6435165891793465310ull, 3426132159750855499ull, 5641791839997322283ull}}, {{16166365008842637306ull, 3432271346314443733ull, 18117723254970733086ull, 7052239799996652853ull}}, {{6372898205771132920ull, 13513711219747830475ull, 8812096013431252645ull, 8815299749995816067ull}}, {{1677218369393264123ull, 10751912521556087999ull, 3201716999180838951ull, 5509562343747385042ull}}, {{15931581017023743866ull, 8828204633517722094ull, 13225518285830824497ull, 6886952929684231302ull}}, {{10691104234424904024ull, 15646941810324540522ull, 7308525820433754813ull, 8608691162105289128ull}}, {{11293626164942952919ull, 12085181640666531778ull, 4567828637771096758ull, 5380431976315805705ull}}, {{4893660669323915341ull, 5883105013978388915ull, 10321471815641258852ull, 6725539970394757131ull}}, {{1505389818227506272ull, 7353881267472986144ull, 8290153751124185661ull, 8406924962993446414ull}}, {{940868636392191420ull, 6902018801384310292ull, 569660076025228134ull, 5254328101870904009ull}}, {{1176085795490239275ull, 17850895538585163673ull, 5323761113458923071ull, 6567910127338630011ull}}, {{6081793262790186998ull, 17701933404804066687ull, 2043015373396265935ull, 8209887659173287514ull}}, {{10718649816884948730ull, 17981237405643623535ull, 5888570626800054113ull, 5131179786983304696ull}}, {{8786626252678798008ull, 8641488701772365707ull, 7360713283500067642ull, 6413974733729130870ull}}, {{6371596797421109606ull, 1578488840360681326ull, 18424263641229860361ull, 8017468417161413587ull}}, {{17817306053670357216ull, 12515770571293895588ull, 9209321766554968773ull, 5010917760725883492ull}}, {{3824888493378394904ull, 1809655158835205774ull, 11511652208193710967ull, 6263647200907354365ull}}, {{14004482653577769438ull, 16097127003826170929ull, 554507204959974996ull, 7829559001134192957ull}}, {{1835272630845024043ull, 837332340536581023ull, 2652410012313678325ull, 4893474375708870598ull}}, {{16129148843838443765ull, 5658351444098114182ull, 12538884552246873714ull, 6116842969636088247ull}}, {{10938064017943278899ull, 16296311341977418536ull, 11061919671881204238ull, 7646053712045110309ull}}, {{6836290011214549312ull, 5573508570308498681ull, 9219542804139446601ull, 4778783570028193943ull}}, {{13157048532445574544ull, 11578571731313011255ull, 6912742486746920347ull, 5973479462535242429ull}}, {{11834624647129580276ull, 9861528645713876165ull, 13252614126861038338ull, 7466849328169053036ull}}, {{9702483413669681624ull, 10775141421998560507ull, 17506255866142924769ull, 4666780830105658147ull}}, {{7516418248659714126ull, 18080612795925588538ull, 17271133814251268057ull, 5833476037632072684ull}}, {{172150773969866850ull, 8765707939624821961ull, 3142173194104533456ull, 7291845047040090856ull}}, {{4826874485889721466ull, 10957134924531027451ull, 3927716492630666820ull, 9114806308800113570ull}}, {{710953544467381965ull, 16071581364686667965ull, 7066508826321554666ull, 5696753943000070981ull}}, {{5500377949011615360ull, 10866104669003559148ull, 13444822051329331237ull, 7120942428750088726ull}}, {{6875472436264519199ull, 18194316854681836839ull, 7582655527306888238ull, 8901178035937610908ull}}, {{11214699300306406356ull, 6759762015748760120ull, 13962531741421580957ull, 5563236272461006817ull}}, {{14018374125383007945ull, 13061388538113338054ull, 3618106621494812484ull, 6954045340576258522ull}}, {{8299595619873984123ull, 16326735672641672568ull, 13746005313723291413ull, 8692556675720323152ull}}, {{5187247262421240077ull, 12510052804614739307ull, 8591253321077057133ull, 5432847922325201970ull}}, {{1872373059599162192ull, 1802507950486260422ull, 1515694614491545609ull, 6791059902906502463ull}}, {{11563838361353728548ull, 6864820956535213431ull, 15729676323396595723ull, 8488824878633128078ull}}, {{14144928003487162198ull, 1984670088620814442ull, 5219361683695484423ull, 5305515549145705049ull}}, {{8457787967504176940ull, 16315895666058181765ull, 11135888123046743432ull, 6631894436432131311ull}}, {{15183920977807609079ull, 1948125508863175590ull, 9308174135381041387ull, 8289868045540164139ull}}, {{4878264592702367770ull, 17358479507535342408ull, 3511765825399456914ull, 5181167528462602587ull}}, {{6097830740877959713ull, 12474727347564402202ull, 18224765337031484855ull, 6476459410578253233ull}}, {{16845660462952225449ull, 10981723166028114848ull, 8945898616007192357ull, 8095574263222816542ull}}, {{10528537789345140906ull, 9169419987981265732ull, 979500616577107319ull, 5059733914514260339ull}}, {{13160672236681426132ull, 6850088966549194261ull, 15059433826003547861ull, 6324667393142825423ull}}, {{2615782240569618953ull, 13174297226613880731ull, 14212606264077046922ull, 7905834241428531779ull}}, {{17775764964851869510ull, 12845621785061063360ull, 6577035905834460374ull, 4941146400892832362ull}}, {{3772962132355285271ull, 6833655194471553393ull, 17444666919147851276ull, 6176433001116040452ull}}, {{9327888683871494493ull, 8542068993089441741ull, 3359089575225262479ull, 7720541251395050566ull}}, {{8135773436633378010ull, 12256322148321982944ull, 15934489039797952761ull, 4825338282121906603ull}}, {{10169716795791722513ull, 1485344630120314968ull, 15306425281320053048ull, 6031672852652383254ull}}, {{12712145994739653141ull, 1856680787650393710ull, 9909659564795290502ull, 7539591065815479068ull}}, {{3333405228284895309ull, 14995483547563659781ull, 15416909264851832371ull, 4712244416134674417ull}}, {{8778442553783507040ull, 14132668416027186822ull, 5436078525782626752ull, 5890305520168343022ull}}, {{1749681155374607992ull, 17665835520033983528ull, 16018470194083059248ull, 7362881900210428777ull}}, {{2187101444218259990ull, 3635550326332927794ull, 6188029687321660349ull, 9203602375263035972ull}}, {{5978624421063800398ull, 4578061963171773823ull, 13090890591430813526ull, 5752251484539397482ull}}, {{2861594507902362593ull, 14945949490819493087ull, 7140241202433741099ull, 7190314355674246853ull}}, {{17412051190160116954ull, 14070750845096978454ull, 13536987521469564278ull, 8987892944592808566ull}}, {{6270845975422685192ull, 4182533259758223630ull, 3848931182491089770ull, 5617433090370505354ull}}, {{17061929506133132298ull, 14451538611552555345ull, 14034536014968638020ull, 7021791362963131692ull}}, {{7492353827384251661ull, 18064423264440694182ull, 17543170018710797525ull, 8777239203703914615ull}}, {{71035123687769384ull, 13596107549489127816ull, 17882010289335330309ull, 5485774502314946634ull}}, {{88793904609711730ull, 3160076381579246058ull, 13129140824814387079ull, 6857218127893683293ull}}, {{9334364417616915470ull, 17785153532256221284ull, 2576367975735820136ull, 8571522659867104117ull}}, {{15057349797865347977ull, 11115720957660138302ull, 3916072994048581537ull, 5357201662416940073ull}}, {{9598315210476909163ull, 59593141793009166ull, 9506777260988114826ull, 6696502078021175091ull}}, {{2774521976241360646ull, 9297863464096037266ull, 7271785557807755628ull, 8370627597526468864ull}}, {{6345762253578238308ull, 15034536701914799099ull, 4544865973629847267ull, 5231642248454043040ull}}, {{3320516798545409981ull, 14181484858966110970ull, 5681082467037309084ull, 6539552810567553800ull}}, {{13374018035036538284ull, 17726856073707638712ull, 7101353083796636355ull, 8174441013209442250ull}}, {{8358761271897836428ull, 8773442036853580243ull, 9050031695800285626ull, 5109025633255901406ull}}, {{5836765571444907630ull, 1743430509212199496ull, 2089167582895581225ull, 6386282041569876758ull}}, {{7295956964306134538ull, 6790974154942637274ull, 11834831515474252339ull, 7982852551962345947ull}}, {{9171659121118721990ull, 1938515837625454344ull, 5090926687957713760ull, 4989282844976466217ull}}, {{11464573901398402488ull, 2423144797031817930ull, 10975344378374530104ull, 6236603556220582771ull}}, {{5107345339893227302ull, 3028930996289772413ull, 9107494454540774726ull, 7795754445275728464ull}}, {{5497933846646961016ull, 15728139927963271470ull, 5692184034087984203ull, 4872346528297330290ull}}, {{16095789345163477078ull, 15048488891526701433ull, 16338602079464756062ull, 6090433160371662862ull}}, {{6284678626172182635ull, 9587239077553600984ull, 11199880562476169270ull, 7613041450464578578ull}}, {{3927924141357614147ull, 1380338405043612711ull, 11611611369974993698ull, 4758150906540361611ull}}, {{298219158269629780ull, 10948795043159291697ull, 9902828194041354218ull, 5947688633175452014ull}}, {{4984459966264425128ull, 4462621767094338813ull, 3155163205696916965ull, 7434610791469315018ull}}, {{5421130488128959657ull, 5094981613647655710ull, 6583663021987961007ull, 4646631744668321886ull}}, {{15999785147015975380ull, 1757040998632181733ull, 17452950814339727067ull, 5808289680835402357ull}}, {{6164673378487805512ull, 16031359303572390879ull, 7981130462642495121ull, 7260362101044252947ull}}, {{3094155704682368986ull, 6204141074183324887ull, 5364727059875730998ull, 9075452626305316184ull}}, {{8851376343067562473ull, 17712646226646741766ull, 3352954412422331873ull, 5672157891440822615ull}}, {{1840848391979677283ull, 8305749728026263496ull, 18026251070810078554ull, 7090197364301028268ull}}, {{2301060489974596603ull, 1158815123178053562ull, 4086069764803046577ull, 8862746705376285336ull}}, {{6049848824661510781ull, 12253474498054753236ull, 2553793603001904110ull, 5539216690860178335ull}}, {{7562311030826888476ull, 6093471085713665737ull, 17027300059034543850ull, 6924020863575222918ull}}, {{14064574806960998499ull, 16840210893996857979ull, 12060753036938404004ull, 8655026079469028648ull}}, {{6484516245136930110ull, 1301759771893260429ull, 7537970648086502503ull, 5409391299668142905ull}}, {{12717331324848550542ull, 15462257770148739248ull, 14034149328535516032ull, 6761739124585178631ull}}, {{15896664156060688177ull, 881078138976372444ull, 12931000642242007137ull, 8452173905731473289ull}}, {{712043060683154303ull, 12079888882928702538ull, 1164346373760172604ull, 5282608691082170806ull}}, {{10113425862708718686ull, 15099861103660878172ull, 10678805004054991563ull, 6603260863852713507ull}}, {{12641782328385898358ull, 14263140361148709811ull, 8736820236641351550ull, 8254076079815891884ull}}, {{5595270946027492522ull, 4302776707290555728ull, 14683884684755620527ull, 5158797549884932427ull}}, {{6994088682534365652ull, 766784865685806756ull, 13743169837517137755ull, 6448496937356165534ull}}, {{8742610853167957065ull, 14793539137389422157ull, 7955590260041646385ull, 8060621171695206918ull}}, {{7769974792443667118ull, 2328432933227306992ull, 360557894098641087ull, 5037888232309504324ull}}, {{9712468490554583897ull, 16745599221816297452ull, 450697367623301358ull, 6297360290386880405ull}}, {{12140585613193229871ull, 11708626990415596007ull, 5175057727956514602ull, 7871700362983600506ull}}, {{14505395035886850526ull, 11929577887437135408ull, 7846097098400209530ull, 4919812726864750316ull}}, {{18131743794858563157ull, 5688600322441643452ull, 9807621373000261913ull, 6149765908580937895ull}}, {{4217935669863652330ull, 11722436421479442220ull, 7647840697822939487ull, 7687207385726172369ull}}, {{11859581830519558515ull, 14244051791065733243ull, 16309115482207806939ull, 4804504616078857730ull}}, {{10212791269722060239ull, 13193378720404778650ull, 11163022315904982866ull, 6005630770098572163ull}}, {{3542617050297799491ull, 7268351363651197505ull, 9342091876453840679ull, 7507038462623215204ull}}, {{13743350702504594442ull, 11460248629923080296ull, 15062179459638426232ull, 4691899039139509502ull}}, {{17179188378130743052ull, 14325310787403850370ull, 9604352287693256982ull, 5864873798924386878ull}}, {{12250613435808653007ull, 8683266447400037155ull, 2782068322761795420ull, 7331092248655483598ull}}, {{10701580776333428355ull, 10854083059250046444ull, 12700957440307020083ull, 9163865310819354497ull}}, {{15911860022063168530ull, 4477958902817585075ull, 1020569372550805696ull, 5727415819262096561ull}}, {{15278139009151572758ull, 5597448628521981344ull, 5887397734115895024ull, 7159269774077620701ull}}, {{650929687729914332ull, 6996810785652476681ull, 11970933186072256684ull, 8949087217597025876ull}}, {{11936046100899666218ull, 13596378777887573733ull, 16705205278149936235ull, 5593179510998141172ull}}, {{1084999570842419060ull, 12383787453932079263ull, 2434762523977868678ull, 6991474388747676466ull}}, {{15191307518835187537ull, 6256362280560323270ull, 12266825191827111656ull, 8739342985934595582ull}}, {{4882881180844604307ull, 3910226425350202044ull, 3055079726464556881ull, 5462089366209122239ull}}, {{6103601476055755383ull, 9499469050115140459ull, 17653907713362859813ull, 6827611707761402798ull}}, {{3017815826642306325ull, 16486022331071313478ull, 12844012604848798958ull, 8534514634701753498ull}}, {{15721192946933605165ull, 5692077938492183019ull, 12639193896457887253ull, 5334071646688595936ull}}, {{15039805165239618552ull, 11726783441542616678ull, 15798992370572359066ull, 6667589558360744920ull}}, {{9576384419694747382ull, 5435107265073495040ull, 1301996389505897217ull, 8334486947950931151ull}}, {{5985240262309217114ull, 14926157086739404160ull, 7731276771082267616ull, 5209054342469331969ull}}, {{7481550327886521393ull, 210952284714703584ull, 14275781982280222425ull, 6511317928086664961ull}}, {{9351937909858151741ull, 4875376374320767384ull, 4009669422568114319ull, 8139147410108331202ull}}, {{5844961193661344838ull, 9964639261591561471ull, 7117729407532459353ull, 5086967131317707001ull}}, {{2694515473649293144ull, 17067485095416839743ull, 13508847777842962095ull, 6358708914147133751ull}}, {{17203202397343780141ull, 16722670350843661774ull, 12274373703876314715ull, 7948386142683917189ull}}, {{6140315479912474684ull, 8145825960063594657ull, 9977326574136390649ull, 4967741339177448243ull}}, {{12287080368317981259ull, 14793968468506881225ull, 7859972199243100407ull, 6209676673971810304ull}}, {{1523792405115312862ull, 13880774567206213628ull, 9824965249053875509ull, 7762095842464762880ull}}, {{10175742290051846347ull, 10981327113717577469ull, 6140603280658672193ull, 4851309901540476800ull}}, {{17331363880992195838ull, 18338344910574359740ull, 7675754100823340241ull, 6064137376925596000ull}}, {{3217460777530693181ull, 9087873082935785964ull, 9594692626029175302ull, 7580171721156995000ull}}, {{11234285022811459046ull, 1068234658407478323ull, 5996682891268234564ull, 4737607325723121875ull}}, {{9431170260086935904ull, 1335293323009347904ull, 2884167595657905301ull, 5922009157153902344ull}}, {{11788962825108669880ull, 6280802672189072784ull, 3605209494572381626ull, 7402511446442377930ull}}, {{7368101765692918675ull, 8537187688545558394ull, 6864941952535126420ull, 4626569654026486206ull}}, {{18433499243970924152ull, 10671484610681947992ull, 17804549477523683833ull, 5783212067533107757ull}}, {{4595129981254103573ull, 17951041781779822895ull, 8420628791622441079ull, 7229015084416384697ull}}, {{1132226458140241563ull, 17827116208797390715ull, 15137472007955439253ull, 9036268855520480871ull}}, {{16848542600833508641ull, 13447790639712063148ull, 16378449032613231389ull, 5647668034700300544ull}}, {{2613934177332334185ull, 2974680244357915224ull, 2026317217056987621ull, 7059585043375375681ull}}, {{3267417721665417731ull, 8330036323874781934ull, 7144582539748622430ull, 8824481304219219601ull}}, {{15877194131323049794ull, 594586683994350804ull, 15994579133411358779ull, 5515300815137012250ull}}, {{1399748590444260626ull, 14578291410275102218ull, 10769851879909422665ull, 6894126018921265313ull}}, {{10973057774910101591ull, 4387806207561714060ull, 18074000868314166236ull, 8617657523651581641ull}}, {{16081533146173589302ull, 11965750916580847095ull, 4378721515055272041ull, 5386035952282238526ull}}, {{15490230414289598724ull, 1122130590443895157ull, 14696773930673865860ull, 6732544940352798157ull}}, {{5527729962579834693ull, 1402663238054868947ull, 4535909358060168613ull, 8415681175440997697ull}}, {{1148988217398702731ull, 3182507532997987044ull, 14364158394856075143ull, 5259800734650623560ull}}, {{1436235271748378414ull, 17813192471529647517ull, 17955197993570093928ull, 6574750918313279450ull}}, {{6406980108112860921ull, 3819746515702507780ull, 13220625455107841603ull, 8218438647891599313ull}}, {{13227734604425313884ull, 81498563100373410ull, 1345361881801319146ull, 5136524154932249571ull}}, {{7311296218676866547ull, 9325245240730242571ull, 15516760407533812644ull, 6420655193665311963ull}}, {{4527434254918695279ull, 11656556550912803214ull, 14784264490989877901ull, 8025818992081639954ull}}, {{16664704464606348262ull, 9591190853534195960ull, 13851851325296061592ull, 5016136870051024971ull}}, {{2384136507048383711ull, 11988988566917744951ull, 12703128138192689086ull, 6270171087563781214ull}}, {{16815228689092643351ull, 5762863671792405380ull, 6655538135886085550ull, 7837713859454726518ull}}, {{1286145893828126286ull, 17436847850152417075ull, 17994769390210967180ull, 4898571162159204073ull}}, {{15442740422567321570ull, 3349315738980969727ull, 8658403682481545264ull, 6123213952699005092ull}}, {{14691739509781764058ull, 4186644673726212159ull, 10823004603101931580ull, 7654017440873756365ull}}, {{16099866221254684393ull, 11840024957933658407ull, 9070220886152401189ull, 4783760900546097728ull}}, {{15513146758140967587ull, 964973142134909297ull, 11337776107690501487ull, 5979701125682622160ull}}, {{5556375392394045771ull, 15041274482950800334ull, 14172220134613126858ull, 7474626407103277700ull}}, {{17307792675528442319ull, 14012482570271638112ull, 18081009620987980094ull, 4671641504439548562ull}}, {{3187996770701001283ull, 8292231175984771833ull, 13377889989380199310ull, 5839551880549435703ull}}, {{8596681981803639507ull, 1141916933126188983ull, 12110676468297861234ull, 7299439850686794629ull}}, {{6134166458827161480ull, 10650768203262512037ull, 1303287530090162830ull, 9124299813358493287ull}}, {{6139697045980669877ull, 2045044108611682119ull, 7732083733947433625ull, 5702687383349058304ull}}, {{3062935289048449442ull, 7167991154191990553ull, 9665104667434292031ull, 7128359229186322880ull}}, {{8440355129737949707ull, 4348302924312600287ull, 12081380834292865039ull, 8910449036482903600ull}}, {{12192750983727300423ull, 9635218355336457035ull, 7550863021433040649ull, 5569030647801814750ull}}, {{10629252711231737625ull, 16655708962597959198ull, 215206739936525003ull, 6961288309752268438ull}}, {{4063193852184896223ull, 16207950184820061094ull, 9492380461775432062ull, 8701610387190335547ull}}, {{16374554212897723851ull, 5518282847085150279ull, 3626894779395951087ull, 5438506491993959717ull}}, {{15856506747694766910ull, 2286167540429049945ull, 9145304492672326763ull, 6798133114992449646ull}}, {{5985575379336294926ull, 16692767480818476144ull, 2208258578985632645ull, 8497666393740562058ull}}, {{3740984612085184329ull, 12738822684725241542ull, 5991847630293408307ull, 5311041496087851286ull}}, {{13899602801961256219ull, 11311842337479164023ull, 16713181574721536192ull, 6638801870109814107ull}}, {{12762817484024182369ull, 14139802921848955029ull, 16279790949974532336ull, 8298502337637267634ull}}, {{10282603936728807933ull, 8837376826155596893ull, 14786555362161470614ull, 5186563961023292271ull}}, {{17464940939338397820ull, 1823348995839720308ull, 13871508184274450364ull, 6483204951279115339ull}}, {{3384432100463445659ull, 2279186244799650386ull, 12727699211915675051ull, 8104006189098894174ull}}, {{6726956081217041441ull, 17565392467495639155ull, 3343125989019909002ull, 5065003868186808859ull}}, {{3797009083093913897ull, 12733368547514773136ull, 18013965541557049965ull, 6331254835233511073ull}}, {{4746261353867392371ull, 2081652629111302708ull, 8682398871664148745ull, 7914068544041888842ull}}, {{12189785383021896040ull, 12830247939263033952ull, 10038185313217480869ull, 4946292840026180526ull}}, {{15237231728777370050ull, 2202751868796628728ull, 3324359604667075279ull, 6182866050032725658ull}}, {{599795587262160947ull, 16588497891277949623ull, 13378821542688619906ull, 7728582562540907072ull}}, {{7292401269679932448ull, 14979497200476106418ull, 8361763464180387441ull, 4830364101588066920ull}}, {{18338873623954691368ull, 4889313445312969310ull, 10452204330225484302ull, 6037955126985083650ull}}, {{13700219993088588401ull, 15335013843495987446ull, 3841883375927079569ull, 7547443908731354563ull}}, {{3950951477252979847ull, 2666854624543910298ull, 95334100740730779ull, 4717152442957096602ull}}, {{14162061383421000617ull, 17168626335962051584ull, 9342539662780689281ull, 5896440553696370752ull}}, {{17702576729276250771ull, 7625724864670400768ull, 11678174578475861602ull, 7370550692120463440ull}}, {{3681476837885761847ull, 308784043983225153ull, 14597718223094827003ull, 9213188365150579300ull}}, {{13830138069747070915ull, 16333891091985373384ull, 18346945926289042684ull, 5758242728219112062ull}}, {{17287672587183838643ull, 1970619791272165114ull, 13710310371006527548ull, 7197803410273890078ull}}, {{12386218697125022496ull, 2463274739090206393ull, 7914515926903383627ull, 8997254262842362598ull}}, {{823857658062057204ull, 17680447776427236660ull, 334886435887226862ull, 5623283914276476624ull}}, {{1029822072577571505ull, 12877187683679270017ull, 418608044859033578ull, 7029104892845595780ull}}, {{5898963609149352285ull, 6873112567744311713ull, 523260056073791973ull, 8786381116056994725ull}}, {{15216067301786814939ull, 6601538364053888772ull, 2632880544259813935ull, 5491488197535621703ull}}, {{573340053523967057ull, 3640236936639973062ull, 17126158735606931131ull, 6864360246919527128ull}}, {{9940047103759734629ull, 18385354226082130039ull, 2960954345799112297ull, 8580450308649408911ull}}, {{13130058467490915999ull, 4573317363660249418ull, 8768125493765527042ull, 5362781442905880569ull}}, {{7189201047508869191ull, 14940018741430087581ull, 15571842885634296706ull, 6703476803632350711ull}}, {{13598187327813474393ull, 9451651389932833668ull, 14853117588615482979ull, 8379346004540438389ull}}, {{17722239116738197304ull, 3601439109494327090ull, 11589041502098370814ull, 5237091252837773993ull}}, {{12929426859067970822ull, 13725170923722684671ull, 651243822340799805ull, 6546364066047217492ull}}, {{11550097555407575623ull, 3321405599371192127ull, 814054777925999757ull, 8182955082559021865ull}}, {{14136339999770816620ull, 4381721508820689031ull, 12037999282272219608ull, 5114346926599388665ull}}, {{13058738981286132871ull, 5477151886025861289ull, 1212441047558110798ull, 6392933658249235832ull}}, {{2488365671325502377ull, 16069811894387102420ull, 1515551309447638497ull, 7991167072811544790ull}}, {{10778600581433214794ull, 3126103406350857156ull, 14782277623686937773ull, 4994479420507215493ull}}, {{13473250726791518492ull, 8519315276365959349ull, 4642788974326508504ull, 6243099275634019367ull}}, {{3006505353207234403ull, 10649144095457449187ull, 1191800199480747726ull, 7803874094542524209ull}}, {{18019966910250379166ull, 2044029041233517837ull, 12274090170743937089ull, 4877421309089077630ull}}, {{8689900582530810246ull, 7166722319969285201ull, 6119240676575145553ull, 6096776636361347038ull}}, {{15474061746590900711ull, 13570088918388994405ull, 16872422882573707749ull, 7620970795451683797ull}}, {{11977131600833006896ull, 10787148583206815455ull, 12851107310822261295ull, 4763106747157302373ull}}, {{10359728482613870716ull, 8872249710581131415ull, 2228826083245662907ull, 5953883433946627967ull}}, {{8337974584839950491ull, 6478626119799026365ull, 16621090659339242346ull, 7442354292433284958ull}}, {{7517077124738663009ull, 8660827343301779382ull, 5776495643659638562ull, 4651471432770803099ull}}, {{172974369068552954ull, 1602662142272448420ull, 2608933536147160299ull, 5814339290963503874ull}}, {{216217961335691192ull, 15838385733122724237ull, 12484538957038726181ull, 7267924113704379842ull}}, {{4881958470097001894ull, 5962924111121241584ull, 6382301659443631919ull, 9084905142130474803ull}}, {{3051224043810626184ull, 10644356597091857846ull, 1683095527938575997ull, 5678065713831546752ull}}, {{13037402091618058538ull, 17917131764792210211ull, 2103869409923219996ull, 7097582142289433440ull}}, {{11685066596095185268ull, 3949670632280711148ull, 2629836762404024996ull, 8871977677861791800ull}}, {{16526538659414266601ull, 11691916182030220275ull, 1643647976502515622ull, 5544986048663619875ull}}, {{16046487305840445347ull, 5391523190682999536ull, 15889618025910308240ull, 6931232560829524843ull}}, {{1611365058591005067ull, 6739403988353749421ull, 15250336513960497396ull, 8664040701036906054ull}}, {{3312946170833072119ull, 13435499529575869196ull, 4919774302797922968ull, 5415025438148066284ull}}, {{4141182713541340149ull, 16794374411969836495ull, 6149717878497403710ull, 6768781797685082855ull}}, {{564792373499287282ull, 11769595978107519811ull, 3075461329694366734ull, 8460977247106353569ull}}, {{16493896297932912215ull, 2744311467889811977ull, 13451378377127448969ull, 5288110779441470980ull}}, {{6782312317133976557ull, 8042075353289652876ull, 16814222971409311211ull, 6610138474301838725ull}}, {{8477890396417470696ull, 5440908173184678191ull, 7182720658979475302ull, 8262673092877298407ull}}, {{12216210525402001041ull, 17235625663522587581ull, 11406729439503253919ull, 5164170683048311504ull}}, {{1435205101470337590ull, 16932846060975846573ull, 14258411799379067399ull, 6455213353810389380ull}}, {{6405692395265309891ull, 16554371557792420312ull, 17823014749223834249ull, 8069016692262986725ull}}, {{4003557747040818682ull, 3428953195979180839ull, 13445227227478590358ull, 5043135432664366703ull}}, {{392761165373635448ull, 13509563531828751857ull, 12194848015920850043ull, 6303919290830458379ull}}, {{5102637475144432214ull, 12275268396358551917ull, 10631874001473674650ull, 7879899113538072974ull}}, {{5494991431178964086ull, 12283728766151482852ull, 2033235232493658752ull, 4924936945961295609ull}}, {{6868739288973705107ull, 15354660957689353565ull, 7153230059044461344ull, 6156171182451619511ull}}, {{13197610129644519288ull, 746582123402140340ull, 4329851555378188777ull, 7695213978064524389ull}}, {{17471878367882600363ull, 11995828873194807472ull, 5012000231325061937ull, 4809508736290327743ull}}, {{3393103886143698838ull, 1159728036211345629ull, 1653314270728939518ull, 6011885920362909679ull}}, {{8853065876107011451ull, 10673032082118957844ull, 15901700893693338109ull, 7514857400453637098ull}}, {{14756538209421657965ull, 8976488060538042604ull, 14550249076985724222ull, 4696785875283523186ull}}, {{18445672761777072457ull, 1997238038817777447ull, 8964439309377379470ull, 5870982344104403983ull}}, {{18445404933793952667ull, 11719919585376997617ull, 6593863118294336433ull, 7338727930130504979ull}}, {{9221698111960277121ull, 814841426439083310ull, 3630642879440532638ull, 9173409912663131224ull}}, {{1151875301547785297ull, 14344333946806590781ull, 2269151799650332898ull, 5733381195414457015ull}}, {{6051530145362119525ull, 8707045396653462668ull, 16671497804845079835ull, 7166726494268071268ull}}, {{7564412681702649406ull, 6272120727389440431ull, 2392628182346798178ull, 8958408117835089086ull}}, {{11645286953705237735ull, 8531761473045788173ull, 15330450669248912573ull, 5599005073646930678ull}}, {{721550636849383457ull, 15276387859734623121ull, 9939691299706364908ull, 6998756342058663348ull}}, {{5513624314489117225ull, 648740750958727285ull, 12424614124632956136ull, 8748445427573329185ull}}, {{5751858205769392218ull, 405462969349204553ull, 847854800254515729ull, 5467778392233330741ull}}, {{11801508775639128176ull, 5118514730113893595ull, 5671504518745532565ull, 6834722990291663426ull}}, {{10140199951121522316ull, 11009829431069754898ull, 16312752685286691514ull, 8543403737864579282ull}}, {{10949310987878339351ull, 11492829412845984715ull, 14807156446731570100ull, 5339627336165362051ull}}, {{9074952716420536285ull, 14366036766057480894ull, 13897259539987074721ull, 6674534170206702564ull}}, {{2120318858670894548ull, 4122487902289687406ull, 17371574424983843402ull, 8343167712758378205ull}}, {{15160257341951472805ull, 7188240957358442532ull, 13163077024828596078ull, 5214479820473986378ull}}, {{503577603729789390ull, 18208673233552828974ull, 7230474244180969289ull, 6518099775592482973ull}}, {{9852844041517012545ull, 8925783486658872505ull, 13649778823653599516ull, 8147624719490603716ull}}, {{17687242572016602601ull, 14801986716016571123ull, 17754483801638275505ull, 5092265449681627322ull}}, {{17497367196593365347ull, 4667425339738550192ull, 12969732715193068574ull, 6365331812102034153ull}}, {{3424964922032155068ull, 15057653711527963549ull, 2377107838709172005ull, 7956664765127542692ull}}, {{4446446085483790870ull, 11716876578918671170ull, 10709064436048008311ull, 4972915478204714182ull}}, {{14781429643709514395ull, 10034409705220951058ull, 4162958508205234581ull, 6216144347755892728ull}}, {{9253415017782117185ull, 17154698149953576727ull, 5203698135256543226ull, 7770180434694865910ull}}, {{12700913413754905097ull, 15333372362148373358ull, 17087369389817503228ull, 4856362771684291193ull}}, {{6652769730338855563ull, 719971378975915082ull, 7524153681989715324ull, 6070453464605363992ull}}, {{17539334199778345262ull, 899964223719893852ull, 9405192102487144155ull, 7588066830756704990ull}}, {{1738711838006689981ull, 16703378704320791322ull, 1266559045627077192ull, 4742541769222940619ull}}, {{11396761834363138284ull, 2432479306691437536ull, 15418256862316010203ull, 5928177211528675773ull}}, {{14245952292953922855ull, 16875657188646460632ull, 5437763022612849041ull, 7410221514410844717ull}}, {{8903720183096201784ull, 3629756715262956039ull, 5704444898346724603ull, 4631388446506777948ull}}, {{6517964210442864326ull, 18372253949360858761ull, 7130556122933405753ull, 5789235558133472435ull}}, {{12759141281480968312ull, 9130259381418909739ull, 4301509135239369288ull, 7236544447666840544ull}}, {{11337240583423822486ull, 11412824226773637174ull, 5376886419049211610ull, 9045680559583550680ull}}, {{2474089346212501150ull, 11744701160160911138ull, 3360554011905757256ull, 5653550349739719175ull}}, {{12315983719620402245ull, 14680876450201138922ull, 18035750570164360282ull, 7066937937174648968ull}}, {{6171607612670726998ull, 9127723525896647845ull, 4097944138995898737ull, 8833672421468311211ull}}, {{6163097767132898326ull, 17234042249753874663ull, 255372077658742758ull, 5521045263417694507ull}}, {{3092186190488735004ull, 12319180775337567521ull, 14154273152355592160ull, 6901306579272118133ull}}, {{8476918756538306658ull, 15398975969171959401ull, 3857783385162326488ull, 8626633224090147667ull}}, {{16827289268904911422ull, 9624359980732474625ull, 105271606512760103ull, 5391645765056342292ull}}, {{7199053530848975565ull, 7418763957488205378ull, 131589508140950129ull, 6739557206320427865ull}}, {{18222188950415995264ull, 13885140965287644626ull, 4776172903603575565ull, 8424446507900534831ull}}, {{16000554112437384944ull, 10984056112518471843ull, 9902637092393316584ull, 5265279067437834269ull}}, {{15389006622119343276ull, 13730070140648089804ull, 16989982383919033634ull, 6581598834297292836ull}}, {{789514203939627479ull, 7939215638955336448ull, 2790733906189240427ull, 8226998542871616046ull}}, {{493446377462267175ull, 2656166765133391328ull, 15579266746650438979ull, 5141874089294760028ull}}, {{616807971827833968ull, 17155266511698902872ull, 1027339359603497107ull, 6427342611618450036ull}}, {{771009964784792460ull, 16832397121196240686ull, 1284174199504371384ull, 8034178264523062545ull}}, {{14316939283272659000ull, 10520248200747650428ull, 12331823920758701875ull, 5021361415326914090ull}}, {{17896174104090823750ull, 8538624232507175131ull, 6191407864093601536ull, 6276701769158642613ull}}, {{17758531611686141783ull, 10673280290633968914ull, 12350945848544389824ull, 7845877211448303266ull}}, {{15710768275731226518ull, 6670800181646230571ull, 12331027173767631544ull, 4903673257155189541ull}}, {{15026774326236645244ull, 8338500227057788214ull, 1578725911927375718ull, 6129591571443986927ull}}, {{9560095870941030747ull, 1199753246967459460ull, 15808465445191383360ull, 7661989464304983658ull}}, {{15198431956192920025ull, 749845779354662162ull, 14491976921672002504ull, 4788743415190614786ull}}, {{9774667908386374223ull, 937307224193327703ull, 8891599115235227322ull, 5985929268988268483ull}}, {{7606648867055579875ull, 10395006067096435437ull, 6502812875616646248ull, 7482411586235335604ull}}, {{7059998551123431374ull, 6496878791935272148ull, 13287630084115179713ull, 4676507241397084752ull}}, {{8824998188904289217ull, 12732784508346478089ull, 16609537605143974641ull, 5845634051746355940ull}}, {{15642933754557749425ull, 2080922580150933899ull, 2315177932720416686ull, 7307042564682944926ull}}, {{14941981174769798878ull, 11824525262043443182ull, 12117344452755296665ull, 9133803205853681157ull}}, {{4727052215803736395ull, 472799261136070133ull, 9879183292185754368ull, 5708627003658550723ull}}, {{10520501288182058397ull, 590999076420087666ull, 7737293096804805056ull, 7135783754573188404ull}}, {{3927254573372797188ull, 738748845525109583ull, 9671616371006006320ull, 8919729693216485505ull}}, {{9372063135999080099ull, 461718028453193489ull, 17573975277947223710ull, 5574831058260303440ull}}, {{16326764938426238028ull, 9800519572421267669ull, 3520725023724478021ull, 6968538822825379301ull}}, {{6573398117750633822ull, 16862335483953972491ull, 9012592298082985430ull, 8710673528531724126ull}}, {{1802530814380452187ull, 5927273659043844903ull, 1021184167874477990ull, 5444170955332327579ull}}, {{16088221573257728946ull, 16632464110659581936ull, 15111538265125261199ull, 6805213694165409473ull}}, {{1663532892862609566ull, 16178894119897089517ull, 5054364776124412787ull, 8506517117706761842ull}}, {{3345551067252824931ull, 7805965815721986996ull, 7770664003505145896ull, 5316573198566726151ull}}, {{4181938834066031164ull, 9757457269652483745ull, 5101643985954044466ull, 6645716498208407689ull}}, {{9839109561009926858ull, 2973449550210828873ull, 10988741000869943487ull, 8307145622760509611ull}}, {{17678658521699674047ull, 8775934996522849901ull, 4562120116330020727ull, 5191966014225318507ull}}, {{8263265096842428846ull, 6358232727226174473ull, 1090964126985138005ull, 6489957517781648134ull}}, {{14940767389480423962ull, 12559476927460105995ull, 10587077195586198314ull, 8112446897227060167ull}}, {{7032136609211571024ull, 12461359098089954151ull, 13534452274882455802ull, 5070279310766912604ull}}, {{4178484743087075876ull, 6353326835757666881ull, 16918065343603069753ull, 6337849138458640755ull}}, {{9834791947286232749ull, 12553344563124471505ull, 16535895661076449287ull, 7922311423073300944ull}}, {{17675960013122365228ull, 14763369379593876546ull, 10334934788172780804ull, 4951444639420813090ull}}, {{12871577979548180727ull, 7467650782794067ull, 3695296448361200198ull, 6189305799276016363ull}}, {{11477786456007838005ull, 9232706600333268392ull, 7434542024112343ull, 7736632249095020454ull}}, {{7173616535004898753ull, 12687970652849374601ull, 13839704644047233926ull, 4835395155684387783ull}}, {{13578706687183511346ull, 6636591279206942443ull, 12687944786631654504ull, 6044243944605484729ull}}, {{12361697340552001278ull, 8295739099008678054ull, 2024872928007404418ull, 7555304930756855912ull}}, {{3114374819417612895ull, 9796522955307811688ull, 1265545580004627761ull, 4722065581723034945ull}}, {{3892968524272016118ull, 16857339712562152514ull, 6193617993433172605ull, 5902581977153793681ull}}, {{14089582692194795956ull, 7236616585420526930ull, 12353708510218853661ull, 7378227471442242101ull}}, {{8388606328388719137ull, 13657456750203046567ull, 1607077582491403364ull, 9222784339302802627ull}}, {{12160407982884031317ull, 17759282505731679912ull, 17145324553552984766ull, 5764240212064251641ull}}, {{15200509978605039146ull, 12975731095309824082ull, 7596597636659067246ull, 7205300265080314552ull}}, {{9777265436401523124ull, 6996291832282504295ull, 9495747045823834058ull, 9006625331350393190ull}}, {{13028319925392033809ull, 8984368413603953088ull, 1323155885212508382ull, 5629140832093995744ull}}, {{16285399906740042261ull, 2007088480150165552ull, 1653944856515635478ull, 7036426040117494680ull}}, {{1910005809715501210ull, 11732232637042482749ull, 2067431070644544347ull, 8795532550146868350ull}}, {{3499596640285882208ull, 5026802388937857766ull, 15127202474435003929ull, 5497207843841792718ull}}, {{13597867837212128568ull, 10895189004599710111ull, 9685631056188979103ull, 6871509804802240898ull}}, {{12385648778087772806ull, 9007300237322249735ull, 2883666783381448071ull, 8589387256002801123ull}}, {{14658559513945939860ull, 12547091675967487940ull, 17943192804109262708ull, 5368367035001750701ull}}, {{18323199392432424825ull, 15683864594959359925ull, 8593932949854414673ull, 6710458793752188377ull}}, {{9068941185258367319ull, 5769772688417036195ull, 15354102205745406246ull, 8388073492190235471ull}}, {{3362245231572785623ull, 17441165985542811334ull, 16513842906231960759ull, 5242545932618897169ull}}, {{13426178576320757836ull, 17189771463501126263ull, 6807245577507787237ull, 6553182415773621462ull}}, {{12171037201973559391ull, 7652156274094244117ull, 17732429008739509855ull, 8191478019717026827ull}}, {{9912741260447168572ull, 11700126698949984429ull, 8776925121248499707ull, 5119673762323141767ull}}, {{17002612593986348618ull, 10013472355260092632ull, 6359470383133236730ull, 6399592202903927209ull}}, {{2806521668773384157ull, 3293468407220339983ull, 12561023997343933817ull, 7999490253629909011ull}}, {{8671605070624446954ull, 13587632800581182249ull, 5544796989126264683ull, 4999681408518693132ull}}, {{15451192356707946597ull, 12372854982299089907ull, 6930996236407830854ull, 6249601760648366415ull}}, {{14702304427457545342ull, 6242696691019086576ull, 4052059277082400664ull, 7812002200810458019ull}}, {{9188940267160965839ull, 3901685431886929110ull, 226694038962806463ull, 4882501375506536262ull}}, {{2262803297096431490ull, 265420771431273484ull, 9506739585558283887ull, 6103126719383170327ull}}, {{2828504121370539363ull, 14166834019571255567ull, 7271738463520466954ull, 7628908399228962909ull}}, {{8685344103497668958ull, 13465957280659422633ull, 6850679548913985798ull, 4768067749518101818ull}}, {{15468366147799474101ull, 7609074563969502483ull, 17786721472997258056ull, 5960084686897627272ull}}, {{14723771666321954722ull, 9511343204961878104ull, 3786657767537020954ull, 7450105858622034091ull}}, {{9202357291451221702ull, 10556275521528561719ull, 60818095496944144ull, 4656316161638771307ull}}, {{6891260595886639223ull, 13195344401910702149ull, 13911080674653343892ull, 5820395202048464133ull}}, {{13225761763285686933ull, 16494180502388377686ull, 3553792788034516153ull, 7275494002560580167ull}}, {{7308830167252332858ull, 6782667572703308396ull, 18277299040325308904ull, 9094367503200725208ull}}, {{13791390891387483844ull, 4239167232939567747ull, 11423311900203318065ull, 5683979689500453255ull}}, {{12627552595806966901ull, 9910645059601847588ull, 9667453856826759677ull, 7104974611875566569ull}}, {{15784440744758708626ull, 16999992342929697389ull, 16696003339460837500ull, 8881218264844458211ull}}, {{12171118474687886844ull, 1401623177476285060ull, 8129159077949329486ull, 5550761415527786382ull}}, {{15213898093359858554ull, 10975401008700132133ull, 938076810581886049ull, 6938451769409732978ull}}, {{5182314561417659481ull, 18330937279302553071ull, 10395968050082133369ull, 8673064711762166222ull}}, {{10156475628527119032ull, 4539306771923013813ull, 1885794012873945452ull, 5420665444851353889ull}}, {{17307280554086286694ull, 5674133464903767266ull, 6968928534519819719ull, 6775831806064192361ull}}, {{12410728655753082559ull, 2480980812702321179ull, 13322846686577162553ull, 8469789757580240451ull}}, {{5450862400631982647ull, 13079828054007420497ull, 6020936169897032643ull, 5293618598487650282ull}}, {{11425264019217366213ull, 11738099049081887717ull, 16749542249226066612ull, 6617023248109562852ull}}, {{446521968739544054ull, 14672623811352359647ull, 2490183737823031649ull, 8271279060136953566ull}}, {{7196605258103296890ull, 2252860854454142923ull, 15391422891421558493ull, 5169549412585595978ull}}, {{4384070554201733209ull, 7427762086495066558ull, 10015906577422172308ull, 6461936765731994973ull}}, {{14703460229606942319ull, 9284702608118833197ull, 17131569240205103289ull, 8077420957164993716ull}}, {{11495505652718032901ull, 17332154176142740508ull, 1483858738273413747ull, 5048388098228121073ull}}, {{14369382065897541126ull, 17053506701751037731ull, 6466509441269155088ull, 6310485122785151341ull}}, {{13350041563944538504ull, 2870139303479245548ull, 12694822820013831765ull, 7888106403481439176ull}}, {{17567148014320112373ull, 4099680073888222419ull, 7934264262508644853ull, 4930066502175899485ull}}, {{17347248999472752562ull, 9736286110787665928ull, 14529516346563193970ull, 6162583127719874356ull}}, {{3237317175631389087ull, 2946985601629806603ull, 18161895433203992463ull, 7703228909649842945ull}}, {{18164224299265475843ull, 8759395028659710982ull, 4433655618111413433ull, 4814518068531151841ull}}, {{13481908337227068996ull, 15560929804252026632ull, 10153755541066654695ull, 6018147585663939801ull}}, {{16852385421533836245ull, 14839476236887645386ull, 17303880444760706273ull, 7522684482079924751ull}}, {{15144426906886035557ull, 2357143620413696510ull, 17732454305616523277ull, 4701677801299952969ull}}, {{9707161596752768639ull, 7558115543944508542ull, 8330509826738490384ull, 5877097251624941212ull}}, {{2910579959086184990ull, 9447644429930635678ull, 10413137283423112980ull, 7346371564531176515ull}}, {{12861596985712507045ull, 11809555537413294597ull, 8404735585851503321ull, 9182964455663970644ull}}, {{10344341125284010856ull, 463443183242227267ull, 14476331778011965384ull, 5739352784789981652ull}}, {{8318740388177625665ull, 579303979052784084ull, 18095414722514956730ull, 7174190980987477065ull}}, {{10398425485222032082ull, 9947502010670755913ull, 8784210347861532200ull, 8967738726234346332ull}}, {{18028230974332239811ull, 6217188756669222445ull, 14713503504268233433ull, 5604836703896466457ull}}, {{8700230662633136052ull, 12383171964263915961ull, 4556821325053128079ull, 7006045879870583072ull}}, {{15486974346718807969ull, 10867278936902507047ull, 5696026656316410099ull, 8757557349838228840ull}}, {{16596887994340336837ull, 4486206326350372952ull, 3560016660197756312ull, 5473473343648893025ull}}, {{2299365919215869430ull, 5607757907937966191ull, 9061706843674583294ull, 6841841679561116281ull}}, {{16709265454302000499ull, 16233069421777233546ull, 15938819573020617021ull, 8552302099451395351ull}}, {{15054976927366138216ull, 12451511397824464918ull, 16879291260778967494ull, 5345188812157122094ull}}, {{9595349122352896962ull, 6341017210425805340ull, 11875742039118933560ull, 6681486015196402618ull}}, {{11994186402941121202ull, 7926271513032256675ull, 5621305512043891142ull, 8351857518995503273ull}}, {{5190523492624506800ull, 342233677217772518ull, 15042530991095901724ull, 5219910949372189545ull}}, {{15711526402635409307ull, 427792096522215647ull, 4968105683587713443ull, 6524888686715236932ull}}, {{15027721984866873730ull, 14369798175934933271ull, 6210132104484641803ull, 8156110858394046165ull}}, {{16309855268182877938ull, 6675280850745639342ull, 6187175574516595079ull, 5097569286496278853ull}}, {{11163947048373821614ull, 3732415045004661274ull, 12345655486573131753ull, 6371961608120348566ull}}, {{4731561773612501209ull, 9277204824683214497ull, 6208697321361638883ull, 7964952010150435708ull}}, {{14486441154576283016ull, 3492410006213315108ull, 13103807862705800110ull, 4978095006344022317ull}}, {{18108051443220353770ull, 13588884544621419693ull, 2544701773100086425ull, 6222618757930027897ull}}, {{8800006248743278500ull, 3151047625494610905ull, 7792563234802495936ull, 7778273447412534871ull}}, {{17029218951533018823ull, 1969404765934131815ull, 11787881049392641816ull, 4861420904632834294ull}}, {{16674837670988885624ull, 2461755957417664769ull, 5511479274886026462ull, 6076776130791042868ull}}, {{7008489033453943318ull, 12300566983626856770ull, 6889349093607533077ull, 7595970163488803585ull}}, {{8991991664336102478ull, 9993697373980479433ull, 15835058229573177933ull, 4747481352180502240ull}}, {{15851675598847516001ull, 17103807735902987195ull, 1347078713256920800ull, 5934351690225627801ull}}, {{15202908480132007098ull, 2933015596169182378ull, 6295534409998538905ull, 7417939612782034751ull}}, {{14113503818509892340ull, 13362349793674208746ull, 10852238033890168671ull, 4636212257988771719ull}}, {{8418507736282589617ull, 12091251223665373029ull, 8953611523935322935ull, 5795265322485964649ull}}, {{15134820688780624925ull, 10502378011154328382ull, 15803700423346541573ull, 7244081653107455811ull}}, {{9695153824121005349ull, 17739658532370298382ull, 15142939510755789062ull, 9055102066384319764ull}}, {{1447785121648240439ull, 6475600564304048585ull, 240965157367592356ull, 5659438791490199853ull}}, {{6421417420487688453ull, 8094500705380060731ull, 4912892465136878349ull, 7074298489362749816ull}}, {{3415085757182222662ull, 14729811900152463818ull, 6141115581421097936ull, 8842873111703437270ull}}, {{6746114616666277068ull, 9206132437595289886ull, 17673255293670349922ull, 5526795694814648293ull}}, {{17656015307687622143ull, 2284293510139336549ull, 8256511061805773691ull, 6908494618518310367ull}}, {{8234961079327363966ull, 16690424942956334399ull, 5708952808829829209ull, 8635618273147887959ull}}, {{12064379702220684335ull, 3513986561706627143ull, 10485624533159725112ull, 5397261420717429974ull}}, {{10468788609348467515ull, 4392483202133283929ull, 3883658629594880582ull, 6746576775896787468ull}}, {{17697671780112972297ull, 14713976039521380719ull, 4854573286993600727ull, 8433220969870984335ull}}, {{17978573890211689542ull, 16113764052341944805ull, 9951637332012082310ull, 5270763106169365209ull}}, {{8638159307482448215ull, 10918833028572655199ull, 17051232683442490792ull, 6588453882711706511ull}}, {{6186013115925672365ull, 13648541285715818999ull, 16702354835875725586ull, 8235567353389633139ull}}, {{10783787225094627084ull, 13142024321999774778ull, 8133128763208634539ull, 5147229595868520712ull}}, {{4256361994513508047ull, 11815844384072330569ull, 10166410954010793174ull, 6434036994835650890ull}}, {{9932138511569272963ull, 5546433443235637403ull, 3484641655658715660ull, 8042546243544563613ull}}, {{3901743560517101650ull, 12689892938877049185ull, 4483744044000391239ull, 5026591402215352258ull}}, {{9488865469073764966ull, 11250680155168923577ull, 14828052091855264857ull, 6283239252769190322ull}}, {{16472767854769594112ull, 228292138678990759ull, 9311693077964305264ull, 7854049065961487903ull}}, {{17213008936872078176ull, 142682586674369224ull, 12737337201368772646ull, 4908780666225929939ull}}, {{3069517097380546104ull, 9401725270197737339ull, 11309985483283577903ull, 6135975832782412424ull}}, {{17671954427007846342ull, 7140470569319783769ull, 14137481854104472379ull, 7669969790978015530ull}}, {{4127442489238822108ull, 2156951096611170904ull, 13447612177242683141ull, 4793731119361259706ull}}, {{5159303111548527635ull, 7307874889191351534ull, 7586143184698578118ull, 5992163899201574633ull}}, {{15672500926290435351ull, 18358215648343965225ull, 14094364999300610551ull, 7490204874001968291ull}}, {{2877784051290440239ull, 18391413807856060122ull, 6503135115349187642ull, 4681378046251230182ull}}, {{12820602100967826106ull, 13765895222965299344ull, 17352290931041260361ull, 5851722557814037727ull}}, {{16025752626209782633ull, 3372310973424460468ull, 17078677645374187548ull, 7314653197267547159ull}}, {{1585446709052676675ull, 4215388716780575586ull, 16736661038290346531ull, 9143316496584433949ull}}, {{5602590211585310826ull, 328774938774165789ull, 12766256158145160534ull, 5714572810365271218ull}}, {{11614923782909026436ull, 9634340710322483044ull, 6734448160826674859ull, 7143216012956589023ull}}, {{14518654728636283045ull, 7431239869475715901ull, 3806374182605955670ull, 8929020016195736279ull}}, {{11380002214611370855ull, 32838899994934534ull, 9296512891769804150ull, 5580637510122335174ull}}, {{5001630731409437761ull, 9264420661848443976ull, 2397269077857479379ull, 6975796887652918968ull}}, {{6252038414261797201ull, 6968839808883167066ull, 2996586347321849224ull, 8719746109566148710ull}}, {{8519210027341011155ull, 4355524880551979416ull, 15707924522358319477ull, 5449841318478842943ull}}, {{10649012534176263944ull, 10056092119117362174ull, 15023219634520511442ull, 6812301648098553679ull}}, {{4087893630865554121ull, 3346743112041926910ull, 14167338524723251399ull, 8515377060123192099ull}}, {{16389991574573135038ull, 9009243472667286174ull, 6548743568738338172ull, 5322110662576995062ull}}, {{11264117431361642989ull, 11261554340834107718ull, 17409301497777698523ull, 6652638328221243827ull}}, {{4856774752347277929ull, 9465256907615246744ull, 17149940853794735250ull, 8315797910276554784ull}}, {{3035484220217048706ull, 10527471585686917119ull, 10718713033621709531ull, 5197373693922846740ull}}, {{17629413330553474594ull, 8547653463681258494ull, 13398391292027136914ull, 6496717117403558425ull}}, {{12813394626337067434ull, 1461194792746797310ull, 2912931059751757431ull, 8120896396754448032ull}}, {{3396685623033279243ull, 7830775773107830175ull, 1820581912344848394ull, 5075560247971530020ull}}, {{18080915084073762765ull, 565097679530011910ull, 2275727390431060493ull, 6344450309964412525ull}}, {{13377771818237427648ull, 5318058117839902792ull, 7456345256466213520ull, 7930562887455515656ull}}, {{8361107386398392280ull, 3323786323649939245ull, 4660215785291383450ull, 4956601804659697285ull}}, {{15063070251425378254ull, 13378104941417199864ull, 10436955750041617216ull, 6195752255824621606ull}}, {{382093740572171202ull, 16722631176771499831ull, 3822822650697245712ull, 7744690319780777008ull}}, {{7156337615498688857ull, 10451644485482187394ull, 2389264156685778570ull, 4840431449862985630ull}}, {{18168794056228136880ull, 3841183569997958434ull, 12209952232711999021ull, 6050539312328732037ull}}, {{13487620533430395291ull, 9413165480924835947ull, 1427382235607835064ull, 7563174140410915047ull}}, {{6123919824180303105ull, 5883228425578022467ull, 7809642924895978771ull, 4726983837756821904ull}}, {{3043213761797990977ull, 2742349513545140180ull, 9762053656119973464ull, 5908729797196027380ull}}, {{3804017202247488722ull, 3427936891931425225ull, 12202567070149966830ull, 7385912246495034225ull}}, {{13906725797473150211ull, 15977518612739304477ull, 709075391202647412ull, 4616195154059396391ull}}, {{3548349191559274052ull, 1525154192214578981ull, 14721402294285472978ull, 5770243942574245488ull}}, {{9047122507876480469ull, 11129814777122999534ull, 18401752867856841222ull, 7212804928217806860ull}}, {{2085531097990824778ull, 4688896434548973610ull, 4555447011111499912ull, 9016006160272258576ull}}, {{5915142954671653390ull, 2930560271593108506ull, 2847154381944687445ull, 5635003850170161610ull}}, {{16617300730194342546ull, 8274886357918773536ull, 12782315014285635114ull, 7043754812712702012ull}}, {{2324881839033376566ull, 1120235910543691113ull, 15977893767857043893ull, 8804693515890877515ull}}, {{12982266195464330114ull, 3005990453303500897ull, 7680340595696958481ull, 5502933447431798447ull}}, {{2392774689048248930ull, 8369174085056764026ull, 4988739726193810197ull, 6878666809289748059ull}}, {{12214340398165086971ull, 15073153624748342936ull, 1624238639314874842ull, 8598333511612185074ull}}, {{7633962748853179357ull, 14032407033895102239ull, 5626835167999184680ull, 5373958444757615671ull}}, {{4930767417639086292ull, 17540508792368877799ull, 2421857941571592946ull, 6717448055947019589ull}}, {{1551773253621469961ull, 12702263953606321441ull, 7639008445391879087ull, 8396810069933774486ull}}, {{12499073329581888486ull, 14856443998645032756ull, 162694259942536525ull, 5248006293708609054ull}}, {{15623841661977360607ull, 4735496943024127233ull, 9426739861782946465ull, 6560007867135761317ull}}, {{5694744022189537047ull, 10531057197207546946ull, 16395110845656070985ull, 8200009833919701646ull}}, {{8170901032295848558ull, 18111125794323186601ull, 5635258260107656461ull, 5125006146199813529ull}}, {{14825312308797198602ull, 8803849187621819539ull, 11655758843561958481ull, 6406257682749766911ull}}, {{13919954367569110348ull, 15616497502954662328ull, 9958012536025060197ull, 8007822103437208639ull}}, {{8699971479730693968ull, 12066153948560357907ull, 13141286862656744479ull, 5004888814648255399ull}}, {{6263278331235979556ull, 10471006417273059480ull, 11814922559893542695ull, 6256111018310319249ull}}, {{7829097914044974444ull, 8477072003163936446ull, 933595144584764657ull, 7820138772887899062ull}}, {{281500177850721124ull, 16827385048045930039ull, 14418555020647641622ull, 4887586733054936913ull}}, {{14186933277595565117ull, 11810859273202636740ull, 4188135720527388316ull, 6109483416318671142ull}}, {{17733666596994456396ull, 14763574091503295925ull, 14458541687514011203ull, 7636854270398338927ull}}, {{13389384632335229200ull, 6921390797975866001ull, 15954117582337338858ull, 4773033918998961829ull}}, {{2901672735136872787ull, 17875110534324608310ull, 6107588922639509860ull, 5966292398748702287ull}}, {{12850462955775866792ull, 3897144094196208771ull, 3022800134871999422ull, 7457865498435877859ull}}, {{5725696338146222793ull, 16270773114154794194ull, 18030151148790857302ull, 4661165936522423661ull}}, {{16380492459537554299ull, 11115094355838716934ull, 8702630880706407916ull, 5826457420653029577ull}}, {{11252243537567167066ull, 13893867944798396168ull, 15489974619310397799ull, 7283071775816286971ull}}, {{14065304421958958833ull, 12755648912570607306ull, 14750782255710609345ull, 9103839719770358714ull}}, {{13402501282151737175ull, 1054751542715547710ull, 13830924928246518745ull, 5689899824856474196ull}}, {{7529754565834895660ull, 5930125446821822542ull, 17288656160308148431ull, 7112374781070592745ull}}, {{188821170438843767ull, 2800970790099890274ull, 7775762145103021827ull, 8890468476338240932ull}}, {{4729699249951665259ull, 17891507808308289085ull, 14083223377544164449ull, 5556542797711400582ull}}, {{10523810080866969477ull, 8529326705103197644ull, 8380657185075429754ull, 6945678497139250728ull}}, {{13154762601083711846ull, 1438286344524221247ull, 10475821481344287193ull, 8682098121424063410ull}}, {{15139255653318401760ull, 12428144011396108039ull, 11159074444267567399ull, 5426311325890039631ull}}, {{14312383548220614296ull, 10923493995817747145ull, 9337157036907071345ull, 6782889157362549539ull}}, {{4055421379993604158ull, 18266053513199571836ull, 7059760277706451277ull, 8478611446703186924ull}}, {{11758010399350778407ull, 13722126454963426349ull, 13635722210421307856ull, 5299132154189491827ull}}, {{862454943906309296ull, 17152658068704282937ull, 12432966744599246916ull, 6623915192736864784ull}}, {{5689754698310274524ull, 2994078512170802055ull, 15541208430749058646ull, 8279893990921080980ull}}, {{10473625714085003434ull, 15706357125388914996ull, 489883232363385845ull, 5174933744325675613ull}}, {{13092032142606254292ull, 5797888351453980033ull, 5224040058881620211ull, 6468667180407094516ull}}, {{2529982122975654153ull, 2635674420890087138ull, 6530050073602025264ull, 8085833975508868145ull}}, {{6192924845287171750ull, 1647296513056304461ull, 15610496342069735550ull, 5053646234693042590ull}}, {{12352842075036352591ull, 11282492678175156384ull, 10289748390732393629ull, 6317057793366303238ull}}, {{15441052593795440739ull, 268057792436781768ull, 3638813451560716229ull, 7896322241707879048ull}}, {{9650657871122150462ull, 2473379129486682557ull, 2274258407225447643ull, 4935201401067424405ull}}, {{16675008357330075982ull, 16926781967140516908ull, 7454509027459197457ull, 6169001751334280506ull}}, {{2397016372953043361ull, 7323419403643482424ull, 94764247469221014ull, 7711252189167850633ull}}, {{1498135233095652101ull, 18412195182559340227ull, 11588442700736732893ull, 4819532618229906645ull}}, {{15707727096651728838ull, 9180185922917011571ull, 650495320638752405ull, 6024415772787383307ull}}, {{15022972852387273143ull, 16086918422073652368ull, 14648177206080604218ull, 7530519715984229133ull}}, {{9389358032742045715ull, 14666010032223420634ull, 11460953763014071588ull, 4706574822490143208ull}}, {{2513325504072781335ull, 18332512540279275793ull, 14326192203767589485ull, 5883218528112679010ull}}, {{7753342898518364573ull, 9080582620066931029ull, 8684368217854711049ull, 7354023160140848763ull}}, {{14303364641575343620ull, 15962414293511051690ull, 6243774253891000907ull, 9192528950176060954ull}}, {{13551288919411977667ull, 7670665924230713354ull, 8514044927109263471ull, 5745330593860038096ull}}, {{7715739112410196275ull, 4976646386861003789ull, 10642556158886579339ull, 7181663242325047620ull}}, {{14256359908940133248ull, 1609121965148866832ull, 13303195198608224174ull, 8977079052906309525ull}}, {{8910224943087583280ull, 14840759283500205482ull, 10620340008343834060ull, 5610674408066443453ull}}, {{1914409142004703292ull, 104205030665705237ull, 17887111028857180480ull, 7013343010083054316ull}}, {{7004697445933267019ull, 130256288332131546ull, 3912144712361923984ull, 8766678762603817896ull}}, {{8989621922135679791ull, 81410180207582216ull, 2445090445226202490ull, 5479174226627386185ull}}, {{11237027402669599738ull, 9325134762114253578ull, 7668049074960141016ull, 6848967783284232731ull}}, {{4822912216482223865ull, 11656418452642816973ull, 4973375325272788366ull, 8561209729105290914ull}}, {{5320163144515083868ull, 2673575514474372704ull, 7720045596722880633ull, 5350756080690806821ull}}, {{6650203930643854835ull, 7953655411520353784ull, 14261743014330988695ull, 6688445100863508526ull}}, {{8312754913304818543ull, 5330383245973054326ull, 8603806731058960061ull, 8360556376079385658ull}}, {{583785802388123686ull, 5637332537946852906ull, 9989065225339237942ull, 5225347735049616036ull}}, {{9953104289839930415ull, 16270037709288341940ull, 12486331531674047427ull, 6531684668812020045ull}}, {{12441380362299913019ull, 15725861118183039521ull, 1772856359310395572ull, 8164605836015025057ull}}, {{858333698796363781ull, 605291162009623893ull, 12637250270637466993ull, 5102878647509390660ull}}, {{5684603141922842630ull, 5368299970939417770ull, 15796562838296833741ull, 6378598309386738325ull}}, {{16329125964258329095ull, 11322060982101660116ull, 5910645492588878464ull, 7973247886733422907ull}}, {{982331690806679877ull, 7076288113813537573ull, 1388310423654355088ull, 4983279929208389317ull}}, {{5839600631935737750ull, 8845360142266921966ull, 6347074047995331764ull, 6229099911510486646ull}}, {{16522872826774447995ull, 11056700177833652457ull, 17157214596848940513ull, 7786374889388108307ull}}, {{3409266489092948141ull, 18439652657214502546ull, 8417416113816893868ull, 4866484305867567692ull}}, {{13484955148220960984ull, 4602821747808576566ull, 10521770142271117336ull, 6083105382334459615ull}}, {{7632821898421425422ull, 5753527184760720708ull, 8540526659411508766ull, 7603881727918074519ull}}, {{13993885723368166697ull, 17431012545757614154ull, 12255358189773274834ull, 4752426079948796574ull}}, {{8268985117355432563ull, 12565393645342241885ull, 6095825700361817735ull, 5940532599935995718ull}}, {{14947917415121678608ull, 11095056038250414452ull, 16843154162307047977ull, 7425665749919994647ull}}, {{119076347596273322ull, 16880996265427177ull, 17444500379082986842ull, 4641041093699996654ull}}, {{4760531452922729557ull, 9244473282186559779ull, 12582253436998957744ull, 5801301367124995818ull}}, {{1338978297726024042ull, 11555591602733199724ull, 6504444759393921372ull, 7251626708906244773ull}}, {{1673722872157530052ull, 14444489503416499655ull, 12742241967669789619ull, 9064533386132805966ull}}, {{7963605822739538139ull, 6721962930421618332ull, 3352215211366230608ull, 5665333366333003729ull}}, {{9954507278424422673ull, 8402453663027022915ull, 8801955032635176164ull, 7081666707916254661ull}}, {{7831448079603140437ull, 10503067078783778644ull, 15614129809221358109ull, 8852083384895318326ull}}, {{14118027086606738581ull, 8870259933453555604ull, 5147145112335960914ull, 5532552115559573954ull}}, {{17647533858258423227ull, 1864452879962168697ull, 15657303427274726951ull, 6915690144449467442ull}}, {{8224359267540865321ull, 16165624155234874584ull, 10348257247238632880ull, 8644612680561834303ull}}, {{5140224542213040826ull, 10103515097021796615ull, 13385189807165227406ull, 5402882925351146439ull}}, {{1813594659338913128ull, 3406021834422469961ull, 12119801240529146354ull, 6753603656688933049ull}}, {{6878679342601029314ull, 13480899329882863259ull, 1314693495379269230ull, 8442004570861166312ull}}, {{1993331579911949370ull, 3813876062749401633ull, 821683434612043269ull, 5276252856788228945ull}}, {{7103350493317324616ull, 9379031096864139945ull, 5638790311692441990ull, 6595316070985286181ull}}, {{13490874135074043674ull, 2500416834225399123ull, 11660173908042940392ull, 8244145088731607726ull}}, {{6125953325207583344ull, 1562760521390874452ull, 2675922674099449841ull, 5152590680457254829ull}}, {{7657441656509479180ull, 6565136670165980969ull, 7956589361051700205ull, 6440738350571568536ull}}, {{14183488089064236879ull, 12818106856134864115ull, 9945736701314625256ull, 8050922938214460670ull}}, {{6558837046451454098ull, 8011316785084290072ull, 1604399419894252881ull, 5031826836384037919ull}}, {{8198546308064317622ull, 14625831999782750494ull, 15840557330149979813ull, 6289783545480047398ull}}, {{1024810848225621219ull, 4447231944446274406ull, 10577324625832698959ull, 7862229431850059248ull}}, {{14475564835423176974ull, 9697048992920003359ull, 6610827891145436849ull, 4913893394906287030ull}}, {{13482770025851583314ull, 16732997259577392103ull, 17486906900786571869ull, 6142366743632858787ull}}, {{12241776513887091238ull, 7081188519189576417ull, 17246947607555826933ull, 7677958429541073484ull}}, {{733581293538350168ull, 6731585833707179213ull, 1555970217867616025ull, 4798724018463170928ull}}, {{5528662635350325614ull, 13026168310561361920ull, 1944962772334520031ull, 5998405023078963660ull}}, {{6910828294187907017ull, 11671024369774314496ull, 2431203465418150039ull, 7498006278848704575ull}}, {{4319267683867441886ull, 14211919258750028416ull, 8437031193527425630ull, 4686253924280440359ull}}, {{5399084604834302357ull, 8541527036582759712ull, 5934602973481894134ull, 5857817405350550449ull}}, {{6748855756042877946ull, 1453536758873673832ull, 12029939735279755572ull, 7322271756688188061ull}}, {{8436069695053597433ull, 1816920948592092290ull, 1202366613817530753ull, 9152839695860235077ull}}, {{9884229577835886300ull, 12664790638938527441ull, 3057322142849650672ull, 5720524809912646923ull}}, {{16966972990722245779ull, 15830988298673159301ull, 17656710733844227052ull, 7150656012390808653ull}}, {{7373658183120643511ull, 1341991299631897511ull, 8235830362023120104ull, 8938320015488510817ull}}, {{11526065392091484051ull, 838744562269935944ull, 16676609022332919825ull, 5586450009680319260ull}}, {{14407581740114355063ull, 5660116721264807834ull, 2399017204206598165ull, 6983062512100399076ull}}, {{8786105138288168021ull, 11686831920008397697ull, 2998771505258247706ull, 8728828140125498845ull}}, {{17020530757498574773ull, 11915955968432636464ull, 4180075200000098768ull, 5455517587578436778ull}}, {{2828919373163666850ull, 14894944960540795581ull, 14448466036854899268ull, 6819396984473045972ull}}, {{8147835234881971467ull, 171937126966442860ull, 18060582546068624086ull, 8524246230591307465ull}}, {{14315769058656007975ull, 13942518759636190499ull, 4370335063651808197ull, 5327653894119567166ull}}, {{13283025304892622065ull, 3593090394263074412ull, 14686290866419536055ull, 6659567367649458957ull}}, {{16603781631115777581ull, 18326421048111006727ull, 4522805527742256356ull, 8324459209561823697ull}}, {{17294892547088442844ull, 2230641118214603396ull, 14355968500907379983ull, 5202787005976139810ull}}, {{3171871610151001939ull, 16623359453050417958ull, 8721588589279449170ull, 6503483757470174763ull}}, {{13188211549543528231ull, 11555827279458246639ull, 6290299718171923559ull, 8129354696837718454ull}}, {{15160161246105787001ull, 14139921077302486005ull, 17766495379139615936ull, 5080846685523574033ull}}, {{5115143502350070039ull, 17674901346628107507ull, 8373061168642356208ull, 6351058356904467542ull}}, {{1782243359510199645ull, 3646882609575582768ull, 1242954423948169453ull, 7938822946130584428ull}}, {{1113902099693874778ull, 4585144640198433182ull, 10000218551822381716ull, 4961764341331615267ull}}, {{10615749661472119280ull, 5731430800248041477ull, 7888587171350589241ull, 6202205426664519084ull}}, {{17881373095267537004ull, 11775974518737439750ull, 9860733964188236551ull, 7752756783330648855ull}}, {{6564172166114822724ull, 14277513101851981700ull, 13080487755258729700ull, 4845472989581655534ull}}, {{8205215207643528405ull, 17846891377314977125ull, 7127237657218636317ull, 6056841236977069418ull}}, {{14868205027981798410ull, 8473556166361557694ull, 18132419108378071205ull, 7571051546221336772ull}}, {{4680942124061236102ull, 7601815613189667511ull, 2109389905881518695ull, 4731907216388335483ull}}, {{1239491636649157224ull, 4890583498059696485ull, 16471795437634062081ull, 5914884020485419353ull}}, {{6161050564238834434ull, 10724915391002008510ull, 6754686241760413889ull, 7393605025606774192ull}}, {{17685714657931435233ull, 18232287165444725078ull, 4221678901100258680ull, 4621003141004233870ull}}, {{12883771285559518233ull, 4343614883096354732ull, 14500470663230099159ull, 5776253926255292337ull}}, {{16104714106949397792ull, 817832585443055511ull, 4290530273755460237ull, 7220317407819115422ull}}, {{15519206615259359335ull, 5633976750231207293ull, 14586534879049101104ull, 9025396759773894277ull}}, {{12005347143750793537ull, 3521235468894504558ull, 11422427308619382142ull, 5640872974858683923ull}}, {{5783311892833716113ull, 13624916372972906506ull, 9666348117346839773ull, 7051091218573354904ull}}, {{16452511902896920949ull, 3196087410933969420ull, 12082935146683549717ull, 8813864023216693630ull}}, {{1059447902455799785ull, 4303397641047424840ull, 2940148448249830669ull, 5508665014510433519ull}}, {{1324309878069749732ull, 9990933069736668954ull, 17510243615594452048ull, 6885831268138041898ull}}, {{10878759384441962972ull, 12488666337170836192ull, 12664432482638289252ull, 8607289085172552373ull}}, {{6799224615276226858ull, 17028788497586548428ull, 10221113310862624734ull, 5379555678232845233ull}}, {{8499030769095283572ull, 12062613585128409727ull, 17388077657005668822ull, 6724444597791056541ull}}, {{6012102442941716561ull, 5854894944555736351ull, 7900039015974922316ull, 8405555747238820677ull}}, {{10675093054479654707ull, 12882681377202111027ull, 7243367394198020399ull, 5253472342024262923ull}}, {{8732180299672180479ull, 11491665703075250880ull, 4442523224320137595ull, 6566840427530328654ull}}, {{10915225374590225599ull, 9752896110416675696ull, 14776526067254947802ull, 8208550534412910817ull}}, {{6822015859118891000ull, 10707246087437810214ull, 2317799764393260520ull, 5130344084008069261ull}}, {{17750891860753389558ull, 13384057609297262767ull, 7508935723918963554ull, 6412930105010086576ull}}, {{17576928807514349043ull, 7506699974766802651ull, 9386169654898704443ull, 8016162631262608220ull}}, {{8679737495482774200ull, 2385844475015557705ull, 15089728071166466085ull, 5010101644539130137ull}}, {{15461357887780855654ull, 7593991612196835035ull, 5027102033675918894ull, 6262627055673912672ull}}, {{14715011341298681663ull, 269117478391267986ull, 6283877542094898618ull, 7828283819592390840ull}}, {{13808568106739063944ull, 4779884442421930395ull, 3927423463809311636ull, 4892677387245244275ull}}, {{12649024114996442025ull, 5974855553027412994ull, 297593311334251641ull, 6115846734056555344ull}}, {{6587908106890776724ull, 12080255459711654147ull, 371991639167814551ull, 7644808417570694180ull}}, {{1811599557593041500ull, 14467688689960865698ull, 9455866811334659902ull, 4778005260981683862ull}}, {{11487871483846077683ull, 8861238825596306314ull, 2596461477313549070ull, 5972506576227104828ull}}, {{5136467317952821296ull, 1853176495140607085ull, 3245576846641936338ull, 7465633220283881035ull}}, {{5516135082934207262ull, 5769921327890267332ull, 18169386593647067875ull, 4666020762677425646ull}}, {{6895168853667759078ull, 2600715641435446261ull, 13488361205204059036ull, 5832525953346782058ull}}, {{13230647085512086751ull, 3250894551794307826ull, 7637079469650297987ull, 7290657441683477573ull}}, {{7314936820035332631ull, 17898676245025048495ull, 14158035355490260387ull, 9113321802104346966ull}}, {{11489364540163164750ull, 8880829643926961357ull, 4237086078754024838ull, 5695826126315216854ull}}, {{526647619921792226ull, 1877665018053925889ull, 14519729635297306856ull, 7119782657894021067ull}}, {{5269995543329628186ull, 2347081272567407361ull, 13537976025694245666ull, 8899728322367526334ull}}, {{14822962260649487377ull, 6078611813782017504ull, 3849548997631515637ull, 5562330201479703959ull}}, {{81958752102307605ull, 12209950785654909785ull, 200250228612006642ull, 6952912751849629949ull}}, {{4714134458555272410ull, 6039066445213861423ull, 4861998804192396207ull, 8691140939812037436ull}}, {{9863863064238127112ull, 10691945555899745245ull, 12262121289475023437ull, 5431963087382523397ull}}, {{16941514848725046794ull, 17976617963302069460ull, 1492593556561615584ull, 6789953859228154247ull}}, {{2730149487196756876ull, 4024028380418035210ull, 15700800000984183193ull, 8487442324035192808ull}}, {{6318029447925360952ull, 14044232783829741766ull, 9813000000615114495ull, 5304651452521995505ull}}, {{17120908846761476998ull, 12943604961359789303ull, 16877936019196281023ull, 6630814315652494381ull}}, {{16789450040024458343ull, 11567820183272348725ull, 7262361968713187567ull, 8288517894565617977ull}}, {{12799249284228980417ull, 14147416642186299809ull, 16068191276514211989ull, 5180323684103511235ull}}, {{2164003550004061809ull, 3849212747450711050ull, 15473553077215377083ull, 6475404605129389044ull}}, {{11928376474359853069ull, 199829915886000908ull, 895197272809669738ull, 8094255756411736306ull}}, {{16678607333329683976ull, 4736579715856138471ull, 5171184313933431490ull, 5058909847757335191ull}}, {{16236573148234717066ull, 15144096681674948897ull, 1852294373989401458ull, 6323637309696668989ull}}, {{6460658380011232621ull, 9706748815238910314ull, 6927053985914139727ull, 7904546637120836236ull}}, {{8649597505934408292ull, 12984247037165400802ull, 13552780778051113137ull, 4940341648200522647ull}}, {{1588624845563234557ull, 2395250741174587291ull, 12329289954136503518ull, 6175427060250653309ull}}, {{15820839112236206908ull, 12217435463323009921ull, 1576554387388465685ull, 7719283825313316637ull}}, {{2970495417506547462ull, 9941740173790575153ull, 3291189501331485005ull, 4824552390820822898ull}}, {{8324805290310572231ull, 17038861235665606845ull, 13337358913519132064ull, 6030690488526028622ull}}, {{15017692631315603193ull, 2851832470872456940ull, 7448326605044139273ull, 7538363110657535778ull}}, {{162685857717476188ull, 13311610340363755348ull, 9266890146579974949ull, 4711476944160959861ull}}, {{203357322146845234ull, 2804454870172530473ull, 16195298701652356591ull, 5889346180201199826ull}}, {{4865882671110944447ull, 17340626642997826803ull, 11020751340210669930ull, 7361682725251499783ull}}, {{1470667320461292654ull, 12452411266892507696ull, 9164253156835949509ull, 9202103406564374729ull}}, {{919167075288307909ull, 10088600051021511262ull, 17256873269090938203ull, 5751314629102734205ull}}, {{10372330880965160694ull, 7999064045349501173ull, 7736033531081509042ull, 7189143286378417757ull}}, {{17577099619633838772ull, 775458019832100658ull, 14281727932279274207ull, 8986429107973022196ull}}, {{15597373280698537137ull, 7402190290036144767ull, 18149451994529322187ull, 5616518192483138872ull}}, {{14885030582445783517ull, 4641051844117793055ull, 4240070919452101118ull, 7020647740603923591ull}}, {{13994602209629841492ull, 15024686842002017127ull, 688402630887738493ull, 8775809675754904489ull}}, {{15664155408659732788ull, 11696272285464954656ull, 11959466690373306318ull, 5484881047346815305ull}}, {{1133450187115114369ull, 5396968319976417513ull, 1114275307684469186ull, 6856101309183519132ull}}, {{6028498752321280866ull, 15969582436825297699ull, 1392844134605586482ull, 8570126636479398915ull}}, {{1461968710987106589ull, 14592675041443198966ull, 17011428648624349215ull, 5356329147799624321ull}}, {{11050832925588659044ull, 13629157783376610803ull, 7429227755498272807ull, 6695411434749530402ull}}, {{9201855138558435901ull, 12424761210793375600ull, 63162657518065201ull, 8369264293436913003ull}}, {{5751159461599022439ull, 847946729104777894ull, 16180377725444648415ull, 5230790183398070626ull}}, {{16412321363853553856ull, 14894991466663136079ull, 11002100119951034710ull, 6538487729247588283ull}}, {{15903715686389554416ull, 9395367296474144291ull, 9140939131511405484ull, 8173109661559485354ull}}, {{7633979294779777558ull, 15095476597151115990ull, 10324772975622016331ull, 5108193538474678346ull}}, {{319102081619946140ull, 14257659728011507084ull, 3682594182672744606ull, 6385241923093347933ull}}, {{398877602024932674ull, 8598702623159608047ull, 9214928746768318662ull, 7981552403866684916ull}}, {{7166827528906664778ull, 762503121047367125ull, 14982702503584974972ull, 4988470252416678072ull}}, {{13570220429560718876ull, 953128901309208906ull, 281634055771667099ull, 6235587815520847591ull}}, {{7739403500096122787ull, 15026469181918674845ull, 14187100624996747585ull, 7794484769401059488ull}}, {{7142970196773770694ull, 2474014211058089922ull, 8866937890622967241ull, 4871552980875662180ull}}, {{18152084782821989175ull, 7704203782250000306ull, 11083672363278709051ull, 6089441226094577725ull}}, {{13466733941672710661ull, 5018568709385112479ull, 19532398816222602ull, 7611801532618222157ull}}, {{15334237741186526019ull, 7748291461793083203ull, 2318050758473833078ull, 4757375957886388848ull}}, {{14556111158055769620ull, 461992290386578196ull, 2897563448092291348ull, 5946719947357986060ull}}, {{18195138947569712025ull, 577490362983222745ull, 3621954310115364185ull, 7433399934197482575ull}}, {{4454432814589988160ull, 11890146522932983976ull, 9181250471463184471ull, 4645874958873426609ull}}, {{5568041018237485200ull, 10250997135238842066ull, 16088249107756368493ull, 5807343698591783261ull}}, {{16183423309651632307ull, 17425432437475940486ull, 6275253329413296904ull, 7259179623239729077ull}}, {{11005907100209764576ull, 3335046473135373992ull, 12455752680194009035ull, 9073974529049661346ull}}, {{6878691937631102860ull, 18225305110205466409ull, 12396531443548643550ull, 5671234080656038341ull}}, {{13210050940466266479ull, 13558259350902057203ull, 1660606249153640726ull, 7089042600820047927ull}}, {{11900877657155445195ull, 7724452151772795696ull, 15910815866724214620ull, 8861303251025059908ull}}, {{7438048535722153247ull, 14051154631712773118ull, 720887879847858329ull, 5538314531890662443ull}}, {{74188632797915751ull, 3728885234358802686ull, 14736167905091986624ull, 6922893164863328053ull}}, {{9316107827852170496ull, 4661106542948503357ull, 4585151826082819568ull, 8653616456079160067ull}}, {{8128410401621300512ull, 2913191589342814598ull, 559876882088068278ull, 5408510285049475042ull}}, {{937140965171849832ull, 12864861523533294056ull, 9923218139464861155ull, 6760637856311843802ull}}, {{1171426206464812290ull, 11469390885989229666ull, 3180650637476300636ull, 8450797320389804753ull}}, {{5343827397467895585ull, 16391741340598044349ull, 13517121694491157657ull, 5281748325243627970ull}}, {{11291470265262257386ull, 6654618620465391724ull, 7673030081259171264ull, 6602185406554534963ull}}, {{14114337831577821732ull, 8318273275581739655ull, 4979601583146576176ull, 8252731758193168704ull}}, {{15738990172377220439ull, 5198920797238587284ull, 3112250989466610110ull, 5157957348870730440ull}}, {{1226993641761973932ull, 15722023033403009914ull, 3890313736833262637ull, 6447446686088413050ull}}, {{10757114089057243223ull, 5817470736471598680ull, 14086264207896354105ull, 8059308357610516312ull}}, {{6723196305660777015ull, 15165134256363218935ull, 8803915129935221315ull, 5037067723506572695ull}}, {{3792309363648583364ull, 14344731802026635765ull, 6393207893991638740ull, 6296334654383215869ull}}, {{9352072722988117109ull, 17930914752533294706ull, 12603195885916936329ull, 7870418317979019836ull}}, {{10456731470294961097ull, 4289292692692227335ull, 17100369465552861014ull, 4919011448736887397ull}}, {{8459228319441313468ull, 14584987902720059977ull, 7540403776658912555ull, 6148764310921109247ull}}, {{15185721417729029738ull, 13619548859972687067ull, 4813818702396252790ull, 7685955388651386559ull}}, {{7185232876866949635ull, 3900532019055541513ull, 9926165716638739850ull, 4803722117907116599ull}}, {{13593227114511074947ull, 14099037060674202699ull, 7796021127371036908ull, 6004652647383895749ull}}, {{12379847874711455780ull, 17623796325842753374ull, 14356712427641184039ull, 7505815809229869686ull}}, {{3125718903267271959ull, 17932401731292802715ull, 4361259248848352120ull, 4691134880768668554ull}}, {{17742206684366253660ull, 3968758090406451777ull, 14674946097915215959ull, 5863918600960835692ull}}, {{8342700300175653363ull, 349261594580676818ull, 18343682622394019949ull, 7329898251201044615ull}}, {{1205003338364790896ull, 5048263011653233927ull, 18317917259565137032ull, 9162372814001305769ull}}, {{7670656114119076166ull, 3155164382283271204ull, 4531169259587128789ull, 5726483008750816106ull}}, {{9588320142648845207ull, 8555641496281476909ull, 14887333611338686794ull, 7158103760938520132ull}}, {{16597086196738444413ull, 1471179833497070328ull, 162422940463806877ull, 8947629701173150166ull}}, {{10373178872961527758ull, 3225330405149362907ull, 13936572393072043010ull, 5592268563233218853ull}}, {{8354787572774521794ull, 13255035043291479442ull, 3585657436057890050ull, 6990335704041523567ull}}, {{1220112429113376434ull, 7345421767259573495ull, 18317129850354526275ull, 8737919630051904458ull}}, {{7680099295836942128ull, 2285045595323539482ull, 16059892174898966826ull, 5461199768782440286ull}}, {{376752082941401851ull, 12079679031009200161ull, 10851493181768932724ull, 6826499710978050358ull}}, {{5082626122104140218ull, 15099598788761500201ull, 4340994440356390097ull, 8533124638722562948ull}}, {{14705856372383557396ull, 2519720215334855769ull, 11936493562077519619ull, 5333202899201601842ull}}, {{4547262410197283033ull, 16984708324450733424ull, 5697244915742123715ull, 6666503624002002303ull}}, {{5684078012746603792ull, 16619199387136028876ull, 2509870126250266740ull, 8333129530002502879ull}}, {{12775920794821403178ull, 1163627580105242239ull, 8486197856547498569ull, 5208205956251564299ull}}, {{11358214975099366068ull, 6066220493558940703ull, 5996061302256985307ull, 6510257445314455374ull}}, {{9586082700446819681ull, 2971089598521287975ull, 16718448664676007442ull, 8137821806643069217ull}}, {{12908830715420344157ull, 6468617017503192888ull, 3531501387781422795ull, 5086138629151918261ull}}, {{16136038394275430196ull, 3474085253451603206ull, 9026062753154166398ull, 6357673286439897826ull}}, {{10946675955989511937ull, 13565978603669279816ull, 2059206404587932189ull, 7947091608049872283ull}}, {{6841672472493444961ull, 10784579636506993837ull, 17427905067363315282ull, 4966932255031170176ull}}, {{13163776609044194105ull, 4257352508778966488ull, 3338137260494592487ull, 6208665318788962721ull}}, {{16454720761305242631ull, 710004617546320206ull, 8784357594045628513ull, 7760831648486203401ull}}, {{5672514457388388741ull, 11972967932034919889ull, 17019438542346987580ull, 4850519780303877125ull}}, {{11702329090162873830ull, 14966209915043649861ull, 7439240122651570763ull, 6063149725379846407ull}}, {{792853307421428575ull, 14096076375377174423ull, 4687364134887075550ull, 7578937156724808009ull}}, {{7413062344779474715ull, 4198361716183346110ull, 14458817630372891979ull, 4736835722953005005ull}}, {{42955894119567586ull, 636266126801794734ull, 4238463982683951262ull, 5921044653691256257ull}}, {{9277066904504235291ull, 10018704695357019225ull, 9909765996782326981ull, 7401305817114070321ull}}, {{17327381861383616817ull, 8567533443811830967ull, 17722818794057424123ull, 4625816135696293950ull}}, {{17047541308302133117ull, 6097730786337400805ull, 12930151455717004346ull, 5782270169620367438ull}}, {{7474368580095502684ull, 16845535519776526815ull, 6939317282791479624ull, 7227837712025459298ull}}, {{4731274706691990451ull, 2610175326011106903ull, 17897518640344125339ull, 9034797140031824122ull}}, {{9874575719323575888ull, 17772260643252799478ull, 15797635168642466240ull, 5646748212519890076ull}}, {{3119847612299694052ull, 3768581730356447732ull, 1300299887093531185ull, 7058435265649862596ull}}, {{3899809515374617565ull, 9322413181372947569ull, 1625374858866913981ull, 8823044082062328245ull}}, {{13966595993177605738ull, 8132351247571786182ull, 3321702296005515190ull, 5514402551288955153ull}}, {{8234872954617231365ull, 942067022609956920ull, 8763813888434281892ull, 6893003189111193941ull}}, {{10293591193271539206ull, 1177583778262446150ull, 15566453378970240269ull, 8616253986388992426ull}}, {{1821808477367324100ull, 3041832870627722796ull, 14340719380283788072ull, 5385158741493120266ull}}, {{2277260596709155124ull, 3802291088284653495ull, 8702527188499959282ull, 6731448426866400333ull}}, {{16681633801168607617ull, 13976235897210592676ull, 15489845004052337006ull, 8414310533583000416ull}}, {{1202649088875603953ull, 4123461417329232519ull, 9681153127532710629ull, 5258944083489375260ull}}, {{15338369416376668653ull, 9766012790088928552ull, 12101441409415888286ull, 6573680104361719075ull}}, {{726217696761284200ull, 2984143950756384883ull, 10515115743342472454ull, 8217100130452148844ull}}, {{16594787124971660289ull, 15700148024504904263ull, 15795319376443821091ull, 5135687581532593027ull}}, {{16131797887787187458ull, 15013499012203742425ull, 15132463202127388460ull, 6419609476915741284ull}}, {{6329689304451820610ull, 320129691545126416ull, 468834928949683960ull, 8024511846144676606ull}}, {{3956055815282387881ull, 200081057215704010ull, 14128079885875716187ull, 5015319903840422878ull}}, {{14168441805957760660ull, 14085159376801793724ull, 8436727820489869425ull, 6269149879800528598ull}}, {{17710552257447200824ull, 3771391165720078443ull, 1322537738757560974ull, 7836437349750660748ull}}, {{8763252151690806563ull, 16192177533857212739ull, 10049958123578251416ull, 4897773343594162967ull}}, {{6342379171186120300ull, 1793477843611964308ull, 7950761636045426367ull, 6122216679492703709ull}}, {{7927973963982650375ull, 16076905359797119097ull, 14550138063484170862ull, 7652770849365879636ull}}, {{16484198773557626245ull, 5436379831445811531ull, 18317208326532382597ull, 4782981780853674772ull}}, {{15993562448519644902ull, 11407160807734652318ull, 4449766334455926630ull, 5978727226067093466ull}}, {{10768581023794780319ull, 5035578972813539590ull, 14785579954924684096ull, 7473409032583866832ull}}, {{2118677121444349796ull, 3147236858008462244ull, 9240987471827927560ull, 4670880645364916770ull}}, {{2648346401805437244ull, 3934046072510577805ull, 2327862302930133642ull, 5838600806706145963ull}}, {{7922119020684184459ull, 14140929627492998064ull, 16744885933944830764ull, 7298251008382682453ull}}, {{9902648775855230574ull, 17676162034366247580ull, 7096049362148874743ull, 9122813760478353067ull}}, {{15412527521764294917ull, 17965130299119986593ull, 2129187842129352762ull, 5701758600298970667ull}}, {{5430601346923204934ull, 13233040837045207434ull, 16496542857943854665ull, 7127198250373713333ull}}, {{16011623720508781975ull, 2706242991024345580ull, 6785620517147654620ull, 8908997812967141667ull}}, {{783892788463212927ull, 10914773906244991796ull, 1935169814003590185ull, 5568123633104463542ull}}, {{979865985579016158ull, 18255153401233627649ull, 11642334304359263539ull, 6960154541380579427ull}}, {{5836518500401158102ull, 18207255733114646657ull, 9941231862021691520ull, 8700193176725724284ull}}, {{15177039108819193574ull, 11379534833196654160ull, 15436641950618333008ull, 5437620735453577677ull}}, {{524554812314440351ull, 14224418541495817701ull, 5460744382990752548ull, 6797025919316972097ull}}, {{5267379533820438343ull, 17780523176869772126ull, 11437616497165828589ull, 8496282399146215121ull}}, {{17127170263919937677ull, 13418669994757301530ull, 230981283087561012ull, 5310176499466384451ull}}, {{12185590793045146288ull, 16773337493446626913ull, 14123784659141614977ull, 6637720624332980563ull}}, {{1396930436024269147ull, 7131613811526119930ull, 13043044805499630818ull, 8297150780416225704ull}}, {{5484767540942556121ull, 9068944650631212860ull, 8151903003437269261ull, 5185719237760141065ull}}, {{6855959426178195151ull, 15947866831716403979ull, 14801564772723974480ull, 6482149047200176331ull}}, {{3958263264295356035ull, 1488089465935953358ull, 13890269947477580197ull, 8102686309000220414ull}}, {{16308972595466761234ull, 3235898925423664800ull, 4069732698746099719ull, 5064178943125137759ull}}, {{1939471670623899927ull, 17879931712061744713ull, 475479855005236744ull, 6330223678906422199ull}}, {{7036025606707262812ull, 3903170566367629275ull, 14429407874038709643ull, 7912779598633027748ull}}, {{2091672994978345306ull, 133638594766074345ull, 18241751958128969335ull, 4945487249145642342ull}}, {{7226277262150319536ull, 14002106298739756643ull, 13578817910806435860ull, 6181859061432052928ull}}, {{4421160559260511516ull, 17502632873424695804ull, 16973522388508044825ull, 7727323826790066160ull}}, {{11986597386392595506ull, 4021616518249353021ull, 10608451492817528016ull, 4829577391743791350ull}}, {{1148188677708580670ull, 5027020647811691277ull, 4037192329167134212ull, 6036971739679739188ull}}, {{6046921865563113741ull, 6283775809764614096ull, 5046490411458917765ull, 7546214674599673985ull}}, {{3779326165976946088ull, 6233202890316577762ull, 14683271553230293363ull, 4716384171624796240ull}}, {{13947529744325958418ull, 3179817594468334298ull, 18354089441537866704ull, 5895480214530995300ull}}, {{8211040143552672215ull, 3974771993085417873ull, 4495867728212781764ull, 7369350268163744126ull}}, {{14875486197868228173ull, 4968464991356772341ull, 14843206697120753013ull, 9211687835204680157ull}}, {{11603021882881336560ull, 5411133628811676665ull, 11582847194914164585ull, 5757304897002925098ull}}, {{668719298319506988ull, 11375603054441983736ull, 5255186956787929923ull, 7196631121253656373ull}}, {{835899122899383735ull, 9607817799625091766ull, 11180669714412300308ull, 8995788901567070466ull}}, {{14357495007094278546ull, 15228258161620458161ull, 11599604589935075596ull, 5622368063479419041ull}}, {{4111810703585684471ull, 588578628316021086ull, 664447682136680784ull, 7027960079349273802ull}}, {{14363135416336881397ull, 735723285395026357ull, 10053931639525626788ull, 8784950099186592252ull}}, {{11282802644424244825ull, 9683199090226667281ull, 15507079311558292550ull, 5490593811991620157ull}}, {{268445250248142319ull, 2880626825928558294ull, 5548791084165701976ull, 6863242264989525197ull}}, {{9558928599664953707ull, 3600783532410697867ull, 11547674873634515374ull, 8579052831236906496ull}}, {{3668487365576902115ull, 16085547763038849879ull, 7217296796021572108ull, 5361908019523066560ull}}, {{18420667262253291356ull, 1660190630089010732ull, 9021620995026965136ull, 6702385024403833200ull}}, {{4579090004107062578ull, 2075238287611263416ull, 11277026243783706420ull, 8377981280504791500ull}}, {{2861931252566914112ull, 10520395966611815443ull, 16271513439219592320ull, 5236238300315494687ull}}, {{17412472120990806351ull, 13150494958264769303ull, 15727705780597102496ull, 6545297875394368359ull}}, {{17153904132811120035ull, 16438118697830961629ull, 15047946207318990216ull, 8181622344242960449ull}}, {{13027033092220643974ull, 10273824186144351018ull, 2487437351933287029ull, 5113513965151850281ull}}, {{7060419328421029160ull, 17453966251107826677ull, 7720982708343996690ull, 6391892456439812851ull}}, {{13437210178953674353ull, 12594085777030007538ull, 5039542367002607959ull, 7989865570549766064ull}}, {{13009942380273434375ull, 14788832638284836567ull, 3149713979376629974ull, 4993665981593603790ull}}, {{11650741956914405065ull, 9262668761001269901ull, 13160514511075563276ull, 6242082476992004737ull}}, {{728369390860842619ull, 11578335951251587377ull, 2615585083562290383ull, 7802603096240005922ull}}, {{11984445915356496397ull, 14153988997173323966ull, 6246426695653819393ull, 4876626935150003701ull}}, {{5757185357340844688ull, 3857428191184491246ull, 12419719387994662146ull, 6095783668937504626ull}}, {{16419853733530831668ull, 14045157275835389865ull, 6301277198138551874ull, 7619729586171880783ull}}, {{3344879555815687937ull, 13389909315824506570ull, 10855827276477676777ull, 4762330991357425489ull}}, {{13404471481624385729ull, 2902328589498469500ull, 18181470114024483876ull, 5952913739196781861ull}}, {{16755589352030482161ull, 3627910736873086875ull, 8891779587248441133ull, 7441142173995977327ull}}, {{8166400335805357399ull, 4573287219759373249ull, 12474891269671357564ull, 4650713858747485829ull}}, {{14819686438184084652ull, 5716609024699216561ull, 1758556031807033243ull, 5813392323434357287ull}}, {{4689549992447942103ull, 2534075262446632798ull, 16033253095040955266ull, 7266740404292946608ull}}, {{15085309527414703437ull, 12390966114913066805ull, 1594822295091642466ull, 9083425505366183261ull}}, {{11734161463847883600ull, 12356039840248054657ull, 3302606943645970493ull, 5677140940853864538ull}}, {{832643774527690788ull, 1609991745027904610ull, 13351630716412238925ull, 7096426176067330672ull}}, {{10264176755014389293ull, 6624175699712268666ull, 16689538395515298656ull, 8870532720084163340ull}}, {{11026796490311381212ull, 4140109812320167916ull, 1207589460342285852ull, 5544082950052602088ull}}, {{13783495612889226515ull, 5175137265400209895ull, 1509486825427857315ull, 6930103687565752610ull}}, {{12617683497684145240ull, 1857235563322874465ull, 11110230568639597452ull, 8662629609457190762ull}}, {{968523158411508919ull, 10384144263931572349ull, 11555580123827136311ull, 5414143505910744226ull}}, {{5822339966441774053ull, 8368494311487077532ull, 5221103117929144581ull, 6767679382388430283ull}}, {{7277924958052217566ull, 15072303907786234819ull, 1914692878984042822ull, 8459599227985537854ull}}, {{2242860089568942027ull, 4808503923939008858ull, 15031741104647190476ull, 5287249517490961158ull}}, {{12026947148815953341ull, 6010629904923761072ull, 9566304343954212287ull, 6609061896863701448ull}}, {{15033683936019941677ull, 2901601362727313436ull, 11957880429942765359ull, 8261327371079626810ull}}, {{172680423157687740ull, 8731029879345652754ull, 12085361287141616253ull, 5163329606924766756ull}}, {{9439222565801885483ull, 15525473367609453846ull, 15106701608927020316ull, 6454162008655958445ull}}, {{2575656170397581046ull, 960097635802265692ull, 5048318955876611684ull, 8067702510819948057ull}}, {{10833157143353263962ull, 9823433059231191865ull, 14684414393491352062ull, 5042314069262467535ull}}, {{18153132447618967856ull, 3055919287184214023ull, 13743831973436802174ull, 6302892586578084419ull}}, {{18079729541096321916ull, 13043271145835043337ull, 12568103948368614813ull, 7878615733222605524ull}}, {{4382301935544119342ull, 10457887475360596038ull, 17078437004585160066ull, 4924134833264128452ull}}, {{14701249456284924985ull, 3848987307345969239ull, 2901302182021898467ull, 6155168541580160566ull}}, {{13764875801928768327ull, 199548115755073645ull, 12849999764382148892ull, 7693960676975200707ull}}, {{10908890385419174157ull, 9348089609201696836ull, 5725406843525149105ull, 4808725423109500442ull}}, {{13636112981773967696ull, 16296798029929508949ull, 16380130591261212189ull, 6010906778886875552ull}}, {{3210083171935295907ull, 6535939482129722475ull, 2028419165366963621ull, 7513633473608594441ull}}, {{18147203046955417606ull, 6390805185544770498ull, 12796977024422822023ull, 4696020921005371525ull}}, {{13460631771839496200ull, 3376820463503575219ull, 2161163225246363817ull, 5870026151256714407ull}}, {{12214103696371982345ull, 8832711597806856928ull, 16536512086840118483ull, 7337532689070893008ull}}, {{15267629620464977932ull, 6429203478831183256ull, 2223896034840596488ull, 9171915861338616261ull}}, {{9542268512790611207ull, 4018252174269489535ull, 3695778030989066757ull, 5732447413336635163ull}}, {{7316149622560876105ull, 9634501236264249823ull, 8036520308945542ull, 7165559266670793954ull}}, {{4533501009773707227ull, 2819754508475536471ull, 9233417687240957736ull, 8956949083338492442ull}}, {{9750967158749648873ull, 1762346567797210294ull, 10382572072952986489ull, 5598093177086557776ull}}, {{2965336911582285284ull, 6814619228173900772ull, 12978215091191233111ull, 6997616471358197220ull}}, {{3706671139477856604ull, 3906588016789988061ull, 16222768863989041389ull, 8747020589197746525ull}}, {{4622512471387354330ull, 4747460519707436490ull, 12445073549206844820ull, 5466887868248591578ull}}, {{15001512626088968720ull, 5934325649634295612ull, 6332969899653780217ull, 6833609835310739473ull}}, {{305146708901659284ull, 12029593080470257420ull, 12527898392994613175ull, 8542012294138424341ull}}, {{9414088729918312861ull, 14436024702934992743ull, 10135779504835327186ull, 5338757683836515213ull}}, {{7155924893970503172ull, 8821658841813965121ull, 17281410399471546887ull, 6673447104795644016ull}}, {{13556592135890516869ull, 6415387533840068497ull, 3155018925629881993ull, 8341808880994555021ull}}, {{1555341057290491187ull, 15538832254718512571ull, 4277729837732370197ull, 5213630550621596888ull}}, {{15779234376895277696ull, 5588482263115977001ull, 5347162297165462747ull, 6517038188276996110ull}}, {{5888984915836933408ull, 2373916810467583348ull, 15907324908311604242ull, 8146297735346245137ull}}, {{12903987609252859188ull, 6095384024969627496ull, 3024549040053670795ull, 5091436084591403211ull}}, {{16129984511566073985ull, 3007544012784646466ull, 17615744355349252206ull, 6364295105739254013ull}}, {{10939108602602816673ull, 12982802052835583891ull, 8184622388904401545ull, 7955368882174067517ull}}, {{4531099867413066469ull, 1196722255381158076ull, 7421232002278944918ull, 4972105551358792198ull}}, {{5663874834266333086ull, 10719274856081223403ull, 53167965993905339ull, 6215131939198490248ull}}, {{2468157524405528453ull, 8787407551674141350ull, 66459957492381674ull, 7768914923998112810ull}}, {{15377656508035618995ull, 10103815738223726247ull, 4653223491860126450ull, 4855571827498820506ull}}, {{14610384616617135840ull, 3406397635924882001ull, 15039901401679933871ull, 6069464784373525632ull}}, {{4427922715489256088ull, 18093055100188266214ull, 353132678390365722ull, 7586830980466907041ull}}, {{16602509752462948767ull, 15919845456045054287ull, 11749922970062448336ull, 4741769362791816900ull}}, {{16141451172151298055ull, 1453062746346766243ull, 14687403712578060421ull, 5927211703489771125ull}}, {{15565127946761734664ull, 6428014451360845708ull, 4524196585440411814ull, 7409014629362213907ull}}, {{504832929871308357ull, 17852567087382692280ull, 521779856686563431ull, 4630634143351383692ull}}, {{631041162339135447ull, 17704022840800977446ull, 652224820858204289ull, 5788292679189229615ull}}, {{10012173489778695116ull, 8294970495719058095ull, 14650339081354919074ull, 7235365848986537018ull}}, {{7903530843795980991ull, 1145341082794046811ull, 9089551814838873035ull, 9044207311233171273ull}}, {{2633863768158794168ull, 16856739241242136921ull, 17210184930342765406ull, 5652629569520732045ull}}, {{7904015728625880613ull, 11847552014697895343ull, 7677673107646293046ull, 7065786961900915057ull}}, {{5268333642354962863ull, 5586067981517593371ull, 14208777402985254212ull, 8832233702376143821ull}}, {{986865517258157837ull, 12714664525303271665ull, 11186328886079477834ull, 5520146063985089888ull}}, {{5845267915000085201ull, 6669958619774313773ull, 13982911107599347293ull, 6900182579981362360ull}}, {{11918270912177494405ull, 12949134293145280120ull, 17478638884499184116ull, 8625228224976702950ull}}, {{7448919320110934003ull, 17316580970070575883ull, 6312463284384602168ull, 5390767640610439344ull}}, {{4699463131711279600ull, 3198982138878668238ull, 7890579105480752711ull, 6738459550763049180ull}}, {{15097700951493875308ull, 17833785728880499009ull, 9863223881850940888ull, 8423074438453811475ull}}, {{2518534067042590211ull, 11146116080550311881ull, 3858671916943144103ull, 5264421524033632172ull}}, {{7759853602230625668ull, 9320959082260501947ull, 4823339896178930129ull, 6580526905042040215ull}}, {{5088130984360894181ull, 16262884871253015338ull, 1417488851796274757ull, 8225658631302550269ull}}, {{7791767883652946767ull, 12470146053746828538ull, 3191773541586365675ull, 5141036644564093918ull}}, {{516337817711407651ull, 10975996548756147769ull, 13213088963837732902ull, 6426295805705117397ull}}, {{5257108290566647468ull, 4496623649090408903ull, 2681303149515002416ull, 8032869757131396747ull}}, {{10203221709245236523ull, 2810389780681505564ull, 17816715532942734174ull, 5020543598207122966ull}}, {{12754027136556545654ull, 12736359262706657763ull, 13047522379323641909ull, 6275679497758903708ull}}, {{11330847902268294164ull, 2085391023101158492ull, 16309402974154552387ull, 7844599372198629635ull}}, {{16305151975772459660ull, 17444270453934081721ull, 7887533849632901289ull, 4902874607624143522ull}}, {{6546381914433410863ull, 7970280012135438440ull, 636045275186350804ull, 6128593259530179403ull}}, {{8182977393041763579ull, 9962850015169298050ull, 14630114649265102217ull, 7660741574412724253ull}}, {{9726046889078490141ull, 17755996305549281041ull, 11449664665004382837ull, 4787963484007952658ull}}, {{16769244629775500580ull, 8359937326654437589ull, 5088708794400702739ull, 5984954355009940823ull}}, {{7126497731937212013ull, 5838235639890659083ull, 1749199974573490520ull, 7481192943762426029ull}}, {{2148218073247063557ull, 3648897274931661927ull, 3399092993322125527ull, 4675745589851516268ull}}, {{16520330646840993158ull, 18396179648946741120ull, 4248866241652656908ull, 5844681987314395335ull}}, {{2203669234841689831ull, 4548480487473874785ull, 699396783638433232ull, 7305852484142994169ull}}, {{7366272561979500192ull, 5685600609342343481ull, 5485931997975429444ull, 9132315605178742711ull}}, {{16133135397305657380ull, 12776872417693740483ull, 10346236526375725258ull, 5707697253236714194ull}}, {{15554733228204683821ull, 6747718485262399796ull, 3709423621114880765ull, 7134621566545892743ull}}, {{996672461546303161ull, 13046334125005387650ull, 25093507966213052ull, 8918276958182365929ull}}, {{5234606306893827380ull, 17377330864983143089ull, 11544898488547352917ull, 5573923098863978705ull}}, {{11154943902044672128ull, 7886605525946765149ull, 596065055402027435ull, 6967403873579973382ull}}, {{108621822273676448ull, 5246570889006068533ull, 9968453356107310102ull, 8709254841974966727ull}}, {{2373731648134741732ull, 17114164860910956545ull, 13147812375208150669ull, 5443284276234354204ull}}, {{7578850578595815069ull, 7557648020856531969ull, 16434765469010188337ull, 6804105345292942755ull}}, {{14085249241672156741ull, 14058746044498052865ull, 15931770817835347517ull, 8505131681616178444ull}}, {{1885751748404016107ull, 11092559287024976993ull, 733984724292316390ull, 5315707301010111528ull}}, {{6968875703932408038ull, 4642327071926445433ull, 917480905365395488ull, 6644634126262639410ull}}, {{13322780648342897951ull, 5802908839908056791ull, 10370223168561520168ull, 8305792657828299262ull}}, {{15244266932855393076ull, 3626818024942535494ull, 1869703461923562201ull, 5191120411142687039ull}}, {{9831961629214465536ull, 9145208549605557272ull, 16172187382686616463ull, 6488900513928358798ull}}, {{12289952036518081920ull, 6819824668579558686ull, 10991862191503494771ull, 8111125642410448498ull}}, {{3069534004396413296ull, 1956547408648530227ull, 11481599888117072136ull, 5069453526506530311ull}}, {{17671975560777680332ull, 2445684260810662783ull, 9740313841718952266ull, 6336816908133162889ull}}, {{17478283432544712511ull, 12280477362868104287ull, 16787078320576078236ull, 7921021135166453611ull}}, {{17841456172981527176ull, 16898670388647340987ull, 8186080941146354945ull, 4950638209479033507ull}}, {{17690134197799521066ull, 7288279930527012522ull, 5620915158005555778ull, 6188297761848791884ull}}, {{12889295710394625524ull, 18333721950013541461ull, 7026143947506944722ull, 7735372202310989855ull}}, {{10361652828210334905ull, 16070262237185851317ull, 11308868994832922307ull, 4834607626444368659ull}}, {{17563752053690306535ull, 15476141778054926242ull, 9524400225113764980ull, 6043259533055460824ull}}, {{12731318030258107360ull, 898433148859106187ull, 11905500281392206226ull, 7554074416319326030ull}}, {{5651230759697623148ull, 5173206736464329271ull, 2829251657442740987ull, 4721296510199578769ull}}, {{2452352431194641031ull, 1854822402153023685ull, 8148250590230814138ull, 5901620637749473461ull}}, {{7677126557420689193ull, 11541900039546055414ull, 14796999256215905576ull, 7377025797186841826ull}}, {{373036159921085683ull, 14427375049432569268ull, 9272877033415106162ull, 9221282246483552283ull}}, {{9456519636805454360ull, 13628795424322743696ull, 3489705136670747399ull, 5763301404052220177ull}}, {{11820649546006817950ull, 12424308261976041716ull, 8973817439265822153ull, 7204126755065275221ull}}, {{14775811932508522437ull, 1695327272187888433ull, 15828957817509665596ull, 9005158443831594026ull}}, {{2317353430176744667ull, 10282951581972206079ull, 14504784654370928901ull, 5628224027394746266ull}}, {{16731749843003094546ull, 17465375495892645502ull, 8907608781108885318ull, 7035280034243432833ull}}, {{11691315266899092375ull, 12608347333011031070ull, 15746196994813494552ull, 8794100042804291041ull}}, {{2695386023384544830ull, 7880217083131894419ull, 2923844094117352239ull, 5496312526752681901ull}}, {{17204290584512844750ull, 5238585335487480119ull, 8266491136074078203ull, 6870390658440852376ull}}, {{16893677212213668033ull, 1936545650931962245ull, 10333113920092597754ull, 8587988323051065470ull}}, {{12864391266847236473ull, 5822027050259864307ull, 1846510181630485692ull, 5367492701906915919ull}}, {{11468803065131657687ull, 7277533812824830384ull, 16143195782320270827ull, 6709365877383644898ull}}, {{14336003831414572109ull, 4485231247603650076ull, 10955622691045562726ull, 8386707346729556123ull}}, {{18183374431488883376ull, 16638327585034445009ull, 4541421172689782751ull, 5241692091705972577ull}}, {{8894159984078940508ull, 16186223462865668358ull, 10288462484289616343ull, 6552115114632465721ull}}, {{1894327943243899827ull, 15621093310154697544ull, 17472264123789408333ull, 8190143893290582151ull}}, {{1183954964527437392ull, 12069026328060379917ull, 17837694105009462064ull, 5118839933306613844ull}}, {{6091629724086684644ull, 15086282910075474896ull, 3850373557552275964ull, 6398549916633267306ull}}, {{7614537155108355805ull, 411109563884792004ull, 14036338983795120764ull, 7998187395791584132ull}}, {{13982457758797498186ull, 9480315514282770810ull, 17996083901726726285ull, 4998867122369740082ull}}, {{8254700161642096924ull, 16462080411280851417ull, 13271732840303632048ull, 6248583902962175103ull}}, {{14930061220480009059ull, 2130856440391512655ull, 11977980031952152157ull, 7810729878702718879ull}}, {{16248817290441087518ull, 3637628284458389361ull, 14403766547611176954ull, 4881706174189199299ull}}, {{6475963557769195686ull, 13770407392427762510ull, 13393022166086583288ull, 6102132717736499124ull}}, {{17318326484066270415ull, 17213009240534703137ull, 16741277707608229110ull, 7627665897170623905ull}}, {{3906425024900337154ull, 6146444756906801557ull, 3545769539614061338ull, 4767291185731639941ull}}, {{9494717299552809346ull, 16906427982988277754ull, 9043897942944964576ull, 5959113982164549926ull}}, {{2645024587586235874ull, 2686290905025795577ull, 2081500391826429913ull, 7448892477705687408ull}}, {{13182355413309867182ull, 13208146861709591995ull, 1300937744891518695ull, 4655557798566054630ull}}, {{11866258248209946073ull, 11898497558709602090ull, 10849544217969174177ull, 5819447248207568287ull}}, {{5609450773407656783ull, 1038063893104838901ull, 8950244254034079818ull, 7274309060259460359ull}}, {{11623499485186958883ull, 10520951903235824434ull, 6576119299115211868ull, 9092886325324325449ull}}, {{11876373196669237206ull, 15798966976377166079ull, 15639289608015477177ull, 5683053953327703405ull}}, {{10233780477409158603ull, 5913650665189293887ull, 5714053954737182760ull, 7103817441659629257ull}}, {{8180539578334060350ull, 7392063331486617359ull, 11754253461848866354ull, 8879771802074536571ull}}, {{12030366264099869575ull, 9231725600606523753ull, 5040565404441847519ull, 5549857376296585357ull}}, {{1202899774842673256ull, 6927970982330766788ull, 10912392773979697303ull, 6937321720370731696ull}}, {{1503624718553341570ull, 4048277709486070581ull, 13640490967474621629ull, 8671652150463414620ull}}, {{3245608458309532434ull, 4836016577642488065ull, 17748678891526414326ull, 5419782594039634137ull}}, {{8668696591314303446ull, 15268392758907885889ull, 8350790559125854195ull, 6774728242549542672ull}}, {{15447556757570267211ull, 14473804930207469457ull, 10438488198907317744ull, 8468410303186928340ull}}, {{2737193945840335151ull, 9046128081379668411ull, 15747427161171849398ull, 5292756439491830212ull}}, {{17256550487582582651ull, 2084288064869809705ull, 1237539877755260132ull, 6615945549364787766ull}}, {{7735630054196064602ull, 2605360081087262132ull, 10770296884048850973ull, 8269931936705984707ull}}, {{14058140820727316184ull, 3934193059893232784ull, 4425592543316837906ull, 5168707460441240442ull}}, {{17572676025909145230ull, 14141113361721316788ull, 14755362716000823190ull, 6460884325551550552ull}}, {{3519100958676879922ull, 8453019665296870178ull, 18444203395001028988ull, 8076105406939438190ull}}, {{6811124117600437855ull, 14506509327665319669ull, 6915941103448255213ull, 5047565879337148869ull}}, {{13125591165427935223ull, 4298078604299485874ull, 13256612397737706921ull, 6309457349171436086ull}}, {{7183616919930143220ull, 9984284273801745247ull, 7347393460317357843ull, 7886821686464295108ull}}, {{11407289602597421369ull, 3934334661912396827ull, 13815492949553124460ull, 4929263554040184442ull}}, {{9647425984819388807ull, 4917918327390496034ull, 8045994150086629767ull, 6161579442550230553ull}}, {{2835910444169460201ull, 1535711890810732139ull, 14669178706035675113ull, 7701974303187788191ull}}, {{17913345092101770290ull, 12489034977825177346ull, 16085765718913378801ull, 4813733939492367619ull}}, {{13168309328272437054ull, 1776235666999307971ull, 15495521130214335598ull, 6017167424365459524ull}}, {{11848700641913158413ull, 11443666620603910772ull, 922657339058367881ull, 7521459280456824406ull}}, {{16628809938050499816ull, 234762610236362376ull, 14411718892193643638ull, 4700912050285515253ull}}, {{2339268348853573154ull, 9516825299650228779ull, 4179590559959890835ull, 5876140062856894067ull}}, {{16759143491349130155ull, 7284345606135398069ull, 612802181522475640ull, 7345175078571117584ull}}, {{7113871308904248982ull, 9105432007669247587ull, 766002726903094550ull, 9181468848213896980ull}}, {{2140326558851461662ull, 1079208986365891838ull, 9702123741169209902ull, 5738418030133685612ull}}, {{11898780235419102885ull, 10572383269812140605ull, 12127654676461512377ull, 7173022537667107015ull}}, {{1038417238991714894ull, 17827165105692563661ull, 10547882327149502567ull, 8966278172083883769ull}}, {{2954853783583515761ull, 18059507218698934144ull, 18121641500536908864ull, 5603923857552427355ull}}, {{3693567229479394701ull, 4127639949664116064ull, 18040365857243748177ull, 7004904821940534194ull}}, {{4616959036849243376ull, 9771235955507532984ull, 13327085284699909413ull, 8756131027425667743ull}}, {{2885599398030777110ull, 8412865481405902067ull, 15246957330578525239ull, 5472581892141042339ull}}, {{17442057302820635100ull, 5904395833329989679ull, 14447010644795768645ull, 6840727365176302924ull}}, {{17190885610098405971ull, 11992180810089875003ull, 18058763305994710806ull, 8550909206470378655ull}}, {{8438460497097809780ull, 2883426987878783973ull, 18204256093887776110ull, 5344318254043986659ull}}, {{15159761639799650129ull, 12827655771703255774ull, 18143634098932332233ull, 6680397817554983324ull}}, {{9726330012894786853ull, 2199511659346906006ull, 4232798549955863676ull, 8350497271943729156ull}}, {{1467270239631853879ull, 10598066823946592062ull, 11868871130577190605ull, 5219060794964830722ull}}, {{11057459836394593157ull, 17859269548360627981ull, 5612716876366712448ull, 6523825993706038403ull}}, {{18433510813920629350ull, 3877342861741233360ull, 2404210077031002657ull, 8154782492132548004ull}}, {{11520944258700393344ull, 13952554334656740610ull, 10726003334999152468ull, 5096739057582842502ull}}, {{5177808286520715872ull, 17440692918320925763ull, 4184132131894164777ull, 6370923821978553128ull}}, {{1860574339723506935ull, 7965808092618993492ull, 5230165164867705972ull, 7963654777473191410ull}}, {{10386230999181967643ull, 14202002094741646740ull, 7880539246469704136ull, 4977284235920744631ull}}, {{12982788748977459553ull, 17752502618427058425ull, 5238988039659742266ull, 6221605294900930789ull}}, {{2393427880939660730ull, 12967256236179047224ull, 11160421068002065737ull, 7777006618626163486ull}}, {{1495892425587287956ull, 1187006119970822659ull, 2363577149073903182ull, 4860629136641352179ull}}, {{15704923587266273657ull, 10707129686818304131ull, 16789529491624542689ull, 6075786420801690223ull}}, {{15019468465655454167ull, 17995598126950268068ull, 16375225846103290457ull, 7594733026002112779ull}}, {{163795754179883047ull, 4329719801702835687ull, 7928673144600862584ull, 4746708141251320487ull}}, {{14039802748007017520ull, 5412149752128544608ull, 5299155412323690326ull, 5933385176564150609ull}}, {{17549753435008771900ull, 15988559227015456568ull, 11235630283832000811ull, 7416731470705188261ull}}, {{10968595896880482438ull, 7687006507670966403ull, 9328111936608694459ull, 4635457169190742663ull}}, {{9099058852673215143ull, 4997072116161320100ull, 7048453902333480170ull, 5794321461488428329ull}}, {{11373823565841518929ull, 15469712182056425933ull, 13422253396344238116ull, 7242901826860535411ull}}, {{382221402019734949ull, 890396153860980801ull, 12166130727002909742ull, 9053627283575669264ull}}, {{11768103422330804103ull, 14391555651445276712ull, 7603831704376818588ull, 5658517052234793290ull}}, {{14710129277913505129ull, 17989444564306595890ull, 281417593616247427ull, 7073146315293491613ull}}, {{9164289560537105603ull, 17875119686955856959ull, 4963458010447697188ull, 8841432894116864516ull}}, {{12645210002976772858ull, 1948577767492634791ull, 12325533293384586551ull, 5525895558823040322ull}}, {{11194826485293578169ull, 16270780264647957201ull, 6183544579875957380ull, 6907369448528800403ull}}, {{158475051334808999ull, 1891731257100394886ull, 3117744706417558822ull, 8634211810661000504ull}}, {{13934104962366419336ull, 15017390090969910515ull, 1948590441510974263ull, 5396382381663125315ull}}, {{12805945184530636266ull, 14160051595285000240ull, 16270796107170881541ull, 6745477977078906643ull}}, {{16007431480663295333ull, 3865006438824086588ull, 15726809115536214023ull, 8431847471348633304ull}}, {{781272638559783775ull, 9333158051906135974ull, 9829255697210133764ull, 5269904669592895815ull}}, {{10199962835054505527ull, 11666447564882669967ull, 7674883603085279301ull, 6587380836991119769ull}}, {{8138267525390744004ull, 748001400821173747ull, 14205290522283987031ull, 8234226046238899711ull}}, {{2780574194155521051ull, 7385029903154315448ull, 15795835604068573750ull, 5146391278899312319ull}}, {{3475717742694401313ull, 7915342088118502ull, 15133108486658329284ull, 6432989098624140399ull}}, {{13568019215222777450ull, 9894177610148127ull, 14304699589895523701ull, 8041236373280175499ull}}, {{15397541037155317762ull, 2312026870220036531ull, 6634594234471008361ull, 5025772733300109687ull}}, {{14635240278016759299ull, 7501719606202433568ull, 3681556774661372547ull, 6282215916625137109ull}}, {{18294050347520949123ull, 4765463489325654056ull, 9213631986754103588ull, 7852769895781421386ull}}, {{11433781467200593202ull, 12201786717683309593ull, 10370206010148702646ull, 4907981184863388366ull}}, {{457168778718577791ull, 6028861360249361184ull, 3739385475831102500ull, 6134976481079235458ull}}, {{571460973398222238ull, 7536076700311701480ull, 13897603881643653933ull, 7668720601349044322ull}}, {{357163108373888899ull, 7015890946908507377ull, 13297688444454671612ull, 4792950375843152701ull}}, {{5058139903894749028ull, 8769863683635634221ull, 2787052500286175803ull, 5991187969803940877ull}}, {{10934360898295824189ull, 6350643586117154872ull, 8095501643785107658ull, 7488984962254926096ull}}, {{6833975561434890118ull, 8580838259750609699ull, 5059688527365692286ull, 4680615601409328810ull}}, {{3930783433366224743ull, 1502675787833486316ull, 15547982696061891166ull, 5850769501761661012ull}}, {{4913479291707780929ull, 11101716771646633703ull, 988234296367812341ull, 7313461877202076266ull}}, {{1530163096207338257ull, 42087909276128417ull, 10458664907314541235ull, 9141827346502595332ull}}, {{12485566981198056171ull, 16167206007793437924ull, 15760037603926364079ull, 5713642091564122082ull}}, {{15606958726497570214ull, 15597321491314409501ull, 10476674968053179291ull, 7142052614455152603ull}}, {{5673640352839799055ull, 14884965845715623973ull, 8484157691639086210ull, 8927565768068940754ull}}, {{5851868229738568361ull, 13914789671999652887ull, 9914284575701816785ull, 5579728605043087971ull}}, {{2703149268745822548ull, 3558429034717402397ull, 7781169701199883078ull, 6974660756303859964ull}}, {{7990622604359666089ull, 13671408330251528804ull, 9726462126499853847ull, 8718325945379824955ull}}, {{14217511164579567114ull, 15462159234048287358ull, 3773195819848714702ull, 5448953715862390597ull}}, {{8548516918869683084ull, 10104327005705583390ull, 9328180793238281282ull, 6811192144827988246ull}}, {{1462274111732328047ull, 3407036720277203430ull, 2436853954693075795ull, 8513990181034985308ull}}, {{14748979375114868741ull, 18270299014669109807ull, 10746405758537948179ull, 5321243863146865817ull}}, {{13824538200466198023ull, 18226187749908999355ull, 18044693216599823128ull, 6651554828933582271ull}}, {{12668986732155359624ull, 4335990613676697578ull, 17944180502322391007ull, 8314443536166977839ull}}, {{12529802726024487669ull, 9627523161189017842ull, 18132641841592576235ull, 5196527210104361149ull}}, {{6438881370675833778ull, 7422717933058884399ull, 8830744246708556582ull, 6495659012630451437ull}}, {{3436915694917404319ull, 55025379468829691ull, 15650116326813083632ull, 8119573765788064296ull}}, {{18288973373819235363ull, 34390862168018556ull, 9781322704258177270ull, 5074733603617540185ull}}, {{4414472643564492588ull, 9266360614564799004ull, 16838339398750109491ull, 6343417004521925231ull}}, {{5518090804455615735ull, 6971264749778610851ull, 16436238230010248960ull, 7929271255652406539ull}}, {{1142963743571065883ull, 4357040468611631782ull, 7966805884542711648ull, 4955794534782754087ull}}, {{10652076716318608161ull, 5446300585764539727ull, 5346821337251001656ull, 6194743168478442609ull}}, {{8703409876970872297ull, 6807875732205674659ull, 11295212689991139974ull, 7743428960598053261ull}}, {{3133788163893101234ull, 18089980387910710374ull, 9365350940458156435ull, 4839643100373783288ull}}, {{13140607241721152350ull, 18000789466461000063ull, 11706688675572695544ull, 6049553875467229110ull}}, {{11814073033724052534ull, 4054242759366698463ull, 5409988807611093623ull, 7561942344334036388ull}}, {{14301324673718614690ull, 9451430752245268395ull, 12604615041611709322ull, 4726213965208772742ull}}, {{13264969823720880458ull, 2590916403451809686ull, 6532396765159860845ull, 5907767456510965928ull}}, {{7357840242796324765ull, 7850331522742150012ull, 8165495956449826056ull, 7384709320638707410ull}}, {{13822022188602478786ull, 4906457201713843757ull, 9715120991208529189ull, 4615443325399192131ull}}, {{3442469680470934770ull, 10744757520569692601ull, 7532215220583273582ull, 5769304156748990164ull}}, {{8914773119016056367ull, 4207574863857339943ull, 9415269025729091978ull, 7211630195936237705ull}}, {{6531780380342682555ull, 14482840616676450737ull, 16380772300588752876ull, 9014537744920297131ull}}, {{15611577783782646357ull, 18275147422277557518ull, 7932139678654276595ull, 5634086090575185707ull}}, {{10291100192873532138ull, 18232248259419558994ull, 5303488579890457840ull, 7042607613218982134ull}}, {{3640503204237139364ull, 4343566250564897127ull, 15852732761717848109ull, 8803259516523727667ull}}, {{9192843530289293959ull, 5020571915816754656ull, 7602114966859961116ull, 5502037197827329792ull}}, {{11491054412861617448ull, 6275714894770943320ull, 9502643708574951395ull, 6877546497284162240ull}}, {{14363818016077021810ull, 3232957600036291246ull, 11878304635718689244ull, 8596933121605202800ull}}, {{4365700241620750728ull, 11243970536877457837ull, 7423940397324180777ull, 5373083201003251750ull}}, {{10068811320453326313ull, 219905115814658584ull, 56553459800450164ull, 6716354001254064688ull}}, {{12586014150566657892ull, 274881394768323230ull, 70691824750562705ull, 8395442501567580860ull}}, {{3254572825676773279ull, 11701015917798671779ull, 9267554427323877498ull, 5247151563479738037ull}}, {{17903274087378130310ull, 5402897860393563915ull, 16196129052582234777ull, 6558939454349672546ull}}, {{17767406590795274983ull, 11365308343919342798ull, 11021789278873017663ull, 8198674317937090683ull}}, {{6492943100819658961ull, 14020846742590671105ull, 4582775290081942087ull, 5124171448710681677ull}}, {{12727864894451961605ull, 12914372409810950977ull, 10340155131029815513ull, 6405214310888352096ull}}, {{2074773062782788294ull, 2307907456981525010ull, 12925193913787269392ull, 8006517888610440120ull}}, {{5908419182666630588ull, 1442442160613453131ull, 8078246196117043370ull, 5004073680381525075ull}}, {{2773837959905900331ull, 11026424737621592222ull, 5486121726718916308ull, 6255092100476906344ull}}, {{12690669486737151221ull, 13783030922026990277ull, 6857652158398645385ull, 7818865125596132930ull}}, {{10237511438424413466ull, 1696865298625787067ull, 8897718617426541270ull, 4886790703497583081ull}}, {{8185203279603128928ull, 11344453660137009642ull, 15733834290210564491ull, 6108488379371978851ull}}, {{1008132062649135352ull, 9568881056743874149ull, 15055606844335817710ull, 7635610474214973564ull}}, {{2935925548369403547ull, 1368864642037533439ull, 186382240855110261ull, 4772256546384358478ull}}, {{17504964990743918146ull, 6322766820974304702ull, 9456349837923663634ull, 5965320682980448097ull}}, {{12657834201575121874ull, 17126830563072656686ull, 16432123315831967446ull, 7456650853725560121ull}}, {{3299460357557063267ull, 6092583083493022525ull, 3352548044753897798ull, 4660406783578475076ull}}, {{8736011465373716988ull, 16839100891221053964ull, 4190685055942372247ull, 5825508479473093845ull}}, {{10920014331717146235ull, 16437190095598929551ull, 9850042338355353213ull, 7281885599341367306ull}}, {{9038331896219044890ull, 6711429564216498227ull, 3089180886089415709ull, 9102356999176709133ull}}, {{3343114425923209104ull, 6500486486849005344ull, 4236581063019578770ull, 5688973124485443208ull}}, {{4178893032404011380ull, 17348980145416032488ull, 5295726328774473462ull, 7111216405606804010ull}}, {{5223616290505014225ull, 12462853144915264802ull, 15843029947822867636ull, 8889020507008505012ull}}, {{7876446199993021795ull, 17012655252426816309ull, 678521680534516464ull, 5555637816880315633ull}}, {{14457243768418665147ull, 2819074991823968770ull, 5459838119095533485ull, 6944547271100394541ull}}, {{8848182673668555626ull, 8135529758207348867ull, 11436483667296804760ull, 8680684088875493176ull}}, {{3224271161829153314ull, 5084706098879593042ull, 7147802292060502975ull, 5425427555547183235ull}}, {{13253710989141217451ull, 1744196605172103398ull, 4323066846648240815ull, 6781784444433979044ull}}, {{7343766699571746006ull, 16015303811747292960ull, 5403833558310301018ull, 8477230555542473805ull}}, {{4589854187232341254ull, 14621250900769446004ull, 5683238983157632088ull, 5298269097214046128ull}}, {{5737317734040426567ull, 18276563625961807505ull, 7104048728947040110ull, 6622836371517557660ull}}, {{11783333185977921113ull, 13622332495597483573ull, 8880060911183800138ull, 8278545464396947075ull}}, {{9670426250449894648ull, 13125643828175815137ull, 3244195060276181134ull, 5174090915248091922ull}}, {{16699718831489756213ull, 7183682748364993113ull, 13278615862200002226ull, 6467613644060114902ull}}, {{7039590484080031555ull, 18202975472311017200ull, 7374897790895226974ull, 8084517055075143628ull}}, {{4399744052550019722ull, 6765173651766997846ull, 13832683156164292667ull, 5052823159421964767ull}}, {{14723052102542300460ull, 3844781046281359403ull, 12679167926777977930ull, 6316028949277455959ull}}, {{13792129109750487671ull, 14029348344706475062ull, 11237273890045084508ull, 7895036186596819949ull}}, {{4008394675166666891ull, 17991714752296322722ull, 9329139190491871769ull, 4934397616623012468ull}}, {{14233865380813109421ull, 8654585385088239690ull, 11661423988114839712ull, 6167997020778765585ull}}, {{8568959689161610968ull, 10818231731360299613ull, 741721929861385928ull, 7709996275973456982ull}}, {{7661442814939700807ull, 6761394832100187258ull, 14298634261445529917ull, 4818747672483410613ull}}, {{353431481819850201ull, 13063429558552621977ull, 4038234771524748684ull, 6023434590604263267ull}}, {{5053475370702200655ull, 16329286948190777471ull, 436107445978547951ull, 7529293238255329084ull}}, {{10075951134329957266ull, 17123333370260317775ull, 9495939190591368277ull, 4705808273909580677ull}}, {{7983252899485058678ull, 7569108657543233507ull, 16481610006666598251ull, 5882260342386975846ull}}, {{5367380105928935443ull, 4849699803501653980ull, 11378640471478472006ull, 7352825427983719808ull}}, {{6709225132411169304ull, 15285496791231843283ull, 14223300589348090007ull, 9191031784979649760ull}}, {{1887422698543286863ull, 16470964522160983908ull, 8889562868342556254ull, 5744394865612281100ull}}, {{2359278373179108579ull, 11365333615846454077ull, 11111953585428195318ull, 7180493582015351375ull}}, {{7560783984901273627ull, 4983294982953291788ull, 9278255963357856244ull, 8975616977519189219ull}}, {{13948862027418071825ull, 12337931401200583175ull, 3493066967884966200ull, 5609760610949493262ull}}, {{12824391515845201878ull, 15422414251500728969ull, 13589705746710983558ull, 7012200763686866577ull}}, {{2195431339524338635ull, 10054645777521135404ull, 3152074128106565736ull, 8765250954608583222ull}}, {{10595516624057487455ull, 6284153610950709627ull, 15805104385348767297ull, 5478281846630364513ull}}, {{8632709761644471415ull, 12466878032115774938ull, 5921322426403795409ull, 6847852308287955642ull}}, {{1567515165200813460ull, 1748539484862554961ull, 16625025069859520070ull, 8559815385359944552ull}}, {{12508912024318978173ull, 14927895233321260562ull, 10390640668662200043ull, 5349884615849965345ull}}, {{6412767993543946908ull, 14048183023224187799ull, 17599986854255137958ull, 6687355769812456681ull}}, {{3404273973502545731ull, 8336856742175458941ull, 8164925512536758736ull, 8359194712265570852ull}}, {{4433514242652785034ull, 5210535463859661838ull, 14326450482190250018ull, 5224496695165981782ull}}, {{14765264840170757100ull, 15736541366679353105ull, 8684691065883036714ull, 6530620868957477228ull}}, {{4621522994931282663ull, 10447304671494415574ull, 10855863832353795893ull, 8163276086196846535ull}}, {{16723509927114215377ull, 8835408428897703685ull, 13702443922862204289ull, 5102047553873029084ull}}, {{7069329353610605509ull, 15655946554549517511ull, 17128054903577755361ull, 6377559442341286355ull}}, {{4224975673585868982ull, 5734875137904733177ull, 16798382611044806298ull, 7971949302926607944ull}}, {{14169824842059637874ull, 8195982979617846139ull, 10498989131903003936ull, 4982468314329129965ull}}, {{13100595034147159438ull, 10244978724522307674ull, 17735422433306142824ull, 6228085392911412456ull}}, {{7152371755829173489ull, 12806223405652884593ull, 3722533967923126914ull, 7785106741139265571ull}}, {{15999447393461703191ull, 12615575646960440774ull, 20740720738260369ull, 4865691713212040982ull}}, {{10775937204972353181ull, 1934411503418387256ull, 9249297937777601270ull, 6082114641515051227ull}}, {{13469921506215441476ull, 11641386416127759878ull, 6949936403794613683ull, 7602643301893814034ull}}, {{3807014922957263019ull, 4970023500866155972ull, 8955396270799021456ull, 4751652063683633771ull}}, {{4758768653696578773ull, 6212529376082694965ull, 6582559320071388916ull, 5939565079604542214ull}}, {{10560146835548111370ull, 7765661720103368706ull, 17451571186944011953ull, 7424456349505677767ull}}, {{11211777790644957511ull, 16382753621133075201ull, 17824761019481089326ull, 4640285218441048604ull}}, {{179664183024033176ull, 11255069989561568194ull, 3834207200641810042ull, 5800356523051310756ull}}, {{9447952265634817278ull, 4845465450097184434ull, 4792759000802262553ull, 7250445653814138445ull}}, {{2586568295188745789ull, 10668517831048868447ull, 10602634769430216095ull, 9063057067267673056ull}}, {{8534134212134047975ull, 13585352672046624635ull, 6626646730893885059ull, 5664410667042295660ull}}, {{6055981746740172064ull, 12370004821630892890ull, 8283308413617356324ull, 7080513333802869575ull}}, {{16793349220279990888ull, 15462506027038616112ull, 5742449498594307501ull, 8850641667253586969ull}}, {{10495843262674994305ull, 11969909276112829022ull, 15118245982689911948ull, 5531651042033491855ull}}, {{3896432041488967073ull, 14962386595141036278ull, 14286121459935002031ull, 6914563802541864819ull}}, {{14093912088715984649ull, 14091297225498907443ull, 13245965806491364635ull, 8643204753177331024ull}}, {{6502852046233796454ull, 6501217756723123200ull, 8278728629057102897ull, 5402002970735831890ull}}, {{8128565057792245568ull, 12738208214331291904ull, 1125038749466602813ull, 6752503713419789863ull}}, {{10160706322240306959ull, 2087702212631951168ull, 15241356492115417229ull, 8440629641774737328ull}}, {{6350441451400191850ull, 3610656892108663432ull, 9525847807572135768ull, 5275393526109210830ull}}, {{7938051814250239812ull, 4513321115135829290ull, 2683937722610393902ull, 6594241907636513538ull}}, {{699192730958023957ull, 14865023430774562421ull, 12578294190117768185ull, 8242802384545641922ull}}, {{2742838466062458925ull, 2373110616593019657ull, 12473119887250993020ull, 5151751490341026201ull}}, {{8040234101005461560ull, 2966388270741274571ull, 1756341803781577563ull, 6439689362926282752ull}}, {{5438606607829439046ull, 17543043393708756926ull, 2195427254726971953ull, 8049611703657853440ull}}, {{17234187185175563116ull, 4046873093426891222ull, 1372142034204357471ull, 5031007314786158400ull}}, {{12319361944614678087ull, 446905348356226124ull, 1715177542755446839ull, 6288759143482698000ull}}, {{15399202430768347609ull, 14393689740727446367ull, 2143971928444308548ull, 7860948929353372500ull}}, {{16542030546871299112ull, 18219428124809429787ull, 10563354492132468650ull, 4913093080845857812ull}}, {{16065852165161735985ull, 13550913119157011426ull, 13204193115165585813ull, 6141366351057322265ull}}, {{10858943169597394174ull, 3103583343664100571ull, 2670183338674818555ull, 7676707938821652832ull}}, {{4480996471784677407ull, 18080640654285920521ull, 1668864586671761596ull, 4797942461763533020ull}}, {{10212931608158234662ull, 4154056744147849035ull, 2086080733339701996ull, 5997428077204416275ull}}, {{8154478491770405424ull, 5192570930184811294ull, 16442658971956791207ull, 7496785096505520343ull}}, {{484863038929115486ull, 10162885859006588915ull, 17194190885114076360ull, 4685490685315950214ull}}, {{14441136853943558069ull, 12703607323758236143ull, 12269366569537819642ull, 5856863356644937768ull}}, {{13439735049002059683ull, 6656137117843019371ull, 15336708211922274553ull, 7321079195806172210ull}}, {{12187982792825186699ull, 12931857415731162118ull, 9947513228048067383ull, 9151348994757715263ull}}, {{3005803227088353783ull, 14999939912473058180ull, 13134724795171123970ull, 5719593121723572039ull}}, {{3757254033860442229ull, 9526552853736546917ull, 11806719975536517059ull, 7149491402154465049ull}}, {{9308253560752940690ull, 7296505048743295742ull, 923341914138482612ull, 8936864252693081312ull}}, {{1205972457043200027ull, 13783687692319335647ull, 577088696336551632ull, 5585540157933175820ull}}, {{15342523626586163746ull, 17229609615399169558ull, 721360870420689540ull, 6981925197416469775ull}}, {{9954782496377928875ull, 3090267945539410332ull, 14736759143308025638ull, 8727406496770587218ull}}, {{15445111097090981355ull, 15766475521244295169ull, 13822160482994903927ull, 5454629060481617011ull}}, {{5471330816081562981ull, 15096408383127981058ull, 12666014585316242005ull, 6818286325602021264ull}}, {{16062535556956729535ull, 5035452423627812610ull, 15832518231645302507ull, 8522857907002526580ull}}, {{14650770741525343863ull, 841314755553688929ull, 671951857923538259ull, 5326786191876579113ull}}, {{4478405371624516117ull, 14886701499724274874ull, 5451625840831810727ull, 6658482739845723891ull}}, {{14821378751385420954ull, 13996690856227955688ull, 2202846282612375505ull, 8323103424807154864ull}}, {{9263361719615888097ull, 1830402757501390449ull, 1376778926632734691ull, 5201939640504471790ull}}, {{16190888167947248025ull, 16123061502158901773ull, 10944345695145694171ull, 6502424550630589737ull}}, {{6403552154651896319ull, 15542140859271239313ull, 18292118137359505618ull, 8128030688288237171ull}}, {{15531435142725904959ull, 14325524055471912474ull, 9126730826635997059ull, 5080019180180148232ull}}, {{10190921891552605391ull, 13295219050912502689ull, 11408413533294996324ull, 6350023975225185290ull}}, {{17350338382868144643ull, 16619023813640628361ull, 5037144879763969597ull, 7937529969031481613ull}}, {{3926432461651508546ull, 12692732892739086678ull, 5454058559066174950ull, 4960956230644676008ull}}, {{14131412613919161490ull, 6642544079069082539ull, 6817573198832718688ull, 6201195288305845010ull}}, {{13052579748971563959ull, 8303180098836353174ull, 17745338535395674168ull, 7751494110382306262ull}}, {{3546176324679839570ull, 5189487561772720734ull, 6479150566194908451ull, 4844683818988941414ull}}, {{13656092442704575271ull, 1875173433788513013ull, 17322310244598411372ull, 6055854773736176767ull}}, {{3235057498098555376ull, 2343966792235641267ull, 17041201787320626311ull, 7569818467170220959ull}}, {{18162812000807454774ull, 8382508272788357647ull, 17568280144716473300ull, 4731136541981388099ull}}, {{18091828982581930564ull, 10478135340985447059ull, 17348664162468203721ull, 5913920677476735124ull}}, {{18003100209800025301ull, 17709355194659196728ull, 3239086129375703035ull, 7392400846845918906ull}}, {{11251937631125015813ull, 8762503987448304003ull, 6636114849287202301ull, 4620250529278699316ull}}, {{9453236020478881862ull, 15564816002737767908ull, 8295143561609002876ull, 5775313161598374145ull}}, {{11816545025598602328ull, 1009275929712658269ull, 14980615470438641500ull, 7219141451997967681ull}}, {{935623226716089197ull, 1261594912140822837ull, 4890711282766138163ull, 9023926814997459602ull}}, {{2890607525911249701ull, 16929397884583871937ull, 7668380570156224255ull, 5639954259373412251ull}}, {{8224945425816450030ull, 16550061337302452017ull, 4973789694267892415ull, 7049942824216765314ull}}, {{14892867800697950441ull, 16075890653200677117ull, 15440609154689641327ull, 8812428530270956642ull}}, {{11613885384649912978ull, 16964960685891505054ull, 14262066740108413733ull, 5507767831419347901ull}}, {{5293984693957615414ull, 7371142802082217606ull, 3992525369853353455ull, 6884709789274184877ull}}, {{15840852904301795075ull, 4602242484175384103ull, 9602342730744079723ull, 8605887236592731096ull}}, {{16818062092829703778ull, 570558543395921112ull, 6001464206715049827ull, 5378679522870456935ull}}, {{2575833542327578107ull, 14548256234527065103ull, 2890144239966424379ull, 6723349403588071169ull}}, {{17054849983191636345ull, 13573634274731443474ull, 8224366318385418378ull, 8404186754485088961ull}}, {{15270967257922160620ull, 13095207440134540075ull, 16669443995059356246ull, 5252616721553180600ull}}, {{14477023053975312871ull, 7145637263313399286ull, 2390060920114643692ull, 6565770901941475751ull}}, {{8872906780614365281ull, 8932046579141749108ull, 16822634205425468327ull, 8207213627426844688ull}}, {{14768938774738754109ull, 12500058139604675048ull, 10514146378390917704ull, 5129508517141777930ull}}, {{14429394713891020ull, 15625072674505843811ull, 3919310936133871322ull, 6411885646427222413ull}}, {{13853094798674527486ull, 10307968806277528955ull, 9510824688594727057ull, 8014857058034028016ull}}, {{6352341239957885727ull, 17971695549991925357ull, 5944265430371704410ull, 5009285661271267510ull}}, {{12552112568374745063ull, 13241247400635130888ull, 16653703824819406321ull, 6261607076589084387ull}}, {{15690140710468431328ull, 2716501195511749898ull, 16205443762596869998ull, 7827008845736355484ull}}, {{14418023962470157484ull, 15532871302477007398ull, 905030314768267940ull, 4891880528585222178ull}}, {{8799157916232921047ull, 969345054386707632ull, 10354659930315110734ull, 6114850660731527722ull}}, {{10998947395291151309ull, 10435053354838160348ull, 3719952876039112609ull, 7643563325914409653ull}}, {{16097714158911745376ull, 18051123392842319977ull, 4630813556738139332ull, 4777227078696506033ull}}, {{6287084643357518008ull, 4117160167343348356ull, 10400202964350062070ull, 5971533848370632541ull}}, {{7858855804196897510ull, 14369822246033961253ull, 17611939723864965491ull, 7464417310463290676ull}}, {{7217627886836754896ull, 6675295894557531831ull, 1784090290560827624ull, 4665260819039556673ull}}, {{4410348840118555716ull, 8344119868196914789ull, 6841798881628422434ull, 5831576023799445841ull}}, {{10124622068575582549ull, 1206777798391367678ull, 13163934620462915947ull, 7289470029749307301ull}}, {{3432405548864702378ull, 15343530303271373310ull, 2619860220296481221ull, 9111837537186634127ull}}, {{15980311523322602698ull, 11895549448758302270ull, 8554941665326382619ull, 5694898460741646329ull}}, {{10752017367298477565ull, 10257750792520489934ull, 15305363100085366178ull, 7118623075927057911ull}}, {{4216649672268321148ull, 3598816453795836610ull, 14520017856679319819ull, 8898278844908822389ull}}, {{7247092063595088622ull, 18390161348118255545ull, 11380854169638268838ull, 5561424278068013993ull}}, {{13670551097921248681ull, 13764329648293043623ull, 391009656765672336ull, 6951780347585017492ull}}, {{12476502853974172947ull, 17205412060366304529ull, 488762070957090420ull, 8689725434481271865ull}}, {{880285256092776236ull, 1530010500874164523ull, 11834691340416651273ull, 5431078396550794915ull}}, {{14935414625398134007ull, 6524199144520093557ull, 10181678157093426187ull, 6788847995688493644ull}}, {{4834210226465503797ull, 3543562912222729043ull, 12727097696366782734ull, 8486059994610617055ull}}, {{715538382327245921ull, 16049784875421369364ull, 14871965087870321064ull, 5303787496631635659ull}}, {{894422977909057401ull, 1615487020567160089ull, 13978270341410513427ull, 6629734370789544574ull}}, {{5729714740813709656ull, 15854416830991113823ull, 8249465889908365975ull, 8287167963486930718ull}}, {{10498600740649650391ull, 16826539547010527995ull, 544230162765340830ull, 5179479977179331699ull}}, {{8511564907384675084ull, 11809802396908384186ull, 14515345758738839750ull, 6474349971474164623ull}}, {{1416084097376068047ull, 5538880959280704425ull, 13532496179996161784ull, 8092937464342705779ull}}, {{12414267606928512290ull, 3461800599550440265ull, 6151967103283907163ull, 5058085915214191112ull}}, {{1682776453378476650ull, 18162308804720214044ull, 7689958879104883953ull, 6322607394017738890ull}}, {{2103470566723095813ull, 8867827950618103843ull, 389076562026329134ull, 7903259242522173613ull}}, {{17455570168697792547ull, 930706450708926997ull, 2549015860480149661ull, 4939537026576358508ull}}, {{7984404655590076972ull, 5775069081813546651ull, 3186269825600187076ull, 6174421283220448135ull}}, {{5368819801060208311ull, 7218836352266933314ull, 17817895337282397557ull, 7718026604025560168ull}}, {{7967198394090018098ull, 6817615729380527273ull, 11136184585801498473ull, 4823766627515975105ull}}, {{14570684011039910527ull, 13133705680153046995ull, 85172676969709379ull, 6029708284394968882ull}}, {{13601668995372500254ull, 11805446081763920840ull, 9329837883066912532ull, 7537135355493711102ull}}, {{8501043122107812659ull, 16601775837957226333ull, 1219462658489432428ull, 4710709597183569439ull}}, {{15237989921062153728ull, 2305475723736981300ull, 15359386378393954248ull, 5888386996479461798ull}}, {{600743327618140544ull, 2881844654671226626ull, 9975860936137667002ull, 7360483745599327248ull}}, {{9974301196377451487ull, 12825677855193809090ull, 12469826170172083752ull, 9200604681999159060ull}}, {{10845624266163295084ull, 8016048659496130681ull, 17017013393212328153ull, 5750377926249474412ull}}, {{18168716351131506759ull, 14631746842797551255ull, 2824522667805858575ull, 7187972407811843016ull}}, {{18099209420486995544ull, 13677997535069551165ull, 3530653334757323219ull, 8984965509764803770ull}}, {{13617848897018066167ull, 6242905450204775526ull, 6818344352650714916ull, 5615603443603002356ull}}, {{7798939084417806901ull, 7803631812755969408ull, 8522930440813393645ull, 7019504304503752945ull}}, {{9748673855522258626ull, 14366225784372349664ull, 15265349069444129960ull, 8774380380629691181ull}}, {{6092921159701411641ull, 8978891115232718540ull, 11846686177616275177ull, 5483987737893556988ull}}, {{7616151449626764552ull, 15835299912468286079ull, 14808357722020343971ull, 6854984672366946235ull}}, {{4908503293606067786ull, 15182438872157969695ull, 13898761134098042060ull, 8568730840458682794ull}}, {{9985343586144874222ull, 265652258243955251ull, 13298411727238664192ull, 5355456775286676746ull}}, {{7869993464253704874ull, 332065322804944064ull, 7399642622193554432ull, 6694320969108345933ull}}, {{9837491830317131092ull, 415081653506180080ull, 13861239296169330944ull, 8367901211385432416ull}}, {{6148432393948206933ull, 259426033441362550ull, 8663274560105831840ull, 5229938257115895260ull}}, {{16908912529290034474ull, 324282541801703187ull, 10829093200132289800ull, 6537422821394869075ull}}, {{16524454643185155188ull, 405353177252128984ull, 8924680481737974346ull, 8171778526743586344ull}}, {{10327784151990721993ull, 4865031754209968519ull, 5577925301086233966ull, 5107361579214741465ull}}, {{8298044171561014587ull, 15304661729617236457ull, 11584092644785180361ull, 6384201974018426831ull}}, {{14984241232878656137ull, 5295769106739381859ull, 9868429787554087548ull, 7980252467523033539ull}}, {{7059307761335466134ull, 12533227728566889470ull, 3861925608007610765ull, 4987657792201895962ull}}, {{18047506738524108475ull, 1831476605426448125ull, 14050779046864289265ull, 6234572240252369952ull}}, {{8724325367872971882ull, 6901031775210448061ull, 17563473808580361581ull, 7793215300315462440ull}}, {{7758546364134301378ull, 6618987868720223990ull, 10977171130362725988ull, 4870759562697164025ull}}, {{474810918313100915ull, 8273734835900279988ull, 18333149931380795389ull, 6088449453371455031ull}}, {{593513647891376143ull, 14953854563302737889ull, 18304751395798606332ull, 7610561816714318789ull}}, {{11900161076000579850ull, 122787065209435372ull, 13746312631587822910ull, 4756601135446449243ull}}, {{14875201345000724812ull, 9376855868366570023ull, 12571204771057390733ull, 5945751419308061554ull}}, {{13982315662823518111ull, 16332755853885600433ull, 6490633926966962608ull, 7432189274135076943ull}}, {{1821418261623616964ull, 10207972408678500271ull, 10974175231995433486ull, 4645118296334423089ull}}, {{16111830882311684916ull, 3536593473993349530ull, 18329405058421679762ull, 5806397870418028861ull}}, {{10916416566034830337ull, 13644113879346462721ull, 9076698267744935990ull, 7257997338022536077ull}}, {{18257206725970925826ull, 7831770312328302593ull, 15957558853108557892ull, 9072496672528170096ull}}, {{4493225176090746785ull, 14118228482059964929ull, 9973474283192848682ull, 5670310420330106310ull}}, {{10228217488540821385ull, 8424413565720180353ull, 3243470817136285045ull, 7087888025412632888ull}}, {{17396957879103414636ull, 15142202975577613345ull, 4054338521420356306ull, 8859860031765791110ull}}, {{3955569646798552291ull, 14075562878163396245ull, 16369019631169886403ull, 5537412519853619443ull}}, {{9556148076925578268ull, 12982767579276857402ull, 15849588520534970100ull, 6921765649817024304ull}}, {{2721813059302197027ull, 16228459474096071753ull, 1365241576959161009ull, 8652207062271280381ull}}, {{13230348208132342902ull, 3225258143668962989ull, 3159118994813169583ull, 5407629413919550238ull}}, {{2702877204883264916ull, 17866630734868367449ull, 13172270780371237786ull, 6759536767399437797ull}}, {{7990282524531469048ull, 13109916381730683503ull, 2630280420181883521ull, 8449420959249297247ull}}, {{11911455605473250011ull, 1276168710940595333ull, 8561454290254759057ull, 5280888099530810779ull}}, {{1054261451559398802ull, 6206896907103132071ull, 6090131844391060917ull, 6601110124413513474ull}}, {{15152884869731412214ull, 12370307152306302992ull, 16836036842343601954ull, 8251387655516891842ull}}, {{9470553043582132634ull, 12343127988618827274ull, 15134209044892139125ull, 5157117284698057401ull}}, {{2614819267622889985ull, 1593851930491370381ull, 5082703250833010195ull, 6446396605872571752ull}}, {{7880210102956000385ull, 15827372968396376688ull, 6353379063541262743ull, 8057995757340714690ull}}, {{4925131314347500241ull, 16809637132888817286ull, 8582547933140677118ull, 5036247348337946681ull}}, {{15379786179789151109ull, 11788674379256245799ull, 15339870934853234302ull, 6295309185422433351ull}}, {{14613046706309050982ull, 5512470937215531441ull, 14563152650139154974ull, 7869136481778041689ull}}, {{2215625163802075008ull, 17280352391041870863ull, 2184441378695890002ull, 4918210301111276056ull}}, {{16604589510034757472ull, 12377068451947562770ull, 2730551723369862503ull, 6147762876389095070ull}}, {{11532364850688671031ull, 10859649546507065559ull, 12636561691067103937ull, 7684703595486368837ull}}, {{14125257059321501251ull, 18316496012635385734ull, 10203694066130633912ull, 4802939747178980523ull}}, {{8433199287297100755ull, 4448875942084680552ull, 8142931564235904487ull, 6003674683973725654ull}}, {{10541499109121375944ull, 949408909178462786ull, 955292418440104801ull, 7504593354967157068ull}}, {{11200122961628247869ull, 12122595614305009001ull, 9820429798379841308ull, 4690370846854473167ull}}, {{165095646753146124ull, 15153244517881261252ull, 7663851229547413731ull, 5862963558568091459ull}}, {{206369558441432655ull, 14329869628924188661ull, 4968128018506879260ull, 7328704448210114324ull}}, {{4869647966479178723ull, 17912337036155235826ull, 6210160023133599075ull, 9160880560262642905ull}}, {{7655215997476874606ull, 8889367638383328439ull, 15410565060526969182ull, 5725550350164151815ull}}, {{4957333978418705354ull, 1888337511124384741ull, 14651520307231323574ull, 7156937937705189769ull}}, {{10808353491450769596ull, 11583793925760256734ull, 4479342328756990755ull, 8946172422131487212ull}}, {{2143534913729343094ull, 4934028194386466507ull, 12022960992327895030ull, 5591357763832179507ull}}, {{16514476697443842579ull, 15390907279837858941ull, 10417015221982480883ull, 6989197204790224384ull}}, {{6808037816522639511ull, 14626948081369935773ull, 13021269027478101104ull, 8736496505987780480ull}}, {{6560866644540343647ull, 9141842550856209858ull, 8138293142173813190ull, 5460310316242362800ull}}, {{17424455342530205366ull, 2203931151715486514ull, 10172866427717266488ull, 6825387895302953500ull}}, {{12557197141307980900ull, 2754913939644358143ull, 12716083034646583110ull, 8531734869128691875ull}}, {{14765777240958569919ull, 15556879267559887551ull, 5641708887440420491ull, 5332334293205432422ull}}, {{13845535532770824494ull, 14834413066022471535ull, 16275508146155301422ull, 6665417866506790527ull}}, {{12695233397536142714ull, 9319644295673313611ull, 15732699164266738874ull, 8331772333133488159ull}}, {{5628677864246395244ull, 10436463703223208911ull, 16750466005307793652ull, 5207357708208430099ull}}, {{2424161311880606151ull, 13045579629029011139ull, 16326396488207354161ull, 6509197135260537624ull}}, {{16865259695132921401ull, 2471916481004100211ull, 1961251536549641086ull, 8136496419075672031ull}}, {{8234944300244381924ull, 15380005855909726344ull, 8143311237984607534ull, 5085310261922295019ull}}, {{10293680375305477404ull, 10001635283032382122ull, 5567453029053371514ull, 6356637827402868774ull}}, {{3643728432277070947ull, 3278672066935701845ull, 16182688323171490201ull, 7945797284253585967ull}}, {{4583173279386863294ull, 13578385087903283413ull, 17031709229623263231ull, 4966123302658491229ull}}, {{10340652617660967022ull, 12361295341451716362ull, 7454578481746915327ull, 6207654128323114037ull}}, {{3702443735221432969ull, 10839933158387257549ull, 13929909120611032063ull, 7759567660403892546ull}}, {{4619870343727089558ull, 13692487251633117824ull, 13317879218809282943ull, 4849729787752432841ull}}, {{5774837929658861947ull, 12503923046114009376ull, 2812290968229439967ull, 6062162234690541052ull}}, {{7218547412073577434ull, 11018217789215123816ull, 3515363710286799959ull, 7577702793363176315ull}}, {{4511592132545985896ull, 13803915145900534241ull, 18338003383425107638ull, 4736064245851985196ull}}, {{10251176184109870274ull, 8031521895520891993ull, 4475760155571832932ull, 5920080307314981496ull}}, {{17425656248564725747ull, 10039402369401114991ull, 5594700194464791165ull, 7400100384143726870ull}}, {{17808564182994035448ull, 8580469490089390821ull, 17331745676822658190ull, 4625062740089829293ull}}, {{8425647173460380598ull, 1502214825756962719ull, 7829624040746159026ull, 5781328425112286617ull}}, {{5920372948398087843ull, 11101140569050979207ull, 14398716069360086686ull, 7226660531390358271ull}}, {{2788780167070221900ull, 4653053674458948201ull, 13386709068272720454ull, 9033325664237947839ull}}, {{13272202650487358448ull, 16743216601819006337ull, 15284222195311532139ull, 5645828540148717399ull}}, {{2755195257827034347ull, 16317334733846370018ull, 14493591725712027270ull, 7057285675185896749ull}}, {{12667366109138568742ull, 11173296380453186714ull, 4281931601857870376ull, 8821607093982370937ull}}, {{12528789836638993368ull, 6983310237783241696ull, 14205422297229638745ull, 5513504433738981835ull}}, {{15660987295798741710ull, 13340823815656440024ull, 13145091853109660527ull, 6891880542173727294ull}}, {{1129490046038875521ull, 12064343751143162127ull, 7207992779532299851ull, 8614850677717159118ull}}, {{7623460306415379057ull, 5234371835250782377ull, 18340053542489851119ull, 5384281673573224448ull}}, {{14141011401446611725ull, 1931278775636090067ull, 4478322854402762283ull, 6730352091966530561ull}}, {{13064578233380876752ull, 16249156524827276296ull, 10209589586430840757ull, 8412940114958163201ull}}, {{8165361395863047970ull, 12461565837230741637ull, 17910208537587745233ull, 5258087571848852000ull}}, {{14818387763256197867ull, 1741899241256263334ull, 3941016598275129926ull, 6572609464811065001ull}}, {{9299612667215471525ull, 11400746088425104976ull, 9537956766271300311ull, 8215761831013831251ull}}, {{5812257917009669703ull, 14042995332906772466ull, 3655379969705868742ull, 5134851144383644532ull}}, {{16488694433116862937ull, 8330372129278689774ull, 4569224962132335928ull, 6418563930479555665ull}}, {{11387496004541302863ull, 10412965161598362218ull, 10323217221092807814ull, 8023204913099444581ull}}, {{11728871021265702194ull, 1896417207571588482ull, 8757853772396698836ull, 5014503070687152863ull}}, {{5437716739727351934ull, 2370521509464485603ull, 6335631197068485641ull, 6268128838358941079ull}}, {{2185459906231802013ull, 7574837905257994908ull, 3307852977908219147ull, 7835161047948676349ull}}, {{10589284478249652067ull, 2428430681572552865ull, 4373251120406330919ull, 4896975654967922718ull}}, {{17848291616239452987ull, 16870596407247854793ull, 14689935937362689456ull, 6121219568709903397ull}}, {{8475306465017152522ull, 2641501435350266876ull, 4527361866421198109ull, 7651524460887379247ull}}, {{14520438577490496134ull, 3956781406307610749ull, 9747130194154330674ull, 4782202788054612029ull}}, {{4315490166580956456ull, 14169348794739289245ull, 16795598761120301246ull, 5977753485068265036ull}}, {{10006048726653583474ull, 8488313956569335748ull, 2547754377690824942ull, 7472191856335331296ull}}, {{15477152491013265479ull, 693510204428446938ull, 1592346486056765589ull, 4670119910209582060ull}}, {{10123068576911806041ull, 5478573773962946577ull, 1990433107570956986ull, 5837649887761977575ull}}, {{17265521739567145455ull, 16071589254308459029ull, 16323099439745859944ull, 7297062359702471968ull}}, {{7746844119176768107ull, 1642742494176022171ull, 1957130225972773315ull, 9121327949628089961ull}}, {{2535934565271786115ull, 17167615123355871521ull, 12752421437301453081ull, 5700829968517556225ull}}, {{7781604225017120547ull, 7624460848912675689ull, 2105468741344652640ull, 7126037460646945282ull}}, {{14338691299698788588ull, 9530576061140844611ull, 11855207963535591608ull, 8907546825808681602ull}}, {{6655839053098048916ull, 5956610038213027882ull, 12021190995637132659ull, 5567216766130426001ull}}, {{17543170853227336953ull, 2834076529338896948ull, 1191430689264252112ull, 6959020957663032502ull}}, {{3482219492824619575ull, 3542595661673621186ull, 10712660398435090948ull, 8698776197078790627ull}}, {{6788073201442775138ull, 11437494325400789049ull, 4389569739808237890ull, 5436735123174244142ull}}, {{13096777520230856827ull, 5073495869896210503ull, 14710334211615073171ull, 6795918903967805177ull}}, {{11759285881861183129ull, 1730183818942875225ull, 4552859709236677752ull, 8494898629959756472ull}}, {{432024648522157600ull, 1081364886839297016ull, 2845537318272923595ull, 5309311643724847795ull}}, {{540030810652697000ull, 15186764163831284982ull, 17391979703123318205ull, 6636639554656059743ull}}, {{9898410550170647058ull, 5148397149506942515ull, 17128288610476759853ull, 8295799443320074679ull}}, {{3880663584642960459ull, 5523591227655533024ull, 17622709409189056764ull, 5184874652075046674ull}}, {{4850829480803700574ull, 6904489034569416280ull, 12805014724631545147ull, 6481093315093808343ull}}, {{6063536851004625717ull, 4018925274784382446ull, 11394582387362043530ull, 8101366643867260429ull}}, {{17624768587160054785ull, 7123514315167626932ull, 9427457001314971158ull, 5063354152417037768ull}}, {{3584216660240516866ull, 18127764930814309474ull, 11784321251643713947ull, 6329192690521297210ull}}, {{13703642862155421890ull, 18048020145090498938ull, 5507029527699866626ull, 7911490863151621513ull}}, {{13176462807274526585ull, 15891698609108949740ull, 14971108500880886401ull, 4944681789469763445ull}}, {{16470578509093158232ull, 6029565206104023463ull, 4878827570818944290ull, 6180852236837204307ull}}, {{15976537117939059886ull, 16760328544484805137ull, 1486848445096292458ull, 7726065296046505384ull}}, {{3067806671070830573ull, 15086891358730391115ull, 929280278185182786ull, 4828790810029065865ull}}, {{17669816394120701928ull, 9635242161558213085ull, 5773286366158866387ull, 6035988512536332331ull}}, {{8252212437368713697ull, 7432366683520378453ull, 2604921939271195080ull, 7544985640670415414ull}}, {{7463475782569140013ull, 4645229177200236533ull, 15463134267326660637ull, 4715616025419009633ull}}, {{13941030746638812920ull, 10418222489927683570ull, 5493859778876162084ull, 5894520031773762042ull}}, {{8202916396443740342ull, 13022778112409604463ull, 16090696760449978413ull, 7368150039717202552ull}}, {{5641959477127287524ull, 2443414585229841867ull, 1666626876852921401ull, 9210187549646503191ull}}, {{1220381663990860750ull, 13056349161837120927ull, 7959170825674157731ull, 5756367218529064494ull}}, {{15360535135270739650ull, 11708750433869013254ull, 725591495237921356ull, 7195459023161330618ull}}, {{9977296882233648754ull, 14635938042336266568ull, 10130361405902177503ull, 8994323778951663272ull}}, {{6235810551396030472ull, 16064990304101248461ull, 6331475878688860939ull, 5621452361844789545ull}}, {{12406449207672425993ull, 15469551861699172672ull, 12526030866788464078ull, 7026815452305986931ull}}, {{15508061509590532492ull, 10113567790269190032ull, 11045852565058192194ull, 8783519315382483664ull}}, {{9692538443494082807ull, 10932665887345631674ull, 6903657853161370121ull, 5489699572114052290ull}}, {{2892301017512827701ull, 18277518377609427497ull, 17852944353306488459ull, 6862124465142565362ull}}, {{8227062290318422530ull, 18235211953584396467ull, 13092808404778334766ull, 8577655581428206703ull}}, {{2836070922235320130ull, 6785321452562859888ull, 15100534280627541085ull, 5361034738392629189ull}}, {{3545088652794150162ull, 13093337834130962764ull, 5040609795502262644ull, 6701293422990786487ull}}, {{4431360815992687702ull, 16366672292663703455ull, 1689076225950440401ull, 8376616778738483109ull}}, {{9687129537636511670ull, 3311641155273732803ull, 3361515650432719203ull, 5235385486711551943ull}}, {{7497225903618251684ull, 17974609499374329716ull, 18036952618323062715ull, 6544231858389439928ull}}, {{9371532379522814604ull, 17856575855790524241ull, 4099446699194276778ull, 8180289822986799911ull}}, {{17386422783270228888ull, 15772045928296465554ull, 9479683214637504842ull, 5112681139366749944ull}}, {{12509656442233010302ull, 10491685373515806135ull, 11849604018296881053ull, 6390851424208437430ull}}, {{11025384534363874973ull, 17726292735322145573ull, 5588632986016325508ull, 7988564280260546788ull}}, {{9196708343191115810ull, 1855560922721565175ull, 12716267653114979251ull, 4992852675162841742ull}}, {{6884199410561506859ull, 16154509208684120181ull, 6671962529538948255ull, 6241065843953552178ull}}, {{13216935281629271477ull, 15581450492427762322ull, 17563325198778461127ull, 7801332304941940222ull}}, {{12872270569445682578ull, 16655935585408433307ull, 6365392230809150300ull, 4875832690588712639ull}}, {{11478652193379715318ull, 2373175408050990018ull, 3345054270084049972ull, 6094790863235890799ull}}, {{5124943204869868339ull, 2966469260063737523ull, 18016375892887226177ull, 7618488579044863498ull}}, {{897246493829973760ull, 13383258333608305712ull, 15871920951481904264ull, 4761555361903039686ull}}, {{1121558117287467200ull, 16729072917010382140ull, 10616529152497604522ull, 5951944202378799608ull}}, {{1401947646609334000ull, 11687969109408201867ull, 13270661440622005653ull, 7439930252973499510ull}}, {{17017118343626691414ull, 9610823702593820118ull, 3682477381961365629ull, 4649956408108437194ull}}, {{12048025892678588460ull, 16625215646669663052ull, 13826468764306482844ull, 5812445510135546492ull}}, {{15060032365848235574ull, 2334775484627527199ull, 17283085955383103556ull, 7265556887669433115ull}}, {{14213354438882906564ull, 2918469355784408999ull, 16992171425801491541ull, 9081946109586791394ull}}, {{15800875551942898459ull, 4129886356578949576ull, 15231793159553320117ull, 5676216318491744621ull}}, {{1304350366219071457ull, 9774043964151074875ull, 5204683394159486434ull, 7095270398114680777ull}}, {{15465496013056003033ull, 2994182918334067785ull, 11117540261126745947ull, 8869087997643350971ull}}, {{2748405980518920040ull, 18012265388454650030ull, 4642619653990522264ull, 5543179998527094357ull}}, {{12658879512503425858ull, 4068587661858760921ull, 10414960585915540735ull, 6928974998158867946ull}}, {{1988541335347118610ull, 474048558896063248ull, 3795328695539650111ull, 8661218747698584933ull}}, {{1242838334591949132ull, 7213809376951121386ull, 4677923443925975271ull, 5413261717311615583ull}}, {{10776919955094712222ull, 4405575702761513828ull, 1235718286480081185ull, 6766577146639519479ull}}, {{13471149943868390278ull, 10118655646879280189ull, 15379705913382265193ull, 8458221433299399348ull}}, {{10725311724131437876ull, 17853374825368019878ull, 388944159009139937ull, 5286388395812124593ull}}, {{4183267618309521537ull, 8481660476427861136ull, 5097866217188812826ull, 6607985494765155741ull}}, {{5229084522886901921ull, 1378703558680050612ull, 10984018789913403937ull, 8259981868456444676ull}}, {{12491549863659089509ull, 12390904770243501392ull, 16088383780550653268ull, 5162488667785277922ull}}, {{15614437329573861886ull, 15488630962804376740ull, 10887107688833540777ull, 6453110834731597403ull}}, {{1071302588257775741ull, 5525730648223307214ull, 8997198592614538068ull, 8066388543414496754ull}}, {{14504622172943273550ull, 12676953691994342816ull, 10234935138811474196ull, 5041492839634060471ull}}, {{18130777716179091938ull, 15846192114992928520ull, 8181982905086954841ull, 6301866049542575589ull}}, {{4216728071514313306ull, 5972682088458996939ull, 14839164649786081456ull, 7877332561928219486ull}}, {{329612035482751864ull, 3732926305286873087ull, 4662791887688913006ull, 4923332851205137179ull}}, {{14247073099635603542ull, 13889529918463367166ull, 1216803841183753353ull, 6154166064006421474ull}}, {{8585469337689728620ull, 3526854342797045246ull, 10744376838334467500ull, 7692707580008026842ull}}, {{754232317628692484ull, 11427656001102929087ull, 11326921542386430091ull, 4807942237505016776ull}}, {{14777848452318029316ull, 9672883982951273454ull, 14158651927983037614ull, 6009927796881270970ull}}, {{9248938528542760837ull, 2867732941834316010ull, 8474942873124021210ull, 7512409746101588713ull}}, {{10392272598766613428ull, 6404019107073835410ull, 16826054341770983016ull, 4695256091313492945ull}}, {{3766968711603490976ull, 8005023883842294263ull, 7197509871931565058ull, 5869070114141866182ull}}, {{97024871076975816ull, 782907817948092021ull, 18220259376769232131ull, 7336337642677332727ull}}, {{4732967107273607674ull, 14813692827717278738ull, 18163638202534152259ull, 9170422053346665909ull}}, {{7569790460473392701ull, 6952715008109605259ull, 13658116885797539114ull, 5731513783341666193ull}}, {{4850552057164352972ull, 17914265796991782382ull, 3237588051964760180ull, 7164392229177082742ull}}, {{15286562108310217022ull, 3946088172530176361ull, 13270357101810726034ull, 8955490286471353427ull}}, {{2636572290052803783ull, 7077991126258748130ull, 5988130179418009819ull, 5597181429044595892ull}}, {{12519087399420780537ull, 4235802889396047258ull, 7485162724272512274ull, 6996476786305744865ull}}, {{6425487212421199863ull, 14518125648599834881ull, 13968139423768028246ull, 8745595982882181081ull}}, {{15545144553831719674ull, 4462142511947508896ull, 1812558112213935798ull, 5465997489301363176ull}}, {{984686618580097977ull, 14801050176789161929ull, 2265697640267419747ull, 6832496861626703970ull}}, {{5842544291652510375ull, 13889626702559064507ull, 12055494087189050492ull, 8540621077033379962ull}}, {{1345747173069125033ull, 17904388725954191125ull, 12146369822920544461ull, 5337888173145862476ull}}, {{6293869984763794195ull, 8545427852160575194ull, 15182962278650680577ull, 6672360216432328095ull}}, {{17090709517809518551ull, 15293470833628106896ull, 14367016829885962817ull, 8340450270540410119ull}}, {{10681693448630949095ull, 2640890243376484954ull, 15896914546319808617ull, 5212781419087756324ull}}, {{4128744773933910560ull, 7912798822647994097ull, 1424399109190209155ull, 6515976773859695406ull}}, {{9772616985844776104ull, 5279312509882604717ull, 11003870923342537252ull, 8144970967324619257ull}}, {{8413728625366679017ull, 12522942355531403756ull, 18406634373157555542ull, 5090606854577887035ull}}, {{10517160781708348771ull, 6430305907559478887ull, 18396606948019556524ull, 6363258568222358794ull}}, {{8534764958708048060ull, 8037882384449348609ull, 13772386648169669847ull, 7954073210277948493ull}}, {{16863443145260999798ull, 11941205517921924736ull, 10913584664319737606ull, 4971295756423717808ull}}, {{2632559857866698131ull, 5703134860547630113ull, 13641980830399672008ull, 6214119695529647260ull}}, {{7902385840760760568ull, 7128918575684537641ull, 17052476037999590010ull, 7767649619412059075ull}}, {{16468206196543945115ull, 9067260128230223929ull, 8351954514536049804ull, 4854781012132536922ull}}, {{6750199690397767682ull, 11334075160287779912ull, 1216571106315286447ull, 6068476265165671153ull}}, {{8437749612997209602ull, 9555907931932336986ull, 6132399901321495963ull, 7585595331457088941ull}}, {{9885279526550643905ull, 3666599448244016664ull, 6138592947539628929ull, 4740997082160680588ull}}, {{12356599408188304882ull, 9194935328732408734ull, 7673241184424536161ull, 5926246352700850735ull}}, {{6222377223380605294ull, 16105355179342898822ull, 4979865462103282297ull, 7407807940876063419ull}}, {{17724043819895042021ull, 3148317959448229907ull, 806572904600857484ull, 4629879963047539637ull}}, {{17543368756441414622ull, 3935397449310287384ull, 5619902149178459759ull, 5787349953809424546ull}}, {{3482466871842216661ull, 307560793210471327ull, 16248249723327850507ull, 7234187442261780682ull}}, {{18188141645084934539ull, 14219509046795252870ull, 11086940117305037325ull, 9042734302827225853ull}}, {{6755902509750696183ull, 11193036163460726996ull, 9235180582529342280ull, 5651708939267016158ull}}, {{8444878137188370228ull, 13991295204325908745ull, 2320603691306902042ull, 7064636174083770198ull}}, {{15167783689912850689ull, 8265746968552610123ull, 12124126650988403361ull, 8830795217604712747ull}}, {{7174021796981837729ull, 16695306901413851087ull, 5271736147654058148ull, 5519247011002945467ull}}, {{4355841227799909257ull, 2422389553057762243ull, 1977984166140184782ull, 6899058763753681834ull}}, {{833115516322498667ull, 12251358978176978612ull, 11695852244530006785ull, 8623823454692102292ull}}, {{9744069234556337475ull, 739570333719529776ull, 16533279689686030049ull, 5389889659182563932ull}}, {{12180086543195421844ull, 5536148935576800124ull, 2219855538397985945ull, 6737362073978204916ull}}, {{15225108178994277305ull, 11531872187898388059ull, 2774819422997482431ull, 8421702592472756145ull}}, {{7209849602657729364ull, 14124949145077574393ull, 13263477185441896279ull, 5263564120295472590ull}}, {{13623998021749549609ull, 13044500412919580087ull, 7355974444947594541ull, 6579455150369340738ull}}, {{12418311508759549107ull, 2470567460867311397ull, 18418340093039268985ull, 8224318937961675922ull}}, {{10067287702188412144ull, 13073319709110539383ull, 16123148576576931019ull, 5140199336226047451ull}}, {{7972423609308127276ull, 11729963617960786325ull, 15542249702293775870ull, 6425249170282559314ull}}, {{14577215530062546998ull, 5439082485596207098ull, 10204440091012444030ull, 8031561462853199143ull}}, {{13722445724716479778ull, 17234484608779793148ull, 13295304084523859374ull, 5019725914283249464ull}}, {{17153057155895599723ull, 12319733724119965627ull, 16619130105654824218ull, 6274657392854061830ull}}, {{16829635426442111749ull, 6176295118295181226ull, 11550540595213754465ull, 7843321741067577288ull}}, {{15130208159953707747ull, 15389399495002958026ull, 7219087872008596540ull, 4902076088167235805ull}}, {{9689388163087358876ull, 790005295044145917ull, 13635545858438133580ull, 6127595110209044756ull}}, {{16723421222286586499ull, 987506618805182396ull, 17044432323047666975ull, 7659493887761305945ull}}, {{1228766227074340754ull, 7534720664394320854ull, 3735241174263710003ull, 4787183679850816216ull}}, {{10759329820697701750ull, 4806714812065513163ull, 4669051467829637504ull, 5983979599813520270ull}}, {{8837476257444739284ull, 6008393515081891454ull, 15059686371641822688ull, 7479974499766900337ull}}, {{911736642475574149ull, 3755245946926182159ull, 2494774954635057324ull, 4674984062354312711ull}}, {{14974728858376631398ull, 4694057433657727698ull, 16953526748575985367ull, 5843730077942890888ull}}, {{9495039036116013439ull, 1255885773644771719ull, 2745164362010430093ull, 7304662597428613611ull}}, {{7257112776717628895ull, 6181543235483352553ull, 17266513507795201328ull, 9130828246785767013ull}}, {{16064910531516987819ull, 3863464522177095345ull, 13097413951585694782ull, 5706767654241104383ull}}, {{6246080109114071062ull, 14052702689576144990ull, 11760081421054730573ull, 7133459567801380479ull}}, {{17030972173247364635ull, 3730820306688017525ull, 10088415757891025313ull, 8916824459751725599ull}}, {{12950200617493296849ull, 13860977737748480713ull, 13222788876322972676ull, 5573015287344828499ull}}, {{2352692716584457350ull, 17326222172185600892ull, 11916800076976327941ull, 6966269109181035624ull}}, {{2940865895730571687ull, 7822719659949837403ull, 14896000096220409927ull, 8707836386476294530ull}}, {{17978942249327464968ull, 11806728815109730232ull, 13921686078565144108ull, 5442397741547684081ull}}, {{4026933737949779594ull, 14758411018887162791ull, 3567049542924266423ull, 6802997176934605102ull}}, {{421981154009836589ull, 13836327755181565585ull, 13682183965510108837ull, 8503746471168256377ull}}, {{11792953267324617628ull, 10953547856202172442ull, 1633835950802736167ull, 5314841544480160236ull}}, {{5517819547300996227ull, 9080248801825327649ull, 2042294938503420209ull, 6643551930600200295ull}}, {{11508960452553633188ull, 15961997020709047465ull, 16387926728411438973ull, 8304439913250250368ull}}, {{275571255204938887ull, 12282091147156848618ull, 10242454205257149358ull, 5190274945781406480ull}}, {{9567836105860949416ull, 6129241897091284964ull, 12803067756571436698ull, 6487843682226758100ull}}, {{11959795132326186770ull, 16884924408218882013ull, 16003834695714295872ull, 8109804602783447625ull}}, {{9780714966917560683ull, 10553077755136801258ull, 3084867657180353064ull, 5068627876739654766ull}}, {{3002521671792175046ull, 13191347193921001573ull, 13079456608330217138ull, 6335784845924568457ull}}, {{8364838108167606712ull, 7265811955546476158ull, 2514262705130607711ull, 7919731057405710572ull}}, {{616337799177366291ull, 11458661499857629455ull, 10794786227561405627ull, 4949831910878569107ull}}, {{14605480304253871576ull, 9711640856394648914ull, 8881796766024369130ull, 6187289888598211384ull}}, {{9033478343462563661ull, 2916179033638535335ull, 11102245957530461413ull, 7734112360747764230ull}}, {{12563452992305184145ull, 4128454905237778536ull, 2327217705029150479ull, 4833820225467352644ull}}, {{15704316240381480181ull, 548882613119835266ull, 2909022131286438099ull, 6042275281834190805ull}}, {{10407023263622074418ull, 14521161321681957795ull, 8247963682535435527ull, 7552844102292738506ull}}, {{4198546530550102559ull, 15993254853692305478ull, 9766663320012035108ull, 4720527563932961566ull}}, {{14471555200042404007ull, 1544824493405830231ull, 2984957113160268078ull, 5900659454916201958ull}}, {{13477757981625617104ull, 11154402653612063597ull, 12954568428305110905ull, 7375824318645252447ull}}, {{3012139421749857668ull, 107945261732915785ull, 11581524516954000728ull, 9219780398306565559ull}}, {{13411802184662130803ull, 67465788583072365ull, 14155981850737332311ull, 5762362748941603474ull}}, {{2929694675545499791ull, 13919390291011004169ull, 8471605276566889580ull, 7202953436177004343ull}}, {{8273804362859262643ull, 17399237863763755211ull, 5977820577281224071ull, 9003691795221255429ull}}, {{2865284717573345200ull, 17792052692493428863ull, 6041980870014458996ull, 5627307372013284643ull}}, {{17416663952248845212ull, 3793321791907234462ull, 2940790069090685842ull, 7034134215016605804ull}}, {{12547457903456280707ull, 13965024276738818886ull, 3675987586363357302ull, 8792667768770757255ull}}, {{3230475171232787538ull, 4116454154534373900ull, 9215021269118180170ull, 5495417355481723284ull}}, {{4038093964040984422ull, 14368939730022743183ull, 11518776586397725212ull, 6869271694352154105ull}}, {{435931436623842624ull, 17961174662528428979ull, 563412677714992803ull, 8586589617940192632ull}}, {{16413358212385759304ull, 8919891154866574159ull, 352132923571870502ull, 5366618511212620395ull}}, {{15905011747054811226ull, 1926491906728441891ull, 14275224209747001840ull, 6708273139015775493ull}}, {{15269578665391126128ull, 2408114883410552364ull, 4008972206901588588ull, 8385341423769719367ull}}, {{320114629014678022ull, 10728443838986371036ull, 9423136656954574723ull, 5240838389856074604ull}}, {{400143286268347528ull, 8798868780305575891ull, 11778920821193218404ull, 6551047987320093255ull}}, {{14335237163117598122ull, 10998585975381969863ull, 10111965008064135101ull, 8188809984150116569ull}}, {{15877052254589580682ull, 9179959243827425116ull, 17849193176108554198ull, 5118006240093822855ull}}, {{1399571244527424237ull, 2251577017929505588ull, 17699805451708304844ull, 6397507800117278569ull}}, {{1749464055659280296ull, 2814471272411881985ull, 8289698759353217343ull, 7996884750146598212ull}}, {{12622630080855519945ull, 8676573572898508096ull, 14404433761450536647ull, 4998052968841623882ull}}, {{15778287601069399931ull, 6234030947695747216ull, 8782170164958395001ull, 6247566211052029853ull}}, {{1276115427627198298ull, 12404224703047071925ull, 15589398724625381655ull, 7809457763815037316ull}}, {{3103415151480692888ull, 14670169467045501809ull, 520002166036087726ull, 4880911102384398323ull}}, {{8490954957778254014ull, 9114339796952101453ull, 14485060762827273370ull, 6101138877980497903ull}}, {{15225379715650205422ull, 2169552709335351008ull, 13494639935106703809ull, 7626423597475622379ull}}, {{9515862322281378389ull, 12885185489403064140ull, 6128306950227995928ull, 4766514748422263987ull}}, {{11894827902851722986ull, 16106481861753830175ull, 3048697669357607006ull, 5958143435527829984ull}}, {{10256848860137265828ull, 10909730290337511911ull, 3810872086697008758ull, 7447679294409787480ull}}, {{13328059565226872999ull, 2206895413033557040ull, 2381795054185630474ull, 4654799559006117175ull}}, {{16660074456533591248ull, 11981991303146722108ull, 16812301873014201804ull, 5818499448757646468ull}}, {{2378348996957437444ull, 14977489128933402636ull, 2568633267558200639ull, 7273124310947058086ull}}, {{2972936246196796805ull, 14110175392739365391ull, 12434163621302526607ull, 9091405388683822607ull}}, {{8775614181514079860ull, 15736388648103185225ull, 14688881290955160985ull, 5682128367927389129ull}}, {{15581203745319987728ull, 5835427754846817819ull, 4526043558411787520ull, 7102660459909236412ull}}, {{14864818663222596756ull, 7294284693558522274ull, 5657554448014734400ull, 8878325574886545515ull}}, {{13902197682941510877ull, 4558927933474076421ull, 1230128520795515048ull, 5548953484304090947ull}}, {{3542689048394724884ull, 5698659916842595527ull, 15372718706276557522ull, 6936191855380113683ull}}, {{18263419365775569817ull, 16346696932908020216ull, 14604212364418308998ull, 8670239819225142104ull}}, {{11414637103609731136ull, 5604999564640124731ull, 9127632727761443124ull, 5418899887015713815ull}}, {{9656610361084776016ull, 7006249455800155914ull, 6797854891274416001ull, 6773624858769642269ull}}, {{2847390914501194211ull, 13369497838177582797ull, 13109004632520407905ull, 8467031073462052836ull}}, {{4085462330776940334ull, 1438407121219907392ull, 17416499932180030749ull, 5291894420913783022ull}}, {{5106827913471175418ull, 6409694919952272144ull, 12547252878370262628ull, 6614868026142228778ull}}, {{6383534891838969272ull, 8012118649940340180ull, 6460694061108052477ull, 8268585032677785973ull}}, {{13213081344254131603ull, 7313417165426406564ull, 6343776797406226750ull, 5167865645423616233ull}}, {{16516351680317664504ull, 18365143493637784013ull, 12541407015185171341ull, 6459832056779520291ull}}, {{6810381545114916918ull, 9121371311765066305ull, 11065072750554076273ull, 8074790070974400364ull}}, {{15785703511765292834ull, 17230072115921636200ull, 16139042505951073478ull, 5046743794359000227ull}}, {{1285385315997064426ull, 12314218108047269443ull, 15562117114011453944ull, 6308429742948750284ull}}, {{15441789700278494244ull, 15392772635059086803ull, 1005902318804765814ull, 7885537178685937856ull}}, {{7345275553460364951ull, 5008796878484541348ull, 628688949252978634ull, 4928460736678711160ull}}, {{9181594441825456189ull, 15484368134960452493ull, 785861186566223292ull, 6160575920848388950ull}}, {{16088679070709208140ull, 908716094991014000ull, 10205698520062554924ull, 7700719901060486187ull}}, {{10055424419193255087ull, 9791319596224159558ull, 4072718565825402875ull, 4812949938162803867ull}}, {{3345908487136793051ull, 7627463476852811544ull, 479212188854365690ull, 6016187422703504834ull}}, {{4182385608920991314ull, 310957309211238622ull, 9822387272922732921ull, 7520234278379381042ull}}, {{16449049060857783283ull, 11723563364325493898ull, 10750678064004095979ull, 4700146423987113151ull}}, {{11337939289217453296ull, 10042768186979479469ull, 8826661561577732070ull, 5875183029983891439ull}}, {{337366056239652908ull, 3330088196869573529ull, 6421640933544777184ull, 7343978787479864299ull}}, {{5033393588726954039ull, 4162610246086966911ull, 3415365148503583576ull, 9179973484349830374ull}}, {{10063400020595428130ull, 2601631403804354319ull, 15969661273096903447ull, 5737483427718643983ull}}, {{7967564007316897259ull, 17087097310037606611ull, 15350390572943741404ull, 7171854284648304979ull}}, {{5347768990718733670ull, 2912127563837456648ull, 14576302197752288852ull, 8964817855810381224ull}}, {{3342355619199208544ull, 11043451764253186213ull, 9110188873595180532ull, 5603011159881488265ull}}, {{8789630542426398583ull, 13804314705316482766ull, 15999422110421363569ull, 7003763949851860331ull}}, {{1763666141178222421ull, 3420335326363439746ull, 15387591619599316558ull, 8754704937314825414ull}}, {{5713977356663776917ull, 15972767634259313553ull, 5005558743822184944ull, 5471690585821765884ull}}, {{11754157714257109051ull, 1519215469114590325ull, 6256948429777731181ull, 6839613232277207355ull}}, {{857639087539222601ull, 6510705354820625811ull, 3209499518794776072ull, 8549516540346509194ull}}, {{16676925494207871790ull, 4069190846762891131ull, 6617623217674122949ull, 5343447837716568246ull}}, {{16234470849332451833ull, 9698174576881001818ull, 17495401058947429494ull, 6679309797145710307ull}}, {{11069716524810788983ull, 2899346184246476465ull, 17257565305256898964ull, 8349137246432137884ull}}, {{1043800365661259ull, 11035463402008823599ull, 1562606278930786044ull, 5218210779020086178ull}}, {{13836362805739240285ull, 13794329252511029498ull, 11176629885518258363ull, 6522763473775107722ull}}, {{8072081470319274549ull, 12631225547211398969ull, 4747415320043047146ull, 8153454342218884653ull}}, {{16574265965018016353ull, 12506201985434512259ull, 5272977584240598418ull, 5095908963886802908ull}}, {{16106146437845132537ull, 6409380444938364516ull, 6591221980300748023ull, 6369886204858503635ull}}, {{1685938973596864055ull, 3400039537745567742ull, 3627341456948547125ull, 7962357756073129544ull}}, {{14888769913780203747ull, 4430867720304673790ull, 2267088410592841953ull, 4976473597545705965ull}}, {{9387590355370478875ull, 10150270668808230142ull, 7445546531668440345ull, 6220591996932132456ull}}, {{2511115907358322786ull, 17299524354437675582ull, 9306933164585550431ull, 7775739996165165570ull}}, {{15404505497381115454ull, 17729731749164629094ull, 10428519246293356923ull, 4859837497603228481ull}}, {{10032259834871618509ull, 17550478668028398464ull, 17647335076294084058ull, 6074796872004035601ull}}, {{12540324793589523136ull, 12714726298180722272ull, 8224110790085441361ull, 7593496090005044502ull}}, {{7837702995993451960ull, 1029174908721869564ull, 528383225376012947ull, 4745935056253152814ull}}, {{9797128744991814950ull, 15121526691184500667ull, 9883851068574791991ull, 5932418820316441017ull}}, {{7634724912812380783ull, 14290222345553237930ull, 16966499854145877893ull, 7415523525395551271ull}}, {{9383389088935125894ull, 11237231975184467658ull, 17521591436482255539ull, 4634702203372219544ull}}, {{2505864324314131559ull, 9434853950553196669ull, 3455245221893267808ull, 5793377754215274431ull}}, {{7744016423820052353ull, 11793567438191495836ull, 18154114582648748472ull, 7241722192769093038ull}}, {{9680020529775065441ull, 14741959297739369795ull, 13469271191456159782ull, 9052152740961366298ull}}, {{3744169821895721949ull, 4602038542659718218ull, 13029980513087487768ull, 5657595463100853936ull}}, {{13903584314224428244ull, 5752548178324647772ull, 16287475641359359710ull, 7071994328876067420ull}}, {{17379480392780535305ull, 16414057259760585523ull, 1912600477989648021ull, 8839992911095084276ull}}, {{8556332236274140614ull, 12564628796564059904ull, 10418747335598305821ull, 5524995569434427672ull}}, {{10695415295342675767ull, 1870727940422911168ull, 13023434169497882277ull, 6906244461793034590ull}}, {{13369269119178344708ull, 6950095943956026864ull, 7055920675017577038ull, 8632805577241293238ull}}, {{8355793199486465443ull, 18178868020254680502ull, 18245008477168149360ull, 5395503485775808273ull}}, {{1221369462503305996ull, 4276840951608799012ull, 8971202541178022989ull, 6744379357219760342ull}}, {{1526711828129132494ull, 9957737207938386669ull, 1990631139617752928ull, 8430474196524700428ull}}, {{3260037901794401761ull, 6223585754961491668ull, 10467516499115871388ull, 5269046372827937767ull}}, {{4075047377243002201ull, 7779482193701864585ull, 8472709605467451331ull, 6586307966034922209ull}}, {{9705495239981140656ull, 5112666723699942827ull, 15202573025261702068ull, 8232884957543652761ull}}, {{3760091515774518958ull, 12418788739167240075ull, 2584079113147481936ull, 5145553098464782976ull}}, {{88428376290760793ull, 15523485923959050094ull, 3230098891434352420ull, 6431941373080978720ull}}, {{9333907507218226799ull, 957613331239261001ull, 4037623614292940526ull, 8039926716351223400ull}}, {{17362907238079861510ull, 14433566387306701837ull, 2523514758933087828ull, 5024954197719514625ull}}, {{7868575992317663175ull, 18041957984133377297ull, 7766079467093747689ull, 6281192747149393281ull}}, {{14447406008824466873ull, 8717389424884557909ull, 14319285352294572516ull, 7851490933936741601ull}}, {{11335471764728985748ull, 14671740427407624501ull, 2032024317543025966ull, 4907181833710463501ull}}, {{334281650629068472ull, 9116303497404754819ull, 7151716415356170362ull, 6133977292138079376ull}}, {{14252910118568499302ull, 2172007334901167715ull, 8939645519195212953ull, 7667471615172599220ull}}, {{6602225814891618112ull, 12886719630381699582ull, 14810650486351783903ull, 4792169759482874512ull}}, {{17476154305469298448ull, 11496713519549736573ull, 66569034230178263ull, 5990212199353593141ull}}, {{8010134826554459348ull, 9759205881009782813ull, 4694897311215110733ull, 7487765249191991426ull}}, {{7312177275810231045ull, 8405346684844808210ull, 7545996837936832112ull, 4679853280744994641ull}}, {{18363593631617564614ull, 10506683356056010262ull, 14044182065848428044ull, 5849816600931243301ull}}, {{13731120002667179959ull, 13133354195070012828ull, 3720169527028371343ull, 7312270751164054127ull}}, {{17163900003333974949ull, 11805006725410128131ull, 38525890358076275ull, 9140338438955067659ull}}, {{8421594492870040391ull, 5072286194167636130ull, 16164979745969655336ull, 5712711524346917286ull}}, {{1303621079232774681ull, 6340357742709545163ull, 10982852645607293362ull, 7140889405433646608ull}}, {{15464584404323132063ull, 17148819215241707261ull, 13728565807009116702ull, 8926111756792058260ull}}, {{11971208261915651492ull, 6106325991098679134ull, 17803725666235473747ull, 5578819847995036412ull}}, {{5740638290539788556ull, 3021221470445961014ull, 3807913009084790568ull, 6973524809993795516ull}}, {{16399169900029511503ull, 3776526838057451267ull, 4759891261355988210ull, 8716906012492244395ull}}, {{7943638178304750738ull, 6972015292213294946ull, 669089029133798679ull, 5448066257807652747ull}}, {{706175686026162614ull, 4103333096839230779ull, 14671419341699412061ull, 6810082822259565933ull}}, {{14717777662814866979ull, 9740852389476426377ull, 4504216121842101364ull, 8512603527824457417ull}}, {{2281082011618210006ull, 15311404780277542294ull, 14344350122219783112ull, 5320377204890285885ull}}, {{12074724551377538316ull, 692511901637376251ull, 4095379597492565179ull, 6650471506112857357ull}}, {{10481719670794534991ull, 14700697932328884026ull, 9730910515293094377ull, 8313089382641071696ull}}, {{11162760812673972273ull, 2270407180064470660ull, 6081819072058183986ull, 5195680864150669810ull}}, {{13953451015842465341ull, 12061381011935364133ull, 16825645876927505790ull, 6494601080188337262ull}}, {{3606755714520917965ull, 5853354228064429359ull, 11808685309304606430ull, 8118251350235421578ull}}, {{9171751349216655584ull, 17493404447822432061ull, 11992114336742766922ull, 5073907093897138486ull}}, {{16076375204948207384ull, 12643383522923264268ull, 5766770884073682845ull, 6342383867371423108ull}}, {{1648724932475707614ull, 1969171348371916624ull, 7208463605092103557ull, 7927979834214278885ull}}, {{1030453082797317259ull, 3536575101946141842ull, 6811132762396258675ull, 4954987396383924303ull}}, {{10511438390351422382ull, 18255776932714841014ull, 3902229934567935439ull, 6193734245479905379ull}}, {{3915925951084502169ull, 18208035147466163364ull, 266101399782531395ull, 7742167806849881724ull}}, {{11670825756282589664ull, 9074178957952658150ull, 9389685411718857930ull, 4838854879281176077ull}}, {{5365160158498461271ull, 2119351660586046880ull, 16348792783075960317ull, 6048568599101470096ull}}, {{6706450198123076589ull, 7260875594159946504ull, 1989246905135398780ull, 7560710748876837621ull}}, {{4191531373826922868ull, 13761419283204742373ull, 3549122324923318189ull, 4725444218048023513ull}}, {{9851100235711041489ull, 3366716048723764254ull, 9048088924581535641ull, 5906805272560029391ull}}, {{3090503257784026054ull, 8820081079332093222ull, 6698425137299531647ull, 7383506590700036739ull}}, {{15766622591397179996ull, 12430079702223640119ull, 1880672701598513327ull, 4614691619187522962ull}}, {{15096592220819087091ull, 10925913609352162245ull, 11574212913852917467ull, 5768364523984403702ull}}, {{5035682220741695151ull, 9045705993262814903ull, 5244394105461371026ull, 7210455654980504628ull}}, {{1682916757499731035ull, 2083760454723742821ull, 6555492631826713783ull, 9013069568725630785ull}}, {{3357665982651025849ull, 8219879311843421119ull, 15626397940960165874ull, 5633168480453519240ull}}, {{18032140533595946023ull, 1051477102949500590ull, 1086253352490655727ull, 7041460600566899051ull}}, {{13316803630140156721ull, 15149404433969039450ull, 15192874745895483370ull, 8801825750708623813ull}}, {{12934688287264985855ull, 14080063789658037560ull, 11801389725398371058ull, 5501141094192889883ull}}, {{16168360359081232318ull, 8376707700217771142ull, 10140051138320575919ull, 6876426367741112354ull}}, {{10987078411996764589ull, 5859198606844826024ull, 3451691886045944091ull, 8595532959676390443ull}}, {{6866924007497977869ull, 1356156120064322313ull, 18298208493274572721ull, 5372208099797744026ull}}, {{13195341027799860240ull, 6306881168507790795ull, 13649388579738440093ull, 6715260124747180033ull}}, {{11882490266322437395ull, 12495287479062126398ull, 3226677669390886404ull, 8394075155933975042ull}}, {{2814870398024135468ull, 17032926711268604807ull, 6628359561796691906ull, 5246296972458734401ull}}, {{17353646052812333047ull, 12067786352230980200ull, 12897135470673252787ull, 6557871215573418001ull}}, {{3245313492305864693ull, 10473046921861337347ull, 2286361283059402272ull, 8197339019466772502ull}}, {{18169221997187023097ull, 6545654326163335841ull, 15264033857194290132ull, 5123336887166732813ull}}, {{8876469441201615159ull, 8182067907704169802ull, 5244984266210698953ull, 6404171108958416017ull}}, {{1872214764647243141ull, 14839270903057600157ull, 11167916351190761595ull, 8005213886198020021ull}}, {{3475977237118220915ull, 6968701305197306146ull, 9285790728707919949ull, 5003258678873762513ull}}, {{13568343583252551952ull, 13322562649924020586ull, 16218924429312287840ull, 6254073348592203141ull}}, {{7737057442210914132ull, 16653203312405025733ull, 6438597481358196088ull, 7817591685740253927ull}}, {{7141503910595515285ull, 10408252070253141083ull, 10941652453489954411ull, 4885994803587658704ull}}, {{4315193869817006202ull, 8398629069389038450ull, 13677065566862443014ull, 6107493504484573380ull}}, {{14617364374126033560ull, 1274914299881522254ull, 17096331958578053768ull, 7634366880605716725ull}}, {{4524166715401383071ull, 796821437425951409ull, 12991050483324977557ull, 4771479300378572953ull}}, {{10266894412679116743ull, 5607712815209827165ull, 2403755048874058234ull, 5964349125473216192ull}}, {{17445304034276283833ull, 16233013055867059764ull, 3004693811092572792ull, 7455436406841520240ull}}, {{1679942984567901588ull, 10145633159916912353ull, 1877933631932857995ull, 4659647754275950150ull}}, {{6711614749137264888ull, 8070355431468752537ull, 11570789076770848302ull, 5824559692844937687ull}}, {{13001204454848969014ull, 864572252481164863ull, 9851800327536172474ull, 7280699616056172109ull}}, {{11639819550133823364ull, 10304087352456231887ull, 16926436427847603496ull, 9100874520070215136ull}}, {{14192416246474721458ull, 6440054595285144929ull, 10579022767404752185ull, 5688046575043884460ull}}, {{3905462252811238111ull, 12661754262533819066ull, 13223778459255940231ull, 7110058218804855575ull}}, {{14105199852868823447ull, 11215506809739885928ull, 11918037055642537385ull, 8887572773506069469ull}}, {{8815749908043014654ull, 92162728446346849ull, 9754616168990279818ull, 5554732983441293418ull}}, {{15631373403481156222ull, 9338575447412709369ull, 2969898174383073964ull, 6943416229301616773ull}}, {{5704158699069281565ull, 11673219309265886712ull, 8324058736406230359ull, 8679270286627020966ull}}, {{3565099186918300978ull, 14213291095932261051ull, 590850691826506070ull, 5424543929141888104ull}}, {{18291432038930039935ull, 8543241833060550505ull, 738563364783132588ull, 6780679911427360130ull}}, {{9029231993380386206ull, 10679052291325688132ull, 10146576242833691543ull, 8475849889284200162ull}}, {{14866642032717517187ull, 13591936709719636938ull, 10953296170198445118ull, 5297406180802625101ull}}, {{9359930504042120676ull, 7766548850294770365ull, 18303306231175444302ull, 6621757726003281376ull}}, {{16311599148480038749ull, 484814026013687148ull, 4432388715259753762ull, 8277197157504101721ull}}, {{971377430945248410ull, 4914694784685942372ull, 14299457993105815861ull, 5173248223440063575ull}}, {{1214221788681560513ull, 10755054499284815869ull, 13262636472954881922ull, 6466560279300079469ull}}, {{6129463254279338545ull, 4220446087251244028ull, 2743237535911438691ull, 8083200349125099337ull}}, {{13054286570779362399ull, 331935795318333565ull, 13243738506013118942ull, 5052000218203187085ull}}, {{2482800158192039286ull, 9638291781002692765ull, 2719615077234234965ull, 6315000272753983857ull}}, {{7715186216167437011ull, 16659550744680753860ull, 8011204864970181610ull, 7893750340942479821ull}}, {{14045363421959423940ull, 15023905233852859066ull, 7312846049820057458ull, 4933593963089049888ull}}, {{8333332240594504117ull, 9556509505461298025ull, 9141057562275071823ull, 6166992453861312360ull}}, {{15028351319170518051ull, 7333950863399234627ull, 11426321952843839779ull, 7708740567326640450ull}}, {{7086876565267879830ull, 2277876280410827690ull, 11753137238954787766ull, 4817962854579150281ull}}, {{18081967743439625595ull, 12070717387368310420ull, 856363493411320995ull, 6022453568223937852ull}}, {{4155715605589980378ull, 10476710715783000122ull, 1070454366764151244ull, 7528066960279922315ull}}, {{7209008271921125640ull, 15771316234219150884ull, 16809935043723452191ull, 4705041850174951446ull}}, {{9011260339901407050ull, 15102459274346550701ull, 11789046767799539431ull, 5881302312718689308ull}}, {{15875761443304146717ull, 14266388074505800472ull, 14736308459749424289ull, 7351627890898361635ull}}, {{1397957730420631780ull, 3997927037850086879ull, 13808699556259392458ull, 9189534863622952044ull}}, {{7791252609153976718ull, 7110390417083692203ull, 17853809259516896094ull, 5743459289764345027ull}}, {{5127379743015082994ull, 18111360058209391062ull, 17705575555968732213ull, 7179324112205431284ull}}, {{15632596715623629550ull, 8804142017479575115ull, 3685225371251363651ull, 8974155140256789106ull}}, {{7464529938051074517ull, 3196745751711040495ull, 6914951875459490186ull, 5608846962660493191ull}}, {{4718976404136455242ull, 13219304226493576427ull, 4032003825896974828ull, 7011058703325616489ull}}, {{1287034486743181149ull, 16524130283116970534ull, 9651690800798606439ull, 8763823379157020611ull}}, {{14639454609496651930ull, 17245110454589188439ull, 3726463741285435072ull, 5477389611973137882ull}}, {{13687632243443427009ull, 3109643994526933933ull, 13881451713461569649ull, 6846737014966422352ull}}, {{3274482249022120049ull, 8498741011586055321ull, 17351814641826962061ull, 8558421268708027940ull}}, {{13575766451707294791ull, 7617556141454978527ull, 1621512114287075480ull, 5349013292942517463ull}}, {{12358022046206730584ull, 9521945176818723159ull, 15861948198141008062ull, 6686266616178146828ull}}, {{10835841539331025326ull, 2679059434168628141ull, 1380691173966708462ull, 8357833270222683536ull}}, {{9078243971295584781ull, 15509470201637556300ull, 862931983729192788ull, 5223645793889177210ull}}, {{11347804964119480976ull, 940093678337393759ull, 10302037016516266794ull, 6529557242361471512ull}}, {{9573070186721963316ull, 10398489134776518007ull, 12877546270645333492ull, 8161946552951839390ull}}, {{12900697894342308929ull, 15722427746090099562ull, 3436780400725945528ull, 5101216595594899619ull}}, {{6902500331073110353ull, 1206290608903072837ull, 18131033556189595623ull, 6376520744493624523ull}}, {{13239811432268775845ull, 15342921316411004758ull, 18052105926809606624ull, 7970650930617030654ull}}, {{3663196126740596999ull, 9589325822756877974ull, 6670880185828616236ull, 4981656831635644159ull}}, {{13802367195280522057ull, 11986657278446097467ull, 3726914213858382391ull, 6227071039544555199ull}}, {{12641272975673264667ull, 10371635579630233930ull, 46956748895590085ull, 7783838799430693999ull}}, {{12512481628223178321ull, 8788115246482590158ull, 6946876995700825659ull, 4864899249644183749ull}}, {{6417229998424197093ull, 6373458039675849794ull, 13295282263053419978ull, 6081124062055229686ull}}, {{17244909534885022174ull, 17190194586449588050ull, 7395730791961999164ull, 7601405077569037108ull}}, {{15389754477730526763ull, 1520499579676216723ull, 13845703781831025286ull, 4750878173480648192ull}}, {{14625507078735770550ull, 11123996511450046712ull, 17307129727288781607ull, 5938597716850810240ull}}, {{18281883848419713187ull, 9293309620885170486ull, 3187168085401425393ull, 7423247146063512801ull}}, {{6814491386834932838ull, 17337533559121701314ull, 13521195099444360630ull, 4639529466289695500ull}}, {{17741486270398441855ull, 12448544912047350834ull, 16901493874305450788ull, 5799411832862119375ull}}, {{12953485801143276511ull, 15560681140059188543ull, 16515181324454425581ull, 7249264791077649219ull}}, {{11580171233001707735ull, 5615793369791821967ull, 16032290637140644073ull, 9061580988847061524ull}}, {{14155136048267149190ull, 15039085902188358489ull, 796809611358126737ull, 5663488118029413453ull}}, {{3858862005051772776ull, 4963799322453284400ull, 5607698032625046326ull, 7079360147536766816ull}}, {{4823577506314715970ull, 15428121189921381308ull, 7009622540781307907ull, 8849200184420958520ull}}, {{12238107978301473289ull, 7336732734487169365ull, 4381014087988317442ull, 5530750115263099075ull}}, {{1462576917594677900ull, 18394287954963737515ull, 864581591558008898ull, 6913437644078873844ull}}, {{15663279202275511086ull, 13769487906849896085ull, 1080726989447511123ull, 8641797055098592305ull}}, {{12095392510635888381ull, 6300086932567491101ull, 12204669414473164212ull, 5401123159436620190ull}}, {{1284182583012696764ull, 7875108665709363877ull, 6032464731236679457ull, 6751403949295775238ull}}, {{6216914247193258859ull, 14455571850564092750ull, 16763952950900625129ull, 8439254936619719047ull}}, {{17720629459777950499ull, 2117203378961476112ull, 17394999621953972562ull, 5274534335387324404ull}}, {{3704042751012886508ull, 11869876260556620949ull, 3297005453732914086ull, 6593167919234155506ull}}, {{9241739457193496039ull, 5613973288841000378ull, 13344628854020918416ull, 8241459899042694382ull}}, {{10387773179173322928ull, 3508733305525625236ull, 3728707015335686106ull, 5150912436901683989ull}}, {{12984716473966653660ull, 13609288668761807353ull, 9272569787596995536ull, 6438640546127104986ull}}, {{2395837537176153363ull, 17011610835952259192ull, 2367340197641468612ull, 8048300682658881233ull}}, {{1497398460735095852ull, 1408884735615386187ull, 13008802669594387643ull, 5030187926661800770ull}}, {{15706806131201033527ull, 15596163974801396445ull, 7037631300138208745ull, 6287734908327250963ull}}, {{5798449608719128197ull, 5660146913219581845ull, 4185353106745373028ull, 7859668635409063704ull}}, {{5929874014663149075ull, 12760963857617014461ull, 2615845691715858142ull, 4912292897130664815ull}}, {{12024028536756324248ull, 6727832785166492268ull, 17104865169926986390ull, 6140366121413331018ull}}, {{15030035670945405310ull, 17633163018312891143ull, 12157709425553957179ull, 7675457651766663773ull}}, {{16311301321981960175ull, 8714883877231863012ull, 9904411400184917189ull, 4797161032354164858ull}}, {{1942382578767898602ull, 15505290864967216670ull, 3157142213376370678ull, 5996451290442706073ull}}, {{11651350260314649061ull, 10158241544354245029ull, 8558113785147851252ull, 7495564113053382591ull}}, {{9587936921910349615ull, 15572273002076178951ull, 12266350143358488888ull, 4684727570658364119ull}}, {{7373235133960549115ull, 1018597178885672073ull, 10721251660770723207ull, 5855909463322955149ull}}, {{13828229935878074298ull, 15108304528889253803ull, 18013250594390791912ull, 7319886829153693936ull}}, {{12673601401420204968ull, 438636587402015638ull, 4069819169278938275ull, 9149858536442117421ull}}, {{3309314857460240201ull, 16415048931622117438ull, 4849479990013030373ull, 5718661585276323388ull}}, {{13360015608680076059ull, 6683753109245483085ull, 6061849987516287967ull, 7148326981595404235ull}}, {{2864961455567931362ull, 3743005368129465953ull, 2965626465967972055ull, 8935408726994255294ull}}, {{13319815955798426861ull, 9256907382721998076ull, 15688574596512146246ull, 5584630454371409558ull}}, {{16649769944748033577ull, 2347762191547721787ull, 10387346208785407000ull, 6980788067964261948ull}}, {{16200526412507654067ull, 2934702739434652234ull, 12984182760981758750ull, 8725985084955327435ull}}, {{14737015026244671696ull, 15669247267428821358ull, 5809271216399905266ull, 5453740678097079647ull}}, {{9197896745951063812ull, 10363187047431250890ull, 2649903002072493679ull, 6817175847621349559ull}}, {{2273998895584053956ull, 8342297790861675709ull, 17147436807872780811ull, 8521469809526686948ull}}, {{3727092318953727675ull, 2908093110074853366ull, 1493775968065712199ull, 5325918630954179343ull}}, {{13882237435546935402ull, 17470174442875730419ull, 15702278015364303960ull, 6657398288692724178ull}}, {{12741110776006281348ull, 3390973979885111408ull, 10404475482350604143ull, 8321747860865905223ull}}, {{7963194235003925843ull, 9036887765069276486ull, 13420326204110209445ull, 5201092413041190764ull}}, {{730620756900131495ull, 15907795724763983512ull, 16775407755137761806ull, 6501365516301488455ull}}, {{913275946125164369ull, 10661372619100203582ull, 16357573675494814354ull, 8126706895376860569ull}}, {{14405855521610391443ull, 11275043905365015142ull, 3305954519543177115ull, 5079191809610537856ull}}, {{8783947365158213495ull, 9482118863278881024ull, 4132443149428971394ull, 6348989762013172320ull}}, {{10979934206447766869ull, 2629276542243825472ull, 5165553936786214243ull, 7936237202516465400ull}}, {{6862458879029854293ull, 17784198903398248584ull, 3228471210491383901ull, 4960148251572790875ull}}, {{8578073598787317866ull, 8395190573965647018ull, 17870647068396393589ull, 6200185314465988593ull}}, {{1499219961629371525ull, 15105674235884446677ull, 8503250780213328274ull, 7750231643082485742ull}}, {{3242855485232051155ull, 14052732415855167077ull, 702845719205942267ull, 4843894776926553589ull}}, {{8665255374967451848ull, 12954229501391570942ull, 5490243167434815738ull, 6054868471158191986ull}}, {{1608197181854539002ull, 6969414839884687870ull, 16086175996148295481ull, 7568585588947739982ull}}, {{14840181293941250588ull, 15885099320996399678ull, 5442173979165296771ull, 4730365993092337489ull}}, {{9326854580571787427ull, 15244688132818111694ull, 11414403492384008868ull, 5912957491365421861ull}}, {{2435196188859958476ull, 609116092313088002ull, 432946310197847374ull, 7391196864206777327ull}}, {{6133683636464861952ull, 14215755612977843713ull, 7188120471514736464ull, 4619498040129235829ull}}, {{12278790564008465343ull, 17769694516222304641ull, 13596836607820808484ull, 5774372550161544786ull}}, {{1513430149728417967ull, 3765374071568329186ull, 7772673722921234798ull, 7217965687701930983ull}}, {{11115159724015298267ull, 13930089626315187290ull, 5104156135224155593ull, 9022457109627413729ull}}, {{11558660845936949321ull, 1788776988805910200ull, 14719312630583567006ull, 5639035693517133580ull}}, {{14448326057421186651ull, 11459343272862163558ull, 18399140788229458757ull, 7048794616896416975ull}}, {{8837035534921707506ull, 489121035795540736ull, 18387239966859435543ull, 8810993271120521219ull}}, {{5523147209326067191ull, 7223229675013294816ull, 9186181970073453262ull, 5506870794450325762ull}}, {{6903934011657583989ull, 18252409130621394328ull, 2259355425737040769ull, 6883588493062907203ull}}, {{8629917514571979986ull, 8980453357994579198ull, 16659252337453464674ull, 8604485616328634003ull}}, {{782012428180099587ull, 10224469367173999903ull, 8106189701694721469ull, 5377803510205396252ull}}, {{14812573590507288196ull, 17392272727394887782ull, 10132737127118401836ull, 6722254387756745315ull}}, {{9292344951279334437ull, 3293596835534058112ull, 8054235390470614392ull, 8402817984695931644ull}}, {{5807715594549584023ull, 2058498022208786320ull, 14257269155898909803ull, 5251761240434957277ull}}, {{7259644493186980029ull, 16408180583043146612ull, 3986528389591473541ull, 6564701550543696597ull}}, {{9074555616483725036ull, 6675167673521769553ull, 9594846505416729831ull, 8205876938179620746ull}}, {{17200812306370797908ull, 11089508823592187826ull, 10608465084312844048ull, 5128673086362262966ull}}, {{12277643346108721577ull, 13861886029490234783ull, 4037209318536279252ull, 6410841357952828708ull}}, {{10735368164208514067ull, 17327357536862793479ull, 5046511648170349065ull, 8013551697441035885ull}}, {{13627134130271403148ull, 3912069432898164068ull, 5459912789320162118ull, 5008469810900647428ull}}, {{17033917662839253935ull, 14113458827977480893ull, 6824890986650202647ull, 6260587263625809285ull}}, {{7457339023266903706ull, 13030137516544463213ull, 13142799751740141213ull, 7825734079532261606ull}}, {{6966679898755508769ull, 10449678957053983460ull, 3602563826410200354ull, 4891083799707663504ull}}, {{8708349873444385961ull, 3838726659462703517ull, 4503204783012750443ull, 6113854749634579380ull}}, {{15497123360232870355ull, 186722305900991492ull, 5629005978765938054ull, 7642318437043224225ull}}, {{462330063290768164ull, 13951759496470283395ull, 15047343782797181043ull, 4776449023152015140ull}}, {{14412970634395623917ull, 12828013352160466339ull, 362435654786924688ull, 5970561278940018926ull}}, {{13404527274567141992ull, 16035016690200582924ull, 9676416605338431668ull, 7463201598675023657ull}}, {{17601201583459239553ull, 798513394520588519ull, 17576975424404989553ull, 4664500999171889785ull}}, {{17389815960896661537ull, 5609827761578123553ull, 8136161225224073229ull, 5830626248964862232ull}}, {{7902211895838663209ull, 11623970720400042346ull, 10170201531530091536ull, 7288282811206077790ull}}, {{654392832943553204ull, 14529963400500052933ull, 3489379877557838612ull, 9110353514007597238ull}}, {{2714838529803414704ull, 18304599162167308891ull, 16015920478755812844ull, 5693970946254748273ull}}, {{17228606217536432092ull, 4434004878999584497ull, 6184842543162602344ull, 7117463682818435342ull}}, {{7700699716638376403ull, 5542506098749480622ull, 16954425215808028738ull, 8896829603523044177ull}}, {{201251304471597348ull, 8075752330145813293ull, 3678986732238936105ull, 5560518502201902611ull}}, {{4863250149016884589ull, 14706376431109654520ull, 18433791470580833843ull, 6950648127752378263ull}}, {{6079062686271105736ull, 13771284520459680246ull, 18430553319798654400ull, 8688310159690472829ull}}, {{17634472234201604797ull, 8607052825287300153ull, 13824938834087852952ull, 5430193849806545518ull}}, {{8208032237469842285ull, 10758816031609125192ull, 8057801505755040382ull, 6787742312258181898ull}}, {{10260040296837302856ull, 4225148002656630682ull, 848879845339024670ull, 8484677890322727373ull}}, {{11024211203950702189ull, 16475775556942557888ull, 2836392912550584370ull, 5302923681451704608ull}}, {{13780264004938377736ull, 11371347409323421552ull, 3545491140688230463ull, 6628654601814630760ull}}, {{17225330006172972170ull, 9602498243226889036ull, 4431863925860288079ull, 8285818252268288450ull}}, {{1542459217003331799ull, 12919090429657887504ull, 7381600972090067953ull, 5178636407667680281ull}}, {{1928074021254164748ull, 2313804981790195668ull, 13838687233539972846ull, 6473295509584600351ull}}, {{2410092526567705935ull, 12115628264092520393ull, 12686673023497578153ull, 8091619386980750439ull}}, {{13035522875173285969ull, 654738637416743389ull, 14846699667327068202ull, 5057262116862969024ull}}, {{2459345538684443750ull, 10041795333625705045ull, 111630510449283636ull, 6321577646078711281ull}}, {{7685867941782942591ull, 12552244167032131306ull, 4751224156488992449ull, 7901972057598389101ull}}, {{9415353482041727024ull, 927623576754000210ull, 5275358107019314233ull, 4938732535998993188ull}}, {{2545819815697382971ull, 5771215489369888167ull, 6594197633774142791ull, 6173415669998741485ull}}, {{17017332824903892426ull, 2602333343284972304ull, 12854433060645066393ull, 7716769587498426856ull}}, {{10635833015564932766ull, 13155673385621577450ull, 8034020662903166495ull, 4822980992186516785ull}}, {{4071419232601390150ull, 11832905713599583909ull, 14654211847056346023ull, 6028726240233145981ull}}, {{9700960059179125591ull, 10179446123572091982ull, 4482706753538268817ull, 7535907800291432477ull}}, {{1451414018559565591ull, 17891368873301027249ull, 5107534730175111962ull, 4709942375182145298ull}}, {{6425953541626844892ull, 13140839054771508253ull, 15607790449573665761ull, 5887427968977681622ull}}, {{12644127945460944019ull, 2590990763182221604ull, 10286366025112306394ull, 7359284961222102028ull}}, {{15805159931826180024ull, 12462110490832552813ull, 12857957531390382992ull, 9199106201527627535ull}}, {{12184067966605056467ull, 7788819056770345508ull, 14953752484760071226ull, 5749441375954767209ull}}, {{15230084958256320584ull, 512651784108156077ull, 4857132550667925321ull, 7186801719943459012ull}}, {{5202548142538237018ull, 5252500748562583001ull, 6071415688334906651ull, 8983502149929323765ull}}, {{14780807635154867896ull, 976969958637920423ull, 6100477814423010609ull, 5614688843705827353ull}}, {{13864323525516196966ull, 5832898466724788433ull, 12237283286456151165ull, 7018361054632284191ull}}, {{3495346351613082496ull, 11902809101833373446ull, 10684918089642801052ull, 8772951318290355239ull}}, {{16019649525040340272ull, 16662627725500634211ull, 13595602833667832513ull, 5483094573931472024ull}}, {{15412875887873037436ull, 6993226601593629052ull, 16994503542084790642ull, 6853868217414340030ull}}, {{819350786131745179ull, 17964905288846812124ull, 12019757390751212494ull, 8567335271767925038ull}}, {{9735466278187116545ull, 6616379787101869673ull, 2900662350792119905ull, 5354584544854953149ull}}, {{16781018866161283585ull, 12882160752304724995ull, 8237513956917537785ull, 6693230681068691436ull}}, {{16364587564274216577ull, 2267642885098742532ull, 10296892446146922232ull, 8366538351335864295ull}}, {{1004495190816609553ull, 1417276803186714083ull, 13353086806482908251ull, 5229086469584915184ull}}, {{15090677043802925653ull, 15606654059265556315ull, 16691358508103635313ull, 6536358086981143980ull}}, {{14251660286326269162ull, 5673259518799781682ull, 2417454061419992526ull, 8170447608726429976ull}}, {{13518973697381306130ull, 17380845254532027263ull, 1510908788387495328ull, 5106529755454018735ull}}, {{12287031103299244759ull, 3279312494455482463ull, 15723694040766532873ull, 6383162194317523418ull}}, {{10747102860696668045ull, 8710826636496740983ull, 10431245514103390283ull, 7978952742896904273ull}}, {{13634468315576499384ull, 3138423638596769162ull, 18048743492383088687ull, 4986845464310565170ull}}, {{7819713357615848422ull, 17758087603528125165ull, 13337557328624085050ull, 6233556830388206463ull}}, {{14386327715447198431ull, 12974237467555380648ull, 12060260642352718409ull, 7791946037985258079ull}}, {{8991454822154499020ull, 1191369389581031049ull, 14455191929111530862ull, 4869966273740786299ull}}, {{15851004546120511679ull, 10712583773831064619ull, 13457303892962025673ull, 6087457842175982874ull}}, {{15202069664223251694ull, 18002415735716218678ull, 7598257829347756283ull, 7609322302719978593ull}}, {{4889607521712144405ull, 8945666825608942722ull, 16278126189410817437ull, 4755826439199986620ull}}, {{15335381438994956314ull, 15793769550438566306ull, 1900913663053970180ull, 5944783048999983276ull}}, {{9945854761888919584ull, 1295467864338656267ull, 2376142078817462726ull, 7430978811249979095ull}}, {{3910316216966880788ull, 14644725470493823879ull, 8402617826901996059ull, 4644361757031236934ull}}, {{276209252781213081ull, 13694220819689891945ull, 1279900246772719266ull, 5805452196289046168ull}}, {{4956947584403904256ull, 7894403987757589123ull, 1599875308465899083ull, 7256815245361307710ull}}, {{1584498462077492416ull, 5256318966269598500ull, 11223216172437149662ull, 9071019056701634637ull}}, {{10213683575653208568ull, 17120257409200662774ull, 9320353116986912490ull, 5669386910438521648ull}}, {{3543732432711734902ull, 12176949724646052660ull, 11650441396233640613ull, 7086733638048152060ull}}, {{4429665540889668627ull, 1386129100525402113ull, 14563051745292050767ull, 8858417047560190075ull}}, {{14297756009124512652ull, 7783859715469458176ull, 6796064331593837777ull, 5536510654725118797ull}}, {{17872195011405640815ull, 14341510662764210624ull, 13106766432919685125ull, 6920638318406398496ull}}, {{3893499690547499403ull, 4091830273173099569ull, 16383458041149606407ull, 8650797898007998120ull}}, {{13962652352660656887ull, 9474922948374269086ull, 10239661275718504004ull, 5406748686254998825ull}}, {{8229943403971045300ull, 11843653685467836358ull, 17411262613075517909ull, 6758435857818748531ull}}, {{1064057218109030817ull, 969509051552631736ull, 17152392247917009483ull, 8448044822273435664ull}}, {{665035761318144261ull, 16746844221716252499ull, 10720245154948130926ull, 5280028013920897290ull}}, {{14666352756929844038ull, 11710183240290539815ull, 4176934406830387850ull, 6600035017401121613ull}}, {{13721254927734917144ull, 5414357013508398961ull, 9832854026965372717ull, 8250043771751402016ull}}, {{1658255302193241359ull, 5689816142656443303ull, 6145533766853357948ull, 5156277357344626260ull}}, {{15907877183023715411ull, 7112270178320554128ull, 7681917208566697435ull, 6445346696680782825ull}}, {{1438102405070092647ull, 4278651704473304757ull, 14214082529135759698ull, 8056683370850978531ull}}, {{3204657012382501857ull, 7285843333723203377ull, 6577958571496155859ull, 5035427106781861582ull}}, {{8617507283905515225ull, 4495618148726616317ull, 17445820251224970632ull, 6294283883477326977ull}}, {{15383570123309281935ull, 5619522685908270396ull, 7972217258749049578ull, 7867854854346658722ull}}, {{391359290213525401ull, 8123887697120056902ull, 9594321805145543890ull, 4917409283966661701ull}}, {{9712571149621682560ull, 931487584545295319ull, 16604588274859317767ull, 6146761604958327126ull}}, {{7529027918599715295ull, 14999417535963782861ull, 11532363306719371400ull, 7683452006197908908ull}}, {{7011485458338516012ull, 9374635959977364288ull, 16431099103554382933ull, 4802157503873693067ull}}, {{8764356822923145015ull, 16329980968399093264ull, 15927187861015590762ull, 6002696879842116334ull}}, {{10955446028653931268ull, 11189104173644090772ull, 10685612789414712645ull, 7503371099802645418ull}}, {{16070525804763482851ull, 9299033117741250684ull, 11290194011811583307ull, 4689606937376653386ull}}, {{1641413182244801947ull, 7012105378749175452ull, 4889370477909703326ull, 5862008671720816733ull}}, {{2051766477806002434ull, 17988503760291245123ull, 10723399115814517061ull, 7327510839651020916ull}}, {{16399766152539666754ull, 8650571645081892691ull, 13404248894768146327ull, 9159388549563776145ull}}, {{7944010836123597770ull, 12324136305817264788ull, 1460126531589009598ull, 5724617843477360091ull}}, {{9930013545154497212ull, 6181798345416805177ull, 15660216219768425710ull, 7155772304346700113ull}}, {{17024202949870509419ull, 16950619968625782279ull, 5740212219428368425ull, 8944715380433375142ull}}, {{17557655871310150243ull, 3676608452750032068ull, 17422690692424893978ull, 5590447112770859463ull}}, {{3500325765428136188ull, 13819132602792315894ull, 17166677347103729568ull, 6988058890963574329ull}}, {{13598779243639946042ull, 17273915753490394867ull, 7623288628597498248ull, 8735073613704467912ull}}, {{6193394018061272325ull, 10796197345931496792ull, 4764555392873436405ull, 5459421008565292445ull}}, {{7741742522576590406ull, 18106932700841758894ull, 10567380259519183410ull, 6824276260706615556ull}}, {{453806116365962199ull, 13410293839197422810ull, 13209225324398979263ull, 8530345325883269445ull}}, {{4895314841156114279ull, 15298962677139471112ull, 10561608836963055991ull, 5331465828677043403ull}}, {{6119143551445142848ull, 14512017327996950986ull, 8590325027776432085ull, 6664332285846304254ull}}, {{16872301476161204368ull, 4304963604714025020ull, 1514534247865764299ull, 8330415357307880318ull}}, {{1321816385745976922ull, 384759243732571686ull, 14781641960198266399ull, 5206509598317425198ull}}, {{10875642519037246961ull, 14316007109947878319ull, 9253680413393057190ull, 6508136997896781498ull}}, {{8982867130369170797ull, 8671636850580072091ull, 2343728479886545680ull, 8135171247370976873ull}}, {{3308448947267037796ull, 5419773031612545057ull, 12994045345997560810ull, 5084482029606860545ull}}, {{8747247202511185149ull, 15998088326370457129ull, 2407498627214787300ull, 6355602537008575682ull}}, {{15545745021566369340ull, 1550866334253519795ull, 12232745320873259934ull, 7944503171260719602ull}}, {{7410247629265286886ull, 14804349514190613584ull, 12257151843973175362ull, 4965314482037949751ull}}, {{9262809536581608607ull, 9282064855883491172ull, 10709753786539081299ull, 6206643102547437189ull}}, {{11578511920727010759ull, 6990895051426976061ull, 17998878251601239528ull, 7758303878184296486ull}}, {{9542412959668075676ull, 4369309407141860038ull, 6637612888823386801ull, 4848939923865185304ull}}, {{2704644162730318787ull, 10073322777354712952ull, 8297016111029233501ull, 6061174904831481630ull}}, {{3380805203412898484ull, 17203339490120779094ull, 1147898101931766068ull, 7576468631039352038ull}}, {{15948061307415225265ull, 1528715144470711125ull, 14552494368989517505ull, 4735292894399595023ull}}, {{6100018578986867869ull, 6522579949015776811ull, 13578931942809508977ull, 5919116117999493779ull}}, {{3013337205306196932ull, 12764910954697108918ull, 12361978910084498317ull, 7398895147499367224ull}}, {{15718393808598536795ull, 10283912355899387025ull, 7726236818802811448ull, 4624309467187104515ull}}, {{5812934205466007281ull, 12854890444874233782ull, 5046110005076126406ull, 5780386833983880644ull}}, {{16489539793687284909ull, 6845241019238016419ull, 6307637506345158008ull, 7225483542479850805ull}}, {{16000238723681718232ull, 8556551274047520524ull, 12496232901358835414ull, 9031854428099813506ull}}, {{776777165446298087ull, 736158527852312424ull, 12421831581776660038ull, 5644909017562383441ull}}, {{970971456807872609ull, 10143570196670166338ull, 1692231421938661335ull, 7056136271952979302ull}}, {{10437086357864616569ull, 8067776727410320018ull, 11338661314278102477ull, 8820170339941224127ull}}, {{11134864992092773260ull, 7348203463845143963ull, 14004192349064895904ull, 5512606462463265079ull}}, {{9306895221688578671ull, 9185254329806429954ull, 12893554417903731976ull, 6890758078079081349ull}}, {{2410246990255947531ull, 11481567912258037443ull, 2281884967097501258ull, 8613447597598851687ull}}, {{17647305433405824871ull, 11787665963588661305ull, 8343707132077020142ull, 5383404748499282304ull}}, {{8224073736475117376ull, 5511210417631050824ull, 10429633915096275178ull, 6729255935624102880ull}}, {{10280092170593896720ull, 16112385058893589338ull, 13037042393870343972ull, 8411569919530128600ull}}, {{11036743625048573354ull, 846868624953717528ull, 8148151496168964983ull, 5257231199706330375ull}}, {{13795929531310716693ull, 14893643836474310622ull, 5573503351783818324ull, 6571538999632912969ull}}, {{8021539877283620058ull, 170310721883336662ull, 11578565208157160810ull, 8214423749541141211ull}}, {{401776404874874632ull, 4718130219604473318ull, 4930760245884531554ull, 5134014843463213257ull}}, {{9725592542948369098ull, 15121034811360367455ull, 10775136325783052346ull, 6417518554329016571ull}}, {{7545304660258073469ull, 9677921477345683511ull, 8857234388801427529ull, 8021898192911270714ull}}, {{11633344440302377774ull, 17577915969409521954ull, 10147457511428280109ull, 5013686370569544196ull}}, {{5318308513523196410ull, 8137336906479738731ull, 12684321889285350137ull, 6267107963211930245ull}}, {{2036199623476607608ull, 14783357151527061318ull, 2020344306324523959ull, 7833884954014912807ull}}, {{15107682819955043467ull, 16157127247345495179ull, 8180244219093909330ull, 4896178096259320504ull}}, {{14272917506516416430ull, 10973037022327093166ull, 10225305273867386663ull, 6120222620324150630ull}}, {{8617774846290744729ull, 9104610259481478554ull, 3558259555479457521ull, 7650278275405188288ull}}, {{9997795297359103360ull, 17219596458244393856ull, 2223912222174660950ull, 4781423922128242680ull}}, {{12497244121698879200ull, 12301123535950716512ull, 2779890277718326188ull, 5976779902660303350ull}}, {{15621555152123599000ull, 15376404419938395640ull, 12698234884002683543ull, 7470974878325379187ull}}, {{9763471970077249375ull, 16527781790102579131ull, 5630553793287983262ull, 4669359298953361992ull}}, {{7592653944169173815ull, 11436355200773448106ull, 7038192241609979078ull, 5836699123691702490ull}}, {{267445393356691460ull, 5072071964112034325ull, 18021112338867249656ull, 7295873904614628112ull}}, {{4945992760123252229ull, 6340089955140042906ull, 4079646349874510454ull, 9119842380768285141ull}}, {{7702931493504420547ull, 17797614277244690528ull, 4855621977885262985ull, 5699901487980178213ull}}, {{9628664366880525684ull, 8411959791273699448ull, 10681213490783966636ull, 7124876859975222766ull}}, {{12035830458600657105ull, 10514949739092124310ull, 4128144826625182487ull, 8906096074969028458ull}}, {{2910708018198022787ull, 13489372614573659550ull, 7191776535068126958ull, 5566310046855642786ull}}, {{12861757059602304291ull, 7638343731362298629ull, 18213092705689934506ull, 6957887558569553482ull}}, {{2242138269220716652ull, 324557627348097479ull, 13542993845257642325ull, 8697359448211941853ull}}, {{8318865445904029764ull, 2508691526306254876ull, 10770214162499720405ull, 5435849655132463658ull}}, {{10398581807380037204ull, 7747550426310206499ull, 4239395666269874698ull, 6794812068915579573ull}}, {{8386541240797658601ull, 461065996032982316ull, 9910930601264731277ull, 8493515086144474466ull}}, {{14464960312353312434ull, 2594009256734307899ull, 10806017644217844952ull, 5308446928840296541ull}}, {{13469514372014252638ull, 3242511570917884874ull, 18119208073699694094ull, 6635558661050370676ull}}, {{7613520928163039990ull, 13276511500502131901ull, 4202266018415066001ull, 8294448326312963346ull}}, {{7064293589315593946ull, 1380290660172750582ull, 7238102279936804155ull, 5184030203945602091ull}}, {{18053739023499268240ull, 15560421380498101939ull, 4435941831493617289ull, 6480037754932002614ull}}, {{17955487760946697396ull, 5615468670340463712ull, 14768299326221797420ull, 8100047193665003267ull}}, {{11222179850591685873ull, 12733039955817565628ull, 6924344069674929435ull, 5062529496040627042ull}}, {{14027724813239607341ull, 11304613926344569131ull, 17878802123948437602ull, 6328161870050783802ull}}, {{12922969998122121272ull, 4907395371075935606ull, 13125130618080771195ull, 7910202337563479753ull}}, {{3465170230398937891ull, 761279097708765802ull, 1285677608659400141ull, 4943876460977174846ull}}, {{13554834824853448172ull, 5563284890563345156ull, 10830469047679025984ull, 6179845576221468557ull}}, {{16943543531066810215ull, 6954106113204181445ull, 18149772328026170384ull, 7724806970276835696ull}}, {{12895557716130450336ull, 4346316320752613403ull, 11343607705016356490ull, 4828004356423022310ull}}, {{11507761126735675016ull, 14656267437795542562ull, 4956137594415669804ull, 6035005445528777888ull}}, {{5161329371564817962ull, 18320334297244428203ull, 6195171993019587255ull, 7543756806910972360ull}}, {{919987848014317275ull, 18367737963418849483ull, 3871982495637242034ull, 4714848004319357725ull}}, {{14985042865300060305ull, 13736300417418786045ull, 9451664137973940447ull, 5893560005399197156ull}}, {{4896245526342911669ull, 12558689503346094653ull, 11814580172467425559ull, 7366950006748996445ull}}, {{10731992926356027491ull, 11086675860755230412ull, 933167160302118237ull, 9208687508436245557ull}}, {{15930867615827292990ull, 9235015422185712959ull, 2889072484402517850ull, 5755429692772653473ull}}, {{15301898501356728333ull, 2320397240877365391ull, 8223026623930535217ull, 7194287115965816841ull}}, {{14515687108268522512ull, 7512182569524094643ull, 14890469298340556925ull, 8992858894957271051ull}}, {{6766461433454132618ull, 7000957115166253104ull, 7000700302249154126ull, 5620536809348294407ull}}, {{8458076791817665773ull, 17974568430812592188ull, 4139189359384054753ull, 7025671011685368009ull}}, {{10572595989772082216ull, 8633152483233576523ull, 9785672717657456346ull, 8782088764606710011ull}}, {{4302029484393857433ull, 10007406320448373231ull, 3810202439322216264ull, 5488805477879193757ull}}, {{765850837064933887ull, 12509257900560466539ull, 9374439067580158234ull, 6861006847348992196ull}}, {{14792371601613331071ull, 6413200338845807365ull, 11718048834475197793ull, 8576258559186240245ull}}, {{11551075260222025872ull, 15537465257847099363ull, 9629623530760692572ull, 5360161599491400153ull}}, {{9827158056850144435ull, 975087498599322588ull, 16648715431878253620ull, 6700201999364250191ull}}, {{12283947571062680544ull, 1218859373249153235ull, 16199208271420429121ull, 8375252499205312739ull}}, {{5371624222700481388ull, 12291002154349190532ull, 7818662160424074248ull, 5234532812003320462ull}}, {{6714530278375601735ull, 15363752692936488165ull, 549955663675317002ull, 6543166015004150578ull}}, {{13004848866396890073ull, 9981318829315834398ull, 9910816616448922061ull, 8178957518755188222ull}}, {{3516344523070668392ull, 8544167277536090451ull, 1582574366853188384ull, 5111848449221992639ull}}, {{18230488709120499201ull, 10680209096920113063ull, 15813276013848649192ull, 6389810561527490798ull}}, {{18176424867973236098ull, 13350261371150141329ull, 10543222980456035682ull, 7987263201909363498ull}}, {{4442736514842190705ull, 12955599375396226235ull, 11201200381212410205ull, 4992039501193352186ull}}, {{941734625125350477ull, 2359441163963119082ull, 4778128439660736949ull, 6240049376491690233ull}}, {{10400540318261463905ull, 7560987473381286756ull, 10584346568003309090ull, 7800061720614612791ull}}, {{15723709735768190749ull, 9337303189290692126ull, 13532745632643150037ull, 4875038575384132994ull}}, {{10431265132855462628ull, 16283315005040753062ull, 7692560003949161738ull, 6093798219230166243ull}}, {{3815709379214552476ull, 11130771719446165520ull, 5004013986509064269ull, 7617247774037707804ull}}, {{2384818362009095298ull, 9262575333867547402ull, 12350880778422940976ull, 4760779858773567377ull}}, {{12204394989366144930ull, 11578219167334434252ull, 1603542917746512508ull, 5950974823466959222ull}}, {{15255493736707681163ull, 14472773959168042815ull, 11227800684037916443ull, 7438718529333699027ull}}, {{16452212613083382583ull, 6739640715266332807ull, 4711532418310003825ull, 4649199080833561892ull}}, {{15953579747926840324ull, 13036236912510303913ull, 5889415522887504781ull, 5811498851041952365ull}}, {{6106916629626386693ull, 2460238085355716180ull, 11973455422036768881ull, 7264373563802440456ull}}, {{7633645787032983367ull, 7686983625122033129ull, 14966819277545961101ull, 9080466954753050570ull}}, {{16300243662964084364ull, 7110207774914964657ull, 13965948066893613592ull, 5675291846720656606ull}}, {{6540246523422941743ull, 8887759718643705822ull, 8234063046762241182ull, 7094114808400820758ull}}, {{17398680191133452987ull, 1886327611449856469ull, 1069206771598025670ull, 8867643510501025948ull}}, {{13180018128672102069ull, 15014012812438324005ull, 9891626269103541851ull, 5542277194063141217ull}}, {{2639964605557963874ull, 14155829997120517103ull, 16976218854806815218ull, 6927846492578926521ull}}, {{17135013812229618555ull, 8471415459545870570ull, 7385215513226355311ull, 8659808115723658152ull}}, {{15321069651070899501ull, 12212163689857250962ull, 4615759695766472069ull, 5412380072327286345ull}}, {{9927965026983848568ull, 1430146557039399991ull, 10381385638135477991ull, 6765475090409107931ull}}, {{7798270265302422806ull, 15622741251581413701ull, 8365046029241959584ull, 8456843863011384914ull}}, {{7179761925027708206ull, 9764213282238383563ull, 9839839786703612644ull, 5285527414382115571ull}}, {{4363016387857247353ull, 12205266602797979454ull, 7688113714952127901ull, 6606909267977644464ull}}, {{14677142521676334999ull, 1421525198215310605ull, 9610142143690159877ull, 8258636584972055580ull}}, {{11479057085261403327ull, 3194296258098263080ull, 15229710876661125731ull, 5161647865607534737ull}}, {{14348821356576754158ull, 17827928377904992562ull, 5202080540544243451ull, 6452059832009418422ull}}, {{8712654658866166890ull, 17673224453953852799ull, 15725972712535080122ull, 8065074790011773027ull}}, {{12362938189432436162ull, 15657451302148545903ull, 7522889936120731124ull, 5040671743757358142ull}}, {{10841986718363157299ull, 1125070053976130763ull, 180240383296138098ull, 6300839679696697678ull}}, {{8940797379526558719ull, 10629709604324939262ull, 9448672515974948430ull, 7876049599620872097ull}}, {{976312343776711296ull, 2031882484275699135ull, 17434635368552812529ull, 4922530999763045060ull}}, {{15055448485003052832ull, 7151539123772011822ull, 3346550136981464045ull, 6153163749703806326ull}}, {{9595938569399040231ull, 13551109923142402682ull, 13406559708081605864ull, 7691454687129757907ull}}, {{10609147624301788049ull, 8469443701964001676ull, 6073256808337309713ull, 4807159179456098692ull}}, {{13261434530377235061ull, 15198490645882389999ull, 7591571010421637141ull, 6008948974320123365ull}}, {{11965107144544155922ull, 5163055252070823787ull, 14101149781454434331ull, 7511186217900154206ull}}, {{5172348956126403499ull, 921066523330570915ull, 4201532594981633553ull, 4694491386187596379ull}}, {{1853750176730616470ull, 5763019172590601548ull, 640229725299654037ull, 5868114232734495474ull}}, {{2317187720913270588ull, 11815459984165639839ull, 10023659193479343354ull, 7335142790918119342ull}}, {{16731542706423751946ull, 5545952943352273990ull, 3306201954994403385ull, 9168928488647649178ull}}, {{5845528173087457063ull, 14995435635663641004ull, 6678062240298890019ull, 5730580305404780736ull}}, {{7306910216359321328ull, 14132608526152163351ull, 8347577800373612524ull, 7163225381755975920ull}}, {{4521951752021763756ull, 17665760657690204189ull, 10434472250467015655ull, 8954031727194969900ull}}, {{5132062854227296300ull, 17958629438697459474ull, 15744917193396660592ull, 5596269829496856187ull}}, {{15638450604638896183ull, 4001542724662272726ull, 15069460473318437837ull, 6995337286871070234ull}}, {{10324691218943844420ull, 9613614424255228812ull, 9613453554793271488ull, 8744171608588837793ull}}, {{15676304048694678571ull, 6008509015159518007ull, 17537623517814264440ull, 5465107255368023620ull}}, {{14983694042440960309ull, 7510636268949397509ull, 3475285323558278934ull, 6831384069210029526ull}}, {{4894559497769036674ull, 164923299331971079ull, 13567478691302624476ull, 8539230086512536907ull}}, {{9976628713746729778ull, 9326449098937257732ull, 6173831172850446345ull, 5337018804070335567ull}}, {{12470785892183412222ull, 16269747392098960069ull, 3105602947635670027ull, 6671273505087919459ull}}, {{1753424309947101565ull, 15725498221696312183ull, 17717061739826751246ull, 8339091881359899323ull}}, {{8013419221358020335ull, 5216750370132807210ull, 8767320578178025577ull, 5211932425849937077ull}}, {{793401989842749610ull, 11132623981093396917ull, 15570836741149919875ull, 6514915532312421346ull}}, {{5603438505730824917ull, 9304093957939358242ull, 10240173889582624036ull, 8143644415390526683ull}}, {{8113835084509153477ull, 15038430760566874709ull, 4094265671775446070ull, 5089777759619079177ull}}, {{14753979874063829750ull, 9574666413853817578ull, 9729518108146695492ull, 6362222199523848971ull}}, {{9219102805725011380ull, 11968333017317271973ull, 7550211616755981461ull, 7952777749404811214ull}}, {{8067782262791826064ull, 9786051145036988935ull, 107196242045100509ull, 4970486093378007009ull}}, {{5473041810062394676ull, 16844249949723624073ull, 4745681320983763540ull, 6213107616722508761ull}}, {{11452988281005381249ull, 2608568363444978475ull, 10543787669657092330ull, 7766384520903135951ull}}, {{4852274666414669329ull, 6242041245580499451ull, 13507396321176764562ull, 4853990325564459969ull}}, {{1453657314590948757ull, 17025923593830400122ull, 3049187346188791990ull, 6067487906955574962ull}}, {{11040443680093461754ull, 12059032455433224344ull, 13034856219590765796ull, 7584359883694468702ull}}, {{6900277300058413597ull, 16760267321500541023ull, 3535099118816840718ull, 4740224927309042939ull}}, {{4013660606645629092ull, 11726962115020900471ull, 18253931953803214610ull, 5925281159136303673ull}}, {{405389739879648460ull, 5435330606921349781ull, 8982356886971854551ull, 7406601448920379592ull}}, {{2559211596638474240ull, 10314610656966925469ull, 5613973054357409094ull, 4629125905575237245ull}}, {{7810700514225480704ull, 3669891284353881028ull, 11629152336374149272ull, 5786407381969046556ull}}, {{9763375642781850880ull, 4587364105442351285ull, 14536440420467686590ull, 7233009227461308195ull}}, {{16815905571904701503ull, 14957577168657714914ull, 13558864507157220333ull, 9041261534326635244ull}}, {{15121627000867826344ull, 11654328739624765773ull, 17697662353828038516ull, 5650788458954147027ull}}, {{5066975695802619218ull, 14567910924530957217ull, 17510391923857660241ull, 7063485573692683784ull}}, {{10945405638180661926ull, 4374830600381532809ull, 3441245831112523686ull, 8829356967115854731ull}}, {{18370093569931383464ull, 16569327180520621717ull, 18291679708941184967ull, 5518348104447409206ull}}, {{9127558907132065618ull, 16099972957223389243ull, 13641227599321705401ull, 6897935130559261508ull}}, {{6797762615487694118ull, 6289908141247072842ull, 17051534499152131752ull, 8622418913199076885ull}}, {{8860287653107196728ull, 3931192588279420526ull, 12963052071183776297ull, 5389011820749423053ull}}, {{1851987529529220102ull, 9525676753776663562ull, 2368757033697556659ull, 6736264775936778817ull}}, {{11538356448766300935ull, 7295409923793441548ull, 7572632310549333728ull, 8420330969920973521ull}}, {{16434844817333713893ull, 4559631202370900967ull, 16262110240161803340ull, 5262706856200608450ull}}, {{15931870003239754462ull, 5699539002963626209ull, 11104265763347478367ull, 6578383570250760563ull}}, {{6079779448767529365ull, 2512737735277144858ull, 9268646185756960055ull, 8222979462813450704ull}}, {{8411548173907093757ull, 8487990112189297392ull, 5792903866098100034ull, 5139362164258406690ull}}, {{10514435217383867197ull, 1386615603381845932ull, 16464501869477400851ull, 6424202705323008362ull}}, {{13143044021729833996ull, 15568327559509471127ull, 11357255299991975255ull, 8030253381653760453ull}}, {{15131931541222228103ull, 16647733752334501310ull, 9404127571708678486ull, 5018908363533600283ull}}, {{9691542389673009321ull, 11586295153563350830ull, 7143473446208460204ull, 6273635454417000354ull}}, {{2891055950236485843ull, 14482868941954188538ull, 18152713844615351063ull, 7842044318021250442ull}}, {{6418595987325191556ull, 15969322116362449692ull, 15957132171311982318ull, 4901277698763281526ull}}, {{8023244984156489445ull, 10738280608598286307ull, 10723043177285202090ull, 6126597123454101908ull}}, {{5417370211768223902ull, 4199478723893082076ull, 13403803971606502613ull, 7658246404317627385ull}}, {{12609228419209915747ull, 4930517211646870249ull, 1459848454612982277ull, 4786404002698517116ull}}, {{1926477468730230972ull, 10774832532985975716ull, 1824810568266227846ull, 5983005003373146395ull}}, {{2408096835912788715ull, 4245168629377693837ull, 16116071265614948520ull, 7478756254216432993ull}}, {{3810903531659186899ull, 2653230393361058648ull, 3155015513368260969ull, 4674222658885270621ull}}, {{4763629414573983623ull, 7928224010128711214ull, 8555455410137714115ull, 5842778323606588276ull}}, {{15177908805072255337ull, 5298593994233501113ull, 10694319262672142644ull, 7303472904508235345ull}}, {{5137327951058155459ull, 6623242492791876392ull, 17979585096767566209ull, 9129341130635294181ull}}, {{3210829969411347162ull, 15668741604063392505ull, 13543083694693422832ull, 5705838206647058863ull}}, {{8625223480191571857ull, 1139182931369689015ull, 12317168599939390637ull, 7132297758308823579ull}}, {{6169843331812076917ull, 6035664682639499173ull, 10784774731496850392ull, 8915372197886029474ull}}, {{6161995091596242025ull, 3772290426649686983ull, 11352170225612919399ull, 5572107623678768421ull}}, {{3090807846067914627ull, 103677014884720825ull, 355154726733985537ull, 6965134529598460527ull}}, {{8475195826012281188ull, 4741282287033288935ull, 14279001463699645633ull, 8706418161998075658ull}}, {{12214526418898757599ull, 14492516475464275344ull, 13536061933239666424ull, 5441511351248797286ull}}, {{15268158023623446998ull, 18115645594330344180ull, 7696705379694807222ull, 6801889189060996608ull}}, {{638453455819757132ull, 13421184956058154418ull, 9620881724618509028ull, 8502361486326245760ull}}, {{5010719428314736112ull, 17611612634391122319ull, 6013051077886568142ull, 5313975928953903600ull}}, {{1651713266966032235ull, 12791143756134127091ull, 7516313847358210178ull, 6642469911192379500ull}}, {{15899699638989704006ull, 6765557658312883055ull, 9395392309197762723ull, 8303087388990474375ull}}, {{16854841302009646860ull, 1922630527231857957ull, 12789649220889683558ull, 5189429618119046484ull}}, {{7233493572229894863ull, 11626660195894598255ull, 15987061526112104447ull, 6486787022648808105ull}}, {{4430180946859980674ull, 9921639226440859915ull, 6148768852357966847ull, 8108483778311010132ull}}, {{463020082573793970ull, 13118553544166619303ull, 13066352569578505087ull, 5067802361444381332ull}}, {{14413833158499406174ull, 11786505911780886224ull, 16332940711973131359ull, 6334752951805476665ull}}, {{18017291448124257717ull, 10121446371298719876ull, 6581117834684250487ull, 7918441189756845832ull}}, {{2037435118222885266ull, 13243433009702781779ull, 4113198646677656554ull, 4949025743598028645ull}}, {{16381851953060770294ull, 7330919225273701415ull, 9753184326774458597ull, 6186282179497535806ull}}, {{15865628922898574963ull, 13775335050019514673ull, 2968108371613297438ull, 7732852724371919758ull}}, {{2998489049170527496ull, 3997898387834808767ull, 15690125787540474611ull, 4833032952732449848ull}}, {{17583169366745323082ull, 385686966366123054ull, 1165913160716041648ull, 6041291190915562311ull}}, {{12755589671576878044ull, 482108707957653818ull, 15292449506177215772ull, 7551613988644452888ull}}, {{12583929563162936682ull, 9524689979328309444ull, 9557780941360759857ull, 4719758742902783055ull}}, {{15729911953953670852ull, 16517548492587774709ull, 7335540158273561917ull, 5899698428628478819ull}}, {{5827331887159924853ull, 6811877560452554675ull, 4557739179414564493ull, 7374623035785598524ull}}, {{2672478840522518162ull, 13126532968993081248ull, 5697173974268205616ull, 9218278794731998155ull}}, {{1670299275326573852ull, 8204083105620675780ull, 1254890724703934558ull, 5761424246707498847ull}}, {{2087874094158217315ull, 1031731845171068917ull, 15403671461162081910ull, 7201780308384373558ull}}, {{7221528636125159547ull, 10513036843318611954ull, 10031217289597826579ull, 9002225385480466948ull}}, {{9125141416005612621ull, 4264805017860438519ull, 15492882842853417420ull, 5626390865925291842ull}}, {{6794740751579627872ull, 5331006272325548149ull, 10142731516711995967ull, 7032988582406614803ull}}, {{13105111957901922744ull, 2052071821979547282ull, 8066728377462607055ull, 8791235728008268504ull}}, {{12802380992116089619ull, 8200073916378298907ull, 5041705235914129409ull, 5494522330005167815ull}}, {{11391290221717724120ull, 14861778413900261538ull, 1690445526465273857ull, 6868152912506459769ull}}, {{5015740740292379342ull, 4742164962093163211ull, 6724742926508980226ull, 8585191140633074711ull}}, {{828994953469043137ull, 7575539119735614911ull, 11120493356709194497ull, 5365744462895671694ull}}, {{14871301747118467633ull, 14081109918096906542ull, 4677244659031717313ull, 6707180578619589618ull}}, {{9365755147043308733ull, 3766329342338969466ull, 15069927860644422450ull, 8383975723274487022ull}}, {{10465282985329455862ull, 6965641857389243820ull, 4807018894475376127ull, 5239984827046554389ull}}, {{13081603731661819828ull, 4095366303309166871ull, 10620459636521608063ull, 6549981033808192986ull}}, {{11740318646149886881ull, 507521860709070685ull, 4052202508797234271ull, 8187476292260241233ull}}, {{9643542163057373253ull, 7234730190584251034ull, 14061841614066741179ull, 5117172682662650770ull}}, {{2831055666966940758ull, 4431726719802925889ull, 8353929980728650666ull, 6396465853328313463ull}}, {{8150505602136063851ull, 14763030436608433169ull, 5830726457483425428ull, 7995582316660391829ull}}, {{16623281047403509667ull, 3521986025494922ull, 5950047045140834845ull, 4997238947912744893ull}}, {{11555729272399611276ull, 4616088500959256557ull, 12049244824853431460ull, 6246548684890931116ull}}, {{609603535217350382ull, 5770110626199070697ull, 15061556031066789325ull, 7808185856113663895ull}}, {{11910217255579313749ull, 5912162150588113137ull, 16331001547057825184ull, 4880116160071039934ull}}, {{1052713514191978474ull, 7390202688235141422ull, 11190379896967505672ull, 6100145200088799918ull}}, {{10539263929594748901ull, 9237753360293926777ull, 4764602834354606282ull, 7625181500110999898ull}}, {{18116255002065187823ull, 10385281868611092139ull, 7589562789899016830ull, 4765738437569374936ull}}, {{18033632734154096875ull, 3758230298909089366ull, 9486953487373771038ull, 5957173046961718670ull}}, {{13318668880837845285ull, 13921159910491137516ull, 2635319822362437989ull, 7446466308702148338ull}}, {{17547540087378429112ull, 11006567953270654899ull, 6258760907403911647ull, 4654041442938842711ull}}, {{17322739090795648485ull, 9146523923160930720ull, 3211765115827501655ull, 5817551803673553389ull}}, {{3206679789785008991ull, 6821468885523775497ull, 8626392413211764973ull, 7271939754591941736ull}}, {{8620035755658649142ull, 13138522125332107275ull, 10782990516514706216ull, 9089924693239927170ull}}, {{3081679338072961762ull, 8211576328332567047ull, 11351055091249079289ull, 5681202933274954481ull}}, {{17687157227873365914ull, 14876156428843096712ull, 353760808779185399ull, 7101503666593693102ull}}, {{3662202461132155777ull, 13983509517626482987ull, 9665573047828757557ull, 8876879583242116377ull}}, {{18429777602703455025ull, 11045536457730245818ull, 17570198200961443233ull, 5548049739526322735ull}}, {{13813849966524542973ull, 18418606590590195177ull, 17351061732774416137ull, 6935062174407903419ull}}, {{3432254402873515004ull, 9188200182955580260ull, 17077141147540632268ull, 8668827718009879274ull}}, {{11368531038650722686ull, 14965997151202013470ull, 15284899235640283071ull, 5418017323756174546ull}}, {{4987291761458627549ull, 14095810420575128934ull, 9882752007695578031ull, 6772521654695218183ull}}, {{15457486738678060244ull, 13008077007291523263ull, 7741753991192084635ull, 8465652068369022729ull}}, {{16578458239314869509ull, 5824205120343508087ull, 16367811290563522657ull, 5291032542730639205ull}}, {{16111386780716198982ull, 11891942418856773013ull, 6624706057922239609ull, 6613790678413299007ull}}, {{6304175420613085015ull, 1029869968288802555ull, 3669196553975411608ull, 8267238348016623759ull}}, {{1634266628669484183ull, 643668730180501597ull, 9210776873875714111ull, 5167023967510389849ull}}, {{6654519304264243132ull, 14639643968007790708ull, 16125157110772030542ull, 6458779959387987311ull}}, {{8318149130330303915ull, 9076182923154962577ull, 15544760370037650274ull, 8073474949234984139ull}}, {{16728058252524909707ull, 10284300345399239514ull, 7409632222059837469ull, 5045921843271865087ull}}, {{11686700778801361326ull, 17467061450176437297ull, 4650354259147408932ull, 6307402304089831359ull}}, {{773317918219537945ull, 3387082739010995006ull, 1201256805506873262ull, 7884252880112289199ull}}, {{14318381754169374928ull, 15951984767164035590ull, 7668314531082877644ull, 4927658050070180749ull}}, {{8674605155856942852ull, 1493236885245492872ull, 14197079182280984960ull, 6159572562587725936ull}}, {{10843256444821178564ull, 1866546106556866090ull, 17746348977851231200ull, 7699465703234657420ull}}, {{11388721296440624507ull, 1166591316598041306ull, 1868096074302243692ull, 4812166064521660888ull}}, {{5012529583696004826ull, 1458239145747551633ull, 2335120092877804615ull, 6015207580652076110ull}}, {{10877347998047393936ull, 15657856987466603253ull, 12142272152952031576ull, 7519009475815095137ull}}, {{9104185507993315162ull, 9786160617166627033ull, 671391067953937879ull, 4699380922384434461ull}}, {{15991917903419031856ull, 7621014753030895887ull, 5450924853369810253ull, 5874226152980543076ull}}, {{15378211360846401916ull, 14137954459716007763ull, 6813656066712262816ull, 7342782691225678845ull}}, {{14611078182630614491ull, 17672443074645009704ull, 13128756101817716424ull, 9178478364032098556ull}}, {{9131923864144134057ull, 11045276921653131065ull, 17428844600490848573ull, 5736548977520061597ull}}, {{16026590848607555476ull, 18418282170493801735ull, 7950997695331397004ull, 7170686221900076997ull}}, {{15421552542332056440ull, 4576108639407700553ull, 14550433137591634160ull, 8963357777375096246ull}}, {{2720941311316453419ull, 2860067899629812846ull, 4482334692567383446ull, 5602098610859435154ull}}, {{12624548676000342582ull, 12798456911392041865ull, 14826290402564005115ull, 7002623263574293942ull}}, {{1945627789718264515ull, 11386385120812664428ull, 9309490966350230586ull, 8753279079467867428ull}}, {{10439389405428691130ull, 11728176718935303171ull, 15041803890823669924ull, 5470799424667417142ull}}, {{8437550738358476009ull, 14660220898669128964ull, 9578882826674811597ull, 6838499280834271428ull}}, {{10546938422948095011ull, 4490218068054247493ull, 11973603533343514497ull, 8548124101042839285ull}}, {{8897679523556253334ull, 14335601338602374443ull, 9789345217553390512ull, 5342577563151774553ull}}, {{6510413386017928763ull, 17919501673252968054ull, 16848367540369126044ull, 6678221953939718191ull}}, {{17361388769377186762ull, 3952633017856658451ull, 16448773407034019652ull, 8347777442424647739ull}}, {{8545024971647047774ull, 11693767673015187340ull, 7974640370182568330ull, 5217360901515404837ull}}, {{10681281214558809718ull, 5393837554414208367ull, 14579986481155598317ull, 6521701126894256046ull}}, {{8739915499771124243ull, 11353982961445148363ull, 9001611064589722088ull, 8152126408617820058ull}}, {{3156604178143258700ull, 7096239350903217727ull, 10237692933795964209ull, 5095079005386137536ull}}, {{17780813277961237087ull, 13481985207056410062ull, 12797116167244955261ull, 6368848756732671920ull}}, {{13002644560596770551ull, 3017423453538348866ull, 15996395209056194077ull, 7961060945915839900ull}}, {{12738338868800369499ull, 4191732667675161993ull, 774374968805345490ull, 4975663091197399938ull}}, {{2087865530718298161ull, 14463037871448728300ull, 10191340747861457670ull, 6219578863996749922ull}}, {{2609831913397872701ull, 8855425302456134567ull, 3515803897972046280ull, 7774473579995937403ull}}, {{8548673973514752294ull, 5534640814035084104ull, 18338278500728386589ull, 4859045987497460876ull}}, {{10685842466893440368ull, 11529987035971243034ull, 4476104052200931620ull, 6073807484371826096ull}}, {{4133931046762024652ull, 14412483794964053793ull, 5595130065251164525ull, 7592259355464782620ull}}, {{14112921950294735168ull, 11313645381066227572ull, 12720328327636753636ull, 4745162097165489137ull}}, {{17641152437868418959ull, 14142056726332784465ull, 2065352354263778333ull, 5931452621456861422ull}}, {{8216382492053359987ull, 3842512852633816870ull, 11805062479684498725ull, 7414315776821076777ull}}, {{523553039105962088ull, 4707413542109829496ull, 460635022161729847ull, 4633947360513172986ull}}, {{654441298882452610ull, 1272580909209898966ull, 9799165814556938117ull, 5792434200641466232ull}}, {{10041423660457841570ull, 6202412154939761611ull, 12248957268196172646ull, 7240542750801832790ull}}, {{7940093557144914059ull, 16976387230529477822ull, 6087824548390439999ull, 9050678438502290988ull}}, {{350872454788183383ull, 17527771046722005495ull, 13028262379598800807ull, 5656674024063931867ull}}, {{14273648623767392940ull, 17298027789975118964ull, 11673641956071113105ull, 7070842530079914834ull}}, {{17842060779709241175ull, 7787476682186734993ull, 5368680408234115574ull, 8838553162599893543ull}}, {{4233758959677193879ull, 255486907939321467ull, 10272954282787404090ull, 5524095726624933464ull}}, {{680512681169104444ull, 9542730671778927642ull, 12841192853484255112ull, 6905119658281166830ull}}, {{10074012888316156363ull, 11928413339723659552ull, 6828119030000543082ull, 8631399572851458538ull}}, {{6296258055197597727ull, 12066944355754675124ull, 8879260412177727330ull, 5394624733032161586ull}}, {{7870322568996997159ull, 5860308407838568097ull, 1875703478367383355ull, 6743280916290201983ull}}, {{14449589229673634353ull, 2713699491370822217ull, 16179687403241392906ull, 8429101145362752478ull}}, {{2113464240904939615ull, 6307748200534151790ull, 5500618608598482662ull, 5268188215851720299ull}}, {{11865202337985950326ull, 17108057287522465545ull, 2264087242320715423ull, 6585235269814650374ull}}, {{996444867200274196ull, 16773385590975694028ull, 12053481089755670087ull, 8231544087268312967ull}}, {{9846150078854947180ull, 17400895022000890623ull, 14450954708738375660ull, 5144715054542695604ull}}, {{7696001580141296071ull, 3304374703791561663ull, 18063693385922969576ull, 6430893818178369505ull}}, {{5008315956749232185ull, 4130468379739452079ull, 8744558677121548258ull, 8038617272722961882ull}}, {{10047726500609351972ull, 7193228755764545453ull, 10077035191628355565ull, 5024135795451851176ull}}, {{17171344144189077869ull, 13603221963133069720ull, 12596293989535444456ull, 6280169744314813970ull}}, {{3017436106526795720ull, 17004027453916337151ull, 6521995450064529762ull, 7850212180393517463ull}}, {{8803426594220329181ull, 15239203177125098623ull, 10993776183931412957ull, 4906382612745948414ull}}, {{6392597224348023572ull, 5213945916124209567ull, 4518848193059490389ull, 6132978265932435518ull}}, {{3379060512007641561ull, 11129118413582649863ull, 14871932278179138794ull, 7666222832415544397ull}}, {{9029441847645857832ull, 11567385026916544068ull, 11600800683075655698ull, 4791389270259715248ull}}, {{11286802309557322290ull, 5235859246790904277ull, 14501000853844569623ull, 5989236587824644060ull}}, {{273444831664489150ull, 1933138040061242443ull, 18126251067305712029ull, 7486545734780805075ull}}, {{16311804084286163383ull, 3514054284251970478ull, 9023063907852376066ull, 4679091084238003172ull}}, {{11166383068502928421ull, 13615939892169738906ull, 11278829884815470082ull, 5848863855297503965ull}}, {{4734606798773884718ull, 7796552828357397825ull, 263479300737173891ull, 7311079819121879957ull}}, {{10529944516894743801ull, 5134005017019359377ull, 4941035144348855268ull, 9138849773902349946ull}}, {{18110430369127684636ull, 12432125172491875418ull, 7699832983645422446ull, 5711781108688968716ull}}, {{13414665924554829987ull, 6316784428760068465ull, 9624791229556778058ull, 7139726385861210895ull}}, {{2933274350411373771ull, 17119352572804861390ull, 7419303018518584668ull, 8924657982326513619ull}}, {{15668354524289272319ull, 1476223321148262560ull, 2331221377360421466ull, 5577911238954071012ull}}, {{1138699081652038783ull, 11068651188290104009ull, 2914026721700526832ull, 6972389048692588765ull}}, {{6035059870492436382ull, 13835813985362630011ull, 8254219420553046444ull, 8715486310865735956ull}}, {{1466069409844078787ull, 17870755777706419565ull, 14382259174700429835ull, 5447178944291084972ull}}, {{6444272780732486388ull, 17726758703705636552ull, 17977823968375537294ull, 6808973680363856215ull}}, {{8055340975915607985ull, 12935076342777269882ull, 17860593942042033714ull, 8511217100454820269ull}}, {{9646274128374642895ull, 12696108732663181580ull, 13468714222989965023ull, 5319510687784262668ull}}, {{12057842660468303618ull, 11258449897401589071ull, 16835892778737456279ull, 6649388359730328335ull}}, {{10460617307157991618ull, 9461376353324598435ull, 16433179954994432445ull, 8311735449662910419ull}}, {{4232042807760050810ull, 8219203230041567974ull, 7964894462657826326ull, 5194834656039319012ull}}, {{14513425546554839320ull, 1050632000697184159ull, 9956118078322282908ull, 6493543320049148765ull}}, {{13530095914766161246ull, 1313290000871480199ull, 17056833616330241539ull, 8116929150061435956ull}}, {{15373838974369932635ull, 16961707315040532788ull, 1437148973351625153ull, 5073080718788397473ull}}, {{770554644252864178ull, 7367076088518502274ull, 6408122235116919346ull, 6341350898485496841ull}}, {{10186565342170856030ull, 18432217147502903650ull, 12621838812323537086ull, 7926688623106871051ull}}, {{10978289357284172923ull, 6908449698761926877ull, 5582806248488516727ull, 4954180389441794407ull}}, {{18334547715032604057ull, 4023876105025020692ull, 2366821792183258005ull, 6192725486802243009ull}}, {{4471440570081203456ull, 9641531149708663770ull, 7570213258656460410ull, 7740906858502803761ull}}, {{7406336374728140064ull, 10637642986995302760ull, 16260598332728757516ull, 4838066786564252350ull}}, {{9257920468410175080ull, 13297053733744128450ull, 11102375879056171087ull, 6047583483205315438ull}}, {{2349028548657943042ull, 12009631148752772659ull, 4654597811965438051ull, 7559479354006644298ull}}, {{17609043907407072065ull, 5200176458756788959ull, 7520809650905786686ull, 4724674596254152686ull}}, {{17399618865831452177ull, 15723592610300762007ull, 177640026777457549ull, 5905843245317690858ull}}, {{17137837563861927318ull, 5819432707593788797ull, 9445422070326597745ull, 7382304056647113572ull}}, {{13016991486627398526ull, 15166360488314587758ull, 15126760830808899398ull, 4613940035404445982ull}}, {{7047867321429472349ull, 9734578573538458890ull, 9685079001656348440ull, 5767425044255557478ull}}, {{18033206188641616244ull, 12168223216923073612ull, 2882976715215659742ull, 7209281305319446848ull}}, {{4094763662092468689ull, 5986906984299066208ull, 3603720894019574678ull, 9011601631649308560ull}}, {{2559227288807792931ull, 17576874920469080092ull, 2252325558762234173ull, 5632251019780817850ull}}, {{3199034111009741163ull, 8136035595304186403ull, 12038778985307568525ull, 7040313774726022312ull}}, {{17833850694044340166ull, 14781730512557620907ull, 15048473731634460656ull, 8800392218407527890ull}}, {{8840313674564018652ull, 9238581570348513067ull, 14016982100698925814ull, 5500245136504704931ull}}, {{6438706074777635411ull, 2324854926080865526ull, 12909541607446269364ull, 6875306420630881164ull}}, {{17271754630326820071ull, 2906068657601081907ull, 16136927009307836705ull, 8594133025788601455ull}}, {{8489003634740568593ull, 13345507957069145952ull, 17003108408458479796ull, 5371333141117875909ull}}, {{10611254543425710741ull, 16681884946336432440ull, 7418827455290936033ull, 6714166426397344887ull}}, {{13264068179282138426ull, 7017298127638376838ull, 4661848300686282138ull, 8392708032996681109ull}}, {{3678356593623948612ull, 8997497348201373428ull, 5219498197142620288ull, 5245442520622925693ull}}, {{4597945742029935765ull, 11246871685251716785ull, 11136058764855663264ull, 6556803150778657116ull}}, {{10359118195964807611ull, 14058589606564645981ull, 13920073456069579080ull, 8196003938473321395ull}}, {{8780291881691698709ull, 8786618504102903738ull, 6394202900829792973ull, 5122502461545825872ull}}, {{1751992815259847578ull, 15594959148556017577ull, 7992753626037241216ull, 6403128076932282340ull}}, {{6801677037502197376ull, 1046954861985470355ull, 9990942032546551521ull, 8003910096165352925ull}}, {{1945205139225179408ull, 12183561834809388732ull, 8550181779555288652ull, 5002443810103345578ull}}, {{2431506424031474260ull, 15229452293511735915ull, 1464355187589335007ull, 6253054762629181973ull}}, {{16874441085321506537ull, 14425129348462281989ull, 6442130002914056663ull, 7816318453286477466ull}}, {{12852368687539635538ull, 15933234870430008099ull, 8638017270248673318ull, 4885199033304048416ull}}, {{11453774840997156518ull, 10693171551182734316ull, 10797521587810841648ull, 6106498791630060520ull}}, {{14317218551246445648ull, 13366464438978417895ull, 13496901984763552060ull, 7633123489537575650ull}}, {{15865790622170110386ull, 17577412311216286992ull, 13047249758904607941ull, 4770702180960984781ull}}, {{1385494204003086367ull, 8136707333738195029ull, 2474004143348596215ull, 5963377726201230977ull}}, {{6343553773431245862ull, 5559198148745355882ull, 7704191197613133173ull, 7454222157751538721ull}}, {{8576407126821916568ull, 5780341852179541378ull, 16344334544576677993ull, 4658888848594711700ull}}, {{1497136871672619902ull, 11837113333651814627ull, 1983674107011295875ull, 5823611060743389626ull}}, {{15706479144872938589ull, 10184705648637380379ull, 11702964670618895652ull, 7279513825929237032ull}}, {{15021412912663785332ull, 12730882060796725474ull, 14628705838273619565ull, 9099392282411546290ull}}, {{14000069088842253737ull, 10262644297211647373ull, 13754627167348400132ull, 5687120176507216431ull}}, {{3665028305770653459ull, 12828305371514559217ull, 12581597940758112261ull, 7108900220634020539ull}}, {{9192971400640704728ull, 2200323659111035309ull, 11115311407520252423ull, 8886125275792525674ull}}, {{8051450134614134407ull, 8292731314585478924ull, 11558755648127545668ull, 5553828297370328546ull}}, {{10064312668267668009ull, 10365914143231848655ull, 5225072523304656277ull, 6942285371712910683ull}}, {{7968704816907197107ull, 17569078697467198723ull, 1919654635703432442ull, 8677856714641138354ull}}, {{2674597501353304240ull, 15592360204344387106ull, 5811470165742033180ull, 5423660446650711471ull}}, {{12566618913546406108ull, 1043706181720932266ull, 2652651688750153572ull, 6779575558313389339ull}}, {{6484901605078231826ull, 1304632727151165333ull, 17150872666219855677ull, 8474469447891736673ull}}, {{6358906512387588844ull, 3121238463683172285ull, 3801766388746327942ull, 5296543404932335421ull}}, {{12560319158911873958ull, 13124920116458741164ull, 9363894004360297831ull, 6620679256165419276ull}}, {{15700398948639842448ull, 11794464127146038551ull, 11704867505450372289ull, 8275849070206774095ull}}, {{16730278370540983386ull, 454011051825192238ull, 14233071218547564537ull, 5172405668879233809ull}}, {{11689475926321453425ull, 5179199833208878202ull, 3956280967902291959ull, 6465507086099042262ull}}, {{5388472871047040973ull, 1862313773083709849ull, 14168723246732640757ull, 8081883857623802827ull}}, {{14897010590472870368ull, 3469789117391012607ull, 6549609019994206521ull, 5051177411014876767ull}}, {{14009577219663700056ull, 8948922415166153663ull, 3575325256565370247ull, 6313971763768595959ull}}, {{12900285506152237166ull, 6574467000530304175ull, 18304214625988876521ull, 7892464704710744948ull}}, {{14980207468986230085ull, 15638256921399909869ull, 2216762104388272017ull, 4932790440444215593ull}}, {{4890201280950623894ull, 5712763096467723625ull, 7382638648912727926ull, 6165988050555269491ull}}, {{10724437619615667771ull, 16364325907439430339ull, 4616612292713522003ull, 7707485063194086864ull}}, {{4396930503046098405ull, 7921860682935950010ull, 2885382682945951252ull, 4817178164496304290ull}}, {{14719535165662398814ull, 9902325853669937512ull, 12830100390537214873ull, 6021472705620380362ull}}, {{18399418957077998518ull, 16989593335514809794ull, 6814253451316742783ull, 7526840882025475453ull}}, {{16111322866601136978ull, 17536024862337837977ull, 6564751416286658191ull, 4704275551265922158ull}}, {{6304095527969257510ull, 17308345059494909568ull, 17429311307213098547ull, 5880344439082402697ull}}, {{7880119409961571888ull, 17023745305941249056ull, 7951581078734209472ull, 7350430548853003372ull}}, {{9850149262451964859ull, 2832937558717009704ull, 9939476348417761841ull, 9188038186066254215ull}}, {{6156343289032478037ull, 13299801020266600825ull, 13129701745402183006ull, 5742523866291408884ull}}, {{12307115129717985451ull, 7401379238478475223ull, 16412127181752728758ull, 7178154832864261105ull}}, {{10772207893720093909ull, 28352011243318221ull, 6680100921908747236ull, 8972693541080326382ull}}, {{9038472942788752645ull, 9241092043881849696ull, 18010121131475130734ull, 5607933463175203988ull}}, {{11298091178485940807ull, 2327993017997536312ull, 4065907340634361802ull, 7009916828969004986ull}}, {{14122613973107426008ull, 12133363309351696198ull, 14305756212647728060ull, 8762396036211256232ull}}, {{4214947714764753351ull, 16806724105199585932ull, 8941097632904830037ull, 5476497522632035145ull}}, {{5268684643455941689ull, 7173347076217318703ull, 15788058059558425451ull, 6845621903290043931ull}}, {{1974169785892539207ull, 4354997826844260475ull, 15123386556020643910ull, 8557027379112554914ull}}, {{17374757180678694669ull, 16556931697059826508ull, 14063802615940290347ull, 5348142111945346821ull}}, {{3271702402138816720ull, 16084478602897395232ull, 3744695214643199222ull, 6685177639931683527ull}}, {{4089628002673520899ull, 10882226216766968232ull, 69182999876611124ull, 8356472049914604409ull}}, {{2556017501670950562ull, 16024763422334130953ull, 11572454420991351712ull, 5222795031196627755ull}}, {{7806707895516076107ull, 1584210204208112075ull, 9853882007811801737ull, 6528493788995784694ull}}, {{5146698850967707229ull, 6591948773687527998ull, 3093980472909976363ull, 8160617236244730868ull}}, {{17051744837136980730ull, 1814124974341011046ull, 11157109832423511035ull, 5100385772652956792ull}}, {{12091309009566450105ull, 16102714273208427520ull, 13946387290529388793ull, 6375482215816195990ull}}, {{15114136261958062631ull, 6293334786228370688ull, 8209612076306960184ull, 7969352769770244988ull}}, {{9446335163723789145ull, 3933334241392731680ull, 14354379584546625923ull, 4980845481106403117ull}}, {{11807918954654736431ull, 304981783313526696ull, 4107916425401118692ull, 6226056851383003897ull}}, {{14759898693318420538ull, 381227229141908370ull, 9746581550178786269ull, 7782571064228754871ull}}, {{13836622701751400741ull, 2544110027427386683ull, 13009142496502823274ull, 4864106915142971794ull}}, {{12684092358761863022ull, 12403509571139009162ull, 7038056083773753284ull, 6080133643928714743ull}}, {{6631743411597552969ull, 15504386963923761453ull, 4185884086289803701ull, 7600167054910893429ull}}, {{6450682641462164558ull, 11996084861666044860ull, 4922020563144821265ull, 4750104409319308393ull}}, {{8063353301827705697ull, 1160048021800392363ull, 10764211722358414486ull, 5937630511649135491ull}}, {{5467505608857244217ull, 10673432064105266262ull, 8843578634520630203ull, 7422038139561419364ull}}, {{17252249060817941348ull, 4365052030852097461ull, 14750608683430169685ull, 4638773837225887102ull}}, {{7730253270740262973ull, 10068001056992509731ull, 9214888817432936298ull, 5798467296532358878ull}}, {{5051130569997940812ull, 3361629284385861356ull, 2295238984936394565ull, 7248084120665448598ull}}, {{6313913212497426015ull, 8813722623909714599ull, 12092420768025269014ull, 9060105150831810747ull}}, {{10863724785451973115ull, 896890621516183720ull, 5251919970802099182ull, 5662565719269881717ull}}, {{13579655981814966394ull, 10344485313750005458ull, 11176585981930011881ull, 7078207149087352146ull}}, {{7751197940413932184ull, 17542292660614894727ull, 4747360440557739043ull, 8847758936359190183ull}}, {{11762027740399789471ull, 8658089903670615252ull, 9884629302989668758ull, 5529849335224493864ull}}, {{14702534675499736839ull, 1599240342733493257ull, 12355786628737085948ull, 6912311669030617330ull}}, {{4543110289092507337ull, 1999050428416866572ull, 6221361249066581627ull, 8640389586288271663ull}}, {{12062815967537592894ull, 17390307582256399271ull, 10805879808307695372ull, 5400243491430169789ull}}, {{10466833940994603213ull, 3291140404110947473ull, 18119035778812007120ull, 6750304364287712236ull}}, {{17695228444670641920ull, 4113925505138684341ull, 4202050649805457284ull, 8437880455359640296ull}}, {{13365360787132845152ull, 11794575477566453521ull, 2626281656128410802ull, 5273675284599775185ull}}, {{2871642928633892728ull, 5519847310103291094ull, 7894538088587901407ull, 6592094105749718981ull}}, {{12812925697647141718ull, 2288123119201725963ull, 14479858629162264663ull, 8240117632187148726ull}}, {{5702235551815769622ull, 8347605977142160583ull, 4438225624799027510ull, 5150073520116967954ull}}, {{2516108421342324123ull, 1211135434572924921ull, 14771154067853560196ull, 6437591900146209942ull}}, {{7756821545105293058ull, 1513919293216156151ull, 9240570547962174437ull, 8046989875182762428ull}}, {{11765542493331890018ull, 3252042567473791546ull, 14998728629331134831ull, 5029368671989226517ull}}, {{5483556079810086714ull, 17900111264624403145ull, 4913352731381754826ull, 6286710839986533147ull}}, {{11466131118189996296ull, 13151767043925728123ull, 1530004895799805629ull, 7858388549983166434ull}}, {{4860488939655053733ull, 10525697411667274029ull, 5567939078302266422ull, 4911492843739479021ull}}, {{10687297192996205070ull, 3933749727729316728ull, 11571609866305220932ull, 6139366054674348776ull}}, {{13359121491245256338ull, 4917187159661645910ull, 14464512332881526165ull, 7674207568342935970ull}}, {{3737764913600897307ull, 5379084984002222646ull, 13652006226478341757ull, 4796379730214334981ull}}, {{13895578178855897442ull, 11335542248430166211ull, 3229949727815763484ull, 5995474662767918727ull}}, {{12757786705142483899ull, 14169427810537707764ull, 17872495215051868067ull, 7494343328459898408ull}}, {{17196988727568828245ull, 6550049372372373400ull, 11170309509407417542ull, 4683964580287436505ull}}, {{3049491835751483690ull, 17410933752320242559ull, 127828831477108215ull, 5854955725359295632ull}}, {{17646922849971518324ull, 17151981171972915294ull, 159786039346385269ull, 7318694656699119540ull}}, {{12835281525609622097ull, 7604918409683980406ull, 199732549182981587ull, 9148368320873899425ull}}, {{3410364935078625907ull, 2447230996838793802ull, 11654047889307833252ull, 5717730200546187140ull}}, {{13486328205703058191ull, 3059038746048492252ull, 14567559861634791565ull, 7147162750682733925ull}}, {{16857910257128822739ull, 8435484450988003219ull, 4374391771761325744ull, 8933953438353417407ull}}, {{8230350901491820260ull, 5272177781867502012ull, 9651523884991910446ull, 5583720898970885879ull}}, {{10287938626864775325ull, 15813594264189153323ull, 7452718837812500153ull, 6979651123713607349ull}}, {{8248237265153581252ull, 5931934774954277942ull, 13927584565693013096ull, 8724563904642009186ull}}, {{543462272293600379ull, 3707459234346423714ull, 13316426371985521089ull, 5452852440401255741ull}}, {{9902699877221776281ull, 9246010061360417546ull, 2810474909699737649ull, 6816065550501569677ull}}, {{3155002809672444544ull, 16169198595127909837ull, 8124779655552059965ull, 8520081938126962096ull}}, {{4277719765258971792ull, 12411592131168637600ull, 5077987284720037478ull, 5325051211329351310ull}}, {{5347149706573714740ull, 6291118127106021192ull, 15570856142754822656ull, 6656314014161689137ull}}, {{6683937133217143425ull, 7863897658882526490ull, 5628512123161364608ull, 8320392517702111422ull}}, {{8789146726688102545ull, 4914936036801579056ull, 17352878132258016592ull, 5200245323563819638ull}}, {{10986433408360128181ull, 6143670046001973820ull, 12467725628467744932ull, 6500306654454774548ull}}, {{13733041760450160226ull, 7679587557502467275ull, 15584657035584681165ull, 8125383318068468185ull}}, {{6277308091067656189ull, 7105585232652735999ull, 2822881619599343872ull, 5078364573792792616ull}}, {{3234949095407182332ull, 8881981540815919999ull, 3528602024499179840ull, 6347955717240990770ull}}, {{17878744424541141627ull, 11102476926019899998ull, 13634124567478750608ull, 7934944646551238462ull}}, {{6562529246910825613ull, 6939048078762437499ull, 3909641836246831226ull, 4959340404094524039ull}}, {{3591475540211144113ull, 17897182135307822682ull, 275366276881151128ull, 6199175505118155049ull}}, {{13712716462118705949ull, 3924733595425226736ull, 4955893864528826815ull, 7748969381397693811ull}}, {{8570447788824191218ull, 9370487524781848566ull, 791590656116822807ull, 4843105863373558632ull}}, {{1489687699175463214ull, 7101423387549922804ull, 989488320146028509ull, 6053882329216948290ull}}, {{1862109623969329018ull, 13488465252864791409ull, 10460232437037311444ull, 7567352911521185362ull}}, {{12693033561049300396ull, 17653662819895270438ull, 11149331291575707556ull, 4729595569700740851ull}}, {{6642919914456849687ull, 3620334451159536432ull, 9324978096042246542ull, 5911994462125926064ull}}, {{8303649893071062109ull, 13748790100804196348ull, 11656222620052808177ull, 7389993077657407580ull}}, {{14413153220024189626ull, 1675464785361540861ull, 16508511174387780919ull, 4618745673535879737ull}}, {{4181383469748073321ull, 15929389036984089789ull, 6800580912702562436ull, 5773432091919849672ull}}, {{9838415355612479555ull, 1464992222520560620ull, 8500726140878203046ull, 7216790114899812090ull}}, {{12298019194515599443ull, 11054612315005476583ull, 1402535639242977999ull, 9020987643624765113ull}}, {{14603791024213331508ull, 13826661724519504720ull, 12405799820595331009ull, 5638117277265478195ull}}, {{18254738780266664385ull, 3448269100367217188ull, 10895563757316775858ull, 7047646596581847744ull}}, {{4371679401623778866ull, 13533708412313797294ull, 13619454696645969822ull, 8809558245727309680ull}}, {{16567357681297025503ull, 3846881739268735404ull, 8512159185403731139ull, 5505973903579568550ull}}, {{2262453027911730263ull, 196916155658531352ull, 1416826944899888116ull, 6882467379474460688ull}}, {{2828066284889662828ull, 246145194573164190ull, 1771033681124860145ull, 8603084224343075860ull}}, {{15602599483338202980ull, 11683055792676697378ull, 10330268087557813398ull, 5376927640214422412ull}}, {{10279877317317977917ull, 5380447703991095915ull, 12912835109447266748ull, 6721159550268028015ull}}, {{8238160628220084492ull, 6725559629988869894ull, 11529357868381695531ull, 8401449437835035019ull}}, {{537164374210164904ull, 1897631759529349732ull, 4900005658524865755ull, 5250905898646896887ull}}, {{671455467762706129ull, 16207097754693850877ull, 1513321054728694289ull, 6563632373308621109ull}}, {{5451005353130770566ull, 6423814138085149884ull, 6503337336838255766ull, 8204540466635776386ull}}, {{12630250382561507412ull, 17849941891585382389ull, 8676271853951297757ull, 5127837791647360241ull}}, {{1952754922919720552ull, 8477369309199564275ull, 15457025835866510101ull, 6409797239559200301ull}}, {{16276001708931814402ull, 15208397654926843247ull, 5486224239550973914ull, 8012246549449000377ull}}, {{17090030095723465858ull, 14116934552756664933ull, 14958105195787828456ull, 5007654093405625235ull}}, {{7527479564372168610ull, 17646168190945831167ull, 14085945476307397666ull, 6259567616757031544ull}}, {{4797663437037822858ull, 12834338201827513151ull, 17607431845384247083ull, 7824459520946289430ull}}, {{9916068675789721143ull, 5715618366928501767ull, 6392958884937766523ull, 4890287200591430894ull}}, {{7783399826309763524ull, 2532836940233239305ull, 17214570643026983962ull, 6112859000739288617ull}}, {{14340935801314592309ull, 12389418212146324939ull, 7683155248501566240ull, 7641073750924110772ull}}, {{6657241866607926241ull, 7743386382591453087ull, 14025344067168254708ull, 4775671094327569232ull}}, {{3709866314832519898ull, 9679232978239316359ull, 17531680083960318385ull, 5969588867909461540ull}}, {{25646875113261968ull, 16710727241226533353ull, 3467856031240846365ull, 7461986084886826926ull}}, {{11545244343014258490ull, 12750047534980277297ull, 16002468074807692690ull, 4663741303054266828ull}}, {{596497373485659401ull, 6714187381870570814ull, 1556341019800064247ull, 5829676628817833536ull}}, {{9968993753711850059ull, 3781048208910825613ull, 1945426274750080309ull, 7287095786022291920ull}}, {{17072928210567200477ull, 9337996279565919920ull, 2431782843437600386ull, 9108869732527864900ull}}, {{10670580131604500298ull, 10447933693156087854ull, 10743236314003276049ull, 5693043582829915562ull}}, {{4114853127650849565ull, 17671603134872497722ull, 4205673355649319253ull, 7116304478537394453ull}}, {{14366938446418337764ull, 8254445863308458440ull, 9868777712989036971ull, 8895380598171743066ull}}, {{8979336529011461103ull, 2853185655354092573ull, 10779672089045536011ull, 5559612873857339416ull}}, {{15835856679691714282ull, 17401540124474779428ull, 13474590111306920013ull, 6949516092321674270ull}}, {{1348076775905091237ull, 7916867100311310574ull, 7619865602278874209ull, 8686895115402092838ull}}, {{14677606040222845735ull, 16477256983763038868ull, 150729982996908476ull, 5429309447126308024ull}}, {{18347007550278557169ull, 2149827155994246969ull, 188412478746135596ull, 6786636808907885030ull}}, {{9098701382566032749ull, 2687283944992808712ull, 9458887635287445303ull, 8483296011134856287ull}}, {{5686688364103770468ull, 8597081493261587301ull, 12829333799695735170ull, 5302060006959285179ull}}, {{11720046473557100989ull, 1522979829722208318ull, 11424981231192281059ull, 6627575008699106474ull}}, {{5426686055091600428ull, 15738782842434924110ull, 5057854502135575515ull, 8284468760873883093ull}}, {{17226736839714413980ull, 7530896267308133616ull, 5467002073048428649ull, 5177792975546176933ull}}, {{3086676975933465859ull, 14025306352562554925ull, 11445438609737923715ull, 6472241219432721166ull}}, {{8470032238344220227ull, 12919946922275805752ull, 5083426225317628836ull, 8090301524290901458ull}}, {{5293770148965137642ull, 17298338863277154403ull, 7788827409250905926ull, 5056438452681813411ull}}, {{2005526667779034149ull, 12399551542241667196ull, 5124348243136244504ull, 6320548065852266764ull}}, {{2506908334723792686ull, 15499439427802083995ull, 6405435303920305630ull, 7900685082315333455ull}}, {{17707718773698228093ull, 5075463623948914592ull, 10920926092591272875ull, 4937928176447083409ull}}, {{3687904393413233500ull, 1732643511508755337ull, 18262843634166478998ull, 6172410220558854261ull}}, {{9221566510193929779ull, 11389176426240719979ull, 8993496487425935035ull, 7715512775698567827ull}}, {{3457636059657512160ull, 4812392257186756035ull, 3315092295427515445ull, 4822195484811604892ull}}, {{18157103129854053912ull, 10627176339910832947ull, 4143865369284394306ull, 6027744356014506115ull}}, {{18084692893890179485ull, 4060598388033765376ull, 568145693178104979ull, 7534680445018132644ull}}, {{11302933058681362179ull, 232030983307409408ull, 9578463095091091420ull, 4709175278136332902ull}}, {{14128666323351702723ull, 290038729134261760ull, 2749706832009088467ull, 5886469097670416128ull}}, {{17660832904189628404ull, 14197606466699990912ull, 3437133540011360583ull, 7358086372088020160ull}}, {{3629297056527483889ull, 13135322064947600737ull, 4296416925014200729ull, 9197607965110025200ull}}, {{13797525706398147191ull, 1292047262951168604ull, 2685260578133875456ull, 5748504978193765750ull}}, {{17246907132997683988ull, 1615059078688960755ull, 12579947759522120128ull, 7185631222742207187ull}}, {{16946947897819717081ull, 2018823848361200944ull, 11113248680975262256ull, 8982039028427758984ull}}, {{10591842436137323176ull, 1261764905225750590ull, 6945780425609538910ull, 5613774392767349365ull}}, {{4016431008316878162ull, 10800578168386964046ull, 13293911550439311541ull, 7017217990959186706ull}}, {{14243910797250873510ull, 18112408728911092961ull, 7394017401194363618ull, 8771522488698983383ull}}, {{1984915220640714088ull, 15931941473996821005ull, 11538789903387559117ull, 5482201555436864614ull}}, {{7092830044228280514ull, 6079868787213862544ull, 5200115342379673089ull, 6852751944296080768ull}}, {{8866037555285350642ull, 12211522002444716084ull, 6500144177974591361ull, 8565939930370100960ull}}, {{14764645508908119959ull, 714672223886865696ull, 4062590111234119601ull, 5353712456481313100ull}}, {{9062812425598333ull, 5505026298285970025ull, 5078237639042649501ull, 6692140570601641375ull}}, {{4623014533959385820ull, 11492968891284850435ull, 1736111030375923972ull, 8365175713252051719ull}}, {{583541074510922186ull, 16406477593907807330ull, 8002598421626034338ull, 5228234820782532324ull}}, {{9952798379993428540ull, 11284724955529983354ull, 10003248027032542923ull, 6535293525978165405ull}}, {{3217625938137009867ull, 9494220175985091289ull, 17115746052218066558ull, 8169116907472706756ull}}, {{13540231257404100927ull, 1322201591563294151ull, 1473969245781515791ull, 5105698067170441723ull}}, {{12313603053327738255ull, 15487810044736281401ull, 15677519612509058450ull, 6382122583963052153ull}}, {{1556945761377509106ull, 10136390519065575944ull, 5761841460354159351ull, 7977653229953815192ull}}, {{973091100860943192ull, 13252773102057066821ull, 3601150912721349594ull, 4986033268721134495ull}}, {{5828049894503566893ull, 7342594340716557718ull, 18336496696183850705ull, 6232541585901418118ull}}, {{16508434404984234425ull, 13789928944323085051ull, 13697248833375037573ull, 7790676982376772648ull}}, {{8011928493901452564ull, 10924548599415622109ull, 8560780520859398483ull, 4869173113985482905ull}}, {{14626596635804203608ull, 9043999730842139732ull, 15312661669501636008ull, 6086466392481853631ull}}, {{18283245794755254510ull, 11304999663552674665ull, 14529141068449657106ull, 7608082990602317039ull}}, {{4509499594080952213ull, 11677310808147809570ull, 15998242195422117547ull, 4755051869126448149ull}}, {{14860246529455966074ull, 9984952491757374058ull, 6162744688995483222ull, 5943814836408060187ull}}, {{9351936124965181785ull, 3257818577841941765ull, 3091744842816966124ull, 7429768545510075234ull}}, {{8150803087316932568ull, 11259508648005989411ull, 6544026545187991731ull, 4643605340943797021ull}}, {{5576817840718777806ull, 9462699791580098860ull, 12791719199912377568ull, 5804506676179746276ull}}, {{6971022300898472257ull, 11828374739475123575ull, 15989648999890471960ull, 7255633345224682845ull}}, {{4102091857695702417ull, 14785468424343904469ull, 6152003194580926238ull, 9069541681530853557ull}}, {{4869650420273507963ull, 4629231746787552389ull, 6150845005826772851ull, 5668463550956783473ull}}, {{10698749043769272857ull, 1174853665057052582ull, 12300242275710853968ull, 7085579438695979341ull}}, {{4150064267856815263ull, 1468567081321315728ull, 1540244789356403748ull, 8856974298369974177ull}}, {{2593790167410509540ull, 10141226462680598138ull, 12491868039416222102ull, 5535608936481233860ull}}, {{12465609746117912733ull, 3453161041495971864ull, 15614835049270277628ull, 6919511170601542325ull}}, {{15582012182647390916ull, 4316451301869964830ull, 5683485756305683323ull, 8649388963251927907ull}}, {{5127071595727231419ull, 391939054455034067ull, 1246335588477358125ull, 5405868102032454942ull}}, {{1797153476231651369ull, 5101609836496180488ull, 10781291522451473464ull, 6757335127540568677ull}}, {{2246441845289564211ull, 6377012295620225610ull, 18088300421491729734ull, 8446668909425710846ull}}, {{6015712171733365536ull, 17820690740044804718ull, 6693501745004943179ull, 5279168068391069279ull}}, {{16743012251521482728ull, 17664177406628617993ull, 3755191162828791070ull, 6598960085488836599ull}}, {{7093707259119689698ull, 12856849721430996684ull, 82302935108600934ull, 8248700106861045749ull}}, {{13656939073804581869ull, 3423845057466985023ull, 2357282343656569536ull, 5155437566788153593ull}}, {{12459487823828339433ull, 4279806321833731279ull, 7558288947998099824ull, 6444296958485191991ull}}, {{10962673761358036387ull, 5349757902292164099ull, 4836175166570236876ull, 8055371198106489989ull}}, {{4545828091635078790ull, 12566970725787378370ull, 5328452488320091999ull, 5034606998816556243ull}}, {{14905657151398624295ull, 11097027388806835058ull, 2048879591972727095ull, 6293258748520695304ull}}, {{9408699402393504561ull, 9259598217581155919ull, 2561099489965908869ull, 7866573435650869130ull}}, {{12797966154137022207ull, 8093091895201916401ull, 6212373199656080947ull, 4916608397281793206ull}}, {{2162399637389114046ull, 5504678850575007598ull, 16988838536424876992ull, 6145760496602241507ull}}, {{11926371583591168366ull, 6880848563218759497ull, 16624362152103708336ull, 7682200620752801884ull}}, {{536453212103398373ull, 4300530352011724686ull, 1166854308210041902ull, 4801375387970501178ull}}, {{9893938551984023774ull, 14599034976869431665ull, 10681939922117328185ull, 6001719234963126472ull}}, {{16979109208407417621ull, 4413735665804625869ull, 13352424902646660232ull, 7502149043703908090ull}}, {{12917786264468329965ull, 2758584791127891168ull, 12956951582581550549ull, 4688843152314942556ull}}, {{16147232830585412457ull, 8059917007337251864ull, 16196189478226938186ull, 5861053940393678195ull}}, {{1737296964522213955ull, 851524222316789023ull, 15633550829356284829ull, 7326317425492097744ull}}, {{16006679260934931155ull, 5676091296323374182ull, 1095194462985804420ull, 9157896781865122181ull}}, {{5392488519656944068ull, 12770929097056884672ull, 2990339548579821714ull, 5723685488665701363ull}}, {{6740610649571180085ull, 6740289334466330032ull, 17572982491006940855ull, 7154606860832126703ull}}, {{8425763311963975106ull, 3813675649655524636ull, 17354542095331288165ull, 8943258576040158379ull}}, {{14489474106832260250ull, 4689390290248396849ull, 8540745800368361151ull, 5589536610025098987ull}}, {{4276784578258161600ull, 1250051844383108158ull, 6064246232033063535ull, 6986920762531373734ull}}, {{14569352759677477808ull, 15397622860761048909ull, 16803679826896105226ull, 8733650953164217167ull}}, {{11411688484012117582ull, 14235200306403043472ull, 17419828919451147622ull, 5458531845727635729ull}}, {{14264610605015146977ull, 8570628346149028532ull, 7939728094031770816ull, 6823164807159544662ull}}, {{17830763256268933722ull, 10713285432686285665ull, 701288080684937712ull, 8528956008949430828ull}}, {{4226698007527001720ull, 6695803395428928541ull, 9661677087282861878ull, 5330597505593394267ull}}, {{9895058527836140054ull, 17593126281140936484ull, 7465410340676189443ull, 6663246881991742834ull}}, {{12368823159795175068ull, 17379721832998782701ull, 108390888990460996ull, 8329058602489678543ull}}, {{10036357484085678369ull, 1638954108769463380ull, 6985273333260119979ull, 5205661626556049089ull}}, {{12545446855107097962ull, 15883750691243992937ull, 13343277685002537877ull, 6507077033195061361ull}}, {{1846750513601708740ull, 6019630308772827460ull, 2844039050971008635ull, 8133846291493826702ull}}, {{10377591107855843771ull, 1456425933769323210ull, 15612582462139044109ull, 5083653932183641688ull}}, {{3748616847965028905ull, 6432218435639041917ull, 1068984003964253520ull, 6354567415229552111ull}}, {{9297457078383674035ull, 8040273044548802396ull, 15171288060237480612ull, 7943209269036940138ull}}, {{15034282710844572080ull, 14248542689697777305ull, 14093741056075813286ull, 4964505793148087586ull}}, {{4957795333273551388ull, 8587306325267445824ull, 8393804283239990800ull, 6205632241435109483ull}}, {{6197244166591939235ull, 10734132906584307280ull, 5880569335622600596ull, 7757040301793886854ull}}, {{3873277604119962022ull, 15932205103469967858ull, 17510413890046289084ull, 4848150188621179283ull}}, {{14064969042004728336ull, 1468512305627908206ull, 17276331344130473452ull, 6060187735776474104ull}}, {{8357839265651134611ull, 1835640382034885258ull, 3148670106453540199ull, 7575234669720592631ull}}, {{9835335559459347036ull, 8064804266412885142ull, 8885447844174544480ull, 4734521668575370394ull}}, {{3070797412469407987ull, 10081005333016106428ull, 1883437768363404792ull, 5918152085719212993ull}}, {{3838496765586759984ull, 12601256666270133035ull, 6965983228881643894ull, 7397690107149016241ull}}, {{93217469278031038ull, 3264099397991445243ull, 15882954564119497194ull, 4623556316968135150ull}}, {{13951579891879702510ull, 13303496284344082361ull, 10630321168294595684ull, 5779445396210168938ull}}, {{3604416809567464425ull, 16629370355430102952ull, 4064529423513468797ull, 7224306745262711173ull}}, {{4505521011959330531ull, 6951654889005464978ull, 9692347797819223901ull, 9030383431578388966ull}}, {{7427636650901969486ull, 6650627314842109563ull, 1446031355209627034ull, 5643989644736493104ull}}, {{4672859795200073953ull, 17536656180407412762ull, 1807539194012033792ull, 7054987055920616380ull}}, {{15064446780854868250ull, 3474076151799714336ull, 2259423992515042241ull, 8818733819900770475ull}}, {{9415279238034292656ull, 13700512640943291220ull, 17553041059817759064ull, 5511708637437981546ull}}, {{11769099047542865820ull, 17125640801179114025ull, 12717929287917423022ull, 6889635796797476933ull}}, {{876315754146418563ull, 12183678964619116724ull, 2062353554614615066ull, 8612044745996846167ull}}, {{9771069383196287410ull, 12226485371314335856ull, 8206499999275216272ull, 5382527966248028854ull}}, {{12213836728995359262ull, 15283106714142919820ull, 1034752962239244532ull, 6728159957810036068ull}}, {{15267295911244199078ull, 657139318969098159ull, 1293441202799055666ull, 8410199947262545085ull}}, {{16459588972168706280ull, 5022398092783074253ull, 3114243760963103743ull, 5256374967039090678ull}}, {{6739428159928719138ull, 1666311597551454913ull, 13116176738058655487ull, 6570468708798863347ull}}, {{13035971218338286826ull, 15917947552221482353ull, 11783534904145931454ull, 8213085885998579184ull}}, {{1229952983820347410ull, 5337031201711038567ull, 7364709315091207159ull, 5133178678749111990ull}}, {{15372499285057597975ull, 2059602983711410304ull, 18429258680718784757ull, 6416473348436389987ull}}, {{768880032612445853ull, 7186189748066650785ull, 18424887332471093042ull, 8020591685545487484ull}}, {{12009765066451248418ull, 9103054610969044644ull, 2292182545939657343ull, 5012869803465929678ull}}, {{15012206333064060522ull, 6767132245283917901ull, 12088600219279347487ull, 6266087254332412097ull}}, {{4930199861047911941ull, 3847229288177509473ull, 1275692218817020647ull, 7832609067915515122ull}}, {{14610589959223414723ull, 9322047332752025276ull, 5408993655188025808ull, 4895380667447196951ull}}, {{18263237449029268404ull, 11652559165940031595ull, 2149556050557644356ull, 6119225834308996189ull}}, {{18217360792859197601ull, 14565698957425039494ull, 7298631081624443349ull, 7649032292886245236ull}}, {{6774164477109610597ull, 11409404857604343636ull, 13785016462870052901ull, 4780645183053903272ull}}, {{8467705596387013246ull, 426698016723265833ull, 17231270578587566127ull, 5975806478817379090ull}}, {{15196318013911154461ull, 14368430576186246003ull, 12315716186379681850ull, 7469758098521723863ull}}, {{7191855749480777586ull, 13591955128543791656ull, 14614851644128383012ull, 4668598811576077414ull}}, {{8989819686850971983ull, 16989943910679739570ull, 9045192518305702957ull, 5835748514470096768ull}}, {{2013902571708939170ull, 7402371833067510751ull, 11306490647882128697ull, 7294685643087620960ull}}, {{16352436269918337675ull, 13864650809761776342ull, 14133113309852660871ull, 9118357053859526200ull}}, {{5608586650271573143ull, 15582935783742192070ull, 8833195818657913044ull, 5698973158662203875ull}}, {{16234105349694242237ull, 1031925655968188471ull, 6429808754895003402ull, 7123716448327754844ull}}, {{15680945668690414892ull, 10513279106815011397ull, 8037260943618754252ull, 8904645560409693555ull}}, {{12106434052145203259ull, 15794171478614157931ull, 2717445080548027455ull, 5565403475256058472ull}}, {{10521356546754116170ull, 15131028329840309510ull, 3396806350685034319ull, 6956754344070073090ull}}, {{3928323646587869405ull, 14302099393872998984ull, 13469379975211068707ull, 8695942930087591362ull}}, {{2455202279117418378ull, 6632969111956930413ull, 13030048502934305846ull, 5434964331304744601ull}}, {{7680688867324160876ull, 17514583426800938824ull, 2452502573385718595ull, 6793705414130930752ull}}, {{9600861084155201095ull, 17281543265073785626ull, 3065628216732148244ull, 8492131767663663440ull}}, {{10612224196024388589ull, 1577592503816340208ull, 1916017635457592653ull, 5307582354789789650ull}}, {{13265280245030485736ull, 6583676648197813164ull, 11618394081176766624ull, 6634477943487237062ull}}, {{16581600306288107170ull, 8229595810247266455ull, 5299620564616182472ull, 8293097429359046328ull}}, {{17281029219071148837ull, 5143497381404541534ull, 3312262852885114045ull, 5183185893349403955ull}}, {{12377914486984160238ull, 11041057745183064822ull, 17975386621388556268ull, 6478982366686754943ull}}, {{6249021071875424490ull, 13801322181478831028ull, 17857547258308307431ull, 8098727958358443679ull}}, {{13129010206776916114ull, 15543355391065351248ull, 18078496064083774000ull, 5061704973974027299ull}}, {{16411262758471145143ull, 982450165122137444ull, 17986434061677329597ull, 6327131217467534124ull}}, {{2067334374379379813ull, 5839748724830059710ull, 4036298503387110380ull, 7908914021834417656ull}}, {{15127142039269276095ull, 12873214989873563126ull, 2522686564616943987ull, 4943071263646511035ull}}, {{9685555512231819311ull, 11479832718914566004ull, 16988416261053343696ull, 6178839079558138793ull}}, {{12106944390289774138ull, 14349790898643207505ull, 7400462271034515908ull, 7723548849447673492ull}}, {{649311216290026981ull, 18191991348506780499ull, 13848660956251348250ull, 4827218030904795932ull}}, {{14646697075644697438ull, 13516617148778699815ull, 17310826195314185313ull, 6034022538630994915ull}}, {{13696685326128483893ull, 3060713380691211057ull, 17026846725715343738ull, 7542528173288743644ull}}, {{1642899301189220577ull, 6524631881359394815ull, 1418407166717314028ull, 4714080108305464778ull}}, {{15888682181768689433ull, 8155789851699243518ull, 10996380995251418343ull, 5892600135381830972ull}}, {{10637480690356085984ull, 5583051296196666494ull, 13745476244064272929ull, 7365750169227288715ull}}, {{4073478826090331671ull, 11590500138673221022ull, 12570159286652953257ull, 9207187711534110894ull}}, {{16380982321588621007ull, 326533559029681282ull, 3244663535730707882ull, 5754492319708819309ull}}, {{11252855865131000450ull, 9631538985641877411ull, 8667515438090772756ull, 7193115399636024136ull}}, {{9454383812986362659ull, 12039423732052346764ull, 10834394297613465945ull, 8991394249545030170ull}}, {{15132361919971252470ull, 607110804891634871ull, 11383182454435804120ull, 5619621405965643856ull}}, {{14303766381536677683ull, 758888506114543589ull, 14228978068044755150ull, 7024526757457054820ull}}, {{4044649921638683392ull, 10171982669497955295ull, 17786222585055943937ull, 8780658446821318525ull}}, {{9445435228665258976ull, 17886704214504691819ull, 13422232124873658912ull, 5487911529263324078ull}}, {{7195108017404185816ull, 3911636194421313158ull, 7554418119237297833ull, 6859889411579155098ull}}, {{18217257058610008078ull, 9501231261454029351ull, 219650612191846483ull, 8574861764473943873ull}}, {{18303314689272336905ull, 3632426529195074392ull, 11666496678688373812ull, 5359288602796214920ull}}, {{4432399287880869515ull, 4540533161493842991ull, 14583120848360467265ull, 6699110753495268650ull}}, {{928813091423698990ull, 10287352470294691643ull, 9005529023595808273ull, 8373888441869085813ull}}, {{16721409246635669533ull, 17958810340002652036ull, 7934298648961074122ull, 5233680276168178633ull}}, {{2455017484585035300ull, 13225140888148539238ull, 14529559329628730557ull, 6542100345210223291ull}}, {{12292143892586069933ull, 2696368054903510335ull, 13550263143608525293ull, 8177625431512779114ull}}, {{14600118960507375564ull, 3991073043528387911ull, 13080600483182716212ull, 5111015894695486946ull}}, {{13638462682206831551ull, 4988841304410484889ull, 7127378567123619457ull, 6388769868369358683ull}}, {{3213020297476375727ull, 10847737648940494016ull, 4297537190477136417ull, 7985962335461698354ull}}, {{2008137685922734829ull, 18309051076656278520ull, 7297646762475598164ull, 4991226459663561471ull}}, {{2510172107403418537ull, 4439569772110796534ull, 4510372434667109802ull, 6239033074579451839ull}}, {{12361087171109048979ull, 14772834251993271475ull, 1026279524906499348ull, 7798791343224314799ull}}, {{5419836472729461660ull, 9649370641018864ull, 7558953730707643949ull, 4874244589515196749ull}}, {{6774795590911827075ull, 4623747731728661484ull, 14060378181811942840ull, 6092805736893995936ull}}, {{8468494488639783843ull, 5779684664660826855ull, 17575472727264928550ull, 7616007171117494920ull}}, {{12210338083040946758ull, 17447360970695180496ull, 10984670454540580343ull, 4760004481948434325ull}}, {{15262922603801183448ull, 17197515194941587716ull, 18342524086603113333ull, 5950005602435542906ull}}, {{631909181041927693ull, 7661835938394820934ull, 13704783071399115859ull, 7437507003044428633ull}}, {{14230001293433368521ull, 2482804452283069131ull, 1647960391983365556ull, 4648441876902767896ull}}, {{13175815598364322747ull, 3103505565353836414ull, 2059950489979206945ull, 5810552346128459870ull}}, {{7246397461100627625ull, 8491067975119683422ull, 11798310149328784489ull, 7263190432660574837ull}}, {{18281368863230560339ull, 15225520987326992181ull, 912829631378816899ull, 9078988040825718547ull}}, {{13731698548732794164ull, 7210107607865676161ull, 16711419584107618226ull, 5674367525516074091ull}}, {{3329565130633828993ull, 18236006546686871010ull, 16277588461707134878ull, 7092959406895092614ull}}, {{13385328450147062049ull, 13571636146503812954ull, 11123613540279142790ull, 8866199258618865768ull}}, {{12977516299769301685ull, 3870586573137495192ull, 6952258462674464244ull, 5541374536636791105ull}}, {{16221895374711627106ull, 4838233216421868990ull, 13302009096770468209ull, 6926718170795988881ull}}, {{11053997181534758074ull, 10659477538954724142ull, 2792453315680921549ull, 8658397713494986102ull}}, {{2297062220031835893ull, 8968016471060396541ull, 15580341377582739680ull, 5411498570934366313ull}}, {{7483013793467182770ull, 11210020588825495676ull, 5640368666696260888ull, 6764373213667957892ull}}, {{9353767241833978462ull, 14012525736031869595ull, 7050460833370326110ull, 8455466517084947365ull}}, {{3540261516932542587ull, 4146142566592530593ull, 6712381030070147771ull, 5284666573178092103ull}}, {{9037012914593066138ull, 570992189813275337ull, 3778790269160296810ull, 6605833216472615129ull}}, {{15907952161668720576ull, 9937112274121369979ull, 9335173854877758916ull, 8257291520590768911ull}}, {{7636627091829256408ull, 15434067208180632045ull, 12752012686939681178ull, 5160807200369230569ull}}, {{14157469883213958414ull, 10069211973371014248ull, 2104957803392437761ull, 6451009000461538212ull}}, {{17696837354017448017ull, 17198200985141155714ull, 2631197254240547201ull, 8063761250576922765ull}}, {{15672209364688292915ull, 3831346588072140465ull, 3950341293114035953ull, 5039850781610576728ull}}, {{5755203650578202432ull, 9400869253517563486ull, 4937926616392544941ull, 6299813477013220910ull}}, {{16417376600077528847ull, 16362772585324342261ull, 15395780307345456984ull, 7874766846266526137ull}}, {{12566703384262149482ull, 10226732865827713913ull, 2704833664449828759ull, 4921729278916578836ull}}, {{1873321175045523140ull, 8171730063857254488ull, 3381042080562285949ull, 6152161598645723545ull}}, {{2341651468806903925ull, 14826348598248956014ull, 8837988619130245340ull, 7690201998307154431ull}}, {{15298590223286478665ull, 43095837050821700ull, 12441271914597485194ull, 4806376248941971519ull}}, {{676493705398546716ull, 9277241833168302934ull, 10939903874819468588ull, 6007970311177464399ull}}, {{10068989168602959202ull, 11596552291460378667ull, 9063193825096947831ull, 7509962888971830499ull}}, {{3987275221163155550ull, 14165374209803818523ull, 3358653131471898442ull, 4693726805607394062ull}}, {{372408008026556533ull, 8483345725399997346ull, 13421688451194648861ull, 5867158507009242577ull}}, {{9688882046887971474ull, 15215868175177384586ull, 2942052508711147364ull, 7333948133761553222ull}}, {{2887730521755188535ull, 573091145262179117ull, 12900937672743710014ull, 9167435167201941527ull}}, {{4110674585310686786ull, 14193240021071025660ull, 14980615073105900614ull, 5729646979501213454ull}}, {{5138343231638358483ull, 8518177989484006267ull, 9502396804527599960ull, 7162058724376516818ull}}, {{1811243021120560199ull, 10647722486855007834ull, 2654623968804724142ull, 8952573405470646023ull}}, {{5743712906627738029ull, 2043140535856991992ull, 8576669008144034445ull, 5595358378419153764ull}}, {{7179641133284672536ull, 7165611688248627894ull, 10720836260180043056ull, 6994197973023942205ull}}, {{18197923453460616478ull, 8957014610310784867ull, 18012731343652441724ull, 8742747466279927756ull}}, {{9067859149199191347ull, 14821506168299016350ull, 2034585052928000269ull, 5464217166424954848ull}}, {{2111451899644213375ull, 4691824655091606726ull, 2543231316160000337ull, 6830271458031193560ull}}, {{11862686911410042527ull, 10476466837291896311ull, 3179039145200000421ull, 8537839322538991950ull}}, {{14331708347272358436ull, 8853634782521129146ull, 15821957521032163975ull, 5336149576586869968ull}}, {{8691263397235672236ull, 6455357459724023529ull, 1330702827580653353ull, 6670186970733587461ull}}, {{15475765264971978199ull, 12680882843082417315ull, 6275064552903204595ull, 8337733713416984326ull}}, {{7366510281393792423ull, 5619708767712816870ull, 17756973400846666584ull, 5211083570885615203ull}}, {{18431509888597016336ull, 7024635959641021087ull, 17584530732630945326ull, 6513854463607019004ull}}, {{18427701342318882516ull, 18004166986406052167ull, 3533919342079130041ull, 8142318079508773756ull}}, {{18434842366590383429ull, 4335075338862700748ull, 11432071625654232084ull, 5088948799692983597ull}}, {{4596808884528427670ull, 5418844173578375936ull, 455031476785626393ull, 6361185999616229497ull}}, {{5746011105660534587ull, 11385241235400357824ull, 5180475364409420895ull, 7951482499520286871ull}}, {{3591256941037834117ull, 14033304799766305496ull, 10155326130396969915ull, 4969676562200179294ull}}, {{4489071176297292646ull, 12929944981280493966ull, 3470785626141436586ull, 6212095702750224118ull}}, {{14834711007226391616ull, 6939059189745841649ull, 13561854069531571541ull, 7765119628437780147ull}}, {{2354165351875412904ull, 6642755002804844983ull, 6170315784243538261ull, 4853199767773612592ull}}, {{16777764745126429842ull, 12915129771933444132ull, 7712894730304422826ull, 6066499709717015740ull}}, {{2525461857698485686ull, 6920540178062029358ull, 9641118412880528533ull, 7583124637146269675ull}}, {{15413471716343717266ull, 6631180620502462300ull, 3719855998836636381ull, 4739452898216418547ull}}, {{820095571720094967ull, 12900661794055465780ull, 38133980118407572ull, 5924316122770523184ull}}, {{1025119464650118708ull, 16125827242569332225ull, 47667475148009465ull, 7405395153463153980ull}}, {{12169914711474793953ull, 3161112998964750784ull, 9253164208822281724ull, 4628371970914471237ull}}, {{15212393389343492441ull, 3951391248705938480ull, 16178141279455240059ull, 5785464963643089046ull}}, {{568747662969813935ull, 327553042455035197ull, 10999304562464274266ull, 7231831204553861308ull}}, {{5322620597139655322ull, 9632813339923569804ull, 13749130703080342832ull, 9039789005692326635ull}}, {{12550009910067060385ull, 6020508337452231127ull, 6287363680211520318ull, 5649868128557704147ull}}, {{11075826369156437577ull, 16749007458670064717ull, 3247518581837012493ull, 7062335160697130184ull}}, {{9724906163383259ull, 7101201268055417185ull, 4059398227296265617ull, 8827918950871412730ull}}, {{11535293112420584297ull, 15967465838603105500ull, 7148809910487553914ull, 5517449344294632956ull}}, {{14419116390525730371ull, 10735960261399106067ull, 8936012388109442393ull, 6896811680368291195ull}}, {{13412209469729775060ull, 18031636345176270488ull, 6558329466709415087ull, 8621014600460363994ull}}, {{8382630918581109413ull, 18187301743376250911ull, 8710641935120772333ull, 5388134125287727496ull}}, {{5866602629798998862ull, 8899069123938149927ull, 10888302418900965417ull, 6735167656609659370ull}}, {{2721567268821360673ull, 15735522423350075313ull, 4387005986771430963ull, 8418959570762074213ull}}, {{13230194589081820181ull, 7528858505380103118ull, 5047721750945838304ull, 5261849731726296383ull}}, {{7314371199497499418ull, 9411073131725128898ull, 1697966170254909976ull, 6577312164657870479ull}}, {{18366336036226650080ull, 11763841414656411122ull, 15957515768100801182ull, 8221640205822338098ull}}, {{16090646041069044204ull, 2740714865732869047ull, 14585133373490388643ull, 5138525128638961311ull}}, {{15501621532908917351ull, 17260951637448250021ull, 13619730698435597899ull, 6423156410798701639ull}}, {{5541968860853982977ull, 16964503528382924623ull, 12412977354617109470ull, 8028945513498377049ull}}, {{10381259565674821217ull, 5991128686811939985ull, 840581818994611563ull, 5018090945936485656ull}}, {{17588260475520914425ull, 2877224840087537077ull, 1050727273743264454ull, 6272613682420607070ull}}, {{8150267539118979319ull, 12819903086964197155ull, 10536781129033856375ull, 7840767103025758837ull}}, {{2788074202735668122ull, 14929968456993705078ull, 8891331214859854186ull, 4900479439391099273ull}}, {{12708464790274360961ull, 9439088534387355539ull, 15725850037002205637ull, 6125599299238874091ull}}, {{11273894969415563297ull, 16410546686411582328ull, 15045626527825369142ull, 7656999124048592614ull}}, {{7046184355884727061ull, 5644905660579851051ull, 4791830561463467810ull, 4785624452530370384ull}}, {{4196044426428520922ull, 16279504112579589622ull, 5989788201829334762ull, 5982030565662962980ull}}, {{14468427569890426960ull, 11126008103869711219ull, 7487235252286668453ull, 7477538207078703725ull}}, {{6736924221967822898ull, 9259598074132263464ull, 6985365041892861735ull, 4673461379424189828ull}}, {{8421155277459778623ull, 6962811574237941426ull, 8731706302366077169ull, 5841826724280237285ull}}, {{1303072059969947470ull, 13315200486224814687ull, 15526318896384984365ull, 7302283405350296606ull}}, {{15463898130244598050ull, 2808942552498854646ull, 10184526583626454649ull, 9127854256687870758ull}}, {{5053250312975485877ull, 13284804141380253914ull, 1753643096339146251ull, 5704908910429919224ull}}, {{15539934928074133155ull, 11994319158297929488ull, 2192053870423932814ull, 7131136138037399030ull}}, {{978174586383114827ull, 5769526911017636053ull, 11963439374884691826ull, 8913920172546748787ull}}, {{2917202125703140719ull, 8217640337813410437ull, 5171306600089238439ull, 5571200107841717992ull}}, {{8258188675556313803ull, 5660364403839375142ull, 6464133250111548049ull, 6964000134802147490ull}}, {{1099363807590616445ull, 11687141523226606832ull, 17303538599494210869ull, 8705000168502684362ull}}, {{687102379744135279ull, 9610306461230323222ull, 15426397643111269697ull, 5440625105314177726ull}}, {{10082250011534944906ull, 16624569094965291931ull, 10059625017034311313ull, 6800781381642722158ull}}, {{7991126495991293228ull, 6945653313424451202ull, 3351159234438113334ull, 8500976727053402698ull}}, {{9606140078421946172ull, 18176091376172445713ull, 6706160539951208737ull, 5313110454408376686ull}}, {{16619361116454820619ull, 8885056164933393429ull, 17606072711793786730ull, 6641388068010470857ull}}, {{6939143340286362061ull, 1882948169311965979ull, 8172532834460069701ull, 8301735085013088572ull}}, {{2031121578465282337ull, 3482685615033672689ull, 14331205058392319371ull, 5188584428133180357ull}}, {{7150587991508990825ull, 18188415074074254573ull, 4078948267708235501ull, 6485730535166475447ull}}, {{13549921007813626435ull, 8900460787310654504ull, 486999316207906473ull, 8107163168958094309ull}}, {{8468700629883516522ull, 17092003038137628825ull, 2610217581843635497ull, 5066976980598808943ull}}, {{15197561805781783556ull, 7529945742389872319ull, 17097830032586708084ull, 6333721225748511178ull}}, {{14385266238799841541ull, 9412432177987340399ull, 12148915503878609297ull, 7917151532185638973ull}}, {{15908320426890982819ull, 17411985157310557509ull, 9898915199137824762ull, 4948219707616024358ull}}, {{6050342478331564812ull, 12541609409783421079ull, 3150271962067505145ull, 6185274634520030448ull}}, {{2951242079487068111ull, 1841953706947112637ull, 3937839952584381432ull, 7731593293150038060ull}}, {{4150369308893111522ull, 1151221066841945398ull, 11684522007220014203ull, 4832245808218773787ull}}, {{14411333672971165210ull, 15274084388834595459ull, 9993966490597629849ull, 6040307260273467234ull}}, {{13402481072786568608ull, 5257547430761080612ull, 3269086076392261504ull, 7550384075341834043ull}}, {{17599922707346381188ull, 3285967144225675382ull, 18184079862241021104ull, 4718990047088646276ull}}, {{12776531347328200677ull, 4107458930282094228ull, 4283355754091724764ull, 5898737558860807846ull}}, {{15970664184160250846ull, 5134323662852617785ull, 14577566729469431763ull, 7373421948576009807ull}}, {{6128272174918149846ull, 1806218560138384328ull, 13610272393409401800ull, 9216777435720012259ull}}, {{3830170109323843654ull, 1128886600086490205ull, 6200577236667182173ull, 5760485897325007662ull}}, {{9399398655082192471ull, 6022794268535500660ull, 16974093582688753524ull, 7200607371656259577ull}}, {{11749248318852740589ull, 7528492835669375825ull, 7382558923078778193ull, 9000759214570324472ull}}, {{425751171641881012ull, 16234523068361829651ull, 4614099326924236370ull, 5625474509106452795ull}}, {{14367247019834514977ull, 11069781798597511255ull, 1155938140227907559ull, 7031843136383065994ull}}, {{13347372756365755817ull, 9225541229819501165ull, 10668294712139660257ull, 8789803920478832492ull}}, {{10647950981942291338ull, 17295178314705657988ull, 15891056231942063468ull, 5493627450299270307ull}}, {{13309938727427864172ull, 3172228819672520869ull, 15252134271500191432ull, 6867034312874087884ull}}, {{2802365354002666503ull, 3965286024590651087ull, 618423765665687674ull, 8583792891092609856ull}}, {{8669007373892748421ull, 7089989783796544833ull, 386514853541054796ull, 5364870556932881160ull}}, {{15447945235793323430ull, 8862487229745681041ull, 483143566926318495ull, 6706088196166101450ull}}, {{5474873489459490575ull, 6466423018754713398ull, 9827301495512673927ull, 8382610245207626812ull}}, {{17256853986194345322ull, 10959043414362777729ull, 15365435471550197012ull, 5239131403254766757ull}}, {{7736009427460767940ull, 13698804267953472162ull, 5371736284155582553ull, 6548914254068458447ull}}, {{446639747471184117ull, 3288447279659676491ull, 2102984336767090288ull, 8186142817585573059ull}}, {{16420050906665347737ull, 2055279549787297806ull, 17455266274975289094ull, 5116339260990983161ull}}, {{11301691596476908863ull, 11792471474088898066ull, 7984024788436947655ull, 6395424076238728952ull}}, {{4903742458741360271ull, 10128903324183734679ull, 9980030985546184569ull, 7994280095298411190ull}}, {{9982368064354432026ull, 17859779623683303934ull, 1625833347538977451ull, 4996425059561506994ull}}, {{3254588043588264224ull, 17713038511176742014ull, 11255663721278497622ull, 6245531324451883742ull}}, {{13291607091340106088ull, 12917926102116151709ull, 4846207614743346220ull, 7806914155564854678ull}}, {{10613097441301260257ull, 17297075850677370626ull, 16863937814496755099ull, 4879321347228034173ull}}, {{4042999764771799513ull, 17009658794919325379ull, 7244864212838780162ull, 6099151684035042717ull}}, {{442063687537361487ull, 12038701456794380916ull, 13667766284475863107ull, 7623939605043803396ull}}, {{9499661841565626738ull, 5218345401282794120ull, 17765725964652190250ull, 4764962253152377122ull}}, {{11874577301957033422ull, 15746303788458268458ull, 12983785418960462004ull, 5956202816440471403ull}}, {{5619849590591515969ull, 1236135661863283957ull, 11618045755273189602ull, 7445253520550589254ull}}, {{5818249003333391433ull, 5384270807091940377ull, 2649592578618355597ull, 4653283450344118284ull}}, {{11884497272594127195ull, 11342024527292313375ull, 3311990723272944496ull, 5816604312930147855ull}}, {{10243935572315271090ull, 14177530659115391719ull, 17975046459373344332ull, 7270755391162684818ull}}, {{8193233446966700958ull, 17721913323894239649ull, 13245436037361904607ull, 9088444238953356023ull}}, {{16649985950422657859ull, 17993724855074981636ull, 15195926550992272235ull, 5680277649345847514ull}}, {{2365738364318770708ull, 17880470050416339142ull, 9771536151885564486ull, 7100347061682309393ull}}, {{12180544992253239193ull, 13127215526165648119ull, 16826106208284343512ull, 8875433827102886741ull}}, {{14530369647799356352ull, 8204509703853530074ull, 12822159389391408647ull, 5547146141939304213ull}}, {{8939590022894419631ull, 5643951111389524689ull, 2192641181457097097ull, 6933932677424130267ull}}, {{15786173547045412443ull, 11666624907664293765ull, 16575859532103535083ull, 8667415846780162833ull}}, {{12172201476117076729ull, 4985797558076489651ull, 3442383179923627571ull, 5417134904237601771ull}}, {{10603565826718958007ull, 1620560929168224160ull, 18138037030186698176ull, 6771418630297002213ull}}, {{13254457283398697509ull, 2025701161460280200ull, 8837488232451209008ull, 8464273287871252767ull}}, {{8284035802124185943ull, 1266063225912675125ull, 12440959172923087486ull, 5290170804919532979ull}}, {{14966730771082620333ull, 10805951069245619714ull, 10939512947726471453ull, 6612713506149416224ull}}, {{9485041426998499608ull, 18119124854984412547ull, 13674391184658089316ull, 8265891882686770280ull}}, {{3622307882660368303ull, 2101080997510482034ull, 8546494490411305823ull, 5166182426679231425ull}}, {{13751256890180236187ull, 16461409302170266254ull, 15294804131441520182ull, 6457728033349039281ull}}, {{7965699075870519426ull, 11353389590858057010ull, 5283447109019736516ull, 8072160041686299102ull}}, {{9590247940846462545ull, 16319240531141061439ull, 17137212498419499034ull, 5045100026053936938ull}}, {{7376123907630690277ull, 11175678627071550991ull, 12198143586169597985ull, 6306375032567421173ull}}, {{4608468866110974942ull, 134540228557275027ull, 1412621427429833770ull, 7882968790709276467ull}}, {{574450032105665387ull, 4695773661275684796ull, 17023789456639503770ull, 4926855494193297791ull}}, {{718062540132081734ull, 15093089113449381803ull, 16668050802371991808ull, 6158569367741622239ull}}, {{14732636230447265879ull, 419617318102175637ull, 16223377484537601857ull, 7698211709677027799ull}}, {{11513740653243235127ull, 11791475869882329533ull, 17057139955477083016ull, 4811382318548142374ull}}, {{557117761271880196ull, 14739344837352911917ull, 12098052907491577962ull, 6014227898185177968ull}}, {{5308083220017238149ull, 9200809009836364088ull, 15122566134364472453ull, 7517784872731472460ull}}, {{3317552012510773843ull, 8056348640361421507ull, 228231797123019475ull, 4698615545457170288ull}}, {{17981998070920631016ull, 5458749782024388979ull, 285289746403774344ull, 5873269431821462860ull}}, {{17865811570223400866ull, 6823437227530486224ull, 356612183004717930ull, 7341586789776828575ull}}, {{3885520389069699467ull, 17752668571267883589ull, 14280823284038061124ull, 9176983487221035718ull}}, {{4734293252382256119ull, 1872045820187651435ull, 4313828534096400299ull, 5735614679513147324ull}}, {{1306180547050432244ull, 16175115330516728006ull, 5392285667620500373ull, 7169518349391434155ull}}, {{10856097720667816113ull, 6383836107863746295ull, 2128671066098237563ull, 8961897936739292694ull}}, {{13702590103058466927ull, 1684054558201147482ull, 15165477471593562189ull, 5601186210462057933ull}}, {{7904865591968307851ull, 6716754216178822257ull, 5121788784209789024ull, 7001482763077572417ull}}, {{14492768008387772717ull, 8395942770223527821ull, 11013921998689624184ull, 8751853453846965521ull}}, {{11363823014456051900ull, 5247464231389704888ull, 18412916295249484875ull, 5469908408654353450ull}}, {{14204778768070064875ull, 1947644270809743206ull, 13792773332207080286ull, 6837385510817941813ull}}, {{8532601423232805286ull, 11657927375366954816ull, 3405908609976686645ull, 8546731888522427267ull}}, {{5332875889520503304ull, 9592047618818040712ull, 18269593945731286817ull, 5341707430326517041ull}}, {{6666094861900629130ull, 16601745541949938794ull, 9001934376881944809ull, 6677134287908146302ull}}, {{17555990614230562220ull, 6917123872155259780ull, 2029045934247655204ull, 8346417859885182878ull}}, {{1749122097039325580ull, 13546574456951813171ull, 15103211764186948214ull, 5216511162428239298ull}}, {{16021460676581320687ull, 7709846034334990655ull, 9655642668378909460ull, 6520638953035299123ull}}, {{15415139827299262954ull, 9637307542918738319ull, 7457867317046248921ull, 8150798691294123904ull}}, {{16551991419703121203ull, 17552532260392681209ull, 4661167073153905575ull, 5094249182058827440ull}}, {{6854931219346737791ull, 17328979307063463608ull, 5826458841442381969ull, 6367811477573534300ull}}, {{8568664024183422239ull, 7826166078547165798ull, 7283073551802977462ull, 7959764346966917875ull}}, {{743728996687250995ull, 279667780664590720ull, 2246077960663166962ull, 4974852716854323672ull}}, {{929661245859063744ull, 9572956762685514208ull, 2807597450828958702ull, 6218565896067904590ull}}, {{1162076557323829680ull, 2742823916502116952ull, 12732868850390974186ull, 7773207370084880737ull}}, {{726297848327393550ull, 6325950966241210999ull, 1040514003853277010ull, 4858254606303050461ull}}, {{14742930365691405650ull, 17130810744656289556ull, 5912328523243984166ull, 6072818257878813076ull}}, {{18428662957114257062ull, 12190141393965586137ull, 7390410654054980208ull, 7591022822348516345ull}}, {{4600385320555328808ull, 7618838371228491336ull, 16148221704852832390ull, 4744389263967822715ull}}, {{5750481650694161010ull, 300175927180838362ull, 15573591112638652584ull, 5930486579959778394ull}}, {{16411474100222477070ull, 375219908976047952ull, 10243616853943539922ull, 7413108224949722993ull}}, {{10257171312639048169ull, 4846198461537417874ull, 17931475579783182211ull, 4633192640593576870ull}}, {{3598092103944034403ull, 1446062058494384439ull, 13190972437874201956ull, 5791490800741971088ull}}, {{18332673185212206716ull, 1807577573117980548ull, 16488715547342752445ull, 7239363500927463860ull}}, {{4469097407805706779ull, 6871157984824863590ull, 2164150360468888940ull, 9049204376159329826ull}}, {{16628243935160730449ull, 13517845777370315551ull, 5964279993720443491ull, 5655752735099581141ull}}, {{16173618900523525157ull, 12285621203285506535ull, 12067036010577942268ull, 7069690918874476426ull}}, {{15605337607227018542ull, 15357026504106883169ull, 5860422976367652027ull, 8837113648593095533ull}}, {{2835806976875804733ull, 7292298555853108029ull, 5968607369443476469ull, 5523196030370684708ull}}, {{8156444739522143820ull, 13727059213243772940ull, 7460759211804345586ull, 6903995037963355885ull}}, {{10195555924402679775ull, 7935451979699940367ull, 13937635033182819887ull, 8629993797454194856ull}}, {{13289751480392756715ull, 11877186514953544585ull, 8711021895739262429ull, 5393746123408871785ull}}, {{2777131295208782182ull, 1011425088409767020ull, 15500463388101465941ull, 6742182654261089731ull}}, {{3471414119010977728ull, 5875967378939596679ull, 14763893216699444522ull, 8427728317826362164ull}}, {{9087162852022942936ull, 8284165630264635828ull, 4061223582377018ull, 5267330198641476353ull}}, {{11358953565028678670ull, 1131835000976018977ull, 4616762547905359177ull, 6584162748301845441ull}}, {{363633901003684625ull, 6026479769647411626ull, 10382639203309086875ull, 8230203435377306801ull}}, {{4838957206554690795ull, 1460706846815938314ull, 18018364548136649057ull, 5143877147110816750ull}}, {{15272068545048139302ull, 6437569576947310796ull, 13299583648316035513ull, 6429846433888520938ull}}, {{643341607600622511ull, 12658647989611526400ull, 7401107523540268583ull, 8037308042360651173ull}}, {{402088504750389069ull, 14829184021148285856ull, 6931535211426361816ull, 5023317526475406983ull}}, {{502610630937986337ull, 89735952725805704ull, 4052732995855564367ull, 6279146908094258729ull}}, {{628263288672482921ull, 13947227996189420842ull, 9677602263246843362ull, 7848933635117823411ull}}, {{5004350573847689730ull, 13328703516045775930ull, 3742658405315583149ull, 4905583521948639632ull}}, {{15478810254164387970ull, 2825821339775056200ull, 4678323006644478937ull, 6131979402435799540ull}}, {{901768743995933346ull, 8143962693146208155ull, 5847903758305598671ull, 7664974253044749425ull}}, {{16704506529493316006ull, 12007505710857461952ull, 15184154895009468929ull, 4790608908152968390ull}}, {{2433889088157093391ull, 1174324083289663729ull, 9756821581907060354ull, 5988261135191210488ull}}, {{7654047378623754642ull, 10691277140966855469ull, 12196026977383825442ull, 7485326418989013110ull}}, {{7089622620853540604ull, 11293734231531672572ull, 3010830842437502997ull, 4678329011868133194ull}}, {{8862028276066925755ull, 282109734132427003ull, 12986910589901654555ull, 5847911264835166492ull}}, {{6465849326656269289ull, 14187695222947697466ull, 16233638237377068193ull, 7309889081043958115ull}}, {{17305683695175112419ull, 3899560973402458120ull, 15680361778293947338ull, 9137361351304947644ull}}, {{10816052309484445262ull, 7048911626803924229ull, 576854074578941278ull, 5710850844565592278ull}}, {{18131751405282944482ull, 18034511570359681094ull, 9944439630078452405ull, 7138563555706990347ull}}, {{13441317219748904794ull, 8708081407667437656ull, 7818863519170677603ull, 8923204444633737934ull}}, {{8400823262343065496ull, 3136707870578454583ull, 275103681054285598ull, 5577002777896086209ull}}, {{5889343059501443966ull, 13144256875077844037ull, 4955565619745244901ull, 6971253472370107761ull}}, {{11973364842804192862ull, 2595263038565141334ull, 10806143043108944031ull, 8714066840462634701ull}}, {{2871667008325232635ull, 8539568426744295190ull, 9059682411156783971ull, 5446291775289146688ull}}, {{12812955797261316601ull, 6062774515002981083ull, 11324603013945979964ull, 6807864719111433360ull}}, {{11404508728149257848ull, 7578468143753726354ull, 14155753767432474955ull, 8509830898889291700ull}}, {{11739503973520674059ull, 2430699580632385019ull, 18070718141500072655ull, 5318644311805807312ull}}, {{10062693948473454670ull, 16873432531072644986ull, 4141653603165539202ull, 6648305389757259141ull}}, {{3354995398737042529ull, 11868418626986030425ull, 9788753022384311907ull, 8310381737196573926ull}}, {{13626087170279121341ull, 5111918632652575063ull, 1506284620562807038ull, 5193988585747858704ull}}, {{12420922944421513772ull, 15613270327670494637ull, 1882855775703508797ull, 6492485732184823380ull}}, {{1691095625244728503ull, 5681529854305954585ull, 2353569719629385997ull, 8115607165231029225ull}}, {{12586149811846425074ull, 5856799168154915567ull, 13000196120836836008ull, 5072254478269393265ull}}, {{11121001246380643439ull, 7320998960193644459ull, 2415187095763881298ull, 6340318097836741582ull}}, {{9289565539548416394ull, 18374620737096831382ull, 12242355906559627430ull, 7925397622295926977ull}}, {{1194292443790372343ull, 6872451942258131710ull, 733943413958685288ull, 4953373513934954361ull}}, {{10716237591592741236ull, 8590564927822664637ull, 5529115285875744514ull, 6191716892418692951ull}}, {{18006983007918314449ull, 1514834122923554988ull, 2299708088917292739ull, 7739646115523366189ull}}, {{2030992343094170723ull, 17087672391323079532ull, 3743160564787001913ull, 4837278822202103868ull}}, {{2538740428867713403ull, 7524532433871685703ull, 4678950705983752392ull, 6046598527752629835ull}}, {{17008483591366805466ull, 9405665542339607128ull, 1237002364052302586ull, 7558248159690787294ull}}, {{10630302244604253417ull, 10490226982389642359ull, 14608184532814852828ull, 4723905099806742058ull}}, {{8676191787327928867ull, 13112783727987052949ull, 9036858629163790227ull, 5904881374758427573ull}}, {{15456925752587298987ull, 11779293641556428282ull, 15907759304882125688ull, 7381101718448034466ull}}, {{14272264613794449771ull, 7362058525972767676ull, 14554035583978716459ull, 4613188574030021541ull}}, {{17840330767243062214ull, 4590887139038571691ull, 4357486424691231862ull, 5766485717537526927ull}}, {{17688727440626439863ull, 14961980960652990422ull, 835172012436651923ull, 7208107146921908659ull}}, {{12887537263928274021ull, 14090790182388850124ull, 14879023070827978616ull, 9010133933652385823ull}}, {{17278082826809947071ull, 8806743863993031327ull, 16216918446908568491ull, 5631333708532741139ull}}, {{16985917515085045935ull, 6396743811563901255ull, 15659462040208322710ull, 7039167135665926424ull}}, {{16620710875428919514ull, 17219301801309652377ull, 1127583476550851771ull, 8798958919582408031ull}}, {{3470415269501992841ull, 8456220616604838784ull, 7622268700485364213ull, 5499349324739005019ull}}, {{4338019086877491051ull, 15181961789183436384ull, 4916149857179317362ull, 6874186655923756274ull}}, {{5422523858596863813ull, 9754080199624519672ull, 15368559358328922511ull, 8592733319904695342ull}}, {{3389077411623039883ull, 13013829152406406651ull, 4993663580528188665ull, 5370458324940434589ull}}, {{18071404819810963566ull, 2432228385225844601ull, 10853765494087623736ull, 6713072906175543236ull}}, {{8754197969481540746ull, 3040285481532305752ull, 13567206867609529670ull, 8391341132719429045ull}}, {{5471373730925962966ull, 15735236481239854807ull, 10785347301469649995ull, 5244588207949643153ull}}, {{2227531145230065804ull, 15057359583122430605ull, 18093370145264450398ull, 6555735259937053941ull}}, {{7396099949964970158ull, 9598327442048262448ull, 8781654626298399286ull, 8194669074921317427ull}}, {{4622562468728106349ull, 1387268632852776126ull, 3182691132222805602ull, 5121668171825823392ull}}, {{15001575122764908744ull, 10957457827920745965ull, 3978363915278507002ull, 6402085214782279240ull}}, {{4916910848173972218ull, 4473450248046156649ull, 4972954894098133753ull, 8002606518477849050ull}}, {{14602284326177202397ull, 14325121451097317665ull, 7719782827238721499ull, 5001629074048655656ull}}, {{4417797352439339284ull, 13294715795444259178ull, 9649728534048401874ull, 6252036342560819570ull}}, {{14745618727403949912ull, 7395022707450548164ull, 2838788630705726535ull, 7815045428201024463ull}}, {{18439383741482244503ull, 11539418219797674458ull, 8691771921832160940ull, 4884403392625640289ull}}, {{13825857639998029821ull, 14424272774747093073ull, 15476400920717589079ull, 6105504240782050361ull}}, {{3447263994715373564ull, 13418654950006478438ull, 5510443095614822637ull, 7631880300977562952ull}}, {{15989598051979272190ull, 10692502352967742975ull, 3444026934759264148ull, 4769925188110976845ull}}, {{15375311546546702333ull, 13365627941209678719ull, 8916719686876468089ull, 5962406485138721056ull}}, {{14607453414755990013ull, 2871976871229934687ull, 11145899608595585112ull, 7453008106423401320ull}}, {{16047187411863575614ull, 1794985544518709179ull, 6966187255372240695ull, 4658130066514625825ull}}, {{15447298246402081613ull, 16078789985930550186ull, 13319420087642688772ull, 5822662583143282281ull}}, {{10085750771147826209ull, 1651743408703636117ull, 2814217054271197254ull, 7278328228929102852ull}}, {{17218874482362170665ull, 11288051297734320954ull, 3517771317838996567ull, 9097910286161378565ull}}, {{15373482569903744570ull, 13972561088725032452ull, 4504450082863066806ull, 5686193928850861603ull}}, {{770109138670129096ull, 8242329324051514758ull, 1018876585151445604ull, 7107742411063577004ull}}, {{10186008460192437178ull, 10302911655064393447ull, 1273595731439307005ull, 8884678013829471255ull}}, {{13283784315261355092ull, 8745162793628939856ull, 7713526359790648734ull, 5552923758643419534ull}}, {{16604730394076693865ull, 1708081455181399012ull, 418535912883535110ull, 6941154698304274418ull}}, {{2309168918886315715ull, 11358473855831524574ull, 9746541927959194695ull, 8676443372880343022ull}}, {{15278288629586111034ull, 14016575187535784714ull, 1479902686547108780ull, 5422777108050214389ull}}, {{9874488750127862985ull, 17520718984419730893ull, 6461564376611273879ull, 6778471385062767986ull}}, {{16954796956087216635ull, 17289212712097275712ull, 17300327507618868157ull, 8473089231328459982ull}}, {{10596748097554510397ull, 13111600954274491272ull, 6201018673834404694ull, 5295680769580287489ull}}, {{13245935121943137996ull, 7166129155988338282ull, 12362959360720393772ull, 6619600961975359361ull}}, {{7334046865574146687ull, 8957661444985422853ull, 1618641145618328503ull, 8274501202469199202ull}}, {{6889622300197535632ull, 12516067430756971139ull, 5623336734438843218ull, 5171563251543249501ull}}, {{4000341856819531635ull, 6421712251591438116ull, 11640856936475941927ull, 6464454064429061876ull}}, {{5000427321024414544ull, 3415454296061909741ull, 14551071170594927409ull, 8080567580536327345ull}}, {{5431110084853953042ull, 13663873981107163348ull, 2176890453980747774ull, 5050354737835204591ull}}, {{6788887606067441303ull, 7856470439529178377ull, 16556171122758098430ull, 6312943422294005738ull}}, {{13097795526011689532ull, 597216012556697163ull, 11471841866592847230ull, 7891179277867507173ull}}, {{5880279194543612006ull, 14208318063130099439ull, 9475744175834223470ull, 4931987048667191983ull}}, {{2738662974752127103ull, 8537025542057848491ull, 7232994201365391434ull, 6164983810833989979ull}}, {{17258386773722322591ull, 1447909890717534805ull, 4429556733279351389ull, 7706229763542487474ull}}, {{13092334742790145571ull, 3210786690912153205ull, 7380158976726982522ull, 4816393602214054671ull}}, {{2530360373205518252ull, 13236855400494967315ull, 4613512702481340248ull, 6020492002767568339ull}}, {{16998008521789061527ull, 16546069250618709143ull, 1155204859674287406ull, 7525615003459460424ull}}, {{17541284353759245311ull, 5729607263209305310ull, 722003037296429629ull, 4703509377162162765ull}}, {{12703233405344280830ull, 11773695097439019542ull, 5514189815047924940ull, 5879386721452703456ull}}, {{6655669719825575229ull, 14717118871798774428ull, 6892737268809906175ull, 7349233401815879320ull}}, {{8319587149781969037ull, 13784712571321080131ull, 8615921586012382719ull, 9186541752269849150ull}}, {{2893898959400036696ull, 15532974384716756938ull, 773264972830351295ull, 5741588595168655719ull}}, {{12840745736104821678ull, 14804531962468558268ull, 14801639271320102831ull, 7176985743960819648ull}}, {{16050932170131027097ull, 13893978934658309931ull, 55305015440576923ull, 8971232179951024561ull}}, {{7725989597118197984ull, 6377893824947749755ull, 11563780680718830337ull, 5607020112469390350ull}}, {{5045800977970359576ull, 12584053299612075098ull, 5231353814043762113ull, 7008775140586737938ull}}, {{15530623259317725278ull, 1895008569232930160ull, 15762564304409478450ull, 8760968925733422422ull}}, {{9706639537073578299ull, 5796066374197969254ull, 5239916671828536127ull, 5475605578583389014ull}}, {{2909927384487197065ull, 2633396949320073664ull, 15773267876640445967ull, 6844506973229236267ull}}, {{3637409230608996332ull, 17126804241932255792ull, 15104898827373169554ull, 8555633716536545334ull}}, {{2273380769130622707ull, 15315938669635047774ull, 4828875748680843067ull, 5347271072835340834ull}}, {{12065097998268054192ull, 14533237318616421813ull, 15259466722705829642ull, 6684088841044176042ull}}, {{1246314442552904028ull, 8943174611415751459ull, 9850961366527511245ull, 8355111051305220053ull}}, {{16919847591091422682ull, 7895327141348538613ull, 8462693863293388480ull, 5221944407065762533ull}}, {{7314751433582114640ull, 9869158926685673267ull, 15190053347544123504ull, 6527430508832203166ull}}, {{4531753273550255396ull, 12336448658357091584ull, 9764194647575378572ull, 8159288136040253958ull}}, {{2832345795968909623ull, 16933652448327958048ull, 1490935636307223703ull, 5099555085025158724ull}}, {{3540432244961137028ull, 16555379541982559656ull, 1863669545384029629ull, 6374443856281448405ull}}, {{4425540306201421285ull, 6859166372196035858ull, 6941272950157424941ull, 7968054820351810506ull}}, {{7377648709803276207ull, 6592821991836216363ull, 8949981612275778492ull, 4980034262719881566ull}}, {{4610374868826707355ull, 8241027489795270454ull, 1964104978489947307ull, 6225042828399851958ull}}, {{14986340622888160002ull, 5689598343816700163ull, 11678503259967209942ull, 7781303535499814947ull}}, {{7060619880091406049ull, 17391057020167601314ull, 4993221528265812261ull, 4863314709687384342ull}}, {{18049146886969033370ull, 7903763219927337930ull, 15464898947187041135ull, 6079143387109230427ull}}, {{13338061571856515904ull, 5268018006481784509ull, 14719437665556413515ull, 7598929233886538034ull}}, {{10642131491624016392ull, 986668244837421366ull, 13811334559400146351ull, 4749330771179086271ull}}, {{4079292327675244682ull, 15068393361328940420ull, 12652482180822795034ull, 5936663463973857839ull}}, {{5099115409594055852ull, 9612119664806399717ull, 11203916707601105889ull, 7420829329967322299ull}}, {{5492790140209978860ull, 17536789836572469583ull, 4696604933036997228ull, 4638018331229576437ull}}, {{2254301656835085671ull, 3474243222006035363ull, 10482442184723634440ull, 5797522914036970546ull}}, {{16652935126326020800ull, 4342804027507544203ull, 3879680694049767242ull, 7246903642546213183ull}}, {{16204482889480138096ull, 14651877071239206062ull, 237914849134821148ull, 9058629553182766479ull}}, {{5516115787497698406ull, 18380795206379279597ull, 7066225808350345073ull, 5661643470739229049ull}}, {{11506830752799510912ull, 9140935952691935784ull, 13444468278865319246ull, 7077054338424036311ull}}, {{14383538440999388640ull, 2202797904010143922ull, 12193899330154261154ull, 8846317923030045389ull}}, {{13601397544052005804ull, 5988434708433727855ull, 9927030090560107173ull, 5528948701893778368ull}}, {{12390060911637619351ull, 12097229403969547723ull, 12408787613200133966ull, 6911185877367222960ull}}, {{10875890121119636284ull, 5898164718107158846ull, 15510984516500167458ull, 8638982346709028700ull}}, {{2185745307272384774ull, 8298038967244362183ull, 470993285957828853ull, 5399363966693142938ull}}, {{16567239689372644679ull, 14984234727482840632ull, 9812113644302061874ull, 6749204958366428672ull}}, {{2262305538006254233ull, 9506921372498774983ull, 12265142055377577343ull, 8436506197958035840ull}}, {{8331469988894990752ull, 12859354885452816220ull, 7665713784610985839ull, 5272816373723772400ull}}, {{10414337486118738440ull, 11462507588388632371ull, 9582142230763732299ull, 6591020467154715500ull}}, {{8406235839221035145ull, 9716448467058402560ull, 11977677788454665374ull, 8238775583943394375ull}}, {{5253897399513146966ull, 1461094273484113696ull, 14403577645425247715ull, 5149234739964621484ull}}, {{6567371749391433707ull, 15661425897137305832ull, 18004472056781559643ull, 6436543424955776855ull}}, {{8209214686739292134ull, 14965096352994244386ull, 17893904052549561650ull, 8045679281194721069ull}}, {{9742445197639445488ull, 13964871239048790645ull, 13489533042057169983ull, 5028549550746700668ull}}, {{16789742515476694764ull, 12844403030383600402ull, 16861916302571462479ull, 6285686938433375835ull}}, {{11763806107491092647ull, 11443817769552112599ull, 16465709359786940195ull, 7857108673041719794ull}}, {{14269907844823014760ull, 4846543096756376422ull, 14902754368294225526ull, 4910692920651074871ull}}, {{8614012769173992642ull, 15281550907800246336ull, 14016756941940394003ull, 6138366150813843589ull}}, {{10767515961467490803ull, 14490252616322920016ull, 3685888122143328792ull, 7672957688517304487ull}}, {{6729697475917181752ull, 9056407885201825010ull, 9221209103980662351ull, 4795598555323315304ull}}, {{17635493881751252998ull, 6708823838074893358ull, 11526511379975827939ull, 5994498194154144130ull}}, {{12820995315334290439ull, 3774343779166228794ull, 5184767188115009116ull, 7493122742692680163ull}}, {{12624808090511319429ull, 11582336898833668804ull, 934636483358186745ull, 4683201714182925102ull}}, {{15781010113139149286ull, 642863068259922293ull, 10391667641052509240ull, 5854002142728656377ull}}, {{5891204586141772895ull, 803578835324902867ull, 17601270569743024454ull, 7317502678410820471ull}}, {{2752319714249828215ull, 10227845581010904392ull, 17389902193751392663ull, 9146878348013525589ull}}, {{1720199821406142634ull, 13309932515772897101ull, 13174531880308314366ull, 5716798967508453493ull}}, {{6761935795185066197ull, 7414043607861345568ull, 2633106795103229246ull, 7145998709385566867ull}}, {{8452419743981332746ull, 44182472971906152ull, 17126441549161200270ull, 8932498386731958583ull}}, {{5282762339988332966ull, 13862672100889605057ull, 17621554995866832024ull, 5582811491707474114ull}}, {{11215138943412804112ull, 17328340126112006321ull, 12803571707978764222ull, 6978514364634342643ull}}, {{183865623983841428ull, 12437053120785232094ull, 11392778616546067374ull, 8723142955792928304ull}}, {{13949974070272064604ull, 3161472182063382154ull, 7120486635341292109ull, 5451964347370580190ull}}, {{8214095550985304947ull, 8563526246006615597ull, 18123980331031390944ull, 6814955434213225237ull}}, {{14879305457159019088ull, 10704407807508269496ull, 8819917358507074968ull, 8518694292766531547ull}}, {{9299565910724386930ull, 6690254879692668435ull, 3206605339853227903ull, 5324183932979082217ull}}, {{7012771369978095759ull, 3751132581188447640ull, 8619942693243922783ull, 6655229916223852771ull}}, {{8765964212472619698ull, 77229708058171646ull, 6163242348127515575ull, 8319037395279815964ull}}, {{867041614367999408ull, 6965797595177439135ull, 13075398504434473042ull, 5199398372049884977ull}}, {{14918860073242162971ull, 17930619030826574726ull, 2509190075260927590ull, 6499247965062356222ull}}, {{9425203054697927906ull, 13189901751678442600ull, 12359859630930935296ull, 8124059956327945277ull}}, {{5890751909186204942ull, 8243688594799026625ull, 10030755278545528512ull, 5077537472704965798ull}}, {{11975125904910144081ull, 10304610743498783281ull, 3315072061327134832ull, 6346921840881207248ull}}, {{1133849325855516389ull, 12880763429373479102ull, 4143840076658918540ull, 7933652301101509060ull}}, {{14543713883941861455ull, 17273849180213200246ull, 11813272084766599895ull, 4958532688188443162ull}}, {{8956270318072551011ull, 16980625456839112404ull, 5543218069103474061ull, 6198165860235553953ull}}, {{11195337897590688764ull, 7390723765766726793ull, 11540708604806730481ull, 7747707325294442441ull}}, {{79557158353098621ull, 16148417399672674006ull, 295413850363124694ull, 4842317078309026526ull}}, {{9322818484796149085ull, 10962149712736066699ull, 9592639349808681676ull, 6052896347886283157ull}}, {{7041837087567798452ull, 13702687140920083374ull, 16602485205688239999ull, 7566120434857853946ull}}, {{18236206235012037744ull, 15481708490716133964ull, 14988239271982537903ull, 4728825271786158716ull}}, {{4348513720055495564ull, 14740449594967779552ull, 288555016268620763ull, 5911031589732698396ull}}, {{5435642150069369455ull, 13813875975282336536ull, 360693770335775954ull, 7388789487165872995ull}}, {{3397276343793355910ull, 13245358502978848239ull, 16366334670955717635ull, 4617993429478670621ull}}, {{18081653485023858599ull, 11945012110296172394ull, 6622860283412483332ull, 5772491786848338277ull}}, {{13378694819425047441ull, 14931265137870215493ull, 12890261372692992069ull, 7215614733560422846ull}}, {{2888310468999145589ull, 4829023367055605655ull, 6889454679011464279ull, 9019518416950528558ull}}, {{8722723070765547849ull, 9935668632050835390ull, 18140967229664328886ull, 5637199010594080348ull}}, {{1680031801602159003ull, 3196213753208768430ull, 4229464963370859492ull, 7046498763242600436ull}}, {{11323411788857474562ull, 3995267191510960537ull, 5286831204213574365ull, 8808123454053250545ull}}, {{159603340394839746ull, 4802885003908044288ull, 14833484548701953738ull, 5505077158783281590ull}}, {{199504175493549682ull, 15226978291739831168ull, 9318483649022666364ull, 6881346448479101988ull}}, {{249380219366937102ull, 586978790965237344ull, 11648104561278332956ull, 8601683060598877485ull}}, {{155862637104335689ull, 9590233781208049148ull, 9585908360012652049ull, 5376051912874298428ull}}, {{194828296380419611ull, 16599478244937449339ull, 11982385450015815061ull, 6720064891092873035ull}}, {{14078593425757688226ull, 6914289750889647961ull, 10366295794092380923ull, 8400081113866091294ull}}, {{1881591863457473285ull, 2015588085092336024ull, 1867248852880350173ull, 5250050696166307059ull}}, {{2351989829321841607ull, 7131171124792807934ull, 16169119121382601428ull, 6562563370207883823ull}}, {{12163359323507077816ull, 8913963905991009917ull, 15599712883300863881ull, 8203204212759854779ull}}, {{9907942586405617587ull, 17100442487312850958ull, 7443977542849345973ull, 5127002632974909237ull}}, {{3161556196152246176ull, 7540495053858899986ull, 13916657946989070371ull, 6408753291218636546ull}}, {{13175317282045083528ull, 4813932798896237078ull, 8172450396881562156ull, 8010941614023295683ull}}, {{3622887282850789301ull, 12232080036164923982ull, 2801938488837282395ull, 5006838508764559802ull}}, {{13751981140418262434ull, 10678414026778767073ull, 12725795147901378802ull, 6258548135955699752ull}}, {{3354918370240664331ull, 4124645496618683034ull, 15907243934876723503ull, 7823185169944624690ull}}, {{6708509999827803111ull, 9495432463027758752ull, 14553713477725340093ull, 4889490731215390431ull}}, {{8385637499784753888ull, 16480976597212086344ull, 13580455828729287212ull, 6111863414019238039ull}}, {{10482046874730942360ull, 2154476672805556314ull, 12363883767484221112ull, 7639829267524047549ull}}, {{11162965315134226879ull, 1346547920503472696ull, 10033270363891332147ull, 4774893292202529718ull}}, {{13953706643917783599ull, 15518242955911504582ull, 3318215918009389375ull, 5968616615253162148ull}}, {{8218761268042453691ull, 14786117676461992824ull, 4147769897511736719ull, 7460770769066452685ull}}, {{5136725792526533557ull, 16158852575429827371ull, 4898199195158529401ull, 4662981730666532928ull}}, {{1809221222230779042ull, 6363507664005120502ull, 6122748993948161752ull, 5828727163333166160ull}}, {{11484898564643249610ull, 7954384580006400627ull, 7653436242435202190ull, 7285908954166457700ull}}, {{9744437187376674109ull, 719608688153224976ull, 9566795303044002738ull, 9107386192708072125ull}}, {{6090273242110421318ull, 5061441448523153514ull, 8285090073616195663ull, 5692116370442545078ull}}, {{16836213589492802456ull, 1715115792226553988ull, 1132990555165468771ull, 7115145463053181348ull}}, {{2598522913156451454ull, 15978952795565356198ull, 1416238193956835963ull, 8893931828816476685ull}}, {{15459134876004945871ull, 7681002488014653671ull, 3190991880436716429ull, 5558707393010297928ull}}, {{14712232576578794434ull, 14212939128445704993ull, 3988739850545895536ull, 6948384241262872410ull}}, {{4555232665441329331ull, 17766173910557131242ull, 14209296850037145228ull, 8685480301578590512ull}}, {{7458706434328218736ull, 1880486657243431218ull, 8880810531273215768ull, 5428425188486619070ull}}, {{100011006055497612ull, 2350608321554289023ull, 1877641127236743902ull, 6785531485608273838ull}}, {{13960071812851535726ull, 12161632438797637086ull, 11570423445900705685ull, 8481914357010342297ull}}, {{4113358864604821925ull, 9906863283462217131ull, 313985626046859197ull, 5301196473131463936ull}}, {{530012562328639502ull, 16995265122755159318ull, 392482032558573996ull, 6626495591414329920ull}}, {{9885887739765575186ull, 2797337329734397531ull, 490602540698217496ull, 8283119489267912400ull}}, {{3872836828139790539ull, 1748335831083998457ull, 306626587936385935ull, 5176949680792445250ull}}, {{9452732053602126078ull, 16020477844137161783ull, 9606655271775258226ull, 6471187100990556562ull}}, {{7204229048575269693ull, 10802225268316676421ull, 2784947052864296975ull, 8088983876238195703ull}}, {{6808486164573237511ull, 13668919820339004619ull, 8658120935681267465ull, 5055614922648872314ull}}, {{3898921687289158984ull, 3251091720141592062ull, 1599279132746808524ull, 6319518653311090393ull}}, {{14097024145966224538ull, 4063864650176990077ull, 6610784934360898559ull, 7899398316638862991ull}}, {{11116483100442584288ull, 9457444434001700654ull, 11049269611616643455ull, 4937123947899289369ull}}, {{4672231838698454552ull, 7210119524074737914ull, 18423273032948192223ull, 6171404934874111711ull}}, {{15063661835227843998ull, 4400963386666034488ull, 18417405272757852375ull, 7714256168592639639ull}}, {{9414788647017402499ull, 9668131144307353411ull, 18428407323114739590ull, 4821410105370399774ull}}, {{7156799790344365220ull, 2861791893529415956ull, 13812137117038648680ull, 6026762631712999718ull}}, {{8945999737930456525ull, 3577239866911769945ull, 8041799359443535042ull, 7533453289641249648ull}}, {{17120464882275005088ull, 6847460935247244119ull, 5026124599652209401ull, 4708408306025781030ull}}, {{16788895084416368456ull, 13171012187486443053ull, 15506027786420037559ull, 5885510382532226287ull}}, {{7151060800238296858ull, 11852079215930665913ull, 14770848714597659045ull, 7356887978165282859ull}}, {{13550512018725258976ull, 980040964631168679ull, 13851874874819685903ull, 9196109972706603574ull}}, {{15386599039344368716ull, 7530054630535562280ull, 4045735778334915785ull, 5747568732941627234ull}}, {{786504725470909279ull, 14024254306596840755ull, 14280541759773420539ull, 7184460916177034042ull}}, {{14818188962120800311ull, 12918631864818663039ull, 8627305162861999866ull, 8980576145221292553ull}}, {{16178897128966582051ull, 12685830933939052303ull, 16921280772857219676ull, 5612860090763307845ull}}, {{15611935392780839659ull, 15857288667423815379ull, 7316542910789360883ull, 7016075113454134807ull}}, {{14903233222548661670ull, 15209924815852381320ull, 4533992620059313200ull, 8770093891817668509ull}}, {{9314520764092913544ull, 9506203009907738325ull, 5139588396750764702ull, 5481308682386042818ull}}, {{16254836973543529834ull, 2659381725529897098ull, 15647857532793231686ull, 6851635852982553522ull}}, {{11095174180074636484ull, 12547599193767147181ull, 10336449879136763799ull, 8564544816228191903ull}}, {{9240326871760341755ull, 14759778523745548844ull, 13377810202101559230ull, 5352840510142619939ull}}, {{11550408589700427193ull, 9226351117827160247ull, 12110576734199561134ull, 6691050637678274924ull}}, {{9826324718698146087ull, 2309566860429174501ull, 15138220917749451418ull, 8363813297097843655ull}}, {{8447295958400035257ull, 6055165306195621967ull, 16378917101234488992ull, 5227383310686152284ull}}, {{5947433929572656167ull, 7568956632744527459ull, 2026902302833559624ull, 6534229138357690356ull}}, {{2822606393538432304ull, 9461195790930659324ull, 2533627878541949530ull, 8167786422947112945ull}}, {{10987501032816295998ull, 10524933387759049981ull, 13112732470157188216ull, 5104866514341945590ull}}, {{18346062309447757902ull, 13156166734698812476ull, 7167543550841709462ull, 6381083142927431988ull}}, {{4485833813100145761ull, 7221836381518739788ull, 8959429438552136828ull, 7976353928659289985ull}}, {{12027018170042366909ull, 13737019775303988175ull, 17128858445163555277ull, 4985221205412056240ull}}, {{10422086694125570732ull, 3336216663847821507ull, 2964328982744892481ull, 6231526506765070301ull}}, {{8415922349229575511ull, 8781956848237164788ull, 8317097246858503505ull, 7789408133456337876ull}}, {{14483323505123260503ull, 17017938076216697752ull, 14421557816141340498ull, 4868380083410211172ull}}, {{18104154381404075628ull, 12049050558416096382ull, 18026947270176675623ull, 6085475104262763965ull}}, {{13406820939900318727ull, 10449627179592732574ull, 8698626032438680817ull, 7606843880328454957ull}}, {{3767577069010311301ull, 18060232033313927619ull, 7742484279487869462ull, 4754277425205284348ull}}, {{97785317835501222ull, 13351918004787633716ull, 9678105349359836828ull, 5942846781506605435ull}}, {{122231647294376527ull, 16689897505984542145ull, 7485945668272408131ull, 7428558476883256794ull}}, {{11605609825627455089ull, 8125342932026644888ull, 9290402061097642986ull, 4642849048052035496ull}}, {{14507012282034318862ull, 933306628178530302ull, 11613002576372053733ull, 5803561310065044370ull}}, {{8910393315688122769ull, 5778319303650550782ull, 5292881183610291358ull, 7254451637581305463ull}}, {{1914619607755377653ull, 16446271166417964286ull, 2004415461085476293ull, 9068064546976631829ull}}, {{15031695310129274745ull, 12584762488224921630ull, 3558602672392116635ull, 5667540341860394893ull}}, {{9566247100806817624ull, 11119267091853764134ull, 9059939358917533698ull, 7084425427325493616ull}}, {{2734436839153746221ull, 4675711827962429360ull, 11324924198646917123ull, 8855531784156867020ull}}, {{1709023024471091389ull, 616476883262824398ull, 16301449661009099010ull, 5534707365098041887ull}}, {{11359650817443640044ull, 9993968140933306305ull, 15765126057833985858ull, 6918384206372552359ull}}, {{364505466522386342ull, 3269088139311857074ull, 15094721553865094419ull, 8647980257965690449ull}}, {{4839501935003879368ull, 18184081151565768335ull, 2516671943524602155ull, 5404987661228556531ull}}, {{1437691400327461306ull, 18118415421029822515ull, 16980897984687916406ull, 6756234576535695663ull}}, {{15632172305691490344ull, 13424647239432502335ull, 16614436462432507604ull, 8445293220669619579ull}}, {{16687636718698263321ull, 17613776561500089767ull, 8078179779806623300ull, 5278308262918512237ull}}, {{16247859879945441248ull, 3570476628165560593ull, 14709410743185667030ull, 6597885328648140296ull}}, {{6474766794649637848ull, 13686467822061726550ull, 18386763428982083787ull, 8247356660810175370ull}}, {{17881787301938187367ull, 6248199379574885141ull, 16103413161541190271ull, 5154597913006359606ull}}, {{8517176072140570496ull, 3198563206041218523ull, 10905894415071712031ull, 6443247391257949508ull}}, {{6034784071748325216ull, 17833262062833686866ull, 13632368018839640038ull, 8054059239072436885ull}}, {{8383426063270091164ull, 6534102770843666387ull, 10826073020988468976ull, 5033787024420273053ull}}, {{5867596560660226051ull, 8167628463554582984ull, 18144277294662974124ull, 6292233780525341316ull}}, {{7334495700825282564ull, 10209535579443228730ull, 4233602544619166039ull, 7865292225656676646ull}}, {{9195745831443189507ull, 13298488764793099812ull, 16481059645669142486ull, 4915807641035422903ull}}, {{11494682289303986883ull, 7399738919136598957ull, 15989638538659040204ull, 6144759551294278629ull}}, {{533294806347819892ull, 9249673648920748697ull, 6151990118041636543ull, 7680949439117848287ull}}, {{11862524300035857193ull, 12698575058216549791ull, 10762522851417104695ull, 4800593399448655179ull}}, {{10216469356617433587ull, 11261532804343299335ull, 8841467545843992965ull, 6000741749310818974ull}}, {{8158900677344404079ull, 241857950146960457ull, 1828462395450215399ull, 7500927186638523718ull}}, {{16628527969408722310ull, 7068690246482932141ull, 14977847052438548336ull, 4688079491649077323ull}}, {{6950601906478739175ull, 8835862808103665177ull, 14110622797120797516ull, 5860099364561346654ull}}, {{13299938401525811873ull, 11044828510129581471ull, 8414906459546221087ull, 7325124205701683318ull}}, {{12013236983479876937ull, 9194349619234588935ull, 1295261037578000551ull, 9156405257127104148ull}}, {{14425802142316004942ull, 12663997539662699940ull, 10032910185341026152ull, 5722753285704440092ull}}, {{18032252677895006177ull, 15829996924578374925ull, 12541137731676282690ull, 7153441607130550115ull}}, {{8705257792086594009ull, 10564124118868192849ull, 11064736146167965459ull, 8941802008913187644ull}}, {{16970001166122591016ull, 4296734565078926578ull, 16138832128209754220ull, 5588626255570742277ull}}, {{11989129420798462962ull, 5370918206348658223ull, 6338482104980029063ull, 6985782819463427847ull}}, {{10374725757570690798ull, 2101961739508434875ull, 3311416612797648425ull, 8732228524329284809ull}}, {{4178360589267987797ull, 12842941133261241557ull, 13598850429067000025ull, 5457642827705803005ull}}, {{9834636755012372650ull, 2218618361294388234ull, 3163504981051586320ull, 6822053534632253757ull}}, {{3069923906910690005ull, 2773272951617985293ull, 8566067244741870804ull, 8527566918290317196ull}}, {{4224545451032875205ull, 10956667631616016616ull, 14577164064818445060ull, 5329729323931448247ull}}, {{5280681813791094006ull, 13695834539520020770ull, 13609769062595668421ull, 6662161654914310309ull}}, {{15824224304093643316ull, 3284735119117862250ull, 3177153272962421815ull, 8327702068642887887ull}}, {{14501826208485914976ull, 8970488477089745762ull, 8903249823242595490ull, 5204813792901804929ull}}, {{8903910723752617912ull, 1989738559507406395ull, 15740748297480632267ull, 6506017241127256161ull}}, {{6518202386263384486ull, 16322231254666421706ull, 5840877316568626621ull, 8132521551409070202ull}}, {{8685562509842003208ull, 12507237543380207518ull, 8262234341282779542ull, 5082825969630668876ull}}, {{1633581100447728202ull, 6410674892370483590ull, 10327792926603474428ull, 6353532462038336095ull}}, {{11265348412414436061ull, 8013343615463104487ull, 8298055139826955131ull, 7941915577547920119ull}}, {{13958371785400104394ull, 2702496750450746352ull, 12103813490032928813ull, 4963697235967450074ull}}, {{17447964731750130492ull, 7989806956490820844ull, 5906394825686385208ull, 6204621544959312593ull}}, {{3363211840978111499ull, 9987258695613526056ull, 11994679550535369414ull, 7755776931199140741ull}}, {{2102007400611319687ull, 1630350666331065881ull, 9802517728298299836ull, 4847360581999462963ull}}, {{7239195269191537513ull, 2037938332913832351ull, 7641461141945486891ull, 6059200727499328704ull}}, {{4437308068062033987ull, 16382480971424454151ull, 9551826427431858613ull, 7574000909374160880ull}}, {{9690846570179853098ull, 12544893616353977796ull, 5969891517144911633ull, 4733750568358850550ull}}, {{12113558212724816373ull, 1846058965160308533ull, 16685736433285915350ull, 5917188210448563187ull}}, {{1306889710623856754ull, 11530945743305161475ull, 16245484523180006283ull, 7396485263060703984ull}}, {{16957707133635768135ull, 4900998080352031969ull, 10153427826987503927ull, 4622803289412939990ull}}, {{7362075861762546457ull, 1514561582012652058ull, 3468412746879604101ull, 5778504111766174988ull}}, {{18425966864057958879ull, 6504887995943202976ull, 4335515933599505126ull, 7223130139707718735ull}}, {{4585714506362896982ull, 17354482031783779529ull, 807708898571993503ull, 9028912674634648419ull}}, {{14395286612545280374ull, 17764080297505944061ull, 16645719126103353603ull, 5643070421646655261ull}}, {{4159050210399436756ull, 17593414353455042173ull, 6972090852347028292ull, 7053838027058319077ull}}, {{9810498781426683848ull, 3545023868109251100ull, 13326799583861173270ull, 8817297533822898846ull}}, {{15354933775246453213ull, 16050697972850445649ull, 3717563721485845389ull, 5510810958639311779ull}}, {{5358609163775902805ull, 6228314410780893350ull, 35268633429918833ull, 6888513698299139724ull}}, {{15921633491574654314ull, 12397079031903504591ull, 44085791787398541ull, 8610642122873924655ull}}, {{16868549959875240802ull, 10054017404153384321ull, 6945082647508205944ull, 5381651326796202909ull}}, {{7250629394561887291ull, 12567521755191730402ull, 13293039327812645334ull, 6727064158495253636ull}}, {{18286658780057134921ull, 6486030157134887194ull, 16616299159765806668ull, 8408830198119067045ull}}, {{16040847755963097230ull, 13277140885064080304ull, 12691029984067323119ull, 5255518873824416903ull}}, {{1604315621244319921ull, 11984740087902712477ull, 11252101461656765995ull, 6569398592280521129ull}}, {{6617080544982787806ull, 10369239091451002692ull, 230068771788793782ull, 8211748240350651412ull}}, {{13359047377469018187ull, 1869088413729488778ull, 9367165019222771922ull, 5132342650219157132ull}}, {{7475437184981496925ull, 11559732554016636781ull, 11708956274028464902ull, 6415428312773946415ull}}, {{13955982499654259060ull, 5226293655666020168ull, 10024509324108193224ull, 8019285390967433019ull}}, {{8722489062283911913ull, 3266433534791262605ull, 3959475318353926813ull, 5012053369354645637ull}}, {{15514797346282277795ull, 8694727936916466160ull, 9561030166369796420ull, 6265066711693307046ull}}, {{946752609143295628ull, 10868409921145582701ull, 2727915671107469717ull, 7831333389616633808ull}}, {{2897563389928253720ull, 9098599209929683140ull, 1704947294442168573ull, 4894583368510396130ull}}, {{3621954237410317149ull, 15984935030839491829ull, 11354556154907486524ull, 6118229210637995162ull}}, {{9139128815190284340ull, 1534424714839813170ull, 4969823156779582348ull, 7647786513297493953ull}}, {{10323641527921315617ull, 10182387483629659039ull, 14635354519055708727ull, 4779866570810933720ull}}, {{8292865891474256617ull, 8116298336109685895ull, 18294193148819635909ull, 5974833213513667150ull}}, {{5754396345915432867ull, 14757058938564495273ull, 13644369399169769078ull, 7468541516892083938ull}}, {{15125712762265615302ull, 4611475818175421641ull, 13139416892908493578ull, 4667838448057552461ull}}, {{5072082897549855416ull, 14987716809574052860ull, 2589213060853453260ull, 5834798060071940577ull}}, {{6340103621937319269ull, 287901938258014459ull, 7848202344494204480ull, 7293497575089925721ull}}, {{3313443508994261183ull, 359877422822518074ull, 14421938949045143504ull, 9116871968862407151ull}}, {{6682588211548801143ull, 224923389264073796ull, 15931240870794296546ull, 5698044980539004469ull}}, {{8353235264436001429ull, 9504526273434868053ull, 6078993033210706970ull, 7122556225673755587ull}}, {{15053230098972389690ull, 2657285804938809258ull, 2987055273085995809ull, 8903195282092194484ull}}, {{14019954830285131461ull, 13190018674155225546ull, 11090281582533523188ull, 5564497051307621552ull}}, {{8301571501001638518ull, 16487523342694031933ull, 13862851978166903985ull, 6955621314134526940ull}}, {{14988650394679436051ull, 6774346123085376204ull, 17328564972708629982ull, 8694526642668158675ull}}, {{144534459819871724ull, 18069024382210523840ull, 8524510098729199786ull, 5434079151667599172ull}}, {{180668074774839655ull, 13362908440908378992ull, 10655637623411499733ull, 6792598939584498965ull}}, {{225835093468549568ull, 2868577495853310028ull, 17931233047691762571ull, 8490748674480623706ull}}, {{9364518970272619288ull, 17933761999404176431ull, 15818706673234739510ull, 5306717921550389816ull}}, {{7093962694413386206ull, 13193830462400444731ull, 1326639267833872772ull, 6633397401937987271ull}}, {{4255767349589344854ull, 16492288078000555914ull, 15493357140074504677ull, 8291746752422484088ull}}, {{7271540611920728438ull, 12613523057964041398ull, 9683348212546565423ull, 5182341720264052555ull}}, {{18312797801755686355ull, 11155217804027663843ull, 7492499247255818875ull, 6477927150330065694ull}}, {{18279311233767220040ull, 9332336236607191900ull, 142252022214997786ull, 8097408937912582118ull}}, {{2201197484249736717ull, 10444396166306882842ull, 13923965569166537328ull, 5060880586195363823ull}}, {{11974868892166946704ull, 13055495207883603552ull, 12793270943030783756ull, 6326100732744204779ull}}, {{14968586115208683380ull, 16319369009854504440ull, 11379902660361091791ull, 7907625915930255974ull}}, {{9355366322005427113ull, 17117134658800147131ull, 2500753144298294465ull, 4942266197456409984ull}}, {{7082521884079395987ull, 7561360268218020202ull, 3125941430372868082ull, 6177832746820512480ull}}, {{18076524391954020792ull, 228328298417749444ull, 3907426787966085103ull, 7722290933525640600ull}}, {{2074455708116487187ull, 7060234214152175259ull, 2442141742478803189ull, 4826431833453525375ull}}, {{16428127690427772695ull, 13436978786117606977ull, 16887735233380667698ull, 6033039791816906718ull}}, {{6700101557752552157ull, 7572851445792232914ull, 11886297004871058815ull, 7541299739771133398ull}}, {{8799249492022733002ull, 11650561181261227427ull, 2817249609617023855ull, 4713312337356958374ull}}, {{6387375846601028349ull, 9951515458149146380ull, 12744934048876055627ull, 5891640421696197967ull}}, {{7984219808251285436ull, 7827708304259045071ull, 11319481542667681630ull, 7364550527120247459ull}}, {{5368588741886718891ull, 561263343469030531ull, 9537665909907214134ull, 9205688158900309324ull}}, {{1049524954465505355ull, 14185847644950307794ull, 15184413230546784641ull, 5753555099312693327ull}}, {{10535278229936657502ull, 3897251500905721030ull, 14368830519756092898ull, 7191943874140866659ull}}, {{3945725750566046069ull, 14094936412986927096ull, 13349352131267728218ull, 8989929842676083324ull}}, {{2466078594103778793ull, 13421021276544217339ull, 17566717118897105944ull, 5618706151672552077ull}}, {{16917656297911887203ull, 16776276595680271673ull, 8123338343339218718ull, 7023382689590690097ull}}, {{7312012317107695292ull, 11746973707745563784ull, 14765858947601411302ull, 8779228361988362621ull}}, {{4570007698192309558ull, 2730172548913589461ull, 11534504851464576016ull, 5487017726242726638ull}}, {{10324195641167774851ull, 3412715686141986826ull, 5194759027475944212ull, 6858772157803408298ull}}, {{3681872514604942756ull, 4265894607677483533ull, 15716820821199706073ull, 8573465197254260372ull}}, {{4607013330841783175ull, 14195399175866896968ull, 599640976395040487ull, 5358415748283912733ull}}, {{5758766663552228968ull, 13132562951406233306ull, 5361237238921188513ull, 6698019685354890916ull}}, {{16421830366295062018ull, 2580645633975627920ull, 6701546548651485642ull, 8372524606693613645ull}}, {{10263643978934413761ull, 6224589539662155354ull, 6494309602120872478ull, 5232827879183508528ull}}, {{3606182936813241394ull, 17004108961432470001ull, 8117887002651090597ull, 6541034848979385660ull}}, {{9119414689443939646ull, 7420078146508423789ull, 10147358753313863247ull, 8176293561224232075ull}}, {{8005477190116156231ull, 11555077869208846724ull, 4036256211607470577ull, 5110183475765145047ull}}, {{10006846487645195289ull, 608789281228894693ull, 433634246081950318ull, 6387729344706431309ull}}, {{17120244127983882015ull, 9984358638390894174ull, 5153728826029825801ull, 7984661680883039136ull}}, {{6088466561562538355ull, 17769439195062778619ull, 3221080516268641125ull, 4990413550551899460ull}}, {{2998897183525785040ull, 8376740938546309562ull, 4026350645335801407ull, 6238016938189874325ull}}, {{12971993516262007108ull, 5859240154755499048ull, 9644624325097139663ull, 7797521172737342906ull}}, {{8107495947663754443ull, 10579554124363268761ull, 10639576221613100193ull, 4873450732960839316ull}}, {{14746055953007080957ull, 17836128673881473855ull, 13299470277016375241ull, 6091813416201049145ull}}, {{13820883922831463292ull, 8460102787069678607ull, 2789279790988305340ull, 7614766770251311432ull}}, {{15555581479410746414ull, 14510936278773324937ull, 1743299869367690837ull, 4759229231407069645ull}}, {{5609418793981269305ull, 4303612293184492460ull, 6790810855137001451ull, 5949036539258837056ull}}, {{7011773492476586631ull, 767829348053227671ull, 8488513568921251814ull, 7436295674073546320ull}}, {{11299887460438948501ull, 14314951397815431006ull, 5305320980575782383ull, 4647684796295966450ull}}, {{4901487288693909818ull, 13282003228841900854ull, 15855023262574503787ull, 5809605995369958062ull}}, {{15350231147722163080ull, 11990818017624988163ull, 10595407041363353926ull, 7262007494212447578ull}}, {{14576102916225315946ull, 5765150485176459396ull, 4020886764849416600ull, 9077509367765559473ull}}, {{18333436359495598274ull, 3603219053235287122ull, 14042269274099355135ull, 5673443354853474670ull}}, {{13693423412514722035ull, 18339081871826272615ull, 8329464555769418110ull, 7091804193566843338ull}}, {{12505093247216014640ull, 13700480302928064961ull, 1188458657856996830ull, 8864755241958554173ull}}, {{898154251868927294ull, 3951114170902652697ull, 3048629670374316971ull, 5540472026224096358ull}}, {{5734378833263547021ull, 327206695200927967ull, 13034159124822672022ull, 6925590032780120447ull}}, {{2556287523152045873ull, 9632380405855935767ull, 11681012887600952123ull, 8656987540975150559ull}}, {{8515208729611110527ull, 3714394744446265902ull, 14218162082391676933ull, 5410617213109469099ull}}, {{1420638875159112350ull, 9254679448985220282ull, 13161016584562208262ull, 6763271516386836374ull}}, {{10999170630803666245ull, 2344977274376749544ull, 7227898693847984520ull, 8454089395483545468ull}}, {{6874481644252291404ull, 1465610796485468465ull, 13740808720509766133ull, 5283805872177215917ull}}, {{13204788073742752158ull, 6443699514034223485ull, 3340952845355043954ull, 6604757340221519897ull}}, {{2670927036896276486ull, 17277996429397555165ull, 8787877075121192846ull, 8255946675276899871ull}}, {{3975172407273866756ull, 6187061749946084074ull, 12409952199591827385ull, 5159966672048062419ull}}, {{14192337545947109253ull, 12345513205859992996ull, 10900754231062396327ull, 6449958340060078024ull}}, {{17740421932433886566ull, 10820205488897603341ull, 13625942788827995409ull, 8062447925075097530ull}}, {{13393606716984873056ull, 18291843476629471848ull, 13127900261444885034ull, 5039029953171935956ull}}, {{16742008396231091320ull, 13641432308932064002ull, 16409875326806106293ull, 6298787441464919945ull}}, {{11704138458434088341ull, 3216732330882916291ull, 6677286103225469155ull, 7873484301831149932ull}}, {{5009243527307611261ull, 18151358771297680346ull, 13396675851370694029ull, 4920927688644468707ull}}, {{15484926445989289885ull, 8854140408839936720ull, 12134158795785979633ull, 6151159610805585884ull}}, {{909413983777060740ull, 15679361529477308805ull, 15167698494732474541ull, 7688949513506982355ull}}, {{2874226749074356915ull, 12105443965137011955ull, 7173968549994102636ull, 4805593445941863972ull}}, {{17427841491625109855ull, 15131804956421264943ull, 8967460687492628295ull, 6006991807427329965ull}}, {{17173115846103999415ull, 14303070177099193275ull, 15821011877793173273ull, 7508739759284162456ull}}, {{8427354394601305682ull, 2021889833045913941ull, 9888132423620733296ull, 4692962349552601535ull}}, {{15145879011679020007ull, 2527362291307392426ull, 7748479511098528716ull, 5866202936940751919ull}}, {{9708976727743999200ull, 3159202864134240533ull, 5073913370445772991ull, 7332753671175939899ull}}, {{16747906928107386904ull, 17784061635449964378ull, 1730705694629828334ull, 9165942088969924874ull}}, {{15079127848494504719ull, 6503352503728839832ull, 5693377077571030613ull, 5728713805606203046ull}}, {{402165736908579283ull, 12740876648088437695ull, 16340093383818564074ull, 7160892257007753807ull}}, {{14337765226417887816ull, 6702723773255771310ull, 15813430711345817189ull, 8951115321259692259ull}}, {{4349417248083791981ull, 6495045367498551021ull, 7577551185377441791ull, 5594447075787307662ull}}, {{10048457578532127880ull, 3507120690945800872ull, 248566944867026431ull, 6993058844734134578ull}}, {{12560571973165159850ull, 18218958918964414802ull, 9534080717938558846ull, 8741323555917668222ull}}, {{12462043501655612811ull, 6775163305925371347ull, 1347114430284211375ull, 5463327222448542639ull}}, {{10965868358642128109ull, 3857268113979326280ull, 15518951093137427931ull, 6829159028060678298ull}}, {{13707335448302660136ull, 209899124046769946ull, 10175316829567009106ull, 8536448785075847873ull}}, {{13178770673616550489ull, 4742872970956619120ull, 17888788064547850451ull, 5335280490672404920ull}}, {{16473463342020688112ull, 1316905195268385996ull, 3914241006975261448ull, 6669100613340506151ull}}, {{2145085103816308523ull, 1646131494085482496ull, 281115240291688906ull, 8336375766675632689ull}}, {{1340678189885192827ull, 5640518202230814464ull, 11704912071250775326ull, 5210234854172270430ull}}, {{1675847737356491034ull, 16274019789643293888ull, 5407768052208693349ull, 6512793567715338038ull}}, {{2094809671695613792ull, 6507466681771953648ull, 15983082102115642495ull, 8140991959644172547ull}}, {{1309256044809758620ull, 10984695703748552886ull, 7683583304608582607ull, 5088119974777607842ull}}, {{10859942092866974083ull, 9119183611258303203ull, 381107093905952451ull, 6360149968472009803ull}}, {{8963241597656329700ull, 6787293495645491100ull, 14311441922664604276ull, 7950187460590012253ull}}, {{14825398035389981871ull, 13465430471633207745ull, 11250494210879071624ull, 4968867162868757658ull}}, {{4696689488955313626ull, 16831788089541509682ull, 4839745726744063722ull, 6211083953585947073ull}}, {{15094233898048917841ull, 11816363075072111294ull, 10661368176857467557ull, 7763854941982433841ull}}, {{4822210167853185747ull, 9691069931133763511ull, 18192570156604386983ull, 4852409338739021150ull}}, {{1416076691389094279ull, 7502151395489816485ull, 13517340658900707921ull, 6065511673423776438ull}}, {{6381781882663755753ull, 13989375262789658510ull, 7673303786771109093ull, 7581889591779720548ull}}, {{17823671731947011058ull, 11049202548457230520ull, 14019186903586718991ull, 4738680994862325342ull}}, {{3832845591224212206ull, 9199817167144150247ull, 8300611592628622931ull, 5923351243577906678ull}}, {{179370970602877353ull, 6888085440502799905ull, 1152392453931002856ull, 7404189054472383348ull}}, {{11641321902695268106ull, 4305053400314249940ull, 9943617320561652593ull, 4627618159045239592ull}}, {{14551652378369085132ull, 9993002768820200329ull, 12429521650702065741ull, 5784522698806549490ull}}, {{4354507417679192703ull, 17102939479452638316ull, 6313530026522806368ull, 7230653373508186863ull}}, {{5443134272098990879ull, 2931930275606246279ull, 3280226514726120057ull, 9038316716885233579ull}}, {{10319487947702951156ull, 13361671468322373684ull, 18191042636199682699ull, 5648947948053270986ull}}, {{12899359934628688944ull, 12090403316975579201ull, 13515431258394827566ull, 7061184935066588733ull}}, {{2289141863003697468ull, 5889632109364698194ull, 3059231017711370746ull, 8826481168833235917ull}}, {{6042399682804698822ull, 8292706086780324275ull, 4217862395283300668ull, 5516550730520772448ull}}, {{2941313585078485623ull, 10365882608475405344ull, 5272327994104125835ull, 6895688413150965560ull}}, {{3676641981348107029ull, 8345667242166868776ull, 6590409992630157294ull, 8619610516438706950ull}}, {{2297901238342566893ull, 604356007926905081ull, 17954064300676012021ull, 5387256572774191843ull}}, {{7484062566355596521ull, 5367131028336019255ull, 17830894357417627122ull, 6734070715967739804ull}}, {{4743392189517107747ull, 15932285822274799877ull, 3841873873062482286ull, 8417588394959674756ull}}, {{5270463127661886294ull, 5345992620494362019ull, 11624543207518827237ull, 5260992746849796722ull}}, {{1976392891149969963ull, 11294176794045340428ull, 5307306972543758238ull, 6576240933562245903ull}}, {{2470491113937462454ull, 4894348955701899727ull, 2022447697252309894ull, 8220301166952807379ull}}, {{8461585973851995890ull, 16894026152595851041ull, 17404930875278551347ull, 5137688229345504611ull}}, {{15188668485742382766ull, 16505846672317425897ull, 17144477575670801280ull, 6422110286681880764ull}}, {{5150777551895814746ull, 2185564266687230756ull, 2983852895878949985ull, 8027637858352350956ull}}, {{12442608006789660024ull, 12895192712747988982ull, 11088280096779119548ull, 5017273661470219347ull}}, {{6329887971632299222ull, 16118990890934986228ull, 9248664102546511531ull, 6271592076837774184ull}}, {{7912359964540374027ull, 15537052595241344881ull, 11560830128183139414ull, 7839490096047217730ull}}, {{16474440023906203527ull, 5098971853598452646ull, 11837204848541850038ull, 4899681310029511081ull}}, {{11369677993027978601ull, 15597086853852841616ull, 961448005395148835ull, 6124601637536888852ull}}, {{14212097491284973251ull, 14884672548888664116ull, 1201810006743936044ull, 7655752046921111065ull}}, {{18105932968907884090ull, 79548306200639264ull, 12280346300283429788ull, 4784845029325694415ull}}, {{4185672137425303497ull, 99435382750799081ull, 10738746856926899331ull, 5981056286657118019ull}}, {{9843776190209017275ull, 13959352283720662563ull, 8811747552731236259ull, 7476320358321397524ull}}, {{3846517109666941845ull, 6418752168111720150ull, 14730714257311798470ull, 4672700223950873452ull}}, {{14031518423938453114ull, 17246812246994425995ull, 18413392821639748087ull, 5840875279938591815ull}}, {{12927712011495678488ull, 16946829290315644590ull, 18405055008622297205ull, 7301094099923239769ull}}, {{6936267977514822302ull, 7348478557612392026ull, 9171260705495707795ull, 9126367624904049712ull}}, {{8946853504374151843ull, 2286956089294051064ull, 5732037940934817372ull, 5703979765565031070ull}}, {{11183566880467689804ull, 2858695111617563830ull, 16388419463023297523ull, 7129974706956288837ull}}, {{4756086563729836446ull, 17408426944804118500ull, 6650466273496958191ull, 8912468383695361047ull}}, {{12195926139185923587ull, 17797795868143655918ull, 11074070448576680725ull, 5570292739809600654ull}}, {{6021535637127628676ull, 8412186779897406186ull, 4619216023866075099ull, 6962865924762000818ull}}, {{16750291583264311653ull, 5903547456444369828ull, 14997392066687369682ull, 8703582405952501022ull}}, {{1245560202685418975ull, 8301403178705119047ull, 4761684023252218147ull, 5439739003720313139ull}}, {{15392008308638937431ull, 5765067954954010904ull, 1340419010637884780ull, 6799673754650391424ull}}, {{793266312089120172ull, 7206334943692513631ull, 1675523763297355975ull, 8499592193312989280ull}}, {{7413320472696781964ull, 11421488367448902875ull, 1047202352060847484ull, 5312245120820618300ull}}, {{4654964572443589551ull, 14276860459311128594ull, 1309002940076059355ull, 6640306401025772875ull}}, {{15042077752409262746ull, 13234389555711522838ull, 15471311730377237906ull, 8300383001282216093ull}}, {{4789612576828401313ull, 12883179490747089678ull, 11975412840699467643ull, 5187739375801385058ull}}, {{15210387757890277449ull, 11492288345006474193ull, 5745894014019558746ull, 6484674219751731323ull}}, {{5177926642080683099ull, 5141988394403316934ull, 2570681499097060529ull, 8105842774689664154ull}}, {{17071262206582590649ull, 14742957792570542843ull, 6218361955363050734ull, 5066151734181040096ull}}, {{16727391739800850407ull, 9205325203858402746ull, 7772952444203813418ull, 6332689667726300120ull}}, {{11685867637896287201ull, 2283284467968227625ull, 9716190555254766773ull, 7915862084657875150ull}}, {{386138246044097645ull, 3732895801693836218ull, 1460933078606841329ull, 4947413802911171969ull}}, {{9706044844409897864ull, 9277805770544683176ull, 6437852366685939565ull, 6184267253638964961ull}}, {{12132556055512372329ull, 16208943231608241874ull, 12659001476784812360ull, 7730334067048706201ull}}, {{12194533553122620610ull, 10130589519755151171ull, 994346895349425869ull, 4831458791905441376ull}}, {{10631480922975887858ull, 17274922918121326868ull, 1242933619186782336ull, 6039323489881801720ull}}, {{13289351153719859823ull, 3146909573942106969ull, 1553667023983477921ull, 7549154362352252150ull}}, {{1388315443433830534ull, 13496033529782286616ull, 14806099945271837412ull, 4718221476470157593ull}}, {{1735394304292288167ull, 16870041912227858270ull, 4672566876307633053ull, 5897776845587696992ull}}, {{11392614917220136016ull, 7252494335002659125ull, 5840708595384541317ull, 7372221056984621240ull}}, {{405710591243006308ull, 13677303937180711811ull, 7300885744230676646ull, 9215276321230776550ull}}, {{16394470184022736607ull, 3936628942310556977ull, 18398111645426336616ull, 5759547700769235343ull}}, {{6658029674746257046ull, 4920786177888196222ull, 18385953538355532866ull, 7199434625961544179ull}}, {{17545909130287597116ull, 15374354759215021085ull, 18370755904517028178ull, 8999293282451930224ull}}, {{13272036215643442150ull, 14220657742936776082ull, 11481722440323142611ull, 5624558301532456390ull}}, {{7366673232699526879ull, 13164136160243582199ull, 5128781013549152456ull, 7030697876915570488ull}}, {{4596655522447020695ull, 16455170200304477749ull, 6410976266936440570ull, 8788372346144463110ull}}, {{5178752710743081886ull, 14896167393617686497ull, 17841918222117439068ull, 5492732716340289443ull}}, {{11085126906856240262ull, 173465168312556505ull, 17690711759219410932ull, 6865915895425361804ull}}, {{21350578288136615ull, 216831460390695632ull, 3666645625314712049ull, 8582394869281702256ull}}, {{13344111430085385ull, 11664734708812654530ull, 2291653515821695030ull, 5363996793301063910ull}}, {{9240052176142382539ull, 5357546349161042354ull, 12087938931631894596ull, 6704995991626329887ull}}, {{2326693183323202365ull, 6696932936451302943ull, 10498237646112480341ull, 8381244989532912359ull}}, {{8371712267218083334ull, 6491426094495758291ull, 13478927556461382069ull, 5238278118458070224ull}}, {{5852954315595216264ull, 12725968636547085768ull, 16848659445576727586ull, 6547847648072587780ull}}, {{7316192894494020330ull, 6684088758829081402ull, 2614080233261357867ull, 8184809560090734726ull}}, {{9184306577486150610ull, 1871712465054481924ull, 15468858201070512379ull, 5115505975056709203ull}}, {{11480383221857688263ull, 16174698636600266117ull, 14724386732910752569ull, 6394382468820886504ull}}, {{515420972039946616ull, 6383315240468168935ull, 18405483416138440712ull, 7992978086026108130ull}}, {{7239667135166048491ull, 3989572025292605584ull, 16115113153513913349ull, 4995611303766317581ull}}, {{9049583918957560614ull, 9598651050043144884ull, 6308833386610227974ull, 6244514129707896977ull}}, {{11311979898696950767ull, 2774941775699155297ull, 12497727751690172872ull, 7805642662134871221ull}}, {{152458409044512374ull, 1734338609811972061ull, 10116922854020051997ull, 4878526663834294513ull}}, {{4802259029733028371ull, 6779609280692352980ull, 17257839585952452900ull, 6098158329792868141ull}}, {{6002823787166285464ull, 8474511600865441225ull, 7737241427158402413ull, 7622697912241085177ull}}, {{15280979913047398175ull, 7602412759754594717ull, 16364990938042471268ull, 4764186195150678235ull}}, {{5266166836027084007ull, 9503015949693243397ull, 15844552654125701181ull, 5955232743938347794ull}}, {{11194394563461242912ull, 16490455955543942150ull, 10582318780802350668ull, 7444040929922934743ull}}, {{2384810583735888916ull, 1083162935360188036ull, 13531478265642551024ull, 4652525581201834214ull}}, {{2981013229669861145ull, 1353953669200235045ull, 7690975795198412972ull, 5815656976502292768ull}}, {{8337952555514714336ull, 1692442086500293806ull, 9613719743998016215ull, 7269571220627865960ull}}, {{1199068657538617111ull, 15950610663407530970ull, 12017149679997520268ull, 9086964025784832450ull}}, {{5361103929389023599ull, 745759627774931048ull, 12122404568425838072ull, 5679352516115520281ull}}, {{6701379911736279498ull, 932199534718663810ull, 1317947655250133878ull, 7099190645144400352ull}}, {{17600096926525125181ull, 10388621455253105570ull, 1647434569062667347ull, 8873988306430500440ull}}, {{15611746597505591142ull, 4187045400319497029ull, 1029646605664167092ull, 5546242691519062775ull}}, {{5679625191599825216ull, 5233806750399371287ull, 15122116312362372577ull, 6932803364398828468ull}}, {{2487845471072393615ull, 11153944456426602013ull, 455901316743414105ull, 8666004205498535586ull}}, {{3860746428633939962ull, 53686257625544402ull, 4896624341392021720ull, 5416252628436584741ull}}, {{14049305072647200760ull, 67107822031930502ull, 10732466445167415054ull, 6770315785545730926ull}}, {{8338259303954225142ull, 9307256814394688936ull, 4192211019604493009ull, 8462894731932163658ull}}, {{5211412064971390714ull, 17346250555065150345ull, 7231817905680196034ull, 5289309207457602286ull}}, {{11125951099641626296ull, 12459441156976662123ull, 18263144418955020851ull, 6611636509322002857ull}}, {{9295752856124644966ull, 10962615427793439750ull, 8993872468411612352ull, 8264545636652503572ull}}, {{1198159516650515200ull, 6851634642370899844ull, 14844542329612033528ull, 5165341022907814732ull}}, {{1497699395813144000ull, 8564543302963624805ull, 108933838305490294ull, 6456676278634768416ull}}, {{6483810263193817904ull, 1482307091849755198ull, 136167297881862868ull, 8070845348293460520ull}}, {{17887439469778299902ull, 10149813969260872806ull, 85104561176164292ull, 5044278342683412825ull}}, {{13135927300368099070ull, 12687267461576091008ull, 4718066719897593269ull, 6305347928354266031ull}}, {{16419909125460123837ull, 2024026271687950048ull, 1285897381444603683ull, 7881684910442832539ull}}, {{10262443203412577398ull, 17405917484300826444ull, 16944586927898734965ull, 4926053069026770336ull}}, {{12828054004265721748ull, 7922338800093869343ull, 2733989586163867091ull, 6157566336283462921ull}}, {{11423381486904764280ull, 5291237481689948775ull, 8029173001132221768ull, 7696957920354328651ull}}, {{14057142456956559531ull, 3307023426056217984ull, 2712390116493944653ull, 4810598700221455407ull}}, {{17571428071195699414ull, 8745465300997660384ull, 17225545700899594528ull, 6013248375276819258ull}}, {{3517541015285072652ull, 10931831626247075481ull, 12308560089269717352ull, 7516560469096024073ull}}, {{13727678180621640167ull, 6832394766404422175ull, 775321028152491489ull, 4697850293185015046ull}}, {{12547911707349662305ull, 13152179476432915623ull, 10192523322045390169ull, 5872312866481268807ull}}, {{11073203615759689977ull, 2605166290258980817ull, 8128968134129349808ull, 7340391083101586009ull}}, {{6446464417448760ull, 3256457862823726022ull, 14772896186089075164ull, 9175488853876982511ull}}, {{13839087095543069187ull, 11258658201119604571ull, 16150589143946753833ull, 5734680533673114069ull}}, {{12687172851001448579ull, 238264696117342002ull, 6353178374651278580ull, 7168350667091392587ull}}, {{6635594026897034916ull, 297830870146677503ull, 3329786949886710321ull, 8960438333864240734ull}}, {{11064775294451728679ull, 11715359339910143199ull, 15916174898961357662ull, 5600273958665150458ull}}, {{9219283099637272944ull, 5420827138032903191ull, 10671846586846921270ull, 7000342448331438073ull}}, {{6912417856119203276ull, 15999405959395904797ull, 17951494251986039491ull, 8750428060414297591ull}}, {{6626104169288196000ull, 7693785715408746546ull, 18137212935132356538ull, 5469017537758935994ull}}, {{17506002248465020808ull, 393860107406157374ull, 13448144132060669865ull, 6836271922198669993ull}}, {{12659130773726500202ull, 5104011152685084622ull, 2975122109793673619ull, 8545339902748337492ull}}, {{3300270715151674722ull, 884163961214483937ull, 11082823355475821820ull, 5340837439217710932ull}}, {{8737024412366981307ull, 1105204951518104921ull, 13853529194344777275ull, 6676046799022138665ull}}, {{15532966533886114537ull, 15216564244679794863ull, 3481853437648807881ull, 8345058498777673332ull}}, {{16625633111319903442ull, 2592823625283789933ull, 11399530435385280734ull, 5215661561736045832ull}}, {{6946983333867715590ull, 12464401568459513225ull, 14249413044231600917ull, 6519576952170057290ull}}, {{13295415185762032392ull, 1745443905292227819ull, 8588394268434725339ull, 8149471190212571613ull}}, {{6003791481887576293ull, 17231803505303500051ull, 7673589426985397288ull, 5093419493882857258ull}}, {{2893053333932082462ull, 3093010307919823448ull, 368614746876970803ull, 6366774367353571573ull}}, {{3616316667415103078ull, 17701320940181943022ull, 5072454452023601407ull, 7958467959191964466ull}}, {{16095255972416603136ull, 17980854615254796244ull, 7781970050942138783ull, 4974042474494977791ull}}, {{1672325891811202303ull, 17864382250641107402ull, 5115776545250285575ull, 6217553093118722239ull}}, {{11313779401618778687ull, 17718791794873996348ull, 1783034663135469065ull, 7771941366398402799ull}}, {{16294484162866512488ull, 4156715844155165861ull, 8031925692100750022ull, 4857463353999001749ull}}, {{6533047148300976897ull, 14419266842048733135ull, 14651593133553325431ull, 6071829192498752186ull}}, {{3554622916948833218ull, 13412397534133528515ull, 9091119380086880981ull, 7589786490623440233ull}}, {{18362540387588878425ull, 10688591468047149273ull, 17211164658622770373ull, 4743616556639650145ull}}, {{9118117429203934319ull, 17972425353486324496ull, 7678897767996299254ull, 5929520695799562682ull}}, {{11397646786504917899ull, 13242159655003129812ull, 375250173140598260ull, 7411900869749453353ull}}, {{16346901278420349495ull, 17499721821231731940ull, 11763746404281343672ull, 4632438043593408345ull}}, {{1986882524315885253ull, 3427908202830113310ull, 869624950069515879ull, 5790547554491760432ull}}, {{11706975192249632374ull, 18119943308819805349ull, 1087031187586894848ull, 7238184443114700540ull}}, {{798660935029876755ull, 4203185062315205071ull, 1358788984483618561ull, 9047730553893375675ull}}, {{7416692112034754828ull, 14156205710015472929ull, 16990144179798119264ull, 5654831596183359796ull}}, {{13882551158470831439ull, 17695257137519341161ull, 2790936151038097464ull, 7068539495229199746ull}}, {{3518130892806375587ull, 3672327348189624836ull, 12712042225652397639ull, 8835674369036499682ull}}, {{11422203844858760550ull, 9212733620259597378ull, 12556712409460136428ull, 5522296480647812301ull}}, {{5054382769218674879ull, 11515917025324496723ull, 1860832456543006823ull, 6902870600809765377ull}}, {{1706292443095955695ull, 9783210263228233000ull, 6937726589106146433ull, 8628588251012206721ull}}, {{1066432776934972310ull, 17643721460586115385ull, 15865294164259811280ull, 5392867656882629200ull}}, {{5944726989596103291ull, 3607907752023092615ull, 1384873631615212485ull, 6741084571103286501ull}}, {{2819222718567741209ull, 9121570708456253673ull, 6342778057946403510ull, 8426355713879108126ull}}, {{13291229245173308016ull, 1089295674357770641ull, 17799294341498665906ull, 5266472321174442578ull}}, {{2778978501184471308ull, 10584991629801989110ull, 13025745890018556574ull, 6583090401468053223ull}}, {{12697095163335364943ull, 4007867500397710579ull, 11670496344095807814ull, 8228863001835066529ull}}, {{5629841467870909137ull, 16339975243030732824ull, 376531187418798027ull, 5143039376146916581ull}}, {{7037301834838636422ull, 15813283035361028126ull, 5082350002700885438ull, 6428799220183645726ull}}, {{18019999330403071335ull, 10543231757346509349ull, 15576309540230882606ull, 8035999025229557157ull}}, {{13568342590715613537ull, 1977833829914180439ull, 12041036471857995581ull, 5022499390768473223ull}}, {{12348742219967129017ull, 7083978305820113453ull, 10439609571395106572ull, 6278124238460591529ull}}, {{1600869719676747559ull, 8854972882275141817ull, 17661197982671271119ull, 7847655298075739411ull}}, {{12529758620866436984ull, 12451887079063045491ull, 8732405729955850497ull, 4904784561297337132ull}}, {{11050512257655658326ull, 1729800793546643152ull, 10915507162444813122ull, 6130980701621671415ull}}, {{13813140322069572908ull, 11385623028788079748ull, 9032697934628628498ull, 7663725877027089269ull}}, {{17856584738148258876ull, 11727700411419937746ull, 7951279218356586763ull, 4789828673141930793ull}}, {{13097358885830547786ull, 10047939495847534279ull, 14550785041373121358ull, 5987285841427413491ull}}, {{11760012588860796829ull, 3336552332954642041ull, 13576795283289013794ull, 7484107301784266864ull}}, {{432478840396916162ull, 6697031226524039180ull, 8485497052055633621ull, 4677567063615166790ull}}, {{540598550496145203ull, 12982975051582436879ull, 1383499278214766218ull, 5846958829518958488ull}}, {{14510806243402345215ull, 7005346777623270290ull, 1729374097768457773ull, 7308698536898698110ull}}, {{8915135767398155711ull, 13368369490456475767ull, 11385089659065348024ull, 9135873171123372637ull}}, {{12489488882264929175ull, 8355230931535297354ull, 9421524046129536467ull, 5709920731952107898ull}}, {{6388489065976385661ull, 5832352645991733789ull, 2553533020807144776ull, 7137400914940134873ull}}, {{12597297350897869980ull, 7290440807489667236ull, 7803602294436318874ull, 8921751143675168591ull}}, {{17096682881165944546ull, 9168211523108429926ull, 11794780461663781152ull, 5576094464796980369ull}}, {{12147481564602654874ull, 11460264403885537408ull, 908417521797562728ull, 6970118080996225462ull}}, {{15184351955753318593ull, 14325330504856921760ull, 10358893939101729218ull, 8712647601245281827ull}}, {{9490219972345824121ull, 13565017583962964004ull, 4168465702724886809ull, 5445404750778301142ull}}, {{11862774965432280151ull, 3121213924671541293ull, 14433954165260884320ull, 6806755938472876427ull}}, {{993410651508186476ull, 3901517405839426617ull, 13430756688148717496ull, 8508444923091095534ull}}, {{12150096703261086308ull, 2438448378649641635ull, 3782536911665560531ull, 5317778076931934709ull}}, {{10575934860648969981ull, 16883118528594215756ull, 9339857158009338567ull, 6647222596164918386ull}}, {{13219918575811212476ull, 16492212142315381791ull, 2451449410656897401ull, 8309028245206147983ull}}, {{15179978137523089653ull, 3390103561306031763ull, 8449684909301642732ull, 5193142653253842489ull}}, {{14363286653476474163ull, 4237629451632539704ull, 15173792155054441319ull, 6491428316567303111ull}}, {{17954108316845592703ull, 685350796113286726ull, 14355554175390663745ull, 8114285395709128889ull}}, {{6609631679601107536ull, 11957559293639273964ull, 2054692331978082984ull, 5071428372318205556ull}}, {{8262039599501384419ull, 14946949117049092455ull, 2568365414972603730ull, 6339285465397756945ull}}, {{5715863480949342620ull, 9460314359456589761ull, 7822142787143142567ull, 7924106831747196181ull}}, {{15101629721661808898ull, 12830225502301450456ull, 7194682251178158056ull, 4952566769841997613ull}}, {{430293078367709506ull, 16037781877876813071ull, 13605038832400085474ull, 6190708462302497016ull}}, {{14372924403241800595ull, 10823855310491240530ull, 17006298540500106843ull, 7738385577878121270ull}}, {{13594763770453513276ull, 4459066559843331379ull, 6017250569385178873ull, 4836490986173825794ull}}, {{12381768694639503691ull, 10185519218231552128ull, 16744935248586249399ull, 6045613732717282242ull}}, {{15477210868299379613ull, 8120213004362052256ull, 11707797023878035941ull, 7557017165896602803ull}}, {{9673256792687112258ull, 7380976136939976612ull, 5011530130710078511ull, 4723135728685376752ull}}, {{12091570990858890323ull, 4614534152747582861ull, 6264412663387598139ull, 5903919660856720940ull}}, {{1279405683291449191ull, 1156481672507090673ull, 7830515829234497674ull, 7379899576070901175ull}}, {{12328843598125625505ull, 5334487063744319574ull, 11811601420912642902ull, 4612437235044313234ull}}, {{6187682460802256073ull, 15891480866535175276ull, 5541129739286027819ull, 5765546543805391543ull}}, {{7734603076002820091ull, 15252665064741581191ull, 2314726155680146870ull, 7206933179756739429ull}}, {{5056567826576137210ull, 9842459294072200681ull, 7505093713027571492ull, 9008666474695924286ull}}, {{14689569937678555516ull, 15374909095649901233ull, 78997552214844278ull, 5630416546684952679ull}}, {{4526904366816030683ull, 9995264332707600734ull, 13933804995550719060ull, 7038020683356190848ull}}, {{14882002495374814162ull, 12494080415884500917ull, 17417256244438398825ull, 8797525854195238560ull}}, {{11607094568822952803ull, 891271232286731217ull, 10885785152773999266ull, 5498453658872024100ull}}, {{673810155746527292ull, 10337461077213189830ull, 13607231440967499082ull, 6873067073590030125ull}}, {{10065634731537934923ull, 3698454309661711479ull, 3173981245927210141ull, 8591333841987537657ull}}, {{13208550734852291183ull, 4617376952752263626ull, 13512953324772976098ull, 5369583651242211035ull}}, {{7287316381710588171ull, 14995093227795105341ull, 12279505637538832218ull, 6711979564052763794ull}}, {{13720831495565623117ull, 9520494497889105868ull, 6126010010068764465ull, 8389974455065954743ull}}, {{17798891721583290256ull, 17479524107249160927ull, 10746285283934059646ull, 5243734034416221714ull}}, {{17636928633551724916ull, 12626033097206675351ull, 4209484568062798750ull, 6554667543020277143ull}}, {{17434474773512268241ull, 6559169334653568381ull, 650169691651110534ull, 8193334428775346429ull}}, {{13202389742658861603ull, 17934538889440643950ull, 2712199066495638035ull, 5120834017984591518ull}}, {{7279615141468801196ull, 17806487593373417034ull, 12613620869974323352ull, 6401042522480739397ull}}, {{18322890963690777303ull, 3811365418007219676ull, 1931968032185740479ull, 8001303153100924247ull}}, {{2228434815451960006ull, 9299632413895594154ull, 8125009047757169655ull, 5000814470688077654ull}}, {{12008915556169725816ull, 7012854498942104788ull, 932889272841686261ull, 6251018088360097068ull}}, {{15011144445212157269ull, 13377754142105018889ull, 1166111591052107826ull, 7813772610450121335ull}}, {{2464436250616516438ull, 12972782357243024710ull, 7646348772048649247ull, 4883607881531325834ull}}, {{12303917350125421355ull, 11604291928126392983ull, 334563928206035751ull, 6104509851914157293ull}}, {{10768210669229388789ull, 9893678891730603325ull, 5029890928684932593ull, 7630637314892696616ull}}, {{9035974677482061946ull, 17712764353400096838ull, 3143681830428082870ull, 4769148321807935385ull}}, {{2071596309997801624ull, 12917583404895345240ull, 8541288306462491492ull, 5961435402259919231ull}}, {{2589495387497252030ull, 16146979256119181550ull, 6064924364650726461ull, 7451794252824899039ull}}, {{15453492672467946231ull, 12397705044288182420ull, 10708106755547785894ull, 4657371408015561899ull}}, {{870121766875381172ull, 6273759268505452218ull, 8773447426007344464ull, 5821714260019452374ull}}, {{10311024245449002273ull, 7842199085631815272ull, 1743437245654404772ull, 7277142825024315468ull}}, {{12888780306811252842ull, 9802748857039769090ull, 2179296557068005965ull, 9096428531280394335ull}}, {{12667173710184420930ull, 8432561044863549633ull, 8279589375808585584ull, 5685267832050246459ull}}, {{1998909082448362451ull, 10540701306079437042ull, 5737800701333344076ull, 7106584790062808074ull}}, {{11722008389915228871ull, 13175876632599296302ull, 16395622913521455903ull, 8883230987578510092ull}}, {{2714569225269630141ull, 15152451923015642045ull, 1023892284096134131ull, 5552019367236568808ull}}, {{8004897550014425580ull, 14328878885342164652ull, 1279865355120167664ull, 6940024209045711010ull}}, {{10006121937518031974ull, 17911098606677705815ull, 10823203730754985388ull, 8675030261307138762ull}}, {{13171355238589851840ull, 1971064592318790326ull, 11376188350149253772ull, 5421893913316961726ull}}, {{7240822011382538992ull, 2463830740398487908ull, 4996863400831791407ull, 6777367391646202158ull}}, {{9051027514228173740ull, 16914846480780273597ull, 15469451287894515066ull, 8471709239557752697ull}}, {{7962735205606302540ull, 15183465068915058902ull, 2750878027292990060ull, 5294818274723595436ull}}, {{730046970153102366ull, 532587262434272012ull, 3438597534116237576ull, 6618522843404494295ull}}, {{912558712691377958ull, 665734078042840015ull, 18133304972927460682ull, 8273153554255617868ull}}, {{7487878223073193080ull, 5027769817204162913ull, 2109943571224887118ull, 5170720971409761168ull}}, {{13971533797268879254ull, 15508084308359979449ull, 2637429464031108897ull, 6463401214262201460ull}}, {{3629359191303935355ull, 5550047330167810600ull, 3296786830038886122ull, 8079251517827751825ull}}, {{2268349494564959597ull, 8080465599782269529ull, 13589706814842773586ull, 5049532198642344890ull}}, {{7447122886633587400ull, 877209962873061103ull, 7763761481698691175ull, 6311915248302931113ull}}, {{4697217589864596346ull, 14931570508873490091ull, 14316387870550751872ull, 7889894060378663891ull}}, {{629917984451678765ull, 9332231568045931307ull, 6641899409880525968ull, 4931183787736664932ull}}, {{14622455535846762168ull, 11665289460057414133ull, 8302374262350657460ull, 6163979734670831165ull}}, {{4443011364526288997ull, 14581611825071767667ull, 14989653846365709729ull, 7704974668338538956ull}}, {{471039093615236672ull, 2195978363028772936ull, 145161617123792773ull, 4815609167711586848ull}}, {{588798867019045839ull, 7356658972213354074ull, 181452021404740966ull, 6019511459639483560ull}}, {{9959370620628583107ull, 18419195752121468400ull, 226815026755926207ull, 7524389324549354450ull}}, {{6224606637892864442ull, 18429526372716999606ull, 4753445410149841783ull, 4702743327843346531ull}}, {{17004130334220856360ull, 18425221947468861603ull, 1330120744259914325ull, 5878429159804183164ull}}, {{16643476899348682546ull, 9196469379053913292ull, 1662650930324892907ull, 7348036449755228955ull}}, {{2357602050476301567ull, 6883900705390003712ull, 15913371718188279846ull, 9185045562194036193ull}}, {{1473501281547688480ull, 18137495996150916032ull, 3028328296226593047ull, 5740653476371272621ull}}, {{1841876601934610599ull, 18060183976761257136ull, 8397096388710629213ull, 7175816845464090776ull}}, {{2302345752418263249ull, 8740171915669407708ull, 10496370485888286517ull, 8969771056830113470ull}}, {{10662338132116190339ull, 7768450456507073769ull, 1948545535252791169ull, 5606106910518820919ull}}, {{17939608683572625827ull, 14322249089061230115ull, 16270739974348152673ull, 7007633638148526148ull}}, {{17812824836038394380ull, 4067753306044373932ull, 1891680894225639226ull, 8759542047685657686ull}}, {{1909643485669220680ull, 7154031834705121612ull, 15017358614173188228ull, 5474713779803536053ull}}, {{2387054357086525850ull, 8942539793381402015ull, 4936640212434321573ull, 6843392224754420067ull}}, {{16818876001640321024ull, 15789860760154140422ull, 1559114247115514062ull, 8554240280943025084ull}}, {{5900111482597812736ull, 5256976956668949860ull, 10197818441301972097ull, 5346400175589390677ull}}, {{7375139353247265920ull, 11182907214263575229ull, 17358959070054853025ull, 6683000219486738346ull}}, {{13830610209986470304ull, 143575962547305324ull, 12475326800713790474ull, 8353750274358422933ull}}, {{17867503418096319748ull, 4701420995019453731ull, 10102922259659812998ull, 5221093921474014333ull}}, {{17722693254193011781ull, 15100148280629092972ull, 17240338843002154151ull, 6526367401842517916ull}}, {{3706622494031713110ull, 14263499332358978312ull, 3103679480043141073ull, 8157959252303147396ull}}, {{2316639058769820694ull, 1997158055083279589ull, 11163171711881738979ull, 5098724532689467122ull}}, {{7507484841889663771ull, 16331505624136263198ull, 4730592602997397915ull, 6373405665861833903ull}}, {{160984015507303906ull, 15802696011742941094ull, 1301554735319359490ull, 7966757082327292379ull}}, {{13935673064974228654ull, 14488371025766726087ull, 16954372774070457345ull, 4979223176454557736ull}}, {{12807905312790397913ull, 4275405726926243897ull, 2746221893878520066ull, 6224028970568197171ull}}, {{2174823585705833679ull, 14567629195512580680ull, 17267835422630313794ull, 7780036213210246463ull}}, {{1359264741066146049ull, 13716454265622750829ull, 17709926166785027977ull, 4862522633256404039ull}}, {{6310766944760070466ull, 3310509776746274824ull, 17525721690053897068ull, 6078153291570505049ull}}, {{7888458680950088082ull, 4138137220932843530ull, 8072094057285207623ull, 7597691614463131312ull}}, {{9541972694021192955ull, 9503864790724109062ull, 5045058785803254764ull, 4748557259039457070ull}}, {{2704093830671715386ull, 11879830988405136328ull, 15529695519108844263ull, 5935696573799321337ull}}, {{3380117288339644233ull, 10238102717079032506ull, 5577061343603891617ull, 7419620717249151672ull}}, {{6724259323639665550ull, 17928029244242865076ull, 3485663339752432260ull, 4637262948280719795ull}}, {{8405324154549581937ull, 3963292481594029729ull, 18192137229972704038ull, 5796578685350899743ull}}, {{15118341211614365325ull, 14177487638847312969ull, 18128485519038492143ull, 7245723356688624679ull}}, {{5062868459235792944ull, 13110173530131753308ull, 18048920880370727275ull, 9057154195860780849ull}}, {{12387664823877146398ull, 5888015447118651865ull, 4363046522590622691ull, 5660721372412988031ull}}, {{1649522974564269286ull, 2748333290470926928ull, 842122134810890460ull, 7075901715516235039ull}}, {{2061903718205336607ull, 3435416613088658660ull, 14887710723795776787ull, 8844877144395293798ull}}, {{10512061860733111187ull, 18288036447676269326ull, 4693133183944972587ull, 5528048215247058624ull}}, {{3916705289061613176ull, 18248359541167948754ull, 5866416479931215734ull, 6910060269058823280ull}}, {{14119253648181792278ull, 13587077389605160134ull, 7333020599914019668ull, 8637575336323529100ull}}, {{4212847511686232270ull, 17715295405358000892ull, 13806509911801038100ull, 5398484585202205687ull}}, {{5266059389607790337ull, 3697375182987949499ull, 12646451371323909722ull, 6748105731502757109ull}}, {{1970888218582350018ull, 13845091015589712682ull, 1973006158872723440ull, 8435132164378446387ull}}, {{5843491155041356665ull, 8653181884743570426ull, 17374029913791309814ull, 5271957602736528991ull}}, {{16527735980656471639ull, 1593105319074687224ull, 17105851373811749364ull, 6589947003420661239ull}}, {{2212925902111037933ull, 1991381648843359031ull, 16770628198837298801ull, 8237433754275826549ull}}, {{8300607716460480564ull, 12773828576595569154ull, 12787485633487005702ull, 5148396096422391593ull}}, {{1152387608720824897ull, 6743913683889685635ull, 2149298986576593416ull, 6435495120527989492ull}}, {{15275542566183194834ull, 8429892104862107043ull, 2686623733220741770ull, 8044368900659986865ull}}, {{7241371094650802819ull, 9880368583966204806ull, 13208354879331433366ull, 5027730562912491790ull}}, {{18275085905168279332ull, 3127088693102980199ull, 7287071562309515900ull, 6284663203640614738ull}}, {{18232171363032961261ull, 3908860866378725249ull, 18332211489741670683ull, 7855829004550768422ull}}, {{4477578074254518932ull, 137195032273009329ull, 6845946162661156273ull, 4909893127844230264ull}}, {{10208658611245536569ull, 4783179808768649565ull, 8557432703326445341ull, 6137366409805287830ull}}, {{17372509282484308615ull, 10590660779388199860ull, 1473418842303280868ull, 7671708012256609788ull}}, {{1634446264697917077ull, 15842535023972400721ull, 10144258813294326350ull, 4794817507660381117ull}}, {{6654743849299784250ull, 10579796743110725093ull, 17292009535045295842ull, 5993521884575476396ull}}, {{12930115830052118216ull, 4001373892033630558ull, 3168267845097068187ull, 7491902355719345496ull}}, {{3469636375355185981ull, 195015673307325147ull, 1980167403185667617ull, 4682438972324590935ull}}, {{18172103524476146188ull, 4855455610061544337ull, 16310267309264248233ull, 5853048715405738668ull}}, {{8880071350313019023ull, 10681005531004318326ull, 1941090062870758675ull, 7316310894257173336ull}}, {{1876717151036497971ull, 8739570895328010004ull, 2426362578588448344ull, 9145388617821466670ull}}, {{10396320256252587040ull, 5462231809580006252ull, 15351534666899943927ull, 5715867886138416668ull}}, {{12995400320315733800ull, 2216103743547619911ull, 742674259915378293ull, 7144834857673020836ull}}, {{11632564381967279346ull, 7381815697861912793ull, 928342824894222866ull, 8931043572091276045ull}}, {{352823711088467735ull, 9225320829591083400ull, 2886057274772583243ull, 5581902232557047528ull}}, {{441029638860584669ull, 6919965018561466346ull, 3607571593465729054ull, 6977377790696309410ull}}, {{9774659085430506644ull, 17873328310056608740ull, 13732836528686937125ull, 8721722238370386762ull}}, {{15332533965248842461ull, 13476673202999074414ull, 13194708848856723607ull, 5451076398981491726ull}}, {{9942295419706277268ull, 12234155485321455114ull, 7270014024216128701ull, 6813845498726864658ull}}, {{3204497237778070777ull, 1457636301369655181ull, 18310889567124936685ull, 8517306873408580822ull}}, {{4308653782824988188ull, 3216865697569728440ull, 6832619961025697524ull, 5323316795880363014ull}}, {{5385817228531235234ull, 4021082121962160550ull, 17764146988136897713ull, 6654145994850453767ull}}, {{15955643572518819851ull, 9638038670880088591ull, 17593497716743734237ull, 8317682493563067209ull}}, {{16889806260465344263ull, 8329617178513749321ull, 4078407045323752042ull, 5198551558476917006ull}}, {{7277199770299516617ull, 1188649436287410844ull, 14321380843509465861ull, 6498189448096146257ull}}, {{9096499712874395771ull, 6097497813786651459ull, 4066667999104668614ull, 8122736810120182822ull}}, {{3379469311332803405ull, 17645994188898820874ull, 16376725554722581595ull, 5076710506325114263ull}}, {{13447708676020780064ull, 17445806717696138188ull, 15859220924975839090ull, 6345888132906392829ull}}, {{16809635845025975080ull, 12583886360265396927ull, 5988968100937635151ull, 7932360166132991037ull}}, {{17423551430782316281ull, 14782458002806954935ull, 6048948072299715921ull, 4957725103833119398ull}}, {{17167753270050507447ull, 4643014448226529957ull, 16784557127229420710ull, 6197156379791399247ull}}, {{7624633532280970597ull, 15027140097137938255ull, 16369010390609387983ull, 7746445474739249059ull}}, {{11682924985316688479ull, 16309491588352293265ull, 7924788484917173537ull, 4841528421712030662ull}}, {{768598176363696887ull, 6551806430158202870ull, 682613569291691114ull, 6051910527140038328ull}}, {{10184119757309396917ull, 17413130074552529395ull, 853266961614613892ull, 7564888158925047910ull}}, {{4059231839104679121ull, 1659834259740555064ull, 14368349906291297395ull, 4728055099328154943ull}}, {{5074039798880848901ull, 15909850879957857542ull, 13348751364436733839ull, 5910068874160193679ull}}, {{15565921785455836934ull, 15275627581519934023ull, 12074253187118529395ull, 7387586092700242099ull}}, {{16646230143550979940ull, 7241424229236264812ull, 5240565232735386920ull, 4617241307937651312ull}}, {{2361043605729173309ull, 9051780286545331016ull, 6550706540919233650ull, 5771551634922064140ull}}, {{2951304507161466636ull, 2091353321326887962ull, 8188383176149042063ull, 7214439543652580175ull}}, {{12912502670806609103ull, 16449249706940773664ull, 5623792951758914674ull, 9018049429565725219ull}}, {{8070314169254130690ull, 14892467085265371444ull, 1209027585635627719ull, 5636280893478578262ull}}, {{10087892711567663362ull, 14003897838154326401ull, 10734656518899310457ull, 7045351116848222827ull}}, {{17221551907886967106ull, 3669814242410744289ull, 8806634630196750168ull, 8806688896060278534ull}}, {{3845940914788272586ull, 2293633901506715181ull, 892460625445580951ull, 5504180560037674084ull}}, {{9419112161912728636ull, 16702100432165557688ull, 1115575781806976188ull, 6880225700047092605ull}}, {{11773890202390910795ull, 2430881466497395494ull, 6006155745686108140ull, 8600282125058865756ull}}, {{2746995358066931343ull, 10742672953415647992ull, 12977219377908593395ull, 5375176328161791097ull}}, {{3433744197583664178ull, 8816655173342172086ull, 2386466167103578032ull, 6718970410202238872ull}}, {{13515552283834356031ull, 11020818966677715107ull, 2983082708879472540ull, 8398713012752798590ull}}, {{6141377168182778568ull, 16111383891028347750ull, 15699484748331834049ull, 5249195632970499118ull}}, {{16900093497083249017ull, 6304171808503270975ull, 10400983898560016754ull, 6561494541213123898ull}}, {{16513430852926673367ull, 17103586797483864527ull, 3777857836345245134ull, 8201868176516404873ull}}, {{17238423310720252711ull, 6078055730000027425ull, 13890376193784247969ull, 5126167610322753045ull}}, {{7712971083118152176ull, 12209255680927422186ull, 3527912186948146249ull, 6407709512903441307ull}}, {{417841817042914412ull, 1426511545877114021ull, 18244948288967346524ull, 8009636891129301633ull}}, {{2566994144865515460ull, 10114941753027972071ull, 4485563652963509721ull, 5006023056955813521ull}}, {{17043800736364058037ull, 17255363209712352992ull, 10218640584631775055ull, 6257528821194766901ull}}, {{2858006846745520930ull, 16957517993713053337ull, 17384986749217106723ull, 7821911026493458626ull}}, {{13315469325284420341ull, 8292605736856964383ull, 15477302736688079606ull, 4888694391558411641ull}}, {{12032650638178137523ull, 1142385134216429671ull, 5511570365577935796ull, 6110867989448014552ull}}, {{10429127279295283999ull, 1427981417770537089ull, 6889462956972419745ull, 7638584986810018190ull}}, {{18047419595628022260ull, 12421703432175055440ull, 18140972403389926052ull, 4774115616756261368ull}}, {{4112530420825476208ull, 15527129290218819301ull, 4229471430527855949ull, 5967644520945326711ull}}, {{9752349044459233164ull, 5573853557491360414ull, 675153269732432033ull, 7459555651181658389ull}}, {{1483532134359632824ull, 15012873519500570019ull, 2727813802796463972ull, 4662222281988536493ull}}, {{15689473223231704742ull, 319347825666160907ull, 8021453271922967870ull, 5827777852485670616ull}}, {{15000155510612243023ull, 9622556818937476942ull, 10026816589903709837ull, 7284722315607088270ull}}, {{9526822351410527971ull, 16639882042099234082ull, 3310148700524861488ull, 9105902894508860338ull}}, {{10565949988058967886ull, 10399926276312021301ull, 6680528956255426334ull, 5691189309068037711ull}}, {{17819123503501097761ull, 3776535808535250818ull, 3738975176891895014ull, 7113986636335047139ull}}, {{13050532342521596393ull, 13944041797523839331ull, 62032952687480863ull, 8892483295418808924ull}}, {{5850739704862303794ull, 15632555151093481438ull, 9262142632284451347ull, 5557802059636755577ull}}, {{16536796667932655551ull, 14929007920439463893ull, 16189364308782952088ull, 6947252574545944471ull}}, {{6835937779633655726ull, 214515826839778251ull, 15625019367551302207ull, 8684065718182430589ull}}, {{1966618103057340877ull, 7051601419415943263ull, 12071480113933257831ull, 5427541073864019118ull}}, {{16293330684103839808ull, 4202815755842541174ull, 5865978105561796481ull, 6784426342330023898ull}}, {{11143291318275023952ull, 9865205713230564372ull, 16555844668807021409ull, 8480532927912529872ull}}, {{16187929110776665778ull, 17694968616837572492ull, 10347402918004388380ull, 5300333079945331170ull}}, {{1788167314761280607ull, 3671966697337414000ull, 3710881610650709668ull, 6625416349931663963ull}}, {{2235209143451600758ull, 4589958371671767500ull, 26915994885999181ull, 8281770437414579954ull}}, {{10620377751512026282ull, 5174566991508548639ull, 4628508515231137392ull, 5176106523384112471ull}}, {{8663786170962644948ull, 6468208739385685799ull, 1173949625611533836ull, 6470133154230140589ull}}, {{6218046695275918281ull, 8085260924232107249ull, 6079123050441805199ull, 8087666442787675736ull}}, {{15415494230615918686ull, 11970817105286148886ull, 3799451906526128249ull, 5054791526742297335ull}}, {{10045995751415122549ull, 1128463326325522396ull, 137628864730272408ull, 6318489408427871669ull}}, {{12557494689268903187ull, 1410579157906902995ull, 4783722099340228414ull, 7898111760534839586ull}}, {{5542591171579370540ull, 14716670028973978084ull, 7601512330515030662ull, 4936319850334274741ull}}, {{6928238964474213175ull, 9172465499362696797ull, 14113576431571176232ull, 6170399812917843426ull}}, {{13271984724020154372ull, 11465581874203370996ull, 8418598502609194482ull, 7712999766147304283ull}}, {{17518362489367372291ull, 11777674689804494776ull, 2955781054917052599ull, 4820624853842065177ull}}, {{3451209037999663747ull, 10110407343828230567ull, 8306412337073703653ull, 6025781067302581471ull}}, {{18149069352781743396ull, 17249695198212676112ull, 5771329402914741662ull, 7532226334128226839ull}}, {{11343168345488589623ull, 6169373480455534666ull, 10524609904462795395ull, 4707641458830141774ull}}, {{4955588395005961220ull, 3100030832142030429ull, 3932390343723718436ull, 5884551823537677218ull}}, {{10806171512184839429ull, 3875038540177538036ull, 14138859966509423853ull, 7355689779422096522ull}}, {{13507714390231049286ull, 9455484193649310449ull, 8450202921282004008ull, 9194612224277620653ull}}, {{1524792466253323948ull, 5909677621030819031ull, 7587219835014946457ull, 5746632640173512908ull}}, {{15741048638098818647ull, 11998783044715911692ull, 9484024793768683071ull, 7183290800216891135ull}}, {{1229566723913971693ull, 10386792787467501712ull, 7243344973783465935ull, 8979113500271113919ull}}, {{768479202446232308ull, 13409274519808270426ull, 11444619636255748065ull, 5611945937669446199ull}}, {{10183971039912566193ull, 2926535094478174320ull, 9694088526892297178ull, 7014932422086807749ull}}, {{12729963799890707741ull, 12881540904952493708ull, 16729296677042759376ull, 8768665527608509686ull}}, {{17179599411786468147ull, 8050963065595308567ull, 5844124404724336706ull, 5480415954755318554ull}}, {{16862813246305697279ull, 840331795139359901ull, 16528527542760196691ull, 6850519943444148192ull}}, {{7243458502599957887ull, 14885472799206363589ull, 2213915354740694247ull, 8563149929305185241ull}}, {{6833004573338667631ull, 16220949527145059099ull, 12912912142781403664ull, 5351968705815740775ull}}, {{3929569698245946635ull, 1829442835221772258ull, 11529454160049366677ull, 6689960882269675969ull}}, {{14135334159662209102ull, 6898489562454603226ull, 576759644779544634ull, 8362451102837094962ull}}, {{13446269868216268593ull, 8923241994961514920ull, 4972160796414603300ull, 5226531939273184351ull}}, {{16807837335270335741ull, 11154052493701893650ull, 1603514977090866221ull, 6533164924091480439ull}}, {{11786424632233143868ull, 107507561845203351ull, 15839451776645746489ull, 8166456155114350548ull}}, {{14284044422786796774ull, 11596407272221721854ull, 676285323548815747ull, 5104035096946469093ull}}, {{8631683491628720159ull, 9883823071849764414ull, 5457042672863407588ull, 6380043871183086366ull}}, {{1566232327681124390ull, 12354778839812205518ull, 16044675377934035293ull, 7975054838978857957ull}}, {{14813953260082866456ull, 10027579784096322400ull, 12333765120422466010ull, 4984409274361786223ull}}, {{70697501394031454ull, 3311102693265627193ull, 10805520382100694609ull, 6230511592952232779ull}}, {{4700057895169927222ull, 8750564385009421895ull, 8895214459198480357ull, 7788139491190290974ull}}, {{9855065212122286370ull, 7774945749844582636ull, 947823018571662319ull, 4867587181993931859ull}}, {{12318831515152857962ull, 5106996168878340391ull, 15019836828496741611ull, 6084483977492414823ull}}, {{10786853375513684548ull, 1772059192670537585ull, 14163110017193539110ull, 7605604971865518529ull}}, {{18270998405764522603ull, 14942595050701249702ull, 1934414733104880087ull, 4753503107415949081ull}}, {{13615375970350877446ull, 14066557794949174224ull, 7029704434808488013ull, 5941878884269936351ull}}, {{17019219962938596807ull, 3748139188404304068ull, 4175444525083222113ull, 7427348605337420439ull}}, {{1413640439981847196ull, 13871802038821159803ull, 9527181855818095676ull, 4642092878335887774ull}}, {{15602108605259472707ull, 17339752548526449753ull, 2685605282917843787ull, 5802616097919859718ull}}, {{5667577701292177172ull, 17063004667230674288ull, 12580378640502080542ull, 7253270122399824647ull}}, {{7084472126615221465ull, 12105383797183567052ull, 11113787282200212774ull, 9066587652999780809ull}}, {{13651167115989289224ull, 2954178854812341503ull, 28588023734051128ull, 5666617283124863006ull}}, {{12452272876559223626ull, 3692723568515426879ull, 9259107066522339718ull, 7083271603906078757ull}}, {{10953655077271641628ull, 13839276497499059407ull, 16185569851580312551ull, 8854089504882598446ull}}, {{13763563450935857874ull, 15567076838577993985ull, 5504295138810307440ull, 5533805940551624029ull}}, {{3369396258387658630ull, 1012101974512940866ull, 11492054941940272205ull, 6917257425689530036ull}}, {{13435117359839349095ull, 5876813486568563986ull, 14365068677425340256ull, 8646571782111912545ull}}, {{13008634368326981089ull, 3673008429105352491ull, 2060638895749755804ull, 5404107363819945341ull}}, {{11649106941981338457ull, 4591260536381690614ull, 7187484638114582659ull, 6755134204774931676ull}}, {{5338011640621897263ull, 1127389652049725364ull, 8984355797643228324ull, 8443917755968664595ull}}, {{12559629312243461597ull, 9927990569385854160ull, 3309379364313323750ull, 5277448597480415372ull}}, {{15699536640304326997ull, 3186616174877541892ull, 4136724205391654688ull, 6596810746850519215ull}}, {{1177676726670857130ull, 3983270218596927366ull, 559219238312180456ull, 8246013433563149019ull}}, {{14571106009451449418ull, 2489543886623079603ull, 16490413088440970449ull, 5153758395976968136ull}}, {{13602196493386923869ull, 7723615876706237408ull, 2166272286841661445ull, 6442197994971210171ull}}, {{17002745616733654836ull, 14266205864310184664ull, 16542898413834240518ull, 8052747493714012713ull}}, {{10626716010458534273ull, 4304692646766477511ull, 3421782481005318468ull, 5032967183571257946ull}}, {{8671708994645779937ull, 5380865808458096889ull, 13500600138111423893ull, 6291208979464072432ull}}, {{15451322261734612825ull, 11337768279000009015ull, 16875750172639279866ull, 7864011224330090540ull}}, {{16574605441225214872ull, 11697791192802393538ull, 1323971821044774108ull, 4915007015206306588ull}}, {{11494884764676742781ull, 14622238991002991923ull, 1654964776305967635ull, 6143758769007883235ull}}, {{9756919937418540573ull, 13666112720326352000ull, 15903764025664623256ull, 7679698461259854043ull}}, {{6098074960886587858ull, 8541320450203970000ull, 7634009506826695583ull, 4799811538287408777ull}}, {{7622593701108234822ull, 6064964544327574596ull, 14154197901960757383ull, 5999764422859260971ull}}, {{9528242126385293528ull, 2969519661982080341ull, 13081061359023558825ull, 7499705528574076214ull}}, {{8260994338204502407ull, 13385164834807269973ull, 3563977330962336361ull, 4687315955358797634ull}}, {{14937928941183015913ull, 2896397988226923754ull, 13678343700557696260ull, 5859144944198497042ull}}, {{9449039139623994083ull, 3620497485283654693ull, 7874557588842344517ull, 7323931180248121303ull}}, {{16422984942957380507ull, 9137307875031956270ull, 5231510967625542742ull, 9154913975310151629ull}}, {{5652679570920974913ull, 1099131403467584765ull, 5575537363979658166ull, 5721821234568844768ull}}, {{11677535482078606546ull, 10597286291189256764ull, 6969421704974572707ull, 7152276543211055960ull}}, {{14596919352598258182ull, 8634921845559183051ull, 8711777131218215884ull, 8940345679013819950ull}}, {{6817231586160217412ull, 14620198190329265215ull, 833174688583997023ull, 5587716049383637469ull}}, {{3909853464272883861ull, 13663561719484193615ull, 5653154379157384183ull, 6984645061729546836ull}}, {{275630811913716922ull, 12467766130927854115ull, 7066442973946730229ull, 8730806327161933545ull}}, {{16313170321941930740ull, 10098196841043602773ull, 15945741904785176153ull, 5456753954476208465ull}}, {{6556404847145249713ull, 17234432069731891371ull, 6097119325699306479ull, 6820942443095260582ull}}, {{3583820040504174237ull, 16931354068737476310ull, 16844771193978908907ull, 8526178053869075727ull}}, {{16074945580597272611ull, 8276253283747228741ull, 17445511023877899923ull, 5328861283668172329ull}}, {{6258623920464427051ull, 5733630586256648023ull, 7971830724565211192ull, 6661076604585215412ull}}, {{3211593882153145910ull, 7167038232820810029ull, 9964788405706513990ull, 8326345755731519265ull}}, {{4313089185559410146ull, 18314456950795169980ull, 17757207799635041003ull, 5203966097332199540ull}}, {{5391361481949262682ull, 18281385170066574571ull, 3749765675834249638ull, 6504957621665249426ull}}, {{2127515834009190448ull, 13628359425728442406ull, 13910579131647587856ull, 8131197027081561782ull}}, {{15164755451537907742ull, 8517724641080276503ull, 4082425938852354506ull, 5081998141925976114ull}}, {{14344258295994996774ull, 1423783764495569821ull, 14326404460420218941ull, 6352497677407470142ull}}, {{4095264814711582255ull, 6391415724046850181ull, 8684633538670497868ull, 7940622096759337678ull}}, {{4865383518408432862ull, 13218006864384057171ull, 816209943241673263ull, 4962888810474586049ull}}, {{1470043379583153173ull, 11910822562052683560ull, 5631948447479479483ull, 6203611013093232561ull}}, {{1837554224478941466ull, 10276842184138466546ull, 11651621577776737258ull, 7754513766366540701ull}}, {{5760157408726726321ull, 11034712383513929495ull, 9588106495324154738ull, 4846571103979087938ull}}, {{2588510742481019997ull, 4570018442537636061ull, 2761761082300417615ull, 6058213879973859923ull}}, {{7847324446528662900ull, 1100837034744657172ull, 17287259408157685731ull, 7572767349967324903ull}}, {{14127949815935190120ull, 16828924211211268396ull, 17722066157739635437ull, 4732979593729578064ull}}, {{17659937269918987650ull, 7201097208731921783ull, 3705838623464992681ull, 5916224492161972581ull}}, {{17463235568971346659ull, 13613057529342290133ull, 9243984297758628755ull, 7395280615202465726ull}}, {{13220365239820785614ull, 6202317946625237381ull, 1165804167671755068ull, 4622050384501541079ull}}, {{2690398494493818305ull, 7752897433281546727ull, 15292313264871857547ull, 5777562980626926348ull}}, {{17198056173399436594ull, 5079435773174545504ull, 668647507380270318ull, 7221953725783657936ull}}, {{3050826143039744126ull, 15572666753322957689ull, 835809384225337897ull, 9027442157229572420ull}}, {{13435981385468309839ull, 2815387693185766699ull, 9745752901995611994ull, 5642151348268482762ull}}, {{12183290713407999394ull, 12742606653336984182ull, 2958819090639739184ull, 7052689185335603453ull}}, {{6005741354905223435ull, 15928258316671230228ull, 8310209881727061884ull, 8815861481669504316ull}}, {{12976960383670540455ull, 731789411064743084ull, 14417253212934189486ull, 5509913426043440197ull}}, {{16221200479588175569ull, 10138108800685704663ull, 4186508460885573145ull, 6887391782554300247ull}}, {{15664814581057831557ull, 17284322019284518733ull, 621449557679578527ull, 8609239728192875309ull}}, {{12096352122374838675ull, 17720230289693906064ull, 2694248982763430531ull, 5380774830120547068ull}}, {{15120440152968548344ull, 17538601843689994676ull, 3367811228454288164ull, 6725968537650683835ull}}, {{453806117501133814ull, 3476508230902941730ull, 18044822090850023918ull, 8407460672063354793ull}}, {{4895314841865596538ull, 16007875699596502293ull, 4360484779140183092ull, 5254662920039596746ull}}, {{10730829570759383576ull, 1563100550786076250ull, 14673978010780004674ull, 6568328650049495932ull}}, {{4190164926594453662ull, 11177247725337371121ull, 18342472513475005842ull, 8210410812561869915ull}}, {{14148068125190003299ull, 11597465846763244854ull, 9158202311708184699ull, 5131506757851168697ull}}, {{8461713119632728315ull, 9885146290026668164ull, 16059438908062618778ull, 6414383447313960871ull}}, {{10577141399540910394ull, 3133060825678559397ull, 15462612616650885569ull, 8017979309142451089ull}}, {{8916556383926762949ull, 13487378062117569383ull, 2746603857765721624ull, 5011237068214031931ull}}, {{6534009461481065782ull, 16859222577646961729ull, 17268312877489315742ull, 6264046335267539913ull}}, {{12779197845278720131ull, 11850656185203926353ull, 7750333041579480966ull, 7830057919084424892ull}}, {{1069469625658118226ull, 2794974097325066067ull, 14067330187841951412ull, 4893786199427765557ull}}, {{15171895087354811494ull, 3493717621656332583ull, 3749104679520275553ull, 6117232749284706947ull}}, {{14353182840766126464ull, 8978833045497803633ull, 74694830972956537ull, 7646540936605883684ull}}, {{2053210247837747184ull, 17140985699504597031ull, 9270056306212873643ull, 4779088085378677302ull}}, {{16401570865079347692ull, 16814546105953358384ull, 2364198345911316246ull, 5973860106723346628ull}}, {{2055219507639632999ull, 11794810595586922173ull, 2955247932389145308ull, 7467325133404183285ull}}, {{3590355201488464576ull, 16595128659096602166ull, 4152872966956909769ull, 4667078208377614553ull}}, {{13711316038715356528ull, 6908852768588588995ull, 9802777227123525116ull, 5833847760472018191ull}}, {{12527459029966807756ull, 8636065960735736244ull, 7641785515477018491ull, 7292309700590022739ull}}, {{15659323787458509695ull, 6183396432492282401ull, 4940545875918885210ull, 9115387125737528424ull}}, {{2869548339520486704ull, 8476308788735064405ull, 3087841172449303256ull, 5697116953585955265ull}}, {{8198621442827996284ull, 10595385985918830506ull, 8471487483989016974ull, 7121396191982444081ull}}, {{1024904766680219546ull, 4020860445543762325ull, 15201045373413659122ull, 8901745239978055101ull}}, {{2946408488388831169ull, 7124723796892239357ull, 11806496367597230903ull, 5563590774986284438ull}}, {{8294696628913426865ull, 4294218727687911292ull, 5534748422641762821ull, 6954488468732855548ull}}, {{10368370786141783581ull, 9979459428037277019ull, 6918435528302203526ull, 8693110585916069435ull}}, {{4174388732124920786ull, 1625476124095910233ull, 2018179195975183252ull, 5433194116197543397ull}}, {{9829671933583538887ull, 2031845155119887791ull, 7134410013396366969ull, 6791492645246929246ull}}, {{7675403898552035704ull, 7151492462327247643ull, 18141384553600234519ull, 8489365806558661557ull}}, {{2491284427381328363ull, 11387211816595611633ull, 13644208355213840526ull, 5305853629099163473ull}}, {{7725791552654048358ull, 5010642733889738733ull, 3220202388735136946ull, 6632317036373954342ull}}, {{14268925459244948351ull, 15486675454216949224ull, 13248625022773696990ull, 8290396295467442927ull}}, {{8918078412028092720ull, 5067486140458205361ull, 15197919666874642475ull, 5181497684667151829ull}}, {{15759284033462503804ull, 1722671657145368797ull, 5162341528311139382ull, 6476872105833939787ull}}, {{5864046986545966042ull, 11376711608286486805ull, 1841240891961536323ull, 8096090132292424734ull}}, {{5970872375804922729ull, 4804601745965360301ull, 14985833612758123914ull, 5060056332682765458ull}}, {{12075276488183541315ull, 15229124219311476184ull, 9508919979092879084ull, 6325070415853456823ull}}, {{15094095610229426643ull, 589661200429793614ull, 7274463955438710952ull, 7906338019816821029ull}}, {{4822123737966003748ull, 368538250268621009ull, 6852382981362888297ull, 4941461262385513143ull}}, {{10639340690884892589ull, 5072358831263164165ull, 3953792708276222467ull, 6176826577981891429ull}}, {{17910861882033503640ull, 1728762520651567302ull, 9553926903772665988ull, 7721033222477364286ull}}, {{6582602657843551871ull, 10303848612262005372ull, 1359518296430528338ull, 4825645764048352679ull}}, {{8228253322304439839ull, 3656438728472730907ull, 15534455925820324135ull, 6032057205060440848ull}}, {{5673630634453161895ull, 18405606465873077346ull, 971325833565853552ull, 7540071506325551061ull}}, {{8157705164960614088ull, 11503504041170673341ull, 2912921655192352422ull, 4712544691453469413ull}}, {{14808817474628155514ull, 5156008014608565868ull, 8252838087417828432ull, 5890680864316836766ull}}, {{64277769575642777ull, 6445010018260707336ull, 1092675572417509732ull, 7363351080396045958ull}}, {{80347211969553471ull, 8056262522825884170ull, 10589216502376662973ull, 9204188850495057447ull}}, {{4661903025908358824ull, 7341007085979871558ull, 13535789341626496214ull, 5752618031559410904ull}}, {{15050750819240224337ull, 18399630894329615255ull, 16919736677033120267ull, 7190772539449263630ull}}, {{14201752505622892517ull, 18387852599484631165ull, 11926298809436624526ull, 8988465674311579538ull}}, {{11181938325228001776ull, 6880721856250506574ull, 12065622774325278233ull, 5617791046444737211ull}}, {{4754050869680226411ull, 13212588338740521122ull, 10470342449479209887ull, 7022238808055921514ull}}, {{15165935623955058822ull, 11904049404998263498ull, 3864556024994236551ull, 8777798510069901893ull}}, {{14090395783399299668ull, 14357559905764996542ull, 4721190524835091796ull, 5486124068793688683ull}}, {{8389622692394348777ull, 17946949882206245678ull, 1289802137616476841ull, 6857655085992110854ull}}, {{1263656328638160163ull, 8598629297475643386ull, 10835624708875371860ull, 8572068857490138567ull}}, {{5401471223826238006ull, 14597515347777052924ull, 13689794470688189268ull, 5357543035931336604ull}}, {{6751839029782797507ull, 18246894184721316155ull, 17112243088360236585ull, 6696928794914170755ull}}, {{3828112768801108980ull, 8973559675619481482ull, 16778617842022907828ull, 8371160993642713444ull}}, {{7004256498928081017ull, 14831846834116951734ull, 1263264114409541584ull, 5231975621026695903ull}}, {{17978692660514877079ull, 93064468936638051ull, 15414138198294090693ull, 6539969526283369878ull}}, {{17861679807216208444ull, 4728016604598185468ull, 10044300711012837558ull, 8174961907854212348ull}}, {{1940177842655354470ull, 16790068433156029630ull, 15501059981237799281ull, 5109351192408882717ull}}, {{11648594340173968895ull, 7152527486162873325ull, 5541266921265085390ull, 6386688990511103397ull}}, {{725684869935297407ull, 18164031394558367465ull, 11538269670008744641ull, 7983361238138879246ull}}, {{11982768089778030640ull, 4434990593957897809ull, 2599732525328077497ull, 4989600773836799529ull}}, {{1143402056940374587ull, 10155424260874760166ull, 7861351675087484775ull, 6237000967295999411ull}}, {{10652624608030244042ull, 8082594307666062303ull, 5215003575431968065ull, 7796251209119999264ull}}, {{13575419407659984382ull, 16580836488359758699ull, 3259377234644980040ull, 4872657005699999540ull}}, {{12357588241147592574ull, 2279301536740146758ull, 4074221543306225051ull, 6090821257124999425ull}}, {{6223613264579714909ull, 16684184976207347160ull, 9704462947560169217ull, 7613526571406249281ull}}, {{3889758290362321819ull, 3510086582488510119ull, 17594504388293575521ull, 4758454107128905800ull}}, {{250511844525514369ull, 8999294246538025553ull, 3546386411657417785ull, 5948067633911132251ull}}, {{4924825824084280865ull, 15860803826599919845ull, 18268041069853935943ull, 7435084542388915313ull}}, {{5383859149266369493ull, 16830531419266031759ull, 4499996641017628108ull, 4646927838993072071ull}}, {{2118137918155573962ull, 2591420200372988083ull, 1013309782844647232ull, 5808659798741340089ull}}, {{16482730452976631164ull, 3239275250466235103ull, 5878323246983196944ull, 7260824748426675111ull}}, {{15991727047793401051ull, 4049094063082793879ull, 2736218040301608276ull, 9076030935533343889ull}}, {{16912358432511957513ull, 11754055826281521982ull, 13239351321256974932ull, 5672519334708339930ull}}, {{11917076003785171083ull, 14692569782851902478ull, 7325817114716442857ull, 7090649168385424913ull}}, {{5672972967876688046ull, 4530654173282714386ull, 13768957411822941476ull, 8863311460481781141ull}}, {{8157294123350317933ull, 12055030895156472299ull, 10911441391603032374ull, 5539569662801113213ull}}, {{5584931635760509512ull, 5845416582090814566ull, 18250987757931178372ull, 6924462078501391516ull}}, {{16204536581555412698ull, 7306770727613518207ull, 4366990623704421349ull, 8655577598126739396ull}}, {{17045364391113214793ull, 6872574713972142831ull, 11952741176670039151ull, 5409735998829212122ull}}, {{16695019470464130587ull, 3979032374037790635ull, 5717554433982773131ull, 6762169998536515153ull}}, {{16257088319652775329ull, 362104449119850390ull, 11758629060905854318ull, 8452712498170643941ull}}, {{5548994181355596677ull, 14061373335982070206ull, 9654986172279852900ull, 5282945311356652463ull}}, {{16159614763549271654ull, 17576716669977587757ull, 7457046696922428221ull, 6603681639195815579ull}}, {{6364460399154425855ull, 8135837782189820985ull, 4709622352725647373ull, 8254602048994769474ull}}, {{15507002795539985920ull, 7390741623082332067ull, 7555199988880917512ull, 5159126280621730921ull}}, {{14772067475997594496ull, 9238427028852915084ull, 14055686004528534794ull, 6448907850777163651ull}}, {{18340271287441503ull, 2324661749211368048ull, 12957921487233280589ull, 8061134813471454564ull}}, {{11462669554650940ull, 3758756602470798982ull, 17322072966375576176ull, 5038209258419659102ull}}, {{9237700373798089483ull, 4698445753088498727ull, 12429219171114694412ull, 6297761573024573878ull}}, {{6935439448820223949ull, 5873057191360623409ull, 6313151927038592207ull, 7872201966280717348ull}}, {{15863864701581109728ull, 10588189772241471486ull, 13169091991253895937ull, 4920126228925448342ull}}, {{10606458840121611352ull, 17846923233729227262ull, 7237992952212594113ull, 6150157786156810428ull}}, {{4034701513297238382ull, 8473595986879370366ull, 9047491190265742642ull, 7687697232696013035ull}}, {{16356746501092937701ull, 9907683510226994382ull, 3348838984702395199ull, 4804810770435008147ull}}, {{11222561089511396318ull, 7772918369356355074ull, 18021106786160157711ull, 6006013463043760183ull}}, {{4804829325034469590ull, 5104461943268055939ull, 17914697464272809235ull, 7507516828804700229ull}}, {{697175318932849542ull, 884445705328841010ull, 13502528924384199724ull, 4692198018002937643ull}}, {{10094841185520837735ull, 1105557131661051262ull, 12266475137052861751ull, 5865247522503672054ull}}, {{3395179445046271361ull, 15217004469858477790ull, 6109721884461301380ull, 7331559403129590068ull}}, {{13467346343162615009ull, 574511513613545621ull, 7637152355576626726ull, 9164449253911987585ull}}, {{10722934473690328333ull, 14194127751290629725ull, 16302435268303861463ull, 5727780783694992240ull}}, {{18015354110540298320ull, 13130973670685899252ull, 1931300011670275213ull, 7159725979618740301ull}}, {{4072448564465821284ull, 2578659033075210354ull, 7025811033015231921ull, 8949657474523425376ull}}, {{7156966371218526206ull, 13140876941740476231ull, 4391131895634519950ull, 5593535921577140860ull}}, {{4334521945595769854ull, 7202724140320819481ull, 5488914869543149938ull, 6991919901971426075ull}}, {{10029838450422100221ull, 18226777212255800159ull, 2249457568501549518ull, 8739899877464282594ull}}, {{13186178059154894494ull, 6780049739232487195ull, 6017596998740856353ull, 5462437423415176621ull}}, {{11871036555516230214ull, 13086748192467996898ull, 12133682266853458345ull, 6828046779268970776ull}}, {{5615423657540511959ull, 2523377185302832411ull, 15167102833566822932ull, 8535058474086213470ull}}, {{1203796776749126023ull, 10800482777669046065ull, 4867753252551876428ull, 5334411546303883419ull}}, {{6116431989363795432ull, 13500603472086307581ull, 1473005547262457631ull, 6668014432879854274ull}}, {{12257226005132132194ull, 12264068321680496572ull, 11064628970932847847ull, 8335018041099817842ull}}, {{16884138290062358430ull, 14582571728691392213ull, 11527079125260417808ull, 5209386275687386151ull}}, {{7270114807295784325ull, 18228214660864240267ull, 9797162888148134356ull, 6511732844609232689ull}}, {{4475957490692342502ull, 4338524252370748718ull, 16858139628612555850ull, 8139666055761540861ull}}, {{16632531486964877776ull, 7323263676159105852ull, 12842180277096541358ull, 5087291284850963038ull}}, {{2343920284996545604ull, 18377451632053658124ull, 6829353309515900889ull, 6359114106063703798ull}}, {{2929900356245682005ull, 9136756484784908943ull, 17760063673749651920ull, 7948892632579629747ull}}, {{8748716750294633109ull, 5710472802990568089ull, 8794196786879838498ull, 4968057895362268592ull}}, {{15547581956295679290ull, 16361463040592985919ull, 10992745983599798122ull, 6210072369202835740ull}}, {{14822791426942211209ull, 11228456763886456591ull, 13740932479499747653ull, 7762590461503544675ull}}, {{16181773669479963862ull, 9323628486642729321ull, 6282239790473648331ull, 4851619038439715422ull}}, {{6392159031567791115ull, 7042849589876023748ull, 17076171774946836222ull, 6064523798049644277ull}}, {{7990198789459738893ull, 18026934024199805493ull, 7510156663401381565ull, 7580654747562055347ull}}, {{7299717252626030761ull, 13572676774338572385ull, 2388004905412169526ull, 4737909217226284592ull}}, {{13736332584209926355ull, 7742473931068439673ull, 2985006131765211908ull, 5922386521532855740ull}}, {{3335357674980244231ull, 9678092413835549592ull, 3731257664706514885ull, 7402983151916069675ull}}, {{2084598546862652645ull, 8354650767860912447ull, 26193031227877851ull, 4626864469947543547ull}}, {{16440806238860479518ull, 5831627441398752654ull, 13867799344317011026ull, 5783580587434429433ull}}, {{11327635761720823589ull, 16512906338603216626ull, 3499691125114100070ull, 7229475734293036792ull}}, {{4936172665296253678ull, 11417760886399244975ull, 4374613906392625088ull, 9036844667866295990ull}}, {{10002636943451240405ull, 7136100553999528109ull, 16569191746777554392ull, 5648027917416434993ull}}, {{17114982197741438410ull, 8920125692499410136ull, 6876431628189779278ull, 7060034896770543742ull}}, {{2946983673467246397ull, 1926785078769486863ull, 17818911572091999906ull, 8825043620963179677ull}}, {{8759393823558110854ull, 5815926692658317193ull, 13442662741771193893ull, 5515652263101987298ull}}, {{15560928297875026471ull, 11881594384250284395ull, 7579956390359216558ull, 6894565328877484123ull}}, {{14839474353916395185ull, 5628620943458079686ull, 4863259469521632794ull, 8618206661096855154ull}}, {{4662985452770359087ull, 8129574108088687708ull, 7651223186878408400ull, 5386379163185534471ull}}, {{5828731815962948858ull, 10161967635110859635ull, 4952342965170622596ull, 6732973953981918089ull}}, {{2674228751526298169ull, 12702459543888574544ull, 10802114724890666149ull, 8416217442477397611ull}}, {{1671392969703936356ull, 10244880224144053042ull, 4445478693842972391ull, 5260135901548373507ull}}, {{11312613248984696253ull, 8194414261752678398ull, 945162348876327585ull, 6575169876935466884ull}}, {{4917394524376094508ull, 14854703845618235902ull, 1181452936095409481ull, 8218962346169333605ull}}, {{16908429633017222779ull, 2366660875870315582ull, 3044251094273324878ull, 5136851466355833503ull}}, {{11912165004416752666ull, 12181698131692670286ull, 17640371923123819809ull, 6421064332944791878ull}}, {{5666834218666165025ull, 1392064609333674146ull, 12827092867049998954ull, 8026330416180989848ull}}, {{8153457405093741045ull, 5481726399260934245ull, 8016933041906249346ull, 5016456510113118655ull}}, {{14803507774794564210ull, 16075530035930943614ull, 5409480283955423778ull, 6270570637641398319ull}}, {{9281012681638429454ull, 10871040508058903710ull, 2150164336516891819ull, 7838213297051747899ull}}, {{1188946907596630505ull, 4488557308323120867ull, 17484753774818915051ull, 4898883310657342436ull}}, {{15321241689777951843ull, 999010616976513179ull, 3409198144814092198ull, 6123604138321678046ull}}, {{14539866093795051900ull, 10472135308075417282ull, 13484869717872391055ull, 7654505172902097557ull}}, {{13699102327049295341ull, 13462613595188217657ull, 10733886582883938361ull, 4784065733063810973ull}}, {{3288819853529455465ull, 2993208938703108360ull, 18029044247032310856ull, 5980082166329763716ull}}, {{4111024816911819331ull, 3741511173378885450ull, 4089561235080836954ull, 7475102707912204646ull}}, {{7181076528997274986ull, 6950130501789191310ull, 16391033827207686808ull, 4671939192445127903ull}}, {{18199717698101369540ull, 8687663127236489137ull, 15877106265582220606ull, 5839923990556409879ull}}, {{8914589067344548213ull, 1636206872190835614ull, 15234696813550387854ull, 7299904988195512349ull}}, {{1919864297325909458ull, 11268630627093320326ull, 5208312961655821105ull, 9124881235244390437ull}}, {{15034973241110857124ull, 125365114292243347ull, 5561038610248582143ull, 5703050772027744023ull}}, {{14182030532961183500ull, 13991764448147467896ull, 2339612244383339774ull, 7128813465034680029ull}}, {{17727538166201479375ull, 8266333523329559062ull, 7536201323906562622ull, 8911016831293350036ull}}, {{6468025335448536706ull, 554772433653586510ull, 13933497864296377447ull, 5569385519558343772ull}}, {{17308403706165446690ull, 14528523597349146849ull, 17416872330370471808ull, 6961731899447929715ull}}, {{7800446577424644651ull, 18160654496686433562ull, 17159404394535701856ull, 8702164874309912144ull}}, {{9486965129317790811ull, 11350409060429020976ull, 10724627746584813660ull, 5438853046443695090ull}}, {{11858706411647238513ull, 14188011325536276220ull, 4182412646376241267ull, 6798566308054618863ull}}, {{14823383014559048142ull, 13123328138492957371ull, 616329789542913680ull, 8498207885068273579ull}}, {{6958771374885711137ull, 8202080086558098357ull, 16526107182960178714ull, 5311379928167670986ull}}, {{13310150237034526825ull, 1029228071342847138ull, 11434261941845447585ull, 6639224910209588733ull}}, {{7414315759438382723ull, 5898221107605946827ull, 457769372024645769ull, 8299031137761985917ull}}, {{2328104340435295250ull, 15215603238322186527ull, 2591948866729097557ull, 5186894461101241198ull}}, {{16745188480826282774ull, 5184445992620569446ull, 12463308120266147755ull, 6483618076376551497ull}}, {{11708113564178077660ull, 1868871472348323904ull, 1744077095050520982ull, 8104522595470689372ull}}, {{7317570977611298537ull, 15003102725499866152ull, 10313420221261351421ull, 5065326622169180857ull}}, {{9146963722014123172ull, 4918820351592668978ull, 17503461295004077181ull, 6331658277711476071ull}}, {{2210332615662878157ull, 10760211457918224127ull, 17267640600327708572ull, 7914572847139345089ull}}, {{8298986912430380704ull, 15948504198053665887ull, 3874746347563736001ull, 4946608029462090681ull}}, {{5762047622110587976ull, 6100572192284918647ull, 9455118952882057906ull, 6183260036827613351ull}}, {{2590873509210847066ull, 16849087277210924117ull, 7207212672675184478ull, 7729075046034516689ull}}, {{3925138952470473368ull, 5918993529829439669ull, 16033722966490460059ull, 4830671903771572930ull}}, {{9518109709015479614ull, 2787055893859411682ull, 10818781671258299266ull, 6038339879714466163ull}}, {{2674265099414573710ull, 12707191904179040411ull, 8911791070645486178ull, 7547924849643082704ull}}, {{17812316751629966233ull, 12553680958539288160ull, 5569869419153428861ull, 4717453031026926690ull}}, {{3818651865827906175ull, 1857043142891946489ull, 16185708810796561885ull, 5896816288783658362ull}}, {{9385000850712270622ull, 6932989947042321015ull, 11008763976640926548ull, 7371020360979572953ull}}, {{7119565044962950374ull, 8666237433802901269ull, 18372640989228546089ull, 9213775451224466191ull}}, {{6755571162315537936ull, 16945613442195283053ull, 18400429645908923161ull, 5758609657015291369ull}}, {{13056149971321810324ull, 7346958747461940104ull, 9165479002103990240ull, 7198262071269114212ull}}, {{16320187464152262904ull, 9183698434327425130ull, 11456848752629987800ull, 8997827589086392765ull}}, {{14811803183522552219ull, 5739811521454640706ull, 9466373479607436327ull, 5623642243178995478ull}}, {{9291381942548414466ull, 2563078383390912979ull, 2609594812654519601ull, 7029552803973744348ull}}, {{7002541409758130179ull, 7815533997666029128ull, 3261993515818149501ull, 8786941004967180435ull}}, {{4376588381098831362ull, 7190551757754962157ull, 18179647011882201102ull, 5491838128104487771ull}}, {{10082421494800927106ull, 18211561734048478504ull, 18112872746425363473ull, 6864797660130609714ull}}, {{12603026868501158883ull, 8929394112278434418ull, 13417718896176928534ull, 8580997075163262143ull}}, {{12488577811240612206ull, 969185301746633607ull, 15303603337751662190ull, 5363123171977038839ull}}, {{10999036245623377353ull, 10434853664038067817ull, 14517818153762189833ull, 6703903964971298549ull}}, {{18360481325456609595ull, 17655253098474972675ull, 4312214636920573579ull, 8379879956214123187ull}}, {{9169457819196687045ull, 8728690177333163970ull, 389291138861664535ull, 5237424972633826992ull}}, {{2238450237141082998ull, 6299176703239067059ull, 486613923577080669ull, 6546781215792283740ull}}, {{16633120851708517460ull, 12485656897476221727ull, 608267404471350836ull, 8183476519740354675ull}}, {{17313229559958905269ull, 17026907597777414387ull, 16521068192290451936ull, 5114672824837721671ull}}, {{17029850931521243682ull, 2836890423512216368ull, 16039649221935677017ull, 6393341031047152089ull}}, {{2840569590692002986ull, 8157799047817658365ull, 6214503472137432559ull, 7991676288808940112ull}}, {{4081199003396195818ull, 12016153432527118334ull, 3884064670085895349ull, 4994797680505587570ull}}, {{14324870791100020581ull, 1185133735376734205ull, 14078452874462144995ull, 6243497100631984462ull}}, {{4071030433592862014ull, 15316475224503081469ull, 8374694056222905435ull, 7804371375789980578ull}}, {{4850237030209232711ull, 7266954006100731966ull, 9845869803566703801ull, 4877732109868737861ull}}, {{15286168324616316697ull, 13695378526053302861ull, 16919023272885767655ull, 6097165137335922326ull}}, {{5272652350488232159ull, 12507537139139240673ull, 11925407054252433761ull, 7621456421669902908ull}}, {{14824622765123614859ull, 899681684320943564ull, 16676751445762546909ull, 4763410263543689317ull}}, {{84034382694966958ull, 5736288123828567360ull, 7010881251921019924ull, 5954262829429611647ull}}, {{105042978368708697ull, 7170360154785709200ull, 4151915546473887001ull, 7442828536787014559ull}}, {{65651861480442936ull, 16010690142809538010ull, 9512476244187261231ull, 4651767835491884099ull}}, {{9305436863705329478ull, 15401676660084534608ull, 7278909286806688635ull, 5814709794364855124ull}}, {{11631796079631661847ull, 14640409806678280356ull, 9098636608508360794ull, 7268387242956068905ull}}, {{14539745099539577309ull, 9077140221493074637ull, 15984981779062838897ull, 9085484053695086131ull}}, {{11393183696425929770ull, 17202427684501641408ull, 7684770602700580358ull, 5678427533559428832ull}}, {{14241479620532412213ull, 12279662568772275952ull, 9605963253375725448ull, 7098034416949286040ull}}, {{17801849525665515266ull, 15349578210965344940ull, 12007454066719656810ull, 8872543021186607550ull}}, {{1902783916686171233ull, 14205172400280728492ull, 2892972773272397602ull, 5545339388241629719ull}}, {{2378479895857714042ull, 8533093463496134807ull, 17451274021872660715ull, 6931674235302037148ull}}, {{16808157925104306264ull, 6054680810942780604ull, 3367348453631274278ull, 8664592794127546436ull}}, {{1281726666335415607ull, 17619233562121401590ull, 11327964820374322231ull, 5415370496329716522ull}}, {{10825530369774045317ull, 17412355934224364083ull, 4936583988613126981ull, 6769213120412145653ull}}, {{8920226943790168742ull, 7930386862498291392ull, 10782416004193796631ull, 8461516400515182066ull}}, {{5575141839868855464ull, 11874020816702513976ull, 11350696021048510798ull, 5288447750321988791ull}}, {{6968927299836069330ull, 5619153984023366662ull, 9576684007883250594ull, 6610559687902485989ull}}, {{17934531161649862470ull, 16247314516883984135ull, 16582541028281451146ull, 8263199609878107486ull}}, {{18126611003672245900ull, 14766257591479877988ull, 5752402124248519062ull, 5164499756173817179ull}}, {{4211519680880755759ull, 9234449952495071678ull, 2578816636883260924ull, 6455624695217271474ull}}, {{14487771637955720506ull, 11543062440618839597ull, 12446892832958851963ull, 8069530869021589342ull}}, {{11360700282936019269ull, 4908571016173080796ull, 3167622002171894573ull, 5043456793138493339ull}}, {{14200875353670024086ull, 10747399788643738899ull, 17794585557997031928ull, 6304320991423116673ull}}, {{13139408173660142203ull, 13434249735804673624ull, 8408173892214126198ull, 7880401239278895842ull}}, {{8212130108537588877ull, 3784720066450533111ull, 9866794701061216778ull, 4925250774549309901ull}}, {{5653476617244598192ull, 13954272119917942197ull, 16945179394753908876ull, 6156563468186637376ull}}, {{11678531789983135644ull, 17442840149897427746ull, 2734730169732834479ull, 7695704335233296721ull}}, {{11910768387166847682ull, 17819304121326974197ull, 13238421402151491309ull, 4809815209520810450ull}}, {{1053402428676395890ull, 8439072096376554035ull, 7324654715834588329ull, 6012269011901013063ull}}, {{15151811091127658574ull, 15160526138898080447ull, 4544132376365847507ull, 7515336264876266329ull}}, {{16387410959595868465ull, 7169485827597606327ull, 14369297781297124452ull, 4697085165547666455ull}}, {{15872577681067447677ull, 8961857284497007909ull, 13349936208194017661ull, 5871356456934583069ull}}, {{6005664046052145885ull, 15814007624048647791ull, 2852362204960358364ull, 7339195571168228837ull}}, {{2895394039137794452ull, 1320765456351258123ull, 8177138774627835860ull, 9173994463960286046ull}}, {{17950522338956979196ull, 10048850447074312134ull, 499025715715009508ull, 5733746539975178779ull}}, {{13214780886841448187ull, 12561063058842890168ull, 14458840199925925597ull, 7167183174968973473ull}}, {{16518476108551810234ull, 1866270768271448998ull, 4238492194625243285ull, 8958978968711216842ull}}, {{5712361549417493492ull, 3472262239383349576ull, 7260743640068164957ull, 5599361855444510526ull}}, {{7140451936771866865ull, 8952013817656574874ull, 18299301586939982004ull, 6999202319305638157ull}}, {{18148936957819609390ull, 11190017272070718592ull, 9039068928392813793ull, 8749002899132047697ull}}, {{11343085598637255869ull, 76231767403117264ull, 17178633126313978381ull, 5468126811957529810ull}}, {{14178856998296569836ull, 4706975727681284484ull, 12249919371037697168ull, 6835158514946912263ull}}, {{17723571247870712295ull, 5883719659601605605ull, 10700713195369733556ull, 8543948143683640329ull}}, {{13383075039132889136ull, 12900696824105779311ull, 18217160793174553232ull, 5339967589802275205ull}}, {{12117157780488723516ull, 16125871030132224139ull, 8936392936186027828ull, 6674959487252844007ull}}, {{10534761207183516491ull, 1710594713955728558ull, 6558805151805146882ull, 8343699359066055009ull}}, {{1972539736062309903ull, 5680807714649718253ull, 15628468265946686561ull, 5214812099416284380ull}}, {{7077360688505275283ull, 11712695661739535720ull, 1088841258723806585ull, 6518515124270355476ull}}, {{8846700860631594104ull, 805811521892255938ull, 1361051573404758232ull, 8148143905337944345ull}}, {{10140874056322134219ull, 503632201182659961ull, 12379872279446443655ull, 5092589940836215215ull}}, {{17287778588830055677ull, 14464598306760488663ull, 10863154330880666664ull, 6365737426045269019ull}}, {{16998037217610181693ull, 18080747883450610829ull, 8967256895173445426ull, 7957171782556586274ull}}, {{12929616270220057510ull, 15912153445584019672ull, 10216221577910791295ull, 4973232364097866421ull}}, {{16162020337775071888ull, 15278505788552636686ull, 17381962990815877023ull, 6216540455122333026ull}}, {{10979153385364064051ull, 14486446217263407954ull, 12504081701665070471ull, 7770675568902916283ull}}, {{11473656884279927936ull, 15971557913430711827ull, 5509208054326975092ull, 4856672230564322677ull}}, {{9730385086922522016ull, 1517703318078838168ull, 11498196086336106770ull, 6070840288205403346ull}}, {{12162981358653152520ull, 11120501184453323518ull, 5149373071065357654ull, 7588550360256754183ull}}, {{2990177330730832421ull, 2338627221855939295ull, 10135887197056930390ull, 4742843975160471364ull}}, {{17572779718695704238ull, 12146656064174699926ull, 12669858996321162987ull, 5928554968950589205ull}}, {{12742602611514854490ull, 10571634061790987004ull, 2002265690119290022ull, 7410693711188236507ull}}, {{17187498669051559864ull, 1995585270191978973ull, 17392317120820413928ull, 4631683569492647816ull}}, {{7649315281032286118ull, 2494481587739973717ull, 3293652327315965794ull, 5789604461865809771ull}}, {{14173330119717745552ull, 12341474021529742954ull, 17952123464427120954ull, 7237005577332262213ull}}, {{8493290612792406132ull, 6203470490057402885ull, 8605096275251737481ull, 9046256971665327767ull}}, {{7614149642208947785ull, 15406384102354346563ull, 12295714199673417781ull, 5653910607290829854ull}}, {{4906001034333796827ull, 5422922072660769492ull, 6146270712736996419ull, 7067388259113537318ull}}, {{6132501292917246033ull, 2166966572398573961ull, 16906210427776021332ull, 8834235323891921647ull}}, {{15362028354141748531ull, 10577726144603884533ull, 17483910545001095188ull, 5521397077432451029ull}}, {{5367477387395021951ull, 13222157680754855667ull, 8019830125969205273ull, 6901746346790563787ull}}, {{2097660715816389535ull, 2692639045661405872ull, 5413101639034118688ull, 8627182933488204734ull}}, {{1311037947385243460ull, 1682899403538378670ull, 17218246579678487892ull, 5391989333430127958ull}}, {{10862169471086330132ull, 2103624254422973337ull, 12299436187743334057ull, 6739986666787659948ull}}, {{18189397857285300569ull, 7241216336456104575ull, 15374295234679167571ull, 8424983333484574935ull}}, {{18285902688444394712ull, 2219917201071371407ull, 16526463549315561588ull, 5265614583427859334ull}}, {{18245692342128105486ull, 2774896501339214259ull, 11434707399789676177ull, 6582018229284824168ull}}, {{18195429409232743953ull, 8080306645101405728ull, 14293384249737095221ull, 8227522786606030210ull}}, {{11372143380770464971ull, 7356034662402072532ull, 13545051174513072417ull, 5142201741628768881ull}}, {{14215179225963081214ull, 13806729346429978569ull, 3096255912859176809ull, 6427752177035961102ull}}, {{3933915977171687805ull, 3423353627755309500ull, 13093691927928746820ull, 8034690221294951377ull}}, {{11682069522587080686ull, 11362968054201844245ull, 1266028427314384906ull, 5021681388309344611ull}}, {{767528847951687146ull, 4980338030897529499ull, 15417593589425144845ull, 6277101735386680763ull}}, {{14794469115221772644ull, 10837108557049299777ull, 14660305968354043152ull, 7846377169233350954ull}}, {{2329014169372526047ull, 6773192848155812361ull, 13774377248648664874ull, 4903985730770844346ull}}, {{7522953730143045462ull, 17689863097049541259ull, 7994599523956055284ull, 6129982163463555433ull}}, {{4792006144251418924ull, 3665584797602374958ull, 14604935423372457010ull, 7662477704329444291ull}}, {{16830061895439300539ull, 6902676516928872252ull, 6822241630394091679ull, 4789048565205902682ull}}, {{2590833295589574058ull, 4016659627733702412ull, 17751174074847390407ull, 5986310706507378352ull}}, {{3238541619486967573ull, 409138516239740111ull, 3742223519849686393ull, 7482888383134222941ull}}, {{8941617539820436589ull, 11784926618718307329ull, 4644732709119747947ull, 4676805239458889338ull}}, {{15788707943202933640ull, 10119472254970496257ull, 15029287923254460742ull, 5846006549323611672ull}}, {{5900826873721503338ull, 3425968281858344514ull, 339865830358524312ull, 7307508186654514591ull}}, {{16599405629006654981ull, 4282460352322930642ull, 14259890343230319102ull, 9134385233318143238ull}}, {{14986314536556547267ull, 16511595775483995363ull, 4300745446091561534ull, 5708990770823839524ull}}, {{14121207152268296180ull, 11416122682500218396ull, 5375931807614451918ull, 7136238463529799405ull}}, {{17651508940335370225ull, 5046781316270497187ull, 11331600777945452802ull, 8920298079412249256ull}}, {{8726350078495912439ull, 7765924341096448646ull, 7082250486215908001ull, 5575186299632655785ull}}, {{1684565561265114740ull, 14319091444797948712ull, 13464499126197272905ull, 6968982874540819731ull}}, {{2105706951581393425ull, 4063806250715272178ull, 12218937889319203228ull, 8711228593176024664ull}}, {{5927752863165758795ull, 11763250943551820919ull, 7636836180824502017ull, 5444517870735015415ull}}, {{2798005060529810589ull, 869005624157612437ull, 4934359207603239618ull, 6805647338418769269ull}}, {{8109192344089651141ull, 10309629067051791354ull, 10779635027931437426ull, 8507059173023461586ull}}, {{9679931233483419867ull, 11055204185334757500ull, 11348957910884536295ull, 5316911983139663491ull}}, {{12099914041854274834ull, 9207319213241058971ull, 9574511370178282465ull, 6646139978924579364ull}}, {{10513206533890455638ull, 16120835034978711618ull, 11968139212722853081ull, 8307674973655724205ull}}, {{11182440102108922678ull, 3157992869220612905ull, 9785930017165477128ull, 5192296858534827628ull}}, {{142992072353989635ull, 3947491086525766132ull, 12232412521456846410ull, 6490371073168534535ull}}, {{178740090442487044ull, 14157735895011983473ull, 10678829633393670108ull, 8112963841460668169ull}}, {{11640927602595024163ull, 18071956971237265478ull, 18203483566939513577ull, 5070602400912917605ull}}, {{5327787466389004395ull, 8754888158764418136ull, 8919296403392228260ull, 6338253001141147007ull}}, {{6659734332986255494ull, 10943610198455522670ull, 6537434485812897421ull, 7922816251426433759ull}}, {{17997392013398573396ull, 9145599383248395620ull, 11003425581274142744ull, 4951760157141521099ull}}, {{4049995943038665129ull, 11431999229060494526ull, 9142595958165290526ull, 6189700196426901374ull}}, {{14285866965653107219ull, 5066626999470842349ull, 2204872910851837350ull, 7737125245533626718ull}}, {{11234509862746885964ull, 17001699929951440180ull, 15213103624564562055ull, 4835703278458516698ull}}, {{14043137328433607455ull, 16640438894011912321ull, 9793007493850926761ull, 6044629098073145873ull}}, {{3718863605259845606ull, 6965490562232726690ull, 16852945385741046356ull, 7555786372591432341ull}}, {{6935975771714791408ull, 13576803638250229989ull, 12838933875301847924ull, 4722366482869645213ull}}, {{13281655733070877164ull, 16971004547812787486ull, 2213609288845146193ull, 5902958103587056517ull}}, {{7378697629483820647ull, 7378697629483820646ull, 7378697629483820646ull, 7378697629483820646ull}}, {{0ull, 0ull, 0ull, 9223372036854775808ull}}, {{0ull, 0ull, 0ull, 5764607523034234880ull}}, {{0ull, 0ull, 0ull, 7205759403792793600ull}}, {{0ull, 0ull, 0ull, 9007199254740992000ull}}, {{0ull, 0ull, 0ull, 5629499534213120000ull}}, {{0ull, 0ull, 0ull, 7036874417766400000ull}}, {{0ull, 0ull, 0ull, 8796093022208000000ull}}, {{0ull, 0ull, 0ull, 5497558138880000000ull}}, {{0ull, 0ull, 0ull, 6871947673600000000ull}}, {{0ull, 0ull, 0ull, 8589934592000000000ull}}, {{0ull, 0ull, 0ull, 5368709120000000000ull}}, {{0ull, 0ull, 0ull, 6710886400000000000ull}}, {{0ull, 0ull, 0ull, 8388608000000000000ull}}, {{0ull, 0ull, 0ull, 5242880000000000000ull}}, {{0ull, 0ull, 0ull, 6553600000000000000ull}}, {{0ull, 0ull, 0ull, 8192000000000000000ull}}, {{0ull, 0ull, 0ull, 5120000000000000000ull}}, {{0ull, 0ull, 0ull, 6400000000000000000ull}}, {{0ull, 0ull, 0ull, 8000000000000000000ull}}, {{0ull, 0ull, 0ull, 5000000000000000000ull}}, {{0ull, 0ull, 0ull, 6250000000000000000ull}}, {{0ull, 0ull, 0ull, 7812500000000000000ull}}, {{0ull, 0ull, 0ull, 4882812500000000000ull}}, {{0ull, 0ull, 0ull, 6103515625000000000ull}}, {{0ull, 0ull, 0ull, 7629394531250000000ull}}, {{0ull, 0ull, 0ull, 4768371582031250000ull}}, {{0ull, 0ull, 0ull, 5960464477539062500ull}}, {{0ull, 0ull, 0ull, 7450580596923828125ull}}, {{0ull, 0ull, 2305843009213693952ull, 4656612873077392578ull}}, {{0ull, 0ull, 12105675798371893248ull, 5820766091346740722ull}}, {{0ull, 0ull, 5908722711110090752ull, 7275957614183425903ull}}, {{0ull, 0ull, 2774217370460225536ull, 9094947017729282379ull}}, {{0ull, 0ull, 17874786921033498624ull, 5684341886080801486ull}}, {{0ull, 0ull, 13120111614437097472ull, 7105427357601001858ull}}, {{0ull, 0ull, 7176767481191596032ull, 8881784197001252323ull}}, {{0ull, 0ull, 2179636666531053568ull, 5551115123125782702ull}}, {{0ull, 0ull, 11947917870018592768ull, 6938893903907228377ull}}, {{0ull, 0ull, 1099839282241077248ull, 8673617379884035472ull}}, {{0ull, 0ull, 687399551400673280ull, 5421010862427522170ull}}, {{0ull, 0ull, 10082621476105617408ull, 6776263578034402712ull}}, {{0ull, 0ull, 12603276845132021760ull, 8470329472543003390ull}}, {{0ull, 0ull, 3265362009780125696ull, 5293955920339377119ull}}, {{0ull, 0ull, 17916760567507320832ull, 6617444900424221398ull}}, {{0ull, 0ull, 13172578672529375232ull, 8271806125530276748ull}}, {{0ull, 0ull, 17456233707185635328ull, 5169878828456422967ull}}, {{0ull, 0ull, 17208606115554656256ull, 6462348535570528709ull}}, {{0ull, 0ull, 7675699589161156608ull, 8077935669463160887ull}}, {{0ull, 0ull, 11714841270866804736ull, 5048709793414475554ull}}, {{0ull, 0ull, 5420179551728730112ull, 6310887241768094443ull}}, {{0ull, 0ull, 2163538421233524736ull, 7888609052210118054ull}}, {{0ull, 0ull, 15187269568553116672ull, 4930380657631323783ull}}, {{0ull, 0ull, 14372400942264007936ull, 6162975822039154729ull}}, {{0ull, 0ull, 4130443122547846208ull, 7703719777548943412ull}}, {{0ull, 0ull, 11804898988447179688ull, 4814824860968089632ull}}, {{0ull, 0ull, 14756123735558974610ull, 6018531076210112040ull}}, {{0ull, 9223372036854775808ull, 18445154669448718262ull, 7523163845262640050ull}}, {{0ull, 1152921504606846976ull, 16139907686832836818ull, 4701977403289150031ull}}, {{0ull, 10664523917613334528ull, 15563198590113658118ull, 5877471754111437539ull}}, {{0ull, 4107282860161892352ull, 14842312219214684744ull, 7346839692639296924ull}}, {{0ull, 5134103575202365440ull, 106146200308804314ull, 9183549615799121156ull}}, {{0ull, 7820500752928866304ull, 9289713412047778504ull, 5739718509874450722ull}}, {{0ull, 9775625941161082880ull, 2388769728204947322ull, 7174648137343063403ull}}, {{0ull, 2996160389596577792ull, 16821020215538347865ull, 8968310171678829253ull}}, {{0ull, 13401815289566330880ull, 12818980643925161367ull, 5605193857299268283ull}}, {{0ull, 12140583093530525696ull, 11412039786479063805ull, 7006492321624085354ull}}, {{0ull, 1340670811630993408ull, 5041677696244053949ull, 8758115402030106693ull}}, {{0ull, 3143762266483064832ull, 5456891569366227670ull, 5473822126268816683ull}}, {{0ull, 13153074869958606848ull, 2209428443280396683ull, 6842277657836020854ull}}, {{0ull, 11829657569020870656ull, 11985157590955271662ull, 8552847072295026067ull}}, {{0ull, 2781849962210656256ull, 5184880485133350837ull, 5345529420184391292ull}}, {{0ull, 8088998471190708224ull, 6481100606416688546ull, 6681911775230489115ull}}, {{0ull, 887876052133609472ull, 3489689739593472779ull, 8352389719038111394ull}}, {{0ull, 16695823597079363584ull, 6792742105673308390ull, 5220243574398819621ull}}, {{0ull, 11646407459494428672ull, 13102613650519023392ull, 6525304467998524526ull}}, {{0ull, 14558009324368035840ull, 7154895026294003432ull, 8156630584998155658ull}}, {{0ull, 9098755827730022400ull, 9083495409861140049ull, 5097894115623847286ull}}, {{0ull, 15985130803089915904ull, 2130997225471649253ull, 6372367644529809108ull}}, {{0ull, 6146355448580231168ull, 2663746531839561567ull, 7965459555662261385ull}}, {{0ull, 10759001183003726336ull, 13194056628468195739ull, 4978412222288913365ull}}, {{0ull, 8837065460327270016ull, 2657512730303080962ull, 6223015277861141707ull}}, {{0ull, 1822959788554311712ull, 17156948968161014915ull, 7778769097326427133ull}}, {{0ull, 17280250932342302484ull, 13028936114314328273ull, 4861730685829016958ull}}, {{0ull, 7765255610145714393ull, 7062798106038134534ull, 6077163357286271198ull}}, {{4611686018427387904ull, 483197475827367183ull, 18051869669402443976ull, 7596454196607838997ull}}, {{9799832789158199296ull, 301998422392104489ull, 13588261552590221437ull, 4747783872879899373ull}}, {{16861477004875137024ull, 4989184046417518515ull, 3150268885455613084ull, 5934729841099874217ull}}, {{16465160237666533376ull, 6236480058021898144ull, 8549522125246904259ull, 7418412301374842771ull}}, {{10290725148541583360ull, 1591957027049992388ull, 3037608319065621210ull, 4636507688359276732ull}}, {{12863406435676979200ull, 11213318320667266293ull, 3797010398832026512ull, 5795634610449095915ull}}, {{2244199989314060288ull, 14016647900834082867ull, 134576980112645236ull, 7244543263061369894ull}}, {{16640308041924739072ull, 17520809876042603583ull, 9391593261995582353ull, 9055679078826712367ull}}, {{17317721553844043776ull, 4032977144885545383ull, 12787274816388320827ull, 5659799424266695229ull}}, {{17035465923877666816ull, 429535412679543825ull, 2149035465203237322ull, 7074749280333369037ull}}, {{7459274349564919808ull, 9760291302704205590ull, 7297980349931434556ull, 8843436600416711296ull}}, {{50360450050686976ull, 15323554101044904302ull, 4561237718707146597ull, 5527147875260444560ull}}, {{9286322599418134528ull, 5319384571023966665ull, 5701547148383933247ull, 6908934844075555700ull}}, {{16219589267700056064ull, 2037544695352570427ull, 7126933935479916559ull, 8636168555094444625ull}}, {{7831400283098841088ull, 8190994462236438373ull, 15983548755743417609ull, 5397605346934027890ull}}, {{14400936372300939264ull, 14850429096222935870ull, 10756063907824496203ull, 6747006683667534863ull}}, {{8777798428521398272ull, 13951350351851281934ull, 8833393866353232350ull, 8433758354584418579ull}}, {{874437999398486016ull, 4107907951479663305ull, 3215028157257076267ull, 5271098971615261612ull}}, {{5704733517675495424ull, 523198920922191227ull, 4018785196571345334ull, 6588873714519077015ull}}, {{2519230878666981376ull, 9877370688007514842ull, 411795477286793763ull, 8236092143148846269ull}}, {{6186205317594251264ull, 3867513670791002824ull, 2563215182517940054ull, 5147557589468028918ull}}, {{7732756646992814080ull, 14057764125343529338ull, 12427391015002200875ull, 6434446986835036147ull}}, {{442573771886241792ull, 12960519138252023769ull, 10922552750325363190ull, 8043058733543795184ull}}, {{11805823653497370880ull, 3488638442980126951ull, 6826595468953351994ull, 5026911708464871990ull}}, {{10145593548444325696ull, 13584170090579934497ull, 17756616373046465800ull, 6283639635581089987ull}}, {{17293677953982795024ull, 16980212613224918121ull, 17584084447880694346ull, 7854549544476362484ull}}, {{3891019693598165034ull, 15224318901692961730ull, 1766680743070658158ull, 4909093465297726553ull}}, {{14087146653852482101ull, 9807026590261426354ull, 6820036947265710602ull, 6136366831622158191ull}}, {{8385561280460826818ull, 3035411200972007135ull, 3913360165654750349ull, 7670458539527697739ull}}, {{12158504827929098618ull, 4202975009821198411ull, 140007094320525016ull, 4794036587204811087ull}}, {{10586445016483985368ull, 5253718762276498014ull, 14010066923182819982ull, 5992545734006013858ull}}, {{4009684233750205902ull, 15790520489700398326ull, 8289211617123749169ull, 7490682167507517323ull}}, {{16341110701376042401ull, 2951546278421667097ull, 2874914251488649279ull, 4681676354692198327ull}}, {{6591330321437889289ull, 17524490903309247584ull, 17428700869642975310ull, 5852095443365247908ull}}, {{8239162901797361611ull, 12682241592281783672ull, 3339132013344167522ull, 7315119304206559886ull}}, {{10298953627246702013ull, 6629429953497453782ull, 13397287053534985211ull, 9143899130258199857ull}}, {{1825159998601800855ull, 1837550711722214662ull, 1455775380818283901ull, 5714936956411374911ull}}, {{11504822035107026876ull, 6908624408080156231ull, 15654777281305018588ull, 7143671195514218638ull}}, {{9769341525456395691ull, 8635780510100195289ull, 10345099564776497427ull, 8929588994392773298ull}}, {{17635053499478717067ull, 3091519809598928103ull, 11077373246412698796ull, 5580993121495483311ull}}, {{17432130855921008430ull, 3864399761998660129ull, 9235030539588485591ull, 6976241401869354139ull}}, {{7955105514619096825ull, 218813684070937258ull, 6932102156058219085ull, 8720301752336692674ull}}, {{9583626965064323420ull, 2442601561758029738ull, 8944249865963774832ull, 5450188595210432921ull}}, {{2756161669475628467ull, 3053251952197537173ull, 15791998350882106444ull, 6812735744013041151ull}}, {{8056888105271923487ull, 3816564940246921466ull, 15128311920175245151ull, 8515919680016301439ull}}, {{9647241084222340084ull, 9302882115295407772ull, 16372723977750610075ull, 5322449800010188399ull}}, {{12059051355277925104ull, 7016916625691871811ull, 15854218953760874690ull, 6653062250012735499ull}}, {{10462128175670018476ull, 17994517818969615572ull, 15206087673773705458ull, 8316327812515919374ull}}, {{15762202146648537356ull, 15858259655283397636ull, 4892118777681178007ull, 5197704882822449609ull}}, {{1256008609601120079ull, 15211138550676859142ull, 10726834490528860413ull, 6497131103528062011ull}}, {{10793382798856175906ull, 5178865133063910215ull, 8796857094733687613ull, 8121413879410077514ull}}, {{13663393276926191798ull, 5542633717378637836ull, 10109721702635942662ull, 5075883674631298446ull}}, {{17079241596157739747ull, 16151664183578073103ull, 3413780091440152519ull, 6344854593289123058ull}}, {{16737365976769786780ull, 15577894211045203475ull, 13490597151154966457ull, 7931068241611403822ull}}, {{8155010726267422785ull, 2818654854262170316ull, 3819937201044466132ull, 4956917651007127389ull}}, {{10193763407834278482ull, 3523318567827712895ull, 9386607519732970569ull, 6196147063758909236ull}}, {{8130518241365460198ull, 9015834228212029023ull, 11733259399666213211ull, 7745183829698636545ull}}, {{11999102928494494480ull, 3329053383418824187ull, 415758097150301401ull, 4840739893561647841ull}}, {{10387192642190730196ull, 8773002747700918138ull, 5131383639865264655ull, 6050924866952059801ull}}, {{3760618765883636937ull, 6354567416198759769ull, 11025915568258968723ull, 7563656083690074751ull}}, {{13879601774745742846ull, 1665761625910530903ull, 13808726257802937308ull, 4727285052306296719ull}}, {{12737816200004790653ull, 2082202032388163629ull, 12649221803826283731ull, 5909106315382870899ull}}, {{2087212194723824604ull, 16437810595767368249ull, 11199841236355466759ull, 7386382894228588624ull}}, {{12833722667770860138ull, 17191160649995687011ull, 6999900772722166724ull, 4616489308892867890ull}}, {{11430467316286187268ull, 3042206738785057148ull, 17973248002757484214ull, 5770611636116084862ull}}, {{14288084145357734085ull, 13026130460336097243ull, 13243187966592079459ull, 7213264545145106078ull}}, {{13248419163269779702ull, 11670977056992733650ull, 7330612921385323516ull, 9016580681431382598ull}}, {{12891947995471000218ull, 16517732697475234339ull, 18416691131147990909ull, 5635362925894614123ull}}, {{11503248975911362368ull, 6812107816561879212ull, 18409177895507600733ull, 7044203657368267654ull}}, {{14379061219889202960ull, 13126820789129736919ull, 13788100332529725108ull, 8805254571710334568ull}}, {{15904442290071833706ull, 17427635030060861382ull, 8617562707831078192ull, 5503284107318959105ull}}, {{10657180825735016325ull, 3337799713866525112ull, 15383639403216235645ull, 6879105134148698881ull}}, {{13321476032168770406ull, 8783935660760544294ull, 5394491198738130844ull, 8598881417685873602ull}}, {{3714236501678093600ull, 14713331824830115992ull, 7983243017638719681ull, 5374300886053671001ull}}, {{4642795627097617000ull, 4556606725755481278ull, 14590739790475787506ull, 6717876107567088751ull}}, {{15026866570726797057ull, 14919130444049127405ull, 13626738719667346478ull, 8397345134458860939ull}}, {{11697634615917942113ull, 4712770509103316724ull, 6210868690578397597ull, 5248340709036788087ull}}, {{14622043269897427641ull, 10502649154806533809ull, 3151899844795609092ull, 6560425886295985109ull}}, {{4442496032089620839ull, 13128311443508167262ull, 8551560824421899269ull, 8200532357869981386ull}}, {{16611618075338176737ull, 10511037661406298490ull, 9956411533691074947ull, 5125332723668738366ull}}, {{11541150557317945113ull, 8527111058330485209ull, 3222142380259067876ull, 6406665904585922958ull}}, {{591380141365267679ull, 10658888822913106512ull, 13251050012178610653ull, 8008332380732403697ull}}, {{369612588353292299ull, 8967648523534385522ull, 1364377229970549802ull, 5005207737957752311ull}}, {{9685387772296391182ull, 1986188617563206094ull, 15540529592745350965ull, 6256509672447190388ull}}, {{2883362678515713170ull, 7094421790381395522ull, 978917917222137090ull, 7820637090558987986ull}}, {{6413787692499708635ull, 9045699637415760105ull, 5223509716691223585ull, 4887898181599367491ull}}, {{12628920634052023698ull, 15918810565197088035ull, 1917701127436641577ull, 6109872726999209364ull}}, {{11174464774137641718ull, 6063455151214196332ull, 2397126409295801972ull, 7637340908749011705ull}}, {{16207412520690801882ull, 13013031506363648515ull, 13027419051878345992ull, 4773338067968132315ull}}, {{15647579632436114448ull, 16266289382954560644ull, 11672587796420544586ull, 5966672584960165394ull}}, {{1112730466835591444ull, 11109489691838424998ull, 5367362708670904925ull, 7458340731200206743ull}}, {{14530514597054408365ull, 9249274066612709575ull, 10272130720560397434ull, 4661462957000129214ull}}, {{13551457227890622552ull, 2338220546411111161ull, 3616791363845720985ull, 5826828696250161518ull}}, {{3104263479581114478ull, 7534461701441276856ull, 13744361241661927039ull, 7283535870312701897ull}}, {{3880329349476393097ull, 4806391108374208166ull, 3345393496795245087ull, 9104419837890877372ull}}, {{16260263898704909398ull, 9921523470374961959ull, 11314242972351803987ull, 5690262398681798357ull}}, {{15713643854953748843ull, 7790218319541314545ull, 307745660157591272ull, 7112827998352247947ull}}, {{5806996763410022342ull, 9737772899426643182ull, 14219740130479152802ull, 8891034997940309933ull}}, {{17464431032413427676ull, 10697794080569039892ull, 11193180590763164453ull, 5556896873712693708ull}}, {{3383794716807232979ull, 17983928619138687770ull, 13991475738453955566ull, 6946121092140867135ull}}, {{13453115432863817032ull, 13256538737068583904ull, 12877658654640056554ull, 8682651365176083919ull}}, {{8408197145539885645ull, 12897022729095252844ull, 14966065686791117202ull, 5426657103235052449ull}}, {{10510246431924857056ull, 6897906374514290247ull, 4872524053206732791ull, 6783321379043815562ull}}, {{8526122021478683416ull, 4010696949715474905ull, 15314027103363191797ull, 8479151723804769452ull}}, {{16858041309492646895ull, 4812528602785865767ull, 347894902747219065ull, 5299469827377980908ull}}, {{16460865618438420715ull, 10627346771909720113ull, 434868628434023831ull, 6624337284222476135ull}}, {{6741023967765862181ull, 8672497446459762238ull, 14378643840824693501ull, 8280421605278095168ull}}, {{18048198035135827576ull, 7726153913251045350ull, 8986652400515433438ull, 5175263503298809480ull}}, {{13336875507065008661ull, 434320354709030880ull, 11233315500644291798ull, 6469079379123511850ull}}, {{16671094383831260826ull, 9766272480241064408ull, 4818272338950588939ull, 8086349223904389813ull}}, {{10419433989894538017ull, 3798077290936971303ull, 5317263221057812039ull, 5053968264940243633ull}}, {{8412606468940784617ull, 135910595243826225ull, 11258265044749652953ull, 6317460331175304541ull}}, {{15127444104603368675ull, 4781574262482170685ull, 237773250654902479ull, 7896825413969130677ull}}, {{11760495574590799374ull, 9906012941692438534ull, 2454451290873008001ull, 4935515883730706673ull}}, {{5477247431383723409ull, 16994202195542936072ull, 7679750132018647905ull, 6169394854663383341ull}}, {{6846559289229654262ull, 7407694689146506378ull, 14211373683450697786ull, 7711743568329229176ull}}, {{8890785574195921818ull, 9241495199143954390ull, 8882108552156686116ull, 4819839730205768235ull}}, {{1890109930890126464ull, 11551868998929942988ull, 6490949671768469741ull, 6024799662757210294ull}}, {{2362637413612658080ull, 604778193380265023ull, 17337059126565362985ull, 7530999578446512867ull}}, {{8394177411148993156ull, 11907201416931135399ull, 8529818944889657913ull, 4706874736529070542ull}}, {{5881035745508853541ull, 1048943715881755537ull, 1438901644257296584ull, 5883593420661338178ull}}, {{11962980700313454830ull, 1311179644852194421ull, 11021999092176396538ull, 7354491775826672722ull}}, {{1118667820109654825ull, 10862346592920018835ull, 4554126828365719864ull, 9193114719783340903ull}}, {{16840068452064391930ull, 6788966620575011771ull, 9763858295369656771ull, 5745696699864588064ull}}, {{16438399546653102009ull, 3874522257291376810ull, 12204822869212070964ull, 7182120874830735080ull}}, {{11324627396461601703ull, 4843152821614221013ull, 15256028586515088705ull, 8977651093538418850ull}}, {{9383735132002195016ull, 14556185559577357893ull, 14146703884999318344ull, 5611031933461511781ull}}, {{16341354933430131674ull, 18195231949471697366ull, 3848321800966984218ull, 7013789916826889727ull}}, {{11203321629932888785ull, 13520667899984845900ull, 198716232781342369ull, 8767237396033612159ull}}, {{16225448055562831299ull, 1532888409849446831ull, 7041726673129420837ull, 5479523372521007599ull}}, {{15670124051026151219ull, 6527796530739196443ull, 4190472322984388142ull, 6849404215651259499ull}}, {{14975969045355301120ull, 17383117700278771362ull, 626404385303097273ull, 8561755269564074374ull}}, {{13971666671774451104ull, 3946919535033150245ull, 14226560796096599508ull, 5351097043477546483ull}}, {{3629525284435900168ull, 4933649418791437807ull, 13171514976693361481ull, 6688871304346933104ull}}, {{18371964660827038922ull, 10778747791916685162ull, 16464393720866701851ull, 8361089130433666380ull}}, {{16094163931444287230ull, 4430874360734234274ull, 1066874038686912849ull, 5225680706521041488ull}}, {{10894332877450583230ull, 10150278969345180747ull, 1333592548358641061ull, 6532100883151301860ull}}, {{9006230078385841133ull, 17299534730108863838ull, 1666990685448301326ull, 8165126103939127325ull}}, {{1017207780563762804ull, 6200523187890651995ull, 3347712187618882281ull, 5103203814961954578ull}}, {{15106567780986867217ull, 12362340003290702897ull, 13408012271378378659ull, 6379004768702443222ull}}, {{5048151670951420310ull, 10841238985685990718ull, 7536643302368197516ull, 7973755960878054028ull}}, {{16990152849626801406ull, 15999146402908520006ull, 13933774100834899255ull, 4983597475548783767ull}}, {{12014319025178725949ull, 15387246985208262104ull, 12805531607616236165ull, 6229496844435979709ull}}, {{15017898781473407436ull, 5399000676228163918ull, 2171856454238131495ull, 7786871055544974637ull}}, {{4774500719993491744ull, 10291904450283684305ull, 3663253293112526136ull, 4866794409715609148ull}}, {{10579811918419252584ull, 12864880562854605381ull, 4579066616390657670ull, 6083493012144511435ull}}, {{17836450916451453633ull, 6857728666713480918ull, 1112147252060934184ull, 7604366265180639294ull}}, {{6536095804354770617ull, 4286080416695925574ull, 14530150087820247577ull, 4752728915737899558ull}}, {{17393491792298239079ull, 9969286539297294871ull, 8939315572920533663ull, 5940911144672374448ull}}, {{17130178721945410945ull, 7849922155694230685ull, 11174144466150667079ull, 7426138930840468060ull}}, {{13012204710429575793ull, 11823730374949976034ull, 16207212328198942732ull, 4641336831775292537ull}}, {{7041883851182193933ull, 14779662968687470043ull, 6423957354966514703ull, 5801671039719115672ull}}, {{4190668795550354512ull, 13862892692431949650ull, 8029946693708143379ull, 7252088799648894590ull}}, {{14461708031292718948ull, 12716929847112549158ull, 814061330280403416ull, 9065110999561118238ull}}, {{4426881501130561438ull, 7948081154445343224ull, 14343846386707415847ull, 5665694374725698898ull}}, {{5533601876413201798ull, 5323415424629291126ull, 8706435946529494001ull, 7082117968407123623ull}}, {{16140374382371278055ull, 11265955299214001811ull, 6271358914734479597ull, 8852647460508904529ull}}, {{7781890979768354833ull, 9347065071222445084ull, 15448814367777519508ull, 5532904662818065330ull}}, {{9727363724710443541ull, 11683831339028056355ull, 10087645922867123577ull, 6916130828522581663ull}}, {{7547518637460666522ull, 769731118502906732ull, 7997871385156516568ull, 8645163535653227079ull}}, {{13940571185267692384ull, 481081949064316707ull, 11916198643363904711ull, 5403227209783266924ull}}, {{12814027963157227576ull, 14436410491612559596ull, 14895248304204880888ull, 6754034012229083655ull}}, {{16017534953946534470ull, 18045513114515699495ull, 14007374361828713206ull, 8442542515286354569ull}}, {{16928488373857665900ull, 6666759678144924280ull, 1837079948501863898ull, 5276589072053971606ull}}, {{2713866393612530759ull, 17556821634535931159ull, 11519721972482105680ull, 6595736340067464507ull}}, {{17227391047297827161ull, 3499282969460362332ull, 9787966447175244197ull, 8244670425084330634ull}}, {{1543747367706366168ull, 4492894865126420410ull, 10729165047911915527ull, 5152919015677706646ull}}, {{11153056246487733517ull, 1004432562980637608ull, 4188084273035118601ull, 6441148769597133308ull}}, {{13941320308109666897ull, 5867226722153184914ull, 5235105341293898251ull, 8051435961996416635ull}}, {{13325011210995929715ull, 1361173692132046619ull, 966097829094992455ull, 5032147476247760397ull}}, {{12044577995317524239ull, 15536525170447221986ull, 5819308304796128472ull, 6290184345309700496ull}}, {{5832350457292129491ull, 973912389349475867ull, 7274135380995160591ull, 7862730431637125620ull}}, {{1339376026593886980ull, 7526224270984504273ull, 13769706649976751177ull, 4914206519773203512ull}}, {{6285906051669746629ull, 14019466357158018245ull, 17212133312470938971ull, 6142758149716504390ull}}, {{12469068583014571190ull, 12912646928020134902ull, 12291794603733897906ull, 7678447687145630488ull}}, {{3181481845956719090ull, 12682090348439972218ull, 7682371627333686191ull, 4799029804466019055ull}}, {{13200224344300674670ull, 11240926917122577368ull, 4991278515739719835ull, 5998787255582523819ull}}, {{16500280430375843337ull, 9439472627975833806ull, 1627412126247261890ull, 7498484069478154774ull}}, {{5700989250557514182ull, 10511356410912284033ull, 14852190634186702393ull, 4686552543423846733ull}}, {{11737922581624280632ull, 17750881532067742945ull, 4730180237451214279ull, 5858190679279808417ull}}, {{837345171748187077ull, 17576915896657290778ull, 10524411315241405753ull, 7322738349099760521ull}}, {{10270053501540009654ull, 8136086815539449760ull, 17767200162479145096ull, 9153422936374700651ull}}, {{6418783438462506034ull, 5085054259712156100ull, 8798657092335771733ull, 5720889335234187907ull}}, {{8023479298078132543ull, 10968003843067583029ull, 6386635346992326762ull, 7151111669042734884ull}}, {{14641035141025053582ull, 4486632766979702978ull, 7983294183740408453ull, 8938889586303418605ull}}, {{13762332981568046393ull, 5109988488576008313ull, 7295401874051449235ull, 5586805991439636628ull}}, {{3367858171677894279ull, 1775799592292622488ull, 9119252342564311544ull, 6983507489299545785ull}}, {{4209822714597367849ull, 2219749490365778110ull, 16010751446632777334ull, 8729384361624432231ull}}, {{16466197251905518618ull, 15222401486760775030ull, 16924248681786567689ull, 5455865226015270144ull}}, {{11359374528027122464ull, 5192943803168805076ull, 2708566778523657996ull, 6819831532519087681ull}}, {{14199218160033903080ull, 6491179753961006345ull, 7997394491581960399ull, 8524789415648859601ull}}, {{1956982322380107569ull, 10974516373866710822ull, 16527586603307195009ull, 5327993384780537250ull}}, {{11669599939829910269ull, 18329831485760776431ull, 11436111217279217953ull, 6659991730975671563ull}}, {{9975313906359999932ull, 9077231301918806827ull, 9683453003171634538ull, 8324989663719589454ull}}, {{3928728182261306006ull, 10284955582126642171ull, 1440472108554883682ull, 5203118539824743409ull}}, {{299224209399244603ull, 3632822440803526906ull, 6412276154120992507ull, 6503898174780929261ull}}, {{9597402298603831562ull, 18376086106286572344ull, 12627031211078628537ull, 8129872718476161576ull}}, {{5998376436627394726ull, 4567524788788025859ull, 7891894506924142836ull, 5081170449047600985ull}}, {{2886284527356855504ull, 5709405985985032324ull, 14476554152082566449ull, 6351463061309501231ull}}, {{3607855659196069380ull, 11748443500908678309ull, 13484006671675820157ull, 7939328826636876539ull}}, {{4560752796211237315ull, 9648620197281617895ull, 6121661160583693646ull, 4962080516648047837ull}}, {{1089254976836658739ull, 2837403209747246561ull, 12263762469157004962ull, 6202600645810059796ull}}, {{5973254739473211328ull, 12770126049038834009ull, 15329703086446256202ull, 7753250807262574745ull}}, {{15262499258239226840ull, 12593014799076659159ull, 2663535401387828270ull, 4845781754539109216ull}}, {{14466438054371645646ull, 6517896461991048141ull, 3329419251734785338ull, 6057227193173886520ull}}, {{4247989512682393345ull, 17370742614343585985ull, 4161774064668481672ull, 7571533991467358150ull}}, {{14184208491494965601ull, 10856714133964741240ull, 16436166845699964757ull, 4732208744667098843ull}}, {{17730260614368707001ull, 18182578685883314454ull, 15933522538697568042ull, 5915260930833873554ull}}, {{12939453731106107943ull, 13504851320499367260ull, 10693531136517184245ull, 7394076163542341943ull}}, {{17310530618796093273ull, 10746375084525798489ull, 13600985987964322009ull, 4621297602213963714ull}}, {{7803105218212952879ull, 18044654874084636016ull, 7777860448100626703ull, 5776622002767454643ull}}, {{9753881522766191098ull, 17944132574178407116ull, 5110639541698395475ull, 7220777503459318304ull}}, {{12192351903457738873ull, 17818479699295620991ull, 6388299427122994344ull, 9025971879324147880ull}}, {{14537748967302168652ull, 11136549812059763119ull, 3992687141951871465ull, 5641232424577592425ull}}, {{13560500190700322911ull, 85629209792540187ull, 9602544945867227236ull, 7051540530721990531ull}}, {{12338939219948015734ull, 107036512240675234ull, 7391495163906646141ull, 8814425663402488164ull}}, {{12323523030894897738ull, 2372740829364115973ull, 13843056514296429646ull, 5509016039626555102ull}}, {{1569345733336458460ull, 12189298073559920775ull, 8080448606015761249ull, 6886270049533193878ull}}, {{15796740221952736787ull, 1401564536667737256ull, 877188720664925754ull, 8607837561916492348ull}}, {{9872962638720460492ull, 5487663853844723689ull, 9771614987270354404ull, 5379898476197807717ull}}, {{16952889316827963519ull, 6859579817305904611ull, 16826204752515330909ull, 6724873095247259646ull}}, {{16579425627607566495ull, 13186160790059768668ull, 11809383903789387828ull, 8406091369059074558ull}}, {{1138768980399953251ull, 17464722530642131226ull, 2769178921440979488ull, 5253807105661921599ull}}, {{10646833262354717372ull, 3384159089593112416ull, 17296531707083388073ull, 6567258882077401998ull}}, {{13308541577943396715ull, 8841884880418778424ull, 12397292596999459283ull, 8209073602596752498ull}}, {{8317838486214622947ull, 3220335041048042563ull, 12359993891552049956ull, 5130671001622970311ull}}, {{5785612089340890780ull, 4025418801310053204ull, 10838306346012674541ull, 6413338752028712889ull}}, {{7232015111676113475ull, 9643459520064954409ull, 18159568950943231080ull, 8016673440035891111ull}}, {{16049224490866040682ull, 6027162200040596505ull, 18267259621980601281ull, 5010420900022431944ull}}, {{6226472558300387140ull, 12145638768478133536ull, 4387330453766199985ull, 6263026125028039931ull}}, {{7783090697875483925ull, 1346990405315503208ull, 872477048780362078ull, 7828782656285049914ull}}, {{4864431686172177453ull, 14676927058604353217ull, 5156984173915114202ull, 4892989160178156196ull}}, {{10692225626142609721ull, 9122786786400665713ull, 6446230217393892753ull, 6116236450222695245ull}}, {{17976968051105650055ull, 16015169501428220045ull, 12669473790169753845ull, 7645295562778369056ull}}, {{13541448041154725236ull, 12315323947606331480ull, 7918421118856096153ull, 4778309726736480660ull}}, {{16926810051443406545ull, 1559096879225750638ull, 9898026398570120192ull, 5972887158420600825ull}}, {{11935140527449482373ull, 1948871099032188298ull, 16984219016640038144ull, 7466108948025751031ull}}, {{12071148848083314388ull, 1218044436895117686ull, 17532665913041105696ull, 4666318092516094394ull}}, {{5865564023249367176ull, 1522555546118897108ull, 12692460354446606312ull, 5832897615645117993ull}}, {{7331955029061708970ull, 1903194432648621385ull, 2030517387776094178ull, 7291122019556397492ull}}, {{13776629804754524117ull, 11602365077665552539ull, 2538146734720117722ull, 9113902524445496865ull}}, {{6304550618757883621ull, 11863164191968358241ull, 13115556755268543336ull, 5696189077778435540ull}}, {{12492374291874742430ull, 14828955239960447801ull, 16394445944085679170ull, 7120236347223044425ull}}, {{1780409809561264326ull, 9312822013095783944ull, 6657999374824935251ull, 8900295434028805532ull}}, {{1112756130975790204ull, 3514670748971171013ull, 13384621646120360340ull, 5562684646268003457ull}}, {{6002631182147125659ull, 4393338436213963766ull, 2895719002368286713ull, 6953355807835004322ull}}, {{16726661014538682881ull, 10103359063694842611ull, 12843020789815134199ull, 8691694759793755402ull}}, {{8148320124872982849ull, 13232128442450358488ull, 12638574012061846778ull, 5432309224871097126ull}}, {{10185400156091228561ull, 7316788516208172302ull, 6574845478222532665ull, 6790386531088871408ull}}, {{3508378158259259893ull, 13757671663687603282ull, 8218556847778165831ull, 8487983163861089260ull}}, {{6804422367339425337ull, 15516073817445833907ull, 14359970066716129452ull, 5304989477413180787ull}}, {{3893841940746893768ull, 948348198097740768ull, 13338276564967773912ull, 6631236846766475984ull}}, {{4867302425933617209ull, 1185435247622175960ull, 16672845706209717390ull, 8289046058458094980ull}}, {{3042064016208510756ull, 14575955085046023687ull, 1197156529526297560ull, 5180653786536309363ull}}, {{17637638075542802157ull, 18219943856307529608ull, 15331503717190035662ull, 6475817233170386703ull}}, {{3600303520718951080ull, 13551557783529636203ull, 14552693628060156674ull, 8094771541462983379ull}}, {{18391090764945202089ull, 13081409633133410530ull, 6789590508323903969ull, 5059232213414364612ull}}, {{13765491419326726803ull, 2516703986134599451ull, 8486988135404879962ull, 6324040266767955765ull}}, {{12595178255731020600ull, 12369252019523025122ull, 15220421187683487856ull, 7905050333459944706ull}}, {{12483672428259275779ull, 7730782512201890701ull, 14124449260729567814ull, 4940656458412465441ull}}, {{1769532480041931012ull, 440106103397587569ull, 3820503520629796056ull, 6175820573015581802ull}}, {{6823601618479801669ull, 550132629246984461ull, 13999001437642020878ull, 7719775716269477252ull}}, {{6570594020763569995ull, 14178890948561529000ull, 17972747935381038856ull, 4824859822668423282ull}}, {{8213242525954462494ull, 17723613685701911250ull, 13242562882371522762ull, 6031074778335529103ull}}, {{1043181120588302309ull, 12931145070272613255ull, 11941517584537015549ull, 7538843472919411379ull}}, {{7569517228008770799ull, 10387808678134077236ull, 5157605481121940766ull, 4711777170574632112ull}}, {{9461896535010963499ull, 3761388810812820737ull, 6447006851402425958ull, 5889721463218290140ull}}, {{16439056687191092278ull, 13925108050370801729ull, 8058758564253032447ull, 7362151829022862675ull}}, {{6713762803706701635ull, 12794699044536114258ull, 5461762186888902655ull, 9202689786278578344ull}}, {{8807787770744076426ull, 14914215930476153267ull, 3413601366805564159ull, 5751681116424111465ull}}, {{6398048695002707629ull, 14031083894667803680ull, 8878687726934343103ull, 7189601395530139331ull}}, {{7997560868753384536ull, 12927168849907366696ull, 6486673640240540975ull, 8987001744412674164ull}}, {{4998475542970865335ull, 14997009558833186041ull, 13277543062005113917ull, 5616876090257921352ull}}, {{10859780447140969573ull, 4911203893259318839ull, 16596928827506392397ull, 7021095112822401690ull}}, {{8963039540498824062ull, 10750690885001536453ull, 11522788997528214688ull, 8776368891028002113ull}}, {{7907742722025458991ull, 6719181803125960283ull, 284214095814052324ull, 5485230556892501321ull}}, {{5272992384104435834ull, 8398977253907450354ull, 4966953638194953309ull, 6856538196115626651ull}}, {{15814612516985320601ull, 15110407585811700846ull, 1597006029316303732ull, 8570672745144533314ull}}, {{5272446804688437472ull, 220632704277537221ull, 5609814786750077737ull, 5356670465715333321ull}}, {{11202244524287934743ull, 4887476898774309430ull, 11623954501864985075ull, 6695838082144166651ull}}, {{4779433618505142621ull, 1497660105040498884ull, 9918257108903843440ull, 8369797602680208314ull}}, {{12210518048420489946ull, 936037565650311802ull, 10810596711492290054ull, 5231123501675130196ull}}, {{6039775523670836625ull, 10393418993917665561ull, 13513245889365362567ull, 6538904377093912745ull}}, {{12161405423015933685ull, 8380087723969694047ull, 3056499306424539497ull, 8173630471367390932ull}}, {{14518407417026040409ull, 16766769873549528539ull, 11133684103370112993ull, 5108519044604619332ull}}, {{13536323252855162607ull, 7123404286654746962ull, 13917105129212641242ull, 6385648805755774165ull}}, {{7697032029214177451ull, 18127627395173209511ull, 3561323356233637840ull, 7982061007194717707ull}}, {{11728174045899942763ull, 11329767121983255944ull, 18366728162141881314ull, 4988788129496698566ull}}, {{14660217557374928454ull, 4938836865624294122ull, 13735038165822575835ull, 6235985161870873208ull}}, {{9101899909863884759ull, 1561860063602979749ull, 17168797707278219794ull, 7794981452338591510ull}}, {{7994530452878621927ull, 5587848558179250247ull, 6118812548621499467ull, 4871863407711619694ull}}, {{5381477047670889504ull, 2373124679296674905ull, 16871887722631650142ull, 6089829259639524617ull}}, {{11338532328015999784ull, 12189777885975619439ull, 7254801598007398965ull, 7612286574549405772ull}}, {{14004111732651081721ull, 9924454187948456101ull, 13757623035609400161ull, 4757679109093378607ull}}, {{3670081610531688440ull, 17017253753362958031ull, 12585342776084362297ull, 5947098886366723259ull}}, {{18422660068446774261ull, 7436509136421533826ull, 11119992451678064968ull, 7433873607958404074ull}}, {{16125848561206621817ull, 4647818210263458641ull, 11561681300726178509ull, 4646171004974002546ull}}, {{6322252646226113560ull, 10421458781256711206ull, 5228729589052947328ull, 5807713756217503183ull}}, {{17126187844637417758ull, 13026823476570889007ull, 1924225967888796256ull, 7259642195271878979ull}}, {{16796048787369384293ull, 16283529345713611259ull, 16240340515143159032ull, 9074552744089848723ull}}, {{8191687482892171231ull, 10177205841071007037ull, 7844369812750780443ull, 5671595465056155452ull}}, {{14851295372042601943ull, 8109821282911370892ull, 9805462265938475554ull, 7089494331320194315ull}}, {{117375141343700812ull, 913904566784437808ull, 7645141813995706539ull, 8861867914150242894ull}}, {{73359463339813008ull, 16712091418736131294ull, 166527615319928682ull, 5538667446343901809ull}}, {{9315071366029542068ull, 11666742236565388309ull, 4819845537577298757ull, 6923334307929877261ull}}, {{16255525225964315489ull, 748369740424571674ull, 10636492940399011351ull, 8654167884912346576ull}}, {{14771389284655085085ull, 7385260115406439152ull, 6647808087749382094ull, 5408854928070216610ull}}, {{17492532109304740ull, 8203107403273133ull, 17533132146541503426ull, 6761068660087770762ull}}, {{4633551683564018828ull, 9233625921108867224ull, 12693043146322103474ull, 8451335825109713453ull}}, {{2895969802227511768ull, 10382702219120429919ull, 10238994975665008623ull, 5282084890693570908ull}}, {{17455020308066553422ull, 8366691755473149494ull, 12798743719581260779ull, 6602606113366963635ull}}, {{12595403348228415969ull, 5846678675914048964ull, 11386743631049188070ull, 8253257641708704544ull}}, {{17095499129497535789ull, 17489232227728444314ull, 7116714769405742543ull, 5158286026067940340ull}}, {{12146001875017143928ull, 17249854266233167489ull, 8895893461757178179ull, 6447857532584925425ull}}, {{1347444288489266198ull, 16950631814364071458ull, 15731552845623860628ull, 8059821915731156781ull}}, {{5453838698733179278ull, 1370772847122768853ull, 12138063537728606845ull, 5037388697331972988ull}}, {{11428984391843862001ull, 6325152077330848970ull, 15172579422160758556ull, 6296735871664966235ull}}, {{5062858452950051693ull, 7906440096663561213ull, 14354038259273560291ull, 7870919839581207794ull}}, {{5470129542307476261ull, 2635682051201031806ull, 13582959930473363086ull, 4919324899738254871ull}}, {{16061033964739121134ull, 12517974600856065565ull, 12367013894664315953ull, 6149156124672818589ull}}, {{6241234400641737705ull, 1812410195787918245ull, 1623709313048231230ull, 7686445155841023237ull}}, {{6206614509614780018ull, 14967814427649612615ull, 3320661329868838470ull, 4804028222400639523ull}}, {{3146582118591087118ull, 9486395997707239961ull, 17985884717618211800ull, 6005035278000799403ull}}, {{8544913666666246801ull, 11857994997134049951ull, 17870669878595376846ull, 7506294097500999254ull}}, {{12258100069307486107ull, 2799560854781393315ull, 6557482655694722625ull, 4691433810938124534ull}}, {{10710939068206969730ull, 8111137086904129548ull, 17420225356473179089ull, 5864292263672655667ull}}, {{13388673835258712162ull, 14750607377057549839ull, 17163595677164085957ull, 7330365329590819584ull}}, {{12124156275646002298ull, 4603201166039773587ull, 3007750522745555831ull, 9162956661988524481ull}}, {{5271754663065057485ull, 9794529756415940348ull, 13409059122784442154ull, 5726847913742827800ull}}, {{6589693328831321856ull, 3019790158665149627ull, 16761323903480552693ull, 7158559892178534750ull}}, {{3625430642611764415ull, 8386423716758824938ull, 11728282842495915058ull, 8948199865223168438ull}}, {{6877580170059740664ull, 9853200841401653490ull, 2718490758132559007ull, 5592624915764480274ull}}, {{17820347249429451638ull, 7704815033324678958ull, 12621485484520474567ull, 6990781144705600342ull}}, {{13052062024932038739ull, 5019332773228460794ull, 6553484818795817401ull, 8738476430882000428ull}}, {{12769224784009912116ull, 14666298029336257756ull, 13319300048602161683ull, 5461547769301250267ull}}, {{15961530980012390145ull, 13721186518242934291ull, 12037439042325314200ull, 6826934711626562834ull}}, {{15340227706588099777ull, 17151483147803667864ull, 5823426766051866942ull, 8533668389533203543ull}}, {{9587642316617562361ull, 6107990948949904511ull, 10557170756423498695ull, 5333542743458252214ull}}, {{7372866877344565047ull, 3023302667759992735ull, 3973091408674597561ull, 6666928429322815268ull}}, {{4604397578253318405ull, 8390814353127378823ull, 4966364260843246951ull, 8333660536653519085ull}}, {{9795277514049405859ull, 12161787998345693620ull, 5409820672240723296ull, 5208537835408449428ull}}, {{12244096892561757324ull, 15202234997932117025ull, 6762275840300904120ull, 6510672294260561785ull}}, {{1470063060420032942ull, 556049673705594666ull, 13064530818803518055ull, 8138340367825702231ull}}, {{5530475431189908493ull, 7265060073707078522ull, 15082860789393280640ull, 5086462729891063894ull}}, {{16136466325842161424ull, 9081325092133848152ull, 9630203949886824992ull, 6358078412363829868ull}}, {{1723838833593150164ull, 11351656365167310191ull, 12037754937358531240ull, 7947598015454787335ull}}, {{7994928298636800709ull, 7094785228229568869ull, 14441125863490163881ull, 4967248759659242084ull}}, {{14605346391723388790ull, 13480167553714348990ull, 18051407329362704851ull, 6209060949574052605ull}}, {{9033310952799460179ull, 12238523423715548334ull, 8729201106421217352ull, 7761326186967565757ull}}, {{1034133327072274708ull, 7649077139822217709ull, 7761593700726954797ull, 4850828866854728598ull}}, {{5904352677267731289ull, 14173032443205160040ull, 478620089053917688ull, 6063536083568410748ull}}, {{7380440846584664111ull, 17716290554006450050ull, 598275111317397110ull, 7579420104460513435ull}}, {{9224461547542802974ull, 6460995577826643377ull, 16514823009069230858ull, 4737137565287820896ull}}, {{16142262952855891621ull, 17299616509138080029ull, 2196784687626986956ull, 5921421956609776121ull}}, {{6342770635787700814ull, 3177776562713048421ull, 7357666877961121600ull, 7401777445762220151ull}}, {{6270074656581006961ull, 1986110351695655263ull, 11516070826366782856ull, 4626110903601387594ull}}, {{3225907302298870797ull, 2482637939619569079ull, 5171716496103702762ull, 5782638629501734493ull}}, {{17867442183155752209ull, 12326669461379237156ull, 11076331638557016356ull, 7228298286877168116ull}}, {{3887558655235138645ull, 15408336826724046446ull, 13845414548196270445ull, 9035372858596460145ull}}, {{16264782214804125365ull, 11936053525916222980ull, 1735855064981587172ull, 5647108036622787591ull}}, {{1884233694795605090ull, 14920066907395278726ull, 16004876886509147677ull, 7058885045778484488ull}}, {{11578664155349282171ull, 4815025578961934695ull, 1559352034426882981ull, 8823606307223105611ull}}, {{14154194124734383213ull, 5315233996064903136ull, 17115496086012659527ull, 5514753942014441006ull}}, {{17692742655917979016ull, 2032356476653741016ull, 12170998070661048601ull, 6893442427518051258ull}}, {{3669184246187922154ull, 7152131614244564175ull, 5990375551471534943ull, 8616803034397564073ull}}, {{9210769181508533202ull, 11387611286543934465ull, 15273199765738179099ull, 5385501896498477545ull}}, {{16125147495313054407ull, 9622828089752530177ull, 5256441651890560162ull, 6731877370623096932ull}}, {{6321376313859154296ull, 2805163075335886914ull, 6570552064863200203ull, 8414846713278871165ull}}, {{8562546214589359339ull, 17894127986580786985ull, 6412438049753194078ull, 5259279195799294478ull}}, {{15314868786664087078ull, 13144287946371207923ull, 17238919599046268406ull, 6574098994749118097ull}}, {{14531899964902720943ull, 7206987896109234096ull, 7713591443525671796ull, 8217623743436397622ull}}, {{9082437478064200590ull, 13727739471923047118ull, 209308633776156968ull, 5136014839647748514ull}}, {{2129674810725474929ull, 17159674339903808898ull, 9485007829074972018ull, 6420018549559685642ull}}, {{11885465550261619469ull, 12226220888024985314ull, 2632887749488939215ull, 8025023186949607053ull}}, {{12040101987340900073ull, 14558917082656697677ull, 3951397852644280961ull, 5015639491843504408ull}}, {{1215069428893961379ull, 4363588298038708385ull, 4939247315805351202ull, 6269549364804380510ull}}, {{6130522804544839627ull, 14677857409403161289ull, 15397431181611464810ull, 7836936706005475637ull}}, {{15360791798908994527ull, 13785346899304363709ull, 11929237497720859458ull, 4898085441253422273ull}}, {{5365931693354079447ull, 8008311587275678829ull, 1076488816868910611ull, 6122606801566777842ull}}, {{11319100635119987212ull, 5398703465667210632ull, 10568983057940914072ull, 7653258501958472302ull}}, {{7074437896949992008ull, 3374189666042006645ull, 1993928392785683391ull, 4783286563724045189ull}}, {{13454733389614877914ull, 18052795137834672018ull, 7104096509409492142ull, 5979108204655056486ull}}, {{7595044700163821584ull, 13342621885438564215ull, 18103492673616640986ull, 7473885255818820607ull}}, {{11664431965243470346ull, 12950824696826490538ull, 18232211948651482472ull, 4671178284886762879ull}}, {{5357167919699562125ull, 16188530871033113173ull, 18178578917386965186ull, 5838972856108453599ull}}, {{11308145918051840560ull, 11012291551936615658ull, 18111537628306318579ull, 7298716070135566999ull}}, {{4911810360710024891ull, 9153678421493381669ull, 18027736016955510320ull, 9123395087669458749ull}}, {{5375724484657459509ull, 5721049013433363543ull, 13573178019810887902ull, 5702121929793411718ull}}, {{2107969587394436483ull, 16374683303646480237ull, 7743100487908834069ull, 7127652412241764648ull}}, {{7246648002670433507ull, 6633296074275936584ull, 9678875609886042587ull, 8909565515302205810ull}}, {{4529155001669020942ull, 1839967037208766413ull, 10660983274606164521ull, 5568478447063878631ull}}, {{10273129770513664082ull, 6911644814938345920ull, 8714543074830317747ull, 6960598058829848289ull}}, {{12841412213142080102ull, 4027870000245544496ull, 15504864861965285088ull, 8700747573537310361ull}}, {{8025882633213800064ull, 2517418750153465310ull, 2773011511087221324ull, 5437967233460818976ull}}, {{808981254662474272ull, 3146773437691831638ull, 3466264388859026655ull, 6797459041826023720ull}}, {{10234598605182868647ull, 17768524852396953259ull, 4332830486073783318ull, 8496823802282529650ull}}, {{4090781119025598953ull, 6493642014320707883ull, 7319705072223502478ull, 5310514876426581031ull}}, {{501790380354610787ull, 17340424554755660662ull, 4537945321851990193ull, 6638143595533226289ull}}, {{9850610012298039291ull, 7840472638162412115ull, 10284117670742375646ull, 8297679494416532861ull}}, {{3850788248472580605ull, 288609380424119668ull, 8733416553427678731ull, 5186049684010333038ull}}, {{4813485310590725757ull, 14195819780812313297ull, 1693398654929822605ull, 6482562105012916298ull}}, {{10628542656665795100ull, 3909716670733227909ull, 11340120355517054065ull, 8103202631266145372ull}}, {{8948682169629815889ull, 13972787965276737203ull, 16310947259052934598ull, 5064501644541340857ull}}, {{6574166693609881958ull, 8242612919741145696ull, 6553626018534004536ull, 6330627055676676072ull}}, {{8217708367012352447ull, 10303266149676432120ull, 8192032523167505670ull, 7913283819595845090ull}}, {{5136067729382720280ull, 1827855325120382171ull, 9731706345407078948ull, 4945802387247403181ull}}, {{1808398643301012445ull, 2284819156400477714ull, 16776318950186236589ull, 6182252984059253976ull}}, {{11483870340981041365ull, 7467709963927985046ull, 2523654614023244120ull, 7727816230074067471ull}}, {{2565732944685762949ull, 4667318727454990654ull, 8494813161405609431ull, 4829885143796292169ull}}, {{12430538217711979494ull, 1222462390891350413ull, 15230202470184399693ull, 6037356429745365211ull}}, {{1703114716857810656ull, 6139764007041575921ull, 14426067069303111712ull, 7546695537181706514ull}}, {{12593661744104601420ull, 3837352504400984950ull, 13627977936741832724ull, 4716684710738566571ull}}, {{6518705143275975967ull, 4796690630501231188ull, 12423286402499903001ull, 5895855888423208214ull}}, {{8148381429094969958ull, 10607549306553926889ull, 6305735966270102943ull, 7369819860529010268ull}}, {{14797162804796100352ull, 8647750614765020707ull, 7882169957837628679ull, 9212274825661262835ull}}, {{6942383743783868768ull, 12322373161869219798ull, 2620513214434823972ull, 5757671766038289272ull}}, {{17901351716584611768ull, 15402966452336524747ull, 3275641518043529965ull, 7197089707547861590ull}}, {{17765003627303376806ull, 5418650010138492222ull, 13317923934409188265ull, 8996362134434826987ull}}, {{6491441248637222600ull, 14915871302405027399ull, 6017859449792048713ull, 5622726334021766867ull}}, {{3502615542369140346ull, 4809781072724120537ull, 2910638293812672988ull, 7028407917527208584ull}}, {{8989955446388813336ull, 6012226340905150671ull, 3638297867265841235ull, 8785509896909010730ull}}, {{12536251181634090191ull, 1451798453852025217ull, 6885622185468538676ull, 5490943685568131706ull}}, {{1835255921760449027ull, 1814748067315031522ull, 17830399768690449153ull, 6863679606960164632ull}}, {{11517441939055337091ull, 6880121102571177306ull, 3841255637153509825ull, 8579599508700205791ull}}, {{11810087230336973586ull, 15829290735175455576ull, 9318313800862025496ull, 5362249692937628619ull}}, {{14762609037921216983ull, 1339869345259767854ull, 7036206232650143967ull, 6702812116172035774ull}}, {{9229889260546745420ull, 15509894736856873530ull, 18018629827667455766ull, 8378515145215044717ull}}, {{10380366806269103792ull, 5081998192108158052ull, 13567486651505853806ull, 5236571965759402948ull}}, {{12975458507836379740ull, 15575869776989973373ull, 16959358314382317257ull, 6545714957199253685ull}}, {{2384265079513310963ull, 5634779165955303005ull, 7364139837695732860ull, 8182143696499067107ull}}, {{3796008683909513304ull, 12745109015576840186ull, 2296744389346139085ull, 5113839810311916942ull}}, {{13968382891741667438ull, 2096328214188886520ull, 12094302523537449665ull, 6392299762889896177ull}}, {{17460478614677084297ull, 7232096286163496054ull, 1282820099139648369ull, 7990374703612370222ull}}, {{6301113115745789782ull, 16049275224920654794ull, 14636820617244443942ull, 4993984189757731388ull}}, {{17099763431537013035ull, 10838221994296042684ull, 18296025771555554928ull, 6242480237197164235ull}}, {{2927960215711714678ull, 13547777492870053356ull, 18258346196017055756ull, 7803100296496455294ull}}, {{11053347171674597482ull, 17690732969898559155ull, 6799780354083271943ull, 4876937685310284559ull}}, {{9204997946165858948ull, 17501730193945811040ull, 3888039424176702025ull, 6096172106637855699ull}}, {{11506247432707323685ull, 8042104687150100088ull, 248363261793489628ull, 7620215133297319624ull}}, {{7191404645442077303ull, 14249687466323588363ull, 155227038620931017ull, 4762634458310824765ull}}, {{4377569788375208725ull, 3977051277622321742ull, 4805719816703551676ull, 5953293072888530956ull}}, {{14695334272323786714ull, 4971314097027902177ull, 6007149770879439595ull, 7441616341110663695ull}}, {{2267054892561284840ull, 801228301428744909ull, 10671997634440731603ull, 4651010213194164809ull}}, {{7445504634128993954ull, 14836593432068094848ull, 17951683061478302407ull, 5813762766492706011ull}}, {{9306880792661242443ull, 13934055771657730656ull, 17827917808420490105ull, 7267203458115882514ull}}, {{11633600990826553054ull, 3582511659289999608ull, 13061525223670836824ull, 9084004322644853143ull}}, {{7271000619266595659ull, 2239069787056249755ull, 15080982292435354871ull, 5677502701653033214ull}}, {{4477064755655856669ull, 16633895289102475906ull, 9627855828689417780ull, 7096878377066291518ull}}, {{14819702981424596644ull, 2345625037668543266ull, 2811447749006996418ull, 8871097971332864398ull}}, {{13874000381817760807ull, 6077701666970227445ull, 15592212898411536473ull, 5544436232083040248ull}}, {{3507442421990037297ull, 12208813102140172211ull, 1043522049304868975ull, 6930545290103800311ull}}, {{18219361082769710333ull, 10649330359247827359ull, 15139460616913249931ull, 8663181612629750388ull}}, {{18304629704372150814ull, 4349988465316198147ull, 238790848716005399ull, 5414488507893593993ull}}, {{18269101112037800613ull, 825799563217859780ull, 4910174579322394653ull, 6768110634866992491ull}}, {{4389632316337699151ull, 5643935472449712630ull, 1526032205725605412ull, 8460138293583740614ull}}, {{16578578252993225681ull, 12750831707135846201ull, 14788828183860667094ull, 5287586433489837883ull}}, {{6888164760959368390ull, 6715167597065031944ull, 13874349211398445964ull, 6609483041862297354ull}}, {{8610205951199210487ull, 8393959496331289930ull, 8119564477393281647ull, 8261853802327871693ull}}, {{9993064737926894458ull, 12163753712848138062ull, 7380570807584494981ull, 5163658626454919808ull}}, {{3267958885553842265ull, 1369634085778008866ull, 9225713509480618727ull, 6454573283068649760ull}}, {{13308320643797078639ull, 15547100662504674794ull, 11532141886850773408ull, 8068216603835812200ull}}, {{12929386420800562054ull, 9716937914065421746ull, 7207588679281733380ull, 5042635377397382625ull}}, {{6938360989145926759ull, 12146172392581777183ull, 13621171867529554629ull, 6303294221746728281ull}}, {{4061265218005020544ull, 1347657435445057767ull, 3191406779129779575ull, 7879117777183410352ull}}, {{9455819788894219696ull, 7759814924794242960ull, 1994629236956112234ull, 4924448610739631470ull}}, {{11819774736117774620ull, 476396619138027892ull, 11716658583049916101ull, 6155560763424539337ull}}, {{14774718420147218275ull, 5207181792349922769ull, 810765173530231414ull, 7694450954280674172ull}}, {{2316669984950929566ull, 17089546675500865443ull, 9730100270311170441ull, 4809031846425421357ull}}, {{16730895536470825670ull, 7526875289093918091ull, 16774311356316350956ull, 6011289808031776696ull}}, {{16301933402161144183ull, 9408594111367397614ull, 2521145121685887079ull, 7514112260039720871ull}}, {{5577022357923327211ull, 12797900347245705365ull, 8493244728694761280ull, 4696320162524825544ull}}, {{11582963965831546917ull, 15997375434057131706ull, 10616555910868451600ull, 5870400203156031930ull}}, {{5255332920434657838ull, 1549975218861863017ull, 4047322851730788693ull, 7338000253945039913ull}}, {{11180852168970710202ull, 6549155042004716675ull, 9670839583090873770ull, 9172500317431299891ull}}, {{4682189596392999924ull, 8704907919680335826ull, 3738431730218102154ull, 5732812698394562432ull}}, {{15076109032346025713ull, 1657762862745643974ull, 4673039662772627693ull, 7166015872993203040ull}}, {{9621764253577756333ull, 6683889596859442872ull, 5841299578465784616ull, 8957519841241503800ull}}, {{6013602658486097709ull, 4177430998037151795ull, 3650812236541115385ull, 5598449900775939875ull}}, {{2905317304680234232ull, 9833474765973827648ull, 18398573350958557943ull, 6998062375969924843ull}}, {{3631646630850292789ull, 7680157439039896656ull, 18386530670270809525ull, 8747577969962406054ull}}, {{2269779144281432994ull, 7105941408613629362ull, 6879895650491868049ull, 5467236231226503784ull}}, {{12060595967206567050ull, 13494112779194424606ull, 8599869563114835061ull, 6834045289033129730ull}}, {{5852372922153433004ull, 3032582918710867046ull, 1526464917038768019ull, 8542556611291412163ull}}, {{17492791131628059340ull, 18036265388690149567ull, 17094941637645087675ull, 5339097882057132601ull}}, {{17254302896107686271ull, 17933645717435299055ull, 7533618991774195882ull, 6673872352571415752ull}}, {{16956192601707219934ull, 13193685109939348011ull, 9417023739717744853ull, 8342340440714269690ull}}, {{8291777366853318507ull, 10551896202925786459ull, 10497325855750978437ull, 5213962775446418556ull}}, {{5753035690139260230ull, 17801556272084620978ull, 13121657319688723046ull, 6517453469308023195ull}}, {{16414666649528851095ull, 13028573303251000414ull, 11790385631183515904ull, 8146816836635028994ull}}, {{5647480637528144031ull, 8142858314531875259ull, 11980677037917085344ull, 5091760522896893121ull}}, {{2447664778482792134ull, 10178572893164844074ull, 1140788242114192968ull, 6364700653621116402ull}}, {{12282953009958265975ull, 12723216116456055092ull, 10649357339497517018ull, 7955875817026395502ull}}, {{16900217668078692043ull, 12563696091212422336ull, 2044162318758560232ull, 4972422385641497189ull}}, {{2678528011388813437ull, 15704620114015527921ull, 7166888916875588194ull, 6215527982051871486ull}}, {{7959846032663404701ull, 10407403105664634093ull, 18181983182949261051ull, 7769409977564839357ull}}, {{7280746779628321890ull, 4198783931826702356ull, 13669582498556982109ull, 4855881235978024598ull}}, {{9100933474535402362ull, 9860165933210765849ull, 7863606086341451828ull, 6069851544972530748ull}}, {{15987852861596640857ull, 12325207416513457311ull, 9829507607926814785ull, 7587314431215663435ull}}, {{16909937066138982392ull, 785725607679828963ull, 3837599245740565289ull, 4742071519509789647ull}}, {{16525735314246340086ull, 5593843028027174108ull, 185313038748318707ull, 5927589399387237059ull}}, {{2210425069098373491ull, 2380617766606579732ull, 14066699353717562096ull, 7409486749234046323ull}}, {{10604887705041259240ull, 1487886104129112332ull, 6485844086859782358ull, 4630929218271278952ull}}, {{13256109631301574050ull, 11083229667016166223ull, 8107305108574727947ull, 5788661522839098690ull}}, {{11958451020699579658ull, 9242351065342819875ull, 910759348863634126ull, 7235826903548873363ull}}, {{10336377757447086669ull, 2329566794823749036ull, 14973507241361706370ull, 9044783629436091703ull}}, {{15683608135259204976ull, 6067665265192231051ull, 16275971053492148337ull, 5652989768397557314ull}}, {{14992824150646618316ull, 12196267599917676718ull, 11121591780010409613ull, 7066237210496946643ull}}, {{9517658151453497087ull, 1410276444614932186ull, 9290303706585624113ull, 8832796513121183304ull}}, {{10560222363085823583ull, 12410637823952802376ull, 5806439816616015070ull, 5520497820700739565ull}}, {{13200277953857279479ull, 6289925243086227162ull, 11869735789197406742ull, 6900622275875924456ull}}, {{7276975405466823541ull, 17085778590712559761ull, 14837169736496758427ull, 8625777844844905570ull}}, {{16077324674485234473ull, 8372768609981655898ull, 13884917103737861921ull, 5391111153028065981ull}}, {{10873283806251767283ull, 15077646780904457777ull, 3521088324390163689ull, 6738888941285082477ull}}, {{18203290776242097008ull, 5012000420848408509ull, 9013046423915092516ull, 8423611176606353096ull}}, {{13682899744365004582ull, 12355872299885031126ull, 5633154014946932822ull, 5264756985378970685ull}}, {{7880252643601479920ull, 6221468338001513100ull, 11653128537111053932ull, 6580946231723713356ull}}, {{9850315804501849900ull, 7776835422501891375ull, 14566410671388817415ull, 8226182789654641695ull}}, {{13073976405454738043ull, 11778051166704763965ull, 16021535697259092740ull, 5141364243534151059ull}}, {{2507412451536258842ull, 14722563958380954957ull, 15415233603146478021ull, 6426705304417688824ull}}, {{7745951582847711457ull, 4568146892694029984ull, 822297930223545911ull, 8033381630522111031ull}}, {{4841219739279819661ull, 9772620835574850596ull, 7431465234030798050ull, 5020863519076319394ull}}, {{6051524674099774576ull, 2992404007613787437ull, 65959505683721755ull, 6276079398845399243ull}}, {{12176091861052106123ull, 17575563064799398008ull, 13917507437386815905ull, 7845099248556749053ull}}, {{7610057413157566327ull, 4067197887858541899ull, 11004285157580453893ull, 4903187030347968158ull}}, {{4900885748019570005ull, 9695683378250565278ull, 4531984410120791558ull, 6128983787934960198ull}}, {{15349479221879238314ull, 2896232185958430789ull, 14888352549505765256ull, 7661229734918700247ull}}, {{11899267522888217898ull, 1810145116224019243ull, 16222749371082185141ull, 4788268584324187654ull}}, {{10262398385182884469ull, 6874367413707411958ull, 11055064676997955618ull, 5985335730405234568ull}}, {{3604625944623829778ull, 17816331303989040756ull, 13818830846247444522ull, 7481669663006543210ull}}, {{11476263252244669419ull, 15746893083420538376ull, 13248455297332040730ull, 4676043539379089506ull}}, {{14345329065305836774ull, 10460244317420897162ull, 7337197084810275105ull, 5845054424223861883ull}}, {{8708289294777520160ull, 17686991415203509357ull, 4559810337585455977ull, 7306318030279827354ull}}, {{15497047636899288103ull, 8273681213722222984ull, 14923134958836595780ull, 9132897537849784192ull}}, {{9685654773062055065ull, 14394422795431165173ull, 9326959349272872362ull, 5708060961156115120ull}}, {{16718754484754956735ull, 8769656457434180658ull, 11658699186591090453ull, 7135076201445143900ull}}, {{11675071069088920111ull, 15573756590220113727ull, 14573373983238863066ull, 8918845251806429875ull}}, {{14214448445821656925ull, 14345283887314958983ull, 6802515730310595464ull, 5574278282379018672ull}}, {{13156374538849683252ull, 17931604859143698729ull, 8503144662888244330ull, 6967847852973773340ull}}, {{2610410118279940353ull, 13191134037074847604ull, 10628930828610305413ull, 8709809816217216675ull}}, {{10854878360779738529ull, 10550301782385473704ull, 4337238758667746931ull, 5443631135135760422ull}}, {{13568597950974673161ull, 8576191209554454226ull, 14644920485189459472ull, 6804538918919700527ull}}, {{7737375401863565643ull, 10720239011943067783ull, 13694464588059436436ull, 8505673648649625659ull}}, {{11753388653805810383ull, 15923521419319193172ull, 6253197358323453820ull, 5316046030406016037ull}}, {{14691735817257262979ull, 1457657700439439849ull, 12428182716331705180ull, 6645057538007520046ull}}, {{4529611716289415012ull, 1822072125549299812ull, 6311856358559855667ull, 8306321922509400058ull}}, {{12054379359535660190ull, 17279696142964170046ull, 8556596242527297695ull, 5191451201568375036ull}}, {{5844602162564799430ull, 16987934160277824654ull, 10695745303159122119ull, 6489314001960468795ull}}, {{16529124740060775095ull, 16623231681919892913ull, 8757995610521514745ull, 8111642502450585994ull}}, {{3413173934896902579ull, 3471990773558851215ull, 10085433275003334620ull, 5069776564031616246ull}}, {{18101525473903291935ull, 4339988466948564018ull, 3383419556899392467ull, 6337220705039520308ull}}, {{13403534805524339111ull, 813299565258317119ull, 4229274446124240584ull, 7921525881299400385ull}}, {{15294738281093793801ull, 508312228286448199ull, 14172511574896120125ull, 4950953675812125240ull}}, {{14506736832939854347ull, 5247076303785448153ull, 17715639468620150156ull, 6188692094765156550ull}}, {{4298362985892654221ull, 6558845379731810192ull, 12921177298920411887ull, 7735865118456445688ull}}, {{2686476866182908888ull, 11016807389973463226ull, 8075735811825257429ull, 4834915699035278555ull}}, {{12581468119583411918ull, 18382695255894216936ull, 5482983746354183882ull, 6043644623794098194ull}}, {{15726835149479264898ull, 13754997033012995362ull, 16077101719797505661ull, 7554555779742622742ull}}, {{14440957986851928465ull, 10902716154846816053ull, 5436502556446053134ull, 4721597362339139214ull}}, {{4216139428282746870ull, 4405023156703744259ull, 16019000232412342226ull, 5901996702923924017ull}}, {{658488266926045683ull, 14729650982734456132ull, 6188692235233264070ull, 7377495878654905022ull}}, {{823110333657557103ull, 9188691691563294357ull, 16959237330896355896ull, 9221869848318631277ull}}, {{2820286967749667142ull, 5742932307227058973ull, 12905366341023916387ull, 5763668655199144548ull}}, {{8137044728114471831ull, 2566979365606435812ull, 16131707926279895484ull, 7204585818998930685ull}}, {{10171305910143089789ull, 3208724207008044765ull, 6329576852567705643ull, 9005732273748663357ull}}, {{8662909203053125070ull, 18146353693875885642ull, 6261828542068509978ull, 5628582671092914598ull}}, {{1605264466961630530ull, 13459570080490081245ull, 17050657714440413281ull, 7035728338866143247ull}}, {{6618266602129426066ull, 2989404545330437844ull, 16701636124623128698ull, 8794660423582679059ull}}, {{13359788663185667099ull, 6480063859258911556ull, 8132679568675761484ull, 5496662764739174412ull}}, {{16699735828982083874ull, 8100079824073639445ull, 10165849460844701855ull, 6870828455923968015ull}}, {{7039611730945441131ull, 5513413761664661403ull, 8095625807628489415ull, 8588535569904960019ull}}, {{2093914322627206755ull, 10363412628681495233ull, 2753923120554111932ull, 5367834731190600012ull}}, {{7229078921711396347ull, 12954265785851869041ull, 3442403900692639915ull, 6709793413988250015ull}}, {{13648034670566633338ull, 11581146213887448397ull, 18138062931147963606ull, 8387241767485312518ull}}, {{10835864678317839788ull, 2626530365252267344ull, 6724603313540089350ull, 5242026104678320324ull}}, {{13544830847897299735ull, 12506534993420109988ull, 8405754141925111687ull, 6552532630847900405ull}}, {{16931038559871624669ull, 11021482723347749581ull, 15118878695833777513ull, 8190665788559875506ull}}, {{12887742109133459370ull, 18417641748160813248ull, 14060985203323498849ull, 5119166117849922191ull}}, {{16109677636416824213ull, 9186994129918852848ull, 12964545485726985658ull, 6398957647312402739ull}}, {{1690352971811478650ull, 2260370625543790253ull, 11593995838731344169ull, 7998697059140503424ull}}, {{3362313616595868108ull, 12941946687033338668ull, 7246247399207090105ull, 4999185661962814640ull}}, {{4202892020744835135ull, 2342375303509509623ull, 9057809249008862632ull, 6248982077453518300ull}}, {{641929007503656015ull, 2927969129386887029ull, 11322261561261078290ull, 7811227596816897875ull}}, {{2707048638903478962ull, 6441666724294192297ull, 4770570466574479979ull, 4882017248010561172ull}}, {{7995496817056736606ull, 3440397386940352467ull, 5963213083218099974ull, 6102521560013201465ull}}, {{5382685002893532853ull, 13523868770530216392ull, 12065702372450012871ull, 7628151950016501831ull}}, {{3364178126808458034ull, 15369947009222467101ull, 14458593010422339900ull, 4767594968760313644ull}}, {{8816908676937960446ull, 765689687818532260ull, 18073241263027924876ull, 5959493710950392055ull}}, {{11021135846172450557ull, 957112109773165325ull, 17979865560357518191ull, 7449367138687990069ull}}, {{9194052913071475550ull, 7515724096249310184ull, 13543258984437142821ull, 4655854461679993793ull}}, {{11492566141339344438ull, 14006341138739025634ull, 3094015675264264814ull, 5819818077099992242ull}}, {{5142335639819404739ull, 8284554386569006235ull, 13090891630935106826ull, 7274772596374990302ull}}, {{1816233531346868020ull, 1132320946356481986ull, 7140242501814107725ull, 9093465745468737878ull}}, {{5746831975519180417ull, 3013543600686495193ull, 18297709618915981040ull, 5683416090917961173ull}}, {{11795225987826363425ull, 3766929500858118991ull, 9037078968362812588ull, 7104270113647451467ull}}, {{10132346466355566377ull, 4708661876072648739ull, 6684662692026127831ull, 8880337642059314334ull}}, {{4026873532258535034ull, 9860442700186487318ull, 18012972237798493606ull, 5550211026287071458ull}}, {{14256963952177944600ull, 3102181338378333339ull, 13292843260393341200ull, 6937763782858839323ull}}, {{13209518921795042846ull, 3877726672972916674ull, 12004368057064288596ull, 8672204728573549154ull}}, {{12867635344549289683ull, 11646951207462848729ull, 12114416054092568276ull, 5420127955358468221ull}}, {{2249486125404448391ull, 14558689009328560912ull, 1307962012333546633ull, 6775159944198085277ull}}, {{2811857656755560489ull, 4363303206378537428ull, 6246638533844321196ull, 8468949930247606596ull}}, {{10980783072327001114ull, 11950436540841361700ull, 13127521120507476555ull, 5293093706404754122ull}}, {{13725978840408751392ull, 10326359657624314221ull, 7186029363779569886ull, 6616367133005942653ull}}, {{3322415495228775528ull, 3684577535175616969ull, 13594222723151850262ull, 8270458916257428316ull}}, {{13605724730586454465ull, 16137919014766924317ull, 17719761238824682221ull, 5169036822660892697ull}}, {{3172097857950904369ull, 6337340713176491685ull, 8314643493248689065ull, 6461296028326115872ull}}, {{8576808340866018366ull, 12533361909898002510ull, 10393304366560861331ull, 8076620035407644840ull}}, {{748819194613873575ull, 5527508184472557617ull, 6495815229100538332ull, 5047887522129778025ull}}, {{5547710011694729872ull, 6909385230590697021ull, 12731455054803060819ull, 6309859402662222531ull}}, {{11546323533045800244ull, 4025045519810983372ull, 11302632800076438120ull, 7887324253327778164ull}}, {{16439824245008400961ull, 2515653449881864607ull, 16287517536902549633ull, 4929577658329861352ull}}, {{15938094287833113297ull, 7756252830779718663ull, 1912652847418635425ull, 6161972072912326691ull}}, {{15310931841364003717ull, 14307002056902036233ull, 16225874114555457993ull, 7702465091140408363ull}}, {{2651803373211420467ull, 2024347257922690790ull, 7835328312383467294ull, 4814040681962755227ull}}, {{12538126253369051392ull, 11753806109258139295ull, 5182474372051946213ull, 6017550852453444034ull}}, {{11060971798283926336ull, 857199581290510407ull, 15701465001919708575ull, 7521938565566805042ull}}, {{13830636401568535816ull, 7453278765947650860ull, 14425101644627205763ull, 4701211603479253151ull}}, {{17288295501960669770ull, 4704912439007175671ull, 13419691037356619300ull, 5876514504349066439ull}}, {{16998683359023449308ull, 5881140548758969589ull, 12162927778268386221ull, 7345643130436333049ull}}, {{7413296143497147923ull, 11963111704376099891ull, 1368601667553319064ull, 9182053913045416312ull}}, {{2327467080472023500ull, 7476944815235062432ull, 855376042220824415ull, 5738783695653385195ull}}, {{2909333850590029375ull, 4734495000616440136ull, 14904278108058194231ull, 7173479619566731493ull}}, {{3636667313237536719ull, 1306432732343162266ull, 4795289579790579077ull, 8966849524458414367ull}}, {{6884603089200848354ull, 3122363466928170368ull, 9914585015010193779ull, 5604280952786508979ull}}, {{8605753861501060442ull, 17738012388942376672ull, 7781545250335354319ull, 7005351190983136224ull}}, {{10757192326876325552ull, 17560829467750582936ull, 9726931562919192899ull, 8756688988728920280ull}}, {{6723245204297703470ull, 8669675408130420383ull, 6079332226824495562ull, 5472930617955575175ull}}, {{3792370486944741434ull, 1613722223308249671ull, 2987479265103231549ull, 6841163272444468969ull}}, {{128777090253538888ull, 6628838797562699993ull, 8346035099806427340ull, 8551454090555586211ull}}, {{11609700727476931565ull, 13366396285331463303ull, 2910428928165323135ull, 5344658806597241382ull}}, {{9900439890918776552ull, 12096309338236941225ull, 12861408197061429727ull, 6680823508246551727ull}}, {{16987235882075858594ull, 10508700654368788627ull, 11465074227899399255ull, 8351029385308189659ull}}, {{8311179417083717670ull, 13485466936621574748ull, 4859828383223430582ull, 5219393365817618537ull}}, {{10388974271354647087ull, 7633461633922192627ull, 10686471497456676132ull, 6524241707272023171ull}}, {{8374531820765920954ull, 9541827042402740784ull, 8746403353393457261ull, 8155302134090028964ull}}, {{5234082387978700597ull, 8269484910715406942ull, 14689874132725686596ull, 5097063833806268102ull}}, {{15765975021828151554ull, 10336856138394258677ull, 9138970629052332437ull, 6371329792257835128ull}}, {{5872410722003025730ull, 17532756191420211251ull, 11423713286315415546ull, 7964162240322293910ull}}, {{1364413692038197130ull, 15569658638065019936ull, 2528134785519746812ull, 4977601400201433694ull}}, {{1705517115047746412ull, 1015329223871723304ull, 12383540518754459324ull, 6222001750251792117ull}}, {{2131896393809683015ull, 1269161529839654130ull, 1644367593160910443ull, 7777502187814740147ull}}, {{5944121264558439788ull, 16934127020645641495ull, 17168630810221426690ull, 4860938867384212591ull}}, {{2818465562270661831ull, 11944286738952276061ull, 16849102494349395459ull, 6076173584230265739ull}}, {{8134767971265715193ull, 10318672405262957172ull, 16449692099509356420ull, 7595216980287832174ull}}, {{14307602018895847804ull, 15672542290144124040ull, 5669371543765959858ull, 4747010612679895109ull}}, {{17884502523619809755ull, 10367305825825379242ull, 11698400448134837727ull, 5933763265849868886ull}}, {{13132256117669986385ull, 8347446263854336149ull, 5399628523313771351ull, 7417204082312336108ull}}, {{10513503082757435443ull, 12134682942550041949ull, 12598139863925882902ull, 4635752551445210067ull}}, {{17753564871874182207ull, 5944981641332776628ull, 11135988811479965724ull, 5794690689306512584ull}}, {{3745212016133176143ull, 7431227051665970786ull, 13919986014349957155ull, 7243363361633140730ull}}, {{13904887057021245987ull, 4677347796155075578ull, 8176610481082670636ull, 9054204202041425913ull}}, {{13302240429065666646ull, 12146714409451698044ull, 16639596596745138907ull, 5658877626275891195ull}}, {{16627800536332083307ull, 10571706993387234651ull, 16187809727504035730ull, 7073597032844863994ull}}, {{16173064651987716230ull, 3991261704879267506ull, 11011390122525268855ull, 8841996291056079993ull}}, {{14719851425919710548ull, 9412067593190624047ull, 18411333872646762794ull, 5526247681910049995ull}}, {{13788128263972250281ull, 2541712454633504251ull, 18402481322381065589ull, 6907809602387562494ull}}, {{12623474311537924947ull, 7788826586719268218ull, 13779729616121556178ull, 8634762002984453118ull}}, {{12501357463138590996ull, 9479702635126930540ull, 4000644991648584707ull, 5396726251865283199ull}}, {{15626696828923238745ull, 7237942275481275271ull, 389120221133342980ull, 6745907814831603999ull}}, {{14921685017726660527ull, 9047427844351594089ull, 14321458331698842437ull, 8432384768539504998ull}}, {{2408524108438080974ull, 7960485411933440258ull, 4339225438884388619ull, 5270240480337190624ull}}, {{12234027172402377025ull, 5338920746489412418ull, 5424031798605485774ull, 6587800600421488280ull}}, {{6069161928648195473ull, 15897022969966541331ull, 6780039748256857217ull, 8234750750526860350ull}}, {{1487383196191428219ull, 3018110328588006476ull, 18072582897942699473ull, 5146719219079287718ull}}, {{1859228995239285273ull, 8384323929162395999ull, 13367356585573598533ull, 6433399023849109648ull}}, {{16159094299331270304ull, 15092090929880382902ull, 16709195731966998166ull, 8041748779811387060ull}}, {{5487747918654656036ull, 4820870812747851410ull, 1219875295624598046ull, 5026092987382116913ull}}, {{16083056935173095853ull, 15249460552789590070ull, 6136530137958135461ull, 6282616234227646141ull}}, {{10880449132111594008ull, 5226767635704823876ull, 12282348690875057231ull, 7853270292784557676ull}}, {{16023652744424522063ull, 10184258799956596778ull, 16899839968651686577ull, 4908293932990348547ull}}, {{10806193893675876771ull, 17342009518373133877ull, 16513113942387220317ull, 6135367416237935684ull}}, {{18119428385522233867ull, 7842453842684253634ull, 2194648354274473781ull, 7669209270297419606ull}}, {{15936328759378784071ull, 7207376660891352473ull, 15206713276703709825ull, 4793255793935887253ull}}, {{6085352893941316377ull, 13620906844541578496ull, 5173333540597473569ull, 5991569742419859067ull}}, {{7606691117426645471ull, 3191075500394809408ull, 1854980907319454058ull, 7489462178024823834ull}}, {{4754181948391653420ull, 6606108206174143784ull, 5771049085502046690ull, 4680913861265514896ull}}, {{5942727435489566774ull, 17481007294572455538ull, 7213811356877558362ull, 5851142326581893620ull}}, {{16651781331216734276ull, 12627887081360793614ull, 9017264196096947953ull, 7313927908227367025ull}}, {{11591354627166142037ull, 1949800796418828306ull, 15883266263548572846ull, 9142409885284208781ull}}, {{11856282660406226677ull, 15053683553043931403ull, 12232884423931551980ull, 5714006178302630488ull}}, {{10208667307080395442ull, 370360367595362638ull, 15291105529914439976ull, 7142507722878288110ull}}, {{3537462096995718495ull, 462950459494203298ull, 9890509875538274162ull, 8928134653597860138ull}}, {{6822599829049711963ull, 4901030055611264965ull, 10793254690638809255ull, 5580084158498662586ull}}, {{13139935804739527858ull, 1514601551086693302ull, 4268196326443735761ull, 6975105198123328233ull}}, {{7201547719069634014ull, 6504937957285754532ull, 9946931426482057605ull, 8718881497654160291ull}}, {{13724339361273297067ull, 6371429232517290534ull, 3910989132337592051ull, 5449300936033850182ull}}, {{7932052164736845526ull, 3352600522219225264ull, 14112108452276765872ull, 6811626170042312727ull}}, {{9915065205921056907ull, 4190750652774031580ull, 13028449546918569436ull, 8514532712552890909ull}}, {{15420287790555436375ull, 11842591194838545545ull, 10448623976037799849ull, 5321582945345556818ull}}, {{5440301682912131757ull, 968180938266018220ull, 3837407933192474004ull, 6651978681681946023ull}}, {{6800377103640164696ull, 1210226172832522775ull, 185073898063204601ull, 8314973352102432529ull}}, {{11167764717416184791ull, 12285606404088796494ull, 11644886232357972635ull, 5196858345064020330ull}}, {{4736333859915455181ull, 10745321986683607714ull, 5332735753592689986ull, 6496072931330025413ull}}, {{15143789361749094784ull, 4208280446499733834ull, 11277605710418250387ull, 8120091164162531766ull}}, {{14076554369520572144ull, 324332269848639694ull, 2436817550584018588ull, 5075056977601582354ull}}, {{8372320925045939372ull, 405415337310799618ull, 12269393975084799043ull, 6343821222001977942ull}}, {{1242029119452648407ull, 14341827226920663235ull, 6113370432001222995ull, 7929776527502472428ull}}, {{16917169264153762919ull, 6657799007611720569ull, 13044228556855540180ull, 4956110329689045267ull}}, {{7311403524910039936ull, 8322248759514650712ull, 11693599677642037321ull, 6195137912111306584ull}}, {{9139254406137549920ull, 15014496967820701294ull, 14616999597052546651ull, 7743922390139133230ull}}, {{1100347985408580796ull, 7078217595674244357ull, 4523938729730453753ull, 4839951493836958269ull}}, {{5987121000188113899ull, 13459458013020193350ull, 10266609430590455095ull, 6049939367296197836ull}}, {{16707273287089918182ull, 12212636497847853783ull, 12833261788238068869ull, 7562424209120247295ull}}, {{17359574832072280720ull, 9938740820368602566ull, 14938317645289874899ull, 4726515130700154559ull}}, {{12476096503235575092ull, 7811740007033365304ull, 14061211038184955720ull, 5908143913375193199ull}}, {{15595120629044468864ull, 9764675008791706630ull, 12964827779303806746ull, 7385179891718991499ull}}, {{5135264374725405136ull, 10714607898922204548ull, 5797174352851185264ull, 4615737432324369687ull}}, {{6419080468406756420ull, 13393259873652755685ull, 2634781922636593676ull, 5769671790405462109ull}}, {{12635536603935833429ull, 16741574842065944606ull, 7905163421723129999ull, 7212089738006827636ull}}, {{6571048718065015979ull, 16315282534155042854ull, 9881454277153912499ull, 9015112172508534545ull}}, {{17941963504072798699ull, 7891208574633207831ull, 17705123969289665072ull, 5634445107817834090ull}}, {{17815768361663610469ull, 9864010718291509789ull, 12908032924757305532ull, 7043056384772292613ull}}, {{8434652396797349375ull, 12330013397864387237ull, 2299983100664468203ull, 8803820480965365767ull}}, {{7577500757212037311ull, 5400415364451548071ull, 8355018465556374483ull, 5502387800603353604ull}}, {{4860189928087658735ull, 2138833187137047185ull, 10443773081945468104ull, 6877984750754192005ull}}, {{10686923428536961323ull, 2673541483921308981ull, 17666402370859223034ull, 8597480938442740006ull}}, {{8985170152049294779ull, 6282649445878206017ull, 6429815463359626492ull, 5373425586526712504ull}}, {{15843148708489006377ull, 7853311807347757521ull, 8037269329199533115ull, 6716781983158390630ull}}, {{5968877830329094260ull, 5204953740757308998ull, 823214624644640586ull, 8395977478947988288ull}}, {{17565606699237847624ull, 7864782106400706027ull, 514509140402900366ull, 5247485924342492680ull}}, {{17345322355619921626ull, 607605596146106726ull, 643136425503625458ull, 6559357405428115850ull}}, {{12458280907670126225ull, 9982879032037409216ull, 10027292568734307630ull, 8199196756785144812ull}}, {{7786425567293828891ull, 1627613376595992856ull, 15490429892313718077ull, 5124497972990715507ull}}, {{9733031959117286113ull, 6646202739172378974ull, 14751351346964759692ull, 6405622466238394384ull}}, {{2942917912041831834ull, 8307753423965473718ull, 18439189183705949615ull, 8007028082797992980ull}}, {{15674381750308308608ull, 12109874917619502929ull, 2301121202961442701ull, 5004392551748745613ull}}, {{5757919132603222048ull, 1302285591742214950ull, 7488087522129191281ull, 6255490689685932016ull}}, {{16420770952608803368ull, 6239543008105156591ull, 9360109402661489101ull, 7819363362107415020ull}}, {{17180510873021583961ull, 6205557389279416821ull, 15073440413518206496ull, 4887102101317134387ull}}, {{7640580535994816239ull, 7756946736599271027ull, 14230114498470370216ull, 6108877626646417984ull}}, {{4939039651566132395ull, 9696183420749088784ull, 17787643123087962770ull, 7636097033308022480ull}}, {{3086899782228832747ull, 10671800656395568394ull, 11117276951929976731ull, 4772560645817514050ull}}, {{13081996764640816742ull, 8728064802067072588ull, 4673224153057695106ull, 5965700807271892563ull}}, {{16352495955801020927ull, 1686708965729064927ull, 1229844172894730979ull, 7457126009089865704ull}}, {{17137839000016719936ull, 17195094168076523243ull, 768652608059206861ull, 4660703755681166065ull}}, {{16810612731593512015ull, 7658809654813490342ull, 5572501778501396481ull, 5825879694601457581ull}}, {{11789893877637114211ull, 14185198086944250832ull, 11577313241554133505ull, 7282349618251821976ull}}, {{14737367347046392764ull, 3896439553398149828ull, 14471641551942666882ull, 9102937022814777470ull}}, {{18434226628758771286ull, 7046960739301231546ull, 4433089951536778897ull, 5689335639259235919ull}}, {{13819411249093688299ull, 13420386942553927337ull, 929676420993585717ull, 7111669549074044899ull}}, {{3439206006084946661ull, 2940425622910245460ull, 14997153581524145859ull, 8889586936342556123ull}}, {{11372875790657867472ull, 17978667078814761076ull, 7067377979238897209ull, 5555991835214097577ull}}, {{14216094738322334339ull, 8638275793236287633ull, 13445908492476009416ull, 6944989794017621971ull}}, {{3935060367620754212ull, 10797844741545359542ull, 12195699597167623866ull, 8681237242522027464ull}}, {{16294470785045135095ull, 11360338981893237617ull, 7622312248229764916ull, 5425773276576267165ull}}, {{6533030426024255156ull, 14200423727366547022ull, 14139576328714594049ull, 6782216595720333956ull}}, {{17389660069385094753ull, 3915471603926020065ull, 17674470410893242562ull, 8477770744650417445ull}}, {{3951008515724602365ull, 7058855770881150445ull, 13352387016021970553ull, 5298606715406510903ull}}, {{9550446663083140860ull, 13435255732028825960ull, 12078797751600075287ull, 6623258394258138629ull}}, {{11938058328853926075ull, 12182383646608644546ull, 1263439134217930397ull, 8279072992822673287ull}}, {{12072972473961091701ull, 9919832788344096793ull, 7707178486527288354ull, 5174420620514170804ull}}, {{1256157537169200914ull, 3176418948575345184ull, 9633973108159110443ull, 6468025775642713505ull}}, {{1570196921461501143ull, 17805581741001345192ull, 16654152403626275957ull, 8085032219553391881ull}}, {{981373075913438214ull, 13434331597339534697ull, 3491316224625340617ull, 5053145137220869926ull}}, {{5838402363319185672ull, 2957856441392254659ull, 13587517317636451580ull, 6316431421526087407ull}}, {{2686316935721594185ull, 3697320551740318324ull, 12372710628618176571ull, 7895539276907609259ull}}, {{10902320121680772174ull, 4982335624005000ull, 5427101133672666405ull, 4934712048067255787ull}}, {{13627900152100965218ull, 4617913937957394154ull, 2172190398663445102ull, 6168390060084069734ull}}, {{7811503153271430714ull, 14995764459301518501ull, 11938610035184082185ull, 7710487575105087167ull}}, {{7188032480008338148ull, 2454823759422367207ull, 14379160299631133222ull, 4819054734440679479ull}}, {{4373354581583034781ull, 12291901736132734817ull, 13362264356111528623ull, 6023818418050849349ull}}, {{10078379245406181380ull, 10753191151738530617ull, 2867772389857247067ull, 7529773022563561687ull}}, {{17828202074447333123ull, 4414901460622887683ull, 8709886771301861273ull, 4706108139102226054ull}}, {{17673566574631778500ull, 10130312844205997508ull, 1663986427272550783ull, 5882635173877782568ull}}, {{3645214144580171508ull, 8051205036830108982ull, 2079983034090688479ull, 7353293967347228210ull}}, {{13779889717579990193ull, 5452320277610248323ull, 11823350829468136407ull, 9191617459184035262ull}}, {{6306588064273799919ull, 10325229201147487058ull, 2777908249990197350ull, 5744760911990022039ull}}, {{17106607117197025707ull, 3683164464579583014ull, 17307443367769910400ull, 7180951139987527548ull}}, {{12159886859641506325ull, 4603955580724478768ull, 3187560136002836384ull, 8976188924984409436ull}}, {{7599929287275941453ull, 2877472237952799230ull, 11215597121856548548ull, 5610118078115255897ull}}, {{276539572240151009ull, 3596840297440999038ull, 184438347038521973ull, 7012647597644069872ull}}, {{9569046502154964569ull, 9107736390228636701ull, 230547933798152466ull, 8765809497055087340ull}}, {{8286497073060546808ull, 10304021262320285842ull, 9367464495478621099ull, 5478630935659429587ull}}, {{1134749304470907701ull, 8268340559472969399ull, 7097644600920888470ull, 6848288669574286984ull}}, {{15253494685870798339ull, 1112053662486435940ull, 8872055751151110588ull, 8560360836967858730ull}}, {{310062141814473154ull, 9918405575908798271ull, 10156720862896832021ull, 5350225523104911706ull}}, {{14222635732550255154ull, 17009692988313385742ull, 3472529041766264218ull, 6687781903881139633ull}}, {{8554922628833043135ull, 12038744198536956370ull, 8952347320635218177ull, 8359727379851424541ull}}, {{9958512661448039863ull, 606686096444515875ull, 7901060084610705313ull, 5224829612407140338ull}}, {{7836454808382661925ull, 5370043638983032748ull, 652953068908605833ull, 6531037015508925423ull}}, {{9795568510478327406ull, 11324240567156178839ull, 14651249391417921003ull, 8163796269386156778ull}}, {{13039759346690036485ull, 4771807345258917822ull, 13768716888063588531ull, 5102372668366347986ull}}, {{7076327146507769798ull, 1353073163146259374ull, 7987524073224709856ull, 6377965835457934983ull}}, {{18068780969989488056ull, 1691341453932824217ull, 5372719073103499416ull, 7972457294322418729ull}}, {{4375459078602348179ull, 1057088408708015136ull, 14887164466758156895ull, 4982785808951511705ull}}, {{5469323848252935223ull, 15156418566167182632ull, 4773897528165532406ull, 6228482261189389632ull}}, {{6836654810316169029ull, 9722151170854202482ull, 5967371910206915508ull, 7785602826486737040ull}}, {{8884595274874993547ull, 15299716518638652359ull, 3729607443879322192ull, 4866001766554210650ull}}, {{6494058075166354030ull, 677901574588763833ull, 13885381341703928549ull, 6082502208192763312ull}}, {{12729258612385330442ull, 5459062986663342695ull, 17356726677129910686ull, 7603127760240954140ull}}, {{14873315660381913382ull, 17246972421946752896ull, 1624582136351418370ull, 4751954850150596338ull}}, {{144900501767840112ull, 12335343490578665313ull, 11254099707294048771ull, 5939943562688245422ull}}, {{4792811645637188043ull, 10807493344795943737ull, 4844252597262785156ull, 7424929453360306778ull}}, {{14524722324591712287ull, 15978055377352240643ull, 7639343891716628626ull, 4640580908350191736ull}}, {{13544216887312252455ull, 10749197184835524996ull, 9549179864645785783ull, 5800726135437739670ull}}, {{16930271109140315569ull, 8824810462617018341ull, 2713102793952456421ull, 7250907669297174588ull}}, {{7327780831143230749ull, 15642699096698660831ull, 3391378492440570526ull, 9063634586621468235ull}}, {{11497392047105601074ull, 5165000917009275115ull, 18260512622271214243ull, 5664771616638417646ull}}, {{9760054040454613439ull, 1844565127834205990ull, 13602268740984241996ull, 7080964520798022058ull}}, {{2976695513713490990ull, 2305706409792757488ull, 7779463889375526687ull, 8851205650997527573ull}}, {{1860434696070931869ull, 8358595533761555286ull, 7168007940073398131ull, 5532003531873454733ull}}, {{11548915406943440644ull, 5836558398774556203ull, 13571695943519135568ull, 6915004414841818416ull}}, {{9824458240251912901ull, 7295697998468195254ull, 16964619929398919460ull, 8643755518552273020ull}}, {{1528600381730057659ull, 13783183285897397842ull, 1379515419019548854ull, 5402347199095170638ull}}, {{11134122514017347882ull, 8005607070516971494ull, 10947766310629211876ull, 6752933998868963297ull}}, {{4694281105666909044ull, 10007008838146214368ull, 18296393906713902749ull, 8441167498586204121ull}}, {{2933925691041818153ull, 8560223533055077932ull, 4517717164055107362ull, 5275729686616377576ull}}, {{3667407113802272691ull, 1476907379464071607ull, 5647146455068884203ull, 6594662108270471970ull}}, {{18419316947535004576ull, 15681192279612253220ull, 16282305105690881061ull, 8243327635338089962ull}}, {{2288701055354602052ull, 12106588183971352215ull, 14788126709484188567ull, 5152079772086306226ull}}, {{16695934374475416277ull, 10521549211536802364ull, 9261786350000459901ull, 6440099715107882783ull}}, {{2423173894384718730ull, 17763622532848390860ull, 6965546919073186972ull, 8050124643884853479ull}}, {{10737855720845225014ull, 1878892046175468479ull, 11270995852061823714ull, 5031327902428033424ull}}, {{8810633632629143364ull, 11571987094574111407ull, 14088744815077279642ull, 6289159878035041780ull}}, {{6401606022359041301ull, 5241611831362863451ull, 17610931018846599553ull, 7861449847543802225ull}}, {{1695160754760706861ull, 14805222440670259417ull, 4089302859138042864ull, 4913406154714876391ull}}, {{6730636961878271480ull, 59783977128272655ull, 499942555495165677ull, 6141757693393595489ull}}, {{3801610183920451446ull, 4686415989837728723ull, 5236614212796345000ull, 7677197116741994361ull}}, {{70163355736588202ull, 2929009993648580452ull, 14802098929066185385ull, 4798248197963746475ull}}, {{87704194670735252ull, 8272948510488113469ull, 13890937642905343827ull, 5997810247454683094ull}}, {{4721316261765806969ull, 5729499619682753932ull, 8140300016776903976ull, 7497262809318353868ull}}, {{12174194700458405164ull, 3580937262301721207ull, 14311059547340340793ull, 4685789255823971167ull}}, {{10606057357145618551ull, 9087857596304539413ull, 13277138415748038087ull, 5857236569779963959ull}}, {{17869257714859411093ull, 6748135976953286362ull, 11984737001257659705ull, 7321545712224954949ull}}, {{13113200106719488058ull, 13046855989618995857ull, 1145863196289910919ull, 9151932140281193687ull}}, {{1278221039058598180ull, 15071814021152954267ull, 7633693525322276180ull, 5719957587675746054ull}}, {{15432834354105411437ull, 393023452731641217ull, 318744869798069418ull, 7149946984594682568ull}}, {{5455984887349600584ull, 9714651352769327330ull, 398431087247586772ull, 8937433730743353210ull}}, {{8021676573020888269ull, 15295029132335605389ull, 4860705447957129636ull, 5585896081714595756ull}}, {{14638781734703498241ull, 672042341709955120ull, 6075881809946412046ull, 6982370102143244695ull}}, {{18298477168379372801ull, 10063424963992219708ull, 2983166244005627153ull, 8727962627679055869ull}}, {{2213176193382332193ull, 17818855648563607078ull, 4170321911717210922ull, 5454976642299409918ull}}, {{11989842278582691049ull, 13050197523849733039ull, 14436274426501289461ull, 6818720802874262397ull}}, {{10375616829800975907ull, 2477688849530002587ull, 4210284977844448115ull, 8523401003592827997ull}}, {{4178917509411915990ull, 17689456595452109281ull, 4937271120366474023ull, 5327125627245517498ull}}, {{9835332905192282891ull, 17500134725887748697ull, 15394960937312868337ull, 6658907034056896872ull}}, {{16905852149917741518ull, 8040110352077522159ull, 796957097931533806ull, 8323633792571121091ull}}, {{17483686621339670305ull, 413382951621063445ull, 16638999250703066293ull, 5202271120356950681ull}}, {{8019550221392424169ull, 5128414707953717211ull, 6963691008096669154ull, 6502838900446188352ull}}, {{5412751758313142307ull, 15633890421796922322ull, 8704613760120836442ull, 8128548625557735440ull}}, {{7994655867373101846ull, 14382867532050464355ull, 5440383600075522776ull, 5080342890973584650ull}}, {{5381633815788989403ull, 17978584415063080444ull, 16023851536949179278ull, 6350428613716980812ull}}, {{6727042269736236754ull, 13249858481974074747ull, 1583070347476922482ull, 7938035767146226016ull}}, {{1898558409371454020ull, 12892847569661184621ull, 989418967173076551ull, 4961272354466391260ull}}, {{6984884030141705428ull, 11504373443649092872ull, 1236773708966345689ull, 6201590443082989075ull}}, {{8731105037677131785ull, 545408749279202378ull, 15381025191490095824ull, 7751988053853736343ull}}, {{10068626666975595270ull, 340880468299501486ull, 16530669772322391746ull, 4844992533658585214ull}}, {{3362411296864718279ull, 9649472622229152666ull, 11439965178548213874ull, 6056240667073231518ull}}, {{13426386157935673657ull, 2838468740931665024ull, 5076584436330491535ull, 7570300833841539398ull}}, {{8391491348709796036ull, 8691571990723372496ull, 17007923327988720921ull, 4731438021150962123ull}}, {{10489364185887245045ull, 15476151006831603524ull, 16648218141558513247ull, 5914297526438702654ull}}, {{13111705232359056306ull, 14733502740112116501ull, 11586900640093365751ull, 7392871908048378318ull}}, {{10500658779438104143ull, 16125968240211154669ull, 2630126881630965690ull, 4620544942530236449ull}}, {{17737509492725018083ull, 10934088263409167528ull, 7899344620466095017ull, 5775681178162795561ull}}, {{3725142792196720988ull, 18279296347688847315ull, 14485866794010006675ull, 7219601472703494451ull}}, {{44742471818513330ull, 18237434416183671240ull, 13495647474085120440ull, 9024501840879368064ull}}, {{27964044886570832ull, 11398396510114794525ull, 8434779671303200275ull, 5640313650549605040ull}}, {{4646641074535601443ull, 9636309619216105252ull, 10543474589129000344ull, 7050392063187006300ull}}, {{5808301343169501804ull, 12045387024020131565ull, 13179343236411250430ull, 8812990078983757875ull}}, {{5936031348694632580ull, 2916680871585194324ull, 5931246513543337567ull, 5508118799364848672ull}}, {{7420039185868290725ull, 17480909144763656617ull, 7414058141929171958ull, 6885148499206060840ull}}, {{13886735000762751310ull, 12627764394099794963ull, 9267572677411464948ull, 8606435624007576050ull}}, {{6373366366263025617ull, 17115724783167147660ull, 10403918941809553496ull, 5379022265004735031ull}}, {{7966707957828782021ull, 2947911905249382959ull, 8393212658834553967ull, 6723777831255918789ull}}, {{5346698928858589622ull, 17519947936843892411ull, 15103201841970580362ull, 8404722289069898486ull}}, {{1035843821322924562ull, 15561653478954820661ull, 4827815132804224822ull, 5252951430668686554ull}}, {{5906490795081043606ull, 10228694811838750018ull, 15258140952860056836ull, 6566189288335858192ull}}, {{16606485530706080316ull, 12785868514798437522ull, 625932117365519429ull, 8207736610419822741ull}}, {{14990739475118688101ull, 10297010830962717403ull, 2697050582567143595ull, 5129835381512389213ull}}, {{14126738325470972223ull, 8259577520276008850ull, 7982999246636317398ull, 6412294226890486516ull}}, {{8435050869983939470ull, 1101099863490235255ull, 9978749058295396748ull, 8015367783613108145ull}}, {{12189435821381044025ull, 9911559451536172842ull, 17765933207503092727ull, 5009604864758192590ull}}, {{6013422739871529223ull, 7777763295992828149ull, 12984044472524090101ull, 6262006080947740738ull}}, {{12128464443266799433ull, 14333890138418423090ull, 7006683553800336818ull, 7827507601184675923ull}}, {{12191976295469137550ull, 13570367354938902335ull, 2073334211911516559ull, 4892192250740422452ull}}, {{10628284350909034033ull, 12351273175246240015ull, 2591667764889395699ull, 6115240313425528065ull}}, {{8673669420208904637ull, 10827405450630412115ull, 7851270724539132528ull, 7644050391781910081ull}}, {{3115200378416871446ull, 6767128406644007572ull, 16436259248905427590ull, 4777531494863693800ull}}, {{3894000473021089308ull, 17682282545159785273ull, 2098579987422232871ull, 5971914368579617251ull}}, {{9479186609703749539ull, 17491167163022343687ull, 16458283039559954801ull, 7464892960724521563ull}}, {{12842020658705925318ull, 4014450449247882948ull, 7980583890511277799ull, 4665558100452825977ull}}, {{16052525823382406647ull, 406377043132465781ull, 14587415881566485153ull, 5831947625566032471ull}}, {{6230599223945844597ull, 5119657322342970131ull, 13622583833530718537ull, 7289934531957540589ull}}, {{3176563011504917842ull, 11011257671356100568ull, 3193171736631234459ull, 9112418164946925737ull}}, {{1985351882190573652ull, 4576193035383868903ull, 13524947381462991297ull, 5695261353091828585ull}}, {{16316747908020380776ull, 10331927312657224032ull, 3071126171546575409ull, 7119076691364785732ull}}, {{1949190811315924354ull, 17526595159248917945ull, 3838907714433219261ull, 8898845864205982165ull}}, {{12747459303140922482ull, 13259964983744267667ull, 4705160330734455990ull, 5561778665128738853ull}}, {{11322638110498765198ull, 7351584192825558776ull, 10493136431845457892ull, 6952223331410923566ull}}, {{14153297638123456497ull, 9189480241031948470ull, 3893048502952046557ull, 8690279164263654458ull}}, {{4234125005399772407ull, 8049268159858661746ull, 7044841332772417002ull, 5431424477664784036ull}}, {{14516028293604491317ull, 838213162968551374ull, 8806051665965521253ull, 6789280597080980045ull}}, {{8921663330150838338ull, 5659452472138077122ull, 15619250600884289470ull, 8486600746351225056ull}}, {{10187725599771661865ull, 17372215850368461913ull, 9762031625552680918ull, 5304125466469515660ull}}, {{17346343018141965235ull, 12491897776105801583ull, 12202539531940851148ull, 6630156833086894575ull}}, {{17071242754250068640ull, 15614872220132251979ull, 10641488396498676031ull, 8287696041358618219ull}}, {{8363683712192598948ull, 16676824165223739343ull, 4345087238597978567ull, 5179810025849136387ull}}, {{5842918621813360781ull, 16234344188102286275ull, 819673029820085305ull, 6474762532311420484ull}}, {{2691962258839313072ull, 6457872179845694132ull, 1024591287275106632ull, 8093453165389275605ull}}, {{10905848448629346478ull, 4036170112403558832ull, 2946212563760635597ull, 5058408228368297253ull}}, {{13632310560786683098ull, 9656898658931836444ull, 8294451723128182400ull, 6323010285460371566ull}}, {{17040388200983353872ull, 12071123323664795555ull, 1144692617055452192ull, 7903762856825464458ull}}, {{8344399616400902218ull, 7544452077290497222ull, 5327118904087045524ull, 4939851785515915286ull}}, {{1207127483646351965ull, 9430565096613121528ull, 15882270666963582713ull, 6174814731894894107ull}}, {{1508909354557939956ull, 16399892389193789814ull, 15241152315277090487ull, 7718518414868617634ull}}, {{14778126401880876185ull, 17167461770887200489ull, 14137406215475569458ull, 4824074009292886021ull}}, {{4637599947068931519ull, 12235955176754224804ull, 3836699714062298111ull, 6030092511616107527ull}}, {{5796999933836164398ull, 10683257952515393101ull, 184188624150484735ull, 7537615639520134409ull}}, {{5928967967861296701ull, 13594565247963202544ull, 11644332936162522719ull, 4711009774700084005ull}}, {{7411209959826620876ull, 12381520541526615276ull, 720358114920989687ull, 5888762218375105007ull}}, {{9264012449783276095ull, 10865214658480881191ull, 14735505698933400821ull, 7360952772968881258ull}}, {{6968329543801707215ull, 18193204341528489393ull, 9196010086811975218ull, 9201190966211101573ull}}, {{15884421010944536769ull, 15982438731882693774ull, 8053349313471178463ull, 5750744353881938483ull}}, {{10632154226825895154ull, 15366362396425979314ull, 5455000623411585175ull, 7188430442352423104ull}}, {{4066820746677593134ull, 14596266977105086239ull, 6818750779264481469ull, 8985538052940528880ull}}, {{9459291994314577565ull, 11428509869904372851ull, 4261719237040300918ull, 5615961283087830550ull}}, {{7212428974465834052ull, 5062265300525690256ull, 14550521083155151956ull, 7019951603859788187ull}}, {{9015536218082292565ull, 6327831625657112820ull, 13576465335516552041ull, 8774939504824735234ull}}, {{14858082173156208661ull, 15484109812104165272ull, 13096976853125232929ull, 5484337190515459521ull}}, {{125858642735709210ull, 5520079209848042879ull, 2536163011124377450ull, 6855421488144324402ull}}, {{13992381358701800225ull, 16123471049164829406ull, 12393575800760247620ull, 8569276860180405502ull}}, {{4133552330761237237ull, 853797368873242571ull, 3134298857047766859ull, 5355798037612753439ull}}, {{555254395024158642ull, 14902304766373716926ull, 17752931626591872285ull, 6694747547015941798ull}}, {{9917440030634974110ull, 4792822902684982445ull, 12967792496385064549ull, 8368434433769927248ull}}, {{8504243028360552771ull, 5301357323391807980ull, 8104870310240665343ull, 5230271521106204530ull}}, {{10630303785450690964ull, 2015010635812372071ull, 907715850946055871ull, 6537839401382755663ull}}, {{8676193713385975800ull, 16353821350047628801ull, 14969702868964733550ull, 8172299251728444578ull}}, {{16951836116934704635ull, 5609452325352380096ull, 13967750311530346373ull, 5107687032330277861ull}}, {{2743051072458829178ull, 11623501425117863025ull, 3624629834130769254ull, 6384608790412847327ull}}, {{8040499859000924377ull, 5306004744542552973ull, 18365845347945625280ull, 7980760988016059158ull}}, {{7331155421089271688ull, 3316252965339095608ull, 6866967324038627896ull, 4987975617510036974ull}}, {{9163944276361589609ull, 4145316206673869510ull, 17807081191903060678ull, 6234969521887546217ull}}, {{2231558308597211203ull, 14405017295197112696ull, 8423793434596662135ull, 7793711902359432772ull}}, {{1394723942873257002ull, 15920664837139277291ull, 14488242933477689642ull, 4871069938974645482ull}}, {{15578462983873734965ull, 10677459009569320805ull, 8886931629992336245ull, 6088837423718306853ull}}, {{5638020674560004994ull, 17958509780389038911ull, 15720350555917808210ull, 7611046779647883566ull}}, {{10441291949241084977ull, 15835754631170537223ull, 5213533079021242227ull, 4756904237279927229ull}}, {{8439928918123968318ull, 15183007270535783625ull, 11128602367203940688ull, 5946130296599909036ull}}, {{15161597166082348301ull, 532015014460177915ull, 13910752959004925861ull, 7432662870749886295ull}}, {{7170155219587773736ull, 2638352393251305149ull, 15611749627019160519ull, 4645414294218678934ull}}, {{13574380042912105074ull, 17132998546846295148ull, 10291314996919174840ull, 5806767867773348668ull}}, {{16967975053640131343ull, 2969504109848317319ull, 12864143746148968551ull, 7258459834716685835ull}}, {{16598282798622776274ull, 17546938192592560361ull, 11468493664258822784ull, 9073074793395857294ull}}, {{3456397721498153315ull, 10966836370370350226ull, 2556122521734376336ull, 5670671745872410809ull}}, {{13543869188727467452ull, 13708545462962937782ull, 7806839170595358324ull, 7088339682340513511ull}}, {{7706464449054558507ull, 17135681828703672228ull, 5146862944816810001ull, 8860424602925641889ull}}, {{14039912317513874875ull, 3792272115298713286ull, 14746004386578976011ull, 5537765376828526180ull}}, {{8326518360037567786ull, 128654125696003704ull, 18432505483223720014ull, 6922206721035657725ull}}, {{10408147950046959732ull, 9384189693974780438ull, 9205573798747486305ull, 8652758401294572157ull}}, {{1893406450351961929ull, 17394333604802707534ull, 8059326633430872892ull, 5407974000809107598ull}}, {{11590130099794728219ull, 3296172932293832801ull, 850786254933815308ull, 6759967501011384498ull}}, {{652604569461246561ull, 4120216165367291002ull, 10286854855522044943ull, 8449959376264230622ull}}, {{5019563874340667005ull, 9492664130995638732ull, 1817598266273890185ull, 5281224610165144139ull}}, {{6274454842925833756ull, 16477516182171936319ull, 16107055888124526443ull, 6601530762706430173ull}}, {{3231382535229904291ull, 15985209209287532495ull, 6298761804873494342ull, 8251913453383037717ull}}, {{8937143112159772038ull, 5379069737377319905ull, 6242569137259627916ull, 5157445908364398573ull}}, {{15783114908627102952ull, 6723837171721649881ull, 12414897440001922799ull, 6446807385455498216ull}}, {{5893835580501714977ull, 3793110446224674448ull, 15518621800002403499ull, 8058509231819372770ull}}, {{3683647237813571861ull, 64851019676727578ull, 14310824643428890091ull, 5036568269887107981ull}}, {{13827931084121740634ull, 13916121829878073184ull, 4053472749003948901ull, 6295710337358884977ull}}, {{17284913855152175793ull, 3560094232065427768ull, 9678526954682324031ull, 7869637921698606221ull}}, {{10803071159470109871ull, 9142587922681974211ull, 8354922355890146471ull, 4918523701061628888ull}}, {{8892152930910249434ull, 6816548884925079860ull, 10443652944862683089ull, 6148154626327036110ull}}, {{11115191163637811792ull, 13132372124583737729ull, 3831194144223578053ull, 7685193282908795138ull}}, {{29465449632550514ull, 10513575587078530033ull, 7006182358567124187ull, 4803245801817996961ull}}, {{4648517830468076047ull, 8530283465420774637ull, 13369413966636293138ull, 6004057252272496201ull}}, {{10422333306512482963ull, 1439482294921192488ull, 2876709403013202711ull, 7505071565340620252ull}}, {{6513958316570301852ull, 7817205461966827161ull, 11021315413738027502ull, 4690669728337887657ull}}, {{12754133914140265219ull, 548134790603758143ull, 18388330285599922282ull, 5863337160422359571ull}}, {{11330981374247943619ull, 9908540525109473487ull, 18373726838572514948ull, 7329171450527949464ull}}, {{9552040699382541620ull, 12385675656386841859ull, 4520414474506092069ull, 9161464313159936831ull}}, {{3664182427900394561ull, 10046890294455470114ull, 9742788074207389399ull, 5725915195724960519ull}}, {{13803600071730269009ull, 7946926849641949738ull, 7566799074331848845ull, 7157393994656200649ull}}, {{8031128052808060453ull, 14545344580479825077ull, 14070184861342198960ull, 8946742493320250811ull}}, {{7325298042218731735ull, 9090840362799890673ull, 6488022529125180398ull, 5591714058325156757ull}}, {{13768308571200802573ull, 2140178416645087533ull, 12721714179833863402ull, 6989642572906445946ull}}, {{3375327658718839504ull, 11898595057661135225ull, 6678770687937553444ull, 8737053216133057433ull}}, {{13638794832767744450ull, 16659993947892985323ull, 15703446726029440662ull, 5460658260083160895ull}}, {{12436807522532292658ull, 11601620398011455846ull, 15017622389109412924ull, 6825822825103951119ull}}, {{6322637366310590015ull, 14502025497514319808ull, 14160341967959378251ull, 8532278531379938899ull}}, {{3951648353944118760ull, 6757922926732755928ull, 6544370720760917455ull, 5332674082112461812ull}}, {{4939560442430148449ull, 3835717639988557006ull, 8180463400951146819ull, 6665842602640577265ull}}, {{15397822589892461369ull, 182961031558308353ull, 14837265269616321428ull, 8332303253300721581ull}}, {{2706110091041706500ull, 9337722681578718529ull, 11579133802723894844ull, 5207689533312950988ull}}, {{7994323632229521029ull, 11672153351973398161ull, 14473917253404868555ull, 6509611916641188735ull}}, {{14604590558714289190ull, 9978505671539359797ull, 13480710548328697790ull, 8137014895801485919ull}}, {{11433712108410124696ull, 1624880026284711969ull, 15342973120346517975ull, 5085634309875928699ull}}, {{457082080230492158ull, 15866158088138053674ull, 14567030382005759564ull, 6357042887344910874ull}}, {{9794724637142891005ull, 1385953536463015476ull, 8985415940652423648ull, 7946303609181138593ull}}, {{15345074935069082686ull, 866220960289384672ull, 17145100008976234540ull, 4966439755738211620ull}}, {{734599595126801742ull, 1082776200361730841ull, 2984630937510741559ull, 6208049694672764526ull}}, {{5529935512335890081ull, 15188528305734327263ull, 12954160708743202756ull, 7760062118340955657ull}}, {{10373738722851013157ull, 269458154229178731ull, 1178821415323419867ull, 4850038823963097286ull}}, {{8355487385136378542ull, 14171880748068637126ull, 10696898806009050641ull, 6062548529953871607ull}}, {{1220987194565697370ull, 3879792879803632696ull, 8759437489083925398ull, 7578185662442339509ull}}, {{763116996603560856ull, 16259928605159434147ull, 7780491439891147325ull, 4736366039026462193ull}}, {{14788954301036614782ull, 6489852701167128971ull, 14337300318291322061ull, 5920457548783077741ull}}, {{13874506857868380573ull, 12724001894886299118ull, 4086567342581988864ull, 7400571935978847177ull}}, {{4059880767740349955ull, 7952501184303936949ull, 14083319635182212800ull, 4625357459986779485ull}}, {{9686536978102825347ull, 9940626480379921186ull, 3769091488695602288ull, 5781696824983474357ull}}, {{2884799185773755876ull, 12425783100474901483ull, 9323050379296890764ull, 7227121031229342946ull}}, {{17441057037499358557ull, 15532228875593626853ull, 2430440937266337647ull, 9033901289036678683ull}}, {{13206503657650793050ull, 16625172074887098639ull, 17659926650287318693ull, 5646188305647924176ull}}, {{11896443553636103408ull, 6946407038326709587ull, 3628164239149596751ull, 7057735382059905221ull}}, {{10258868423617741356ull, 4071322779480999080ull, 9146891317364383843ull, 8822169227574881526ull}}, {{6411792764761088348ull, 238733727961930473ull, 1105121054925351998ull, 5513855767234300954ull}}, {{12626426974378748339ull, 9521789196807188899ull, 10604773355511465805ull, 6892319709042876192ull}}, {{11171347699546047519ull, 16513922514436374028ull, 13255966694389332256ull, 8615399636303595240ull}}, {{16205464349071055508ull, 10321201571522733767ull, 8284979183993332660ull, 5384624772689747025ull}}, {{15645144417911431481ull, 12901501964403417209ull, 14967909998419053729ull, 6730780965862183781ull}}, {{5721372467107125639ull, 2291819400222107800ull, 4874829442741653450ull, 8413476207327729727ull}}, {{3575857791941953524ull, 6044073143566205279ull, 9964297429354615262ull, 5258422629579831079ull}}, {{18304880295209605617ull, 16778463466312532406ull, 7843685768265881173ull, 6573028286974788849ull}}, {{13657728332157231214ull, 7138021277608501796ull, 14416293228759739371ull, 8216285358718486061ull}}, {{17759452244453045317ull, 2155420289291619670ull, 11316026277188531059ull, 5135178349199053788ull}}, {{12975943268711530838ull, 16529333416896688300ull, 14145032846485663823ull, 6418972936498817235ull}}, {{16219929085889413547ull, 16049980752693472471ull, 13069605039679691875ull, 8023716170623521544ull}}, {{17054984706321965323ull, 7725394961219726342ull, 8168503149799807422ull, 5014822606639700965ull}}, {{12095358846047680846ull, 433371664669882120ull, 14822314955677147182ull, 6268528258299626206ull}}, {{15119198557559601057ull, 9765086617692128458ull, 9304521657741658169ull, 7835660322874532758ull}}, {{14061185116902138565ull, 17632394182126050046ull, 1203640017661148451ull, 4897287701796582974ull}}, {{8353109359272897398ull, 17428806709230174654ull, 10727922058931211372ull, 6121609627245728717ull}}, {{1218014662236345939ull, 3339264312828166702ull, 18021588592091402120ull, 7652012034057160896ull}}, {{14596317219179879924ull, 2087040195517604188ull, 11263492870057126325ull, 4782507521285725560ull}}, {{18245396523974849905ull, 7220486262824393139ull, 14079366087571407906ull, 5978134401607156950ull}}, {{18195059636541174477ull, 18248979865385267232ull, 8375835572609484074ull, 7472668002008946188ull}}, {{11371912272838234049ull, 16017298434293179924ull, 14458269269735703354ull, 4670417501255591367ull}}, {{14214890341047792561ull, 10798251006011699097ull, 13461150568742241289ull, 5838021876569489209ull}}, {{3933554871027576989ull, 18109499775942011776ull, 2991380155645637899ull, 7297527345711861512ull}}, {{4916943588784471236ull, 18025188701500126816ull, 3739225194557047374ull, 9121909182139826890ull}}, {{3073089742990294522ull, 6654056920010191356ull, 6948701765025542513ull, 5701193238837391806ull}}, {{3841362178737868153ull, 12929257168440127099ull, 17909249243136703949ull, 7126491548546739757ull}}, {{190016704994947287ull, 2326513405267995162ull, 8551503498638716225ull, 8908114435683424697ull}}, {{4730446459049229959ull, 12983285924360966736ull, 16873904732717667400ull, 5567571522302140435ull}}, {{5913058073811537448ull, 16229107405451208420ull, 16480694897469696346ull, 6959464402877675544ull}}, {{7391322592264421810ull, 11063012219959234717ull, 2154124548127568817ull, 8699330503597094431ull}}, {{6925419629378957583ull, 18443597683542991458ull, 8263856870220812366ull, 5437081564748184019ull}}, {{17880146573578472787ull, 13831125067573963514ull, 5718135069348627554ull, 6796351955935230024ull}}, {{13126811180118315176ull, 8065534297612678585ull, 7147668836685784443ull, 8495439944919037530ull}}, {{1286727959932865129ull, 2735115926794230164ull, 9078979041356003181ull, 5309649965574398456ull}}, {{1608409949916081411ull, 8030580926920175609ull, 11348723801695003976ull, 6637062456967998070ull}}, {{6622198455822489668ull, 10038226158650219511ull, 4962532715263979162ull, 8296328071209997588ull}}, {{11056403062530137899ull, 10885577367583775098ull, 12324954983894762784ull, 5185205044506248492ull}}, {{4597131791307896565ull, 13606971709479718873ull, 15406193729868453480ull, 6481506305632810615ull}}, {{10358100757562258610ull, 17008714636849648591ull, 14646056143908178946ull, 8101882882041013269ull}}, {{13391342001117493488ull, 15242132666458418273ull, 11459628099156305793ull, 5063676801275633293ull}}, {{2904119446114703147ull, 5217607777790859130ull, 489477068663218530ull, 6329596001594541617ull}}, {{12853521344498154742ull, 15745381759093349720ull, 5223532354256411066ull, 7911995001993177021ull}}, {{8033450840311346714ull, 14452549617860731479ull, 5570550730623950868ull, 4944996876245735638ull}}, {{5430127531961795488ull, 18065687022325914349ull, 16186560450134714393ull, 6181246095307169547ull}}, {{11399345433379632264ull, 8747050722625229224ull, 15621514544241005088ull, 7726557619133961934ull}}, {{7124590895862270165ull, 5466906701640768265ull, 5151760571723240276ull, 4829098511958726209ull}}, {{13517424638255225611ull, 6833633377050960331ull, 11051386733081438249ull, 6036373139948407761ull}}, {{12285094779391644109ull, 13153727739741088318ull, 18425919434779185715ull, 7545466424935509701ull}}, {{3066498218692389664ull, 5915236828124486247ull, 13822042655950685024ull, 4715916515584693563ull}}, {{17668180828647650792ull, 7394046035155607808ull, 12665867301510968376ull, 5894895644480866954ull}}, {{3638481962100011874ull, 9242557543944509761ull, 6608962090033934662ull, 7368619555601083693ull}}, {{9159788471052402747ull, 2329824893075861393ull, 12872888630969806232ull, 9210774444501354616ull}}, {{17254082840476221477ull, 1456140558172413370ull, 8045555394356128895ull, 5756734027813346635ull}}, {{12344231513740501038ull, 15655233752997680425ull, 5445258224517773214ull, 7195917534766683294ull}}, {{1595231336893462585ull, 10345670154392324724ull, 16029944817501992326ull, 8994896918458354117ull}}, {{10220391622413189924ull, 1854357828067815048ull, 12324558520152439156ull, 5621810574036471323ull}}, {{12775489528016487405ull, 2317947285084768810ull, 10794012131763161041ull, 7027263217545589154ull}}, {{6745989873165833448ull, 7509120124783348917ull, 4269143127849175493ull, 8784079021931986443ull}}, {{6522086679942339857ull, 6999043087203287025ull, 362371445692040731ull, 5490049388707491527ull}}, {{12764294368355312725ull, 4137117840576720877ull, 14288022362397214626ull, 6862561735884364408ull}}, {{2120309905161977195ull, 14394769337575676905ull, 17860027952996518282ull, 8578202169855455510ull}}, {{12854408736794705507ull, 13608416854412185969ull, 6550831452195436022ull, 5361376356159659694ull}}, {{2232952865711218171ull, 7787149031160456654ull, 17411911352099070836ull, 6701720445199574617ull}}, {{12014563118993798522ull, 9733936288950570817ull, 7929831134841674833ull, 8377150556499468272ull}}, {{591572921730042221ull, 17612925226662576521ull, 4956144459276046770ull, 5235719097812167670ull}}, {{5351152170589940680ull, 12792784496473444843ull, 15418552610949834271ull, 6544648872265209587ull}}, {{2077254194810037945ull, 11379294602164418150ull, 14661504745259904935ull, 8180811090331511984ull}}, {{15133341927038437428ull, 14029588153993843199ull, 9163440465787440584ull, 5113006931457194990ull}}, {{14304991390370658881ull, 17536985192492303999ull, 2230928545379524922ull, 6391258664321493738ull}}, {{13269553219535935697ull, 12697859453760604191ull, 12012032718579181961ull, 7989073330401867172ull}}, {{15210999789851041667ull, 1018633130959295763ull, 16730892485966764534ull, 4993170831501166982ull}}, {{14402063718886414179ull, 10496663450553895512ull, 11690243570603679859ull, 6241463539376458728ull}}, {{18002579648608017724ull, 8509143294764981486ull, 14612804463254599824ull, 7801829424220573410ull}}, {{6639926261952623174ull, 5318214559228113429ull, 13744688807961512794ull, 4876143390137858381ull}}, {{12911593845868166871ull, 15871140235889917594ull, 3345802954669727280ull, 6095179237672322977ull}}, {{6916120270480432781ull, 1392181221152845377ull, 8793939711764547005ull, 7618974047090403721ull}}, {{15851790215118740248ull, 3175956272434222312ull, 17025427365921311638ull, 4761858779431502325ull}}, {{1367993695188873694ull, 13193317377397553699ull, 7446726152119475835ull, 5952323474289377907ull}}, {{15545050174268255829ull, 11879960703319554219ull, 4696721671721956890ull, 7440404342861722384ull}}, {{7409813349703965942ull, 12036661458002109291ull, 2935451044826223056ull, 4650252714288576490ull}}, {{4650580668702569523ull, 15045826822502636614ull, 12892685842887554628ull, 5812815892860720612ull}}, {{15036597872732987711ull, 360539454418744151ull, 16115857303609443286ull, 7266019866075900765ull}}, {{14184061322488846735ull, 9674046354878205997ull, 6309763574229640395ull, 9082524832594875957ull}}, {{11170881335769223162ull, 3740435962585184796ull, 6249445243107219199ull, 5676578020371797473ull}}, {{13963601669711528952ull, 63858934804093091ull, 12423492572311411903ull, 7095722525464746841ull}}, {{12842816068712023286ull, 13914881723787280076ull, 1694307660107101166ull, 8869653156830933552ull}}, {{17250132079799790362ull, 4085115058939662143ull, 1058942287566938229ull, 5543533223019333470ull}}, {{16950979081322350048ull, 9718079842101965583ull, 10547049896313448594ull, 6929416528774166837ull}}, {{16577037833225549656ull, 2924227765772681171ull, 17795498388819198647ull, 8661770660967708546ull}}, {{8054805636552274583ull, 8745171381249007588ull, 15733872511439387058ull, 5413606663104817841ull}}, {{10068507045690343229ull, 1708092189706483677ull, 5832282584017070111ull, 6767008328881022302ull}}, {{17197319825540316940ull, 15970173292415268308ull, 16513725266876113446ull, 8458760411101277877ull}}, {{1524952854107922280ull, 5369672289332154789ull, 12626921301011264856ull, 5286725256938298673ull}}, {{6517877086062290754ull, 6712090361665193486ull, 1948593570981917358ull, 6608406571172873342ull}}, {{17370718394432639250ull, 17613484988936267665ull, 11659114000582172505ull, 8260508213966091677ull}}, {{3939169968879317675ull, 4090899090444085435ull, 9592789259577551768ull, 5162817633728807298ull}}, {{312276442671759190ull, 5113623863055106794ull, 2767614537617163902ull, 6453522042161009123ull}}, {{9613717590194474795ull, 15615401865673659300ull, 17294576227303618589ull, 8066902552701261403ull}}, {{15231945530726322555ull, 12065469175259731014ull, 8503267132851067666ull, 5041814095438288377ull}}, {{9816559876553127386ull, 5858464432219887960ull, 15240769934491222487ull, 6302267619297860471ull}}, {{12270699845691409232ull, 2711394521847472046ull, 14439276399686640205ull, 7877834524122325589ull}}, {{3057501385129742866ull, 4000464585368363981ull, 11330390759017844080ull, 4923646577576453493ull}}, {{8433562749839566487ull, 5000580731710454976ull, 327930393490141388ull, 6154558221970566867ull}}, {{10541953437299458108ull, 6250725914638068720ull, 14244971047144840447ull, 7693197777463208583ull}}, {{6588720898312161318ull, 10824232724289874806ull, 15820635932106607135ull, 4808248610914505364ull}}, {{17459273159744977455ull, 8918604886934955603ull, 1329050841423707303ull, 6010310763643131706ull}}, {{17212405431253833915ull, 6536570090241306600ull, 10884685588634409937ull, 7512888454553914632ull}}, {{10757753394533646197ull, 15614571352469286385ull, 6802928492896506210ull, 4695555284096196645ull}}, {{18058877761594445650ull, 10294842153731832173ull, 13115346634548020667ull, 5869444105120245806ull}}, {{8738539146710893351ull, 8256866673737402313ull, 7170811256330250026ull, 7336805131400307258ull}}, {{15534859951816004592ull, 1097711305316977083ull, 18186886107267588341ull, 9171006414250384072ull}}, {{7403444460671308918ull, 2991912575036804629ull, 11366803817042242713ull, 5731879008906490045ull}}, {{13865991594266524052ull, 8351576737223393690ull, 373446716020639679ull, 7164848761133112557ull}}, {{8109117455978379257ull, 5827784903101854209ull, 5078494413453187503ull, 8956060951416390696ull}}, {{16597413456054956796ull, 10559894592079740736ull, 3174059008408242189ull, 5597538094635244185ull}}, {{2300022746359144378ull, 17811554258527063825ull, 8579259778937690640ull, 6996922618294055231ull}}, {{7486714451376318377ull, 3817698749449278165ull, 6112388705244725397ull, 8746153272867569039ull}}, {{6985039541323892938ull, 4691904727619492805ull, 10737771968419035229ull, 5466345795542230649ull}}, {{13342985445082254076ull, 10476566927951753910ull, 18033900978951181940ull, 6832932244427788311ull}}, {{7455359769498041787ull, 13095708659939692388ull, 17930690205261589521ull, 8541165305534735389ull}}, {{13882971892791051925ull, 1267288884821225886ull, 13512524387502187403ull, 5338228315959209618ull}}, {{8130342829134039098ull, 15419169161308696070ull, 7667283447522958445ull, 6672785394949012023ull}}, {{939556499562773065ull, 5438903396353706376ull, 4972418290976310153ull, 8340981743686265029ull}}, {{587222812226733166ull, 14928529668789536245ull, 5413604441073887797ull, 5213113589803915643ull}}, {{5345714533710804361ull, 4825604030704756594ull, 2155319532914971843ull, 6516391987254894554ull}}, {{15905515203993281259ull, 1420319019953557838ull, 11917521452998490612ull, 8145489984068618192ull}}, {{5329260984068412883ull, 10111071424325749457ull, 7448450908124056632ull, 5090931240042886370ull}}, {{11273262248512904008ull, 12638839280407186821ull, 87191598300294982ull, 6363664050053607963ull}}, {{256519755358966297ull, 6575177063654207719ull, 13944047553157532440ull, 7954580062567009953ull}}, {{7077853874740435792ull, 4109485664783879824ull, 1797500693082375919ull, 4971612539104381221ull}}, {{8847317343425544740ull, 525171062552461876ull, 6858561884780357803ull, 6214515673880476526ull}}, {{11059146679281930925ull, 14491521883472741057ull, 17796574392830223061ull, 7768144592350595657ull}}, {{18441181720619676588ull, 11363044186384157112ull, 4205329967877807557ull, 4855090370219122286ull}}, {{4604733077065044119ull, 368747177698032679ull, 14480034496702035255ull, 6068862962773902857ull}}, {{1144230327903917245ull, 14295992027404704561ull, 4264985065595380356ull, 7586078703467378572ull}}, {{12244359001008418038ull, 18158367053982716158ull, 11888987702851888530ull, 4741299189667111607ull}}, {{6082076714405746740ull, 13474586780623619390ull, 10249548610137472759ull, 5926623987083889509ull}}, {{16825967929861959232ull, 12231547457352136333ull, 17423621781099228853ull, 7408279983854861886ull}}, {{12822072965377418472ull, 9950560170058779160ull, 6278077594759630129ull, 4630174989909288679ull}}, {{16027591206721773090ull, 17049886231000861854ull, 3235910975022149757ull, 5787718737386610849ull}}, {{10811116971547440555ull, 7477299733468913606ull, 8656574737205075101ull, 7234648421733263561ull}}, {{4290524177579524885ull, 13958310685263529912ull, 15432404439933731780ull, 9043310527166579451ull}}, {{2681577610987203054ull, 17947316215144482003ull, 7339409765744888410ull, 5652069079479112157ull}}, {{17187030069016167529ull, 13210773232075826695ull, 13785948225608498417ull, 7065086349348890196ull}}, {{16872101567842821507ull, 2678408484812619657ull, 17232435282010623022ull, 8831357936686112745ull}}, {{3627534452260681586ull, 15509063358290050998ull, 3852743023615557532ull, 5519598710428820466ull}}, {{13757790102180627790ull, 939585124153012131ull, 14039300816374222724ull, 6899498388036025582ull}}, {{12585551609298396834ull, 1174481405191265164ull, 8325753983613002597ull, 8624372985045031978ull}}, {{17089341792666273829ull, 3039893887458234679ull, 9815282258185514527ull, 5390233115653144986ull}}, {{16749991222405454383ull, 17634925414604957061ull, 3045730785877117350ull, 6737791394566431233ull}}, {{7102430972724654266ull, 12820284731401420519ull, 8418849500773784592ull, 8422239243208039041ull}}, {{11356548385593990772ull, 8012677957125887824ull, 16790995984052085130ull, 5263899527005024400ull}}, {{14195685481992488465ull, 792475409552583972ull, 2542000906355554797ull, 6579874408756280501ull}}, {{17744606852490610582ull, 5602280280368117869ull, 7789187151371831400ull, 8224843010945350626ull}}, {{13396222292020325566ull, 3501425175230073668ull, 9479927988034782529ull, 5140526881840844141ull}}, {{16745277865025406957ull, 8988467487464979989ull, 16461596003470866065ull, 6425658602301055176ull}}, {{7096539275999594984ull, 15847270377758612891ull, 2130250930629030965ull, 8032073252876318971ull}}, {{2129494038286052913ull, 12210386995312827009ull, 17472307896139002017ull, 5020045783047699356ull}}, {{7273553566284954046ull, 1427925688858870049ull, 3393640796464200906ull, 6275057228809624196ull}}, {{13703627976283580461ull, 11008279147928363369ull, 4242050995580251132ull, 7843821536012030245ull}}, {{1647238457536155932ull, 16103546504310002914ull, 4957124881451350909ull, 4902388460007518903ull}}, {{11282420108774970723ull, 6294375075105339930ull, 1584720083386800733ull, 6127985575009398629ull}}, {{4879653099113937596ull, 12479654862309062817ull, 6592586122660888820ull, 7659981968761748286ull}}, {{14578998233014680758ull, 17023156325797940068ull, 17955424381945219224ull, 4787488730476092678ull}}, {{18223747791268350947ull, 2832201333537873469ull, 13220908440576748223ull, 5984360913095115848ull}}, {{8944626683803274971ull, 17375309722204505549ull, 16526135550720935278ull, 7480451141368894810ull}}, {{7896234686590740809ull, 6247882557950428064ull, 14940520737627972453ull, 4675281963355559256ull}}, {{9870293358238426011ull, 12421539215865422984ull, 228906848325413950ull, 5844102454194449071ull}}, {{12337866697798032514ull, 6303551982977002922ull, 14121191615688931150ull, 7305128067743061338ull}}, {{6198961335392764835ull, 17102812015576029461ull, 8428117482756388129ull, 9131410084678826673ull}}, {{6180193843834171974ull, 3771728482093936557ull, 16796788472791212341ull, 5707131302924266670ull}}, {{12336928323220102871ull, 9326346621044808600ull, 11772613554134239618ull, 7133914128655333338ull}}, {{15421160404025128589ull, 2434561239451234942ull, 5492394905813023715ull, 8917392660819166673ull}}, {{5026539234088317464ull, 17662501839152879503ull, 14961961862201609581ull, 5573370413011979170ull}}, {{1671488024183008926ull, 8243069243658935667ull, 9479080290897236169ull, 6966713016264973963ull}}, {{15924418085510924870ull, 14915522573001057487ull, 7237164345194157307ull, 8708391270331217454ull}}, {{16870290331085409900ull, 7016358598911966977ull, 18358285771028512029ull, 5442744543957010908ull}}, {{7252804858574598662ull, 13382134267067346626ull, 4501113140076088420ull, 6803430679946263636ull}}, {{18289378110073024136ull, 16727667833834183282ull, 5626391425095110525ull, 8504288349932829545ull}}, {{16042547337223027989ull, 12760635405360058503ull, 15045709686752913838ull, 5315180218708018465ull}}, {{15441498153101397082ull, 6727422219845297321ull, 4972079053158978586ull, 6643975273385023082ull}}, {{5466814636094582641ull, 17632649811661397460ull, 15438470853303499040ull, 8304969091731278852ull}}, {{12640131184413889959ull, 11020406132288373412ull, 425672246459911092ull, 5190605682332049283ull}}, {{15800163980517362448ull, 13775507665360466765ull, 14367148363357052577ull, 6488257102915061603ull}}, {{5915146920364539348ull, 3384326526418419745ull, 13347249435768927818ull, 8110321378643827004ull}}, {{15226181871296306853ull, 6726890097438900244ull, 17565402934210355694ull, 5068950861652391877ull}}, {{585983265410831950ull, 17631984658653401114ull, 8121695612480780905ull, 6336188577065489847ull}}, {{9955851118618315745ull, 8204922768034587680ull, 5540433497173588228ull, 7920235721331862309ull}}, {{6222406949136447341ull, 14351448766876393108ull, 5768613944947186594ull, 4950147325832413943ull}}, {{7778008686420559176ull, 8715938921740715577ull, 2599081412756595339ull, 6187684157290517429ull}}, {{14334196876453086874ull, 6283237633748506567ull, 7860537784373132078ull, 7734605196613146786ull}}, {{15876402075424261152ull, 17762081576374980316ull, 9524522133660595452ull, 4834128247883216741ull}}, {{1398758520570774824ull, 3755857896759173780ull, 16517338685503132220ull, 6042660309854020926ull}}, {{1748448150713468530ull, 4694822370948967225ull, 11423301320024139467ull, 7553325387317526158ull}}, {{12621995140264387592ull, 628420972629410563ull, 2527877306587699263ull, 4720828367073453849ull}}, {{11165807906903096585ull, 14620584271068926916ull, 7771532651662011982ull, 5901035458841817311ull}}, {{13957259883628870732ull, 9052358301981382837ull, 5102729796150127074ull, 7376294323552271639ull}}, {{3611516799253924702ull, 2092075840621952739ull, 1766726226760270939ull, 9220367904440339549ull}}, {{18398099064029560603ull, 17448448464884578125ull, 3410046900938863288ull, 5762729940275212218ull}}, {{9162565774754787042ull, 3363816507396171041ull, 13485930663028354919ull, 7203412425344015272ull}}, {{16064893236870871706ull, 18039828689527377513ull, 16857413328785443648ull, 9004265531680019090ull}}, {{3123029245403212961ull, 11274892930954610946ull, 15147569348918290184ull, 5627665957300011931ull}}, {{13127158593608792009ull, 14093616163693263682ull, 14322775667720474826ull, 7034582446625014914ull}}, {{7185576205156214203ull, 8393648167761803795ull, 8680097547795817725ull, 8793228058281268643ull}}, {{2185142119008939925ull, 7551873114064821324ull, 3119217958158692126ull, 5495767536425792902ull}}, {{2731427648761174906ull, 216469355726250847ull, 13122394484553140966ull, 6869709420532241127ull}}, {{17249342616233632344ull, 9493958731512589366ull, 11791307087264038303ull, 8587136775665301409ull}}, {{6169153116718632311ull, 12851253234836450210ull, 452037901898942083ull, 5366960484790813381ull}}, {{16934813432753066197ull, 11452380525118174858ull, 5176733395801065508ull, 6708700605988516726ull}}, {{11945144754086556938ull, 14315475656397718573ull, 15694288781606107693ull, 8385875757485645907ull}}, {{9771558480517792039ull, 11253015294462268060ull, 7503087479290123356ull, 5241172348428528692ull}}, {{12214448100647240048ull, 14066269118077835075ull, 9378859349112654195ull, 6551465435535660865ull}}, {{10656374107381662156ull, 12971150379169905940ull, 16335260204818205648ull, 8189331794419576081ull}}, {{15883605853968314656ull, 8106968986981191212ull, 3292008600370296674ull, 5118332371512235051ull}}, {{1407763243750841703ull, 910339196871713208ull, 17950068805745034555ull, 6397915464390293813ull}}, {{1759704054688552129ull, 14972982051371805222ull, 8602527951899129481ull, 7997394330487867267ull}}, {{14934873089462508793ull, 2440584754466296407ull, 3070736960723261974ull, 4998371456554917042ull}}, {{14056905343400748087ull, 12274102979937646317ull, 13061793237758853275ull, 6247964320693646302ull}}, {{3736073623968771397ull, 10730942706494669993ull, 7103869510343790786ull, 7809955400867057878ull}}, {{13864261061048951883ull, 11318525209986556649ull, 18274976499247032953ull, 4881222125541911173ull}}, {{3495268271029026142ull, 313098457201032100ull, 9008662568776627480ull, 6101527656927388967ull}}, {{4369085338786282677ull, 391373071501290125ull, 6649142192543396446ull, 7626909571159236209ull}}, {{5036521345955120625ull, 14079666224970470040ull, 15684928916408092538ull, 4766818481974522630ull}}, {{6295651682443900782ull, 8376210744358311742ull, 10382789108655339865ull, 5958523102468153288ull}}, {{17092936639909651785ull, 15081949448875277581ull, 12978486385819174831ull, 7448153878085191610ull}}, {{12988928409157226318ull, 16343747433188130344ull, 12723240009564372173ull, 4655096173803244756ull}}, {{16236160511446532897ull, 6594626236202999218ull, 15904050011955465217ull, 5818870217254055945ull}}, {{11071828602453390313ull, 12854968813681136927ull, 6045004459662167809ull, 7273587771567569932ull}}, {{9228099734639349987ull, 2233652961819257447ull, 7556255574577709762ull, 9091984714459462415ull}}, {{12685091361790675598ull, 6007719119564423808ull, 11640188761752150457ull, 5682490446537164009ull}}, {{15856364202238344498ull, 12121334917882917664ull, 715177896908024359ull, 7103113058171455012ull}}, {{1373711179088379006ull, 10539982628926259177ull, 893972371135030449ull, 8878891322714318765ull}}, {{12387784532998706639ull, 18116704189147381745ull, 2864575741173087982ull, 5549307076696449228ull}}, {{1649672610966219587ull, 13422508199579451374ull, 3580719676466359978ull, 6936633845870561535ull}}, {{11285462800562550291ull, 7554763212619538409ull, 18310957650865113685ull, 8670792307338201918ull}}, {{135885222710512076ull, 7027570017100905458ull, 6832662513363308149ull, 5419245192086376199ull}}, {{9393228565242915903ull, 13396148539803519726ull, 3929142123276747282ull, 6774056490107970249ull}}, {{2518163669698869071ull, 7521813637899623850ull, 9523113672523322007ull, 8467570612634962811ull}}, {{6185538311989181073ull, 11618662551328346762ull, 3646103036113382302ull, 5292231632896851757ull}}, {{16955294926841252150ull, 5299956152305657644ull, 9169314813569115782ull, 6615289541121064696ull}}, {{2747374584842013571ull, 15848317227236847864ull, 11461643516961394727ull, 8269111926401330870ull}}, {{1717109115526258482ull, 16822727294664111771ull, 2551841179673483800ull, 5168194954000831794ull}}, {{15981444449689986814ull, 2581665044620588097ull, 12413173511446630559ull, 6460243692501039742ull}}, {{6141747506830319806ull, 17062139361057898834ull, 6293094852453512390ull, 8075304615626299678ull}}, {{8450278210196337783ull, 6052151082233798867ull, 17768242338065608956ull, 5047065384766437298ull}}, {{5951161744318034324ull, 7565188852792248584ull, 12986930885727235387ull, 6308831730958046623ull}}, {{7438952180397542905ull, 4844800047562922826ull, 11621977588731656330ull, 7886039663697558279ull}}, {{9261031131175852220ull, 7639686048154214670ull, 14181265020598367062ull, 4928774789810973924ull}}, {{2352916877115039467ull, 326235523337992530ull, 17726581275747958828ull, 6160968487263717405ull}}, {{12164518133248575142ull, 407794404172490662ull, 8323168539402784823ull, 7701210609079646757ull}}, {{2991137814852971560ull, 7172400530248888520ull, 7507823346340434466ull, 4813256630674779223ull}}, {{3738922268566214449ull, 18188872699665886458ull, 4773093164498155178ull, 6016570788343474029ull}}, {{13897024872562543870ull, 13512718837727582264ull, 10578052474050081877ull, 7520713485429342536ull}}, {{8685640545351589919ull, 10751292282793432867ull, 6611282796281301173ull, 4700445928393339085ull}}, {{6245364663262099494ull, 18050801371919178988ull, 12875789513779014370ull, 5875557410491673856ull}}, {{7806705829077624368ull, 13340129678044197927ull, 16094736892223767963ull, 7344446763114592320ull}}, {{5146696267919642556ull, 12063476079127859505ull, 1671677041570158338ull, 9180558453893240401ull}}, {{14745900213518246357ull, 12151358567882300094ull, 12574013197049818721ull, 5737849033683275250ull}}, {{9209003230043032139ull, 1354140154570711406ull, 6494144459457497594ull, 7172311292104094063ull}}, {{2287882000699014365ull, 10916047230068165066ull, 3505994555894484088ull, 8965389115130117579ull}}, {{6041612268864271882ull, 6822529518792603166ull, 18332147661929910219ull, 5603368196956323486ull}}, {{16775387372935115661ull, 3916475880063366053ull, 13691812540557611966ull, 7004210246195404358ull}}, {{7134176160886730864ull, 14118966886933983375ull, 7891393638842239149ull, 8755262807744255448ull}}, {{11376389128195288646ull, 11130197313547433561ull, 4932121024276399468ull, 5472039254840159655ull}}, {{385428354961947096ull, 13912746641934291952ull, 1553465261918111431ull, 6840049068550199569ull}}, {{481785443702433869ull, 12779247283990477036ull, 6553517595825027193ull, 8550061335687749461ull}}, {{9524487939168796977ull, 1069500524852966291ull, 6401791506604335948ull, 5343788334804843413ull}}, {{7293923905533608317ull, 1336875656066207864ull, 12613925401682807839ull, 6679735418506054266ull}}, {{9117404881917010396ull, 15506152625364923542ull, 6544034715248733990ull, 8349669273132567833ull}}, {{1086692032770743593ull, 5079659372425689310ull, 15619236743098928504ull, 5218543295707854895ull}}, {{10581737077818205300ull, 6349574215532111637ull, 14912359910446272726ull, 6523179119634818619ull}}, {{17838857365700144528ull, 17160339806269915354ull, 14028763869630453003ull, 8153973899543523274ull}}, {{15760971871989978234ull, 8419369369705003144ull, 13379663436946421031ull, 5096233687214702046ull}}, {{1254470766277921177ull, 5912525693703866027ull, 7501207259328250481ull, 6370292109018377558ull}}, {{15403146513129565183ull, 12002343135557220437ull, 153137037305537293ull, 7962865136272971948ull}}, {{11932809579919672192ull, 9807307468936956725ull, 9319082685170736616ull, 4976790710170607467ull}}, {{1080953919617426527ull, 12259134336171195907ull, 7037167338036032866ull, 6220988387713259334ull}}, {{15186250454803946871ull, 6100545883359219075ull, 18019831209399816891ull, 7776235484641574167ull}}, {{7185563525038772843ull, 1506998167885817970ull, 18179923533515967413ull, 4860147177900983854ull}}, {{18205326443153241861ull, 6495433728284660366ull, 13501532380040183458ull, 6075183972376229818ull}}, {{13533286017086776518ull, 17342664197210601266ull, 7653543438195453514ull, 7593979965470287273ull}}, {{13069989779106623228ull, 15450851141684013695ull, 16312679694940628206ull, 4746237478418929545ull}}, {{11725801205455891131ull, 10090191890250241311ull, 6555791563393621546ull, 5932796848023661932ull}}, {{10045565488392476010ull, 3389367825958025831ull, 8194739454242026933ull, 7415996060029577415ull}}, {{13196007457886379362ull, 4424197900437460096ull, 12039241186542348689ull, 4634997537518485884ull}}, {{16495009322357974203ull, 10141933393974213024ull, 15049051483177935861ull, 5793746921898107355ull}}, {{2172017579237916137ull, 17289102760895154185ull, 14199628335545031922ull, 7242183652372634194ull}}, {{7326707992474783075ull, 12388006414264166923ull, 8526163382576514095ull, 9052729565465792743ull}}, {{2273349486083045470ull, 14660033036556186183ull, 12246381141751403165ull, 5657955978416120464ull}}, {{16676744912885970550ull, 4489983240413069016ull, 15307976427189253957ull, 7072444973020150580ull}}, {{2399187067397911571ull, 10224165068943724175ull, 688226460277015830ull, 8840556216275188226ull}}, {{8417020944764776588ull, 1778417149662439705ull, 5041827556100522798ull, 5525347635171992641ull}}, {{15132962199383358639ull, 11446393473932825439ull, 10913970463553041401ull, 6906684543964990801ull}}, {{14304516730801810395ull, 472933787133868087ull, 18254149097868689656ull, 8633355679956238501ull}}, {{15857851984392213353ull, 295583616958667554ull, 13714686195381624987ull, 5395847299972649063ull}}, {{10598942943635490883ull, 14204537576480498155ull, 12531671725799643329ull, 6744809124965811329ull}}, {{8636992661116975699ull, 3920613915318458982ull, 1829531601967390450ull, 8431011406207264162ull}}, {{786434394770721908ull, 7062069715501424768ull, 5755143269657006935ull, 5269382128879540101ull}}, {{983042993463402385ull, 4215901125949393056ull, 11805615105498646573ull, 6586727661099425126ull}}, {{1228803741829252982ull, 9881562425864129224ull, 5533646845018532408ull, 8233409576374281408ull}}, {{768002338643283114ull, 6175976516165080765ull, 3458529278136582755ull, 5145880985233925880ull}}, {{5571688941731491796ull, 3108284626778963052ull, 4323161597670728444ull, 6432351231542407350ull}}, {{6964611177164364745ull, 3885355783473703815ull, 14627324033943186363ull, 8040439039428009187ull}}, {{11270411013368809822ull, 122504355457370932ull, 6836234512000797525ull, 5025274399642505742ull}}, {{14088013766711012277ull, 4764816462749101569ull, 17768665176855772714ull, 6281592999553132177ull}}, {{3774959153106601634ull, 15179392615291152770ull, 8375773415787552180ull, 7851991249441415222ull}}, {{6971035489119013926ull, 263748347702194673ull, 623172366439832209ull, 4907494530900884514ull}}, {{13325480379826155311ull, 4941371453055131245ull, 10002337494904566069ull, 6134368163626105642ull}}, {{2821792419500530426ull, 10788400334746301961ull, 3279549831775931778ull, 7667960204532632053ull}}, {{13292835308256301277ull, 11354436227643826629ull, 4355561654073651313ull, 4792475127832895033ull}}, {{2780986080038212884ull, 357987229272619575ull, 10056138086019452046ull, 5990593909791118791ull}}, {{17311290655329929816ull, 9670856073445550276ull, 7958486589096927153ull, 7488242387238898489ull}}, {{1596184622726430327ull, 17573500091971938683ull, 16503269164254049230ull, 4680151492024311555ull}}, {{15830288833690201621ull, 12743503078110147545ull, 16017400436890173634ull, 5850189365030389444ull}}, {{5952802986830588314ull, 6706006810782908624ull, 1575006472403165427ull, 7312736706287986806ull}}, {{7441003733538235393ull, 3770822495051247876ull, 11192130127358732592ull, 9140920882859983507ull}}, {{13873999370316172929ull, 2356764059407029922ull, 4689238320385513918ull, 5713075551787489692ull}}, {{8119127176040440353ull, 12169327111113563211ull, 5861547900481892397ull, 7141344439734362115ull}}, {{5537222951623162537ull, 1376600833609790302ull, 2715248857174977593ull, 8926680549667952644ull}}, {{17295822400046640298ull, 12389590567074588698ull, 10920402572589136803ull, 5579175343542470402ull}}, {{12396405963203524564ull, 10875302190415847969ull, 4427131178881645196ull, 6973969179428088003ull}}, {{1660449398722241993ull, 13594127738019809962ull, 922227955174668591ull, 8717461474285110004ull}}, {{5649466892628789150ull, 15413858863903463082ull, 9799764508838943677ull, 5448413421428193752ull}}, {{16285205652640762245ull, 5432265524597165140ull, 12249705636048679597ull, 6810516776785242190ull}}, {{1909762992091401190ull, 11402017924173844330ull, 6088760008206073688ull, 8513145970981552738ull}}, {{5805287888484513648ull, 7126261202608652706ull, 8417161023556183959ull, 5320716231863470461ull}}, {{16479981897460417868ull, 4296140484833427978ull, 15133137297872617853ull, 6650895289829338076ull}}, {{11376605334970746527ull, 9981861624469172877ull, 469677548631220700ull, 8313619112286672596ull}}, {{9416221343570410531ull, 15462035552148008856ull, 9516920504749288745ull, 5196011945179170372ull}}, {{11770276679463013164ull, 5492486384902847358ull, 11896150630936610932ull, 6495014931473962965ull}}, {{5489473812473990647ull, 6865607981128559198ull, 1035130233388599953ull, 8118768664342453707ull}}, {{17265979188078407867ull, 15820220034273819258ull, 16787857460363732634ull, 5074230415214033566ull}}, {{12359101948243234025ull, 10551903005987498265ull, 11761449788599889985ull, 6342788019017541958ull}}, {{1613819380021878819ull, 17801564775911760736ull, 5478440198895086673ull, 7928485023771927448ull}}, {{1008637112513674262ull, 4208448957303768604ull, 3424025124309429171ull, 4955303139857454655ull}}, {{1260796390642092828ull, 648875178202322851ull, 18115089460668950176ull, 6194128924821818318ull}}, {{15411053543584779747ull, 811093972752903563ull, 13420489788981411912ull, 7742661156027272898ull}}, {{7326065455526793390ull, 506933732970564727ull, 12999492136540770349ull, 4839163222517045561ull}}, {{4545895800981103833ull, 5245353184640593813ull, 2414307115393799224ull, 6048954028146306952ull}}, {{10294055769653767695ull, 6556691480800742266ull, 3017883894242249030ull, 7561192535182883690ull}}, {{11045470874460992714ull, 17932990230782627628ull, 6497863452328793547ull, 4725745334489302306ull}}, {{13806838593076240892ull, 17804551770050896631ull, 17345701352265767742ull, 5907181668111627882ull}}, {{12646862222917913211ull, 13032317675708844981ull, 12458754653477433870ull, 7383977085139534853ull}}, {{10210131898537389709ull, 3533512528890640209ull, 10092564667637090121ull, 4614985678212209283ull}}, {{17374350891599125040ull, 9028576679540688165ull, 8004019816118974747ull, 5768732097765261604ull}}, {{7882880559216742588ull, 6674034830998472303ull, 10005024770148718434ull, 7210915122206577005ull}}, {{5241914680593540331ull, 17565915575602866187ull, 17117966981113285946ull, 9013643902758221256ull}}, {{970353666157268755ull, 15590383253179179271ull, 10698729363195803716ull, 5633527439223888285ull}}, {{15048000137978749656ull, 1041234992764422472ull, 17985097722422142550ull, 7041909299029860356ull}}, {{363256098763885453ull, 10524915777810303899ull, 4034628079318126571ull, 8802386623787325446ull}}, {{16367936126223286073ull, 4272229351917745984ull, 16356700604855992819ull, 5501491639867078403ull}}, {{2013176084069555975ull, 728600671469794577ull, 15834189737642603120ull, 6876864549833848004ull}}, {{7128156123514332872ull, 910750839337243221ull, 1345993098343702284ull, 8596080687292310006ull}}, {{6760940586410151997ull, 9792591311440552821ull, 14676303741746977639ull, 5372550429557693753ull}}, {{13062861751440077900ull, 7629053120873303122ull, 4510321621901558337ull, 6715688036947117192ull}}, {{7105205152445321567ull, 14148002419519016807ull, 5637902027376947921ull, 8394610046183896490ull}}, {{11358282247919407836ull, 1924972484558303648ull, 8135374785537980355ull, 5246631278864935306ull}}, {{14197852809899259795ull, 16241273660980043272ull, 945846445067699635ull, 6558289098581169133ull}}, {{17747316012374074743ull, 15689906057797666186ull, 5793994074762012448ull, 8197861373226461416ull}}, {{15703758526161184619ull, 9806191286123541366ull, 3621246296726257780ull, 5123663358266538385ull}}, {{10406326120846704965ull, 12257739107654426708ull, 9138243889335210129ull, 6404579197833172981ull}}, {{13007907651058381206ull, 1487115829285869673ull, 16034490880096400566ull, 8005723997291466226ull}}, {{1212413254270406398ull, 14764505448585832258ull, 14633242818487638257ull, 5003577498307166391ull}}, {{10738888604692783806ull, 4620573755450126610ull, 13679867504682159918ull, 6254471872883957989ull}}, {{4200238719011203949ull, 14999089231167434071ull, 3264776325570536185ull, 7818089841104947487ull}}, {{9542678227023084324ull, 2456901741838564438ull, 8958014231122666972ull, 4886306150690592179ull}}, {{2704975746924079597ull, 3071127177298205548ull, 6585831770475945811ull, 6107882688363240224ull}}, {{3381219683655099496ull, 17673967026904920647ull, 8232289713094932263ull, 7634853360454050280ull}}, {{9030791329925519041ull, 17963758419456657260ull, 5145181070684332664ull, 4771783350283781425ull}}, {{11288489162406898802ull, 4007953950611269959ull, 11043162356782803735ull, 5964729187854726781ull}}, {{9498925434581235598ull, 398256419836699545ull, 18415638964405892573ull, 7455911484818408476ull}}, {{17466043442681742009ull, 2554753271611631167ull, 2286402315898907050ull, 4659944678011505298ull}}, {{17220868284924789607ull, 12416813626369314767ull, 12081374931728409620ull, 5824930847514381622ull}}, {{16914399337728599105ull, 15521017032961643459ull, 5878346627805736217ull, 7281163559392977028ull}}, {{16531313153733360977ull, 5566213235919890612ull, 7347933284757170272ull, 9101454449241221285ull}}, {{1108698684228574803ull, 3478883272449931633ull, 6898301312186925372ull, 5688409030775763303ull}}, {{5997559373713106407ull, 4348604090562414541ull, 4011190621806268811ull, 7110511288469704129ull}}, {{12108635235568770913ull, 824069094775630272ull, 9625674295685223918ull, 8888139110587130161ull}}, {{7567897022230481821ull, 14350101239516932632ull, 17545261480871734708ull, 5555086944116956350ull}}, {{9459871277788102276ull, 17937626549396165790ull, 12708204814234892577ull, 6943858680146195438ull}}, {{2601467060380352037ull, 8586975131463043526ull, 6661883980938839914ull, 8679823350182744298ull}}, {{15460974968019883735ull, 9978545475591790107ull, 8775363506514162850ull, 5424889593864215186ull}}, {{14714532691597466765ull, 3249809807634961826ull, 1745832346287927755ull, 6781111992330268983ull}}, {{9169793827642057648ull, 17897320314825865995ull, 16017348488142073405ull, 8476389990412836228ull}}, {{3425278133062592078ull, 13491668205979860199ull, 787470768234020070ull, 5297743744008022643ull}}, {{18116655721610403809ull, 7641213220620049440ull, 14819396515574688800ull, 6622179680010028303ull}}, {{4199075578303453146ull, 9551516525775061801ull, 13912559626040973096ull, 8277724600012535379ull}}, {{14153637282508127976ull, 5969697828609413625ull, 6389506757061914233ull, 5173577875007834612ull}}, {{3856988547852996258ull, 12073808304189154936ull, 7986883446327392791ull, 6466972343759793265ull}}, {{4821235684816245322ull, 10480574361809055766ull, 14595290326336628893ull, 8083715429699741581ull}}, {{16848330358292317039ull, 8856201985344353805ull, 11427899463174087010ull, 5052322143562338488ull}}, {{7225354892583232586ull, 1846880444825666449ull, 14284874328967608763ull, 6315402679452923110ull}}, {{13643379634156428637ull, 16143658611314246773ull, 8632720874354735145ull, 7894253349316153888ull}}, {{10832955280561461850ull, 3172257604430322377ull, 5395450546471709466ull, 4933908343322596180ull}}, {{18152880119129215217ull, 13188694042392678779ull, 6744313183089636832ull, 6167385429153245225ull}}, {{18079414130484131117ull, 16485867552990848474ull, 13042077497289433944ull, 7709231786441556531ull}}, {{15911319849979969852ull, 10303667220619280296ull, 5845455426592202263ull, 4818269866525972832ull}}, {{1442405738765410699ull, 8267898007346712467ull, 7306819283240252829ull, 6022837333157466040ull}}, {{15638065228738927086ull, 14946558527610778487ull, 9133524104050316036ull, 7528546666446832550ull}}, {{16691319795602911285ull, 118227042901960746ull, 1096766546604059619ull, 4705341666529270344ull}}, {{11640777707648863298ull, 13982841858909614645ull, 1370958183255074523ull, 5881677083161587930ull}}, {{715914079278915410ull, 12866866305209630403ull, 10937069765923618962ull, 7352096353951984912ull}}, {{14729950654380807974ull, 6860210844657262195ull, 13671337207404523703ull, 9190120442439981140ull}}, {{6900376149774311032ull, 11205160805551870728ull, 17767957791482603122ull, 5743825276524988212ull}}, {{8625470187217888790ull, 4783078970085062602ull, 3763203165643702287ull, 7179781595656235266ull}}, {{1558465697167585179ull, 1367162694178940349ull, 13927375993909403667ull, 8974726994570294082ull}}, {{3279884069943434689ull, 16995377748357695382ull, 13316296014620765195ull, 5609204371606433801ull}}, {{13323227124284069170ull, 16632536167019731323ull, 2810311962993792782ull, 7011505464508042252ull}}, {{12042347886927698558ull, 11567298171919888346ull, 3512889953742240978ull, 8764381830635052815ull}}, {{12138153447757199503ull, 11841247375877318120ull, 9113085248729982467ull, 5477738644146908009ull}}, {{15172691809696499378ull, 10189873201419259746ull, 16003042579339865988ull, 6847173305183635011ull}}, {{9742492725265848415ull, 12737341501774074683ull, 15392117205747444581ull, 8558966631479543764ull}}, {{3783214944077461308ull, 10266681447822490629ull, 396701216737377055ull, 5349354144674714853ull}}, {{9340704698524214538ull, 8221665791350725382ull, 5107562539349109223ull, 6686692680843393566ull}}, {{2452508836300492365ull, 5665396220761018824ull, 15607825211041162337ull, 8358365851054241957ull}}, {{1532818022687807728ull, 15070087684044106525ull, 12060733766114420412ull, 5223978656908901223ull}}, {{6527708546787147564ull, 390865531345581540ull, 10464231189215637612ull, 6529973321136126529ull}}, {{8159635683483934455ull, 488581914181976925ull, 17691975004946934919ull, 8162466651420158161ull}}, {{7405615311391152987ull, 7222892724004817434ull, 4139955350450752468ull, 5101541657137598851ull}}, {{33647102384165425ull, 9028615905006021793ull, 563258169636052681ull, 6376927071421998564ull}}, {{4653744896407594685ull, 15897455899684915145ull, 704072712045065851ull, 7971158839277498205ull}}, {{14437805606323216438ull, 7630066928089378013ull, 2745888454241860109ull, 4981974274548436378ull}}, {{4212198952621856836ull, 14149269678539110421ull, 12655732604657100944ull, 6227467843185545472ull}}, {{9876934709204708949ull, 17686587098173888026ull, 15819665755821376180ull, 7784334803981931840ull}}, {{10784770211680330997ull, 1830744899503904208ull, 9887291097388360113ull, 4865209252488707400ull}}, {{13480962764600413746ull, 6900117142807268164ull, 12359113871735450141ull, 6081511565610884250ull}}, {{16851203455750517183ull, 13236832446936473109ull, 6225520302814536868ull, 7601889457013605313ull}}, {{12837845169057767191ull, 17496392316190071501ull, 15420165235327555302ull, 4751180910633503320ull}}, {{2212248406040045277ull, 12647118358382813569ull, 828462470449892512ull, 5938976138291879151ull}}, {{7376996525977444500ull, 15808897947978516961ull, 14870636143344529352ull, 7423720172864848938ull}}, {{16139837874804372573ull, 9880561217486573100ull, 13905833608017718749ull, 4639825108040530586ull}}, {{1728053269795914100ull, 16962387540285604280ull, 8158919973167372628ull, 5799781385050663233ull}}, {{2160066587244892625ull, 2756240351647453734ull, 14810335984886603690ull, 7249726731313329041ull}}, {{11923455270910891589ull, 12668672476414092975ull, 4677861925826090900ull, 9062158414141661302ull}}, {{14369688571960389099ull, 17141292334613583917ull, 16758721758923470524ull, 5663849008838538313ull}}, {{4127052659668322662ull, 2979871344557428281ull, 7113344143372174444ull, 7079811261048172892ull}}, {{9770501843012791231ull, 3724839180696785351ull, 8891680179215218055ull, 8849764076310216115ull}}, {{13024092679524076376ull, 9245553515576572700ull, 3251457102795817332ull, 5531102547693885072ull}}, {{16280115849405095470ull, 11556941894470715875ull, 4064321378494771665ull, 6913878184617356340ull}}, {{15738458793328981433ull, 611119312806231132ull, 5080401723118464582ull, 8642347730771695425ull}}, {{613164708975837588ull, 14217007625786058170ull, 14704466123017510123ull, 5401467331732309640ull}}, {{9989827923074572793ull, 13159573513805184808ull, 18380582653771887654ull, 6751834164665387050ull}}, {{12487284903843215991ull, 7226094855401705202ull, 13752356280360083760ull, 8439792705831733813ull}}, {{12416239083329397898ull, 4516309284626065751ull, 10901065684438746302ull, 5274870441144833633ull}}, {{10908612835734359469ull, 14868758642637357997ull, 18238018123975820781ull, 6593588051431042041ull}}, {{18247452063095337240ull, 4750890248014533784ull, 8962464599687612265ull, 8241985064288802552ull}}, {{11404657539434585775ull, 14498521451077553375ull, 5601540374804757665ull, 5151240665180501595ull}}, {{9644135905865844315ull, 4288093758564778007ull, 2390239450078559178ull, 6439050831475626994ull}}, {{7443483863904917489ull, 14583489235060748317ull, 12211171349452974780ull, 8048813539344533742ull}}, {{6958020424154267383ull, 18338052808767743506ull, 3020296074980721333ull, 5030508462090333589ull}}, {{17920897567047610037ull, 9087507955677515670ull, 8387056112153289571ull, 6288135577612916986ull}}, {{13177749921954736738ull, 6747698926169506684ull, 1260448103336836156ull, 7860169472016146233ull}}, {{17459465738076486269ull, 13440683865710717485ull, 12316995110653992357ull, 4912605920010091395ull}}, {{7989274117313444124ull, 2965796776856233145ull, 10784557869890102543ull, 6140757400012614244ull}}, {{14598278665069193059ull, 17542304026352455143ull, 13480697337362628178ull, 7675946750015767805ull}}, {{16041453193309327518ull, 15575626034897672368ull, 10731278845065336563ull, 4797466718759854878ull}}, {{1605072417927107782ull, 14857846525194702557ull, 4190726519476894896ull, 5996833398449818598ull}}, {{6618026540836272631ull, 125564082783826580ull, 14461780186200894429ull, 7496041748062273247ull}}, {{13359638624877446203ull, 2384320560953585564ull, 15956141644016640874ull, 4685026092538920779ull}}, {{16699548281096807753ull, 12203772738046757763ull, 15333491036593413188ull, 5856282615673650974ull}}, {{16262749332943621787ull, 15254715922558447204ull, 9943491758886990677ull, 7320353269592063718ull}}, {{1881692592469975618ull, 5233336847915895294ull, 3205992661753962539ull, 9150441586990079648ull}}, {{15011115925575898473ull, 964992520733740606ull, 2003745413596226587ull, 5719025991868799780ull}}, {{9540522870115097284ull, 15041298706199339470ull, 2504681766995283233ull, 7148782489835999725ull}}, {{2702281550789095796ull, 4966565327467010626ull, 7742538227171491946ull, 8935978112294999656ull}}, {{6300611987670572777ull, 7715789348094269545ull, 4839086391982182466ull, 5584986320184374785ull}}, {{12487451003015603875ull, 421364648263061123ull, 10660544008405115987ull, 6981232900230468481ull}}, {{10997627735342116940ull, 14361763865610990116ull, 17937366028933782887ull, 8726541125288085601ull}}, {{16096889371443598895ull, 15893631443647950678ull, 4293324740442532448ull, 5454088203305053501ull}}, {{10897739677449722811ull, 1420295230850386732ull, 9978341943980553465ull, 6817610254131316876ull}}, {{13622174596812153514ull, 6387055056990371319ull, 12472927429975691831ull, 8522012817664146095ull}}, {{15431388150648677802ull, 10909438438260063930ull, 14713108671375889250ull, 5326258011040091309ull}}, {{10065863151456071445ull, 4413426010970304105ull, 4556327783937697851ull, 6657822513800114137ull}}, {{17194014957747477210ull, 905096495285492227ull, 10307095748349510218ull, 8322278142250142671ull}}, {{8440416339378479304ull, 5177371327980820546ull, 13359463870359525742ull, 5201423838906339169ull}}, {{1327148387368323322ull, 15695086196830801491ull, 2864271782667243465ull, 6501779798632923962ull}}, {{15493993539492567865ull, 5783799690756338151ull, 12803711765188830140ull, 8127224748291154952ull}}, {{16601274989823936772ull, 12838246843577487152ull, 8002319853243018837ull, 5079515467681971845ull}}, {{2304849663570369348ull, 2212750499189695229ull, 14614585834981161451ull, 6349394334602464806ull}}, {{7492748097890349589ull, 16600996179269282748ull, 9044860256871676005ull, 7936742918253081008ull}}, {{13906339598036244302ull, 12681465621256995669ull, 5653037660544797503ull, 4960464323908175630ull}}, {{3547866442263141665ull, 11240146008143856683ull, 16289669112535772687ull, 6200580404885219537ull}}, {{18269891108111090793ull, 9438496491752432949ull, 6527028335387552147ull, 7750725506106524422ull}}, {{13724524951783125698ull, 3593217298131576641ull, 17914450764899383804ull, 4844203441316577763ull}}, {{3320598134446743410ull, 4491521622664470802ull, 17781377437696841851ull, 6055254301645722204ull}}, {{13374119704913205071ull, 1002716009903200598ull, 3779977723411500698ull, 7569067877057152756ull}}, {{3747138797143365265ull, 5238383524616888278ull, 11585858113986963744ull, 4730667423160720472ull}}, {{13907295533283982389ull, 6547979405771110347ull, 14482322642483704680ull, 5913334278950900590ull}}, {{12772433398177590083ull, 8184974257213887934ull, 8879531266249855042ull, 7391667848688625738ull}}, {{3371084855433605898ull, 9727294929186067863ull, 10161393059833547305ull, 4619792405430391086ull}}, {{18048914124574171084ull, 16770804679909972732ull, 3478369287937158323ull, 5774740506787988858ull}}, {{4114398582008162239ull, 16351819831460078012ull, 13571333646776223712ull, 7218425633484986072ull}}, {{5142998227510202799ull, 1993030715615545899ull, 16964167058470279641ull, 9023032041856232590ull}}, {{908530882980182797ull, 12774859243328185947ull, 5990918393116536871ull, 5639395026160145369ull}}, {{14970721659007392209ull, 11356888035732844529ull, 12100334009823058993ull, 7049243782700181711ull}}, {{4878344018477076549ull, 361051989383891950ull, 10513731493851435838ull, 8811554728375227139ull}}, {{16884023066830336555ull, 14060715548647096180ull, 4265239174443453446ull, 5507221705234516962ull}}, {{2658284759828369078ull, 8352522398954094418ull, 14554921004909092616ull, 6884027131543146202ull}}, {{12546227986640237155ull, 10440652998692618022ull, 8970279219281589962ull, 8605033914428932753ull}}, {{3229706473222760318ull, 11137094142610274168ull, 17135639558119463486ull, 5378146196518082970ull}}, {{4037133091528450398ull, 4697995641408066902ull, 12196177410794553550ull, 6722682745647603713ull}}, {{14269788401265338805ull, 15095866588614859435ull, 1410163708211028225ull, 8403353432059504642ull}}, {{6612774741577142801ull, 2517387590243205291ull, 5493038336059280545ull, 5252095895037190401ull}}, {{3654282408544040597ull, 7758420506231394518ull, 11477983938501488585ull, 6565119868796488001ull}}, {{13791225047534826555ull, 14309711651216631051ull, 512421867844697019ull, 8206399835995610002ull}}, {{6313672645495572645ull, 6637726772796700455ull, 4931949685830323541ull, 5128999897497256251ull}}, {{3280404788442077902ull, 12908844484423263473ull, 1553251088860516522ull, 6411249871871570314ull}}, {{8712192003979985281ull, 6912683568674303533ull, 11164935897930421461ull, 8014062339839462892ull}}, {{7750963011701184753ull, 6626270239635133660ull, 16201456973061289221ull, 5008788962399664307ull}}, {{9688703764626480941ull, 12894523817971304979ull, 15640135197899223622ull, 6260986202999580384ull}}, {{7499193687355713272ull, 6894782735609355416ull, 1103424923664477912ull, 7826232753749475481ull}}, {{4686996054597320795ull, 4309239209755847135ull, 12218855623358768455ull, 4891395471093422175ull}}, {{1247059049819263090ull, 774862993767421015ull, 10661883510771072665ull, 6114244338866777719ull}}, {{15393881867556242574ull, 5580264760636664172ull, 8715668370036452927ull, 7642805423583472149ull}}, {{397804130367875801ull, 10405194503038996964ull, 7753135740486477031ull, 4776753389739670093ull}}, {{497255162959844751ull, 8394807110371358301ull, 14303105694035484193ull, 5970941737174587616ull}}, {{5233254972127193843ull, 15105194906391585780ull, 17878882117544355241ull, 7463677171468234520ull}}, {{12494156394434271960ull, 2523217788853659256ull, 11174301323465222026ull, 4664798232167646575ull}}, {{15617695493042839950ull, 12377394272921849878ull, 9356190635904139628ull, 5830997790209558219ull}}, {{10298747329448774129ull, 15471742841152312348ull, 7083552276452786631ull, 7288747237761947774ull}}, {{12873434161810967662ull, 14727992533013002531ull, 18077812382420759097ull, 9110934047202434717ull}}, {{5740053341918160837ull, 2287466305492044726ull, 13604475748226668388ull, 5694333779501521698ull}}, {{16398438714252476854ull, 2859332881865055907ull, 7782222648428559677ull, 7117917224376902123ull}}, {{15886362374388208163ull, 8185852120758707788ull, 5116092292108311692ull, 8897396530471127654ull}}, {{705604447137854294ull, 14339529612328968176ull, 17032615737849858519ull, 5560872831544454783ull}}, {{882005558922317867ull, 13312725996983822316ull, 16679083653884935245ull, 6951091039430568479ull}}, {{1102506948652897334ull, 2805849440947614183ull, 16237168548928781153ull, 8688863799288210599ull}}, {{7606595870549142690ull, 13282870946660728624ull, 17065759370721570076ull, 5430539874555131624ull}}, {{9508244838186428362ull, 16603588683325910780ull, 2885455139692410979ull, 6788174843193914531ull}}, {{11885306047733035453ull, 16142799835730000571ull, 17441876979897677436ull, 8485218553992393163ull}}, {{5122473270619453206ull, 865877860476474549ull, 8595330103222354446ull, 5303261596245245727ull}}, {{11014777606701704412ull, 10305719362450368994ull, 6132476610600555153ull, 6629076995306557159ull}}, {{4545099971522354707ull, 17493835221490349147ull, 3053909744823306037ull, 8286346244133196449ull}}, {{534844472987777740ull, 13239490022645162169ull, 13437908636583036033ull, 5178966402583247780ull}}, {{5280241609662110079ull, 2714304473024288999ull, 16797385795728795042ull, 6473708003229059725ull}}, {{1988615993650249694ull, 12616252628135137057ull, 7161674189378830090ull, 8092135004036324657ull}}, {{12772100042099875819ull, 12496843911011848564ull, 16005261414430238566ull, 5057584377522702910ull}}, {{15965125052624844774ull, 6397682851910034897ull, 10783204731183022400ull, 6321980471903378638ull}}, {{6121348260498892255ull, 7997103564887543622ull, 4255633877124002192ull, 7902475589879223298ull}}, {{17660900718093971372ull, 4998189728054714763ull, 7271457191629889274ull, 4939047243674514561ull}}, {{17464439879190076310ull, 15471109196923169262ull, 13701007507964749496ull, 6173809054593143201ull}}, {{12607177812132819580ull, 892142422444409962ull, 3291201329673773159ull, 7717261318241429002ull}}, {{12491172151010400142ull, 7475118041668838082ull, 6668686849473496128ull, 4823288323900893126ull}}, {{6390593151908224369ull, 9343897552086047603ull, 17559230598696645968ull, 6029110404876116407ull}}, {{3376555421457892557ull, 11679871940107559504ull, 17337352229943419556ull, 7536388006095145509ull}}, {{2110347138411182848ull, 16523291999422000498ull, 13141688152928331174ull, 4710242503809465943ull}}, {{11861305959868754368ull, 11430742962422724814ull, 11815424172733026064ull, 5887803129761832429ull}}, {{5603260412981167152ull, 14288428703028406018ull, 934222160634118868ull, 7359753912202290537ull}}, {{16227447553081234748ull, 17860535878785507522ull, 5779463719220036489ull, 9199692390252863171ull}}, {{14753840739103159622ull, 4245305896599860345ull, 1306321815298828854ull, 5749807743908039482ull}}, {{4607242868596785815ull, 14530004407604601240ull, 10856274305978311875ull, 7187259679885049352ull}}, {{5759053585745982269ull, 13550819491078363646ull, 13570342882472889844ull, 8984074599856311690ull}}, {{17434466546373402630ull, 17692634218778753086ull, 13093150319972944056ull, 5615046624910194806ull}}, {{12569711146111977479ull, 3669048699763889742ull, 7143065863111404263ull, 7018808281137743508ull}}, {{6488766895785196041ull, 18421368929987025890ull, 8928832328889255328ull, 8773510351422179385ull}}, {{8667165328293135430ull, 11513355581241891181ull, 17109735251624254340ull, 5483443969638862115ull}}, {{15445642678793807191ull, 14391694476552363976ull, 16775483046102930021ull, 6854304962048577644ull}}, {{860309274782707373ull, 4154560040408291259ull, 2522609733919110911ull, 8567881202560722056ull}}, {{16678594361235049772ull, 9514129052896263892ull, 1576631083699444319ull, 5354925751600451285ull}}, {{2401498877834260599ull, 7280975297692941962ull, 6582474873051693303ull, 6693657189500564106ull}}, {{12225245634147601557ull, 4489533103688789548ull, 17451465628169392437ull, 8367071486875705132ull}}, {{16864150558197026781ull, 5111801199019187419ull, 1683793980751094465ull, 5229419679297315708ull}}, {{16468502179318895572ull, 11001437517201372178ull, 2104742475938868081ull, 6536774599121644635ull}}, {{11362255687293843657ull, 18363482914929103127ull, 16465986150205748813ull, 8170968248902055793ull}}, {{14018938832199734142ull, 13783019831044383406ull, 3373712316237511152ull, 5106855155563784871ull}}, {{8300301503394891869ull, 17228774788805479258ull, 18052198450579052652ull, 6383568944454731088ull}}, {{1152004842388839029ull, 3089224412297297457ull, 4118503989514264200ull, 7979461180568413861ull}}, {{12249218072561494153ull, 1930765257685810910ull, 4879908002660109077ull, 4987163237855258663ull}}, {{6088150553847091883ull, 7025142590534651542ull, 1488198984897748442ull, 6233954047319073329ull}}, {{16833560229163640662ull, 18004800275023090235ull, 6471934749549573456ull, 7792442559148841661ull}}, {{8215132134013581462ull, 11253000171889431397ull, 6350802227682177362ull, 4870276599468026038ull}}, {{14880601185944364731ull, 4842878178007013438ull, 17161874821457497511ull, 6087845749335032547ull}}, {{9377379445575680106ull, 1441911704081378894ull, 16840657508394483985ull, 7609807186668790684ull}}, {{1249176135057412162ull, 12430409861119331569ull, 1302038905891776682ull, 4756129491667994178ull}}, {{6173156187249153107ull, 6314640289544388653ull, 10850920669219496661ull, 5945161864584992722ull}}, {{12328131252488829288ull, 12504986380357873720ull, 4340278799669595018ull, 7431452330731240903ull}}, {{7705082032805518305ull, 12427302506151058979ull, 9630203277434578742ull, 4644657706707025564ull}}, {{5019666522579509977ull, 6310756095834047916ull, 12037754096793223428ull, 5805822133383781955ull}}, {{6274583153224387471ull, 7888445119792559895ull, 10435506602564141381ull, 7257277666729727444ull}}, {{3231542923103096435ull, 14472242418168087773ull, 13044383253205176726ull, 9071597083412159305ull}}, {{4325557336153129224ull, 4433465492927666954ull, 1235210505612153598ull, 5669748177132599566ull}}, {{14630318707046187338ull, 14765203903014359500ull, 10767385168869967805ull, 7087185221415749457ull}}, {{18287898383807734172ull, 4621446823485785663ull, 18070917479514847661ull, 8858981526769686821ull}}, {{18347465517520915714ull, 5194247273892309991ull, 13600166433910473740ull, 5536863454231054263ull}}, {{18322645878473756738ull, 6492809092365387489ull, 12388522023960704271ull, 6921079317788817829ull}}, {{9068249292810032210ull, 3504325347029346458ull, 1650594474668716627ull, 8651349147236022287ull}}, {{10279341826433658036ull, 18331104406389199200ull, 7949150574309029747ull, 5407093217022513929ull}}, {{12849177283042072545ull, 18302194489559111096ull, 14548124236313675088ull, 6758866521278142411ull}}, {{16061471603802590681ull, 4430999038239337254ull, 13573469276964705957ull, 8448583151597678014ull}}, {{5426733733949231272ull, 5075217408113279736ull, 3871732279675553319ull, 5280364469748548759ull}}, {{6783417167436539089ull, 1732335741714211766ull, 227979331167053745ull, 6600455587185685949ull}}, {{17702643496150449669ull, 6777105695570152611ull, 4896660182386205085ull, 8250569483982107436ull}}, {{8758309175880337092ull, 6541534068945039334ull, 12283784650846153986ull, 5156605927488817147ull}}, {{1724514432995645556ull, 17400289623036074976ull, 10743044795130304578ull, 6445757409361021434ull}}, {{2155643041244556945ull, 12526989991940317912ull, 4205433957058104915ull, 8057196761701276793ull}}, {{1347276900777848091ull, 5523525735749004743ull, 14157611269229785332ull, 5035747976063297995ull}}, {{15519154181254473826ull, 6904407169686255928ull, 13085328068109843761ull, 6294684970079122494ull}}, {{952198652858540666ull, 13242194980535207815ull, 7133288048282528893ull, 7868356212598903118ull}}, {{7512653185677669772ull, 10582214872048198836ull, 18293363085458744270ull, 4917722632874314448ull}}, {{9390816482097087215ull, 4004396553205472737ull, 4419959783113878722ull, 6147153291092893061ull}}, {{16350206621048746923ull, 14228867728361616729ull, 10136635747319736306ull, 7683941613866116326ull}}, {{3301350110514384971ull, 13504728348653398360ull, 1723711323647447287ull, 4802463508666322704ull}}, {{4126687638142981214ull, 12269224417389360046ull, 2154639154559309109ull, 6003079385832903380ull}}, {{14381731584533502325ull, 1501472466454536345ull, 2693298943199136387ull, 7503849232291129225ull}}, {{2071053212692357097ull, 17079321356029942880ull, 13212526885567930001ull, 4689905770181955765ull}}, {{2588816515865446372ull, 7514093639755264888ull, 2680600551677748790ull, 5862382212727444707ull}}, {{3236020644831807964ull, 169245012839305302ull, 17185808744879349700ull, 7327977765909305883ull}}, {{13268397842894535763ull, 211556266049131627ull, 16870574912671799221ull, 9159972207386632354ull}}, {{5986905642595390900ull, 2438065675494401219ull, 15155795338847262417ull, 5724982629616645221ull}}, {{2871946034816850721ull, 7659268112795389428ull, 5109686118276914309ull, 7156228287020806527ull}}, {{3589932543521063401ull, 14185771159421624689ull, 1775421629418754982ull, 8945285358776008159ull}}, {{13772922885769134386ull, 4254420956211127526ull, 8027167546027803720ull, 5590803349235005099ull}}, {{7992781570356642174ull, 5318026195263909408ull, 5422273414107366746ull, 6988504186543756374ull}}, {{9990976962945802718ull, 15870904780934662568ull, 16001213804488984240ull, 8735630233179695467ull}}, {{6244360601841126699ull, 9919315488084164105ull, 7694915618591921198ull, 5459768895737309667ull}}, {{12417136770728796277ull, 3175772323250429323ull, 5006958504812513594ull, 6824711119671637084ull}}, {{10909734944983607443ull, 13193087440917812462ull, 6258698131015641992ull, 8530888899589546355ull}}, {{2206898322187366748ull, 8245679650573632789ull, 1605843322671082293ull, 5331805562243466472ull}}, {{7370308921161596339ull, 14918785581644428890ull, 2007304153338852866ull, 6664756952804333090ull}}, {{18436258188306771231ull, 9425109940200760304ull, 11732502228528341891ull, 8330946191005416362ull}}, {{11522661367691732020ull, 3584850703411781238ull, 11944499911257601586ull, 5206841369378385226ull}}, {{5179954672759889217ull, 13704435416119502356ull, 5707252852217226174ull, 6508551711722981533ull}}, {{6474943340949861521ull, 7907172233294602137ull, 11745752083698920622ull, 8135689639653726916ull}}, {{15576054634162133211ull, 330296627381738431ull, 16564467089166601197ull, 5084806024783579322ull}}, {{14858382274275278609ull, 5024556802654560943ull, 11482211824603475688ull, 6356007530979474153ull}}, {{13961291824416710357ull, 6280696003318201179ull, 517706725472180898ull, 7945009413724342692ull}}, {{6419964381046750021ull, 8537121020501263641ull, 9546938740274888869ull, 4965630883577714182ull}}, {{12636641494735825431ull, 15283087294053967455ull, 2710301388488835278ull, 6207038604472142728ull}}, {{11184115849992393884ull, 9880487080712683511ull, 3387876735611044098ull, 7758798255590178410ull}}, {{13907601433886328034ull, 10786990443872815098ull, 6729108978184290465ull, 4849248909743861506ull}}, {{8161129755503134234ull, 18095424073268406777ull, 17634758259585138889ull, 6061561137179826882ull}}, {{14813098212806305697ull, 8784222036303344759ull, 12820075787626647804ull, 7576951421474783603ull}}, {{16175715410645022917ull, 14713510809544366282ull, 5706704358052960925ull, 4735594638421739752ull}}, {{10996272226451502838ull, 4556830456648294141ull, 7133380447566201157ull, 5919493298027174690ull}}, {{18357026301491766451ull, 10307724089237755580ull, 18140097596312527254ull, 7399366622533968362ull}}, {{2249769401577578224ull, 1830641537346209334ull, 15949247016122717438ull, 4624604139083730226ull}}, {{12035583788826748588ull, 11511673958537537475ull, 10713186733298620989ull, 5780755173854662783ull}}, {{10432793717606047831ull, 554534392889758132ull, 8779797398195888333ull, 7225943967318328479ull}}, {{13040992147007559788ull, 5304854009539585569ull, 6363060729317472512ull, 9032429959147910599ull}}, {{1233091064238643012ull, 3315533755962240981ull, 10894441983464502176ull, 5645268724467444124ull}}, {{6153049848725691669ull, 4144417194952801226ull, 13618052479330627720ull, 7056585905584305155ull}}, {{16914684347761890394ull, 5180521493691001532ull, 12410879580735896746ull, 8820732381980381444ull}}, {{1348305680496405688ull, 7849511951984263862ull, 16980171774814711274ull, 5512957738737738402ull}}, {{10908754137475282918ull, 588517903125554019ull, 12001842681663613285ull, 6891197173422173003ull}}, {{9024256653416715744ull, 5347333397334330428ull, 10390617333652128702ull, 8613996466777716254ull}}, {{14863532445240223148ull, 17177141428616120229ull, 1882449815105192534ull, 5383747791736072659ull}}, {{4744357501268115223ull, 12248054748915374479ull, 16188120324163654380ull, 6729684739670090823ull}}, {{1318760858157756124ull, 15310068436144218099ull, 15623464386777180071ull, 8412105924587613529ull}}, {{16965126600844455242ull, 16486321800231218167ull, 2847136214094655688ull, 5257566202867258456ull}}, {{16594722232628181148ull, 2161158176579471093ull, 3558920267618319611ull, 6571957753584073070ull}}, {{6908344735503062723ull, 16536505776006502579ull, 13672022371377675321ull, 8214947191980091337ull}}, {{2011872450475720250ull, 3417787082362982256ull, 1627484954469965220ull, 5134341994987557086ull}}, {{2514840563094650313ull, 4272233852953727820ull, 11257728229942232333ull, 6417927493734446357ull}}, {{3143550703868312891ull, 9951978334619547679ull, 237102232145626704ull, 8022409367168057947ull}}, {{8882248217558777413ull, 6219986459137217299ull, 16289089959586874354ull, 5014005854480036216ull}}, {{6491124253521083862ull, 16998355110776297432ull, 1914618375774041326ull, 6267507318100045271ull}}, {{8113905316901354827ull, 12024571851615595982ull, 16228331024999715370ull, 7834384147625056588ull}}, {{459504804635958863ull, 12127043425687135393ull, 919334853770046298ull, 4896490092265660368ull}}, {{5186067024222336483ull, 5935432245254143433ull, 1149168567212557873ull, 6120612615332075460ull}}, {{11094269798705308508ull, 12030976324995067195ull, 1436460709015697341ull, 7650765769165094325ull}}, {{4628075614977123865ull, 9825203212335610949ull, 3203630952348504790ull, 4781728605728183953ull}}, {{10396780537148792736ull, 3058131978564737878ull, 8616224708863018892ull, 5977160757160229941ull}}, {{3772603634581215111ull, 3822664973205922348ull, 15381966904506161519ull, 7471450946450287426ull}}, {{11581249308468035253ull, 9306694635894783323ull, 14225415333743738853ull, 4669656841531429641ull}}, {{9864875617157656162ull, 16245054313295867058ull, 3946711111897509854ull, 5837071051914287052ull}}, {{3107722484592294394ull, 11082945854765058015ull, 4933388889871887318ull, 7296338814892858815ull}}, {{17719711161022531705ull, 4630310281601546710ull, 1555050093912471244ull, 9120423518616073519ull}}, {{6463133457211694412ull, 12117315962855742502ull, 7889435336336376383ull, 5700264699135045949ull}}, {{17302288858369393822ull, 10534958935142290223ull, 14473480188847858383ull, 7125330873918807436ull}}, {{17016175054534354374ull, 8557012650500474875ull, 18091850236059822979ull, 8906663592398509295ull}}, {{8329266399870277532ull, 3042289897349102845ull, 18224935425178471218ull, 5566664745249068309ull}}, {{15023269018265234819ull, 13026234408541154364ull, 8946111226190925310ull, 6958330931561335387ull}}, {{332342199121991907ull, 7059420973821667148ull, 6570953014311268734ull, 8697913664451669234ull}}, {{9431085911306020750ull, 18247196163920705679ull, 8718531652371930862ull, 5436196040282293271ull}}, {{7177171370705138034ull, 13585623168046106291ull, 6286478547037525674ull, 6795245050352866589ull}}, {{4359778194954034638ull, 7758656923202857056ull, 12469784202224294997ull, 8494056312941083236ull}}, {{2724861371846271649ull, 7155003586215479612ull, 17016987163244960181ull, 5308785195588177022ull}}, {{3406076714807839561ull, 13555440501196737419ull, 12047861917201424418ull, 6635981494485221278ull}}, {{18092653948791963163ull, 7720928589641145965ull, 5836455359647004715ull, 8294976868106526598ull}}, {{13613751727208670929ull, 2519737359312022276ull, 17482842655061541659ull, 5184360542566579123ull}}, {{17017189659010838661ull, 16984729754422191557ull, 17241867300399539169ull, 6480450678208223904ull}}, {{7436429018481384614ull, 7395854137745575735ull, 3105590051789872346ull, 8100563347760279881ull}}, {{11565297164191947240ull, 9234094854518372738ull, 13470208828437139976ull, 5062852092350174925ull}}, {{5233249418385158242ull, 11542618568147965923ull, 3002702980264261258ull, 6328565115437718657ull}}, {{1929875754554059899ull, 5204901173330181596ull, 8365064743757714477ull, 7910706394297148321ull}}, {{10429544383451063245ull, 5558906242545057449ull, 16757380510917041308ull, 4944191496435717700ull}}, {{17648616497741216960ull, 6948632803181321811ull, 2499981564936750019ull, 6180239370544647126ull}}, {{17449084603749133296ull, 4074104985549264360ull, 12348348993025713332ull, 7725299213180808907ull}}, {{10905677877343208310ull, 11769687652823066033ull, 5411875111427376880ull, 4828312008238005567ull}}, {{18243783365106398291ull, 14712109566028832541ull, 2153157870856833196ull, 6035390010297506959ull}}, {{8969671151100834152ull, 18390136957536040677ull, 16526505393853205207ull, 7544237512871883698ull}}, {{7911887478651715297ull, 18411364626101107279ull, 14940751889585641158ull, 4715148445544927311ull}}, {{5278173329887256217ull, 13790833745771608291ull, 14064253843554663544ull, 5893935556931159139ull}}, {{1986030643931682368ull, 17238542182214510364ull, 12968631286015941526ull, 7367419446163948924ull}}, {{2482538304914602959ull, 12324805690913362147ull, 16210789107519926908ull, 9209274307704936155ull}}, {{17692487505067484514ull, 16926375593675627149ull, 7825900182986260365ull, 5755796442315585097ull}}, {{8280551326052191930ull, 7322911436812370225ull, 14394061247160213361ull, 7194745552894481371ull}}, {{14962375175992627817ull, 13765325314442850685ull, 13380890540522878797ull, 8993431941118101714ull}}, {{11657327494209086338ull, 10909171330740475630ull, 12974742606254187152ull, 5620894963198813571ull}}, {{5348287330906582114ull, 13636464163425594538ull, 11606742239390346036ull, 7026118703998516964ull}}, {{15908731200488003450ull, 17045580204281993172ull, 14508427799237932545ull, 8782648379998146205ull}}, {{719584963450226349ull, 3735958600035163877ull, 11373610383737401793ull, 5489155237498841378ull}}, {{5511167222740170840ull, 9281634268471342750ull, 4993640942816976433ull, 6861444046873551723ull}}, {{16112331065279989357ull, 16213728854016566341ull, 1630365160093832637ull, 8576805058591939654ull}}, {{12376049925013687301ull, 12439423542974047915ull, 14854036280340809110ull, 5360503161619962283ull}}, {{10858376387839721222ull, 6325907391862784086ull, 13955859331998623484ull, 6700628952024952854ull}}, {{4349598447944875719ull, 7907384239828480108ull, 8221452128143503547ull, 8375786190031191068ull}}, {{11941871066820323132ull, 2636272140679106115ull, 14361779616944465525ull, 5234866368769494417ull}}, {{10315652815098016011ull, 7907026194276270548ull, 4117166465898418194ull, 6543582960961868022ull}}, {{12894566018872520014ull, 660410705990562377ull, 14369830119227798551ull, 8179478701202335027ull}}, {{1141574734154243153ull, 7330285718885183342ull, 6675300815303680142ull, 5112174188251459392ull}}, {{10650340454547579749ull, 18386229185461254985ull, 8344126019129600177ull, 6390217735314324240ull}}, {{17924611586611862590ull, 9147728426544405019ull, 10430157523912000222ull, 7987772169142905300ull}}, {{8897039232418720167ull, 1105644248162865233ull, 15742220489299775947ull, 4992357605714315812ull}}, {{15732985058950788113ull, 15217113365485745253ull, 1231031537915168317ull, 6240447007142894766ull}}, {{5831173268406321429ull, 5186333651575017855ull, 10762161459248736205ull, 7800558758928618457ull}}, {{10562012320395032749ull, 5547301541448080111ull, 18255565958098929888ull, 4875349224330386535ull}}, {{8590829382066403032ull, 6934126926810100139ull, 18207771429196274456ull, 6094186530412983169ull}}, {{6126850709155615886ull, 8667658658512625174ull, 8924656231213179358ull, 7617733163016228962ull}}, {{17664339748504423641ull, 805600643143002829ull, 10189596162935625003ull, 4761083226885143101ull}}, {{8245366630348365839ull, 14842058859210917249ull, 17348681222096919157ull, 5951354033606428876ull}}, {{14918394306362845203ull, 4717515518731482849ull, 3239107453911597331ull, 7439192542008036096ull}}, {{2406467413835696396ull, 642604189993482829ull, 2024442158694748332ull, 4649495338755022560ull}}, {{7619770285722008399ull, 803255237491853536ull, 2530552698368435415ull, 5811869173443778200ull}}, {{9524712857152510499ull, 14839127102146980632ull, 3163190872960544268ull, 7264836466804722750ull}}, {{11905891071440638123ull, 102164803974174174ull, 13177360628055456144ull, 9081045583505903437ull}}, {{2829495901223010923ull, 63853002483858859ull, 10541693401748354042ull, 5675653489691189648ull}}, {{17371927931810927366ull, 9303188289959599381ull, 13177116752185442552ull, 7094566862113987060ull}}, {{7879851859481495495ull, 11628985362449499227ull, 16471395940231803190ull, 8868208577642483825ull}}, {{2619064402962240733ull, 2656429833103549113ull, 3377093435003795138ull, 5542630361026552391ull}}, {{7885516522130188820ull, 12543909328234212199ull, 18056424849036907634ull, 6928287951283190488ull}}, {{5245209634235348120ull, 6456514623437989441ull, 4123786987586582927ull, 8660359939103988111ull}}, {{14807471067465562335ull, 10952850667289825256ull, 9494895894882696185ull, 5412724961939992569ull}}, {{62594760622401303ull, 18302749352539669475ull, 16480305887030758135ull, 6765906202424990711ull}}, {{13913301506060165341ull, 18266750672247198939ull, 15988696340361059765ull, 8457382753031238389ull}}, {{6389970432073909386ull, 13722562179368193289ull, 12298778221939356305ull, 5285864220644523993ull}}, {{12599149058519774637ull, 3318144668928077899ull, 1538414722142031670ull, 6607330275805654992ull}}, {{11137250304722330392ull, 13371052873014873182ull, 1923018402677539587ull, 8259162844757068740ull}}, {{2349095422024068591ull, 6051065036420601787ull, 10425258538528238050ull, 5161976777973167962ull}}, {{16771427332812249451ull, 16787203332380528041ull, 3808201136305521754ull, 6452470972466459953ull}}, {{7129226110733148101ull, 11760632128620884244ull, 9371937438809290097ull, 8065588715583074941ull}}, {{13679138356062993371ull, 432866052746970796ull, 8163303908469500263ull, 5040992947239421838ull}}, {{17098922945078741714ull, 14376140621215877207ull, 980757848732099520ull, 6301241184049277298ull}}, {{16761967662921039239ull, 17970175776519846509ull, 10449319347769900208ull, 7876551480061596622ull}}, {{12782072798539343476ull, 11231359860324904068ull, 1919138573928799726ull, 4922844675038497889ull}}, {{15977590998174179345ull, 4815827788551354277ull, 7010609235838387562ull, 6153555843798122361ull}}, {{6136930692435560469ull, 15243156772543968655ull, 13374947563225372356ull, 7691944804747652951ull}}, {{10753110710413307150ull, 303600945985204601ull, 15276871254656939579ull, 4807465502967283094ull}}, {{18053074406444021841ull, 14214559237763669463ull, 9872717031466398665ull, 6009331878709103868ull}}, {{17954656989627639397ull, 3933140991922423117ull, 12340896289332998332ull, 7511664848386379835ull}}, {{13527503627730968575ull, 11681585156806290256ull, 5407217171619430005ull, 4694790530241487397ull}}, {{16909379534663710719ull, 766923390725699108ull, 11370707482951675411ull, 5868488162801859246ull}}, {{2689980344620086783ull, 14793712293689287598ull, 4990012316834818455ull, 7335610203502324058ull}}, {{12585847467629884286ull, 13880454348684221593ull, 15460887432898298877ull, 9169512754377905072ull}}, {{948625639627595823ull, 10981126977141332448ull, 9663054645561436798ull, 5730945471486190670ull}}, {{1185782049534494779ull, 4503036684571889752ull, 2855446270097020190ull, 7163681839357738338ull}}, {{1482227561918118473ull, 14852167892569637998ull, 12792679874476051045ull, 8954602299197172922ull}}, {{14761450281480987758ull, 11588447942069717700ull, 12607110939974919807ull, 5596626436998233076ull}}, {{5068778141683081ull, 9873873909159759222ull, 15758888674968649759ull, 6995783046247791345ull}}, {{9229708009531879659ull, 7730656368022311123ull, 5863552788428648487ull, 8744728807809739182ull}}, {{3462724496743730835ull, 11749189257655026308ull, 17499778548050069016ull, 5465455504881086988ull}}, {{4328405620929663544ull, 14686486572068782885ull, 3427979111353034654ull, 6831819381101358736ull}}, {{10022193044589467334ull, 9134736178231202798ull, 4284973889191293318ull, 8539774226376698420ull}}, {{1652184634441029180ull, 1097524092967113845ull, 11901480717599334132ull, 5337358891485436512ull}}, {{6676916811478674379ull, 1371905116208892306ull, 14876850896999167665ull, 6671698614356795640ull}}, {{17569518051203118781ull, 6326567413688503286ull, 149319547539407965ull, 8339623267945994551ull}}, {{6369262763574561335ull, 6259947642769008506ull, 7010853744853211834ull, 5212264542466246594ull}}, {{17184950491322977476ull, 17048306590316036440ull, 17986939217921290600ull, 6515330678082808242ull}}, {{3034444040444170229ull, 2863639164185493935ull, 13260301985546837443ull, 8144163347603510303ull}}, {{8814056552918688249ull, 17930675542111791373ull, 15205217768607855257ull, 5090102092252193939ull}}, {{15629256709575748215ull, 8578286372357575504ull, 14394836192332431168ull, 6362627615315242424ull}}, {{1089826813260133653ull, 10722857965446969381ull, 17993545240415538960ull, 7953284519144053030ull}}, {{2986984767501277485ull, 6701786228404355863ull, 6634279756832323946ull, 4970802824465033144ull}}, {{17568789014658760569ull, 17600604822360220636ull, 8292849696040404932ull, 6213503530581291430ull}}, {{3514242194613899095ull, 3554011954240724180ull, 1142690083195730358ull, 7766879413226614288ull}}, {{11419773408488462742ull, 16056315526682616324ull, 714181301997331473ull, 4854299633266633930ull}}, {{14274716760610578428ull, 6235336353071106693ull, 10116098664351440150ull, 6067874541583292412ull}}, {{4008337895481059323ull, 17017542478193659175ull, 12645123330439300187ull, 7584843176979115515ull}}, {{9422740212316743933ull, 8330121039657343032ull, 5597359072310868665ull, 4740526985611947197ull}}, {{11778425265395929916ull, 15024337317999066694ull, 11608384858815973735ull, 5925658732014933996ull}}, {{5499659544890136587ull, 14168735629071445464ull, 14510481073519967169ull, 7407073415018667495ull}}, {{3437287215556335367ull, 1937930740528571559ull, 15986579698591061337ull, 4629420884386667184ull}}, {{18131667074727582921ull, 7034099444088102352ull, 1536480549529275055ull, 5786776105483333981ull}}, {{4217839769699927035ull, 4180938286682740037ull, 6532286705338981723ull, 7233470131854167476ull}}, {{9883985730552296697ull, 614486839926037142ull, 8165358381673727154ull, 9041837664817709345ull}}, {{1565805063167797532ull, 4995740293381161118ull, 16632564034614549231ull, 5651148540511068340ull}}, {{11180628365814522723ull, 1632989348299063493ull, 2343960969558634923ull, 7063935675638835426ull}}, {{140727401985989691ull, 15876294740655993079ull, 12153323248803069461ull, 8829919594548544282ull}}, {{7005483653882325413ull, 12228527222123689626ull, 12207513048929306317ull, 5518699746592840176ull}}, {{17980226604207682574ull, 1450600972372448320ull, 15259391311161632897ull, 6898374683241050220ull}}, {{4028539181550051602ull, 6424937233892948305ull, 627495065242489505ull, 8622968354051312776ull}}, {{14047052034537252011ull, 15544800817251562450ull, 392184415776555940ull, 5389355221282070485ull}}, {{8335443006316789206ull, 984256947854901447ull, 5101916538148082830ull, 6736694026602588106ull}}, {{5807617739468598603ull, 10453693221673402617ull, 15600767709539879345ull, 8420867533253235132ull}}, {{15158976133236343887ull, 18062773309614346395ull, 527107781607648782ull, 5263042208283271958ull}}, {{14337034148118041955ull, 13355094600163157186ull, 9882256763864336786ull, 6578802760354089947ull}}, {{8697920648292776636ull, 7470496213349170675ull, 7741134936403033079ull, 8223503450442612434ull}}, {{3130357395969291446ull, 11586589160984313528ull, 9449895353679283578ull, 5139689656526632771ull}}, {{3912946744961614307ull, 5259864414375616102ull, 7200683173671716569ull, 6424612070658290964ull}}, {{14114555468056793691ull, 11186516536396908031ull, 9000853967089645711ull, 8030765088322863705ull}}, {{15739126195176577913ull, 13909101862889149375ull, 17154748775499498329ull, 5019228180201789815ull}}, {{15062221725543334487ull, 3551319273329273007ull, 16831749950946985008ull, 6274035225252237269ull}}, {{14216091138501780205ull, 4439149091661591259ull, 7204629383401567548ull, 7842544031565296587ull}}, {{6579213952349918676ull, 11997840219143270345ull, 2197050355412285765ull, 4901590019728310367ull}}, {{12835703458864786249ull, 1162242218646924219ull, 16581370999547520919ull, 6126987524660387958ull}}, {{11432943305153594908ull, 15287860828590818986ull, 11503341712579625340ull, 7658734405825484948ull}}, {{11757275584148384721ull, 331540981014486058ull, 16412960607217041646ull, 4786709003640928092ull}}, {{5473222443330705094ull, 9637798263122883381ull, 2069456685311750441ull, 5983386254551160116ull}}, {{11453214072590769271ull, 16658933847330992130ull, 2586820856639688051ull, 7479232818188950145ull}}, {{11769944813796618699ull, 8105990645368176129ull, 13145978081468274792ull, 4674520511368093840ull}}, {{877372961963609661ull, 10132488306710220162ull, 16432472601835343490ull, 5843150639210117300ull}}, {{10320088239309287884ull, 3442238346532999394ull, 2093846678584627747ull, 7303938299012646626ull}}, {{3676738262281834047ull, 18137855988448412955ull, 11840680385085560491ull, 9129922873765808282ull}}, {{18438862478422003944ull, 9030316983566564144ull, 12012111259105863211ull, 5706201796103630176ull}}, {{4601834024317953313ull, 6676210211030817277ull, 15015139073882329014ull, 7132752245129537720ull}}, {{10363978548824829546ull, 17568634800643297404ull, 322179768643359651ull, 8915940306411922151ull}}, {{15700858629870294274ull, 8674553741188366925ull, 7118891383043181638ull, 5572462691507451344ull}}, {{5791015232055704131ull, 1619820139630682849ull, 8898614228803977048ull, 6965578364384314180ull}}, {{11850455058497018067ull, 2024775174538353561ull, 11123267786004971310ull, 8706972955480392725ull}}, {{489005383919554436ull, 15100542539368634688ull, 9257885375466801020ull, 5441858097175245453ull}}, {{611256729899443045ull, 428934100501241744ull, 16184042737760889180ull, 6802322621469056816ull}}, {{764070912374303806ull, 536167625626552180ull, 1783309348491559859ull, 8502903276836321021ull}}, {{9700916357088715687ull, 16476005830512452776ull, 3420411352020918863ull, 5314314548022700638ull}}, {{12126145446360894609ull, 15983321269713178066ull, 13498886226880924387ull, 6642893185028375797ull}}, {{5934309771096342453ull, 15367465568714084679ull, 3038549728318991772ull, 8303616481285469747ull}}, {{10626472634576295889ull, 381293943591527116ull, 18039994644695227522ull, 5189760300803418591ull}}, {{13283090793220369861ull, 9699989466344184703ull, 17938307287441646498ull, 6487200376004273239ull}}, {{11992177473098074423ull, 2901614796075455071ull, 17811198090874670219ull, 8109000470005341549ull}}, {{14412639948327378370ull, 17954410312043017083ull, 13437841816010362838ull, 5068125293753338468ull}}, {{13404113916981835059ull, 13219640853198995546ull, 16797302270012953548ull, 6335156617191673085ull}}, {{7531770359372518015ull, 16524551066498744433ull, 7161569782234028223ull, 7918945771489591357ull}}, {{16236571520676293520ull, 17245373444202797126ull, 6781824123109961591ull, 4949341107180994598ull}}, {{11072342363990591092ull, 16945030786826108504ull, 17700652190742227797ull, 6186676383976243247ull}}, {{13840427954988238864ull, 7346230428250471918ull, 17514129220000396843ull, 7733345479970304059ull}}, {{4038581453440261386ull, 2285551008442850997ull, 8640487753286554075ull, 4833340924981440037ull}}, {{9659912835227714637ull, 16691996815835727458ull, 15412295710035580497ull, 6041676156226800046ull}}, {{2851519007179867488ull, 7029937964512495611ull, 10041997600689699814ull, 7552095195283500058ull}}, {{17923100443983274844ull, 18228769283102473468ull, 10887934518858450287ull, 4720059497052187536ull}}, {{3957131481269541939ull, 18174275585450703932ull, 13609918148573062859ull, 5900074371315234420ull}}, {{4946414351586927424ull, 18106158463385992011ull, 17012397685716328574ull, 7375092964144043025ull}}, {{1571331921056271376ull, 13409326042377714206ull, 7430439051863247006ull, 9218866205180053782ull}}, {{14817140505942333322ull, 3769142758058683474ull, 32338388987141475ull, 5761791378237533614ull}}, {{9298053595573140844ull, 99742429145966439ull, 9263795023088702652ull, 7202239222796917017ull}}, {{7010880976039038151ull, 124678036432458049ull, 16191429797288266219ull, 9002799028496146271ull}}, {{15911015656092868605ull, 16218824837266143944ull, 17037172650946248242ull, 5626749392810091419ull}}, {{1442025496406534140ull, 11050159009727904123ull, 16684779795255422399ull, 7033436741012614274ull}}, {{15637589925790331387ull, 9201012743732492249ull, 11632602707214502191ull, 8791795926265767843ull}}, {{2855964675977875261ull, 12668161992473889512ull, 4964533682795369917ull, 5494872453916104902ull}}, {{3569955844972344076ull, 2000144435310198178ull, 15429039140348988205ull, 6868590567395131127ull}}, {{13685816843070205903ull, 7111866562565135626ull, 14674612907008847352ull, 8585738209243913909ull}}, {{13165321545346266593ull, 4444916601603209766ull, 11477476076094223547ull, 5366086380777446193ull}}, {{7233279894828057434ull, 944459733576624304ull, 511787039835615722ull, 6707607975971807742ull}}, {{9041599868535071792ull, 10403946703825556188ull, 9863105836649295460ull, 8384509969964759677ull}}, {{14874371954689195678ull, 15725838726745748425ull, 8470284157119503614ull, 5240318731227974798ull}}, {{4757906888079330886ull, 10433926371577409724ull, 1364483159544603710ull, 6550398414034968498ull}}, {{5947383610099163607ull, 3819035927616986347ull, 10928975986285530446ull, 8187998017543710622ull}}, {{1411271747098283302ull, 16221955510042780179ull, 2218923973001068624ull, 5117498760964819139ull}}, {{15599147739155017840ull, 1830700313843923607ull, 16608713021533499493ull, 6396873451206023923ull}}, {{14887248655516384396ull, 6900061410732292413ull, 16149205258489486462ull, 7996091814007529904ull}}, {{11610373418911434200ull, 18147596436989846470ull, 10093253286555929038ull, 4997557383754706190ull}}, {{5289594736784516941ull, 13461123509382532280ull, 3393194571340135490ull, 6246946729693382738ull}}, {{6611993420980646177ull, 7603032349873389542ull, 13464865251029945171ull, 7808683412116728422ull}}, {{17967553943395067573ull, 2446052209457174511ull, 3803854763466327828ull, 4880427132572955264ull}}, {{17847756410816446562ull, 3057565261821468139ull, 4754818454332909785ull, 6100533915716194080ull}}, {{17698009495093170298ull, 8433642595704223078ull, 5943523067916137231ull, 7625667394645242600ull}}, {{6449569916005843532ull, 12188555649956221280ull, 3714701917447585769ull, 4766042121653276625ull}}, {{8061962395007304415ull, 1400636507163112888ull, 9255063415236870116ull, 5957552652066595781ull}}, {{10077452993759130519ull, 1750795633953891110ull, 16180515287473475549ull, 7446940815083244726ull}}, {{1686722102672068671ull, 3400090280434875896ull, 5501136036243534314ull, 4654338009427027954ull}}, {{2108402628340085838ull, 13473484887398370678ull, 16099792082159193700ull, 5817922511783784942ull}}, {{11858875322279883105ull, 16841856109247963347ull, 10901368065844216317ull, 7272403139729731178ull}}, {{10211908134422465978ull, 7217262081277790472ull, 4403338045450494589ull, 9090503924662163973ull}}, {{6382442584014041236ull, 6816631810012312997ull, 5057929287620253070ull, 5681564952913852483ull}}, {{12589739248444939449ull, 17744161799370167054ull, 1710725591097928433ull, 7101956191142315604ull}}, {{6513802023701398503ull, 8345144193930545106ull, 2138406988872410542ull, 8877445238927894505ull}}, {{8682812283240761969ull, 604029102779202787ull, 12865719414113726349ull, 5548403274329934065ull}}, {{6241829335623564557ull, 5366722396901391388ull, 2247091212359994224ull, 6935504092912417582ull}}, {{7802286669529455696ull, 6708402996126739235ull, 12032236052304768588ull, 8669380116140521977ull}}, {{2570586159242215858ull, 13416123909433987830ull, 602618505049398511ull, 5418362572587826236ull}}, {{12436604735907545631ull, 12158468868365096883ull, 753273131311748139ull, 6772953215734782795ull}}, {{10934069901457044134ull, 10586400067028983200ull, 14776649469421848886ull, 8466191519668478493ull}}, {{6833793688410652584ull, 2004814023465726596ull, 11541248927602349506ull, 5291369699792799058ull}}, {{8542242110513315730ull, 11729389566186934053ull, 5203189122648161074ull, 6614212124740998823ull}}, {{15289488656569032566ull, 5438364920878891758ull, 1892300384882813439ull, 8267765155926248529ull}}, {{4944244391928257450ull, 10316507103190389205ull, 12711902786620228159ull, 5167353222453905330ull}}, {{10791991508337709716ull, 8283947860560598602ull, 6666506446420509391ull, 6459191528067381663ull}}, {{4266617348567361337ull, 5743248807273360349ull, 3721447039598248835ull, 8073989410084227079ull}}, {{4972478852068294788ull, 1283687495332156266ull, 9243433427389987378ull, 5046243381302641924ull}}, {{15438970601940144293ull, 10827981406019971140ull, 11554291784237484222ull, 6307804226628302405ull}}, {{851969178715628750ull, 4311604720670188118ull, 607806675014691566ull, 7884755283285378007ull}}, {{14367538791979431681ull, 16529811005701031285ull, 7297408199525264084ull, 4927972052053361254ull}}, {{4124365434692125889ull, 2215519683416737491ull, 18345132286261355914ull, 6159965065066701567ull}}, {{543770774937769457ull, 11992771641125697672ull, 18319729339399306988ull, 7699956331333376959ull}}, {{339856734336105911ull, 16718854312558336853ull, 18367359864765648723ull, 4812472707083360599ull}}, {{5036506936347520293ull, 16286881872270533162ull, 18347513812529673000ull, 6015590883854200749ull}}, {{15519005707289176174ull, 1911858266628614836ull, 9099334210379927539ull, 7519488604817750937ull}}, {{476006530200959301ull, 17335812481138741937ull, 17216298927555924471ull, 4699680378011094335ull}}, {{5206694181178587030ull, 17058079582996039517ull, 16908687641017517685ull, 5874600472513867919ull}}, {{11120053744900621691ull, 7487541423462885684ull, 16524173532844509203ull, 7343250590642334899ull}}, {{13900067181125777114ull, 4747740760901219201ull, 16043530897628248600ull, 9179063238302918624ull}}, {{1770012960562528840ull, 2967337975563262001ull, 10027206811017655375ull, 5736914523939324140ull}}, {{6824202219130548954ull, 17544230524736241213ull, 12534008513772069218ull, 7171143154924155175ull}}, {{13141938792340574097ull, 12706916119065525708ull, 11055824623787698619ull, 8963928943655193969ull}}, {{17437083782067634619ull, 5635979565202259615ull, 18439105435935781397ull, 5602455589784496230ull}}, {{17184668709157155369ull, 11656660474930212423ull, 13825509758064950938ull, 7003069487230620288ull}}, {{16869149868019056307ull, 5347453556807989721ull, 17281887197581188673ull, 8753836859038275360ull}}, {{3625689639870828336ull, 14871373519073463336ull, 10801179498488242920ull, 5471148036898922100ull}}, {{4532112049838535420ull, 142472825132277554ull, 13501474373110303651ull, 6838935046123652625ull}}, {{14888512099152945083ull, 14013149086697510654ull, 3041784911105715851ull, 8548668807654565782ull}}, {{4693634043543202773ull, 6452375169972250207ull, 15736173624723236119ull, 5342918004784103613ull}}, {{1255356536001615562ull, 3453782944037924855ull, 5835158975621881437ull, 6678647505980129517ull}}, {{15404253725284183165ull, 8928914698474793972ull, 11905634737954739700ull, 8348309382475161896ull}}, {{404286541447838670ull, 14803943723401522041ull, 7441021711221712312ull, 5217693364046976185ull}}, {{5117044195237186241ull, 58185580542350935ull, 13912963157454528295ull, 6522116705058720231ull}}, {{1784619225619094898ull, 13907790030960102381ull, 12779517928390772464ull, 8152645881323400289ull}}, {{3421230025225628263ull, 8692368769350063988ull, 1069669677603150934ull, 5095403675827125181ull}}, {{4276537531532035329ull, 1642088924832804177ull, 5948773115431326572ull, 6369254594783906476ull}}, {{9957357932842432065ull, 2052611156041005221ull, 7435966394289158215ull, 7961568243479883095ull}}, {{8529191717240213993ull, 8200411000166710119ull, 11565008024071805740ull, 4975980152174926934ull}}, {{6049803628122879587ull, 10250513750208387649ull, 5232887993234981367ull, 6219975190218658668ull}}, {{12173940553580987388ull, 8201456169333096657ull, 6541109991543726709ull, 7774968987773323335ull}}, {{691183818347035261ull, 7431753115046879363ull, 11005722772355911049ull, 4859355617358327084ull}}, {{14699037828215957789ull, 13901377412235987107ull, 13757153465444888811ull, 6074194521697908855ull}}, {{13762111266842559332ull, 12765035746867595980ull, 12584755813378723110ull, 7592743152122386069ull}}, {{17824691578631375390ull, 3366461323364859583ull, 10171315392575395896ull, 4745464470076491293ull}}, {{17669178454861831334ull, 4208076654206074479ull, 17325830259146632774ull, 5931830587595614116ull}}, {{17474787050149901263ull, 14483467854612368907ull, 3210543750223739351ull, 7414788234494517646ull}}, {{8615898897129994338ull, 15969696436773812423ull, 15841647899172000806ull, 4634242646559073528ull}}, {{6158187602985105018ull, 10738748509112489721ull, 1355315800255449392ull, 5792803308198841911ull}}, {{12309420522158769176ull, 13423435636390612151ull, 15529202805601475452ull, 7241004135248552388ull}}, {{10775089634271073566ull, 16779294545488265189ull, 964759433292292699ull, 9051255169060690486ull}}, {{9040274030633114931ull, 8181216081716471791ull, 14438032701089846649ull, 5657034480662931553ull}}, {{6688656519864005760ull, 14838206120572977643ull, 4212482821080144599ull, 7071293100828664442ull}}, {{3749134631402619296ull, 13936071632288834150ull, 14488975563204956557ull, 8839116376035830552ull}}, {{16178267199908800772ull, 11015887779394215295ull, 9055609727003097848ull, 5524447735022394095ull}}, {{15611147981458613061ull, 13769859724242769119ull, 6707826140326484406ull, 6905559668777992619ull}}, {{14902248958395878422ull, 7988952618448685591ull, 3773096656980717604ull, 8631949585972490774ull}}, {{16231434626638505870ull, 14216467423385204302ull, 16193243465895112214ull, 5394968491232806733ull}}, {{11065921246443356529ull, 8547212242376729570ull, 6406496277086726556ull, 6743710614041008417ull}}, {{4609029521199419854ull, 10684015302970911963ull, 12619806364785796099ull, 8429638267551260521ull}}, {{574800441535943457ull, 4371666555143126025ull, 969849950350040706ull, 5268523917219537826ull}}, {{5330186570347317225ull, 14687955230783683339ull, 10435684474792326690ull, 6585654896524422282ull}}, {{2051047194506758627ull, 9136572001624828366ull, 3821233556635632555ull, 8232068620655527853ull}}, {{15116962551848887854ull, 3404514491801823776ull, 4694113982110964299ull, 5145042887909704908ull}}, {{449459116101558201ull, 18090701170034443433ull, 5867642477638705373ull, 6431303609887131135ull}}, {{5173509913554335655ull, 8778318407260890579ull, 2722867078620993813ull, 8039129512358913919ull}}, {{927600686757765833ull, 7792292013751750564ull, 8619320951779202989ull, 5024455945224321199ull}}, {{1159500858447207291ull, 14352051035617076109ull, 6162465171296615832ull, 6280569931530401499ull}}, {{6061062091486397018ull, 17940063794521345136ull, 3091395445693381886ull, 7850712414413001874ull}}, {{3788163807178998136ull, 6600853853148452806ull, 6543808171985751583ull, 4906695259008126171ull}}, {{13958576795828523478ull, 3639381298008178103ull, 3568074196554801575ull, 6133369073760157714ull}}, {{12836534976358266443ull, 18384284677792386341ull, 13683464782548277776ull, 7666711342200197142ull}}, {{10328677369437610479ull, 11490177923620241463ull, 3940479470665285706ull, 4791694588875123214ull}}, {{8299160693369625195ull, 5139350367670526021ull, 14148971375186382941ull, 5989618236093904017ull}}, {{14985636885139419398ull, 11035873978015545430ull, 3851156163700814964ull, 7487022795117380022ull}}, {{4754337034784749220ull, 16120793273114491702ull, 16242030657595173064ull, 4679389246948362513ull}}, {{15166293330335712333ull, 1704247517683563011ull, 6467480266711802619ull, 5849236558685453142ull}}, {{14346180644492252512ull, 15965367452386617476ull, 17307722370244529081ull, 7311545698356816427ull}}, {{17932725805615315639ull, 6121651260201108133ull, 17022966944378273448ull, 9139432122946020534ull}}, {{13513796637723266227ull, 3826032037625692583ull, 6027668321809033001ull, 5712145076841262834ull}}, {{12280559778726694879ull, 9394226065459503633ull, 16757957439116067059ull, 7140181346051578542ull}}, {{1515641668126204887ull, 7131096563396991638ull, 11724074762040308016ull, 8925226682564473178ull}}, {{14782334097861041767ull, 4456935352123119773ull, 11939232744702580414ull, 5578266676602795736ull}}, {{4642859567044138496ull, 14794541227008675525ull, 14924040930878225517ull, 6972833345753494670ull}}, {{10415260477232561024ull, 4658118478478680694ull, 9431679126743006089ull, 8716041682191868338ull}}, {{1897851779842962736ull, 14440539095117645194ull, 10506485472641766709ull, 5447526051369917711ull}}, {{11595686761658479228ull, 4215615813614892780ull, 8521420822374820483ull, 6809407564212397139ull}}, {{14494608452073099035ull, 657833748591228071ull, 6040090009541137700ull, 8511759455265496424ull}}, {{15976659310186768753ull, 9634518129724293352ull, 3775056255963211062ull, 5319849659540935265ull}}, {{1524080064023909325ull, 2819775625300590883ull, 9330506338381401732ull, 6649812074426169081ull}}, {{15740158135312050368ull, 3524719531625738603ull, 16274818941404140069ull, 8312265093032711351ull}}, {{7531755825356337528ull, 4508792716479780579ull, 17089290866018669399ull, 5195165683145444594ull}}, {{4803008763268034006ull, 1024304877172337820ull, 12138241545668560941ull, 6493957103931805743ull}}, {{6003760954085042508ull, 5892067114892810179ull, 10561115913658313272ull, 8117446379914757179ull}}, {{1446507587089457616ull, 3682541946808006362ull, 4294854436822751843ull, 5073403987446723237ull}}, {{11031506520716597827ull, 18438235488792171664ull, 9980254064455827707ull, 6341754984308404046ull}}, {{13789383150895747284ull, 18436108342562826676ull, 3251945543715008826ull, 7927193730385505058ull}}, {{17841736506164617861ull, 16134253732529154576ull, 6644151983249268420ull, 4954496081490940661ull}}, {{3855426558996220710ull, 1721073091951891605ull, 12916875997488973430ull, 6193120101863675826ull}}, {{9430969217172663791ull, 11374713401794640314ull, 6922722960006440979ull, 7741400127329594783ull}}, {{10506041779160302774ull, 4803352866907956244ull, 11244230877645107468ull, 4838375079580996739ull}}, {{13132552223950378467ull, 6004191083634945305ull, 9443602578628996431ull, 6047968849476245924ull}}, {{2580632224655809372ull, 2893552836116293728ull, 11804503223286245539ull, 7559961061845307405ull}}, {{1612895140409880857ull, 17949371587068541244ull, 9683657523767597413ull, 4724975663653317128ull}}, {{2016118925512351072ull, 8601656428553512843ull, 12104571904709496767ull, 5906219579566646410ull}}, {{16355206712172602551ull, 6140384517264503149ull, 5907342844032095151ull, 7382774474458308013ull}}, {{12527847204321570547ull, 10755269350931396324ull, 5997932286733753421ull, 4614234046536442508ull}}, {{15659809005401963183ull, 18055772707091633309ull, 7497415358417191776ull, 5767792558170553135ull}}, {{5739703201470290267ull, 4122971810154990021ull, 4760083179594101817ull, 7209740697713191419ull}}, {{11786315020265250738ull, 9765400781121125430ull, 1338417956065239367ull, 9012175872141489274ull}}, {{2754760869238393807ull, 13020904515841785250ull, 5448197240968162508ull, 5632609920088430796ull}}, {{12666823123402768067ull, 16276130644802231562ull, 6810246551210203135ull, 7040762400110538495ull}}, {{6610156867398684276ull, 15733477287575401549ull, 3901122170585366015ull, 8800953000138173119ull}}, {{6437191051337871624ull, 16750952332375707824ull, 9355730384256935615ull, 5500595625086358199ull}}, {{8046488814172339530ull, 16327004397042246876ull, 7082976961893781615ull, 6875744531357947749ull}}, {{10058111017715424413ull, 15797069477875420691ull, 13465407220794614923ull, 8594680664197434686ull}}, {{3980476376858446306ull, 7567325414458443980ull, 3804193494569246423ull, 5371675415123396679ull}}, {{4975595471073057883ull, 4847470749645667071ull, 143555849784170125ull, 6714594268904245849ull}}, {{1607808320413934449ull, 10671024455484471743ull, 4791130830657600560ull, 8393242836130307311ull}}, {{7922409227899790887ull, 6669390284677794839ull, 9911985796802082206ull, 5245776772581442069ull}}, {{5291325516447350705ull, 17560109892702019357ull, 17001668264429990661ull, 6557220965726802586ull}}, {{11225842913986576285ull, 8115079310595360484ull, 12028713293682712519ull, 8196526207158503233ull}}, {{16239523858096385986ull, 11989453596763182158ull, 600416780910613468ull, 5122828879474064521ull}}, {{11076032785765706675ull, 14986816995953977698ull, 5362206994565654739ull, 6403536099342580651ull}}, {{4621668945352357535ull, 14121835226515084219ull, 2091072724779680520ull, 8004420124178225814ull}}, {{582700081631529508ull, 8826147016571927637ull, 15141978508269464037ull, 5002762577611391133ull}}, {{5340061120466799788ull, 15644369789142297450ull, 5092415080054666334ull, 6253453222014238917ull}}, {{15898448437438275543ull, 10332090199573096004ull, 10977204868495720822ull, 7816816527517798646ull}}, {{713158236544146407ull, 1845870356305797099ull, 2249067024382437610ull, 4885510329698624154ull}}, {{14726505850962346720ull, 11530709982237022181ull, 12034705817332822820ull, 6106887912123280192ull}}, {{4573074258420769688ull, 14413387477796277727ull, 15043382271666028525ull, 7633609890154100240ull}}, {{9775700439154062911ull, 11314210182836367531ull, 9402113919791267828ull, 4771006181346312650ull}}, {{7607939530515190735ull, 14142762728545459414ull, 2529270362884308977ull, 5963757726682890813ull}}, {{286552376289212611ull, 3843395355399660556ull, 7773273972032774126ull, 7454697158353613516ull}}, {{9402467272035533690ull, 16237180152406951559ull, 14081668269375259636ull, 4659185723971008447ull}}, {{7141398071617029208ull, 1849731116799137833ull, 12990399318291686642ull, 5823982154963760559ull}}, {{13538433607948674414ull, 11535535932853698099ull, 11626313129437220398ull, 7279977693704700699ull}}, {{12311355991508455114ull, 5196047879212346816ull, 9921205393369137594ull, 9099972117130875874ull}}, {{7694597494692784446ull, 7859215942935104664ull, 10812439389283098900ull, 5687482573206797421ull}}, {{9618246868365980558ull, 9824019928668880830ull, 18127235255031261529ull, 7109353216508496776ull}}, {{2799436548602699889ull, 16891710929263488942ull, 4212299995079525295ull, 8886691520635620971ull}}, {{15584705898158851143ull, 17474848358430762444ull, 326844487711009357ull, 5554182200397263107ull}}, {{1034138298989012312ull, 8008502392756289344ull, 14243613664920925409ull, 6942727750496578883ull}}, {{1292672873736265390ull, 14622314009372749584ull, 13192831062723768857ull, 8678409688120723604ull}}, {{807920546085165869ull, 2221417228216886634ull, 17468891451057131344ull, 5424006055075452252ull}}, {{10233272719461233144ull, 2776771535271108292ull, 3389370240111862564ull, 6780007568844315316ull}}, {{12791590899326541430ull, 3470964419088885365ull, 4236712800139828205ull, 8475009461055394145ull}}, {{10300587321292782346ull, 4475195771144247305ull, 14177160546155862388ull, 5296880913159621340ull}}, {{17487420170043365836ull, 5593994713930309131ull, 17721450682694827985ull, 6621101141449526675ull}}, {{17247589194126819391ull, 11604179410840274318ull, 17540127334941147077ull, 8276376426811908344ull}}, {{6168057227901874216ull, 9558455140988865401ull, 10962579584338216923ull, 5172735266757442715ull}}, {{12321757553304730674ull, 7336382907808693847ull, 9091538461995383250ull, 6465919083446803394ull}}, {{10790510923203525438ull, 18393850671615643117ull, 2141051040639453254ull, 8082398854308504243ull}}, {{9049912336215897351ull, 6884470651332389044ull, 17479057964895515948ull, 5051499283942815151ull}}, {{11312390420269871688ull, 8605588314165486305ull, 17237136437692007031ull, 6314374104928518939ull}}, {{305429970055175898ull, 6145299374279469978ull, 16934734528687620885ull, 7892967631160648674ull}}, {{4802579749711872841ull, 6146655118138362688ull, 15195895098857150957ull, 4933104769475405421ull}}, {{6003224687139841051ull, 12295004916100341264ull, 5159810818289274984ull, 6166380961844256777ull}}, {{7504030858924801313ull, 15368756145125426580ull, 11061449541288981634ull, 7707976202305320971ull}}, {{13913391323682776629ull, 14217158609130779516ull, 4607562954091919569ull, 4817485126440825607ull}}, {{17391739154603470786ull, 3936390206131310683ull, 1147767674187511558ull, 6021856408051032009ull}}, {{17127987924826950579ull, 14143859794518914162ull, 6046395611161777351ull, 7527320510063790011ull}}, {{15316678471444232016ull, 15757441399215403207ull, 1473154247762416892ull, 4704575318789868757ull}}, {{14534162070877902116ull, 1250057675309702393ull, 6453128828130409020ull, 5880719148487335946ull}}, {{4332644533315213932ull, 1562572094137127992ull, 17289783072017787083ull, 7350898935609169932ull}}, {{5415805666644017415ull, 15788273172953573702ull, 3165484766312682237ull, 9188623669511462416ull}}, {{17219936596934674597ull, 12173513742309677515ull, 1978427978945426398ull, 5742889793444664010ull}}, {{16913234727740955342ull, 5993520141032321086ull, 11696407010536558806ull, 7178612241805830012ull}}, {{11918171372821418369ull, 16715272213145177166ull, 14620508763170698507ull, 8973265302257287515ull}}, {{2837171089585998577ull, 8141202124002041777ull, 6831974967767992615ull, 5608290813910804697ull}}, {{8158149880409886125ull, 5564816636575164317ull, 13151654728137378673ull, 7010363517388505871ull}}, {{14809373368939745560ull, 11567706814146343300ull, 11827882391744335437ull, 8762954396735632339ull}}, {{32486318732565167ull, 9535659768055158515ull, 5086583485626515696ull, 5476846497959770212ull}}, {{13875665953697870171ull, 11919574710068948143ull, 6358229357033144620ull, 6846058122449712765ull}}, {{12732896423694949810ull, 14899468387586185179ull, 12559472714718818679ull, 8557572653062140956ull}}, {{5652217255595649679ull, 16229696769882447593ull, 17073042483554037482ull, 5348482908163838097ull}}, {{11676957587921950003ull, 11063748925498283683ull, 7506245049160383141ull, 6685603635204797622ull}}, {{9984510966475049600ull, 18441372175300242508ull, 159434274595703118ull, 8357004544005997028ull}}, {{15463691390901681808ull, 6914171591135263663ull, 9323018458477090257ull, 5223127840003748142ull}}, {{14717928220199714356ull, 13254400507346467483ull, 2430401036241587013ull, 6528909800004685178ull}}, {{13785724256822255041ull, 2732942578900920642ull, 12261373332156759575ull, 8161137250005856472ull}}, {{13227763678941297305ull, 8625618139454157257ull, 7663358332597974734ull, 5100710781253660295ull}}, {{2699646543394457919ull, 1558650637462920764ull, 4967511897320080514ull, 6375888476567075369ull}}, {{3374558179243072398ull, 11171685333683426763ull, 10821075890077488546ull, 7969860595708844211ull}}, {{18249999926522777913ull, 11593989351979529630ull, 4457329422084736389ull, 4981162872318027632ull}}, {{13589127871298696583ull, 657428634692248326ull, 5571661777605920487ull, 6226453590397534540ull}}, {{7763037802268594921ull, 14656843848647474120ull, 6964577222007400608ull, 7783066987996918175ull}}, {{4851898626417871826ull, 9160527405404671325ull, 11270389791395707236ull, 4864416867498073859ull}}, {{10676559301449727686ull, 11450659256755839156ull, 9476301220817246141ull, 6080521084372592324ull}}, {{13345699126812159607ull, 478266015662635233ull, 11845376526021557677ull, 7600651355465740405ull}}, {{1423532926616517899ull, 2604759269002840973ull, 9709203337977167500ull, 4750407097166087753ull}}, {{6391102176698035277ull, 3255949086253551216ull, 16748190190898847279ull, 5938008871457609691ull}}, {{7988877720872544096ull, 17904994413099102732ull, 16323551720196171194ull, 7422511089322012114ull}}, {{14216420612400115868ull, 15802307526614327111ull, 14813905843549994900ull, 4639069430826257571ull}}, {{13158839747072756931ull, 1306140334558357273ull, 13905696286010105722ull, 5798836788532821964ull}}, {{2613491628558782452ull, 10856047455052722400ull, 17382120357512632152ull, 7248545985666027455ull}}, {{3266864535698478065ull, 13570059318815903000ull, 17115964428463402286ull, 9060682482082534319ull}}, {{2041790334811548791ull, 3869601055832551471ull, 17615006795430708285ull, 5662926551301583949ull}}, {{16387295973796599701ull, 9448687338218077242ull, 8183700439006221644ull, 7078658189126979937ull}}, {{11260747930390973818ull, 11810859172772596553ull, 14841311567185164959ull, 8848322736408724921ull}}, {{120438428853276780ull, 14299316010623954702ull, 2358290701849646243ull, 5530201710255453076ull}}, {{9373920072921371783ull, 13262458994852555473ull, 2947863377312057804ull, 6912752137819316345ull}}, {{16329086109579102633ull, 16578073743565694341ull, 8296515240067460159ull, 8640940172274145431ull}}, {{12511521827700633098ull, 17278825117369640819ull, 12102851052683244455ull, 5400587607671340894ull}}, {{11027716266198403468ull, 16986845378284663120ull, 5905191778999279761ull, 6750734509589176118ull}}, {{13784645332748004335ull, 7398498667573665188ull, 16604861760603875510ull, 8438418136986470147ull}}, {{17838775369822278517ull, 12375648806152838ull, 8072195591163728242ull, 5274011335616543842ull}}, {{13075097175423072339ull, 9238841597862466856ull, 866872452099884494ull, 6592514169520679803ull}}, {{16343871469278840423ull, 2325179960473307762ull, 14918648620407019330ull, 8240642711900849753ull}}, {{14826605686726663169ull, 6064923493723205255ull, 2406626360113305225ull, 5150401694938031096ull}}, {{13921571089980941057ull, 12192840385581394473ull, 3008282950141631531ull, 6438002118672538870ull}}, {{3566905807194012609ull, 10629364463549355188ull, 12983725724531815222ull, 8047502648340673587ull}}, {{11452688166351033689ull, 2031666771290959088ull, 5808985568618690562ull, 5029689155212920992ull}}, {{14315860207938792111ull, 11762955500968474668ull, 7261231960773363202ull, 6287111444016151240ull}}, {{17894825259923490138ull, 5480322339355817527ull, 9076539950966704003ull, 7858889305020189050ull}}, {{18101794815093263193ull, 1119358452883692002ull, 10284523487781577906ull, 4911805815637618156ull}}, {{13403871482011803183ull, 10622570102959390811ull, 12855654359726972382ull, 6139757269547022695ull}}, {{12143153334087366074ull, 4054840591844462706ull, 11457881931231327574ull, 7674696586933778369ull}}, {{12201156852231991701ull, 16369333425184952903ull, 243647179378497877ull, 4796685366833611481ull}}, {{10639760046862601722ull, 6626608726199027417ull, 4916244992650510251ull, 5995856708542014351ull}}, {{17911386077005640056ull, 3671574889321396367ull, 1533620222385749910ull, 7494820885677517939ull}}, {{18112145325769606891ull, 16129792361108036441ull, 17099413703486951357ull, 4684263053548448711ull}}, {{8805123601929844902ull, 6327182396102881840ull, 16762581110931301293ull, 5855328816935560889ull}}, {{11006404502412306127ull, 12520664013555990204ull, 7118168333381962904ull, 7319161021169451112ull}}, {{13758005628015382659ull, 15650830016944987755ull, 8897710416727453630ull, 9148951276461813890ull}}, {{6292910508295920210ull, 5170082742163229443ull, 10172755028882046423ull, 5718094547788633681ull}}, {{3254452116942512358ull, 1850917409276648900ull, 17327629804529945933ull, 7147618184735792101ull}}, {{4068065146178140448ull, 6925332780023199029ull, 7824479200380268704ull, 8934522730919740127ull}}, {{4848383725575031732ull, 4328332987514499393ull, 11807828527878749796ull, 5584076706824837579ull}}, {{10672165675396177569ull, 5410416234393124241ull, 10148099641421049341ull, 6980095883531046974ull}}, {{17951893112672609865ull, 11374706311418793205ull, 3461752514921535868ull, 8725119854413808718ull}}, {{13525776204634075118ull, 16332563481491521561ull, 15998653377108123629ull, 5453199909008630448ull}}, {{3072162200510430185ull, 6580646296582238240ull, 1551572647675602921ull, 6816499886260788061ull}}, {{3840202750638037731ull, 12837493889155185704ull, 6551151828021891555ull, 8520624857825985076ull}}, {{2400126719148773582ull, 5717590671508297113ull, 13317841929368458030ull, 5325390536141240672ull}}, {{7611844417363354882ull, 16370360376240147199ull, 16647302411710572537ull, 6656738170176550840ull}}, {{4903119503276805698ull, 6627892415018020287ull, 2362383940928664056ull, 8320922712720688551ull}}, {{9981978717189085417ull, 4142432759386262679ull, 8394018990721496891ull, 5200576695450430344ull}}, {{7865787378058968868ull, 566354930805440445ull, 10492523738401871114ull, 6500720869313037930ull}}, {{14443920241001098988ull, 9931315700361576364ull, 3892282636147563084ull, 8125901086641297413ull}}, {{18250822187480462676ull, 15430444349580761035ull, 4738519656805920879ull, 5078688179150810883ull}}, {{18201841715923190441ull, 14676369418548563390ull, 1311463552580013195ull, 6348360223938513604ull}}, {{13528930108049212243ull, 13733775754758316334ull, 1639329440725016494ull, 7935450279923142005ull}}, {{3843895299103369748ull, 3971923828296559805ull, 3330423909666829261ull, 4959656424951963753ull}}, {{9416555142306600089ull, 9576590803798087660ull, 8774715905510924480ull, 6199570531189954691ull}}, {{11770693927883250111ull, 11970738504747609575ull, 6356708863461267696ull, 7749463163987443364ull}}, {{14274212732568113175ull, 7481711565467255984ull, 13196315076518068118ull, 4843414477492152102ull}}, {{17842765915710141469ull, 128767419979294172ull, 7272021808792809340ull, 6054268096865190128ull}}, {{3856713320928125220ull, 160959274974117716ull, 9090027260991011675ull, 7567835121081487660ull}}, {{11633817862434854071ull, 16241500611354681236ull, 14904639074974158104ull, 4729896950675929787ull}}, {{14542272328043567589ull, 1855131690483799929ull, 14019112825290309727ull, 5912371188344912234ull}}, {{4342782354772295774ull, 16153972668386913624ull, 8300518994758111350ull, 7390463985431140293ull}}, {{2714238971732684859ull, 5484546899314433111ull, 7493667380937513546ull, 4619039990894462683ull}}, {{17227856769948019785ull, 16079055660997817196ull, 4755398207744504028ull, 5773799988618078354ull}}, {{3088076888725473115ull, 1652075502537719880ull, 15167619796535405844ull, 7217249985772597942ull}}, {{3860096110906841394ull, 2065094378172149850ull, 9736152708814481497ull, 9021562482215747428ull}}, {{7024246087744163775ull, 12819899032426063416ull, 15308467479863826743ull, 5638476551384842142ull}}, {{8780307609680204719ull, 11413187772105191366ull, 9912212312975007621ull, 7048095689231052678ull}}, {{1752012475245480091ull, 431426659849325496ull, 3166893354363983719ull, 8810119611538815848ull}}, {{1095007797028425057ull, 7187170690046910291ull, 1979308346477489824ull, 5506324757211759905ull}}, {{15203817801567695033ull, 8983963362558637863ull, 7085821451524250184ull, 6882905946514699881ull}}, {{14393086233532230887ull, 11229954203198297329ull, 13468962832832700634ull, 8603632433143374851ull}}, {{2078149868316562449ull, 11630407395426323735ull, 6112258761306743944ull, 5377270270714609282ull}}, {{16432745390677866773ull, 14538009244282904668ull, 16863695488488205738ull, 6721587838393261602ull}}, {{2094187664637781850ull, 8949139518498855028ull, 11856247323755481365ull, 8401984797991577003ull}}, {{10532239327253389464ull, 7899055208275478344ull, 5104311568133481901ull, 5251240498744735627ull}}, {{13165299159066736830ull, 14485505028771735834ull, 1768703441739464472ull, 6564050623430919534ull}}, {{7233251911978645230ull, 18106881285964669793ull, 11434251339029106398ull, 8205063279288649417ull}}, {{16049997491055123029ull, 6705114785300530716ull, 228878059252109643ull, 5128164549555405886ull}}, {{1615752790109352170ull, 3769707463198275492ull, 9509469610919912862ull, 6410205686944257357ull}}, {{2019690987636690212ull, 13935506365852620173ull, 16498523032077278981ull, 8012757108680321696ull}}, {{3568149876486625335ull, 11015534487871581560ull, 10311576895048299363ull, 5007973192925201060ull}}, {{4460187345608281668ull, 9157732091412089046ull, 12889471118810374204ull, 6259966491156501325ull}}, {{14798606218865127893ull, 11447165114265111307ull, 2276780843230804043ull, 7824958113945626657ull}}, {{6943285877577010982ull, 4848635187202000615ull, 12952203073087722287ull, 4890598821216016660ull}}, {{4067421328543875823ull, 1449107965575112865ull, 16190253841359652859ull, 6113248526520020825ull}}, {{9695962679107232682ull, 15646443012251054793ull, 6402759246417402361ull, 7641560658150026032ull}}, {{17589191720510490187ull, 2861497855015827389ull, 4001724529010876476ull, 4775975411343766270ull}}, {{8151431595355949021ull, 3576872318769784237ull, 14225527698118371403ull, 5969969264179707837ull}}, {{14800975512622324180ull, 18306148453744394008ull, 3946851567365800541ull, 7462461580224634797ull}}, {{9250609695388952613ull, 13747185792803940207ull, 4772625238817319290ull, 4664038487640396748ull}}, {{6951576100808802862ull, 7960610204150149451ull, 5965781548521649113ull, 5830048109550495935ull}}, {{4077784107583615673ull, 14562448773615074718ull, 2845540917224673487ull, 7287560136938119919ull}}, {{14320602171334295400ull, 13591374948591455493ull, 17391984201813005571ull, 9109450171172649898ull}}, {{11256219366297628577ull, 6188766333655965731ull, 15481676144560516386ull, 5693406356982906186ull}}, {{9458588189444647817ull, 16959329953924732972ull, 10128723143845869674ull, 7116757946228632733ull}}, {{11823235236805809771ull, 11975790405551140407ull, 17272589948234724997ull, 8895947432785790916ull}}, {{14307051050644712963ull, 9790712012683156706ull, 1571996680791927315ull, 5559967145491119323ull}}, {{8660441776451115396ull, 7626703997426557979ull, 15800053906272072856ull, 6949958931863899153ull}}, {{6213866202136506341ull, 9533379996783197474ull, 5915009327557927358ull, 8687448664829873942ull}}, {{8495352394762704367ull, 1346676479562110517ull, 17531938885005868311ull, 5429655415518671213ull}}, {{15230876511880768363ull, 15518403654734801858ull, 8079865550975171676ull, 6787069269398339017ull}}, {{9815223602996184645ull, 951260494708950707ull, 14711517957146352500ull, 8483836586747923771ull}}, {{3828671742658921452ull, 9817909846047870000ull, 6888855714002776360ull, 5302397866717452357ull}}, {{4785839678323651814ull, 12272387307559837500ull, 13222755660930858354ull, 6627997333396815446ull}}, {{5982299597904564768ull, 6117112097595021067ull, 7305072539308797135ull, 8284996666746019308ull}}, {{1433094239476659028ull, 10740724088637970023ull, 13789042373922774017ull, 5178122916716262067ull}}, {{15626425854627987497ull, 18037591129224850432ull, 12624616948976079617ull, 6472653645895327584ull}}, {{1086288244575432755ull, 8711930856248899329ull, 15780771186220099522ull, 8090817057369159480ull}}, {{12208145198928115232ull, 10056642803582949984ull, 9862981991387562201ull, 5056760660855724675ull}}, {{15260181498660144040ull, 17182489522906075384ull, 7717041470807064847ull, 6320950826069655844ull}}, {{628482799615628434ull, 16866425885205206327ull, 9646301838508831059ull, 7901188532587069805ull}}, {{7310330777400849627ull, 8235673169039560002ull, 8334781658281713364ull, 4938242832866918628ull}}, {{18361285508605837842ull, 10294591461299450002ull, 10418477072852141705ull, 6172803541083648285ull}}, {{13728234848902521494ull, 17479925345051700407ull, 17634782359492565035ull, 7716004426354560356ull}}, {{15497675808205157790ull, 8619110331443618802ull, 1798366937828077339ull, 4822502766471600223ull}}, {{10148722723401671430ull, 6162201895877135599ull, 16083016727567260386ull, 6028128458089500278ull}}, {{8074217385824701383ull, 16926124406701195307ull, 10880398872604299674ull, 7535160572611875348ull}}, {{2740542856926744413ull, 15190513772615634971ull, 16023621332232463104ull, 4709475357882422092ull}}, {{17260736626440594228ull, 541398142059992097ull, 1582782591581027265ull, 5886844197353027616ull}}, {{7740862727768579072ull, 5288433696002378026ull, 1978478239476284081ull, 7358555246691284520ull}}, {{452706372855948032ull, 11222228138430360437ull, 2473097799345355101ull, 9198194058364105650ull}}, {{2588784492248661472ull, 9319735595732669225ull, 6157372143018234842ull, 5748871286477566031ull}}, {{7847666633738214744ull, 2426297457811060723ull, 3085029160345405649ull, 7186089108096957539ull}}, {{5197897273745380526ull, 7644557840691213808ull, 17691344505713920773ull, 8982611385121196923ull}}, {{3248685796090862829ull, 7083691659645702582ull, 8751247306857506531ull, 5614132115700748077ull}}, {{13284229281968354344ull, 4242928556129740323ull, 15550745151999271068ull, 7017665144625935096ull}}, {{11993600584033055026ull, 5303660695162175404ull, 991687366289537219ull, 8772081430782418871ull}}, {{16719372401875435200ull, 1008944925262665675ull, 7537333631572042618ull, 5482550894239011794ull}}, {{16287529483916906095ull, 10484553193433107902ull, 198295002610277464ull, 6853188617798764743ull}}, {{11136039818041356811ull, 13105691491791384878ull, 14082926808545010542ull, 8566485772248455928ull}}, {{2348338867848460103ull, 3579371163942227645ull, 8801829255340631589ull, 5354053607655284955ull}}, {{7547109603237963033ull, 9085899973355172460ull, 6390600550748401582ull, 6692567009569106194ull}}, {{9433887004047453791ull, 2134002929839189767ull, 17211622725290277786ull, 8365708761961382742ull}}, {{12813708405170740475ull, 5945437849576881508ull, 6145578184879035712ull, 5228567976225864214ull}}, {{16017135506463425594ull, 7431797311971101885ull, 16905344767953570448ull, 6535709970282330267ull}}, {{6186361327797118281ull, 9289746639963877357ull, 16519994941514575156ull, 8169637462852912834ull}}, {{6172318839086892878ull, 15029463686832199156ull, 14936682856873997376ull, 5106023414283070521ull}}, {{7715398548858616097ull, 340085534830697329ull, 4835795515810333009ull, 6382529267853838152ull}}, {{14255934204500658025ull, 5036792936965759565ull, 6044744394762916261ull, 7978161584817297690ull}}, {{11215801887026605218ull, 5453838594817293680ull, 8389651265154210567ull, 4986350990510811056ull}}, {{14019752358783256522ull, 2205612225094229196ull, 10487064081442763209ull, 6232938738138513820ull}}, {{17524690448479070652ull, 7368701299795174399ull, 13108830101803454011ull, 7791173422673142275ull}}, {{17870460557940501014ull, 2299595303158290047ull, 5887175804413464805ull, 4869483389170713922ull}}, {{17726389678998238363ull, 7486180147375250463ull, 16582341792371606814ull, 6086854236463392402ull}}, {{17546301080320410050ull, 134353147364287271ull, 11504555203609732710ull, 7608567795579240503ull}}, {{17883967202841338137ull, 13919028772384843256ull, 14107876029897164799ull, 4755354872237025314ull}}, {{3908214929842121056ull, 12787099947053666167ull, 8411473000516680191ull, 5944193590296281643ull}}, {{273582643875263416ull, 11372188915389694805ull, 5902655232218462335ull, 7430241987870352054ull}}, {{2476832161635733587ull, 14025147099759641109ull, 17524217575418702671ull, 4643901242418970033ull}}, {{7707726220472054887ull, 12919747856272163482ull, 8070213913991214627ull, 5804876553023712542ull}}, {{411285738735292801ull, 11537998801912816449ull, 864395355634242476ull, 7256095691279640678ull}}, {{5125793191846503905ull, 14422498502391020561ull, 10303866231397578903ull, 9070119614099550847ull}}, {{14732835790972534701ull, 15931590591635469706ull, 13357445422264568670ull, 5668824758812219279ull}}, {{9192672701860892568ull, 10691116202689561325ull, 12085120759403322934ull, 7086030948515274099ull}}, {{16102526895753503614ull, 4140523216507175848ull, 10494714930826765764ull, 8857538685644092624ull}}, {{10064079309845939759ull, 11811199047171760713ull, 6559196831766728602ull, 5535961678527557890ull}}, {{17191785155734812603ull, 5540626772109925083ull, 17422368076563186561ull, 6919952098159447362ull}}, {{16878045426241127849ull, 11537469483564794258ull, 12554588058849207393ull, 8649940122699309203ull}}, {{15160464409828092810ull, 293389399586914555ull, 5540774527567060669ull, 5406212576687068252ull}}, {{14338894493857728108ull, 4978422767911031098ull, 6925968159458825836ull, 6757765720858835315ull}}, {{8700246080467384327ull, 6223028459888788873ull, 4045774180896144391ull, 8447207151073544144ull}}, {{16966868846360584965ull, 10806921815071574901ull, 2528608863060090244ull, 5279504469420965090ull}}, {{7373528002668567494ull, 13508652268839468627ull, 12384133115679888613ull, 6599380586776206362ull}}, {{4605223984908321463ull, 3050757280767172072ull, 6256794357745084959ull, 8249225733470257953ull}}, {{2878264990567700915ull, 8824252328120564401ull, 15439711519659147859ull, 5155766083418911220ull}}, {{8209517256637014047ull, 6418629391723317597ull, 852895325864383208ull, 6444707604273639026ull}}, {{14873582589223655463ull, 8023286739654146996ull, 10289491194185254818ull, 8055884505342048782ull}}, {{72617081410008856ull, 9626240230711229777ull, 1819245977938396357ull, 5034927815838780489ull}}, {{4702457370189898974ull, 16644486306816425125ull, 6885743490850383350ull, 6293659769798475611ull}}, {{10489757731164761622ull, 11582235846665755598ull, 3995493345135591284ull, 7867074712248094514ull}}, {{1944412563550588110ull, 16462269441020873057ull, 7108869359137132456ull, 4916921695155059071ull}}, {{7042201722865623041ull, 2131092727566539705ull, 4274400680494027667ull, 6146152118943823839ull}}, {{13414438172009416705ull, 16498923964740338343ull, 731314832190146679ull, 7682690148679779799ull}}, {{15301552885146967297ull, 17229356505603793320ull, 7374600797759923530ull, 4801681342924862374ull}}, {{680197032724157505ull, 12313323595149965843ull, 18441623034054680221ull, 6002101678656077967ull}}, {{14685304346187360593ull, 1556596438655293591ull, 18440342774140962373ull, 7502627098320097459ull}}, {{16095844244008182227ull, 3278715783373252446ull, 9219371224624407531ull, 4689141936450060912ull}}, {{10896433268155451976ull, 17933452784498729270ull, 11524214030780509413ull, 5861427420562576140ull}}, {{4397169548339539161ull, 8581757925341247876ull, 14405267538475636767ull, 7326784275703220175ull}}, {{5496461935424423952ull, 6115511388249171941ull, 13394898404667158055ull, 9158480344629025219ull}}, {{5741131718853958922ull, 10739723645296814319ull, 6065968493703279832ull, 5724050215393140762ull}}, {{2564728630140060748ull, 13424654556621017899ull, 16805832653983875598ull, 7155062769241425952ull}}, {{17040968842957239647ull, 7557446158921496565ull, 2560546743770292882ull, 8943828461551782441ull}}, {{12956448536061968732ull, 9335089867753323257ull, 13129556760924902811ull, 5589892788469864025ull}}, {{2360502614795297203ull, 7057176316264266168ull, 2576887895873964802ull, 6987365985587330032ull}}, {{2950628268494121503ull, 18044842432185108518ull, 3221109869842456002ull, 8734207481984162540ull}}, {{15679200723090989652ull, 15889712538543080727ull, 11236565705506310809ull, 5458879676240101587ull}}, {{14987314885436349160ull, 6027082617896687197ull, 9434021113455500608ull, 6823599595300126984ull}}, {{4899085551513272738ull, 7533853272370858997ull, 11792526391819375760ull, 8529499494125158730ull}}, {{5367771478909489414ull, 4708658295231786873ull, 11982015013314497754ull, 5330937183828224206ull}}, {{11321400367064249671ull, 15109194905894509399ull, 5754146729788346384ull, 6663671479785280258ull}}, {{9540064440402924185ull, 439749558658585133ull, 16416055449090208789ull, 8329589349731600322ull}}, {{8268383284465521568ull, 2580686483375309660ull, 14871720674108768397ull, 5205993343582250201ull}}, {{10335479105581901959ull, 7837544122646524979ull, 4754592787353796784ull, 6507491679477812752ull}}, {{8307662863549989545ull, 9796930153308156224ull, 5943240984192245980ull, 8134364599347265940ull}}, {{5192289289718743466ull, 15346453382672373448ull, 12937897651974929545ull, 5083977874592041212ull}}, {{6490361612148429332ull, 5348008673058303098ull, 16172372064968661932ull, 6354972343240051515ull}}, {{17336324052040312473ull, 6685010841322878872ull, 15603779062783439511ull, 7943715429050064394ull}}, {{10835202532525195296ull, 11095660803467881151ull, 14364047932667037598ull, 4964822143156290246ull}}, {{8932317147229106216ull, 4646203967480075631ull, 8731687878979021190ull, 6206027678945362808ull}}, {{6553710415608994866ull, 15031126996204870347ull, 10914609848723776487ull, 7757534598681703510ull}}, {{1790226000541927839ull, 16311983400269125823ull, 2209945137024972400ull, 4848459124176064694ull}}, {{16072840555959573511ull, 1943235176626855662ull, 11985803458135991309ull, 6060573905220080867ull}}, {{10867678658094691080ull, 7040729989210957482ull, 10370568304242601232ull, 7575717381525101084ull}}, {{11403985179736569829ull, 4400456243256848426ull, 15704977227006401578ull, 4734823363453188177ull}}, {{5031609437815936479ull, 14723942340925836341ull, 5796163478475838260ull, 5918529204316485222ull}}, {{10901197815697308502ull, 18404927926157295426ull, 16468576384949573633ull, 7398161505395606527ull}}, {{11424934653238205718ull, 4585550926207227785ull, 17210389268234565377ull, 4623850940872254079ull}}, {{446110261265593435ull, 10343624676186422636ull, 16901300566865818817ull, 5779813676090317599ull}}, {{557637826581991794ull, 17541216863660416199ull, 16514939690154885617ull, 7224767095112896999ull}}, {{14532105338509653455ull, 8091463024293356536ull, 16031988594266219118ull, 9030958868891121249ull}}, {{9082565836568533409ull, 445478371755959931ull, 3102463843775305093ull, 5644349293056950781ull}}, {{6741521277283278858ull, 5168533983122337818ull, 8489765823146519270ull, 7055436616321188476ull}}, {{17650273633458874380ull, 15684039515757698080ull, 10612207278933149087ull, 8819295770401485595ull}}, {{11031421020911796488ull, 16720053724989643156ull, 4326786540119524227ull, 5512059856500928497ull}}, {{13789276276139745609ull, 16288381137809666041ull, 10020169193576793188ull, 6890074820626160621ull}}, {{3401537289892518300ull, 1913732348552530936ull, 17136897510398379390ull, 8612593525782700776ull}}, {{2125960806182823937ull, 15031140773127495547ull, 10710560943998987118ull, 5382870953614187985ull}}, {{16492509063010693634ull, 9565553929554593625ull, 17999887198426121802ull, 6728588692017734981ull}}, {{6780578273481203330ull, 2733570375088466224ull, 8664800942750488541ull, 8410735865022168727ull}}, {{4237861420925752081ull, 4014324493643985342ull, 12333029616860137194ull, 5256709915638855454ull}}, {{14520698813011965910ull, 14241277653909757485ull, 6192914984220395684ull, 6570887394548569318ull}}, {{4315815460982793675ull, 17801597067387196857ull, 16964515767130270413ull, 8213609243185711647ull}}, {{14226599709182715807ull, 13431841176330691987ull, 17520351382097500864ull, 5133505776991069779ull}}, {{13171563618051006855ull, 16789801470413364984ull, 17288753209194488176ull, 6416882221238837224ull}}, {{16464454522563758568ull, 2540507764307154614ull, 3164197437783558605ull, 8021102776548546531ull}}, {{5678598058174961201ull, 3893660361905665586ull, 18118524463110581792ull, 5013189235342841581ull}}, {{16321619609573477309ull, 4867075452382081982ull, 8813097523606063528ull, 6266486544178551977ull}}, {{11178652475112070829ull, 6083844315477602478ull, 15628057922934967314ull, 7833108180223189971ull}}, {{2374971778517656364ull, 8414088715600889453ull, 7461693192620660619ull, 4895692612639493732ull}}, {{7580400741574458359ull, 5905924876073723912ull, 9327116490775825774ull, 6119615765799367165ull}}, {{9475500926968072949ull, 16605778131946930698ull, 16270581631897170121ull, 7649519707249208956ull}}, {{10533874097782433497ull, 3461082304825749830ull, 945741483080955518ull, 4780949817030755598ull}}, {{3943970585373266063ull, 13549724917886963096ull, 10405548890705970205ull, 5976187271288444497ull}}, {{4929963231716582579ull, 3102098092076540158ull, 17618622131809850661ull, 7470234089110555621ull}}, {{16916285075105027824ull, 4244654316761531550ull, 13317481841594850615ull, 4668896305694097263ull}}, {{11921984307026508972ull, 694131877524526534ull, 12035166283566175365ull, 5836120382117621579ull}}, {{5679108346928360407ull, 5479350865333046072ull, 10432271836030331302ull, 7295150477647026974ull}}, {{7098885433660450508ull, 16072560618521083398ull, 3816967758183138319ull, 9118938097058783718ull}}, {{18271861451319945280ull, 16962879414216758979ull, 16220662904146625161ull, 5699336310661739823ull}}, {{18228140795722543696ull, 7368541212488785012ull, 15664142611755893548ull, 7124170388327174779ull}}, {{4338431920943628004ull, 9210676515610981266ull, 14968492246267479031ull, 8905212985408968474ull}}, {{7323205969017155406ull, 12674201849897945147ull, 13966993672344562298ull, 5565758115880605296ull}}, {{4542321442844056354ull, 6619380275517655626ull, 17458742090430702873ull, 6957197644850756620ull}}, {{14901273840409846250ull, 12885911362824457436ull, 3376683539328826975ull, 8696497056063445776ull}}, {{89924113401378099ull, 14971223629406367754ull, 2110427212080516859ull, 5435310660039653610ull}}, {{9335777178606498431ull, 14102343518330571788ull, 11861406051955421882ull, 6794138325049567012ull}}, {{11669721473258123039ull, 8404557361058438927ull, 14826757564944277353ull, 8492672906311958765ull}}, {{14211104948427408755ull, 16782063396729994089ull, 11572566487303867297ull, 5307920566444974228ull}}, {{3928823130252097232ull, 7142521190630328900ull, 14465708109129834122ull, 6634900708056217785ull}}, {{4911028912815121540ull, 18151523525142686933ull, 4247077081130128940ull, 8293625885070272232ull}}, {{5375236079723144915ull, 2121330166359403525ull, 2654423175706330588ull, 5183516178168920145ull}}, {{11330731118081319047ull, 2651662707949254406ull, 7929714988060301139ull, 6479395222711150181ull}}, {{4940041860746873001ull, 17149636440218731720ull, 14523829753502764327ull, 8099244028388937726ull}}, {{3087526162966795626ull, 17636051802777789181ull, 4465707577511839800ull, 5062027517743086079ull}}, {{8471093722135882436ull, 3598320679762684860ull, 970448453462411847ull, 6327534397178857599ull}}, {{10588867152669853045ull, 18332958904985519787ull, 15048118622110178520ull, 7909417996473571998ull}}, {{4312198961204964201ull, 11458099315615949867ull, 4793388120391473671ull, 4943386247795982499ull}}, {{778562683078817348ull, 9710938126092549430ull, 1380049132061954185ull, 6179232809744978124ull}}, {{10196575390703297492ull, 16750358676043074691ull, 1725061415077442731ull, 7724041012181222655ull}}, {{4067016609975866981ull, 8163131163313227730ull, 7995692412064483563ull, 4827525632613264159ull}}, {{14307142799324609534ull, 5592227935714146758ull, 5382929496653216550ull, 6034407040766580199ull}}, {{8660556462300986109ull, 16213656956497459256ull, 2116975852389132783ull, 7543008800958225249ull}}, {{5412847788938116319ull, 17051064625451993891ull, 12852324953811677749ull, 4714380500598890780ull}}, {{2154373717745257494ull, 7478772726532828652ull, 16065406192264597187ull, 5892975625748613475ull}}, {{2692967147181571867ull, 4736779889738647911ull, 15470071721903358580ull, 7366219532185766844ull}}, {{17201266989259128546ull, 5920974862173309888ull, 890845578669646609ull, 9207774415232208556ull}}, {{10750791868286955342ull, 15229824334926788440ull, 9780150523523304938ull, 5754859009520130347ull}}, {{13438489835358694177ull, 9813908381803709742ull, 7613502135976743269ull, 7193573761900162934ull}}, {{7574740257343591913ull, 16879071495682025082ull, 293505633116153278ull, 8991967202375203668ull}}, {{9345898679267132850ull, 5937733666373877772ull, 9406813057552371607ull, 5619979501484502292ull}}, {{11682373349083916062ull, 2810481064539959311ull, 11758516321940464509ull, 7024974376855627865ull}}, {{9991280667927507173ull, 8124787349102337043ull, 863087347143416924ull, 8781217971069534832ull}}, {{3938707408240998032ull, 14301364130043736460ull, 539429591964635577ull, 5488261231918459270ull}}, {{4923384260301247539ull, 4041647107272506863ull, 9897659026810570280ull, 6860326539898074087ull}}, {{1542544306949171520ull, 5052058884090633579ull, 7760387765085824946ull, 8575408174872592609ull}}, {{17104991256339089864ull, 7769222820984033890ull, 16379457399247110351ull, 5359630109295370380ull}}, {{12157867033569086522ull, 5099842507802654459ull, 2027577675349336323ull, 6699537636619212976ull}}, {{10585647773533970249ull, 1763117116325930170ull, 2534472094186670404ull, 8374422045774016220ull}}, {{11227715876886119310ull, 10325320234558482164ull, 10807417095721444810ull, 5234013778608760137ull}}, {{14034644846107649137ull, 3683278256343326897ull, 18120957388079193917ull, 6542517223260950171ull}}, {{3708248002352397709ull, 9215783838856546526ull, 18039510716671604492ull, 8178146529076187714ull}}, {{16152713056752412280ull, 14983236936140117386ull, 15886380216347140711ull, 5111341580672617321ull}}, {{10967519284085739542ull, 14117360151747758829ull, 6022917215151762177ull, 6389176975840771652ull}}, {{18321085123534562332ull, 3811642134402534824ull, 7528646518939702722ull, 7986471219800964565ull}}, {{11450678202209101457ull, 6993962352428972169ull, 7011247083551008153ull, 4991544512375602853ull}}, {{478289697479213110ull, 13354138958963603116ull, 13375744872866148095ull, 6239430640469503566ull}}, {{597862121849016387ull, 12080987680277115991ull, 7496309054227909311ull, 7799288300586879458ull}}, {{7291192853796717098ull, 14468146327814279350ull, 9296879177319831223ull, 4874555187866799661ull}}, {{18337363104100672180ull, 13473496891340461283ull, 16232784990077176933ull, 6093193984833499576ull}}, {{18310017861698452321ull, 3006813058893412892ull, 1844237163886919551ull, 7616492481041874471ull}}, {{2220389126706756893ull, 8796787189449464914ull, 8070177255070406575ull, 4760307800651171544ull}}, {{11998858445238221924ull, 6384297968384443238ull, 10087721568838008219ull, 5950384750813964430ull}}, {{5775201019693001597ull, 3368686442053166144ull, 3386279924192734466ull, 7437980938517455538ull}}, {{3609500637308125998ull, 6717115044710616744ull, 6728110971047846945ull, 4648738086573409711ull}}, {{4511875796635157498ull, 13008079824315658834ull, 3798452695382420777ull, 5810922608216762139ull}}, {{14863216782648722680ull, 2425041725112409830ull, 136379850800638068ull, 7263653260270952674ull}}, {{9355648941456127542ull, 3031302156390512288ull, 9393846850355573393ull, 9079566575338690842ull}}, {{5847280588410079714ull, 13423778893812539940ull, 10482840299899621274ull, 5674729109586681776ull}}, {{7309100735512599642ull, 7556351580410899117ull, 13103550374874526593ull, 7093411386983352220ull}}, {{13748061937818137457ull, 14057125493941011800ull, 16379437968593158241ull, 8866764233729190275ull}}, {{8592538711136335911ull, 1868174406072050519ull, 7931305721157029949ull, 5541727646080743922ull}}, {{6128987370493031984ull, 6946904026017451053ull, 690760114591511628ull, 6927159557600929903ull}}, {{12272920231543677884ull, 8683630032521813816ull, 14698508198521553247ull, 8658949447001162378ull}}, {{7670575144714798678ull, 12344797797967215491ull, 13798253642503358683ull, 5411843404375726486ull}}, {{4976532912466110443ull, 10819311229031631460ull, 8024445016274422546ull, 6764804255469658108ull}}, {{6220666140582638054ull, 4300766999434763517ull, 10030556270343028183ull, 8456005319337072635ull}}, {{6193759347077842736ull, 9605508402287809054ull, 3963254659750698662ull, 5285003324585670397ull}}, {{16965571220702079228ull, 2783513466004985509ull, 9565754343115761232ull, 6606254155732087996ull}}, {{7371905970595435322ull, 3479391832506231887ull, 11957192928894701540ull, 8257817694665109995ull}}, {{11524970259263228933ull, 11397991932171170737ull, 5167402571345494510ull, 5161136059165693747ull}}, {{571154768796872454ull, 5024117878359187614ull, 1847567195754480234ull, 6451420073957117184ull}}, {{9937315497850866375ull, 15503519384803760325ull, 2309458994693100292ull, 8064275092446396480ull}}, {{8516665195370485437ull, 466327578647574395ull, 1443411871683187683ull, 5040171932778997800ull}}, {{6034145475785718892ull, 14417967528591631706ull, 1804264839603984603ull, 6300214915973747250ull}}, {{16766053881586924422ull, 13410773392312151728ull, 11478703086359756562ull, 7875268644967184062ull}}, {{10478783675991827764ull, 12993419388622482734ull, 2562503410547459947ull, 4922042903104490039ull}}, {{3875107558135008897ull, 11630088217350715514ull, 17038187318466488646ull, 6152553628880612548ull}}, {{14067256484523536929ull, 5314238234833618584ull, 2850990074373559192ull, 7690692036100765686ull}}, {{8792035302827210581ull, 3321398896771011615ull, 15616926851765638207ull, 4806682522562978553ull}}, {{6378358110106625322ull, 17986806676245928231ull, 5686100509424884046ull, 6008353153203723192ull}}, {{3361261619205893748ull, 13260136308452634481ull, 7107625636781105058ull, 7510441441504653990ull}}, {{13630003558072153353ull, 12899271211210284454ull, 18277324078270354373ull, 4694025900940408743ull}}, {{7814132410735415883ull, 2289030958730691856ull, 18234969079410555063ull, 5867532376175510929ull}}, {{9767665513419269854ull, 16696346753695528532ull, 8958653293981030116ull, 7334415470219388662ull}}, {{12209581891774087317ull, 2423689368409859049ull, 1974944580621511838ull, 9168019337774235828ull}}, {{713459654717722717ull, 15349863910538325618ull, 10457712399743220706ull, 5730012086108897392ull}}, {{10115196605251929205ull, 9963957851318131214ull, 13072140499679025883ull, 7162515107636121740ull}}, {{3420623719710135698ull, 7843261295720276114ull, 16340175624598782354ull, 8953143884545152175ull}}, {{6749575843246222715ull, 9513724328252560475ull, 17130138793015320827ull, 5595714927840720109ull}}, {{3825283785630390490ull, 7280469391888312690ull, 7577615435986987322ull, 6994643659800900137ull}}, {{14004976768892763920ull, 18323958776715166670ull, 14083705313411122056ull, 8743304574751125171ull}}, {{4141424462130589546ull, 11452474235446979169ull, 6496472811668257333ull, 5464565359219453232ull}}, {{9788466596090624837ull, 480534739026560249ull, 8120591014585321667ull, 6830706699024316540ull}}, {{16847269263540668950ull, 14435726479065364023ull, 10150738768231652083ull, 8538383373780395675ull}}, {{17447072317353999950ull, 6716486040202158562ull, 4038368720931088600ull, 5336489608612747297ull}}, {{12585468359837724129ull, 8395607550252698203ull, 9659646919591248654ull, 6670612010765934121ull}}, {{11120149431369767257ull, 1271137400961096946ull, 16686244667916448722ull, 8338265013457417651ull}}, {{11561779413033492440ull, 5406146894028073495ull, 8123059908234086499ull, 5211415633410886032ull}}, {{9840538247864477646ull, 2145997599107703965ull, 10153824885292608124ull, 6514269541763607540ull}}, {{16912358828257984961ull, 2682496998884629956ull, 12692281106615760155ull, 8142836927204509425ull}}, {{1346852230806464793ull, 17817461688798751387ull, 1015146663993768240ull, 5089273079502818391ull}}, {{15518623343790244703ull, 3825083037288887617ull, 15103991385274374013ull, 6361591349378522988ull}}, {{5563221124455642167ull, 9393039815038497426ull, 433245157883415900ull, 7951989186723153736ull}}, {{8088699221212164258ull, 15094021921253836699ull, 270778223677134937ull, 4969993241701971085ull}}, {{5499188008087817419ull, 5032469346285132162ull, 4950158798023806576ull, 6212491552127463856ull}}, {{16097357046964547581ull, 6290586682856415202ull, 6187698497529758220ull, 7765614440159329820ull}}, {{14672534172780230143ull, 13154988713640035309ull, 13090683597810874695ull, 4853509025099581137ull}}, {{4505609660693123966ull, 11832049873622656233ull, 2528296441981429657ull, 6066886281374476422ull}}, {{10243698094293792862ull, 955004286746156579ull, 12383742589331562880ull, 7583607851718095527ull}}, {{4096468299719926587ull, 596877679216347862ull, 14657368145973308656ull, 4739754907323809704ull}}, {{14343957411504684041ull, 746097099020434827ull, 18321710182466635820ull, 5924693634154762130ull}}, {{13318260745953467147ull, 932621373775543534ull, 13678765691228518967ull, 7405867042693452663ull}}, {{3712226947793529063ull, 7500417386250796565ull, 15466757584658906210ull, 4628666901683407914ull}}, {{9251969703169299233ull, 152149695958719898ull, 10110074943968856955ull, 5785833627104259893ull}}, {{2341590092106848233ull, 14025245175230563585ull, 17249279698388459097ull, 7232292033880324866ull}}, {{7538673633560948195ull, 3696498413756040769ull, 12338227586130798064ull, 9040365042350406083ull}}, {{16240886067044062382ull, 2310311508597525480ull, 5405549232118054838ull, 5650228151469003802ull}}, {{1854363510095526362ull, 12111261422601682659ull, 15980308577002344355ull, 7062785189336254752ull}}, {{16153012442901571664ull, 10527390759824715419ull, 1528641647543378828ull, 8828481486670318441ull}}, {{7789789767599788338ull, 15802991261745222945ull, 12484616075783081527ull, 5517800929168949025ull}}, {{14348923227927123327ull, 15142053058754140777ull, 1770712039446688197ull, 6897251161461186282ull}}, {{4101095979626740446ull, 5092508268160512260ull, 11436762086163136055ull, 8621563951826482852ull}}, {{11786557024121488587ull, 10100346695241402018ull, 16371348340706735842ull, 5388477469891551782ull}}, {{5509824243297084926ull, 3402061332196976715ull, 11240813389028643995ull, 6735596837364439728ull}}, {{2275594285693968253ull, 18087634720528384606ull, 14051016736285804993ull, 8419496046705549660ull}}, {{15257304483840893870ull, 4387242672689158522ull, 18005257497033403929ull, 5262185029190968537ull}}, {{9848258567946341530ull, 10095739359288836057ull, 8671513816009591199ull, 6577731286488710672ull}}, {{16922009228360314816ull, 8007988180683657167ull, 10839392270011988999ull, 8222164108110888340ull}}, {{17493784795366278616ull, 11922521640568367585ull, 15997992205612268932ull, 5138852567569305212ull}}, {{8032172938925684558ull, 14903152050710459482ull, 1550746183305784549ull, 6423565709461631516ull}}, {{816844136802329889ull, 4793882008105910641ull, 1938432729132230687ull, 8029457136827039395ull}}, {{12039742631569925941ull, 9913705282707276006ull, 17352421520203501843ull, 5018410710516899621ull}}, {{5826306252607631618ull, 7780445584956707104ull, 7855468844972213592ull, 6273013388146124527ull}}, {{7282882815759539523ull, 9725556981195883880ull, 5207650037787879086ull, 7841266735182655659ull}}, {{4551801759849712202ull, 1466787094820039521ull, 948938264403730477ull, 4900791709489159787ull}}, {{10301438218239528156ull, 6445169886952437305ull, 15021230885786826808ull, 6125989636861449733ull}}, {{17488483791226798099ull, 8056462358690546631ull, 4941480551951369798ull, 7657487046076812167ull}}, {{17847831397157830668ull, 423602955754203740ull, 10005954372610687980ull, 4785929403798007604ull}}, {{3863045172737736719ull, 529503694692754676ull, 12507442965763359975ull, 5982411754747509505ull}}, {{4828806465922170899ull, 14496937673648107057ull, 1799245651922036256ull, 7478014693434386882ull}}, {{14547219087269826572ull, 9060586046030066910ull, 5736214550878660564ull, 4673759183396491801ull}}, {{8960651822232507407ull, 11325732557537583638ull, 11781954207025713609ull, 5842198979245614751ull}}, {{1977442740935858450ull, 322107641639815836ull, 10115756740354754108ull, 7302748724057018439ull}}, {{2471803426169823063ull, 402634552049769795ull, 8033009907016054731ull, 9128435905071273049ull}}, {{17685778205851997078ull, 16392547659526963785ull, 16549846237953503966ull, 5705272440669545655ull}}, {{8272164702032832636ull, 11267312537553928924ull, 16075621779014492054ull, 7131590550836932069ull}}, {{10340205877541040795ull, 4860768635087635347ull, 6259469168485951356ull, 8914488188546165087ull}}, {{4156785664249456545ull, 12261352433784547900ull, 10829697257944801453ull, 5571555117841353179ull}}, {{5195982080311820681ull, 1491632486948521163ull, 8925435554003613913ull, 6964443897301691474ull}}, {{1883291581962387947ull, 6476226627113039358ull, 1933422405649741583ull, 8705554871627114343ull}}, {{15012115294008656179ull, 10965170669586731454ull, 8125918031172170345ull, 5440971794766946464ull}}, {{9541772080656044416ull, 18318149355410802222ull, 10157397538965212931ull, 6801214743458683080ull}}, {{2703843063965279712ull, 18286000675836114874ull, 12696746923706516164ull, 8501518429323353850ull}}, {{6301587933405687724ull, 2205378385542795988ull, 12547152845743960507ull, 5313449018327096156ull}}, {{7876984916757109655ull, 16591781037210658697ull, 15683941057179950633ull, 6641811272908870195ull}}, {{14457917164373774972ull, 6904668241231159659ull, 14993240303047550388ull, 8302264091136087744ull}}, {{6730355218519915406ull, 13538789687624250595ull, 9370775189404718992ull, 5188915056960054840ull}}, {{3801258004722506353ull, 16923487109530313244ull, 11713468986755898740ull, 6486143821200068550ull}}, {{4751572505903132941ull, 2707614813203339939ull, 5418464196590097618ull, 8107679776500085688ull}}, {{663889806975764137ull, 6303945276679475366ull, 3386540122868811011ull, 5067299860312553555ull}}, {{10053234295574480979ull, 3268245577421956303ull, 18068233208868177476ull, 6334124825390691943ull}}, {{7954856851040713319ull, 4085306971777445379ull, 17973605492657833941ull, 7917656031738364929ull}}, {{2665942522686751873ull, 4859159866574597314ull, 4315974405270064357ull, 4948535019836478081ull}}, {{12555800190213215649ull, 10685635851645634546ull, 10006654025014968350ull, 6185668774795597601ull}}, {{6471378200911743753ull, 4133672777702267375ull, 17120003549696098342ull, 7732085968494497001ull}}, {{10962140403210921702ull, 16418603541346080821ull, 3782473190918979607ull, 4832553730309060626ull}}, {{18314361522441040031ull, 15911568408255213122ull, 13951463525503500317ull, 6040692162886325782ull}}, {{13669579866196524231ull, 6054402455036852691ull, 8215957370024599589ull, 7550865203607907228ull}}, {{6237644407159133692ull, 6089844543611726884ull, 14358345393120150551ull, 4719290752254942017ull}}, {{7797055508948917115ull, 3000619661087270701ull, 4112873686118024477ull, 5899113440318677522ull}}, {{14358005404613534298ull, 8362460594786476280ull, 14364464144502306404ull, 7373891800398346902ull}}, {{17947506755766917872ull, 10453075743483095350ull, 8732208143773107197ull, 9217364750497933628ull}}, {{6605505703926935766ull, 8839015348890628546ull, 14681002126712967806ull, 5760852969061208517ull}}, {{17480254166763445516ull, 1825397149258509874ull, 4516194603109046046ull, 7201066211326510647ull}}, {{12626945671599531087ull, 11505118473427913151ull, 1033557235458919653ull, 9001332764158138309ull}}, {{14809370072390788785ull, 9496542055106139671ull, 2951816281375518735ull, 5625832977598836443ull}}, {{13900026572061098078ull, 7258991550455286685ull, 17524828407001562131ull, 7032291221998545553ull}}, {{3539975159794208885ull, 4462053419641720453ull, 8070977453469788952ull, 8790364027498181942ull}}, {{4518327484085074505ull, 2788783387276075283ull, 432674889991230191ull, 5493977517186363714ull}}, {{1036223336678955227ull, 17321037289377257816ull, 9764215649343813546ull, 6867471896482954642ull}}, {{1295279170848694034ull, 12427924574866796462ull, 2981897524824991125ull, 8584339870603693303ull}}, {{14644607537062597484ull, 10073295868505441740ull, 8781214980656701309ull, 5365212419127308314ull}}, {{18305759421328246854ull, 17203305854059190079ull, 1753146688966100828ull, 6706515523909135393ull}}, {{18270513258232920664ull, 3057388243864435983ull, 6803119379635013940ull, 8383144404886419241ull}}, {{18336599814036657271ull, 11134239689270048297ull, 15781164658340353472ull, 5239465253054012025ull}}, {{9085691712263657877ull, 13917799611587560372ull, 5891397767643278128ull, 6549331566317515032ull}}, {{11357114640329572346ull, 17397249514484450465ull, 7364247209554097660ull, 8186664457896893790ull}}, {{180667622564900860ull, 1649908909698005733ull, 18437712561253474750ull, 5116665286185558618ull}}, {{4837520546633513979ull, 11285758173977282974ull, 13823768664712067629ull, 6395831607731948273ull}}, {{15270272720146668282ull, 272139662189440005ull, 3444652775607920825ull, 7994789509664935342ull}}, {{11849763459305361628ull, 11699302334936869763ull, 15987966040037114227ull, 4996743443540584588ull}}, {{10200518305704314131ull, 10012441900243699300ull, 1538213476336841168ull, 6245929304425730736ull}}, {{12750647882130392664ull, 12515552375304624125ull, 1922766845421051460ull, 7807411630532163420ull}}, {{10274997935545189367ull, 17045592271420165886ull, 10425101315242932970ull, 4879632269082602137ull}}, {{3620375382576710901ull, 12083618302420431550ull, 17643062662481054117ull, 6099540336353252671ull}}, {{13748841265075664434ull, 1269464822743375725ull, 17442142309673929743ull, 7624425420441565839ull}}, {{10898868799885984223ull, 7710944541855691684ull, 17818867971187287945ull, 4765265887775978649ull}}, {{13623585999857480279ull, 14250366695747002509ull, 8438526908701946219ull, 5956582359719973312ull}}, {{3194424444539686637ull, 13201272351256365233ull, 10548158635877432774ull, 7445727949649966640ull}}, {{13525730323905773908ull, 3639109201107840366ull, 6592599147423395484ull, 4653579968531229150ull}}, {{7683790868027441577ull, 4548886501384800458ull, 17464120971134020163ull, 5816974960664036437ull}}, {{381366548179526163ull, 1074422108303612669ull, 7995093158635361492ull, 7271218700830045547ull}}, {{5088394203651795608ull, 1343027635379515836ull, 5382180429866813961ull, 9089023376037556934ull}}, {{12403618414137148063ull, 12368607318180667157ull, 17198920823948922437ull, 5680639610023473083ull}}, {{1669464962389271367ull, 1625701092443670235ull, 16886965011508765143ull, 7100799512529341354ull}}, {{15921889258268752920ull, 15867184420836751505ull, 11885334227531180620ull, 8875999390661676693ull}}, {{3033651758776888719ull, 693618226168193883ull, 9734176901420681840ull, 5547499619163547933ull}}, {{17627122753753274611ull, 867022782710242353ull, 16779407145203240204ull, 6934374523954434916ull}}, {{8198845386909429552ull, 1083778478387802942ull, 2527514857794498639ull, 8667968154943043646ull}}, {{512592348391005566ull, 7594890576633458695ull, 15414754841403725361ull, 5417480096839402278ull}}, {{14475798490770920669ull, 14105299239219211272ull, 10045071514899880893ull, 6771850121049252848ull}}, {{18094748113463650837ull, 3796565993741850378ull, 12556339393624851117ull, 8464812651311566060ull}}, {{15920903589342169677ull, 4678696755302350438ull, 17071084157870307756ull, 5290507907069728787ull}}, {{10677757449822936288ull, 5848370944127938048ull, 16727169178910496791ull, 6613134883837160984ull}}, {{13347196812278670360ull, 2698777661732534656ull, 2462217399928569373ull, 8266418604796451231ull}}, {{8341998007674168975ull, 3992579047796528112ull, 8456414902596437714ull, 5166511627997782019ull}}, {{10427497509592711219ull, 14214095846600435948ull, 5958832609818159238ull, 6458139534997227524ull}}, {{13034371886990889024ull, 8544247771395769127ull, 7448540762272699048ull, 8072674418746534405ull}}, {{15064011457010387496ull, 5340154857122355704ull, 6961180985634130857ull, 5045421511716584003ull}}, {{383270247553432754ull, 11286879589830332535ull, 4089790213615275667ull, 6306776889645730004ull}}, {{14314145864723954654ull, 9496913468860527764ull, 5112237767019094584ull, 7883471112057162505ull}}, {{18169713202307247467ull, 5935570918037829852ull, 14724363650455403875ull, 4927169445035726565ull}}, {{4265397429174507718ull, 2807777629119899412ull, 4570396507787091132ull, 6158961806294658207ull}}, {{5331746786468134647ull, 3509722036399874265ull, 1101309616306476011ull, 7698702257868322759ull}}, {{14861556787611053915ull, 18334477337245779079ull, 7605847537832629362ull, 4811688911167701724ull}}, {{13965259966086429489ull, 13694724634702448041ull, 9507309422290786703ull, 6014611138959627155ull}}, {{3621516902325873149ull, 12506719774950672148ull, 7272450759436095475ull, 7518263923699533944ull}}, {{11486820100808446526ull, 5510856850130476140ull, 4545281724647559672ull, 4698914952312208715ull}}, {{14358525126010558158ull, 6888571062663095175ull, 1069916137382061686ull, 5873643690390260894ull}}, {{13336470389085809793ull, 17834085865183644777ull, 10560767208582352915ull, 7342054612987826117ull}}, {{2835529931075098529ull, 17680921313052168068ull, 17812645029155329048ull, 9177568266234782646ull}}, {{10995578243776712389ull, 11050575820657605042ull, 6521217124794692751ull, 5735980166396739154ull}}, {{4521100767866114678ull, 9201533757394618399ull, 17374893442848141747ull, 7169975207995923942ull}}, {{1039689941405255444ull, 6890231178315885095ull, 12495244766705401376ull, 8962469009994904928ull}}, {{7567335241019366509ull, 4306394486447428184ull, 7809527979190875860ull, 5601543131246815580ull}}, {{9459169051274208136ull, 5382993108059285230ull, 9761909973988594825ull, 7001928914058519475ull}}, {{2600589277237984361ull, 11340427403501494442ull, 7590701449058355627ull, 8752411142573149344ull}}, {{6237054316701128130ull, 4781924117974740074ull, 4744188405661472267ull, 5470256964108218340ull}}, {{17019689932731185970ull, 1365719129041037188ull, 5930235507076840334ull, 6837821205135272925ull}}, {{2827868342204430847ull, 10930520948156072294ull, 12024480402273438321ull, 8547276506419091156ull}}, {{15602475769159932991ull, 18360790638666014943ull, 16738672288275674758ull, 5342047816511931972ull}}, {{14891408693022528335ull, 13727616261477742871ull, 2476596286635041832ull, 6677559770639914966ull}}, {{14002574847850772515ull, 17159520326847178589ull, 12319117395148578098ull, 8346949713299893707ull}}, {{11057452289120426774ull, 15336386222706874522ull, 5393605362754167359ull, 5216843570812433567ull}}, {{4598443324545757659ull, 14558796759956205249ull, 2130320685015321295ull, 6521054463515541959ull}}, {{10359740174109584978ull, 13586809931517868657ull, 16497958911551315331ull, 8151318079394427448ull}}, {{18004052654886960371ull, 6185913197984973958ull, 10311224319719572082ull, 5094573799621517155ull}}, {{13281693781753924656ull, 16955763534335993256ull, 8277344381222077198ull, 6368217249526896444ull}}, {{16602117227192405820ull, 11971332381065215762ull, 10346680476527596498ull, 7960271561908620555ull}}, {{14988009285422641542ull, 12093768756593147755ull, 4160832288616053859ull, 4975169726192887847ull}}, {{14123325588350914023ull, 10505524927314046790ull, 589354342342679420ull, 6218962157741109809ull}}, {{8430784948583866721ull, 13131906159142558488ull, 5348378946355737179ull, 7773702697176387261ull}}, {{5269240592864916701ull, 5901598340250405103ull, 5648579850686029689ull, 4858564185735242038ull}}, {{1974864722653757972ull, 11988683943740394283ull, 16284096850212312919ull, 6073205232169052547ull}}, {{16303638958599361176ull, 10374168911248104949ull, 15743435044338003245ull, 7591506540211315684ull}}, {{12495617358338294687ull, 8789698578743759545ull, 616274865856476220ull, 4744691587632072303ull}}, {{1784463642640704647ull, 10987123223429699432ull, 14605401637602758987ull, 5930864484540090378ull}}, {{2230579553300880809ull, 9122218010859736386ull, 9033380010148672926ull, 7413580605675112973ull}}, {{6005798239240438410ull, 1089700238359947337ull, 7951705515556614531ull, 4633487878546945608ull}}, {{12118933817477935916ull, 15197183353232097883ull, 9939631894445768163ull, 5791859848183682010ull}}, {{10536981253420031991ull, 14384793173112734450ull, 3201167831202434396ull, 7239824810229602513ull}}, {{3947854529920264181ull, 17980991466390918063ull, 8613145807430430899ull, 9049781012787003141ull}}, {{9384938108841246969ull, 8932276657280629837ull, 7689059138857713264ull, 5656113132991876963ull}}, {{16342858654478946615ull, 11165345821600787296ull, 4999637905144753676ull, 7070141416239846204ull}}, {{1981829244389131653ull, 13956682277000984121ull, 6249547381430942095ull, 8837676770299807755ull}}, {{12767858323811677043ull, 15640455450766696931ull, 1600124104180644857ull, 5523547981437379847ull}}, {{11348136886337208400ull, 5715511258176207452ull, 15835213185507969784ull, 6904434976796724808ull}}, {{14185171107921510500ull, 7144389072720259315ull, 1347272408175410614ull, 8630543720995906011ull}}, {{6559888933237250111ull, 18300301225732325784ull, 16982946319605489297ull, 5394089825622441256ull}}, {{8199861166546562638ull, 9040318476883243518ull, 2781938825797310006ull, 6742612282028051571ull}}, {{1026454421328427489ull, 2077026059249278590ull, 17312481587528801220ull, 8428265352535064463ull}}, {{14476592068612430893ull, 10521513323885574926ull, 17737830019846582618ull, 5267665845334415289ull}}, {{8872368048910762808ull, 3928519618002192850ull, 8337229469526064561ull, 6584582306668019112ull}}, {{1867088024283677702ull, 9522335540930128967ull, 10421536836907580701ull, 8230727883335023890ull}}, {{8084459042818380420ull, 8257302722295024556ull, 11125146541494625842ull, 5144204927084389931ull}}, {{10105573803522975525ull, 1098256366014004887ull, 9294747158440894399ull, 6430256158855487414ull}}, {{8020281235976331502ull, 15207878512799669821ull, 2395061911196342190ull, 8037820198569359268ull}}, {{7318518781698901141ull, 4893238052072405734ull, 10720285731352489677ull, 5023637624105849542ull}}, {{18371520513978402234ull, 10728233583517895071ull, 4176985127335836288ull, 6279547030132311928ull}}, {{18352714624045614888ull, 13410291979397368839ull, 5221231409169795360ull, 7849433787665389910ull}}, {{18387975667669591161ull, 8381432487123355524ull, 17098327686013285812ull, 4905896117290868693ull}}, {{4538225510877437336ull, 10476790608904194406ull, 7537851552234443553ull, 6132370146613585867ull}}, {{14896153925451572478ull, 17707674279557630911ull, 4810628421865666537ull, 7665462683266982334ull}}, {{16227625231048314655ull, 4149767397082437463ull, 16841700818948205298ull, 4790914177041863958ull}}, {{15672845520383005414ull, 14410581283207822637ull, 11828753986830480814ull, 5988642721302329948ull}}, {{5755998845196593056ull, 8789854567155002489ull, 14785942483538101018ull, 7485803401627912435ull}}, {{15126714324316340420ull, 10105345122899264459ull, 6935371042997619184ull, 4678627126017445272ull}}, {{14296706886968037621ull, 12631681403624080574ull, 8669213803747023980ull, 5848283907521806590ull}}, {{8647511571855271218ull, 15789601754530100718ull, 1613145217829004167ull, 7310354884402258238ull}}, {{1586017427964313214ull, 15125316174735237994ull, 11239803559141031017ull, 9137943605502822797ull}}, {{5602946910905083663ull, 2535793581568441890ull, 9330720233676838338ull, 5711214753439264248ull}}, {{16227055675486130387ull, 12393114013815328170ull, 11663400292096047922ull, 7139018441799080310ull}}, {{11060447557502887175ull, 6268020480414384405ull, 5355878328265284095ull, 8923773052248850388ull}}, {{9218622732652998437ull, 10835041827900072109ull, 12570795992020578367ull, 5577358157655531492ull}}, {{16134964434243635950ull, 8932116266447702232ull, 15713494990025722959ull, 6971697697069414365ull}}, {{1721961469094993321ull, 6553459314632239887ull, 5806810682249989987ull, 8714622121336767957ull}}, {{7993754945825452682ull, 1790069062431455977ull, 5935099685619937694ull, 5446638825835479973ull}}, {{14603879700709203756ull, 11460958364894095779ull, 12030560625452310021ull, 6808298532294349966ull}}, {{13643163607459116791ull, 491139900835456012ull, 5814828744960611719ull, 8510373165367937458ull}}, {{17750349291516723803ull, 7224491465663241863ull, 8245953984027770228ull, 5318983228354960911ull}}, {{17576250595968516849ull, 9030614332079052329ull, 5695756461607324881ull, 6648729035443701139ull}}, {{8135255189678482349ull, 15899953933526203316ull, 2508009558581768197ull, 8310911294304626424ull}}, {{14307906530403827277ull, 12243314217667571024ull, 1567505974113605123ull, 5194319558940391515ull}}, {{17884883163004784096ull, 10692456753657075876ull, 15794440522924170116ull, 6492899448675489393ull}}, {{3909359880046428503ull, 13365570942071344846ull, 5907992598373048933ull, 8116124310844361742ull}}, {{16278407980311181527ull, 10659324848008284480ull, 17527553429265319295ull, 5072577694277726088ull}}, {{1901265901679425292ull, 8712470041582967697ull, 3462697712872097503ull, 6340722117847157611ull}}, {{6988268395526669519ull, 6278901533551321717ull, 18163430196372285591ull, 7925902647308947013ull}}, {{6673510756417862402ull, 10841842486110657929ull, 13657986881946372446ull, 4953689154568091883ull}}, {{12953574463949715906ull, 4328931070783546603ull, 12460797584005577654ull, 6192111443210114854ull}}, {{11580282061509756978ull, 14634535875334209062ull, 6352624943152196259ull, 7740139304012643568ull}}, {{2625990270016210208ull, 6840741912870186712ull, 3970390589470122662ull, 4837587065007902230ull}}, {{3282487837520262760ull, 17774299427942509198ull, 14186360273692429135ull, 6046983831259877787ull}}, {{13326481833755104257ull, 17606188266500748593ull, 13121264323688148515ull, 7558729789074847234ull}}, {{1411522118455858305ull, 8698024657349273919ull, 12812476220732480726ull, 4724206118171779521ull}}, {{15599460703351986593ull, 1649158784831816590ull, 2180537220633437196ull, 5905257647714724402ull}}, {{10275953842335207433ull, 2061448481039770738ull, 11949043562646572303ull, 7381572059643405502ull}}, {{11034157169886892550ull, 8205934328290938567ull, 2856466208226719785ull, 4613482537277128439ull}}, {{9181010443931227783ull, 14869103928791061113ull, 17405640815565563443ull, 5766853171596410548ull}}, {{16087949073341422633ull, 13974693892561438487ull, 3310306945747402688ull, 7208566464495513186ull}}, {{15498250323249390387ull, 17468367365701798109ull, 13361255719039029168ull, 9010708080619391482ull}}, {{11992249461244562944ull, 10917729603563623818ull, 12962470842826781134ull, 5631692550387119676ull}}, {{5766939789700927872ull, 4423789967599753965ull, 16203088553533476418ull, 7039615687983899595ull}}, {{11820360755553547744ull, 14753109496354468264ull, 15642174673489457618ull, 8799519609979874494ull}}, {{7387725472220967340ull, 13832379453648930569ull, 5164673152503523107ull, 5499699756237421559ull}}, {{13846342858703597079ull, 12678788298633775307ull, 1844155422202015980ull, 6874624695296776949ull}}, {{12696242554952108445ull, 15848485373292219134ull, 6916880296179907879ull, 8593280869120971186ull}}, {{3323465578417679874ull, 16822832385948718815ull, 8934736203539830328ull, 5370800543200606991ull}}, {{17989390028304263555ull, 2581796408726346902ull, 6556734235997400007ull, 6713500679000758739ull}}, {{13263365498525553635ull, 17062303566190097340ull, 3584231776569362104ull, 8391875848750948424ull}}, {{17512975473433246830ull, 10663939728868810837ull, 2240144860355851315ull, 5244922405469342765ull}}, {{8056161286509394826ull, 8718238642658625643ull, 7411867093872202048ull, 6556153006836678456ull}}, {{5458515589709355628ull, 10897798303323282054ull, 9264833867340252560ull, 8195191258545848070ull}}, {{17246630298850510980ull, 6811123939577051283ull, 1178835148660269946ull, 5121994536591155044ull}}, {{16946601855135750820ull, 17737276961326089912ull, 1473543935825337432ull, 6402493170738943805ull}}, {{2736508245210136909ull, 3724852127948060775ull, 6453615938209059695ull, 8003116463423679756ull}}, {{8627846680897417424ull, 9245561607608619840ull, 13256881998235438117ull, 5001947789639799847ull}}, {{10784808351121771780ull, 16168638027938162704ull, 11959416479366909742ull, 6252434737049749809ull}}, {{13481010438902214725ull, 10987425498067927572ull, 1114212543926473466ull, 7815543421312187262ull}}, {{17649003561168660012ull, 11478826954719842636ull, 14531440895236209628ull, 4884714638320117038ull}}, {{3614510377751273398ull, 14348533693399803296ull, 8940929082190486227ull, 6105893297900146298ull}}, {{4518137972189091748ull, 13323981098322366216ull, 1952789315883331976ull, 7632366622375182873ull}}, {{2823836232618182343ull, 8327488186451478885ull, 12749708368495552245ull, 4770229138984489295ull}}, {{8141481309200115832ull, 15021046251491736510ull, 11325449442192052402ull, 5962786423730611619ull}}, {{953479599645368982ull, 9552935777509894830ull, 9545125784312677599ull, 7453483029663264524ull}}, {{14430982805060519326ull, 12888113888584766124ull, 15189075652050199307ull, 4658426893539540327ull}}, {{18038728506325649157ull, 11498456342303569751ull, 14374658546635361230ull, 5823033616924425409ull}}, {{17936724614479673543ull, 5149698391024686381ull, 4133265128012037826ull, 7278792021155531762ull}}, {{8585847712817428216ull, 15660495025635633785ull, 14389953446869823090ull, 9098490026444414702ull}}, {{16895369866579362395ull, 14399495409449659019ull, 4382034885866251527ull, 5686556266527759189ull}}, {{16507526314796815090ull, 13387683243384685870ull, 10089229625760202313ull, 7108195333159698986ull}}, {{11411035856641243054ull, 2899545998948693626ull, 3388164995345477084ull, 8885244166449623733ull}}, {{11743583428828164813ull, 11035588286197709324ull, 4423446131304617129ull, 5553277604031014833ull}}, {{14679479286035206016ull, 18406171376174524559ull, 10140993682558159315ull, 6941597005038768541ull}}, {{13737663089116619616ull, 18396028201790767795ull, 17287928121625087048ull, 8676996256298460676ull}}, {{6280196421484193308ull, 11497517626119229872ull, 1581583039160903597ull, 5423122660186537923ull}}, {{7850245526855241635ull, 536838977366873628ull, 15812036854233293209ull, 6778903325233172403ull}}, {{9812806908569052044ull, 5282734740135979939ull, 15153360049364228607ull, 8473629156541465504ull}}, {{3827161308641963576ull, 10219238240226069318ull, 9470850030852642879ull, 5296018222838415940ull}}, {{14007323672657230277ull, 8162361781855198743ull, 11838562538565803599ull, 6620022778548019925ull}}, {{12897468572394149943ull, 5591266208891610525ull, 963145117925090787ull, 8275028473185024907ull}}, {{10366760866960037666ull, 1188698371343562626ull, 16742866763199039406ull, 5171892795740640566ull}}, {{3735079046845271275ull, 10709245001034229091ull, 11705211417144023449ull, 6464865994675800708ull}}, {{57162790129201189ull, 17998242269720174268ull, 14631514271430029311ull, 8081082493344750885ull}}, {{9259098780685526552ull, 18166430446216190773ull, 11450539428857462271ull, 5050676558340469303ull}}, {{16185559494284296093ull, 18096352039342850562ull, 9701488267644439935ull, 6313345697925586629ull}}, {{11008577331000594309ull, 18008754030751175299ull, 16738546352982937823ull, 7891682122406983286ull}}, {{4574517822661677491ull, 18173000296860566418ull, 5849905452186948235ull, 4932301326504364554ull}}, {{14941519315181872672ull, 18104564352648320118ull, 16535753852088461102ull, 6165376658130455692ull}}, {{9453527107122565031ull, 13407333403955624340ull, 2222948241401024762ull, 7706720822663069616ull}}, {{15131826478806378953ull, 12991269395899653116ull, 1389342650875640476ull, 4816700514164418510ull}}, {{468039024798422075ull, 16239086744874566396ull, 10960050350449326403ull, 6020875642705523137ull}}, {{585048780998027594ull, 15687172412665820091ull, 18311748956489045908ull, 7526094553381903921ull}}, {{16506556552619624910ull, 581110721061361748ull, 4527314070164571837ull, 4703809095863689951ull}}, {{2186451617064979522ull, 5338074419754090090ull, 1047456569278326892ull, 5879761369829612439ull}}, {{11956436558186000210ull, 6672593024692612612ull, 15144378766880072327ull, 7349701712287015548ull}}, {{14945545697732500262ull, 3729055262438377861ull, 483729384890538793ull, 9187127140358769436ull}}, {{11646809070296506616ull, 13859874585092455923ull, 9525702902411362553ull, 5741954462724230897ull}}, {{9946825319443245366ull, 3489785176083406192ull, 16518814646441591096ull, 7177443078405288621ull}}, {{12433531649304056707ull, 4362231470104257740ull, 6813460252769825158ull, 8971803848006610777ull}}, {{16994329317669811250ull, 16561452724097324799ull, 15787627704049610483ull, 5607377405004131735ull}}, {{16631225628659876159ull, 16090129886694268095ull, 15122848611634625200ull, 7009221756255164669ull}}, {{16177346017397457294ull, 1665918284658283503ull, 5068502709261117789ull, 8761527195318955837ull}}, {{17028370288514492665ull, 3347041937125121141ull, 5473657202501892570ull, 5475954497074347398ull}}, {{7450404805360952119ull, 13407174458261177235ull, 16065443539982141520ull, 6844943121342934247ull}}, {{4701319988273802245ull, 16758968072826471544ull, 15470118406550288996ull, 8556178901678667809ull}}, {{2938324992671126403ull, 1250983008661768907ull, 2751294976452848767ull, 5347611813549167381ull}}, {{17507964296121071716ull, 15398786816109374845ull, 8050804738993448862ull, 6684514766936459226ull}}, {{8049897314869175933ull, 10025111483281942749ull, 840133886887035270ull, 8355643458670574033ull}}, {{7337028831006928910ull, 1654008658623826314ull, 12054298725372866804ull, 5222277161669108770ull}}, {{18394658075613436946ull, 2067510823279782892ull, 5844501369861307697ull, 6527846452086385963ull}}, {{4546578520807244566ull, 7196074547527116520ull, 2693940693899246717ull, 8159808065107982454ull}}, {{2841611575504527854ull, 6803389601418141777ull, 15518770988969192910ull, 5099880040692489033ull}}, {{8163700487808047721ull, 17727609038627453029ull, 5563405680929327425ull, 6374850050865611292ull}}, {{14816311628187447555ull, 8324453243002152574ull, 6954257101161659282ull, 7968562563582014115ull}}, {{4648508749189766818ull, 9814469295303733263ull, 2040567679012343099ull, 4980351602238758822ull}}, {{1198949918059820619ull, 7656400600702278675ull, 11774081635620204682ull, 6225439502798448527ull}}, {{15333745452856939485ull, 347128714023072535ull, 10105916026097867949ull, 7781799378498060659ull}}, {{16501119935676669034ull, 2522798455478114286ull, 4010354507097473516ull, 4863624611561287912ull}}, {{11403027882741060485ull, 3153498069347642858ull, 5012943133871841895ull, 6079530764451609890ull}}, {{5030412816571549798ull, 17776930641966717285ull, 15489550954194578176ull, 7599413455564512362ull}}, {{5449851019570912576ull, 11110581651229198303ull, 14292655364798999264ull, 4749633409727820226ull}}, {{2200627756036252816ull, 13888227064036497879ull, 8642447169143973272ull, 5937041762159775283ull}}, {{16585842750327479732ull, 17360283830045622348ull, 6191372943002578686ull, 7421302202699719104ull}}, {{1142779682099899025ull, 6238491375351126064ull, 3869608089376611679ull, 4638313876687324440ull}}, {{1428474602624873781ull, 3186428200761519676ull, 4837010111720764599ull, 5797892345859155550ull}}, {{1785593253281092226ull, 17818093306234063307ull, 15269634676505731556ull, 7247365432323944437ull}}, {{16067049621883528994ull, 3825872559083027517ull, 5251985290350000734ull, 9059206790404930547ull}}, {{12347749022890899573ull, 16226228404709055910ull, 976647797255056506ull, 5662004244003081592ull}}, {{6211314241758848658ull, 11059413469031544080ull, 1220809746568820633ull, 7077505305003851990ull}}, {{7764142802198560823ull, 18435952854716818004ull, 10749384220065801599ull, 8846881631254814987ull}}, {{14075961288228876323ull, 18439999561839093108ull, 4412522128327432047ull, 5529301019534259367ull}}, {{17594951610286095403ull, 18438313433871478481ull, 903966641981902155ull, 6911626274417824209ull}}, {{8158631457575455542ull, 18436205773911960198ull, 5741644320904765598ull, 8639532843022280261ull}}, {{487458642557271810ull, 6910942590267587220ull, 5894370709779172451ull, 5399708026888925163ull}}, {{609323303196589762ull, 4026992219407096121ull, 2756277368796577660ull, 6749635033611156454ull}}, {{5373340147423125106ull, 5033740274258870151ull, 12668718747850497883ull, 8437043792013945567ull}}, {{10275866619780535048ull, 840244662198099892ull, 14835478245047643033ull, 5273152370008715979ull}}, {{12844833274725668810ull, 5661991846175012769ull, 13932661787882165887ull, 6591440462510894974ull}}, {{2220983538124922300ull, 2465803789291378058ull, 8192455197997931551ull, 8239300578138618718ull}}, {{5999800729755464342ull, 8458656395948193142ull, 508598480321319315ull, 5149562861336636699ull}}, {{16723122949049106235ull, 5961634476507853523ull, 14470806155683812856ull, 6436953576670795873ull}}, {{16292217667883994889ull, 7452043095634816904ull, 4253449639322602358ull, 8046191970838494842ull}}, {{10182636042427496806ull, 45840916344372661ull, 7270092043004014378ull, 5028869981774059276ull}}, {{17339981071461758911ull, 9280673182285241634ull, 9087615053755017972ull, 6286087477217574095ull}}, {{12451604302472422831ull, 11600841477856552043ull, 6747832798766384561ull, 7857609346521967619ull}}, {{5476409679831570318ull, 332996896019263171ull, 1911552490015296399ull, 4911005841576229762ull}}, {{2233826081362074993ull, 14251304175306242676ull, 11612812649373896306ull, 6138757301970287202ull}}, {{2792282601702593741ull, 8590758182278027537ull, 5292643774862594575ull, 7673446627462859003ull}}, {{13274391672132590848ull, 12286752891564849066ull, 1002059350075427657ull, 4795904142164286877ull}}, {{7369617553310962752ull, 1523383059173897621ull, 5864260206021672476ull, 5994880177705358596ull}}, {{13823707960066091344ull, 1904228823967372026ull, 7330325257527090595ull, 7493600222131698245ull}}, {{13251503493468694994ull, 17331044079475465180ull, 6887296295168125573ull, 4683500138832311403ull}}, {{16564379366835868743ull, 7828747044062167763ull, 3997434350532769063ull, 5854375173540389254ull}}, {{16093788190117448024ull, 5174247786650321800ull, 14220164975020737137ull, 7317968966925486567ull}}, {{1670491163937258414ull, 11079495751740290155ull, 13163520200348533517ull, 9147461208656858209ull}}, {{17184958041956644173ull, 9230527854051375298ull, 1309671097576751592ull, 5717163255410536381ull}}, {{12257825515591029408ull, 11538159817564219123ull, 6248774890398327394ull, 7146454069263170476ull}}, {{10710595876061398856ull, 5199327735100498096ull, 7810968612997909243ull, 8933067586578963095ull}}, {{6694122422538374285ull, 943736825224117358ull, 11799384410764775133ull, 5583167241611851934ull}}, {{17591025065027743665ull, 5791357049957534601ull, 5525858476601193108ull, 6978959052014814918ull}}, {{8153723276002515869ull, 7239196312446918252ull, 16130695132606267193ull, 8723698815018518647ull}}, {{14319449084356348226ull, 16053712741347793667ull, 16999213485519998851ull, 5452311759386574154ull}}, {{13287625337018047378ull, 15455454908257354180ull, 12025644820045222756ull, 6815389699233217693ull}}, {{16609531671272559223ull, 872574561612141109ull, 1196997969774364734ull, 8519237124041522117ull}}, {{12686800303759043467ull, 14380417156289751905ull, 3053966740322671910ull, 5324523202525951323ull}}, {{2023442324416640621ull, 8752149408507414074ull, 17652516480685503600ull, 6655654003157439153ull}}, {{11752674942375576584ull, 10940186760634267592ull, 8230587545574715788ull, 8319567503946798942ull}}, {{7345421838984735365ull, 16060988762251193053ull, 532431197556809463ull, 5199729689966749339ull}}, {{13793463317158307111ull, 15464549934386603412ull, 14500597052228175541ull, 6499662112458436673ull}}, {{17241829146447883888ull, 5495629362701090553ull, 4290688260003055715ull, 8124577640573045842ull}}, {{3858614188888845574ull, 1128925342474487644ull, 7293366180929297726ull, 5077861025358153651ull}}, {{4823267736111056968ull, 10634528714947885363ull, 4505021707734234253ull, 6347326281697692064ull}}, {{1417398651711433305ull, 17904846912112244608ull, 5631277134667792816ull, 7934157852122115080ull}}, {{885874157319645816ull, 11190529320070152880ull, 3519548209167370510ull, 4958848657576321925ull}}, {{1107342696649557270ull, 4764789613232915292ull, 9011121279886601042ull, 6198560821970402406ull}}, {{1384178370811946587ull, 15179359053395919923ull, 2040529563003475494ull, 7748201027463003008ull}}, {{17006012546253324281ull, 4875413389945062047ull, 1275330976877172184ull, 4842625642164376880ull}}, {{16645829664389267447ull, 6094266737431327559ull, 1594163721096465230ull, 6053282052705471100ull}}, {{16195601062059196405ull, 16841205458643935257ull, 1992704651370581537ull, 7566602565881838875ull}}, {{3204721636145915897ull, 3608224384011377680ull, 17386341471602471125ull, 4729126603676149296ull}}, {{4005902045182394872ull, 9121966498441610004ull, 3286182765793537290ull, 5911408254595186621ull}}, {{5007377556477993589ull, 2179086086197236697ull, 8719414475669309517ull, 7389260318243983276ull}}, {{14658826018867215754ull, 3667771813086966887ull, 14673006084148094256ull, 4618287698902489547ull}}, {{13711846505156631788ull, 4584714766358708609ull, 13729571586757729916ull, 5772859623628111934ull}}, {{3304750076163626023ull, 5730893457948385762ull, 7938592446592386587ull, 7216074529535139918ull}}, {{13354309632059308336ull, 2551930804008094298ull, 699868521385707426ull, 9020093161918924898ull}}, {{12958129538464455614ull, 6206642770932446840ull, 5049103844293455045ull, 5637558226199328061ull}}, {{16197661923080569518ull, 12369989482092946454ull, 10923065823794206710ull, 7046947782749160076ull}}, {{11023705366995936089ull, 6239114815761407260ull, 13653832279742758388ull, 8808684728436450095ull}}, {{16113187891227235864ull, 13122818796705655345ull, 15451174202480305848ull, 5505427955272781309ull}}, {{6306426808751881118ull, 16403523495882069182ull, 5478909697818218598ull, 6881784944090976637ull}}, {{17106405547794627205ull, 11281032332997810669ull, 11460323140700161152ull, 8602231180113720796ull}}, {{12997346476585335955ull, 7050645208123631668ull, 16386073999792376528ull, 5376394487571075497ull}}, {{16246683095731669944ull, 8813306510154539585ull, 6647534444458306948ull, 6720493109463844372ull}}, {{6473295814382423718ull, 11016633137693174482ull, 8309418055572883685ull, 8400616386829805465ull}}, {{8657495902416402728ull, 9191238720271928003ull, 16722601330801522063ull, 5250385241768628415ull}}, {{6210183859593115506ull, 6877362381912522100ull, 16291565645074514675ull, 6562981552210785519ull}}, {{7762729824491394382ull, 3985016958963264721ull, 15752771037915755440ull, 8203726940263481899ull}}, {{16380921186375591249ull, 2490635599352040450ull, 7539638889483653198ull, 5127329337664676187ull}}, {{11252779446114713253ull, 12336666536044826371ull, 4812862593427178593ull, 6409161672080845234ull}}, {{9454288289216003662ull, 1585775114773869252ull, 15239450278638749050ull, 8011452090101056542ull}}, {{15132302217614778097ull, 5602795465161056186ull, 4912970405721830252ull, 5007157556313160339ull}}, {{9692005735163696813ull, 7003494331451320233ull, 1529526988724899911ull, 6258946945391450424ull}}, {{16726693187382008920ull, 4142681895886762387ull, 1911908735906124889ull, 7823683681739313030ull}}, {{8148340232900061623ull, 14118391230997696252ull, 15030001015223491767ull, 4889802301087070643ull}}, {{10185425291125077029ull, 13036303020319732411ull, 14175815250601976805ull, 6112252876358838304ull}}, {{8120095595478958382ull, 2460320720117501802ull, 17719769063252471007ull, 7640316095448547880ull}}, {{9686745765601736893ull, 8455229477714520482ull, 11074855664532794379ull, 4775197559655342425ull}}, {{2885060170147395308ull, 5957350828715762699ull, 8511525383829262ull, 5968996949569178032ull}}, {{17441383267966407847ull, 16670060572749479181ull, 10639406729786577ull, 7461246186961472540ull}}, {{13206707551692698857ull, 3501258830327342632ull, 9230021666060892419ull, 4663278866850920337ull}}, {{16508384439615873571ull, 18211631593191342002ull, 16149213101003503427ull, 5829098583563650421ull}}, {{11412108512665066155ull, 18152853473061789599ull, 6351458320972215572ull, 7286373229454563027ull}}, {{9653449622403944790ull, 4244322767617685383ull, 3327636882787881562ull, 9107966536818203784ull}}, {{12950935041643547350ull, 7264387748188441268ull, 2079773051742425976ull, 5692479085511377365ull}}, {{16188668802054434187ull, 9080484685235551585ull, 7211402333105420374ull, 7115598856889221706ull}}, {{6400777947285879022ull, 2127233819689663674ull, 18237624953236551276ull, 8894498571111527132ull}}, {{8612172235481062293ull, 10552893174160815604ull, 2175143558918068739ull, 5559061606944704458ull}}, {{10765215294351327866ull, 8579430449273631601ull, 11942301485502361732ull, 6948827008680880572ull}}, {{18068205136366547737ull, 10724288061592039501ull, 14927876856877952165ull, 8686033760851100715ull}}, {{13598471219442786288ull, 9008523047708718640ull, 7024080026335026151ull, 5428771100531937947ull}}, {{16998089024303482859ull, 6648967791208510396ull, 4168414014491394785ull, 6785963875664922434ull}}, {{2800867206669801958ull, 12922895757438025900ull, 14433889554969019289ull, 8482454844581153042ull}}, {{10973914041023402032ull, 1159280820757684331ull, 13632866990283024960ull, 5301534277863220651ull}}, {{9105706532851864636ull, 1449101025947105414ull, 12429397719426393296ull, 6626917847329025814ull}}, {{2158761129210054987ull, 1811376282433881768ull, 6313375112428215812ull, 8283647309161282268ull}}, {{1349225705756284367ull, 10355482213375951913ull, 13169231482122410690ull, 5177279568225801417ull}}, {{6298218150622743362ull, 3720980729865164083ull, 2626481297370849651ull, 6471599460282251772ull}}, {{3261086669851041299ull, 39539893904067200ull, 3283101621713562064ull, 8089499325352814715ull}}, {{2038179168656900812ull, 24712433690042000ull, 18192839578066833954ull, 5055937078345509196ull}}, {{2547723960821126015ull, 9254262578967328308ull, 4294305398873990826ull, 6319921347931886496ull}}, {{3184654951026407518ull, 2344456186854384577ull, 5367881748592488533ull, 7899901684914858120ull}}, {{13519624390459974459ull, 3771128125997684312ull, 3354926092870305333ull, 4937438553071786325ull}}, {{16899530488074968074ull, 9325596175924493294ull, 8805343634515269570ull, 6171798191339732906ull}}, {{11901041073238934284ull, 2433623183050840810ull, 1783307506289311155ull, 7714747739174666133ull}}, {{12049836689201721832ull, 17661915553902633170ull, 3420410200644513423ull, 4821717336984166333ull}}, {{5838923824647376482ull, 17465708423950903559ull, 8887198769233029683ull, 6027146671230207916ull}}, {{2686968762381832698ull, 17220449511511241545ull, 11108998461541287104ull, 7533933339037759895ull}}, {{13208570522557115196ull, 10762780944694525965ull, 13860653066104386296ull, 4708708336898599934ull}}, {{2675655097914230283ull, 13453476180868157457ull, 8102444295775707062ull, 5885885421123249918ull}}, {{7956254890820175758ull, 7593473189230421013ull, 904683332864858020ull, 7357356776404062398ull}}, {{14557004631952607602ull, 9491841486538026266ull, 10354226202935848333ull, 9196695970505077997ull}}, {{13709813913397767655ull, 8238243938299960368ull, 8777234386048599160ull, 5747934981565673748ull}}, {{17137267391747209569ull, 10297804922874950460ull, 10971542982560748950ull, 7184918726957092185ull}}, {{2974840165974460345ull, 3648884116738912268ull, 18326114746628324092ull, 8981148408696365231ull}}, {{11082647140588813524ull, 11503924609816595975ull, 18371350744283784413ull, 5613217755435228269ull}}, {{9241622907308629001ull, 544847706988581257ull, 9129130375072566805ull, 7016522194294035337ull}}, {{16163714652563174155ull, 5292745652163114475ull, 16023098987268096410ull, 8770652742867544171ull}}, {{7796478648638289895ull, 7919652051029334451ull, 7708593857828866304ull, 5481657964292215107ull}}, {{5133912292370474464ull, 9899565063786668064ull, 5024056303858694976ull, 6852072455365268884ull}}, {{6417390365463093080ull, 12374456329733335080ull, 6280070379823368720ull, 8565090569206586105ull}}, {{4010868978414433175ull, 7734035206083334425ull, 15454259033458075210ull, 5353181605754116315ull}}, {{9625272241445429373ull, 444171970749392223ull, 14706137773395206109ull, 6691477007192645394ull}}, {{7419904283379398812ull, 5166900981864128183ull, 9159300179889231828ull, 8364346258990806743ull}}, {{11554969204753206114ull, 12452685150519855922ull, 12642091640071851748ull, 5227716411869254214ull}}, {{5220339469086731834ull, 15565856438149819903ull, 6579242513235038877ull, 6534645514836567768ull}}, {{1913738317931026889ull, 5622262492405111167ull, 8224053141543798597ull, 8168306893545709710ull}}, {{8113615476347973662ull, 5819757066966888431ull, 528347195037486219ull, 5105191808466068569ull}}, {{5530333327007579173ull, 2663010315281222635ull, 5272120012224245678ull, 6381489760582585711ull}}, {{2301230640332086062ull, 12552134930956304102ull, 1978463996852919193ull, 7976862200728232139ull}}, {{15273327205489717501ull, 927555304206608207ull, 17377441062528932160ull, 4985538875455145086ull}}, {{14479972988434758972ull, 1159444130258260259ull, 12498429291306389392ull, 6231923594318931358ull}}, {{13488280217116060811ull, 1449305162822825324ull, 6399664577278210932ull, 7789904492898664198ull}}, {{17653547172552313815ull, 10129187763619041635ull, 17834848416081045544ull, 4868690308061665123ull}}, {{17455247947263004365ull, 12661484704523802044ull, 17681874501673919026ull, 6085862885077081404ull}}, {{3372315860369203840ull, 6603483843799976748ull, 3655599053382847167ull, 7607328606346351756ull}}, {{11331069449585528208ull, 11044706430016067323ull, 11508121445219055287ull, 4754580378966469847ull}}, {{9552150793554522356ull, 9194197019092696250ull, 9773465788096431205ull, 5943225473708087309ull}}, {{2716816455088377137ull, 16104432292293258217ull, 16828518253547926910ull, 7429031842135109136ull}}, {{13227225330498705471ull, 5453584164255898481ull, 10517823908467454319ull, 4643144901334443210ull}}, {{2698973607841218126ull, 2205294186892485198ull, 3923907848729542091ull, 5803931126668054013ull}}, {{12597089046656298466ull, 16591675788897770209ull, 9516570829339315517ull, 7254913908335067516ull}}, {{1911303253038209370ull, 6904536680840049050ull, 11895713536674144397ull, 9068642385418834395ull}}, {{5806250551576268760ull, 6621178434738724608ull, 5128977951207646296ull, 5667901490886771497ull}}, {{7257813189470335950ull, 8276473043423405760ull, 11022908457436945774ull, 7084876863608464371ull}}, {{9072266486837919938ull, 1122219267424481392ull, 9166949553368794314ull, 8856096079510580464ull}}, {{5670166554273699961ull, 5313073060567688774ull, 5729343470855496446ull, 5535060049694112790ull}}, {{16311080229696900759ull, 15864713362564386775ull, 16385051375424146365ull, 6918825062117640987ull}}, {{15777164268693738045ull, 5995833647923319757ull, 15869628200852795053ull, 8648531327647051234ull}}, {{12166570677147280230ull, 6053239039165768800ull, 14530203643960384812ull, 5405332079779407021ull}}, {{15208213346434100288ull, 7566548798957211000ull, 4327696499668317303ull, 6756665099724258777ull}}, {{563522609333073744ull, 4846499980269125847ull, 10021306643012784533ull, 8445831374655323471ull}}, {{7269730658474252946ull, 5334905496881897606ull, 13180845679524072189ull, 5278644609159577169ull}}, {{18310535359947591990ull, 11280317889529759911ull, 2640999044122926524ull, 6598305761449471462ull}}, {{18276483181507102084ull, 14100397361912199889ull, 12524620842008433963ull, 8247882201811839327ull}}, {{4505272960800856947ull, 6506905341981430979ull, 14745417053896353083ull, 5154926376132399579ull}}, {{1019905182573683279ull, 3521945659049400820ull, 13820085298943053450ull, 6443657970165499474ull}}, {{1274881478217104099ull, 13625804110666526833ull, 8051734586824041004ull, 8054572462706874343ull}}, {{12326015969954159822ull, 17739499606021355078ull, 11949863144406107483ull, 5034107789191796464ull}}, {{6184147925587923969ull, 17562688489099305944ull, 14937328930507634354ull, 6292634736489745580ull}}, {{7730184906984904961ull, 12729988574519356622ull, 224917089424991327ull, 7865793420612181976ull}}, {{219679548438177697ull, 14873771886715679745ull, 140573180890619579ull, 4916120887882613735ull}}, {{4886285453975110025ull, 13980528839967211777ull, 14010774531395438186ull, 6145151109853267168ull}}, {{10719542835896275435ull, 8252289013104238913ull, 17513468164244297733ull, 7681438887316583960ull}}, {{18228929318503641907ull, 7463523642403843272ull, 10945917602652686083ull, 4800899304572864975ull}}, {{4339417574420000768ull, 4717718534577416187ull, 9070710984888469700ull, 6001124130716081219ull}}, {{812585949597613056ull, 5897148168221770234ull, 6726702712683199221ull, 7501405163395101524ull}}, {{5119552236925896064ull, 5991560614352300348ull, 13427561232281775321ull, 4688378227121938452ull}}, {{6399440296157370080ull, 12101136786367763339ull, 16784451540352219151ull, 5860472783902423065ull}}, {{3387614351769324696ull, 10514734964532316270ull, 7145506370158110227ull, 7325590979878028832ull}}, {{13457889976566431678ull, 8531732687238007433ull, 8931882962697637784ull, 9156988724847536040ull}}, {{1493652207712937943ull, 5332332929523754646ull, 5582426851686023615ull, 5723117953029710025ull}}, {{11090437296495948236ull, 2053730143477305403ull, 11589719583034917423ull, 7153897441287137531ull}}, {{9251360602192547391ull, 16402220734628795466ull, 9875463460366258874ull, 8942371801608921914ull}}, {{10393786394797730024ull, 14863073977570385070ull, 10783850681156299700ull, 5588982376005576196ull}}, {{3768860956642386722ull, 132098398253429722ull, 13479813351445374626ull, 6986227970006970245ull}}, {{13934448232657759210ull, 9388495034671562960ull, 3014708634024554570ull, 8732784962508712807ull}}, {{8709030145411099506ull, 10479495415097114754ull, 8801721923906428462ull, 5457990601567945504ull}}, {{1662915644909098575ull, 3875997232016617635ull, 11002152404883035578ull, 6822488251959931880ull}}, {{15913702611418536930ull, 14068368576875547851ull, 13752690506103794472ull, 8528110314949914850ull}}, {{7640221122922891630ull, 8792730360547217407ull, 13207117584742259449ull, 5330068946843696781ull}}, {{4938590385226226633ull, 15602598969111409663ull, 2673838925645660599ull, 6662586183554620977ull}}, {{1561551963105395387ull, 14891562692961874175ull, 7953984675484463653ull, 8328232729443276221ull}}, {{7893499004581953973ull, 11613069692314865311ull, 7277083431391483735ull, 5205145455902047638ull}}, {{5255187737300054562ull, 9904651096966193735ull, 18319726326094130477ull, 6506431819877559547ull}}, {{1957298653197680299ull, 16992499889635130073ull, 18287971889190275192ull, 8133039774846949434ull}}, {{12752526704317019947ull, 10620312431021956295ull, 16041668449171309899ull, 5083149859279343396ull}}, {{11328972361968887030ull, 8663704520350057465ull, 1605341487754585758ull, 6353937324099179246ull}}, {{326157397178945075ull, 1606258613582796024ull, 11230048896548008006ull, 7942421655123974057ull}}, {{203848373236840672ull, 14838969688771411227ull, 101251532701423147ull, 4964013534452483786ull}}, {{14089868521828214552ull, 13937026092536876129ull, 9349936452731554742ull, 6205016918065604732ull}}, {{3777277597003104478ull, 8197910578816319354ull, 11687420565914443428ull, 7756271147582005915ull}}, {{6972484516554328203ull, 14347066148614975404ull, 4998794844482833190ull, 4847669467238753697ull}}, {{8715605645692910253ull, 8710460648913943447ull, 10860179574030929392ull, 6059586834048442121ull}}, {{6282821038688749912ull, 10888075811142429309ull, 18186910485966049644ull, 7574483542560552651ull}}, {{6232606158394162647ull, 16028419418818794126ull, 9060976044515087075ull, 4734052214100345407ull}}, {{17014129734847479117ull, 15423838255096104753ull, 6714534037216470940ull, 5917565267625431759ull}}, {{7432604113277185184ull, 833053745160579326ull, 3781481528093200772ull, 7396956584531789699ull}}, {{33691552370852836ull, 9744030627580137887ull, 57582945844556530ull, 4623097865332368562ull}}, {{13877172495745729757ull, 2956666247620396550ull, 9295350719160471471ull, 5778872331665460702ull}}, {{8123093582827386389ull, 17530890864807659400ull, 2395816362095813530ull, 7223590414581825878ull}}, {{10153866978534232986ull, 12690241544154798442ull, 12218142489474542721ull, 9029488018227282347ull}}, {{10957852880011283520ull, 1013871937455667170ull, 5330496046707895249ull, 5643430011392051467ull}}, {{4473944063159328592ull, 5879025940246971867ull, 2051434039957481157ull, 7054287514240064334ull}}, {{980744060521772836ull, 11960468443736102738ull, 11787664586801627254ull, 8817859392800080417ull}}, {{5224651056253495927ull, 2863606758907676307ull, 449761339109935178ull, 5511162120500050261ull}}, {{1919127801889482004ull, 12802880485489371192ull, 5173887692314806876ull, 6888952650625062826ull}}, {{2398909752361852505ull, 16003600606861713990ull, 15690731652248284403ull, 8611190813281328532ull}}, {{15334376650508321528ull, 7696407370074877291ull, 583335245800401944ull, 5381994258300830333ull}}, {{14556284794708014006ull, 9620509212593596614ull, 5340855075677890334ull, 6727492822876037916ull}}, {{8971983956530241699ull, 2802264478887219960ull, 6676068844597362918ull, 8409366028595047395ull}}, {{5607489972831401062ull, 15586473354586676187ull, 1866700018659657871ull, 5255853767871904622ull}}, {{2397676447611863424ull, 14871405674805957330ull, 11556747060179348147ull, 6569817209839880777ull}}, {{12220467596369605087ull, 13977571075080058758ull, 610875769942021472ull, 8212271512299850972ull}}, {{3026106229303615276ull, 8735981921925036724ull, 9605169393068539228ull, 5132669695187406857ull}}, {{3782632786629519095ull, 10919977402406295905ull, 16618147759763061939ull, 6415837118984258571ull}}, {{9339977001714286772ull, 9038285734580481977ull, 16160998681276439520ull, 8019796398730323214ull}}, {{17366700672139898993ull, 5648928584112801235ull, 5488938157370386796ull, 5012372749206452009ull}}, {{17096689821747485837ull, 7061160730141001544ull, 11472858715140371399ull, 6265465936508065011ull}}, {{2924118203474805680ull, 4214764894248864027ull, 9729387375498076345ull, 7831832420635081264ull}}, {{17968474941667611214ull, 14163443104974009776ull, 6080867109686297715ull, 4894895262896925790ull}}, {{4013849603374962402ull, 13092617862790124317ull, 16824455923962647952ull, 6118619078621157237ull}}, {{9628998022646090906ull, 16365772328487655396ull, 7195511849671146228ull, 7648273848276446547ull}}, {{15241495801008582624ull, 1005235668450008814ull, 2191351896830772441ull, 4780171155172779092ull}}, {{9828497714405952472ull, 5868230603989898922ull, 2739189871038465551ull, 5975213943965973865ull}}, {{3062250106152664782ull, 2723602236559985749ull, 8035673357225469843ull, 7469017429957467331ull}}, {{4219749325559109441ull, 17843152462345848757ull, 2716452839052224699ull, 4668135893723417082ull}}, {{9886372675376274705ull, 17692254559504923042ull, 12618938085670056682ull, 5835169867154271352ull}}, {{3134593807365567573ull, 12891946162526377995ull, 15773672607087570853ull, 7293962333942839190ull}}, {{17753300314489123179ull, 2279874647875808781ull, 10493718722004687759ull, 9117452917428548988ull}}, {{13401655705769395939ull, 8342450682563462344ull, 15781946238107705657ull, 5698408073392843117ull}}, {{16752069632211744923ull, 15039749371631715834ull, 5892374742352468359ull, 7123010091741053897ull}}, {{11716715003409905346ull, 14188000696112256889ull, 11977154446367973353ull, 8903762614676317371ull}}, {{405417849490108986ull, 1949971407429078700ull, 5179878519766289394ull, 5564851634172698357ull}}, {{506772311862636232ull, 11660836296141124183ull, 11086534168135249646ull, 6956064542715872946ull}}, {{14468523445110459002ull, 5352673333321629420ull, 4634795673314286250ull, 8695080678394841183ull}}, {{18266199190048812684ull, 7957106851753406291ull, 9814276323462510762ull, 5434425423996775739ull}}, {{18221062969133627951ull, 723011527836982056ull, 7656159385900750549ull, 6793031779995969674ull}}, {{4329584637707483323ull, 5515450428223615475ull, 346827195521162378ull, 8491289724994962093ull}}, {{400147389353483125ull, 8058842536067147576ull, 2522610006414420438ull, 5307056078121851308ull}}, {{500184236691853906ull, 850181133229158662ull, 3153262508018025548ull, 6633820097652314135ull}}, {{9848602332719593190ull, 1062726416536448327ull, 17776636190304695647ull, 8292275122065392668ull}}, {{13072905485590827600ull, 7581733037976362060ull, 1887025582085658971ull, 5182671951290870418ull}}, {{16341131856988534500ull, 4865480279043064671ull, 11582154014461849522ull, 6478339939113588022ull}}, {{15814728802808280221ull, 15305222385658606647ull, 5254320481222536094ull, 8097924923891985028ull}}, {{16801734529396256994ull, 4954077972609241250ull, 12507322337618860867ull, 5061203077432490642ull}}, {{11778796124890545435ull, 1580911447334163659ull, 6410780885168800276ull, 6326503846790613303ull}}, {{10111809137685793889ull, 1976139309167704574ull, 3401790088033612441ull, 7908129808488266629ull}}, {{1708194692626233277ull, 12764302114298285119ull, 4431961814234701727ull, 4942581130305166643ull}}, {{15970301421064955308ull, 11343691624445468494ull, 928266249365989255ull, 6178226412881458304ull}}, {{10739504739476418327ull, 9567928512129447714ull, 1160332811707486569ull, 7722783016101822880ull}}, {{11323876480600149359ull, 17509170366149374581ull, 725208007317179105ull, 4826739385063639300ull}}, {{319787545468022986ull, 8051404902404554515ull, 906510009146473882ull, 6033424231329549125ull}}, {{14234792487117192445ull, 840884091150917335ull, 5744823529860480257ull, 7541780289161936406ull}}, {{15814274332089327134ull, 12054767603037793094ull, 17425572761444963872ull, 4713612680726210253ull}}, {{10544470878256883109ull, 15068459503797241368ull, 7946907896524041128ull, 5892015850907762817ull}}, {{13180588597821103887ull, 388830306037000094ull, 14545320889082439315ull, 7365019813634703521ull}}, {{7252363710421604050ull, 14321095937828413830ull, 4346593056070885431ull, 9206274767043379402ull}}, {{18367785374295666244ull, 15868213988783840499ull, 7328306678471691298ull, 5753921729402112126ull}}, {{18348045699442194900ull, 10611895449125024816ull, 18383755384944389931ull, 7192402161752640157ull}}, {{4488313050593192009ull, 8653183292978893117ull, 9144636175898323702ull, 8990502702190800197ull}}, {{5111038665834438958ull, 796553539684420294ull, 8021240619150146266ull, 5619064188869250123ull}}, {{15612170369147824505ull, 10219063961460301175ull, 5414864755510294928ull, 7023830236086562654ull}}, {{14903526943007392728ull, 12773829951825376469ull, 15991952981242644468ull, 8779787795108203317ull}}, {{11620547348593314407ull, 17207015756745636101ull, 12300813622490346744ull, 5487367371942627073ull}}, {{690626130459479296ull, 3062025622222493511ull, 1540958972830769719ull, 6859209214928283842ull}}, {{14698340718356512832ull, 17662590083060280600ull, 11149570752893237956ull, 8574011518660354802ull}}, {{9186462948972820520ull, 1815746765057899567ull, 11580167738985661627ull, 5358757199162721751ull}}, {{6871392667788637746ull, 16104741511604538171ull, 9863523655304689129ull, 6698446498953402189ull}}, {{3977554816308409279ull, 6295868834223509002ull, 16941090587558249316ull, 8373058123691752736ull}}, {{7097657778620143704ull, 13158290058244468934ull, 10588181617223905822ull, 5233161327307345460ull}}, {{18095444260129955437ull, 7224490535950810359ull, 13235227021529882278ull, 6541451659134181825ull}}, {{18007619306735056393ull, 18253985206793288757ull, 2708975721630189135ull, 8176814573917727282ull}}, {{13560605075923104198ull, 18326269781886887329ull, 6304795844446256113ull, 5110509108698579551ull}}, {{3115698289621716535ull, 9072779172076445450ull, 3269308787130432238ull, 6388136385873224439ull}}, {{13117994898881921476ull, 2117601928240781004ull, 17921694039195204010ull, 7985170482341530548ull}}, {{17422118848655976731ull, 5935187223577876031ull, 1977686737642226698ull, 4990731551463456593ull}}, {{17165962542392583010ull, 16642356066327120847ull, 7083794440480171276ull, 6238414439329320741ull}}, {{16845767159563340858ull, 2356201009199349443ull, 13466429069027602000ull, 7798018049161650926ull}}, {{8222761465513394084ull, 1472625630749593402ull, 3804832149714863346ull, 4873761280726031829ull}}, {{1055079795036966797ull, 11064154075291767561ull, 9367726205570967086ull, 6092201600907539786ull}}, {{5930535762223596400ull, 4606820557259933643ull, 2486285720108933050ull, 7615252001134424733ull}}, {{1400741842176053798ull, 7490948866714846431ull, 3859771584281777108ull, 4759532500709015458ull}}, {{15585985358002230960ull, 9363686083393558038ull, 14048086517206997193ull, 5949415625886269322ull}}, {{10259109660648012892ull, 16316293622669335452ull, 8336736109653970683ull, 7436769532357836653ull}}, {{15635315574759783866ull, 7891840504954640705ull, 7516303077747425629ull, 4647980957723647908ull}}, {{5709086413167566120ull, 14476486649620688786ull, 9395378847184282036ull, 5809976197154559885ull}}, {{16359730053314233458ull, 18095608312025860982ull, 16355909577407740449ull, 7262470246443199856ull}}, {{11226290529788016014ull, 8784452334750162516ull, 1998142898050123946ull, 9078087808053999821ull}}, {{16239803617972285817ull, 10101968727646239476ull, 3554682320495021418ull, 5673804880033749888ull}}, {{1853010448755805655ull, 3404088872703023538ull, 4443352900618776773ull, 7092256100042187360ull}}, {{11539635097799532877ull, 8866797109306167326ull, 5554191125773470966ull, 8865320125052734200ull}}, {{2600585917697320144ull, 930062174888966675ull, 3471369453608419354ull, 5540825078157958875ull}}, {{17085790452403813892ull, 10385949755465984151ull, 18174269872292687904ull, 6926031347697448593ull}}, {{16745552047077379461ull, 12982437194332480189ull, 8882779285083696168ull, 8657539184621810742ull}}, {{12771813038637056115ull, 8114023246457800118ull, 940051034749922201ull, 5410961990388631714ull}}, {{6741394261441544336ull, 14754215076499638052ull, 10398435830292178559ull, 6763702487985789642ull}}, {{8426742826801930420ull, 13831082827197159661ull, 3774672751010447391ull, 8454628109982237053ull}}, {{7572557275964900465ull, 15561955794639306644ull, 4665013478595223571ull, 5284142568738898158ull}}, {{9465696594956125581ull, 14840758724871745401ull, 15054638885098805272ull, 6605178210923622697ull}}, {{16443806762122544880ull, 104204332380130135ull, 4983240551091342879ull, 8256472763654528372ull}}, {{17194908253967672406ull, 6982656735378663190ull, 12337897381286865107ull, 5160295477284080232ull}}, {{12270263280604814699ull, 4116634900795941084ull, 15422371726608581384ull, 6450369346605100290ull}}, {{15337829100756018374ull, 5145793625994926355ull, 10054592621405950922ull, 8062961683256375363ull}}, {{7280300178758817532ull, 7827807034674216876ull, 3978277379165025374ull, 5039351052035234602ull}}, {{9100375223448521915ull, 561386756487995287ull, 14196218760811057526ull, 6299188815044043252ull}}, {{6763783010883264489ull, 9925105482464769917ull, 17745273451013821907ull, 7873986018805054065ull}}, {{6533207391015734258ull, 3897347917326787246ull, 4173266879242556836ull, 4921241261753158791ull}}, {{17389881275624443630ull, 4871684896658484057ull, 604897580625808141ull, 6151551577191448489ull}}, {{7902293539248390826ull, 10701292139250492976ull, 5367807994209648080ull, 7689439471489310611ull}}, {{4938933462030244266ull, 6688307587031558110ull, 1049036987167336098ull, 4805899669680819132ull}}, {{15397038864392581141ull, 17583756520644223445ull, 1311296233959170122ull, 6007374587101023915ull}}, {{5411240525208562714ull, 12756323613950503499ull, 15474178347731126365ull, 7509218233876279893ull}}, {{1076182319041657744ull, 10278545267932758639ull, 11977204476545647930ull, 4693261396172674933ull}}, {{15180285954084235892ull, 3624809548061172490ull, 1136447540399896201ull, 5866576745215843667ull}}, {{9751985405750519057ull, 9142697953503853517ull, 15255617480782033963ull, 7333220931519804583ull}}, {{16801667775615536725ull, 6816686423452428992ull, 14457835832550154550ull, 9166526164399755729ull}}, {{10501042359759710454ull, 18095487069939931832ull, 2118618367702764737ull, 5729078852749847331ull}}, {{13126302949699638067ull, 8784300782142751078ull, 16483331014910619634ull, 7161348565937309163ull}}, {{7184506650269771775ull, 1757003940823663040ull, 15992477750210886639ull, 8951685707421636454ull}}, {{4490316656418607360ull, 8015656490655871256ull, 5383612575454416245ull, 5594803567138522784ull}}, {{5612895820523259200ull, 14631256631747226974ull, 6729515719318020306ull, 6993504458923153480ull}}, {{16239491812508849808ull, 9065698752829257909ull, 8411894649147525383ull, 8741880573653941850ull}}, {{12455525392031725082ull, 12583590748159368049ull, 9869120174144591268ull, 5463675358533713656ull}}, {{1734348684757492640ull, 15729488435199210062ull, 12336400217680739085ull, 6829594198167142070ull}}, {{11391307892801641608ull, 5826802488716848865ull, 6197128235246148049ull, 8536992747708927588ull}}, {{202038405359944149ull, 15170966601516500301ull, 13096577183883618338ull, 5335620467318079742ull}}, {{4864234025127318090ull, 9740336215040849568ull, 7147349442999747115ull, 6669525584147599678ull}}, {{6080292531409147613ull, 7563734250373674056ull, 18157558840604459702ull, 8336906980184499597ull}}, {{3800182832130717258ull, 115647888056158381ull, 13654317284591481266ull, 5210566862615312248ull}}, {{9361914558590784477ull, 9367931896924973784ull, 17067896605739351582ull, 6513208578269140310ull}}, {{11702393198238480596ull, 2486542834301441422ull, 12111498720319413670ull, 8141510722836425388ull}}, {{2702309730471662469ull, 15389147326720564601ull, 16793058737054409351ull, 5088444201772765867ull}}, {{7989573181516965990ull, 14624748139973317847ull, 16379637402890623785ull, 6360555252215957334ull}}, {{5375280458468819583ull, 4445877119684483597ull, 11251174716758503924ull, 7950694065269946668ull}}, {{5665393295756706191ull, 12002045236657578056ull, 16255356234828840760ull, 4969183790793716667ull}}, {{7081741619695882739ull, 15002556545821972570ull, 15707509275108663046ull, 6211479738492145834ull}}, {{18075549061474629232ull, 9529823645422689904ull, 10411014557031053000ull, 7764349673115182293ull}}, {{11297218163421643270ull, 5956139778389181190ull, 8812727107358102077ull, 4852718545696988933ull}}, {{4898150667422278280ull, 12056860741413864392ull, 15627594902625015500ull, 6065898182121236166ull}}, {{6122688334277847849ull, 15071075926767330490ull, 10311121591426493567ull, 7582372727651545208ull}}, {{8438366227351042810ull, 16336951481870663412ull, 6444450994641558479ull, 4738982954782215755ull}}, {{10547957784188803512ull, 15809503333910941361ull, 3443877724874560195ull, 5923728693477769694ull}}, {{17796633248663392294ull, 15150193148961288797ull, 13528219192947976052ull, 7404660866847212117ull}}, {{13428738789628314136ull, 245498681246029690ull, 10760980004806178985ull, 4627913041779507573ull}}, {{7562551450180616862ull, 4918559369984925017ull, 18062911024435111635ull, 5784891302224384466ull}}, {{14064875331153158981ull, 1536513194053768367ull, 13355266743689113736ull, 7231114127780480583ull}}, {{12969408145514060823ull, 1920641492567210459ull, 12082397411184004266ull, 9038892659725600729ull}}, {{5800037081732594062ull, 5812086951281894441ull, 633969354348920810ull, 5649307912328500456ull}}, {{11861732370593130482ull, 16488480725957143859ull, 792461692936151012ull, 7061634890410625570ull}}, {{10215479444814025198ull, 2163856833736878208ull, 10213949153024964574ull, 8827043613013281962ull}}, {{6384674653008765749ull, 15187468576367712592ull, 10995404239067990762ull, 5516902258133301226ull}}, {{7980843316260957186ull, 9760963683604864932ull, 4520883261980212645ull, 6896127822666626533ull}}, {{9976054145326196483ull, 16812890622933469069ull, 10262790095902653710ull, 8620159778333283166ull}}, {{8540876850042566754ull, 5896370620906030264ull, 1802557791511770665ull, 5387599861458301979ull}}, {{10676096062553208442ull, 11982149294559925734ull, 16088255294671877043ull, 6734499826822877473ull}}, {{4121748041336734745ull, 10366000599772519264ull, 6275261063057682592ull, 8418124783528596842ull}}, {{2576092525835459216ull, 6478750374857824540ull, 8533724182838439524ull, 5261327989705373026ull}}, {{3220115657294324019ull, 8098437968572280675ull, 1443783191693273597ull, 6576659987131716283ull}}, {{17860202626900068736ull, 14734733479142738747ull, 15639787044898755708ull, 8220824983914645353ull}}, {{8856783632598849008ull, 18432580461318987525ull, 2857337875420640461ull, 5138015614946653346ull}}, {{15682665559175949164ull, 9205667521366570694ull, 12795044381130576385ull, 6422519518683316682ull}}, {{10379959912115160647ull, 16118770420135601272ull, 6770433439558444673ull, 8028149398354145853ull}}, {{6487474945071975405ull, 3156702484943668939ull, 6537363908937721873ull, 5017593373971341158ull}}, {{3497657662912581352ull, 8557564124606974078ull, 17395076923026928149ull, 6271991717464176447ull}}, {{13595444115495502497ull, 15308641174186105501ull, 17132160135356272282ull, 7839989646830220559ull}}, {{10802995581398383013ull, 14179586752293703842ull, 17625129112238752032ull, 4899993529268887849ull}}, {{4280372439893202958ull, 17724483440367129803ull, 8196353335016276328ull, 6124991911586109812ull}}, {{738779531439115794ull, 3708860226749360638ull, 10245441668770345411ull, 7656239889482637265ull}}, {{14296795262431611083ull, 12194632504656446ull, 17932616089049935642ull, 4785149930926648290ull}}, {{8647622041184738046ull, 9238615327485596366ull, 13192398074457643744ull, 5981437413658310363ull}}, {{1586155514626146749ull, 11548269159356995458ull, 11878811574644666776ull, 7476796767072887954ull}}, {{5603033215068729622ull, 7217668224598122161ull, 12035943252580304639ull, 4672997979420554971ull}}, {{11615477537263299932ull, 4410399262320264797ull, 10433243047297992895ull, 5841247474275693714ull}}, {{684288866296961203ull, 901313059472943093ull, 3818181772267715311ull, 7301559342844617143ull}}, {{5467047101298589407ull, 14961699379623342578ull, 161041196907256234ull, 9126949178555771429ull}}, {{8028590456739006284ull, 13962748130691977015ull, 2406493757280729098ull, 5704343236597357143ull}}, {{5424052052496369951ull, 8230063126510195461ull, 16843175251883075085ull, 7130429045746696428ull}}, {{11391751084047850342ull, 14899264926565132230ull, 2607224991144292240ull, 8913036307183370536ull}}, {{2508158409102518560ull, 9312040579103207644ull, 1629515619465182650ull, 5570647691989606585ull}}, {{3135198011378148200ull, 2416678687024233747ull, 6648580542758866217ull, 6963309614987008231ull}}, {{17754055569504848962ull, 7632534377207680087ull, 3699039660021194867ull, 8704137018733760289ull}}, {{18013813758581612457ull, 2464490976541106102ull, 13841114833581716552ull, 5440085636708600180ull}}, {{13293895161372239763ull, 3080613720676382628ull, 17301393541977145690ull, 6800107045885750225ull}}, {{16617368951715299704ull, 13074139187700254093ull, 7791683872189268400ull, 8500133807357187782ull}}, {{12691698604035756267ull, 8171336992312658808ull, 258116401690904846ull, 5312583629598242364ull}}, {{15864623255044695334ull, 990799203536047702ull, 322645502113631058ull, 6640729536997802955ull}}, {{10607407031951093359ull, 10461871041274835436ull, 14238364932924202534ull, 8300911921247253693ull}}, {{15853001431824209158ull, 1926983382369384243ull, 11204821092291320536ull, 5188069950779533558ull}}, {{15204565771352873543ull, 2408729227961730304ull, 4782654328509374862ull, 6485087438474416948ull}}, {{558963140481540313ull, 12234283571806938689ull, 5978317910636718577ull, 8106359298093021185ull}}, {{11878567008869432456ull, 728898204738254824ull, 15265663740216418871ull, 5066474561308138240ull}}, {{14848208761086790569ull, 14746180811204982242ull, 635335601560971972ull, 6333093201635172801ull}}, {{9336888914503712404ull, 18432726014006227803ull, 5405855520378602869ull, 7916366502043966001ull}}, {{3529712562351126301ull, 13826296767967586329ull, 14907874746305096553ull, 4947729063777478750ull}}, {{9023826721366295780ull, 3447812904677319199ull, 9411471396026594884ull, 6184661329721848438ull}}, {{6668097383280481820ull, 4309766130846648999ull, 2540967208178467797ull, 7730826662152310548ull}}, {{11085089892191382994ull, 4999446840992849576ull, 10811476541966318181ull, 4831766663845194092ull}}, {{13856362365239228742ull, 10860994569668449874ull, 13514345677457897726ull, 6039708329806492615ull}}, {{8097080919694260120ull, 4352871175230786535ull, 12281246078394984254ull, 7549635412258115769ull}}, {{11978204602449994431ull, 16555602539801405296ull, 758249771355783302ull, 4718522132661322356ull}}, {{14972755753062493039ull, 11471131137896980812ull, 947812214194729128ull, 5898152665826652945ull}}, {{269200617618564682ull, 14338913922371226016ull, 5796451286170799314ull, 7372690832283316181ull}}, {{336500772023205852ull, 8700270366109256712ull, 11857250126140887047ull, 9215863540354145226ull}}, {{210312982514503658ull, 12355198006459367301ull, 12022467347265442308ull, 5759914712721340766ull}}, {{4874577246570517476ull, 15443997508074209126ull, 5804712147227027077ull, 7199893390901675958ull}}, {{15316593595067922653ull, 5469938829810597695ull, 16479262220888559655ull, 8999866738627094947ull}}, {{16490400024558533514ull, 10336240796272705415ull, 7993695878841655832ull, 5624916711641934342ull}}, {{16001314012270778989ull, 12920300995340881769ull, 768747811697293982ull, 7031145889552417928ull}}, {{6166584460056310024ull, 6927004207321326404ull, 960934764621617478ull, 8788932361940522410ull}}, {{13077487324389969573ull, 18164435684857992714ull, 5212270246315898827ull, 5493082726212826506ull}}, {{7123487118632686158ull, 18093858587645102989ull, 15738709844749649342ull, 6866353407766033132ull}}, {{13516044916718245602ull, 13393951197701602928ull, 1226643232227510062ull, 8582941759707541416ull}}, {{8447528072948903501ull, 3759533480136113926ull, 766652020142193789ull, 5364338599817213385ull}}, {{1336038054331353569ull, 9311102868597530312ull, 5570001043605130140ull, 6705423249771516731ull}}, {{1670047567914191961ull, 11638878585746912890ull, 2350815286079024771ull, 8381779062214395914ull}}, {{5655465748373757880ull, 4968456106878126604ull, 6080945572226778386ull, 5238611913883997446ull}}, {{7069332185467197349ull, 15433942170452434063ull, 16824554002138248790ull, 6548264892354996807ull}}, {{4224979213406608783ull, 10069055676210766771ull, 16419006484245423084ull, 8185331115443746009ull}}, {{334768999165436537ull, 15516531834486505040ull, 3344350025012307571ull, 5115831947152341256ull}}, {{418461248956795672ull, 14783978774680743396ull, 4180437531265384464ull, 6394789933940426570ull}}, {{523076561195994589ull, 33229394641377629ull, 14448918950936506389ull, 7993487417425533212ull}}, {{2632765859961190570ull, 2326611380864554970ull, 18253946381190092301ull, 4995929635890958257ull}}, {{12514329361806264021ull, 7519950244508081616ull, 8982374921205451664ull, 6244912044863697822ull}}, {{15642911702257830026ull, 9399937805635102020ull, 2004596614652038772ull, 7806140056079622278ull}}, {{553447777056367958ull, 15098333165376714571ull, 15087930939439687944ull, 4878837535049763923ull}}, {{14526867776602623660ull, 426172383011341597ull, 14248227655872222027ull, 6098546918812204904ull}}, {{4323526665471115863ull, 14367773534046340709ull, 17810284569840277533ull, 7623183648515256130ull}}, {{5008047175133141366ull, 11285701467992656895ull, 15743113874577561362ull, 4764489780322035081ull}}, {{1648372950489038804ull, 4883754798136045311ull, 5843834287939787991ull, 5955612225402543852ull}}, {{15895524243393462217ull, 1493007479242668734ull, 7304792859924734989ull, 7444515281753179815ull}}, {{5323016633693525982ull, 3238972683740361911ull, 11483024565094041224ull, 4652822051095737384ull}}, {{2042084773689519573ull, 4048715854675452389ull, 14353780706367551530ull, 5816027563869671730ull}}, {{7164291985539287370ull, 14284266855199091294ull, 8718853846104663604ull, 7270034454837089663ull}}, {{18178737018778885021ull, 17855333568998864117ull, 6286881289203441601ull, 9087543068546362079ull}}, {{13667553645950497090ull, 4242054452983208217ull, 10846829833393232857ull, 5679714417841476299ull}}, {{3249384002155957650ull, 9914254084656398176ull, 8946851273314153167ull, 7099643022301845374ull}}, {{4061730002694947063ull, 7781131587393109816ull, 1960192054787915651ull, 8874553777877306718ull}}, {{2538581251684341914ull, 2557364232906999683ull, 15060178089524610994ull, 5546596111173316698ull}}, {{17008284619887591105ull, 12420077327988525411ull, 9601850575050987934ull, 6933245138966645873ull}}, {{16648669756432100977ull, 6301724623130880956ull, 16613999237241122822ull, 8666556423708307341ull}}, {{1182046560915287303ull, 17773635944738964310ull, 12689592532489395715ull, 5416597764817692088ull}}, {{10700930237998884936ull, 17605358912496317483ull, 15861990665611744644ull, 6770747206022115110ull}}, {{8764476779071218266ull, 3559954566910845238ull, 10604116295159904998ull, 8463434007527643888ull}}, {{866111968492123513ull, 16060029659601441986ull, 6627572684474940623ull, 5289646254704777430ull}}, {{10306011997469930199ull, 15463351056074414578ull, 17507837892448451587ull, 6612057818380971787ull}}, {{3659142959982636940ull, 14717502801665630319ull, 17273111347133176580ull, 8265072272976214734ull}}, {{9204493377630229944ull, 18421811287895794757ull, 6184008573530847458ull, 5165670170610134209ull}}, {{16117302740465175334ull, 13803892073014967638ull, 12341696735340947227ull, 6457087713262667761ull}}, {{10923256388726693359ull, 12643179072841321644ull, 1592062863894020322ull, 8071359641578334702ull}}, {{16050407279808959158ull, 12513672938953213931ull, 14830097345215926413ull, 5044599775986459188ull}}, {{15451323081333811043ull, 1807033118409353702ull, 90877607810356401ull, 6305749719983073986ull}}, {{10090781814812487996ull, 6870477416439080032ull, 9336969046617721309ull, 7882187149978842482ull}}, {{6306738634257804997ull, 6599891394488118972ull, 10447291672563463722ull, 4926366968736776551ull}}, {{7883423292822256247ull, 17473236279964924523ull, 8447428572276941748ull, 6157958710920970689ull}}, {{5242593097600432404ull, 3394801276246604038ull, 15170971733773565090ull, 7697448388651213361ull}}, {{17111678741282433965ull, 6733436816081515427ull, 2564328305967396325ull, 4810905242907008351ull}}, {{16777912408175654552ull, 13028482038529282188ull, 17040468437741409118ull, 6013631553633760438ull}}, {{2525646436510016574ull, 7062230511306826928ull, 12077213510321985590ull, 7517039442042200548ull}}, {{1578529022818760359ull, 18248952124848930542ull, 16771630480806016801ull, 4698149651276375342ull}}, {{11196533315378226256ull, 8976132100778999465ull, 11741166064152745194ull, 5872687064095469178ull}}, {{160608588940619108ull, 1996793089118973524ull, 5453085543336155685ull, 7340858830119336473ull}}, {{200760736175773885ull, 7107677379826104809ull, 11428042947597582510ull, 9176073537649170591ull}}, {{11654690506178328438ull, 18277356417673479217ull, 14060055869889570924ull, 5735045961030731619ull}}, {{733305077440746836ull, 4399951448382297406ull, 12963383818934575752ull, 7168807451288414524ull}}, {{10140003383655709353ull, 5499939310477871757ull, 16204229773668219690ull, 8961009314110518155ull}}, {{8643345123998512298ull, 8049148087476057752ull, 7821800599328943354ull, 5600630821319073847ull}}, {{10804181404998140372ull, 838063072490296382ull, 5165564730733791289ull, 7000788526648842309ull}}, {{4281854719392899657ull, 5659264859040258382ull, 11068641931844627015ull, 8750985658311052886ull}}, {{16511217254902725998ull, 10454569564541243344ull, 2306215188975503980ull, 5469366036444408054ull}}, {{2192277494918855881ull, 13068211955676554181ull, 12106141023074155783ull, 6836707545555510067ull}}, {{7352032887075957755ull, 11723578926168304822ull, 10520990260415306825ull, 8545884431944387584ull}}, {{18430078609704637309ull, 409707801214108657ull, 6575618912759566766ull, 5341177769965242240ull}}, {{9202540206848632924ull, 9735506788372411630ull, 8219523640949458457ull, 6676472212456552800ull}}, {{2279803221706015347ull, 16781069503892902442ull, 10274404551186823071ull, 8345590265570691000ull}}, {{6036563031993647496ull, 17405697467574145882ull, 6421502844491764419ull, 5215993915981681875ull}}, {{16769075826846835178ull, 17145435816040294448ull, 3415192537187317620ull, 6519992394977102344ull}}, {{2514600709848992357ull, 2985050696340816445ull, 4268990671484147026ull, 8149990493721377930ull}}, {{3877468452869314175ull, 6477342703640398182ull, 7279805188104979795ull, 5093744058575861206ull}}, {{14070207602941418527ull, 3484992361123109823ull, 18323128521986000552ull, 6367180073219826507ull}}, {{12976073485249385254ull, 4356240451403887279ull, 18292224634055112786ull, 7958975091524783134ull}}, {{15027574955921947640ull, 7334336300554817453ull, 6820954377857057587ull, 4974359432202989459ull}}, {{4949410639620270838ull, 4556234357266133913ull, 3914506953893934080ull, 6217949290253736824ull}}, {{10798449317952726451ull, 5695292946582667391ull, 4893133692367417600ull, 7772436612817171030ull}}, {{13666559851361535888ull, 3559558091614167119ull, 16893266613011799712ull, 4857772883010731893ull}}, {{12471513795774531956ull, 4449447614517708899ull, 7281525210982585928ull, 6072216103763414867ull}}, {{10977706226290777041ull, 5561809518147136124ull, 4490220495300844506ull, 7590270129704268584ull}}, {{16084438428286511459ull, 8087816967269347981ull, 2806387809563027816ull, 4743918831065167865ull}}, {{6270489980075975611ull, 10109771209086684977ull, 8119670780381172674ull, 5929898538831459831ull}}, {{12449798493522357418ull, 3413841974503580413ull, 5537902457049077939ull, 7412373173539324789ull}}, {{10086967067665167339ull, 18274552298560595422ull, 5767032044869367663ull, 4632733233462077993ull}}, {{3385336797726683365ull, 18231504354773356374ull, 11820476074514097483ull, 5790916541827597491ull}}, {{13455043034013130014ull, 18177694425039307563ull, 10163909074715233950ull, 7238645677284496864ull}}, {{12207117774089024614ull, 13498745994444358646ull, 12704886343394042438ull, 9048307096605621080ull}}, {{3017762590378252480ull, 3825030228100336250ull, 7940553964621276524ull, 5655191935378513175ull}}, {{12995575274827591408ull, 4781287785125420312ull, 5314006437349207751ull, 7068989919223141469ull}}, {{16244469093534489259ull, 1364923712979387486ull, 11254194065113897593ull, 8836237399028926836ull}}, {{5541107165031667883ull, 12382292366680586939ull, 16257243327550961803ull, 5522648374393079272ull}}, {{2314697937862196950ull, 10866179439923345770ull, 1874810085729150638ull, 6903310467991349091ull}}, {{12116744459182521995ull, 4359352263049406404ull, 16178570662443602010ull, 8629138084989186363ull}}, {{16796337323843852055ull, 7336281182833266906ull, 7805763654813557304ull, 5393211303118241477ull}}, {{11772049617950039261ull, 9170351478541583633ull, 14368890586944334534ull, 6741514128897801846ull}}, {{880003967155385364ull, 2239567311322203734ull, 8737741196825642360ull, 8426892661122252308ull}}, {{14385060534754279565ull, 1399729569576377333ull, 14684460284870802283ull, 5266807913201407692ull}}, {{4146267613160685744ull, 15584720017252635379ull, 18355575356088502853ull, 6583509891501759615ull}}, {{571148498023469276ull, 5645841966283630512ull, 18332783176683240663ull, 8229387364377199519ull}}, {{356967811264668297ull, 10446180256568350926ull, 18375518513068107270ull, 5143367102735749699ull}}, {{9669581800935611180ull, 3834353283855662849ull, 18357712122907746184ull, 6429208878419687124ull}}, {{16698663269596901878ull, 4792941604819578561ull, 4500396079925131114ull, 8036511098024608906ull}}, {{3519135515856981818ull, 7607274521439624505ull, 7424433568380594850ull, 5022819436265380566ull}}, {{9010605413248615177ull, 285721114944754823ull, 57169923620967755ull, 6278524295331725708ull}}, {{6651570748133381067ull, 14192209448963107241ull, 71462404526209693ull, 7848155369164657135ull}}, {{15686446763651832927ull, 11175973914815635977ull, 6962193030469962914ull, 4905097105727910709ull}}, {{5773000399282627446ull, 4746595356664769164ull, 13314427306514841547ull, 6131371382159888386ull}}, {{7216250499103284308ull, 1321558177403573551ull, 7419662096288776126ull, 7664214227699860483ull}}, {{11427685589580634549ull, 14661031916159397181ull, 2331445800966791126ull, 4790133892312412802ull}}, {{449548931693629474ull, 9102917858344470669ull, 12137679288063264716ull, 5987667365390516002ull}}, {{5173622183044424746ull, 11378647322930588336ull, 5948727073224305087ull, 7484584206738145003ull}}, {{3233513864402765466ull, 14029183604472699566ull, 1412111411551496727ull, 4677865129211340627ull}}, {{13265264367358232641ull, 12924793487163486553ull, 15600197319721534621ull, 5847331411514175783ull}}, {{2746522403915627089ull, 2320933803672194480ull, 14888560631224530373ull, 7309164264392719729ull}}, {{3433153004894533861ull, 7512853273017631004ull, 4775642733748499254ull, 9136455330490899662ull}}, {{11369092664913859471ull, 83847277208631473ull, 16819834763874975746ull, 5710284581556812288ull}}, {{376307775860160627ull, 9328181133365565150ull, 2578049381134168066ull, 7137855726946015361ull}}, {{9693756756679976592ull, 2436854379852180629ull, 7834247744845097987ull, 8922319658682519201ull}}, {{8364440982138679322ull, 17663935051903470557ull, 16425619886596656001ull, 5576449786676574500ull}}, {{15067237246100737056ull, 8244860759597174484ull, 2085280784536268386ull, 6970562233345718126ull}}, {{387302483916369704ull, 1082703912641692298ull, 11829973017525111291ull, 8713202791682147657ull}}, {{4853750070875118969ull, 16817591009896915350ull, 476204108312112700ull, 5445751744801342286ull}}, {{15290559625448674520ull, 2575244688661592571ull, 9818627172244916684ull, 6807189681001677857ull}}, {{14501513513383455246ull, 3219055860826990714ull, 16884969983733533759ull, 8508987101252097321ull}}, {{13675131964292047433ull, 8929438940657951052ull, 3635577212192376743ull, 5318116938282560826ull}}, {{17093914955365059291ull, 6550112657395050911ull, 13767843552095246737ull, 6647646172853201032ull}}, {{16755707675778936209ull, 12799326840171201543ull, 17209804440119058421ull, 8309557716066501290ull}}, {{17389846325002916987ull, 10305422284320694916ull, 15367813793501799417ull, 5193473572541563306ull}}, {{3290563832544094618ull, 17493463873828256550ull, 9986395205022473463ull, 6491841965676954133ull}}, {{13336576827534894080ull, 17255143823857932783ull, 17094680024705479733ull, 8114802457096192666ull}}, {{15252889544850390656ull, 13090307899124901941ull, 15295861033868312737ull, 5071751535685120416ull}}, {{5231053875780824608ull, 2527826818623963715ull, 673082218625839306ull, 6339689419606400521ull}}, {{1927131326298642856ull, 12383155560134730452ull, 5453038791709687036ull, 7924611774508000651ull}}, {{10427829115791427593ull, 16962844261938982340ull, 1102306235604860445ull, 4952882359067500407ull}}, {{13034786394739284491ull, 7368497272141564213ull, 15212940849788239269ull, 6191102948834375508ull}}, {{2458424938141941902ull, 13822307608604343171ull, 569431988525747470ull, 7738878686042969386ull}}, {{17677416650834571353ull, 4027256236950326577ull, 4967581011255980073ull, 4836799178776855866ull}}, {{8261712758261050479ull, 9645756314615296126ull, 15432848300924750899ull, 6045998973471069832ull}}, {{1103768910971537291ull, 7445509374841732254ull, 844316302446387008ull, 7557498716838837291ull}}, {{14524913624639374519ull, 4653443359276082658ull, 16668598753524849544ull, 4723436698024273306ull}}, {{8932769993944442340ull, 5816804199095103323ull, 11612376405051286122ull, 5904295872530341633ull}}, {{6554276474003165021ull, 16494377285723654962ull, 680412451031943940ull, 7380369840662927042ull}}, {{8708108814679366043ull, 1085613766722508543ull, 5036943800322352867ull, 4612731150414329401ull}}, {{6273449999921819649ull, 15192075263685299391ull, 10907865768830328987ull, 5765913938017911751ull}}, {{3230126481474886657ull, 14378408061179236335ull, 9023146192610523330ull, 7207392422522389689ull}}, {{17872716157125772033ull, 8749638039619269610ull, 15890618759190542067ull, 9009240528152987111ull}}, {{15782133616630995425ull, 3162680765548349554ull, 16849165752135170648ull, 5630775330095616944ull}}, {{10504294983933968473ull, 3953350956935436943ull, 2614713116459411694ull, 7038469162619521181ull}}, {{8518682711490072687ull, 14165060733024071987ull, 7880077414001652521ull, 8798086453274401476ull}}, {{3018333685467601478ull, 1935633930498963136ull, 14148420420605808634ull, 5498804033296500922ull}}, {{3772917106834501847ull, 11642914449978479728ull, 8462153488902484984ull, 6873505041620626153ull}}, {{4716146383543127309ull, 14553643062473099660ull, 15189377879555494134ull, 8591881302025782691ull}}, {{12170963526569230376ull, 4484340895618299383ull, 7187518165508489882ull, 5369925813766114182ull}}, {{10602018389784150066ull, 14828798156377650037ull, 18207769743740388160ull, 6712407267207642727ull}}, {{17864209005657575486ull, 89253621762510930ull, 18148026161248097297ull, 8390509084009553409ull}}, {{15776816646963372583ull, 11584998559670039091ull, 4424987323138978954ull, 5244068177505970881ull}}, {{15109334790276827825ull, 5257876162732773056ull, 10142920172351111597ull, 6555085221882463601ull}}, {{439924414136483165ull, 11184031221843354225ull, 17290336233866277400ull, 8193856527353079501ull}}, {{11804167804903771738ull, 6990019513652096390ull, 13112303155380117327ull, 5121160329595674688ull}}, {{5531837719274938865ull, 4125838373637732584ull, 16390378944225146659ull, 6401450411994593360ull}}, {{6914797149093673581ull, 545611948619777826ull, 2041229606571881708ull, 8001813014993241701ull}}, {{8933434236610933892ull, 9564379504742136949ull, 3581611513321120019ull, 5001133134370776063ull}}, {{15778478814191055269ull, 7343788362500283282ull, 18312072446933563736ull, 6251416417963470078ull}}, {{10499726480884043278ull, 9179735453125354103ull, 13666718521812178862ull, 7814270522454337598ull}}, {{13479858078193608905ull, 1125648639775958410ull, 3930013057705223885ull, 4883919076533960999ull}}, {{7626450560887235323ull, 6018746818147335917ull, 300830303704141952ull, 6104898845667451249ull}}, {{14144749219536432058ull, 7523433522684169896ull, 4987723898057565344ull, 7631123557084314061ull}}, {{8840468262210270036ull, 4702145951677606185ull, 5423170445499672292ull, 4769452223177696288ull}}, {{15662271346190225449ull, 5877682439597007731ull, 6778963056874590365ull, 5961815278972120360ull}}, {{14966153164310393908ull, 11958789067923647568ull, 8473703821093237956ull, 7452269098715150450ull}}, {{9353845727693996192ull, 16697615204307055538ull, 9907750906610661626ull, 4657668186696969031ull}}, {{2468935122762719432ull, 11648646968529043615ull, 7773002614835939129ull, 5822085233371211289ull}}, {{16921226958735563002ull, 725750655379140806ull, 14327939286972311816ull, 7277606541714014111ull}}, {{11928161661564677945ull, 907188319223926008ull, 13298238090288001866ull, 9097008177142517639ull}}, {{7455101038477923716ull, 5178678717942341659ull, 15228927834071083022ull, 5685630110714073524ull}}, {{4707190279670016741ull, 15696720434282702882ull, 589415718879302161ull, 7107037638392591906ull}}, {{15107359886442296734ull, 5785842487571214890ull, 9960141685453903510ull, 8883797047990739882ull}}, {{14053785947453823363ull, 17451209610014173018ull, 10836774571836077597ull, 5552373154994212426ull}}, {{8343860397462503395ull, 7978953957235552561ull, 4322596177940321189ull, 6940466443742765533ull}}, {{15041511515255517148ull, 14585378464971828605ull, 10014931240852789390ull, 8675583054678456916ull}}, {{11706787706248392170ull, 4504175522180004974ull, 15482704062387769177ull, 5422239409174035572ull}}, {{5410112595955714404ull, 10241905421152394122ull, 906636004275159855ull, 6777799261467544466ull}}, {{15986012781799418813ull, 8190695758013104748ull, 10356667042198725627ull, 8472249076834430582ull}}, {{767885951769860950ull, 2813341839544496516ull, 1861230882946815613ull, 5295155673021519114ull}}, {{959857439712326188ull, 8128363317858008549ull, 11549910640538295324ull, 6618944591276898892ull}}, {{5811507818067795638ull, 10160454147322510686ull, 14437388300672869155ull, 8273680739096123615ull}}, {{17467250441574535986ull, 4044440832862875226ull, 15940896715561625078ull, 5171050461935077259ull}}, {{12610691015113394175ull, 14278923077933369841ull, 15314434876024643443ull, 6463813077418846574ull}}, {{1928305713609579006ull, 13236967828989324398ull, 9919671558176028496ull, 8079766346773558218ull}}, {{15040249126288150591ull, 8273104893118327748ull, 10811480742287405714ull, 5049853966733473886ull}}, {{353567334150636623ull, 1118009079543133878ull, 4290978891004481335ull, 6312317458416842358ull}}, {{9665331204543071586ull, 15232569404711081059ull, 14587095650610377476ull, 7890396823021052947ull}}, {{3734988993625725790ull, 296983841089649854ull, 6811091772417791971ull, 4931498014388158092ull}}, {{13892108278886933045ull, 14206287856644226029ull, 8513864715522239963ull, 6164372517985197615ull}}, {{3530077293326502594ull, 13146173802377894633ull, 6030644875975412050ull, 7705465647481497019ull}}, {{13735513354397533881ull, 12828044644913572049ull, 1463310038270938579ull, 4815916029675935637ull}}, {{3334333637714753640ull, 11423369787714577158ull, 6440823566266061128ull, 6019895037094919546ull}}, {{13391289083998217857ull, 14279212234643221447ull, 17274401494687352218ull, 7524868796368649432ull}}, {{15287084705139968017ull, 13536193665079401308ull, 10796500934179595136ull, 4703042997730405895ull}}, {{662111807715408405ull, 16920242081349251636ull, 8883940149297106016ull, 5878803747163007369ull}}, {{827639759644260506ull, 2703558527977012929ull, 15716611205048770425ull, 7348504683953759211ull}}, {{5646235717982713537ull, 7991134178398654065ull, 15034077987883575127ull, 9185630854942199014ull}}, {{15058112369807665721ull, 11911987889140240646ull, 4784612723999846550ull, 5741019284338874384ull}}, {{9599268425404806343ull, 5666612824570525000ull, 5980765904999808188ull, 7176274105423592980ull}}, {{11999085531756007928ull, 7083266030713156250ull, 7475957381249760235ull, 8970342631779491225ull}}, {{12111114475774892859ull, 2121198259982028704ull, 16201688409349569907ull, 5606464144862182015ull}}, {{15138893094718616074ull, 16486555880259699592ull, 15640424493259574479ull, 7008080181077727519ull}}, {{476872294688718476ull, 15996508831897236587ull, 14938844598147080195ull, 8760100226347159399ull}}, {{16438946248676306712ull, 7691975010722078914ull, 16254306901483006978ull, 5475062641466974624ull}}, {{11325310773990607582ull, 391596726547822835ull, 1871139553144207107ull, 6843828301833718281ull}}, {{9544952449060871573ull, 14324553963466942256ull, 6950610459857646787ull, 8554785377292147851ull}}, {{5965595280663044733ull, 6647003217953144958ull, 2038288528197335290ull, 5346740860807592407ull}}, {{16680366137683581725ull, 17532126059296207005ull, 16382918715528832824ull, 6683426076009490508ull}}, {{7015399616822313444ull, 3468413500410707141ull, 2031904320701489415ull, 8354282595011863136ull}}, {{6690467769727639854ull, 9085287465397773819ull, 1269940200438430884ull, 5221426621882414460ull}}, {{3751398693732161914ull, 11356609331747217274ull, 1587425250548038605ull, 6526783277353018075ull}}, {{13912620404019978200ull, 360703609401857880ull, 15819339618467211969ull, 8158479096691272593ull}}, {{8695387752512486375ull, 11754654801944630935ull, 2969558233900925624ull, 5099049435432045371ull}}, {{6257548672213220065ull, 14693318502430788669ull, 17547005847658320742ull, 6373811794290056713ull}}, {{12433621858693912985ull, 9143276091183710028ull, 8098699254290737216ull, 7967264742862570892ull}}, {{16994385698538471424ull, 5714547556989818767ull, 14285059070786486568ull, 4979540464289106807ull}}, {{16631296104745701376ull, 7143184446237273459ull, 13244637820055720306ull, 6224425580361383509ull}}, {{16177434112504738816ull, 18152352594651367632ull, 2720739219787486670ull, 7780531975451729387ull}}, {{10110896320315461760ull, 6733534353229716866ull, 17841363076863036833ull, 4862832484657330866ull}}, {{3415248363539551392ull, 13028603959964533987ull, 13078331809224020233ull, 6078540605821663583ull}}, {{18104118509706602952ull, 2450696894673503771ull, 11736228743102637388ull, 7598175757277079479ull}}, {{9009231059352932893ull, 10755057596025715665ull, 14252671992080230223ull, 4748859848298174674ull}}, {{15873224842618554020ull, 8832135976604756677ull, 8592467953245511971ull, 5936074810372718343ull}}, {{6006472997991028813ull, 6428483952328557943ull, 6128898923129502060ull, 7420093512965897929ull}}, {{10671574651385474864ull, 13241174507060124522ull, 15359776873024408547ull, 4637558445603686205ull}}, {{4116096277377067772ull, 11939782115397767749ull, 5364663035998346972ull, 5796948057004607757ull}}, {{9756806365148722619ull, 14924727644247209686ull, 11317514813425321619ull, 7246185071255759696ull}}, {{2972635919581127466ull, 14044223536881624204ull, 14146893516781652024ull, 9057731339069699620ull}}, {{11081269486592980474ull, 8777639710551015127ull, 18065180484843308323ull, 5661082086918562262ull}}, {{9239900839813837689ull, 6360363619761381005ull, 13358103569199359596ull, 7076352608648202828ull}}, {{16161562068194685015ull, 7950454524701726256ull, 16697629461499199495ull, 8845440760810253535ull}}, {{10100976292621678135ull, 11886563105579660766ull, 17353547441078081540ull, 5528400475506408459ull}}, {{3402848328922321860ull, 14858203881974575958ull, 17080248282920214021ull, 6910500594383010574ull}}, {{13476932448007678133ull, 4737696797186056235ull, 12126938316795491719ull, 8638125742978763218ull}}, {{6117239770791104881ull, 9878589525882367003ull, 12191022466424570228ull, 5398828589361727011ull}}, {{3034863695061493197ull, 12348236907352958754ull, 10627092064603324881ull, 6748535736702158764ull}}, {{13016951655681642305ull, 1600238078909034730ull, 13283865080754156102ull, 8435669670877698455ull}}, {{12747280803228414345ull, 14835206854600310418ull, 15219944703112429419ull, 5272293544298561534ull}}, {{6710728967180742123ull, 13932322549823000119ull, 9801558842035760966ull, 6590366930373201918ull}}, {{3776725190548539749ull, 8192031150423974341ull, 3028576515689925400ull, 8237958662966502398ull}}, {{4666296253306531295ull, 5120019469014983963ull, 15727918377588367087ull, 5148724164354063998ull}}, {{1221184298205776215ull, 1788338317841342050ull, 10436525935130683051ull, 6435905205442579998ull}}, {{10749852409611996077ull, 16070480952583841274ull, 3822285382058578005ull, 8044881506803224998ull}}, {{11330343774434885452ull, 12349893604578594748ull, 16223986419068774965ull, 5028050941752015623ull}}, {{14162929718043606815ull, 1602308950441079723ull, 15668297005408580803ull, 6285063677190019529ull}}, {{13091976129127120615ull, 15837944243333513366ull, 5750313201478562291ull, 7856329596487524412ull}}, {{3570799062277062480ull, 7592872142869751902ull, 12817317787778877240ull, 4910205997804702757ull}}, {{13686870864701103908ull, 9491090178587189877ull, 2186589179441432838ull, 6137757497255878447ull}}, {{3273530525594216173ull, 2640490686379211539ull, 16568294529583954760ull, 7672196871569848058ull}}, {{18186857642992242773ull, 1650306678987007211ull, 14966870099417359629ull, 4795123044731155036ull}}, {{18121886035312915562ull, 6674569367161146918ull, 261843550562147920ull, 5993903805913943796ull}}, {{13428985507286368644ull, 8343211708951433648ull, 327304438202684900ull, 7492379757392429745ull}}, {{8393115942053980403ull, 14437879354949421838ull, 11733780319945147822ull, 4682737348370268590ull}}, {{1268022890712699695ull, 8823977156832001490ull, 5443853363076658970ull, 5853421685462835738ull}}, {{10808400650245650427ull, 1806599409185226054ull, 16028188740700599521ull, 7316777106828544672ull}}, {{4287128775952287225ull, 6869935279908920472ull, 1588491852166197785ull, 9145971383535680841ull}}, {{2679455484970179516ull, 15822924596011545055ull, 12522022453672343375ull, 5716232114709800525ull}}, {{17184377411494888107ull, 15166969726587043414ull, 1817470011808265507ull, 7145290143387250657ull}}, {{12257099727513834326ull, 14347026139806416364ull, 6883523533187719788ull, 8931612679234063321ull}}, {{16884059366550922262ull, 18190263374233786035ull, 15831417254310794627ull, 5582257924521289575ull}}, {{16493388189761264923ull, 18126143199364844640ull, 15177585549461105380ull, 6977822405651611969ull}}, {{2169991163492029538ull, 4210934925496504185ull, 5136923881544218014ull, 8722278007064514962ull}}, {{12885459523250988221ull, 16466892383717478827ull, 7822263444392524162ull, 5451423754415321851ull}}, {{11495138385636347372ull, 11360243442792072726ull, 5166143287063267299ull, 6814279693019152314ull}}, {{5145550945190658407ull, 9588618285062703004ull, 15681051145683859932ull, 8517849616273940392ull}}, {{12439341377598937313ull, 15216258465018965185ull, 9800656966052412457ull, 5323656010171212745ull}}, {{1714118666716507929ull, 5185265025991542770ull, 16862507225992903476ull, 6654570012714015931ull}}, {{11366020370250410719ull, 6481581282489428462ull, 16466448014063741441ull, 8318212515892519914ull}}, {{2492076712979118795ull, 15580203347624362549ull, 14903216027217226304ull, 5198882822432824946ull}}, {{7726781909651286398ull, 1028510110820901570ull, 9405647997166757073ull, 6498603528041031183ull}}, {{435105350209332190ull, 5897323656953514867ull, 7145373978031058437ull, 8123254410051288979ull}}, {{16412841908376690283ull, 5991670294809640743ull, 2160015727055717571ull, 5077034006282055612ull}}, {{15904366367043474949ull, 2877901850084663025ull, 2700019658819646964ull, 6346292507852569515ull}}, {{6045399903522179974ull, 3597377312605828782ull, 17210082628806722417ull, 7932865634815711893ull}}, {{17613432994983526196ull, 13777575866447112748ull, 13062144652217895462ull, 4958041021759819933ull}}, {{3570047170019856129ull, 7998597796204115128ull, 2492622759990205616ull, 6197551277199774917ull}}, {{4462558962524820161ull, 9998247245255143910ull, 7727464468415144924ull, 7746939096499718646ull}}, {{16624157406860176313ull, 15472276565139240751ull, 217979274332077673ull, 4841836935312324154ull}}, {{16168510740147832487ull, 5505287651141887227ull, 9495846129769872900ull, 6052296169140405192ull}}, {{15598952406757402705ull, 6881609563927359034ull, 11869807662212341125ull, 7565370211425506490ull}}, {{14361031272650764595ull, 6606848986668293348ull, 12030315807310101107ull, 4728356382140941556ull}}, {{17951289090813455743ull, 3646875214907978781ull, 15037894759137626384ull, 5910445477676176945ull}}, {{8604053308234655967ull, 4558594018634973477ull, 4962310393639869268ull, 7388056847095221182ull}}, {{7683376326860353932ull, 12072493298501634231ull, 16936502051307082004ull, 4617535529434513238ull}}, {{4992534390148054510ull, 15090616623127042789ull, 11947255527279076697ull, 5771919411793141548ull}}, {{10852354006112456042ull, 5028212723626639774ull, 14934069409098845872ull, 7214899264741426935ull}}, {{4342070470785794244ull, 6285265904533299718ull, 14055900742946169436ull, 9018624080926783669ull}}, {{16548852099523285115ull, 13151663227188088131ull, 11090780973555049849ull, 5636640050579239793ull}}, {{16074379105976718489ull, 2604520978702946452ull, 28418161661648600ull, 7045800063224049742ull}}, {{1646229808761346495ull, 3255651223378683066ull, 9258894738931836558ull, 8807250079030062177ull}}, {{5640579648903229464ull, 15869840069893840628ull, 17316024257900867608ull, 5504531299393788860ull}}, {{7050724561129036830ull, 1390556013657749169ull, 3198286248666532895ull, 6880664124242236076ull}}, {{13425091719838683941ull, 15573253072354350173ull, 3997857810833166118ull, 8600830155302795095ull}}, {{10696525334112871415ull, 5121597151794080954ull, 9416190159411810680ull, 5375518847064246934ull}}, {{4147284630786313461ull, 6401996439742601193ull, 2546865662409987542ull, 6719398558830308668ull}}, {{9795791806910279730ull, 17225867586533027299ull, 3183582078012484427ull, 8399248198537885835ull}}, {{3816526870105230879ull, 8460324232369448110ull, 18130639863253660431ull, 5249530124086178646ull}}, {{13994030624486314407ull, 5963719272034422233ull, 13439927792212299731ull, 6561912655107723308ull}}, {{3657480225325729297ull, 2842963071615639888ull, 16799909740265374664ull, 8202390818884654135ull}}, {{2285925140828580811ull, 1776851919759774930ull, 17417472615306941021ull, 5126494261802908834ull}}, {{12080778462890501821ull, 6832750918127106566ull, 12548468732278900468ull, 6408117827253636043ull}}, {{5877601041758351469ull, 8540938647658883208ull, 11073899896921237681ull, 8010147284067045054ull}}, {{3673500651098969668ull, 16867301700855271765ull, 2309501417148385646ull, 5006342052541903159ull}}, {{9203561832301099989ull, 11860755089214313898ull, 16721934826717645770ull, 6257927565677378948ull}}, {{2281080253521599178ull, 5602571824663116565ull, 2455674459687505597ull, 7822409457096723686ull}}, {{3731518167664693438ull, 5807450399628141805ull, 15369854592586854710ull, 4889005910685452303ull}}, {{9276083728008254702ull, 16482685036389953064ull, 14600632222306180483ull, 6111257388356815379ull}}, {{11595104660010318377ull, 15991670277060053426ull, 13639104259455337700ull, 7639071735446019224ull}}, {{11858626430933836890ull, 771421886307757583ull, 8524440162159586063ull, 4774419834653762015ull}}, {{10211597020239908208ull, 14799335413166860691ull, 6043864184272094674ull, 5968024793317202519ull}}, {{8152810256872497356ull, 9275797229603800056ull, 2943144211912730439ull, 7460030991646503149ull}}, {{5095506410545310848ull, 12714902296143456891ull, 4145308141659150476ull, 4662519369779064468ull}}, {{1757696994754250656ull, 15893627870179321114ull, 5181635177073938095ull, 5828149212223830585ull}}, {{11420493280297589128ull, 15255348819296763488ull, 11088729989769810523ull, 7285186515279788231ull}}, {{14275616600371986409ull, 14457500005693566456ull, 9249226468784875250ull, 9106483144099735289ull}}, {{8922260375232491506ull, 13647623521985866939ull, 17309981589059016791ull, 5691551965062334555ull}}, {{6541139450613226478ull, 12447843384054945770ull, 17025790967896383085ull, 7114439956327918194ull}}, {{17399796350121308906ull, 1724746174786518500ull, 12058866673015703049ull, 8893049945409897743ull}}, {{1651500681971042258ull, 12607181405310043823ull, 14454320698275896261ull, 5558156215881186089ull}}, {{15899433907745966535ull, 1923918701355391066ull, 4232842817562706615ull, 6947695269851482612ull}}, {{10650920347827682360ull, 16239956431976402545ull, 5291053521953383268ull, 8684619087314353265ull}}, {{18186040263460771235ull, 926600733130475782ull, 14836123497289334303ull, 5427886929571470790ull}}, {{13509178292471188236ull, 14993308971695258440ull, 9321782334756892070ull, 6784858661964338488ull}}, {{16886472865588985295ull, 9518264177764297242ull, 11652227918446115088ull, 8481073327455423110ull}}, {{15165731559420503714ull, 5948915111102685776ull, 2670956430601434026ull, 5300670829659639444ull}}, {{510420375566078026ull, 16659515925733133029ull, 3338695538251792532ull, 6625838537074549305ull}}, {{5249711487884985436ull, 2377650833456864670ull, 8785055441242128570ull, 8282298171343186631ull}}, {{17116127735210279610ull, 6097717789337928322ull, 12408188678417412212ull, 5176436357089491644ull}}, {{12171787632158073704ull, 7622147236672410403ull, 15510235848021765265ull, 6470545446361864555ull}}, {{10603048521770204226ull, 14139370064267900908ull, 14776108791599818677ull, 8088181807952330694ull}}, {{15850277362961153449ull, 11142949299381132019ull, 4623381976322498769ull, 5055113629970206684ull}}, {{15201160685274053908ull, 93628568944251312ull, 5779227470403123462ull, 6318892037462758355ull}}, {{554706782883015769ull, 9340407748035089949ull, 2612348319576516423ull, 7898615046828447944ull}}, {{2652534748515578808ull, 12755283870163013074ull, 1632717699735322764ull, 4936634404267779965ull}}, {{12539040472499249317ull, 15944104837703766342ull, 6652583143096541359ull, 6170793005334724956ull}}, {{6450428553769285838ull, 15318445028702320024ull, 8315728928870676699ull, 7713491256668406195ull}}, {{4031517846105803649ull, 7268185133725256063ull, 2891487571330478985ull, 4820932035417753872ull}}, {{427711289204866657ull, 13696917435583957983ull, 3614359464163098731ull, 6026165044272192340ull}}, {{14369697166788247034ull, 12509460776052559574ull, 4517949330203873414ull, 7532706305340240425ull}}, {{4369374710815266492ull, 3206726966605461830ull, 14352933377445890644ull, 4707941440837650265ull}}, {{14685090425373858923ull, 4008408708256827287ull, 4106108666525199593ull, 5884926801047062832ull}}, {{13744677013289935750ull, 9622196903748422013ull, 5132635833156499491ull, 7356158501308828540ull}}, {{3345788211330255975ull, 7416060111258139613ull, 6415794791445624364ull, 9195198126636035675ull}}, {{4396960641295103937ull, 13858409606391113066ull, 1704028735439821275ull, 5746998829147522297ull}}, {{14719572838473655729ull, 12711325989561503428ull, 6741721937727164498ull, 7183748536434402871ull}}, {{18399466048092069661ull, 6665785450097103477ull, 3815466403731567719ull, 8979685670543003589ull}}, {{13805509289271237490ull, 11083644933951771529ull, 4690509511545923776ull, 5612303544089377243ull}}, {{3421828556306883151ull, 13854556167439714412ull, 1251450871005016816ull, 7015379430111721554ull}}, {{4277285695383603938ull, 17318195209299643015ull, 10787685625611046828ull, 8769224287639651942ull}}, {{9590832587255834317ull, 1600499968957501076ull, 2130617497579516364ull, 5480765179774782464ull}}, {{11988540734069792897ull, 2000624961196876345ull, 2663271871974395455ull, 6850956474718478080ull}}, {{1150617862305077409ull, 16335839256778259144ull, 3329089839967994318ull, 8563695593398097600ull}}, {{719136163940673381ull, 5598213517059024061ull, 2080681149979996449ull, 5352309745873811000ull}}, {{5510606223353229630ull, 11609452914751167980ull, 2600851437474995561ull, 6690387182342263750ull}}, {{6888257779191537037ull, 676758088156796263ull, 12474436333698520260ull, 8362983977927829687ull}}, {{11222690139635792504ull, 9646345841952773472ull, 14714051736202657018ull, 5226864986204893554ull}}, {{14028362674544740630ull, 2834560265586191032ull, 9169192633398545465ull, 6533581232756116943ull}}, {{17535453343180925788ull, 8154886350410126694ull, 6849804773320793927ull, 8166976540945146179ull}}, {{6347972321060690714ull, 12014332996647411040ull, 1975284974111802252ull, 5104360338090716362ull}}, {{7934965401325863392ull, 15017916245809263800ull, 11692478254494528623ull, 6380450422613395452ull}}, {{9918706751657329240ull, 14160709288834191846ull, 14615597818118160779ull, 7975563028266744315ull}}, {{1587505701358442871ull, 6544600296307675952ull, 6828905627110156535ull, 4984726892666715197ull}}, {{1984382126698053589ull, 3569064351957207036ull, 13147818052315083573ull, 6230908615833393996ull}}, {{2480477658372566986ull, 9073016458373896699ull, 16434772565393854466ull, 7788635769791742495ull}}, {{17691199600978712030ull, 10282321304911073340ull, 17189261881012240897ull, 4867897356119839059ull}}, {{3667255427513838422ull, 17464587649566229580ull, 16874891332837913217ull, 6084871695149798824ull}}, {{4584069284392298027ull, 7995676506675623263ull, 2646870092337839906ull, 7606089618937248531ull}}, {{9782572330386268123ull, 9608983835099652443ull, 17795194872207007605ull, 4753806011835780331ull}}, {{7616529394555447250ull, 16622915812301953458ull, 17632307571831371602ull, 5942257514794725414ull}}, {{297289706339533254ull, 11555272728522666015ull, 12817012427934438695ull, 7427821893493406768ull}}, {{7103335094103290140ull, 14139574482967748115ull, 8010632767459024184ull, 4642388683433379230ull}}, {{4267482849201724771ull, 17674468103709685144ull, 789918922469004422ull, 5802985854291724038ull}}, {{5334353561502155963ull, 12869713092782330622ull, 10210770689941031336ull, 7253732317864655047ull}}, {{15891313988732470762ull, 16087141365977913277ull, 8151777343998901266ull, 9067165397330818809ull}}, {{12237914252171488178ull, 14666149372163583702ull, 16624075886067783051ull, 5666978373331761755ull}}, {{6074020778359584415ull, 13721000696777091724ull, 16168408839157340910ull, 7083722966664702194ull}}, {{7592525972949480518ull, 7927878834116588847ull, 10987139012091900330ull, 8854653708330877743ull}}, {{11662857760734507180ull, 9566610289750255933ull, 13784490910198519562ull, 5534158567706798589ull}}, {{743514145635970263ull, 2734890825333044109ull, 3395555582465985741ull, 6917698209633498237ull}}, {{5541078700472350733ull, 8030299550093693040ull, 8856130496509870080ull, 8647122762041872796ull}}, {{3463174187795219208ull, 5018937218808558150ull, 14758453597173444608ull, 5404451726276170497ull}}, {{13552339771598799818ull, 6273671523510697687ull, 4613008941184642048ull, 6755564657845213122ull}}, {{12328738696071111869ull, 7842089404388372109ull, 14989633213335578368ull, 8444455822306516402ull}}, {{10011304694258138870ull, 4901305877742732568ull, 13980206776762124384ull, 5277784888941572751ull}}, {{12514130867822673587ull, 6126632347178415710ull, 12863572452525267576ull, 6597231111176965939ull}}, {{6419291547923566176ull, 7658290433973019638ull, 11467779547229196566ull, 8246538888971207424ull}}, {{17847115272734392572ull, 174745502805749369ull, 7167362217018247854ull, 5154086805607004640ull}}, {{8473836035635827003ull, 9441803915361962520ull, 8959202771272809817ull, 6442608507008755800ull}}, {{10592295044544783754ull, 16413940912629841054ull, 11199003464091012271ull, 8053260633760944750ull}}, {{2008498384413101942ull, 17176242098034732515ull, 2387691146629494765ull, 5033287896100590469ull}}, {{16345681035798541140ull, 7635244567261251931ull, 7596299951714256361ull, 6291609870125738086ull}}, {{15820415276320788521ull, 14155741727503952818ull, 272002902788044643ull, 7864512337657172608ull}}, {{14499445566127880730ull, 6541495570476276559ull, 170001814242527902ull, 4915320211035732880ull}}, {{13512620939232463008ull, 17400241499950121507ull, 212502267803159877ull, 6144150263794666100ull}}, {{12279090155613190856ull, 7915243819655488172ull, 265627834753949847ull, 7680187829743332625ull}}, {{16897803384113020093ull, 11864556414925761963ull, 11695232442789688414ull, 4800117393589582890ull}}, {{16510568211713887212ull, 5607323481802426646ull, 5395668516632334710ull, 6000146741986978613ull}}, {{11414838227787583207ull, 16232526389107809116ull, 11356271664217806291ull, 7500183427483723266ull}}, {{16357645929222015313ull, 7839485983978686745ull, 11709355808563516836ull, 4687614642177327041ull}}, {{6611999356245355429ull, 9799357479973358432ull, 801636705422232333ull, 5859518302721658802ull}}, {{8264999195306694286ull, 16860882868394085944ull, 10225417918632566224ull, 7324397878402073502ull}}, {{10331248994133367857ull, 2629359511783055814ull, 3558400361435931973ull, 9155497348002591878ull}}, {{1845344602905967007ull, 3949192704078103836ull, 16059058281179621195ull, 5722185842501619923ull}}, {{2306680753632458758ull, 324804861670241891ull, 15462136833047138590ull, 7152732303127024904ull}}, {{16718408997322737160ull, 9629378113942578171ull, 880926967599371621ull, 8940915378908781131ull}}, {{8143162614113016773ull, 8324204330427805309ull, 16691480419245464927ull, 5588072111817988206ull}}, {{14790639286068658870ull, 5793569394607368732ull, 11640978487202055351ull, 6985090139772485258ull}}, {{41555033876271972ull, 2630275724831823012ull, 5327851072147793381ull, 8731362674715606573ull}}, {{9249343933027445790ull, 3949765337233583334ull, 5635749929306064815ull, 5457101671697254108ull}}, {{2338307879429531430ull, 325520653114591264ull, 7044687411632581019ull, 6821377089621567635ull}}, {{2922884849286914287ull, 14241958871675402792ull, 4194173246113338369ull, 8526721362026959544ull}}, {{1826803030804321430ull, 1983695267156044889ull, 2621358278820836481ull, 5329200851266849715ull}}, {{6895189806932789691ull, 7091305102372444015ull, 17111755903808209313ull, 6661501064083562143ull}}, {{4007301240238599210ull, 13475817396392942923ull, 16778008861332873737ull, 8326876330104452679ull}}, {{198720265935430554ull, 1504856845104507471ull, 17403784565974127942ull, 5204297706315282924ull}}, {{14083458387701451905ull, 11104443093235410146ull, 3307986633758108311ull, 6505372132894103656ull}}, {{8380950947772039073ull, 9268867848116874779ull, 4134983292197635389ull, 8131715166117629570ull}}, {{2932251333143830469ull, 8098885414286740689ull, 7196050576050910022ull, 5082321978823518481ull}}, {{8277000184857175990ull, 900234731003650053ull, 13606749238491025432ull, 6352902473529398101ull}}, {{14957936249498857891ull, 1125293413754562566ull, 3173378492831618078ull, 7941128091911747627ull}}, {{4737024137509398278ull, 14538366438878765316ull, 18124262622515618962ull, 4963205057444842266ull}}, {{5921280171886747847ull, 8949586011743680837ull, 13431956241289747895ull, 6204006321806052833ull}}, {{12013286233285822713ull, 6575296496252213142ull, 2954887246330021157ull, 7755007902257566042ull}}, {{2896617877376251292ull, 6415403319371327166ull, 6458490547383651127ull, 4846879938910978776ull}}, {{12844144383575089923ull, 3407568130786771053ull, 8073113184229563909ull, 6058599923638723470ull}}, {{2220122424186698691ull, 8871146181910851721ull, 868019443432179078ull, 7573249904548404338ull}}, {{12916791561185156442ull, 932780345266894421ull, 5154198170572499828ull, 4733281190342752711ull}}, {{2310931396199281841ull, 1165975431583618027ull, 1831061694788236881ull, 5916601487928440889ull}}, {{16723722300531266013ull, 6069155307906910437ull, 6900513136912684005ull, 7395751859910551111ull}}, {{12758169447045735210ull, 6099065076655512975ull, 11230349738211509359ull, 4622344912444094444ull}}, {{11336025790379781109ull, 3012145327392003315ull, 14037937172764386699ull, 5777931140555118055ull}}, {{9558346219547338482ull, 17600239714522167856ull, 12935735447528095469ull, 7222413925693897569ull}}, {{11947932774434173102ull, 8165241587870546108ull, 2334611254127955625ull, 9028017407117371962ull}}, {{16690830020876133997ull, 16632491038487561077ull, 6070818052257360169ull, 5642510879448357476ull}}, {{7028479470813003784ull, 6955555742827287635ull, 7588522565321700212ull, 7053138599310446845ull}}, {{4173913320088866826ull, 8694444678534109544ull, 14097339225079513169ull, 8816423249138058556ull}}, {{2608695825055541766ull, 16963242970152288225ull, 18034209052529471538ull, 5510264530711286597ull}}, {{7872555799746815112ull, 11980681675835584473ull, 8707703260379675711ull, 6887830663389108247ull}}, {{14452380768110906794ull, 10364166076367092687ull, 6272943057047206735ull, 8609788329236385309ull}}, {{15950267007710398602ull, 13395132825370514785ull, 6226432419868198161ull, 5381117705772740818ull}}, {{6102775704355834541ull, 2908857976430979770ull, 17006412561690023510ull, 6726397132215926022ull}}, {{16851841667299568984ull, 12859444507393500520ull, 12034643665257753579ull, 8407996415269907528ull}}, {{10532401042062230615ull, 5731309807907243873ull, 7521652290786095987ull, 5254997759543692205ull}}, {{17777187321005176173ull, 2552451241456666937ull, 14013751381910007888ull, 6568747199429615256ull}}, {{8386426095974306504ull, 3190564051820833672ull, 17517189227387509860ull, 8210933999287019070ull}}, {{5241516309983941565ull, 11217474569242796853ull, 6336557248689805758ull, 5131833749554386919ull}}, {{11163581405907314860ull, 4798471174698720258ull, 3309010542434869294ull, 6414792186942983649ull}}, {{4731104720529367767ull, 15221461005228176131ull, 8747949196470974521ull, 8018490233678729561ull}}, {{651097441117160903ull, 2595884100626528226ull, 16996683293862828836ull, 5011556396049205975ull}}, {{10037243838251226936ull, 3244855125783160282ull, 16634168098901148141ull, 6264445495061507469ull}}, {{3323182760959257862ull, 8667754925656338257ull, 6957652068344271464ull, 7830556868826884337ull}}, {{13606204271668005924ull, 5417346828535211410ull, 15877747588783639425ull, 4894098043016802710ull}}, {{7784383302730231597ull, 11383369554096402167ull, 10623812449124773473ull, 6117622553771003388ull}}, {{5118793109985401592ull, 394153887338338997ull, 13279765561405966842ull, 7647028192213754235ull}}, {{5505088702954569947ull, 4858032198013849777ull, 5994010466665035324ull, 4779392620133596397ull}}, {{11493046897120600338ull, 6072540247517312221ull, 12104199101758682059ull, 5974240775166995496ull}}, {{531250566118586710ull, 2978989290969252373ull, 15130248877198352574ull, 7467800968958744370ull}}, {{2637874613037810646ull, 15696926362137946445ull, 14068091566676358262ull, 4667375605599215231ull}}, {{7909029284724651211ull, 10397785915817657248ull, 12973428439918059924ull, 5834219506999019039ull}}, {{9886286605905814014ull, 12997232394772071560ull, 11605099531470187001ull, 7292774383748773799ull}}, {{12357858257382267517ull, 2411482438182925738ull, 9894688395910345848ull, 9115967979685967249ull}}, {{12335347429291305103ull, 1507176523864328586ull, 17713395293512435915ull, 5697479987303729530ull}}, {{6195812249759355570ull, 15719028710112574445ull, 12918372080035769085ull, 7121849984129661913ull}}, {{12356451330626582366ull, 5813727832358554344ull, 2312907044762547645ull, 8902312480162077392ull}}, {{7722782081641613979ull, 5939422904437790417ull, 1445566902976592278ull, 5563945300101298370ull}}, {{14265163620479405378ull, 16647650667402013829ull, 11030330665575516155ull, 6954931625126622962ull}}, {{3996396470317093010ull, 16197877315825129383ull, 4564541295114619386ull, 8693664531408278703ull}}, {{9415276821589264988ull, 14735359340818093768ull, 9770367337087718972ull, 5433540332130174189ull}}, {{11769096026986581234ull, 18419199176022617210ull, 16824645189787036619ull, 6791925415162717736ull}}, {{5487997996878450735ull, 18412312951600883609ull, 2584062413524244158ull, 8489906768953397171ull}}, {{14959213794117501469ull, 6896009576323164351ull, 17755940072948510263ull, 5306191730595873231ull}}, {{14087331224219488933ull, 4008325951976567535ull, 17583239072758249925ull, 6632739663244841539ull}}, {{12997478011846973262ull, 9622093458398097323ull, 17367362822520424502ull, 8290924579056051924ull}}, {{5817580748190664337ull, 1402122393071422923ull, 1631229727220489506ull, 5181827861910032453ull}}, {{2660289916810942517ull, 10976025028194054462ull, 6650723177452999786ull, 6477284827387540566ull}}, {{12548734432868453954ull, 4496659248387792269ull, 17536776008671025541ull, 8096606034234425707ull}}, {{10148802029756477673ull, 5116255039456064120ull, 8654641996205697011ull, 5060378771396516067ull}}, {{12686002537195597092ull, 1783632780892692246ull, 6206616476829733360ull, 6325473464245645084ull}}, {{6634131134639720556ull, 2229540976115865308ull, 7758270596037166700ull, 7906841830307056355ull}}, {{13369703996004601156ull, 10616835146927191625ull, 2543076113309535235ull, 4941776143941910222ull}}, {{2877071939723587733ull, 8659357915231601628ull, 12402217178491694852ull, 6177220179927387777ull}}, {{3596339924654484666ull, 10824197394039502035ull, 1667713417832454853ull, 7721525224909234722ull}}, {{18388613517404910580ull, 9070966380488382723ull, 5654006904572672187ull, 4825953265568271701ull}}, {{18374080878328750321ull, 6727021957183090500ull, 11679194649143228138ull, 6032441581960339626ull}}, {{4520857024201386286ull, 17632149483333638934ull, 5375621274574259364ull, 7540551977450424533ull}}, {{16660593695408030141ull, 1796721390228748525ull, 5665606305822606055ull, 4712844985906515333ull}}, {{6990684063977873964ull, 16080959793068099369ull, 11693693900705645472ull, 5891056232383144166ull}}, {{13350041098399730358ull, 1654455667625572595ull, 5393745339027281033ull, 7363820290478930208ull}}, {{12075865354572275044ull, 6679755602959353648ull, 6742181673784101291ull, 9204775363098662760ull}}, {{7547415846607671903ull, 1869004242635902078ull, 4213863546115063307ull, 5752984601936664225ull}}, {{210897771404814070ull, 16171313358577041310ull, 9879015451071217037ull, 7191230752420830281ull}}, {{9486994251110793396ull, 6379083642939137925ull, 16960455332266409201ull, 8989038440526037851ull}}, {{8235214416157939824ull, 15516142322905430963ull, 8294441573452811798ull, 5618149025328773657ull}}, {{5682332001770036876ull, 10171805866777012896ull, 14979737985243402652ull, 7022686281660967071ull}}, {{7102915002212546095ull, 12714757333471266120ull, 14112986463126865411ull, 8778357852076208839ull}}, {{4439321876382841310ull, 5640880324205847373ull, 15738145567095372738ull, 5486473657547630524ull}}, {{10160838363905939541ull, 16274472442112085024ull, 1225937885159664306ull, 6858092071934538156ull}}, {{12701047954882424426ull, 11119718515785330472ull, 1532422356449580383ull, 8572615089918172695ull}}, {{7938154971801515267ull, 13867353100006913401ull, 7875293000422069595ull, 5357884431198857934ull}}, {{14534379733179281987ull, 12722505356581253847ull, 620744213672811186ull, 6697355538998572418ull}}, {{13556288648046714580ull, 6679759658871791501ull, 9999302303945789791ull, 8371694423748215522ull}}, {{10778523414242890565ull, 11092378814435951544ull, 10861249958393506523ull, 5232309014842634701ull}}, {{13473154267803613206ull, 9253787499617551526ull, 18188248466419271058ull, 6540386268553293376ull}}, {{7618070797899740699ull, 2343862337667163600ull, 4288566509314537207ull, 8175482835691616721ull}}, {{4761294248687337937ull, 8382442988683059106ull, 14209569114390055514ull, 5109676772307260450ull}}, {{15174989847713948229ull, 1254681698999048074ull, 8538589356132793585ull, 6387095965384075563ull}}, {{9745365272787659478ull, 6180038142176197997ull, 6061550676738604077ull, 7983869956730094454ull}}, {{8396696304705981126ull, 6168366848073817700ull, 17623527228243791260ull, 4989918722956309033ull}}, {{10495870380882476408ull, 7710458560092272125ull, 8194350980022575363ull, 6237398403695386292ull}}, {{17731523994530483413ull, 5026387181687952252ull, 10242938725028219204ull, 7796748004619232865ull}}, {{1858830459726776325ull, 12364864025409745966ull, 17931051749211106762ull, 4872967502887020540ull}}, {{11546910111513246215ull, 6232707994907406649ull, 3967070612804331837ull, 6091209378608775676ull}}, {{598579584109394056ull, 12402571012061646216ull, 4958838266005414796ull, 7614011723260969595ull}}, {{374112240068371285ull, 16974978919393304693ull, 793430907039690295ull, 4758757327038105997ull}}, {{5079326318512852011ull, 16607037630814242962ull, 5603474652227000773ull, 5948446658797632496ull}}, {{15572529934995840821ull, 6923738983235639990ull, 7004343315283750967ull, 7435558323497040620ull}}, {{5121145190945012609ull, 11244865892163356850ull, 13601086608907120162ull, 4647223952185650387ull}}, {{15624803525536041570ull, 4832710328349420254ull, 12389672242706512299ull, 5809029940232062984ull}}, {{10307632370065276154ull, 1429201892009387414ull, 15487090303383140374ull, 7261287425290078730ull}}, {{3661168425726819384ull, 11009874401866510076ull, 10135490842374149659ull, 9076609281612598413ull}}, {{11511602302934037923ull, 4575328491952874845ull, 8640524785697537489ull, 5672880801007874008ull}}, {{554444823385383692ull, 10330846633368481461ull, 10800655982121921861ull, 7091101001259842510ull}}, {{5304742047659117519ull, 17525244310137989730ull, 4277447940797626518ull, 8863876251574803138ull}}, {{7927149798214336353ull, 6341591675408855677ull, 7285090981425904478ull, 5539922657234251961ull}}, {{14520623266195308346ull, 17150361631115845404ull, 13718049745209768501ull, 6924903321542814951ull}}, {{18150779082744135432ull, 7602893983612643043ull, 12535876163084822723ull, 8656129151928518689ull}}, {{9038393917501390693ull, 2445965730544207950ull, 917393574286932346ull, 5410080719955324181ull}}, {{2074620360021962558ull, 12280829200035035746ull, 5758427986286053336ull, 6762600899944155226ull}}, {{11816647486882229006ull, 15351036500043794682ull, 16421407019712342478ull, 8453251124930194032ull}}, {{11997090697728781033ull, 4982711794099983772ull, 10263379387320214049ull, 5283281953081371270ull}}, {{14996363372160976291ull, 10840075761052367619ull, 3605852197295491753ull, 6604102441351714088ull}}, {{14133768196773832460ull, 18161780719742847428ull, 4507315246619364691ull, 8255128051689642610ull}}, {{18056977159838421095ull, 9045269940625585690ull, 7428758047564490836ull, 5159455032306026631ull}}, {{13347849412943250561ull, 11306587425781982113ull, 4674261541028225641ull, 6449318790382533289ull}}, {{2849753710896899489ull, 298176226945313930ull, 10454512944712669956ull, 8061648487978166611ull}}, {{6392782087737950085ull, 9409732178695597014ull, 4228227581231724770ull, 5038530304986354132ull}}, {{17214349646527213414ull, 2538793186514720459ull, 5285284476539655963ull, 6298162881232942665ull}}, {{16906251039731628864ull, 17008549538425564286ull, 11218291614101957857ull, 7872703601541178331ull}}, {{5954720881404880136ull, 3712814433874895823ull, 4705589249600029709ull, 4920439750963236457ull}}, {{2831715083328712266ull, 9252704060771007683ull, 10493672580427425040ull, 6150549688704045571ull}}, {{17374701909443054044ull, 11565880075963759603ull, 8505404707106893396ull, 7688187110880056964ull}}, {{8553345684188214826ull, 16452047084332125560ull, 14539249978796584180ull, 4805116944300035602ull}}, {{10691682105235268532ull, 2118314781705605334ull, 8950690436640954418ull, 6006396180375044503ull}}, {{4141230594689309857ull, 11871265513986782476ull, 6576677027373805118ull, 7507995225468805629ull}}, {{11811641158535594469ull, 2807854927814351143ull, 6416266151322322151ull, 4692497015918003518ull}}, {{10152865429742105182ull, 17344876715050102641ull, 17243704726007678496ull, 5865621269897504397ull}}, {{17302767805605019381ull, 3234351820103076685ull, 7719572852227434409ull, 7332026587371880497ull}}, {{7793401701724110514ull, 8654625793556233761ull, 14261152083711680915ull, 9165033234214850621ull}}, {{16400091109646038832ull, 3103298111758952148ull, 11219063061533494524ull, 5728145771384281638ull}}, {{2053369813347996923ull, 3879122639698690186ull, 4800456790062092347ull, 7160182214230352048ull}}, {{11790084303539771962ull, 237217281195974828ull, 6000570987577615434ull, 8950227767787940060ull}}, {{16592174726567133285ull, 4759946819174872171ull, 12973728904090785454ull, 5593892354867462537ull}}, {{16128532389781528702ull, 15173305560823366022ull, 2382103074831318105ull, 6992365443584328172ull}}, {{10937293450372135069ull, 5131573895747043816ull, 2977628843539147632ull, 8740456804480410215ull}}, {{6835808406482584418ull, 3207233684841902385ull, 8778547054853049126ull, 5462785502800256384ull}}, {{13156446526530618427ull, 13232414142907153789ull, 10973183818566311407ull, 6828481878500320480ull}}, {{2610500102881109321ull, 11928831660206554333ull, 13716479773207889259ull, 8535602348125400600ull}}, {{3937405573514387278ull, 5149676778415402506ull, 8572799858254930787ull, 5334751467578375375ull}}, {{14145129003747759905ull, 1825409954591865228ull, 6104313804391275580ull, 6668439334472969219ull}}, {{17681411254684699881ull, 2281762443239831535ull, 3018706237061706571ull, 8335549168091211524ull}}, {{17968411061819019282ull, 17567002591520752373ull, 11110063435018342414ull, 5209718230057007202ull}}, {{8625455771991610390ull, 12735381202546164659ull, 4664207256918152210ull, 6512147787571259003ull}}, {{6170133696562125084ull, 6695854466327930016ull, 1218573052720302359ull, 8140184734464073754ull}}, {{3856333560351328178ull, 11102438069096038116ull, 5373294176377576878ull, 5087615459040046096ull}}, {{4820416950439160222ull, 4654675549515271837ull, 6716617720471971098ull, 6359519323800057620ull}}, {{10637207206476338181ull, 15041716473748865604ull, 8395772150589963872ull, 7949399154750072025ull}}, {{15871626540902487172ull, 9401072796093041002ull, 16776572640187197180ull, 4968374471718795015ull}}, {{10616161139273333156ull, 11751340995116301253ull, 16359029781806608571ull, 6210468089648493769ull}}, {{17881887442519054349ull, 10077490225467988662ull, 6613729171976097002ull, 7763085112060617212ull}}, {{6564493633147021064ull, 10910117409344880818ull, 13356952769339836434ull, 4851928195037885757ull}}, {{17428989078288552138ull, 4414274724826325214ull, 2861132906392631831ull, 6064910243797357197ull}}, {{12562864311005914365ull, 906157387605518614ull, 8188102151418177693ull, 7581137804746696496ull}}, {{3240104175951308574ull, 2872191376467143086ull, 5117563844636361058ull, 4738211127966685310ull}}, {{13273502256793911526ull, 12813611257438704665ull, 15620326842650227130ull, 5922763909958356637ull}}, {{2756819765710225695ull, 6793642034943605024ull, 5690350498030620201ull, 7403454887447945797ull}}, {{1723012353568891060ull, 15775241317908222900ull, 5862312070482831577ull, 4627159304654966123ull}}, {{2153765441961113824ull, 5883993592103114913ull, 2716204069676151568ull, 5783949130818707654ull}}, {{7303892820878780184ull, 7354991990128893641ull, 12618627123949965268ull, 7229936413523384567ull}}, {{13741552044525863134ull, 9193739987661117051ull, 11161597886510068681ull, 9037420516904230709ull}}, {{6282627018614970507ull, 17275302538356667917ull, 9281841688282486877ull, 5648387823065144193ull}}, {{12464969791696101038ull, 7759070117663671184ull, 16213988128780496501ull, 7060484778831430241ull}}, {{15581212239620126297ull, 14310523665506976884ull, 6432427105693456914ull, 8825605973539287802ull}}, {{514885612907803128ull, 13555763309369248457ull, 8631952959485798475ull, 5516003733462054876ull}}, {{5255293034562141814ull, 12333018118284172667ull, 10789941199357248094ull, 6895004666827568595ull}}, {{1957430274775289363ull, 6192900611000440026ull, 8875740480769172214ull, 8618755833534460744ull}}, {{5835079940161943756ull, 17705620937157438728ull, 5547337800480732633ull, 5386722395959037965ull}}, {{7293849925202429695ull, 8296968116164634698ull, 11545858269028303696ull, 6733402994948797456ull}}, {{18340684443357812927ull, 10371210145205793372ull, 14432322836285379620ull, 8416753743685996820ull}}, {{2239555740243857271ull, 15705378377608396666ull, 18243573809533138070ull, 5260471089803748012ull}}, {{12022816712159597397ull, 10408350935155720024ull, 4357723188206870972ull, 6575588862254685016ull}}, {{15028520890199496746ull, 13010438668944650030ull, 5447153985258588715ull, 8219486077818356270ull}}, {{4781139537947297562ull, 5825681158876712317ull, 17239529296068781659ull, 5137178798636472668ull}}, {{10588110440861509857ull, 2670415430168502492ull, 3102667546376425458ull, 6421473498295590836ull}}, {{13235138051076887321ull, 12561391324565403923ull, 3878334432970531822ull, 8026841872869488545ull}}, {{5966118272709360624ull, 3239183559425989548ull, 13953174066675052149ull, 5016776170543430340ull}}, {{7457647840886700780ull, 8660665467709874839ull, 17441467583343815186ull, 6270970213179287925ull}}, {{4710373782680988071ull, 1602459797782567741ull, 7966776423897605271ull, 7838712766474109907ull}}, {{5249826623389311496ull, 7919066401255186694ull, 2673392255722309342ull, 4899195479046318692ull}}, {{15785655316091415178ull, 675460964714207559ull, 3341740319652886678ull, 6123994348807898365ull}}, {{15120383126686881069ull, 10067698242747535257ull, 8788861417993496251ull, 7654992936009872956ull}}, {{2532710426538218812ull, 3986468392503515584ull, 14716410423100710965ull, 4784370585006170597ull}}, {{3165888033172773515ull, 9594771509056782384ull, 4560454973593724994ull, 5980463231257713247ull}}, {{3957360041465966894ull, 2770092349466202172ull, 1088882698564768339ull, 7475579039072141559ull}}, {{11696722062771005117ull, 17872208782912234021ull, 7598080714244062067ull, 4672236899420088474ull}}, {{785844523181592684ull, 17728574960212904623ull, 274228855950301776ull, 5840296124275110593ull}}, {{14817363709259154567ull, 3713974626556579162ull, 4954472088365265125ull, 7300370155343888241ull}}, {{9298332599719167400ull, 9254154301623111857ull, 10804776128883969310ull, 9125462694179860301ull}}, {{17340672920892949385ull, 1172160420087057006ull, 9058828089766174771ull, 5703414183862412688ull}}, {{12452469114261410923ull, 15300258580390984970ull, 11323535112207718463ull, 7129267729828015860ull}}, {{6342214355971987846ull, 14513637207061343309ull, 14154418890259648079ull, 8911584662285019825ull}}, {{6269726981696186356ull, 15988552282054421424ull, 1928982778771198193ull, 5569740413928137391ull}}, {{7837158727120232945ull, 6150632297285863068ull, 16246286528746161454ull, 6962175517410171738ull}}, {{9796448408900291181ull, 16911662408462104643ull, 11084486124077926009ull, 8702719396762714673ull}}, {{3816937246348988036ull, 3652259977647733546ull, 10274799907621900ull, 5439199622976696671ull}}, {{13994543594791010853ull, 4565324972059666932ull, 13847901555166691087ull, 6798999528720870838ull}}, {{17493179493488763566ull, 1094970196647195761ull, 8086504907103588051ull, 8498749410901088548ull}}, {{4015708155789395373ull, 16825257437400355015ull, 14277437603794518339ull, 5311718381813180342ull}}, {{407949176309356312ull, 16419885778323055865ull, 8623424967888372116ull, 6639647977266475428ull}}, {{5121622488814083294ull, 2078113149194268215ull, 10779281209860465146ull, 8299559971583094285ull}}, {{10118543083149883915ull, 5910506736673805538ull, 9042893765376484668ull, 5187224982239433928ull}}, {{3424806817082579086ull, 7388133420842256923ull, 11303617206720605835ull, 6484031227799292410ull}}, {{18116066576635387569ull, 4623480757625433249ull, 4906149471545981486ull, 8105039034749115513ull}}, {{4405012582756035375ull, 16724733528798059493ull, 14595558465784708188ull, 5065649396718197195ull}}, {{10117951746872432123ull, 2459172837288022750ull, 13632762063803497332ull, 6332061745897746494ull}}, {{3424067646735764345ull, 3073966046610028438ull, 7817580542899595857ull, 7915077182372183118ull}}, {{15975100334492016428ull, 13450443825199737533ull, 274301820884859506ull, 4946923238982614449ull}}, {{6133817362832856823ull, 7589682744644896109ull, 4954563294533462287ull, 6183654048728268061ull}}, {{12278957721968458932ull, 4875417412378732232ull, 10804890136594215763ull, 7729567560910335076ull}}, {{7674348576230286833ull, 741292873523013693ull, 15976428372226160660ull, 4830979725568959422ull}}, {{14204621738715246445ull, 926616091903767116ull, 10747163428427925017ull, 6038724656961199278ull}}, {{17755777173394058056ull, 5769956133307096799ull, 4210582248680130463ull, 7548405821201499098ull}}, {{18014889761012368141ull, 10523751610958017355ull, 7243299923852469443ull, 4717753638250936936ull}}, {{17906926182838072272ull, 8543003495270133790ull, 9054124904815586804ull, 5897192047813671170ull}}, {{13160285691692814532ull, 10678754369087667238ull, 2094284094164707697ull, 7371490059767088963ull}}, {{7226985077761242357ull, 17960128979786971952ull, 16452913172988048333ull, 9214362574708861203ull}}, {{4516865673600776473ull, 13530923621580551422ull, 7977227723903836256ull, 5758976609193038252ull}}, {{14869454128855746400ull, 16913654526975689277ull, 9971534654879795320ull, 7198720761491297815ull}}, {{4751759605787519288ull, 2695324085010059981ull, 7852732300172356247ull, 8998400951864122269ull}}, {{5275692762830893507ull, 8602106580772369344ull, 7213800696821416606ull, 5624000594915076418ull}}, {{6594615953538616883ull, 1529261189110685872ull, 18240622907881546566ull, 7030000743643845522ull}}, {{8243269941923271104ull, 11134948523243133148ull, 13577406597997157399ull, 8787500929554806903ull}}, {{14375415750556820248ull, 13876871854668040073ull, 15403408151389305230ull, 5492188080971754314ull}}, {{4134211632913861598ull, 8122717781480274284ull, 10030888152381855730ull, 6865235101214692893ull}}, {{5167764541142326998ull, 930025189995567047ull, 17150296208904707567ull, 8581543876518366116ull}}, {{10147381865855036230ull, 7498794771388311260ull, 1495563093710666421ull, 5363464922823978823ull}}, {{12684227332318795287ull, 13985179482662776979ull, 15704511922420496738ull, 6704331153529973528ull}}, {{11243598146971106205ull, 8258102316473695416ull, 1183895829316069307ull, 8380413941912466911ull}}, {{7027248841856941378ull, 2855470938582365683ull, 7657463920963625173ull, 5237758713695291819ull}}, {{4172375033893788819ull, 8181024691655345008ull, 4960143882777143562ull, 6547198392119114774ull}}, {{5215468792367236023ull, 1002908827714405452ull, 15423551890326205261ull, 8183997990148893467ull}}, {{12483040032084298323ull, 2932661026535197359ull, 7333876922240184336ull, 5114998743843058417ull}}, {{10992114021677984999ull, 3665826283168996699ull, 13779032171227618324ull, 6393748429803823021ull}}, {{9128456508670093345ull, 4582282853961245874ull, 3388732158752359193ull, 7992185537254778777ull}}, {{10316971336346196245ull, 14393141829794248431ull, 13647172645288694255ull, 4995115960784236735ull}}, {{8284528152005357402ull, 13379741268815422635ull, 12447279788183479915ull, 6243894950980295919ull}}, {{5743974171579308848ull, 12112990567591890390ull, 10947413716801961990ull, 7804868688725369899ull}}, {{17425041912519231742ull, 2958933086317543589ull, 4536290563787532292ull, 4878042930453356187ull}}, {{7946244335366875966ull, 3698666357896929487ull, 1058677186307027461ull, 6097553663066695234ull}}, {{5321119400781207053ull, 9235018965798549763ull, 10546718519738560134ull, 7621942078833369042ull}}, {{1019856616274560456ull, 1160200835196705698ull, 11203385093263987988ull, 4763713799270855651ull}}, {{10498192807197976378ull, 1450251043995882122ull, 9392545348152597081ull, 5954642249088569564ull}}, {{3899368972142694665ull, 6424499823422240557ull, 11740681685190746351ull, 7443302811360711955ull}}, {{4742948616802878118ull, 10932841417279982204ull, 5032083044030522517ull, 4652064257100444972ull}}, {{5928685771003597647ull, 18277737790027365659ull, 6290103805038153146ull, 5815080321375556215ull}}, {{2799171195327109154ull, 13623800200679431266ull, 3250943737870303529ull, 7268850401719445269ull}}, {{12722336031013662251ull, 3194692195567125370ull, 8675365690765267316ull, 9086063002149306586ull}}, {{12563146037810926811ull, 11220054659084229164ull, 10033789575155679976ull, 5678789376343316616ull}}, {{15703932547263658514ull, 14025068323855286455ull, 12542236968944599970ull, 7098486720429145770ull}}, {{15018229665652185238ull, 8307963367964332261ull, 6454424174325974155ull, 8873108400536432213ull}}, {{11692236550246309726ull, 2886634095764013711ull, 6339858118167427799ull, 5545692750335270133ull}}, {{10003609669380499253ull, 17443350674987180851ull, 12536508666136672652ull, 6932115937919087666ull}}, {{7892826068298236162ull, 3357444270024424448ull, 6447263795816065008ull, 8665144922398859583ull}}, {{4933016292686397602ull, 2098402668765265280ull, 10947068900026122486ull, 5415715576499287239ull}}, {{6166270365857997002ull, 11846375372811357408ull, 9072150106605265203ull, 6769644470624109049ull}}, {{7707837957322496252ull, 10196283197586808856ull, 15951873651683969408ull, 8462055588280136311ull}}, {{4817398723326560158ull, 6372676998491755535ull, 16887450059943562736ull, 5288784742675085194ull}}, {{1410062385730812293ull, 7965846248114694419ull, 11885940538074677612ull, 6610980928343856493ull}}, {{15597636037445679079ull, 9957307810143368023ull, 1022367617311183303ull, 8263726160429820617ull}}, {{16666051551044631280ull, 13140846408980686870ull, 12168194806887959324ull, 5164828850268637885ull}}, {{11609192401951013292ull, 16426058011225858588ull, 1375185453327785443ull, 6456036062835797357ull}}, {{14511490502438766615ull, 15920886495604935331ull, 6330667835087119708ull, 8070045078544746696ull}}, {{6763838554810535183ull, 727182022898308774ull, 3956667396929449818ull, 5043778174090466685ull}}, {{17678170230367944786ull, 10132349565477661775ull, 9557520264589200176ull, 6304722717613083356ull}}, {{17486026769532543079ull, 12665436956847077219ull, 11946900330736500220ull, 7880903397016354195ull}}, {{8622923721744145472ull, 17139270134884199070ull, 5160969697496618685ull, 4925564623135221372ull}}, {{1555282615325406032ull, 7589029613323085126ull, 6451212121870773357ull, 6156955778919026715ull}}, {{11167475306011533348ull, 14097973035081244311ull, 3452329133911078792ull, 7696194723648783394ull}}, {{13897201093898290199ull, 8811233146925777694ull, 6769391727121812149ull, 4810121702280489621ull}}, {{8148129330518086940ull, 15625727452084610022ull, 13073425677329653090ull, 6012652127850612026ull}}, {{961789626292832867ull, 10308787278250986720ull, 7118410059807290555ull, 7515815159813265033ull}}, {{601118516433020542ull, 4137149039693172748ull, 15978221333448026357ull, 4697384474883290645ull}}, {{751398145541275678ull, 9783122318043853839ull, 6137718611527869234ull, 5871730593604113307ull}}, {{14774305737208758309ull, 3005530860700041490ull, 3060462245982448639ull, 7339663242005141634ull}}, {{9244510134656172078ull, 17591971631157215575ull, 13048949844332836606ull, 9174579052506427042ull}}, {{12695347861801189405ull, 6383296251045871830ull, 12767279671135410783ull, 5734111907816516901ull}}, {{6645812790396710948ull, 3367434295379951884ull, 2124041533637099767ull, 7167639884770646127ull}}, {{8307265987995888685ull, 18044350924507103567ull, 16490109972328538420ull, 8959549855963307658ull}}, {{12109570270138512284ull, 2054347290962163921ull, 14918004751132724417ull, 5599718659977067286ull}}, {{1301904782390976643ull, 7179620132130092806ull, 9424133902061129713ull, 6999648324971334108ull}}, {{10850753014843496612ull, 13586211183590003911ull, 11780167377576412141ull, 8749560406214167635ull}}, {{13699249661918267239ull, 10797224998957446396ull, 5056761601771563636ull, 5468475253883854772ull}}, {{17124062077397834048ull, 13496531248696807995ull, 6320952002214454545ull, 6835594067354818465ull}}, {{16793391578319904656ull, 3035606005588846282ull, 12512876021195456086ull, 8544492584193523081ull}}, {{15107555754877328314ull, 15732311808775192638ull, 903018485606078197ull, 5340307865120951926ull}}, {{9661072656741884585ull, 5830331705686827086ull, 10352145143862373555ull, 6675384831401189907ull}}, {{2852968784072579923ull, 2676228613681145954ull, 8328495411400579040ull, 8344231039251487384ull}}, {{6394791508472750356ull, 1672642883550716221ull, 5205309632125361900ull, 5215144399532179615ull}}, {{12605175404018325849ull, 2090803604438395276ull, 1894951021729314471ull, 6518930499415224519ull}}, {{15756469255022907311ull, 16448562560830157807ull, 16203746832443806800ull, 8148663124269030648ull}}, {{16765322312030398926ull, 10280351600518848629ull, 10127341770277379250ull, 5092914452668144155ull}}, {{7121594834755834945ull, 3627067463793784979ull, 8047491194419336159ull, 6366143065835180194ull}}, {{4290307525017405777ull, 18368892385024394936ull, 835991956169394390ull, 7957678832293975243ull}}, {{2681442203135878611ull, 6868871722212858931ull, 16663396037101729158ull, 4973549270183734526ull}}, {{17186860809202011975ull, 17809461689620849471ull, 11605873009522385639ull, 6216936587729668158ull}}, {{16871889993075127065ull, 17650141093598673935ull, 5283969225048206241ull, 7771170734662085198ull}}, {{17462460273313036272ull, 4113809155858089353ull, 17137538820937292613ull, 4856981709163803248ull}}, {{7993017286359131628ull, 9753947463249999596ull, 2975179452462064150ull, 6071227136454754061ull}}, {{9991271607948914534ull, 2969062292207723687ull, 8330660334004968092ull, 7589033920568442576ull}}, {{13162073782609153440ull, 11079035969484603112ull, 5206662708753105057ull, 4743146200355276610ull}}, {{16452592228261441800ull, 13736906573590178ull, 15731700422796157130ull, 5928932750444095762ull}}, {{11342368248472026442ull, 9240543170071763531ull, 10441253491640420604ull, 7411165938055119703ull}}, {{4783137146081322574ull, 14998711518149628015ull, 13443312459916344733ull, 4631978711284449814ull}}, {{1367235414174265314ull, 4913331342404871307ull, 7580768538040655109ull, 5789973389105562268ull}}, {{15544102322999995354ull, 10753350196433477037ull, 9475960672550818886ull, 7237466736381952835ull}}, {{5595069848467830481ull, 4218315708687070489ull, 7233264822261135704ull, 9046833420477441044ull}}, {{15026133701360863811ull, 2636447317929419055ull, 13744162550767985623ull, 5654270887798400652ull}}, {{14170981108273691859ull, 17130617202693937531ull, 17180203188459982028ull, 7067838609748000815ull}}, {{13102040366914726920ull, 2966527429657870298ull, 16863567967147589632ull, 8834798262185001019ull}}, {{12800461247749092229ull, 1854079643536168936ull, 8233886970253549568ull, 5521748913865625637ull}}, {{16000576559686365286ull, 2317599554420211170ull, 14904044731244324864ull, 6902186142332032046ull}}, {{10777348662753180800ull, 2896999443025263963ull, 9406683877200630272ull, 8627732677915040058ull}}, {{4429999905007044048ull, 1810624651890789977ull, 10490863441677781824ull, 5392332923696900036ull}}, {{10149185899686192964ull, 2263280814863487471ull, 13113579302097227280ull, 6740416154621125045ull}}, {{8074796356180353301ull, 2829101018579359339ull, 2556916072339370388ull, 8425520193276406307ull}}, {{2740904713399026861ull, 10991560173466875395ull, 17738973609707964156ull, 5265950120797753941ull}}, {{17261188947030947288ull, 13739450216833594243ull, 8338658956852791483ull, 6582437650997192427ull}}, {{16964800165361296206ull, 12562626752614604900ull, 5811637677638601450ull, 8228047063746490534ull}}, {{1379628066496034321ull, 12463327738811515967ull, 17467331603806289618ull, 5142529414841556583ull}}, {{15559593138402206613ull, 6355787636659619150ull, 17222478486330474119ull, 6428161768551945729ull}}, {{10226119386147982458ull, 3333048527397136034ull, 7693040052630928937ull, 8035202210689932162ull}}, {{11003010634769876941ull, 13612370375691679781ull, 9419836051321718489ull, 5022001381681207601ull}}, {{18365449311889734080ull, 3180404914332436014ull, 16386481082579536016ull, 6277501727101509501ull}}, {{13733439603007391792ull, 3975506142915545018ull, 6648043297942256308ull, 7846877158876886877ull}}, {{13195085770307007774ull, 11708063376176991444ull, 6460870070427604144ull, 4904298224298054298ull}}, {{16493857212883759717ull, 14635079220221239305ull, 17299459624889280988ull, 6130372780372567872ull}}, {{6782263460822535934ull, 18293849025276549132ull, 3177580457402049619ull, 7662965975465709841ull}}, {{13462286699868860767ull, 9127812631584149255ull, 13515202831944750772ull, 4789353734666068650ull}}, {{12216172356408688055ull, 11409765789480186569ull, 7670631503076162657ull, 5986692168332585813ull}}, {{1435157390228696356ull, 427149181568069500ull, 14199975397272591226ull, 7483365210415732266ull}}, {{10120345405747711031ull, 4878654256907431341ull, 13486670641722757420ull, 4677103256509832666ull}}, {{17262117775612026693ull, 6098317821134289176ull, 7634966265298670967ull, 5846379070637290833ull}}, {{3130903145805481750ull, 3011211257990473567ull, 14155393850050726613ull, 7307973838296613541ull}}, {{17748686987539015899ull, 8375700090915479862ull, 3859184257281244554ull, 9134967297870766927ull}}, {{6481243348784497033ull, 9846498575249562818ull, 9329519188441859702ull, 5709354561169229329ull}}, {{17324926222835397099ull, 3084751182207177714ull, 16273585003979712532ull, 7136693201461536661ull}}, {{12432785741689470566ull, 3855938977758972143ull, 6506923199692476953ull, 8920866501826920827ull}}, {{14688020116197000960ull, 13939176907167827349ull, 1760983990594104143ull, 5575541563641825517ull}}, {{4524967089964087488ull, 12812285115532396283ull, 6812916006670018083ull, 6969426954552281896ull}}, {{1044522844027721455ull, 11403670375988107450ull, 8516145008337522604ull, 8711783693190352370ull}}, {{5264512795944713814ull, 16350666021847342964ull, 9934276648638339531ull, 5444864808243970231ull}}, {{6580640994930892267ull, 15826646508881790801ull, 7806159792370536510ull, 6806081010304962789ull}}, {{12837487262091003238ull, 10559936099247462693ull, 14369385758890558542ull, 8507601262881203486ull}}, {{10329272548020570976ull, 1988274043602276279ull, 4369180080879211185ull, 5317250789300752179ull}}, {{8299904666598325816ull, 7097028572930233253ull, 849789082671626077ull, 6646563486625940224ull}}, {{14986566851675295173ull, 13482971734590179470ull, 1062236353339532596ull, 8308204358282425280ull}}, {{4754918263869671580ull, 17650229370973637977ull, 663897720837207872ull, 5192627723926515800ull}}, {{10555333848264477378ull, 3616042640007495855ull, 829872151046509841ull, 6490784654908144750ull}}, {{8582481291903208819ull, 9131739318436757723ull, 10260712225662913109ull, 8113480818635180937ull}}, {{3058207798225811560ull, 8013180083236667529ull, 17942160187107790453ull, 5070925511646988085ull}}, {{8434445766209652354ull, 14628161122473222315ull, 8592642178602574354ull, 6338656889558735107ull}}, {{5931371189334677538ull, 9061829366236752086ull, 6129116704825830039ull, 7923321111948418884ull}}, {{17542165048616337174ull, 12581172381539051909ull, 13054069977370919582ull, 4952075694967761802ull}}, {{8092648255488257755ull, 6503093440069039079ull, 7094215434858873670ull, 6190094618709702253ull}}, {{5504124300932934289ull, 17352238836941074657ull, 13479455312000979991ull, 7737618273387127816ull}}, {{14969292734151553691ull, 17762678300729253516ull, 8424659570000612494ull, 4836011420866954885ull}}, {{264871843979890498ull, 12979975839056791088ull, 15142510480928153522ull, 6045014276083693606ull}}, {{331089804974863122ull, 7001597761966213052ull, 9704766064305416095ull, 7556267845104617008ull}}, {{9430303164964065259ull, 11293527628869965013ull, 6065478790190885059ull, 4722667403190385630ull}}, {{16399564974632469478ull, 9505223517660068362ull, 16805220524593382132ull, 5903334253987982037ull}}, {{11276084181435811040ull, 11881529397075085453ull, 7171467600459563953ull, 7379167817484977547ull}}, {{9353395622611075852ull, 508426845530846552ull, 2176324241073533519ull, 4611979885928110967ull}}, {{11691744528263844815ull, 14470591612195721902ull, 16555463356624080610ull, 5764974857410138708ull}}, {{5391308623475030210ull, 8864867478389876570ull, 2247585122070549147ull, 7206218571762673386ull}}, {{15962507816198563571ull, 6469398329559957808ull, 12032853439442962242ull, 9007773214703341732ull}}, {{9976567385124102232ull, 8655059974402361534ull, 16743905436506627209ull, 5629858259189588582ull}}, {{3247337194550351982ull, 15430510986430339822ull, 11706509758778508203ull, 7037322823986985728ull}}, {{13282543530042715785ull, 14676452714610536873ull, 14633137198473135254ull, 8796653529983732160ull}}, {{1384060678635615510ull, 4561096928204197642ull, 9145710749045709534ull, 5497908456239832600ull}}, {{10953447885149295195ull, 14924743197110022860ull, 11432138436307136917ull, 6872385570299790750ull}}, {{13691809856436618994ull, 4820870941105364863ull, 5066801008529145339ull, 8590481962874738438ull}}, {{15474910187913968727ull, 707201328977159087ull, 17001808685612879549ull, 5369051226796711523ull}}, {{14731951716465073005ull, 5495687679648836763ull, 16640574838588711532ull, 6711314033495889404ull}}, {{13803253627153953352ull, 6869609599561045954ull, 2353974474526337799ull, 8389142541869861756ull}}, {{13238719535398608749ull, 11211035027366735577ull, 10694606083433736932ull, 5243214088668663597ull}}, {{2713341363966097225ull, 14013793784208419472ull, 17979943622719559069ull, 6554017610835829496ull}}, {{3391676704957621531ull, 3682184174978360628ull, 4028185454689897221ull, 8192522013544786871ull}}, {{11343169977453289265ull, 4607208118575169344ull, 9435144936822267619ull, 5120326258465491794ull}}, {{14178962471816611581ull, 1147324129791573776ull, 2570559134173058716ull, 6400407823081864743ull}}, {{17723703089770764476ull, 1434155162239467220ull, 17048256972998487107ull, 8000509778852330928ull}}, {{1853942394251951990ull, 17037248040895524677ull, 10655160608124054441ull, 5000318611782706830ull}}, {{6929114011242327891ull, 7461501995837242134ull, 4095578723300292244ull, 6250398264728383538ull}}, {{17884764550907685672ull, 9326877494796552667ull, 14342845440980141113ull, 7812997830910479422ull}}, {{8872134835103609593ull, 17358513480316315177ull, 4352592382185200291ull, 4883123644319049639ull}}, {{15701854562306899895ull, 17086455831968006067ull, 829054459304112460ull, 6103904555398812049ull}}, {{15015632184456236965ull, 2911325716250455968ull, 5648004092557528480ull, 7629880694248515061ull}}, {{9384770115285148103ull, 1819578572656534980ull, 5835845567062149252ull, 4768675433905321913ull}}, {{11730962644106435129ull, 2274473215820668725ull, 11906492977255074469ull, 5960844292381652391ull}}, {{828645249850880199ull, 7454777538203223811ull, 10271430203141455182ull, 7451055365477065489ull}}, {{16658804345652657788ull, 47549942949626977ull, 17948858923031879249ull, 4656909603423165930ull}}, {{6988447376783658523ull, 4671123447114421626ull, 13212701616935073253ull, 5821137004278957413ull}}, {{17958931257834348962ull, 10450590327320414936ull, 2680818965886677854ull, 7276421255348696767ull}}, {{4001919998583384587ull, 3839865872295742863ull, 17186081762640511030ull, 9095526569185870958ull}}, {{9418729026755697223ull, 16234974225467003001ull, 6129615083222931489ull, 5684704105741169349ull}}, {{16385097301872009432ull, 6458659726551590039ull, 12273704872456052266ull, 7105880132176461686ull}}, {{15869685608912623886ull, 17296696695044263357ull, 6118759053715289524ull, 8882350165220577108ull}}, {{12224396514784083881ull, 1587063397547888790ull, 13047596445426831761ull, 5551468853262860692ull}}, {{6057123606625329043ull, 6595515265362248892ull, 16309495556783539701ull, 6939336066578575865ull}}, {{7571404508281661304ull, 12856080100130199019ull, 6551811390697260914ull, 8674170083223219832ull}}, {{2426284808462344363ull, 12646736081008762291ull, 4094882119185788071ull, 5421356302014512395ull}}, {{16867914065860094166ull, 11196734082833564959ull, 506916630554847185ull, 6776695377518140494ull}}, {{16473206563897729803ull, 160859548259792487ull, 9857017825048334790ull, 8470869221897675617ull}}, {{17213283130077162983ull, 13935595272944534016ull, 17689851186723679003ull, 5294293263686047260ull}}, {{3069859838886902113ull, 12807808072753279617ull, 3665569909695047138ull, 6617866579607559076ull}}, {{8449010817036015545ull, 6786388054086823713ull, 4581962387118808923ull, 8272333224509448845ull}}, {{16809846806715979476ull, 1935649524590570868ull, 5169569501162949529ull, 5170208265318405528ull}}, {{2565564434685422729ull, 7031247924165601490ull, 6461961876453686911ull, 6462760331648006910ull}}, {{12430327580211554219ull, 4177373886779613958ull, 17300824382421884447ull, 8078450414560008637ull}}, {{3157268719204833483ull, 9528387706878340580ull, 13118858248227371731ull, 5049031509100005398ull}}, {{3946585899006041853ull, 7298798615170537821ull, 7175200773429438856ull, 6311289386375006748ull}}, {{9544918392184940221ull, 9123498268963172276ull, 8969000966786798570ull, 7889111732968758435ull}}, {{15188946031970363446ull, 10313872436529370576ull, 3299782595028055154ull, 4930694833105474022ull}}, {{539438466253402691ull, 3668968508806937413ull, 13348100280639844751ull, 6163368541381842527ull}}, {{5285984101244141268ull, 18421268691290835478ull, 12073439332372418034ull, 7704210676727303159ull}}, {{17138798118559752005ull, 16124978950484160077ull, 14463428610373843127ull, 4815131672954564474ull}}, {{7588439592917526294ull, 15544537669677812193ull, 8855913726112528101ull, 6018914591193205593ull}}, {{14097235509574295771ull, 5595614031815101529ull, 15681578176068048031ull, 7523643238991506991ull}}, {{1893243165842853001ull, 10414787797525520312ull, 16718515387683611875ull, 4702277024369691869ull}}, {{2366553957303566251ull, 8406798728479512486ull, 7063086179322351132ull, 5877846280462114837ull}}, {{12181564483484233622ull, 10508498410599390607ull, 13440543742580326819ull, 7347307850577643546ull}}, {{10615269585927904124ull, 8523936994821850355ull, 7577307641370632716ull, 9184134813222054433ull}}, {{4328700481991246125ull, 14550832658618432280ull, 16265032321925115207ull, 5740084258263784020ull}}, {{5410875602489057657ull, 13576854804845652446ull, 1884546328696842393ull, 7175105322829730026ull}}, {{15986966539966097879ull, 3136010450774901845ull, 11579054947725828800ull, 8968881653537162532ull}}, {{12297697096692505126ull, 1960006531734313653ull, 16460281379183418808ull, 5605551033460726582ull}}, {{1537063315583467696ull, 2450008164667892067ull, 11351979687124497702ull, 7006938791825908228ull}}, {{15756387199761498332ull, 12285882242689640891ull, 14189974608905622127ull, 8758673489782385285ull}}, {{7541898990637242505ull, 14596205429322107413ull, 11174577139779707781ull, 5474170931113990803ull}}, {{14039059756723941036ull, 4410198731370470554ull, 9356535406297246823ull, 6842713663892488504ull}}, {{8325452659050150487ull, 901062395785700289ull, 11695669257871558529ull, 8553392079865610630ull}}, {{16732622957974813814ull, 12092379043434532440ull, 2698107267742336176ull, 5345870049916006644ull}}, {{2469034623758965652ull, 15115473804293165551ull, 3372634084677920220ull, 6682337562395008305ull}}, {{16921351334980870776ull, 447598181656905322ull, 8827478624274788180ull, 8352921952993760381ull}}, {{15187530602790432139ull, 9503120900390341634ull, 7823017149385436564ull, 5220576220621100238ull}}, {{9761041216633264366ull, 11878901125487927043ull, 555399399877019897ull, 6525720275776375298ull}}, {{7589615502364192554ull, 1013568351577745092ull, 9917621286701050680ull, 8157150344720469122ull}}, {{13966881725832396154ull, 633480219736090682ull, 10810199322615544579ull, 5098218965450293201ull}}, {{8235230120435719385ull, 14626908329952277065ull, 18124435171696818627ull, 6372773706812866501ull}}, {{14905723668972037135ull, 13671949394012958427ull, 8820485909338859572ull, 7965967133516083127ull}}, {{7010234283893829257ull, 17768340408112874825ull, 12430332720977869088ull, 4978729458447551954ull}}, {{13374478873294674476ull, 3763681436431541915ull, 6314543864367560553ull, 6223411823059439943ull}}, {{12106412573190955190ull, 9316287813966815298ull, 3281493812032062787ull, 7779264778824299929ull}}, {{12178193876671734898ull, 3516836874515565609ull, 13580148678588509002ull, 4862040486765187455ull}}, {{1387684290557504911ull, 13619418129999232820ull, 12363499829808248348ull, 6077550608456484319ull}}, {{1734605363196881138ull, 17024272662499041025ull, 10842688768832922531ull, 7596938260570605399ull}}, {{12613343398066520472ull, 8334327404848206688ull, 13694209508161658438ull, 4748086412856628374ull}}, {{15766679247583150589ull, 1194537219205482552ull, 7894389848347297240ull, 5935108016070785468ull}}, {{1261604985769386620ull, 1493171524006853191ull, 9867987310434121550ull, 7418885020088481835ull}}, {{7706032143746948494ull, 14768290257786446956ull, 3861649059807632016ull, 4636803137555301147ull}}, {{9632540179683685617ull, 13618748523507079ull, 215375306332152117ull, 5796003921944126434ull}}, {{7428989206177219118ull, 4628709454081771753ull, 9492591169769965954ull, 7245004902430158042ull}}, {{13897922526148911801ull, 15009258854456990499ull, 2642366925357681634ull, 9056256128037697553ull}}, {{6380358569629375924ull, 13992472802463006966ull, 13180694374417020781ull, 5660160080023560970ull}}, {{17198820248891495712ull, 3655532947796594995ull, 7252495931166500169ull, 7075200100029451213ull}}, {{16886839292686981736ull, 9181102203173131648ull, 13677305932385513115ull, 8844000125036814016ull}}, {{10554274557929363585ull, 3432345867769513328ull, 8548316207740945697ull, 5527500078148008760ull}}, {{13192843197411704482ull, 8902118353139279564ull, 10685395259676182121ull, 6909375097685010950ull}}, {{16491053996764630602ull, 15739333959851487359ull, 4133372037740451843ull, 8636718872106263688ull}}, {{17224437775618975982ull, 7531240715693485647ull, 2583357523587782402ull, 5397949295066414805ull}}, {{16918861201096332074ull, 190678857762081251ull, 7840882922912115907ull, 6747436618833018506ull}}, {{16536890482943027188ull, 14073406627484765276ull, 577731616785369075ull, 8434295773541273133ull}}, {{1112184514984616185ull, 6490036132964284346ull, 2666925269704549624ull, 5271434858463295708ull}}, {{10613602680585546039ull, 8112545166205355432ull, 3333656587130687030ull, 6589293573079119635ull}}, {{13267003350731932549ull, 917309420901918482ull, 18002128789195522500ull, 8236616966348899543ull}}, {{12903563112634845747ull, 9796690424918474859ull, 18168859520888283418ull, 5147885603968062214ull}}, {{11517767872366169280ull, 3022490994293317766ull, 13487702364255578465ull, 6434857004960077768ull}}, {{5173837803602935792ull, 8389799761294035112ull, 16859627955319473081ull, 8043571256200097210ull}}, {{3233648627251834870ull, 16772839896877241705ull, 15148953490502058579ull, 5027232035125060756ull}}, {{8653746802492181491ull, 16354363852669164227ull, 489447789418021608ull, 6284040043906325946ull}}, {{6205497484687838960ull, 1996210742126903668ull, 9835181773627302819ull, 7855050054882907432ull}}, {{13101807964784675158ull, 17388532778325172456ull, 6146988608517064261ull, 4909406284301817145ull}}, {{16377259955980843948ull, 7900607917624301858ull, 12295421779073718231ull, 6136757855377271431ull}}, {{11248202908121279126ull, 5264073878602989419ull, 10757591205414759885ull, 7670947319221589289ull}}, {{4724283808362105502ull, 5595889183340562339ull, 18252709549452694688ull, 4794342074513493305ull}}, {{1293668742025243974ull, 6994861479175702924ull, 8980828881533704648ull, 5992927593141866632ull}}, {{1617085927531554967ull, 8743576848969628655ull, 11226036101917130810ull, 7491159491427333290ull}}, {{7928207732348303710ull, 10076421549033405813ull, 11627958582125594660ull, 4681974682142083306ull}}, {{14521945683862767542ull, 12595526936291757266ull, 5311576190802217517ull, 5852468352677604133ull}}, {{8929060067973683619ull, 1909350615082532871ull, 11251156256930159801ull, 7315585440847005166ull}}, {{6549639066539716620ull, 6998374287280553993ull, 4840573284307923943ull, 9144481801058756458ull}}, {{15622739462655792648ull, 11291512957191428101ull, 7637044321119840368ull, 5715301125661722786ull}}, {{5693366273037577097ull, 14114391196489285127ull, 322933364545024652ull, 7144126407077153483ull}}, {{2505021822869583468ull, 17642988995611606409ull, 14238724760963444527ull, 8930158008846441853ull}}, {{13094853685361959428ull, 17944397149898335861ull, 11205045984815846781ull, 5581348755529026158ull}}, {{2533509051420285572ull, 8595438382090756115ull, 4782935444165032669ull, 6976685944411282698ull}}, {{17001944369557520677ull, 15355983996040833047ull, 15202041342061066644ull, 8720857430514103372ull}}, {{17543744258614532279ull, 374117960670744846ull, 277903801933390845ull, 5450535894071314608ull}}, {{12706308286413389541ull, 5079333469265818962ull, 347379752416738556ull, 6813169867589143260ull}}, {{6659513321161961118ull, 6349166836582273703ull, 434224690520923195ull, 8516462334486429075ull}}, {{11079724853367307555ull, 1662386263650227112ull, 16412291496071434661ull, 5322788959054018171ull}}, {{13849656066709134444ull, 6689668847990171794ull, 15903678351661905422ull, 6653486198817522714ull}}, {{8088698046531642247ull, 17585458096842490551ull, 10656225902722605969ull, 8316857748521903393ull}}, {{11972965306723358260ull, 4073382282885474738ull, 18189356235270098491ull, 5198036092826189620ull}}, {{5742834596549422017ull, 480041835179455519ull, 4289951220378071498ull, 6497545116032737026ull}}, {{2566857227259389617ull, 9823424330829095207ull, 14585811062327365180ull, 8121931395040921282ull}}, {{8521814794678200367ull, 15363012243622960312ull, 13727817932381991141ull, 5076207121900575801ull}}, {{10652268493347750459ull, 5368707249246536678ull, 3324714360195325215ull, 6345258902375719752ull}}, {{4091963579829912265ull, 2099198043130782944ull, 4155892950244156519ull, 7931573627969649690ull}}, {{2557477237393695166ull, 8229527804597821196ull, 7209119112329985728ull, 4957233517481031056ull}}, {{3196846546742118957ull, 10286909755747276495ull, 9011398890412482160ull, 6196541896851288820ull}}, {{17831116238709812409ull, 12858637194684095618ull, 11264248613015602700ull, 7745677371064111025ull}}, {{15756133667621020660ull, 17260020283532335569ull, 122626355493669831ull, 4841048356915069391ull}}, {{5860109029244112112ull, 16963339335988031558ull, 13988340999649251001ull, 6051310446143836738ull}}, {{16548508323409915948ull, 7369116114702875735ull, 8262054212706787944ull, 7564138057679795923ull}}, {{17260346729772279324ull, 4605697571689297334ull, 2857940873728048513ull, 4727586286049872452ull}}, {{12352061375360573347ull, 10368807983039009572ull, 3572426092160060641ull, 5909482857562340565ull}}, {{15440076719200716683ull, 17572695997226149869ull, 9077218633627463705ull, 7386853571952925706ull}}, {{11955890958714141879ull, 4065405970625261812ull, 10284947664444552720ull, 4616783482470578566ull}}, {{14944863698392677349ull, 5081757463281577265ull, 3632812543700915092ull, 5770979353088223208ull}}, {{4846021567708682974ull, 6352196829101971582ull, 4541015679626143865ull, 7213724191360279010ull}}, {{15280898996490629525ull, 12551932054804852381ull, 14899641636387455639ull, 9017155239200348762ull}}, {{11856404882020337406ull, 14762486561894114594ull, 13923962041169547678ull, 5635722024500217976ull}}, {{5597134065670645949ull, 9229736165512867435ull, 17404952551461934598ull, 7044652530625272470ull}}, {{2384731563660919532ull, 2313798170036308486ull, 12532818652472642440ull, 8805815663281590588ull}}, {{15325515282570238420ull, 1446123856272692803ull, 17056383694650177333ull, 5503634789550994117ull}}, {{14545208084785410120ull, 6419340838768253908ull, 7485421563030557954ull, 6879543486938742647ull}}, {{18181510105981762650ull, 17247548085315093193ull, 4745090935360809538ull, 8599429358673428309ull}}, {{4445914788597519801ull, 15391403571749321150ull, 5271524843814199913ull, 5374643349170892693ull}}, {{14780765522601675559ull, 5404196409404487725ull, 11201092073195137796ull, 6718304186463615866ull}}, {{4640898847969930736ull, 6755245511755609657ull, 4777993054639146437ull, 8397880233079519833ull}}, {{14429776826049676470ull, 6527871454060949987ull, 14515460705217936283ull, 5248675145674699895ull}}, {{13425535014134707684ull, 3548153299148799580ull, 13532639863095032450ull, 6560843932093374869ull}}, {{16781918767668384605ull, 13658563660790775283ull, 3080741773586626850ull, 8201054915116718587ull}}, {{8182856220579046426ull, 13148288306421622456ull, 18066364672987499445ull, 5125659321947949116ull}}, {{10228570275723808033ull, 2600302327744864358ull, 4136211767524822691ull, 6407074152434936396ull}}, {{3562340807799984233ull, 17085435964963244160ull, 5170264709406028363ull, 8008842690543670495ull}}, {{2226463004874990146ull, 8372554468888333648ull, 10148944471019849583ull, 5005526681589794059ull}}, {{2783078756093737682ull, 5854007067683029156ull, 8074494570347424075ull, 6256908351987242574ull}}, {{3478848445117172102ull, 2705822816176398541ull, 869746176079504286ull, 7821135439984053218ull}}, {{4480123287411926516ull, 15526197315392412800ull, 5155277378477078082ull, 4888209649990033261ull}}, {{5600154109264908145ull, 10184374607385740192ull, 11055782741523735507ull, 6110262062487541576ull}}, {{7000192636581135181ull, 8118782240804787336ull, 13819728426904669384ull, 7637827578109426970ull}}, {{4375120397863209488ull, 5074238900502992085ull, 13249016285242806269ull, 4773642236318391856ull}}, {{10080586515756399764ull, 10954484644056128010ull, 16561270356553507836ull, 5967052795397989820ull}}, {{3377361107840723897ull, 13693105805070160013ull, 2254843871982333179ull, 7458815994247487276ull}}, {{4416693701614146388ull, 6252348118955156056ull, 10632649456843734045ull, 4661759996404679547ull}}, {{5520867127017682985ull, 12427121167121332974ull, 8679125802627279652ull, 5827199995505849434ull}}, {{16124455945626879539ull, 15533901458901666217ull, 1625535216429323757ull, 7283999994382311793ull}}, {{6320511876751435711ull, 5582318768344919060ull, 6643605038964042601ull, 9104999992977889741ull}}, {{13173691959824423128ull, 15018164276284044172ull, 6458096158566220577ull, 5690624995611181088ull}}, {{16467114949780528910ull, 4937647290072891503ull, 8072620198207775722ull, 7113281244513976360ull}}, {{15972207668798273233ull, 15395431149445890187ull, 10090775247759719652ull, 8891601555642470450ull}}, {{7676786783785226819ull, 398772431548905559ull, 10918420548277212687ull, 5557250972276544031ull}}, {{4984297461304145619ull, 14333523594718295661ull, 9036339666919127954ull, 6946563715345680039ull}}, {{10842057845057569928ull, 8693532456543093768ull, 6683738565221522039ull, 8683204644182100049ull}}, {{6776286153160981205ull, 12350986812980515461ull, 15706551649331921034ull, 5427002902613812530ull}}, {{13082043709878614410ull, 6215361479370868518ull, 10409817524810125485ull, 6783753628267265663ull}}, {{7129182600493492205ull, 12380887867640973552ull, 8400585887585268952ull, 8479692035334082079ull}}, {{4455739125308432628ull, 7738054917275608470ull, 12167895207381874951ull, 5299807522083801299ull}}, {{14793045943490316593ull, 5060882628167122683ull, 10598182990799955785ull, 6624759402604751624ull}}, {{13879621410935507837ull, 10937789303636291258ull, 13247728738499944731ull, 8280949253255939530ull}}, {{13286449400262080303ull, 4530275305558988084ull, 12891516479989853361ull, 5175593283284962206ull}}, {{16608061750327600378ull, 10274530150376123009ull, 6891023563132540893ull, 6469491604106202758ull}}, {{6925019132627336760ull, 17454848706397541666ull, 17837151490770451924ull, 8086864505132753447ull}}, {{8939822976319473379ull, 1685908404643687733ull, 18065748709372614309ull, 5054290315707970904ull}}, {{15786464738826729628ull, 6719071524231997570ull, 4135441813006216270ull, 6317862894634963631ull}}, {{10509708886678636227ull, 17622211442144772771ull, 557616247830382433ull, 7897328618293704539ull}}, {{4262725044960453690ull, 4096353123699401126ull, 16489411219389846685ull, 4935830386433565336ull}}, {{14551778343055342921ull, 9732127423051639311ull, 2165019950527756740ull, 6169787983041956671ull}}, {{13578036910391790747ull, 12165159278814549139ull, 16541332993441859637ull, 7712234978802445838ull}}, {{6180430059781175265ull, 9909067558472787164ull, 5726647102473774369ull, 4820146861751528649ull}}, {{7725537574726469081ull, 16998020466518371859ull, 11769994896519605865ull, 6025183577189410811ull}}, {{5045235949980698447ull, 7412467527865801112ull, 10100807602222119428ull, 7531479471486763514ull}}, {{3153272468737936530ull, 13856164241770901503ull, 10924690769816212546ull, 4707174669679227196ull}}, {{17776648641204584374ull, 8096833265358851070ull, 13655863462270265683ull, 5883968337099033995ull}}, {{12997438764650954659ull, 5509355563271175934ull, 12458143309410444200ull, 7354960421373792494ull}}, {{7023426418958917516ull, 6886694454088969918ull, 6349307099908279442ull, 9193700526717240618ull}}, {{18224699567131487160ull, 8915870052232994102ull, 8580002955870062555ull, 5746062829198275386ull}}, {{13557502422059583141ull, 6533151546863854724ull, 1501631657982802386ull, 7182578536497844233ull}}, {{16946878027574478926ull, 17389811470434594213ull, 6488725590905890886ull, 8978223170622305291ull}}, {{12897641776447743281ull, 6256946150594233479ull, 1749610485102487852ull, 5611389481638940807ull}}, {{11510366202132291197ull, 7821182688242791849ull, 16022071161660273527ull, 7014236852048676008ull}}, {{552899697383200285ull, 5164792341876101908ull, 1580844878365790293ull, 8767796065060845011ull}}, {{9568934347719275986ull, 5533838222886257644ull, 17128929113474476597ull, 5479872540663028131ull}}, {{11961167934649094982ull, 11528983797035209959ull, 16799475373415707842ull, 6849840675828785164ull}}, {{10339773899883980824ull, 5187857709439236641ull, 2552600143060083187ull, 8562300844785981456ull}}, {{17991573733495957775ull, 936568059185828948ull, 1595375089412551992ull, 5351438027991238410ull}}, {{4042723093160395603ull, 1170710073982286186ull, 11217590898620465798ull, 6689297534989048012ull}}, {{14276775903305270311ull, 10686759629332633540ull, 14021988623275582247ull, 8361621918736310015ull}}, {{18146356976420569753ull, 13596753795973977818ull, 15681271917188320760ull, 5226013699210193759ull}}, {{13459574183670936383ull, 16995942244967472273ull, 14989903878058013046ull, 6532517124012742199ull}}, {{2989409674306506767ull, 12021555769354564534ull, 14125693829145128404ull, 8165646405015927749ull}}, {{15703439101723730441ull, 16736844392701378641ull, 11134401652429399204ull, 5103529003134954843ull}}, {{5794240821872499339ull, 2474311417167171686ull, 9306316047109361102ull, 6379411253918693554ull}}, {{16466173064195399982ull, 12316261308313740415ull, 2409523022031925569ull, 7974264067398366943ull}}, {{17208887192763206845ull, 780134290055005903ull, 8423480916411035337ull, 4983915042123979339ull}}, {{16899422972526620652ull, 5586853880996145283ull, 5917665127086406267ull, 6229893802654974174ull}}, {{16512592697230887911ull, 2371881332817793700ull, 16620453445712783642ull, 7787367253318717717ull}}, {{1096998398914529137ull, 6094111851438508967ull, 12693626412784183728ull, 4867104533324198573ull}}, {{15206306053925325133ull, 7617639814298136208ull, 2031974960698065948ull, 6083880666655248217ull}}, {{561138493697104800ull, 9522049767872670261ull, 7151654719299970339ull, 7604850833319060271ull}}, {{2656554567774384452ull, 3645438095706724961ull, 11387313227203563318ull, 4753031770824412669ull}}, {{7932379228145368469ull, 13780169656488182009ull, 399083478722290435ull, 5941289713530515837ull}}, {{14527160053609098490ull, 12613526052182839607ull, 5110540366830250948ull, 7426612141913144796ull}}, {{15997004061146768412ull, 17106825819469050562ull, 12417459766123682650ull, 4641632588695715497ull}}, {{10772883039578684707ull, 12160160237481537395ull, 1686766652372439601ull, 5802040735869644372ull}}, {{8854417781045967980ull, 1365142241569758032ull, 2108458315465549502ull, 7252550919837055465ull}}, {{11068022226307459975ull, 10929799838816973348ull, 7247258912759324781ull, 9065688649796319331ull}}, {{16140885928296938293ull, 9136967908474302294ull, 2223693811260884036ull, 5666055406122699582ull}}, {{10952735373516397058ull, 11421209885592877868ull, 12002989300930880853ull, 7082569257653374477ull}}, {{13690919216895496322ull, 441454301708933623ull, 1168678570881437355ull, 8853211572066718097ull}}, {{15474353538200767057ull, 16416810003063941178ull, 12259639152869368106ull, 5533257232541698810ull}}, {{10119569885896183014ull, 11297640466975150665ull, 6101176904231934325ull, 6916571540677123513ull}}, {{17261148375797616671ull, 286992528436774619ull, 12238157148717305811ull, 8645714425846404391ull}}, {{8482374725659816467ull, 16320271394768841801ull, 14566377245589397987ull, 5403571516154002744ull}}, {{15214654425502158488ull, 15788653225033664347ull, 18207971556986747484ull, 6754464395192503430ull}}, {{14406632013450310206ull, 1289072457582528818ull, 13536592409378658548ull, 8443080493990629288ull}}, {{13615831026833831783ull, 10029042322843856319ull, 8460370255861661592ull, 5276925308744143305ull}}, {{12408102765114901825ull, 12536302903554820399ull, 15187148838254464894ull, 6596156635930179131ull}}, {{10898442437966239377ull, 6447006592588749691ull, 14372250029390693214ull, 8245195794912723914ull}}, {{4505683514515205659ull, 17864437175650132269ull, 13594342286796571162ull, 5153247371820452446ull}}, {{10243790411571394977ull, 13107174432707889528ull, 7769555821640938145ull, 6441559214775565558ull}}, {{12804738014464243721ull, 2548909985602698198ull, 488572740196396874ull, 8051949018469456948ull}}, {{3391275240612764422ull, 6204754759429074278ull, 9528729999477523854ull, 5032468136543410592ull}}, {{13462466087620731335ull, 16979315486141118655ull, 11910912499346904817ull, 6290585170679263240ull}}, {{12216396591098526265ull, 7389086302394234607ull, 14888640624183631022ull, 7863231463349079050ull}}, {{14552776897077660772ull, 6492920569008725ull, 13917086408542157293ull, 4914519664593174406ull}}, {{4355913066064912253ull, 4619802169138648811ull, 8172985973822920808ull, 6143149580741468008ull}}, {{833205314153752412ull, 5774752711423311014ull, 10216232467278651010ull, 7678936975926835010ull}}, {{14355811376628258970ull, 8220906463066957287ull, 10996831310476544785ull, 4799335609954271881ull}}, {{13333078202357935808ull, 14887819097261084513ull, 18357725156523068885ull, 5999169512442839851ull}}, {{2831289697665256048ull, 4774715816294191930ull, 18335470427226448203ull, 7498961890553549814ull}}, {{6381242079468172934ull, 678354375970176004ull, 6847982998589142223ull, 4686851181595968634ull}}, {{7976552599335216167ull, 14683001025244883717ull, 17783350785091203586ull, 5858563976994960792ull}}, {{14582376767596408113ull, 9130379244701328838ull, 3782444407654452867ull, 7323204971243700991ull}}, {{9004598922640734333ull, 6801288037449273144ull, 116369491140678180ull, 9154006214054626239ull}}, {{5627874326650458958ull, 13474177060260571523ull, 6990259959604005718ull, 5721253883784141399ull}}, {{2423156889885685794ull, 7619349288470938596ull, 4126138931077619244ull, 7151567354730176749ull}}, {{3028946112357107242ull, 9524186610588673245ull, 9769359682274411959ull, 8939459193412720936ull}}, {{4198934329436885979ull, 12870145659259002634ull, 6105849801421507474ull, 5587161995882950585ull}}, {{14472039948650883281ull, 6864310037218977484ull, 12243998270204272247ull, 6983952494853688231ull}}, {{18090049935813604101ull, 3968701528096333951ull, 10693311819327952405ull, 8729940618567110289ull}}, {{18223810237524584419ull, 4786281464273902671ull, 18212534933148440013ull, 5456212886604443930ull}}, {{18168076778478342620ull, 10594537848769766243ull, 13542296629580774208ull, 6820266108255554913ull}}, {{18098409954670540371ull, 13243172310962207804ull, 3092812731693804048ull, 8525332635319443642ull}}, {{2088134184814311924ull, 8276982694351379878ull, 6544693975736015434ull, 5328332897074652276ull}}, {{11833539767872665713ull, 1122856331084449039ull, 8180867469670019293ull, 6660416121343315345ull}}, {{10180238691413444237ull, 6015256432282949203ull, 14837770355514912020ull, 8325520151679144181ull}}, {{4056806172919708696ull, 12982907307031619060ull, 11579449481410513964ull, 5203450094799465113ull}}, {{5071007716149635870ull, 16228634133789523825ull, 639253796480978743ull, 6504312618499331392ull}}, {{10950445663614432742ull, 15674106648809516877ull, 799067245601223429ull, 8130390773124164240ull}}, {{9149871548972714416ull, 12102159664719642000ull, 499417028500764643ull, 5081494233202602650ull}}, {{11437339436215893020ull, 10516013562472164596ull, 9847643322480731612ull, 6351867791503253312ull}}, {{14296674295269866275ull, 13145016953090205745ull, 12309554153100914515ull, 7939834739379066640ull}}, {{2017892406902584566ull, 5909792586467684639ull, 7693471345688071572ull, 4962396712111916650ull}}, {{16357423563910394419ull, 7387240733084605798ull, 393467145255313657ull, 6202995890139895813ull}}, {{11223407418033217216ull, 13845736934783145152ull, 5103519949996529975ull, 7753744862674869766ull}}, {{7014629636270760760ull, 15571114611880547576ull, 17024758024029994946ull, 4846090539171793603ull}}, {{8768287045338450950ull, 10240521227995908662ull, 16669261511610105779ull, 6057613173964742004ull}}, {{1736986769818287879ull, 8188965516567497924ull, 2389832815803080608ull, 7572016467455927506ull}}, {{10308988767991205733ull, 5118103447854686202ull, 6105331528304313284ull, 4732510292159954691ull}}, {{3662863923134231358ull, 6397629309818357753ull, 3019978391953003701ull, 5915637865199943364ull}}, {{9190265922345177101ull, 12608722655700335095ull, 3774972989941254626ull, 7394547331499929205ull}}, {{12661445229106817544ull, 12492137678240097338ull, 4665201127926978093ull, 4621592082187455753ull}}, {{6603434499528746122ull, 1780114042517957961ull, 10443187428336110521ull, 5776990102734319691ull}}, {{12865979142838320557ull, 6836828571574835355ull, 8442298266992750247ull, 7221237628417899614ull}}, {{11470787910120512792ull, 3934349696041156290ull, 1329500796886162001ull, 9026547035522374518ull}}, {{11780928462252708399ull, 13988183606094192441ull, 14665996053336014962ull, 5641591897201484073ull}}, {{891102522533721787ull, 8261857470762964744ull, 4497437011387854991ull, 7051989871501855092ull}}, {{1113878153167152233ull, 5715635820026318026ull, 5621796264234818739ull, 8814987339377318865ull}}, {{5307859864156858050ull, 1266429378302754814ull, 15042837711215231472ull, 5509367087110824290ull}}, {{15858196867050848370ull, 1583036722878443517ull, 9580175102164263532ull, 6886708858888530363ull}}, {{5987688028531396751ull, 1978795903598054397ull, 7363532859277941511ull, 8608386073610662954ull}}, {{6048148027045816922ull, 8154276467389865854ull, 9213894055476101348ull, 5380241296006664346ull}}, {{16783557070662046960ull, 10192845584237332317ull, 2293995532490350877ull, 6725301620008330433ull}}, {{7144388283045394988ull, 17352742998724053301ull, 7479180434040326500ull, 8406627025010413041ull}}, {{6771085686117065819ull, 1622092337347757505ull, 16203702817343673823ull, 5254141890631508150ull}}, {{13075543126073720178ull, 15862673476966860593ull, 11031256484824816470ull, 6567677363289385188ull}}, {{2509370852309986511ull, 10604969809353799934ull, 13789070606031020588ull, 8209596704111731485ull}}, {{15403414837975905281ull, 15851478167700900766ull, 10924012137983081819ull, 5130997940069832178ull}}, {{10030896510615105793ull, 15202661691198738054ull, 4431643135624076466ull, 6413747425087290223ull}}, {{3315248601414106434ull, 9779955077143646760ull, 927867901102707679ull, 8017184281359112779ull}}, {{2072030375883816521ull, 13030000950855861081ull, 16720818502685049963ull, 5010740175849445486ull}}, {{7201723988282158555ull, 11675815170142438447ull, 11677651091501536646ull, 6263425219811806858ull}}, {{4390468966925310290ull, 5371396925823272251ull, 5373691827522145000ull, 7829281524764758573ull}}, {{438200095114624980ull, 3357123078639545157ull, 5664400401415034577ull, 4893300952977974108ull}}, {{5159436137320669128ull, 8808089866726819350ull, 7080500501768793221ull, 6116626191222467635ull}}, {{15672667208505612218ull, 15621798351835912091ull, 4238939608783603622ull, 7645782739028084544ull}}, {{7489573996102313685ull, 5151937951470057153ull, 2649337255489752264ull, 4778614211892552840ull}}, {{13973653513555280010ull, 6439922439337571441ull, 3311671569362190330ull, 5973267764865691050ull}}, {{3632008836661936300ull, 17273275086026740110ull, 13362961498557513720ull, 7466584706082113812ull}}, {{16105063578195873900ull, 10795796928766712568ull, 17575222973453221883ull, 4666615441301321132ull}}, {{1684585399035290758ull, 8883060142531002807ull, 3522284643106975738ull, 5833269301626651416ull}}, {{15940789804076277160ull, 1880453141308977700ull, 4402855803883719673ull, 7291586627033314270ull}}, {{1479243181385794834ull, 6962252445063610030ull, 14726941791709425399ull, 9114483283791642837ull}}, {{14759585043648285483ull, 11268936805805838124ull, 11510181629032084826ull, 5696552052369776773ull}}, {{2737230850805238ull, 4862798970402521848ull, 552668981007942321ull, 7120690065462220967ull}}, {{3421538563506547ull, 10690184731430540214ull, 14525894281542091613ull, 8900862581827776208ull}}, {{13837196516884355304ull, 8987208466357781585ull, 9078683925963807258ull, 5563039113642360130ull}}, {{3461437590823280418ull, 2010638546092451174ull, 2124982870599983265ull, 6953798892052950163ull}}, {{13550169025383876331ull, 7124984201042951871ull, 16491286643532142793ull, 8692248615066187703ull}}, {{15386384668506004563ull, 15982330171720314679ull, 17224583179848671101ull, 5432655384416367314ull}}, {{14621294817205117799ull, 6142854659368229637ull, 12307356937956063069ull, 6790819230520459143ull}}, {{4441560466224233537ull, 12290254342637674951ull, 10772510154017690932ull, 8488524038150573929ull}}, {{9693504319031227817ull, 16904781001003322652ull, 18262033892329526592ull, 5305327523844108705ull}}, {{12116880398789034771ull, 2684232177544601699ull, 8992484310129744529ull, 6631659404805135882ull}}, {{10534414480058905560ull, 7966976240358140028ull, 2017233350807404853ull, 8289574256006419853ull}}, {{15807381086891591783ull, 7285203159437531469ull, 3566613853468321985ull, 5180983910004012408ull}}, {{5924168303332326017ull, 13718189967724302241ull, 4458267316835402481ull, 6476229887505015510ull}}, {{12016896397592795425ull, 3312679404373214089ull, 14796206182899028910ull, 8095287359381269387ull}}, {{593031220854415285ull, 15905482683015422518ull, 6941785855098199116ull, 5059554599613293367ull}}, {{9964661062922794914ull, 1435109280059726531ull, 4065546300445360992ull, 6324443249516616709ull}}, {{7844140310226105738ull, 1793886600074658164ull, 9693618893984089144ull, 7905554061895770886ull}}, {{14125959730746091894ull, 1121179125046661352ull, 1446825790312667811ull, 4940971288684856804ull}}, {{17657449663432614868ull, 15236531961590490402ull, 1808532237890834763ull, 6176214110856071005ull}}, {{12848440042435992777ull, 14433978933560725099ull, 6872351315790931358ull, 7720267638570088756ull}}, {{5724432017308801534ull, 4409550815048065283ull, 13518591609224107907ull, 4825167274106305472ull}}, {{2543854003208614013ull, 900252500382693700ull, 16898239511530134884ull, 6031459092632881840ull}}, {{3179817504010767516ull, 1125315625478367125ull, 2676055315703116989ull, 7539323865791102301ull}}, {{4293228949220423650ull, 3009165275137673405ull, 3978377581528142070ull, 4712077416119438938ull}}, {{9978222204952917466ull, 12984828630776867564ull, 14196344013764953395ull, 5890096770149298672ull}}, {{12472777756191146832ull, 11619349770043696551ull, 17745430017206191744ull, 7362620962686623340ull}}, {{10979286176811545636ull, 14524187212554620689ull, 3735043447798188064ull, 9203276203358279176ull}}, {{18391268906575685783ull, 9077617007846637930ull, 2334402154873867540ull, 5752047627098924485ull}}, {{13765714096364831420ull, 11347021259808297413ull, 7529688712019722329ull, 7190059533873655606ull}}, {{3372084565173875563ull, 348718519478208055ull, 188738853169877104ull, 8987574417342069508ull}}, {{9025081880874754083ull, 217949074673880034ull, 9341333820085948998ull, 5617234010838793442ull}}, {{2057980314238666796ull, 9495808380197125851ull, 2453295238252660439ull, 7021542513548491803ull}}, {{16407533448080497207ull, 7258074456819019409ull, 16901677103097989261ull, 8776928141935614753ull}}, {{3337179377409228899ull, 6842139544725581083ull, 3646019161795161432ull, 5485580088709759221ull}}, {{18006532277043699835ull, 8552674430906976353ull, 9169209970671339694ull, 6856975110887199026ull}}, {{8673107291022461082ull, 1467471001778944634ull, 2238140426484398810ull, 8571218888608998783ull}}, {{10032378075316426080ull, 5528855394539228300ull, 8316366794193831112ull, 5357011805380624239ull}}, {{12540472594145532600ull, 6911069243174035375ull, 5783772474314900986ull, 6696264756725780299ull}}, {{11063904724254527846ull, 17862208590822320027ull, 2618029574466238328ull, 8370330945907225374ull}}, {{4609097443445385952ull, 11163880369263950017ull, 15471326539323562667ull, 5231456841192015858ull}}, {{10373057822734120344ull, 9343164443152549617ull, 10115786137299677526ull, 6539321051490019823ull}}, {{17578008296845038334ull, 2455583517085911213ull, 8033046653197209004ull, 8174151314362524779ull}}, {{13292098194741842911ull, 10758111735033470316ull, 2714811149034561675ull, 5108844571476577987ull}}, {{16615122743427303638ull, 8835953650364449991ull, 17228571991575365806ull, 6386055714345722483ull}}, {{16157217410856741644ull, 1821570026100786681ull, 16924028971041819354ull, 7982569642932153104ull}}, {{3180731854144381672ull, 5750167284740379580ull, 10577518106901137096ull, 4989106026832595690ull}}, {{3975914817680477089ull, 7187709105925474475ull, 3998525596771645562ull, 6236382533540744613ull}}, {{358207503673208457ull, 18208008419261618902ull, 9609843014391944856ull, 7795478166925930766ull}}, {{14058937745077918998ull, 11380005262038511813ull, 1394465865567577631ull, 4872173854328706729ull}}, {{3738614126065235036ull, 9613320559120751863ull, 6354768350386859943ull, 6090217317910883411ull}}, {{61581639154155890ull, 7404964680473551925ull, 3331774419556187025ull, 7612771647388604264ull}}, {{2344331533685041384ull, 16157317971364439713ull, 2082359012222616890ull, 4757982279617877665ull}}, {{7542100435533689633ull, 10973275427350773833ull, 7214634783705659017ull, 5947477849522347081ull}}, {{14039311562844499946ull, 18328280302615855195ull, 13629979498059461675ull, 7434347311902933851ull}}, {{6468726717564118514ull, 9149332179921215545ull, 6212894177073469595ull, 4646467069939333657ull}}, {{12697594415382536047ull, 6824979206474131527ull, 12377803739769224898ull, 5808083837424167071ull}}, {{11260307000800782154ull, 17754596044947440217ull, 10860568656284143218ull, 7260104796780208839ull}}, {{240325695718813981ull, 12969873019329524464ull, 8964024801927791119ull, 9075130995975261049ull}}, {{150203559824258738ull, 15023699664722034646ull, 17131730547273339209ull, 5671956872484538155ull}}, {{9411126486635099230ull, 4944566525620379595ull, 16802977165664286108ull, 7089946090605672694ull}}, {{7152222089866486134ull, 6180708157025474494ull, 11780349420225581827ull, 8862432613257090868ull}}, {{18305196861448717546ull, 1557099588927227606ull, 16586090424495764450ull, 5539020383285681792ull}}, {{13658124039956121124ull, 11169746523013810316ull, 2285868956910153946ull, 6923775479107102241ull}}, {{17072655049945151405ull, 4738811116912487087ull, 7469022214565080337ull, 8654719348883877801ull}}, {{17587938433856801484ull, 14490971994138774189ull, 16197353930171644970ull, 5409199593052423625ull}}, {{8149864987038838143ull, 8890342955818691929ull, 6411634357432392501ull, 6761499491315529532ull}}, {{14799017252225935583ull, 15724614713200752815ull, 8014542946790490626ull, 8451874364144411915ull}}, {{16166914810282291596ull, 14439570214177858413ull, 2703246332530362689ull, 5282421477590257447ull}}, {{6373585457570700782ull, 4214404712440159305ull, 17214115970945117074ull, 6603026846987821808ull}}, {{12578667840390763882ull, 14491377927404974939ull, 3070900889971844726ull, 8253783558734777261ull}}, {{5555824391030533474ull, 4445425186200721433ull, 4225156065446096906ull, 5158614724209235788ull}}, {{11556466507215554747ull, 14780153519605677599ull, 5281445081807621132ull, 6448268405261544735ull}}, {{9833897115592055529ull, 28447825797545383ull, 1990120333832138512ull, 8060335506576930919ull}}, {{13063714724886116562ull, 17779891123465864ull, 8161354236286168426ull, 5037709691610581824ull}}, {{16329643406107645702ull, 9245596900759108138ull, 10201692795357710532ull, 6297137114513227280ull}}, {{11188682220779781320ull, 11556996125948885173ull, 12752115994197138165ull, 7871421393141534100ull}}, {{9298769397201057277ull, 9528965587931747185ull, 17193444533227987161ull, 4919638370713458812ull}}, {{16235147764928709500ull, 16522893003342071885ull, 3045061592825432335ull, 6149547963391823516ull}}, {{6458876650878723163ull, 16041930235750201953ull, 3806326991031790419ull, 7686934954239779395ull}}, {{15566012952867671737ull, 7720363388130182268ull, 73111360181175060ull, 4804334346399862122ull}}, {{1010772117375038055ull, 9650454235162727836ull, 9314761237081244633ull, 6005417932999827652ull}}, {{1263465146718797569ull, 16674753812380797699ull, 11643451546351555791ull, 7506772416249784565ull}}, {{16930566781195106145ull, 17339250160379080417ull, 9583000225683416321ull, 4691732760156115353ull}}, {{7328150421211718969ull, 7839004645191686810ull, 16590436300531658306ull, 5864665950195144191ull}}, {{18383560063369424519ull, 575383769634832704ull, 16126359357237184979ull, 7330832437743930239ull}}, {{4532706005502229033ull, 14554287767325704593ull, 15546263178119093319ull, 9163540547179912799ull}}, {{14362156299507362906ull, 16013958882219647226ull, 16633943513965515180ull, 5727212841987445499ull}}, {{8729323337529427824ull, 1570704529065007417ull, 16180743374029506072ull, 7159016052484306874ull}}, {{15523340190339172684ull, 1963380661331259271ull, 11002557180682106782ull, 8948770065605383593ull}}, {{16619616646603064784ull, 15062170968614200756ull, 18405813283994786498ull, 5592981291003364745ull}}, {{2327776734544279363ull, 9604341673912975138ull, 9172208549711319411ull, 6991226613754205932ull}}, {{12133092955035125012ull, 7393741073963831018ull, 11465260687139149264ull, 8739033267192757415ull}}, {{12194869115324341037ull, 4621088171227394386ull, 14083316957103050146ull, 5461895791995473384ull}}, {{6020214357300650488ull, 14999732250889018791ull, 17604146196378812682ull, 6827369739994341730ull}}, {{2913581928198425206ull, 9526293276756497681ull, 12781810708618740045ull, 8534212174992927163ull}}, {{13350203751192485514ull, 8259776307186505002ull, 5682788683673018576ull, 5333882609370579477ull}}, {{7464382652135831084ull, 10324720383983131253ull, 11715171873018661124ull, 6667353261713224346ull}}, {{13942164333597176759ull, 12905900479978914066ull, 5420592804418550597ull, 8334191577141530433ull}}, {{13325538726925623378ull, 10372030809200515243ull, 14917085548830063883ull, 5208869735713456520ull}}, {{12045237390229641319ull, 8353352493073256150ull, 199612862328028238ull, 6511087169641820651ull}}, {{5833174700932275841ull, 1218318579486794380ull, 14084574133192199010ull, 8138858962052275813ull}}, {{12869106224937448209ull, 5373135130606634391ull, 11108701842458818333ull, 5086786851282672383ull}}, {{11474696762744422357ull, 11328104931685680893ull, 9274191284646135012ull, 6358483564103340479ull}}, {{508312898148364234ull, 14160131164607101117ull, 6981053087380280861ull, 7948104455129175599ull}}, {{2623538570556421598ull, 11155924987093132150ull, 11280687207253757394ull, 4967565284455734749ull}}, {{12502795250050302806ull, 4721534197011639379ull, 265800953785033031ull, 6209456605569668437ull}}, {{11016808044135490603ull, 1290231727837161320ull, 4943937210658679193ull, 7761820756962085546ull}}, {{6885505027584681627ull, 12335609875966695585ull, 7701646775089062399ull, 4851137973101303466ull}}, {{13218567302908239938ull, 10807826326530981577ull, 403686432006552191ull, 6063922466376629333ull}}, {{2688151073353136210ull, 8898096889736339068ull, 5116294058435578143ull, 7579903082970786666ull}}, {{10903466457700485939ull, 12478839583726293773ull, 7809369804949624243ull, 4737439426856741666ull}}, {{18241019090552995328ull, 10986863461230479312ull, 538340219332254496ull, 5921799283570927083ull}}, {{4354529789481692544ull, 13733579326538099141ull, 14507983329447481832ull, 7402249104463658853ull}}, {{5027424127639751792ull, 8583487079086311963ull, 11373332590118370097ull, 4626405690289786783ull}}, {{1672594141122301836ull, 15341044867285277858ull, 9604979719220574717ull, 5783007112862233479ull}}, {{11314114713257653103ull, 5341248028824433610ull, 7394538630598330493ull, 7228758891077791849ull}}, {{4919271354717290571ull, 11288246054457929917ull, 13854859306675301020ull, 9035948613847239811ull}}, {{5380387605912000559ull, 16278525820890982006ull, 6353444057458369185ull, 5647467883654524882ull}}, {{15948856544244776506ull, 6513099220831563795ull, 17165177108677737290ull, 7059334854568156102ull}}, {{15324384661878582729ull, 17364746062894230552ull, 12233099348992395804ull, 8824168568210195128ull}}, {{9577740413674114206ull, 1629594252454118287ull, 7645687093120247378ull, 5515105355131371955ull}}, {{7360489498665254853ull, 11260364852422423667ull, 4945422847972921318ull, 6893881693914214944ull}}, {{4588925854904180662ull, 4852084028673253776ull, 6181778559966151648ull, 8617352117392768680ull}}, {{2868078659315112914ull, 3032552517920783610ull, 3863611599978844780ull, 5385845073370480425ull}}, {{12808470360998666950ull, 3790690647400979512ull, 9441200518400943879ull, 6732306341713100531ull}}, {{16010587951248333688ull, 126677290823836486ull, 7189814629573791945ull, 8415382927141375664ull}}, {{5394931451102820651ull, 11608388352833367564ull, 4493634143483619965ull, 5259614329463359790ull}}, {{6743664313878525814ull, 675427385759545743ull, 14840414716209300765ull, 6574517911829199737ull}}, {{3817894373920769363ull, 5455970250626820083ull, 4715460339979462244ull, 8218147389786499672ull}}, {{80340974486786900ull, 12633353443496538360ull, 2947162712487163902ull, 5136342118616562295ull}}, {{100426218108483625ull, 6568319767515897142ull, 17519011445891118590ull, 6420427648270702868ull}}, {{9348904809490380339ull, 17433771746249647235ull, 3452020233654346621ull, 8025534560338378586ull}}, {{3537222496717793760ull, 13201950350619723474ull, 6769198664461354542ull, 5015959100211486616ull}}, {{13644900157752018008ull, 7279065901419878534ull, 8461498330576693178ull, 6269948875264358270ull}}, {{7832753160335246702ull, 18322204413629623976ull, 1353500876366090664ull, 7837436094080447838ull}}, {{4895470725209529189ull, 11451377758518514985ull, 14680996103010970377ull, 4898397558800279898ull}}, {{10731024424939299390ull, 479164142865980019ull, 9127873091908937164ull, 6122996948500349873ull}}, {{8802094512746736333ull, 598955178582475024ull, 16021527383313559359ull, 7653746185625437341ull}}, {{5501309070466710209ull, 7291876014255128746ull, 12319297623784668551ull, 4783591366015898338ull}}, {{16100008374938163569ull, 4503158999391523028ull, 6175749992876059881ull, 5979489207519872923ull}}, {{1678266394963152845ull, 10240634767666791690ull, 3108001472667686947ull, 7474361509399841154ull}}, {{5660602515279358432ull, 4094553720578050854ull, 6554186938844692246ull, 4671475943374900721ull}}, {{16299125180953973848ull, 14341564187577339375ull, 12804419691983253211ull, 5839344929218625901ull}}, {{15762220457765079406ull, 13315269216044286315ull, 2170466559696902802ull, 7299181161523282377ull}}, {{15091089553778961353ull, 7420714483200582086ull, 7324769218048516407ull, 9123976451904102971ull}}, {{4820244952684462942ull, 11555475579641445660ull, 2272137752066628802ull, 5702485282440064357ull}}, {{6025306190855578677ull, 5220972437697031267ull, 7451858208510673907ull, 7128106603050080446ull}}, {{2919946720142085442ull, 1914529528693901180ull, 91450723783566576ull, 8910133253812600558ull}}, {{11048338736943579210ull, 1196580955433688237ull, 13892214757646892822ull, 5568833283632875348ull}}, {{18422109439606861916ull, 10719098231146886104ull, 17365268447058616027ull, 6961041604541094185ull}}, {{4580892725799025779ull, 8787186770506219727ull, 7871527503541106322ull, 8701302005676367732ull}}, {{9780586981265472968ull, 10103677749993775233ull, 14143076726567967259ull, 5438313753547729832ull}}, {{16837419745009229114ull, 8017911169064831137ull, 17678845908209959074ull, 6797892191934662290ull}}, {{7211716625979372680ull, 799016924476263114ull, 12875185348407673035ull, 8497365239918327863ull}}, {{9119008909664495829ull, 16640286642293522110ull, 14964519870395877502ull, 5310853274948954914ull}}, {{2175389100225843979ull, 11576986266012126830ull, 9482277801140071070ull, 6638566593686193643ull}}, {{11942608412137080781ull, 5247860795660382729ull, 7241161232997700934ull, 8298208242107742054ull}}, {{546601229944593632ull, 17114971052569902918ull, 18360783825905726795ull, 5186380151317338783ull}}, {{9906623574285517848ull, 16782027797284990743ull, 18339293763954770590ull, 6482975189146673479ull}}, {{7771593449429509406ull, 11754162709751462621ull, 18312431186516075334ull, 8103718986433341849ull}}, {{7163088915107137331ull, 2734665675167276234ull, 4527740463931465228ull, 5064824366520838656ull}}, {{18177233180738697472ull, 3418332093959095292ull, 5659675579914331535ull, 6331030458151048320ull}}, {{4274797402213820224ull, 18107973172731032828ull, 7074594474892914418ull, 7913788072688810400ull}}, {{11895120413238413448ull, 15929169251384283421ull, 4421621546808071511ull, 4946117545430506500ull}}, {{1033842461265853098ull, 15299775545802966373ull, 5527026933510089389ull, 6182646931788133125ull}}, {{5903989095009704276ull, 5289661376971544254ull, 11520469685314999641ull, 7728308664735166406ull}}, {{17525051239663228885ull, 14835253406675684918ull, 2588607534894486871ull, 4830192915459479004ull}}, {{12682942012724260298ull, 13932380739917218244ull, 3235759418618108589ull, 6037741144324348755ull}}, {{15853677515905325372ull, 3580417869614359093ull, 17879757328554799449ull, 7547176430405435943ull}}, {{12214391456654522310ull, 13766976214577444193ull, 18092377357987831511ull, 4716985269003397464ull}}, {{1432931265535989175ull, 12597034249794417338ull, 4168727623775237773ull, 5896231586254246831ull}}, {{11014536118774762277ull, 1911234756960857960ull, 599223511291659313ull, 7370289482817808539ull}}, {{13768170148468452846ull, 7000729464628460354ull, 14584087444396737853ull, 9212861853522260673ull}}, {{13216792361220170933ull, 6681298924606481673ull, 2197525625106879302ull, 5758038658451412921ull}}, {{2685932396243049954ull, 17574995692612877900ull, 7358593049810987031ull, 7197548323064266151ull}}, {{3357415495303812442ull, 17357058597338709471ull, 4586555293836345885ull, 8996935403830332689ull}}, {{9015913712205964633ull, 13154004632550387371ull, 14395812104716185938ull, 5623084627393957930ull}}, {{6658206121830067887ull, 7219133753833208406ull, 8771393094040456615ull, 7028855784242447413ull}}, {{17546129689142360666ull, 4412231173864122603ull, 15575927385977958673ull, 8786069730303059266ull}}, {{8660488046500281465ull, 14286859529733546387ull, 14346640634663612074ull, 5491293581439412041ull}}, {{6213924039697963927ull, 8635202375312157176ull, 4098242738047351381ull, 6864116976799265052ull}}, {{7767405049622454908ull, 15405688987567584374ull, 5122803422559189226ull, 8580146220999081315ull}}, {{242942137586646414ull, 14240241635657128138ull, 895909129885799314ull, 5362591388124425822ull}}, {{9527049708838083825ull, 8576930007716634364ull, 10343258449212024951ull, 6703239235155532277ull}}, {{11908812136047604781ull, 6109476491218405051ull, 17540759079942419093ull, 8379049043944415346ull}}, {{5137164575816059036ull, 6124265816225197109ull, 15574660443391399837ull, 5236905652465259591ull}}, {{11033141738197461699ull, 12267018288708884290ull, 14856639535811861892ull, 6546132065581574489ull}}, {{4568055135892051316ull, 15333772860886105363ull, 4735741364482663653ull, 8182665081976968112ull}}, {{549191450718838121ull, 11889451047267509804ull, 2959838352801664783ull, 5114165676235605070ull}}, {{686489313398547651ull, 10250127790656999351ull, 12923169977856856787ull, 6392707095294506337ull}}, {{14693169697030348275ull, 8200973719893861284ull, 2318904417038907272ull, 7990883869118132922ull}}, {{18406603097498743480ull, 5125608574933663302ull, 6061001279076704949ull, 4994302418198833076ull}}, {{13784881835018653542ull, 11018696737094467032ull, 7576251598845881186ull, 6242878022748541345ull}}, {{17231102293773316928ull, 4549998884513307982ull, 14082000516984739387ull, 7803597528435676681ull}}, {{6157752915180935176ull, 537906293607123537ull, 1883721295474380261ull, 4877248455272297926ull}}, {{12308877162403556874ull, 5284068885436292325ull, 11578023656197751134ull, 6096560569090372407ull}}, {{1551038397722282380ull, 15828458143650141215ull, 9860843551819801013ull, 7620700711362965509ull}}, {{7886928026217508344ull, 12198629348995032211ull, 8468870229101069585ull, 4762937944601853443ull}}, {{5246974014344497526ull, 1413228630961626552ull, 5974401767948949078ull, 5953672430752316804ull}}, {{6558717517930621907ull, 10989907825556808998ull, 7468002209936186347ull, 7442090538440396005ull}}, {{17934256503988802404ull, 4562849381759311671ull, 6973344390423810419ull, 4651306586525247503ull}}, {{17806134611558615101ull, 1091875708771751685ull, 4104994469602375120ull, 5814133233156559379ull}}, {{8422610209166105164ull, 1364844635964689607ull, 519557068575580996ull, 7267666541445699224ull}}, {{5916576743030243551ull, 1706055794955862009ull, 649446335719476245ull, 9084583176807124030ull}}, {{15227075510462371979ull, 3372127881061107707ull, 14240962015106836365ull, 5677864485504452518ull}}, {{14422158369650577070ull, 8826845869753772538ull, 8577830482028769648ull, 7097330606880565648ull}}, {{8804325925208445530ull, 11033557337192215673ull, 10722288102535962060ull, 8871663258600707060ull}}, {{17031918749323748216ull, 16119345372599910603ull, 15924802100939752095ull, 5544789536625441912ull}}, {{16678212418227297366ull, 15537495697322500350ull, 1459258552465138503ull, 6930986920781802391ull}}, {{11624393485929345900ull, 14810183603225737534ull, 15659131245863586841ull, 8663733650977252988ull}}, {{2653559910278453283ull, 2338835724375004103ull, 563584991809965968ull, 5414833531860783118ull}}, {{17152007943130230316ull, 2923544655468755128ull, 9927853276617233268ull, 6768541914825978897ull}}, {{2993265855203236279ull, 3654430819335943911ull, 17021502614198929489ull, 8460677393532473621ull}}, {{8788320187143104531ull, 13813234308153434704ull, 12944282143088024882ull, 5287923370957796013ull}}, {{10985400233928880663ull, 8043170848337017572ull, 2345294623577867391ull, 6609904213697245017ull}}, {{13731750292411100829ull, 5442277541993884061ull, 7543304297899722143ull, 8262380267121556271ull}}, {{10888186941970631970ull, 10318952491387259394ull, 11632094213828408195ull, 5163987666950972669ull}}, {{4386861640608514155ull, 8287004595806686339ull, 705059712003346532ull, 6454984583688715837ull}}, {{871891032333254789ull, 10358755744758357924ull, 5493010658431571069ull, 8068730729610894796ull}}, {{9768303932063060051ull, 8780065349687667654ull, 12656503698374507726ull, 5042956706006809247ull}}, {{2987007878224049256ull, 1751709650254808760ull, 11208943604540746754ull, 6303695882508511559ull}}, {{3733759847780061570ull, 11413009099673286758ull, 9399493487248545538ull, 7879619853135639449ull}}, {{16168657960144702193ull, 11744816705723192127ull, 17403898475598810721ull, 4924762408209774655ull}}, {{15599136431753489838ull, 845962826871826447ull, 17143187076071125498ull, 6155953010262218319ull}}, {{14887234521264474393ull, 10280825570444558867ull, 16817297826661518968ull, 7694941262827772899ull}}, {{6998678566576602544ull, 6425515981527849292ull, 8204968132449755403ull, 4809338289267358062ull}}, {{8748348208220753180ull, 3420208958482423711ull, 1032838128707418446ull, 6011672861584197578ull}}, {{6323749241848553570ull, 13498633234957805447ull, 10514419697739048865ull, 7514591076980246972ull}}, {{10869872303796427838ull, 1519116744207546548ull, 15794884347941681349ull, 4696619423112654357ull}}, {{13587340379745534797ull, 6510581948686821089ull, 5908547379644937974ull, 5870774278890817947ull}}, {{3149117419399754784ull, 17361599472713302170ull, 2773998206128784563ull, 7338467848613522434ull}}, {{13159768811104469288ull, 17090313322464239808ull, 12690869794515756512ull, 9173084810766903042ull}}, {{8224855506940293305ull, 10681445826540149880ull, 12543479639999735724ull, 5733178006729314401ull}}, {{10281069383675366631ull, 13351807283175187350ull, 1844291494717505943ull, 7166472508411643002ull}}, {{3627964692739432481ull, 12078073085541596284ull, 11528736405251658237ull, 8958090635514553752ull}}, {{11490849969816921109ull, 9854638687677191629ull, 7205460253282286398ull, 5598806647196596095ull}}, {{528504406988987674ull, 3094926322741713729ull, 4395139298175470094ull, 6998508308995745119ull}}, {{5272316527163622496ull, 13092029940281917969ull, 882238104291949713ull, 8748135386244681399ull}}, {{14824412875545733820ull, 1264989685035116874ull, 7468927842823550427ull, 5467584616402925874ull}}, {{9307144057577391467ull, 15416295161576059805ull, 112787766674662225ull, 6834480770503657343ull}}, {{16245616090399127238ull, 5435310896687911044ull, 13976042763625491494ull, 8543100963129571678ull}}, {{930138019644678716ull, 17232127365712108115ull, 4123340708838544279ull, 5339438101955982299ull}}, {{14997730579838012107ull, 16928473188712747239ull, 542489867620792445ull, 6674297627444977874ull}}, {{14135477206370127229ull, 7325533430608770337ull, 9901484371380766365ull, 8342872034306222342ull}}, {{1917144226340247663ull, 6884301403344175413ull, 1576741713685591074ull, 5214295021441388964ull}}, {{7008116301352697482ull, 17828748791034995074ull, 1970927142106988842ull, 6517868776801736205ull}}, {{17983517413545647661ull, 13062563951938968034ull, 7075344946061123957ull, 8147335971002170256ull}}, {{15851384401893417692ull, 10469945479175548973ull, 4422090591288202473ull, 5092084981876356410ull}}, {{5979172447084608403ull, 17699117867396824121ull, 14750985275965028899ull, 6365106227345445512ull}}, {{12085651577283148407ull, 17512211315818642247ull, 18438731594956286124ull, 7956382784181806890ull}}, {{14471061263443049611ull, 1721760035531875596ull, 16135893265275066732ull, 4972739240113629306ull}}, {{18088826579303812013ull, 2152200044414844495ull, 10946494544739057607ull, 6215924050142036633ull}}, {{17999347205702377113ull, 16525308110800719331ull, 18294804199351209912ull, 7769905062677545791ull}}, {{8943748994350291744ull, 10328317569250449582ull, 18351781652235588051ull, 4856190664173466119ull}}, {{1956314206083088871ull, 8298710943135674074ull, 18328041046867097160ull, 6070238330216832649ull}}, {{11668764794458636897ull, 10373388678919592592ull, 9074993253301707738ull, 7587797912771040812ull}}, {{7292977996536648061ull, 11095053942752133274ull, 14895242820168343144ull, 4742373695481900507ull}}, {{18339594532525585884ull, 13868817428440166592ull, 14007367506783041026ull, 5927967119352375634ull}}, {{4477749091947430739ull, 8112649748695432433ull, 8285837346624025475ull, 7409958899190469543ull}}, {{14327808228535613972ull, 2764563083720951318ull, 12096177369281097778ull, 4631224311994043464ull}}, {{8686388248814741657ull, 12679075891505964956ull, 15120221711601372222ull, 5789030389992554330ull}}, {{10857985311018427071ull, 6625472827527680387ull, 9676905102646939470ull, 7236287987490692913ull}}, {{8960795620345645935ull, 17505213071264376292ull, 16707817396736062241ull, 9045359984363366141ull}}, {{14823869299570804517ull, 4023229141899153326ull, 12748228882173732853ull, 5653349990227103838ull}}, {{9306464587608729838ull, 9640722445801329562ull, 6711914065862390258ull, 7066687487783879798ull}}, {{2409708697656136490ull, 2827531020396886145ull, 17613264619182763631ull, 8833359359729849747ull}}, {{13035282982103555066ull, 8684735915389135696ull, 8702447377775533317ull, 5520849599831156092ull}}, {{16294103727629443833ull, 15467605912663807524ull, 10878059222219416646ull, 6901061999788945115ull}}, {{1920885585827253175ull, 10111135353974983598ull, 8985888009346882904ull, 8626327499736181394ull}}, {{15035611546424196947ull, 6319459596234364748ull, 10227866024269189719ull, 5391454687335113371ull}}, {{347770359320694567ull, 3287638476865568032ull, 8173146511909099245ull, 6739318359168891714ull}}, {{434712949150868209ull, 8721234114509347944ull, 993061103031598248ull, 8424147948961114643ull}}, {{271695593219292631ull, 5450771321568342465ull, 16761564253890606569ull, 5265092468100696651ull}}, {{4951305509951503692ull, 11425150170387815985ull, 16340269298935870307ull, 6581365585125870814ull}}, {{10800817905866767519ull, 9669751694557382077ull, 11201964586815062076ull, 8226706981407338518ull}}, {{9056354200380423652ull, 15266966845953139606ull, 2389541848332025893ull, 5141691863379586574ull}}, {{2097070713620753756ull, 5248650502159260796ull, 12210299347269808175ull, 6427114829224483217ull}}, {{2621338392025942195ull, 1949127109271688091ull, 1427816128805096507ull, 8033893536530604022ull}}, {{17779237559512071536ull, 17359105507790662720ull, 14727443135785349028ull, 5021183460331627513ull}}, {{3777302875680537804ull, 3252137811028776785ull, 4574245864449522574ull, 6276479325414534392ull}}, {{9333314613028060159ull, 13288544300640746789ull, 5717807330561903217ull, 7845599156768167990ull}}, {{8139164642356231552ull, 1387811160259384887ull, 17408687636883353223ull, 4903499472980104993ull}}, {{5562269784517901535ull, 15569822005606394821ull, 7925801490822027816ull, 6129374341225131242ull}}, {{11564523249074764823ull, 1015533433298441910ull, 683879826672758963ull, 7661717926531414053ull}}, {{2616141012244340111ull, 16775609460307383858ull, 2733267900884168303ull, 4788573704082133783ull}}, {{12493548302160200946ull, 16357825806956841918ull, 17251642931387374091ull, 5985717130102667228ull}}, {{6393563340845475375ull, 15835596240268664494ull, 3117809590524665998ull, 7482146412628334036ull}}, {{17831035143310585821ull, 5285561631740527404ull, 11172003030932692057ull, 4676341507892708772ull}}, {{3842049855428680661ull, 11218638058103047160ull, 13965003788665865071ull, 5845426884865885965ull}}, {{4802562319285850826ull, 9411611554201421046ull, 3621196680550167627ull, 7306783606082357457ull}}, {{15226574935962089340ull, 7152828424324388403ull, 9138181869115097438ull, 9133479507602946821ull}}, {{7210766325762611886ull, 18305575820484906464ull, 8017206677410629850ull, 5708424692251841763ull}}, {{9013457907203264857ull, 13658597738751357272ull, 5409822328335899409ull, 7135530865314802204ull}}, {{11266822384004081071ull, 3238189118157032878ull, 6762277910419874262ull, 8919413581643502755ull}}, {{2430077971575162766ull, 15858926254130309261ull, 1920580684798727461ull, 5574633488527189222ull}}, {{7649283482896341361ull, 5988599762380722864ull, 11624097892853185135ull, 6968291860658986527ull}}, {{9561604353620426701ull, 2874063684548515676ull, 9918436347639093515ull, 8710364825823733159ull}}, {{15199374757867542496ull, 17937190867338679961ull, 13116551744915515302ull, 5443978016139833224ull}}, {{5164160392052264408ull, 13198116547318574144ull, 16395689681144394128ull, 6804972520174791530ull}}, {{6455200490065330510ull, 16497645684148217680ull, 11271240064575716852ull, 8506215650218489413ull}}, {{4034500306290831569ull, 1087656515737860242ull, 9350368049573516985ull, 5316384781386555883ull}}, {{14266497419718315269ull, 5971256663099713206ull, 7076274043539508327ull, 6645480976733194854ull}}, {{8609749737793118278ull, 2852384810447253604ull, 18068714591279161217ull, 8306851220916493567ull}}, {{14604465622975474732ull, 13311955552598003262ull, 18210475647190557616ull, 5191782013072808479ull}}, {{9032209991864567607ull, 16639944440747504078ull, 18151408540560809116ull, 6489727516341010599ull}}, {{2066890452975933701ull, 2353186477224828482ull, 18077574657273623492ull, 8112159395426263249ull}}, {{5903492551537346467ull, 10694113585120293609ull, 4380955133154932826ull, 5070099622141414531ull}}, {{11991051707849070988ull, 4144269944545591203ull, 864507898016278129ull, 6337624527676768164ull}}, {{10377128616383950831ull, 9792023449109376908ull, 1080634872520347661ull, 7922030659595960205ull}}, {{15709077422094745077ull, 8425857664907054519ull, 2981239804538911240ull, 4951269162247475128ull}}, {{15024660759191043442ull, 10532322081133818149ull, 3726549755673639050ull, 6189086452809343910ull}}, {{4945767893706640591ull, 3942030564562496879ull, 13881559231446824621ull, 7736358066011679887ull}}, {{10008633961207732226ull, 4769612112065254501ull, 15593503547295347244ull, 4835223791257299929ull}}, {{17122478469937053186ull, 5962015140081568126ull, 5656821378837020343ull, 6044029739071624912ull}}, {{12179726050566540674ull, 2840832906674572254ull, 7071026723546275429ull, 7555037173839531140ull}}, {{3000642763176700018ull, 4081363575885301611ull, 13642763739071197951ull, 4721898233649706962ull}}, {{17585861509253038734ull, 490018451429239109ull, 7830082636984221631ull, 5902372792062133703ull}}, {{8147268831284134705ull, 14447581119568712599ull, 5175917277802889134ull, 7377965990077667129ull}}, {{5572400020677780477ull, 8836104362606114941ull, 11081582615680999322ull, 9222457487597083911ull}}, {{5788593022137306750ull, 10134251245056209742ull, 13843518162441706432ull, 5764035929748177444ull}}, {{16459113314526409246ull, 12667814056320262177ull, 17304397703052133040ull, 7205044912185221805ull}}, {{6738833587875847845ull, 15834767570400327722ull, 7795439073533002588ull, 9006306140231527257ull}}, {{8823457010849792808ull, 673357694645429018ull, 16401364467026596378ull, 5628941337644704535ull}}, {{1805949226707465201ull, 10065069155161562081ull, 15890019565355857568ull, 7036176672055880669ull}}, {{6869122551811719405ull, 12581336443951952601ull, 6027466401412658248ull, 8795220840069850837ull}}, {{15822416640950794389ull, 7863335277469970375ull, 6073009510096605357ull, 5497013025043656773ull}}, {{15166334782761105082ull, 14440855115264850873ull, 12202947906048144600ull, 6871266281304570966ull}}, {{5122860423169217640ull, 18051068894081063592ull, 6030312845705404942ull, 8589082851630713708ull}}, {{3201787764480761025ull, 6670232040373276841ull, 12992317565420653897ull, 5368176782269196067ull}}, {{8613920724028339185ull, 12949476068893983955ull, 11628710938348429467ull, 6710220977836495084ull}}, {{6155714886608036077ull, 11575159067690092040ull, 14535888672935536834ull, 8387776222295618855ull}}, {{3847321804130022549ull, 11846160435733695429ull, 16002459448225792377ull, 5242360138934761784ull}}, {{9420838273589916090ull, 972642489384955574ull, 1556330236572688856ull, 6552950173668452231ull}}, {{2552675805132619304ull, 1215803111731194468ull, 15780470850998024782ull, 8191187717085565288ull}}, {{10818794415062662873ull, 14594935000114160254ull, 9862794281873765488ull, 5119492323178478305ull}}, {{4300120981973552783ull, 18243668750142700318ull, 16940178870769594764ull, 6399365403973097881ull}}, {{14598523264321716787ull, 4357841863968823781ull, 7340165533179829744ull, 7999206754966372352ull}}, {{11429920049414766944ull, 2723651164980514863ull, 4587603458237393590ull, 4999504221853982720ull}}, {{9675714043341070776ull, 12627935993080419387ull, 5734504322796741987ull, 6249380277317478400ull}}, {{7482956535748950566ull, 11173233972923136330ull, 7168130403495927484ull, 7811725346646848000ull}}, {{9288533853270482008ull, 16206643269931736014ull, 4480081502184954677ull, 4882328341654280000ull}}, {{2387295279733326702ull, 6423246032132506306ull, 5600101877731193347ull, 6102910427067850000ull}}, {{12207491136521434185ull, 3417371521738244978ull, 7000127347163991684ull, 7628638033834812500ull}}, {{12241367978753284270ull, 11359229237941178919ull, 13598451628832270610ull, 4767898771146757812ull}}, {{10690023955014217433ull, 4975664510571697841ull, 16998064536040338263ull, 5959873463933447265ull}}, {{17974215962195159695ull, 1607894619787234397ull, 7412522614768259117ull, 7449841829916809082ull}}, {{13539727985585668762ull, 3310777146580715450ull, 9244512652657549852ull, 4656151143698005676ull}}, {{7701287945127310144ull, 4138471433225894313ull, 11555640815821937315ull, 5820188929622507095ull}}, {{14238295949836525584ull, 561403273104979987ull, 9832865001350033740ull, 7275236162028133869ull}}, {{13186183918868269076ull, 701754091381224984ull, 16902767270114930079ull, 9094045202535167336ull}}, {{8241364949292668173ull, 7356125334754347471ull, 10564229543821831299ull, 5683778251584479585ull}}, {{5690020168188447312ull, 4583470650015546435ull, 17816972948204677028ull, 7104722814480599481ull}}, {{2500839191808171235ull, 5729338312519433044ull, 8436158129973682573ull, 8880903518100749352ull}}, {{10786396531734882830ull, 5886679454538339604ull, 5272598831233551608ull, 5550564698812968345ull}}, {{13482995664668603538ull, 7358349318172924505ull, 11202434557469327414ull, 6938205873516210431ull}}, {{3018686525553590710ull, 18421308684570931440ull, 9391357178409271363ull, 8672757341895263039ull}}, {{1886679078470994194ull, 9207474918643138198ull, 12787127264146876458ull, 5420473338684539399ull}}, {{11581720884943518550ull, 2285971611449146939ull, 11372223061756207669ull, 6775591673355674249ull}}, {{9865465087752010284ull, 7469150532738821578ull, 380220771913095874ull, 8469489591694592812ull}}, {{10777601698272394332ull, 9279905101389151390ull, 9461010019300460729ull, 5293430994809120507ull}}, {{4248630085985717106ull, 16211567395163827142ull, 7214576505698188007ull, 6616788743511400634ull}}, {{14534159644336922191ull, 15652773225527396023ull, 18241592668977510817ull, 8270985929389250792ull}}, {{16001378805351658225ull, 2865454238313540658ull, 11400995418110944261ull, 5169366205868281745ull}}, {{10778351469834796974ull, 8193503816319313727ull, 416186217356516614ull, 6461707757335352182ull}}, {{8861253318866108313ull, 1018507733544366351ull, 9743604808550421576ull, 8077134696669190227ull}}, {{12455812351932399552ull, 636567333465228969ull, 3783909996130319533ull, 5048209185418243892ull}}, {{1734707384633335728ull, 5407395185258924116ull, 4729887495162899416ull, 6310261481772804865ull}}, {{2168384230791669659ull, 6759243981573655145ull, 10524045387381012174ull, 7887826852216006081ull}}, {{12884455190313263297ull, 18059585543765698177ull, 18106743413181602368ull, 4929891782635003800ull}}, {{2270510932609415409ull, 4127737855997571106ull, 4186685192767451345ull, 6162364728293754751ull}}, {{12061510702616545070ull, 9771358338424351786ull, 621670472531926277ull, 7702955910367193439ull}}, {{12150130207562728573ull, 8412941970728913818ull, 7306073072973535779ull, 4814347443979495899ull}}, {{5964290722598634908ull, 5904491444983754369ull, 4520905322789531820ull, 6017934304974369874ull}}, {{12067049421675681539ull, 7380614306229692961ull, 14874503690341690583ull, 7522417881217962342ull}}, {{624376860906219106ull, 11530412969034639957ull, 4684878788036168710ull, 4701511175761226464ull}}, {{5392157094560161786ull, 5189644174438524138ull, 5856098485045210888ull, 5876888969701533080ull}}, {{15963568405054978041ull, 6487055218048155172ull, 7320123106306513610ull, 7346111212126916350ull}}, {{1507716432609170935ull, 17332191059414969774ull, 18373525919737917820ull, 9182639015158645437ull}}, {{14777380825662895546ull, 1609247375279580300ull, 13789296709049892590ull, 5739149384474153398ull}}, {{24981958369067817ull, 11234931255954251184ull, 8013248849457589929ull, 7173936730592691748ull}}, {{31227447961334771ull, 208606014660650268ull, 10016561061821987412ull, 8967420913240864685ull}}, {{9242889191830610040ull, 9353750796017682225ull, 8566193672852436084ull, 5604638070775540428ull}}, {{16165297508215650454ull, 11692188495022102781ull, 10707742091065545105ull, 7005797588469425535ull}}, {{6371563829987399355ull, 780177563495464765ull, 8772991595404543478ull, 8757246985586781919ull}}, {{6288070402955818549ull, 14322669032466829190ull, 12400648774768921529ull, 5473279365991738699ull}}, {{17083460040549548994ull, 4068278235301372775ull, 10889124950033764008ull, 6841599207489673374ull}}, {{16742639032259548339ull, 5085347794126715969ull, 4388034150687429202ull, 8551999009362091718ull}}, {{3546620367521135856ull, 7790028389756585385ull, 16577579399461806963ull, 5344999380851307323ull}}, {{9044961477828807724ull, 5125849468768343827ull, 16110288230899870800ull, 6681249226064134154ull}}, {{6694515828858621751ull, 6407311835960429784ull, 10914488251770062692ull, 8351561532580167693ull}}, {{4184072393036638594ull, 13227941934330044423ull, 9127398166569983134ull, 5219725957862604808ull}}, {{618404472868410339ull, 7311555381057779721ull, 11409247708212478918ull, 6524657447328256010ull}}, {{5384691609512900827ull, 18362816263177000459ull, 5038187598410822839ull, 8155821809160320013ull}}, {{1059589246731869065ull, 18394289192126707143ull, 5454710258220458226ull, 5097388630725200008ull}}, {{15159544613697000043ull, 13769489453303608120ull, 6818387822775572783ull, 6371735788406500010ull}}, {{502686693411698438ull, 12600175798202122247ull, 17746356815324241787ull, 7964669735508125012ull}}, {{7231708211023393380ull, 5569266864662632452ull, 1868100972722875309ull, 4977918584692578133ull}}, {{9039635263779241725ull, 11573269599255678469ull, 6946812234330982040ull, 6222398230865722666ull}}, {{15911230098151440060ull, 14466586999069598086ull, 17906887329768503358ull, 7777997788582153332ull}}, {{5332832792917262134ull, 4429930855991110900ull, 1968432544250538791ull, 4861248617863845833ull}}, {{6666040991146577667ull, 925727551561500721ull, 7072226698740561393ull, 6076560772329807291ull}}, {{12944237257360609988ull, 5768845457879263805ull, 4228597354998313837ull, 7595700965412259114ull}}, {{10395991295064075194ull, 5911371420388233830ull, 7254559365301334052ull, 4747313103382661946ull}}, {{3771617081975318185ull, 7389214275485292288ull, 18291571243481443373ull, 5934141379228327432ull}}, {{4714521352469147731ull, 13848203862784003264ull, 4417719980642252600ull, 7417676724035409291ull}}, {{2946575845293217332ull, 8655127414240002040ull, 455231978687713923ull, 4636047952522130807ull}}, {{3683219806616521665ull, 6207223249372614646ull, 14404098028641806116ull, 5795059940652663508ull}}, {{13827396795125427889ull, 7759029061715768307ull, 18005122535802257645ull, 7243824925815829385ull}}, {{12672559975479396957ull, 14310472345572098288ull, 8671345114470658344ull, 9054781157269786732ull}}, {{7920349984674623099ull, 8944045215982561430ull, 14642962733398937273ull, 5659238223293616707ull}}, {{677065443988503065ull, 15791742538405589692ull, 13692017398321283687ull, 7074047779117020884ull}}, {{846331804985628831ull, 15127992154579599211ull, 17115021747901604609ull, 8842559723896276105ull}}, {{16669858442611875684ull, 2537466068971167650ull, 3779359564797421025ull, 5526599827435172566ull}}, {{11613951016410068796ull, 7783518604641347467ull, 13947571492851552089ull, 6908249784293965707ull}}, {{9905752752085198091ull, 14341084274229072238ull, 12822778347637052207ull, 8635312230367457134ull}}, {{1579409451625860903ull, 15880706699034252005ull, 3402550448845769725ull, 5397070143979660709ull}}, {{6585947832959714033ull, 6015825318510651294ull, 8864874079484600061ull, 6746337679974575886ull}}, {{17455806828054418349ull, 12131467666565702021ull, 1857720562500974268ull, 8432922099968219858ull}}, {{13215722276747705420ull, 16805539328458339571ull, 5772761369990496821ull, 5270576312480137411ull}}, {{11907966827507243871ull, 7171866105290760752ull, 2604265694060733123ull, 6588220390600171764ull}}, {{14884958534384054839ull, 4353146613186063036ull, 3255332117575916404ull, 8235275488250214705ull}}, {{79727047135258467ull, 11944088670096065206ull, 13563797619553417512ull, 5147047180156384190ull}}, {{9323030845773848891ull, 14930110837620081507ull, 7731374987586996082ull, 6433808975195480238ull}}, {{7042102538789923210ull, 9439266510170326076ull, 440846697628969295ull, 8042261218994350298ull}}, {{13624686123598477814ull, 12817070596497535653ull, 4887215204445493713ull, 5026413261871468936ull}}, {{3195799599215933556ull, 2186280190339755855ull, 6109019005556867142ull, 6283016577339336170ull}}, {{17829807554302080657ull, 11956222274779470626ull, 16859645793800859735ull, 7853770721674170212ull}}, {{15755315739866188315ull, 14390167949378250997ull, 1313906584270761526ull, 4908606701046356383ull}}, {{5859086619550571681ull, 8764337899868037939ull, 15477441285620615620ull, 6135758376307945478ull}}, {{2712172256010826697ull, 10955422374835047424ull, 10123429570170993717ull, 7669697970384931848ull}}, {{1695107660006766686ull, 9152981993485598592ull, 6327143481356871073ull, 4793561231490582405ull}}, {{2118884575008458357ull, 16052913510284386144ull, 12520615370123476745ull, 5991951539363228006ull}}, {{2648605718760572947ull, 6231083832573318968ull, 6427397175799570124ull, 7489939424204035008ull}}, {{1655378574225358092ull, 13117799432213100163ull, 4017123234874731327ull, 4681212140127521880ull}}, {{15904281273063861327ull, 11785563271838987299ull, 5021404043593414159ull, 5851515175159402350ull}}, {{15268665572902438754ull, 10120268071371346220ull, 15500127091346543507ull, 7314393968949252937ull}}, {{639087892418496827ull, 8038649070786794872ull, 5540100808901015672ull, 9142992461186566172ull}}, {{399429932761560517ull, 5024155669241746795ull, 12685935042417910603ull, 5714370288241603857ull}}, {{14334345471234114358ull, 1668508568124795589ull, 2022360747740224542ull, 7142962860302004822ull}}, {{4082873783760479235ull, 11309007747010770295ull, 11751322971530056485ull, 8928703575377506027ull}}, {{9469325142491381378ull, 9373972851095425386ull, 5038733847992591351ull, 5580439734610941267ull}}, {{2613284391259450915ull, 7105780045441893829ull, 1686731291563351285ull, 6975549668263676584ull}}, {{7878291507501701547ull, 13493911075229755190ull, 2108414114454189106ull, 8719437085329595730ull}}, {{312246173761175563ull, 13045380440445984898ull, 5929444839961256095ull, 5449648178330997331ull}}, {{9613679754056245262ull, 11695039532130093218ull, 2800120031524182215ull, 6812060222913746664ull}}, {{2793727655715530769ull, 10007113396735228619ull, 3500150039405227769ull, 8515075278642183330ull}}, {{17886980849318064395ull, 17783660919027987646ull, 6799279793055655259ull, 5321922049151364581ull}}, {{13135354024792804685ull, 17617890130357596654ull, 13110785759746956978ull, 6652402561439205726ull}}, {{7195820494136230049ull, 12798990626092220010ull, 7165110162828920415ull, 8315503201799007158ull}}, {{9109073827262531685ull, 14916898168948719362ull, 18313251907050238971ull, 5197189501124379473ull}}, {{2162970247223388798ull, 14034436692758511299ull, 9056506828530635002ull, 6496486876405474342ull}}, {{16538770864311399709ull, 8319673829093363315ull, 2097261498808517945ull, 8120608595506842928ull}}, {{8030888780980930866ull, 16729011189251821832ull, 1310788436755323715ull, 5075380372191776830ull}}, {{10038610976226163583ull, 16299577968137389386ull, 10861857582798930452ull, 6344225465239721037ull}}, {{3324891683427928670ull, 1927728386462185117ull, 18189007996926050970ull, 7930281831549651296ull}}, {{4383900311356149371ull, 5816516259966253602ull, 11368129998078781856ull, 4956426144718532060ull}}, {{14703247426049962522ull, 7270645324957817002ull, 14210162497598477320ull, 6195532680898165075ull}}, {{9155687245707677344ull, 9088306656197271253ull, 13151017103570708746ull, 7744415851122706344ull}}, {{8028147537780992292ull, 10291877678550682437ull, 8219385689731692966ull, 4840259906951691465ull}}, {{14646870440653628269ull, 3641475061333577238ull, 14885918130592004112ull, 6050324883689614331ull}}, {{9085216013962259528ull, 4551843826666971548ull, 13995711644812617236ull, 7562906104612017914ull}}, {{14901632045581188013ull, 12068274428521633025ull, 13359005796435273676ull, 4726816315382511196ull}}, {{4791982001694321305ull, 15085343035652041282ull, 16698757245544092095ull, 5908520394228138995ull}}, {{15213349538972677439ull, 14244992776137663698ull, 16261760538502727215ull, 7385650492785173744ull}}, {{14120029480285311303ull, 15820649512727121667ull, 10163600336564204509ull, 4616031557990733590ull}}, {{13038350831929251225ull, 5940753835626738372ull, 3481128383850479829ull, 5770039447488416988ull}}, {{16297938539911564031ull, 12037628312960810869ull, 4351410479813099786ull, 7212549309360521235ull}}, {{6537365119607291327ull, 5823663354346237779ull, 827577081338986829ull, 9015686636700651544ull}}, {{1780010190540863127ull, 5945632605680092564ull, 517235675836866768ull, 5634804147937907215ull}}, {{2225012738176078909ull, 7432040757100115705ull, 14481602650078247172ull, 7043505184922384018ull}}, {{7392951941147486540ull, 9290050946375144631ull, 8878631275743033157ull, 8804381481152980023ull}}, {{11538123990858260944ull, 8112124850698159346ull, 12466673574980477579ull, 5502738425720612514ull}}, {{5199282951718050372ull, 5528470044945311279ull, 6359969931870821166ull, 6878423032150765643ull}}, {{1887417671220175061ull, 16133959593036414907ull, 3338276396411138553ull, 8598028790188457054ull}}, {{17320537109008467077ull, 3166195718006677460ull, 15921480803039125308ull, 5373767993867785658ull}}, {{3203927312551032230ull, 3957744647508346826ull, 10678478966944130827ull, 6717209992334732073ull}}, {{13228281177543566096ull, 335494790958045628ull, 17959784727107551438ull, 8396512490418415091ull}}, {{17491047772819504618ull, 14044742299630942229ull, 8919022445228525696ull, 5247820306511509432ull}}, {{8028751660742217060ull, 17555927874538677787ull, 11148778056535657120ull, 6559775383139386790ull}}, {{5424253557500383421ull, 3498165769463795618ull, 4712600533814795593ull, 8199719228924233488ull}}, {{8001844491865127543ull, 13715568651983342021ull, 2945375333634247245ull, 5124824518077645930ull}}, {{14613991633258797332ull, 3309402759697013814ull, 12905091203897584865ull, 6406030647597057412ull}}, {{9044117504718720857ull, 8748439468048655172ull, 16131364004871981081ull, 8007538309496321765ull}}, {{14875945477303976344ull, 16996989713598879242ull, 12387945512258682127ull, 5004711443435201103ull}}, {{9371559809775194622ull, 16634551123571211149ull, 10873245871895964755ull, 6255889304294001379ull}}, {{16326135780646381181ull, 16181502886036626032ull, 8979871321442568040ull, 7819861630367501724ull}}, {{10203834862903988238ull, 10113439303772891270ull, 14835791612756380833ull, 4887413518979688577ull}}, {{3531421541775209490ull, 17253485148143501992ull, 4709681460663312329ull, 6109266898724610722ull}}, {{4414276927219011862ull, 7731798379897213778ull, 15110473862683916220ull, 7636583623405763402ull}}, {{7370609097939270318ull, 14055746024290534419ull, 14055732182604835541ull, 4772864764628602126ull}}, {{4601575353996699993ull, 3734624475081004312ull, 8346293191401268619ull, 5966080955785752658ull}}, {{5751969192495874991ull, 56594575423867486ull, 1209494452396809966ull, 7457601194732190823ull}}, {{17430038800592085582ull, 13870429664922080890ull, 7673463060389088084ull, 4661000746707619264ull}}, {{12564176463885331169ull, 17338037081152601113ull, 9591828825486360105ull, 5826250933384524080ull}}, {{1870162524574500249ull, 7837488296158587680ull, 11989786031857950132ull, 7282813666730655100ull}}, {{2337703155718125312ull, 9796860370198234600ull, 14987232539822437665ull, 9103517083413318875ull}}, {{1461064472323828320ull, 17652252777442366385ull, 7061177328175329588ull, 5689698177133324297ull}}, {{6438016608832173304ull, 3618571898093406365ull, 13438157678646549890ull, 7112122721416655371ull}}, {{12659206779467604534ull, 13746586909471533764ull, 12186011079880799458ull, 8890153401770819214ull}}, {{17135376274022028642ull, 13203302836847096506ull, 3004570906498111757ull, 5556345876106762009ull}}, {{12195848305672759994ull, 2669070490776706921ull, 8367399651550027601ull, 6945432345133452511ull}}, {{1409752326808786280ull, 7948024131898271556ull, 5847563546010146597ull, 8681790431416815639ull}}, {{10104467241110267233ull, 7273358091650113674ull, 10572256243897423479ull, 5426119019635509774ull}}, {{3407212014533058234ull, 4480011596135254189ull, 3991948268017003541ull, 6782648774544387218ull}}, {{8870701036593710696ull, 10211700513596455640ull, 14213307371876030234ull, 8478310968180484022ull}}, {{5544188147871069185ull, 10993998839425172679ull, 4271631088995130992ull, 5298944355112802514ull}}, {{2318549166411448577ull, 13742498549281465849ull, 14562910898098689548ull, 6623680443891003142ull}}, {{7509872476441698625ull, 17178123186601832311ull, 8980266585768586127ull, 8279600554863753928ull}}, {{11611199325417143497ull, 17653856019267227050ull, 5612666616105366329ull, 5174750346789846205ull}}, {{5290627119916653563ull, 8232261968801870101ull, 11627519288559095816ull, 6468437933487307756ull}}, {{11224969918323204858ull, 10290327461002337626ull, 14534399110698869770ull, 8085547416859134695ull}}, {{11627292217379390940ull, 11043140681553848920ull, 16001528471827875462ull, 5053467135536959184ull}}, {{14534115271724238675ull, 4580553815087535342ull, 1555166516075292712ull, 6316833919421198981ull}}, {{8944272052800522536ull, 5725692268859419178ull, 6555644163521503794ull, 7896042399276498726ull}}, {{10201856051427714489ull, 8190243686464524890ull, 17932335657483103583ull, 4935026499547811703ull}}, {{3528948027429867303ull, 5626118589653268209ull, 17803733553426491575ull, 6168783124434764629ull}}, {{9022871052714722033ull, 2420962218639197357ull, 8419608886500950757ull, 7710978905543455787ull}}, {{7945137417160395223ull, 3818944395863192300ull, 2956412544849400271ull, 4819361815964659867ull}}, {{9931421771450494029ull, 161994476401602471ull, 17530573736343914051ull, 6024202269955824833ull}}, {{7802591195885729632ull, 14037551150784166801ull, 8078159115147728851ull, 7530252837444781042ull}}, {{16405834543497050780ull, 6467626460026410298ull, 9660535465394718436ull, 4706408023402988151ull}}, {{11283921142516537667ull, 8084533075033012873ull, 7463983313316010141ull, 5883010029253735189ull}}, {{269843372863508371ull, 14717352362218653996ull, 13941665160072400580ull, 7353762536567168986ull}}, {{337304216079385464ull, 18396690452773317495ull, 8203709413235724917ull, 9192203170708961233ull}}, {{7128344162690697771ull, 13803774542197017386ull, 16656533429340797833ull, 5745126981693100770ull}}, {{18133802240218148022ull, 3419660122464108020ull, 11597294749821221484ull, 7181408727116375963ull}}, {{4220508726563133411ull, 4274575153080135026ull, 9884932418849138951ull, 8976760908895469954ull}}, {{7249503972529346286ull, 9589138498316166247ull, 10789768780208099748ull, 5610475568059668721ull}}, {{4450193947234294954ull, 11986423122895207809ull, 18098896993687512589ull, 7013094460074585901ull}}, {{10174428452470256596ull, 1147970848336846049ull, 8788563186827227025ull, 8766368075093232377ull}}, {{17888232828862380133ull, 12246696826278998540ull, 17022067037835486650ull, 5478980046933270235ull}}, {{3913546962368423550ull, 6084998995993972368ull, 16665897778866970409ull, 6848725058666587794ull}}, {{4891933702960529437ull, 12217934763419853364ull, 11609000186728937203ull, 8560906323333234743ull}}, {{12280830601205106706ull, 5330366217923714400ull, 14173154144346667608ull, 5350566452083271714ull}}, {{15351038251506383383ull, 6662957772404643000ull, 8493070643578558702ull, 6688208065104089643ull}}, {{742053740673427612ull, 17552069252360579559ull, 6004652286045810473ull, 8360260081380112054ull}}, {{7381312615561974114ull, 4052514255084280368ull, 17587965734060795258ull, 5225162550862570033ull}}, {{9226640769452467642ull, 14289014855710126268ull, 8149899112293830360ull, 6531453188578212542ull}}, {{11533300961815584553ull, 17861268569637657835ull, 964001853512512142ull, 8164316485722765678ull}}, {{4902470091921046394ull, 6551606837596148243ull, 14437559213727483801ull, 5102697803576728548ull}}, {{1516401596473920088ull, 12801194565422573208ull, 18046949017159354751ull, 6378372254470910685ull}}, {{1895501995592400110ull, 11389807188350828606ull, 8723628216167029727ull, 7972965318088638357ull}}, {{15019746802527413781ull, 14036158520360349734ull, 7758110644318087531ull, 4983103323805398973ull}}, {{9551311466304491418ull, 12933512132023049264ull, 14309324323824997318ull, 6228879154756748716ull}}, {{11939139332880614272ull, 6943518128174035772ull, 17886655404781246648ull, 7786098943445935895ull}}, {{16685334119905159728ull, 4339698830108772357ull, 18096688655629361011ull, 4866311839653709934ull}}, {{7021609594599285948ull, 812937519208577543ull, 13397488782681925456ull, 6082889799567137418ull}}, {{4165325974821719531ull, 1016171899010721929ull, 7523488941497631012ull, 7603612249458921773ull}}, {{14132543780332044467ull, 9858479473736477013ull, 7008023597649713334ull, 4752257655911826108ull}}, {{3830621670132891872ull, 3099727305315820459ull, 8760029497062141668ull, 5940322069889782635ull}}, {{176591069238726936ull, 3874659131644775574ull, 6338350852900289181ull, 7425402587362228294ull}}, {{13945427473556368047ull, 4727504966491678685ull, 17796527338344844450ull, 4640876617101392683ull}}, {{3596726286663296347ull, 15132753244969374165ull, 17633973154503667658ull, 5801095771376740854ull}}, {{9107593876756508337ull, 9692569519356941898ull, 12819094406274808765ull, 7251369714220926068ull}}, {{2161120309090859613ull, 16727397917623565277ull, 16023868007843510956ull, 9064212142776157585ull}}, {{3656543202395481210ull, 1231251661659952490ull, 3097388477261112492ull, 5665132589235098491ull}}, {{13794051039849127321ull, 1539064577074940612ull, 17706793651858554327ull, 7081415736543873113ull}}, {{17242563799811409151ull, 15758888776625839477ull, 8298434009541029196ull, 8851769670679841392ull}}, {{13082445384095824672ull, 625933448536373865ull, 5186521255963143248ull, 5532356044174900870ull}}, {{2517998674837617127ull, 782416810670467332ull, 15706523606808704868ull, 6915445055218626087ull}}, {{3147498343547021409ull, 978021013338084165ull, 15021468490083493181ull, 8644306319023282609ull}}, {{4273029473930582333ull, 2917106142549996555ull, 2470888778661101382ull, 5402691449389551631ull}}, {{729600823985840012ull, 12869754715042271502ull, 16923669028608540439ull, 6753364311736939538ull}}, {{10135373066837075823ull, 11475507375375451473ull, 11931214248905899741ull, 8441705389671174423ull}}, {{17863823212841642149ull, 9478035118823351122ull, 14374537933207269194ull, 5276065868544484014ull}}, {{13106406979197276879ull, 2624171861674413095ull, 8744800379654310685ull, 6595082335680605018ull}}, {{11771322705569208194ull, 7891900845520404273ull, 1707628437713112548ull, 8243852919600756273ull}}, {{439547663339673266ull, 14155810065305028479ull, 12596482819639165102ull, 5152408074750472670ull}}, {{14384492634456755294ull, 8471390544776509790ull, 6522231487694180570ull, 6440510093438090838ull}}, {{8757243756216168309ull, 1365866144115861430ull, 17376161396472501521ull, 8050637616797613547ull}}, {{861591329207717289ull, 12382881386140883154ull, 8554257863581619498ull, 5031648510498508467ull}}, {{10300361198364422420ull, 6255229695821328134ull, 6081136311049636469ull, 6289560638123135584ull}}, {{3652079461100752216ull, 12430723138204048072ull, 7601420388812045586ull, 7861950797653919480ull}}, {{2282549663187970135ull, 12380887979804917949ull, 4750887743007528491ull, 4913719248533699675ull}}, {{7464873097412350573ull, 10864423956328759532ull, 1326923660332022710ull, 6142149060667124594ull}}, {{9331091371765438216ull, 4357157908556173607ull, 10882026612269804196ull, 7677686325833905742ull}}, {{12749461134994480741ull, 11946595729702384312ull, 2189580614241239718ull, 4798553953646191089ull}}, {{15936826418743100927ull, 5709872625273204582ull, 7348661786228937552ull, 5998192442057738861ull}}, {{10697660986574100350ull, 7137340781591505728ull, 13797513251213559844ull, 7497740552572173576ull}}, {{6686038116608812719ull, 13684210025349466888ull, 8623445782008474902ull, 4686087845357608485ull}}, {{8357547645761015899ull, 7881890494832057802ull, 15390993245937981532ull, 5857609806697010606ull}}, {{1223562520346494065ull, 9852363118540072253ull, 10015369520567701107ull, 7322012258371263258ull}}, {{6141139168860505485ull, 7703767879747702412ull, 3295839863854850576ull, 9152515322964079073ull}}, {{13061584017392591737ull, 4814854924842314007ull, 13589114960977751370ull, 5720322076852549420ull}}, {{11715294003313351767ull, 15241940692907668317ull, 16986393701222189212ull, 7150402596065686775ull}}, {{809059448859525996ull, 605681792425033781ull, 16621306108100348612ull, 8938003245082108469ull}}, {{2811505164750897700ull, 9601923157120421921ull, 12694159326776411834ull, 5586252028176317793ull}}, {{8126067474366010029ull, 2779031909545751593ull, 2032641103188351081ull, 6982815035220397242ull}}, {{14769270361384900440ull, 8085475905359577395ull, 11764173415840214659ull, 8728518794025496552ull}}, {{6924950966651868823ull, 2747579431636041920ull, 7352608384900134162ull, 5455324246265935345ull}}, {{8656188708314836029ull, 12657846326399828208ull, 13802446499552555606ull, 6819155307832419181ull}}, {{10820235885393545036ull, 6598935871145009452ull, 3418000069158530796ull, 8523944134790523977ull}}, {{15986019465225741455ull, 13347706956320406715ull, 13665465089292551507ull, 5327465084244077485ull}}, {{15370838313104788915ull, 12072947676973120490ull, 3246773306333525672ull, 6659331355305096857ull}}, {{9990175854526210336ull, 15091184596216400613ull, 8670152651344294994ull, 8324164194131371071ull}}, {{8549702918292575412ull, 14043676391062638287ull, 12336374434731266227ull, 5202602621332106919ull}}, {{6075442629438331361ull, 12942909470400909955ull, 10808782024986694880ull, 6503253276665133649ull}}, {{2982617268370526297ull, 16178636838001137444ull, 18122663549660756504ull, 8129066595831417061ull}}, {{11087507829586354744ull, 10111648023750710902ull, 13632507727751666767ull, 5080666622394635663ull}}, {{4636012750128167622ull, 8027874011261000724ull, 12428948641262195555ull, 6350833277993294579ull}}, {{5795015937660209527ull, 5423156495648863001ull, 10924499783150356540ull, 7938541597491618224ull}}, {{15151100007106100715ull, 12612844846635315183ull, 6827812364468972837ull, 4961588498432261390ull}}, {{14327188990455237989ull, 1930998003011980267ull, 17758137492440991855ull, 6201985623040326737ull}}, {{13297300219641659582ull, 16248805559047139046ull, 8362613810269076106ull, 7752482028800408422ull}}, {{3699126618848649335ull, 14767189492831849808ull, 614947612990784662ull, 4845301268000255264ull}} }; static const BID_UINT256 bid_multipliers2_binary128[] = { {{7710430832988809084ull, 13621041698348090301ull, 15069458432386386555ull, 2958405588648567759ull}}, {{14249724559663399259ull, 12414616104507724972ull, 14225137022055595290ull, 3698006985810709699ull}}, {{18129449886644400345ull, 12370821083744716011ull, 6584867629571053104ull, 2311254366131693562ull}}, {{18050126339878112527ull, 15463526354680895014ull, 17454456573818592188ull, 2889067957664616952ull}}, {{13339285887992864851ull, 882663869641567152ull, 3371326643563688620ull, 3611334947080771191ull}}, {{16674107359991081063ull, 1103329837051958940ull, 18049216359736774487ull, 4514168683850963988ull}}, {{1197945063139649857ull, 7607110175798556194ull, 2057388187980708246ull, 2821355427406852493ull}}, {{10720803365779338129ull, 285515682893419434ull, 7183421253403273212ull, 3526694284258565616ull}}, {{4177632170369396853ull, 356894603616774293ull, 8979276566754091515ull, 4408367855323207020ull}}, {{4916863115694566985ull, 16363960191756341597ull, 14835419891076083004ull, 2755229909577004387ull}}, {{10757764913045596635ull, 2008206165985875380ull, 13932588845417715852ull, 3444037386971255484ull}}, {{13447206141306995794ull, 2510257707482344225ull, 17415736056772144815ull, 4305046733714069355ull}}, {{1486974810675790516ull, 8486440094817546997ull, 8578992026268896557ull, 2690654208571293347ull}}, {{6470404531772126048ull, 15219736136949321650ull, 6112054014408732792ull, 3363317760714116684ull}}, {{17311377701569933368ull, 577926097477100446ull, 7640067518010915991ull, 4204147200892645855ull}}, {{6207925045053820451ull, 7278732838564269635ull, 11692571226397904350ull, 2627592000557903659ull}}, {{3148220287889887660ull, 18321788085060112852ull, 10004028014569992533ull, 3284490000697379574ull}}, {{3935275359862359575ull, 9067177051042977353ull, 3281662981357714859ull, 4105612500871724468ull}}, {{13988762145982444495ull, 3361142647688166893ull, 11274411400203347595ull, 2566007813044827792ull}}, {{3650894627195891906ull, 18036486364892372329ull, 14093014250254184493ull, 3207509766306034740ull}}, {{9175304302422252786ull, 8710549900833301699ull, 17616267812817730617ull, 4009387207882543425ull}}, {{3428722179800214040ull, 16973308734089283322ull, 4092638355369999779ull, 2505867004926589641ull}}, {{13509274761605043357ull, 16604949899184216248ull, 9727483962639887628ull, 3132333756158237051ull}}, {{16886593452006304197ull, 2309443300270718694ull, 7547668934872471632ull, 3915417195197796314ull}}, {{5942434889076552219ull, 1443402062669199184ull, 9328979102722682674ull, 2447135746998622696ull}}, {{7428043611345690274ull, 11027624615191274788ull, 11661223878403353342ull, 3058919683748278370ull}}, {{9285054514182112842ull, 4561158732134317677ull, 5353157811149415870ull, 3823649604685347963ull}}, {{8109002080577514479ull, 16685782262866112260ull, 1039880622754690966ull, 2389781002928342477ull}}, {{10136252600721893098ull, 11633855791727864517ull, 5911536796870751612ull, 2987226253660428096ull}}, {{17282001769329754276ull, 14542319739659830646ull, 7389420996088439515ull, 3734032817075535120ull}}, {{6189565087403708519ull, 6783106828073700202ull, 4618388122555274697ull, 2333770510672209450ull}}, {{16960328396109411457ull, 13090569553519513156ull, 14996357190048869179ull, 2917213138340261812ull}}, {{2753666421427212705ull, 11751525923472003542ull, 298702413851534858ull, 3646516422925327266ull}}, {{12665455063638791689ull, 5466035367485228619ull, 9596750054169194381ull, 4558145528656659082ull}}, {{5610066405560550854ull, 5722115113891961839ull, 10609654802283134392ull, 2848840955410411926ull}}, {{2400896988523300663ull, 7152643892364952299ull, 4038696465999142182ull, 3561051194263014908ull}}, {{16836179290936289540ull, 18164176902310966181ull, 5048370582498927727ull, 4451313992828768635ull}}, {{12828455066048874915ull, 18270139591585435719ull, 849388604848135877ull, 2782071245517980397ull}}, {{11423882814133705740ull, 9002616434199630937ull, 5673421774487557751ull, 3477589056897475496ull}}, {{444795462384968462ull, 6641584524322150768ull, 7091777218109447189ull, 4346986321121844370ull}}, {{277997163990605289ull, 6456833336915038182ull, 9044046779745792397ull, 2716866450701152731ull}}, {{9570868491843032419ull, 12682727689571185631ull, 6693372456254852592ull, 3396083063376440914ull}}, {{7351899596376402620ull, 15853409611963982039ull, 17590087607173341548ull, 4245103829220551142ull}}, {{11512466275376333494ull, 685008970622712966ull, 6382118736055950564ull, 2653189893262844464ull}}, {{5167210807365641059ull, 856261213278391208ull, 7977648420069938205ull, 3316487366578555580ull}}, {{6459013509207051324ull, 5682012535025376914ull, 9972060525087422756ull, 4145609208223194475ull}}, {{8648569461681794981ull, 12774629871245636379ull, 3926694818965945270ull, 2591005755139496547ull}}, {{6199025808674855823ull, 6744915302202269666ull, 296682505280043684ull, 3238757193924370684ull}}, {{16972154297698345586ull, 8431144127752837082ull, 370853131600054605ull, 4048446492405463355ull}}, {{15219282454488853896ull, 7575308089059217128ull, 16372684271745891792ull, 2530279057753414596ull}}, {{577358994401515753ull, 9469135111324021411ull, 2019111265972813124ull, 3162848822191768246ull}}, {{14556756798284058404ull, 11836418889155026763ull, 11747261119320792213ull, 3953561027739710307ull}}, {{6792129989713842550ull, 9703604814935585679ull, 5036195190361801181ull, 2470975642337318942ull}}, {{3878476468714915284ull, 16741192037096870003ull, 15518616024807027284ull, 3088719552921648677ull}}, {{236409567466256201ull, 2479745972661535888ull, 5563211975726620394ull, 3860899441152060847ull}}, {{147755979666410126ull, 6161527251340847834ull, 10394536512470219602ull, 2413062150720038029ull}}, {{9408067011437788465ull, 16925281101030835600ull, 17604856659015162406ull, 3016327688400047536ull}}, {{11760083764297235581ull, 11933229339433768692ull, 3559326750059401392ull, 3770409610500059421ull}}, {{16573424389540548046ull, 7458268337146105432ull, 4530422228000819822ull, 2356506006562537138ull}}, {{2270036413216133442ull, 99463384577855983ull, 14886399821855800586ull, 2945632508203171422ull}}, {{16672603571802330514ull, 9347701267577095786ull, 9384627740464974924ull, 3682040635253964278ull}}, {{11617382427898137335ull, 11684626584471369733ull, 2507412638726442847ull, 4602550794067455348ull}}, {{9566707026650029786ull, 14220420642935687939ull, 10790504936058802587ull, 2876594246292159592ull}}, {{7346697764885149329ull, 13163839785242222020ull, 13488131170073503234ull, 3595742807865199490ull}}, {{9183372206106436661ull, 7231427694698001717ull, 7636791925737103235ull, 4494678509831499363ull}}, {{8045450638030216865ull, 2213799299972557121ull, 2467151944371995570ull, 2809174068644687102ull}}, {{14668499315965158985ull, 11990621161820472209ull, 12307311967319770270ull, 3511467585805858877ull}}, {{4500566089674285020ull, 5764904415420814454ull, 1549081903867549126ull, 4389334482257323597ull}}, {{16647911861328591849ull, 17438123314920172745ull, 3274019199130912155ull, 2743334051410827248ull}}, {{6974831771378576100ull, 17185968125222828028ull, 4092523998913640194ull, 3429167564263534060ull}}, {{8718539714223220124ull, 12259088119673759227ull, 5115654998642050243ull, 4286459455329417575ull}}, {{3143244312175818626ull, 5356087065582405565ull, 10114813401792363258ull, 2679037159580885984ull}}, {{8540741408647161186ull, 15918480868832782764ull, 12643516752240454072ull, 3348796449476107480ull}}, {{10675926760808951483ull, 1451357012331426839ull, 15804395940300567591ull, 4185995561845134350ull}}, {{13589983253146676533ull, 7824627160348223630ull, 5266061444260466840ull, 2616247226153208969ull}}, {{7764107029578569858ull, 9780783950435279538ull, 11194262823752971454ull, 3270309032691511211ull}}, {{481761750118436514ull, 3002607901189323615ull, 9381142511263826414ull, 4087886290864389014ull}}, {{7218630121465104678ull, 15711687993525490971ull, 1251528051112503604ull, 2554928931790243134ull}}, {{4411601633403992943ull, 1192865918197312098ull, 10787782100745405314ull, 3193661164737803917ull}}, {{14737874078609766987ull, 10714454434601415930ull, 18096413644359144546ull, 3992076455922254896ull}}, {{13822857317558492271ull, 11308220040053272860ull, 11310258527724465341ull, 2495047784951409310ull}}, {{17278571646948115338ull, 300216994784427363ull, 4914451122800805869ull, 3118809731189261638ull}}, {{16986528540257756269ull, 4986957261907922108ull, 15366435940355783144ull, 3898512163986577047ull}}, {{1393208300806321860ull, 3116848288692451318ull, 16521551490363446321ull, 2436570102491610654ull}}, {{10964882412862678133ull, 8507746379292952051ull, 11428567326099532093ull, 3045712628114513318ull}}, {{9094416997650959762ull, 15246368992543577968ull, 5062337120769639308ull, 3807140785143141648ull}}, {{5684010623531849852ull, 305608583484960422ull, 3163960700481024568ull, 2379462990714463530ull}}, {{16328385316269588122ull, 382010729356200527ull, 13178322912456056518ull, 2974328738393079412ull}}, {{15798795626909597249ull, 9700885448550026467ull, 16472903640570070647ull, 3717910922991349265ull}}, {{7568404257604804329ull, 12980582432984848398ull, 3378035747715212298ull, 2323694326869593291ull}}, {{237133285151229603ull, 7002356004376284690ull, 18057602739926179085ull, 2904617908586991613ull}}, {{9519788643293812811ull, 13364631023897743766ull, 8736945369625560144ull, 3630772385733739517ull}}, {{2676363767262490206ull, 16705788779872179708ull, 15532867730459338084ull, 4538465482167174396ull}}, {{10896099391393832187ull, 1217745950565336509ull, 484670294682310495ull, 2836540926354483998ull}}, {{18231810257669678138ull, 15357240493488834348ull, 9829209905207663926ull, 3545676157943104997ull}}, {{4343018748377546056ull, 9973178580006267128ull, 16898198399936967812ull, 4432095197428881246ull}}, {{2714386717735966285ull, 15456608649358692763ull, 5949687981533216978ull, 2770059498393050779ull}}, {{17228041452452121568ull, 10097388774843590145ull, 2825423958489133319ull, 3462574372991313474ull}}, {{7699993760282988248ull, 8010049950127099778ull, 12755151984966192457ull, 4328217966239141842ull}}, {{9424182118604255559ull, 16535496264897907121ull, 12583656009031258189ull, 2705136228899463651ull}}, {{16391913666682707353ull, 6834312275840220189ull, 11117883992861684833ull, 3381420286124329564ull}}, {{6654834028071220479ull, 13154576363227663141ull, 13897354991077106041ull, 4226775357655411955ull}}, {{6465114276758206752ull, 1304081199376207607ull, 6380003860209497324ull, 2641734598534632472ull}}, {{3469706827520370535ull, 1630101499220259509ull, 7975004825261871655ull, 3302168248168290590ull}}, {{8948819552827851073ull, 15872684929307488098ull, 745383994722563760ull, 4127710310210363238ull}}, {{10204698238944794825ull, 9920428080817180061ull, 14300923051983766062ull, 2579818943881477023ull}}, {{17367558817108381435ull, 3177163064166699268ull, 13264467796552319674ull, 3224773679851846279ull}}, {{3262704447675925178ull, 13194825867063149894ull, 11968898727263011688ull, 4030967099814807849ull}}, {{15874248335079616948ull, 8246766166914468683ull, 563032676898300449ull, 2519354437384254906ull}}, {{15231124400422133281ull, 14920143727070473758ull, 9927162882977651369ull, 3149193046730318632ull}}, {{9815533463672890793ull, 4815121603555928486ull, 12408953603722064212ull, 3936491308412898290ull}}, {{1523022396368168842ull, 12232823039077231112ull, 12367282020753678036ull, 2460307067758061431ull}}, {{1903777995460211052ull, 15291028798846538890ull, 10847416507514709641ull, 3075383834697576789ull}}, {{11603094531180039623ull, 5278727943276009900ull, 18170956652820774956ull, 3844229793371970986ull}}, {{16475306118842300573ull, 12522577001402281995ull, 15968533926440372251ull, 2402643620857481866ull}}, {{15982446630125487812ull, 11041535233325464590ull, 10737295371195689506ull, 3003304526071852333ull}}, {{10754686250802083957ull, 4578547004802054930ull, 18033305232421999787ull, 3754130657589815416ull}}, {{11333364925178690377ull, 555748868787590379ull, 11270815770263749867ull, 2346331660993634635ull}}, {{9555020138045975067ull, 14529744141266651686ull, 9476833694402299429ull, 2932914576242043294ull}}, {{2720403135702693026ull, 4327122121301150896ull, 2622670081148098479ull, 3666143220302554118ull}}, {{3400503919628366282ull, 797216633199050716ull, 12501709638289898907ull, 4582679025378192647ull}}, {{11348686986622504735ull, 16639161460245264361ull, 14731097551572268672ull, 2864174390861370404ull}}, {{350800677995967206ull, 2352207751597028836ull, 18413871939465335841ull, 3580217988576713005ull}}, {{438500847494959008ull, 7551945707923673949ull, 9182281869049506089ull, 4475272485720891257ull}}, {{2579906038898043332ull, 16249181113520765978ull, 17268141214224411065ull, 2797045303575557035ull}}, {{12448254585477329973ull, 6476418336618793760ull, 16973490499353125928ull, 3496306629469446294ull}}, {{15560318231846662466ull, 8095522920773492200ull, 11993491087336631602ull, 4370383286836807868ull}}, {{9725198894904164041ull, 9671387843910820529ull, 16719303966440170559ull, 2731489554273004917ull}}, {{16768184637057592956ull, 7477548786461137757ull, 7064071902768049487ull, 3414361942841256147ull}}, {{7125172741039827482ull, 4735249964649034293ull, 4218403860032673955ull, 4267952428551570184ull}}, {{6759075972363586129ull, 653688218691952481ull, 2636502412520421222ull, 2667470267844731365ull}}, {{13060530983881870565ull, 10040482310219716409ull, 7907314034077914431ull, 3334337834805914206ull}}, {{2490605674570174494ull, 7938916869347257608ull, 660770505742617231ull, 4167922293507392758ull}}, {{1556628546606359059ull, 11879352070983117861ull, 14248039621371299481ull, 2604951433442120473ull}}, {{6557471701685336727ull, 1014132033446733614ull, 3974991471431960640ull, 3256189291802650592ull}}, {{17420211663961446717ull, 1267665041808417017ull, 4968739339289950800ull, 4070236614753313240ull}}, {{3970103262334822342ull, 792290651130260636ull, 3105462087056219250ull, 2543897884220820775ull}}, {{4962629077918527928ull, 10213735350767601603ull, 17716885664102437774ull, 3179872355276025968ull}}, {{1591600328970772006ull, 3543797151604726196ull, 3699363006418495602ull, 3974840444095032461ull}}, {{10218122242461508312ull, 6826559238180341776ull, 4617944888225253703ull, 2484275277559395288ull}}, {{12772652803076885390ull, 3921513029298039316ull, 5772431110281567129ull, 3105344096949244110ull}}, {{15965816003846106737ull, 9513577305049937049ull, 16438910924706734719ull, 3881680121186555137ull}}, {{3061105974762734855ull, 12863514843297292512ull, 3356790300300627343ull, 2426050075741596961ull}}, {{3826382468453418568ull, 11467707535694227736ull, 8807673893803172083ull, 3032562594676996201ull}}, {{4782978085566773210ull, 9722948401190396766ull, 15621278385681353008ull, 3790703243346245251ull}}, {{16824419358761396969ull, 6076842750743997978ull, 7457455981837151678ull, 2369189527091403282ull}}, {{11807152161596970403ull, 16819425475284773281ull, 98447940441663789ull, 2961486908864254103ull}}, {{923882146714049291ull, 7189223788823802890ull, 13958117980834243449ull, 3701858636080317628ull}}, {{5189112360123668711ull, 16022479914083346566ull, 17947195774876177963ull, 2313661647550198517ull}}, {{15709762487009361697ull, 15416413874176795303ull, 8598936663313058742ull, 2892077059437748147ull}}, {{15025517090334314217ull, 10047145305866218321ull, 6136984810713935524ull, 3615096324297185184ull}}, {{4946838307635729059ull, 12558931632332772902ull, 7671231013392419405ull, 4518870405371481480ull}}, {{16926831997554494374ull, 10155175279421677015ull, 4794519383370262128ull, 2824294003357175925ull}}, {{16546853978515730063ull, 12693969099277096269ull, 10604835247640215564ull, 3530367504196469906ull}}, {{6848509417862498867ull, 15867461374096370337ull, 4032672022695493647ull, 4412959380245587383ull}}, {{15809533432232531552ull, 16834692386451313316ull, 9437949041825765385ull, 2758099612653492114ull}}, {{1315172716581112824ull, 7208307427781977934ull, 2574064265427430924ull, 3447624515816865143ull}}, {{10867337932581166838ull, 9010384284727472417ull, 17052638387066452367ull, 4309530644771081428ull}}, {{18321301253931699034ull, 12549019205595752116ull, 1434526955061756921ull, 2693456652981925893ull}}, {{4454882493705072176ull, 1851215951712526434ull, 6404844712254584056ull, 3366820816227407366ull}}, {{14791975153986116028ull, 2314019939640658042ull, 17229427927173005878ull, 4208526020284259207ull}}, {{13856670489668710422ull, 15281320517557574988ull, 17685921482124210529ull, 2630328762677662004ull}}, {{17320838112085888027ull, 5266592591664805023ull, 3660657778945711546ull, 3287910953347077506ull}}, {{17039361621679972130ull, 15806612776435782087ull, 13799194260536915240ull, 4109888691683846882ull}}, {{17567130041191064437ull, 9879132985272363804ull, 13236182431262959929ull, 2568680432302404301ull}}, {{3512168477779278930ull, 16960602250017842660ull, 2710169983796536199ull, 3210850540378005377ull}}, {{4390210597224098663ull, 16589066794094915421ull, 7999398498173058153ull, 4013563175472506721ull}}, {{5049724632478755617ull, 3450637718668240282ull, 16528839107426631106ull, 2508476984670316700ull}}, {{15535527827453220329ull, 13536669185190076160ull, 2214304810573737266ull, 3135596230837895876ull}}, {{972665710606973795ull, 7697464444632819393ull, 2767881013217171583ull, 3919495288547369845ull}}, {{12137131115197828382ull, 11728444305536593976ull, 4035768642474426191ull, 2449684555342106153ull}}, {{15171413893997285477ull, 10048869363493354566ull, 9656396821520420643ull, 3062105694177632691ull}}, {{9740895330641831038ull, 7949400685939305304ull, 7458810008473137900ull, 3827632117722040864ull}}, {{6088059581651144399ull, 14191747465566841623ull, 4661756255295711187ull, 2392270073576275540ull}}, {{2998388458636542595ull, 13127998313531164125ull, 5827195319119638984ull, 2990337591970344425ull}}, {{8359671591723066147ull, 16409997891913955156ull, 11895680167326936634ull, 3737921989962930531ull}}, {{14448166781681692150ull, 14867934700873609876ull, 5128957095365641444ull, 2336201243726831582ull}}, {{18060208477102115188ull, 138174302382460729ull, 15634568406061827614ull, 2920251554658539477ull}}, {{8740202541095480273ull, 9396089914832851720ull, 5708152452295120805ull, 3650314443323174347ull}}, {{10925253176369350341ull, 16356798411968452554ull, 2523504546941513102ull, 4562893054153967934ull}}, {{11439969253658231867ull, 5611312989052894942ull, 15412248397120609401ull, 2851808158846229958ull}}, {{5076589530218014026ull, 11625827254743506582ull, 10041938459545985943ull, 3564760198557787448ull}}, {{15569108949627293340ull, 9920598050001995323ull, 12552423074432482429ull, 4455950248197234310ull}}, {{7424850084303364386ull, 8506216790464941029ull, 3233578403092913614ull, 2784968905123271444ull}}, {{13892748623806593386ull, 1409398951226400478ull, 4041973003866142018ull, 3481211131404089305ull}}, {{8142563742903465924ull, 10985120725887776406ull, 9664152273260065426ull, 4351513914255111631ull}}, {{477416320887278299ull, 11477386472107248158ull, 12957624198428622747ull, 2719696196409444769ull}}, {{9820142437963873681ull, 9735047071706672293ull, 2361972192753614722ull, 3399620245511805962ull}}, {{16886864065882230006ull, 2945436802778564558ull, 12175837277796794211ull, 4249525306889757452ull}}, {{5942604022749005850ull, 17981799066232460513ull, 16833270335477772189ull, 2655953316806098407ull}}, {{12039941046863645216ull, 8642190777508411929ull, 16429901900919827333ull, 3319941646007623009ull}}, {{1214868253297392808ull, 15414424490312902816ull, 6702319320867620454ull, 4149927057509528762ull}}, {{759292658310870505ull, 5022329288018176356ull, 8800635593969650688ull, 2593704410943455476ull}}, {{949115822888588131ull, 6277911610022720445ull, 11000794492462063360ull, 3242130513679319345ull}}, {{5798080797038123068ull, 7847389512528400556ull, 18362679134004967104ull, 4052663142099149181ull}}, {{12847172535003602726ull, 4904618445330250347ull, 13782517467966798392ull, 2532914463811968238ull}}, {{11447279650327115503ull, 6130773056662812934ull, 8004774798103722182ull, 3166143079764960298ull}}, {{5085727526054118571ull, 16886838357683291976ull, 782596460774876919ull, 3957678849706200373ull}}, {{3178579703783824107ull, 17471803001193139341ull, 2794965797197992026ull, 2473549281066375233ull}}, {{8584910648157168037ull, 12616381714636648368ull, 8105393264924877937ull, 3091936601332969041ull}}, {{10731138310196460047ull, 1935419088013646748ull, 14743427599583485326ull, 3864920751666211301ull}}, {{15930333480727563337ull, 15044694985290692929ull, 11520485258953372280ull, 2415575469791382063ull}}, {{6077858795627290460ull, 359124657903814546ull, 9788920555264327447ull, 3019469337239227579ull}}, {{16820695531388888882ull, 14283963877661931894ull, 7624464675653021404ull, 3774336671549034474ull}}, {{5901248688690667648ull, 18150849460393483242ull, 9376976440710526281ull, 2358960419718146546ull}}, {{16599932897718110367ull, 8853503770209690340ull, 2497848514033382044ull, 2948700524647683183ull}}, {{2303172048438086343ull, 11066879712762112926ull, 16957368697823891267ull, 3685875655809603978ull}}, {{12102337097402383737ull, 9221913622525253253ull, 11973338835425088276ull, 4607344569762004973ull}}, {{9869803695090183788ull, 14987068050933059091ull, 9789179781354374124ull, 2879590356101253108ull}}, {{7725568600435341830ull, 287090989956772248ull, 12236474726692967656ull, 3599487945126566385ull}}, {{9656960750544177288ull, 358863737445965310ull, 1460535353084045858ull, 4499359931408207982ull}}, {{1423914450662722901ull, 4835975854331116223ull, 14747892650959692373ull, 2812099957130129988ull}}, {{15614951118610567338ull, 10656655836341283182ull, 18434865813699615466ull, 3515124946412662485ull}}, {{10295316861408433365ull, 4097447758571828170ull, 9208524211842355621ull, 4393906183015828107ull}}, {{11046259056807658757ull, 4866747858321086558ull, 3449484623187778311ull, 2746191364384892567ull}}, {{4584451784154797638ull, 1471748804473970294ull, 18146913834266886601ull, 3432739205481115708ull}}, {{14953936767048272856ull, 6451372024019850771ull, 4236898219124056635ull, 4290924006851394636ull}}, {{7040367470191476583ull, 1726264505798712780ull, 11871433423807311205ull, 2681827504282121647ull}}, {{8800459337739345729ull, 6769516650675778879ull, 10227605761331751102ull, 3352284380352652059ull}}, {{6388888153746794257ull, 17685267850199499407ull, 8172821183237300973ull, 4190355475440815074ull}}, {{10910584123732828267ull, 13359135415588381081ull, 9719699257950701012ull, 2618972172150509421ull}}, {{18249916173093423237ull, 16698919269485476351ull, 16761310090865764169ull, 3273715215188136776ull}}, {{18200709197939391142ull, 7038591031574681727ull, 2504893539872653596ull, 4092144018985170971ull}}, {{18292972276353201320ull, 13622491431588951887ull, 17706459526916266161ull, 2557590011865731856ull}}, {{18254529327014113746ull, 3193056234204026147ull, 3686330334935781086ull, 3196987514832164821ull}}, {{18206475640340254279ull, 13214692329609808492ull, 9219598937097114261ull, 3996234393540206026ull}}, {{2155675238357883116ull, 10565025715219824260ull, 10373935354113084317ull, 2497646495962628766ull}}, {{2694594047947353895ull, 17817968162452168229ull, 3744047155786579588ull, 3122058119953285958ull}}, {{7979928578361580273ull, 3825716129355658670ull, 13903430981588000294ull, 3902572649941607447ull}}, {{375769343048599767ull, 16226130636129450381ull, 15607173391133582039ull, 2439107906213504654ull}}, {{5081397697238137612ull, 15670977276734425072ull, 10285594702062201741ull, 3048884882766880818ull}}, {{6351747121547672015ull, 5753663540635867628ull, 3633621340722976369ull, 3811106103458601023ull}}, {{13193213987822070818ull, 15125254758965887027ull, 9188542365592942086ull, 2381941314661625639ull}}, {{11879831466350200618ull, 9683196411852582976ull, 6873991938563789704ull, 2977426643327032049ull}}, {{14849789332937750772ull, 12103995514815728720ull, 13204175941632125034ull, 3721783304158790061ull}}, {{9281118333086094233ull, 12176683215187218354ull, 10558452972733772098ull, 2326114565099243788ull}}, {{2378025879502841983ull, 5997481982129247135ull, 13198066215917215123ull, 2907643206374054735ull}}, {{16807590404660716191ull, 2885166459234171014ull, 11885896751469131000ull, 3634554007967568419ull}}, {{11786115968971119430ull, 3606458074042713768ull, 10245684920909025846ull, 4543192509959460524ull}}, {{7366322480606949644ull, 16089094351558859817ull, 15626925112422916961ull, 2839495318724662827ull}}, {{13819589119186074959ull, 6276309884166411059ull, 14921970372101258298ull, 3549369148405828534ull}}, {{12662800380555205795ull, 17068759392062789632ull, 9429090928271797064ull, 4436711435507285668ull}}, {{7914250237847003622ull, 10667974620039243520ull, 15116553867024648973ull, 2772944647192053542ull}}, {{9892812797308754527ull, 17946654293476442304ull, 9672320296926035408ull, 3466180808990066928ull}}, {{12366015996635943159ull, 3986573793136001264ull, 12090400371157544261ull, 4332726011237583660ull}}, {{7728759997897464474ull, 4797451629923694742ull, 16779872268828240971ull, 2707953757023489787ull}}, {{437577960517054785ull, 1385128518977230524ull, 16363154317607913310ull, 3384942196279362234ull}}, {{546972450646318481ull, 10954782685576313963ull, 11230570860155115829ull, 4231177745349202793ull}}, {{16482758846149806715ull, 9152582187698890178ull, 101577759955865537ull, 2644486090843251746ull}}, {{11380076520832482585ull, 16052413753051000627ull, 9350344236799607729ull, 3305607613554064682ull}}, {{9613409632613215328ull, 6230459136031587072ull, 2464558259144733854ull, 4132009516942580853ull}}, {{6008381020383259580ull, 17729095015301905632ull, 3846191921179152610ull, 2582505948089113033ull}}, {{7510476275479074475ull, 12937996732272606232ull, 9419425919901328667ull, 3228132435111391291ull}}, {{9388095344348843093ull, 11560809896913369886ull, 7162596381449272930ull, 4035165543889239114ull}}, {{1255873571790639030ull, 11837192203998244083ull, 9088308756833183485ull, 2521978464930774446ull}}, {{15404900020020462499ull, 961432199715641391ull, 2137013909186703549ull, 3152473081163468058ull}}, {{14644439006598190219ull, 5813476268071939643ull, 11894639423338155244ull, 3940591351454335072ull}}, {{6846931369910174935ull, 12856794704399738085ull, 7434149639586347027ull, 2462869594658959420ull}}, {{13170350230815106573ull, 11459307362072284702ull, 9292687049482933784ull, 3078586993323699275ull}}, {{7239565751664107408ull, 14324134202590355878ull, 7004172793426279326ull, 3848233741654624094ull}}, {{18359786650072230842ull, 4340897858191584519ull, 18212666051173588291ull, 2405146088534140058ull}}, {{18338047294162900649ull, 814436304312092745ull, 13542460527112209556ull, 3006432610667675073ull}}, {{9087501062421462099ull, 1018045380390115932ull, 3093017603608098233ull, 3758040763334593842ull}}, {{14903060200868189620ull, 12165493408812292217ull, 6544822020682449299ull, 2348775477084121151ull}}, {{4793767195803073313ull, 10595180742587977368ull, 3569341507425673720ull, 2935969346355151439ull}}, {{5992208994753841641ull, 13243975928234971710ull, 18296734939564255862ull, 3669961682943939298ull}}, {{16713633280297077859ull, 7331597873438938829ull, 13647546637600544020ull, 4587452103679924123ull}}, {{12751863809399367614ull, 13805620707754112576ull, 6223873639286646060ull, 2867157564799952577ull}}, {{15939829761749209517ull, 17257025884692640720ull, 12391528067535695479ull, 3583946955999940721ull}}, {{1478043128476960281ull, 16959596337438412997ull, 1654352029137455637ull, 4479933694999925902ull}}, {{3229619964511794128ull, 12905590720112702075ull, 14869028073493073485ull, 2799958559374953688ull}}, {{17872083010921906371ull, 2296930344858713881ull, 139541018156790241ull, 3499948199218692111ull}}, {{8505045708370219252ull, 7482848949500780256ull, 14009484327978151513ull, 4374935249023365138ull}}, {{5315653567731387033ull, 16205995639506457420ull, 13367613723413732599ull, 2734334530639603211ull}}, {{6644566959664233791ull, 15645808530955683871ull, 12097831135839777845ull, 3417918163299504014ull}}, {{3694022681152904334ull, 5722202608412441127ull, 5898916882944946499ull, 4272397704124380018ull}}, {{9226293203361647065ull, 1270533621044081752ull, 8298509070267979466ull, 2670248565077737511ull}}, {{11532866504202058831ull, 10811539063159877998ull, 5761450319407586428ull, 3337810706347171889ull}}, {{5192711093397797731ull, 13514423828949847498ull, 11813498917686870939ull, 4172263382933964861ull}}, {{7857130451801011486ull, 6140671883879960734ull, 9689279832767988289ull, 2607664614333728038ull}}, {{598041027896488549ull, 12287525873277338822ull, 2888227754105209553ull, 3259580767917160048ull}}, {{9970923321725386495ull, 1524349286314509815ull, 3610284692631511942ull, 4074475959896450060ull}}, {{13149356103719448415ull, 14787776359228732346ull, 11479799969749470771ull, 2546547474935281287ull}}, {{7213323092794534711ull, 13873034430608527529ull, 9738063943759450560ull, 3183184343669101609ull}}, {{13628339884420556293ull, 17341293038260659411ull, 16784265948126701104ull, 3978980429586377011ull}}, {{6211869418549153731ull, 10838308148912912132ull, 8184323208365494238ull, 2486862768491485632ull}}, {{7764836773186442164ull, 4324513149286364357ull, 10230404010456867798ull, 3108578460614357040ull}}, {{14317731984910440609ull, 14629013473462731254ull, 12788005013071084747ull, 3885723075767946300ull}}, {{4336896472141637477ull, 6837290411700513082ull, 17215875170024203775ull, 2428576922354966437ull}}, {{14644492627031822654ull, 3934926996198253448ull, 7684785907248091007ull, 3035721152943708047ull}}, {{18305615783789778317ull, 306972726820428906ull, 4994296365632725855ull, 3794651441179635059ull}}, {{16052695883295999352ull, 7109386981903849922ull, 815592219306759707ull, 2371657150737271912ull}}, {{10842497817265223382ull, 4275047708952424499ull, 1019490274133449634ull, 2964571438421589890ull}}, {{8941436253154141324ull, 14567181673045306432ull, 10497734879521587850ull, 3705714298026987362ull}}, {{5588397658221338327ull, 13716174564080704424ull, 11172770318128380310ull, 2316071436266867101ull}}, {{6985497072776672909ull, 7921846168246104722ull, 130904842378311676ull, 2895089295333583877ull}}, {{17955243377825616944ull, 9902307710307630902ull, 4775317071400277499ull, 3618861619166979846ull}}, {{13220682185427245372ull, 7766198619457150724ull, 15192518376105122682ull, 4523577023958724807ull}}, {{17486298402746804166ull, 9465560155588107106ull, 16412853012706783532ull, 2827235639974203004ull}}, {{12634500966578729399ull, 11831950194485133883ull, 2069322192173927799ull, 3534044549967753756ull}}, {{11181440189796023845ull, 10178251724679029450ull, 2586652740217409749ull, 4417555687459692195ull}}, {{11600086137049902807ull, 8667250337138087358ull, 17757559027131738757ull, 2760972304662307621ull}}, {{5276735634457602701ull, 15445748939849997102ull, 8361890728632509734ull, 3451215380827884527ull}}, {{15819291579926779184ull, 10083814137957720569ull, 5840677392363249264ull, 4314019226034855659ull}}, {{2969528209813155134ull, 6302383836223575356ull, 1344580361013336838ull, 2696262016271784787ull}}, {{3711910262266443918ull, 17101351832134245003ull, 15515783506548834759ull, 3370327520339730983ull}}, {{28201809405666993ull, 16765003771740418350ull, 14783043364758655545ull, 4212909400424663729ull}}, {{13852684186160705583ull, 3560598329696679612ull, 2321873075333077860ull, 2633068375265414831ull}}, {{17315855232700881978ull, 4450747912120849515ull, 16737399399448511037ull, 3291335469081768538ull}}, {{17033133022448714569ull, 10175120908578449798ull, 11698377212455862988ull, 4114169336352210673ull}}, {{6034022120603058702ull, 15582822604716306932ull, 393956730143832511ull, 2571355835220131671ull}}, {{7542527650753823377ull, 14866842237467995761ull, 14327503967961954351ull, 3214194794025164588ull}}, {{14039845581869667125ull, 13971866778407606797ull, 17909379959952442939ull, 4017743492531455735ull}}, {{11080746497882235905ull, 6426573727291060296ull, 18110891502611358693ull, 2511089682832159834ull}}, {{13850933122352794882ull, 12644903177541213274ull, 13415242341409422558ull, 3138862103540199793ull}}, {{8090294366086217794ull, 6582756935071740785ull, 2933994871479614486ull, 3923577629425249742ull}}, {{16585649024872355881ull, 17949281139702001702ull, 15668804849956922765ull, 2452236018390781088ull}}, {{11508689244235669044ull, 8601543369345338416ull, 1139261988736601841ull, 3065295022988476361ull}}, {{14385861555294586304ull, 15363615230109060924ull, 6035763504348140205ull, 3831618778735595451ull}}, {{18214535508913892248ull, 11908102528031857029ull, 1466509181003893676ull, 2394761736709747157ull}}, {{8933111330860201598ull, 14885128160039821287ull, 6444822494682254999ull, 2993452170887183946ull}}, {{6554703145147864094ull, 13994724181622388705ull, 17279400155207594557ull, 3741815213608979932ull}}, {{15625904511785884819ull, 11052545622727686892ull, 1576253060149970790ull, 2338634508505612458ull}}, {{1085636566022804407ull, 4592309991554832808ull, 11193688362042239296ull, 2923293135632015572ull}}, {{1357045707528505509ull, 5740387489443541010ull, 13992110452552799120ull, 3654116419540019465ull}}, {{10919679171265407694ull, 7175484361804426262ull, 3655080010408835188ull, 4567645524425024332ull}}, {{2213113463613491905ull, 13708049762982542222ull, 11507797043360297800ull, 2854778452765640207ull}}, {{11989763866371640689ull, 17135062203728177777ull, 9773060285772984346ull, 3568473065957050259ull}}, {{1152146777682387150ull, 12195455717805446414ull, 7604639338788842529ull, 4460591332446312824ull}}, {{14555149791333655681ull, 704630795987322152ull, 4752899586743026581ull, 2787869582778945515ull}}, {{18193937239167069601ull, 5492474513411540594ull, 1329438465001395322ull, 3484836978473681894ull}}, {{13519049512104061193ull, 16088965178619201551ull, 10885170118106519960ull, 4356046223092102367ull}}, {{15366934972706120102ull, 10055603236637000969ull, 13720760351457656831ull, 2722528889432563979ull}}, {{5373610660600486415ull, 7957818027368863308ull, 12539264420894683135ull, 3403161111790704974ull}}, {{6717013325750608019ull, 5335586515783691231ull, 6450708489263578111ull, 4253951389738381218ull}}, {{11115662356235211868ull, 10252270600005888875ull, 8643378824217124223ull, 2658719618586488261ull}}, {{9282891926866626931ull, 8203652231579973190ull, 15415909548698793183ull, 3323399523233110326ull}}, {{2380242871728507855ull, 5642879271047578584ull, 10046514899018715671ull, 4154249404041387908ull}}, {{1487651794830317410ull, 10444328572045818471ull, 15502443848741473102ull, 2596405877525867442ull}}, {{15694622798820060474ull, 3832038678202497280ull, 10154682774072065570ull, 3245507346907334303ull}}, {{1171534424815523976ull, 14013420384607897409ull, 8081667449162694058ull, 4056884183634167879ull}}, {{12261424061578172245ull, 13370073758807323784ull, 11968571183367765642ull, 2535552614771354924ull}}, {{15326780076972715307ull, 7489220161654378922ull, 14960713979209707053ull, 3169440768464193655ull}}, {{9935103059361118325ull, 13973211220495361557ull, 14089206455584745912ull, 3961800960580242069ull}}, {{8515282421314392905ull, 8733257012809600973ull, 11111597043954160147ull, 2476125600362651293ull}}, {{15255789045070379036ull, 6304885247584613312ull, 54438249660536472ull, 3095157000453314117ull}}, {{622992232628422178ull, 7881106559480766641ull, 4679733830503058494ull, 3868946250566642646ull}}, {{11918585191461233622ull, 314005581248091246ull, 16759891699346575271ull, 2418091406604151653ull}}, {{5674859452471766219ull, 14227565031842277770ull, 7114806568901055376ull, 3022614258255189567ull}}, {{16316946352444483582ull, 17784456289802847212ull, 4281822192698931316ull, 3778267822818986959ull}}, {{974719433423026431ull, 1891913144272003700ull, 9593667898077913929ull, 2361417389261866849ull}}, {{1218399291778783038ull, 6976577448767392529ull, 16603770891024780315ull, 2951771736577333561ull}}, {{6134685133150866702ull, 4109035792531852757ull, 6919655558498811682ull, 3689714670721666952ull}}, {{6140021217432985641ull, 7179833388759795877ull, 4324784724061757301ull, 2306071669201041845ull}}, {{12286712540218619955ull, 13586477754377132750ull, 10017666923504584530ull, 2882589586501302306ull}}, {{6135018638418499135ull, 7759725156116640130ull, 3298711617525954855ull, 3603236983126627883ull}}, {{16892145334877899727ull, 5087970426718412258ull, 17958447577189607281ull, 4504046228908284853ull}}, {{15169276852726075234ull, 14709196562767477421ull, 13529872744957198502ull, 2815028893067678033ull}}, {{5126538010625430330ull, 9163123666604570969ull, 3077282875914334416ull, 3518786116334597542ull}}, {{11019858531709175816ull, 11453904583255713711ull, 13069975631747693828ull, 4398482645418246927ull}}, {{13804940609959316741ull, 16382062401389596877ull, 15086263797483390498ull, 2749051653386404329ull}}, {{3421117707166982215ull, 11254205964882220289ull, 5022771691572074411ull, 3436314566733005412ull}}, {{8888083152386115672ull, 9456071437675387457ull, 6278464614465093014ull, 4295393208416256765ull}}, {{17084267016309792055ull, 1298358630119729256ull, 6229883393254377086ull, 2684620755260160478ull}}, {{2908589696677688453ull, 10846320324504437379ull, 17010726278422747165ull, 3355775944075200597ull}}, {{17470795176129274278ull, 18169586424057934627ull, 7428349792746270244ull, 4194719930094000747ull}}, {{8613403975867102472ull, 2132619478181433334ull, 2336875611252724951ull, 2621699956308750467ull}}, {{1543382932979102282ull, 16500832403008955380ull, 16756152569348069900ull, 3277124945385938083ull}}, {{1929228666223877852ull, 2179296430051642609ull, 16333504693257699472ull, 4096406181732422604ull}}, {{12734982962458393418ull, 1362060268782276630ull, 985068396431286362ull, 2560253863582764128ull}}, {{6695356666218215964ull, 10925947372832621596ull, 1231335495539107952ull, 3200317329478455160ull}}, {{8369195832772769955ull, 13657434216040776995ull, 1539169369423884940ull, 4000396661848068950ull}}, {{2924904386269287270ull, 17759268421880261430ull, 14797038911172091799ull, 2500247913655043093ull}}, {{12879502519691384895ull, 17587399508922938883ull, 4661240583682951037ull, 3125309892068803867ull}}, {{11487692131186843215ull, 8149191330871509892ull, 1214864711176300893ull, 3906637365086004834ull}}, {{16403179618846552818ull, 7399087591008387634ull, 5370976462912575962ull, 2441648353178753021ull}}, {{11280602486703415214ull, 25487451905708735ull, 11325406597068107857ull, 3052060441473441276ull}}, {{9489067089951881113ull, 4643545333309523823ull, 14156758246335134821ull, 3815075551841801595ull}}, {{12848195958861007552ull, 5208058842532146341ull, 6542130894745765311ull, 2384422219901125997ull}}, {{2225186893294095728ull, 1898387534737795023ull, 12789349636859594543ull, 2980527774876407496ull}}, {{16616541671899783372ull, 16208042473704407490ull, 15986687046074493178ull, 3725659718595509370ull}}, {{14997024563364752511ull, 14741712564492642585ull, 14603365422223946140ull, 2328537324122193356ull}}, {{4911222648923776927ull, 18427140705615803232ull, 18254206777779932675ull, 2910671655152741695ull}}, {{6139028311154721159ull, 18422239863592366136ull, 18206072453797527940ull, 3638339568940927119ull}}, {{7673785388943401449ull, 4581055755780906054ull, 18145904548819522022ull, 4547924461176158899ull}}, {{184429849662238002ull, 16698217902645229996ull, 9035347333798507311ull, 2842452788235099312ull}}, {{230537312077797502ull, 16261086359879149591ull, 11294184167248134139ull, 3553065985293874140ull}}, {{14123229695379410589ull, 15714671931421549084ull, 14117730209060167674ull, 4441332481617342675ull}}, {{18050390596466907426ull, 14433355975565856081ull, 6517738371448910844ull, 2775832801010839172ull}}, {{8727930190301470571ull, 18041694969457320102ull, 8147172964311138555ull, 3469791001263548965ull}}, {{1686540701022062405ull, 17940432693394262224ull, 14795652223816311098ull, 4337238751579436206ull}}, {{1054087938138789004ull, 15824456451798801794ull, 4635596621457806532ull, 2710774219737147629ull}}, {{10540981959528262062ull, 1333826491038950626ull, 10406181795249646070ull, 3388467774671434536ull}}, {{3952855412555551770ull, 10890655150653464091ull, 13007727244062057587ull, 4235584718339293170ull}}, {{164691623633525904ull, 4500816459944721105ull, 12741515545966173896ull, 2647240448962058231ull}}, {{4817550547969295284ull, 5626020574930901381ull, 11315208414030329466ull, 3309050561202572789ull}}, {{10633624203389007009ull, 16255897755518402534ull, 308952462255748120ull, 4136313201503215987ull}}, {{2034329108690741477ull, 10159936097199001584ull, 16333996353405700239ull, 2585195750939509991ull}}, {{2542911385863426846ull, 8088234103071364076ull, 15805809423329737395ull, 3231494688674387489ull}}, {{3178639232329283557ull, 5498606610411817191ull, 5922203723880008032ull, 4039368360842984362ull}}, {{8904178547846884080ull, 3436629131507385744ull, 8313063345852392924ull, 2524605225526865226ull}}, {{11130223184808605099ull, 4295786414384232180ull, 1167957145460715347ull, 3155756531908581533ull}}, {{13912778981010756374ull, 758046999552902321ull, 6071632450253282088ull, 3944695664885726916ull}}, {{1777957835490640878ull, 473779374720563951ull, 13018142318263077113ull, 2465434790553579322ull}}, {{16057505349645464809ull, 5203910236828092842ull, 7049305860974070583ull, 3081793488191974153ull}}, {{10848509650202055204ull, 1893201777607728149ull, 13423318344644976133ull, 3852241860239967691ull}}, {{9086161540589978454ull, 3489094120218524045ull, 6083730956189416131ull, 2407651162649979807ull}}, {{15969387944164860972ull, 18196425705555318768ull, 2992977676809382259ull, 3009563953312474759ull}}, {{1514990856496524599ull, 18133846113516760557ull, 17576280151293891536ull, 3761954941640593448ull}}, {{3252712294524021826ull, 11333653820947975348ull, 10985175094558682210ull, 2351221838525370905ull}}, {{4065890368155027283ull, 4943695239330193377ull, 18343154886625740667ull, 2939027298156713631ull}}, {{9694048978621172007ull, 1567933030735353817ull, 18317257589854787930ull, 3673784122695892039ull}}, {{16729247241703852913ull, 11183288325273968079ull, 18284885968891097008ull, 4592230153369865049ull}}, {{17373308553705989927ull, 6989555203296230049ull, 4510524702915853774ull, 2870143845856165656ull}}, {{7881577636850323697ull, 17960316040975063370ull, 5638155878644817217ull, 3587679807320207070ull}}, {{628600009208128813ull, 8615336995936665501ull, 16271066885160797330ull, 4484599759150258837ull}}, {{2698718014968774460ull, 9996271640887803842ull, 12475259812439192283ull, 2802874849468911773ull}}, {{12596769555565743883ull, 7883653532682366898ull, 1759016710266826642ull, 3503593561836139717ull}}, {{6522589907602404046ull, 631194878998182815ull, 6810456906260921207ull, 4379491952295174646ull}}, {{10994147719892584385ull, 7312025827014946115ull, 18091593621695239466ull, 2737182470184484153ull}}, {{9130998631438342577ull, 18363404320623458452ull, 8779433971836885620ull, 3421478087730605192ull}}, {{11413748289297928221ull, 4507511327069771449ull, 10974292464796107026ull, 4276847609663256490ull}}, {{216063653170123282ull, 7428880597845995060ull, 11470618808924954795ull, 2673029756039535306ull}}, {{270079566462654103ull, 4674414728880105921ull, 5114901474301417686ull, 3341287195049419133ull}}, {{4949285476505705532ull, 15066390447954908209ull, 11005312861304160011ull, 4176608993811773916ull}}, {{14622518468884535718ull, 7110651020758123678ull, 16101692575169875815ull, 2610380621132358697ull}}, {{9054776049250893839ull, 4276627757520266694ull, 6292057663680181057ull, 3262975776415448372ull}}, {{2095098024708841491ull, 9957470715327721272ull, 7865072079600226321ull, 4078719720519310465ull}}, {{1309436265443025932ull, 17752634243148295555ull, 16444885095818611210ull, 2549199825324569040ull}}, {{15471853387085946127ull, 12967420767080593635ull, 2109362296063712397ull, 3186499781655711301ull}}, {{14728130715430044754ull, 2374217903568578332ull, 7248388888507028401ull, 3983124727069639126ull}}, {{18428453733998553780ull, 13013101235798831217ull, 18365301110599056462ull, 2489452954418524453ull}}, {{9200509112216028512ull, 7043004507893763214ull, 9121568332966656866ull, 3111816193023155567ull}}, {{2277264353415259832ull, 18027127671721979826ull, 6790274397780933178ull, 3889770241278944459ull}}, {{6034976239311925299ull, 15878640813253625295ull, 1938078489399389284ull, 2431106400799340287ull}}, {{2932034280712518720ull, 1401556942857480003ull, 16257656167031400318ull, 3038883000999175358ull}}, {{17500100906172812112ull, 10975318215426625811ull, 11098698171934474589ull, 3798603751248969198ull}}, {{8631720057144313618ull, 9165416893855335084ull, 2325000339031658714ull, 2374127344530605749ull}}, {{10789650071430392023ull, 2233399080464393047ull, 7517936442216961297ull, 2967659180663257186ull}}, {{8875376570860602124ull, 7403434869007879213ull, 174048515916425813ull, 3709573975829071483ull}}, {{7852953366001570280ull, 6932989802343618460ull, 16249681386943623797ull, 2318483734893169676ull}}, {{9816191707501962850ull, 13277923271356910979ull, 1865357659969978130ull, 2898104668616462096ull}}, {{7658553615950065658ull, 7374032052341362916ull, 2331697074962472663ull, 3622630835770577620ull}}, {{9573192019937582072ull, 4605854046999315741ull, 2914621343703090829ull, 4528288544713222025ull}}, {{8289088021674682747ull, 5184501788588266290ull, 13350853385882901528ull, 2830180340445763765ull}}, {{1137987990238577626ull, 6480627235735332863ull, 2853508677071463198ull, 3537725425557204707ull}}, {{15257543043080385744ull, 17324156081523941886ull, 17401943901621492709ull, 4422156781946505883ull}}, {{4924278383497853186ull, 13133440560166157631ull, 8570371929299738991ull, 2763847988716566177ull}}, {{1543661960944928579ull, 11805114681780309135ull, 15324650930052061643ull, 3454809985895707721ull}}, {{15764635506463324436ull, 10144707333797998514ull, 5320755607282913342ull, 4318512482369634652ull}}, {{14464583209966965676ull, 1728756065196361167ull, 12548844291406596647ull, 2699070301481021657ull}}, {{13469042994031319191ull, 15996003136777615171ull, 1850997308976082096ull, 3373837876851277072ull}}, {{12224617724111761085ull, 1548259847262467348ull, 2313746636220102621ull, 4217297346064096340ull}}, {{16863758114424626486ull, 3273505413752736044ull, 10669463684492339946ull, 2635810841290060212ull}}, {{2632953569321231492ull, 13315253804045695864ull, 13336829605615424932ull, 3294763551612575265ull}}, {{3291191961651539365ull, 16644067255057119830ull, 2835978951737117453ull, 4118454439515719082ull}}, {{15892053031314375815ull, 12708385043624393845ull, 6384172863263086312ull, 2574034024697324426ull}}, {{6030008233860806057ull, 15885481304530492307ull, 17203588115933633698ull, 3217542530871655532ull}}, {{2925824273898619667ull, 10633479593808339576ull, 3057741071207490507ull, 4021928163589569416ull}}, {{1828640171186637292ull, 4340081736916518283ull, 1911088169504681567ull, 2513705102243480885ull}}, {{16120858269265460327ull, 813416152718259949ull, 7000546230308239863ull, 3142131377804351106ull}}, {{6316014781299661696ull, 14851828246179988649ull, 17974054824740075636ull, 3927664222255438882ull}}, {{15476724284380758320ull, 59020617007717097ull, 15845470283889935177ull, 2454790138909649301ull}}, {{5510847300193784188ull, 4685461789687034276ull, 5971779799580255259ull, 3068487673637061627ull}}, {{6888559125242230235ull, 1245141218681404941ull, 2853038731047931170ull, 3835609592046327034ull}}, {{6611192462490087849ull, 5389899280103265992ull, 6394835225332344885ull, 2397255995028954396ull}}, {{8263990578112609812ull, 11349060118556470394ull, 7993544031665431106ull, 2996569993786192995ull}}, {{1106616185785986456ull, 4962953111340812185ull, 5380244021154400979ull, 3745712492232741244ull}}, {{12220850162184711295ull, 796002685374313663ull, 12586024550076276420ull, 2341070307645463277ull}}, {{10664376684303501215ull, 995003356717892079ull, 1897472632313181813ull, 2926337884556829097ull}}, {{8718784836951988615ull, 5855440214324753003ull, 6983526808818865170ull, 3657922355696036371ull}}, {{6286795027762597864ull, 16542672304760717062ull, 4117722492596193558ull, 4572402944620045464ull}}, {{17764304947633787377ull, 5727484172048060259ull, 2573576557872620974ull, 2857751840387528415ull}}, {{17593695166114846318ull, 16382727251914851132ull, 17052028752622939929ull, 3572189800484410518ull}}, {{3545374883934006281ull, 6643351009611400204ull, 12091663903923899104ull, 4465237250605513148ull}}, {{11439231339313529734ull, 4152094381007125127ull, 16780661976807212748ull, 2790773281628445717ull}}, {{9687353155714524263ull, 5190117976258906409ull, 7140769415726852223ull, 3488466602035557147ull}}, {{16720877463070543233ull, 1875961451896245107ull, 4314275751231177375ull, 4360583252544446434ull}}, {{8144705405205395569ull, 8090004935076235048ull, 7308108362946873763ull, 2725364532840279021ull}}, {{10180881756506744461ull, 5500820150417905906ull, 13746821472110980108ull, 3406705666050348776ull}}, {{3502730158778654768ull, 6876025188022382383ull, 17183526840138725135ull, 4258382082562935970ull}}, {{9106735376877741086ull, 11215044770155070845ull, 15351390293514091113ull, 2661488801601834981ull}}, {{15995105239524564261ull, 183747907411674844ull, 5354179811610450180ull, 3326861002002293727ull}}, {{1547137475696153711ull, 229684884264593556ull, 2081038746085674821ull, 4158576252502867159ull}}, {{10190332959164871877ull, 2449396061879064924ull, 8218178243944628619ull, 2599110157814291974ull}}, {{12737916198956089846ull, 16896803132630994867ull, 1049350768076009965ull, 3248887697267864968ull}}, {{11310709230267724404ull, 7285945860506579872ull, 1311688460095012457ull, 4061109621584831210ull}}, {{7069193268917327753ull, 16082931208885082180ull, 5431491305986770689ull, 2538193513490519506ull}}, {{8836491586146659691ull, 6268605955824189013ull, 16012736169338239170ull, 3172741891863149382ull}}, {{15657300501110712517ull, 17059129481635012074ull, 10792548174818023154ull, 3965927364828936728ull}}, {{14397498831621583227ull, 15273641944449270450ull, 6745342609261264471ull, 2478704603018085455ull}}, {{8773501502672203226ull, 14480366412134200159ull, 3819992243149192685ull, 3098380753772606819ull}}, {{6355190859912866129ull, 4265399959885586487ull, 163304285509102953ull, 3872975942215758524ull}}, {{10889523315086623187ull, 14195090020996961314ull, 9325437215297965153ull, 2420609963884849077ull}}, {{4388532107003503175ull, 3908804470964037931ull, 16268482537549844346ull, 3025762454856061346ull}}, {{873979115326991065ull, 14109377625559823222ull, 11112231135082529624ull, 3782203068570076683ull}}, {{14381295002361533128ull, 8818361015974889513ull, 4639301450212887063ull, 2363876917856297927ull}}, {{4141560697669752697ull, 6411265251541223988ull, 1187440794338720925ull, 2954846147320372409ull}}, {{5176950872087190872ull, 12625767582853917889ull, 6095987011350789060ull, 3693557684150465511ull}}, {{14764809341122964055ull, 17114476776138474488ull, 10727520909735325018ull, 2308473552594040944ull}}, {{9267602694153453ull, 12169723933318317303ull, 13409401137169156273ull, 2885591940742551180ull}}, {{13846642558649855528ull, 1377096861365732916ull, 16761751421461445342ull, 3606989925928188975ull}}, {{17308303198312319409ull, 10944743113561941953ull, 16340503258399418773ull, 4508737407410236219ull}}, {{3900160471304117775ull, 9146307455189907673ull, 7906971527285942781ull, 2817960879631397637ull}}, {{9486886607557535123ull, 16044570337414772495ull, 14495400427534816380ull, 3522451099539247046ull}}, {{7246922241019530999ull, 1608968848058914003ull, 8895878497563744668ull, 4403063874424058808ull}}, {{2223483391423512923ull, 10228977566891597060ull, 5559924060977340417ull, 2751914921515036755ull}}, {{2779354239279391153ull, 17397907977041884229ull, 2338219057794287617ull, 3439893651893795944ull}}, {{8085878817526626846ull, 7912326916020191574ull, 2922773822242859522ull, 4299867064867244930ull}}, {{441988242526753875ull, 9556890340940007638ull, 6438419657329175105ull, 2687416915542028081ull}}, {{9775857340013218151ull, 16557798944602397451ull, 12659710590088856785ull, 3359271144427535101ull}}, {{7608135656589134785ull, 6862190625470833102ull, 1989580182328907270ull, 4199088930534418877ull}}, {{143398766940821337ull, 18123927196201434401ull, 3549330623169260995ull, 2624430581584011798ull}}, {{4790934477103414575ull, 18043222976824405097ull, 13660035315816352052ull, 3280538226980014747ull}}, {{10600354114806656122ull, 4107284647320954755ull, 12463358126343052162ull, 4100672783725018434ull}}, {{4319378312540466125ull, 7178738923002984626ull, 12401284847391795505ull, 2562920489828136521ull}}, {{14622594927530358464ull, 13585109672181118686ull, 1666548003957580669ull, 3203650612285170652ull}}, {{9054871622558172271ull, 3146329034944234646ull, 2083185004946975837ull, 4004563265356463315ull}}, {{1047608745671469766ull, 4272298656053840606ull, 17442891692587717562ull, 2502852040847789571ull}}, {{10532882968944113015ull, 14563745356922076565ull, 17191928597307259048ull, 3128565051059736964ull}}, {{17777789729607529173ull, 18204681696152595706ull, 3043166672924522194ull, 3910706313824671206ull}}, {{15722804599432093637ull, 15989612078522760220ull, 15737037225859990083ull, 2444191446140419503ull}}, {{1206761675580565430ull, 15375329079726062372ull, 15059610513897599700ull, 3055239307675524379ull}}, {{1508452094475706788ull, 772417275948026349ull, 14212827123944611722ull, 3819049134594405474ull}}, {{3248625568261010695ull, 5094446815894904372ull, 13494702970892770230ull, 2386905709121503421ull}}, {{4060781960326263368ull, 15591430556723406273ull, 3033320658333799075ull, 2983632136401879277ull}}, {{9687663468835217114ull, 14877602177476869937ull, 8403336841344636748ull, 3729540170502349096ull}}, {{17584004714090480456ull, 75129324068267902ull, 5252085525840397968ull, 2330962606563968185ull}}, {{12756633855758324762ull, 93911655085334878ull, 11176792925727885364ull, 2913703258204960231ull}}, {{6722420282843130145ull, 117389568856668598ull, 9359305138732468801ull, 3642129072756200289ull}}, {{17626397390408688489ull, 4758422979498223651ull, 16310817441842973905ull, 4552661340945250361ull}}, {{8710655359791736354ull, 14503229408254859542ull, 3276731873510776834ull, 2845413338090781476ull}}, {{1664947162884894634ull, 8905664723463798620ull, 4095914841888471043ull, 3556766672613476845ull}}, {{2081183953606118293ull, 6520394885902360371ull, 9731579570787976708ull, 4445958340766846056ull}}, {{17441641035499681597ull, 13298618840543751039ull, 6082237231742485442ull, 2778723962979278785ull}}, {{17190365275947214092ull, 7399901513824912991ull, 12214482558105494707ull, 3473404953724098481ull}}, {{16876270576506629711ull, 4638190873853753335ull, 1433045142349704672ull, 4341756192155123102ull}}, {{17465198137957725426ull, 2898869296158595834ull, 14730711269250729132ull, 2713597620096951938ull}}, {{12608125635592380974ull, 3623586620198244793ull, 9190017049708635607ull, 3391997025121189923ull}}, {{1925098989208312505ull, 18364541330529969704ull, 6875835293708406604ull, 4239996281401487404ull}}, {{1203186868255195316ull, 2254466294726455257ull, 13520769095422529936ull, 2649997675875929627ull}}, {{6115669603746382049ull, 2818082868408069071ull, 12289275350850774516ull, 3312497094844912034ull}}, {{3032900986255589657ull, 3522603585510086339ull, 6138222151708692337ull, 4140621368556140043ull}}, {{18036464180905601200ull, 13730842287012273721ull, 1530545835604238758ull, 2587888355347587527ull}}, {{8710522170849837788ull, 7940180821910566344ull, 15748240349787462160ull, 3234860444184484408ull}}, {{10888152713562297234ull, 9925226027388207930ull, 1238556363524776084ull, 4043575555230605511ull}}, {{11416781464403823676ull, 15426638303972405764ull, 7691626754844066908ull, 2527234722019128444ull}}, {{14270976830504779595ull, 836553806255955589ull, 9614533443555083636ull, 3159043402523910555ull}}, {{4003662982848810781ull, 1045692257819944487ull, 7406480786016466641ull, 3948804253154888194ull}}, {{9419818391921588594ull, 12182772707205935064ull, 9240736509687679554ull, 2468002658221805121ull}}, {{11774772989901985743ull, 6005093847152643022ull, 16162606655536987347ull, 3085003322777256401ull}}, {{5495094200522706370ull, 2894681290513415874ull, 6368200264139070472ull, 3856254153471570502ull}}, {{8046119893754079386ull, 1809175806570884921ull, 17815183220369082757ull, 2410158845919731563ull}}, {{14669335885619987136ull, 6873155776640994055ull, 17657293007033965542ull, 3012698557399664454ull}}, {{13724983838597596016ull, 17814816757656018377ull, 12848244221937681119ull, 3765873196749580568ull}}, {{1660585871482415654ull, 18051789501176093342ull, 8030152638711050699ull, 2353670747968487855ull}}, {{11299104376207795375ull, 17953050858042728773ull, 5426004779961425470ull, 2942088434960609819ull}}, {{288822414977580507ull, 13217941535698635159ull, 2170819956524393934ull, 3677610543700762274ull}}, {{14196086074004139346ull, 7299054882768518140ull, 11936896982510268226ull, 4597013179625952842ull}}, {{18095925833107362899ull, 9173595320157711741ull, 12072246632496305545ull, 2873133237266220526ull}}, {{8784849236102039912ull, 16078680168624527581ull, 5866936253765606123ull, 3591416546582775658ull}}, {{15592747563554937794ull, 15486664192353271572ull, 16557042354061783462ull, 4489270683228469572ull}}, {{522095190367060313ull, 5067479101793406829ull, 1124779434433838856ull, 2805794177017793483ull}}, {{5264305006386213296ull, 6334348877241758536ull, 15241032348324462282ull, 3507242721272241853ull}}, {{6580381257982766619ull, 17141308133406973978ull, 5216232380123414140ull, 4384053401590302317ull}}, {{8724424304666617041ull, 1489945546524582928ull, 5565988246790827790ull, 2740033375993938948ull}}, {{10905530380833271302ull, 11085803970010504468ull, 6957485308488534737ull, 3425041719992423685ull}}, {{13631912976041589127ull, 22196907230966873ull, 13308542654038056326ull, 4281302149990529606ull}}, {{1602416582384911348ull, 13848931122301518008ull, 3706153140346397299ull, 2675813843744081004ull}}, {{2003020727981139185ull, 12699477884449509606ull, 4632691425432996624ull, 3344767304680101255ull}}, {{11727147946831199790ull, 15874347355561887007ull, 1179178263363857876ull, 4180959130850126569ull}}, {{14246996494410581725ull, 698095060371403571ull, 12266201460670880933ull, 2613099456781329105ull}}, {{13197059599585839252ull, 5484304843891642368ull, 1497693770556437454ull, 3266374320976661382ull}}, {{16496324499482299065ull, 16078753091719328768ull, 11095489250050322625ull, 4082967901220826727ull}}, {{10310202812176436916ull, 3131691654683498624ull, 13852209808922533497ull, 2551854938263016704ull}}, {{12887753515220546144ull, 8526300586781761184ull, 17315262261153166871ull, 3189818672828770880ull}}, {{16109691894025682680ull, 6046189715049813576ull, 3197333752731906973ull, 3987273341035963601ull}}, {{10068557433766051675ull, 6084711581119827437ull, 13527548641525911618ull, 2492045838147477250ull}}, {{17197382810634952498ull, 16829261513254560104ull, 7686063765052613714ull, 3115057297684346563ull}}, {{3049984439584139006ull, 11813204854713424323ull, 4995893687888379239ull, 3893821622105433204ull}}, {{18047141339235944543ull, 14300782061836972057ull, 12345805591785012832ull, 2433638513815895752ull}}, {{8723868618762766967ull, 17875977577296215072ull, 15432256989731266040ull, 3042048142269869690ull}}, {{10904835773453458709ull, 3898227897910717224ull, 10066949200309306743ull, 3802560177837337113ull}}, {{6815522358408411693ull, 9353921463835280121ull, 17821058296261786474ull, 2376600111148335695ull}}, {{13131088966437902520ull, 2469029792939324343ull, 17664636851899845189ull, 2970750138935419619ull}}, {{11802175189619990246ull, 7697973259601543333ull, 17469110046447418582ull, 3713437673669274524ull}}, {{9682202502726187856ull, 199547268823576679ull, 1694821742174860806ull, 2320898546043296578ull}}, {{7491067109980346916ull, 9472806122884246657ull, 11341899214573351815ull, 2901123182554120722ull}}, {{13975519905902821549ull, 7229321635177920417ull, 4954001981361913961ull, 3626403978192650903ull}}, {{3634341827096363224ull, 13648338062399788426ull, 1580816458275004547ull, 4533004972740813629ull}}, {{6883149660362614919ull, 6224368279786173814ull, 3293853295635571794ull, 2833128107963008518ull}}, {{17827309112308044457ull, 17003832386587493075ull, 13340688656399240550ull, 3541410134953760647ull}}, {{17672450371957667667ull, 12031418446379590536ull, 12064174802071662784ull, 4426762668692200809ull}}, {{11045281482473542292ull, 7519636528987244085ull, 622580223653707384ull, 2766726667932625506ull}}, {{18418287871519315769ull, 9399545661234055106ull, 10001597316421910038ull, 3458408334915781882ull}}, {{13799487802544368903ull, 2526060039687793075ull, 3278624608672611740ull, 4323010418644727353ull}}, {{6318836867376536612ull, 10802159561659646480ull, 13578355426488852097ull, 2701881511652954595ull}}, {{7898546084220670765ull, 18114385470501946004ull, 12361258264683677217ull, 3377351889566193244ull}}, {{9873182605275838457ull, 8807923782845268793ull, 15451572830854596522ull, 4221689861957741555ull}}, {{17699954174365868796ull, 10116638382705680899ull, 7351390010070428874ull, 2638556163723588472ull}}, {{17513256699529948090ull, 3422425941527325316ull, 9189237512588036093ull, 3298195204654485590ull}}, {{3444826800702883497ull, 8889718445336544550ull, 2263174853880269308ull, 4122744005818106988ull}}, {{15988074805721465898ull, 14779446065190116151ull, 10637856320529944125ull, 2576715003636316867ull}}, {{15373407488724444468ull, 4639249526205481477ull, 8685634382235042253ull, 3220893754545396084ull}}, {{5381701305623391873ull, 10410747926184239751ull, 10857042977793802816ull, 4026117193181745105ull}}, {{10281092343655701777ull, 6506717453865149844ull, 18314866907189596520ull, 2516323245738590690ull}}, {{12851365429569627221ull, 8133396817331437305ull, 13670211597132219842ull, 3145404057173238363ull}}, {{2229148731679870314ull, 943373984809520824ull, 12476078477987886899ull, 3931755071466547954ull}}, {{1393217957299918946ull, 16730509805001808179ull, 12409235067169817215ull, 2457346919666592471ull}}, {{15576580501907062395ull, 16301451237824872319ull, 10899857815534883615ull, 3071683649583240589ull}}, {{14859039608956440089ull, 15765128028853702495ull, 18236508287845992423ull, 3839604561979050736ull}}, {{16204428783238856912ull, 16770734045674645915ull, 11397817679903745264ull, 2399752851236906710ull}}, {{15643849960621183236ull, 2516673483383755778ull, 5023900063024905773ull, 2999691064046133388ull}}, {{10331440413921703237ull, 7757527872657082627ull, 6279875078781132216ull, 3749613830057666735ull}}, {{4151307249487370571ull, 4848454920410676642ull, 10842450951879289491ull, 2343508643786041709ull}}, {{14412506098713989022ull, 1448882632085957898ull, 18164749708276499768ull, 2929385804732552136ull}}, {{8792260586537710469ull, 1811103290107447373ull, 4259193061636073094ull, 3661732255915690171ull}}, {{15602011751599525990ull, 11487251149489085024ull, 712305308617703463ull, 4577165319894612714ull}}, {{9751257344749703744ull, 14097060996071759996ull, 5056876836313452568ull, 2860728324934132946ull}}, {{12189071680937129680ull, 17621326245089699995ull, 15544468082246591518ull, 3575910406167666182ull}}, {{10624653582744024196ull, 12803285769507349186ull, 10207213065953463590ull, 4469888007709582728ull}}, {{11252094507642403027ull, 3390367587514705337ull, 6379508166220914744ull, 2793680004818489205ull}}, {{230060079270840071ull, 4237959484393381672ull, 12586071226203531334ull, 3492100006023111506ull}}, {{287575099088550089ull, 14520821392346502898ull, 6509216995899638359ull, 4365125007528889383ull}}, {{4791420455357731710ull, 15993042397857646167ull, 10985789650078355830ull, 2728203129705555864ull}}, {{1377589550769776733ull, 10767930960467281901ull, 13732237062597944788ull, 3410253912131944830ull}}, {{6333672956889608820ull, 13459913700584102376ull, 7941924291392655177ull, 4262817390164931038ull}}, {{3958545598056005513ull, 1494917035223982129ull, 352016663693021582ull, 2664260868853081899ull}}, {{9559868015997394795ull, 11092018330884753469ull, 14275078884898440689ull, 3330326086066352373ull}}, {{16561521038424131397ull, 29964858323778124ull, 4008790550840887150ull, 4162907607582940467ull}}, {{1127578612160306316ull, 13853786091734525040ull, 199651085061860516ull, 2601817254739337792ull}}, {{1409473265200382894ull, 17317232614668156300ull, 249563856327325645ull, 3252271568424172240ull}}, {{1761841581500478618ull, 7811482713053031663ull, 311954820409157057ull, 4065339460530215300ull}}, {{8018680016078880992ull, 16411391741726614549ull, 9418343799610498968ull, 2540837162831384562ull}}, {{14635036038525989144ull, 2067495603448716570ull, 2549557712658347903ull, 3176046453539230703ull}}, {{9070423011302710622ull, 16419427559593059425ull, 17022005196105098590ull, 3970058066924038378ull}}, {{17198229428132663899ull, 5650456206318274236ull, 15250439265993074523ull, 2481286291827523986ull}}, {{3051042711456278258ull, 2451384239470454892ull, 9839677045636567346ull, 3101607864784404983ull}}, {{3813803389320347822ull, 12287602336192844423ull, 7687910288618321278ull, 3877009830980506229ull}}, {{9301156145966299245ull, 3068065441693139860ull, 7110786939600144751ull, 2423131144362816393ull}}, {{11626445182457874056ull, 17670139857398588537ull, 13500169692927568842ull, 3028913930453520491ull}}, {{697998422790178858ull, 12864302784893459864ull, 12263526097732073149ull, 3786142413066900614ull}}, {{436249014243861786ull, 10346032249772106367ull, 3053017792655157814ull, 2366339008166812884ull}}, {{14380369323086990945ull, 3709168275360357150ull, 3816272240818947268ull, 2957923760208516105ull}}, {{8752089617003962873ull, 4636460344200446438ull, 9382026319451071989ull, 3697404700260645131ull}}, {{858369992200088892ull, 5203630724338972976ull, 3557923440443226041ull, 2310877937662903207ull}}, {{1072962490250111115ull, 11116224423851104124ull, 18282462355836196263ull, 2888597422078629008ull}}, {{1341203112812638893ull, 9283594511386492251ull, 4406333871085693713ull, 3610746777598286261ull}}, {{15511561946297962328ull, 16216179157660503217ull, 10119603357284505045ull, 4513433471997857826ull}}, {{2777197188795144599ull, 12440954982751508463ull, 10936438116730203557ull, 2820895919998661141ull}}, {{17306554541276094461ull, 1716135673157221866ull, 18282233664340142351ull, 3526119899998326426ull}}, {{12409821139740342268ull, 15980227646728691045ull, 13629420043570402130ull, 4407649874997908033ull}}, {{10061981221551407870ull, 14599328297632819807ull, 1600858499590419475ull, 2754781171873692521ull}}, {{7965790508511871933ull, 13637474353613636855ull, 6612759142915412248ull, 3443476464842115651ull}}, {{5345552117212452012ull, 17046842942017046069ull, 3654262910216877406ull, 4304345581052644564ull}}, {{5646813082471476460ull, 6042590820333265889ull, 11507286355740324187ull, 2690215988157902852ull}}, {{11670202371516733479ull, 2941552506989194457ull, 14384107944675405234ull, 3362769985197378565ull}}, {{752694909113753136ull, 12900312670591268880ull, 4145076875562092830ull, 4203462481496723207ull}}, {{470434318196095710ull, 3451009400692155146ull, 9508202074867389875ull, 2627164050935452004ull}}, {{9811414934599895446ull, 18148819806147357644ull, 11885252593584237343ull, 3283955063669315005ull}}, {{12264268668249869307ull, 18074338739256809151ull, 1021507686698132967ull, 4104943829586643757ull}}, {{14582696945297250173ull, 18213990739676587575ull, 2944285313400027056ull, 2565589893491652348ull}}, {{13616685163194174812ull, 4320744350886182853ull, 3680356641750033821ull, 3206987366864565435ull}}, {{3185798398710554803ull, 10012616457035116471ull, 18435503857469705988ull, 4008734208580706793ull}}, {{8908653026835178608ull, 15481257322501723602ull, 4604660883277484386ull, 2505458880362941746ull}}, {{1912444246689197452ull, 10128199616272378695ull, 14979198140951631291ull, 3131823600453677182ull}}, {{16225613363643660527ull, 8048563501913085464ull, 9500625639334763306ull, 3914779500567096478ull}}, {{10141008352277287830ull, 9642038207123066319ull, 1326205006156839162ull, 2446737187854435299ull}}, {{8064574421919221883ull, 2829175722049057091ull, 15492814312978212665ull, 3058421484818044123ull}}, {{5469032008971639450ull, 8148155670988709268ull, 14754331872795377927ull, 3823026856022555154ull}}, {{12641517042462050464ull, 12010126322009025148ull, 13833143438924499108ull, 2389391785014096971ull}}, {{15801896303077563080ull, 15012657902511281435ull, 12679743280228235981ull, 2986739731267621214ull}}, {{15140684360419565946ull, 4930764322856938082ull, 6626307063430519169ull, 3733424664084526518ull}}, {{14074613743689616620ull, 14610942747854056061ull, 17976499969926238192ull, 2333390415052829073ull}}, {{3758209124329857063ull, 18263678434817570077ull, 8635566907125634028ull, 2916738018816036342ull}}, {{9309447423839709233ull, 4382853969812410980ull, 1571086597052266728ull, 3645922523520045428ull}}, {{11636809279799636541ull, 5478567462265513725ull, 1963858246315333410ull, 4557403154400056785ull}}, {{9578848809088466791ull, 8035790682343333982ull, 12756626450015553141ull, 2848376971500035490ull}}, {{2750188974505807680ull, 14656424371356555382ull, 6722411025664665618ull, 3560471214375044363ull}}, {{12661108254987035408ull, 9097158427340918419ull, 3791327763653444119ull, 4450589017968805454ull}}, {{5607349650153203178ull, 12603253044729155868ull, 16204637907565566286ull, 2781618136230503408ull}}, {{7009187062691503973ull, 6530694269056669027ull, 1809053310747406242ull, 3477022670288129261ull}}, {{4149797809936992062ull, 17386739873175612092ull, 6873002656861645706ull, 4346278337860161576ull}}, {{11816995668065395847ull, 15478398439162145461ull, 4295626660538528566ull, 2716423961162600985ull}}, {{936186529799581096ull, 10124626012097906019ull, 9981219344100548612ull, 3395529951453251231ull}}, {{15005291217531640082ull, 12655782515122382523ull, 7864838161698297861ull, 4244412439316564039ull}}, {{7072464001743581099ull, 10215707081165183029ull, 11833052878702518019ull, 2652757774572852524ull}}, {{13452266020606864278ull, 8157947833029090882ull, 14791316098378147524ull, 3315947218216065655ull}}, {{7591960488903804540ull, 10197434791286363603ull, 13877459104545296501ull, 4144934022770082069ull}}, {{2439132296351183885ull, 8679239753767671204ull, 10979254949554504265ull, 2590583764231301293ull}}, {{3048915370438979857ull, 15460735710636976909ull, 18335754705370518235ull, 3238229705289126616ull}}, {{8422830231476112725ull, 14714233619868833232ull, 4472949308003596178ull, 4047787131611408271ull}}, {{5264268894672570453ull, 13808082030845408674ull, 9713122345143329467ull, 2529866957257130169ull}}, {{15803708155195488874ull, 12648416520129372938ull, 16753088949856549738ull, 3162333696571412711ull}}, {{10531263157139585285ull, 6587148613306940365ull, 16329675168893299269ull, 3952917120714265889ull}}, {{8887882482425934755ull, 6422810892530531680ull, 3288517952917230187ull, 2470573200446416181ull}}, {{11109853103032418444ull, 3416827597235776696ull, 8722333459573925638ull, 3088216500558020226ull}}, {{13887316378790523055ull, 13494406533399496678ull, 1679544787612631239ull, 3860270625697525283ull}}, {{4067886718316689005ull, 15351533111015767280ull, 17190616556753752188ull, 2412669141060953301ull}}, {{5084858397895861257ull, 742672315060157484ull, 7653212640660026524ull, 3015836426326191627ull}}, {{6356072997369826571ull, 928340393825196855ull, 4954829782397645251ull, 3769795532907739534ull}}, {{10890074650997223463ull, 16721113810636605698ull, 16931826669280691993ull, 2356122208067337208ull}}, {{4389221276891753520ull, 7066334208013593411ull, 2718039262891313376ull, 2945152760084171511ull}}, {{874840577687303996ull, 8832917760016991764ull, 17232607133896305432ull, 3681440950105214388ull}}, {{1093550722109129995ull, 11041147200021239705ull, 3094014843660830174ull, 4601801187631517986ull}}, {{12212684247386676007ull, 2289030981585886911ull, 6545445295715406763ull, 2876125742269698741ull}}, {{10654169290805957105ull, 16696346782264522351ull, 12793492638071646357ull, 3595157177837123426ull}}, {{8706025595080058477ull, 7035375422548489227ull, 6768493760734782139ull, 4493946472296404283ull}}, {{3135422987711342596ull, 2091266629879111815ull, 1924465591245544885ull, 2808716545185252677ull}}, {{17754336789921341957ull, 7225769305776277672ull, 7017268007484319010ull, 3510895681481565846ull}}, {{3746176913692125831ull, 18255583669075122899ull, 17994957046210174570ull, 4388619601851957307ull}}, {{35517561843884692ull, 16021425811599339716ull, 8941005144667665154ull, 2742887251157473317ull}}, {{44396952304855865ull, 10803410227644398837ull, 15787942449261969347ull, 3428609063946841646ull}}, {{4667182208808457735ull, 8892576766128110642ull, 10511556024722685876ull, 4285761329933552058ull}}, {{7528674898932673989ull, 14781232515684844959ull, 11181408533879066576ull, 2678600831208470036ull}}, {{4799157605238454582ull, 29796570896504583ull, 13976760667348833221ull, 3348251039010587545ull}}, {{1387260988120680323ull, 4648931732048018633ull, 3635892778903877814ull, 4185313798763234432ull}}, {{12396253163643894962ull, 16740640387812175357ull, 2272432986814923633ull, 2615821124227021520ull}}, {{1660258399272704991ull, 7090742429483055485ull, 2840541233518654542ull, 3269776405283776900ull}}, {{6687009017518269142ull, 18086800073708595164ull, 3550676541898318177ull, 4087220506604721125ull}}, {{13402752672803694022ull, 4386721018426790121ull, 4525015847900142813ull, 2554512816627950703ull}}, {{2918382785722453815ull, 10095087291460875556ull, 1044583791447790612ull, 3193141020784938379ull}}, {{3647978482153067269ull, 12618859114326094445ull, 15140787794591901977ull, 3991426275981172973ull}}, {{4585829560559360995ull, 969257918812727172ull, 11768835380833632688ull, 2494641422488233108ull}}, {{5732286950699201244ull, 1211572398515908965ull, 14711044226042040860ull, 3118301778110291385ull}}, {{11777044706801389459ull, 1514465498144886206ull, 4553747227270387363ull, 3897877222637864232ull}}, {{2748966923323480508ull, 17087442000836411543ull, 2846092017043992101ull, 2436173264148665145ull}}, {{17271266709436514347ull, 7524244445763350716ull, 8169301039732378031ull, 3045216580185831431ull}}, {{3142339313086091318ull, 4793619538776800492ull, 5599940281238084635ull, 3806520725232289289ull}}, {{11187334107533582882ull, 690169202521806355ull, 15029177721842272657ull, 2379075453270180805ull}}, {{9372481615989590698ull, 5474397521579645848ull, 4951414097020677109ull, 2973844316587726007ull}}, {{11715602019986988372ull, 11454682920401945214ull, 1577581602848458482ull, 3717305395734657509ull}}, {{2710565244064479829ull, 11770862843678603663ull, 3291831510993980503ull, 2323315872334160943ull}}, {{17223264610362763498ull, 10101892536170866674ull, 17949847444024639341ull, 2904144840417701178ull}}, {{12305708726098678564ull, 17239051688640971247ull, 13213937268176023368ull, 3630181050522126473ull}}, {{10770449889195960301ull, 3102070537091662443ull, 2682363529937865499ull, 4537726313152658092ull}}, {{4425688171533781237ull, 18079695150178146691ull, 10899849243065941744ull, 2836078945720411307ull}}, {{920424195989838642ull, 4152874864013131748ull, 9013125535405039277ull, 3545098682150514134ull}}, {{1150530244987298302ull, 9802779598443802589ull, 2043034882401523288ull, 4431373352688142668ull}}, {{3024924412330755391ull, 6126737249027376618ull, 10500268838355727863ull, 2769608345430089167ull}}, {{13004527552268220046ull, 3046735542856832868ull, 8513650029517271925ull, 3462010431787611459ull}}, {{16255659440335275058ull, 8420105446998428989ull, 6030376518469202002ull, 4327513039734514324ull}}, {{12465630159423240863ull, 9874251922801406022ull, 12992357360898027059ull, 2704695649834071452ull}}, {{6358665662424275271ull, 7731128885074369624ull, 16240446701122533824ull, 3380869562292589315ull}}, {{7948332078030344089ull, 9663911106342962030ull, 15688872357975779376ull, 4226086952865736644ull}}, {{356021530341577152ull, 6039944441464351269ull, 582173186880086302ull, 2641304345541085403ull}}, {{5056712931354359343ull, 16773302588685214894ull, 14562774538882271589ull, 3301630431926356753ull}}, {{15544263201047724987ull, 7131570180574354905ull, 4368410118320675775ull, 4127038039907945942ull}}, {{2797635473013746261ull, 11374760390500053672ull, 16565314379232586071ull, 2579398774942466213ull}}, {{3497044341267182826ull, 9606764469697679186ull, 6871584918758568877ull, 3224248468678082767ull}}, {{13594677463438754341ull, 16620141605549486886ull, 3977795130020823192ull, 4030310585847603459ull}}, {{3884987396221833559ull, 10387588503468429304ull, 180278947049320543ull, 2518944116154752162ull}}, {{4856234245277291949ull, 8372799610908148726ull, 9448720720666426487ull, 3148680145193440202ull}}, {{15293664843451390744ull, 5854313495207798003ull, 2587528863978257301ull, 3935850181491800253ull}}, {{7252697517943425263ull, 5964788943718567704ull, 3923048549200104765ull, 2459906363432375158ull}}, {{9065871897429281579ull, 12067672198075597534ull, 14127182723354906764ull, 3074882954290468947ull}}, {{2108967834931826165ull, 15084590247594496918ull, 13047292385766245551ull, 3843603692863086184ull}}, {{15153162952114555066ull, 16345397932387642429ull, 8154557741103903469ull, 2402252308039428865ull}}, {{5106395634861030120ull, 6596689360202389325ull, 14804883194807267241ull, 3002815385049286081ull}}, {{10994680562003675554ull, 12857547718680374560ull, 4671045938226920339ull, 3753519231311607602ull}}, {{6871675351252297221ull, 5730124314961540148ull, 7531089729819213116ull, 2345949519569754751ull}}, {{8589594189065371526ull, 7162655393701925185ull, 4802176143846628491ull, 2932436899462193439ull}}, {{15348678754759102312ull, 4341633223700018577ull, 1391034161380897710ull, 3665546124327741799ull}}, {{5350790388166714178ull, 14650413566479799030ull, 15573850757008285849ull, 4581932655409677248ull}}, {{17179302047886360073ull, 2238979451408792537ull, 9733656723130178656ull, 2863707909631048280ull}}, {{7639069504575786379ull, 2798724314260990672ull, 12167070903912723320ull, 3579634887038810350ull}}, {{9548836880719732974ull, 3498405392826238340ull, 5985466593036128342ull, 4474543608798512938ull}}, {{15191395087304608917ull, 16021561425798562674ull, 8352602639074968117ull, 2796589755499070586ull}}, {{9765871822275985338ull, 6191893726966039631ull, 1217381261988934339ull, 3495737194373838233ull}}, {{7595653759417593769ull, 3128181140280161635ull, 6133412595913555828ull, 4369671492967297791ull}}, {{2441440590422302154ull, 11178485249529876830ull, 10750911900087054248ull, 2731044683104561119ull}}, {{12275172774882653500ull, 13973106561912346037ull, 8826953856681429906ull, 3413805853880701399ull}}, {{1508907913321153163ull, 8243011165535656739ull, 6422006302424399479ull, 4267257317350876749ull}}, {{17083968510321578391ull, 12069411006100867317ull, 6319596948228943626ull, 2667035823344297968ull}}, {{7519902582619809276ull, 5863391720771308339ull, 7899496185286179533ull, 3333794779180372460ull}}, {{4788192209847373691ull, 11940925669391523328ull, 9874370231607724416ull, 4167243473975465575ull}}, {{2992620131154608557ull, 7463078543369702080ull, 13089010422395909616ull, 2604527171234665984ull}}, {{3740775163943260697ull, 9328848179212127600ull, 16361263027994887020ull, 3255658964043332480ull}}, {{4675968954929075871ull, 11661060224015159500ull, 2004834711284057159ull, 4069573705054165601ull}}, {{12145852633685448227ull, 14205691667650556543ull, 12782236740621005484ull, 2543483565658853500ull}}, {{10570629773679422380ull, 17757114584563195679ull, 15977795925776256855ull, 3179354457073566875ull}}, {{8601601198671890071ull, 17584707212276606695ull, 15360558888792933165ull, 3974193071341958594ull}}, {{12293529776811013150ull, 13296285016886573136ull, 14212035323922971132ull, 2483870669588724121ull}}, {{15366912221013766438ull, 16620356271108216420ull, 3929986099621550203ull, 3104838336985905152ull}}, {{761896202557656431ull, 16163759320457882622ull, 4912482624526937754ull, 3881047921232381440ull}}, {{14311243181880698982ull, 14714035593713564542ull, 3070301640329336096ull, 2425654950770238400ull}}, {{8665681940496097919ull, 18392544492141955678ull, 3837877050411670120ull, 3032068688462798000ull}}, {{1608730388765346591ull, 4543936541467892982ull, 4797346313014587651ull, 3790085860578497500ull}}, {{14840514548260505331ull, 534117329203739161ull, 12221713482488893090ull, 2368803662861560937ull}}, {{4715585130043467952ull, 9891018698359449760ull, 1442083797828952650ull, 2961004578576951172ull}}, {{5894481412554334940ull, 3140401336094536392ull, 1802604747286190813ull, 3701255723221188965ull}}, {{3684050882846459338ull, 4268593844272779197ull, 3432470976267563210ull, 2313284827013243103ull}}, {{9216749621985462076ull, 14559114342195749804ull, 18125646775616617724ull, 2891606033766553878ull}}, {{11520937027481827595ull, 18198892927744687255ull, 13433686432665996347ull, 3614507542208192348ull}}, {{9789485265924896590ull, 18136930141253471165ull, 16792108040832495434ull, 4518134427760240435ull}}, {{8424271300416754321ull, 15947267356710807382ull, 8189224516306615694ull, 2823834017350150272ull}}, {{1306967088666167093ull, 10710712159033733420ull, 10236530645383269618ull, 3529792521687687840ull}}, {{1633708860832708866ull, 4165018161937390967ull, 12795663306729087023ull, 4412240652109609800ull}}, {{7938597065661524897ull, 9520665378851951210ull, 7997289566705679389ull, 2757650407568506125ull}}, {{699874295222130313ull, 16512517741992326917ull, 14608297976809487140ull, 3447063009460632656ull}}, {{5486528887455050796ull, 2193903103780857030ull, 18260372471011858926ull, 4308828761825790820ull}}, {{17264138609941570459ull, 15206247495145199355ull, 2189360757527636020ull, 2693017976141119263ull}}, {{16968487243999575170ull, 561065295221947578ull, 16571759002191708738ull, 3366272470176399078ull}}, {{11987237018144693155ull, 9924703655882210281ull, 11491326715884860114ull, 4207840587720498848ull}}, {{574494108699351366ull, 10814625803353769330ull, 7182079197428037571ull, 2629900367325311780ull}}, {{9941489672728965015ull, 8906596235764823758ull, 8977598996785046964ull, 3287375459156639725ull}}, {{3203490054056430461ull, 11133245294706029698ull, 15833684764408696609ull, 4109219323945799656ull}}, {{6613867302212656942ull, 40749281550186705ull, 9896052977755435381ull, 2568262077466124785ull}}, {{12879020146193209082ull, 4662622620365121285ull, 16981752240621682130ull, 3210327596832655981ull}}, {{2263717127459347640ull, 15051650312311177415ull, 7392132245494938950ull, 4012909496040819977ull}}, {{8332352232303174131ull, 4795595426767097980ull, 16149297699502806604ull, 2508068435025512485ull}}, {{10415440290378967664ull, 5994494283458872475ull, 6351564069096344543ull, 3135085543781890607ull}}, {{8407614344546321676ull, 2881431835896202690ull, 3327769067943042775ull, 3918856929727363259ull}}, {{9866444983768838951ull, 8718423925076208537ull, 18220756731960259398ull, 2449285581079602036ull}}, {{16944742248138436593ull, 1674657869490484863ull, 4329201841240772632ull, 3061606976349502546ull}}, {{16569241791745657837ull, 2093322336863106079ull, 14634874338405741598ull, 3827008720436878182ull}}, {{17273305147482118005ull, 15143384515821605011ull, 4535110443076200594ull, 2391880450273048864ull}}, {{16979945415925259602ull, 9705858607922230456ull, 5668888053845250743ull, 2989850562841311080ull}}, {{2778187696197022886ull, 7520637241475400167ull, 7086110067306563429ull, 3737313203551638850ull}}, {{8653896337764221160ull, 7006241285135819056ull, 9040504810493990047ull, 2335820752219774281ull}}, {{10817370422205276450ull, 4146115587992385916ull, 15912317031544875463ull, 2919775940274717851ull}}, {{13521713027756595562ull, 570958466563094491ull, 15278710271003706425ull, 3649719925343397314ull}}, {{12290455266268356548ull, 5325384101631256018ull, 9875015801899857223ull, 4562149906679246643ull}}, {{12293220559845110747ull, 10245894091160616867ull, 3866041866973716812ull, 2851343691674529152ull}}, {{10754839681379000529ull, 12807367613950771084ull, 4832552333717146015ull, 3564179614593161440ull}}, {{13443549601723750662ull, 11397523499011075951ull, 6040690417146432519ull, 4455224518241451800ull}}, {{15319747528718426020ull, 14040981214523004325ull, 3775431510716520324ull, 2784515323900907375ull}}, {{5314626355615868813ull, 17551226518153755407ull, 107603369968262501ull, 3480644154876134219ull}}, {{2031596926092448112ull, 8103975092410030547ull, 13969562267742491839ull, 4350805193595167773ull}}, {{17410649143303637734ull, 11982513460397350947ull, 11036819426552751351ull, 2719253245996979858ull}}, {{17151625410702159263ull, 10366455807069300780ull, 4572652246336163381ull, 3399066557496224823ull}}, {{2992787689668147463ull, 17569755777264013880ull, 1104129289492816322ull, 4248833196870281029ull}}, {{1870492306042592165ull, 15592783379217396579ull, 2995923815146704153ull, 2655520748043925643ull}}, {{16173173437835403918ull, 5655921168739582011ull, 17579962824215543904ull, 3319400935054907053ull}}, {{15604780778866866993ull, 7069901460924477514ull, 8139895474987266168ull, 4149251168818633817ull}}, {{14364674005219179775ull, 4418688413077798446ull, 16616649717935511115ull, 2593281980511646135ull}}, {{8732470469669198910ull, 911674497919860154ull, 16159126128992000990ull, 3241602475639557669ull}}, {{1692216050231722830ull, 10362965159254601001ull, 6363849605957837525ull, 4052003094549447087ull}}, {{12586850077463296529ull, 8782696233747819577ull, 10894935031364730309ull, 2532501934093404429ull}}, {{1898504541546956949ull, 15590056310612162376ull, 18230354807633300790ull, 3165627417616755536ull}}, {{2373130676933696186ull, 10264198351410427162ull, 4341199435832074372ull, 3957034272020944421ull}}, {{6094892691510948020ull, 15638496006486292784ull, 5019092656608740434ull, 2473146420013090263ull}}, {{7618615864388685025ull, 10324747971253090172ull, 1662179802333537639ull, 3091433025016362829ull}}, {{9523269830485856282ull, 8294248945638974811ull, 6689410771344309953ull, 3864291281270453536ull}}, {{3646200634839966224ull, 16713120637092829017ull, 4180881732090193720ull, 2415182050794033460ull}}, {{9169436811977345684ull, 2444656722656484655ull, 5226102165112742151ull, 3018977563492541825ull}}, {{6850109996544294201ull, 16890878958602769531ull, 11144313724818315592ull, 3773721954365677281ull}}, {{1975475738626489924ull, 10556799349126730957ull, 47667050370365389ull, 2358576221478548301ull}}, {{7081030691710500309ull, 17807685204835801600ull, 4671269831390344640ull, 2948220276848185376ull}}, {{8851288364638125386ull, 3812862432335200384ull, 5839087289237930801ull, 3685275346060231720ull}}, {{11064110455797656732ull, 9377764058846388384ull, 7298859111547413501ull, 4606594182575289650ull}}, {{6915069034873535458ull, 8166945545992686692ull, 9173472963144521342ull, 2879121364109556031ull}}, {{8643836293591919322ull, 985309895636082557ull, 6855155185503263774ull, 3598901705136945039ull}}, {{15416481385417287056ull, 10455009406399879004ull, 3957257963451691813ull, 4498627131421181299ull}}, {{411928829031028602ull, 8840223888213618330ull, 167443217943613431ull, 2811641957138238312ull}}, {{9738283073143561561ull, 6438593841839635008ull, 209304022429516789ull, 3514552446422797890ull}}, {{12172853841429451951ull, 12659928320726931664ull, 9485002064891671794ull, 4393190558028497362ull}}, {{7608033650893407470ull, 12524141218881720194ull, 10539812308984682775ull, 2745744098767810851ull}}, {{286670026761983529ull, 11043490505174762339ull, 8563079367803465565ull, 3432180123459763564ull}}, {{14193395588734643123ull, 18416049149895840827ull, 10703849209754331956ull, 4290225154324704455ull}}, {{6565029233745458000ull, 2286658681830124709ull, 13607434783737539329ull, 2681390721452940284ull}}, {{12817972560609210404ull, 7470009370715043790ull, 17009293479671924161ull, 3351738401816175355ull}}, {{6799093663906737197ull, 13949197731821192642ull, 16649930831162517297ull, 4189673002270219194ull}}, {{8861119558369098652ull, 1800719554747163545ull, 15017892787903961215ull, 2618545626418886996ull}}, {{15688085466388761219ull, 16085957498716118143ull, 325621911170399902ull, 3273182033023608746ull}}, {{14998420814558563620ull, 10884074836540371871ull, 9630399425817775686ull, 4091477541279510932ull}}, {{16291542036740184118ull, 2190860754410344515ull, 15242371677990885612ull, 2557173463299694332ull}}, {{15752741527497842244ull, 2738575943012930644ull, 606220523779055399ull, 3196466829124617916ull}}, {{1244182835662751189ull, 17258277984048327018ull, 757775654723819248ull, 3995583536405772395ull}}, {{5389300290716607397ull, 10786423740030204386ull, 16614510848698244694ull, 2497239710253607746ull}}, {{15959997400250535054ull, 4259657638182979674ull, 11544766524018030060ull, 3121549637817009683ull}}, {{10726624713458393010ull, 5324572047728724593ull, 9819272136595149671ull, 3901937047271262104ull}}, {{18233355491979965391ull, 10245386557471534726ull, 6137045085371968544ull, 2438710654544538815ull}}, {{13568322328120180931ull, 12806733196839418408ull, 3059620338287572776ull, 3048388318180673519ull}}, {{16960402910150226164ull, 16008416496049273010ull, 17659583478141629682ull, 3810485397725841898ull}}, {{15211937837271279256ull, 14616946328458183535ull, 15648925692265906455ull, 2381553373578651186ull}}, {{14403236278161711166ull, 13659496892145341515ull, 10337785078477607261ull, 2976941716973313983ull}}, {{13392359329274751054ull, 3239313059899513182ull, 8310545329669621173ull, 3721177146216642479ull}}, {{3758538562369331505ull, 4330413671650889691ull, 12111619858684595089ull, 2325735716385401549ull}}, {{86487184534276477ull, 10024703107991000018ull, 1304466768073580149ull, 2907169645481751937ull}}, {{9331481017522621404ull, 17142564903416137926ull, 6242269478519363090ull, 3633962056852189921ull}}, {{2440979235048500947ull, 12204834092415396600ull, 12414522866576591767ull, 4542452571065237401ull}}, {{1525612021905313092ull, 14545550335400704731ull, 841547763969287998ull, 2839032856915773376ull}}, {{15742073082663805077ull, 8958565882396105105ull, 1051934704961609998ull, 3548791071144716720ull}}, {{5842533298047592634ull, 1974835316140355574ull, 1314918381202012498ull, 4435988838930895900ull}}, {{17486641366561909109ull, 5845958091015110137ull, 10045196025106033619ull, 2772493024331809937ull}}, {{8023243652920222674ull, 2695761595341499768ull, 17168181049809929928ull, 3465616280414762421ull}}, {{10029054566150278342ull, 3369701994176874710ull, 7625168256980248698ull, 4332020350518453027ull}}, {{1656473085416536060ull, 6717749764787934598ull, 2459887151398961484ull, 2707512719074033142ull}}, {{11293963393625445883ull, 8397187205984918247ull, 12298230976103477663ull, 3384390898842541427ull}}, {{9505768223604419449ull, 5884797989053759905ull, 10761102701701959175ull, 4230488623553176784ull}}, {{17470320185821231916ull, 10595527770799681796ull, 6725689188563724484ull, 2644055389720735490ull}}, {{3391156158566988279ull, 13244409713499602246ull, 17630483522559431413ull, 3305069237150919362ull}}, {{13462317235063511156ull, 2720454086592339095ull, 12814732366344513459ull, 4131336546438649203ull}}, {{15331477299555776329ull, 17841184868616069598ull, 5703364719751626959ull, 2582085341524155752ull}}, {{9940974587589944603ull, 17689795067342699094ull, 7129205899689533699ull, 3227606676905194690ull}}, {{3202846197632654946ull, 17500557815750985964ull, 18134879411466692932ull, 4034508346131493362ull}}, {{11225150910375185149ull, 1714476597989590419ull, 15945985650594070987ull, 2521567716332183351ull}}, {{9419752619541593532ull, 15978153802769151736ull, 15320796044815200829ull, 3151959645415229189ull}}, {{11774690774426991915ull, 6137634198179275958ull, 5315937000736837325ull, 3939949556769036487ull}}, {{2747495715589482043ull, 6141864383075741426ull, 10239989653101605184ull, 2462468472980647804ull}}, {{12657741681341628362ull, 7677330478844676782ull, 12799987066377006480ull, 3078085591225809755ull}}, {{6598805064822259644ull, 9596663098555845978ull, 11388297814543870196ull, 3847606989032262194ull}}, {{8735939183941300182ull, 15221286473452179544ull, 11729372152517306776ull, 2404754368145163871ull}}, {{10919923979926625227ull, 579864018105672814ull, 10050029172219245567ull, 3005942960181454839ull}}, {{4426532938053505726ull, 14559888077914254730ull, 7950850446846669054ull, 3757428700226818549ull}}, {{7378269104710828983ull, 4488244030269021302ull, 7275124538492862111ull, 2348392937641761593ull}}, {{18446208417743312037ull, 998619019408888723ull, 13705591691543465543ull, 2935491172052201991ull}}, {{18446074503751752142ull, 15083331829543274616ull, 12520303596001944024ull, 3669363965065252489ull}}, {{4610849055980138561ull, 407420713219541655ull, 1815321439720266319ull, 4586704956331565612ull}}, {{9799309687628668457ull, 7172166973403295390ull, 10357947936679942257ull, 2866690597707228507ull}}, {{3025765072681059763ull, 13576894735181507142ull, 8335748902422539917ull, 3583363247134035634ull}}, {{13005578377706100511ull, 3136060363694720215ull, 1196314091173399089ull, 4479204058917544543ull}}, {{15046015513707394676ull, 13489252773377669894ull, 7665225334624456286ull, 2799502536823465339ull}}, {{9584147355279467537ull, 7638193929867311560ull, 4969845649853182454ull, 3499378171029331674ull}}, {{11980184194099334421ull, 324370375479363642ull, 15435679099171253876ull, 4374222713786664592ull}}, {{12099301139739471917ull, 9426103521529378084ull, 9647299436982033672ull, 2733889196116665370ull}}, {{15124126424674339896ull, 11782629401911722605ull, 2835752259372766282ull, 3417361495145831713ull}}, {{5070099975560761158ull, 5504914715534877449ull, 8156376342643345757ull, 4271701868932289641ull}}, {{14698027530793945484ull, 5746414706422992357ull, 16626950260220560858ull, 2669813668082681025ull}}, {{4537476358210268143ull, 16406390419883516255ull, 6948629769993537360ull, 3337267085103351282ull}}, {{1060159429335447274ull, 2061243951144843703ull, 17909159249346697509ull, 4171583856379189102ull}}, {{7580128670975736403ull, 3594120478679221266ull, 6581538512414298039ull, 2607239910236993189ull}}, {{251788801864894695ull, 18327708653631190295ull, 12838609158945260452ull, 3259049887796241486ull}}, {{14149794057613282081ull, 4462891743329436252ull, 6824889411826799758ull, 4073812359745301858ull}}, {{18066993322863077109ull, 16624365394863061369ull, 8877241900819137752ull, 2546132724840813661ull}}, {{8748683598296682674ull, 2333712669869275096ull, 15708238394451310095ull, 3182665906051017076ull}}, {{10935854497870853342ull, 16752198892618757582ull, 1188553919354586002ull, 3978332382563771346ull}}, {{2223223042741895435ull, 15081810326314111393ull, 5354532218024004155ull, 2486457739102357091ull}}, {{7390714821854757198ull, 14240576889465251337ull, 2081479254102617290ull, 3108072173877946364ull}}, {{13850079545745834401ull, 8577349074976788363ull, 2601849067628271613ull, 3885090217347432955ull}}, {{6350456706877452549ull, 7666686181074186679ull, 17767056731763527422ull, 2428181385842145596ull}}, {{3326384865169427782ull, 359985689487957541ull, 3762076840994857662ull, 3035226732302681996ull}}, {{8769667099889172631ull, 9673354148714722734ull, 4702596051243572077ull, 3794033415378352495ull}}, {{869355919003344991ull, 8351689352160395661ull, 9856651559668314404ull, 2371270884611470309ull}}, {{5698380917181569142ull, 10439611690200494576ull, 16932500468012780909ull, 2964088605764337886ull}}, {{7122976146476961428ull, 17661200631178006124ull, 11942253548161200328ull, 3705110757205422358ull}}, {{13675232128402876700ull, 11038250394486253827ull, 2852222449173362301ull, 2315694223253388974ull}}, {{12482354142076207971ull, 18409499011535205188ull, 12788650098321478684ull, 2894617779066736217ull}}, {{15602942677595259964ull, 4565129690709454869ull, 2150754567619684644ull, 3618272223833420272ull}}, {{5668620291711911243ull, 5706412113386818587ull, 2688443209524605805ull, 4522840279791775340ull}}, {{1237044673106250575ull, 5872350580080455569ull, 10903649042807654436ull, 2826775174869859587ull}}, {{6157991859810201123ull, 7340438225100569461ull, 9017875285082180141ull, 3533468968587324484ull}}, {{12309175843190139307ull, 13787233799803099730ull, 11272344106352725176ull, 4416836210734155605ull}}, {{12304920920421224971ull, 8617021124876937331ull, 9351058075684147187ull, 2760522631708847253ull}}, {{10769465132099143310ull, 6159590387668783760ull, 16300508613032571888ull, 3450653289636059066ull}}, {{13461831415123929137ull, 7699487984585979700ull, 11152263729435939052ull, 4313316612045073833ull}}, {{17637016671307231519ull, 14035552027221013120ull, 52635803256380051ull, 2695822882528171146ull}}, {{3599526765424487783ull, 12932754015598878497ull, 9289166790925250872ull, 3369778603160213932ull}}, {{9111094475207997632ull, 16165942519498598121ull, 11611458488656563590ull, 4212223253950267415ull}}, {{17223649093073468280ull, 5492028056259235921ull, 14174690583051434100ull, 2632639533718917134ull}}, {{7694503311059671638ull, 6865035070324044902ull, 8494991191959516817ull, 3290799417148646418ull}}, {{394757101969813740ull, 13192979856332444032ull, 1395366953094620213ull, 4113499271435808023ull}}, {{246723188731133588ull, 10551455419421471472ull, 7789633373325219489ull, 2570937044647380014ull}}, {{308403985913916984ull, 17801005292704227244ull, 513669679801748553ull, 3213671305809225018ull}}, {{385504982392396230ull, 8416198560598120343ull, 9865459136606961500ull, 4017089132261531272ull}}, {{7158469641636329500ull, 14483496137228601022ull, 6165911960379350937ull, 2510680707663457045ull}}, {{18171459088900187683ull, 4269312116253587565ull, 12319075968901576576ull, 3138350884579321306ull}}, {{8879265805843070892ull, 5336640145316984457ull, 6175472924272194912ull, 3922938605724151633ull}}, {{17078756174720389067ull, 3335400090823115285ull, 15388885623738591580ull, 2451836628577594770ull}}, {{7513387163118322622ull, 4169250113528894107ull, 10012734992818463667ull, 3064795785721993463ull}}, {{4780047935470515374ull, 599876623483729730ull, 7904232722595691680ull, 3830994732152491829ull}}, {{7599215978096460013ull, 374922889677331081ull, 7245988460836001252ull, 2394371707595307393ull}}, {{14110705991047962920ull, 468653612096663851ull, 13669171594472389469ull, 2992964634494134241ull}}, {{13026696470382565746ull, 5197503033548217718ull, 3251406437808323124ull, 3741205793117667802ull}}, {{3529999275561715687ull, 12471811432822411882ull, 6643815042057589856ull, 2338253620698542376ull}}, {{13635871131306920417ull, 15589764291028014852ull, 8304768802571987320ull, 2922817025873177970ull}}, {{17044838914133650521ull, 1040461290075466949ull, 1157588966360208343ull, 3653521282341472463ull}}, {{7470990587384899439ull, 15135634667876497399ull, 15282044263232424140ull, 4566901602926840578ull}}, {{11586898144756644006ull, 236399630568035066ull, 14162963682947652992ull, 2854313501829275361ull}}, {{5260250644091029199ull, 295499538210043833ull, 3868646548402402528ull, 3567891877286594202ull}}, {{11186999323541174402ull, 369374422762554791ull, 14059180222357778968ull, 4459864846608242752ull}}, {{13909403604854315858ull, 230859014226596744ull, 8786987638973611855ull, 2787415529130151720ull}}, {{17386754506067894822ull, 14123631823065409642ull, 10983734548717014818ull, 3484269411412689650ull}}, {{12510071095730092719ull, 8431167741976986245ull, 4506296149041492715ull, 4355336764265862063ull}}, {{10124637444045001902ull, 2963636829521922451ull, 9733964120792014803ull, 2722085477666163789ull}}, {{8044110786628864473ull, 17539604092184566776ull, 16779141169417406407ull, 3402606847082704736ull}}, {{10055138483286080591ull, 17312819096803320566ull, 2527182388062206393ull, 4253258558853380921ull}}, {{1672775533626412466ull, 3902982907860993498ull, 13108704038607348756ull, 2658286599283363075ull}}, {{11314341453887791390ull, 4878728634826241872ull, 11774194029831798041ull, 3322858249104203844ull}}, {{14142926817359739237ull, 10710096811960190244ull, 14717742537289747551ull, 4153572811380254805ull}}, {{18062701297704612832ull, 13611339535116200758ull, 11504432095019786171ull, 2595983007112659253ull}}, {{13355004585275990231ull, 12402488400467863044ull, 545482063492569002ull, 3244978758890824067ull}}, {{16693755731594987789ull, 6279738463730052997ull, 14516910634647874965ull, 4056223448613530083ull}}, {{12739440341460561320ull, 6230679549044977075ull, 6767226137441227901ull, 2535139655383456302ull}}, {{11312614408398313746ull, 12400035454733609248ull, 17682404708656310684ull, 3168924569229320377ull}}, {{14140768010497892183ull, 15500044318417011560ull, 8267947830538224643ull, 3961155711536650472ull}}, {{8837980006561182614ull, 7381684689796938273ull, 5167467394086390402ull, 2475722319710406545ull}}, {{15659161026628866172ull, 3733825391397033ull, 11071020261035375907ull, 3094652899638008181ull}}, {{5738893228003919003ull, 13839725337021410004ull, 3717271012056171ull, 3868316124547510227ull}}, {{12810180304357225185ull, 6343985326424687300ull, 16143224358878392771ull, 2417697577842193891ull}}, {{16012725380446531481ull, 3318295639603471221ull, 15567344430170603060ull, 3022121972302742364ull}}, {{6180848670276000639ull, 4147869549504339027ull, 1012436464003702209ull, 3777652465378427956ull}}, {{1557187409708806448ull, 14121633514508681652ull, 9856144826857089688ull, 2361032790861517472ull}}, {{1946484262136008059ull, 17652041893135852065ull, 12320181033571362110ull, 2951290988576896840ull}}, {{7044791346097397978ull, 12841680329565039273ull, 15400226291964202638ull, 3689113735721121050ull}}, {{13417675201049135377ull, 6828728375101523283ull, 10026910828100477490ull, 4611392169651401313ull}}, {{6080203991442015659ull, 8879641252865839956ull, 17796034313631268191ull, 2882120106032125820ull}}, {{7600254989302519573ull, 6487865547654912041ull, 3798298818329533623ull, 3602650132540157276ull}}, {{14112004755055537370ull, 3498145916141252147ull, 4747873522911917029ull, 4503312665675196595ull}}, {{6514159962696016905ull, 4492184206801976544ull, 661577942606254191ull, 2814570416046997872ull}}, {{8142699953370021131ull, 1003544240075082776ull, 826972428257817739ull, 3518213020058747340ull}}, {{10178374941712526413ull, 15089488355376017182ull, 1033715535322272173ull, 4397766275073434175ull}}, {{1749798320142941104ull, 11736773231323704691ull, 7563601237217501964ull, 2748603921920896359ull}}, {{16022305955460840092ull, 14670966539154630863ull, 4842815528094489551ull, 3435754902401120449ull}}, {{15416196425898662211ull, 13727022155515900675ull, 10665205428545499843ull, 4294693628001400561ull}}, {{7329279756972969930ull, 6273545837983743970ull, 18194968438909407162ull, 2684183517500875350ull}}, {{18384971733070988221ull, 17065304334334455770ull, 13520338511781983144ull, 3355229396876094188ull}}, {{13757842629483959468ull, 2884886344208518097ull, 16900423139727478931ull, 4194036746095117735ull}}, {{1681122615786392812ull, 17943955029626181475ull, 17480293489970756187ull, 2621272966309448584ull}}, {{15936461325015154726ull, 17818257768605338939ull, 3403622788753893618ull, 3276591207886810731ull}}, {{15308890637841555504ull, 13049450173901897866ull, 18089586541224530735ull, 4095739009858513413ull}}, {{14179742667078360094ull, 15073435386329768022ull, 13611834597479025661ull, 2559836881161570883ull}}, {{8501306296993174309ull, 5006736177630046316ull, 12403107228421394173ull, 3199796101451963604ull}}, {{10626632871241467887ull, 10870106240464945799ull, 15503884035526742716ull, 3999745126814954505ull}}, {{13559174572166999285ull, 16017188437145366932ull, 2772398494563132341ull, 2499840704259346566ull}}, {{16948968215208749107ull, 6186427491149544953ull, 12688870155058691235ull, 3124800880324183207ull}}, {{7351152213728772671ull, 3121348345509543288ull, 11249401675395976140ull, 3906001100405229009ull}}, {{4594470133580482920ull, 11174214752798240363ull, 113347019481403231ull, 2441250687753268131ull}}, {{1131401648548215745ull, 9356082422570412550ull, 13976741829633917751ull, 3051563359691585163ull}}, {{10637624097540045490ull, 7083417009785627783ull, 12859241268615009285ull, 3814454199614481454ull}}, {{13566044088603610287ull, 6732978640329711316ull, 3425339774456992899ull, 2384033874759050909ull}}, {{16957555110754512859ull, 3804537281984751241ull, 8893360736498629028ull, 2980042343448813636ull}}, {{7361885833160977361ull, 4755671602480939052ull, 11116700920623286285ull, 3725052929311017045ull}}, {{13824550682580386659ull, 5278137760764280859ull, 9253781084603247880ull, 2328158080819385653ull}}, {{12669002334798095420ull, 6597672200955351074ull, 16178912374181447754ull, 2910197601024232066ull}}, {{6612880881642843467ull, 17470462288048964651ull, 11000268430872033884ull, 3637747001280290083ull}}, {{3654415083626166429ull, 3391333786351654198ull, 9138649520162654452ull, 4547183751600362604ull}}, {{16119067482548517730ull, 11342955653324559681ull, 14935027986956434840ull, 2841989844750226627ull}}, {{6313776297903483451ull, 14178694566655699602ull, 14057098965268155646ull, 3552487305937783284ull}}, {{17115592409234130121ull, 8499996171464848694ull, 17571373706585194558ull, 4440609132422229105ull}}, {{6085559237343943422ull, 700811588738142530ull, 4064579538974664743ull, 2775380707763893191ull}}, {{16830321083534705085ull, 14711072541204841874ull, 469038405290943024ull, 3469225884704866489ull}}, {{11814529317563605549ull, 18388840676506052343ull, 5197984025041066684ull, 4336532355881083111ull}}, {{14301609851118335324ull, 2269653385961506906ull, 10166269043291748534ull, 2710332722425676944ull}}, {{8653640277043143347ull, 12060438769306659441ull, 12707836304114685667ull, 3387915903032096180ull}}, {{15428736364731317088ull, 10463862443205936397ull, 15884795380143357084ull, 4234894878790120225ull}}, {{11948803237170767132ull, 15763286063858486056ull, 3010468084948516321ull, 2646809299243825141ull}}, {{14936004046463458915ull, 5869049524540943858ull, 8374771124613033306ull, 3308511624054781426ull}}, {{9446633021224547835ull, 16559683942530955631ull, 1245091868911515824ull, 4135639530068476783ull}}, {{12821674665906424253ull, 10349802464081847269ull, 7695711445710779246ull, 2584774706292797989ull}}, {{2192035277100866605ull, 3713881043247533279ull, 14231325325565861962ull, 3230968382865997486ull}}, {{16575102151658246968ull, 13865723340914192406ull, 8565784620102551644ull, 4038710478582496858ull}}, {{5747752826359016451ull, 17889449124926146062ull, 9965301405991482681ull, 2524194049114060536ull}}, {{16408063069803546371ull, 8526753350875518865ull, 12456626757489353352ull, 3155242561392575670ull}}, {{6675020781972269252ull, 10658441688594398582ull, 6347411410006915882ull, 3944053201740719588ull}}, {{18006946044014831995ull, 11273212073798887017ull, 13190504168109098234ull, 2465033251087949742ull}}, {{8673624499736376281ull, 4868143055393832964ull, 7264758173281596985ull, 3081291563859937178ull}}, {{10842030624670470352ull, 10696864837669679109ull, 18304319753456772039ull, 3851614454824921472ull}}, {{9082112149632737922ull, 13603069551184631299ull, 11440199845910482524ull, 2407259034265575920ull}}, {{6740954168613534498ull, 17003836938980789124ull, 14300249807388103155ull, 3009073792831969900ull}}, {{8426192710766918123ull, 16643110155298598501ull, 17875312259235128944ull, 3761342241039962375ull}}, {{7572213453443017779ull, 10401943847061624063ull, 18089599189663037446ull, 2350838900649976484ull}}, {{4853580798376384320ull, 3779057771972254271ull, 4165254913369245192ull, 2938548625812470606ull}}, {{1455289979543092495ull, 4723822214965317839ull, 14429940678566332298ull, 3673185782265588257ull}}, {{15654170529711029331ull, 15128149805561423106ull, 4202367792925751660ull, 4591482227831985322ull}}, {{14395542599496781236ull, 231721591621113633ull, 7238165889005982692ull, 2869676392394990826ull}}, {{4159370194088812833ull, 289651989526392042ull, 18271079398112254173ull, 3587095490493738532ull}}, {{14422584779465791849ull, 4973751005335377956ull, 4392105173930766100ull, 4483869363117173166ull}}, {{18237487524020895714ull, 12331966415189387030ull, 16580123788988892524ull, 2802418351948233228ull}}, {{13573487368171343834ull, 15414958018986733788ull, 2278410662526564039ull, 3503022939935291536ull}}, {{16966859210214179793ull, 14657011505306029331ull, 2848013328158205049ull, 4378778674919114420ull}}, {{8298443997170168419ull, 2243103163175186476ull, 11003380366953653964ull, 2736736671824446512ull}}, {{10373054996462710523ull, 2803878953968983095ull, 13754225458692067455ull, 3420920839780558140ull}}, {{8354632727151000250ull, 17339906747743392581ull, 17192781823365084318ull, 4276151049725697675ull}}, {{7527488463683069108ull, 6225755698912232459ull, 8439645630389483747ull, 2672594406078561047ull}}, {{4797674561176448481ull, 3170508605212902670ull, 5937871019559466780ull, 3340743007598201309ull}}, {{15220465238325336409ull, 3963135756516128337ull, 12034024792876721379ull, 4175928759497751636ull}}, {{2595261746312253400ull, 171116838608886259ull, 16744637532402726670ull, 2609955474686094772ull}}, {{17079135238172480462ull, 9437268085115883631ull, 2484052841793856721ull, 3262444343357618466ull}}, {{16737233029288212673ull, 16408271124822242443ull, 12328438089097096709ull, 4078055429197023082ull}}, {{8154927634091438969ull, 12561012462227595479ull, 12316959824113073347ull, 2548784643248139426ull}}, {{5581973524186910807ull, 11089579559357106445ull, 6172827743286565876ull, 3185980804060174283ull}}, {{11589152923661026413ull, 13861974449196383056ull, 3104348660680819441ull, 3982476005075217854ull}}, {{7243220577288141508ull, 1746205003106657554ull, 15775275968207675863ull, 2489047503172011158ull}}, {{18277397758464952693ull, 16017814309165485654ull, 10495722923404819020ull, 3111309378965013948ull}}, {{13623375161226415058ull, 1575523812747305452ull, 13119653654256023776ull, 3889136723706267435ull}}, {{17737981512621285220ull, 984702382967065907ull, 5893940524696320908ull, 2430710452316417147ull}}, {{17560790872349218620ull, 1230877978708832384ull, 2755739637443013231ull, 3038388065395521434ull}}, {{3504244516726971659ull, 15373655528668204193ull, 12668046583658542346ull, 3797985081744401792ull}}, {{13719367869022827047ull, 14220220723845015524ull, 7917529114786588966ull, 2373740676090251120ull}}, {{17149209836278533809ull, 8551903867951493597ull, 9896911393483236208ull, 2967175845112813900ull}}, {{7601454240066003549ull, 10689879834939366997ull, 12371139241854045260ull, 3708969806391017375ull}}, {{7056751909254946170ull, 15904546933691880181ull, 14649491053799860143ull, 2318106128994385859ull}}, {{13432625904996070617ull, 15268997648687462322ull, 13700177798822437275ull, 2897632661242982324ull}}, {{7567410344390312463ull, 14474561042431939999ull, 17125222248528046594ull, 3622040826553727905ull}}, {{4847576912060502675ull, 8869829266185149191ull, 7571469755377894531ull, 4527551033192159882ull}}, {{9947264597678896028ull, 3237800282152024292ull, 9343854615538571986ull, 2829719395745099926ull}}, {{12434080747098620035ull, 13270622389544806173ull, 2456446232568439174ull, 3537149244681374908ull}}, {{1707542878591111331ull, 7364905950076231909ull, 3070557790710548968ull, 4421436555851718635ull}}, {{3373057308333138534ull, 4603066218797644943ull, 18059999683689950769ull, 2763397847407324146ull}}, {{18051379690698586880ull, 10365518791924444082ull, 13351627567757662653ull, 3454247309259155183ull}}, {{13340852576518457791ull, 17568584508332943007ull, 12077848441269690412ull, 4317809136573943979ull}}, {{15255561887965117976ull, 1756993280853313571ull, 5242812266579862556ull, 2698630710358714987ull}}, {{14457766341529009566ull, 2196241601066641964ull, 1941829314797440291ull, 3373288387948393734ull}}, {{18072207926911261957ull, 16580360056615466167ull, 11650658680351576171ull, 4216610484935492167ull}}, {{18212658981960620579ull, 8056882026170972402ull, 14199190702860816963ull, 2635381553084682604ull}}, {{13542451690595999916ull, 5459416514286327599ull, 17748988378576021204ull, 3294226941355853255ull}}, {{12316378594817611991ull, 6824270642857909499ull, 17574549454792638601ull, 4117783676694816569ull}}, {{5391893612547313542ull, 15794384197854663197ull, 4066564381604317269ull, 2573614797934260356ull}}, {{11351553034111529832ull, 5907922192036165284ull, 5083205477005396587ull, 3217018497417825445ull}}, {{14189441292639412290ull, 2773216721617818701ull, 10965692864684133638ull, 4021273121772281806ull}}, {{11174243817113326633ull, 15568318506293300400ull, 2241872022000195619ull, 2513295701107676129ull}}, {{13967804771391658291ull, 14848712114439237596ull, 7414026045927632428ull, 3141619626384595161ull}}, {{17459755964239572864ull, 114146069339495379ull, 13879218575836928440ull, 3927024532980743951ull}}, {{8606504468436039088ull, 71341293337184612ull, 15592040637539162131ull, 2454390333112964969ull}}, {{10758130585545048860ull, 13924234671953644477ull, 5654992741641788951ull, 3067987916391206212ull}}, {{18059349250358698979ull, 12793607321514667692ull, 7068740927052236189ull, 3834984895489007765ull}}, {{2063721244619411054ull, 10301847585160361260ull, 6723806088621341570ull, 2396865559680629853ull}}, {{2579651555774263818ull, 3653937444595675767ull, 13016443629204064867ull, 2996081949600787316ull}}, {{17059622499999993484ull, 18402479861026758420ull, 16270554536505081083ull, 3745102437000984145ull}}, {{1438892025645220120ull, 9195706903928030061ull, 3251567557674593821ull, 2340689023125615091ull}}, {{6410301050483913053ull, 16106319648337425480ull, 17899517502375405988ull, 2925861278907018863ull}}, {{8012876313104891317ull, 1686155486712230234ull, 17762710859541869582ull, 3657326598633773579ull}}, {{792723354526338338ull, 11331066395245063601ull, 17591702555999949073ull, 4571658248292216974ull}}, {{12024667142647431221ull, 164387469387082894ull, 6383128079072580267ull, 2857286405182635609ull}}, {{5807461891454513218ull, 14040542392016017330ull, 12590596117268113237ull, 3571608006478294511ull}}, {{16482699401172917331ull, 3715619934737857950ull, 11126559128157753643ull, 4464510008097868139ull}}, {{5690001107305685428ull, 16419449997467267ull, 4648256445884902075ull, 2790318755061167587ull}}, {{2500815365704718881ull, 13855582367778997796ull, 1198634538928739689ull, 3487898443826459484ull}}, {{3126019207130898601ull, 3484419904441583533ull, 1498293173660924612ull, 4359873054783074355ull}}, {{4259605013670505578ull, 11401134477130765516ull, 17077334298033935546ull, 2724920659239421471ull}}, {{5324506267088131972ull, 5028046059558681087ull, 16734981854115031529ull, 3406150824049276839ull}}, {{2043946815432777061ull, 10896743592875739263ull, 16307041299216401507ull, 4257688530061596049ull}}, {{8194995787286567519ull, 4504621736333643087ull, 3274371784369169086ull, 2661055331288497531ull}}, {{5632058715680821495ull, 14854149207271829667ull, 17928022785743625069ull, 3326319164110621913ull}}, {{2428387376173638965ull, 4732628453807623372ull, 8574970426897367625ull, 4157898955138277392ull}}, {{10741114146963300161ull, 14487107829698234367ull, 5359356516810854765ull, 2598686846961423370ull}}, {{8814706665276737297ull, 4273826731840629247ull, 15922567682868344265ull, 3248358558701779212ull}}, {{6406697313168533717ull, 9953969433228174463ull, 1456465529875878715ull, 4060448198377224016ull}}, {{10921714848371415430ull, 3915387886553915087ull, 910290956172424197ull, 2537780123985765010ull}}, {{9040457542036881383ull, 9505920876619781763ull, 10361235732070306054ull, 3172225154982206262ull}}, {{6688885909118713824ull, 2659029058919951396ull, 3728172628233106760ull, 3965281443727757828ull}}, {{13403925730053971948ull, 1661893161824969622ull, 11553479929500467533ull, 2478300902329848642ull}}, {{7531535125712689127ull, 6689052470708599932ull, 5218477875020808608ull, 3097876127912310803ull}}, {{9414418907140861409ull, 8361315588385749915ull, 1911411325348622856ull, 3872345159890388504ull}}, {{3578168807749344429ull, 5225822242741093697ull, 1194632078342889285ull, 2420215724931492815ull}}, {{9084397028114068440ull, 11143963821853755025ull, 15328348153210775318ull, 3025269656164366018ull}}, {{15967182303569973454ull, 4706582740462417973ull, 9937063154658693340ull, 3781587070205457523ull}}, {{12285331948944927361ull, 12164986249643787041ull, 3904821462447989385ull, 2363491918878410952ull}}, {{1521606880898995489ull, 1371174756772570090ull, 4881026828059986732ull, 2954364898598013690ull}}, {{11125380637978520169ull, 1713968445965712612ull, 15324655571929759223ull, 3692956123247517112ull}}, {{16176734935591350914ull, 7988759306369652238ull, 9577909732456099514ull, 2308097577029698195ull}}, {{10997546632634412834ull, 762577096107289490ull, 7360701147142736489ull, 2885121971287122744ull}}, {{4523561253938240235ull, 5564907388561499767ull, 9200876433928420611ull, 3606402464108903430ull}}, {{1042765548995412389ull, 2344448217274486805ull, 2277723505555749956ull, 4508003080136129288ull}}, {{2957571477335826695ull, 10688652172651330061ull, 1423577190972343722ull, 2817501925085080805ull}}, {{8308650365097171273ull, 4137443178959386768ull, 6391157507142817557ull, 3521877406356351006ull}}, {{10385812956371464091ull, 9783489992126621364ull, 17212318920783297754ull, 4402346757945438757ull}}, {{15714505134586940865ull, 10726367263506526256ull, 13063542334703255048ull, 2751466723715899223ull}}, {{1196387344524124465ull, 13407959079383157821ull, 11717741899951680906ull, 3439333404644874029ull}}, {{6107170199082543486ull, 7536576812374171468ull, 812119319657437421ull, 4299166755806092537ull}}, {{13040353411281365487ull, 7016203516947551119ull, 12036789620854368148ull, 2686979222378807835ull}}, {{11688755745674318954ull, 8770254396184438899ull, 10434301007640572281ull, 3358724027973509794ull}}, {{9999258663665510789ull, 15574504013657936528ull, 3819504222695939543ull, 4198405034966887243ull}}, {{6249536664790944243ull, 16651594036177292186ull, 81347129971268262ull, 2624003146854304527ull}}, {{17035292867843456112ull, 11591120508366839424ull, 13936741967746249040ull, 3280003933567880658ull}}, {{2847372011094768524ull, 14488900635458549281ull, 8197555422828035492ull, 4100004916959850823ull}}, {{13308822553002700087ull, 18278934934016369108ull, 12041001166908604038ull, 2562503073099906764ull}}, {{16636028191253375109ull, 13625296630665685577ull, 15051251458635755048ull, 3203128841374883455ull}}, {{6959977183784555174ull, 17031620788332106972ull, 14202378304867305906ull, 4003911051718604319ull}}, {{13573357776720122792ull, 15256449011134954761ull, 15794015468183148047ull, 2502444407324127699ull}}, {{3131639165617989778ull, 14458875245491305548ull, 15130833316801547155ull, 3128055509155159624ull}}, {{3914548957022487222ull, 13461908038436744031ull, 466797572292382328ull, 3910069386443949531ull}}, {{9364122125780136370ull, 8413692524022965019ull, 16432649547178596619ull, 2443793366527468456ull}}, {{7093466638797782559ull, 5905429636601318370ull, 2094067860263694158ull, 3054741708159335571ull}}, {{18090205335352004006ull, 16605159082606423770ull, 16452642880611781409ull, 3818427135199169463ull}}, {{15918064353022390408ull, 3460695398987933000ull, 17200430828023445237ull, 2386516959499480914ull}}, {{1450836367568436394ull, 8937555267162304155ull, 12277166498174530738ull, 2983146199374351143ull}}, {{15648603514742709204ull, 1948572047098104385ull, 10734772104290775519ull, 3728932749217938929ull}}, {{2862848169073111397ull, 8135386557077397097ull, 18238447611250204459ull, 2330582968261211830ull}}, {{8190246229768777150ull, 5557547177919358467ull, 13574687477207979766ull, 2913228710326514788ull}}, {{5626121768783583533ull, 16170306009253973892ull, 16968359346509974707ull, 3641535887908143485ull}}, {{7032652210979479417ull, 15601196493140079461ull, 7375391127855304672ull, 4551919859885179357ull}}, {{6701250641075868588ull, 9750747808212549663ull, 6915462464123259372ull, 2844949912428237098ull}}, {{3764877282917447830ull, 12188434760265687079ull, 17867700117008850023ull, 3556187390535296372ull}}, {{94410585219421884ull, 10623857431904720945ull, 3887881072551510913ull, 4445234238169120466ull}}, {{11588221661830608438ull, 18169125941008920350ull, 7041611688772082224ull, 2778271398855700291ull}}, {{5261905040433484739ull, 4264663352551598822ull, 4190328592537714877ull, 3472839248569625364ull}}, {{15800753337396631731ull, 9942515209116886431ull, 5237910740672143596ull, 4341049060712031705ull}}, {{16792999863513976688ull, 15437444042552829827ull, 14802909258988559507ull, 2713155662945019815ull}}, {{16379563810965082956ull, 14685119034763649380ull, 13891950555308311480ull, 3391444578681274769ull}}, {{2027710689996802079ull, 18356398793454561726ull, 3529880138853225638ull, 4239305723351593462ull}}, {{15102377236530165012ull, 6861063227481713174ull, 16041233142065429736ull, 2649566077094745913ull}}, {{9654599508807930456ull, 8576329034352141468ull, 6216483372299623458ull, 3311957596368432392ull}}, {{12068249386009913070ull, 1497039256085401027ull, 7770604215374529323ull, 4139946995460540490ull}}, {{5236812857042501717ull, 17076550599549233306ull, 9468313653036468730ull, 2587466872162837806ull}}, {{15769388108157902954ull, 12122316212581765824ull, 2612020029440810105ull, 3234333590203547258ull}}, {{1264991061487827077ull, 1317837210445043569ull, 12488397073655788440ull, 4042916987754434072ull}}, {{12319834459498361683ull, 823648256528152230ull, 7805248171034867775ull, 2526823117346521295ull}}, {{6176421037518176296ull, 14864618375942354000ull, 5144874195366196814ull, 3158528896683151619ull}}, {{7720526296897720370ull, 9357400933073166692ull, 1819406725780358114ull, 3948161120853939524ull}}, {{14048700972415851039ull, 10460061601598117086ull, 10360501240467499629ull, 2467600700533712202ull}}, {{8337504178665037991ull, 17686763020425034262ull, 3727254513729598728ull, 3084500875667140253ull}}, {{1198508186476521681ull, 3661709701821741212ull, 9270754160589386315ull, 3855626094583925316ull}}, {{9972439653402601859ull, 18429469628134445921ull, 15017593387223142254ull, 2409766309114953322ull}}, {{17077235585180640227ull, 13813464998313281593ull, 9548619697174152010ull, 3012207886393691653ull}}, {{7511486426193636572ull, 8043459211036826184ull, 16547460639895077917ull, 3765259857992114566ull}}, {{4694679016371022858ull, 7333005016111710317ull, 5730476881507035794ull, 2353287411245071604ull}}, {{10480034788891166476ull, 18389628306994413704ull, 7163096101883794742ull, 2941609264056339505ull}}, {{13100043486113958095ull, 13763663346888241322ull, 13565556145782131332ull, 3677011580070424381ull}}, {{7151682320787671810ull, 17204579183610301653ull, 3121887126945500453ull, 4596264475088030477ull}}, {{6775644459705988834ull, 13058704998970132485ull, 4257022463554631735ull, 2872665296930019048ull}}, {{13081241593059873946ull, 11711695230285277702ull, 5321278079443289669ull, 3590831621162523810ull}}, {{7128179954470066624ull, 804560982574433416ull, 15874969636158887895ull, 4488539526453154762ull}}, {{4455112471543791640ull, 7420379641750102741ull, 14533542041026692838ull, 2805337204033221726ull}}, {{10180576607857127454ull, 52102515332852618ull, 8943555514428590240ull, 3506671505041527158ull}}, {{3502348722966633510ull, 65128144166065773ull, 1956072356180961992ull, 4383339381301908948ull}}, {{4494810961067839896ull, 40705090103791108ull, 10445917259467877053ull, 2739587113313693092ull}}, {{5618513701334799869ull, 4662567381057126789ull, 13057396574334846316ull, 3424483891642116365ull}}, {{11634828145095887741ull, 5828209226321408486ull, 2486687662636394183ull, 4280604864552645457ull}}, {{2660081572257541934ull, 10560159794091962160ull, 13083394835216216124ull, 2675378040345403410ull}}, {{3325101965321927418ull, 13200199742614952700ull, 7130871507165494347ull, 3344222550431754263ull}}, {{4156377456652409272ull, 11888563659841302971ull, 4301903365529480030ull, 4180278188039692829ull}}, {{291892901194061843ull, 2818666268973426453ull, 4994532612669618971ull, 2612673867524808018ull}}, {{4976552144919965208ull, 17358390891498946778ull, 15466537802691799521ull, 3265842334406010022ull}}, {{15444062218004732318ull, 7862930559091519760ull, 10109800216509973594ull, 4082302918007512528ull}}, {{9652538886252957699ull, 9526017617859587754ull, 6318625135318733496ull, 2551439323754695330ull}}, {{2842301570961421315ull, 11907522022324484693ull, 17121653456003192678ull, 3189299154693369162ull}}, {{8164562982129164548ull, 5661030491050830058ull, 12178694783149215040ull, 3986623943366711453ull}}, {{9714537882258115747ull, 3538144056906768786ull, 9917527248681953352ull, 2491639964604194658ull}}, {{2919800315967868875ull, 4422680071133460983ull, 3173537023997665882ull, 3114549955755243323ull}}, {{17484808450241999806ull, 14751722125771602036ull, 17801979335279246064ull, 3893187444694054153ull}}, {{1704633244546474071ull, 9219826328607251273ull, 4208708056908446934ull, 2433242152933783846ull}}, {{6742477574110480492ull, 2301410873904288283ull, 14484257107990334476ull, 3041552691167229807ull}}, {{3816410949210712711ull, 2876763592380360354ull, 13493635366560530191ull, 3801940863959037259ull}}, {{6996942861684083349ull, 8715506272878807077ull, 6127679094886637417ull, 2376213039974398287ull}}, {{13357864595532492090ull, 15506068859525896750ull, 3047912850180908867ull, 2970266299967997859ull}}, {{7473958707560839304ull, 14770900055979983034ull, 17644949118008299796ull, 3712832874959997323ull}}, {{9282910210652912469ull, 8440498132713588ull, 8722250189541493421ull, 2320520546849998327ull}}, {{11603637763316140587ull, 4622236641093279889ull, 6291126718499478872ull, 2900650683562497909ull}}, {{669489148863012021ull, 5777795801366599862ull, 12475594416551736494ull, 3625813354453122386ull}}, {{10060233472933540834ull, 16445616788563025635ull, 6371120983834894809ull, 4532266693066402983ull}}, {{3981802911369769070ull, 3360981465210809166ull, 10899479642537891112ull, 2832666683166501864ull}}, {{14200625676066987145ull, 4201226831513511457ull, 13624349553172363890ull, 3540833353958127330ull}}, {{3915724039801570219ull, 14474905576246665130ull, 7807064904610679054ull, 4426041692447659163ull}}, {{7059013543303369291ull, 4435129966726777802ull, 2573572556167980457ull, 2766276057779786977ull}}, {{18047138965983987422ull, 10155598476835860156ull, 7828651713637363475ull, 3457845072224733721ull}}, {{4112179633770432661ull, 8082812077617437292ull, 14397500660474092248ull, 4322306340280917151ull}}, {{11793484307961296221ull, 5051757548510898307ull, 15915966940437389511ull, 2701441462675573219ull}}, {{10130169366524232372ull, 1703010917211234980ull, 15283272657119348985ull, 3376801828344466524ull}}, {{12662711708155290465ull, 6740449664941431629ull, 657346747689634615ull, 4221002285430583156ull}}, {{10220037826810750493ull, 11130310068229476624ull, 9634213754160797442ull, 2638126428394114472ull}}, {{12775047283513438116ull, 4689515548432069972ull, 12042767192700996803ull, 3297658035492643090ull}}, {{15968809104391797645ull, 1250208417112699561ull, 5830086954021470196ull, 4122072544365803863ull}}, {{3062976662603791672ull, 10004752297550213034ull, 10561333373904500728ull, 2576295340228627414ull}}, {{13052092865109515398ull, 12505940371937766292ull, 3978294680525850102ull, 3220369175285784268ull}}, {{16315116081386894248ull, 6409053428067432057ull, 4972868350657312628ull, 4025461469107230335ull}}, {{3279418523225727049ull, 13229030429396920844ull, 10025571746801902248ull, 2515913418192018959ull}}, {{4099273154032158811ull, 16536288036746151055ull, 7920278665074989906ull, 3144891772740023699ull}}, {{512405424112810610ull, 11446988009077913011ull, 5288662312916349479ull, 3931114715925029624ull}}, {{16461154454566364295ull, 14071896533314777487ull, 3305413945572718424ull, 2456946697453143515ull}}, {{15964757049780567465ull, 17589870666643471859ull, 17966825487248061742ull, 3071183371816429393ull}}, {{15344260293798321427ull, 12763966296449564016ull, 8623473803777913466ull, 3838979214770536742ull}}, {{9590162683623950892ull, 12589164953708365414ull, 777985108933808012ull, 2399362009231585464ull}}, {{2764331317675162807ull, 15736456192135456768ull, 972481386167260015ull, 2999202511539481830ull}}, {{3455414147093953509ull, 15058884221741933056ull, 10438973769563850827ull, 3749003139424352287ull}}, {{2159633841933720943ull, 7105959629375014208ull, 13441887633618488623ull, 2343126962140220179ull}}, {{2699542302417151179ull, 4270763518291379856ull, 12190673523595722875ull, 2928908702675275224ull}}, {{3374427878021438973ull, 726768379436836916ull, 15238341904494653594ull, 3661135878344094030ull}}, {{4218034847526798717ull, 10131832511150821953ull, 9824555343763541184ull, 4576419847930117538ull}}, {{14165486825772718958ull, 6332395319469263720ull, 10752033108279601144ull, 2860262404956323461ull}}, {{17706858532215898698ull, 7915494149336579650ull, 18051727403776889334ull, 3575328006195404326ull}}, {{12910201128415097564ull, 670995649815948755ull, 13341287217866335860ull, 4469160007744255408ull}}, {{5763032696045742026ull, 9642744317989743780ull, 8338304511166459912ull, 2793225004840159630ull}}, {{7203790870057177532ull, 12053430397487179725ull, 1199508602103299082ull, 3491531256050199538ull}}, {{13616424605998859819ull, 5843415960004198848ull, 10722757789483899661ull, 4364414070062749422ull}}, {{8510265378749287387ull, 5957977984216318232ull, 2090037600000049384ull, 2727758793789218389ull}}, {{10637831723436609233ull, 7447472480270397790ull, 7224233018427449634ull, 3409698492236522986ull}}, {{4073917617440985734ull, 85968563483221430ull, 18253663309889087851ull, 4262123115295653732ull}}, {{16381256566182779796ull, 16194631416672871057ull, 2185167531825904098ull, 2663826947059783583ull}}, {{6641512652446311033ull, 11019917233986313014ull, 16566517470064543835ull, 3329783683824729478ull}}, {{17525262852412664599ull, 9163210524055503363ull, 11484774800725903986ull, 4162229604780911848ull}}, {{8647446273544221422ull, 10338692595962077506ull, 7177984250453689991ull, 2601393502988069905ull}}, {{1585935805075500970ull, 8311679726525208979ull, 13584166331494500393ull, 3251741878735087381ull}}, {{15817477811626539924ull, 15001285676583899127ull, 3145149859085961779ull, 4064677348418859227ull}}, {{16803452659907669309ull, 7069960538651243002ull, 18106619726424583776ull, 2540423342761787016ull}}, {{11780943788029810828ull, 8837450673314053753ull, 4186530584321178104ull, 3175529178452233771ull}}, {{891121679755099823ull, 11046813341642567192ull, 621477211974084726ull, 3969411473065292214ull}}, {{556951049846937389ull, 2292572320099216591ull, 14223481312765966666ull, 2480882170665807633ull}}, {{14531246867590835448ull, 12089087436978796546ull, 3944293585675294620ull, 3101102713332259542ull}}, {{8940686547633768502ull, 15111359296223495683ull, 14153739018948894083ull, 3876378391665324427ull}}, {{3282086083057411362ull, 7138756550925990850ull, 6540243877629364850ull, 2422736494790827767ull}}, {{13325979640676540011ull, 18146817725512264370ull, 3563618828609318158ull, 3028420618488534709ull}}, {{7434102513990899205ull, 13460150120035554655ull, 9066209554189035602ull, 3785525773110668386ull}}, {{11563843098885393859ull, 13024279843449609563ull, 10278066989795535155ull, 2365953608194167741ull}}, {{9843117855179354420ull, 11668663785884624050ull, 17459269755671806848ull, 2957442010242709676ull}}, {{3080525282119417217ull, 14585829732355780063ull, 3377343120880206944ull, 3696802512803387096ull}}, {{8842857328965717617ull, 9116143582722362539ull, 2110839450550129340ull, 2310501570502116935ull}}, {{6441885642779759117ull, 11395179478402953174ull, 16473607368469825387ull, 2888126963127646168ull}}, {{17275729090329474704ull, 9632288329576303563ull, 2145265136877730118ull, 3610158703909557711ull}}, {{16982975344484455476ull, 2816988375115603646ull, 16516639476379326360ull, 4512698379886947138ull}}, {{6002673571875396769ull, 1760617734447252279ull, 14934585691164466879ull, 2820436487429341961ull}}, {{2891655946416858057ull, 16035830223341229061ull, 4833174058673419886ull, 3525545609286677452ull}}, {{8226255951448460475ull, 10821415742321760518ull, 6041467573341774858ull, 4406932011608346815ull}}, {{529723951227899893ull, 11375070857378488228ull, 10693446260979691142ull, 2754332507255216759ull}}, {{662154939034874866ull, 4995466534868334477ull, 8755121807797226024ull, 3442915634069020949ull}}, {{5439379692220981486ull, 6244333168585418096ull, 15555588278173920434ull, 4303644542586276186ull}}, {{3399612307638113429ull, 8514394248793274214ull, 14333928692286088175ull, 2689777839116422616ull}}, {{13472887421402417594ull, 6031306792564204863ull, 17917410865357610219ull, 3362222298895528270ull}}, {{12229423258325634089ull, 2927447472277868175ull, 13173391544842236966ull, 4202777873619410338ull}}, {{14560918564094603162ull, 15664712725455831321ull, 12845055733953786007ull, 2626736171012131461ull}}, {{4366090149836090240ull, 14969204888392401248ull, 2221261612160068797ull, 3283420213765164327ull}}, {{5457612687295112800ull, 4876448055208337848ull, 16611635070482249709ull, 4104275267206455408ull}}, {{3411007929559445500ull, 5353623043718905107ull, 10382271919051406068ull, 2565172042004034630ull}}, {{18098817967231470587ull, 6692028804648631383ull, 3754467861959481777ull, 3206465052505043288ull}}, {{18011836440611950330ull, 12976722024238177133ull, 4693084827449352221ull, 4008081315631304110ull}}, {{13563240784596162908ull, 10416294274362554660ull, 16768236072438008850ull, 2505050822269565068ull}}, {{16954050980745203635ull, 3796995806098417517ull, 2513551016837959447ull, 3131313527836956336ull}}, {{7357505670649340832ull, 134558739195633993ull, 3141938771047449309ull, 3914141909796195420ull}}, {{16127656090224307780ull, 2389942221210965197ull, 11187083768759431626ull, 2446338693622622137ull}}, {{6324512057498221013ull, 12210799813368482305ull, 148796655667125820ull, 3057923367028277672ull}}, {{12517326090300164170ull, 15263499766710602881ull, 185995819583907275ull, 3822404208785347090ull}}, {{905799778796520750ull, 7233844344980432849ull, 4727933405667329951ull, 2389002630490841931ull}}, {{5743935741923038842ull, 4430619412798153157ull, 1298230738656774535ull, 2986253288113552414ull}}, {{11791605695831186456ull, 926588247570303542ull, 10846160460175743977ull, 3732816610141940517ull}}, {{2758067541467103631ull, 12108332700799909474ull, 9084693296823533937ull, 2333010381338712823ull}}, {{12670956463688655347ull, 1300357820717723130ull, 6744180602602029518ull, 2916262976673391029ull}}, {{6615323542756043376ull, 10848819312751929721ull, 13041911771679924801ull, 3645328720841738786ull}}, {{12880840446872442124ull, 18172710159367300055ull, 7079017677745130193ull, 4556660901052173483ull}}, {{14968054306936358183ull, 4440414821963480678ull, 2118543039377012419ull, 2847913063157608427ull}}, {{9486695846815671921ull, 938832509026962944ull, 16483236854503429236ull, 3559891328947010533ull}}, {{11858369808519589901ull, 1173540636283703680ull, 6768988012847122833ull, 4449864161183763167ull}}, {{7411481130324743689ull, 12262677943745784560ull, 11148146535670533626ull, 2781165100739851979ull}}, {{9264351412905929611ull, 6104975392827454892ull, 9323497151160779129ull, 3476456375924814974ull}}, {{11580439266132412013ull, 12242905259461706519ull, 2430999402096198103ull, 4345570469906018718ull}}, {{14155303568973839364ull, 14569344814804648430ull, 15354432681592287526ull, 2715981543691261698ull}}, {{8470757424362523397ull, 8988308981651034730ull, 9969668815135583600ull, 3394976929614077123ull}}, {{1365074743598378438ull, 11235386227063793413ull, 7850400000492091596ull, 4243721162017596404ull}}, {{3159014723962680476ull, 16245488428769646691ull, 14129872037162333055ull, 2652325726260997752ull}}, {{17783826460235514307ull, 15695174517534670459ull, 17662340046452916319ull, 3315407157826247190ull}}, {{17618097056867004980ull, 15007282128490950170ull, 12854553021211369591ull, 4144258947282808988ull}}, {{15622996678969266017ull, 16297080357947925712ull, 17257467675111881802ull, 2590161842051755617ull}}, {{1082001775002030905ull, 11147978410580131333ull, 7736776538607688541ull, 3237702302564694522ull}}, {{5964188237179926535ull, 99914957943000454ull, 447598636404834869ull, 4047127878205868153ull}}, {{17562675703519617796ull, 2368289857928069235ull, 11808964193821491553ull, 2529454923878667595ull}}, {{17341658610972134341ull, 7572048340837474448ull, 10149519223849476537ull, 3161818654848334494ull}}, {{3230329190005616311ull, 14076746444474230965ull, 3463526992957069863ull, 3952273318560418118ull}}, {{4324798752967204146ull, 15715495555437476209ull, 15999762425880332376ull, 2470170824100261323ull}}, {{10017684459636393087ull, 1197625370587293645ull, 15388017013923027567ull, 3087713530125326654ull}}, {{17133791592972879262ull, 15332089768516280768ull, 10011649230549008650ull, 3859641912656658318ull}}, {{10708619745608049539ull, 14194242123750063384ull, 1645594750665742502ull, 2412276195410411449ull}}, {{13385774682010061924ull, 8519430617832803422ull, 6668679456759566032ull, 3015345244263014311ull}}, {{7508846315657801597ull, 10649288272291004278ull, 3724163302522069636ull, 3769181555328767889ull}}, {{81342928858738094ull, 15879177207036653482ull, 13856817110144763282ull, 2355738472080479930ull}}, {{9325050697928198425ull, 10625599471941041044ull, 8097649350826178295ull, 2944673090100599913ull}}, {{11656313372410248032ull, 8670313321498913401ull, 14733747706960110773ull, 3680841362625749891ull}}, {{735333660230646327ull, 15449577670301029656ull, 13805498615272750562ull, 4601051703282187364ull}}, {{459583537644153955ull, 14267672062365531439ull, 17851808671400244909ull, 2875657314551367102ull}}, {{14409537477337356155ull, 3999532022674750586ull, 13091388802395530329ull, 3594571643189208878ull}}, {{8788549809816919386ull, 9611101046770826137ull, 7140863966139637103ull, 4493214553986511098ull}}, {{17022058677204044377ull, 12924467181872848191ull, 9074725997264661093ull, 2808259096241569436ull}}, {{16665887328077667567ull, 2320525922058896527ull, 11343407496580826367ull, 3510323870301961795ull}}, {{16220673141669696554ull, 16735715457855784371ull, 9567573352298645054ull, 4387904837877452244ull}}, {{7832077704329866394ull, 5848136142732477328ull, 15203105382041428967ull, 2742440523673407652ull}}, {{9790097130412332993ull, 2698484159988208756ull, 557137653842234593ull, 3428050654591759566ull}}, {{12237621413015416241ull, 7984791218412648849ull, 9919794104157569049ull, 4285063318239699457ull}}, {{730984355493553295ull, 16519709557576375291ull, 17729086361166950415ull, 2678164573899812160ull}}, {{14748788499649105330ull, 16037950928543081209ull, 3714613877749136403ull, 3347705717374765201ull}}, {{4600927569279217951ull, 15435752642251463608ull, 9254953365613808408ull, 4184632146718456501ull}}, {{2875579730799511220ull, 9647345401407164755ull, 8090188862722324207ull, 2615395091699035313ull}}, {{17429532718781552736ull, 7447495733331568039ull, 14724422096830293163ull, 3269243864623794141ull}}, {{17175229880049553016ull, 4697683648237072145ull, 4570469565755702742ull, 4086554830779742677ull}}, {{3816989647389888779ull, 16771110335430333803ull, 5162386487811008165ull, 2554096769237339173ull}}, {{159551040809973070ull, 7128829864005753542ull, 11064669128191148111ull, 3192620961546673966ull}}, {{9422810837867242145ull, 4299351311579804023ull, 4607464373384159331ull, 3990776201933342458ull}}, {{12806785801308108197ull, 381251560523683562ull, 7491351251792487486ull, 2494235126208339036ull}}, {{6785110214780359438ull, 9699936487509380261ull, 9364189064740609357ull, 3117793907760423795ull}}, {{13093073786902837202ull, 16736606627814113230ull, 7093550312498373792ull, 3897242384700529744ull}}, {{3571485098386885347ull, 10460379142383820769ull, 4433468945311483620ull, 2435776490437831090ull}}, {{9076042391410994588ull, 13075473927979775961ull, 14765208218494130333ull, 3044720613047288862ull}}, {{15956739007691131139ull, 2509284354692556239ull, 9233138236262887109ull, 3805900766309111078ull}}, {{16890490907448038818ull, 3874145730896541601ull, 1159025379236916539ull, 2378687978943194424ull}}, {{7278055579027884810ull, 230996145193289098ull, 1448781724046145674ull, 2973359973678993030ull}}, {{18320941510639631821ull, 9512117218346387180ull, 11034349191912457900ull, 3716699967098741287ull}}, {{2227216407294994080ull, 15168445298321267796ull, 13813997272586368043ull, 2322937479436713304ull}}, {{2784020509118742600ull, 14348870604474196841ull, 17267496590732960054ull, 2903671849295891630ull}}, {{8091711654825816154ull, 8712716218737970243ull, 12360998701561424260ull, 3629589811619864538ull}}, {{5502953550104882288ull, 10890895273422462804ull, 6227876340097004517ull, 4536987264524830673ull}}, {{12662718005670327238ull, 9112652555102733204ull, 15421637758629097583ull, 2835617040328019170ull}}, {{15828397507087909048ull, 6779129675451028601ull, 10053675161431596171ull, 3544521300410023963ull}}, {{5950438828577722598ull, 3862226075886397848ull, 7955407933362107310ull, 4430651625512529954ull}}, {{3719024267861076624ull, 16248949352711162367ull, 9583815976778704972ull, 2769157265945331221ull}}, {{37094316398957876ull, 1864442617179401343ull, 16591455989400769120ull, 3461446582431664026ull}}, {{13881425950780861056ull, 2330553271474251678ull, 11515947949896185592ull, 4326808228039580033ull}}, {{4064205200810650256ull, 1456595794671407299ull, 279938441044034139ull, 2704255142524737521ull}}, {{468570482585924916ull, 15655802798621422836ull, 4961609069732430577ull, 3380318928155921901ull}}, {{585713103232406145ull, 5734695442994614833ull, 10813697355592926126ull, 4225398660194902376ull}}, {{11895285735588723601ull, 17419242707153797982ull, 6758560847245578828ull, 2640874162621813985ull}}, {{5645735132631128693ull, 3327309310232695862ull, 13059887077484361440ull, 3301092703277267481ull}}, {{16280540952643686674ull, 4159136637790869827ull, 2489800791573288088ull, 4126365879096584352ull}}, {{7869495086188610220ull, 2599460398619293642ull, 1556125494733305055ull, 2578978674435365220ull}}, {{613496820880986966ull, 17084383553556280765ull, 1945156868416631318ull, 3223723343044206525ull}}, {{5378557044528621612ull, 12132107405090575148ull, 7043132103948177052ull, 4029654178805258156ull}}, {{12584970189685164316ull, 16805939165036385275ull, 13625329601822386465ull, 2518533861753286347ull}}, {{11119526718679067490ull, 7172365901013317882ull, 12419975983850595178ull, 3148167327191607934ull}}, {{4676036361494058555ull, 18188829413121423161ull, 6301597942958468164ull, 3935209158989509918ull}}, {{14451737772002256357ull, 2144646346346113667ull, 17773556769631206315ull, 2459505724368443698ull}}, {{13452986196575432542ull, 16515865988214805796ull, 12993573925184232085ull, 3074382155460554623ull}}, {{16816232745719290677ull, 6809774429986343533ull, 11630281388052902203ull, 3842977694325693279ull}}, {{12815988475288250626ull, 1950266009527770756ull, 14186454895174145733ull, 2401861058953558299ull}}, {{16019985594110313282ull, 7049518530337101349ull, 13121382600540294262ull, 3002326323691947874ull}}, {{6189923937355727890ull, 18035270199776152495ull, 7178356213820592019ull, 3752907904614934843ull}}, {{10786231488488411788ull, 8966200865646401357ull, 2180629624424176060ull, 2345567440384334277ull}}, {{18094475379037902638ull, 11207751082058001696ull, 7337473048957607979ull, 2931959300480417846ull}}, {{4171350150087826682ull, 9398002834145114217ull, 18395213348051785782ull, 3664949125600522307ull}}, {{9825873706037171256ull, 2524131505826616963ull, 18382330666637344324ull, 4581186407000652884ull}}, {{3835328057059538083ull, 10800954227996411410ull, 2265584629793564394ull, 2863241504375408053ull}}, {{14017532108179198412ull, 4277820748140738454ull, 7443666805669343397ull, 3579051880469260066ull}}, {{8298543098369222207ull, 9958961953603310972ull, 81211470231903438ull, 4473814850586575083ull}}, {{14409961473335539687ull, 1612665202574681453ull, 16191658233390797313ull, 2796134281616609426ull}}, {{4177393786387260897ull, 6627517521645739721ull, 11016200754883720833ull, 3495167852020761783ull}}, {{9833428251411464025ull, 12896082920484562555ull, 9158564925177263137ull, 4368959815025952229ull}}, {{3840049647918471064ull, 1142522797661769741ull, 8029946087449483413ull, 2730599884391220143ull}}, {{9411748078325476734ull, 6039839515504600080ull, 5425746590884466362ull, 3413249855489025179ull}}, {{11764685097906845917ull, 16773171431235525908ull, 2170497220178195048ull, 4266562319361281474ull}}, {{16576300223046554506ull, 10483232144522203692ull, 5968246781038759809ull, 2666601449600800921ull}}, {{2273631205098641517ull, 17715726199080142520ull, 12071994494725837665ull, 3333251812001001151ull}}, {{2842039006373301896ull, 8309599693568014438ull, 10478307099979909178ull, 4166564765001251439ull}}, {{15611332434265477397ull, 9805185826907396927ull, 13466470965128525092ull, 2604102978125782149ull}}, {{14902479524404458842ull, 12256482283634246159ull, 2998030651128492653ull, 3255128722657227687ull}}, {{14016413387078185649ull, 1485544799260643987ull, 17582596369192779529ull, 4068910903321534608ull}}, {{6454415357710172079ull, 12457680545606372252ull, 10989122730745487205ull, 2543069314575959130ull}}, {{8068019197137715098ull, 1737042626725801603ull, 4513031376577083199ull, 3178836643219948913ull}}, {{5473337977994755969ull, 16006361338689415716ull, 10252975239148741902ull, 3973545804024936141ull}}, {{12644208273101498289ull, 5392289818253496918ull, 8713952533681657641ull, 2483466127515585088ull}}, {{6581888304522097053ull, 11352048291244259052ull, 10892440667102072051ull, 3104332659394481360ull}}, {{8227360380652621316ull, 9578374345627935911ull, 13615550833877590064ull, 3880415824243101700ull}}, {{12059629265548970179ull, 5986483966017459944ull, 17733091308028269598ull, 2425259890151938562ull}}, {{15074536581936212723ull, 16706476994376600738ull, 12942992098180561189ull, 3031574862689923203ull}}, {{9619798690565490096ull, 7048038187688587211ull, 11567054104298313583ull, 3789468578362404004ull}}, {{3706531172389737358ull, 11322552894946448863ull, 16452780852041221797ull, 2368417861476502502ull}}, {{21477947059783793ull, 318133063400897367ull, 11342604028196751439ull, 2960522326845628128ull}}, {{13861905489106893454ull, 14232724384533285420ull, 14178255035245939298ull, 3700652908557035160ull}}, {{17887062967546584217ull, 13507138758760691291ull, 8861409397028712061ull, 2312908067848146975ull}}, {{17747142691005842367ull, 3048865393168700402ull, 6465075727858502173ull, 2891135084810183719ull}}, {{12960556326902527150ull, 8422767759888263407ull, 3469658641395739812ull, 3613918856012729649ull}}, {{11589009390200771034ull, 10528459699860329259ull, 8948759320172062669ull, 4517398570015912061ull}}, {{4937287859661787944ull, 8886130321626399739ull, 7898817584321233120ull, 2823374106259945038ull}}, {{1559923806149847026ull, 11107662902032999674ull, 650149943546765592ull, 3529217632824931298ull}}, {{11173276794542084591ull, 13884578627541249592ull, 10036059466288232798ull, 4411522041031164122ull}}, {{6983297996588802869ull, 4066175623785893091ull, 10884223184857533403ull, 2757201275644477576ull}}, {{4117436477308615683ull, 471033511304978460ull, 13605278981071916754ull, 3446501594555596970ull}}, {{5146795596635769603ull, 9812163925985998883ull, 7783226689485120134ull, 4308126993194496213ull}}, {{910904238683662050ull, 1520916435313861398ull, 7170359690141894036ull, 2692579370746560133ull}}, {{10362002335209353370ull, 1901145544142326747ull, 13574635631104755449ull, 3365724213433200166ull}}, {{8340816900584303809ull, 6988117948605296338ull, 7744922502026168503ull, 4207155266791500208ull}}, {{9824696581292577785ull, 11285102745519392067ull, 4840576563766355314ull, 2629472041744687630ull}}, {{7669184708188334327ull, 4883006395044464276ull, 15274092741562719951ull, 3286840052180859537ull}}, {{9586480885235417908ull, 1492071975378192441ull, 5257557871671236227ull, 4108550065226074422ull}}, {{17520765599340605953ull, 17073446049107227939ull, 17121031725076686353ull, 2567843790766296513ull}}, {{17289270980748369537ull, 7506749506101871212ull, 7566231601063694230ull, 3209804738457870642ull}}, {{3164844652225910305ull, 160064845772563208ull, 234417464474841980ull, 4012255923072338303ull}}, {{1978027907641193941ull, 9323412565462627813ull, 7064039942937858093ull, 2507659951920211439ull}}, {{7084220902978880330ull, 16265951725255672670ull, 4218363910244934712ull, 3134574939900264299ull}}, {{18078648165578376220ull, 1885695582860039221ull, 661268869378780487ull, 3918218674875330374ull}}, {{13604998112700179090ull, 8096088766928606369ull, 14248351098643901516ull, 2448886671797081483ull}}, {{3171189585593060150ull, 10120110958660757962ull, 13198752854877488991ull, 3061108339746351854ull}}, {{13187359018846100996ull, 8038452679898559548ull, 7275069031742085431ull, 3826385424682939818ull}}, {{17465471423633588931ull, 11941561952577681573ull, 9158604163266191298ull, 2391490890426837386ull}}, {{7996781224259822451ull, 5703580403867326159ull, 2224883167227963315ull, 2989363613033546733ull}}, {{5384290511897390160ull, 2517789486406769795ull, 7392789977462342048ull, 3736704516291933416ull}}, {{1059338560722174898ull, 1573618429004231122ull, 4620493735913963780ull, 2335440322682458385ull}}, {{10547545237757494430ull, 1967023036255288902ull, 10387303188319842629ull, 2919300403353072981ull}}, {{3961059510342092230ull, 7070464813746499032ull, 17595815003827191190ull, 3649125504191341226ull}}, {{4951324387927615287ull, 18061453054037899598ull, 12771396717929213179ull, 4561406880239176533ull}}, {{16929635797736923267ull, 8982565149559993296ull, 10287965957919452189ull, 2850879300149485333ull}}, {{2715300673461602467ull, 15839892455377379525ull, 17471643465826703140ull, 3563599125186856666ull}}, {{8005811860254390988ull, 1353121495512172790ull, 12616182295428603118ull, 4454498906483570833ull}}, {{391946394231606464ull, 14680758989977271706ull, 967584907001795092ull, 2784061816552231771ull}}, {{9713305029644283887ull, 18350948737471589632ull, 15044539189034407577ull, 3480077270690289713ull}}, {{12141631287055354859ull, 9103627866557323328ull, 4970615931010845760ull, 4350096588362862142ull}}, {{7588519554409596787ull, 5689767416598327080ull, 16941693012163942312ull, 2718810367726788838ull}}, {{9485649443011995984ull, 7112209270747908850ull, 11953744228350152082ull, 3398512959658486048ull}}, {{2633689766910219172ull, 18113633625289661871ull, 14942180285437690102ull, 4248141199573107560ull}}, {{8563585131959968839ull, 6709334997378650765ull, 9338862678398556314ull, 2655088249733192225ull}}, {{15316167433377348952ull, 17610040783578089264ull, 16285264366425583296ull, 3318860312166490281ull}}, {{698465218012134574ull, 3565806905763059965ull, 6521522402749815409ull, 4148575390208112852ull}}, {{2742383770471278061ull, 13757844362170382238ull, 13299323538573410438ull, 2592859618880070532ull}}, {{12651351749943873384ull, 7973933415858201989ull, 16624154423216763048ull, 3241074523600088165ull}}, {{1979131632147678018ull, 9967416769822752487ull, 6945134973738790098ull, 4051343154500110207ull}}, {{8154486297733380617ull, 10841321499566608208ull, 11258238386227825667ull, 2532089471562568879ull}}, {{10193107872166725772ull, 8939965856030872356ull, 9461111964357394180ull, 3165111839453211099ull}}, {{12741384840208407214ull, 11174957320038590445ull, 7214703937019354821ull, 3956389799316513874ull}}, {{10269208534343948461ull, 9290191334237812980ull, 9120875979064484667ull, 2472743624572821171ull}}, {{12836510667929935576ull, 7001053149369878321ull, 6789408955403217930ull, 3090929530716026464ull}}, {{2210580279630255758ull, 17974688473567123710ull, 8486761194254022412ull, 3863661913395033080ull}}, {{15216670730051073561ull, 2010808259124676510ull, 5304225746408764008ull, 2414788695871895675ull}}, {{9797466375709066143ull, 2513510323905845638ull, 2018596164583567106ull, 3018485869839869594ull}}, {{3023460932781556871ull, 12365259941737082856ull, 11746617242584234690ull, 3773107337299836992ull}}, {{1889663082988473044ull, 12339973482013064689ull, 7341635776615146681ull, 2358192085812398120ull}}, {{6973764872162979209ull, 1589908797234167149ull, 9177044720768933352ull, 2947740107265497650ull}}, {{13328892108631111916ull, 1987385996542708936ull, 2247933864106390882ull, 3684675134081872063ull}}, {{16661115135788889895ull, 11707604532533161978ull, 16644975385415152314ull, 4605843917602340078ull}}, {{15024882978295444088ull, 11928938851260614140ull, 5791423597457082292ull, 2878652448501462549ull}}, {{334359649159753494ull, 14911173564075767676ull, 11850965515248740769ull, 3598315560626828186ull}}, {{417949561449691868ull, 4803908899812545883ull, 5590334857206150154ull, 4497894450783535233ull}}, {{16402119540401915081ull, 7614129080810229080ull, 15023174331822313606ull, 2811184031739709520ull}}, {{2055905351792842236ull, 294289314158010543ull, 332223841068340392ull, 3513980039674636901ull}}, {{16404939745023216507ull, 367861642697513178ull, 5026965819762813394ull, 4392475049593296126ull}}, {{14864773359066898221ull, 4841599545113333640ull, 16976911692633922083ull, 2745296905995810078ull}}, {{134222625124071160ull, 1440313412964279147ull, 11997767578937626796ull, 3431621132494762598ull}}, {{14002836336687252662ull, 1800391766205348933ull, 5773837436817257687ull, 4289526415618453248ull}}, {{11057615719643226866ull, 8042773881519424939ull, 3608648398010786054ull, 2680954009761533280ull}}, {{9210333631126645678ull, 830095315044505366ull, 4510810497513482568ull, 3351192512201916600ull}}, {{2289545002053531289ull, 1037619143805631708ull, 5638513121891853210ull, 4188990640252395750ull}}, {{10654337663138232864ull, 5260197983305907721ull, 17359128756464571968ull, 2618119150157747343ull}}, {{17929608097350178984ull, 6575247479132384651ull, 17087224927153327056ull, 3272648937697184179ull}}, {{17800324103260335826ull, 8219059348915480814ull, 16747345140514270916ull, 4090811172121480224ull}}, {{6513516546110321987ull, 14360284129926951317ull, 10467090712821419322ull, 2556756982575925140ull}}, {{12753581701065290388ull, 8726983125553913338ull, 13083863391026774153ull, 3195946228219906425ull}}, {{6718605089476837177ull, 15520414925369779577ull, 2519771183501303979ull, 3994932785274883032ull}}, {{15728343226991492996ull, 7394416319142418283ull, 1574856989688314987ull, 2496832990796801895ull}}, {{15048743015311978341ull, 4631334380500634950ull, 15803629292392557446ull, 3121041238496002368ull}}, {{9587556732285197118ull, 15012540012480569496ull, 1307792541781145191ull, 3901301548120002961ull}}, {{5992222957678248199ull, 16300366535441437791ull, 12346585384681685504ull, 2438313467575001850ull}}, {{2878592678670422344ull, 1928714095592245623ull, 6209859693997331073ull, 3047891834468752313ull}}, {{17433298903620191642ull, 7022578637917694932ull, 12374010635924051745ull, 3809864793085940391ull}}, {{1672439777907843969ull, 15918326694767029093ull, 14651285675093614196ull, 2381165495678712744ull}}, {{6702235740812192865ull, 1451164294749234750ull, 18314107093867017746ull, 2976456869598390930ull}}, {{17601166712870016889ull, 11037327405291319245ull, 13669261830478996374ull, 3720571086997988663ull}}, {{13306572204757454508ull, 2286643609879686624ull, 15460817671690454590ull, 2325356929373742914ull}}, {{16633215255946818134ull, 12081676549204384088ull, 10102650052758292429ull, 2906696161717178643ull}}, {{2344774996223971052ull, 1267037631223316399ull, 8016626547520477633ull, 3633370202146473304ull}}, {{16766026800562127527ull, 6195483057456533402ull, 10020783184400597041ull, 4541712752683091630ull}}, {{15090452768778717608ull, 15401391956978803136ull, 1651303471822985246ull, 2838570470426932269ull}}, {{416321887263845394ull, 10028367909368728113ull, 6675815358206119462ull, 3548213088033665336ull}}, {{5132088377507194647ull, 3312087849856134333ull, 8344769197757649328ull, 4435266360042081670ull}}, {{5513398245155690606ull, 2070054906160083958ull, 603794730171142926ull, 2772041475026301044ull}}, {{16115119843299389066ull, 11810940669554880755ull, 754743412713928657ull, 3465051843782876305ull}}, {{15532213785696848428ull, 928617781661437232ull, 5555115284319798726ull, 4331314804728595381ull}}, {{9707633616060530268ull, 14415444168820561982ull, 5777790061913568155ull, 2707071752955372113ull}}, {{2911169983220887027ull, 13407619192598314574ull, 11833923595819348098ull, 3383839691194215141ull}}, {{12862334515880884591ull, 7536151953893117409ull, 957346439492021411ull, 4229799613992768927ull}}, {{1121430044784471014ull, 2404251961969504429ull, 7515870552323595238ull, 2643624758745480579ull}}, {{6013473574407976671ull, 12228686989316656344ull, 4783152171977106143ull, 3304530948431850724ull}}, {{7516841968009970839ull, 10674172718218432526ull, 5978940214971382679ull, 4130663685539813405ull}}, {{86340211578843870ull, 13588886976527602185ull, 6042680643570808126ull, 2581664803462383378ull}}, {{4719611282900942742ull, 7762736683804726923ull, 16776722841318285966ull, 3227081004327979222ull}}, {{1287828085198790523ull, 480048817901132846ull, 11747531514793081650ull, 4033851255409974028ull}}, {{14639950608531407789ull, 4911716529615595932ull, 16565579233600451839ull, 2521157034631233767ull}}, {{18299938260664259736ull, 1527959643592107011ull, 16095288023573176895ull, 3151446293289042209ull}}, {{18263236807402936766ull, 15745007609772297476ull, 6284051974184307406ull, 3939307866611302762ull}}, {{2191150967772059671ull, 5228943737680298019ull, 8539218502292580033ull, 2462067416632064226ull}}, {{16573996764997238301ull, 11147865690527760427ull, 1450651091010949233ull, 3077584270790080283ull}}, {{16105809937819159972ull, 99774057877536822ull, 15648371919045850254ull, 3846980338487600353ull}}, {{5454445192709587079ull, 13897416841455624226ull, 2862703421762574552ull, 2404362711554750221ull}}, {{16041428527741759656ull, 17371771051819530282ull, 8190065295630606094ull, 3005453389443437776ull}}, {{10828413622822423762ull, 12491341777919637045ull, 10237581619538257618ull, 3756816736804297220ull}}, {{9073601523477708803ull, 12418774629627161057ull, 15621860549066186819ull, 2348010460502685762ull}}, {{15953687922774523908ull, 10911782268606563417ull, 10303953649477957716ull, 2935013075628357203ull}}, {{6107051848185991173ull, 13639727835758204272ull, 8268256043420059241ull, 3668766344535446504ull}}, {{7633814810232488966ull, 3214601739415591628ull, 10335320054275074052ull, 4585957930669308130ull}}, {{13994506293250081412ull, 11232498123989520575ull, 11071261052349309186ull, 2866223706668317581ull}}, {{12881446848135213861ull, 4817250618132124911ull, 4018260154472771ull, 3582779633335396977ull}}, {{11490122541741629422ull, 1409877254237768235ull, 4616708843620478868ull, 4478474541669246221ull}}, {{4875483579374824437ull, 10104545320753380955ull, 5191286036476493244ull, 2799046588543278888ull}}, {{1482668455791142642ull, 12630681650941726194ull, 6489107545595616555ull, 3498808235679098610ull}}, {{11076707606593704110ull, 11176666045249769838ull, 17334756468849296502ull, 4373510294598873262ull}}, {{2311256235693677165ull, 2373730259853718245ull, 6222536774603422410ull, 2733443934124295789ull}}, {{7500756313044484360ull, 12190534861671923614ull, 12389856986681665916ull, 3416804917655369736ull}}, {{152573354450829642ull, 15238168577089904518ull, 15487321233352082395ull, 4271006147069212170ull}}, {{13930416401813932239ull, 7218012351467496371ull, 14291261789272439401ull, 2669378841918257606ull}}, {{12801334483840027394ull, 13634201457761758368ull, 8640705199735773443ull, 3336723552397822008ull}}, {{16001668104800034243ull, 12431065803774810056ull, 10800881499669716804ull, 4170904440497277510ull}}, {{10001042565500021402ull, 16992788164214032093ull, 2138864918866185098ull, 2606815275310798444ull}}, {{17112989225302414656ull, 12017613168412764308ull, 2673581148582731373ull, 3258519094138498055ull}}, {{2944492457918466704ull, 1186958405233791674ull, 17177034491010577929ull, 4073148867673122568ull}}, {{6451993804626429594ull, 12271064049339589556ull, 10735646556881611205ull, 2545718042295701605ull}}, {{8064992255783036993ull, 1503772006392323233ull, 18031244214529401911ull, 3182147552869627006ull}}, {{14692926338156184145ull, 15714773063272567753ull, 13315683231306976580ull, 3977684441087033758ull}}, {{2265549933706533235ull, 598361127690579038ull, 3710616001139472459ull, 2486052775679396099ull}}, {{12055309453987942351ull, 14583009464895387509ull, 26583982996952669ull, 3107565969599245124ull}}, {{1234078762202764227ull, 4393703775837070675ull, 33229978746190837ull, 3884457461999056405ull}}, {{16912200290872585306ull, 5051907869111863123ull, 2326611745930063225ull, 2427785913749410253ull}}, {{16528564345163343728ull, 10926570854817216808ull, 7519950700839966935ull, 3034732392186762816ull}}, {{2213961357744628044ull, 9046527550094133107ull, 9399938376049958669ull, 3793415490233453520ull}}, {{17524626913086250192ull, 7959922728022527143ull, 5874961485031224168ull, 2370884681395908450ull}}, {{17294097622930424836ull, 9949903410028158929ull, 16567073893143806018ull, 2963605851744885562ull}}, {{7782563973380867332ull, 3214007225680422854ull, 11485470329574981715ull, 3704507314681106953ull}}, {{252416464935654179ull, 18149655580546121948ull, 260889928343281715ull, 2315317071675691846ull}}, {{315520581169567724ull, 18075383457255264531ull, 9549484447283877952ull, 2894146339594614807ull}}, {{14229458781744123366ull, 4147485247859529047ull, 7325169540677459537ull, 3617682924493268509ull}}, {{13175137458752766304ull, 9796042578251799213ull, 13768147944274212325ull, 4522103655616585636ull}}, {{10540303920934172892ull, 8428369620621068460ull, 17828464502026158511ull, 2826314784760366022ull}}, {{13175379901167716115ull, 5923776007348947671ull, 13062208590677922331ull, 3532893480950457528ull}}, {{11857538858032257240ull, 2793033990758796685ull, 16327760738347402914ull, 4416116851188071910ull}}, {{9716804795483854727ull, 6357332262651635832ull, 5593164443039738917ull, 2760073031992544944ull}}, {{12146005994354818409ull, 12558351346741932694ull, 6991455553799673646ull, 3450091289990681180ull}}, {{5959135456088747203ull, 6474567146572640060ull, 8739319442249592058ull, 4312614112488351475ull}}, {{12947831696910242810ull, 8658290485035287941ull, 3156231642192301084ull, 2695383820305219672ull}}, {{2349731565855639800ull, 10822863106294109927ull, 3945289552740376355ull, 3369229775381524590ull}}, {{16772222512601713462ull, 8916892864440249504ull, 14154983977780246252ull, 4211537219226905737ull}}, {{10482639070376070914ull, 14796430077129931748ull, 1929335958471572051ull, 2632210762016816086ull}}, {{13103298837970088642ull, 13883851577985026781ull, 11635041984944240872ull, 3290263452521020107ull}}, {{2544065492180447091ull, 17354814472481283477ull, 9932116462752913186ull, 4112829315651275134ull}}, {{3895883941826473384ull, 15458445063728190077ull, 1595886770793182837ull, 2570518322282046959ull}}, {{9481540945710479634ull, 5487998274378073884ull, 15829916518773642259ull, 3213147902852558698ull}}, {{11851926182138099542ull, 2248311824545204451ull, 10564023611612277016ull, 4016434878565698373ull}}, {{5101610854622618262ull, 1405194890340752782ull, 8908357766471367087ull, 2510271799103561483ull}}, {{15600385605133048635ull, 15591551668208104689ull, 6523761189661820954ull, 3137839748879451854ull}}, {{5665423951134147082ull, 10266067548405355054ull, 17378073523932052001ull, 3922299686099314817ull}}, {{17375948024741005638ull, 17945507263821816668ull, 3943766924816450644ull, 2451437303812071761ull}}, {{3273190957216705432ull, 3985140006067719220ull, 9541394674447951210ull, 3064296629765089701ull}}, {{4091488696520881790ull, 14204797044439424833ull, 16538429361487326916ull, 3830370787206362126ull}}, {{14086395481394020879ull, 18101370189629416328ull, 5724832332502191418ull, 2393981742003976329ull}}, {{17607994351742526098ull, 13403340700181994602ull, 11767726434055127177ull, 2992477177504970411ull}}, {{12786620902823381815ull, 2919117819945329541ull, 10097972024141521068ull, 3740596471881213014ull}}, {{10297481073478307587ull, 11047820674320606771ull, 1699546496661062763ull, 2337872794925758134ull}}, {{8260165323420496579ull, 9198089824473370560ull, 11347805157681104262ull, 2922340993657197667ull}}, {{10325206654275620724ull, 2274240243736937392ull, 9573070428673992424ull, 3652926242071497084ull}}, {{12906508317844525904ull, 2842800304671171740ull, 11966338035842490530ull, 4566157802589371355ull}}, {{17289939735507604498ull, 6388436208846870241ull, 5173118263187862629ull, 2853848626618357097ull}}, {{7777366614102341911ull, 12597231279485975706ull, 11078083847412216190ull, 3567310783272946371ull}}, {{498336230773151581ull, 6523167062502693825ull, 9235918790837882334ull, 4459138479091182964ull}}, {{11840675190301689498ull, 17912037469346347352ull, 14995821281128452266ull, 2786961549431989352ull}}, {{14800843987877111872ull, 13166674799828158382ull, 298032527701013717ull, 3483701936789986691ull}}, {{9277682947991614032ull, 2623285444503034266ull, 14207598714908430859ull, 4354627420987483363ull}}, {{10410237860922146674ull, 17780454467310254080ull, 6573906187604075334ull, 2721642138117177102ull}}, {{13012797326152683343ull, 13002196047283041792ull, 17440754771359869976ull, 3402052672646471377ull}}, {{16265996657690854179ull, 16252745059103802240ull, 7965885408917673758ull, 4252565840808089222ull}}, {{10166247911056783862ull, 5546279643512488496ull, 366992362146158195ull, 2657853650505055764ull}}, {{12707809888820979827ull, 2321163535963222716ull, 458740452682697744ull, 3322317063131319705ull}}, {{15884762361026224784ull, 2901454419954028395ull, 5185111584280760084ull, 4152896328914149631ull}}, {{7622133466427696538ull, 11036781049326043555ull, 10158223767816556908ull, 2595560205571343519ull}}, {{4915980814607232768ull, 13795976311657554444ull, 8086093691343308231ull, 3244450256964179399ull}}, {{6144976018259040960ull, 12633284371144555151ull, 5495931095751747385ull, 4055562821205224249ull}}, {{10758139039052982456ull, 978273704324265113ull, 14964171980913311876ull, 2534726763253265155ull}}, {{18059359817243615974ull, 1222842130405331391ull, 14093528957714251941ull, 3168408454066581444ull}}, {{17962513753127132064ull, 6140238681434052143ull, 17616911197142814926ull, 3960510567583226805ull}}, {{18144100123345539396ull, 17672707231178446301ull, 13316412507427953280ull, 2475319104739516753ull}}, {{8845067098899760533ull, 3644139965263506261ull, 2810457579002777889ull, 3094148880924395942ull}}, {{15668019892052088570ull, 9166860975006770730ull, 12736444010608248169ull, 3867686101155494927ull}}, {{14404198450959943261ull, 17258503155447701466ull, 14877806534271236961ull, 2417303813222184329ull}}, {{8781876026845153268ull, 7738070889027463121ull, 4762200112556882490ull, 3021629766527730412ull}}, {{15589031051983829488ull, 449216574429553093ull, 5952750140696103113ull, 3777037208159663015ull}}, {{12048987416703587382ull, 11809975405086940443ull, 10637997865576146301ull, 2360648255099789384ull}}, {{10449548252452096324ull, 927411201076511842ull, 13297497331970182877ull, 2950810318874736730ull}}, {{3838563278710344597ull, 5770950019773027707ull, 7398499628107952788ull, 3688512898593420913ull}}, {{186518079960542842ull, 7213687524716284634ull, 13859810553562328889ull, 4610641123241776141ull}}, {{4728259818402727180ull, 16037769749016147656ull, 10968224605190149507ull, 2881650702026110088ull}}, {{5910324773003408975ull, 15435526167842796666ull, 13710280756487686884ull, 3602063377532637610ull}}, {{16611278003109037027ull, 847663636093944216ull, 7914478908754832798ull, 4502579221915797013ull}}, {{10382048751943148142ull, 14364847827840878847ull, 7252392327185464450ull, 2814112013697373133ull}}, {{8365874921501547273ull, 8732687747946322751ull, 13677176427409218467ull, 3517640017121716416ull}}, {{5845657633449546188ull, 6304173666505515535ull, 17096470534261523084ull, 4397050021402145520ull}}, {{10571065048547048223ull, 13163480578420723017ull, 10685294083913451927ull, 2748156263376340950ull}}, {{17825517329111198183ull, 11842664704598515867ull, 4133245568037039101ull, 3435195329220426188ull}}, {{17670210642961609825ull, 968272825465981122ull, 5166556960046298877ull, 4293994161525532735ull}}, {{15655567670278394045ull, 2911013525129932153ull, 10146627127670018654ull, 2683746350953457959ull}}, {{5734401532565828844ull, 12862138943267191000ull, 8071597891160135413ull, 3354682938691822449ull}}, {{7168001915707286055ull, 2242615623801825038ull, 14701183382377557171ull, 4193353673364778061ull}}, {{18315059252599217496ull, 17542535829371998312ull, 11494082623199667183ull, 2620846045852986288ull}}, {{4447079992039470254ull, 17316483768287609987ull, 14367603278999583979ull, 3276057557316232860ull}}, {{947163971621949914ull, 17033918691932124580ull, 17959504098749479974ull, 4095071946645291075ull}}, {{9815349519118494504ull, 6034513164030189958ull, 8918847052504731032ull, 2559419966653306922ull}}, {{3045814862043342322ull, 7543141455037737448ull, 1925186778776137982ull, 3199274958316633653ull}}, {{3807268577554177903ull, 205554781942396002ull, 7018169491897560382ull, 3999093697895792066ull}}, {{6991228879398749093ull, 13963529793996161213ull, 8998041950863363142ull, 2499433561184870041ull}}, {{13350722117675824270ull, 8231040205640425708ull, 15859238457006591832ull, 3124291951481087551ull}}, {{16688402647094780338ull, 10288800257050532135ull, 15212362052830851886ull, 3905364939351359439ull}}, {{17347780682075319567ull, 1818814142229194680ull, 16425255310660364285ull, 2440853087094599649ull}}, {{3237981778884597843ull, 6885203696213881255ull, 6696511083043291644ull, 3051066358868249562ull}}, {{17882535278887911016ull, 8606504620267351568ull, 17594010890658890363ull, 3813832948585311952ull}}, {{11176584549304944385ull, 3073222378453400778ull, 10996256806661806477ull, 2383645592865819970ull}}, {{4747358649776404673ull, 8453213991494138877ull, 4521948971472482288ull, 2979556991082274963ull}}, {{10545884330647893745ull, 10566517489367673596ull, 1040750195913214956ull, 3724446238852843704ull}}, {{15814549743509709399ull, 15827445467709571805ull, 650468872445759347ull, 2327778899283027315ull}}, {{5933129124104973037ull, 15172620816209576853ull, 14648144145839362896ull, 2909723624103784143ull}}, {{12028097423558604200ull, 519031946552419450ull, 13698494163871815717ull, 3637154530129730179ull}}, {{5811749742593479442ull, 5260475951617912217ull, 12511431686412381742ull, 4546443162662162724ull}}, {{15161558635189394411ull, 17122855525043358847ull, 17043016840862514396ull, 2841526976663851702ull}}, {{14340262275559355110ull, 2956825332594646943ull, 12080399014223367188ull, 3551908720829814628ull}}, {{13313641826021805983ull, 3696031665743308679ull, 15100498767779208985ull, 4439885901037268285ull}}, {{15238555168904710596ull, 13839234837158037684ull, 11743654739075699567ull, 2774928688148292678ull}}, {{601449887421336628ull, 12687357528020159202ull, 5456196386989848651ull, 3468660860185365848ull}}, {{9975184396131446593ull, 11247510891597811098ull, 6820245483737310814ull, 4335826075231707310ull}}, {{10846176266009542025ull, 2418008288821244032ull, 18097711482617982971ull, 2709891297019817068ull}}, {{13557720332511927531ull, 16857568416308718752ull, 4175395279562927097ull, 3387364121274771336ull}}, {{16947150415639909414ull, 7236902465103734728ull, 5219244099453658872ull, 4234205151593464170ull}}, {{10591969009774943384ull, 4523064040689834205ull, 7873713580585924699ull, 2646378219745915106ull}}, {{17851647280646067134ull, 1042144032434904852ull, 618769938877630066ull, 3307972774682393883ull}}, {{3867815027098032301ull, 10526052077398406874ull, 14608520478879201294ull, 4134965968352992353ull}}, {{7029070410363658092ull, 1967096529946616392ull, 2212796271658418953ull, 2584353730220620221ull}}, {{8786338012954572615ull, 7070556680860658394ull, 7377681358000411595ull, 3230442162775775276ull}}, {{1759550479338439961ull, 4226509832648435089ull, 9222101697500514494ull, 4038052703469719095ull}}, {{12628934095654994736ull, 16476626700687435642ull, 12681342588578903414ull, 2523782939668574434ull}}, {{6562795582713967612ull, 11372411339004518745ull, 6628306198868853460ull, 3154728674585718043ull}}, {{12815180496819847418ull, 14215514173755648431ull, 3673696730158678921ull, 3943410843232147554ull}}, {{14927016838153486493ull, 1967167330956198413ull, 6907746474776562230ull, 2464631777020092221ull}}, {{4823712992409694404ull, 11682331200550023825ull, 13246369111898090691ull, 3080789721275115276ull}}, {{10641327258939505909ull, 9991227982260141877ull, 16557961389872613364ull, 3850987151593894095ull}}, {{8956672546050885145ull, 15467889525767364481ull, 17266254896311465208ull, 2406866969746183809ull}}, {{15807526700990994335ull, 888117833499653985ull, 7747760565107167799ull, 3008583712182729762ull}}, {{5924350320956579207ull, 14945205347156731194ull, 461328669529183940ull, 3760729640228412203ull}}, {{8314404969025249908ull, 117381305118181188ull, 16429231482951597627ull, 2350456025142757626ull}}, {{10393006211281562385ull, 13981784686679890197ull, 11313167316834721225ull, 2938070031428447033ull}}, {{17602943782529340886ull, 3642172803067699034ull, 306401090761237820ull, 3672587539285558792ull}}, {{12780307691306900299ull, 4552716003834623793ull, 383001363451547275ull, 4590734424106948490ull}}, {{1070163279425730831ull, 539604493182945919ull, 4851061870584604951ull, 2869209015066842806ull}}, {{15172762154564327251ull, 14509563671760846110ull, 15287199375085531996ull, 3586511268833553507ull}}, {{9742580656350633255ull, 18136954589701057638ull, 14497313200429527091ull, 4483139086041941884ull}}, {{1477426891791757881ull, 9029753609349467072ull, 18284192787123230240ull, 2801961928776213677ull}}, {{1846783614739697351ull, 11287192011686833840ull, 9020182928621874088ull, 3502452410970267097ull}}, {{2308479518424621688ull, 14108990014608542300ull, 15886914679204730514ull, 4378065513712833871ull}}, {{10666171735870164363ull, 13429804777557726841ull, 16846850702144038427ull, 2736290946070521169ull}}, {{17944400688265093358ull, 12175569953519770647ull, 7223505322397884322ull, 3420363682588151462ull}}, {{17818814841903978794ull, 5996090405044937501ull, 18252753689852131211ull, 4275454603235189327ull}}, {{13442602285403680698ull, 1441713493939391986ull, 18325500083798663863ull, 2672159127021993329ull}}, {{7579880819899825065ull, 15637199922706403695ull, 9071817049466166116ull, 3340198908777491662ull}}, {{4863165006447393427ull, 1099755829673453003ull, 2116399274977931838ull, 4175248635971864578ull}}, {{733635119815926940ull, 14522405448828071839ull, 5934435565288595302ull, 2609530397482415361ull}}, {{14752101955052072387ull, 8929634774180313990ull, 12029730475038132032ull, 3261912996853019201ull}}, {{9216755406960314675ull, 11162043467725392488ull, 1202105038515501328ull, 4077391246066274002ull}}, {{5760472129350196672ull, 6976277167328370305ull, 5363001667499576234ull, 2548369528791421251ull}}, {{11812276180115133744ull, 17943718496015238689ull, 2092066065947082388ull, 3185461910989276564ull}}, {{930287169861753468ull, 3982904046309496746ull, 2615082582433852986ull, 3981827388736595705ull}}, {{5193115499590983822ull, 7101001047370823370ull, 13163641660089627876ull, 2488642117960372315ull}}, {{15714766411343505585ull, 8876251309213529212ull, 11842866056684646941ull, 3110802647450465394ull}}, {{1196713940469830365ull, 15707000154944299420ull, 5580210534001032868ull, 3888503309313081743ull}}, {{9971318249648419786ull, 593503059985411329ull, 10405160611391727399ull, 2430314568320676089ull}}, {{17075833830487912637ull, 14576936880263927873ull, 17618136782667047152ull, 3037893210400845111ull}}, {{7509734232827727084ull, 18221171100329909842ull, 17410984959906421036ull, 3797366513001056389ull}}, {{9305269913944717332ull, 2164859900851417843ull, 13187708609155207100ull, 2373354070625660243ull}}, {{7019901374003508760ull, 2706074876064272304ull, 11872949743016620971ull, 2966692588282075304ull}}, {{8774876717504385950ull, 17217651650362504092ull, 14841187178770776213ull, 3708365735352594130ull}}, {{14707669985295017027ull, 13066875290690259009ull, 13887428005159123037ull, 2317728584595371331ull}}, {{4549529426336607572ull, 2498536058080660050ull, 12747598988021515893ull, 2897160730744214164ull}}, {{14910283819775535273ull, 7734856091028212966ull, 15934498735026894866ull, 3621450913430267705ull}}, {{9414482737864643283ull, 445198076930490400ull, 6083065363501454871ull, 4526813641787834632ull}}, {{5884051711165402052ull, 7195777825722638356ull, 3801915852188409294ull, 2829258526117396645ull}}, {{7355064638956752565ull, 18218094319008073753ull, 9364080833662899521ull, 3536573157646745806ull}}, {{13805516817123328610ull, 8937559843477928479ull, 2481729005223848594ull, 4420716447058432258ull}}, {{15545977038343162237ull, 10197660920601093203ull, 6162766646692293275ull, 2762947779411520161ull}}, {{14820785279501564893ull, 8135390132323978600ull, 12315144326792754498ull, 3453684724264400201ull}}, {{79237525667404500ull, 945865628550197443ull, 1558872353208779411ull, 4317105905330500252ull}}, {{16190424518037985476ull, 16732067082339731065ull, 10197667257610262939ull, 2698191190831562657ull}}, {{6402972592265318133ull, 16303397834497275928ull, 17358770090440216578ull, 3372738988539453321ull}}, {{8003715740331647667ull, 11155875256266819102ull, 7863404557768107011ull, 4215923735674316652ull}}, {{390636319279891888ull, 4666579025953067987ull, 14137999885459842690ull, 2634952334796447907ull}}, {{14323353454382028572ull, 15056595819296110791ull, 13060813838397415458ull, 3293690418495559884ull}}, {{13292505799550147810ull, 9597372737265362681ull, 16326017297996769323ull, 4117113023119449855ull}}, {{1390287097077760526ull, 3692514951577157724ull, 17121289838889062683ull, 2573195639449656159ull}}, {{1737858871347200657ull, 3957671044059251ull, 16789926280183940450ull, 3216494549312070199ull}}, {{16007381644466164533ull, 9228319125659849871ull, 16375721831802537658ull, 4020618186640087749ull}}, {{16922142555432434689ull, 10379385471964794073ull, 12540669154090279988ull, 2512886366650054843ull}}, {{7317620139008379650ull, 12974231839955992592ull, 11064150424185462081ull, 3141107958312568554ull}}, {{9147025173760474562ull, 2382731744662827028ull, 4606815993377051794ull, 3926384947890710693ull}}, {{14940262770455072409ull, 6100893358841654796ull, 5185103005074351323ull, 2453990592431694183ull}}, {{228584389359288896ull, 3014430680124680592ull, 1869692737915551250ull, 3067488240539617729ull}}, {{285730486699111119ull, 12991410387010626548ull, 6948801940821826966ull, 3834360300674522161ull}}, {{9401953591041720258ull, 3507945473454253688ull, 15872216259082111614ull, 2396475187921576350ull}}, {{11752441988802150322ull, 13608303878672592918ull, 10616898286997863709ull, 2995593984901970438ull}}, {{5467180449147912095ull, 3175321793058577436ull, 4047750821892553829ull, 3744492481127463048ull}}, {{12640359817572220867ull, 4290419129875304849ull, 2529844263682846143ull, 2340307800704664405ull}}, {{1965391716683112372ull, 751337893916743158ull, 7773991348030945583ull, 2925384750880830506ull}}, {{11680111682708666273ull, 14774230422678092659ull, 494117148183906170ull, 3656730938601038133ull}}, {{9988453584958444937ull, 9244415991492840016ull, 5229332453657270617ull, 4570913673251297666ull}}, {{6242783490599028086ull, 17306975040751494770ull, 7880018801963182039ull, 2856821045782061041ull}}, {{17026851400103560915ull, 17022032782511980558ull, 14461709520881365453ull, 3571026307227576301ull}}, {{12060192213274675336ull, 7442482922857811986ull, 4242078845819543105ull, 4463782884034470377ull}}, {{12149306151724059989ull, 16180766872854602251ull, 14180514324705684200ull, 2789864302521543985ull}}, {{10574946671227687082ull, 1779214517358701198ull, 3890584850599941539ull, 3487330378151929982ull}}, {{3995311302179833045ull, 16059076201980540210ull, 14086603100104702731ull, 4359162972689912477ull}}, {{7108755582289783557ull, 7731079617024143679ull, 11109969946779133159ull, 2724476857931195298ull}}, {{4274258459434841542ull, 5052163502852791695ull, 4664090396619140641ull, 3405596072413994123ull}}, {{731137055866164024ull, 10926890396993377523ull, 1218426977346537897ull, 4256995090517492654ull}}, {{16597861724412210179ull, 18358521544189330711ull, 14596574916123749897ull, 2660621931573432908ull}}, {{16135641137087874820ull, 9113093874954499677ull, 18245718645154687372ull, 3325777414466791135ull}}, {{6334493366077679812ull, 11391367343693124597ull, 18195462288015971311ull, 4157221768083488919ull}}, {{6264901363012243835ull, 14037133617449284729ull, 18289692957651063925ull, 2598263605052180574ull}}, {{12442812722192692697ull, 3711358966529442199ull, 13638744160209054099ull, 3247829506315225718ull}}, {{10941829884313477968ull, 27512689734414845ull, 7825058163406541816ull, 4059786882894032148ull}}, {{9144486686909617682ull, 17195431084009278ull, 14114033388983864443ull, 2537366801808770092ull}}, {{2207236321782246294ull, 13856552344137175310ull, 17642541736229830553ull, 3171708502260962615ull}}, {{11982417439082583676ull, 3485632374889305425ull, 17441491151859900288ull, 3964635627826203269ull}}, {{571481871785532942ull, 2178520234305815891ull, 13206774979126131632ull, 2477897267391377043ull}}, {{14549410395014079889ull, 2723150292882269863ull, 11896782705480276636ull, 3097371584239221304ull}}, {{13575076975340211957ull, 3403937866102837329ull, 14870978381850345795ull, 3871714480299026630ull}}, {{1566894081946550617ull, 18268362230810130995ull, 4682675470229078217ull, 2419821550186891644ull}}, {{15793675657715351983ull, 9000394733230500031ull, 5853344337786347772ull, 3024776937733614555ull}}, {{15130408553716802075ull, 11250493416538125039ull, 2704994403805546811ull, 3780971172167018194ull}}, {{16374034373714083153ull, 4725715376122634197ull, 6302307520805854661ull, 2363106982604386371ull}}, {{6632484911860440229ull, 10518830238580680651ull, 3266198382579930422ull, 2953883728255482964ull}}, {{3678920121398162383ull, 3925165761371075006ull, 4082747978224913028ull, 3692354660319353705ull}}, {{16134383131156015201ull, 11676600637711697686ull, 14080932532459040402ull, 2307721662699596065ull}}, {{10944606877090243193ull, 5372378760284846300ull, 3766107610291636791ull, 2884652078374495082ull}}, {{13680758596362803992ull, 2103787431928669971ull, 13931006549719321797ull, 3605815097968118852ull}}, {{12489262227026117086ull, 7241420308338225368ull, 17413758187149152246ull, 4507268872460148565ull}}, {{7805788891891323179ull, 18360945747993554567ull, 13189441876181914105ull, 2817043045287592853ull}}, {{5145550096436766069ull, 9116124129709779497ull, 2651744289945228920ull, 3521303806609491067ull}}, {{11043623638973345490ull, 11395155162137224371ull, 17149738417713699862ull, 4401629758261863833ull}}, {{4596421765144646980ull, 2510285957908377328ull, 3801057483429980558ull, 2751018598913664896ull}}, {{5745527206430808724ull, 12361229484240247468ull, 4751321854287475697ull, 3438773248642081120ull}}, {{7181909008038510905ull, 1616478800018145623ull, 5939152317859344622ull, 4298466560802601400ull}}, {{11406222157665151172ull, 14845357305293504726ull, 3711970198662090388ull, 2686541600501625875ull}}, {{5034405660226663157ull, 109952557907329292ull, 28276729900225082ull, 3358177000627032344ull}}, {{6293007075283328946ull, 9360812734238937423ull, 35345912375281352ull, 4197721250783790430ull}}, {{10850658449693162448ull, 5850507958899335889ull, 13857149250516714557ull, 2623575781739869018ull}}, {{18175009080543840963ull, 11924820967051557765ull, 8098064526291117388ull, 3279469727174836273ull}}, {{8883703295397637492ull, 14906026208814447207ull, 14734266676291284639ull, 4099337158968545341ull}}, {{12469843587264605289ull, 16233795408150111360ull, 11514759681895746851ull, 2562085724355340838ull}}, {{15587304484080756611ull, 15680558241760251296ull, 5170077565514907756ull, 3202607155444176048ull}}, {{1037386531391394147ull, 1153953728490762505ull, 6462596956893634696ull, 4003258944305220060ull}}, {{12177581628188091102ull, 721221080306726565ull, 13262495134913297493ull, 2502036840190762537ull}}, {{1386918979952950166ull, 5513212368810796111ull, 2743060863359458154ull, 3127546050238453172ull}}, {{15568706780223351419ull, 16114887497868270946ull, 3428826079199322692ull, 3909432562798066465ull}}, {{14342127756066982541ull, 848432649312893533ull, 13672231345568046443ull, 2443395351748791540ull}}, {{4092601639801564464ull, 14895598866923280629ull, 17090289181960058053ull, 3054244189685989425ull}}, {{9727438068179343484ull, 4784440528371937074ull, 7527803422167908855ull, 3817805237107486782ull}}, {{10691334811039477582ull, 9907804357873542527ull, 93191120427555130ull, 2386128273192179239ull}}, {{8752482495371959073ull, 3161383410487152351ull, 13951546955816607625ull, 2982660341490224048ull}}, {{6328917100787560937ull, 8563415281536328343ull, 17439433694770759531ull, 3728325426862780060ull}}, {{10873102215633307442ull, 3046291541746511262ull, 1676274022376948899ull, 2330203391789237538ull}}, {{4368005732686858494ull, 17642922482465302790ull, 11318714564825961931ull, 2912754239736546922ull}}, {{14683379202713348926ull, 17441967084654240583ull, 4925021169177676606ull, 3640942799670683653ull}}, {{13742537984964298253ull, 12579086818963024921ull, 10767962479899483662ull, 4551178499588354566ull}}, {{1671557212961604552ull, 3250243243424502672ull, 2118290531509789385ull, 2844486562242721604ull}}, {{2089446516202005690ull, 8674490072708016244ull, 2647863164387236731ull, 3555608202803402005ull}}, {{2611808145252507113ull, 6231426572457632401ull, 7921514973911433818ull, 4444510253504252506ull}}, {{13161595136851286706ull, 8506327626213408154ull, 9562632877122034040ull, 2777818908440157816ull}}, {{7228621884209332574ull, 10632909532766760193ull, 11953291096402542550ull, 3472273635550197270ull}}, {{13647463373689053621ull, 4067764879103674433ull, 5718241833648402380ull, 4340342044437746588ull}}, {{1612135580914576657ull, 11765725086294572329ull, 12797273182885027295ull, 2712713777773591617ull}}, {{6626855494570608726ull, 10095470339440827507ull, 2161533423324120407ull, 3390892222216989522ull}}, {{3671883349785873003ull, 8007651905873646480ull, 11925288816009926317ull, 4238615277771236902ull}}, {{2294927093616170627ull, 7310625450384723002ull, 2841619491578816044ull, 2649134548607023064ull}}, {{12092030903874989092ull, 9138281812980903752ull, 3552024364473520055ull, 3311418185758778830ull}}, {{15115038629843736365ull, 6811166247798741786ull, 13663402492446675877ull, 4139272732198473537ull}}, {{14058585162079723132ull, 6562821914087907568ull, 1622097530138090567ull, 2587045457624045961ull}}, {{17573231452599653915ull, 3591841374182496556ull, 6639307931100001113ull, 3233806822030057451ull}}, {{3519795242040015778ull, 9101487736155508600ull, 3687448895447613487ull, 4042258527537571814ull}}, {{2199872026275009861ull, 12605958862738274731ull, 16139713614936922141ull, 2526411579710982383ull}}, {{16584898088125926038ull, 1922390523140679701ull, 15562956000243764773ull, 3158014474638727979ull}}, {{6896064554875243836ull, 7014674172353237531ull, 14842008981877318062ull, 3947518093298409974ull}}, {{2004197337583333446ull, 18219229413002937169ull, 4664569595245935884ull, 2467198808311506234ull}}, {{7116932690406554711ull, 4327292692544119845ull, 15054084030912195664ull, 3083998510389382792ull}}, {{13507851881435581292ull, 5409115865680149806ull, 370860964930692964ull, 3854998137986728491ull}}, {{3830721407469850404ull, 12604069452904869437ull, 16372689167577540766ull, 2409373836241705306ull}}, {{9400087777764700909ull, 6531714779276310988ull, 11242489422617150150ull, 3011717295302131633ull}}, {{11750109722205876136ull, 17388015510950164543ull, 218053722989273975ull, 3764646619127664542ull}}, {{14261347604019754441ull, 17785038721984934695ull, 13971341632150459946ull, 2352904136954790338ull}}, {{13214998486597305147ull, 13007926365626392561ull, 8240805003333299125ull, 2941130171193487923ull}}, {{2683690052964467722ull, 2424849901750826990ull, 5689320235739236003ull, 3676412713991859904ull}}, {{12577984603060360460ull, 16866120432470697449ull, 7111650294674045003ull, 4595515892489824880ull}}, {{943711349271643432ull, 8235482261080491954ull, 4444781434171278127ull, 2872197432806140550ull}}, {{10403011223444330098ull, 5682666807923227038ull, 14779348829568873467ull, 3590246791007675687ull}}, {{3780391992450636814ull, 2491647491476645894ull, 13862500018533703930ull, 4487808488759594609ull}}, {{16197803050563811721ull, 6168965700600291587ull, 1746533483942483100ull, 2804880305474746631ull}}, {{15635567794777376747ull, 7711207125750364484ull, 16018224910210267587ull, 3506100381843433288ull}}, {{1097715669762169318ull, 5027322888760567702ull, 1576037064053282868ull, 4382625477304291611ull}}, {{14521130348883519536ull, 12365448842330130621ull, 17125924229529159456ull, 2739140923315182256ull}}, {{4316354880822235708ull, 15456811052912663277ull, 2960661213201897704ull, 3423926154143977821ull}}, {{10007129619455182538ull, 874269742431277480ull, 8312512534929760035ull, 4279907692679972276ull}}, {{6254456012159489087ull, 16687319653515406089ull, 14418692371185875829ull, 2674942307924982672ull}}, {{12429756033626749262ull, 7024091511612093899ull, 18023365463982344787ull, 3343677884906228340ull}}, {{10925509023606048674ull, 4168428371087729470ull, 4082462756268379368ull, 4179597356132785426ull}}, {{2216757121326392517ull, 2605267731929830919ull, 7163225241095125009ull, 2612248347582990891ull}}, {{16606004456940154358ull, 7868270683339676552ull, 4342345532941518357ull, 3265310434478738614ull}}, {{2310761497465641332ull, 14447024372601983595ull, 14651303953031673754ull, 4081638043098423267ull}}, {{17585127000411883497ull, 13641076251303627650ull, 6851221961431102144ull, 2551023776936514542ull}}, {{12758036713660078563ull, 17051345314129534563ull, 17787399488643653488ull, 3188779721170643177ull}}, {{11335859873647710299ull, 2867437568952366588ull, 8399191305522403149ull, 3985974651463303972ull}}, {{16308284457884594745ull, 4097991489808923069ull, 14472866602806277776ull, 2491234157164564982ull}}, {{6550297517073579719ull, 5122489362261153837ull, 8867711216653071412ull, 3114042696455706228ull}}, {{12799557914769362553ull, 6403111702826442296ull, 11084639020816339265ull, 3892553370569632785ull}}, {{7999723696730851596ull, 15531159860334996195ull, 10370360369130184ull, 2432845856606020491ull}}, {{5387968602486176591ull, 967205751709193628ull, 13848021005743576443ull, 3041057320757525613ull}}, {{6734960753107720738ull, 15044065244918655747ull, 3474968201897306841ull, 3801321650946907017ull}}, {{1903507461478631510ull, 2485011750433077986ull, 13701070172254286536ull, 2375826031841816885ull}}, {{11602756363703065195ull, 3106264688041347482ull, 3291279660035694458ull, 2969782539802271107ull}}, {{5280073417774055685ull, 13106202896906460161ull, 17949157630326781784ull, 3712228174752838883ull}}, {{14829260932177254564ull, 8191376810566537600ull, 8912380509740544663ull, 2320142609220524302ull}}, {{89832091512016588ull, 5627534994780784097ull, 1917103600320905021ull, 2900178261525655378ull}}, {{4723976132817408639ull, 11646104761903368025ull, 11619751537255907084ull, 3625222826907069222ull}}, {{10516656184449148703ull, 14557630952379210031ull, 5301317384715108047ull, 4531528533633836528ull}}, {{13490439142921799796ull, 16016048372878088125ull, 3313323365446942529ull, 2832205333521147830ull}}, {{3027990873370086032ull, 6185002410815446445ull, 13365026243663453970ull, 3540256666901434787ull}}, {{8396674610139995444ull, 16954625050374083864ull, 12094596786151929558ull, 4425320833626793484ull}}, {{5247921631337497153ull, 5984954638056414511ull, 16782495028199731782ull, 2765825521016745927ull}}, {{1948216020744483537ull, 16704565334425293947ull, 16366432766822276823ull, 3457281901270932409ull}}, {{16270328081212768133ull, 16269020649604229529ull, 6622982903245682317ull, 4321602376588665512ull}}, {{3251426023116898227ull, 12473980915216337408ull, 4139364314528551448ull, 2701001485367915945ull}}, {{4064282528896122784ull, 15592476144020421760ull, 9785891411588077214ull, 3376251856709894931ull}}, {{5080353161120153480ull, 10267223143170751392ull, 7620678246057708614ull, 4220314820887368664ull}}, {{3175220725700095925ull, 1805328446054331716ull, 4762923903786067884ull, 2637696763054605415ull}}, {{3969025907125119906ull, 2256660557567914645ull, 1341968861305196951ull, 3297120953818256769ull}}, {{9572968402333787787ull, 16655883752242057018ull, 6289147095058884092ull, 4121401192272820961ull}}, {{10594791269886005271ull, 1186555308296509828ull, 15459931980480272318ull, 2575875745170513100ull}}, {{13243489087357506588ull, 10706566172225413093ull, 878170901890788781ull, 3219844681463141376ull}}, {{2719303303914719523ull, 17994893733709154271ull, 1097713627363485976ull, 4024805851828926720ull}}, {{8617093592587781558ull, 11246808583568221419ull, 686071017102178735ull, 2515503657393079200ull}}, {{6159680972307339044ull, 9446824711032888870ull, 857588771377723419ull, 3144379571741349000ull}}, {{16922973252238949613ull, 7196844870363723183ull, 1071985964222154274ull, 3930474464676686250ull}}, {{17494387310290425364ull, 9109714062404714893ull, 5281677246066234325ull, 2456546540422928906ull}}, {{8032926082580867993ull, 15998828596433281521ull, 15825468594437568714ull, 3070683175528661132ull}}, {{14652843621653472895ull, 10775163708686826093ull, 1335091669337409277ull, 3838353969410826416ull}}, {{11463870272747114512ull, 9040320327142960260ull, 834432293335880798ull, 2398971230881766510ull}}, {{14329837840933893139ull, 2077028372073924517ull, 10266412403524626806ull, 2998714038602208137ull}}, {{4077239245885202712ull, 11819657501947181455ull, 17444701522833171411ull, 3748392548252760171ull}}, {{9465803556319333551ull, 5081442929503294457ull, 8597095442557038180ull, 2342745342657975107ull}}, {{16443940463826554843ull, 6351803661879118071ull, 6134683284768909821ull, 2928431678322468884ull}}, {{15943239561355805650ull, 12551440595776285493ull, 7668354105961137276ull, 3660539597903086105ull}}, {{6093991396412593350ull, 15689300744720356867ull, 14197128650878809499ull, 4575674497378857631ull}}, {{1502901613544176892ull, 7499969956236529090ull, 15790734434440337793ull, 2859796560861786019ull}}, {{11101999053784996923ull, 13986648463723049266ull, 15126732024623034337ull, 3574745701077232524ull}}, {{4654126780376470345ull, 3648252524371647871ull, 461670957069241306ull, 4468432126346540656ull}}, {{9826358265376375822ull, 6891843846159667823ull, 288544348168275816ull, 2792770078966587910ull}}, {{7671261813293081873ull, 8614804807699584779ull, 9584052472065120578ull, 3490962598708234887ull}}, {{4977391248188964438ull, 1545133972769705166ull, 7368379571654012819ull, 4363703248385293609ull}}, {{16945927585400266486ull, 17106609797476923392ull, 16134452278352227771ull, 2727314530240808505ull}}, {{2735665408040781491ull, 16771576228418766337ull, 6333007292658121002ull, 3409143162801010632ull}}, {{8031267778478364768ull, 11741098248668682113ull, 7916259115822651253ull, 4261428953501263290ull}}, {{16548757407617447740ull, 9644029414631620272ull, 9559347965816544937ull, 2663393095938289556ull}}, {{2239202685812258059ull, 16666722786716913245ull, 11949184957270681171ull, 3329241369922861945ull}}, {{7410689375692710477ull, 16221717464968753652ull, 1101423141306187752ull, 4161551712403577432ull}}, {{13855052896662719857ull, 10138573415605471032ull, 688389463316367345ull, 2600969820252235895ull}}, {{17318816120828399821ull, 17284902787934226694ull, 14695544884427622893ull, 3251212275315294868ull}}, {{12425148114180723968ull, 7771070429635619656ull, 18369431105534528617ull, 4064015344144118585ull}}, {{7765717571362952480ull, 16386134064590732045ull, 4563365413317998529ull, 2540009590090074116ull}}, {{14318832982631078504ull, 6647609525456251344ull, 5704206766647498162ull, 3175011987612592645ull}}, {{17898541228288848130ull, 17532883943675089988ull, 11741944476736760606ull, 3968764984515740806ull}}, {{1963216230825754273ull, 6346366446369543339ull, 2727029279533087475ull, 2480478115322338004ull}}, {{16289078343814356553ull, 3321272039534541269ull, 3408786599416359344ull, 3100597644152922505ull}}, {{6526289874485781980ull, 4151590049418176587ull, 8872669267697837084ull, 3875747055191153131ull}}, {{1773088162339919785ull, 11818115817741136175ull, 3239575283097454225ull, 2422341909494470707ull}}, {{16051418258207063444ull, 937586716894256506ull, 17884527159153981494ull, 3027927386868088383ull}}, {{10840900785904053496ull, 10395355432972596441ull, 17743972930515088963ull, 3784909233585110479ull}}, {{18304778037258503195ull, 4191254136394178823ull, 18007512109213012458ull, 2365568270990694049ull}}, {{18269286528145741090ull, 14462439707347499337ull, 8674332081234101860ull, 2956960338738367562ull}}, {{9001550104900012651ull, 18078049634184374172ull, 1619543064687851517ull, 3696200423422959453ull}}, {{14849340852417283715ull, 13604624030578927809ull, 3318057424643601150ull, 2310125264639349658ull}}, {{4726618010239440931ull, 7782408001368883954ull, 13370943817659277246ull, 2887656580799187072ull}}, {{15131644549654076972ull, 504637964856329134ull, 16713679772074096558ull, 3609570725998983840ull}}, {{9691183650212820407ull, 9854169492925187226ull, 2445355641383069081ull, 4511963407498729801ull}}, {{10668675799810400659ull, 17688070979146711776ull, 13057562321932887935ull, 2819977129686706125ull}}, {{13335844749763000823ull, 17498402705506001816ull, 2486894847133946207ull, 3524971412108382657ull}}, {{16669805937203751029ull, 17261317363455114366ull, 7720304577344820663ull, 4406214265135478321ull}}, {{5806942692324956489ull, 17705852379800528335ull, 16354405406908982674ull, 2753883915709673950ull}}, {{2646992346978807707ull, 12908943437895884611ull, 11219634721781452535ull, 3442354894637092438ull}}, {{17143798489005673346ull, 11524493278942467859ull, 4801171365372039861ull, 4302943618296365548ull}}, {{8409031046414851889ull, 9508651308552736364ull, 12224104140212300721ull, 2689339761435228467ull}}, {{10511288808018564862ull, 16497500154118308359ull, 10668444156837987997ull, 3361674701794035584ull}}, {{8527424991595818173ull, 6786817137365721737ull, 13335555196047484997ull, 4202093377242544480ull}}, {{16858855665815856118ull, 6547603720067270037ull, 8334721997529678123ull, 2626308360776590300ull}}, {{7238511526987656436ull, 3572818631656699643ull, 10418402496912097654ull, 3282885450970737875ull}}, {{4436453390307182641ull, 13689395326425650362ull, 8411317102712734163ull, 4103606813713422344ull}}, {{7384469387369377055ull, 6250029069802337524ull, 5257073189195458852ull, 2564754258570888965ull}}, {{9230586734211721318ull, 7812536337252921905ull, 11183027504921711469ull, 3205942823213611206ull}}, {{16149919436192039551ull, 14377356439993540285ull, 4755412344297363528ull, 4007428529017014008ull}}, {{12399542656833718672ull, 8985847774995962678ull, 2972132715185852205ull, 2504642830635633755ull}}, {{6276056284187372532ull, 15843995737172341252ull, 17550223949264478968ull, 3130803538294542193ull}}, {{7845070355234215664ull, 1358250597755874949ull, 8102721881298434999ull, 3913504422868177742ull}}, {{7209011981235078742ull, 7766435651238503699ull, 452515157384133970ull, 2445940264292611089ull}}, {{4399578958116460524ull, 484672527193353816ull, 5177329965157555367ull, 3057425330365763861ull}}, {{5499473697645575655ull, 14440898714273855982ull, 11083348474874332112ull, 3821781662957204826ull}}, {{17272229116310648496ull, 9025561696421159988ull, 11538778815223845474ull, 2388613539348253016ull}}, {{3143542321678759004ull, 2058580083671674178ull, 14423473519029806843ull, 2985766924185316270ull}}, {{13152799938953224563ull, 16408283159871756434ull, 8805969861932482745ull, 3732208655231645338ull}}, {{12832185980273153256ull, 3337647947278765915ull, 10115417182135189620ull, 2332630409519778336ull}}, {{11428546456914053666ull, 4172059934098457394ull, 12644271477668987025ull, 2915788011899722920ull}}, {{5062311034287791275ull, 9826760936050459647ull, 15805339347086233781ull, 3644735014874653650ull}}, {{1716202774432351189ull, 16895137188490462463ull, 10533302147003016418ull, 4555918768593317063ull}}, {{7990155761661301349ull, 15171146761233926943ull, 13500842869517967117ull, 2847449230370823164ull}}, {{5376008683649238783ull, 5128875396260244967ull, 16876053586897458897ull, 3559311537963528955ull}}, {{2108324836134160574ull, 11022780263752694113ull, 16483380965194435717ull, 4449139422454411194ull}}, {{12846918068652320119ull, 9195080674059127772ull, 14913799121673910227ull, 2780712139034006996ull}}, {{16058647585815400149ull, 6882164824146521811ull, 195504828382836168ull, 3475890173792508746ull}}, {{15461623463841862282ull, 8602706030183152264ull, 9467753072333321018ull, 4344862717240635932ull}}, {{9663514664901163926ull, 9988377287291858069ull, 15140717707063101444ull, 2715539198275397457ull}}, {{16691079349553842812ull, 12485471609114822586ull, 5090839078546713093ull, 3394423997844246822ull}}, {{11640477150087527707ull, 1771781456111364521ull, 15586920885038167175ull, 4243029997305308527ull}}, {{357769191163622961ull, 8024892437710684682ull, 16659354580789936340ull, 2651893748315817829ull}}, {{9670583525809304509ull, 10031115547138355852ull, 6989135170705256713ull, 3314867185394772287ull}}, {{12088229407261630636ull, 17150580452350332719ull, 4124732944954182987ull, 4143583981743465359ull}}, {{14472672407179601004ull, 8413269773505263997ull, 9495487118237446223ull, 2589739988589665849ull}}, {{4255782453692337542ull, 5904901198454192093ull, 16481044916224195683ull, 3237174985737082311ull}}, {{9931414085542809832ull, 2769440479640352212ull, 15989620126852856700ull, 4046468732171352889ull}}, {{15430505840319031953ull, 10954272336629995940ull, 3075983551641953581ull, 2529042957607095556ull}}, {{841388226689238325ull, 18304526439214882830ull, 3844979439552441976ull, 3161303697008869445ull}}, {{10275107320216323715ull, 4433913975309051921ull, 9417910317867940375ull, 3951629621261086806ull}}, {{17951157121203672082ull, 9688725262209239306ull, 1274507930240074830ull, 2469768513288179254ull}}, {{13215574364649814294ull, 2887534540906773325ull, 10816506949654869346ull, 3087210641610224067ull}}, {{2684409900530104156ull, 12832790212988242465ull, 8908947668641198778ull, 3859013302012780084ull}}, {{13206971233899784857ull, 12632179901545039444ull, 14791464329755525044ull, 2411883313757987552ull}}, {{16508714042374731072ull, 15790224876931299305ull, 42586338484854689ull, 3014854142197484441ull}}, {{6800834497686250127ull, 5902723040881960420ull, 4664918941533456266ull, 3768567677746855551ull}}, {{13473893597908682138ull, 8300887918978613166ull, 9833103366099492022ull, 2355354798591784719ull}}, {{7618994960531076864ull, 1152737861868490650ull, 7679693189196977124ull, 2944193498239730899ull}}, {{300371663809070272ull, 1440922327335613313ull, 4987930468068833501ull, 3680241872799663624ull}}, {{4987150598188725744ull, 6412838927596904545ull, 6234913085086041876ull, 4600302340999579530ull}}, {{14646184169936423350ull, 13231396366602841148ull, 8508506696606164076ull, 2875188963124737206ull}}, {{18307730212420529188ull, 16539245458253551435ull, 1412261333902929287ull, 3593986203905921508ull}}, {{18272976747098273580ull, 16062370804389551390ull, 1765326667378661609ull, 4492482754882401885ull}}, {{6808924448509033084ull, 3121452725102387763ull, 3409172176325357458ull, 2807801721801501178ull}}, {{3899469542208903451ull, 13125187943232760512ull, 13484837257261472630ull, 3509752152251876472ull}}, {{4874336927761129313ull, 7183112892186174832ull, 16856046571576840788ull, 4387190190314845590ull}}, {{3046460579850705821ull, 13712817594471135078ull, 5923343088808137588ull, 2741993868946778494ull}}, {{13031447761668158084ull, 17141021993088918847ull, 16627550897864947793ull, 3427492336183473117ull}}, {{11677623683657809701ull, 7591219436078984847ull, 6949380567049021030ull, 4284365420229341397ull}}, {{14216043829927212919ull, 132826129121977625ull, 6649205863619332096ull, 2677728387643338373ull}}, {{3934996732126852437ull, 166032661402472032ull, 12923193347951553024ull, 3347160484554172966ull}}, {{4918745915158565546ull, 207540826753090040ull, 6930619648084665472ull, 4183950605692716208ull}}, {{3074216196974103467ull, 129713016720681275ull, 4331637280052915920ull, 2614969128557947630ull}}, {{17677828301499793045ull, 162141270900851593ull, 14637918636920920708ull, 3268711410697434537ull}}, {{8262227321592577594ull, 202676588626064492ull, 4462340240868987173ull, 4085889263371793172ull}}, {{14387264112850136805ull, 2432515877104984259ull, 12012334687397892791ull, 2553680789607370732ull}}, {{13372394122635283102ull, 16875702901663394036ull, 15015418359247365988ull, 3192100987009213415ull}}, {{16715492653294103877ull, 2647884553369690929ull, 14157586930631819582ull, 3990126233761516769ull}}, {{3529653880667733067ull, 15489985901138220543ull, 1930962804003805382ull, 2493828896100947981ull}}, {{18247125406116830046ull, 10139110339567999870ull, 7025389523432144632ull, 3117286120126184976ull}}, {{13585534720791261749ull, 12673887924459999838ull, 8781736904290180790ull, 3896607650157731220ull}}, {{3879273182067150689ull, 3309493934360111995ull, 14711957602036138802ull, 2435379781348582012ull}}, {{237405459156550458ull, 13360239454804915802ull, 18389947002545173502ull, 3044224726685727515ull}}, {{9520128860800463880ull, 7476927281651368944ull, 18375747734754078974ull, 3805280908357159394ull}}, {{5950080538000289925ull, 61393532604717686ull, 16096528352648687263ull, 2378300567723224621ull}}, {{16660972709355138214ull, 13911799971038060819ull, 6285602385528695366ull, 2972875709654030777ull}}, {{16214529868266534864ull, 8166377926942800216ull, 12468689000338257112ull, 3716094637067538471ull}}, {{10134081167666584290ull, 5103986204339250135ull, 14710459652852492551ull, 2322559148167211544ull}}, {{8055915441155842458ull, 1768296736996674765ull, 18388074566065615689ull, 2903198935209014430ull}}, {{14681580319872190977ull, 6822056939673231360ull, 13761721170727243803ull, 3628998669011268038ull}}, {{18351975399840238721ull, 3915885156164151296ull, 7978779426554278946ull, 4536248336264085048ull}}, {{11469984624900149201ull, 7059114241029982464ull, 4986737141596424341ull, 2835155210165053155ull}}, {{14337480781125186501ull, 13435578819714865984ull, 1621735408568142522ull, 3543944012706316444ull}}, {{17921850976406483126ull, 7571101487788806672ull, 2027169260710178153ull, 4429930015882895555ull}}, {{11201156860254051954ull, 16261153475936473930ull, 17407881852439719009ull, 2768706259926809721ull}}, {{4778074038462789134ull, 6491383789638428701ull, 7924794260267485050ull, 3460882824908512152ull}}, {{10584278566505874322ull, 17337601773902811684ull, 9905992825334356312ull, 4326103531135640190ull}}, {{15838546140920947259ull, 10836001108689257302ull, 1579559497406584791ull, 2703814706959775119ull}}, {{10574810639296408266ull, 8933315367434183724ull, 15809507427040394701ull, 3379768383699718898ull}}, {{13218513299120510332ull, 15778330227720117559ull, 10538512246945717568ull, 4224710479624648623ull}}, {{15179099839591400814ull, 9861456392325073474ull, 13504099181982155336ull, 2640444049765405389ull}}, {{9750502762634475209ull, 12326820490406341843ull, 3045065922195530458ull, 3300555062206756737ull}}, {{7576442434865706107ull, 6185153576153151496ull, 8418018421171800977ull, 4125693827758445921ull}}, {{4735276521791066317ull, 15394936031164189445ull, 16790476559300845370ull, 2578558642349028700ull}}, {{10530781670666220801ull, 10020298002100460998ull, 2541351625416505097ull, 3223198302936285876ull}}, {{3940105051478000193ull, 17137058521052964152ull, 3176689531770631371ull, 4028997878670357345ull}}, {{2462565657173750121ull, 8404818566444408643ull, 13514646003425114367ull, 2518123674168973340ull}}, {{16913265126749351363ull, 5894337189628122899ull, 16893307504281392959ull, 3147654592711216675ull}}, {{16529895390009301299ull, 2756235468607765720ull, 16504948361924353295ull, 3934568240889020844ull}}, {{10331184618755813312ull, 8640176195520935431ull, 1092220689347945001ull, 2459105150555638028ull}}, {{8302294755017378736ull, 15411906262828557193ull, 1365275861684931251ull, 3073881438194547535ull}}, {{14989554462199111324ull, 14653196810108308587ull, 15541652882388327776ull, 3842351797743184418ull}}, {{7062628529660750626ull, 9158248006317692867ull, 14325219069920092764ull, 2401469873589490261ull}}, {{4216599643648550378ull, 11447810007897116084ull, 4071465782117952243ull, 3001837341986862827ull}}, {{5270749554560687972ull, 9698076491444007201ull, 477646209220052400ull, 3752296677483578534ull}}, {{14823433517668899743ull, 6061297807152504500ull, 14133586936044696462ull, 2345185423427236583ull}}, {{82547823376573062ull, 16799994295795406434ull, 13055297651628482673ull, 2931481779284045729ull}}, {{9326556816075492136ull, 7164934814462094330ull, 2484064009253439630ull, 3664352224105057162ull}}, {{2434823983239589362ull, 18179540554932393721ull, 12328452048421575345ull, 4580440280131321452ull}}, {{13050980035593213111ull, 4444683819191664219ull, 16928654567118260399ull, 2862775175082075907ull}}, {{11702039026064128485ull, 944168755562192370ull, 16549132190470437595ull, 3578468968852594884ull}}, {{5404176745725384798ull, 15015268999734904175ull, 2239671164378495377ull, 4473086211065743606ull}}, {{10295139493719447355ull, 2467014097193233253ull, 15234852533018723323ull, 2795678881916089753ull}}, {{17480610385576697098ull, 16918825676773705278ull, 5208507610991240441ull, 3494598602395112192ull}}, {{12627390945116095564ull, 7313474040684967886ull, 6510634513739050552ull, 4368248252993890240ull}}, {{3280433322270171824ull, 4570921275428104929ull, 4069146571086906595ull, 2730155158121181400ull}}, {{8712227671265102683ull, 1101965575857743257ull, 5086433213858633244ull, 3412693947651476750ull}}, {{15501970607508766258ull, 1377456969822179071ull, 15581413554178067363ull, 4265867434564345937ull}}, {{16606260657334060768ull, 17001811670634719583ull, 2820854443720210245ull, 2666167146602716211ull}}, {{16146139803240188055ull, 7417206533011235767ull, 17361126109932426519ull, 3332708933253395263ull}}, {{15570988735622847165ull, 4659822147836656805ull, 17089721618988145245ull, 4165886166566744079ull}}, {{12037710968977973430ull, 5218231851611604455ull, 17598605039508672634ull, 2603678854104215049ull}}, {{10435452692795078884ull, 15746161851369281377ull, 8163198244103677080ull, 3254598567630268812ull}}, {{17656001884421236509ull, 1235958240502050105ull, 10203997805129596351ull, 4068248209537836015ull}}, {{4117472150122190962ull, 7690002927954863172ull, 13295027655847079575ull, 2542655130961147509ull}}, {{5146840187652738702ull, 5000817641516191061ull, 2783726514526685757ull, 3178318913701434387ull}}, {{11045236252993311282ull, 10862708070322626730ull, 17314716198440520908ull, 3972898642126792983ull}}, {{11514958676548207455ull, 16012564580806417514ull, 17739226651666407423ull, 2483061651329245614ull}}, {{5170326308830483511ull, 15404019707580633989ull, 12950661277728233471ull, 3103827064161557018ull}}, {{11074593904465492293ull, 14643338616048404582ull, 6964954560305516031ull, 3879783830201946273ull}}, {{2309935171863544779ull, 16069615662671334720ull, 15882311646259417279ull, 2424864893876216420ull}}, {{2887418964829430974ull, 15475333559911780496ull, 1406145484114719983ull, 3031081117345270526ull}}, {{3609273706036788717ull, 14732480931462337716ull, 10981053891998175787ull, 3788851396681588157ull}}, {{11479168103127768756ull, 6901957572950267120ull, 9169001691712553819ull, 2368032122925992598ull}}, {{14348960128909710945ull, 4015760947760445996ull, 2237880077785916466ull, 2960040153657490748ull}}, {{17936200161137138682ull, 14243073221555333303ull, 2797350097232395582ull, 3700050192071863435ull}}, {{18127654128351793532ull, 4290234745044695410ull, 17889244875266104903ull, 2312531370044914646ull}}, {{13436195623584966107ull, 751107412878481359ull, 13138184057227855321ull, 2890664212556143308ull}}, {{12183558511053819730ull, 5550570284525489603ull, 16422730071534819151ull, 3613330265695179135ull}}, {{10617762120389886758ull, 2326526837229474100ull, 15916726570991136035ull, 4516662832118973919ull}}, {{15859473362098455032ull, 17594980337764278976ull, 16865483134510541877ull, 2822914270074358699ull}}, {{1377597628913517174ull, 8158667366923185009ull, 16470167899710789443ull, 3528642837592948374ull}}, {{6333683054569284371ull, 5586648190226593357ull, 11364337837783710996ull, 4410803546991185468ull}}, {{6264394918319496684ull, 12715027155746396656ull, 16326083185469595180ull, 2756752216869490917ull}}, {{7830493647899370855ull, 15893783944682995820ull, 6572545926554830263ull, 3445940271086863647ull}}, {{9788117059874213569ull, 15255543912426356871ull, 3603996389766149925ull, 4307425338858579559ull}}, {{13035102190062465337ull, 11840557954480166996ull, 9170026771244925559ull, 2692140836786612224ull}}, {{16293877737578081671ull, 10189011424672820841ull, 11462533464056156949ull, 3365176045983265280ull}}, {{6532289116690438376ull, 17347950299268413956ull, 14328166830070196186ull, 4206470057479081600ull}}, {{13306052734786299793ull, 15454154955470146626ull, 8955104268793872616ull, 2629043785924426000ull}}, {{7409193881628098934ull, 870949620628131667ull, 11193880335992340771ull, 3286304732405532500ull}}, {{4649806333607735763ull, 14923745081067328296ull, 13992350419990425963ull, 4107880915506915625ull}}, {{2906128958504834852ull, 7021497666453386233ull, 1827689984852934371ull, 2567425572191822266ull}}, {{8244347216558431469ull, 4165186064639344887ull, 11507984517920943772ull, 3209281965239777832ull}}, {{5693748002270651432ull, 5206482580799181109ull, 14384980647401179715ull, 4011602456549722290ull}}, {{5864435510632851097ull, 948208603785794241ull, 13602298923053125226ull, 2507251535343576431ull}}, {{11942230406718451775ull, 10408632791587018609ull, 12391187635389018628ull, 3134064419179470539ull}}, {{1092729953115901007ull, 13010790989483773262ull, 10877298525808885381ull, 3917580523974338174ull}}, {{14518014275979601842ull, 10437587377641052240ull, 2186625560203165459ull, 2448487827483961359ull}}, {{18147517844974502302ull, 8435298203623927396ull, 16568340005536120536ull, 3060609784354951698ull}}, {{4237653232508576261ull, 10544122754529909246ull, 11487052970065374862ull, 3825762230443689623ull}}, {{16483591325600023875ull, 1978390703153805374ull, 14096937133931941145ull, 2391101394027306014ull}}, {{11381117120145254036ull, 7084674397369644622ull, 8397799380560150623ull, 2988876742534132518ull}}, {{5003024363326791737ull, 4244156978284667874ull, 1273877188845412471ull, 3736095928167665648ull}}, {{7738576245506632740ull, 9570127139068999277ull, 796173243028382794ull, 2335059955104791030ull}}, {{14284906325310678829ull, 2739286886981473288ull, 10218588590640254301ull, 2918824943880988787ull}}, {{17856132906638348536ull, 8035794627154229514ull, 8161549719872929972ull, 3648531179851235984ull}}, {{13096794096443159862ull, 10044743283942786893ull, 10201937149841162465ull, 4560663974814044980ull}}, {{10491339319490668866ull, 17807179598532711568ull, 15599582755505502348ull, 2850414984258778112ull}}, {{13114174149363336082ull, 3812230424456337844ull, 1052734370672326320ull, 3563018730323472641ull}}, {{16392717686704170102ull, 4765288030570422305ull, 5927603981767795804ull, 4453773412904340801ull}}, {{3327919526549024458ull, 12201677055961289749ull, 15233967534673342137ull, 2783608383065213000ull}}, {{8771585426613668477ull, 1417038264669448474ull, 595715344632126056ull, 3479510478831516251ull}}, {{1741109746412309788ull, 1771297830836810593ull, 14579702236072321282ull, 4349388098539395313ull}}, {{12617408637576163377ull, 5718747162700394524ull, 2194784869904118945ull, 2718367561587122071ull}}, {{15771760796970204222ull, 11760119971802881059ull, 16578539142662312393ull, 3397959451983902588ull}}, {{15103014977785367373ull, 865091909471437612ull, 2276429854618338876ull, 4247449314979878236ull}}, {{216012324261078800ull, 9764054480274424316ull, 10646140695991237605ull, 2654655821862423897ull}}, {{270015405326348500ull, 16816754118770418299ull, 17919361888416434910ull, 3318319777328029871ull}}, {{14172577311940099337ull, 11797570611608247065ull, 17787516342093155734ull, 4147899721660037339ull}}, {{1940331792321480230ull, 2761795613827766512ull, 8811354704594528382ull, 2592437326037523337ull}}, {{2425414740401850287ull, 12675616554139483948ull, 15625879399170548381ull, 3240546657546904171ull}}, {{3031768425502312859ull, 2009462637392191223ull, 14920663230535797573ull, 4050683321933630214ull}}, {{8812384293580027393ull, 3561757157583813466ull, 4713728500657485579ull, 2531677076208518884ull}}, {{1792108330120258433ull, 18287254502261930545ull, 5892160625821856973ull, 3164596345260648605ull}}, {{6851821431077710945ull, 9024010072545249469ull, 11976886800704709121ull, 3955745431575810756ull}}, {{6588231403637263293ull, 17169221341409250678ull, 16708926287295219008ull, 2472340894734881722ull}}, {{17458661291401354924ull, 3014782603052011731ull, 11662785822264247953ull, 3090426118418602153ull}}, {{17211640595824305751ull, 8380164272242402568ull, 743424222548146229ull, 3863032648023252692ull}}, {{10757275372390191095ull, 7543445679365195557ull, 9688012175947367201ull, 2414395405014532932ull}}, {{18058280233915126772ull, 14040993117633882350ull, 12110015219934209001ull, 3017994256268166165ull}}, {{13349478255539132657ull, 3716183341760189226ull, 1302460969635597540ull, 3772492820335207707ull}}, {{12955109928139345815ull, 11545986625454894074ull, 16954939170518106126ull, 2357808012709504816ull}}, {{6970515373319406460ull, 5209111244963841785ull, 2746929889438081042ull, 2947260015886881021ull}}, {{13324830235076645979ull, 15734761093059578039ull, 8045348380224989206ull, 3684075019858601276ull}}, {{12044351775418419570ull, 10445079329469696741ull, 10056685475281236508ull, 4605093774823251595ull}}, {{9833562868850206183ull, 15751546617773336271ull, 3979585412837078865ull, 2878183609264532247ull}}, {{7680267567635369825ull, 5854375216934506627ull, 362795747618960678ull, 3597729511580665309ull}}, {{4988648441116824377ull, 16541341058022909092ull, 5065180702951088751ull, 4497161889475831636ull}}, {{12341277312552791044ull, 17255867188905400038ull, 12389109976199206277ull, 2810726180922394772ull}}, {{6203224603836212997ull, 7734775930849586336ull, 15486387470249007847ull, 3513407726152993465ull}}, {{7754030754795266246ull, 5056783895134595016ull, 5522926282529096097ull, 4391759657691241832ull}}, {{4846269221747041404ull, 14689704980527591645ull, 3451828926580685060ull, 2744849786057026145ull}}, {{10669522545611189659ull, 18362131225659489556ull, 8926472176653244229ull, 3431062232571282681ull}}, {{13336903182013987073ull, 9117605976792198233ull, 15769776239243943191ull, 4288827790714103351ull}}, {{1418035461117660065ull, 12616032763136205752ull, 16773639177168546350ull, 2680517369196314594ull}}, {{1772544326397075081ull, 6546668917065481382ull, 11743676934605907130ull, 3350646711495393243ull}}, {{11439052444851119659ull, 17406708183186627535ull, 10067910149829996008ull, 4188308389369241554ull}}, {{14066936805673031643ull, 10879192614491642209ull, 10904129862071135409ull, 2617692743355775971ull}}, {{3748612951809125842ull, 18210676786541940666ull, 9018476309161531357ull, 3272115929194719964ull}}, {{13909138226616183110ull, 8928287927895262120ull, 11273095386451914197ull, 4090144911493399955ull}}, {{8693211391635114444ull, 7886022964148232777ull, 4739841607318752421ull, 2556340569683374972ull}}, {{15478200257971280959ull, 14469214723612678875ull, 5924802009148440526ull, 3195425712104218715ull}}, {{14736064304036713295ull, 8863146367661072786ull, 2794316493008162754ull, 3994282140130273394ull}}, {{13821726208450333713ull, 10151152498215558395ull, 6358133826557489625ull, 2496426337581420871ull}}, {{12665471742135529238ull, 17300626641196835898ull, 3335981264769474127ull, 3120532921976776089ull}}, {{6608467640814635739ull, 17014097283068656969ull, 8781662599389230563ull, 3900666152470970111ull}}, {{15659507321577617097ull, 8327967792704216653ull, 12406068152259350958ull, 2437916345294356319ull}}, {{5739326096689857659ull, 1186587704025495009ull, 10895899171896800794ull, 3047395431617945399ull}}, {{11785843639289709978ull, 10706606666886644569ull, 9008187946443613088ull, 3809244289522431749ull}}, {{448623246914986880ull, 6691629166804152856ull, 7935960475740952132ull, 2380777680951519843ull}}, {{560779058643733600ull, 8364536458505191070ull, 5308264576248802261ull, 2975972101189399804ull}}, {{9924345860159442808ull, 15067356591558876741ull, 6635330720311002826ull, 3719965126486749755ull}}, {{8508559171813345707ull, 14028783888151685867ull, 1841238690980682814ull, 2324978204054218597ull}}, {{6024012946339294230ull, 8312607823334831526ull, 6913234382153241422ull, 2906222755067773246ull}}, {{16753388219778893595ull, 1167387742313763599ull, 17864915014546327586ull, 3632778443834716557ull}}, {{16330049256296229090ull, 10682606714746980307ull, 8496085712900745770ull, 4540973054793395697ull}}, {{7900437775971449230ull, 11288315215144250596ull, 16839268616631435866ull, 2838108159245872310ull}}, {{9875547219964311537ull, 4887021982075537437ull, 11825713733934519025ull, 3547635199057340388ull}}, {{16956120043382777325ull, 10720463496021809700ull, 14782142167418148781ull, 4434543998821675485ull}}, {{1374202990259460020ull, 9006132694227325015ull, 11544681863850036940ull, 2771589999263547178ull}}, {{15552811793106488737ull, 11257665867784156268ull, 5207480292957770367ull, 3464487499079433973ull}}, {{994270667673559305ull, 9460396316302807432ull, 11121036384624600863ull, 4330609373849292466ull}}, {{621419167295974566ull, 12830276725330336501ull, 11562333758817763443ull, 2706630858655807791ull}}, {{5388459977547356111ull, 11426159888235532722ull, 9841231180094816400ull, 3383288573319759739ull}}, {{15958947008788970947ull, 14282699860294415902ull, 7689852956691132596ull, 4229110716649699674ull}}, {{5362655862065718938ull, 18150059449538785747ull, 9417844116359345776ull, 2643194197906062296ull}}, {{2091633809154760769ull, 4240830238213930568ull, 11772305145449182221ull, 3303992747382577870ull}}, {{2614542261443450961ull, 9912723816194801114ull, 5492009394956701968ull, 4129990934228222338ull}}, {{6245774931829544755ull, 6195452385121750696ull, 8044191890275326634ull, 2581244333892638961ull}}, {{7807218664786930943ull, 16967687518256964178ull, 14666925881271546196ull, 3226555417365798701ull}}, {{535651294128887871ull, 2762865324111653607ull, 4498599296307269034ull, 4033194271707248377ull}}, {{7252311086471636775ull, 6338476845997171408ull, 14340839606260512906ull, 2520746419817030235ull}}, {{9065388858089545969ull, 17146468094351240068ull, 13314363489398253228ull, 3150933024771287794ull}}, {{11331736072611932461ull, 2986341044229498469ull, 7419582324893040728ull, 3938666280964109743ull}}, {{9388178054596151740ull, 1866463152643436543ull, 11554767980699232311ull, 2461666425602568589ull}}, {{7123536549817801771ull, 16168136996086459391ull, 608401920591876676ull, 3077083032003210737ull}}, {{4292734668844864310ull, 1763427171398522623ull, 5372188419167233750ull, 3846353790004013421ull}}, {{9600488195669122050ull, 14937200037406240351ull, 5663460771193215045ull, 2403971118752508388ull}}, {{7388924226159014658ull, 4836441991475636727ull, 7079325963991518807ull, 3004963898440635485ull}}, {{4624469264271380419ull, 1433866470917158005ull, 13460843473416786413ull, 3756204873050794356ull}}, {{5196136299383306714ull, 3202009553536917705ull, 17636399207740267316ull, 2347628045656746472ull}}, {{11106856392656521296ull, 4002511941921147131ull, 3598754935965782529ull, 2934535057070933091ull}}, {{9271884472393263716ull, 9614825945828821818ull, 18333501725239391873ull, 3668168821338666363ull}}, {{2366483553636803837ull, 16630218450713415177ull, 18305191138121851937ull, 4585211026673332954ull}}, {{13008267267091472159ull, 3476357504054802629ull, 16052430479753545365ull, 2865756891670833096ull}}, {{2425276028582176486ull, 8957132898495891191ull, 1618794025982380090ull, 3582196114588541371ull}}, {{16866653091009884319ull, 1973044086265088180ull, 15858550587760138825ull, 4477745143235676713ull}}, {{1318286145026401892ull, 12762367599984149873ull, 2994065089709004909ull, 2798590714522297946ull}}, {{6259543699710390269ull, 2117901444698023629ull, 12965953398991031945ull, 3498238393152872432ull}}, {{12436115643065375740ull, 7259062824299917440ull, 16207441748738789931ull, 4372797991441090540ull}}, {{7772572276915859837ull, 2231071255973754448ull, 906279056106967899ull, 2732998744650681588ull}}, {{9715715346144824797ull, 16623897125249356772ull, 1132848820133709873ull, 3416248430813351985ull}}, {{12144644182681030996ull, 6944813351279532253ull, 6027747043594525246ull, 4270310538516689981ull}}, {{9896245623389338325ull, 18175566399831871370ull, 6073184911460272230ull, 2668944086572931238ull}}, {{3146934992381897098ull, 13496085962935063405ull, 16814853176180116096ull, 3336180108216164047ull}}, {{8545354758904759276ull, 16870107453668829256ull, 16406880451797757216ull, 4170225135270205059ull}}, {{5340846724315474548ull, 10543817158543018285ull, 7948457273159904308ull, 2606390709543878162ull}}, {{11287744423821731088ull, 13179771448178772856ull, 712199554595104577ull, 3257988386929847703ull}}, {{14109680529777163860ull, 2639656254941302358ull, 14725307498526044434ull, 4072485483662309628ull}}, {{4206864312683339509ull, 6261471177765701878ull, 18426689223433553579ull, 2545303427288943517ull}}, {{14481952427708950194ull, 3215152953779739443ull, 9198303474009778262ull, 3181629284111179397ull}}, {{13490754516208799838ull, 13242313229079450112ull, 16109565360939610731ull, 3977036605138974246ull}}, {{8431721572630499899ull, 5970602758960962368ull, 5456792332159868803ull, 2485647878211858904ull}}, {{10539651965788124874ull, 2851567430273815056ull, 6820990415199836004ull, 3107059847764823630ull}}, {{13174564957235156092ull, 3564459287842268820ull, 17749610055854570813ull, 3883824809706029537ull}}, {{17457475135126748366ull, 4533630064115111964ull, 4175977257268024902ull, 2427390506066268461ull}}, {{3375099845198883841ull, 14890409616998665764ull, 9831657590012419031ull, 3034238132582835576ull}}, {{4218874806498604801ull, 14001326002820944301ull, 12289571987515523789ull, 3792797665728544470ull}}, {{4942639763275321953ull, 11056671760976784140ull, 3069296473769814464ull, 2370498541080340294ull}}, {{6178299704094152441ull, 13820839701220980175ull, 13059992629067043888ull, 2963123176350425367ull}}, {{3111188611690302647ull, 17276049626526225219ull, 11713304767906416956ull, 3703903970438031709ull}}, {{18085393946802296819ull, 1574158979724114953ull, 9626658489155204550ull, 2314939981523769818ull}}, {{8771684378220707311ull, 11191070761509919500ull, 2809951074589229879ull, 2893674976904712273ull}}, {{10964605472775884139ull, 9377152433460011471ull, 8124124861663925253ull, 3617093721130890341ull}}, {{9094070822542467270ull, 16333126560252402243ull, 14766842095507294470ull, 4521367151413612926ull}}, {{3377951254875348092ull, 5596518081730363498ull, 4617590291264671140ull, 2825854469633508079ull}}, {{13445811105448960922ull, 6995647602162954372ull, 1160301845653451021ull, 3532318087041885099ull}}, {{16807263881811201153ull, 13356245521131080869ull, 15285435362348977488ull, 4415397608802356373ull}}, {{12810382935345694673ull, 8347653450706925543ull, 11859240110681804882ull, 2759623505501472733ull}}, {{11401292650754730437ull, 1211194776528881121ull, 988992083070092391ull, 3449529381876840917ull}}, {{416557758161249334ull, 15349051525943265114ull, 5847926122265003392ull, 4311911727346051146ull}}, {{4872034617278168738ull, 9593157203714540696ull, 8266639844843015024ull, 2694944829591281966ull}}, {{6090043271597710922ull, 11991446504643175870ull, 1109927769198992972ull, 3368681036989102458ull}}, {{16835926126351914461ull, 14989308130803969837ull, 10610781748353517023ull, 4210851296236378072ull}}, {{12828296838183640490ull, 16285846609393563004ull, 6631738592720948139ull, 2631782060147736295ull}}, {{16035371047729550613ull, 15745622243314565851ull, 3677987222473797270ull, 3289727575184670369ull}}, {{15432527791234550362ull, 10458655767288431506ull, 9209170046519634492ull, 4112159468980837961ull}}, {{14257015887948981880ull, 15760031891410045499ull, 17284946325143241317ull, 2570099668113023725ull}}, {{13209583841508839446ull, 5864981808980393162ull, 7771124851146887935ull, 3212624585141279657ull}}, {{7288607765031273499ull, 2719541242798103549ull, 14325592082360997823ull, 4015780731426599571ull}}, {{6861222862358239889ull, 8617242304389896574ull, 6647652042261929687ull, 2509862957141624732ull}}, {{17799900614802575670ull, 6159866862059982813ull, 8309565052827412109ull, 3137328696427030915ull}}, {{8414817713221055875ull, 12311519596002366421ull, 5775270297606877232ull, 3921660870533788644ull}}, {{7565104079976853874ull, 7694699747501479013ull, 12832915972859074078ull, 2451038044083617902ull}}, {{14068066118398455246ull, 395002647522072958ull, 6817772929219066790ull, 3063797555104522378ull}}, {{8361710611143293250ull, 9717125346257367006ull, 17745588198378609295ull, 3829746943880652972ull}}, {{614383113537170377ull, 12990732369051936235ull, 1867620587131855001ull, 2393591839925408108ull}}, {{14603036947203626683ull, 2403357406032756581ull, 2334525733914818752ull, 2991989799906760135ull}}, {{4418738128722369642ull, 3004196757540945727ull, 16753215222675687152ull, 3739987249883450168ull}}, {{9679240358092562883ull, 1877622973463091079ull, 10470759514172304470ull, 2337492031177156355ull}}, {{7487364429188315699ull, 11570400753683639657ull, 8476763374287992683ull, 2921865038971445444ull}}, {{13970891554912782528ull, 9851314923677161667ull, 10595954217859990854ull, 3652331298714306805ull}}, {{12851928425213590256ull, 3090771617741676276ull, 17856628790752376472ull, 4565414123392883506ull}}, {{17255827302613269718ull, 1931732261088547672ull, 15772079012647623199ull, 2853383827120552191ull}}, {{3123040054557035531ull, 16249723381642848303ull, 15103412747382141094ull, 3566729783900690239ull}}, {{17738858123478458126ull, 11088782190198784570ull, 14267579915800288464ull, 4458412229875862799ull}}, {{15698472345601424233ull, 6930488868874240356ull, 15834766475016262146ull, 2786507643672414249ull}}, {{1176346358292228675ull, 17886483122947576254ull, 5958400038488163970ull, 3483134554590517812ull}}, {{10693804984720061652ull, 13134731866829694509ull, 7448000048110204963ull, 4353918193238147265ull}}, {{8989471124663732484ull, 5903364407554865116ull, 16184215076137347862ull, 2721198870773842040ull}}, {{11236838905829665605ull, 16602577546298357203ull, 1783524771462133211ull, 3401498588467302551ull}}, {{9434362613859694103ull, 16141535914445558600ull, 16064464019609830226ull, 4251873235584128188ull}}, {{5896476633662308814ull, 14700145964955862029ull, 816917975401368083ull, 2657420772240080118ull}}, {{11982281810505273922ull, 13763496437767439632ull, 10244519506106485912ull, 3321775965300100147ull}}, {{14977852263131592402ull, 17204370547209299540ull, 8193963364205719486ull, 4152219956625125184ull}}, {{137785627602469444ull, 6141045573578424309ull, 5121227102628574679ull, 2595137472890703240ull}}, {{4783918052930474708ull, 3064620948545642482ull, 6401533878285718349ull, 3243921841113379050ull}}, {{15203269603017869193ull, 8442462204109441006ull, 17225289384711923744ull, 4054902301391723812ull}}, {{4890357483458780342ull, 5276538877568400629ull, 1542433828590176532ull, 2534313938369827383ull}}, {{10724632872750863331ull, 6595673596960500786ull, 15763100341019884377ull, 3167892422962284228ull}}, {{4182419054083803356ull, 12856278014628013887ull, 1257131352565303855ull, 3959865528702855286ull}}, {{9531540936443458954ull, 14952702786783590535ull, 14620765150635478621ull, 2474915955439284553ull}}, {{7302740152126935788ull, 4855820428197324457ull, 4440898383012184565ull, 3093644944299105692ull}}, {{13740111208586057639ull, 10681461553674043475ull, 5551122978765230706ull, 3867056180373882115ull}}, {{6281726496152592073ull, 11287599489473665076ull, 1163608852514575239ull, 2416910112733676322ull}}, {{7852158120190740091ull, 9497813343414693441ull, 10677883102497994857ull, 3021137640917095402ull}}, {{14426883668665813017ull, 16483952697695754705ull, 4123981841267717763ull, 3776422051146369253ull}}, {{2099273265275051280ull, 7996627426846152739ull, 4883331660006017554ull, 2360263781966480783ull}}, {{16459149636875977812ull, 772412246702915115ull, 1492478556580134039ull, 2950329727458100979ull}}, {{15962251027667584360ull, 14800573363660807606ull, 15700656251007331260ull, 3687912159322626223ull}}, {{10729441747729704642ull, 53972630866457892ull, 15014134295331776172ull, 4609890199153282779ull}}, {{15929273129185841210ull, 9257104931146311990ull, 7077990925368666155ull, 2881181374470801737ull}}, {{10688219374627525704ull, 6959695145505502084ull, 13459174675138220598ull, 3601476718088502171ull}}, {{13360274218284407130ull, 17922990968736653413ull, 12212282325495387843ull, 4501845897610627714ull}}, {{10656014395641448408ull, 8896026346246714431ull, 12244362471862005306ull, 2813653686006642321ull}}, {{8708331976124422606ull, 1896660895953617231ull, 1470395034545342921ull, 3517067107508302902ull}}, {{6273728951728140354ull, 6982512138369409443ull, 11061365830036454459ull, 4396333884385378627ull}}, {{1615237585616393769ull, 2058227077267186950ull, 4607510634559090085ull, 2747708677740861642ull}}, {{11242419018875268019ull, 7184469865011371591ull, 14982760330053638414ull, 3434635847176077052ull}}, {{9441337755166697120ull, 18203959368118990297ull, 281706338857496401ull, 4293294808970096316ull}}, {{17430051143047655460ull, 4459945577433287079ull, 9399438498640711059ull, 2683309255606310197ull}}, {{17175877910382181421ull, 963245953364220945ull, 16360984141728276728ull, 3354136569507887746ull}}, {{7634789332695563064ull, 1204057441705276182ull, 11227858140305570102ull, 4192670711884859683ull}}, {{160057314507339011ull, 14587593956347961326ull, 4711568328477287361ull, 2620419194928037302ull}}, {{9423443679988949572ull, 4399434390152787945ull, 15112832447451385010ull, 3275523993660046627ull}}, {{16390990618413574869ull, 14722665024545760739ull, 14279354540886843358ull, 4094404992075058284ull}}, {{7938526127294790341ull, 4589979621913712558ull, 18147968624909052907ull, 2559003120046911427ull}}, {{699785622263712119ull, 1125788508964752794ull, 18073274762708928230ull, 3198753900058639284ull}}, {{10098104064684415956ull, 10630607673060716800ull, 4144849379676608671ull, 3998442375073299106ull}}, {{6311315040427759973ull, 13561658823304029856ull, 7202216880725268323ull, 2499026484420811941ull}}, {{7889143800534699966ull, 12340387510702649416ull, 13614457119333973308ull, 3123783105526014926ull}}, {{9861429750668374957ull, 15425484388378311770ull, 7794699362312690827ull, 3904728881907518658ull}}, {{10775079612595122252ull, 7335084733522750904ull, 9483373119872819671ull, 2440455551192199161ull}}, {{13468849515743902815ull, 4557169898476050726ull, 16465902418268412493ull, 3050569438990248951ull}}, {{7612689857825102711ull, 10308148391522451312ull, 15970692004408127712ull, 3813211798737811189ull}}, {{4757931161140689195ull, 6442592744701532070ull, 12287525511968773772ull, 2383257374211131993ull}}, {{15170785988280637301ull, 8053240930876915087ull, 1524348834678803503ull, 2979071717763914992ull}}, {{14351796466923408722ull, 5454865145168755955ull, 1905436043348504379ull, 3723839647204893740ull}}, {{6664029782613436500ull, 1103447706516778520ull, 10414269563947591045ull, 2327399779503058587ull}}, {{8330037228266795624ull, 5990995651573361054ull, 8406150936507100902ull, 2909249724378823234ull}}, {{1189174498478718722ull, 16712116601321477126ull, 1284316633779100319ull, 3636562155473529043ull}}, {{10709840159953174211ull, 16278459733224458503ull, 15440453847506039111ull, 4545702694341911303ull}}, {{13611179127611815738ull, 17091566360906368420ull, 16567812682332356300ull, 2841064183963694564ull}}, {{17013973909514769672ull, 2917713877423408909ull, 2263021779205893760ull, 3551330229954618206ull}}, {{7432409331611298378ull, 3647142346779261137ull, 12052149260862143008ull, 4439162787443272757ull}}, {{16174470878325531247ull, 2279463966737038210ull, 9838436297252533332ull, 2774476742152045473ull}}, {{10994716561052138250ull, 2849329958421297763ull, 16909731389993054569ull, 3468095927690056841ull}}, {{9131709682887784909ull, 8173348466454010108ull, 7302106182209154499ull, 4335119909612571052ull}}, {{14930690588659641376ull, 2802499782320062365ull, 13787188400735497370ull, 2709449943507856907ull}}, {{4828305180542388008ull, 12726496764754853765ull, 12622299482491983808ull, 3386812429384821134ull}}, {{10647067494105372914ull, 15908120955943567206ull, 6554502316260203952ull, 4233515536731026418ull}}, {{2042731165388470167ull, 9942575597464729504ull, 8708249966090015374ull, 2645947210456891511ull}}, {{2553413956735587709ull, 3204847459976136072ull, 6273626439185131314ull, 3307434013071114389ull}}, {{3191767445919484636ull, 13229431361824945898ull, 12453719067408802046ull, 4134292516338892986ull}}, {{6606540672127065802ull, 3656708582713203282ull, 12395260435557889183ull, 2583932822711808116ull}}, {{17481547877013608060ull, 18405943783673667814ull, 15494075544447361478ull, 3229916028389760145ull}}, {{12628562809412234267ull, 13784057692737308960ull, 5532536375277038136ull, 4037395035487200182ull}}, {{7892851755882646417ull, 8615036057960818100ull, 17292893289830312547ull, 2523371897179500113ull}}, {{9866064694853308021ull, 6157109054023634721ull, 7781058557005726972ull, 3154214871474375142ull}}, {{16944266886994022930ull, 7696386317529543401ull, 502951159402382907ull, 3942768589342968928ull}}, {{3672637776730182476ull, 2504398439242270674ull, 314344474626489317ull, 2464230368339355580ull}}, {{13814169257767503903ull, 7742184067480226246ull, 392930593283111646ull, 3080287960424194475ull}}, {{8044339535354604070ull, 454358047495507000ull, 14326221296886053270ull, 3850359950530243093ull}}, {{5027712209596627544ull, 14119031834966855587ull, 11259731319767477245ull, 2406474969081401933ull}}, {{1672954243568396526ull, 3813731738426405772ull, 239606094427182845ull, 3008093711351752417ull}}, {{2091192804460495657ull, 9378850691460395119ull, 4911193636461366460ull, 3760117139189690521ull}}, {{8224524530428891642ull, 15085153719017522757ull, 14598711068856823797ull, 2350073211993556575ull}}, {{14892341681463502456ull, 5021384093489739734ull, 13636702817643641843ull, 2937591514991945719ull}}, {{9392055064974602262ull, 1665044098434786764ull, 12434192503627164400ull, 3671989393739932149ull}}, {{11740068831218252828ull, 2081305123043483455ull, 1707682574251791788ull, 4589986742174915187ull}}, {{14255072047152489873ull, 10524187738756952967ull, 17208202673403227531ull, 2868741713859321991ull}}, {{13207154040513224438ull, 8543548655018803305ull, 16898567323326646510ull, 3585927142324152489ull}}, {{2673884495359366835ull, 1456063781918728324ull, 7288151098876144426ull, 4482408927905190612ull}}, {{10894549846454380080ull, 5521725882126593106ull, 13778466473652366074ull, 2801505579940744132ull}}, {{4394815271213199292ull, 16125529389513017191ull, 17223083092065457592ull, 3501881974925930165ull}}, {{881833070589111211ull, 1710167663181719873ull, 7693795809799658279ull, 4377352468657412707ull}}, {{12080360715186664267ull, 7986383817129656776ull, 2502779371911092472ull, 2735845292910882942ull}}, {{15100450893983330334ull, 9982979771412070970ull, 12351846251743641398ull, 3419806616138603677ull}}, {{9652191580624387109ull, 3255352677410312905ull, 1604749759397388036ull, 4274758270173254597ull}}, {{17561834783958711703ull, 11257967460236221373ull, 3308811608837061474ull, 2671723918858284123ull}}, {{8117235424666225917ull, 4849087288440500909ull, 17971072566328490555ull, 3339654898572855153ull}}, {{14758230299260170300ull, 1449673092123238232ull, 8628782652628449482ull, 4174568623216068942ull}}, {{9223893937037606438ull, 5517731701004411799ull, 781303139465393022ull, 2609105389510043089ull}}, {{6918181402869620143ull, 16120536663110290557ull, 5588314942759129181ull, 3261381736887553861ull}}, {{13259412772014413083ull, 6315612773605699484ull, 11597079696876299381ull, 4076727171109442326ull}}, {{17510505019363783985ull, 6253100992717256129ull, 2636488792120299209ull, 2547954481943401454ull}}, {{8053073218922566269ull, 12428062259323958066ull, 12518983027005149819ull, 3184943102429251817ull}}, {{842969486798432028ull, 10923391805727559679ull, 1813670728474273562ull, 3981178878036564772ull}}, {{7444384956890101874ull, 11438805897007112703ull, 10356916242151196784ull, 2488236798772852982ull}}, {{4693795177685239438ull, 14298507371258890879ull, 3722773265834220172ull, 3110295998466066228ull}}, {{1255557953679161393ull, 17873134214073613599ull, 4653466582292775215ull, 3887869998082582785ull}}, {{7702252748690557727ull, 18088237911437090355ull, 14437631660001454269ull, 2429918748801614240ull}}, {{5016129917435809255ull, 8775239334014199232ull, 18047039575001817837ull, 3037398436002017800ull}}, {{6270162396794761568ull, 15580735185945136944ull, 4112055395042720680ull, 3796748045002522251ull}}, {{3918851497996725980ull, 9737959491215710590ull, 264191612688006473ull, 2372967528126576407ull}}, {{14121936409350683283ull, 16784135382447026141ull, 14165297571142171803ull, 2966209410158220508ull}}, {{3817362456406190392ull, 16368483209631394773ull, 17706621963927714754ull, 3707761762697775635ull}}, {{4691694544467562947ull, 14841988024447009637ull, 8760795718241127769ull, 2317351101686109772ull}}, {{10476304199011841588ull, 4717426975276598334ull, 10950994647801409712ull, 2896688877107637215ull}}, {{3872008211910026177ull, 5896783719095747918ull, 9077057291324374236ull, 3620861096384546519ull}}, {{14063382301742308529ull, 7370979648869684897ull, 6734635595728079891ull, 4526076370480683149ull}}, {{1872084910947860975ull, 2301019271329859109ull, 6514990256543743884ull, 2828797731550426968ull}}, {{6951792157112214122ull, 2876274089162323886ull, 8143737820679679855ull, 3535997164438033710ull}}, {{17913112233245043461ull, 17430400666735068569ull, 956300238994824010ull, 4419996455547542138ull}}, {{4278166118137070307ull, 15505686435136805760ull, 5209373667799152910ull, 2762497784717213836ull}}, {{5347707647671337884ull, 10158736007066231392ull, 6511717084748941138ull, 3453122230896517295ull}}, {{6684634559589172354ull, 3475047971978013432ull, 3527960337508788519ull, 4316402788620646619ull}}, {{4177896599743232722ull, 9089434010127340251ull, 18345876275438850488ull, 2697751742887904136ull}}, {{610684731251652998ull, 11361792512659175314ull, 4485601270589011494ull, 3372189678609880171ull}}, {{9986727950919342055ull, 4978868603969193334ull, 995315569808876464ull, 4215237098262350214ull}}, {{1630018950897200881ull, 3111792877480745834ull, 14457130286412711502ull, 2634523186413968883ull}}, {{11260895725476276909ull, 13113113133705708100ull, 13459726839588501473ull, 3293153983017461104ull}}, {{14076119656845346136ull, 2556333361849971413ull, 16824658549485626842ull, 4116442478771826380ull}}, {{11103417794742035287ull, 6209394369583620037ull, 1292039556573740968ull, 2572776549232391488ull}}, {{44214188145380397ull, 7761742961979525047ull, 1615049445717176210ull, 3215970686540489360ull}}, {{13890325790463889208ull, 478806665619630500ull, 2018811807146470263ull, 4019963358175611700ull}}, {{17904825655894706563ull, 7216783193653350918ull, 10485129416321319722ull, 2512477098859757312ull}}, {{13157660033013607396ull, 18244351028921464456ull, 13106411770401649652ull, 3140596373574696640ull}}, {{16447075041267009245ull, 4358694712442278954ull, 16383014713002062066ull, 3925745466968370800ull}}, {{14891107919219268682ull, 7335870213703812250ull, 10239384195626288791ull, 2453590916855231750ull}}, {{9390512862169310044ull, 4558151748702377409ull, 3575858207678085181ull, 3066988646069039688ull}}, {{16349827096139025459ull, 10309375704305359665ull, 4469822759597606476ull, 3833735807586299610ull}}, {{3301112907445809056ull, 15666731852045625599ull, 7405325243175891951ull, 2396084879741437256ull}}, {{17961449189589425032ull, 14971728796629644094ull, 9256656553969864939ull, 2995106099676796570ull}}, {{13228439450132005482ull, 14102974977359667214ull, 2347448655607555366ull, 3743882624595995713ull}}, {{3656088637905115523ull, 4202673342422404105ull, 12996370455823191864ull, 2339926640372497320ull}}, {{9181796815808782307ull, 5253341678028005131ull, 16245463069778989830ull, 2924908300465621650ull}}, {{6865560001333589980ull, 15790049134389782222ull, 11083456800368961479ull, 3656135375582027063ull}}, {{17805322038521763283ull, 15125875399559839873ull, 9242634982033813945ull, 4570169219477533829ull}}, {{4210797246435020196ull, 2536143097083818065ull, 8082489872984827668ull, 2856355762173458643ull}}, {{9875182576471163149ull, 3170178871354772581ull, 5491426322803646681ull, 3570444702716823304ull}}, {{16955664239016341840ull, 8574409607620853630ull, 6864282903504558351ull, 4463055878396029130ull}}, {{5985604130957825746ull, 12276535032404115375ull, 8901862833117736873ull, 2789409923997518206ull}}, {{2870319145269894278ull, 1510610735222980507ull, 1903956504542395284ull, 3486762404996897758ull}}, {{17422956986869531560ull, 1888263419028725633ull, 11603317667532769913ull, 4358453006246122197ull}}, {{3971819089152375369ull, 12709379682961423281ull, 9557916551421675147ull, 2724033128903826373ull}}, {{9576459879867857115ull, 11275038585274391197ull, 16559081707704481838ull, 3405041411129782966ull}}, {{16582260868262209298ull, 4870426194738213188ull, 11475480097775826490ull, 4256301763912228708ull}}, {{1140541005809105003ull, 7655702390138771147ull, 16395547097964667364ull, 2660188602445142942ull}}, {{15260734312543544966ull, 9569627987673463933ull, 11271061835601058397ull, 3325235753056428678ull}}, {{5240859835397267496ull, 16573721003019217821ull, 4865455257646547188ull, 4156544691320535848ull}}, {{5581380406336986137ull, 1135203590032235330ull, 3040909536029091993ull, 2597840432075334905ull}}, {{16200097544776008479ull, 6030690505967682066ull, 8412822938463752895ull, 3247300540094168631ull}}, {{11026749894115234791ull, 2926677114032214679ull, 5904342654652303215ull, 4059125675117710789ull}}, {{13809247711463103600ull, 8746702223911216030ull, 5996057168371383461ull, 2536953546948569243ull}}, {{8038187602474103692ull, 15545063798316407942ull, 2883385442036841422ull, 3171191933685711554ull}}, {{824362466237853807ull, 10207957711040734120ull, 12827603839400827586ull, 3963989917107139442ull}}, {{515226541398658630ull, 10991659587827846729ull, 12628938418052905145ull, 2477493698191962151ull}}, {{5255719195175711191ull, 18351260503212196315ull, 11174487004138743527ull, 3096867122739952689ull}}, {{1957962975542251085ull, 18327389610587857490ull, 133050699891265697ull, 3871083903424940862ull}}, {{5835412878141294832ull, 4537089478976329075ull, 13918214742714204773ull, 2419427439640588038ull}}, {{2682580079249230636ull, 10283047867147799248ull, 8174396391537980158ull, 3024284299550735048ull}}, {{3353225099061538295ull, 3630437797079973252ull, 10217995489422475198ull, 3780355374438418810ull}}, {{11319137723768237242ull, 16104081678457146994ull, 10997933199316434902ull, 2362722109024011756ull}}, {{4925550117855520745ull, 10906730061216657935ull, 13747416499145543628ull, 2953402636280014695ull}}, {{1545251628892013027ull, 13633412576520822419ull, 12572584605504541631ull, 3691753295350018369ull}}, {{17106683332553365806ull, 15438411887966595867ull, 940336350799256663ull, 2307345809593761481ull}}, {{16771668147264319354ull, 14686328841530856930ull, 5787106456926458733ull, 2884182261992201851ull}}, {{11741213147225623384ull, 4522852996631407451ull, 2622197052730685513ull, 3605227827490252314ull}}, {{10064830415604641326ull, 10265252264216647218ull, 12501118352768132699ull, 4506534784362815392ull}}, {{10902205028180288733ull, 4109939655921710559ull, 7813198970480082937ull, 2816584240226759620ull}}, {{9016070266797973012ull, 9749110588329526103ull, 9766498713100103671ull, 3520730300283449525ull}}, {{6658401815070078361ull, 7574702216984519725ull, 16819809409802517493ull, 4400912875354311906ull}}, {{6467344143632492928ull, 7040031894829018780ull, 15124066899553961337ull, 2750570547096444941ull}}, {{8084180179540616159ull, 13411725886963661379ull, 5070025569160287959ull, 3438213183870556177ull}}, {{5493539205998382295ull, 12152971340277188820ull, 10949217979877747853ull, 4297766479838195221ull}}, {{12656834040603764743ull, 9901450096886936964ull, 9149104246637286360ull, 2686104049898872013ull}}, {{15821042550754705928ull, 12376812621108671205ull, 16048066326723995854ull, 3357630062373590016ull}}, {{5941245133161218698ull, 6247643739531063199ull, 1613338834695443202ull, 4197037577966987521ull}}, {{10630807235866843542ull, 8516463355634302403ull, 12537551817753121761ull, 2623148486229367200ull}}, {{8676823026406166524ull, 15257265212970265908ull, 15671939772191402201ull, 3278935607786709000ull}}, {{10846028783007708155ull, 5236523460930668673ull, 1143180641529701136ull, 4098669509733386251ull}}, {{18307983035448287357ull, 3272827163081667920ull, 16855388965451920874ull, 2561668443583366406ull}}, {{4438234720600807580ull, 13314405990706860709ull, 11845864169960125284ull, 3202085554479208008ull}}, {{10159479419178397379ull, 16643007488383575886ull, 14807330212450156605ull, 4002606943099010010ull}}, {{1737988618559110458ull, 12707722689453428881ull, 13866267401208735782ull, 2501629339436881256ull}}, {{6784171791626275976ull, 6661281324962010293ull, 17332834251510919728ull, 3127036674296101570ull}}, {{13091900757960232874ull, 8326601656202512866ull, 12442670777533873852ull, 3908795842870126963ull}}, {{12794123992152533451ull, 14427498071981346349ull, 5470826226744977205ull, 2442997401793829352ull}}, {{2157596934908503101ull, 4199314534694519225ull, 6838532783431221507ull, 3053746752242286690ull}}, {{7308682187063016780ull, 637457149940761127ull, 17771538016143802692ull, 3817183440302858362ull}}, {{11485455394555467344ull, 9621782755567751512ull, 15718897278517264586ull, 2385739650189286476ull}}, {{14356819243194334180ull, 2803856407604913582ull, 1201877524437029117ull, 2982174562736608096ull}}, {{8722652017138141917ull, 8116506527933529882ull, 1502346905546286396ull, 3727718203420760120ull}}, {{10063343529138726602ull, 14296188616813231984ull, 938966815966428997ull, 2329823877137975075ull}}, {{12579179411423408252ull, 4035177715734376268ull, 15008766575240199959ull, 2912279846422468843ull}}, {{15723974264279260315ull, 432286126240582431ull, 14149272200622862045ull, 3640349808028086054ull}}, {{15043281811921687490ull, 5152043676228115943ull, 8463218213923801748ull, 4550437260035107568ull}}, {{16319580160092136537ull, 12443399334497348272ull, 5289511383702376092ull, 2844023287521942230ull}}, {{1952731126405619056ull, 15554249168121685341ull, 15835261266482745923ull, 3555029109402427787ull}}, {{7052599926434411724ull, 14831125441724718772ull, 15182390564676044500ull, 4443786386753034734ull}}, {{13631246990876283135ull, 46081364223173424ull, 4877308084495139909ull, 2777366491720646709ull}}, {{17039058738595353919ull, 4669287723706354684ull, 10708321124046312790ull, 3471708114650808386ull}}, {{2852079349534640783ull, 15059981691487719164ull, 4162029368203115179ull, 4339635143313510483ull}}, {{11005921630313926297ull, 7106645547966130525ull, 295425345913253035ull, 2712271964570944052ull}}, {{18369088056319795776ull, 4271620916530275252ull, 369281682391566294ull, 3390339955713680065ull}}, {{4514615996690193103ull, 14562898182517619874ull, 5073288121416845771ull, 4237924944642100081ull}}, {{7433321016358758594ull, 6795968354859818469ull, 14700020121953998367ull, 2648703090401312550ull}}, {{13903337288875836146ull, 3883274425147385182ull, 9151653115587722151ull, 3310878863001640688ull}}, {{8155799574240019375ull, 242407013006843574ull, 11439566394484652689ull, 4138598578752050860ull}}, {{485688715472624205ull, 11680719429197746994ull, 16373101033407683738ull, 2586624111720031787ull}}, {{9830482931195556065ull, 5377527249642407934ull, 15854690273332216769ull, 3233280139650039734ull}}, {{3064731627139669273ull, 11333595080480397822ull, 10594990804810495153ull, 4041600174562549668ull}}, {{15750515322244457008ull, 165967897659166782ull, 15845241289861335279ull, 2526000109101593542ull}}, {{10464772115950795451ull, 14042517927356122190ull, 10583179575471893290ull, 3157500136376991928ull}}, {{3857593108083718506ull, 8329775372340376930ull, 13228974469339866613ull, 3946875170471239910ull}}, {{7022681710979711970ull, 7511952616926429533ull, 3656423024910028729ull, 2466796981544524944ull}}, {{13390038157152027867ull, 14001626789585424820ull, 4570528781137535911ull, 3083496226930656180ull}}, {{16737547696440034834ull, 12890347468554393121ull, 5713160976421919889ull, 3854370283663320225ull}}, {{3543438282633939915ull, 1138938140205413845ull, 15099940656332169691ull, 2408981427289575140ull}}, {{9040983871719812798ull, 15258730730538931018ull, 428181746705660497ull, 3011226784111968926ull}}, {{2077857802794990189ull, 5238355357891500061ull, 9758599220236851430ull, 3764033480139961157ull}}, {{3604504135960562820ull, 17109030153964351250ull, 8404967521861726095ull, 2352520925087475723ull}}, {{13729002206805479333ull, 16774601674028051158ull, 5894523383899769715ull, 2940651156359344654ull}}, {{7937880721652073359ull, 16356566074107676044ull, 16591526266729487952ull, 3675813945449180817ull}}, {{9922350902065091698ull, 1998963518925043439ull, 6904349778129696229ull, 4594767431811476022ull}}, {{13118998341431764167ull, 3555195208541846101ull, 18150276666613223855ull, 2871729644882172513ull}}, {{2563689871507541497ull, 18279052065959471339ull, 8852787777984366106ull, 3589662056102715642ull}}, {{17039670394666590583ull, 13625443045594563365ull, 1842612685625681825ull, 4487077570128394553ull}}, {{12955637005880313067ull, 1598372875855520247ull, 12680847974584520901ull, 2804423481330246595ull}}, {{11582860238923003429ull, 6609652113246788213ull, 11239373949803263222ull, 3505529351662808244ull}}, {{643517243371590575ull, 17485437178413261075ull, 14049217437254079027ull, 4381911689578510305ull}}, {{16543099341603101773ull, 8622555227294594219ull, 1863231870642717536ull, 2738694805986568941ull}}, {{16067188158576489313ull, 10778194034118242774ull, 6940725856730784824ull, 3423368507483211176ull}}, {{10860613161365835833ull, 13472742542647803468ull, 8675907320913481030ull, 4279210634354013970ull}}, {{16011255262708423204ull, 3808778070727489263ull, 10034128093998313548ull, 2674506646471258731ull}}, {{15402383059958141100ull, 4760972588409361579ull, 7930974099070504031ull, 3343133308089073414ull}}, {{14641292806520288471ull, 1339529717084314070ull, 690345586983354231ull, 4178916635111341768ull}}, {{4539121985647792391ull, 7754735100818778150ull, 431465991864596394ull, 2611822896944588605ull}}, {{14897274518914516296ull, 470046839168696879ull, 5151018508258133397ull, 3264778621180735756ull}}, {{14009907130215757466ull, 5199244567388259003ull, 6438773135322666746ull, 4080973276475919695ull}}, {{6450348947171154465ull, 7861213873045049781ull, 10941762237217748572ull, 2550608297797449809ull}}, {{12674622202391330985ull, 9826517341306312226ull, 18288888814949573619ull, 3188260372246812261ull}}, {{6619905716134387923ull, 7671460658205502379ull, 9026052963404803312ull, 3985325465308515327ull}}, {{1831598063370298500ull, 4794662911378438987ull, 12558812129769083926ull, 2490828415817822079ull}}, {{16124555634495036837ull, 15216700676077824541ull, 11086829143783967003ull, 3113535519772277599ull}}, {{6320636487836632334ull, 14409189826669892773ull, 9246850411302570850ull, 3891919399715346999ull}}, {{6256240814111589161ull, 13617429660096070887ull, 12696810534705188637ull, 2432449624822091874ull}}, {{3208614999212098547ull, 3186729019837924897ull, 6647641131526709989ull, 3040562031027614843ull}}, {{8622454767442511087ull, 8595097293224794025ull, 3697865395980999582ull, 3800702538784518554ull}}, {{16918249275720039190ull, 760249789838108361ull, 6922851890915512643ull, 2375439086740324096ull}}, {{7312753539367885275ull, 14785370292579799164ull, 8653564863644390803ull, 2969298858425405120ull}}, {{9140941924209856594ull, 13870026847297361051ull, 10816956079555488504ull, 3711623573031756400ull}}, {{3407245693417466419ull, 8668766779560850657ull, 6760597549722180315ull, 2319764733144847750ull}}, {{8870743135199220928ull, 6224272456023675417ull, 17674118974007501202ull, 2899705916431059687ull}}, {{15700114937426414064ull, 17003712606884370079ull, 17480962699081988598ull, 3624632395538824609ull}}, {{15013457653355629676ull, 12031268721750686791ull, 8016145318570322036ull, 4530790494423530762ull}}, {{16300940060988350403ull, 16742914987948955052ull, 9621776842533839176ull, 2831744059014706726ull}}, {{1929431002525886388ull, 2481899661226642200ull, 2803849016312523163ull, 3539680073768383408ull}}, {{2411788753157357985ull, 16937432631815466462ull, 3504811270390653953ull, 4424600092210479260ull}}, {{15342426026005512453ull, 3668366367243584682ull, 11413879080848934529ull, 2765375057631549537ull}}, {{9954660495652114758ull, 9197143977481868757ull, 432290795779004449ull, 3456718822039436922ull}}, {{17055011637992531351ull, 16108115990279723850ull, 9763735531578531369ull, 4320898527549296152ull}}, {{15271068292172719999ull, 3150043466283745550ull, 6102334707236582106ull, 2700561579718310095ull}}, {{9865463328361124190ull, 13160926369709457746ull, 3016232365618339728ull, 3375701974647887619ull}}, {{3108457123596629430ull, 16451157962136822183ull, 17605348512305088372ull, 4219627468309859523ull}}, {{8860314729888975250ull, 1058601689480738056ull, 8697499810976986281ull, 2637267167693662202ull}}, {{11075393412361219062ull, 5934938130278310474ull, 1648502726866457043ull, 3296583959617077753ull}}, {{4620869728596748020ull, 2806986644420500189ull, 6672314427010459208ull, 4120729949521347191ull}}, {{5193886589586661464ull, 1754366652762812618ull, 11087725544522618861ull, 2575456218450841994ull}}, {{15715730273838102638ull, 6804644334380903676ull, 4636284893798497768ull, 3219320273063552493ull}}, {{1197918768588076682ull, 8505805417976129596ull, 10407042135675510114ull, 4024150341329440616ull}}, {{9972071267222323734ull, 9927814404662468901ull, 6504401334797193821ull, 2515093963330900385ull}}, {{17076775102455292572ull, 17021454024255474030ull, 12742187686923880180ull, 3143867454163625481ull}}, {{12122596841214339907ull, 2830073456609790922ull, 2092676553372686514ull, 3929834317704531852ull}}, {{12188309044186350346ull, 6380481928808507230ull, 10531294882712704879ull, 2456146448565332407ull}}, {{6012014268378162124ull, 3363916392583246134ull, 8552432584963493195ull, 3070183060706665509ull}}, {{16738389872327478463ull, 18039953546011221379ull, 15302226749631754397ull, 3837728825883331886ull}}, {{8155650660990980088ull, 13580813975470707314ull, 4952205700092458594ull, 2398580516177082429ull}}, {{971191289383949301ull, 7752645432483608335ull, 10801943143542961147ull, 2998225645221353036ull}}, {{15049047167012100339ull, 5079120772177122514ull, 13502428929428701434ull, 3747782056526691295ull}}, {{14017340497809950616ull, 7786136501038089475ull, 15356547108534020252ull, 2342363785329182059ull}}, {{12909989603835050366ull, 9732670626297611844ull, 14583997867240137411ull, 2927954731661477574ull}}, {{16137487004793812957ull, 7554152264444626901ull, 9006625297195395956ull, 3659943414576846968ull}}, {{6336800700710102484ull, 9442690330555783627ull, 11258281621494244945ull, 4574929268221058710ull}}, {{1654657428730120101ull, 17430896502665834527ull, 2424739995006515186ull, 2859330792638161694ull}}, {{15903379841194813838ull, 12565248591477517350ull, 12254297030612919791ull, 3574163490797702117ull}}, {{10655852764638741489ull, 11094874720919508784ull, 1482813232983986027ull, 4467704363497127647ull}}, {{6659907977899213431ull, 4628453691360999038ull, 7844287298256073123ull, 2792315227185704779ull}}, {{17548257009228792597ull, 1173881095773860893ull, 5193673104392703500ull, 3490394033982130974ull}}, {{8100263206253827034ull, 1467351369717326117ull, 15715463417345655183ull, 4362992542477663717ull}}, {{7368507513122335848ull, 7834623633714410679ull, 12128007645054728441ull, 2726870339048539823ull}}, {{4598948372975531906ull, 14404965560570401253ull, 10548323537891022647ull, 3408587923810674779ull}}, {{10360371484646802786ull, 13394520932285613662ull, 8573718403936390405ull, 4260734904763343474ull}}, {{1863546159476863838ull, 10677418591892202491ull, 9970260020887631907ull, 2662959315477089671ull}}, {{16164490754628243509ull, 8735087221437865209ull, 7851139007682151980ull, 3328699144346362089ull}}, {{6370555388003140674ull, 10918859026797331512ull, 14425609778030077879ull, 4160873930432952611ull}}, {{3981597117501962922ull, 13741815919389414051ull, 6710163102055104722ull, 2600546206520595382ull}}, {{365310378450065748ull, 7953897862381991756ull, 17611075914423656711ull, 3250682758150744227ull}}, {{456637973062582185ull, 5330686309550101791ull, 17402158874602182985ull, 4063353447688430284ull}}, {{7202927760805195722ull, 14860893989537283379ull, 1652977259771588557ull, 2539595904805268928ull}}, {{4391973682579106748ull, 4741059431639440512ull, 2066221574714485697ull, 3174494881006586160ull}}, {{5489967103223883435ull, 10538010307976688544ull, 2582776968393107121ull, 3968118601258232700ull}}, {{3431229439514927147ull, 18115471488553900100ull, 10837607642100467758ull, 2480074125786395437ull}}, {{4289036799393658933ull, 13420967323837599317ull, 18158695571052972602ull, 3100092657232994296ull}}, {{9972982017669461571ull, 7552837117942223338ull, 4251625390106664137ull, 3875115821541242871ull}}, {{10844799779470801386ull, 16249738244782359346ull, 9574794896457746941ull, 2421947388463276794ull}}, {{4332627687483725924ull, 6477114750695785471ull, 2745121583717407869ull, 3027434235579095993ull}}, {{804098590927269501ull, 12708079456797119743ull, 8043087998074147740ull, 3784292794473869991ull}}, {{7420090646970625294ull, 17165921697352975647ull, 11944459026437424193ull, 2365182996546168744ull}}, {{4663427290285893714ull, 7622344066409055847ull, 14930573783046780242ull, 2956478745682710930ull}}, {{1217598094429979238ull, 304558046156544001ull, 9439845191953699495ull, 3695598432103388663ull}}, {{12290213855087206784ull, 7107877806488921856ull, 12817432272612144040ull, 2309749020064617914ull}}, {{15362767318859008480ull, 8884847258111152320ull, 6798418303910404242ull, 2887186275080772393ull}}, {{756715074864208984ull, 1882687035784164593ull, 13109708898315393207ull, 3608982843850965491ull}}, {{5557579862007649134ull, 16188416850012369453ull, 11775450104466853604ull, 4511228554813706864ull}}, {{5779330422968474661ull, 894388494402955100ull, 7359656315291783503ull, 2819517846758566790ull}}, {{7224163028710593326ull, 14953043673285857587ull, 18422942430969505186ull, 3524397308448208487ull}}, {{4418517767460853753ull, 9467932554752546176ull, 18416992020284493579ull, 4405496635560260609ull}}, {{2761573604663033596ull, 3611614837506647408ull, 4593090985036726631ull, 2753435397225162881ull}}, {{3451967005828791995ull, 18349576602165472972ull, 10353049749723296192ull, 3441794246531453601ull}}, {{4314958757285989993ull, 4490226678997289599ull, 17552998205581508145ull, 4302242808164317001ull}}, {{9614378250944825602ull, 14335606720441775759ull, 4053094850847360734ull, 2688901755102698126ull}}, {{7406286795253644098ull, 8696136363697443891ull, 14289740600413976726ull, 3361127193878372657ull}}, {{4646172475639667219ull, 1646798417767029056ull, 4027117695235307196ull, 4201408992347965822ull}}, {{2903857797274792012ull, 10252621047959168968ull, 16352006614804230709ull, 2625880620217478638ull}}, {{3629822246593490015ull, 17427462328376349114ull, 11216636231650512578ull, 3282350775271848298ull}}, {{13760649845096638326ull, 12560955873615660584ull, 4797423252708364915ull, 4102938469089810373ull}}, {{8600406153185398954ull, 5544754411796093913ull, 5304232542156422024ull, 2564336543181131483ull}}, {{15362193709909136597ull, 6930943014745117391ull, 2018604659268139626ull, 3205420678976414354ull}}, {{14591056118959032842ull, 17887050805286172547ull, 11746627860939950340ull, 4006775848720517942ull}}, {{6813567065135701574ull, 1956034716449082034ull, 2729956394660081059ull, 2504234905450323714ull}}, {{17740330868274402776ull, 16280101450843516254ull, 12635817530179877131ull, 3130293631812904642ull}}, {{12952041548488227661ull, 15738440795127007414ull, 6571399875870070606ull, 3912867039766130803ull}}, {{3483339949377754385ull, 5224839478526991730ull, 1801281913205100177ull, 2445541899853831752ull}}, {{13577546973576968789ull, 11142735366586127566ull, 2251602391506375221ull, 3056927374817289690ull}}, {{7748561680116435178ull, 93361152950495746ull, 12037875026237744835ull, 3821159218521612112ull}}, {{9454537068500159890ull, 16199251785089917505ull, 7523671891398590521ull, 2388224511576007570ull}}, {{16429857354052587767ull, 6414006676080233169ull, 181217827393462344ull, 2985280639470009463ull}}, {{6702263637283570996ull, 8017508345100291462ull, 14061580339523991642ull, 3731600799337511828ull}}, {{18023972828584395585ull, 9622628734115070067ull, 18011859749057270584ull, 2332250499585944892ull}}, {{17918280017303106577ull, 12028285917643837584ull, 4068080612612036614ull, 2915313124482431116ull}}, {{3951105947919331605ull, 5811985360200021173ull, 5085100765765045768ull, 3644141405603038895ull}}, {{9550568453326552410ull, 7264981700250026466ull, 1744689938778919306ull, 4555176757003798619ull}}, {{10580791301756483160ull, 9152299581083654445ull, 17231332276232682230ull, 2846985473127374136ull}}, {{17837675145622991854ull, 2217002439499792248ull, 3092421271581301172ull, 3558731841409217671ull}}, {{3850349858319188202ull, 2771253049374740311ull, 17700584644758790177ull, 4448414801761522088ull}}, {{9323997689090574482ull, 13261248201927682454ull, 11062865402974243860ull, 2780259251100951305ull}}, {{2431625074508442295ull, 16576560252409603068ull, 18440267772145192729ull, 3475324063876189131ull}}, {{3039531343135552868ull, 6885642260229840123ull, 18438648696754103008ull, 4344155079845236414ull}}, {{18040608153955578207ull, 4303526412643650076ull, 6912469417043926476ull, 2715096924903272759ull}}, {{4104016118734921143ull, 5379408015804562596ull, 4028900752877520191ull, 3393871156129090949ull}}, {{5130020148418651428ull, 2112574001328315341ull, 9647811959524288143ull, 4242338945161363686ull}}, {{5512105601975351095ull, 8237887778471278944ull, 1418196456275292185ull, 2651461840725852304ull}}, {{6890132002469188868ull, 14909045741516486584ull, 1772745570344115231ull, 3314327300907315380ull}}, {{8612665003086486085ull, 14024621158468220326ull, 2215931962930144039ull, 4142909126134144225ull}}, {{771229608501665900ull, 15682917251683719560ull, 12914172522899809784ull, 2589318203833840140ull}}, {{964037010627082374ull, 1156902490895097834ull, 16142715653624762231ull, 3236647754792300175ull}}, {{10428418300138628776ull, 15281186168901036004ull, 15566708548603564884ull, 4045809693490375219ull}}, {{15741133474441418793ull, 327369318708371694ull, 7423349833663534101ull, 2528631058431484512ull}}, {{10453044806196997683ull, 5020897666812852522ull, 9279187292079417626ull, 3160788823039355640ull}}, {{3842933970891471296ull, 15499494120370841461ull, 11598984115099272032ull, 3950986028799194550ull}}, {{4707676741020863512ull, 9687183825231775913ull, 2637679053509657116ull, 2469366267999496594ull}}, {{10496281944703467294ull, 12108979781539719891ull, 12520470853741847203ull, 3086707834999370742ull}}, {{8508666412451946213ull, 10524538708497261960ull, 6427216530322533196ull, 3858384793749213428ull}}, {{5317916507782466383ull, 15801208729665564533ull, 13240382368306359055ull, 2411490496093258392ull}}, {{11259081653155470883ull, 15139824893654567762ull, 16550477960382948819ull, 3014363120116572990ull}}, {{4850480029589562796ull, 14313095098640821799ull, 11464725413623910216ull, 3767953900145716238ull}}, {{9949079046134558604ull, 8945684436650513624ull, 2553767365087555981ull, 2354971187591072649ull}}, {{12436348807668198254ull, 15793791564240529934ull, 7803895224786832880ull, 2943713984488840811ull}}, {{6322063972730472010ull, 1295495381591110802ull, 5143183012556153197ull, 3679642480611051014ull}}, {{17125952002767865820ull, 6231055245416276406ull, 15652350802549967304ull, 4599553100763813767ull}}, {{6092033983302528234ull, 3894409528385172754ull, 16700248279234811421ull, 2874720687977383604ull}}, {{16838414515982936100ull, 9479697928908853846ull, 2428566275333962660ull, 3593400859971729506ull}}, {{11824646108123894317ull, 11849622411136067308ull, 12259079881022229133ull, 4491751074964661882ull}}, {{16613775854432209756ull, 9711857016173736019ull, 12273610944066281112ull, 2807344421852913676ull}}, {{16155533799612874291ull, 12139821270217170024ull, 15342013680082851390ull, 3509180527316142095ull}}, {{1747673175806541248ull, 5951404550916686723ull, 14565831081676176334ull, 4386475659145177619ull}}, {{17233196799374945944ull, 17554685899605092913ull, 6797801416833916256ull, 2741547286965736012ull}}, {{7706437943936518718ull, 3496613300796814526ull, 8497251771042395321ull, 3426934108707170015ull}}, {{409675393065872590ull, 8982452644423406062ull, 6009878695375606247ull, 4283667635883962519ull}}, {{14091105175948334081ull, 12531561930405710644ull, 10673703212250835760ull, 2677292272427476574ull}}, {{17613881469935417601ull, 15664452413007138305ull, 4118756978458768892ull, 3346615340534345718ull}}, {{8182293782137108289ull, 1133821442549371266ull, 14371818259928236924ull, 4183269175667932147ull}}, {{9725619632263080585ull, 9932010438448132849ull, 6676543403241454125ull, 2614543234792457592ull}}, {{16768710558756238635ull, 17026699066487553965ull, 8345679254051817656ull, 3268179043490571990ull}}, {{7125830143163134581ull, 2836629759399890841ull, 1208727030709996263ull, 4085223804363214988ull}}, {{15982858885545428873ull, 8690422627266013631ull, 9978826431048523472ull, 2553264877727009367ull}}, {{15366887588504398188ull, 10863028284082517039ull, 7861847020383266436ull, 3191581097158761709ull}}, {{14596923467203109831ull, 13578785355103146299ull, 14438994793906470949ull, 3989476371448452136ull}}, {{6817234157788249692ull, 10792583856153160389ull, 9024371746191544343ull, 2493422732155282585ull}}, {{13133228715662700019ull, 8879043801764062582ull, 15892150701166818333ull, 3116778415194103231ull}}, {{7193163857723599216ull, 15710490770632466132ull, 15253502358031135012ull, 3895973018992629039ull}}, {{13719099447932025318ull, 595684694790515524ull, 16450968001410541239ull, 2434983136870393149ull}}, {{17148874309915031648ull, 14579663923770308117ull, 6728651946481012836ull, 3043728921087991437ull}}, {{7601034832111625847ull, 18224579904712885147ull, 13022500951528653949ull, 3804661151359989296ull}}, {{2444803760856072203ull, 13696205449659247169ull, 8139063094705408718ull, 2377913219599993310ull}}, {{7667690719497478157ull, 7896884775219283153ull, 950456831526985090ull, 2972391524499991638ull}}, {{14196299417799235600ull, 647733932169328133ull, 10411443076263507171ull, 3715489405624989547ull}}, {{11178530145338216202ull, 16545734772101687747ull, 4201308913450998029ull, 2322180878515618467ull}}, {{9361476663245382349ull, 6847110409844945972ull, 639950123386359633ull, 2902726098144523084ull}}, {{11701845829056727936ull, 13170574030733570369ull, 799937654232949541ull, 3628407622680653855ull}}, {{792249231038746208ull, 2628159483134799250ull, 14834980123073350639ull, 4535509528350817318ull}}, {{5106841787826604284ull, 8560128704600331387ull, 4660176558493456245ull, 2834693455219260824ull}}, {{1771866216355867451ull, 15311846899177802138ull, 5825220698116820306ull, 3543366819024076030ull}}, {{11438204807299610122ull, 9916436587117476864ull, 16504897909500801191ull, 4429208523780095037ull}}, {{7148878004562256326ull, 13115301894589504896ull, 12621404202651694696ull, 2768255327362559398ull}}, {{8936097505702820408ull, 16394127368236881120ull, 6553383216459842562ull, 3460319159203199248ull}}, {{11170121882128525510ull, 11269287173441325592ull, 8191729020574803203ull, 4325398949003999060ull}}, {{6981326176330328444ull, 4737461474187134543ull, 14343202674714027810ull, 2703374343127499412ull}}, {{4114971701985522650ull, 15145198879588693987ull, 17929003343392534762ull, 3379217928909374265ull}}, {{532028609054515409ull, 9708126562631091676ull, 8576196123958504741ull, 4224022411136717832ull}}, {{9555889917513847939ull, 8373422110858126249ull, 5360122577474065463ull, 2640014006960448645ull}}, {{16556548415319697827ull, 5855091620145269907ull, 11311839240269969733ull, 3300017508700560806ull}}, {{16083999500722234380ull, 11930550543608975288ull, 4916427013482686358ull, 4125021885875701008ull}}, {{10052499687951396488ull, 2844908071328221651ull, 3072766883426678974ull, 2578138678672313130ull}}, {{7953938591511857706ull, 12779507126015052872ull, 13064330641138124525ull, 3222673348340391412ull}}, {{9942423239389822132ull, 2139325852236652378ull, 16330413301422655657ull, 4028341685425489265ull}}, {{10825700543046026737ull, 12866293703716377496ull, 3288979285748077929ull, 2517713553390930791ull}}, {{13532125678807533421ull, 2247809074363308158ull, 17946282162467261124ull, 3147141941738663488ull}}, {{7691785061654640968ull, 2809761342954135198ull, 3986108629374524789ull, 3933927427173329361ull}}, {{195679645106762701ull, 4061943848560028451ull, 14020532939427547753ull, 2458704641983330850ull}}, {{14079657611665617088ull, 9689115829127423467ull, 8302294137429658883ull, 3073380802479163563ull}}, {{12987885996154633456ull, 7499708767981891430ull, 5766181653359685700ull, 3841726003098954454ull}}, {{3505742729169258006ull, 13910690016843457952ull, 17438921588631967274ull, 2401078751936846533ull}}, {{4382178411461572508ull, 8164990484199546632ull, 7963593930507795381ull, 3001348439921058167ull}}, {{5477723014326965634ull, 14817924123676821194ull, 5342806394707356322ull, 3751685549901322709ull}}, {{8035262902381741426ull, 13872888595725401150ull, 5645097005905791653ull, 2344803468688326693ull}}, {{820706591122400974ull, 3506052689374587726ull, 11668057275809627471ull, 2931004335860408366ull}}, {{10249255275757777025ull, 18217623917000398369ull, 5361699557907258530ull, 3663755419825510458ull}}, {{17423255113124609185ull, 13548657859395722153ull, 15925496484238848971ull, 4579694274781888072ull}}, {{3972005418061798885ull, 6162068152908632394ull, 9953435302649280607ull, 2862308921738680045ull}}, {{14188378809432024414ull, 3090899172708402588ull, 17053480146738988663ull, 3577886152173350056ull}}, {{17735473511790030518ull, 17698682021167666947ull, 2870106109714184212ull, 4472357690216687571ull}}, {{8778827935655075122ull, 1838304226375016034ull, 17934717383067222797ull, 2795223556385429731ull}}, {{1750162882714068094ull, 6909566301396157947ull, 17806710710406640592ull, 3494029445481787164ull}}, {{16022761658674748829ull, 8636957876745197433ull, 3811644314298749124ull, 4367536806852233956ull}}, {{3096697009030636163ull, 14621470709820524204ull, 11605649733291494010ull, 2729710504282646222ull}}, {{3870871261288295203ull, 9053466350420879447ull, 5283690129759591705ull, 3412138130353307778ull}}, {{226903058182981100ull, 15928518956453487213ull, 15827984699054265439ull, 4265172662941634722ull}}, {{2447657420578057140ull, 16872853375424511364ull, 14504176455336303803ull, 2665732914338521701ull}}, {{3059571775722571424ull, 16479380700853251301ull, 4295162513888216042ull, 3332166142923152127ull}}, {{8436150738080602184ull, 11375853839211788318ull, 757267123932882149ull, 4165207678653940159ull}}, {{660908192872988461ull, 9415751658721061651ull, 7390820980099133199ull, 2603254799158712599ull}}, {{14661193296373399289ull, 7158003554973939159ull, 4626840206696528595ull, 3254068498948390749ull}}, {{13714805602039361207ull, 4335818425290036045ull, 10395236276798048648ull, 4067585623685488436ull}}, {{10877596510488294706ull, 2709886515806272528ull, 15720394709853556213ull, 2542241014803430272ull}}, {{13596995638110368383ull, 7999044163185228564ull, 1203749313607393650ull, 3177801268504287841ull}}, {{16996244547637960478ull, 775433167126759897ull, 6116372660436629967ull, 3972251585630359801ull}}, {{3705123814632643443ull, 7402174757095306792ull, 15351947958841363489ull, 2482657241018974875ull}}, {{4631404768290804304ull, 13864404464796521394ull, 14578248930124316457ull, 3103321551273718594ull}}, {{15012627997218281188ull, 3495447525713488030ull, 8999439125800619764ull, 3879151939092148243ull}}, {{4771206479834037838ull, 11408026740425705827ull, 3318806444411693400ull, 2424469961932592652ull}}, {{1352322081365159394ull, 14260033425532132284ull, 4148508055514616750ull, 3030587452415740815ull}}, {{1690402601706449242ull, 8601669745060389547ull, 573949050965883034ull, 3788234315519676019ull}}, {{17197402690562388441ull, 9987729609090131370ull, 16499619221349534560ull, 2367646447199797511ull}}, {{12273381326348209743ull, 12484662011362664213ull, 16012838008259530296ull, 2959558058999746889ull}}, {{1506668602653098466ull, 15605827514203330267ull, 6180989455042249158ull, 3699447573749683612ull}}, {{17082568941154044206ull, 5141956177949693512ull, 13086490446256181532ull, 2312154733593552257ull}}, {{2906467102733003641ull, 6427445222437116891ull, 2523055002538063203ull, 2890193416991940322ull}}, {{17468141933698418263ull, 3422620509619008209ull, 12377190790027354812ull, 3612741771239925402ull}}, {{8000119361840859116ull, 4278275637023760262ull, 6248116450679417707ull, 4515927214049906753ull}}, {{388388582723149044ull, 368079263926156212ull, 15434287827743105827ull, 2822454508781191720ull}}, {{485485728403936305ull, 14295157135189858977ull, 846115710969330667ull, 3528068135976489651ull}}, {{5218543178932308285ull, 13257260400559935817ull, 14892702693993827046ull, 4410085169970612063ull}}, {{14790804532901162438ull, 3674101731922571981ull, 16225468211387223760ull, 2756303231231632539ull}}, {{4653447610844289336ull, 4592627164903214977ull, 15670149245806641796ull, 3445379039039540674ull}}, {{10428495531982749574ull, 5740783956129018721ull, 10364314520403526437ull, 4306723798799425843ull}}, {{18047024753557688244ull, 5893832981794330652ull, 4171853566038510071ull, 2691702374249641152ull}}, {{4112036868237558688ull, 2755605208815525412ull, 5214816957548137589ull, 3364627967812051440ull}}, {{5140046085296948360ull, 8056192529446794669ull, 6518521196935171986ull, 4205784959765064300ull}}, {{5518371812524286677ull, 9646806349331634572ull, 13297447784939258299ull, 2628615599853165187ull}}, {{6897964765655358347ull, 7446821918237155311ull, 12010123712746684970ull, 3285769499816456484ull}}, {{4010769938641810029ull, 85155360941668331ull, 15012654640933356213ull, 4107211874770570605ull}}, {{200888202437437316ull, 2359065109802236659ull, 11688752159797041585ull, 2567007421731606628ull}}, {{14086168308328960357ull, 7560517405680183727ull, 14610940199746301981ull, 3208759277164508285ull}}, {{12996024366983812543ull, 14062332775527617563ull, 4428617194400713764ull, 4010949096455635357ull}}, {{5816672220151188887ull, 18012330021559536785ull, 5073728755714140054ull, 2506843185284772098ull}}, {{11882526293616374013ull, 13292040490094645173ull, 15565532981497450876ull, 3133553981605965122ull}}, {{1018099811738303804ull, 16615050612618306467ull, 10233544190017037787ull, 3916942477007456403ull}}, {{16777213446832297542ull, 8078563623672747589ull, 4090122109546954665ull, 2448089048129660252ull}}, {{7136458753258208215ull, 14709890548018322391ull, 5112652636933693331ull, 3060111310162075315ull}}, {{4308887423145372365ull, 13775677166595515085ull, 1779129777739728760ull, 3825139137702594144ull}}, {{4998897648679551680ull, 8609798229122196928ull, 1111956111087330475ull, 2390711961064121340ull}}, {{6248622060849439600ull, 6150561767975358256ull, 1389945138859163094ull, 2988389951330151675ull}}, {{7810777576061799500ull, 16911574246823973628ull, 15572489478856117579ull, 3735487439162689593ull}}, {{14105108021893400496ull, 8263890895051289565ull, 2815276896643991631ull, 2334679649476680996ull}}, {{3796326972084586908ull, 5718177600386724053ull, 3519096120804989539ull, 2918349561845851245ull}}, {{9357094733533121538ull, 2536035982056017162ull, 9010556169433624828ull, 3647936952307314056ull}}, {{2472996380061626115ull, 3170044977570021453ull, 11263195211792031035ull, 4559921190384142570ull}}, {{3851465746752210274ull, 18122179175477121072ull, 11651183025797407300ull, 2849950743990089106ull}}, {{4814332183440262842ull, 4205979895636849724ull, 5340606745391983318ull, 3562438429987611383ull}}, {{6017915229300328553ull, 14480846906400837963ull, 2064072413312591243ull, 4453048037484514229ull}}, {{1455354009099011394ull, 6744686307286829775ull, 3595888267534063479ull, 2783155023427821393ull}}, {{15654250566655927954ull, 3819171865681149314ull, 9106546352844967253ull, 3478943779284776741ull}}, {{10344441171465134134ull, 9385650850528824547ull, 15994868959483596970ull, 4348679724105970926ull}}, {{4159432722952014882ull, 10477717800007903246ull, 5385107081249860202ull, 2717924827566231829ull}}, {{14422662940544794410ull, 3873775213155103249ull, 11343069869989713157ull, 3397406034457789786ull}}, {{4193270620398829301ull, 9453905034871266966ull, 4955465300632365638ull, 4246757543072237233ull}}, {{16455852193031432025ull, 1297004628367153949ull, 14626380858963698284ull, 2654223464420148270ull}}, {{6734757186007126319ull, 1621255785458942437ull, 9059604036849847047ull, 3317779330525185338ull}}, {{13030132500936295803ull, 15861627787105841758ull, 2101133009207533000ull, 4147224163156481673ull}}, {{3532146794657796973ull, 9913517366941151099ull, 12842423176823177885ull, 2592015101972801045ull}}, {{18250241548604409928ull, 17003582727103826777ull, 2217970915746808644ull, 3240018877466001307ull}}, {{8977743880473348698ull, 2807734335170231856ull, 16607521699965674518ull, 4050023596832501633ull}}, {{5611089925295842937ull, 15589892014763558622ull, 3462172034837464717ull, 2531264748020313521ull}}, {{16237234443474579479ull, 5652306963172284565ull, 8939401061974218801ull, 3164080935025391901ull}}, {{6461484999061060636ull, 11677069722392743611ull, 15785937345895161405ull, 3955101168781739876ull}}, {{1732585115199468946ull, 9604011585709158709ull, 642838804329700070ull, 2471938230488587423ull}}, {{6777417412426724086ull, 2781642445281672578ull, 14638606560694288800ull, 3089922788110734278ull}}, {{17695143802388180916ull, 3477053056602090722ull, 9074886164013085192ull, 3862403485138417848ull}}, {{15671150894920000976ull, 2173158160376306701ull, 5671803852508178245ull, 2414002178211511155ull}}, {{5753880563367837508ull, 7328133718897771281ull, 2478068797207834902ull, 3017502722764388944ull}}, {{11804036722637184789ull, 18383539185476989909ull, 3097585996509793627ull, 3771878403455486180ull}}, {{9683365960861934446ull, 9183868981709424741ull, 11159363284673396825ull, 2357424002159678862ull}}, {{16715893469504805961ull, 16091522245564168830ull, 4725832068986970223ull, 2946780002699598578ull}}, {{11671494800026231643ull, 15502716788527823134ull, 15130662123088488587ull, 3683475003374498222ull}}, {{5365996463178013746ull, 14766709967232391014ull, 9689955617005834926ull, 4604343754218122778ull}}, {{17188805844768422303ull, 4617507711092856479ull, 10667908279056034733ull, 2877714846386326736ull}}, {{16874321287533139975ull, 10383570657293458503ull, 13334885348820043416ull, 3597143557982908420ull}}, {{16481215590989037064ull, 12979463321616823129ull, 16668606686025054270ull, 4496429447478635525ull}}, {{3383230716727066309ull, 3500478557583126552ull, 12723722187979352871ull, 2810268404674147203ull}}, {{4229038395908832887ull, 18210656252261071902ull, 11292966716546803184ull, 3512835505842684004ull}}, {{14509670031740816916ull, 4316576241616788261ull, 14116208395683503981ull, 4391044382303355005ull}}, {{11374386779051704525ull, 5003703160224186615ull, 11128473256515883940ull, 2744402738939596878ull}}, {{9606297455387242752ull, 6254628950280233269ull, 4687219533790079117ull, 3430503423674496098ull}}, {{16619557837661441344ull, 12429972206277679490ull, 15082396454092374704ull, 4288129279593120122ull}}, {{14998909666965788744ull, 7768732628923549681ull, 14038183802235122094ull, 2680080799745700076ull}}, {{4913579028425072218ull, 487543749299661294ull, 17547729752793902618ull, 3350100999682125095ull}}, {{15365345822386116080ull, 9832801723479352425ull, 17322976172564990368ull, 4187626249602656369ull}}, {{2685812111350240694ull, 6145501077174595266ull, 3909331080212037124ull, 2617266406001660231ull}}, {{12580637176042576676ull, 7681876346468244082ull, 274977831837658501ull, 3271583007502075289ull}}, {{6502424433198445037ull, 14214031451512693007ull, 4955408308224461030ull, 4089478759377594111ull}}, {{10981544298390110004ull, 4272083638768045225ull, 10014659220281370000ull, 2555924224610996319ull}}, {{18338616391415025409ull, 5340104548460056531ull, 7906638006924324596ull, 3194905280763745399ull}}, {{18311584470841393857ull, 6675130685575070664ull, 5271611490228017841ull, 3993631600954681749ull}}, {{11444740294275871161ull, 15701171724552888925ull, 5600600190606205102ull, 2496019750596676093ull}}, {{470867312562675239ull, 10403092618836335349ull, 11612436256685144282ull, 3120024688245845116ull}}, {{5200270159130731953ull, 3780493736690643378ull, 14515545320856430353ull, 3900030860307306395ull}}, {{7861854867884095375ull, 13892023631500121871ull, 6766372816321575018ull, 2437519287692066497ull}}, {{5215632566427731314ull, 8141657502520376531ull, 13069652038829356677ull, 3046899109615083121ull}}, {{1907854689607276238ull, 14788757896577858568ull, 2502006993254532134ull, 3808623887018853902ull}}, {{1192409181004547649ull, 4631287666933773701ull, 15398812426066246296ull, 2380389929386783688ull}}, {{6102197494683072465ull, 5789109583667217126ull, 801771458873256254ull, 2975487411733479611ull}}, {{16851118905208616390ull, 16459759016438797215ull, 14837272378873734029ull, 3719359264666849513ull}}, {{17449478343396467100ull, 12593192394487942211ull, 2355766209155001912ull, 2324599540416780946ull}}, {{17200161910818195970ull, 15741490493109927764ull, 12168079798298528198ull, 2905749425520976182ull}}, {{3053458314813193347ull, 10453491079532633898ull, 5986727711018384440ull, 3632186781901220228ull}}, {{13040194930371267492ull, 13066863849415792372ull, 7483409638772980550ull, 4540233477376525285ull}}, {{17373493868336817990ull, 3555103887457482328ull, 6982974033446806796ull, 2837645923360328303ull}}, {{3270123261711470872ull, 4443879859321852911ull, 4117031523381120591ull, 3547057404200410379ull}}, {{17922712132421502302ull, 943163805724928234ull, 534603385799012835ull, 4433821755250512974ull}}, {{15813381101190826843ull, 16730378443073937810ull, 14169185171406546733ull, 2771138597031570608ull}}, {{10543354339633757745ull, 7077914998560258551ull, 17711481464258183417ull, 3463923246289463260ull}}, {{8567506906114809278ull, 13459079766627711093ull, 3692607756613177655ull, 4329904057861829076ull}}, {{7660534825535449751ull, 15329453881783401289ull, 11531251884738011842ull, 2706190036163643172ull}}, {{14187354550346700092ull, 9938445315374475803ull, 14414064855922514803ull, 3382737545204553965ull}}, {{13122507169505987211ull, 7811370625790706850ull, 4182523014620979792ull, 4228421931505692457ull}}, {{12813252999368629911ull, 4882106641119191781ull, 14143291930206582130ull, 2642763707191057785ull}}, {{2181508193928623677ull, 15326005338253765535ull, 3844056857476063950ull, 3303454633988822232ull}}, {{16561943297692943308ull, 9934134635962431110ull, 4805071071845079938ull, 4129318292486027790ull}}, {{5739528542630701664ull, 10820520165903907348ull, 16838227475185338673ull, 2580823932803767368ull}}, {{7174410678288377079ull, 18137336225807272089ull, 2601040270272121725ull, 3226029916004709211ull}}, {{13579699366287859253ull, 8836612226976926399ull, 17086358393122315869ull, 4032537395005886513ull}}, {{15404841131570993889ull, 7828725651074272951ull, 3761444968060365562ull, 2520335871878679071ull}}, {{14644365396036354458ull, 562535026988065381ull, 90120191648069049ull, 3150419839848348839ull}}, {{4470398689763279360ull, 5314854802162469631ull, 13947708294842250023ull, 3938024799810436048ull}}, {{9711528208743131456ull, 10239313278992625375ull, 8717317684276406264ull, 2461265499881522530ull}}, {{7527724242501526416ull, 12799141598740781719ull, 1673275068490732022ull, 3076581874851903163ull}}, {{4797969284699520116ull, 6775554961571201341ull, 15926651890895578740ull, 3845727343564878953ull}}, {{5304573812150894025ull, 13458093887836776646ull, 3036628404168654856ull, 2403579589728049346ull}}, {{15854089302043393339ull, 16822617359795970807ull, 13019157542065594378ull, 3004474487160061682ull}}, {{15205925609126853769ull, 11804899662890187701ull, 7050574890727217165ull, 3755593108950077103ull}}, {{11809546514917977558ull, 9683905298520061265ull, 11324138334345592584ull, 2347245693093798189ull}}, {{926875088365308235ull, 12104881623150076582ull, 320114862649827018ull, 2934057116367247737ull}}, {{10381965897311411102ull, 5907729992082819919ull, 5011829596739671677ull, 3667571395459059671ull}}, {{8365771353211875973ull, 11996348508530912803ull, 1653100977497201692ull, 4584464244323824589ull}}, {{2922764086543728532ull, 16721089854686596310ull, 3339031120149445009ull, 2865290152702390368ull}}, {{12876827145034436472ull, 7066304263076081675ull, 4173788900186806262ull, 3581612690877987960ull}}, {{11484347912865657686ull, 18056252365699877902ull, 5217236125233507827ull, 4477015863597484950ull}}, {{2566031427113648150ull, 8979314719348729737ull, 17095830633553106104ull, 2798134914748428093ull}}, {{7819225302319448092ull, 11224143399185912171ull, 7534730236659218918ull, 3497668643435535117ull}}, {{5162345609471922210ull, 4806807212127614406ull, 14030098814251411552ull, 4372085804294418896ull}}, {{17061524061202115094ull, 3004254507579759003ull, 8768811758907132220ull, 2732553627684011810ull}}, {{16715219058075255963ull, 3755318134474698754ull, 1737642661779139467ull, 3415692034605014763ull}}, {{11670651785739294145ull, 82461649665985539ull, 16007111382506088046ull, 4269615043256268453ull}}, {{4988314356873364889ull, 13886596586323404674ull, 12310287623279998980ull, 2668509402035167783ull}}, {{15458764982946481919ull, 17358245732904255842ull, 10776173510672610821ull, 3335636752543959729ull}}, {{10100084191828326591ull, 7862749110848156091ull, 18081902906768151431ull, 4169545940679949661ull}}, {{4006709610679010168ull, 11831747221921179413ull, 13607032325943788596ull, 2605966212924968538ull}}, {{9620073031776150613ull, 14789684027401474266ull, 7785418370574959937ull, 3257457766156210673ull}}, {{2801719252865412459ull, 4652046978969679121ull, 14343458981646087826ull, 4071822207695263341ull}}, {{13280289579109352547ull, 7519215380283437354ull, 11270504872742498843ull, 2544888879809539588ull}}, {{7376989937031914875ull, 4787333206926908789ull, 14088131090928123554ull, 3181111099761924485ull}}, {{13832923439717281498ull, 15207538545513411794ull, 3775105808377990730ull, 3976388874702405607ull}}, {{13257263168250688840ull, 14116397609373270275ull, 9276970157877326062ull, 2485243046689003504ull}}, {{11959892941885973146ull, 8422124974861812036ull, 11596212697346657578ull, 3106553808361254380ull}}, {{14949866177357466433ull, 1304284181722489237ull, 14495265871683321973ull, 3883192260451567975ull}}, {{11649509370062110473ull, 3121020622790249725ull, 15977070197443158089ull, 2426995162782229984ull}}, {{726828657295474379ull, 8512961796915200061ull, 1524593673094395995ull, 3033743953477787481ull}}, {{5520221840046730877ull, 6029516227716612172ull, 6517428109795382898ull, 3792179941847234351ull}}, {{12673510686883982607ull, 8380133660750270511ull, 10990921596263196167ull, 2370112463654521469ull}}, {{11230202340177590354ull, 5863481057510450235ull, 18350338013756383113ull, 2962640579568151836ull}}, {{9426066906794600038ull, 11941037340315450698ull, 4491178443485927275ull, 3703300724460189796ull}}, {{10502977835174012928ull, 5157305328483462734ull, 12030358564033480355ull, 2314562952787618622ull}}, {{3905350257112740352ull, 1834945642176940514ull, 5814576168187074636ull, 2893203690984523278ull}}, {{14105059858245701248ull, 2293682052721175642ull, 16491592247088619103ull, 3616504613730654097ull}}, {{8407952785952350752ull, 16702160621183633265ull, 6779432253578610166ull, 4520630767163317622ull}}, {{16784185537288688980ull, 5827164369812382886ull, 18072203213768795066ull, 2825394229477073513ull}}, {{11756859884756085417ull, 16507327499120254416ull, 8755195961928830120ull, 3531742786846341892ull}}, {{14696074855945106771ull, 2187415300190766404ull, 10943994952411037651ull, 4414678483557927365ull}}, {{18408418821820467540ull, 17508035627115086666ull, 9145839854470592483ull, 2759174052223704603ull}}, {{13787151490420808617ull, 17273358515466470429ull, 6820613799660852700ull, 3448967565279630754ull}}, {{3398881307743847059ull, 3144954070623536421ull, 17749139286430841684ull, 4311209456599538442ull}}, {{4430143826553598364ull, 11188968330994486071ull, 15704898072446663956ull, 2694505910374711526ull}}, {{925993764764610051ull, 13986210413743107589ull, 10407750553703554137ull, 3368132387968389408ull}}, {{5769178224383150468ull, 3647704961896720774ull, 13009688192129442672ull, 4210165484960486760ull}}, {{17440794445521632755ull, 2279815601185450483ull, 8131055120080901670ull, 2631353428100304225ull}}, {{17189307038474653039ull, 12073141538336588912ull, 14775504918528514991ull, 3289191785125380281ull}}, {{3039889724383764683ull, 10479740904493348237ull, 4634323092878480027ull, 4111489731406725352ull}}, {{4205774086953546879ull, 4243995056094648696ull, 2896451933049050017ull, 2569681082129203345ull}}, {{5257217608691933599ull, 9916679838545698774ull, 8232250934738700425ull, 3212101352661504181ull}}, {{15794894047719692806ull, 17007535816609511371ull, 14901999686850763435ull, 4015126690826880226ull}}, {{7565965770611114052ull, 8323866876167250655ull, 13925435822709115051ull, 2509454181766800141ull}}, {{4845771194836504661ull, 5793147576781675415ull, 3571736723104230102ull, 3136817727208500177ull}}, {{1445527975118242922ull, 16464806507831870077ull, 9076356922307675531ull, 3921022159010625221ull}}, {{3209297993662595778ull, 7984661058181224846ull, 7978566085655991159ull, 2450638849381640763ull}}, {{13234994528933020531ull, 5369140304299143153ull, 5361521588642601045ull, 3063298561727050954ull}}, {{2708685105884111951ull, 11323111398801316846ull, 15925274022658027114ull, 3829123202158813692ull}}, {{15527986246459733682ull, 11688630642678210932ull, 729924227306491138ull, 2393202001349258558ull}}, {{963238734365115486ull, 5387416266492987858ull, 10135777320987889731ull, 2991502501686573197ull}}, {{10427420454811170166ull, 2122584314688846918ull, 17281407669662250068ull, 3739378127108216496ull}}, {{1905451765829593450ull, 10549987233535305132ull, 10800879793538906292ull, 2337111329442635310ull}}, {{2381814707286991812ull, 13187484041919131415ull, 4277727705068857057ull, 2921389161803294138ull}}, {{16812326439390903477ull, 2649296997116750556ull, 14570531668190847130ull, 3651736452254117672ull}}, {{2568663975529077730ull, 12534993283250714004ull, 18213164585238558912ull, 4564670565317647090ull}}, {{10828787021560449389ull, 7834370802031696252ull, 15994913884201487224ull, 2852919103323529431ull}}, {{13535983776950561737ull, 9792963502539620315ull, 15381956336824471126ull, 3566148879154411789ull}}, {{12308293702760814267ull, 3017832341319749586ull, 5392387365748425196ull, 4457686098943014737ull}}, {{12304369582652896821ull, 11109517250179619299ull, 14899457149661235507ull, 2786053811839384210ull}}, {{10768775959888733122ull, 9275210544297136220ull, 9400949400221768576ull, 3482567264799230263ull}}, {{13460969949860916402ull, 11594013180371420275ull, 7139500731849822816ull, 4353209080999037829ull}}, {{6107263209449378800ull, 7246258237732137672ull, 6768030966619833212ull, 2720755675624398643ull}}, {{7634079011811723499ull, 9057822797165172090ull, 3848352689847403611ull, 3400944594530498304ull}}, {{319226727909878566ull, 6710592478029077209ull, 4810440862309254514ull, 4251180743163122880ull}}, {{11728731751012143864ull, 8805806317195561159ull, 3006525538943284071ull, 2656987964476951800ull}}, {{10049228670337791926ull, 6395571878067063545ull, 3758156923679105089ull, 3321234955596189750ull}}, {{17173221856349627811ull, 12606150866011217335ull, 13921068191453657169ull, 4151543694495237187ull}}, {{17650792687859599238ull, 961315263615928978ull, 6394824610444841779ull, 2594714809059523242ull}}, {{12840118822969723240ull, 15036702134802074935ull, 17216902799910828031ull, 3243393511324404052ull}}, {{11438462510284766145ull, 14184191650075205765ull, 3074384426178983423ull, 4054241889155505066ull}}, {{9454882078141672793ull, 15782648808938085459ull, 6533176284789252543ull, 2533901180722190666ull}}, {{7206916579249703087ull, 15116624992745218920ull, 17389842392841341487ull, 3167376475902738332ull}}, {{9008645724062128859ull, 14284095222504135746ull, 3290558917342125243ull, 3959220594878422916ull}}, {{10242089595966218441ull, 6621716504851390889ull, 11279971360193604085ull, 2474512871799014322ull}}, {{17414298013385160955ull, 12888831649491626515ull, 4876592163387229298ull, 3093141089748767903ull}}, {{17156186498304063290ull, 6887667525009757336ull, 1484054185806648719ull, 3866426362185959879ull}}, {{10722616561440039556ull, 11222321230772180191ull, 7845062893770237305ull, 2416516476366224924ull}}, {{8791584683372661541ull, 192843483183061527ull, 9806328617212796632ull, 3020645595457781155ull}}, {{6377794835788439022ull, 241054353978826909ull, 7646224753088607886ull, 3775806994322226444ull}}, {{6291964781581468341ull, 13985717026518930530ull, 14002262507535155736ull, 2359879371451391527ull}}, {{17088328013831611234ull, 17482146283148663162ull, 12891142115991556766ull, 2949849214314239409ull}}, {{12137037980434738235ull, 12629310817081053145ull, 2278869589707282246ull, 3687311517892799262ull}}, {{1336239420261259081ull, 6563266484496540624ull, 12071959023988878616ull, 4609139397365999077ull}}, {{835149637663286926ull, 4102041552810337890ull, 9850817399206743087ull, 2880712123353749423ull}}, {{10267309083933884466ull, 515865922585534458ull, 7701835730581040955ull, 3600890154192186779ull}}, {{3610764318062579774ull, 14479890458514081785ull, 5015608644798913289ull, 4501112692740233474ull}}, {{13785942744857582119ull, 2132402508930219259ull, 7746441421426708710ull, 2813195432962645921ull}}, {{12620742412644589744ull, 11888875173017549882ull, 14294737795210773791ull, 3516494291203307401ull}}, {{6552555978950961372ull, 10249407947844549449ull, 4033364188731303527ull, 4395617864004134252ull}}, {{15624562532912820618ull, 13323408995043925261ull, 11744224654811840512ull, 2747261165002583907ull}}, {{5695645110858862060ull, 16654261243804906577ull, 10068594800087412736ull, 3434076456253229884ull}}, {{11731242407000965479ull, 2371082481046581605ull, 12585743500109265921ull, 4292595570316537355ull}}, {{9637869513589297377ull, 13011141596722583263ull, 5560246678354597248ull, 2682872231447835847ull}}, {{7435650873559233817ull, 16263926995903229079ull, 2338622329515858656ull, 3353590289309794809ull}}, {{4682877573521654367ull, 1883164671169484733ull, 7534963930322211225ull, 4191987861637243511ull}}, {{5232641492664727931ull, 12706192965549397718ull, 11626881484092463871ull, 2619992413523277194ull}}, {{15764173902685685722ull, 11271055188509359243ull, 5310229818260804031ull, 3274990516904096493ull}}, {{15093531359929719249ull, 9477132967209311150ull, 11249473291253392943ull, 4093738146130120616ull}}, {{4821771081528686627ull, 12840737132146901325ull, 7030920807033370589ull, 2558586341331325385ull}}, {{10638899870338246187ull, 2215863359901462944ull, 13400337027219101141ull, 3198232926664156731ull}}, {{13298624837922807734ull, 7381515218304216584ull, 12138735265596488522ull, 3997791158330195914ull}}, {{8311640523701754834ull, 9225133029867523269ull, 12198395559425193230ull, 2498619473956372446ull}}, {{15001236673054581446ull, 2308044250479628278ull, 6024622412426715730ull, 3123274342445465558ull}}, {{9528173804463450999ull, 12108427349954311156ull, 16754150052388170470ull, 3904092928056831947ull}}, {{15178480664644432683ull, 2956081075294056568ull, 8165500773528912592ull, 2440058080035519967ull}}, {{526356757095989237ull, 3695101344117570711ull, 5595189948483752836ull, 3050072600044399959ull}}, {{14493004001652150259ull, 4618876680146963388ull, 2382301417177303141ull, 3812590750055499949ull}}, {{18281499537887369720ull, 5192640934305546069ull, 3794781394949508415ull, 2382869218784687468ull}}, {{9016816367077048438ull, 1879115149454544683ull, 4743476743686885519ull, 2978586523480859335ull}}, {{6659334440418922643ull, 16183951992100344566ull, 1317659911181218994ull, 3723233154351074169ull}}, {{17997142080543990364ull, 14726656013490103257ull, 12352752490556731631ull, 2327020721469421355ull}}, {{8661369545397824243ull, 13796633998435241168ull, 10829254594768526635ull, 2908775901836776694ull}}, {{10826711931747280304ull, 12634106479616663556ull, 4313196206605882486ull, 3635969877295970868ull}}, {{13533389914684100379ull, 6569261062666053637ull, 5391495258257353108ull, 4544962346619963585ull}}, {{10764211705891256689ull, 13329160201021059331ull, 14898899582479315452ull, 2840601466637477240ull}}, {{8843578613936682957ull, 16661450251276324164ull, 176880404389592699ull, 3550751833296846551ull}}, {{11054473267420853697ull, 16215126795668017301ull, 14056158560769154586ull, 4438439791621058188ull}}, {{9214888801351727513ull, 14746140265719898717ull, 18008471137335497424ull, 2774024869763161367ull}}, {{16130297020117047295ull, 18432675332149873396ull, 17898902903241983876ull, 3467531087203951709ull}}, {{1716127201436757502ull, 4594100091477790130ull, 8538570573770316134ull, 4334413859004939637ull}}, {{5684265519325361343ull, 16706370612455782543ull, 7642449617820141535ull, 2709008661878087273ull}}, {{2493645880729313775ull, 16271277247142340275ull, 14164748040702564823ull, 3386260827347609091ull}}, {{16952115406193805930ull, 15727410540500537439ull, 13094249032450818125ull, 4232826034184511364ull}}, {{17512601156512210563ull, 12135474597026529851ull, 17407277682136537136ull, 2645516271365319602ull}}, {{17279065427212875299ull, 15169343246283162314ull, 12535725065815895612ull, 3306895339206649503ull}}, {{12375459747161318316ull, 514934984144401277ull, 11057970313842481612ull, 4133619174008311879ull}}, {{10040505351189517900ull, 9545206401945026606ull, 13828760473792632863ull, 2583511983755194924ull}}, {{3327259652132121566ull, 7319821984003895354ull, 17285950592240791079ull, 3229389979693993655ull}}, {{13382446602019927766ull, 4538091461577481288ull, 16995752221873600945ull, 4036737474617492069ull}}, {{8364029126262454854ull, 14365522209554395565ull, 12928188147884694542ull, 2522960921635932543ull}}, {{15066722426255456471ull, 8733530725088218648ull, 11548549166428480274ull, 3153701152044915679ull}}, {{386658959109768973ull, 1693541369505497503ull, 9824000439608212439ull, 3942126440056144599ull}}, {{7159190877084687464ull, 7975992383582017795ull, 13057529302396214630ull, 2463829025035090374ull}}, {{4337302577928471426ull, 746618442622746436ull, 7098539591140492480ull, 3079786281293862968ull}}, {{5421628222410589282ull, 933273053278433045ull, 8873174488925615600ull, 3849732851617328710ull}}, {{5694360648220312254ull, 583295658299020653ull, 934048037151121846ull, 2406083032260830444ull}}, {{11729636828702778221ull, 9952491609728551624ull, 1167560046438902307ull, 3007603790326038055ull}}, {{14662046035878472776ull, 7828928493733301626ull, 15294508113330791596ull, 3759504737907547568ull}}, {{13775464790851433389ull, 14116452345438089324ull, 9559067570831744747ull, 2349690461192217230ull}}, {{17219330988564291736ull, 13033879413370223751ull, 2725462426684905126ull, 2937113076490271538ull}}, {{16912477717277976766ull, 7068977229858003881ull, 12630200070210907216ull, 3671391345612839422ull}}, {{7305539091315307246ull, 8836221537322504852ull, 6564378050908858212ull, 4589239182016049278ull}}, {{13789333968926842837ull, 14746010497681341340ull, 17937794337100200094ull, 2868274488760030798ull}}, {{17236667461158553546ull, 9209141085246900867ull, 13198870884520474310ull, 3585343110950038498ull}}, {{16934148308020804028ull, 2288054319703850276ull, 7275216568795817080ull, 4481678888687548123ull}}, {{1360470655658226710ull, 1430033949814906423ull, 2241167346283691723ull, 2801049305429717577ull}}, {{15535646374854947099ull, 15622600492550796740ull, 7413145201282002557ull, 3501311631787146971ull}}, {{972813894859132258ull, 5693192560406332214ull, 4654745483175115293ull, 4376639539733933714ull}}, {{14443066739569121373ull, 5864088359467651585ull, 7520901945411834962ull, 2735399712333708571ull}}, {{4218775369179238005ull, 16553482486189340290ull, 4789441413337405798ull, 3419249640417135714ull}}, {{14496841248328823314ull, 11468481070881899554ull, 15210173803526533056ull, 4274062050521419642ull}}, {{13672211798632902475ull, 7167800669301187221ull, 14118044645631471064ull, 2671288781575887276ull}}, {{3255206693008964382ull, 8959750836626484027ull, 17647555807039338830ull, 3339110976969859095ull}}, {{17904066421543369189ull, 1976316508928329225ull, 17447758740371785634ull, 4173888721212323869ull}}, {{4272512485823523887ull, 5846883836507593670ull, 13210692221946059973ull, 2608680450757702418ull}}, {{14564012644134180667ull, 11920290814061879991ull, 7289993240577799158ull, 3260850563447128023ull}}, {{13593329786740337930ull, 5676991480722574181ull, 4500805532294861044ull, 4076063204308910029ull}}, {{10801674125926405158ull, 12771491712306384671ull, 5118846466897982104ull, 2547539502693068768ull}}, {{8890406638980618544ull, 15964364640382980839ull, 6398558083622477630ull, 3184424378366335960ull}}, {{6501322280298385276ull, 10732083763623950241ull, 7998197604528097038ull, 3980530472957919950ull}}, {{15592541471254960558ull, 2095866333837580996ull, 387187484402672745ull, 2487831545598699969ull}}, {{1043932765359149081ull, 7231518935724364150ull, 5095670373930728835ull, 3109789431998374961ull}}, {{10528287993553712159ull, 4427712651228067283ull, 10981273985840798948ull, 3887236789997968701ull}}, {{4274336986757376147ull, 11990692443872317860ull, 9169139250364193294ull, 2429522993748730438ull}}, {{5342921233446720184ull, 5764993517985621517ull, 2238052026100465810ull, 3036903742185913048ull}}, {{11290337560235788134ull, 16429613934336802704ull, 2797565032625582262ull, 3796129677732391310ull}}, {{7056460975147367584ull, 5656822690533113786ull, 15583536200673152626ull, 2372581048582744568ull}}, {{18043948255788985288ull, 16294400400021168040ull, 1032676177131889166ull, 2965726310728430711ull}}, {{4108191246026679994ull, 11144628463171684243ull, 15125903276697025170ull, 3707157888410538388ull}}, {{261776519552981044ull, 11577078807909690556ull, 230317511080864923ull, 2316973680256586493ull}}, {{327220649441226305ull, 9859662491459725291ull, 4899582907278469058ull, 2896217100320733116ull}}, {{14244083867083696593ull, 3101206077469880805ull, 6124478634098086323ull, 3620271375400916395ull}}, {{3970046778572457030ull, 17711565652119514719ull, 3043912274195219999ull, 4525339219251145494ull}}, {{9398808264248867500ull, 17987257560215778555ull, 15737503226654176211ull, 2828337012031965933ull}}, {{7136824311883696470ull, 17872385931842335290ull, 5836820978035556552ull, 3535421265039957417ull}}, {{18144402426709396396ull, 3893738341093367496ull, 11907712240971833595ull, 4419276581299946771ull}}, {{11340251516693372748ull, 127743453969660733ull, 5136477141393702045ull, 2762047863312466732ull}}, {{340256340584552222ull, 4771365335889463821ull, 6420596426742127556ull, 3452559829140583415ull}}, {{5037006444158078182ull, 5964206669861829776ull, 3414059515000271541ull, 4315699786425729269ull}}, {{3148129027598798864ull, 6033472177877337562ull, 4439630206088863665ull, 2697312366516080793ull}}, {{13158533321353274388ull, 12153526240774059856ull, 10161223776038467485ull, 3371640458145100991ull}}, {{16448166651691592985ull, 1356849745685411108ull, 8089843701620696453ull, 4214550572681376239ull}}, {{1056732120452469808ull, 3153874100267075895ull, 11973681341154017139ull, 2634094107925860149ull}}, {{15155973205847750971ull, 17777400680616008580ull, 1132043621160357711ull, 3292617634907325187ull}}, {{498222433600137098ull, 17610064832342622822ull, 15250112581732610851ull, 4115772043634156483ull}}, {{14146447076282249398ull, 8700447511000445311ull, 7225477354369187830ull, 2572357527271347802ull}}, {{13071372826925423844ull, 1652187351895780831ull, 18255218729816260596ull, 3215446909089184752ull}}, {{11727530015229391901ull, 2065234189869726039ull, 4372279338560774129ull, 4019308636361480941ull}}, {{14247235287159451794ull, 12819986414737048534ull, 5038517595814177782ull, 2512067897725925588ull}}, {{8585672072094538935ull, 6801610981566534860ull, 6298146994767722228ull, 3140084872157406985ull}}, {{10732090090118173668ull, 8502013726958168575ull, 12484369761887040689ull, 3925106090196758731ull}}, {{13625085333964940399ull, 16842973625417325119ull, 5496888091965706478ull, 2453191306372974207ull}}, {{12419670649028787594ull, 11830344994916880591ull, 2259424096529745194ull, 3066489132966217759ull}}, {{10912902292858596589ull, 5564559206791324931ull, 16659338175944345205ull, 3833111416207772198ull}}, {{4514720923822928916ull, 5783692513458272034ull, 5800400341537827849ull, 2395694635129857624ull}}, {{14866773191633436953ull, 11841301660250227946ull, 7250500426922284811ull, 2994618293912322030ull}}, {{9360094452687020383ull, 10189941056885397029ull, 18286497570507631822ull, 3743272867390402537ull}}, {{8155902042143081692ull, 1757027142125985239ull, 4511531953926188033ull, 2339545542119001586ull}}, {{5583191534251464211ull, 6807969946084869453ull, 14862786979262510849ull, 2924431927648751982ull}}, {{11590675436241718167ull, 13121648451033474720ull, 9355111687223362753ull, 3655539909560939978ull}}, {{14488344295302147709ull, 2567002508509679688ull, 2470517572174427634ull, 4569424886951174973ull}}, {{9055215184563842318ull, 6216062586245937709ull, 3849916491822711223ull, 2855890554344484358ull}}, {{15930704999132190802ull, 3158392214380034232ull, 14035767651633164837ull, 3569863192930605447ull}}, {{1466637175205686886ull, 8559676286402430695ull, 12933023546114068142ull, 4462328991163256809ull}}, {{7834177262144636160ull, 738111660574131280ull, 1165610688680210733ull, 2788955619477035506ull}}, {{9792721577680795200ull, 5534325594145052004ull, 10680385397705039224ull, 3486194524346294382ull}}, {{12240901972100993999ull, 6917906992681315005ull, 4127109710276523222ull, 4357743155432867978ull}}, {{9956406741776815202ull, 18158749925707985590ull, 7191129587350214917ull, 2723589472145542486ull}}, {{3222136390366243194ull, 8863379351852818276ull, 18212284021042544455ull, 3404486840181928107ull}}, {{4027670487957803993ull, 6467538171388634941ull, 18153669007875792665ull, 4255608550227410134ull}}, {{4823137064187321448ull, 15571426403186366598ull, 6734357111494982511ull, 2659755343892131334ull}}, {{15252293367088927617ull, 14852596985555570343ull, 17641318426223503947ull, 3324694179865164167ull}}, {{14453680690433771617ull, 13954060213517075025ull, 17439962014351992030ull, 4155867724831455209ull}}, {{2116021403880025405ull, 4109601615020783987ull, 3982447231328913163ull, 2597417328019659506ull}}, {{16480084810132195468ull, 525316000348592079ull, 14201431076015917262ull, 3246771660024574382ull}}, {{15988419994237856431ull, 9880017037290515907ull, 8528416808165120769ull, 4058464575030717978ull}}, {{7686919487184966318ull, 17704225694375042202ull, 9941946523530588384ull, 2536540359394198736ull}}, {{385277322126432089ull, 3683538044259251137ull, 12427433154413235481ull, 3170675449242748420ull}}, {{5093282671085428015ull, 9216108573751451825ull, 15534291443016544351ull, 3963344311553435525ull}}, {{14712516715496862270ull, 12677596886235739246ull, 12014775161099034171ull, 2477090194720897203ull}}, {{9167273857516302029ull, 11235310089367286154ull, 10406782932946404810ull, 3096362743401121504ull}}, {{2235720285040601728ull, 4820765574854331885ull, 13008478666183006013ull, 3870453429251401880ull}}, {{3703168187364070032ull, 5318821493497651380ull, 8130299166364378758ull, 2419033393282126175ull}}, {{4628960234205087540ull, 15871898903726840033ull, 5551187939528085543ull, 3023791741602657719ull}}, {{10397886311183747329ull, 15228187611231162137ull, 2327298905982719025ull, 3779739677003322149ull}}, {{18027893990558311841ull, 2600088229378394479ull, 3760404825452893343ull, 2362337298127076343ull}}, {{17923181469770501897ull, 17085168342005156811ull, 88820013388728774ull, 2952921622658845429ull}}, {{17792290818785739467ull, 12133088390651670206ull, 4722711035163298872ull, 3691152028323556786ull}}, {{6508495743313699263ull, 7583180244157293879ull, 7563380415404449699ull, 2306970017702222991ull}}, {{3523933660714736175ull, 4867289286769229445ull, 4842539500828174220ull, 2883712522127778739ull}}, {{9016603094320808122ull, 6084111608461536806ull, 1441488357607829871ull, 3604640652659723424ull}}, {{2047381831046234345ull, 2993453492149533104ull, 1801860447009787339ull, 4505800815824654280ull}}, {{1279613644403896466ull, 18011809497089315854ull, 1126162779381117086ull, 2816125509890408925ull}}, {{10822889092359646390ull, 13291389834506869009ull, 6019389492653784262ull, 3520156887363011156ull}}, {{18140297383876945891ull, 7390865256278810453ull, 7524236865817230328ull, 4400196109203763945ull}}, {{13643528874136785134ull, 4619290785174256533ull, 16231863087204238715ull, 2750122568252352465ull}}, {{3219353037388817706ull, 1162427463040432763ull, 6454770803723134682ull, 3437653210315440582ull}}, {{17859249352018185844ull, 10676406365655316761ull, 17291835541508694160ull, 4297066512894300727ull}}, {{4244501817370284297ull, 6672753978534572976ull, 17724926241084015706ull, 2685666570558937954ull}}, {{5305627271712855371ull, 17564314510022992028ull, 12932785764500243824ull, 3357083213198672443ull}}, {{6632034089641069213ull, 3508649063819188419ull, 11554296187197916877ull, 4196354016498340554ull}}, {{1839178296811974306ull, 4498748674100686714ull, 11833121135426085952ull, 2622721260311462846ull}}, {{11522344907869743691ull, 5623435842625858392ull, 5568029382427831632ull, 3278401575389328558ull}}, {{14402931134837179614ull, 7029294803282322990ull, 16183408764889565348ull, 4098001969236660697ull}}, {{4390145940845849355ull, 13616681288906227677ull, 3197101450414896486ull, 2561251230772912936ull}}, {{10099368444484699597ull, 7797479574278008788ull, 3996376813018620608ull, 3201564038466141170ull}}, {{12624210555605874496ull, 9746849467847510985ull, 14218843053128051568ull, 4001955048082676462ull}}, {{972602569612589704ull, 6091780917404694366ull, 4275090889777644326ull, 2501221905051672789ull}}, {{10439125248870512938ull, 16838098183610643765ull, 9955549630649443311ull, 3126527381314590986ull}}, {{17660592579515529077ull, 16435936711085916802ull, 3221065001457028331ull, 3908159226643238733ull}}, {{15649556380624593577ull, 7966617435215004049ull, 4319008635124336659ull, 2442599516652024208ull}}, {{5726887420498578259ull, 5346585775591367158ull, 5398760793905420824ull, 3053249395815030260ull}}, {{16381981312477998632ull, 6683232219489208947ull, 6748450992381776030ull, 3816561744768787825ull}}, {{7932895311085055193ull, 18012078192462919304ull, 15746996916307079778ull, 2385351090480492390ull}}, {{9916119138856318992ull, 13291725703723873322ull, 10460374108529073915ull, 2981688863100615488ull}}, {{3171776886715622931ull, 12002971111227453749ull, 13075467635661342394ull, 3727111078875769360ull}}, {{4288203563410958284ull, 12113542962944546497ull, 8172167272288338996ull, 2329444424297355850ull}}, {{9971940472691085759ull, 15141928703680683121ull, 991837053505647937ull, 2911805530371694813ull}}, {{17076611609291245103ull, 5092352824318690189ull, 5851482335309447826ull, 3639756912964618516ull}}, {{7510706456331892666ull, 15588813067253138545ull, 7314352919136809782ull, 4549696141205773145ull}}, {{16223406581275902677ull, 5131322148605823686ull, 16100685620528975874ull, 2843560088253608215ull}}, {{11055886189740102538ull, 15637524722612055416ull, 15514171007233831938ull, 3554450110317010269ull}}, {{13819857737175128172ull, 10323533866410293462ull, 5557655703760126211ull, 4443062637896262837ull}}, {{4025725067307067204ull, 4146365657292739462ull, 5779377824063772834ull, 2776914148685164273ull}}, {{14255528370988609813ull, 14406329108470700135ull, 11835908298507103946ull, 3471142685856455341ull}}, {{13207724445308374362ull, 8784539348733599361ull, 959827317851716221ull, 4338928357320569177ull}}, {{1337298750676652120ull, 7796180102172193553ull, 12129107119725792398ull, 2711830223325355735ull}}, {{6283309456773203054ull, 521853090860466133ull, 10549697881229852594ull, 3389787779156694669ull}}, {{12465822839393891721ull, 9875688400430358474ull, 17798808369964703646ull, 4237234723945868336ull}}, {{12402825293048570230ull, 1560619231841586142ull, 11124255231227939779ull, 2648271702466167710ull}}, {{6280159579455936979ull, 15785832095084146390ull, 4681947002180148915ull, 3310339628082709638ull}}, {{17073571511174697032ull, 15120604100427795083ull, 15075805789579961952ull, 4137924535103387047ull}}, {{8365139185270491693ull, 9450377562767371927ull, 16339907646128558076ull, 2586202834439616904ull}}, {{5844737963160726713ull, 11812971953459214909ull, 1978140483951145979ull, 3232753543049521131ull}}, {{11917608472378296295ull, 10154528923396630732ull, 16307733660221096186ull, 4040941928811901413ull}}, {{16671877332091210992ull, 10958266595550282111ull, 12498176546851879068ull, 2525588705507438383ull}}, {{16228160646686625836ull, 13697833244437852639ull, 11011034665137460931ull, 3156985881884297979ull}}, {{15673514789930894391ull, 12510605537119927895ull, 9152107312994438260ull, 3946232352355372474ull}}, {{16713475771347890851ull, 17042500497554730742ull, 10331753089048911816ull, 2466395220222107796ull}}, {{11668472677330087755ull, 2856381548233861812ull, 12914691361311139771ull, 3082994025277634745ull}}, {{14585590846662609694ull, 17405534990574490977ull, 2308306146356761001ull, 3853742531597043432ull}}, {{2198465251523049203ull, 3960930341467975005ull, 1442691341472975626ull, 2408589082248152145ull}}, {{7359767582831199407ull, 14174534963689744564ull, 6415050195268607436ull, 3010736352810190181ull}}, {{9199709478538999259ull, 17718168704612180705ull, 12630498762513147199ull, 3763420441012737726ull}}, {{17279033470155344297ull, 17991384468023694796ull, 3282375708143329095ull, 2352137775632961079ull}}, {{3152047763984628755ull, 17877544566602230592ull, 17938027690461325081ull, 2940172219541201348ull}}, {{3940059704980785944ull, 8511872652970624528ull, 3975790539367104736ull, 3675215274426501686ull}}, {{4925074631225982430ull, 10639840816213280660ull, 14193110211063656728ull, 4594019093033127107ull}}, {{12301543681371014827ull, 6649900510133300412ull, 6564850872701091503ull, 2871261933145704442ull}}, {{15376929601713768534ull, 3700689619239237611ull, 17429435627731140187ull, 3589077416432130552ull}}, {{14609475983714822763ull, 14176005621659110ull, 3340050460954373618ull, 4486346770540163191ull}}, {{4519236471394376323ull, 4620546021940924848ull, 9005060565737565367ull, 2803966731587601994ull}}, {{5649045589242970404ull, 1163996508998768156ull, 2032953670317180901ull, 3504958414484502493ull}}, {{7061306986553713004ull, 6066681654675848099ull, 7152878106323864030ull, 4381198018105628116ull}}, {{2107473857382376676ull, 17626734089454568774ull, 13693920853307190826ull, 2738248761316017572ull}}, {{11857714358582746653ull, 12810045574963435159ull, 17117401066633988533ull, 3422810951645021965ull}}, {{10210456929801045412ull, 2177498913422130237ull, 7561693278010321955ull, 4278513689556277457ull}}, {{8687378590339347335ull, 17501837885384689062ull, 16255273344824920981ull, 2674071055972673410ull}}, {{1635851201069408360ull, 8042239301448697616ull, 11095719644176375419ull, 3342588819965841763ull}}, {{2044814001336760450ull, 5441113108383484116ull, 9257963536793081370ull, 4178236024957302204ull}}, {{10501380787690251089ull, 8012381711167065476ull, 15009599247350451664ull, 2611397515598313877ull}}, {{13126725984612813862ull, 10015477138958831845ull, 4926941003905900868ull, 3264246894497892347ull}}, {{2573349425483853615ull, 12519346423698539807ull, 1546990236454988181ull, 4080308618122365434ull}}, {{8525872418568490365ull, 10130434524025281331ull, 5578554916211755517ull, 2550192886326478396ull}}, {{6045654504783225053ull, 17274729173458989568ull, 6973193645264694396ull, 3187741107908097995ull}}, {{7557068130979031316ull, 3146667393114185344ull, 4104806038153480092ull, 3984676384885122494ull}}, {{4723167581861894573ull, 11190039157551141648ull, 16400561829128088769ull, 2490422740553201558ull}}, {{5903959477327368216ull, 152490891656763348ull, 11277330249555335154ull, 3113028425691501948ull}}, {{7379949346659210269ull, 9413985651425729993ull, 14096662811944168942ull, 3891285532114377435ull}}, {{16141683387730476179ull, 1272055013713693341ull, 6504571248251411637ull, 2432053457571485897ull}}, {{6342046179380931511ull, 6201754785569504581ull, 12742400078741652450ull, 3040066821964357371ull}}, {{12539243742653552293ull, 16975565518816656534ull, 11316314079999677658ull, 3800083527455446714ull}}, {{3225341320731082279ull, 15221414467687798238ull, 11684382318427186440ull, 2375052204659654196ull}}, {{13255048687768628657ull, 580024010900196181ull, 14605477898033983051ull, 2968815255824567745ull}}, {{2733752804428622109ull, 14560088068907408939ull, 4421789317260315101ull, 3711019069780709682ull}}, {{17849496567263746482ull, 11405898052280824538ull, 7375304341715084842ull, 2319386918612943551ull}}, {{13088498672224907295ull, 5034000528496254865ull, 4607444408716468149ull, 2899233648266179439ull}}, {{2525565284998970406ull, 10904186679047706486ull, 1147619492468197282ull, 3624042060332724299ull}}, {{12380328643103488816ull, 4406861311954857299ull, 15269582420867410315ull, 4530052575415905373ull}}, {{5431862392725986558ull, 448445310758091860ull, 11849332022255825399ull, 2831282859634940858ull}}, {{6789827990907483197ull, 14395614693729778537ull, 5588292990965005940ull, 3539103574543676073ull}}, {{13098971007061741900ull, 17994518367162223171ull, 11597052257133645329ull, 4423879468179595091ull}}, {{5881013870199894736ull, 4329044951835307626ull, 4942314651494834379ull, 2764924667612246932ull}}, {{16574639374604644228ull, 799620171366746628ull, 6177893314368542974ull, 3456155834515308665ull}}, {{2271555144546253669ull, 10222897251063209094ull, 12334052661388066621ull, 4320194793144135831ull}}, {{15254780020623572255ull, 8695153791128199635ull, 14626311941008623494ull, 2700121745715084894ull}}, {{14456789007352077415ull, 1645570202055473736ull, 9059517889406003560ull, 3375152182143856118ull}}, {{18070986259190096768ull, 2056962752569342170ull, 2101025324902728642ull, 4218940227679820148ull}}, {{15906052430421198384ull, 5897287738783226760ull, 10536512864918981209ull, 2636837642299887592ull}}, {{1435821464316946364ull, 11983295691906421355ull, 13170641081148726511ull, 3296047052874859490ull}}, {{15629834885678346667ull, 10367433596455638789ull, 7239929314581132331ull, 4120058816093574363ull}}, {{12074489812762660619ull, 4173802988571080291ull, 2219112812399513755ull, 2575036760058483977ull}}, {{10481426247525937870ull, 605567717286462460ull, 7385577033926780098ull, 3218795950073104971ull}}, {{13101782809407422337ull, 9980331683462853883ull, 4620285273981087218ull, 4023494937591381214ull}}, {{5882771246665945009ull, 10849393320591671581ull, 16722736351520343223ull, 2514684335994613258ull}}, {{11965150076759819165ull, 8950055632312201572ull, 11680048402545653221ull, 3143355419993266573ull}}, {{14956437595949773956ull, 15799255558817639869ull, 765002447899902814ull, 3929194274991583217ull}}, {{11653616506682302675ull, 5262848705833637014ull, 12007341576005909019ull, 2455746421869739510ull}}, {{5343648596498102535ull, 1966874863864658364ull, 5785804933152610466ull, 3069683027337174388ull}}, {{6679560745622628169ull, 11681965616685598763ull, 7232256166440763082ull, 3837103784171467985ull}}, {{1868882456800448654ull, 11912914528855887131ull, 16049375150093946686ull, 2398189865107167490ull}}, {{16171161126282724529ull, 5667771124215083105ull, 10838346900762657550ull, 2997737331383959363ull}}, {{6378893352571241950ull, 16308085942123629690ull, 8936247607525934033ull, 3747171664229949204ull}}, {{8598494363784414123ull, 3275024686186186700ull, 14808526791558484579ull, 2341982290143718252ull}}, {{10748117954730517653ull, 17928838913014897087ull, 63914415738554107ull, 2927477862679647816ull}}, {{8823461424985759162ull, 17799362622841233455ull, 79893019673192634ull, 3659347328349559770ull}}, {{6417640762804811049ull, 13025831241696766011ull, 9323238311446266601ull, 4574184160436949712ull}}, {{1705182467539312954ull, 1223615498419396901ull, 5827023944653916626ull, 2858865100273093570ull}}, {{6743164102851529096ull, 10752891409879021934ull, 16507151967672171590ull, 3573581375341366962ull}}, {{17652327165419187178ull, 4217742225494001609ull, 11410567922735438680ull, 4466976719176708703ull}}, {{4115175450745910130ull, 2636088890933751006ull, 14049133979350731031ull, 2791860449485442939ull}}, {{14367341350287163471ull, 17130169168949352469ull, 12949731455761025884ull, 3489825561856803674ull}}, {{4124118632576790626ull, 2965967387477138971ull, 6963792282846506548ull, 4362281952321004593ull}}, {{271731136146800190ull, 11077101654027987665ull, 15881585222847536352ull, 2726426220200627870ull}}, {{4951349938610888141ull, 13846377067534984581ull, 10628609491704644632ull, 3408032775250784838ull}}, {{10800873441690998080ull, 17307971334418730726ull, 4062389827776029982ull, 4260040969063481048ull}}, {{2138859882629485896ull, 6205796065584318800ull, 2538993642360018739ull, 2662525605664675655ull}}, {{2673574853286857370ull, 3145559063553010596ull, 17008800108232187136ull, 3328157007080844568ull}}, {{3341968566608571713ull, 3931948829441263245ull, 2814256061580682304ull, 4160196258851055711ull}}, {{4394573363344051273ull, 2457468018400789528ull, 8676439066129008296ull, 2600122661781909819ull}}, {{5493216704180064091ull, 3071835023000986910ull, 6233862814233872466ull, 3250153327227387274ull}}, {{16089892917079855921ull, 13063165815606009445ull, 17015700554647116390ull, 4062691659034234092ull}}, {{12362026082388603903ull, 3552792616326367999ull, 1411440809799671936ull, 2539182286896396308ull}}, {{10840846584558366974ull, 4440990770407959999ull, 1764301012249589920ull, 3173977858620495385ull}}, {{8939372212270570814ull, 5551238463009949999ull, 6817062283739375304ull, 3967472323275619231ull}}, {{12504636660310188615ull, 3469524039381218749ull, 11178192954978191421ull, 2479670202047262019ull}}, {{1795737770105572057ull, 8948591067653911341ull, 9361055175295351372ull, 3099587752559077524ull}}, {{6856358231059352975ull, 11185738834567389176ull, 11701318969119189215ull, 3874484690698846905ull}}, {{4285223894412095609ull, 13908615799245700091ull, 395795328058411403ull, 2421552931686779316ull}}, {{744843849587731607ull, 12774083730629737210ull, 494744160073014254ull, 3026941164608474145ull}}, {{10154426848839440317ull, 6744232626432395704ull, 5230116218518655722ull, 3783676455760592681ull}}, {{6346516780524650198ull, 8826831409947635219ull, 14798037682642629586ull, 2364797784850370425ull}}, {{3321459957228424844ull, 1810167225579768216ull, 4662489048021123271ull, 2955997231062963032ull}}, {{4151824946535531055ull, 16097767087256873982ull, 5828111310026404088ull, 3694996538828703790ull}}, {{16429948646866870621ull, 10061104429535546238ull, 17477627624048666267ull, 2309372836767939868ull}}, {{11314063771728812469ull, 7964694518492044894ull, 3400290456351281218ull, 2886716045959924836ull}}, {{4919207677806239778ull, 732496111260280310ull, 4250363070439101523ull, 3608395057449906045ull}}, {{15372381634112575530ull, 14750678194357514099ull, 9924639856476264807ull, 4510493821812382556ull}}, {{7301895512106665754ull, 16136702899114528168ull, 15426271947152441312ull, 2819058638632739097ull}}, {{9127369390133332193ull, 1724134550183608594ull, 5447781878658387929ull, 3523823298290923872ull}}, {{2185839700811889433ull, 6766854206156898647ull, 6809727348322984911ull, 4404779122863654840ull}}, {{8283678840648512752ull, 11146812906489143510ull, 4256079592701865569ull, 2752986951789784275ull}}, {{1131226513955865132ull, 98458077829265676ull, 708413472449944058ull, 3441233689737230344ull}}, {{1414033142444831414ull, 9346444634141357903ull, 885516840562430072ull, 4301542112171537930ull}}, {{7801299741669101490ull, 5841527896338348689ull, 5165134043778906699ull, 2688463820107211206ull}}, {{14363310695513764767ull, 2690223851995547957ull, 15679789591578409182ull, 3360579775134014007ull}}, {{4119080314110042246ull, 12586151851849210755ull, 14988050971045623573ull, 4200724718917517509ull}}, {{268582187105082452ull, 10172187916619450674ull, 11673374866117208685ull, 2625452949323448443ull}}, {{9559099770736128873ull, 17326920914201701246ull, 9980032564219122952ull, 3281816186654310554ull}}, {{2725502676565385283ull, 3211907069042574942ull, 3251668668419127883ull, 4102270233317888193ull}}, {{15538497228135529514ull, 18148342982647467002ull, 13561507963830424686ull, 2563918895823680120ull}}, {{10199749498314636084ull, 13462056691454557945ull, 16951884954788030858ull, 3204898619779600150ull}}, {{17361372891320683009ull, 7604198827463421623ull, 11966484156630262765ull, 4006123274724500188ull}}, {{17768387084716508737ull, 7058467276378332466ull, 16702424634748690036ull, 2503827046702812617ull}}, {{12987111819040860113ull, 8823084095472915583ull, 7042972738153698833ull, 3129783808378515772ull}}, {{11622203755373687237ull, 15640541137768532383ull, 8803715922692123541ull, 3912229760473144715ull}}, {{14181406374749636380ull, 12081181220319026691ull, 3196479442468883261ull, 2445143600295715447ull}}, {{13115071950009657570ull, 1266418470116619652ull, 17830657358368267789ull, 3056429500369644308ull}}, {{16393839937512071963ull, 6194709106073162469ull, 3841577624250783120ull, 3820536875462055386ull}}, {{12551992970158738929ull, 3871693191295726543ull, 7012672033584127354ull, 2387835547163784616ull}}, {{11078305194271035757ull, 14062988525974433987ull, 8765840041980159192ull, 2984794433954730770ull}}, {{9236195474411406792ull, 17578735657468042484ull, 1733928015620423182ull, 3730993042443413463ull}}, {{14995994208361905053ull, 6375023767490138648ull, 8001234037403846345ull, 2331870651527133414ull}}, {{298248686742829701ull, 12580465727790061215ull, 778170509900032123ull, 2914838314408916768ull}}, {{14207868913710700838ull, 11113896141310188614ull, 972713137375040154ull, 3643547893011145960ull}}, {{8536464105283600239ull, 4668998139782959960ull, 1215891421718800193ull, 4554434866263932450ull}}, {{5335290065802250149ull, 14447338883432819735ull, 5371618157001638024ull, 2846521791414957781ull}}, {{2057426563825424783ull, 18059173604291024669ull, 11326208714679435434ull, 3558152239268697226ull}}, {{7183469223209168882ull, 13350594968509005028ull, 4934388856494518485ull, 4447690299085871533ull}}, {{13713040301360506360ull, 10649964864531822094ull, 5389836044522768005ull, 2779806436928669708ull}}, {{7917928339845857141ull, 17924142099092165522ull, 6737295055653460006ull, 3474758046160837135ull}}, {{674038387952545619ull, 13181805587010431095ull, 3809932801139437104ull, 4343447557701046419ull}}, {{7338803020111422868ull, 8238628491881519434ull, 75364991498454238ull, 2714654723563154012ull}}, {{18396875811994054393ull, 1074913577997123484ull, 94206239373067798ull, 3393318404453942515ull}}, {{4549350691283016375ull, 10567014009351180164ull, 13952815854498498459ull, 4241648005567428143ull}}, {{12066716218906661042ull, 4298540746630793650ull, 15638038936702643393ull, 2651030003479642589ull}}, {{5860023236778550495ull, 9984861951715879967ull, 5712490615596140529ull, 3313787504349553237ull}}, {{2713343027545800214ull, 17092763458072237863ull, 11752299287922563565ull, 4142234380436941546ull}}, {{8613368419857206990ull, 12988820170508842616ull, 11956873073378990132ull, 2588896487773088466ull}}, {{10766710524821508738ull, 16236025213136053270ull, 5722719304868961857ull, 3236120609716360583ull}}, {{4235016119172110114ull, 6459973461137902876ull, 2541713112658814418ull, 4045150762145450729ull}}, {{11870257111337344629ull, 8649169431638577201ull, 13117785741480228771ull, 2528219226340906705ull}}, {{1002763333889517075ull, 6199775771120833598ull, 2562174121568122252ull, 3160274032926133382ull}}, {{10476826204216672151ull, 7749719713901041997ull, 12426089688814928623ull, 3950342541157666727ull}}, {{8853859386849114047ull, 11761103848829233104ull, 14683835083150412245ull, 2468964088223541704ull}}, {{11067324233561392558ull, 866321755754377668ull, 18354793853938015307ull, 3086205110279427130ull}}, {{13834155291951740698ull, 14917960249975135797ull, 13720120280567743325ull, 3857756387849283913ull}}, {{10952190066683531888ull, 11629568165448153825ull, 1657546147713757722ull, 2411097742405802446ull}}, {{18301923601781802764ull, 5313588169955416473ull, 11295304721496972961ull, 3013872178007253057ull}}, {{9042346446945089743ull, 11253671230871658496ull, 284072846589052489ull, 3767340222509066322ull}}, {{5651466529340681090ull, 116015491653704704ull, 4789231547545545710ull, 2354587639068166451ull}}, {{7064333161675851362ull, 9368391401421906688ull, 1374853416004544233ull, 2943234548835208064ull}}, {{8830416452094814202ull, 16322175270204771264ull, 1718566770005680291ull, 3679043186044010080ull}}, {{11038020565118517753ull, 15791033069328576176ull, 2148208462507100364ull, 4598803982555012600ull}}, {{6898762853199073596ull, 646023631475584302ull, 1342630289066937728ull, 2874252489096882875ull}}, {{17846825603353617802ull, 807529539344480377ull, 15513345916615835872ull, 3592815611371103593ull}}, {{8473473948909858541ull, 1009411924180600472ull, 5556624340487631128ull, 4491019514213879492ull}}, {{5295921218068661588ull, 630882452612875295ull, 12696262249659545263ull, 2806887196383674682ull}}, {{2008215504158439081ull, 14623661121048257831ull, 6646955775219655770ull, 3508608995479593353ull}}, {{16345327435480212563ull, 9056204364455546480ull, 12920380737451957617ull, 4385761244349491691ull}}, {{10215829647175132852ull, 17189342773853186310ull, 5769394951693779558ull, 2741100777718432307ull}}, {{3546415022114140257ull, 12263306430461707080ull, 2600057671189836544ull, 3426375972148040384ull}}, {{4433018777642675321ull, 15329133038077133850ull, 3250072088987295680ull, 4282969965185050480ull}}, {{7382322754454059980ull, 9580708148798208656ull, 2031295055617059800ull, 2676856228240656550ull}}, {{9227903443067574975ull, 11975885185997760820ull, 11762490856376100558ull, 3346070285300820687ull}}, {{11534879303834468718ull, 5746484445642425217ull, 10091427552042737794ull, 4182587856626025859ull}}, {{291770537255461093ull, 8203238796953903665ull, 4001299210813017169ull, 2614117410391266162ull}}, {{4976399189996714270ull, 14865734514619767485ull, 14224996050371047269ull, 3267646762989082702ull}}, {{10832185005923280742ull, 4747110087992545644ull, 8557873026109033279ull, 4084558453736353378ull}}, {{15993487665556826272ull, 9884472832636422883ull, 9960356659745533703ull, 2552849033585220861ull}}, {{15380173563518644936ull, 7743905022368140700ull, 17062131843109305033ull, 3191061291981526076ull}}, {{778472880688754553ull, 14291567296387563780ull, 2880920730177079675ull, 3988826614976907596ull}}, {{9709917587285247404ull, 6626386551028533410ull, 11023947493215450605ull, 2493016634360567247ull}}, {{2914024947251783447ull, 12894669207213054667ull, 9168248348091925352ull, 3116270792950709059ull}}, {{17477589239346893021ull, 16118336509016318333ull, 6848624416687518786ull, 3895338491188386324ull}}, {{13229336283805502090ull, 14685646336562586862ull, 13503762297284475049ull, 2434586556992741452ull}}, {{7313298317902101804ull, 4521999865421069866ull, 16879702871605593812ull, 3043233196240926815ull}}, {{18364994934232403063ull, 5652499831776337332ull, 16487942571079604361ull, 3804041495301158519ull}}, {{2254749797040476107ull, 15062027440928680593ull, 17222493134565834581ull, 2377525934563224074ull}}, {{7430123264727983037ull, 4992476245878687029ull, 12304744381352517419ull, 2971907418204030093ull}}, {{13899340099337366701ull, 1628909288920970882ull, 1545872421408483062ull, 3714884272755037617ull}}, {{13298773580513242092ull, 14853126360857770513ull, 12495385309448771673ull, 2321802670471898510ull}}, {{2788408920359388903ull, 4731349895790049430ull, 6395859599956188784ull, 2902253338089873138ull}}, {{12708883187304011937ull, 5914187369737561787ull, 17218196536800011788ull, 3627816672612341422ull}}, {{11274417965702627017ull, 7392734212171952234ull, 12299373634145238927ull, 4534770840765426778ull}}, {{11658197246991529790ull, 11537987910248552002ull, 12298794539768162233ull, 2834231775478391736ull}}, {{5349374521884636429ull, 587426832528526291ull, 15373493174710202792ull, 3542789719347989670ull}}, {{2075032133928407632ull, 734283540660657864ull, 9993494431532977682ull, 4428487149184987088ull}}, {{1296895083705254770ull, 5070613231340299069ull, 6245934019708111051ull, 2767804468240616930ull}}, {{6232804873058956367ull, 1726580520747985932ull, 17030789561489914622ull, 3459755585300771162ull}}, {{7791006091323695458ull, 11381597687789758223ull, 12065114915007617469ull, 4324694481625963953ull}}, {{11786907834718391518ull, 9419341564082292841ull, 623167794238679062ull, 2702934051016227471ull}}, {{898576738115825685ull, 2550804918248090244ull, 14614017798080512540ull, 3378667563770284338ull}}, {{1123220922644782106ull, 3188506147810112805ull, 9044150210745864867ull, 4223334454712855423ull}}, {{3007856085866682768ull, 18133717406877178167ull, 12570122909357247397ull, 2639584034195534639ull}}, {{17594878162615517172ull, 8832088703314308996ull, 11100967618269171343ull, 3299480042744418299ull}}, {{3546853629559844849ull, 6428424860715498342ull, 9264523504409076275ull, 4124350053430522874ull}}, {{16051841573757066743ull, 1711922528733492511ull, 10402013208683060576ull, 2577718783394076796ull}}, {{15453115948768945525ull, 2139903160916865639ull, 13002516510853825720ull, 3222148479242595995ull}}, {{14704708917533794002ull, 2674878951146082049ull, 11641459620139894246ull, 4027685599053244994ull}}, {{2272914045817539395ull, 15506857399748464993ull, 11887598281014821807ull, 2517303499408278121ull}}, {{7452828575699312148ull, 14771885731258193337ull, 1024439795986363547ull, 3146629374260347652ull}}, {{13927721738051528089ull, 13853171145645353767ull, 1280549744982954434ull, 3933286717825434565ull}}, {{15622355113923286912ull, 13269917984455734008ull, 3106186599828040473ull, 2458304198640896603ull}}, {{1081199818694557023ull, 2752339425287503799ull, 17717791305067214304ull, 3072880248301120753ull}}, {{15186557828650359991ull, 3440424281609379748ull, 8312181076051854168ull, 3841100310376400942ull}}, {{268226606051699187ull, 2150265176005862343ull, 583427154105020951ull, 2400687693985250589ull}}, {{14170341312846787695ull, 16522889525289491640ull, 5340969961058664092ull, 3000859617481563236ull}}, {{17712926641058484619ull, 2206867832902312934ull, 6676212451323330116ull, 3751074521851954045ull}}, {{6458893132234164983ull, 10602664432418721392ull, 6478475791290775274ull, 2344421576157471278ull}}, {{8073616415292706229ull, 4029958503668625932ull, 17321466775968244901ull, 2930526970196839097ull}}, {{10092020519115882786ull, 9649134148013170319ull, 7816775414678142414ull, 3663158712746048872ull}}, {{8003339630467465578ull, 2838045648161687091ull, 9770969268347678018ull, 4578948390932561090ull}}, {{2696244259828472034ull, 6385464548528442336ull, 10718541811144686665ull, 2861842744332850681ull}}, {{3370305324785590043ull, 12593516704087940824ull, 18009863282358246235ull, 3577303430416063351ull}}, {{4212881655981987553ull, 11130209861682538126ull, 17900643084520419890ull, 4471629288020079189ull}}, {{16468109090270905933ull, 11568067181978974232ull, 13493744937038956383ull, 2794768305012549493ull}}, {{2138392289129080800ull, 9848397959046329887ull, 3032123116016531767ull, 3493460381265686867ull}}, {{16508048416693514712ull, 7698811430380524454ull, 17625211950302828421ull, 4366825476582108583ull}}, {{5705844242006058791ull, 7117600153201521736ull, 17933286496580349619ull, 2729265922863817864ull}}, {{7132305302507573489ull, 4285314173074514266ull, 3969864047015885408ull, 3411582403579772331ull}}, {{18138753664989242669ull, 5356642716343142832ull, 350644040342468856ull, 4264478004474715414ull}}, {{11336721040618276668ull, 3347901697714464270ull, 14054210580496206747ull, 2665298752796697133ull}}, {{4947529263918070027ull, 18019935177425244050ull, 3732705170338094721ull, 3331623440995871417ull}}, {{15407783616752363342ull, 8689860916499391350ull, 9277567481350006306ull, 4164529301244839271ull}}, {{5018178742042839185ull, 10042849091239507498ull, 12716008703484835797ull, 2602830813278024544ull}}, {{15496095464408324789ull, 17165247382476772276ull, 15895010879356044746ull, 3253538516597530680ull}}, {{923375256800854370ull, 12233187191241189538ull, 1422019525485504317ull, 4066923145746913351ull}}, {{5188795553927921886ull, 9951585003739437413ull, 7806291231069522054ull, 2541826966091820844ull}}, {{11097680460837290261ull, 3216109217819520958ull, 9757864038836902568ull, 3177283707614776055ull}}, {{4648728539191837018ull, 4020136522274401198ull, 7585644030118740306ull, 3971604634518470069ull}}, {{16740513392277061848ull, 7124271344848888652ull, 7046870528037906643ull, 2482252896574043793ull}}, {{2478897666636775694ull, 4293653162633722912ull, 13420274178474771208ull, 3102816120717554741ull}}, {{3098622083295969618ull, 5367066453292153640ull, 2940284667811300298ull, 3878520150896943427ull}}, {{1936638802059981011ull, 7966102551734983929ull, 17978578981877920350ull, 2424075094310589641ull}}, {{7032484521002364168ull, 734256152813954103ull, 8638165672065236726ull, 3030093867888237052ull}}, {{4178919632825567306ull, 10141192227872218437ull, 10797707090081545907ull, 3787617334860296315ull}}, {{4917667779729673518ull, 4032402133206442571ull, 4442723922087272240ull, 2367260834287685197ull}}, {{1535398706234703994ull, 5040502666508053214ull, 10165090921036478204ull, 2959076042859606496ull}}, {{11142620419648155800ull, 6300628333135066517ull, 12706363651295597755ull, 3698845053574508120ull}}, {{9269980771493791327ull, 1632049698995722621ull, 7941477282059748597ull, 2311778158484067575ull}}, {{16199161982794627063ull, 6651748142172041180ull, 5315160584147297842ull, 2889722698105084469ull}}, {{1802208404783732213ull, 17538057214569827284ull, 11255636748611510206ull, 3612153372631355586ull}}, {{2252760505979665266ull, 12699199481357508297ull, 4846173898909611950ull, 4515191715789194483ull}}, {{12937190362305760551ull, 3325313657421054781ull, 723015677604813517ull, 2821994822368246552ull}}, {{2336429897600036977ull, 8768328090203706381ull, 903769597006016896ull, 3527493527960308190ull}}, {{7532223390427434125ull, 10960410112754632976ull, 10353084033112296928ull, 4409366909950385237ull}}, {{4707639619017146328ull, 6850256320471645610ull, 8776520529908879532ull, 2755854318718990773ull}}, {{15107921560626208718ull, 8562820400589557012ull, 15582336680813487319ull, 3444817898398738466ull}}, {{438157877073209282ull, 6091839482309558362ull, 10254548814162083341ull, 4306022372998423083ull}}, {{4885534691598143705ull, 6113242685657167928ull, 4103249999637608136ull, 2691263983124014427ull}}, {{6106918364497679631ull, 7641553357071459910ull, 517376481119622266ull, 3364079978905018034ull}}, {{16857019992476875347ull, 328569659484549079ull, 9870092638254303641ull, 4205099973631272542ull}}, {{17453166522939128948ull, 11734571083246312934ull, 1557121880481551871ull, 2628187483519545339ull}}, {{12593086116819135377ull, 10056527835630503264ull, 15781460405884103551ull, 3285234354399431673ull}}, {{15741357646023919221ull, 7958973776110741176ull, 5891767452072965727ull, 4106542942999289592ull}}, {{9838348528764949513ull, 11891887637710295091ull, 3682354657545603579ull, 2566589339374555995ull}}, {{7686249642528798988ull, 10253173528710480960ull, 18438001377214168186ull, 3208236674218194993ull}}, {{9607812053160998735ull, 3593094874033325392ull, 9212443666235546521ull, 4010295842772743742ull}}, {{6004882533225624209ull, 13774899342339298130ull, 1146091272969828671ull, 2506434901732964839ull}}, {{16729475203386806069ull, 12606938159496734758ull, 15267672146494449551ull, 3133043627166206048ull}}, {{11688471967378731779ull, 11146986680943530544ull, 637846109408510323ull, 3916304533957757561ull}}, {{7305294979611707362ull, 4661023666376012638ull, 11927868864448788712ull, 2447690333723598475ull}}, {{18354990761369410010ull, 5826279582970015797ull, 10298150062133597986ull, 3059612917154498094ull}}, {{9108680396429598801ull, 16506221515567295555ull, 3649315540812221674ull, 3824516146443122618ull}}, {{3387082238554805299ull, 14928074465656947626ull, 6892508231435026450ull, 2390322591526951636ull}}, {{13457224835048282431ull, 9436721045216408724ull, 8615635289293783063ull, 2987903239408689545ull}}, {{16821531043810353039ull, 7184215288093123001ull, 15381230130044616733ull, 3734879049260861931ull}}, {{3595927874740388793ull, 6795977564271895828ull, 7307425822064191506ull, 2334299405788038707ull}}, {{4494909843425485992ull, 17718343992194645593ull, 4522596259152851478ull, 2917874257235048384ull}}, {{10230323322709245393ull, 12924557953388531183ull, 5653245323941064348ull, 3647342821543810480ull}}, {{8176218134959168838ull, 16155697441735663979ull, 7066556654926330435ull, 4559178526929763100ull}}, {{2804293325135786572ull, 7791467891871096035ull, 13639969946183732330ull, 2849486579331101937ull}}, {{17340424711701896927ull, 515962827984094235ull, 3214904377447501701ull, 3561858224163877422ull}}, {{17063844871199983254ull, 5256639553407505698ull, 13242002508664152934ull, 4452322780204846777ull}}, {{15276589062927377438ull, 17120457776161854773ull, 1358722540274013727ull, 2782701737628029236ull}}, {{5260678273377058085ull, 16788886201774930563ull, 1698403175342517159ull, 3478377172035036545ull}}, {{1964161823293934703ull, 16374421733791275300ull, 6734689987605534353ull, 4347971465043795681ull}}, {{10450973176413484997ull, 3316484555978465206ull, 15738396288321928731ull, 2717482165652372300ull}}, {{3840344433662080438ull, 17980663750255245220ull, 1226251286692859297ull, 3396852707065465376ull}}, {{4800430542077600548ull, 8640771632536892813ull, 1532814108366074122ull, 4246065883831831720ull}}, {{5306112098012194295ull, 10012168288762945912ull, 958008817728796326ull, 2653791177394894825ull}}, {{6632640122515242868ull, 3291838324098906582ull, 5809197040588383312ull, 3317238971743618531ull}}, {{17514172189998829393ull, 4114797905123633227ull, 2649810282308091236ull, 4146548714679523164ull}}, {{8640514609535574419ull, 11795120727557046575ull, 10879503463297332830ull, 2591592946674701977ull}}, {{6188957243492080119ull, 5520528872591532411ull, 18211065347549053942ull, 3239491183343377471ull}}, {{3124510535937712245ull, 16124033127594191322ull, 18152145666008929523ull, 4049363979179221839ull}}, {{6564505103388458057ull, 7771677695532675624ull, 18262620068896662808ull, 2530852486987013649ull}}, {{8205631379235572572ull, 9714597119415844530ull, 8993217030838664798ull, 3163565608733767062ull}}, {{1033667187189689907ull, 2919874362415029855ull, 2018149251693555190ull, 3954457010917208828ull}}, {{7563571019634638048ull, 15659979531791557371ull, 10484715319163247801ull, 2471535631823255517ull}}, {{4842777756115909656ull, 5739916359457283002ull, 17717580167381447656ull, 3089419539779069396ull}}, {{15276844231999662877ull, 7174895449321603752ull, 3700231135517257954ull, 3861774424723836746ull}}, {{9548027644999789299ull, 9095995674253390249ull, 6924330478125674125ull, 2413609015452397966ull}}, {{16546720574677124527ull, 15981680611244125715ull, 17878785134511868464ull, 3017011269315497457ull}}, {{16071714699919017755ull, 1530356690345605528ull, 8513423362857671869ull, 3771264086644371822ull}}, {{10044821687449386097ull, 3262315940679697407ull, 709203583358657014ull, 2357040054152732389ull}}, {{7944341090884344717ull, 13301266962704397567ull, 5498190497625709171ull, 2946300067690915486ull}}, {{5318740345178042992ull, 12014897684953109055ull, 16096110158886912272ull, 3682875084613644357ull}}, {{2036739413045165836ull, 15018622106191386319ull, 6285079643326476628ull, 4603593855767055447ull}}, {{8190491160794310504ull, 163266779514840641ull, 10845703804720129749ull, 2877246159854409654ull}}, {{14849799969420276033ull, 4815769492820938705ull, 4333757719045386378ull, 3596557699818012068ull}}, {{4727191906493181330ull, 15243083902880949190ull, 5417197148806732972ull, 4495697124772515085ull}}, {{16789552996840402043ull, 303555402445817435ull, 5691591227217902060ull, 2809810702982821928ull}}, {{16375255227623114650ull, 379444253057271794ull, 7114489034022377575ull, 3512263378728527410ull}}, {{11245696997674117504ull, 14309363371603753455ull, 18116483329382747776ull, 4390329223410659262ull}}, {{13946089651187405296ull, 8943352107252345909ull, 6711116062436829456ull, 2743955764631662039ull}}, {{3597554008702092908ull, 11179190134065432387ull, 3777209059618648916ull, 3429944705789577549ull}}, {{18332000566159779847ull, 13973987667581790483ull, 9333197342950699049ull, 4287430882236971936ull}}, {{9151657344636168453ull, 1816213264597537196ull, 5833248339344186906ull, 2679644301398107460ull}}, {{11439571680795210566ull, 11493638617601697303ull, 7291560424180233632ull, 3349555376747634325ull}}, {{9687778582566625303ull, 14367048272002121629ull, 13726136548652679944ull, 4186944220934542906ull}}, {{8360704623317834767ull, 8979405170001326018ull, 13190521361335312869ull, 2616840138084089316ull}}, {{1227508742292517650ull, 15835942480929045427ull, 16488151701669141086ull, 3271050172605111645ull}}, {{15369443983147810775ull, 10571556064306530975ull, 6775131571804262646ull, 4088812715756389557ull}}, {{16523431517108463590ull, 1995536521764193955ull, 6540300241591358106ull, 2555507947347743473ull}}, {{16042603377958191584ull, 11717792689060018252ull, 12787061320416585536ull, 3194384934184679341ull}}, {{1606510148738187864ull, 14647240861325022816ull, 2148768595238568208ull, 3992981167730849177ull}}, {{1004068842961367415ull, 9154525538328139260ull, 12872195418092574890ull, 2495613229831780735ull}}, {{1255086053701709269ull, 2219784886055398267ull, 11478558254188330709ull, 3119516537289725919ull}}, {{15403915622409300298ull, 7386417125996635737ull, 9736511799308025482ull, 3899395671612157399ull}}, {{2709918236364730830ull, 9228196722175285240ull, 13002848902208597782ull, 2437122294757598374ull}}, {{3387397795455913538ull, 2311873865864330742ull, 7030189090905971420ull, 3046402868446997968ull}}, {{13457619281174667730ull, 2889842332330413427ull, 8787736363632464275ull, 3808003585558747460ull}}, {{6105169041520473379ull, 17947052522202366056ull, 14715707264125065979ull, 2380002240974217162ull}}, {{7631461301900591724ull, 17822129634325569666ull, 9171262043301556666ull, 2975002801217771453ull}}, {{315954590520963847ull, 13054290006052186275ull, 16075763572554333737ull, 3718753501522214316ull}}, {{16338372683571460069ull, 1241402226141534565ull, 823980195991682778ull, 2324220938451383948ull}}, {{6587907799182161374ull, 10775124819531694015ull, 1029975244989603472ull, 2905276173064229935ull}}, {{3623198730550313813ull, 13468906024414617519ull, 15122527111519168052ull, 3631595216330287418ull}}, {{18364056468470055978ull, 16836132530518271898ull, 9679786852544184257ull, 4539494020412859273ull}}, {{16089221311221172890ull, 3605053803932838080ull, 17579081828908584921ull, 2837183762758037045ull}}, {{1664782565316914497ull, 9118003273343435505ull, 8138794230853567439ull, 3546479703447546307ull}}, {{6692664225073531025ull, 6785818073251906477ull, 5561806770139571395ull, 4433099629309432884ull}}, {{6488758149884650843ull, 1935293286568747596ull, 12699501268192007930ull, 2770687268318395552ull}}, {{8110947687355813553ull, 11642488645065710303ull, 15874376585240009912ull, 3463359085397994440ull}}, {{5526998590767379037ull, 14553110806332137879ull, 1396226657840460774ull, 4329198856747493051ull}}, {{10371903146870693755ull, 4484008235530198270ull, 17013542725646145648ull, 2705749285467183156ull}}, {{3741506896733591385ull, 5605010294412747838ull, 2820184333348130444ull, 3382186606833978946ull}}, {{13900255657771765039ull, 7006262868015934797ull, 12748602453539938863ull, 4227733258542473682ull}}, {{10993502795321047102ull, 11296443320151041104ull, 12579562551889849693ull, 2642333286589046051ull}}, {{13741878494151308877ull, 285496094906637668ull, 11112767171434924213ull, 3302916608236307564ull}}, {{17177348117689136096ull, 4968556137060684989ull, 13890958964293655266ull, 4128645760295384455ull}}, {{13041685582769404012ull, 7717033604090316022ull, 15599378380324616397ull, 2580403600184615284ull}}, {{7078734941606979207ull, 14257978023540282932ull, 1052478901696218880ull, 3225504500230769106ull}}, {{8848418677008724009ull, 17822472529425353665ull, 10538970663975049408ull, 4031880625288461382ull}}, {{17059476719198922266ull, 11139045330890846040ull, 1975170646557017976ull, 2519925390805288364ull}}, {{2877601825289101216ull, 13923806663613557551ull, 2468963308196272470ull, 3149906738506610455ull}}, {{17432060336893540232ull, 8181386292662171130ull, 16921262190527504300ull, 3937383423133263068ull}}, {{15506723728985850549ull, 14336738469768632764ull, 1352416832224914379ull, 2460864639458289418ull}}, {{936660587522761570ull, 13309237068783403052ull, 10913893077135918782ull, 3076080799322861772ull}}, {{1170825734403451963ull, 7413174299124478007ull, 13642366346419898478ull, 3845100999153577215ull}}, {{7649295111643239333ull, 21547918525410850ull, 15444007994153518405ull, 2403188124470985759ull}}, {{338246852699273358ull, 4638620916584151467ull, 14693323974264510102ull, 3003985155588732199ull}}, {{14257866621156255409ull, 15021648182584965141ull, 13754968949403249723ull, 3754981444485915249ull}}, {{11217009647436353583ull, 7082687104901909261ull, 1679326565735949221ull, 2346863402803697031ull}}, {{186204004013278267ull, 13465044899554774481ull, 15934216262452100238ull, 2933579253504621288ull}}, {{4844441023443985737ull, 7607934087588692293ull, 1471026254355573682ull, 3666974066880776611ull}}, {{10667237297732370076ull, 286545572631089558ull, 15673840873226630815ull, 4583717583600970763ull}}, {{2055337292655343393ull, 7096620010535512830ull, 7490307536552950307ull, 2864823489750606727ull}}, {{11792543652673955050ull, 4259088994742003133ull, 4751198402263799980ull, 3581029362188258409ull}}, {{905621510560280100ull, 5323861243427503917ull, 10550684021257137879ull, 4476286702735323011ull}}, {{2871856453313869015ull, 10244942304783271804ull, 4288334504072017222ull, 2797679189209576882ull}}, {{3589820566642336268ull, 3582805844124313947ull, 14583790166944797336ull, 3497098986511971102ull}}, {{18322333763585084047ull, 4478507305155392433ull, 9006365671826220862ull, 4371373733139963878ull}}, {{4533929574599595674ull, 16634125121004283983ull, 1017292526464000134ull, 2732108583212477424ull}}, {{1055725949822106688ull, 11569284364400579171ull, 1271615658080000168ull, 3415135729015596780ull}}, {{15154715492559797072ull, 14461605455500723963ull, 1589519572600000210ull, 4268919661269495975ull}}, {{7165854173636179218ull, 13650189428115340381ull, 7910978760516081987ull, 2668074788293434984ull}}, {{13569003735472611926ull, 12451050766716787572ull, 9888723450645102484ull, 3335093485366793730ull}}, {{16961254669340764908ull, 15563813458395984465ull, 3137532276451602297ull, 4168866856708492163ull}}, {{3683255140696896212ull, 2809854383856408435ull, 18101858737278109100ull, 2605541785442807601ull}}, {{18439126981153283976ull, 3512317979820510543ull, 8792265366315472663ull, 3256927231803509502ull}}, {{18437222708014217066ull, 18225455530057801891ull, 1766959671039565020ull, 4071159039754386878ull}}, {{9217421183295191715ull, 2167537669431350374ull, 14939407849681891850ull, 2544474399846491798ull}}, {{2298404442264213835ull, 11932794123643963776ull, 9450887775247589004ull, 3180592999808114748ull}}, {{2873005552830267294ull, 14915992654554954720ull, 11813609719059486255ull, 3975741249760143435ull}}, {{1795628470518917059ull, 16240024436737928556ull, 5077663065198484957ull, 2484838281100089647ull}}, {{2244535588148646323ull, 6464972490640246983ull, 1735392813070718293ull, 3106047851375112059ull}}, {{16640727540467971616ull, 12692901631727696632ull, 16004299071620561578ull, 3882559814218890073ull}}, {{10400454712792482260ull, 12544749538257198299ull, 3085157892121769130ull, 2426599883886806296ull}}, {{8388882372563214921ull, 6457564885966722066ull, 3856447365152211413ull, 3033249854858507870ull}}, {{1262730928849242843ull, 12683642125885790487ull, 14043931243295040074ull, 3791562318573134837ull}}, {{7706735858171858633ull, 12538962347106006958ull, 11083300036273093998ull, 2369726449108209273ull}}, {{410047785860047484ull, 6450330897027732890ull, 19066990059203786ull, 2962158061385261592ull}}, {{9735931769179835162ull, 17286285658139441920ull, 23833737574004732ull, 3702697576731576990ull}}, {{6084957355737396977ull, 1580556499482375392ull, 13849954141265916670ull, 2314185985457235618ull}}, {{7606196694671746221ull, 11199067661207745048ull, 8089070639727620029ull, 2892732481821544523ull}}, {{9507745868339682776ull, 163776521227517598ull, 5499652281232137133ull, 3615915602276930654ull}}, {{2661310298569827661ull, 4816406669961784902ull, 16097937388394947224ull, 4519894502846163317ull}}, {{15498376991888306001ull, 3010254168726115563ull, 12367053876960535967ull, 2824934064278852073ull}}, {{14761285221432994597ull, 17597875766189808166ull, 1623759290918506246ull, 3531167580348565092ull}}, {{9228234489936467438ull, 12773972670882484400ull, 2029699113648132808ull, 4413959475435706365ull}}, {{5767646556210292149ull, 7983732919301552750ull, 3574404955243776957ull, 2758724672147316478ull}}, {{16432930232117640994ull, 14591352167554328841ull, 13691378230909497004ull, 3448405840184145597ull}}, {{6706104734864887530ull, 18239190209442911052ull, 3279164733354707543ull, 4310507300230181997ull}}, {{13414687496145330515ull, 18317022908542901263ull, 4355320967560386166ull, 2694067062643863748ull}}, {{12156673351754275239ull, 13672906598823850771ull, 5444151209450482708ull, 3367583828304829685ull}}, {{10584155671265456145ull, 17091133248529813464ull, 11416875030240491289ull, 4209479785381037106ull}}, {{6615097294540910091ull, 3764429252690051559ull, 11747232912327694960ull, 2630924865863148191ull}}, {{3657185599748749709ull, 4705536565862564449ull, 10072355121982230796ull, 3288656082328935239ull}}, {{9183168018113325040ull, 5881920707328205561ull, 7978757884050400591ull, 4110820102911169049ull}}, {{17268695057389297910ull, 10593729469721210331ull, 16515938723599970129ull, 2569262564319480655ull}}, {{16974182803309234484ull, 17853847855578900818ull, 16033237386072574757ull, 3211578205399350819ull}}, {{11994356467281767297ull, 8482251764191462311ull, 15429860714163330543ull, 4014472756749188524ull}}, {{14414001819692186417ull, 12218936380260745800ull, 420290909497305781ull, 2509045472968242828ull}}, {{18017502274615233021ull, 1438612420043768538ull, 525363636871632227ull, 3136306841210303535ull}}, {{13298505806414265468ull, 15633323580336874385ull, 14491762601371703995ull, 3920383551512879418ull}}, {{1394037101367834061ull, 7464984228496852539ull, 13669037644284702901ull, 2450239719695549636ull}}, {{15577604431991956289ull, 13942916304048453577ull, 17086297055355878626ull, 3062799649619437045ull}}, {{5636947484707781649ull, 8205273343205791164ull, 7522813263912684571ull, 3828499562024296307ull}}, {{12746464214797139339ull, 2822452830289925525ull, 2395915280731733905ull, 2392812226265185192ull}}, {{2098022213214260461ull, 8139752056289794811ull, 2994894100914667381ull, 2991015282831481490ull}}, {{16457585821799989288ull, 14786376088789631417ull, 12966989662998110034ull, 3738769103539351862ull}}, {{3368462110983911449ull, 13853171073920907540ull, 3492682520946430867ull, 2336730689712094914ull}}, {{4210577638729889312ull, 12704777823973746521ull, 13589225188037814392ull, 2920913362140118642ull}}, {{9874908066839749543ull, 15880972279967183151ull, 7763159448192492182ull, 3651141702675148303ull}}, {{7731949065122299025ull, 10627843313104203131ull, 5092263291813227324ull, 4563927128343935379ull}}, {{2526625156487742939ull, 15865774107544902765ull, 876821548169573125ull, 2852454455214959612ull}}, {{7769967464037066578ull, 5997159579148964744ull, 1096026935211966407ull, 3565568069018699515ull}}, {{9712459330046333222ull, 2884763455508818026ull, 15205091724297121721ull, 4456960086273374393ull}}, {{10681973099706346168ull, 13332192205761481026ull, 2585653300044619219ull, 2785600053920858996ull}}, {{4129094337778156902ull, 12053554238774463379ull, 3232066625055774024ull, 3482000067401073745ull}}, {{549681903795308223ull, 15066942798468079224ull, 8651769299747105434ull, 4352500084251342181ull}}, {{343551189872067640ull, 14028525267469937419ull, 7713198821555634848ull, 2720312552657088863ull}}, {{14264497042622248261ull, 17535656584337421773ull, 5029812508517155656ull, 3400390690821361079ull}}, {{3995563247995646614ull, 3472826656712225601ull, 1675579617219056667ull, 4250488363526701349ull}}, {{14026442076065748894ull, 18311417724940998664ull, 3353080269975604368ull, 2656555227204188343ull}}, {{17533052595082186118ull, 4442528082466696714ull, 18026408392751669173ull, 3320694034005235428ull}}, {{12692943706997956839ull, 10164846121510758797ull, 4086266417230034850ull, 4150867542506544286ull}}, {{10238932826087416977ull, 10964714844371612152ull, 16388974566050935493ull, 2594292214066590178ull}}, {{12798666032609271221ull, 18317579573891903094ull, 11262846170708893558ull, 3242865267583237723ull}}, {{6774960503906813218ull, 13673602430510103060ull, 9466871694958729044ull, 4053581584479047154ull}}, {{13457722351796534069ull, 17769373555923590220ull, 10528480827776593556ull, 2533488490299404471ull}}, {{16822152939745667586ull, 3764972871194936159ull, 8548915016293354042ull, 3166860612874255589ull}}, {{16416005156254696579ull, 13929588125848446007ull, 15297829788794080456ull, 3958575766092819486ull}}, {{17177532250300267218ull, 8705992578655278754ull, 4949457599568912381ull, 2474109853808012179ull}}, {{12248543276020558214ull, 15494176741746486347ull, 1575135981033752572ull, 3092637317260015224ull}}, {{10698993076598309864ull, 920976853473556318ull, 1968919976292190716ull, 3865796646575019030ull}}, {{2075184654446555761ull, 9798982570275748507ull, 15065633040464782909ull, 2416122904109386893ull}}, {{16429038873340358413ull, 16860414231272073537ull, 4996983245298814924ull, 3020153630136733617ull}}, {{6701240536393284304ull, 2628773715380540306ull, 10857915075050906560ull, 3775192037670917021ull}}, {{8799961353673190594ull, 1642983572112837691ull, 9092039931120510552ull, 2359495023544323138ull}}, {{6388265673664100339ull, 2053729465141047114ull, 2141677877045862382ull, 2949368779430403923ull}}, {{17208704128934901231ull, 11790533868281084700ull, 16512155401589491689ull, 3686710974288004903ull}}, {{3064136087459074923ull, 903109280069192164ull, 16028508233559476708ull, 4608388717860006129ull}}, {{11138457091516697635ull, 9787815336898020910ull, 3100288618333591086ull, 2880242948662503831ull}}, {{4699699327541096236ull, 3011397134267750330ull, 17710418828199152570ull, 3600303685828129788ull}}, {{15097996196281146103ull, 12987618454689463720ull, 3691279461539389096ull, 4500379607285162236ull}}, {{9436247622675716314ull, 8117261534180914825ull, 11530421700316893993ull, 2812737254553226397ull}}, {{16406995546772033297ull, 14758262936153531435ull, 577969070113953779ull, 3515921568191532997ull}}, {{15897058415037653717ull, 13836142651764526390ull, 5334147356069830128ull, 4394901960239416246ull}}, {{5323975490971145669ull, 8647589157352828994ull, 17168900152825807542ull, 2746813725149635153ull}}, {{15878341400568707894ull, 1586114409836260434ull, 7626067135750095716ull, 3433517156437043942ull}}, {{10624554713856109060ull, 1982643012295325543ull, 309211882832843837ull, 4291896445546304928ull}}, {{13557875723801150019ull, 3544994891898272416ull, 193257426770527398ull, 2682435278466440580ull}}, {{16947344654751437523ull, 13654615651727616328ull, 241571783463159247ull, 3353044098083050725ull}}, {{2737436744729745288ull, 12456583546232132507ull, 4913650747756336963ull, 4191305122603813406ull}}, {{17851799029951948469ull, 5479521707181388864ull, 16906089772629874314ull, 2619565701627383378ull}}, {{3868004713730383970ull, 16072774170831511889ull, 11909240178932567084ull, 3274457127034229223ull}}, {{9446691910590367867ull, 1644223639829838245ull, 10274864205238320952ull, 4093071408792786529ull}}, {{8210025453332673869ull, 1027639774893648903ull, 17951005174342420355ull, 2558169630495491580ull}}, {{5650845798238454432ull, 15119607773899224841ull, 3992012394218473827ull, 3197712038119364476ull}}, {{11675243266225455944ull, 14287823698946643147ull, 4990015492773092284ull, 3997140047649205595ull}}, {{4991184032177216013ull, 18153261848696427775ull, 812916673769488725ull, 2498212529780753497ull}}, {{1627294021794132112ull, 8856519255588371007ull, 5627831860639248811ull, 3122765662225941871ull}}, {{15869175582524828852ull, 6458963051058075854ull, 2423103807371673110ull, 3903457077782427339ull}}, {{5306548720650630129ull, 17871909962193461121ull, 17655340944103153357ull, 2439660673614017086ull}}, {{11244871919240675565ull, 8504829397459662689ull, 12845804143274165889ull, 3049575842017521358ull}}, {{221031843768680744ull, 15242722765251966266ull, 6833883142237931553ull, 3811969802521901698ull}}, {{4749830920782813369ull, 2609172700641397060ull, 8882862982326095125ull, 2382481126576188561ull}}, {{5937288650978516711ull, 7873151894229134229ull, 15715264746335006810ull, 2978101408220235701ull}}, {{12033296832150533793ull, 618067830931641978ull, 5809022877636594801ull, 3722626760275294627ull}}, {{12132496538521471525ull, 11915507440400745996ull, 1324796289309177798ull, 2326641725172059142ull}}, {{15165620673151839406ull, 5671012263646156687ull, 10879367398491248056ull, 2908302156465073927ull}}, {{14345339823012411353ull, 7088765329557695859ull, 8987523229686672166ull, 3635377695581342409ull}}, {{13319988760338126287ull, 18084328698801895632ull, 15846090055535728111ull, 4544222119476678011ull}}, {{8324992975211328930ull, 18220234464392266626ull, 7597963275496136117ull, 2840138824672923757ull}}, {{1182869182159385354ull, 8940235025208169571ull, 14109140112797558051ull, 3550173530841154696ull}}, {{15313644532981395405ull, 6563607763082824059ull, 17636425140996947564ull, 4437716913551443370ull}}, {{7265184823899678176ull, 13325626888781540845ull, 15634451731550480131ull, 2773573070969652106ull}}, {{13693167048301985624ull, 12045347592549538152ull, 10319692627583324356ull, 3466966338712065133ull}}, {{17116458810377482030ull, 15056684490686922690ull, 17511301802906543349ull, 4333707923390081416ull}}, {{15309472774913314173ull, 11716270815893020633ull, 10944563626816589593ull, 2708567452118800885ull}}, {{5301782913359479004ull, 810280464584112080ull, 18292390551948124896ull, 3385709315148501106ull}}, {{6627228641699348755ull, 1012850580730140100ull, 13642116153080380312ull, 4232136643935626383ull}}, {{13365389937916868780ull, 633031612956337562ull, 15443851623316319551ull, 2645085402459766489ull}}, {{7483365385541310167ull, 14626347571477585665ull, 5469756473863235726ull, 3306356753074708112ull}}, {{13965892750354025612ull, 9059562427492206273ull, 6837195592329044658ull, 4132945941343385140ull}}, {{1811153941330184152ull, 10273912535610016825ull, 13496619282060428719ull, 2583091213339615712ull}}, {{6875628445090118094ull, 8230704651085133127ull, 16870774102575535899ull, 3228864016674519640ull}}, {{3982849537935259713ull, 5676694795429028505ull, 2641723554509868258ull, 4036080020843149551ull}}, {{14018496007278007081ull, 8159620265570530719ull, 8568606249209749517ull, 2522550013026968469ull}}, {{12911433990670120947ull, 14811211350390551303ull, 15322443829939574800ull, 3153187516283710586ull}}, {{11527606469910263279ull, 67270114278637513ull, 9929682750569692693ull, 3941484395354638233ull}}, {{287225016052832694ull, 2347886830637842398ull, 17735266765174527693ull, 2463427747096648895ull}}, {{9582403306920816675ull, 7546544556724690901ull, 17557397438040771712ull, 3079284683870811119ull}}, {{16589690152078408748ull, 9433180695905863626ull, 17335060779123576736ull, 3849105854838513899ull}}, {{14980242363476393372ull, 5895737934941164766ull, 8528569977738541508ull, 2405691159274071187ull}}, {{9501930917490715906ull, 7369672418676455958ull, 6049026453745788981ull, 3007113949092588984ull}}, {{2654041610008619075ull, 13823776541772957852ull, 7561283067182236226ull, 3758892436365736230ull}}, {{10882148043110162730ull, 13251546357035486561ull, 114115898561509737ull, 2349307772728585144ull}}, {{18214371072315091316ull, 2729374891012194489ull, 142644873201887172ull, 2936634715910731430ull}}, {{8932905785111700433ull, 3411718613765243112ull, 9401678128357134773ull, 3670793394888414287ull}}, {{11166132231389625542ull, 8876334285633941794ull, 7140411642019030562ull, 4588491743610517859ull}}, {{11590518663045903868ull, 10159394946948601525ull, 2156914267048200149ull, 2867807339756573662ull}}, {{653090273525216122ull, 17310929702113139811ull, 11919514870665025994ull, 3584759174695717077ull}}, {{14651420897188683865ull, 12415290090786648955ull, 1064335533049118781ull, 4480948968369646347ull}}, {{6851295051529233464ull, 10065399315955349549ull, 16806110772651556902ull, 2800593105231028966ull}}, {{13175804832838929734ull, 3358377108089411128ull, 11784266428959670320ull, 3500741381538786208ull}}, {{16469756041048662167ull, 4197971385111763910ull, 14730333036199587900ull, 4375926726923482760ull}}, {{5681911507228025950ull, 11847104152549628252ull, 9206458147624742437ull, 2734954204327176725ull}}, {{7102389384035032438ull, 973822135404871603ull, 16119758702958315951ull, 3418692755408970906ull}}, {{4266300711616402643ull, 15052335724538253216ull, 10926326341843119130ull, 4273365944261213633ull}}, {{2666437944760251652ull, 14019395846263796164ull, 18358169009720419216ull, 2670853715163258520ull}}, {{3333047430950314565ull, 17524244807829745205ull, 4500967188440972404ull, 3338567143954073151ull}}, {{8777995307115281110ull, 3458561936077629890ull, 1014522967123827602ull, 4173208929942591439ull}}, {{10097933085374438598ull, 6773287228475906585ull, 7551605882093474107ull, 2608255581214119649ull}}, {{17234102375145436152ull, 3854923017167495327ull, 14051193371044230538ull, 3260319476517649561ull}}, {{16930941950504407285ull, 14042025808314144967ull, 3728933658523124460ull, 4075399345647061952ull}}, {{17499367746706336410ull, 17999638167051116412ull, 2330583536576952787ull, 2547124591029413720ull}}, {{3427465609673368896ull, 17887861690386507612ull, 2913229420721190984ull, 3183905738786767150ull}}, {{4284332012091711120ull, 3913083039273582899ull, 12864908812756264539ull, 3979882173483458937ull}}, {{371864498343625498ull, 139833890332295360ull, 1123038980331583481ull, 2487426358427161836ull}}, {{464830622929531872ull, 4786478381342757104ull, 1403798725414479351ull, 3109282948033952295ull}}, {{581038278661914840ull, 1371411958251058476ull, 15589806462050262901ull, 3886603685042440368ull}}, {{9586520961018472583ull, 3162975483120605499ull, 9743629038781414313ull, 2429127303151525230ull}}, {{7371465182845702825ull, 8565405372328144778ull, 2956164261621992083ull, 3036409128939406538ull}}, {{18437703515411904339ull, 6095070696982793068ull, 12918577363882265912ull, 3795511411174258172ull}}, {{2300192660277664404ull, 3809419185614245668ull, 17297482889281192003ull, 2372194631983911357ull}}, {{2875240825347080505ull, 150087963590419181ull, 7786795556319326292ull, 2965243289979889197ull}}, {{8205737050111238535ull, 187609954488023976ull, 14345180463826545769ull, 3706554112474861496ull}}, {{5128585656319524085ull, 11646471267623484745ull, 8965737789891591105ull, 2316596320296788435ull}}, {{11022418088826793010ull, 723031029247192219ull, 6595486218937100978ull, 2895745400370985544ull}}, {{9166336592606103358ull, 10127160823413766082ull, 8244357773671376222ull, 3619681750463731930ull}}, {{2234548703902853390ull, 3435578992412431795ull, 1082075180234444470ull, 4524602188079664913ull}}, {{17537494004435141033ull, 15982294925539933583ull, 12205512033714997553ull, 2827876367549790570ull}}, {{17310181487116538387ull, 6142810601642753267ull, 6033518005288971134ull, 3534845459437238213ull}}, {{17026040840468285079ull, 16901885288908217392ull, 12153583525038601821ull, 4418556824296547766ull}}, {{10641275525292678175ull, 12869521314781329822ull, 2984303684721738234ull, 2761598015185342354ull}}, {{4078222369761071910ull, 6863529606621886470ull, 12953751642756948601ull, 3451997518981677942ull}}, {{14321149999056115696ull, 13191098026704745991ull, 6968817516591409943ull, 4314996898727097428ull}}, {{15868247777051154166ull, 15161965294331548100ull, 13578882984724407022ull, 2696873061704435892ull}}, {{1388565647604391091ull, 9729084581059659318ull, 16973603730905508778ull, 3371091327130544865ull}}, {{10959079096360264672ull, 2937983689469798339ull, 7381946608349722261ull, 4213864158913181082ull}}, {{4543581426011471468ull, 4142082815132317914ull, 9225402648645964317ull, 2633665099320738176ull}}, {{14902848819369115143ull, 9789289537342785296ull, 11531753310807455396ull, 3292081374150922720ull}}, {{181816950501842313ull, 12236611921678481621ull, 14414691638509319245ull, 4115101717688653400ull}}, {{2419478603277345398ull, 9953725460262744965ull, 9009182274068324528ull, 2571938573555408375ull}}, {{7636034272524069651ull, 12442156825328431206ull, 6649791824158017756ull, 3214923216944260469ull}}, {{321670803800311256ull, 15552696031660539008ull, 12923925798624910099ull, 4018654021180325586ull}}, {{201044252375194535ull, 7414592010574142928ull, 12689139642567956716ull, 2511658763237703491ull}}, {{251305315468993169ull, 9268240013217678660ull, 11249738534782557991ull, 3139573454047129364ull}}, {{314131644336241461ull, 6973613998094710421ull, 14062173168478197489ull, 3924466817558911705ull}}, {{2502175286923844865ull, 15887723794877663773ull, 1871329202657791574ull, 2452791760974319816ull}}, {{7739405127082193985ull, 10636282706742303908ull, 2339161503322239468ull, 3065989701217899770ull}}, {{9674256408852742481ull, 13295353383427879885ull, 12147323916007575143ull, 3832487126522374712ull}}, {{8352253264746658003ull, 15227124892283506784ull, 7592077447504734464ull, 2395304454076484195ull}}, {{10440316580933322504ull, 587162041644831864ull, 4878410790953530177ull, 2994130567595605244ull}}, {{13050395726166653129ull, 5345638570483427734ull, 6098013488691912721ull, 3742663209494506555ull}}, {{3544811310426770302ull, 14870239152620612094ull, 1505415421218751498ull, 2339164505934066597ull}}, {{13654386174888238686ull, 9364426903920989309ull, 6493455294950827277ull, 2923955632417583246ull}}, {{3232924663328134645ull, 16317219648328624541ull, 17340191155543309904ull, 3654944540521979057ull}}, {{8652841847587556210ull, 1949780486701229060ull, 7840180889146973669ull, 4568680675652473822ull}}, {{14631398191596998439ull, 3524455813401962114ull, 288427037289470639ull, 2855425422282796139ull}}, {{9065875702641472241ull, 18240627822034616355ull, 14195591851894002010ull, 3569281777853495173ull}}, {{6720658609874452397ull, 13577412740688494636ull, 3909431759585338801ull, 4461602222316868967ull}}, {{13423783668026308556ull, 1568353935289227291ull, 9360923877381918607ull, 2788501388948043104ull}}, {{12168043566605497791ull, 15795500474393697826ull, 11701154846727398258ull, 3485626736185053880ull}}, {{5986682421402096431ull, 10521003556137346475ull, 14626443558409247823ull, 4357033420231317350ull}}, {{1435833504162616318ull, 13493156250226923403ull, 4529841205578391985ull, 2723145887644573344ull}}, {{15629849935485434109ull, 3031387257501490541ull, 5662301506972989982ull, 3403932359555716680ull}}, {{5702254364074628924ull, 13012606108731638985ull, 7077876883716237477ull, 4254915449444645850ull}}, {{15093124023615112838ull, 10438721827170968317ull, 9035359070750036327ull, 2659322155902903656ull}}, {{5031346974236727335ull, 8436716265536322493ull, 11294198838437545409ull, 3324152694878629570ull}}, {{10900869736223297073ull, 15157581350347791020ull, 4894376511192155953ull, 4155190868598286963ull}}, {{16036415621994336479ull, 2555959316326287531ull, 753142310281403519ull, 2596994292873929352ull}}, {{15433833509065532694ull, 17030007200690023126ull, 941427887851754398ull, 3246242866092411690ull}}, {{10068919849477140060ull, 12064136964007753100ull, 10400156896669468806ull, 4057803582615514612ull}}, {{15516446942777988345ull, 2928399584077457783ull, 15723470097273193812ull, 2536127239134696632ull}}, {{14783872660045097528ull, 3660499480096822229ull, 1207593547881940649ull, 3170159048918370791ull}}, {{4644782769774208197ull, 9187310368548415691ull, 15344549990134589523ull, 3962698811147963488ull}}, {{597146221895186172ull, 3436225971129065855ull, 9590343743834118452ull, 2476686756967477180ull}}, {{14581490832651146426ull, 4295282463911332318ull, 11987929679792648065ull, 3095858446209346475ull}}, {{9003491503959157225ull, 9980789098316553302ull, 10373226081313422177ull, 3869823057761683094ull}}, {{1015496171547085362ull, 17767208232516315574ull, 1871580282393500956ull, 2418639411101051934ull}}, {{10492742251288632510ull, 3762266216935842851ull, 11562847389846652004ull, 3023299263876314917ull}}, {{8504241795683402733ull, 4702832771169803564ull, 618501182026151293ull, 3779124079845393647ull}}, {{14538523159156902517ull, 5245113491194821179ull, 7304092266407426414ull, 2361952549903371029ull}}, {{13561467930518740242ull, 15779763900848302282ull, 13741801351436670921ull, 2952440687379213786ull}}, {{7728462876293649494ull, 5889646820778214141ull, 7953879652441062844ull, 3690550859224017233ull}}, {{7136132306897224886ull, 12904401299841159646ull, 16500389828844134037ull, 2306594287015010770ull}}, {{18143537420476306915ull, 2295443569519285845ull, 11402115249200391739ull, 2883242858768763463ull}}, {{8844363720313219932ull, 16704362517181271019ull, 9640958043073101769ull, 3604053573460954329ull}}, {{6443768631964137011ull, 7045395091194425062ull, 16662883572268765116ull, 4505066966826192911ull}}, {{17862413450259749344ull, 13626743968851291471ull, 17331831260309060053ull, 2815666854266370569ull}}, {{17716330794397298776ull, 3198371905781950627ull, 7829731020104161355ull, 3519583567832963212ull}}, {{17533727474569235565ull, 17833022937509601996ull, 9787163775130201693ull, 4399479459791204015ull}}, {{1735207634750996421ull, 13451482345157195200ull, 13034506387097457914ull, 2749674662369502509ull}}, {{2169009543438745526ull, 7590980894591718192ull, 2458074928589658681ull, 3437093327961878137ull}}, {{2711261929298431907ull, 14100412136667035644ull, 7684279679164461255ull, 4296366659952347671ull}}, {{10917910742666295750ull, 15730286613057979133ull, 11720203827118870140ull, 2685229162470217294ull}}, {{18259074446760257591ull, 1216114192612922300ull, 5426882747043811868ull, 3356536453087771618ull}}, {{4377098984740770373ull, 1520142740766152876ull, 16006975470659540643ull, 4195670566359714522ull}}, {{11959058902317757291ull, 17090990277474703211ull, 14616045687589600805ull, 2622294103974821576ull}}, {{10337137609469808710ull, 7528679791561215302ull, 18270057109487001007ull, 3277867629968526970ull}}, {{3698049974982485079ull, 4799163721024131224ull, 13614199350003975451ull, 4097334537460658713ull}}, {{2311281234364053175ull, 693634316426388063ull, 1591345566111402801ull, 2560834085912911696ull}}, {{16724159598237230180ull, 5478728913960372982ull, 1989181957639253501ull, 3201042607391139620ull}}, {{11681827460941761917ull, 11460097160877854132ull, 2486477447049066876ull, 4001303259238924525ull}}, {{16524514199943377007ull, 16385932762403434640ull, 3859891413619360749ull, 2500814537024327828ull}}, {{2208898676219669642ull, 6647357897722129589ull, 4824864267024200937ull, 3126018171280409785ull}}, {{7372809363701974956ull, 12920883390580049890ull, 10642766352207639075ull, 3907522714100512231ull}}, {{9219691870741122252ull, 5769709109898837229ull, 13569257997770856278ull, 2442201696312820144ull}}, {{16136300856853790719ull, 16435508424228322344ull, 16961572497213570347ull, 3052752120391025180ull}}, {{1723631997357686782ull, 15932699511858015027ull, 2755221547807411318ull, 3815940150488781476ull}}, {{17218171062844411903ull, 5346251176483871487ull, 10945385504234407882ull, 2384962594055488422ull}}, {{16911027810128126975ull, 15906186007459615167ull, 4458359843438234044ull, 2981203242569360528ull}}, {{16527098744232770815ull, 1435988435614967343ull, 5572949804297792556ull, 3726504053211700660ull}}, {{17246965742786563615ull, 10120864809114130397ull, 12706465664540896155ull, 2329065033257312912ull}}, {{7723649123201040807ull, 8039394992965275093ull, 15883082080676120194ull, 2911331291571641140ull}}, {{14266247422428688913ull, 825871704351818058ull, 1407108527135598627ull, 3639164114464551426ull}}, {{8609437241181085333ull, 14867397685721936285ull, 10982257695774274091ull, 4548955143080689282ull}}, {{7686741284951872285ull, 6986280544362516226ull, 11475597078286309211ull, 2843096964425430801ull}}, {{385054569335064548ull, 4121164662025757379ull, 509438292575722802ull, 3553871205531788502ull}}, {{14316376266950994397ull, 14374827864386972531ull, 9860169902574429310ull, 4442339006914735627ull}}, {{6641892157630677546ull, 4372581396814469928ull, 3856763179895324367ull, 2776461879321709767ull}}, {{8302365197038346933ull, 854040727590699506ull, 209267956441767555ull, 3470577349152137209ull}}, {{1154584459443157858ull, 14902608964770538095ull, 4873270963979597347ull, 4338221686440171511ull}}, {{7639144314793055517ull, 7008287593767892357ull, 9963323380128330198ull, 2711388554025107194ull}}, {{14160616411918707301ull, 17983731529064641254ull, 3230782188305636939ull, 3389235692531383993ull}}, {{8477398478043608318ull, 17867978392903413664ull, 8650163753809434078ull, 4236544615664229991ull}}, {{5298374048777255199ull, 6555800477137245636ull, 12323881373771978155ull, 2647840384790143744ull}}, {{6622967560971568998ull, 3583064577994169141ull, 15404851717214972694ull, 3309800480987679680ull}}, {{12890395469641849152ull, 13702202759347487234ull, 809320572809164251ull, 4137250601234599601ull}}, {{12668183186953543624ull, 6258033715378485569ull, 12035040404074197417ull, 2585781625771624750ull}}, {{2000170928409765818ull, 12434228162650494866ull, 5820428468237970963ull, 3232227032214530938ull}}, {{11723585697366983080ull, 10931099184885730678ull, 16498907622152239512ull, 4040283790268163672ull}}, {{2715555042426976521ull, 6831936990553581674ull, 10311817263845149695ull, 2525177368917602295ull}}, {{12617815839888496460ull, 3928235219764589188ull, 8278085561379049215ull, 3156471711147002869ull}}, {{15772269799860620574ull, 298608006278348581ull, 14959292970151199423ull, 3945589638933753586ull}}, {{12163511634126581811ull, 7104159031565049719ull, 13961244124771887543ull, 2465993524333595991ull}}, {{10592703524230839360ull, 4268512771028924245ull, 12839869137537471525ull, 3082491905416994989ull}}, {{17852565423715937104ull, 9947326982213543210ull, 2214778366639675694ull, 3853114881771243737ull}}, {{15769539408249848594ull, 1605393345456076602ull, 12913451525218267069ull, 2408196801107027335ull}}, {{10488552223457534934ull, 6618427700247483657ull, 11530128388095445932ull, 3010246001383784169ull}}, {{17722376297749306572ull, 8273034625309354571ull, 577602429837143703ull, 3762807501729730212ull}}, {{8770642176879622656ull, 12088175668459428463ull, 9584373555502990622ull, 2351754688581081382ull}}, {{6351616702672140415ull, 5886847548719509771ull, 2757094907523962470ull, 2939693360726351728ull}}, {{3327834859912787615ull, 16581931472754163022ull, 3446368634404953087ull, 3674616700907939660ull}}, {{13383165611745760327ull, 16115728322515315873ull, 4307960793006191359ull, 4593270876134924575ull}}, {{1446949479700018348ull, 16989859229213154277ull, 9610004523269951455ull, 2870794297584327859ull}}, {{6420372868052410839ull, 16625638018089054942ull, 7400819635660051415ull, 3588492871980409824ull}}, {{17248838121920289357ull, 16170361504183930773ull, 9251024544575064269ull, 4485616089975512280ull}}, {{13086366835413874800ull, 12412318949328650685ull, 5781890340359415168ull, 2803510056234695175ull}}, {{2522900488985179788ull, 15515398686660813357ull, 2615676907021881056ull, 3504387570293368969ull}}, {{7765311629658862639ull, 947504284616465080ull, 7881282152204739225ull, 4380484462866711211ull}}, {{4853319768536789150ull, 12121405223953760435ull, 2619958335914268063ull, 2737802789291694507ull}}, {{1454963692243598533ull, 10540070511514812640ull, 17110005975174998791ull, 3422253486614618133ull}}, {{1818704615304498166ull, 8563402120966127896ull, 7552449413686584777ull, 4277816858268272667ull}}, {{1136690384565311354ull, 16881341371672299695ull, 2414437874340421533ull, 2673635536417670417ull}}, {{15255921035988802904ull, 7266618659308210906ull, 7629733361352914821ull, 3342044420522088021ull}}, {{9846529258131227822ull, 13694959342562651537ull, 14148852720118531430ull, 4177555525652610026ull}}, {{17683295832400487149ull, 3947663570674269306ull, 13454718968501470048ull, 2610972203532881266ull}}, {{12880747753645833128ull, 4934579463342836633ull, 7595026673772061752ull, 3263715254416101583ull}}, {{2265876636775127698ull, 6168224329178545792ull, 4882097323787689286ull, 4079644068020126979ull}}, {{1416172897984454812ull, 17690198261018754832ull, 745467818153611851ull, 2549777542512579362ull}}, {{1770216122480568514ull, 17501061807846055636ull, 10155206809546790622ull, 3187221928140724202ull}}, {{2212770153100710643ull, 12652955222952793737ull, 3470636475078712470ull, 3984027410175905253ull}}, {{12912196391756413912ull, 3296410995918108181ull, 4474990806137889246ull, 2490017131359940783ull}}, {{2305187434413353678ull, 13343885781752411035ull, 982052489244973653ull, 3112521414199925979ull}}, {{16716542348298855809ull, 2844799171908350081ull, 15062623666838380779ull, 3890651767749907473ull}}, {{3530309940045703025ull, 17918900546938576465ull, 2496610764132906130ull, 2431657354843692171ull}}, {{9024573443484516685ull, 13175253646818444773ull, 16955821510448296375ull, 3039571693554615213ull}}, {{15892402822783033760ull, 11857381040095668062ull, 7359718832778206757ull, 3799464616943269017ull}}, {{5321065745812008196ull, 9716706159273486491ull, 16129039316554848983ull, 2374665385589543135ull}}, {{2039646163837622341ull, 7534196680664470210ull, 15549613127266173325ull, 2968331731986928919ull}}, {{11772929741651803734ull, 14029431869257975666ull, 14825330390655328752ull, 3710414664983661149ull}}, {{11969767106959765238ull, 8768394918286234791ull, 11571674503373274422ull, 2319009165614788218ull}}, {{10350522865272318644ull, 1737121611003017681ull, 5241221092361817220ull, 2898761457018485273ull}}, {{17549839600017786208ull, 2171402013753772101ull, 11163212383879659429ull, 3623451821273106591ull}}, {{8102241444740069048ull, 7325938535619603031ull, 9342329461422186382ull, 4529314776591383239ull}}, {{11981429930603625011ull, 18413769640044415606ull, 12756484941029948344ull, 2830821735369614524ull}}, {{5753415376399755456ull, 4570467976345967892ull, 15945606176287435431ull, 3538527169212018155ull}}, {{7191769220499694320ull, 1101398952005071961ull, 15320321701931906385ull, 4423158961515022694ull}}, {{16024070808880778710ull, 12217589391071639735ull, 4963515045280053586ull, 2764474350946889184ull}}, {{15418402492673585484ull, 6048614701984773861ull, 6204393806600066983ull, 3455592938683611480ull}}, {{5437945060559818142ull, 2949082359053579423ull, 7755492258250083729ull, 4319491173354514350ull}}, {{10316244690490968195ull, 13372391520476956899ull, 235496642978914426ull, 2699681983346571469ull}}, {{8283619844686322340ull, 7492117363741420316ull, 4906056822151030937ull, 3374602479183214336ull}}, {{10354524805857902925ull, 13976832723104163299ull, 6132571027688788671ull, 4218253098979017920ull}}, {{4165734994447495376ull, 15653049479581183918ull, 3832856892305492919ull, 2636408186861886200ull}}, {{14430540779914145028ull, 14954625831049091993ull, 4791071115381866149ull, 3295510233577357750ull}}, {{4203117919610517573ull, 4858224233529201280ull, 15212210931082108495ull, 4119387791971697187ull}}, {{2626948699756573483ull, 9953919173596832656ull, 7201788822712623857ull, 2574617369982310742ull}}, {{3283685874695716854ull, 17054084985423428724ull, 18225608065245555629ull, 3218271712477888427ull}}, {{4104607343369646067ull, 7482548176497122193ull, 18170324063129556633ull, 4022839640597360534ull}}, {{14094594635674498552ull, 16205807656379171130ull, 6744766521028584991ull, 2514274775373350334ull}}, {{8394871257738347382ull, 15645573552046576009ull, 17654330188140507047ull, 3142843469216687917ull}}, {{15105275090600322132ull, 14945280921630832107ull, 8232854679893470097ull, 3928554336520859897ull}}, {{7134953922411507380ull, 2423271548378188211ull, 16674749221001888571ull, 2455346460325537435ull}}, {{4307006384586996321ull, 16864147490754898976ull, 16231750507824972809ull, 3069183075406921794ull}}, {{5383757980733745402ull, 7245126308161460008ull, 11066316097926440204ull, 3836478844258652243ull}}, {{3364848737958590876ull, 13751575979455688313ull, 4610604551990331175ull, 2397799277661657652ull}}, {{8817746940875626499ull, 12577783955892222487ull, 5763255689987913969ull, 2997249097077072065ull}}, {{6410497657667145220ull, 1887171889583114397ull, 11815755630912280366ull, 3746561371346340081ull}}, {{6312404045255659715ull, 15014540486271610210ull, 467318241679093372ull, 2341600857091462551ull}}, {{17113877093424350451ull, 321431534129961146ull, 14419205857381030428ull, 2927001071364328188ull}}, {{12168974329925662256ull, 401789417662451433ull, 18024007321726288035ull, 3658751339205410235ull}}, {{1376159857124914108ull, 14337294827360228004ull, 17918323133730472139ull, 4573439174006762794ull}}, {{10083471947557847125ull, 6654966257886448550ull, 15810637977008932991ull, 2858399483754226746ull}}, {{3380967897592533099ull, 3707021803930672784ull, 10539925434406390431ull, 3572999354692783433ull}}, {{4226209871990666373ull, 22091236485953076ull, 17786592811435375943ull, 4466249193365979291ull}}, {{11864753206848942291ull, 6931336050444802528ull, 8810777497933416012ull, 2791405745853737057ull}}, {{14830941508561177864ull, 8664170063056003160ull, 15625157890844157919ull, 3489257182317171321ull}}, {{91932811991920714ull, 6218526560392616047ull, 5696389308273033687ull, 4361571477896464152ull}}, {{6974987035136032302ull, 10804108127886466885ull, 3560243317670646054ull, 2725982173685290095ull}}, {{13330419812347428282ull, 4281763123003307798ull, 18285362202370471280ull, 3407477717106612618ull}}, {{7439652728579509544ull, 5352203903754134748ull, 13633330716108313292ull, 4259347146383265773ull}}, {{13873154992216969273ull, 12568499476701110025ull, 10826674706781389759ull, 2662091966489541108ull}}, {{3506385684989047880ull, 11098938327448999628ull, 13533343383476737199ull, 3327614958111926385ull}}, {{4382982106236309849ull, 9261986890883861631ull, 3081621174063757787ull, 4159518697639907982ull}}, {{9656892844038775512ull, 3482898797588719567ull, 15761071289072012329ull, 2599699186024942488ull}}, {{7459430036621081486ull, 8965309515413287363ull, 1254595037630463795ull, 3249623982531178111ull}}, {{4712601527348963953ull, 6594950875839221300ull, 15403301852320243456ull, 4062029978163972638ull}}, {{12168747991447878279ull, 4121844297399513312ull, 5015377639272764256ull, 2538768736352482899ull}}, {{15210934989309847849ull, 5152305371749391640ull, 1657536030663567416ull, 3173460920440603624ull}}, {{566924662927758195ull, 6440381714686739551ull, 2071920038329459270ull, 3966826150550754530ull}}, {{7271856941970930728ull, 17860296626961375931ull, 5906636042383299947ull, 2479266344094221581ull}}, {{4478135159036275506ull, 17713684765274332010ull, 11994981071406512838ull, 3099082930117776976ull}}, {{14821040985650120190ull, 12918733919738139204ull, 14993726339258141048ull, 3873853662647221220ull}}, {{39778579176549311ull, 8074208699836337003ull, 147706925181562347ull, 2421158539154513263ull}}, {{13884781279252850351ull, 5481074856368033349ull, 14019691711759116646ull, 3026448173943141578ull}}, {{3520918543783899226ull, 16074715607314817495ull, 8301242602844119999ull, 3783060217428926973ull}}, {{9118103117506018872ull, 16964226282212842790ull, 7494119635991268951ull, 2364412635893079358ull}}, {{2174256860027747782ull, 16593596834338665584ull, 144277508134310381ull, 2955515794866349198ull}}, {{2717821075034684728ull, 6906937987641168268ull, 9403718922022663785ull, 3694394743582936497ull}}, {{10922010208751453763ull, 15846051288344199927ull, 17406539372332634625ull, 2308996714739335310ull}}, {{9040826742511929300ull, 5972506055148086197ull, 12534802178561017474ull, 2886245893424169138ull}}, {{15912719446567299529ull, 16689004605789883554ull, 6445130686346496034ull, 3607807366780211423ull}}, {{10667527271354348603ull, 11637883720382578635ull, 3444727339505732139ull, 4509759208475264279ull}}, {{4361361535382773925ull, 4967834316025417695ull, 9070483614832164443ull, 2818599505297040174ull}}, {{840015900801079502ull, 1598106876604384215ull, 2114732481685429746ull, 3523249381621300218ull}}, {{14885077931283513089ull, 11221005632610256076ull, 11866787638961562990ull, 4404061727026625272ull}}, {{79801670197419873ull, 2401442501954022144ull, 7416742274350976869ull, 2752538579391640795ull}}, {{99752087746774841ull, 7613489145869915584ull, 4659241824511333182ull, 3440673224239550994ull}}, {{124690109683468551ull, 293489395482618672ull, 15047424317493942286ull, 4300841530299438742ull}}, {{77931318552167845ull, 14018488927458800382ull, 4792954180006326024ull, 2688025956437149214ull}}, {{9320786185044985614ull, 17523111159323500477ull, 15214564761862683338ull, 3360032445546436517ull}}, {{16262668749733619921ull, 12680516912299599788ull, 5183147897046190461ull, 4200040556933045647ull}}, {{940795931728736643ull, 10231166079400943820ull, 10156996463294950894ull, 2625025348083153529ull}}, {{1175994914660920804ull, 3565585562396403967ull, 17307931597546076522ull, 3281281685103941911ull}}, {{15305051698608314716ull, 13680353989850280766ull, 17023228478505207748ull, 4101602106379927389ull}}, {{4953971293202808794ull, 17773593280511201287ull, 12945360808279448794ull, 2563501316487454618ull}}, {{1580778098076123088ull, 12993619563784225801ull, 6958328973494535185ull, 3204376645609318273ull}}, {{6587658641022541764ull, 2406966399448118539ull, 13309597235295556886ull, 4005470807011647841ull}}, {{1811443641425394651ull, 15339412054937237799ull, 1400969244418641197ull, 2503419254382279901ull}}, {{16099362607063907025ull, 5339207013389383536ull, 6362897573950689401ull, 3129274067977849876ull}}, {{1677459185120332166ull, 11285694785164117325ull, 7953621967438361751ull, 3911592584972312345ull}}, {{3354254999913901556ull, 13971088268368655184ull, 16500228775717445854ull, 2444745365607695215ull}}, {{4192818749892376944ull, 8240488298606043172ull, 16013599951219419414ull, 3055931707009619019ull}}, {{5241023437365471180ull, 1077238336402778157ull, 15405313920596886364ull, 3819914633762023774ull}}, {{5581482657567113440ull, 9896645997106512156ull, 5016635181945666073ull, 2387446646101264859ull}}, {{6976853321958891800ull, 16982493514810528099ull, 1659107959004694687ull, 2984308307626581074ull}}, {{4109380634021226846ull, 16616430875085772220ull, 11297256985610644167ull, 3730385384533226342ull}}, {{11791734933118042587ull, 17302798324569689493ull, 2449099597579264700ull, 2331490865333266464ull}}, {{904610611115389521ull, 3181753832002560251ull, 3061374496974080876ull, 2914363581666583080ull}}, {{14965821319176400613ull, 3977192290003200313ull, 3826718121217601095ull, 3642954477083228850ull}}, {{4872218593688337055ull, 359804344076612488ull, 14006769688376777177ull, 4553693096354036062ull}}, {{3045136621055210659ull, 11754092761116352565ull, 4142545036808097831ull, 2846058185221272539ull}}, {{8418106794746401228ull, 10080929932968052802ull, 566495277582734385ull, 3557572731526590674ull}}, {{1299261456578225727ull, 17212848434637453907ull, 9931491133833193789ull, 4446965914408238342ull}}, {{16952939474857248744ull, 13063873280862102643ull, 1595495940218358214ull, 2779353696505148964ull}}, {{16579488325144173025ull, 7106469564222852496ull, 1994369925272947768ull, 3474192120631436205ull}}, {{2277616332720664666ull, 8883086955278565621ull, 7104648425018572614ull, 4342740150789295256ull}}, {{3729353217164109368ull, 940243328621715609ull, 4440405265636607884ull, 2714212594243309535ull}}, {{9273377539882524614ull, 1175304160777144511ull, 938820563618371951ull, 3392765742804136919ull}}, {{6980035906425767863ull, 15304188256253594351ull, 15008583759805128650ull, 4240957178505171148ull}}, {{11280051469157186771ull, 14176803678585884373ull, 156992813023429598ull, 2650598236565731968ull}}, {{265006281164319751ull, 8497632561377579659ull, 196241016279286998ull, 3313247795707164960ull}}, {{14166315906737563401ull, 1398668664867198765ull, 245301270349108748ull, 4141559744633956200ull}}, {{11159790450924671078ull, 10097539952396775036ull, 153313293968192967ull, 2588474840396222625ull}}, {{13949738063655838847ull, 8010238922068580891ull, 4803327635887629113ull, 3235593550495278281ull}}, {{12825486561142410655ull, 14624484671013114018ull, 10615845563286924295ull, 4044491938119097851ull}}, {{12627615119141394564ull, 16057831947024278117ull, 4329060467840633732ull, 2527807461324436157ull}}, {{1949460843644579492ull, 1625545860070796031ull, 10023011603228180070ull, 3159759326655545196ull}}, {{16271884109837888077ull, 11255304361943270846ull, 12528764504035225087ull, 3949699158319431495ull}}, {{5558241550221292144ull, 13952094253855626135ull, 14748006842663097535ull, 2468561973949644684ull}}, {{2336115919349227276ull, 12828431798892144765ull, 18435008553328871919ull, 3085702467437055855ull}}, {{7531830917613921999ull, 11423853730187793052ull, 18432074673233701995ull, 3857128084296319819ull}}, {{13930766360363477058ull, 4834065572153676705ull, 9214203661557369795ull, 2410705052685199887ull}}, {{3578399895172182610ull, 1430895946764707978ull, 6906068558519324340ull, 3013381315856499859ull}}, {{13696371905820004071ull, 1788619933455884972ull, 4020899679721767521ull, 3766726644820624824ull}}, {{17783604477992278352ull, 12647102504478397867ull, 2513062299826104700ull, 2354204153012890515ull}}, {{17617819579062960036ull, 15808878130597997334ull, 16976385930064794587ull, 2942755191266113143ull}}, {{12798902436973924237ull, 15149411644820108764ull, 16608796394153605330ull, 3678443989082641429ull}}, {{15998628046217405296ull, 9713392519170360147ull, 6925937437409842951ull, 4598054986353301787ull}}, {{7693299519672184358ull, 12988399352122556948ull, 2022867889167457892ull, 2873784366470813617ull}}, {{9616624399590230448ull, 16235499190153196185ull, 7140270879886710269ull, 3592230458088517021ull}}, {{16632466517915175964ull, 6459315932409331519ull, 13537024618285775741ull, 4490288072610646276ull}}, {{17312820601338066834ull, 6342915466969526151ull, 17684012423283385646ull, 2806430045381653922ull}}, {{17029339733245195638ull, 17152016370566683497ull, 12881643492249456249ull, 3508037556727067403ull}}, {{7451616611274330835ull, 7604962407926190660ull, 11490368346884432408ull, 4385046945908834254ull}}, {{13880632418901232580ull, 4753101504953869162ull, 2569794198375382351ull, 2740654341193021409ull}}, {{8127418486771764917ull, 1329690862764948549ull, 7823928766396615843ull, 3425817926491276761ull}}, {{14770959126892094050ull, 15497171633738349398ull, 14391596976423157707ull, 4282272408114095951ull}}, {{4620163435880170878ull, 7379889261872774422ull, 15912277137905555423ull, 2676420255071309969ull}}, {{14998576331704989405ull, 4613175558913580123ull, 6055288367099780567ull, 3345525318839137462ull}}, {{14136534396203848852ull, 1154783430214587250ull, 16792482495729501517ull, 4181906648548921827ull}}, {{13447020016054793437ull, 3027582653097810983ull, 8189458550617244496ull, 2613691655343076142ull}}, {{12197089001641103892ull, 3784478316372263729ull, 1013451151416779812ull, 3267114569178845178ull}}, {{1411303196769216152ull, 4730597895465329662ull, 10490185976125750573ull, 4083893211473556472ull}}, {{14717122553262923807ull, 5262466693879524990ull, 6556366235078594108ull, 2552433257170972795ull}}, {{9173031154723878951ull, 6578083367349406238ull, 3583771775420854731ull, 3190541571463715994ull}}, {{2242916906550072881ull, 3610918190759369894ull, 13703086756130844222ull, 3988176964329644992ull}}, {{15236881121875959263ull, 16091881924506769895ull, 8564429222581777638ull, 2492610602706028120ull}}, {{14434415383917561174ull, 10891480368778686561ull, 10705536528227222048ull, 3115763253382535150ull}}, {{4207961174614787756ull, 13614350460973358202ull, 4158548623429251752ull, 3894704066728168938ull}}, {{7241661752561630252ull, 8508969038108348876ull, 7210778908070670249ull, 2434190041705105586ull}}, {{9052077190702037814ull, 15247897316062823999ull, 18236845671943113619ull, 3042737552131381982ull}}, {{6703410469950159364ull, 14448185626651142095ull, 13572685053074116216ull, 3803421940164227478ull}}, {{11107160571359931459ull, 9030116016656963809ull, 3871242139743934731ull, 2377138712602642174ull}}, {{48892658917750611ull, 6675959002393816858ull, 14062424711534694222ull, 2971423390753302717ull}}, {{9284487860501964072ull, 17568320789847046880ull, 3742972834136204065ull, 3714279238441628397ull}}, {{5802804912813727545ull, 4062671466013322444ull, 4645201030548821493ull, 2321424524026017748ull}}, {{7253506141017159431ull, 9690025350944040959ull, 5806501288186026866ull, 2901780655032522185ull}}, {{4455196657844061385ull, 2889159651825275391ull, 11869812628659921487ull, 3627225818790652731ull}}, {{957309803877688827ull, 17446507620063757951ull, 10225579767397513954ull, 4534032273488315914ull}}, {{7515847655064637373ull, 15515753280967236623ull, 11002673373050834125ull, 2833770170930197446ull}}, {{4783123550403408812ull, 5559633545926882067ull, 4529969679458766849ull, 3542212713662746808ull}}, {{1367218419576873111ull, 11561227950835990488ull, 5662462099323458561ull, 4427765892078433510ull}}, {{854511512235545695ull, 308238441631412199ull, 17374096867359325313ull, 2767353682549020943ull}}, {{14903197445576595830ull, 4996984070466653152ull, 17105935065771768737ull, 3459192103186276179ull}}, {{182252733261193171ull, 10857916106510704345ull, 16770732813787323017ull, 4323990128982845224ull}}, {{11643123004356715492ull, 18315412612637659975ull, 10481708008617076885ull, 2702493830614278265ull}}, {{9942217737018506461ull, 9059207710514911257ull, 17713821029198734011ull, 3378117288267847831ull}}, {{17039458189700520980ull, 6712323619716251167ull, 17530590268071029610ull, 4222646610334809789ull}}, {{17567190396203907469ull, 8806888280750044883ull, 13262461926758087458ull, 2639154131459256118ull}}, {{17347301976827496432ull, 1785238314082780296ull, 7354705371592833515ull, 3298942664324070148ull}}, {{3237383397324818924ull, 16066605947885639083ull, 9193381714491041893ull, 4123678330405087685ull}}, {{18164265687823869492ull, 12347471726642218378ull, 8051706580770595135ull, 2577298956503179803ull}}, {{13481960072925061056ull, 10822653639875385069ull, 5452947207535856015ull, 3221623695628974754ull}}, {{3017392035874162608ull, 8916631031416843433ull, 16039556046274595827ull, 4027029619536218442ull}}, {{13415085068489821390ull, 3267051385421833193ull, 14636408547349010296ull, 2516893512210136526ull}}, {{2933798280330113026ull, 4083814231777291492ull, 9072138647331487062ull, 3146116890262670658ull}}, {{3667247850412641282ull, 14328139826576390173ull, 2116801272309583019ull, 3932646112828338323ull}}, {{4597872915721594754ull, 6649244382396549906ull, 17463901859689347051ull, 2457903820517711451ull}}, {{14970713181506769250ull, 3699869459568299478ull, 17218191306184295910ull, 3072379775647139314ull}}, {{9490019440028685754ull, 13848208861315150156ull, 12299367095875594079ull, 3840474719558924143ull}}, {{15154634186872704405ull, 15572659565963050703ull, 14604633462563328155ull, 2400296699724327589ull}}, {{14331606715163492602ull, 14854138439026425475ull, 4420733772921996482ull, 3000370874655409487ull}}, {{13302822375526977848ull, 9344301011928256036ull, 914231197725107699ull, 3750463593319261859ull}}, {{17537636021559136963ull, 3534345123241466070ull, 16712295563074049976ull, 2344039745824538661ull}}, {{12698672990094145396ull, 4417931404051832588ull, 7055311398560398758ull, 2930049682280673327ull}}, {{15873341237617681745ull, 14745786291919566543ull, 4207453229773110543ull, 3662562102850841659ull}}, {{15229990528594714277ull, 13820546846472070275ull, 647630518789000275ull, 4578202628563552074ull}}, {{7212901071158002471ull, 6331998769831349970ull, 5016455092670513076ull, 2861376642852220046ull}}, {{18239498375802278897ull, 7914998462289187462ull, 15493940902692917153ull, 3576720803565275057ull}}, {{13576000932898072813ull, 14505434096288872232ull, 5532368073083982729ull, 4470901004456593822ull}}, {{8485000583061295508ull, 2148367282539463289ull, 17292788100959652918ull, 2794313127785371138ull}}, {{15217936747254007289ull, 11908831140029104919ull, 12392613089344790339ull, 3492891409731713923ull}}, {{14410734915640121207ull, 10274352906608993245ull, 10879080343253600020ull, 4366114262164642404ull}}, {{11312552331488769707ull, 15644842603485396586ull, 16022797251388275820ull, 2728821413852901502ull}}, {{4917318377506186325ull, 1109309180647194117ull, 10805124527380568968ull, 3411026767316126878ull}}, {{10758333990310120811ull, 1386636475808992646ull, 4283033622370935402ull, 4263783459145158598ull}}, {{2112272725516437603ull, 5478333815808008308ull, 16511954069263998338ull, 2664864661965724123ull}}, {{2640340906895547003ull, 16071289306614786193ull, 16028256568152610018ull, 3331080827457155154ull}}, {{7912112152046821658ull, 10865739596413706933ull, 10811948673335986715ull, 4163851034321443943ull}}, {{7250913104242957488ull, 4485244238544872881ull, 13674996948476073553ull, 2602406896450902464ull}}, {{13675327398731084764ull, 10218241316608479005ull, 17093746185595091941ull, 3253008620563628080ull}}, {{3259101193131692243ull, 17384487664187986661ull, 2920438658284313310ull, 4066260775704535101ull}}, {{4342781254921001604ull, 6253618771690103759ull, 4131117170641389771ull, 2541412984815334438ull}}, {{816790550223864101ull, 3205337446185241795ull, 14387268500156513022ull, 3176766231019168047ull}}, {{14856046243061993839ull, 13230043844586328051ull, 13372399606768253373ull, 3970957788773960059ull}}, {{6979185892700052197ull, 10574620412080148984ull, 6051906745016464406ull, 2481848617983725037ull}}, {{8723982365875065246ull, 3994903478245410422ull, 12176569449697968412ull, 3102310772479656296ull}}, {{1681605920489055750ull, 4993629347806763028ull, 15220711812122460515ull, 3877888465599570370ull}}, {{10274375737160435652ull, 815175333165532940ull, 14124630901003925726ull, 2423680290999731481ull}}, {{12842969671450544565ull, 10242341203311691983ull, 3820730570972743445ull, 3029600363749664352ull}}, {{11442026070885792802ull, 17414612522567002883ull, 4775913213715929306ull, 3787000454687080440ull}}, {{4845423285089926549ull, 15495818845031764706ull, 2984945758572455816ull, 2366875284179425275ull}}, {{15280151143217183995ull, 923029482580154266ull, 17566240253497733483ull, 2958594105224281593ull}}, {{9876816892166704185ull, 14988844908507356545ull, 8122742261590003141ull, 3698242631530351992ull}}, {{17702225603672659876ull, 11673871077030791792ull, 5076713913493751963ull, 2311401644706469995ull}}, {{3681037930881273229ull, 9980652827861101837ull, 1734206373439802050ull, 2889252055883087494ull}}, {{9212983432028979440ull, 3252443997971601488ull, 11391130003654528371ull, 3611565069853859367ull}}, {{11516229290036224299ull, 17900613052746665572ull, 9627226486140772559ull, 4514456337317324209ull}}, {{16421015343127415995ull, 18105412185607747838ull, 17546231599906452609ull, 2821535210823327630ull}}, {{11302897142054494186ull, 8796707176727521086ull, 12709417463028289954ull, 3526919013529159538ull}}, {{4905249390713341924ull, 1772511934054625550ull, 6663399791930586635ull, 4408648766911449423ull}}, {{16900838924478002415ull, 17248721023279998632ull, 11082153897597698502ull, 2755405479319655889ull}}, {{2679304581887951403ull, 12337529242245222483ull, 17634316714959416ull, 3444256849149569862ull}}, {{17184188782642102965ull, 15421911552806528103ull, 9245414932748475078ull, 4305321061436962327ull}}, {{17657647016792396209ull, 5027008702076692160ull, 12695913360608878780ull, 2690825663398101454ull}}, {{3625314697280943646ull, 6283760877595865201ull, 6646519663906322667ull, 3363532079247626818ull}}, {{9143329390028567461ull, 3243015078567443597ull, 17531521616737679142ull, 4204415099059533522ull}}, {{8020423877981548615ull, 15861942479386815960ull, 15568887028888437367ull, 2627759436912208451ull}}, {{10025529847476935769ull, 15215742080806132046ull, 14849422767683158805ull, 3284699296140260564ull}}, {{3308540272491393903ull, 5184619545725501346ull, 115034385894396891ull, 4105874120175325706ull}}, {{6679523688734509094ull, 934544206864744389ull, 4683582509611385961ull, 2566171325109578566ull}}, {{12961090629345524271ull, 5779866277008318390ull, 15077850173869008259ull, 3207714156386973207ull}}, {{6977991249827129530ull, 2613146827833010084ull, 14235626698908872420ull, 4009642695483716509ull}}, {{13584616567996731765ull, 10856588804250407110ull, 11203109696031739214ull, 2506026684677322818ull}}, {{7757398673141138898ull, 4347363968458233080ull, 4780515083184898210ull, 3132533355846653523ull}}, {{9696748341426423622ull, 14657576997427567158ull, 1363957835553734858ull, 3915666694808316904ull}}, {{1448781694964126860ull, 13772671641819617378ull, 852473647221084286ull, 2447291684255198065ull}}, {{11034349155559934383ull, 7992467515419745914ull, 5677278077453743262ull, 3059114605318997581ull}}, {{4569564407595142170ull, 767212357419906585ull, 11708283615244566982ull, 3823893256648746976ull}}, {{14385192800815433617ull, 14314565778669605327ull, 7317677259527854363ull, 2389933285405466860ull}}, {{13369804982591904117ull, 13281521204909618755ull, 9147096574409817954ull, 2987416606756833575ull}}, {{12100570209812492242ull, 7378529469282247636ull, 6822184699584884539ull, 3734270758446041969ull}}, {{16786228417987583459ull, 2305737909087710820ull, 15793080483309022597ull, 2333919224028776230ull}}, {{2536041448774927708ull, 7493858404787026430ull, 10517978567281502438ull, 2917399030035970288ull}}, {{12393423847823435443ull, 143950969129007229ull, 13147473209101878048ull, 3646748787544962860ull}}, {{1656721754497130592ull, 179938711411259037ull, 16434341511377347560ull, 4558435984431203575ull}}, {{3341294105774400572ull, 112461694632036898ull, 17188992472251924081ull, 2849022490269502234ull}}, {{13399989669072776523ull, 4752263136717434026ull, 12262868553460129293ull, 3561278112836877793ull}}, {{7526615049486194845ull, 10552014939324180437ull, 1493527636542997904ull, 4451597641046097242ull}}, {{7009977415142565731ull, 6595009337077612773ull, 5545140791266761594ull, 2782248525653810776ull}}, {{13374157787355595067ull, 17467133708201791774ull, 6931425989083451992ull, 3477810657067263470ull}}, {{7494325197339718026ull, 3387173061542688102ull, 17887654523209090799ull, 4347263321334079337ull}}, {{72267229909935862ull, 9034512191105261920ull, 4262255049364599893ull, 2717039575833799586ull}}, {{90334037387419828ull, 15904826257308965304ull, 14551190848560525674ull, 3396299469792249482ull}}, {{112917546734274784ull, 10657660784781430822ull, 8965616523845881285ull, 4245374337240311853ull}}, {{13905631521991085452ull, 8966880999702088215ull, 7909353336617369755ull, 2653358960775194908ull}}, {{12770353384061468911ull, 6596915231200222365ull, 9886691670771712194ull, 3316698700968993635ull}}, {{2127883674794672427ull, 17469516075855053765ull, 7746678570037252338ull, 4145873376211242044ull}}, {{3635770305960364219ull, 15530133565836796507ull, 14065046143128058519ull, 2591170860132026277ull}}, {{18379770937732618986ull, 14800980938868607729ull, 3746249623627909437ull, 3238963575165032847ull}}, {{9139655616883610020ull, 4666168118303595950ull, 71126011107498893ull, 4048704468956291059ull}}, {{1100598742124868359ull, 5222198083153441421ull, 16185354821438044472ull, 2530440293097681911ull}}, {{5987434446083473352ull, 6527747603941801776ull, 15620007508370167686ull, 3163050366372102389ull}}, {{7484293057604341690ull, 17383056541782028028ull, 5689951330180545895ull, 3953812957965127987ull}}, {{13901055197857489365ull, 17781939366254849373ull, 1250376572149147232ull, 2471133098728204992ull}}, {{3541260942039697994ull, 3780680134109010101ull, 1562970715186434041ull, 3088916373410256240ull}}, {{9038262195977010396ull, 9337536186063650530ull, 1953713393983042551ull, 3861145466762820300ull}}, {{10260599890913019402ull, 12753489143930863437ull, 10444442908094177402ull, 2413215916726762687ull}}, {{17437435882068662156ull, 6718489393058803488ull, 8443867616690333849ull, 3016519895908453359ull}}, {{3350050778876276079ull, 13009797759750892265ull, 5943148502435529407ull, 3770649869885566699ull}}, {{13622996782866142309ull, 15048652627485389521ull, 1408624804808511927ull, 2356656168678479187ull}}, {{3193687923300514175ull, 14199129765929348998ull, 15595839061292803621ull, 2945820210848098983ull}}, {{13215481940980418526ull, 3913854152129522535ull, 14883112808188616623ull, 3682275263560123729ull}}, {{11907666407798135254ull, 280631671734515265ull, 4768832954953607067ull, 4602844079450154662ull}}, {{524762477232752678ull, 16316295859329929705ull, 16815578652128168128ull, 2876777549656346663ull}}, {{5267639114968328751ull, 1948625750452860515ull, 16407787296732822257ull, 3595971937070433329ull}}, {{1972862875283023035ull, 7047468206493463548ull, 6674676065633864109ull, 4494964921338041662ull}}, {{10456411333906665205ull, 6710510638272108669ull, 18006730596303328780ull, 2809353075836276038ull}}, {{17682200185810719410ull, 8388138297840135836ull, 13285041208524385167ull, 3511691344795345048ull}}, {{3656006158553847646ull, 5873486853872781892ull, 16606301510655481459ull, 4389614180994181310ull}}, {{11508375885950930587ull, 1365086274456794730ull, 5767252425732288008ull, 2743508863121363319ull}}, {{5162097820583887426ull, 1706357843070993413ull, 2597379513737972106ull, 3429386078901704149ull}}, {{11064308294157247186ull, 11356319340693517574ull, 7858410410599853036ull, 4286732598627130186ull}}, {{2303506665420891588ull, 16321071624788224292ull, 9523192525052296051ull, 2679207874141956366ull}}, {{2879383331776114484ull, 15789653512557892461ull, 2680618619460594256ull, 3349009842677445458ull}}, {{8210915183147531009ull, 1290322816987813960ull, 12574145311180518629ull, 4186262303346806822ull}}, {{5131821989467206881ull, 3112294769831077677ull, 3247154801060436239ull, 2616413939591754264ull}}, {{11026463505261396505ull, 17725426517571010808ull, 4058943501325545298ull, 3270517424489692830ull}}, {{13783079381576745631ull, 12933411110108987702ull, 14297051413511707431ull, 4088146780612116037ull}}, {{4002738595058078116ull, 15000910971459199170ull, 11241500142658511096ull, 2555091737882572523ull}}, {{14226795280677373453ull, 304394640614447346ull, 9440189159895750967ull, 3193864672353215654ull}}, {{8560122063991941008ull, 14215551356050222895ull, 2576864413014912900ull, 3992330840441519568ull}}, {{12267605317636044986ull, 18108091634386165117ull, 1610540258134320562ull, 2495206775275949730ull}}, {{1499448591762892520ull, 13411742506127930589ull, 11236547359522676511ull, 3119008469094937162ull}}, {{6485996758131003554ull, 12152992114232525332ull, 4822312162548569831ull, 3898760586368671453ull}}, {{13277120010686653030ull, 14513149099036410188ull, 5319788110806550096ull, 2436725366480419658ull}}, {{16596400013358316287ull, 18141436373795512735ull, 15873107175362963428ull, 3045906708100524572ull}}, {{16133813998270507454ull, 4230051393534839303ull, 1394639895494152670ull, 3807383385125655716ull}}, {{17001162776560149015ull, 16478840176241438276ull, 10095021971538621226ull, 2379614615703534822ull}}, {{2804709396990634653ull, 11375178183447022038ull, 3395405427568500725ull, 2974518269629418528ull}}, {{12729258783093069124ull, 383914674026613835ull, 4244256784460625907ull, 3718147837036773160ull}}, {{5649943730219474251ull, 16380847735762491311ull, 2652660490287891191ull, 2323842398147983225ull}}, {{2450743644346954909ull, 15864373651275726235ull, 7927511631287251893ull, 2904802997684979031ull}}, {{16898487610715857348ull, 5995409008812494081ull, 5297703520681676963ull, 3631003747106223789ull}}, {{7288051458112657973ull, 2882575242588229698ull, 11233815419279484108ull, 4538754683882779736ull}}, {{9166718179747799137ull, 11024981563472419369ull, 7021134637049677567ull, 2836721677426737335ull}}, {{16070083743112136826ull, 9169540935913136307ull, 4164732277884709055ull, 3545902096783421669ull}}, {{15475918660462783128ull, 6850240151464032480ull, 9817601365783274223ull, 4432377620979277086ull}}, {{9672449162789239455ull, 11198929122306102156ull, 1524314835187158485ull, 2770236013112048179ull}}, {{12090561453486549319ull, 163603347600463983ull, 15740451599266111819ull, 3462795016390060223ull}}, {{10501515798430798745ull, 14039562239782743691ull, 15063878480655251869ull, 4328493770487575279ull}}, {{4257604364805555264ull, 11080569409077908759ull, 16332453078050614274ull, 2705308606554734549ull}}, {{710319437579556175ull, 4627339724492610141ull, 6580508292281104131ull, 3381635758193418187ull}}, {{5499585315401833123ull, 1172488637188374772ull, 3613949346923992260ull, 4227044697741772734ull}}, {{12660612858980921510ull, 9956177435097510040ull, 16093776397109658874ull, 2641902936088607958ull}}, {{15825766073726151887ull, 3221849757017111742ull, 10893848459532297785ull, 3302378670110759948ull}}, {{10558835555302914051ull, 8638998214698777582ull, 13617310574415372231ull, 4127973337638449935ull}}, {{1987586203636933378ull, 12316902911827817845ull, 15428348136650689500ull, 2579983336024031209ull}}, {{7096168772973554627ull, 15396128639784772306ull, 5450377115531198163ull, 3224979170030039012ull}}, {{18093583003071719091ull, 14633474781303577478ull, 6812971394413997704ull, 4031223962537548765ull}}, {{6696803358492436528ull, 9145921738314735924ull, 6563950130722442517ull, 2519514976585967978ull}}, {{8371004198115545660ull, 16044088191320807809ull, 17428309700257828954ull, 3149393720732459972ull}}, {{15075441266071819979ull, 10831738202296233953ull, 3338643051612734577ull, 3936742150915574966ull}}, {{2504621763653805631ull, 18299051422503615981ull, 15921709962540122822ull, 2460463844322234353ull}}, {{7742463222994644943ull, 13650442241274744168ull, 6067079397892989816ull, 3075579805402792942ull}}, {{9678079028743306178ull, 17063052801593430210ull, 16807221284221013078ull, 3844474756753491177ull}}, {{10660485411391954266ull, 6052721982568505977ull, 3586984274997051318ull, 2402796722970931986ull}}, {{17937292782667330736ull, 16789274515065408279ull, 13707102380601089955ull, 3003495903713664982ull}}, {{17809929959906775516ull, 16374907125404372445ull, 7910505938896586636ull, 3754369879642081228ull}}, {{13437049234155428649ull, 1010944916522956970ull, 14167438248665142456ull, 2346481174776300767ull}}, {{7572939505839510004ull, 1263681145653696213ull, 13097611792404040166ull, 2933101468470375959ull}}, {{14077860400726775408ull, 10802973468921896074ull, 11760328722077662303ull, 3666376835587969949ull}}, {{8373953464053693452ull, 8892030817724982189ull, 865352847314914167ull, 4582971044484962437ull}}, {{7539563924247252360ull, 12475048288719195724ull, 2846688538785515306ull, 2864356902803101523ull}}, {{9424454905309065450ull, 6370438324044218847ull, 17393418728764057845ull, 3580446128503876903ull}}, {{7168882613208943908ull, 12574733923482661463ull, 17130087392527684402ull, 4475557660629846129ull}}, {{11398080660896671799ull, 12470894720604051318ull, 3788775592688720895ull, 2797223537893653831ull}}, {{5024228789266063940ull, 10976932382327676244ull, 124283472433513215ull, 3496529422367067289ull}}, {{6280285986582579925ull, 9109479459482207401ull, 4767040358969279423ull, 4370661777958834111ull}}, {{15454393787682582214ull, 12610953689817461481ull, 9896929251996881495ull, 2731663611224271319ull}}, {{5482934179321064055ull, 11152006093844438948ull, 7759475546568713965ull, 3414579514030339149ull}}, {{6853667724151330068ull, 104949562023384973ull, 14311030451638280361ull, 4268224392537923936ull}}, {{6589385336808275245ull, 11594808522333085368ull, 8944394032273925225ull, 2667640245336202460ull}}, {{8236731671010344056ull, 658452597634192998ull, 11180492540342406532ull, 3334550306670253075ull}}, {{1072542551908154262ull, 823065747042741248ull, 9363929657000620261ull, 4168187883337816344ull}}, {{670339094942596414ull, 2820259101115407232ull, 5852456035625387663ull, 2605117427086135215ull}}, {{837923868678245517ull, 17360381931676422752ull, 2703884026104346674ull, 3256396783857669019ull}}, {{1047404835847806896ull, 12477105377740752632ull, 17214913087912597055ull, 4070495979822086273ull}}, {{654628022404879310ull, 14715719888729052251ull, 3841791652304291303ull, 2544059987388803921ull}}, {{14653343083288262850ull, 13782963842483927409ull, 9413925583807752033ull, 3180074984236004901ull}}, {{4481620798828164850ull, 3393646747822745550ull, 16379092998187077946ull, 3975093730295006126ull}}, {{16636071054549766744ull, 6732715235816603872ull, 5625247105439535812ull, 2484433581434378829ull}}, {{2348344744477656813ull, 8415894044770754841ull, 11643244900226807669ull, 3105541976792973536ull}}, {{7547116949024458921ull, 15131553574390831455ull, 14554056125283509586ull, 3881927470991216920ull}}, {{11634477120781368682ull, 14068907002421657563ull, 9096285078302193491ull, 2426204669369510575ull}}, {{9931410382549322948ull, 12974447734599684050ull, 6758670329450353960ull, 3032755836711888219ull}}, {{3190890941331877877ull, 16218059668249605063ull, 3836651893385554546ull, 3790944795889860274ull}}, {{8911835865973505529ull, 14747973311083391068ull, 7009593451793359495ull, 2369340497431162671ull}}, {{11139794832466881911ull, 13823280620426850931ull, 4150305796314311465ull, 2961675621788953339ull}}, {{9313057522156214485ull, 3444042720251399952ull, 576196226965501428ull, 3702094527236191674ull}}, {{5820660951347634053ull, 11375898737011900778ull, 4971808660280826296ull, 2313809079522619796ull}}, {{16499198226039318374ull, 14219873421264875972ull, 6214760825351032870ull, 2892261349403274745ull}}, {{2177253708839596352ull, 8551469739726319158ull, 12380137050116178992ull, 3615326686754093431ull}}, {{11944939172904271248ull, 10689337174657898947ull, 10863485294217835836ull, 4519158358442616789ull}}, {{5159743973851475578ull, 15904207771015962650ull, 9095521318099841349ull, 2824473974026635493ull}}, {{15673052004169120280ull, 6045201658487789600ull, 15981087666052189591ull, 3530592467533294366ull}}, {{1144570931501848734ull, 2944816054682349097ull, 10752987545710461181ull, 4413240584416617958ull}}, {{12244571878257125219ull, 4146353043390162137ull, 2108931197641650334ull, 2758275365260386224ull}}, {{1470656792539242812ull, 14406313341092478480ull, 2636163997052062917ull, 3447844206575482780ull}}, {{1838320990674053515ull, 4172833621083434388ull, 3295204996315078647ull, 4309805258219353475ull}}, {{10372322656026059255ull, 9525550040818228348ull, 18200404187192781818ull, 2693628286387095921ull}}, {{12965403320032574069ull, 2683565514168009627ull, 8915447178708813561ull, 3367035357983869902ull}}, {{11595068131613329682ull, 7966142911137399938ull, 1920936936531241143ull, 4208794197479837378ull}}, {{11858603600685718955ull, 11896368347101956817ull, 5812271603759413618ull, 2630496373424898361ull}}, {{988196445574984982ull, 5647088397022670214ull, 11877025523126654927ull, 3288120466781122951ull}}, {{10458617593823507035ull, 2447174477850949863ull, 10234595885480930755ull, 4110150583476403689ull}}, {{13454165023780773753ull, 17670385113152701328ull, 17925837474494051481ull, 2568844114672752305ull}}, {{16817706279725967191ull, 8252923336158712948ull, 8572238787835400640ull, 3211055143340940382ull}}, {{2575388775947907373ull, 10316154170198391186ull, 1491926447939474992ull, 4013818929176175478ull}}, {{6221304003394830012ull, 6447596356373994491ull, 14767512085244335582ull, 2508636830735109673ull}}, {{3164943985816149611ull, 17282867482322268922ull, 4624332051273255765ull, 3135796038418887092ull}}, {{13179552019124962822ull, 7768526297620672440ull, 5780415064091569707ull, 3919745048023608865ull}}, {{8237220011953101764ull, 2549485926799226323ull, 15141974461125700827ull, 2449840655014755540ull}}, {{5684838996513989301ull, 17021915463781196616ull, 480724002697574417ull, 3062300818768444426ull}}, {{7106048745642486626ull, 7442336274444332058ull, 9824277040226743830ull, 3827876023460555532ull}}, {{9052966484453942045ull, 39774153100319632ull, 15363545186996490702ull, 2392422514662847207ull}}, {{11316208105567427557ull, 9273089728230175348ull, 14592745465318225473ull, 2990528143328559009ull}}, {{14145260131959284446ull, 16203048178715107089ull, 4405873776365618129ull, 3738160179160698762ull}}, {{1923258554833470923ull, 3209376084055860075ull, 7365357128655899235ull, 2336350111975436726ull}}, {{16239131248824002365ull, 17846778160351988805ull, 18430068447674649851ull, 2920437639969295907ull}}, {{6463856005747839244ull, 17696786682012598103ull, 18425899541165924410ull, 3650547049961619884ull}}, {{3468133988757411151ull, 12897611315660971821ull, 4585630352747853897ull, 4563183812452024856ull}}, {{4473426752187075922ull, 1143478044647025532ull, 2866018970467408686ull, 2851989882782515535ull}}, {{5591783440233844902ull, 10652719592663557723ull, 17417581768366424569ull, 3564987353478144418ull}}, {{2378043281864918223ull, 17927585509256835058ull, 12548605173603254903ull, 4456234191847680523ull}}, {{6097963069592961794ull, 18122269970926603767ull, 5537035224288340362ull, 2785146369904800327ull}}, {{3010767818563814338ull, 13429465426803478901ull, 2309608011933037549ull, 3481432962381000409ull}}, {{8375145791632155827ull, 2951773728222184914ull, 7498696033343684841ull, 4351791202976250511ull}}, {{9846152138197485296ull, 13374073626207335331ull, 11604214048480884881ull, 2719869501860156569ull}}, {{7696004154319468716ull, 2882533977477005452ull, 670209505318942390ull, 3399836877325195712ull}}, {{9620005192899335894ull, 12826539508701032623ull, 837761881648677987ull, 4249796096656494640ull}}, {{12930032273203166790ull, 5710744183724451437ull, 523601176030423742ull, 2656122560410309150ull}}, {{2327482286221794776ull, 16361802266510340105ull, 9877873506892805485ull, 3320153200512886437ull}}, {{7521038876204631373ull, 6617194777855761419ull, 16959027902043394761ull, 4150191500641108046ull}}, {{2394806288414200657ull, 15664961782228320647ull, 5987706420349733821ull, 2593869687900692529ull}}, {{16828565915799914533ull, 5746144172503237096ull, 12096319043864555181ull, 3242337109875865661ull}}, {{2588963321040341550ull, 11794366234056434275ull, 1285340749548530264ull, 4052921387344832077ull}}, {{17759003140146071133ull, 7371478896285271421ull, 3109180977681525367ull, 2533075867090520048ull}}, {{8363695869900425204ull, 4602662601929201373ull, 3886476222101906709ull, 3166344833863150060ull}}, {{15066305855802919409ull, 10365014270838889620ull, 4858095277627383386ull, 3957931042328937575ull}}, {{193069123022048823ull, 11089819937701693917ull, 9953838576158196472ull, 2473706901455585984ull}}, {{4853022422204948932ull, 13862274922127117396ull, 12442298220197745590ull, 3092133626819482480ull}}, {{6066278027756186165ull, 8104471615804120937ull, 15552872775247181988ull, 3865167033524353100ull}}, {{15320638813416086113ull, 14288666796732351393ull, 497173447674712934ull, 2415729395952720688ull}}, {{5315740461487943929ull, 8637461459060663434ull, 621466809593391168ull, 3019661744940900860ull}}, {{15868047613714705720ull, 10796826823825829292ull, 776833511991738960ull, 3774577181176126075ull}}, {{694157721716915267ull, 6748016764891143308ull, 16626422009490694514ull, 2359110738235078796ull}}, {{867697152146144084ull, 17658392992968704943ull, 2336283438153816526ull, 2948888422793848496ull}}, {{14919679495464843816ull, 12849619204356105370ull, 2920354297692270658ull, 3686110528492310620ull}}, {{9426227332476278962ull, 6838651968590355905ull, 3650442872115338323ull, 4607638160615388275ull}}, {{17420607128866144112ull, 1968314471155278488ull, 18422427859567944116ull, 2879773850384617671ull}}, {{3329014837373128523ull, 2460393088944098111ull, 18416348806032542241ull, 3599717312980772089ull}}, {{17996326601998574366ull, 7687177379607510542ull, 9185377952258514089ull, 4499646641225965112ull}}, {{6636018107821721075ull, 16333700908323163849ull, 5740861220161571305ull, 2812279150766228195ull}}, {{12906708653204539248ull, 6582068080121791099ull, 2564390506774576228ull, 3515348938457785244ull}}, {{11521699798078286156ull, 8227585100152238874ull, 3205488133468220285ull, 4394186173072231555ull}}, {{11812748392226316751ull, 7448083696808843248ull, 18144331147913495342ull, 2746366358170144721ull}}, {{14765935490282895939ull, 86732584156278252ull, 8845355879609705466ull, 3432957947712680902ull}}, {{10675289144068308ull, 9331787767050123624ull, 1833322812657356024ull, 4291197434640851128ull}}, {{6672055715042693ull, 5832367354406327265ull, 1145826757910847515ull, 2681998396650531955ull}}, {{4620026088071191270ull, 2678773174580521177ull, 15267341502670723106ull, 3352497995813164943ull}}, {{10386718628516376991ull, 12571838505080427279ull, 14472490859911015978ull, 4190622494766456179ull}}, {{13409228170463817475ull, 12469085084102654953ull, 6739463778230691034ull, 2619139059229035112ull}}, {{2926477157797608132ull, 6362984318273542884ull, 8424329722788363793ull, 3273923824036293890ull}}, {{3658096447247010165ull, 12565416416269316509ull, 1307040116630678933ull, 4092404780045367363ull}}, {{4592153288743075305ull, 10159228269382016770ull, 16957801137390031997ull, 2557752987528354601ull}}, {{14963563647783619940ull, 17310721355154908866ull, 7362193366455376284ull, 3197191234410443252ull}}, {{9481082522874749116ull, 3191657620234084467ull, 9202741708069220356ull, 3996489043013054065ull}}, {{3619833567583024246ull, 11218158049501078600ull, 17280928613611732482ull, 2497805651883158790ull}}, {{4524791959478780307ull, 4799325525021572442ull, 12377788730159889795ull, 3122257064853948488ull}}, {{14879361986203251192ull, 1387470887849577648ull, 15472235912699862244ull, 3902821331067435610ull}}, {{9299601241377031995ull, 10090541341760761838ull, 14281833463864801806ull, 2439263331917147256ull}}, {{2401129514866514186ull, 3389804640346176490ull, 17852291829831002258ull, 3049079164896434070ull}}, {{12224783930437918540ull, 13460627837287496420ull, 13091992750433977014ull, 3811348956120542588ull}}, {{16863861993378474896ull, 3801206379877297358ull, 17405867505876011442ull, 2382093097575339117ull}}, {{11856455454868317812ull, 13974880011701397506ull, 7922276327062850590ull, 2977616371969173897ull}}, {{5597197281730621456ull, 8245227977771971075ull, 14514531427255951142ull, 3722020464961467371ull}}, {{1192405291867944458ull, 541581467680094018ull, 6765739132821275512ull, 2326262790600917107ull}}, {{10713878651689706381ull, 676976834600117522ull, 3845487897599206486ull, 2907828488251146384ull}}, {{4168976277757357168ull, 10069593080104922711ull, 4806859871999008107ull, 3634785610313932980ull}}, {{599534328769308556ull, 7975305331703765485ull, 6008574839998760134ull, 4543482012892416225ull}}, {{2680551964694511800ull, 372879813887465524ull, 15284574321067694844ull, 2839676258057760140ull}}, {{3350689955868139749ull, 466099767359331905ull, 658973827625066939ull, 3549595322572200176ull}}, {{8800048463262562591ull, 14417682764481328593ull, 823717284531333673ull, 4436994153215250220ull}}, {{17029245335607571379ull, 2093522700159748514ull, 9738195339686859354ull, 2773121345759531387ull}}, {{12063184632654688416ull, 11840275412054461451ull, 7561058156181186288ull, 3466401682199414234ull}}, {{10467294772390972616ull, 14800344265068076814ull, 227950658371707052ull, 4333002102749267793ull}}, {{1930373214316969981ull, 26843128812772201ull, 11671684207550786668ull, 2708126314218292370ull}}, {{7024652536323600380ull, 33553911015965251ull, 5366233222583707527ull, 3385157892772865463ull}}, {{4169129651977112571ull, 13877000444052120276ull, 2096105509802246504ull, 4231447365966081829ull}}, {{11829078069340471165ull, 8673125277532575172ull, 3615908952840098017ull, 2644654603728801143ull}}, {{14786347586675588956ull, 15453092615343106869ull, 18354944246332286233ull, 3305818254661001428ull}}, {{4647876428062322483ull, 5481307713896719875ull, 4496936234205806176ull, 4132272818326251786ull}}, {{599079758325257600ull, 3425817321185449922ull, 7422271164806016764ull, 2582670511453907366ull}}, {{9972221734761347808ull, 4282271651481812402ull, 54466919152745147ull, 3228338139317384208ull}}, {{3241905131596908952ull, 741153545924877599ull, 68083648940931434ull, 4035422674146730260ull}}, {{8943719734889149951ull, 5074906984630436403ull, 9265924317442857954ull, 2522139171341706412ull}}, {{6567963650184049535ull, 15567005767642821312ull, 11582405396803572442ull, 3152673964177133015ull}}, {{8209954562730061919ull, 10235385172698750832ull, 9866320727577077649ull, 3940842455221416269ull}}, {{5131221601706288699ull, 17926330779005189030ull, 8472293463949367482ull, 2463026534513385168ull}}, {{15637399038987636682ull, 13184541436901710479ull, 10590366829936709353ull, 3078783168141731460ull}}, {{14935062780307157948ull, 2645618740844974387ull, 13237958537420886692ull, 3848478960177164325ull}}, {{7028571228478279766ull, 10876883749882884800ull, 10579567095101748134ull, 2405299350110727703ull}}, {{8785714035597849707ull, 4372732650498830192ull, 8612772850449797264ull, 3006624187638409629ull}}, {{10982142544497312134ull, 5465915813123537740ull, 15377652081489634484ull, 3758280234548012036ull}}, {{16087211127165595892ull, 12639569420056986895ull, 387660514076245744ull, 2348925146592507523ull}}, {{15497327890529606961ull, 15799461775071233619ull, 14319633697877470892ull, 2936156433240634403ull}}, {{14759973844734620797ull, 1302583145129490408ull, 13287856103919450712ull, 3670195541550793004ull}}, {{3223232208724380ull, 1628228931411863011ull, 16609820129899313390ull, 4587744426938491255ull}}, {{16142915584626310402ull, 14852701137414578093ull, 17298666608828152724ull, 2867340266836557034ull}}, {{6343586425500724290ull, 119132348058671001ull, 12399961224180415098ull, 3584175333545696293ull}}, {{12541169050303293266ull, 9372287471928114559ull, 1664893474943355160ull, 4480219166932120367ull}}, {{14755759684080640148ull, 5857679669955071599ull, 7958087449480678831ull, 2800136979332575229ull}}, {{13833013586673412280ull, 2710413569016451595ull, 14559295330278236443ull, 3500171224165719036ull}}, {{12679580964914377446ull, 17223075016552728206ull, 18199119162847795553ull, 4375214030207148795ull}}, {{3313052084644098000ull, 3846892857704373273ull, 9068606467566178269ull, 2734508768879467997ull}}, {{8753001124232510404ull, 9420302090557854495ull, 15947444102885110740ull, 3418135961099334996ull}}, {{6329565386863250101ull, 11775377613197318119ull, 1487561054896836809ull, 4272669951374168746ull}}, {{10873507394430613169ull, 442081980607241968ull, 5541411677737910910ull, 2670418719608855466ull}}, {{13591884243038266462ull, 9775974512613828268ull, 16150136634027164445ull, 3338023399511069332ull}}, {{16989855303797833077ull, 16831654159194673239ull, 1740926718824403940ull, 4172529249388836666ull}}, {{17536188592514727529ull, 1296411812641894966ull, 5699765217692640367ull, 2607830780868022916ull}}, {{12696863703788633603ull, 15455572821084532420ull, 7124706522115800458ull, 3259788476085028645ull}}, {{15871079629735792004ull, 10096093989500889717ull, 13517569171072138477ull, 4074735595106285806ull}}, {{12225267777798563955ull, 8615901752651750025ull, 3836794713492698644ull, 2546709746941428629ull}}, {{1446526666966041231ull, 10769877190814687532ull, 9407679410293261209ull, 3183387183676785786ull}}, {{1808158333707551539ull, 18074032506945747319ull, 2536227226011800703ull, 3979233979595982233ull}}, {{8047627986208301568ull, 18213799344482173930ull, 13114357062325845199ull, 2487021237247488895ull}}, {{836162945905601152ull, 18155563162175329509ull, 11781260309479918595ull, 3108776546559361119ull}}, {{5656889700809389344ull, 18082767934291773982ull, 10114889368422510340ull, 3885970683199201399ull}}, {{17370614118288032052ull, 2078357922077582930ull, 13239334882905150819ull, 2428731676999500874ull}}, {{12489895611005264257ull, 16433005457879142375ull, 7325796566776662715ull, 3035914596249376093ull}}, {{11000683495329192417ull, 15929570803921540065ull, 13768931726898216298ull, 3794893245311720116ull}}, {{18404642230649215021ull, 14567667770878350444ull, 17828954366166160994ull, 2371808278319825072ull}}, {{4559058714601967160ull, 8986212676743162248ull, 3839448883998149627ull, 2964760347899781341ull}}, {{5698823393252458950ull, 6621079827501564906ull, 9410997123425074938ull, 3705950434874726676ull}}, {{8173450639210174748ull, 8749860910615865970ull, 15105245238995447644ull, 2316219021796704172ull}}, {{993441262157942627ull, 10937326138269832463ull, 434812475034757939ull, 2895273777245880216ull}}, {{15076859632979591995ull, 9059971654409902674ull, 543515593793447424ull, 3619092221557350270ull}}, {{9622702504369714186ull, 11324964568012378343ull, 9902766529096585088ull, 4523865276946687837ull}}, {{12931718092872153222ull, 7078102855007736464ull, 8495072089899059632ull, 2827415798091679898ull}}, {{16164647616090191528ull, 8847628568759670580ull, 1395468075519048732ull, 3534269747614599873ull}}, {{1759065446403187794ull, 11059535710949588226ull, 6356021112826198819ull, 4417837184518249841ull}}, {{5711101922429380275ull, 4606366810129798689ull, 15501728241584844022ull, 2761148240323906150ull}}, {{11750563421464113248ull, 14981330549517024169ull, 10153788265126279219ull, 3451435300404882688ull}}, {{853146221547977848ull, 14114977168468892308ull, 12692235331407849024ull, 4314294125506103360ull}}, {{9756588425322261963ull, 8821860730293057692ull, 7932647082129905640ull, 2696433828441314600ull}}, {{12195735531652827454ull, 11027325912866322115ull, 9915808852662382050ull, 3370542285551643250ull}}, {{10632983396138646413ull, 4560785354228126836ull, 3171389028973201755ull, 4213177856939554063ull}}, {{15868986659441429816ull, 544647837178885320ull, 8899647170749332953ull, 2633236160587221289ull}}, {{1389489250592235654ull, 5292495814900994555ull, 15736244981864054095ull, 3291545200734026611ull}}, {{15571919618522458280ull, 2003933750198855289ull, 15058620208902679715ull, 4114431500917533264ull}}, {{2814920733935454569ull, 17393359658370142220ull, 9411637630564174821ull, 2571519688073458290ull}}, {{3518650917419318211ull, 7906641517680514063ull, 2541175001350442719ull, 3214399610091822863ull}}, {{18233371702056311476ull, 5271615878673254674ull, 17011526806970217111ull, 4017999512614778578ull}}, {{16007543332212582577ull, 10212288951811866027ull, 15243890272783773598ull, 2511249695384236611ull}}, {{15397743146838340317ull, 3541989152910056726ull, 14443176822552329094ull, 3139062119230295764ull}}, {{10023806896693149588ull, 13650858477992346716ull, 18053971028190411367ull, 3923827649037869705ull}}, {{15488251347287994300ull, 15449315576386298553ull, 4366202864977925248ull, 2452392280648668566ull}}, {{5525256128827829163ull, 864900396773321576ull, 14681125618077182369ull, 3065490350810835707ull}}, {{6906570161034786454ull, 5692811514394039874ull, 13739721004169090057ull, 3831862938513544634ull}}, {{8928292369074129438ull, 15087222242564744681ull, 13199011646033069189ull, 2394914336570965396ull}}, {{15772051479770049701ull, 5023969747923767139ull, 16498764557541336487ull, 2993642920713706745ull}}, {{15103378331285174223ull, 1668276166477321020ull, 6788397641644506897ull, 3742053650892133432ull}}, {{216239420198458081ull, 12571887650116795398ull, 4242748526027816810ull, 2338783531807583395ull}}, {{9493671312102848410ull, 6491487525791218439ull, 691749639107383109ull, 2923479414759479244ull}}, {{7255403121701172608ull, 12726045425666410953ull, 864687048884228886ull, 3654349268449349055ull}}, {{13680939920553853664ull, 6684184745228237883ull, 14915916866387449820ull, 4567936585561686318ull}}, {{6244744441132464588ull, 13400987502622424485ull, 4710762023064768233ull, 2854960365976053949ull}}, {{12417616569842968639ull, 2916176322995866894ull, 10500138547258348196ull, 3568700457470067436ull}}, {{6298648675448934990ull, 3645220403744833618ull, 13125173184072935245ull, 4460875571837584295ull}}, {{8548341440582972273ull, 4584105761554214963ull, 15120762267686666384ull, 2788047232398490184ull}}, {{6073740782301327437ull, 5730132201942768704ull, 454208760898781364ull, 3485059040498112731ull}}, {{7592175977876659297ull, 7162665252428460880ull, 14402819006405640417ull, 4356323800622640913ull}}, {{4745109986172912061ull, 16005880828836257810ull, 2084232851362443404ull, 2722702375389150571ull}}, {{15154759519570915884ull, 1560606962335770646ull, 16440349119485217968ull, 3403377969236438213ull}}, {{9720077362608869046ull, 1950758702919713308ull, 6715378344074358748ull, 4254222461545547767ull}}, {{15298420388485318962ull, 10442596226179596625ull, 11114640492687556073ull, 2658889038465967354ull}}, {{5287967430324484991ull, 17664931301151883686ull, 4669928579004669283ull, 3323611298082459193ull}}, {{15833331324760382046ull, 17469478108012466703ull, 10449096742183224508ull, 4154514122603073991ull}}, {{16813361105616320635ull, 1695051780653015881ull, 13448214491505597174ull, 2596571326626921244ull}}, {{7181643326738237082ull, 11342186762671045660ull, 16810268114381996467ull, 3245714158283651555ull}}, {{8977054158422796352ull, 9566047434911419171ull, 16401149124550107680ull, 4057142697854564444ull}}, {{3304815839800553768ull, 5978779646819636982ull, 1027346165989041492ull, 2535714186159102778ull}}, {{13354391836605468018ull, 7473474558524546227ull, 10507554744341077673ull, 3169642732698878472ull}}, {{12081303777329447118ull, 13953529216583070688ull, 13134443430426347091ull, 3962053415873598090ull}}, {{7550814860830904449ull, 6415112751150725228ull, 12820713162443854836ull, 2476283384920998806ull}}, {{9438518576038630561ull, 8018890938938406535ull, 6802519416200042737ull, 3095354231151248508ull}}, {{7186462201620900298ull, 14635299692100396073ull, 8503149270250053421ull, 3869192788939060635ull}}, {{16020753922081532446ull, 11452905316776441497ull, 3008625284692589436ull, 2418245493086912897ull}}, {{6190884347319751846ull, 14316131645970551872ull, 8372467624293124699ull, 3022806866358641121ull}}, {{7738605434149689807ull, 13283478539035801936ull, 15077270548793793778ull, 3778508582948301401ull}}, {{4836628396343556129ull, 12913860105324764114ull, 2505765065355039255ull, 2361567864342688376ull}}, {{15269157532284220970ull, 11530639113228567238ull, 3132206331693799069ull, 2951959830428360470ull}}, {{9863074878500500404ull, 578240836253545336ull, 13138629951472024645ull, 3689949788035450587ull}}, {{6164421799062812753ull, 2667243531872159787ull, 5905800710456321451ull, 2306218617522156617ull}}, {{3093841230401128037ull, 17169112470122363446ull, 11993936906497789717ull, 2882773271902695771ull}}, {{13090673574856185854ull, 7626332532370790595ull, 10380735114694849243ull, 3603466589878369714ull}}, {{11751655950142844413ull, 4921229647036100340ull, 3752546856513785746ull, 4504333237347962143ull}}, {{16568157005694053566ull, 7687454547824950616ull, 9262870812962197947ull, 2815208273342476339ull}}, {{2263452183408015342ull, 4997632166353800367ull, 6966902497775359530ull, 3519010341678095424ull}}, {{16664373284542182889ull, 15470412244797026266ull, 8708628122219199412ull, 4398762927097619280ull}}, {{15026919321266252210ull, 445635616143365608ull, 5442892576386999633ull, 2749226829436012050ull}}, {{336905077873263646ull, 5168730538606594915ull, 16026987757338525349ull, 3436533536795015062ull}}, {{14256189402623743270ull, 11072599191685631547ull, 10810362659818380878ull, 4295666920993768828ull}}, {{6604275367426145592ull, 2308688476376131813ull, 15979848699241263857ull, 2684791825621105517ull}}, {{12867030227710069894ull, 7497546613897552670ull, 6139752818769416109ull, 3355989782026381897ull}}, {{6860415747782811559ull, 13983619285799328742ull, 12286377041889158040ull, 4194987227532977371ull}}, {{18122817897646420936ull, 8739762053624580463ull, 5373142641967029823ull, 2621867017208110857ull}}, {{18041836353630638266ull, 6313016548603337675ull, 11328114320886175183ull, 3277333771510138571ull}}, {{17940609423610909929ull, 3279584667326784190ull, 9548456882680331075ull, 4096667214387673214ull}}, {{6601194871329430802ull, 18190641481575097783ull, 1356099533247819017ull, 2560417008992295759ull}}, {{3639807570734400598ull, 8903243796686708517ull, 15530182471841937484ull, 3200521261240369698ull}}, {{9161445481845388652ull, 11129054745858385646ull, 10189356052947646047ull, 4000651576550462123ull}}, {{1114217407725980003ull, 13873188243802572885ull, 4062504523878584827ull, 2500407235344038827ull}}, {{6004457778084862908ull, 12729799286325828202ull, 466444636420843130ull, 3125509044180048534ull}}, {{16728944259460854443ull, 6688877071052509444ull, 9806427832380829721ull, 3906886305225060667ull}}, {{1232218125308258219ull, 15709763215476288163ull, 3823174386024324623ull, 2441803940765662917ull}}, {{15375330711917486486ull, 15025518000917972299ull, 9390654000957793683ull, 3052254925957078646ull}}, {{14607477371469470203ull, 14170211482720077470ull, 2514945464342466296ull, 3815318657446348308ull}}, {{4517987338741030973ull, 8856382176700048419ull, 10795212952068817243ull, 2384574160903967692ull}}, {{1035798154998900812ull, 6458791702447672620ull, 13494016190086021554ull, 2980717701129959615ull}}, {{1294747693748626015ull, 17296861664914366583ull, 12255834219180139038ull, 3725897126412449519ull}}, {{7726746336233973116ull, 6198852522144091210ull, 14577425414628668755ull, 2328685704007780949ull}}, {{435060883437690586ull, 3136879634252726109ull, 4386723713003672232ull, 2910857130009726187ull}}, {{5155512122724501137ull, 3921099542815907636ull, 871718622827202386ull, 3638571412512157734ull}}, {{6444390153405626421ull, 14124746465374660353ull, 10313020315388778790ull, 4548214265640197167ull}}, {{15556958891946986273ull, 4216280522431774816ull, 13363166724759068600ull, 2842633916025123229ull}}, {{999454541224181226ull, 5270350653039718521ull, 2868900350666672038ull, 3553292395031404037ull}}, {{5861004194957614436ull, 15811310353154423959ull, 8197811456760727951ull, 4441615493789255046ull}}, {{10580656649489590879ull, 16799597998362596830ull, 511946142048067065ull, 2776009683618284404ull}}, {{4002448775007212790ull, 7164439442671082326ull, 639932677560083832ull, 3470012104522855505ull}}, {{14226433005613791795ull, 8955549303338852907ull, 5411601865377492694ull, 4337515130653569381ull}}, {{6585677619294925920ull, 985532296159395163ull, 5688094175074626886ull, 2710946956658480863ull}}, {{3620411005691269496ull, 10455287407054019762ull, 2498431700415895703ull, 3388683695823101079ull}}, {{13748885793968862678ull, 8457423240390136798ull, 16958097680802033341ull, 4235854619778876348ull}}, {{3981367602803151270ull, 7591732534457529451ull, 1375439013646495030ull, 2647409137361797718ull}}, {{365023485076551183ull, 266293631217136006ull, 10942670803912894596ull, 3309261421702247147ull}}, {{9679651393200464787ull, 332867039021420007ull, 9066652486463730341ull, 4136576777127808934ull}}, {{12967311148391372348ull, 2513884908602081456ull, 1054971785612443559ull, 2585360485704880584ull}}, {{16209138935489215435ull, 16977414191034765532ull, 1318714732015554448ull, 3231700607131100730ull}}, {{1814679595651967678ull, 2775023665083905300ull, 10871765451874218869ull, 4039625758913875912ull}}, {{10357546784137255607ull, 4040232799891134764ull, 6794853407421386793ull, 2524766099321172445ull}}, {{12946933480171569508ull, 9661977018291306359ull, 13105252777704121395ull, 3155957624151465556ull}}, {{11571980831787073981ull, 7465785254436745045ull, 16381565972130151744ull, 3944947030189331945ull}}, {{9538331029080615191ull, 4666115784022965653ull, 3320949704940262984ull, 2465591893868332466ull}}, {{16534599804778156892ull, 5832644730028707066ull, 13374559168030104538ull, 3081989867335415582ull}}, {{11444877719117920307ull, 16514177949390659641ull, 7494826923182854864ull, 3852487334169269478ull}}, {{235519546807618336ull, 10321361218369162276ull, 72580808561896386ull, 2407804583855793424ull}}, {{294399433509522920ull, 3678329486106677037ull, 90726010702370483ull, 3009755729819741780ull}}, {{4979685310314291554ull, 18432969912915510008ull, 113407513377963103ull, 3762194662274677225ull}}, {{3112303318946432221ull, 18438135223213275611ull, 11600094741929696699ull, 2351371663921673265ull}}, {{17725437203965203988ull, 18435983010589206609ull, 665060372129957162ull, 2939214579902091582ull}}, {{8321738449674341273ull, 13821606726381732454ull, 10054697502017222261ull, 3674018224877614477ull}}, {{1178801025238150784ull, 3441950352695001856ull, 17180057895948915731ull, 4592522781097018096ull}}, {{736750640773844240ull, 18292120034930233824ull, 10737536184968072331ull, 2870326738185636310ull}}, {{920938300967305300ull, 18253464025235404376ull, 4198548194355314606ull, 3587908422732045388ull}}, {{1151172876209131625ull, 13593457994689479662ull, 5248185242944143258ull, 4484885528415056735ull}}, {{14554541102912870978ull, 13107597265108312692ull, 10197644804481171392ull, 2803053455259410459ull}}, {{18193176378641088722ull, 16384496581385390865ull, 8135369987174076336ull, 3503816819074263074ull}}, {{8906412418019197190ull, 2033876653022186966ull, 945840447112819613ull, 4379771023842828843ull}}, {{954821742834610340ull, 3577015917352560806ull, 16732051343941369922ull, 2737356889901768026ull}}, {{10416899215398038733ull, 13694641933545476815ull, 11691692143071936594ull, 3421696112377210033ull}}, {{8409438000820160512ull, 7894930380077070211ull, 779557123557757031ull, 4277120140471512542ull}}, {{2950055741298906368ull, 11851860515189250738ull, 14322281257505761856ull, 2673200087794695338ull}}, {{12910941713478408768ull, 14814825643986563422ull, 8679479535027426512ull, 3341500109743369173ull}}, {{6915305104993235152ull, 71787981273652662ull, 15461035437211671045ull, 4176875137179211466ull}}, {{18157123745902935682ull, 2350710497509726865ull, 14274833166684682307ull, 2610546960737007166ull}}, {{8861346627096505891ull, 16773446177169322294ull, 8620169421501077075ull, 3263183700921258958ull}}, {{1853311247015856555ull, 16355121703034264964ull, 1551839740021570536ull, 4078979626151573698ull}}, {{10381691566239686155ull, 10221951064396415602ull, 5581585855940869489ull, 2549362266344733561ull}}, {{3753742420944831886ull, 17389124848922907407ull, 11588668338353474765ull, 3186702832930916951ull}}, {{80492007753651953ull, 7901348005871470547ull, 9874149404514455553ull, 3983378541163646189ull}}, {{16191208569341890135ull, 16467557549738138851ull, 8477186387035228672ull, 2489611588227278868ull}}, {{15627324693249974765ull, 2137702863463121948ull, 10596482983794035841ull, 3112014485284098585ull}}, {{1087411792852916840ull, 7283814597756290340ull, 17857289748169932705ull, 3890018106605123231ull}}, {{9903004407387848833ull, 16081599169666151222ull, 18078335120247289796ull, 2431261316628202019ull}}, {{3155383472380035233ull, 1655254888373137412ull, 17986232881881724342ull, 3039076645785252524ull}}, {{3944229340475044041ull, 11292440647321197573ull, 4036047028642603811ull, 3798845807231565656ull}}, {{4770986347010596478ull, 4751932395362054531ull, 2522529392901627382ull, 2374278629519728535ull}}, {{1352046915335857693ull, 15163287531057343972ull, 16988219796409197939ull, 2967848286899660668ull}}, {{1690058644169822117ull, 14342423395394292061ull, 2788530671801945808ull, 3709810358624575836ull}}, {{3362129661819832775ull, 8964014622121432538ull, 10966203706730991938ull, 2318631474140359897ull}}, {{13426034114129566777ull, 1981646240797014864ull, 18319440651841127827ull, 2898289342675449871ull}}, {{16782542642661958471ull, 16312115856278432292ull, 18287614796374021879ull, 3622861678344312339ull}}, {{2531434229617896472ull, 15778458801920652462ull, 18247832477040139445ull, 4528577097930390424ull}}, {{15417204448793349007ull, 12167379760414101740ull, 11404895298150087153ull, 2830360686206494015ull}}, {{824761487282134643ull, 1374166645235463464ull, 9644433104260221038ull, 3537950857758117519ull}}, {{1030951859102668304ull, 10941080343399105138ull, 7443855361897888393ull, 4422438572197646899ull}}, {{5256030930366555594ull, 18367390260692910471ull, 2346566591972486293ull, 2764024107623529312ull}}, {{1958352644530806588ull, 9124179770583974377ull, 2933208239965607867ull, 3455030134529411640ull}}, {{7059626824090896139ull, 6793538694802580067ull, 3666510299957009834ull, 4318787668161764550ull}}, {{2106423755843116135ull, 8857647702679000446ull, 16126626992755294858ull, 2699242292601102843ull}}, {{11856401731658670977ull, 1848687591493974749ull, 15546597722516730669ull, 3374052865751378554ull}}, {{985444109291175009ull, 6922545507794856341ull, 10209875116291137528ull, 4217566082189223193ull}}, {{2921745577520678333ull, 4326590942371785213ull, 17910386993750430715ull, 2635978801368264495ull}}, {{8263867990328235820ull, 796552659537343612ull, 17776297723760650490ull, 3294973501710330619ull}}, {{10329834987910294775ull, 10219062861276455323ull, 17608686136273425208ull, 4118716877137913274ull}}, {{4150303858230240282ull, 6386914288297784577ull, 15617114853598278659ull, 2574198048211195796ull}}, {{9799565841215188257ull, 3371956841944842817ull, 1074649493288296708ull, 3217747560263994746ull}}, {{16861143319946373225ull, 4214946052431053521ull, 10566683903465146693ull, 4022184450329993432ull}}, {{3620685547325401410ull, 4940184291983102403ull, 6604177439665716683ull, 2513865281456245895ull}}, {{18360914989438915474ull, 1563544346551490099ull, 3643535781154757950ull, 3142331601820307369ull}}, {{18339457718371256439ull, 11177802470044138432ull, 9166105744870835341ull, 3927914502275384211ull}}, {{11462161073982035274ull, 9291969552991280472ull, 3422973081330578136ull, 2454946563922115132ull}}, {{14327701342477544093ull, 11614961941239100590ull, 4278716351663222670ull, 3068683204902643915ull}}, {{8686254641242154308ull, 5295330389694099930ull, 736709421151640434ull, 3835854006128304894ull}}, {{10040595169203734347ull, 7921267511986200360ull, 14295501443501938983ull, 2397408753830190558ull}}, {{12550743961504667933ull, 5289898371555362546ull, 8646004767522647921ull, 2996760942287738198ull}}, {{6465057915026059108ull, 11224058982871591087ull, 1584133922548534093ull, 3745951177859672748ull}}, {{10958190224532368799ull, 9320879873508438381ull, 10213455738447609616ull, 2341219486162295467ull}}, {{18309423799092848902ull, 11651099841885547976ull, 8155133654632124116ull, 2926524357702869334ull}}, {{4440035675156509512ull, 14563874802356934971ull, 970545031435379337ull, 3658155447128586668ull}}, {{938358575518248986ull, 4369785447664005002ull, 1213181289294224172ull, 4572694308910733335ull}}, {{5198160128126293520ull, 11954487941644778934ull, 7675767333449971963ull, 2857933943069208334ull}}, {{15721072197012642708ull, 10331423908628585763ull, 371337129957689146ull, 3572417428836510418ull}}, {{15039654227838415481ull, 3690907848930956396ull, 9687543449301887241ull, 4465521786045638022ull}}, {{176411855544233868ull, 13836032451650317508ull, 1443028637386291621ull, 2790951116278523764ull}}, {{220514819430292335ull, 3459982509280733173ull, 1803785796732864527ull, 3488688895348154705ull}}, {{4887329542715253322ull, 18160036191883080178ull, 6866418264343468562ull, 4360861119185193381ull}}, {{7666266982624421231ull, 15961708638354313015ull, 6597354424428361803ull, 2725538199490745863ull}}, {{4971147709853138634ull, 15340449779515503365ull, 3635007012108064350ull, 3406922749363432329ull}}, {{10825620655743811197ull, 9952190187539603398ull, 9155444783562468342ull, 4258653436704290411ull}}, {{2154326891412494094ull, 1608432848784864220ull, 3416309980512848762ull, 2661658397940181507ull}}, {{2692908614265617617ull, 11233913097835856083ull, 18105445530923224664ull, 3327072997425226883ull}}, {{17201193823114185734ull, 14042391372294820103ull, 18020120895226642926ull, 4158841246781533604ull}}, {{17668275167087447940ull, 4164808589256874660ull, 2039203522661876021ull, 2599275779238458503ull}}, {{3638599885149758309ull, 9817696754998481230ull, 16384062458609508738ull, 3249094724048073128ull}}, {{13771621893291973694ull, 3048748906893325729ull, 2033333999552334307ull, 4061368405060091411ull}}, {{1689734655666401703ull, 18046369131304186245ull, 17411734814216066605ull, 2538355253162557131ull}}, {{6723854338010390032ull, 8722903358848069094ull, 17152982499342695353ull, 3172944066453196414ull}}, {{17628189959367763348ull, 15515315216987474271ull, 12217856087323593383ull, 3966180083066495518ull}}, {{17935147752245933949ull, 16614601038258253275ull, 3024474036149857960ull, 2478862551916559699ull}}, {{17807248671880029532ull, 2321507224113264978ull, 17615650600469486163ull, 3098578189895699623ull}}, {{13035688802995261107ull, 16736942085423744935ull, 17407877232159469799ull, 3873222737369624529ull}}, {{15064834529513120048ull, 17378117831030922440ull, 3962394242458586768ull, 2420764210856015331ull}}, {{384299088181848444ull, 3275903215079101435ull, 341306784645845557ull, 3025955263570019164ull}}, {{14315431915509474267ull, 8706565037276264697ull, 426633480807306946ull, 3782444079462523955ull}}, {{2029615919552339561ull, 10053289166725053340ull, 16407546990000424505ull, 2364027549664077471ull}}, {{2537019899440424451ull, 17178297476833704579ull, 15897747719073142727ull, 2955034437080096839ull}}, {{17006332929582694275ull, 16861185827614742819ull, 15260498630414040505ull, 3693793046350121049ull}}, {{8323115071775489970ull, 3620712114618132406ull, 2620282616367693460ull, 2308620653968825656ull}}, {{1180521802864586655ull, 4525890143272665508ull, 3275353270459616825ull, 2885775817461032070ull}}, {{1475652253580733318ull, 10269048697518219789ull, 13317563624929296839ull, 3607219771826290087ull}}, {{6456251335403304552ull, 8224624853470386832ull, 12035268512734233145ull, 4509024714782862609ull}}, {{4035157084627065345ull, 16669605579487461530ull, 604513792817813859ull, 2818140446739289131ull}}, {{14267318392638607489ull, 16225320955931939008ull, 14590700296304431036ull, 3522675558424111413ull}}, {{17834147990798259361ull, 1834907121205372144ull, 4403317315098375084ull, 4403344448030139267ull}}, {{11146342494248912101ull, 10370188987608133398ull, 446230312722790475ull, 2752090280018837042ull}}, {{4709556080956364318ull, 8351050216082778844ull, 9781159927758263902ull, 3440112850023546302ull}}, {{5886945101195455398ull, 1215440733248697747ull, 3003077872843054070ull, 4300141062529432878ull}}, {{1373497679033465672ull, 14594708513562599804ull, 15711981725809072505ull, 2687588164080895548ull}}, {{1716872098791832089ull, 4408327586671086043ull, 1193233083551789016ull, 3359485205101119436ull}}, {{15981148178771953824ull, 5510409483338857553ull, 1491541354439736270ull, 4199356506376399295ull}}, {{3070688584091389284ull, 17279063982368949683ull, 7849742374165917024ull, 2624597816485249559ull}}, {{17673418785396400317ull, 3152085904251635487ull, 5200491949280008377ull, 3280747270606561949ull}}, {{17480087463318112492ull, 8551793398741932263ull, 11112300955027398375ull, 4100934088258202436ull}}, {{17842583692214902164ull, 12262399901854789520ull, 16168560133746899792ull, 2563083805161376522ull}}, {{3856485541559076088ull, 15327999877318486901ull, 10987328130328848932ull, 3203854756451720653ull}}, {{9432292945376233014ull, 713255772938557010ull, 18345846181338449070ull, 4004818445564650816ull}}, {{10506869109287533538ull, 14280842913368761843ull, 11466153863336530668ull, 2503011528477906760ull}}, {{8521900368182029019ull, 17851053641710952304ull, 14332692329170663335ull, 3128764410597383450ull}}, {{10652375460227536273ull, 17702131033711302476ull, 8692493374608553361ull, 3910955513246729313ull}}, {{15881106699496985979ull, 4146302868428482191ull, 16962023405198815611ull, 2444347195779205820ull}}, {{15239697355943844570ull, 571192567108214835ull, 2755785182788967898ull, 3055433994724007276ull}}, {{14437935676502417808ull, 9937362745740044352ull, 3444731478486209872ull, 3819292493405009095ull}}, {{9023709797814011130ull, 6210851716087527720ull, 9070486201694963026ull, 2387057808378130684ull}}, {{11279637247267513912ull, 16986936681964185458ull, 11338107752118703782ull, 2983822260472663355ull}}, {{4876174522229616582ull, 12010298815600456015ull, 9560948671720991824ull, 3729777825590829194ull}}, {{9965138104034592220ull, 7506436759750285009ull, 10587278938253007794ull, 2331111140994268246ull}}, {{17068108648470628179ull, 159673912833080453ull, 4010726635961483935ull, 2913888926242835308ull}}, {{7500077755306121512ull, 14034650446323514279ull, 5013408294951854918ull, 3642361157803544135ull}}, {{4763411175705263986ull, 8319941021049617041ull, 1655074350262430744ull, 4552951447254430169ull}}, {{14506347030884259751ull, 5199963138156010650ull, 12563636514982488975ull, 2845594654534018855ull}}, {{8909561751750548881ull, 1888267904267625409ull, 11092859625300723315ull, 3556993318167523569ull}}, {{15748638208115574005ull, 16195392935616695473ull, 31016476343740431ull, 4446241647709404462ull}}, {{2925369852431151897ull, 17039649612401516527ull, 13854443352997001481ull, 2778901029818377788ull}}, {{17491770370821103584ull, 7464503960219731946ull, 17318054191246251852ull, 3473626287272972235ull}}, {{12641340926671603671ull, 9330629950274664933ull, 17035881720630426911ull, 4342032859091215294ull}}, {{10206681088383446247ull, 12749172746562747439ull, 6035740056966628915ull, 2713770536932009559ull}}, {{8146665342051919904ull, 11324779914776046395ull, 2932989052780898240ull, 3392213171165011949ull}}, {{5571645659137511976ull, 14155974893470057994ull, 8277922334403510704ull, 4240266463956264936ull}}, {{8093964555388332889ull, 8847484308418786246ull, 5173701459002194190ull, 2650166539972665585ull}}, {{894083657380640304ull, 1835983348668707000ull, 11078812842180130642ull, 3312708174965831981ull}}, {{1117604571725800379ull, 11518351222690659558ull, 13457997442999590ull, 4140885218707289977ull}}, {{14533560912610788949ull, 2587283495754274319ull, 11537626294470344504ull, 2588053261692056235ull}}, {{13555265122336098282ull, 3234104369692842899ull, 9810346849660542726ull, 3235066577115070294ull}}, {{12332395384492734949ull, 13266002498970829432ull, 3039561525220902599ull, 4043833221393837868ull}}, {{7707747115307959343ull, 15208780589497850251ull, 11123097990117839932ull, 2527395763371148667ull}}, {{5022997875707561275ull, 564231663162761198ull, 9292186469219912012ull, 3159244704213935834ull}}, {{15502119381489227402ull, 705289578953451497ull, 2391861049670114207ull, 3949055880267419793ull}}, {{2771295585789685270ull, 7358335014486989042ull, 13024128202112291139ull, 2468159925167137370ull}}, {{12687491519091882396ull, 4586232749681348398ull, 7056788215785588116ull, 3085199906458921713ull}}, {{6635992362010077186ull, 5732790937101685498ull, 13432671288159373049ull, 3856499883073652141ull}}, {{8759181244683686146ull, 15112209381757023196ull, 10701262564313302107ull, 2410312426921032588ull}}, {{10948976555854607682ull, 14278575708768891091ull, 13376578205391627634ull, 3012890533651290735ull}}, {{9074534676390871698ull, 8624847599106338056ull, 12109036738312146639ull, 3766113167064113419ull}}, {{5671584172744294812ull, 12308058777082543141ull, 5262304952231397697ull, 2353820729415070887ull}}, {{11701166234357756418ull, 1550015416071015214ull, 1966195171861859218ull, 2942275911768838609ull}}, {{5403085756092419715ull, 11160891306943544826ull, 7069429983254711926ull, 3677844889711048261ull}}, {{15977229231970300451ull, 4727742096824655224ull, 13448473497495777812ull, 4597306112138810326ull}}, {{9985768269981437782ull, 12178210847370185323ull, 3793609917507473228ull, 2873316320086756454ull}}, {{7870524319049409324ull, 15222763559212731654ull, 13965384433739117343ull, 3591645400108445567ull}}, {{614783361956985847ull, 14416768430588526664ull, 12845044523746508775ull, 4489556750135556959ull}}, {{384239601223116154ull, 15928009296758911021ull, 14945681854982649840ull, 2805972968834723099ull}}, {{5091985519956283097ull, 1463267547239087160ull, 14070416300300924397ull, 3507466211043403874ull}}, {{6364981899945353871ull, 6440770452476246854ull, 8364648338521379688ull, 4384332763804254843ull}}, {{17813171742748009882ull, 4025481532797654283ull, 2922062202362168353ull, 2740207977377659277ull}}, {{17654778660007624448ull, 9643537934424455758ull, 8264263771380098345ull, 3425259971722074096ull}}, {{12845101288154754752ull, 16666108436457957602ull, 10330329714225122931ull, 4281574964652592620ull}}, {{12639874323524109624ull, 8110474763572529549ull, 15679828108245477640ull, 2675984352907870387ull}}, {{1964784849122973318ull, 10138093454465661937ull, 14988099116879459146ull, 3344980441134837984ull}}, {{7067667079831104551ull, 3449244781227301613ull, 288379822389772317ull, 4181225551418547481ull}}, {{6723134934108134297ull, 4461620997480757460ull, 11709452435062077458ull, 2613265969636592175ull}}, {{8403918667635167871ull, 14800398283705722633ull, 10025129525400208918ull, 3266582462045740219ull}}, {{15116584352971347742ull, 9277125817777377483ull, 7919725888322873244ull, 4083228077557175274ull}}, {{7142022211393398387ull, 15021575672965636735ull, 9561514698629183681ull, 2552017548473234546ull}}, {{4315841745814360080ull, 4941911535924882207ull, 2728521336431703794ull, 3190021935591543183ull}}, {{783116163840562195ull, 15400761456760878567ull, 17245709725821793454ull, 3987527419489428978ull}}, {{7406976630041433228ull, 5013789892048161200ull, 15390254597066008813ull, 2492204637180893111ull}}, {{9258720787551791535ull, 10878923383487589404ull, 14626132227905123112ull, 3115255796476116389ull}}, {{11573400984439739419ull, 13598654229359486755ull, 4447607229599240178ull, 3894069745595145487ull}}, {{4927532606061143185ull, 13110844911777067126ull, 9697283546140606967ull, 2433793590996965929ull}}, {{15382787794431204789ull, 11776870121293946003ull, 16733290451103146613ull, 3042241988746207411ull}}, {{14616798724611618082ull, 886029596335268792ull, 16304927045451545363ull, 3802802485932759264ull}}, {{9135499202882261302ull, 16694669562205400659ull, 10190579403407215851ull, 2376751553707974540ull}}, {{6807687985175438723ull, 16256650934329362920ull, 12738224254259019814ull, 2970939442134968175ull}}, {{8509609981469298404ull, 11097441631056927842ull, 11311094299396386864ull, 3713674302668710219ull}}, {{9930192256845699406ull, 6935901019410579901ull, 4763590927909047838ull, 2321046439167943887ull}}, {{17024426339484512162ull, 17893248311118000684ull, 1342802641458921893ull, 2901308048959929859ull}}, {{2833788850646088586ull, 8531502333615337144ull, 15513561357105816079ull, 3626635061199912323ull}}, {{3542236063307610733ull, 6052691898591783526ull, 14780265677954882195ull, 4533293826499890404ull}}, {{16048955594849420420ull, 1477089427406170751ull, 14294011867025564ull, 2833308641562431503ull}}, {{15449508475134387621ull, 1846361784257713439ull, 13852925570115945667ull, 3541635801953039378ull}}, {{14700199575490596622ull, 16143010285604305511ull, 8092784925790156275ull, 4427044752441299223ull}}, {{16105153762322704745ull, 7783538419288996992ull, 11975519606259929528ull, 2766902970275812014ull}}, {{1684698129193829315ull, 9729423024111246241ull, 5746027470970136102ull, 3458628712844765018ull}}, {{6717558679919674548ull, 2938406743284281993ull, 16405906375567445936ull, 4323285891055956272ull}}, {{15727689221018266353ull, 1836504214552676245ull, 10253691484729653710ull, 2702053681909972670ull}}, {{5824553470990669229ull, 11519002305045621115ull, 3593742319057291329ull, 3377567102387465838ull}}, {{2669005820310948632ull, 563694826024862682ull, 13715549935676389970ull, 4221958877984332297ull}}, {{6279814656121730799ull, 4963995284692927080ull, 1654689682156661875ull, 2638724298740207686ull}}, {{7849768320152163499ull, 1593308087438770946ull, 11291734139550603152ull, 3298405373425259607ull}}, {{588838363335428565ull, 1991635109298463683ull, 9502981656010866036ull, 4123006716781574509ull}}, {{16508925041580500517ull, 10468143980166315609ull, 8245206544220485224ull, 2576879197988484068ull}}, {{6801098246693461935ull, 13085179975207894512ull, 10306508180275606530ull, 3221098997485605085ull}}, {{8501372808366827418ull, 7133102932155092332ull, 17494821243771896067ull, 4026373746857006356ull}}, {{14536730042084042945ull, 2152346323383238755ull, 1710891240502659234ull, 2516483591785628973ull}}, {{13559226534177665777ull, 11913804941083824252ull, 6750300069055711946ull, 3145604489732036216ull}}, {{16949033167722082221ull, 5668884139500004507ull, 8437875086319639933ull, 3932005612165045270ull}}, {{8287302720612607436ull, 5848895596401196769ull, 661985910522387054ull, 2457503507603153294ull}}, {{14970814419193147199ull, 16534491532356271769ull, 10050854425007759625ull, 3071879384503941617ull}}, {{4878459968709270287ull, 6833056360163176000ull, 17175254049687087436ull, 3839849230629927021ull}}, {{3049037480443293929ull, 13494032261956760808ull, 13040376790268123599ull, 2399905769143704388ull}}, {{3811296850554117411ull, 12255854309018563106ull, 16300470987835154499ull, 2999882211429630485ull}}, {{13987493100047422572ull, 10708131867845815978ull, 6540530679511779412ull, 3749852764287038107ull}}, {{13353869205957027012ull, 15915954454258410794ull, 1781988665481168180ull, 2343657977679398817ull}}, {{7468964470591507957ull, 1448198994113461877ull, 6839171850278848130ull, 2929572472099248521ull}}, {{13947891606666772850ull, 11033620779496603154ull, 13160650831275948066ull, 3661965590124060651ull}}, {{8211492471478690254ull, 4568653937515978135ull, 11839127520667547179ull, 4577456987655075814ull}}, {{12049711822315263265ull, 549565701733792382ull, 2787768681989829083ull, 2860910617284422384ull}}, {{5838767741039303273ull, 14522015182449404190ull, 3484710852487286353ull, 3576138271605527980ull}}, {{16521831713153904899ull, 4317460922779591525ull, 4355888565609107942ull, 4470172839506909975ull}}, {{12631987829934884514ull, 16533471132019408415ull, 9639959381146774319ull, 2793858024691818734ull}}, {{11178298768991217739ull, 16055152896596872615ull, 2826577189578692091ull, 3492322530864773418ull}}, {{9361187442811634269ull, 15457255102318702865ull, 12756593523828140922ull, 4365403163580966772ull}}, {{17379957197825741178ull, 14272470457376577194ull, 17196242989247363884ull, 2728376977238104232ull}}, {{12501574460427400665ull, 17840588071720721493ull, 3048559662849653239ull, 3410471221547630291ull}}, {{1791910020252087119ull, 17689049071223513963ull, 17645757633844230261ull, 4263089026934537863ull}}, {{17260844827153412114ull, 13361498678728390178ull, 17946127548793725769ull, 2664430641834086164ull}}, {{12352683997086989334ull, 2866815293128324011ull, 3985915362282605596ull, 3330538302292607706ull}}, {{10829168977931348763ull, 3583519116410405014ull, 14205766239708032803ull, 4163172877865759632ull}}, {{2156544592779705073ull, 18380600512252360798ull, 8878603899817520501ull, 2601983048666099770ull}}, {{11919052777829407149ull, 9140692585033287285ull, 1874882837917124819ull, 3252478810832624713ull}}, {{1063757917004595224ull, 6814179712864221203ull, 6955289565823793928ull, 4065598513540780891ull}}, {{16805749762623729679ull, 4258862320540138251ull, 2041212969426177253ull, 2540999070962988057ull}}, {{16395501184852274195ull, 9935263919102560718ull, 7163202230210109470ull, 3176248838703735071ull}}, {{11271004444210566936ull, 3195707862023425090ull, 4342316769335248934ull, 3970311048379668839ull}}, {{11656063796058992239ull, 15832375469046804393ull, 9631477008475612439ull, 2481444405237293024ull}}, {{735021689791576587ull, 15178783317881117588ull, 12039346260594515549ull, 3101805506546616280ull}}, {{918777112239470733ull, 5138421092069233273ull, 15049182825743144437ull, 3877256883183270350ull}}, {{12103450741218138969ull, 5517356191756964747ull, 4794053247662077369ull, 2423285551989543969ull}}, {{10517627408095285807ull, 11508381258123593838ull, 10604252578004984615ull, 3029106939986929961ull}}, {{3923662223264331450ull, 9773790554227104394ull, 17867001740933618673ull, 3786383674983662451ull}}, {{7063974907967595060ull, 17637834142460410006ull, 8861033078869817718ull, 2366489796864789032ull}}, {{18053340671814269633ull, 12823920641220736699ull, 11076291348587272148ull, 2958112246080986290ull}}, {{17954989821340449138ull, 16029900801525920874ull, 4621992148879314377ull, 3697640307601232863ull}}, {{15833554656765168615ull, 3101158973312618690ull, 9806274120690653342ull, 2311025192250770539ull}}, {{10568571284101684961ull, 13099820753495549171ull, 7646156632435928773ull, 2888781490313463174ull}}, {{8599028086699718297ull, 2539717886587272752ull, 334323753690135159ull, 3610976862891828968ull}}, {{10748785108374647871ull, 17009705413516254652ull, 417904692112668948ull, 4513721078614786210ull}}, {{15941362729588930728ull, 1407693846592883349ull, 4872876450997805997ull, 2821075674134241381ull}}, {{6091645356703999697ull, 6371303326668492091ull, 10702781582174645400ull, 3526344592667801726ull}}, {{3002870677452611718ull, 7964129158335615114ull, 4155104940863530942ull, 4407930740834752158ull}}, {{6488480191835270228ull, 365894705532371542ull, 16431998643321870551ull, 2754956713021720098ull}}, {{17333972276648863593ull, 14292426437197628139ull, 11316626267297562380ull, 3443695891277150123ull}}, {{17055779327383691587ull, 17865533046497035174ull, 9534096815694565071ull, 4304619864096437654ull}}, {{6048176061187419338ull, 18083487181701728840ull, 1347124491381715265ull, 2690387415060273534ull}}, {{7560220076484274172ull, 8769300921844997338ull, 10907277651081919890ull, 3362984268825341917ull}}, {{226903058750566907ull, 1738254115451470865ull, 18245783082279787767ull, 4203730336031677396ull}}, {{11671029457787574077ull, 8003937849798251146ull, 2180242389570091546ull, 2627331460019798373ull}}, {{5365414785379691788ull, 781550275393038125ull, 7336989005390002337ull, 3284164325024747966ull}}, {{11318454500152002639ull, 5588623862668685560ull, 18394608293592278729ull, 4105205406280934957ull}}, {{7074034062595001650ull, 15022104960236398235ull, 13802473192708868157ull, 2565753378925584348ull}}, {{4230856559816364158ull, 4942573145013334082ull, 17253091490886085197ull, 3207191723656980435ull}}, {{14511942736625231005ull, 10789902449694055506ull, 16954678345180218592ull, 4008989654571225544ull}}, {{13681650228818157283ull, 6743689031058784691ull, 10596673965737636620ull, 2505618534107015965ull}}, {{12490376767595308699ull, 8429611288823480864ull, 17857528475599433679ull, 3132023167633769956ull}}, {{15612970959494135874ull, 5925328092601963176ull, 3875166520789740483ull, 3915028959542212446ull}}, {{9758106849683834921ull, 1397487048662533033ull, 16257037130775751514ull, 2446893099713882778ull}}, {{16809319580532181555ull, 10970230847682942099ull, 11097924376614913584ull, 3058616374642353473ull}}, {{16399963457237839040ull, 13712788559603677624ull, 37347415486478268ull, 3823270468302941842ull}}, {{10249977160773649400ull, 17793864886607074323ull, 4635028153106436821ull, 2389544042689338651ull}}, {{8200785432539673846ull, 8407273052976679192ull, 1182099172955658123ull, 2986930053361673314ull}}, {{10250981790674592308ull, 5897405297793461086ull, 10700996003049348462ull, 3733662566702091642ull}}, {{1795177600744232288ull, 17520936366403076891ull, 11299808520333230692ull, 2333539104188807276ull}}, {{16079030056212454072ull, 3454426384294294497ull, 14124760650416538366ull, 2916923880236009095ull}}, {{6263729514983403878ull, 13541405017222643930ull, 13044264794593285053ull, 3646154850295011369ull}}, {{17053033930584030656ull, 3091698216246141200ull, 2470272937959442605ull, 4557693562868764212ull}}, {{10658146206615019160ull, 4238154394367532202ull, 10767292623079427436ull, 2848558476792977632ull}}, {{4099310721413998142ull, 5297692992959415253ull, 13459115778849284295ull, 3560698095991222040ull}}, {{9735824420194885581ull, 2010430222771881162ull, 16823894723561605369ull, 4450872619989027550ull}}, {{10696576281049191393ull, 12785733935300895486ull, 5903248183798615451ull, 2781795387493142219ull}}, {{4147348314456713433ull, 11370481400698731454ull, 2767374211320881410ull, 3477244234366427774ull}}, {{14407557429925667599ull, 4989729714018638509ull, 12682589801005877571ull, 4346555292958034717ull}}, {{11310566402917236201ull, 812738062047955116ull, 10232461634842367434ull, 2716597058098771698ull}}, {{14138208003646545252ull, 10239294614414719703ull, 3567205006698183484ull, 3395746322623464623ull}}, {{13061073986130793660ull, 12799118268018399629ull, 18294064313654893067ull, 4244682903279330778ull}}, {{10469014250545439990ull, 5693605908297805816ull, 16045476214461696071ull, 2652926814549581736ull}}, {{13086267813181799987ull, 2505321366944869366ull, 1610101194367568473ull, 3316158518186977171ull}}, {{7134462729622474176ull, 7743337727108474612ull, 15847684548241624303ull, 4145198147733721463ull}}, {{13682411242868822168ull, 11757115107083878488ull, 16822331870292097045ull, 2590748842333575914ull}}, {{17103014053586027710ull, 861335828572684398ull, 11804542801010345499ull, 3238436052916969893ull}}, {{12155395530127758829ull, 14911727840998019210ull, 920620445980768161ull, 4048045066146212367ull}}, {{12208808224757237173ull, 2402300872982680150ull, 7492916806379061957ull, 2530028166341382729ull}}, {{6037638244091770658ull, 7614562109655738092ull, 13977832026401215350ull, 3162535207926728411ull}}, {{7547047805114713322ull, 294830600214896807ull, 12860604014574131284ull, 3953169009908410514ull}}, {{11634433905837777682ull, 9407641161989086312ull, 12649563527536219956ull, 2470730631192756571ull}}, {{14543042382297222103ull, 11759551452486357890ull, 11200268390992887041ull, 3088413288990945714ull}}, {{8955430941016751820ull, 864381260325783651ull, 4776963451886332994ull, 3860516611238682143ull}}, {{3291301328921775936ull, 5151924306131002686ull, 9903131185070039977ull, 2412822882024176339ull}}, {{13337498698006995728ull, 11051591401091141261ull, 7767227962910162067ull, 3016028602530220424ull}}, {{2836815317226580948ull, 9202803232936538673ull, 9709034953637702584ull, 3770035753162775530ull}}, {{13302224619335082852ull, 5751752020585336670ull, 10679832864450952019ull, 2356272345726734706ull}}, {{7404408737314077757ull, 2578004007304282934ull, 4126419043708914216ull, 2945340432158418383ull}}, {{32138884787821389ull, 3222505009130353668ull, 546337786208754866ull, 3681675540198022979ull}}, {{40173605984776736ull, 13251503298267717893ull, 14517980288043107294ull, 4602094425247528723ull}}, {{2330951512954179412ull, 3670503542989935779ull, 6767894670813248107ull, 2876309015779705452ull}}, {{16748747446474887977ull, 18423187484019583435ull, 8459868338516560133ull, 3595386269724631815ull}}, {{16324248289666222067ull, 9193926299742315582ull, 5963149404718312263ull, 4494232837155789769ull}}, {{5590969162614000888ull, 12663732964980029095ull, 15256183424017414924ull, 2808895523222368605ull}}, {{2377025434840113206ull, 15829666206225036369ull, 5235171224739604943ull, 3511119404027960757ull}}, {{7582967811977529411ull, 15175396739353907557ull, 11155650049351894083ull, 4388899255034950946ull}}, {{7045197891699649834ull, 7178779952882498271ull, 11583967299272321706ull, 2743062034396844341ull}}, {{4194811346197174389ull, 18196846977957898647ull, 644901068808238420ull, 3428827542996055427ull}}, {{631828164319080082ull, 4299314648737821693ull, 14641184391292461738ull, 4286034428745069283ull}}, {{2700735611913119003ull, 7298757673888526462ull, 6844897235344094634ull, 2678771517965668302ull}}, {{12599291551746174562ull, 18346819129215433885ull, 17779493581034894100ull, 3348464397457085377ull}}, {{1914056384400554490ull, 4486779837809740741ull, 8389308921011453914ull, 4185580496821356722ull}}, {{3502128249464040509ull, 7415923417058475867ull, 9855004094059546600ull, 2615987810513347951ull}}, {{18212718367112214348ull, 9269904271323094833ull, 7707069099147045346ull, 3269984763141684939ull}}, {{8930839903608104222ull, 2364008302299092734ull, 5022150355506418779ull, 4087480953927106174ull}}, {{970088921327677235ull, 17618406253432790623ull, 16973902027473675448ull, 2554675596204441358ull}}, {{15047669206941760256ull, 3576263743081436662ull, 11994005497487318503ull, 3193344495255551698ull}}, {{9586214471822424512ull, 18305387734133959540ull, 5769134835004372320ull, 3991680619069439623ull}}, {{15214756081743791128ull, 11440867333833724712ull, 10523238299518814556ull, 2494800386918399764ull}}, {{571701028470187294ull, 14301084167292155891ull, 13154047874398518195ull, 3118500483647999705ull}}, {{14549684340869897829ull, 13264669190687806959ull, 2607501787715984032ull, 3898125604559999632ull}}, {{16011081740684767999ull, 8290418244179879349ull, 1629688617322490020ull, 2436328502849999770ull}}, {{6178794120573796287ull, 10363022805224849187ull, 11260482808507888333ull, 3045410628562499712ull}}, {{3111806632289857455ull, 17565464524958449388ull, 14075603510634860416ull, 3806763285703124640ull}}, {{11168251182035936718ull, 10978415328099030867ull, 8797252194146787760ull, 2379227053564452900ull}}, {{9348627959117532993ull, 13723019160123788584ull, 10996565242683484700ull, 2974033816955566125ull}}, {{11685784948896916241ull, 17153773950154735730ull, 18357392571781743779ull, 3717542271194457656ull}}, {{11915301611487960555ull, 8415265709633015879ull, 11473370357363589862ull, 2323463919496536035ull}}, {{10282440995932562789ull, 1295710100186494041ull, 9730026928277099424ull, 2904329899370670044ull}}, {{17464737263343091390ull, 1619637625233117551ull, 12162533660346374280ull, 3630412374213337555ull}}, {{17219235560751476334ull, 2024547031541396939ull, 10591481057005579946ull, 4538015467766671944ull}}, {{8456179216255978757ull, 5877027913140760991ull, 6619675660628487466ull, 2836259667354169965ull}}, {{5958538001892585542ull, 16569656928280727047ull, 12886280594212997236ull, 3545324584192712456ull}}, {{2836486483938344023ull, 2265327086641357193ull, 16107850742766246546ull, 4431655730240890570ull}}, {{13302019098529934775ull, 6027515447578236149ull, 14679092732656291995ull, 2769784831400556606ull}}, {{2792465817880254756ull, 2922708291045407283ull, 9125493878965589186ull, 3462231039250695758ull}}, {{17325640327632482157ull, 12876757400661534911ull, 2183495311852210674ull, 4327788799063369698ull}}, {{17746054232411383205ull, 12659659393840847223ull, 5976370588335019575ull, 2704867999414606061ull}}, {{17570881772086841102ull, 11212888223873671125ull, 12082149253846162373ull, 3381084999268257576ull}}, {{8128544159826387665ull, 181052224559925195ull, 15102686567307702967ull, 4226356249085321970ull}}, {{2774497090677798339ull, 7030686667991035103ull, 14050865122994702258ull, 2641472655678326231ull}}, {{17303179418629411635ull, 18011730371843569686ull, 12951895385315989918ull, 3301840819597907789ull}}, {{12405602236431988736ull, 13291290927949686300ull, 2354811176362823686ull, 4127301024497384737ull}}, {{16976873434624768768ull, 3695370811541166033ull, 13000972031295234564ull, 2579563140310865460ull}}, {{7386033737998797248ull, 4619213514426457542ull, 16251215039119043205ull, 3224453925388581825ull}}, {{9170135643720752ull, 10385702911460459832ull, 6478960743616640294ull, 4030567406735727282ull}}, {{5731334777325470ull, 1879378301235399491ull, 8661036483187788088ull, 2519104629209829551ull}}, {{13842222223753820550ull, 2349222876544249363ull, 6214609585557347206ull, 3148880786512286939ull}}, {{12691091761264887783ull, 12159900632535087512ull, 3156575963519296103ull, 3936100983140358674ull}}, {{7931932350790554864ull, 14517466922975511551ull, 6584545995626947968ull, 2460063114462724171ull}}, {{5303229420060805676ull, 18146833653719389439ull, 3618996476106297056ull, 3075078893078405214ull}}, {{2017350756648619191ull, 4236797993439685183ull, 13747117631987647129ull, 3843848616348006517ull}}, {{8178373250546468851ull, 14177213791968272999ull, 10897791529205973407ull, 2402405385217504073ull}}, {{5611280544755698159ull, 13109831221532953345ull, 18233925429934854663ull, 3003006731521880091ull}}, {{11625786699372010603ull, 11775603008488803777ull, 18180720768991180425ull, 3753758414402350114ull}}, {{348587659466424771ull, 442222852664420505ull, 15974636499046875670ull, 2346099009001468821ull}}, {{5047420592760418868ull, 9776150602685301439ull, 6133237568526430875ull, 2932623761251836027ull}}, {{1697589722523135681ull, 7608502234929238895ull, 3054860942230650690ull, 3665779701564795034ull}}, {{15957045208436083313ull, 287255756806772810ull, 13041948214643089171ull, 4582224626955993792ull}}, {{14584839273699939975ull, 16320435912500090670ull, 8151217634151930731ull, 2863890391847496120ull}}, {{9007677055270149160ull, 15788858872197725434ull, 10189022042689913414ull, 3579862989809370150ull}}, {{2036224282232910642ull, 10512701553392380985ull, 3512905516507615960ull, 4474828737261712688ull}}, {{12801855222464038911ull, 6570438470870238115ull, 2195565947817259975ull, 2796767960788570430ull}}, {{11390633009652660735ull, 3601362070160409740ull, 11967829471626350777ull, 3495959950985713037ull}}, {{14238291262065825919ull, 9113388606127900079ull, 1124728784250774759ull, 4369949938732141297ull}}, {{15816461066432223055ull, 12613396906471019405ull, 12232170536225203984ull, 2731218711707588310ull}}, {{5935518277758115107ull, 15766746133088774257ull, 6066841133426729172ull, 3414023389634485388ull}}, {{12031083865625031788ull, 1261688592651416205ull, 7583551416783411466ull, 4267529237043106735ull}}, {{9825270425229338820ull, 5400241388834523032ull, 11657248663130714022ull, 2667205773151941709ull}}, {{12281588031536673524ull, 15973673772897929598ull, 736502773631228815ull, 3334007216439927137ull}}, {{6128613002566066097ull, 15355406197695024094ull, 5532314485466423923ull, 4167509020549908921ull}}, {{17665441181885955023ull, 7291285864345696106ull, 14986911599484984712ull, 2604693137843693075ull}}, {{12858429440502667971ull, 9114107330432120133ull, 14121953480928842986ull, 3255866422304616344ull}}, {{2237978745346171251ull, 2169262126185374359ull, 17652441851161053733ull, 4069833027880770430ull}}, {{8316265743482438888ull, 3661631838079552926ull, 6421090138548270679ull, 2543645642425481519ull}}, {{1171960142498272802ull, 18412097852881604870ull, 3414676654757950444ull, 3179557053031851899ull}}, {{10688322214977616811ull, 4568378242392454471ull, 18103403873729601768ull, 3974446316289814873ull}}, {{13597730412002092363ull, 2855236401495284044ull, 4397098393439919249ull, 2484028947681134296ull}}, {{16997163015002615453ull, 8180731520296492959ull, 5496372991799899061ull, 3105036184601417870ull}}, {{16634767750325881413ull, 14837600418798004103ull, 16093838276604649634ull, 3881295230751772337ull}}, {{17314258871594757739ull, 13885186280176140468ull, 3141119895236824165ull, 2425809519219857711ull}}, {{3196079515783895558ull, 3521424794938011874ull, 17761457924328193919ull, 3032261899024822138ull}}, {{13218471431584645255ull, 18236839048954678554ull, 12978450368555466590ull, 3790327373781027673ull}}, {{12873230663167791189ull, 6786338387169286192ull, 1194002452706084763ull, 2368954608613142296ull}}, {{16091538328959738986ull, 3871236965534219836ull, 1492503065882605954ull, 2961193260766427870ull}}, {{1667678837490122116ull, 14062418243772550604ull, 11089000869208033250ull, 3701491575958034837ull}}, {{10265671310286102131ull, 13400697420785232031ull, 9236468552468714733ull, 2313432234973771773ull}}, {{8220403119430239759ull, 2915813720699376327ull, 16157271709013281321ull, 2891790293717214716ull}}, {{5663817880860411795ull, 8256453169301608313ull, 1749845562557050035ull, 3614737867146518396ull}}, {{11691458369502902647ull, 5708880443199622487ull, 2187306953196312544ull, 4518422333933147995ull}}, {{14224690508580396011ull, 3568050276999764054ull, 17507967910243553004ull, 2824013958708217496ull}}, {{8557491098870719205ull, 4460062846249705068ull, 3438215814094889639ull, 3530017448385271871ull}}, {{10696863873588399007ull, 963392539384743431ull, 18132827822900775761ull, 4412521810481589838ull}}, {{13603068948633831235ull, 12131335383183934404ull, 6721331370885596946ull, 2757826131550993649ull}}, {{17003836185792289044ull, 5940797192125142197ull, 13013350232034384087ull, 3447282664438742061ull}}, {{7419737176958197593ull, 2814310471729039843ull, 2431629734760816397ull, 4309103330548427577ull}}, {{2331492726385179544ull, 4064787054044343854ull, 13048983630293980008ull, 2693189581592767235ull}}, {{12137737944836250237ull, 5080983817555429817ull, 11699543519440087106ull, 3366486976990959044ull}}, {{1337114375763149085ull, 15574601808799063080ull, 14624429399300108882ull, 4208108721238698805ull}}, {{835696484851968178ull, 14345812148926802329ull, 11446111383776262003ull, 2630067950774186753ull}}, {{5656306624492348127ull, 13320579167731115007ull, 472581174438163792ull, 3287584938467733442ull}}, {{2458697262188047254ull, 16650723959663893759ull, 9814098504902480548ull, 4109481173084666802ull}}, {{8454214816508611390ull, 1183330437935157791ull, 10745497583991438247ull, 2568425733177916751ull}}, {{5956082502208376333ull, 15314221102701110951ull, 8820185961561909904ull, 3210532166472395939ull}}, {{2833417109333082513ull, 696032304666837073ull, 6413546433524999477ull, 4013165208090494924ull}}, {{13300100739401646331ull, 2740863199630467122ull, 13231838557807900481ull, 2508228255056559327ull}}, {{7401753887397282105ull, 8037765017965471807ull, 11928112178832487697ull, 3135285318820699159ull}}, {{4640506340819214727ull, 14658892290884227663ull, 10298454205113221717ull, 3919106648525873949ull}}, {{9817845490653091061ull, 11467650691016336241ull, 8742376887409457525ull, 2449441655328671218ull}}, {{16883992881743751730ull, 499505308488256589ull, 1704599072407046099ull, 3061802069160839023ull}}, {{7269933046897525950ull, 14459439690892484449ull, 15965806895790971335ull, 3827252586451048778ull}}, {{16072923200379423479ull, 15954678834448884636ull, 14590315328296744988ull, 2392032866531905486ull}}, {{1644409926764727733ull, 1496604469351554180ull, 9014522123516155428ull, 2990041083164881858ull}}, {{2055512408455909666ull, 1870755586689442725ull, 2044780617540418477ull, 3737551353956102323ull}}, {{3590538264498637493ull, 3475065250894595655ull, 17418888950458619212ull, 2335969596222563951ull}}, {{18323230885905460578ull, 4343831563618244568ull, 17161925169645886111ull, 2919961995278204939ull}}, {{4457294533672274107ull, 818103436095417807ull, 16840720443629969735ull, 3649952494097756174ull}}, {{959932148662954729ull, 14857687350401435971ull, 11827528517682686360ull, 4562440617622195218ull}}, {{16740858657410204370ull, 9286054594000897481ull, 12003891341979066879ull, 2851525386013872011ull}}, {{7091015266480591750ull, 6995882224073733948ull, 10393178159046445695ull, 3564406732517340014ull}}, {{8863769083100739688ull, 4133166761664779531ull, 3768100661953281311ull, 4455508415646675018ull}}, {{3234012667724268353ull, 9500758253681569063ull, 6966748932148188723ull, 2784692759779171886ull}}, {{17877573889937499153ull, 7264261798674573424ull, 17931808202040011712ull, 3480865949723964857ull}}, {{3900223288712322326ull, 9080327248343216781ull, 8579702197267850928ull, 4351082437154956072ull}}, {{4743482564658895406ull, 5675204530214510488ull, 5362313873292406830ull, 2719426523221847545ull}}, {{5929353205823619257ull, 16317377699622913918ull, 11314578360042896441ull, 3399283154027309431ull}}, {{16635063544134299879ull, 6561664069246478685ull, 9531536931626232648ull, 4249103942534136789ull}}, {{12702757724297631377ull, 4101040043279049178ull, 8263053591480089357ull, 2655689964083835493ull}}, {{6655075118517263413ull, 9737986072526199377ull, 14940503007777499600ull, 3319612455104794366ull}}, {{12930529916573967170ull, 12172482590657749221ull, 9452256722867098692ull, 4149515568880992958ull}}, {{10387424207072423433ull, 16831173656015869071ull, 1295974433364548778ull, 2593447230550620599ull}}, {{8372594240413141387ull, 11815595033165060531ull, 15455026096987849685ull, 3241809038188275748ull}}, {{5854056782089038830ull, 934435736174161952ull, 872038547525260491ull, 4052261297735344686ull}}, {{3658785488805649269ull, 16724923399604708884ull, 14380082147485451518ull, 2532663311084590428ull}}, {{4573481861007061586ull, 11682782212651110297ull, 17975102684356814398ull, 3165829138855738035ull}}, {{10328538344686214887ull, 5380105728959112063ull, 17857192337018630094ull, 3957286423569672544ull}}, {{13372865493069966160ull, 17197624135881608751ull, 11160745210636643808ull, 2473304014731045340ull}}, {{12104395847910069796ull, 3050286096142459323ull, 13950931513295804761ull, 3091630018413806675ull}}, {{10518808791460199341ull, 8424543638605462058ull, 12826978373192368047ull, 3864537523017258344ull}}, {{11185941513090012492ull, 12182868801769495642ull, 8016861483245230029ull, 2415335951885786465ull}}, {{4759054854507739807ull, 1393527946929705841ull, 14632762872483925441ull, 3019169939857233081ull}}, {{10560504586562062663ull, 6353595952089520205ull, 4455895535322743089ull, 3773962424821541352ull}}, {{8906158375814983117ull, 15500212516124419888ull, 2784934709576714430ull, 2358726515513463345ull}}, {{11132697969768728896ull, 10151893608300749052ull, 8092854405398280942ull, 2948408144391829181ull}}, {{13915872462210911119ull, 3466494973521160507ull, 14727754025175239082ull, 3685510180489786476ull}}, {{12783154559336250995ull, 13556490753756226442ull, 18409692531469048852ull, 4606887725612233095ull}}, {{12601157618012544776ull, 17696178757952417334ull, 18423586859809237388ull, 2879304828507645684ull}}, {{6528074985660905162ull, 3673479373730970052ull, 4582739501051995120ull, 3599131035634557106ull}}, {{8160093732076131452ull, 4591849217163712565ull, 14951796413169769708ull, 4498913794543196382ull}}, {{7405901591761276110ull, 12093277797582096161ull, 4733186739803718163ull, 2811821121589497739ull}}, {{13869063008128983041ull, 10504911228550232297ull, 1304797406327259800ull, 3514776401986872174ull}}, {{3501270704879065090ull, 13131139035687790372ull, 10854368794763850558ull, 4393470502483590217ull}}, {{11411666227404191489ull, 3595275878877481078ull, 18313195542795876359ull, 2745919064052243885ull}}, {{5041210747400463553ull, 18329152903879015060ull, 9056436373212681736ull, 3432398830065304857ull}}, {{6301513434250579442ull, 4464697056139217209ull, 15932231484943240075ull, 4290498537581631071ull}}, {{15467660942475081911ull, 484592650873316803ull, 16875173705730606903ull, 2681561585988519419ull}}, {{14722890159666464485ull, 14440798868873809716ull, 16482281113735870724ull, 3351951982485649274ull}}, {{18403612699583080606ull, 18050998586092262145ull, 11379479355315062597ull, 4189939978107061593ull}}, {{4584728909598343523ull, 13587717125521357793ull, 194645569430832267ull, 2618712486316913496ull}}, {{10342597155425317307ull, 12372960388474309337ull, 243306961788540334ull, 3273390607896141870ull}}, {{17539932462709034538ull, 6242828448738110863ull, 9527505739090451226ull, 4091738259870177337ull}}, {{17879986816834228443ull, 8513453798888707193ull, 17483906133000001776ull, 2557336412418860835ull}}, {{8514925465760621841ull, 10641817248610883992ull, 17243196647822614316ull, 3196670515523576044ull}}, {{10643656832200777301ull, 13302271560763604990ull, 3107251736068716279ull, 3995838144404470056ull}}, {{2040599501698097909ull, 15231448753118334975ull, 1942032335042947674ull, 2497398840252793785ull}}, {{16385807432404786099ull, 9815938904543142910ull, 7039226437231072497ull, 3121748550315992231ull}}, {{11258887253651206815ull, 16881609649106316542ull, 4187347028111452717ull, 3902185687894990289ull}}, {{2425118515104616356ull, 12856849039905141791ull, 14146306938638127708ull, 2438866054934368930ull}}, {{16866456199162934157ull, 16071061299881427238ull, 8459511636442883827ull, 3048582568667961163ull}}, {{11859698212098891888ull, 15477140606424396144ull, 5962703527126216880ull, 3810728210834951454ull}}, {{7412311382561807430ull, 9673212879015247590ull, 17561747759736049262ull, 2381705131771844658ull}}, {{42017191347483479ull, 2868144061914283680ull, 12728812662815285770ull, 2977131414714805823ull}}, {{52521489184354349ull, 12808552114247630408ull, 11299329810091719308ull, 3721414268393507279ull}}, {{32825930740221468ull, 17228717108259544813ull, 13979610158948406423ull, 2325883917745942049ull}}, {{4652718431852664739ull, 16924210366897043112ull, 3639454643403344317ull, 2907354897182427562ull}}, {{5815898039815830924ull, 7320204903339140178ull, 13772690341108956205ull, 3634193621478034452ull}}, {{16493244586624564463ull, 13761942147601313126ull, 17215862926386195256ull, 4542742026847543065ull}}, {{5696591848212964885ull, 8601213842250820704ull, 3842385301350290179ull, 2839213766779714416ull}}, {{7120739810266206107ull, 6139831284386137976ull, 4802981626687862724ull, 3549017208474643020ull}}, {{8900924762832757633ull, 7674789105482672470ull, 6003727033359828405ull, 4436271510593303775ull}}, {{951391958343085617ull, 7102586200140364246ull, 10669858423490974609ull, 2772669694120814859ull}}, {{10412611984783632829ull, 13489918768602843211ull, 8725637010936330357ull, 3465837117651018574ull}}, {{8404078962552153132ull, 3027340405471390302ull, 1683674226815637139ull, 4332296397063773218ull}}, {{640863333167707804ull, 18032988817915476603ull, 5663982410187161115ull, 2707685248164858261ull}}, {{14636137221741798467ull, 17929550003966957849ull, 11691664031161339298ull, 3384606560206072826ull}}, {{4460113471895084371ull, 13188565468103921504ull, 5391208002096898315ull, 4230758200257591033ull}}, {{2787570919934427732ull, 5937010408351256988ull, 14898720047379031207ull, 2644223875160994395ull}}, {{3484463649918034665ull, 2809576992011683331ull, 14011714040796401105ull, 3305279843951242994ull}}, {{18190637617679707043ull, 8123657258441992067ull, 8291270514140725573ull, 4131599804939053743ull}}, {{9063305501836122950ull, 7383128795739938994ull, 12099573098979035339ull, 2582249878086908589ull}}, {{2105759840440377880ull, 4617224976247535839ull, 1289408318441630462ull, 3227812347608635737ull}}, {{16467257855832636061ull, 14994903257164195606ull, 6223446416479425981ull, 4034765434510794671ull}}, {{5680350141468009635ull, 11677657544941316206ull, 10807183037940723094ull, 2521728396569246669ull}}, {{16323809713689787851ull, 5373699894321869449ull, 18120664815853291772ull, 3152160495711558336ull}}, {{6569704086830071102ull, 6717124867902336812ull, 4204086946107063099ull, 3940200619639447921ull}}, {{13329437091123570247ull, 1892360033225266555ull, 14156769387385384197ull, 2462625387274654950ull}}, {{12050110345477074904ull, 6977136059958971098ull, 8472589697376954438ull, 3078281734093318688ull}}, {{5839265894991567822ull, 17944792111803489681ull, 10590737121721193047ull, 3847852167616648360ull}}, {{15178756230438199649ull, 18133024097518262906ull, 6619210701075745654ull, 2404907604760405225ull}}, {{9750073251192973753ull, 13442908085043052825ull, 12885699394772069972ull, 3006134505950506531ull}}, {{16799277582418605095ull, 16803635106303816031ull, 11495438225037699561ull, 3757668132438133164ull}}, {{17417077516652710041ull, 3584742913798803163ull, 16408020927503338034ull, 2348542582773833227ull}}, {{17159660877388499647ull, 13704300679103279762ull, 15898340140951784638ull, 2935678228467291534ull}}, {{12226204059880848751ull, 7907003812024323895ull, 10649553139334954990ull, 3669597785584114418ull}}, {{10671069056423673034ull, 660382728175629061ull, 4088569387313917930ull, 4586997231980143023ull}}, {{8975261169478489598ull, 5024425223537156067ull, 9472884894712280562ull, 2866873269987589389ull}}, {{6607390443420724094ull, 15503903566276220892ull, 16452792136817738606ull, 3583591587484486736ull}}, {{8259238054275905117ull, 10156507420990500307ull, 2119246097312621642ull, 4479489484355608421ull}}, {{2856180774708746746ull, 10959503156546450596ull, 3630371820034082478ull, 2799680927722255263ull}}, {{3570225968385933433ull, 4476006908828287437ull, 18373022830324766810ull, 3499601159652819078ull}}, {{9074468478909804695ull, 14818380672890135104ull, 13742906501051182704ull, 4374501449566023848ull}}, {{5671542799318627935ull, 9261487920556334440ull, 8589316563156989190ull, 2734063405978764905ull}}, {{7089428499148284918ull, 2353487863840642242ull, 15348331722373624392ull, 3417579257473456131ull}}, {{18085157660790131956ull, 2941859829800802802ull, 14573728634539642586ull, 4271974071841820164ull}}, {{15914909556421220376ull, 6450348412052889655ull, 18331952433442052424ull, 2669983794901137602ull}}, {{15281950927099137566ull, 8062935515066112069ull, 13691568504947789722ull, 3337479743626422003ull}}, {{5267380603591758246ull, 855297356977864279ull, 12502774612757349249ull, 4171849679533027504ull}}, {{10209641904885930760ull, 12063775894179634934ull, 7814234132973343280ull, 2607406049708142190ull}}, {{3538680344252637642ull, 15079719867724543668ull, 544420629361903292ull, 3259257562135177738ull}}, {{4423350430315797052ull, 402905760946127969ull, 9903897823557154924ull, 4074071952668972172ull}}, {{14293809065015842918ull, 9475188137446105788ull, 15413308176577997635ull, 2546294970418107607ull}}, {{17867261331269803647ull, 7232299153380244331ull, 14654949202295109140ull, 3182868713022634509ull}}, {{17722390645659866655ull, 9040373941725305414ull, 4483628447586722713ull, 3978585891278293137ull}}, {{6464808135110028755ull, 17179448759646785644ull, 14331482825810171455ull, 2486616182048933210ull}}, {{8081010168887535944ull, 16862624931131094151ull, 8690981495407938511ull, 3108270227561166513ull}}, {{5489576692682032026ull, 16466595145486479785ull, 15475412887687311043ull, 3885337784451458141ull}}, {{14960200478994739776ull, 7985778956715355913ull, 11977976064018263354ull, 2428336115282161338ull}}, {{4865192543461261008ull, 758851659039419084ull, 5749098043168053385ull, 3035420144102701673ull}}, {{6081490679326576260ull, 5560250592226661759ull, 11798058572387454635ull, 3794275180128377091ull}}, {{10718460702220192019ull, 1169313610927969647ull, 5067943598528465195ull, 2371421987580235682ull}}, {{8786389859347852119ull, 15296700068942125771ull, 15558301535015357301ull, 2964277484475294602ull}}, {{6371301305757427245ull, 5285817030895493502ull, 10224504881914420819ull, 3705346855594118253ull}}, {{17817121371380555740ull, 997792635095989486ull, 8696158560410206964ull, 2315841784746323908ull}}, {{13048029677370918867ull, 1247240793869986858ull, 10870198200512758705ull, 2894802230932904885ull}}, {{7086665059858872776ull, 6170737010764871477ull, 18199433769068336285ull, 3618502788666131106ull}}, {{13470017343250978874ull, 12325107281883477250ull, 13525920174480644548ull, 4523128485832663883ull}}, {{13030446857959249701ull, 16926564088031949089ull, 6147857099836708890ull, 2826955303645414927ull}}, {{2453000517166898414ull, 11934833073185160554ull, 3073135356368498209ull, 3533694129556768659ull}}, {{12289622683313398825ull, 1083483286199286980ull, 17676477250742786474ull, 4417117661945960823ull}}, {{16904386213925650074ull, 5288863072301942266ull, 17965327309355323402ull, 2760698538716225514ull}}, {{11907110730552286784ull, 15834450877232203641ull, 13233287099839378444ull, 3450873173395281893ull}}, {{1048830357908194768ull, 1346319522830702936ull, 2706550819517059344ull, 4313591466744102367ull}}, {{655518973692621730ull, 841449701769189335ull, 8609123289839243946ull, 2695994666715063979ull}}, {{14654456772397940874ull, 10275184164066262476ull, 6149718093871667028ull, 3369993333393829974ull}}, {{18318070965497426093ull, 12843980205082828095ull, 16910519654194359593ull, 4212491666742287467ull}}, {{18366323381076973164ull, 1109958600535685703ull, 8263231774657780794ull, 2632807291713929667ull}}, {{18346218207918828551ull, 10610820287524382937ull, 5717353699894838088ull, 3291009114642412084ull}}, {{9097714704616371977ull, 13263525359405478672ull, 7146692124868547610ull, 4113761393303015105ull}}, {{5686071690385232486ull, 12901389368055812074ull, 15995897624111312016ull, 2571100870814384440ull}}, {{16330961649836316415ull, 16126736710069765092ull, 1548127956429588404ull, 3213876088517980551ull}}, {{1966957988585843903ull, 1711676813877654750ull, 15770218000819149218ull, 4017345110647475688ull}}, {{15064406798148316151ull, 5681484027100922122ull, 9856386250511968261ull, 2510840694154672305ull}}, {{9607136460830619381ull, 11713541052303540557ull, 16932168831567348230ull, 3138550867693340381ull}}, {{16620606594465662130ull, 5418554278524649888ull, 7330152984177021576ull, 3923188584616675477ull}}, {{10387879121541038832ull, 3386596424077906180ull, 6887188624324332437ull, 2451992865385422173ull}}, {{12984848901926298539ull, 8844931548524770629ull, 13220671798832803450ull, 3064991081731777716ull}}, {{2396003072125709462ull, 1832792398801187479ull, 16525839748541004313ull, 3831238852164722145ull}}, {{8415030947719650270ull, 12674710295319211934ull, 3411120815197045839ull, 2394524282602951341ull}}, {{1295416647794787029ull, 11231701850721627014ull, 8875587037423695203ull, 2993155353253689176ull}}, {{10842642846598259595ull, 9427941294974645863ull, 11094483796779619004ull, 3741444191567111470ull}}, {{13694180806764994103ull, 15115835346213929472ull, 2322366354559873973ull, 2338402619729444669ull}}, {{17117726008456242628ull, 5059736127485248128ull, 7514643961627230371ull, 2923003274661805836ull}}, {{2950413436860751669ull, 1712984140929172257ull, 9393304952034037964ull, 3653754093327257295ull}}, {{8299702814503327491ull, 2141230176161465321ull, 7129945171615159551ull, 4567192616659071619ull}}, {{16716529305133049442ull, 8255797887741997681ull, 2150372723045780767ull, 2854495385411919762ull}}, {{7060603576134148090ull, 5708061341250109198ull, 11911337940662001767ull, 3568119231764899702ull}}, {{18049126507022460921ull, 2523390658135248593ull, 5665800388972726401ull, 4460149039706124628ull}}, {{4363175039247956220ull, 13106334207403000131ull, 12764497279962729808ull, 2787593149816327892ull}}, {{842282780632557370ull, 16382917759253750164ull, 15955621599953412260ull, 3484491437270409865ull}}, {{1052853475790696713ull, 2031903125357636089ull, 6109468944659601614ull, 4355614296588012332ull}}, {{12187248468437655206ull, 15104997508630686267ull, 13041790127267026816ull, 2722258935367507707ull}}, {{10622374567119681103ull, 434502812078806218ull, 11690551640656395617ull, 3402823669209384634ull}}, {{4054596172044825571ull, 5154814533525895677ull, 5389817513965718713ull, 4253529586511730793ull}}, {{4839965616741709934ull, 14750974129522154558ull, 14897850992297043955ull, 2658455991569831745ull}}, {{15273329057781913225ull, 13827031643475305293ull, 4787255685089141232ull, 3323069989462289682ull}}, {{5256603266945227819ull, 17283789554344131617ull, 15207441643216202348ull, 4153837486827862102ull}}, {{14814592087909237147ull, 1578996434610306452ull, 4892965008582738564ull, 2596148429267413814ull}}, {{71496036176994818ull, 1973745543262883066ull, 15339578297583199013ull, 3245185536584267267ull}}, {{9312742082076019330ull, 7078867947505991736ull, 14562786853551610862ull, 4056481920730334084ull}}, {{5820463801297512082ull, 18259350522473408547ull, 18325113820324532596ull, 2535301200456458802ull}}, {{2663893733194502198ull, 4377444079382209068ull, 13683020238550889938ull, 3169126500570573503ull}}, {{3329867166493127747ull, 14695177136082537143ull, 12492089279761224518ull, 3961408125713216879ull}}, {{8998696006699286698ull, 4572799691624197810ull, 14725084827491847180ull, 2475880078570760549ull}}, {{2024997971519332565ull, 5715999614530247263ull, 4571297979082645263ull, 3094850098213450687ull}}, {{16366305519681329418ull, 2533313499735421174ull, 1102436455425918675ull, 3868562622766813359ull}}, {{5617254931373442982ull, 17724222001830495898ull, 7606551812282281027ull, 2417851639229258349ull}}, {{16244940701071579536ull, 17543591483860731968ull, 14119875783780239188ull, 3022314549036572936ull}}, {{1859431802629922803ull, 3482745281116363345ull, 17649844729725298986ull, 3777893186295716170ull}}, {{12691359922712171512ull, 6788401819125114994ull, 15642838974505699770ull, 2361183241434822606ull}}, {{6640827866535438582ull, 17708874310761169551ull, 10330176681277348904ull, 2951479051793528258ull}}, {{3689348814741910324ull, 3689348814741910323ull, 3689348814741910323ull, 3689348814741910323ull}}, {{0ull, 0ull, 0ull, 4611686018427387904ull}}, {{0ull, 0ull, 0ull, 2882303761517117440ull}}, {{0ull, 0ull, 0ull, 3602879701896396800ull}}, {{0ull, 0ull, 0ull, 4503599627370496000ull}}, {{0ull, 0ull, 0ull, 2814749767106560000ull}}, {{0ull, 0ull, 0ull, 3518437208883200000ull}}, {{0ull, 0ull, 0ull, 4398046511104000000ull}}, {{0ull, 0ull, 0ull, 2748779069440000000ull}}, {{0ull, 0ull, 0ull, 3435973836800000000ull}}, {{0ull, 0ull, 0ull, 4294967296000000000ull}}, {{0ull, 0ull, 0ull, 2684354560000000000ull}}, {{0ull, 0ull, 0ull, 3355443200000000000ull}}, {{0ull, 0ull, 0ull, 4194304000000000000ull}}, {{0ull, 0ull, 0ull, 2621440000000000000ull}}, {{0ull, 0ull, 0ull, 3276800000000000000ull}}, {{0ull, 0ull, 0ull, 4096000000000000000ull}}, {{0ull, 0ull, 0ull, 2560000000000000000ull}}, {{0ull, 0ull, 0ull, 3200000000000000000ull}}, {{0ull, 0ull, 0ull, 4000000000000000000ull}}, {{0ull, 0ull, 0ull, 2500000000000000000ull}}, {{0ull, 0ull, 0ull, 3125000000000000000ull}}, {{0ull, 0ull, 0ull, 3906250000000000000ull}}, {{0ull, 0ull, 0ull, 2441406250000000000ull}}, {{0ull, 0ull, 0ull, 3051757812500000000ull}}, {{0ull, 0ull, 0ull, 3814697265625000000ull}}, {{0ull, 0ull, 0ull, 2384185791015625000ull}}, {{0ull, 0ull, 0ull, 2980232238769531250ull}}, {{0ull, 0ull, 9223372036854775808ull, 3725290298461914062ull}}, {{0ull, 0ull, 1152921504606846976ull, 2328306436538696289ull}}, {{0ull, 0ull, 6052837899185946624ull, 2910383045673370361ull}}, {{0ull, 0ull, 12177733392409821184ull, 3637978807091712951ull}}, {{0ull, 0ull, 10610480722084888576ull, 4547473508864641189ull}}, {{0ull, 0ull, 8937393460516749312ull, 2842170943040400743ull}}, {{0ull, 0ull, 6560055807218548736ull, 3552713678800500929ull}}, {{0ull, 0ull, 12811755777450573824ull, 4440892098500626161ull}}, {{0ull, 0ull, 1089818333265526784ull, 2775557561562891351ull}}, {{0ull, 0ull, 15197330971864072192ull, 3469446951953614188ull}}, {{0ull, 0ull, 549919641120538624ull, 4336808689942017736ull}}, {{0ull, 0ull, 343699775700336640ull, 2710505431213761085ull}}, {{0ull, 0ull, 5041310738052808704ull, 3388131789017201356ull}}, {{0ull, 0ull, 6301638422566010880ull, 4235164736271501695ull}}, {{0ull, 0ull, 10856053041744838656ull, 2646977960169688559ull}}, {{0ull, 0ull, 8958380283753660416ull, 3308722450212110699ull}}, {{0ull, 0ull, 6586289336264687616ull, 4135903062765138374ull}}, {{0ull, 0ull, 17951488890447593472ull, 2584939414228211483ull}}, {{0ull, 0ull, 17827675094632103936ull, 3231174267785264354ull}}, {{0ull, 0ull, 13061221831435354112ull, 4038967834731580443ull}}, {{0ull, 0ull, 5857420635433402368ull, 2524354896707237777ull}}, {{0ull, 0ull, 11933461812719140864ull, 3155443620884047221ull}}, {{0ull, 0ull, 1081769210616762368ull, 3944304526105059027ull}}, {{0ull, 0ull, 16817006821131334144ull, 2465190328815661891ull}}, {{0ull, 0ull, 16409572507986779776ull, 3081487911019577364ull}}, {{0ull, 0ull, 2065221561273923104ull, 3851859888774471706ull}}, {{0ull, 0ull, 5902449494223589844ull, 2407412430484044816ull}}, {{0ull, 0ull, 7378061867779487305ull, 3009265538105056020ull}}, {{0ull, 4611686018427387904ull, 9222577334724359131ull, 3761581922631320025ull}}, {{0ull, 576460752303423488ull, 17293325880271194217ull, 2350988701644575015ull}}, {{0ull, 5332261958806667264ull, 17004971331911604867ull, 2938735877055718769ull}}, {{0ull, 2053641430080946176ull, 7421156109607342372ull, 3673419846319648462ull}}, {{0ull, 2567051787601182720ull, 53073100154402157ull, 4591774807899560578ull}}, {{0ull, 3910250376464433152ull, 4644856706023889252ull, 2869859254937225361ull}}, {{0ull, 4887812970580541440ull, 10417756900957249469ull, 3587324068671531701ull}}, {{0ull, 10721452231653064704ull, 17633882144623949740ull, 4484155085839414626ull}}, {{0ull, 15924279681637941248ull, 15632862358817356491ull, 2802596928649634141ull}}, {{0ull, 15293663583620038656ull, 5706019893239531902ull, 3503246160812042677ull}}, {{0ull, 9893707442670272512ull, 11744210884976802782ull, 4379057701015053346ull}}, {{0ull, 1571881133241532416ull, 11951817821537889643ull, 2736911063134408341ull}}, {{0ull, 15799909471834079232ull, 1104714221640198341ull, 3421138828918010427ull}}, {{0ull, 5914828784510435328ull, 15215950832332411639ull, 4276423536147513033ull}}, {{0ull, 10614297017960103936ull, 2592440242566675418ull, 2672764710092195646ull}}, {{0ull, 4044499235595354112ull, 12463922340063120081ull, 3340955887615244557ull}}, {{0ull, 9667310062921580544ull, 1744844869796736389ull, 4176194859519055697ull}}, {{0ull, 8347911798539681792ull, 12619743089691430003ull, 2610121787199409810ull}}, {{0ull, 5823203729747214336ull, 6551306825259511696ull, 3262652233999262263ull}}, {{0ull, 7279004662184017920ull, 3577447513147001716ull, 4078315292499077829ull}}, {{0ull, 13772749950719787008ull, 4541747704930570024ull, 2548947057811923643ull}}, {{0ull, 17215937438399733760ull, 1065498612735824626ull, 3186183822264904554ull}}, {{0ull, 12296549761144891392ull, 10555245302774556591ull, 3982729777831130692ull}}, {{0ull, 14602872628356638976ull, 15820400351088873677ull, 2489206111144456682ull}}, {{0ull, 4418532730163635008ull, 10552128402006316289ull, 3111507638930570853ull}}, {{0ull, 10134851931131931664ull, 17801846520935283265ull, 3889384548663213566ull}}, {{0ull, 17863497503025927050ull, 6514468057157164136ull, 2430865342914508479ull}}, {{9223372036854775808ull, 3882627805072857196ull, 3531399053019067267ull, 3038581678643135599ull}}, {{11529215046068469760ull, 241598737913683591ull, 18249306871555997796ull, 3798227098303919498ull}}, {{14123288431433875456ull, 9374371248050828052ull, 16017502813149886526ull, 2373891936439949686ull}}, {{17654110539292344320ull, 2494592023208759257ull, 10798506479582582350ull, 2967364920549937108ull}}, {{8232580118833266688ull, 12341612065865724880ull, 13498133099478227937ull, 3709206150687421385ull}}, {{5145362574270791680ull, 795978513524996194ull, 1518804159532810605ull, 2318253844179638366ull}}, {{15655075254693265408ull, 5606659160333633146ull, 11121877236270789064ull, 2897817305224547957ull}}, {{10345472031511805952ull, 7008323950417041433ull, 67288490056322618ull, 3622271631530684947ull}}, {{17543526057817145344ull, 17983776974876077599ull, 13919168667852566984ull, 4527839539413356183ull}}, {{17882232813776797696ull, 11239860609297548499ull, 15617009445048936221ull, 2829899712133347614ull}}, {{17741104998793609216ull, 214767706339771912ull, 10297889769456394469ull, 3537374640166684518ull}}, {{3729637174782459904ull, 4880145651352102795ull, 3648990174965717278ull, 4421718300208355648ull}}, {{25180225025343488ull, 16885149087377227959ull, 2280618859353573298ull, 2763573937630222280ull}}, {{13866533336563843072ull, 11883064322366759140ull, 2850773574191966623ull, 3454467422037777850ull}}, {{17333166670704803840ull, 10242144384531061021ull, 12786839004594734087ull, 4318084277547222312ull}}, {{13139072178404196352ull, 13318869267972994994ull, 7991774377871708804ull, 2698802673467013945ull}}, {{7200468186150469632ull, 16648586584966243743ull, 14601403990767023909ull, 3373503341833767431ull}}, {{4388899214260699136ull, 6975675175925640967ull, 13640068970031391983ull, 4216879177292209289ull}}, {{9660591036554018816ull, 11277326012594607460ull, 1607514078628538133ull, 2635549485807630806ull}}, {{12075738795692523520ull, 261599460461095613ull, 11232764635140448475ull, 3294436857259538507ull}}, {{1259615439333490688ull, 14162057380858533229ull, 9429269775498172689ull, 4118046071574423134ull}}, {{3093102658797125632ull, 1933756835395501412ull, 1281607591258970027ull, 2573778794734014459ull}}, {{3866378323496407040ull, 16252254099526540477ull, 15437067544355876245ull, 3217223493417518073ull}}, {{9444658922797896704ull, 6480259569126011884ull, 5461276375162681595ull, 4021529366771897592ull}}, {{15126283863603461248ull, 1744319221490063475ull, 3413297734476675997ull, 2513455854232435995ull}}, {{14296168811076938656ull, 6792085045289967248ull, 18101680223378008708ull, 3141819817790544993ull}}, {{17870211013846173320ull, 8490106306612459060ull, 8792042223940347173ull, 3927274772238181242ull}}, {{1945509846799082517ull, 7612159450846480865ull, 10106712408390104887ull, 2454546732648863276ull}}, {{7043573326926241051ull, 4903513295130713177ull, 12633390510487631109ull, 3068183415811079095ull}}, {{13416152677085189217ull, 10741077637340779375ull, 11180052119682150982ull, 3835229269763848869ull}}, {{15302624450819325117ull, 2101487504910599205ull, 9293375584015038316ull, 2397018293602405543ull}}, {{5293222508241992684ull, 2626859381138249007ull, 7005033461591409991ull, 2996272867003006929ull}}, {{2004842116875102951ull, 17118632281704974971ull, 13367977845416650392ull, 3745341083753758661ull}}, {{17393927387542797009ull, 10699145176065609356ull, 10660829162599100447ull, 2340838177346099163ull}}, {{3295665160718944645ull, 8762245451654623792ull, 8714350434821487655ull, 2926047721682623954ull}}, {{4119581450898680806ull, 6341120796140891836ull, 1669566006672083761ull, 3657559652103279943ull}}, {{5149476813623351007ull, 12538087013603502699ull, 15922015563622268413ull, 4571949565129099928ull}}, {{912579999300900428ull, 10142147392715883139ull, 9951259727263917758ull, 2857468478205687455ull}}, {{14975783054408289246ull, 3454312204040078115ull, 7827388640652509294ull, 3571835597757109319ull}}, {{14108042799582973654ull, 13541262291904873452ull, 5172549782388248713ull, 4464794497196386649ull}}, {{18040898786594134342ull, 1545759904799464051ull, 14762058660061125206ull, 2790496560747741655ull}}, {{17939437464815280023ull, 11155571917854105872ull, 13840887306649018603ull, 3488120700934677069ull}}, {{3977552757309548413ull, 9332778878890244437ull, 3466051078029109542ull, 4360150876168346337ull}}, {{4791813482532161710ull, 1221300780879014869ull, 13695496969836663224ull, 2725094297605216460ull}}, {{10601452871592590042ull, 1526625976098768586ull, 17119371212295829030ull, 3406367872006520575ull}}, {{4028444052635961744ull, 11131654506978236541ull, 16787527996942398383ull, 4257959840008150719ull}}, {{4823620542111170042ull, 13874813094502479694ull, 17409734025730080845ull, 2661224900005094199ull}}, {{15252897714493738360ull, 3508458312845935905ull, 17150481513735213153ull, 3326531125006367749ull}}, {{5231064087835009238ull, 8997258909484807786ull, 7603043836886852729ull, 4158163906257959687ull}}, {{7881101073324268678ull, 17152501864496474626ull, 11669431425695364811ull, 2598852441411224804ull}}, {{628004304800560040ull, 16828941312193205379ull, 14586789282119206014ull, 3248565551764031005ull}}, {{14620063436282863761ull, 11812804603386730915ull, 4398428547366843806ull, 4060706939705038757ull}}, {{6831696638463095899ull, 2771316858689318918ull, 5054860851317971331ull, 2537941837315649223ull}}, {{17762992834933645682ull, 17299204128643812359ull, 1706890045720076259ull, 3172427296644561529ull}}, {{17592055025239669198ull, 17012319142377377545ull, 6745298575577483228ull, 3965534120805701911ull}}, {{4077505363133711393ull, 1409327427131085158ull, 11133340637377008874ull, 2478458825503563694ull}}, {{14320253740771915049ull, 10985031320768632255ull, 4693303759866485284ull, 3098073531879454618ull}}, {{13288631157537505907ull, 13731289150960790319ull, 15090001736687882413ull, 3872591914849318272ull}}, {{15222923501102023048ull, 10887898728564187901ull, 9431251085429926508ull, 2420369946780823920ull}}, {{5193596321095365098ull, 13609873410705234877ull, 11789063856787408135ull, 3025462433476029900ull}}, {{11103681419796594277ull, 12400655744954155692ull, 14736329820984260169ull, 3781828041845037375ull}}, {{16163172924227647231ull, 832880812955265451ull, 16127735165756244462ull, 2363642526153148359ull}}, {{15592280136857171135ull, 10264473053048857622ull, 15547982938767917673ull, 2954553157691435449ull}}, {{10266978134216688110ull, 17442277334738459932ull, 5599920618177733379ull, 3693191447114294312ull}}, {{15640233370740205877ull, 8595580324997843505ull, 3499950386361083362ull, 2308244654446433945ull}}, {{5715233658143093634ull, 1521103369392528574ull, 8986624001378742107ull, 2885305818058042431ull}}, {{16367414109533642851ull, 15736437267022824429ull, 6621593983296039729ull, 3606632272572553039ull}}, {{6624209581634889851ull, 5835488528496366825ull, 3665306460692661758ull, 4508290340715691299ull}}, {{15669346034590275917ull, 17482238385592392977ull, 18431717602428771262ull, 2817681462947307061ull}}, {{5751624487955681184ull, 12629425945135715414ull, 9204588947753800366ull, 3522101828684133827ull}}, {{16412902646799377288ull, 6563410394564868459ull, 6894050166264862554ull, 4402627285855167284ull}}, {{7952221145035916853ull, 8713817515030430691ull, 13532153390770314904ull, 2751642053659479552ull}}, {{5328590412867508163ull, 10892271893788038364ull, 16915191738462893630ull, 3439552567074349440ull}}, {{6660738016084385203ull, 4391967830380272147ull, 2697245599369065422ull, 4299440708842936801ull}}, {{1857118250839046800ull, 16580037949269833804ull, 13214993545674135648ull, 2687150443026835500ull}}, {{2321397813548808500ull, 2278303362877740639ull, 16518741932092669561ull, 3358938053783544375ull}}, {{16736805322218174337ull, 7459565222024563702ull, 16036741396688449047ull, 4198672567229430469ull}}, {{5848817307958971057ull, 11579757291406434170ull, 12328806382143974606ull, 2624170354518394043ull}}, {{16534393671803489629ull, 5251324577403266904ull, 10799321959252580354ull, 3280212943147992554ull}}, {{2221248016044810420ull, 15787527758608859439ull, 4275780412210949634ull, 4100266178934990693ull}}, {{8305809037669088369ull, 14478890867557925053ull, 4978205766845537473ull, 2562666361834369183ull}}, {{14993947315513748365ull, 4263555529165242604ull, 1611071190129533938ull, 3203332952292961479ull}}, {{295690070682633840ull, 14552816448311329064ull, 15848897042944081134ull, 4004166190366201848ull}}, {{184806294176646150ull, 4483824261767192761ull, 9905560651840050709ull, 2502603868978876155ull}}, {{4842693886148195591ull, 10216466345636378855ull, 7770264796372675482ull, 3128254836223595194ull}}, {{1441681339257856585ull, 3547210895190697761ull, 489458958611068545ull, 3910318545279493993ull}}, {{12430265883104630126ull, 13746221855562655860ull, 11835126895200387600ull, 2443949090799683745ull}}, {{15537832353880787657ull, 17182777319453319825ull, 958850563718320788ull, 3054936363499604682ull}}, {{5587232387068820859ull, 3031727575607098166ull, 10421935241502676794ull, 3818670454374505852ull}}, {{17327078297200176749ull, 6506515753181824257ull, 15737081562793948804ull, 2386669033984066157ull}}, {{7823789816218057224ull, 8133144691477280322ull, 5836293898210272293ull, 2983336292480082697ull}}, {{556365233417795722ull, 14778116882773988307ull, 11907053391190228270ull, 3729170365600103371ull}}, {{16488629335381979991ull, 4624637033306354787ull, 5136065360280198717ull, 2330731478500064607ull}}, {{15999100650800087084ull, 10392482310060331388ull, 1808395681922860492ull, 2913414348125080759ull}}, {{1552131739790557239ull, 12990602887575414236ull, 16095552657685739327ull, 3641767935156350948ull}}, {{1940164674738196549ull, 11626567591041879891ull, 1672696748397622543ull, 4552209918945438686ull}}, {{17353503986207230507ull, 14184133772042256787ull, 14880493523030677801ull, 2845131199340899178ull}}, {{17080193964331650230ull, 3895109159770657272ull, 9377244866933571444ull, 3556413999176123973ull}}, {{2903498381705011171ull, 4868886449713321591ull, 16333242102094352209ull, 4445517498970154966ull}}, {{8732215516206713838ull, 14572269077139295754ull, 5596590295381582226ull, 2778448436856346854ull}}, {{1691897358403616490ull, 8991964309569343885ull, 16219109906081753591ull, 3473060546070433567ull}}, {{6726557716431908516ull, 6628269368534291952ull, 15662201364174804085ull, 4341325682588041959ull}}, {{4204098572769942823ull, 6448511364547626422ull, 16706404880250334409ull, 2713328551617526224ull}}, {{14478495252817204336ull, 12672325224111920931ull, 2436262026603366395ull, 3391660689521907781ull}}, {{13486433047594117516ull, 11228720511712513260ull, 7657013551681595898ull, 4239575861902384726ull}}, {{17652392691601099256ull, 11629636338247708691ull, 173947451373609532ull, 2649734913688990454ull}}, {{17453804846073986166ull, 14537045422809635864ull, 9440806351071787723ull, 3312168642111238067ull}}, {{3370511983882931091ull, 13559620760084656927ull, 7189321920412346750ull, 4140210802639047584ull}}, {{9024099017567913788ull, 3863076956625522675ull, 4493326200257716719ull, 2587631751649404740ull}}, {{6668437753532504331ull, 217160177354515440ull, 5616657750322145899ull, 3234539689561755925ull}}, {{8335547191915630413ull, 14106508276975308012ull, 11632508206330070277ull, 4043174611952194906ull}}, {{14433089031802044817ull, 11122410682323261459ull, 11882003647383681827ull, 2526984132470121816ull}}, {{13429675271325168117ull, 9291327334476688920ull, 14852504559229602284ull, 3158730165587652270ull}}, {{16787094089156460146ull, 11614159168095861150ull, 9342258662182227047ull, 3948412706984565338ull}}, {{5880247787295399687ull, 14176378507700995075ull, 10450597682291279808ull, 2467757941865353336ull}}, {{2738623715691861705ull, 17720473134626243844ull, 13063247102864099760ull, 3084697427331691670ull}}, {{3423279644614827131ull, 3703847344573253189ull, 7105686841725348893ull, 3855871784164614588ull}}, {{4445392787097960909ull, 4620747599571977195ull, 13664426312933118866ull, 2409919865102884117ull}}, {{945054965445063232ull, 14999306536319747302ull, 3245474835884234870ull, 3012399831378605147ull}}, {{10404690743661104848ull, 9525761133544908319ull, 17891901600137457300ull, 3765499789223256433ull}}, {{13420460742429272386ull, 15176972745320343507ull, 4264909472444828956ull, 2353437368264535271ull}}, {{12163889909609202579ull, 524471857940877768ull, 719450822128648292ull, 2941796710330669089ull}}, {{15204862387011503223ull, 655589822426097210ull, 5510999546088198269ull, 3677245887913336361ull}}, {{9782705946909603221ull, 5431173296460009417ull, 11500435451037635740ull, 4596557359891670451ull}}, {{17643406262886971773ull, 12617855347142281693ull, 4881929147684828385ull, 2872848349932294032ull}}, {{8219199773326551005ull, 1937261128645688405ull, 6102411434606035482ull, 3591060437415367540ull}}, {{14885685735085576660ull, 11644948447661886314ull, 7628014293257544352ull, 4488825546769209425ull}}, {{13915239602855873316ull, 7278092779788678946ull, 16296723979354434980ull, 2805515966730755890ull}}, {{8170677466715065837ull, 9097615974735848683ull, 11147532937338267917ull, 3506894958413444863ull}}, {{5601660814966444393ull, 15983705986847198758ull, 9322730153245446992ull, 4383618698016806079ull}}, {{17336096064636191458ull, 9989816241779499223ull, 12744235373419486226ull, 2739761686260503799ull}}, {{17058434062367851418ull, 3263898265369598221ull, 11318608198346969879ull, 3424702107825629749ull}}, {{7487984522677650560ull, 17914930886994161489ull, 313202192651548636ull, 4280877634782037187ull}}, {{16209205372742001360ull, 1973459767516575122ull, 16336652434903075562ull, 2675548521738773241ull}}, {{11038134679072725892ull, 11690196746250494711ull, 6585757488346680740ull, 3344435652173466552ull}}, {{9185982330413519461ull, 14612745932813118389ull, 8232196860433350925ull, 4180544565216833190ull}}, {{8047081965722143615ull, 11438809217221892945ull, 533437019343456424ull, 2612840353260520744ull}}, {{14670538475580067423ull, 14298511521527366181ull, 666796274179320530ull, 3266050441575650930ull}}, {{4503115039192920567ull, 8649767365054431919ull, 10056867379578926471ull, 4082563051969563662ull}}, {{9731975927136657210ull, 12323633630800101805ull, 1673856093809441140ull, 2551601907480977289ull}}, {{16776655927348209417ull, 15404542038500127256ull, 6704006135689189329ull, 3189502384351221611ull}}, {{2524075835475710155ull, 5420619492842995359ull, 3768321651184098758ull, 3986877980439027014ull}}, {{8495076424813400703ull, 17222945238309035811ull, 16190259087272225435ull, 2491798737774391883ull}}, {{6007159512589362975ull, 16916995529458906860ull, 15626137840662893890ull, 3114748422217989854ull}}, {{7508949390736703718ull, 11922872374968857767ull, 10309300263973841555ull, 3893435527772487318ull}}, {{11610622396851521680ull, 5145952225141842152ull, 1831626646556263068ull, 2433397204857804574ull}}, {{14513277996064402100ull, 6432440281427302690ull, 11512905345050104643ull, 3041746506072255717ull}}, {{8918225458225726817ull, 3428864333356740459ull, 556073626030467092ull, 3802183132590319647ull}}, {{3268047902177385309ull, 11366412245202738595ull, 7265075043910123788ull, 2376364457868949779ull}}, {{17920117933003895348ull, 14208015306503423243ull, 4469657786460266831ull, 2970455572336187224ull}}, {{17788461397827481281ull, 13148333114701891150ull, 5587072233075333539ull, 3713069465420234030ull}}, {{6506102355214787897ull, 5911865187474988017ull, 17326978200954247174ull, 2320668415887646268ull}}, {{12744313962445872775ull, 16613203521198510829ull, 3211978677483257351ull, 2900835519859557836ull}}, {{2095334397775177256ull, 16154818383070750633ull, 4014973346854071689ull, 3626044399824447295ull}}, {{7230854015646359474ull, 6358464923556274579ull, 407030665140201708ull, 4532555499780559119ull}}, {{2213440750565280719ull, 13197412614077447420ull, 7171923193353707923ull, 2832847187362849449ull}}, {{2766800938206600899ull, 11885079749169421371ull, 13576590010119522808ull, 3541058984203561811ull}}, {{17293559228040414836ull, 14856349686461776713ull, 12359051494222015606ull, 4426323730254452264ull}}, {{3890945489884177417ull, 4673532535611222542ull, 7724407183888759754ull, 2766452331409032665ull}}, {{14087053899209997579ull, 15065287706368803985ull, 14267194998288337596ull, 3458065414261290831ull}}, {{3773759318730333261ull, 384865559251453366ull, 13222307729433034092ull, 4322581767826613539ull}}, {{16193657629488622000ull, 9463913011386934161ull, 5958099321681952355ull, 2701613604891633462ull}}, {{6407013981578613788ull, 7218205245806279798ull, 16670996188957216252ull, 3377017006114541827ull}}, {{17232139513828043043ull, 9022756557257849747ull, 16227059217769132411ull, 4221271257643177284ull}}, {{8464244186928832950ull, 3333379839072462140ull, 918539974250931949ull, 2638294536026985803ull}}, {{10580305233661041188ull, 8778410817267965579ull, 14983233023095828648ull, 3297868170033732253ull}}, {{8613695523648913581ull, 10973013521584956974ull, 4893983223587622098ull, 4122335212542165317ull}}, {{771873683853183084ull, 11469819469417986013ull, 5364582523955957763ull, 2576459507838853323ull}}, {{5576528123243866759ull, 9725588318345094612ull, 2094042136517559300ull, 3220574384798566654ull}}, {{6970660154054833449ull, 12156985397931368265ull, 11840924707501724933ull, 4025717980998208317ull}}, {{15885877642352740666ull, 9903958882920799117ull, 9706420951402272035ull, 2516073738123880198ull}}, {{6022288997658762120ull, 7768262585223610993ull, 2909654152398064236ull, 3145092172654850248ull}}, {{12139547265500840554ull, 9710328231529513741ull, 3637067690497580295ull, 3931365215818562810ull}}, {{9893060050151719298ull, 12986484172347027944ull, 6884853324988375588ull, 2457103259886601756ull}}, {{12366325062689649123ull, 16233105215433784930ull, 8606066656235469485ull, 3071379074858252195ull}}, {{6234534291507285595ull, 6456323464010067451ull, 6145897301866948953ull, 3839223843572815244ull}}, {{1590740922978359545ull, 15564417211074761917ull, 13064557850521618903ull, 2399514902233009527ull}}, {{6600112172150337335ull, 14843835495416064492ull, 11719011294724635725ull, 2999393627791261909ull}}, {{8250140215187921669ull, 4719736313987916903ull, 813706063123630945ull, 3749242034739077387ull}}, {{12073866662133532899ull, 14479050242310917824ull, 16649467353948127004ull, 2343276271711923366ull}}, {{15092333327666916124ull, 18098812802888647280ull, 11588462155580382947ull, 2929095339639904208ull}}, {{418672585874093539ull, 18011829985183421197ull, 14485577694475478684ull, 3661369174549880260ull}}, {{5135026750770004827ull, 4068043407769724880ull, 18106972118094348356ull, 4576711468187350325ull}}, {{3209391719231253017ull, 11765899166710853858ull, 13622700583022661674ull, 2860444667617093953ull}}, {{13235111685893842080ull, 5484001921533791514ull, 3193317673496163381ull, 3575555834521367442ull}}, {{7320517570512526791ull, 11466688420344627297ull, 13215019128724980034ull, 4469444793151709302ull}}, {{16104538527638799005ull, 11778366281142779964ull, 3647700937025724617ull, 2793402995719818314ull}}, {{1683929085838947140ull, 887899796146311244ull, 13782998208136931580ull, 3491753744649772892ull}}, {{2104911357298683925ull, 1109874745182889055ull, 17228747760171164475ull, 4364692180812216115ull}}, {{8233098625952759309ull, 16834572780235163323ull, 8462124340893283844ull, 2727932613007635072ull}}, {{5679687264013561232ull, 2596471901584402538ull, 10577655426116604806ull, 3409915766259543840ull}}, {{16322981116871727348ull, 12468961913835278980ull, 13222069282645756007ull, 4262394707824429800ull}}, {{978491161190053785ull, 14710630223788131219ull, 8263793301653597504ull, 2663996692390268625ull}}, {{15058172006769730943ull, 18388287779735164023ull, 14941427645494384784ull, 3329995865487835781ull}}, {{14211028990034775774ull, 4538615650959403413ull, 4841726501585817269ull, 4162494831859794727ull}}, {{11187736127985428811ull, 5142477791063321085ull, 9943608091132217649ull, 2601559269912371704ull}}, {{149612104699622302ull, 11039783257256539261ull, 12429510113915272061ull, 3251949087390464630ull}}, {{4798701149301915781ull, 18411415089998061980ull, 6313515605539314268ull, 4064936359238080788ull}}, {{12222560255168473171ull, 2283762394394012929ull, 13169319290316847226ull, 2540585224523800492ull}}, {{1443142263678427752ull, 12078075029847291970ull, 16461649112896059032ull, 3175731530654750615ull}}, {{11027299866452810498ull, 15097593787309114962ull, 15965375372692685886ull, 3969664413318438269ull}}, {{11503748434960394466ull, 4824310098640808947ull, 12284202617146622631ull, 2481040258324023918ull}}, {{9767999525273105178ull, 1418701604873623280ull, 6131881234578502481ull, 3101300322905029898ull}}, {{12209999406591381472ull, 6385063024519417004ull, 16888223580077903909ull, 3876625403631287372ull}}, {{16854621665974389228ull, 6296507399538329579ull, 1331767700693914135ull, 2422890877269554608ull}}, {{16456591064040598631ull, 3258948230995524070ull, 1664709625867392669ull, 3028613596586943260ull}}, {{11347366793195972481ull, 8685371307171792992ull, 2080887032334240836ull, 3785766995733679075ull}}, {{7092104245747482801ull, 14651729103837146428ull, 17441455459704758186ull, 2366104372333549421ull}}, {{8865130307184353501ull, 9091289342941657227ull, 7966761269348784021ull, 2957630465416936777ull}}, {{6469726865553053972ull, 15975797697104459438ull, 14570137605113367930ull, 3697038081771170971ull}}, {{17878637346252822445ull, 14596559579117675052ull, 6800492993982161004ull, 2310648801106981857ull}}, {{3901552609106476440ull, 18245699473897093816ull, 13112302260905089159ull, 2888311001383727321ull}}, {{4876940761383095549ull, 18195438323943979366ull, 2555319770849197737ull, 3610388751729659152ull}}, {{15319547988583645245ull, 8909239849647810495ull, 3194149713561497172ull, 4512985939662073940ull}}, {{16492246520505860134ull, 14791646942884657367ull, 11219715607830711540ull, 2820616212288796212ull}}, {{16003622132204937264ull, 42814604896270093ull, 14024644509788389426ull, 3525770265360995265ull}}, {{6169469609974007867ull, 9276890292975113425ull, 3695747581953323070ull, 4407212831701244082ull}}, {{15385133552302224677ull, 1186370414682057986ull, 6921528257148214823ull, 2754508019813277551ull}}, {{10008044903523005038ull, 15318021073634736195ull, 4040224303007880624ull, 3443135024766596939ull}}, {{7898370110976368394ull, 700782268333868628ull, 438594360332462877ull, 4303918780958246174ull}}, {{14159853356215006054ull, 2743831926922361844ull, 14109179530489953010ull, 2689949238098903858ull}}, {{17699816695268757568ull, 12653161945507728113ull, 8413102376257665454ull, 3362436547623629823ull}}, {{8289712813803783248ull, 6593080395029884334ull, 5904691951894693914ull, 4203045684529537279ull}}, {{569384490199976626ull, 8732361265321065613ull, 10607961497575265552ull, 2626903552830960799ull}}, {{5323416631177358686ull, 10915451581651332016ull, 8648265853541694036ull, 3283629441038700999ull}}, {{6654270788971698358ull, 13644314477064165020ull, 6198646298499729641ull, 4104536801298376249ull}}, {{13382291279962087282ull, 1610167520524021281ull, 15403368982630800786ull, 2565335500811485155ull}}, {{2892806044670445390ull, 11236081437509802410ull, 14642525209861113078ull, 3206669376014356444ull}}, {{12839379592692832546ull, 4821729760032477204ull, 18303156512326391348ull, 4008336720017945555ull}}, {{17247984282287796149ull, 12236953136875074060ull, 9133629810990300640ull, 2505210450011215972ull}}, {{3113236279150193570ull, 15296191421093842576ull, 11417037263737875800ull, 3131513062514019965ull}}, {{3891545348937741963ull, 673495202657751604ull, 436238524390181039ull, 3914391328142524957ull}}, {{11655587879940864535ull, 7338463529302176608ull, 2578492086957557101ull, 2446494580089078098ull}}, {{14569484849926080669ull, 13784765430055108664ull, 12446487145551722184ull, 3058118225111347622ull}}, {{18211856062407600836ull, 17230956787568885830ull, 6334736895084876922ull, 3822647781389184528ull}}, {{6770724020577362618ull, 15381034010657941548ull, 3959210559428048076ull, 2389154863368240330ull}}, {{8463405025721703273ull, 779548439612875319ull, 14172385236139835904ull, 2986443579210300412ull}}, {{5967570263724741187ull, 974435549516094149ull, 17715481545174794880ull, 3733054474012875515ull}}, {{6035574424041657194ull, 609022218447558843ull, 8766332956520552848ull, 2333159046258047197ull}}, {{2932782011624683588ull, 761277773059448554ull, 15569602214078078964ull, 2916448807822558996ull}}, {{12889349551385630293ull, 951597216324310692ull, 1015258693888047089ull, 3645561009778198746ull}}, {{16111686939232037867ull, 5801182538832776269ull, 10492445404214834669ull, 4556951262222748432ull}}, {{12375647346233717619ull, 5931582095984179120ull, 6557778377634271668ull, 2848094538889217770ull}}, {{15469559182792147023ull, 7414477619980223900ull, 17420595008897615393ull, 3560118173611522212ull}}, {{890204904780632163ull, 13879783043402667780ull, 3328999687412467625ull, 4450147717014402766ull}}, {{9779750102342670910ull, 1757335374485585506ull, 15915682859914955978ull, 2781342323134001728ull}}, {{3001315591073562830ull, 11420041254961757691ull, 1447859501184143356ull, 3476677903917502161ull}}, {{17586702544124117249ull, 14275051568702197113ull, 6421510394907567099ull, 4345847379896877701ull}}, {{4074160062436491425ull, 6616064221225179244ull, 6319287006030923389ull, 2716154612435548563ull}}, {{5092700078045614281ull, 12881766294958861959ull, 3287422739111266332ull, 3395193265544435704ull}}, {{1754189079129629947ull, 16102207868698577449ull, 4109278423889082915ull, 4243991581930544630ull}}, {{12625583220524488477ull, 7758036908722916953ull, 16403357070212840534ull, 2652494738706590393ull}}, {{1946920970373446884ull, 474174099048870384ull, 6669138282483886956ull, 3315618423383237992ull}}, {{2433651212966808605ull, 592717623811087980ull, 8336422853104858695ull, 4144523029229047490ull}}, {{10744404044959031186ull, 7287977542523011843ull, 9821950301617924588ull, 2590326893268154681ull}}, {{8818819037771401079ull, 9109971928153764804ull, 16889123895449793639ull, 3237908616585193351ull}}, {{11023523797214251348ull, 6775778891764818101ull, 16499718850884854145ull, 4047385770731491689ull}}, {{9195545382472601045ull, 15764076853421481073ull, 3394795254161951984ull, 2529616106707182306ull}}, {{16106117746518139210ull, 1258351993067299725ull, 13466866104557215789ull, 3162020133383977882ull}}, {{6297589127865510300ull, 6184626009761512561ull, 7610210593841743928ull, 3952525166729972353ull}}, {{15465208250984413698ull, 3865391256100945350ull, 16285596667219559715ull, 2470328229206232720ull}}, {{10108138276875741314ull, 220053051698793784ull, 1910251760314898028ull, 3087910286507790901ull}}, {{12635172846094676643ull, 275066314623492230ull, 6999500718821010439ull, 3859887858134738626ull}}, {{3285297010381784998ull, 7089445474280764500ull, 8986373967690519428ull, 2412429911334211641ull}}, {{4106621262977231247ull, 8861806842850955625ull, 15844653478040537189ull, 3015537389167764551ull}}, {{9744962597148926963ull, 15688944571991082435ull, 15194130829123283582ull, 3769421736459705689ull}}, {{3784758614004385400ull, 5193904339067038618ull, 2578802740560970383ull, 2355888585287316056ull}}, {{13954320304360257558ull, 1880694405406410368ull, 3223503425701212979ull, 2944860731609145070ull}}, {{17442900380450321947ull, 16185926062040176672ull, 13252751318981292031ull, 3681075914511431337ull}}, {{3356881401853350818ull, 15620721559122832937ull, 2730881093444451327ull, 4601344893139289172ull}}, {{13627265922226814021ull, 16680480002092852441ull, 10930172720257557887ull, 2875840558212055732ull}}, {{3199024347501353815ull, 16238913984188677648ull, 13662715900321947359ull, 3594800697765069665ull}}, {{3998780434376692268ull, 15686956461808459156ull, 3243336820120270487ull, 4493500872206337082ull}}, {{11722609808340208476ull, 16721876816271368828ull, 6638771531002556958ull, 2808438045128960676ull}}, {{14653262260425260595ull, 11678973983484435227ull, 8298464413753196198ull, 3510547556411200845ull}}, {{13704891807104187839ull, 5375345442500768226ull, 14984766535618883152ull, 4388184445514001056ull}}, {{13177243397867505304ull, 3359590901562980141ull, 9365479084761801970ull, 2742615278446250660ull}}, {{2636496192052217917ull, 13422860663808500985ull, 11706848855952252462ull, 3428269098057813325ull}}, {{7907306258492660301ull, 7555203792905850423ull, 798503014658151866ull, 4285336372572266657ull}}, {{11859595439198994544ull, 9333688388993544418ull, 12028279430229814676ull, 2678335232857666660ull}}, {{5601122262143967372ull, 11667110486241930523ull, 15035349287787268345ull, 3347919041072083325ull}}, {{2389716809252571311ull, 748830052520249442ull, 4959128554451921720ull, 4184898801340104157ull}}, {{6105259024210244973ull, 468018782825155901ull, 5405298355746145027ull, 2615561750837565098ull}}, {{12243259798690194121ull, 14420081533813608588ull, 15979994981537457091ull, 3269452188546956372ull}}, {{15304074748362742651ull, 13413415898839622831ull, 1528249653212269748ull, 4086815235683695466ull}}, {{16482575745367796013ull, 17606756973629540077ull, 5566842051685056496ull, 2554259522302309666ull}}, {{6768161626427581304ull, 3561702143327373481ull, 16181924601461096429ull, 3192824402877887082ull}}, {{13071888051461864534ull, 9063813697586604755ull, 11004033714971594728ull, 3991030503597358853ull}}, {{5864087022949971382ull, 5664883560991627972ull, 9183364081070940657ull, 2494394064748349283ull}}, {{7330108778687464227ull, 11692790469666922869ull, 6867519082911287917ull, 3117992580935436604ull}}, {{13774321991786718188ull, 780930031801489874ull, 8584398853639109897ull, 3897490726169295755ull}}, {{13220637263294086772ull, 12017296315944400931ull, 3059406274310749733ull, 2435931703855809847ull}}, {{11914110560690220560ull, 1186562339648337452ull, 17659315898170600879ull, 3044914629819762308ull}}, {{14892638200862775700ull, 15318260979842585527ull, 3627400799003699482ull, 3806143287274702886ull}}, {{16225427903180316669ull, 14185599130829003858ull, 16102183554659475888ull, 2378839554546689303ull}}, {{11058412842120620028ull, 17731998913536254823ull, 15516043424896956956ull, 2973549443183361629ull}}, {{9211330034223387131ull, 3718254568210766913ull, 5559996225839032484ull, 3716936803979202037ull}}, {{17286296317458086717ull, 11547281141986505128ull, 5780840650363089254ull, 2323085502487001273ull}}, {{3161126323113056780ull, 5210729390628355603ull, 11837736831381249472ull, 2903856878108751591ull}}, {{17786465959173484687ull, 6513411738285444503ull, 10185485020799173936ull, 3629821097635939489ull}}, {{17621396430539467955ull, 8141764672856805629ull, 17343542294426355324ull, 4537276372044924361ull}}, {{13319215778300861424ull, 14311974957390279326ull, 3922184906375390221ull, 2835797732528077726ull}}, {{7425647686021300972ull, 4054910641455685446ull, 14126103169824013585ull, 3544747165660097157ull}}, {{58687570671850406ull, 9680324320246994712ull, 3822570906997853269ull, 4430933957075121447ull}}, {{36679731669906504ull, 8356045709368065647ull, 9306635844514740149ull, 2769333723171950904ull}}, {{13880907719869546842ull, 15056743155137469962ull, 11633294805643425186ull, 3461667153964938630ull}}, {{8127762612982157745ull, 9597556907067061645ull, 5318246470199505675ull, 4327083942456173288ull}}, {{7385694642327542543ull, 3692630057703219576ull, 3323904043874691047ull, 2704427464035108305ull}}, {{9232118302909428178ull, 4101553701636566ull, 8766566073270751713ull, 3380534330043885381ull}}, {{2316775841782009414ull, 4616812960554433612ull, 15569893610015827545ull, 4225667912554856726ull}}, {{10671356937968531692ull, 14414723146414990767ull, 5119497487832504311ull, 2641042445346785454ull}}, {{8727510154033276711ull, 13406717914591350555ull, 15622743896645406197ull, 3301303056683481817ull}}, {{6297701674114207985ull, 2923339337957024482ull, 5693371815524594035ull, 4126628820854352272ull}}, {{8547749564748767895ull, 17967988150718997965ull, 3558357384702871271ull, 2579143013033970170ull}}, {{15296372974363347772ull, 17848299169971359552ull, 13671318767733364897ull, 3223928766292462712ull}}, {{673722144244633099ull, 8475315907182035729ull, 17089148459666706122ull, 4029910957865578390ull}}, {{11950291386221365447ull, 9908758460416160234ull, 6069031768864303422ull, 2518694348665986494ull}}, {{5714492195921931001ull, 3162576038665424485ull, 16809661747935155086ull, 3148367935832483117ull}}, {{11754801263329801655ull, 13176592085186556414ull, 7177019129636780145ull, 3935459919790603897ull}}, {{2735064771153738131ull, 1317841025600515903ull, 16014852002091457351ull, 2459662449869127435ull}}, {{17253889019224336375ull, 15482359337282808590ull, 15406878984186933784ull, 3074578062336409294ull}}, {{12343989237175644661ull, 906205097893959122ull, 10035226693378891423ull, 3843222577920511618ull}}, {{12326679291662165817ull, 7483907213824806307ull, 10883702701789195043ull, 2402014111200319761ull}}, {{10796663096150319367ull, 4743197998853619980ull, 18216314395663881708ull, 3002517639000399701ull}}, {{13495828870187899209ull, 5928997498567024975ull, 8935334939297688423ull, 3753147048750499627ull}}, {{15352422071508518862ull, 10623152464245472465ull, 3278741327847361312ull, 2345716905469062267ull}}, {{5355469534103484865ull, 13278940580306840582ull, 17933484715091365352ull, 2932146131836327833ull}}, {{15917708954484131889ull, 16598675725383550727ull, 8581797838582042978ull, 3665182664795409792ull}}, {{15285450174677776957ull, 11524972619874662601ull, 10727247298227553723ull, 4581478330994262240ull}}, {{2635877331532528743ull, 4897264878207970174ull, 6704529561392221077ull, 2863423956871413900ull}}, {{12518218701270436736ull, 10733267116187350621ull, 8380661951740276346ull, 3579279946089267375ull}}, {{1812715321305882208ull, 4193211858379412469ull, 5864141421247957529ull, 4474099932611584219ull}}, {{3438790085029870332ull, 14149972457555602553ull, 1359245379066279503ull, 2796312457882240137ull}}, {{8910173624714725819ull, 13075779553517115287ull, 6310742742260237283ull, 3495390572352800171ull}}, {{6526031012466019370ull, 11733038423469006205ull, 3276742409397908700ull, 4369238215441000214ull}}, {{6384612392004956058ull, 16556521051522904686ull, 15883022061155856649ull, 2730773884650625133ull}}, {{17204137526860970881ull, 6860593259121467145ull, 6018719521162657100ull, 3413467355813281417ull}}, {{7670113853294049889ull, 8575741573901833932ull, 12135085419880709279ull, 4266834194766601771ull}}, {{14017193195163556989ull, 12277367511329728063ull, 5278585378211749347ull, 2666771371729126107ull}}, {{12909805475527058332ull, 10735023370734772175ull, 1986545704337298780ull, 3333464214661407634ull}}, {{11525570825981435011ull, 13418779213418465219ull, 11706554167276399283ull, 4166830268326759542ull}}, {{4897638757024702930ull, 6080893999172846810ull, 2704910336120361648ull, 2604268917704224714ull}}, {{15345420483135654470ull, 7601117498966058512ull, 12604509957005227868ull, 3255336147130280892ull}}, {{735031530210016471ull, 9501396873707573141ull, 15755637446256534835ull, 4069170183912851115ull}}, {{2765237715594954247ull, 3632530036853539261ull, 7541430394696640320ull, 2543231364945531947ull}}, {{8068233162921080712ull, 4540662546066924076ull, 4815101974943412496ull, 3179039206181914934ull}}, {{10085291453651350890ull, 5675828182583655095ull, 15242249505534041428ull, 3973799007727393667ull}}, {{13220836186173176163ull, 12770764650969560242ull, 7220562931745081940ull, 2483624379829621042ull}}, {{7302673195861694395ull, 15963455813711950303ull, 18249075701536128233ull, 3104530474787026302ull}}, {{4516655476399730090ull, 6119261711857774167ull, 13587972590065384484ull, 3880663093483782878ull}}, {{9740438700390913162ull, 13047910606765884662ull, 3880796850363477398ull, 2425414433427364299ull}}, {{2952176338633865645ull, 7086516221602580020ull, 239310044526958844ull, 3031768041784205374ull}}, {{3690220423292332056ull, 8858145277003225025ull, 9522509592513474363ull, 3789710052230256717ull}}, {{13835602810626177295ull, 3230497788913321688ull, 8257411504534615429ull, 2368568782643910448ull}}, {{17294503513282721619ull, 8649808254569040014ull, 10321764380668269286ull, 2960710978304888060ull}}, {{12394757354748626215ull, 1588888281356524210ull, 12902205475835336608ull, 3700888722881110075ull}}, {{12358409365145279289ull, 993055175847827631ull, 5758035413183391428ull, 2313055451800693797ull}}, {{10836325688004211207ull, 1241318969809784539ull, 11809230284906627189ull, 2891319314750867246ull}}, {{8933721091577876105ull, 6163334730689618578ull, 5538165819278508178ull, 3614149143438584058ull}}, {{1943779327617569323ull, 16927540450216799031ull, 16146079310952911030ull, 4517686429298230072ull}}, {{8132391107402062683ull, 5968026762958111490ull, 10091299569345569394ull, 2823554018311393795ull}}, {{942116847397802545ull, 16683405490552415171ull, 8002438443254573838ull, 3529442522889242244ull}}, {{15012704114529416894ull, 11630884826335743155ull, 10003048054068217298ull, 4411803153611552805ull}}, {{7077097062367191607ull, 11880989034887227376ull, 8557748043006329763ull, 2757376971007220503ull}}, {{8846371327958989508ull, 10239550275181646316ull, 6085499035330524300ull, 3446721213759025629ull}}, {{11057964159948736885ull, 12799437843977057895ull, 12218559812590543279ull, 4308401517198782036ull}}, {{13828756627609042409ull, 14917177680126743040ull, 16859971919723865357ull, 2692750948249238772ull}}, {{17285945784511303012ull, 4811414044876265088ull, 2628220825945280081ull, 3365938685311548466ull}}, {{3160688156929577148ull, 10625953574522719265ull, 12508648069286375909ull, 4207423356639435582ull}}, {{13504645144149455478ull, 8947063993290393492ull, 3206219024876597039ull, 2629639597899647239ull}}, {{16880806430186819347ull, 6572143973185603961ull, 17842831836377910011ull, 3287049497374559048ull}}, {{7265949982451360472ull, 3603493948054617048ull, 3856795721762835898ull, 4108811871718198811ull}}, {{4541218739032100295ull, 6863869735961523559ull, 104654316888078484ull, 2568007419823874257ull}}, {{1064837405362737465ull, 8579837169951904449ull, 4742503914537486009ull, 3210009274779842821ull}}, {{5942732775130809735ull, 15336482480867268465ull, 10539815911599245415ull, 4012511593474803526ull}}, {{15243423030525225845ull, 16502830578183124646ull, 1975698926322140480ull, 2507819745921752204ull}}, {{9830906751301756498ull, 2181794149019354192ull, 2469623657902675601ull, 3134774682402190255ull}}, {{12288633439127195622ull, 7338928704701580644ull, 16922087627660508213ull, 3918468353002737818ull}}, {{16903767936309273072ull, 6892673449652181854ull, 15187990785715205537ull, 2449042720626711136ull}}, {{11906337883531815532ull, 13227527830492615222ull, 538244408434455305ull, 3061303400783388921ull}}, {{5659550317559993606ull, 2699351732833605316ull, 5284491528970457036ull, 3826629250979236151ull}}, {{12760590985329771812ull, 10910466869875779130ull, 10220336233247617503ull, 2391643281862022594ull}}, {{6727366694807438957ull, 9026397568917336009ull, 3552048254704746071ull, 2989554102327528243ull}}, {{13020894386936686600ull, 6671310942719282107ull, 18275118373663096301ull, 3736942627909410303ull}}, {{5832215982621735173ull, 6475412348413245269ull, 18339478011180517044ull, 2335589142443381439ull}}, {{11901955996704556871ull, 8094265435516556586ull, 18312661495548258401ull, 2919486428054226799ull}}, {{5654072959025920280ull, 14729517812823083637ull, 18279140851007935097ull, 3649358035067783499ull}}, {{11679277217209788254ull, 4576839210746690834ull, 18237240045332530968ull, 4561697543834729374ull}}, {{11911234279183505563ull, 2860524506716681771ull, 6786589009905443951ull, 2851060964896705859ull}}, {{10277356830551994050ull, 17410713688678015926ull, 3871550243954417034ull, 3563826206120882324ull}}, {{3623324001335216754ull, 12540020073992744100ull, 4839437804943021293ull, 4454782757651102905ull}}, {{11487949537689286279ull, 10143355555459159014ull, 14553863674157858068ull, 2784239223531939315ull}}, {{5136564885256832041ull, 12679194444323948768ull, 13580643574269934681ull, 3480299029414924144ull}}, {{6420706106571040051ull, 2013935000122772248ull, 16975804467837418352ull, 4350373786768655180ull}}, {{4012941316606900032ull, 1258709375076732655ull, 1386505755543610662ull, 2718983616730409488ull}}, {{404490627331237136ull, 10796758755700691627ull, 1733132194429513327ull, 3398729520913011860ull}}, {{14340671339446210132ull, 8884262426198476629ull, 2166415243036891659ull, 4248411901141264825ull}}, {{11268762596367575285ull, 3246821007160353941ull, 12883224572966527047ull, 2655257438213290515ull}}, {{250895190177305394ull, 17893584314232606139ull, 11492344697780770904ull, 3319071797766613144ull}}, {{14148677043003795454ull, 3920236319081206057ull, 14365430872225963631ull, 4148839747208266430ull}}, {{1925394124236290303ull, 9367676727066835642ull, 4366708276713839365ull, 2593024842005166519ull}}, {{11630114692150138687ull, 16321281927260932456ull, 846699327464911302ull, 3241281052506458149ull}}, {{14537643365187673358ull, 11178230372221389762ull, 5670060177758527032ull, 4051601315633072686ull}}, {{13697713121669683753ull, 6986393982638368601ull, 17378845666381243107ull, 2532250822270670428ull}}, {{3287083346804940979ull, 4121306459870572848ull, 3276813009267002268ull, 3165313527838338036ull}}, {{4108854183506176224ull, 5151633074838216060ull, 4096016261583752835ull, 3956641909797922545ull}}, {{11791405901546135948ull, 913927662560191085ull, 14089225209558315282ull, 2472901193623701590ull}}, {{904199321650506223ull, 10365781615055014665ull, 8388159475093118294ull, 3091126492029626988ull}}, {{5741935170490520683ull, 3733854981963992523ull, 10485199343866397868ull, 3863908115037033735ull}}, {{1282866472342881475ull, 11557031400582271135ull, 13470778617557580523ull, 2414942571898146084ull}}, {{15438641145710765555ull, 9834603232300451014ull, 16838473271946975654ull, 3018678214872682605ull}}, {{10074929395283681136ull, 3069882003520787960ull, 7213033534651555856ull, 3773347768590853257ull}}, {{6296830872052300710ull, 1918676252200492475ull, 16037361005225692170ull, 2358342355369283285ull}}, {{3259352571637987984ull, 11621717352105391402ull, 6211643201249951500ull, 2947927944211604107ull}}, {{13297562751402260787ull, 14527146690131739252ull, 3152867983135051471ull, 3684909930264505134ull}}, {{16621953439252825984ull, 13547247344237286161ull, 13164457015773590147ull, 4606137412830631417ull}}, {{3471191871891934384ull, 6161186580934609899ull, 1310256607217411986ull, 2878835883019144636ull}}, {{18174047895147081692ull, 16924855263023038181ull, 1637820759021764982ull, 3598544853773930795ull}}, {{8882501813651688403ull, 11932697041924021919ull, 15882334004059369940ull, 4498181067217413493ull}}, {{12469092661173387108ull, 16681307688057289507ull, 12232301761750800164ull, 2811363167010883433ull}}, {{10974679808039345981ull, 2404890536362060268ull, 1455319146906336494ull, 3514203958763604292ull}}, {{13718349760049182476ull, 12229485207307351143ull, 1819148933632920617ull, 4392754948454505365ull}}, {{15491497627671820904ull, 725899226926012608ull, 3442811092734269338ull, 2745471842784065853ull}}, {{917627960880224514ull, 10130746070512291569ull, 8915199884345224576ull, 3431839803480082316ull}}, {{5758720969527668546ull, 12663432588140364461ull, 11143999855431530720ull, 4289799754350102895ull}}, {{5905043615168486793ull, 7914645367587727788ull, 13882528937285788556ull, 2681124846468814309ull}}, {{7381304518960608492ull, 9893306709484659735ull, 3518103116325071983ull, 3351406058086017887ull}}, {{4614944630273372710ull, 7754947368428436765ull, 18232686950688503691ull, 4189257572607522358ull}}, {{5190183403134551896ull, 2540999096054079026ull, 6783743325752926903ull, 2618285982879701474ull}}, {{15711101290772965678ull, 17011306925349762494ull, 17703051194045934436ull, 3272857478599626842ull}}, {{10415504576611431290ull, 2817389582977651502ull, 12905441955702642238ull, 4091071848249533553ull}}, {{1898004341954756652ull, 15595926544643195901ull, 1148372194673069542ull, 2556919905155958471ull}}, {{6984191445870833719ull, 10271536143949219068ull, 15270523298623500640ull, 3196149881444948088ull}}, {{8730239307338542149ull, 12839420179936523835ull, 641410049569824184ull, 3995187351806185111ull}}, {{3150556557872894891ull, 8024637612460327397ull, 7318410308622221971ull, 2496992094878865694ull}}, {{8549881715768506518ull, 5419110997148021342ull, 18371384922632553272ull, 3121240118598582117ull}}, {{1463980107855857339ull, 6773888746435026678ull, 9129173098008527878ull, 3901550148248227647ull}}, {{14750045622692074549ull, 18068738521804055385ull, 12623262213896411779ull, 2438468842655142279ull}}, {{4602498973082929474ull, 17974237133827681328ull, 11167391748943126820ull, 3048086053318927849ull}}, {{5753123716353661843ull, 4021052343575050044ull, 124181630896744814ull, 3810107566648659812ull}}, {{12819074359575814460ull, 16348215770016569989ull, 9300985556165241316ull, 2381317229155412382ull}}, {{2188784894187604363ull, 1988525638811160871ull, 2402859908351775838ull, 2976646536444265478ull}}, {{16571039173016669165ull, 11709029085368726896ull, 12226946922294495605ull, 3720808170555331847ull}}, {{10356899483135418228ull, 9623986187569148262ull, 14559370854075141609ull, 2325505106597082404ull}}, {{3722752317064496977ull, 16641668752888823232ull, 18199213567593927011ull, 2906881383246353005ull}}, {{4653440396330621222ull, 16190399922683641136ull, 8913958904210245052ull, 3633601729057941257ull}}, {{5816800495413276527ull, 1791255829644999804ull, 15754134648690194220ull, 4542002161322426571ull}}, {{12858872346488073638ull, 10342906930382900685ull, 7540491146217677435ull, 2838751350826516607ull}}, {{2238532377827928335ull, 8316947644551237953ull, 4813927914344708890ull, 3548439188533145759ull}}, {{7409851490712298322ull, 1172812518834271633ull, 1405723874503498209ull, 4435548985666432199ull}}, {{16160372227763656212ull, 12262222870339889530ull, 7796106449205768236ull, 2772218116041520124ull}}, {{10977093247849794457ull, 15327778587924861913ull, 9745133061507210295ull, 3465272645051900155ull}}, {{18333052578239630975ull, 14548037216478689487ull, 7569730308456624965ull, 4331590806314875194ull}}, {{18375686889040851215ull, 11398366269512874881ull, 9342767461212778507ull, 2707244253946796996ull}}, {{9134550556018900307ull, 9636271818463705698ull, 11678459326515973134ull, 3384055317433496245ull}}, {{2194816158168849576ull, 2821967736224856315ull, 763016102862802706ull, 4230069146791870307ull}}, {{17512661163351388649ull, 6375415853567923100ull, 16617786128785109355ull, 2643793216744918941ull}}, {{3444082380479684195ull, 3357583798532515972ull, 6937174605699222982ull, 3304741520931148677ull}}, {{4305102975599605244ull, 13420351785020420773ull, 13283154275551416631ull, 4130926901163935846ull}}, {{4996532368963447229ull, 15305248893278844839ull, 3690285403792247490ull, 2581829313227459904ull}}, {{1633979442776921133ull, 9908189079743780241ull, 4612856754740309363ull, 3227286641534324880ull}}, {{6654160321898539320ull, 7773550331252337397ull, 5766070943425386704ull, 4034108301917906100ull}}, {{6464693210400281027ull, 4858468957032710873ull, 12827166376495642498ull, 2521317688698691312ull}}, {{12692552531427739188ull, 15296458233145664399ull, 16033957970619553122ull, 3151647110873364140ull}}, {{11254004645857286080ull, 9897200754577304691ull, 1595703389564889787ull, 3939558888591705176ull}}, {{4727909894447109848ull, 3879907462397121480ull, 997314618478056117ull, 2462224305369815735ull}}, {{5909887368058887310ull, 9461570346423789754ull, 15081701328379733858ull, 3077780381712269668ull}}, {{16610731246928384946ull, 2603590896174961384ull, 405382586765115707ull, 3847225477140337086ull}}, {{10381707029330240591ull, 17768145374605208529ull, 14088422172010361028ull, 2404515923212710678ull}}, {{17588819805090188643ull, 3763437644546959045ull, 8387155678158175478ull, 3005644904015888348ull}}, {{8150966701080572092ull, 13927669092538474615ull, 10483944597697719347ull, 3757056130019860435ull}}, {{12011883215816439414ull, 6398950173622852682ull, 4246622364347380640ull, 2348160081262412772ull}}, {{5791481982915773459ull, 7998687717028565853ull, 5308277955434225800ull, 2935200101578015965ull}}, {{11851038497072104727ull, 9998359646285707316ull, 11247033462720170154ull, 3669000126972519956ull}}, {{14813798121340130909ull, 3274577521002358337ull, 14058791828400212693ull, 4586250158715649945ull}}, {{2341094798196499962ull, 4352453959840167913ull, 1869215865109051077ull, 2866406349197281216ull}}, {{7538054516173012857ull, 10052253468227597795ull, 2336519831386313846ull, 3583007936496601520ull}}, {{4810882126788878167ull, 3341944798429721436ull, 2920649789232892308ull, 4478759920620751900ull}}, {{12230173366097824663ull, 11312087535873351705ull, 11048778155125333500ull, 2799224950387969937ull}}, {{1452658652340117116ull, 14140109419841689632ull, 18422658712334054779ull, 3499031187984962421ull}}, {{1815823315425146395ull, 13063450756374724136ull, 9193265335135404762ull, 4373788984981203027ull}}, {{1134889572140716497ull, 12776342741161590489ull, 3439947825245934024ull, 2733618115613251892ull}}, {{6030297983603283525ull, 15970428426451988111ull, 4299934781557417530ull, 3417022644516564865ull}}, {{2926186461076716502ull, 10739663496210209331ull, 9986604495374159817ull, 4271278305645706081ull}}, {{17969767602668805478ull, 18241504731199850591ull, 17770842855677319645ull, 2669548941028566300ull}}, {{17850523484908618944ull, 8966822858717649527ull, 3766809495887097941ull, 3336936176285707876ull}}, {{17701468337708385775ull, 15820214591824449813ull, 4708511869858872426ull, 4171170220357134845ull}}, {{13369260720281435062ull, 14499320138317669037ull, 5248662927875489218ull, 2606981387723209278ull}}, {{2876517845069630115ull, 8900778136042310489ull, 15784200696699137331ull, 3258726734654011597ull}}, {{8207333324764425548ull, 6514286651625500207ull, 5895192815591757952ull, 4073408418317514497ull}}, {{12047112355618847824ull, 4071429157265937629ull, 15213710555813318480ull, 2545880261448446560ull}}, {{1223832389241396067ull, 5089286446582422037ull, 570394121057096484ull, 3182350326810558201ull}}, {{6141476504979132988ull, 6361608058228027546ull, 5324678669748758509ull, 3977937908513197751ull}}, {{8450108834039346022ull, 6281848045606211168ull, 10245453196234055924ull, 2486211192820748594ull}}, {{10562636042549182527ull, 7852310057007763960ull, 3583444458437794097ull, 3107763991025935743ull}}, {{13203295053186478159ull, 14427073589687092854ull, 18314363628329406333ull, 3884704988782419678ull}}, {{3640373389814160945ull, 11322764002768126986ull, 6834791249278491054ull, 2427940617989012299ull}}, {{13773838774122476989ull, 4930082966605382924ull, 3931803043170725914ull, 3034925772486265374ull}}, {{17217298467653096237ull, 15385975745111504463ull, 14138125840818183200ull, 3793657215607831717ull}}, {{17678340569924267004ull, 9616234840694690289ull, 11142171659725058452ull, 2371035759754894823ull}}, {{8262867657123170043ull, 12020293550868362862ull, 9316028556228935161ull, 2963794699693618529ull}}, {{1105212534549186746ull, 1190308883303289866ull, 16256721713713556856ull, 3704743374617023161ull}}, {{5302443852520629620ull, 743943052064556166ull, 3242922043429891179ull, 2315464609135639476ull}}, {{15851426852505562833ull, 14764986870362858919ull, 4053652554287363973ull, 2894330761419549345ull}}, {{15202597547204565637ull, 4621175532671409937ull, 9678751711286592871ull, 3617913451774436681ull}}, {{5168188878723543335ull, 1164783397411874518ull, 16710125657535628993ull, 4522391814718045851ull}}, {{17065176104484378296ull, 12257204669450891333ull, 8137985526746074168ull, 2826494884198778657ull}}, {{7496412075323309158ull, 15321505836813614167ull, 14784167926859980614ull, 3533118605248473321ull}}, {{4758829075726748544ull, 9928510259162241901ull, 4645151853292812056ull, 4416398256560591652ull}}, {{5280111181542911792ull, 6205318911976401188ull, 12126591945162783343ull, 2760248910350369782ull}}, {{6600138976928639740ull, 3144962621543113581ull, 5934867894598703371ull, 3450311137937962228ull}}, {{12861859739588187579ull, 17766261332211055688ull, 7418584868248379213ull, 4312888922422452785ull}}, {{8038662337242617237ull, 13409756341845603757ull, 16165830588723706768ull, 2695555576514032990ull}}, {{14660013939980659450ull, 16762195427307004696ull, 10983916199049857652ull, 3369444470642541238ull}}, {{18325017424975824312ull, 2506000210424204254ull, 4506523211957546258ull, 4211805588303176548ull}}, {{6841449872182502291ull, 6177936149942515563ull, 12039949044328242219ull, 2632378492689485342ull}}, {{3940126321800739960ull, 3110734169000756550ull, 5826564268555526966ull, 3290473115861856678ull}}, {{14148529939105700758ull, 13111789748105721495ull, 16506577372549184515ull, 4113091394827320847ull}}, {{15760360239582144830ull, 5889025583352381982ull, 17234139885484322178ull, 2570682121767075529ull}}, {{10477078262622905229ull, 16584654016045253286ull, 7707616801573239010ull, 3213352652208844412ull}}, {{3872975791423855729ull, 11507445483201790800ull, 9634521001966548763ull, 4016690815261055515ull}}, {{2420609869639909831ull, 4886310417787425298ull, 3715732617015399025ull, 2510431759538159697ull}}, {{12249134373904663096ull, 10719574040661669526ull, 9256351789696636685ull, 3138039699422699621ull}}, {{6088045930526053062ull, 18011153569254474812ull, 16182125755548183760ull, 3922549624278374526ull}}, {{13028400743433558972ull, 11256970980784046757ull, 5502142578790226946ull, 2451593515173984079ull}}, {{2450442874009785003ull, 4847841689125282639ull, 2265992205060395779ull, 3064491893967480099ull}}, {{16898111647794394965ull, 1448116092979215394ull, 16667548311607658436ull, 3830614867459350123ull}}, {{15173005798298884757ull, 10128444594966785429ull, 8111374685541092570ull, 2394134292162093827ull}}, {{5131199192591442235ull, 3437183706853705979ull, 5527532338498977809ull, 2992667865202617284ull}}, {{1802312972311914889ull, 8908165651994520378ull, 6909415423123722261ull, 3740834831503271605ull}}, {{5738131626122334710ull, 7873446541710269188ull, 6624227648666020365ull, 2338021769689544753ull}}, {{7172664532652918387ull, 14453494195565224389ull, 12891970579259913360ull, 2922527212111930941ull}}, {{13577516684243535888ull, 18066867744456530486ull, 2279905168792727988ull, 3653159015139913677ull}}, {{7748523818449644052ull, 4136840606861111492ull, 7461567479418297890ull, 4566448768924892096ull}}, {{14066199423385803341ull, 7197211397715582586ull, 4663479674636436181ull, 2854030480578057560ull}}, {{8359377242377478368ull, 13608200265571866137ull, 5829349593295545226ull, 3567538100722571950ull}}, {{15060907571399235864ull, 7786878295110056863ull, 16510059028474207341ull, 4459422625903214937ull}}, {{16330596259765604271ull, 7172641943657479491ull, 3401257865155297732ull, 2787139141189509336ull}}, {{15801559306279617434ull, 8965802429571849364ull, 4251572331444122165ull, 3483923926486886670ull}}, {{1305205059139970177ull, 15818939055392199610ull, 14537837451159928514ull, 4354904908108608337ull}}, {{5427439180389869265ull, 14498522928047512660ull, 2168619379333873465ull, 2721815567567880211ull}}, {{6784298975487336581ull, 4288095604777227113ull, 16545832279449505544ull, 3402269459459850263ull}}, {{13092059737786558630ull, 5360119505971533891ull, 16070604330884494026ull, 4252836824324812829ull}}, {{5876694326902905192ull, 7961760709659596586ull, 12349970716016502718ull, 2658023015203008018ull}}, {{16569239945483407298ull, 728828850219719924ull, 6214091358165852590ull, 3322528769003760023ull}}, {{2264805858144707506ull, 10134408099629425714ull, 3155928179279927833ull, 4153160961254700029ull}}, {{6027189679767830095ull, 17863220108336860831ull, 4278298121263648847ull, 2595725600784187518ull}}, {{2922301081282399715ull, 17717339116993688135ull, 14571244688434336867ull, 3244657000980234397ull}}, {{17487934406885163356ull, 17534987877814722264ull, 4378997805260757372ull, 4055821251225292997ull}}, {{10929959004303227098ull, 1735995386779425607ull, 5042716637501667310ull, 2534888282015808123ull}}, {{9050762736951645968ull, 11393366270329057817ull, 1691709778449696233ull, 3168610352519760154ull}}, {{15925139439616945364ull, 406649782629158559ull, 11338009259916896100ull, 3960762940649700192ull}}, {{16870741177401672709ull, 9477528150997999907ull, 7086255787448060062ull, 2475476837906062620ull}}, {{16476740453324702982ull, 2623538151892724076ull, 8857819734310075078ull, 3094346047382578275ull}}, {{2149181492946327111ull, 12502794726720680904ull, 6460588649460205943ull, 3867932559228222844ull}}, {{1343238433091454444ull, 14731775731841507421ull, 13261239942767404522ull, 2417457849517639277ull}}, {{6290734059791705959ull, 9191347627947108468ull, 2741491873177091941ull, 3021822311897049097ull}}, {{7863417574739632449ull, 16100870553361273489ull, 8038550859898752830ull, 3777277889871311371ull}}, {{16443851030280740041ull, 5451358077423408026ull, 2718251278223026567ull, 2360798681169569607ull}}, {{11331441750996149243ull, 2202511578351872129ull, 17232872153060946921ull, 2950998351461962008ull}}, {{329244133463022842ull, 7364825491367228066ull, 3094346117616632035ull, 3688747939327452511ull}}, {{9634927203683554360ull, 4594345845781647178ull, 17702990702302953756ull, 4610934924159315638ull}}, {{10633515520729609379ull, 12094838190468305294ull, 6452683170511958193ull, 2881834327599572274ull}}, {{4068522364057235916ull, 1283489682803217906ull, 17289225999994723550ull, 3602292909499465342ull}}, {{14309024991926320703ull, 10827734140358798190ull, 12388160463138628629ull, 4502866136874331678ull}}, {{4331454601526562535ull, 9073176846937942821ull, 3130914271034254989ull, 2814291335546457299ull}}, {{10026004270335591073ull, 15953157077099816430ull, 17748700894074982448ull, 3517864169433071623ull}}, {{3309133301064713033ull, 1494702272665218922ull, 17574190099166340157ull, 4397330211791339529ull}}, {{6679894331592833550ull, 3240031929629455778ull, 4066339784337880742ull, 2748331382369587206ull}}, {{17573239951345817745ull, 13273411948891595530ull, 14306296767277126735ull, 3435414227961984007ull}}, {{12743177902327496374ull, 11980078917687106509ull, 13271184940669020515ull, 4294267784952480009ull}}, {{10270329198168379186ull, 5181706314340747616ull, 1376961560277055966ull, 2683917365595300006ull}}, {{12837911497710473982ull, 15700504929780710328ull, 10944573987201095765ull, 3354896706994125007ull}}, {{16047389372138092477ull, 5790573106943724198ull, 9069031465573981803ull, 4193620883742656259ull}}, {{5417932339158919894ull, 1313265182626133672ull, 3362301656770044675ull, 2621013052339160162ull}}, {{6772415423948649868ull, 15476639533564830802ull, 13426249107817331651ull, 3276266315423950202ull}}, {{17688891316790588143ull, 14734113398528650598ull, 7559439347916888756ull, 4095332894279937753ull}}, {{6443871054566729685ull, 18432192910935182432ull, 16253864638516525232ull, 2559583058924961095ull}}, {{8054838818208412107ull, 4593497064959426424ull, 15705644779718268637ull, 3199478823656201369ull}}, {{10068548522760515133ull, 10353557349626670934ull, 5796997919365672084ull, 3999348529570251712ull}}, {{1681156808297934054ull, 15694345380371445142ull, 3623123699603545052ull, 2499592830981407320ull}}, {{11324818047227193376ull, 1171187651754754811ull, 4528904624504431316ull, 3124491038726759150ull}}, {{9544336540606603816ull, 1463984564693443514ull, 14884502817485314953ull, 3905613798408448937ull}}, {{10576896356306515289ull, 12444205399001871956ull, 2385285233287239989ull, 2441008624005280586ull}}, {{13221120445383144111ull, 1720198693470176233ull, 12204978578463825795ull, 3051260780006600732ull}}, {{2691342501446766427ull, 15985306422119884004ull, 15256223223079782243ull, 3814075975008250915ull}}, {{10905461100259004825ull, 7684973504611233550ull, 7229296505211169950ull, 2383797484380156822ull}}, {{4408454338468980223ull, 382844843909266130ull, 18259992668368738246ull, 2979746855475196027ull}}, {{14733939959941001087ull, 9701928091741358470ull, 18213304817033534903ull, 3724683569343995034ull}}, {{4597026456535737775ull, 12981234084979430900ull, 15995001529073347218ull, 2327927230839996896ull}}, {{5746283070669672219ull, 7003170569369512817ull, 1547007837632132407ull, 2909909038549996121ull}}, {{11794539856764478178ull, 4142277193284503117ull, 6545445815467553413ull, 3637386298187495151ull}}, {{908116765673434010ull, 9789532510033016801ull, 3570121250907053862ull, 4546732872734368939ull}}, {{12096788024614366017ull, 1506771800343247596ull, 18372226846312766328ull, 2841708045458980586ull}}, {{15120985030767957521ull, 1883464750429059495ull, 13741911521036182102ull, 3552135056823725733ull}}, {{14289545270032558997ull, 11577702974891100177ull, 3342331346013063915ull, 4440168821029657167ull}}, {{2013436766129267517ull, 4930221350093243659ull, 9006486118899246803ull, 2775105513143535729ull}}, {{16351854012943748108ull, 1551090669189166669ull, 15869793667051446408ull, 3468881891429419661ull}}, {{6604759460897521423ull, 1938863336486458337ull, 6002184028532144298ull, 4336102364286774577ull}}, {{15657189709129420650ull, 5823475603731424364ull, 15280580063901059946ull, 2710063977679234110ull}}, {{1124743062702224196ull, 16502716541519056264ull, 9877353043021549124ull, 3387579972099042638ull}}, {{1405928828377780245ull, 2181651603189268714ull, 3123319266922160598ull, 4234474965123803298ull}}, {{5490391536163500557ull, 15198590307275456658ull, 6563760560253738277ull, 2646546853202377061ull}}, {{16086361457059151504ull, 5163179828812157110ull, 12816386718744560751ull, 3308183566502971326ull}}, {{10884579784469163572ull, 1842288767587808484ull, 6797111361575925131ull, 4135229458128714158ull}}, {{16026234402148003041ull, 17292331544238237966ull, 18083252656267116918ull, 2584518411330446348ull}}, {{10809420965830227993ull, 12392042393443021650ull, 4157321746624344532ull, 3230648014163057936ull}}, {{4288404170433009183ull, 15490052991803777063ull, 5196652183280430665ull, 4038310017703822420ull}}, {{9597781634161712596ull, 2763754092236278808ull, 12471279651405044974ull, 2523943761064889012ull}}, {{11997227042702140744ull, 12678064652150124318ull, 15589099564256306217ull, 3154929701331111265ull}}, {{5773161766522900122ull, 2012522759905491686ull, 5651316400038219060ull, 3943662126663889082ull}}, {{17443284159358976289ull, 10481198761795708111ull, 8143758768451274816ull, 2464788829164930676ull}}, {{17192419180771332457ull, 13101498452244635139ull, 10179698460564093520ull, 3080986036456163345ull}}, {{16878837957536777667ull, 16376873065305793924ull, 17336309094132504804ull, 3851232545570204181ull}}, {{1325901686605710234ull, 1012173628961345395ull, 13141036193046509455ull, 2407020340981377613ull}}, {{15492435163539301504ull, 15100275091483845455ull, 2591237186025973106ull, 3008775426226722017ull}}, {{14753857935996738976ull, 9651971827500031011ull, 7850732500959854287ull, 3760969282783402521ull}}, {{6915318200784267908ull, 12950011419828601238ull, 16435922859168378689ull, 2350605801739626575ull}}, {{17867519787835110693ull, 2352456219503587835ull, 15933217555533085458ull, 2938257252174533219ull}}, {{17722713716366500462ull, 12163942311234260602ull, 15304835925988968918ull, 3672821565218166524ull}}, {{12930020108603349770ull, 5981555852188049945ull, 684300833776659532ull, 4591026956522708156ull}}, {{1163733540236011750ull, 12961844444472307024ull, 9651060057965188015ull, 2869391847826692597ull}}, {{1454666925295014688ull, 11590619537162995876ull, 16675511090883872923ull, 3586739809783365746ull}}, {{1818333656618768360ull, 9876588403026356941ull, 11621016826750065346ull, 4483424762229207183ull}}, {{3442301544600424177ull, 10784553770318860992ull, 14180664544359872697ull, 2802140476393254489ull}}, {{4302876930750530221ull, 18092378231325964144ull, 3890772625167677159ull, 3502675595491568112ull}}, {{5378596163438162776ull, 18003786770730067276ull, 4863465781459596449ull, 4378344494364460140ull}}, {{12584994639003627543ull, 4334837704065210191ull, 12263038150267023589ull, 2736465308977787587ull}}, {{11119557280327146525ull, 10030233148508900643ull, 10717111669406391582ull, 3420581636222234484ull}}, {{9287760581981545252ull, 3314419398781349996ull, 13396389586757989478ull, 4275727045277793105ull}}, {{15028222400593241591ull, 15906570179520507459ull, 1455214464082661567ull, 2672329403298620691ull}}, {{14173591982314164084ull, 15271526705973246420ull, 15654076135385490671ull, 3340411754123275863ull}}, {{17716989977892705105ull, 14477722364039170121ull, 14955909150804475435ull, 4175514692654094829ull}}, {{4155589708541858835ull, 6742733468310787374ull, 11653286228466491099ull, 2609696682908809268ull}}, {{14417859172532099352ull, 3816730816961096313ull, 14566607785583113874ull, 3262120853636011585ull}}, {{4187265910382960477ull, 13994285558056146200ull, 4373201676696728630ull, 4077651067045014482ull}}, {{2617041193989350299ull, 4134742455357703471ull, 7344937066362843298ull, 2548531916903134051ull}}, {{17106359547768851585ull, 14391800106051905146ull, 4569485314526166218ull, 3185664896128917564ull}}, {{12159577397856288673ull, 8766378095710105625ull, 5711856643157707773ull, 3982081120161146955ull}}, {{682206846019098565ull, 7784829319032509968ull, 1264067392759873406ull, 2488800700100716847ull}}, {{852758557523873206ull, 507664611935861652ull, 15415142296232005470ull, 3111000875125896058ull}}, {{1065948196904841508ull, 9857952801774602873ull, 10045555833435231029ull, 3888751093907370073ull}}, {{12195432669133995702ull, 8467063510322820747ull, 17807687441965489153ull, 2430469433692106295ull}}, {{10632604817990106724ull, 15195515406330913838ull, 17647923284029473537ull, 3038086792115132869ull}}, {{4067383985632857597ull, 5159336202631478586ull, 8224846049754678210ull, 3797608490143916087ull}}, {{7153801009447923902ull, 7836271145072062020ull, 12058057808737755737ull, 2373505306339947554ull}}, {{8942251261809904878ull, 14407024949767465429ull, 5849200224067418863ull, 2966881632924934443ull}}, {{15789500095689769001ull, 13397095168781943882ull, 2699814261656885675ull, 3708602041156168054ull}}, {{14480123578233493530ull, 6067341471275020974ull, 15522441968817717259ull, 2317876275722605033ull}}, {{8876782435937091104ull, 2972490820666388314ull, 5567994405739982862ull, 2897345344653256292ull}}, {{1872606008066588072ull, 12938985562687761201ull, 6959993007174978577ull, 3621681680816570365ull}}, {{6952443528510622994ull, 2338673898077537789ull, 13311677277396111126ull, 4527102101020712956ull}}, {{6651120214532833323ull, 15296729241580624830ull, 17543170335227345261ull, 2829438813137945597ull}}, {{17537272305020817462ull, 5285853496693617325ull, 8093904863752017865ull, 3536798516422431997ull}}, {{8086532325993858115ull, 11219002889294409561ull, 14729067098117410235ull, 4420998145528039996ull}}, {{16583297749814631082ull, 4706033796595312023ull, 18429038973178157205ull, 2763123840955024997ull}}, {{16117436168840900949ull, 10494228264171527933ull, 9201240661190532794ull, 3453904801193781247ull}}, {{6311737155768962474ull, 3894413293359634109ull, 6889864808060778089ull, 4317381001492226559ull}}, {{6250678731569295498ull, 13963223354418241078ull, 11223694532679068161ull, 2698363125932641599ull}}, {{17036720451316395181ull, 3618971137740637635ull, 9417932147421447298ull, 3372953907415801999ull}}, {{16684214545718106072ull, 13747085959030572852ull, 7160729165849421218ull, 4216192384269752499ull}}, {{1204262054219040487ull, 13203614742821495937ull, 2169612719442194309ull, 2635120240168595312ull}}, {{6117013586201188513ull, 2669460373244706209ull, 2712015899302742887ull, 3293900300210744140ull}}, {{12257953001178873545ull, 17171883521838046473ull, 3390019874128428608ull, 4117375375263430175ull}}, {{743691598095714110ull, 10732427201148779046ull, 9036291448971349736ull, 2573359609539643859ull}}, {{10152986534474418445ull, 13415534001435973807ull, 6683678292786799266ull, 3216699511924554824ull}}, {{8079547149665635152ull, 7546045464940191451ull, 8354597865983499083ull, 4020874389905693530ull}}, {{2743873959327328018ull, 2410435406373925705ull, 9833309684667074831ull, 2513046493691058456ull}}, {{8041528467586547927ull, 16848102313249570843ull, 12291637105833843538ull, 3141308117113823070ull}}, {{5440224566055797004ull, 11836755854707187746ull, 6141174345437528615ull, 3926635146392278838ull}}, {{8011826372212261032ull, 14315501436833074197ull, 17673292021180619096ull, 2454146966495174273ull}}, {{14626468983692714194ull, 17894376796041342746ull, 8256556971193610158ull, 3067683708118967842ull}}, {{9059714192761116934ull, 13144598958196902625ull, 1097324177137236890ull, 3834604635148709803ull}}, {{17191536416544167844ull, 12827060367300452044ull, 16826728675206630720ull, 2396627896967943626ull}}, {{3042676446970658189ull, 16033825459125565056ull, 11810038807153512592ull, 2995784871209929533ull}}, {{3803345558713322736ull, 1595537750197404704ull, 927490453659727029ull, 3744731089012411917ull}}, {{2377090974195826710ull, 3303054103087071892ull, 2885524542751023345ull, 2340456930632757448ull}}, {{2971363717744783387ull, 8740503647286227769ull, 3606905678438779181ull, 2925571163290946810ull}}, {{8325890665608367138ull, 15537315577535172615ull, 13732004134903249784ull, 3656963954113683512ull}}, {{5795677313583071019ull, 974900398209414153ull, 17165005168629062231ull, 4571204942642104390ull}}, {{15151513367057889147ull, 7526841776521965701ull, 6116442211965775990ull, 2857003089151315244ull}}, {{5104333653540197721ull, 185180183797681319ull, 7645552764957219988ull, 3571253861439144055ull}}, {{1768731048497859248ull, 231475229747101649ull, 4945254937769137081ull, 4464067326798930069ull}}, {{12634671951379631790ull, 11673887064660408290ull, 5396627345319404627ull, 2790042079249331293ull}}, {{6569967902369763929ull, 9980672812398122459ull, 11357470200076643688ull, 3487552599061664116ull}}, {{3600773859534817007ull, 12475841015497653074ull, 14196837750095804610ull, 4359440748827080145ull}}, {{6862169680636648534ull, 12409086653113421075ull, 1955494566168796025ull, 2724650468016925091ull}}, {{3966026082368422763ull, 1676300261109612632ull, 16279426262993158744ull, 3405813085021156363ull}}, {{4957532602960528454ull, 2095375326387015790ull, 15737596810314060526ull, 4257266356276445454ull}}, {{16933515932132493996ull, 15144667634274048580ull, 5224311988018899924ull, 2660791472672778409ull}}, {{2720150841456065879ull, 484090469133009110ull, 11142076003451012810ull, 3325989340840973011ull}}, {{12623560588674858156ull, 9828485123271037195ull, 9315908985886378108ull, 4157486676051216264ull}}, {{5583882358708092396ull, 15366175238899174055ull, 5822443116178986317ull, 2598429172532010165ull}}, {{2368166929957727591ull, 5372660993341803857ull, 11889739913651120801ull, 3248036465665012706ull}}, {{7571894680874547392ull, 11327512260104642725ull, 5638802855209125193ull, 4060045582081265883ull}}, {{7038277184760286072ull, 162166134924319847ull, 1218408775292009294ull, 2537528488800791177ull}}, {{4186160462522969686ull, 9426079705510175617ull, 6134696987542399521ull, 3171910611000988971ull}}, {{9844386596581100012ull, 16394285650315107425ull, 3056685216000611497ull, 3964888263751236214ull}}, {{17681956668931657268ull, 3328899503805860284ull, 15745486315282545898ull, 2478055164844522633ull}}, {{3655701762455019968ull, 13384496416612101164ull, 5846799838821018660ull, 3097568956055653292ull}}, {{4569627203068774960ull, 16730620520765126455ull, 7308499798526273325ull, 3871961195069566615ull}}, {{9773546029559066206ull, 12762480834691897986ull, 11485341401720002684ull, 2419975746918479134ull}}, {{2993560500094056950ull, 15953101043364872483ull, 5133304715295227547ull, 3024969683648098918ull}}, {{17577008680399734899ull, 15329690285778702699ull, 15640002930973810242ull, 3781212104560123647ull}}, {{8679787416036140360ull, 14192742447039077091ull, 16692530859499713257ull, 2363257565350077279ull}}, {{6238048251617787546ull, 3905870003516682652ull, 16253977555947253668ull, 2954071956687596599ull}}, {{7797560314522234432ull, 4882337504395853315ull, 15705785926506679181ull, 3692589945859495749ull}}, {{2567632187362702568ull, 5357303949461102274ull, 12121959213280368440ull, 2307868716162184843ull}}, {{12432912271058154018ull, 6696629936826377842ull, 10540762998173072646ull, 2884835895202731054ull}}, {{6317768301967916715ull, 17594159457887748111ull, 3952581710861564999ull, 3606044869003413818ull}}, {{3285524359032507990ull, 17381013303932297235ull, 14164099175431732057ull, 4507556086254267272ull}}, {{18194353788891175158ull, 3945604287316603915ull, 8852561984644832536ull, 2817222553908917045ull}}, {{18131256217686581043ull, 4932005359145754894ull, 15677388499233428574ull, 3521528192386146306ull}}, {{13440698235253450496ull, 15388378735786969426ull, 10373363587187009909ull, 4401910240482682883ull}}, {{13012122415460794464ull, 11923579719080549843ull, 4177509232778187241ull, 2751193900301676802ull}}, {{11653467000898605176ull, 1069416593568523592ull, 14445258577827509860ull, 3438992375377096002ull}}, {{14566833751123256470ull, 1336770741960654490ull, 8833201185429611517ull, 4298740469221370003ull}}, {{13715957112879423198ull, 3141324722939103008ull, 3214907731679813246ull, 2686712793263356252ull}}, {{17144946391099278997ull, 13150027940528654568ull, 4018634664599766557ull, 3358390991579195315ull}}, {{2984438915164547130ull, 2602476870378654499ull, 411607312322320293ull, 4197988739473994144ull}}, {{18006175386473699620ull, 3932391053200353013ull, 257254570201450183ull, 2623742962171246340ull}}, {{8672661177809960813ull, 303802798073053363ull, 321568212751812729ull, 3279678702714057925ull}}, {{6229140453835063113ull, 4991439516018704608ull, 5013646284367153815ull, 4099598378392572406ull}}, {{3893212783646914446ull, 10037178725152772236ull, 16968586983011634846ull, 2562248986495357753ull}}, {{4866515979558643057ull, 3323101369586189487ull, 7375675673482379846ull, 3202811233119197192ull}}, {{1471458956020915917ull, 13377248748837512667ull, 9219594591852974807ull, 4003514041398996490ull}}, {{17060562912008930112ull, 15278309495664527272ull, 10373932638335497158ull, 2502196275874372806ull}}, {{2878959566301611024ull, 9874514832725883283ull, 3744043761064595640ull, 3127745344842966008ull}}, {{17433757513159177492ull, 12343143540907354103ull, 4680054701330744550ull, 3909681681053707510ull}}, {{17813627473365567789ull, 3102778694639708410ull, 16760092243613879056ull, 2443551050658567193ull}}, {{13043662304852183928ull, 3878473368299635513ull, 7115057249235185108ull, 3054438813323208992ull}}, {{2469519825783066198ull, 4848091710374544392ull, 8893821561543981385ull, 3818048516654011240ull}}, {{1543449891114416374ull, 14559272365052560005ull, 5558638475964988365ull, 2386280322908757025ull}}, {{6540998382320408371ull, 4364032401033536294ull, 11559984113383623361ull, 2982850403635946281ull}}, {{17399620014755286272ull, 10066726519719308271ull, 614922086447365489ull, 3728563004544932852ull}}, {{17792291536863135776ull, 17820919120893037429ull, 9607698340884379238ull, 2330351877840583032ull}}, {{8405306365796756008ull, 13052776864261520979ull, 12009622926105474048ull, 2912939847300728790ull}}, {{5894946938818557106ull, 16315971080326901224ull, 5788656620777066752ull, 3641174809125910988ull}}, {{7368683673523196382ull, 1948219776699074914ull, 7235820775971333441ull, 4551468511407388735ull}}, {{9217113314379385643ull, 12746852406505391581ull, 11439917012623165256ull, 2844667819629617959ull}}, {{16133077661401619958ull, 15933565508131739476ull, 9688210247351568666ull, 3555834774537022449ull}}, {{1719603003042473331ull, 10693584848309898538ull, 16721948827616848737ull, 4444793468171278061ull}}, {{5686437895328933736ull, 18212705576262156346ull, 12757061026474224412ull, 2777995917607048788ull}}, {{16331419406015942978ull, 4319137896618143816ull, 15946326283092780516ull, 3472494897008810985ull}}, {{1967530183810377106ull, 5398922370772679771ull, 6097849798583811933ull, 4340618621261013732ull}}, {{17370607429377343356ull, 5680169490946618808ull, 13034528160969658266ull, 2712886638288133582ull}}, {{3266515213012127578ull, 16323583900538049319ull, 7069788164357297024ull, 3391108297860166978ull}}, {{17918202071547323185ull, 1957735801963010032ull, 18060607242301397089ull, 4238885372325208722ull}}, {{11198876294717076991ull, 12752799922295351030ull, 15899565544865761084ull, 2649303357703255451ull}}, {{4775223331541570430ull, 15940999902869188788ull, 15262770912654813451ull, 3311629197129069314ull}}, {{5969029164426963038ull, 15314563860159098081ull, 9855091603963741006ull, 4139536496411336643ull}}, {{15259858273835321659ull, 4959916394172048396ull, 3853589243263644177ull, 2587210310257085402ull}}, {{628078768584600457ull, 10811581511142448400ull, 14040358590934331029ull, 3234012887821356752ull}}, {{785098460730750572ull, 18126162907355448404ull, 17550448238667913786ull, 4042516109776695940ull}}, {{9714058574811494915ull, 15940537835524543156ull, 1745658112312670308ull, 2526572568610434963ull}}, {{12142573218514368644ull, 1478928220696127329ull, 16017130695673001598ull, 3158215710763043703ull}}, {{1343158467860797093ull, 11072032312724934970ull, 15409727351163864093ull, 3947769638453804629ull}}, {{5451160060840386087ull, 9225863204666778308ull, 11936922603691109010ull, 2467356024033627893ull}}, {{6813950076050482609ull, 2308956968978697077ull, 1086095199331722551ull, 3084195030042034867ull}}, {{13129123613490491165ull, 16721254266505535058ull, 15192677054446816900ull, 3855243787552543583ull}}, {{12817388276858944882ull, 1227411879711183603ull, 16412952186670342419ull, 2409527367220339739ull}}, {{11410049327646293199ull, 15369322904921143216ull, 15904504214910540119ull, 3011909209025424674ull}}, {{14262561659557866498ull, 14599967612724041116ull, 10657258231783399341ull, 3764886511281780843ull}}, {{18137473074078442370ull, 11430822767166219649ull, 4354943385650930636ull, 2353054069551113027ull}}, {{8836783287315889250ull, 14288528458957774562ull, 831993213636275391ull, 2941317586938891284ull}}, {{1822607072290085754ull, 13248974555269830299ull, 1039991517045344239ull, 3676646983673614105ull}}, {{16113316895644770905ull, 11949532175659899969ull, 5911675414734068203ull, 4595808729592017631ull}}, {{3153294032136899960ull, 5162614600573743529ull, 10612326161849874483ull, 2872380455995011019ull}}, {{8553303558598512854ull, 1841582232289791507ull, 8653721683884955200ull, 3590475569993763774ull}}, {{6079943429820753163ull, 2301977790362239384ull, 1593780068001418192ull, 4488094462492204718ull}}, {{3799964643637970727ull, 1438736118976399615ull, 14831170597783050082ull, 2805059039057627948ull}}, {{138269786120075505ull, 11021792185575275327ull, 92219173519260986ull, 3506323798822034936ull}}, {{14007895287932258093ull, 4553868195114318350ull, 115273966899076233ull, 4382904748527543670ull}}, {{4143248536530273404ull, 14375382668014918729ull, 13907104284594086357ull, 2739315467829714793ull}}, {{9790746689090229659ull, 4134170279736484699ull, 3548822300460444235ull, 3424144334787143492ull}}, {{7626747342935399170ull, 556026831243217970ull, 4436027875575555294ull, 4280180418483929365ull}}, {{9378403107762012385ull, 14182574824809174943ull, 5078360431448416010ull, 2675112761552455853ull}}, {{7111317866275127577ull, 8504846494156692871ull, 10959636557737907917ull, 3343890951940569816ull}}, {{4277461314416521568ull, 15242744136123253993ull, 13699545697172384896ull, 4179863689925712270ull}}, {{14202628367578795740ull, 9526715085077033745ull, 3950530042305352656ull, 2612414806203570169ull}}, {{3918227404191330963ull, 11908393856346292182ull, 9549848571309078724ull, 3265518507754462711ull}}, {{14121156292093939511ull, 14885492320432865227ull, 7325624695708960501ull, 4081898134693078389ull}}, {{6519879673345018243ull, 11609275709484234719ull, 6884358444031794265ull, 2551186334183173993ull}}, {{3538163573253884899ull, 676536581573129687ull, 13217134073467130736ull, 3188982917728967491ull}}, {{18257762521849519836ull, 845670726966412108ull, 11909731573406525516ull, 3986228647161209364ull}}, {{2187729539301174090ull, 9751916241208783376ull, 16666954270233854255ull, 2491392904475755852ull}}, {{2734661924126467612ull, 7578209283083591316ull, 2386948764082766203ull, 3114241130594694816ull}}, {{3418327405158084515ull, 4861075585427101241ull, 2983685955103457754ull, 3892801413243368520ull}}, {{13665669674292272582ull, 7649858259319326179ull, 1864803721939661096ull, 2433000883277105325ull}}, {{12470401074437952823ull, 9562322824149157724ull, 6942690670851964274ull, 3041251104096381656ull}}, {{15588001343047441029ull, 2729531493331671347ull, 8678363338564955343ull, 3801563880120477070ull}}, {{7436657830190956691ull, 8623486210973376448ull, 812291068175709185ull, 2375977425075298169ull}}, {{9295822287738695864ull, 15391043782144108464ull, 5627049853647024385ull, 2969971781344122711ull}}, {{11619777859673369830ull, 5403746672397971868ull, 2422126298631392578ull, 3712464726680153389ull}}, {{16485733199150631952ull, 7989027688676120321ull, 3819671945858314313ull, 2320290454175095868ull}}, {{6772108443656126228ull, 14597970629272538306ull, 4774589932322892891ull, 2900363067718869835ull}}, {{17688507591424933593ull, 13635777268163284978ull, 1356551396976228210ull, 3625453834648587294ull}}, {{12887262452426391183ull, 7821349548349330415ull, 10919061283075061071ull, 4531817293310734117ull}}, {{14972068060407576345ull, 11805872495359413365ull, 9130256311135607121ull, 2832385808319208823ull}}, {{4880027020227306720ull, 922282563917102995ull, 6801134370492120998ull, 3540482260399011029ull}}, {{1488347756856745495ull, 10376225241751154552ull, 13113103981542539151ull, 4425602825498763786ull}}, {{930217348035465935ull, 13402669803735553451ull, 12807376006891474873ull, 2766001765936727366ull}}, {{14997829740326496130ull, 2918279199387278101ull, 6785847971759567784ull, 3457502207420909208ull}}, {{4912229120125956451ull, 3647848999234097627ull, 8482309964699459730ull, 4321877759276136510ull}}, {{764300190865028830ull, 6891591642948698921ull, 689757709509774427ull, 2701173599547585319ull}}, {{5567061257008673941ull, 4002803535258485747ull, 14697255192169381746ull, 3376466999434481648ull}}, {{2347140552833454522ull, 14226876455927882992ull, 18371568990211727182ull, 4220583749293102060ull}}, {{1466962845520909077ull, 4280111766527538966ull, 2258858582027553681ull, 2637864843308188788ull}}, {{11057075593755912154ull, 9961825726586811611ull, 2823573227534442101ull, 3297331054135235985ull}}, {{9209658473767502288ull, 17063968176660902418ull, 8141152552845440530ull, 4121663817669044981ull}}, {{10367722564532076834ull, 15276666128840451915ull, 7394063354742094283ull, 2576039886043153113ull}}, {{8347967187237708139ull, 14484146642623176990ull, 13854265211855005758ull, 3220049857553941391ull}}, {{1211586947192359365ull, 8881811266424195430ull, 12706145496391369294ull, 4025062321942426739ull}}, {{14592299897277388315ull, 939446023087734239ull, 5635497926030911857ull, 2515663951214016712ull}}, {{13628688853169347490ull, 5785993547287055703ull, 7044372407538639821ull, 3144579939017520890ull}}, {{12424175048034296459ull, 11844177952536207533ull, 18028837546278075584ull, 3930724923771901112ull}}, {{10070952414235129239ull, 7402611220335129708ull, 11268023466423797240ull, 2456703077357438195ull}}, {{12588690517793911548ull, 9253264025418912135ull, 9473343314602358646ull, 3070878846696797744ull}}, {{11124177128815001531ull, 2343207994918864361ull, 11841679143252948308ull, 3838598558370997180ull}}, {{35081677868294101ull, 10687877033679066034ull, 16624421501387868500ull, 2399124098981873237ull}}, {{9267224134190143434ull, 13359846292098832542ull, 6945468821452671913ull, 2998905123727341547ull}}, {{2360658130882903485ull, 2864749809841376966ull, 4070150008388451988ull, 3748631404659176934ull}}, {{15310469387083978390ull, 11013840668005636411ull, 16378901810524946204ull, 2342894627911985583ull}}, {{14526400715427585084ull, 13767300835007045514ull, 15861941244728794851ull, 2928618284889981979ull}}, {{8934628857429705547ull, 12597440025331418989ull, 15215740537483605660ull, 3660772856112477474ull}}, {{15779972090214519837ull, 15746800031664273736ull, 9796303634999731267ull, 4575966070140596843ull}}, {{9862482556384074898ull, 7535907010576477133ull, 3816846762661138090ull, 2859978793837873027ull}}, {{16939789213907481527ull, 196511726365820608ull, 159372434899034709ull, 3574973492297341284ull}}, {{2727992443674800292ull, 4857325676384663665ull, 199215543623793386ull, 4468716865371676605ull}}, {{13234210323365219943ull, 7647514566167802694ull, 2430352723978564818ull, 2792948040857297878ull}}, {{7319390867351749121ull, 336021170854977560ull, 12261312941827981831ull, 3491185051071622347ull}}, {{9149238584189686401ull, 14255084518850885662ull, 10714955158857589384ull, 4363981313839527934ull}}, {{1106588096691166097ull, 8909427824281803539ull, 2085160955858605461ull, 2727488321149704959ull}}, {{15218293176146121333ull, 15748470798779642327ull, 16441509250105420538ull, 3409360401437131198ull}}, {{14411180451755263762ull, 10462216461619777101ull, 11328514525776999865ull, 4261700501796413998ull}}, {{11312830791560733803ull, 18068100334580830448ull, 2468635560183237011ull, 2663562813622758749ull}}, {{14141038489450917254ull, 17973439399798650156ull, 7697480468656434168ull, 3329453517028448436ull}}, {{17676298111813646567ull, 4020055176038761079ull, 9621850585820542711ull, 4161816896285560545ull}}, {{17965215347524610961ull, 9430063512665307530ull, 17542871662206308954ull, 2601135560178475340ull}}, {{13233147147550987893ull, 2564207353976858605ull, 3481845504048334577ull, 3251419450223094176ull}}, {{2706375879156571154ull, 7816945210898461161ull, 4352306880060418221ull, 4064274312778867720ull}}, {{13220699970541326731ull, 7191433766025232177ull, 2720191800037761388ull, 2540171445486792325ull}}, {{2690816907894494702ull, 8989292207531540222ull, 8011925768474589639ull, 3175214306858490406ull}}, {{12586893171722894185ull, 6624929240987037373ull, 791535173738461241ull, 3969017883573113008ull}}, {{10172651241540502818ull, 15669795821685368118ull, 494709483586538275ull, 2480636177233195630ull}}, {{3492442015070852714ull, 14975558758679322244ull, 9841758891337948652ull, 3100795221541494537ull}}, {{4365552518838565893ull, 272704374639601189ull, 16913884632599823720ull, 3875994026926868171ull}}, {{5034313333487797635ull, 170440234149750743ull, 8265334886161195873ull, 2422496266829292607ull}}, {{1681205648432359140ull, 4824736311114576333ull, 5719982589274106937ull, 3028120333536615759ull}}, {{6713193078967836829ull, 10642606407320608320ull, 2538292218165245767ull, 3785150416920769699ull}}, {{4195745674354898018ull, 13569158032216462056ull, 17727333700849136268ull, 2365719010575481061ull}}, {{5244682092943622523ull, 16961447540270577570ull, 8324109070779256623ull, 2957148763219351327ull}}, {{15779224653034303961ull, 16590123406910834058ull, 5793450320046682875ull, 3696435954024189159ull}}, {{14473701426573827880ull, 8062984120105577334ull, 10538435477670258653ull, 2310272471265118224ull}}, {{8868754746362509042ull, 14690416168559359572ull, 13173044347087823316ull, 2887840589081397780ull}}, {{11085943432953136302ull, 18363020210699199465ull, 16466305433859779145ull, 3609800736351747225ull}}, {{22371235909256665ull, 9118717208091835620ull, 6747823737042560220ull, 4512250920439684032ull}}, {{9237354059298061224ull, 14922570291912173070ull, 4217389835651600137ull, 2820156825274802520ull}}, {{2323320537267800722ull, 4818154809608052626ull, 5271737294564500172ull, 3525196031593503150ull}}, {{12127522708439526710ull, 6022693512010065782ull, 15813043655060401023ull, 4406495039491878937ull}}, {{2968015674347316290ull, 10681712472647372970ull, 2965623256771668783ull, 2754059399682424336ull}}, {{12933391629788921171ull, 8740454572381828308ull, 3707029070964585979ull, 3442574249603030420ull}}, {{16166739537236151463ull, 6313882197049897481ull, 4633786338705732474ull, 4303217812003788025ull}}, {{3186683183131512809ull, 8557862391583573830ull, 14425331507759552556ull, 2689511132502367515ull}}, {{13206726015769166819ull, 10697327989479467287ull, 13419978366272052791ull, 3361888915627959394ull}}, {{11896721501284070619ull, 8759973968421946205ull, 7551600920985290181ull, 4202361144534949243ull}}, {{9741293947516238089ull, 7780826739477410330ull, 2413907566402112411ull, 2626475715334343277ull}}, {{2953245397540521803ull, 5114347405919375009ull, 7629070476430028418ull, 3283094644167929096ull}}, {{8303242765353040158ull, 15616306294253994569ull, 9536338095537535522ull, 4103868305209911370ull}}, {{16718741774414119859ull, 14371877452336134509ull, 10571897328138347605ull, 2564917690756194606ull}}, {{7063369162735486112ull, 4129788760138004425ull, 3991499623318158699ull, 3206147113445243258ull}}, {{13440897471846745543ull, 550549931745117627ull, 14212746566002474182ull, 4007683891806554072ull}}, {{6094717910690522013ull, 14179151762622862229ull, 8882966603751546363ull, 2504802432379096295ull}}, {{12230083406790540420ull, 13112253684851189882ull, 6492022236262045050ull, 3131003040473870369ull}}, {{6064232221633399717ull, 7166945069209211545ull, 12726713813754944217ull, 3913753800592337961ull}}, {{15319360184589344583ull, 16008555714324226975ull, 1036667105955758279ull, 2446096125370211226ull}}, {{14537514212309292825ull, 15399008624477895815ull, 10519205919299473657ull, 3057620156712764032ull}}, {{13560206746959228127ull, 5413702725315206057ull, 13149007399124342072ull, 3822025195890955040ull}}, {{1557600189208435723ull, 3383564203322003786ull, 8218129624452713795ull, 2388765747431846900ull}}, {{11170372273365320462ull, 18064513309434668444ull, 10272662030565892243ull, 2985957184289808625ull}}, {{13962965341706650578ull, 17968955618365947651ull, 17452513556634753208ull, 3732446480362260781ull}}, {{6421010329352962659ull, 11230597261478717282ull, 13213663982110414707ull, 2332779050226412988ull}}, {{17249634948545979132ull, 9426560558421008698ull, 16517079977638018384ull, 2915973812783016235ull}}, {{12338671648827698107ull, 11783200698026260873ull, 16034663953620135076ull, 3644967265978770294ull}}, {{1588281505752458921ull, 14729000872532826092ull, 10819957905170393037ull, 4556209082473462868ull}}, {{10216047977950062634ull, 11511468554546710259ull, 15985845727586271456ull, 2847630676545914292ull}}, {{8158373954010190388ull, 14389335693183387824ull, 1535563085773287704ull, 3559538345682392866ull}}, {{10197967442512737985ull, 17986669616479234780ull, 11142825894071385438ull, 4449422932102991082ull}}, {{15597101688425237049ull, 6629982491872133833ull, 11575952202222003803ull, 2780889332564369426ull}}, {{5661319055249382599ull, 3675792096412779388ull, 5246568215922728946ull, 3476111665705461783ull}}, {{7076648819061728249ull, 13818112157370750043ull, 1946524251476023278ull, 4345139582131827229ull}}, {{2117062502699886204ull, 4024634079929330873ull, 3522420666386208501ull, 2715712238832392018ull}}, {{7258014146802245659ull, 9642478618339051495ull, 13626397869837536434ull, 3394640298540490022ull}}, {{4460831665075419169ull, 2829726236069038561ull, 7809625300442144735ull, 4243300373175612528ull}}, {{14317234836740606741ull, 8686107925184230956ull, 4881015812776340459ull, 2652062733234757830ull}}, {{17896543545925758426ull, 6245948888052900791ull, 15324641802825201382ull, 3315078416543447287ull}}, {{17758993413979810128ull, 17030808146920901797ull, 14544116235104113823ull, 4143848020679309109ull}}, {{13405213892951075282ull, 17561784119466645479ull, 11395915656153765091ull, 2589905012924568193ull}}, {{12144831347761456199ull, 17340544130905918945ull, 409836514910042652ull, 3237381266155710242ull}}, {{1345981129419656536ull, 3228936089922847066ull, 9735667680492329124ull, 4046726582694637802ull}}, {{5452924224314673239ull, 11241457093056555224ull, 10696478318735093606ull, 2529204114184148626ull}}, {{6816155280393341549ull, 4828449329465918222ull, 4147225861564091200ull, 3161505142730185783ull}}, {{17743566137346452744ull, 6035561661832397777ull, 572346308527726096ull, 3951881428412732229ull}}, {{4172199808200451109ull, 3772226038645248611ull, 2663559452043522762ull, 2469925892757957643ull}}, {{603563741823175983ull, 13938654585161336572ull, 17164507370336567164ull, 3087407365947447053ull}}, {{754454677278969978ull, 17423318231451670715ull, 7620576157638545243ull, 3859259207434308817ull}}, {{16612435237795213901ull, 8583730885443600244ull, 16292075144592560537ull, 2412037004646443010ull}}, {{2318799973534465760ull, 15341349625231888210ull, 11141721893885924863ull, 3015046255808053763ull}}, {{12121872003772858007ull, 14565001013112472358ull, 9315466348930018175ull, 3768807819760067204ull}}, {{2964483983930648351ull, 16020654660836377080ull, 15045538504936037167ull, 2355504887350042002ull}}, {{3705604979913310438ull, 15414132307618083446ull, 9583551094315270651ull, 2944381109187552503ull}}, {{13855378261746413856ull, 14655979366095216403ull, 7367752849466700410ull, 3680476386484440629ull}}, {{12707536808755629416ull, 9096602170764244696ull, 13821377080260763417ull, 4600595483105550786ull}}, {{7942210505472268385ull, 17214591402796122695ull, 13250046693590365039ull, 2875372176940969241ull}}, {{5316077113412947577ull, 16906553235067765465ull, 2727500311705792587ull, 3594215221176211552ull}}, {{11256782410193572375ull, 16521505525407318927ull, 3409375389632240734ull, 4492769026470264440ull}}, {{13953018034012064591ull, 5714254934952186425ull, 2130859618520150459ull, 2807980641543915275ull}}, {{3606214487232917026ull, 2531132650262845128ull, 16498632578432351786ull, 3509975801929894093ull}}, {{4507768109041146283ull, 12387287849683332218ull, 6788232667758276020ull, 4387469752412367617ull}}, {{7429041086578104331ull, 16965426942906858444ull, 15771860463417392272ull, 2742168595257729760ull}}, {{9286301358222630413ull, 2760039604924021439ull, 1268081505562188725ull, 3427710744072162201ull}}, {{6996190679350900113ull, 8061735524582414703ull, 6196787900380123810ull, 4284638430090202751ull}}, {{11290148202235394427ull, 9650270721291397093ull, 10790521465378659237ull, 2677899018806376719ull}}, {{277627197512079321ull, 16674524420041634271ull, 8876465813295936142ull, 3347373773507970899ull}}, {{14182092052172262863ull, 11619783488197267030ull, 6483896248192532274ull, 4184217216884963624ull}}, {{4252121514180276386ull, 11874050698550679798ull, 4052435155120332671ull, 2615135760553102265ull}}, {{14538523929580121290ull, 10230877354760961843ull, 9677229962327803743ull, 3268919700691377831ull}}, {{13561468893547763708ull, 8176910675023814400ull, 7484851434482366775ull, 4086149625864222289ull}}, {{8475918058467352318ull, 12028098199530965856ull, 16207247192619948994ull, 2553843516165138930ull}}, {{10594897573084190397ull, 5811750712558931512ull, 11035686953920160435ull, 3192304395206423663ull}}, {{13243621966355237997ull, 2653002372271276486ull, 9182922673972812640ull, 3990380494008029579ull}}, {{3665577710544635844ull, 1658126482669547804ull, 3433483662019313948ull, 2493987808755018487ull}}, {{4581972138180794805ull, 2072658103336934755ull, 18126912632806306147ull, 3117484760943773108ull}}, {{1115779154298605602ull, 16425880684453332156ull, 4211896717298331067ull, 3896855951179716386ull}}, {{9920734008291404309ull, 7960332418569638645ull, 7244121466738844821ull, 2435534969487322741ull}}, {{17012603528791643291ull, 14562101541639436210ull, 13666837851850943930ull, 3044418711859153426ull}}, {{12042382374134778305ull, 8979254890194519455ull, 7860175277958904105ull, 3805523389823941783ull}}, {{14444018011475318297ull, 17141249352440044419ull, 11830138576365396921ull, 2378452118639963614ull}}, {{13443336495916759967ull, 7591503635267891812ull, 5564301183601970344ull, 2973065148299954518ull}}, {{16804170619895949959ull, 9489379544084864765ull, 16178748516357238738ull, 3716331435374943147ull}}, {{12808449646648662676ull, 10542548233480428382ull, 7805874813509580259ull, 2322707147109339467ull}}, {{6787190021456052537ull, 8566499273423147574ull, 5145657498459587420ull, 2903383933886674334ull}}, {{17707359563674841480ull, 10708124091778934467ull, 15655443909929260083ull, 3629229917358342917ull}}, {{17522513436166163945ull, 8773469096296280180ull, 5734246832129411392ull, 4536537396697928647ull}}, {{1728198860749076658ull, 5483418185185175113ull, 10501433297721963976ull, 2835335872936205404ull}}, {{6771934594363733726ull, 6854272731481468891ull, 13126791622152454970ull, 3544169841170256755ull}}, {{3853232224527279254ull, 17791212951206611922ull, 11796803509263180808ull, 4430212301462820944ull}}, {{7019956158756937438ull, 11119508094504132451ull, 7373002193289488005ull, 2768882688414263090ull}}, {{4163259180018783893ull, 64327062848001852ull, 18439624778466635815ull, 3461103360517828862ull}}, {{5204073975023479866ull, 13915466883842166027ull, 13826158936228518960ull, 4326379200647286078ull}}, {{946703225175980965ull, 8697166802401353767ull, 4029663316715436446ull, 2703987000404553799ull}}, {{15018437086752139918ull, 1648086466146916400ull, 425393127466907654ull, 3379983750505692249ull}}, {{326302284730623281ull, 11283480119538421309ull, 5143427427761022471ull, 4224979688132115311ull}}, {{2509781937170333503ull, 13969704102352595174ull, 10132171169991720900ull, 2640612305082572069ull}}, {{12360599458317692686ull, 17462130127940743967ull, 17276899980917039029ull, 3300765381353215086ull}}, {{10839063304469727954ull, 7992604604643766247ull, 12372752939291522979ull, 4125956726691518858ull}}, {{13691943592934661827ull, 2689534868688659952ull, 12344656605484589766ull, 2578722954182199286ull}}, {{17114929491168327284ull, 12585290622715600748ull, 6207448720000961399ull, 3223403692727749108ull}}, {{2946917790250857489ull, 11119927259967113032ull, 7759310900001201749ull, 4029254615909686385ull}}, {{1841823618906785931ull, 9255797546693139597ull, 16378784358569220853ull, 2518284134943553990ull}}, {{6913965542060870317ull, 16181432951793812400ull, 11250108411356750258ull, 3147855168679442488ull}}, {{8642456927576087897ull, 11003419152887489692ull, 14062635514195937823ull, 3934818960849303110ull}}, {{14624907616589830744ull, 13794665998195762913ull, 4177461177945073235ull, 2459261850530814444ull}}, {{4446076465455124717ull, 12631646479317315738ull, 5221826472431341544ull, 3074077313163518055ull}}, {{14780967618673681704ull, 15789558099146644672ull, 1915597072111789026ull, 3842596641454397569ull}}, {{9238104761671051065ull, 14480159830394040824ull, 12726463216138337901ull, 2401622900908998480ull}}, {{11547630952088813832ull, 4265141732710387318ull, 15908079020172922377ull, 3002028626136248100ull}}, {{5211166653256241482ull, 9943113184315372052ull, 1438354701506601355ull, 3752535782670310126ull}}, {{12480351195139926734ull, 3908602730983413580ull, 14734029743723789559ull, 2345334864168943828ull}}, {{15600438993924908418ull, 274067395301879071ull, 18417537179654736949ull, 2931668580211179785ull}}, {{14888862723978747618ull, 4954270262554736743ull, 9186863419286257474ull, 3664585725263974732ull}}, {{13999392386546046618ull, 15416209865048196737ull, 11483579274107821842ull, 4580732156579968415ull}}, {{1832091213950197281ull, 14246817184082510865ull, 14094766073958470507ull, 2862957597862480259ull}}, {{6901800035865134505ull, 13196835461675750677ull, 13006771574020700230ull, 3578696997328100324ull}}, {{13238936063258806035ull, 7272672290239912538ull, 16258464467525875288ull, 4473371246660125405ull}}, {{12886021057964141676ull, 4545420181399945336ull, 12467383301417366007ull, 2795857029162578378ull}}, {{16107526322455177095ull, 1070089208322543766ull, 6360857089916931701ull, 3494821286453222973ull}}, {{10911035866214195560ull, 5949297528830567612ull, 12562757380823552530ull, 4368526608066528716ull}}, {{16042769453238648033ull, 8329996973946492661ull, 17075095399869496139ull, 2730329130041580447ull}}, {{6218403761266146329ull, 5800810199005727923ull, 16732183231409482270ull, 3412911412551975559ull}}, {{3161318683155295008ull, 16474384785611935712ull, 16303543020834464933ull, 4266139265689969449ull}}, {{1975824176972059380ull, 12602333500221153772ull, 3272185360380458727ull, 2666337041056230906ull}}, {{2469780221215074225ull, 11141230856849054311ull, 13313603737330349217ull, 3332921301320288632ull}}, {{16922283331801006493ull, 91480515779154176ull, 16642004671662936522ull, 4166151626650360790ull}}, {{10576427082375629058ull, 4668861340789359264ull, 5789566901361947422ull, 2603844766656475494ull}}, {{13220533852969536323ull, 15059448712841474888ull, 16460330663557210085ull, 3254805958320594367ull}}, {{16525667316211920403ull, 4989252835769679898ull, 15963727311019124703ull, 4068507447900742959ull}}, {{14940228091059838156ull, 10035812049997131792ull, 16894858597028034795ull, 2542817154937964349ull}}, {{228541040115246079ull, 7933079044069026837ull, 7283515191002879782ull, 3178521443672455437ull}}, {{4897362318571445503ull, 692976768231507738ull, 13716080007180987632ull, 3973151804590569296ull}}, {{7672537467534541343ull, 433110480144692336ull, 8572550004488117270ull, 2483219877869105810ull}}, {{9590671834418176679ull, 9764760137035641228ull, 1492315468755370779ull, 3104024847336382263ull}}, {{11988339793022720849ull, 7594264152867163631ull, 15700452391226377186ull, 3880031059170477828ull}}, {{14410241398280282387ull, 9358101113969365173ull, 589410707661709933ull, 2425019411981548643ull}}, {{4177743692568189271ull, 16309312410889094371ull, 14571821439859301128ull, 3031274264976935803ull}}, {{610493597282848685ull, 1939896439901816348ull, 13603090781396738507ull, 3789092831221169754ull}}, {{9604930535156556236ull, 17353336339434492881ull, 13113617756800349470ull, 2368183019513231096ull}}, {{16617849187373083199ull, 12468298387438340293ull, 16392022196000436838ull, 2960228774391538870ull}}, {{6937253428934190287ull, 6362000947443149559ull, 11266655708145770240ull, 3700285967989423588ull}}, {{11253312420724950786ull, 3976250592151968474ull, 16265031854445882208ull, 2312678729993389742ull}}, {{4843268489051412674ull, 4970313240189960593ull, 11107917781202576952ull, 2890848412491737178ull}}, {{10665771629741653746ull, 6212891550237450741ull, 4661525189648445382ull, 3613560515614671473ull}}, {{17943900555604455087ull, 16989486474651589234ull, 10438592505487944631ull, 4516950644518339341ull}}, {{15826623865680172333ull, 17535958074298325127ull, 8829963325143659346ull, 2823094152823962088ull}}, {{15171593813672827512ull, 12696575556018130601ull, 11037454156429574183ull, 3528867691029952610ull}}, {{5129434211808870678ull, 11259033426595275348ull, 4573445658682191921ull, 4411084613787440763ull}}, {{12429268419235319982ull, 119366863980965236ull, 552560527462675999ull, 2756927883617150477ull}}, {{15536585524044149978ull, 13984266635258370257ull, 5302386677755732902ull, 3446159854521438096ull}}, {{5585673849773023760ull, 8256961257218187014ull, 6627983347194666128ull, 4307699818151797620ull}}, {{17326104211390303562ull, 5160600785761366883ull, 13365861628851442138ull, 2692312386344873512ull}}, {{17045944245810491549ull, 15674123019056484412ull, 16707327036064302672ull, 3365390482931091890ull}}, {{2860686233553562820ull, 1145909700111053900ull, 11660786758225602533ull, 4206738103663864863ull}}, {{11011300932825752570ull, 3022036571783102639ull, 14205520751532083439ull, 2629211314789915539ull}}, {{9152440147604802809ull, 17612603770011042011ull, 13145214920987716394ull, 3286514143487394424ull}}, {{6828864166078615607ull, 12792382675659026706ull, 16431518651234645493ull, 4108142679359243030ull}}, {{8879726122226522659ull, 10301082181500585643ull, 5658013138594265529ull, 2567589174599526894ull}}, {{6487971634355765419ull, 17488038745303119958ull, 16295888460097607719ull, 3209486468249408617ull}}, {{17333336579799482582ull, 17248362413201512043ull, 6534802519839845937ull, 4011858085311760772ull}}, {{8527492353160982662ull, 3862697480609863171ull, 13307623611754679519ull, 2507411303319850482ull}}, {{6047679423023840423ull, 216685832334941060ull, 7411157477838573591ull, 3134264129149813103ull}}, {{7559599278779800529ull, 14105915345700840037ull, 4652260828870829084ull, 3917830161437266379ull}}, {{7030592558451069283ull, 18039569127917800831ull, 601820008830574225ull, 2448643850898291487ull}}, {{4176554679636448699ull, 8714403354615087327ull, 14587333066320381494ull, 3060804813622864358ull}}, {{609007331118172970ull, 1669632156414083351ull, 9010794296045701060ull, 3826006017028580448ull}}, {{7298158609589939962ull, 10266892134613577902ull, 5631746435028563162ull, 2391253760642862780ull}}, {{18346070298842200761ull, 3610243131412196569ull, 7039683043785703953ull, 2989067200803578475ull}}, {{9097529818270587239ull, 9124489932692633616ull, 4187917786304742037ull, 3736334001004473094ull}}, {{5685956136419117025ull, 8008649217146589962ull, 16452506671722627485ull, 2335208750627795683ull}}, {{16330817207378672089ull, 14622497539860625356ull, 15953947321225896452ull, 2919010938284744604ull}}, {{1966777435513788495ull, 18278121924825781696ull, 1495690077822818949ull, 3648763672855930756ull}}, {{2458471794392235618ull, 9012594350750063408ull, 1869612597278523687ull, 4560954591069913445ull}}, {{1536544871495147261ull, 12550400496859871486ull, 3474350882512771256ull, 2850596619418695903ull}}, {{11144053126223709885ull, 15688000621074839357ull, 18177996658423127782ull, 3563245774273369878ull}}, {{95008352497473644ull, 10386628739488773389ull, 13499123786174133920ull, 4454057217841712348ull}}, {{2365223229524614980ull, 6491642962180483368ull, 17660324403213609508ull, 2783785761151070217ull}}, {{2956529036905768724ull, 8114553702725604210ull, 8240347448734848173ull, 3479732201438837772ull}}, {{12919033332986986713ull, 14754878146834393166ull, 10300434310918560216ull, 4349665251798547215ull}}, {{3462709814689478792ull, 9221798841771495729ull, 13355300471965181991ull, 2718540782374092009ull}}, {{8940073286789236394ull, 6915562533786981757ull, 2859067534674313777ull, 3398175977967615012ull}}, {{15786777626913933396ull, 13256139185661115100ull, 3573834418342892221ull, 4247719972459518765ull}}, {{643363979966432565ull, 10590930000251890890ull, 4539489520678001590ull, 2654824982787199228ull}}, {{10027577011812816514ull, 4015290463460087804ull, 5674361900847501988ull, 3318531228483999035ull}}, {{12534471264766020642ull, 5019113079325109755ull, 2481266357631989581ull, 4148164035604998794ull}}, {{5528201531265068950ull, 5442788683791887549ull, 6162477491947381392ull, 2592602522253124246ull}}, {{11521937932508724091ull, 6803485854739859436ull, 16926468901789002548ull, 3240753152816405307ull}}, {{14402422415635905113ull, 8504357318424824295ull, 16546400108808865281ull, 4050941441020506634ull}}, {{15919043037413522552ull, 16844438370083984944ull, 14953186086432928704ull, 2531838400637816646ull}}, {{1452059723057351574ull, 2608803888895429565ull, 9468110571186385073ull, 3164798000797270808ull}}, {{6426760672249077371ull, 7872690879546674860ull, 11835138213982981341ull, 3955997500996588510ull}}, {{13240097457010449165ull, 7226274808930365739ull, 2785275365311975434ull, 2472498438122867819ull}}, {{11938435802835673552ull, 18256215548017732982ull, 17316652261922133004ull, 3090623047653584773ull}}, {{5699672716689816132ull, 4373525361312614612ull, 7810757272120502544ull, 3863278809566980967ull}}, {{12785667484785910891ull, 2733453350820384132ull, 11799252322716395946ull, 2414549255979363104ull}}, {{15982084355982388614ull, 12640188725380255973ull, 14749065403395494932ull, 3018186569974203880ull}}, {{6142547389695822055ull, 15800235906725319967ull, 18436331754244368665ull, 3772733212467754850ull}}, {{10756621146200970640ull, 2957618414062243123ull, 16134393364830118320ull, 2357958257792346781ull}}, {{8834090414323825396ull, 3697023017577803904ull, 6332933650755484188ull, 2947447822240433477ull}}, {{11042613017904781745ull, 4621278771972254880ull, 12527853081871743139ull, 3684309777800541846ull}}, {{13803266272380977182ull, 1164912446537930696ull, 6436444315484903116ull, 4605387222250677308ull}}, {{8627041420238110739ull, 9951442315940982493ull, 13246149734032840255ull, 2878367013906673317ull}}, {{15395487793725026327ull, 7827616876498840212ull, 2722629112258886607ull, 3597958767383341647ull}}, {{797615668446731293ull, 5172835077196162362ull, 17238344445605771971ull, 4497448459229177058ull}}, {{5110195811206594962ull, 927178914033907524ull, 15385651296930995386ull, 2810905287018235661ull}}, {{6387744764008243703ull, 10382345679397160213ull, 5397006065881580520ull, 3513631608772794577ull}}, {{12596366973437692532ull, 12977932099246450266ull, 11357943600779363554ull, 4392039510965993221ull}}, {{12484415376825945737ull, 12722893580456419320ull, 9404557759700796173ull, 2745024694353745763ull}}, {{15605519221032432171ull, 2068558920288360438ull, 7144011181198607313ull, 3431280867942182204ull}}, {{10283526989435764406ull, 7197384668787838452ull, 8930013976498259141ull, 4289101084927727755ull}}, {{15650576405252128562ull, 6804208427206092984ull, 3275415726097718011ull, 2680688178079829847ull}}, {{1116476432855609086ull, 3893574515580228327ull, 17929327712904311226ull, 3350860222599787308ull}}, {{15230653596351675069ull, 14090340181330061216ull, 3964915567420837416ull, 4188575278249734136ull}}, {{9519158497719796919ull, 8806462613331288260ull, 2478072229638023385ull, 2617859548906083835ull}}, {{11898948122149746148ull, 15619764285091498229ull, 16932648342329692943ull, 3272324436132604793ull}}, {{1038627097405018973ull, 14913019337936984883ull, 7330752372629952467ull, 4090405545165755992ull}}, {{16790043000373994522ull, 7014794076996921599ull, 4581720232893720292ull, 2556503465728597495ull}}, {{16375867732040105249ull, 8768492596246151999ull, 1115464272689762461ull, 3195629332160746869ull}}, {{15858148646622743657ull, 15572301763735077903ull, 6006016359289590980ull, 3994536665200933586ull}}, {{16828871931780296642ull, 509316565479647881ull, 8365446242983382267ull, 2496585415750583491ull}}, {{7201031859443207090ull, 14471703762131723564ull, 5845121785301839929ull, 3120731769688229364ull}}, {{9001289824304008862ull, 4254571647382490743ull, 7306402231627299912ull, 3900914712110286705ull}}, {{12543335167831087395ull, 2659107279614056714ull, 16095716440835532205ull, 2438071695068929190ull}}, {{6455796922934083436ull, 7935570117944958797ull, 10896273514189639448ull, 3047589618836161488ull}}, {{12681432172094992199ull, 9919462647431198496ull, 13620341892737049310ull, 3809487023545201860ull}}, {{7925895107559370124ull, 1587978136217111156ull, 17736085719815431627ull, 2380929389715751162ull}}, {{9907368884449212655ull, 15820030725553552657ull, 12946735112914513725ull, 2976161737144688953ull}}, {{16995897123988903723ull, 5939980351659777109ull, 2348360835860978445ull, 3720202171430861192ull}}, {{12928278711706758779ull, 6018330729001054645ull, 1467725522413111528ull, 2325126357144288245ull}}, {{2325290334351284762ull, 7522913411251318307ull, 6446342921443777314ull, 2906407946430360306ull}}, {{16741670973221269664ull, 180269727209372075ull, 17281300688659497451ull, 3633009933037950382ull}}, {{16315402698099199176ull, 14060395214293878806ull, 12378253823969596005ull, 4541262416297437978ull}}, {{5585440667884611581ull, 11093590018147368206ull, 12348094658408385407ull, 2838289010185898736ull}}, {{16205172871710540284ull, 9255301504256822353ull, 15435118323010481759ull, 3547861262732373420ull}}, {{6421408034356011643ull, 6957440861893640038ull, 847153830053550583ull, 4434826578415466776ull}}, {{17848438076754670989ull, 11265929566324606879ull, 529471143783469114ull, 2771766611509666735ull}}, {{17698861577515950832ull, 4859039921050982791ull, 14496896985011500105ull, 3464708264387083418ull}}, {{17511890953467550636ull, 10685485919741116393ull, 8897749194409599323ull, 4330885330483854273ull}}, {{4027402818276137292ull, 4372585690624503794ull, 17090308292574469337ull, 2706803331552408920ull}}, {{14257625559699947423ull, 10077418131708017646ull, 2916141292008535055ull, 3383504164440511151ull}}, {{8598659912770158470ull, 7985086646207634154ull, 17480234670292832531ull, 4229380205550638938ull}}, {{9985848463908736948ull, 2684836144666077394ull, 15536832687360408236ull, 2643362628469149336ull}}, {{3258938543031145377ull, 3356045180832596743ull, 974296785490958679ull, 3304203285586436671ull}}, {{17908731234071095433ull, 18030114531322909640ull, 15052929037145862060ull, 4130254106983045838ull}}, {{11192957021294434646ull, 2045449545222042717ull, 4796394629788775884ull, 2581408816864403649ull}}, {{156138221335879595ull, 2556811931527553397ull, 10607179305663357759ull, 3226761021080504561ull}}, {{4806858795097237398ull, 17031072969691605458ull, 17870660150506585102ull, 4033451276350630701ull}}, {{7615972765363161278ull, 6032734587629865507ull, 13475005603280309641ull, 2520907047719144188ull}}, {{4908279938276563693ull, 12152604252964719788ull, 16843757004100387051ull, 3151133809648930235ull}}, {{6135349922845704616ull, 10579069297778511831ull, 16443010236698095910ull, 3938917262061162794ull}}, {{10752122729419647241ull, 2000232292684181990ull, 14888567416363697848ull, 2461823288788226746ull}}, {{4216781374919783244ull, 2500290365855227488ull, 9387337233599846502ull, 3077279110985283433ull}}, {{5270976718649729054ull, 12348734994173810168ull, 16345857560427196031ull, 3846598888731604291ull}}, {{3294360449156080659ull, 14635488398999713211ull, 7910317966053303567ull, 2404124305457252682ull}}, {{17953008616727264536ull, 13682674480322253609ull, 664525420711853651ull, 3005155381821565853ull}}, {{8606202715626916958ull, 12491657081975429108ull, 5442342794317204968ull, 3756444227276957316ull}}, {{14602248734121598907ull, 7807285676234643192ull, 12624836283303028913ull, 2347777642048098322ull}}, {{18252810917651998633ull, 14370793113720691894ull, 6557673317274010333ull, 2934722052560122903ull}}, {{13592641610210222484ull, 4128433336868701156ull, 3585405628165125013ull, 3668402565700153629ull}}, {{16990802012762778104ull, 9772227689513264349ull, 9093443053633794170ull, 4585503207125192036ull}}, {{12925094267190430267ull, 10719328324373178122ull, 14906773945375897164ull, 2865939504453245022ull}}, {{6932995797133262026ull, 13399160405466472653ull, 9410095394865095647ull, 3582424380566556278ull}}, {{13277930764843965437ull, 12137264488405702912ull, 2539247206726593751ull, 4478030475708195348ull}}, {{8298706728027478398ull, 14503319332894646176ull, 10810401541058896902ull, 2798769047317622092ull}}, {{10373383410034347997ull, 8905777129263531912ull, 13513001926323621128ull, 3498461309147027615ull}}, {{12966729262542934997ull, 11132221411579414890ull, 12279566389477138506ull, 4373076636433784519ull}}, {{12715891807516722277ull, 11569324400664522210ull, 14592258021064293422ull, 2733172897771115324ull}}, {{6671492722541127038ull, 5238283463975876955ull, 18240322526330366778ull, 3416466122213894155ull}}, {{3727679884749020894ull, 15771226366824622002ull, 18188717139485570568ull, 4270582652767367694ull}}, {{6941485946395525963ull, 9857016479265388751ull, 6756262193751093701ull, 2669114157979604809ull}}, {{4065171414567019549ull, 16932956617509123843ull, 13057013760616255030ull, 3336392697474506011ull}}, {{469778249781386533ull, 11942823735031628996ull, 11709581182342930884ull, 4170490871843132514ull}}, {{9516983442968142391ull, 16687636871249543930ull, 11930174257391719706ull, 2606556794901957821ull}}, {{2672857266855402181ull, 11636174052207154105ull, 1077659766457485921ull, 3258195993627447277ull}}, {{7952757601996640630ull, 710159509976778919ull, 5958760726499245306ull, 4072744992034309096ull}}, {{11888002528888982250ull, 5055535712162874728ull, 3724225454062028316ull, 2545465620021443185ull}}, {{14860003161111227812ull, 6319419640203593410ull, 9266967836004923299ull, 3181832025026803981ull}}, {{9351631914534258957ull, 3287588531827103859ull, 16195395813433542028ull, 3977290031283504976ull}}, {{3538926937370217896ull, 11278114869246715720ull, 10122122383395963767ull, 2485806269552190610ull}}, {{4423658671712772370ull, 9485957568131006746ull, 3429280942390178901ull, 3107257836940238263ull}}, {{14752945376495741271ull, 16469132978591146336ull, 18121659233269887338ull, 3884072296175297828ull}}, {{9220590860309838294ull, 14904894130046854364ull, 2102664983938903778ull, 2427545185109561143ull}}, {{11525738575387297868ull, 9407745625703792147ull, 16463389285205793435ull, 3034431481386951428ull}}, {{9795487200806734431ull, 7147996013702352280ull, 2132492532797690178ull, 3793039351733689286ull}}, {{6122179500504209019ull, 9079183526991358079ull, 15167865888280720073ull, 2370649594833555803ull}}, {{3041038357202873370ull, 15960665427166585503ull, 14348146341923512187ull, 2963311993541944754ull}}, {{17636356001785755424ull, 15339145765530843974ull, 8711810890549614426ull, 3704139991927430943ull}}, {{6411036482688709236ull, 14198652121884165388ull, 12362410834234590872ull, 2315087494954644339ull}}, {{8013795603360886545ull, 17748315152355206735ull, 10841327524365850686ull, 2893859368693305424ull}}, {{5405558485773720278ull, 12962021903589232611ull, 13551659405457313358ull, 3617324210866631780ull}}, {{2145262088789762443ull, 6979155342631764956ull, 16939574256821641698ull, 4521655263583289725ull}}, {{10564160842348377335ull, 8973658107572241001ull, 12893076919727220013ull, 2826034539739556078ull}}, {{17816887071362859573ull, 15828758652892689155ull, 6892974112804249208ull, 3532543174674445098ull}}, {{17659422820776186562ull, 1339204242406309828ull, 17839589677860087319ull, 4415678968343056372ull}}, {{1813767226130340793ull, 7754531679145025499ull, 1926371511807778766ull, 2759799355214410233ull}}, {{16102267087945089703ull, 469792562076506065ull, 7019650408187111362ull, 3449749194018012791ull}}, {{6292775804649198417ull, 9810612739450408390ull, 4162876991806501298ull, 4312186492522515989ull}}, {{17768042933187912723ull, 10743318980583893147ull, 4907641129092757263ull, 2695116557826572493ull}}, {{17598367648057503000ull, 8817462707302478530ull, 10746237429793334483ull, 3368895697283215616ull}}, {{12774587523217102941ull, 6410142365700710259ull, 13432796787241668104ull, 4211119621604019520ull}}, {{5678274192796995386ull, 4006338978562943912ull, 8395497992026042565ull, 2631949763502512200ull}}, {{7097842740996244233ull, 9619609741631067794ull, 10494372490032553206ull, 3289937204378140250ull}}, {{18095675463100081099ull, 2801140140184058934ull, 3894593575685915700ull, 4112421505472675313ull}}, {{6698111146010162783ull, 10974084624469812642ull, 13963336030872167072ull, 2570263440920422070ull}}, {{17596010969367479287ull, 13717605780587265802ull, 8230798001735433032ull, 3212829301150527588ull}}, {{12771641674854573300ull, 17147007225734082253ull, 10288497502169291290ull, 4016036626438159485ull}}, {{10288119055997802265ull, 15328565534511189312ull, 8736153948069501008ull, 2510022891523849678ull}}, {{12860148819997252831ull, 713962844429435024ull, 1696820398232100453ull, 3137528614404812098ull}}, {{16075186024996566039ull, 5504139573964181684ull, 11344397534644901374ull, 3921910768006015122ull}}, {{823619228768077966ull, 17275145289009777265ull, 11701934477580451262ull, 2451194230003759451ull}}, {{5641210054387485362ull, 12370559574407445773ull, 10015732078548176174ull, 3063992787504699314ull}}, {{11663198586411744606ull, 6239827431154531408ull, 3296293061330444410ull, 3829990984380874143ull}}, {{7289499116507340379ull, 8511578162898970034ull, 8977712190972609612ull, 2393744365238046339ull}}, {{18335245932488951282ull, 10639472703623712542ull, 6610454220288374111ull, 2992180456547557924ull}}, {{13695685378756413294ull, 8687654861102252774ull, 8263067775360467639ull, 3740225570684447405ull}}, {{3948117343295370405ull, 12347313315829989840ull, 7470260368813986226ull, 2337640981677779628ull}}, {{4935146679119213006ull, 6210769607932711492ull, 9337825461017482783ull, 2922051227097224535ull}}, {{6168933348899016257ull, 3151775991488501461ull, 7060595807844465575ull, 3652564033871530669ull}}, {{12322852704551158226ull, 17774778044642790538ull, 13437430778232969872ull, 4565705042339413336ull}}, {{12313468958771861795ull, 11109236277901744086ull, 8398394236395606170ull, 2853565651462133335ull}}, {{6168464161610051436ull, 4663173310522404300ull, 5886306777067119809ull, 3566957064327666669ull}}, {{7710580202012564295ull, 10440652656580393279ull, 11969569489761287665ull, 4458696330409583336ull}}, {{11736641653898934540ull, 18054622956431215559ull, 7480980931100804790ull, 2786685206505989585ull}}, {{10059116048946280271ull, 13344906658684243641ull, 13962912182303393892ull, 3483356508132486981ull}}, {{17185581079610238243ull, 16681133323355304551ull, 3618582172597078653ull, 4354195635165608727ull}}, {{17658517202397480758ull, 12731551336310759296ull, 9179142885514256014ull, 2721372271978505454ull}}, {{3626402429287299331ull, 6691067133533673313ull, 2250556570038044210ull, 3401715339973131818ull}}, {{9144689055036512068ull, 17587205953771867449ull, 12036567749402331070ull, 4252144174966414772ull}}, {{17244645705466289803ull, 6380317702680029251ull, 16746226880231232727ull, 2657590109354009232ull}}, {{16944121113405474349ull, 3363711109922648660ull, 2486039526579489293ull, 3321987636692511541ull}}, {{2733407318047291321ull, 8816324905830698730ull, 7719235426651749520ull, 4152484545865639426ull}}, {{6320065592206944980ull, 5510203066144186706ull, 9436208160084731354ull, 2595302841166024641ull}}, {{17123454027113457032ull, 16111125869535009190ull, 16406946218533302096ull, 3244128551457530801ull}}, {{12180945497037045482ull, 1692163263209209872ull, 6673624717884463909ull, 4055160689321913502ull}}, {{7613090935648153427ull, 3363445048719450122ull, 18006073503959953655ull, 2534475430826195938ull}}, {{292991632705415975ull, 18039364366181476365ull, 13284219843095166260ull, 3168094288532744923ull}}, {{4977925559309157873ull, 4102461384017293840ull, 11993588785441569922ull, 3960117860665931154ull}}, {{3111203474568223671ull, 7175724383438196554ull, 12107679009328369105ull, 2475073662916206971ull}}, {{13112376380065055396ull, 13581341497725133596ull, 10522912743233073477ull, 3093842078645258714ull}}, {{16390470475081319245ull, 3141618816874253283ull, 3930268892186566039ull, 3867302598306573393ull}}, {{7938201037712130576ull, 8881040788187490158ull, 13985633103685073534ull, 2417064123941608370ull}}, {{699379260285387412ull, 1877928948379586890ull, 8258669342751566110ull, 3021330154927010463ull}}, {{10097596112211510073ull, 11570783222329259420ull, 5711650660012069733ull, 3776662693658763079ull}}, {{15534369606986969604ull, 9537582523169481089ull, 10487310690148625439ull, 2360414183536726924ull}}, {{5582903953451548293ull, 7310292135534463458ull, 13109138362685781799ull, 2950517729420908655ull}}, {{16202001978669211174ull, 4526179150990691418ull, 11774736934929839345ull, 3688147161776135819ull}}, {{11029130436481738159ull, 10269409957165752177ull, 10106735150234911277ull, 4610183952220169774ull}}, {{18422421568869556110ull, 8724224232442289062ull, 1705023450469431644ull, 2881364970137606109ull}}, {{13804654924232169329ull, 10905280290552861328ull, 6742965331514177459ull, 3601706212672007636ull}}, {{17255818655290211661ull, 9019914344763688756ull, 8428706664392721824ull, 4502132765840009545ull}}, {{1561514622701606481ull, 5637446465477305473ull, 16797156711313920900ull, 2813832978650005965ull}}, {{6563579296804396005ull, 7046808081846631841ull, 7161387833860237413ull, 3517291223312507457ull}}, {{12816160139432882910ull, 13420196120735677705ull, 13563420810752684670ull, 4396614029140634321ull}}, {{1092571059504469963ull, 3775936557032410662ull, 1559608979079346063ull, 2747883768212896451ull}}, {{10589085861235363261ull, 108234677863125423ull, 15784569279131346291ull, 3434854710266120563ull}}, {{8624671308116816172ull, 13970351402611070491ull, 15119025580486794959ull, 4293568387832650704ull}}, {{3084576558359316156ull, 15648998654273000913ull, 9449390987804246849ull, 2683480242395406690ull}}, {{8467406716376533099ull, 5726190262559087429ull, 2588366697900532754ull, 3354350302994258363ull}}, {{15195944413898054277ull, 16381109865053635094ull, 17070516427657829654ull, 4192937878742822953ull}}, {{4885779240258896020ull, 5626507647231134030ull, 3751543739645061678ull, 2620586174214264346ull}}, {{15330596087178395832ull, 16256506595893693345ull, 13912801711411102905ull, 3275732717767830432ull}}, {{5328187053690831078ull, 6485575189584952970ull, 17391002139263878632ull, 4094665897209788040ull}}, {{7941802926984157328ull, 4053484493490595606ull, 10869376337039924145ull, 2559166185756117525ull}}, {{703881621875420852ull, 9678541635290632412ull, 18198406439727293085ull, 3198957732195146906ull}}, {{879852027344276065ull, 16709863062540678419ull, 13524636012804340548ull, 3998697165243933633ull}}, {{16690808581586030205ull, 1220292377233148203ull, 1535368480361630987ull, 2499185728277458521ull}}, {{16251824708555149852ull, 15360423526823598966ull, 6530896618879426637ull, 3123982160346823151ull}}, {{11091408848839161507ull, 5365471353247334996ull, 3551934755171895393ull, 3904977700433528939ull}}, {{16155502567379251750ull, 14882634641848054132ull, 18360860286478292284ull, 2440611062770955586ull}}, {{1747634135514513071ull, 156549228600516050ull, 13727703321243089548ull, 3050763828463694483ull}}, {{11407914706247917147ull, 195686535750645062ull, 12547943133126474031ull, 3813454785579618104ull}}, {{2518260672977560313ull, 7039833112485235020ull, 7842464458204046269ull, 2383409240987261315ull}}, {{3147825841221950391ull, 13411477409033931679ull, 5191394554327669932ull, 2979261551234076644ull}}, {{17769840356809601701ull, 16764346761292414598ull, 6489243192909587415ull, 3724076939042595805ull}}, {{6494464204578613159ull, 17395245753448840980ull, 6361620004782186086ull, 2327548086901622378ull}}, {{8118080255723266449ull, 12520685154956275417ull, 17175397042832508416ull, 2909435108627027972ull}}, {{14759286338081470965ull, 15650856443695344271ull, 3022502229831083904ull, 3636793885783784966ull}}, {{13837421904174450802ull, 1116826480909628723ull, 13001499824143630689ull, 4545992357229731207ull}}, {{6342545680895337799ull, 12227231596636987712ull, 15043466417730851036ull, 2841245223268582004ull}}, {{7928182101119172249ull, 15284039495796234640ull, 357588948454012179ull, 3551556529085727506ull}}, {{9910227626398965311ull, 14493363351317905396ull, 9670358222422291032ull, 4439445661357159382ull}}, {{15417264303354129128ull, 9058352094573690872ull, 1432287870586543991ull, 2774653538348224614ull}}, {{824836305483109794ull, 6711254099789725687ull, 11013731875087955797ull, 3468316922935280767ull}}, {{14866103437136050954ull, 13000753643164545012ull, 9155478825432556842ull, 4335396153669100959ull}}, {{67942611355256038ull, 12737157045405228537ull, 12639703293536429882ull, 2709622596043188099ull}}, {{4696614282621457952ull, 6698074269901759863ull, 11187943098493149449ull, 3387028245053985124ull}}, {{1259081834849434536ull, 12984278855804587733ull, 13984928873116436811ull, 4233785306317481405ull}}, {{3092769155994590537ull, 5809331275664173381ull, 11046423554911466959ull, 2646115816448425878ull}}, {{8477647463420626075ull, 2649978076152828822ull, 4584657406784557891ull, 3307644770560532348ull}}, {{1373687292421006786ull, 17147530650473199740ull, 5730821758480697363ull, 4134555963200665435ull}}, {{10081926594617905049ull, 8411363647332055885ull, 1275920589836741900ull, 2584097477000415897ull}}, {{17214094261699769215ull, 10514204559165069856ull, 6206586755723315279ull, 3230121846250519871ull}}, {{3070873753415159903ull, 8531069680528949417ull, 3146547426226756195ull, 4037652307813149839ull}}, {{13448511141952944700ull, 3026075541116899433ull, 8884121169032804478ull, 2523532692383218649ull}}, {{2975580872159017162ull, 13005966463250900100ull, 15716837479718393501ull, 3154415865479023311ull}}, {{3719476090198771453ull, 2422400023781461413ull, 15034360831220603973ull, 3943019831848779139ull}}, {{4630515565587926110ull, 3819843024077107335ull, 7090632510299183531ull, 2464387394905486962ull}}, {{1176458438557519734ull, 163117761668996265ull, 18086662674728755222ull, 3080484243631858702ull}}, {{6082259066624287571ull, 9427269238941021139ull, 13384956306556168219ull, 3850605304539823378ull}}, {{1495568907426485780ull, 3586200265124444260ull, 12977283710024993041ull, 2406628315337389611ull}}, {{1869461134283107225ull, 9094436349832943229ull, 11609918619103853397ull, 3008285394171737014ull}}, {{6948512436281271935ull, 15979731455718566940ull, 5289026237025040938ull, 3760356742714671268ull}}, {{13566192309530570768ull, 14599018178251492241ull, 12529013434995426394ull, 2350222964196669542ull}}, {{3122682331631049747ull, 9025400685959589494ull, 6437894756889507185ull, 2937778705245836928ull}}, {{13126724951393587992ull, 15893436875876874771ull, 8047368446111883981ull, 3672223381557296160ull}}, {{11796720170814597086ull, 6031738039563929752ull, 10059210557639854977ull, 4590279226946620200ull}}, {{7372950106759123179ull, 15299051320795925855ull, 6287006598524909360ull, 2868924516841637625ull}}, {{4604501615021516070ull, 677070077285355703ull, 12470444266583524605ull, 3586155646052047031ull}}, {{1143941000349507183ull, 5458023615034082533ull, 10976369314802017852ull, 4482694557565058789ull}}, {{3020806134432135941ull, 12634636796251077391ull, 9166073830964955109ull, 2801684098478161743ull}}, {{17611065723322333639ull, 1958237940031683026ull, 6845906270278805983ull, 3502105123097702179ull}}, {{12790460117298141240ull, 16282855480321767495ull, 3945696819421119574ull, 4377631403872127724ull}}, {{14911566600952420131ull, 5565098656773716780ull, 11689432548992975542ull, 2736019627420079827ull}}, {{192714177480973548ull, 16179745357821921784ull, 10000104667813831523ull, 3420024534275099784ull}}, {{240892721851216935ull, 15612995678850014326ull, 12500130834767289404ull, 4275030667843874730ull}}, {{13985616006439174297ull, 534750262426483145ull, 12424267790156943782ull, 2671894167402421706ull}}, {{3646961952766804159ull, 9891809864887879740ull, 6306962700841403919ull, 3339867709253027133ull}}, {{4558702440958505198ull, 7753076312682461771ull, 12495389394479142803ull, 4174834636566283916ull}}, {{543346016385371797ull, 2539829686212844655ull, 17032990408404240060ull, 2609271647853927447ull}}, {{14514240575763878458ull, 3174787107766055818ull, 16679551992077912171ull, 3261589559817409309ull}}, {{8919428682850072264ull, 17803541939989733485ull, 7014381934815226501ull, 4076986949771761637ull}}, {{7880485935994989117ull, 13433056721707277380ull, 6689831718473210515ull, 2548116843607351023ull}}, {{9850607419993736397ull, 12179634883706708821ull, 3750603629664125240ull, 3185146054509188779ull}}, {{16924945293419558400ull, 15224543604633386026ull, 76568518652768646ull, 3981432568136485974ull}}, {{15189776826814611904ull, 4903653734468478362ull, 13882913379440144116ull, 2488395355085303733ull}}, {{9763848996663489072ull, 6129567168085597953ull, 3518583669018016433ull, 3110494193856629667ull}}, {{16816497264256749244ull, 12273644978534385345ull, 18233287641554684253ull, 3888117742320787083ull}}, {{3592781762519386422ull, 9976871120797684793ull, 9089961766757983706ull, 2430073588950491927ull}}, {{9102663221576620931ull, 3247716864142330183ull, 6750766190020091729ull, 3037591986188114909ull}}, {{6766643008543388259ull, 8671332098605300633ull, 13050143755952502565ull, 3796989982735143636ull}}, {{15758366926408087422ull, 7725425570842006847ull, 17379711884325089911ull, 2373118739209464772ull}}, {{15086272639582721374ull, 5045095945125120655ull, 3277895781696810773ull, 2966398424011830966ull}}, {{14246154781051013813ull, 10918055949833788723ull, 13320741763975789274ull, 3707998030014788707ull}}, {{6598003728943189681ull, 11435470987073505856ull, 6019620593271174344ull, 2317498768759242942ull}}, {{8247504661178987102ull, 14294338733841882320ull, 16747897778443743738ull, 2896873460949053677ull}}, {{10309380826473733877ull, 8644551380447577092ull, 7099814167772515961ull, 3621091826186317097ull}}, {{12886726033092167346ull, 15417375243986859269ull, 13486453728143032855ull, 4526364782732896371ull}}, {{10360046779896298543ull, 16553388555132868899ull, 6123190570875701582ull, 2828977989208060232ull}}, {{8338372456442985275ull, 11468363657061310316ull, 7653988213594626978ull, 3536222486510075290ull}}, {{10422965570553731594ull, 5112082534471862087ull, 344113230138507915ull, 4420278108137594113ull}}, {{13431882509237164102ull, 889208574831219852ull, 11744285814905037207ull, 2762673817585996320ull}}, {{16789853136546455128ull, 14946568773821188527ull, 14680357268631296508ull, 3453342271982495400ull}}, {{16375630402255681006ull, 236466893566934043ull, 18350446585789120636ull, 4316677839978119250ull}}, {{7928925992196106677ull, 9371163845334109585ull, 16080715134545588301ull, 2697923649986324531ull}}, {{14522843508672521250ull, 16325640825095024885ull, 15489207899754597472ull, 3372404562482905664ull}}, {{4318496330558487850ull, 1960306957659229491ull, 914765800983695225ull, 4215505703103632081ull}}, {{393217197385360954ull, 12754406894605488192ull, 12100943671683279275ull, 2634691064439770050ull}}, {{491521496731701193ull, 11331322599829472336ull, 5902807552749323286ull, 3293363830549712563ull}}, {{614401870914626491ull, 4940781212932064612ull, 2766823422509266204ull, 4116704788187140704ull}}, {{9607373206176417365ull, 12311360294937316190ull, 1729264639068291377ull, 2572940492616962940ull}}, {{2785844470865745898ull, 1554142313389481526ull, 2161580798835364222ull, 3216175615771203675ull}}, {{12705677625436958181ull, 11166049928591627715ull, 16537034053826368989ull, 4020219519714004593ull}}, {{5635205506684404911ull, 9284624214583461274ull, 3418117256000398762ull, 2512637199821252871ull}}, {{16267378920210281947ull, 2382408231374550784ull, 18107704625282662165ull, 3140796499776566088ull}}, {{1887479576553300817ull, 7589696307645576385ull, 4187886707893776090ull, 3925995624720707611ull}}, {{12708889781414282771ull, 9355246210705873144ull, 311586183219916104ull, 2453747265450442257ull}}, {{15886112226767853464ull, 11694057763382341430ull, 5001168747452283034ull, 3067184081813052821ull}}, {{10634268246605041021ull, 5394200167373150980ull, 10863146952742741697ull, 3833980102266316026ull}}, {{15869789690982926447ull, 14900590150676689122ull, 11401152863891601464ull, 2396237563916447516ull}}, {{10613865076873882250ull, 178993614636309787ull, 14251441079864501831ull, 2995296954895559395ull}}, {{8655645327664964908ull, 14058800073577550946ull, 13202615331403239384ull, 3744121193619449244ull}}, {{10021464348217990972ull, 8786750045985969341ull, 17475006618981800423ull, 2340075746012155777ull}}, {{17138516453699876619ull, 6371751539055073772ull, 8008700218445086817ull, 2925094682515194722ull}}, {{2976401493415294157ull, 12576375442246230120ull, 787503236201582713ull, 3656368353143993403ull}}, {{3720501866769117697ull, 1885411247525623938ull, 14819437100534142104ull, 4570460441429991753ull}}, {{6936999685158086465ull, 1178382029703514961ull, 2344619160192756959ull, 2856537775893744846ull}}, {{13282935624874995985ull, 15308035592411557413ull, 12154145987095722006ull, 3570672219867181057ull}}, {{2768611475811581269ull, 9911672453659670959ull, 1357624428587488796ull, 4463340274833976322ull}}, {{8647911200023320149ull, 15418167320392070157ull, 5460201286294568401ull, 2789587671771235201ull}}, {{15421575018456538090ull, 5437651095207923984ull, 11436937626295598406ull, 3486984589714044001ull}}, {{830224699361120997ull, 16020435905864680789ull, 461113977587334295ull, 4358730737142555002ull}}, {{2824733446314394575ull, 16930301468806507349ull, 4899882254419471838ull, 2724206710714096876ull}}, {{8142602826320381123ull, 11939504799153358378ull, 6124852818024339798ull, 3405258388392621095ull}}, {{954881496045700595ull, 5701008962086922165ull, 3044380004103036844ull, 4256572985490776369ull}}, {{2902643944242256824ull, 12786502638159102161ull, 13431952548632867787ull, 2660358115931735230ull}}, {{8239990948730208934ull, 11371442279271489797ull, 7566568648936308926ull, 3325447644914669038ull}}, {{14911674704340149072ull, 4990930812234586438ull, 234838774315610350ull, 4156809556143336298ull}}, {{4708110671785205266ull, 16954389812928780236ull, 4758460252374644372ull, 2598005972589585186ull}}, {{5885138339731506582ull, 2746243192451423679ull, 15171447352323081274ull, 3247507465736981482ull}}, {{2744736906236995324ull, 12656176027419055407ull, 9740937153549075784ull, 4059384332171226853ull}}, {{8632989594039203934ull, 7910110017136909629ull, 8393928730181866317ull, 2537115207607016783ull}}, {{15402923010976392821ull, 14499323539848524940ull, 5880724894299944992ull, 3171394009508770979ull}}, {{806909690010939410ull, 18124154424810656176ull, 2739220099447543336ull, 3964242511885963724ull}}, {{504318556256837131ull, 11327596515506660110ull, 10935384599009490393ull, 2477651569928727327ull}}, {{9853770232175822222ull, 324437589101161425ull, 9057544730334475088ull, 3097064462410909159ull}}, {{16928898808647165682ull, 405546986376451781ull, 6710244894490705956ull, 3871330578013636449ull}}, {{12886404764618172503ull, 9476838903340058171ull, 15723118105125160982ull, 2419581611258522780ull}}, {{11496319937345327725ull, 2622676592320296906ull, 1207153557696899612ull, 3024477014073153476ull}}, {{5147027884826883848ull, 3278345740400371133ull, 1508941947121124515ull, 3780596267591441845ull}}, {{5522735437230496357ull, 18189867152246089622ull, 3248931726164396773ull, 2362872667244651153ull}}, {{16126791333392896254ull, 8902275885025448315ull, 8672850676132883871ull, 2953590834055813941ull}}, {{15546803148313732414ull, 6516158837854422490ull, 15452749363593492743ull, 3691988542569767426ull}}, {{14328437986123470663ull, 10990128301300095912ull, 14269654370673320868ull, 2307492839106104641ull}}, {{17910547482654338328ull, 13737660376625119890ull, 4002009908059487373ull, 2884366048882630802ull}}, {{13164812316463147102ull, 3337017415499236151ull, 14225884421929135025ull, 3605457561103288502ull}}, {{11844329377151545974ull, 8782957787801433093ull, 8558983490556642973ull, 4506821951379110628ull}}, {{9708548869933410186ull, 7795191626589589635ull, 14572736718452677666ull, 2816763719611944142ull}}, {{7524000068989374828ull, 520617496382211236ull, 8992548861211071275ull, 3520954649514930178ull}}, {{9405000086236718535ull, 14485829925759927757ull, 2017314039659063285ull, 4401193311893662723ull}}, {{8183968063111643037ull, 11359486712813648800ull, 17401722339282772217ull, 2750745819933539201ull}}, {{10229960078889553796ull, 364300335734897288ull, 7917094868821301560ull, 3438432274916924002ull}}, {{12787450098611942244ull, 455375419668621610ull, 672996549171851142ull, 4298040343646155003ull}}, {{12603842330059851807ull, 14119667692575052218ull, 16561523907728264627ull, 2686275214778846876ull}}, {{6531430875720038950ull, 13037898597291427369ull, 2255160810950779168ull, 3357844018473558596ull}}, {{12775974613077436592ull, 16297373246614284211ull, 2818951013688473960ull, 4197305023091948245ull}}, {{5679141123959703918ull, 10185858279133927632ull, 4067687392768990177ull, 2623315639432467653ull}}, {{7098926404949629898ull, 17344008867344797444ull, 9696295259388625625ull, 3279144549290584566ull}}, {{8873658006187037372ull, 7844953028898833093ull, 2896997037381006224ull, 4098930686613230708ull}}, {{7851879263080592310ull, 4903095643061770683ull, 11033995185217904698ull, 2561831679133269192ull}}, {{5203163060423352483ull, 15352241590681989162ull, 13792493981522380872ull, 3202289598916586490ull}}, {{15727325862383966411ull, 743557914642934836ull, 8017245440048200283ull, 4002861998645733113ull}}, {{606206627135203199ull, 16605624761147691937ull, 16539993446098594936ull, 2501788749153583195ull}}, {{5369444302346391903ull, 2310286877725063305ull, 16063305789195855767ull, 3127235936441978994ull}}, {{11323491396360377783ull, 16722916652438492843ull, 10855760199640043900ull, 3909044920552473743ull}}, {{4771339113511542162ull, 1228450870919282219ull, 13702379152416109294ull, 2443153075345296089ull}}, {{1352487873462039799ull, 10758935625503878582ull, 3292915885237972905ull, 3053941344181620112ull}}, {{10913981878682325556ull, 18060355550307236131ull, 4116144856547466131ull, 3817426680227025140ull}}, {{4515395664962759521ull, 8981879209728328630ull, 11795962572196942140ull, 2385891675141890712ull}}, {{14867616618058225209ull, 11227349012160410787ull, 14744953215246177675ull, 2982364593927363390ull}}, {{13972834754145393607ull, 9422500246773125580ull, 9207819482202946286ull, 3727955742409204238ull}}, {{17956393758195646813ull, 1277376635805815583ull, 1143201157949453525ull, 2329972339005752649ull}}, {{17833806179317170612ull, 6208406813184657383ull, 6040687465864204810ull, 2912465423757190811ull}}, {{17680571705719075361ull, 16983880553335597537ull, 2939173313902868108ull, 3640581779696488514ull}}, {{8265656576866680489ull, 2783106617959945306ull, 12897338679233360944ull, 4550727224620610642ull}}, {{9777721378969063210ull, 1739441636224965816ull, 12672522692948238494ull, 2844204515387881651ull}}, {{12222151723711329012ull, 11397674082135983078ull, 11228967347757910213ull, 3555255644234852064ull}}, {{6054317617784385457ull, 412034547387815136ull, 14036209184697387767ull, 4444069555293565080ull}}, {{3783948511115240911ull, 7175050619758466316ull, 8772630740435867354ull, 2777543472058478175ull}}, {{4729935638894051138ull, 18192185311552858703ull, 6354102407117446288ull, 3471929340073097719ull}}, {{1300733530190176019ull, 4293487565731521763ull, 3330941990469419957ull, 4339911675091372149ull}}, {{16953859520864717676ull, 4989272737795895053ull, 4387681753257081425ull, 2712444796932107593ull}}, {{7357266345798733383ull, 10848276940672256721ull, 10096288209998739685ull, 3390555996165134491ull}}, {{13808268950675804632ull, 18172032194267708805ull, 8008674244071036702ull, 4238194995206418114ull}}, {{10936011103386071847ull, 6745834102989930099ull, 9617107420971785843ull, 2648871872004011321ull}}, {{9058327860805201905ull, 3820606610310024720ull, 16633070294642120208ull, 3311089840005014151ull}}, {{11322909826006502381ull, 4775758262887530900ull, 16179651849875262356ull, 4138862300006267689ull}}, {{16300190678108839796ull, 12208220951159482620ull, 3194753378530957116ull, 2586788937503917306ull}}, {{1928494273926498129ull, 15260276188949353276ull, 13216813760018472203ull, 3233486171879896632ull}}, {{2410617842408122661ull, 14463659217759303691ull, 16521017200023090254ull, 4041857714849870790ull}}, {{17647537216000934328ull, 4428100992672176902ull, 5713949731587043505ull, 2526161071781169244ull}}, {{12836049483146392101ull, 10146812259267609032ull, 7142437164483804381ull, 3157701339726461555ull}}, {{16045061853932990127ull, 17295201342511899194ull, 4316360437177367572ull, 3947126674658076944ull}}, {{14639849677135506733ull, 1586128802215161188ull, 2697725273235854733ull, 2466954171661298090ull}}, {{18299812096419383417ull, 6594347021196339389ull, 12595528628399594224ull, 3083692714576622612ull}}, {{9039707065242065559ull, 8242933776495424237ull, 15744410785499492780ull, 3854615893220778265ull}}, {{7955659924989984926ull, 14375205647164415956ull, 2922727713296101131ull, 2409134933262986416ull}}, {{9944574906237481158ull, 13357321040528132041ull, 3653409641620126414ull, 3011418666578733020ull}}, {{17042404651224239351ull, 7473279263805389243ull, 4566762052025158018ull, 3764273333223416275ull}}, {{8345659897801455643ull, 9282485558305756181ull, 548383273302029809ull, 2352670833264635172ull}}, {{15043760890679207457ull, 16214792966309583130ull, 685479091627537261ull, 2940838541580793965ull}}, {{9581329076494233513ull, 6433433152604815201ull, 5468534882961809481ull, 3676048176975992456ull}}, {{16588347364045179795ull, 12653477459183406905ull, 6835668603702261851ull, 4595060221219990570ull}}, {{3450188074887155516ull, 5602580402775935364ull, 8883978895741301561ull, 2871912638262494106ull}}, {{4312735093608944395ull, 11614911521897307109ull, 1881601582821851143ull, 3589890797828117633ull}}, {{10002604885438568398ull, 9906953383944245982ull, 6963687996954701833ull, 4487363497285147041ull}}, {{1639942034971717345ull, 17721060911033623499ull, 15881520044165158405ull, 2804602185803216900ull}}, {{15884985598996810393ull, 8316268083509865661ull, 1405155981496896391ull, 3505752732254021126ull}}, {{6021173943463849279ull, 5783649085959944173ull, 10979817013725896297ull, 4382190915317526407ull}}, {{6069076723878599752ull, 15143995724793434868ull, 13779914661219767041ull, 2738869322073454004ull}}, {{7586345904848249689ull, 5094936600709629873ull, 17224893326524708802ull, 3423586652591817505ull}}, {{14094618399487700016ull, 15592042787741813149ull, 7696058602873722290ull, 4279483315739771882ull}}, {{11114979508893506462ull, 14356712760766021122ull, 9421722645223464335ull, 2674677072337357426ull}}, {{4670352349262107269ull, 13334204932530138499ull, 2553781269674554611ull, 3343346340421696783ull}}, {{1226254418150246183ull, 12056070147235285220ull, 17027284642375356976ull, 4179182925527120978ull}}, {{9989781048198679672ull, 7535043842022053262ull, 15253738919911986014ull, 2611989328454450611ull}}, {{3263854273393573782ull, 195432765672790770ull, 14455487631462594614ull, 3264986660568063264ull}}, {{13303189878596743036ull, 9467662993945764270ull, 18069359539328243267ull, 4081233325710079080ull}}, {{3702807655695576494ull, 3611446362002408717ull, 11293349712080152042ull, 2550770828568799425ull}}, {{9240195588046858521ull, 13737679989357786704ull, 281629084818026340ull, 3188463535710999282ull}}, {{11550244485058573151ull, 17172099986697233380ull, 9575408392877308733ull, 3985579419638749102ull}}, {{16442274840016384027ull, 13038405500899464814ull, 1372944227120930054ull, 2490987137274218189ull}}, {{11329471513165704226ull, 7074634839269555210ull, 6327866302328550472ull, 3113733921592772736ull}}, {{4938467354602354475ull, 8843293549086944013ull, 7909832877910688090ull, 3892167401990965920ull}}, {{5392385105840165499ull, 10138744486606727912ull, 4943645548694180056ull, 2432604626244353700ull}}, {{6740481382300206873ull, 12673430608258409890ull, 6179556935867725070ull, 3040755782805442125ull}}, {{17648973764730034400ull, 6618416223468236554ull, 12336132188262044242ull, 3800944728506802656ull}}, {{15642294621383659404ull, 8748196158095035750ull, 7710082617663777651ull, 2375590455316751660ull}}, {{10329496239874798447ull, 6323559179191406784ull, 9637603272079722064ull, 2969488069145939575ull}}, {{12911870299843498058ull, 7904448973989258480ull, 7435318071672264676ull, 3711860086432424469ull}}, {{8069918937402186287ull, 14163652645598062358ull, 6952916804008859374ull, 2319912554020265293ull}}, {{864026634897957050ull, 8481193770142802140ull, 13302832023438462122ull, 2899890692525331616ull}}, {{1080033293622446313ull, 1378120175823726867ull, 16628540029298077653ull, 3624863365656664520ull}}, {{15185099672310221603ull, 6334336238207046487ull, 2338930962913045450ull, 4531079207070830651ull}}, {{16408216322834970358ull, 8570646167306791958ull, 17602732916316511070ull, 2831924504419269156ull}}, {{11286898366688937139ull, 1489935672278714140ull, 3556672071686087222ull, 3539905630524086446ull}}, {{14108622958361171424ull, 11085791627203168483ull, 13669212126462384835ull, 4424882038155108057ull}}, {{6512046339762038188ull, 4622776757788286350ull, 1625728551397908666ull, 2765551273846942536ull}}, {{17363429961557323543ull, 15001842984090133745ull, 2032160689247385832ull, 3456939092308678170ull}}, {{7869229396664490717ull, 305559656403115566ull, 11763572898414008099ull, 4321173865385847712ull}}, {{306582354487918794ull, 16331875849747804893ull, 7352233061508755061ull, 2700733665866154820ull}}, {{4994913961537286397ull, 6579786756902592404ull, 9190291326885943827ull, 3375917082332693525ull}}, {{6243642451921607996ull, 3613047427700852601ull, 16099550177034817688ull, 4219896352915866906ull}}, {{15431491578519474757ull, 2258154642313032875ull, 14673904879074148959ull, 2637435220572416816ull}}, {{14677678454721955543ull, 16657751358173454806ull, 18342381098842686198ull, 3296794025715521020ull}}, {{9123726031547668620ull, 11598817160862042700ull, 4481232299843806132ull, 4120992532144401276ull}}, {{14925700806572068696ull, 16472632762393552495ull, 12024142224257154640ull, 2575620332590250797ull}}, {{14045439989787697966ull, 2144046879282389003ull, 1195119725039279589ull, 3219525415737813497ull}}, {{12945113968807234553ull, 7291744617530374158ull, 6105585674726487390ull, 4024406769672266871ull}}, {{3479010212077133692ull, 18392398441238647561ull, 10733520074345136474ull, 2515254231045166794ull}}, {{8960448783523805019ull, 13767126014693533643ull, 4193528056076644785ull, 3144067788806458493ull}}, {{6588874960977368369ull, 3373849463084753342ull, 9853596088523193886ull, 3930084736008073116ull}}, {{17953104905893018943ull, 15943713969710134550ull, 15381869592181771986ull, 2456302960005045697ull}}, {{13218009095511497870ull, 10706270425282892380ull, 5392278934945051271ull, 3070378700006307122ull}}, {{16522511369389372338ull, 8771152013176227571ull, 15963720705536089897ull, 3837973375007883902ull}}, {{8020726596654663759ull, 17011185054303611992ull, 5365639422532668281ull, 2398733359379927439ull}}, {{10025908245818329699ull, 7428923262597351278ull, 2095363259738447448ull, 2998416699224909299ull}}, {{3309013270418136316ull, 9286154078246689098ull, 16454262129955223022ull, 3748020874031136623ull}}, {{6679819312438723102ull, 1192160280476792782ull, 17201442858863096245ull, 2342513046269460389ull}}, {{17573146177403179685ull, 6101886369023378881ull, 7666745518296706594ull, 2928141307836825487ull}}, {{8131374666471810894ull, 16850729998133999410ull, 4971745879443495338ull, 3660176634796031859ull}}, {{940846296234987809ull, 11840040460812723455ull, 1602996330876981269ull, 4575220793495039824ull}}, {{7505557962787949237ull, 9705868297221646111ull, 1001872706798113293ull, 2859512995934399890ull}}, {{4770261435057548642ull, 16744021389954445543ull, 10475712920352417424ull, 3574391244917999862ull}}, {{1351140775394547898ull, 2483282663733505313ull, 3871269113585745973ull, 4467989056147499828ull}}, {{12373678030690062197ull, 3857894674047134772ull, 11642915232845867041ull, 2792493160092187392ull}}, {{15467097538362577746ull, 9434054360986306369ull, 14553644041057333801ull, 3490616450115234240ull}}, {{5498813867671058470ull, 16404253969660270866ull, 18192055051321667251ull, 4363270562644042800ull}}, {{8048444685721799448ull, 7946815721823975339ull, 11370034407076042032ull, 2727044101652526750ull}}, {{5448869838724861406ull, 9933519652279969174ull, 4989170971990276732ull, 3408805127065658438ull}}, {{16034459335260852565ull, 12416899565349961467ull, 15459835751842621723ull, 4261006408832073047ull}}, {{7715694075324338901ull, 5454719219130031965ull, 16579926372542720433ull, 2663129005520045654ull}}, {{14256303612582811531ull, 11430085042339927860ull, 11501535928823624733ull, 3328911256900057068ull}}, {{17820379515728514413ull, 452548247642746113ull, 14376919911029530917ull, 4161139071125071335ull}}, {{4220208169689239652ull, 2588685663990410273ull, 15903103972034538679ull, 2600711919453169584ull}}, {{9886946230538937469ull, 17070915135270176553ull, 1432135891333621732ull, 3250889899316461981ull}}, {{16970368806601059741ull, 2891899845378169075ull, 6401855882594415070ull, 4063612374145577476ull}}, {{8300637494911968386ull, 15642495458643519384ull, 13224531963476285226ull, 2539757733840985922ull}}, {{10375796868639960482ull, 10329747286449623422ull, 7307292917490580725ull, 3174697167301232403ull}}, {{3746374048945174795ull, 17523870126489417182ull, 4522430128435838002ull, 3968371459126540504ull}}, {{16176541835872897959ull, 15564104847483273642ull, 2826518830272398751ull, 2480232161954087815ull}}, {{10997305257986346641ull, 14843445040926704149ull, 17368206593122662151ull, 3100290202442609768ull}}, {{18358317590910321205ull, 13942620282730992282ull, 3263514167693776073ull, 3875362753053262211ull}}, {{16085634512746338657ull, 1796608649065788320ull, 18180597419304467710ull, 2422101720658288881ull}}, {{1660299067223371705ull, 11469132848187011209ull, 8890688718848420925ull, 3027627150822861102ull}}, {{6687059852456602536ull, 501358004951600299ull, 1889988861705750349ull, 3784533938528576378ull}}, {{1873569398571682633ull, 2619191762308444139ull, 5792929056993481872ull, 2365333711580360236ull}}, {{16177019803496767003ull, 3273989702885555173ull, 7241161321241852340ull, 2956667139475450295ull}}, {{6386216699088795042ull, 4092487128606943967ull, 4439765633124927521ull, 3695833924344312869ull}}, {{10908914464571578757ull, 14087019501447809739ull, 5080696529916773652ull, 2309896202715195543ull}}, {{9024457062287085542ull, 17608774376809762174ull, 1739184643968579161ull, 2887370253393994429ull}}, {{2057199291004081120ull, 8175909915730039006ull, 6785666823388111856ull, 3609212816742493036ull}}, {{11794871150609877208ull, 10219887394662548757ull, 8482083529235139820ull, 4511516020928116295ull}}, {{9677637478344867207ull, 15610801658518868781ull, 12218831233413044243ull, 2819697513080072684ull}}, {{16708732866358471913ull, 14901816054721198072ull, 15273539041766305304ull, 3524621891350090855ull}}, {{2439172009238538275ull, 180525994691945975ull, 14480237783780493727ull, 4405777364187613569ull}}, {{8442011533415168278ull, 7030357774323548090ull, 2132619587221726723ull, 2753610852617258481ull}}, {{1329142379914184539ull, 4176261199477047209ull, 7277460502454546308ull, 3442013565771573101ull}}, {{6273113993320118578ull, 5220326499346309011ull, 13708511646495570789ull, 4302516957214466376ull}}, {{1614853236611380159ull, 5568547071305137084ull, 8567819779059731743ull, 2689073098259041485ull}}, {{2018566545764225199ull, 2348997820704033451ull, 15321460742252052583ull, 3361341372823801856ull}}, {{16358266237487445211ull, 16771305331162205525ull, 705081854105514112ull, 4201676716029752321ull}}, {{12529759407643347209ull, 10482065831976378453ull, 11969891204884416080ull, 2626047947518595200ull}}, {{1827141204272020299ull, 13102582289970473067ull, 14962364006105520100ull, 3282559934398244000ull}}, {{16118984560622189086ull, 16378227862463091333ull, 256210933922348509ull, 4103199917997805001ull}}, {{12380208359602562131ull, 12542235423253126035ull, 11689346879769937578ull, 2564499948748628125ull}}, {{10863574431075814759ull, 6454422242211631736ull, 776625544430258261ull, 3205624935935785157ull}}, {{13579468038844768449ull, 12679713821191927574ull, 5582467948965210730ull, 4007031169919731446ull}}, {{3875481505850592377ull, 12536507156672342638ull, 17324100523385420418ull, 2504394481199832153ull}}, {{14067723919168016279ull, 6447261908985652489ull, 7820067598949611811ull, 3130493101499790192ull}}, {{3749596843677856636ull, 3447391367804677708ull, 9775084498687014764ull, 3913116376874737740ull}}, {{11566870064153436206ull, 11377991641732699375ull, 15332799848534160035ull, 2445697735546711087ull}}, {{9846901561764407353ull, 9610803533738486315ull, 14554313792240312140ull, 3057122169433388859ull}}, {{7696940933778121287ull, 12013504417173107894ull, 13581206221873002271ull, 3821402711791736074ull}}, {{198902065183937901ull, 14425969288374274290ull, 13099939907098014323ull, 2388376694869835046ull}}, {{9471999618334698184ull, 13420775592040454958ull, 7151552847017742096ull, 2985470868587293808ull}}, {{2616627486063596922ull, 16775969490050568698ull, 8939441058772177620ull, 3731838585734117260ull}}, {{6247078197217135980ull, 1261608894426829628ull, 14810522698587386821ull, 2332399116083823287ull}}, {{7808847746521419975ull, 6188697136460924939ull, 13901467354806845622ull, 2915498895104779109ull}}, {{5149373664724387065ull, 16959243457430931982ull, 3541776138226393315ull, 3644373618880973887ull}}, {{15660089117760259639ull, 16587368303361277073ull, 18262278228065155356ull, 4555467023601217358ull}}, {{2870026670959080419ull, 1143733152746022363ull, 6802237874113334194ull, 2847166889750760849ull}}, {{17422591393981014235ull, 10653038477787303761ull, 13114483361069055646ull, 3558958612188451061ull}}, {{7943181187194104082ull, 4092926060379353894ull, 2558046146054155846ull, 4448698265235563827ull}}, {{352802223568927147ull, 16393136843019259896ull, 17739679905779705067ull, 2780436415772227391ull}}, {{441002779461158934ull, 15879735035346686966ull, 17562913863797243430ull, 3475545519715284239ull}}, {{9774625511181224475ull, 10626296757328582899ull, 17341956311319166384ull, 4344431899644105299ull}}, {{3803297935274571345ull, 6641435473330364312ull, 8532879685360785038ull, 2715269937277565812ull}}, {{4754122419093214181ull, 17525166378517731198ull, 10666099606700981297ull, 3394087421596957265ull}}, {{15166025060721293535ull, 8071399917865000285ull, 17944310526803614526ull, 4242609276996196581ull}}, {{11784608672164502411ull, 432938930238237274ull, 13521037088465953031ull, 2651630798122622863ull}}, {{5507388803350852206ull, 14376231718079960305ull, 12289610342155053384ull, 3314538497653278579ull}}, {{11495922022615953162ull, 17970289647599950381ull, 10750326909266428826ull, 4143173122066598224ull}}, {{9490794273348664678ull, 15843117048177356892ull, 6718954318291518016ull, 2589483201291623890ull}}, {{11863492841685830848ull, 1357152236512144499ull, 17622064934719173329ull, 3236854001614529862ull}}, {{10217680033679900655ull, 6308126314067568528ull, 12804209131544190853ull, 4046067502018162328ull}}, {{6386050021049937910ull, 6248421955505924282ull, 8002630707215119283ull, 2528792188761351455ull}}, {{17205934563167198195ull, 3198841425955017448ull, 5391602365591511200ull, 3160990235951689319ull}}, {{3060674130249446128ull, 3998551782443771811ull, 2127816938562001096ull, 3951237794939611649ull}}, {{18053822395901761494ull, 2499094864027357381ull, 12859100632669720445ull, 2469523621837257280ull}}, {{8732219939595038155ull, 7735554598461584631ull, 16073875790837150556ull, 3086904527296571600ull}}, {{6303588906066409790ull, 9669443248076980789ull, 1645600664836886579ull, 3858630659120714501ull}}, {{6245586075505200071ull, 3737559020834419041ull, 3334343424736748064ull, 2411644161950446563ull}}, {{12418668612808887993ull, 4671948776043023801ull, 18002987336203098792ull, 3014555202438058203ull}}, {{1688277710728946279ull, 5839935970053779752ull, 17892048151826485586ull, 3768194003047572754ull}}, {{1055173569205591424ull, 8261645999711000249ull, 15794216113318941395ull, 2355121251904732971ull}}, {{5930652979934377184ull, 5715371481211362407ull, 15131084123221288840ull, 2943901564880916214ull}}, {{2801630206490583576ull, 7144214351514203009ull, 9690483117171835242ull, 3679876956101145268ull}}, {{8113723776540617374ull, 18153639976247529569ull, 12113103896464794052ull, 4599846195126431585ull}}, {{16600292406406355619ull, 2122652948299930172ull, 653160907649414427ull, 2874903871954019741ull}}, {{2303621434298392908ull, 16488374240657076428ull, 5428137152989155937ull, 3593629839942524676ull}}, {{2879526792872991135ull, 6775409745539181823ull, 6785171441236444922ull, 4492037299928155845ull}}, {{8717233273186701315ull, 8846317109389376543ull, 6546575159986472028ull, 2807523312455097403ull}}, {{6284855573055988740ull, 11057896386736720679ull, 3571532931555702131ull, 3509404140568871754ull}}, {{3244383447892598021ull, 9210684464993512945ull, 13687788201299403472ull, 4386755175711089692ull}}, {{13556954701001343523ull, 5756677790620945590ull, 17778239662666902978ull, 2741721984819431057ull}}, {{7722821339396903596ull, 16419219275130957796ull, 8387741523051465010ull, 3427152481024288822ull}}, {{9653526674246129495ull, 11300652057058921437ull, 1261304866959555455ull, 4283940601280361028ull}}, {{8339297180617524886ull, 13980436563302907754ull, 10011687578704497967ull, 2677462875800225642ull}}, {{1200749438917130300ull, 12863859685701246789ull, 3291237436525846651ull, 3346828594750282053ull}}, {{6112622817073800779ull, 11468138588699170582ull, 8725732814084696218ull, 4183535743437852566ull}}, {{17655447315953289199ull, 11779272636364369517ull, 841896990375547232ull, 2614709839648657854ull}}, {{8234251089659447786ull, 14724090795455461897ull, 10275743274824209848ull, 3268387299560822317ull}}, {{14904499880501697637ull, 18405113494319327371ull, 17456365111957650214ull, 4085484124451027896ull}}, {{7009469416099867071ull, 6891509915522191703ull, 10910228194973531384ull, 2553427577781892435ull}}, {{4150150751697445935ull, 8614387394402739629ull, 9026099225289526326ull, 3191784472227365544ull}}, {{9799374458049195323ull, 1544612206148648728ull, 11282624031611907908ull, 3989730590284206930ull}}, {{6124609036280747077ull, 10188754665697681263ull, 11663326038184830346ull, 2493581618927629331ull}}, {{3044075276923545942ull, 3512571295267325771ull, 9967471529303650029ull, 3116977023659536664ull}}, {{17640152151436596139ull, 9002400137511545117ull, 12459339411629562536ull, 3896221279574420830ull}}, {{13330938103861566539ull, 5626500085944715698ull, 3175401113841088681ull, 2435138299734013019ull}}, {{7440300592972182366ull, 11644811125858282527ull, 17804309447583524563ull, 3043922874667516273ull}}, {{4688689722787840053ull, 9944327888895465255ull, 8420328754197241992ull, 3804903593334395342ull}}, {{9847960104383481889ull, 6215204930559665784ull, 651019452945888341ull, 2378064745833997089ull}}, {{12309950130479352362ull, 12380692181626970134ull, 5425460334609748330ull, 2972580932292496361ull}}, {{6164065626244414644ull, 6252493190178936860ull, 11393511436689573317ull, 3715726165365620451ull}}, {{13075913053257534961ull, 6213651253075529489ull, 4815101638717289371ull, 2322328853353512782ull}}, {{2509833261289754989ull, 3155378047917023958ull, 15242249085251387522ull, 2902911066691890977ull}}, {{12360663613466969544ull, 13167594596751055755ull, 5217753301282070690ull, 3628638833364863722ull}}, {{10839143498406324026ull, 7236121209084043886ull, 15745563663457364171ull, 4535798541706079652ull}}, {{2162778668076564612ull, 2216732746463833477ull, 617605252806076799ull, 2834874088566299783ull}}, {{7315159353523093669ull, 16605973988361955558ull, 14607064621289759710ull, 3543592610707874728ull}}, {{18367321228758642894ull, 11534095448597668639ull, 18258830776612199638ull, 4429490763384843410ull}}, {{18397104795615233665ull, 2597123636946154995ull, 16023455253810012678ull, 2768431727115527131ull}}, {{18384694976091654177ull, 12469776583037469552ull, 15417633048835127943ull, 3460539658894408914ull}}, {{4534124646405016105ull, 10975534710369449037ull, 10048669274189134121ull, 4325674573618011143ull}}, {{5139670913216829018ull, 18388924240049375408ull, 13197947324009290681ull, 2703546608511256964ull}}, {{6424588641521036273ull, 9151097244779555548ull, 16497434155011613352ull, 3379433260639071205ull}}, {{8030735801901295341ull, 11438871555974444435ull, 6786734638482352978ull, 4224291575798839007ull}}, {{2713366866974615636ull, 11760980740911415676ull, 11159238176692552467ull, 2640182234874274379ull}}, {{3391708583718269545ull, 10089539907711881691ull, 9337361702438302680ull, 3300227793592842974ull}}, {{18074693784930000643ull, 12611924884639852113ull, 2448330091193102542ull, 4125284741991053718ull}}, {{4379154587940168546ull, 3270767034472519667ull, 15365264362277852801ull, 2578302963744408573ull}}, {{862257216497822778ull, 8700144811518037488ull, 5371522397565152289ull, 3222878704680510717ull}}, {{1077821520622278473ull, 15486867032824934764ull, 11326089015383828265ull, 4028598380850638396ull}}, {{9897010487243699854ull, 2761762867874502371ull, 16302177671469668474ull, 2517873988031648997ull}}, {{7759577090627236913ull, 12675575621697903772ull, 6542664034054921880ull, 3147342485039561247ull}}, {{9699471363284046141ull, 15844469527122379715ull, 3566644024141264446ull, 3934178106299451559ull}}, {{3756326592838834886ull, 5291107436024099418ull, 9146681542729372135ull, 2458861316437157224ull}}, {{13918780277903319416ull, 2002198276602736368ull, 11433351928411715169ull, 3073576645546446530ull}}, {{17398475347379149270ull, 7114433864180808364ull, 5068317873659868153ull, 3841970806933058163ull}}, {{1650675055257192486ull, 15975736211181474988ull, 861855661823723643ull, 2401231754333161352ull}}, {{2063343819071490607ull, 15357984245549455831ull, 1077319577279654554ull, 3001539692916451690ull}}, {{16414237829121526971ull, 9974108270082043980ull, 10570021508454344001ull, 3751924616145564612ull}}, {{1035526606346178549ull, 17763032714869747248ull, 15829635479638740808ull, 2344952885090977882ull}}, {{1294408257932723186ull, 3757046819877632444ull, 10563672312693650203ull, 2931191106363722353ull}}, {{1618010322415903982ull, 84622506419652651ull, 17816276409294450658ull, 3663988882954652941ull}}, {{15857570958302043690ull, 9329150169879341621ull, 8435287456335899610ull, 4579986103693316177ull}}, {{12216824858152471258ull, 10442404874601976417ull, 16801269706278407016ull, 2862491314808322610ull}}, {{1435973017408425361ull, 13053006093252470522ull, 11778215095993232962ull, 3578114143510403263ull}}, {{11018338308615307509ull, 7092885579710812344ull, 10111082851564153299ull, 4472642679388004079ull}}, {{6886461442884567193ull, 2127210478105563763ull, 13236955809868677668ull, 2795401674617502549ull}}, {{3996390785178321087ull, 2659013097631954704ull, 2711136707053683373ull, 3494252093271878187ull}}, {{4995488481472901359ull, 7935452390467331284ull, 17223978939099267928ull, 4367815116589847733ull}}, {{12345552337775339158ull, 4959657744042082052ull, 13070829846150736407ull, 2729884447868654833ull}}, {{15431940422219173947ull, 1587886161625214661ull, 2503479252406256797ull, 3412355559835818542ull}}, {{5454867472491803722ull, 6596543720458906231ull, 12352721102362596804ull, 4265444449794773177ull}}, {{10326821197948459182ull, 13346211862141592202ull, 802921661335541146ull, 2665902781121733236ull}}, {{3685154460580798170ull, 7459392790822214445ull, 1003652076669426433ull, 3332378476402166545ull}}, {{9218129094153385616ull, 13935927006955155960ull, 5866251114264170945ull, 4165473095502708181ull}}, {{5761330683845866010ull, 1792425351705890619ull, 5972249955628800793ull, 2603420684689192613ull}}, {{2589977336379944609ull, 6852217708059751178ull, 12076998462963388895ull, 3254275855861490766ull}}, {{12460843707329706569ull, 3953586116647301068ull, 5872876041849460311ull, 4067844819826863458ull}}, {{17011399353935842414ull, 9388520350545645023ull, 8282233544583300598ull, 2542403012391789661ull}}, {{16652563173992415113ull, 2512278401327280471ull, 14964477949156513652ull, 3178003765489737076ull}}, {{16204017949063130987ull, 3140348001659100589ull, 258853362736090449ull, 3972504706862171346ull}}, {{12433354227378150819ull, 13491932547105407628ull, 4773469370137444434ull, 2482815441788857091ull}}, {{15541692784222688524ull, 7641543647026983727ull, 1355150694244417639ull, 3103519302236071364ull}}, {{14815429961850972750ull, 4940243540356341755ull, 1693938367805522049ull, 3879399127795089205ull}}, {{6953800716943164017ull, 14616867258791183357ull, 3364554489092145232ull, 2424624454871930753ull}}, {{13303936914606342925ull, 18271084073488979196ull, 8817379129792569444ull, 3030780568589913441ull}}, {{16629921143257928657ull, 4392111018151672379ull, 15633409930668099710ull, 3788475710737391801ull}}, {{8087857705322511459ull, 16580127441626958949ull, 2853352179026480462ull, 2367797319210869876ull}}, {{14721508150080527227ull, 11501787265178922878ull, 3566690223783100578ull, 2959746649013587345ull}}, {{9178513150745883226ull, 5153862044618877790ull, 9070048798156263627ull, 3699683311266984181ull}}, {{1124884700788789112ull, 915320768673104667ull, 7974623508061358719ull, 2312302069541865113ull}}, {{15241163931268150102ull, 14979209016123544545ull, 14579965403504086302ull, 2890377586927331391ull}}, {{5216396858803023916ull, 9500639233299654874ull, 13613270735952719974ull, 3612971983659164239ull}}, {{15743868110358555702ull, 2652427004769792784ull, 12404902401513512064ull, 4516214979573955299ull}}, {{9839917568974097314ull, 1657766877981120490ull, 5447220991732251088ull, 2822634362233722062ull}}, {{3076524924362845835ull, 2072208597476400613ull, 16032398276520089668ull, 3528292952792152577ull}}, {{8457342173880945197ull, 2590260746845500766ull, 6205439790367948373ull, 4410366190990190722ull}}, {{674152840248202844ull, 3924755975992131931ull, 8490085887407355637ull, 2756478869368869201ull}}, {{14677749105592417267ull, 9517630988417552817ull, 15224293377686582450ull, 3445598586711086501ull}}, {{4512128326708357872ull, 2673666698667165214ull, 5195308666826064351ull, 4306998233388858127ull}}, {{16655138259474887382ull, 8588570714308060114ull, 10164596944407372075ull, 2691873895868036329ull}}, {{11595550787488833420ull, 6124027374457687239ull, 17317432198936602998ull, 3364842369835045411ull}}, {{9882752465933653870ull, 16878406254926884857ull, 17035104230243365843ull, 4206052962293806764ull}}, {{17705935337277003429ull, 8243160900115609083ull, 1423568107047327844ull, 2628783101433629228ull}}, {{17520733153168866382ull, 10303951125144511354ull, 1779460133809159805ull, 3285978876792036535ull}}, {{12677544404606307170ull, 17491624924858027097ull, 16059383222543613468ull, 4107473595990045668ull}}, {{1005936225237860125ull, 1708893541181491128ull, 813742477234982610ull, 2567170997493778543ull}}, {{1257420281547325157ull, 11359488963331639718ull, 14852236151825891974ull, 3208963746867223178ull}}, {{10795147388788932254ull, 4975989167309773839ull, 9341923152927589160ull, 4011204683584028973ull}}, {{13664496145634164515ull, 3109993229568608649ull, 8144544979793437177ull, 2507002927240018108ull}}, {{3245562126760541931ull, 8499177555388148716ull, 10180681224741796471ull, 3133753659050022635ull}}, {{4056952658450677414ull, 6012285925807797991ull, 8114165512499857685ull, 3917192073812528294ull}}, {{9453124439172755240ull, 6063521712843567696ull, 459667426885023149ull, 2448245046132830184ull}}, {{11816405548965944050ull, 12191088159481847524ull, 574584283606278936ull, 3060306307666037730ull}}, {{14770506936207430062ull, 15238860199352309405ull, 9941602391362624478ull, 3825382884582547162ull}}, {{11537409844343337741ull, 4912601606167805474ull, 10825187513029028203ull, 2390864302864091976ull}}, {{5198390268574396368ull, 1529065989282368939ull, 13531484391286285254ull, 2988580378580114970ull}}, {{1886301817290607556ull, 11134704523457736982ull, 7690983452253080759ull, 3735725473225143713ull}}, {{15013996691088793435ull, 13876719354802167469ull, 16336079703726645234ull, 2334828420765714820ull}}, {{4932437808578828081ull, 8122527156647933529ull, 1973355555948754927ull, 2918535525957143526ull}}, {{10777233279150923005ull, 5541472927382529007ull, 11690066481790719467ull, 3648169407446429407ull}}, {{8859855580511265853ull, 2315155140800773355ull, 10000897083811011430ull, 4560211759308036759ull}}, {{3231566728605847206ull, 15282030018282647059ull, 13168089705022963999ull, 2850132349567522974ull}}, {{17874516466039472719ull, 14490851504425920919ull, 7236740094423929191ull, 3562665436959403718ull}}, {{17731459564121952995ull, 13501878362105013245ull, 18269297154884687297ull, 4453331796199254647ull}}, {{13388005236789914574ull, 1521144948674551422ull, 18335839749444011417ull, 2783332372624534154ull}}, {{7511634509132617410ull, 6513117204270577182ull, 13696427649950238463ull, 3479165465780667693ull}}, {{166171099560995954ull, 3529710486910833574ull, 3285476507155634367ull, 4348956832225834617ull}}, {{13938914992507786183ull, 9123598081960352839ull, 13582637863040741239ull, 2718098020141146635ull}}, {{12811957722207344825ull, 6792811584023053145ull, 12366611310373538645ull, 3397622525176433294ull}}, {{2179889097477017319ull, 13102700498456204336ull, 6234892101112147498ull, 4247028156470541618ull}}, {{1362430685923135825ull, 12800873829962515614ull, 8508493581622480090ull, 2654392597794088511ull}}, {{10926410394258695589ull, 6777720250598368709ull, 6023930958600712209ull, 3317990747242610639ull}}, {{18269699011250757390ull, 13083836331675348790ull, 2918227679823502357ull, 4147488434053263299ull}}, {{6806875863604335465ull, 10483240716510786946ull, 17964793364385546637ull, 2592180271283289561ull}}, {{17731966866360195139ull, 17715736914065871586ull, 8620933650199769584ull, 3240225339104111952ull}}, {{12941586546095468115ull, 3697927068872787867ull, 10776167062749711981ull, 4050281673880139940ull}}, {{5782648582095973620ull, 4617047427259186369ull, 15958476451073345796ull, 2531426046175087462ull}}, {{11839996746047354929ull, 5771309284073982961ull, 10724723526986906437ull, 3164282557718859328ull}}, {{964937877277029950ull, 11825822623519866606ull, 13405904408733633046ull, 3955353197148574160ull}}, {{14438144228580307431ull, 2779453121272528724ull, 8378690255458520654ull, 2472095748217858850ull}}, {{18047680285725384288ull, 12697688438445436713ull, 1249990782468375009ull, 3090119685272323563ull}}, {{8724542301874566648ull, 2037052492774632180ull, 15397546533367632474ull, 3862649606590404453ull}}, {{14676210975526379963ull, 5884843826411533016ull, 11929309592568464248ull, 2414156004119002783ull}}, {{18345263719407974954ull, 7356054783014416270ull, 10299950972283192406ull, 3017695005148753479ull}}, {{13708207612405192884ull, 18418440515622796146ull, 8263252696926602603ull, 3772118756435941849ull}}, {{13179315776180633457ull, 9205682313050553639ull, 16693747981647596387ull, 2357574222772463655ull}}, {{11862458701798403917ull, 6895416872885804145ull, 16255498958632107580ull, 2946967778465579569ull}}, {{993015321965841184ull, 8619271091107255182ull, 6484315643007970763ull, 3683709723081974462ull}}, {{10464641189312077288ull, 6162402845456681073ull, 17328766590614739262ull, 4604637153852468077ull}}, {{18069615789388518065ull, 17686559833692589382ull, 13136322128347905990ull, 2877898221157792548ull}}, {{13363647699880871773ull, 12884827755260960920ull, 16420402660434882488ull, 3597372776447240685ull}}, {{16704559624851089717ull, 16106034694076201150ull, 6690445270261439398ull, 4496715970559050857ull}}, {{5828663747104543169ull, 5454585665370237815ull, 15710743339981869384ull, 2810447481599406785ull}}, {{2674143665453291057ull, 6818232081712797269ull, 5803371119695173018ull, 3513059351999258482ull}}, {{7954365600244001725ull, 17746162138995772394ull, 16477585936473742080ull, 4391324189999073102ull}}, {{9583164518579888983ull, 11091351336872357746ull, 5686805191868700896ull, 2744577618749420689ull}}, {{2755583611370085420ull, 13864189171090447183ull, 11720192508263264024ull, 3430722023436775861ull}}, {{17279537569494770487ull, 17330236463863058978ull, 815182580046916318ull, 4288402529295969827ull}}, {{15411396999361619459ull, 6219711771487023957ull, 16650390177025180363ull, 2680251580809981141ull}}, {{5429188193919860611ull, 3162953695931392043ull, 6977929665999311742ull, 3350314476012476427ull}}, {{2174799223972437860ull, 13177064156769015862ull, 4110726064071751773ull, 4187893095015595534ull}}, {{15194307570264937374ull, 10541508107194328865ull, 16404261845327008570ull, 2617433184384747208ull}}, {{5157826407549008006ull, 3953513097138135274ull, 2058583232949209097ull, 3271791480480934011ull}}, {{15670655046291035815ull, 9553577389850056996ull, 16408287096468675083ull, 4089739350601167513ull}}, {{570787367077121577ull, 3665142859442591671ull, 3337650407651840071ull, 2556087094125729696ull}}, {{14548542264128565683ull, 18416486629585403300ull, 4172063009564800088ull, 3195108867657162120ull}}, {{18185677830160707103ull, 4573864213272202509ull, 5215078761956000111ull, 3993886084571452650ull}}, {{13671891653064135892ull, 9776194160936208424ull, 7871110244649887973ull, 2496178802857157906ull}}, {{17089864566330169865ull, 16831928719597648434ull, 615515768957584158ull, 3120223503571447383ull}}, {{12138958671057936523ull, 11816538862642284735ull, 14604452766479143910ull, 3900279379464309228ull}}, {{14504378197052292183ull, 2773650770724040055ull, 18351155015904240752ull, 2437674612165193267ull}}, {{13518786727887977324ull, 3467063463405050069ull, 18327257751452913036ull, 3047093265206491584ull}}, {{3063425354577807943ull, 4333829329256312587ull, 4462328115606589679ull, 3808866581508114481ull}}, {{18055541911106987629ull, 9626172358426277222ull, 14318170118322588309ull, 2380541613442571550ull}}, {{13346055352028958728ull, 16644401466460234432ull, 8674340611048459578ull, 2975677016803214438ull}}, {{16682569190036198410ull, 11582129796220517232ull, 1619553726955798665ull, 3719596271004018048ull}}, {{10426605743772624006ull, 321302094996741414ull, 1012221079347374166ull, 2324747669377511280ull}}, {{3809885142861004200ull, 9624999655600702576ull, 1265276349184217707ull, 2905934586721889100ull}}, {{4762356428576255250ull, 7419563551073490316ull, 1581595436480272134ull, 3632418233402361375ull}}, {{5952945535720319062ull, 51082401987087087ull, 15812052350882503880ull, 4540522791752951718ull}}, {{10638119987466281270ull, 31926501241929429ull, 5270846700874177021ull, 2837826744845594824ull}}, {{17909336002760239491ull, 4651594144979799690ull, 6588558376092721276ull, 3547283431056993530ull}}, {{13163297966595523556ull, 5814492681224749613ull, 17459070006970677403ull, 4434104288821241912ull}}, {{10532904238335896175ull, 1328214916551774556ull, 10911918754356673377ull, 2771315180513276195ull}}, {{13166130297919870218ull, 6271954664117106099ull, 9028212424518453817ull, 3464143975641595244ull}}, {{11845976853972449868ull, 12451629348573770528ull, 11285265530648067271ull, 4330179969551994055ull}}, {{7403735533732781168ull, 14699797370499688436ull, 13970819984296123900ull, 2706362480969996284ull}}, {{9254669417165976460ull, 18374746713124610545ull, 17463524980370154875ull, 3382953101212495355ull}}, {{16180022789884858479ull, 18356747372978375277ull, 17217720207035305690ull, 4228691376515619194ull}}, {{12418357252891730501ull, 16084653126538872452ull, 15372761147824453960ull, 2642932110322261996ull}}, {{15522946566114663127ull, 1659072334464038949ull, 769207361071015835ull, 3303665137902827496ull}}, {{5568625152361165196ull, 15908898473362212399ull, 961509201338769793ull, 4129581422378534370ull}}, {{10397919747866810104ull, 3025532518210300893ull, 5212629269264119025ull, 2580988388986583981ull}}, {{17609085703260900534ull, 8393601666190264020ull, 11127472605007536685ull, 3226235486233229976ull}}, {{3564613055366574051ull, 15103688101165217930ull, 13909340756259420856ull, 4032794357791537470ull}}, {{6839569178031496686ull, 9439805063228261206ull, 4081651954234750131ull, 2520496473619710919ull}}, {{17772833509394146665ull, 7188070310607938603ull, 490378924366049760ull, 3150620592024638649ull}}, {{17604355868315295428ull, 8985087888259923254ull, 5224659673884950104ull, 3938275740030798311ull}}, {{6391036399269671738ull, 5615679930162452034ull, 10182941323819175671ull, 2461422337519248944ull}}, {{17212167535941865481ull, 2407913894275677138ull, 12728676654773969589ull, 3076777921899061180ull}}, {{12291837383072556043ull, 7621578386271984327ull, 15910845818467461986ull, 3845972402373826475ull}}, {{14599927392061429383ull, 9375172509847378108ull, 7638435627328469789ull, 2403732751483641547ull}}, {{18249909240076786729ull, 16330651655736610539ull, 4936358515733199332ull, 3004665939354551934ull}}, {{18200700531668595507ull, 1966570495961211558ull, 15393820181521274974ull, 3755832424193189917ull}}, {{6763751813865484288ull, 15064164615257920936ull, 11926980622664490810ull, 2347395265120743698ull}}, {{8454689767331855360ull, 9606833732217625362ull, 5685353741475837705ull, 2934244081400929623ull}}, {{1344990172310043392ull, 16620228183699419607ull, 2495006158417409227ull, 3667805101751162029ull}}, {{15516295770669717951ull, 16163599211196886604ull, 7730443716449149438ull, 4584756377188952536ull}}, {{474312819813797912ull, 5490563488570666224ull, 4831527322780718399ull, 2865472735743095335ull}}, {{592891024767247390ull, 2251518342285944876ull, 1427723135048510095ull, 3581840919678869169ull}}, {{741113780959059237ull, 16649455983139594807ull, 6396339937238025522ull, 4477301149598586461ull}}, {{7380725140740493879ull, 15017596007889634658ull, 6303555469987459903ull, 2798313218499116538ull}}, {{2534389070841541ull, 14160308991434655419ull, 17102816374339100687ull, 3497891523123895672ull}}, {{13838226041620715638ull, 13088700220865931369ull, 2931776394214324243ull, 4372364403904869591ull}}, {{1731362248371865418ull, 5874594628827513154ull, 8749889274025034508ull, 2732727752440543494ull}}, {{11387574847319607580ull, 7343243286034391442ull, 1713989555676517327ull, 3415909690550679368ull}}, {{5011096522294733667ull, 4567368089115601399ull, 2142486944595646659ull, 4269887113188349210ull}}, {{10049464354075290398ull, 548762046483556922ull, 5950740358799667066ull, 2668679445742718256ull}}, {{3338458405739337190ull, 9909324594959221961ull, 7438425448499583832ull, 3335849307178397820ull}}, {{8784759025601559391ull, 12386655743699027451ull, 9298031810624479790ull, 4169811633972997275ull}}, {{3184631381787280668ull, 3129973821384504253ull, 3505426872426605917ull, 2606132271233123297ull}}, {{8592475245661488738ull, 8524153295158018220ull, 8993469608960645300ull, 3257665339041404121ull}}, {{10740594057076860923ull, 10655191618947522775ull, 15853523029628194529ull, 4072081673801755151ull}}, {{13630400313314119933ull, 18188709807910671494ull, 16825980921158703436ull, 2545051046126096969ull}}, {{7814628354787874108ull, 4289143186178787752ull, 7197418096166215584ull, 3181313807657621212ull}}, {{9768285443484842635ull, 5361428982723484690ull, 8996772620207769480ull, 3976642259572026515ull}}, {{10716864420605414551ull, 3350893114202177931ull, 3317139878416161973ull, 2485401412232516572ull}}, {{8784394507329380285ull, 8800302411180110318ull, 4146424848020202466ull, 3106751765290645715ull}}, {{1757121097306949548ull, 1777005977120362090ull, 571345041597865179ull, 3883439706613307144ull}}, {{5709886704244231371ull, 17251529800196083970ull, 357090650998665736ull, 2427149816633316965ull}}, {{16360730417160065022ull, 3117668176535553346ull, 5058049332175720075ull, 3033937270791646206ull}}, {{11227540984595305470ull, 17732143275951605395ull, 15545933702074425901ull, 3792421588489557757ull}}, {{4711370106158371967ull, 13388432556683447324ull, 12022051573010210140ull, 2370263492805973598ull}}, {{5889212632697964958ull, 16735540695854309155ull, 5804192429407986867ull, 2962829366007466998ull}}, {{2749829772445068294ull, 16307739851390498540ull, 16478612573614759392ull, 3703536707509333747ull}}, {{10942015644632943492ull, 10192337407119061587ull, 7993289849295530668ull, 2314710442193333592ull}}, {{9065833537363791461ull, 12740421758898826984ull, 9991612311619413335ull, 2893388052741666990ull}}, {{11332291921704739326ull, 11313841180196145826ull, 3266143352669490861ull, 3616735065927083738ull}}, {{4941992865276148349ull, 307243419963018571ull, 13306051227691639385ull, 4520918832408854672ull}}, {{782902531583898766ull, 11721242183545356367ull, 8316282017307274615ull, 2825574270255534170ull}}, {{14813686219762037170ull, 10039866711004307554ull, 1171980484779317461ull, 3531967837819417713ull}}, {{9293735737847770654ull, 17161519407182772347ull, 6076661624401534730ull, 4414959797274272141ull}}, {{3502741826941162707ull, 15337635647916620621ull, 6103756524464653158ull, 2759349873296420088ull}}, {{8990113302103841287ull, 9948672523040999968ull, 7629695655580816448ull, 3449187341620525110ull}}, {{11237641627629801609ull, 12435840653801249960ull, 313747532621244752ull, 4311484177025656388ull}}, {{7023526017268626006ull, 7772400408625781225ull, 9419464244743053778ull, 2694677610641035242ull}}, {{13391093540013170411ull, 492128473927450723ull, 2550958269074041415ull, 3368347013301294053ull}}, {{12127180906589075110ull, 14450218647691477116ull, 7800383854769939672ull, 4210433766626617566ull}}, {{16802860103472947752ull, 9031386654807173197ull, 263553890803824391ull, 2631521104141635979ull}}, {{7168517074059020978ull, 6677547300081578593ull, 14164500418786944201ull, 3289401380177044973ull}}, {{13572332361001164126ull, 12958620143529361145ull, 3870567468201516539ull, 4111751725221306217ull}}, {{1565178697984645723ull, 5793294580492156764ull, 13948319713694417597ull, 2569844828263316385ull}}, {{1956473372480807154ull, 11853304244042583859ull, 3600341586835858284ull, 3212306035329145482ull}}, {{16280649770883172654ull, 14816630305053229823ull, 13723799020399598663ull, 4015382544161431852ull}}, {{17092935134443064765ull, 16177922968299350495ull, 17800746424604524972ull, 2509614090100894907ull}}, {{16754482899626443052ull, 1775659636664636503ull, 17639247012328268312ull, 3137017612626118634ull}}, {{16331417606105665911ull, 2219574545830795629ull, 12825686728555559582ull, 3921272015782648293ull}}, {{12512979013029735146ull, 15222292146426410980ull, 10321897214560918690ull, 2450795009864155183ull}}, {{15641223766287168933ull, 9804493146178237917ull, 8290685499773760459ull, 3063493762330193979ull}}, {{5716471652576797454ull, 7643930414295409493ull, 5751670856289812670ull, 3829367202912742474ull}}, {{5878637792074192361ull, 165770490507243029ull, 8206480303608520823ull, 2393354501820464046ull}}, {{11959983258520128355ull, 14042271168416217498ull, 1034728342655875220ull, 2991693127275580058ull}}, {{5726607036295384636ull, 17552838960520271873ull, 10516782465174619833ull, 3739616409094475072ull}}, {{15108344443753085158ull, 4052995322684088064ull, 6572989040734137396ull, 2337260255684046920ull}}, {{438686480981804831ull, 5066244153355110081ull, 8216236300917671745ull, 2921575319605058650ull}}, {{5160044119654643942ull, 10944491210121275505ull, 1046923339292313873ull, 3651969149506323313ull}}, {{11061741167995692832ull, 18292300031078982285ull, 5920340192542780245ull, 4564961436882904141ull}}, {{9219431239211001972ull, 13738530528638057880ull, 6006055629552931605ull, 2853100898051815088ull}}, {{11524289049013752465ull, 3338105105515408638ull, 7507569536941164507ull, 3566376122564768860ull}}, {{5181989274412414773ull, 18007689437176424510ull, 9384461921176455633ull, 4457970153205961075ull}}, {{17073801351789922945ull, 4337276870594183462ull, 3559445691521590819ull, 2786231345753725672ull}}, {{12118879652882627874ull, 809910069815341424ull, 4449307114401988524ull, 3482789182192157090ull}}, {{15148599566103284842ull, 1012387587269176780ull, 14785005929857261463ull, 4353486477740196362ull}}, {{244502691959777218ull, 7550271269684317344ull, 13852314724588176318ull, 2720929048587622726ull}}, {{305628364949721523ull, 214467050250620872ull, 8092021368880444590ull, 3401161310734528408ull}}, {{382035456187151903ull, 9491455849668051898ull, 10115026711100555737ull, 4251451638418160510ull}}, {{4850458178544357844ull, 17461374952111002196ull, 1710205676010459431ull, 2657157274011350319ull}}, {{6063072723180447305ull, 17215032671711364841ull, 15972815150295238001ull, 3321446592514187898ull}}, {{12190526922402947035ull, 7683732784357042339ull, 10742646901014271694ull, 4151808240642734873ull}}, {{5313236317288147945ull, 190646971795763558ull, 18243369359202389569ull, 2594880150401709295ull}}, {{15864917433464960739ull, 4849994733172092351ull, 18192525680575599057ull, 3243600188002136619ull}}, {{15219460773403813020ull, 10674179434892503343ull, 18128971082292110917ull, 4054500235002670774ull}}, {{16429692011018464993ull, 8977205156021508541ull, 6718920908005181419ull, 2534062646876669234ull}}, {{6702056958490917530ull, 6609820426599497773ull, 17622023171861252582ull, 3167578308595836542ull}}, {{12989257216541034816ull, 17485647570104148024ull, 12804156927971789919ull, 3959472885744795678ull}}, {{8118285760338146760ull, 17846058758956174371ull, 3390912061554980795ull, 2474670553590497299ull}}, {{5536171181995295546ull, 17695887430267830060ull, 18073698132225889706ull, 3093338191988121623ull}}, {{6920213977494119432ull, 12896487250980011767ull, 17980436646854974229ull, 3866672739985152029ull}}, {{11242662763574906501ull, 10366147541076201306ull, 13543615913498052845ull, 2416670462490720018ull}}, {{4829956417613857319ull, 17569370444772639537ull, 7706147855017790248ull, 3020838078113400023ull}}, {{10649131540444709552ull, 3514968982256247805ull, 5020998800344849907ull, 3776047597641750029ull}}, {{8961550221991637422ull, 18337756678406012542ull, 5443967259429225143ull, 2360029748526093768ull}}, {{1978565740634770970ull, 18310509829580127774ull, 6804959074286531429ull, 2950037185657617210ull}}, {{11696579212648239520ull, 9053079231692996005ull, 17729570879712940095ull, 3687546482072021512ull}}, {{785665960528135688ull, 6704663021188857103ull, 3715219525931623503ull, 4609433102590026891ull}}, {{7408570252971166661ull, 11107943415884117545ull, 16169194493570737ull, 2880895689118766807ull}}, {{13872398834641346230ull, 49871214572983219ull, 13855269548399127134ull, 3601119611398458508ull}}, {{12728812524874294884ull, 9285711055071004832ull, 17319086935498908917ull, 4501399514248073135ull}}, {{7955507828046434303ull, 8109412418633071972ull, 17741958362327899929ull, 2813374696405045709ull}}, {{9944384785058042878ull, 14748451541718727869ull, 8342389897627711199ull, 3516718370506307137ull}}, {{17042166999749941502ull, 13823878408721021932ull, 15039673390462026903ull, 4395897963132883921ull}}, {{1427982337988937631ull, 15557453033091720564ull, 2482266841397684958ull, 2747436226958052451ull}}, {{1784977922486172038ull, 10223444254509874897ull, 16937891607029269910ull, 3434295283697565563ull}}, {{6842908421535102952ull, 3555933281282567813ull, 16560678490359199484ull, 4292869104621956954ull}}, {{6582660772673133297ull, 11445830337656380691ull, 14962110074901887581ull, 2683043190388723096ull}}, {{3616639947414028717ull, 472229866788312152ull, 255893519917807861ull, 3353803987985903871ull}}, {{4520799934267535896ull, 5201973351912778094ull, 14154924955179423538ull, 4192254984982379838ull}}, {{16660558014199373647ull, 7862919363372874212ull, 4235142078559751807ull, 2620159365613987399ull}}, {{2378953444039665443ull, 5216963185788704862ull, 682241579772301855ull, 3275199207017484249ull}}, {{12197063841904357612ull, 1909517963808493173ull, 5464487993142765223ull, 4093999008771855311ull}}, {{9929007910403917459ull, 8110977755021390089ull, 10332834023355310120ull, 2558749380482409569ull}}, {{17022945906432284728ull, 10138722193776737611ull, 17527728547621525554ull, 3198436725603011961ull}}, {{16666996364612968006ull, 3450030705366146206ull, 8074602629244743231ull, 3998045907003764952ull}}, {{5805186709455717100ull, 9073798218494923235ull, 5046626643277964519ull, 2498778691877353095ull}}, {{2644797368392258471ull, 6730561754691266140ull, 1696597285670067745ull, 3123473364846691369ull}}, {{3305996710490323089ull, 13024888211791470579ull, 6732432625514972585ull, 3904341706058364211ull}}, {{18207149008552309595ull, 1223026104728587255ull, 1901927381733163914ull, 2440213566286477632ull}}, {{18147250242262999089ull, 10752154667765509877ull, 2377409227166454892ull, 3050266957858097040ull}}, {{8849004747546585149ull, 13440193334706887347ull, 2971761533958068615ull, 3812833697322621300ull}}, {{3224784958002921766ull, 15317649861832886448ull, 11080722995578568692ull, 2383021060826638312ull}}, {{4030981197503652208ull, 700318253581556444ull, 13850903744473210866ull, 2978776326033297890ull}}, {{5038726496879565260ull, 10098769853831721363ull, 8090257643736737774ull, 3723470407541622363ull}}, {{843361051336034336ull, 1700045140217437948ull, 2750568018121767157ull, 2327169004713513977ull}}, {{1054201314170042919ull, 6736742443699185339ull, 8049896041079596850ull, 2908961255891892471ull}}, {{15152809697994717361ull, 17644300091478757481ull, 5450684032922108158ull, 3636201569864865589ull}}, {{5105954067211232989ull, 12832003077493671044ull, 11425041059580023102ull, 4545251962331081986ull}}, {{12414593328861796426ull, 3408315905006156498ull, 11752336680664902343ull, 2840782476456926241ull}}, {{6294869624222469725ull, 18095452936539859335ull, 855362795548964216ull, 3550978095571157802ull}}, {{3256901011850699252ull, 4172572096965272553ull, 10292575531290981079ull, 4438722619463947252ull}}, {{13564778178475156793ull, 9525386588244377201ull, 15656231743911638982ull, 2774201637164967032ull}}, {{3120914667811782279ull, 2683361198450695694ull, 1123545606179997112ull, 3467752046456208791ull}}, {{13124515371619503656ull, 3354201498063369617ull, 15239490063007160102ull, 4334690058070260988ull}}, {{1285293079621107929ull, 15931433991571769723ull, 301309252524699255ull, 2709181286293913118ull}}, {{15441674404808548624ull, 15302606471037324249ull, 9600008602510649877ull, 3386476607867391397ull}}, {{5467034950728522067ull, 5293200033514491600ull, 16611696771565700251ull, 4233095759834239246ull}}, {{3416896844205326292ull, 1002407011732863298ull, 5770624463801174753ull, 2645684849896399529ull}}, {{13494493092111433673ull, 5864694783093467026ull, 11824966598178856345ull, 3307106062370499411ull}}, {{7644744328284516283ull, 11942554497294221687ull, 10169522229296182527ull, 4133882577963124264ull}}, {{11695494232818904533ull, 14381625588449970410ull, 6355951393310114079ull, 2583676611226952665ull}}, {{5395995754168854858ull, 13365345967135075109ull, 12556625260065030503ull, 3229595764033690831ull}}, {{11356680711138456477ull, 12094996440491455982ull, 11084095556653900225ull, 4036994705042113539ull}}, {{2486239426034147394ull, 641843747666078133ull, 4621716713694993689ull, 2523121690651320962ull}}, {{7719485300970072147ull, 5413990703009985570ull, 15000517928973517919ull, 3153902113314151202ull}}, {{425984589357814375ull, 2155802360335094059ull, 9527275374362121591ull, 3942377641642689003ull}}, {{16407141432844491649ull, 8264905502850515642ull, 3648704099762632042ull, 2463986026026680627ull}}, {{11285554754200838753ull, 1107759841708368745ull, 18395938179985453765ull, 3079982532533350783ull}}, {{271885387468884729ull, 5996385820562848836ull, 18383236706554429302ull, 3849978165666688479ull}}, {{9393300404022828764ull, 17582799193133944234ull, 18407051969237600169ull, 2406236353541680299ull}}, {{2518253468173760147ull, 8143440936135266581ull, 18397128943119612308ull, 3007795441927100374ull}}, {{7759502853644588087ull, 10179301170169083226ull, 13773039142044739577ull, 3759744302408875468ull}}, {{9461375301955255459ull, 17891278277424146776ull, 17831521500632738043ull, 2349840189005547167ull}}, {{11826719127444069323ull, 17752411828352795566ull, 17677715857363534650ull, 2937300236256933959ull}}, {{5560026872450310846ull, 12967142748586218650ull, 17485458803277030409ull, 3671625295321167449ull}}, {{16173405627417664365ull, 2373870380450609600ull, 8021765448814124300ull, 4589531619151459312ull}}, {{10108378517136040228ull, 10707041024636406808ull, 5013603405508827687ull, 2868457261969662070ull}}, {{12635473146420050285ull, 8772115262368120606ull, 15490376293740810417ull, 3585571577462077587ull}}, {{6570969396170287049ull, 15576830096387538662ull, 14751284348748625117ull, 4481964471827596984ull}}, {{17941913927888593118ull, 12041361819455905615ull, 9219552717967890698ull, 2801227794892248115ull}}, {{17815706391433353493ull, 5828330237465106211ull, 6912754879032475469ull, 3501534743615310144ull}}, {{17657946970864303962ull, 11897098815258770668ull, 8640943598790594336ull, 4376918429519137680ull}}, {{1812844819935414168ull, 7435686759536731668ull, 5400589749244121460ull, 2735574018449461050ull}}, {{2266056024919267710ull, 9294608449420914585ull, 15974109223409927633ull, 3419467523061826312ull}}, {{7444256049576472542ull, 16229946580203531135ull, 1520892455552857925ull, 4274334403827282891ull}}, {{11570189058626377195ull, 12449559621840900911ull, 17091458849216393867ull, 2671459002392051806ull}}, {{9851050304855583589ull, 10950263508873738235ull, 12140951524665716526ull, 3339323752990064758ull}}, {{7702126862642091583ull, 4464457349237396986ull, 5952817368977369850ull, 4174154691237580948ull}}, {{9425515307578695143ull, 7401971861700761020ull, 12943882892465631964ull, 2608846682023488092ull}}, {{11781894134473368929ull, 9252464827125951275ull, 16179853615582039955ull, 3261058352529360115ull}}, {{10115681649664323257ull, 6953895015480051190ull, 15613131001050162040ull, 4076322940661700144ull}}, {{1710615012612814132ull, 4346184384675031994ull, 9758206875656351275ull, 2547701837913562590ull}}, {{11361640802620793473ull, 821044462416402088ull, 2974386557715663286ull, 3184627297391953238ull}}, {{14202051003275991841ull, 10249677614875278418ull, 12941355233999354915ull, 3980784121739941547ull}}, {{13487967895474882805ull, 4100205500083355059ull, 5782504012035902870ull, 2487990076087463467ull}}, {{12248273850916215602ull, 14348628911958969632ull, 2616443996617490683ull, 3109987595109329334ull}}, {{15310342313645269502ull, 13324100121521324136ull, 12493927032626639162ull, 3887484493886661667ull}}, {{9568963946028293439ull, 12939248594378215489ull, 5502861386177955524ull, 2429677808679163542ull}}, {{16572890950962754703ull, 16174060742972769361ull, 16101948769577220213ull, 3037097260848954427ull}}, {{6881055633421279666ull, 6382517873433797990ull, 15515749943544137363ull, 3796371576061193034ull}}, {{18135717826170463503ull, 1683230661682429791ull, 14309029733142473756ull, 2372732235038245646ull}}, {{18057961264285691475ull, 2104038327103037239ull, 8662915129573316387ull, 2965915293797807058ull}}, {{17960765561929726440ull, 16465105964160960261ull, 1605271875111869675ull, 3707394117247258823ull}}, {{13531321485419772977ull, 7984848218386906211ull, 7920823949586000403ull, 2317121323279536764ull}}, {{12302465838347328317ull, 5369374254556244860ull, 9901029936982500504ull, 2896401654099420955ull}}, {{15378082297934160396ull, 6711717818195306075ull, 7764601402800737726ull, 3620502067624276194ull}}, {{14610916853990312591ull, 17613019309598908402ull, 482379716646146349ull, 4525627584530345243ull}}, {{13743509052171333274ull, 13313980077713011703ull, 16442388387399699132ull, 2828517240331465776ull}}, {{12567700296786778688ull, 16642475097141264629ull, 2106241410540072299ull, 3535646550414332221ull}}, {{1874567315701309648ull, 16191407852999192883ull, 7244487781602478278ull, 4419558188017915276ull}}, {{17312505636809176194ull, 5507943889697107647ull, 13751176900356324732ull, 2762223867511197047ull}}, {{17028946027584082339ull, 6884929862121384559ull, 12577285107018018011ull, 3452779834388996309ull}}, {{16674496516052715019ull, 3994476309224342795ull, 1886548328490358802ull, 4315974792986245387ull}}, {{8115717313319252935ull, 7108233711692602151ull, 17319993769802331915ull, 2697484245616403366ull}}, {{5532960623221678265ull, 4273606121188364785ull, 12426620175398139086ull, 3371855307020504208ull}}, {{11527886797454485735ull, 14565379688340231789ull, 15533275219247673857ull, 4214819133775630260ull}}, {{9510772257622747537ull, 2185833277571563012ull, 484924975175020353ull, 2634261958609768913ull}}, {{11888465322028434421ull, 7343977615391841669ull, 5217842237396163345ull, 3292827448262211141ull}}, {{1025523597253379314ull, 13791658037667189991ull, 11133988815172592085ull, 4116034310327763926ull}}, {{7558481275924443927ull, 10925629282755687696ull, 2347056991055482149ull, 2572521443954852454ull}}, {{9448101594905554909ull, 18268722621871997524ull, 12157193275674128494ull, 3215651804943565567ull}}, {{11810126993631943636ull, 13612531240485221097ull, 10584805576165272714ull, 4019564756179456959ull}}, {{463800343378882917ull, 13119518043730651090ull, 13533032512744377302ull, 2512227972612160599ull}}, {{9803122466078379454ull, 7176025517808538054ull, 12304604622503083724ull, 3140284965765200749ull}}, {{3030531045743198509ull, 8970031897260672568ull, 1545697722846690943ull, 3925356207206500937ull}}, {{1894081903589499068ull, 12523798963429002211ull, 12495276122847651599ull, 2453347629504063085ull}}, {{16202660434769037547ull, 11043062685858864859ull, 1784037098277400787ull, 3066684536880078857ull}}, {{15641639525033909030ull, 9192142338896193170ull, 6841732391274138888ull, 3833355671100098571ull}}, {{14387710721573581048ull, 5745088961810120731ull, 1970239735332642853ull, 2395847294437561607ull}}, {{13372952383539588406ull, 11793047220690038818ull, 16297857724447967278ull, 2994809118046952008ull}}, {{7492818442569709699ull, 5517936989007772715ull, 1925578081850407482ull, 3743511397558690011ull}}, {{2377168517392374610ull, 8060396636557245851ull, 17344387365652362340ull, 2339694623474181256ull}}, {{16806518702022631975ull, 10075495795696557313ull, 3233740133355901309ull, 2924618279342726571ull}}, {{7173090322246126256ull, 17206055763048084546ull, 17877233221977040348ull, 3655772849178408213ull}}, {{18189734939662433628ull, 3060825630100554066ull, 8511483472189136724ull, 4569716061473010267ull}}, {{15980270355716408922ull, 11136388055667622099ull, 3013834160904516500ull, 2856072538420631417ull}}, {{15363651926218123248ull, 13920485069584527624ull, 8378978719558033529ull, 3570090673025789271ull}}, {{757820834063102444ull, 3565548281698495819ull, 5862037381020154008ull, 4462613341282236589ull}}, {{16614539085785296692ull, 2228467676061559886ull, 5969616372351290207ull, 2789133338301397868ull}}, {{11544801820376845056ull, 16620642650359113570ull, 7462020465439112758ull, 3486416672876747335ull}}, {{5207630238616280512ull, 11552431276094116155ull, 4715839563371503044ull, 4358020841095934169ull}}, {{948925889921481368ull, 16443641584413598405ull, 14476614773175659162ull, 2723763025684958855ull}}, {{5797843380829239614ull, 11331179943662222198ull, 13484082448042186049ull, 3404703782106198569ull}}, {{16470676262891325326ull, 328916874295614035ull, 3020045004770568850ull, 4255879727632748212ull}}, {{7988329655093384377ull, 4817259064862146676ull, 11110900164836381339ull, 2659924829770467632ull}}, {{9985412068866730471ull, 1409887812650295441ull, 13888625206045476674ull, 3324906037213084540ull}}, {{17093451104510800992ull, 10985731802667645109ull, 17360781507556845842ull, 4156132546516355675ull}}, {{12989249949532944572ull, 11477768395094666097ull, 8544645433009334699ull, 2597582841572722297ull}}, {{2401504381634017003ull, 9735524475440944718ull, 15292492809689056278ull, 3246978551965902871ull}}, {{12225252513897297062ull, 2946033557446405089ull, 14503929993683932444ull, 4058723189957378589ull}}, {{723253793544728808ull, 11064643010258778989ull, 11370799255266151729ull, 2536701993723361618ull}}, {{5515753260358298914ull, 18442489781250861640ull, 4990127032227913853ull, 3170877492154202023ull}}, {{6894691575447873642ull, 9218054171281413338ull, 1625972771857504413ull, 3963596865192752529ull}}, {{8920868253082308931ull, 8067126866264577288ull, 12545448028479410018ull, 2477248040745470330ull}}, {{11151085316352886163ull, 860536545975945802ull, 6458437998744486715ull, 3096560050931837913ull}}, {{4715484608586331896ull, 14910728737752095965ull, 12684733516857996297ull, 3870700063664797391ull}}, {{5253020889580151387ull, 2401676433453978122ull, 14845487475677329542ull, 2419187539790498369ull}}, {{15789648148829965042ull, 12225467578672248460ull, 4721801289314498215ull, 3023984424738122962ull}}, {{1290316112327904686ull, 10670148454912922672ull, 15125623648497898577ull, 3779980530922653702ull}}, {{806447570204940429ull, 18198057830389046430ull, 4841828761883798706ull, 2362487831826658564ull}}, {{10231431499610951344ull, 13524200251131532229ull, 6052285952354748383ull, 2953109789783323205ull}}, {{17400975392941077084ull, 12293564295487027382ull, 12177043458870823383ull, 3691387237229154006ull}}, {{6263923602160785274ull, 14601006712320473970ull, 2998966143366876710ull, 2307117023268221254ull}}, {{17053276539555757400ull, 9027886353545816654ull, 12972079716063371696ull, 2883896279085276567ull}}, {{12093223637589920942ull, 11284857941932270818ull, 11603413626651826716ull, 3604870348856595709ull}}, {{5893157510132625369ull, 14106072427415338523ull, 669208978032619683ull, 4506087936070744637ull}}, {{1377380434619196904ull, 6510452257920892625ull, 2724098620484081254ull, 2816304960044215398ull}}, {{6333411561701384034ull, 17361437359255891589ull, 12628495312459877375ull, 3520381200055269247ull}}, {{12528450470554117946ull, 17090110680642476582ull, 11173933122147458815ull, 4400476500069086559ull}}, {{3218595525668935812ull, 17598848203042629720ull, 13901237228983243615ull, 2750297812543179099ull}}, {{4023244407086169765ull, 17386874235375899246ull, 12764860517801666615ull, 3437872265678973874ull}}, {{14252427545712488015ull, 17121906775792486153ull, 6732703610397307461ull, 4297340332098717343ull}}, {{1990238188429223153ull, 13007034744083997798ull, 11125468784139399019ull, 2685837707561698339ull}}, {{11711169772391304750ull, 11647107411677609343ull, 9295149961746860870ull, 3357297134452122924ull}}, {{10027276197061743033ull, 5335512227742235871ull, 11618937452183576088ull, 4196621418065153655ull}}, {{13184576650804671252ull, 3334695142338897419ull, 14179364935255816911ull, 2622888386290721034ull}}, {{11869034795078451161ull, 18003426983205785486ull, 8500834132214995330ull, 3278610482863401293ull}}, {{5612921456993288143ull, 13280911692152456050ull, 15237728683696132067ull, 4098263103579251616ull}}, {{8119761929048192993ull, 5994726798381591079ull, 9523580427310082542ull, 2561414439737032260ull}}, {{5538016392882853338ull, 16716780534831764657ull, 11904475534137603177ull, 3201768049671290325ull}}, {{11534206509530954576ull, 7060917613257542109ull, 1045536362389840260ull, 4002210062089112907ull}}, {{9514722077670540562ull, 13636445545140739626ull, 16794361290989507826ull, 2501381288805695566ull}}, {{2670030560233399894ull, 7822184894571148725ull, 11769579576882108975ull, 3126726611007119458ull}}, {{7949224218719137772ull, 5166045099786548002ull, 5488602434247860411ull, 3908408263758899323ull}}, {{9579951155126849012ull, 922935178152898549ull, 1124533512191218805ull, 2442755164849312077ull}}, {{16586624962335949168ull, 5765354991118511090ull, 6017352908666411410ull, 3053443956061640096ull}}, {{11509909166065160652ull, 16430065775752914671ull, 7521691135833014262ull, 3816804945077050120ull}}, {{14111222256431807264ull, 5657105091418183765ull, 4701056959895633914ull, 2385503090673156325ull}}, {{3803969765257595368ull, 16294753401127505515ull, 10488007218296930296ull, 2981878863341445406ull}}, {{143276188144606306ull, 1921697677699830278ull, 3886636986016387063ull, 3727348579176806758ull}}, {{13924605672872542653ull, 8118590076203475779ull, 16264206171542405626ull, 2329592861985504223ull}}, {{12794071072663290412ull, 924865558399568916ull, 15718571696000619129ull, 2911991077481880279ull}}, {{15992588840829113015ull, 5767767966426849049ull, 15036528601573386007ull, 3639988846852350349ull}}, {{6155677995754227557ull, 2598023939606173408ull, 4960602696684568797ull, 4549986058565437937ull}}, {{3847298747346392223ull, 3929607971467552332ull, 14629591731496325258ull, 2843741286603398710ull}}, {{4809123434182990279ull, 14135382001189216223ull, 9063617627515630764ull, 3554676608254248388ull}}, {{1399718274301349945ull, 17669227501486520279ull, 11329522034394538455ull, 4443345760317810485ull}}, {{7792352949079425572ull, 17960796216070157030ull, 9386794280710280486ull, 2777091100198631553ull}}, {{517069149494506156ull, 13227623233232920480ull, 16345178869315238512ull, 3471363875248289441ull}}, {{646336436868132695ull, 16534529041541150600ull, 6596415531361884428ull, 4339204844060361802ull}}, {{403960273042582935ull, 1110708614108443317ull, 8734445725528565672ull, 2712003027537726126ull}}, {{5116636359730616572ull, 1388385767635554146ull, 1694685120055931282ull, 3390003784422157658ull}}, {{15619167486518046523ull, 10958854246399218490ull, 11341728436924689910ull, 4237504730527697072ull}}, {{14373665697501166981ull, 2237597885572123652ull, 7088580273077931194ull, 2648440456579810670ull}}, {{17967082121876458726ull, 12020369393819930373ull, 18084097378202189800ull, 3310550570724763337ull}}, {{8623794597063409696ull, 15025461742274912967ull, 8770063667470573538ull, 4138188213405954172ull}}, {{12307400650805712916ull, 14002599607349208508ull, 14704661829023884269ull, 2586367633378721357ull}}, {{15384250813507141145ull, 3668191453904346923ull, 4545769230997691625ull, 3232959541723401697ull}}, {{14618627498456538527ull, 9196925335807821558ull, 10293897557174502435ull, 4041199427154252121ull}}, {{4524956168107948676ull, 3442235325666194522ull, 17962901019302533782ull, 2525749641971407575ull}}, {{14879567246989711652ull, 13526166193937518960ull, 17841940255700779323ull, 3157187052464259469ull}}, {{152714985027587949ull, 12296021723994510797ull, 8467367264343810442ull, 3946483815580324337ull}}, {{2401289874855936421ull, 12296699595923957152ull, 16821319586283351286ull, 2466552384737702710ull}}, {{3001612343569920526ull, 6147502458050170632ull, 11803277445999413300ull, 3083190480922128388ull}}, {{3752015429462400657ull, 7684378072562713290ull, 14754096807499266625ull, 3853988101152660485ull}}, {{6956695661841388315ull, 16331951341420165566ull, 11527153513900735592ull, 2408742563220412803ull}}, {{17919241614156511201ull, 1968195103065655341ull, 9797255873948531587ull, 3010928204025516004ull}}, {{8563993962413475290ull, 16295301934114232889ull, 12246569842435664483ull, 3763660255031895005ull}}, {{16881711272576891816ull, 7878720699607701603ull, 9959949160735984254ull, 2352287659394934378ull}}, {{16490453072293726866ull, 625028837654851196ull, 3226564414065204510ull, 2940359574243667973ull}}, {{2166322266657606966ull, 10004658083923339804ull, 8644891536008893541ull, 3675449467804584966ull}}, {{2707902833322008708ull, 17117508623331562659ull, 1582742383156341118ull, 4594311834755731208ull}}, {{17833340335322113107ull, 6086756871154838757ull, 989213989472713199ull, 2871444896722332005ull}}, {{8456617363870477671ull, 2996760070516160543ull, 5848203505268279403ull, 3589306120902915006ull}}, {{5959085686410709185ull, 17581008143427364391ull, 16533626418440125061ull, 4486632651128643757ull}}, {{10641957581647775097ull, 13293973098855796696ull, 12639359520738772115ull, 2804145406955402348ull}}, {{13302446977059718871ull, 12005780355142357966ull, 15799199400923465144ull, 3505181758694252935ull}}, {{7404686684469872780ull, 15007225443927947458ull, 15137313232726943526ull, 4381477198367816169ull}}, {{9239615196221058392ull, 4767829884027579257ull, 2543291742813257848ull, 2738423248979885106ull}}, {{16161205013703710894ull, 5959787355034474071ull, 12402486715371348118ull, 3423029061224856382ull}}, {{15589820248702250713ull, 16673106230647868397ull, 6279736357359409339ull, 4278786326531070478ull}}, {{12049480664652600648ull, 8114848384941223796ull, 17759893278631794549ull, 2674241454081919048ull}}, {{15061850830815750810ull, 14755246499603917649ull, 3753122524580191570ull, 3342801817602398811ull}}, {{4992255483237524800ull, 9220686087650121254ull, 79717137297851559ull, 4178502272002998514ull}}, {{16955217732305616712ull, 12680457832422407639ull, 4661509229238545128ull, 2611563920001874071ull}}, {{16582336146954632986ull, 15850572290528009549ull, 1215200518120793506ull, 3264454900002342589ull}}, {{6892862128411127521ull, 10589843326305236129ull, 6130686666078379787ull, 4080568625002928236ull}}, {{15837253876325424461ull, 4312809069727078628ull, 13055051203153763175ull, 2550355390626830147ull}}, {{1349823271697228960ull, 779325318731460382ull, 11707127985514816065ull, 3187944238283537684ull}}, {{10910651126476312007ull, 5585842666841713381ull, 14633909981893520081ull, 3984930297854422105ull}}, {{9124999963261388957ull, 15020366712844540623ull, 2228664711042368194ull, 2490581436159013816ull}}, {{6794563935649348292ull, 9552086354200899971ull, 2785830888802960243ull, 3113226795198767270ull}}, {{3881518901134297461ull, 7328421924323737060ull, 12705660647858476112ull, 3891533493998459087ull}}, {{11649321350063711721ull, 4580263702702335662ull, 14858566932552629426ull, 2432208433749036929ull}}, {{5338279650724863843ull, 14948701665232695386ull, 4738150610408623070ull, 3040260542186296162ull}}, {{15896221600260855612ull, 9462505044686093424ull, 15146060299865554646ull, 3800325677732870202ull}}, {{9935138500163034758ull, 1302379634501420486ull, 14077973705843359558ull, 2375203548583043876ull}}, {{3195551088349017639ull, 10851346579981551416ull, 17597467132304199447ull, 2969004435728804845ull}}, {{3994438860436272048ull, 8952497206549551366ull, 8161775860098085597ull, 3711255544661006057ull}}, {{16331582343054833742ull, 7901153763307163555ull, 16630324958629773258ull, 2319534715413128785ull}}, {{15802791910391154274ull, 653070167279178636ull, 6952848143005052861ull, 2899418394266410982ull}}, {{1306745814279391226ull, 5428023727526361200ull, 17914432215611091884ull, 3624272992833013727ull}}, {{1633432267849239033ull, 6785029659407951500ull, 17781354251086476951ull, 4530341241041267159ull}}, {{10244267204260550204ull, 11158172564771051543ull, 18030875434570129950ull, 2831463275650791974ull}}, {{8193647986898299851ull, 4724343669109038621ull, 13315222256357886630ull, 3539329094563489968ull}}, {{14853746002050262717ull, 15128801623241074084ull, 16644027820447358287ull, 4424161368204362460ull}}, {{60219214426638390ull, 16373030042166753159ull, 1179145350924823121ull, 2765100855127726538ull}}, {{13910332073315461700ull, 6631229497426277736ull, 10697303725510804710ull, 3456376068909658172ull}}, {{17387915091644327125ull, 17512408908637622978ull, 13371629656888505887ull, 4320470086137072715ull}}, {{15479132950705092357ull, 17862784595539596217ull, 6051425526341622227ull, 2700293803835670447ull}}, {{5513858133099201734ull, 17716794725997107368ull, 2952595889499639880ull, 3375367254794588059ull}}, {{6892322666374002168ull, 3699249333786832594ull, 17525802917156713563ull, 4219209068493235073ull}}, {{8919387684911139259ull, 6187824403076419ull, 4036097795581864121ull, 2637005667808271921ull}}, {{6537548587711536170ull, 4619420798931233428ull, 9656808262904718055ull, 3296257084760339901ull}}, {{8171935734639420212ull, 1162589980236653881ull, 16682696347058285473ull, 4120321355950424876ull}}, {{16636674880218107393ull, 12255833783716378435ull, 1203313180056652612ull, 2575200847469015548ull}}, {{16184157581845246337ull, 15319792229645473044ull, 1504141475070815765ull, 3219001059336269435ull}}, {{1783452903597006305ull, 5314682231774677594ull, 15715234899120683419ull, 4023751324170336793ull}}, {{5726344083175516845ull, 1015833385645479544ull, 2904492784309345281ull, 2514844577606460496ull}}, {{7157930103969396056ull, 5881477750484237334ull, 3630615980386681601ull, 3143555722008075620ull}}, {{18170784666816520877ull, 11963533206532684571ull, 4538269975483352001ull, 3929444652510094525ull}}, {{9050897407546631597ull, 559679226441846001ull, 5142261743890788953ull, 2455902907818809078ull}}, {{15925307777860677400ull, 5311285051479695405ull, 15651199216718261999ull, 3069878634773511347ull}}, {{6071576667043683037ull, 2027420295922231353ull, 14952313002470439595ull, 3837348293466889184ull}}, {{15323950462970771659ull, 17408038749447252259ull, 9345195626544024746ull, 2398342683416805740ull}}, {{14543252060286076669ull, 12536676399954289516ull, 11681494533180030933ull, 2997928354271007175ull}}, {{18179065075357595836ull, 1835787444660698183ull, 9990182148047650763ull, 3747410442838758969ull}}, {{18279444699739579254ull, 17288268217408794028ull, 17773078888598251486ull, 2342131526774224355ull}}, {{4402561800964922451ull, 12386963234906216728ull, 17604662592320426454ull, 2927664408467780444ull}}, {{5503202251206153064ull, 6260332006777995102ull, 3559084166690981452ull, 3659580510584725556ull}}, {{16102374850862467138ull, 7825415008472493877ull, 4448855208363726815ull, 4574475638230906945ull}}, {{12369827291002735913ull, 11808413407936390529ull, 14309749551295799019ull, 2859047273894316840ull}}, {{1627226058471256179ull, 10148830741493100258ull, 17887186939119748774ull, 3573809092367896050ull}}, {{11257404609943846032ull, 3462666390011599514ull, 13135611637044910160ull, 4467261365459870063ull}}, {{11647563899642291674ull, 2164166493757249696ull, 15127286300794150706ull, 2792038353412418789ull}}, {{14559454874552864593ull, 11928580154051337928ull, 5074049820710524670ull, 3490047941765523487ull}}, {{18199318593191080741ull, 5687353155709396602ull, 1730876257460767934ull, 4362559927206904359ull}}, {{15986260139171813367ull, 17389653777600536588ull, 7999326688554061814ull, 2726599954504315224ull}}, {{1536081100255215093ull, 12513695185145894928ull, 9999158360692577268ull, 3408249943130394030ull}}, {{1920101375319018866ull, 15642118981432368660ull, 3275575914010945777ull, 4260312428912992538ull}}, {{10423435396429162599ull, 2858795335754148556ull, 6658920964684229015ull, 2662695268070620336ull}}, {{13029294245536453249ull, 17408552224974849407ull, 8323651205855286268ull, 3328369085088275420ull}}, {{11674931788493178657ull, 3313946207509010143ull, 10404564007319107836ull, 4160461356360344275ull}}, {{14214361395449318517ull, 11294588416547907147ull, 4197009495360748445ull, 2600288347725215172ull}}, {{13156265725884260242ull, 283177465402720222ull, 5246261869200935557ull, 3250360434656518965ull}}, {{7221960120500549494ull, 4965657850180788182ull, 11169513354928557350ull, 4062950543320648706ull}}, {{18348783130595007146ull, 16938594211645156325ull, 11592631865257736247ull, 2539344089575405441ull}}, {{9100920857961595221ull, 16561556746129057503ull, 655731776290006597ull, 3174180111969256802ull}}, {{6764465054024606122ull, 6866887877379158167ull, 10043036757217284055ull, 3967725139961571002ull}}, {{11145319686406460682ull, 11209333951003055710ull, 10888583991688190438ull, 2479828212475981876ull}}, {{4708277571153300045ull, 4788295401899043830ull, 13610729989610238048ull, 3099785265594977345ull}}, {{15108719000796400864ull, 5985369252373804787ull, 3178354431730633848ull, 3874731581993721682ull}}, {{7137106366284056588ull, 3740855782733627992ull, 6598157538259034059ull, 2421707238746076051ull}}, {{8921382957855070735ull, 64383709989647086ull, 3636010904396404670ull, 3027134048432595064ull}}, {{1928356660464062610ull, 9303851674341834666ull, 4545013630495505837ull, 3783917560540743830ull}}, {{5816908931217427036ull, 8120750305677340618ull, 16675691574341854860ull, 2364948475337964893ull}}, {{16494508200876559603ull, 10150937882096675772ull, 7009556412645154863ull, 2956185594172456117ull}}, {{2171391177386147887ull, 8076986334193456812ull, 13373631534233831483ull, 3695231992715570146ull}}, {{10580491522721118238ull, 2742273449657216555ull, 12970205727323532581ull, 2309519995447231341ull}}, {{8613928384974009893ull, 8039527830498908598ull, 2377699103872252014ull, 2886899994309039177ull}}, {{1544038444362736558ull, 826037751268859940ull, 7583809898267702922ull, 3608624992886298971ull}}, {{1930048055453420697ull, 10255919225940850733ull, 4868076354407240748ull, 4510781241107873714ull}}, {{3512123043872081888ull, 15633321553067807516ull, 7654233739931913371ull, 2819238275692421071ull}}, {{4390153804840102360ull, 14929965922907371491ull, 4956106156487503810ull, 3524047844615526339ull}}, {{876006237622740046ull, 9439085366779438556ull, 1583446677181991859ull, 4405059805769407924ull}}, {{9770875935368988337ull, 3593585345023455145ull, 10213026210093520720ull, 2753162378605879952ull}}, {{16825280937638623325ull, 4491981681279318931ull, 12766282762616900900ull, 3441452973257349940ull}}, {{16419915153620891252ull, 5614977101599148664ull, 15957853453271126125ull, 4301816216571687425ull}}, {{10262446971013057033ull, 5815203697713161867ull, 3056129380653371972ull, 2688635135357304641ull}}, {{8216372695338933387ull, 7269004622141452334ull, 8431847744244102869ull, 3360793919196630801ull}}, {{1047093832318890925ull, 13697941796104203322ull, 15151495698732516490ull, 4200992398995788501ull}}, {{5266119663626694732ull, 13172899640992514980ull, 11775527820921516758ull, 2625620249372367813ull}}, {{6582649579533368415ull, 7242752514385867917ull, 884351720869732236ull, 3282025311715459767ull}}, {{12839997992844098423ull, 9053440642982334896ull, 14940497706369329007ull, 4102531639644324708ull}}, {{8024998745527561515ull, 12575929429505041166ull, 114439029626054821ull, 2564082274777702943ull}}, {{807876395054676085ull, 1884853731599137746ull, 13978106842314732239ull, 3205102843472128678ull}}, {{10233217530673120914ull, 16191125219781085894ull, 8249261516038639490ull, 4006378554340160848ull}}, {{1784074938243312668ull, 14731139280790566588ull, 5155788447524149681ull, 2503986596462600530ull}}, {{2230093672804140834ull, 4578866045706044523ull, 15668107596259962910ull, 3129983245578250662ull}}, {{16622675146287339755ull, 14946954593987331461ull, 10361762458470177829ull, 3912479056972813328ull}}, {{12695014975643281299ull, 11647689630455776115ull, 6476101536543861143ull, 2445299410608008330ull}}, {{11257082701126713720ull, 9947926019642332240ull, 17318498957534602237ull, 3056624263260010412ull}}, {{14071353376408392149ull, 17046593542980303204ull, 3201379623208701180ull, 3820780329075013016ull}}, {{18017967897110020902ull, 1430748927507913694ull, 2000862264505438238ull, 2387987705671883135ull}}, {{13299087834532750319ull, 11011808196239667926ull, 16336135885913961509ull, 2984984632089853918ull}}, {{7400487756311162090ull, 18376446263726972812ull, 11196797820537676078ull, 3731230790112317398ull}}, {{13848676884549252115ull, 6873592896401970103ull, 2386312619408659645ull, 2332019243820198374ull}}, {{12699160087259177239ull, 13203677138929850533ull, 12206262811115600364ull, 2915024054775247967ull}}, {{2038892053791807837ull, 16504596423662313167ull, 10646142495467112551ull, 3643780068469059959ull}}, {{16383673122521923508ull, 16019059511150503554ull, 8695992100906502785ull, 4554725085586324949ull}}, {{14851481720003590097ull, 3094383166827982865ull, 7740838072280258193ull, 2846703178491453093ull}}, {{4729294094722323909ull, 8479664976962366486ull, 14287733608777710645ull, 3558378973114316366ull}}, {{15134989655257680694ull, 15211267239630346011ull, 8636294974117362498ull, 4447973716392895458ull}}, {{7153525525322356482ull, 14118728043196354161ull, 10009370377250739465ull, 2779983572745559661ull}}, {{13553592925080333506ull, 3813351998713278989ull, 17123398989990812236ull, 3474979465931949576ull}}, {{3106933101068253171ull, 4766689998391598737ull, 2957504663778963679ull, 4343724332414936971ull}}, {{13471048234236127992ull, 9896710276635831066ull, 17989341479357709963ull, 2714827707759335606ull}}, {{7615438255940384182ull, 7759201827367400929ull, 13263304812342361646ull, 3393534634699169508ull}}, {{14130983838352868131ull, 475630247354475353ull, 16579131015427952058ull, 4241918293373961885ull}}, {{1914335871329460726ull, 4908954923023935000ull, 12667799893856163988ull, 2651198933358726178ull}}, {{2392919839161825907ull, 6136193653779918750ull, 6611377830465429177ull, 3313998666698407723ull}}, {{12214521835807058192ull, 12281928085652286341ull, 3652536269654398567ull, 4142498333373009654ull}}, {{9939919156593105322ull, 14593734081173760819ull, 16117893223816162816ull, 2589061458358131033ull}}, {{7813212927313993749ull, 18242167601467201024ull, 6312308474488039808ull, 3236326822947663792ull}}, {{9766516159142492186ull, 4355965428124449664ull, 7890385593110049761ull, 4045408528684579740ull}}, {{6104072599464057616ull, 14251693438646250800ull, 14154863032548556908ull, 2528380330427862337ull}}, {{7630090749330072020ull, 17814616798307813500ull, 3858520735403532423ull, 3160475413034827922ull}}, {{9537613436662590025ull, 17656584979457378971ull, 14046522956109191337ull, 3950594266293534902ull}}, {{3655165388700424814ull, 4117836584519780001ull, 4167390829140856682ull, 2469121416433459314ull}}, {{9180642754302918921ull, 14370667767504500809ull, 14432610573280846660ull, 3086401770541824142ull}}, {{16087489461306036555ull, 17963334709380626011ull, 8817391179746282517ull, 3858002213177280178ull}}, {{7748837904102578895ull, 13532927202576585209ull, 10122555505768814477ull, 2411251383235800111ull}}, {{14297733398555611523ull, 3081100947938567799ull, 8041508363783630193ull, 3014064229044750139ull}}, {{13260480729767126500ull, 8463062203350597653ull, 5440199436302149837ull, 3767580286305937674ull}}, {{10593643465318148015ull, 7595256886307817485ull, 8011810666116231552ull, 2354737678941211046ull}}, {{17853740350075072922ull, 9494071107884771856ull, 791391295790513632ull, 2943422098676513808ull}}, {{3870431363884289536ull, 11867588884855964821ull, 989239119738142040ull, 3679277623345642260ull}}, {{9449725223282749824ull, 14834486106069956026ull, 1236548899672677550ull, 4599097029182052825ull}}, {{10517764282979106544ull, 4659867797866334612ull, 12302058108363893229ull, 2874435643238783015ull}}, {{13147205353723883180ull, 10436520765760306169ull, 10765886617027478632ull, 3593044554048478769ull}}, {{2598948636872690263ull, 13045650957200382712ull, 18069044289711736194ull, 4491305692560598461ull}}, {{1624342898045431415ull, 12765217866677627099ull, 13598995690283529073ull, 2807066057850374038ull}}, {{15865486677838952980ull, 2121464278064870161ull, 7775372575999635534ull, 3508832572312967548ull}}, {{5996800292016527513ull, 11875202384435863510ull, 9719215719999544417ull, 4386040715391209435ull}}, {{17583058237792493408ull, 504472462631332837ull, 3768666815786021309ull, 2741275447119505897ull}}, {{8143764741958453048ull, 5242276596716553951ull, 9322519538159914540ull, 3426594308899382371ull}}, {{5568019909020678406ull, 6552845745895692439ull, 7041463404272505271ull, 4283242886124227964ull}}, {{10397541470779005860ull, 11013057618825889630ull, 13624286664525091602ull, 2677026803827642477ull}}, {{3773554801618981517ull, 4542949986677586230ull, 3195300275374200791ull, 3346283504784553097ull}}, {{13940315538878502704ull, 1067001464919594883ull, 8605811362645138893ull, 4182854380980691371ull}}, {{6406854202585370238ull, 2972718924788440754ull, 3072789092439517856ull, 2614283988112932107ull}}, {{17231939790086488605ull, 3715898655985550942ull, 17676044420831561032ull, 3267854985141165133ull}}, {{12316552700753334949ull, 4644873319981938678ull, 8259997470757287578ull, 4084818731426456417ull}}, {{3086159419543446439ull, 7514731843416099578ull, 16691713465291774496ull, 2553011707141535260ull}}, {{13081071311284083857ull, 9393414804270124472ull, 2417897757905166504ull, 3191264633926919076ull}}, {{16351339139105104821ull, 11741768505337655590ull, 3022372197381458130ull, 3989080792408648845ull}}, {{5607900943513302609ull, 11950291334263422648ull, 4194825632577105283ull, 2493175495255405528ull}}, {{7009876179391628261ull, 10326178149401890406ull, 5243532040721381604ull, 3116469369069256910ull}}, {{17985717261094311134ull, 12907722686752363007ull, 15777787087756502813ull, 3895586711336571137ull}}, {{18158602315825026315ull, 10373169688433920831ull, 2943587902206732402ull, 2434741694585356961ull}}, {{18086566876353894990ull, 3743090073687625231ull, 8291170896185803407ull, 3043427118231696201ull}}, {{17996522577014980833ull, 67176573682143635ull, 14975649638659642163ull, 3804283897789620251ull}}, {{8941983601420669069ull, 16182886423047197436ull, 7053938014948582399ull, 2377677436118512657ull}}, {{11177479501775836336ull, 15616922010381608891ull, 13429108537113115903ull, 2972096795148140821ull}}, {{9360163358792407516ull, 14909466494549623210ull, 2951327616109231167ull, 3715120993935176027ull}}, {{10461788117672642602ull, 16235945586734596362ull, 17985480824564127143ull, 2321950621209485016ull}}, {{3853863110236027444ull, 15683245964990857549ull, 4035106956995607313ull, 2902438276511856271ull}}, {{9429014906222422209ull, 5768999400956408224ull, 432197677817121238ull, 3628047845639820339ull}}, {{11786268632778027761ull, 16434621288050286088ull, 14375305152553565259ull, 4535059807049775423ull}}, {{7366417895486267351ull, 7965795295817734853ull, 15902094747987060143ull, 2834412379406109639ull}}, {{13819708387785222092ull, 5345558101344780662ull, 15265932416556437275ull, 3543015474257637049ull}}, {{8051263447876751807ull, 2070261608253587924ull, 5247357465413382882ull, 4428769342822046312ull}}, {{14255411691777745688ull, 5905599523585880356ull, 3279598415883364301ull, 2767980839263778945ull}}, {{17819264614722182110ull, 11993685422909738349ull, 8711184038281593280ull, 3459976049079723681ull}}, {{8439022713120563925ull, 14992106778637172937ull, 15500666066279379504ull, 4324970061349654601ull}}, {{16803604241768822213ull, 9370066736648233085ull, 2770387263783530334ull, 2703106288343534126ull}}, {{7169447246928864054ull, 2489211383955515549ull, 12686356116584188726ull, 3378882860429417657ull}}, {{13573495077088467972ull, 12334886266799170244ull, 2022887090448072195ull, 4223603575536772072ull}}, {{17706806460035068291ull, 5403460907535787450ull, 1264304431530045122ull, 2639752234710482545ull}}, {{12910136038189059555ull, 15977698171274510121ull, 6192066557839944306ull, 3299690293388103181ull}}, {{2302611992454160732ull, 10748750677238361844ull, 12351769215727318287ull, 4124612866735128976ull}}, {{10662504532138626266ull, 13635498200915058008ull, 7719855759829573929ull, 2577883041709455610ull}}, {{13328130665173282832ull, 3209314695861658798ull, 426447662932191604ull, 3222353802136819513ull}}, {{7436791294611827732ull, 4011643369827073498ull, 5144745597092627409ull, 4027942252671024391ull}}, {{9259680577559780236ull, 14036492152210390696ull, 10132995025823973986ull, 2517463907919390244ull}}, {{11574600721949725295ull, 8322243153408212562ull, 12666243782279967483ull, 3146829884899237805ull}}, {{5244878865582380811ull, 5791117923332877799ull, 1997746672567795642ull, 3933537356124047257ull}}, {{10195578318630069863ull, 8231134720510436528ull, 12777806716423342036ull, 2458460847577529535ull}}, {{12744472898287587329ull, 10288918400638045660ull, 11360572377101789641ull, 3073076059471911919ull}}, {{15930591122859484161ull, 17472834019224944979ull, 9589029452949849147ull, 3841345074339889899ull}}, {{7650776442573483649ull, 8614678252801896660ull, 3687300398879961765ull, 2400840671462431187ull}}, {{9563470553216854561ull, 15380033834429758729ull, 18444183553882115918ull, 3001050839328038983ull}}, {{16566024209948456105ull, 10001670256182422603ull, 18443543423925256994ull, 3751313549160048729ull}}, {{8047922122004091114ull, 10862729928541402031ull, 4609685612312203765ull, 2344570968225030456ull}}, {{5448216634077725988ull, 18190098429104140443ull, 5762107015390254706ull, 2930713710281288070ull}}, {{2198584774169769581ull, 13514250999525399746ull, 16426005806092594191ull, 3663392137851610087ull}}, {{11971603004566987784ull, 12281127730979361778ull, 15920821239188354835ull, 4579240172314512609ull}}, {{12093937896281755269ull, 5369861822648407159ull, 3032984246851639916ull, 2862025107696570381ull}}, {{10505736351924806182ull, 6712327278310508949ull, 8402916326991937799ull, 3577531384620712976ull}}, {{17743856458333395632ull, 3778723079460748282ull, 10503645408739922249ull, 4471914230775891220ull}}, {{15701596304885760174ull, 13890916970731437436ull, 15788150417317227213ull, 2794946394234932012ull}}, {{1180251307397648602ull, 3528588158132133084ull, 1288443947936982401ull, 3493682992793665016ull}}, {{1475314134247060752ull, 9022421216092554259ull, 1610554934921228001ull, 4367103740992081270ull}}, {{17062972398400270634ull, 17168228306126316171ull, 14841654889607931212ull, 2729439838120050793ull}}, {{16717029479572950388ull, 3013541308948343598ull, 4717010556727750304ull, 3411799797650063492ull}}, {{11672914812611412177ull, 3766926636185429498ull, 5896263195909687880ull, 4264749747062579365ull}}, {{11907257776309520515ull, 2354329147615893436ull, 5991007506657248877ull, 2665468591914112103ull}}, {{14884072220386900644ull, 7554597452947254699ull, 2877073364894173192ull, 3331835739892640129ull}}, {{13993404257056237901ull, 9443246816184068374ull, 8208027724545104394ull, 4164794674865800161ull}}, {{4134191642232760784ull, 10513715278542430638ull, 16659232373909160006ull, 2602996671791125100ull}}, {{14391111589645726788ull, 3918772061323262489ull, 2377296393676898392ull, 3253745839738906376ull}}, {{4153831431774994773ull, 4898465076654078112ull, 2971620492096122990ull, 4067182299673632970ull}}, {{2596144644859371733ull, 16896598728190962532ull, 6468948825987464772ull, 2541988937296020606ull}}, {{3245180806074214666ull, 2674004336529151549ull, 17309558069339106774ull, 3177486171620025757ull}}, {{8668162026020156237ull, 12565877457516215244ull, 7801889531391719755ull, 3971857714525032197ull}}, {{14640973303117373456ull, 5547830401733940575ull, 7182023966333518799ull, 2482411071578145123ull}}, {{13689530610469328916ull, 2323101983740037815ull, 4365843939489510595ull, 3103013839472681404ull}}, {{12500227244659273241ull, 16738935534957210981ull, 5457304924361888243ull, 3878767299340851755ull}}, {{10118485037125739728ull, 8155991700134562911ull, 1104972568512486200ull, 2424229562088032347ull}}, {{8036420277979786756ull, 10194989625168203639ull, 15216273765922771462ull, 3030286952610040433ull}}, {{5433839329047345540ull, 3520364994605478741ull, 5185284152121300616ull, 3787858690762550542ull}}, {{5701992589868284915ull, 2200228121628424213ull, 17075860650357976597ull, 2367411681726594088ull}}, {{11739176755762744048ull, 7361971170462918170ull, 2898081739237919130ull, 2959264602158242611ull}}, {{5450598907848654251ull, 18425835999933423521ull, 17457660229329562624ull, 3699080752697803263ull}}, {{14935839363473878667ull, 11516147499958389700ull, 17828566670972058496ull, 2311925470436127039ull}}, {{223055130632796718ull, 14395184374947987126ull, 17674022320287685216ull, 2889906838045158799ull}}, {{9502190950145771705ull, 17993980468684983907ull, 17480841881932218616ull, 3612383547556448499ull}}, {{7266052669254826728ull, 4045731512146678268ull, 17239366333987885367ull, 4515479434445560624ull}}, {{13764654955139042513ull, 9446111222732755773ull, 10774603958742428354ull, 2822174646528475390ull}}, {{3370760638641639429ull, 2584266991561168909ull, 4244882911573259635ull, 3527718308160594238ull}}, {{8825136816729437190ull, 17065391794733624848ull, 14529475676321350351ull, 4409647885200742797ull}}, {{5515710510455898244ull, 17583398899349597386ull, 11386765306914537921ull, 2756029928250464248ull}}, {{16118010174924648613ull, 8144190568904833020ull, 14233456633643172402ull, 3445037410313080310ull}}, {{1700768644946259150ull, 956866174276265468ull, 8568448755199189695ull, 4306296762891350388ull}}, {{10286352439946187777ull, 7515570386563747773ull, 14578652508854269367ull, 2691435476807093992ull}}, {{17469626568360122625ull, 4782776964777296812ull, 18223315636067836709ull, 3364294346008867490ull}}, {{3390289136740601665ull, 10590157224399008920ull, 13555772508230020078ull, 4205367932511084363ull}}, {{2118930710462876041ull, 2007162246821992671ull, 6166514808430068597ull, 2628354957819427727ull}}, {{16483721443360758763ull, 7120638826954878742ull, 3096457492110197842ull, 3285443697274284659ull}}, {{11381279767346172646ull, 18124170570548374236ull, 17705629920419911014ull, 4106804621592855823ull}}, {{16336671891446133712ull, 6715920588165345993ull, 17983547727903526240ull, 2566752888495534889ull}}, {{6585781809025503428ull, 8394900735206682492ull, 8644376604597244088ull, 3208441110619418612ull}}, {{8232227261281879284ull, 10493625919008353115ull, 10805470755746555110ull, 4010551388274273265ull}}, {{2839299029087480601ull, 1946830180952832793ull, 18282634268410066704ull, 2506594617671420790ull}}, {{8160809804786738655ull, 2433537726191040991ull, 13629920798657807572ull, 3133243272089275988ull}}, {{5589326237556035415ull, 3041922157738801239ull, 17037400998322259465ull, 3916554090111594985ull}}, {{10410857926113603990ull, 13430416394655220534ull, 3730846596310330309ull, 2447846306319746866ull}}, {{3790200370787229180ull, 2952962438036861956ull, 13886930282242688695ull, 3059807882899683582ull}}, {{4737750463484036475ull, 17526261102828241157ull, 8135290815948585060ull, 3824759853624604478ull}}, {{5266937048891216749ull, 1730541152412874915ull, 472870741540477759ull, 2390474908515377799ull}}, {{1971985292686633032ull, 15998234495798257356ull, 14426146482207760910ull, 2988093635644222248ull}}, {{2464981615858291290ull, 10774421082893045887ull, 18032683102759701138ull, 3735117044555277810ull}}, {{8458142537552513912ull, 11345699195235541583ull, 15882112957652201115ull, 2334448152847048631ull}}, {{5960992153513254486ull, 9570437975617039075ull, 15240955178637863490ull, 2918060191058810789ull}}, {{2839554173464180204ull, 2739675432666523036ull, 5216135918015165651ull, 3647575238823513487ull}}, {{3549442716830225254ull, 17259652346115317507ull, 1908483879091569159ull, 4559469048529391859ull}}, {{18359302762514748448ull, 17704811743963155297ull, 17333703488928088388ull, 2849668155330869911ull}}, {{9114070397861271848ull, 3684270606244392506ull, 17055443342732722582ull, 3562085194163587389ull}}, {{2169215960471814002ull, 13828710294660266441ull, 7484246123133739515ull, 4452606492704484237ull}}, {{12884975021363353511ull, 6337100924948972573ull, 6983496836172281149ull, 2782879057940302648ull}}, {{2271160721422028177ull, 12533062174613603621ull, 8729371045215351436ull, 3478598822425378310ull}}, {{7450636920204923125ull, 15666327718267004526ull, 1688341769664413487ull, 4348248528031722888ull}}, {{44962056700689050ull, 16708983851557959685ull, 1055213606040258429ull, 2717655330019826805ull}}, {{4667888589303249216ull, 7051171759165285894ull, 5930703025977710941ull, 3397069162524783506ull}}, {{15058232773483837328ull, 13425650717383995271ull, 16636750819326914484ull, 4246336453155979382ull}}, {{16328924511068480186ull, 17614403735219772852ull, 5786283243651933648ull, 2653960283222487114ull}}, {{1964411565126048616ull, 3571260595315164450ull, 16456226091419692869ull, 3317450354028108892ull}}, {{11678886493262336578ull, 9075761762571343466ull, 2123538540565064470ull, 4146812942535136116ull}}, {{11910990076716348266ull, 1060665083179701762ull, 10550583624707941102ull, 2591758089084460072ull}}, {{5665365559040659524ull, 10549203390829403011ull, 13188229530884926377ull, 3239697611355575090ull}}, {{2470020930373436501ull, 17798190256964141668ull, 7261914876751382163ull, 4049622014194468863ull}}, {{10767135118338173621ull, 8818025901388894590ull, 11456225825610695708ull, 2531013758871543039ull}}, {{4235546861067941218ull, 11022532376736118238ull, 9708596263585981731ull, 3163767198589428799ull}}, {{14517805613189702331ull, 9166479452492759893ull, 7524059311055089260ull, 3954708998236785999ull}}, {{11379471517457257909ull, 14952421694662750741ull, 11620066097050512643ull, 2471693123897991249ull}}, {{389281341539408674ull, 14078841099901050523ull, 690024566030977092ull, 3089616404872489062ull}}, {{14321659732206424554ull, 17598551374876313153ull, 10085902744393497173ull, 3862020506090611327ull}}, {{2033508304987933491ull, 13304937618511389673ull, 13221218242887017589ull, 2413762816306632079ull}}, {{7153571399662304767ull, 2796113967857073379ull, 11914836785181384083ull, 3017203520383290099ull}}, {{4330278231150493055ull, 17330200515103505436ull, 10281859963049342199ull, 3771504400479112624ull}}, {{11929795931323833968ull, 17748904349580772753ull, 6426162476905838874ull, 2357190250299445390ull}}, {{1077186858872628747ull, 12962758400121190134ull, 17256075132987074401ull, 2946487812874306737ull}}, {{10569855610445561742ull, 2368389944869323955ull, 7735035860951679290ull, 3683109766092883422ull}}, {{8600633494629564273ull, 12183859467941430752ull, 445422789334823304ull, 4603887207616104278ull}}, {{5375395934143477671ull, 7614912167463394220ull, 14113447298616428277ull, 2877429504760065173ull}}, {{6719244917679347089ull, 14130326227756630679ull, 3806751067988371634ull, 3596786880950081467ull}}, {{3787370128671795957ull, 8439535747841012541ull, 146752816558076639ull, 4495983601187601834ull}}, {{4672949339633566425ull, 12192238870041714694ull, 4703406528776185803ull, 2809989750742251146ull}}, {{15064558711396733839ull, 10628612569124755463ull, 15102630197825008062ull, 3512487188427813932ull}}, {{14219012370818529395ull, 4062393674551168521ull, 431543673571708462ull, 4390608985534767416ull}}, {{1969353704120499016ull, 16374054101876644038ull, 269714795982317788ull, 2744130615959229635ull}}, {{11685064167005399578ull, 2020823553636253431ull, 14172201550260060948ull, 3430163269949037043ull}}, {{9994644190329361568ull, 2526029442045316789ull, 13103565919397688281ull, 4287704087436296304ull}}, {{8552495628169544932ull, 13107983447346792753ull, 8189728699623555175ull, 2679815054647685190ull}}, {{15302305553639319069ull, 11773293290756103037ull, 1013788837674668161ull, 3349768818309606488ull}}, {{5292823886766985125ull, 881558558162965085ull, 1267236047093335202ull, 4187211022887008110ull}}, {{5613857938443059655ull, 5162660117279241082ull, 14627080584715498213ull, 2617006889304380068ull}}, {{16240694459908600377ull, 11065011165026439256ull, 18283850730894372766ull, 3271258611630475085ull}}, {{1854124001176198855ull, 4607891919428273263ull, 9019755358335802246ull, 4089073264538093857ull}}, {{8076356528376206140ull, 16714990504924834501ull, 17166562145028346163ull, 2555670790336308660ull}}, {{14707131678897645579ull, 16282052112728655222ull, 3011458607575881088ull, 3194588487920385826ull}}, {{9160542561767281166ull, 1905821067201267412ull, 12987695296324627169ull, 3993235609900482282ull}}, {{14948711137959326537ull, 12720353213069261892ull, 12728995578630279884ull, 2495772256187801426ull}}, {{239144848739606555ull, 15900441516336577366ull, 6687872436433074047ull, 3119715320234751783ull}}, {{9522303097779284002ull, 15263865876993333803ull, 3748154527113954655ull, 3899644150293439729ull}}, {{3645596426898358549ull, 16457445200761915483ull, 13871811625514691419ull, 2437277593933399830ull}}, {{18392053588905111898ull, 15960120482525006449ull, 8116392495038588466ull, 3046596992416749788ull}}, {{9155008930849226161ull, 10726778566301482254ull, 10145490618798235583ull, 3808246240520937235ull}}, {{1110194563353378447ull, 13621765631579508265ull, 4035088627535203287ull, 2380153900325585772ull}}, {{5999429222619110962ull, 12415521021046997427ull, 5043860784419004109ull, 2975192375406982215ull}}, {{2887600509846500799ull, 1684343221026583072ull, 1693139962096367233ull, 3718990469258727769ull}}, {{1804750318654062999ull, 12581929559210084180ull, 12587427522378699280ull, 2324369043286704855ull}}, {{2255937898317578749ull, 15727411949012605225ull, 11122598384545986196ull, 2905461304108381069ull}}, {{7431608391324361340ull, 1212520862556204915ull, 68189925400319034ull, 3631826630135476337ull}}, {{4677824470728063771ull, 10739023115050031952ull, 4696923425177786696ull, 4539783287669345421ull}}, {{2923640294205039857ull, 6711889446906269970ull, 5241420149949810637ull, 2837364554793340888ull}}, {{12877922404611075629ull, 13001547827060225366ull, 6551775187437263296ull, 3546705693491676110ull}}, {{6874030968909068729ull, 16251934783825281708ull, 17413091021151354928ull, 4433382116864595137ull}}, {{13519641392422943764ull, 10157459239890801067ull, 3965652860578514974ull, 2770863823040371961ull}}, {{12287865722101291800ull, 3473452013008725526ull, 9568752094150531622ull, 3463579778800464951ull}}, {{6136460115771838942ull, 13565187053115682716ull, 7349254099260776623ull, 4329474723500581189ull}}, {{13058659609212175147ull, 15395770935838383553ull, 6899126821251679341ull, 2705921702187863243ull}}, {{2488266456233055222ull, 5409655614515815730ull, 4012222508137211273ull, 3382402127734829054ull}}, {{12333705107146094835ull, 11373755536572157566ull, 14238650172026289899ull, 4228002659668536317ull}}, {{3096879673538921368ull, 4802754201143904527ull, 11204999366730125139ull, 2642501662292835198ull}}, {{17706157647205815422ull, 1391756733002492754ull, 4782877171557880616ull, 3303127077866043998ull}}, {{12909325022152493469ull, 1739695916253115943ull, 15201968501302126578ull, 4128908847332554997ull}}, {{14985857166486390275ull, 5698995966085585368ull, 11807073322527523063ull, 2580568029582846873ull}}, {{285577384398436227ull, 2512058939179593807ull, 923783597877240117ull, 3225710036978558592ull}}, {{14192029785780208996ull, 7751759692401880162ull, 1154729497346550146ull, 4032137546223198240ull}}, {{13481704634540018527ull, 9456535826178563005ull, 721705935841593841ull, 2520085966389498900ull}}, {{3017072737892859446ull, 16432355801150591661ull, 902132419801992301ull, 3150107457986873625ull}}, {{8383026940793462211ull, 6705386696156075864ull, 5739351543179878281ull, 3937634322483592031ull}}, {{5239391837995913882ull, 15720081731166017175ull, 10504623742128505781ull, 2461021451552245019ull}}, {{1937553779067504449ull, 5815044108675357757ull, 8519093659233244323ull, 3076276814440306274ull}}, {{7033628242261768465ull, 2657119117416809292ull, 1425495037186779596ull, 3845346018050382843ull}}, {{13619389688268381099ull, 10884071485240281615ull, 17031835462737594911ull, 2403341261281489276ull}}, {{12412551091908088469ull, 8993403338122964115ull, 2843050254712442023ull, 3004176576601861596ull}}, {{10904002846457722682ull, 6630068154226317240ull, 3553812818390552529ull, 3755220720752326995ull}}, {{6815001779036076677ull, 15673007642459918035ull, 18362034075989952994ull, 2347012950470204371ull}}, {{3907066205367707942ull, 10367887516220121736ull, 18340856576560053339ull, 2933766188087755464ull}}, {{4883832756709634927ull, 8348173376847764266ull, 4479326646990515058ull, 3667207735109694331ull}}, {{15328162982741819467ull, 1211844684204929524ull, 987472290310755919ull, 4584009668887117914ull}}, {{356729827358861359ull, 7674931955269162809ull, 5228856199871610353ull, 2865006043054448696ull}}, {{5057598302625964603ull, 14205350962513841415ull, 6536070249839512941ull, 3581257553818060870ull}}, {{1710311859855067849ull, 3921630647860138057ull, 17393459849154166985ull, 4476571942272576087ull}}, {{12598159958477887166ull, 13980234200981056045ull, 17788441433362436221ull, 2797857463920360054ull}}, {{1912641892815195245ull, 3640234695944156345ull, 13012179754848269469ull, 3497321829900450068ull}}, {{7002488384446381960ull, 9161979388357583335ull, 16265224693560336836ull, 4371652287375562585ull}}, {{11294084267920070581ull, 14949609154578265392ull, 3248236405834128666ull, 2732282679609726616ull}}, {{14117605334900088227ull, 9463639406368055932ull, 4060295507292660833ull, 3415353349512158270ull}}, {{17647006668625110283ull, 16441235276387457819ull, 14298741420970601849ull, 4269191686890197837ull}}, {{8723536158676999975ull, 3358243020101079281ull, 11242556397320320108ull, 2668244804306373648ull}}, {{15516106216773637873ull, 4197803775126349101ull, 14053195496650400135ull, 3335306005382967060ull}}, {{5560074715684883629ull, 635568700480548473ull, 17566494370813000169ull, 4169132506728708825ull}}, {{15004261743371522028ull, 11926445483868812555ull, 4061529954117043249ull, 2605707816705443016ull}}, {{14143641160787014631ull, 1072998799553851982ull, 5076912442646304062ull, 3257134770881803770ull}}, {{8456179414128992481ull, 10564620536297090786ull, 15569512590162655885ull, 4071418463602254712ull}}, {{9896798152258008205ull, 8908730844399375693ull, 9730945368851659928ull, 2544636539751409195ull}}, {{16982683708749898160ull, 11135913555499219616ull, 7551995692637187006ull, 3180795674689261494ull}}, {{2781610562227821084ull, 4696519907519248713ull, 216622578941707950ull, 3975994593361576868ull}}, {{13267721647460857937ull, 16770382997481694157ull, 9358761148693343276ull, 2484996620850985542ull}}, {{2749594004043908710ull, 2516234673142566081ull, 2475079399011903288ull, 3106245776063731928ull}}, {{8048678523482273791ull, 3145293341428207601ull, 3093849248764879110ull, 3882807220079664910ull}}, {{16559639123244890880ull, 15800866393674793462ull, 15768713835760213155ull, 2426754512549790568ull}}, {{11476176867201337791ull, 15139396973666103924ull, 1264148220990714828ull, 3033443140687238211ull}}, {{14345221084001672239ull, 477502143373078289ull, 15415243331520557248ull, 3791803925859047763ull}}, {{2048234149859963294ull, 298438839608173931ull, 7328684072986654328ull, 2369877453661904852ull}}, {{16395350742607117829ull, 373048549510217413ull, 9160855091233317910ull, 2962346817077381065ull}}, {{6659130372976733574ull, 9689682723742547575ull, 16062754882469035291ull, 3702933521346726331ull}}, {{11079485510751540340ull, 3750208693125398282ull, 7733378792329453105ull, 2314333450841703957ull}}, {{4625984851584649617ull, 9299446884834135757ull, 14278409508839204285ull, 2892916813552129946ull}}, {{10394167082908199925ull, 16235994624470057600ull, 8624639849194229548ull, 3616146016940162433ull}}, {{12992708853635249906ull, 1848249206878020384ull, 15392485829920174840ull, 4520182521175203041ull}}, {{8120443033522031191ull, 1155155754298762740ull, 2702774616059027419ull, 2825114075734501901ull}}, {{10150553791902538989ull, 15279002748155617137ull, 7990154288501172177ull, 3531392594668127376ull}}, {{17299878258305561640ull, 5263695379912357709ull, 9987692860626465222ull, 4414240743335159220ull}}, {{13118266920654669977ull, 17124867667727387280ull, 15465680074746316571ull, 2758900464584474512ull}}, {{16397833650818337472ull, 16794398566231846196ull, 885356019723344098ull, 3448625580730593141ull}}, {{2050547989813370223ull, 11769626170935031938ull, 5718381043081568027ull, 4310781975913241426ull}}, {{5893278512060744294ull, 5050173347620701009ull, 8185674170353367921ull, 2694238734945775891ull}}, {{11978284158503318271ull, 10924402702953264165ull, 5620406694514321997ull, 3367798418682219864ull}}, {{1137797142846984127ull, 18267189397118968111ull, 7025508368142902496ull, 4209748023352774830ull}}, {{7628652241920446935ull, 11416993373199355069ull, 18226000785371477772ull, 2631092514595484268ull}}, {{14147501320827946573ull, 14271241716499193836ull, 4335756908004795599ull, 3288865643244355336ull}}, {{17684376651034933216ull, 13227366127196604391ull, 5419696135005994499ull, 4111082054055444170ull}}, {{17970264434537915116ull, 5961260820284183792ull, 7998996102806134466ull, 2569426283784652606ull}}, {{4016086469462842279ull, 16674948062210005549ull, 775373091652892274ull, 3211782854730815758ull}}, {{9631794105255940753ull, 11620313040907731128ull, 10192588401420891151ull, 4014728568413519697ull}}, {{6019871315784962971ull, 14180224678208413811ull, 17899582796956526729ull, 2509205355258449810ull}}, {{2913153126303815809ull, 3890222792478353552ull, 13151106459340882604ull, 3136506694073062263ull}}, {{3641441407879769762ull, 4862778490597941940ull, 11827197055748715351ull, 3920633367591327829ull}}, {{11499272916779631909ull, 9956765584264795568ull, 9697841169056641046ull, 2450395854744579893ull}}, {{14374091145974539886ull, 3222584943476218652ull, 16733987479748189212ull, 3062994818430724866ull}}, {{17967613932468174858ull, 4028231179345273315ull, 11694112312830460707ull, 3828743523038406083ull}}, {{8923915698578915334ull, 211801477877101870ull, 5002977186305343990ull, 2392964701899003802ull}}, {{1931522586368868360ull, 9488123884201153146ull, 15477093519736455795ull, 2991205877373754752ull}}, {{11637775269815861258ull, 7248468836824053528ull, 899622825961018128ull, 3739007346717193441ull}}, {{7273609543634913286ull, 4530293023015033455ull, 12091479312294106090ull, 2336879591698245900ull}}, {{4480325911116253704ull, 14886238315623567627ull, 15114349140367632612ull, 2921099489622807375ull}}, {{988721370467929225ull, 161053820819907918ull, 14281250407032152862ull, 3651374362028509219ull}}, {{10459273749939687340ull, 9424689312879660705ull, 13239876990362803173ull, 4564217952535636524ull}}, {{18066261139780774347ull, 8196273829763481892ull, 17498295155831527791ull, 2852636220334772827ull}}, {{4136082351016416318ull, 5633656268776964462ull, 17261182926362021835ull, 3565795275418466034ull}}, {{14393474975625296206ull, 2430384317543817673ull, 12353106621097751486ull, 4457244094273082543ull}}, {{2078392832124728273ull, 15354048253747049758ull, 14638220665827176534ull, 2785777558920676589ull}}, {{11821363077010686149ull, 9969188280329036389ull, 4462717777001806956ull, 3482221948650845737ull}}, {{941645790981193974ull, 12461485350411295487ull, 10190083239679646599ull, 4352777435813557171ull}}, {{7506057647004328090ull, 14705957371648141535ull, 4062959015586085172ull, 2720485897383473232ull}}, {{4770886040328022208ull, 18382446714560176919ull, 5078698769482606465ull, 3400607371729341540ull}}, {{1351921531982639856ull, 9143000337918057437ull, 6348373461853258082ull, 4250759214661676925ull}}, {{3150793966702843862ull, 10326061229626173802ull, 6273576422871980253ull, 2656724509163548078ull}}, {{13161864495233330636ull, 17519262555460105156ull, 17065342565444751124ull, 3320905636454435097ull}}, {{16452330619041663294ull, 3452334120615579829ull, 7496620151523775194ull, 4151132045568043872ull}}, {{12588549646114733511ull, 6769394843812125297ull, 4685387594702359496ull, 2594457528480027420ull}}, {{1900629002361253177ull, 8461743554765156622ull, 5856734493377949370ull, 3243071910600034275ull}}, {{11599158289806342279ull, 1353807406601669969ull, 2709232098295048809ull, 4053839888250042844ull}}, {{331944903487882069ull, 12375344675194513491ull, 10916642098289181313ull, 2533649930156276777ull}}, {{14249989184642016298ull, 1634122788710978151ull, 18257488641288864546ull, 3167062412695345971ull}}, {{13200800462375132468ull, 11266025522743498497ull, 18210174783183692778ull, 3958828015869182464ull}}, {{1332971261343375937ull, 11652951970142074465ull, 11381359239489807986ull, 2474267509918239040ull}}, {{6277900095106607825ull, 5342817925822817273ull, 14226699049362259983ull, 3092834387397798800ull}}, {{12459061137310647685ull, 2066836388851133687ull, 17783373811702824979ull, 3866042984247248500ull}}, {{14704442238460236659ull, 17432673807527816218ull, 1891236595459489803ull, 2416276865154530313ull}}, {{9157180761220520016ull, 17179156240982382369ull, 6975731762751750158ull, 3020346081443162891ull}}, {{16058161969953037924ull, 12250573264373202153ull, 4107978685012299794ull, 3775432601803953614ull}}, {{3118822203579566846ull, 12268294308660639250ull, 16402544733414851083ull, 2359645376127471008ull}}, {{13121899791329234366ull, 10723681867398411158ull, 2056436843059012238ull, 2949556720159338761ull}}, {{7179002702306767149ull, 4181230297393238140ull, 7182232072251153202ull, 3686945900199173451ull}}, {{8973753377883458936ull, 14449909908596323483ull, 4366104071886553598ull, 4608682375248966814ull}}, {{3302752851963467883ull, 4419507674445314273ull, 16563873100211259711ull, 2880426484530604258ull}}, {{8740127083381722758ull, 912698574629254937ull, 11481469338409298831ull, 3600533105663255323ull}}, {{15536844872654541352ull, 14975931273568732383ull, 9740150654584235634ull, 4500666382079069154ull}}, {{16628057073050170201ull, 13971643064407845643ull, 10699280177542535175ull, 2812916488799418221ull}}, {{16173385322885324847ull, 12852867812082419150ull, 17985786240355556873ull, 3516145610999272776ull}}, {{10993359616751880251ull, 2231026709820860226ull, 4035488726734894476ull, 4395182013749090971ull}}, {{11482535778897313061ull, 10617763730492813449ull, 216337444995615095ull, 2746988758593181857ull}}, {{518111668339477614ull, 8660518644688628908ull, 4882107824671906773ull, 3433735948241477321ull}}, {{647639585424347017ull, 15437334324288174039ull, 10714320799267271370ull, 4292169935301846651ull}}, {{7322303768531298742ull, 14260019971107496678ull, 4390607490328350654ull, 2682606209563654157ull}}, {{18376251747518899235ull, 8601652927029595039ull, 10099945381337826222ull, 3353257761954567696ull}}, {{18358628665971236140ull, 1528694121932217991ull, 12624931726672282778ull, 4191572202443209620ull}}, {{18391671943873104444ull, 5567119844635024148ull, 17113954366024952544ull, 2619732626527006012ull}}, {{4542845856131828939ull, 6958899805793780186ull, 2945698883821639064ull, 3274665783158757516ull}}, {{14901929357019561981ull, 8698624757242225232ull, 3682123604777048830ull, 4093332228948446895ull}}, {{9313705848137226238ull, 824954454849002866ull, 9218856280626737375ull, 2558332643092779309ull}}, {{2418760273316756990ull, 14866251123843417295ull, 16135256369210809622ull, 3197915803865974136ull}}, {{16858508396928109949ull, 9359441867949495810ull, 1722326387803960412ull, 3997394754832467671ull}}, {{15148253766507456622ull, 15073023204323210689ull, 7993983020018557113ull, 2498371721770292294ull}}, {{5100259152852157066ull, 5006220950121849650ull, 769106738168420584ull, 3122964652212865368ull}}, {{15598695977919972140ull, 6257776187652312062ull, 961383422710525730ull, 3903705815266081710ull}}, {{5137498967772594684ull, 8522796135710082943ull, 14435922694476242293ull, 2439816134541301068ull}}, {{1810187691288355451ull, 15265181188064991583ull, 18044903368095302866ull, 3049770168176626335ull}}, {{16097792669392608025ull, 9858104448226463670ull, 17944443191691740679ull, 3812212710220782919ull}}, {{5449434399942992112ull, 13078844307782621650ull, 18132806022448419780ull, 2382632943887989324ull}}, {{16035165036783515948ull, 16348555384728277062ull, 4219263454350973109ull, 2978291179859986656ull}}, {{10820584259124619127ull, 6600636175628182616ull, 5274079317938716387ull, 3722863974824983320ull}}, {{6762865161952886954ull, 1819554600553920183ull, 3296299573711697742ull, 2326789984265614575ull}}, {{3841895434013720789ull, 11497815287547176037ull, 17955432522421785889ull, 2908487480332018218ull}}, {{9414055310944538890ull, 537211054151806334ull, 13220918616172456554ull, 3635609350415022773ull}}, {{2544197101825897804ull, 9894885854544533726ull, 2691090214933406980ull, 4544511688018778467ull}}, {{15425181243923349840ull, 15407675695945109386ull, 17822832448829237026ull, 2840319805011736541ull}}, {{10058104518049411492ull, 10036222583076610925ull, 8443482505754382571ull, 3550399756264670677ull}}, {{17184316665989152268ull, 7933592210418375752ull, 15166039150620366118ull, 4437999695330838346ull}}, {{10740197916243220168ull, 346809113084096941ull, 14090460487565116728ull, 2773749809581773966ull}}, {{18036933413731413114ull, 433511391355121176ull, 8389703572601620102ull, 3467187261977217458ull}}, {{4099422693454714776ull, 9765261276048677279ull, 1263757428897249319ull, 4333984077471521823ull}}, {{9479668211050278591ull, 13020817325171505155ull, 7707377420701862680ull, 2708740048419701139ull}}, {{7237899245385460335ull, 16276021656464381444ull, 5022535757449940446ull, 3385925060524626424ull}}, {{9047374056731825419ull, 11121655033725700997ull, 6278169696812425558ull, 4232406325655783030ull}}, {{7960451794671084839ull, 2339348377651175219ull, 17758914115789929686ull, 2645253953534864393ull}}, {{5338878724911468144ull, 12147557508918744832ull, 8363584589455248395ull, 3306567441918580492ull}}, {{6673598406139335180ull, 10572760867721043136ull, 10454480736819060494ull, 4133209302398225615ull}}, {{4170999003837084488ull, 1996289523898264056ull, 13451579488152994665ull, 2583255813998891009ull}}, {{5213748754796355610ull, 7107047923300217974ull, 2979416304909079619ull, 3229069767498613762ull}}, {{15740557980350220320ull, 4272123885697884563ull, 12947642417991125332ull, 4036337209373267202ull}}, {{7532005728505193748ull, 11893449465415953660ull, 12703962529671841236ull, 2522710755858292001ull}}, {{9415007160631492185ull, 14866811831769942075ull, 2044895106807637833ull, 3153388444822865002ull}}, {{7157072932361977327ull, 4748456734430263882ull, 11779490920364323100ull, 3941735556028581252ull}}, {{9084856601153623734ull, 12191157495873690734ull, 16585553862082477745ull, 2463584722517863282ull}}, {{2132698714587253859ull, 1403888814559949706ull, 11508570290748321374ull, 3079480903147329103ull}}, {{11889245430088843132ull, 10978233055054712940ull, 9774026845008013813ull, 3849351128934161379ull}}, {{16654150430660302766ull, 9167238668622889539ull, 3802923768916314681ull, 2405844455583850862ull}}, {{16206002019897990553ull, 16070734354205999828ull, 13977026748000169159ull, 3007305569479813577ull}}, {{1810758451162936575ull, 15476731924330111882ull, 3636225379718047737ull, 3759131961849766972ull}}, {{5743410050404223263ull, 2755428425065238070ull, 11496012899178555644ull, 2349457476156104357ull}}, {{16402634599860054887ull, 3444285531331547587ull, 534958068691030843ull, 2936821845195130447ull}}, {{15891607231397680705ull, 18140414969446598196ull, 14503755641145952265ull, 3671027306493913058ull}}, {{1417764965537549265ull, 8840460656526084034ull, 8906322514577664524ull, 4588784133117391323ull}}, {{5497789121888356195ull, 14748659947183578329ull, 3260608562397346375ull, 2867990083198369577ull}}, {{11483922420787833147ull, 13824138915552085007ull, 8687446721424070873ull, 3584987603997961971ull}}, {{9743217007557403530ull, 3445115589157942547ull, 6247622383352700688ull, 4481234504997452464ull}}, {{3783667620509683255ull, 2153197243223714092ull, 3904763989595437930ull, 2800771565623407790ull}}, {{4729584525637104068ull, 11914868590884418423ull, 14104327023849073220ull, 3500964457029259737ull}}, {{1300294638618992181ull, 14893585738605523029ull, 3795350724529177813ull, 4376205571286574672ull}}, {{3118527158350564065ull, 11614334095842145845ull, 2372094202830736133ull, 2735128482054109170ull}}, {{8509844966365592985ull, 682859564520518594ull, 12188489790393195975ull, 3418910602567636462ull}}, {{1413934171102215424ull, 14688632510932811955ull, 6012240201136719160ull, 4273638253209545578ull}}, {{17024609921434742304ull, 9180395319333007471ull, 8369336144137837379ull, 2671023908255965986ull}}, {{16669076383366039976ull, 6863808130738871435ull, 1238298143317520916ull, 3338779885319957483ull}}, {{16224659460780162066ull, 8579760163423589294ull, 15382930734429064857ull, 4173474856649946853ull}}, {{5528726144560213387ull, 16891565148208213069ull, 11920174718231859487ull, 2608421785406216783ull}}, {{11522593699127654638ull, 16502770416832878432ull, 10288532379362436455ull, 3260527231757770979ull}}, {{14403242123909568297ull, 16016777002613710136ull, 8248979455775657665ull, 4075659039697213724ull}}, {{9002026327443480186ull, 3092956598992486979ull, 14378984196714561849ull, 2547286899810758577ull}}, {{6640846890876962328ull, 8477881767167996628ull, 4138672190611038599ull, 3184108624763448222ull}}, {{8301058613596202910ull, 5985666190532607881ull, 14396712275118574057ull, 3980135780954310277ull}}, {{16717376679566096579ull, 15270256415151349685ull, 11303788181162802737ull, 2487584863096443923ull}}, {{7061662794175457012ull, 5252762463657023395ull, 9518049208026115518ull, 3109481078870554904ull}}, {{4215392474291933361ull, 15789325116426055052ull, 11897561510032644397ull, 3886851348588193630ull}}, {{11857992333287234159ull, 12174171206979978359ull, 2824289925343014844ull, 2429282092867621019ull}}, {{10210804398181654794ull, 15217714008724972949ull, 17365420461960932267ull, 3036602616084526273ull}}, {{17375191516154456396ull, 14410456492478828282ull, 7871717522169001622ull, 3795753270105657842ull}}, {{15471180716023923152ull, 4394849289371879772ull, 9531509469783013918ull, 2372345793816036151ull}}, {{892231821320352324ull, 14716933648569625524ull, 7302700818801379493ull, 2965432242270045189ull}}, {{1115289776650440405ull, 4561109005429868193ull, 13740062041929112271ull, 3706790302837556486ull}}, {{12226271156474995013ull, 9768222156034749476ull, 3975852757778307265ull, 2316743939273472804ull}}, {{15282838945593743766ull, 16821963713470824749ull, 4969815947222884081ull, 2895929924091841005ull}}, {{5268490626710015996ull, 7192396586556367225ull, 10823955952455993006ull, 3619912405114801256ull}}, {{11197299301814907899ull, 18213867770050234839ull, 13529944940569991257ull, 4524890506393501570ull}}, {{13915841091275399293ull, 4466138328640314918ull, 13067901606283632440ull, 2828056566495938481ull}}, {{8171429327239473308ull, 5582672910800393648ull, 2499818952572376838ull, 3535070708119923102ull}}, {{10214286659049341635ull, 16201713175355267868ull, 12348145727570246855ull, 4418838385149903877ull}}, {{15607301198760614330ull, 17043599762238124273ull, 10023434088945098236ull, 2761773990718689923ull}}, {{5674068443168604200ull, 2857755629088103726ull, 7917606592753984892ull, 3452217488398362404ull}}, {{16315957590815531058ull, 3572194536360129657ull, 9897008240942481115ull, 4315271860497953005ull}}, {{3279944466618625056ull, 18373522649720938700ull, 8491473159802744648ull, 2697044912811220628ull}}, {{4099930583273281319ull, 4520159238441621759ull, 10614341449753430811ull, 3371306141014025785ull}}, {{513227210664213745ull, 1038513029624639295ull, 17879612830619176418ull, 4214132676267532231ull}}, {{7238296034306215447ull, 5260756661942787463ull, 18092287046778067117ull, 2633832922667207644ull}}, {{4436184024455381404ull, 11187631845855872233ull, 4168614734763032280ull, 3292291153334009556ull}}, {{10156916048996614659ull, 13984539807319840291ull, 5210768418453790350ull, 4115363941667511945ull}}, {{4042229521409190210ull, 4128651361147512278ull, 14785945307602088729ull, 2572102463542194965ull}}, {{14276158938616263571ull, 9772500219861778251ull, 4647373579220447199ull, 3215128079427743707ull}}, {{13233512654842941559ull, 7603939256399834910ull, 1197530955598171095ull, 4018910099284679634ull}}, {{3659259390849450571ull, 11669991062890978675ull, 5360142865676244838ull, 2511818812052924771ull}}, {{18409132293843976925ull, 5364116791758947535ull, 2088492563667918144ull, 3139773515066155964ull}}, {{18399729348877583252ull, 6705145989698684419ull, 2610615704584897680ull, 3924716893832694955ull}}, {{9193987833834795581ull, 4190716243561677762ull, 17772535879861418714ull, 2452948058645434346ull}}, {{2269112755438718668ull, 14461767341306873011ull, 12992297812971997584ull, 3066185073306792933ull}}, {{16671448999580562047ull, 18077209176633591263ull, 2405314210932833268ull, 3832731341633491167ull}}, {{17337184652378933136ull, 2074883698541218731ull, 8420850409474102649ull, 2395457088520931979ull}}, {{17059794797046278515ull, 7205290641603911318ull, 5914376993415240407ull, 2994321360651164974ull}}, {{12101371459453072336ull, 4394927283577501244ull, 16616343278623826317ull, 3742901700813956217ull}}, {{16786729199012946018ull, 5052672561449632229ull, 3467685521498809592ull, 2339313563008722636ull}}, {{7148353443484018811ull, 6315840701812040287ull, 4334606901873511990ull, 2924141953760903295ull}}, {{4323755785927635609ull, 17118172914119826167ull, 806572608914502083ull, 3655177442201129119ull}}, {{793008713982156607ull, 16786030124222394805ull, 14843273816425291316ull, 4568971802751411398ull}}, {{2801473455452541832ull, 1267896790784220945ull, 4665360116838419169ull, 2855607376719632124ull}}, {{8113527837743065194ull, 6196557006907664085ull, 5831700146048023961ull, 3569509220899540155ull}}, {{14753595815606219396ull, 12357382277061968010ull, 2677939164132642047ull, 4461886526124425194ull}}, {{13832683403181275027ull, 14640892950804811862ull, 6285397996010289183ull, 2788679078827765746ull}}, {{8067482217121817975ull, 13689430170078626924ull, 17080119531867637287ull, 3485848848534707182ull}}, {{10084352771402272469ull, 12500101694170895751ull, 12126777377979770801ull, 4357311060668383978ull}}, {{13220249509767502149ull, 895034531215727988ull, 12190921879664744655ull, 2723319412917739986ull}}, {{16525311887209377686ull, 14953851219301823697ull, 6015280312726155010ull, 3404149266147174983ull}}, {{6821581803729558396ull, 9468941987272503814ull, 2907414372480305859ull, 4255186582683968729ull}}, {{18098546682613137710ull, 3612245732831620931ull, 13346349028868660922ull, 2659491614177480455ull}}, {{18011497334839034233ull, 13738679202894301972ull, 12071250267658438248ull, 3324364517721850569ull}}, {{4067627594839241175ull, 17173349003617877466ull, 1254004779290884098ull, 4155455647152313212ull}}, {{7153953265201913639ull, 15345029145688561320ull, 10007125023911578369ull, 2597159779470195757ull}}, {{8942441581502392048ull, 5346228376828537938ull, 17120592298316860866ull, 3246449724337744696ull}}, {{1954679940023214252ull, 15906157507890448231ull, 2953996299186524466ull, 4058062155422180871ull}}, {{8139203990155590764ull, 14553034460858918048ull, 8763776714632659647ull, 2536288847138863044ull}}, {{10174004987694488454ull, 13579607057646259656ull, 10954720893290824559ull, 3170361058923578805ull}}, {{12717506234618110568ull, 12362822803630436666ull, 18305087135040918603ull, 3962951323654473506ull}}, {{12560127415063707009ull, 5420921243055328964ull, 16052365477827962031ull, 2476844577284045941ull}}, {{15700159268829633761ull, 2164465535391773301ull, 6230398792002788827ull, 3096055721605057427ull}}, {{5790141030754878489ull, 16540639974521880339ull, 3176312471576098129ull, 3870069652006321784ull}}, {{1312995135008105104ull, 3420370956435093356ull, 1985195294735061331ull, 2418793532503951115ull}}, {{1641243918760131380ull, 18110521750826030407ull, 16316552173700990375ull, 3023491915629938893ull}}, {{15886612953732327937ull, 18026466170105150104ull, 6560632161844074257ull, 3779364894537423617ull}}, {{9929133096082704961ull, 4349012328674636959ull, 15629610147221016171ull, 2362103059085889760ull}}, {{7799730351675993297ull, 824579392415908295ull, 1090268610316718598ull, 2952628823857362201ull}}, {{5137976921167603717ull, 10254096277374661177ull, 5974521781323286151ull, 3690786029821702751ull}}, {{14740450621798222083ull, 13326339201000245091ull, 10651605140968135700ull, 2306741268638564219ull}}, {{13813877258820389700ull, 16657924001250306364ull, 8702820407782781721ull, 2883426585798205274ull}}, {{17267346573525487125ull, 6987346946280719243ull, 1655153472873701344ull, 3604283232247756593ull}}, {{16972497198479471002ull, 8734183682850899054ull, 6680627859519514584ull, 4505354040309695741ull}}, {{5996124730622281472ull, 5458864801781811909ull, 6481235421413390567ull, 2815846275193559838ull}}, {{12106841931705239744ull, 2211894983799876982ull, 17324916313621514017ull, 3519807843991949797ull}}, {{5910180377776773872ull, 7376554748177234132ull, 7821087336744728809ull, 4399759804989937247ull}}, {{12917234772965259478ull, 16139561763679241092ull, 11805708613106537361ull, 2749849878118710779ull}}, {{16146543466206574348ull, 6339394149316887653ull, 10145449747955783798ull, 3437312347648388474ull}}, {{6348121277476054223ull, 17147614723500885375ull, 3458440148089953939ull, 4296640434560485593ull}}, {{10885104826063615745ull, 8411416192974359407ull, 13690740138624690972ull, 2685400271600303495ull}}, {{8994695014152131778ull, 10514270241217949259ull, 12501739154853475811ull, 3356750339500379369ull}}, {{6631682749262776818ull, 8531151783095048670ull, 1792115888284681052ull, 4195937924375474212ull}}, {{17979859773571399223ull, 14555341901289181226ull, 10343444467032701465ull, 2622461202734671382ull}}, {{13251452680109473221ull, 4359119321329312821ull, 3705933546936101024ull, 3278076503418339228ull}}, {{2729257794854677814ull, 5448899151661641027ull, 4632416933670126280ull, 4097595629272924035ull}}, {{17846687186280031298ull, 3405561969788525641ull, 589417574330134973ull, 2560997268295577522ull}}, {{8473300927567875410ull, 8868638480663044956ull, 9960144004767444524ull, 3201246585369471902ull}}, {{10591626159459844263ull, 11085798100828806195ull, 3226807969104529847ull, 4001558231711839878ull}}, {{4313923340448708712ull, 13846152840659085728ull, 15851813035972494866ull, 2500973894819899923ull}}, {{5392404175560885890ull, 8084319013969081352ull, 15203080276538230679ull, 3126217368524874904ull}}, {{6740505219451107363ull, 5493712749033963786ull, 557106271963236733ull, 3907771710656093631ull}}, {{8824501780584330006ull, 5739413477359921318ull, 7265720447618104814ull, 2442357319160058519ull}}, {{1807255188875636699ull, 16397638883554677456ull, 4470464541095243113ull, 3052946648950073149ull}}, {{2259068986094545874ull, 6661990549161183108ull, 10199766694796441796ull, 3816183311187591436ull}}, {{10635290153163866980ull, 13387116130080515250ull, 15598226221102551930ull, 2385114569492244647ull}}, {{4070740654600057916ull, 7510523125745868255ull, 14886096757950802009ull, 2981393211865305809ull}}, {{476739799822684491ull, 13999839925609723223ull, 4772562892156338799ull, 3726741514831632262ull}}, {{7215491402530259663ull, 15667428981147158870ull, 16817909862879875461ull, 2329213446769770163ull}}, {{18242736290017600387ull, 5749228171151784875ull, 16410701310172456423ull, 2911516808462212704ull}}, {{18191734344094612580ull, 2574849195512343190ull, 2066632564006018913ull, 3639396010577765881ull}}, {{13516295893263489916ull, 7830247512817816892ull, 7194976723434911545ull, 4549245013222207351ull}}, {{17671056970144457006ull, 16423119741579605317ull, 11414389479787901571ull, 2843278133263879594ull}}, {{8253763157398407545ull, 15917213658547118743ull, 5044614812880101156ull, 3554097666579849493ull}}, {{5705517928320621527ull, 1449772999474346813ull, 10917454534527514350ull, 4442622083224811866ull}}, {{5871791714414082407ull, 14741166179953630470ull, 11435095102507084372ull, 2776638802015507416ull}}, {{16563111679872378816ull, 18426457724942038087ull, 14293868878133855465ull, 3470798502519384270ull}}, {{16092203581413085616ull, 9198014100895383897ull, 8643964060812543524ull, 4338498128149230338ull}}, {{3140098210742096654ull, 14972130849914390744ull, 10014163556435227606ull, 2711561330093268961ull}}, {{3925122763427620818ull, 9491791525538212622ull, 17129390463971422412ull, 3389451662616586201ull}}, {{14129775491139301830ull, 11864739406922765777ull, 7576680024682114303ull, 4236814578270732752ull}}, {{1913580654320981788ull, 14332991156967810467ull, 4735425015426321439ull, 2648009111419207970ull}}, {{16227033873183390947ull, 13304552927782375179ull, 15142653306137677607ull, 3310011389274009962ull}}, {{15672106323051850780ull, 12019005141300581070ull, 9704944595817321201ull, 4137514236592512453ull}}, {{5183380433480018833ull, 594349185671781313ull, 8371433381599519703ull, 2585946397870320283ull}}, {{11090911560277411446ull, 14577994537371890353ull, 5852605708572011724ull, 3232432997337900354ull}}, {{28581395064600595ull, 18222493171714862942ull, 16539129172569790463ull, 4040541246672375442ull}}, {{13852921427197539084ull, 18306587259962871194ull, 14948641751283506943ull, 2525338279170234651ull}}, {{8092779747142148047ull, 18271548056526201089ull, 14074116170676995775ull, 3156672848962793314ull}}, {{14727660702355072963ull, 18227749052230363457ull, 8369273176491468911ull, 3945841061203491643ull}}, {{2287258911330838746ull, 18309872185285059017ull, 2924952726093474117ull, 2466150663252182277ull}}, {{7470759657590936336ull, 9052282176324160059ull, 8267876926044230551ull, 3082688329065227846ull}}, {{4726763553561282516ull, 6703666701977812170ull, 1111474120700512381ull, 3853360411331534808ull}}, {{7565913239403189477ull, 6495634697949826558ull, 694671325437820238ull, 2408350257082209255ull}}, {{234019512399211038ull, 17342915409292059006ull, 14703397212079439009ull, 3010437821352761568ull}}, {{9515896427353789605ull, 7843586206332910045ull, 18379246515099298762ull, 3763047276690951960ull}}, {{8253278276309812455ull, 9513927397385456682ull, 11487029071937061726ull, 2351904547931844975ull}}, {{1093225808532489761ull, 2669037209877045045ull, 9747100321493939254ull, 2939880684914806219ull}}, {{5978218279093000105ull, 12559668549201082114ull, 7572189383440036163ull, 3674850856143507774ull}}, {{16696144885721025939ull, 11087899668073964738ull, 241864692445269396ull, 4593563570179384718ull}}, {{15046776572003029116ull, 16153309329401003769ull, 13986223488060457084ull, 2870977231362115448ull}}, {{4973412659721622683ull, 1744892588041703096ull, 17482779360075571356ull, 3588721539202644310ull}}, {{6216765824652028354ull, 2181115735052128870ull, 12630102163239688387ull, 4485901924003305388ull}}, {{17720536695689681433ull, 17504098398903438207ull, 17117185888879581049ull, 2803688702502065867ull}}, {{17538984851184713888ull, 8045064943347134047ull, 16784796342672088408ull, 3504610878127582334ull}}, {{17312045045553504455ull, 10056331179183917559ull, 11757623391485334702ull, 4380763597659477918ull}}, {{17737557181112022141ull, 1673520968562560570ull, 2736828601250946285ull, 2737977248537173699ull}}, {{12948574439535251868ull, 6703587229130588617ull, 17256093806845846568ull, 3422471560671467123ull}}, {{2350659994136901123ull, 8379484036413235772ull, 16958431240129920306ull, 4278089450839333904ull}}, {{10692534533190339010ull, 9848863541185660261ull, 10599019525081200191ull, 2673805906774583690ull}}, {{17977354184915311666ull, 7699393408054687422ull, 4025402369496724431ull, 3342257383468229613ull}}, {{13248320694289363775ull, 5012555741640971374ull, 9643438980298293443ull, 4177821729335287016ull}}, {{3668514415503464455ull, 827004329311913157ull, 6027149362686433402ull, 2611138580834554385ull}}, {{9197329037806718473ull, 10257127448494667254ull, 12145622721785429656ull, 3263923226043192981ull}}, {{2273289260403622283ull, 12821409310618334068ull, 1346970346949623358ull, 4079904032553991227ull}}, {{10644177824607039735ull, 3401694800709070888ull, 16982757531339372263ull, 2549940020346244516ull}}, {{13305222280758799669ull, 18087176556168502322ull, 2781702840464663712ull, 3187425025432805646ull}}, {{7408155814093723778ull, 4162226621501076287ull, 12700500587435605449ull, 3984281281791007057ull}}, {{11547626411449659217ull, 14130606684506642439ull, 1020283839506171549ull, 2490175801119379411ull}}, {{9822846995884686118ull, 3828200300351139337ull, 15110412854664878149ull, 3112719751399224263ull}}, {{16890244763283245551ull, 9396936393866312075ull, 14276330049903709782ull, 3890899689249030329ull}}, {{8250559967838334517ull, 1261399227739057143ull, 2005177253548736758ull, 2431812305780643956ull}}, {{5701513941370530243ull, 10800121071528597237ull, 2506471566935920947ull, 3039765382225804945ull}}, {{11738578445140550707ull, 8888465320983358642ull, 7744775477097289088ull, 3799706727782256181ull}}, {{11948297546640232096ull, 5555290825614599151ull, 7146327682399499632ull, 2374816704863910113ull}}, {{10323685914872902216ull, 6944113532018248939ull, 13544595621426762444ull, 2968520881079887641ull}}, {{8292921375163739866ull, 8680141915022811174ull, 3095686471501289343ull, 3710651101349859552ull}}, {{571389841049949513ull, 12342617724530338840ull, 1934804044688305839ull, 2319156938343662220ull}}, {{714237301312436891ull, 10816586137235535646ull, 2418505055860382299ull, 2898946172929577775ull}}, {{10116168663495321921ull, 8909046653117031653ull, 16858189375107641586ull, 3623682716161972218ull}}, {{17256896847796540305ull, 1912936279541513758ull, 11849364682029776175ull, 4529603395202465273ull}}, {{6173874511445449787ull, 8113114202354527955ull, 488323898627528253ull, 2831002122001540796ull}}, {{3105657120879424329ull, 14753078771370547848ull, 610404873284410316ull, 3538752652501925995ull}}, {{3882071401099280412ull, 18441348464213184810ull, 14598064146887676607ull, 4423440815627407493ull}}, {{7037980644114438162ull, 18443371817774322362ull, 11429633101018491831ull, 2764650509767129683ull}}, {{18020847841997823510ull, 18442528753790515048ull, 9675355357845726885ull, 3455813137208912104ull}}, {{4079315728787727771ull, 9218102886955980099ull, 12094194197307158607ull, 4319766421511140130ull}}, {{243729321278635905ull, 12678843331988569418ull, 12170557391744362033ull, 2699854013444462581ull}}, {{9528033688453070689ull, 2013496109703548060ull, 1378138684398288830ull, 3374817516805578227ull}}, {{11910042110566338361ull, 11740242173984210883ull, 15557731410780024749ull, 4218521896006972783ull}}, {{5137933309890267524ull, 9643494367953825754ull, 16641111159378597324ull, 2636576185004357989ull}}, {{15645788674217610213ull, 12054367959942282192ull, 6966330893941082943ull, 3295720231255447487ull}}, {{1110491769062461150ull, 10456273931500464837ull, 4096227598998965775ull, 4119650289069309359ull}}, {{2999900364877732171ull, 13452700234828872379ull, 9477671277015435465ull, 2574781430668318349ull}}, {{17584933511379328926ull, 2980817238253926761ull, 16458775114696682236ull, 3218476788335397936ull}}, {{8146108833941997445ull, 3726021547817408452ull, 2126724819661301179ull, 4023095985419247421ull}}, {{14314690058068524211ull, 22920458172186330ull, 3635046021502007189ull, 2514434990887029638ull}}, {{8669990535730879456ull, 4640336591142620817ull, 13767179563732284794ull, 3143043738608787047ull}}, {{15449174188090987224ull, 15023792775783051829ull, 12597288436237968088ull, 3928804673260983809ull}}, {{11961576876770560967ull, 9389870484864407393ull, 955776245007648199ull, 2455502920788114881ull}}, {{1116913040681037497ull, 7125652087653121338ull, 5806406324686948153ull, 3069378650985143601ull}}, {{10619513337706072679ull, 13518751127993789576ull, 11869693924286073095ull, 3836723313731429501ull}}, {{6637195836066295424ull, 15366748482637200341ull, 9724401711892489636ull, 2397952071082143438ull}}, {{12908180813510257184ull, 761691529586948810ull, 2932130103010836238ull, 2997440088852679298ull}}, {{6911853980033045672ull, 10175486448838461821ull, 12888534665618321105ull, 3746800111065849122ull}}, {{6625751746734347497ull, 17888894076592508398ull, 12667020184438838594ull, 2341750069416155701ull}}, {{17505561720272710180ull, 13137745558885859689ull, 1998717175266384531ull, 2927187586770194627ull}}, {{8046894095058724012ull, 11810495930179936708ull, 16333454524365144376ull, 3658984483462743283ull}}, {{10058617618823405015ull, 14763119912724920885ull, 15805132137029042566ull, 4573730604328429104ull}}, {{8592479020978322087ull, 4615263927025687649ull, 9878207585643151604ull, 2858581627705268190ull}}, {{15352284794650290512ull, 5769079908782109561ull, 3124387445199163697ull, 3573227034631585238ull}}, {{5355297938030699428ull, 11823035904405024856ull, 13128856343353730429ull, 4466533793289481547ull}}, {{3347061211269187143ull, 9695240449466834487ull, 5899692205382387566ull, 2791583620805925967ull}}, {{18018884569368647641ull, 2895678524978767300ull, 2762929238300596554ull, 3489479526007407459ull}}, {{4076861638001257935ull, 12842970193078234934ull, 17288719603157909404ull, 4361849407509259323ull}}, {{16383096579032949921ull, 17250228407528672641ull, 8499606742759999425ull, 2726155879693287077ull}}, {{6643812668509023689ull, 7727727454128677090ull, 15236194446877387186ull, 3407694849616608846ull}}, {{17528137872491055420ull, 436287280806070554ull, 9821871021741958175ull, 4259618562020761058ull}}, {{15566772188734297542ull, 7190208578144875952ull, 10750355407016111763ull, 2662261601262975661ull}}, {{1011721162208320311ull, 4376074704253707037ull, 18049630277197527608ull, 3327827001578719576ull}}, {{5876337471187788292ull, 5470093380317133796ull, 4115293772787357894ull, 4159783751973399471ull}}, {{12896082956347143491ull, 17253866417980372334ull, 9489587635633180539ull, 2599864844983374669ull}}, {{6896731658579153556ull, 16955647004048077514ull, 16473670562968863578ull, 3249831056229218336ull}}, {{17844286610078717752ull, 11971186718205321084ull, 2145344130001527857ull, 4062288820286522921ull}}, {{1929307094444422787ull, 564462671237243822ull, 12870055127319424671ull, 2538930512679076825ull}}, {{11635005904910304292ull, 14540636394328718489ull, 2252510853867117126ull, 3173663140848846032ull}}, {{708699325855716653ull, 8952423456056122304ull, 2815638567333896408ull, 3967078926061057540ull}}, {{442937078659822908ull, 5595264660035076440ull, 10983146141438461063ull, 2479424328788160962ull}}, {{553671348324778635ull, 2382394806616457646ull, 4505560639943300521ull, 3099280410985201203ull}}, {{9915461222260749102ull, 7589679526697959961ull, 1020264781501737747ull, 3874100513731501504ull}}, {{17726378309981437949ull, 2437706694972531023ull, 637665488438586092ull, 2421312821082188440ull}}, {{17546286869049409532ull, 3047133368715663779ull, 797081860548232615ull, 3026641026352735550ull}}, {{17321172567884374011ull, 17643974766176743436ull, 10219724362540066576ull, 3783301282940919437ull}}, {{1602360818072957949ull, 11027484228860464648ull, 8693170735801235562ull, 2364563301838074648ull}}, {{2002951022591197436ull, 4560983249220805002ull, 10866463419751544453ull, 2955704127297593310ull}}, {{11727060815093772603ull, 10312915079953394156ull, 4359707237834654758ull, 3694630159121991638ull}}, {{16552785046288383685ull, 1833885906543483443ull, 16559875078928822936ull, 2309143849451244773ull}}, {{16079295289433091702ull, 2292357383179354304ull, 6864785793378864958ull, 2886429811814055967ull}}, {{1652375038081813012ull, 12088818765828968689ull, 3969296223296193293ull, 3608037264767569959ull}}, {{6677154816029654168ull, 1275965402004047149ull, 349934260692853713ull, 4510046580959462449ull}}, {{6479064769232227807ull, 12326693422320999228ull, 11747923959001503330ull, 2818779113099664030ull}}, {{8098830961540284759ull, 6184994741046473227ull, 5461532911897103355ull, 3523473891374580038ull}}, {{5511852683497968045ull, 3119557407880703630ull, 16050288176726155002ull, 4404342364218225047ull}}, {{17279965982468393740ull, 6561409398352827672ull, 16948959138094928732ull, 2752713977636390654ull}}, {{3153213404375940559ull, 8201761747941034591ull, 11962826885763885107ull, 3440892472045488318ull}}, {{17776574810752089411ull, 5640516166498905334ull, 5730161570350080576ull, 4301115590056860398ull}}, {{6498673238292667978ull, 3525322604061815834ull, 17416409036750964072ull, 2688197243785537748ull}}, {{17346713584720610780ull, 4406653255077269792ull, 3323767222229153474ull, 3360246554731922186ull}}, {{3236647907191211859ull, 14731688605701363049ull, 13378081064641217650ull, 4200308193414902732ull}}, {{13552119988062977172ull, 13818991396990739809ull, 17584672702255536839ull, 2625192620884314207ull}}, {{3105091929796557753ull, 12662053227811036858ull, 17369154859392033145ull, 3281490776105392759ull}}, {{13104736949100472999ull, 1992508479481632360ull, 17099757555812653528ull, 4101863470131740949ull}}, {{8190460593187795625ull, 1245317799676020225ull, 12993191481596602407ull, 2563664668832338093ull}}, {{14849761759912132435ull, 15391705304877188993ull, 2406431296713589296ull, 3204580836040422617ull}}, {{4727144144608001831ull, 792887557386934626ull, 7619725139319374525ull, 4005726045050528271ull}}, {{7566151108807389049ull, 2801397732580528093ull, 11679857239715690934ull, 2503578778156580169ull}}, {{14069374904436624215ull, 12725119202580435924ull, 764763494362449955ull, 3129473472695725212ull}}, {{17586718630545780268ull, 11294712984798157001ull, 955954367953062444ull, 3911841840869656515ull}}, {{4074170116450030812ull, 16282567652353623934ull, 16738372544466521691ull, 2444901150543535321ull}}, {{14316084682417314323ull, 15741523547014642013ull, 7087907625300988402ull, 3056126438179419152ull}}, {{4060047797739479191ull, 10453532396913526709ull, 8859884531626235503ull, 3820158047724273940ull}}, {{4843372882800868447ull, 13450986775712036049ull, 14760799869121172997ull, 2387598779827671212ull}}, {{10665902121928473462ull, 2978675414357881349ull, 4255762691914631ull, 2984498474784589016ull}}, {{17944063670837979732ull, 17558402323229515398ull, 5319703364893288ull, 3730623093480736270ull}}, {{6603353775846349429ull, 10974001452018447124ull, 13838382869885222017ull, 2331639433425460168ull}}, {{8254192219807936786ull, 18329187833450446809ull, 17297978587356527521ull, 2914549291781825210ull}}, {{14929426293187308886ull, 9076426736530894799ull, 12399101197340883594ull, 3643186614727281513ull}}, {{14050096848056748203ull, 2122161383808842691ull, 1663818441393940781ull, 4553983268409101892ull}}, {{6475467520821773675ull, 3632193874094220634ull, 10263258562725988796ull, 2846239542755688682ull}}, {{17317706437881992902ull, 4540242342617775792ull, 3605701166552710187ull, 3557799428444610853ull}}, {{3200388973642939511ull, 1063616909844831837ull, 9118812476618275638ull, 4447249285555763566ull}}, {{4306086117740531147ull, 14499818623935183610ull, 1087571779459034369ull, 2779530803472352229ull}}, {{14605979684030439741ull, 4289715224636815800ull, 5971150742751180866ull, 3474413504340440286ull}}, {{18257474605038049677ull, 14585516067650795558ull, 16687310465293751890ull, 4343016880425550357ull}}, {{6799235609721393144ull, 13727633560709135128ull, 12735412050022288883ull, 2714385550265968973ull}}, {{8499044512151741430ull, 12547855932459031006ull, 2084207007245697392ull, 3392981937832461217ull}}, {{1400433603334900979ull, 15684819915573788758ull, 7216944777484509644ull, 4241227422290576521ull}}, {{14710329057366476824ull, 579640410378842165ull, 16039805531996288288ull, 2650767138931610325ull}}, {{4552853266425932318ull, 724550512973552707ull, 6214698859713196648ull, 3313458923664512907ull}}, {{1079380564605027494ull, 905688141216940884ull, 3156687556214107906ull, 4141823654580641134ull}}, {{9897984889732917992ull, 5177741106687975956ull, 15807987777915981153ull, 2588639784112900708ull}}, {{12372481112166147489ull, 11083862401787357849ull, 1313240648685424825ull, 3235799730141125886ull}}, {{1630543334925520650ull, 19769946952033600ull, 10864922847711556840ull, 4044749662676407357ull}}, {{1019089584328450406ull, 12356216845021000ull, 9096419789033416977ull, 2527968539172754598ull}}, {{1273861980410563008ull, 4627131289483664154ull, 2147152699436995413ull, 3159960673965943248ull}}, {{10815699512367979567ull, 10395600130281968096ull, 2683940874296244266ull, 3949950842457429060ull}}, {{6759812195229987230ull, 11108936099853617964ull, 10900835083289928474ull, 2468719276535893162ull}}, {{8449765244037484037ull, 4662798087962246647ull, 4402671817257634785ull, 3085899095669866453ull}}, {{5950520536619467142ull, 10440183628380196213ull, 10115025789999431385ull, 3857373869587333066ull}}, {{6024918344600860916ull, 18054329813806092393ull, 10933577137177032519ull, 2410858668492083166ull}}, {{12142833949178464049ull, 17956226248830227587ull, 4443599384616514841ull, 3013573335615103958ull}}, {{10566856418045692157ull, 8610224755755620772ull, 14777871267625419360ull, 3766966669518879947ull}}, {{15827657298133333406ull, 5381390472347262982ull, 6930326533052193148ull, 2354354168449299967ull}}, {{10561199585811890950ull, 6726738090434078728ull, 4051222147887853531ull, 2942942710561624959ull}}, {{13201499482264863687ull, 3796736594615210506ull, 452341666432429010ull, 3678678388202031199ull}}, {{7278502315976303801ull, 13969292780123788941ull, 14400485138322699974ull, 4598347985252538998ull}}, {{6854906956698883828ull, 4119121969149980184ull, 4388617193024299580ull, 2873967490782836874ull}}, {{8568633695873604785ull, 5148902461437475230ull, 14709143528135150283ull, 3592459363478546092ull}}, {{1487420082987230173ull, 1824442058369456134ull, 18386429410168937854ull, 4490574204348182615ull}}, {{14764695607149182570ull, 14975334341763073795ull, 18409047408996668014ull, 2806608877717614134ull}}, {{13844183490509090309ull, 9495795890349066436ull, 13787937224391059210ull, 3508261097147017668ull}}, {{17305229363136362886ull, 2646372826081557237ull, 17234921530488824013ull, 4385326371433772085ull}}, {{13121611361173920756ull, 3959826025514667225ull, 13077668965769208960ull, 2740828982146107553ull}}, {{2566956146185237232ull, 4949782531893334032ull, 2512028151929347488ull, 3426036227682634442ull}}, {{3208695182731546540ull, 6187228164866667540ull, 12363407226766460168ull, 4282545284603293052ull}}, {{11228806526061992396ull, 3867017603041667212ull, 16950501553583813413ull, 2676590802877058157ull}}, {{14036008157577490495ull, 9445458022229471919ull, 7353068886697603054ull, 3345738503596322697ull}}, {{12933324178544475214ull, 2583450490932064091ull, 13803022126799391722ull, 4182173129495403371ull}}, {{5777484602376603057ull, 6226342575259927961ull, 6321045820035925874ull, 2613858205934627107ull}}, {{11833541771398141725ull, 17006300255929685759ull, 3289621256617519438ull, 3267322757418283884ull}}, {{10180241195820289253ull, 12034503283057331391ull, 4112026570771899298ull, 4084153446772854855ull}}, {{13280179775028762639ull, 12133250570338220023ull, 9487545634373518917ull, 2552595904233034284ull}}, {{11988538700358565395ull, 1331505157640611317ull, 11859432042966898647ull, 3190744880291292855ull}}, {{1150615320166043031ull, 15499439502332927859ull, 10212604035281235404ull, 3988431100364116069ull}}, {{16860035639599634559ull, 463777652103304103ull, 8688720531264466080ull, 2492769437727572543ull}}, {{16463358531072155294ull, 579722065129130129ull, 6249214645653194696ull, 3115961797159465679ull}}, {{6744140108558030406ull, 724652581411412662ull, 3199832288639105466ull, 3894952246449332099ull}}, {{18050145623130932716ull, 5064593881809520817ull, 18140796244895298580ull, 2434345154030832561ull}}, {{8727623973631502183ull, 6330742352261901022ull, 8840937250836959513ull, 3042931442538540702ull}}, {{1686157930184601920ull, 12525113958754764182ull, 1827799526691423583ull, 3803664303173175878ull}}, {{14888906761647539912ull, 14745725251862809469ull, 14977432759464303451ull, 2377290189483234923ull}}, {{4776075396777261178ull, 13820470546401123933ull, 14110104930902991410ull, 2971612736854043654ull}}, {{10581780264398964377ull, 8052216146146629108ull, 8414259126773963455ull, 3714515921067554568ull}}, {{15836984702104128544ull, 11950164118982725048ull, 5258911954233727159ull, 2321572450667221605ull}}, {{1349486803920609063ull, 10326019130301018407ull, 11185325961219546853ull, 2901965563334027006ull}}, {{15521916560182925041ull, 17519209931303660912ull, 4758285414669657758ull, 3627456954167533758ull}}, {{955651626519104685ull, 12675640377274800333ull, 15171228805191848006ull, 4534321192709417197ull}}, {{2903125275788134380ull, 3310589217369362304ull, 11787861012458598956ull, 2833950745443385748ull}}, {{3628906594735167975ull, 4138236521711702880ull, 14734826265573248695ull, 3542438431804232185ull}}, {{4536133243418959969ull, 561109633712240696ull, 4583474776684397157ull, 4428048039755290232ull}}, {{2835083277136849981ull, 2656536530283844387ull, 2864671735427748223ull, 2767530024847056395ull}}, {{17378912151703226188ull, 17155728718136969195ull, 17415897724566848990ull, 3459412531058820493ull}}, {{17111954171201644831ull, 12221288860816435686ull, 7934814100426397526ull, 4324265663823525617ull}}, {{6083285338573640115ull, 3026619519582884400ull, 16488473858834968214ull, 2702666039889703510ull}}, {{7604106673217050144ull, 13006646436333381308ull, 11387220286688934459ull, 3378332549862129388ull}}, {{9505133341521312680ull, 11646622026989338731ull, 14234025358361168074ull, 4222915687327661735ull}}, {{3634865329237126473ull, 11890824785295724611ull, 15813794876616811902ull, 2639322304579788584ull}}, {{18378639716828571803ull, 5640158944764879955ull, 1320499522061463262ull, 3299152880724735731ull}}, {{18361613627608326850ull, 16273570717810875752ull, 15485682457858992789ull, 4123941100905919663ull}}, {{11476008517255204282ull, 12476824707845491297ull, 16596080563802952349ull, 2577463188066199789ull}}, {{509952591286841640ull, 1760972829524700410ull, 6910042649471526725ull, 3221828985082749737ull}}, {{9860812775963327858ull, 6812902055333263416ull, 13249239330266796310ull, 4027286231353437171ull}}, {{6163007984977079911ull, 18093121839865453347ull, 5974931572203053741ull, 2517053894595898232ull}}, {{3092073962793961985ull, 8781344244549652972ull, 7468664465253817177ull, 3146317368244872790ull}}, {{3865092453492452481ull, 15588366324114454119ull, 112458544712495663ull, 3932896710306090988ull}}, {{9333211811073864657ull, 16660257980212615680ull, 9293658627300085597ull, 2458060443941306867ull}}, {{11666514763842330821ull, 6990264419983605888ull, 7005387265697719093ull, 3072575554926633584ull}}, {{14583143454802913526ull, 13349516543406895264ull, 8756734082122148866ull, 3840719443658291980ull}}, {{9114464659251820954ull, 12955133858056697444ull, 14696330838181118849ull, 2400449652286432487ull}}, {{11393080824064776192ull, 2358859267288708093ull, 13758727529299010658ull, 3000562065358040609ull}}, {{406292974798806528ull, 12171946120965660925ull, 3363351356341599610ull, 3750702581697550762ull}}, {{2559776118462948032ull, 12219152344030925982ull, 6713780616140887660ull, 2344189113560969226ull}}, {{12423092184933460848ull, 15273940430038657477ull, 17615597807030885383ull, 2930236391951211532ull}}, {{1693807175884662348ull, 14480739519120933943ull, 3572753185079055113ull, 3662795489939014416ull}}, {{15952317025137991647ull, 4265866343619003716ull, 4465941481348818892ull, 4578494362423768020ull}}, {{746826103856468972ull, 11889538501616653131ull, 12014585462697787615ull, 2861558976514855012ull}}, {{14768590685102749926ull, 10250237108593428509ull, 15018231828372234519ull, 3576948720643568765ull}}, {{4625680301096273696ull, 8201110367314397733ull, 4937731730183129437ull, 4471185900804460957ull}}, {{5196893197398865012ull, 7431536988785192535ull, 5391925340578149850ull, 2794491188002788098ull}}, {{1884430478321193361ull, 66049199126714861ull, 15963278712577463121ull, 3493113985003485122ull}}, {{6967224116328879605ull, 4694247517335781480ull, 10730726353867053093ull, 4366392481254356403ull}}, {{4354515072705549753ull, 5239747707548557377ull, 4400860961953214231ull, 2728995300783972752ull}}, {{10054829859309325096ull, 1937998616008308817ull, 5501076202441517789ull, 3411244125979965940ull}}, {{17180223342564044273ull, 7034184288437773925ull, 6876345253051897236ull, 4264055157474957425ull}}, {{13043482598316221623ull, 13619737217128384511ull, 15826930829225905532ull, 2665034473421848390ull}}, {{11692667229467889125ull, 17024671521410480639ull, 10560291499677606107ull, 3331293091777310488ull}}, {{10004148018407473502ull, 16669153383335712895ull, 13200364374597007634ull, 4164116364721638110ull}}, {{13170121539145752795ull, 15029906883012208463ull, 3638541715695741867ull, 2602572727951023819ull}}, {{11850965905504803089ull, 14175697585337872675ull, 18383235199901841046ull, 3253215909938779773ull}}, {{10202021363453615958ull, 8496249944817565036ull, 9143985944595137596ull, 4066519887423474717ull}}, {{15599635389013285782ull, 14533528252365753955ull, 8020834224585654949ull, 2541574929639671698ull}}, {{14887858217839219323ull, 4331852260175028732ull, 802670743877292879ull, 3176968662049589623ull}}, {{163078698589472538ull, 803129306791398012ull, 14838396485128779811ull, 3971210827561987028ull}}, {{9325296223473196144ull, 16642856881240481421ull, 50625766350711573ull, 2482006767226241893ull}}, {{16268306297768883084ull, 6968513046268438064ull, 4674968226365777371ull, 3102508459032802366ull}}, {{1888638798501552239ull, 4098955289408159677ull, 15067082319811997522ull, 3878135573791002957ull}}, {{3486242258277164102ull, 7173533074307487702ull, 11722769459096192403ull, 2423834733619376848ull}}, {{13581174859701230935ull, 4355230324456971723ull, 14653461823870240504ull, 3029793417024221060ull}}, {{12364782556199150764ull, 5444037905571214654ull, 18316827279837800630ull, 3787241771280276325ull}}, {{3116303079197081324ull, 17237581746264172871ull, 13753860059112319345ull, 2367026107050172703ull}}, {{17730436904278515367ull, 7711919127548052376ull, 12580639055463011278ull, 2958782633812715879ull}}, {{3716302056638592592ull, 416526872580289663ull, 11114112800901376194ull, 3698478292265894849ull}}, {{9240217813040202226ull, 4872015313790068943ull, 28791472922278265ull, 2311548932666184281ull}}, {{6938586247872864879ull, 10701705160664974083ull, 4647675359580235735ull, 2889436165832730351ull}}, {{4061546791413693195ull, 8765445432403829700ull, 1197908181047906765ull, 3611795207290912939ull}}, {{5076933489267116493ull, 15568492808932175029ull, 15332443281592047168ull, 4514744009113641173ull}}, {{5478926440005641760ull, 9730308005582609393ull, 11888620060208723432ull, 2821715005696025733ull}}, {{11460344068434440104ull, 12162885006978261741ull, 1025717019978740578ull, 3527143757120032167ull}}, {{490372030260886418ull, 5980234221868051369ull, 15117204330255589435ull, 4408929696400040208ull}}, {{11835697564981523772ull, 1431803379453838153ull, 9448252706409743397ull, 2755581060250025130ull}}, {{959563900944741002ull, 6401440242744685596ull, 2586943846157403438ull, 3444476325312531413ull}}, {{1199454876180926253ull, 17225172340285632803ull, 7845365826124142201ull, 4305595406640664266ull}}, {{16890560362108936572ull, 3848203685037438645ull, 9515039659754976780ull, 2690997129150415166ull}}, {{7278142397354007003ull, 4810254606296798307ull, 2670427537838945167ull, 3363746411438018958ull}}, {{4485991978265120850ull, 1401132239443609980ull, 12561406459153457267ull, 4204683014297523697ull}}, {{12027117023270476339ull, 17016608714148113901ull, 933350009329828935ull, 2627926883935952311ull}}, {{1198838223805931712ull, 16659074874257754473ull, 15001745566944449881ull, 3284908604919940388ull}}, {{6110233798184802544ull, 6988785537540029379ull, 305437884971010736ull, 4106135756149925486ull}}, {{1513053114651807638ull, 4367990960962518362ull, 14025956733389045422ull, 2566334847593703428ull}}, {{11114688430169535356ull, 14683360738057923760ull, 17532445916736306777ull, 3207918559492129285ull}}, {{13893360537711919194ull, 4519142867290240988ull, 8080499340638219760ull, 4009898199365161607ull}}, {{17906722372924725305ull, 2824464292056400617ull, 11967841115539969206ull, 2506186374603226004ull}}, {{8548344910873742919ull, 12753952401925276580ull, 14959801394424961507ull, 3132732968254032505ull}}, {{10685431138592178648ull, 11330754483979207821ull, 4864693687749038172ull, 3915916210317540632ull}}, {{8984237470833805607ull, 16305093589341780696ull, 3040433554843148857ull, 2447447631448462895ull}}, {{11230296838542257009ull, 6546308931395062158ull, 17635599998836099784ull, 3059309539310578618ull}}, {{4814499011323045453ull, 8182886164243827698ull, 12821127961690348922ull, 3824136924138223273ull}}, {{7620747900504291312ull, 9725989871079780215ull, 1095675948415386220ull, 2390085577586389546ull}}, {{4914248857202976236ull, 12157487338849725269ull, 10592966972374008583ull, 2987606971982986932ull}}, {{10754497089931108199ull, 10585173155134768682ull, 13241208715467510729ull, 3734508714978733665ull}}, {{11333246699634330529ull, 18144948268027700186ull, 1358226419526112349ull, 2334067946861708541ull}}, {{4943186337688137353ull, 8846127279752461521ull, 6309469042835028341ull, 2917584933577135676ull}}, {{10790668940537559595ull, 15669345118117964805ull, 7886836303543785426ull, 3646981166971419595ull}}, {{18100022194099337398ull, 10363309360792680198ull, 5246859361002343879ull, 4558726458714274494ull}}, {{6700827852884697970ull, 13394597378136506980ull, 17114345155908628636ull, 2849204036696421558ull}}, {{8376034816105872462ull, 16743246722670633725ull, 12169559408031009987ull, 3561505045870526948ull}}, {{15081729538559728481ull, 16317372384910904252ull, 15211949260038762484ull, 4451881307338158685ull}}, {{202708924745054493ull, 974985703714539350ull, 11813311296737920505ull, 2782425817086349178ull}}, {{9476758192786093924ull, 5830418148070562091ull, 5543267084067624823ull, 3478032271357936473ull}}, {{7234261722555229501ull, 2676336666660814710ull, 11540769873511918933ull, 4347540339197420591ull}}, {{18356471631879182150ull, 3978553425876703145ull, 14130510198586031189ull, 2717212711998387869ull}}, {{9110531484566813976ull, 9584877800773266836ull, 3828079692950375274ull, 3396515889997984837ull}}, {{11388164355708517470ull, 2757725214111807737ull, 9396785634615356997ull, 4245644862497481046ull}}, {{200073694676741563ull, 4029421268033573788ull, 1261305003207210219ull, 2653528039060925654ull}}, {{250092118345926953ull, 425090566614579331ull, 10800003290863788582ull, 3316910048826157067ull}}, {{14147673203214572403ull, 9754735245122999971ull, 8888318095152347823ull, 4146137561032696334ull}}, {{6536452742795413800ull, 13014238555842956838ull, 943512791042829485ull, 2591335975645435209ull}}, {{17393937965349043058ull, 2432740139521532335ull, 5791077007230924761ull, 3239169969556794011ull}}, {{17130736438258915919ull, 7652611192829303323ull, 2627160240611268047ull, 4048962461945992514ull}}, {{8400867264698128497ull, 11700411023159396433ull, 6253661168809430433ull, 2530601538716245321ull}}, {{15112770099300048526ull, 790455723667081829ull, 12428762479439175946ull, 3163251923395306651ull}}, {{5055904568842896945ull, 10211441691438628095ull, 10924267080871582028ull, 3954064904244133314ull}}, {{10077469383167892447ull, 15605523094003918367ull, 11439352943972126671ull, 2471290565152583321ull}}, {{7985150710532477654ull, 14895217849077510055ull, 464133124682994627ull, 3089113206440729152ull}}, {{5369752369738209164ull, 14007336292919499665ull, 580166405853743284ull, 3861391508050911440ull}}, {{14885310277154850488ull, 17977957219929463098ull, 362604003658589552ull, 2413369692531819650ull}}, {{9383265809588787301ull, 4025702451202277257ull, 9676627041428012749ull, 3016712115664774562ull}}, {{16340768280413372031ull, 9643814082430234475ull, 2872411764930240128ull, 3770890144580968203ull}}, {{7907137166044663567ull, 6027383801518896547ull, 17936158417577257744ull, 2356806340363105126ull}}, {{5272235439128441555ull, 7534229751898620684ull, 13196825985116796372ull, 2946007925453881408ull}}, {{6590294298910551944ull, 9417787189873275855ull, 16496032481395995465ull, 3682509906817351760ull}}, {{3626181855210802025ull, 16383920005768982723ull, 2173296528035442715ull, 4603137383521689701ull}}, {{18407264724002608930ull, 7934106994391920249ull, 3664153339235845649ull, 2876960864701056063ull}}, {{9174022849721097450ull, 14529319761417288216ull, 18415249729326970773ull, 3596201080876320078ull}}, {{11467528562151371813ull, 4326591646489446558ull, 13795690124803937659ull, 4495251351095400098ull}}, {{2555519332917219479ull, 398276769842210147ull, 13233992346429848941ull, 2809532094434625061ull}}, {{17029457221428688061ull, 5109531980730150587ull, 2707432377755147464ull, 3511915118043281327ull}}, {{16675135508358472172ull, 6386914975912688234ull, 17219348527476098042ull, 4389893897554101658ull}}, {{15033645711151433012ull, 8603507878372818050ull, 15373778848099949180ull, 2743683685971313536ull}}, {{9568685102084515456ull, 10754384847966022563ull, 770479486415384859ull, 3429604607464141921ull}}, {{7349170359178256416ull, 8831295041530140300ull, 5574785376446618978ull, 4287005759330177401ull}}, {{13816603511341186068ull, 10131245419383725591ull, 15013455906347606621ull, 2679378599581360875ull}}, {{12659068370749094681ull, 17275742792657044893ull, 14155133864507120372ull, 3349223249476701094ull}}, {{1988777408154204640ull, 3147934417111754501ull, 8470545293779124658ull, 4186529061845876368ull}}, {{3548828889310071852ull, 6579145029122234467ull, 5294090808611952911ull, 2616580663653672730ull}}, {{18271094166919753527ull, 3612245267975405179ull, 15840985547619716947ull, 3270725829567090912ull}}, {{18227181690222304005ull, 18350364640251420186ull, 1354487860815094567ull, 4088407286958863641ull}}, {{16003674574816327907ull, 18386506927798219472ull, 12375769959077903864ull, 2555254554349289775ull}}, {{1557849144810858268ull, 4536389586038222725ull, 10858026430419991927ull, 3194068192936612219ull}}, {{6558997449440960738ull, 1058800964120390502ull, 8960847019597602005ull, 3992585241170765274ull}}, {{17934431461182764174ull, 2967593611788938015ull, 10212215405675889157ull, 2495365775731728296ull}}, {{17806353308051067313ull, 8321178033163560423ull, 12765269257094861446ull, 3119207219664660370ull}}, {{17646255616636446237ull, 1178100504599674721ull, 6733214534513801000ull, 3899009024580825463ull}}, {{4111380732756697042ull, 736312815374796701ull, 11125788111712207481ull, 2436880640363015914ull}}, {{9750911934373259207ull, 5532077037645883780ull, 4683863102785483543ull, 3046100800453769893ull}}, {{12188639917966574008ull, 2303410278629966821ull, 10466514896909242333ull, 3807626000567212366ull}}, {{9923742957942802707ull, 3745474433357423215ull, 1929885792140888554ull, 2379766250354507729ull}}, {{7792992679001115480ull, 13905215078551554827ull, 7024043258603498596ull, 2974707812943134661ull}}, {{5129554830324006446ull, 17381518848189443534ull, 13391740091681761149ull, 3718384766178918326ull}}, {{17041029824234667741ull, 13169292289332096160ull, 3758151538873712814ull, 2323990478861823954ull}}, {{2854543206583783060ull, 7238243324810344393ull, 13921061460446916826ull, 2904988098577279942ull}}, {{8179865026657116729ull, 18271176192867706299ull, 8177954788703870224ull, 3631235123221599928ull}}, {{5613145264894008007ull, 4392226167375081258ull, 10222443485879837781ull, 4539043904026999910ull}}, {{8119901808986142909ull, 5050984363823119738ull, 1777341160247510709ull, 2836902440016874944ull}}, {{926505224377902828ull, 10925416473206287577ull, 2221676450309388386ull, 3546128050021093680ull}}, {{5769817548899766439ull, 4433398554653083663ull, 2777095562886735483ull, 4432660062526367100ull}}, {{10523664995703435880ull, 465031087444483337ull, 10959056763658985485ull, 2770412539078979437ull}}, {{17766267263056682754ull, 5192974877732992075ull, 18310506973001119760ull, 3463015673848724296ull}}, {{17596148060393465539ull, 6491218597166240094ull, 4441389642541848084ull, 4328769592310905371ull}}, {{6385906519318528058ull, 13280383660083675867ull, 470025517374961100ull, 2705480995194315857ull}}, {{3370697130720772168ull, 16600479575104594834ull, 5199217915146089279ull, 3381851243992894821ull}}, {{13436743450255741018ull, 16138913450453355638ull, 11110708412359999503ull, 4227314054991118526ull}}, {{3786278637982450233ull, 17004349934174429130ull, 2332506739297611785ull, 2642071284369449079ull}}, {{13956220334332838599ull, 7420379362435872700ull, 16750691479404178444ull, 3302589105461811348ull}}, {{17445275417916048248ull, 9275474203044840875ull, 2491620275545671439ull, 4128236381827264186ull}}, {{8597454126983836203ull, 12714700404544107403ull, 6168948690643432553ull, 2580147738642040116ull}}, {{6135131640302407350ull, 2058317450397970542ull, 7711185863304290692ull, 3225184673302550145ull}}, {{16892286587232784995ull, 2572896812997463177ull, 14250668347557751269ull, 4031480841628187681ull}}, {{3640150089379408766ull, 3913903517337108438ull, 1989138689582512687ull, 2519675526017617301ull}}, {{13773559648579036766ull, 280693378243997643ull, 7098109380405528763ull, 3149594407522021626ull}}, {{12605263542296408053ull, 14185924778087160766ull, 18096008762361686761ull, 3936993009402527032ull}}, {{3266603695507867129ull, 1948673958663393623ull, 11310005476476054226ull, 2460620630876579395ull}}, {{17918312674666997623ull, 11659214485184017836ull, 9525820827167679878ull, 3075775788595724244ull}}, {{3951146769624195413ull, 5350646069625246488ull, 11907276033959599848ull, 3844719735744655305ull}}, {{2469466731015122133ull, 3344153793515779055ull, 524518493583668049ull, 2402949834840409566ull}}, {{16921891469051066379ull, 8791878260322111722ull, 9879020153834360869ull, 3003687293550511957ull}}, {{11928992299459057165ull, 15601533843830027557ull, 16960461210720338990ull, 3754609116938139946ull}}, {{9761463196375604680ull, 5139272633966379319ull, 15211974275127599773ull, 2346630698086337466ull}}, {{7590142977042117946ull, 11035776810885362053ull, 9791595807054723908ull, 2933288372607921833ull}}, {{14099364739730035337ull, 13794721013606702566ull, 16851180777245792789ull, 3666610465759902291ull}}, {{8400833887807768363ull, 3408343211726214496ull, 16452289953129853083ull, 4583263082199877864ull}}, {{5250521179879855227ull, 18271115571824741724ull, 10282681220706158176ull, 2864539426374923665ull}}, {{6563151474849819034ull, 4392150391071375539ull, 17465037544310085625ull, 3580674282968654581ull}}, {{3592253325134885888ull, 10101874007266607328ull, 7996238875105443319ull, 4475842853710818227ull}}, {{2245158328209303680ull, 13231200282182711436ull, 2691806287727208122ull, 2797401783569261392ull}}, {{2806447910261629600ull, 7315628315873613487ull, 3364757859659010153ull, 3496752229461576740ull}}, {{17343117943109200712ull, 13756221413269404762ull, 4205947324573762691ull, 4370940286826970925ull}}, {{15451134732870638349ull, 6291795374079684024ull, 4934560087072295634ull, 2731837679266856828ull}}, {{867174342378746320ull, 17088116254454380839ull, 6168200108840369542ull, 3414797099083571035ull}}, {{14919025983255596612ull, 12136773281213200240ull, 3098564117623074024ull, 4268496373854463794ull}}, {{9324391239534747883ull, 7585483300758250150ull, 6548288591941809169ull, 2667810233659039871ull}}, {{2432117012563659045ull, 14093540144375200592ull, 3573674721499873557ull, 3334762792073799839ull}}, {{3040146265704573807ull, 3781867125186837028ull, 18302151457157005659ull, 4168453490092249798ull}}, {{11123463452920134437ull, 57823944028079190ull, 6827158642295740633ull, 2605283431307656124ull}}, {{4680957279295392239ull, 4683965948462486892ull, 8533948302869675791ull, 3256604289134570155ull}}, {{5851196599119240298ull, 1243271417150720711ull, 6055749360159706835ull, 4070755361418212694ull}}, {{10574526902090607043ull, 16917945700215058108ull, 17619901405381980483ull, 2544222100886382933ull}}, {{13218158627613258803ull, 16535746106841434731ull, 8189818701445311892ull, 3180277626107978667ull}}, {{11911012266089185600ull, 2222938559842241798ull, 5625587358379251962ull, 3975347032634973334ull}}, {{2832696647878353096ull, 6001022618328789028ull, 17351050154269196188ull, 2484591895396858333ull}}, {{3540870809847941370ull, 7501278272910986285ull, 7853754637554331523ull, 3105739869246072917ull}}, {{9037774530737314616ull, 4764911822711344952ull, 14428879315370302308ull, 3882174836557591146ull}}, {{5648609081710821635ull, 12201441926049366403ull, 13629735590533826846ull, 2426359272848494466ull}}, {{2449075333711139140ull, 6028430370706932196ull, 7813797451312507750ull, 3032949091060618083ull}}, {{3061344167138923925ull, 16758910000238441053ull, 5155560795713246783ull, 3791186363825772604ull}}, {{4219183113675521405ull, 17391847777790107514ull, 12445597534175555047ull, 2369491477391107877ull}}, {{14497350928949177564ull, 17128123703810246488ull, 1721938862437280097ull, 2961864346738884847ull}}, {{18121688661186471955ull, 7575096574480644398ull, 15987481633328763834ull, 3702330433423606058ull}}, {{6714369394814157068ull, 9346121377477790653ull, 14603862039257865300ull, 2313956520889753786ull}}, {{13004647761945084239ull, 11682651721847238316ull, 9031455512217555817ull, 2892445651112192233ull}}, {{16255809702431355299ull, 768256597026884183ull, 15901005408699332676ull, 3615557063890240291ull}}, {{15708076109611806220ull, 960320746283605229ull, 15264570742446777941ull, 4519446329862800364ull}}, {{12123390577721072839ull, 2906043475640947220ull, 316984677174460405ull, 2824653956164250228ull}}, {{15154238222151341049ull, 8244240362978571929ull, 396230846468075506ull, 3530817445205312785ull}}, {{5107739722407012599ull, 1081928416868439104ull, 5106974576512482287ull, 4413521806506640981ull}}, {{3192337326504382875ull, 7593734288183856296ull, 5497702119533995381ull, 2758451129066650613ull}}, {{3990421658130478593ull, 14103853878657208274ull, 11483813667844882130ull, 3448063911333313266ull}}, {{14211399109517874050ull, 8406445311466734534ull, 5131395047951326855ull, 4310079889166641583ull}}, {{4270438425021283377ull, 12171557347307790940ull, 10124650932610661140ull, 2693799930729150989ull}}, {{5338048031276604221ull, 15214446684134738675ull, 17267499684190714329ull, 3367249913411438736ull}}, {{2060874020668367373ull, 5183000299886259632ull, 3137630531528841296ull, 4209062391764298421ull}}, {{1288046262917729608ull, 3239375187428912270ull, 4266862091419219762ull, 2630663994852686513ull}}, {{10833429865501937818ull, 13272591021140916145ull, 9945263632701412606ull, 3288329993565858141ull}}, {{18153473350304810176ull, 7367366739571369373ull, 17043265559304153662ull, 4110412491957322676ull}}, {{13651763853154200312ull, 18439662267514269570ull, 1428668937710320230ull, 2569007807473326673ull}}, {{7841332779587974582ull, 13826205797538061155ull, 6397522190565288192ull, 3211259759341658341ull}}, {{5189979956057580324ull, 17282757246922576444ull, 12608588756633998144ull, 4014074699177072926ull}}, {{12467109509390763511ull, 10801723279326610277ull, 3268681954468860936ull, 2508796686985670579ull}}, {{1748828831456290676ull, 13502154099158262847ull, 17920910498368239882ull, 3135995858732088223ull}}, {{16021094094602527057ull, 7654320587093052750ull, 17789452104532911949ull, 3919994823415110279ull}}, {{5401497790699191507ull, 7089793376146851921ull, 18035936592974151824ull, 2449996764634443924ull}}, {{11363558256801377287ull, 8862241720183564901ull, 4098176667508138164ull, 3062495955793054906ull}}, {{369389765719557897ull, 11077802150229456127ull, 14346092871239948513ull, 3828119944741318632ull}}, {{7148397631215805542ull, 6097316252328223ull, 8966308044524967821ull, 2392574965463324145ull}}, {{4323811020592369023ull, 4619307663742798183ull, 15819571074083597680ull, 2990718706829155181ull}}, {{793077757313073375ull, 5774134579678497729ull, 5939405787322333388ull, 3738398383536443977ull}}, {{12024888644389140619ull, 12832206149153836888ull, 15241343663144928127ull, 2336498989710277485ull}}, {{15031110805486425774ull, 11428571668014908206ull, 5216621523648996447ull, 2920623737137846857ull}}, {{9565516470003256410ull, 9674028566591247354ull, 11132462922988633463ull, 3650779671422308571ull}}, {{2733523550649294704ull, 7480849689811671289ull, 9303892635308403925ull, 4563474589277885714ull}}, {{13237667265224278950ull, 6981374065345988507ull, 10426618915495140357ull, 2852171618298678571ull}}, {{11935398063102960784ull, 13338403600109873538ull, 8421587625941537542ull, 3565214522873348214ull}}, {{5695875542023925171ull, 7449632463282566115ull, 1303612495572146120ull, 4456518153591685268ull}}, {{1254079204551259280ull, 4656020289551603822ull, 10038129846587367133ull, 2785323845994803292ull}}, {{10790971042543849908ull, 10431711380366892681ull, 12547662308234208916ull, 3481654807493504115ull}}, {{18100399821607200289ull, 13039639225458615851ull, 11072891866865373241ull, 4352068509366880144ull}}, {{9006906879290806229ull, 1232245488270553051ull, 6920557416790858276ull, 2720042818354300090ull}}, {{6646947580686119882ull, 1540306860338191314ull, 17874068807843348653ull, 3400053522942875112ull}}, {{17532056512712425660ull, 6537069593850127046ull, 3895841936094634200ull, 4250066903678593891ull}}, {{6345849302017878134ull, 4085668496156329404ull, 129058200845452423ull, 2656291814799121182ull}}, {{7932311627522347667ull, 495399601768023851ull, 9384694787911591337ull, 3320364768498901477ull}}, {{5303703515975546680ull, 5230935520637417718ull, 16342554503316877075ull, 4150455960623626846ull}}, {{17149872752766880387ull, 963491691184692121ull, 5602410546145660268ull, 2594034975389766779ull}}, {{7602282885676436772ull, 1204364613980865152ull, 2391327164254687431ull, 3242543719237208474ull}}, {{9502853607095545965ull, 15340513822758245152ull, 12212530992173135096ull, 4053179649046510592ull}}, {{5939283504434716228ull, 9587821139223903220ull, 7632831870108209435ull, 2533237280654069120ull}}, {{7424104380543395285ull, 7373090405602491121ull, 9541039837635261794ull, 3166546600817586400ull}}, {{13891816494106632010ull, 18439735043857889709ull, 11926299797044077242ull, 3958183251021983000ull}}, {{10988228318030338959ull, 16136520420838568972ull, 7453937373152548276ull, 2473864531888739375ull}}, {{13735285397537923698ull, 1723906452338659599ull, 4705735698013297442ull, 3092330664860924219ull}}, {{12557420728495016718ull, 11378255102278100307ull, 1270483604089233898ull, 3865413331076155274ull}}, {{5542544946095691497ull, 11723095457351200596ull, 5405738270983159090ull, 2415883331922597046ull}}, {{6928181182619614371ull, 5430497284834224937ull, 15980544875583724671ull, 3019854164903246307ull}}, {{13271912496701905868ull, 2176435587615393267ull, 15363995076052267935ull, 3774817706129057884ull}}, {{5989102301224997216ull, 8277801269900702648ull, 379124885677891651ull, 2359261066330661178ull}}, {{7486377876531246520ull, 5735565568948490406ull, 9697278143952140372ull, 2949076332913326472ull}}, {{134600308809282341ull, 7169456961185613008ull, 12121597679940175465ull, 3686345416141658090ull}}, {{168250386011602926ull, 13573507219909404164ull, 5928625063070443523ull, 4607931770177072613ull}}, {{9328528528112027637ull, 6177599003229683650ull, 6011233673632721154ull, 2879957356360670383ull}}, {{2437288623285258738ull, 16945370790891880371ull, 2902356073613513538ull, 3599946695450837979ull}}, {{16881668834388737135ull, 11958341451760074655ull, 17463003147299055635ull, 4499933369313547473ull}}, {{17468572049134042565ull, 5168120398136352707ull, 3996847939420827916ull, 2812458355820967171ull}}, {{17224029042990165303ull, 6460150497670440884ull, 384373905848646991ull, 3515572944776208964ull}}, {{3083292230028155012ull, 3463502103660663202ull, 480467382310808739ull, 4394466180970261205ull}}, {{6538743662194984787ull, 18305589879283772165ull, 2606135123157949413ull, 2746541363106413253ull}}, {{12785115596171118887ull, 9046929293822551494ull, 7869354922374824671ull, 3433176703883016566ull}}, {{6758022458359122801ull, 6696975598850801464ull, 613321616113755031ull, 4291470879853770708ull}}, {{4223764036474451751ull, 11103138776922832771ull, 9606698046925872702ull, 2682169299908606692ull}}, {{668019027165676785ull, 4655551434298765156ull, 12008372558657340878ull, 3352711624885758365ull}}, {{835023783957095981ull, 15042811329728232253ull, 1175407643039512385ull, 4190889531107197957ull}}, {{2827732874186878940ull, 2484228053439063302ull, 3040472786113389193ull, 2619305956941998723ull}}, {{12758038129588374483ull, 7716971085226217031ull, 17635649037923900203ull, 3274132446177498403ull}}, {{11335861643558080200ull, 5034527838105383385ull, 17432875278977487350ull, 4092665557721873004ull}}, {{167384499582718269ull, 16981637954098028328ull, 1672175012506153785ull, 2557915973576170628ull}}, {{209230624478397836ull, 7391989387340371698ull, 2090218765632692232ull, 3197394966970213285ull}}, {{9484910317452773103ull, 9239986734175464622ull, 7224459475468253194ull, 3996743708712766606ull}}, {{1316382929980595285ull, 10386677727287053293ull, 18350345227449821958ull, 2497964817945479128ull}}, {{6257164680903132011ull, 3759975122254040808ull, 4491187460602725832ull, 3122456022431848911ull}}, {{7821455851128915013ull, 4699968902817551010ull, 1002298307326019386ull, 3903070028039811139ull}}, {{9500095925382959787ull, 7549166582688357285ull, 16767337506574619780ull, 2439418767524881961ull}}, {{16486805925156087638ull, 9436458228360446606ull, 7124113827936111013ull, 3049273459406102452ull}}, {{11385135369590333740ull, 16407258803877946162ull, 8905142284920138766ull, 3811591824257628065ull}}, {{11727395624421346491ull, 5642850733996328447ull, 17094928974143556489ull, 2382244890161017540ull}}, {{10047558512099295210ull, 11665249435922798463ull, 2921917143969893995ull, 2977806112701271926ull}}, {{7947762121696731109ull, 9969875776476110175ull, 12875768466817143302ull, 3722257640876589907ull}}, {{11884880353701538799ull, 1619486341870180955ull, 5741512282547020612ull, 2326411025547868692ull}}, {{10244414423699535595ull, 2024357927337726194ull, 7176890353183775765ull, 2908013781934835865ull}}, {{3582145992769643685ull, 7142133427599545647ull, 13582798959907107610ull, 3635017227418544831ull}}, {{18312740546244218319ull, 18151038821354207866ull, 12366812681456496608ull, 4543771534273181039ull}}, {{16057148859830024353ull, 11344399263346379916ull, 14646786953551392236ull, 2839857208920738149ull}}, {{1624692001077978825ull, 14180499079182974896ull, 4473425636657076583ull, 3549821511150922687ull}}, {{2030865001347473532ull, 13113937830551330716ull, 980096027393957825ull, 4437276888938653359ull}}, {{10492662662696946765ull, 1278682116453499841ull, 7530089044762305497ull, 2773298055586658349ull}}, {{17727514346798571361ull, 6210038663994262705ull, 14024297324380269775ull, 3466622569483322936ull}}, {{8324334878216050489ull, 3150862311565440478ull, 17530371655475337219ull, 4333278211854153670ull}}, {{591023280457643652ull, 18110190009224257963ull, 6344796266244697857ull, 2708298882408846044ull}}, {{14573837155854218276ull, 8802679456248158741ull, 7930995332805872322ull, 3385373603011057555ull}}, {{4382238389535609133ull, 1779977283455422619ull, 5302058147579952499ull, 4231717003763821944ull}}, {{433055984246061757ull, 17253386866655496801ull, 3313786342237470311ull, 2644823127352388715ull}}, {{5153005998734965100ull, 16955047564891983097ull, 17977290983079001601ull, 3306028909190485893ull}}, {{11052943516846094278ull, 7358751400832815159ull, 8636555673566588290ull, 4132536136488107367ull}}, {{13825618725669890780ull, 9210905643947897378ull, 12315376323620199537ull, 2582835085305067104ull}}, {{8058651370232587667ull, 16125318073362259627ull, 15394220404525249421ull, 3228543856631333880ull}}, {{5461628194363346680ull, 6321589536420660822ull, 796031431947010161ull, 4035679820789167351ull}}, {{17248575676759255387ull, 15480208506331382773ull, 7415048672607963206ull, 2522299887993229594ull}}, {{7725661540666905522ull, 10126888596059452659ull, 45438803905178200ull, 3152874859991536993ull}}, {{5045390907406243998ull, 12658610745074315824ull, 4668484523308860654ull, 3941093574989421241ull}}, {{3153369317128902499ull, 3299945697244059486ull, 14447017873136507669ull, 2463183484368388275ull}}, {{13165083683265903932ull, 8736618139982462261ull, 13447086322993246682ull, 3078979355460485344ull}}, {{2621296548800216202ull, 1697400638123302019ull, 16808857903741558353ull, 3848724194325606680ull}}, {{17779211407495992791ull, 12590090444895533521ull, 10505536189838473970ull, 2405452621453504175ull}}, {{8388956204087827276ull, 6514241019264641094ull, 8520234218870704559ull, 3006815776816880219ull}}, {{1262823218255008287ull, 3531115255653413464ull, 6038606755160992795ull, 3758519721021100274ull}}, {{789264511409380180ull, 18347848099279241079ull, 8385815240403008400ull, 2349074825638187671ull}}, {{14821638694543888936ull, 4488066050389499732ull, 5870583032076372597ull, 2936343532047734589ull}}, {{80304294470309554ull, 10221768581414262570ull, 11949914808522853650ull, 3670429415059668236ull}}, {{9323752404942662751ull, 3553838689913052404ull, 14937393510653567063ull, 4588036768824585295ull}}, {{15050717289943940027ull, 9138678208836739608ull, 16253399971799561270ull, 2867522980515365809ull}}, {{366652538720373418ull, 2199975724191148703ull, 6481691909467287876ull, 3584403725644207262ull}}, {{14293373728682630485ull, 2749969655238935878ull, 17325486923688885653ull, 4480504657055259077ull}}, {{4321672561999256149ull, 4024574043738028876ull, 13134272336519247485ull, 2800315410659536923ull}}, {{5402090702499070186ull, 9642403573099923999ull, 11806154402221671452ull, 3500394263324421154ull}}, {{2140927359696449829ull, 12053004466374904999ull, 5534320965922313507ull, 4375492829155526443ull}}, {{8255608627451362999ull, 5227284782270621672ull, 1153107594487751990ull, 2734683018222204027ull}}, {{10319510784314203749ull, 15757478014693052898ull, 15276442548391853699ull, 3418353772777755033ull}}, {{3676016443537978878ull, 15085161499938928219ull, 5260495130207653412ull, 4272942215972193792ull}}, {{18438411341707094463ull, 204853900607054328ull, 3287809456379783383ull, 2670588884982621120ull}}, {{4601270103424316462ull, 14091125431040981623ull, 4109761820474729228ull, 3338236106228276400ull}}, {{1139901610853007674ull, 17613906788801227029ull, 5137202275593411535ull, 4172795132785345500ull}}, {{3018281515996823748ull, 17926220770641848749ull, 12434123459100658017ull, 2607996957990840937ull}}, {{8384537913423417589ull, 8572717908020147224ull, 1707596268593658810ull, 3259996197488551172ull}}, {{10480672391779271987ull, 1492525348170408222ull, 2134495335742073513ull, 4074995246860688965ull}}, {{1938734226434657088ull, 12462043388674974899ull, 3639902594052489897ull, 2546872029287930603ull}}, {{16258475838325485072ull, 1742496180561554911ull, 18384936297847776084ull, 3183590036609913253ull}}, {{15711408779479468435ull, 2178120225701943639ull, 9146112317027556393ull, 3979487545762391567ull}}, {{16737159514815749628ull, 12890540187132184534ull, 12633849225783304601ull, 2487179716101494729ull}}, {{11698077356664911227ull, 2278117178633066956ull, 1957253476946967040ull, 3108974645126868412ull}}, {{14622596695831139034ull, 2847646473291333695ull, 2446566846183708800ull, 3886218306408585515ull}}, {{16056651962535543752ull, 1779779045807083559ull, 17670005343360675664ull, 2428886441505365946ull}}, {{15459128934742041786ull, 2224723807258854449ull, 12864134642346068772ull, 3036108051881707433ull}}, {{5488853113145388521ull, 2780904759073568062ull, 2245110247650422253ull, 3795135064852134292ull}}, {{17265591250998031538ull, 4043908483634673990ull, 10626565941636289716ull, 2371959415532583932ull}}, {{12358617026892763614ull, 5054885604543342488ull, 13283207427045362145ull, 2964949269415729915ull}}, {{15448271283615954517ull, 10930293024106566014ull, 11992323265379314777ull, 3706186586769662394ull}}, {{5043483533832583670ull, 18360648186135073519ull, 12106888059289459639ull, 2316366616731038996ull}}, {{1692668398863341683ull, 18339124214241453995ull, 15133610074111824549ull, 2895458270913798745ull}}, {{15950893553861340815ull, 9088847212519653781ull, 5081954537357616975ull, 3619322838642248432ull}}, {{6103558887044512307ull, 6749372997222179323ull, 6352443171697021219ull, 4524153548302810540ull}}, {{1508881295189126240ull, 1912515114050168125ull, 13193649019165414070ull, 2827595967689256587ull}}, {{6497787637413795704ull, 11614015929417485964ull, 11880375255529379683ull, 3534494959611570734ull}}, {{8122234546767244630ull, 9905833893344469551ull, 5627097032556948796ull, 4418118699514463418ull}}, {{11993925619370609750ull, 15414518220195069277ull, 8128621663775480901ull, 2761324187196539636ull}}, {{1157348968931098475ull, 5433089719961672885ull, 10160777079719351127ull, 3451655233995674545ull}}, {{6058372229591260998ull, 2179676131524703202ull, 17312657368076576813ull, 4314569042494593181ull}}, {{8398168661921926028ull, 3668140591416633453ull, 13126253864261554460ull, 2696605651559120738ull}}, {{15109396845829795439ull, 4585175739270791816ull, 7184445293472167267ull, 3370757064448900923ull}}, {{440001983577692682ull, 1119783655661101867ull, 4368870598412821180ull, 4213446330561126154ull}}, {{16415902304231915591ull, 9923236821642964474ull, 7342230142435401141ull, 2633403956600703846ull}}, {{11296505843435118680ull, 17015732045481093497ull, 18401159714899027234ull, 3291754945750879807ull}}, {{285574249011734638ull, 12046293019996591064ull, 18389763625196396139ull, 4114693682188599759ull}}, {{178483905632334149ull, 5223090128284175463ull, 18411131293388829443ull, 2571683551367874849ull}}, {{14058162937322581398ull, 1917176641927831424ull, 9178856061453873092ull, 3214604439209843562ull}}, {{17572703671653226747ull, 2396470802409789280ull, 2250198039962565557ull, 4018255549012304453ull}}, {{10982939794783266717ull, 3803637260719812252ull, 3712216784190297425ull, 2511409718132690283ull}}, {{13728674743479083397ull, 9366232594327153219ull, 28584961810483877ull, 3139262147665862854ull}}, {{12549157410921466342ull, 16319476761336329428ull, 9259103239117880654ull, 3924077684582328567ull}}, {{17066595418680692272ull, 5587986957407817988ull, 12704468552089757265ull, 2452548552863955354ull}}, {{2886500199641313723ull, 11596669715187160390ull, 6657213653257420773ull, 3065685691079944193ull}}, {{12831497286406417962ull, 660779088701786775ull, 12933203084999163871ull, 3832107113849930241ull}}, {{14937214831645093083ull, 7330515958079698590ull, 1165722900483395563ull, 2395066946156206401ull}}, {{9448146502701590545ull, 4551458929172235334ull, 6068839644031632358ull, 2993833682695258001ull}}, {{2586811091522212373ull, 14912695698320069976ull, 12197735573466928351ull, 3742292103369072501ull}}, {{1616756932201382733ull, 16237963839091125591ull, 9929427742630524171ull, 2338932564605670313ull}}, {{15856004220533892129ull, 15685768780436519084ull, 17023470696715543118ull, 2923665705757087891ull}}, {{1373261201957813545ull, 10383838938690873048ull, 16667652352467040994ull, 3654582132196359864ull}}, {{1716576502447266931ull, 3756426636508815502ull, 2387821366874249627ull, 4568227665245449831ull}}, {{14907918369311705544ull, 41923638604315736ull, 8409917381937487873ull, 2855142290778406144ull}}, {{188153887930080314ull, 4664090566682782575ull, 10512396727421859841ull, 3568927863473007680ull}}, {{14070250415194764104ull, 10441799226780866122ull, 13140495909277324801ull, 4461159829341259600ull}}, {{13405592527924115469ull, 18055339562806511086ull, 8212809943298328000ull, 2788224893338287250ull}}, {{7533618623050368528ull, 4122430379798587242ull, 1042640392268134193ull, 3485281116672859063ull}}, {{193651241958184852ull, 9764723993175621957ull, 15138358545617331453ull, 4356601395841073828ull}}, {{2426875035437559485ull, 8408795504948457675ull, 238102054156056350ull, 2722875872400671143ull}}, {{16868651849579113068ull, 1287622344330796285ull, 14132685622977234150ull, 3403594840500838928ull}}, {{7250756756691727623ull, 10832899967268271165ull, 17665857028721542687ull, 4254493550626048660ull}}, {{6837565982146023717ull, 13688091507183751334ull, 1817788606096188371ull, 2659058469141280413ull}}, {{17770329514537305454ull, 12498428365552301263ull, 6883921776047623368ull, 3323823086426600516ull}}, {{17601225874744243913ull, 15623035456940376579ull, 8604902220059529210ull, 4154778858033250645ull}}, {{8694923162501458494ull, 14376083179015123266ull, 7683906896750899708ull, 2596736786270781653ull}}, {{1645281916272047309ull, 17970103973768904083ull, 14216569639366012539ull, 3245920982838477066ull}}, {{15891660450622222848ull, 17850943948783742199ull, 8547340012352739866ull, 4057401228548096333ull}}, {{16849816809279971136ull, 15768525986417226778ull, 7647930516934156368ull, 2535875767842560208ull}}, {{11838898974745188112ull, 1263913409311981857ull, 9559913146167695461ull, 3169844709803200260ull}}, {{963565663149321428ull, 6191577780067365226ull, 11949891432709619326ull, 3962305887254000325ull}}, {{5213914557895713797ull, 17704794167824266978ull, 9774525154657206030ull, 2476441179533750203ull}}, {{15740765234224418054ull, 12907620672925557914ull, 7606470424894119634ull, 3095551474417187754ull}}, {{10452584505925746759ull, 6911153804302171585ull, 284715994262873735ull, 3869439343021484693ull}}, {{18062080362272061485ull, 11237000155329939096ull, 2483790505627990036ull, 2418399589388427933ull}}, {{4130856379130525240ull, 14046250194162423871ull, 7716424150462375449ull, 3022999486735534916ull}}, {{551884455485768646ull, 3722754687420866127ull, 9645530188077969312ull, 3778749358419418645ull}}, {{7262456812319687260ull, 2326721679638041329ull, 8334299376762424772ull, 2361718349012136653ull}}, {{13689757033826996978ull, 2908402099547551661ull, 15029560239380418869ull, 2952147936265170816ull}}, {{3277138237001582511ull, 8247188642861827481ull, 340206225515971970ull, 3690184920331463521ull}}, {{13577426444194458830ull, 9766178920216030079ull, 11741843937015952241ull, 2306365575207164700ull}}, {{12360097036815685633ull, 16819409668697425503ull, 14677304921269940301ull, 2882956969008955875ull}}, {{10838435277592219137ull, 7189204030589618167ull, 13734945133160037473ull, 3603696211261194844ull}}, {{8936358078562886017ull, 13598191056664410613ull, 17168681416450046841ull, 4504620264076493555ull}}, {{7891066808315497713ull, 1581340382774174777ull, 8424582876067585324ull, 2815387665047808472ull}}, {{14475519528821760045ull, 1976675478467718471ull, 10530728595084481655ull, 3519234581309760590ull}}, {{13482713392599812152ull, 16305902403366811801ull, 3940038707000826260ull, 4399043226637200738ull}}, {{1509166842733800739ull, 967816965249481568ull, 7074210210302904317ull, 2749402016648250461ull}}, {{1886458553417250924ull, 5821457224989239864ull, 13454448781306018300ull, 3436752520810313076ull}}, {{2358073191771563655ull, 7276821531236549830ull, 16818060976632522875ull, 4295940651012891345ull}}, {{15308853800139390996ull, 2242170447809149691ull, 3593759082754244941ull, 2684962906883057091ull}}, {{14524381231746850841ull, 7414399078188825018ull, 18327256908724969888ull, 3356203633603821363ull}}, {{8932104502828787743ull, 9267998847736031273ull, 18297385117478824456ull, 4195254542004776704ull}}, {{17111780360336462100ull, 5792499279835019545ull, 11435865698424265285ull, 2622034088752985440ull}}, {{7554667395138413913ull, 11852310118221162336ull, 14294832123030331606ull, 3277542610941231800ull}}, {{9443334243923017391ull, 5592015610921677112ull, 17868540153787914508ull, 4096928263676539750ull}}, {{5902083902451885869ull, 12718381793680824003ull, 6556151577690058663ull, 2560580164797837344ull}}, {{2765918859637469433ull, 11286291223673642100ull, 8195189472112573329ull, 3200725205997296680ull}}, {{3457398574546836791ull, 272805974309888913ull, 10243986840140716662ull, 4000906507496620850ull}}, {{13690089155160242754ull, 14005561789225844282ull, 11014177793515335817ull, 2500566567185388031ull}}, {{7889239407095527635ull, 3671894181250141641ull, 9156036223466781868ull, 3125708208981735039ull}}, {{14473235277296797447ull, 4589867726562677051ull, 6833359260906089431ull, 3907135261227168799ull}}, {{6739929039096804453ull, 9786196356742755013ull, 11188378565707387750ull, 2441959538266980499ull}}, {{13036597317298393470ull, 3009373409073667958ull, 9373787188706846784ull, 3052449422833725624ull}}, {{7072374609768216029ull, 3761716761342084948ull, 11717233985883558480ull, 3815561778542157030ull}}, {{13643606167959910826ull, 2351072975838803092ull, 2711585222749836146ull, 2384726111588848144ull}}, {{17054507709949888533ull, 12162213256653279673ull, 3389481528437295182ull, 2980907639486060180ull}}, {{7483076582155196954ull, 5979394533961823784ull, 4236851910546618978ull, 3726134549357575225ull}}, {{4676922863846998096ull, 8348807602153527769ull, 14177247490160106621ull, 2328834093348484515ull}}, {{10457839598236135524ull, 15047695521119297615ull, 13109873344272745372ull, 2911042616685605644ull}}, {{8460613479367781501ull, 362875327689570403ull, 16387341680340931716ull, 3638803270857007055ull}}, {{5964080830782338973ull, 453594159611963004ull, 15872491081998776741ull, 4548504088571258819ull}}, {{12950922556093737666ull, 2589339358971170829ull, 7614463917035541511ull, 2842815055357036762ull}}, {{2353595139835008371ull, 17071732253996127249ull, 294707859439651080ull, 3553518819196295953ull}}, {{7553679943221148367ull, 2892921243785607445ull, 4980070842726951755ull, 4441898523995369941ull}}, {{7026892973726911682ull, 17948976841861862317ull, 5418387285918038798ull, 2776186577497106213ull}}, {{13395302235586027506ull, 13212849015472552088ull, 11384670125824936402ull, 3470233221871382766ull}}, {{16744127794482534382ull, 7292689232485914302ull, 5007465620426394695ull, 4337791527339228458ull}}, {{5853393853124196085ull, 11475459797944778295ull, 7741352031193884588ull, 2711119704587017786ull}}, {{2705056297977857202ull, 14344324747430972869ull, 453318002137579927ull, 3388899630733772233ull}}, {{7993006390899709407ull, 13318719915861328182ull, 5178333521099362813ull, 4236124538417215291ull}}, {{383942975884930475ull, 10630042956627024066ull, 930615441473407806ull, 2647577836510759557ull}}, {{9703300756710938902ull, 4064181658929004274ull, 5774955320269147662ull, 3309472295638449446ull}}, {{2905753909033897819ull, 14303599110516031151ull, 16442066187191210385ull, 4136840369548061807ull}}, {{8733625220787267993ull, 2022220416431437613ull, 17193820394635588347ull, 2585525230967538629ull}}, {{15528717544411472896ull, 16362833575821460728ull, 7657217438012321721ull, 3231906538709423287ull}}, {{964152856804789503ull, 6618483914494662199ull, 4959835779088014248ull, 4039883173386779109ull}}, {{7520124563144075296ull, 4136552446559163874ull, 5405740371143702857ull, 2524926983366736943ull}}, {{176783667075318312ull, 9782376576626342747ull, 2145489445502240667ull, 3156158729208421179ull}}, {{14056037639126311601ull, 7616284702355540529ull, 16516919862159964546ull, 3945198411510526473ull}}, {{1867494496812862895ull, 9371863957399600735ull, 3405545886208895985ull, 2465749007194079046ull}}, {{16169426176298242331ull, 16326515965176888822ull, 13480304394615895789ull, 3082186258992598807ull}}, {{10988410683518027105ull, 6573086901188947316ull, 12238694474842481833ull, 3852732823740748509ull}}, {{16091128714053542749ull, 15637394359311561832ull, 9955027055990245097ull, 2407958014837967818ull}}, {{1667166818857376820ull, 5711684893857288579ull, 3220411783133030564ull, 3009947518547459773ull}}, {{15919016578853884737ull, 7139606117321610723ull, 8637200747343676109ull, 3762434398184324716ull}}, {{7643542352569984009ull, 6768096832539700654ull, 14621622503944573376ull, 2351521498865202947ull}}, {{331055903857704203ull, 8460121040674625818ull, 13665342111503328816ull, 2939401873581503684ull}}, {{9637191916676906061ull, 10575151300843282272ull, 17081677639379161020ull, 3674252341976879605ull}}, {{12046489895846132577ull, 13218939126054102840ull, 7517038993941787563ull, 4592815427471099507ull}}, {{7529056184903832861ull, 5955993944570120323ull, 2392306361999923275ull, 2870509642169437192ull}}, {{4799634212702403172ull, 2833306412285262500ull, 2990382952499904094ull, 3588137052711796490ull}}, {{5999542765878003964ull, 12765005052211353933ull, 12961350727479655925ull, 4485171315889745612ull}}, {{6055557237887446430ull, 10283971166845790160ull, 17324216241529560761ull, 2803232072431091007ull}}, {{7569446547359308037ull, 17466649976984625604ull, 17043584283484563047ull, 3504040090538863759ull}}, {{9461808184199135046ull, 17221626452803394101ull, 16692794335928315905ull, 4380050113173579699ull}}, {{8219473124338153356ull, 3845987505361039457ull, 8127153450741503489ull, 2737531320733487312ull}}, {{14886027423850079599ull, 9419170400128687225ull, 10158941813426879361ull, 3421914150916859140ull}}, {{4772476224530435787ull, 16385649018588246936ull, 12698677266783599201ull, 4277392688646073925ull}}, {{2982797640331522367ull, 3323501608976572479ull, 10242516300953443453ull, 2673370430403796203ull}}, {{17563555105696566671ull, 8766063029648103502ull, 8191459357764416412ull, 3341713038004745254ull}}, {{12731071845265932530ull, 10957578787060129378ull, 1015952160350744707ull, 4177141297505931568ull}}, {{12568605921718595735ull, 4542643732698886909ull, 634970100219215442ull, 2610713310941207230ull}}, {{1875699346866080957ull, 14901676702728384445ull, 10017084662128795110ull, 3263391638676509037ull}}, {{6956310202009989100ull, 9403723841555704748ull, 17133041846088381792ull, 4079239548345636296ull}}, {{13571065913111018996ull, 5877327400972315467ull, 10708151153805238620ull, 2549524717716022685ull}}, {{12352146372961385841ull, 7346659251215394334ull, 17996874960683936179ull, 3186905897145028356ull}}, {{6216810929346956493ull, 4571638045591855014ull, 4049349627145368608ull, 3983632371431285446ull}}, {{17720564886124011520ull, 2857273778494909383ull, 16365901572248019092ull, 2489770232144553403ull}}, {{17539020089227626496ull, 3571592223118636729ull, 15845690946882635961ull, 3112212790180691754ull}}, {{8088717056252369408ull, 9076176297325683816ull, 10583741646748519143ull, 3890265987725864693ull}}, {{5055448160157730880ull, 12590139213469634241ull, 8920681538431518416ull, 2431416242328665433ull}}, {{10930996218624551504ull, 15737674016837042801ull, 15762537941466785924ull, 3039270302910831791ull}}, {{18275431291708077284ull, 1225348447336751885ull, 15091486408406094502ull, 3799087878638539739ull}}, {{13727987566531242255ull, 14600900834867633640ull, 7126335996040115111ull, 2374429924149087337ull}}, {{17159984458164052818ull, 13639440025157154146ull, 13519606013477531793ull, 2968037405186359171ull}}, {{12226608535850290215ull, 3214241976164278971ull, 12287821498419526838ull, 3710046756482948964ull}}, {{5335787325692737432ull, 15843959290384838069ull, 16903260473366980081ull, 2318779222801843102ull}}, {{11281420175543309694ull, 5969891057698883874ull, 11905703554853949294ull, 2898474028502303878ull}}, {{4878403182574361310ull, 16685735858978380651ull, 5658757406712660809ull, 3623092535627879848ull}}, {{1486317959790563733ull, 7022111768440812102ull, 7073446758390826012ull, 4528865669534849810ull}}, {{14764006780151266045ull, 13612191892130283371ull, 9032590242421654161ull, 2830541043459281131ull}}, {{13843322456761694653ull, 3180181809880690502ull, 6679051784599679798ull, 3538176304324101414ull}}, {{8080781034097342508ull, 13198599299205638936ull, 17572186767604375555ull, 4422720380405126767ull}}, {{5050488146310839068ull, 5943281552789830383ull, 17900145757393816578ull, 2764200237753204229ull}}, {{1701424164461160930ull, 16652473977842063787ull, 8540124141460107010ull, 3455250297191505287ull}}, {{15961838260858614875ull, 11592220435447803925ull, 6063469158397745859ull, 4319062871489381609ull}}, {{12281991922250328249ull, 4939294762941183501ull, 15318883270067060922ull, 2699414294680863505ull}}, {{1517431847530746599ull, 15397490490531255185ull, 5313546032301662440ull, 3374267868351079382ull}}, {{6508475827840821153ull, 800119039454517365ull, 15865304577231853859ull, 4217834835438849227ull}}, {{6373640401614207173ull, 16640975464154931017ull, 7609972351556214709ull, 2636146772149280767ull}}, {{12578736520445146870ull, 6966161274911500059ull, 4900779421017880483ull, 3295183465186600959ull}}, {{11111734632129045683ull, 4096015575211987170ull, 1514288257844962700ull, 4118979331483251199ull}}, {{11556520163508041456ull, 11783381771362267789ull, 7863959188794183543ull, 2574362082177031999ull}}, {{610592149102888108ull, 10117541195775446833ull, 5218262967565341525ull, 3217952602721289999ull}}, {{5374926204805998039ull, 17258612513146696445ull, 1911142691029289002ull, 4022440753401612499ull}}, {{5665171887217442726ull, 15398318839144073182ull, 17335365246389163290ull, 2514025470876007811ull}}, {{16304836895876579216ull, 10024526512075315669ull, 17057520539559066209ull, 3142531838595009764ull}}, {{6545988064563560308ull, 17142344158521532491ull, 2875156600739281145ull, 3928164798243762206ull}}, {{1785399531138531240ull, 3796436071434875951ull, 15632030930744214428ull, 2455102998902351378ull}}, {{16066807469205327762ull, 4745545089293594938ull, 10316666626575492227ull, 3068878748627939223ull}}, {{10860137299651883895ull, 1320245343189605769ull, 8284147264791977380ull, 3836098435784924029ull}}, {{18316800858350897195ull, 10048525376348279413ull, 7483435049708679814ull, 2397561522365577518ull}}, {{9060943017656457781ull, 3337284683580573459ull, 130921775281073960ull, 2996951902956971898ull}}, {{6714492753643184322ull, 4171605854475716824ull, 9387024255956118258ull, 3746189878696214872ull}}, {{4196557971026990202ull, 7218939677474710919ull, 5866890159972573911ull, 2341368674185134295ull}}, {{634011445356349848ull, 4411988578416000745ull, 2721926681538329485ull, 2926710842731417869ull}}, {{5404200325122825214ull, 10126671741447388835ull, 8014094370350299760ull, 3658388553414272336ull}}, {{2143564387976143613ull, 12658339676809236044ull, 10017617962937874700ull, 4572985691767840420ull}}, {{10563099779339865566ull, 17134834334860548335ull, 15484383263690947495ull, 2858116057354900262ull}}, {{8592188705747444054ull, 16806856900148297515ull, 10132107042758908561ull, 3572645071693625328ull}}, {{6128549863756917163ull, 7173513069903208182ull, 12665133803448635702ull, 4465806339617031660ull}}, {{17665401720130236939ull, 18318503723971668825ull, 17139080664010173121ull, 2791128962260644787ull}}, {{8246694094880632462ull, 9063071599682422320ull, 16812164811585328498ull, 3488911202825805984ull}}, {{10308367618600790577ull, 2105467462748252092ull, 2568461940772109007ull, 4361139003532257481ull}}, {{15666101798480269919ull, 8233446191858739413ull, 13134503759051037889ull, 2725711877207660925ull}}, {{5747569192818173686ull, 14903493758250812171ull, 2583071643531633649ull, 3407139846509576157ull}}, {{2572775472595329204ull, 4794309142531351502ull, 7840525572841929966ull, 4258924808136970196ull}}, {{15443042725654244465ull, 16831501269364258400ull, 14123700519880982036ull, 2661828005085606372ull}}, {{857059333358253965ull, 2592632512995771385ull, 17654625649851227546ull, 3327285006357007965ull}}, {{5683010185125205360ull, 12464162678099490039ull, 8233224007031870720ull, 4159106257946259957ull}}, {{10469410393344335206ull, 7790101673812181274ull, 7451608013608613152ull, 2599441411216412473ull}}, {{3863390954825643199ull, 9737627092265226593ull, 13926196035438154344ull, 3249301764020515591ull}}, {{9440924711959441903ull, 12172033865331533241ull, 12796059025870305026ull, 4061627205025644489ull}}, {{17429792991043120950ull, 12219207184259596179ull, 1080007863527858785ull, 2538517003141027806ull}}, {{17175555220376513283ull, 1438950925042331512ull, 10573381866264599290ull, 3173146253926284757ull}}, {{3022699951761089987ull, 11022060693157690199ull, 17828413351258137016ull, 3966432817407855946ull}}, {{8806716497491763098ull, 6888787933223556374ull, 15754444362963723539ull, 2479020510879909966ull}}, {{1785023585009928065ull, 3999298898102057564ull, 10469683416849878616ull, 3098775638599887458ull}}, {{2231279481262410081ull, 4999123622627571955ull, 3863732234207572462ull, 3873469548249859323ull}}, {{17535450740284863965ull, 16959510319424396183ull, 108989637166038836ull, 2420918467656162077ull}}, {{17307627406928692052ull, 2752643825570943613ull, 4747923064884936450ull, 3026148084570202596ull}}, {{7799476203378701353ull, 12664176818818455325ull, 5934903831106170562ull, 3782685105712753245ull}}, {{7180515636325382298ull, 12526796530188922482ull, 6015157903655050553ull, 2364178191070470778ull}}, {{18199016582261503680ull, 1823437607453989390ull, 16742319416423589000ull, 2955222738838088472ull}}, {{13525398690972103792ull, 2279297009317486738ull, 2481155196819934634ull, 3694028423547610591ull}}, {{13065060200284952774ull, 6036246649250817115ull, 8468251025653541002ull, 2308767764717256619ull}}, {{11719639231928803063ull, 16768680348418297202ull, 5973627763639538348ull, 2885959705896570774ull}}, {{5426177003056228021ull, 2514106361813319887ull, 16690406741404198744ull, 3607449632370713467ull}}, {{2171035235392897122ull, 3142632952266649859ull, 16251322408327860526ull, 4509312040463391834ull}}, {{17497798086616418366ull, 15799203650448819873ull, 14768762523632300732ull, 2818320025289619896ull}}, {{8037189552988359245ull, 1302260489351473226ull, 14209080830824300ull, 3522900031612024871ull}}, {{823114904380673248ull, 1627825611689341533ull, 13852819406320694087ull, 4403625039515031088ull}}, {{2820289824451614732ull, 7934920034946920314ull, 8658012128950433804ull, 2752265649696894430ull}}, {{12748734317419294223ull, 9918650043683650392ull, 1599143124333266447ull, 3440332062121118038ull}}, {{15935917896774117779ull, 7786626536177175086ull, 11222300942271358867ull, 4300415077651397547ull}}, {{5348262667056435708ull, 2560798575897040477ull, 4708095079705905340ull, 2687759423532123467ull}}, {{11297014352247932539ull, 3200998219871300596ull, 1273432831204993771ull, 3359699279415154334ull}}, {{14121267940309915673ull, 17836305830121289457ull, 10815163075861018021ull, 4199624099268942917ull}}, {{1908263435052615440ull, 13453534153039499863ull, 9065319931626830215ull, 2624765062043089323ull}}, {{16220387349097933012ull, 12205231672871986924ull, 6719963896106149865ull, 3280956327553861654ull}}, {{1828740112662864649ull, 1421481535807819944ull, 17623326906987463140ull, 4101195409442327067ull}}, {{1142962570414290406ull, 10111797996734663273ull, 8708736307653470510ull, 2563247130901454417ull}}, {{6040389231445250911ull, 3416375459063553283ull, 15497606402994226042ull, 3204058913626818021ull}}, {{2938800520879175735ull, 13493841360684217412ull, 5536949948460618840ull, 4005073642033522527ull}}, {{11060122362404260642ull, 8433650850427635882ull, 10378122745428968631ull, 2503171026270951579ull}}, {{4601780916150549995ull, 5930377544607156949ull, 8360967413358822885ull, 3128963782838689474ull}}, {{10363912163615575397ull, 12024657949186334090ull, 1227837229843752798ull, 3911204728548361843ull}}, {{11089131120687122527ull, 2903725199814070902ull, 16908299333148203163ull, 2444502955342726151ull}}, {{4638041864004127351ull, 17464714555049752340ull, 16523688148007866049ull, 3055628694178407689ull}}, {{5797552330005159189ull, 7995835138530026713ull, 6819552129727668850ull, 3819535867723009612ull}}, {{15152685252321694253ull, 9609082980008654599ull, 13485592117934568839ull, 2387209917326881007ull}}, {{14329170546974729912ull, 7399667706583430345ull, 12245304128990823145ull, 2984012396658601259ull}}, {{4076405128436248678ull, 13861270651656675836ull, 10694944142811141027ull, 3730015495823251574ull}}, {{11771125242127431232ull, 6357451148071728445ull, 2072654070829575238ull, 2331259684889532234ull}}, {{878848497377125328ull, 17170185971944436365ull, 11814189625391744855ull, 2914074606111915292ull}}, {{5710246640148794564ull, 16851046446503157552ull, 14767737031739681069ull, 3642593257639894115ull}}, {{7137808300185993205ull, 7228750002846783228ull, 13847985271247213433ull, 4553241572049867644ull}}, {{13684502224471021561ull, 16047183797847709277ull, 17878362831384284203ull, 2845775982531167277ull}}, {{3270569725306613239ull, 15447293728882248693ull, 8512895483948191542ull, 3557219978163959097ull}}, {{8699898175060654453ull, 10085745124248035058ull, 15252805373362627332ull, 4446524972704948871ull}}, {{10049122377840296937ull, 15526962739509797719ull, 16450532385992723938ull, 2779078107940593044ull}}, {{7949716953872983268ull, 10185331387532471341ull, 2116421408781353307ull, 3473847634925741306ull}}, {{14548832210768616988ull, 8119978215988201272ull, 11868898797831467442ull, 4342309543657176632ull}}, {{9093020131730385618ull, 9686672403420013699ull, 7418061748644667151ull, 2713943464785735395ull}}, {{6754589146235594118ull, 7496654485847629220ull, 4660891167378446035ull, 3392429330982169244ull}}, {{8443236432794492648ull, 4759132088882148621ull, 5826113959223057544ull, 4240536663727711555ull}}, {{7582865779710251857ull, 2974457555551342888ull, 1335478215300717013ull, 2650335414829819722ull}}, {{9478582224637814821ull, 8329757962866566514ull, 10892719805980672074ull, 3312919268537274652ull}}, {{2624855743942492718ull, 1188825416728432335ull, 13615899757475840093ull, 4141149085671593315ull}}, {{8558063867605139805ull, 3048858894668964161ull, 6204094339208706106ull, 2588218178544745822ull}}, {{15309265852933812660ull, 13034445655190981009ull, 16978489960865658440ull, 3235272723180932277ull}}, {{5301524260885102113ull, 16293057068988726262ull, 7388054395799909338ull, 4044090903976165347ull}}, {{17148510718335352533ull, 14794846686545341817ull, 2311690988161249384ull, 2527556814985103342ull}}, {{7600580342637026954ull, 46814284472125656ull, 12112985772056337539ull, 3159446018731379177ull}}, {{9500725428296283693ull, 13893575910872320782ull, 1306174159788258211ull, 3949307523414223972ull}}, {{1326267374257789404ull, 6377641935081506537ull, 10039730886722437190ull, 2468317202133889982ull}}, {{6269520236249624659ull, 17195424455706658979ull, 3326291571548270679ull, 3085396502667362478ull}}, {{3225214276884642919ull, 16882594551205935820ull, 13381236501290114157ull, 3856745628334203097ull}}, {{11239130959907677633ull, 12857464603717403839ull, 1445743785665239492ull, 2410466017708876936ull}}, {{9437227681457209137ull, 16071830754646754799ull, 1807179732081549365ull, 3013082522136096170ull}}, {{7184848583394123517ull, 6254730388026279787ull, 11482346701956712515ull, 3766353152670120212ull}}, {{2184687355407633246ull, 1603363483302730915ull, 16399838725577721130ull, 2353970720418825132ull}}, {{16565917249541705270ull, 11227576390983189451ull, 2053054333262599796ull, 2942463400523531416ull}}, {{16095710543499743683ull, 14034470488728986814ull, 2566317916578249745ull, 3678079250654414270ull}}, {{10896266142519903796ull, 3708030055629069806ull, 12431269432577587990ull, 4597599063318017837ull}}, {{2198480320647551969ull, 16152576840050332341ull, 10075386404574686445ull, 2873499414573761148ull}}, {{7359786419236827865ull, 6355662994780751714ull, 12594233005718358057ull, 3591874268217201435ull}}, {{18423105060900810639ull, 12556264761903327546ull, 11131105238720559667ull, 4489842835271501794ull}}, {{16126126681490394553ull, 5541822466975885764ull, 11568626792627737696ull, 2806151772044688621ull}}, {{1710914278153441576ull, 6927278083719857206ull, 625725435502508408ull, 3507689715055860777ull}}, {{11362014884546577777ull, 8659097604649821507ull, 5393842812805523414ull, 4384612143819825971ull}}, {{4795416293627917159ull, 800249984478750538ull, 1065308748789758182ull, 2740382589887391232ull}}, {{15217642403889672257ull, 10223684517453213980ull, 1331635935987197727ull, 3425478237359239040ull}}, {{575308931152538705ull, 8167919628389129572ull, 1664544919983997159ull, 4281847796699048800ull}}, {{9582940118825112499ull, 12022478795384287838ull, 1040340574989998224ull, 2676154872936905500ull}}, {{2755303111676614815ull, 15028098494230359798ull, 1300425718737497780ull, 3345193591171131875ull}}, {{12667500926450544327ull, 338379044078398131ull, 15460590203704035938ull, 4181491988963914843ull}}, {{5611345069817896252ull, 4823172920976386736ull, 7357025868101328509ull, 2613432493102446777ull}}, {{7014181337272370315ull, 10640652169647871324ull, 13807968353554048540ull, 3266790616378058471ull}}, {{8767726671590462894ull, 13300815212059839155ull, 12648274423515172771ull, 4083488270472573089ull}}, {{3173986160530345357ull, 6007166498323705520ull, 987642487055901126ull, 2552180169045358181ull}}, {{3967482700662931696ull, 16732330159759407708ull, 5846239127247264311ull, 3190225211306697726ull}}, {{4959353375828664620ull, 16303726681271871731ull, 16531170945913856197ull, 3987781514133372157ull}}, {{793752850679221436ull, 12495672185008613784ull, 12637824850409854075ull, 2492363446333357598ull}}, {{992191063349026795ull, 11007904212833379326ull, 6573909026157541786ull, 3115454307916696998ull}}, {{10463610866041059301ull, 4536508229186948349ull, 17440758319551703041ull, 3894317884895871247ull}}, {{8845599800489356015ull, 14364532689310312478ull, 17818002977360896256ull, 2433948678059919529ull}}, {{1833627713756919211ull, 17955665861637890598ull, 8437445666418956608ull, 3042435847574899412ull}}, {{11515406679050924822ull, 3997838253337811631ull, 10546807083023695761ull, 3803044809468624265ull}}, {{14114658202047909870ull, 14027863954404602029ull, 18120969472958279610ull, 2376903005917890165ull}}, {{3808264697277723625ull, 8311457906150976729ull, 8816153785915685801ull, 2971128757397362707ull}}, {{9372016890024542435ull, 15001008401116108815ull, 6408506213967219347ull, 3713910946746703384ull}}, {{12775039583906420878ull, 7069787241483874057ull, 4005316383729512092ull, 2321194341716689615ull}}, {{2133741424600862386ull, 8837234051854842572ull, 394959461234502211ull, 2901492927145862019ull}}, {{2667176780751077982ull, 6434856546391165311ull, 14328757381825291476ull, 3626866158932327523ull}}, {{17169029031221011189ull, 8043570682988956638ull, 13299260708854226441ull, 4533582698665409404ull}}, {{6118957126085744089ull, 16556446722936567659ull, 17535409979888667333ull, 2833489186665880877ull}}, {{3037010389179792208ull, 6860500348388545862ull, 8084204419578670455ull, 3541861483332351097ull}}, {{13019635023329516067ull, 3963939417058294423ull, 14716941542900725973ull, 4427326854165438871ull}}, {{15054800917222029398ull, 4783305144875127966ull, 16115617491954035589ull, 2767079283853399294ull}}, {{9595129109672760940ull, 10590817449521297862ull, 10921149828087768678ull, 3458849104816749118ull}}, {{2770539350236175367ull, 4015149775046846520ull, 4428065248254935040ull, 4323561381020936398ull}}, {{1731587093897609604ull, 2509468609404279075ull, 16602598835441498112ull, 2702225863138085248ull}}, {{15999541922654175717ull, 3136835761755348843ull, 2306504470592321024ull, 3377782328922606561ull}}, {{15387741384890331743ull, 3921044702194186054ull, 7494816606667789184ull, 4222227911153258201ull}}, {{5005652347129069435ull, 2450652938871366284ull, 16213475425235838000ull, 2638892444470786375ull}}, {{6257065433911336794ull, 3063316173589207855ull, 15655158263117409596ull, 3298615555588482969ull}}, {{3209645773961783088ull, 3829145216986509819ull, 5733889773614598283ull, 4123269444485603712ull}}, {{18146929673221972094ull, 87372751402874684ull, 3583681108509123927ull, 2577043402803502320ull}}, {{4236918017817913502ull, 13944273994535757068ull, 4479601385636404908ull, 3221304253504377900ull}}, {{5296147522272391877ull, 17430342493169696335ull, 5599501732045506135ull, 4026630316880472375ull}}, {{10227621229061326779ull, 17811493085872142065ull, 10417217610169523190ull, 2516643948050295234ull}}, {{17396212554754046378ull, 13040994320485401773ull, 3798149975857128180ull, 3145804935062869043ull}}, {{7910207638160394261ull, 16301242900606752217ull, 136001451394022321ull, 3932256168828586304ull}}, {{16473094819918716173ull, 3270747785238138279ull, 85000907121263951ull, 2457660105517866440ull}}, {{15979682506471007312ull, 17923492786829836561ull, 106251133901579938ull, 3072075131897333050ull}}, {{6139545077806595428ull, 13180993946682519894ull, 9356185954231750731ull, 3840093914871666312ull}}, {{17672273728911285855ull, 5932278207462880981ull, 5847616221394844207ull, 2400058696794791445ull}}, {{8255284105856943606ull, 2803661740901213323ull, 11921206295170943163ull, 3000073370993489306ull}}, {{5707419113893791604ull, 17339635231408680366ull, 5678135832108903145ull, 3750091713741861633ull}}, {{17402195001465783465ull, 3919742991989343372ull, 15078049941136534226ull, 2343807321088663520ull}}, {{3305999678122677715ull, 14123050776841455024ull, 400818352711116166ull, 2929759151360829401ull}}, {{4132499597653347143ull, 8430441434197042972ull, 5112708959316283112ull, 3662198939201036751ull}}, {{5165624497066683929ull, 10538051792746303715ull, 1779200180717965986ull, 4577748674001295939ull}}, {{922672301452983504ull, 11197968388893827726ull, 17252901177444586405ull, 2861092921250809961ull}}, {{10376712413671005187ull, 162402430835120945ull, 7731068416523569295ull, 3576366151563512452ull}}, {{17582576535516144388ull, 14038061093826064893ull, 9663835520654461618ull, 4470457689454390565ull}}, {{13294953343911284195ull, 13385474202068678462ull, 8345740209622732463ull, 2794036055908994103ull}}, {{7395319643034329435ull, 12120156734158460174ull, 5820489243601027675ull, 3492545069886242629ull}}, {{20777516938135986ull, 10538509899270687314ull, 11887297572928672498ull, 4365681337357803286ull}}, {{4624671966513722895ull, 11198254705471567475ull, 2817874964653032407ull, 2728550835848627054ull}}, {{1169153939714765715ull, 9386132363412071440ull, 12745715742671066317ull, 3410688544810783817ull}}, {{1461442424643457144ull, 16344351472692477204ull, 2097086623056669184ull, 4263360681013479772ull}}, {{10136773552256936523ull, 10215219670432798252ull, 10534051176265194048ull, 2664600425633424857ull}}, {{12670966940321170654ull, 12769024588040997815ull, 17779249988758880464ull, 3330750532041781071ull}}, {{11227022656974075413ull, 15961280735051247269ull, 17612376467521212676ull, 4163438165052226339ull}}, {{9322732169822491085ull, 752428422552253735ull, 8701892282987063971ull, 2602148853157641462ull}}, {{7041729193850725953ull, 14775593583472480881ull, 1653993316879054155ull, 3252686066447051828ull}}, {{13413847510740795345ull, 13857805960913213197ull, 2067491646098817694ull, 4065857583058814785ull}}, {{10689497703426691043ull, 4049442707143370344ull, 12821397324880230819ull, 2541160989411759240ull}}, {{13361872129283363803ull, 450117365501825026ull, 16026746656100288524ull, 3176451236764699050ull}}, {{7478968124749428946ull, 562646706877281283ull, 10810061283270584847ull, 3970564045955873813ull}}, {{2368512068754699139ull, 7269183219439382658ull, 9062131311257809481ull, 2481602528722421133ull}}, {{12184012122798149732ull, 13698165042726616226ull, 15939350157499649755ull, 3102003160903026416ull}}, {{6006643116642911357ull, 12511020284980882379ull, 1477443623165010578ull, 3877503951128783021ull}}, {{1448308938688125646ull, 12431073696540439391ull, 3229245273691825563ull, 2423439969455489388ull}}, {{15645444228642320770ull, 10927156102248161334ull, 4036556592114781954ull, 3029299961819361735ull}}, {{10333433248948125154ull, 4435573090955425860ull, 434009721716089539ull, 3786624952274202169ull}}, {{15681767817447354029ull, 466390172633447210ull, 11800471122141025722ull, 2366640595171376355ull}}, {{10378837734954416729ull, 9806359752646584821ull, 10138902884248894248ull, 2958300743964220444ull}}, {{17585233187120408815ull, 12257949690808231026ull, 12673628605311117810ull, 3697875929955275555ull}}, {{15602456760377643413ull, 12272904575182532295ull, 5615174869105754679ull, 2311172456222047222ull}}, {{14891384932044666363ull, 10729444700550777465ull, 16242340623236969157ull, 2888965570277559027ull}}, {{4779173109773669241ull, 18023491894115859736ull, 15691239760618823542ull, 3611206962846948784ull}}, {{5973966387217086551ull, 13305992830790048862ull, 1167305627063977812ull, 4514008703558685981ull}}, {{17568787047292842807ull, 17539617556098556346ull, 3035409026128680084ull, 2821255439724178738ull}}, {{12737611772261277700ull, 3477777871413643817ull, 13017633319515625914ull, 3526569299655223422ull}}, {{2086956660044433413ull, 13570594376121830580ull, 7048669612539756584ull, 4408211624569029278ull}}, {{10527719949382546691ull, 8481621485076144112ull, 18240476563119511577ull, 2755132265355643298ull}}, {{13159649936728183364ull, 15213712874772568044ull, 13577223667044613663ull, 3443915331694554123ull}}, {{16449562420910229205ull, 14405455075038322151ull, 12359843565378379175ull, 4304894164618192654ull}}, {{17198505540709975109ull, 15920938449540033200ull, 3113216209934099080ull, 2690558852886370409ull}}, {{3051387852177917271ull, 1454428988215489885ull, 8503206280845011755ull, 3363198566107963011ull}}, {{8425920833649784492ull, 15653094290551526068ull, 6017321832628876789ull, 4203998207634953764ull}}, {{14489572557885891116ull, 12089026940808397744ull, 12984198182247823801ull, 2627498879771846102ull}}, {{18111965697357363895ull, 1276225620728333468ull, 7006875690955003944ull, 3284373599714807628ull}}, {{4193213047987153252ull, 1595282025910416836ull, 8758594613693754930ull, 4105466999643509535ull}}, {{11844130191846746591ull, 5608737284621398426ull, 12391650661199678687ull, 2565916874777193459ull}}, {{5581790702953657430ull, 2399235587349360129ull, 10877877308072210455ull, 3207396093471491824ull}}, {{11588924397119459692ull, 16834102539468863873ull, 13597346635090263068ull, 4009245116839364780ull}}, {{325548720558580452ull, 1297942050313264113ull, 17721713683786190226ull, 2505778198024602987ull}}, {{5018621919125613468ull, 10845799599746355949ull, 17540456086305349878ull, 3132222747530753734ull}}, {{10884963417334404739ull, 4333877462828169128ull, 12702198071026911540ull, 3915278434413442168ull}}, {{6803102135834002962ull, 11932045451122381513ull, 7938873794391819712ull, 2447049021508401355ull}}, {{13115563688219891607ull, 14915056813902976891ull, 5311906224562386736ull, 3058811276885501694ull}}, {{11782768591847476604ull, 197076943669169498ull, 15863254817557759229ull, 3823514096106877117ull}}, {{11975916388332060782ull, 2429016099006924888ull, 12220377270187293470ull, 2389696310066798198ull}}, {{14969895485415075977ull, 12259642160613431918ull, 6052099550879341029ull, 2987120387583497748ull}}, {{9488997319914069163ull, 1489494645484626186ull, 7565124438599176287ull, 3733900484479372185ull}}, {{10542309343373681131ull, 7848463181068973222ull, 16257417820192954939ull, 2333687802799607615ull}}, {{3954514642362325606ull, 5198892957908828624ull, 15710086256813805770ull, 2917109753499509519ull}}, {{4943143302952907007ull, 15721988234240811588ull, 15025921802589869308ull, 3646387191874386899ull}}, {{6178929128691133759ull, 1205741219091462869ull, 14170716234809948732ull, 4557983989842983624ull}}, {{6167673714645652552ull, 9976960298786940101ull, 8856697646756217957ull, 2848739993651864765ull}}, {{12321278161734453593ull, 17082886391911063030ull, 15682558076872660350ull, 3560924992064830956ull}}, {{6178225665313291183ull, 12130235953034052980ull, 1156453522381273822ull, 4451156240081038696ull}}, {{13084763077675582798ull, 2969711452218895208ull, 722783451488296139ull, 2781972650050649185ull}}, {{16355953847094478497ull, 17547197370555782722ull, 5515165332787758077ull, 3477465812563311481ull}}, {{11221570272013322313ull, 8098938657912564691ull, 11505642684412085501ull, 4346832265704139351ull}}, {{4707638410794632494ull, 7367679670409046884ull, 14108555705398635294ull, 2716770166065087094ull}}, {{5884548013493290617ull, 18432971624866084413ull, 8412322594893518309ull, 3395962707581358868ull}}, {{11967371035294001176ull, 9206156475800441804ull, 10515403243616897887ull, 4244953384476698585ull}}, {{16702978933913526543ull, 12671376825016357983ull, 18101342073329030939ull, 2653095865297936615ull}}, {{16267037648964520275ull, 11227535012843059575ull, 18014991573233900770ull, 3316369831622420769ull}}, {{15722111042778262439ull, 4811046729199048661ull, 8683681411260212251ull, 4145462289528025962ull}}, {{12132162410950107977ull, 701061196535711461ull, 10038986900465020561ull, 2590913930955016226ull}}, {{1330144958405471259ull, 5488012514097027231ull, 3325361588726499893ull, 3238642413693770283ull}}, {{15497739253289002785ull, 11471701661048671942ull, 17991760041190288578ull, 4048303017117212853ull}}, {{5074401014878238837ull, 11781499556582807868ull, 13550693034957624313ull, 2530189385698258033ull}}, {{6343001268597798546ull, 891816390446346123ull, 3103308238414866680ull, 3162736732122822542ull}}, {{3317065567319860278ull, 1114770488057932654ull, 13102507334873359158ull, 3953420915153528177ull}}, {{15908224034857076386ull, 14531789610318371620ull, 1271538056654767617ull, 2470888071970955111ull}}, {{1438535969861793867ull, 4329678957615800814ull, 15424480626100623234ull, 3088610089963693888ull}}, {{11021541999182018141ull, 14635470733874526825ull, 833856708916227426ull, 3860762612454617361ull}}, {{18417678795557231098ull, 13758855227098967169ull, 12050375489141111901ull, 2412976632784135850ull}}, {{9187040439164375161ull, 3363510978591545250ull, 5839597324571614069ull, 3016220790980169813ull}}, {{2260428512100693143ull, 8816074741666819467ull, 11911182674141905490ull, 3770275988725212266ull}}, {{17553668884558790879ull, 10121732731969150070ull, 12056175189766078835ull, 2356422492953257666ull}}, {{12718714068843712790ull, 8040479896534049684ull, 5846846950352822736ull, 2945528116191572083ull}}, {{15898392586054640987ull, 10050599870667562105ull, 2696872669513640516ull, 3681910145239465104ull}}, {{6037932677286137522ull, 12563249838334452632ull, 3371090836892050645ull, 4602387681549331380ull}}, {{3773707923303835952ull, 10157874158172726847ull, 11330303809912307461ull, 2876492300968332112ull}}, {{105448885702407035ull, 17309028716143296463ull, 14162879762390384326ull, 3595615376210415140ull}}, {{13966869162410172506ull, 12412913858324344770ull, 17703599702987980408ull, 4494519220263018925ull}}, {{13340979244933745720ull, 7758071161452715481ull, 13370592823581181707ull, 2809074512664386828ull}}, {{2841166000885018438ull, 5085902933388506448ull, 16713241029476477134ull, 3511343140830483535ull}}, {{3551457501106273048ull, 15580750703590408868ull, 16279865268418208513ull, 4389178926038104419ull}}, {{11443032975046196463ull, 2820440162102923686ull, 7869072783547686369ull, 2743236828773815262ull}}, {{5080419181952969771ull, 8137236221056042512ull, 612968942579832153ull, 3429046035967269078ull}}, {{6350523977441212213ull, 14783231294747441044ull, 9989583215079565999ull, 4286307544959086347ull}}, {{13192449522755533442ull, 16157048586858232508ull, 3937646500211034797ull, 2678942215599428967ull}}, {{16490561903444416802ull, 6361252678290626923ull, 310372106836405593ull, 3348677769499286209ull}}, {{16001516360878133098ull, 12563251866290671558ull, 4999651151972894895ull, 4185847211874107761ull}}, {{5389261707121445283ull, 14769561444072751580ull, 14653997016051529069ull, 2616154507421317350ull}}, {{6736577133901806603ull, 4626893749808775763ull, 9094124233209635529ull, 3270193134276646688ull}}, {{3809035398949870350ull, 10395303205688357608ull, 11367655291512044411ull, 4087741417845808360ull}}, {{2380647124343668969ull, 4191221494341529553ull, 7104784557195027757ull, 2554838386153630225ull}}, {{7587494923856974115ull, 9850712886354299845ull, 13492666714921172600ull, 3193547982692037781ull}}, {{14096054673248605547ull, 12313391107942874806ull, 3030775338369302038ull, 3991934978365047227ull}}, {{4198348152352990563ull, 3084183424036908850ull, 18035135650976671438ull, 2494959361478154516ull}}, {{14471307227296014012ull, 13078601316900911870ull, 4097175490011287681ull, 3118699201847693146ull}}, {{8865761997265241707ull, 2513193590843976126ull, 14344841399368885410ull, 3898374002309616432ull}}, {{929415229863388163ull, 6182432012704872983ull, 8965525874605553381ull, 2436483751443510270ull}}, {{14996827092611398916ull, 12339726034308479132ull, 1983535306402165918ull, 3045604689304387838ull}}, {{299289792054697028ull, 6201285506030823108ull, 11702791169857483206ull, 3807005861630484797ull}}, {{9410428156888961451ull, 17710861496551428154ull, 9620087490374620955ull, 2379378663519052998ull}}, {{2539663159256426006ull, 17526890852261897289ull, 2801737326113500386ull, 2974223329398816248ull}}, {{7786264967497920411ull, 12685241528472595803ull, 3502171657641875483ull, 3717779161748520310ull}}, {{2560572595472506305ull, 5622432946081678425ull, 16023915341308335889ull, 2323611976092825193ull}}, {{7812401762768020785ull, 11639727201029485935ull, 6194836121353256149ull, 2904514970116031492ull}}, {{5153816185032638077ull, 714600946004693707ull, 7743545151691570187ull, 3630643712645039365ull}}, {{1830584212863409692ull, 14728309237788030846ull, 14291117458041850637ull, 4538304640806299206ull}}, {{14979173188321794770ull, 11511036282831213230ull, 4320262392848768744ull, 2836440400503937004ull}}, {{9500594448547467654ull, 14388795353539016538ull, 5400327991060960930ull, 3545550500629921255ull}}, {{2652371023829558760ull, 8762622155068994865ull, 2138723970398813259ull, 4431938125787401569ull}}, {{13186946935961943985ull, 3170795837704427838ull, 12865917527567728047ull, 2769961328617125980ull}}, {{7260311633097654173ull, 17798552852412698510ull, 16082396909459660058ull, 3462451660771407475ull}}, {{18298761578226843524ull, 13024819028661097329ull, 15491310118397187169ull, 4328064575964259344ull}}, {{4519196958750695347ull, 1222982865272103975ull, 9682068823998241981ull, 2705040359977662090ull}}, {{1037310180010981279ull, 6140414600017517873ull, 2879213993143026668ull, 3381300449972077613ull}}, {{5908323743441114503ull, 7675518250021897341ull, 8210703509856171239ull, 4226625562465097016ull}}, {{5998545348864390517ull, 11714727933904767694ull, 5131689693660107024ull, 2641640976540685635ull}}, {{16721553722935263954ull, 14643409917380959617ull, 1802926098647745876ull, 3302051220675857044ull}}, {{7066884098386916230ull, 18304262396726199522ull, 2253657623309682345ull, 4127564025844821305ull}}, {{9028488579919210548ull, 4522634970312792845ull, 12937751060637021226ull, 2579727516153013315ull}}, {{15897296743326401089ull, 14876665749745766864ull, 11560502807368888628ull, 3224659395191266644ull}}, {{1424876855448449745ull, 149088113472656965ull, 14450628509211110786ull, 4030824243989083305ull}}, {{3196391043868975043ull, 4704866089347798507ull, 2114113790615862385ull, 2519265152493177066ull}}, {{17830546860118382515ull, 10492768630112136037ull, 11866014275124603789ull, 3149081440616471332ull}}, {{8453125519865814432ull, 17727646806067557951ull, 14832517843905754736ull, 3936351800770589165ull}}, {{12200732477557215876ull, 11079779253792223719ull, 11576166661654790662ull, 2460219875481618228ull}}, {{10639229578519131941ull, 4626352030385503841ull, 14470208327068488328ull, 3075274844352022785ull}}, {{17910722991576302830ull, 5782940037981879801ull, 4252702353553446698ull, 3844093555440028482ull}}, {{4276672842094107413ull, 8226023542166062780ull, 7269624989398292090ull, 2402558472150017801ull}}, {{5345841052617634266ull, 1059157390852802667ull, 13698717255175253017ull, 3003198090187522251ull}}, {{2070615297344654929ull, 5935632756993391238ull, 12511710550541678367ull, 3753997612734402814ull}}, {{15129192616122573043ull, 10627299500761951379ull, 3208133075661161075ull, 2346248507959001759ull}}, {{14299804751725828399ull, 8672438357525051320ull, 17845224399858615056ull, 2932810634948752198ull}}, {{17874755939657285499ull, 10840547946906314150ull, 13083158462968493012ull, 3666013293685940248ull}}, {{13120072887716831065ull, 13550684933632892688ull, 16353948078710616265ull, 4582516617107425310ull}}, {{8200045554823019416ull, 1551649055879476074ull, 5609531530766747262ull, 2864072885692140819ull}}, {{1026684906673998462ull, 11162933356704120901ull, 2400228395031046173ull, 3580091107115176024ull}}, {{5895042151769885981ull, 118608640597987414ull, 3000285493788807717ull, 4475113883893970030ull}}, {{17519459400138342451ull, 2379973409587436085ull, 15710236488900168535ull, 2796946177433731268ull}}, {{8064266194890764351ull, 16810024817266458819ull, 1191051537415659052ull, 3496182721792164086ull}}, {{5468646725186067535ull, 2565786947873521908ull, 10712186458624349624ull, 4370228402240205107ull}}, {{12641276240096068017ull, 1603616842420951192ull, 4389273527426524563ull, 2731392751400128192ull}}, {{15801595300120085022ull, 15839579108308352702ull, 5486591909283155703ull, 3414240939250160240ull}}, {{10528622088295330469ull, 15187787866958052974ull, 6858239886603944629ull, 4267801174062700300ull}}, {{1968702786757193639ull, 11798210426062477061ull, 13509771965982241201ull, 2667375733789187687ull}}, {{7072564501873879953ull, 912704977295932614ull, 12275528939050413598ull, 3334219667236484609ull}}, {{18064077664197125749ull, 10364253258474691575ull, 1509353118530853285ull, 4167774584045605762ull}}, {{18207577567764285449ull, 8783501295760376186ull, 5555031717509171207ull, 2604859115028503601ull}}, {{13536099922850581003ull, 6367690601273082329ull, 11555475665313851913ull, 3256073893785629501ull}}, {{3085066848281062542ull, 12571299270018740816ull, 609286526360151179ull, 4070092367232036877ull}}, {{1928166780175664089ull, 5551219034548019058ull, 2686647088188788439ull, 2543807729520023048ull}}, {{11633580512074355919ull, 2327337774757635918ull, 3358308860235985549ull, 3179759661900028810ull}}, {{5318603603238169091ull, 7520858236874432802ull, 13421258112149757744ull, 3974699577375036012ull}}, {{7935813270451243586ull, 4700536398046520501ull, 17611658356948374398ull, 2484187235859397507ull}}, {{14531452606491442386ull, 15099042534412926434ull, 17402886927758080093ull, 3105234044824246884ull}}, {{8940943721259527175ull, 5038745112733994331ull, 3306864585988048501ull, 3881542556030308606ull}}, {{3282246816573510532ull, 5455058704672440409ull, 15901848421524694025ull, 2425964097518942878ull}}, {{8714494539144276069ull, 11430509399267938415ull, 10653938490051091723ull, 3032455121898678598ull}}, {{6281432155502957183ull, 9676450730657535115ull, 4094051075709088846ull, 3790568902373348248ull}}, {{1620052087975654287ull, 1436095688233571543ull, 2558781922318180529ull, 2369105563983342655ull}}, {{15860123165251731571ull, 6406805628719352332ull, 17033535458179889373ull, 2961381954979178318ull}}, {{1378409882855112848ull, 12620193054326578320ull, 12068547285870085908ull, 3701727443723972898ull}}, {{861506176784445530ull, 17110992695808887258ull, 12154528072096191596ull, 2313579652327483061ull}}, {{10300254757835332720ull, 2941996796051557456ull, 1358102034838075784ull, 2891974565409353827ull}}, {{12875318447294165900ull, 3677495995064446820ull, 15532685598829758442ull, 3614968206761692283ull}}, {{16094148059117707375ull, 13820242030685334333ull, 14804170980109810148ull, 4518710258452115354ull}}, {{12364685546162261062ull, 17861023306033109766ull, 13864292880996019246ull, 2824193911532572096ull}}, {{6232484895848050519ull, 13102907095686611400ull, 17330366101245024058ull, 3530242389415715120ull}}, {{7790606119810063149ull, 7155261832753488442ull, 3216213552846728457ull, 4412802986769643901ull}}, {{9480814843308677372ull, 16001253691539400036ull, 4315976479742899237ull, 2758001866731027438ull}}, {{11851018554135846715ull, 6166509059142086333ull, 14618342636533399855ull, 3447502333413784297ull}}, {{978715137387644682ull, 3096450305500220013ull, 4437870240384586107ull, 4309377916767230372ull}}, {{2917539970080971878ull, 18076182505433495172ull, 11997040937095142124ull, 2693361197979518982ull}}, {{3646924962601214848ull, 4148484058082317349ull, 5772929134514151848ull, 3366701497474398728ull}}, {{9170342221678906464ull, 5185605072602896686ull, 7216161418142689810ull, 4208376871842998410ull}}, {{1119777870121928636ull, 7852689188804198333ull, 9121786904766569035ull, 2630235544901874006ull}}, {{6011408356079798699ull, 5204175467577860012ull, 2178861594103435486ull, 3287794431127342508ull}}, {{7514260445099748373ull, 15728591371327100823ull, 2723576992629294357ull, 4109743038909178135ull}}, {{11613941805828424589ull, 12136212616293131966ull, 8619764648034390829ull, 2568589399318236334ull}}, {{5294055220430754929ull, 1335207715084251246ull, 1551333773188212729ull, 3210736749147795418ull}}, {{15840941062393219469ull, 6280695662282701961ull, 11162539253340041719ull, 4013420936434744272ull}}, {{2983059136354680312ull, 10842963816567770582ull, 6976587033337526074ull, 2508388085271715170ull}}, {{12952195957298126198ull, 4330332733854937419ull, 17944105828526683401ull, 3135485106589643962ull}}, {{11578558928195269844ull, 10024601935746059678ull, 13206760248803578443ull, 3919356383237054953ull}}, {{2624913311694655748ull, 3959533200627593347ull, 1336696127861154671ull, 2449597739523159346ull}}, {{17116199694900483397ull, 337730482357103779ull, 10894242196681219147ull, 3061997174403949182ull}}, {{16783563600198216343ull, 14257221158228543436ull, 4394430708996748125ull, 3827496468004936478ull}}, {{1266355213269109406ull, 11216606233106533600ull, 16581577248405131290ull, 2392185292503085298ull}}, {{1582944016586386758ull, 4797385754528391192ull, 11503599523651638305ull, 2990231615628856623ull}}, {{1978680020732983447ull, 10608418211587876894ull, 9767813386137159977ull, 3737789519536070779ull}}, {{15071733068240278367ull, 18159476428310892818ull, 3799040357122031033ull, 2336118449710044237ull}}, {{9616294298445572150ull, 8864287480106452311ull, 9360486464829926696ull, 2920148062137555296ull}}, {{7408681854629577284ull, 11080359350133065389ull, 11700608081037408370ull, 3650185077671944120ull}}, {{13872538336714359508ull, 4627077150811555928ull, 14625760101296760463ull, 4562731347089930150ull}}, {{8670336460446474693ull, 9809452246898304311ull, 4529414044883087385ull, 2851707091931206344ull}}, {{6226234557130705462ull, 16873501327050268293ull, 5661767556103859231ull, 3564633864914007930ull}}, {{12394479214840769731ull, 16480190640385447462ull, 16300581481984599847ull, 4455792331142509912ull}}, {{3134863490848093178ull, 17217648177881986520ull, 10187863426240374904ull, 2784870206964068695ull}}, {{3918579363560116473ull, 3075316148642931534ull, 8123143264373080727ull, 3481087758705085869ull}}, {{14121596241304921399ull, 17679203241085828129ull, 14765615098893738812ull, 4351359698381357336ull}}, {{1908468623174494018ull, 1826129988823866773ull, 9228509436808586758ull, 2719599811488348335ull}}, {{6997271797395505427ull, 11506034522884609274ull, 6923950777583345543ull, 3399499764360435419ull}}, {{17969961783599157591ull, 9770857135178373688ull, 4043252453551794025ull, 4249374705450544274ull}}, {{11231226114749473495ull, 17636000755554953315ull, 7138718801897259169ull, 2655859190906590171ull}}, {{9427346625009453964ull, 8209942889161527932ull, 4311712483944186058ull, 3319823988633237714ull}}, {{11784183281261817455ull, 1039056574597134107ull, 14613012641785008381ull, 4149779985791547142ull}}, {{5059271541574941958ull, 2955253368336902769ull, 4521446882688242334ull, 2593612491119716964ull}}, {{10935775445396065351ull, 12917438747275904269ull, 5651808603360302917ull, 3242015613899646205ull}}, {{18281405325172469593ull, 2311740378812716624ull, 11676446772627766551ull, 4052519517374557756ull}}, {{11425878328232793496ull, 8362366764399029746ull, 16521151269747129902ull, 2532824698359098597ull}}, {{5058975873436216062ull, 1229586418644011375ull, 6816381031901748666ull, 3166030872948873247ull}}, {{1712033823367882173ull, 10760355060159790027ull, 3908790271449797928ull, 3957538591186091559ull}}, {{17210922204100784022ull, 6725221912599868766ull, 9360522947297205561ull, 2473461619491307224ull}}, {{12290280718271204220ull, 13018213409177223862ull, 11700653684121506951ull, 3091827024364134030ull}}, {{6139478860984229466ull, 11661080743044141924ull, 5402445068297107881ull, 3864783780455167538ull}}, {{13060546324969919225ull, 370646436761506846ull, 7988214186113080330ull, 2415489862784479711ull}}, {{7102310869357623223ull, 9686680082806659366ull, 5373581714213962508ull, 3019362328480599639ull}}, {{18101260623551804836ull, 12108350103508324207ull, 2105291124340065231ull, 3774202910600749549ull}}, {{18230816917360959879ull, 14485247842333784485ull, 3621649961926234721ull, 2358876819125468468ull}}, {{8953463091419036136ull, 4271501747635066895ull, 4527062452407793402ull, 2948596023906835585ull}}, {{6580142845846407266ull, 14562749221398609427ull, 10270514083937129656ull, 3685745029883544481ull}}, {{3613492538880621179ull, 18203436526748261784ull, 17449828623348799974ull, 4607181287354430601ull}}, {{2258432836800388237ull, 6765461810790275711ull, 3988613861951918128ull, 2879488304596519126ull}}, {{16658099101282649008ull, 8456827263487844638ull, 14209139364294673468ull, 3599360380745648907ull}}, {{11599251839748535452ull, 10571034079359805798ull, 13149738186940953931ull, 4499200475932061134ull}}, {{2637846381415446754ull, 4301053290386184672ull, 3606900348410708303ull, 2812000297457538209ull}}, {{3297307976769308442ull, 764630594555342936ull, 9120311453940773283ull, 3515000371821922761ull}}, {{4121634970961635552ull, 14790846298476342382ull, 16012075335853354507ull, 4393750464777403451ull}}, {{16411079912133185932ull, 6938435927334020036ull, 7701704075694652615ull, 2746094040485877157ull}}, {{2067105816456930799ull, 4061358890740137142ull, 14238816113045703673ull, 3432617550607346446ull}}, {{11807254307425939307ull, 9688384631852559331ull, 8575148104452353783ull, 4290771938259183058ull}}, {{5073690932927518115ull, 12972769422548931438ull, 9971153583710109018ull, 2681732461411989411ull}}, {{15565485703014173452ull, 6992589741331388489ull, 7852255961210248369ull, 3352165576764986764ull}}, {{5621799073485553103ull, 13352423195091623516ull, 9815319951512810461ull, 4190206970956233455ull}}, {{12736996457783246497ull, 10651107506145958649ull, 13052103997336588394ull, 2618879356847645909ull}}, {{2086187516946894410ull, 4090512345827672504ull, 2480071941388571781ull, 3273599196059557387ull}}, {{2607734396183618012ull, 9724826450711978534ull, 16935147982017878438ull, 4091998995074446733ull}}, {{15464892052896924970ull, 1466330513267598679ull, 12890310497974867976ull, 2557499371921529208ull}}, {{14719429047693768308ull, 1832913141584498349ull, 16112888122468584970ull, 3196874214901911510ull}}, {{4564228254335046673ull, 11514513463835398745ull, 10917738116230955404ull, 3996092768627389388ull}}, {{14381857705027873931ull, 16419942951751900023ull, 16046958359499122935ull, 2497557980392118367ull}}, {{13365636112857454509ull, 15913242671262487125ull, 15447011930946515765ull, 3121947475490147959ull}}, {{2871987085789654424ull, 6056495283795945195ull, 14697078895255756803ull, 3902434344362684949ull}}, {{17935892993114391679ull, 1479466543158771794ull, 11491517318748541954ull, 2439021465226678093ull}}, {{13196494204538213791ull, 11072705215803240551ull, 529338593153513730ull, 3048776831533347617ull}}, {{11883931737245379335ull, 4617509482899274881ull, 5273359259869280067ull, 3810971039416684521ull}}, {{509928308137280228ull, 580100417598352849ull, 14825064583486769802ull, 2381856899635427825ull}}, {{5249096403598988189ull, 9948497558852716869ull, 4696272674076298540ull, 2977321124544284782ull}}, {{11173056522926123141ull, 12435621948565896086ull, 15093712879450148983ull, 3721651405680355977ull}}, {{2371474308401439059ull, 14689792745494766910ull, 2516041522015261258ull, 2326032128550222486ull}}, {{12187714922356574632ull, 9138868895013682829ull, 12368423939373852381ull, 2907540160687778107ull}}, {{1399585597663554577ull, 16035272137194491441ull, 10848843905789927572ull, 3634425200859722634ull}}, {{6361168015506831126ull, 1597346097783562685ull, 4337682845382633658ull, 4543031501074653293ull}}, {{6281573018905463406ull, 5610027329542114582ull, 5016894787577839988ull, 2839394688171658308ull}}, {{17075338310486605065ull, 7012534161927643227ull, 6271118484472299985ull, 3549243360214572885ull}}, {{16732486869680868427ull, 13377353720836941938ull, 12450584124017762885ull, 4436554200268216106ull}}, {{15069490311977930671ull, 10666689084736782663ull, 12393301095938489707ull, 2772846375167635066ull}}, {{14225176871545025435ull, 8721675337493590425ull, 6268254333068336326ull, 3466057968959543833ull}}, {{3946413034149118081ull, 1678722135012212224ull, 12447003934762808312ull, 4332572461199429791ull}}, {{2466508146343198801ull, 1049201334382632640ull, 14696906486867837051ull, 2707857788249643619ull}}, {{3083135182928998501ull, 15146559723260454512ull, 13759447090157408409ull, 3384822235312054524ull}}, {{3853918978661248126ull, 5098141598793404428ull, 17199308862696760512ull, 4231027794140068155ull}}, {{11632071398518055887ull, 3186338499245877767ull, 8443725029971781368ull, 2644392371337542597ull}}, {{9928403229720181955ull, 3982923124057347209ull, 15166342305892114614ull, 3305490464171928246ull}}, {{17022190055577615348ull, 14202025941926459819ull, 9734555845510367459ull, 4131863080214910308ull}}, {{8333025775522315640ull, 6570423204490343435ull, 15307469440298755470ull, 2582414425134318942ull}}, {{5804596200975506646ull, 17436401042467705102ull, 9910964763518668529ull, 3228018031417898678ull}}, {{16479117288074159116ull, 7960443247802467665ull, 3165333917543559854ull, 4035022539272373348ull}}, {{3381919277405267592ull, 363591011449154387ull, 11201705735319500717ull, 2521889087045233342ull}}, {{18062457152038748201ull, 5066174782738830887ull, 4778760132294600088ull, 3152361358806541678ull}}, {{17966385421621047348ull, 6332718478423538609ull, 15196822202223025918ull, 3940451698508177097ull}}, {{4311461860872072736ull, 17793007104296875343ull, 2580484848748309342ull, 2462782311567610686ull}}, {{777641307662703016ull, 13017886843516318371ull, 12448978097790162486ull, 3078477889459513357ull}}, {{14807109689860542482ull, 7048986517540622155ull, 1726164566955539396ull, 3848097361824391697ull}}, {{6948600546949145100ull, 13628988610317664655ull, 12608067900415681882ull, 2405060851140244810ull}}, {{4074064665259043470ull, 7812863726042305011ull, 6536712838664826545ull, 3006326063925306013ull}}, {{480894813146416434ull, 14377765675980269168ull, 12782577066758421085ull, 3757907579906632516ull}}, {{300559258216510271ull, 11291946556701362182ull, 17212482703578788986ull, 2348692237441645322ull}}, {{9599071109625413647ull, 4891561159021926919ull, 12292231342618710425ull, 2935865296802056653ull}}, {{7387152868604379155ull, 10726137467204796553ull, 1530231122991224319ull, 3669831621002570817ull}}, {{13845627104182861847ull, 8795985815578607787ull, 6524474922166418303ull, 4587289526253213521ull}}, {{6347673930900594703ull, 12415020162377711723ull, 15607011872422481199ull, 2867055953908258450ull}}, {{3322906395198355474ull, 10907089184544751750ull, 10285392803673325691ull, 3583819942385323063ull}}, {{13377005030852720151ull, 9022175462253551783ull, 8245054986164269210ull, 4479774927981653829ull}}, {{15278157171924031950ull, 10250545682335857768ull, 7459002375566362208ull, 2799859329988533643ull}}, {{650952391195488322ull, 12813182102919822211ull, 4712066951030564856ull, 3499824162485667054ull}}, {{14648748544276524114ull, 16016477628649777763ull, 15113455725642981878ull, 4374780203107083817ull}}, {{6849624830959133620ull, 5398612499478723198ull, 2528380800885781818ull, 2734237626941927386ull}}, {{17785403075553692832ull, 15971637661203179805ull, 12383848037962003080ull, 3417797033677409232ull}}, {{8396695789159952328ull, 1517803002794423141ull, 15479810047452503851ull, 4272246292096761540ull}}, {{7553777877438664157ull, 17089527941242372127ull, 451509242803039098ull, 2670153932560475963ull}}, {{4830536328370942293ull, 12138537889698189351ull, 14399444608785962585ull, 3337692415700594953ull}}, {{1426484392036289962ull, 1338114306840572977ull, 4164247705700289520ull, 4172115519625743692ull}}, {{12420767791091150986ull, 836321441775358110ull, 11826026852917456758ull, 2607572199766089807ull}}, {{6302587702009162925ull, 10268773839073973446ull, 10170847547719433043ull, 3259465249707612259ull}}, {{17101606664366229464ull, 8224281280415078903ull, 8101873416221903400ull, 4074331562134515324ull}}, {{17606033192869975271ull, 5140175800259424314ull, 14287042921993465433ull, 2546457226334072077ull}}, {{12784169454232693281ull, 11036905768751668297ull, 4023745597209668079ull, 3183071532917590097ull}}, {{2145153762508702889ull, 9184446192512197468ull, 9641368014939473003ull, 3978839416146987621ull}}, {{10564093138422715114ull, 3434435861106429465ull, 8331698018550864579ull, 2486774635091867263ull}}, {{17816802441455781796ull, 18128102881665200543ull, 5802936504761192819ull, 3108468293864834079ull}}, {{17659317033392339341ull, 18048442583654112775ull, 2641984612524103120ull, 3885585367331042599ull}}, {{17954602173511293944ull, 11280276614783820484ull, 8568769410468646306ull, 2428490854581901624ull}}, {{3996508643179565814ull, 4876973731624999798ull, 10710961763085807883ull, 3035613568227377030ull}}, {{14219007840829233075ull, 1484531146103861843ull, 4165330167002484046ull, 3794516960284221288ull}}, {{6581036891304576720ull, 14762890021597077364ull, 2603331354376552528ull, 2371573100177638305ull}}, {{8226296114130720900ull, 6868453286795089ull, 7865850211398078565ull, 2964466375222047881ull}}, {{14894556161090789029ull, 4620271585035881765ull, 14443998782674986110ull, 3705582969027559851ull}}, {{11614940609895437095ull, 16722727795929589815ull, 6721656229958172366ull, 2315989355642224907ull}}, {{9906989743941908465ull, 11680037708057211461ull, 3790384269020327554ull, 2894986694552781134ull}}, {{16995423198354773485ull, 5376675098216738518ull, 13961352373130185251ull, 3618733368190976417ull}}, {{12020906961088691049ull, 2109157854343535244ull, 3616632411130567852ull, 4523416710238720522ull}}, {{16736438887535207714ull, 10541595695819485335ull, 6872081275383992811ull, 2827135443899200326ull}}, {{16308862590991621738ull, 8565308601346968765ull, 17813473631084766822ull, 3533919304874000407ull}}, {{6551020183457363460ull, 1483263714828935149ull, 17655156020428570624ull, 4417399131092500509ull}}, {{6400230623874546115ull, 927039821768084468ull, 13340315521981550592ull, 2760874456932812818ull}}, {{8000288279843182643ull, 1158799777210105585ull, 7452022365622162432ull, 3451093071166016023ull}}, {{14612046368231366208ull, 1448499721512631981ull, 4703341938600315136ull, 4313866338957520029ull}}, {{11438371989358297832ull, 905312325945394988ull, 5245431720838890912ull, 2696166461848450018ull}}, {{14297964986697872290ull, 1131640407431743735ull, 15780161687903389448ull, 3370208077310562522ull}}, {{13260770214944952459ull, 1414550509289679669ull, 10501830073024461002ull, 4212760096638203153ull}}, {{10593824393554289239ull, 5495780086733437697ull, 18092858841708757886ull, 2632975060398876970ull}}, {{17853966510370249452ull, 16093097145271572929ull, 13392701515281171549ull, 3291218825498596213ull}}, {{8482400082680648103ull, 6281313376307302450ull, 2905818838819300725ull, 4114023531873245267ull}}, {{9913186070102792969ull, 6231663869405757983ull, 17957037838757920617ull, 2571264707420778291ull}}, {{7779796569201103307ull, 12401265855184585383ull, 17834611280020012867ull, 3214080884275972864ull}}, {{5113059693073991229ull, 10889896300553343825ull, 3846520026315464468ull, 4017601105344966081ull}}, {{14724877354239714279ull, 16029557224700615698ull, 13933290062515635052ull, 2511000690840603800ull}}, {{9182724655944867040ull, 1590202457166218007ull, 17416612578144543816ull, 3138750863550754750ull}}, {{6866719801503695896ull, 1987753071457772509ull, 12547393685825903962ull, 3923438579438443438ull}}, {{6597542885153503887ull, 5854031688088495722ull, 3230435035213802072ull, 2452149112149027149ull}}, {{17470300643296655667ull, 7317539610110619652ull, 8649729812444640494ull, 3065186390186283936ull}}, {{3391131730411267967ull, 18370296549493050374ull, 10812162265555800617ull, 3831482987732854920ull}}, {{15954515386789206192ull, 4563906315792074627ull, 6757601415972375386ull, 2394676867333034325ull}}, {{15331458215059119836ull, 14928254931594869092ull, 13058687788392857136ull, 2993346084166292906ull}}, {{717578695114348178ull, 213574590784034750ull, 7099987698636295613ull, 3741682605207866133ull}}, {{14283544739728631324ull, 2439327128453715670ull, 6743335320861378710ull, 2338551628254916333ull}}, {{8631058887806013347ull, 12272530947421920396ull, 13040855169504111291ull, 2923189535318645416ull}}, {{10788823609757516683ull, 10728977665850012591ull, 16301068961880139114ull, 3653986919148306770ull}}, {{8874343493769507950ull, 4187850045457739931ull, 11152964165495398085ull, 4567483648935383463ull}}, {{3240621674392248517ull, 4923249287624781409ull, 13888131631075705659ull, 2854677280584614664ull}}, {{8662463111417698550ull, 1542375591103588857ull, 17360164538844632074ull, 3568346600730768330ull}}, {{15439764907699511091ull, 11151341525734261879ull, 12476833636701014284ull, 4460433250913460413ull}}, {{16567382094953276288ull, 16192960490438689482ull, 10103864032151827879ull, 2787770781820912758ull}}, {{11485855581836819552ull, 15629514594620973949ull, 3406458003335009041ull, 3484713477276140948ull}}, {{522261422013860728ull, 5701835187994053725ull, 4258072504168761302ull, 4355891846595176185ull}}, {{2632256397972356907ull, 17398705047778447290ull, 14190510361173945573ull, 2722432404121985115ull}}, {{12513692534320221942ull, 7913323254440895400ull, 13126451933040044063ull, 3403040505152481394ull}}, {{15642115667900277427ull, 5279968049623731346ull, 7184692879445279271ull, 4253800631440601743ull}}, {{14388008310865061296ull, 10217509058655913947ull, 11407962077294381400ull, 2658625394650376089ull}}, {{13373324370153938716ull, 12771886323319892434ull, 424894541335813038ull, 3323281743312970112ull}}, {{7493283425837647587ull, 6741485867295089735ull, 531118176669766298ull, 4154102179141212640ull}}, {{11600831168789611598ull, 8825114685486818988ull, 331948860418603936ull, 2596313861963257900ull}}, {{14501038960987014497ull, 11031393356858523735ull, 414936075523254920ull, 3245392327454072375ull}}, {{13514612682806380218ull, 13789241696073154669ull, 14353728149686232362ull, 4056740409317590468ull}}, {{10752475935967681588ull, 13229962078473109572ull, 18194452130408671034ull, 2535462755823494042ull}}, {{13440594919959601985ull, 7314080561236611157ull, 13519693126156062985ull, 3169328444779367553ull}}, {{2965685594667338769ull, 13754286719973151851ull, 3064558352412915019ull, 3961660555974209442ull}}, {{17994454561162944395ull, 6290586190769525954ull, 6527034988685459791ull, 2476037847483880901ull}}, {{13269696164598904686ull, 3251546720034519539ull, 12770479754284212643ull, 3095047309354851126ull}}, {{11975434187321242953ull, 17899491455325313136ull, 6739727656000489995ull, 3868809136693563908ull}}, {{7484646367075776846ull, 8881339150364626758ull, 13435701821855082055ull, 2418005710433477442ull}}, {{132435921989945249ull, 6489987919528395544ull, 7571255240464076761ull, 3022507138041846803ull}}, {{165544902487431561ull, 12724170917837882334ull, 4852383032152708047ull, 3778133922552308504ull}}, {{13938523619336808438ull, 14870135851289758314ull, 3032739395095442529ull, 2361333701595192815ull}}, {{8199782487316234739ull, 4752611758830034181ull, 17625982299151466874ull, 2951667126993991018ull}}, {{14861414127572681328ull, 15164136735392318534ull, 12809105837084557784ull, 3689583908742488773ull}}, {{4676697811305537926ull, 9477585459620199084ull, 10311534157391542567ull, 2305989942964055483ull}}, {{5845872264131922408ull, 7235295806097860951ull, 8277731678312040305ull, 2882487428705069354ull}}, {{2695654311737515105ull, 13655805776049714093ull, 1123792561035274573ull, 3603109285881336693ull}}, {{7981253908099281786ull, 3234699164779978904ull, 6016426719721481121ull, 4503886607351670866ull}}, {{4988283692562051116ull, 13550902024055956575ull, 8371952718253313604ull, 2814929129594794291ull}}, {{1623668597275175991ull, 16938627530069945719ull, 5853254879389254101ull, 3518661411993492864ull}}, {{15864643801876133701ull, 7338226357305268436ull, 7316568599236567627ull, 4398326764991866080ull}}, {{692030339317807755ull, 2280548464102098821ull, 4572855374522854767ull, 2748954228119916300ull}}, {{5476723942574647598ull, 16685743635409787238ull, 5716069218153568458ull, 3436192785149895375ull}}, {{16069276965073085305ull, 11633807507407458239ull, 2533400504264572669ull, 4295240981437369219ull}}, {{16960827130811760172ull, 9576972701343355351ull, 17724276379661215582ull, 2684525613398355761ull}}, {{16589347895087312311ull, 2747843839824418381ull, 8320287419294355766ull, 3355657016747944702ull}}, {{6901626813576976676ull, 12658176836635298785ull, 1176987237263168899ull, 4194571270934930878ull}}, {{15842731804554080183ull, 5605517513683367788ull, 14570675078571644274ull, 2621607044334331798ull}}, {{1356670681983048613ull, 16230268928958985544ull, 8989971811359779534ull, 3277008805417914748ull}}, {{1695838352478810766ull, 11064464124343956122ull, 11237464764199724418ull, 4096261006772393435ull}}, {{5671584988726644633ull, 11526976096142360480ull, 4717572468411133809ull, 2560163129232745897ull}}, {{7089481235908305791ull, 573662064895786888ull, 10508651603941305166ull, 3200203911540932371ull}}, {{8861851544885382238ull, 9940449617974509418ull, 8524128486499243553ull, 4000254889426165464ull}}, {{10150343233980751803ull, 17741996057302538146ull, 5327580304062027220ull, 2500159305891353415ull}}, {{3464557005621163946ull, 3730750997918621067ull, 2047789361650146122ull, 3125199132364191769ull}}, {{18165754312308618644ull, 13886810784253052141ull, 7171422720490070556ull, 3906498915455239711ull}}, {{13659439454406580605ull, 17902628777012933396ull, 11399668227947375953ull, 2441561822159524819ull}}, {{17074299318008225756ull, 8543227915984003033ull, 9637899266506832038ull, 3051952277699406024ull}}, {{7507816092228118483ull, 1455662858125227984ull, 12047374083133540048ull, 3814940347124257530ull}}, {{4692385057642574052ull, 909789286328267490ull, 12141294820385850434ull, 2384337716952660956ull}}, {{15088853358907993373ull, 10360608644765110170ull, 15176618525482313042ull, 2980422146190826195ull}}, {{9637694661780215908ull, 3727388769101611905ull, 14359087138425503399ull, 3725527682738532744ull}}, {{17552774209681104702ull, 9247147008329589296ull, 8974429461515939624ull, 2328454801711582965ull}}, {{3494223688391829262ull, 11558933760411986621ull, 15829722845322312434ull, 2910568502139478706ull}}, {{8979465628917174481ull, 5225295163660207468ull, 10563781519798114735ull, 3638210627674348383ull}}, {{11224332036146468102ull, 1919932936147871431ull, 8593040881320255515ull, 4547763284592935479ull}}, {{13932736550232624420ull, 17340859149588277308ull, 12288179578466241552ull, 2842352052870584674ull}}, {{17415920687790780524ull, 3229329863275795019ull, 6136852436228026133ull, 3552940066088230843ull}}, {{17158214841311087751ull, 8648348347522131678ull, 3059379526857644762ull, 4441175082610288554ull}}, {{6112198257392041941ull, 10016903735628720203ull, 6523798222713415880ull, 2775734426631430346ull}}, {{3028561803312664522ull, 12521129669535900254ull, 17378119815246545658ull, 3469668033289287932ull}}, {{13009074290995606460ull, 6428040050065099509ull, 3275905695348630457ull, 4337085041611609916ull}}, {{10436514441085947990ull, 15546740077359156953ull, 11270813096447669843ull, 2710678151007256197ull}}, {{17657329069784822891ull, 14821739078271558287ull, 253458315277423592ull, 3388347688759070247ull}}, {{17459975318803640710ull, 80429774129896243ull, 14151880949378943203ull, 4235434610948837808ull}}, {{8606641565038581492ull, 16191169673327042816ull, 8844925593361839501ull, 2647146631843023630ull}}, {{10758301956298226865ull, 6403904036376639808ull, 1832784954847523569ull, 3308933289803779538ull}}, {{13447877445372783581ull, 12616566063898187664ull, 11514353230414180269ull, 4136166612254724422ull}}, {{8404923403357989738ull, 10191196799150061242ull, 2584784750581474764ull, 2585104132659202764ull}}, {{1282782217342711365ull, 12738995998937576553ull, 3230980938226843455ull, 3231380165824003455ull}}, {{6215163790105777110ull, 11312058980244582787ull, 17873784228065718031ull, 4039225207280004318ull}}, {{1578634359602416742ull, 13987565890293946098ull, 6559429124113685865ull, 2524515754550002699ull}}, {{11196664986357796735ull, 3649399307585268910ull, 3587600386714719428ull, 3155644693187503374ull}}, {{4772459196092470111ull, 4561749134481586138ull, 13707872520248175093ull, 3944555866484379217ull}}, {{7594473015985181723ull, 5156936218264685288ull, 1649891297514027577ull, 2465347416552737011ull}}, {{9493091269981477154ull, 11057856291258244514ull, 15897422177174698183ull, 3081684270690921263ull}}, {{2642992050622070634ull, 9210634345645417739ull, 15260091703040984825ull, 3852105338363651579ull}}, {{17792771096134651811ull, 17285861512096855846ull, 7231714305186921563ull, 2407565836477282237ull}}, {{13017591833313538955ull, 16995640871693681904ull, 13651328899911039858ull, 3009457295596602796ull}}, {{16271989791641923694ull, 12021179052762326572ull, 17064161124888799823ull, 3761821619495753495ull}}, {{946621582921426501ull, 14430765935617535964ull, 17582629730696581745ull, 2351138512184845934ull}}, {{1183276978651783126ull, 4203399364239756243ull, 12754915126515951374ull, 2938923140231057418ull}}, {{15314154278596892619ull, 14477621242154471111ull, 6720271871290163409ull, 3673653925288821773ull}}, {{14531006829818727870ull, 4261968497410925177ull, 13012025857540092166ull, 4592067406611027216ull}}, {{2164350240995623063ull, 16498788366163991948ull, 8132516160962557603ull, 2870042129131892010ull}}, {{2705437801244528829ull, 16011799439277602031ull, 942273164348421196ull, 3587552661414865013ull}}, {{17216855306837824748ull, 1568005225387450922ull, 5789527473862914400ull, 4484440826768581266ull}}, {{15372220585201028371ull, 980003265867156826ull, 8230140689591709404ull, 2802775516730363291ull}}, {{9991903694646509656ull, 1225004082333946033ull, 5675989843562248851ull, 3503469395912954114ull}}, {{17101565636735524974ull, 15366313158199596253ull, 16318359341307586871ull, 4379336744891192642ull}}, {{12994321532173397061ull, 16521474751515829514ull, 14810660606744629698ull, 2737085465556995401ull}}, {{7019529878361970518ull, 11428471402540011085ull, 4678267703148623411ull, 3421356831946244252ull}}, {{13386098366379851052ull, 9673903234747625952ull, 5847834628935779264ull, 4276696039932805315ull}}, {{8366311478987406907ull, 6046189521717266220ull, 1349053633871168088ull, 2672935024958003322ull}}, {{10457889348734258634ull, 7557736902146582775ull, 10909689079193735918ull, 3341168781197504152ull}}, {{8460675667490435388ull, 223799090828452661ull, 13637111348992169898ull, 4176460976496880190ull}}, {{7593765301395216070ull, 4751560450195170817ull, 3911508574692718282ull, 2610288110310550119ull}}, {{14103892645171407991ull, 15162822599598739329ull, 277699699938509948ull, 3262860137888187649ull}}, {{3794807751182096277ull, 506784175788872546ull, 4958810643350525340ull, 4078575172360234561ull}}, {{6983440862916198077ull, 9540112146722821149ull, 14628471698162548097ull, 2549109482725146600ull}}, {{13340987097072635501ull, 16536826201830914340ull, 18285589622703185121ull, 3186386853406433250ull}}, {{16676233871340794376ull, 6835974697006479213ull, 13633614991524205594ull, 3982983566758041563ull}}, {{12728489178801690437ull, 8884170204056437412ull, 6215166360488934544ull, 2489364729223775977ull}}, {{15910611473502113046ull, 11105212755070546765ull, 12380643969038556084ull, 3111705911529719971ull}}, {{6053206286595477595ull, 13881515943838183457ull, 10864118942870807201ull, 3889632389412149964ull}}, {{15312468975190643257ull, 1758418437257782804ull, 16013446376149030309ull, 2431020243382593727ull}}, {{693842145278752456ull, 6809709064999616410ull, 15405121951758899982ull, 3038775304228242159ull}}, {{10090674718453216377ull, 17735508368104296320ull, 14644716421271237073ull, 3798469130285302699ull}}, {{6306671699033260236ull, 4167163702424103344ull, 6847104754080829219ull, 2374043206428314187ull}}, {{7883339623791575295ull, 597268609602741276ull, 3947194924173648620ull, 2967554008035392734ull}}, {{9854174529739469118ull, 746585762003426595ull, 14157365692071836583ull, 3709442510044240917ull}}, {{3853016071873474247ull, 7384145128893223478ull, 11154196566758591816ull, 2318401568777650573ull}}, {{14039642126696618617ull, 9230181411116529347ull, 107687653166076058ull, 2898001960972063217ull}}, {{12937866639943385367ull, 2314354727040885876ull, 4746295584884982977ull, 3622502451215079021ull}}, {{16172333299929231709ull, 7504629427228495249ull, 10544555499533616625ull, 4528128064018848776ull}}, {{3190179284814687962ull, 16219608438086279291ull, 6590347187208510390ull, 2830080040011780485ull}}, {{17822782161300523664ull, 11051138510753073305ull, 12849620002438025892ull, 3537600050014725606ull}}, {{8443419646343490868ull, 13813923138441341632ull, 6838652966192756557ull, 4422000062518407008ull}}, {{5277137278964681793ull, 10939544970739532472ull, 4274158103870472848ull, 2763750039074004380ull}}, {{6596421598705852241ull, 13674431213424415590ull, 5342697629838091060ull, 3454687548842505475ull}}, {{17468899035237091109ull, 17093039016780519487ull, 2066686018870225921ull, 4318359436053131844ull}}, {{17835590924664263799ull, 3765620357846742823ull, 10515050798648667009ull, 2698974647533207402ull}}, {{17682802637402941845ull, 9318711465735816433ull, 3920441461456057953ull, 3373718309416509253ull}}, {{8268445241471513594ull, 16260075350597158446ull, 9512237845247460345ull, 4217147886770636566ull}}, {{556092257492308093ull, 3245018066482142173ull, 1333462634852274812ull, 2635717429231647854ull}}, {{5306801340292773020ull, 4056272583102677716ull, 10890200330420119323ull, 3294646786539559817ull}}, {{6633501675365966275ull, 458654710450959241ull, 18224436431452537058ull, 4118308483174449771ull}}, {{15675153593172198682ull, 4898345212459237429ull, 9084429760444141709ull, 2573942801984031107ull}}, {{5758883936183084640ull, 10734617534001434691ull, 6743851182127789232ull, 3217428502480038884ull}}, {{2586918901801467896ull, 13418271917501793364ull, 8429813977659736540ull, 4021785628100048605ull}}, {{10840196350480693243ull, 17609791985293396660ull, 7574476745251029289ull, 2513616017562530378ull}}, {{13550245438100866554ull, 8177181926334582113ull, 244723894709010804ull, 3142020021953162973ull}}, {{3102748742343919480ull, 10221477407918227642ull, 4917590886813651409ull, 3927525027441453716ull}}, {{6550903982392337579ull, 17917638426017362036ull, 12296866341113307938ull, 2454703142150908572ull}}, {{8188629977990421974ull, 13173675995666926737ull, 15371082926391634923ull, 3068378927688635715ull}}, {{14847473490915415371ull, 11855408976156270517ull, 14602167639562155750ull, 3835473659610794644ull}}, {{11585513941035828559ull, 2797944591670281169ull, 18349726811581123152ull, 2397171037256746652ull}}, {{646834371012621987ull, 3497430739587851462ull, 4490414440766852324ull, 2996463796570933316ull}}, {{10031915000620553292ull, 4371788424484814327ull, 5613018050958565405ull, 3745579745713666645ull}}, {{13187475903028927663ull, 5038210774516702906ull, 5813979291062797330ull, 2340987341071041653ull}}, {{7260972841931383771ull, 15521135505000654441ull, 11879160132255884566ull, 2926234176338802066ull}}, {{13687902070841617618ull, 10178047344396042243ull, 5625578128465079900ull, 3657792720423502583ull}}, {{12498191570124634118ull, 12722559180495052804ull, 2420286642153961971ull, 4572240900529378229ull}}, {{17034741768182672132ull, 5645756478595714050ull, 3818522160559920184ull, 2857650562830861393ull}}, {{12070055173373564357ull, 7057195598244642563ull, 9384838719127288134ull, 3572063203538576741ull}}, {{10475882948289567542ull, 18044866534660579012ull, 16342734417336498071ull, 4465079004423220926ull}}, {{15770798879535755522ull, 18195570611803943738ull, 5602522992407923390ull, 2790674377764513079ull}}, {{10490126562564918594ull, 13521091227900153865ull, 2391467722082516334ull, 3488342972205641349ull}}, {{17724344221633536147ull, 7677991998020416523ull, 7601020671030533322ull, 4360428715257051686ull}}, {{8771872129307266140ull, 9410431017190148231ull, 138951900966695422ull, 2725267947035657304ull}}, {{6353154143206694771ull, 2539666734632909481ull, 173689876208369278ull, 3406584933794571630ull}}, {{12553128697435756367ull, 12397955455145912659ull, 9440484382115237405ull, 4258231167243214537ull}}, {{5539862426683653778ull, 10054565168679889364ull, 17429517784890493138ull, 2661394479527009085ull}}, {{6924828033354567222ull, 3344834423995085897ull, 7951839175830952711ull, 3326743099408761357ull}}, {{13267721060120596932ull, 18016101085276021083ull, 14551484988216078792ull, 4158428874260951696ull}}, {{5986482653361679130ull, 11260063178297513177ull, 9094678117635049245ull, 2599018046413094810ull}}, {{12094789335129486817ull, 240020917589727759ull, 2144975610189035749ull, 3248772558016368513ull}}, {{10506800650484470617ull, 4911712165414547603ull, 7292905531163682590ull, 4060965697520460641ull}}, {{4260907397339100184ull, 16904878158666255964ull, 16087281003045771378ull, 2538103560950287900ull}}, {{5326134246673875230ull, 11907725661478044147ull, 1662357180097662607ull, 3172629451187859876ull}}, {{2045981789914956133ull, 10272971058420167280ull, 2077946475122078259ull, 3965786813984824845ull}}, {{1278738618696847583ull, 4114763902298910598ull, 3604559556164992864ull, 2478616758740515528ull}}, {{10821795310225835287ull, 5143454877873638247ull, 4505699445206241080ull, 3098270948425644410ull}}, {{8915558119354906205ull, 6429318597342047809ull, 14855496343362577158ull, 3872838685532055512ull}}, {{17101438870665286138ull, 17853382178620943592ull, 9284685214601610723ull, 2420524178457534695ull}}, {{2930054514622056056ull, 17705041704848791587ull, 6994170499824625500ull, 3025655223071918369ull}}, {{17497626198559733782ull, 3684558057351437867ull, 13354399143208169780ull, 3782069028839897961ull}}, {{8630173364886139662ull, 11526220822699424475ull, 1428970436864024256ull, 2363793143024936226ull}}, {{6176030687680286674ull, 14407776028374280594ull, 11009585082934806128ull, 2954741428781170282ull}}, {{16943410396455134150ull, 18009720035467850742ull, 4538609316813731852ull, 3693426785976462853ull}}, {{5977945479357070940ull, 2032702985312630906ull, 5142473832222276360ull, 2308391741235289283ull}}, {{16695803886051114483ull, 2540878731640788632ull, 1816406271850457546ull, 2885489676544111604ull}}, {{2423010783854341487ull, 12399470451405761599ull, 2270507839813071932ull, 3606862095680139505ull}}, {{16863821535100090571ull, 15499338064257201998ull, 7449820818193727819ull, 4508577619600174381ull}}, {{5928202441010168703ull, 7381243280947057297ull, 6961981020584773839ull, 2817861012250108988ull}}, {{12021939069690098783ull, 4614868082756433717ull, 8702476275730967299ull, 3522326265312636235ull}}, {{1192365781830459766ull, 1156899085018154243ull, 6266409326236321220ull, 4402907831640795294ull}}, {{16886129678139895018ull, 9946433964991122209ull, 17751563884179864474ull, 2751817394775497058ull}}, {{7272604042392705060ull, 3209670419384126954ull, 12966082818370054785ull, 3439771743469371323ull}}, {{18314127089845657133ull, 8623774042657546596ull, 11595917504535180577ull, 4299714679336714154ull}}, {{2222957394298759901ull, 16919073822729436383ull, 11859134458761875764ull, 2687321674585446346ull}}, {{16613754798155613588ull, 2702098204702243862ull, 5600546036597568898ull, 3359152093231807933ull}}, {{11543821460839741176ull, 12600994792732580636ull, 11612368564174349026ull, 4198940116539759916ull}}, {{16438260449879614043ull, 12487307763885250801ull, 16481102389463743949ull, 2624337572837349947ull}}, {{6712767507067353842ull, 1774076649574399790ull, 15989691968402292033ull, 3280421966046687434ull}}, {{17614331420688968111ull, 6829281830395387641ull, 10763742923648089233ull, 4100527457558359293ull}}, {{4091428110289523213ull, 15797516190065587036ull, 9033182336493749722ull, 2562829660973974558ull}}, {{5114285137861904017ull, 10523523200727207987ull, 2068105883762411345ull, 3203537076217468198ull}}, {{1781170403899992117ull, 17766090019336397888ull, 11808504391557789989ull, 4004421345271835247ull}}, {{1113231502437495073ull, 13409649271298942632ull, 14297844272364700599ull, 2502763340794897029ull}}, {{1391539378046868841ull, 12150375570696290386ull, 4037247285173712037ull, 3128454175993621287ull}}, {{10962796259413361859ull, 1352911408088199270ull, 434873088039752143ull, 3910567719992026609ull}}, {{2240061643705963258ull, 7763098657696206400ull, 11801010726093314849ull, 2444104824995016630ull}}, {{2800077054632454073ull, 14315559340547645904ull, 5527891370761867753ull, 3055131031243770788ull}}, {{3500096318290567591ull, 4059391120402393668ull, 6909864213452334692ull, 3818913789054713485ull}}, {{11410932235786380552ull, 11760491487106271850ull, 6624508142621403134ull, 2386821118159195928ull}}, {{5040293257878199882ull, 5477242322028064005ull, 8280635178276753918ull, 2983526397698994910ull}}, {{10912052590775137757ull, 16069924939389855814ull, 1127421935991166589ull, 3729407997123743638ull}}, {{2208346850807073194ull, 12349546096332353836ull, 14539696765276642830ull, 2330879998202339773ull}}, {{2760433563508841493ull, 6213560583560666487ull, 4339562901313639826ull, 2913599997752924717ull}}, {{17285600009668215578ull, 16990322766305608916ull, 10036139645069437686ull, 3641999997191155896ull}}, {{3160255938375717856ull, 12014531421027235338ull, 12545174556336797108ull, 4552499996488944870ull}}, {{6586845979912211564ull, 16732454174996797894ull, 3229048079283110288ull, 2845312497805590544ull}}, {{17456929511745040263ull, 2468823645036445751ull, 4036310099103887861ull, 3556640622256988180ull}}, {{17209475871253912425ull, 7697715574722945093ull, 5045387623879859826ull, 4445800777821235225ull}}, {{13061765428747389218ull, 9422758252629228587ull, 14682582310993382151ull, 2778625486138272015ull}}, {{11715520767506848618ull, 7166761797359147830ull, 13741541870314339785ull, 3473281857672840019ull}}, {{5421028922528784964ull, 13570138265126322692ull, 12565241319465536827ull, 4341602322091050024ull}}, {{12611515113435266411ull, 6175493406490257730ull, 7853275824665960517ull, 2713501451306906265ull}}, {{6541021854939307205ull, 12331052776540210067ull, 14428280799259838550ull, 3391876814133632831ull}}, {{3564591300246746103ull, 6190443933820486776ull, 13423664980647410284ull, 4239846017667041039ull}}, {{2227869562654216314ull, 13092399495492580043ull, 15307319640545713283ull, 2649903761041900649ull}}, {{16619895008599934105ull, 11753813350938337149ull, 5299091495399977892ull, 3312379701302375812ull}}, {{6939810705467753919ull, 14692266688672921437ull, 6623864369249972365ull, 4140474626627969765ull}}, {{6643224700131040152ull, 11488509689634269850ull, 6445758239994926680ull, 2587796641642481103ull}}, {{17527402912018575997ull, 14360637112042837312ull, 3445511781566270446ull, 3234745802053101379ull}}, {{3462509566313668380ull, 8727424353198770833ull, 18141947782240001770ull, 4043432252566376723ull}}, {{13693283525014512498ull, 10066326239176619674ull, 9032874354686307154ull, 2527145157853985452ull}}, {{7893232369413364814ull, 3359535762115998785ull, 11291092943357883943ull, 3158931447317481815ull}}, {{14478226480194093922ull, 18034477757927162193ull, 9502180160769967024ull, 3948664309146852269ull}}, {{2131362522480226845ull, 11271548598704476371ull, 8244705609694923342ull, 2467915193216782668ull}}, {{16499261208382447269ull, 4866063711525819655ull, 10305882012118654178ull, 3084893991520978335ull}}, {{16012390492050671182ull, 15305951676262050377ull, 8270666496720929818ull, 3856117489401222919ull}}, {{3090215029890587633ull, 14177905816091169390ull, 12086695588091662992ull, 2410073430875764324ull}}, {{13086140824218010349ull, 17722382270113961737ull, 15108369485114578740ull, 3012591788594705405ull}}, {{2522617974990349224ull, 3706233763932900556ull, 5050403801111059714ull, 3765739735743381757ull}}, {{10800008271223744073ull, 6928082120885450751ull, 5462345384908106273ull, 2353587334839613598ull}}, {{8888324320602292187ull, 13271788669534201343ull, 16051303767989908649ull, 2941984168549516997ull}}, {{6498719382325477330ull, 2754677781635587967ull, 6229071654705222100ull, 3677480210686896247ull}}, {{3511713209479458758ull, 3443347227044484959ull, 3174653549954139721ull, 4596850263358620309ull}}, {{9112349783565743580ull, 13681307062971272859ull, 4290001477935031277ull, 2873031414599137693ull}}, {{6778751211029791571ull, 3266575773431927362ull, 9974187865846177001ull, 3591289268248922116ull}}, {{17696811050642015271ull, 8694905735217297106ull, 12467734832307721251ull, 4489111585311152645ull}}, {{15672192925078647449ull, 3128473075297116739ull, 10098177279406019734ull, 2805694740819470403ull}}, {{14978555137920921407ull, 13133963380976171732ull, 8011035580830136763ull, 3507118426024338004ull}}, {{276449848691600143ull, 11805768207792826762ull, 10013794476037670954ull, 4383898032530422505ull}}, {{4784467173859637993ull, 11990291148297904630ull, 17787836593592014106ull, 2739936270331514065ull}}, {{15203956004179323299ull, 5764491898517604979ull, 8399737686707853921ull, 3424920337914392582ull}}, {{14393258986796766220ull, 11817300891574394128ull, 1276300071530041593ull, 4281150422392990728ull}}, {{8995786866747978888ull, 468284029592914474ull, 797687544706275996ull, 2675719013995619205ull}}, {{2021361546580197802ull, 585355036991143093ull, 5608795449310232899ull, 3344648767494524006ull}}, {{7138387951652635156ull, 14566751851521092578ull, 16234366348492566931ull, 4180810959368155007ull}}, {{9073178488210284877ull, 6798376897986988909ull, 17064007995448936188ull, 2613006849605096879ull}}, {{15953159128690244000ull, 8497971122483736136ull, 16718323975883782331ull, 3266258562006371099ull}}, {{1494704837153253384ull, 6010777884677282267ull, 16286218951427340010ull, 4082823202507963874ull}}, {{17075091587716641029ull, 8368422196350689320ull, 14790572863069475410ull, 2551764501567477421ull}}, {{2897120410936249670ull, 1237155708583585843ull, 4653158023554680551ull, 3189705626959346777ull}}, {{17456458568952475799ull, 15381502691011646015ull, 10428133547870738592ull, 3987132033699183471ull}}, {{17827815633236379231ull, 9613439181882278759ull, 13435112495060293476ull, 2491957521061989669ull}}, {{17673083523118086134ull, 12016798977352848449ull, 2958832563543203133ull, 3114946901327487087ull}}, {{8256296348615443956ull, 1185940666408896850ull, 17533598759711167629ull, 3893683626659358858ull}}, {{9771871236312040377ull, 3047055925719254483ull, 15570185243246867672ull, 2433552266662099286ull}}, {{7603153026962662567ull, 3808819907149068104ull, 10239359517203808782ull, 3041940333327624108ull}}, {{9503941283703328208ull, 13984396920791110938ull, 12799199396504760977ull, 3802425416659530135ull}}, {{10551649320741968034ull, 1822719047853362480ull, 14917028650456557467ull, 2376515885412206334ull}}, {{13189561650927460043ull, 16113456865098866812ull, 9422913776215921025ull, 2970644856765257918ull}}, {{16486952063659325053ull, 6306763026091419803ull, 2555270183415125474ull, 3713306070956572398ull}}, {{7998502030573384206ull, 8553412909734525281ull, 15432101919916617133ull, 2320816294347857748ull}}, {{14609813556644118162ull, 15303452155595544505ull, 843383326186219800ull, 2901020367934822186ull}}, {{4427208890522983990ull, 682571120784879016ull, 10277601194587550559ull, 3626275459918527732ull}}, {{5534011113153729988ull, 14688271956263262482ull, 12847001493234438198ull, 4532844324898159665ull}}, {{8070442964148469147ull, 4568483954237151147ull, 1111846905630442018ull, 2833027703061349791ull}}, {{5476367686758198529ull, 14933976979651214742ull, 15224866687320216234ull, 3541284628826687238ull}}, {{16068831645302523969ull, 9444099187709242619ull, 9807711322295494485ull, 4426605786033359048ull}}, {{7737176769100383529ull, 8208405001531970589ull, 6129819576434684053ull, 2766628616270849405ull}}, {{14283156979802867315ull, 14872192270342351140ull, 12273960488970742970ull, 3458285770338561756ull}}, {{17853946224753584144ull, 9366868301073163117ull, 15342450611213428713ull, 4322857212923202195ull}}, {{13464559399684684042ull, 17383507734239196708ull, 7283188622794698993ull, 2701785758077001372ull}}, {{16830699249605855052ull, 7894326612516832173ull, 9103985778493373742ull, 3377232197596251715ull}}, {{7203316006725155103ull, 644536228791264409ull, 6768296204689329274ull, 4221540246995314644ull}}, {{16031287550271691700ull, 5014521161421928159ull, 13453557164785606604ull, 2638462654372071652ull}}, {{15427423419412226721ull, 6268151451777410199ull, 16816946455982008255ull, 3298078317965089565ull}}, {{14672593255837895497ull, 3223503296294374845ull, 7186125014695346607ull, 4122597897456361957ull}}, {{11476213794112378638ull, 8932218587825066134ull, 6797171143398285581ull, 2576623685910226223ull}}, {{5121895205785697489ull, 15776959253208720572ull, 3884777910820469072ull, 3220779607387782779ull}}, {{6402369007232121861ull, 1274454992801349099ull, 244286370098198437ull, 4025974509234728474ull}}, {{1695637620306382211ull, 3102377379714537139ull, 4764364999738761927ull, 2516234068271705296ull}}, {{15954605080665141476ull, 17713029779925335135ull, 5955456249673452408ull, 3145292585339631620ull}}, {{15331570332404038941ull, 3694543151197117303ull, 7444320312091815511ull, 3931615731674539525ull}}, {{16499760485393606194ull, 9226618497139280170ull, 6958543204271078646ull, 2457259832296587203ull}}, {{11401328569887231935ull, 2309901084569324405ull, 4086492986911460404ull, 3071574790370734004ull}}, {{416602657076876206ull, 2887376355711655507ull, 5108116233639325505ull, 3839468487963417505ull}}, {{16401277725168905293ull, 13333825268388254451ull, 14721787692093048200ull, 2399667804977135940ull}}, {{15889911138033743712ull, 16667281585485318064ull, 18402234615116310250ull, 2999584756221419925ull}}, {{1415644848832628024ull, 11610729945001871773ull, 9167735213613224101ull, 3749480945276774907ull}}, {{3190621039734086467ull, 9562549224839863810ull, 3423991499294571111ull, 2343425590797984317ull}}, {{13211648336522383892ull, 7341500512622441858ull, 8891675392545601793ull, 2929281988497480396ull}}, {{7291188383798204057ull, 13788561659205440227ull, 11114594240682002241ull, 3661602485621850495ull}}, {{4502299461320367167ull, 3400644018724636572ull, 9281556782425114898ull, 4577003107027313119ull}}, {{12037309200180005287ull, 6737088530130285761ull, 12718502016656778667ull, 2860626941892070699ull}}, {{1211578444942842897ull, 3809674644235469298ull, 11286441502393585430ull, 3575783677365088374ull}}, {{10737845093033329429ull, 13985465342149112430ull, 4884679841137205979ull, 4469729596706360468ull}}, {{2099467164718442990ull, 6435072829629501317ull, 12276296937565529545ull, 2793580997941475292ull}}, {{7236019974325441641ull, 12655527055464264550ull, 15345371171956911931ull, 3491976247426844115ull}}, {{18268397004761577859ull, 11207722800902942783ull, 14570027946518752010ull, 4364970309283555144ull}}, {{18335277155617068018ull, 11616512768991727143ull, 9106267466574220006ull, 2728106443302221965ull}}, {{18307410426093947118ull, 5297268924384883121ull, 15994520351645162912ull, 3410133054127777456ull}}, {{9049204977335270186ull, 6621586155481103902ull, 1546406365846902024ull, 4262666317659721821ull}}, {{1044067092407155962ull, 4138491347175689939ull, 3272346987868007717ull, 2664166448537326138ull}}, {{15140141920791108665ull, 9784800202397000327ull, 13313805771689785454ull, 3330208060671657672ull}}, {{14313491382561497927ull, 3007628216141474601ull, 16642257214612231818ull, 4162760075839572090ull}}, {{2028403086459854348ull, 6491453653515809530ull, 15013096777560032790ull, 2601725047399732556ull}}, {{11758875894929593743ull, 17337689103749537720ull, 319626898240489371ull, 3252156309249665696ull}}, {{14698594868661992179ull, 17060425361259534246ull, 399533622800611714ull, 4065195386562082120ull}}, {{4574935774486357208ull, 15274451869214596808ull, 249708514250382321ull, 2540747116601301325ull}}, {{5718669718107946510ull, 5258006781236082298ull, 4923821661240365806ull, 3175933895751626656ull}}, {{16371709184489708946ull, 15795880513399878680ull, 6154777076550457257ull, 3969917369689533320ull}}, {{10232318240306068091ull, 2954896293233842319ull, 3846735672844035786ull, 2481198356055958325ull}}, {{8178711781955197210ull, 12916992403397078707ull, 9420105609482432636ull, 3101497945069947906ull}}, {{5611703709016608608ull, 16146240504246348384ull, 2551759974998264987ull, 3876872431337434883ull}}, {{3507314818135380380ull, 7785557305940273788ull, 17735751048869773281ull, 2423045269585896801ull}}, {{4384143522669225475ull, 14343632650852730139ull, 8334630755805052889ull, 3028806586982371002ull}}, {{868493384909143940ull, 4094482758283748962ull, 1194916407901540304ull, 3786008233727963753ull}}, {{5154494383995602867ull, 2559051723927343101ull, 12276037801006932450ull, 2366255146079977345ull}}, {{11054803998421891487ull, 12422186691763954684ull, 1509989195976501850ull, 2957818932599971682ull}}, {{13818504998027364359ull, 6304361327850167547ull, 11110858531825403121ull, 3697273665749964602ull}}, {{6330722614553408772ull, 15469440875974824477ull, 11555972600818264854ull, 2310796041093727876ull}}, {{12525089286619148869ull, 10113429058113754788ull, 14444965751022831068ull, 2888495051367159845ull}}, {{15656361608273936087ull, 12641786322642193485ull, 4221149133496375123ull, 3610618814208949807ull}}, {{5735393955060256396ull, 11190546884875353953ull, 664750398443081000ull, 4513273517761187259ull}}, {{15113836267981130008ull, 6994091803047096220ull, 16556370063522783289ull, 2820795948600742036ull}}, {{445551261266860894ull, 13354300772236258180ull, 2248718505693927495ull, 3525994935750927546ull}}, {{556939076583576117ull, 12081189946867934821ull, 12034270168972185177ull, 4407493669688659432ull}}, {{2653929932078429025ull, 633214689151377407ull, 7521418855607615736ull, 2754683543555412145ull}}, {{17152470470380199993ull, 791518361439221758ull, 14013459587936907574ull, 3443354429444265181ull}}, {{12217216051120474184ull, 10212769988653803006ull, 3681766429638970755ull, 4304193036805331477ull}}, {{3024074013522908461ull, 4077138233694932927ull, 4606947027738050674ull, 2690120648003332173ull}}, {{17615150572185799288ull, 14319794828973441966ull, 10370369803099951246ull, 3362650810004165216ull}}, {{12795566178377473302ull, 8676371499362026650ull, 12962962253874939058ull, 4203313512505206520ull}}, {{12608914879913308718ull, 10034418205528654560ull, 8101851408671836911ull, 2627070945315754075ull}}, {{15761143599891635897ull, 7931336738483430296ull, 5515628242412408235ull, 3283838681644692594ull}}, {{1254685426154993256ull, 5302484904676899967ull, 16117907339870286102ull, 4104798352055865742ull}}, {{7701707418987952641ull, 17149111120705226191ull, 5462006068991540909ull, 2565498970034916089ull}}, {{5015448255307552897ull, 7601330845599369027ull, 11439193604666814041ull, 3206873712543645111ull}}, {{1657624300707053217ull, 14113349575426599188ull, 9687305987406129647ull, 4008592140679556389ull}}, {{10259387224796684069ull, 15738372512282706348ull, 8360409251342524981ull, 2505370087924722743ull}}, {{12824234030995855086ull, 5837907585071219223ull, 5838825545750768323ull, 3131712609905903429ull}}, {{11418606520317430953ull, 2685698462911636125ull, 11910217950615848308ull, 3914640762382379286ull}}, {{9442472084412088298ull, 10901933576174548386ull, 2832200200707517288ull, 2446650476488987054ull}}, {{2579718068660334564ull, 13627416970218185483ull, 12763622287739172418ull, 3058313095611233817ull}}, {{17059705641107581917ull, 7810899175917956045ull, 2119469804391801811ull, 3822891369514042272ull}}, {{12968159034905932651ull, 2575968975735028576ull, 1324668627744876132ull, 2389307105946276420ull}}, {{16210198793632415813ull, 3219961219668785720ull, 1655835784681095165ull, 2986633882432845525ull}}, {{1816004418330968150ull, 8636637543013370055ull, 6681480749278756860ull, 3733292353041056906ull}}, {{8052531789097936950ull, 14621270501238132092ull, 8787611486726610941ull, 2333307720650660566ull}}, {{10065664736372421187ull, 4441530071265501403ull, 1761142321553487869ull, 2916634650813325708ull}}, {{7970394902038138580ull, 10163598607509264658ull, 2201427901941859836ull, 3645793313516657135ull}}, {{739621590692897417ull, 12704498259386580823ull, 16586842932709488507ull, 4557241641895821418ull}}, {{7379792521824142742ull, 5634468402902919062ull, 14978462851370818221ull, 2848276026184888386ull}}, {{1368615425402619ull, 11654771522056036732ull, 9499706527358746968ull, 3560345032731110483ull}}, {{1710769281753274ull, 14568464402570045915ull, 7262947140771045806ull, 4450431290913888104ull}}, {{16141970295296953460ull, 4493604233178890792ull, 4539341962981903629ull, 2781519556821180065ull}}, {{1730718795411640209ull, 10228691309901001395ull, 10285863472154767440ull, 3476899446026475081ull}}, {{15998456549546713974ull, 12785864137376251743ull, 17469015358620847204ull, 4346124307533093851ull}}, {{16916564371107778090ull, 17214537122714933147ull, 8612291589924335550ull, 2716327692208183657ull}}, {{16534019445457334708ull, 12294799366538890626ull, 15377050505832807342ull, 3395409615260229571ull}}, {{11444152269966892577ull, 6145127171318837475ull, 14609627113863621274ull, 4244262019075286964ull}}, {{4846752159515613909ull, 8452390500501661326ull, 18354388983019539104ull, 2652663761922054352ull}}, {{15281812236249293194ull, 10565488125627076657ull, 4496242155064872264ull, 3315829702402567941ull}}, {{5267207240029452780ull, 13206860157033845822ull, 10231988712258478234ull, 4144787128003209926ull}}, {{17127062580300571700ull, 12865973616573541542ull, 1783306926734160992ull, 2590491955002006204ull}}, {{12185456188520938817ull, 16082467020716926928ull, 2229133658417701240ull, 3238114943752507755ull}}, {{15231820235651173521ull, 1656339702186607044ull, 16621475128304290263ull, 4047643679690634693ull}}, {{296515610427207643ull, 7952741341507711259ull, 12694264964403875366ull, 2529777299806646683ull}}, {{14205702568316173265ull, 717554640029863265ull, 11256145187077456304ull, 3162221624758308354ull}}, {{3922070155113052869ull, 896943300037329082ull, 4846809446992044572ull, 3952777030947885443ull}}, {{7062979865373045947ull, 9783961599378106484ull, 723412895156333905ull, 2470485644342428402ull}}, {{8828724831716307434ull, 16841638017650021009ull, 10127638155800193189ull, 3088107055428035502ull}}, {{15647592058072772197ull, 7216989466780362549ull, 3436175657895465679ull, 3860133819285044378ull}}, {{12085588045509176575ull, 11428147444378808449ull, 6759295804612053953ull, 2412583637053152736ull}}, {{1271927001604307007ull, 450126250191346850ull, 8449119755765067442ull, 3015729546316440920ull}}, {{10813280788860159566ull, 9786029849593959370ull, 10561399694706334302ull, 3769661932895551150ull}}, {{11369986511464987633ull, 1504582637568836702ull, 1989188790764071035ull, 2356038708059719469ull}}, {{4989111102476458733ull, 15715786352243209590ull, 7098172006882476697ull, 2945048385074649336ull}}, {{15459760914950349224ull, 5809674885021848275ull, 8872715008603095872ull, 3681310481343311670ull}}, {{14713015125260548626ull, 7262093606277310344ull, 1867521723899094032ull, 4601638101679139588ull}}, {{9195634453287842892ull, 4538808503923318965ull, 10390573114291709578ull, 2876023813549462242ull}}, {{16106229085037191518ull, 14896882666758924514ull, 3764844356009861164ull, 3595029766936827803ull}}, {{10909414319441713590ull, 174359259739104027ull, 94369426584938552ull, 4493787208671034754ull}}, {{4512540940437377042ull, 108974537336940017ull, 4670666910042974499ull, 2808617005419396721ull}}, {{10252362193974109206ull, 13971276226953338733ull, 10450019655981106027ull, 3510771256774245901ull}}, {{17427138760895024412ull, 12852409265264285512ull, 17674210588403770438ull, 4388464070967807376ull}}, {{10891961725559390258ull, 3421069772362790541ull, 11046381617752356524ull, 2742790044354879610ull}}, {{18226638175376625726ull, 4276337215453488176ull, 4584604985335669847ull, 3428487555443599513ull}}, {{4336553645511230541ull, 733735500889472317ull, 10342442250096975213ull, 4285609444304499391ull}}, {{5016189037658213040ull, 2764427697269614150ull, 13381555433951691364ull, 2678505902690312119ull}}, {{15493608333927542108ull, 3455534621587017687ull, 12115258274012226301ull, 3348132378362890149ull}}, {{14755324398982039731ull, 8931104295411160013ull, 1309014787233119164ull, 4185165472953612687ull}}, {{11527920758577468784ull, 14805312221486750816ull, 7735663269661781333ull, 2615728420596007929ull}}, {{14409900948221835980ull, 4671582221576274808ull, 14281265105504614571ull, 3269660525745009911ull}}, {{18012376185277294975ull, 1227791758542955606ull, 13239895363453380310ull, 4087075657181262389ull}}, {{6646049097370921456ull, 14602427904371510966ull, 10580777611372056645ull, 2554422285738288993ull}}, {{17530933408568427627ull, 4417976825182224995ull, 17837658032642458711ull, 3193027857172861241ull}}, {{17301980742283146630ull, 910785013050393340ull, 8462014485520909677ull, 3991284821466076552ull}}, {{1590365927072190836ull, 2875083642370189790ull, 5288759053450568548ull, 2494553013416297845ull}}, {{11211329445695014353ull, 3593854552962737237ull, 11222634835240598589ull, 3118191266770372306ull}}, {{179103751836604229ull, 9104004209630809451ull, 4804921507195972428ull, 3897739083462965383ull}}, {{16252840909393735307ull, 14913374667874031714ull, 9920604969638564623ull, 2436086927164353364ull}}, {{11092679099887393326ull, 14030032316415151739ull, 12400756212048205779ull, 3045108658955441705ull}}, {{9254162856431853753ull, 12925854377091551770ull, 1665887209778093512ull, 3806385823694302132ull}}, {{10395537803697296500ull, 8078658985682219856ull, 10264551542966084253ull, 2378991139808938832ull}}, {{12994422254621620625ull, 14710009750530162724ull, 12830689428707605316ull, 2973738924761173540ull}}, {{16243027818277025781ull, 18387512188162703405ull, 16038361785884506645ull, 3717173655951466925ull}}, {{12457735395636835065ull, 13798038126815383580ull, 12329819125391510605ull, 2323233534969666828ull}}, {{15572169244546043832ull, 3412489603237065763ull, 15412273906739388257ull, 2904041918712083535ull}}, {{14853525537255166885ull, 8877298022473720108ull, 14653656364996847417ull, 3630052398390104419ull}}, {{120162847859406991ull, 15708308546519538040ull, 13705384437818671367ull, 4537565497987630524ull}}, {{75101779912129369ull, 16735221869215793131ull, 17789237310491445412ull, 2835978436242269077ull}}, {{13928935280172325423ull, 2472283262810189797ull, 8401488582832143054ull, 3544973045302836347ull}}, {{3576111044933243067ull, 12313726115367513055ull, 5890174710112790913ull, 4431216306628545434ull}}, {{9152598430724358773ull, 778549794463613803ull, 8293045212247882225ull, 2769510191642840896ull}}, {{6829062019978060562ull, 5584873261506905158ull, 10366306515309852781ull, 3461887739553551120ull}}, {{17759699561827351511ull, 11592777595311019351ull, 12957883144137315976ull, 4327359674441938900ull}}, {{18017341253783176550ull, 7245485997069387094ull, 17322049001940598293ull, 2704599796526211812ull}}, {{13298304530374194880ull, 13668543514764121772ull, 3205817178716196250ull, 3380749745657764766ull}}, {{16622880662967743600ull, 7862307356600376407ull, 13230643510250021121ull, 4225937182072205957ull}}, {{17306829441995921606ull, 16443157143943705014ull, 10574995203119957152ull, 2641210738795128723ull}}, {{12410164765640126199ull, 2107202356220079652ull, 8607057985472558537ull, 3301513423493910904ull}}, {{15512705957050157749ull, 7245688963702487469ull, 10758822481840698171ull, 4126891779367388630ull}}, {{12001284232370042545ull, 2222712593100360716ull, 2112578032723048453ull, 2579307362104617894ull}}, {{15001605290462553182ull, 7390076759802838799ull, 11864094577758586374ull, 3224134202630772367ull}}, {{14140320594650803573ull, 14223912898772691ull, 10218432203770845064ull, 4030167753288465459ull}}, {{6531857362443058281ull, 8889945561732932ull, 4080677118143084213ull, 2518854845805290912ull}}, {{8164821703053822851ull, 4622798450379554069ull, 5100846397678855266ull, 3148568557256613640ull}}, {{14817713147244666468ull, 15001870099829218394ull, 6376057997098569082ull, 3935710696570767050ull}}, {{13872756735455304447ull, 13987854830820649400ull, 8596722266613993580ull, 2459819185356729406ull}}, {{17340945919319130558ull, 17484818538525811750ull, 1522530796412716167ull, 3074773981695911758ull}}, {{12452810362294137390ull, 17244337154729876784ull, 11126535532370671017ull, 3843467477119889697ull}}, {{7783006476433835869ull, 3860181694065091134ull, 36555680090587530ull, 2402167173199931061ull}}, {{505386058687519028ull, 14048599154436139726ull, 4657380618540622316ull, 3002708966499913826ull}}, {{9855104610214174593ull, 17560748943045174657ull, 15045097810030553703ull, 3753386208124892282ull}}, {{17688655427452328881ull, 17892997117044316016ull, 14014872149696483968ull, 2345866380078057676ull}}, {{3664075210605859485ull, 3919502322595843405ull, 17518590187120604961ull, 2932332975097572095ull}}, {{9191780031684712260ull, 9511063921672192160ull, 17286551715473368297ull, 3665416218871965119ull}}, {{11489725039605890325ull, 16500515920517628104ull, 16996503625914322467ull, 4581770273589956399ull}}, {{7181078149753681453ull, 8006979441109823613ull, 17540343793837533398ull, 2863606420993722749ull}}, {{13588033705619489720ull, 785352264532503708ull, 8090371687014753036ull, 3579508026242153437ull}}, {{16985042132024362150ull, 981690330665629635ull, 14724650627195829199ull, 4474385032802691796ull}}, {{8309808323301532392ull, 7531085484307100378ull, 18426278678852169057ull, 2796490645501682372ull}}, {{1163888367272139682ull, 14025542873811263377ull, 4586104274855659705ull, 3495613306877102966ull}}, {{6066546477517562506ull, 3696870536981915509ull, 14956002380424350440ull, 4369516633596378707ull}}, {{6097434557662170519ull, 2310544085613697193ull, 7041658478551525073ull, 2730947895997736692ull}}, {{12233479215505101052ull, 7499866125444509395ull, 8802073098189406341ull, 3413684869997170865ull}}, {{10680163000953988411ull, 13986518675233024648ull, 15614277391164145830ull, 4267106087496463581ull}}, {{6675101875596242757ull, 4129888153593252501ull, 12064766378691285096ull, 2666941304685289738ull}}, {{12955563362922691350ull, 5162360191991565626ull, 5857585936509330562ull, 3333676630856612173ull}}, {{6971082166798588380ull, 15676322276844232841ull, 11933668439064051106ull, 4167095788570765216ull}}, {{15886141400317587497ull, 14409387441455033429ull, 7458542774415031941ull, 2604434867856728260ull}}, {{6022618695114820660ull, 4176676246536628075ull, 9323178468018789927ull, 3255543584820910325ull}}, {{2916587350466137921ull, 609159289743397190ull, 16265659103450875313ull, 4069429481026137906ull}}, {{15657925149323499913ull, 11909939602158093003ull, 14777722958084184974ull, 2543393425641336191ull}}, {{14960720418226986987ull, 5664052465842840446ull, 13860467679177843314ull, 3179241782051670239ull}}, {{9477528485928957925ull, 16303437619158326366ull, 12713898580544916238ull, 3974052227564587799ull}}, {{1311769285278210799ull, 5577962493546566075ull, 14863715640481654505ull, 2483782642227867374ull}}, {{15474769661879927211ull, 11584139135360595497ull, 9356272513747292323ull, 3104728302784834218ull}}, {{5508404022067745302ull, 9868487900773356468ull, 2471968605329339596ull, 3880910378481042773ull}}, {{12666124550647116622ull, 15391176974838123600ull, 3850823387544531199ull, 2425568986550651733ull}}, {{15832655688308895777ull, 14627285200120266596ull, 9425215252858051903ull, 3031961233188314666ull}}, {{1344075536676568105ull, 13672420481722945342ull, 2558147029217789071ull, 3789951541485393333ull}}, {{14675105265705018778ull, 15462791828717922694ull, 3904684902474812121ull, 2368719713428370833ull}}, {{9120509545276497664ull, 5493431730615239656ull, 9492542146520903056ull, 2960899641785463541ull}}, {{11400636931595622080ull, 6866789663269049570ull, 16477363701578516724ull, 3701124552231829426ull}}, {{11737084100674651704ull, 13515115576397931789ull, 14910038331913960856ull, 2313202845144893391ull}}, {{836297070561150918ull, 16893894470497414737ull, 14025861896465063166ull, 2891503556431116739ull}}, {{5657057356628826552ull, 11893996051266992613ull, 12920641352153941054ull, 3614379445538895924ull}}, {{11683007714213421094ull, 5644123027228964958ull, 16150801690192426318ull, 4517974306923619905ull}}, {{2690193802956000280ull, 17362634947300266811ull, 3176722028729184592ull, 2823733941827262441ull}}, {{17197800308977164061ull, 3256549610415781897ull, 8582588554338868645ull, 3529667427284078051ull}}, {{7662192330939291365ull, 8682373031447115276ull, 6116549674496197902ull, 4412084284105097564ull}}, {{14012242243691832911ull, 814797126227059143ull, 13046215583414899497ull, 2757552677565685977ull}}, {{12903616786187403235ull, 5630182426211211833ull, 2472711423986460659ull, 3446940846957107472ull}}, {{2294462927452090331ull, 2426042014336626888ull, 3090889279983075824ull, 4308676058696384340ull}}, {{1434039329657556457ull, 1516276258960391805ull, 11155177836844198198ull, 2692922536685240212ull}}, {{6404235180499333475ull, 11118717360555265564ull, 13943972296055247747ull, 3366153170856550265ull}}, {{8005293975624166844ull, 9286710682266694051ull, 3594907314786895972ull, 4207691463570687832ull}}, {{2697465725551410326ull, 15027566213271459590ull, 2246817071741809982ull, 2629807164731679895ull}}, {{12595204193794038715ull, 9561085729734548679ull, 16643579394959426190ull, 3287258955914599868ull}}, {{11132319223815160490ull, 2727985125313410041ull, 2357730169989731122ull, 4109073694893249836ull}}, {{40170487243393450ull, 6316676721748269180ull, 10696953393098357759ull, 2568171059308281147ull}}, {{50213109054241813ull, 3284159883757948571ull, 8759505722945559295ull, 3210213824135351434ull}}, {{13897824441599965978ull, 17940257909979599425ull, 1726010116827173310ull, 4012767280169189293ull}}, {{1768611248358896880ull, 6600975175309861737ull, 3384599332230677271ull, 2507979550105743308ull}}, {{6822450078876009004ull, 3639532950709939267ull, 4230749165288346589ull, 3134974437632179135ull}}, {{3916376580167623351ull, 9161102206814811988ull, 676750438183045332ull, 3918718047040223919ull}}, {{11671107399459540403ull, 14949060916114033300ull, 7340498051505485188ull, 2449198779400139949ull}}, {{14588884249324425503ull, 239582071432990009ull, 13787308582809244390ull, 3061498474250174936ull}}, {{4401047256373368167ull, 9522849626146013320ull, 17234135728511555487ull, 3826873092812718670ull}}, {{2750654535233355105ull, 12869310043982340181ull, 6159648811892334275ull, 2391795683007949169ull}}, {{8050004187469081785ull, 11474951536550537322ull, 12311247033292805748ull, 2989744603759936461ull}}, {{839133197481576423ull, 14343689420688171653ull, 1554000736333843473ull, 3737180754699920577ull}}, {{2830301257639679216ull, 2047276860289025427ull, 12500465506277121931ull, 2335737971687450360ull}}, {{17372934627331762732ull, 16394154130643445495ull, 15625581882846402413ull, 2919672464609312950ull}}, {{17104482265737315511ull, 6657634608022143157ull, 10308605316703227209ull, 3649590580761641188ull}}, {{7545544776889480677ull, 12933729278455066851ull, 12885756645879034011ull, 4561988225952051485ull}}, {{2410122476342231471ull, 5777737789820722830ull, 10359440912888090209ull, 2851242641220032178ull}}, {{12236025132282565147ull, 11833858255703291441ull, 3725929104255336953ull, 3564053301525040223ull}}, {{1459973360071042721ull, 957264764346950590ull, 45725361891783288ull, 4455066626906300279ull}}, {{14747541405326565413ull, 598290477716844118ull, 6946107378823446411ull, 2784416641816437674ull}}, {{9211054719803430958ull, 14582921152428218860ull, 17906006260384083821ull, 3480520802270547092ull}}, {{11513818399754288698ull, 4393593385253109863ull, 3935763751770553161ull, 4350651002838183866ull}}, {{14113665527487512292ull, 14275210911851663424ull, 7071538363283983629ull, 2719156876773864916ull}}, {{17642081909359390365ull, 4008955584532415568ull, 8839422954104979537ull, 3398946095967331145ull}}, {{3605858312989686340ull, 9622880499092907365ull, 15660964711058612325ull, 4248682619959163931ull}}, {{4559504454832247915ull, 8320143321146761055ull, 7482259935197938751ull, 2655426637474477457ull}}, {{1087694550112921990ull, 5788493133006063415ull, 13964510937424811343ull, 3319283296843096821ull}}, {{15194676242923316199ull, 2623930397830191364ull, 3620580616498850467ull, 4149104121053871027ull}}, {{273300614972296816ull, 17780857563139727267ull, 18403763949807639205ull, 2593190075658669391ull}}, {{14176683823997534732ull, 8391013898642495371ull, 18393018918832161103ull, 3241487594573336739ull}}, {{13109168761569530511ull, 5877081354875731310ull, 18379587630112813475ull, 4051859493216670924ull}}, {{3581544457553568666ull, 1367332837583638117ull, 2263870231965732614ull, 2532412183260419328ull}}, {{9088616590369348736ull, 10932538083834323454ull, 2829837789957165767ull, 3165515229075524160ull}}, {{2137398701106910112ull, 9053986586365516414ull, 3537297237446457209ull, 3956894036344405200ull}}, {{15170932243473982532ull, 17187956662546917518ull, 2210810773404035755ull, 2473058772715253250ull}}, {{9740293267487702357ull, 16873259809756258994ull, 11986885503609820502ull, 3091323465894066562ull}}, {{2951994547504852138ull, 11868202725340547935ull, 5760234842657499820ull, 3864154332367583203ull}}, {{8762525619831614443ull, 16640998740192618267ull, 1294303767447243435ull, 2415096457729739502ull}}, {{6341471006362130149ull, 16189562406813384930ull, 10841251746163830102ull, 3018870572162174377ull}}, {{17150210794807438494ull, 11013580971661955354ull, 18163250701132175532ull, 3773588215202717971ull}}, {{15330567765182036963ull, 16106860144143497904ull, 9046188678993915755ull, 2358492634501698732ull}}, {{716465632767994588ull, 15521889161751984477ull, 11307735848742394694ull, 2948115793127123415ull}}, {{5507268059387381139ull, 10178989415335204788ull, 9522983792500605464ull, 3685144741408904269ull}}, {{6884085074234226423ull, 12723736769169005985ull, 16515415759053144734ull, 4606430926761130336ull}}, {{15831768217464861275ull, 3340649462303240836ull, 10322134849408215459ull, 2879019329225706460ull}}, {{1342966198121524977ull, 18010869883161214758ull, 12902668561760269323ull, 3598774161532133075ull}}, {{10902079784506682029ull, 17901901335524130543ull, 11516649683772948750ull, 4498467701915166344ull}}, {{13731328892957758125ull, 6577002316275193685ull, 7197906052358092969ull, 2811542313696978965ull}}, {{3329103060915033944ull, 12832938913771380011ull, 13609068583875004115ull, 3514427892121223706ull}}, {{17996436881425956141ull, 11429487623786837109ull, 7787963692988979336ull, 4393034865151529633ull}}, {{13553616060104916541ull, 7143429764866773193ull, 16396692354186581845ull, 2745646790719706020ull}}, {{3106962019848981964ull, 13540973224510854396ull, 2049121369023675690ull, 3432058488399632526ull}}, {{3883702524811227454ull, 7702844493783792187ull, 11784773748134370421ull, 4290073110499540657ull}}, {{121471068793323207ull, 7120120817828564069ull, 447954564942899657ull, 2681295694062212911ull}}, {{4763524854419041913ull, 13511837040713092990ull, 14395001261460788283ull, 3351619617577766138ull}}, {{15177778104878578199ull, 12278110282463978333ull, 8770379539971209546ull, 4189524521972207673ull}}, {{11791954324762805326ull, 12285504944967374362ull, 17010702258550475726ull, 2618452826232629795ull}}, {{5516570869098730850ull, 6133509144354442145ull, 16651691804760706754ull, 3273066032790787244ull}}, {{11507399604800801466ull, 16890258467297828489ull, 2367870682241331826ull, 4091332540988484056ull}}, {{274595725359419061ull, 15168097560488530710ull, 1479919176400832391ull, 2557082838117802535ull}}, {{9566616693554049634ull, 14348435932183275483ull, 15684957025783204201ull, 3196353547647253168ull}}, {{7346584848515174138ull, 4100486859946930642ull, 1159452208519453636ull, 3995441934559066461ull}}, {{9203301548749371740ull, 11786176324321607459ull, 3030500639538352474ull, 2497151209099416538ull}}, {{6892440917509326771ull, 5509348368547233516ull, 13011497836277716401ull, 3121439011374270672ull}}, {{8615551146886658464ull, 11498371479111429799ull, 16264372295347145501ull, 3901798764217838340ull}}, {{12302248494445243396ull, 9492325183658337576ull, 941860647737190130ull, 2438624227636148963ull}}, {{15377810618056554245ull, 2642034442718146162ull, 15012383864953651375ull, 3048280284545186203ull}}, {{9998891235715916998ull, 17137601108679846415ull, 14153793812764676314ull, 3810350355681482754ull}}, {{13166836049963529980ull, 15322686711352291913ull, 13457807151405310600ull, 2381468972300926721ull}}, {{2623487007172248763ull, 706614315480813276ull, 2987200883974474539ull, 2976836215376158402ull}}, {{3279358758965310954ull, 14718325949633180307ull, 12957373141822868981ull, 3721045269220198002ull}}, {{18190500288849177010ull, 11504796727734431643ull, 12710044232066681017ull, 2325653293262623751ull}}, {{18126439342634083359ull, 545937854385875842ull, 11275869271655963368ull, 2907066616578279689ull}}, {{13434677141437828390ull, 682422317982344803ull, 259778534287790498ull, 3633833270722849612ull}}, {{12181660408369897584ull, 10076399934332706812ull, 324723167859738122ull, 4542291588403562015ull}}, {{16836909792085961798ull, 10909435977385329661ull, 7120481007553418182ull, 2838932242752226259ull}}, {{7211079184825288535ull, 4413422934876886269ull, 4288915241014384824ull, 3548665303440282824ull}}, {{13625534999458998573ull, 5516778668596107836ull, 5361144051267981030ull, 4435831629300353530ull}}, {{17739331411516649916ull, 17283044723154731109ull, 7962401050469876047ull, 2772394768312720956ull}}, {{8339106209113648683ull, 16992119885516025983ull, 9953001313087345059ull, 3465493460390901195ull}}, {{5812196742964672950ull, 16628463838467644575ull, 7829565622931793420ull, 4331866825488626494ull}}, {{10550151991994002450ull, 1169417862187502051ull, 281792495904982984ull, 2707416765930391559ull}}, {{8576003971565115158ull, 1461772327734377564ull, 14187298675163392442ull, 3384270957412989448ull}}, {{10720004964456393948ull, 11050587446522747763ull, 17734123343954240552ull, 4230338696766236810ull}}, {{4394160093571552266ull, 6906617154076717352ull, 15695513108398788249ull, 2643961685478898006ull}}, {{5492700116964440332ull, 13244957461023284594ull, 10396019348643709503ull, 3304952106848622508ull}}, {{16089247183060326223ull, 11944510807851717838ull, 12995024185804636879ull, 4131190133560778135ull}}, {{5444093470985315985ull, 14382848282548405505ull, 15039419143768979905ull, 2581993833475486334ull}}, {{11416802857159032886ull, 4143502297903343169ull, 9575901892856449074ull, 3227492291844357918ull}}, {{435945516166627395ull, 14402749909233954770ull, 2746505329215785534ull, 4034365364805447398ull}}, {{4884151966031530026ull, 4390032674843833827ull, 15551623886042029671ull, 2521478353003404623ull}}, {{1493503939112024628ull, 875854825127404380ull, 14827843839125149185ull, 3151847941254255779ull}}, {{1866879923890030785ull, 5706504549836643379ull, 13923118780479048577ull, 3939809926567819724ull}}, {{17307701016927126905ull, 15095780389716371871ull, 17925321274654181168ull, 2462381204104887327ull}}, {{17022940252731520727ull, 422981413435913223ull, 17794965574890338557ull, 3077976505131109159ull}}, {{16666989297487013005ull, 5140412785222279433ull, 17632020950185535292ull, 3847470631413886449ull}}, {{3499339283288301272ull, 12436130027618700454ull, 4102484066224877701ull, 2404669144633679031ull}}, {{13597546140965152398ull, 1710104479241211855ull, 516419064353709223ull, 3005836430792098789ull}}, {{12385246657779052593ull, 15972688654333678531ull, 5257209848869524432ull, 3757295538490123486ull}}, {{5434936151898213919ull, 9982930408958549082ull, 17120814210825616482ull, 2348309711556327178ull}}, {{16017042226727543207ull, 3255290974343410544ull, 12177645726677244795ull, 2935387139445408973ull}}, {{1574558709699877392ull, 17904171773211426893ull, 1386999103064392281ull, 3669233924306761217ull}}, {{6579884405552234644ull, 8545156661232119904ull, 6345434897257878256ull, 4586542405383451521ull}}, {{4112427753470146653ull, 5340722913270074940ull, 15495111856854643670ull, 2866589003364657200ull}}, {{5140534691837683316ull, 15899275678442369483ull, 922145747358752971ull, 3583236254205821501ull}}, {{1813982346369716241ull, 15262408579625573950ull, 5764368202625829118ull, 4479045317757276876ull}}, {{14968797021763236363ull, 4927319343838595814ull, 12826102163495919007ull, 2799403323598298047ull}}, {{9487624240349269645ull, 1547463161370856864ull, 11420941685942510855ull, 3499254154497872559ull}}, {{11859530300436587056ull, 15769387006995734792ull, 9664491089000750664ull, 4374067693122340699ull}}, {{7412206437772866910ull, 9855866879372334245ull, 3734463921411775213ull, 2733792308201462937ull}}, {{13876944065643471542ull, 16931519617642805710ull, 9279765920192106920ull, 3417240385251828671ull}}, {{8122808045199563619ull, 2717655448343955522ull, 6988021381812745747ull, 4271550481564785839ull}}, {{9688441046677115166ull, 17839435719710829865ull, 11285042391274047947ull, 2669719050977991149ull}}, {{16722237326773781862ull, 17687608631211149427ull, 271244933810396222ull, 3337148813722488937ull}}, {{16291110640039839423ull, 12886138752159160976ull, 4950742185690383182ull, 4171436017153111171ull}}, {{10181944150024899640ull, 3442150701672087706ull, 788370856842795537ull, 2607147510720694482ull}}, {{3504058150676348741ull, 8914374395517497537ull, 10208835607908270229ull, 3258934388400868102ull}}, {{8991758706772823831ull, 15754654012824259825ull, 3537672473030561978ull, 4073667985501085128ull}}, {{17149064237801484654ull, 14458344776442550294ull, 2211045295644101236ull, 2546042490938178205ull}}, {{12212958260397080010ull, 18072930970553187868ull, 7375492637982514449ull, 3182553113672722756ull}}, {{15266197825496350012ull, 8756105657909321123ull, 9219365797478143062ull, 3978191392090903445ull}}, {{7235530631721524806ull, 860880017765937798ull, 8067946632637533366ull, 2486369620056814653ull}}, {{18267785326506681815ull, 10299472059062198055ull, 14696619309224304611ull, 3107962025071018316ull}}, {{18223045639705964365ull, 8262654055400359665ull, 18370774136530380764ull, 3884952531338772895ull}}, {{4471874497175145872ull, 14387530821480000599ull, 18399262862972569833ull, 2428095332086733059ull}}, {{978157103041544436ull, 4149355471567837037ull, 18387392560288324388ull, 3035119165108416324ull}}, {{5834382397229318449ull, 5186694339459796296ull, 4537496626650853869ull, 3793898956385520406ull}}, {{3646488998268324031ull, 5547526971376066637ull, 16670993446938947380ull, 2371186847740950253ull}}, {{9169797266262792942ull, 6934408714220083296ull, 7003683753391520513ull, 2963983559676187817ull}}, {{11462246582828491178ull, 13279696911202492024ull, 13366290710166788545ull, 3704979449595234771ull}}, {{7163904114267806986ull, 1382281541860475659ull, 6048088684640548889ull, 2315612155997021732ull}}, {{4343194124407370829ull, 6339537945752982478ull, 7560110855800686111ull, 2894515194996277165ull}}, {{14652364692363989344ull, 3312736413763840193ull, 14061824588178245543ull, 3618143993745346456ull}}, {{4480397810172822968ull, 17975978572486963954ull, 17577280735222806928ull, 4522679992181683070ull}}, {{7411934649785402259ull, 11234986607804352471ull, 6374114441086866426ull, 2826674995113551919ull}}, {{4653232293804364919ull, 4820361222900664781ull, 3355957032931195129ull, 3533343743891939899ull}}, {{10428226385682844053ull, 10637137547053218880ull, 18030004346446157623ull, 4416679679864924873ull}}, {{6517641491051777533ull, 13565739994549343656ull, 4351223688887766658ull, 2760424799915578046ull}}, {{8147051863814721917ull, 7733802956331903762ull, 14662401647964484131ull, 3450530999894472557ull}}, {{960442792913626588ull, 5055567676987491799ull, 4492944004673441452ull, 4313163749868090697ull}}, {{7517805773212098474ull, 12383101834971958182ull, 14337305048989370667ull, 2695727343667556685ull}}, {{173885179660347284ull, 10867191275287559824ull, 4086573255954549622ull, 3369659179584445857ull}}, {{217356474575434105ull, 4360617057254673972ull, 9719902588370574932ull, 4212073974480557321ull}}, {{9359219833464422124ull, 11948757697638947040ull, 17604154163800079092ull, 2632546234050348325ull}}, {{11699024791830527654ull, 14935947122048683800ull, 8170134649467935153ull, 3290682792562935407ull}}, {{14623780989788159568ull, 4834875847278691038ull, 5600982293407531038ull, 4113353490703669259ull}}, {{4528177100190211826ull, 16856855459831345611ull, 1194770924166012946ull, 2570845931689793287ull}}, {{1048535356810376878ull, 11847697287934406206ull, 15328521710489679895ull, 3213557414612241608ull}}, {{10534041232867746906ull, 10197935591490619853ull, 713908064402548253ull, 4016946768265302011ull}}, {{8889618779756035768ull, 8679552753895331360ull, 16587093604747450322ull, 2510591730165813756ull}}, {{11112023474695044710ull, 1626068905514388392ull, 2287122932224761287ull, 3138239662707267196ull}}, {{13890029343368805888ull, 15867644187175149202ull, 2858903665280951608ull, 3922799578384083995ull}}, {{13292954358032891584ull, 9917277616984468251ull, 17927715855296452419ull, 2451749736490052496ull}}, {{12004506929113726576ull, 7784911002803197410ull, 3962900745411013908ull, 3064687170612565621ull}}, {{5782261624537382412ull, 9731138753503996763ull, 9565311950191155289ull, 3830858963265707026ull}}, {{1308070506122170056ull, 17611176767008467737ull, 10590005987296859959ull, 2394286852041066891ull}}, {{6246774151080100473ull, 17402284940333196767ull, 8625821465693687045ull, 2992858565051333614ull}}, {{3196781670422737688ull, 7917798120134332247ull, 1558904795262332999ull, 3741073206314167018ull}}, {{8915517571655292911ull, 11866152852725039510ull, 5586001515466346028ull, 2338170753946354386ull}}, {{1921024927714340331ull, 14832691065906299388ull, 16205873931187708343ull, 2922713442432942982ull}}, {{2401281159642925413ull, 13929177813955486331ull, 11033970377129859621ull, 3653391803041178728ull}}, {{16836659504835820478ull, 3576414212162194201ull, 13792462971412324527ull, 4566739753801473410ull}}, {{3605383162881305943ull, 9152787910242453232ull, 13231975375560090733ull, 2854212346125920881ull}}, {{4506728953601632429ull, 16052670906230454444ull, 2704911164167949704ull, 3567765432657401102ull}}, {{5633411192002040536ull, 1619094559078516439ull, 12604510992064712939ull, 4459706790821751377ull}}, {{10438411022642357191ull, 17152835163919930438ull, 960290342399363730ull, 2787316744263594611ull}}, {{3824641741448170681ull, 12217671918045137240ull, 15035420983281368375ull, 3484145930329493263ull}}, {{4780802176810213351ull, 10660403879129033646ull, 14182590210674322565ull, 4355182412911866579ull}}, {{16823059415788547056ull, 8968595433669339980ull, 6558275872457757651ull, 2721989008069916612ull}}, {{2582080196026132204ull, 6599058273659287072ull, 8197844840572197064ull, 3402486260087395765ull}}, {{3227600245032665255ull, 8248822842074108840ull, 14858992069142634234ull, 4253107825109244706ull}}, {{2017250153145415785ull, 9767200294723705929ull, 13898556061641534300ull, 2658192390693277941ull}}, {{7133248709859157635ull, 12209000368404632411ull, 3538137021769754163ull, 3322740488366597427ull}}, {{4304874868896559139ull, 10649564442078402610ull, 18257729332494356416ull, 4153425610458246783ull}}, {{7302232811487737366ull, 6655977776299001631ull, 18328609860450054616ull, 2595891006536404239ull}}, {{4516104995932283804ull, 8319972220373752039ull, 18299076307135180366ull, 3244863758170505299ull}}, {{1033445226487966851ull, 1176593238612414241ull, 18262159365491587554ull, 4056079697713131624ull}}, {{12175118312623449042ull, 5347056792560146804ull, 11413849603432242221ull, 2535049811070707265ull}}, {{15218897890779311302ull, 11295507009127571409ull, 432253949008139064ull, 3168812263838384082ull}}, {{5188564308191975416ull, 14119383761409464262ull, 9763689473114949638ull, 3961015329797980102ull}}, {{17077910747902148347ull, 4212928832453527259ull, 1490619902269455620ull, 2475634581123737564ull}}, {{16735702416450297529ull, 5266161040566909074ull, 1863274877836819525ull, 3094543226404671955ull}}, {{11696255983708096104ull, 11194387319136024247ull, 16164151652578188118ull, 3868179033005839943ull}}, {{14227689017458641921ull, 2384806056032627250ull, 17020123810502449430ull, 2417611895628649964ull}}, {{8561239234968526593ull, 12204379606895559871ull, 2828410689418510171ull, 3022014869535812456ull}}, {{6089863025283270337ull, 10643788490192061935ull, 3535513361773137714ull, 3777518586919765570ull}}, {{10723693418443125817ull, 11264053824797426613ull, 6821381869535598975ull, 2360949116824853481ull}}, {{18016302791481295175ull, 9468381262569395362ull, 13138413355346886623ull, 2951186396031066851ull}}, {{13297006452496843161ull, 7223790559784356299ull, 11811330675756220375ull, 3688982995038833564ull}}, {{12009572047193666047ull, 4418052181303057470ull, 14764163344695275469ull, 4611228743798541955ull}}, {{2894296511068653375ull, 5067125622528104871ull, 6921759081220853216ull, 2882017964874088722ull}}, {{17452928694117980431ull, 6333907028160131088ull, 17875570888380842328ull, 3602522456092610902ull}}, {{3369416793937923923ull, 7917383785200163861ull, 13121091573621277102ull, 4503153070115763628ull}}, {{4411728505424896404ull, 336678847322714509ull, 17424054270368073997ull, 2814470668822352267ull}}, {{10126346650208508409ull, 5032534577580781040ull, 17168381819532704592ull, 3518088336027940334ull}}, {{12657933312760635511ull, 6290668221975976300ull, 12237105237561104932ull, 4397610420034925418ull}}, {{17134580357330173003ull, 13155039675589760995ull, 12259876791903078486ull, 2748506512521828386ull}}, {{16806539428235328349ull, 7220427557632425436ull, 6101473953024072300ull, 3435633140652285483ull}}, {{2561430211584608820ull, 9025534447040531796ull, 3015156422852702471ull, 4294541425815356854ull}}, {{10824265919095156321ull, 12558488057041414228ull, 15719530819565102756ull, 2684088391134598033ull}}, {{13530332398868945401ull, 15698110071301767785ull, 5814355469174214733ull, 3355110488918247542ull}}, {{3077857443304018039ull, 5787579533845046020ull, 16491316373322544225ull, 4193888111147809427ull}}, {{11147032938919787083ull, 15146452254721623522ull, 8001229724112896188ull, 2621180069467380892ull}}, {{4710419136794958045ull, 486321244692477787ull, 10001537155141120236ull, 3276475086834226115ull}}, {{1276337902566309652ull, 607901555865597234ull, 7890235425499012391ull, 4095593858542782644ull}}, {{5409397207531331437ull, 7297467500057080127ull, 14154769177791658552ull, 2559746161589239152ull}}, {{2150060490986776392ull, 9121834375071350159ull, 17693461472239573190ull, 3199682701986548940ull}}, {{16522633669015634202ull, 2178920931984411890ull, 3670082766589914872ull, 3999603377483186176ull}}, {{14938332061562159280ull, 1361825582490257431ull, 2293801729118696795ull, 2499752110926991360ull}}, {{14061229058525311196ull, 15537340033394985501ull, 2867252161398370993ull, 3124690138658739200ull}}, {{3741478267874475283ull, 5586616986461568165ull, 3584065201747963742ull, 3905862673323424000ull}}, {{4644266926635241004ull, 17326693671820643815ull, 2240040751092477338ull, 2441164170827140000ull}}, {{1193647639866663351ull, 12434995052921028961ull, 2800050938865596673ull, 3051455213533925000ull}}, {{6103745568260717093ull, 1708685760869122489ull, 3500063673581995842ull, 3814319016917406250ull}}, {{15344056026231417943ull, 5679614618970589459ull, 6799225814416135305ull, 2383949385573378906ull}}, {{14568384014361884525ull, 11711204292140624728ull, 17722404304874944939ull, 2979936731966723632ull}}, {{18210480017952355656ull, 10027319346748393006ull, 3706261307384129558ull, 3724920914958404541ull}}, {{6769863992792834381ull, 1655388573290357725ull, 4622256326328774926ull, 2328075571849002838ull}}, {{13074016009418430880ull, 11292607753467722964ull, 15001192444765744465ull, 2910094464811253547ull}}, {{16342520011773038600ull, 280701636552489993ull, 14139804537529792678ull, 3637618081014066934ull}}, {{6593091959434134538ull, 9574249082545388300ull, 8451383635057465039ull, 4547022601267583668ull}}, {{13344054511501109895ull, 12901434704231949543ull, 14505486808765691457ull, 2841889125792239792ull}}, {{12068382120948999464ull, 2291735325007773217ull, 18131858510957114322ull, 3552361407240299740ull}}, {{1250419595904085618ull, 12088041193114492330ull, 4218079064986841286ull, 4440451759050374676ull}}, {{5393198265867441415ull, 2943339727269169802ull, 11859671452471551612ull, 2775282349406484172ull}}, {{15964869869189077577ull, 3679174659086462252ull, 14824589315589439515ull, 3469102936758105215ull}}, {{1509343262776795355ull, 18434026379140241528ull, 13919050626059411489ull, 4336378670947631519ull}}, {{943339539235497097ull, 4603737459321569099ull, 15616935668928214037ull, 2710236669342269699ull}}, {{15014232479326535083ull, 10366357842579349277ull, 14909483567732879642ull, 3387795836677837124ull}}, {{4932732543876005142ull, 3734575266369410789ull, 190110385956547937ull, 4234744795847296406ull}}, {{5388800849136197166ull, 13863324587549351503ull, 13953877046505006172ull, 2646715497404560253ull}}, {{2124315042992858553ull, 17329155734436689379ull, 3607288252849094003ull, 3308394371755700317ull}}, {{16490451859023236904ull, 17049758649618473819ull, 9120796334488755408ull, 4135492964694625396ull}}, {{8000689402675829113ull, 10656099156011546137ull, 14923869745910247938ull, 2584683102934140872ull}}, {{14612547771772174295ull, 4096751908159656863ull, 208093108678258307ull, 3230853878667676091ull}}, {{13653998696287829965ull, 509253866772183175ull, 14095174441129986596ull, 4038567348334595113ull}}, {{15451278212820975584ull, 9541655703587390292ull, 1891954998065159766ull, 2524104592709121946ull}}, {{867353692316667864ull, 2703697592629462058ull, 11588315784436225516ull, 3155130740886402432ull}}, {{10307564152250610638ull, 3379621990786827572ull, 14485394730545281895ull, 3943913426108003040ull}}, {{15665599632011407457ull, 9029792771882849088ull, 9053371706590801184ull, 2464945891317501900ull}}, {{1135255466304707705ull, 11287240964853561361ull, 11316714633238501480ull, 3081182364146877375ull}}, {{6030755351308272535ull, 14109051206066951701ull, 9534207273120738946ull, 3851477955183596719ull}}, {{6075065103781364287ull, 13429843022219232717ull, 12876408573341543697ull, 2407173721989747949ull}}, {{12205517398154093262ull, 2952245722491877184ull, 2260452661394765910ull, 3008967152487184937ull}}, {{15256896747692616578ull, 12913679189969622288ull, 7437251845170845291ull, 3761208940608981171ull}}, {{9535560467307885361ull, 5765206484517319978ull, 2342439394018084355ull, 2350755587880613232ull}}, {{2696078547280080893ull, 2594822087219262069ull, 2928049242522605444ull, 2938444484850766540ull}}, {{7981784202527489021ull, 3243527609024077586ull, 3660061553153256805ull, 3673055606063458175ull}}, {{753858216304585468ull, 8666095529707484887ull, 18410134996723734718ull, 4591319507579322718ull}}, {{7388690412831447773ull, 804623687639790150ull, 6894648354524946295ull, 2869574692237076699ull}}, {{12490979184533909ull, 14840837664831901400ull, 4006624424728794964ull, 3586968365296345874ull}}, {{15613723980667386ull, 104303007330325134ull, 14231652567765769514ull, 4483710456620432342ull}}, {{13844816632770080828ull, 4676875398008841112ull, 4283096836426218042ull, 2802319035387770214ull}}, {{17306020790962601035ull, 15069466284365827198ull, 14577243082387548360ull, 3502898794234712767ull}}, {{12409153951848475486ull, 390088781747732382ull, 13609867834557047547ull, 4378623492793390959ull}}, {{3144035201477909275ull, 16384706553088190403ull, 15423696424239236572ull, 2736639682995869349ull}}, {{17765102057129550305ull, 2034139117650686387ull, 5444562475016882004ull, 3420799603744836687ull}}, {{17594691552984549978ull, 2542673897063357984ull, 2194017075343714601ull, 4275999504681045859ull}}, {{10996682220615343736ull, 13118386231733068500ull, 17512161736585679289ull, 2672499690425653661ull}}, {{13745852775769179670ull, 2562924734384171913ull, 8055144115449935400ull, 3340624613032067077ull}}, {{3347257914429310876ull, 3203655917980214892ull, 14680616162739807154ull, 4175780766290083846ull}}, {{11315408233373095105ull, 6613970967165022211ull, 4563699083284991567ull, 2609862978931302404ull}}, {{9532574273288980978ull, 3655777690528889860ull, 5704623854106239459ull, 3262328723664128005ull}}, {{11915717841611226222ull, 18404780168443276037ull, 11742465836060187227ull, 4077910904580160006ull}}, {{9753166660220710341ull, 9197144596063353571ull, 2727355129110229113ull, 2548694315362600004ull}}, {{7579772306848500022ull, 16108116763506579868ull, 3409193911387786391ull, 3185867894203250005ull}}, {{9474715383560625027ull, 15523459935955836931ull, 8873178407662120893ull, 3982334867754062506ull}}, {{3615854105511696690ull, 12008005469186092034ull, 10157422523216213462ull, 2488959292346289066ull}}, {{13743189668744396671ull, 5786634799627839234ull, 3473406117165491020ull, 3111199115432861333ull}}, {{7955615049075720030ull, 7233293499534799043ull, 8953443664884251679ull, 3888998894291076666ull}}, {{2666416396458631067ull, 11438337464850331258ull, 10207588308980045203ull, 2430624308931922916ull}}, {{12556392532428064642ull, 9686235812635526168ull, 12759485386225056504ull, 3038280386164903645ull}}, {{15695490665535080802ull, 12107794765794407710ull, 2114298677499156918ull, 3797850482706129557ull}}, {{5197995647532037597ull, 2955685710194116915ull, 3627279682650667026ull, 2373656551691330973ull}}, {{1885808540987659093ull, 12917979174597421952ull, 9145785621740721686ull, 2967070689614163716ull}}, {{2357260676234573866ull, 6924101931392001632ull, 11432232027175902108ull, 3708838362017704645ull}}, {{1473287922646608666ull, 13550935743974776828ull, 9450988026198632769ull, 2318023976261065403ull}}, {{1841609903308260833ull, 3103611624686307323ull, 7202049014320903058ull, 2897529970326331754ull}}, {{16137070434417489753ull, 13102886567712659961ull, 18225933304755904630ull, 3621912462907914692ull}}, {{6336279987739698479ull, 7155236172786049144ull, 4335672557235329172ull, 4527390578634893366ull}}, {{3960174992337311550ull, 13695394644846056523ull, 16544853403554244444ull, 2829619111646808353ull}}, {{338532721994251533ull, 17119243306057570654ull, 6846008699160641843ull, 3537023889558510442ull}}, {{9646537939347590224ull, 16787368114144575413ull, 17780882910805578112ull, 4421279861948138052ull}}, {{8334929221305937842ull, 10492105071340359633ull, 1889679782398710512ull, 2763299913717586283ull}}, {{15030347545059810206ull, 13115131339175449541ull, 16197157783280551852ull, 3454124892146982853ull}}, {{4952876376042599046ull, 16393914173969311927ull, 6411389173818526103ull, 4317656115183728567ull}}, {{10013076762667706260ull, 17163725386371901810ull, 10924647261277660670ull, 2698535071989830354ull}}, {{3292973916479857017ull, 12231284696110101455ull, 4432437039742300030ull, 3373168839987287943ull}}, {{17951275450881984983ull, 6065733833282851010ull, 928860281250487134ull, 4216461049984109929ull}}, {{15831233175228628518ull, 17626141701083945593ull, 12109752721850024218ull, 2635288156240068705ull}}, {{5953983413753621936ull, 12809305089500156184ull, 1302132847030366561ull, 3294110195300085882ull}}, {{7442479267192027420ull, 2176573306593031518ull, 10851038095642734010ull, 4117637744125107352ull}}, {{39863523567629234ull, 5972044335048032603ull, 6781898809776708756ull, 2573523590078192095ull}}, {{13884887459741700254ull, 7465055418810040753ull, 3865687493793498041ull, 3216904487597740119ull}}, {{3521051269394961605ull, 13943005291939938846ull, 220423348814484647ull, 4021130609497175149ull}}, {{16035715098654014715ull, 15631907335103543634ull, 2443607602222746856ull, 2513206630935734468ull}}, {{10821271836462742586ull, 1093140095169877927ull, 3054509502778433571ull, 3141508288669668085ull}}, {{8914903777151040329ull, 15201483174244511121ull, 8429822896900429867ull, 3926885360837085106ull}}, {{17101029906787869966ull, 7195083974689125498ull, 9880325328990156571ull, 2454303350523178191ull}}, {{12152915346630061649ull, 4382168949934018969ull, 7738720642810307810ull, 3067879188153972739ull}}, {{1356086128005413349ull, 14701083224272299520ull, 5061714785085496858ull, 3834848985192465924ull}}, {{847553830003383343ull, 13799863033597575104ull, 12386943777533211344ull, 2396780615745291202ull}}, {{1059442287504229179ull, 17249828791996968880ull, 6260307685061738372ull, 2995975769681614003ull}}, {{1324302859380286474ull, 3115541916286659484ull, 3213698587899785062ull, 3744969712102017504ull}}, {{10051061323967454854ull, 15782271752961325889ull, 2008561617437365663ull, 2340606070063760940ull}}, {{17175512673386706472ull, 15116153672774269457ull, 2510702021796707079ull, 2925757587579701175ull}}, {{7634332786451219377ull, 14283506072540448918ull, 16973435582528047561ull, 3657196984474626468ull}}, {{319543946209248414ull, 4019324535393397436ull, 2770050404450507836ull, 4571496230593283086ull}}, {{9423087003235556067ull, 11735449871475649205ull, 15566339558063731109ull, 2857185144120801928ull}}, {{16390544772471832987ull, 834254284062397794ull, 1011180373870112271ull, 3571481430151002411ull}}, {{11264808928735015426ull, 14877875910360160955ull, 15099033522619804050ull, 4464351787688753013ull}}, {{4734662571245690689ull, 13910358462402488501ull, 11742738960851071483ull, 2790219867305470633ull}}, {{10530014232484501266ull, 12776262059575722722ull, 843365645781675642ull, 3487774834131838292ull}}, {{3939145753750850774ull, 6746955537614877595ull, 1054207057227094553ull, 4359718542664797865ull}}, {{156123086880587782ull, 15746062257077768257ull, 12188094456835403855ull, 2724824089165498665ull}}, {{4806839877028122631ull, 15070891802919822417ull, 1400060015762091107ull, 3406030111456873332ull}}, {{10620235864712541193ull, 14226928735222390117ull, 1750075019702613884ull, 4257537639321091665ull}}, {{8943490424659032198ull, 18115202496368769631ull, 12623011933382603437ull, 2660961024575682290ull}}, {{6567677012396402343ull, 8808945065178798327ull, 6555392879873478489ull, 3326201280719602863ull}}, {{3597910247068115025ull, 15622867349900885813ull, 3582555081414460207ull, 4157751600899503579ull}}, {{4554536913631265843ull, 16681821121329135489ull, 18379997990379895293ull, 2598594750562189736ull}}, {{10304857160466470207ull, 7017218346379255649ull, 4528253414265317501ull, 3248243438202737171ull}}, {{17492757469010475663ull, 13383208951401457465ull, 1048630749404258972ull, 4060304297753421464ull}}, {{4015444390490465433ull, 17587877631480686724ull, 655394218377661857ull, 2537690186095888415ull}}, {{5019305488113081792ull, 8149788984068694693ull, 14654300828254241034ull, 3172112732619860518ull}}, {{10885817878568740143ull, 963864193231092558ull, 9094503998463025485ull, 3965140915774825648ull}}, {{2191950155678074686ull, 2908258129983126801ull, 5684064999039390928ull, 2478213072359266030ull}}, {{7351623713024981261ull, 3635322662478908501ull, 16328453285654014468ull, 3097766340449082537ull}}, {{13801215659708614480ull, 4544153328098635626ull, 6575508551785354373ull, 3872207925561353172ull}}, {{13237445805745271954ull, 5145938839275341218ull, 13333064881720622291ull, 2420129953475845732ull}}, {{7323435220326814135ull, 1820737530666788619ull, 16666331102150777864ull, 3025162441844807165ull}}, {{4542608006981129764ull, 2275921913333485774ull, 6997855822406308618ull, 3781453052306008957ull}}, {{16674188059645369815ull, 6034137214260816512ull, 6679502898217636838ull, 2363408157691255598ull}}, {{2395991000847160653ull, 16766043554680796449ull, 17572750659626821855ull, 2954260197114069497ull}}, {{7606674769486338720ull, 16345868424923607657ull, 8130880269251363607ull, 3692825246392586872ull}}, {{16283386776997431460ull, 17133696793218336641ull, 5081800168282102254ull, 2308015778995366795ull}}, {{6519175415964625613ull, 12193748954668144994ull, 1740564191925239914ull, 2885019723744208494ull}}, {{17372341306810557824ull, 6018814156480405434ull, 11399077276761325701ull, 3606274654680260617ull}}, {{12492054596658421472ull, 12135203714027894697ull, 413788540669493414ull, 4507843318350325772ull}}, {{890005095270431564ull, 2972816302840046282ull, 9481989874773209192ull, 2817402073968953607ull}}, {{10335878405942815263ull, 3716020378550057852ull, 7240801325039123586ull, 3521752592461192009ull}}, {{12919848007428519078ull, 13868397510042348123ull, 13662687674726292386ull, 4402190740576490011ull}}, {{5769061995429130472ull, 13279434462203855481ull, 6233336787490238789ull, 2751369212860306257ull}}, {{11823013512713800994ull, 2764235022472655639ull, 12403357002790186391ull, 3439211516075382821ull}}, {{10167080872464863339ull, 17290351833372983261ull, 1669138198205569276ull, 4299014395094228527ull}}, {{8660268554504233539ull, 1583097859003338730ull, 7960740401519562654ull, 2686883996933892829ull}}, {{1601963656275516115ull, 11202244360608949221ull, 14562611520326841221ull, 3358604996167366036ull}}, {{6614140588771783048ull, 167747395479022814ull, 18203264400408551527ull, 4198256245209207545ull}}, {{17968895923264528117ull, 7022371149815471114ull, 4459511222614262848ull, 2623910153255754716ull}}, {{13237747867225884338ull, 8777963937269338893ull, 5574389028267828560ull, 3279887691569693395ull}}, {{2712126778750191711ull, 10972454921586673617ull, 2356300266907397796ull, 4099859614462116744ull}}, {{13224294282787339580ull, 16081156362846446818ull, 1472687666817123622ull, 2562412259038822965ull}}, {{7306995816629398666ull, 10878073416703282715ull, 6452545601948792432ull, 3203015323798528706ull}}, {{4522058752359360429ull, 13597591770879103394ull, 17289054039290766348ull, 4003769154748160882ull}}, {{7437972738651988172ull, 17721866893654215429ull, 15417344792984116871ull, 2502355721717600551ull}}, {{13909151941742373119ull, 17540647598640381382ull, 14659994972802758185ull, 3127944652147000689ull}}, {{8163067890323190591ull, 8090751443018313016ull, 4489935660721284020ull, 3909930815183750862ull}}, {{5101917431451994119ull, 14280091688741221443ull, 16641267843232966224ull, 2443706759489844288ull}}, {{1765710770887604745ull, 17850114610926526804ull, 2354840730331656164ull, 3054633449362305361ull}}, {{2207138463609505931ull, 3865899189948606889ull, 7555236931341958110ull, 3818291811702881701ull}}, {{12908676585824410967ull, 16251245049000043017ull, 7027866091302417770ull, 2386432382314301063ull}}, {{2300787676998349997ull, 11090684274395277964ull, 4173146595700634309ull, 2983040477892876329ull}}, {{2875984596247937496ull, 28297287711933743ull, 9828119263053180791ull, 3728800597366095411ull}}, {{8715019400296042791ull, 6935214832461040445ull, 3836731530194544042ull, 2330500373353809632ull}}, {{15505460268797441393ull, 17892390577431076364ull, 4795914412743180052ull, 2913125466692262040ull}}, {{935081262287250125ull, 3918744148079293840ull, 5994893015928975066ull, 3641406833365327550ull}}, {{1168851577859062656ull, 14121802221953893108ull, 16716988306765994640ull, 4551758541706659437ull}}, {{9953904273016689968ull, 8826126388721183192ull, 12753960700942440602ull, 2844849088566662148ull}}, {{12442380341270862460ull, 1809285949046703182ull, 15942450876178050753ull, 3556061360708327685ull}}, {{6329603389733802267ull, 6873293454735766882ull, 6093005539940399729ull, 4445076700885409607ull}}, {{8567688137011014321ull, 15825023455278324061ull, 10725657490103831686ull, 2778172938053381004ull}}, {{15321296189691155805ull, 10557907282243129268ull, 13407071862629789608ull, 3472716172566726255ull}}, {{704876163404393140ull, 13197384102803911586ull, 12147153809859849106ull, 4340895215708407819ull}}, {{5052233620555133617ull, 12860051082679832645ull, 5286128121948711739ull, 2713059509817754887ull}}, {{10926978044121304925ull, 11463377834922402902ull, 1995974134008501770ull, 3391324387272193609ull}}, {{4435350518296855348ull, 5105850256798227820ull, 7106653685938015117ull, 4239155484090242011ull}}, {{11995466110790310401ull, 5496999419712586339ull, 2135815544497565496ull, 2649472177556401257ull}}, {{10382646620060500097ull, 6871249274640732924ull, 7281455449049344774ull, 3311840221945501571ull}}, {{12978308275075625121ull, 17812433630155691963ull, 4490133292884293063ull, 4139800277431876964ull}}, {{5805599662708571749ull, 18050300046488389333ull, 12029705344907458972ull, 2587375173394923102ull}}, {{11868685596813102590ull, 4116130984400935050ull, 5813759644279547908ull, 3234218966743653878ull}}, {{5612484959161602429ull, 5145163730501168813ull, 16490571592204210693ull, 4042773708429567347ull}}, {{5813646108689695470ull, 5521570340776924460ull, 8000764235913937731ull, 2526733567768479592ull}}, {{7267057635862119338ull, 2290276907543767671ull, 10000955294892422164ull, 3158416959710599490ull}}, {{4472136026400261268ull, 2862846134429709589ull, 3277822081760751897ull, 3948021199638249363ull}}, {{5100928025713857245ull, 13318493880087038253ull, 18189539865596327599ull, 2467513249773905851ull}}, {{10987846050569709460ull, 12036431331681409912ull, 18125238813568021595ull, 3084391562217382314ull}}, {{13734807563212136825ull, 10433853146174374486ull, 13433176480105251186ull, 3855489452771727893ull}}, {{3972568708580197612ull, 11132844234786371958ull, 10701578309279475943ull, 2409680907982329933ull}}, {{14189082922580022823ull, 9304369275055577043ull, 17988658905026732833ull, 3012101134977912416ull}}, {{13124667634797640624ull, 16242147612246859208ull, 4039079557573864425ull, 3765126418722390521ull}}, {{8202917271748525390ull, 3233813230013205149ull, 14053639769552135026ull, 2353204011701494075ull}}, {{14865332608113044642ull, 13265638574371282244ull, 12955363693512780878ull, 2941505014626867594ull}}, {{134921686431754186ull, 7358676181109326998ull, 6970832580036200290ull, 3676881268283584493ull}}, {{9392024144894468540ull, 18421717263241434555ull, 13325226743472638266ull, 4596101585354480616ull}}, {{3564172081345348886ull, 16125259307953284501ull, 8328266714670398916ull, 2872563490846550385ull}}, {{9066901120109074011ull, 1709830061232054010ull, 15022019411765386550ull, 3590704363558187981ull}}, {{2110254363281566706ull, 11360659613394843321ull, 4942466209424569475ull, 4488380454447734977ull}}, {{12848124023119448951ull, 4794569249158083123ull, 14618256426958825682ull, 2805237784029834360ull}}, {{11448469010471923285ull, 15216583598302379712ull, 18272820533698532102ull, 3506547230037292950ull}}, {{14310586263089904106ull, 9797357461023198832ull, 13617653630268389320ull, 4383184037546616188ull}}, {{8944116414431190067ull, 6123348413139499270ull, 17734405555772519133ull, 2739490023466635117ull}}, {{1956773481184211775ull, 12265871534851761992ull, 8332948889433485204ull, 3424362529333293897ull}}, {{2445966851480264719ull, 15332339418564702490ull, 15027872130219244409ull, 4280453161666617371ull}}, {{6140415300602553353ull, 2665183108961857200ull, 7086577072173333804ull, 2675283226041635857ull}}, {{7675519125753191692ull, 3331478886202321500ull, 13469907358644055159ull, 3344104032552044821ull}}, {{9594398907191489614ull, 17999406663035065587ull, 3002326143022905236ull, 4180130040690056027ull}}, {{3690656307780987057ull, 2026257127542140184ull, 18017354903885173437ull, 2612581275431285016ull}}, {{4613320384726233821ull, 7144507427855063134ull, 4074949556146915180ull, 3265726594289106271ull}}, {{14990022517762568085ull, 8930634284818828917ull, 482000926756256071ull, 4082158242861382839ull}}, {{11674607082815299005ull, 12499175455652849929ull, 7218779606863741900ull, 2551348901788364274ull}}, {{758200798236960044ull, 15623969319566062412ull, 18246846545434453183ull, 3189186127235455342ull}}, {{947750997796200055ull, 14918275631030190111ull, 13585186144938290671ull, 3986482659044319178ull}}, {{7509873401263706891ull, 16241451297034950675ull, 13102427359013819573ull, 2491551661902699486ull}}, {{4775655733152245709ull, 6466756066011524632ull, 7154662161912498659ull, 3114439577378374358ull}}, {{5969569666440307136ull, 3471759064087017886ull, 18166699739245399132ull, 3893049471722967947ull}}, {{17566039096807355672ull, 11393221451909161986ull, 9048344327814680505ull, 2433155919826854967ull}}, {{12734176834154418782ull, 406468759604288771ull, 6698744391340962728ull, 3041444899783568709ull}}, {{11306035024265635574ull, 508085949505360964ull, 12985116507603591314ull, 3801806124729460886ull}}, {{16289643927020798042ull, 4929239736868238506ull, 3504011798824856667ull, 2376128827955913054ull}}, {{11138682871921221744ull, 1549863652657910229ull, 13603386785385846642ull, 2970161034944891317ull}}, {{88295534619363468ull, 11160701602677163595ull, 3169175426450144590ull, 3712701293681114147ull}}, {{16196085773632959832ull, 2363752483245839342ull, 18121635706027198033ull, 2320438308550696341ull}}, {{11021735180186423982ull, 7566376622484687082ull, 8816986577251833829ull, 2900547885688370427ull}}, {{4553796938378254169ull, 14069656796533246757ull, 6409547203137404382ull, 3625684857110463034ull}}, {{10303932191400205615ull, 8363698958811782638ull, 17235306040776531286ull, 4532106071388078792ull}}, {{1828271601197740605ull, 615625830829976245ull, 10772066275485332054ull, 2832566294617549245ull}}, {{6897025519924563661ull, 9992904325392246114ull, 18076768862784052971ull, 3540707868271936556ull}}, {{17844653936760480384ull, 7879444388312919738ull, 4149217004770514598ull, 4425884835339920696ull}}, {{15764594728902688144ull, 312966724268186932ull, 2593260627981571624ull, 2766178022087450435ull}}, {{1258999337418808564ull, 391208405335233666ull, 17076633840259128242ull, 3457722527609313043ull}}, {{10797121208628286513ull, 9712382543523817890ull, 16734106281896522398ull, 4322153159511641304ull}}, {{11359886773820066975ull, 1458553071274998277ull, 10458816426185326499ull, 2701345724694775815ull}}, {{364800411992920006ull, 15658249394375911559ull, 8461834514304270219ull, 3376682155868469769ull}}, {{14291058570273313720ull, 14961125724542501544ull, 15188979161307725678ull, 4220852694835587211ull}}, {{8931911606420821075ull, 4739017559411675561ull, 7187268966603634597ull, 2638032934272242007ull}}, {{15776575526453414248ull, 10535457967691982355ull, 4372400189827155342ull, 3297541167840302509ull}}, {{15109033389639379905ull, 3945950422760202136ull, 10077186255711332082ull, 4121926459800378136ull}}, {{9443145868524612441ull, 7077905032652514239ull, 6298241409819582551ull, 2576204037375236335ull}}, {{7192246317228377647ull, 4235695272388254895ull, 3261115743847090285ull, 3220255046719045419ull}}, {{4378621878108084155ull, 9906305108912706523ull, 17911452735091026568ull, 4025318808398806773ull}}, {{430795664603858645ull, 6191440693070441577ull, 13500500968645585557ull, 2515824255249254233ull}}, {{5150180599182211210ull, 12350986884765439875ull, 3040568155524818234ull, 3144780319061567792ull}}, {{1826039730550376108ull, 6215361569102024036ull, 3800710194406022793ull, 3930975398826959740ull}}, {{10364646868448760876ull, 15413816026757234782ull, 11598815908358540053ull, 2456859624266849837ull}}, {{3732436548706175287ull, 5432211978164379766ull, 663461830166011355ull, 3071074530333562297ull}}, {{13888917722737494916ull, 2178578954278086803ull, 5441013306134902098ull, 3838843162916952871ull}}, {{6374730567497240371ull, 5973297864851192156ull, 10318162343975395667ull, 2399276976823095544ull}}, {{7968413209371550464ull, 2854936312636602291ull, 12897702929969244584ull, 2999096221028869430ull}}, {{5348830493287050175ull, 3568670390795752864ull, 6898756625606779922ull, 3748870276286086788ull}}, {{3343019058304406360ull, 6842105012674733444ull, 13535094927859013259ull, 2343043922678804242ull}}, {{4178773822880507950ull, 3940945247416028901ull, 7695496622968990766ull, 2928804903348505303ull}}, {{9835153297028022841ull, 14149553596124811934ull, 5007684760283850553ull, 3661006129185631629ull}}, {{3070569584430252743ull, 3851883939873851206ull, 10871291968782201096ull, 4576257661482039536ull}}, {{15754164045551071677ull, 2407427462421157003ull, 6794557480488875685ull, 2860161038426274710ull}}, {{15081019038511451692ull, 7620970346453834158ull, 17716568887465870414ull, 3575201298032843387ull}}, {{9627901761284538806ull, 302840896212516890ull, 17534025090904950114ull, 4469001622541054234ull}}, {{10629124619230224658ull, 4800961578560210960ull, 15570451700242981725ull, 2793126014088158896ull}}, {{13286405774037780823ull, 10612887991627651604ull, 1016320551594175540ull, 3491407517610198621ull}}, {{16608007217547226028ull, 13266109989534564505ull, 5882086707920107329ull, 4364259397012748276ull}}, {{3462475483325934412ull, 1373789715818020960ull, 12899676229304842889ull, 2727662123132967672ull}}, {{4328094354157418015ull, 6328923163199914104ull, 16124595286631053611ull, 3409577653916209590ull}}, {{5410117942696772518ull, 3299467935572504726ull, 10932372071434041206ull, 4261972067395261988ull}}, {{17216381769467646536ull, 15897225515014979165ull, 16056104581501051561ull, 2663732542122038742ull}}, {{7685419156552394458ull, 6036473838486560245ull, 10846758690021538644ull, 3329665677652548428ull}}, {{14218459964117880976ull, 7545592298108200306ull, 13558448362526923305ull, 4162082097065685535ull}}, {{13498223496001063514ull, 16245210232386094951ull, 15391559254220408921ull, 2601301310666053459ull}}, {{12261093351573941489ull, 6471454735200454977ull, 14627763049348123248ull, 3251626638332566824ull}}, {{1491308634185263149ull, 8089318419000568722ull, 18284703811685154060ull, 4064533297915708530ull}}, {{5543753914793177372ull, 14279196048730131259ull, 16039625900730609191ull, 2540333311197317831ull}}, {{2318006375064083811ull, 13237309042485276170ull, 15437846357485873585ull, 3175416638996647289ull}}, {{12120880005684880572ull, 2711578247824431500ull, 5462249891575178270ull, 3969270798745809112ull}}, {{16798922040407826166ull, 15529794460172433399ull, 3413906182234486418ull, 2480794249216130695ull}}, {{16386966532082394803ull, 10188871038360765941ull, 18102440783075271735ull, 3100992811520163368ull}}, {{6648650109820829791ull, 8124402779523569523ull, 4181306905134538053ull, 3876241014400204211ull}}, {{1849563309424324668ull, 7383594746415924904ull, 307473806495392331ull, 2422650634000127632ull}} }; // ********************************************************************** static const BID_UINT128 bid_breakpoints_bid32[] = { {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{11908810229357645280ull, 469708516554766ull}}, {{5954405114678822640ull, 234854258277383ull}}, {{12200574594194187128ull, 117427129138691ull}}, {{15323659333951869372ull, 58713564569345ull}}, {{2831320374921140396ull, 293567822846729ull}}, {{10639032224315346006ull, 146783911423364ull}}, {{5319516112157673003ull, 73391955711682ull}}, {{8150836487078813399ull, 366959778558411ull}}, {{13298790280394182507ull, 183479889279205ull}}, {{15872767177051867061ull, 91739944639602ull}}, {{5576859590421128845ull, 458699723198014ull}}, {{2788429795210564422ull, 229349861599007ull}}, {{10617586934460058019ull, 114674930799503ull}}, {{14532165504084804817ull, 57337465399751ull}}, {{17320595299295369240ull, 286687326998758ull}}, {{8660297649647684620ull, 143343663499379ull}}, {{13553520861678618118ull, 71671831749689ull}}, {{12427372087264435742ull, 358359158748448ull}}, {{6213686043632217871ull, 179179579374224ull}}, {{3106843021816108935ull, 89589789687112ull}}, {{15534215109080544677ull, 447948948435560ull}}, {{7767107554540272338ull, 223974474217780ull}}, {{3883553777270136169ull, 111987237108890ull}}, {{971024812641129231ull, 559936185544451ull}}, {{9708884443175340423ull, 279968092772225ull}}, {{14077814258442446019ull, 139984046386112ull}}, {{7038907129221223009ull, 69992023193056ull}}, {{16747791572396563433ull, 349960115965281ull}}, {{17597267823053057524ull, 174980057982640ull}}, {{8798633911526528762ull, 87490028991320ull}}, {{7099681410213540580ull, 437450144956602ull}}, {{3549840705106770290ull, 218725072478301ull}}, {{10998292389408160953ull, 109362536239150ull}}, {{18097973799621701533ull, 546812681195752ull}}, {{9048986899810850766ull, 273406340597876ull}}, {{4524493449905425383ull, 136703170298938ull}}, {{2262246724952712691ull, 68351585149469ull}}, {{11311233624763563458ull, 341757925747345ull}}, {{14878988849236557537ull, 170878962873672ull}}, {{7439494424618278768ull, 85439481436836ull}}, {{303983975672290610ull, 427197407184182ull}}, {{151991987836145305ull, 213598703592091ull}}, {{9299368030772848460ull, 106799351796045ull}}, {{9603352006445139071ull, 533996758980227ull}}, {{14025048040077345343ull, 266998379490113ull}}, {{16235896056893448479ull, 133499189745056ull}}, {{8117948028446724239ull, 66749594872528ull}}, {{3696251994814517967ull, 333747974362642ull}}, {{1848125997407258983ull, 166873987181321ull}}, {{10147435035558405299ull, 83436993590660ull}}, {{13843687030372923267ull, 417184967953302ull}}, {{6921843515186461633ull, 208592483976651ull}}, {{12684293794448006624ull, 104296241988325ull}}, {{8081236751111378276ull, 521481209941628ull}}, {{4040618375555689138ull, 260740604970814ull}}, {{2020309187777844569ull, 130370302485407ull}}, {{10233526630743698092ull, 65185151242703ull}}, {{14274145006299387230ull, 325925756213517ull}}, {{16360444540004469423ull, 162962878106758ull}}, {{8180222270002234711ull, 81481439053379ull}}, {{4007623202592070326ull, 407407195266897ull}}, {{11227183638150810971ull, 203703597633448ull}}, {{5613591819075405485ull, 101851798816724ull}}, {{9621215021667475812ull, 509258994083621ull}}, {{14033979547688513714ull, 254629497041810ull}}, {{7016989773844256857ull, 127314748520905ull}}, {{12731866923776904236ull, 63657374260452ull}}, {{8319102397755866334ull, 318286871302263ull}}, {{13382923235732708975ull, 159143435651131ull}}, {{15914833654721130295ull, 79571717825565ull}}, {{5787191978767445014ull, 397858589127829ull}}, {{12116968026238498315ull, 198929294563914ull}}, {{6058484013119249157ull, 99464647281957ull}}, {{11845675991886694171ull, 497323236409786ull}}, {{5922837995943347085ull, 248661618204893ull}}, {{12184791034826449350ull, 124330809102446ull}}, {{6092395517413224675ull, 62165404551223ull}}, {{12015233513356571761ull, 310827022756116ull}}, {{6007616756678285880ull, 155413511378058ull}}, {{3003808378339142940ull, 77706755689029ull}}, {{15019041891695714701ull, 388533778445145ull}}, {{16732892982702633158ull, 194266889222572ull}}, {{8366446491351316579ull, 97133444611286ull}}, {{4938744309337479665ull, 485667223056432ull}}, {{2469372154668739832ull, 242833611528216ull}}, {{1234686077334369916ull, 121416805764108ull}}, {{617343038667184958ull, 60708402882054ull}}, {{3086715193335924790ull, 303542014410270ull}}, {{1543357596667962395ull, 151771007205135ull}}, {{9995050835188757005ull, 75885503602567ull}}, {{13081766028524681796ull, 379427518012837ull}}, {{15764255051117116706ull, 189713759006418ull}}, {{7882127525558558353ull, 94856879503209ull}}, {{2517149480373688533ull, 474284397516047ull}}, {{10481946777041620074ull, 237142198758023ull}}, {{14464345425375585845ull, 118571099379011ull}}, {{16455544749542568730ull, 59285549689505ull}}, {{8490747452874637189ull, 296427748447529ull}}, {{13468745763292094402ull, 148213874223764ull}}, {{6734372881646047201ull, 74106937111882ull}}, {{15225120334520684390ull, 370534685559411ull}}, {{16835932204115118003ull, 185267342779705ull}}, {{17641338138912334809ull, 92633671389852ull}}, {{14419714399723467584ull, 463168356949264ull}}, {{7209857199861733792ull, 231584178474632ull}}, {{3604928599930866896ull, 115792089237316ull}}, {{1802464299965433448ull, 57896044618658ull}}, {{9012321499827167240ull, 289480223093290ull}}, {{4506160749913583620ull, 144740111546645ull}}, {{11476452411811567618ull, 72370055773322ull}}, {{2042029837929183242ull, 361850278866613ull}}, {{10244386955819367429ull, 180925139433306ull}}, {{5122193477909683714ull, 90462569716653ull}}, {{7164223315838866956ull, 452312848583266ull}}, {{3582111657919433478ull, 226156424291633ull}}, {{11014427865814492547ull, 113078212145816ull}}, {{5507213932907246273ull, 56539106072908ull}}, {{9089325590826679752ull, 282695530364541ull}}, {{13768034832268115684ull, 141347765182270ull}}, {{6884017416134057842ull, 70673882591135ull}}, {{15973343006960737594ull, 353369412955676ull}}, {{7986671503480368797ull, 176684706477838ull}}, {{3993335751740184398ull, 88342353238919ull}}, {{1519934684991370376ull, 441711766194596ull}}, {{759967342495685188ull, 220855883097298ull}}, {{379983671247842594ull, 110427941548649ull}}, {{1899918356239212970ull, 552139707743245ull}}, {{10173331214974382293ull, 276069853871622ull}}, {{5086665607487191146ull, 138034926935811ull}}, {{11766704840598371381ull, 69017463467905ull}}, {{3493291981863202058ull, 345087317339528ull}}, {{1746645990931601029ull, 172543658669764ull}}, {{873322995465800514ull, 86271829334882ull}}, {{4366614977329002573ull, 431359146674410ull}}, {{2183307488664501286ull, 215679573337205ull}}, {{10315025781187026451ull, 107839786668602ull}}, {{14681640758516029024ull, 539198933343012ull}}, {{7340820379258014512ull, 269599466671506ull}}, {{3670410189629007256ull, 134799733335753ull}}, {{11058577131669279436ull, 67399866667876ull}}, {{18399397510927293948ull, 336999333339382ull}}, {{9199698755463646974ull, 168499666669691ull}}, {{13823221414586599295ull, 84249833334845ull}}, {{13775874851804341627ull, 421249166674228ull}}, {{6887937425902170813ull, 210624583337114ull}}, {{3443968712951085406ull, 105312291668557ull}}, {{17219843564755427034ull, 526561458342785ull}}, {{17833293819232489325ull, 263280729171392ull}}, {{8916646909616244662ull, 131640364585696ull}}, {{4458323454808122331ull, 65820182292848ull}}, {{3844873200331060040ull, 329100911464241ull}}, {{11145808637020305828ull, 164550455732120ull}}, {{5572904318510152914ull, 82275227866060ull}}, {{9417777518841212954ull, 411376139330301ull}}, {{13932260796275382285ull, 205688069665150ull}}, {{6966130398137691142ull, 102844034832575ull}}, {{16383907916978904097ull, 514220174162876ull}}, {{8191953958489452048ull, 257110087081438ull}}, {{4095976979244726024ull, 128555043540719ull}}, {{11271360526477138820ull, 64277521770359ull}}, {{1016570411257039252ull, 321387608851798ull}}, {{508285205628519626ull, 160693804425899ull}}, {{9477514639669035621ull, 80346902212949ull}}, {{10494085050926074874ull, 401734511064747ull}}, {{14470414562317813245ull, 200867255532373ull}}, {{16458579318013682430ull, 100433627766186ull}}, {{8505920295230205688ull, 502168138830934ull}}, {{4252960147615102844ull, 251084069415467ull}}, {{11349852110662327230ull, 125542034707733ull}}, {{14898298092185939423ull, 62771017353866ull}}, {{704514166091490651ull, 313855086769334ull}}, {{352257083045745325ull, 156927543384667ull}}, {{9399500578377648470ull, 78463771692333ull}}, {{10104014744469139122ull, 392318858461667ull}}, {{14275379409089345369ull, 196159429230833ull}}, {{16361061741399448492ull, 98079714615416ull}}, {{8018332412159035998ull, 490398573077084ull}}, {{4009166206079517999ull, 245199286538542ull}}, {{2004583103039758999ull, 122599643269271ull}}, {{10225663588374655307ull, 61299821634635ull}}, {{14234829794454173307ull, 306499108173177ull}}, {{16340786934081862461ull, 153249554086588ull}}, {{8170393467040931230ull, 76624777043294ull}}, {{3958479187785552922ull, 383123885216472ull}}, {{1979239593892776461ull, 191561942608236ull}}, {{989619796946388230ull, 95780971304118ull}}, {{4948098984731941152ull, 478904856520590ull}}, {{2474049492365970576ull, 239452428260295ull}}, {{10460396783037761096ull, 119726214130147ull}}, {{14453570428373656356ull, 59863107065073ull}}, {{16927619920739626932ull, 299315535325368ull}}, {{8463809960369813466ull, 149657767662684ull}}, {{4231904980184906733ull, 74828883831342ull}}, {{2712780827214982049ull, 374144419156711ull}}, {{10579762450462266832ull, 187072209578355ull}}, {{14513253262085909224ull, 93536104789177ull}}, {{17226034089300891273ull, 467680523945888ull}}, {{8613017044650445636ull, 233840261972944ull}}, {{4306508522325222818ull, 116920130986472ull}}, {{2153254261162611409ull, 58460065493236ull}}, {{10766271305813057046ull, 292300327466180ull}}, {{5383135652906528523ull, 146150163733090ull}}, {{2691567826453264261ull, 73075081866545ull}}, {{13457839132266321307ull, 365375409332725ull}}, {{15952291602987936461ull, 182687704666362ull}}, {{7976145801493968230ull, 91343852333181ull}}, {{2987240860050737922ull, 456719261665907ull}}, {{10716992466880144769ull, 228359630832953ull}}, {{14581868270294848192ull, 114179815416476ull}}, {{7290934135147424096ull, 57089907708238ull}}, {{18007926602027568865ull, 285449538541191ull}}, {{18227335337868560240ull, 142724769270595ull}}, {{18337039705789055928ull, 71362384635297ull}}, {{17898222234107073178ull, 356811923176489ull}}, {{18172483153908312397ull, 178405961588244ull}}, {{9086241576954156198ull, 89202980794122ull}}, {{8537719737351677760ull, 446014903970612ull}}, {{4268859868675838880ull, 223007451985306ull}}, {{2134429934337919440ull, 111503725992653ull}}, {{10672149671689597200ull, 557518629963265ull}}, {{14559446872699574408ull, 278759314981632ull}}, {{7279723436349787204ull, 139379657490816ull}}, {{3639861718174893602ull, 69689828745408ull}}, {{18199308590874468010ull, 348449143727040ull}}, {{9099654295437234005ull, 174224571863520ull}}, {{4549827147718617002ull, 87112285931760ull}}, {{4302391664883533397ull, 435561429658801ull}}, {{11374567869296542506ull, 217780714829400ull}}, {{5687283934648271253ull, 108890357414700ull}}, {{9989675599531804650ull, 544451787073501ull}}, {{14218209836620678133ull, 272225893536750ull}}, {{7109104918310339066ull, 136112946768375ull}}, {{12777924496009945341ull, 68056473384187ull}}, {{8549390258921071858ull, 340282366920938ull}}, {{4274695129460535929ull, 170141183460469ull}}, {{11360719601585043772ull, 85070591730234ull}}, {{1463365786796564015ull, 425352958651173ull}}, {{9955054930253057815ull, 212676479325586ull}}, {{4977527465126528907ull, 106338239662793ull}}, {{6440893251923092922ull, 531691198313966ull}}, {{3220446625961546461ull, 265845599156983ull}}, {{10833595349835549038ull, 132922799578491ull}}, {{14640169711772550327ull, 66461399789245ull}}, {{17860616337734096788ull, 332306998946228ull}}, {{8930308168867048394ull, 166153499473114ull}}, {{4465154084433524197ull, 83076749736557ull}}, {{3879026348458069369ull, 415383748682786ull}}, {{1939513174229034684ull, 207691874341393ull}}, {{10193128623969293150ull, 103845937170696ull}}, {{14072154972427362520ull, 519229685853482ull}}, {{7036077486213681260ull, 259614842926741ull}}, {{12741410779961616438ull, 129807421463370ull}}, {{6370705389980808219ull, 64903710731685ull}}, {{13406782876194489479ull, 324518553658426ull}}, {{6703391438097244739ull, 162259276829213ull}}, {{12575067755903398177ull, 81129638414606ull}}, {{7535106558388336041ull, 405648192073033ull}}, {{12990925316048943828ull, 202824096036516ull}}, {{6495462658024471914ull, 101412048018258ull}}, {{14030569216412807955ull, 507060240091291ull}}, {{16238656645061179785ull, 253530120045645ull}}, {{17342700359385365700ull, 126765060022822ull}}, {{8671350179692682850ull, 63382530011411ull}}, {{6463262751044311020ull, 316912650057057ull}}, {{12455003412376931318ull, 158456325028528ull}}, {{6227501706188465659ull, 79228162514264ull}}, {{12690764457232776679ull, 396140812571321ull}}, {{15568754265471164147ull, 198070406285660ull}}, {{7784377132735582073ull, 99035203142830ull}}, {{2028397516258807136ull, 495176015714152ull}}, {{1014198758129403568ull, 247588007857076ull}}, {{507099379064701784ull, 123794003928538ull}}, {{253549689532350892ull, 61897001964269ull}}, {{1267748447661754460ull, 309485009821345ull}}, {{9857246260685653038ull, 154742504910672ull}}, {{4928623130342826519ull, 77371252455336ull}}, {{6196371578004580979ull, 386856262276681ull}}, {{12321557825857066297ull, 193428131138340ull}}, {{6160778912928533148ull, 96714065569170ull}}, {{12357150490933114128ull, 483570327845851ull}}, {{15401947282321332872ull, 241785163922925ull}}, {{16924345678015442244ull, 120892581961462ull}}, {{8462172839007721122ull, 60446290980731ull}}, {{5417376047619502378ull, 302231454903657ull}}, {{11932060060664526997ull, 151115727451828ull}}, {{5966030030332263498ull, 75557863725914ull}}, {{11383406077951765876ull, 377789318629571ull}}, {{14915075075830658746ull, 188894659314785ull}}, {{16680909574770105181ull, 94447329657392ull}}, {{9617571579012319442ull, 472236648286964ull}}, {{4808785789506159721ull, 236118324143482ull}}, {{2404392894753079860ull, 118059162071741ull}}, {{10425568484231315738ull, 59029581035870ull}}, {{15234354273737475459ull, 295147905179352ull}}, {{7617177136868737729ull, 147573952589676ull}}, {{3808588568434368864ull, 73786976294838ull}}, {{596198768462292708ull, 368934881474191ull}}, {{9521471421085922162ull, 184467440737095ull}}, {{13984107747397736889ull, 92233720368547ull}}, {{14580306515860029597ull, 461168601842738ull}}, {{7290153257930014798ull, 230584300921369ull}}, {{12868448665819783207ull, 115292150460684ull}}, {{6434224332909891603ull, 57646075230342ull}}, {{13724377590839906402ull, 288230376151711ull}}, {{16085560832274729009ull, 144115188075855ull}}, {{17266152452992140312ull, 72057594037927ull}}, {{12543785970122495098ull, 360287970189639ull}}, {{15495265021916023357ull, 180143985094819ull}}, {{16971004547812787486ull, 90071992547409ull}}, {{11068046444225730969ull, 450359962737049ull}}, {{14757395258967641292ull, 225179981368524ull}}, {{7378697629483820646ull, 112589990684262ull}}, {{3689348814741910323ull, 56294995342131ull}}, {{18446744073709551615ull, 281474976710655ull}}, {{18446744073709551615ull, 140737488355327ull}}, {{18446744073709551615ull, 70368744177663ull}}, {{18446744073709551615ull, 351843720888319ull}}, {{18446744073709551615ull, 175921860444159ull}}, {{18446744073709551615ull, 87960930222079ull}}, {{18446744073709551615ull, 439804651110399ull}}, {{18446744073709551615ull, 219902325555199ull}}, {{18446744073709551615ull, 109951162777599ull}}, {{18446744073709551615ull, 549755813887999ull}}, {{18446744073709551615ull, 274877906943999ull}}, {{18446744073709551615ull, 137438953471999ull}}, {{18446744073709551615ull, 68719476735999ull}}, {{18446744073709551615ull, 343597383679999ull}}, {{18446744073709551615ull, 171798691839999ull}}, {{18446744073709551615ull, 85899345919999ull}}, {{18446744073709551615ull, 429496729599999ull}}, {{18446744073709551615ull, 214748364799999ull}}, {{18446744073709551615ull, 107374182399999ull}}, {{18446744073709551615ull, 536870911999999ull}}, {{18446744073709551615ull, 268435455999999ull}}, {{18446744073709551615ull, 134217727999999ull}}, {{18446744073709551615ull, 67108863999999ull}}, {{18446744073709551615ull, 335544319999999ull}}, {{18446744073709551615ull, 167772159999999ull}}, {{18446744073709551615ull, 83886079999999ull}}, {{18446744073709551615ull, 419430399999999ull}}, {{18446744073709551615ull, 209715199999999ull}}, {{18446744073709551615ull, 104857599999999ull}}, {{18446744073709551615ull, 524287999999999ull}}, {{18446744073709551615ull, 262143999999999ull}}, {{18446744073709551615ull, 131071999999999ull}}, {{18446744073709551615ull, 65535999999999ull}}, {{18446744073709551615ull, 327679999999999ull}}, {{18446744073709551615ull, 163839999999999ull}}, {{18446744073709551615ull, 81919999999999ull}}, {{18446744073709551615ull, 409599999999999ull}}, {{18446744073709551615ull, 204799999999999ull}}, {{18446744073709551615ull, 102399999999999ull}}, {{18446744073709551615ull, 511999999999999ull}}, {{18446744073709551615ull, 255999999999999ull}}, {{18446744073709551615ull, 127999999999999ull}}, {{18446744073709551615ull, 63999999999999ull}}, {{18446744073709551615ull, 319999999999999ull}}, {{18446744073709551615ull, 159999999999999ull}}, {{18446744073709551615ull, 79999999999999ull}}, {{18446744073709551615ull, 399999999999999ull}}, {{18446744073709551615ull, 199999999999999ull}}, {{18446744073709551615ull, 99999999999999ull}}, {{18446744073709551615ull, 499999999999999ull}}, {{18446744073709551615ull, 249999999999999ull}}, {{18446744073709551615ull, 124999999999999ull}}, {{18446744073709551615ull, 62499999999999ull}}, {{18446744073709551615ull, 312499999999999ull}}, {{18446744073709551615ull, 156249999999999ull}}, {{18446744073709551615ull, 78124999999999ull}}, {{18446744073709551615ull, 390624999999999ull}}, {{18446744073709551615ull, 195312499999999ull}}, {{18446744073709551615ull, 97656249999999ull}}, {{18446744073709551615ull, 488281249999999ull}}, {{18446744073709551615ull, 244140624999999ull}}, {{18446744073709551615ull, 122070312499999ull}}, {{18446744073709551615ull, 61035156249999ull}}, {{18446744073709551615ull, 305175781249999ull}}, {{18446744073709551615ull, 152587890624999ull}}, {{18446744073709551615ull, 76293945312499ull}}, {{18446744073709551615ull, 381469726562499ull}}, {{18446744073709551615ull, 190734863281249ull}}, {{18446744073709551615ull, 95367431640624ull}}, {{18446744073709551615ull, 476837158203124ull}}, {{9223372036854775807ull, 238418579101562ull}}, {{4611686018427387903ull, 119209289550781ull}}, {{11529215046068469759ull, 59604644775390ull}}, {{2305843009213693951ull, 298023223876953ull}}, {{10376293541461622783ull, 149011611938476ull}}, {{5188146770730811391ull, 74505805969238ull}}, {{7493989779944505343ull, 372529029846191ull}}, {{12970366926827028479ull, 186264514923095ull}}, {{15708555500268290047ull, 93132257461547ull}}, {{4755801206503243775ull, 465661287307739ull}}, {{11601272640106397695ull, 232830643653869ull}}, {{15024008356907974655ull, 116415321826934ull}}, {{7512004178453987327ull, 58207660913467ull}}, {{666532744850833407ull, 291038304567337ull}}, {{9556638409280192511ull, 145519152283668ull}}, {{4778319204640096255ull, 72759576141834ull}}, {{5444851949490929663ull, 363797880709171ull}}, {{11945798011600240639ull, 181898940354585ull}}, {{15196271042654896127ull, 90949470177292ull}}, {{2194378918436274175ull, 454747350886464ull}}, {{1097189459218137087ull, 227373675443232ull}}, {{548594729609068543ull, 113686837721616ull}}, {{274297364804534271ull, 56843418860808ull}}, {{1371486824022671359ull, 284217094304040ull}}, {{685743412011335679ull, 142108547152020ull}}, {{342871706005667839ull, 71054273576010ull}}, {{1714358530028339199ull, 355271367880050ull}}, {{857179265014169599ull, 177635683940025ull}}, {{9651961669361860607ull, 88817841970012ull}}, {{11366320199390199807ull, 444089209850062ull}}, {{5683160099695099903ull, 222044604925031ull}}, {{12064952086702325759ull, 111022302462515ull}}, {{4984528212382973951ull, 555111512312578ull}}, {{2492264106191486975ull, 277555756156289ull}}, {{10469504089950519295ull, 138777878078144ull}}, {{5234752044975259647ull, 69388939039072ull}}, {{7727016151166746623ull, 346944695195361ull}}, {{13086880112438149119ull, 173472347597680ull}}, {{6543440056219074559ull, 86736173798840ull}}, {{14270456207385821183ull, 433680868994201ull}}, {{16358600140547686399ull, 216840434497100ull}}, {{8179300070273843199ull, 108420217248550ull}}, {{4003012203950112767ull, 542101086242752ull}}, {{2001506101975056383ull, 271050543121376ull}}, {{1000753050987528191ull, 135525271560688ull}}, {{500376525493764095ull, 67762635780344ull}}, {{2501882627468820479ull, 338813178901720ull}}, {{1250941313734410239ull, 169406589450860ull}}, {{625470656867205119ull, 84703294725430ull}}, {{3127353284336025599ull, 423516473627150ull}}, {{1563676642168012799ull, 211758236813575ull}}, {{10005210357938782207ull, 105879118406787ull}}, {{13132563642274807807ull, 529395592033937ull}}, {{15789653857992179711ull, 264697796016968ull}}, {{7894826928996089855ull, 132348898008484ull}}, {{3947413464498044927ull, 66174449004242ull}}, {{1290323248780673023ull, 330872245021211ull}}, {{9868533661245112319ull, 165436122510605ull}}, {{14157638867477331967ull, 82718061255302ull}}, {{15447962116258004991ull, 413590306276513ull}}, {{16947353094983778303ull, 206795153138256ull}}, {{8473676547491889151ull, 103397576569128ull}}, {{5474894590040342527ull, 516987882845642ull}}, {{2737447295020171263ull, 258493941422821ull}}, {{10592095684364861439ull, 129246970711410ull}}, {{5296047842182430719ull, 64623485355705ull}}, {{8033495137202601983ull, 323117426778526ull}}, {{4016747568601300991ull, 161558713389263ull}}, {{11231745821155426303ull, 80779356694631ull}}, {{818496884648476671ull, 403896783473158ull}}, {{409248442324238335ull, 201948391736579ull}}, {{9427996258016894975ull, 100974195868289ull}}, {{10246493142665371647ull, 504870979341447ull}}, {{14346618608187461631ull, 252435489670723ull}}, {{16396681340948506623ull, 126217744835361ull}}, {{17421712707329029119ull, 63108872417680ull}}, {{13321587241806939135ull, 315544362088404ull}}, {{6660793620903469567ull, 157772181044202ull}}, {{3330396810451734783ull, 78886090522101ull}}, {{16651984052258673919ull, 394430452610505ull}}, {{17549364062984112767ull, 197215226305252ull}}, {{8774682031492056383ull, 98607613152626ull}}, {{6979922010041178687ull, 493038065763132ull}}, {{3489961005020589343ull, 246519032881566ull}}, {{1744980502510294671ull, 123259516440783ull}}, {{10095862288109923143ull, 61629758220391ull}}, {{13585823293130512487ull, 308148791101957ull}}, {{16016283683420032051ull, 154074395550978ull}}, {{8008141841710016025ull, 77037197775489ull}}, {{3147221061130976897ull, 385185988877447ull}}, {{10796982567420264256ull, 192592994438723ull}}, {{14621863320564907936ull, 96296497219361ull}}, {{17769084381695884834ull, 481482486096808ull}}, {{8884542190847942417ull, 240741243048404ull}}, {{4442271095423971208ull, 120370621524202ull}}, {{2221135547711985604ull, 60185310762101ull}}, {{11105677738559928021ull, 300926553810505ull}}, {{14776210906134739818ull, 150463276905252ull}}, {{7388105453067369909ull, 75231638452626ull}}, {{47039117917746314ull, 376158192263132ull}}, {{23519558958873157ull, 188079096131566ull}}, {{11759779479436578ull, 94039548065783ull}}, {{58798897397182893ull, 470197740328915ull}}, {{9252771485553367254ull, 235098870164457ull}}, {{13849757779631459435ull, 117549435082228ull}}, {{6924878889815729717ull, 58774717541114ull}}, {{16177650375369096972ull, 293873587705571ull}}, {{17312197224539324294ull, 146936793852785ull}}, {{17879470649124437955ull, 73468396926392ull}}, {{15610376950783983311ull, 367341984631964ull}}, {{7805188475391991655ull, 183670992315982ull}}, {{3902594237695995827ull, 91835496157991ull}}, {{1066227114770427523ull, 459177480789956ull}}, {{533113557385213761ull, 229588740394978ull}}, {{266556778692606880ull, 114794370197489ull}}, {{9356650426201079248ull, 57397185098744ull}}, {{9889763983586293010ull, 286985925493722ull}}, {{4944881991793146505ull, 143492962746861ull}}, {{11695813032751349060ull, 71746481373430ull}}, {{3138832942628090454ull, 358732406867153ull}}, {{10792788508168821035ull, 179366203433576ull}}, {{5396394254084410517ull, 89683101716788ull}}, {{8535227196712500972ull, 448415508583941ull}}, {{13490985635211026294ull, 224207754291970ull}}, {{6745492817605513147ull, 112103877145985ull}}, {{15280720014318014119ull, 560519385729926ull}}, {{7640360007159007059ull, 280259692864963ull}}, {{13043552040434279337ull, 140129846432481ull}}, {{15745148057071915476ull, 70064923216240ull}}, {{4938763990521370920ull, 350324616081204ull}}, {{2469381995260685460ull, 175162308040602ull}}, {{1234690997630342730ull, 87581154020301ull}}, {{6173454988151713650ull, 437905770101505ull}}, {{12310099530930632633ull, 218952885050752ull}}, {{6155049765465316316ull, 109476442525376ull}}, {{12328504753617029967ull, 547382212626881ull}}, {{15387624413663290791ull, 273691106313440ull}}, {{7693812206831645395ull, 136845553156720ull}}, {{3846906103415822697ull, 68422776578360ull}}, {{787786443369561873ull, 342113882891801ull}}, {{9617265258539556744ull, 171056941445900ull}}, {{4808632629269778372ull, 85528470722950ull}}, {{5596419072639340246ull, 427642353614751ull}}, {{12021581573174445931ull, 213821176807375ull}}, {{15234162823441998773ull, 106910588403687ull}}, {{2383837822371787403ull, 534552942018439ull}}, {{10415290948040669509ull, 267276471009219ull}}, {{14431017510875110562ull, 133638235504609ull}}, {{16438880792292331089ull, 66819117752304ull}}, {{8407427666623448983ull, 334095588761524ull}}, {{4203713833311724491ull, 167047794380762ull}}, {{2101856916655862245ull, 83523897190381ull}}, {{10509284583279311229ull, 417619485951905ull}}, {{14478014328494431422ull, 208809742975952ull}}, {{7239007164247215711ull, 104404871487976ull}}, {{17748291747526526940ull, 522024357439881ull}}, {{18097517910618039278ull, 261012178719940ull}}, {{9048758955309019639ull, 130506089359970ull}}, {{4524379477654509819ull, 65253044679985ull}}, {{4175153314562997481ull, 326265223399926ull}}, {{2087576657281498740ull, 163132611699963ull}}, {{10267160365495525178ull, 81566305849981ull}}, {{14442313680058522660ull, 407831529249907ull}}, {{16444528876884037138ull, 203915764624953ull}}, {{17445636475296794377ull, 101957882312476ull}}, {{13441206081645765421ull, 509789411562384ull}}, {{6720603040822882710ull, 254894705781192ull}}, {{3360301520411441355ull, 127447352890596ull}}, {{1680150760205720677ull, 63723676445298ull}}, {{8400753801028603388ull, 318618382226490ull}}, {{4200376900514301694ull, 159309191113245ull}}, {{11323560487111926655ull, 79654595556622ull}}, {{1277570214430978427ull, 398272977783113ull}}, {{9862157144070265021ull, 199136488891556ull}}, {{4931078572035132510ull, 99568244445778ull}}, {{6208648786466110938ull, 497841222228891ull}}, {{12327696430087831277ull, 248920611114445ull}}, {{15387220251898691446ull, 124460305557222ull}}, {{7693610125949345723ull, 62230152778611ull}}, {{1574562482327625384ull, 311150763893057ull}}, {{10010653278018588500ull, 155575381946528ull}}, {{5005326639009294250ull, 77787690973264ull}}, {{6579889121336919634ull, 388938454866321ull}}, {{12513316597523235625ull, 194469227433160ull}}, {{6256658298761617812ull, 97234613716580ull}}, {{12836547420098537447ull, 486173068582901ull}}, {{15641645746904044531ull, 243086534291450ull}}, {{7820822873452022265ull, 121543267145725ull}}, {{13133783473580786940ull, 60771633572862ull}}, {{10328685146775279856ull, 303858167864313ull}}, {{14387714610242415736ull, 151929083932156ull}}, {{7193857305121207868ull, 75964541966078ull}}, {{17522542451896487724ull, 379822709830391ull}}, {{17984643262803019670ull, 189911354915195ull}}, {{18215693668256285643ull, 94955677457597ull}}, {{17291492046443221751ull, 474778387287989ull}}, {{17869118060076386683ull, 237389193643994ull}}, {{8934559030038193341ull, 118694596821997ull}}, {{13690651551873872478ull, 59347298410998ull}}, {{13113025538240707546ull, 296736492054993ull}}, {{15779884805975129581ull, 148368246027496ull}}, {{7889942402987564790ull, 74184123013748ull}}, {{2556223867518720721ull, 370920615068742ull}}, {{1278111933759360360ull, 185460307534371ull}}, {{9862428003734455988ull, 92730153767185ull}}, {{12418651871253176710ull, 463650768835927ull}}, {{15432697972481364163ull, 231825384417963ull}}, {{16939721023095457889ull, 115912692208981ull}}, {{17693232548402504752ull, 57956346104490ull}}, {{14679186447174317299ull, 289781730522454ull}}, {{7339593223587158649ull, 144890865261227ull}}, {{12893168648648355132ull, 72445432630613ull}}, {{9125611022113120816ull, 362227163153068ull}}, {{4562805511056560408ull, 181113581576534ull}}, {{2281402755528280204ull, 90556790788267ull}}, {{11407013777641401020ull, 452783953941335ull}}, {{14926878925675476318ull, 226391976970667ull}}, {{16686811499692513967ull, 113195988485333ull}}, {{17566777786701032791ull, 56597994242666ull}}, {{14046912638666957494ull, 282989971213334ull}}, {{7023456319333478747ull, 141494985606667ull}}, {{12735100196521515181ull, 70747492803333ull}}, {{8335268761478921059ull, 353737464016668ull}}, {{4167634380739460529ull, 176868732008334ull}}, {{2083817190369730264ull, 88434366004167ull}}, {{10419085951848651324ull, 442171830020835ull}}, {{14432915012779101470ull, 221085915010417ull}}, {{16439829543244326543ull, 110542957505208ull}}, {{8412171421383426251ull, 552714787526044ull}}, {{4206085710691713125ull, 276357393763022ull}}, {{2103042855345856562ull, 138178696881511ull}}, {{10274893464527704089ull, 69089348440755ull}}, {{14480979175219417215ull, 345446742203777ull}}, {{16463861624464484415ull, 172723371101888ull}}, {{8231930812232242207ull, 86361685550944ull}}, {{4266165913742107807ull, 431808427754722ull}}, {{2133082956871053903ull, 215904213877361ull}}, {{10289913515290302759ull, 107952106938680ull}}, {{14556079429032410566ull, 539760534693402ull}}, {{7278039714516205283ull, 269880267346701ull}}, {{12862391894112878449ull, 134940133673350ull}}, {{6431195947056439224ull, 67470066836675ull}}, {{13709235661572644508ull, 337350334183376ull}}, {{6854617830786322254ull, 168675167091688ull}}, {{3427308915393161127ull, 84337583545844ull}}, {{17136544576965805635ull, 421687917729220ull}}, {{8568272288482902817ull, 210843958864610ull}}, {{4284136144241451408ull, 105421979432305ull}}, {{2973936647497705428ull, 527109897161526ull}}, {{1486968323748852714ull, 263554948580763ull}}, {{9966856198729202165ull, 131777474290381ull}}, {{14206800136219376890ull, 65888737145190ull}}, {{15693768459968229604ull, 329443685725953ull}}, {{17070256266838890610ull, 164721842862976ull}} }; static const int bid_exponents_bid32[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 64, 64, 64, 65, 65, 65, 66, 66, 66, 66, 67, 67, 67, 68, 68, 68, 69, 69, 69, 69, 70, 70, 70, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 74, 74, 74, 75, 75, 75, 75, 76, 76, 76, 77, 77, 77, 78, 78, 78, 78, 79, 79, 79, 80, 80, 80, 81, 81, 81, 81, 82, 82, 82, 83, 83, 83, 84, 84, 84, 84, 85, 85, 85, 86, 86, 86, 87, 87, 87, 87, 88, 88, 88, 89, 89, 89, 90, 90, 90, 90, 91, 91, 91, 92, 92, 92, 93, 93, 93, 93, 94, 94, 94, 95, 95, 95, 96, 96, 96, 97, 97, 97, 97, 98, 98, 98, 99, 99, 99, 100, 100, 100, 100, 101, 101, 101, 102, 102, 102, 103, 103, 103, 103, 104, 104, 104, 105, 105, 105, 106, 106, 106, 106, 107, 107, 107, 108, 108, 108, 109, 109, 109, 109, 110, 110, 110, 111, 111, 111, 112, 112, 112, 112, 113, 113, 113, 114, 114, 114, 115, 115, 115, 115, 116, 116, 116, 117, 117, 117, 118, 118, 118, 118, 119, 119, 119, 120, 120, 120, 121, 121, 121, 121, 122, 122, 122, 123, 123, 123, 124, 124, 124, 125, 125, 125, 125, 126, 126, 126, 127, 127, 127, 128, 128, 128, 128, 129, 129, 129, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 133, 133, 133, 134, 134, 134, 134, 135, 135, 135, 136, 136, 136, 137, 137, 137, 137, 138, 138, 138, 139, 139, 139, 140, 140, 140, 140, 141, 141, 141, 142, 142, 142, 143, 143, 143, 143, 144, 144, 144, 145, 145, 145, 146, 146, 146, 146, 147, 147, 147, 148, 148, 148, 149, 149, 149, 149, 150, 150, 150, 151, 151, 151, 152, 152, 152, 153, 153, 153, 153, 154, 154, 154, 155, 155, 155, 156, 156, 156, 156, 157, 157, 157, 158, 158, 158, 159, 159, 159, 159, 160, 160, 160, 161, 161, 161, 162, 162, 162, 162, 163, 163, 163, 164, 164, 164, 165, 165, 165, 165, 166, 166, 166, 167, 167, 167, 168, 168, 168, 168, 169, 169, 169, 170, 170, 170, 171, 171, 171, 171, 172, 172, 172, 173, 173, 173, 174, 174, 174, 174, 175, 175, 175, 176, 176, 176, 177, 177, 177, 177, 178, 178, 178, 179, 179, 179, 180, 180, 180, 180, 181, 181, 181, 182, 182, 182, 183, 183, 183, 184, 184, 184, 184, 185, 185, 185, 186, 186, 186, 187, 187, 187, 187, 188, 188, 188, 189, 189, 189, 190, 190, 190, 190, 191, 191, }; static const BID_UINT256 bid_multipliers1_bid32[] = { {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{8022453891189237964ull, 4305922861044245892ull, 15091728617112590342ull, 392727477223ull}}, {{16044907782378475927ull, 8611845722088491784ull, 11736713160515629068ull, 785454954447ull}}, {{13643071491047400238ull, 17223691444176983569ull, 5026682247321706520ull, 1570909908895ull}}, {{8839398908385248859ull, 16000638814644415523ull, 10053364494643413041ull, 3141819817790ull}}, {{16525275040644691065ull, 6889476577670793427ull, 2010672898928682608ull, 628363963558ull}}, {{14603806007579830513ull, 13778953155341586855ull, 4021345797857365216ull, 1256727927116ull}}, {{10760867941450109410ull, 9111162236973622095ull, 8042691595714730433ull, 2513455854232ull}}, {{2152173588290021882ull, 1822232447394724419ull, 8987235948626766733ull, 502691170846ull}}, {{4304347176580043764ull, 3644464894789448838ull, 17974471897253533466ull, 1005382341692ull}}, {{8608694353160087528ull, 7288929789578897676ull, 17502199720797515316ull, 2010764683385ull}}, {{9100436500115838152ull, 5147134772657689858ull, 3500439944159503063ull, 402152936677ull}}, {{18200873000231676304ull, 10294269545315379716ull, 7000879888319006126ull, 804305873354ull}}, {{17955001926753800992ull, 2141795016921207817ull, 14001759776638012253ull, 1608611746708ull}}, {{17463259779798050368ull, 4283590033842415635ull, 9556775479566472890ull, 3217223493417ull}}, {{10871349585443430720ull, 8235415636252303773ull, 9290052725397115224ull, 643444698683ull}}, {{3295955097177309824ull, 16470831272504607547ull, 133361377084678832ull, 1286889397367ull}}, {{6591910194354619648ull, 14494918471299663478ull, 266722754169357665ull, 2573778794734ull}}, {{8697079668354744576ull, 17656378953227573988ull, 14810739809801512825ull, 514755758946ull}}, {{17394159336709489152ull, 16866013832745596360ull, 11174735545893474035ull, 1029511517893ull}}, {{16341574599709426688ull, 15285283591781641105ull, 3902727018077396455ull, 2059023035787ull}}, {{10647012549425705984ull, 10435754347840148867ull, 8159243033099299937ull, 411804607157ull}}, {{2847281025141860352ull, 2424764621970746119ull, 16318486066198599875ull, 823609214314ull}}, {{5694562050283720704ull, 4849529243941492238ull, 14190228058687648134ull, 1647218428629ull}}, {{4828261224798654464ull, 12037952293014029417ull, 17595440870705170919ull, 329443685725ull}}, {{9656522449597308928ull, 5629160512318507218ull, 16744137667700790223ull, 658887371451ull}}, {{866300825485066240ull, 11258321024637014437ull, 15041531261692028830ull, 1317774742903ull}}, {{1732601650970132480ull, 4069897975564477258ull, 11636318449674506045ull, 2635549485807ull}}, {{346520330194026496ull, 8192677224596716098ull, 9705961319418721855ull, 527109897161ull}}, {{693040660388052992ull, 16385354449193432196ull, 965178565127892094ull, 1054219794323ull}}, {{1386081320776105984ull, 14323964824677312776ull, 1930357130255784189ull, 2108439588646ull}}, {{3966565078897131520ull, 2864792964935462555ull, 4075420240793067161ull, 421687917729ull}}, {{7933130157794263040ull, 5729585929870925110ull, 8150840481586134322ull, 843375835458ull}}, {{15866260315588526080ull, 11459171859741850220ull, 16301680963172268644ull, 1686751670916ull}}, {{3173252063117705216ull, 2291834371948370044ull, 6949685007376364052ull, 337350334183ull}}, {{6346504126235410432ull, 4583668743896740088ull, 13899370014752728104ull, 674700668366ull}}, {{12693008252470820864ull, 9167337487793480176ull, 9351995955795904592ull, 1349401336733ull}}, {{6939272431232090112ull, 18334674975586960353ull, 257247837882257568ull, 2698802673467ull}}, {{12455900930472148992ull, 3666934995117392070ull, 7430147197060272160ull, 539760534693ull}}, {{6465057787234746368ull, 7333869990234784141ull, 14860294394120544320ull, 1079521069386ull}}, {{12930115574469492736ull, 14667739980469568282ull, 11273844714531537024ull, 2159042138773ull}}, {{17343418373861539840ull, 10312245625577734302ull, 13322815387132038374ull, 431808427754ull}}, {{16240092674013528064ull, 2177747177445916989ull, 8198886700554525133ull, 863616855509ull}}, {{14033441274317504512ull, 4355494354891833979ull, 16397773401109050266ull, 1727233711018ull}}, {{13874734699089231872ull, 15628494129946008088ull, 14347601124447541022ull, 345446742203ull}}, {{9302725324468912128ull, 12810244186182464561ull, 10248458175185530429ull, 690893484407ull}}, {{158706575228272640ull, 7173744298655377507ull, 2050172276661509243ull, 1381786968815ull}}, {{317413150456545280ull, 14347488597310755014ull, 4100344553323018486ull, 2763573937630ull}}, {{63482630091309056ull, 6558846534204061326ull, 820068910664603697ull, 552714787526ull}}, {{126965260182618112ull, 13117693068408122652ull, 1640137821329207394ull, 1105429575052ull}}, {{253930520365236224ull, 7788642063106693688ull, 3280275642658414789ull, 2210859150104ull}}, {{3740134918814957568ull, 12625774856847069707ull, 15413450387499324250ull, 442171830020ull}}, {{7480269837629915136ull, 6804805639984587798ull, 12380156701289096885ull, 884343660041ull}}, {{14960539675259830272ull, 13609611279969175596ull, 6313569328868642154ull, 1768687320083ull}}, {{14060154379277697024ull, 10100619885477655765ull, 12330760309999459400ull, 353737464016ull}}, {{9673564684845842432ull, 1754495697245759915ull, 6214776546289367185ull, 707474928033ull}}, {{900385295982133248ull, 3508991394491519831ull, 12429553092578734370ull, 1414949856066ull}}, {{1800770591964266496ull, 7017982788983039662ull, 6412362111447917124ull, 2829899712133ull}}, {{15117549377360494592ull, 8782294187280428578ull, 12350518866515314394ull, 565979942426ull}}, {{11788354681011437568ull, 17564588374560857157ull, 6254293659321077172ull, 1131959884853ull}}, {{5129965288313323520ull, 16682432675412162699ull, 12508587318642154345ull, 2263919769706ull}}, {{1025993057662664704ull, 7025835349824342863ull, 6191066278470341192ull, 452783953941ull}}, {{2051986115325329408ull, 14051670699648685726ull, 12382132556940682384ull, 905567907882ull}}, {{4103972230650658816ull, 9656597325587819836ull, 6317521040171813153ull, 1811135815765ull}}, {{15578189705097773056ull, 12999365909343294936ull, 1263504208034362630ull, 362227163153ull}}, {{12709635336485994496ull, 7551987744977038257ull, 2527008416068725261ull, 724454326306ull}}, {{6972526599262437376ull, 15103975489954076515ull, 5054016832137450522ull, 1448908652612ull}}, {{13945053198524874752ull, 11761206906198601414ull, 10108033664274901045ull, 2897817305224ull}}, {{13857057083930705920ull, 17109636640207361575ull, 16779001991822621501ull, 579563461044ull}}, {{9267370094151860224ull, 15772529206705171535ull, 15111259909935691387ull, 1159126922089ull}}, {{87996114594168832ull, 13098314339700791455ull, 11775775746161831159ull, 2318253844179ull}}, {{11085645667144564736ull, 13687709312165889260ull, 17112550408200007524ull, 463650768835ull}}, {{3724547260579577856ull, 8928674550622226905ull, 15778356742690463433ull, 927301537671ull}}, {{7449094521159155712ull, 17857349101244453810ull, 13109969411671375250ull, 1854603075343ull}}, {{12557865348457562112ull, 14639516264474621731ull, 13690040326560006019ull, 370920615068ull}}, {{6668986623205572608ull, 10832288455239691847ull, 8933336579410460423ull, 741841230137ull}}, {{13337973246411145216ull, 3217832836769832078ull, 17866673158820920847ull, 1483682460274ull}}, {{8229202419112738816ull, 6435665673539664157ull, 17286602243932290078ull, 2967364920549ull}}, {{16403235742790189056ull, 8665830764191753477ull, 18214715707754099308ull, 593472984109ull}}, {{14359727411870826496ull, 17331661528383506955ull, 17982687341798647000ull, 1186945968219ull}}, {{10272710750032101376ull, 16216578983057462295ull, 17518630609887742385ull, 2373891936439ull}}, {{16811937408974061568ull, 18000711055579133751ull, 18261121380945189769ull, 474778387287ull}}, {{15177130744238571520ull, 17554678037448715887ull, 18075498688180827923ull, 949556774575ull}}, {{11907517414767591424ull, 16662612001187880159ull, 17704253302652104231ull, 1899113549151ull}}, {{6070852297695428608ull, 10711220029721396678ull, 7230199475272331169ull, 379822709830ull}}, {{12141704595390857216ull, 2975695985733241740ull, 14460398950544662339ull, 759645419660ull}}, {{5836665117072162816ull, 5951391971466483481ull, 10474053827379773062ull, 1519290839321ull}}, {{11673330234144325632ull, 11902783942932966962ull, 2501363581049994508ull, 3038581678643ull}}, {{13402712491054596096ull, 6069905603328503715ull, 11568319160435729871ull, 607716335728ull}}, {{8358680908399640576ull, 12139811206657007431ull, 4689894247161908126ull, 1215432671457ull}}, {{16717361816799281152ull, 5832878339604463246ull, 9379788494323816253ull, 2430865342914ull}}, {{14411518807585587200ull, 8545273297404713295ull, 16633352957832404543ull, 486173068582ull}}, {{10376293541461622784ull, 17090546594809426591ull, 14819961841955257470ull, 972346137165ull}}, {{2305843009213693952ull, 15734349115909301567ull, 11193179610200963325ull, 1944692274331ull}}, {{11529215046068469760ull, 6836218637923770636ull, 5927984736782102988ull, 388938454866ull}}, {{4611686018427387904ull, 13672437275847541273ull, 11855969473564205976ull, 777876909732ull}}, {{9223372036854775808ull, 8898130477985530930ull, 5265194873418860337ull, 1555753819465ull}}, {{0ull, 17796260955971061861ull, 10530389746837720674ull, 3111507638930ull}}, {{0ull, 18316647450161853665ull, 2106077949367544134ull, 622301527786ull}}, {{0ull, 18186550826614155714ull, 4212155898735088269ull, 1244603055572ull}}, {{0ull, 17926357579518759812ull, 8424311797470176539ull, 2489206111144ull}}, {{0ull, 14653317960129482932ull, 16442257618461676600ull, 497841222228ull}}, {{0ull, 10859891846549414248ull, 14437771163213801585ull, 995682444457ull}}, {{0ull, 3273039619389276880ull, 10428798252718051555ull, 1991364888915ull}}, {{0ull, 654607923877855376ull, 2085759650543610311ull, 398272977783ull}}, {{0ull, 1309215847755710752ull, 4171519301087220622ull, 796545955566ull}}, {{0ull, 2618431695511421504ull, 8343038602174441244ull, 1593091911132ull}}, {{0ull, 5236863391022843008ull, 16686077204348882488ull, 3186183822264ull}}, {{0ull, 8426070307688389248ull, 18094610699837417790ull, 637236764452ull}}, {{0ull, 16852140615376778496ull, 17742477325965283964ull, 1274473528905ull}}, {{0ull, 15257537157044005376ull, 17038210578221016313ull, 2548947057811ull}}, {{0ull, 17808902690376442368ull, 7096990930386113585ull, 509789411562ull}}, {{0ull, 17171061307043333120ull, 14193981860772227171ull, 1019578823124ull}}, {{0ull, 15895378540377114624ull, 9941219647834902727ull, 2039157646249ull}}, {{0ull, 6868424522817333248ull, 16745639188534621838ull, 407831529249ull}}, {{0ull, 13736849045634666496ull, 15044534303359692060ull, 815663058499ull}}, {{0ull, 9026954017559781376ull, 11642324533009832505ull, 1631326116999ull}}, {{0ull, 18053908035119562752ull, 4837904992310113394ull, 3262652233999ull}}, {{0ull, 14678828051249643520ull, 15724976257429663971ull, 652530446799ull}}, {{0ull, 10910912028789735424ull, 13003208441149776327ull, 1305060893599ull}}, {{0ull, 3375079983869919232ull, 7559672808590001039ull, 2610121787199ull}}, {{0ull, 11743062440999714816ull, 16269329820685641500ull, 522024357439ull}}, {{0ull, 5039380808289878016ull, 14091915567661731385ull, 1044048714879ull}}, {{0ull, 10078761616579756032ull, 9737087061613911154ull, 2088097429759ull}}, {{0ull, 13083798767541682176ull, 16704812671290423523ull, 417619485951ull}}, {{0ull, 7720853461373812736ull, 14962881268871295431ull, 835238971903ull}}, {{0ull, 15441706922747625472ull, 11479018464033039246ull, 1670477943807ull}}, {{0ull, 14156387828775256064ull, 9674501322290428495ull, 334095588761ull}}, {{0ull, 9866031583840960512ull, 902258570871305375ull, 668191177523ull}}, {{0ull, 1285319093972369408ull, 1804517141742610751ull, 1336382355046ull}}, {{0ull, 2570638187944738816ull, 3609034283485221502ull, 2672764710092ull}}, {{0ull, 15271522896556589056ull, 8100504486180864946ull, 534552942018ull}}, {{0ull, 12096301719403626496ull, 16201008972361729893ull, 1069105884036ull}}, {{0ull, 5745859365097701376ull, 13955273871013908171ull, 2138211768073ull}}, {{0ull, 15906567131987181568ull, 13859101218428512603ull, 427642353614ull}}, {{0ull, 13366390190264811520ull, 9271458363147473591ull, 855284707229ull}}, {{0ull, 8286036306820071424ull, 96172652585395567ull, 1710569414459ull}}, {{0ull, 5346556076105924608ull, 14776629789484720406ull, 342113882891ull}}, {{0ull, 10693112152211849216ull, 11106515505259889196ull, 684227765783ull}}, {{0ull, 2939480230714146816ull, 3766286936810226777ull, 1368455531567ull}}, {{0ull, 5878960461428293632ull, 7532573873620453554ull, 2736911063134ull}}, {{0ull, 12243838536511389696ull, 16263910033691732003ull, 547382212626ull}}, {{0ull, 6040932999313227776ull, 14081075993673912391ull, 1094764425253ull}}, {{0ull, 12081865998626455552ull, 9715407913638273166ull, 2189528850507ull}}, {{0ull, 13484419643951022080ull, 9321779212211475279ull, 437905770101ull}}, {{0ull, 8522095214192492544ull, 196814350713398943ull, 875811540203ull}}, {{0ull, 17044190428384985088ull, 393628701426797886ull, 1751623080406ull}}, {{0ull, 10787535715160817664ull, 3768074555027269900ull, 350324616081ull}}, {{0ull, 3128327356612083712ull, 7536149110054539801ull, 700649232162ull}}, {{0ull, 6256654713224167424ull, 15072298220109079602ull, 1401298464324ull}}, {{0ull, 12513309426448334848ull, 11697852366508607588ull, 2802596928649ull}}, {{0ull, 9881359514773487616ull, 17096965732269362810ull, 560519385729ull}}, {{0ull, 1315974955837423616ull, 15747187390829174005ull, 1121038771459ull}}, {{0ull, 2631949911674847232ull, 13047630707948796394ull, 2242077542919ull}}, {{0ull, 11594436426560700416ull, 17366921400557400571ull, 448415508583ull}}, {{0ull, 4742128779411849216ull, 16287098727405249527ull, 896831017167ull}}, {{0ull, 9484257558823698432ull, 14127453381100947438ull, 1793662034335ull}}, {{0ull, 12964897955990470656ull, 2825490676220189487ull, 358732406867ull}}, {{0ull, 7483051838271389696ull, 5650981352440378975ull, 717464813734ull}}, {{0ull, 14966103676542779392ull, 11301962704880757950ull, 1434929627468ull}}, {{0ull, 11485463279376007168ull, 4157181336051964285ull, 2869859254937ull}}, {{0ull, 9675790285359022080ull, 8210133896694213503ull, 573971850987ull}}, {{0ull, 904836497008492544ull, 16420267793388427007ull, 1147943701974ull}}, {{0ull, 1809672994016985088ull, 14393791513067302398ull, 2295887403949ull}}, {{0ull, 7740632228287217664ull, 17636153561581101772ull, 459177480789ull}}, {{0ull, 15481264456574435328ull, 16825563049452651928ull, 918354961579ull}}, {{0ull, 12515784839439319040ull, 15204382025195752241ull, 1836709923159ull}}, {{0ull, 2503156967887863808ull, 17798271664006791741ull, 367341984631ull}}, {{0ull, 5006313935775727616ull, 17149799254304031866ull, 734683969263ull}}, {{0ull, 10012627871551455232ull, 15852854434898512116ull, 1469367938527ull}}, {{0ull, 1578511669393358848ull, 13258964796087472617ull, 2938735877055ull}}, {{0ull, 7694399963362492416ull, 2651792959217494523ull, 587747175411ull}}, {{0ull, 15388799926724984832ull, 5303585918434989046ull, 1175494350822ull}}, {{0ull, 12330855779740418048ull, 10607171836869978093ull, 2350988701644ull}}, {{0ull, 9844868785431904256ull, 16878829626341636911ull, 470197740328ull}}, {{0ull, 1242993497154256896ull, 15310915178973722207ull, 940395480657ull}}, {{0ull, 2485986994308513792ull, 12175086284237892798ull, 1880790961315ull}}, {{0ull, 11565243843087433728ull, 2435017256847578559ull, 376158192263ull}}, {{0ull, 4683743612465315840ull, 4870034513695157119ull, 752316384526ull}}, {{0ull, 9367487224930631680ull, 9740069027390314238ull, 1504632769052ull}}, {{0ull, 288230376151711744ull, 1033393981071076861ull, 3009265538105ull}}, {{0ull, 3746994889972252672ull, 206678796214215372ull, 601853107621ull}}, {{0ull, 7493989779944505344ull, 413357592428430744ull, 1203706215242ull}}, {{0ull, 14987979559889010688ull, 826715184856861488ull, 2407412430484ull}}, {{0ull, 10376293541461622784ull, 14922738295939013590ull, 481482486096ull}}, {{0ull, 2305843009213693952ull, 11398732518168475565ull, 962964972193ull}}, {{0ull, 4611686018427387904ull, 4350720962627399514ull, 1925929944387ull}}, {{0ull, 4611686018427387904ull, 8248841822009300549ull, 385185988877ull}}, {{0ull, 9223372036854775808ull, 16497683644018601098ull, 770371977754ull}}, {{0ull, 0ull, 14548623214327650581ull, 1540743955509ull}}, {{0ull, 0ull, 10650502354945749546ull, 3081487911019ull}}, {{0ull, 0ull, 16887495729956791202ull, 616297582203ull}}, {{0ull, 0ull, 15328247386204030788ull, 1232595164407ull}}, {{0ull, 0ull, 12209750698698509960ull, 2465190328815ull}}, {{0ull, 0ull, 2441950139739701992ull, 493038065763ull}}, {{0ull, 0ull, 4883900279479403984ull, 986076131526ull}}, {{0ull, 0ull, 9767800558958807968ull, 1972152263052ull}}, {{0ull, 0ull, 9332257741275582240ull, 394430452610ull}}, {{0ull, 0ull, 217771408841612864ull, 788860905221ull}}, {{0ull, 0ull, 435542817683225728ull, 1577721810442ull}}, {{0ull, 0ull, 871085635366451456ull, 3155443620884ull}}, {{0ull, 0ull, 14931612386040931584ull, 631088724176ull}}, {{0ull, 0ull, 11416480698372311552ull, 1262177448353ull}}, {{0ull, 0ull, 4386217323035071488ull, 2524354896707ull}}, {{0ull, 0ull, 8255941094090834944ull, 504870979341ull}}, {{0ull, 0ull, 16511882188181669888ull, 1009741958682ull}}, {{0ull, 0ull, 14577020302653788160ull, 2019483917365ull}}, {{0ull, 0ull, 2915404060530757632ull, 403896783473ull}}, {{0ull, 0ull, 5830808121061515264ull, 807793566946ull}}, {{0ull, 0ull, 11661616242123030528ull, 1615587133892ull}}, {{0ull, 0ull, 4876488410536509440ull, 3231174267785ull}}, {{0ull, 0ull, 975297682107301888ull, 646234853557ull}}, {{0ull, 0ull, 1950595364214603776ull, 1292469707114ull}}, {{0ull, 0ull, 3901190728429207552ull, 2584939414228ull}}, {{0ull, 0ull, 11848284589911572480ull, 516987882845ull}}, {{0ull, 0ull, 5249825106113593344ull, 1033975765691ull}}, {{0ull, 0ull, 10499650212227186688ull, 2067951531382ull}}, {{0ull, 0ull, 9478627671929257984ull, 413590306276ull}}, {{0ull, 0ull, 510511270148964352ull, 827180612553ull}}, {{0ull, 0ull, 1021022540297928704ull, 1654361225106ull}}, {{0ull, 0ull, 3893553322801496064ull, 330872245021ull}}, {{0ull, 0ull, 7787106645602992128ull, 661744490042ull}}, {{0ull, 0ull, 15574213291205984256ull, 1323488980084ull}}, {{0ull, 0ull, 12701682508702416896ull, 2646977960169ull}}, {{0ull, 0ull, 17297731760708124672ull, 529395592033ull}}, {{0ull, 0ull, 16148719447706697728ull, 1058791184067ull}}, {{0ull, 0ull, 13850694821703843840ull, 2117582368135ull}}, {{0ull, 0ull, 2770138964340768768ull, 423516473627ull}}, {{0ull, 0ull, 5540277928681537536ull, 847032947254ull}}, {{0ull, 0ull, 11080555857363075072ull, 1694065894508ull}}, {{0ull, 0ull, 13284157615698345984ull, 338813178901ull}}, {{0ull, 0ull, 8121571157687140352ull, 677626357803ull}}, {{0ull, 0ull, 16243142315374280704ull, 1355252715606ull}}, {{0ull, 0ull, 14039540557039009792ull, 2710505431213ull}}, {{0ull, 0ull, 13875954555633532928ull, 542101086242ull}}, {{0ull, 0ull, 9305165037557514240ull, 1084202172485ull}}, {{0ull, 0ull, 163586001405476864ull, 2168404344971ull}}, {{0ull, 0ull, 3722066015023005696ull, 433680868994ull}}, {{0ull, 0ull, 7444132030046011392ull, 867361737988ull}}, {{0ull, 0ull, 14888264060092022784ull, 1734723475976ull}}, {{0ull, 0ull, 6667001626760314880ull, 346944695195ull}}, {{0ull, 0ull, 13334003253520629760ull, 693889390390ull}}, {{0ull, 0ull, 8221262433331707904ull, 1387778780781ull}}, {{0ull, 0ull, 16442524866663415808ull, 2775557561562ull}}, {{0ull, 0ull, 10667202602816503808ull, 555111512312ull}}, {{0ull, 0ull, 2887661131923456000ull, 1110223024625ull}}, {{0ull, 0ull, 5775322263846912000ull, 2220446049250ull}}, {{0ull, 0ull, 1155064452769382400ull, 444089209850ull}}, {{0ull, 0ull, 2310128905538764800ull, 888178419700ull}}, {{0ull, 0ull, 4620257811077529600ull, 1776356839400ull}}, {{0ull, 0ull, 924051562215505920ull, 355271367880ull}}, {{0ull, 0ull, 1848103124431011840ull, 710542735760ull}}, {{0ull, 0ull, 3696206248862023680ull, 1421085471520ull}}, {{0ull, 0ull, 7392412497724047360ull, 2842170943040ull}}, {{0ull, 0ull, 1478482499544809472ull, 568434188608ull}}, {{0ull, 0ull, 2956964999089618944ull, 1136868377216ull}}, {{0ull, 0ull, 5913929998179237888ull, 2273736754432ull}}, {{0ull, 0ull, 8561483629119668224ull, 454747350886ull}}, {{0ull, 0ull, 17122967258239336448ull, 909494701772ull}}, {{0ull, 0ull, 15799190442769121280ull, 1818989403545ull}}, {{0ull, 0ull, 3159838088553824256ull, 363797880709ull}}, {{0ull, 0ull, 6319676177107648512ull, 727595761418ull}}, {{0ull, 0ull, 12639352354215297024ull, 1455191522836ull}}, {{0ull, 0ull, 6831960634721042432ull, 2910383045673ull}}, {{0ull, 0ull, 12434438571169939456ull, 582076609134ull}}, {{0ull, 0ull, 6422133068630327296ull, 1164153218269ull}}, {{0ull, 0ull, 12844266137260654592ull, 2328306436538ull}}, {{0ull, 0ull, 13636899671677861888ull, 465661287307ull}}, {{0ull, 0ull, 8827055269646172160ull, 931322574615ull}}, {{0ull, 0ull, 17654110539292344320ull, 1862645149230ull}}, {{0ull, 0ull, 3530822107858468864ull, 372529029846ull}}, {{0ull, 0ull, 7061644215716937728ull, 745058059692ull}}, {{0ull, 0ull, 14123288431433875456ull, 1490116119384ull}}, {{0ull, 0ull, 9799832789158199296ull, 2980232238769ull}}, {{0ull, 0ull, 16717361816799281152ull, 596046447753ull}}, {{0ull, 0ull, 14987979559889010688ull, 1192092895507ull}}, {{0ull, 0ull, 11529215046068469760ull, 2384185791015ull}}, {{0ull, 0ull, 2305843009213693952ull, 476837158203ull}}, {{0ull, 0ull, 4611686018427387904ull, 953674316406ull}}, {{0ull, 0ull, 9223372036854775808ull, 1907348632812ull}}, {{0ull, 0ull, 9223372036854775808ull, 381469726562ull}}, {{0ull, 0ull, 0ull, 762939453125ull}}, {{0ull, 0ull, 0ull, 1525878906250ull}}, {{0ull, 0ull, 0ull, 3051757812500ull}}, {{0ull, 0ull, 0ull, 610351562500ull}}, {{0ull, 0ull, 0ull, 1220703125000ull}}, {{0ull, 0ull, 0ull, 2441406250000ull}}, {{0ull, 0ull, 0ull, 488281250000ull}}, {{0ull, 0ull, 0ull, 976562500000ull}}, {{0ull, 0ull, 0ull, 1953125000000ull}}, {{0ull, 0ull, 0ull, 390625000000ull}}, {{0ull, 0ull, 0ull, 781250000000ull}}, {{0ull, 0ull, 0ull, 1562500000000ull}}, {{0ull, 0ull, 0ull, 3125000000000ull}}, {{0ull, 0ull, 0ull, 625000000000ull}}, {{0ull, 0ull, 0ull, 1250000000000ull}}, {{0ull, 0ull, 0ull, 2500000000000ull}}, {{0ull, 0ull, 0ull, 500000000000ull}}, {{0ull, 0ull, 0ull, 1000000000000ull}}, {{0ull, 0ull, 0ull, 2000000000000ull}}, {{0ull, 0ull, 0ull, 400000000000ull}}, {{0ull, 0ull, 0ull, 800000000000ull}}, {{0ull, 0ull, 0ull, 1600000000000ull}}, {{0ull, 0ull, 0ull, 3200000000000ull}}, {{0ull, 0ull, 0ull, 640000000000ull}}, {{0ull, 0ull, 0ull, 1280000000000ull}}, {{0ull, 0ull, 0ull, 2560000000000ull}}, {{0ull, 0ull, 0ull, 512000000000ull}}, {{0ull, 0ull, 0ull, 1024000000000ull}}, {{0ull, 0ull, 0ull, 2048000000000ull}}, {{0ull, 0ull, 0ull, 409600000000ull}}, {{0ull, 0ull, 0ull, 819200000000ull}}, {{0ull, 0ull, 0ull, 1638400000000ull}}, {{0ull, 0ull, 0ull, 3276800000000ull}}, {{0ull, 0ull, 0ull, 655360000000ull}}, {{0ull, 0ull, 0ull, 1310720000000ull}}, {{0ull, 0ull, 0ull, 2621440000000ull}}, {{0ull, 0ull, 0ull, 524288000000ull}}, {{0ull, 0ull, 0ull, 1048576000000ull}}, {{0ull, 0ull, 0ull, 2097152000000ull}}, {{0ull, 0ull, 0ull, 419430400000ull}}, {{0ull, 0ull, 0ull, 838860800000ull}}, {{0ull, 0ull, 0ull, 1677721600000ull}}, {{0ull, 0ull, 0ull, 335544320000ull}}, {{0ull, 0ull, 0ull, 671088640000ull}}, {{0ull, 0ull, 0ull, 1342177280000ull}}, {{0ull, 0ull, 0ull, 2684354560000ull}}, {{0ull, 0ull, 0ull, 536870912000ull}}, {{0ull, 0ull, 0ull, 1073741824000ull}}, {{0ull, 0ull, 0ull, 2147483648000ull}}, {{0ull, 0ull, 0ull, 429496729600ull}}, {{0ull, 0ull, 0ull, 858993459200ull}}, {{0ull, 0ull, 0ull, 1717986918400ull}}, {{0ull, 0ull, 0ull, 343597383680ull}}, {{0ull, 0ull, 0ull, 687194767360ull}}, {{0ull, 0ull, 0ull, 1374389534720ull}}, {{0ull, 0ull, 0ull, 2748779069440ull}}, {{0ull, 0ull, 0ull, 549755813888ull}}, {{0ull, 0ull, 0ull, 1099511627776ull}}, {{0ull, 0ull, 0ull, 2199023255552ull}}, {{7378697629483820647ull, 7378697629483820646ull, 7378697629483820646ull, 439804651110ull}}, {{14757395258967641293ull, 14757395258967641292ull, 14757395258967641292ull, 879609302220ull}}, {{11068046444225730970ull, 11068046444225730969ull, 11068046444225730969ull, 1759218604441ull}}, {{16971004547812787487ull, 2213609288845146193ull, 5902958103587056517ull, 351843720888ull}}, {{15495265021916023358ull, 4427218577690292387ull, 11805916207174113034ull, 703687441776ull}}, {{12543785970122495099ull, 8854437155380584775ull, 5165088340638674452ull, 1407374883553ull}}, {{6640827866535438582ull, 17708874310761169551ull, 10330176681277348904ull, 2814749767106ull}}, {{5017514388048998040ull, 3541774862152233910ull, 5755384150997380104ull, 562949953421ull}}, {{10035028776097996080ull, 7083549724304467820ull, 11510768301994760208ull, 1125899906842ull}}, {{1623313478486440543ull, 14167099448608935641ull, 4574792530279968800ull, 2251799813685ull}}, {{4014011510439198432ull, 2833419889721787128ull, 914958506055993760ull, 450359962737ull}}, {{8028023020878396864ull, 5666839779443574256ull, 1829917012111987520ull, 900719925474ull}}, {{16056046041756793727ull, 11333679558887148512ull, 3659834024223975040ull, 1801439850948ull}}, {{3211209208351358746ull, 13334782356003160672ull, 11800013249070525977ull, 360287970189ull}}, {{6422418416702717491ull, 8222820638296769728ull, 5153282424431500339ull, 720575940379ull}}, {{12844836833405434982ull, 16445641276593539456ull, 10306564848863000678ull, 1441151880758ull}}, {{7242929593101318347ull, 14444538479477527297ull, 2166385624016449741ull, 2882303761517ull}}, {{1448585918620263670ull, 13956954140121236429ull, 7811974754287110594ull, 576460752303ull}}, {{2897171837240527339ull, 9467164206532921242ull, 15623949508574221189ull, 1152921504606ull}}, {{5794343674481054678ull, 487584339356290868ull, 12801154943438890763ull, 2305843009213ull}}, {{15916263993863852229ull, 3786865682613168496ull, 13628277432913509122ull, 461168601842ull}}, {{13385783914018152841ull, 7573731365226336993ull, 8809810792117466628ull, 922337203685ull}}, {{8324823754326754065ull, 15147462730452673987ull, 17619621584234933256ull, 1844674407370ull}}, {{12733011195091081783ull, 6718841360832445120ull, 3523924316846986651ull, 368934881474ull}}, {{7019278316472611950ull, 13437682721664890241ull, 7047848633693973302ull, 737869762948ull}}, {{14038556632945223899ull, 8428621369620228866ull, 14095697267387946605ull, 1475739525896ull}}, {{9630369192180896181ull, 16857242739240457733ull, 9744650461066341594ull, 2951479051793ull}}, {{1926073838436179237ull, 10750146177331912193ull, 13016976536438999288ull, 590295810358ull}}, {{3852147676872358473ull, 3053548280954272770ull, 7587208999168446961ull, 1180591620717ull}}, {{7704295353744716945ull, 6107096561908545540ull, 15174417998336893922ull, 2361183241434ull}}, {{5230207885490853713ull, 4910768127123619431ull, 17792278858635020077ull, 472236648286ull}}, {{10460415770981707425ull, 9821536254247238862ull, 17137813643560488538ull, 944473296573ull}}, {{2474087468253863233ull, 1196328434784926109ull, 15828883213411425461ull, 1888946593147ull}}, {{7873515123134593293ull, 11307312131182716191ull, 10544474272166105738ull, 377789318629ull}}, {{15747030246269186586ull, 4167880188655880766ull, 2642204470622659861ull, 755578637259ull}}, {{13047316418828821556ull, 8335760377311761533ull, 5284408941245319722ull, 1511157274518ull}}, {{7647888763948091496ull, 16671520754623523067ull, 10568817882490639444ull, 3022314549036ull}}, {{8908275382273438946ull, 3334304150924704613ull, 5803112391240038212ull, 604462909807ull}}, {{17816550764546877891ull, 6668608301849409226ull, 11606224782480076424ull, 1208925819614ull}}, {{17186357455384204166ull, 13337216603698818453ull, 4765705491250601232ull, 2417851639229ull}}, {{18194666750044482126ull, 6356792135481674013ull, 15710536357217761539ull, 483570327845ull}}, {{17942589426379412636ull, 12713584270963348027ull, 12974328640725971462ull, 967140655691ull}}, {{17438434779049273656ull, 6980424468217144439ull, 7501913207742391309ull, 1934281311383ull}}, {{7177035770551765055ull, 8774782523127249534ull, 12568429085774209231ull, 386856262276ull}}, {{14354071541103530109ull, 17549565046254499068ull, 6690114097838866846ull, 773712524553ull}}, {{10261399008497508602ull, 16652386018799446521ull, 13380228195677733693ull, 1547425049106ull}}, {{2076053943285465587ull, 14858027963889341427ull, 8313712317645915771ull, 3094850098213ull}}, {{4104559603399003441ull, 17729000851745509578ull, 12730788907754914123ull, 618970019642ull}}, {{8209119206798006882ull, 17011257629781467540ull, 7014833741800276631ull, 1237940039285ull}}, {{16418238413596013763ull, 15575771185853383464ull, 14029667483600553263ull, 2475880078570ull}}, {{10662345312203023399ull, 14183200681396407662ull, 2805933496720110652ull, 495176015714ull}}, {{2877946550696495182ull, 9919657289083263709ull, 5611866993440221305ull, 990352031428ull}}, {{5755893101392990364ull, 1392570504456975802ull, 11223733986880442611ull, 1980704062856ull}}, {{15908573879246239366ull, 7657211730375215806ull, 5934095612117998845ull, 396140812571ull}}, {{13370403684782927115ull, 15314423460750431613ull, 11868191224235997690ull, 792281625142ull}}, {{8294063295856302614ull, 12182102847791311611ull, 5289638374762443765ull, 1584563250285ull}}, {{16588126591712605228ull, 5917461621873071606ull, 10579276749524887531ull, 3169126500570ull}}, {{10696322947826341692ull, 4872841139116524644ull, 2115855349904977506ull, 633825300114ull}}, {{2945901821943131768ull, 9745682278233049289ull, 4231710699809955012ull, 1267650600228ull}}, {{5891803643886263536ull, 1044620482756546962ull, 8463421399619910025ull, 2535301200456ull}}, {{12246407173002983677ull, 3898272911293219715ull, 5382033094665892328ull, 507060240091ull}}, {{6046070272296415738ull, 7796545822586439431ull, 10764066189331784656ull, 1014120480182ull}}, {{12092140544592831476ull, 15593091645172878862ull, 3081388304954017696ull, 2028240960365ull}}, {{13486474553144297265ull, 6807967143776486095ull, 616277660990803539ull, 405648192073ull}}, {{8526205032579042914ull, 13615934287552972191ull, 1232555321981607078ull, 811296384146ull}}, {{17052410065158085827ull, 8785124501396392766ull, 2465110643963214157ull, 1622592768292ull}}, {{15658076056606620037ull, 17570249002792785533ull, 4930221287926428314ull, 3245185536584ull}}, {{6820964026063234331ull, 14582096244784288076ull, 15743439516552926955ull, 649037107316ull}}, {{13641928052126468662ull, 10717448415859024536ull, 13040134959396302295ull, 1298074214633ull}}, {{8837112030543385707ull, 2988152758008497457ull, 7633525845083052975ull, 2596148429267ull}}, {{16524817665076318435ull, 7976328181085520137ull, 8905402798500431241ull, 519229685853ull}}, {{14602891256443085253ull, 15952656362171040275ull, 17810805597000862482ull, 1038459371706ull}}, {{10759038439176618889ull, 13458568650632528935ull, 17174867120292173349ull, 2076918743413ull}}, {{9530505317319144425ull, 10070411359610326433ull, 14503019868284165639ull, 415383748682ull}}, {{614266560928737233ull, 1694078645511101251ull, 10559295662858779663ull, 830767497365ull}}, {{1228533121857474465ull, 3388157291022202502ull, 2671847252008007710ull, 1661534994731ull}}, {{11313753068597225863ull, 4366980272946350823ull, 4223718265143511865ull, 332306998946ull}}, {{4180762063484900109ull, 8733960545892701647ull, 8447436530287023730ull, 664613997892ull}}, {{8361524126969800218ull, 17467921091785403294ull, 16894873060574047460ull, 1329227995784ull}}, {{16723048253939600436ull, 16489098109861254972ull, 15343002047438543305ull, 2658455991569ull}}, {{7033958465529830411ull, 18055214880939892287ull, 17825995668455349953ull, 531691198313ull}}, {{14067916931059660821ull, 17663685688170232958ull, 17205247263201148291ull, 1063382396627ull}}, {{9689089788409770026ull, 16880627302630914301ull, 15963750452692744967ull, 2126764793255ull}}, {{13005864401907684975ull, 10754823090010003506ull, 3192750090538548993ull, 425352958651ull}}, {{7564984730105818334ull, 3062902106310455397ull, 6385500181077097987ull, 850705917302ull}}, {{15129969460211636667ull, 6125804212620910794ull, 12771000362154195974ull, 1701411834604ull}}, {{10404691521526147980ull, 12293207286749913128ull, 17311595331398480487ull, 340282366920ull}}, {{2362638969342744344ull, 6139670499790274641ull, 16176446589087409359ull, 680564733841ull}}, {{4725277938685488687ull, 12279340999580549282ull, 13906149104465267102ull, 1361129467683ull}}, {{9450555877370977374ull, 6111937925451546948ull, 9365554135220982589ull, 2722258935367ull}}, {{16647506434441836768ull, 4911736399832219712ull, 9251808456528017164ull, 544451787073ull}}, {{14848268795174121920ull, 9823472799664439425ull, 56872839346482712ull, 1088903574147ull}}, {{11249793516638692223ull, 1200201525619327235ull, 113745678692965425ull, 2177807148294ull}}, {{17007353962295379738ull, 14997435564091506739ull, 14780144394706234377ull, 435561429658ull}}, {{15567963850881207859ull, 11548127054473461863ull, 11113544715702917139ull, 871122859317ull}}, {{12689183628052864101ull, 4649510035237372111ull, 3780345357696282663ull, 1742245718635ull}}, {{17295231984578214113ull, 11997948451273205391ull, 756069071539256532ull, 348449143727ull}}, {{16143719895446876610ull, 5549152828836859167ull, 1512138143078513065ull, 696898287454ull}}, {{13840695717184201604ull, 11098305657673718335ull, 3024276286157026130ull, 1393796574908ull}}, {{9234647360658851592ull, 3749867241637885055ull, 6048552572314052261ull, 2787593149816ull}}, {{9225627101615590965ull, 8128671077811397657ull, 4899059329204720775ull, 557518629963ull}}, {{4510129521630314ull, 16257342155622795315ull, 9798118658409441550ull, 1115037259926ull}}, {{9020259043260628ull, 14067940237536039014ull, 1149493243109331485ull, 2230074519853ull}}, {{7380501681292472772ull, 13881634491732938772ull, 11297945092847597266ull, 446014903970ull}}, {{14761003362584945544ull, 9316524909756325928ull, 4149146111985642917ull, 892029807941ull}}, {{11075262651460339472ull, 186305745803100241ull, 8298292223971285835ull, 1784059615882ull}}, {{13283098974517798864ull, 7415958778644440694ull, 9038356074278077813ull, 356811923176ull}}, {{8119453875326046112ull, 14831917557288881389ull, 18076712148556155626ull, 713623846352ull}}, {{16238907750652092224ull, 11217091040868211162ull, 17706680223402759637ull, 1427247692705ull}}, {{14031071427594632831ull, 3987438008026870709ull, 16966616373095967659ull, 2854495385411ull}}, {{17563609544486567859ull, 797487601605374141ull, 7082672089361103855ull, 570899077082ull}}, {{16680475015263584102ull, 1594975203210748283ull, 14165344178722207710ull, 1141798154164ull}}, {{14914205956817616588ull, 3189950406421496567ull, 9883944283734863804ull, 2283596308329ull}}, {{2982841191363523318ull, 11706036525510030283ull, 16734184115714614053ull, 456719261665ull}}, {{5965682382727046636ull, 4965328977310508950ull, 15021624157719676491ull, 913438523331ull}}, {{11931364765454093271ull, 9930657954621017900ull, 11596504241729801366ull, 1826877046663ull}}, {{17143668212058459947ull, 16743526849891844872ull, 13387347292571691242ull, 365375409332ull}}, {{15840592350407368278ull, 15040309626074138129ull, 8327950511433830869ull, 730750818665ull}}, {{13234440627105184940ull, 11633875178438724643ull, 16655901022867661739ull, 1461501637330ull}}, {{8022137180500818264ull, 4821006283167897671ull, 14865057972025771863ull, 2923003274661ull}}, {{1604427436100163653ull, 15721596515601220827ull, 6662360409147064695ull, 584600654932ull}}, {{3208854872200327306ull, 12996448957492890038ull, 13324720818294129391ull, 1169201309864ull}}, {{6417709744400654611ull, 7546153841276228460ull, 8202697562878707167ull, 2338402619729ull}}, {{4972890763622041246ull, 5198579582997156015ull, 16397934771543382726ull, 467680523945ull}}, {{9945781527244082491ull, 10397159165994312030ull, 14349125469377213836ull, 935361047891ull}}, {{1444818980778613366ull, 2347574258279072445ull, 10251506865044876057ull, 1870722095783ull}}, {{288963796155722674ull, 469514851655814489ull, 13118347817234706181ull, 374144419156ull}}, {{577927592311445347ull, 939029703311628978ull, 7789951560759860746ull, 748288838313ull}}, {{1155855184622890693ull, 1878059406623257956ull, 15579903121519721492ull, 1496577676626ull}}, {{2311710369245781385ull, 3756118813246515912ull, 12713062169329891368ull, 2993155353253ull}}, {{11530388518074887247ull, 4440572577391213505ull, 13610658878091709243ull, 598631070650ull}}, {{4614032962440222877ull, 8881145154782427011ull, 8774573682473866870ull, 1197262141301ull}}, {{9228065924880445754ull, 17762290309564854022ull, 17549147364947733740ull, 2394524282602ull}}, {{16603008443943730444ull, 10931155691396791450ull, 10888527102473367394ull, 478904856520ull}}, {{14759272814177909272ull, 3415567309084031285ull, 3330310131237183173ull, 957809713041ull}}, {{11071801554646266927ull, 6831134618168062571ull, 6660620262474366346ull, 1915619426082ull}}, {{16971755569896894679ull, 12434273367859343483ull, 8710821681978693915ull, 383123885216ull}}, {{15496767066084237741ull, 6421802662009135351ull, 17421643363957387831ull, 766247770432ull}}, {{12546790058458923865ull, 12843605324018270703ull, 16396542654205224046ull, 1532495540865ull}}, {{6646836043208296113ull, 7240466574326989791ull, 14346341234700896477ull, 3064991081731ull}}, {{16086762467609300516ull, 12516139759091128927ull, 6558617061682089618ull, 612998216346ull}}, {{13726780861509049415ull, 6585535444472706239ull, 13117234123364179237ull, 1225996432692ull}}, {{9006817649308547214ull, 13171070888945412479ull, 7787724173018806858ull, 2451992865385ull}}, {{9180061159345530090ull, 13702260622014813465ull, 1557544834603761371ull, 490398573077ull}}, {{18360122318691060179ull, 8957777170320075314ull, 3115089669207522743ull, 980797146154ull}}, {{18273500563672568741ull, 17915554340640150629ull, 6230179338415045486ull, 1961594292308ull}}, {{14722746556960244718ull, 18340506127095671418ull, 12314082311908740066ull, 392318858461ull}}, {{10998749040210937820ull, 18234268180481791221ull, 6181420550107928517ull, 784637716923ull}}, {{3550754006712324023ull, 18021792287254030827ull, 12362841100215857035ull, 1569275433846ull}}, {{7101508013424648045ull, 17596840500798510038ull, 6278938126722162455ull, 3138550867693ull}}, {{5109650417426839933ull, 14587414544385432977ull, 12323834069570163460ull, 627710173538ull}}, {{10219300834853679865ull, 10728085015061314338ull, 6200924065430775305ull, 1255420347077ull}}, {{1991857595997808113ull, 3009425956413077061ull, 12401848130861550611ull, 2510840694154ull}}, {{4087720333941471946ull, 601885191282615412ull, 17237764885139951415ull, 502168138830ull}}, {{8175440667882943892ull, 1203770382565230824ull, 16028785696570351214ull, 1004336277661ull}}, {{16350881335765887783ull, 2407540765130461648ull, 13610827319431150812ull, 2008672555323ull}}, {{14338222711378908527ull, 481508153026092329ull, 13790211908111961132ull, 401734511064ull}}, {{10229701349048265437ull, 963016306052184659ull, 9133679742514370648ull, 803469022129ull}}, {{2012658624386979257ull, 1926032612104369319ull, 18267359485028741296ull, 1606938044258ull}}, {{4025317248773958514ull, 3852065224208738638ull, 18087974896347930976ull, 3213876088517ull}}, {{4494412264496702026ull, 11838459489067478697ull, 10996292608753406841ull, 642775217703ull}}, {{8988824528993404052ull, 5230174904425405778ull, 3545841143797262067ull, 1285550435407ull}}, {{17977649057986808104ull, 10460349808850811556ull, 7091682287594524134ull, 2571100870814ull}}, {{18352925070565002914ull, 13160116405995893280ull, 16175731716486546119ull, 514220174162ull}}, {{18259106067420454212ull, 7873488738282234945ull, 13904719359263540623ull, 1028440348325ull}}, {{18071468061131356807ull, 15746977476564469891ull, 9362694644817529630ull, 2056880696651ull}}, {{10992991241710092008ull, 6838744310054804301ull, 5561887743705416249ull, 411376139330ull}}, {{3539238409710632400ull, 13677488620109608603ull, 11123775487410832498ull, 822752278660ull}}, {{7078476819421264799ull, 8908233166509665590ull, 3800806901112113381ull, 1645504557321ull}}, {{8794392993368073607ull, 9160344262785753764ull, 4449510194964332999ull, 329100911464ull}}, {{17588785986736147213ull, 18320688525571507528ull, 8899020389928665998ull, 658201822928ull}}, {{16730827899762742809ull, 18194632977433463441ull, 17798040779857331997ull, 1316403645856ull}}, {{15014911725815934001ull, 17942521881157375267ull, 17149337486005112379ull, 2632807291713ull}}, {{17760377604130828093ull, 10967202005715295699ull, 14497913941426753445ull, 526561458342ull}}, {{17074011134552104570ull, 3487659937721039783ull, 10549083809143955275ull, 1053122916685ull}}, {{15701278195394657524ull, 6975319875442079567ull, 2651423544578358934ull, 2106245833371ull}}, {{10518953268562752152ull, 1395063975088415913ull, 4219633523657582110ull, 421249166674ull}}, {{2591162463415952687ull, 2790127950176831827ull, 8439267047315164220ull, 842498333348ull}}, {{5182324926831905373ull, 5580255900353663654ull, 16878534094630328440ull, 1684996666696ull}}, {{1036464985366381075ull, 4805399994812643054ull, 7065055633667976011ull, 336999333339ull}}, {{2072929970732762150ull, 9610799989625286108ull, 14130111267335952022ull, 673998666678ull}}, {{4145859941465524299ull, 774855905541020600ull, 9813478460962352429ull, 1347997333357ull}}, {{8291719882931048597ull, 1549711811082041200ull, 1180212848215153242ull, 2695994666715ull}}, {{9037041606070030366ull, 7688639991700228886ull, 236042569643030648ull, 539198933343ull}}, {{18074083212140060732ull, 15377279983400457772ull, 472085139286061296ull, 1078397866686ull}}, {{17701422350570569847ull, 12307815893091363929ull, 944170278572122593ull, 2156795733372ull}}, {{18297679729081755263ull, 2461563178618272785ull, 7567531685198245165ull, 431359146674ull}}, {{18148615384453958909ull, 4923126357236545571ull, 15135063370396490330ull, 862718293348ull}}, {{17850486695198366201ull, 9846252714473091143ull, 11823382667083429044ull, 1725436586697ull}}, {{18327492598007314533ull, 5658599357636528551ull, 9743374162900506455ull, 345087317339ull}}, {{18208241122305077450ull, 11317198715273057103ull, 1040004252091461294ull, 690174634679ull}}, {{17969738170900603284ull, 4187653356836562591ull, 2080008504182922589ull, 1380349269358ull}}, {{17492732268091654952ull, 8375306713673125183ull, 4160017008365845178ull, 2760698538716ull}}, {{10877244083102151637ull, 16432456601702266329ull, 4521352216415079358ull, 552139707743ull}}, {{3307744092494751658ull, 14418169129694981043ull, 9042704432830158717ull, 1104279415486ull}}, {{6615488184989503315ull, 10389594185680410470ull, 18085408865660317435ull, 2208558830972ull}}, {{8701795266481721310ull, 9456616466619902740ull, 10995779402615884133ull, 441711766194ull}}, {{17403590532963442619ull, 466488859530253864ull, 3544814731522216651ull, 883423532389ull}}, {{16360436992217333622ull, 932977719060507729ull, 7089629463044433302ull, 1766847064778ull}}, {{18029482657411108018ull, 186595543812101545ull, 12485972336834617630ull, 353369412955ull}}, {{17612221241112664419ull, 373191087624203091ull, 6525200599959683644ull, 706738825911ull}}, {{16777698408515777221ull, 746382175248406183ull, 13050401199919367288ull, 1413477651822ull}}, {{15108652743322002825ull, 1492764350496812367ull, 7654058326129182960ull, 2826955303645ull}}, {{10400428178148221212ull, 298552870099362473ull, 1530811665225836592ull, 565391060729ull}}, {{2354112282586890807ull, 597105740198724947ull, 3061623330451673184ull, 1130782121458ull}}, {{4708224565173781614ull, 1194211480397449894ull, 6123246660903346368ull, 2261564242916ull}}, {{12009691357260487293ull, 14996237555047131271ull, 4913998146922579596ull, 452312848583ull}}, {{5572638640811422969ull, 11545731036384710927ull, 9827996293845159193ull, 904625697166ull}}, {{11145277281622845937ull, 4644717999059870238ull, 1209248513980766771ull, 1809251394333ull}}, {{9607753085808389834ull, 15686338858779615340ull, 11309896147021884323ull, 361850278866ull}}, {{768762097907228052ull, 12925933643849679065ull, 4173048220334217031ull, 723700557733ull}}, {{1537524195814456104ull, 7405123213989806514ull, 8346096440668434063ull, 1447401115466ull}}, {{3075048391628912207ull, 14810246427979613028ull, 16692192881336868126ull, 2894802230932ull}}, {{4304358493067692765ull, 14030095729821653575ull, 10717136205751194271ull, 578960446186ull}}, {{8608716986135385529ull, 9613447385933755534ull, 2987528337792836927ull, 1157920892373ull}}, {{17217433972270771058ull, 780150698157959452ull, 5975056675585673855ull, 2315841784746ull}}, {{14511533238679885182ull, 3845378954373502213ull, 4884360149859045094ull, 463168356949ull}}, {{10576322403650218747ull, 7690757908747004427ull, 9768720299718090188ull, 926336713898ull}}, {{2705900733590885877ull, 15381515817494008855ull, 1090696525726628760ull, 1852673427797ull}}, {{7919877776201997822ull, 10455000792982622417ull, 7596836934629146398ull, 370534685559ull}}, {{15839755552403995644ull, 2463257512255693218ull, 15193673869258292797ull, 741069371118ull}}, {{13232767031098439671ull, 4926515024511386437ull, 11940603664807033978ull, 1482138742237ull}}, {{8018789988487327726ull, 9853030049022772875ull, 5434463255904516340ull, 2964277484475ull}}, {{1603757997697465546ull, 1970606009804554575ull, 1086892651180903268ull, 592855496895ull}}, {{3207515995394931091ull, 3941212019609109150ull, 2173785302361806536ull, 1185710993790ull}}, {{6415031990789862181ull, 7882424039218218300ull, 4347570604723613072ull, 2371421987580ull}}, {{8661704027641793083ull, 8955182437327464306ull, 869514120944722614ull, 474284397516ull}}, {{17323408055283586166ull, 17910364874654928612ull, 1739028241889445228ull, 948568795032ull}}, {{16200072036857620715ull, 17373985675600305609ull, 3478056483778890457ull, 1897137590064ull}}, {{3240014407371524143ull, 7164145949861971445ull, 15453006555723419384ull, 379427518012ull}}, {{6480028814743048286ull, 14328291899723942890ull, 12459269037737287152ull, 758855036025ull}}, {{12960057629486096572ull, 10209839725738334164ull, 6471794001765022689ull, 1517710072051ull}}, {{7473371185262641527ull, 1972935377767116713ull, 12943588003530045379ull, 3035420144102ull}}, {{16252069496020169599ull, 4083935890295333665ull, 9967415230189829722ull, 607084028820ull}}, {{14057394918330787581ull, 8167871780590667331ull, 1488086386670107828ull, 1214168057641ull}}, {{9668045762952023545ull, 16335743561181334663ull, 2976172773340215656ull, 2428336115282ull}}, {{5622957967332315033ull, 14335195156461997902ull, 7973932184151863777ull, 485667223056ull}}, {{11245915934664630065ull, 10223646239214444188ull, 15947864368303727555ull, 971334446112ull}}, {{4045087795619708513ull, 2000548404719336761ull, 13448984662897903495ull, 1942668892225ull}}, {{4498366373865852026ull, 400109680943867352ull, 2689796932579580699ull, 388533778445ull}}, {{8996732747731704052ull, 800219361887734704ull, 5379593865159161398ull, 777067556890ull}}, {{17993465495463408103ull, 1600438723775469408ull, 10759187730318322796ull, 1554135113780ull}}, {{17540186917217264590ull, 3200877447550938817ull, 3071631386927093976ull, 3108270227561ull}}, {{18265432642411094211ull, 8018873118994008409ull, 4303675092127329118ull, 621654045512ull}}, {{18084121211112636806ull, 16037746237988016819ull, 8607350184254658236ull, 1243308091024ull}}, {{17721498348515721995ull, 13628748402266482023ull, 17214700368509316473ull, 2486616182048ull}}, {{18301694928670785692ull, 6415098495195206727ull, 14510986517927594264ull, 497323236409ull}}, {{18156645783632019768ull, 12830196990390413455ull, 10575228962145636912ull, 994646472819ull}}, {{17866547493554487919ull, 7213649907071275295ull, 2703713850581722209ull, 1989292945639ull}}, {{14641355942936628554ull, 12510776425639986028ull, 15298138029083985734ull, 397858589127ull}}, {{10835967812163705491ull, 6574808777570420441ull, 12149531984458419853ull, 795717178255ull}}, {{3225191550617859366ull, 13149617555140840883ull, 5852319895207288090ull, 1591434356511ull}}, {{6450383101235718732ull, 7852491036572130150ull, 11704639790414576181ull, 3182868713022ull}}, {{12358123064472874716ull, 12638544651540156999ull, 9719625587566735882ull, 636573742604ull}}, {{6269502055236197816ull, 6830345229370762383ull, 992507101423920149ull, 1273147485209ull}}, {{12539004110472395632ull, 13660690458741524766ull, 1985014202847840298ull, 2546294970418ull}}, {{9886498451578299773ull, 6421486906490215276ull, 11465049284795299029ull, 509258994083ull}}, {{1326252829447047930ull, 12842973812980430553ull, 4483354495881046442ull, 1018517988167ull}}, {{2652505658894095859ull, 7239203552251309490ull, 8966708991762092885ull, 2037035976334ull}}, {{15287896390746460465ull, 16205235969417903190ull, 16550737057320059869ull, 407407195266ull}}, {{12129048707783369314ull, 13963727865126254765ull, 14654730040930568123ull, 814814390533ull}}, {{5811353341857187011ull, 9480711656542957915ull, 10862716008151584631ull, 1629628781067ull}}, {{11622706683714374021ull, 514679239376364214ull, 3278687942593617647ull, 3259257562135ull}}, {{6013890151484785128ull, 7481633477359093489ull, 655737588518723529ull, 651851512427ull}}, {{12027780302969570255ull, 14963266954718186978ull, 1311475177037447058ull, 1303703024854ull}}, {{5608816532229588893ull, 11479789835726822341ull, 2622950354074894117ull, 2607406049708ull}}, {{4811112121187828102ull, 2295957967145364468ull, 11592636515040709793ull, 521481209941ull}}, {{9622224242375656204ull, 4591915934290728936ull, 4738528956371867970ull, 1042962419883ull}}, {{797704411041760792ull, 9183831868581457873ull, 9477057912743735940ull, 2085924839766ull}}, {{14916936141175993452ull, 5526115188458201897ull, 5584760397290657511ull, 417184967953ull}}, {{11387128208642435287ull, 11052230376916403795ull, 11169520794581315022ull, 834369935906ull}}, {{4327512343575318957ull, 3657716680123255975ull, 3892297515453078429ull, 1668739871813ull}}, {{8244200098198884438ull, 8110240965508471841ull, 11846505947316346655ull, 333747974362ull}}, {{16488400196397768876ull, 16220481931016943682ull, 5246267820923141694ull, 667495948725ull}}, {{14530056319085986135ull, 13994219788324335749ull, 10492535641846283389ull, 1334991897450ull}}, {{10613368564462420654ull, 9541695502939119883ull, 2538327209983015163ull, 2669983794901ull}}, {{9501371342376304778ull, 16665734359555465269ull, 4197014256738513355ull, 533996758980ull}}, {{555998611043057939ull, 14884724645401378923ull, 8394028513477026711ull, 1067993517960ull}}, {{1111997222086115877ull, 11322705217093206230ull, 16788057026954053423ull, 2135987035920ull}}, {{11290445888642954145ull, 13332587487644372215ull, 3357611405390810684ull, 427197407184ull}}, {{4134147703576356674ull, 8218430901579192815ull, 6715222810781621369ull, 854394814368ull}}, {{8268295407152713348ull, 16436861803158385630ull, 13430445621563242738ull, 1708789628736ull}}, {{16411054340398183963ull, 18044767619599318418ull, 6375437939054558870ull, 341757925747ull}}, {{14375364607086816309ull, 17642791165489085221ull, 12750875878109117741ull, 683515851494ull}}, {{10303985140464081001ull, 16838838257268618827ull, 7055007682508683867ull, 1367031702989ull}}, {{2161226207218610386ull, 15230932440827686039ull, 14110015365017367735ull, 2734063405978ull}}, {{7810942870927542724ull, 14114232932391268177ull, 13890049517229204516ull, 546812681195ull}}, {{15621885741855085448ull, 9781721791072984738ull, 9333354960748857417ull, 1093625362391ull}}, {{12797027410000619279ull, 1116699508436417861ull, 219965847788163219ull, 2187250724783ull}}, {{13627451926225854826ull, 7602037531171104218ull, 11112039613783363613ull, 437450144956ull}}, {{8808159778742158035ull, 15204075062342208437ull, 3777335153857175610ull, 874900289913ull}}, {{17616319557484316070ull, 11961406050974865258ull, 7554670307714351221ull, 1749800579826ull}}, {{3523263911496863214ull, 9770978839678793698ull, 5200282876284780567ull, 349960115965ull}}, {{7046527822993726428ull, 1095213605648035780ull, 10400565752569561135ull, 699920231930ull}}, {{14093055645987452856ull, 2190427211296071560ull, 2354387431429570654ull, 1399840463861ull}}, {{9739367218265354095ull, 4380854422592143121ull, 4708774862859141308ull, 2799680927722ull}}, {{5637222258394981143ull, 876170884518428624ull, 8320452602055648908ull, 559936185544ull}}, {{11274444516789962285ull, 1752341769036857248ull, 16640905204111297816ull, 1119872371088ull}} }; static const BID_UINT256 bid_multipliers2_bid32[] = { {{7156996302188685206ull, 14694123111064470433ull, 3521238664523520994ull, 11704ull}}, {{14313992604377370412ull, 10941502148419389250ull, 7042477329047041989ull, 23408ull}}, {{10181241135045189207ull, 3436260223129226885ull, 14084954658094083979ull, 46816ull}}, {{1915738196380826798ull, 6872520446258453771ull, 9723165242478616342ull, 93633ull}}, {{3831476392761653595ull, 13745040892516907542ull, 999586411247681068ull, 187267ull}}, {{7662952785523307189ull, 9043337711324263468ull, 1999172822495362137ull, 374534ull}}, {{15325905571046614378ull, 18086675422648526936ull, 3998345644990724274ull, 749068ull}}, {{12205067068383677139ull, 17726606771587502257ull, 7996691289981448549ull, 1498136ull}}, {{5963390063057802661ull, 17006469469465452899ull, 15993382579962897099ull, 2996272ull}}, {{11926780126115605321ull, 15566194865221354182ull, 13540021086216242583ull, 5992545ull}}, {{5406816178521659026ull, 12685645656733156749ull, 8633298098722933551ull, 11985091ull}}, {{10813632357043318052ull, 6924547239756761882ull, 17266596197445867103ull, 23970182ull}}, {{3180520640377084488ull, 13849094479513523765ull, 16086448321182182590ull, 47940365ull}}, {{6361041280754168975ull, 9251444885317495914ull, 13726152568654813565ull, 95880731ull}}, {{12722082561508337950ull, 56145696925440212ull, 9005561063600075515ull, 191761463ull}}, {{6997421049307124283ull, 112291393850880425ull, 18011122127200151030ull, 383522926ull}}, {{13994842098614248565ull, 224582787701760850ull, 17575500180690750444ull, 767045853ull}}, {{9542940123518945513ull, 449165575403521701ull, 16704256287671949272ull, 1534091707ull}}, {{639136173328339410ull, 898331150807043403ull, 14961768501634346928ull, 3068183415ull}}, {{1278272346656678820ull, 1796662301614086806ull, 11476792929559142240ull, 6136366831ull}}, {{2556544693313357639ull, 3593324603228173612ull, 4506841785408732864ull, 12272733663ull}}, {{5113089386626715277ull, 7186649206456347224ull, 9013683570817465728ull, 24545467326ull}}, {{10226178773253430554ull, 14373298412912694448ull, 18027367141634931456ull, 49090934652ull}}, {{2005613472797309491ull, 10299852752115837281ull, 17607990209560311297ull, 98181869305ull}}, {{4011226945594618982ull, 2152961430522122946ull, 16769236345411070979ull, 196363738611ull}}, {{4491594203860834120ull, 430592286104424589ull, 7043196083824124519ull, 39272747722ull}}, {{8983188407721668240ull, 861184572208849178ull, 14086392167648249038ull, 78545495444ull}}, {{17966376815443336479ull, 1722369144417698356ull, 9726040261586946460ull, 157090990889ull}}, {{17486009557177121341ull, 3444738288835396713ull, 1005336449464341304ull, 314181981779ull}}, {{7186550726177334592ull, 11756994101992810312ull, 14958462548860509553ull, 62836396355ull}}, {{14373101452354669183ull, 5067244130276069008ull, 11470181024011467491ull, 125672792711ull}}, {{10299458830999786749ull, 10134488260552138017ull, 4493617974313383366ull, 251345585423ull}}, {{5749240580941867673ull, 16784292911078068896ull, 11966770039088407642ull, 50269117084ull}}, {{11498481161883735346ull, 15121841748446586176ull, 5486796004467263669ull, 100538234169ull}}, {{4550218250057919076ull, 11796939423183620737ull, 10973592008934527339ull, 201076468338ull}}, {{15667438908979225108ull, 9738085514120544793ull, 13262764846012636437ull, 40215293667ull}}, {{12888133744248898600ull, 1029426954531537971ull, 8078785618315721259ull, 80430587335ull}}, {{7329523414788245584ull, 2058853909063075943ull, 16157571236631442518ull, 160861174670ull}}, {{14659046829576491168ull, 4117707818126151886ull, 13868398399553333420ull, 321722349341ull}}, {{10310506995399118880ull, 4512890378367140700ull, 6463028494652577007ull, 64344469868ull}}, {{2174269917088686144ull, 9025780756734281401ull, 12926056989305154014ull, 128688939736ull}}, {{4348539834177372288ull, 18051561513468562802ull, 7405369904900756412ull, 257377879473ull}}, {{8248405596319295104ull, 3610312302693712560ull, 12549120425205882252ull, 51475575894ull}}, {{16496811192638590208ull, 7220624605387425120ull, 6651496776702212888ull, 102951151789ull}}, {{14546878311567628800ull, 14441249210774850241ull, 13302993553404425776ull, 205902303578ull}}, {{2909375662313525760ull, 17645645101122611341ull, 13728645154906616124ull, 41180460715ull}}, {{5818751324627051520ull, 16844546128535671066ull, 9010546236103680633ull, 82360921431ull}}, {{11637502649254103040ull, 15242348183361790516ull, 18021092472207361267ull, 164721842862ull}}, {{2327500529850820608ull, 17805864895639999396ull, 10982916123925292899ull, 32944368572ull}}, {{4655001059701641216ull, 17164985717570447176ull, 3519088174141034183ull, 65888737145ull}}, {{9310002119403282432ull, 15883227361431342736ull, 7038176348282068367ull, 131777474290ull}}, {{173260165097013248ull, 13319710649153133857ull, 14076352696564136735ull, 263554948580ull}}, {{7413349662503223296ull, 2663942129830626771ull, 2815270539312827347ull, 52710989716ull}}, {{14826699325006446592ull, 5327884259661253542ull, 5630541078625654694ull, 105421979432ull}}, {{11206654576303341568ull, 10655768519322507085ull, 11261082157251309388ull, 210843958864ull}}, {{9620028544744488960ull, 9509851333348322063ull, 17009611690417903170ull, 42168791772ull}}, {{793313015779426304ull, 572958592987092511ull, 15572479307126254725ull, 84337583545ull}}, {{1586626031558852608ull, 1145917185974185022ull, 12698214540542957834ull, 168675167091ull}}, {{7696022835795591168ull, 229183437194837004ull, 6228991722850501890ull, 33735033418ull}}, {{15392045671591182336ull, 458366874389674008ull, 12457983445701003780ull, 67470066836ull}}, {{12337347269472813056ull, 916733748779348017ull, 6469222817692455944ull, 134940133673ull}}, {{6227950465236074496ull, 1833467497558696035ull, 12938445635384911888ull, 269880267346ull}}, {{16002985352014856192ull, 15124088758479380499ull, 6277037941818892700ull, 53976053469ull}}, {{13559226630320160768ull, 11801433443249209383ull, 12554075883637785401ull, 107952106938ull}}, {{8671709186930769920ull, 5156122812788867151ull, 6661407693566019187ull, 215904213877ull}}, {{1734341837386153984ull, 15788619821525414723ull, 8710979168197024483ull, 43180842775ull}}, {{3468683674772307968ull, 13130495569341277830ull, 17421958336394048967ull, 86361685550ull}}, {{6937367349544615936ull, 7814247064973004044ull, 16397172599078546319ull, 172723371101ull}}, {{16144868728876564480ull, 1562849412994600808ull, 6968783334557619587ull, 34544674220ull}}, {{13842993384043577344ull, 3125698825989201617ull, 13937566669115239174ull, 69089348440ull}}, {{9239242694377603072ull, 6251397651978403235ull, 9428389264520926732ull, 138178696881ull}}, {{31741315045654528ull, 12502795303956806471ull, 410034455332301848ull, 276357393763ull}}, {{7385045892492951552ull, 6189907875533271617ull, 11150053335292191339ull, 55271478752ull}}, {{14770091784985903104ull, 12379815751066543234ull, 3853362596874831062ull, 110542957505ull}}, {{11093439496262254592ull, 6312887428423534853ull, 7706725193749662125ull, 221085915010ull}}, {{13286734343478181888ull, 1262577485684706970ull, 1541345038749932425ull, 44217183002ull}}, {{8126724613246812160ull, 2525154971369413941ull, 3082690077499864850ull, 88434366004ull}}, {{16253449226493624320ull, 5050309942738827882ull, 6165380154999729700ull, 176868732008ull}}, {{3250689845298724864ull, 12078108432773496546ull, 12301122475225676909ull, 35373746401ull}}, {{6501379690597449728ull, 5709472791837441476ull, 6155500876741802203ull, 70747492803ull}}, {{13002759381194899456ull, 11418945583674882952ull, 12311001753483604406ull, 141494985606ull}}, {{7558774688680247296ull, 4391147093640214289ull, 6175259433257657197ull, 282989971213ull}}, {{16269150196703690752ull, 878229418728042857ull, 12303098330877262409ull, 56597994242ull}}, {{14091556319697829888ull, 1756458837456085715ull, 6159452588044973202ull, 113195988485ull}}, {{9736368565686108160ull, 3512917674912171431ull, 12318905176089946404ull, 226391976970ull}}, {{1947273713137221632ull, 15459978793950075579ull, 2463781035217989280ull, 45278395394ull}}, {{3894547426274443264ull, 12473213514190599542ull, 4927562070435978561ull, 90556790788ull}}, {{7789094852548886528ull, 6499682954671647468ull, 9855124140871957123ull, 181113581576ull}}, {{8936516599993597952ull, 16057331849901970786ull, 5660373642916301747ull, 36222716315ull}}, {{17873033199987195904ull, 13667919626094389956ull, 11320747285832603495ull, 72445432630ull}}, {{17299322326264840192ull, 8889095178479228297ull, 4194750497955655375ull, 144890865261ull}}, {{16151900578820128768ull, 17778190356958456595ull, 8389500995911310750ull, 289781730522ull}}, {{10609077745247846400ull, 10934335700875511965ull, 9056597828666082796ull, 57956346104ull}}, {{2771411416786141184ull, 3421927328041472315ull, 18113195657332165593ull, 115912692208ull}}, {{5542822833572282368ull, 6843854656082944630ull, 17779647240954779570ull, 231825384417ull}}, {{8487262196198277120ull, 8747468560700409572ull, 10934627077674776560ull, 46365076883ull}}, {{16974524392396554240ull, 17494937121400819144ull, 3422510081640001504ull, 92730153767ull}}, {{15502304711083556864ull, 16543130169092086673ull, 6845020163280003009ull, 185460307534ull}}, {{6789809756958621696ull, 14376672478044148304ull, 16126399291623641894ull, 37092061506ull}}, {{13579619513917243392ull, 10306600882378744992ull, 13806054509537732173ull, 74184123013ull}}, {{8712494954124935168ull, 2166457691047938369ull, 9165364945365912731ull, 148368246027ull}}, {{17424989908249870336ull, 4332915382095876738ull, 18330729890731825462ull, 296736492054ull}}, {{18242393240617615360ull, 4555931891161085670ull, 18423541237114006385ull, 59347298410ull}}, {{18038042407525679104ull, 9111863782322171341ull, 18400338400518461154ull, 118694596821ull}}, {{17629340741341806592ull, 18223727564644342683ull, 18353932727327370692ull, 237389193643ull}}, {{14593914592494092288ull, 3644745512928868536ull, 14738832989691205108ull, 47477838728ull}}, {{10741085111278632960ull, 7289491025857737073ull, 11030921905672858600ull, 94955677457ull}}, {{3035426148847714304ull, 14578982051715474147ull, 3615099737636165584ull, 189911354915ull}}, {{4296434044511453184ull, 17673191669310736122ull, 723019947527233116ull, 37982270983ull}}, {{8592868089022906368ull, 16899639264911920628ull, 1446039895054466233ull, 75964541966ull}}, {{17185736178045812736ull, 15352534456114289640ull, 2892079790108932467ull, 151929083932ull}}, {{15924728282382073856ull, 12258324838519027665ull, 5784159580217864935ull, 303858167864ull}}, {{17942340915444056064ull, 17209060226671446825ull, 15914227175011214279ull, 60771633572ull}}, {{17437937757178560512ull, 15971376379633342035ull, 13381710276312876943ull, 121543267145ull}}, {{16429131440647569408ull, 13496008685557132455ull, 8316676478916202271ull, 243086534291ull}}, {{10664523917613334528ull, 10077899366595247137ull, 5352684110525150777ull, 48617306858ull}}, {{2882303761517117440ull, 1709054659480942659ull, 10705368221050301555ull, 97234613716ull}}, {{5764607523034234880ull, 3418109318961885318ull, 2963992368391051494ull, 194469227433ull}}, {{1152921504606846976ull, 8062319493276197710ull, 11660844917903941268ull, 38893845486ull}}, {{2305843009213693952ull, 16124638986552395420ull, 4874945762098330920ull, 77787690973ull}}, {{4611686018427387904ull, 13802533899395239224ull, 9749891524196661841ull, 155575381946ull}}, {{9223372036854775808ull, 9158323725080926832ull, 1053038974683772067ull, 311150763893ull}}, {{9223372036854775808ull, 1831664745016185366ull, 11278654239162485383ull, 62230152778ull}}, {{0ull, 3663329490032370733ull, 4110564404615419150ull, 124460305557ull}}, {{0ull, 7326658980064741466ull, 8221128809230838300ull, 248920611114ull}}, {{0ull, 16222727054980589586ull, 16401621020813808952ull, 49784122222ull}}, {{0ull, 13998710036251627556ull, 14356497967918066289ull, 99568244445ull}}, {{0ull, 9550675998793703496ull, 10266251862126580963ull, 199136488891ull}}, {{0ull, 16667530458726381992ull, 5742599187167226515ull, 39827297778ull}}, {{0ull, 14888316843743212368ull, 11485198374334453031ull, 79654595556ull}}, {{0ull, 11329889613776873120ull, 4523652674959354447ull, 159309191113ull}}, {{0ull, 4213035153844194624ull, 9047305349918708895ull, 318618382226ull}}, {{0ull, 4531955845510749248ull, 5498809884725652102ull, 63723676445ull}}, {{0ull, 9063911691021498496ull, 10997619769451304204ull, 127447352890ull}}, {{0ull, 18127823382042996992ull, 3548495465193056792ull, 254894705781ull}}, {{0ull, 14693611120634330368ull, 4399047907780521681ull, 50978941156ull}}, {{0ull, 10940478167559109120ull, 8798095815561043363ull, 101957882312ull}}, {{0ull, 3434212261408666624ull, 17596191631122086727ull, 203915764624ull}}, {{0ull, 4376191267023643648ull, 18276633585192058638ull, 40783152924ull}}, {{0ull, 8752382534047287296ull, 18106523096674565660ull, 81566305849ull}}, {{0ull, 17504765068094574592ull, 17766302119639579704ull, 163132611699ull}}, {{0ull, 16562786062479597568ull, 17085860165569607793ull, 326265223399ull}}, {{0ull, 10691254841979740160ull, 18174567292081562851ull, 65253044679ull}}, {{0ull, 2935765610249928704ull, 17902390510453574087ull, 130506089359ull}}, {{0ull, 5871531220499857408ull, 17358036947197596558ull, 261012178719ull}}, {{0ull, 8553003873583792128ull, 18229002648407160604ull, 52202435743ull}}, {{0ull, 17106007747167584256ull, 18011261223104769592ull, 104404871487ull}}, {{0ull, 15765271420625616896ull, 17575778372499987569ull, 208809742975ull}}, {{0ull, 17910449543092764672ull, 3515155674499997513ull, 41761948595ull}}, {{0ull, 17374155012475977728ull, 7030311348999995027ull, 83523897190ull}}, {{0ull, 16301565951242403840ull, 14060622697999990055ull, 167047794380ull}}, {{0ull, 3260313190248480768ull, 2812124539599998011ull, 33409558876ull}}, {{0ull, 6520626380496961536ull, 5624249079199996022ull, 66819117752ull}}, {{0ull, 13041252760993923072ull, 11248498158399992044ull, 133638235504ull}}, {{0ull, 7635761448278294528ull, 4050252243090432473ull, 267276471009ull}}, {{0ull, 8905849919139479552ull, 15567445707585727787ull, 53455294201ull}}, {{0ull, 17811699838278959104ull, 12688147341461903958ull, 106910588403ull}}, {{0ull, 17176655602848366592ull, 6929550609214256301ull, 213821176807ull}}, {{0ull, 14503377564795404288ull, 8764607751326671906ull, 42764235361ull}}, {{0ull, 10560011055881256960ull, 17529215502653343813ull, 85528470722ull}}, {{0ull, 2673278038052962304ull, 16611686931597136011ull, 171056941445ull}}, {{0ull, 4224004422352502784ull, 3322337386319427202ull, 34211388289ull}}, {{0ull, 8448008844705005568ull, 6644674772638854404ull, 68422776578ull}}, {{0ull, 16896017689410011136ull, 13289349545277708808ull, 136845553156ull}}, {{0ull, 15345291305110470656ull, 8131955016845866001ull, 273691106313ull}}, {{0ull, 17826453519989735424ull, 12694437447594904169ull, 54738221262ull}}, {{0ull, 17206162966269919232ull, 6942130821480256723ull, 109476442525ull}}, {{0ull, 15965581858830286848ull, 13884261642960513447ull, 218952885050ull}}, {{0ull, 10571814001249878016ull, 2776852328592102689ull, 43790577010ull}}, {{0ull, 2696883928790204416ull, 5553704657184205379ull, 87581154020ull}}, {{0ull, 5393767857580408832ull, 11107409314368410758ull, 175162308040ull}}, {{0ull, 12146800015741812736ull, 2221481862873682151ull, 35032461608ull}}, {{0ull, 5846855957774073856ull, 4442963725747364303ull, 70064923216ull}}, {{0ull, 11693711915548147712ull, 8885927451494728606ull, 140129846432ull}}, {{0ull, 4940679757386743808ull, 17771854902989457213ull, 280259692864ull}}, {{0ull, 8366833580961169408ull, 18311766239565532735ull, 56051938572ull}}, {{0ull, 16733667161922338816ull, 18176788405421513854ull, 112103877145ull}}, {{0ull, 15020590250135126016ull, 17906832737133476093ull, 224207754291ull}}, {{0ull, 17761513308994666496ull, 7270715362168605541ull, 44841550858ull}}, {{0ull, 17076282544279781376ull, 14541430724337211083ull, 89683101716ull}}, {{0ull, 15705821014850011136ull, 10636117374964870551ull, 179366203433ull}}, {{0ull, 17898559461937643520ull, 13195269919218705079ull, 35873240686ull}}, {{0ull, 17350374850165735424ull, 7943795764727858543ull, 71746481373ull}}, {{0ull, 16254005626621919232ull, 15887591529455717087ull, 143492962746ull}}, {{0ull, 14061267179534286848ull, 13328438985201882559ull, 286985925493ull}}, {{0ull, 10190951065390678016ull, 13733734241266107481ull, 57397185098ull}}, {{0ull, 1935158057071804416ull, 9020724408822663347ull, 114794370197ull}}, {{0ull, 3870316114143608832ull, 18041448817645326694ull, 229588740394ull}}, {{0ull, 11842109667054452736ull, 18365685022496706631ull, 45917748078ull}}, {{0ull, 5237475260399353856ull, 18284625971283861647ull, 91835496157ull}}, {{0ull, 10474950520798707712ull, 18122507868858171678ull, 183670992315ull}}, {{0ull, 13163036548385472512ull, 3624501573771634335ull, 36734198463ull}}, {{0ull, 7879329023061393408ull, 7249003147543268671ull, 73468396926ull}}, {{0ull, 15758658046122786816ull, 14498006295086537342ull, 146936793852ull}}, {{0ull, 13070572018536022016ull, 10549268516463523069ull, 293873587705ull}}, {{0ull, 17371509662674845696ull, 2109853703292704613ull, 58774717541ull}}, {{0ull, 16296275251640139776ull, 4219707406585409227ull, 117549435082ull}}, {{0ull, 14145806429570727936ull, 8439414813170818455ull, 235098870164ull}}, {{0ull, 17586556544881786880ull, 16445278221601804983ull, 47019774032ull}}, {{0ull, 16726369016054022144ull, 14443812369494058351ull, 94039548065ull}}, {{0ull, 15005993958398492672ull, 10440880665278565087ull, 188079096131ull}}, {{0ull, 14069245235905429504ull, 5777524947797623340ull, 37615819226ull}}, {{0ull, 9691746398101307392ull, 11555049895595246681ull, 75231638452ull}}, {{0ull, 936748722493063168ull, 4663355717480941747ull, 150463276905ull}}, {{0ull, 1873497444986126336ull, 9326711434961883494ull, 300926553810ull}}, {{0ull, 15132094747964866560ull, 1865342286992376698ull, 60185310762ull}}, {{0ull, 11817445422220181504ull, 3730684573984753397ull, 120370621524ull}}, {{0ull, 5188146770730811392ull, 7461369147969506795ull, 240741243048ull}}, {{0ull, 12105675798371893248ull, 12560320273819632328ull, 48148248609ull}}, {{0ull, 5764607523034234880ull, 6673896473929713041ull, 96296497219ull}}, {{0ull, 11529215046068469760ull, 13347792947859426082ull, 192592994438ull}}, {{0ull, 2305843009213693952ull, 13737605033797616186ull, 38518598887ull}}, {{0ull, 4611686018427387904ull, 9028465993885680756ull, 77037197775ull}}, {{0ull, 9223372036854775808ull, 18056931987771361512ull, 154074395550ull}}, {{0ull, 0ull, 17667119901833171409ull, 308148791101ull}}, {{0ull, 0ull, 7222772795108544605ull, 61629758220ull}}, {{0ull, 0ull, 14445545590217089210ull, 123259516440ull}}, {{0ull, 0ull, 10444347106724626804ull, 246519032881ull}}, {{0ull, 0ull, 5778218236086835684ull, 49303806576ull}}, {{0ull, 0ull, 11556436472173671368ull, 98607613152ull}}, {{0ull, 0ull, 4666128870637791120ull, 197215226305ull}}, {{0ull, 0ull, 933225774127558224ull, 39443045261ull}}, {{0ull, 0ull, 1866451548255116448ull, 78886090522ull}}, {{0ull, 0ull, 3732903096510232896ull, 157772181044ull}}, {{0ull, 0ull, 7465806193020465792ull, 315544362088ull}}, {{0ull, 0ull, 12561207682829824128ull, 63108872417ull}}, {{0ull, 0ull, 6675671291950096640ull, 126217744835ull}}, {{0ull, 0ull, 13351342583900193280ull, 252435489670ull}}, {{0ull, 0ull, 2670268516780038656ull, 50487097934ull}}, {{0ull, 0ull, 5340537033560077312ull, 100974195868ull}}, {{0ull, 0ull, 10681074067120154624ull, 201948391736ull}}, {{0ull, 0ull, 5825563628165941248ull, 40389678347ull}}, {{0ull, 0ull, 11651127256331882496ull, 80779356694ull}}, {{0ull, 0ull, 4855510438954213376ull, 161558713389ull}}, {{0ull, 0ull, 9711020877908426752ull, 323117426778ull}}, {{0ull, 0ull, 13010250619807416320ull, 64623485355ull}}, {{0ull, 0ull, 7573757165905281024ull, 129246970711ull}}, {{0ull, 0ull, 15147514331810562048ull, 258493941422ull}}, {{0ull, 0ull, 10408200495845933056ull, 51698788284ull}}, {{0ull, 0ull, 2369656917982314496ull, 103397576569ull}}, {{0ull, 0ull, 4739313835964628992ull, 206795153138ull}}, {{0ull, 0ull, 12015909211418656768ull, 41359030627ull}}, {{0ull, 0ull, 5585074349127761920ull, 82718061255ull}}, {{0ull, 0ull, 11170148698255523840ull, 165436122510ull}}, {{0ull, 0ull, 2234029739651104768ull, 33087224502ull}}, {{0ull, 0ull, 4468059479302209536ull, 66174449004ull}}, {{0ull, 0ull, 8936118958604419072ull, 132348898008ull}}, {{0ull, 0ull, 17872237917208838144ull, 264697796016ull}}, {{0ull, 0ull, 7263796398183677952ull, 52939559203ull}}, {{0ull, 0ull, 14527592796367355904ull, 105879118406ull}}, {{0ull, 0ull, 10608441519025160192ull, 211758236813ull}}, {{0ull, 0ull, 13189734748030763008ull, 42351647362ull}}, {{0ull, 0ull, 7932725422351974400ull, 84703294725ull}}, {{0ull, 0ull, 15865450844703948800ull, 169406589450ull}}, {{0ull, 0ull, 3173090168940789760ull, 33881317890ull}}, {{0ull, 0ull, 6346180337881579520ull, 67762635780ull}}, {{0ull, 0ull, 12692360675763159040ull, 135525271560ull}}, {{0ull, 0ull, 6937977277816766464ull, 271050543121ull}}, {{0ull, 0ull, 5076944270305263616ull, 54210108624ull}}, {{0ull, 0ull, 10153888540610527232ull, 108420217248ull}}, {{0ull, 0ull, 1861033007511502848ull, 216840434497ull}}, {{0ull, 0ull, 7750904230986121216ull, 43368086899ull}}, {{0ull, 0ull, 15501808461972242432ull, 86736173798ull}}, {{0ull, 0ull, 12556872850234933248ull, 173472347597ull}}, {{0ull, 0ull, 9890072199530807296ull, 34694469519ull}}, {{0ull, 0ull, 1333400325352062976ull, 69388939039ull}}, {{0ull, 0ull, 2666800650704125952ull, 138777878078ull}}, {{0ull, 0ull, 5333601301408251904ull, 277555756156ull}}, {{0ull, 0ull, 4756069075023560704ull, 55511151231ull}}, {{0ull, 0ull, 9512138150047121408ull, 111022302462ull}}, {{0ull, 0ull, 577532226384691200ull, 222044604925ull}}, {{0ull, 0ull, 115506445276938240ull, 44408920985ull}}, {{0ull, 0ull, 231012890553876480ull, 88817841970ull}}, {{0ull, 0ull, 462025781107752960ull, 177635683940ull}}, {{0ull, 0ull, 92405156221550592ull, 35527136788ull}}, {{0ull, 0ull, 184810312443101184ull, 71054273576ull}}, {{0ull, 0ull, 369620624886202368ull, 142108547152ull}}, {{0ull, 0ull, 739241249772404736ull, 284217094304ull}}, {{0ull, 0ull, 14905243508922122240ull, 56843418860ull}}, {{0ull, 0ull, 11363742944134692864ull, 113686837721ull}}, {{0ull, 0ull, 4280741814559834112ull, 227373675443ull}}, {{0ull, 0ull, 11924194807137697792ull, 45474735088ull}}, {{0ull, 0ull, 5401645540565843968ull, 90949470177ull}}, {{0ull, 0ull, 10803291081131687936ull, 181898940354ull}}, {{0ull, 0ull, 16918053475193978880ull, 36379788070ull}}, {{0ull, 0ull, 15389362876678406144ull, 72759576141ull}}, {{0ull, 0ull, 12331981679647260672ull, 145519152283ull}}, {{0ull, 0ull, 6217219285584969728ull, 291038304567ull}}, {{0ull, 0ull, 8622141486600814592ull, 58207660913ull}}, {{0ull, 0ull, 17244282973201629184ull, 116415321826ull}}, {{0ull, 0ull, 16041821872693706752ull, 232830643653ull}}, {{0ull, 0ull, 14276410818764472320ull, 46566128730ull}}, {{0ull, 0ull, 10106077563819393024ull, 93132257461ull}}, {{0ull, 0ull, 1765411053929234432ull, 186264514923ull}}, {{0ull, 0ull, 11421128655011577856ull, 37252902984ull}}, {{0ull, 0ull, 4395513236313604096ull, 74505805969ull}}, {{0ull, 0ull, 8791026472627208192ull, 149011611938ull}}, {{0ull, 0ull, 17582052945254416384ull, 298023223876ull}}, {{0ull, 0ull, 7205759403792793600ull, 59604644775ull}}, {{0ull, 0ull, 14411518807585587200ull, 119209289550ull}}, {{0ull, 0ull, 10376293541461622784ull, 238418579101ull}}, {{0ull, 0ull, 5764607523034234880ull, 47683715820ull}}, {{0ull, 0ull, 11529215046068469760ull, 95367431640ull}}, {{0ull, 0ull, 4611686018427387904ull, 190734863281ull}}, {{0ull, 0ull, 4611686018427387904ull, 38146972656ull}}, {{0ull, 0ull, 9223372036854775808ull, 76293945312ull}}, {{0ull, 0ull, 0ull, 152587890625ull}}, {{0ull, 0ull, 0ull, 305175781250ull}}, {{0ull, 0ull, 0ull, 61035156250ull}}, {{0ull, 0ull, 0ull, 122070312500ull}}, {{0ull, 0ull, 0ull, 244140625000ull}}, {{0ull, 0ull, 0ull, 48828125000ull}}, {{0ull, 0ull, 0ull, 97656250000ull}}, {{0ull, 0ull, 0ull, 195312500000ull}}, {{0ull, 0ull, 0ull, 39062500000ull}}, {{0ull, 0ull, 0ull, 78125000000ull}}, {{0ull, 0ull, 0ull, 156250000000ull}}, {{0ull, 0ull, 0ull, 312500000000ull}}, {{0ull, 0ull, 0ull, 62500000000ull}}, {{0ull, 0ull, 0ull, 125000000000ull}}, {{0ull, 0ull, 0ull, 250000000000ull}}, {{0ull, 0ull, 0ull, 50000000000ull}}, {{0ull, 0ull, 0ull, 100000000000ull}}, {{0ull, 0ull, 0ull, 200000000000ull}}, {{0ull, 0ull, 0ull, 40000000000ull}}, {{0ull, 0ull, 0ull, 80000000000ull}}, {{0ull, 0ull, 0ull, 160000000000ull}}, {{0ull, 0ull, 0ull, 320000000000ull}}, {{0ull, 0ull, 0ull, 64000000000ull}}, {{0ull, 0ull, 0ull, 128000000000ull}}, {{0ull, 0ull, 0ull, 256000000000ull}}, {{0ull, 0ull, 0ull, 51200000000ull}}, {{0ull, 0ull, 0ull, 102400000000ull}}, {{0ull, 0ull, 0ull, 204800000000ull}}, {{0ull, 0ull, 0ull, 40960000000ull}}, {{0ull, 0ull, 0ull, 81920000000ull}}, {{0ull, 0ull, 0ull, 163840000000ull}}, {{0ull, 0ull, 0ull, 327680000000ull}}, {{0ull, 0ull, 0ull, 65536000000ull}}, {{0ull, 0ull, 0ull, 131072000000ull}}, {{0ull, 0ull, 0ull, 262144000000ull}}, {{0ull, 0ull, 0ull, 52428800000ull}}, {{0ull, 0ull, 0ull, 104857600000ull}}, {{0ull, 0ull, 0ull, 209715200000ull}}, {{0ull, 0ull, 0ull, 41943040000ull}}, {{0ull, 0ull, 0ull, 83886080000ull}}, {{0ull, 0ull, 0ull, 167772160000ull}}, {{0ull, 0ull, 0ull, 33554432000ull}}, {{0ull, 0ull, 0ull, 67108864000ull}}, {{0ull, 0ull, 0ull, 134217728000ull}}, {{0ull, 0ull, 0ull, 268435456000ull}}, {{0ull, 0ull, 0ull, 53687091200ull}}, {{0ull, 0ull, 0ull, 107374182400ull}}, {{0ull, 0ull, 0ull, 214748364800ull}}, {{0ull, 0ull, 0ull, 42949672960ull}}, {{0ull, 0ull, 0ull, 85899345920ull}}, {{0ull, 0ull, 0ull, 171798691840ull}}, {{0ull, 0ull, 0ull, 34359738368ull}}, {{0ull, 0ull, 0ull, 68719476736ull}}, {{0ull, 0ull, 0ull, 137438953472ull}}, {{0ull, 0ull, 0ull, 274877906944ull}}, {{14757395258967641293ull, 14757395258967641292ull, 14757395258967641292ull, 54975581388ull}}, {{11068046444225730970ull, 11068046444225730969ull, 11068046444225730969ull, 109951162777ull}}, {{3689348814741910324ull, 3689348814741910323ull, 3689348814741910323ull, 219902325555ull}}, {{4427218577690292388ull, 11805916207174113034ull, 737869762948382064ull, 43980465111ull}}, {{8854437155380584776ull, 5165088340638674452ull, 1475739525896764129ull, 87960930222ull}}, {{17708874310761169552ull, 10330176681277348904ull, 2951479051793528258ull, 175921860444ull}}, {{7231123676894144234ull, 9444732965739290427ull, 15347691069326346944ull, 35184372088ull}}, {{14462247353788288467ull, 442721857769029238ull, 12248638064943142273ull, 70368744177ull}}, {{10477750633867025318ull, 885443715538058477ull, 6050532056176732930ull, 140737488355ull}}, {{2508757194024499020ull, 1770887431076116955ull, 12101064112353465860ull, 281474976710ull}}, {{501751438804899804ull, 354177486215223391ull, 2420212822470693172ull, 56294995342ull}}, {{1003502877609799608ull, 708354972430446782ull, 4840425644941386344ull, 112589990684ull}}, {{2007005755219599216ull, 1416709944860893564ull, 9680851289882772688ull, 225179981368ull}}, {{401401151043919844ull, 3972690803714089036ull, 13004216702202285507ull, 45035996273ull}}, {{802802302087839687ull, 7945381607428178072ull, 7561689330695019398ull, 90071992547ull}}, {{1605604604175679373ull, 15890763214856356144ull, 15123378661390038796ull, 180143985094ull}}, {{15078516179802777168ull, 3178152642971271228ull, 17782070991245649052ull, 36028797018ull}}, {{11710288285896002719ull, 6356305285942542457ull, 17117397908781746488ull, 72057594037ull}}, {{4973832498082453822ull, 12712610571885084915ull, 15788051743853941360ull, 144115188075ull}}, {{9947664996164907643ull, 6978477070060618214ull, 13129359413998331105ull, 288230376151ull}}, {{1989532999232981529ull, 5085044228754033966ull, 6315220697541576544ull, 57646075230ull}}, {{3979065998465963058ull, 10170088457508067932ull, 12630441395083153088ull, 115292150460ull}}, {{7958131996931926115ull, 1893432841306584248ull, 6814138716456754561ull, 230584300921ull}}, {{1591626399386385223ull, 7757384197745137496ull, 5052176558033261235ull, 46116860184ull}}, {{3183252798772770446ull, 15514768395490274992ull, 10104353116066522470ull, 92233720368ull}}, {{6366505597545540892ull, 12582792717270998368ull, 1761962158423493325ull, 184467440737ull}}, {{1273301119509108179ull, 9895256172938020320ull, 7731090061168519311ull, 36893488147ull}}, {{2546602239018216357ull, 1343768272166489024ull, 15462180122337038623ull, 73786976294ull}}, {{5093204478036432714ull, 2687536544332978048ull, 12477616170964525630ull, 147573952589ull}}, {{10186408956072865427ull, 5375073088665956096ull, 6508488268219499644ull, 295147905179ull}}, {{16794677050182214379ull, 12143061061958922188ull, 16059092912611541221ull, 59029581035ull}}, {{15142610026654877141ull, 5839378050208292761ull, 13671441751513530827ull, 118059162071ull}}, {{11838475979600202665ull, 11678756100416585523ull, 8896139429317510038ull, 236118324143ull}}, {{17125090454887681826ull, 6025100034825227427ull, 12847274330089232977ull, 47223664828ull}}, {{15803436836065812036ull, 12050200069650454855ull, 7247804586468914338ull, 94447329657ull}}, {{13160129598422072455ull, 5653656065591358095ull, 14495609172937828677ull, 188894659314ull}}, {{6321374734426324815ull, 4820080027860181942ull, 17656517093555207028ull, 37778931862ull}}, {{12642749468852649629ull, 9640160055720363884ull, 16866290113400862440ull, 75557863725ull}}, {{6838754863995747641ull, 833576037731176153ull, 15285836153092173265ull, 151115727451ull}}, {{13677509727991495281ull, 1667152075462352306ull, 12124928232474794914ull, 302231454903ull}}, {{13803548389824030026ull, 7712128044576291107ull, 13493032090720689952ull, 60446290980ull}}, {{9160352705938508436ull, 15424256089152582215ull, 8539320107731828288ull, 120892581961ull}}, {{18320705411877016871ull, 12401768104595612814ull, 17078640215463656577ull, 241785163922ull}}, {{14732187526601134344ull, 17237748879886763855ull, 10794425672576551961ull, 48357032784ull}}, {{11017630979492717072ull, 16028753686063976095ull, 3142107271443552307ull, 96714065569ull}}, {{3588517885275882528ull, 13610763298418400575ull, 6284214542887104615ull, 193428131138ull}}, {{11785750021280907476ull, 13790199103909411084ull, 12324889352803151892ull, 38685626227ull}}, {{5124755968852263335ull, 9133654134109270553ull, 6203034631896752169ull, 77371252455ull}}, {{10249511937704526669ull, 18267308268218541106ull, 12406069263793504338ull, 154742504910ull}}, {{2052279801699501721ull, 18087872462727530597ull, 6365394453877457061ull, 309485009821ull}}, {{15167851219307541637ull, 10996272122029326765ull, 4962427705517401735ull, 61897001964ull}}, {{11888958364905531658ull, 3545800170349101915ull, 9924855411034803471ull, 123794003928ull}}, {{5331172656101511700ull, 7091600340698203831ull, 1402966748360055326ull, 247588007857ull}}, {{15823629790187943633ull, 12486366512365371735ull, 7659290979155831711ull, 49517601571ull}}, {{13200515506666335650ull, 6525988951021191855ull, 15318581958311663423ull, 99035203142ull}}, {{7954286939623119683ull, 13051977902042383711ull, 12190419842913775230ull, 198070406285ull}}, {{5280206202666534260ull, 2610395580408476742ull, 2438083968582755046ull, 39614081257ull}}, {{10560412405333068520ull, 5220791160816953484ull, 4876167937165510092ull, 79228162514ull}}, {{2674080736956585423ull, 10441582321633906969ull, 9752335874331020184ull, 158456325028ull}}, {{5348161473913170846ull, 2436420569558262322ull, 1057927674952488753ull, 316912650057ull}}, {{8448329924266454816ull, 487284113911652464ull, 7590283164474318397ull, 63382530011ull}}, {{16896659848532909632ull, 974568227823304928ull, 15180566328948636794ull, 126765060022ull}}, {{15346575623356267647ull, 1949136455646609857ull, 11914388584187721972ull, 253530120045ull}}, {{17826710383638894823ull, 7768524920613142617ull, 2382877716837544394ull, 50706024009ull}}, {{17206676693568238029ull, 15537049841226285235ull, 4765755433675088788ull, 101412048018ull}}, {{15966609313426924441ull, 12627355608743018855ull, 9531510867350177577ull, 202824096036ull}}, {{14261368306911115858ull, 13593517565974334740ull, 5595650988211945838ull, 40564819207ull}}, {{10075992540112680100ull, 8740291058239117865ull, 11191301976423891677ull, 81129638414ull}}, {{1705241006515808583ull, 17480582116478235731ull, 3935859879138231738ull, 162259276829ull}}, {{3410482013031617166ull, 16514420159246919846ull, 7871719758276463477ull, 324518553658ull}}, {{4371445217348233757ull, 3302884031849383969ull, 12642390395881023665ull, 64903710731ull}}, {{8742890434696467513ull, 6605768063698767938ull, 6838036718052495714ull, 129807421463ull}}, {{17485780869392935026ull, 13211536127397535876ull, 13676073436104991428ull, 259614842926ull}}, {{3497156173878587006ull, 17399702484447148468ull, 6424563501962908608ull, 51922968585ull}}, {{6994312347757174011ull, 16352660895184745320ull, 12849127003925817217ull, 103845937170ull}}, {{13988624695514348021ull, 14258577716659939024ull, 7251509934142082819ull, 207691874341ull}}, {{17555120198070510897ull, 2851715543331987804ull, 5139650801570326887ull, 41538374868ull}}, {{16663496322431470178ull, 5703431086663975609ull, 10279301603140653774ull, 83076749736ull}}, {{14880248571153388740ull, 11406862173327951219ull, 2111859132571755932ull, 166153499473ull}}, {{17733444973198319041ull, 2281372434665590243ull, 11490418270740082156ull, 33230699894ull}}, {{17020145872687086466ull, 4562744869331180487ull, 4534092467770612696ull, 66461399789ull}}, {{15593547671664621315ull, 9125489738662360975ull, 9068184935541225392ull, 132922799578ull}}, {{12740351269619691014ull, 18250979477324721951ull, 18136369871082450784ull, 265845599156ull}}, {{6237419068665848526ull, 3650195895464944390ull, 7316622788958400480ull, 53169119831ull}}, {{12474838137331697052ull, 7300391790929888780ull, 14633245577916800960ull, 106338239662ull}}, {{6502932200953842488ull, 14600783581859777561ull, 10819747082124050304ull, 212676479325ull}}, {{1300586440190768498ull, 17677551975339596805ull, 2163949416424810060ull, 42535295865ull}}, {{2601172880381536995ull, 16908359876969641994ull, 4327898832849620121ull, 85070591730ull}}, {{5202345760763073990ull, 15369975680229732372ull, 8655797665699240243ull, 170141183460ull}}, {{1040469152152614798ull, 14142041580271677444ull, 1731159533139848048ull, 34028236692ull}}, {{2080938304305229596ull, 9837339086833803272ull, 3462319066279696097ull, 68056473384ull}}, {{4161876608610459192ull, 1227934099958054928ull, 6924638132559392195ull, 136112946768ull}}, {{8323753217220918384ull, 2455868199916109856ull, 13849276265118784390ull, 272225893536ull}}, {{9043448272928004324ull, 4180522454725132294ull, 6459204067765667201ull, 54445178707ull}}, {{18086896545856008647ull, 8361044909450264588ull, 12918408135531334402ull, 108890357414ull}}, {{17727049018002465677ull, 16722089818900529177ull, 7390072197353117188ull, 217780714829ull}}, {{18302805062568134429ull, 10723115593263926481ull, 16235409698438264730ull, 43556142965ull}}, {{18158866051426717241ull, 2999487112818301347ull, 14024075323166977845ull, 87112285931ull}}, {{17870988029143882865ull, 5998974225636602695ull, 9601406572624404074ull, 174224571863ull}}, {{10952895235312597220ull, 8578492474611141185ull, 12988327758750611784ull, 34844914372ull}}, {{3459046396915642823ull, 17156984949222282371ull, 7529911443791671952ull, 69689828745ull}}, {{6918092793831285646ull, 15867225824735013126ull, 15059822887583343905ull, 139379657490ull}}, {{13836185587662571291ull, 13287707575760474636ull, 11672901701457136195ull, 278759314981ull}}, {{10145934747016334905ull, 6346890329894005250ull, 6023929155033337562ull, 55751862996ull}}, {{1845125420323118193ull, 12693780659788010501ull, 12047858310066675124ull, 111503725992ull}}, {{3690250840646236386ull, 6940817245866469386ull, 5648972546423798633ull, 223007451985ull}}, {{15495445427096888570ull, 12456209893399024846ull, 1129794509284759726ull, 44601490397ull}}, {{12544146780484225524ull, 6465675713088498077ull, 2259589018569519453ull, 89202980794ull}}, {{6641549487258899432ull, 12931351426176996155ull, 4519178037139038906ull, 178405961588ull}}, {{16085705156419421180ull, 17343665544203040523ull, 11971882051653538750ull, 35681192317ull}}, {{13724666239129290743ull, 16240587014696529431ull, 5497020029597525885ull, 71362384635ull}}, {{9002588404549029869ull, 14034429955683507247ull, 10994040059195051771ull, 142724769270ull}}, {{18005176809098059738ull, 9622115837657462878ull, 3541336044680551927ull, 285449538541ull}}, {{7290384176561522271ull, 12992469611757223545ull, 4397616023678020708ull, 57089907708ull}}, {{14580768353123044542ull, 7538195149804895474ull, 8795232047356041417ull, 114179815416ull}}, {{10714792632536537467ull, 15076390299609790949ull, 17590464094712082834ull, 228359630832ull}}, {{2142958526507307494ull, 6704626874663868513ull, 10896790448426237213ull, 45671926166ull}}, {{4285917053014614987ull, 13409253749327737026ull, 3346836823142922810ull, 91343852333ull}}, {{8571834106029229974ull, 8371763424945922436ull, 6693673646285845621ull, 182687704666ull}}, {{12782413265431576965ull, 9053050314473005133ull, 5028083543999079447ull, 36537540933ull}}, {{7118082457153602313ull, 18106100628946010267ull, 10056167087998158894ull, 73075081866ull}}, {{14236164914307204626ull, 17765457184182468918ull, 1665590102286766173ull, 146150163733ull}}, {{10025585754904857635ull, 17084170294655386221ull, 3331180204573532347ull, 292300327466ull}}, {{16762512409948612820ull, 14484880503156808213ull, 4355584855656616792ull, 58460065493ull}}, {{15078280746187674024ull, 10523016932604064811ull, 8711169711313233585ull, 116920130986ull}}, {{11709817418665796431ull, 2599289791498578007ull, 17422339422626467171ull, 233840261972ull}}, {{2341963483733159287ull, 11587904402525446571ull, 10863165514009114080ull, 46768052394ull}}, {{4683926967466318573ull, 4729064731341341526ull, 3279586954308676545ull, 93536104789ull}}, {{9367853934932637145ull, 9458129462682683052ull, 6559173908617353090ull, 187072209578ull}}, {{1873570786986527429ull, 12959672336762267580ull, 12379881225949201587ull, 37414441915ull}}, {{3747141573973054858ull, 7472600599814983544ull, 6313018378188851559ull, 74828883831ull}}, {{7494283147946109716ull, 14945201199629967088ull, 12626036756377703118ull, 149657767662ull}}, {{14988566295892219432ull, 11443658325550382560ull, 6805329439045854621ull, 299315535325ull}}, {{6687062073920354210ull, 5978080479851986835ull, 1361065887809170924ull, 59863107065ull}}, {{13374124147840708419ull, 11956160959703973670ull, 2722131775618341848ull, 119726214130ull}}, {{8301504221971865222ull, 5465577845698395725ull, 5444263551236683697ull, 239452428260ull}}, {{9038998473878193691ull, 8471813198623499791ull, 1088852710247336739ull, 47890485652ull}}, {{18077996947756387382ull, 16943626397246999582ull, 2177705420494673478ull, 95780971304ull}}, {{17709249821803223148ull, 15440508720784447549ull, 4355410840989346957ull, 191561942608ull}}, {{18299245223328285923ull, 3088101744156889509ull, 11939128612423600361ull, 38312388521ull}}, {{18151746372947020229ull, 6176203488313779019ull, 5431513151137649106ull, 76624777043ull}}, {{17856748672184488841ull, 12352406976627558039ull, 10863026302275298212ull, 153249554086ull}}, {{17266753270659426066ull, 6258069879545564463ull, 3279308530841044809ull, 306499108173ull}}, {{3453350654131885214ull, 8630311605392933539ull, 11723908150393939931ull, 61299821634ull}}, {{6906701308263770427ull, 17260623210785867078ull, 5001072227078328246ull, 122599643269ull}}, {{13813402616527540853ull, 16074502347862182540ull, 10002144454156656493ull, 245199286538ull}}, {{6452029338047418494ull, 6904249284314346831ull, 13068475335057062268ull, 49039857307ull}}, {{12904058676094836988ull, 13808498568628693662ull, 7690206596404572920ull, 98079714615ull}}, {{7361373278480122359ull, 9170253063547835709ull, 15380413192809145841ull, 196159429230ull}}, {{1472274655696024472ull, 5523399427451477465ull, 3076082638561829168ull, 39231885846ull}}, {{2944549311392048944ull, 11046798854902954930ull, 6152165277123658336ull, 78463771692ull}}, {{5889098622784097888ull, 3646853636096358244ull, 12304330554247316673ull, 156927543384ull}}, {{11778197245568195775ull, 7293707272192716488ull, 6161917034785081730ull, 313855086769ull}}, {{9734337078597459802ull, 16216136713406184590ull, 15989778665924657638ull, 62771017353ull}}, {{1021930083485367987ull, 13985529353102817565ull, 13532813258139763661ull, 125542034707ull}}, {{2043860166970735973ull, 9524314632496083514ull, 8618882442569975707ull, 251084069415ull}}, {{4098120848136057518ull, 9283560555983037349ull, 1723776488513995141ull, 50216813883ull}}, {{8196241696272115036ull, 120377038256523082ull, 3447552977027990283ull, 100433627766ull}}, {{16392483392544230072ull, 240754076513046164ull, 6895105954055980566ull, 200867255532ull}}, {{10657194307992666661ull, 11116197259528340202ull, 8757718820295016759ull, 40173451106ull}}, {{2867644542275781706ull, 3785650445347128789ull, 17515437640590033519ull, 80346902212ull}}, {{5735289084551563411ull, 7571300890694257578ull, 16584131207470515422ull, 160693804425ull}}, {{11470578169103126821ull, 15142601781388515156ull, 14721518341231479228ull, 321387608851ull}}, {{2294115633820625365ull, 17785915615245344324ull, 6633652482988206168ull, 64277521770ull}}, {{4588231267641250729ull, 17125087156781137032ull, 13267304965976412337ull, 128555043540ull}}, {{9176462535282501457ull, 15803430239852722448ull, 8087865858243273059ull, 257110087081ull}}, {{12903338951282231261ull, 3160686047970544489ull, 5306921986390564935ull, 51422017416ull}}, {{7359933828854910906ull, 6321372095941088979ull, 10613843972781129870ull, 102844034832ull}}, {{14719867657709821812ull, 12642744191882177958ull, 2780943871852708124ull, 205688069665ull}}, {{10322671161025785009ull, 17285944097344076884ull, 556188774370541624ull, 41137613933ull}}, {{2198598248342018402ull, 16125144120978602153ull, 1112377548741083249ull, 82275227866ull}}, {{4397196496684036804ull, 13803544168247652690ull, 2224755097482166499ull, 164550455732ull}}, {{4568788114078717684ull, 6450057648391440861ull, 7823648648980253946ull, 32910091146ull}}, {{9137576228157435368ull, 12900115296782881722ull, 15647297297960507892ull, 65820182292ull}}, {{18275152456314870736ull, 7353486519856211828ull, 12847850522211464169ull, 131640364585ull}}, {{18103560838920189855ull, 14706973039712423657ull, 7248956970713376722ull, 263280729171ull}}, {{3620712167784037971ull, 14009441052168215701ull, 5139140208884585667ull, 52656145834ull}}, {{7241424335568075942ull, 9572138030626879786ull, 10278280417769171335ull, 105312291668ull}}, {{14482848671136151884ull, 697531987544207956ull, 2109816761828791055ull, 210624583337ull}}, {{13964616178452961347ull, 7518204026992662237ull, 7800660981849578857ull, 42124916667ull}}, {{9482488283196371077ull, 15036408053985324475ull, 15601321963699157714ull, 84249833334ull}}, {{518232492683190538ull, 11626072034261097335ull, 12755899853688763813ull, 168499666669ull}}, {{7482344128020458754ull, 9703912036336040113ull, 17308575229705394055ull, 33699933333ull}}, {{14964688256040917508ull, 961079998962528610ull, 16170406385701236495ull, 67399866667ull}}, {{11482632438372283400ull, 1922159997925057221ull, 13894068697692921374ull, 134799733335ull}}, {{4518520803035015183ull, 3844319995850114443ull, 9341393321676291132ull, 269599466671ull}}, {{4593052975348913360ull, 11836910443395753858ull, 5557627479077168549ull, 53919893334ull}}, {{9186105950697826720ull, 5227076813081956100ull, 11115254958154337099ull, 107839786668ull}}, {{18372211901395653440ull, 10454153626163912200ull, 3783765842599122582ull, 215679573337ull}}, {{18431837639246771981ull, 16848225984200423732ull, 8135450798003645162ull, 43135914667ull}}, {{18416931204783992346ull, 15249707894691295849ull, 16270901596007290325ull, 86271829334ull}}, {{18387118335858433075ull, 12052671715673040083ull, 14095059118305029035ull, 172543658669ull}}, {{11056121296655507262ull, 17167929602102249309ull, 17576407082628647099ull, 34508731733ull}}, {{3665498519601462907ull, 15889115130494947003ull, 16706070091547742583ull, 69017463467ull}}, {{7330997039202925814ull, 13331486187280342390ull, 14965396109385933551ull, 138034926935ull}}, {{14661994078405851627ull, 8216228300851133164ull, 11484048145062315487ull, 276069853871ull}}, {{10311096445164990972ull, 12711292104395957602ull, 5986158443754373420ull, 55213970774ull}}, {{2175448816620430328ull, 6975840135082363589ull, 11972316887508746841ull, 110427941548ull}}, {{4350897633240860655ull, 13951680270164727178ull, 5497889701307942066ull, 220855883097ull}}, {{4559528341390082455ull, 13858382498258676405ull, 8478275569745409059ull, 44171176619ull}}, {{9119056682780164909ull, 9270020922807801194ull, 16956551139490818119ull, 88342353238ull}}, {{18238113365560329817ull, 93297771906050772ull, 15466358205272084623ull, 176684706477ull}}, {{11026320302595886610ull, 18659554381210154ull, 10471969270538237571ull, 35336941295ull}}, {{3605896531482221604ull, 37319108762420309ull, 2497194467366923526ull, 70673882591ull}}, {{7211793062964443207ull, 74638217524840618ull, 4994388934733847052ull, 141347765182ull}}, {{14423586125928886414ull, 149276435049681236ull, 9988777869467694104ull, 282695530364ull}}, {{17642112484153418576ull, 11097901731235667216ull, 16755150832861180113ull, 56539106072ull}}, {{16837480894597285536ull, 3749059388761782817ull, 15063557592012808611ull, 113078212145ull}}, {{15228217715485019455ull, 7498118777523565635ull, 11680371110316065606ull, 226156424291ull}}, {{10424341172580824538ull, 8878321384988533773ull, 6025423036805123444ull, 45231284858ull}}, {{2401938271452097459ull, 17756642769977067547ull, 12050846073610246888ull, 90462569716ull}}, {{4803876542904194917ull, 17066541466244583478ull, 5654948073510942161ull, 180925139433ull}}, {{8339472938064659630ull, 18170703552216557988ull, 12199036058927919401ull, 36185027886ull}}, {{16678945876129319260ull, 17894663030723564360ull, 5951328044146287187ull, 72370055773ull}}, {{14911147678549086904ull, 17342581987737577105ull, 11902656088292574375ull, 144740111546ull}}, {{11375551283388622191ull, 16238419901765602595ull, 5358568102875597135ull, 289480223093ull}}, {{13343156700903455408ull, 14315730424578851488ull, 12139760064800850396ull, 57896044618ull}}, {{8239569328097359200ull, 10184716775448151361ull, 5832776055892149177ull, 115792089237ull}}, {{16479138656194718399ull, 1922689477186751106ull, 11665552111784298355ull, 231584178474ull}}, {{3295827731238943680ull, 15141933154404991514ull, 17090505681324500963ull, 46316835694ull}}, {{6591655462477887360ull, 11837122235100431412ull, 15734267288939450311ull, 92633671389ull}}, {{13183310924955774719ull, 5227500396491311208ull, 13021790504169349007ull, 185267342779ull}}, {{17394057443958796237ull, 4734848894040172564ull, 17361753359801511094ull, 37053468555ull}}, {{16341370814208040858ull, 9469697788080345129ull, 16276762645893470572ull, 74106937111ull}}, {{14235997554706530099ull, 492651502451138643ull, 14106781218077389529ull, 148213874223ull}}, {{10025251035703508581ull, 985303004902277287ull, 9766818362445227442ull, 296427748447ull}}, {{5694399021882612040ull, 14954455859948096750ull, 9332061301972866134ull, 59285549689ull}}, {{11388798043765224079ull, 11462167646186641884ull, 217378530236180653ull, 118571099379ull}}, {{4330852013820896542ull, 4477591218663732153ull, 434757060472361307ull, 237142198758ull}}, {{11934216846989910278ull, 895518243732746430ull, 11154997856320203231ull, 47428439751ull}}, {{5421689620270268940ull, 1791036487465492861ull, 3863251638930854846ull, 94856879503ull}}, {{10843379240540537880ull, 3582072974930985722ull, 7726503277861709692ull, 189713759006ull}}, {{2168675848108107576ull, 11784461039211928114ull, 5234649470314252261ull, 37942751801ull}}, {{4337351696216215152ull, 5122178004714304612ull, 10469298940628504523ull, 75885503602ull}}, {{8674703392432430304ull, 10244356009428609224ull, 2491853807547457430ull, 151771007205ull}}, {{17349406784864860608ull, 2041967945147666832ull, 4983707615094914861ull, 303542014410ull}}, {{14537927801198703092ull, 4097742403771443689ull, 996741523018982972ull, 60708402882ull}}, {{10629111528687854567ull, 8195484807542887379ull, 1993483046037965944ull, 121416805764ull}}, {{2811478983666157517ull, 16390969615085774759ull, 3986966092075931888ull, 242833611528ull}}, {{562295796733231504ull, 6967542737759065275ull, 11865439662640917347ull, 48566722305ull}}, {{1124591593466463007ull, 13935085475518130550ull, 5284135251572283078ull, 97133444611ull}}, {{2249183186932926013ull, 9423426877326709484ull, 10568270503144566157ull, 194266889222ull}}, {{11517883081612316173ull, 16642080634432983189ull, 9492351730112733877ull, 38853377844ull}}, {{4589022089515080729ull, 14837417195156414763ull, 537959386515916139ull, 77706755689ull}}, {{9178044179030161457ull, 11228090316603277910ull, 1075918773031832279ull, 155413511378ull}}, {{18356088358060322914ull, 4009436559497004204ull, 2151837546063664559ull, 310827022756ull}}, {{18428612930579705876ull, 801887311899400840ull, 4119716323954643235ull, 62165404551ull}}, {{18410481787449860135ull, 1603774623798801681ull, 8239432647909286470ull, 124330809102ull}}, {{18374219501190168654ull, 3207549247597603363ull, 16478865295818572940ull, 248661618204ull}}, {{11053541529721854378ull, 15398905108487161965ull, 18053168318131355880ull, 49732323640ull}}, {{3660338985734157139ull, 12351066143264772315ull, 17659592562553160145ull, 99464647281ull}}, {{7320677971468314277ull, 6255388212819993014ull, 16872441051396768675ull, 198929294563ull}}, {{8842833223777483502ull, 12319124086789729572ull, 14442534654505084704ull, 39785858912ull}}, {{17685666447554967004ull, 6191504099869907528ull, 10438325235300617793ull, 79571717825ull}}, {{16924588821400382391ull, 12383008199739815057ull, 2429906396891683970ull, 159143435651ull}}, {{15402433569091213166ull, 6319272325770078499ull, 4859812793783367941ull, 318286871302ull}}, {{10459184343302063280ull, 12331900909379746669ull, 8350660188240494234ull, 63657374260ull}}, {{2471624612894574944ull, 6217057745049941723ull, 16701320376480988469ull, 127314748520ull}}, {{4943249225789149887ull, 12434115490099883446ull, 14955896679252425322ull, 254629497041ull}}, {{15746045104125471271ull, 13554869542245707658ull, 6680528150592395387ull, 50925899408ull}}, {{13045346134541390925ull, 8662995010781863701ull, 13361056301184790775ull, 101851798816ull}}, {{7643948195373230233ull, 17325990021563727403ull, 8275368528660029934ull, 203703597633ull}}, {{1528789639074646047ull, 10843895633796566127ull, 12723120149957736956ull, 40740719526ull}}, {{3057579278149292093ull, 3241047193883580638ull, 6999496226205922297ull, 81481439053ull}}, {{6115158556298584186ull, 6482094387767161276ull, 13998992452411844594ull, 162962878106ull}}, {{12230317112597168372ull, 12964188775534322552ull, 9551240831114137572ull, 325925756213ull}}, {{9824761052003254321ull, 2592837755106864510ull, 12978294610448558484ull, 65185151242ull}}, {{1202778030296957026ull, 5185675510213729021ull, 7509845147187565352ull, 130370302485ull}}, {{2405556060593914051ull, 10371351020427458042ull, 15019690294375130704ull, 260740604970ull}}, {{4170460026860693134ull, 16831665463053132901ull, 3003938058875026140ull, 52148120994ull}}, {{8340920053721386267ull, 15216586852396714186ull, 6007876117750052281ull, 104296241988ull}}, {{16681840107442772534ull, 11986429631083876756ull, 12015752235500104563ull, 208592483976ull}}, {{3336368021488554507ull, 17154681185184416644ull, 6092499261841931235ull, 41718496795ull}}, {{6672736042977109014ull, 15862618296659281672ull, 12184998523683862471ull, 83436993590ull}}, {{13345472085954218027ull, 13278492519609011728ull, 5923252973658173327ull, 166873987181ull}}, {{6358443231932753929ull, 13723744948147533315ull, 4873999409473544988ull, 33374797436ull}}, {{12716886463865507858ull, 9000745822585515014ull, 9747998818947089977ull, 66749594872ull}}, {{6987028854021464099ull, 18001491645171030029ull, 1049253564184628338ull, 133499189745ull}}, {{13974057708042928197ull, 17556239216632508442ull, 2098507128369256677ull, 266998379490ull}}, {{17552206800576226933ull, 10889945472810322334ull, 419701425673851335ull, 53399675898ull}}, {{16657669527442902249ull, 3333146871911093053ull, 839402851347702671ull, 106799351796ull}}, {{14868594981176252881ull, 6666293743822186107ull, 1678805702695405342ull, 213598703592ull}}, {{6663067810977160900ull, 16090654007732078514ull, 7714458770022901714ull, 42719740718ull}}, {{13326135621954321799ull, 13734563941754605412ull, 15428917540045803429ull, 85439481436ull}}, {{8205527170199091982ull, 9022383809799659209ull, 12411091006382055243ull, 170878962873ull}}, {{1641105434039818397ull, 5493825576701842165ull, 13550264645502142018ull, 34175792574ull}}, {{3282210868079636793ull, 10987651153403684330ull, 8653785217294732420ull, 68351585149ull}}, {{6564421736159273585ull, 3528558233097817044ull, 17307570434589464841ull, 136703170298ull}}, {{13128843472318547170ull, 7057116466195634088ull, 16168396795469378066ull, 273406340597ull}}, {{6315117509205619758ull, 12479469737464857787ull, 10612376988577696259ull, 54681268119ull}}, {{12630235018411239515ull, 6512195401220163958ull, 2778009903445840903ull, 109362536239ull}}, {{6813725963112927413ull, 13024390802440327917ull, 5556019806891681806ull, 218725072478ull}}, {{5052094007364495806ull, 17362273419455706876ull, 12179250405604067330ull, 43745014495ull}}, {{10104188014728991612ull, 16277802765201862136ull, 5911756737498583045ull, 87490028991ull}}, {{1761631955748431607ull, 14108861456694172657ull, 11823513474997166091ull, 174980057982ull}}, {{352326391149686322ull, 13889818735564565501ull, 9743400324483253864ull, 34996011596ull}}, {{704652782299372643ull, 9332893397419579386ull, 1040056575256956113ull, 69992023193ull}}, {{1409305564598745286ull, 219042721129607156ull, 2080113150513912227ull, 139984046386ull}}, {{2818611129197490572ull, 438085442259214312ull, 4160226301027824454ull, 279968092772ull}}, {{11631768670065229084ull, 3776965903193753185ull, 8210742889689385537ull, 55993618554ull}}, {{4816793266420906552ull, 7553931806387506371ull, 16421485779378771074ull, 111987237108ull}} }; static const BID_UINT128 bid_coefflimits_bid32[] = { {{10000000ull, 0ull}}, {{2000000ull, 0ull}}, {{400000ull, 0ull}}, {{80000ull, 0ull}}, {{16000ull, 0ull}}, {{3200ull, 0ull}}, {{640ull, 0ull}}, {{128ull, 0ull}}, {{25ull, 0ull}}, {{5ull, 0ull}}, {{1ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}} }; // ********************************************************************** static const BID_UINT128 bid_breakpoints_bid64[] = { {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{632147898099709952ull, 73239311802481213ull}}, {{9539445985904630784ull, 36619655901240606ull}}, {{4769722992952315392ull, 18309827950620303ull}}, {{5401870891052025344ull, 91549139753101516ull}}, {{2700935445526012672ull, 45774569876550758ull}}, {{1350467722763006208ull, 22887284938275379ull}}, {{6752338613815031552ull, 114436424691376895ull}}, {{12599541343762291456ull, 57218212345688447ull}}, {{15523142708735921408ull, 28609106172844223ull}}, {{3828737248841401600ull, 143045530864221119ull}}, {{11137740661275476480ull, 71522765432110559ull}}, {{14792242367492514048ull, 35761382716055279ull}}, {{16619493220601032704ull, 17880691358027639ull}}, {{9310489808166957824ull, 89403456790138199ull}}, {{13878616940938254592ull, 44701728395069099ull}}, {{16162680507323902976ull, 22350864197534549ull}}, {{7026426241781309440ull, 111754320987672749ull}}, {{12736585157745430528ull, 55877160493836374ull}}, {{6368292578872715264ull, 27938580246918187ull}}, {{13394718820654024704ull, 139692901234590936ull}}, {{6697359410327012352ull, 69846450617295468ull}}, {{3348679705163506176ull, 34923225308647734ull}}, {{1674339852581753088ull, 17461612654323867ull}}, {{8371699262908765440ull, 87308063271619335ull}}, {{13409221668309158400ull, 43654031635809667ull}}, {{15927982871009355008ull, 21827015817904833ull}}, {{5852938060208568832ull, 109135079089524169ull}}, {{12149841066959060224ull, 54567539544762084ull}}, {{6074920533479529984ull, 27283769772381042ull}}, {{11927858593688099072ull, 136418848861905211ull}}, {{15187301333698825216ull, 68209424430952605ull}}, {{16817022703704188416ull, 34104712215476302ull}}, {{8408511351852094208ull, 17052356107738151ull}}, {{5149068611841367808ull, 85261780538690757ull}}, {{11797906342775459584ull, 42630890269345378ull}}, {{5898953171387729664ull, 21315445134672689ull}}, {{11048021783229097728ull, 106577225673363446ull}}, {{5524010891614548736ull, 53288612836681723ull}}, {{11985377482662050048ull, 26644306418340861ull}}, {{4586655192181596416ull, 133221532091704308ull}}, {{2293327596090798080ull, 66610766045852154ull}}, {{1146663798045399040ull, 33305383022926077ull}}, {{9796703935877475328ull, 16652691511463038ull}}, {{12090031531968273664ull, 83263457557315192ull}}, {{6045015765984136704ull, 41631728778657596ull}}, {{3022507882992068352ull, 20815864389328798ull}}, {{15112539414960342016ull, 104079321946643990ull}}, {{7556269707480171008ull, 52039660973321995ull}}, {{13001506890594861312ull, 26019830486660997ull}}, {{9667302231845651712ull, 130099152433304988ull}}, {{4833651115922825728ull, 65049576216652494ull}}, {{2416825557961412864ull, 32524788108326247ull}}, {{10431784815835482112ull, 16262394054163123ull}}, {{15265435931758308096ull, 81311970270815617ull}}, {{16856090002733929728ull, 40655985135407808ull}}, {{8428045001366964736ull, 20327992567703904ull}}, {{5246736859415721472ull, 101639962838519522ull}}, {{2623368429707860736ull, 50819981419259761ull}}, {{10535056251708706048ull, 25409990709629880ull}}, {{15781793111124427520ull, 127049953548149402ull}}, {{7890896555562213632ull, 63524976774074701ull}}, {{13168820314635882496ull, 31762488387037350ull}}, {{6584410157317941248ull, 15881244193518675ull}}, {{14475306712880155136ull, 79406220967593376ull}}, {{7237653356440077568ull, 39703110483796688ull}}, {{3618826678220038656ull, 19851555241898344ull}}, {{18094133391100194048ull, 99257776209491720ull}}, {{9047066695550096896ull, 49628888104745860ull}}, {{4523533347775048448ull, 24814444052372930ull}}, {{4170922665165690880ull, 124072220261864651ull}}, {{11308833369437621248ull, 62036110130932325ull}}, {{14877788721573586432ull, 31018055065466162ull}}, {{7438894360786793216ull, 15509027532733081ull}}, {{300983656514862848ull, 77545137663665407ull}}, {{9373863865112207104ull, 38772568831832703ull}}, {{13910303969410879232ull, 19386284415916351ull}}, {{14211287625925742080ull, 96931422079581758ull}}, {{7105643812962871040ull, 48465711039790879ull}}, {{12776193943336211200ull, 24232855519895439ull}}, {{8540737495552401920ull, 121164277599477198ull}}, {{4270368747776200960ull, 60582138799738599ull}}, {{11358556410742876160ull, 30291069399869299ull}}, {{14902650242226213888ull, 15145534699934649ull}}, {{726274916292863232ull, 75727673499673249ull}}, {{9586509495001207296ull, 37863836749836624ull}}, {{4793254747500603648ull, 18931918374918312ull}}, {{5519529663793467136ull, 94659591874591561ull}}, {{11983136868751509248ull, 47329795937295780ull}}, {{5991568434375754496ull, 23664897968647890ull}}, {{11511098098169221632ull, 118324489843239451ull}}, {{14978921085939386624ull, 59162244921619725ull}}, {{16712832579824468992ull, 29581122460809862ull}}, {{8356416289912234496ull, 14790561230404931ull}}, {{4888593302142069504ull, 73952806152024657ull}}, {{11667668687925810432ull, 36976403076012328ull}}, {{5833834343962905088ull, 18488201538006164ull}}, {{10722427646104974848ull, 92441007690030821ull}}, {{14584585859907263232ull, 46220503845015410ull}}, {{7292292929953631488ull, 23110251922507705ull}}, {{18014720576058606592ull, 115551259612538526ull}}, {{9007360288029303296ull, 57775629806269263ull}}, {{13727052180869427456ull, 28887814903134631ull}}, {{16086898127289489408ull, 14443907451567315ull}}, {{6647514341609241088ull, 72219537257836579ull}}, {{12547129207659396352ull, 36109768628918289ull}}, {{15496936640684473856ull, 18054884314459144ull}}, {{3697706908584163584ull, 90274421572295724ull}}, {{1848853454292081664ull, 45137210786147862ull}}, {{924426727146040832ull, 22568605393073931ull}}, {{4622133635730204416ull, 112843026965369655ull}}, {{11534438854719877888ull, 56421513482684827ull}}, {{14990591464214714624ull, 28210756741342413ull}}, {{1165981026235367680ull, 141053783706712069ull}}, {{9806362549972459520ull, 70526891853356034ull}}, {{4903181274986229760ull, 35263445926678017ull}}, {{11674962674347890688ull, 17631722963339008ull}}, {{3034581150610798848ull, 88158614816695043ull}}, {{10740662612160175104ull, 44079307408347521ull}}, {{14593703342934863360ull, 22039653704173760ull}}, {{17628284493545662208ull, 110198268520868803ull}}, {{18037514283627606784ull, 55099134260434401ull}}, {{18242129178668579072ull, 27549567130217200ull}}, {{17423669598504689920ull, 137747835651086004ull}}, {{8711834799252344832ull, 68873917825543002ull}}, {{4355917399626172416ull, 34436958912771501ull}}, {{11401330736667862016ull, 17218479456385750ull}}, {{1666421462210655232ull, 86092397281928753ull}}, {{10056582767960103424ull, 43046198640964376ull}}, {{5028291383980051712ull, 21523099320482188ull}}, {{6694712846190706944ull, 107615496602410941ull}}, {{12570728459950129152ull, 53807748301205470ull}}, {{6285364229975064576ull, 26903874150602735ull}}, {{12980077076165771776ull, 134519370753013676ull}}, {{6490038538082885888ull, 67259685376506838ull}}, {{3245019269041442816ull, 33629842688253419ull}}, {{10845881671375497216ull, 16814921344126709ull}}, {{17335920209458383104ull, 84074606720633547ull}}, {{17891332141583967232ull, 42037303360316773ull}}, {{18169038107646759424ull, 21018651680158386ull}}, {{17058214243395590912ull, 105093258400791934ull}}, {{8529107121697795328ull, 52546629200395967ull}}, {{13487925597703673344ull, 26273314600197983ull}}, {{12099395767389712896ull, 131366573000989918ull}}, {{6049697883694856448ull, 65683286500494959ull}}, {{12248220978702203904ull, 32841643250247479ull}}, {{15347482526205877760ull, 16420821625123739ull}}, {{2950436336191182592ull, 82104108125618699ull}}, {{10698590204950366976ull, 41052054062809349ull}}, {{14572667139329959168ull, 20526027031404674ull}}, {{17523103475521142016ull, 102630135157023373ull}}, {{17984923774615346688ull, 51315067578511686ull}}, {{8992461887307673344ull, 25657533789255843ull}}, {{8068821289119264000ull, 128287668946279217ull}}, {{13257782681414407680ull, 64143834473139608ull}}, {{6628891340707203840ull, 32071917236569804ull}}, {{3314445670353601792ull, 16035958618284902ull}}, {{16572228351768009728ull, 80179793091424510ull}}, {{8286114175884004864ull, 40089896545712255ull}}, {{13366429124796778240ull, 20044948272856127ull}}, {{11491913402855236352ull, 100224741364280638ull}}, {{5745956701427618048ull, 50112370682140319ull}}, {{12096350387568584704ull, 25056185341070159ull}}, {{5141519716714269696ull, 125280926705350798ull}}, {{2570759858357134848ull, 62640463352675399ull}}, {{10508751966033343232ull, 31320231676337699ull}}, {{14477748019871447296ull, 15660115838168849ull}}, {{17048507878228582144ull, 78300579190844248ull}}, {{8524253939114290944ull, 39150289595422124ull}}, {{4262126969557145344ull, 19575144797711062ull}}, {{2863890774076176128ull, 97875723988555311ull}}, {{10655317423892863744ull, 48937861994277655ull}}, {{14551030748801207552ull, 24468930997138827ull}}, {{17414921522877383936ull, 122344654985694138ull}}, {{8707460761438691840ull, 61172327492847069ull}}, {{13577102417574121728ull, 30586163746423534ull}}, {{6788551208787060736ull, 15293081873211767ull}}, {{15496011970225752832ull, 76465409366058836ull}}, {{7748005985112876288ull, 38232704683029418ull}}, {{3874002992556438016ull, 19116352341514709ull}}, {{923270889072639488ull, 95581761707573546ull}}, {{461635444536319744ull, 47790880853786773ull}}, {{9454189759122935552ull, 23895440426893386ull}}, {{10377460648195575040ull, 119477202134466932ull}}, {{5188730324097787392ull, 59738601067233466ull}}, {{2594365162048893696ull, 29869300533616733ull}}, {{10520554617879222528ull, 14934650266808366ull}}, {{15709284941977010176ull, 74673251334041832ull}}, {{7854642470988505088ull, 37336625667020916ull}}, {{3927321235494252544ull, 18668312833510458ull}}, {{1189862103761711104ull, 93341564167552291ull}}, {{9818303088735631360ull, 46670782083776145ull}}, {{14132523581222591488ull, 23335391041888072ull}}, {{15322385684984302592ull, 116676955209440363ull}}, {{16884564879346927104ull, 58338477604720181ull}}, {{17665654476528239360ull, 29169238802360090ull}}, {{8832827238264119552ull, 14584619401180045ull}}, {{7270648043901495296ull, 72923097005900227ull}}, {{12858696058805523456ull, 36461548502950113ull}}, {{15652720066257537536ull, 18230774251475056ull}}, {{4476624036449481216ull, 91153871257375284ull}}, {{2238312018224740608ull, 45576935628687642ull}}, {{1119156009112370176ull, 22788467814343821ull}}, {{5595780045561851392ull, 113942339071719105ull}}, {{12021262059635701504ull, 56971169535859552ull}}, {{6010631029817850624ull, 28485584767929776ull}}, {{11606411075379702272ull, 142427923839648881ull}}, {{15026577574544626944ull, 71213961919824440ull}}, {{7513288787272313344ull, 35606980959912220ull}}, {{3756644393636156672ull, 17803490479956110ull}}, {{336477894471232000ull, 89017452399780551ull}}, {{9391610984090391808ull, 44508726199890275ull}}, {{13919177528899971584ull, 22254363099945137ull}}, {{14255655423371203840ull, 111271815499725688ull}}, {{7127827711685601792ull, 55635907749862844ull}}, {{3563913855842800896ull, 27817953874931422ull}}, {{17819569279214004736ull, 139089769374657110ull}}, {{8909784639607002368ull, 69544884687328555ull}}, {{13678264356658276864ull, 34772442343664277ull}}, {{16062504215183914240ull, 17386221171832138ull}}, {{6525544781081364992ull, 86931105859160694ull}}, {{3262772390540682496ull, 43465552929580347ull}}, {{10854758232125116928ull, 21732776464790173ull}}, {{17380303013206482176ull, 108663882323950867ull}}, {{17913523543458016768ull, 54331941161975433ull}}, {{18180133808583784192ull, 27165970580987716ull}}, {{17113692748080714752ull, 135829852904938584ull}}, {{8556846374040357376ull, 67914926452469292ull}}, {{4278423187020178688ull, 33957463226234646ull}}, {{2139211593510089216ull, 16978731613117323ull}}, {{10696057967550446592ull, 84893658065586615ull}}, {{14571401020629999104ull, 42446829032793307ull}}, {{16509072547169775360ull, 21223414516396653ull}}, {{8758386441010670336ull, 106117072581983269ull}}, {{13602565257360110848ull, 53058536290991634ull}}, {{6801282628680055296ull, 26529268145495817ull}}, {{15559669069690725888ull, 132646340727479086ull}}, {{7779834534845362944ull, 66323170363739543ull}}, {{13113289304277457152ull, 33161585181869771ull}}, {{15780016688993504256ull, 16580792590934885ull}}, {{5113107150129315840ull, 82903962954674429ull}}, {{11779925611919433728ull, 41451981477337214ull}}, {{5889962805959716864ull, 20725990738668607ull}}, {{11003069956089032704ull, 103629953693343036ull}}, {{5501534978044516352ull, 51814976846671518ull}}, {{2750767489022258176ull, 25907488423335759ull}}, {{13753837445111290880ull, 129537442116678795ull}}, {{16100290759410421248ull, 64768721058339397ull}}, {{17273517416559986432ull, 32384360529169698ull}}, {{8636758708279993088ull, 16192180264584849ull}}, {{6290305393980862720ull, 80960901322924247ull}}, {{12368524733845207040ull, 40480450661462123ull}}, {{15407634403777379328ull, 20240225330731061ull}}, {{3251195724048690688ull, 101201126653655309ull}}, {{10848969898879121152ull, 50600563326827654ull}}, {{5424484949439560448ull, 25300281663413827ull}}, {{8675680673488251136ull, 126501408317069136ull}}, {{4337840336744125440ull, 63250704158534568ull}}, {{2168920168372062720ull, 31625352079267284ull}}, {{1084460084186031360ull, 15812676039633642ull}}, {{5422300420930157056ull, 79063380198168210ull}}, {{2711150210465078528ull, 39531690099084105ull}}, {{10578947142087314944ull, 19765845049542052ull}}, {{16001247563017472000ull, 98829225247710262ull}}, {{8000623781508736000ull, 49414612623855131ull}}, {{13223683927609143808ull, 24707306311927565ull}}, {{10778187416917064192ull, 123536531559637828ull}}, {{5389093708458532096ull, 61768265779818914ull}}, {{2694546854229265920ull, 30884132889909457ull}}, {{10570645463969408768ull, 15442066444954728ull}}, {{15959739172427940864ull, 77210332224773642ull}}, {{7979869586213970432ull, 38605166112386821ull}}, {{13213306829961761024ull, 19302583056193410ull}}, {{10726301928680150272ull, 96512915280967053ull}}, {{14586523001194850816ull, 48256457640483526ull}}, {{7293261500597425408ull, 24128228820241763ull}}, {{18019563429277575936ull, 120641144101208816ull}}, {{9009781714638787840ull, 60320572050604408ull}}, {{4504890857319393792ull, 30160286025302204ull}}, {{2252445428659696896ull, 15080143012651102ull}}, {{11262227143298484992ull, 75400715063255510ull}}, {{5631113571649242368ull, 37700357531627755ull}}, {{12038928822679396864ull, 18850178765813877ull}}, {{4854411892268330240ull, 94250893829069388ull}}, {{2427205946134164992ull, 47125446914534694ull}}, {{1213602973067082496ull, 23562723457267347ull}}, {{6068014865335412992ull, 117813617286336735ull}}, {{12257379469522482176ull, 58906808643168367ull}}, {{15352061771616016896ull, 29453404321584183ull}}, {{16899402922662784256ull, 14726702160792091ull}}, {{10710038318475714816ull, 73633510803960459ull}}, {{14578391196092633088ull, 36816755401980229ull}}, {{16512567634901092352ull, 18408377700990114ull}}, {{8775861879667255808ull, 92041888504950574ull}}, {{4387930939833627904ull, 46020944252475287ull}}, {{11417337506771589632ull, 23010472126237643ull}}, {{1746455312729293824ull, 115052360631188218ull}}, {{873227656364646912ull, 57526180315594109ull}}, {{9659985865037099264ull, 28763090157797054ull}}, {{11406441177766393344ull, 143815450788985272ull}}, {{5703220588883196672ull, 71907725394492636ull}}, {{2851610294441598208ull, 35953862697246318ull}}, {{1425805147220798976ull, 17976931348623159ull}}, {{7129025736103995648ull, 89884656743115795ull}}, {{12787884904906773504ull, 44942328371557897ull}}, {{15617314489308162560ull, 22471164185778948ull}}, {{4299596151702606848ull, 112355820928894744ull}}, {{2149798075851303424ull, 56177910464447372ull}}, {{1074899037925651712ull, 28088955232223686ull}}, {{5374495189628258560ull, 140444776161118430ull}}, {{2687247594814129152ull, 70222388080559215ull}}, {{10566995834261840384ull, 35111194040279607ull}}, {{14506869953985696000ull, 17555597020139803ull}}, {{17194117548799825152ull, 87777985100699018ull}}, {{8597058774399912448ull, 43888992550349509ull}}, {{13521901424054732032ull, 21944496275174754ull}}, {{12269274899145005824ull, 109722481375873773ull}}, {{15358009486427278592ull, 54861240687936886ull}}, {{7679004743213639168ull, 27430620343968443ull}}, {{1501535568649093632ull, 137153101719842217ull}}, {{9974139821179322624ull, 68576550859921108ull}}, {{4987069910589661184ull, 34288275429960554ull}}, {{2493534955294830592ull, 17144137714980277ull}}, {{12467674776474153216ull, 85720688574901385ull}}, {{15457209425091852288ull, 42860344287450692ull}}, {{7728604712545926144ull, 21430172143725346ull}}, {{1749535415310527744ull, 107150860718626732ull}}, {{874767707655263744ull, 53575430359313366ull}}, {{437383853827631872ull, 26787715179656683ull}}, {{2186919269138159872ull, 133938575898283415ull}}, {{10316831671423855616ull, 66969287949141707ull}}, {{14381787872566703616ull, 33484643974570853ull}}, {{16414265973138127616ull, 16742321987285426ull}}, {{8284353570852431616ull, 83711609936427134ull}}, {{4142176785426215680ull, 41855804968213567ull}}, {{11294460429567883520ull, 20927902484106783ull}}, {{1132069926710763776ull, 104639512420533918ull}}, {{566034963355381760ull, 52319756210266959ull}}, {{9506389518532466688ull, 26159878105133479ull}}, {{10638459445243230464ull, 130799390525667397ull}}, {{14542601759476390912ull, 65399695262833698ull}}, {{7271300879738195456ull, 32699847631416849ull}}, {{12859022476723873536ull, 16349923815708424ull}}, {{8954880162490713088ull, 81749619078542123ull}}, {{13700812118100132352ull, 40874809539271061ull}}, {{16073778095904841984ull, 20437404769635530ull}}, {{6581914184686003456ull, 102187023848177654ull}}, {{3290957092343001600ull, 51093511924088827ull}}, {{10868850583026276608ull, 25546755962044413ull}}, {{17450764767712280064ull, 127733779810222067ull}}, {{17948754420710915840ull, 63866889905111033ull}}, {{18197749247210233600ull, 31933444952555516ull}}, {{9098874623605116672ull, 15966722476277758ull}}, {{8600884970606481152ull, 79833612381388792ull}}, {{4300442485303240448ull, 39916806190694396ull}}, {{2150221242651620096ull, 19958403095347198ull}}, {{10751106213258101248ull, 99792015476735990ull}}, {{5375553106629050624ull, 49896007738367995ull}}, {{11911148590169300992ull, 24948003869183997ull}}, {{4215510729717850880ull, 124740019345919988ull}}, {{2107755364858925312ull, 62370009672959994ull}}, {{1053877682429462528ull, 31185004836479997ull}}, {{9750310878069507072ull, 15592502418239998ull}}, {{11858066242928432640ull, 77962512091199992ull}}, {{5929033121464216320ull, 38981256045599996ull}}, {{2964516560732108032ull, 19490628022799998ull}}, {{14822582803660540672ull, 97453140113999990ull}}, {{7411291401830270208ull, 48726570056999995ull}}, {{12929017737769910784ull, 24363285028499997ull}}, {{9304856467720900096ull, 121816425142499988ull}}, {{4652428233860450048ull, 60908212571249994ull}}, {{2326214116930224896ull, 30454106285624997ull}}, {{10386479095319888128ull, 15227053142812498ull}}, {{15038907329180338432ull, 76135265714062492ull}}, {{7519453664590169088ull, 38067632857031246ull}}, {{3759726832295084544ull, 19033816428515623ull}}, {{351890087765871360ull, 95169082142578116ull}}, {{175945043882935552ull, 47584541071289058ull}}, {{87972521941467648ull, 23792270535644529ull}}, {{439862609707339264ull, 118961352678222645ull}}, {{9443303341708445440ull, 59480676339111322ull}}, {{4721651670854222592ull, 29740338169555661ull}}, {{11584197872281886976ull, 14870169084777830ull}}, {{2580757140280781056ull, 74350845423889153ull}}, {{10513750606995166208ull, 37175422711944576ull}}, {{5256875303497583104ull, 18587711355972288ull}}, {{7837632443778364160ull, 92938556779861441ull}}, {{13142188258743957760ull, 46469278389930720ull}}, {{6571094129371978752ull, 23234639194965360ull}}, {{14408726573150343168ull, 116173195974826801ull}}, {{16427735323429947392ull, 58086597987413400ull}}, {{8213867661714973696ull, 29043298993706700ull}}, {{4106933830857486848ull, 14521649496853350ull}}, {{2087925080577882624ull, 72608247484266751ull}}, {{10267334577143717120ull, 36304123742133375ull}}, {{14357039325426634240ull, 18152061871066687ull}}, {{16444964406004516864ull, 90760309355333438ull}}, {{8222482203002258432ull, 45380154677666719ull}}, {{13334613138355905024ull, 22690077338833359ull}}, {{11332833470650870272ull, 113450386694166798ull}}, {{5666416735325435136ull, 56725193347083399ull}}, {{12056580404517493248ull, 28362596673541699ull}}, {{4942669801458812160ull, 141812983367708498ull}}, {{2471334900729405952ull, 70906491683854249ull}}, {{10459039487219478784ull, 35453245841927124ull}}, {{5229519743609739264ull, 17726622920963562ull}}, {{7700854644339145472ull, 88633114604817811ull}}, {{13073799359024348416ull, 44316557302408905ull}}, {{15760271716366949888ull, 22158278651204452ull}}, {{5014382286996544000ull, 110791393256022264ull}}, {{2507191143498272000ull, 55395696628011132ull}}, {{1253595571749135872ull, 27697848314005566ull}}, {{6267977858745679872ull, 138489241570027830ull}}, {{3133988929372839936ull, 69244620785013915ull}}, {{10790366501541195776ull, 34622310392506957ull}}, {{14618555287625373696ull, 17311155196253478ull}}, {{17752544216998213632ull, 86555775981267393ull}}, {{18099644145353882624ull, 43277887990633696ull}}, {{9049822072676941312ull, 21638943995316848ull}}, {{8355622215965603328ull, 108194719976584242ull}}, {{4177811107982801664ull, 54097359988292121ull}}, {{11312277590846176512ull, 27048679994146060ull}}, {{1221155733102228480ull, 135243399970730303ull}}, {{9833949903405890048ull, 67621699985365151ull}}, {{14140346988557720832ull, 33810849992682575ull}}, {{16293545531133636096ull, 16905424996341287ull}}, {{7680751360829974528ull, 84527124981706439ull}}, {{13063747717269763072ull, 42263562490853219ull}}, {{15755245895489657344ull, 21131781245426609ull}}, {{4989253182610080256ull, 105658906227133049ull}}, {{11717998628159815936ull, 52829453113566524ull}}, {{5858999314079907840ull, 26414726556783262ull}}, {{10848252496689988352ull, 132073632783916311ull}}, {{14647498285199769856ull, 66036816391958155ull}}, {{16547121179454660608ull, 33018408195979077ull}}, {{17496932626582106112ull, 16509204097989538ull}}, {{13697686838072324608ull, 82546020489947694ull}}, {{6848843419036162304ull, 41273010244973847ull}}, {{12647793746372856832ull, 20636505122486923ull}}, {{7898736510735629824ull, 103182525612434618ull}}, {{3949368255367814912ull, 51591262806217309ull}}, {{11198056164538683136ull, 25795631403108654ull}}, {{650048601564761600ull, 128978157015543273ull}}, {{9548396337637156608ull, 64489078507771636ull}}, {{4774198168818578176ull, 32244539253885818ull}}, {{2387099084409288960ull, 16122269626942909ull}}, {{11935495422046445824ull, 80611348134714545ull}}, {{15191119747877998592ull, 40305674067357272ull}}, {{7595559873938999296ull, 20152837033678636ull}}, {{1084311222275893504ull, 100764185168393182ull}}, {{542155611137946624ull, 50382092584196591ull}}, {{9494449842423749120ull, 25191046292098295ull}}, {{10578761064699642624ull, 125955231460491477ull}}, {{14512752569204596992ull, 62977615730245738ull}}, {{7256376284602298368ull, 31488807865122869ull}}, {{12851560179155924992ull, 15744403932561434ull}}, {{8917568674650970624ull, 78722019662807173ull}}, {{13682156374180261120ull, 39361009831403586ull}}, {{6841078187090130432ull, 19680504915701793ull}}, {{15758646861741101056ull, 98402524578508966ull}}, {{7879323430870550528ull, 49201262289254483ull}}, {{13163033752290051072ull, 24600631144627241ull}}, {{10474936540321600768ull, 123003155723136208ull}}, {{5237468270160800256ull, 61501577861568104ull}}, {{2618734135080400128ull, 30750788930784052ull}}, {{1309367067540199936ull, 15375394465392026ull}}, {{6546835337701000448ull, 76876972326960130ull}}, {{3273417668850500096ull, 38438486163480065ull}}, {{10860080871280025856ull, 19219243081740032ull}}, {{17406916208981026304ull, 96096215408700162ull}}, {{8703458104490513152ull, 48048107704350081ull}}, {{13575101089100032256ull, 24024053852175040ull}}, {{12535273224371507200ull, 120120269260875203ull}}, {{15491008649040529408ull, 60060134630437601ull}}, {{16968876361375040512ull, 30030067315218800ull}}, {{8484438180687520256ull, 15015033657609400ull}}, {{5528702756018498048ull, 75075168288047002ull}}, {{2764351378009249024ull, 37537584144023501ull}}, {{10605547725859400192ull, 18768792072011750ull}}, {{16134250481877898240ull, 93843960360058752ull}}, {{8067125240938949120ull, 46921980180029376ull}}, {{4033562620469474560ull, 23460990090014688ull}}, {{1721069028637821184ull, 117304950450073441ull}}, {{10083906551173686272ull, 58652475225036720ull}}, {{5041953275586843136ull, 29326237612518360ull}}, {{2520976637793421568ull, 14663118806259180ull}}, {{12604883188967108096ull, 73315594031295900ull}}, {{6302441594483554048ull, 36657797015647950ull}}, {{3151220797241776896ull, 18328898507823975ull}}, {{15756103986208884992ull, 91644492539119875ull}}, {{17101424029959218176ull, 45822246269559937ull}}, {{17774084051834384896ull, 22911123134779968ull}}, {{15083443964333718272ull, 114555615673899844ull}}, {{7541721982166859008ull, 57277807836949922ull}}, {{3770860991083429376ull, 28638903918474961ull}}, {{407560881707596288ull, 143194519592374806ull}}, {{203780440853798144ull, 71597259796187403ull}}, {{9325262257281674752ull, 35798629898093701ull}}, {{13886003165495613184ull, 17899314949046850ull}}, {{14089783606349411328ull, 89496574745234253ull}}, {{16268263840029481472ull, 44748287372617126ull}}, {{8134131920014740736ull, 22374143686308563ull}}, {{3777171452654600704ull, 111870718431542817ull}}, {{11111957763182076160ull, 55935359215771408ull}}, {{5555978881591037952ull, 27967679607885704ull}}, {{9333150334245638656ull, 139838398039428521ull}}, {{13889947203977595136ull, 69919199019714260ull}}, {{6944973601988797440ull, 34959599509857130ull}}, {{3472486800994398720ull, 17479799754928565ull}}, {{17362434004971993856ull, 87398998774642825ull}}, {{17904589039340772608ull, 43699499387321412ull}}, {{8952294519670386176ull, 21849749693660706ull}}, {{7867984450932828672ull, 109248748468303532ull}}, {{3933992225466414336ull, 54624374234151766ull}}, {{1966996112733207040ull, 27312187117075883ull}}, {{9834980563666035968ull, 136560935585379415ull}}, {{14140862318687793664ull, 68280467792689707ull}}, {{16293803196198672640ull, 34140233896344853ull}}, {{17370273634954112000ull, 17070116948172426ull}}, {{13064391879932354304ull, 85350584740862134ull}}, {{6532195939966177024ull, 42675292370431067ull}}, {{12489470006837864192ull, 21337646185215533ull}}, {{7107117813060667136ull, 106688230926077668ull}}, {{3553558906530333440ull, 53344115463038834ull}}, {{1776779453265166592ull, 26672057731519417ull}}, {{8883897266325833728ull, 133360288657597085ull}}, {{13665320670017692672ull, 66680144328798542ull}}, {{6832660335008846336ull, 33340072164399271ull}}, {{12639702204359198976ull, 16670036082199635ull}}, {{7858278800667340032ull, 83350180410998178ull}}, {{3929139400333669888ull, 41675090205499089ull}}, {{11187941737021610752ull, 20837545102749544ull}}, {{599476463979399168ull, 104187725513747723ull}}, {{9523110268844475392ull, 52093862756873861ull}}, {{13984927171277013504ull, 26046931378436930ull}}, {{14584403635256412928ull, 130234656892184653ull}}, {{16515573854482982144ull, 65117328446092326ull}}, {{8257786927241490944ull, 32558664223046163ull}}, {{13352265500475521280ull, 16279332111523081ull}}, {{11421095281248951808ull, 81396660557615408ull}}, {{5710547640624475904ull, 40698330278807704ull}}, {{2855273820312237824ull, 20349165139403852ull}}, {{14276369101561189888ull, 101745825697019260ull}}, {{7138184550780594944ull, 50872912848509630ull}}, {{3569092275390297344ull, 25436456424254815ull}}, {{17845461376951487488ull, 127182282121274075ull}}, {{18146102725330519552ull, 63591141060637037ull}}, {{18296423399520035584ull, 31795570530318518ull}}, {{9148211699760017664ull, 15897785265159259ull}}, {{8847570351380985600ull, 79488926325796297ull}}, {{13647157212545268480ull, 39744463162898148ull}}, {{6823578606272634112ull, 19872231581449074ull}}, {{15671148957653619968ull, 99361157907245371ull}}, {{17058946515681585664ull, 49680578953622685ull}}, {{17752845294695568640ull, 24840289476811342ull}}, {{14977250178639637248ull, 124201447384056714ull}}, {{7488625089319818496ull, 62100723692028357ull}}, {{12967684581514684928ull, 31050361846014178ull}}, {{6483842290757342464ull, 15525180923007089ull}}, {{13972467380077160960ull, 77625904615035446ull}}, {{6986233690038580480ull, 38812952307517723ull}}, {{12716488881874065920ull, 19406476153758861ull}}, {{8242212188241675520ull, 97032380768794308ull}}, {{4121106094120837632ull, 48516190384397154ull}}, {{2060553047060418816ull, 24258095192198577ull}}, {{10302765235302094592ull, 121290475960992885ull}}, {{14374754654505822976ull, 60645237980496442ull}}, {{7187377327252911360ull, 30322618990248221ull}}, {{12817060700481231360ull, 15161309495124110ull}}, {{8745071281277502976ull, 75806547475620553ull}}, {{13595907677493527296ull, 37903273737810276ull}}, {{6797953838746763520ull, 18951636868905138ull}}, {{15543025120024266496ull, 94758184344525691ull}}, {{16994884596866908928ull, 47379092172262845ull}}, {{17720814335288230144ull, 23689546086131422ull}}, {{14817095381602945280ull, 118447730430657114ull}}, {{7408547690801472512ull, 59223865215328557ull}}, {{12927645882255512064ull, 29611932607664278ull}}, {{6463822941127756032ull, 14805966303832139ull}}, {{13872370631929228800ull, 74029831519160696ull}}, {{6936185315964614400ull, 37014915759580348ull}}, {{3468092657982307072ull, 18507457879790174ull}}, {{17340463289911535872ull, 92537289398950870ull}}, {{8670231644955767808ull, 46268644699475435ull}}, {{13558487859332659712ull, 23134322349737717ull}}, {{12452207075534644224ull, 115671611748688588ull}}, {{6226103537767322112ull, 57835805874344294ull}}, {{3113051768883661056ull, 28917902937172147ull}}, {{10779897921296606208ull, 14458951468586073ull}}, {{17006001459063928320ull, 72294757342930367ull}}, {{17726372766386739968ull, 36147378671465183ull}}, {{18086558420048145664ull, 18073689335732591ull}}, {{16645815805402522624ull, 90368446678662959ull}}, {{17546279939556037120ull, 45184223339331479ull}}, {{17996512006632794368ull, 22592111669665739ull}}, {{16195583738325765376ull, 112960558348328699ull}}, {{17321163906017658368ull, 56480279174164349ull}}, {{17883953989863604992ull, 28240139587082174ull}}, {{15632793654479818752ull, 141200697935410874ull}}, {{7816396827239909376ull, 70600348967705437ull}}, {{13131570450474730496ull, 35300174483852718ull}}, {{6565785225237365248ull, 17650087241926359ull}}, {{14382182052477274624ull, 88250436209631796ull}}, {{7191091026238637312ull, 44125218104815898ull}}, {{3595545513119318528ull, 22062609052407949ull}}, {{17977727565596593408ull, 110313045262039745ull}}, {{18212235819653072384ull, 55156522631019872ull}}, {{9106117909826536192ull, 27578261315509936ull}}, {{8637101401713577984ull, 137891306577549682ull}}, {{4318550700856788992ull, 68945653288774841ull}}, {{11382647387283170304ull, 34472826644387420ull}}, {{5691323693641585152ull, 17236413322193710ull}}, {{10009874394498374144ull, 86182066610968551ull}}, {{14228309234103962880ull, 43091033305484275ull}}, {{16337526653906757120ull, 21545516652742137ull}}, {{7900656974695579648ull, 107727583263710689ull}}, {{13173700524202565632ull, 53863791631855344ull}}, {{6586850262101282816ull, 26931895815927672ull}}, {{14487507236796862464ull, 134659479079638361ull}}, {{16467125655253207040ull, 67329739539819180ull}}, {{8233562827626603520ull, 33664869769909590ull}}, {{4116781413813301760ull, 16832434884954795ull}}, {{2137162995356957184ull, 84162174424773976ull}}, {{1068581497678478592ull, 42081087212386988ull}}, {{534290748839239168ull, 21040543606193494ull}}, {{2671453744196196608ull, 105202718030967470ull}}, {{1335726872098098176ull, 52601359015483735ull}}, {{9891235472903824896ull, 26300679507741867ull}}, {{12562689217100021504ull, 131503397538709337ull}}, {{15504716645404786432ull, 65751698769354668ull}}, {{7752358322702393088ull, 32875849384677334ull}}, {{3876179161351196416ull, 16437924692338667ull}}, {{934151733046431488ull, 82189623461693336ull}}, {{467075866523215616ull, 41094811730846668ull}}, {{233537933261607680ull, 20547405865423334ull}}, {{1167689666308039424ull, 102737029327116670ull}}, {{583844833154019584ull, 51368514663558335ull}}, {{9515294453431785472ull, 25684257331779167ull}}, {{10682984119739825152ull, 128421286658895837ull}}, {{14564864096724688384ull, 64210643329447918ull}}, {{7282432048362344192ull, 32105321664723959ull}}, {{12864588061035947776ull, 16052660832361979ull}}, {{8982708084051084544ull, 80263304161809898ull}}, {{4491354042025542144ull, 40131652080904949ull}}, {{11469049057867546880ull, 20065826040452474ull}}, {{2005013068209080064ull, 100329130202262373ull}}, {{10225878570959315712ull, 50164565101131186ull}}, {{5112939285479657728ull, 25082282550565593ull}}, {{7117952353688738048ull, 125411412752827966ull}}, {{3558976176844368896ull, 62705706376413983ull}}, {{11002860125276960256ull, 31352853188206991ull}}, {{14724802099493255936ull, 15676426594103495ull}}, {{18283778276337624832ull, 78382132970517478ull}}, {{9141889138168812288ull, 39191066485258739ull}}, {{13794316605939181824ull, 19595533242629369ull}}, {{13631350808567255296ull, 97977666213146848ull}}, {{6815675404283627520ull, 48988833106573424ull}}, {{3407837702141813760ull, 24494416553286712ull}}, {{17039188510709069312ull, 122472082766433560ull}}, {{8519594255354534656ull, 61236041383216780ull}}, {{4259797127677267200ull, 30618020691608390ull}}, {{2129898563838633472ull, 15309010345804195ull}}, {{10649492819193168128ull, 76545051729020975ull}}, {{14548118446451359744ull, 38272525864510487ull}}, {{16497431260080455680ull, 19136262932255243ull}}, {{8700180005564072448ull, 95681314661276219ull}}, {{13573462039636812032ull, 47840657330638109ull}}, {{16010103056673181696ull, 23920328665319054ull}}, {{6263538988527702528ull, 119601643326595274ull}}, {{3131769494263851264ull, 59800821663297637ull}}, {{10789256783986701312ull, 29900410831648818ull}}, {{5394628391993350656ull, 14950205415824409ull}}, {{8526397886257201920ull, 74751027079122046ull}}, {{4263198943128600832ull, 37375513539561023ull}}, {{11354971508419076096ull, 18687756769780511ull}}, {{1434625320966726656ull, 93438783848902558ull}}, {{717312660483363328ull, 46719391924451279ull}}, {{9582028367096457472ull, 23359695962225639ull}}, {{11016653688063184128ull, 116798479811128197ull}}, {{14731698880886367744ull, 58399239905564098ull}}, {{7365849440443183872ull, 29199619952782049ull}}, {{12906296757076367616ull, 14599809976391024ull}}, {{9191251564253184000ull, 72999049881955123ull}}, {{13818997818981367808ull, 36499524940977561ull}}, {{16132870946345459712ull, 18249762470488780ull}}, {{6877378436889092096ull, 91248812352443904ull}}, {{3438689218444546048ull, 45624406176221952ull}}, {{1719344609222273024ull, 22812203088110976ull}}, {{8596723046111365376ull, 114061015440554880ull}}, {{4298361523055682560ull, 57030507720277440ull}}, {{2149180761527841280ull, 28515253860138720ull}}, {{10745903807639206656ull, 142576269300693600ull}}, {{5372951903819603200ull, 71288134650346800ull}}, {{2686475951909801472ull, 35644067325173400ull}}, {{1343237975954900736ull, 17822033662586700ull}}, {{6716189879774504192ull, 89110168312933500ull}}, {{3358094939887251968ull, 44555084156466750ull}}, {{1679047469943625984ull, 22277542078233375ull}}, {{8395237349718130176ull, 111387710391166875ull}}, {{13420990711713840896ull, 55693855195583437ull}}, {{15933867392711696128ull, 27846927597791718ull}}, {{5882360668720274688ull, 139234637988958594ull}}, {{2941180334360137216ull, 69617318994479297ull}}, {{10693962204034844416ull, 34808659497239648ull}}, {{5346981102017422080ull, 17404329748619824ull}}, {{8288161436377559552ull, 87021648743099121ull}}, {{13367452755043555584ull, 43510824371549560ull}}, {{6683726377521777664ull, 21755412185774780ull}}, {{14971887813899337472ull, 108777060928873901ull}}, {{16709315943804444416ull, 54388530464436950ull}}, {{8354657971902222080ull, 27194265232218475ull}}, {{4879801712092008192ull, 135971326161092377ull}}, {{11663272892900779776ull, 67985663080546188ull}}, {{5831636446450389760ull, 33992831540273094ull}}, {{2915818223225194752ull, 16996415770136547ull}}, {{14579091116125974784ull, 84982078850682735ull}}, {{16512917594917763072ull, 42491039425341367ull}}, {{17479830834313657344ull, 21245519712670683ull}}, {{13612177876730080512ull, 106227598563353419ull}}, {{16029460975219815936ull, 53113799281676709ull}}, {{17238102524464683776ull, 26556899640838354ull}}, {{12403536327485212928ull, 132784498204191774ull}}, {{6201768163742606336ull, 66392249102095887ull}}, {{12324256118726078976ull, 33196124551047943ull}}, {{15385500096217815296ull, 16598062275523971ull}}, {{3140524186250870016ull, 82990311377619859ull}}, {{10793634129980210688ull, 41495155688809929ull}}, {{14620189101844881152ull, 20747577844404964ull}}, {{17760713288095751424ull, 103737889222024823ull}}, {{18103728680902651392ull, 51868944611012411ull}}, {{18275236377306101504ull, 25934472305506205ull}}, {{17589205591692301312ull, 129672361527531029ull}}, {{18017974832700926464ull, 64836180763765514ull}}, {{9008987416350463232ull, 32418090381882757ull}}, {{13727865745030007296ull, 16209045190941378ull}}, {{13299096504021382144ull, 81045225954706893ull}}, {{15872920288865466880ull, 40522612977353446ull}}, {{7936460144432733440ull, 20261306488676723ull}}, {{2788812574744564224ull, 101306532443383617ull}}, {{10617778324227057920ull, 50653266221691808ull}}, {{5308889162113528832ull, 25326633110845904ull}}, {{8097701736858093056ull, 126633165554229521ull}}, {{13272222905283822336ull, 63316582777114760ull}}, {{6636111452641911040ull, 31658291388557380ull}}, {{3318055726320955392ull, 15829145694278690ull}}, {{16590278631604777984ull, 79145728471393450ull}}, {{8295139315802388992ull, 39572864235696725ull}}, {{13370941694755970304ull, 19786432117848362ull}}, {{11514476252651196672ull, 98932160589241813ull}}, {{14980610163180374016ull, 49466080294620906ull}}, {{7490305081590187008ull, 24733040147310453ull}}, {{558037260531832064ull, 123665200736552267ull}}, {{9502390667120691712ull, 61832600368276133ull}}, {{13974567370415121664ull, 30916300184138066ull}}, {{6987283685207560704ull, 15458150092069033ull}}, {{16489674352328252672ull, 77290750460345166ull}}, {{8244837176164126208ull, 38645375230172583ull}}, {{13345790624936838912ull, 19322687615086291ull}}, {{11388720903555539968ull, 96613438075431458ull}}, {{5694360451777769984ull, 48306719037715729ull}}, {{12070552262743660800ull, 24153359518857864ull}}, {{5012529092589649152ull, 120766797594289323ull}}, {{11729636583149600256ull, 60383398797144661ull}}, {{15088190328429575936ull, 30191699398572330ull}}, {{7544095164214787840ull, 15095849699286165ull}}, {{826987673654836736ull, 75479248496430827ull}}, {{9636865873682194176ull, 37739624248215413ull}}, {{14041804973695872768ull, 18869812124107706ull}}, {{14868792647350709760ull, 94349060620538533ull}}, {{16657768360530130688ull, 47174530310269266ull}}, {{8328884180265065216ull, 23587265155134633ull}}, {{4750932753906223616ull, 117936325775673167ull}}, {{11598838413807887616ull, 58968162887836583ull}}, {{15022791243758719488ull, 29484081443918291ull}}, {{16734767658734135552ull, 14742040721959145ull}}, {{9886861998832471552ull, 73710203609795729ull}}, {{14166803036271011584ull, 36855101804897864ull}}, {{7083401518135505664ull, 18427550902448932ull}}, {{16970263516967977216ull, 92137754512244661ull}}, {{17708503795338764288ull, 46068877256122330ull}}, {{8854251897669382144ull, 23034438628061165ull}}, {{7377771340927808000ull, 115172193140305827ull}}, {{12912257707318679808ull, 57586096570152913ull}}, {{15679500890514115584ull, 28793048285076456ull}}, {{4610528157732371968ull, 143965241425382284ull}}, {{2305264078866185984ull, 71982620712691142ull}}, {{1152632039433092864ull, 35991310356345571ull}}, {{9799688056571322112ull, 17995655178172785ull}}, {{12104952135437508352ull, 89978275890863927ull}}, {{15275848104573529856ull, 44989137945431963ull}}, {{16861296089141540608ull, 22494568972715981ull}}, {{10519504150869497600ull, 112472844863579909ull}}, {{14483124112289524480ull, 56236422431789954ull}}, {{7241562056144762112ull, 28118211215894977ull}}, {{17761066207014259712ull, 140591056079474886ull}}, {{8880533103507129856ull, 70295528039737443ull}}, {{13663638588608340736ull, 35147764019868721ull}}, {{16055191331158946048ull, 17573882009934360ull}}, {{6488980360956524544ull, 87869410049671804ull}}, {{3244490180478262272ull, 43934705024835902ull}}, {{1622245090239131136ull, 21967352512417951ull}}, {{8111225451195655680ull, 109836762562089755ull}}, {{13278984762452603648ull, 54918381281044877ull}}, {{15862864418081077504ull, 27459190640522438ull}}, {{5527345795567181568ull, 137295953202612194ull}}, {{2763672897783590656ull, 68647976601306097ull}}, {{10605208485746571008ull, 34323988300653048ull}}, {{5302604242873285376ull, 17161994150326524ull}}, {{8066277140656876288ull, 85809970751632621ull}}, {{13256510607183213824ull, 42904985375816310ull}}, {{6628255303591606784ull, 21452492687908155ull}}, {{14694532444248483328ull, 107262463439540776ull}}, {{7347266222124241664ull, 53631231719770388ull}}, {{3673633111062120704ull, 26815615859885194ull}}, {{18368165555310604288ull, 134078079299425970ull}}, {{9184082777655302144ull, 67039039649712985ull}}, {{13815413425682426880ull, 33519519824856492ull}}, {{6907706712841213440ull, 16759759912428246ull}}, {{16091789490496515584ull, 83798799562141231ull}}, {{17269266782103033600ull, 41899399781070615ull}}, {{17858005427906292480ull, 20949699890535307ull}}, {{15503050844693256448ull, 104748499452676539ull}}, {{16974897459201403904ull, 52374249726338269ull}}, {{17710820766455477760ull, 26187124863169134ull}}, {{14767127537439182848ull, 130935624315845674ull}}, {{7383563768719591424ull, 65467812157922837ull}}, {{12915153921214571520ull, 32733906078961418ull}}, {{6457576960607285760ull, 16366953039480709ull}}, {{13841140729326877184ull, 81834765197403546ull}}, {{6920570364663438592ull, 40917382598701773ull}}, {{12683657219186494976ull, 20458691299350886ull}}, {{8078053874803820544ull, 102293456496754433ull}}, {{13262398974256686080ull, 51146728248377216ull}}, {{6631199487128343040ull, 25573364124188608ull}}, {{14709253361932163584ull, 127866820620943041ull}}, {{16577998717820857600ull, 63933410310471520ull}}, {{8288999358910428672ull, 31966705155235760ull}}, {{4144499679455214336ull, 15983352577617880ull}}, {{2275754323566520320ull, 79916762888089401ull}}, {{10361249198638035968ull, 39958381444044700ull}}, {{5180624599319017984ull, 19979190722022350ull}}, {{7456378922885538304ull, 99895953610111751ull}}, {{12951561498297544960ull, 49947976805055875ull}}, {{15699152786003548160ull, 24973988402527937ull}}, {{4708787635179535104ull, 124869942012639689ull}}, {{11577765854444543232ull, 62434971006319844ull}}, {{5788882927222271488ull, 31217485503159922ull}}, {{2894441463611135744ull, 15608742751579961ull}}, {{14472207318055679232ull, 78043713757899805ull}}, {{16459475695882615296ull, 39021856878949902ull}}, {{8229737847941307648ull, 19510928439474951ull}}, {{4255201092287435264ull, 97554642197374757ull}}, {{11350972582998493440ull, 48777321098687378ull}}, {{5675486291499246592ull, 24388660549343689ull}}, {{9930687383786682112ull, 121943302746718446ull}}, {{4965343691893340928ull, 60971651373359223ull}}, {{11706043882801446144ull, 30485825686679611ull}}, {{15076393978255498752ull, 15242912843339805ull}}, {{1594993596439288320ull, 76214564216699029ull}}, {{10020868835074419968ull, 38107282108349514ull}}, {{5010434417537209856ull, 19053641054174757ull}}, {{6605428013976498432ull, 95268205270873786ull}}, {{3302714006988249088ull, 47634102635436893ull}}, {{10874729040348900352ull, 23817051317718446ull}}, {{17480157054325398784ull, 119085256588592232ull}}, {{8740078527162699264ull, 59542628294296116ull}}, {{4370039263581349632ull, 29771314147148058ull}}, {{2185019631790674688ull, 14885657073574029ull}}, {{10925098158953374208ull, 74428285367870145ull}}, {{14685921116331462912ull, 37214142683935072ull}}, {{7342960558165731328ull, 18607071341967536ull}}, {{18268058717119105792ull, 93035356709837681ull}}, {{18357401395414328576ull, 46517678354918840ull}}, {{9178700697707164160ull, 23258839177459420ull}}, {{9000015341116718336ull, 116294195887297102ull}}, {{4500007670558359040ull, 58147097943648551ull}}, {{11473375872133955328ull, 29073548971824275ull}}, {{14960059972921753344ull, 14536774485912137ull}}, {{1013323569770561024ull, 72683872429560689ull}}, {{9730033821740056320ull, 36341936214780344ull}}, {{4865016910870028032ull, 18170968107390172ull}}, {{5878340480640589312ull, 90854840536950861ull}}, {{12162542277175070464ull, 45427420268475430ull}}, {{6081271138587535104ull, 22713710134237715ull}}, {{11959611619228124416ull, 113568550671188576ull}}, {{5979805809614062080ull, 56784275335594288ull}}, {{2989902904807031040ull, 28392137667797144ull}}, {{14949514524035155712ull, 141960688338985720ull}}, {{7474757262017577728ull, 70980344169492860ull}}, {{3737378631008788736ull, 35490172084746430ull}}, {{1868689315504394240ull, 17745086042373215ull}}, {{9343446577521972224ull, 88725430211866075ull}}, {{13895095325615761920ull, 44362715105933037ull}}, {{16170919699662656768ull, 22181357552966518ull}}, {{7067622203475077376ull, 110906787764832594ull}}, {{3533811101737538560ull, 55453393882416297ull}}, {{10990277587723545088ull, 27726696941208148ull}}, {{18057899791198622720ull, 138633484706040742ull}}, {{9028949895599311360ull, 69316742353020371ull}}, {{13737846984654431488ull, 34658371176510185ull}}, {{16092295529181991424ull, 17329185588255092ull}}, {{6674501351071751168ull, 86645927941275464ull}}, {{3337250675535875584ull, 43322963970637732ull}}, {{1668625337767937792ull, 21661481985318866ull}}, {{8343126688839688960ull, 108307409926594330ull}}, {{4171563344419844352ull, 54153704963297165ull}}, {{11309153709064697856ull, 27076852481648582ull}}, {{1205536324194835456ull, 135384262408242913ull}}, {{9826140198952193536ull, 67692131204121456ull}}, {{4913070099476096768ull, 33846065602060728ull}}, {{2456535049738048256ull, 16923032801030364ull}}, {{12282675248690241792ull, 84615164005151820ull}}, {{6141337624345120768ull, 42307582002575910ull}}, {{3070668812172560384ull, 21153791001287955ull}}, {{15353344060862802432ull, 105768955006439775ull}}, {{16900044067286177024ull, 52884477503219887ull}}, {{17673394070497864192ull, 26442238751609943ull}}, {{14579994057651115264ull, 132211193758049719ull}}, {{16513369065680333312ull, 66105596879024859ull}}, {{17480056569694942464ull, 33052798439512429ull}}, {{17963400321702246912ull, 16526399219756214ull}}, {{16030025313673028864ull, 82631996098781074ull}}, {{8015012656836514304ull, 41315998049390537ull}}, {{13230878365273032960ull, 20657999024695268ull}}, {{10814159605236510208ull, 103289995123476343ull}}, {{14630451839473030912ull, 51644997561738171ull}}, {{16538597956591291136ull, 25822498780869085ull}}, {{8906013488118249984ull, 129112493904345429ull}}, {{13676378780913900800ull, 64556246952172714ull}}, {{6838189390456950272ull, 32278123476086357ull}}, {{12642466732083250944ull, 16139061738043178ull}}, {{7872101439287600128ull, 80695308690215893ull}}, {{13159422756498575872ull, 40347654345107946ull}}, {{6579711378249287936ull, 20173827172553973ull}}, {{14451812817536888064ull, 100869135862769866ull}}, {{7225906408768443904ull, 50434567931384933ull}}, {{12836325241238997760ull, 25217283965692466ull}}, {{8841393985066334208ull, 126086419828462333ull}}, {{13644069029387942912ull, 63043209914231166ull}}, {{6822034514693971456ull, 31521604957115583ull}}, {{12634389294201761536ull, 15760802478557791ull}}, {{7831714249880152832ull, 78804012392788958ull}}, {{3915857124940076288ull, 39402006196394479ull}}, {{11181300599324813824ull, 19701003098197239ull}}, {{566270775495415296ull, 98505015490986198ull}}, {{283135387747707648ull, 49252507745493099ull}}, {{9364939730728629504ull, 24626253872746549ull}}, {{9931210506224044800ull, 123131269363732747ull}}, {{14188977289966798080ull, 61565634681866373ull}}, {{16317860681838174720ull, 30782817340933186ull}}, {{8158930340919087360ull, 15391408670466593ull}}, {{3901163557176334080ull, 76957043352332967ull}}, {{11173953815442942720ull, 38478521676166483ull}}, {{14810348944576247040ull, 19239260838083241ull}}, {{264768428043029760ull, 96196304190416209ull}}, {{9355756250876290560ull, 48098152095208104ull}}, {{4677878125438145280ull, 24049076047604052ull}}, {{4942646553481175040ull, 120245380238020261ull}}, {{11694695313595363328ull, 60122690119010130ull}}, {{5847347656797681664ull, 30061345059505065ull}}, {{12147045865253616640ull, 15030672529752532ull}}, {{5394997105139428352ull, 75153362648762663ull}}, {{11920870589424489984ull, 37576681324381331ull}}, {{15183807331567020800ull, 18788340662190665ull}}, {{2132060362996897536ull, 93941703310953329ull}}, {{10289402218353224448ull, 46970851655476664ull}}, {{5144701109176612096ull, 23485425827738332ull}}, {{7276761472173509888ull, 117427129138691661ull}}, {{12861752772941530624ull, 58713564569345830ull}}, {{6430876386470765312ull, 29356782284672915ull}}, {{12438810230090158336ull, 14678391142336457ull}}, {{6853818929322137600ull, 73391955711682288ull}}, {{3426909464661068800ull, 36695977855841144ull}}, {{1713454732330534400ull, 18347988927920572ull}}, {{8567273661652672000ull, 91739944639602860ull}}, {{4283636830826336000ull, 45869972319801430ull}}, {{2141818415413167872ull, 22934986159900715ull}}, {{10709092077065839872ull, 114674930799503575ull}}, {{14577918075387695616ull, 57337465399751787ull}}, {{16512331074548623616ull, 28668732699875893ull}}, {{8774679077904912128ull, 143343663499379469ull}}, {{13610711575807231744ull, 71671831749689734ull}}, {{6805355787903615744ull, 35835915874844867ull}}, {{12626049930806583552ull, 17917957937422433ull}}, {{7790017432904263936ull, 89589789687112168ull}}, {{3895008716452131840ull, 44794894843556084ull}}, {{1947504358226065920ull, 22397447421778042ull}}, {{9737521791130330112ull, 111987237108890210ull}}, {{4868760895565165056ull, 55993618554445105ull}}, {{11657752484637358336ull, 27996809277222552ull}}, {{2948530202058136832ull, 139984046386112763ull}}, {{10697637137883844096ull, 69992023193056381ull}}, {{14572190605796697856ull, 34996011596528190ull}}, {{7286095302898348800ull, 17498005798264095ull}}, {{17983732440782193152ull, 87490028991320476ull}}, {{8991866220391096576ull, 43745014495660238ull}}, {{4495933110195548160ull, 21872507247830119ull}}, {{4032921477268189696ull, 109362536239150596ull}}, {{2016460738634094848ull, 54681268119575298ull}}, {{1008230369317047296ull, 27340634059787649ull}}, {{5041151846585237248ull, 136703170298938245ull}}, {{11743947960147394304ull, 68351585149469122ull}}, {{5871973980073697024ull, 34175792574734561ull}}, {{12159359026891624192ull, 17087896287367280ull}}, {{5456562913329467136ull, 85439481436836403ull}}, {{11951653493519509248ull, 42719740718418201ull}}, {{15199198783614530304ull, 21359870359209100ull}}, {{2209017623234446080ull, 106799351796045504ull}}, {{1104508811617222912ull, 53399675898022752ull}}, {{552254405808611328ull, 26699837949011376ull}}, {{2761272029043057664ull, 133499189745056880ull}}, {{1380636014521528832ull, 66749594872528440ull}}, {{690318007260764416ull, 33374797436264220ull}}, {{345159003630382080ull, 16687398718132110ull}}, {{1725795018151910912ull, 83436993590660550ull}}, {{862897509075955456ull, 41718496795330275ull}}, {{9654820791392753408ull, 20859248397665137ull}}, {{11380615809544664576ull, 104296241988325687ull}}, {{14913679941627108096ull, 52148120994162843ull}}, {{16680212007668329728ull, 26074060497081421ull}}, {{9614083743503442944ull, 130370302485407109ull}}, {{14030413908606497280ull, 65185151242703554ull}}, {{7015206954303248640ull, 32592575621351777ull}}, {{12730975514006400000ull, 16296287810675888ull}}, {{8314645348903345664ull, 81481439053379443ull}}, {{13380694711306448640ull, 40740719526689721ull}}, {{15913719392508000000ull, 20370359763344860ull}}, {{5781620667701794304ull, 101851798816724304ull}}, {{2890810333850897152ull, 50925899408362152ull}}, {{1445405166925448448ull, 25462949704181076ull}}, {{7227025834627242752ull, 127314748520905380ull}}, {{3613512917313621248ull, 63657374260452690ull}}, {{1806756458656810496ull, 31828687130226345ull}}, {{10126750266183181056ull, 15914343565113172ull}}, {{13740263183496802560ull, 79571717825565862ull}}, {{6870131591748401152ull, 39785858912782931ull}}, {{12658437832728976384ull, 19892929456391465ull}}, {{7951956942516227328ull, 99464647281957328ull}}, {{3975978471258113536ull, 49732323640978664ull}}, {{1987989235629056768ull, 24866161820489332ull}}, {{9939946178145284352ull, 124330809102446660ull}}, {{4969973089072642048ull, 62165404551223330ull}}, {{2484986544536321024ull, 31082702275611665ull}}, {{10465865309122936320ull, 15541351137805832ull}}, {{15435838398195578368ull, 77706755689029162ull}}, {{7717919199097789184ull, 38853377844514581ull}}, {{13082331636403670272ull, 19426688922257290ull}}, {{10071425960889697280ull, 97133444611286453ull}}, {{14259085017299624448ull, 48566722305643226ull}}, {{7129542508649812224ull, 24283361152821613ull}}, {{17200968469539509504ull, 121416805764108066ull}}, {{8600484234769754624ull, 60708402882054033ull}}, {{13523614154239653120ull, 30354201441027016ull}}, {{6761807077119826432ull, 15177100720513508ull}}, {{15362291311889581312ull, 75885503602567541ull}}, {{16904517692799566336ull, 37942751801283770ull}}, {{8452258846399783168ull, 18971375900641885ull}}, {{5367806084579812864ull, 94856879503209427ull}}, {{11907275079144682240ull, 47428439751604713ull}}, {{15177009576427116800ull, 23714219875802356ull}}, {{2098071587297378304ull, 118571099379011784ull}}, {{1049035793648689152ull, 59285549689505892ull}}, {{524517896824344576ull, 29642774844752946ull}}, {{262258948412172288ull, 14821387422376473ull}}, {{1311294742060861440ull, 74106937111882365ull}}, {{9879019407885206528ull, 37053468555941182ull}}, {{4939509703942603264ull, 18526734277970591ull}}, {{6250804446003464704ull, 92633671389852956ull}}, {{3125402223001732352ull, 46316835694926478ull}}, {{1562701111500866048ull, 23158417847463239ull}}, {{7813505557504330752ull, 115792089237316195ull}}, {{13130124815606941184ull, 57896044618658097ull}}, {{15788434444658246400ull, 28948022309329048ull}}, {{7894217222329123072ull, 14474011154664524ull}}, {{2577597964226512896ull, 72370055773322622ull}}, {{1288798982113256448ull, 36185027886661311ull}}, {{9867771527911404032ull, 18092513943330655ull}}, {{12445369492137916928ull, 90462569716653277ull}}, {{15446056782923734272ull, 45231284858326638ull}}, {{7723028391461867008ull, 22615642429163319ull}}, {{1721653809890232320ull, 113078212145816597ull}}, {{10084198941799891968ull, 56539106072908298ull}}, {{5042099470899945984ull, 28269553036454149ull}}, {{6763753280790178304ull, 141347765182270746ull}}, {{3381876640395089152ull, 70673882591135373ull}}, {{10914310357052320256ull, 35336941295567686ull}}, {{5457155178526160128ull, 17668470647783843ull}}, {{8839031818921249280ull, 88342353238919216ull}}, {{4419515909460624640ull, 44171176619459608ull}}, {{2209757954730312192ull, 22085588309729804ull}}, {{11048789773651561728ull, 110427941548649020ull}}, {{5524394886825780736ull, 55213970774324510ull}}, {{2762197443412890368ull, 27606985387162255ull}}, {{13810987217064452096ull, 138034926935811275ull}}, {{16128865645387001856ull, 69017463467905637ull}}, {{17287804859548276736ull, 34508731733952818ull}}, {{8643902429774138368ull, 17254365866976409ull}}, {{6326024001451588608ull, 86271829334882047ull}}, {{12386384037580570112ull, 43135914667441023ull}}, {{15416564055645060864ull, 21567957333720511ull}}, {{3295843983387097856ull, 107839786668602559ull}}, {{10871294028548324608ull, 53919893334301279ull}}, {{14659019051128937984ull, 26959946667150639ull}}, {{17954863034516036096ull, 134799733335753198ull}}, {{8977431517258018048ull, 67399866667876599ull}}, {{13712087795483784704ull, 33699933333938299ull}}, {{16079415934596668160ull, 16849966666969149ull}}, {{6610103378145134592ull, 84249833334845749ull}}, {{12528423725927343104ull, 42124916667422874ull}}, {{6264211862963671552ull, 21062458333711437ull}}, {{12874315241108806144ull, 105312291668557186ull}}, {{6437157620554403072ull, 52656145834278593ull}}, {{12441950847131977216ull, 26328072917139296ull}}, {{6869522014531232000ull, 131640364585696483ull}}, {{12658133044120391680ull, 65820182292848241ull}}, {{15552438558914971648ull, 32910091146424120ull}}, {{7776219279457485824ull, 16455045573212060ull}}, {{1987608249868325888ull, 82275227866060302ull}}, {{993804124934162944ull, 41137613933030151ull}}, {{9720274099321857280ull, 20568806966515075ull}}, {{11707882349190183424ull, 102844034832575377ull}}, {{15077313211449867520ull, 51422017416287688ull}}, {{7538656605724933632ull, 25711008708143844ull}}, {{799794881205565440ull, 128555043540719222ull}}, {{399897440602782720ull, 64277521770359611ull}}, {{9423320757156167168ull, 32138760885179805ull}}, {{13935032415432859392ull, 16069380442589902ull}}, {{14334929856035642112ull, 80346902212949513ull}}, {{16390836964872596736ull, 40173451106474756ull}}, {{8195418482436298240ull, 20086725553237378ull}}, {{4083604264762388992ull, 100433627766186892ull}}, {{2041802132381194496ull, 50216813883093446ull}}, {{1020901066190597120ull, 25108406941546723ull}}, {{5104505330952986112ull, 125542034707733615ull}}, {{11775624702331268864ull, 62771017353866807ull}}, {{15111184388020410112ull, 31385508676933403ull}}, {{16778964230864980736ull, 15692754338466701ull}}, {{10107844859486698240ull, 78463771692333509ull}}, {{14277294466598124800ull, 39231885846166754ull}}, {{7138647233299062272ull, 19615942923083377ull}}, {{17246492092785760768ull, 98079714615416886ull}}, {{8623246046392880384ull, 49039857307708443ull}}, {{13534995060051215872ull, 24519928653854221ull}}, {{12334743079127425024ull, 122599643269271108ull}}, {{6167371539563712512ull, 61299821634635554ull}}, {{3083685769781856256ull, 30649910817317777ull}}, {{10765214921745703936ull, 15324955408658888ull}}, {{16932586461309416448ull, 76624777043294442ull}}, {{8466293230654708224ull, 38312388521647221ull}}, {{13456518652182129920ull, 19156194260823610ull}}, {{11942361039781994752ull, 95780971304118053ull}}, {{15194552556745773056ull, 47890485652059026ull}}, {{7597276278372886528ull, 23945242826029513ull}}, {{1092893244445329664ull, 119726214130147567ull}}, {{9769818659077440512ull, 59863107065073783ull}}, {{14108281366393496064ull, 29931553532536891ull}}, {{16277512720051523840ull, 14965776766268445ull}}, {{7600587305419412992ull, 74828883831342229ull}}, {{13023665689564482304ull, 37414441915671114ull}}, {{6511832844782241024ull, 18707220957835557ull}}, {{14112420150201654016ull, 93536104789177786ull}}, {{7056210075100826880ull, 46768052394588893ull}}, {{12751477074405189120ull, 23384026197294446ull}}, {{8417153150897291776ull, 116920130986472233ull}}, {{13431948612303421696ull, 58460065493236116ull}}, {{6715974306151710720ull, 29230032746618058ull}}, {{3357987153075855360ull, 14615016373309029ull}}, {{16789935765379277056ull, 73075081866545145ull}}, {{17618339919544414208ull, 36537540933272572ull}}, {{8809169959772207104ull, 18268770466636286ull}}, {{7152361651441932800ull, 91343852333181432ull}}, {{3576180825720966400ull, 45671926166590716ull}}, {{1788090412860483072ull, 22835963083295358ull}}, {{8940452064302415872ull, 114179815416476790ull}}, {{4470226032151207936ull, 57089907708238395ull}}, {{11458485052930379776ull, 28544953854119197ull}}, {{1952193043523244032ull, 142724769270595988ull}}, {{976096521761622016ull, 71362384635297994ull}}, {{488048260880811008ull, 35681192317648997ull}}, {{9467396167295181312ull, 17840596158824498ull}}, {{10443492689056803328ull, 89202980794122492ull}}, {{5221746344528401664ull, 44601490397061246ull}}, {{2610873172264200704ull, 22300745198530623ull}}, {{13054365861321004288ull, 111503725992653115ull}}, {{15750554967515277824ull, 55751862996326557ull}}, {{17098649520612414720ull, 27875931498163278ull}}, {{11706271308223867392ull, 139379657490816394ull}}, {{5853135654111933696ull, 69689828745408197ull}}, {{12149939863910742528ull, 34844914372704098ull}}, {{6074969931955371264ull, 17422457186352049ull}}, {{11928105586067304960ull, 87112285931760246ull}}, {{5964052793033652480ull, 43556142965880123ull}}, {{12205398433371601920ull, 21778071482940061ull}}, {{5686759945729355520ull, 108890357414700308ull}}, {{2843379972864677632ull, 54445178707350154ull}}, {{1421689986432338688ull, 27222589353675077ull}}, {{7108449932161694208ull, 136112946768375385ull}}, {{12777597002935622912ull, 68056473384187692ull}}, {{6388798501467811328ull, 34028236692093846ull}}, {{3194399250733905664ull, 17014118346046923ull}}, {{15971996253669528576ull, 85070591730234615ull}}, {{17209370163689540096ull, 42535295865117307ull}}, {{17828057118699545856ull, 21267647932558653ull}}, {{15353309298659522816ull, 106338239662793269ull}}, {{16900026686184537088ull, 53169119831396634ull}}, {{8450013343092268544ull, 26584559915698317ull}}, {{5356578568042240000ull, 132922799578491587ull}}, {{11901661320875895808ull, 66461399789245793ull}}, {{15174202697292723712ull, 33230699894622896ull}}, {{7587101348646361856ull, 16615349947311448ull}}, {{1042018595812706048ull, 83076749736557242ull}}, {{521009297906352896ull, 41538374868278621ull}}, {{9483876685807952128ull, 20769187434139310ull}}, {{10525895281620658432ull, 103845937170696552ull}}, {{5262947640810329088ull, 51922968585348276ull}}, {{2631473820405164544ull, 25961484292674138ull}}, {{13157369102025822976ull, 129807421463370690ull}}, {{6578684551012911360ull, 64903710731685345ull}}, {{12512714312361231360ull, 32451855365842672ull}}, {{6256357156180615680ull, 16225927682921336ull}}, {{12835041707193527296ull, 81129638414606681ull}}, {{15640892890451539456ull, 40564819207303340ull}}, {{7820446445225769728ull, 20282409603651670ull}}, {{2208744078709745408ull, 101412048018258352ull}}, {{1104372039354872576ull, 50706024009129176ull}}, {{552186019677436160ull, 25353012004564588ull}}, {{2760930098387181568ull, 126765060022822940ull}}, {{1380465049193590784ull, 63382530011411470ull}}, {{690232524596795392ull, 31691265005705735ull}}, {{9568488299153173504ull, 15845632502852867ull}}, {{10948953348346764288ull, 79228162514264337ull}}, {{14697848711028157952ull, 39614081257132168ull}}, {{7348924355514078976ull, 19807040628566084ull}}, {{18297877703860843264ull, 99035203142830421ull}}, {{18372310888785197312ull, 49517601571415210ull}}, {{9186155444392598528ull, 24758800785707605ull}}, {{9037289074543890432ull, 123794003928538027ull}}, {{13742016574126721024ull, 61897001964269013ull}}, {{16094380323918136320ull, 30948500982134506ull}}, {{8047190161959068160ull, 15474250491067253ull}}, {{3342462662376237568ull, 77371252455336267ull}}, {{10894603368042894592ull, 38685626227668133ull}}, {{14670673720876222976ull, 19342813113834066ull}}, {{18013136383252460544ull, 96714065569170333ull}}, {{18229940228481006080ull, 48357032784585166ull}}, {{9114970114240503040ull, 24178516392292583ull}}, {{8681362423783412224ull, 120892581961462917ull}}, {{13564053248746481920ull, 60446290980731458ull}}, {{6782026624373240832ull, 30223145490365729ull}}, {{12614385349041396224ull, 15111572745182864ull}}, {{7731694524078326528ull, 75557863725914323ull}}, {{13089219298893938944ull, 37778931862957161ull}}, {{15767981686301745152ull, 18889465931478580ull}}, {{5052932136670520320ull, 94447329657392904ull}}, {{2526466068335260160ull, 47223664828696452ull}}, {{1263233034167630080ull, 23611832414348226ull}}, {{6316165170838150400ull, 118059162071741130ull}}, {{3158082585419075072ull, 59029581035870565ull}}, {{10802413329564313344ull, 29514790517935282ull}}, {{5401206664782156544ull, 14757395258967641ull}}, {{8559289250201231872ull, 73786976294838206ull}}, {{4279644625100615936ull, 36893488147419103ull}}, {{11363194349405083648ull, 18446744073709551ull}}, {{1475739525896763904ull, 92233720368547758ull}}, {{737869762948381952ull, 46116860184273879ull}}, {{9592306918328966656ull, 23058430092136939ull}}, {{11068046444225730816ull, 115292150460684697ull}}, {{14757395258967641088ull, 57646075230342348ull}}, {{7378697629483820544ull, 28823037615171174ull}}, {{3689348814741910272ull, 14411518807585587ull}}, {{18446744073709551360ull, 72057594037927935ull}}, {{18446744073709551360ull, 36028797018963967ull}}, {{18446744073709551360ull, 18014398509481983ull}}, {{18446744073709551360ull, 90071992547409919ull}}, {{18446744073709551360ull, 45035996273704959ull}}, {{18446744073709551360ull, 22517998136852479ull}}, {{18446744073709551360ull, 112589990684262399ull}}, {{18446744073709551360ull, 56294995342131199ull}}, {{18446744073709551360ull, 28147497671065599ull}}, {{18446744073709551360ull, 140737488355327999ull}}, {{18446744073709551360ull, 70368744177663999ull}}, {{18446744073709551360ull, 35184372088831999ull}}, {{18446744073709551360ull, 17592186044415999ull}}, {{18446744073709551360ull, 87960930222079999ull}}, {{18446744073709551360ull, 43980465111039999ull}}, {{18446744073709551360ull, 21990232555519999ull}}, {{18446744073709551360ull, 109951162777599999ull}}, {{18446744073709551360ull, 54975581388799999ull}}, {{18446744073709551360ull, 27487790694399999ull}}, {{18446744073709551360ull, 137438953471999999ull}}, {{18446744073709551360ull, 68719476735999999ull}}, {{18446744073709551360ull, 34359738367999999ull}}, {{18446744073709551360ull, 17179869183999999ull}}, {{18446744073709551360ull, 85899345919999999ull}}, {{18446744073709551360ull, 42949672959999999ull}}, {{18446744073709551360ull, 21474836479999999ull}}, {{18446744073709551360ull, 107374182399999999ull}}, {{18446744073709551360ull, 53687091199999999ull}}, {{18446744073709551360ull, 26843545599999999ull}}, {{18446744073709551360ull, 134217727999999999ull}}, {{18446744073709551360ull, 67108863999999999ull}}, {{18446744073709551360ull, 33554431999999999ull}}, {{18446744073709551360ull, 16777215999999999ull}}, {{18446744073709551360ull, 83886079999999999ull}}, {{18446744073709551360ull, 41943039999999999ull}}, {{18446744073709551360ull, 20971519999999999ull}}, {{18446744073709551360ull, 104857599999999999ull}}, {{18446744073709551360ull, 52428799999999999ull}}, {{18446744073709551360ull, 26214399999999999ull}}, {{18446744073709551360ull, 131071999999999999ull}}, {{18446744073709551360ull, 65535999999999999ull}}, {{18446744073709551360ull, 32767999999999999ull}}, {{18446744073709551360ull, 16383999999999999ull}}, {{18446744073709551360ull, 81919999999999999ull}}, {{18446744073709551360ull, 40959999999999999ull}}, {{18446744073709551360ull, 20479999999999999ull}}, {{18446744073709551360ull, 102399999999999999ull}}, {{18446744073709551360ull, 51199999999999999ull}}, {{18446744073709551360ull, 25599999999999999ull}}, {{18446744073709551360ull, 127999999999999999ull}}, {{18446744073709551360ull, 63999999999999999ull}}, {{18446744073709551360ull, 31999999999999999ull}}, {{18446744073709551360ull, 15999999999999999ull}}, {{18446744073709551360ull, 79999999999999999ull}}, {{18446744073709551360ull, 39999999999999999ull}}, {{18446744073709551360ull, 19999999999999999ull}}, {{18446744073709551360ull, 99999999999999999ull}}, {{18446744073709551360ull, 49999999999999999ull}}, {{18446744073709551360ull, 24999999999999999ull}}, {{18446744073709551360ull, 124999999999999999ull}}, {{18446744073709551360ull, 62499999999999999ull}}, {{18446744073709551360ull, 31249999999999999ull}}, {{18446744073709551360ull, 15624999999999999ull}}, {{18446744073709551360ull, 78124999999999999ull}}, {{18446744073709551360ull, 39062499999999999ull}}, {{18446744073709551360ull, 19531249999999999ull}}, {{18446744073709551360ull, 97656249999999999ull}}, {{18446744073709551360ull, 48828124999999999ull}}, {{18446744073709551360ull, 24414062499999999ull}}, {{18446744073709551360ull, 122070312499999999ull}}, {{18446744073709551360ull, 61035156249999999ull}}, {{18446744073709551360ull, 30517578124999999ull}}, {{18446744073709551360ull, 15258789062499999ull}}, {{18446744073709551360ull, 76293945312499999ull}}, {{18446744073709551360ull, 38146972656249999ull}}, {{18446744073709551360ull, 19073486328124999ull}}, {{18446744073709551360ull, 95367431640624999ull}}, {{18446744073709551360ull, 47683715820312499ull}}, {{18446744073709551360ull, 23841857910156249ull}}, {{18446744073709551360ull, 119209289550781249ull}}, {{18446744073709551360ull, 59604644775390624ull}}, {{9223372036854775552ull, 29802322387695312ull}}, {{4611686018427387648ull, 14901161193847656ull}}, {{4611686018427387648ull, 74505805969238281ull}}, {{11529215046068469504ull, 37252902984619140ull}}, {{5764607523034234624ull, 18626451492309570ull}}, {{10376293541461622528ull, 93132257461547851ull}}, {{14411518807585586944ull, 46566128730773925ull}}, {{16429131440647569152ull, 23283064365386962ull}}, {{8358680908399640320ull, 116415321826934814ull}}, {{4179340454199820032ull, 58207660913467407ull}}, {{11313042263954685696ull, 29103830456733703ull}}, {{14879893168832118528ull, 14551915228366851ull}}, {{612489549322387200ull, 72759576141834259ull}}, {{9529616811515969280ull, 36379788070917129ull}}, {{13988180442612760320ull, 18189894035458564ull}}, {{14600669991935147776ull, 90949470177292823ull}}, {{16523707032822349568ull, 45474735088646411ull}}, {{17485225553265950464ull, 22737367544323205ull}}, {{13639151471491546880ull, 113686837721616029ull}}, {{16042947772600549120ull, 56843418860808014ull}}, {{8021473886300274432ull, 28421709430404007ull}}, {{3213881284082269952ull, 142108547152020037ull}}, {{10830312678895910656ull, 71054273576010018ull}}, {{5415156339447955200ull, 35527136788005009ull}}, {{11930950206578753280ull, 17763568394002504ull}}, {{4314518811765112576ull, 88817841970012523ull}}, {{11380631442737331968ull, 44408920985006261ull}}, {{14913687758223441664ull, 22204460492503130ull}}, {{781462496279002880ull, 111022302462515654ull}}, {{390731248139501312ull, 55511151231257827ull}}, {{9418737660924526336ull, 27755575615628913ull}}, {{10200200157203529472ull, 138777878078144567ull}}, {{14323472115456540416ull, 69388939039072283ull}}, {{16385108094583045888ull, 34694469519536141ull}}, {{17415926084146298624ull, 17347234759768070ull}}, {{13292654125893287680ull, 86736173798840354ull}}, {{6646327062946643712ull, 43368086899420177ull}}, {{12546535568328097536ull, 21684043449710088ull}}, {{7392445620511833856ull, 108420217248550443ull}}, {{12919594847110692608ull, 54210108624275221ull}}, {{15683169460410121984ull, 27105054312137610ull}}, {{4628871007212404480ull, 135525271560688054ull}}, {{2314435503606202112ull, 67762635780344027ull}}, {{10380589788657876736ull, 33881317890172013ull}}, {{14413666931183714048ull, 16940658945086006ull}}, {{16728102434789916416ull, 84703294725430033ull}}, {{17587423254249733888ull, 42351647362715016ull}}, {{8793711627124866816ull, 21175823681357508ull}}, {{7075069988205231872ull, 105879118406787542ull}}, {{3537534994102615808ull, 52939559203393771ull}}, {{10992139533906083584ull, 26469779601696885ull}}, {{18067209522111315712ull, 132348898008484427ull}}, {{18256976797910433536ull, 66174449004242213ull}}, {{18351860435809992448ull, 33087224502121106ull}}, {{9175930217904996096ull, 16543612251060553ull}}, {{8986162942105878272ull, 82718061255302767ull}}, {{13716453507907714816ull, 41359030627651383ull}}, {{16081598790808633088ull, 20679515313825691ull}}, {{6621017659204960000ull, 103397576569128459ull}}, {{12533880866457255680ull, 51698788284564229ull}}, {{15490312470083403520ull, 25849394142282114ull}}, {{3664586055578812160ull, 129246970711410574ull}}, {{1832293027789405952ull, 64623485355705287ull}}, {{10139518550749478656ull, 32311742677852643ull}}, {{14293131312229515008ull, 16155871338926321ull}}, {{16125424340018921216ull, 80779356694631608ull}}, {{8062712170009460480ull, 40389678347315804ull}}, {{4031356085004730112ull, 20194839173657902ull}}, {{1710036351314099968ull, 100974195868289511ull}}, {{10078390212511825664ull, 50487097934144755ull}}, {{14262567143110688512ull, 25243548967072377ull}}, {{15972603494424788736ull, 126217744835361888ull}}, {{7986301747212394240ull, 63108872417680944ull}}, {{3993150873606196992ull, 31554436208840472ull}}, {{1996575436803098368ull, 15777218104420236ull}}, {{9982877184015492864ull, 78886090522101180ull}}, {{4991438592007746304ull, 39443045261050590ull}}, {{2495719296003873024ull, 19721522630525295ull}}, {{12478596480019366144ull, 98607613152626475ull}}, {{15462670276864458752ull, 49303806576313237ull}}, {{16954707175287005184ull, 24651903288156618ull}}, {{10986559581596819968ull, 123259516440783094ull}}, {{5493279790798409984ull, 61629758220391547ull}}, {{11970011932253980672ull, 30814879110195773ull}}, {{15208378002981766144ull, 15407439555097886ull}}, {{2254913720070624512ull, 77037197775489434ull}}, {{1127456860035312128ull, 38518598887744717ull}}, {{9787100466872431872ull, 19259299443872358ull}}, {{12042014186943056384ull, 96296497219361792ull}}, {{6021007093471528192ull, 48148248609680896ull}}, {{3010503546735763968ull, 24074124304840448ull}}, {{15052517733678820608ull, 120370621524202240ull}}, {{7526258866839410176ull, 60185310762101120ull}}, {{3763129433419705088ull, 30092655381050560ull}}, {{1881564716709852416ull, 15046327690525280ull}}, {{9407823583549262848ull, 75231638452626400ull}}, {{4703911791774631424ull, 37615819226313200ull}}, {{2351955895887315712ull, 18807909613156600ull}}, {{11759779479436578560ull, 94039548065783000ull}}, {{5879889739718289152ull, 47019774032891500ull}}, {{2939944869859144448ull, 23509887016445750ull}}, {{14699724349295723264ull, 117549435082228750ull}}, {{7349862174647861504ull, 58774717541114375ull}}, {{12898303124178706432ull, 29387358770557187ull}}, {{15672523598944129024ull, 14693679385278593ull}}, {{4575641699882439168ull, 73468396926392969ull}}, {{11511192886795995392ull, 36734198463196484ull}}, {{5755596443397997568ull, 18367099231598242ull}}, {{10331238143280436736ull, 91835496157991211ull}}, {{14388991108494994176ull, 45917748078995605ull}}, {{16417867591102272768ull, 22958874039497802ull}}, {{8302361660673158144ull, 114794370197489014ull}}, {{4151180830336579072ull, 57397185098744507ull}}, {{11298962452023065344ull, 28698592549372253ull}}, {{1154580038986671872ull, 143492962746861268ull}}, {{577290019493335808ull, 71746481373430634ull}}, {{288645009746667776ull, 35873240686715317ull}}, {{9367694541728109568ull, 17936620343357658ull}}, {{9944984561221445632ull, 89683101716788292ull}}, {{4972492280610722816ull, 44841550858394146ull}}, {{2486246140305361408ull, 22420775429197073ull}}, {{12431230701526807040ull, 112103877145985365ull}}, {{15438987387618179328ull, 56051938572992682ull}}, {{7719493693809089536ull, 28025969286496341ull}}, {{1703980321626345216ull, 140129846432481707ull}}, {{10075362197667948288ull, 70064923216240853ull}}, {{14261053135688749824ull, 35032461608120426ull}}, {{7130526567844374784ull, 17516230804060213ull}}, {{17205888765512323328ull, 87581154020301066ull}}, {{8602944382756161536ull, 43790577010150533ull}}, {{13524844228232856576ull, 21895288505075266ull}}, {{12283988920035628544ull, 109476442525376333ull}}, {{15365366496872590080ull, 54738221262688166ull}}, {{7682683248436294912ull, 27369110631344083ull}}, {{1519928094762371840ull, 136845553156720417ull}}, {{9983336084235961600ull, 68422776578360208ull}}, {{4991668042117980672ull, 34211388289180104ull}}, {{2495834021058990336ull, 17105694144590052ull}}, {{12479170105294952192ull, 85528470722950260ull}}, {{6239585052647475968ull, 42764235361475130ull}}, {{3119792526323737856ull, 21382117680737565ull}}, {{15598962631618690304ull, 106910588403687825ull}}, {{17022853352664120832ull, 53455294201843912ull}}, {{8511426676332060416ull, 26727647100921956ull}}, {{5663645234241199104ull, 133638235504609782ull}}, {{2831822617120599552ull, 66819117752304891ull}}, {{10639283345415075584ull, 33409558876152445ull}}, {{14543013709562313472ull, 16704779438076222ull}}, {{17374836326682913024ull, 83523897190381113ull}}, {{17910790200196232192ull, 41761948595190556ull}}, {{8955395100098116096ull, 20880974297595278ull}}, {{7883487353071477760ull, 104404871487976392ull}}, {{3941743676535738880ull, 52202435743988196ull}}, {{1970871838267869440ull, 26101217871994098ull}}, {{9854359191339347200ull, 130506089359970490ull}}, {{4927179595669673472ull, 65253044679985245ull}}, {{11686961834689612544ull, 32626522339992622ull}}, {{5843480917344806144ull, 16313261169996311ull}}, {{10770660513014479872ull, 81566305849981556ull}}, {{5385330256507239936ull, 40783152924990778ull}}, {{2692665128253619968ull, 20391576462495389ull}}, {{13463325641268099840ull, 101957882312476945ull}}, {{15955034857488825600ull, 50978941156238472ull}}, {{7977517428744412672ull, 25489470578119236ull}}, {{2994098996302961152ull, 127447352890596182ull}}, {{1497049498151480576ull, 63723676445298091ull}}, {{9971896785930515968ull, 31861838222649045ull}}, {{14209320429820033792ull, 15930919111324522ull}}, {{15706369927971514368ull, 79654595556622613ull}}, {{17076557000840532992ull, 39827297778311306ull}}, {{8538278500420266496ull, 19913648889155653ull}}, {{5797904354682229248ull, 99568244445778267ull}}, {{12122324214195890432ull, 49784122222889133ull}}, {{15284534143952720896ull, 24892061111444566ull}}, {{2635694424925398784ull, 124460305557222834ull}}, {{1317847212462699264ull, 62230152778611417ull}}, {{9882295643086125312ull, 31115076389305708ull}}, {{4941147821543062528ull, 15557538194652854ull}}, {{6258995034005762048ull, 77787690973264271ull}}, {{12352869553857656832ull, 38893845486632135ull}}, {{15399806813783604224ull, 19446922743316067ull}}, {{3212057774079814656ull, 97234613716580339ull}}, {{10829400923894683136ull, 48617306858290169ull}}, {{14638072498802117376ull, 24308653429145084ull}}, {{17850130272881932032ull, 121543267145725423ull}}, {{18148437173295741696ull, 60771633572862711ull}}, {{18297590623502646528ull, 30385816786431355ull}}, {{18372167348606098944ull, 15192908393215677ull}}, {{18073860448192289280ull, 75964541966078389ull}}, {{18260302260950920448ull, 37982270983039194ull}}, {{9130151130475460096ull, 18991135491519597ull}}, {{8757267504958198016ull, 94955677457597987ull}}, {{13602005789333874688ull, 47477838728798993ull}}, {{16024374931521713152ull, 23738919364399496ull}}, {{6334898362770359808ull, 118694596821997484ull}}, {{3167449181385179904ull, 59347298410998742ull}}, {{1583724590692589824ull, 29673649205499371ull}}, {{10015234332201070592ull, 14836824602749685ull}}, {{13182683513586250496ull, 74184123013748427ull}}, {{15814713793647900928ull, 37092061506874213ull}}, {{17130728933678726144ull, 18546030753437106ull}}, {{11866668373555425280ull, 92730153767185534ull}}, {{5933334186777712640ull, 46365076883592767ull}}, {{12190039130243632128ull, 23182538441796383ull}}, {{5609963430089505792ull, 115912692208981918ull}}, {{2804981715044752896ull, 57956346104490959ull}}, {{10625862894377152256ull, 28978173052245479ull}}, {{14536303484043351808ull, 14489086526122739ull}}, {{17341285199088104960ull, 72445432630613698ull}}, {{8670642599544052480ull, 36222716315306849ull}}, {{13558693336626801920ull, 18111358157653424ull}}, {{12453234462005355264ull, 90556790788267123ull}}, {{15449989267857453312ull, 45278395394133561ull}}, {{16948366670783502336ull, 22639197697066780ull}}, {{10954857059079306240ull, 113195988485333904ull}}, {{5477428529539653120ull, 56597994242666952ull}}, {{2738714264769826560ull, 28298997121333476ull}}, {{13693571323849132800ull, 141494985606667380ull}}, {{6846785661924566272ull, 70747492803333690ull}}, {{3423392830962283008ull, 35373746401666845ull}}, {{10935068452335917312ull, 17686873200833422ull}}, {{17781854114260483840ull, 88434366004167112ull}}, {{8890927057130241792ull, 44217183002083556ull}}, {{4445463528565120768ull, 22108591501041778ull}}, {{3780573569116053248ull, 110542957505208891ull}}, {{11113658821412802304ull, 55271478752604445ull}}, {{14780201447561176832ull, 27635739376302222ull}}, {{114030942967678464ull, 138178696881511114ull}}, {{57015471483839232ull, 69089348440755557ull}}, {{9251879772596695296ull, 34544674220377778ull}}, {{4625939886298347520ull, 17272337110188889ull}}, {{4682955357782187008ull, 86361685550944446ull}}, {{2341477678891093504ull, 43180842775472223ull}}, {{10394110876300322560ull, 21590421387736111ull}}, {{15077066234082509568ull, 107952106938680557ull}}, {{16761905153896030464ull, 53976053469340278ull}}, {{8380952576948015104ull, 26988026734670139ull}}, {{5011274737320973312ull, 134940133673350697ull}}, {{11729009405515262464ull, 67470066836675348ull}}, {{5864504702757631232ull, 33735033418337674ull}}, {{2932252351378815488ull, 16867516709168837ull}}, {{14661261756894077952ull, 84337583545844185ull}}, {{16554002915301814784ull, 42168791772922092ull}}, {{8277001457650907392ull, 21084395886461046ull}}, {{4491519140835433728ull, 105421979432305232ull}}, {{2245759570417716736ull, 52710989716152616ull}}, {{1122879785208858368ull, 26355494858076308ull}}, {{5614398926044292352ull, 131777474290381540ull}}, {{2807199463022146048ull, 65888737145190770ull}}, {{1403599731511073024ull, 32944368572595385ull}}, {{9925171902610312192ull, 16472184286297692ull}}, {{12732371365632458496ull, 82360921431488462ull}}, {{6366185682816229120ull, 41180460715744231ull}}, {{12406464878262890240ull, 20590230357872115ull}}, {{6692092170185797376ull, 102951151789360578ull}}, {{3346046085092898560ull, 51475575894680289ull}}, {{10896395079401224960ull, 25737787947340144ull}}, {{17588487249587022336ull, 128688939736700722ull}}, {{8794243624793511168ull, 64344469868350361ull}}, {{13620493849251531264ull, 32172234934175180ull}}, {{6810246924625765632ull, 16086117467087590ull}}, {{15604490549419276800ull, 80430587335437951ull}}, {{17025617311564414208ull, 40215293667718975ull}}, {{17736180692636982784ull, 20107646833859487ull}}, {{14893927168346708224ull, 100538234169297439ull}}, {{16670335621028129792ull, 50269117084648719ull}}, {{17558539847368840704ull, 25134558542324359ull}}, {{14005722942005997312ull, 125672792711621799ull}}, {{16226233507857774336ull, 62836396355810899ull}}, {{17336488790783662848ull, 31418198177905449ull}}, {{17891616432246607104ull, 15709099088952724ull}}, {{15671105866394830080ull, 78545495444763624ull}}, {{7835552933197414912ull, 39272747722381812ull}}, {{3917776466598707456ull, 19636373861190906ull}}, {{1142138259283986176ull, 98181869305954531ull}}, {{9794441166496768768ull, 49090934652977265ull}}, {{14120592620103160064ull, 24545467326488632ull}}, {{15262730879387146496ull, 122727336632443163ull}}, {{16854737476548348928ull, 61363668316221581ull}}, {{17650740775128950272ull, 30681834158110790ull}}, {{8825370387564475136ull, 15340917079055395ull}}, {{7233363790403272448ull, 76704585395276977ull}}, {{12840053932056411904ull, 38352292697638488ull}}, {{6420026966028205824ull, 19176146348819244ull}}, {{13653390756431478528ull, 95880731744096221ull}}, {{16050067415070514944ull, 47940365872048110ull}}, {{8025033707535257344ull, 23970182936024055ull}}, {{3231680390257184512ull, 119850914680120277ull}}, {{10839212231983367936ull, 59925457340060138ull}}, {{5419606115991683840ull, 29962728670030069ull}}, {{11933175094850617600ull, 14981364335015034ull}}, {{4325643253124434176ull, 74906821675075173ull}}, {{11386193663416992768ull, 37453410837537586ull}}, {{5693096831708496384ull, 18726705418768793ull}}, {{10018740084832930816ull, 93633527093843966ull}}, {{5009370042416465408ull, 46816763546921983ull}}, {{11728057058063008512ull, 23408381773460991ull}}, {{3300053069186387712ull, 117041908867304958ull}}, {{1650026534593193728ull, 58520954433652479ull}}, {{10048385304151372544ull, 29260477216826239ull}}, {{14247564688930461952ull, 14630238608413119ull}}, {{15897591223523655936ull, 73151193042065598ull}}, {{7948795611761827840ull, 36575596521032799ull}}, {{13197769842735689728ull, 18287798260516399ull}}, {{10648616992549794048ull, 91438991302581998ull}}, {{5324308496274896896ull, 45719495651290999ull}}, {{11885526284992224256ull, 22859747825645499ull}}, {{4087399203832466944ull, 114298739128227498ull}}, {{2043699601916233472ull, 57149369564113749ull}}, {{10245221837812892416ull, 28574684782056874ull}}, {{14332621041645359360ull, 142873423910284372ull}}, {{7166310520822679552ull, 71436711955142186ull}}, {{3583155260411339776ull, 35718355977571093ull}}, {{11014949667060445696ull, 17859177988785546ull}}, {{18181260187883125504ull, 89295889943927732ull}}, {{9090630093941562624ull, 44647944971963866ull}}, {{4545315046970781184ull, 22323972485981933ull}}, {{4279831161144355328ull, 111619862429909666ull}}, {{2139915580572177664ull, 55809931214954833ull}}, {{10293329827140864512ull, 27904965607477416ull}}, {{14573160988285219840ull, 139524828037387082ull}}, {{7286580494142609920ull, 69762414018693541ull}}, {{12866662283926080768ull, 34881207009346770ull}}, {{6433331141963040256ull, 17440603504673385ull}}, {{13719911636105650176ull, 87203017523366926ull}}, {{6859955818052825088ull, 43601508761683463ull}}, {{12653349945881188352ull, 21800754380841731ull}}, {{7926517508277287168ull, 109003771904208658ull}}, {{3963258754138643456ull, 54501885952104329ull}}, {{11205001413924097536ull, 27250942976052164ull}}, {{684774848491833088ull, 136254714880260823ull}}, {{9565759461100692224ull, 68127357440130411ull}}, {{14006251767405121792ull, 34063678720065205ull}}, {{16226497920557336576ull, 17031839360032602ull}}, {{7345513307948477440ull, 85159196800163014ull}}, {{3672756653974238720ull, 42579598400081507ull}}, {{11059750363841895168ull, 21289799200040753ull}}, {{18405263671790372608ull, 106448996000203767ull}}, {{18426003872749961984ull, 53224498000101883ull}}, {{18436373973229756672ull, 26612249000050941ull}}, {{18394893571310577920ull, 133061245000254709ull}}, {{18420818822510064640ull, 66530622500127354ull}}, {{9210409411255032320ull, 33265311250063677ull}}, {{13828576742482291968ull, 16632655625031838ull}}, {{13802651491282805248ull, 83163278125159193ull}}, {{16124697782496178432ull, 41581639062579596ull}}, {{8062348891248089088ull, 20790819531289798ull}}, {{3418256308821342720ull, 103954097656448992ull}}, {{1709128154410671360ull, 51977048828224496ull}}, {{854564077205335552ull, 25988524414112248ull}}, {{4272820386026678528ull, 129942622070561240ull}}, {{2136410193013339136ull, 64971311035280620ull}}, {{1068205096506669568ull, 32485655517640310ull}}, {{534102548253334784ull, 16242827758820155ull}}, {{2670512741266673920ull, 81214138794100775ull}}, {{10558628407488112640ull, 40607069397050387ull}}, {{14502686240598832128ull, 20303534698525193ull}}, {{17173198981865506304ull, 101517673492625968ull}}, {{8586599490932753152ull, 50758836746312984ull}}, {{4293299745466376448ull, 25379418373156492ull}}, {{3019754653622331136ull, 126897091865782461ull}}, {{10733249363665941248ull, 63448545932891230ull}}, {{5366624681832970496ull, 31724272966445615ull}}, {{11906684377771260928ull, 15862136483222807ull}}, {{4193189667727650816ull, 79310682416114038ull}}, {{2096594833863825408ull, 39655341208057019ull}}, {{10271669453786688512ull, 19827670604028509ull}}, {{14464859121514339328ull, 99138353020142547ull}}, {{16455801597611945472ull, 49569176510071273ull}}, {{17451272835660748544ull, 24784588255035636ull}}, {{13469387883465536512ull, 123922941275178184ull}}, {{6734693941732768256ull, 61961470637589092ull}}, {{3367346970866384128ull, 30980735318794546ull}}, {{1683673485433191936ull, 15490367659397273ull}}, {{8418367427165960192ull, 77451838296986365ull}}, {{13432555750437755904ull, 38725919148493182ull}}, {{6716277875218877952ull, 19362959574246591ull}}, {{15134645302384838144ull, 96814797871232956ull}}, {{7567322651192419072ull, 48407398935616478ull}}, {{3783661325596209408ull, 24203699467808239ull}}, {{471562554271496192ull, 121018497339041196ull}}, {{235781277135748096ull, 60509248669520598ull}}, {{117890638567874048ull, 30254624334760299ull}}, {{9282317356138712832ull, 15127312167380149ull}}, {{9518098633274460928ull, 75636560836900747ull}}, {{13982421353492006144ull, 37818280418450373ull}}, {{16214582713600778752ull, 18909140209225186ull}}, {{7285937273165688320ull, 94545701046125934ull}}, {{3642968636582844160ull, 47272850523062967ull}}, {{11044856355146197760ull, 23636425261531483ull}}, {{18330793628311886080ull, 118182126307657417ull}}, {{18388768851010718720ull, 59091063153828708ull}}, {{9194384425505359360ull, 29545531576914354ull}}, {{4597192212752679680ull, 14772765788457177ull}}, {{4539216990053847040ull, 73863828942285886ull}}, {{2269608495026923520ull, 36931914471142943ull}}, {{10358176284368237568ull, 18465957235571471ull}}, {{14897393274422084608ull, 92329786177857357ull}}, {{16672068674065818112ull, 46164893088928678ull}}, {{8336034337032909056ull, 23082446544464339ull}}, {{4786683537745442048ull, 115412232722321697ull}}, {{11616713805727496704ull, 57706116361160848ull}}, {{5808356902863748352ull, 28853058180580424ull}}, {{2904178451431874048ull, 14426529090290212ull}}, {{14520892257159371008ull, 72132645451451060ull}}, {{7260446128579685376ull, 36066322725725530ull}}, {{3630223064289842688ull, 18033161362862765ull}}, {{18151115321449213696ull, 90165806814313825ull}}, {{18298929697579382528ull, 45082903407156912ull}}, {{9149464848789691136ull, 22541451703578456ull}}, {{8853836096529353472ull, 112707258517892282ull}}, {{4426918048264676608ull, 56353629258946141ull}}, {{11436831060987113984ull, 28176814629473070ull}}, {{1843923083806916096ull, 140884073147365353ull}}, {{10145333578758233856ull, 70442036573682676ull}}, {{5072666789379116800ull, 35221018286841338ull}}, {{2536333394689558272ull, 17610509143420669ull}}, {{12681666973447792128ull, 88052545717103345ull}}, {{15564205523578671872ull, 44026272858551672ull}}, {{7782102761789335808ull, 22013136429275836ull}}, {{2017025661527576576ull, 110065682146379182ull}}, {{1008512830763788288ull, 55032841073189591ull}}, {{9727628452236669952ull, 27516420536594795ull}}, {{11744654113764246528ull, 137582102682973977ull}}, {{15095699093736899072ull, 68791051341486988ull}}, {{7547849546868449536ull, 34395525670743494ull}}, {{3773924773434224640ull, 17197762835371747ull}}, {{422879793461572096ull, 85988814176858736ull}}, {{211439896730786048ull, 42994407088429368ull}}, {{105719948365392896ull, 21497203544214684ull}}, {{528599741826965248ull, 107486017721073420ull}}, {{264299870913482496ull, 53743008860536710ull}}, {{132149935456741120ull, 26871504430268355ull}}, {{660749677283706624ull, 134357522151341775ull}}, {{9553746875496628992ull, 67178761075670887ull}}, {{14000245474603090176ull, 33589380537835443ull}}, {{16223494774156320768ull, 16794690268917721ull}}, {{7330497575943398400ull, 83973451344588609ull}}, {{12888620824826475008ull, 41986725672294304ull}}, {{6444310412413237504ull, 20993362836147152ull}}, {{13774807988356635904ull, 104966814180735761ull}}, {{16110776031033093632ull, 52483407090367880ull}}, {{8055388015516546816ull, 26241703545183940ull}}, {{3383451930163631360ull, 131208517725919702ull}}, {{1691725965081815552ull, 65604258862959851ull}}, {{10069235019395683584ull, 32802129431479925ull}}, {{14257989546552617472ull, 16401064715739962ull}}, {{15949715511634433280ull, 82005323578699813ull}}, {{17198229792671992320ull, 41002661789349906ull}}, {{8599114896335996160ull, 20501330894674953ull}}, {{6102086334260877824ull, 102506654473374767ull}}, {{12274415203985214720ull, 51253327236687383ull}}, {{15360579638847383040ull, 25626663618343691ull}}, {{3015921899398709504ull, 128133318091718459ull}}, {{10731332986554130432ull, 64066659045859229ull}}, {{14589038530131841024ull, 32033329522929614ull}}, {{7294519265065920512ull, 16016664761464807ull}}, {{18025852251620050944ull, 80083323807324036ull}}, {{9012926125810025472ull, 40041661903662018ull}}, {{4506463062905012736ull, 20020830951831009ull}}, {{4085571240815512320ull, 100104154759155046ull}}, {{2042785620407756032ull, 50052077379577523ull}}, {{10244764847058653696ull, 25026038689788761ull}}, {{14330336087874166016ull, 125130193448943807ull}}, {{16388540080791858688ull, 62565096724471903ull}}, {{17417642077250705152ull, 31282548362235951ull}}, {{17932193075480128256ull, 15641274181117975ull}}, {{15873989082562435584ull, 78206370905589879ull}}, {{17160366578135993600ull, 39103185452794939ull}}, {{17803555325922772480ull, 19551592726397469ull}}, {{15230800334775656704ull, 97757963631987349ull}}, {{16838772204242604032ull, 48878981815993674ull}}, {{8419386102121302016ull, 24439490907996837ull}}, {{5203442363187407104ull, 122197454539984187ull}}, {{11825093218448479232ull, 61098727269992093ull}}, {{15135918646079015424ull, 30549363634996046ull}}, {{7567959323039507712ull, 15274681817498023ull}}, {{946308467778435584ull, 76373409087490117ull}}, {{9696526270743993600ull, 38186704543745058ull}}, {{4848263135371996672ull, 19093352271872529ull}}, {{5794571603150432256ull, 95466761359362646ull}}, {{2897285801575216128ull, 47733380679681323ull}}, {{10672014937642383872ull, 23866690339840661ull}}, {{16466586540792816128ull, 119333451699203307ull}}, {{17456665307251183872ull, 59666725849601653ull}}, {{17951704690480367616ull, 29833362924800826ull}}, {{8975852345240183808ull, 14916681462400413ull}}, {{7985773578781816064ull, 74583407312002067ull}}, {{13216258826245683712ull, 37291703656001033ull}}, {{15831501449977617664ull, 18645851828000516ull}}, {{5370530955049882368ull, 93229259140002584ull}}, {{2685265477524941056ull, 46614629570001292ull}}, {{1342632738762470400ull, 23307314785000646ull}}, {{6713163693812352768ull, 116536573925003230ull}}, {{3356581846906176256ull, 58268286962501615ull}}, {{10901662960307863808ull, 29134143481250807ull}}, {{14674203517008707584ull, 14567071740625403ull}}, {{18030785363914884096ull, 72835358703127018ull}}, {{9015392681957442048ull, 36417679351563509ull}}, {{13731068377833496832ull, 18208839675781754ull}}, {{13315109668038829568ull, 91044198378908773ull}}, {{15880926870874190592ull, 45522099189454386ull}}, {{7940463435437095168ull, 22761049594727193ull}}, {{2808829029766373120ull, 113805247973635967ull}}, {{10627786551737962240ull, 56902623986817983ull}}, {{14537265312723756800ull, 28451311993408991ull}}, {{17346094342490130176ull, 142256559967044958ull}}, {{8673047171245064960ull, 71128279983522479ull}}, {{13559895622477308160ull, 35564139991761239ull}}, {{16003319848093429760ull, 17782069995880619ull}}, {{6229622945628943360ull, 88910349979403099ull}}, {{12338183509669247488ull, 44455174989701549ull}}, {{15392463791689399552ull, 22227587494850774ull}}, {{3175342663608791296ull, 111137937474253874ull}}, {{1587671331804395520ull, 55568968737126937ull}}, {{10017207702756973568ull, 27784484368563468ull}}, {{13192550366365765120ull, 138922421842817342ull}}, {{6596275183182882560ull, 69461210921408671ull}}, {{12521509628446216960ull, 34730605460704335ull}}, {{15484126851077884160ull, 17365302730352167ull}}, {{3633657960551215360ull, 86826513651760839ull}}, {{11040201017130383360ull, 43413256825880419ull}}, {{14743472545419967488ull, 21706628412940209ull}}, {{18377130505971182848ull, 108533142064701048ull}}, {{9188565252985591296ull, 54266571032350524ull}}, {{4594282626492795648ull, 27133285516175262ull}}, {{4524669058754426880ull, 135666427580876311ull}}, {{11485706566231989248ull, 67833213790438155ull}}, {{14966225319970770432ull, 33916606895219077ull}}, {{16706484696840161024ull, 16958303447609538ull}}, {{9745447189362598656ull, 84791517238047694ull}}, {{4872723594681299200ull, 42395758619023847ull}}, {{11659733834195425280ull, 21197879309511923ull}}, {{2958436949848472576ull, 105989396547559618ull}}, {{1479218474924236288ull, 52994698273779809ull}}, {{9962981274316893952ull, 26497349136889904ull}}, {{12921418224165366528ull, 132486745684449522ull}}, {{6460709112082683136ull, 66243372842224761ull}}, {{12453726592896117248ull, 33121686421112380ull}}, {{6226863296448058624ull, 16560843210556190ull}}, {{12687572408530742016ull, 82804216052780951ull}}, {{15567158241120146688ull, 41402108026390475ull}}, {{17006951157414849024ull, 20701054013195237ull}}, {{11247779492236039424ull, 103505270065976189ull}}, {{14847261782972795392ull, 51752635032988094ull}}, {{7423630891486397696ull, 25876317516494047ull}}, {{224666310012885760ull, 129381587582470237ull}}, {{9335705191861218560ull, 64690793791235118ull}}, {{4667852595930609152ull, 32345396895617559ull}}, {{11557298334820080384ull, 16172698447808779ull}}, {{2446259452971747584ull, 80863492239043898ull}}, {{1223129726485873664ull, 40431746119521949ull}}, {{9834936900097712640ull, 20215873059760974ull}}, {{12281196353069460224ull, 101079365298804872ull}}, {{6140598176534729984ull, 50539682649402436ull}}, {{3070299088267364864ull, 25269841324701218ull}}, {{15351495441336825344ull, 126349206623506090ull}}, {{7675747720668412672ull, 63174603311753045ull}}, {{13061245897188982016ull, 31587301655876522ull}}, {{6530622948594490880ull, 15793650827938261ull}}, {{14206370669262903552ull, 78968254139691306ull}}, {{7103185334631451648ull, 39484127069845653ull}}, {{12774964704170501632ull, 19742063534922826ull}}, {{8534591299723853824ull, 98710317674614133ull}}, {{13490667686716702720ull, 49355158837307066ull}}, {{6745333843358351360ull, 24677579418653533ull}}, {{15279925143082205184ull, 123387897093267666ull}}, {{7639962571541102592ull, 61693948546633833ull}}, {{13043353322625327104ull, 30846974273316916ull}}, {{6521676661312663552ull, 15423487136658458ull}}, {{14161639232853766144ull, 77117435683292291ull}}, {{16304191653281658880ull, 38558717841646145ull}}, {{17375467863495605248ull, 19279358920823072ull}}, {{13090363022639819776ull, 96396794604115364ull}}, {{6545181511319909888ull, 48198397302057682ull}}, {{3272590755659954944ull, 24099198651028841ull}}, {{16362953778299774720ull, 120495993255144205ull}}, {{17404848926004663040ull, 60247996627572102ull}}, {{8702424463002331392ull, 30123998313786051ull}}, {{13574584268355941376ull, 15061999156893025ull}}, {{12532689120651053056ull, 75309995784465128ull}}, {{6266344560325526528ull, 37654997892232564ull}}, {{3133172280162763264ull, 18827498946116282ull}}, {{15665861400813816320ull, 94137494730581410ull}}, {{7832930700406908160ull, 47068747365290705ull}}, {{13139837387058229760ull, 23534373682645352ull}}, {{10358954714162494720ull, 117671868413226763ull}}, {{14402849393936023040ull, 58835934206613381ull}}, {{16424796733822787328ull, 29417967103306690ull}}, {{8212398366911393536ull, 14708983551653345ull}}, {{4168503687137865216ull, 73544917758266727ull}}, {{11307623880423708416ull, 36772458879133363ull}}, {{14877183977066629888ull, 18386229439566681ull}}, {{598943590494943744ull, 91931147197833409ull}}, {{9522843832102247680ull, 45965573598916704ull}}, {{4761421916051123712ull, 22982786799458352ull}}, {{5360365506546067456ull, 114913933997291761ull}}, {{11903554790127809536ull, 57456966998645880ull}}, {{5951777395063904768ull, 28728483499322940ull}}, {{11312142901609972224ull, 143642417496614701ull}}, {{14879443487659761920ull, 71821208748307350ull}}, {{7439721743829880832ull, 35910604374153675ull}}, {{12943232908769716224ull, 17955302187076837ull}}, {{9375932322719926528ull, 89776510935384188ull}}, {{4687966161359963136ull, 44888255467692094ull}}, {{2343983080679981568ull, 22444127733846047ull}}, {{11719915403399908352ull, 112220638669230235ull}}, {{15083329738554729984ull, 56110319334615117ull}}, {{16765036906132140800ull, 28055159667307558ull}}, {{10038208235822497536ull, 140275798336537794ull}}, {{5019104117911248640ull, 70137899168268897ull}}, {{11732924095810400000ull, 35068949584134448ull}}, {{5866462047905199872ull, 17534474792067224ull}}, {{10885566165816448768ull, 87672373960336121ull}}, {{14666155119763000064ull, 43836186980168060ull}}, {{7333077559881499904ull, 21918093490084030ull}}, {{18218643725697948928ull, 109590467450420151ull}}, {{18332693899703750144ull, 54795233725210075ull}}, {{18389718986706650880ull, 27397616862605037ull}}, {{18161618638695048192ull, 136988084313025189ull}}, {{18304181356202299904ull, 68494042156512594ull}}, {{9152090678101149952ull, 34247021078256297ull}}, {{13799417375905350656ull, 17123510539128148ull}}, {{13656854658398098944ull, 85617552695640743ull}}, {{16051799366053825280ull, 42808776347820371ull}}, {{17249271719881688320ull, 21404388173910185ull}}, {{12459382304570235904ull, 107021940869550929ull}}, {{15453063189139893760ull, 53510970434775464ull}}, {{7726531594569946880ull, 26755485217387732ull}}, {{1739169825430631168ull, 133777426086938662ull}}, {{869584912715315456ull, 66888713043469331ull}}, {{9658164493212433408ull, 33444356521734665ull}}, {{14052454283460992512ull, 16722178260867332ull}}, {{14922039196176308224ull, 83610891304336663ull}}, {{16684391634942929920ull, 41805445652168331ull}}, {{17565567854326240768ull, 20902722826084165ull}}, {{14040862976792997376ull, 104513614130420829ull}}, {{16243803525251274496ull, 52256807065210414ull}}, {{8121901762625637120ull, 26128403532605207ull}}, {{3716020665709083136ull, 130642017663026037ull}}, {{11081382369709317376ull, 65321008831513018ull}}, {{5540691184854658560ull, 32660504415756509ull}}, {{11993717629282105088ull, 16330252207878254ull}}, {{4628355925281870848ull, 81651261039391273ull}}, {{11537549999495711232ull, 40825630519695636ull}}, {{5768774999747855616ull, 20412815259847818ull}}, {{10397130925029726464ull, 102064076299239091ull}}, {{14421937499369638912ull, 51032038149619545ull}}, {{16434340786539595264ull, 25516019074809772ull}}, {{8384727637859770112ull, 127580095374048864ull}}, {{4192363818929884928ull, 63790047687024432ull}}, {{2096181909464942336ull, 31895023843512216ull}}, {{1048090954732471040ull, 15947511921756108ull}}, {{5240454773662356224ull, 79737559608780540ull}}, {{2620227386831177984ull, 39868779804390270ull}}, {{1310113693415588864ull, 19934389902195135ull}}, {{6550568467077945344ull, 99671949510975675ull}}, {{12498656270393748480ull, 49835974755487837ull}}, {{15472700172051650048ull, 24917987377743918ull}}, {{3576524565420043776ull, 124589936888719594ull}}, {{1788262282710021888ull, 62294968444359797ull}}, {{10117503178209786624ull, 31147484222179898ull}}, {{5058751589104893184ull, 15573742111089949ull}}, {{6847013871814915328ull, 77868710555449746ull}}, {{3423506935907457536ull, 38934355277724873ull}}, {{10935125504808504576ull, 19467177638862436ull}}, {{17782139376623419904ull, 97335888194312182ull}}, {{8891069688311709952ull, 48667944097156091ull}}, {{13668906881010630656ull, 24333972048578045ull}}, {{13004302183924499200ull, 121669860242890228ull}}, {{6502151091962249472ull, 60834930121445114ull}}, {{3251075545981124608ull, 30417465060722557ull}}, {{10848909809845338112ull, 15208732530361278ull}}, {{17351060901807587840ull, 76043662651806392ull}}, {{8675530450903793920ull, 38021831325903196ull}}, {{4337765225451896832ull, 19010915662951598ull}}, {{3242082053549933056ull, 95054578314757991ull}}, {{10844413063629742336ull, 47527289157378995ull}}, {{14645578568669646848ull, 23763644578689497ull}}, {{17887660622219580160ull, 118818222893447488ull}}, {{8943830311109789952ull, 59409111446723744ull}}, {{4471915155554894848ull, 29704555723361872ull}}, {{2235957577777447424ull, 14852277861680936ull}}, {{11179787888887237632ull, 74261389308404680ull}}, {{5589893944443618816ull, 37130694654202340ull}}, {{2794946972221809408ull, 18565347327101170ull}}, {{13974734861109047040ull, 92826736635505850ull}}, {{6987367430554523392ull, 46413368317752925ull}}, {{12717055752132037376ull, 23206684158876462ull}}, {{8245046539531532800ull, 116033420794382313ull}}, {{13345895306620542208ull, 58016710397191156ull}}, {{6672947653310270976ull, 29008355198595578ull}}, {{3336473826655135488ull, 14504177599297789ull}}, {{16682369133275677696ull, 72520887996488945ull}}, {{17564556603492614656ull, 36260443998244472ull}}, {{8782278301746307328ull, 18130221999122236ull}}, {{7017903361312433408ull, 90651109995611182ull}}, {{3508951680656216576ull, 45325554997805591ull}}, {{10977847877182884096ull, 22662777498902795ull}}, {{17995751238495317760ull, 113313887494513977ull}}, {{18221247656102434560ull, 56656943747256988ull}}, {{9110623828051217152ull, 28328471873628494ull}}, {{8659630992836983552ull, 141642359368142472ull}}, {{4329815496418491648ull, 70821179684071236ull}}, {{2164907748209245696ull, 35410589842035618ull}}, {{1082453874104622848ull, 17705294921017809ull}}, {{5412269370523114752ull, 88526474605089045ull}}, {{11929506722116333056ull, 44263237302544522ull}}, {{5964753361058166528ull, 22131618651272261ull}}, {{11377022731581281280ull, 110658093256361306ull}}, {{5688511365790640640ull, 55329046628180653ull}}, {{12067627719750096128ull, 27664523314090326ull}}, {{4997906377621825792ull, 138322616570451633ull}}, {{11722325225665688576ull, 69161308285225816ull}}, {{5861162612832844288ull, 34580654142612908ull}}, {{2930581306416422144ull, 17290327071306454ull}}, {{14652906532082110720ull, 86451635356532270ull}}, {{7326453266041055232ull, 43225817678266135ull}}, {{12886598669875303424ull, 21612908839133067ull}}, {{9092761128247862784ull, 108064544195665338ull}}, {{4546380564123931392ull, 54032272097832669ull}}, {{11496562318916741376ull, 27016136048916334ull}}, {{2142579373455052544ull, 135080680244581673ull}}, {{10294661723582301952ull, 67540340122290836ull}}, {{5147330861791150848ull, 33770170061145418ull}}, {{2573665430895575296ull, 16885085030572709ull}}, {{12868327154477877504ull, 84425425152863545ull}}, {{15657535614093714432ull, 42212712576431772ull}}, {{7828767807046857216ull, 21106356288215886ull}}, {{2250350887815183360ull, 105531781441079432ull}}, {{1125175443907591680ull, 52765890720539716ull}}, {{562587721953795840ull, 26382945360269858ull}}, {{2812938609768979200ull, 131914726801349290ull}}, {{1406469304884489472ull, 65957363400674645ull}}, {{9926606689297020416ull, 32978681700337322ull}}, {{4963303344648510208ull, 16489340850168661ull}}, {{6369772649532999936ull, 82446704250843306ull}}, {{3184886324766499840ull, 41223352125421653ull}}, {{10815815199238025728ull, 20611676062710826ull}}, {{17185587848771025664ull, 103058380313554132ull}}, {{8592793924385512704ull, 51529190156777066ull}}, {{4296396962192756224ull, 25764595078388533ull}}, {{3035240737254230528ull, 128822975391942666ull}}, {{1517620368627115264ull, 64411487695971333ull}}, {{9982182221168333312ull, 32205743847985666ull}}, {{4991091110584166656ull, 16102871923992833ull}}, {{6508711479211281920ull, 80514359619964166ull}}, {{3254355739605640960ull, 40257179809982083ull}}, {{10850549906657596160ull, 20128589904991041ull}}, {{17359261385868878336ull, 100642949524955207ull}}, {{17903002729789214976ull, 50321474762477603ull}}, {{18174873401749383168ull, 25160737381238801ull}}, {{17087390713908709888ull, 125803686906194009ull}}, {{17767067393809130752ull, 62901843453097004ull}}, {{8883533696904565248ull, 31450921726548502ull}}, {{4441766848452282624ull, 15725460863274251ull}}, {{3762090168551861760ull, 78627304316371256ull}}, {{1881045084275930880ull, 39313652158185628ull}}, {{940522542137965312ull, 19656826079092814ull}}, {{4702612710689827328ull, 98284130395464070ull}}, {{2351306355344913664ull, 49142065197732035ull}}, {{10399025214527232512ull, 24571032598866017ull}}, {{15101637925217059840ull, 122855162994330087ull}}, {{16774190999463305728ull, 61427581497165043ull}}, {{17610467536586428672ull, 30713790748582521ull}}, {{18028605805147990016ull, 15356895374291260ull}}, {{16356052730901744384ull, 76784476871456304ull}}, {{8178026365450872064ull, 38392238435728152ull}}, {{4089013182725435904ull, 19196119217864076ull}}, {{1998321839917628672ull, 95980596089320381ull}}, {{10222532956813590016ull, 47990298044660190ull}}, {{5111266478406795008ull, 23995149022330095ull}}, {{7109588318324423936ull, 119975745111650476ull}}, {{3554794159162211840ull, 59987872555825238ull}}, {{1777397079581105920ull, 29993936277912619ull}}, {{10112070576645328640ull, 14996968138956309ull}}, {{13666864735807540736ull, 74984840694781547ull}}, {{16056804404758546176ull, 37492420347390773ull}}, {{17251774239234048768ull, 18746210173695386ull}}, {{12471894901332037888ull, 93731050868476934ull}}, {{6235947450666018816ull, 46865525434238467ull}}, {{12341345762187785216ull, 23432762717119233ull}}, {{6366496589810271744ull, 117163813585596168ull}}, {{3183248294905135872ull, 58581906792798084ull}}, {{1591624147452567808ull, 29290953396399042ull}}, {{795812073726283776ull, 14645476698199521ull}}, {{3979060368631419648ull, 73227383490997605ull}}, {{11212902221170485504ull, 36613691745498802ull}}, {{5606451110585242624ull, 18306845872749401ull}}, {{9585511479216662528ull, 91534229363747006ull}}, {{4792755739608331264ull, 45767114681873503ull}}, {{11619749906658941440ull, 22883557340936751ull}}, {{2758517312166052608ull, 114417786704683758ull}}, {{1379258656083026176ull, 57208893352341879ull}}, {{9913001364896288768ull, 28604446676170939ull}}, {{12671518677062341632ull, 143022233380854697ull}}, {{15559131375385946624ull, 71511116690427348ull}}, {{7779565687692973312ull, 35755558345213674ull}}, {{3889782843846486528ull, 17877779172606837ull}}, {{1002170145522881536ull, 89388895863034186ull}}, {{501085072761440768ull, 44694447931517093ull}}, {{9473914573235496192ull, 22347223965758546ull}}, {{10476084718758377728ull, 111736119828792732ull}}, {{5238042359379188736ull, 55868059914396366ull}}, {{2619021179689594368ull, 27934029957198183ull}}, {{13095105898447972352ull, 139670149785990915ull}}, {{15770924986078761984ull, 69835074892995457ull}}, {{17108834529894156800ull, 34917537446497728ull}}, {{8554417264947078400ull, 17458768723248864ull}}, {{5878598177316288768ull, 87293843616244322ull}}, {{2939299088658144256ull, 43646921808122161ull}}, {{10693021581183847936ull, 21823460904061080ull}}, {{16571619758500136704ull, 109117304520305402ull}}, {{8285809879250068224ull, 54558652260152701ull}}, {{13366276976479809792ull, 27279326130076350ull}}, {{11491152661270395136ull, 136396630650381753ull}}, {{14968948367489973248ull, 68198315325190876ull}}, {{7484474183744986624ull, 34099157662595438ull}}, {{3742237091872493312ull, 17049578831297719ull}}, {{264441385652914944ull, 85247894156488596ull}}, {{132220692826457344ull, 42623947078244298ull}}, {{66110346413228544ull, 21311973539122149ull}}, {{330551732066143744ull, 106559867695610745ull}}, {{9388647902887847680ull, 53279933847805372ull}}, {{4694323951443923712ull, 26639966923902686ull}}, {{5024875683510067712ull, 133199834619513431ull}}, {{11735809878609809664ull, 66599917309756715ull}}, {{15091276976159680512ull, 33299958654878357ull}}, {{16769010524934616064ull, 16649979327439178ull}}, {{10058076329834874112ull, 83249896637195894ull}}, {{5029038164917436928ull, 41624948318597947ull}}, {{11737891119313494272ull, 20812474159298973ull}}, {{3349223375438816768ull, 104062370796494868ull}}, {{1674611687719408384ull, 52031185398247434ull}}, {{837305843859704064ull, 26015592699123717ull}}, {{4186529219298521088ull, 130077963495618585ull}}, {{11316636646504036352ull, 65038981747809292ull}}, {{5658318323252018176ull, 32519490873904646ull}}, {{2829159161626009088ull, 16259745436952323ull}}, {{14145795808130045440ull, 81298727184761615ull}}, {{16296269940919798528ull, 40649363592380807ull}}, {{17371507007314674944ull, 20324681796190403ull}}, {{13070558741735168768ull, 101623408980952019ull}}, {{15758651407722360064ull, 50811704490476009ull}}, {{17102697740715955712ull, 25405852245238004ull}}, {{11726512408741573120ull, 127029261226190024ull}}, {{5863256204370786560ull, 63514630613095012ull}}, {{2931628102185393152ull, 31757315306547506ull}}, {{1465814051092696576ull, 15878657653273753ull}}, {{7329070255463483136ull, 79393288266368765ull}}, {{12887907164586517248ull, 39696644133184382ull}}, {{6443953582293258496ull, 19848322066592191ull}}, {{13773023837756741888ull, 99241610332960956ull}}, {{6886511918878370816ull, 49620805166480478ull}}, {{3443255959439185408ull, 24810402583240239ull}}, {{17216279797195927552ull, 124052012916201195ull}}, {{17831511935452739584ull, 62026006458100597ull}}, {{18139128004581145600ull, 31013003229050298ull}}, {{9069564002290572800ull, 15506501614525149ull}}, {{8454331864033760768ull, 77532508072625747ull}}, {{13450537968871656192ull, 38766254036312873ull}}, {{15948641021290603776ull, 19383127018156436ull}}, {{5956228811614812928ull, 96915635090782184ull}}, {{2978114405807406336ull, 48457817545391092ull}}, {{1489057202903703040ull, 24228908772695546ull}}, {{7445286014518516224ull, 121144543863477730ull}}, {{3722643007259258112ull, 60572271931738865ull}}, {{11084693540484404736ull, 30286135965869432ull}}, {{5542346770242202368ull, 15143067982934716ull}}, {{9264989777501460480ull, 75715339914673581ull}}, {{13855866925605506048ull, 37857669957336790ull}}, {{6927933462802753024ull, 18928834978668395ull}}, {{16192923240304213504ull, 94644174893341976ull}}, {{8096461620152106752ull, 47322087446670988ull}}, {{4048230810076053248ull, 23661043723335494ull}}, {{1794409976670715392ull, 118305218616677471ull}}, {{10120577025190133504ull, 59152609308338735ull}}, {{14283660549449842432ull, 29576304654169367ull}}, {{16365202311579696896ull, 14788152327084683ull}}, {{8039035263060278784ull, 73940761635423419ull}}, {{13242889668384915200ull, 36970380817711709ull}}, {{15844816871047233280ull, 18485190408855854ull}}, {{5437108060397960704ull, 92425952044279274ull}}, {{2718554030198980352ull, 46212976022139637ull}}, {{10582649051954265856ull, 23106488011069818ull}}, {{16019757112352226816ull, 115532440055349092ull}}, {{8009878556176113408ull, 57766220027674546ull}}, {{4004939278088056576ull, 28883110013837273ull}}, {{11225841675898803968ull, 14441555006918636ull}}, {{788976158365366016ull, 72207775034593183ull}}, {{9617860116037458688ull, 36103887517296591ull}}, {{14032302094873505024ull, 18051943758648295ull}}, {{14821278253238871040ull, 90259718793241478ull}}, {{7410639126619435520ull, 45129859396620739ull}}, {{12928691600164493568ull, 22564929698310369ull}}, {{9303225779693812992ull, 112824648491551848ull}}, {{4651612889846906368ull, 56412324245775924ull}}, {{2325806444923453184ull, 28206162122887962ull}}, {{11629032224617266432ull, 141030810614439810ull}}, {{5814516112308633088ull, 70515405307219905ull}}, {{12130630093009092352ull, 35257702653609952ull}}, {{6065315046504546048ull, 17628851326804976ull}}, {{11879831158813179392ull, 88144256634024881ull}}, {{15163287616261365504ull, 44072128317012440ull}}, {{7581643808130682624ull, 22036064158506220ull}}, {{1014730893234310656ull, 110180320792531102ull}}, {{507365446617155328ull, 55090160396265551ull}}, {{9477054760163353344ull, 27545080198132775ull}}, {{10491785653397664000ull, 137725400990663877ull}}, {{14469264863553607680ull, 68862700495331938ull}}, {{7234632431776803840ull, 34431350247665969ull}}, {{12840688252743177728ull, 17215675123832984ull}}, {{8863209042587233792ull, 86078375619164923ull}}, {{13654976558148392704ull, 43039187809582461ull}}, {{16050860315928972032ull, 21519593904791230ull}}, {{6467325284806654464ull, 107597969523956154ull}}, {{3233662642403327232ull, 53798984761978077ull}}, {{10840203358056439296ull, 26899492380989038ull}}, {{17307528642863094016ull, 134497461904945192ull}}, {{8653764321431546880ull, 67248730952472596ull}}, {{4326882160715773440ull, 33624365476236298ull}}, {{2163441080357886720ull, 16812182738118149ull}}, {{10817205401789433600ull, 84060913690590745ull}}, {{14631974737749492480ull, 42030456845295372ull}}, {{7315987368874746112ull, 21015228422647686ull}}, {{18133192770664179968ull, 105076142113238431ull}}, {{18289968422186865664ull, 52538071056619215ull}}, {{18368356247948208640ull, 26269035528309607ull}}, {{18054804944902837248ull, 131345177641548039ull}}, {{18250774509306194432ull, 65672588820774019ull}}, {{18348759291507873024ull, 32836294410387009ull}}, {{18397751682608712192ull, 16418147205193504ull}}, {{18201782118205355008ull, 82090736025967524ull}}, {{9100891059102677504ull, 41045368012983762ull}}, {{4550445529551338752ull, 20522684006491881ull}}, {{4305483574047142144ull, 102613420032459406ull}}, {{2152741787023570944ull, 51306710016229703ull}}, {{10299742930366561280ull, 25653355008114851ull}}, {{14605226504413703680ull, 128266775040574257ull}}, {{16525985289061627648ull, 64133387520287128ull}}, {{8262992644530813696ull, 32066693760143564ull}}, {{4131496322265406720ull, 16033346880071782ull}}, {{2210737537617482752ull, 80166734400358911ull}}, {{10328740805663517184ull, 40083367200179455ull}}, {{14387742439686534400ull, 20041683600089727ull}}, {{16598479977304017408ull, 100208418000448638ull}}, {{8299239988652008704ull, 50104209000224319ull}}, {{13372992031180780032ull, 25052104500112159ull}}, {{11524727934775245824ull, 125260522500560798ull}}, {{5762363967387622912ull, 62630261250280399ull}}, {{12104554020548587264ull, 31315130625140199ull}}, {{15275649047129069312ull, 15657565312570099ull}}, {{2591268940807140608ull, 78287826562850499ull}}, {{10519006507258345984ull, 39143913281425249ull}}, {{14482875290483948800ull, 19571956640712624ull}}, {{17074144231291089664ull, 97859783203563123ull}}, {{17760444152500320512ull, 48929891601781561ull}}, {{18103594113104935936ull, 24464945800890780ull}}, {{16730994270686474240ull, 122324729004453904ull}}, {{8365497135343237120ull, 61162364502226952ull}}, {{4182748567671618560ull, 30581182251113476ull}}, {{2091374283835809280ull, 15290591125556738ull}}, {{10456871419179046400ull, 76452955627783690ull}}, {{5228435709589523200ull, 38226477813891845ull}}, {{11837589891649537280ull, 19113238906945922ull}}, {{3847717237119032064ull, 95566194534729613ull}}, {{11147230655414291712ull, 47783097267364806ull}}, {{5573615327707145728ull, 23891548633682403ull}}, {{9421332564826178048ull, 119457743168412016ull}}, {{4710666282413089024ull, 59728871584206008ull}}, {{2355333141206544384ull, 29864435792103004ull}}, {{1177666570603272192ull, 14932217896051502ull}}, {{5888332853016361216ull, 74661089480257510ull}}, {{2944166426508180480ull, 37330544740128755ull}}, {{10695455250108866048ull, 18665272370064377ull}}, {{16583788103125227520ull, 93326361850321887ull}}, {{17515266088417389568ull, 46663180925160943ull}}, {{17981005081063470592ull, 23331590462580471ull}}, {{16118049110479146496ull, 116657952312902359ull}}, {{17282396592094349056ull, 58328976156451179ull}}, {{17864570332901950208ull, 29164488078225589ull}}, {{18155657203305750784ull, 14582244039112794ull}}, {{16991309721690548224ull, 72911220195563974ull}}, {{8495654860845274112ull, 36455610097781987ull}}, {{13471199467277412864ull, 18227805048890993ull}}, {{12015765115258409472ull, 91139025244454968ull}}, {{6007882557629204736ull, 45569512622227484ull}}, {{3003941278814602240ull, 22784756311113742ull}}, {{15019706394073011968ull, 113923781555568710ull}}, {{7509853197036505856ull, 56961890777784355ull}}, {{12978298635373028608ull, 28480945388892177ull}}, {{9551260955736489216ull, 142404726944460888ull}}, {{4775630477868244480ull, 71202363472230444ull}}, {{2387815238934122240ull, 35601181736115222ull}}, {{1193907619467060992ull, 17800590868057611ull}}, {{5969538097335305728ull, 89002954340288055ull}}, {{12208141085522428672ull, 44501477170144027ull}}, {{15327442579615990016ull, 22250738585072013ull}}, {{2850236603241744384ull, 111253692925360069ull}}, {{10648490338475648000ull, 55626846462680034ull}}, {{5324245169237824000ull, 27813423231340017ull}}, {{8174481772479568384ull, 139067116156700086ull}}, {{4087240886239784192ull, 69533558078350043ull}}, {{11266992479974667776ull, 34766779039175021ull}}, {{14856868276842109696ull, 17383389519587510ull}}, {{497365089372342272ull, 86916947597937554ull}}, {{248682544686171136ull, 43458473798968777ull}}, {{9347713309197861376ull, 21729236899484388ull}}, {{9845078398570203648ull, 108646184497421942ull}}, {{4922539199285101824ull, 54323092248710971ull}}, {{11684641636497326592ull, 27161546124355485ull}}, {{3082975961357978880ull, 135807730621777428ull}}, {{1541487980678989312ull, 67903865310888714ull}}, {{770743990339494656ull, 33951932655444357ull}}, {{9608744032024523008ull, 16975966327722178ull}}, {{11150232012703512576ull, 84879831638610892ull}}, {{5575116006351756288ull, 42439915819305446ull}}, {{2787558003175878144ull, 21219957909652723ull}}, {{13937790015879390720ull, 106099789548263615ull}}, {{16192267044794471168ull, 53049894774131807ull}}, {{17319505559252011264ull, 26524947387065903ull}}, {{12810551501421850368ull, 132624736935329519ull}}, {{15628647787565700864ull, 66312368467664759ull}}, {{17037695930637626112ull, 33156184233832379ull}}, {{17742220002173588736ull, 16578092116916189ull}}, {{14924123716029738240ull, 82890460584580949ull}}, {{16685433894869644800ull, 41445230292290474ull}}, {{8342716947434822400ull, 20722615146145237ull}}, {{4820096589755009280ull, 103613075730726187ull}}, {{11633420331732280320ull, 51806537865363093ull}}, {{15040082202720915968ull, 25903268932681546ull}}, {{1413434718766373632ull, 129516344663407734ull}}, {{706717359383186688ull, 64758172331703867ull}}, {{9576730716546369024ull, 32379086165851933ull}}, {{14011737395127960320ull, 16189543082925966ull}}, {{14718454754511147264ull, 80947715414629833ull}}, {{16582599414110349312ull, 40473857707314916ull}}, {{8291299707055174656ull, 20236928853657458ull}}, {{4563010387856770304ull, 101184644268287292ull}}, {{2281505193928385024ull, 50592322134143646ull}}, {{1140752596964192512ull, 25296161067071823ull}}, {{5703762984820963072ull, 126480805335359115ull}}, {{12075253529265257216ull, 63240402667679557ull}}, {{15260998801487404288ull, 31620201333839778ull}}, {{7630499400743702016ull, 15810100666919889ull}}, {{1259008856299407872ull, 79050503334599447ull}}, {{9852876465004479744ull, 39525251667299723ull}}, {{14149810269357015552ull, 19762625833649861ull}}, {{15408819125656423680ull, 98813129168249308ull}}, {{7704409562828211712ull, 49406564584124654ull}}, {{3852204781414105856ull, 24703282292062327ull}}, {{814279833360977920ull, 123516411460311636ull}}, {{407139916680488960ull, 61758205730155818ull}}, {{203569958340244480ull, 30879102865077909ull}}, {{9325157016024898048ull, 15439551432538954ull}}, {{9732296932705387008ull, 77197757162694772ull}}, {{4866148466352693504ull, 38598878581347386ull}}, {{2433074233176346624ull, 19299439290673693ull}}, {{12165371165881733632ull, 96497196453368465ull}}, {{15306057619795642624ull, 48248598226684232ull}}, {{7653028809897821184ull, 24124299113342116ull}}, {{1371655902070003456ull, 120621495566710582ull}}, {{685827951035001600ull, 60310747783355291ull}}, {{9566286012372276480ull, 30155373891677645ull}}, {{14006515043040913920ull, 15077686945838822ull}}, {{14692342994075915776ull, 75388434729194113ull}}, {{16569543533892733696ull, 37694217364597056ull}}, {{8284771766946366720ull, 18847108682298528ull}}, {{4530370687312731136ull, 94235543411492642ull}}, {{2265185343656365568ull, 47117771705746321ull}}, {{10355964708682958592ull, 23558885852873160ull}}, {{14886335395995689728ull, 117794429264365802ull}}, {{7443167697997844736ull, 58897214632182901ull}}, {{12944955885853698048ull, 29448607316091450ull}}, {{6472477942926849024ull, 14724303658045725ull}}, {{13915645640924694016ull, 73621518290228626ull}}, {{6957822820462347008ull, 36810759145114313ull}}, {{12702283447085949184ull, 18405379572557156ull}}, {{8171185014301091584ull, 92026897862785783ull}}, {{13308964544005321472ull, 46013448931392891ull}}, {{15877854308857436416ull, 23006724465696445ull}}, {{5602295249448976640ull, 115033622328482229ull}}, {{12024519661579264000ull, 57516811164241114ull}}, {{6012259830789632000ull, 28758405582120557ull}}, {{11614555080238608640ull, 143792027910602786ull}}, {{5807277540119304192ull, 71896013955301393ull}}, {{12127010806914427904ull, 35948006977650696ull}}, {{6063505403457213952ull, 17974003488825348ull}}, {{11870782943576518400ull, 89870017444126741ull}}, {{15158763508643034880ull, 44935008722063370ull}}, {{7579381754321517312ull, 22467504361031685ull}}, {{1003420624188484096ull, 112337521805158427ull}}, {{9725082348949017856ull, 56168760902579213ull}}, {{14085913211329284608ull, 28084380451289606ull}}, {{15089333835517768960ull, 140421902256448033ull}}, {{16768038954613660160ull, 70210951128224016ull}}, {{8384019477306830080ull, 35105475564112008ull}}, {{4192009738653414912ull, 17552737782056004ull}}, {{2513304619557523712ull, 87763688910280021ull}}, {{10480024346633537536ull, 43881844455140010ull}}, {{5240012173316768768ull, 21940922227570005ull}}, {{7753316792874292480ull, 109704611137850026ull}}, {{3876658396437146112ull, 54852305568925013ull}}, {{11161701235073348864ull, 27426152784462506ull}}, {{468273954238089984ull, 137130763922312533ull}}, {{9457509013973820672ull, 68565381961156266ull}}, {{4728754506986910208ull, 34282690980578133ull}}, {{11587749290348230912ull, 17141345490289066ull}}, {{2598514230612500224ull, 85706727451445333ull}}, {{10522629152161025792ull, 42853363725722666ull}}, {{5261314576080512768ull, 21426681862861333ull}}, {{7859828806693012992ull, 107133409314306666ull}}, {{3929914403346506496ull, 53566704657153333ull}}, {{11188329238528028928ull, 26783352328576666ull}}, {{601413971511490560ull, 133916761642883333ull}}, {{9524079022610521088ull, 66958380821441666ull}}, {{4762039511305260544ull, 33479190410720833ull}}, {{11604391792507406080ull, 16739595205360416ull}}, {{2681726741408375552ull, 83697976026802083ull}}, {{10564235407558963456ull, 41848988013401041ull}}, {{14505489740634257408ull, 20924494006700520ull}}, {{17187216482042633216ull, 104622470033502603ull}}, {{17816980277876092416ull, 52311235016751301ull}}, {{18131862175792822016ull, 26155617508375650ull}}, {{16872334584125903616ull, 130778087541878254ull}}, {{8436167292062951680ull, 65389043770939127ull}}, {{13441455682886251520ull, 32694521885469563ull}}, {{15944099878297901568ull, 16347260942734781ull}}, {{5933523096651301888ull, 81736304713673909ull}}, {{12190133585180426752ull, 40868152356836954ull}}, {{6095066792590213376ull, 20434076178418477ull}}, {{12028589889241515264ull, 102170380892092386ull}}, {{6014294944620757504ull, 51085190446046193ull}}, {{12230519509165154560ull, 25542595223023096ull}}, {{5812365324697118208ull, 127712976115115483ull}}, {{12129554699203334912ull, 63856488057557741ull}}, {{15288149386456443136ull, 31928244028778870ull}}, {{7644074693228221440ull, 15964122014389435ull}}, {{1326885318722004736ull, 79820610071947177ull}}, {{9886814696215778048ull, 39910305035973588ull}}, {{4943407348107888896ull, 19955152517986794ull}}, {{6270292666829893888ull, 99775762589933971ull}}, {{12358518370269722624ull, 49887881294966985ull}}, {{15402631221989637120ull, 24943940647483492ull}}, {{3226179815109979648ull, 124719703237417464ull}}, {{1613089907554989824ull, 62359851618708732ull}}, {{806544953777494784ull, 31179925809354366ull}}, {{403272476888747264ull, 15589962904677183ull}}, {{2016362384443737344ull, 77949814523385915ull}}, {{10231553229076644352ull, 38974907261692957ull}}, {{14339148651393097984ull, 19487453630846478ull}}, {{16355511035836835328ull, 97437268154232393ull}}, {{17401127554773193472ull, 48718634077116196ull}}, {{8700563777386596608ull, 24359317038558098ull}}, {{6609330739513880320ull, 121796585192790492ull}}, {{3304665369756940032ull, 60898292596395246ull}}, {{1652332684878469888ull, 30449146298197623ull}}, {{10049538379294010624ull, 15224573149098811ull}}, {{13354203749050950912ull, 76122865745494057ull}}, {{15900473911380251136ull, 38061432872747028ull}}, {{7950236955690125568ull, 19030716436373514ull}}, {{2857696631031525120ull, 95153582181867572ull}}, {{1428848315515762432ull, 47576791090933786ull}}, {{714424157757881088ull, 23788395545466893ull}}, {{3572120788789406464ull, 118941977727334465ull}}, {{11009432431249478912ull, 59470988863667232ull}}, {{5504716215624739328ull, 29735494431833616ull}}, {{2752358107812369664ull, 14867747215916808ull}}, {{13761790539061848832ull, 74338736079584040ull}}, {{6880895269530924288ull, 37169368039792020ull}}, {{3440447634765462016ull, 18584684019896010ull}}, {{17202238173827310848ull, 92923420099480050ull}}, {{8601119086913655296ull, 46461710049740025ull}}, {{13523931580311603456ull, 23230855024870012ull}}, {{12279425680429362944ull, 116154275124350063ull}}, {{15363084877069457152ull, 58077137562175031ull}}, {{16904914475389504256ull, 29038568781087515ull}}, {{17675829274549527808ull, 14519284390543757ull}}, {{14592170077909433600ull, 72596421952718789ull}}, {{16519457075809492480ull, 36298210976359394ull}}, {{8259728537904746240ull, 18149105488179697ull}}, {{4405154542104628224ull, 90745527440898487ull}}, {{11425949307907089920ull, 45372763720449243ull}}, {{14936346690808320768ull, 22686381860224621ull}}, {{894757159203397632ull, 113431909301123109ull}}, {{9670750616456474624ull, 56715954650561554ull}}, {{4835375308228237312ull, 28357977325280777ull}}, {{5730132467431634944ull, 141789886626403886ull}}, {{2865066233715817472ull, 70894943313201943ull}}, {{10655905153712684544ull, 35447471656600971ull}}, {{14551324613711118080ull, 17723735828300485ull}}, {{17416390847426935552ull, 88618679141502428ull}}, {{8708195423713467648ull, 44309339570751214ull}}, {{4354097711856733696ull, 22154669785375607ull}}, {{3323744485574117632ull, 110773348926878036ull}}, {{1661872242787058688ull, 55386674463439018ull}}, {{830936121393529344ull, 27693337231719509ull}}, {{4154680606967647232ull, 138466686158597545ull}}, {{11300712340338599424ull, 69233343079298772ull}} }; static const int bid_exponents_bid64[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 39, 39, 39, 40, 40, 40, 40, 41, 41, 41, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 54, 54, 54, 55, 55, 55, 55, 56, 56, 56, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 64, 64, 64, 65, 65, 65, 65, 66, 66, 66, 67, 67, 67, 68, 68, 68, 68, 69, 69, 69, 70, 70, 70, 71, 71, 71, 71, 72, 72, 72, 73, 73, 73, 74, 74, 74, 74, 75, 75, 75, 76, 76, 76, 77, 77, 77, 77, 78, 78, 78, 79, 79, 79, 80, 80, 80, 80, 81, 81, 81, 82, 82, 82, 83, 83, 83, 83, 84, 84, 84, 85, 85, 85, 86, 86, 86, 86, 87, 87, 87, 88, 88, 88, 89, 89, 89, 90, 90, 90, 90, 91, 91, 91, 92, 92, 92, 93, 93, 93, 93, 94, 94, 94, 95, 95, 95, 96, 96, 96, 96, 97, 97, 97, 98, 98, 98, 99, 99, 99, 99, 100, 100, 100, 101, 101, 101, 102, 102, 102, 102, 103, 103, 103, 104, 104, 104, 105, 105, 105, 105, 106, 106, 106, 107, 107, 107, 108, 108, 108, 108, 109, 109, 109, 110, 110, 110, 111, 111, 111, 111, 112, 112, 112, 113, 113, 113, 114, 114, 114, 114, 115, 115, 115, 116, 116, 116, 117, 117, 117, 117, 118, 118, 118, 119, 119, 119, 120, 120, 120, 121, 121, 121, 121, 122, 122, 122, 123, 123, 123, 124, 124, 124, 124, 125, 125, 125, 126, 126, 126, 127, 127, 127, 127, 128, 128, 128, 129, 129, 129, 130, 130, 130, 130, 131, 131, 131, 132, 132, 132, 133, 133, 133, 133, 134, 134, 134, 135, 135, 135, 136, 136, 136, 136, 137, 137, 137, 138, 138, 138, 139, 139, 139, 139, 140, 140, 140, 141, 141, 141, 142, 142, 142, 142, 143, 143, 143, 144, 144, 144, 145, 145, 145, 145, 146, 146, 146, 147, 147, 147, 148, 148, 148, 149, 149, 149, 149, 150, 150, 150, 151, 151, 151, 152, 152, 152, 152, 153, 153, 153, 154, 154, 154, 155, 155, 155, 155, 156, 156, 156, 157, 157, 157, 158, 158, 158, 158, 159, 159, 159, 160, 160, 160, 161, 161, 161, 161, 162, 162, 162, 163, 163, 163, 164, 164, 164, 164, 165, 165, 165, 166, 166, 166, 167, 167, 167, 167, 168, 168, 168, 169, 169, 169, 170, 170, 170, 170, 171, 171, 171, 172, 172, 172, 173, 173, 173, 173, 174, 174, 174, 175, 175, 175, 176, 176, 176, 176, 177, 177, 177, 178, 178, 178, 179, 179, 179, 180, 180, 180, 180, 181, 181, 181, 182, 182, 182, 183, 183, 183, 183, 184, 184, 184, 185, 185, 185, 186, 186, 186, 186, 187, 187, 187, 188, 188, 188, 189, 189, 189, 189, 190, 190, 190, 191, 191, 191, 192, 192, 192, 192, 193, 193, 193, 194, 194, 194, 195, 195, 195, 195, 196, 196, 196, 197, 197, 197, 198, 198, 198, 198, 199, 199, 199, 200, 200, 200, 201, 201, 201, 201, 202, 202, 202, 203, 203, 203, 204, 204, 204, 204, 205, 205, 205, 206, 206, 206, 207, 207, 207, 208, 208, 208, 208, 209, 209, 209, 210, 210, 210, 211, 211, 211, 211, 212, 212, 212, 213, 213, 213, 214, 214, 214, 214, 215, 215, 215, 216, 216, 216, 217, 217, 217, 217, 218, 218, 218, 219, 219, 219, 220, 220, 220, 220, 221, 221, 221, 222, 222, 222, 223, 223, 223, 223, 224, 224, 224, 225, 225, 225, 226, 226, 226, 226, 227, 227, 227, 228, 228, 228, 229, 229, 229, 229, 230, 230, 230, 231, 231, 231, 232, 232, 232, 232, 233, 233, 233, 234, 234, 234, 235, 235, 235, 236, 236, 236, 236, 237, 237, 237, 238, 238, 238, 239, 239, 239, 239, 240, 240, 240, 241, 241, 241, 242, 242, 242, 242, 243, 243, 243, 244, 244, 244, 245, 245, 245, 245, 246, 246, 246, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 250, 250, 250, 251, 251, 251, 251, 252, 252, 252, 253, 253, 253, 254, 254, 254, 254, 255, 255, 255, 256, 256, 256, 257, 257, 257, 257, 258, 258, 258, 259, 259, 259, 260, 260, 260, 260, 261, 261, 261, 262, 262, 262, 263, 263, 263, 263, 264, 264, 264, 265, 265, 265, 266, 266, 266, 267, 267, 267, 267, 268, 268, 268, 269, 269, 269, 270, 270, 270, 270, 271, 271, 271, 272, 272, 272, 273, 273, 273, 273, 274, 274, 274, 275, 275, 275, 276, 276, 276, 276, 277, 277, 277, 278, 278, 278, 279, 279, 279, 279, 280, 280, 280, 281, 281, 281, 282, 282, 282, 282, 283, 283, 283, 284, 284, 284, 285, 285, 285, 285, 286, 286, 286, 287, 287, 287, 288, 288, 288, 288, 289, 289, 289, 290, 290, 290, 291, 291, 291, 291, 292, 292, 292, 293, 293, 293, 294, 294, 294, 295, 295, 295, 295, 296, 296, 296, 297, 297, 297, 298, 298, 298, 298, 299, 299, 299, 300, 300, 300, 301, 301, 301, 301, 302, 302, 302, 303, 303, 303, 304, 304, 304, 304, 305, 305, 305, 306, 306, 306, 307, 307, 307, 307, 308, 308, 308, 309, 309, 309, 310, 310, 310, 310, 311, 311, 311, 312, 312, 312, 313, 313, 313, 313, 314, 314, 314, 315, 315, 315, 316, 316, 316, 316, 317, 317, 317, 318, 318, 318, 319, 319, 319, 319, 320, 320, 320, 321, 321, 321, 322, 322, 322, 322, 323, 323, 323, 324, 324, 324, 325, 325, 325, 326, 326, 326, 326, 327, 327, 327, 328, 328, 328, 329, 329, 329, 329, 330, 330, 330, 331, 331, 331, 332, 332, 332, 332, 333, 333, 333, 334, 334, 334, 335, 335, 335, 335, 336, 336, 336, 337, 337, 337, 338, 338, 338, 338, 339, 339, 339, 340, 340, 340, 341, 341, 341, 341, 342, 342, 342, 343, 343, 343, 344, 344, 344, 344, 345, 345, 345, 346, 346, 346, 347, 347, 347, 347, 348, 348, 348, 349, 349, 349, 350, 350, 350, 350, 351, 351, 351, 352, 352, 352, 353, 353, 353, 354, 354, 354, 354, 355, 355, 355, 356, 356, 356, 357, 357, 357, 357, 358, 358, 358, 359, 359, 359, 360, 360, 360, 360, 361, 361, 361, 362, 362, 362, 363, 363, 363, 363, 364, 364, 364, 365, 365, 365, 366, 366, 366, 366, 367, 367, 367, 368, 368, 368, 369, 369, 369, 369, 370, 370, 370, 371, 371, 371, 372, 372, 372, 372, 373, 373, 373, 374, 374, 374, 375, 375, 375, 375, 376, 376, 376, 377, 377, 377, 378, 378, 378, 378, 379, 379, 379, 380, 380, 380, 381, 381, 381, 381, 382, 382, 382, 383, 383, 383, 384, 384, 384, 385, 385, 385, 385, 386, 386, 386, 387, 387, 387, 388, 388, 388, 388, 389, 389, 389, 390, 390, 390, 391, 391, 391, 391, 392, 392, 392, 393, 393, 393, 394, 394, 394, 394, 395, 395, 395, 396, 396, 396, 397, 397, 397, 397, 398, 398, 398, 399, 399, 399, 400, 400, 400, 400, 401, 401, 401, 402, 402, 402, 403, 403, 403, 403, 404, 404, 404, 405, 405, 405, 406, 406, 406, 406, 407, 407, 407, 408, 408, 408, 409, 409, 409, 409, 410, 410, 410, 411, 411, 411, 412, 412, 412, 413, 413, 413, 413, 414, 414, 414, 415, 415, 415, 416, 416, 416, 416, 417, 417, 417, 418, 418, 418, 419, 419, 419, 419, 420, 420, 420, 421, 421, 421, 422, 422, 422, 422, 423, 423, 423, 424, 424, 424, 425, 425, 425, 425, 426, 426, 426, 427, 427, 427, 428, 428, 428, 428, 429, 429, 429, 430, 430, 430, 431, 431, 431, 431, 432, 432, 432, 433, 433, 433, 434, 434, 434, 434, 435, 435, 435, 436, 436, 436, 437, 437, 437, 437, 438, 438, 438, 439, 439, 439, 440, 440, 440, 441, 441, 441, 441, 442, 442, 442, 443, 443, 443, 444, 444, 444, 444, 445, 445, 445, 446, 446, 446, 447, 447, 447, 447, 448, 448, 448, 449, 449, 449, 450, 450, 450, 450, 451, 451, 451, 452, 452, 452, 453, 453, 453, 453, 454, 454, 454, 455, 455, 455, 456, 456, 456, 456, 457, 457, 457, 458, 458, 458, 459, 459, 459, 459, 460, 460, 460, 461, 461, 461, 462, 462, 462, 462, 463, 463, 463, 464, 464, 464, 465, 465, 465, 465, 466, 466, 466, 467, 467, 467, 468, 468, 468, 468, 469, 469, 469, 470, 470, 470, 471, 471, 471, 472, 472, 472, 472, 473, 473, 473, 474, 474, 474, 475, 475, 475, 475, 476, 476, 476, 477, 477, 477, 478, 478, 478, 478, 479, 479, 479, 480, 480, 480, 481, 481, 481, 481, 482, 482, 482, 483, 483, 483, 484, 484, 484, 484, 485, 485, 485, 486, 486, 486, 487, 487, 487, 487, 488, 488, 488, 489, 489, 489, 490, 490, 490, 490, 491, 491, 491, 492, 492, 492, 493, 493, 493, 493, 494, 494, 494, 495, 495, 495, 496, 496, 496, 496, 497, 497, 497, 498, 498, 498, 499, 499, 499, 500, 500, 500, 500, 501, 501, 501, 502, 502, 502, 503, 503, 503, 503, 504, 504, 504, 505, 505, 505, 506, 506, 506, 506, 507, 507, 507, 508, 508, 508, 509, 509, 509, 509, 510, 510, 510, 511, 511, 511, 512, 512, 512, 512, 513, 513, 513, 514, 514, 514, 515, 515, 515, 515, 516, 516, 516, 517, 517, 517, 518, 518, 518, 518, 519, 519, 519, 520, 520, 520, 521, 521, 521, 521, 522, 522, 522, 523, 523, 523, 524, 524, 524, 524, 525, 525, 525, 526, 526, 526, 527, 527, 527, 527, 528, 528, 528, 529, 529, 529, 530, 530, 530, 531, 531, 531, 531, 532, 532, 532, 533, 533, 533, 534, 534, 534, 534, 535, 535, 535, 536, 536, 536, 537, 537, 537, 537, 538, 538, 538, 539, 539, 539, 540, 540, 540, 540, 541, 541, 541, 542, 542, 542, 543, 543, 543, 543, 544, 544, 544, 545, 545, 545, 546, 546, 546, 546, 547, 547, 547, 548, 548, 548, 549, 549, 549, 549, 550, 550, 550, 551, 551, 551, 552, 552, 552, 552, 553, 553, 553, 554, 554, 554, 555, 555, 555, 555, 556, 556, 556, 557, 557, 557, 558, 558, 558, 559, 559, 559, 559, 560, 560, 560, 561, 561, 561, 562, 562, 562, 562, 563, 563, 563, 564, 564, 564, 565, 565, 565, 565, 566, 566, 566, 567, 567, 567, 568, 568, 568, 568, 569, 569, 569, 570, 570, 570, 571, 571, 571, 571, 572, 572, 572, 573, 573, 573, 574, 574, 574, 574, 575, 575, 575, 576, 576, 576, 577, 577, 577, 577, 578, 578, 578, 579, 579, 579, 580, 580, 580, 580, 581, 581, 581, 582, 582, 582, 583, 583, 583, 583, 584, 584, 584, 585, 585, 585, 586, 586, 586, 587, 587, 587, 587, 588, 588, 588, 589, 589, 589, 590, 590, 590, 590, 591, 591, 591, 592, 592, 592, 593, 593, 593, 593, 594, 594, 594, 595, 595, 595, 596, 596, 596, 596, 597, 597, 597, 598, 598, 598, 599, 599, 599, 599, 600, 600, 600, 601, 601, 601, 602, 602, 602, 602, 603, 603, 603, 604, 604, 604, 605, 605, 605, 605, 606, 606, 606, 607, 607, 607, 608, 608, 608, 608, 609, 609, 609, 610, 610, 610, 611, 611, 611, 611, 612, 612, 612, 613, 613, 613, 614, 614, 614, 614, 615, 615, 615, 616, 616, 616, 617, 617, 617, 618, 618, 618, 618, 619, 619, 619, 620, 620, 620, 621, 621, 621, 621, 622, 622, 622, 623, 623, 623, 624, 624, 624, 624, 625, 625, 625, 626, 626, 626, 627, 627, 627, 627, 628, 628, 628, 629, 629, 629, 630, 630, 630, 630, 631, 631, 631, 632, 632, 632, 633, 633, 633, 633, 634, 634, 634, 635, 635, 635, 636, 636, 636, 636, 637, 637, 637, 638, 638, 638, 639, 639, 639, 639, 640, 640, 640, 641, 641, 641, 642, 642, 642, 642, 643, 643, 643, 644, 644, 644, 645, 645, 645, 646, 646, 646, 646, 647, 647, 647, 648, 648, 648, 649, 649, 649, 649, 650, 650, 650, 651, 651, 651, 652, 652, 652, 652, 653, 653, 653, 654, 654, 654, 655, 655, 655, 655, 656, 656, 656, 657, 657, 657, 658, 658, 658, 658, 659, 659, 659, 660, 660, 660, 661, 661, 661, 661, 662, 662, 662, 663, 663, 663, 664, 664, 664, 664, 665, 665, 665, 666, 666, 666, 667, 667, 667, 667, 668, 668, 668, 669, 669, 669, 670, 670, 670, 670, 671, 671, 671, 672, 672, 672, 673, 673, 673, 673, 674, 674, 674, 675, 675, 675, 676, 676, 676, 677, 677, 677, 677, 678, 678, 678, 679, 679, 679, 680, 680, 680, 680, 681, 681, 681, 682, 682, 682, 683, 683, 683, 683, 684, 684, 684, 685, 685, 685, 686, 686, 686, 686, 687, 687, 687, 688, 688, 688, 689, 689, 689, 689, 690, 690, 690, 691, 691, 691, 692, 692, 692, 692, 693, 693, 693, 694, 694, 694, 695, 695, 695, 695, 696, 696, 696, 697, 697, 697, 698, 698, 698, 698, 699, 699, 699, 700, 700, 700, 701, 701, 701, 701, 702, 702, 702, 703, 703, 703, 704, 704, 704, 705, 705, 705, 705, 706, 706, 706, 707, 707, 707, 708, 708, 708, 708, 709, 709, 709, 710, 710, 710, 711, 711, 711, 711, 712, 712, 712, 713, 713, 713, 714, 714, 714, 714, 715, 715, 715, 716, 716, 716, 717, 717, 717, 717, 718, 718, 718, 719, 719, 719, 720, 720, 720, 720, 721, 721, 721, 722, 722, 722, 723, 723, 723, 723, 724, 724, 724, 725, 725, 725, 726, 726, 726, 726, 727, 727, 727, 728, 728, 728, 729, 729, 729, 729, 730, 730, 730, 731, 731, 731, 732, 732, 732, 733, 733, 733, 733, 734, 734, 734, 735, 735, 735, 736, 736, 736, 736, 737, 737, 737, 738, 738, 738, 739, 739, 739, 739, 740, 740, 740, 741, 741, 741, 742, 742, 742, 742, 743, 743, 743, 744, 744, 744, 745, 745, 745, 745, 746, 746, 746, 747, 747, 747, 748, 748, 748, 748, 749, 749, 749, 750, 750, 750, 751, 751, 751, 751, 752, 752, 752, 753, 753, 753, 754, 754, 754, 754, 755, 755, 755, 756, 756, 756, 757, 757, 757, 757, 758, 758, 758, 759, 759, 759, 760, 760, 760, 760, 761, 761, 761, 762, 762, 762, 763, 763, 763, 764, 764, 764, 764, 765, 765, 765, 766, 766, 766, 767, 767, }; static const BID_UINT256 bid_multipliers1_bid64[] = { {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{0ull, 0ull, 0ull, 0ull}}, {{11950291386221365447ull, 9908758460416160234ull, 6069031768864303422ull, 2518694348665986494ull}}, {{5453838698733179278ull, 1370772847122768853ull, 12138063537728606845ull, 5037388697331972988ull}}, {{10907677397466358555ull, 2741545694245537706ull, 5829383001747662074ull, 10074777394663945977ull}}, {{9560233108977092358ull, 4237657953591017864ull, 8544574229833353061ull, 2014955478932789195ull}}, {{673722144244633099ull, 8475315907182035729ull, 17089148459666706122ull, 4029910957865578390ull}}, {{1347444288489266198ull, 16950631814364071458ull, 15731552845623860628ull, 8059821915731156781ull}}, {{7648186487181673886ull, 18147521621840455584ull, 6835659383866682448ull, 1611964383146231356ull}}, {{15296372974363347772ull, 17848299169971359552ull, 13671318767733364897ull, 3223928766292462712ull}}, {{12146001875017143928ull, 17249854266233167489ull, 8895893461757178179ull, 6447857532584925425ull}}, {{13497246819229159756ull, 18207366112214274790ull, 1779178692351435635ull, 1289571506516985085ull}}, {{8547749564748767895ull, 17967988150718997965ull, 3558357384702871271ull, 2579143013033970170ull}}, {{17095499129497535789ull, 17489232227728444314ull, 7116714769405742543ull, 5158286026067940340ull}}, {{15744254185285519961ull, 16531720381747337013ull, 14233429538811485087ull, 10316572052135880680ull}}, {{3148850837057103993ull, 10685041705833288049ull, 2846685907762297017ull, 2063314410427176136ull}}, {{6297701674114207985ull, 2923339337957024482ull, 5693371815524594035ull, 4126628820854352272ull}}, {{12595403348228415969ull, 5846678675914048964ull, 11386743631049188070ull, 8253257641708704544ull}}, {{13587127113871414164ull, 15926730994150451085ull, 17034743985177478906ull, 1650651528341740908ull}}, {{8727510154033276711ull, 13406717914591350555ull, 15622743896645406197ull, 3301303056683481817ull}}, {{17455020308066553422ull, 8366691755473149494ull, 12798743719581260779ull, 6602606113366963635ull}}, {{14559050505839041654ull, 16430733610062271191ull, 2559748743916252155ull, 1320521222673392727ull}}, {{10671356937968531692ull, 14414723146414990767ull, 5119497487832504311ull, 2641042445346785454ull}}, {{2895969802227511768ull, 10382702219120429919ull, 10238994975665008623ull, 5282084890693570908ull}}, {{5791939604455023535ull, 2318660364531308222ull, 2031245877620465631ull, 10564169781387141817ull}}, {{1158387920891004707ull, 11531778517131992614ull, 7784946805007913772ull, 2112833956277428363ull}}, {{2316775841782009414ull, 4616812960554433612ull, 15569893610015827545ull, 4225667912554856726ull}}, {{4633551683564018828ull, 9233625921108867224ull, 12693043146322103474ull, 8451335825109713453ull}}, {{4616059151454714089ull, 9225422813705594091ull, 13606655073490151664ull, 1690267165021942690ull}}, {{9232118302909428178ull, 4101553701636566ull, 8766566073270751713ull, 3380534330043885381ull}}, {{17492532109304740ull, 8203107403273133ull, 17533132146541503426ull, 6761068660087770762ull}}, {{3692847321163771272ull, 11069687065706385596ull, 10885324058792121331ull, 1352213732017554152ull}}, {{7385694642327542543ull, 3692630057703219576ull, 3323904043874691047ull, 2704427464035108305ull}}, {{14771389284655085085ull, 7385260115406439152ull, 6647808087749382094ull, 5408854928070216610ull}}, {{11096034495600618553ull, 14770520230812878305ull, 13295616175498764188ull, 10817709856140433220ull}}, {{13287253343345854681ull, 14022150490388306630ull, 2659123235099752837ull, 2163541971228086644ull}}, {{8127762612982157745ull, 9597556907067061645ull, 5318246470199505675ull, 4327083942456173288ull}}, {{16255525225964315489ull, 748369740424571674ull, 10636492940399011351ull, 8654167884912346576ull}}, {{6940453859934773421ull, 7528371577568734981ull, 5816647402821712593ull, 1730833576982469315ull}}, {{13880907719869546842ull, 15056743155137469962ull, 11633294805643425186ull, 3461667153964938630ull}}, {{9315071366029542068ull, 11666742236565388309ull, 4819845537577298757ull, 6923334307929877261ull}}, {{9241711902689729060ull, 13401394891538808631ull, 4653317922257370074ull, 1384666861585975452ull}}, {{36679731669906504ull, 8356045709368065647ull, 9306635844514740149ull, 2769333723171950904ull}}, {{73359463339813008ull, 16712091418736131294ull, 166527615319928682ull, 5538667446343901809ull}}, {{146718926679626015ull, 14977438763762710972ull, 333055230639857365ull, 11077334892687803618ull}}, {{29343785335925203ull, 14063534196978273164ull, 11134657490353702442ull, 2215466978537560723ull}}, {{58687570671850406ull, 9680324320246994712ull, 3822570906997853269ull, 4430933957075121447ull}}, {{117375141343700812ull, 913904566784437808ull, 7645141813995706539ull, 8861867914150242894ull}}, {{3712823843010650486ull, 11250827357582618531ull, 16286423621766782600ull, 1772373582830048578ull}}, {{7425647686021300972ull, 4054910641455685446ull, 14126103169824013585ull, 3544747165660097157ull}}, {{14851295372042601943ull, 8109821282911370892ull, 9805462265938475554ull, 7089494331320194315ull}}, {{6659607889150430712ull, 16379359515549915471ull, 1961092453187695110ull, 1417898866264038863ull}}, {{13319215778300861424ull, 14311974957390279326ull, 3922184906375390221ull, 2835797732528077726ull}}, {{8191687482892171231ull, 10177205841071007037ull, 7844369812750780443ull, 5671595465056155452ull}}, {{16383374965784342462ull, 1907667608432462458ull, 15688739625501560887ull, 11343190930112310904ull}}, {{18034070252124509786ull, 4070882336428402814ull, 17895143184067953470ull, 2268638186022462180ull}}, {{17621396430539467955ull, 8141764672856805629ull, 17343542294426355324ull, 4537276372044924361ull}}, {{16796048787369384293ull, 16283529345713611259ull, 16240340515143159032ull, 9074552744089848723ull}}, {{18116605016441518152ull, 3256705869142722251ull, 14316114547254362776ull, 1814910548817969744ull}}, {{17786465959173484687ull, 6513411738285444503ull, 10185485020799173936ull, 3629821097635939489ull}}, {{17126187844637417758ull, 13026823476570889007ull, 1924225967888796256ull, 7259642195271878979ull}}, {{10803935198411304198ull, 2605364695314177801ull, 15142240452545400544ull, 1451928439054375795ull}}, {{3161126323113056780ull, 5210729390628355603ull, 11837736831381249472ull, 2903856878108751591ull}}, {{6322252646226113560ull, 10421458781256711206ull, 5228729589052947328ull, 5807713756217503183ull}}, {{12644505292452227119ull, 2396173488803870796ull, 10457459178105894657ull, 11615427512435006366ull}}, {{17286296317458086717ull, 11547281141986505128ull, 5780840650363089254ull, 2323085502487001273ull}}, {{16125848561206621817ull, 4647818210263458641ull, 11561681300726178509ull, 4646171004974002546ull}}, {{13804953048703692018ull, 9295636420526917283ull, 4676618527742805402ull, 9292342009948005093ull}}, {{13829037053966469374ull, 1859127284105383456ull, 12003370149774292050ull, 1858468401989601018ull}}, {{9211330034223387131ull, 3718254568210766913ull, 5559996225839032484ull, 3716936803979202037ull}}, {{18422660068446774261ull, 7436509136421533826ull, 11119992451678064968ull, 7433873607958404074ull}}, {{14752578457915085822ull, 8865999456768127411ull, 16981393749303254286ull, 1486774721591680814ull}}, {{11058412842120620028ull, 17731998913536254823ull, 15516043424896956956ull, 2973549443183361629ull}}, {{3670081610531688440ull, 17017253753362958031ull, 12585342776084362297ull, 5947098886366723259ull}}, {{7340163221063376879ull, 15587763433016364446ull, 6723941478459172979ull, 11894197772733446519ull}}, {{16225427903180316669ull, 14185599130829003858ull, 16102183554659475888ull, 2378839554546689303ull}}, {{14004111732651081721ull, 9924454187948456101ull, 13757623035609400161ull, 4757679109093378607ull}}, {{9561479391592611826ull, 1402164302187360587ull, 9068501997509248707ull, 9515358218186757215ull}}, {{16669691137286163658ull, 7659130489921292763ull, 1813700399501849741ull, 1903071643637351443ull}}, {{14892638200862775700ull, 15318260979842585527ull, 3627400799003699482ull, 3806143287274702886ull}}, {{11338532328015999784ull, 12189777885975619439ull, 7254801598007398965ull, 7612286574549405772ull}}, {{5957055280345110280ull, 9816653206678944534ull, 8829657949085300439ull, 1522457314909881154ull}}, {{11914110560690220560ull, 1186562339648337452ull, 17659315898170600879ull, 3044914629819762308ull}}, {{5381477047670889504ull, 2373124679296674905ull, 16871887722631650142ull, 6089829259639524617ull}}, {{10762954095341779008ull, 4746249358593349810ull, 15297031371553748668ull, 12179658519279049235ull}}, {{13220637263294086772ull, 12017296315944400931ull, 3059406274310749733ull, 2435931703855809847ull}}, {{7994530452878621927ull, 5587848558179250247ull, 6118812548621499467ull, 4871863407711619694ull}}, {{15989060905757243853ull, 11175697116358500494ull, 12237625097242998934ull, 9743726815423239388ull}}, {{6887160995893359094ull, 9613837052755520745ull, 13515571463674330756ull, 1948745363084647877ull}}, {{13774321991786718188ull, 780930031801489874ull, 8584398853639109897ull, 3897490726169295755ull}}, {{9101899909863884759ull, 1561860063602979749ull, 17168797707278219794ull, 7794981452338591510ull}}, {{12888426426198507922ull, 15069767271688237242ull, 3433759541455643958ull, 1558996290467718302ull}}, {{7330108778687464227ull, 11692790469666922869ull, 6867519082911287917ull, 3117992580935436604ull}}, {{14660217557374928454ull, 4938836865624294122ull, 13735038165822575835ull, 6235985161870873208ull}}, {{10873691041040305291ull, 9877673731248588245ull, 9023332257935600054ull, 12471970323741746417ull}}, {{5864087022949971382ull, 5664883560991627972ull, 9183364081070940657ull, 2494394064748349283ull}}, {{11728174045899942763ull, 11329767121983255944ull, 18366728162141881314ull, 4988788129496698566ull}}, {{5009604018090333910ull, 4212790170256960273ull, 18286712250574211013ull, 9977576258993397133ull}}, {{15759316062585708075ull, 4531906848793302377ull, 14725388894340573172ull, 1995515251798679426ull}}, {{13071888051461864534ull, 9063813697586604755ull, 11004033714971594728ull, 3991030503597358853ull}}, {{7697032029214177451ull, 18127627395173209511ull, 3561323356233637840ull, 7982061007194717707ull}}, {{12607452850068566460ull, 11004223108518462548ull, 8090962300730548214ull, 1596412201438943541ull}}, {{6768161626427581304ull, 3561702143327373481ull, 16181924601461096429ull, 3192824402877887082ull}}, {{13536323252855162607ull, 7123404286654746962ull, 13917105129212641242ull, 6385648805755774165ull}}, {{8625902432000773598ull, 14246808573309493925ull, 9387466184715730868ull, 12771297611511548331ull}}, {{16482575745367796013ull, 17606756973629540077ull, 5566842051685056496ull, 2554259522302309666ull}}, {{14518407417026040409ull, 16766769873549528539ull, 11133684103370112993ull, 5108519044604619332ull}}, {{10590070760342529202ull, 15086795673389505463ull, 3820624133030674371ull, 10217038089209238665ull}}, {{16875409411036147134ull, 6706707949419811415ull, 764124826606134874ull, 2043407617841847733ull}}, {{15304074748362742651ull, 13413415898839622831ull, 1528249653212269748ull, 4086815235683695466ull}}, {{12161405423015933685ull, 8380087723969694047ull, 3056499306424539497ull, 8173630471367390932ull}}, {{6121629899345097061ull, 16433412803761580102ull, 7989997490768728545ull, 1634726094273478186ull}}, {{12243259798690194121ull, 14420081533813608588ull, 15979994981537457091ull, 3269452188546956372ull}}, {{6039775523670836625ull, 10393418993917665561ull, 13513245889365362567ull, 6538904377093912745ull}}, {{12276001548959898295ull, 9457381428267353758ull, 2702649177873072513ull, 1307780875418782549ull}}, {{6105259024210244973ull, 468018782825155901ull, 5405298355746145027ull, 2615561750837565098ull}}, {{12210518048420489946ull, 936037565650311802ull, 10810596711492290054ull, 5231123501675130196ull}}, {{5974292023131428276ull, 1872075131300623605ull, 3174449349275028492ull, 10462247003350260393ull}}, {{1194858404626285656ull, 374415026260124721ull, 11702936314080736668ull, 2092449400670052078ull}}, {{2389716809252571311ull, 748830052520249442ull, 4959128554451921720ull, 4184898801340104157ull}}, {{4779433618505142621ull, 1497660105040498884ull, 9918257108903843440ull, 8369797602680208314ull}}, {{12023933167926759494ull, 15056927279975741069ull, 16741046680748409980ull, 1673959520536041662ull}}, {{5601122262143967372ull, 11667110486241930523ull, 15035349287787268345ull, 3347919041072083325ull}}, {{11202244524287934743ull, 4887476898774309430ull, 11623954501864985075ull, 6695838082144166651ull}}, {{5929797719599497272ull, 4666844194496772209ull, 6014139715114907338ull, 1339167616428833330ull}}, {{11859595439198994544ull, 9333688388993544418ull, 12028279430229814676ull, 2678335232857666660ull}}, {{5272446804688437472ull, 220632704277537221ull, 5609814786750077737ull, 5356670465715333321ull}}, {{10544893609376874943ull, 441265408555074442ull, 11219629573500155474ull, 10713340931430666642ull}}, {{13177025166101105959ull, 3777601896452925211ull, 9622623544183851741ull, 2142668186286133328ull}}, {{7907306258492660301ull, 7555203792905850423ull, 798503014658151866ull, 4285336372572266657ull}}, {{15814612516985320601ull, 15110407585811700846ull, 1597006029316303732ull, 8570672745144533314ull}}, {{10541620132880884767ull, 6711430331904250492ull, 15076796464830902039ull, 1714134549028906662ull}}, {{2636496192052217917ull, 13422860663808500985ull, 11706848855952252462ull, 3428269098057813325ull}}, {{5272992384104435834ull, 8398977253907450354ull, 4966953638194953309ull, 6856538196115626651ull}}, {{15811993735788528460ull, 1679795450781490070ull, 4682739542380900985ull, 1371307639223125330ull}}, {{13177243397867505304ull, 3359590901562980141ull, 9365479084761801970ull, 2742615278446250660ull}}, {{7907742722025458991ull, 6719181803125960283ull, 284214095814052324ull, 5485230556892501321ull}}, {{15815485444050917981ull, 13438363606251920566ull, 568428191628104648ull, 10970461113785002642ull}}, {{6852445903552093920ull, 2687672721250384113ull, 7492383267809441576ull, 2194092222757000528ull}}, {{13704891807104187839ull, 5375345442500768226ull, 14984766535618883152ull, 4388184445514001056ull}}, {{8963039540498824062ull, 10750690885001536453ull, 11522788997528214688ull, 8776368891028002113ull}}, {{16550003167067406106ull, 5839486991742217613ull, 13372604243731373907ull, 1755273778205600422ull}}, {{14653262260425260595ull, 11678973983484435227ull, 8298464413753196198ull, 3510547556411200845ull}}, {{10859780447140969573ull, 4911203893259318839ull, 16596928827506392397ull, 7021095112822401690ull}}, {{5861304904170104238ull, 8360938408135684414ull, 3319385765501278479ull, 1404219022564480338ull}}, {{11722609808340208476ull, 16721876816271368828ull, 6638771531002556958ull, 2808438045128960676ull}}, {{4998475542970865335ull, 14997009558833186041ull, 13277543062005113917ull, 5616876090257921352ull}}, {{9996951085941730669ull, 11547275043956820466ull, 8108342050300676219ull, 11233752180515842705ull}}, {{1999390217188346134ull, 17066850267759005386ull, 1621668410060135243ull, 2246750436103168541ull}}, {{3998780434376692268ull, 15686956461808459156ull, 3243336820120270487ull, 4493500872206337082ull}}, {{7997560868753384536ull, 12927168849907366696ull, 6486673640240540975ull, 8987001744412674164ull}}, {{1599512173750676908ull, 17342829028949114632ull, 16054729987015749487ull, 1797400348882534832ull}}, {{3199024347501353815ull, 16238913984188677648ull, 13662715900321947359ull, 3594800697765069665ull}}, {{6398048695002707629ull, 14031083894667803680ull, 8878687726934343103ull, 7189601395530139331ull}}, {{16037004997968182819ull, 17563612037901202028ull, 5465086360128778943ull, 1437920279106027866ull}}, {{13627265922226814021ull, 16680480002092852441ull, 10930172720257557887ull, 2875840558212055732ull}}, {{8807787770744076426ull, 14914215930476153267ull, 3413601366805564159ull, 5751681116424111465ull}}, {{17615575541488152852ull, 11381687787242754918ull, 6827202733611128319ull, 11503362232848222930ull}}, {{10901812737781451217ull, 17033732816416192276ull, 1365440546722225663ull, 2300672446569644586ull}}, {{3356881401853350818ull, 15620721559122832937ull, 2730881093444451327ull, 4601344893139289172ull}}, {{6713762803706701635ull, 12794699044536114258ull, 5461762186888902655ull, 9202689786278578344ull}}, {{8721450190225160974ull, 17316335067874864144ull, 15849747696345421823ull, 1840537957255715668ull}}, {{17442900380450321947ull, 16185926062040176672ull, 13252751318981292031ull, 3681075914511431337ull}}, {{16439056687191092278ull, 13925108050370801729ull, 8058758564253032447ull, 7362151829022862675ull}}, {{6977160152180128779ull, 10163719239557980992ull, 1611751712850606489ull, 1472430365804572535ull}}, {{13954320304360257558ull, 1880694405406410368ull, 3223503425701212979ull, 2944860731609145070ull}}, {{9461896535010963499ull, 3761388810812820737ull, 6447006851402425958ull, 5889721463218290140ull}}, {{477048996312375382ull, 7522777621625641475ull, 12894013702804851916ull, 11779442926436580280ull}}, {{3784758614004385400ull, 5193904339067038618ull, 2578802740560970383ull, 2355888585287316056ull}}, {{7569517228008770799ull, 10387808678134077236ull, 5157605481121940766ull, 4711777170574632112ull}}, {{15139034456017541598ull, 2328873282558602856ull, 10315210962243881533ull, 9423554341149264224ull}}, {{14095853335429239290ull, 7844472285995541217ull, 16820437451416417599ull, 1884710868229852844ull}}, {{9744962597148926963ull, 15688944571991082435ull, 15194130829123283582ull, 3769421736459705689ull}}, {{1043181120588302309ull, 12931145070272613255ull, 11941517584537015549ull, 7538843472919411379ull}}, {{11276682668343391432ull, 13654275458280253620ull, 17145698775875044402ull, 1507768694583882275ull}}, {{4106621262977231247ull, 8861806842850955625ull, 15844653478040537189ull, 3015537389167764551ull}}, {{8213242525954462494ull, 17723613685701911250ull, 13242562882371522762ull, 6031074778335529103ull}}, {{16426485051908924987ull, 17000483297694270884ull, 8038381691033493909ull, 12062149556671058207ull}}, {{3285297010381784998ull, 7089445474280764500ull, 8986373967690519428ull, 2412429911334211641ull}}, {{6570594020763569995ull, 14178890948561529000ull, 17972747935381038856ull, 4824859822668423282ull}}, {{13141188041527139990ull, 9911037823413506384ull, 17498751797052526097ull, 9649719645336846565ull}}, {{6317586423047338322ull, 9360905194166521923ull, 3499750359410505219ull, 1929943929067369313ull}}, {{12635172846094676643ull, 275066314623492230ull, 6999500718821010439ull, 3859887858134738626ull}}, {{6823601618479801669ull, 550132629246984461ull, 13999001437642020878ull, 7719775716269477252ull}}, {{5054069138437870657ull, 110026525849396892ull, 10178497917012224822ull, 1543955143253895450ull}}, {{10108138276875741314ull, 220053051698793784ull, 1910251760314898028ull, 3087910286507790901ull}}, {{1769532480041931012ull, 440106103397587569ull, 3820503520629796056ull, 6175820573015581802ull}}, {{3539064960083862023ull, 880212206795175138ull, 7641007041259592112ull, 12351641146031163604ull}}, {{15465208250984413698ull, 3865391256100945350ull, 16285596667219559715ull, 2470328229206232720ull}}, {{12483672428259275779ull, 7730782512201890701ull, 14124449260729567814ull, 4940656458412465441ull}}, {{6520600782808999942ull, 15461565024403781403ull, 9802154447749584012ull, 9881312916824930883ull}}, {{12372166600787530958ull, 3092313004880756280ull, 13028477333775647772ull, 1976262583364986176ull}}, {{6297589127865510300ull, 6184626009761512561ull, 7610210593841743928ull, 3952525166729972353ull}}, {{12595178255731020600ull, 12369252019523025122ull, 15220421187683487856ull, 7905050333459944706ull}}, {{17276430910113845413ull, 9852548033388425670ull, 6733433052278607894ull, 1581010066691988941ull}}, {{16106117746518139210ull, 1258351993067299725ull, 13466866104557215789ull, 3162020133383977882ull}}, {{13765491419326726803ull, 2516703986134599451ull, 8486988135404879962ull, 6324040266767955765ull}}, {{9084238764943901990ull, 5033407972269198903ull, 16973976270809759924ull, 12648080533535911530ull}}, {{9195545382472601045ull, 15764076853421481073ull, 3394795254161951984ull, 2529616106707182306ull}}, {{18391090764945202089ull, 13081409633133410530ull, 6789590508323903969ull, 5059232213414364612ull}}, {{18335437456180852562ull, 7716075192557269445ull, 13579181016647807939ull, 10118464426828729224ull}}, {{14735133935461901482ull, 12611261482737184858ull, 17473231462297202880ull, 2023692885365745844ull}}, {{11023523797214251348ull, 6775778891764818101ull, 16499718850884854145ull, 4047385770731491689ull}}, {{3600303520718951080ull, 13551557783529636203ull, 14552693628060156674ull, 8094771541462983379ull}}, {{4409409518885700540ull, 13778358000931658210ull, 17667933984579672627ull, 1618954308292596675ull}}, {{8818819037771401079ull, 9109971928153764804ull, 16889123895449793639ull, 3237908616585193351ull}}, {{17637638075542802157ull, 18219943856307529608ull, 15331503717190035662ull, 6475817233170386703ull}}, {{14595574059334291401ull, 3643988771261505921ull, 14134347187663738102ull, 1295163446634077340ull}}, {{10744404044959031186ull, 7287977542523011843ull, 9821950301617924588ull, 2590326893268154681ull}}, {{3042064016208510756ull, 14575955085046023687ull, 1197156529526297560ull, 5180653786536309363ull}}, {{6084128032417021512ull, 10705166096382495758ull, 2394313059052595121ull, 10361307573072618726ull}}, {{1216825606483404303ull, 9519730848760319798ull, 4168211426552429347ull, 2072261514614523745ull}}, {{2433651212966808605ull, 592717623811087980ull, 8336422853104858695ull, 4144523029229047490ull}}, {{4867302425933617209ull, 1185435247622175960ull, 16672845706209717390ull, 8289046058458094980ull}}, {{973460485186723442ull, 237087049524435192ull, 3334569141241943478ull, 1657809211691618996ull}}, {{1946920970373446884ull, 474174099048870384ull, 6669138282483886956ull, 3315618423383237992ull}}, {{3893841940746893768ull, 948348198097740768ull, 13338276564967773912ull, 6631236846766475984ull}}, {{15536163647117020047ull, 3879018454361458476ull, 17425050571961196075ull, 1326247369353295196ull}}, {{12625583220524488477ull, 7758036908722916953ull, 16403357070212840534ull, 2652494738706590393ull}}, {{6804422367339425337ull, 15516073817445833907ull, 14359970066716129452ull, 5304989477413180787ull}}, {{13608844734678850674ull, 12585403561182116198ull, 10273196059722707289ull, 10609978954826361575ull}}, {{10100466576419590782ull, 17274475971204064532ull, 2054639211944541457ull, 2121995790965272315ull}}, {{1754189079129629947ull, 16102207868698577449ull, 4109278423889082915ull, 4243991581930544630ull}}, {{3508378158259259893ull, 13757671663687603282ull, 8218556847778165831ull, 8487983163861089260ull}}, {{11769722075877582949ull, 6440883147479430979ull, 1643711369555633166ull, 1697596632772217852ull}}, {{5092700078045614281ull, 12881766294958861959ull, 3287422739111266332ull, 3395193265544435704ull}}, {{10185400156091228561ull, 7316788516208172302ull, 6574845478222532665ull, 6790386531088871408ull}}, {{2037080031218245713ull, 12531404147467365430ull, 12383015539870237502ull, 1358077306217774281ull}}, {{4074160062436491425ull, 6616064221225179244ull, 6319287006030923389ull, 2716154612435548563ull}}, {{8148320124872982849ull, 13232128442450358488ull, 12638574012061846778ull, 5432309224871097126ull}}, {{16296640249745965697ull, 8017512811191165360ull, 6830403950414141941ull, 10864618449742194253ull}}, {{18016723308916834433ull, 16360897821205874364ull, 12434127234308559357ull, 2172923689948438850ull}}, {{17586702544124117249ull, 14275051568702197113ull, 6421510394907567099ull, 4345847379896877701ull}}, {{16726661014538682881ull, 10103359063694842611ull, 12843020789815134199ull, 8691694759793755402ull}}, {{10724029832391557223ull, 5710020627480878845ull, 9947301787446847486ull, 1738338951958751080ull}}, {{3001315591073562830ull, 11420041254961757691ull, 1447859501184143356ull, 3476677903917502161ull}}, {{6002631182147125659ull, 4393338436213963766ull, 2895719002368286713ull, 6953355807835004322ull}}, {{4889875051171335455ull, 878667687242792753ull, 7957841429957477989ull, 1390671161567000864ull}}, {{9779750102342670910ull, 1757335374485585506ull, 15915682859914955978ull, 2781342323134001728ull}}, {{1112756130975790204ull, 3514670748971171013ull, 13384621646120360340ull, 5562684646268003457ull}}, {{2225512261951580407ull, 7029341497942342026ull, 8322499218531169064ull, 11125369292536006915ull}}, {{445102452390316082ull, 16163263558556109698ull, 1664499843706233812ull, 2225073858507201383ull}}, {{890204904780632163ull, 13879783043402667780ull, 3328999687412467625ull, 4450147717014402766ull}}, {{1780409809561264326ull, 9312822013095783944ull, 6657999374824935251ull, 8900295434028805532ull}}, {{7734779591396073512ull, 12930610846844887758ull, 8710297504448807696ull, 1780059086805761106ull}}, {{15469559182792147023ull, 7414477619980223900ull, 17420595008897615393ull, 3560118173611522212ull}}, {{12492374291874742430ull, 14828955239960447801ull, 16394445944085679170ull, 7120236347223044425ull}}, {{6187823673116858810ull, 2965791047992089560ull, 3278889188817135834ull, 1424047269444608885ull}}, {{12375647346233717619ull, 5931582095984179120ull, 6557778377634271668ull, 2848094538889217770ull}}, {{6304550618757883621ull, 11863164191968358241ull, 13115556755268543336ull, 5696189077778435540ull}}, {{12609101237515767242ull, 5279584310227164866ull, 7784369436827535057ull, 11392378155556871081ull}}, {{17279215506470794742ull, 12123963306271163942ull, 5246222702107417334ull, 2278475631111374216ull}}, {{16111686939232037867ull, 5801182538832776269ull, 10492445404214834669ull, 4556951262222748432ull}}, {{13776629804754524117ull, 11602365077665552539ull, 2538146734720117722ull, 9113902524445496865ull}}, {{6444674775692815147ull, 9699170645016931154ull, 507629346944023544ull, 1822780504889099373ull}}, {{12889349551385630293ull, 951597216324310692ull, 1015258693888047089ull, 3645561009778198746ull}}, {{7331955029061708970ull, 1903194432648621385ull, 2030517387776094178ull, 7291122019556397492ull}}, {{1466391005812341794ull, 380638886529724277ull, 7784801107039039482ull, 1458224403911279498ull}}, {{2932782011624683588ull, 761277773059448554ull, 15569602214078078964ull, 2916448807822558996ull}}, {{5865564023249367176ull, 1522555546118897108ull, 12692460354446606312ull, 5832897615645117993ull}}, {{11731128046498734352ull, 3045111092237794216ull, 6938176635183661008ull, 11665795231290235987ull}}, {{6035574424041657194ull, 609022218447558843ull, 8766332956520552848ull, 2333159046258047197ull}}, {{12071148848083314388ull, 1218044436895117686ull, 17532665913041105696ull, 4666318092516094394ull}}, {{5695553622457077159ull, 2436088873790235373ull, 16618587752372659776ull, 9332636185032188789ull}}, {{12207157168717146402ull, 487217774758047074ull, 18081112809442173248ull, 1866527237006437757ull}}, {{5967570263724741187ull, 974435549516094149ull, 17715481545174794880ull, 3733054474012875515ull}}, {{11935140527449482373ull, 1948871099032188298ull, 16984219016640038144ull, 7466108948025751031ull}}, {{13455074549715627445ull, 389774219806437659ull, 7086192618069917952ull, 1493221789605150206ull}}, {{8463405025721703273ull, 779548439612875319ull, 14172385236139835904ull, 2986443579210300412ull}}, {{16926810051443406545ull, 1559096879225750638ull, 9898026398570120192ull, 5972887158420600825ull}}, {{15406876029177261474ull, 3118193758451501277ull, 1349308723430688768ull, 11945774316841201651ull}}, {{6770724020577362618ull, 15381034010657941548ull, 3959210559428048076ull, 2389154863368240330ull}}, {{13541448041154725236ull, 12315323947606331480ull, 7918421118856096153ull, 4778309726736480660ull}}, {{8636152008599898856ull, 6183903821503111345ull, 15836842237712192307ull, 9556619453472961320ull}}, {{9105928031203800418ull, 8615478393784442915ull, 3167368447542438461ull, 1911323890694592264ull}}, {{18211856062407600836ull, 17230956787568885830ull, 6334736895084876922ull, 3822647781389184528ull}}, {{17976968051105650055ull, 16015169501428220045ull, 12669473790169753845ull, 7645295562778369056ull}}, {{7284742424963040335ull, 6892382715027554332ull, 6223243572775861092ull, 1529059112555673811ull}}, {{14569484849926080669ull, 13784765430055108664ull, 12446487145551722184ull, 3058118225111347622ull}}, {{10692225626142609721ull, 9122786786400665713ull, 6446230217393892753ull, 6116236450222695245ull}}, {{2937707178575667825ull, 18245573572801331427ull, 12892460434787785506ull, 12232472900445390490ull}}, {{11655587879940864535ull, 7338463529302176608ull, 2578492086957557101ull, 2446494580089078098ull}}, {{4864431686172177453ull, 14676927058604353217ull, 5156984173915114202ull, 4892989160178156196ull}}, {{9728863372344354906ull, 10907110043499154818ull, 10313968347830228405ull, 9785978320356312392ull}}, {{1945772674468870982ull, 9560119638183651610ull, 9441491299049866327ull, 1957195664071262478ull}}, {{3891545348937741963ull, 673495202657751604ull, 436238524390181039ull, 3914391328142524957ull}}, {{7783090697875483925ull, 1346990405315503208ull, 872477048780362078ull, 7828782656285049914ull}}, {{1556618139575096785ull, 7648095710546921288ull, 14931890668723713708ull, 1565756531257009982ull}}, {{3113236279150193570ull, 15296191421093842576ull, 11417037263737875800ull, 3131513062514019965ull}}, {{6226472558300387140ull, 12145638768478133536ull, 4387330453766199985ull, 6263026125028039931ull}}, {{12452945116600774280ull, 5844533463246715456ull, 8774660907532399971ull, 12526052250056079862ull}}, {{17247984282287796149ull, 12236953136875074060ull, 9133629810990300640ull, 2505210450011215972ull}}, {{16049224490866040682ull, 6027162200040596505ull, 18267259621980601281ull, 5010420900022431944ull}}, {{13651704908022529747ull, 12054324400081193011ull, 18087775170251650946ull, 10020841800044863889ull}}, {{6419689796346416273ull, 2410864880016238602ull, 18374950293017971482ull, 2004168360008972777ull}}, {{12839379592692832546ull, 4821729760032477204ull, 18303156512326391348ull, 4008336720017945555ull}}, {{7232015111676113475ull, 9643459520064954409ull, 18159568950943231080ull, 8016673440035891111ull}}, {{1446403022335222695ull, 5618040718754901205ull, 7321262604930556539ull, 1603334688007178222ull}}, {{2892806044670445390ull, 11236081437509802410ull, 14642525209861113078ull, 3206669376014356444ull}}, {{5785612089340890780ull, 4025418801310053204ull, 10838306346012674541ull, 6413338752028712889ull}}, {{15914517676835819449ull, 805083760262010640ull, 16925056528170176201ull, 1282667750405742577ull}}, {{13382291279962087282ull, 1610167520524021281ull, 15403368982630800786ull, 2565335500811485155ull}}, {{8317838486214622947ull, 3220335041048042563ull, 12359993891552049956ull, 5130671001622970311ull}}, {{16635676972429245894ull, 6440670082096085126ull, 6273243709394548296ull, 10261342003245940623ull}}, {{3327135394485849179ull, 16045529275386858318ull, 12322695186104640628ull, 2052268400649188124ull}}, {{6654270788971698358ull, 13644314477064165020ull, 6198646298499729641ull, 4104536801298376249ull}}, {{13308541577943396715ull, 8841884880418778424ull, 12397292596999459283ull, 8209073602596752498ull}}, {{2661708315588679343ull, 5457725790825666008ull, 13547504963625622826ull, 1641814720519350499ull}}, {{5323416631177358686ull, 10915451581651332016ull, 8648265853541694036ull, 3283629441038700999ull}}, {{10646833262354717372ull, 3384159089593112416ull, 17296531707083388073ull, 6567258882077401998ull}}, {{9508064281954764121ull, 4366180632660532806ull, 14527352785642408584ull, 1313451776415480399ull}}, {{569384490199976626ull, 8732361265321065613ull, 10607961497575265552ull, 2626903552830960799ull}}, {{1138768980399953251ull, 17464722530642131226ull, 2769178921440979488ull, 5253807105661921599ull}}, {{2277537960799906502ull, 16482700987574710836ull, 5538357842881958977ull, 10507614211323843198ull}}, {{4144856406901891624ull, 3296540197514942167ull, 12175718012802122765ull, 2101522842264768639ull}}, {{8289712813803783248ull, 6593080395029884334ull, 5904691951894693914ull, 4203045684529537279ull}}, {{16579425627607566495ull, 13186160790059768668ull, 11809383903789387828ull, 8406091369059074558ull}}, {{18073280384489154592ull, 6326580972753864056ull, 13429923224983608535ull, 1681218273811814911ull}}, {{17699816695268757568ull, 12653161945507728113ull, 8413102376257665454ull, 3362436547623629823ull}}, {{16952889316827963519ull, 6859579817305904611ull, 16826204752515330909ull, 6724873095247259646ull}}, {{7079926678107503027ull, 1371915963461180922ull, 7054589765244976505ull, 1344974619049451929ull}}, {{14159853356215006054ull, 2743831926922361844ull, 14109179530489953010ull, 2689949238098903858ull}}, {{9872962638720460492ull, 5487663853844723689ull, 9771614987270354404ull, 5379898476197807717ull}}, {{1299181203731369368ull, 10975327707689447379ull, 1096485900831157192ull, 10759796952395615435ull}}, {{3949185055488184197ull, 9573763171021710122ull, 219297180166231438ull, 2151959390479123087ull}}, {{7898370110976368394ull, 700782268333868628ull, 438594360332462877ull, 4303918780958246174ull}}, {{15796740221952736787ull, 1401564536667737256ull, 877188720664925754ull, 8607837561916492348ull}}, {{14227394488616278327ull, 7659010536817368097ull, 11243484188358716120ull, 1721567512383298469ull}}, {{10008044903523005038ull, 15318021073634736195ull, 4040224303007880624ull, 3443135024766596939ull}}, {{1569345733336458460ull, 12189298073559920775ull, 8080448606015761249ull, 6886270049533193878ull}}, {{7692566776151112339ull, 9816557244195804801ull, 12684136165428883219ull, 1377254009906638775ull}}, {{15385133552302224677ull, 1186370414682057986ull, 6921528257148214823ull, 2754508019813277551ull}}, {{12323523030894897738ull, 2372740829364115973ull, 13843056514296429646ull, 5509016039626555102ull}}, {{6200301988080243859ull, 4745481658728231947ull, 9239368954883307676ull, 11018032079253110205ull}}, {{12308106841841779742ull, 4638445146487556712ull, 1847873790976661535ull, 2203606415850622041ull}}, {{6169469609974007867ull, 9276890292975113425ull, 3695747581953323070ull, 4407212831701244082ull}}, {{12338939219948015734ull, 107036512240675234ull, 7391495163906646141ull, 8814425663402488164ull}}, {{17225183102957244440ull, 21407302448135046ull, 16235694291748970521ull, 1762885132680497632ull}}, {{16003622132204937264ull, 42814604896270093ull, 14024644509788389426ull, 3525770265360995265ull}}, {{13560500190700322911ull, 85629209792540187ull, 9602544945867227236ull, 7051540530721990531ull}}, {{17469495297107705875ull, 7395823471442328683ull, 5609857803915355770ull, 1410308106144398106ull}}, {{16492246520505860134ull, 14791646942884657367ull, 11219715607830711540ull, 2820616212288796212ull}}, {{14537748967302168652ull, 11136549812059763119ull, 3992687141951871465ull, 5641232424577592425ull}}, {{10628753860894785687ull, 3826355550409974623ull, 7985374283903742931ull, 11282464849155184850ull}}, {{16883146031146598431ull, 4454619924823905247ull, 1597074856780748586ull, 2256492969831036970ull}}, {{15319547988583645245ull, 8909239849647810495ull, 3194149713561497172ull, 4512985939662073940ull}}, {{12192351903457738873ull, 17818479699295620991ull, 6388299427122994344ull, 9025971879324147880ull}}, {{2438470380691547775ull, 18321091198826765491ull, 1277659885424598868ull, 1805194375864829576ull}}, {{4876940761383095549ull, 18195438323943979366ull, 2555319770849197737ull, 3610388751729659152ull}}, {{9753881522766191098ull, 17944132574178407116ull, 5110639541698395475ull, 7220777503459318304ull}}, {{1950776304553238220ull, 18346221773803322716ull, 15779523167307320387ull, 1444155500691863660ull}}, {{3901552609106476440ull, 18245699473897093816ull, 13112302260905089159ull, 2888311001383727321ull}}, {{7803105218212952879ull, 18044654874084636016ull, 7777860448100626703ull, 5776622002767454643ull}}, {{15606210436425905757ull, 17642565674459720416ull, 15555720896201253407ull, 11553244005534909286ull}}, {{17878637346252822445ull, 14596559579117675052ull, 6800492993982161004ull, 2310648801106981857ull}}, {{17310530618796093273ull, 10746375084525798489ull, 13600985987964322009ull, 4621297602213963714ull}}, {{16174317163882634929ull, 3046006095342045363ull, 8755227902219092403ull, 9242595204427927429ull}}, {{3234863432776526986ull, 7987898848552229719ull, 16508440839411459773ull, 1848519040885585485ull}}, {{6469726865553053972ull, 15975797697104459438ull, 14570137605113367930ull, 3697038081771170971ull}}, {{12939453731106107943ull, 13504851320499367260ull, 10693531136517184245ull, 7394076163542341943ull}}, {{13655937190446952559ull, 13769016708325604421ull, 13206752671529167818ull, 1478815232708468388ull}}, {{8865130307184353501ull, 9091289342941657227ull, 7966761269348784021ull, 2957630465416936777ull}}, {{17730260614368707001ull, 18182578685883314454ull, 15933522538697568042ull, 5915260930833873554ull}}, {{17013777155027862386ull, 17918413298057077293ull, 13420301003685584469ull, 11830521861667747109ull}}, {{7092104245747482801ull, 14651729103837146428ull, 17441455459704758186ull, 2366104372333549421ull}}, {{14184208491494965601ull, 10856714133964741240ull, 16436166845699964757ull, 4732208744667098843ull}}, {{9921672909280379586ull, 3266684194219930865ull, 14425589617690377899ull, 9464417489334197687ull}}, {{5673683396597986241ull, 4342685653585896496ull, 10263815553021896226ull, 1892883497866839537ull}}, {{11347366793195972481ull, 8685371307171792992ull, 2080887032334240836ull, 3785766995733679075ull}}, {{4247989512682393345ull, 17370742614343585985ull, 4161774064668481672ull, 7571533991467358150ull}}, {{8228295532020299316ull, 10852846152352537843ull, 832354812933696334ull, 1514306798293471630ull}}, {{16456591064040598631ull, 3258948230995524070ull, 1664709625867392669ull, 3028613596586943260ull}}, {{14466438054371645646ull, 6517896461991048141ull, 3329419251734785338ull, 6057227193173886520ull}}, {{10486132035033739675ull, 13035792923982096283ull, 6658838503469570676ull, 12114454386347773040ull}}, {{16854621665974389228ull, 6296507399538329579ull, 1331767700693914135ull, 2422890877269554608ull}}, {{15262499258239226840ull, 12593014799076659159ull, 2663535401387828270ull, 4845781754539109216ull}}, {{12078254442768902064ull, 6739285524443766703ull, 5327070802775656541ull, 9691563509078218432ull}}, {{6104999703295690736ull, 12415903549114484310ull, 8444111790038951954ull, 1938312701815643686ull}}, {{12209999406591381472ull, 6385063024519417004ull, 16888223580077903909ull, 3876625403631287372ull}}, {{5973254739473211328ull, 12770126049038834009ull, 15329703086446256202ull, 7753250807262574745ull}}, {{4883999762636552589ull, 9932722839291587448ull, 3065940617289251240ull, 1550650161452514949ull}}, {{9767999525273105178ull, 1418701604873623280ull, 6131881234578502481ull, 3101300322905029898ull}}, {{1089254976836658739ull, 2837403209747246561ull, 12263762469157004962ull, 6202600645810059796ull}}, {{2178509953673317478ull, 5674806419494493122ull, 6080780864604458308ull, 12405201291620119593ull}}, {{11503748434960394466ull, 4824310098640808947ull, 12284202617146622631ull, 2481040258324023918ull}}, {{4560752796211237315ull, 9648620197281617895ull, 6121661160583693646ull, 4962080516648047837ull}}, {{9121505592422474629ull, 850496320853684174ull, 12243322321167387293ull, 9924161033296095674ull}}, {{5513649933226405249ull, 7548796893654557481ull, 17206059723201118751ull, 1984832206659219134ull}}, {{11027299866452810498ull, 15097593787309114962ull, 15965375372692685886ull, 3969664413318438269ull}}, {{3607855659196069380ull, 11748443500908678309ull, 13484006671675820157ull, 7939328826636876539ull}}, {{721571131839213876ull, 6039037514923645985ull, 17454196593302805324ull, 1587865765327375307ull}}, {{1443142263678427752ull, 12078075029847291970ull, 16461649112896059032ull, 3175731530654750615ull}}, {{2886284527356855504ull, 5709405985985032324ull, 14476554152082566449ull, 6351463061309501231ull}}, {{5772569054713711007ull, 11418811971970064648ull, 10506364230455581282ull, 12702926122619002463ull}}, {{12222560255168473171ull, 2283762394394012929ull, 13169319290316847226ull, 2540585224523800492ull}}, {{5998376436627394726ull, 4567524788788025859ull, 7891894506924142836ull, 5081170449047600985ull}}, {{11996752873254789452ull, 9135049577576051718ull, 15783789013848285672ull, 10162340898095201970ull}}, {{2399350574650957891ull, 9205707544999030990ull, 3156757802769657134ull, 2032468179619040394ull}}, {{4798701149301915781ull, 18411415089998061980ull, 6313515605539314268ull, 4064936359238080788ull}}, {{9597402298603831562ull, 18376086106286572344ull, 12627031211078628537ull, 8129872718476161576ull}}, {{9298178089204586959ull, 14743263665483045438ull, 6214755056957636030ull, 1625974543695232315ull}}, {{149612104699622302ull, 11039783257256539261ull, 12429510113915272061ull, 3251949087390464630ull}}, {{299224209399244603ull, 3632822440803526906ull, 6412276154120992507ull, 6503898174780929261ull}}, {{14817240100847490214ull, 11794610932386436350ull, 4971804045566108824ull, 1300779634956185852ull}}, {{11187736127985428811ull, 5142477791063321085ull, 9943608091132217649ull, 2601559269912371704ull}}, {{3928728182261306006ull, 10284955582126642171ull, 1440472108554883682ull, 5203118539824743409ull}}, {{7857456364522612011ull, 2123167090543732726ull, 2880944217109767365ull, 10406237079649486818ull}}, {{16328886531872163695ull, 11492679862334477514ull, 11644235287647684442ull, 2081247415929897363ull}}, {{14211028990034775774ull, 4538615650959403413ull, 4841726501585817269ull, 4162494831859794727ull}}, {{9975313906359999932ull, 9077231301918806827ull, 9683453003171634538ull, 8324989663719589454ull}}, {{16752458040239641280ull, 9194143889867582011ull, 16694085859601968200ull, 1664997932743917890ull}}, {{15058172006769730943ull, 18388287779735164023ull, 14941427645494384784ull, 3329995865487835781ull}}, {{11669599939829910269ull, 18329831485760776431ull, 11436111217279217953ull, 6659991730975671563ull}}, {{9712617617449802701ull, 7355315111894065609ull, 13355268687681574560ull, 1331998346195134312ull}}, {{978491161190053785ull, 14710630223788131219ull, 8263793301653597504ull, 2663996692390268625ull}}, {{1956982322380107569ull, 10974516373866710822ull, 16527586603307195009ull, 5327993384780537250ull}}, {{3913964644760215138ull, 3502288674023870028ull, 14608429132904838403ull, 10655986769561074501ull}}, {{8161490558435863674ull, 15457852993772415298ull, 6611034641322878003ull, 2131197353912214900ull}}, {{16322981116871727348ull, 12468961913835278980ull, 13222069282645756007ull, 4262394707824429800ull}}, {{14199218160033903080ull, 6491179753961006345ull, 7997394491581960399ull, 8524789415648859601ull}}, {{2839843632006780616ull, 1298235950792201269ull, 5288827713058302403ull, 1704957883129771920ull}}, {{5679687264013561232ull, 2596471901584402538ull, 10577655426116604806ull, 3409915766259543840ull}}, {{11359374528027122464ull, 5192943803168805076ull, 2708566778523657996ull, 6819831532519087681ull}}, {{13339921349831155463ull, 8417286390117581661ull, 4231062170446641922ull, 1363966306503817536ull}}, {{8233098625952759309ull, 16834572780235163323ull, 8462124340893283844ull, 2727932613007635072ull}}, {{16466197251905518618ull, 15222401486760775030ull, 16924248681786567689ull, 5455865226015270144ull}}, {{14485650430101485619ull, 11998058899811998445ull, 15401753289863583763ull, 10911730452030540289ull}}, {{10275827715504117771ull, 9778309409446220335ull, 17837745916940358045ull, 2182346090406108057ull}}, {{2104911357298683925ull, 1109874745182889055ull, 17228747760171164475ull, 4364692180812216115ull}}, {{4209822714597367849ull, 2219749490365778110ull, 16010751446632777334ull, 8729384361624432231ull}}, {{841964542919473570ull, 443949898073155622ull, 6891499104068465790ull, 1745876872324886446ull}}, {{1683929085838947140ull, 887899796146311244ull, 13782998208136931580ull, 3491753744649772892ull}}, {{3367858171677894279ull, 1775799592292622488ull, 9119252342564311544ull, 6983507489299545785ull}}, {{8052269263819399503ull, 15112555177426165790ull, 1823850468512862308ull, 1396701497859909157ull}}, {{16104538527638799005ull, 11778366281142779964ull, 3647700937025724617ull, 2793402995719818314ull}}, {{13762332981568046393ull, 5109988488576008313ull, 7295401874051449235ull, 5586805991439636628ull}}, {{9077921889426541170ull, 10219976977152016627ull, 14590803748102898470ull, 11173611982879273256ull}}, {{12883630822111039204ull, 5733344210172313648ull, 6607509564362490017ull, 2234722396575854651ull}}, {{7320517570512526791ull, 11466688420344627297ull, 13215019128724980034ull, 4469444793151709302ull}}, {{14641035141025053582ull, 4486632766979702978ull, 7983294183740408453ull, 8938889586303418605ull}}, {{6617555842946921040ull, 11965372997621671565ull, 1596658836748081690ull, 1787777917260683721ull}}, {{13235111685893842080ull, 5484001921533791514ull, 3193317673496163381ull, 3575555834521367442ull}}, {{8023479298078132543ull, 10968003843067583029ull, 6386635346992326762ull, 7151111669042734884ull}}, {{1604695859615626509ull, 5882949583355426929ull, 16034722328366106645ull, 1430222333808546976ull}}, {{3209391719231253017ull, 11765899166710853858ull, 13622700583022661674ull, 2860444667617093953ull}}, {{6418783438462506034ull, 5085054259712156100ull, 8798657092335771733ull, 5720889335234187907ull}}, {{12837566876925012068ull, 10170108519424312200ull, 17597314184671543466ull, 11441778670468375814ull}}, {{2567513375385002414ull, 2034021703884862440ull, 18276858095901949986ull, 2288355734093675162ull}}, {{5135026750770004827ull, 4068043407769724880ull, 18106972118094348356ull, 4576711468187350325ull}}, {{10270053501540009654ull, 8136086815539449760ull, 17767200162479145096ull, 9153422936374700651ull}}, {{9432708329791822578ull, 9005914992591710598ull, 7242788847237739342ull, 1830684587274940130ull}}, {{418672585874093539ull, 18011829985183421197ull, 14485577694475478684ull, 3661369174549880260ull}}, {{837345171748187077ull, 17576915896657290778ull, 10524411315241405753ull, 7322738349099760521ull}}, {{7546166663833458062ull, 18272778438299099448ull, 5794231077790191473ull, 1464547669819952104ull}}, {{15092333327666916124ull, 18098812802888647280ull, 11588462155580382947ull, 2929095339639904208ull}}, {{11737922581624280632ull, 17750881532067742945ull, 4730180237451214279ull, 5858190679279808417ull}}, {{5029101089539009647ull, 17055018990425934275ull, 9460360474902428559ull, 11716381358559616834ull}}, {{12073866662133532899ull, 14479050242310917824ull, 16649467353948127004ull, 2343276271711923366ull}}, {{5700989250557514182ull, 10511356410912284033ull, 14852190634186702393ull, 4686552543423846733ull}}, {{11401978501115028364ull, 2575968748115016450ull, 11257637194663853171ull, 9373105086847693467ull}}, {{13348442144448736643ull, 11583240193848734259ull, 9630225068416591280ull, 1874621017369538693ull}}, {{8250140215187921669ull, 4719736313987916903ull, 813706063123630945ull, 3749242034739077387ull}}, {{16500280430375843337ull, 9439472627975833806ull, 1627412126247261890ull, 7498484069478154774ull}}, {{3300056086075168668ull, 16645289784562808054ull, 15082877684217093670ull, 1499696813895630954ull}}, {{6600112172150337335ull, 14843835495416064492ull, 11719011294724635725ull, 2999393627791261909ull}}, {{13200224344300674670ull, 11240926917122577368ull, 4991278515739719835ull, 5998787255582523819ull}}, {{7953704614891797724ull, 4035109760535603121ull, 9982557031479439671ull, 11997574511165047638ull}}, {{1590740922978359545ull, 15564417211074761917ull, 13064557850521618903ull, 2399514902233009527ull}}, {{3181481845956719090ull, 12682090348439972218ull, 7682371627333686191ull, 4799029804466019055ull}}, {{6362963691913438179ull, 6917436623170392820ull, 15364743254667372383ull, 9598059608932038110ull}}, {{12340639182608418606ull, 12451533768859809533ull, 3072948650933474476ull, 1919611921786407622ull}}, {{6234534291507285595ull, 6456323464010067451ull, 6145897301866948953ull, 3839223843572815244ull}}, {{12469068583014571190ull, 12912646928020134902ull, 12291794603733897906ull, 7678447687145630488ull}}, {{6183162531344824562ull, 17339924644571668273ull, 13526405364972510550ull, 1535689537429126097ull}}, {{12366325062689649123ull, 16233105215433784930ull, 8606066656235469485ull, 3071379074858252195ull}}, {{6285906051669746629ull, 14019466357158018245ull, 17212133312470938971ull, 6142758149716504390ull}}, {{12571812103339493257ull, 9592188640606484874ull, 15977522551232326327ull, 12285516299433008781ull}}, {{9893060050151719298ull, 12986484172347027944ull, 6884853324988375588ull, 2457103259886601756ull}}, {{1339376026593886980ull, 7526224270984504273ull, 13769706649976751177ull, 4914206519773203512ull}}, {{2678752053187773959ull, 15052448541969008546ull, 9092669226243950738ull, 9828413039546407025ull}}, {{15293145669605196085ull, 14078536152619532678ull, 1818533845248790147ull, 1965682607909281405ull}}, {{12139547265500840554ull, 9710328231529513741ull, 3637067690497580295ull, 3931365215818562810ull}}, {{5832350457292129491ull, 973912389349475867ull, 7274135380995160591ull, 7862730431637125620ull}}, {{12234516535684156868ull, 3884131292611805496ull, 1454827076199032118ull, 1572546086327425124ull}}, {{6022288997658762120ull, 7768262585223610993ull, 2909654152398064236ull, 3145092172654850248ull}}, {{12044577995317524239ull, 15536525170447221986ull, 5819308304796128472ull, 6290184345309700496ull}}, {{5642411916925496862ull, 12626306267184892357ull, 11638616609592256945ull, 12580368690619400992ull}}, {{15885877642352740666ull, 9903958882920799117ull, 9706420951402272035ull, 2516073738123880198ull}}, {{13325011210995929715ull, 1361173692132046619ull, 966097829094992455ull, 5032147476247760397ull}}, {{8203278348282307813ull, 2722347384264093239ull, 1932195658189984910ull, 10064294952495520794ull}}, {{12708702113882192533ull, 15301864735820459940ull, 15143834390605638274ull, 2012858990499104158ull}}, {{6970660154054833449ull, 12156985397931368265ull, 11840924707501724933ull, 4025717980998208317ull}}, {{13941320308109666897ull, 5867226722153184914ull, 5235105341293898251ull, 8051435961996416635ull}}, {{2788264061621933380ull, 4862794159172547306ull, 1047021068258779650ull, 1610287192399283327ull}}, {{5576528123243866759ull, 9725588318345094612ull, 2094042136517559300ull, 3220574384798566654ull}}, {{11153056246487733517ull, 1004432562980637608ull, 4188084273035118601ull, 6441148769597133308ull}}, {{9609308878781367350ull, 14958281771563768814ull, 11905663298832754689ull, 1288229753919426661ull}}, {{771873683853183084ull, 11469819469417986013ull, 5364582523955957763ull, 2576459507838853323ull}}, {{1543747367706366168ull, 4492894865126420410ull, 10729165047911915527ull, 5152919015677706646ull}}, {{3087494735412732335ull, 8985789730252840820ull, 3011586022114279438ull, 10305838031355413293ull}}, {{4306847761824456791ull, 5486506760792478487ull, 11670363648648586857ull, 2061167606271082658ull}}, {{8613695523648913581ull, 10973013521584956974ull, 4893983223587622098ull, 4122335212542165317ull}}, {{17227391047297827161ull, 3499282969460362332ull, 9787966447175244197ull, 8244670425084330634ull}}, {{14513524653685296402ull, 4389205408633982789ull, 16714988548402690132ull, 1648934085016866126ull}}, {{10580305233661041188ull, 8778410817267965579ull, 14983233023095828648ull, 3297868170033732253ull}}, {{2713866393612530759ull, 17556821634535931159ull, 11519721972482105680ull, 6595736340067464507ull}}, {{4232122093464416475ull, 10890061956391006878ull, 9682642023980241782ull, 1319147268013492901ull}}, {{8464244186928832950ull, 3333379839072462140ull, 918539974250931949ull, 2638294536026985803ull}}, {{16928488373857665900ull, 6666759678144924280ull, 1837079948501863898ull, 5276589072053971606ull}}, {{15410232674005780184ull, 13333519356289848561ull, 3674159897003727796ull, 10553178144107943212ull}}, {{17839441793768797330ull, 13734750315483700681ull, 8113529608884566205ull, 2110635628821588642ull}}, {{17232139513828043043ull, 9022756557257849747ull, 16227059217769132411ull, 4221271257643177284ull}}, {{16017534953946534470ull, 18045513114515699495ull, 14007374361828713206ull, 8442542515286354569ull}}, {{3203506990789306894ull, 3609102622903139899ull, 17558870131333383934ull, 1688508503057270913ull}}, {{6407013981578613788ull, 7218205245806279798ull, 16670996188957216252ull, 3377017006114541827ull}}, {{12814027963157227576ull, 14436410491612559596ull, 14895248304204880888ull, 6754034012229083655ull}}, {{17320200851599086808ull, 13955328542548242888ull, 2979049660840976177ull, 1350806802445816731ull}}, {{16193657629488622000ull, 9463913011386934161ull, 5958099321681952355ull, 2701613604891633462ull}}, {{13940571185267692384ull, 481081949064316707ull, 11916198643363904711ull, 5403227209783266924ull}}, {{9434398296825833152ull, 962163898128633415ull, 5385653213018257806ull, 10806454419566533849ull}}, {{1886879659365166631ull, 192432779625726683ull, 15834525901571292854ull, 2161290883913306769ull}}, {{3773759318730333261ull, 384865559251453366ull, 13222307729433034092ull, 4322581767826613539ull}}, {{7547518637460666522ull, 769731118502906732ull, 7997871385156516568ull, 8645163535653227079ull}}, {{16266898986459774598ull, 7532643853184401992ull, 16356969535998944606ull, 1729032707130645415ull}}, {{14087053899209997579ull, 15065287706368803985ull, 14267194998288337596ull, 3458065414261290831ull}}, {{9727363724710443541ull, 11683831339028056355ull, 10087645922867123577ull, 6916130828522581663ull}}, {{1945472744942088709ull, 2336766267805611271ull, 13085575628799155685ull, 1383226165704516332ull}}, {{3890945489884177417ull, 4673532535611222542ull, 7724407183888759754ull, 2766452331409032665ull}}, {{7781890979768354833ull, 9347065071222445084ull, 15448814367777519508ull, 5532904662818065330ull}}, {{15563781959536709665ull, 247386068735338552ull, 12450884661845487401ull, 11065809325636130661ull}}, {{17870151650874983226ull, 7428174843230888356ull, 6179525747111007803ull, 2213161865127226132ull}}, {{17293559228040414836ull, 14856349686461776713ull, 12359051494222015606ull, 4426323730254452264ull}}, {{16140374382371278055ull, 11265955299214001811ull, 6271358914734479597ull, 8852647460508904529ull}}, {{10606772505958076258ull, 5942539874584710685ull, 16011667041914537212ull, 1770529492101780905ull}}, {{2766800938206600899ull, 11885079749169421371ull, 13576590010119522808ull, 3541058984203561811ull}}, {{5533601876413201798ull, 5323415424629291126ull, 8706435946529494001ull, 7082117968407123623ull}}, {{1106720375282640360ull, 15822078343893499518ull, 12809333633531629769ull, 1416423593681424724ull}}, {{2213440750565280719ull, 13197412614077447420ull, 7171923193353707923ull, 2832847187362849449ull}}, {{4426881501130561438ull, 7948081154445343224ull, 14343846386707415847ull, 5665694374725698898ull}}, {{8853763002261122876ull, 15896162308890686448ull, 10240948699705280078ull, 11331388749451397797ull}}, {{12838799044677955545ull, 3179232461778137289ull, 9426887369424876662ull, 2266277749890279559ull}}, {{7230854015646359474ull, 6358464923556274579ull, 407030665140201708ull, 4532555499780559119ull}}, {{14461708031292718948ull, 12716929847112549158ull, 814061330280403416ull, 9065110999561118238ull}}, {{10271039235742364436ull, 17300781228390151124ull, 11230858710281811652ull, 1813022199912223647ull}}, {{2095334397775177256ull, 16154818383070750633ull, 4014973346854071689ull, 3626044399824447295ull}}, {{4190668795550354512ull, 13862892692431949650ull, 8029946693708143379ull, 7252088799648894590ull}}, {{15595529018077712196ull, 17529973797454031222ull, 1605989338741628675ull, 1450417759929778918ull}}, {{12744313962445872775ull, 16613203521198510829ull, 3211978677483257351ull, 2900835519859557836ull}}, {{7041883851182193933ull, 14779662968687470043ull, 6423957354966514703ull, 5801671039719115672ull}}, {{14083767702364387865ull, 11112581863665388470ull, 12847914709933029407ull, 11603342079438231344ull}}, {{6506102355214787897ull, 5911865187474988017ull, 17326978200954247174ull, 2320668415887646268ull}}, {{13012204710429575793ull, 11823730374949976034ull, 16207212328198942732ull, 4641336831775292537ull}}, {{7577665347149599969ull, 5200716676190400453ull, 13967680582688333849ull, 9282673663550585075ull}}, {{8894230698913740641ull, 15797538594205721383ull, 2793536116537666769ull, 1856534732710117015ull}}, {{17788461397827481281ull, 13148333114701891150ull, 5587072233075333539ull, 3713069465420234030ull}}, {{17130178721945410945ull, 7849922155694230685ull, 11174144466150667079ull, 7426138930840468060ull}}, {{18183431003356723482ull, 16327379690106487429ull, 2234828893230133415ull, 1485227786168093612ull}}, {{17920117933003895348ull, 14208015306503423243ull, 4469657786460266831ull, 2970455572336187224ull}}, {{17393491792298239079ull, 9969286539297294871ull, 8939315572920533663ull, 5940911144672374448ull}}, {{16340239510886926542ull, 1491829004885038127ull, 17878631145841067327ull, 11881822289344748896ull}}, {{3268047902177385309ull, 11366412245202738595ull, 7265075043910123788ull, 2376364457868949779ull}}, {{6536095804354770617ull, 4286080416695925574ull, 14530150087820247577ull, 4752728915737899558ull}}, {{13072191608709541233ull, 8572160833391851148ull, 10613556101930943538ull, 9505457831475799117ull}}, {{13682484765967639217ull, 1714432166678370229ull, 9501408849870009354ull, 1901091566295159823ull}}, {{8918225458225726817ull, 3428864333356740459ull, 556073626030467092ull, 3802183132590319647ull}}, {{17836450916451453633ull, 6857728666713480918ull, 1112147252060934184ull, 7604366265180639294ull}}, {{7256638998032201050ull, 12439592177568427153ull, 14979824709379828129ull, 1520873253036127858ull}}, {{14513277996064402100ull, 6432440281427302690ull, 11512905345050104643ull, 3041746506072255717ull}}, {{10579811918419252584ull, 12864880562854605381ull, 4579066616390657670ull, 6083493012144511435ull}}, {{2712879763128953551ull, 7283017051999659147ull, 9158133232781315341ull, 12166986024289022870ull}}, {{11610622396851521680ull, 5145952225141842152ull, 1831626646556263068ull, 2433397204857804574ull}}, {{4774500719993491744ull, 10291904450283684305ull, 3663253293112526136ull, 4866794409715609148ull}}, {{9549001439986983487ull, 2137064826857816994ull, 7326506586225052273ull, 9733588819431218296ull}}, {{12977846732223127667ull, 15184808224339204691ull, 5154650131986920777ull, 1946717763886243659ull}}, {{7508949390736703718ull, 11922872374968857767ull, 10309300263973841555ull, 3893435527772487318ull}}, {{15017898781473407436ull, 5399000676228163918ull, 2171856454238131495ull, 7786871055544974637ull}}, {{3003579756294681488ull, 8458497764729453430ull, 7813068920331446945ull, 1557374211108994927ull}}, {{6007159512589362975ull, 16916995529458906860ull, 15626137840662893890ull, 3114748422217989854ull}}, {{12014319025178725949ull, 15387246985208262104ull, 12805531607616236165ull, 6229496844435979709ull}}, {{5581893976647900281ull, 12327749896706972593ull, 7164319141522920715ull, 12458993688871959419ull}}, {{8495076424813400703ull, 17222945238309035811ull, 16190259087272225435ull, 2491798737774391883ull}}, {{16990152849626801406ull, 15999146402908520006ull, 13933774100834899255ull, 4983597475548783767ull}}, {{15533561625544051195ull, 13551548732107488397ull, 9420804127960246895ull, 9967194951097567535ull}}, {{10485409954592630886ull, 2710309746421497679ull, 1884160825592049379ull, 1993438990219513507ull}}, {{2524075835475710155ull, 5420619492842995359ull, 3768321651184098758ull, 3986877980439027014ull}}, {{5048151670951420310ull, 10841238985685990718ull, 7536643302368197516ull, 7973755960878054028ull}}, {{8388327963674104709ull, 16925643056104839436ull, 12575375104699370472ull, 1594751192175610805ull}}, {{16776655927348209417ull, 15404542038500127256ull, 6704006135689189329ull, 3189502384351221611ull}}, {{15106567780986867217ull, 12362340003290702897ull, 13408012271378378659ull, 6379004768702443222ull}}, {{11766391488264182818ull, 6277935932871854179ull, 8369280469047205703ull, 12758009537404886445ull}}, {{9731975927136657210ull, 12323633630800101805ull, 1673856093809441140ull, 2551601907480977289ull}}, {{1017207780563762804ull, 6200523187890651995ull, 3347712187618882281ull, 5103203814961954578ull}}, {{2034415561127525608ull, 12401046375781303990ull, 6695424375237764562ull, 10206407629923909156ull}}, {{11474929556451236092ull, 13548255719381991767ull, 5028433689789463235ull, 2041281525984781831ull}}, {{4503115039192920567ull, 8649767365054431919ull, 10056867379578926471ull, 4082563051969563662ull}}, {{9006230078385841133ull, 17299534730108863838ull, 1666990685448301326ull, 8165126103939127325ull}}, {{16558641274644809520ull, 7149255760763683090ull, 333398137089660265ull, 1633025220787825465ull}}, {{14670538475580067423ull, 14298511521527366181ull, 666796274179320530ull, 3266050441575650930ull}}, {{10894332877450583230ull, 10150278969345180747ull, 1333592548358641061ull, 6532100883151301860ull}}, {{13246913019715847616ull, 5719404608610946472ull, 266718509671728212ull, 1306420176630260372ull}}, {{8047081965722143615ull, 11438809217221892945ull, 533437019343456424ull, 2612840353260520744ull}}, {{16094163931444287230ull, 4430874360734234274ull, 1066874038686912849ull, 5225680706521041488ull}}, {{13741583789179022844ull, 8861748721468468549ull, 2133748077373825698ull, 10451361413042082976ull}}, {{13816363202061535539ull, 16529745003261335002ull, 4116098430216675462ull, 2090272282608416595ull}}, {{9185982330413519461ull, 14612745932813118389ull, 8232196860433350925ull, 4180544565216833190ull}}, {{18371964660827038922ull, 10778747791916685162ull, 16464393720866701851ull, 8361089130433666380ull}}, {{14742439376391138754ull, 5845098373125247355ull, 3292878744173340370ull, 1672217826086733276ull}}, {{11038134679072725892ull, 11690196746250494711ull, 6585757488346680740ull, 3344435652173466552ull}}, {{3629525284435900168ull, 4933649418791437807ull, 13171514976693361481ull, 6688871304346933104ull}}, {{8104602686371000680ull, 986729883758287561ull, 17391698254306313589ull, 1337774260869386620ull}}, {{16209205372742001360ull, 1973459767516575122ull, 16336652434903075562ull, 2675548521738773241ull}}, {{13971666671774451104ull, 3946919535033150245ull, 14226560796096599508ull, 5351097043477546483ull}}, {{9496589269839350592ull, 7893839070066300491ull, 10006377518483647400ull, 10702194086955092967ull}}, {{12967364298193601088ull, 8957465443497080744ull, 9379973133180550126ull, 2140438817391018593ull}}, {{7487984522677650560ull, 17914930886994161489ull, 313202192651548636ull, 4280877634782037187ull}}, {{14975969045355301120ull, 17383117700278771362ull, 626404385303097273ull, 8561755269564074374ull}}, {{17752589068038701517ull, 10855321169539574918ull, 14882676136028260747ull, 1712351053912814874ull}}, {{17058434062367851418ull, 3263898265369598221ull, 11318608198346969879ull, 3424702107825629749ull}}, {{15670124051026151219ull, 6527796530739196443ull, 4190472322984388142ull, 6849404215651259499ull}}, {{17891420069172871537ull, 4994908120889749611ull, 15595489723564518921ull, 1369880843130251899ull}}, {{17336096064636191458ull, 9989816241779499223ull, 12744235373419486226ull, 2739761686260503799ull}}, {{16225448055562831299ull, 1532888409849446831ull, 7041726673129420837ull, 5479523372521007599ull}}, {{14004152037416110981ull, 3065776819698893663ull, 14083453346258841674ull, 10959046745042015198ull}}, {{2800830407483222197ull, 7991852993423599379ull, 13884737113477499304ull, 2191809349008403039ull}}, {{5601660814966444393ull, 15983705986847198758ull, 9322730153245446992ull, 4383618698016806079ull}}, {{11203321629932888785ull, 13520667899984845900ull, 198716232781342369ull, 8767237396033612159ull}}, {{13308710770212308727ull, 13772180024222700149ull, 14797138505523909766ull, 1753447479206722431ull}}, {{8170677466715065837ull, 9097615974735848683ull, 11147532937338267917ull, 3506894958413444863ull}}, {{16341354933430131674ull, 18195231949471697366ull, 3848321800966984218ull, 7013789916826889727ull}}, {{6957619801427936658ull, 3639046389894339473ull, 8148361989677217490ull, 1402757983365377945ull}}, {{13915239602855873316ull, 7278092779788678946ull, 16296723979354434980ull, 2805515966730755890ull}}, {{9383735132002195016ull, 14556185559577357893ull, 14146703884999318344ull, 5611031933461511781ull}}, {{320726190294838416ull, 10665627045445164171ull, 9846663696289085073ull, 11222063866923023563ull}}, {{7442842867542788330ull, 5822474223830943157ull, 13037379183483547984ull, 2244412773384604712ull}}, {{14885685735085576660ull, 11644948447661886314ull, 7628014293257544352ull, 4488825546769209425ull}}, {{11324627396461601703ull, 4843152821614221013ull, 15256028586515088705ull, 8977651093538418850ull}}, {{13332971923518051311ull, 968630564322844202ull, 3051205717303017741ull, 1795530218707683770ull}}, {{8219199773326551005ull, 1937261128645688405ull, 6102411434606035482ull, 3591060437415367540ull}}, {{16438399546653102009ull, 3874522257291376810ull, 12204822869212070964ull, 7182120874830735080ull}}, {{18045075168298261695ull, 15532299710425916654ull, 2440964573842414192ull, 1436424174966147016ull}}, {{17643406262886971773ull, 12617855347142281693ull, 4881929147684828385ull, 2872848349932294032ull}}, {{16840068452064391930ull, 6788966620575011771ull, 9763858295369656771ull, 5745696699864588064ull}}, {{15233392830419232244ull, 13577933241150023543ull, 1080972517029761926ull, 11491393399729176129ull}}, {{14114725010309577419ull, 2715586648230004708ull, 14973589762373593678ull, 2298278679945835225ull}}, {{9782705946909603221ull, 5431173296460009417ull, 11500435451037635740ull, 4596557359891670451ull}}, {{1118667820109654825ull, 10862346592920018835ull, 4554126828365719864ull, 9193114719783340903ull}}, {{7602431193505751612ull, 9551166948067824413ull, 11978871809898874942ull, 1838622943956668180ull}}, {{15204862387011503223ull, 655589822426097210ull, 5510999546088198269ull, 3677245887913336361ull}}, {{11962980700313454830ull, 1311179644852194421ull, 11021999092176396538ull, 7354491775826672722ull}}, {{6081944954804601290ull, 262235928970438884ull, 9583097447919099954ull, 1470898355165334544ull}}, {{12163889909609202579ull, 524471857940877768ull, 719450822128648292ull, 2941796710330669089ull}}, {{5881035745508853541ull, 1048943715881755537ull, 1438901644257296584ull, 5883593420661338178ull}}, {{11762071491017707081ull, 2097887431763511074ull, 2877803288514593168ull, 11767186841322676356ull}}, {{13420460742429272386ull, 15176972745320343507ull, 4264909472444828956ull, 2353437368264535271ull}}, {{8394177411148993156ull, 11907201416931135399ull, 8529818944889657913ull, 4706874736529070542ull}}, {{16788354822297986312ull, 5367658760152719182ull, 17059637889779315827ull, 9413749473058141084ull}}, {{14425717408685328232ull, 4762880566772454159ull, 18169322836923504458ull, 1882749894611628216ull}}, {{10404690743661104848ull, 9525761133544908319ull, 17891901600137457300ull, 3765499789223256433ull}}, {{2362637413612658080ull, 604778193380265023ull, 17337059126565362985ull, 7530999578446512867ull}}, {{472527482722531616ull, 7499653268159873651ull, 10846109454796893243ull, 1506199915689302573ull}}, {{945054965445063232ull, 14999306536319747302ull, 3245474835884234870ull, 3012399831378605147ull}}, {{1890109930890126464ull, 11551868998929942988ull, 6490949671768469741ull, 6024799662757210294ull}}, {{3780219861780252927ull, 4656993924150334360ull, 12981899343536939483ull, 12049599325514420588ull}}, {{4445392787097960909ull, 4620747599571977195ull, 13664426312933118866ull, 2409919865102884117ull}}, {{8890785574195921818ull, 9241495199143954390ull, 8882108552156686116ull, 4819839730205768235ull}}, {{17781571148391843635ull, 36246324578357164ull, 17764217104313372233ull, 9639679460411536470ull}}, {{10935011859162189374ull, 11075295709141402402ull, 3552843420862674446ull, 1927935892082307294ull}}, {{3423279644614827131ull, 3703847344573253189ull, 7105686841725348893ull, 3855871784164614588ull}}, {{6846559289229654262ull, 7407694689146506378ull, 14211373683450697786ull, 7711743568329229176ull}}, {{1369311857845930853ull, 8860236567313121922ull, 6531623551432049880ull, 1542348713665845835ull}}, {{2738623715691861705ull, 17720473134626243844ull, 13063247102864099760ull, 3084697427331691670ull}}, {{5477247431383723409ull, 16994202195542936072ull, 7679750132018647905ull, 6169394854663383341ull}}, {{10954494862767446818ull, 15541660317376320528ull, 15359500264037295811ull, 12338789709326766682ull}}, {{5880247787295399687ull, 14176378507700995075ull, 10450597682291279808ull, 2467757941865353336ull}}, {{11760495574590799374ull, 9906012941692438534ull, 2454451290873008001ull, 4935515883730706673ull}}, {{5074247075472047131ull, 1365281809675325453ull, 4908902581746016003ull, 9871031767461413346ull}}, {{8393547044578230073ull, 15030451620902706383ull, 4671129331091113523ull, 1974206353492282669ull}}, {{16787094089156460146ull, 11614159168095861150ull, 9342258662182227047ull, 3948412706984565338ull}}, {{15127444104603368675ull, 4781574262482170685ull, 237773250654902479ull, 7896825413969130677ull}}, {{6714837635662584059ull, 4645663667238344460ull, 7426252279614801142ull, 1579365082793826135ull}}, {{13429675271325168117ull, 9291327334476688920ull, 14852504559229602284ull, 3158730165587652270ull}}, {{8412606468940784617ull, 135910595243826225ull, 11258265044749652953ull, 6317460331175304541ull}}, {{16825212937881569233ull, 271821190487652450ull, 4069786015789754290ull, 12634920662350609083ull}}, {{14433089031802044817ull, 11122410682323261459ull, 11882003647383681827ull, 2526984132470121816ull}}, {{10419433989894538017ull, 3798077290936971303ull, 5317263221057812039ull, 5053968264940243633ull}}, {{2392123906079524417ull, 7596154581873942607ull, 10634526442115624078ull, 10107936529880487266ull}}, {{4167773595957815207ull, 16276626175342429814ull, 5816254103165035138ull, 2021587305976097453ull}}, {{8335547191915630413ull, 14106508276975308012ull, 11632508206330070277ull, 4043174611952194906ull}}, {{16671094383831260826ull, 9766272480241064408ull, 4818272338950588939ull, 8086349223904389813ull}}, {{3334218876766252166ull, 9331952125532033528ull, 12031700912015848757ull, 1617269844780877962ull}}, {{6668437753532504331ull, 217160177354515440ull, 5616657750322145899ull, 3234539689561755925ull}}, {{13336875507065008661ull, 434320354709030880ull, 11233315500644291798ull, 6469079379123511850ull}}, {{13735421545638732702ull, 11154910515167537145ull, 2246663100128858359ull, 1293815875824702370ull}}, {{9024099017567913788ull, 3863076956625522675ull, 4493326200257716719ull, 2587631751649404740ull}}, {{18048198035135827576ull, 7726153913251045350ull, 8986652400515433438ull, 5175263503298809480ull}}, {{17649651996562103535ull, 15452307826502090701ull, 17973304801030866876ull, 10350527006597618960ull}}, {{10908628028796241354ull, 6779810380042328463ull, 3594660960206173375ull, 2070105401319523792ull}}, {{3370511983882931091ull, 13559620760084656927ull, 7189321920412346750ull, 4140210802639047584ull}}, {{6741023967765862181ull, 8672497446459762238ull, 14378643840824693501ull, 8280421605278095168ull}}, {{8726902423036993083ull, 16491894748259593740ull, 13943775212390669669ull, 1656084321055619033ull}}, {{17453804846073986166ull, 14537045422809635864ull, 9440806351071787723ull, 3312168642111238067ull}}, {{16460865618438420715ull, 10627346771909720113ull, 434868628434023831ull, 6624337284222476135ull}}, {{18049568382655325436ull, 5814818169123854345ull, 86973725686804766ull, 1324867456844495227ull}}, {{17652392691601099256ull, 11629636338247708691ull, 173947451373609532ull, 2649734913688990454ull}}, {{16858041309492646895ull, 4812528602785865767ull, 347894902747219065ull, 5299469827377980908ull}}, {{15269338545275742174ull, 9625057205571731535ull, 695789805494438130ull, 10598939654755961816ull}}, {{6743216523797058758ull, 5614360255856256630ull, 3828506775840797949ull, 2119787930951192363ull}}, {{13486433047594117516ull, 11228720511712513260ull, 7657013551681595898ull, 4239575861902384726ull}}, {{8526122021478683416ull, 4010696949715474905ull, 15314027103363191797ull, 8479151723804769452ull}}, {{16462619663263377976ull, 15559534648910736273ull, 10441503050156459005ull, 1695830344760953890ull}}, {{14478495252817204336ull, 12672325224111920931ull, 2436262026603366395ull, 3391660689521907781ull}}, {{10510246431924857056ull, 6897906374514290247ull, 4872524053206732791ull, 6783321379043815562ull}}, {{2102049286384971412ull, 12447627719128589019ull, 8353202440125167204ull, 1356664275808763112ull}}, {{4204098572769942823ull, 6448511364547626422ull, 16706404880250334409ull, 2713328551617526224ull}}, {{8408197145539885645ull, 12897022729095252844ull, 14966065686791117202ull, 5426657103235052449ull}}, {{16816394291079771289ull, 7347301384480954072ull, 11485387299872682789ull, 10853314206470104899ull}}, {{3363278858215954258ull, 12537506721121921784ull, 17054472718942177850ull, 2170662841294020979ull}}, {{6726557716431908516ull, 6628269368534291952ull, 15662201364174804085ull, 4341325682588041959ull}}, {{13453115432863817032ull, 13256538737068583904ull, 12877658654640056554ull, 8682651365176083919ull}}, {{10069320716056584053ull, 13719354191639447750ull, 17332926989895652603ull, 1736530273035216783ull}}, {{1691897358403616490ull, 8991964309569343885ull, 16219109906081753591ull, 3473060546070433567ull}}, {{3383794716807232979ull, 17983928619138687770ull, 13991475738453955566ull, 6946121092140867135ull}}, {{4366107758103356919ull, 7286134538569647877ull, 2798295147690791113ull, 1389224218428173427ull}}, {{8732215516206713838ull, 14572269077139295754ull, 5596590295381582226ull, 2778448436856346854ull}}, {{17464431032413427676ull, 10697794080569039892ull, 11193180590763164453ull, 5556896873712693708ull}}, {{16482117991117303736ull, 2948844087428528169ull, 3939617107816777291ull, 11113793747425387417ull}}, {{10675121227707281394ull, 11657815261711436603ull, 8166621051047176104ull, 2222758749485077483ull}}, {{2903498381705011171ull, 4868886449713321591ull, 16333242102094352209ull, 4445517498970154966ull}}, {{5806996763410022342ull, 9737772899426643182ull, 14219740130479152802ull, 8891034997940309933ull}}, {{8540096982165825115ull, 1947554579885328636ull, 13911994470321561530ull, 1778206999588061986ull}}, {{17080193964331650230ull, 3895109159770657272ull, 9377244866933571444ull, 3556413999176123973ull}}, {{15713643854953748843ull, 7790218319541314545ull, 307745660157591272ull, 7112827998352247947ull}}, {{17900124029958391062ull, 16315438922875904201ull, 7440246761515338900ull, 1422565599670449589ull}}, {{17353503986207230507ull, 14184133772042256787ull, 14880493523030677801ull, 2845131199340899178ull}}, {{16260263898704909398ull, 9921523470374961959ull, 11314242972351803987ull, 5690262398681798357ull}}, {{14073783723700267180ull, 1396302867040372303ull, 4181741870994056359ull, 11380524797363596715ull}}, {{10193454374223874083ull, 15036655832375715753ull, 836348374198811271ull, 2276104959472719343ull}}, {{1940164674738196549ull, 11626567591041879891ull, 1672696748397622543ull, 4552209918945438686ull}}, {{3880329349476393097ull, 4806391108374208166ull, 3345393496795245087ull, 9104419837890877372ull}}, {{776065869895278620ull, 15718673480642482926ull, 8047776328842869663ull, 1820883967578175474ull}}, {{1552131739790557239ull, 12990602887575414236ull, 16095552657685739327ull, 3641767935156350948ull}}, {{3104263479581114478ull, 7534461701441276856ull, 13744361241661927039ull, 7283535870312701897ull}}, {{7999550325400043542ull, 5196241155030165694ull, 10127569877816206054ull, 1456707174062540379ull}}, {{15999100650800087084ull, 10392482310060331388ull, 1808395681922860492ull, 2913414348125080759ull}}, {{13551457227890622552ull, 2338220546411111161ull, 3616791363845720985ull, 5826828696250161518ull}}, {{8656170382071693488ull, 4676441092822222323ull, 7233582727691441970ull, 11653657392500323036ull}}, {{16488629335381979991ull, 4624637033306354787ull, 5136065360280198717ull, 2330731478500064607ull}}, {{14530514597054408365ull, 9249274066612709575ull, 10272130720560397434ull, 4661462957000129214ull}}, {{10614285120399265113ull, 51804059515867535ull, 2097517367411243253ull, 9322925914000258429ull}}, {{9501554653563673669ull, 7389058441386994153ull, 15176898732449889943ull, 1864585182800051685ull}}, {{556365233417795722ull, 14778116882773988307ull, 11907053391190228270ull, 3729170365600103371ull}}, {{1112730466835591444ull, 11109489691838424998ull, 5367362708670904925ull, 7458340731200206743ull}}, {{3911894908109028612ull, 13289944382593415969ull, 12141518985959911954ull, 1491668146240041348ull}}, {{7823789816218057224ull, 8133144691477280322ull, 5836293898210272293ull, 2983336292480082697ull}}, {{15647579632436114448ull, 16266289382954560644ull, 11672587796420544586ull, 5966672584960165394ull}}, {{12848415191162677280ull, 14085834692199569673ull, 4898431519131537557ull, 11933345169920330789ull}}, {{17327078297200176749ull, 6506515753181824257ull, 15737081562793948804ull, 2386669033984066157ull}}, {{16207412520690801882ull, 13013031506363648515ull, 13027419051878345992ull, 4773338067968132315ull}}, {{13968080967672052148ull, 7579318939017745415ull, 7608094030047140369ull, 9546676135936264631ull}}, {{2793616193534410430ull, 1515863787803549083ull, 5210967620751338397ull, 1909335227187252926ull}}, {{5587232387068820859ull, 3031727575607098166ull, 10421935241502676794ull, 3818670454374505852ull}}, {{11174464774137641718ull, 6063455151214196332ull, 2397126409295801972ull, 7637340908749011705ull}}, {{16992288213795169637ull, 8591388659726659912ull, 479425281859160394ull, 1527468181749802341ull}}, {{15537832353880787657ull, 17182777319453319825ull, 958850563718320788ull, 3054936363499604682ull}}, {{12628920634052023698ull, 15918810565197088035ull, 1917701127436641577ull, 6109872726999209364ull}}, {{6811097194394495779ull, 13390877056684624455ull, 3835402254873283155ull, 12219745453998418728ull}}, {{12430265883104630126ull, 13746221855562655860ull, 11835126895200387600ull, 2443949090799683745ull}}, {{6413787692499708635ull, 9045699637415760105ull, 5223509716691223585ull, 4887898181599367491ull}}, {{12827575384999417270ull, 18091399274831520210ull, 10447019433382447170ull, 9775796363198734982ull}}, {{9944212706483704101ull, 10996977484450124688ull, 9468101516160310080ull, 1955159272639746996ull}}, {{1441681339257856585ull, 3547210895190697761ull, 489458958611068545ull, 3910318545279493993ull}}, {{2883362678515713170ull, 7094421790381395522ull, 978917917222137090ull, 7820637090558987986ull}}, {{11644718979928873604ull, 5108233172818189427ull, 3885132398186337741ull, 1564127418111797597ull}}, {{4842693886148195591ull, 10216466345636378855ull, 7770264796372675482ull, 3128254836223595194ull}}, {{9685387772296391182ull, 1986188617563206094ull, 15540529592745350965ull, 6256509672447190388ull}}, {{924031470883230748ull, 3972377235126412189ull, 12634315111781150314ull, 12513019344894380777ull}}, {{184806294176646150ull, 4483824261767192761ull, 9905560651840050709ull, 2502603868978876155ull}}, {{369612588353292299ull, 8967648523534385522ull, 1364377229970549802ull, 5005207737957752311ull}}, {{739225176706584598ull, 17935297047068771044ull, 2728754459941099604ull, 10010415475915504622ull}}, {{147845035341316920ull, 7276408224155664532ull, 7924448521472040567ull, 2002083095183100924ull}}, {{295690070682633840ull, 14552816448311329064ull, 15848897042944081134ull, 4004166190366201848ull}}, {{591380141365267679ull, 10658888822913106512ull, 13251050012178610653ull, 8008332380732403697ull}}, {{7496973657756874183ull, 2131777764582621302ull, 10028907631919542777ull, 1601666476146480739ull}}, {{14993947315513748365ull, 4263555529165242604ull, 1611071190129533938ull, 3203332952292961479ull}}, {{11541150557317945113ull, 8527111058330485209ull, 3222142380259067876ull, 6406665904585922958ull}}, {{13376276555689319993ull, 16462817470633738334ull, 11712474920277544544ull, 1281333180917184591ull}}, {{8305809037669088369ull, 14478890867557925053ull, 4978205766845537473ull, 2562666361834369183ull}}, {{16611618075338176737ull, 10511037661406298490ull, 9956411533691074947ull, 5125332723668738366ull}}, {{14776492076966801857ull, 2575331249103045365ull, 1466078993672598279ull, 10250665447337476733ull}}, {{10333996044877181018ull, 7893763879304429719ull, 11361262242960250625ull, 2050133089467495346ull}}, {{2221248016044810420ull, 15787527758608859439ull, 4275780412210949634ull, 4100266178934990693ull}}, {{4442496032089620839ull, 13128311443508167262ull, 8551560824421899269ull, 8200532357869981386ull}}, {{8267196835901744815ull, 2625662288701633452ull, 5399660979626290177ull, 1640106471573996277ull}}, {{16534393671803489629ull, 5251324577403266904ull, 10799321959252580354ull, 3280212943147992554ull}}, {{14622043269897427641ull, 10502649154806533809ull, 3151899844795609092ull, 6560425886295985109ull}}, {{2924408653979485529ull, 5789878645703217085ull, 15387775227926763111ull, 1312085177259197021ull}}, {{5848817307958971057ull, 11579757291406434170ull, 12328806382143974606ull, 2624170354518394043ull}}, {{11697634615917942113ull, 4712770509103316724ull, 6210868690578397597ull, 5248340709036788087ull}}, {{4948525158126332609ull, 9425541018206633449ull, 12421737381156795194ull, 10496681418073576174ull}}, {{8368402661109087169ull, 12953154647867057659ull, 17241742735199000331ull, 2099336283614715234ull}}, {{16736805322218174337ull, 7459565222024563702ull, 16036741396688449047ull, 4198672567229430469ull}}, {{15026866570726797057ull, 14919130444049127405ull, 13626738719667346478ull, 8397345134458860939ull}}, {{10384070943629180058ull, 10362523718293646127ull, 17482743002901110588ull, 1679469026891772187ull}}, {{2321397813548808500ull, 2278303362877740639ull, 16518741932092669561ull, 3358938053783544375ull}}, {{4642795627097617000ull, 4556606725755481278ull, 14590739790475787506ull, 6717876107567088751ull}}, {{928559125419523400ull, 8290018974634916902ull, 6607496772837067824ull, 1343575221513417750ull}}, {{1857118250839046800ull, 16580037949269833804ull, 13214993545674135648ull, 2687150443026835500ull}}, {{3714236501678093600ull, 14713331824830115992ull, 7983243017638719681ull, 5374300886053671001ull}}, {{7428473003356187199ull, 10979919575950680368ull, 15966486035277439363ull, 10748601772107342002ull}}, {{12553741044896968410ull, 2195983915190136073ull, 10571994836539308519ull, 2149720354421468400ull}}, {{6660738016084385203ull, 4391967830380272147ull, 2697245599369065422ull, 4299440708842936801ull}}, {{13321476032168770406ull, 8783935660760544294ull, 5394491198738130844ull, 8598881417685873602ull}}, {{2664295206433754082ull, 5446135946894019182ull, 8457595869231446815ull, 1719776283537174720ull}}, {{5328590412867508163ull, 10892271893788038364ull, 16915191738462893630ull, 3439552567074349440ull}}, {{10657180825735016325ull, 3337799713866525112ull, 15383639403216235645ull, 6879105134148698881ull}}, {{13199482609372734235ull, 4356908757515215345ull, 6766076695385157452ull, 1375821026829739776ull}}, {{7952221145035916853ull, 8713817515030430691ull, 13532153390770314904ull, 2751642053659479552ull}}, {{15904442290071833706ull, 17427635030060861382ull, 8617562707831078192ull, 5503284107318959105ull}}, {{13362140506434115796ull, 16408525986412171149ull, 17235125415662156385ull, 11006568214637918210ull}}, {{17429823360254464452ull, 3281705197282434229ull, 3447025083132431277ull, 2201313642927583642ull}}, {{16412902646799377288ull, 6563410394564868459ull, 6894050166264862554ull, 4402627285855167284ull}}, {{14379061219889202960ull, 13126820789129736919ull, 13788100332529725108ull, 8805254571710334568ull}}, {{2875812243977840592ull, 6314712972567857707ull, 13825666510731675991ull, 1761050914342066913ull}}, {{5751624487955681184ull, 12629425945135715414ull, 9204588947753800366ull, 3522101828684133827ull}}, {{11503248975911362368ull, 6812107816561879212ull, 18409177895507600733ull, 7044203657368267654ull}}, {{17058045054149913767ull, 8741119192796196488ull, 18439230838069161439ull, 1408840731473653530ull}}, {{15669346034590275917ull, 17482238385592392977ull, 18431717602428771262ull, 2817681462947307061ull}}, {{12891947995471000218ull, 16517732697475234339ull, 18416691131147990909ull, 5635362925894614123ull}}, {{7337151917232448819ull, 14588721321240917063ull, 18386638188586430203ull, 11270725851789228247ull}}, {{12535476827672220734ull, 2917744264248183412ull, 11056025267201106687ull, 2254145170357845649ull}}, {{6624209581634889851ull, 5835488528496366825ull, 3665306460692661758ull, 4508290340715691299ull}}, {{13248419163269779702ull, 11670977056992733650ull, 7330612921385323516ull, 9016580681431382598ull}}, {{17407079091621597234ull, 17091590670366188022ull, 12534169028502795672ull, 1803316136286276519ull}}, {{16367414109533642851ull, 15736437267022824429ull, 6621593983296039729ull, 3606632272572553039ull}}, {{14288084145357734085ull, 13026130460336097243ull, 13243187966592079459ull, 7213264545145106078ull}}, {{2857616829071546817ull, 9983923721551040095ull, 13716684037544146861ull, 1442652909029021215ull}}, {{5715233658143093634ull, 1521103369392528574ull, 8986624001378742107ull, 2885305818058042431ull}}, {{11430467316286187268ull, 3042206738785057148ull, 17973248002757484214ull, 5770611636116084862ull}}, {{4414190558862822919ull, 6084413477570114297ull, 17499751931805416812ull, 11541223272232169725ull}}, {{15640233370740205877ull, 8595580324997843505ull, 3499950386361083362ull, 2308244654446433945ull}}, {{12833722667770860138ull, 17191160649995687011ull, 6999900772722166724ull, 4616489308892867890ull}}, {{7220701261832168659ull, 15935577226281822407ull, 13999801545444333449ull, 9232978617785735780ull}}, {{5133489067108344055ull, 17944510704224005774ull, 2799960309088866689ull, 1846595723557147156ull}}, {{10266978134216688110ull, 17442277334738459932ull, 5599920618177733379ull, 3693191447114294312ull}}, {{2087212194723824604ull, 16437810595767368249ull, 11199841236355466759ull, 7386382894228588624ull}}, {{7796140068428585568ull, 14355608563379204619ull, 16997363506238734644ull, 1477276578845717724ull}}, {{15592280136857171135ull, 10264473053048857622ull, 15547982938767917673ull, 2954553157691435449ull}}, {{12737816200004790653ull, 2082202032388163629ull, 12649221803826283731ull, 5909106315382870899ull}}, {{7028888326300029689ull, 4164404064776327259ull, 6851699533943015846ull, 11818212630765741799ull}}, {{16163172924227647231ull, 832880812955265451ull, 16127735165756244462ull, 2363642526153148359ull}}, {{13879601774745742846ull, 1665761625910530903ull, 13808726257802937308ull, 4727285052306296719ull}}, {{9312459475781934075ull, 3331523251821061807ull, 9170708441896323000ull, 9454570104612593439ull}}, {{5551840709898297139ull, 15423699909331853654ull, 16591536947346905892ull, 1890914020922518687ull}}, {{11103681419796594277ull, 12400655744954155692ull, 14736329820984260169ull, 3781828041845037375ull}}, {{3760618765883636937ull, 6354567416198759769ull, 11025915568258968723ull, 7563656083690074751ull}}, {{11820170197402458357ull, 16028308742207393246ull, 5894531928393704067ull, 1512731216738014950ull}}, {{5193596321095365098ull, 13609873410705234877ull, 11789063856787408135ull, 3025462433476029900ull}}, {{10387192642190730196ull, 8773002747700918138ull, 5131383639865264655ull, 6050924866952059801ull}}, {{2327641210671908775ull, 17546005495401836277ull, 10262767279730529310ull, 12101849733904119602ull}}, {{15222923501102023048ull, 10887898728564187901ull, 9431251085429926508ull, 2420369946780823920ull}}, {{11999102928494494480ull, 3329053383418824187ull, 415758097150301401ull, 4840739893561647841ull}}, {{5551461783279437343ull, 6658106766837648375ull, 831516194300602802ull, 9681479787123295682ull}}, {{15867687615623528762ull, 16089016612335170967ull, 7545000868343941206ull, 1936295957424659136ull}}, {{13288631157537505907ull, 13731289150960790319ull, 15090001736687882413ull, 3872591914849318272ull}}, {{8130518241365460198ull, 9015834228212029023ull, 11733259399666213211ull, 7745183829698636545ull}}, {{16383498907240733333ull, 5492515660384316127ull, 2346651879933242642ull, 1549036765939727309ull}}, {{14320253740771915049ull, 10985031320768632255ull, 4693303759866485284ull, 3098073531879454618ull}}, {{10193763407834278482ull, 3523318567827712895ull, 9386607519732970569ull, 6196147063758909236ull}}, {{1940782741959005347ull, 7046637135655425791ull, 326470965756389522ull, 12392294127517818473ull}}, {{4077505363133711393ull, 1409327427131085158ull, 11133340637377008874ull, 2478458825503563694ull}}, {{8155010726267422785ull, 2818654854262170316ull, 3819937201044466132ull, 4956917651007127389ull}}, {{16310021452534845570ull, 5637309708524340632ull, 7639874402088932264ull, 9913835302014254778ull}}, {{18019399549474610407ull, 8506159571188688772ull, 12596021324643517422ull, 1982767060402850955ull}}, {{17592055025239669198ull, 17012319142377377545ull, 6745298575577483228ull, 3965534120805701911ull}}, {{16737365976769786780ull, 15577894211045203475ull, 13490597151154966457ull, 7931068241611403822ull}}, {{18104868454321598649ull, 17872974101176681987ull, 10076817059714813937ull, 1586213648322280764ull}}, {{17762992834933645682ull, 17299204128643812359ull, 1706890045720076259ull, 3172427296644561529ull}}, {{17079241596157739747ull, 16151664183578073103ull, 3413780091440152519ull, 6344854593289123058ull}}, {{15711739118605927877ull, 13856584293446594591ull, 6827560182880305039ull, 12689709186578246116ull}}, {{6831696638463095899ull, 2771316858689318918ull, 5054860851317971331ull, 2537941837315649223ull}}, {{13663393276926191798ull, 5542633717378637836ull, 10109721702635942662ull, 5075883674631298446ull}}, {{8880042480142831979ull, 11085267434757275673ull, 1772699331562333708ull, 10151767349262596893ull}}, {{16533403754996207689ull, 5906402301693365457ull, 11422586310538197711ull, 2030353469852519378ull}}, {{14620063436282863761ull, 11812804603386730915ull, 4398428547366843806ull, 4060706939705038757ull}}, {{10793382798856175906ull, 5178865133063910215ull, 8796857094733687613ull, 8121413879410077514ull}}, {{9537374189255055828ull, 8414470656096602689ull, 16516766677914378815ull, 1624282775882015502ull}}, {{628004304800560040ull, 16828941312193205379ull, 14586789282119206014ull, 3248565551764031005ull}}, {{1256008609601120079ull, 15211138550676859142ull, 10726834490528860413ull, 6497131103528062011ull}}, {{3940550536662134339ull, 17799622969103013121ull, 5834715712847682405ull, 1299426220705612402ull}}, {{7881101073324268678ull, 17152501864496474626ull, 11669431425695364811ull, 2598852441411224804ull}}, {{15762202146648537356ull, 15858259655283397636ull, 4892118777681178007ull, 5197704882822449609ull}}, {{13077660219587523095ull, 13269775236857243657ull, 9784237555362356015ull, 10395409765644899218ull}}, {{2615532043917504619ull, 13722001491597179701ull, 13024893955298202172ull, 2079081953128979843ull}}, {{5231064087835009238ull, 8997258909484807786ull, 7603043836886852729ull, 4158163906257959687ull}}, {{10462128175670018476ull, 17994517818969615572ull, 15206087673773705458ull, 8316327812515919374ull}}, {{16849820894101644988ull, 10977601193277743760ull, 17798612793722382384ull, 1663265562503183874ull}}, {{15252897714493738360ull, 3508458312845935905ull, 17150481513735213153ull, 3326531125006367749ull}}, {{12059051355277925104ull, 7016916625691871811ull, 15854218953760874690ull, 6653062250012735499ull}}, {{2411810271055585021ull, 16160778584106015655ull, 17928239049719816230ull, 1330612450002547099ull}}, {{4823620542111170042ull, 13874813094502479694ull, 17409734025730080845ull, 2661224900005094199ull}}, {{9647241084222340084ull, 9302882115295407772ull, 16372723977750610075ull, 5322449800010188399ull}}, {{847738094735128551ull, 159020156881263929ull, 14298703881791668535ull, 10644899600020376799ull}}, {{11237594063172756680ull, 14789199290343894078ull, 17617136035325974999ull, 2128979920004075359ull}}, {{4028444052635961744ull, 11131654506978236541ull, 16787527996942398383ull, 4257959840008150719ull}}, {{8056888105271923487ull, 3816564940246921466ull, 15128311920175245151ull, 8515919680016301439ull}}, {{5300726435796295021ull, 763312988049384293ull, 17783057643002690323ull, 1703183936003260287ull}}, {{10601452871592590042ull, 1526625976098768586ull, 17119371212295829030ull, 3406367872006520575ull}}, {{2756161669475628467ull, 3053251952197537173ull, 15791998350882106444ull, 6812735744013041151ull}}, {{11619278778120856663ull, 610650390439507434ull, 6847748484918331612ull, 1362547148802608230ull}}, {{4791813482532161710ull, 1221300780879014869ull, 13695496969836663224ull, 2725094297605216460ull}}, {{9583626965064323420ull, 2442601561758029738ull, 8944249865963774832ull, 5450188595210432921ull}}, {{720509856419095223ull, 4885203123516059477ull, 17888499731927549664ull, 10900377190420865842ull}}, {{11212148415509550015ull, 4666389439445122218ull, 10956397575869330579ull, 2180075438084173168ull}}, {{3977552757309548413ull, 9332778878890244437ull, 3466051078029109542ull, 4360150876168346337ull}}, {{7955105514619096825ull, 218813684070937258ull, 6932102156058219085ull, 8720301752336692674ull}}, {{8969718732407640012ull, 14801157995781828744ull, 16143815690179285109ull, 1744060350467338534ull}}, {{17939437464815280023ull, 11155571917854105872ull, 13840887306649018603ull, 3488120700934677069ull}}, {{17432130855921008430ull, 3864399761998660129ull, 9235030539588485591ull, 6976241401869354139ull}}, {{18243821430151842979ull, 772879952399732025ull, 16604401366885338411ull, 1395248280373870827ull}}, {{18040898786594134342ull, 1545759904799464051ull, 14762058660061125206ull, 2790496560747741655ull}}, {{17635053499478717067ull, 3091519809598928103ull, 11077373246412698796ull, 5580993121495483311ull}}, {{16823362925247882518ull, 6183039619197856207ull, 3708002419115845976ull, 11161986242990966623ull}}, {{7054021399791486827ull, 15994003182807212534ull, 11809646928048900164ull, 2232397248598193324ull}}, {{14108042799582973654ull, 13541262291904873452ull, 5172549782388248713ull, 4464794497196386649ull}}, {{9769341525456395691ull, 8635780510100195289ull, 10345099564776497427ull, 8929588994392773298ull}}, {{16711263564058920431ull, 1727156102020039057ull, 13137066357181030455ull, 1785917798878554659ull}}, {{14975783054408289246ull, 3454312204040078115ull, 7827388640652509294ull, 3571835597757109319ull}}, {{11504822035107026876ull, 6908624408080156231ull, 15654777281305018588ull, 7143671195514218638ull}}, {{9679662036505226022ull, 5071073696357941569ull, 14199001900486734687ull, 1428734239102843727ull}}, {{912579999300900428ull, 10142147392715883139ull, 9951259727263917758ull, 2857468478205687455ull}}, {{1825159998601800855ull, 1837550711722214662ull, 1455775380818283901ull, 5714936956411374911ull}}, {{3650319997203601709ull, 3675101423444429324ull, 2911550761636567802ull, 11429873912822749822ull}}, {{11798110443666451312ull, 15492415543656527157ull, 7961007781811134206ull, 2285974782564549964ull}}, {{5149476813623351007ull, 12538087013603502699ull, 15922015563622268413ull, 4571949565129099928ull}}, {{10298953627246702013ull, 6629429953497453782ull, 13397287053534985211ull, 9143899130258199857ull}}, {{2059790725449340403ull, 12393932434925221726ull, 10058155040190817688ull, 1828779826051639971ull}}, {{4119581450898680806ull, 6341120796140891836ull, 1669566006672083761ull, 3657559652103279943ull}}, {{8239162901797361611ull, 12682241592281783672ull, 3339132013344167522ull, 7315119304206559886ull}}, {{1647832580359472323ull, 13604494762682087704ull, 4357175217410743827ull, 1463023860841311977ull}}, {{3295665160718944645ull, 8762245451654623792ull, 8714350434821487655ull, 2926047721682623954ull}}, {{6591330321437889289ull, 17524490903309247584ull, 17428700869642975310ull, 5852095443365247908ull}}, {{13182660642875778577ull, 16602237732908943552ull, 16410657665576399005ull, 11704190886730495817ull}}, {{17393927387542797009ull, 10699145176065609356ull, 10660829162599100447ull, 2340838177346099163ull}}, {{16341110701376042401ull, 2951546278421667097ull, 2874914251488649279ull, 4681676354692198327ull}}, {{14235477329042533185ull, 5903092556843334195ull, 5749828502977298558ull, 9363352709384396654ull}}, {{10225793095292327284ull, 8559316140852487485ull, 15907360959563101004ull, 1872670541876879330ull}}, {{2004842116875102951ull, 17118632281704974971ull, 13367977845416650392ull, 3745341083753758661ull}}, {{4009684233750205902ull, 15790520489700398326ull, 8289211617123749169ull, 7490682167507517323ull}}, {{11869983290975772150ull, 10536801727423900311ull, 12725888767650480803ull, 1498136433501503464ull}}, {{5293222508241992684ull, 2626859381138249007ull, 7005033461591409991ull, 2996272867003006929ull}}, {{10586445016483985368ull, 5253718762276498014ull, 14010066923182819982ull, 5992545734006013858ull}}, {{2726145959258419119ull, 10507437524552996029ull, 9573389772656088348ull, 11985091468012027717ull}}, {{15302624450819325117ull, 2101487504910599205ull, 9293375584015038316ull, 2397018293602405543ull}}, {{12158504827929098618ull, 4202975009821198411ull, 140007094320525016ull, 4794036587204811087ull}}, {{5870265582148645619ull, 8405950019642396823ull, 280014188641050032ull, 9588073174409622174ull}}, {{15931448375397370417ull, 5370538818670389687ull, 14813398096695851299ull, 1917614634881924434ull}}, {{13416152677085189217ull, 10741077637340779375ull, 11180052119682150982ull, 3835229269763848869ull}}, {{8385561280460826818ull, 3035411200972007135ull, 3913360165654750349ull, 7670458539527697739ull}}, {{12745158700317896334ull, 11675128684420132396ull, 15540067292098591362ull, 1534091707905539547ull}}, {{7043573326926241051ull, 4903513295130713177ull, 12633390510487631109ull, 3068183415811079095ull}}, {{14087146653852482101ull, 9807026590261426354ull, 6820036947265710602ull, 6136366831622158191ull}}, {{9727549233995412585ull, 1167309106813301093ull, 13640073894531421205ull, 12272733663244316382ull}}, {{1945509846799082517ull, 7612159450846480865ull, 10106712408390104887ull, 2454546732648863276ull}}, {{3891019693598165034ull, 15224318901692961730ull, 1766680743070658158ull, 4909093465297726553ull}}, {{7782039387196330068ull, 12001893729676371844ull, 3533361486141316317ull, 9818186930595453106ull}}, {{8935105506923086660ull, 13468425190161005338ull, 4396021111970173586ull, 1963637386119090621ull}}, {{17870211013846173320ull, 8490106306612459060ull, 8792042223940347173ull, 3927274772238181242ull}}, {{17293677953982795024ull, 16980212613224918121ull, 17584084447880694346ull, 7854549544476362484ull}}, {{7148084405538469328ull, 3396042522644983624ull, 18274212148543780162ull, 1570909908895272496ull}}, {{14296168811076938656ull, 6792085045289967248ull, 18101680223378008708ull, 3141819817790544993ull}}, {{10145593548444325696ull, 13584170090579934497ull, 17756616373046465800ull, 6283639635581089987ull}}, {{1844443023179099776ull, 8721596107450317379ull, 17066488672383379985ull, 12567279271162179975ull}}, {{15126283863603461248ull, 1744319221490063475ull, 3413297734476675997ull, 2513455854232435995ull}}, {{11805823653497370880ull, 3488638442980126951ull, 6826595468953351994ull, 5026911708464871990ull}}, {{5164903233285190144ull, 6977276885960253903ull, 13653190937906703988ull, 10053823416929743980ull}}, {{4722329461398948352ull, 12463501821417781750ull, 2730638187581340797ull, 2010764683385948796ull}}, {{9444658922797896704ull, 6480259569126011884ull, 5461276375162681595ull, 4021529366771897592ull}}, {{442573771886241792ull, 12960519138252023769ull, 10922552750325363190ull, 8043058733543795184ull}}, {{11156561198602979328ull, 17349499086618046046ull, 16941905809032713930ull, 1608611746708759036ull}}, {{3866378323496407040ull, 16252254099526540477ull, 15437067544355876245ull, 3217223493417518073ull}}, {{7732756646992814080ull, 14057764125343529338ull, 12427391015002200875ull, 6434446986835036147ull}}, {{1546551329398562816ull, 10190250454552526514ull, 9864175832484260821ull, 1286889397367007229ull}}, {{3093102658797125632ull, 1933756835395501412ull, 1281607591258970027ull, 2573778794734014459ull}}, {{6186205317594251264ull, 3867513670791002824ull, 2563215182517940054ull, 5147557589468028918ull}}, {{12372410635188502528ull, 7735027341582005648ull, 5126430365035880108ull, 10295115178936057836ull}}, {{9853179756521521152ull, 16304400727284042422ull, 4714634887749086344ull, 2059023035787211567ull}}, {{1259615439333490688ull, 14162057380858533229ull, 9429269775498172689ull, 4118046071574423134ull}}, {{2519230878666981376ull, 9877370688007514842ull, 411795477286793763ull, 8236092143148846269ull}}, {{15261241434701037568ull, 9354171767085323614ull, 14839754354425000045ull, 1647218428629769253ull}}, {{12075738795692523520ull, 261599460461095613ull, 11232764635140448475ull, 3294436857259538507ull}}, {{5704733517675495424ull, 523198920922191227ull, 4018785196571345334ull, 6588873714519077015ull}}, {{4830295518277009408ull, 14862035043152079538ull, 803757039314269066ull, 1317774742903815403ull}}, {{9660591036554018816ull, 11277326012594607460ull, 1607514078628538133ull, 2635549485807630806ull}}, {{874437999398486016ull, 4107907951479663305ull, 3215028157257076267ull, 5271098971615261612ull}}, {{1748875998796972032ull, 8215815902959326610ull, 6430056314514152534ull, 10542197943230523224ull}}, {{11417821643985125376ull, 12711209624817596291ull, 16043406521870471799ull, 2108439588646104644ull}}, {{4388899214260699136ull, 6975675175925640967ull, 13640068970031391983ull, 4216879177292209289ull}}, {{8777798428521398272ull, 13951350351851281934ull, 8833393866353232350ull, 8433758354584418579ull}}, {{12823606129930010624ull, 17547665329337897679ull, 16524074032238287762ull, 1686751670916883715ull}}, {{7200468186150469632ull, 16648586584966243743ull, 14601403990767023909ull, 3373503341833767431ull}}, {{14400936372300939264ull, 14850429096222935870ull, 10756063907824496203ull, 6747006683667534863ull}}, {{6569536089202098176ull, 6659434633986497497ull, 13219259225790630210ull, 1349401336733506972ull}}, {{13139072178404196352ull, 13318869267972994994ull, 7991774377871708804ull, 2698802673467013945ull}}, {{7831400283098841088ull, 8190994462236438373ull, 15983548755743417609ull, 5397605346934027890ull}}, {{15662800566197682176ull, 16381988924472876746ull, 13520353437777283602ull, 10795210693868055781ull}}, {{17889955372207177728ull, 14344444229120306318ull, 6393419502297367043ull, 2159042138773611156ull}}, {{17333166670704803840ull, 10242144384531061021ull, 12786839004594734087ull, 4318084277547222312ull}}, {{16219589267700056064ull, 2037544695352570427ull, 7126933935479916559ull, 8636168555094444625ull}}, {{6933266668281921536ull, 15164904198038155378ull, 1425386787095983311ull, 1727233711018888925ull}}, {{13866533336563843072ull, 11883064322366759140ull, 2850773574191966623ull, 3454467422037777850ull}}, {{9286322599418134528ull, 5319384571023966665ull, 5701547148383933247ull, 6908934844075555700ull}}, {{9235962149367447552ull, 8442574543688613979ull, 1140309429676786649ull, 1381786968815111140ull}}, {{25180225025343488ull, 16885149087377227959ull, 2280618859353573298ull, 2763573937630222280ull}}, {{50360450050686976ull, 15323554101044904302ull, 4561237718707146597ull, 5527147875260444560ull}}, {{100720900101373952ull, 12200364128380256988ull, 9122475437414293195ull, 11054295750520889120ull}}, {{11088190624246005760ull, 2440072825676051397ull, 1824495087482858639ull, 2210859150104177824ull}}, {{3729637174782459904ull, 4880145651352102795ull, 3648990174965717278ull, 4421718300208355648ull}}, {{7459274349564919808ull, 9760291302704205590ull, 7297980349931434556ull, 8843436600416711296ull}}, {{8870552499396804608ull, 9330755890024661764ull, 5148944884728197234ull, 1768687320083342259ull}}, {{17741104998793609216ull, 214767706339771912ull, 10297889769456394469ull, 3537374640166684518ull}}, {{17035465923877666816ull, 429535412679543825ull, 2149035465203237322ull, 7074749280333369037ull}}, {{18164488443743174656ull, 14843302341503550057ull, 7808504722524468110ull, 1414949856066673807ull}}, {{17882232813776797696ull, 11239860609297548499ull, 15617009445048936221ull, 2829899712133347614ull}}, {{17317721553844043776ull, 4032977144885545383ull, 12787274816388320827ull, 5659799424266695229ull}}, {{16188699033978535936ull, 8065954289771090767ull, 7127805559067090038ull, 11319598848533390459ull}}, {{17995135065763348480ull, 8991888487438038799ull, 16182956370781059300ull, 2263919769706678091ull}}, {{17543526057817145344ull, 17983776974876077599ull, 13919168667852566984ull, 4527839539413356183ull}}, {{16640308041924739072ull, 17520809876042603583ull, 9391593261995582353ull, 9055679078826712367ull}}, {{14396108052610678784ull, 3504161975208520716ull, 9257016281882937117ull, 1811135815765342473ull}}, {{10345472031511805952ull, 7008323950417041433ull, 67288490056322618ull, 3622271631530684947ull}}, {{2244199989314060288ull, 14016647900834082867ull, 134576980112645236ull, 7244543263061369894ull}}, {{7827537627346632704ull, 2803329580166816573ull, 14784310654990170340ull, 1448908652612273978ull}}, {{15655075254693265408ull, 5606659160333633146ull, 11121877236270789064ull, 2897817305224547957ull}}, {{12863406435676979200ull, 11213318320667266293ull, 3797010398832026512ull, 5795634610449095915ull}}, {{7280068797644406784ull, 3979892567624980971ull, 7594020797664053025ull, 11591269220898191830ull}}, {{5145362574270791680ull, 795978513524996194ull, 1518804159532810605ull, 2318253844179638366ull}}, {{10290725148541583360ull, 1591957027049992388ull, 3037608319065621210ull, 4636507688359276732ull}}, {{2134706223373615104ull, 3183914054099984777ull, 6075216638131242420ull, 9273015376718553464ull}}, {{4116290059416633344ull, 15394178069787638248ull, 15972438586593889776ull, 1854603075343710692ull}}, {{8232580118833266688ull, 12341612065865724880ull, 13498133099478227937ull, 3709206150687421385ull}}, {{16465160237666533376ull, 6236480058021898144ull, 8549522125246904259ull, 7418412301374842771ull}}, {{18050427306500947968ull, 1247296011604379628ull, 5399253239791291175ull, 1483682460274968554ull}}, {{17654110539292344320ull, 2494592023208759257ull, 10798506479582582350ull, 2967364920549937108ull}}, {{16861477004875137024ull, 4989184046417518515ull, 3150268885455613084ull, 5934729841099874217ull}}, {{15276209936040722432ull, 9978368092835037031ull, 6300537770911226168ull, 11869459682199748434ull}}, {{14123288431433875456ull, 9374371248050828052ull, 16017502813149886526ull, 2373891936439949686ull}}, {{9799832789158199296ull, 301998422392104489ull, 13588261552590221437ull, 4747783872879899373ull}}, {{1152921504606846976ull, 603996844784208979ull, 8729779031470891258ull, 9495567745759798747ull}}, {{14987979559889010688ull, 120799368956841795ull, 9124653435777998898ull, 1899113549151959749ull}}, {{11529215046068469760ull, 241598737913683591ull, 18249306871555997796ull, 3798227098303919498ull}}, {{4611686018427387904ull, 483197475827367183ull, 18051869669402443976ull, 7596454196607838997ull}}, {{4611686018427387904ull, 11164685939391204406ull, 10989071563364309441ull, 1519290839321567799ull}}, {{9223372036854775808ull, 3882627805072857196ull, 3531399053019067267ull, 3038581678643135599ull}}, {{0ull, 7765255610145714393ull, 7062798106038134534ull, 6077163357286271198ull}}, {{0ull, 15530511220291428786ull, 14125596212076269068ull, 12154326714572542396ull}}, {{0ull, 17863497503025927050ull, 6514468057157164136ull, 2430865342914508479ull}}, {{0ull, 17280250932342302484ull, 13028936114314328273ull, 4861730685829016958ull}}, {{0ull, 16113757790975053352ull, 7611128154919104931ull, 9723461371658033917ull}}, {{0ull, 14290798002420741640ull, 8900923260467641632ull, 1944692274331606783ull}}, {{0ull, 10134851931131931664ull, 17801846520935283265ull, 3889384548663213566ull}}, {{0ull, 1822959788554311712ull, 17156948968161014915ull, 7778769097326427133ull}}, {{0ull, 11432638401936593312ull, 14499436237857933952ull, 1555753819465285426ull}}, {{0ull, 4418532730163635008ull, 10552128402006316289ull, 3111507638930570853ull}}, {{0ull, 8837065460327270016ull, 2657512730303080962ull, 6223015277861141707ull}}, {{0ull, 17674130920654540032ull, 5315025460606161924ull, 12446030555722283414ull}}, {{0ull, 14602872628356638976ull, 15820400351088873677ull, 2489206111144456682ull}}, {{0ull, 10759001183003726336ull, 13194056628468195739ull, 4978412222288913365ull}}, {{0ull, 3071258292297901056ull, 7941369183226839863ull, 9956824444577826731ull}}, {{0ull, 15371646917427221504ull, 5277622651387278295ull, 1991364888915565346ull}}, {{0ull, 12296549761144891392ull, 10555245302774556591ull, 3982729777831130692ull}}, {{0ull, 6146355448580231168ull, 2663746531839561567ull, 7965459555662261385ull}}, {{0ull, 8607968719199866880ull, 532749306367912313ull, 1593091911132452277ull}}, {{0ull, 17215937438399733760ull, 1065498612735824626ull, 3186183822264904554ull}}, {{0ull, 15985130803089915904ull, 2130997225471649253ull, 6372367644529809108ull}}, {{0ull, 13523517532470280192ull, 4261994450943298507ull, 12744735289059618216ull}}, {{0ull, 13772749950719787008ull, 4541747704930570024ull, 2548947057811923643ull}}, {{0ull, 9098755827730022400ull, 9083495409861140049ull, 5097894115623847286ull}}, {{0ull, 18197511655460044800ull, 18166990819722280098ull, 10195788231247694572ull}}, {{0ull, 3639502331092008960ull, 11012095793428276666ull, 2039157646249538914ull}}, {{0ull, 7279004662184017920ull, 3577447513147001716ull, 4078315292499077829ull}}, {{0ull, 14558009324368035840ull, 7154895026294003432ull, 8156630584998155658ull}}, {{0ull, 2911601864873607168ull, 12499025449484531656ull, 1631326116999631131ull}}, {{0ull, 5823203729747214336ull, 6551306825259511696ull, 3262652233999262263ull}}, {{0ull, 11646407459494428672ull, 13102613650519023392ull, 6525304467998524526ull}}, {{0ull, 13397327936124616704ull, 6309871544845715001ull, 1305060893599704905ull}}, {{0ull, 8347911798539681792ull, 12619743089691430003ull, 2610121787199409810ull}}, {{0ull, 16695823597079363584ull, 6792742105673308390ull, 5220243574398819621ull}}, {{0ull, 14944903120449175552ull, 13585484211346616781ull, 10440487148797639242ull}}, {{0ull, 14057027068315566080ull, 10095794471753144002ull, 2088097429759527848ull}}, {{0ull, 9667310062921580544ull, 1744844869796736389ull, 4176194859519055697ull}}, {{0ull, 887876052133609472ull, 3489689739593472779ull, 8352389719038111394ull}}, {{0ull, 11245621654652452864ull, 15455333206886335848ull, 1670477943807622278ull}}, {{0ull, 4044499235595354112ull, 12463922340063120081ull, 3340955887615244557ull}}, {{0ull, 8088998471190708224ull, 6481100606416688546ull, 6681911775230489115ull}}, {{0ull, 5307148508980051968ull, 1296220121283337709ull, 1336382355046097823ull}}, {{0ull, 10614297017960103936ull, 2592440242566675418ull, 2672764710092195646ull}}, {{0ull, 2781849962210656256ull, 5184880485133350837ull, 5345529420184391292ull}}, {{0ull, 5563699924421312512ull, 10369760970266701674ull, 10691058840368782584ull}}, {{0ull, 12180786429109993472ull, 16831347453020981627ull, 2138211768073756516ull}}, {{0ull, 5914828784510435328ull, 15215950832332411639ull, 4276423536147513033ull}}, {{0ull, 11829657569020870656ull, 11985157590955271662ull, 8552847072295026067ull}}, {{0ull, 17123326772771815424ull, 9775729147674874978ull, 1710569414459005213ull}}, {{0ull, 15799909471834079232ull, 1104714221640198341ull, 3421138828918010427ull}}, {{0ull, 13153074869958606848ull, 2209428443280396683ull, 6842277657836020854ull}}, {{0ull, 10009312603475542016ull, 15199280947623720629ull, 1368455531567204170ull}}, {{0ull, 1571881133241532416ull, 11951817821537889643ull, 2736911063134408341ull}}, {{0ull, 3143762266483064832ull, 5456891569366227670ull, 5473822126268816683ull}}, {{0ull, 6287524532966129664ull, 10913783138732455340ull, 10947644252537633366ull}}, {{0ull, 4946853721335136256ull, 5872105442488401391ull, 2189528850507526673ull}}, {{0ull, 9893707442670272512ull, 11744210884976802782ull, 4379057701015053346ull}}, {{0ull, 1340670811630993408ull, 5041677696244053949ull, 8758115402030106693ull}}, {{0ull, 7646831791810019328ull, 12076381983474541759ull, 1751623080406021338ull}}, {{0ull, 15293663583620038656ull, 5706019893239531902ull, 3503246160812042677ull}}, {{0ull, 12140583093530525696ull, 11412039786479063805ull, 7006492321624085354ull}}, {{0ull, 17185511877673746432ull, 17039803216263454053ull, 1401298464324817070ull}}, {{0ull, 15924279681637941248ull, 15632862358817356491ull, 2802596928649634141ull}}, {{0ull, 13401815289566330880ull, 12818980643925161367ull, 5605193857299268283ull}}, {{0ull, 8356886505423110144ull, 7191217214140771119ull, 11210387714598536567ull}}, {{0ull, 5360726115826532352ull, 8816941072311974870ull, 2242077542919707313ull}}, {{0ull, 10721452231653064704ull, 17633882144623949740ull, 4484155085839414626ull}}, {{0ull, 2996160389596577792ull, 16821020215538347865ull, 8968310171678829253ull}}, {{0ull, 11667278522145046528ull, 14432250487333400542ull, 1793662034335765850ull}}, {{0ull, 4887812970580541440ull, 10417756900957249469ull, 3587324068671531701ull}}, {{0ull, 9775625941161082880ull, 2388769728204947322ull, 7174648137343063403ull}}, {{0ull, 1955125188232216576ull, 11545800389866720434ull, 1434929627468612680ull}}, {{0ull, 3910250376464433152ull, 4644856706023889252ull, 2869859254937225361ull}}, {{0ull, 7820500752928866304ull, 9289713412047778504ull, 5739718509874450722ull}}, {{0ull, 15641001505857732608ull, 132682750386005392ull, 11479437019748901445ull}}, {{0ull, 10506897930655367168ull, 26536550077201078ull, 2295887403949780289ull}}, {{0ull, 2567051787601182720ull, 53073100154402157ull, 4591774807899560578ull}}, {{0ull, 5134103575202365440ull, 106146200308804314ull, 9183549615799121156ull}}, {{0ull, 1026820715040473088ull, 3710578054803671186ull, 1836709923159824231ull}}, {{0ull, 2053641430080946176ull, 7421156109607342372ull, 3673419846319648462ull}}, {{0ull, 4107282860161892352ull, 14842312219214684744ull, 7346839692639296924ull}}, {{0ull, 11889503016258109440ull, 17725857702810578241ull, 1469367938527859384ull}}, {{0ull, 5332261958806667264ull, 17004971331911604867ull, 2938735877055718769ull}}, {{0ull, 10664523917613334528ull, 15563198590113658118ull, 5877471754111437539ull}}, {{0ull, 2882303761517117440ull, 12679653106517764621ull, 11754943508222875079ull}}, {{0ull, 576460752303423488ull, 17293325880271194217ull, 2350988701644575015ull}}, {{0ull, 1152921504606846976ull, 16139907686832836818ull, 4701977403289150031ull}}, {{0ull, 2305843009213693952ull, 13833071299956122020ull, 9403954806578300063ull}}, {{0ull, 11529215046068469760ull, 13834660704216955373ull, 1880790961315660012ull}}, {{0ull, 4611686018427387904ull, 9222577334724359131ull, 3761581922631320025ull}}, {{0ull, 9223372036854775808ull, 18445154669448718262ull, 7523163845262640050ull}}, {{0ull, 9223372036854775808ull, 3689030933889743652ull, 1504632769052528010ull}}, {{0ull, 0ull, 7378061867779487305ull, 3009265538105056020ull}}, {{0ull, 0ull, 14756123735558974610ull, 6018531076210112040ull}}, {{0ull, 0ull, 11065503397408397604ull, 12037062152420224081ull}}, {{0ull, 0ull, 5902449494223589844ull, 2407412430484044816ull}}, {{0ull, 0ull, 11804898988447179688ull, 4814824860968089632ull}}, {{0ull, 0ull, 5163053903184807760ull, 9629649721936179265ull}}, {{0ull, 0ull, 1032610780636961552ull, 1925929944387235853ull}}, {{0ull, 0ull, 2065221561273923104ull, 3851859888774471706ull}}, {{0ull, 0ull, 4130443122547846208ull, 7703719777548943412ull}}, {{0ull, 0ull, 8204786253993389888ull, 1540743955509788682ull}}, {{0ull, 0ull, 16409572507986779776ull, 3081487911019577364ull}}, {{0ull, 0ull, 14372400942264007936ull, 6162975822039154729ull}}, {{0ull, 0ull, 10298057810818464256ull, 12325951644078309459ull}}, {{0ull, 0ull, 16817006821131334144ull, 2465190328815661891ull}}, {{0ull, 0ull, 15187269568553116672ull, 4930380657631323783ull}}, {{0ull, 0ull, 11927795063396681728ull, 9860761315262647567ull}}, {{0ull, 0ull, 9764256642163156992ull, 1972152263052529513ull}}, {{0ull, 0ull, 1081769210616762368ull, 3944304526105059027ull}}, {{0ull, 0ull, 2163538421233524736ull, 7888609052210118054ull}}, {{0ull, 0ull, 15190102943214346240ull, 1577721810442023610ull}}, {{0ull, 0ull, 11933461812719140864ull, 3155443620884047221ull}}, {{0ull, 0ull, 5420179551728730112ull, 6310887241768094443ull}}, {{0ull, 0ull, 10840359103457460224ull, 12621774483536188886ull}}, {{0ull, 0ull, 5857420635433402368ull, 2524354896707237777ull}}, {{0ull, 0ull, 11714841270866804736ull, 5048709793414475554ull}}, {{0ull, 0ull, 4982938468024057856ull, 10097419586828951109ull}}, {{0ull, 0ull, 15753982952572452864ull, 2019483917365790221ull}}, {{0ull, 0ull, 13061221831435354112ull, 4038967834731580443ull}}, {{0ull, 0ull, 7675699589161156608ull, 8077935669463160887ull}}, {{0ull, 0ull, 8913837547316051968ull, 1615587133892632177ull}}, {{0ull, 0ull, 17827675094632103936ull, 3231174267785264354ull}}, {{0ull, 0ull, 17208606115554656256ull, 6462348535570528709ull}}, {{0ull, 0ull, 18199116482078572544ull, 1292469707114105741ull}}, {{0ull, 0ull, 17951488890447593472ull, 2584939414228211483ull}}, {{0ull, 0ull, 17456233707185635328ull, 5169878828456422967ull}}, {{0ull, 0ull, 16465723340661719040ull, 10339757656912845935ull}}, {{0ull, 0ull, 3293144668132343808ull, 2067951531382569187ull}}, {{0ull, 0ull, 6586289336264687616ull, 4135903062765138374ull}}, {{0ull, 0ull, 13172578672529375232ull, 8271806125530276748ull}}, {{0ull, 0ull, 13702562178731606016ull, 1654361225106055349ull}}, {{0ull, 0ull, 8958380283753660416ull, 3308722450212110699ull}}, {{0ull, 0ull, 17916760567507320832ull, 6617444900424221398ull}}, {{0ull, 0ull, 14651398557727195136ull, 1323488980084844279ull}}, {{0ull, 0ull, 10856053041744838656ull, 2646977960169688559ull}}, {{0ull, 0ull, 3265362009780125696ull, 5293955920339377119ull}}, {{0ull, 0ull, 6530724019560251392ull, 10587911840678754238ull}}, {{0ull, 0ull, 12374191248137781248ull, 2117582368135750847ull}}, {{0ull, 0ull, 6301638422566010880ull, 4235164736271501695ull}}, {{0ull, 0ull, 12603276845132021760ull, 8470329472543003390ull}}, {{0ull, 0ull, 2520655369026404352ull, 1694065894508600678ull}}, {{0ull, 0ull, 5041310738052808704ull, 3388131789017201356ull}}, {{0ull, 0ull, 10082621476105617408ull, 6776263578034402712ull}}, {{0ull, 0ull, 9395221924704944128ull, 1355252715606880542ull}}, {{0ull, 0ull, 343699775700336640ull, 2710505431213761085ull}}, {{0ull, 0ull, 687399551400673280ull, 5421010862427522170ull}}, {{0ull, 0ull, 1374799102801346560ull, 10842021724855044340ull}}, {{0ull, 0ull, 274959820560269312ull, 2168404344971008868ull}}, {{0ull, 0ull, 549919641120538624ull, 4336808689942017736ull}}, {{0ull, 0ull, 1099839282241077248ull, 8673617379884035472ull}}, {{0ull, 0ull, 7598665485932036096ull, 1734723475976807094ull}}, {{0ull, 0ull, 15197330971864072192ull, 3469446951953614188ull}}, {{0ull, 0ull, 11947917870018592768ull, 6938893903907228377ull}}, {{0ull, 0ull, 9768281203487539200ull, 1387778780781445675ull}}, {{0ull, 0ull, 1089818333265526784ull, 2775557561562891351ull}}, {{0ull, 0ull, 2179636666531053568ull, 5551115123125782702ull}}, {{0ull, 0ull, 4359273333062107136ull, 11102230246251565404ull}}, {{0ull, 0ull, 15629249925580062720ull, 2220446049250313080ull}}, {{0ull, 0ull, 12811755777450573824ull, 4440892098500626161ull}}, {{0ull, 0ull, 7176767481191596032ull, 8881784197001252323ull}}, {{0ull, 0ull, 12503399940464050176ull, 1776356839400250464ull}}, {{0ull, 0ull, 6560055807218548736ull, 3552713678800500929ull}}, {{0ull, 0ull, 13120111614437097472ull, 7105427357601001858ull}}, {{0ull, 0ull, 13692068767113150464ull, 1421085471520200371ull}}, {{0ull, 0ull, 8937393460516749312ull, 2842170943040400743ull}}, {{0ull, 0ull, 17874786921033498624ull, 5684341886080801486ull}}, {{0ull, 0ull, 17302829768357445632ull, 11368683772161602973ull}}, {{0ull, 0ull, 14528612397897220096ull, 2273736754432320594ull}}, {{0ull, 0ull, 10610480722084888576ull, 4547473508864641189ull}}, {{0ull, 0ull, 2774217370460225536ull, 9094947017729282379ull}}, {{0ull, 0ull, 15312238733059686400ull, 1818989403545856475ull}}, {{0ull, 0ull, 12177733392409821184ull, 3637978807091712951ull}}, {{0ull, 0ull, 5908722711110090752ull, 7275957614183425903ull}}, {{0ull, 0ull, 12249790986447749120ull, 1455191522836685180ull}}, {{0ull, 0ull, 6052837899185946624ull, 2910383045673370361ull}}, {{0ull, 0ull, 12105675798371893248ull, 5820766091346740722ull}}, {{0ull, 0ull, 5764607523034234880ull, 11641532182693481445ull}}, {{0ull, 0ull, 1152921504606846976ull, 2328306436538696289ull}}, {{0ull, 0ull, 2305843009213693952ull, 4656612873077392578ull}}, {{0ull, 0ull, 4611686018427387904ull, 9313225746154785156ull}}, {{0ull, 0ull, 4611686018427387904ull, 1862645149230957031ull}}, {{0ull, 0ull, 9223372036854775808ull, 3725290298461914062ull}}, {{0ull, 0ull, 0ull, 7450580596923828125ull}}, {{0ull, 0ull, 0ull, 1490116119384765625ull}}, {{0ull, 0ull, 0ull, 2980232238769531250ull}}, {{0ull, 0ull, 0ull, 5960464477539062500ull}}, {{0ull, 0ull, 0ull, 11920928955078125000ull}}, {{0ull, 0ull, 0ull, 2384185791015625000ull}}, {{0ull, 0ull, 0ull, 4768371582031250000ull}}, {{0ull, 0ull, 0ull, 9536743164062500000ull}}, {{0ull, 0ull, 0ull, 1907348632812500000ull}}, {{0ull, 0ull, 0ull, 3814697265625000000ull}}, {{0ull, 0ull, 0ull, 7629394531250000000ull}}, {{0ull, 0ull, 0ull, 1525878906250000000ull}}, {{0ull, 0ull, 0ull, 3051757812500000000ull}}, {{0ull, 0ull, 0ull, 6103515625000000000ull}}, {{0ull, 0ull, 0ull, 12207031250000000000ull}}, {{0ull, 0ull, 0ull, 2441406250000000000ull}}, {{0ull, 0ull, 0ull, 4882812500000000000ull}}, {{0ull, 0ull, 0ull, 9765625000000000000ull}}, {{0ull, 0ull, 0ull, 1953125000000000000ull}}, {{0ull, 0ull, 0ull, 3906250000000000000ull}}, {{0ull, 0ull, 0ull, 7812500000000000000ull}}, {{0ull, 0ull, 0ull, 1562500000000000000ull}}, {{0ull, 0ull, 0ull, 3125000000000000000ull}}, {{0ull, 0ull, 0ull, 6250000000000000000ull}}, {{0ull, 0ull, 0ull, 12500000000000000000ull}}, {{0ull, 0ull, 0ull, 2500000000000000000ull}}, {{0ull, 0ull, 0ull, 5000000000000000000ull}}, {{0ull, 0ull, 0ull, 10000000000000000000ull}}, {{0ull, 0ull, 0ull, 2000000000000000000ull}}, {{0ull, 0ull, 0ull, 4000000000000000000ull}}, {{0ull, 0ull, 0ull, 8000000000000000000ull}}, {{0ull, 0ull, 0ull, 1600000000000000000ull}}, {{0ull, 0ull, 0ull, 3200000000000000000ull}}, {{0ull, 0ull, 0ull, 6400000000000000000ull}}, {{0ull, 0ull, 0ull, 12800000000000000000ull}}, {{0ull, 0ull, 0ull, 2560000000000000000ull}}, {{0ull, 0ull, 0ull, 5120000000000000000ull}}, {{0ull, 0ull, 0ull, 10240000000000000000ull}}, {{0ull, 0ull, 0ull, 2048000000000000000ull}}, {{0ull, 0ull, 0ull, 4096000000000000000ull}}, {{0ull, 0ull, 0ull, 8192000000000000000ull}}, {{0ull, 0ull, 0ull, 1638400000000000000ull}}, {{0ull, 0ull, 0ull, 3276800000000000000ull}}, {{0ull, 0ull, 0ull, 6553600000000000000ull}}, {{0ull, 0ull, 0ull, 1310720000000000000ull}}, {{0ull, 0ull, 0ull, 2621440000000000000ull}}, {{0ull, 0ull, 0ull, 5242880000000000000ull}}, {{0ull, 0ull, 0ull, 10485760000000000000ull}}, {{0ull, 0ull, 0ull, 2097152000000000000ull}}, {{0ull, 0ull, 0ull, 4194304000000000000ull}}, {{0ull, 0ull, 0ull, 8388608000000000000ull}}, {{0ull, 0ull, 0ull, 1677721600000000000ull}}, {{0ull, 0ull, 0ull, 3355443200000000000ull}}, {{0ull, 0ull, 0ull, 6710886400000000000ull}}, {{0ull, 0ull, 0ull, 1342177280000000000ull}}, {{0ull, 0ull, 0ull, 2684354560000000000ull}}, {{0ull, 0ull, 0ull, 5368709120000000000ull}}, {{0ull, 0ull, 0ull, 10737418240000000000ull}}, {{0ull, 0ull, 0ull, 2147483648000000000ull}}, {{0ull, 0ull, 0ull, 4294967296000000000ull}}, {{0ull, 0ull, 0ull, 8589934592000000000ull}}, {{0ull, 0ull, 0ull, 1717986918400000000ull}}, {{0ull, 0ull, 0ull, 3435973836800000000ull}}, {{0ull, 0ull, 0ull, 6871947673600000000ull}}, {{0ull, 0ull, 0ull, 1374389534720000000ull}}, {{0ull, 0ull, 0ull, 2748779069440000000ull}}, {{0ull, 0ull, 0ull, 5497558138880000000ull}}, {{0ull, 0ull, 0ull, 10995116277760000000ull}}, {{0ull, 0ull, 0ull, 2199023255552000000ull}}, {{0ull, 0ull, 0ull, 4398046511104000000ull}}, {{0ull, 0ull, 0ull, 8796093022208000000ull}}, {{0ull, 0ull, 0ull, 1759218604441600000ull}}, {{0ull, 0ull, 0ull, 3518437208883200000ull}}, {{0ull, 0ull, 0ull, 7036874417766400000ull}}, {{0ull, 0ull, 0ull, 1407374883553280000ull}}, {{0ull, 0ull, 0ull, 2814749767106560000ull}}, {{0ull, 0ull, 0ull, 5629499534213120000ull}}, {{0ull, 0ull, 0ull, 11258999068426240000ull}}, {{0ull, 0ull, 0ull, 2251799813685248000ull}}, {{0ull, 0ull, 0ull, 4503599627370496000ull}}, {{0ull, 0ull, 0ull, 9007199254740992000ull}}, {{0ull, 0ull, 0ull, 1801439850948198400ull}}, {{0ull, 0ull, 0ull, 3602879701896396800ull}}, {{0ull, 0ull, 0ull, 7205759403792793600ull}}, {{0ull, 0ull, 0ull, 1441151880758558720ull}}, {{0ull, 0ull, 0ull, 2882303761517117440ull}}, {{0ull, 0ull, 0ull, 5764607523034234880ull}}, {{0ull, 0ull, 0ull, 11529215046068469760ull}}, {{0ull, 0ull, 0ull, 2305843009213693952ull}}, {{0ull, 0ull, 0ull, 4611686018427387904ull}}, {{0ull, 0ull, 0ull, 9223372036854775808ull}}, {{11068046444225730970ull, 11068046444225730969ull, 11068046444225730969ull, 1844674407370955161ull}}, {{3689348814741910324ull, 3689348814741910323ull, 3689348814741910323ull, 3689348814741910323ull}}, {{7378697629483820647ull, 7378697629483820646ull, 7378697629483820646ull, 7378697629483820646ull}}, {{12543785970122495099ull, 8854437155380584775ull, 5165088340638674452ull, 1475739525896764129ull}}, {{6640827866535438582ull, 17708874310761169551ull, 10330176681277348904ull, 2951479051793528258ull}}, {{13281655733070877164ull, 16971004547812787486ull, 2213609288845146193ull, 5902958103587056517ull}}, {{8116567392432202712ull, 15495265021916023357ull, 4427218577690292387ull, 11805916207174113034ull}}, {{12691359922712171512ull, 6788401819125114994ull, 15642838974505699770ull, 2361183241434822606ull}}, {{6935975771714791408ull, 13576803638250229989ull, 12838933875301847924ull, 4722366482869645213ull}}, {{13871951543429582816ull, 8706863202790908362ull, 7231123676894144233ull, 9444732965739290427ull}}, {{10153087938169737210ull, 1741372640558181672ull, 8824922364862649493ull, 1888946593147858085ull}}, {{1859431802629922803ull, 3482745281116363345ull, 17649844729725298986ull, 3777893186295716170ull}}, {{3718863605259845606ull, 6965490562232726690ull, 16852945385741046356ull, 7555786372591432341ull}}, {{8122470350535789768ull, 8771795741930365984ull, 7059937891890119594ull, 1511157274518286468ull}}, {{16244940701071579536ull, 17543591483860731968ull, 14119875783780239188ull, 3022314549036572936ull}}, {{14043137328433607455ull, 16640438894011912321ull, 9793007493850926761ull, 6044629098073145873ull}}, {{9639530583157663293ull, 14834133714314273027ull, 1139270913992301907ull, 12089258196146291747ull}}, {{5617254931373442982ull, 17724222001830495898ull, 7606551812282281027ull, 2417851639229258349ull}}, {{11234509862746885964ull, 17001699929951440180ull, 15213103624564562055ull, 4835703278458516698ull}}, {{4022275651784220311ull, 15556655786193328745ull, 11979463175419572495ull, 9671406556917033397ull}}, {{8183152759840664709ull, 10490028786722486395ull, 9774590264567735145ull, 1934281311383406679ull}}, {{16366305519681329418ull, 2533313499735421174ull, 1102436455425918675ull, 3868562622766813359ull}}, {{14285866965653107219ull, 5066626999470842349ull, 2204872910851837350ull, 7737125245533626718ull}}, {{10235871022614442091ull, 12081371844119899439ull, 11509021026396098439ull, 1547425049106725343ull}}, {{2024997971519332565ull, 5715999614530247263ull, 4571297979082645263ull, 3094850098213450687ull}}, {{4049995943038665129ull, 11431999229060494526ull, 9142595958165290526ull, 6189700196426901374ull}}, {{8099991886077330257ull, 4417254384411437436ull, 18285191916330581053ull, 12379400392853802748ull}}, {{8998696006699286698ull, 4572799691624197810ull, 14725084827491847180ull, 2475880078570760549ull}}, {{17997392013398573396ull, 9145599383248395620ull, 11003425581274142744ull, 4951760157141521099ull}}, {{17548039953087595175ull, 18291198766496791241ull, 3560107088838733872ull, 9903520314283042199ull}}, {{10888305620101339682ull, 7347588568041268571ull, 15469416676735388067ull, 1980704062856608439ull}}, {{3329867166493127747ull, 14695177136082537143ull, 12492089279761224518ull, 3961408125713216879ull}}, {{6659734332986255494ull, 10943610198455522670ull, 6537434485812897421ull, 7922816251426433759ull}}, {{1331946866597251099ull, 2188722039691104534ull, 16064882156130220777ull, 1584563250285286751ull}}, {{2663893733194502198ull, 4377444079382209068ull, 13683020238550889938ull, 3169126500570573503ull}}, {{5327787466389004395ull, 8754888158764418136ull, 8919296403392228260ull, 6338253001141147007ull}}, {{10655574932778008790ull, 17509776317528836272ull, 17838592806784456520ull, 12676506002282294014ull}}, {{5820463801297512082ull, 18259350522473408547ull, 18325113820324532596ull, 2535301200456458802ull}}, {{11640927602595024163ull, 18071956971237265478ull, 18203483566939513577ull, 5070602400912917605ull}}, {{4835111131480496709ull, 17697169868764979341ull, 17960223060169475539ull, 10141204801825835211ull}}, {{4656371041038009665ull, 3539433973752995868ull, 7281393426775805431ull, 2028240960365167042ull}}, {{9312742082076019330ull, 7078867947505991736ull, 14562786853551610862ull, 4056481920730334084ull}}, {{178740090442487044ull, 14157735895011983473ull, 10678829633393670108ull, 8112963841460668169ull}}, {{35748018088497409ull, 10210244808486217341ull, 16893161185646375314ull, 1622592768292133633ull}}, {{71496036176994818ull, 1973745543262883066ull, 15339578297583199013ull, 3245185536584267267ull}}, {{142992072353989635ull, 3947491086525766132ull, 12232412521456846410ull, 6490371073168534535ull}}, {{7407296043954618574ull, 789498217305153226ull, 2446482504291369282ull, 1298074214633706907ull}}, {{14814592087909237147ull, 1578996434610306452ull, 4892965008582738564ull, 2596148429267413814ull}}, {{11182440102108922678ull, 3157992869220612905ull, 9785930017165477128ull, 5192296858534827628ull}}, {{3918136130508293739ull, 6315985738441225811ull, 1125115960621402640ull, 10384593717069655257ull}}, {{11851673670327389718ull, 8641894777172065808ull, 7603720821608101174ull, 2076918743413931051ull}}, {{5256603266945227819ull, 17283789554344131617ull, 15207441643216202348ull, 4153837486827862102ull}}, {{10513206533890455638ull, 16120835034978711618ull, 11968139212722853081ull, 8307674973655724205ull}}, {{16860036565745732421ull, 6913515821737652646ull, 2393627842544570616ull, 1661534994731144841ull}}, {{15273329057781913225ull, 13827031643475305293ull, 4787255685089141232ull, 3323069989462289682ull}}, {{12099914041854274834ull, 9207319213241058971ull, 9574511370178282465ull, 6646139978924579364ull}}, {{2419982808370854967ull, 16598859101615853087ull, 16672297533003297785ull, 1329227995784915872ull}}, {{4839965616741709934ull, 14750974129522154558ull, 14897850992297043955ull, 2658455991569831745ull}}, {{9679931233483419867ull, 11055204185334757500ull, 11348957910884536295ull, 5316911983139663491ull}}, {{913118393257288118ull, 3663664296959963385ull, 4251171748059520975ull, 10633823966279326983ull}}, {{11250670122877188594ull, 11800779303617723646ull, 11918280793837635164ull, 2126764793255865396ull}}, {{4054596172044825571ull, 5154814533525895677ull, 5389817513965718713ull, 4253529586511730793ull}}, {{8109192344089651141ull, 10309629067051791354ull, 10779635027931437426ull, 8507059173023461586ull}}, {{5311187283559840552ull, 9440623442894178917ull, 5845275820328197808ull, 1701411834604692317ull}}, {{10622374567119681103ull, 434502812078806218ull, 11690551640656395617ull, 3402823669209384634ull}}, {{2798005060529810589ull, 869005624157612437ull, 4934359207603239618ull, 6805647338418769269ull}}, {{15316996271073603411ull, 7552498754315343133ull, 15744267100488289216ull, 1361129467683753853ull}}, {{12187248468437655206ull, 15104997508630686267ull, 13041790127267026816ull, 2722258935367507707ull}}, {{5927752863165758795ull, 11763250943551820919ull, 7636836180824502017ull, 5444517870735015415ull}}, {{11855505726331517589ull, 5079757813394090222ull, 15273672361649004035ull, 10889035741470030830ull}}, {{9749798774750124165ull, 1015951562678818044ull, 3054734472329800807ull, 2177807148294006166ull}}, {{1052853475790696713ull, 2031903125357636089ull, 6109468944659601614ull, 4355614296588012332ull}}, {{2105706951581393425ull, 4063806250715272178ull, 12218937889319203228ull, 8711228593176024664ull}}, {{421141390316278685ull, 8191458879626875082ull, 17201182836831481938ull, 1742245718635204932ull}}, {{842282780632557370ull, 16382917759253750164ull, 15955621599953412260ull, 3484491437270409865ull}}, {{1684565561265114740ull, 14319091444797948712ull, 13464499126197272905ull, 6968982874540819731ull}}, {{11404959556478753918ull, 6553167103701500065ull, 6382248639981364904ull, 1393796574908163946ull}}, {{4363175039247956220ull, 13106334207403000131ull, 12764497279962729808ull, 2787593149816327892ull}}, {{8726350078495912439ull, 7765924341096448646ull, 7082250486215908001ull, 5575186299632655785ull}}, {{17452700156991824877ull, 15531848682192897292ull, 14164500972431816002ull, 11150372599265311570ull}}, {{18247935290366006269ull, 10485067365922400104ull, 2832900194486363200ull, 2230074519853062314ull}}, {{18049126507022460921ull, 2523390658135248593ull, 5665800388972726401ull, 4460149039706124628ull}}, {{17651508940335370225ull, 5046781316270497187ull, 11331600777945452802ull, 8920298079412249256ull}}, {{3530301788067074045ull, 12077402707479830407ull, 5955668970331000883ull, 1784059615882449851ull}}, {{7060603576134148090ull, 5708061341250109198ull, 11911337940662001767ull, 3568119231764899702ull}}, {{14121207152268296180ull, 11416122682500218396ull, 5375931807614451918ull, 7136238463529799405ull}}, {{17581636689421300529ull, 13351270980725774648ull, 1075186361522890383ull, 1427247692705959881ull}}, {{16716529305133049442ull, 8255797887741997681ull, 2150372723045780767ull, 2854495385411919762ull}}, {{14986314536556547267ull, 16511595775483995363ull, 4300745446091561534ull, 5708990770823839524ull}}, {{11525884999403542918ull, 14576447477258439111ull, 8601490892183123069ull, 11417981541647679048ull}}, {{13373223444106439554ull, 10293987124935508468ull, 12788344622662355583ull, 2283596308329535809ull}}, {{8299702814503327491ull, 2141230176161465321ull, 7129945171615159551ull, 4567192616659071619ull}}, {{16599405629006654981ull, 4282460352322930642ull, 14259890343230319102ull, 9134385233318143238ull}}, {{10698578755285151643ull, 856492070464586128ull, 13920024512871794790ull, 1826877046663628647ull}}, {{2950413436860751669ull, 1712984140929172257ull, 9393304952034037964ull, 3653754093327257295ull}}, {{5900826873721503338ull, 3425968281858344514ull, 339865830358524312ull, 7307508186654514591ull}}, {{8558863004228121314ull, 11753240100597399872ull, 3757321980813615185ull, 1461501637330902918ull}}, {{17117726008456242628ull, 5059736127485248128ull, 7514643961627230371ull, 2923003274661805836ull}}, {{15788707943202933640ull, 10119472254970496257ull, 15029287923254460742ull, 5846006549323611672ull}}, {{13130671812696315664ull, 1792200436231440899ull, 11611831772799369869ull, 11692013098647223345ull}}, {{13694180806764994103ull, 15115835346213929472ull, 2322366354559873973ull, 2338402619729444669ull}}, {{8941617539820436589ull, 11784926618718307329ull, 4644732709119747947ull, 4676805239458889338ull}}, {{17883235079640873178ull, 5123109163727063042ull, 9289465418239495895ull, 9353610478917778676ull}}, {{14644693460153905606ull, 4713970647487322931ull, 5547241898389809502ull, 1870722095783555735ull}}, {{10842642846598259595ull, 9427941294974645863ull, 11094483796779619004ull, 3741444191567111470ull}}, {{3238541619486967573ull, 409138516239740111ull, 3742223519849686393ull, 7482888383134222941ull}}, {{647708323897393515ull, 14839222962215589315ull, 4437793518711847601ull, 1496577676626844588ull}}, {{1295416647794787029ull, 11231701850721627014ull, 8875587037423695203ull, 2993155353253689176ull}}, {{2590833295589574058ull, 4016659627733702412ull, 17751174074847390407ull, 5986310706507378352ull}}, {{5181666591179148116ull, 8033319255467404824ull, 17055604075985229198ull, 11972621413014756705ull}}, {{8415030947719650270ull, 12674710295319211934ull, 3411120815197045839ull, 2394524282602951341ull}}, {{16830061895439300539ull, 6902676516928872252ull, 6822241630394091679ull, 4789048565205902682ull}}, {{15213379717169049462ull, 13805353033857744505ull, 13644483260788183358ull, 9578097130411805364ull}}, {{10421373572917630539ull, 10139768236255369547ull, 17486291911125277964ull, 1915619426082361072ull}}, {{2396003072125709462ull, 1832792398801187479ull, 16525839748541004313ull, 3831238852164722145ull}}, {{4792006144251418924ull, 3665584797602374958ull, 14604935423372457010ull, 7662477704329444291ull}}, {{15715796487817925078ull, 4422465774262385314ull, 6610335899416401725ull, 1532495540865888858ull}}, {{12984848901926298539ull, 8844931548524770629ull, 13220671798832803450ull, 3064991081731777716ull}}, {{7522953730143045462ull, 17689863097049541259ull, 7994599523956055284ull, 6129982163463555433ull}}, {{15045907460286090924ull, 16932982120389530902ull, 15989199047912110569ull, 12259964326927110866ull}}, {{10387879121541038832ull, 3386596424077906180ull, 6887188624324332437ull, 2451992865385422173ull}}, {{2329014169372526047ull, 6773192848155812361ull, 13774377248648664874ull, 4903985730770844346ull}}, {{4658028338745052093ull, 13546385696311624722ull, 9102010423587778132ull, 9807971461541688693ull}}, {{8310303297232831065ull, 2709277139262324944ull, 12888448528943286596ull, 1961594292308337738ull}}, {{16620606594465662130ull, 5418554278524649888ull, 7330152984177021576ull, 3923188584616675477ull}}, {{14794469115221772644ull, 10837108557049299777ull, 14660305968354043152ull, 7846377169233350954ull}}, {{14026940267270085499ull, 5856770526151770278ull, 17689456452638449923ull, 1569275433846670190ull}}, {{9607136460830619381ull, 11713541052303540557ull, 16932168831567348230ull, 3138550867693340381ull}}, {{767528847951687146ull, 4980338030897529499ull, 15417593589425144845ull, 6277101735386680763ull}}, {{1535057695903374291ull, 9960676061795058998ull, 12388443105140738074ull, 12554203470773361527ull}}, {{15064406798148316151ull, 5681484027100922122ull, 9856386250511968261ull, 2510840694154672305ull}}, {{11682069522587080686ull, 11362968054201844245ull, 1266028427314384906ull, 5021681388309344611ull}}, {{4917394971464609756ull, 4279192034694136875ull, 2532056854628769813ull, 10043362776618689222ull}}, {{983478994292921952ull, 855838406938827375ull, 7885109000409574609ull, 2008672555323737844ull}}, {{1966957988585843903ull, 1711676813877654750ull, 15770218000819149218ull, 4017345110647475688ull}}, {{3933915977171687805ull, 3423353627755309500ull, 13093691927928746820ull, 8034690221294951377ull}}, {{8165480824918158208ull, 8063368355034882546ull, 9997436015069570010ull, 1606938044258990275ull}}, {{16330961649836316415ull, 16126736710069765092ull, 1548127956429588404ull, 3213876088517980551ull}}, {{14215179225963081214ull, 13806729346429978569ull, 3096255912859176809ull, 6427752177035961102ull}}, {{2843035845192616243ull, 6450694684027906037ull, 7997948812055656008ull, 1285550435407192220ull}}, {{5686071690385232486ull, 12901389368055812074ull, 15995897624111312016ull, 2571100870814384440ull}}, {{11372143380770464971ull, 7356034662402072532ull, 13545051174513072417ull, 5142201741628768881ull}}, {{4297542687831378326ull, 14712069324804145065ull, 8643358275316593218ull, 10284403483257537763ull}}, {{4548857352308185989ull, 6631762679702739336ull, 12796718099289049613ull, 2056880696651507552ull}}, {{9097714704616371977ull, 13263525359405478672ull, 7146692124868547610ull, 4113761393303015105ull}}, {{18195429409232743953ull, 8080306645101405728ull, 14293384249737095221ull, 8227522786606030210ull}}, {{18396481140814190084ull, 5305410143762191468ull, 2858676849947419044ull, 1645504557321206042ull}}, {{18346218207918828551ull, 10610820287524382937ull, 5717353699894838088ull, 3291009114642412084ull}}, {{18245692342128105486ull, 2774896501339214259ull, 11434707399789676177ull, 6582018229284824168ull}}, {{18406533727393262390ull, 554979300267842851ull, 13354987924183666205ull, 1316403645856964833ull}}, {{18366323381076973164ull, 1109958600535685703ull, 8263231774657780794ull, 2632807291713929667ull}}, {{18285902688444394712ull, 2219917201071371407ull, 16526463549315561588ull, 5265614583427859334ull}}, {{18125061303179237808ull, 4439834402142742815ull, 14606183024921571560ull, 10531229166855718669ull}}, {{18382407519603488855ull, 15645362139396189855ull, 17678631863951955604ull, 2106245833371143733ull}}, {{18318070965497426093ull, 12843980205082828095ull, 16910519654194359593ull, 4212491666742287467ull}}, {{18189397857285300569ull, 7241216336456104575ull, 15374295234679167571ull, 8424983333484574935ull}}, {{7327228386198970437ull, 5137592082033131238ull, 3074859046935833514ull, 1684996666696914987ull}}, {{14654456772397940874ull, 10275184164066262476ull, 6149718093871667028ull, 3369993333393829974ull}}, {{10862169471086330132ull, 2103624254422973337ull, 12299436187743334057ull, 6739986666787659948ull}}, {{9551131523701086673ull, 420724850884594667ull, 13527933681774397781ull, 1347997333357531989ull}}, {{655518973692621730ull, 841449701769189335ull, 8609123289839243946ull, 2695994666715063979ull}}, {{1311037947385243460ull, 1682899403538378670ull, 17218246579678487892ull, 5391989333430127958ull}}, {{2622075894770486919ull, 3365798807076757340ull, 15989749085647424168ull, 10783978666860255917ull}}, {{524415178954097384ull, 673159761415351468ull, 10576647446613305480ull, 2156795733372051183ull}}, {{1048830357908194768ull, 1346319522830702936ull, 2706550819517059344ull, 4313591466744102367ull}}, {{2097660715816389535ull, 2692639045661405872ull, 5413101639034118688ull, 8627182933488204734ull}}, {{15176927402130919200ull, 7917225438616101820ull, 15840015586774465030ull, 1725436586697640946ull}}, {{11907110730552286784ull, 15834450877232203641ull, 13233287099839378444ull, 3450873173395281893ull}}, {{5367477387395021951ull, 13222157680754855667ull, 8019830125969205273ull, 6901746346790563787ull}}, {{8452193106962825037ull, 2644431536150971133ull, 8982663654677661701ull, 1380349269358112757ull}}, {{16904386213925650074ull, 5288863072301942266ull, 17965327309355323402ull, 2760698538716225514ull}}, {{15362028354141748531ull, 10577726144603884533ull, 17483910545001095188ull, 5521397077432451029ull}}, {{12277312634573945445ull, 2708708215498217451ull, 16521077016292638761ull, 11042794154864902059ull}}, {{6144811341656699413ull, 541741643099643490ull, 18061610662226169045ull, 2208558830972980411ull}}, {{12289622683313398825ull, 1083483286199286980ull, 17676477250742786474ull, 4417117661945960823ull}}, {{6132501292917246033ull, 2166966572398573961ull, 16906210427776021332ull, 8834235323891921647ull}}, {{1226500258583449207ull, 15190788573447356085ull, 10759939715039024912ull, 1766847064778384329ull}}, {{2453000517166898414ull, 11934833073185160554ull, 3073135356368498209ull, 3533694129556768659ull}}, {{4906001034333796827ull, 5422922072660769492ull, 6146270712736996419ull, 7067388259113537318ull}}, {{15738595465834400659ull, 8463282044015974544ull, 12297300586773130253ull, 1413477651822707463ull}}, {{13030446857959249701ull, 16926564088031949089ull, 6147857099836708890ull, 2826955303645414927ull}}, {{7614149642208947785ull, 15406384102354346563ull, 12295714199673417781ull, 5653910607290829854ull}}, {{15228299284417895569ull, 12366024130999141510ull, 6144684325637283947ull, 11307821214581659709ull}}, {{6735008671625489437ull, 6162553640941738625ull, 15986332124095098082ull, 2261564242916331941ull}}, {{13470017343250978874ull, 12325107281883477250ull, 13525920174480644548ull, 4523128485832663883ull}}, {{8493290612792406132ull, 6203470490057402885ull, 8605096275251737481ull, 9046256971665327767ull}}, {{12766704566784212196ull, 12308740542237211546ull, 9099716884534168142ull, 1809251394333065553ull}}, {{7086665059858872776ull, 6170737010764871477ull, 18199433769068336285ull, 3618502788666131106ull}}, {{14173330119717745552ull, 12341474021529742954ull, 17952123464427120954ull, 7237005577332262213ull}}, {{6524014838685459434ull, 9846992433789769237ull, 14658471137111155160ull, 1447401115466452442ull}}, {{13048029677370918867ull, 1247240793869986858ull, 10870198200512758705ull, 2894802230932904885ull}}, {{7649315281032286118ull, 2494481587739973717ull, 3293652327315965794ull, 5789604461865809771ull}}, {{15298630562064572236ull, 4988963175479947434ull, 6587304654631931588ull, 11579208923731619542ull}}, {{17817121371380555740ull, 997792635095989486ull, 8696158560410206964ull, 2315841784746323908ull}}, {{17187498669051559864ull, 1995585270191978973ull, 17392317120820413928ull, 4631683569492647816ull}}, {{15928253264393568112ull, 3991170540383957947ull, 16337890167931276240ull, 9263367138985295633ull}}, {{3185650652878713623ull, 11866280552302522559ull, 14335624477811986217ull, 1852673427797059126ull}}, {{6371301305757427245ull, 5285817030895493502ull, 10224504881914420819ull, 3705346855594118253ull}}, {{12742602611514854490ull, 10571634061790987004ull, 2002265690119290022ull, 7410693711188236507ull}}, {{13616566966528701868ull, 16871722071325838693ull, 7779150767507678650ull, 1482138742237647301ull}}, {{8786389859347852119ull, 15296700068942125771ull, 15558301535015357301ull, 2964277484475294602ull}}, {{17572779718695704238ull, 12146656064174699926ull, 12669858996321162987ull, 5928554968950589205ull}}, {{16698815363681856860ull, 5846568054639848237ull, 6892973918932774359ull, 11857109937901178411ull}}, {{10718460702220192019ull, 1169313610927969647ull, 5067943598528465195ull, 2371421987580235682ull}}, {{2990177330730832421ull, 2338627221855939295ull, 10135887197056930390ull, 4742843975160471364ull}}, {{5980354661461664842ull, 4677254443711878590ull, 1825030320404309164ull, 9485687950320942729ull}}, {{12264117376518063938ull, 12003497332968106687ull, 15122401323048503125ull, 1897137590064188545ull}}, {{6081490679326576260ull, 5560250592226661759ull, 11798058572387454635ull, 3794275180128377091ull}}, {{12162981358653152520ull, 11120501184453323518ull, 5149373071065357654ull, 7588550360256754183ull}}, {{2432596271730630504ull, 9602797866374485350ull, 12097921058438802500ull, 1517710072051350836ull}}, {{4865192543461261008ull, 758851659039419084ull, 5749098043168053385ull, 3035420144102701673ull}}, {{9730385086922522016ull, 1517703318078838168ull, 11498196086336106770ull, 6070840288205403346ull}}, {{1014026100135492416ull, 3035406636157676337ull, 4549648098962661924ull, 12141680576410806693ull}}, {{14960200478994739776ull, 7985778956715355913ull, 11977976064018263354ull, 2428336115282161338ull}}, {{11473656884279927936ull, 15971557913430711827ull, 5509208054326975092ull, 4856672230564322677ull}}, {{4500569694850304256ull, 13496371753151872039ull, 11018416108653950185ull, 9713344461128645354ull}}, {{11968160383195791821ull, 17456669609598015700ull, 16961078480698431329ull, 1942668892225729070ull}}, {{5489576692682032026ull, 16466595145486479785ull, 15475412887687311043ull, 3885337784451458141ull}}, {{10979153385364064051ull, 14486446217263407954ull, 12504081701665070471ull, 7770675568902916283ull}}, {{13263877121298543780ull, 17654684502420322883ull, 13568862784558745063ull, 1554135113780583256ull}}, {{8081010168887535944ull, 16862624931131094151ull, 8690981495407938511ull, 3108270227561166513ull}}, {{16162020337775071888ull, 15278505788552636686ull, 17381962990815877023ull, 6216540455122333026ull}}, {{13877296601840592159ull, 12110267503395721757ull, 16317181907922202431ull, 12433080910244666053ull}}, {{6464808135110028755ull, 17179448759646785644ull, 14331482825810171455ull, 2486616182048933210ull}}, {{12929616270220057510ull, 15912153445584019672ull, 10216221577910791295ull, 4973232364097866421ull}}, {{7412488466730563404ull, 13377562817458487729ull, 1985699082112030975ull, 9946464728195732843ull}}, {{8861195322829933328ull, 13743559007717428515ull, 11465186260648137164ull, 1989292945639146568ull}}, {{17722390645659866655ull, 9040373941725305414ull, 4483628447586722713ull, 3978585891278293137ull}}, {{16998037217610181693ull, 18080747883450610829ull, 8967256895173445426ull, 7957171782556586274ull}}, {{18157002702489677632ull, 3616149576690122165ull, 16550846638002330378ull, 1591434356511317254ull}}, {{17867261331269803647ull, 7232299153380244331ull, 14654949202295109140ull, 3182868713022634509ull}}, {{17287778588830055677ull, 14464598306760488663ull, 10863154330880666664ull, 6365737426045269019ull}}, {{16128813103950559738ull, 10482452539811425711ull, 3279564588051781713ull, 12731474852090538039ull}}, {{14293809065015842918ull, 9475188137446105788ull, 15413308176577997635ull, 2546294970418107607ull}}, {{10140874056322134219ull, 503632201182659961ull, 12379872279446443655ull, 5092589940836215215ull}}, {{1835004038934716821ull, 1007264402365319923ull, 6313000485183335694ull, 10185179881672430431ull}}, {{11435047252012674334ull, 201452880473063984ull, 4951948911778577462ull, 2037035976334486086ull}}, {{4423350430315797052ull, 402905760946127969ull, 9903897823557154924ull, 4074071952668972172ull}}, {{8846700860631594104ull, 805811521892255938ull, 1361051573404758232ull, 8148143905337944345ull}}, {{1769340172126318821ull, 7539859933862271834ull, 272210314680951646ull, 1629628781067588869ull}}, {{3538680344252637642ull, 15079719867724543668ull, 544420629361903292ull, 3259257562135177738ull}}, {{7077360688505275283ull, 11712695661739535720ull, 1088841258723806585ull, 6518515124270355476ull}}, {{5104820952442965380ull, 6031887947089817467ull, 3907117066486671640ull, 1303703024854071095ull}}, {{10209641904885930760ull, 12063775894179634934ull, 7814234132973343280ull, 2607406049708142190ull}}, {{1972539736062309903ull, 5680807714649718253ull, 15628468265946686561ull, 5214812099416284380ull}}, {{3945079472124619806ull, 11361615429299436506ull, 12810192458183821506ull, 10429624198832568761ull}}, {{11857062338650654931ull, 9651020715343707947ull, 6251387306378674624ull, 2085924839766513752ull}}, {{5267380603591758246ull, 855297356977864279ull, 12502774612757349249ull, 4171849679533027504ull}}, {{10534761207183516491ull, 1710594713955728558ull, 6558805151805146882ull, 8343699359066055009ull}}, {{16864347500404344591ull, 4031467757533056034ull, 16069156289328670669ull, 1668739871813211001ull}}, {{15281950927099137566ull, 8062935515066112069ull, 13691568504947789722ull, 3337479743626422003ull}}, {{12117157780488723516ull, 16125871030132224139ull, 8936392936186027828ull, 6674959487252844007ull}}, {{17180826815065385996ull, 3225174206026444827ull, 9165976216721026212ull, 1334991897450568801ull}}, {{15914909556421220376ull, 6450348412052889655ull, 18331952433442052424ull, 2669983794901137602ull}}, {{13383075039132889136ull, 12900696824105779311ull, 18217160793174553232ull, 5339967589802275205ull}}, {{8319406004556226656ull, 7354649574502007007ull, 17987577512639554849ull, 10679935179604550411ull}}, {{9042578830395065978ull, 1470929914900401401ull, 7286864317269821293ull, 2135987035920910082ull}}, {{18085157660790131956ull, 2941859829800802802ull, 14573728634539642586ull, 4271974071841820164ull}}, {{17723571247870712295ull, 5883719659601605605ull, 10700713195369733556ull, 8543948143683640329ull}}, {{3544714249574142459ull, 1176743931920321121ull, 16897537898041588004ull, 1708789628736728065ull}}, {{7089428499148284918ull, 2353487863840642242ull, 15348331722373624392ull, 3417579257473456131ull}}, {{14178856998296569836ull, 4706975727681284484ull, 12249919371037697168ull, 6835158514946912263ull}}, {{2835771399659313968ull, 4630743960278167220ull, 13518030318433270403ull, 1367031702989382452ull}}, {{5671542799318627935ull, 9261487920556334440ull, 8589316563156989190ull, 2734063405978764905ull}}, {{11343085598637255869ull, 76231767403117264ull, 17178633126313978381ull, 5468126811957529810ull}}, {{4239427123564960121ull, 152463534806234529ull, 15910522178918405146ull, 10936253623915059621ull}}, {{4537234239454902348ull, 7409190336445067552ull, 6871453250525591352ull, 2187250724783011924ull}}, {{9074468478909804695ull, 14818380672890135104ull, 13742906501051182704ull, 4374501449566023848ull}}, {{18148936957819609390ull, 11190017272070718592ull, 9039068928392813793ull, 8749002899132047697ull}}, {{11008485021047742525ull, 2238003454414143718ull, 9186511415162383405ull, 1749800579826409539ull}}, {{3570225968385933433ull, 4476006908828287437ull, 18373022830324766810ull, 3499601159652819078ull}}, {{7140451936771866865ull, 8952013817656574874ull, 18299301586939982004ull, 6999202319305638157ull}}, {{1428090387354373373ull, 5479751578273225298ull, 11038557946871817047ull, 1399840463861127631ull}}, {{2856180774708746746ull, 10959503156546450596ull, 3630371820034082478ull, 2799680927722255263ull}}, {{5712361549417493492ull, 3472262239383349576ull, 7260743640068164957ull, 5599361855444510526ull}}, {{11424723098834986984ull, 6944524478766699152ull, 14521487280136329914ull, 11198723710889021052ull}}, {{13352991063992728367ull, 5078253710495250153ull, 10282995085511086629ull, 2239744742177804210ull}}, {{8259238054275905117ull, 10156507420990500307ull, 2119246097312621642ull, 4479489484355608421ull}}, {{16518476108551810234ull, 1866270768271448998ull, 4238492194625243285ull, 8958978968711216842ull}}, {{3303695221710362047ull, 7751951783138110446ull, 8226396068408869303ull, 1791795793742243368ull}}, {{6607390443420724094ull, 15503903566276220892ull, 16452792136817738606ull, 3583591587484486736ull}}, {{13214780886841448187ull, 12561063058842890168ull, 14458840199925925597ull, 7167183174968973473ull}}, {{13711002621594020607ull, 2512212611768578033ull, 13959814484210916089ull, 1433436634993794694ull}}, {{8975261169478489598ull, 5024425223537156067ull, 9472884894712280562ull, 2866873269987589389ull}}, {{17950522338956979196ull, 10048850447074312134ull, 499025715715009508ull, 5733746539975178779ull}}, {{17454300604204406776ull, 1650956820439072653ull, 998051431430019017ull, 11467493079950357558ull}}, {{14558906565066612325ull, 330191364087814530ull, 11267656730511734773ull, 2293498615990071511ull}}, {{10671069056423673034ull, 660382728175629061ull, 4088569387313917930ull, 4586997231980143023ull}}, {{2895394039137794452ull, 1320765456351258123ull, 8177138774627835860ull, 9173994463960286046ull}}, {{15336474066795200184ull, 3953501906012161947ull, 5324776569667477495ull, 1834798892792057209ull}}, {{12226204059880848751ull, 7907003812024323895ull, 10649553139334954990ull, 3669597785584114418ull}}, {{6005664046052145885ull, 15814007624048647791ull, 2852362204960358364ull, 7339195571168228837ull}}, {{8579830438694249824ull, 6852150339551639881ull, 7949170070475892319ull, 1467839114233645767ull}}, {{17159660877388499647ull, 13704300679103279762ull, 15898340140951784638ull, 2935678228467291534ull}}, {{15872577681067447677ull, 8961857284497007909ull, 13349936208194017661ull, 5871356456934583069ull}}, {{13298411288425343738ull, 17923714568994015819ull, 8253128342678483706ull, 11742712913869166139ull}}, {{17417077516652710041ull, 3584742913798803163ull, 16408020927503338034ull, 2348542582773833227ull}}, {{16387410959595868465ull, 7169485827597606327ull, 14369297781297124452ull, 4697085165547666455ull}}, {{14328077845482185314ull, 14338971655195212655ull, 10291851488884697288ull, 9394170331095332911ull}}, {{17623010828064078356ull, 17625189590006683823ull, 5747719112518849780ull, 1878834066219066582ull}}, {{16799277582418605095ull, 16803635106303816031ull, 11495438225037699561ull, 3757668132438133164ull}}, {{15151811091127658574ull, 15160526138898080447ull, 4544132376365847507ull, 7515336264876266329ull}}, {{14098408662451262685ull, 6721454042521526412ull, 15666221734240810794ull, 1503067252975253265ull}}, {{9750073251192973753ull, 13442908085043052825ull, 12885699394772069972ull, 3006134505950506531ull}}, {{1053402428676395890ull, 8439072096376554035ull, 7324654715834588329ull, 6012269011901013063ull}}, {{2106804857352791779ull, 16878144192753108070ull, 14649309431669176658ull, 12024538023802026126ull}}, {{15178756230438199649ull, 18133024097518262906ull, 6619210701075745654ull, 2404907604760405225ull}}, {{11910768387166847682ull, 17819304121326974197ull, 13238421402151491309ull, 4809815209520810450ull}}, {{5374792700624143747ull, 17191864168944396779ull, 8030098730593431003ull, 9619630419041620901ull}}, {{12143004984350559719ull, 18195768092756520648ull, 5295368560860596523ull, 1923926083808324180ull}}, {{5839265894991567822ull, 17944792111803489681ull, 10590737121721193047ull, 3847852167616648360ull}}, {{11678531789983135644ull, 17442840149897427746ull, 2734730169732834479ull, 7695704335233296721ull}}, {{6025055172738537452ull, 3488568029979485549ull, 4236294848688477219ull, 1539140867046659344ull}}, {{12050110345477074904ull, 6977136059958971098ull, 8472589697376954438ull, 3078281734093318688ull}}, {{5653476617244598192ull, 13954272119917942197ull, 16945179394753908876ull, 6156563468186637376ull}}, {{11306953234489196384ull, 9461800166126332778ull, 15443614715798266137ull, 12313126936373274753ull}}, {{13329437091123570247ull, 1892360033225266555ull, 14156769387385384197ull, 2462625387274654950ull}}, {{8212130108537588877ull, 3784720066450533111ull, 9866794701061216778ull, 4925250774549309901ull}}, {{16424260217075177753ull, 7569440132901066222ull, 1286845328412881940ull, 9850501549098619803ull}}, {{3284852043415035551ull, 12581934470805944214ull, 11325415509908307357ull, 1970100309819723960ull}}, {{6569704086830071102ull, 6717124867902336812ull, 4204086946107063099ull, 3940200619639447921ull}}, {{13139408173660142203ull, 13434249735804673624ull, 8408173892214126198ull, 7880401239278895842ull}}, {{17385276893699669734ull, 2686849947160934724ull, 9060332407926645886ull, 1576080247855779168ull}}, {{16323809713689787851ull, 5373699894321869449ull, 18120664815853291772ull, 3152160495711558336ull}}, {{14200875353670024086ull, 10747399788643738899ull, 17794585557997031928ull, 6304320991423116673ull}}, {{9955006633630496555ull, 3048055503577926183ull, 17142427042284512241ull, 12608641982846233347ull}}, {{5680350141468009635ull, 11677657544941316206ull, 10807183037940723094ull, 2521728396569246669ull}}, {{11360700282936019269ull, 4908571016173080796ull, 3167622002171894573ull, 5043456793138493339ull}}, {{4274656492162486921ull, 9817142032346161593ull, 6335244004343789146ull, 10086913586276986678ull}}, {{8233628927916318031ull, 16720823665436873611ull, 12335095245094488798ull, 2017382717255397335ull}}, {{16467257855832636061ull, 14994903257164195606ull, 6223446416479425981ull, 4034765434510794671ull}}, {{14487771637955720506ull, 11543062440618839597ull, 12446892832958851963ull, 8069530869021589342ull}}, {{10276251957074964748ull, 2308612488123767919ull, 9868076196075591039ull, 1613906173804317868ull}}, {{2105759840440377880ull, 4617224976247535839ull, 1289408318441630462ull, 3227812347608635737ull}}, {{4211519680880755759ull, 9234449952495071678ull, 2578816636883260924ull, 6455624695217271474ull}}, {{4531652750918061475ull, 12914936434724745305ull, 15273158586344293477ull, 1291124939043454294ull}}, {{9063305501836122950ull, 7383128795739938994ull, 12099573098979035339ull, 2582249878086908589ull}}, {{18126611003672245900ull, 14766257591479877988ull, 5752402124248519062ull, 5164499756173817179ull}}, {{17806477933634940183ull, 11085771109250204361ull, 11504804248497038125ull, 10328999512347634358ull}}, {{18318690845694629330ull, 13285200666075771841ull, 13369007293925138594ull, 2065799902469526871ull}}, {{18190637617679707043ull, 8123657258441992067ull, 8291270514140725573ull, 4131599804939053743ull}}, {{17934531161649862470ull, 16247314516883984135ull, 16582541028281451146ull, 8263199609878107486ull}}, {{10965603861813793141ull, 10628160532860617473ull, 7005857020398200552ull, 1652639921975621497ull}}, {{3484463649918034665ull, 2809576992011683331ull, 14011714040796401105ull, 3305279843951242994ull}}, {{6968927299836069330ull, 5619153984023366662ull, 9576684007883250594ull, 6610559687902485989ull}}, {{1393785459967213866ull, 12191877241030404302ull, 16672732060544291411ull, 1322111937580497197ull}}, {{2787570919934427732ull, 5937010408351256988ull, 14898720047379031207ull, 2644223875160994395ull}}, {{5575141839868855464ull, 11874020816702513976ull, 11350696021048510798ull, 5288447750321988791ull}}, {{11150283679737710927ull, 5301297559695476336ull, 4254647968387469981ull, 10576895500643977583ull}}, {{2230056735947542186ull, 15817654770906736560ull, 11918976037903224965ull, 2115379100128795516ull}}, {{4460113471895084371ull, 13188565468103921504ull, 5391208002096898315ull, 4230758200257591033ull}}, {{8920226943790168742ull, 7930386862498291392ull, 10782416004193796631ull, 8461516400515182066ull}}, {{16541440647725675042ull, 8964775001983478924ull, 5845832015580669649ull, 1692303280103036413ull}}, {{14636137221741798467ull, 17929550003966957849ull, 11691664031161339298ull, 3384606560206072826ull}}, {{10825530369774045317ull, 17412355934224364083ull, 4936583988613126981ull, 6769213120412145653ull}}, {{9543803703438629710ull, 18239866445812514109ull, 12055363241948356365ull, 1353842624082429130ull}}, {{640863333167707804ull, 18032988817915476603ull, 5663982410187161115ull, 2707685248164858261ull}}, {{1281726666335415607ull, 17619233562121401590ull, 11327964820374322231ull, 5415370496329716522ull}}, {{2563453332670831214ull, 16791723050533251564ull, 4209185567039092847ull, 10830740992659433045ull}}, {{4202039481276076566ull, 10737042239590470959ull, 841837113407818569ull, 2166148198531886609ull}}, {{8404078962552153132ull, 3027340405471390302ull, 1683674226815637139ull, 4332296397063773218ull}}, {{16808157925104306264ull, 6054680810942780604ull, 3367348453631274278ull, 8664592794127546436ull}}, {{14429678029246592223ull, 15968331421156197413ull, 4362818505468165178ull, 1732918558825509287ull}}, {{10412611984783632829ull, 13489918768602843211ull, 8725637010936330357ull, 3465837117651018574ull}}, {{2378479895857714042ull, 8533093463496134807ull, 17451274021872660715ull, 6931674235302037148ull}}, {{475695979171542809ull, 12774665136924957931ull, 14558301248600263112ull, 1386334847060407429ull}}, {{951391958343085617ull, 7102586200140364246ull, 10669858423490974609ull, 2772669694120814859ull}}, {{1902783916686171233ull, 14205172400280728492ull, 2892972773272397602ull, 5545339388241629719ull}}, {{3805567833372342466ull, 9963600726851905368ull, 5785945546544795205ull, 11090678776483259438ull}}, {{4450462381416378817ull, 13060766589596112043ull, 12225235553534690010ull, 2218135755296651887ull}}, {{8900924762832757633ull, 7674789105482672470ull, 6003727033359828405ull, 4436271510593303775ull}}, {{17801849525665515266ull, 15349578210965344940ull, 12007454066719656810ull, 8872543021186607550ull}}, {{3560369905133103054ull, 3069915642193068988ull, 2401490813343931362ull, 1774508604237321510ull}}, {{7120739810266206107ull, 6139831284386137976ull, 4802981626687862724ull, 3549017208474643020ull}}, {{14241479620532412213ull, 12279662568772275952ull, 9605963253375725448ull, 7098034416949286040ull}}, {{2848295924106482443ull, 13523978957980186160ull, 1921192650675145089ull, 1419606883389857208ull}}, {{5696591848212964885ull, 8601213842250820704ull, 3842385301350290179ull, 2839213766779714416ull}}, {{11393183696425929770ull, 17202427684501641408ull, 7684770602700580358ull, 5678427533559428832ull}}, {{4339623319142307924ull, 15958111295293731201ull, 15369541205401160717ull, 11356855067118857664ull}}, {{8246622293312282232ull, 6880971073800656563ull, 17831303500047873436ull, 2271371013423771532ull}}, {{16493244586624564463ull, 13761942147601313126ull, 17215862926386195256ull, 4542742026847543065ull}}, {{14539745099539577309ull, 9077140221493074637ull, 15984981779062838897ull, 9085484053695086131ull}}, {{2907949019907915462ull, 12883474488524345897ull, 6886345170554478102ull, 1817096810739017226ull}}, {{5815898039815830924ull, 7320204903339140178ull, 13772690341108956205ull, 3634193621478034452ull}}, {{11631796079631661847ull, 14640409806678280356ull, 9098636608508360794ull, 7268387242956068905ull}}, {{2326359215926332370ull, 17685477220303297364ull, 1819727321701672158ull, 1453677448591213781ull}}, {{4652718431852664739ull, 16924210366897043112ull, 3639454643403344317ull, 2907354897182427562ull}}, {{9305436863705329478ull, 15401676660084534608ull, 7278909286806688635ull, 5814709794364855124ull}}, {{164129653701107339ull, 12356609246459517601ull, 14557818573613377271ull, 11629419588729710248ull}}, {{32825930740221468ull, 17228717108259544813ull, 13979610158948406423ull, 2325883917745942049ull}}, {{65651861480442936ull, 16010690142809538010ull, 9512476244187261231ull, 4651767835491884099ull}}, {{131303722960885872ull, 13574636211909524404ull, 578208414664970847ull, 9303535670983768199ull}}, {{26260744592177175ull, 6404276057123815204ull, 14873036941900635462ull, 1860707134196753639ull}}, {{52521489184354349ull, 12808552114247630408ull, 11299329810091719308ull, 3721414268393507279ull}}, {{105042978368708697ull, 7170360154785709200ull, 4151915546473887001ull, 7442828536787014559ull}}, {{21008595673741740ull, 1434072030957141840ull, 15587778368262418693ull, 1488565707357402911ull}}, {{42017191347483479ull, 2868144061914283680ull, 12728812662815285770ull, 2977131414714805823ull}}, {{84034382694966958ull, 5736288123828567360ull, 7010881251921019924ull, 5954262829429611647ull}}, {{168068765389933915ull, 11472576247657134720ull, 14021762503842039848ull, 11908525658859223294ull}}, {{7412311382561807430ull, 9673212879015247590ull, 17561747759736049262ull, 2381705131771844658ull}}, {{14824622765123614859ull, 899681684320943564ull, 16676751445762546909ull, 4763410263543689317ull}}, {{11202501456537678102ull, 1799363368641887129ull, 14906758817815542202ull, 9526820527087378635ull}}, {{5929849106049445944ull, 7738570303212198072ull, 2981351763563108440ull, 1905364105417475727ull}}, {{11859698212098891888ull, 15477140606424396144ull, 5962703527126216880ull, 3810728210834951454ull}}, {{5272652350488232159ull, 12507537139139240673ull, 11925407054252433761ull, 7621456421669902908ull}}, {{8433228099581467079ull, 17258902686795489427ull, 13453127855076217721ull, 1524291284333980581ull}}, {{16866456199162934157ull, 16071061299881427238ull, 8459511636442883827ull, 3048582568667961163ull}}, {{15286168324616316697ull, 13695378526053302861ull, 16919023272885767655ull, 6097165137335922326ull}}, {{12125592575523081777ull, 8944012978397054107ull, 15391302472061983695ull, 12194330274671844653ull}}, {{2425118515104616356ull, 12856849039905141791ull, 14146306938638127708ull, 2438866054934368930ull}}, {{4850237030209232711ull, 7266954006100731966ull, 9845869803566703801ull, 4877732109868737861ull}}, {{9700474060418465421ull, 14533908012201463932ull, 1244995533423855986ull, 9755464219737475723ull}}, {{5629443626825603408ull, 17664176861407934079ull, 11317045550910502166ull, 1951092843947495144ull}}, {{11258887253651206815ull, 16881609649106316542ull, 4187347028111452717ull, 3902185687894990289ull}}, {{4071030433592862014ull, 15316475224503081469ull, 8374694056222905435ull, 7804371375789980578ull}}, {{8192903716202393050ull, 14131341489126347263ull, 12742985255470312056ull, 1560874275157996115ull}}, {{16385807432404786099ull, 9815938904543142910ull, 7039226437231072497ull, 3121748550315992231ull}}, {{14324870791100020581ull, 1185133735376734205ull, 14078452874462144995ull, 6243497100631984462ull}}, {{10202997508490489545ull, 2370267470753468411ull, 9710161675214738374ull, 12486994201263968925ull}}, {{2040599501698097909ull, 15231448753118334975ull, 1942032335042947674ull, 2497398840252793785ull}}, {{4081199003396195818ull, 12016153432527118334ull, 3884064670085895349ull, 4994797680505587570ull}}, {{8162398006792391636ull, 5585562791344685052ull, 7768129340171790699ull, 9989595361011175140ull}}, {{5321828416100388651ull, 15874507817236578303ull, 1553625868034358139ull, 1997919072202235028ull}}, {{10643656832200777301ull, 13302271560763604990ull, 3107251736068716279ull, 3995838144404470056ull}}, {{2840569590692002986ull, 8157799047817658365ull, 6214503472137432559ull, 7991676288808940112ull}}, {{4257462732880310921ull, 5320908624305441996ull, 8621598323911307158ull, 1598335257761788022ull}}, {{8514925465760621841ull, 10641817248610883992ull, 17243196647822614316ull, 3196670515523576044ull}}, {{17029850931521243682ull, 2836890423512216368ull, 16039649221935677017ull, 6393341031047152089ull}}, {{15612957789332935747ull, 5673780847024432737ull, 13632554370161802418ull, 12786682062094304179ull}}, {{17879986816834228443ull, 8513453798888707193ull, 17483906133000001776ull, 2557336412418860835ull}}, {{17313229559958905269ull, 17026907597777414387ull, 16521068192290451936ull, 5114672824837721671ull}}, {{16179715046208258921ull, 15607071121845277159ull, 14595392310871352257ull, 10229345649675443343ull}}, {{17993338268209293077ull, 3121414224369055431ull, 13987124906400001421ull, 2045869129935088668ull}}, {{17539932462709034538ull, 6242828448738110863ull, 9527505739090451226ull, 4091738259870177337ull}}, {{16633120851708517460ull, 12485656897476221727ull, 608267404471350836ull, 8183476519740354675ull}}, {{14394670614567434462ull, 6186480194237154668ull, 121653480894270167ull, 1636695303948070935ull}}, {{10342597155425317307ull, 12372960388474309337ull, 243306961788540334ull, 3273390607896141870ull}}, {{2238450237141082998ull, 6299176703239067059ull, 486613923577080669ull, 6546781215792283740ull}}, {{11515736491653947570ull, 16017230599615454704ull, 97322784715416133ull, 1309356243158456748ull}}, {{4584728909598343523ull, 13587717125521357793ull, 194645569430832267ull, 2618712486316913496ull}}, {{9169457819196687045ull, 8728690177333163970ull, 389291138861664535ull, 5237424972633826992ull}}, {{18338915638393374090ull, 17457380354666327940ull, 778582277723329070ull, 10474849945267653984ull}}, {{18425178386646316111ull, 18248871329900906880ull, 14913111714512307106ull, 2094969989053530796ull}}, {{18403612699583080606ull, 18050998586092262145ull, 11379479355315062597ull, 4189939978107061593ull}}, {{18360481325456609595ull, 17655253098474972675ull, 4312214636920573579ull, 8379879956214123187ull}}, {{7361445079833232243ull, 7220399434436904858ull, 8241140556867935362ull, 1675975991242824637ull}}, {{14722890159666464485ull, 14440798868873809716ull, 16482281113735870724ull, 3351951982485649274ull}}, {{10999036245623377353ull, 10434853664038067817ull, 14517818153762189833ull, 6703903964971298549ull}}, {{16957202508092316764ull, 9465668362291434209ull, 17660958889720079259ull, 1340780792994259709ull}}, {{15467660942475081911ull, 484592650873316803ull, 16875173705730606903ull, 2681561585988519419ull}}, {{12488577811240612206ull, 969185301746633607ull, 15303603337751662190ull, 5363123171977038839ull}}, {{6530411548771672795ull, 1938370603493267215ull, 12160462601793772764ull, 10726246343954077679ull}}, {{12374128753980065529ull, 11455720564924384412ull, 17189487779326395845ull, 2145249268790815535ull}}, {{6301513434250579442ull, 4464697056139217209ull, 15932231484943240075ull, 4290498537581631071ull}}, {{12603026868501158883ull, 8929394112278434418ull, 13417718896176928534ull, 8580997075163262143ull}}, {{2520605373700231777ull, 9164576451939507530ull, 13751590223461116676ull, 1716199415032652428ull}}, {{5041210747400463553ull, 18329152903879015060ull, 9056436373212681736ull, 3432398830065304857ull}}, {{10082421494800927106ull, 18211561734048478504ull, 18112872746425363473ull, 6864797660130609714ull}}, {{5705833113702095745ull, 11021009976293516347ull, 18379969808252713987ull, 1372959532026121942ull}}, {{11411666227404191489ull, 3595275878877481078ull, 18313195542795876359ull, 2745919064052243885ull}}, {{4376588381098831362ull, 7190551757754962157ull, 18179647011882201102ull, 5491838128104487771ull}}, {{8753176762197662723ull, 14381103515509924314ull, 17912549950054850588ull, 10983676256208975543ull}}, {{1750635352439532545ull, 6565569517843895186ull, 14650556434236701087ull, 2196735251241795108ull}}, {{3501270704879065090ull, 13131139035687790372ull, 10854368794763850558ull, 4393470502483590217ull}}, {{7002541409758130179ull, 7815533997666029128ull, 3261993515818149501ull, 8786941004967180435ull}}, {{16157903540919267329ull, 5252455614275116148ull, 652398703163629900ull, 1757388200993436087ull}}, {{13869063008128983041ull, 10504911228550232297ull, 1304797406327259800ull, 3514776401986872174ull}}, {{9291381942548414466ull, 2563078383390912979ull, 2609594812654519601ull, 7029552803973744348ull}}, {{12926322832735413863ull, 15270010935645823888ull, 11589965406756634889ull, 1405910560794748869ull}}, {{7405901591761276110ull, 12093277797582096161ull, 4733186739803718163ull, 2811821121589497739ull}}, {{14811803183522552219ull, 5739811521454640706ull, 9466373479607436327ull, 5623642243178995478ull}}, {{11176862293335552822ull, 11479623042909281413ull, 486002885505321038ull, 11247284486357990957ull}}, {{13303418902892841534ull, 2295924608581856282ull, 7475898206584884854ull, 2249456897271598191ull}}, {{8160093732076131452ull, 4591849217163712565ull, 14951796413169769708ull, 4498913794543196382ull}}, {{16320187464152262904ull, 9183698434327425130ull, 11456848752629987800ull, 8997827589086392765ull}}, {{3264037492830452581ull, 1836739686865485026ull, 2291369750525997560ull, 1799565517817278553ull}}, {{6528074985660905162ull, 3673479373730970052ull, 4582739501051995120ull, 3599131035634557106ull}}, {{13056149971321810324ull, 7346958747461940104ull, 9165479002103990240ull, 7198262071269114212ull}}, {{6300578809006272388ull, 8848089378976208667ull, 9211793429904618694ull, 1439652414253822842ull}}, {{12601157618012544776ull, 17696178757952417334ull, 18423586859809237388ull, 2879304828507645684ull}}, {{6755571162315537936ull, 16945613442195283053ull, 18400429645908923161ull, 5758609657015291369ull}}, {{13511142324631075871ull, 15444482810681014490ull, 18354115218108294707ull, 11517219314030582739ull}}, {{6391577279668125498ull, 6778245376878113221ull, 18428218302589300234ull, 2303443862806116547ull}}, {{12783154559336250995ull, 13556490753756226442ull, 18409692531469048852ull, 4606887725612233095ull}}, {{7119565044962950374ull, 8666237433802901269ull, 18372640989228546089ull, 9213775451224466191ull}}, {{16181308267960231368ull, 1733247486760580253ull, 7363877012587619541ull, 1842755090244893238ull}}, {{13915872462210911119ull, 3466494973521160507ull, 14727754025175239082ull, 3685510180489786476ull}}, {{9385000850712270622ull, 6932989947042321015ull, 11008763976640926548ull, 7371020360979572953ull}}, {{5566348984884364448ull, 5075946804150374526ull, 13269799239553916279ull, 1474204072195914590ull}}, {{11132697969768728896ull, 10151893608300749052ull, 8092854405398280942ull, 2948408144391829181ull}}, {{3818651865827906175ull, 1857043142891946489ull, 16185708810796561885ull, 5896816288783658362ull}}, {{7637303731655812349ull, 3714086285783892978ull, 13924673547883572154ull, 11793632577567316725ull}}, {{8906158375814983117ull, 15500212516124419888ull, 2784934709576714430ull, 2358726515513463345ull}}, {{17812316751629966233ull, 12553680958539288160ull, 5569869419153428861ull, 4717453031026926690ull}}, {{17177889429550380849ull, 6660617843369024705ull, 11139738838306857723ull, 9434906062053853380ull}}, {{14503624330135807140ull, 12400170012899535910ull, 2227947767661371544ull, 1886981212410770676ull}}, {{10560504586562062663ull, 6353595952089520205ull, 4455895535322743089ull, 3773962424821541352ull}}, {{2674265099414573710ull, 12707191904179040411ull, 8911791070645486178ull, 7547924849643082704ull}}, {{11602899464108645712ull, 9920136010319628728ull, 16539753473096738528ull, 1509584969928616540ull}}, {{4759054854507739807ull, 1393527946929705841ull, 14632762872483925441ull, 3019169939857233081ull}}, {{9518109709015479614ull, 2787055893859411682ull, 10818781671258299266ull, 6038339879714466163ull}}, {{589475344321407612ull, 5574111787718823365ull, 3190819268807046916ull, 12076679759428932327ull}}, {{11185941513090012492ull, 12182868801769495642ull, 8016861483245230029ull, 2415335951885786465ull}}, {{3925138952470473368ull, 5918993529829439669ull, 16033722966490460059ull, 4830671903771572930ull}}, {{7850277904940946736ull, 11837987059658879338ull, 13620701859271368502ull, 9661343807543145861ull}}, {{5259404395730099671ull, 13435643856157506837ull, 6413489186596184023ull, 1932268761508629172ull}}, {{10518808791460199341ull, 8424543638605462058ull, 12826978373192368047ull, 3864537523017258344ull}}, {{2590873509210847066ull, 16849087277210924117ull, 7207212672675184478ull, 7729075046034516689ull}}, {{15275569960809810706ull, 10748515084926005469ull, 16198837793502678188ull, 1545815009206903337ull}}, {{12104395847910069796ull, 3050286096142459323ull, 13950931513295804761ull, 3091630018413806675ull}}, {{5762047622110587976ull, 6100572192284918647ull, 9455118952882057906ull, 6183260036827613351ull}}, {{11524095244221175951ull, 12201144384569837294ull, 463493832054564196ull, 12366520073655226703ull}}, {{13372865493069966160ull, 17197624135881608751ull, 11160745210636643808ull, 2473304014731045340ull}}, {{8298986912430380704ull, 15948504198053665887ull, 3874746347563736001ull, 4946608029462090681ull}}, {{16597973824860761408ull, 13450264322397780158ull, 7749492695127472003ull, 9893216058924181362ull}}, {{14387641209197883252ull, 2690052864479556031ull, 8928596168509315047ull, 1978643211784836272ull}}, {{10328538344686214887ull, 5380105728959112063ull, 17857192337018630094ull, 3957286423569672544ull}}, {{2210332615662878157ull, 10760211457918224127ull, 17267640600327708572ull, 7914572847139345089ull}}, {{11510112967358306601ull, 5841391106325555148ull, 18210923379033183007ull, 1582914569427869017ull}}, {{4573481861007061586ull, 11682782212651110297ull, 17975102684356814398ull, 3165829138855738035ull}}, {{9146963722014123172ull, 4918820351592668978ull, 17503461295004077181ull, 6331658277711476071ull}}, {{18293927444028246343ull, 9837640703185337956ull, 16560178516298602746ull, 12663316555422952143ull}}, {{3658785488805649269ull, 16724923399604708884ull, 14380082147485451518ull, 2532663311084590428ull}}, {{7317570977611298537ull, 15003102725499866152ull, 10313420221261351421ull, 5065326622169180857ull}}, {{14635141955222597074ull, 11559461377290180688ull, 2180096368813151227ull, 10130653244338361715ull}}, {{2927028391044519415ull, 9690589904941856784ull, 436019273762630245ull, 2026130648867672343ull}}, {{5854056782089038830ull, 934435736174161952ull, 872038547525260491ull, 4052261297735344686ull}}, {{11708113564178077660ull, 1868871472348323904ull, 1744077095050520982ull, 8104522595470689372ull}}, {{13409669157061346502ull, 15131169553437306073ull, 7727513048493924842ull, 1620904519094137874ull}}, {{8372594240413141387ull, 11815595033165060531ull, 15455026096987849685ull, 3241809038188275748ull}}, {{16745188480826282774ull, 5184445992620569446ull, 12463308120266147755ull, 6483618076376551497ull}}, {{14417084140390987525ull, 8415586828007934535ull, 9871359253537050197ull, 1296723615275310299ull}}, {{10387424207072423433ull, 16831173656015869071ull, 1295974433364548778ull, 2593447230550620599ull}}, {{2328104340435295250ull, 15215603238322186527ull, 2591948866729097557ull, 5186894461101241198ull}}, {{4656208680870590499ull, 11984462402934821438ull, 5183897733458195115ull, 10373788922202482396ull}}, {{15688636995141759393ull, 6086241295328874610ull, 4726128361433549346ull, 2074757784440496479ull}}, {{12930529916573967170ull, 12172482590657749221ull, 9452256722867098692ull, 4149515568880992958ull}}, {{7414315759438382723ull, 5898221107605946827ull, 457769372024645769ull, 8299031137761985917ull}}, {{12550909596113407515ull, 4868993036263099688ull, 7470251503888749800ull, 1659806227552397183ull}}, {{6655075118517263413ull, 9737986072526199377ull, 14940503007777499600ull, 3319612455104794366ull}}, {{13310150237034526825ull, 1029228071342847138ull, 11434261941845447585ull, 6639224910209588733ull}}, {{6351378862148815689ull, 11273892058494300397ull, 13354898832594820486ull, 1327844982041917746ull}}, {{12702757724297631377ull, 4101040043279049178ull, 8263053591480089357ull, 2655689964083835493ull}}, {{6958771374885711137ull, 8202080086558098357ull, 16526107182960178714ull, 5311379928167670986ull}}, {{13917542749771422273ull, 16404160173116196714ull, 14605470292210805812ull, 10622759856335341973ull}}, {{17540903808921925748ull, 3280832034623239342ull, 13989140502667892132ull, 2124551971267068394ull}}, {{16635063544134299879ull, 6561664069246478685ull, 9531536931626232648ull, 4249103942534136789ull}}, {{14823383014559048142ull, 13123328138492957371ull, 616329789542913680ull, 8498207885068273579ull}}, {{2964676602911809629ull, 17382060886666232767ull, 14880661216876224028ull, 1699641577013654715ull}}, {{5929353205823619257ull, 16317377699622913918ull, 11314578360042896441ull, 3399283154027309431ull}}, {{11858706411647238513ull, 14188011325536276220ull, 4182412646376241267ull, 6798566308054618863ull}}, {{2371741282329447703ull, 2837602265107255244ull, 11904528973500979223ull, 1359713261610923772ull}}, {{4743482564658895406ull, 5675204530214510488ull, 5362313873292406830ull, 2719426523221847545ull}}, {{9486965129317790811ull, 11350409060429020976ull, 10724627746584813660ull, 5438853046443695090ull}}, {{527186184926030005ull, 4254074047148490337ull, 3002511419460075705ull, 10877706092887390181ull}}, {{11173483681210936971ull, 4540163624171608390ull, 4289851098633925464ull, 2175541218577478036ull}}, {{3900223288712322326ull, 9080327248343216781ull, 8579702197267850928ull, 4351082437154956072ull}}, {{7800446577424644651ull, 18160654496686433562ull, 17159404394535701856ull, 8702164874309912144ull}}, {{8938786944968749577ull, 3632130899337286712ull, 18189276137874781664ull, 1740432974861982428ull}}, {{17877573889937499153ull, 7264261798674573424ull, 17931808202040011712ull, 3480865949723964857ull}}, {{17308403706165446690ull, 14528523597349146849ull, 17416872330370471808ull, 6961731899447929715ull}}, {{10840378370716909985ull, 13973751163695560339ull, 3483374466074094361ull, 1392346379889585943ull}}, {{3234012667724268353ull, 9500758253681569063ull, 6966748932148188723ull, 2784692759779171886ull}}, {{6468025335448536706ull, 554772433653586510ull, 13933497864296377447ull, 5569385519558343772ull}}, {{12936050670897073411ull, 1109544867307173020ull, 9420251654883203278ull, 11138771039116687545ull}}, {{13655256578405145652ull, 11289955417687165573ull, 1884050330976640655ull, 2227754207823337509ull}}, {{8863769083100739688ull, 4133166761664779531ull, 3768100661953281311ull, 4455508415646675018ull}}, {{17727538166201479375ull, 8266333523329559062ull, 7536201323906562622ull, 8911016831293350036ull}}, {{3545507633240295875ull, 12721313148891642782ull, 5196589079523222847ull, 1782203366258670007ull}}, {{7091015266480591750ull, 6995882224073733948ull, 10393178159046445695ull, 3564406732517340014ull}}, {{14182030532961183500ull, 13991764448147467896ull, 2339612244383339774ull, 7128813465034680029ull}}, {{17593801365559877993ull, 13866399333855224548ull, 15225317707844309247ull, 1425762693006936005ull}}, {{16740858657410204370ull, 9286054594000897481ull, 12003891341979066879ull, 2851525386013872011ull}}, {{15034973241110857124ull, 125365114292243347ull, 5561038610248582143ull, 5703050772027744023ull}}, {{11623202408512162631ull, 250730228584486695ull, 11122077220497164286ull, 11406101544055488046ull}}, {{9703338111186253173ull, 7428843675200717985ull, 5913764258841343180ull, 2281220308811097609ull}}, {{959932148662954729ull, 14857687350401435971ull, 11827528517682686360ull, 4562440617622195218ull}}, {{1919864297325909458ull, 11268630627093320326ull, 5208312961655821105ull, 9124881235244390437ull}}, {{11452019303690912862ull, 9632423754902484711ull, 8420360221814984867ull, 1824976247048878087ull}}, {{4457294533672274107ull, 818103436095417807ull, 16840720443629969735ull, 3649952494097756174ull}}, {{8914589067344548213ull, 1636206872190835614ull, 15234696813550387854ull, 7299904988195512349ull}}, {{9161615442952730289ull, 11395287818663898092ull, 17804334621677718863ull, 1459980997639102469ull}}, {{18323230885905460578ull, 4343831563618244568ull, 17161925169645886111ull, 2919961995278204939ull}}, {{18199717698101369540ull, 8687663127236489137ull, 15877106265582220606ull, 5839923990556409879ull}}, {{17952691322493187464ull, 17375326254472978275ull, 13307468457454889596ull, 11679847981112819759ull}}, {{3590538264498637493ull, 3475065250894595655ull, 17418888950458619212ull, 2335969596222563951ull}}, {{7181076528997274986ull, 6950130501789191310ull, 16391033827207686808ull, 4671939192445127903ull}}, {{14362153057994549971ull, 13900261003578382620ull, 14335323580705822000ull, 9343878384890255807ull}}, {{10251128241082730641ull, 10158749830199497170ull, 10245762345624985046ull, 1868775676978051161ull}}, {{2055512408455909666ull, 1870755586689442725ull, 2044780617540418477ull, 3737551353956102323ull}}, {{4111024816911819331ull, 3741511173378885450ull, 4089561235080836954ull, 7475102707912204646ull}}, {{822204963382363867ull, 748302234675777090ull, 4507261061758077714ull, 1495020541582440929ull}}, {{1644409926764727733ull, 1496604469351554180ull, 9014522123516155428ull, 2990041083164881858ull}}, {{3288819853529455465ull, 2993208938703108360ull, 18029044247032310856ull, 5980082166329763716ull}}, {{6577639707058910929ull, 5986417877406216720ull, 17611344420355070096ull, 11960164332659527433ull}}, {{16072923200379423479ull, 15954678834448884636ull, 14590315328296744988ull, 2392032866531905486ull}}, {{13699102327049295341ull, 13462613595188217657ull, 10733886582883938361ull, 4784065733063810973ull}}, {{8951460580389039066ull, 8478483116666883699ull, 3021029092058325107ull, 9568131466127621947ull}}, {{12858338560303538783ull, 16453091882301018032ull, 7982903447895485667ull, 1913626293225524389ull}}, {{7269933046897525950ull, 14459439690892484449ull, 15965806895790971335ull, 3827252586451048778ull}}, {{14539866093795051900ull, 10472135308075417282ull, 13484869717872391055ull, 7654505172902097557ull}}, {{17665368477726651673ull, 9473124691098904102ull, 10075671573058298857ull, 1530901034580419511ull}}, {{16883992881743751730ull, 499505308488256589ull, 1704599072407046099ull, 3061802069160839023ull}}, {{15321241689777951843ull, 999010616976513179ull, 3409198144814092198ull, 6123604138321678046ull}}, {{12195739305846352069ull, 1998021233953026359ull, 6818396289628184396ull, 12247208276643356092ull}}, {{9817845490653091061ull, 11467650691016336241ull, 8742376887409457525ull, 2449441655328671218ull}}, {{1188946907596630505ull, 4488557308323120867ull, 17484753774818915051ull, 4898883310657342436ull}}, {{2377893815193261009ull, 8977114616646241734ull, 16522763475928278486ull, 9797766621314684873ull}}, {{11543625207264383172ull, 16552818182296889639ull, 14372599139411386666ull, 1959553324262936974ull}}, {{4640506340819214727ull, 14658892290884227663ull, 10298454205113221717ull, 3919106648525873949ull}}, {{9281012681638429454ull, 10871040508058903710ull, 2150164336516891819ull, 7838213297051747899ull}}, {{12924248980553416861ull, 13242254545837511711ull, 15187428126271019656ull, 1567642659410349579ull}}, {{7401753887397282105ull, 8037765017965471807ull, 11928112178832487697ull, 3135285318820699159ull}}, {{14803507774794564210ull, 16075530035930943614ull, 5409480283955423778ull, 6270570637641398319ull}}, {{11160271475879576803ull, 13704315998152335613ull, 10818960567910847557ull, 12541141275282796638ull}}, {{13300100739401646331ull, 2740863199630467122ull, 13231838557807900481ull, 2508228255056559327ull}}, {{8153457405093741045ull, 5481726399260934245ull, 8016933041906249346ull, 5016456510113118655ull}}, {{16306914810187482089ull, 10963452798521868490ull, 16033866083812498692ull, 10032913020226237310ull}}, {{10640080591521317065ull, 9571388189188194344ull, 3206773216762499738ull, 2006582604045247462ull}}, {{2833417109333082513ull, 696032304666837073ull, 6413546433524999477ull, 4013165208090494924ull}}, {{5666834218666165025ull, 1392064609333674146ull, 12827092867049998954ull, 8026330416180989848ull}}, {{12201413287958963975ull, 7657110551350555475ull, 13633465017635730760ull, 1605266083236197969ull}}, {{5956082502208376333ull, 15314221102701110951ull, 8820185961561909904ull, 3210532166472395939ull}}, {{11912165004416752666ull, 12181698131692670286ull, 17640371923123819809ull, 6421064332944791878ull}}, {{13450479445109081503ull, 9815037255822354703ull, 14596120828850494931ull, 1284212866588958375ull}}, {{8454214816508611390ull, 1183330437935157791ull, 10745497583991438247ull, 2568425733177916751ull}}, {{16908429633017222779ull, 2366660875870315582ull, 3044251094273324878ull, 5136851466355833503ull}}, {{15370115192324893942ull, 4733321751740631165ull, 6088502188546649756ull, 10273702932711667006ull}}, {{10452720667948799435ull, 8325361979831946879ull, 4907049252451240274ull, 2054740586542333401ull}}, {{2458697262188047254ull, 16650723959663893759ull, 9814098504902480548ull, 4109481173084666802ull}}, {{4917394524376094508ull, 14854703845618235902ull, 1181452936095409481ull, 8218962346169333605ull}}, {{12051525349100949872ull, 6660289583865557503ull, 236290587219081896ull, 1643792469233866721ull}}, {{5656306624492348127ull, 13320579167731115007ull, 472581174438163792ull, 3287584938467733442ull}}, {{11312613248984696253ull, 8194414261752678398ull, 945162348876327585ull, 6575169876935466884ull}}, {{9641220279280759897ull, 16396278111318176972ull, 14946427728742906809ull, 1315033975387093376ull}}, {{835696484851968178ull, 14345812148926802329ull, 11446111383776262003ull, 2630067950774186753ull}}, {{1671392969703936356ull, 10244880224144053042ull, 4445478693842972391ull, 5260135901548373507ull}}, {{3342785939407872711ull, 2043016374578554468ull, 8890957387685944783ull, 10520271803096747014ull}}, {{668557187881574543ull, 7787300904399531540ull, 16535586736504830249ull, 2104054360619349402ull}}, {{1337114375763149085ull, 15574601808799063080ull, 14624429399300108882ull, 4208108721238698805ull}}, {{2674228751526298169ull, 12702459543888574544ull, 10802114724890666149ull, 8416217442477397611ull}}, {{15292241009272900927ull, 2540491908777714908ull, 5849771759720043553ull, 1683243488495479522ull}}, {{12137737944836250237ull, 5080983817555429817ull, 11699543519440087106ull, 3366486976990959044ull}}, {{5828731815962948858ull, 10161967635110859635ull, 4952342965170622596ull, 6732973953981918089ull}}, {{1165746363192589772ull, 2032393527022171927ull, 15747863852001765812ull, 1346594790796383617ull}}, {{2331492726385179544ull, 4064787054044343854ull, 13048983630293980008ull, 2693189581592767235ull}}, {{4662985452770359087ull, 8129574108088687708ull, 7651223186878408400ull, 5386379163185534471ull}}, {{9325970905540718173ull, 16259148216177375416ull, 15302446373756816800ull, 10772758326371068942ull}}, {{12933240625333874605ull, 10630527272719295729ull, 10439186904235184006ull, 2154551665274213788ull}}, {{7419737176958197593ull, 2814310471729039843ull, 2431629734760816397ull, 4309103330548427577ull}}, {{14839474353916395185ull, 5628620943458079686ull, 4863259469521632794ull, 8618206661096855154ull}}, {{17725290129750920330ull, 12193770632917346906ull, 15730047152871967851ull, 1723641332219371030ull}}, {{17003836185792289044ull, 5940797192125142197ull, 13013350232034384087ull, 3447282664438742061ull}}, {{15560928297875026471ull, 11881594384250284395ull, 7579956390359216558ull, 6894565328877484123ull}}, {{6801534474316915618ull, 6065667691591967202ull, 12584037722297574281ull, 1378913065775496824ull}}, {{13603068948633831235ull, 12131335383183934404ull, 6721331370885596946ull, 2757826131550993649ull}}, {{8759393823558110854ull, 5815926692658317193ull, 13442662741771193893ull, 5515652263101987298ull}}, {{17518787647116221708ull, 11631853385316634386ull, 8438581409832836170ull, 11031304526203974597ull}}, {{14571803973648975312ull, 9705068306547147523ull, 9066413911450387880ull, 2206260905240794919ull}}, {{10696863873588399007ull, 963392539384743431ull, 18132827822900775761ull, 4412521810481589838ull}}, {{2946983673467246397ull, 1926785078769486863ull, 17818911572091999906ull, 8825043620963179677ull}}, {{4278745549435359603ull, 11453403459979628342ull, 10942479943902220627ull, 1765008724192635935ull}}, {{8557491098870719205ull, 4460062846249705068ull, 3438215814094889639ull, 3530017448385271871ull}}, {{17114982197741438410ull, 8920125692499410136ull, 6876431628189779278ull, 7060034896770543742ull}}, {{7112345254290198006ull, 1784025138499882027ull, 8753983955121776502ull, 1412006979354108748ull}}, {{14224690508580396011ull, 3568050276999764054ull, 17507967910243553004ull, 2824013958708217496ull}}, {{10002636943451240405ull, 7136100553999528109ull, 16569191746777554392ull, 5648027917416434993ull}}, {{1558529813192929194ull, 14272201107999056219ull, 14691639419845557168ull, 11296055834832869987ull}}, {{15069101221606227132ull, 2854440221599811243ull, 10317025513452932080ull, 2259211166966573997ull}}, {{11691458369502902647ull, 5708880443199622487ull, 2187306953196312544ull, 4518422333933147995ull}}, {{4936172665296253678ull, 11417760886399244975ull, 4374613906392625088ull, 9036844667866295990ull}}, {{12055280977284981706ull, 13351598621505579964ull, 874922781278525017ull, 1807368933573259198ull}}, {{5663817880860411795ull, 8256453169301608313ull, 1749845562557050035ull, 3614737867146518396ull}}, {{11327635761720823589ull, 16512906338603216626ull, 3499691125114100070ull, 7229475734293036792ull}}, {{13333573596569895688ull, 10681278897204463971ull, 8078635854506640660ull, 1445895146858607358ull}}, {{8220403119430239759ull, 2915813720699376327ull, 16157271709013281321ull, 2891790293717214716ull}}, {{16440806238860479518ull, 5831627441398752654ull, 13867799344317011026ull, 5783580587434429433ull}}, {{14434868404011407419ull, 11663254882797505309ull, 9288854614924470436ull, 11567161174868858867ull}}, {{10265671310286102131ull, 13400697420785232031ull, 9236468552468714733ull, 2313432234973771773ull}}, {{2084598546862652645ull, 8354650767860912447ull, 26193031227877851ull, 4626864469947543547ull}}, {{4169197093725305289ull, 16709301535721824894ull, 52386062455755702ull, 9253728939895087094ull}}, {{833839418745061058ull, 7031209121886275302ull, 14767872471458792433ull, 1850745787979017418ull}}, {{1667678837490122116ull, 14062418243772550604ull, 11089000869208033250ull, 3701491575958034837ull}}, {{3335357674980244231ull, 9678092413835549592ull, 3731257664706514885ull, 7402983151916069675ull}}, {{8045769164479869493ull, 1935618482767109918ull, 746251532941302977ull, 1480596630383213935ull}}, {{16091538328959738986ull, 3871236965534219836ull, 1492503065882605954ull, 2961193260766427870ull}}, {{13736332584209926355ull, 7742473931068439673ull, 2985006131765211908ull, 5922386521532855740ull}}, {{9025921094710301093ull, 15484947862136879347ull, 5970012263530423816ull, 11844773043065711480ull}}, {{12873230663167791189ull, 6786338387169286192ull, 1194002452706084763ull, 2368954608613142296ull}}, {{7299717252626030761ull, 13572676774338572385ull, 2388004905412169526ull, 4737909217226284592ull}}, {{14599434505252061521ull, 8698609474967593154ull, 4776009810824339053ull, 9475818434452569184ull}}, {{6609235715792322628ull, 9118419524477339277ull, 15712597221132509103ull, 1895163686890513836ull}}, {{13218471431584645255ull, 18236839048954678554ull, 12978450368555466590ull, 3790327373781027673ull}}, {{7990198789459738893ull, 18026934024199805493ull, 7510156663401381565ull, 7580654747562055347ull}}, {{1598039757891947779ull, 10984084434323781745ull, 8880728962164096959ull, 1516130949512411069ull}}, {{3196079515783895558ull, 3521424794938011874ull, 17761457924328193919ull, 3032261899024822138ull}}, {{6392159031567791115ull, 7042849589876023748ull, 17076171774946836222ull, 6064523798049644277ull}}, {{12784318063135582229ull, 14085699179752047496ull, 15705599476184120828ull, 12129047596099288555ull}}, {{17314258871594757739ull, 13885186280176140468ull, 3141119895236824165ull, 2425809519219857711ull}}, {{16181773669479963862ull, 9323628486642729321ull, 6282239790473648331ull, 4851619038439715422ull}}, {{13916803265250376107ull, 200512899575907027ull, 12564479580947296663ull, 9703238076879430844ull}}, {{17540755912017716515ull, 7418800209399002051ull, 17270291175157100625ull, 1940647615375886168ull}}, {{16634767750325881413ull, 14837600418798004103ull, 16093838276604649634ull, 3881295230751772337ull}}, {{14822791426942211209ull, 11228456763886456591ull, 13740932479499747653ull, 7762590461503544675ull}}, {{17721953544356083535ull, 13313737797003022287ull, 2748186495899949530ull, 1552518092300708935ull}}, {{16997163015002615453ull, 8180731520296492959ull, 5496372991799899061ull, 3105036184601417870ull}}, {{15547581956295679290ull, 16361463040592985919ull, 10992745983599798122ull, 6210072369202835740ull}}, {{12648419838881806964ull, 14276182007476420223ull, 3538747893490044629ull, 12420144738405671481ull}}, {{13597730412002092363ull, 2855236401495284044ull, 4397098393439919249ull, 2484028947681134296ull}}, {{8748716750294633109ull, 5710472802990568089ull, 8794196786879838498ull, 4968057895362268592ull}}, {{17497433500589266218ull, 11420945605981136178ull, 17588393573759676996ull, 9936115790724537184ull}}, {{14567533144343584214ull, 2284189121196227235ull, 18275073973719576692ull, 1987223158144907436ull}}, {{10688322214977616811ull, 4568378242392454471ull, 18103403873729601768ull, 3974446316289814873ull}}, {{2929900356245682005ull, 9136756484784908943ull, 17760063673749651920ull, 7948892632579629747ull}}, {{585980071249136401ull, 9206048926440802435ull, 10930710364233751030ull, 1589778526515925949ull}}, {{1171960142498272802ull, 18412097852881604870ull, 3414676654757950444ull, 3179557053031851899ull}}, {{2343920284996545604ull, 18377451632053658124ull, 6829353309515900889ull, 6359114106063703798ull}}, {{4687840569993091207ull, 18308159190397764632ull, 13658706619031801779ull, 12718228212127407596ull}}, {{8316265743482438888ull, 3661631838079552926ull, 6421090138548270679ull, 2543645642425481519ull}}, {{16632531486964877776ull, 7323263676159105852ull, 12842180277096541358ull, 5087291284850963038ull}}, {{14818318900220203935ull, 14646527352318211705ull, 7237616480483531100ull, 10174582569701926077ull}}, {{10342361409527861434ull, 10308003099947462987ull, 8826220925580526866ull, 2034916513940385215ull}}, {{2237978745346171251ull, 2169262126185374359ull, 17652441851161053733ull, 4069833027880770430ull}}, {{4475957490692342502ull, 4338524252370748718ull, 16858139628612555850ull, 8139666055761540861ull}}, {{15652586757106109794ull, 4557053665216060066ull, 7060976740464421493ull, 1627933211152308172ull}}, {{12858429440502667971ull, 9114107330432120133ull, 14121953480928842986ull, 3255866422304616344ull}}, {{7270114807295784325ull, 18228214660864240267ull, 9797162888148134356ull, 6511732844609232689ull}}, {{8832720590942977512ull, 3645642932172848053ull, 16716827836597268164ull, 1302346568921846537ull}}, {{17665441181885955023ull, 7291285864345696106ull, 14986911599484984712ull, 2604693137843693075ull}}, {{16884138290062358430ull, 14582571728691392213ull, 11527079125260417808ull, 5209386275687386151ull}}, {{15321532506415165243ull, 10718399383673232811ull, 4607414176811284001ull, 10418772551374772303ull}}, {{3064306501283033049ull, 16901075135702287855ull, 11989529279587987769ull, 2083754510274954460ull}}, {{6128613002566066097ull, 15355406197695024094ull, 5532314485466423923ull, 4167509020549908921ull}}, {{12257226005132132194ull, 12264068321680496572ull, 11064628970932847847ull, 8335018041099817842ull}}, {{6140794015768336762ull, 17210208923303740607ull, 9591623423670390215ull, 1667003608219963568ull}}, {{12281588031536673524ull, 15973673772897929598ull, 736502773631228815ull, 3334007216439927137ull}}, {{6116431989363795432ull, 13500603472086307581ull, 1473005547262457631ull, 6668014432879854274ull}}, {{4912635212614669410ull, 2700120694417261516ull, 15051996368420132819ull, 1333602886575970854ull}}, {{9825270425229338820ull, 5400241388834523032ull, 11657248663130714022ull, 2667205773151941709ull}}, {{1203796776749126023ull, 10800482777669046065ull, 4867753252551876428ull, 5334411546303883419ull}}, {{2407593553498252045ull, 3154221481628540514ull, 9735506505103752857ull, 10668823092607766838ull}}, {{15238913969667291702ull, 630844296325708102ull, 13015147745246481541ull, 2133764618521553367ull}}, {{12031083865625031788ull, 1261688592651416205ull, 7583551416783411466ull, 4267529237043106735ull}}, {{5615423657540511959ull, 2523377185302832411ull, 15167102833566822932ull, 8535058474086213470ull}}, {{12191131175733833362ull, 7883373066544387128ull, 3033420566713364586ull, 1707011694817242694ull}}, {{5935518277758115107ull, 15766746133088774257ull, 6066841133426729172ull, 3414023389634485388ull}}, {{11871036555516230214ull, 13086748192467996898ull, 12133682266853458345ull, 6828046779268970776ull}}, {{17131602570070887336ull, 6306698453235509702ull, 6116085268112601992ull, 1365609355853794155ull}}, {{15816461066432223055ull, 12613396906471019405ull, 12232170536225203984ull, 2731218711707588310ull}}, {{13186178059154894494ull, 6780049739232487195ull, 6017596998740856353ull, 5462437423415176621ull}}, {{7925612044600237372ull, 13560099478464974391ull, 12035193997481712706ull, 10924874846830353242ull}}, {{16342517667887688768ull, 13780066339918725847ull, 9785736428980163187ull, 2184974969366070648ull}}, {{14238291262065825919ull, 9113388606127900079ull, 1124728784250774759ull, 4369949938732141297ull}}, {{10029838450422100221ull, 18226777212255800159ull, 2249457568501549518ull, 8739899877464282594ull}}, {{5695316504826330368ull, 11024053071934980678ull, 15207286772667951196ull, 1747979975492856518ull}}, {{11390633009652660735ull, 3601362070160409740ull, 11967829471626350777ull, 3495959950985713037ull}}, {{4334521945595769854ull, 7202724140320819481ull, 5488914869543149938ull, 6991919901971426075ull}}, {{15624299648086795264ull, 12508591272289894865ull, 1097782973908629987ull, 1398383980394285215ull}}, {{12801855222464038911ull, 6570438470870238115ull, 2195565947817259975ull, 2796767960788570430ull}}, {{7156966371218526206ull, 13140876941740476231ull, 4391131895634519950ull, 5593535921577140860ull}}, {{14313932742437052412ull, 7835009809771400846ull, 8782263791269039901ull, 11187071843154281720ull}}, {{10241484177971231129ull, 5256350776696190492ull, 1756452758253807980ull, 2237414368630856344ull}}, {{2036224282232910642ull, 10512701553392380985ull, 3512905516507615960ull, 4474828737261712688ull}}, {{4072448564465821284ull, 2578659033075210354ull, 7025811033015231921ull, 8949657474523425376ull}}, {{4503838527635074580ull, 7894429436098862717ull, 5094511021344956707ull, 1789931494904685075ull}}, {{9007677055270149160ull, 15788858872197725434ull, 10189022042689913414ull, 3579862989809370150ull}}, {{18015354110540298320ull, 13130973670685899252ull, 1931300011670275213ull, 7159725979618740301ull}}, {{7292419636849969988ull, 17383589993104821143ull, 4075608817075965365ull, 1431945195923748060ull}}, {{14584839273699939975ull, 16320435912500090670ull, 8151217634151930731ull, 2863890391847496120ull}}, {{10722934473690328333ull, 14194127751290629725ull, 16302435268303861463ull, 5727780783694992240ull}}, {{2999124873671105049ull, 9941511428871707835ull, 14158126462898171311ull, 11455561567389984481ull}}, {{7978522604218041657ull, 9366999915258162213ull, 6520974107321544585ull, 2291112313477996896ull}}, {{15957045208436083313ull, 287255756806772810ull, 13041948214643089171ull, 4582224626955993792ull}}, {{13467346343162615009ull, 574511513613545621ull, 7637152355576626726ull, 9164449253911987585ull}}, {{10072166898116343649ull, 3804251117464619447ull, 1527430471115325345ull, 1832889850782397517ull}}, {{1697589722523135681ull, 7608502234929238895ull, 3054860942230650690ull, 3665779701564795034ull}}, {{3395179445046271361ull, 15217004469858477790ull, 6109721884461301380ull, 7331559403129590068ull}}, {{11747082333234985242ull, 14111447338197426527ull, 12289990821117991245ull, 1466311880625918013ull}}, {{5047420592760418868ull, 9776150602685301439ull, 6133237568526430875ull, 2932623761251836027ull}}, {{10094841185520837735ull, 1105557131661051262ull, 12266475137052861751ull, 5865247522503672054ull}}, {{1742938297332123854ull, 2211114263322102525ull, 6086206200396171886ull, 11730495045007344109ull}}, {{348587659466424771ull, 442222852664420505ull, 15974636499046875670ull, 2346099009001468821ull}}, {{697175318932849542ull, 884445705328841010ull, 13502528924384199724ull, 4692198018002937643ull}}, {{1394350637865699083ull, 1768891410657682020ull, 8558313775058847832ull, 9384396036005875287ull}}, {{15036265386540781110ull, 15111173541099177696ull, 9090360384495590212ull, 1876879207201175057ull}}, {{11625786699372010603ull, 11775603008488803777ull, 18180720768991180425ull, 3753758414402350114ull}}, {{4804829325034469590ull, 5104461943268055939ull, 17914697464272809235ull, 7507516828804700229ull}}, {{12029012309232624888ull, 15778287647621252480ull, 18340334751822203139ull, 1501503365760940045ull}}, {{5611280544755698159ull, 13109831221532953345ull, 18233925429934854663ull, 3003006731521880091ull}}, {{11222561089511396318ull, 7772918369356355074ull, 18021106786160157711ull, 6006013463043760183ull}}, {{3998378105313241020ull, 15545836738712710149ull, 17595469498610763806ull, 12012026926087520367ull}}, {{8178373250546468851ull, 14177213791968272999ull, 10897791529205973407ull, 2402405385217504073ull}}, {{16356746501092937701ull, 9907683510226994382ull, 3348838984702395199ull, 4804810770435008147ull}}, {{14266748928476323786ull, 1368622946744437149ull, 6697677969404790399ull, 9609621540870016294ull}}, {{10232047415179085404ull, 11341771033574618399ull, 16096930852848599372ull, 1921924308174003258ull}}, {{2017350756648619191ull, 4236797993439685183ull, 13747117631987647129ull, 3843848616348006517ull}}, {{4034701513297238382ull, 8473595986879370366ull, 9047491190265742642ull, 7687697232696013035ull}}, {{11874986746885178646ull, 9073416826859694719ull, 1809498238053148528ull, 1537539446539202607ull}}, {{5303229420060805676ull, 18146833653719389439ull, 3618996476106297056ull, 3075078893078405214ull}}, {{10606458840121611352ull, 17846923233729227262ull, 7237992952212594113ull, 6150157786156810428ull}}, {{2766173606533671088ull, 17247102393748902909ull, 14475985904425188227ull, 12300315572313620856ull}}, {{7931932350790554864ull, 14517466922975511551ull, 6584545995626947968ull, 2460063114462724171ull}}, {{15863864701581109728ull, 10588189772241471486ull, 13169091991253895937ull, 4920126228925448342ull}}, {{13280985329452667840ull, 2729635470773391357ull, 7891439908798240259ull, 9840252457850896685ull}}, {{6345545880632443892ull, 15303322353122319564ull, 1578287981759648051ull, 1968050491570179337ull}}, {{12691091761264887783ull, 12159900632535087512ull, 3156575963519296103ull, 3936100983140358674ull}}, {{6935439448820223949ull, 5873057191360623409ull, 6313151927038592207ull, 7872201966280717348ull}}, {{16144483148731686083ull, 1174611438272124681ull, 12330676829633449411ull, 1574440393256143469ull}}, {{13842222223753820550ull, 2349222876544249363ull, 6214609585557347206ull, 3148880786512286939ull}}, {{9237700373798089483ull, 4698445753088498727ull, 12429219171114694412ull, 6297761573024573878ull}}, {{28656673886627349ull, 9396891506176997455ull, 6411694268519837208ull, 12595523146049147757ull}}, {{5731334777325470ull, 1879378301235399491ull, 8661036483187788088ull, 2519104629209829551ull}}, {{11462669554650940ull, 3758756602470798982ull, 17322072966375576176ull, 5038209258419659102ull}}, {{22925339109301879ull, 7517513204941597964ull, 16197401859041600736ull, 10076418516839318205ull}}, {{4585067821860376ull, 5192851455730229916ull, 3239480371808320147ull, 2015283703367863641ull}}, {{9170135643720752ull, 10385702911460459832ull, 6478960743616640294ull, 4030567406735727282ull}}, {{18340271287441503ull, 2324661749211368048ull, 12957921487233280589ull, 8061134813471454564ull}}, {{3693016868999398624ull, 11532978794068004579ull, 17348979556414297410ull, 1612226962694290912ull}}, {{7386033737998797248ull, 4619213514426457542ull, 16251215039119043205ull, 3224453925388581825ull}}, {{14772067475997594496ull, 9238427028852915084ull, 14055686004528534794ull, 6448907850777163651ull}}, {{17711808754167160192ull, 1847685405770583016ull, 6500486015647617282ull, 1289781570155432730ull}}, {{16976873434624768768ull, 3695370811541166033ull, 13000972031295234564ull, 2579563140310865460ull}}, {{15507002795539985920ull, 7390741623082332067ull, 7555199988880917512ull, 5159126280621730921ull}}, {{12567261517370420223ull, 14781483246164664135ull, 15110399977761835024ull, 10318252561243461842ull}}, {{6202801118215994368ull, 6645645463974843150ull, 10400777625036187651ull, 2063650512248692368ull}}, {{12405602236431988736ull, 13291290927949686300ull, 2354811176362823686ull, 4127301024497384737ull}}, {{6364460399154425855ull, 8135837782189820985ull, 4709622352725647373ull, 8254602048994769474ull}}, {{8651589709314705818ull, 9005865185921784843ull, 15699319729512770767ull, 1650920409798953894ull}}, {{17303179418629411635ull, 18011730371843569686ull, 12951895385315989918ull, 3301840819597907789ull}}, {{16159614763549271654ull, 17576716669977587757ull, 7457046696922428221ull, 6603681639195815579ull}}, {{10610620582193674978ull, 3515343333995517551ull, 16248804598352126937ull, 1320736327839163115ull}}, {{2774497090677798339ull, 7030686667991035103ull, 14050865122994702258ull, 2641472655678326231ull}}, {{5548994181355596677ull, 14061373335982070206ull, 9654986172279852900ull, 5282945311356652463ull}}, {{11097988362711193353ull, 9676002598254588796ull, 863228270850154185ull, 10565890622713304927ull}}, {{13287644116767969641ull, 9313898149134738405ull, 7551343283653851483ull, 2113178124542660985ull}}, {{8128544159826387665ull, 181052224559925195ull, 15102686567307702967ull, 4226356249085321970ull}}, {{16257088319652775329ull, 362104449119850390ull, 11758629060905854318ull, 8452712498170643941ull}}, {{18008812922898196359ull, 14829816148791611370ull, 6041074626923081186ull, 1690542499634128788ull}}, {{17570881772086841102ull, 11212888223873671125ull, 12082149253846162373ull, 3381084999268257576ull}}, {{16695019470464130587ull, 3979032374037790635ull, 5717554433982773131ull, 6762169998536515153ull}}, {{18096399153060467411ull, 15553201733775199419ull, 12211557331022285595ull, 1352433999707303030ull}}, {{17746054232411383205ull, 12659659393840847223ull, 5976370588335019575ull, 2704867999414606061ull}}, {{17045364391113214793ull, 6872574713972142831ull, 11952741176670039151ull, 5409735998829212122ull}}, {{15643984708516877969ull, 13745149427944285663ull, 5458738279630526686ull, 10819471997658424245ull}}, {{17886192200671016887ull, 6438378700330767455ull, 1091747655926105337ull, 2163894399531684849ull}}, {{17325640327632482157ull, 12876757400661534911ull, 2183495311852210674ull, 4327788799063369698ull}}, {{16204536581555412698ull, 7306770727613518207ull, 4366990623704421349ull, 8655577598126739396ull}}, {{10619604945794903186ull, 1461354145522703641ull, 4562746939482794593ull, 1731115519625347879ull}}, {{2792465817880254756ull, 2922708291045407283ull, 9125493878965589186ull, 3462231039250695758ull}}, {{5584931635760509512ull, 5845416582090814566ull, 18250987757931178372ull, 6924462078501391516ull}}, {{15874381586119743196ull, 12237129760643893882ull, 7339546366328145997ull, 1384892415700278303ull}}, {{13302019098529934775ull, 6027515447578236149ull, 14679092732656291995ull, 2769784831400556606ull}}, {{8157294123350317933ull, 12055030895156472299ull, 10911441391603032374ull, 5539569662801113213ull}}, {{16314588246700635866ull, 5663317716603392982ull, 3376138709496513133ull, 11079139325602226427ull}}, {{10641615278823947820ull, 1132663543320678596ull, 8053925371383123273ull, 2215827865120445285ull}}, {{2836486483938344023ull, 2265327086641357193ull, 16107850742766246546ull, 4431655730240890570ull}}, {{5672972967876688046ull, 4530654173282714386ull, 13768957411822941476ull, 8863311460481781141ull}}, {{12202641037801068579ull, 8284828464140363523ull, 6443140297106498618ull, 1772662292096356228ull}}, {{5958538001892585542ull, 16569656928280727047ull, 12886280594212997236ull, 3545324584192712456ull}}, {{11917076003785171083ull, 14692569782851902478ull, 7325817114716442857ull, 7090649168385424913ull}}, {{13451461644982765187ull, 2938513956570380495ull, 12533209867169019541ull, 1418129833677084982ull}}, {{8456179216255978757ull, 5877027913140760991ull, 6619675660628487466ull, 2836259667354169965ull}}, {{16912358432511957513ull, 11754055826281521982ull, 13239351321256974932ull, 5672519334708339930ull}}, {{15377972791314363410ull, 5061367578853492349ull, 8031958568804398249ull, 11345038669416679861ull}}, {{17832989817230513975ull, 1012273515770698469ull, 5295740528502789973ull, 2269007733883335972ull}}, {{17219235560751476334ull, 2024547031541396939ull, 10591481057005579946ull, 4538015467766671944ull}}, {{15991727047793401051ull, 4049094063082793879ull, 2736218040301608276ull, 9076030935533343889ull}}, {{17955740668526321503ull, 809818812616558775ull, 15304638867027962948ull, 1815206187106668777ull}}, {{17464737263343091390ull, 1619637625233117551ull, 12162533660346374280ull, 3630412374213337555ull}}, {{16482730452976631164ull, 3239275250466235103ull, 5878323246983196944ull, 7260824748426675111ull}}, {{14364592534821057203ull, 647855050093247020ull, 4865013464138549712ull, 1452164949685335022ull}}, {{10282440995932562789ull, 1295710100186494041ull, 9730026928277099424ull, 2904329899370670044ull}}, {{2118137918155573962ull, 2591420200372988083ull, 1013309782844647232ull, 5808659798741340089ull}}, {{4236275836311147924ull, 5182840400745976166ull, 2026619565689294464ull, 11617319597482680178ull}}, {{11915301611487960555ull, 8415265709633015879ull, 11473370357363589862ull, 2323463919496536035ull}}, {{5383859149266369493ull, 16830531419266031759ull, 4499996641017628108ull, 4646927838993072071ull}}, {{10767718298532738985ull, 15214318764822511902ull, 8999993282035256217ull, 9293855677986144142ull}}, {{5842892474448458121ull, 17800259011932143673ull, 9178696285890871889ull, 1858771135597228828ull}}, {{11685784948896916241ull, 17153773950154735730ull, 18357392571781743779ull, 3717542271194457656ull}}, {{4924825824084280865ull, 15860803826599919845ull, 18268041069853935943ull, 7435084542388915313ull}}, {{4674313979558766497ull, 6861509580061894292ull, 14721654658196518158ull, 1487016908477783062ull}}, {{9348627959117532993ull, 13723019160123788584ull, 10996565242683484700ull, 2974033816955566125ull}}, {{250511844525514369ull, 8999294246538025553ull, 3546386411657417785ull, 5948067633911132251ull}}, {{501023689051028738ull, 17998588493076051106ull, 7092772823314835570ull, 11896135267822264502ull}}, {{11168251182035936718ull, 10978415328099030867ull, 8797252194146787760ull, 2379227053564452900ull}}, {{3889758290362321819ull, 3510086582488510119ull, 17594504388293575521ull, 4758454107128905800ull}}, {{7779516580724643637ull, 7020173164977020238ull, 16742264702877599426ull, 9516908214257811601ull}}, {{1555903316144928728ull, 8782732262479224694ull, 7037801755317430208ull, 1903381642851562320ull}}, {{3111806632289857455ull, 17565464524958449388ull, 14075603510634860416ull, 3806763285703124640ull}}, {{6223613264579714909ull, 16684184976207347160ull, 9704462947560169217ull, 7613526571406249281ull}}, {{12312769097141673952ull, 14404883439467200401ull, 5630241404253944166ull, 1522705314281249856ull}}, {{6178794120573796287ull, 10363022805224849187ull, 11260482808507888333ull, 3045410628562499712ull}}, {{12357588241147592574ull, 2279301536740146758ull, 4074221543306225051ull, 6090821257124999425ull}}, {{6268432408585633531ull, 4558603073480293517ull, 8148443086612450102ull, 12181642514249998850ull}}, {{16011081740684767999ull, 8290418244179879349ull, 1629688617322490020ull, 2436328502849999770ull}}, {{13575419407659984382ull, 16580836488359758699ull, 3259377234644980040ull, 4872657005699999540ull}}, {{8704094741610417148ull, 14714928903009965783ull, 6518754469289960081ull, 9745314011399999080ull}}, {{16498214207289724723ull, 6632334595343903479ull, 1303750893857992016ull, 1949062802279999816ull}}, {{14549684340869897829ull, 13264669190687806959ull, 2607501787715984032ull, 3898125604559999632ull}}, {{10652624608030244042ull, 8082594307666062303ull, 5215003575431968065ull, 7796251209119999264ull}}, {{9509222551089869455ull, 16373914120500853753ull, 15800395974054034905ull, 1559250241823999852ull}}, {{571701028470187294ull, 14301084167292155891ull, 13154047874398518195ull, 3118500483647999705ull}}, {{1143402056940374587ull, 10155424260874760166ull, 7861351675087484775ull, 6237000967295999411ull}}, {{2286804113880749174ull, 1864104448039968716ull, 15722703350174969551ull, 12474001934591998822ull}}, {{15214756081743791128ull, 11440867333833724712ull, 10523238299518814556ull, 2494800386918399764ull}}, {{11982768089778030640ull, 4434990593957897809ull, 2599732525328077497ull, 4989600773836799529ull}}, {{5518792105846509663ull, 8869981187915795619ull, 5199465050656154994ull, 9979201547673599058ull}}, {{4793107235911212256ull, 9152693867066979770ull, 12107939454356961968ull, 1995840309534719811ull}}, {{9586214471822424512ull, 18305387734133959540ull, 5769134835004372320ull, 3991680619069439623ull}}, {{725684869935297407ull, 18164031394558367465ull, 11538269670008744641ull, 7983361238138879246ull}}, {{7523834603470880128ull, 11011503908395494139ull, 5997002748743659251ull, 1596672247627775849ull}}, {{15047669206941760256ull, 3576263743081436662ull, 11994005497487318503ull, 3193344495255551698ull}}, {{11648594340173968895ull, 7152527486162873325ull, 5541266921265085390ull, 6386688990511103397ull}}, {{4850444606638386174ull, 14305054972325746651ull, 11082533842530170780ull, 12773377981022206794ull}}, {{970088921327677235ull, 17618406253432790623ull, 16973902027473675448ull, 2554675596204441358ull}}, {{1940177842655354470ull, 16790068433156029630ull, 15501059981237799281ull, 5109351192408882717ull}}, {{3880355685310708939ull, 15133392792602507644ull, 12555375888766046947ull, 10218702384817765435ull}}, {{4465419951804052111ull, 10405376188004322175ull, 2511075177753209389ull, 2043740476963553087ull}}, {{8930839903608104222ull, 2364008302299092734ull, 5022150355506418779ull, 4087480953927106174ull}}, {{17861679807216208444ull, 4728016604598185468ull, 10044300711012837558ull, 8174961907854212348ull}}, {{18329731220410882982ull, 4634952135661547416ull, 13076906586428298481ull, 1634992381570842469ull}}, {{18212718367112214348ull, 9269904271323094833ull, 7707069099147045346ull, 3269984763141684939ull}}, {{17978692660514877079ull, 93064468936638051ull, 15414138198294090693ull, 6539969526283369878ull}}, {{10974436161586796063ull, 3707961708529237933ull, 14150874083884549108ull, 1307993905256673975ull}}, {{3502128249464040509ull, 7415923417058475867ull, 9855004094059546600ull, 2615987810513347951ull}}, {{7004256498928081017ull, 14831846834116951734ull, 1263264114409541584ull, 5231975621026695903ull}}, {{14008512997856162033ull, 11216949594524351852ull, 2526528228819083169ull, 10463951242053391806ull}}, {{10180400229055053053ull, 2243389918904870370ull, 4194654460505726957ull, 2092790248410678361ull}}, {{1914056384400554490ull, 4486779837809740741ull, 8389308921011453914ull, 4185580496821356722ull}}, {{3828112768801108980ull, 8973559675619481482ull, 16778617842022907828ull, 8371160993642713444ull}}, {{15523017812727863089ull, 9173409564607716942ull, 18113118827372222858ull, 1674232198728542688ull}}, {{12599291551746174562ull, 18346819129215433885ull, 17779493581034894100ull, 3348464397457085377ull}}, {{6751839029782797507ull, 18246894184721316155ull, 17112243088360236585ull, 6696928794914170755ull}}, {{1350367805956559502ull, 3649378836944263231ull, 3422448617672047317ull, 1339385758982834151ull}}, {{2700735611913119003ull, 7298757673888526462ull, 6844897235344094634ull, 2678771517965668302ull}}, {{5401471223826238006ull, 14597515347777052924ull, 13689794470688189268ull, 5357543035931336604ull}}, {{10802942447652476012ull, 10748286621844554232ull, 8932844867666826921ull, 10715086071862673209ull}}, {{9539286119014315849ull, 2149657324368910846ull, 16543964232501006677ull, 2143017214372534641ull}}, {{631828164319080082ull, 4299314648737821693ull, 14641184391292461738ull, 4286034428745069283ull}}, {{1263656328638160163ull, 8598629297475643386ull, 10835624708875371860ull, 8572068857490138567ull}}, {{11320777709953363003ull, 9098423488978949323ull, 9545822571258895018ull, 1714413771498027713ull}}, {{4194811346197174389ull, 18196846977957898647ull, 644901068808238420ull, 3428827542996055427ull}}, {{8389622692394348777ull, 17946949882206245678ull, 1289802137616476841ull, 6857655085992110854ull}}, {{12745970982704600725ull, 3589389976441249135ull, 15015355686490936661ull, 1371531017198422170ull}}, {{7045197891699649834ull, 7178779952882498271ull, 11583967299272321706ull, 2743062034396844341ull}}, {{14090395783399299668ull, 14357559905764996542ull, 4721190524835091796ull, 5486124068793688683ull}}, {{9734047493089047719ull, 10268375737820441469ull, 9442381049670183593ull, 10972248137587377366ull}}, {{13014855942843540514ull, 16811070406531729586ull, 5577825024675947041ull, 2194449627517475473ull}}, {{7582967811977529411ull, 15175396739353907557ull, 11155650049351894083ull, 4388899255034950946ull}}, {{15165935623955058822ull, 11904049404998263498ull, 3864556024994236551ull, 8777798510069901893ull}}, {{10411884754274832411ull, 17138205139967293992ull, 11840957649224578279ull, 1755559702013980378ull}}, {{2377025434840113206ull, 15829666206225036369ull, 5235171224739604943ull, 3511119404027960757ull}}, {{4754050869680226411ull, 13212588338740521122ull, 10470342449479209887ull, 7022238808055921514ull}}, {{12018856618161776252ull, 6331866482490014547ull, 16851463748863483270ull, 1404447761611184302ull}}, {{5590969162614000888ull, 12663732964980029095ull, 15256183424017414924ull, 2808895523222368605ull}}, {{11181938325228001776ull, 6880721856250506574ull, 12065622774325278233ull, 5617791046444737211ull}}, {{3917132576746451935ull, 13761443712501013149ull, 5684501474941004850ull, 11235582092889474423ull}}, {{8162124144833111034ull, 13820335186725933599ull, 12204946739213931939ull, 2247116418577894884ull}}, {{16324248289666222067ull, 9193926299742315582ull, 5963149404718312263ull, 4494232837155789769ull}}, {{14201752505622892517ull, 18387852599484631165ull, 11926298809436624526ull, 8988465674311579538ull}}, {{17597745760092219797ull, 18434965778864567525ull, 13453306206113055874ull, 1797693134862315907ull}}, {{16748747446474887977ull, 18423187484019583435ull, 8459868338516560133ull, 3595386269724631815ull}}, {{15050750819240224337ull, 18399630894329615255ull, 16919736677033120267ull, 7190772539449263630ull}}, {{10388847793331865514ull, 11058623808349743697ull, 3383947335406624053ull, 1438154507889852726ull}}, {{2330951512954179412ull, 3670503542989935779ull, 6767894670813248107ull, 2876309015779705452ull}}, {{4661903025908358824ull, 7341007085979871558ull, 13535789341626496214ull, 5752618031559410904ull}}, {{9323806051816717647ull, 14682014171959743116ull, 8624834609543440812ull, 11505236063118821809ull}}, {{9243458839847164176ull, 6625751649133858946ull, 16482362180876329455ull, 2301047212623764361ull}}, {{40173605984776736ull, 13251503298267717893ull, 14517980288043107294ull, 4602094425247528723ull}}, {{80347211969553471ull, 8056262522825884170ull, 10589216502376662973ull, 9204188850495057447ull}}, {{16069442393910695ull, 1611252504565176834ull, 9496540929959153241ull, 1840837770099011489ull}}, {{32138884787821389ull, 3222505009130353668ull, 546337786208754866ull, 3681675540198022979ull}}, {{64277769575642777ull, 6445010018260707336ull, 1092675572417509732ull, 7363351080396045958ull}}, {{3702204368657038879ull, 1289002003652141467ull, 11286581558709232916ull, 1472670216079209191ull}}, {{7404408737314077757ull, 2578004007304282934ull, 4126419043708914216ull, 2945340432158418383ull}}, {{14808817474628155514ull, 5156008014608565868ull, 8252838087417828432ull, 5890680864316836766ull}}, {{11170890875546759412ull, 10312016029217131737ull, 16505676174835656864ull, 11781361728633673532ull}}, {{13302224619335082852ull, 5751752020585336670ull, 10679832864450952019ull, 2356272345726734706ull}}, {{8157705164960614088ull, 11503504041170673341ull, 2912921655192352422ull, 4712544691453469413ull}}, {{16315410329921228176ull, 4560264008631795066ull, 5825843310384704845ull, 9425089382906938826ull}}, {{10641779695468066282ull, 4601401616468269336ull, 4854517476818851292ull, 1885017876581387765ull}}, {{2836815317226580948ull, 9202803232936538673ull, 9709034953637702584ull, 3770035753162775530ull}}, {{5673630634453161895ull, 18405606465873077346ull, 971325833565853552ull, 7540071506325551061ull}}, {{15892121385858273672ull, 14749167737400346438ull, 3883613981455081033ull, 1508014301265110212ull}}, {{13337498698006995728ull, 11051591401091141261ull, 7767227962910162067ull, 3016028602530220424ull}}, {{8228253322304439839ull, 3656438728472730907ull, 15534455925820324135ull, 6032057205060440848ull}}, {{16456506644608879678ull, 7312877456945461814ull, 12622167777931096654ull, 12064114410120881697ull}}, {{3291301328921775936ull, 5151924306131002686ull, 9903131185070039977ull, 2412822882024176339ull}}, {{6582602657843551871ull, 10303848612262005372ull, 1359518296430528338ull, 4825645764048352679ull}}, {{13165205315687103742ull, 2160953150814459128ull, 2719036592861056677ull, 9651291528096705358ull}}, {{13701087507363151718ull, 432190630162891825ull, 11611853762797942305ull, 1930258305619341071ull}}, {{8955430941016751820ull, 864381260325783651ull, 4776963451886332994ull, 3860516611238682143ull}}, {{17910861882033503640ull, 1728762520651567302ull, 9553926903772665988ull, 7721033222477364286ull}}, {{7271521191148611052ull, 15103147763097954753ull, 5600134195496443520ull, 1544206644495472857ull}}, {{14543042382297222103ull, 11759551452486357890ull, 11200268390992887041ull, 3088413288990945714ull}}, {{10639340690884892589ull, 5072358831263164165ull, 3953792708276222467ull, 6176826577981891429ull}}, {{2831937308060233562ull, 10144717662526328331ull, 7907585416552444934ull, 12353653155963782858ull}}, {{11634433905837777682ull, 9407641161989086312ull, 12649563527536219956ull, 2470730631192756571ull}}, {{4822123737966003748ull, 368538250268621009ull, 6852382981362888297ull, 4941461262385513143ull}}, {{9644247475932007496ull, 737076500537242018ull, 13704765962725776594ull, 9882922524771026286ull}}, {{12996895939412132469ull, 147415300107448403ull, 6430302007287065642ull, 1976584504954205257ull}}, {{7547047805114713322ull, 294830600214896807ull, 12860604014574131284ull, 3953169009908410514ull}}, {{15094095610229426643ull, 589661200429793614ull, 7274463955438710952ull, 7906338019816821029ull}}, {{3018819122045885329ull, 3807281054827869046ull, 16212288050055383483ull, 1581267603963364205ull}}, {{6037638244091770658ull, 7614562109655738092ull, 13977832026401215350ull, 3162535207926728411ull}}, {{12075276488183541315ull, 15229124219311476184ull, 9508919979092879084ull, 6325070415853456823ull}}, {{5703808902657531013ull, 12011504364913400753ull, 571095884476206553ull, 12650140831706913647ull}}, {{12208808224757237173ull, 2402300872982680150ull, 7492916806379061957ull, 2530028166341382729ull}}, {{5970872375804922729ull, 4804601745965360301ull, 14985833612758123914ull, 5060056332682765458ull}}, {{11941744751609845457ull, 9609203491930720602ull, 11524923151806696212ull, 10120112665365530917ull}}, {{6077697765063879415ull, 16679235957353785413ull, 9683682259845159888ull, 2024022533073106183ull}}, {{12155395530127758829ull, 14911727840998019210ull, 920620445980768161ull, 4048045066146212367ull}}, {{5864046986545966042ull, 11376711608286486805ull, 1841240891961536323ull, 8096090132292424734ull}}, {{8551507026793013855ull, 9654039951141118007ull, 15125643437359948557ull, 1619218026458484946ull}}, {{17103014053586027710ull, 861335828572684398ull, 11804542801010345499ull, 3238436052916969893ull}}, {{15759284033462503804ull, 1722671657145368797ull, 5162341528311139382ull, 6476872105833939787ull}}, {{6841205621434411084ull, 15101929590396715052ull, 8411165935146048522ull, 1295374421166787957ull}}, {{13682411242868822168ull, 11757115107083878488ull, 16822331870292097045ull, 2590748842333575914ull}}, {{8918078412028092720ull, 5067486140458205361ull, 15197919666874642475ull, 5181497684667151829ull}}, {{17836156824056185439ull, 10134972280916410722ull, 11949095260039733334ull, 10362995369334303659ull}}, {{3567231364811237088ull, 13095040900409013114ull, 17147214310975587959ull, 2072599073866860731ull}}, {{7134462729622474176ull, 7743337727108474612ull, 15847684548241624303ull, 4145198147733721463ull}}, {{14268925459244948351ull, 15486675454216949224ull, 13248625022773696990ull, 8290396295467442927ull}}, {{6543133906590899994ull, 10476032720327210491ull, 10028422634038560044ull, 1658079259093488585ull}}, {{13086267813181799987ull, 2505321366944869366ull, 1610101194367568473ull, 3316158518186977171ull}}, {{7725791552654048358ull, 5010642733889738733ull, 3220202388735136946ull, 6632317036373954342ull}}, {{5234507125272719995ull, 12070174991003678716ull, 8022738107230848035ull, 1326463407274790868ull}}, {{10469014250545439990ull, 5693605908297805816ull, 16045476214461696071ull, 2652926814549581736ull}}, {{2491284427381328363ull, 11387211816595611633ull, 13644208355213840526ull, 5305853629099163473ull}}, {{4982568854762656726ull, 4327679559481671650ull, 8841672636718129437ull, 10611707258198326947ull}}, {{15753909029920172638ull, 15622931170863975622ull, 9147032156827446533ull, 2122341451639665389ull}}, {{13061073986130793660ull, 12799118268018399629ull, 18294064313654893067ull, 4244682903279330778ull}}, {{7675403898552035704ull, 7151492462327247643ull, 18141384553600234519ull, 8489365806558661557ull}}, {{16292476038678048434ull, 5119647307207359851ull, 11006974540203867550ull, 1697873161311732311ull}}, {{14138208003646545252ull, 10239294614414719703ull, 3567205006698183484ull, 3395746322623464623ull}}, {{9829671933583538887ull, 2031845155119887791ull, 7134410013396366969ull, 6791492645246929246ull}}, {{5655283201458618101ull, 406369031023977558ull, 5116230817421183717ull, 1358298529049385849ull}}, {{11310566402917236201ull, 812738062047955116ull, 10232461634842367434ull, 2716597058098771698ull}}, {{4174388732124920786ull, 1625476124095910233ull, 2018179195975183252ull, 5433194116197543397ull}}, {{8348777464249841572ull, 3250952248191820466ull, 4036358391950366504ull, 10866388232395086794ull}}, {{16427150751817609608ull, 11718236893864095062ull, 15564666937357714593ull, 2173277646479017358ull}}, {{14407557429925667599ull, 4989729714018638509ull, 12682589801005877571ull, 4346555292958034717ull}}, {{10368370786141783581ull, 9979459428037277019ull, 6918435528302203526ull, 8693110585916069435ull}}, {{2073674157228356717ull, 5685240700349365727ull, 1383687105660440705ull, 1738622117183213887ull}}, {{4147348314456713433ull, 11370481400698731454ull, 2767374211320881410ull, 3477244234366427774ull}}, {{8294696628913426865ull, 4294218727687911292ull, 5534748422641762821ull, 6954488468732855548ull}}, {{5348288140524595697ull, 15616239004505223551ull, 12174996128754083533ull, 1390897693746571109ull}}, {{10696576281049191393ull, 12785733935300895486ull, 5903248183798615451ull, 2781795387493142219ull}}, {{2946408488388831169ull, 7124723796892239357ull, 11806496367597230903ull, 5563590774986284438ull}}, {{5892816976777662337ull, 14249447593784478714ull, 5166248661484910190ull, 11127181549972568877ull}}, {{4867912210097442791ull, 10228587148240716389ull, 8411947361780802684ull, 2225436309994513775ull}}, {{9735824420194885581ull, 2010430222771881162ull, 16823894723561605369ull, 4450872619989027550ull}}, {{1024904766680219546ull, 4020860445543762325ull, 15201045373413659122ull, 8901745239978055101ull}}, {{11273027397561774879ull, 11872218533334483434ull, 6729557889424642147ull, 1780349047995611020ull}}, {{4099310721413998142ull, 5297692992959415253ull, 13459115778849284295ull, 3560698095991222040ull}}, {{8198621442827996284ull, 10595385985918830506ull, 8471487483989016974ull, 7121396191982444081ull}}, {{5329073103307509580ull, 2119077197183766101ull, 5383646311539713718ull, 1424279238396488816ull}}, {{10658146206615019160ull, 4238154394367532202ull, 10767292623079427436ull, 2848558476792977632ull}}, {{2869548339520486704ull, 8476308788735064405ull, 3087841172449303256ull, 5697116953585955265ull}}, {{5739096679040973407ull, 16952617577470128810ull, 6175682344898606512ull, 11394233907171910530ull}}, {{8526516965292015328ull, 10769221144977846408ull, 1235136468979721302ull, 2278846781434382106ull}}, {{17053033930584030656ull, 3091698216246141200ull, 2470272937959442605ull, 4557693562868764212ull}}, {{15659323787458509695ull, 6183396432492282401ull, 4940545875918885210ull, 9115387125737528424ull}}, {{3131864757491701939ull, 15994074545466097773ull, 15745504434151418334ull, 1823077425147505684ull}}, {{6263729514983403878ull, 13541405017222643930ull, 13044264794593285053ull, 3646154850295011369ull}}, {{12527459029966807756ull, 8636065960735736244ull, 7641785515477018491ull, 7292309700590022739ull}}, {{17262887064961002844ull, 1727213192147147248ull, 16285752362063044991ull, 1458461940118004547ull}}, {{16079030056212454072ull, 3454426384294294497ull, 14124760650416538366ull, 2916923880236009095ull}}, {{13711316038715356528ull, 6908852768588588995ull, 9802777227123525116ull, 5833847760472018191ull}}, {{8975888003721161440ull, 13817705537177177991ull, 1158810380537498616ull, 11667695520944036383ull}}, {{1795177600744232288ull, 17520936366403076891ull, 11299808520333230692ull, 2333539104188807276ull}}, {{3590355201488464576ull, 16595128659096602166ull, 4152872966956909769ull, 4667078208377614553ull}}, {{7180710402976929152ull, 14743513244483652716ull, 8305745933913819539ull, 9334156416755229106ull}}, {{5125490895337296154ull, 2948702648896730543ull, 5350498001524674231ull, 1866831283351045821ull}}, {{10250981790674592308ull, 5897405297793461086ull, 10700996003049348462ull, 3733662566702091642ull}}, {{2055219507639632999ull, 11794810595586922173ull, 2955247932389145308ull, 7467325133404183285ull}}, {{4100392716269836923ull, 13427008563343115404ull, 591049586477829061ull, 1493465026680836657ull}}, {{8200785432539673846ull, 8407273052976679192ull, 1182099172955658123ull, 2986930053361673314ull}}, {{16401570865079347692ull, 16814546105953358384ull, 2364198345911316246ull, 5973860106723346628ull}}, {{14356397656449143767ull, 15182348138197165153ull, 4728396691822632493ull, 11947720213446693256ull}}, {{10249977160773649400ull, 17793864886607074323ull, 4635028153106436821ull, 2389544042689338651ull}}, {{2053210247837747184ull, 17140985699504597031ull, 9270056306212873643ull, 4779088085378677302ull}}, {{4106420495675494368ull, 15835227325299642446ull, 93368538716195671ull, 9558176170757354605ull}}, {{8199981728618919520ull, 6856394279801838812ull, 18673707743239134ull, 1911635234151470921ull}}, {{16399963457237839040ull, 13712788559603677624ull, 37347415486478268ull, 3823270468302941842ull}}, {{14353182840766126464ull, 8978833045497803633ull, 74694830972956537ull, 7646540936605883684ull}}, {{17628031827120866586ull, 5485115423841471049ull, 14772334225162232600ull, 1529308187321176736ull}}, {{16809319580532181555ull, 10970230847682942099ull, 11097924376614913584ull, 3058616374642353473ull}}, {{15171895087354811494ull, 3493717621656332583ull, 3749104679520275553ull, 6117232749284706947ull}}, {{11897046101000071372ull, 6987435243312665167ull, 7498209359040551106ull, 12234465498569413894ull}}, {{9758106849683834921ull, 1397487048662533033ull, 16257037130775751514ull, 2446893099713882778ull}}, {{1069469625658118226ull, 2794974097325066067ull, 14067330187841951412ull, 4893786199427765557ull}}, {{2138939251316236451ull, 5589948194650132134ull, 9687916301974351208ull, 9787572398855531115ull}}, {{7806485479747067937ull, 12186036083155757396ull, 1937583260394870241ull, 1957514479771106223ull}}, {{15612970959494135874ull, 5925328092601963176ull, 3875166520789740483ull, 3915028959542212446ull}}, {{12779197845278720131ull, 11850656185203926353ull, 7750333041579480966ull, 7830057919084424892ull}}, {{6245188383797654350ull, 13438177681266516240ull, 8928764237799716839ull, 1566011583816884978ull}}, {{12490376767595308699ull, 8429611288823480864ull, 17857528475599433679ull, 3132023167633769956ull}}, {{6534009461481065782ull, 16859222577646961729ull, 17268312877489315742ull, 6264046335267539913ull}}, {{13068018922962131563ull, 15271701081584371842ull, 16089881681269079869ull, 12528092670535079827ull}}, {{13681650228818157283ull, 6743689031058784691ull, 10596673965737636620ull, 2505618534107015965ull}}, {{8916556383926762949ull, 13487378062117569383ull, 2746603857765721624ull, 5011237068214031931ull}}, {{17833112767853525897ull, 8528012050525587150ull, 5493207715531443249ull, 10022474136428063862ull}}, {{7255971368312615503ull, 5394951224847027753ull, 8477339172590109296ull, 2004494827285612772ull}}, {{14511942736625231005ull, 10789902449694055506ull, 16954678345180218592ull, 4008989654571225544ull}}, {{10577141399540910394ull, 3133060825678559397ull, 15462612616650885569ull, 8017979309142451089ull}}, {{2115428279908182079ull, 11694658609361442849ull, 17849917782297818406ull, 1603595861828490217ull}}, {{4230856559816364158ull, 4942573145013334082ull, 17253091490886085197ull, 3207191723656980435ull}}, {{8461713119632728315ull, 9885146290026668164ull, 16059438908062618778ull, 6414383447313960871ull}}, {{12760389068152276633ull, 16734424516972974925ull, 6901236596354434078ull, 1282876689462792174ull}}, {{7074034062595001650ull, 15022104960236398235ull, 13802473192708868157ull, 2565753378925584348ull}}, {{14148068125190003299ull, 11597465846763244854ull, 9158202311708184699ull, 5131506757851168697ull}}, {{9849392176670454981ull, 4748187619816938093ull, 18316404623416369399ull, 10263013515702337394ull}}, {{5659227250076001320ull, 12017683968189118588ull, 18420676183650915172ull, 2052602703140467478ull}}, {{11318454500152002639ull, 5588623862668685560ull, 18394608293592278729ull, 4105205406280934957ull}}, {{4190164926594453662ull, 11177247725337371121ull, 18342472513475005842ull, 8210410812561869915ull}}, {{11906079429544621702ull, 9614147174551294870ull, 3668494502695001168ull, 1642082162512373983ull}}, {{5365414785379691788ull, 781550275393038125ull, 7336989005390002337ull, 3284164325024747966ull}}, {{10730829570759383576ull, 1563100550786076250ull, 14673978010780004674ull, 6568328650049495932ull}}, {{5835514728893787039ull, 4001968924899125573ull, 10313493231639821581ull, 1313665730009899186ull}}, {{11671029457787574077ull, 8003937849798251146ull, 2180242389570091546ull, 2627331460019798373ull}}, {{4895314841865596538ull, 16007875699596502293ull, 4360484779140183092ull, 5254662920039596746ull}}, {{9790629683731193075ull, 13569007325483452970ull, 8720969558280366185ull, 10509325840079193492ull}}, {{9336823566230059262ull, 10092499094580511240ull, 9122891541139893883ull, 2101865168015838698ull}}, {{226903058750566907ull, 1738254115451470865ull, 18245783082279787767ull, 4203730336031677396ull}}, {{453806117501133814ull, 3476508230902941730ull, 18044822090850023918ull, 8407460672063354793ull}}, {{3780110038242137086ull, 4384650460922498669ull, 14677010862395735753ull, 1681492134412670958ull}}, {{7560220076484274172ull, 8769300921844997338ull, 10907277651081919890ull, 3362984268825341917ull}}, {{15120440152968548344ull, 17538601843689994676ull, 3367811228454288164ull, 6725968537650683835ull}}, {{3024088030593709669ull, 18265115627705640228ull, 673562245690857632ull, 1345193707530136767ull}}, {{6048176061187419338ull, 18083487181701728840ull, 1347124491381715265ull, 2690387415060273534ull}}, {{12096352122374838675ull, 17720230289693906064ull, 2694248982763430531ull, 5380774830120547068ull}}, {{5745960171040125734ull, 16993716505678260513ull, 5388497965526861063ull, 10761549660241094136ull}}, {{8527889663691845794ull, 18156138560103293395ull, 4767048407847282535ull, 2152309932048218827ull}}, {{17055779327383691587ull, 17865533046497035174ull, 9534096815694565071ull, 4304619864096437654ull}}, {{15664814581057831557ull, 17284322019284518733ull, 621449557679578527ull, 8609239728192875309ull}}, {{17890358175179207605ull, 7146213218598814069ull, 14881685170503556998ull, 1721847945638575061ull}}, {{17333972276648863593ull, 14292426437197628139ull, 11316626267297562380ull, 3443695891277150123ull}}, {{16221200479588175569ull, 10138108800685704663ull, 4186508460885573145ull, 6887391782554300247ull}}, {{3244240095917635114ull, 9406319389620961579ull, 8215999321660935275ull, 1377478356510860049ull}}, {{6488480191835270228ull, 365894705532371542ull, 16431998643321870551ull, 2754956713021720098ull}}, {{12976960383670540455ull, 731789411064743084ull, 14417253212934189486ull, 5509913426043440197ull}}, {{7507176693631529294ull, 1463578822129486169ull, 10387762352158827356ull, 11019826852086880395ull}}, {{1501435338726305859ull, 3982064579167807557ull, 2077552470431765471ull, 2203965370417376079ull}}, {{3002870677452611718ull, 7964129158335615114ull, 4155104940863530942ull, 4407930740834752158ull}}, {{6005741354905223435ull, 15928258316671230228ull, 8310209881727061884ull, 8815861481669504316ull}}, {{12269194715206775657ull, 3185651663334246045ull, 5351390791087322700ull, 1763172296333900863ull}}, {{6091645356703999697ull, 6371303326668492091ull, 10702781582174645400ull, 3526344592667801726ull}}, {{12183290713407999394ull, 12742606653336984182ull, 2958819090639739184ull, 7052689185335603453ull}}, {{17194053401649241172ull, 9927218960151217482ull, 11659810262353678806ull, 1410537837067120690ull}}, {{15941362729588930728ull, 1407693846592883349ull, 4872876450997805997ull, 2821075674134241381ull}}, {{13435981385468309839ull, 2815387693185766699ull, 9745752901995611994ull, 5642151348268482762ull}}, {{8425218697227068061ull, 5630775386371533399ull, 1044761730281672372ull, 11284302696536965525ull}}, {{5374392554187323936ull, 8504852706758127326ull, 208952346056334474ull, 2256860539307393105ull}}, {{10748785108374647871ull, 17009705413516254652ull, 417904692112668948ull, 4513721078614786210ull}}, {{3050826143039744126ull, 15572666753322957689ull, 835809384225337897ull, 9027442157229572420ull}}, {{4299514043349859149ull, 10493230980148412184ull, 167161876845067579ull, 1805488431445914484ull}}, {{8599028086699718297ull, 2539717886587272752ull, 334323753690135159ull, 3610976862891828968ull}}, {{17198056173399436594ull, 5079435773174545504ull, 668647507380270318ull, 7221953725783657936ull}}, {{14507657678905618289ull, 15773282413602550393ull, 3823078316217964386ull, 1444390745156731587ull}}, {{10568571284101684961ull, 13099820753495549171ull, 7646156632435928773ull, 2888781490313463174ull}}, {{2690398494493818305ull, 7752897433281546727ull, 15292313264871857547ull, 5777562980626926348ull}}, {{5380796988987636610ull, 15505794866563093454ull, 12137882456034163478ull, 11555125961253852697ull}}, {{15833554656765168615ull, 3101158973312618690ull, 9806274120690653342ull, 2311025192250770539ull}}, {{13220365239820785614ull, 6202317946625237381ull, 1165804167671755068ull, 4622050384501541079ull}}, {{7993986405932019612ull, 12404635893250474763ull, 2331608335343510136ull, 9244100769003082158ull}}, {{8977494910670224569ull, 17238322437617736245ull, 11534368111294432996ull, 1848820153800616431ull}}, {{17954989821340449138ull, 16029900801525920874ull, 4621992148879314377ull, 3697640307601232863ull}}, {{17463235568971346659ull, 13613057529342290133ull, 9243984297758628755ull, 7395280615202465726ull}}, {{18250042372761910625ull, 6411960320610368349ull, 5538145674293636074ull, 1479056123040493145ull}}, {{18053340671814269633ull, 12823920641220736699ull, 11076291348587272148ull, 2958112246080986290ull}}, {{17659937269918987650ull, 7201097208731921783ull, 3705838623464992681ull, 5916224492161972581ull}}, {{16873130466128423684ull, 14402194417463843567ull, 7411677246929985362ull, 11832448984323945162ull}}, {{7063974907967595060ull, 17637834142460410006ull, 8861033078869817718ull, 2366489796864789032ull}}, {{14127949815935190120ull, 16828924211211268396ull, 17722066157739635437ull, 4732979593729578064ull}}, {{9809155558160828624ull, 15211104348712985177ull, 16997388241769719259ull, 9465959187459156129ull}}, {{1961831111632165725ull, 14110267313968328005ull, 18156872907321585144ull, 1893191837491831225ull}}, {{3923662223264331450ull, 9773790554227104394ull, 17867001740933618673ull, 3786383674983662451ull}}, {{7847324446528662900ull, 1100837034744657172ull, 17287259408157685731ull, 7572767349967324903ull}}, {{5258813704047642904ull, 14977562665916572727ull, 14525498325857268115ull, 1514553469993464980ull}}, {{10517627408095285807ull, 11508381258123593838ull, 10604252578004984615ull, 3029106939986929961ull}}, {{2588510742481019997ull, 4570018442537636061ull, 2761761082300417615ull, 6058213879973859923ull}}, {{5177021484962039993ull, 9140036885075272122ull, 5523522164600835230ull, 12116427759947719846ull}}, {{12103450741218138969ull, 5517356191756964747ull, 4794053247662077369ull, 2423285551989543969ull}}, {{5760157408726726321ull, 11034712383513929495ull, 9588106495324154738ull, 4846571103979087938ull}}, {{11520314817453452641ull, 3622680693318307374ull, 729468916938757861ull, 9693142207958175877ull}}, {{9682760592974511175ull, 11792582582889392444ull, 7524591412871572218ull, 1938628441591635175ull}}, {{918777112239470733ull, 5138421092069233273ull, 15049182825743144437ull, 3877256883183270350ull}}, {{1837554224478941466ull, 10276842184138466546ull, 11651621577776737258ull, 7754513766366540701ull}}, {{367510844895788294ull, 16812763695795334602ull, 6019673130297257774ull, 1550902753273308140ull}}, {{735021689791576587ull, 15178783317881117588ull, 12039346260594515549ull, 3101805506546616280ull}}, {{1470043379583153173ull, 11910822562052683560ull, 5631948447479479483ull, 6203611013093232561ull}}, {{2940086759166306346ull, 5374901050395815504ull, 11263896894958958967ull, 12407222026186465122ull}}, {{11656063796058992239ull, 15832375469046804393ull, 9631477008475612439ull, 2481444405237293024ull}}, {{4865383518408432862ull, 13218006864384057171ull, 816209943241673263ull, 4962888810474586049ull}}, {{9730767036816865723ull, 7989269655058562726ull, 1632419886483346527ull, 9925777620949172098ull}}, {{5635502222105283468ull, 1597853931011712545ull, 11394530421522400275ull, 1985155524189834419ull}}, {{11271004444210566936ull, 3195707862023425090ull, 4342316769335248934ull, 3970311048379668839ull}}, {{4095264814711582255ull, 6391415724046850181ull, 8684633538670497868ull, 7940622096759337678ull}}, {{8197750592426137098ull, 4967631959551280359ull, 12804973151959830543ull, 1588124419351867535ull}}, {{16395501184852274195ull, 9935263919102560718ull, 7163202230210109470ull, 3176248838703735071ull}}, {{14344258295994996774ull, 1423783764495569821ull, 14326404460420218941ull, 6352497677407470142ull}}, {{10241772518280441931ull, 2847567528991139643ull, 10206064847130886266ull, 12704995354814940285ull}}, {{16805749762623729679ull, 4258862320540138251ull, 2041212969426177253ull, 2540999070962988057ull}}, {{15164755451537907742ull, 8517724641080276503ull, 4082425938852354506ull, 5081998141925976114ull}}, {{11882766829366263868ull, 17035449282160553007ull, 8164851877704709012ull, 10163996283851952228ull}}, {{9755250995357073420ull, 3407089856432110601ull, 12701016819766672772ull, 2032799256770390445ull}}, {{1063757917004595224ull, 6814179712864221203ull, 6955289565823793928ull, 4065598513540780891ull}}, {{2127515834009190448ull, 13628359425728442406ull, 13910579131647587856ull, 8131197027081561782ull}}, {{15182898425769479383ull, 13793718329371419450ull, 10160813455813338217ull, 1626239405416312356ull}}, {{11919052777829407149ull, 9140692585033287285ull, 1874882837917124819ull, 3252478810832624713ull}}, {{5391361481949262682ull, 18281385170066574571ull, 3749765675834249638ull, 6504957621665249426ull}}, {{1078272296389852537ull, 18413672292980956207ull, 4439301949908760250ull, 1300991524333049885ull}}, {{2156544592779705073ull, 18380600512252360798ull, 8878603899817520501ull, 2601983048666099770ull}}, {{4313089185559410146ull, 18314456950795169980ull, 17757207799635041003ull, 5203966097332199540ull}}, {{8626178371118820291ull, 18182169827880788344ull, 17067671525560530391ull, 10407932194664399081ull}}, {{5414584488965674382ull, 11015131595059978315ull, 7102883119854016401ull, 2081586438932879816ull}}, {{10829168977931348763ull, 3583519116410405014ull, 14205766239708032803ull, 4163172877865759632ull}}, {{3211593882153145910ull, 7167038232820810029ull, 9964788405706513990ull, 8326345755731519265ull}}, {{15399714035398270475ull, 1433407646564162005ull, 1992957681141302798ull, 1665269151146303853ull}}, {{12352683997086989334ull, 2866815293128324011ull, 3985915362282605596ull, 3330538302292607706ull}}, {{6258623920464427051ull, 5733630586256648023ull, 7971830724565211192ull, 6661076604585215412ull}}, {{8630422413576706057ull, 15904121376218970897ull, 8973063774396862884ull, 1332215320917043082ull}}, {{17260844827153412114ull, 13361498678728390178ull, 17946127548793725769ull, 2664430641834086164ull}} }; static const BID_UINT256 bid_multipliers2_bid64[] = { {{9438227768328448678ull, 4145630637659340425ull, 17596454752367787604ull, 34ull}}, {{429711462947345740ull, 8291261275318680851ull, 16746165431026023592ull, 69ull}}, {{859422925894691480ull, 16582522550637361702ull, 15045586788342495568ull, 139ull}}, {{1718845851789382959ull, 14718301027565171788ull, 11644429502975439521ull, 279ull}}, {{3437691703578765918ull, 10989857981420791960ull, 4842114932241327427ull, 559ull}}, {{6875383407157531835ull, 3532971889132032304ull, 9684229864482654855ull, 1118ull}}, {{13750766814315063670ull, 7065943778264064608ull, 921715655255758094ull, 2237ull}}, {{9054789554920575724ull, 14131887556528129217ull, 1843431310511516188ull, 4474ull}}, {{18109579109841151448ull, 9817031039346706818ull, 3686862621023032377ull, 8948ull}}, {{17772414145972751280ull, 1187318004983862021ull, 7373725242046064755ull, 17896ull}}, {{17098084218235950944ull, 2374636009967724043ull, 14747450484092129510ull, 35792ull}}, {{15749424362762350272ull, 4749272019935448087ull, 11048156894474707404ull, 71585ull}}, {{13052104651815148928ull, 9498544039870896175ull, 3649569715239863192ull, 143171ull}}, {{7657465229920746239ull, 550344006032240735ull, 7299139430479726385ull, 286342ull}}, {{15314930459841492478ull, 1100688012064481470ull, 14598278860959452770ull, 572684ull}}, {{12183116845973433340ull, 2201376024128962941ull, 10749813648209353924ull, 1145369ull}}, {{5919489618237315063ull, 4402752048257925883ull, 3052883222709156232ull, 2290739ull}}, {{11838979236474630126ull, 8805504096515851766ull, 6105766445418312464ull, 4581478ull}}, {{5231214399239708635ull, 17611008193031703533ull, 12211532890836624928ull, 9162956ull}}, {{10462428798479417270ull, 16775272312353855450ull, 5976321707963698241ull, 18325913ull}}, {{2478113523249282924ull, 15103800550998159285ull, 11952643415927396483ull, 36651826ull}}, {{4956227046498565847ull, 11760857028286766954ull, 5458542758145241351ull, 73303653ull}}, {{9912454092997131693ull, 5074969982863982292ull, 10917085516290482703ull, 146607306ull}}, {{1378164112284711770ull, 10149939965727964585ull, 3387426958871413790ull, 293214613ull}}, {{2756328224569423540ull, 1853135857746377554ull, 6774853917742827581ull, 586429226ull}}, {{5512656449138847079ull, 3706271715492755108ull, 13549707835485655162ull, 1172858452ull}}, {{11025312898277694158ull, 7412543430985510216ull, 8652671597261758708ull, 2345716905ull}}, {{3603881722845836699ull, 14825086861971020433ull, 17305343194523517416ull, 4691433810ull}}, {{7207763445691673397ull, 11203429650232489250ull, 16163942315337483217ull, 9382867621ull}}, {{14415526891383346794ull, 3960115226755426884ull, 13881140556965414819ull, 18765735243ull}}, {{10384309709057141972ull, 7920230453510853769ull, 9315537040221278022ull, 37531470487ull}}, {{2321875344404732328ull, 15840460907021707539ull, 184330006733004428ull, 75062940975ull}}, {{4643750688809464655ull, 13234177740333863462ull, 368660013466008857ull, 150125881950ull}}, {{9287501377618929309ull, 8021611406958175308ull, 737320026932017715ull, 300251763900ull}}, {{128258681528307001ull, 16043222813916350617ull, 1474640053864035430ull, 600503527800ull}}, {{256517363056614002ull, 13639701554123149618ull, 2949280107728070861ull, 1201007055600ull}}, {{513034726113228003ull, 8832659034536747620ull, 5898560215456141723ull, 2402014111200ull}}, {{1026069452226456005ull, 17665318069073495240ull, 11797120430912283446ull, 4804028222400ull}}, {{2052138904452912009ull, 16883892064437438864ull, 5147496788115015277ull, 9608056444801ull}}, {{4104277808905824018ull, 15321040055165326112ull, 10294993576230030555ull, 19216112889602ull}}, {{8208555617811648035ull, 12195336036621100608ull, 2143243078750509495ull, 38432225779205ull}}, {{16417111235623296070ull, 5943927999532649600ull, 4286486157501018991ull, 76864451558410ull}}, {{14387478397537040523ull, 11887855999065299201ull, 8572972315002037982ull, 153728903116820ull}}, {{10328212721364529429ull, 5328967924421046787ull, 17145944630004075965ull, 307457806233640ull}}, {{2209681369019507241ull, 10657935848842093575ull, 15845145186298600314ull, 614915612467281ull}}, {{4419362738039014482ull, 2869127623974635534ull, 13243546298887649013ull, 1229831224934563ull}}, {{8838725476078028963ull, 5738255247949271068ull, 8040348524065746410ull, 2459662449869127ull}}, {{17677450952156057925ull, 11476510495898542136ull, 16080697048131492820ull, 4919324899738254ull}}, {{16908157830602564233ull, 4506276918087532657ull, 13714650022553434025ull, 9838649799476509ull}}, {{15369571587495576850ull, 9012553836175065315ull, 8982555971397316434ull, 19677299598953019ull}}, {{12292399101281602084ull, 18025107672350130631ull, 17965111942794632868ull, 39354599197906038ull}}, {{6138054128853652551ull, 17603471270990709647ull, 17483479811879714121ull, 78709198395812077ull}}, {{12276108257707305101ull, 16760198468271867678ull, 16520215550049876627ull, 157418396791624155ull}}, {{6105472441705058585ull, 15073652862834183741ull, 14593687026390201639ull, 314836793583248311ull}}, {{12210944883410117170ull, 11700561651958815866ull, 10740629979070851663ull, 629673587166496623ull}}, {{5975145693110682724ull, 4954379230208080117ull, 3034515884432151711ull, 1259347174332993247ull}}, {{1195029138622136545ull, 12058922290267346993ull, 7985600806370250988ull, 251869434866598649ull}}, {{2390058277244273090ull, 5671100506825142370ull, 15971201612740501977ull, 503738869733197298ull}}, {{4780116554488546179ull, 11342201013650284740ull, 13495659151771452338ull, 1007477739466394597ull}}, {{956023310897709236ull, 2268440202730056948ull, 10077829459838111114ull, 201495547893278919ull}}, {{1912046621795418472ull, 4536880405460113896ull, 1708914845966670612ull, 402991095786557839ull}}, {{3824093243590836943ull, 9073760810920227792ull, 3417829691933341224ull, 805982191573115678ull}}, {{15522213907685808682ull, 9193449791667866204ull, 11751612382612399214ull, 161196438314623135ull}}, {{12597683741662065747ull, 18386899583335732409ull, 5056480691515246812ull, 322392876629246271ull}}, {{6748623409614579878ull, 18327055092961913203ull, 10112961383030493625ull, 644785753258492542ull}}, {{1349724681922915976ull, 11044108648076203287ull, 9401289906089919371ull, 128957150651698508ull}}, {{2699449363845831952ull, 3641473222442854958ull, 355835738470287127ull, 257914301303397017ull}}, {{5398898727691663903ull, 7282946444885709916ull, 711671476940574254ull, 515828602606794034ull}}, {{10797797455383327805ull, 14565892889771419832ull, 1423342953881148508ull, 1031657205213588068ull}}, {{13227605935302396531ull, 6602527392696194289ull, 11352715035001960671ull, 206331441042717613ull}}, {{8008467796895241445ull, 13205054785392388579ull, 4258685996294369726ull, 412662882085435227ull}}, {{16016935593790482890ull, 7963365497075225542ull, 8517371992588739453ull, 825325764170870454ull}}, {{17960782377725737871ull, 8971370728898865754ull, 16460869657485389183ull, 165065152834174090ull}}, {{17474820681741924126ull, 17942741457797731509ull, 14474995241261226750ull, 330130305668348181ull}}, {{16502897289774296635ull, 17438738841885911403ull, 10503246408812901885ull, 660260611336696363ull}}, {{6989928272696769651ull, 14555794212602913250ull, 13168695725988311346ull, 132052122267339272ull}}, {{13979856545393539301ull, 10664844351496274884ull, 7890647378267071077ull, 264104244534678545ull}}, {{9512969017077526985ull, 2882944629282998153ull, 15781294756534142155ull, 528208489069357090ull}}, {{579193960445502354ull, 5765889258565996307ull, 13115845439358732694ull, 1056416978138714181ull}}, {{7494536421572921118ull, 1153177851713199261ull, 6312517902613656862ull, 211283395627742836ull}}, {{14989072843145842235ull, 2306355703426398522ull, 12625035805227313724ull, 422566791255485672ull}}, {{11531401612582132853ull, 4612711406852797045ull, 6803327536745075832ull, 845133582510971345ull}}, {{9684977952000247217ull, 8301239910854380055ull, 1360665507349015166ull, 169026716502194269ull}}, {{923211830290942818ull, 16602479821708760111ull, 2721331014698030332ull, 338053433004388538ull}}, {{1846423660581885636ull, 14758215569707968606ull, 5442662029396060665ull, 676106866008777076ull}}, {{7747982361600197774ull, 6640991928683504044ull, 4777881220621122456ull, 135221373201755415ull}}, {{15495964723200395548ull, 13281983857367008088ull, 9555762441242244912ull, 270442746403510830ull}}, {{12545185372691239479ull, 8117223641024464561ull, 664780808774938209ull, 540885492807021661ull}}, {{6643626671672927341ull, 16234447282048929123ull, 1329561617549876418ull, 1081770985614043322ull}}, {{12396771778560316438ull, 3246889456409785824ull, 7644609952993795930ull, 216354197122808664ull}}, {{6346799483411081260ull, 6493778912819571649ull, 15289219905987591860ull, 432708394245617328ull}}, {{12693598966822162519ull, 12987557825639143298ull, 12131695738265632104ull, 865416788491234657ull}}, {{17296115052332073797ull, 6286860379869738982ull, 9805036777136947067ull, 173083357698246931ull}}, {{16145486030954595977ull, 12573720759739477965ull, 1163329480564342518ull, 346166715396493863ull}}, {{13844227988199640338ull, 6700697445769404315ull, 2326658961128685037ull, 692333430792987726ull}}, {{13836892041865659038ull, 12408185933379611832ull, 4154680606967647330ull, 138466686158597545ull}}, {{9227040010021766459ull, 6369627793049672049ull, 8309361213935294661ull, 276933372317195090ull}}, {{7335946333981301ull, 12739255586099344099ull, 16618722427870589322ull, 553866744634390180ull}}, {{14671892667962602ull, 7031767098489136582ull, 14790700782031627029ull, 1107733489268780361ull}}, {{7381632008017413167ull, 1406353419697827316ull, 6647488971148235729ull, 221546697853756072ull}}, {{14763264016034826334ull, 2812706839395654632ull, 13294977942296471458ull, 443093395707512144ull}}, {{11079783958360101051ull, 5625413678791309265ull, 8143211810883391300ull, 886186791415024289ull}}, {{16973352050639661503ull, 15882477994725903145ull, 16386037621144319552ull, 177237358283004857ull}}, {{15499960027569771390ull, 13318211915742254675ull, 14325331168579087489ull, 354474716566009715ull}}, {{12553175981429991164ull, 8189679757774957735ull, 10203918263448623363ull, 708949433132019431ull}}, {{17268030455253639526ull, 16395331210522632839ull, 5730132467431634995ull, 141789886626403886ull}}, {{16089316836797727436ull, 14343918347335714063ull, 11460264934863269991ull, 283579773252807772ull}}, {{13731889599885903255ull, 10241092620961876511ull, 4473785796016988367ull, 567159546505615545ull}}, {{9017035126062254893ull, 2035441168214201407ull, 8947571592033976735ull, 1134319093011231090ull}}, {{9182104654696271625ull, 407088233642840281ull, 1789514318406795347ull, 226863818602246218ull}}, {{18364209309392543250ull, 814176467285680562ull, 3579028636813590694ull, 453727637204492436ull}}, {{18281674545075534884ull, 1628352934571361125ull, 7158057273627181388ull, 907455274408984872ull}}, {{3656334909015106977ull, 325670586914272225ull, 8810309084209256924ull, 181491054881796974ull}}, {{7312669818030213954ull, 651341173828544450ull, 17620618168418513848ull, 362982109763593948ull}}, {{14625339636060427907ull, 1302682347657088900ull, 16794492263127476080ull, 725964219527187897ull}}, {{10303765556695906228ull, 7639234099015238426ull, 10737596082109315862ull, 145192843905437579ull}}, {{2160787039682260840ull, 15278468198030476853ull, 3028448090509080108ull, 290385687810875159ull}}, {{4321574079364521680ull, 12110192322351402090ull, 6056896181018160217ull, 580771375621750318ull}}, {{8643148158729043359ull, 5773640570993252564ull, 12113792362036320435ull, 1161542751243500636ull}}, {{1728629631745808672ull, 4844076928940560836ull, 6112107287149174410ull, 232308550248700127ull}}, {{3457259263491617344ull, 9688153857881121672ull, 12224214574298348820ull, 464617100497400254ull}}, {{6914518526983234687ull, 929563642052691728ull, 6001685074887146025ull, 929234200994800509ull}}, {{8761601334880467584ull, 14943307987378179638ull, 15957732273945070497ull, 185846840198960101ull}}, {{17523202669760935168ull, 11439871901046807660ull, 13468720474180589379ull, 371693680397920203ull}}, {{16599661265812318719ull, 4432999728384063705ull, 8490696874651627143ull, 743387360795840407ull}}, {{3319932253162463744ull, 886599945676812741ull, 9076837004414146075ull, 148677472159168081ull}}, {{6639864506324927488ull, 1773199891353625482ull, 18153674008828292150ull, 297354944318336162ull}}, {{13279729012649854976ull, 3546399782707250964ull, 17860603943947032684ull, 594709888636672325ull}}, {{8112713951590158335ull, 7092799565414501929ull, 17274463814184513752ull, 1189419777273344651ull}}, {{9001240419801852314ull, 12486606357308631355ull, 7144241577578813073ull, 237883955454668930ull}}, {{18002480839603704627ull, 6526468640907711094ull, 14288483155157626147ull, 475767910909337860ull}}, {{17558217605497857637ull, 13052937281815422189ull, 10130222236605700678ull, 951535821818675721ull}}, {{14579689965325302497ull, 17367982715330725730ull, 5715393262063050458ull, 190307164363735144ull}}, {{10712635856941053378ull, 16289221356951899845ull, 11430786524126100917ull, 380614328727470288ull}}, {{2978527640172555140ull, 14131698640194248075ull, 4414828974542650219ull, 761228657454940577ull}}, {{4285054342776421352ull, 6515688542780759938ull, 8261663424392350690ull, 152245731490988115ull}}, {{8570108685552842703ull, 13031377085561519876ull, 16523326848784701380ull, 304491462981976230ull}}, {{17140217371105685405ull, 7616010097413488136ull, 14599909623859851145ull, 608982925963952461ull}}, {{15833690668501819194ull, 15232020194826976273ull, 10753075174010150674ull, 1217965851927904923ull}}, {{3166738133700363839ull, 10425101668449215901ull, 13218661479027761104ull, 243593170385580984ull}}, {{6333476267400727678ull, 2403459263188880186ull, 7990578884345970593ull, 487186340771161969ull}}, {{12666952534801455355ull, 4806918526377760372ull, 15981157768691941186ull, 974372681542323938ull}}, {{6222739321702201395ull, 15718778964243193367ull, 14264277997964119206ull, 194874536308464787ull}}, {{12445478643404402789ull, 12990813854776835118ull, 10081811922218686797ull, 389749072616929575ull}}, {{6444213213099253961ull, 7534883635844118621ull, 1716879770727821979ull, 779498145233859151ull}}, {{4978191457361761116ull, 1506976727168823724ull, 4032724768887474719ull, 155899629046771830ull}}, {{9956382914723522231ull, 3013953454337647448ull, 8065449537774949438ull, 311799258093543660ull}}, {{1466021755737492846ull, 6027906908675294897ull, 16130899075549898876ull, 623598516187087320ull}}, {{2932043511474985691ull, 12055813817350589794ull, 13815054077390246136ull, 1247197032374174641ull}}, {{4275757517036907462ull, 9789860392953938605ull, 6452359630219959550ull, 249439406474834928ull}}, {{8551515034073814923ull, 1132976712198325594ull, 12904719260439919101ull, 498878812949669856ull}}, {{17103030068147629846ull, 2265953424396651188ull, 7362694447170286586ull, 997757625899339713ull}}, {{10799303643113346616ull, 15210585943846971530ull, 12540585333659788286ull, 199551525179867942ull}}, {{3151863212517141615ull, 11974427813984391445ull, 6634426593610024957ull, 399103050359735885ull}}, {{6303726425034283230ull, 5502111554259231274ull, 13268853187220049915ull, 798206100719471770ull}}, {{16018140543974497939ull, 1100422310851846254ull, 2653770637444009983ull, 159641220143894354ull}}, {{13589537014239444262ull, 2200844621703692509ull, 5307541274888019966ull, 319282440287788708ull}}, {{8732329954769336908ull, 4401689243407385019ull, 10615082549776039932ull, 638564880575577416ull}}, {{17464659909538673815ull, 8803378486814770038ull, 2783421025842528248ull, 1277129761151154833ull}}, {{18250327240875376056ull, 5450024512104864330ull, 11624730649394236619ull, 255425952230230966ull}}, {{18053910408041200496ull, 10900049024209728661ull, 4802717225078921622ull, 510851904460461933ull}}, {{17661076742372849375ull, 3353353974709905707ull, 9605434450157843245ull, 1021703808920923866ull}}, {{14600261792700300845ull, 4360019609683891464ull, 5610435704773478972ull, 204340761784184773ull}}, {{10753779511691050074ull, 8720039219367782929ull, 11220871409546957944ull, 408681523568369546ull}}, {{3060814949672548531ull, 17440078438735565859ull, 3994998745384364272ull, 817363047136739093ull}}, {{15369558248902150999ull, 3488015687747113171ull, 11867046193302603824ull, 163472609427347818ull}}, {{12292372424094750382ull, 6976031375494226343ull, 5287348312895656032ull, 326945218854695637ull}}, {{6138000774479949148ull, 13952062750988452687ull, 10574696625791312064ull, 653890437709391274ull}}, {{1227600154895989830ull, 13858458994423421507ull, 16872334584125903705ull, 130778087541878254ull}}, {{2455200309791979659ull, 9270173915137291398ull, 15297925094542255795ull, 261556175083756509ull}}, {{4910400619583959318ull, 93603756565031180ull, 12149106115374959975ull, 523112350167513019ull}}, {{9820801239167918636ull, 187207513130062360ull, 5851468157040368334ull, 1046224700335026039ull}}, {{13032206692059314697ull, 11105487946851743441ull, 15927688890375714959ull, 209244940067005207ull}}, {{7617669310409077778ull, 3764231819993935267ull, 13408633707041878303ull, 418489880134010415ull}}, {{15235338620818155555ull, 7528463639987870534ull, 8370523340374204990ull, 836979760268020831ull}}, {{3047067724163631111ull, 5195041542739484430ull, 5363453482816751321ull, 167395952053604166ull}}, {{6094135448327262222ull, 10390083085478968860ull, 10726906965633502642ull, 334791904107208332ull}}, {{12188270896654524444ull, 2333422097248386104ull, 3007069857557453669ull, 669583808214416665ull}}, {{13505700623556635859ull, 15224079678417318513ull, 601413971511490733ull, 133916761642883333ull}}, {{8564657173403720101ull, 12001415283125085411ull, 1202827943022981467ull, 267833523285766666ull}}, {{17129314346807440202ull, 5556086492540619206ull, 2405655886045962935ull, 535667046571533332ull}}, {{15811884619905328788ull, 11112172985081238413ull, 4811311772091925870ull, 1071334093143066664ull}}, {{10541074553464886404ull, 16979829855983888975ull, 15719657613386026466ull, 214266818628613332ull}}, {{2635405033220221192ull, 15512915638258226335ull, 12992571153062501317ull, 428533637257226665ull}}, {{5270810066440442384ull, 12579087202806901054ull, 7538398232415451019ull, 857067274514453331ull}}, {{15811557272255729770ull, 2515817440561380210ull, 5197028461225000527ull, 171413454902890666ull}}, {{13176370470801907923ull, 5031634881122760421ull, 10394056922450001054ull, 342826909805781332ull}}, {{7905996867894264230ull, 10063269762245520843ull, 2341369771190450492ull, 685653819611562665ull}}, {{1581199373578852846ull, 9391351581932924815ull, 468273954238090098ull, 137130763922312533ull}}, {{3162398747157705692ull, 335959090156298014ull, 936547908476180197ull, 274261527844625066ull}}, {{6324797494315411384ull, 671918180312596028ull, 1873095816952360394ull, 548523055689250132ull}}, {{12649594988630822768ull, 1343836360625192056ull, 3746191633904720788ull, 1097046111378500264ull}}, {{13597965441951895524ull, 7647464901608859057ull, 15506633585748585450ull, 219409222275700052ull}}, {{8749186810194239431ull, 15294929803217718115ull, 12566523097787619284ull, 438818444551400105ull}}, {{17498373620388478861ull, 12143115532725884614ull, 6686302121865686953ull, 877636889102800211ull}}, {{14567721168303426742ull, 17186018365512818215ull, 5026609239115047713ull, 175527377820560042ull}}, {{10688698262897301868ull, 15925292657316084815ull, 10053218478230095427ull, 351054755641120084ull}}, {{2930652452085052119ull, 13403841240922618015ull, 1659692882750639239ull, 702109511282240169ull}}, {{11654176934642741394ull, 13748814692410254572ull, 15089333835517769140ull, 140421902256448033ull}}, {{4861609795575931171ull, 9050885311110957529ull, 11731923597325986665ull, 280843804512896067ull}}, {{9723219591151862342ull, 18101770622221915058ull, 5017103120942421714ull, 561687609025792135ull}}, {{999695108594173067ull, 17756797170734278501ull, 10034206241884843429ull, 1123375218051584270ull}}, {{199939021718834614ull, 18308754693114496993ull, 2006841248376968685ull, 224675043610316854ull}}, {{399878043437669227ull, 18170765312519442370ull, 4013682496753937371ull, 449350087220633708ull}}, {{799756086875338454ull, 17894786551329333124ull, 8027364993507874743ull, 898700174441267416ull}}, {{11227997661600798661ull, 18336352569233507917ull, 5294821813443485271ull, 179740034888253483ull}}, {{4009251249492045705ull, 18225961064757464219ull, 10589643626886970543ull, 359480069776506966ull}}, {{8018502498984091410ull, 18005178055805376822ull, 2732543180064389471ull, 718960139553013933ull}}, {{5293049314538728606ull, 18358430870128716657ull, 11614555080238608863ull, 143792027910602786ull}}, {{10586098629077457211ull, 18270117666547881698ull, 4782366086767666111ull, 287584055821205573ull}}, {{2725453184445362805ull, 18093491259386211781ull, 9564732173535332223ull, 575168111642411146ull}}, {{5450906368890725609ull, 17740238445062871946ull, 682720273361112831ull, 1150336223284822293ull}}, {{1090181273778145122ull, 18305442947980215682ull, 11204590498897953535ull, 230067244656964458ull}}, {{2180362547556290244ull, 18164141822250879748ull, 3962436924086355455ull, 460134489313928917ull}}, {{4360725095112580487ull, 17881539570792207880ull, 7924873848172710911ull, 920268978627857834ull}}, {{872145019022516098ull, 3576307914158441576ull, 16342370028602183475ull, 184053795725571566ull}}, {{1744290038045032195ull, 7152615828316883152ull, 14237995983494815334ull, 368107591451143133ull}}, {{3488580076090064390ull, 14305231656633766304ull, 10029247893280079052ull, 736215182902286267ull}}, {{11765762459443743848ull, 17618441590294394553ull, 9384547208139836456ull, 147243036580457253ull}}, {{5084780845177936079ull, 16790139106879237491ull, 322350342570121297ull, 294486073160914507ull}}, {{10169561690355872158ull, 15133534140048923366ull, 644700685140242595ull, 588972146321829014ull}}, {{1892379307002192700ull, 11820324206388295117ull, 1289401370280485191ull, 1177944292643658028ull}}, {{4067824676142348864ull, 17121460100245300316ull, 11325926718281828007ull, 235588858528731605ull}}, {{8135649352284697727ull, 15796176126781049016ull, 4205109362854104399ull, 471177717057463211ull}}, {{16271298704569395453ull, 13145608179852546416ull, 8410218725708208799ull, 942355434114926422ull}}, {{10632957370397699737ull, 6318470450712419606ull, 9060741374625462406ull, 188471086822985284ull}}, {{2819170667085847858ull, 12636940901424839213ull, 18121482749250924812ull, 376942173645970568ull}}, {{5638341334171695716ull, 6827137729140126810ull, 17796221424792298009ull, 753884347291941137ull}}, {{4817017081576249467ull, 5054776360569935685ull, 10937941914442280248ull, 150776869458388227ull}}, {{9634034163152498933ull, 10109552721139871370ull, 3429139755175008880ull, 301553738916776455ull}}, {{821324252595446250ull, 1772361368570191125ull, 6858279510350017761ull, 603107477833552910ull}}, {{1642648505190892499ull, 3544722737140382250ull, 13716559020700035522ull, 1206214955667105820ull}}, {{7707227330521999147ull, 8087642176911897096ull, 2743311804140007104ull, 241242991133421164ull}}, {{15414454661043998293ull, 16175284353823794192ull, 5486623608280014208ull, 482485982266842328ull}}, {{12382165248378444969ull, 13903824633938036769ull, 10973247216560028417ull, 964971964533684656ull}}, {{9855130679159509641ull, 13848811371013338323ull, 5883998258053916006ull, 192994392906736931ull}}, {{1263517284609467665ull, 9250878668317125031ull, 11767996516107832013ull, 385988785813473862ull}}, {{2527034569218935329ull, 55013262924698446ull, 5089248958506112411ull, 771977571626947725ull}}, {{7884104543327607713ull, 3700351467326850012ull, 1017849791701222482ull, 154395514325389545ull}}, {{15768209086655215425ull, 7400702934653700024ull, 2035699583402444964ull, 308791028650779090ull}}, {{13089674099600879233ull, 14801405869307400049ull, 4071399166804889928ull, 617582057301558180ull}}, {{7732604125492206849ull, 11156067664905248483ull, 8142798333609779857ull, 1235164114603116360ull}}, {{1546520825098441370ull, 9609911162464870343ull, 1628559666721955971ull, 247032822920623272ull}}, {{3093041650196882740ull, 773078251220189070ull, 3257119333443911943ull, 494065645841246544ull}}, {{6186083300393765479ull, 1546156502440378140ull, 6514238666887823886ull, 988131291682493088ull}}, {{15994611919046394389ull, 15066626559455716920ull, 12370894177603295746ull, 197626258336498617ull}}, {{13542479764383237162ull, 11686509045201882225ull, 6295044281497039877ull, 395252516672997235ull}}, {{8638215455056922707ull, 4926274016694212835ull, 12590088562994079755ull, 790505033345994470ull}}, {{1727643091011384542ull, 985254803338842567ull, 2518017712598815951ull, 158101006669198894ull}}, {{3455286182022769083ull, 1970509606677685134ull, 5036035425197631902ull, 316202013338397788ull}}, {{6910572364045538166ull, 3941019213355370268ull, 10072070850395263804ull, 632404026676795576ull}}, {{13821144728091076331ull, 7882038426710740536ull, 1697397627080975992ull, 1264808053353591153ull}}, {{6453577760360125590ull, 1576407685342148107ull, 11407525969641926168ull, 252961610670718230ull}}, {{12907155520720251179ull, 3152815370684296214ull, 4368307865574300720ull, 505923221341436461ull}}, {{7367566967730950741ull, 6305630741368592429ull, 8736615731148601440ull, 1011846442682872922ull}}, {{5162862208288100472ull, 8639823777757539132ull, 9126020775713540934ull, 202369288536574584ull}}, {{10325724416576200943ull, 17279647555515078264ull, 18252041551427081868ull, 404738577073149168ull}}, {{2204704759442850270ull, 16112551037320604913ull, 18057339029144612121ull, 809477154146298337ull}}, {{4130289766630480378ull, 14290556651689851952ull, 10990165435312743070ull, 161895430829259667ull}}, {{8260579533260960755ull, 10134369229670152288ull, 3533586796915934525ull, 323790861658519335ull}}, {{16521159066521921509ull, 1821994385630752960ull, 7067173593831869051ull, 647581723317038670ull}}, {{6993580628046294625ull, 4053747691868060915ull, 1413434718766373810ull, 129516344663407734ull}}, {{13987161256092589250ull, 8107495383736121830ull, 2826869437532747620ull, 259032689326815468ull}}, {{9527578438475626884ull, 16214990767472243661ull, 5653738875065495240ull, 518065378653630936ull}}, {{608412803241702152ull, 13983237461234935707ull, 11307477750130990481ull, 1036130757307261872ull}}, {{121682560648340431ull, 13864693936472718111ull, 9640193179510018742ull, 207226151461452374ull}}, {{243365121296680861ull, 9282643799235884606ull, 833642285310485869ull, 414452302922904749ull}}, {{486730242593361721ull, 118543524762217596ull, 1667284570620971739ull, 828904605845809498ull}}, {{11165392492744403314ull, 7402406334436264165ull, 11401503358349925317ull, 165780921169161899ull}}, {{3884040911779255012ull, 14804812668872528331ull, 4356262642990299018ull, 331561842338323799ull}}, {{7768081823558510024ull, 11162881264035505046ull, 8712525285980598037ull, 663123684676647598ull}}, {{5242965179453612328ull, 2232576252807101009ull, 12810551501421850577ull, 132624736935329519ull}}, {{10485930358907224656ull, 4465152505614202018ull, 7174358929134149538ull, 265249473870659039ull}}, {{2525116644104897696ull, 8930305011228404037ull, 14348717858268299076ull, 530498947741318078ull}}, {{5050233288209795391ull, 17860610022456808074ull, 10250691642827046536ull, 1060997895482636157ull}}, {{8388744287125779725ull, 14640168448717092584ull, 9428835958049229953ull, 212199579096527231ull}}, {{16777488574251559450ull, 10833592823724633552ull, 410927842388908291ull, 424399158193054463ull}}, {{15108233074793567283ull, 3220441573739715489ull, 821855684777816583ull, 848798316386108926ull}}, {{14089693059184444427ull, 15401483573715584390ull, 3853719951697473639ull, 169759663277221785ull}}, {{9732642044659337237ull, 12356223073721617165ull, 7707439903394947279ull, 339519326554443570ull}}, {{1018540015609122857ull, 6265702073733682715ull, 15414879806789894559ull, 679038653108887140ull}}, {{14961103262089465865ull, 16010535673714377835ull, 3082975961357978911ull, 135807730621777428ull}}, {{11475462450469380113ull, 13574327273719204055ull, 6165951922715957823ull, 271615461243554856ull}}, {{4504180827229208609ull, 8701910473728856495ull, 12331903845431915647ull, 543230922487109712ull}}, {{9008361654458417217ull, 17403820947457712990ull, 6217063617154279678ull, 1086461844974219425ull}}, {{12869718775117414413ull, 14548810633717273567ull, 1243412723430855935ull, 217292368994843885ull}}, {{7292693476525277210ull, 10650877193724995519ull, 2486825446861711871ull, 434584737989687770ull}}, {{14585386953050554420ull, 2855010313740439422ull, 4973650893723423743ull, 869169475979375540ull}}, {{2917077390610110884ull, 11639048506973818854ull, 994730178744684748ull, 173833895195875108ull}}, {{5834154781220221768ull, 4831352940238086092ull, 1989460357489369497ull, 347667790391750216ull}}, {{11668309562440443536ull, 9662705880476172184ull, 3978920714978738994ull, 695335580783500432ull}}, {{2333661912488088708ull, 5621889990837144760ull, 8174481772479568445ull, 139067116156700086ull}}, {{4667323824976177415ull, 11243779981674289520ull, 16348963544959136890ull, 278134232313400172ull}}, {{9334647649952354829ull, 4040815889639027424ull, 14251183016208722165ull, 556268464626800345ull}}, {{222551226195158041ull, 8081631779278054849ull, 10055621958707892714ull, 1112536929253600691ull}}, {{14801905504206672901ull, 1616326355855610969ull, 5700473206483488866ull, 222507385850720138ull}}, {{11157066934703794186ull, 3232652711711221939ull, 11400946412966977732ull, 445014771701440276ull}}, {{3867389795698036756ull, 6465305423422443879ull, 4355148752224403848ull, 890029543402880553ull}}, {{773477959139607352ull, 4982409899426399099ull, 11939076194670611739ull, 178005908680576110ull}}, {{1546955918279214703ull, 9964819798852798198ull, 5431408315631671862ull, 356011817361152221ull}}, {{3093911836558429405ull, 1482895523996044780ull, 10862816631263343725ull, 712023634722304442ull}}, {{7997479996795506528ull, 7675276734283029602ull, 9551260955736489391ull, 142404726944460888ull}}, {{15994959993591013055ull, 15350553468566059204ull, 655777837763427166ull, 284809453888921777ull}}, {{13543175913472474494ull, 12254362863422566793ull, 1311555675526854333ull, 569618907777843554ull}}, {{8639607753235397371ull, 6061981653135581971ull, 2623111351053708667ull, 1139237815555687108ull}}, {{5417270365388989798ull, 1212396330627116394ull, 11592668714436472703ull, 227847563111137421ull}}, {{10834540730777979595ull, 2424792661254232788ull, 4738593355163393790ull, 455695126222274843ull}}, {{3222337387846407574ull, 4849585322508465577ull, 9477186710326787580ull, 911390252444549686ull}}, {{11712513921795012485ull, 4659265879243603438ull, 5584786156807267839ull, 182278050488909937ull}}, {{4978283769880473353ull, 9318531758487206877ull, 11169572313614535678ull, 364556100977819874ull}}, {{9956567539760946705ull, 190319443264862138ull, 3892400553519519741ull, 729112201955639749ull}}, {{13059359952177920311ull, 38063888652972427ull, 15535875369671545241ull, 145822440391127949ull}}, {{7671975830646289006ull, 76127777305944855ull, 12625006665633538866ull, 291644880782255899ull}}, {{15343951661292578011ull, 152255554611889710ull, 6803269257557526116ull, 583289761564511799ull}}, {{12241159248875604405ull, 304511109223779421ull, 13606538515115052232ull, 1166579523129023598ull}}, {{6137580664517031205ull, 60902221844755884ull, 13789354147248741416ull, 233315904625804719ull}}, {{12275161329034062409ull, 121804443689511768ull, 9131964220787931216ull, 466631809251609439ull}}, {{6103578584358573201ull, 243608887379023537ull, 18263928441575862432ull, 933263618503218878ull}}, {{8599413346355535287ull, 48721777475804707ull, 14720832132540903456ull, 186652723700643775ull}}, {{17198826692711070574ull, 97443554951609414ull, 10994920191372255296ull, 373305447401287551ull}}, {{15950909311712589531ull, 194887109903218829ull, 3543096309034958976ull, 746610894802575103ull}}, {{14258228306568248876ull, 14796372680948285058ull, 11776665706032722764ull, 149322178960515020ull}}, {{10069712539426946136ull, 11146001288187018501ull, 5106587338355893913ull, 298644357921030041ull}}, {{1692681005144340655ull, 3845258502664485387ull, 10213174676711787827ull, 597288715842060082ull}}, {{3385362010288681309ull, 7690517005328970774ull, 1979605279714024038ull, 1194577431684120165ull}}, {{8055770031541556909ull, 12606149845291525124ull, 395921055942804807ull, 238915486336824033ull}}, {{16111540063083113817ull, 6765555616873498632ull, 791842111885609615ull, 477830972673648066ull}}, {{13776336052456676017ull, 13531111233746997265ull, 1583684223771219230ull, 955661945347296132ull}}, {{10133964839975155850ull, 10084919876233220099ull, 7695434474238064492ull, 191132389069459226ull}}, {{1821185606240760084ull, 1723095678756888583ull, 15390868948476128985ull, 382264778138918452ull}}, {{3642371212481520168ull, 3446191357513777166ull, 12334993823242706354ull, 764529556277836905ull}}, {{728474242496304034ull, 15446633530470396726ull, 2466998764648541270ull, 152905911255567381ull}}, {{1456948484992608067ull, 12446522987231241836ull, 4933997529297082541ull, 305811822511134762ull}}, {{2913896969985216134ull, 6446301900752932056ull, 9867995058594165083ull, 611623645022269524ull}}, {{5827793939970432268ull, 12892603801505864112ull, 1289246043478778550ull, 1223247290044539049ull}}, {{4854907602735996777ull, 17335916019268814115ull, 15015244467663397002ull, 244649458008907809ull}}, {{9709815205471993554ull, 16225087964828076614ull, 11583744861617242389ull, 489298916017815619ull}}, {{972886337234435491ull, 14003431855946601613ull, 4720745649524933163ull, 978597832035631239ull}}, {{194577267446887099ull, 10179384000673140969ull, 15701544388872627925ull, 195719566407126247ull}}, {{389154534893774197ull, 1912023927636730322ull, 12956344704035704235ull, 391439132814252495ull}}, {{778309069787548393ull, 3824047855273460644ull, 7465945334361856854ull, 782878265628504991ull}}, {{14913057072925150972ull, 764809571054692128ull, 5182537881614281694ull, 156575653125700998ull}}, {{11379370072140750327ull, 1529619142109384257ull, 10365075763228563388ull, 313151306251401996ull}}, {{4311996070571949038ull, 3059238284218768515ull, 2283407452747575160ull, 626302612502803993ull}}, {{8623992141143898075ull, 6118476568437537030ull, 4566814905495150320ull, 1252605225005607986ull}}, {{5414147242970689939ull, 4913044128429417729ull, 4602711795840940387ull, 250521045001121597ull}}, {{10828294485941379877ull, 9826088256858835458ull, 9205423591681880774ull, 501042090002243194ull}}, {{3209844898173208137ull, 1205432440008119301ull, 18410847183363761549ull, 1002084180004486388ull}}, {{11710015423860372597ull, 7619784117485444506ull, 14750215880898483279ull, 200416836000897277ull}}, {{4973286774011193578ull, 15239568234970889013ull, 11053687688087414942ull, 400833672001794555ull}}, {{9946573548022387156ull, 12032392396232226410ull, 3660631302465278269ull, 801667344003589111ull}}, {{1989314709604477432ull, 2406478479246445282ull, 4421475075234965977ull, 160333468800717822ull}}, {{3978629419208954863ull, 4812956958492890564ull, 8842950150469931954ull, 320666937601435644ull}}, {{7957258838417909725ull, 9625913916985781128ull, 17685900300939863908ull, 641333875202871288ull}}, {{16348847026651223238ull, 5614531598139066548ull, 14605226504413703751ull, 128266775040574257ull}}, {{14250949979592894860ull, 11229063196278133097ull, 10763708935117855886ull, 256533550081148515ull}}, {{10055155885476238103ull, 4011382318846714579ull, 3080673796526160157ull, 513067100162297031ull}}, {{1663567697242924590ull, 8022764637693429159ull, 6161347593052320314ull, 1026134200324594062ull}}, {{332713539448584918ull, 5293901742280596155ull, 8610967148094284709ull, 205226840064918812ull}}, {{665427078897169836ull, 10587803484561192310ull, 17221934296188569418ull, 410453680129837624ull}}, {{1330854157794339672ull, 2728862895412833004ull, 15997124518667587221ull, 820907360259675249ull}}, {{15023566090526509228ull, 545772579082566600ull, 17956820162701158737ull, 164181472051935049ull}}, {{11600388107343466839ull, 1091545158165133201ull, 17466896251692765858ull, 328362944103870099ull}}, {{4754032140977382061ull, 2183090316330266403ull, 16487048429675980100ull, 656725888207740199ull}}, {{8329504057679297059ull, 15194013322233694573ull, 18054804944902837312ull, 131345177641548039ull}}, {{16659008115358594117ull, 11941282570757837530ull, 17662865816096123009ull, 262690355283096079ull}}, {{14871272157007636618ull, 5435821067806123445ull, 16878987558482694403ull, 525380710566192159ull}}, {{11295800240305721620ull, 10871642135612246891ull, 15311231043255837190ull, 1050761421132384319ull}}, {{2259160048061144324ull, 16931723686090090671ull, 17819641467618808730ull, 210152284226476863ull}}, {{4518320096122288648ull, 15416703298470629726ull, 17192538861528065845ull, 420304568452953727ull}}, {{9036640192244577296ull, 12386662523231707836ull, 15938333649346580075ull, 840609136905907455ull}}, {{5496676853190825783ull, 2477332504646341567ull, 3187666729869316015ull, 168121827381181491ull}}, {{10993353706381651565ull, 4954665009292683134ull, 6375333459738632030ull, 336243654762362982ull}}, {{3539963339053751514ull, 9909330018585366269ull, 12750666919477264060ull, 672487309524725964ull}}, {{11776039112036481273ull, 16739261262684714546ull, 17307528642863094104ull, 134497461904945192ull}}, {{5105334150363410929ull, 15031778451659877477ull, 16168313212016636593ull, 268994923809890385ull}}, {{10210668300726821858ull, 11616812829610203338ull, 13889882350323721571ull, 537989847619780771ull}}, {{1974592527744092099ull, 4786881585510855061ull, 9333020626937891527ull, 1075979695239561543ull}}, {{4084267320290728743ull, 957376317102171012ull, 12934650569613309275ull, 215195939047912308ull}}, {{8168534640581457486ull, 1914752634204342024ull, 7422557065517066934ull, 430391878095824617ull}}, {{16337069281162914972ull, 3829505268408684048ull, 14845114131034133868ull, 860783756191649234ull}}, {{3267413856232582995ull, 8144598683165557456ull, 17726418085174468066ull, 172156751238329846ull}}, {{6534827712465165989ull, 16289197366331114912ull, 17006092096639384516ull, 344313502476659693ull}}, {{13069655424930331978ull, 14131650658952678208ull, 15565440119569217417ull, 688627004953319387ull}}, {{9992628714469887042ull, 17583725390758176934ull, 10491785653397664129ull, 137725400990663877ull}}, {{1538513355230222468ull, 16720706707806802253ull, 2536827233085776643ull, 275450801981327755ull}}, {{3077026710460444936ull, 14994669341904052890ull, 5073654466171553287ull, 550901603962655510ull}}, {{6154053420920889871ull, 11542594610098554164ull, 10147308932343106575ull, 1101803207925311020ull}}, {{15988205943151819267ull, 2308518922019710832ull, 2029461786468621315ull, 220360641585062204ull}}, {{13529667812594086918ull, 4617037844039421665ull, 4058923572937242630ull, 440721283170124408ull}}, {{8612591551478622220ull, 9234075688078843331ull, 8117847145874485260ull, 881442566340248816ull}}, {{9101215939779545091ull, 5536163952357678989ull, 5312918243916807375ull, 176288513268049763ull}}, {{18202431879559090181ull, 11072327904715357978ull, 10625836487833614750ull, 352577026536099526ull}}, {{17958119685408628746ull, 3697911735721164341ull, 2804928901957677885ull, 705154053072199053ull}}, {{18349019196049367042ull, 11807628791369963837ull, 11629032224617266546ull, 141030810614439810ull}}, {{18251294318389182468ull, 5168513509030376059ull, 4811320375524981477ull, 282061621228879621ull}}, {{18055844563068813320ull, 10337027018060752119ull, 9622640751049962954ull, 564123242457759242ull}}, {{17664945052428075024ull, 2227309962411952623ull, 798537428390374293ull, 1128246484915518485ull}}, {{7222337825227525328ull, 11513508436708121494ull, 159707485678074858ull, 225649296983103697ull}}, {{14444675650455050656ull, 4580272799706691372ull, 319414971356149717ull, 451298593966207394ull}}, {{10442607227200549696ull, 9160545599413382745ull, 638829942712299434ull, 902597187932414788ull}}, {{9467219074923930586ull, 9210806749366497195ull, 11195812432768190856ull, 180519437586482957ull}}, {{487694076138309555ull, 18421613498732994391ull, 3944880791826830096ull, 361038875172965915ull}}, {{975388152276619110ull, 18396482923756437166ull, 7889761583653660193ull, 722077750345931830ull}}, {{14952472889422965115ull, 14747343028977018402ull, 1577952316730732038ull, 144415550069186366ull}}, {{11458201705136378614ull, 11047941984244485189ull, 3155904633461464077ull, 288831100138372732ull}}, {{4469659336563205612ull, 3649139894779418763ull, 6311809266922928155ull, 577662200276745464ull}}, {{8939318673126411223ull, 7298279789558837526ull, 12623618533845856310ull, 1155324400553490928ull}}, {{16545258993592923538ull, 12527702402137498474ull, 13592770150994902231ull, 231064880110698185ull}}, {{14643773913476295459ull, 6608660730565445333ull, 8738796228280252847ull, 462129760221396371ull}}, {{10840803753243039301ull, 13217321461130890667ull, 17477592456560505694ull, 924259520442792742ull}}, {{13236207194874338830ull, 6332813106968088456ull, 10874216120795921785ull, 184851904088558548ull}}, {{8025670316039126044ull, 12665626213936176913ull, 3301688167882291954ull, 369703808177117097ull}}, {{16051340632078252088ull, 6884508354162802210ull, 6603376335764583909ull, 739407616354234194ull}}, {{14278314570641381388ull, 12444948115058291411ull, 16078070526120558074ull, 147881523270846838ull}}, {{10109885067573211159ull, 6443152156407031207ull, 13709396978531564533ull, 295763046541693677ull}}, {{1773026061436870701ull, 12886304312814062415ull, 8972049883353577450ull, 591526093083387355ull}}, {{3546052122873741401ull, 7325864551918573214ull, 17944099766707154901ull, 1183052186166774710ull}}, {{709210424574748281ull, 5154521725125624966ull, 3588819953341430980ull, 236610437233354942ull}}, {{1418420849149496561ull, 10309043450251249932ull, 7177639906682861960ull, 473220874466709884ull}}, {{2836841698298993121ull, 2171342826792948248ull, 14355279813365723921ull, 946441748933419768ull}}, {{7946065969143619271ull, 15191663824326230942ull, 13939102406898875753ull, 189288349786683953ull}}, {{15892131938287238541ull, 11936583574942910268ull, 9431460740088199891ull, 378576699573367907ull}}, {{13337519802864925466ull, 5426423076176268921ull, 416177406466848167ull, 757153399146735815ull}}, {{13735550404798716063ull, 8463982244719074430ull, 83235481293369633ull, 151430679829347163ull}}, {{9024356735887880510ull, 16927964489438148861ull, 166470962586739266ull, 302861359658694326ull}}, {{18048713471775761019ull, 15409184905166746106ull, 332941925173478533ull, 605722719317388652ull}}, {{17650682869841970422ull, 12371625736623940597ull, 665883850346957067ull, 1211445438634777304ull}}, {{14598183018194125054ull, 6163673962066698442ull, 14890572029037032706ull, 242289087726955460ull}}, {{10749621962678698492ull, 12327347924133396885ull, 11334399984364513796ull, 484578175453910921ull}}, {{3052499851647845368ull, 6207951774557242155ull, 4222055895019475977ull, 969156350907821843ull}}, {{610499970329569074ull, 1241590354911448431ull, 11912457623229626165ull, 193831270181564368ull}}, {{1220999940659138148ull, 2483180709822896862ull, 5378171172749700714ull, 387662540363128737ull}}, {{2441999881318276295ull, 4966361419645793724ull, 10756342345499401428ull, 775325080726257474ull}}, {{4177748791005565583ull, 8371969913412979391ull, 16908663728067521578ull, 155065016145251494ull}}, {{8355497582011131165ull, 16743939826825958782ull, 15370583382425491540ull, 310130032290502989ull}}, {{16710995164022262329ull, 15041135579942365948ull, 12294422691141431465ull, 620260064581005979ull}}, {{14975246254334973041ull, 11635527086175180281ull, 6142101308573311315ull, 1240520129162011959ull}}, {{2995049250866994609ull, 17084500676202677349ull, 15985815520682303555ull, 248104025832402391ull}}, {{5990098501733989217ull, 15722257278695803082ull, 13524886967655055495ull, 496208051664804783ull}}, {{11980197003467978433ull, 12997770483682054548ull, 8603029861600559375ull, 992416103329609567ull}}, {{2396039400693595687ull, 9978251726220231556ull, 9099303601803932521ull, 198483220665921913ull}}, {{4792078801387191373ull, 1509759378730911496ull, 18198607203607865043ull, 396966441331843826ull}}, {{9584157602774382746ull, 3019518757461822992ull, 17950470333506178470ull, 793932882663687653ull}}, {{1916831520554876550ull, 11671950195718095568ull, 14658140510926966663ull, 158786576532737530ull}}, {{3833663041109753099ull, 4897156317726639520ull, 10869536948144381711ull, 317573153065475061ull}}, {{7667326082219506197ull, 9794312635453279040ull, 3292329822579211806ull, 635146306130950123ull}}, {{15334652164439012394ull, 1141881197197006464ull, 6584659645158423613ull, 1270292612261900246ull}}, {{14134976877113533449ull, 14985771498407042585ull, 5006280743773595045ull, 254058522452380049ull}}, {{9823209680517515281ull, 11524798923104533555ull, 10012561487547190091ull, 508117044904760098ull}}, {{1199675287325478946ull, 4602853772499515495ull, 1578378901384828567ull, 1016234089809520197ull}}, {{14997330316432737082ull, 15677966013467544391ull, 7694373409760786359ull, 203246817961904039ull}}, {{11547916559155922548ull, 12909187953225537167ull, 15388746819521572719ull, 406493635923808078ull}}, {{4649089044602293480ull, 7371631832741522719ull, 12330749565333593823ull, 812987271847616157ull}}, {{15687213067888099989ull, 1474326366548304543ull, 9844847542550539411ull, 162597454369523231ull}}, {{12927682062066648362ull, 2948652733096609087ull, 1242951011391527206ull, 325194908739046463ull}}, {{7408620050423745107ull, 5897305466193218175ull, 2485902022783054412ull, 650389817478092926ull}}, {{12549770454310479991ull, 12247507537464374604ull, 4186529219298521205ull, 130077963495618585ull}}, {{6652796834911408366ull, 6048271001219197593ull, 8373058438597042411ull, 260155926991237170ull}}, {{13305593669822816732ull, 12096542002438395186ull, 16746116877194084822ull, 520311853982474340ull}}, {{8164443265936081848ull, 5746339931167238757ull, 15045489680678618029ull, 1040623707964948681ull}}, {{9011586282671037016ull, 1149267986233447751ull, 6698446750877633929ull, 208124741592989736ull}}, {{18023172565342074032ull, 2298535972466895502ull, 13396893501755267858ull, 416249483185979472ull}}, {{17599601056974596448ull, 4597071944933791005ull, 8347042929800984100ull, 832498966371958945ull}}, {{3519920211394919290ull, 919414388986758201ull, 1669408585960196820ull, 166499793274391789ull}}, {{7039840422789838580ull, 1838828777973516402ull, 3338817171920393640ull, 332999586548783578ull}}, {{14079680845579677159ull, 3677657555947032804ull, 6677634343840787280ull, 665999173097567156ull}}, {{2815936169115935432ull, 4424880325931316884ull, 5024875683510067779ull, 133199834619513431ull}}, {{5631872338231870864ull, 8849760651862633768ull, 10049751367020135558ull, 266399669239026862ull}}, {{11263744676463741727ull, 17699521303725267536ull, 1652758660330719500ull, 532799338478053725ull}}, {{4080745279217931837ull, 16952298533740983457ull, 3305517320661439001ull, 1065598676956107450ull}}, {{11884195500069317337ull, 7079808521490107014ull, 661103464132287800ull, 213119735391221490ull}}, {{5321646926429083058ull, 14159617042980214029ull, 1322206928264575600ull, 426239470782442980ull}}, {{10643293852858166116ull, 9872490012250876442ull, 2644413856529151201ull, 852478941564885960ull}}, {{13196705214797364193ull, 5663846817192085611ull, 528882771305830240ull, 170495788312977192ull}}, {{7946666355885176770ull, 11327693634384171223ull, 1057765542611660480ull, 340991576625954384ull}}, {{15893332711770353540ull, 4208643195058790830ull, 2115531085223320961ull, 681983153251908768ull}}, {{17936061801321712001ull, 15599123897979399458ull, 11491152661270395161ull, 136396630650381753ull}}, {{17425379528933872386ull, 12751503722249247301ull, 4535561248831238707ull, 272793261300763507ull}}, {{16404014984158193155ull, 7056263370788942987ull, 9071122497662477415ull, 545586522601527014ull}}, {{14361285894606834694ull, 14112526741577885975ull, 18142244995324954830ull, 1091173045203054028ull}}, {{13940303623147097909ull, 13890551792541308164ull, 14696495443290721935ull, 218234609040610805ull}}, {{9433863172584644201ull, 9334359511373064713ull, 10946246812871892255ull, 436469218081221611ull}}, {{420982271459736785ull, 221974949036577811ull, 3445749552034232895ull, 872938436162443223ull}}, {{14841591713259588650ull, 11112441434033046531ull, 11757196354632577548ull, 174587687232488644ull}}, {{11236439352809625684ull, 3778138794356541447ull, 5067648635555603481ull, 349175374464977289ull}}, {{4026134631909699752ull, 7556277588713082895ull, 10135297271111206962ull, 698350748929954578ull}}, {{805226926381939951ull, 1511255517742616579ull, 13095105898447972362ull, 139670149785990915ull}}, {{1610453852763879901ull, 3022511035485233158ull, 7743467723186393108ull, 279340299571981831ull}}, {{3220907705527759801ull, 6045022070970466316ull, 15486935446372786216ull, 558680599143963662ull}}, {{6441815411055519602ull, 12090044141940932632ull, 12527126819036020816ull, 1117361198287927325ull}}, {{12356409526436834890ull, 6107357643130096849ull, 2505425363807204163ull, 223472239657585465ull}}, {{6266074979164118164ull, 12214715286260193699ull, 5010850727614408326ull, 446944479315170930ull}}, {{12532149958328236328ull, 5982686498810835782ull, 10021701455228816653ull, 893888958630341860ull}}, {{2506429991665647266ull, 12264583743987898126ull, 2004340291045763330ull, 178777791726068372ull}}, {{5012859983331294532ull, 6082423414266244636ull, 4008680582091526661ull, 357555583452136744ull}}, {{10025719966662589063ull, 12164846828532489272ull, 8017361164183053322ull, 715111166904273488ull}}, {{9383841622816338459ull, 2432969365706497854ull, 12671518677062341634ull, 143022233380854697ull}}, {{320939171923125302ull, 4865938731412995709ull, 6896293280415131652ull, 286044466761709395ull}}, {{641878343846250604ull, 9731877462825991418ull, 13792586560830263304ull, 572088933523418790ull}}, {{1283756687692501207ull, 1017010851942431220ull, 9138429047950974993ull, 1144177867046837581ull}}, {{15014146596506141535ull, 14960797429356127536ull, 5517034624332105321ull, 228835573409367516ull}}, {{11581549119302731453ull, 11474850785002703457ull, 11034069248664210643ull, 457671146818735032ull}}, {{4716354164895911289ull, 4502957496295855299ull, 3621394423618869671ull, 915342293637470065ull}}, {{943270832979182258ull, 4589940314001081383ull, 724278884723773934ull, 183068458727494013ull}}, {{1886541665958364516ull, 9179880628002162766ull, 1448557769447547868ull, 366136917454988026ull}}, {{3773083331916729031ull, 18359761256004325532ull, 2897115538895095736ull, 732273834909976052ull}}, {{754616666383345807ull, 14739998695426596076ull, 7958120737262839793ull, 146454766981995210ull}}, {{1509233332766691613ull, 11033253317143640536ull, 15916241474525679587ull, 292909533963990420ull}}, {{3018466665533383225ull, 3619762560577729456ull, 13385738875341807559ull, 585819067927980841ull}}, {{6036933331066766450ull, 7239525121155458912ull, 8324733676974063502ull, 1171638135855961683ull}}, {{8586084295697173937ull, 1447905024231091782ull, 12732993179620543670ull, 234327627171192336ull}}, {{17172168591394347873ull, 2895810048462183564ull, 7019242285531535724ull, 468655254342384673ull}}, {{15897593109079144130ull, 5791620096924367129ull, 14038484571063071448ull, 937310508684769346ull}}, {{14247565066041559796ull, 15915719278352514718ull, 6497045728954524612ull, 187462101736953869ull}}, {{10048386058373567975ull, 13384694482995477821ull, 12994091457909049225ull, 374924203473907738ull}}, {{1650028043037584334ull, 8322644892281404027ull, 7541438842108546835ull, 749848406947815477ull}}, {{15087400867575158160ull, 9043226607940101451ull, 8886985397905530013ull, 149969681389563095ull}}, {{11728057661440764704ull, 18086453215880202903ull, 17773970795811060026ull, 299939362779126190ull}}, {{5009371249171977791ull, 17726162358050854191ull, 17101197517912568437ull, 599878725558252381ull}}, {{10018742498343955581ull, 17005580642392156766ull, 15755650962115585259ull, 1199757451116504763ull}}, {{13071794943894522086ull, 10779813757962251999ull, 14219176636648848021ull, 239951490223300952ull}}, {{7696845814079492556ull, 3112883442214952383ull, 9991609199588144427ull, 479902980446601905ull}}, {{15393691628158985111ull, 6225766884429904766ull, 1536474325466737238ull, 959805960893203811ull}}, {{3078738325631797023ull, 16002548635853622246ull, 3996643679835257770ull, 191961192178640762ull}}, {{6157476651263594045ull, 13558353197997692876ull, 7993287359670515541ull, 383922384357281524ull}}, {{12314953302527188089ull, 8669962322285834136ull, 15986574719341031083ull, 767844768714563048ull}}, {{9841688289989258265ull, 5423341279199077150ull, 14265361388093937186ull, 153568953742912609ull}}, {{1236632506268964913ull, 10846682558398154301ull, 10083978702478322756ull, 307137907485825219ull}}, {{2473265012537929825ull, 3246621043086756986ull, 1721213331247093897ull, 614275814971650439ull}}, {{4946530025075859649ull, 6493242086173513972ull, 3442426662494187794ull, 1228551629943300878ull}}, {{15746701263982813223ull, 8677346046718523440ull, 11756531776724568528ull, 245710325988660175ull}}, {{13046658454256074830ull, 17354692093437046881ull, 5066319479739585440ull, 491420651977320351ull}}, {{7646572834802598043ull, 16262640113164542147ull, 10132638959479170881ull, 982841303954640702ull}}, {{1529314566960519609ull, 14320574466858639399ull, 9405225421379654822ull, 196568260790928140ull}}, {{3058629133921039217ull, 10194404860007727182ull, 363706769049758029ull, 393136521581856281ull}}, {{6117258267842078434ull, 1942065646305902748ull, 727413538099516059ull, 786273043163712562ull}}, {{15980846912536056980ull, 4077761944003090872ull, 7524180337103723858ull, 157254608632742512ull}}, {{13514949751362562344ull, 8155523888006181745ull, 15048360674207447716ull, 314509217265485024ull}}, {{8583155429015573071ull, 16311047776012363491ull, 11649977274705343816ull, 629018434530970049ull}}, {{17166310858031146141ull, 14175351478315175366ull, 4853210475701136017ull, 1258036869061940099ull}}, {{10811959801090049875ull, 6524419110404945396ull, 15728037354107868496ull, 251607373812388019ull}}, {{3177175528470548134ull, 13048838220809890793ull, 13009330634506185376ull, 503214747624776039ull}}, {{6354351056941096267ull, 7650932367910229970ull, 7571917195302819137ull, 1006429495249552079ull}}, {{4960219026130129577ull, 5219535288323956317ull, 16271778698028205120ull, 201285899049910415ull}}, {{9920438052260259153ull, 10439070576647912634ull, 14096813322346858624ull, 402571798099820831ull}}, {{1394132030810966690ull, 2431397079586273653ull, 9746882570984165633ull, 805143596199641663ull}}, {{15036221665129834631ull, 4175628230659165053ull, 13017422958422564096ull, 161028719239928332ull}}, {{11625699256550117646ull, 8351256461318330107ull, 7588101843135576576ull, 322057438479856665ull}}, {{4804654439390683675ull, 16702512922636660215ull, 15176203686271153152ull, 644114876959713330ull}}, {{8339628517361957382ull, 10719200214011152689ull, 3035240737254230630ull, 128822975391942666ull}}, {{16679257034723914763ull, 2991656354312753762ull, 6070481474508461261ull, 257645950783885332ull}}, {{14911769995738277910ull, 5983312708625507525ull, 12140962949016922522ull, 515291901567770664ull}}, {{11376795917767004204ull, 11966625417251015051ull, 5835181824324293428ull, 1030583803135541329ull}}, {{13343405627779131811ull, 9772022712934023656ull, 15924431623832499978ull, 206116760627108265ull}}, {{8240067181848712005ull, 1097301352158495697ull, 13402119173955448341ull, 412233521254216531ull}}, {{16480134363697424009ull, 2194602704316991394ull, 8357494274201345066ull, 824467042508433063ull}}, {{14364073316965215772ull, 15196315799831039571ull, 12739545299065999982ull, 164893408501686612ull}}, {{10281402560220879927ull, 11945887525952527527ull, 7032346524422448349ull, 329786817003373225ull}}, {{2116061046732208238ull, 5445030978195503439ull, 14064693048844896699ull, 659573634006746450ull}}, {{11491258653572172618ull, 15846401454606741980ull, 2812938609768979339ull, 131914726801349290ull}}, {{4535773233434793619ull, 13246058835503932345ull, 5625877219537958679ull, 263829453602698580ull}}, {{9071546466869587237ull, 8045373597298313074ull, 11251754439075917359ull, 527658907205397160ull}}, {{18143092933739174473ull, 16090747194596626148ull, 4056764804442283102ull, 1055317814410794321ull}}, {{7317967401489745218ull, 14286195883145056199ull, 4500701775630366943ull, 211063562882158864ull}}, {{14635934802979490436ull, 10125647692580560782ull, 9001403551260733887ull, 422127125764317728ull}}, {{10825125532249429255ull, 1804551311451569949ull, 18002807102521467775ull, 844254251528635456ull}}, {{2165025106449885851ull, 4050259077032224313ull, 7289910235246203878ull, 168850850305727091ull}}, {{4330050212899771702ull, 8100518154064448626ull, 14579820470492407756ull, 337701700611454182ull}}, {{8660100425799543404ull, 16201036308128897252ull, 10712896867275263896ull, 675403401222908365ull}}, {{12800066529385639651ull, 6929556076367689773ull, 2142579373455052779ull, 135080680244581673ull}}, {{7153388985061727685ull, 13859112152735379547ull, 4285158746910105558ull, 270161360489163346ull}}, {{14306777970123455370ull, 9271480231761207478ull, 8570317493820211117ull, 540322720978326692ull}}, {{10166811866537359124ull, 96216389812863341ull, 17140634987640422235ull, 1080645441956653384ull}}, {{2033362373307471825ull, 14776638536930213961ull, 18185522256495725739ull, 216129088391330676ull}}, {{4066724746614943650ull, 11106533000150876306ull, 17924300439281899863ull, 432258176782661353ull}}, {{8133449493229887299ull, 3766321926592200996ull, 17401856804854248111ull, 864516353565322707ull}}, {{16384085157613618753ull, 11821310829544171168ull, 10859068990454670268ull, 172903270713064541ull}}, {{14321426241517685890ull, 5195877585378790721ull, 3271393907199788921ull, 345806541426129083ull}}, {{10196108409325820163ull, 10391755170757581443ull, 6542787814399577842ull, 691613082852258166ull}}, {{5728570496607074356ull, 13146397478377247258ull, 4997906377621825891ull, 138322616570451633ull}}, {{11457140993214148712ull, 7846050883044942900ull, 9995812755243651783ull, 276645233140903266ull}}, {{4467537912718745807ull, 15692101766089885801ull, 1544881436777751950ull, 553290466281806533ull}}, {{8935075825437491613ull, 12937459458470219986ull, 3089762873555503901ull, 1106580932563613066ull}}, {{12855061609313229293ull, 9966189521177864643ull, 4307301389453011103ull, 221316186512722613ull}}, {{7263379144916906969ull, 1485634968646177671ull, 8614602778906022207ull, 442632373025445226ull}}, {{14526758289833813937ull, 2971269937292355342ull, 17229205557812044414ull, 885264746050890452ull}}, {{13973398102192493757ull, 4283602802200381391ull, 10824538741046229529ull, 177052949210178090ull}}, {{9500052130675435898ull, 8567205604400762783ull, 3202333408382907442ull, 354105898420356181ull}}, {{553360187641320180ull, 17134411208801525567ull, 6404666816765814884ull, 708211796840712362ull}}, {{11178718481753995006ull, 7116231056502215436ull, 8659630992836983623ull, 141642359368142472ull}}, {{3910692889798438396ull, 14232462113004430873ull, 17319261985673967246ull, 283284718736284944ull}}, {{7821385779596876791ull, 10018180152299310130ull, 16191779897638382877ull, 566569437472569889ull}}, {{15642771559193753581ull, 1589616230889068644ull, 13936815721567214139ull, 1133138874945139779ull}}, {{10507251941322571363ull, 11385969690403544698ull, 17544758403281084120ull, 226627774989027955ull}}, {{2567759808935591109ull, 4325195307097537781ull, 16642772732852616625ull, 453255549978055911ull}}, {{5135519617871182218ull, 8650390614195075562ull, 14838801391995681634ull, 906511099956111823ull}}, {{15784499182541877737ull, 9108775752322835758ull, 14035806722624867296ull, 181302219991222364ull}}, {{13122254291374203857ull, 18217551504645671517ull, 9624869371540182976ull, 362604439982444729ull}}, {{7797764509038856098ull, 17988358935581791419ull, 802994669370814337ull, 725208879964889459ull}}, {{1559552901807771220ull, 7287020601858268607ull, 14917994192841804160ull, 145041775992977891ull}}, {{3119105803615542440ull, 14574041203716537214ull, 11389244311974056704ull, 290083551985955783ull}}, {{6238211607231084879ull, 10701338333723522812ull, 4331744550238561793ull, 580167103971911567ull}}, {{12476423214462169757ull, 2955932593737494008ull, 8663489100477123587ull, 1160334207943823134ull}}, {{17252679901860075245ull, 4280535333489409124ull, 16490093079063066010ull, 232066841588764626ull}}, {{16058615730010598873ull, 8561070666978818249ull, 14533442084416580404ull, 464133683177529253ull}}, {{13670487386311646129ull, 17122141333957636499ull, 10620140095123609192ull, 928267366355058507ull}}, {{13802143921488060196ull, 18181823525759168592ull, 9502725648508542484ull, 185653473271011701ull}}, {{9157543769266568775ull, 17916902977808785569ull, 558707223307533353ull, 371306946542023403ull}}, {{18315087538533137549ull, 17387061881908019522ull, 1117414446615066707ull, 742613893084046806ull}}, {{3663017507706627510ull, 14545458820607334874ull, 3912831704064923664ull, 148522778616809361ull}}, {{7326035015413255020ull, 10644173567505118132ull, 7825663408129847329ull, 297045557233618722ull}}, {{14652070030826510040ull, 2841603061300684648ull, 15651326816259694659ull, 594091114467237444ull}}, {{10857395987943468463ull, 5683206122601369297ull, 12855909558809837702ull, 1188182228934474889ull}}, {{13239525641814424663ull, 4825990039262184182ull, 17328577170729608833ull, 237636445786894977ull}}, {{8032307209919297709ull, 9651980078524368365ull, 16210410267749666050ull, 475272891573789955ull}}, {{16064614419838595417ull, 857216083339185114ull, 13974076461789780485ull, 950545783147579911ull}}, {{3212922883967719084ull, 3860792031409747346ull, 6484164107099866420ull, 190109156629515982ull}}, {{6425845767935438167ull, 7721584062819494692ull, 12968328214199732840ull, 380218313259031964ull}}, {{12851691535870876333ull, 15443168125638989384ull, 7489912354689914064ull, 760436626518063929ull}}, {{9949035936657995913ull, 14156680069353528846ull, 16255377729905624105ull, 152087325303612785ull}}, {{1451327799606440210ull, 9866616064997506077ull, 14064011386101696595ull, 304174650607225571ull}}, {{2902655599212880420ull, 1286488056285460538ull, 9681278698493841575ull, 608349301214451143ull}}, {{5805311198425760840ull, 2572976112570921076ull, 915813323278131534ull, 1216698602428902287ull}}, {{8539759869168972815ull, 4203944037256094538ull, 7561860294139446953ull, 243339720485780457ull}}, {{17079519738337945629ull, 8407888074512189076ull, 15123720588278893906ull, 486679440971560914ull}}, {{15712295402966339642ull, 16815776149024378153ull, 11800697102848236196ull, 973358881943121829ull}}, {{14210505524818998898ull, 3363155229804875630ull, 17117534679537288532ull, 194671776388624365ull}}, {{9974266975928446180ull, 6726310459609751261ull, 15788325285365025448ull, 389343552777248731ull}}, {{1501789878147340744ull, 13452620919219502523ull, 13129906497020499280ull, 778687105554497463ull}}, {{3989706790371378472ull, 13758570628069631474ull, 13694027743629830825ull, 155737421110899492ull}}, {{7979413580742756944ull, 9070397182429711332ull, 8941311413550110035ull, 311474842221798985ull}}, {{15958827161485513888ull, 18140794364859422664ull, 17882622827100220070ull, 622949684443597970ull}}, {{13470910249261476160ull, 17834844656009293713ull, 17318501580490888525ull, 1245899368887195941ull}}, {{17451577308819936525ull, 7256317745943769065ull, 7153049130840088028ull, 249179873777439188ull}}, {{16456410543930321434ull, 14512635491887538131ull, 14306098261680176056ull, 498359747554878376ull}}, {{14466077014151091251ull, 10578526910065524647ull, 10165452449650800497ull, 996719495109756753ull}}, {{10271913032314038897ull, 2115705382013104929ull, 13101136934155891069ull, 199343899021951350ull}}, {{2097081990918526178ull, 4231410764026209859ull, 7755529794602230522ull, 398687798043902701ull}}, {{4194163981837052355ull, 8462821528052419718ull, 15511059589204461044ull, 797375596087805402ull}}, {{15596228055335051764ull, 5381913120352394266ull, 10480909547324712855ull, 159475119217561080ull}}, {{12745712036960551912ull, 10763826240704788533ull, 2515075020939874094ull, 318950238435122161ull}}, {{7044680000211552207ull, 3080908407700025451ull, 5030150041879748189ull, 637900476870244322ull}}, {{14089360000423104413ull, 6161816815400050902ull, 10060300083759496378ull, 1275800953740488644ull}}, {{17575267259052262176ull, 8611060992563830826ull, 16769455275719540568ull, 255160190748097728ull}}, {{16703790444394972735ull, 17222121985127661653ull, 15092166477729529520ull, 510320381496195457ull}}, {{14960836815080393854ull, 15997499896545771691ull, 11737588881749507425ull, 1020640762992390915ull}}, {{6681516177757989094ull, 3199499979309154338ull, 2347517776349901485ull, 204128152598478183ull}}, {{13363032355515978188ull, 6398999958618308676ull, 4695035552699802970ull, 408256305196956366ull}}, {{8279320637322404760ull, 12797999917236617353ull, 9390071105399605940ull, 816512610393912732ull}}, {{1655864127464480952ull, 9938297612931144117ull, 9256711850563741834ull, 163302522078782546ull}}, {{3311728254928961904ull, 1429851152152736618ull, 66679627417932053ull, 326605044157565093ull}}, {{6623456509857923808ull, 2859702304305473236ull, 133359254835864106ull, 653210088315130186ull}}, {{12392737746197315732ull, 7950638090344915293ull, 3716020665709083144ull, 130642017663026037ull}}, {{6338731418685079847ull, 15901276180689830587ull, 7432041331418166288ull, 261284035326052074ull}}, {{12677462837370159693ull, 13355808287670109558ull, 14864082662836332577ull, 522568070652104148ull}}, {{6908181601030767770ull, 8264872501630667501ull, 11281421251963113539ull, 1045136141304208297ull}}, {{8760333949689974201ull, 5342323315068043823ull, 9634981879876443354ull, 209027228260841659ull}}, {{17520667899379948401ull, 10684646630136087646ull, 823219686043335092ull, 418054456521683319ull}}, {{16594591725050345185ull, 2922549186562623677ull, 1646439372086670185ull, 836108913043366638ull}}, {{3318918345010069037ull, 11652556281538255705ull, 11397334318643065006ull, 167221782608673327ull}}, {{6637836690020138074ull, 4858368489366959794ull, 4347924563576578397ull, 334443565217346655ull}}, {{13275673380040276148ull, 9716736978733919588ull, 8695849127153156794ull, 668887130434693310ull}}, {{10033832305491875876ull, 16700742654714425210ull, 1739169825430631358ull, 133777426086938662ull}}, {{1620920537274200136ull, 14954741235719298805ull, 3478339650861262717ull, 267554852173877324ull}}, {{3241841074548400272ull, 11462738397729045994ull, 6956679301722525435ull, 535109704347754648ull}}, {{6483682149096800544ull, 4478732721748540372ull, 13913358603445050871ull, 1070219408695509296ull}}, {{16054131688787001402ull, 8274444173833528720ull, 6472020535430920497ull, 214043881739101859ull}}, {{13661519303864451188ull, 16548888347667057441ull, 12944041070861840994ull, 428087763478203718ull}}, {{8876294534019350759ull, 14651032621624563267ull, 7441338068014130373ull, 856175526956407437ull}}, {{9153956536287690799ull, 2930206524324912653ull, 8866965243086646721ull, 171235105391281487ull}}, {{18307913072575381597ull, 5860413048649825306ull, 17733930486173293442ull, 342470210782562974ull}}, {{18169082071441211577ull, 11720826097299650613ull, 17021116898637035268ull, 684940421565125949ull}}, {{3633816414288242316ull, 9722862848943750769ull, 18161618638695048346ull, 136988084313025189ull}}, {{7267632828576484631ull, 998981624177949922ull, 17876493203680545077ull, 273976168626050379ull}}, {{14535265657152969262ull, 1997963248355899844ull, 17306242333651538538ull, 547952337252100759ull}}, {{10623787240596386907ull, 3995926496711799689ull, 16165740593593525460ull, 1095904674504201519ull}}, {{13192803892345008351ull, 15556580558310001230ull, 17990543377686346384ull, 219180934900840303ull}}, {{7938863710980465086ull, 12666417042910450845ull, 17534342681663141153ull, 438361869801680607ull}}, {{15877727421960930172ull, 6886090012111350074ull, 16621941289616730691ull, 876723739603361215ull}}, {{3175545484392186035ull, 5066566817164180338ull, 3324388257923346138ull, 175344747920672243ull}}, {{6351090968784372069ull, 10133133634328360676ull, 6648776515846692276ull, 350689495841344486ull}}, {{12702181937568744137ull, 1819523194947169736ull, 13297553031693384553ull, 701378991682688972ull}}, {{6229785202255659151ull, 363904638989433947ull, 10038208235822497557ull, 140275798336537794ull}}, {{12459570404511318302ull, 727809277978867894ull, 1629672397935443498ull, 280551596673075589ull}}, {{6472396735313084987ull, 1455618555957735789ull, 3259344795870886996ull, 561103193346151178ull}}, {{12944793470626169973ull, 2911237111915471578ull, 6518689591741773992ull, 1122206386692302356ull}}, {{6278307508867144318ull, 11650293866608825285ull, 4993086733090265121ull, 224441277338460471ull}}, {{12556615017734288636ull, 4853843659508098954ull, 9986173466180530243ull, 448882554676920942ull}}, {{6666485961759025656ull, 9707687319016197909ull, 1525602858651508870ull, 897765109353841885ull}}, {{16090692451319446424ull, 1941537463803239581ull, 305120571730301774ull, 179553021870768377ull}}, {{13734640828929341232ull, 3883074927606479163ull, 610241143460603548ull, 359106043741536754ull}}, {{9022537584149130848ull, 7766149855212958327ull, 1220482286921207096ull, 718212087483073508ull}}, {{5493856331571736493ull, 16310625230010232958ull, 11312142901609972388ull, 143642417496614701ull}}, {{10987712663143472986ull, 14174506386310914300ull, 4177541729510393161ull, 287284834993229403ull}}, {{3528681252577394355ull, 9902268698912276985ull, 8355083459020786323ull, 574569669986458806ull}}, {{7057362505154788710ull, 1357793324115002354ull, 16710166918041572647ull, 1149139339972917612ull}}, {{12479518945256688712ull, 15028953923790641763ull, 10720731013092135175ull, 229827867994583522ull}}, {{6512293816803825807ull, 11611163773871731911ull, 2994717952474718735ull, 459655735989167045ull}}, {{13024587633607651614ull, 4775583474033912206ull, 5989435904949437471ull, 919311471978334090ull}}, {{9983615156205350970ull, 4644465509548692764ull, 1197887180989887494ull, 183862294395666818ull}}, {{1520486238701150323ull, 9288931019097385529ull, 2395774361979774988ull, 367724588791333636ull}}, {{3040972477402300645ull, 131117964485219442ull, 4791548723959549977ull, 735449177582667272ull}}, {{4297543310222370453ull, 14783618851864685181ull, 8337007374275730641ull, 147089835516533454ull}}, {{8595086620444740905ull, 11120493630019818746ull, 16674014748551461283ull, 294179671033066908ull}}, {{17190173240889481809ull, 3794243186330085876ull, 14901285423393370951ull, 588359342066133817ull}}, {{15933602408069412001ull, 7588486372660171753ull, 11355826773077190286ull, 1176718684132267635ull}}, {{17944115740581523693ull, 5207046089273944673ull, 2271165354615438057ull, 235343736826453527ull}}, {{17441487407453495770ull, 10414092178547889347ull, 4542330709230876114ull, 470687473652907054ull}}, {{16436230741197439924ull, 2381440283386227079ull, 9084661418461752229ull, 941374947305814108ull}}, {{6976594962981398308ull, 7854985686161066062ull, 12884978727918081415ull, 188274989461162821ull}}, {{13953189925962796616ull, 15709971372322132124ull, 7323213382126611214ull, 376549978922325643ull}}, {{9459635778216041616ull, 12973198670934712633ull, 14646426764253222429ull, 753099957844651286ull}}, {{12959973599868939293ull, 2594639734186942526ull, 6618634167592554809ull, 150619991568930257ull}}, {{7473203126028326970ull, 5189279468373885053ull, 13237268335185109618ull, 301239983137860514ull}}, {{14946406252056653940ull, 10378558936747770106ull, 8027792596660667620ull, 602479966275721029ull}}, {{11446068430403756263ull, 2310373799785988597ull, 16055585193321335241ull, 1204959932551442058ull}}, {{5978562500822661576ull, 15219470018924839012ull, 14279163482889998017ull, 240991986510288411ull}}, {{11957125001645323152ull, 11992195964140126408ull, 10111582892070444419ull, 481983973020576823ull}}, {{5467505929581094687ull, 5537647854570701201ull, 1776421710431337223ull, 963967946041153647ull}}, {{4782850000658129261ull, 1107529570914140240ull, 7733981971570088091ull, 192793589208230729ull}}, {{9565700001316258522ull, 2215059141828280480ull, 15467963943140176182ull, 385587178416461458ull}}, {{684655928922965427ull, 4430118283656560961ull, 12489183812570800748ull, 771174356832922917ull}}, {{3826280000526503409ull, 886023656731312192ull, 9876534391997980796ull, 154234871366584583ull}}, {{7652560001053006817ull, 1772047313462624384ull, 1306324710286409976ull, 308469742733169167ull}}, {{15305120002106013634ull, 3544094626925248768ull, 2612649420572819952ull, 616939485466338334ull}}, {{12163495930502475652ull, 7088189253850497537ull, 5225298841145639904ull, 1233878970932676668ull}}, {{17190094445068136424ull, 8796335480253920153ull, 12113106212454858950ull, 246775794186535333ull}}, {{15933444816426721231ull, 17592670960507840307ull, 5779468351200166284ull, 493551588373070667ull}}, {{13420145559143890845ull, 16738597847306128999ull, 11558936702400332569ull, 987103176746141334ull}}, {{10062726741312598816ull, 14415766013686956769ull, 17069182599447707806ull, 197420635349228266ull}}, {{1678709408915646015ull, 10384787953664361923ull, 15691621125185863997ull, 394841270698456533ull}}, {{3357418817831292030ull, 2322831833619172230ull, 12936498176662176379ull, 789682541396913067ull}}, {{4360832578308168730ull, 4153915181465744769ull, 9965997264816255922ull, 157936508279382613ull}}, {{8721665156616337459ull, 8307830362931489538ull, 1485250455922960228ull, 315873016558765227ull}}, {{17443330313232674917ull, 16615660725862979076ull, 2970500911845920456ull, 631746033117530454ull}}, {{16439916552755798217ull, 14784577378016406537ull, 5941001823691840913ull, 1263492066235060908ull}}, {{14356029754776890613ull, 6646264290345191630ull, 12256246808964099152ull, 252698413247012181ull}}, {{10265315435844229610ull, 13292528580690383261ull, 6065749544218646688ull, 505396826494024363ull}}, {{2083886797978907604ull, 8138313087671214907ull, 12131499088437293377ull, 1010793652988048726ull}}, {{416777359595781521ull, 12695709061759973951ull, 6115648632429368998ull, 202158730597609745ull}}, {{833554719191563042ull, 6944674049810396286ull, 12231297264858737997ull, 404317461195219490ull}}, {{1667109438383126083ull, 13889348099620792572ull, 6015850456007924378ull, 808634922390438981ull}}, {{4022770702418535540ull, 17535264878891799807ull, 4892518905943495198ull, 161726984478087796ull}}, {{8045541404837071080ull, 16623785684074047998ull, 9785037811886990397ull, 323453968956175592ull}}, {{16091082809674142159ull, 14800827294438544380ull, 1123331550064429179ull, 646907937912351185ull}}, {{17975611820902469725ull, 17717560717855350168ull, 224666310012885835ull, 129381587582470237ull}}, {{17504479568095387834ull, 16988377362001148721ull, 449332620025771671ull, 258763175164940474ull}}, {{16562215062481224051ull, 15530010650292745827ull, 898665240051543343ull, 517526350329880948ull}}, {{14677686051252896485ull, 12613277226875940039ull, 1797330480103086687ull, 1035052700659761896ull}}, {{10314234839734399944ull, 13590701889600918977ull, 4048814910762527660ull, 207010540131952379ull}}, {{2181725605759248271ull, 8734659705492286339ull, 8097629821525055321ull, 414021080263904758ull}}, {{4363451211518496542ull, 17469319410984572678ull, 16195259643050110642ull, 828042160527809516ull}}, {{4562039057045609632ull, 14561910326422645505ull, 6928400743351932451ull, 165608432105561903ull}}, {{9124078114091219263ull, 10677076579135739394ull, 13856801486703864903ull, 331216864211123806ull}}, {{18248156228182438526ull, 2907409084561927172ull, 9266858899698178191ull, 662433728422247613ull}}, {{7338980060378398029ull, 15338877075880026727ull, 12921418224165366607ull, 132486745684449522ull}}, {{14677960120756796057ull, 12231010078050501838ull, 7396092374621181599ull, 264973491368899045ull}}, {{10909176167804040498ull, 6015276082391452061ull, 14792184749242363199ull, 529946982737798090ull}}, {{3371608261898529379ull, 12030552164782904123ull, 11137625424775174782ull, 1059893965475596181ull}}, {{4363670467121616199ull, 13474156877182311794ull, 5916873899696945279ull, 211978793095119236ull}}, {{8727340934243232398ull, 8501569680655071972ull, 11833747799393890559ull, 423957586190238472ull}}, {{17454681868486464796ull, 17003139361310143944ull, 5220751525078229502ull, 847915172380476945ull}}, {{7180285188439203283ull, 10779325501745849435ull, 1044150305015645900ull, 169583034476095389ull}}, {{14360570376878406565ull, 3111906929782147254ull, 2088300610031291801ull, 339166068952190778ull}}, {{10274396680047261514ull, 6223813859564294509ull, 4176601220062583602ull, 678332137904381556ull}}, {{9433576965493272950ull, 12312809216138589871ull, 4524669058754427043ull, 135666427580876311ull}}, {{420409857276994283ull, 6178874358567628127ull, 9049338117508854087ull, 271332855161752622ull}}, {{840819714553988565ull, 12357748717135256254ull, 18098676235017708174ull, 542665710323505244ull}}, {{1681639429107977129ull, 6268753360560960892ull, 17750608396325864733ull, 1085331420647010489ull}}, {{15093723144789236719ull, 8632448301596012824ull, 18307516938232814239ull, 217066284129402097ull}}, {{11740702215868921822ull, 17264896603192025649ull, 18168289802756076862ull, 434132568258804195ull}}, {{5034660358028292027ull, 16083049132674499683ull, 17889835531802602109ull, 868265136517608391ull}}, {{12074978515831389375ull, 3216609826534899936ull, 7267315921102430745ull, 173653027303521678ull}}, {{5703212957953227134ull, 6433219653069799873ull, 14534631842204861490ull, 347306054607043356ull}}, {{11406425915906454268ull, 12866439306139599746ull, 10622519610700171364ull, 694612109214086713ull}}, {{13349331627407021824ull, 9951985490711740595ull, 13192550366365765242ull, 138922421842817342ull}}, {{8251919181104492031ull, 1457226907713929575ull, 7938356659021978869ull, 277844843685634685ull}}, {{16503838362208984061ull, 2914453815427859150ull, 15876713318043957738ull, 555689687371269370ull}}, {{14560932650708416505ull, 5828907630855718301ull, 13306682562378363860ull, 1111379374742538741ull}}, {{10290884159625503948ull, 4855130340913053983ull, 6350685327217583095ull, 222275874948507748ull}}, {{2135024245541456279ull, 9710260681826107967ull, 12701370654435166190ull, 444551749897015496ull}}, {{4270048491082912558ull, 973777289942664318ull, 6955997235160780765ull, 889103499794030993ull}}, {{4543358512958492835ull, 11262801902214263833ull, 12459245891257887122ull, 177820699958806198ull}}, {{9086717025916985670ull, 4078859730718976050ull, 6471747708806222629ull, 355641399917612397ull}}, {{18173434051833971339ull, 8157719461437952100ull, 12943495417612445258ull, 711282799835224794ull}}, {{11013384439850614915ull, 9010241521771411066ull, 17346094342490130344ull, 142256559967044958ull}}, {{3580024805991678213ull, 18020483043542822133ull, 16245444611270709072ull, 284513119934089917ull}}, {{7160049611983356425ull, 17594222013376092650ull, 14044145148831866529ull, 569026239868179835ull}}, {{14320099223966712850ull, 16741699953042633684ull, 9641546223954181443ull, 1138052479736359671ull}}, {{13932066289019073540ull, 18105735249576168029ull, 5617658059532746611ull, 227610495947271934ull}}, {{9417388504328595463ull, 17764726425442784443ull, 11235316119065493223ull, 455220991894543868ull}}, {{388032934947639310ull, 17082708777176017271ull, 4023888164421434831ull, 910441983789087737ull}}, {{14835001845957169155ull, 14484588199660934423ull, 8183475262368107612ull, 182088396757817547ull}}, {{11223259618204786694ull, 10522432325612317231ull, 16366950524736215225ull, 364176793515635094ull}}, {{3999775162700021771ull, 2598120577515082847ull, 14287156975762878835ull, 728353587031270189ull}}, {{4489303847281914678ull, 15277019374470657862ull, 17614826654120217059ull, 145670717406254037ull}}, {{8978607694563829355ull, 12107294675231764108ull, 16782909234530882503ull, 291341434812508075ull}}, {{17957215389127658710ull, 5767845276753976600ull, 15119074395352213391ull, 582682869625016151ull}}, {{17467686704545765804ull, 11535690553507953201ull, 11791404716994875166ull, 1165365739250032303ull}}, {{3493537340909153161ull, 17064533369669231933ull, 13426327387624706002ull, 233073147850006460ull}}, {{6987074681818306322ull, 15682322665628912250ull, 8405910701539860389ull, 466146295700012921ull}}, {{13974149363636612643ull, 12917901257548272884ull, 16811821403079720779ull, 932292591400025842ull}}, {{2794829872727322529ull, 6272929066251564900ull, 10741061910099764802ull, 186458518280005168ull}}, {{5589659745454645057ull, 12545858132503129800ull, 3035379746489977988ull, 372917036560010337ull}}, {{11179319490909290114ull, 6644972191296707984ull, 6070759492979955977ull, 745834073120020674ull}}, {{2235863898181858023ull, 5018343253001251920ull, 15971547157563632488ull, 149166814624004134ull}}, {{4471727796363716046ull, 10036686506002503840ull, 13496350241417713360ull, 298333629248008269ull}}, {{8943455592727432092ull, 1626628938295456064ull, 8545956409125875105ull, 596667258496016539ull}}, {{17886911185454864183ull, 3253257876590912128ull, 17091912818251750210ull, 1193334516992033078ull}}, {{7266731051832883160ull, 11718698019543913395ull, 14486429007876081011ull, 238666903398406615ull}}, {{14533462103665766320ull, 4990651965378275174ull, 10526113942042610407ull, 477333806796813231ull}}, {{10620180133621981023ull, 9981303930756550349ull, 2605483810375669198ull, 954667613593626463ull}}, {{2124036026724396205ull, 5685609600893220393ull, 11589143206300864809ull, 190933522718725292ull}}, {{4248072053448792410ull, 11371219201786440786ull, 4731542338892178002ull, 381867045437450585ull}}, {{8496144106897584819ull, 4295694329863329956ull, 9463084677784356005ull, 763734090874901170ull}}, {{5388577636121427287ull, 859138865972665991ull, 1892616935556871201ull, 152746818174980234ull}}, {{10777155272242854574ull, 1718277731945331982ull, 3785233871113742402ull, 305493636349960468ull}}, {{3107566470776157532ull, 3436555463890663965ull, 7570467742227484804ull, 610987272699920936ull}}, {{6215132941552315063ull, 6873110927781327930ull, 15140935484454969608ull, 1221974545399841872ull}}, {{1243026588310463013ull, 1374622185556265586ull, 10406884726374814568ull, 244394909079968374ull}}, {{2486053176620926026ull, 2749244371112531172ull, 2367025379040077520ull, 488789818159936749ull}}, {{4972106353241852051ull, 5498488742225062344ull, 4734050758080155040ull, 977579636319873498ull}}, {{8373118900132191057ull, 12167744192670743438ull, 12014856595841761977ull, 195515927263974699ull}}, {{16746237800264382113ull, 5888744311631935260ull, 5582969117973972339ull, 391031854527949399ull}}, {{15045731526819212610ull, 11777488623263870521ull, 11165938235947944678ull, 782063709055898798ull}}, {{10387843934847663169ull, 6044846539394684427ull, 13301234091415319905ull, 156412741811179759ull}}, {{2328943795985774721ull, 12089693078789368855ull, 8155724109121088194ull, 312825483622359519ull}}, {{4657887591971549442ull, 5732642083869186094ull, 16311448218242176389ull, 625650967244719038ull}}, {{9315775183943098883ull, 11465284167738372188ull, 14176152362774801162ull, 1251301934489438077ull}}, {{9241852666272440423ull, 17050452092515315730ull, 10213928102038780878ull, 250260386897887615ull}}, {{36961258835329230ull, 15654160111321079845ull, 1981112130368010141ull, 500520773795775231ull}}, {{73922517670658460ull, 12861576148932608074ull, 3962224260736020283ull, 1001041547591550462ull}}, {{14772179762501772985ull, 2572315229786521614ull, 8171142481631024703ull, 200208309518310092ull}}, {{11097615451293994354ull, 5144630459573043229ull, 16342284963262049406ull, 400416619036620184ull}}, {{3748486828878437092ull, 10289260919146086459ull, 14237825852814547196ull, 800833238073240369ull}}, {{15507092624743328712ull, 2057852183829217291ull, 17604960429530550732ull, 160166647614648073ull}}, {{12567441175777105807ull, 4115704367658434583ull, 16763176785351549848ull, 320333295229296147ull}}, {{6688138277844659997ull, 8231408735316869167ull, 15079609496993548080ull, 640666590458592295ull}}, {{8716325285052752646ull, 1646281747063373833ull, 3015921899398709616ull, 128133318091718459ull}}, {{17432650570105505292ull, 3292563494126747666ull, 6031843798797419232ull, 256266636183436918ull}}, {{16418557066501458967ull, 6585126988253495333ull, 12063687597594838464ull, 512533272366873836ull}}, {{14390370059293366317ull, 13170253976506990667ull, 5680631121480125312ull, 1025066544733747673ull}}, {{10256771641342493910ull, 2634050795301398133ull, 12204172668521756032ull, 205013308946749534ull}}, {{2066799208975436204ull, 5268101590602796267ull, 5961601263333960448ull, 410026617893499069ull}}, {{4133598417950872408ull, 10536203181205592534ull, 11923202526667920896ull, 820053235786998138ull}}, {{11894766127815905452ull, 16864635895208759799ull, 13452686949559315148ull, 164010647157399627ull}}, {{5342788181922259287ull, 15282527716707967983ull, 8458629825409078681ull, 328021294314799255ull}}, {{10685576363844518573ull, 12118311359706384350ull, 16917259650818157363ull, 656042588629598510ull}}, {{13205161716994634685ull, 13491708716167007839ull, 3383451930163631472ull, 131208517725919702ull}}, {{7963579360279717753ull, 8536673358624464063ull, 6766903860327262945ull, 262417035451839404ull}}, {{15927158720559435505ull, 17073346717248928126ull, 13533807720654525890ull, 524834070903678808ull}}, {{13407573367409319393ull, 15699949360788304637ull, 8620871367599500165ull, 1049668141807357617ull}}, {{17438909932449505172ull, 10518687501641481573ull, 9102871903003720679ull, 209933628361471523ull}}, {{16431075791189458727ull, 2590630929573411531ull, 18205743806007441359ull, 419867256722943046ull}}, {{14415407508669365837ull, 5181261859146823063ull, 17964743538305331102ull, 839734513445886093ull}}, {{13951127945959604137ull, 1036252371829364612ull, 14660995151886797190ull, 167946902689177218ull}}, {{9455511818209656658ull, 2072504743658729225ull, 10875246230064042764ull, 335893805378354437ull}}, {{464279562709761700ull, 4145009487317458451ull, 3303748386418533912ull, 671787610756708875ull}}, {{11160902356767683310ull, 8207699526947312336ull, 660749677283706782ull, 134357522151341775ull}}, {{3875060639825815004ull, 16415399053894624673ull, 1321499354567413564ull, 268715044302683550ull}}, {{7750121279651630007ull, 14384054034079697730ull, 2642998709134827129ull, 537430088605367100ull}}, {{15500242559303260013ull, 10321363994449843844ull, 5285997418269654259ull, 1074860177210734200ull}}, {{14168094956086382973ull, 16821668057857610061ull, 1057199483653930851ull, 214972035442146840ull}}, {{9889445838463214329ull, 15196592042005668507ull, 2114398967307861703ull, 429944070884293680ull}}, {{1332147603216877041ull, 11946440010301785399ull, 4228797934615723407ull, 859888141768587360ull}}, {{3955778335385285732ull, 9767985631544177726ull, 845759586923144681ull, 171977628353717472ull}}, {{7911556670770571463ull, 1089227189378803836ull, 1691519173846289363ull, 343955256707434944ull}}, {{15823113341541142926ull, 2178454378757607672ull, 3383038347692578726ull, 687910513414869888ull}}, {{6853971483050138909ull, 15193086134719162827ull, 11744654113764246714ull, 137582102682973977ull}}, {{13707942966100277817ull, 11939428195728774038ull, 5042564153818941813ull, 275164205365947955ull}}, {{8969141858491004017ull, 5432112317747996461ull, 10085128307637883627ull, 550328410731895910ull}}, {{17938283716982008034ull, 10864224635495992922ull, 1723512541566215638ull, 1100656821463791821ull}}, {{7277005558138311930ull, 16930240186066839877ull, 4034051323055153450ull, 220131364292758364ull}}, {{14554011116276623860ull, 15413736298424128138ull, 8068102646110306901ull, 440262728585516728ull}}, {{10661278158843696104ull, 12380728523138704661ull, 16136205292220613803ull, 880525457171033456ull}}, {{2132255631768739221ull, 17233540963595382225ull, 6916589873186033083ull, 176105091434206691ull}}, {{4264511263537478442ull, 16020337853481212834ull, 13833179746372066167ull, 352210182868413382ull}}, {{8529022527074956884ull, 13593931633252874052ull, 9219615419034580719ull, 704420365736826765ull}}, {{5395153320156901700ull, 17476181585618216103ull, 1843923083806916143ull, 140884073147365353ull}}, {{10790306640313803400ull, 16505619097526880590ull, 3687846167613832287ull, 281768146294730706ull}}, {{3133869206918055184ull, 14564494121344209565ull, 7375692335227664575ull, 563536292589461412ull}}, {{6267738413836110367ull, 10682244168978867514ull, 14751384670455329151ull, 1127072585178922824ull}}, {{16010942941734863367ull, 2136448833795773502ull, 17707672193058707123ull, 225414517035784564ull}}, {{13575141809760175117ull, 4272897667591547005ull, 16968600312407862630ull, 450829034071569129ull}}, {{8703539545810798617ull, 8545795335183094011ull, 15490456551106173644ull, 901658068143138259ull}}, {{16498103168129801017ull, 12777205511262349771ull, 17855486569188876021ull, 180331613628627651ull}}, {{14549462262550050417ull, 7107666948815147927ull, 17264229064668200427ull, 360663227257255303ull}}, {{10652180451390549217ull, 14215333897630295855ull, 16081714055626849238ull, 721326454514510607ull}}, {{2130436090278109844ull, 2843066779526059171ull, 10595040440609190494ull, 144265290902902121ull}}, {{4260872180556219687ull, 5686133559052118342ull, 2743336807508829372ull, 288530581805804243ull}}, {{8521744361112439374ull, 11372267118104236684ull, 5486673615017658744ull, 577061163611608486ull}}, {{17043488722224878747ull, 4297790162498921752ull, 10973347230035317489ull, 1154122327223216972ull}}, {{14476744188670706719ull, 4548906847241694673ull, 9573367075490884144ull, 230824465444643394ull}}, {{10506744303631861822ull, 9097813694483389347ull, 699990077272216672ull, 461648930889286789ull}}, {{2566744533554172028ull, 18195627388966778695ull, 1399980154544433344ull, 923297861778573578ull}}, {{7892046536194655052ull, 11017823107277176385ull, 11348042475134617638ull, 184659572355714715ull}}, {{15784093072389310104ull, 3588902140844801154ull, 4249340876559683661ull, 369319144711429431ull}}, {{13121442071069068592ull, 7177804281689602309ull, 8498681753119367322ull, 738638289422858862ull}}, {{13692334858439544688ull, 16192956115305561754ull, 9078433980107694110ull, 147727657884571772ull}}, {{8937925643169537760ull, 13939168156901571893ull, 18156867960215388221ull, 295455315769143544ull}}, {{17875851286339075520ull, 9431592240093592170ull, 17866991846721224827ull, 590910631538287089ull}}, {{17304958498968599424ull, 416440406477632725ull, 17287239619732898039ull, 1181821263076574179ull}}, {{14529038144019450855ull, 11151334525521257514ull, 18214843182914220900ull, 236364252615314835ull}}, {{10611332214329350093ull, 3855924977332963413ull, 17982942292118890185ull, 472728505230629671ull}}, {{2775920354949148570ull, 7711849954665926827ull, 17519140510528228754ull, 945457010461259343ull}}, {{15312579329957471007ull, 8921067620417006011ull, 14571874546331376720ull, 189091402092251868ull}}, {{12178414586205390398ull, 17842135240834012023ull, 10697005018953201824ull, 378182804184503737ull}}, {{5910085098701229179ull, 17237526407958472431ull, 2947265964196852033ull, 756365608369007475ull}}, {{15939412278707887129ull, 14515551725817425455ull, 589453192839370406ull, 151273121673801495ull}}, {{13432080483706222641ull, 10584359377925299295ull, 1178906385678740813ull, 302546243347602990ull}}, {{8417416893702893666ull, 2721974682141046975ull, 2357812771357481627ull, 605092486695205980ull}}, {{16834833787405787332ull, 5443949364282093950ull, 4715625542714963254ull, 1210184973390411960ull}}, {{18124362016448798760ull, 15846185131824060082ull, 943125108542992650ull, 242036994678082392ull}}, {{17801979959188045903ull, 13245626189938568549ull, 1886250217085985301ull, 484073989356164784ull}}, {{17157215844666540189ull, 8044508306167585483ull, 3772500434171970603ull, 968147978712329568ull}}, {{18188838427900949331ull, 5298250475975427419ull, 11822546531060125090ull, 193629595742465913ull}}, {{17930932782092347046ull, 10596500951950854839ull, 5198348988410698564ull, 387259191484931827ull}}, {{17415121490475142475ull, 2746257830192158063ull, 10396697976821397129ull, 774518382969863654ull}}, {{7172373112836938819ull, 11617298010264162582ull, 16836734854331920718ull, 154903676593972730ull}}, {{14344746225673877637ull, 4787851946818773548ull, 15226725634954289821ull, 309807353187945461ull}}, {{10242748377638203657ull, 9575703893637547097ull, 12006707196199028026ull, 619614706375890923ull}}, {{2038752681566855697ull, 704663713565542579ull, 5566670318688504437ull, 1239229412751781847ull}}, {{11475796980539102109ull, 14898328001680749808ull, 8492031693221521533ull, 247845882550356369ull}}, {{4504849887368652602ull, 11349911929651948001ull, 16984063386443043067ull, 495691765100712738ull}}, {{9009699774737305204ull, 4253079785594344386ull, 15521382699176534519ull, 991383530201425477ull}}, {{9180637584431281688ull, 4539964771860779200ull, 10482974169319127550ull, 198276706040285095ull}}, {{18361275168862563375ull, 9079929543721558400ull, 2519204264928703484ull, 396553412080570191ull}}, {{18275806264015575133ull, 18159859087443116801ull, 5038408529857406968ull, 793106824161140382ull}}, {{7344510067545025350ull, 3631971817488623360ull, 8386379335455302040ull, 158621364832228076ull}}, {{14689020135090050700ull, 7263943634977246720ull, 16772758670910604080ull, 317242729664456152ull}}, {{10931296196470549783ull, 14527887269954493441ull, 15098773268111656544ull, 634485459328912305ull}}, {{3415848319231547950ull, 10609030466199435267ull, 11750802462513761473ull, 1268970918657824611ull}}, {{4372518478588219914ull, 16879201352207528346ull, 6039509307244662617ull, 253794183731564922ull}}, {{8745036957176439827ull, 15311658630705505076ull, 12079018614489325235ull, 507588367463129844ull}}, {{17490073914352879653ull, 12176573187701458536ull, 5711293155269098855ull, 1015176734926259689ull}}, {{3498014782870575931ull, 17192709896507933000ull, 15899653890021461063ull, 203035346985251937ull}}, {{6996029565741151861ull, 15938675719306314384ull, 13352563706333370511ull, 406070693970503875ull}}, {{13992059131482303722ull, 13430607364903077152ull, 8258383338957189407ull, 812141387941007751ull}}, {{2798411826296460745ull, 13754167917206346400ull, 5341025482533348204ull, 162428277588201550ull}}, {{5596823652592921489ull, 9061591760703141184ull, 10682050965066696409ull, 324856555176403100ull}}, {{11193647305185842978ull, 18123183521406282368ull, 2917357856423841202ull, 649713110352806201ull}}, {{5928078275779078919ull, 14692683148506987443ull, 4272820386026678563ull, 129942622070561240ull}}, {{11856156551558157838ull, 10938622223304423270ull, 8545640772053357127ull, 259885244141122480ull}}, {{5265569029406764059ull, 3430500372899294925ull, 17091281544106714255ull, 519770488282244960ull}}, {{10531138058813528118ull, 6861000745798589850ull, 15735819014503876894ull, 1039540976564489921ull}}, {{2106227611762705624ull, 1372200149159717970ull, 6836512617642685702ull, 207908195312897984ull}}, {{4212455223525411247ull, 2744400298319435940ull, 13673025235285371404ull, 415816390625795968ull}}, {{8424910447050822494ull, 5488800596638871880ull, 8899306396861191192ull, 831632781251591937ull}}, {{16442377348377805792ull, 15855155378295415668ull, 9158558908856058884ull, 166326556250318387ull}}, {{14438010623046059968ull, 13263566682881279721ull, 18317117817712117769ull, 332653112500636774ull}}, {{10429277172382568319ull, 8080389292053007827ull, 18187491561714683923ull, 665306225001273549ull}}, {{16843250693444154957ull, 8994775487894422211ull, 18394893571310578077ull, 133061245000254709ull}}, {{15239757313178758297ull, 17989550975788844423ull, 18343043068911604538ull, 266122490000509419ull}}, {{12032770552647964978ull, 17532357877868137231ull, 18239342064113657461ull, 532244980001018839ull}}, {{5618797031586378340ull, 16617971682026722847ull, 18031940054517763307ull, 1064489960002037679ull}}, {{12191805850543006638ull, 7012943151147254892ull, 18363783269871193954ull, 212897992000407535ull}}, {{5936867627376461660ull, 14025886302294509785ull, 18280822466032836292ull, 425795984000815071ull}}, {{11873735254752923319ull, 9605028530879467954ull, 18114900858356120969ull, 851591968001630143ull}}, {{6064095865692494987ull, 9299703335659714237ull, 14691026615896955163ull, 170318393600326028ull}}, {{12128191731384989974ull, 152662597609876858ull, 10935309158084358711ull, 340636787200652057ull}}, {{5809639389060428332ull, 305325195219753717ull, 3423874242459165806ull, 681273574401304115ull}}, {{12229974322037816636ull, 3750413853785861066ull, 684774848491833161ull, 136254714880260823ull}}, {{6013204570366081656ull, 7500827707571722133ull, 1369549696983666322ull, 272509429760521646ull}}, {{12026409140732163312ull, 15001655415143444266ull, 2739099393967332644ull, 545018859521043292ull}}, {{5606074207754775008ull, 11556566756577336917ull, 5478198787934665289ull, 1090037719042086584ull}}, {{1121214841550955002ull, 13379359795541198353ull, 15853035016554574350ull, 218007543808417316ull}}, {{2242429683101910003ull, 8311975517372845090ull, 13259325959399597085ull, 436015087616834633ull}}, {{4484859366203820006ull, 16623951034745690180ull, 8071907845089642554ull, 872030175233669267ull}}, {{4586320687982674325ull, 7014139021691048359ull, 8993079198501749157ull, 174406035046733853ull}}, {{9172641375965348649ull, 14028278043382096718ull, 17986158397003498314ull, 348812070093467706ull}}, {{18345282751930697298ull, 9609812013054641820ull, 17525572720297445013ull, 697624140186935413ull}}, {{7358405365128049783ull, 5611311217352838687ull, 14573160988285219972ull, 139524828037387082ull}}, {{14716810730256099566ull, 11222622434705677374ull, 10699577902860888328ull, 279049656074774165ull}}, {{10986877386802647515ull, 3998500795701803133ull, 2952411732012225041ull, 558099312149548331ull}}, {{3527010699895743414ull, 7997001591403606267ull, 5904823464024450082ull, 1116198624299096662ull}}, {{4394750954721059006ull, 16356795577248362546ull, 8559662322288710662ull, 223239724859819332ull}}, {{8789501909442118012ull, 14266847080787173476ull, 17119324644577421325ull, 446479449719638664ull}}, {{17579003818884236024ull, 10086950087864795336ull, 15791905215445291035ull, 892958899439277329ull}}, {{3515800763776847205ull, 16774785276540600360ull, 17915776302056699499ull, 178591779887855465ull}}, {{7031601527553694410ull, 15102826479371649104ull, 17384808530403847383ull, 357183559775710931ull}}, {{14063203055107388819ull, 11758908885033746592ull, 16322872987098143151ull, 714367119551421863ull}}, {{6501989425763388087ull, 17109177035974390611ull, 14332621041645359599ull, 142873423910284372ull}}, {{13003978851526776174ull, 15771609998239229606ull, 10218498009581167583ull, 285746847820568745ull}}, {{7561213629344000732ull, 13096475922768907597ull, 1990251945452783551ull, 571493695641137491ull}}, {{15122427258688001464ull, 7746207771828263578ull, 3980503890905567103ull, 1142987391282274982ull}}, {{14092531895963331263ull, 1549241554365652715ull, 8174798407664934067ull, 228597478256454996ull}}, {{9738319718217110909ull, 3098483108731305431ull, 16349596815329868134ull, 457194956512909992ull}}, {{1029895362724670202ull, 6196966217462610863ull, 14252449556950184652ull, 914389913025819985ull}}, {{205979072544934041ull, 8618090872976342819ull, 2850489911390036930ull, 182877982605163997ull}}, {{411958145089868081ull, 17236181745952685638ull, 5700979822780073860ull, 365755965210327994ull}}, {{823916290179736162ull, 16025619418195819660ull, 11401959645560147721ull, 731511930420655988ull}}, {{14922178517003588526ull, 17962519142606805224ull, 13348438373337760513ull, 146302386084131197ull}}, {{11397612960297625435ull, 17478294211504058833ull, 8250132672965969411ull, 292604772168262395ull}}, {{4348481846885699253ull, 16509844349298566051ull, 16500265345931938823ull, 585209544336524790ull}}, {{8696963693771398505ull, 14572944624887580486ull, 14553786618154326031ull, 1170419088673049581ull}}, {{12807439182980010671ull, 10293286554461336743ull, 6600106138372775529ull, 234083817734609916ull}}, {{7168134292250469725ull, 2139829035213121871ull, 13200212276745551059ull, 468167635469219832ull}}, {{14336268584500939450ull, 4279658070426243742ull, 7953680479781550502ull, 936335270938439665ull}}, {{17624648975867829183ull, 8234629243569069394ull, 1590736095956310100ull, 187267054187687933ull}}, {{16802553878026106750ull, 16469258487138138789ull, 3181472191912620200ull, 374534108375375866ull}}, {{15158363682342661883ull, 14491772900566725963ull, 6362944383825240401ull, 749068216750751732ull}}, {{6721021551210442700ull, 13966401024339076162ull, 8651286506248868726ull, 149813643350150346ull}}, {{13442043102420885400ull, 9486057974968600708ull, 17302573012497737453ull, 299627286700300692ull}}, {{8437342131132219184ull, 525371876227649801ull, 16158401951285923291ull, 599254573400601385ull}}, {{16874684262264438367ull, 1050743752455299602ull, 13870059828862294966ull, 1198509146801202771ull}}, {{18132332111420528967ull, 7588846379974880566ull, 6463360780514369316ull, 239701829360240554ull}}, {{17817920149131506317ull, 15177692759949761133ull, 12926721561028738632ull, 479403658720481108ull}}, {{17189096224553461017ull, 11908641446189970651ull, 7406699048347925649ull, 958807317440962217ull}}, {{10816516874394512850ull, 6071077103979904453ull, 8860037439153405776ull, 191761463488192443ull}}, {{3186289675079474084ull, 12142154207959808907ull, 17720074878306811552ull, 383522926976384886ull}}, {{6372579350158948167ull, 5837564342210066198ull, 16993405682904071489ull, 767045853952769773ull}}, {{1274515870031789634ull, 8546210497925833886ull, 14466727580806545267ull, 153409170790553954ull}}, {{2549031740063579267ull, 17092420995851667772ull, 10486711087903538918ull, 306818341581107909ull}}, {{5098063480127158534ull, 15738097917993783928ull, 2526678102097526221ull, 613636683162215819ull}}, {{10196126960254317067ull, 13029451762278016240ull, 5053356204195052443ull, 1227273366324431638ull}}, {{5728574206792773737ull, 6295239167197513571ull, 12078717685064741458ull, 245454673264886327ull}}, {{11457148413585547473ull, 12590478334395027142ull, 5710691296419931300ull, 490909346529772655ull}}, {{4467552753461543330ull, 6734212595080502669ull, 11421382592839862601ull, 981818693059545310ull}}, {{893510550692308666ull, 5036191333758010857ull, 2284276518567972520ull, 196363738611909062ull}}, {{1787021101384617332ull, 10072382667516021714ull, 4568553037135945040ull, 392727477223818124ull}}, {{3574042202769234664ull, 1698021261322491812ull, 9137106074271890081ull, 785454954447636248ull}}, {{4404157255295757256ull, 15096999511232139655ull, 12895467659080108985ull, 157090990889527249ull}}, {{8808314510591514512ull, 11747254948754727694ull, 7344191244450666355ull, 314181981779054499ull}}, {{17616629021183029024ull, 5047765823799903772ull, 14688382488901332711ull, 628363963558108998ull}}, {{16786513968656506432ull, 10095531647599807545ull, 10930020904093113806ull, 1256727927116217997ull}}, {{14425349237957032256ull, 13087152773745692478ull, 9564701810302443407ull, 251345585423243599ull}}, {{10403954402204512896ull, 7727561473781833341ull, 682659546895335199ull, 502691170846487199ull}}, {{2361164730699474176ull, 15455122947563666683ull, 1365319093790670398ull, 1005382341692974398ull}}, {{15229628205107536128ull, 6780373404254643659ull, 11341110262983865049ull, 201076468338594879ull}}, {{12012512336505520640ull, 13560746808509287319ull, 4235476452258178482ull, 402152936677189759ull}}, {{5578280599301489664ull, 8674749543309023023ull, 8470952904516356965ull, 804305873354379518ull}}, {{4805004934602208256ull, 12802996352887535574ull, 12762237025129002362ull, 160861174670875903ull}}, {{9610009869204416512ull, 7159248632065519532ull, 7077729976548453109ull, 321722349341751807ull}}, {{773275664699281408ull, 14318497264131039065ull, 14155459953096906218ull, 643444698683503614ull}}, {{7533352762423676928ull, 10242397082310028459ull, 17588487249587022536ull, 128688939736700722ull}}, {{15066705524847353856ull, 2038050090910505302ull, 16730230425464493457ull, 257377879473401445ull}}, {{11686666975985156096ull, 4076100181821010605ull, 15013716777219435298ull, 514755758946802891ull}}, {{4926589878260760576ull, 8152200363642021211ull, 11580689480729318980ull, 1029511517893605783ull}}, {{15742713234619793408ull, 12698486516954135211ull, 13384184340371594765ull, 205902303578721156ull}}, {{13038682395530035200ull, 6950228960198718807ull, 8321624607033637915ull, 411804607157442313ull}}, {{7630620717350518784ull, 13900457920397437615ull, 16643249214067275830ull, 823609214314884626ull}}, {{5215472958212014080ull, 6469440398821397846ull, 7017998657555365489ull, 164721842862976925ull}}, {{10430945916424028160ull, 12938880797642795692ull, 14035997315110730978ull, 329443685725953850ull}}, {{2415147759138504704ull, 7431017521576039769ull, 9625250556511910341ull, 658887371451907701ull}}, {{4172378366569611264ull, 8864901133799028600ull, 5614398926044292391ull, 131777474290381540ull}}, {{8344756733139222528ull, 17729802267598057200ull, 11228797852088584782ull, 263554948580763080ull}}, {{16689513466278445056ull, 17012860461486562784ull, 4010851630467617949ull, 527109897161526161ull}}, {{14932282858847338496ull, 15578976849263573953ull, 8021703260935235899ull, 1054219794323052322ull}}, {{17743851830737108992ull, 6805144184594625113ull, 8983038281670867826ull, 210843958864610464ull}}, {{17040959587764666368ull, 13610288369189250227ull, 17966076563341735652ull, 421687917729220928ull}}, {{15635175101819781120ull, 8773832664668948839ull, 17485409052973919689ull, 843375835458441857ull}}, {{3127035020363956224ull, 5444115347675700091ull, 10875779440078604584ull, 168675167091688371ull}}, {{6254070040727912448ull, 10888230695351400182ull, 3304814806447657552ull, 337350334183376743ull}}, {{12508140081455824896ull, 3329717316993248748ull, 6609629612895315105ull, 674700668366753486ull}}, {{17259023275258806272ull, 4355292278140560072ull, 5011274737320973344ull, 134940133673350697ull}}, {{16071302476808060928ull, 8710584556281120145ull, 10022549474641946688ull, 269880267346701394ull}}, {{13695860879906570240ull, 17421169112562240291ull, 1598354875574341760ull, 539760534693402789ull}}, {{8944977686103588864ull, 16395594151414928967ull, 3196709751148683521ull, 1079521069386805578ull}}, {{5478344351962628096ull, 18036514089250627086ull, 11707388394455467673ull, 215904213877361115ull}}, {{10956688703925256192ull, 17626284104791702556ull, 4968032715201383731ull, 431808427754722231ull}}, {{3466633334140960768ull, 16805824135873853497ull, 9936065430402767463ull, 863616855509444462ull}}, {{8072024296312012800ull, 3361164827174770699ull, 9365910715564374139ull, 172723371101888892ull}}, {{16144048592624025600ull, 6722329654349541398ull, 285077357419196662ull, 345446742203777785ull}}, {{13841353111538499584ull, 13444659308699082797ull, 570154714838393324ull, 690893484407555570ull}}, {{6457619437049610240ull, 17446327120707457852ull, 114030942967678664ull, 138178696881511114ull}}, {{12915238874099220480ull, 16445910167705364088ull, 228061885935357329ull, 276357393763022228ull}}, {{7383733674488889344ull, 14445076261701176561ull, 456123771870714659ull, 552714787526044456ull}}, {{14767467348977778688ull, 10443408449692801506ull, 912247543741429319ull, 1105429575052088912ull}}, {{10332191099279376384ull, 5778030504680470624ull, 7561147138232106510ull, 221085915010417782ull}}, {{2217638124849201152ull, 11556061009360941249ull, 15122294276464213020ull, 442171830020835564ull}}, {{4435276249698402304ull, 4665377945012330882ull, 11797844479218874425ull, 884343660041671129ull}}, {{4576404064681590784ull, 15690470847970107469ull, 17116964154811416177ull, 176868732008334225ull}}, {{9152808129363181568ull, 12934197622230663322ull, 15787184235913280739ull, 353737464016668451ull}}, {{18305616258726363136ull, 7421651170751775028ull, 13127624398117009863ull, 707474928033336903ull}}, {{18418518510712913920ull, 5173679048892265328ull, 13693571323849132942ull, 141494985606667380ull}}, {{18390292947716276224ull, 10347358097784530657ull, 8940398573988714268ull, 282989971213334761ull}}, {{18333841821723000832ull, 2247972121859509699ull, 17880797147977428537ull, 565979942426669522ull}}, {{18220939569736450048ull, 4495944243719019399ull, 17314850222245305458ull, 1131959884853339045ull}}, {{11022885543431110656ull, 11967235292969534849ull, 3462970044449061091ull, 226391976970667809ull}}, {{3599027013152669696ull, 5487726512229518083ull, 6925940088898122183ull, 452783953941335618ull}}, {{7198054026305339392ull, 10975453024459036166ull, 13851880177796244366ull, 905567907882671236ull}}, {{12507657249486798848ull, 9573788234375627879ull, 6459724850301159196ull, 181113581576534247ull}}, {{6568570425264046080ull, 700832395041704143ull, 12919449700602318393ull, 362227163153068494ull}}, {{13137140850528092160ull, 1401664790083408286ull, 7392155327495085170ull, 724454326306136989ull}}, {{2627428170105618432ull, 15037728216984322950ull, 16235826324466658326ull, 144890865261227397ull}}, {{5254856340211236864ull, 11628712360259094284ull, 14024908575223765037ull, 289781730522454795ull}}, {{10509712680422473728ull, 4810680646808636952ull, 9603073076737978459ull, 579563461044909591ull}}, {{2572681287135395840ull, 9621361293617273905ull, 759402079766405302ull, 1159126922089819183ull}}, {{514536257427079168ull, 1924272258723454781ull, 11219926860179012030ull, 231825384417963836ull}}, {{1029072514854158336ull, 3848544517446909562ull, 3993109646648472444ull, 463650768835927673ull}}, {{2058145029708316672ull, 7697089034893819124ull, 7986219293296944888ull, 927301537671855346ull}}, {{11479675450167394304ull, 16296813065946405117ull, 5286592673401299300ull, 185460307534371069ull}}, {{4512606826625236992ull, 14146882058183258619ull, 10573185346802598601ull, 370920615068742138ull}}, {{9025213653250473984ull, 9847020042656965622ull, 2699626619895645587ull, 741841230137484277ull}}, {{5494391545392005120ull, 16726799267499034417ull, 7918622953462949763ull, 148368246027496855ull}}, {{10988783090784010240ull, 15006854461288517218ull, 15837245906925899527ull, 296736492054993710ull}}, {{3530822107858468864ull, 11566964848867482821ull, 13227747740142247439ull, 593472984109987421ull}}, {{7061644215716937728ull, 4687185624025414026ull, 8008751406574943263ull, 1186945968219974843ull}}, {{8791026472627208192ull, 4626785939546993128ull, 12669796725540719622ull, 237389193643994968ull}}, {{17582052945254416384ull, 9253571879093986256ull, 6892849377371887628ull, 474778387287989937ull}}, {{16717361816799281152ull, 60399684478420897ull, 13785698754743775257ull, 949556774575979874ull}}, {{14411518807585587200ull, 3701428751637594502ull, 17514535009916396344ull, 189911354915195974ull}}, {{10376293541461622784ull, 7402857503275189005ull, 16582325946123241072ull, 379822709830391949ull}}, {{2305843009213693952ull, 14805715006550378011ull, 14717907818536930528ull, 759645419660783899ull}}, {{11529215046068469760ull, 10339840630793896248ull, 17700976822675027398ull, 151929083932156779ull}}, {{4611686018427387904ull, 2232937187878240881ull, 16955209571640503181ull, 303858167864313559ull}}, {{9223372036854775808ull, 4465874375756481762ull, 15463675069571454746ull, 607716335728627119ull}}, {{0ull, 8931748751512963525ull, 12480606065433357876ull, 1215432671457254239ull}}, {{0ull, 1786349750302592705ull, 17253516472054312868ull, 243086534291450847ull}}, {{0ull, 3572699500605185410ull, 16060288870399074120ull, 486173068582901695ull}}, {{0ull, 7145399001210370820ull, 13673833667088596624ull, 972346137165803391ull}}, {{0ull, 1429079800242074164ull, 6424115548159629648ull, 194469227433160678ull}}, {{0ull, 2858159600484148328ull, 12848231096319259296ull, 388938454866321356ull}}, {{0ull, 5716319200968296656ull, 7249718118928966976ull, 777876909732642713ull}}, {{0ull, 15900659099161300624ull, 12517990068011524364ull, 155575381946528542ull}}, {{0ull, 13354574124613049632ull, 6589236062313497113ull, 311150763893057085ull}}, {{0ull, 8262404175516547648ull, 13178472124626994227ull, 622301527786114170ull}}, {{0ull, 16524808351033095296ull, 7910200175544436838ull, 1244603055572228341ull}}, {{0ull, 18062356929174260352ull, 5271388849850797690ull, 248920611114445668ull}}, {{0ull, 17677969784638969088ull, 10542777699701595381ull, 497841222228891336ull}}, {{0ull, 16909195495568386560ull, 2638811325693639147ull, 995682444457782673ull}}, {{0ull, 3381839099113677312ull, 11595808709364458799ull, 199136488891556534ull}}, {{0ull, 6763678198227354624ull, 4744873345019365982ull, 398272977783113069ull}}, {{0ull, 13527356396454709248ull, 9489746690038731964ull, 796545955566226138ull}}, {{0ull, 10084168908774762496ull, 12965995782233477362ull, 159309191113245227ull}}, {{0ull, 1721593743839973376ull, 7485247490757403109ull, 318618382226490455ull}}, {{0ull, 3443187487679946752ull, 14970494981514806218ull, 637236764452980910ull}}, {{0ull, 6886374975359893504ull, 11494245889320060820ull, 1274473528905961821ull}}, {{0ull, 5066623809813889024ull, 5988197992605922487ull, 254894705781192364ull}}, {{0ull, 10133247619627778048ull, 11976395985211844974ull, 509789411562384728ull}}, {{0ull, 1819751165546004480ull, 5506047896714138333ull, 1019578823124769457ull}}, {{0ull, 363950233109200896ull, 8479907208826648313ull, 203915764624953891ull}}, {{0ull, 727900466218401792ull, 16959814417653296626ull, 407831529249907782ull}}, {{0ull, 1455800932436803584ull, 15472884761597041636ull, 815663058499815565ull}}, {{0ull, 3980509001229271040ull, 3094576952319408327ull, 163132611699963113ull}}, {{0ull, 7961018002458542080ull, 6189153904638816654ull, 326265223399926226ull}}, {{0ull, 15922036004917084160ull, 12378307809277633308ull, 652530446799852452ull}}, {{0ull, 3184407200983416832ull, 9854359191339347308ull, 130506089359970490ull}}, {{0ull, 6368814401966833664ull, 1261974308969143000ull, 261012178719940981ull}}, {{0ull, 12737628803933667328ull, 2523948617938286000ull, 522024357439881962ull}}, {{0ull, 7028513534157783040ull, 5047897235876572001ull, 1044048714879763924ull}}, {{0ull, 1405702706831556608ull, 15766974706142955693ull, 208809742975952784ull}}, {{0ull, 2811405413663113216ull, 13087205338576359770ull, 417619485951905569ull}}, {{0ull, 5622810827326226432ull, 7727666603443167924ull, 835238971903811139ull}}, {{0ull, 12192608609690976256ull, 16302928579656274877ull, 167047794380762227ull}}, {{0ull, 5938473145672400896ull, 14159113085602998139ull, 334095588761524455ull}}, {{0ull, 11876946291344801792ull, 9871482097496444662ull, 668191177523048911ull}}, {{0ull, 13443435702494691328ull, 5663645234241199255ull, 133638235504609782ull}}, {{0ull, 8440127331279831040ull, 11327290468482398511ull, 267276471009219564ull}}, {{0ull, 16880254662559662080ull, 4207836863255245406ull, 534552942018439129ull}}, {{0ull, 15313765251409772544ull, 8415673726510490813ull, 1069105884036878258ull}}, {{0ull, 6752101865023864832ull, 12751181189527829132ull, 213821176807375651ull}}, {{0ull, 13504203730047729664ull, 7055618305346106648ull, 427642353614751303ull}}, {{0ull, 8561663386385907712ull, 14111236610692213297ull, 855284707229502606ull}}, {{0ull, 12780379121502912512ull, 6511596136880352982ull, 171056941445900521ull}}, {{0ull, 7114014169296273408ull, 13023192273760705965ull, 342113882891801042ull}}, {{0ull, 14228028338592546816ull, 7599640473811860314ull, 684227765783602085ull}}, {{0ull, 17603000926686150656ull, 1519928094762372062ull, 136845553156720417ull}}, {{0ull, 16759257779662749696ull, 3039856189524744125ull, 273691106313440834ull}}, {{0ull, 15071771485615947776ull, 6079712379049488251ull, 547382212626881668ull}}, {{0ull, 11696798897522343936ull, 12159424758098976503ull, 1094764425253763336ull}}, {{0ull, 17096755038472110080ull, 6121233766361705623ull, 218952885050752667ull}}, {{0ull, 15746766003234668544ull, 12242467532723411247ull, 437905770101505334ull}}, {{0ull, 13046787932759785472ull, 6038190991737270879ull, 875811540203010669ull}}, {{0ull, 13677404030777688064ull, 15965033457315095468ull, 175162308040602133ull}}, {{0ull, 8908063987845824512ull, 13483322840920639321ull, 350324616081204267ull}}, {{0ull, 17816127975691649024ull, 8519901608131727026ull, 700649232162408535ull}}, {{0ull, 7252574409880240128ull, 1703980321626345405ull, 140129846432481707ull}}, {{0ull, 14505148819760480256ull, 3407960643252690810ull, 280259692864963414ull}}, {{0ull, 10563553565811408896ull, 6815921286505381621ull, 560519385729926828ull}}, {{0ull, 2680363057913266176ull, 13631842573010763243ull, 1121038771459853656ull}}, {{0ull, 15293467870550294528ull, 6415717329344062971ull, 224207754291970731ull}}, {{0ull, 12140191667391037440ull, 12831434658688125943ull, 448415508583941462ull}}, {{0ull, 5833639261072523264ull, 7216125243666700271ull, 896831017167882925ull}}, {{0ull, 4856076666956414976ull, 1443225048733340054ull, 179366203433576585ull}}, {{0ull, 9712153333912829952ull, 2886450097466680108ull, 358732406867153170ull}}, {{0ull, 977562594116108288ull, 5772900194933360217ull, 717464813734306340ull}}, {{0ull, 7574210148307042304ull, 1154580038986672043ull, 143492962746861268ull}}, {{0ull, 15148420296614084608ull, 2309160077973344086ull, 286985925493722536ull}}, {{0ull, 11850096519518617600ull, 4618320155946688173ull, 573971850987445072ull}}, {{0ull, 5253448965327683584ull, 9236640311893376347ull, 1147943701974890144ull}}, {{0ull, 4740038607807447040ull, 16604723321346316562ull, 229588740394978028ull}}, {{0ull, 9480077215614894080ull, 14762702568983081508ull, 459177480789956057ull}}, {{0ull, 513410357520236544ull, 11078661064256611401ull, 918354961579912115ull}}, {{0ull, 3792030886245957632ull, 2215732212851322280ull, 183670992315982423ull}}, {{0ull, 7584061772491915264ull, 4431464425702644560ull, 367341984631964846ull}}, {{0ull, 15168123544983830528ull, 8862928851405289120ull, 734683969263929692ull}}, {{0ull, 10412322338480586752ull, 9151283399764878470ull, 146936793852785938ull}}, {{0ull, 2377900603251621888ull, 18302566799529756941ull, 293873587705571876ull}}, {{0ull, 4755801206503243776ull, 18158389525349962266ull, 587747175411143753ull}}, {{0ull, 9511602413006487552ull, 17870034976990372916ull, 1175494350822287507ull}}, {{0ull, 12970366926827028480ull, 10952704624881895229ull, 235098870164457501ull}}, {{0ull, 7493989779944505344ull, 3458665176054238843ull, 470197740328915003ull}}, {{0ull, 14987979559889010688ull, 6917330352108477686ull, 940395480657830006ull}}, {{0ull, 10376293541461622784ull, 5072814885163605860ull, 188079096131566001ull}}, {{0ull, 2305843009213693952ull, 10145629770327211721ull, 376158192263132002ull}}, {{0ull, 4611686018427387904ull, 1844515466944871826ull, 752316384526264005ull}}, {{0ull, 4611686018427387904ull, 368903093388974365ull, 150463276905252801ull}}, {{0ull, 9223372036854775808ull, 737806186777948730ull, 300926553810505602ull}}, {{0ull, 0ull, 1475612373555897461ull, 601853107621011204ull}}, {{0ull, 0ull, 2951224747111794922ull, 1203706215242022408ull}}, {{0ull, 0ull, 11658291393648089954ull, 240741243048404481ull}}, {{0ull, 0ull, 4869838713586628292ull, 481482486096808963ull}}, {{0ull, 0ull, 9739677427173256584ull, 962964972193617926ull}}, {{0ull, 0ull, 5637284300176561640ull, 192592994438723585ull}}, {{0ull, 0ull, 11274568600353123280ull, 385185988877447170ull}}, {{0ull, 0ull, 4102393126996694944ull, 770371977754894341ull}}, {{0ull, 0ull, 4509827440141249312ull, 154074395550978868ull}}, {{0ull, 0ull, 9019654880282498624ull, 308148791101957736ull}}, {{0ull, 0ull, 18039309760564997248ull, 616297582203915472ull}}, {{0ull, 0ull, 17631875447420442880ull, 1232595164407830945ull}}, {{0ull, 0ull, 3526375089484088576ull, 246519032881566189ull}}, {{0ull, 0ull, 7052750178968177152ull, 493038065763132378ull}}, {{0ull, 0ull, 14105500357936354304ull, 986076131526264756ull}}, {{0ull, 0ull, 6510448886329181184ull, 197215226305252951ull}}, {{0ull, 0ull, 13020897772658362368ull, 394430452610505902ull}}, {{0ull, 0ull, 7595051471607173120ull, 788860905221011805ull}}, {{0ull, 0ull, 1519010294321434624ull, 157772181044202361ull}}, {{0ull, 0ull, 3038020588642869248ull, 315544362088404722ull}}, {{0ull, 0ull, 6076041177285738496ull, 631088724176809444ull}}, {{0ull, 0ull, 12152082354571476992ull, 1262177448353618888ull}}, {{0ull, 0ull, 13498462915140026368ull, 252435489670723777ull}}, {{0ull, 0ull, 8550181756570501120ull, 504870979341447555ull}}, {{0ull, 0ull, 17100363513141002240ull, 1009741958682895110ull}}, {{0ull, 0ull, 3420072702628200448ull, 201948391736579022ull}}, {{0ull, 0ull, 6840145405256400896ull, 403896783473158044ull}}, {{0ull, 0ull, 13680290810512801792ull, 807793566946316088ull}}, {{0ull, 0ull, 13804104606328291328ull, 161558713389263217ull}}, {{0ull, 0ull, 9161465138947031040ull, 323117426778526435ull}}, {{0ull, 0ull, 18322930277894062080ull, 646234853557052870ull}}, {{0ull, 0ull, 3664586055578812416ull, 129246970711410574ull}}, {{0ull, 0ull, 7329172111157624832ull, 258493941422821148ull}}, {{0ull, 0ull, 14658344222315249664ull, 516987882845642296ull}}, {{0ull, 0ull, 10869944370920947712ull, 1033975765691284593ull}}, {{0ull, 0ull, 13242035318409920512ull, 206795153138256918ull}}, {{0ull, 0ull, 8037326563110289408ull, 413590306276513837ull}}, {{0ull, 0ull, 16074653126220578816ull, 827180612553027674ull}}, {{0ull, 0ull, 17972325884211757056ull, 165436122510605534ull}}, {{0ull, 0ull, 17497907694713962496ull, 330872245021211069ull}}, {{0ull, 0ull, 16549071315718373376ull, 661744490042422139ull}}, {{0ull, 0ull, 18067209522111315968ull, 132348898008484427ull}}, {{0ull, 0ull, 17687674970513080320ull, 264697796016968855ull}}, {{0ull, 0ull, 16928605867316609024ull, 529395592033937711ull}}, {{0ull, 0ull, 15410467660923666432ull, 1058791184067875423ull}}, {{0ull, 0ull, 14150139976410464256ull, 211758236813575084ull}}, {{0ull, 0ull, 9853535879111376896ull, 423516473627150169ull}}, {{0ull, 0ull, 1260327684513202176ull, 847032947254300339ull}}, {{0ull, 0ull, 15009460795870281728ull, 169406589450860067ull}}, {{0ull, 0ull, 11572177518031011840ull, 338813178901720135ull}}, {{0ull, 0ull, 4697610962352472064ull, 677626357803440271ull}}, {{0ull, 0ull, 4628871007212404736ull, 135525271560688054ull}}, {{0ull, 0ull, 9257742014424809472ull, 271050543121376108ull}}, {{0ull, 0ull, 68739955140067328ull, 542101086242752217ull}}, {{0ull, 0ull, 137479910280134656ull, 1084202172485504434ull}}, {{0ull, 0ull, 14784891241023668224ull, 216840434497100886ull}}, {{0ull, 0ull, 11123038408337784832ull, 433680868994201773ull}}, {{0ull, 0ull, 3799332742966018048ull, 867361737988403547ull}}, {{0ull, 0ull, 8138564178077024256ull, 173472347597680709ull}}, {{0ull, 0ull, 16277128356154048512ull, 346944695195361418ull}}, {{0ull, 0ull, 14107512638598545408ull, 693889390390722837ull}}, {{0ull, 0ull, 10200200157203529728ull, 138777878078144567ull}}, {{0ull, 0ull, 1953656240697507840ull, 277555756156289135ull}}, {{0ull, 0ull, 3907312481395015680ull, 555111512312578270ull}}, {{0ull, 0ull, 7814624962790031360ull, 1110223024625156540ull}}, {{0ull, 0ull, 1562924992558006272ull, 222044604925031308ull}}, {{0ull, 0ull, 3125849985116012544ull, 444089209850062616ull}}, {{0ull, 0ull, 6251699970232025088ull, 888178419700125232ull}}, {{0ull, 0ull, 8629037623530225664ull, 177635683940025046ull}}, {{0ull, 0ull, 17258075247060451328ull, 355271367880050092ull}}, {{0ull, 0ull, 16069406420411351040ull, 710542735760100185ull}}, {{0ull, 0ull, 3213881284082270208ull, 142108547152020037ull}}, {{0ull, 0ull, 6427762568164540416ull, 284217094304040074ull}}, {{0ull, 0ull, 12855525136329080832ull, 568434188608080148ull}}, {{0ull, 0ull, 7264306198948610048ull, 1136868377216160297ull}}, {{0ull, 0ull, 8831558869273542656ull, 227373675443232059ull}}, {{0ull, 0ull, 17663117738547085312ull, 454747350886464118ull}}, {{0ull, 0ull, 16879491403384619008ull, 909494701772928237ull}}, {{0ull, 0ull, 10754595910160744448ull, 181898940354585647ull}}, {{0ull, 0ull, 3062447746611937280ull, 363797880709171295ull}}, {{0ull, 0ull, 6124895493223874560ull, 727595761418342590ull}}, {{0ull, 0ull, 1224979098644774912ull, 145519152283668518ull}}, {{0ull, 0ull, 2449958197289549824ull, 291038304567337036ull}}, {{0ull, 0ull, 4899916394579099648ull, 582076609134674072ull}}, {{0ull, 0ull, 9799832789158199296ull, 1164153218269348144ull}}, {{0ull, 0ull, 16717361816799281152ull, 232830643653869628ull}}, {{0ull, 0ull, 14987979559889010688ull, 465661287307739257ull}}, {{0ull, 0ull, 11529215046068469760ull, 931322574615478515ull}}, {{0ull, 0ull, 2305843009213693952ull, 186264514923095703ull}}, {{0ull, 0ull, 4611686018427387904ull, 372529029846191406ull}}, {{0ull, 0ull, 9223372036854775808ull, 745058059692382812ull}}, {{0ull, 0ull, 9223372036854775808ull, 149011611938476562ull}}, {{0ull, 0ull, 0ull, 298023223876953125ull}}, {{0ull, 0ull, 0ull, 596046447753906250ull}}, {{0ull, 0ull, 0ull, 1192092895507812500ull}}, {{0ull, 0ull, 0ull, 238418579101562500ull}}, {{0ull, 0ull, 0ull, 476837158203125000ull}}, {{0ull, 0ull, 0ull, 953674316406250000ull}}, {{0ull, 0ull, 0ull, 190734863281250000ull}}, {{0ull, 0ull, 0ull, 381469726562500000ull}}, {{0ull, 0ull, 0ull, 762939453125000000ull}}, {{0ull, 0ull, 0ull, 152587890625000000ull}}, {{0ull, 0ull, 0ull, 305175781250000000ull}}, {{0ull, 0ull, 0ull, 610351562500000000ull}}, {{0ull, 0ull, 0ull, 1220703125000000000ull}}, {{0ull, 0ull, 0ull, 244140625000000000ull}}, {{0ull, 0ull, 0ull, 488281250000000000ull}}, {{0ull, 0ull, 0ull, 976562500000000000ull}}, {{0ull, 0ull, 0ull, 195312500000000000ull}}, {{0ull, 0ull, 0ull, 390625000000000000ull}}, {{0ull, 0ull, 0ull, 781250000000000000ull}}, {{0ull, 0ull, 0ull, 156250000000000000ull}}, {{0ull, 0ull, 0ull, 312500000000000000ull}}, {{0ull, 0ull, 0ull, 625000000000000000ull}}, {{0ull, 0ull, 0ull, 1250000000000000000ull}}, {{0ull, 0ull, 0ull, 250000000000000000ull}}, {{0ull, 0ull, 0ull, 500000000000000000ull}}, {{0ull, 0ull, 0ull, 1000000000000000000ull}}, {{0ull, 0ull, 0ull, 200000000000000000ull}}, {{0ull, 0ull, 0ull, 400000000000000000ull}}, {{0ull, 0ull, 0ull, 800000000000000000ull}}, {{0ull, 0ull, 0ull, 160000000000000000ull}}, {{0ull, 0ull, 0ull, 320000000000000000ull}}, {{0ull, 0ull, 0ull, 640000000000000000ull}}, {{0ull, 0ull, 0ull, 1280000000000000000ull}}, {{0ull, 0ull, 0ull, 256000000000000000ull}}, {{0ull, 0ull, 0ull, 512000000000000000ull}}, {{0ull, 0ull, 0ull, 1024000000000000000ull}}, {{0ull, 0ull, 0ull, 204800000000000000ull}}, {{0ull, 0ull, 0ull, 409600000000000000ull}}, {{0ull, 0ull, 0ull, 819200000000000000ull}}, {{0ull, 0ull, 0ull, 163840000000000000ull}}, {{0ull, 0ull, 0ull, 327680000000000000ull}}, {{0ull, 0ull, 0ull, 655360000000000000ull}}, {{0ull, 0ull, 0ull, 131072000000000000ull}}, {{0ull, 0ull, 0ull, 262144000000000000ull}}, {{0ull, 0ull, 0ull, 524288000000000000ull}}, {{0ull, 0ull, 0ull, 1048576000000000000ull}}, {{0ull, 0ull, 0ull, 209715200000000000ull}}, {{0ull, 0ull, 0ull, 419430400000000000ull}}, {{0ull, 0ull, 0ull, 838860800000000000ull}}, {{0ull, 0ull, 0ull, 167772160000000000ull}}, {{0ull, 0ull, 0ull, 335544320000000000ull}}, {{0ull, 0ull, 0ull, 671088640000000000ull}}, {{0ull, 0ull, 0ull, 134217728000000000ull}}, {{0ull, 0ull, 0ull, 268435456000000000ull}}, {{0ull, 0ull, 0ull, 536870912000000000ull}}, {{0ull, 0ull, 0ull, 1073741824000000000ull}}, {{0ull, 0ull, 0ull, 214748364800000000ull}}, {{0ull, 0ull, 0ull, 429496729600000000ull}}, {{0ull, 0ull, 0ull, 858993459200000000ull}}, {{0ull, 0ull, 0ull, 171798691840000000ull}}, {{0ull, 0ull, 0ull, 343597383680000000ull}}, {{0ull, 0ull, 0ull, 687194767360000000ull}}, {{0ull, 0ull, 0ull, 137438953472000000ull}}, {{0ull, 0ull, 0ull, 274877906944000000ull}}, {{0ull, 0ull, 0ull, 549755813888000000ull}}, {{0ull, 0ull, 0ull, 1099511627776000000ull}}, {{0ull, 0ull, 0ull, 219902325555200000ull}}, {{0ull, 0ull, 0ull, 439804651110400000ull}}, {{0ull, 0ull, 0ull, 879609302220800000ull}}, {{0ull, 0ull, 0ull, 175921860444160000ull}}, {{0ull, 0ull, 0ull, 351843720888320000ull}}, {{0ull, 0ull, 0ull, 703687441776640000ull}}, {{0ull, 0ull, 0ull, 140737488355328000ull}}, {{0ull, 0ull, 0ull, 281474976710656000ull}}, {{0ull, 0ull, 0ull, 562949953421312000ull}}, {{0ull, 0ull, 0ull, 1125899906842624000ull}}, {{0ull, 0ull, 0ull, 225179981368524800ull}}, {{0ull, 0ull, 0ull, 450359962737049600ull}}, {{0ull, 0ull, 0ull, 900719925474099200ull}}, {{0ull, 0ull, 0ull, 180143985094819840ull}}, {{0ull, 0ull, 0ull, 360287970189639680ull}}, {{0ull, 0ull, 0ull, 720575940379279360ull}}, {{0ull, 0ull, 0ull, 144115188075855872ull}}, {{0ull, 0ull, 0ull, 288230376151711744ull}}, {{0ull, 0ull, 0ull, 576460752303423488ull}}, {{0ull, 0ull, 0ull, 1152921504606846976ull}}, {{3689348814741910324ull, 3689348814741910323ull, 3689348814741910323ull, 230584300921369395ull}}, {{7378697629483820647ull, 7378697629483820646ull, 7378697629483820646ull, 461168601842738790ull}}, {{14757395258967641293ull, 14757395258967641292ull, 14757395258967641292ull, 922337203685477580ull}}, {{17708874310761169552ull, 10330176681277348904ull, 2951479051793528258ull, 184467440737095516ull}}, {{16971004547812787487ull, 2213609288845146193ull, 5902958103587056517ull, 368934881474191032ull}}, {{15495265021916023358ull, 4427218577690292387ull, 11805916207174113034ull, 737869762948382064ull}}, {{3099053004383204672ull, 11953490159763789447ull, 17118578500402463899ull, 147573952589676412ull}}, {{6198106008766409343ull, 5460236245818027278ull, 15790412927095376183ull, 295147905179352825ull}}, {{12396212017532818686ull, 10920472491636054556ull, 13134081780481200750ull, 590295810358705651ull}}, {{6345679961356085756ull, 3394200909562557497ull, 7821419487252849885ull, 1180591620717411303ull}}, {{1269135992271217152ull, 11746886626138242469ull, 12632330341676300946ull, 236118324143482260ull}}, {{2538271984542434303ull, 5047029178566933322ull, 6817916609643050277ull, 472236648286964521ull}}, {{5076543969084868605ull, 10094058357133866644ull, 13635833219286100554ull, 944473296573929042ull}}, {{1015308793816973721ull, 5708160486168683652ull, 10105864273341040757ull, 188894659314785808ull}}, {{2030617587633947442ull, 11416320972337367304ull, 1764984472972529898ull, 377789318629571617ull}}, {{4061235175267894884ull, 4385897870965182992ull, 3529968945945059797ull, 755578637259143234ull}}, {{11880293479279309947ull, 4566528388934946921ull, 15463389048156653252ull, 151115727451828646ull}}, {{5313842884849068277ull, 9133056777869893843ull, 12480034022603754888ull, 302231454903657293ull}}, {{10627685769698136554ull, 18266113555739787686ull, 6513323971497958160ull, 604462909807314587ull}}, {{2808627465686721491ull, 18085483037770023757ull, 13026647942995916321ull, 1208925819614629174ull}}, {{7940423122621164945ull, 3617096607554004751ull, 17362724847566824557ull, 241785163922925834ull}}, {{15880846245242329890ull, 7234193215108009502ull, 16278705621424097498ull, 483570327845851669ull}}, {{13314948416775108163ull, 14468386430216019005ull, 14110667169138643380ull, 967140655691703339ull}}, {{17420384942322662926ull, 17651072545010845093ull, 17579528692795369968ull, 193428131138340667ull}}, {{16394025810935774235ull, 16855401016312138571ull, 16712313311881188321ull, 386856262276681335ull}}, {{14341307548161996854ull, 15264057958914725527ull, 14977882550052825027ull, 773712524553362671ull}}, {{2868261509632399371ull, 14120858036008676075ull, 6684925324752475328ull, 154742504910672534ull}}, {{5736523019264798742ull, 9794971998307800534ull, 13369850649504950657ull, 309485009821345068ull}}, {{11473046038529597483ull, 1143199922906049452ull, 8292957225300349699ull, 618970019642690137ull}}, {{4499348003349643349ull, 2286399845812098905ull, 16585914450600699398ull, 1237940039285380274ull}}, {{8278567230153749317ull, 7835977598646240427ull, 18074578149087781172ull, 247588007857076054ull}}, {{16557134460307498633ull, 15671955197292480854ull, 17702412224466010728ull, 495176015714152109ull}}, {{14667524846905445649ull, 12897166320875410093ull, 16958080375222469841ull, 990352031428304219ull}}, {{14001551413606820100ull, 2579433264175082018ull, 18149011334012135261ull, 198070406285660843ull}}, {{9556358753504088583ull, 5158866528350164037ull, 17851278594314718906ull, 396140812571321687ull}}, {{665973433298625550ull, 10317733056700328075ull, 17255813114919886196ull, 792281625142643375ull}}, {{3822543501401635434ull, 5752895426081975938ull, 3451162622983977239ull, 158456325028528675ull}}, {{7645087002803270867ull, 11505790852163951876ull, 6902325245967954478ull, 316912650057057350ull}}, {{15290174005606541733ull, 4564837630618352136ull, 13804650491935908957ull, 633825300114114700ull}}, {{12133603937503531849ull, 9129675261236704273ull, 9162556910162266298ull, 1267650600228229401ull}}, {{9805418416984527017ull, 16583330311214982147ull, 5521860196774363582ull, 253530120045645880ull}}, {{1164092760259502417ull, 14719916548720412679ull, 11043720393548727165ull, 507060240091291760ull}}, {{2328185520519004833ull, 10993089023731273742ull, 3640696713387902715ull, 1014120480182583521ull}}, {{11533683548329531937ull, 5887966619488165071ull, 4417488157419490866ull, 202824096036516704ull}}, {{4620623022949512257ull, 11775933238976330143ull, 8834976314838981732ull, 405648192073033408ull}}, {{9241246045899024513ull, 5105122404243108670ull, 17669952629677963465ull, 811296384146066816ull}}, {{5537598023921715226ull, 4710373295590532057ull, 7223339340677503016ull, 162259276829213363ull}}, {{11075196047843430452ull, 9420746591181064114ull, 14446678681355006032ull, 324518553658426726ull}}, {{3703648021977309287ull, 394749108652576613ull, 10446613289000460449ull, 649037107316853453ull}}, {{740729604395461858ull, 7457647451214335969ull, 13157369102025823059ull, 129807421463370690ull}}, {{1481459208790923715ull, 14915294902428671938ull, 7867994130342094502ull, 259614842926741381ull}}, {{2962918417581847430ull, 11383845731147792260ull, 15735988260684189005ull, 519229685853482762ull}}, {{5925836835163694859ull, 4320947388586032904ull, 13025232447658826395ull, 1038459371706965525ull}}, {{15942562626000380265ull, 864189477717206580ull, 2605046489531765279ull, 207691874341393105ull}}, {{13438381178291208914ull, 1728378955434413161ull, 5210092979063530558ull, 415383748682786210ull}}, {{8430018282872866211ull, 3456757910868826323ull, 10420185958127061116ull, 830767497365572420ull}}, {{16443398915542214535ull, 4380700396915675587ull, 2084037191625412223ull, 166153499473114484ull}}, {{14440053757374877454ull, 8761400793831351175ull, 4168074383250824446ull, 332306998946228968ull}}, {{10433363441040203292ull, 17522801587662702351ull, 8336148766501648892ull, 664613997892457936ull}}, {{16844067947175681952ull, 14572606761758271439ull, 5356578568042240101ull, 132922799578491587ull}}, {{15241391820641812287ull, 10698469449806991263ull, 10713157136084480203ull, 265845599156983174ull}}, {{12036039567574072957ull, 2950194825904430911ull, 2979570198459408791ull, 531691198313966349ull}}, {{5625335061438594297ull, 5900389651808861823ull, 5959140396918817582ull, 1063382396627932698ull}}, {{12193113456513449829ull, 1180077930361772364ull, 12259874523609494486ull, 212676479325586539ull}}, {{5939482839317348042ull, 2360155860723544729ull, 6073004973509437356ull, 425352958651173079ull}}, {{11878965678634696084ull, 4720311721447089458ull, 12146009947018874712ull, 850705917302346158ull}}, {{13443839579952670187ull, 944062344289417891ull, 13497248433629505912ull, 170141183460469231ull}}, {{8440935086195788757ull, 1888124688578835783ull, 8547752793549460208ull, 340282366920938463ull}}, {{16881870172391577514ull, 3776249377157671566ull, 17095505587098920416ull, 680564733841876926ull}}, {{14444420478704046473ull, 8133947504915354959ull, 7108449932161694406ull, 136112946768375385ull}}, {{10442096883698541329ull, 16267895009830709919ull, 14216899864323388812ull, 272225893536750770ull}}, {{2437449693687531042ull, 14089045945951868223ull, 9987055654937226009ull, 544451787073501541ull}}, {{4874899387375062083ull, 9731347818194184830ull, 1527367236164900403ull, 1088903574147003083ull}}, {{4664328692216922740ull, 5635618378380747289ull, 11373519891458711050ull, 217780714829400616ull}}, {{9328657384433845480ull, 11271236756761494578ull, 4300295709207870484ull, 435561429658801233ull}}, {{210570695158139343ull, 4095729439813437541ull, 8600591418415740969ull, 871122859317602466ull}}, {{3731462953773538192ull, 819145887962687508ull, 5409467098425058517ull, 174224571863520493ull}}, {{7462925907547076384ull, 1638291775925375016ull, 10818934196850117034ull, 348449143727040986ull}}, {{14925851815094152767ull, 3276583551850750032ull, 3191124319990682452ull, 696898287454081973ull}}, {{10363867992502651200ull, 655316710370150006ull, 11706271308223867460ull, 139379657490816394ull}}, {{2280991911295750784ull, 1310633420740300013ull, 4965798542738183304ull, 278759314981632789ull}}, {{4561983822591501568ull, 2621266841480600026ull, 9931597085476366608ull, 557518629963265578ull}}, {{9123967645183003135ull, 5242533682961200052ull, 1416450097243181600ull, 1115037259926531157ull}}, {{16582188788004241920ull, 8427204366076060656ull, 7661987648932456966ull, 223007451985306231ull}}, {{14717633502298932224ull, 16854408732152121313ull, 15323975297864913932ull, 446014903970612462ull}}, {{10988522930888312831ull, 15262073390594691011ull, 12201206522020276249ull, 892029807941224925ull}}, {{2197704586177662567ull, 17809809937086579495ull, 2440241304404055249ull, 178405961588244985ull}}, {{4395409172355325133ull, 17172875800463607374ull, 4880482608808110499ull, 356811923176489970ull}}, {{8790818344710650265ull, 15899007527217663132ull, 9760965217616220999ull, 713623846352979940ull}}, {{5447512483684040377ull, 17937196764411173919ull, 1952193043523244199ull, 142724769270595988ull}}, {{10895024967368080753ull, 17427649455112796222ull, 3904386087046488399ull, 285449538541191976ull}}, {{3343305861026609889ull, 16408554836516040829ull, 7808772174092976799ull, 570899077082383952ull}}, {{6686611722053219777ull, 14370365599322530042ull, 15617544348185953599ull, 1141798154164767904ull}}, {{1337322344410643956ull, 13942119564090236978ull, 17880904128604832012ull, 228359630832953580ull}}, {{2674644688821287911ull, 9437495054470922340ull, 17315064183500112409ull, 456719261665907161ull}}, {{5349289377642575822ull, 428246035232293064ull, 16183384293290673203ull, 913438523331814323ull}}, {{1069857875528515165ull, 3774998021788368936ull, 14304723302883865610ull, 182687704666362864ull}}, {{2139715751057030329ull, 7549996043576737872ull, 10162702532058179604ull, 365375409332725729ull}}, {{4279431502114060657ull, 15099992087153475744ull, 1878660990406807592ull, 730750818665451459ull}}, {{855886300422812132ull, 6709347232172605472ull, 15133127457049002811ull, 146150163733090291ull}}, {{1711772600845624263ull, 13418694464345210944ull, 11819510840388454006ull, 292300327466180583ull}}, {{3423545201691248526ull, 8390644854980870272ull, 5192277607067356397ull, 584600654932361167ull}}, {{6847090403382497052ull, 16781289709961740544ull, 10384555214134712794ull, 1169201309864722334ull}}, {{8748115710160320057ull, 14424304386218079078ull, 16834306301794583851ull, 233840261972944466ull}}, {{17496231420320640114ull, 10401864698726606540ull, 15221868529879616087ull, 467680523945888933ull}}, {{16545718766931728611ull, 2356985323743661465ull, 11996992986049680559ull, 935361047891777867ull}}, {{6998492568128256046ull, 4160745879490642616ull, 9778096226693756758ull, 187072209578355573ull}}, {{13996985136256512091ull, 8321491758981285232ull, 1109448379677961900ull, 374144419156711147ull}}, {{9547226198803472566ull, 16642983517962570465ull, 2218896759355923800ull, 748288838313422294ull}}, {{16666840498728335806ull, 18085991962560155385ull, 15201174610838826052ull, 149657767662684458ull}}, {{14886936923747119996ull, 17725239851410759155ull, 11955605147968100489ull, 299315535325368917ull}}, {{11327129773784688376ull, 17003735629111966695ull, 5464466222226649363ull, 598631070650737835ull}}, {{4207515473859825135ull, 15560727184514381775ull, 10928932444453298727ull, 1197262141301475670ull}}, {{8220200724255785674ull, 10490843066386697001ull, 2185786488890659745ull, 239452428260295134ull}}, {{16440401448511571347ull, 2534942059063842386ull, 4371572977781319491ull, 478904856520590268ull}}, {{14434058823313591078ull, 5069884118127684773ull, 8743145955562638982ull, 957809713041180536ull}}, {{6576160579404628539ull, 12082023267851267924ull, 5437978005854438119ull, 191561942608236107ull}}, {{13152321158809257078ull, 5717302461992984232ull, 10875956011708876239ull, 383123885216472214ull}}, {{7857898243908962539ull, 11434604923985968465ull, 3305167949708200862ull, 766247770432944429ull}}, {{5260928463523702831ull, 5976269799539104016ull, 15418428848909281465ull, 153249554086588885ull}}, {{10521856927047405662ull, 11952539599078208032ull, 12390113624109011314ull, 306499108173177771ull}}, {{2596969780385259708ull, 5458335124446864449ull, 6333483174508471013ull, 612998216346355543ull}}, {{5193939560770519416ull, 10916670248893728898ull, 12666966349016942026ull, 1225996432692711086ull}}, {{1038787912154103884ull, 9562031679262566426ull, 6222742084545298728ull, 245199286538542217ull}}, {{2077575824308207767ull, 677319284815581236ull, 12445484169090597457ull, 490398573077084434ull}}, {{4155151648616415533ull, 1354638569631162472ull, 6444224264471643298ull, 980797146154168869ull}}, {{15588425588690924400ull, 7649625343410053140ull, 16046240111861969952ull, 196159429230833773ull}}, {{12730107103672297183ull, 15299250686820106281ull, 13645736150014388288ull, 392318858461667547ull}}, {{7013470133635042750ull, 12151757299930660947ull, 8844728226319224961ull, 784637716923335095ull}}, {{12470740470952739520ull, 6119700274728042512ull, 1768945645263844992ull, 156927543384667019ull}}, {{6494736868195927423ull, 12239400549456085025ull, 3537891290527689984ull, 313855086769334038ull}}, {{12989473736391854846ull, 6032057025202618434ull, 7075782581055379969ull, 627710173538668076ull}}, {{7532203399074158076ull, 12064114050405236869ull, 14151565162110759938ull, 1255420347077336152ull}}, {{16263835938782472908ull, 2412822810081047373ull, 10209010661905972634ull, 251084069415467230ull}}, {{14080927803855394200ull, 4825645620162094747ull, 1971277250102393652ull, 502168138830934461ull}}, {{9715111534001236784ull, 9651291240324189495ull, 3942554500204787304ull, 1004336277661868922ull}}, {{5632371121542157680ull, 5619607062806748222ull, 8167208529524778107ull, 200867255532373784ull}}, {{11264742243084315360ull, 11239214125613496444ull, 16334417059049556214ull, 401734511064747568ull}}, {{4082740412459079104ull, 4031684177517441273ull, 14222090044389560813ull, 803469022129495137ull}}, {{11884594526717546791ull, 806336835503488254ull, 10223115638361732809ull, 160693804425899027ull}}, {{5322444979725541965ull, 1612673671006976509ull, 1999487203013914002ull, 321387608851798055ull}}, {{10644889959451083930ull, 3225347342013953018ull, 3998974406027828004ull, 642775217703596110ull}}, {{9507675621374037433ull, 15402464727370431896ull, 799794881205565600ull, 128555043540719222ull}}, {{568607169038523249ull, 12358185381031312177ull, 1599589762411131201ull, 257110087081438444ull}}, {{1137214338077046498ull, 6269626688353072738ull, 3199179524822262403ull, 514220174162876888ull}}, {{2274428676154092995ull, 12539253376706145476ull, 6398359049644524806ull, 1028440348325753776ull}}, {{11522932179456549569ull, 9886548304825049741ull, 4969020624670815284ull, 205688069665150755ull}}, {{4599120285203547521ull, 1326352535940547867ull, 9938041249341630569ull, 411376139330301510ull}}, {{9198240570407095042ull, 2652705071881095734ull, 1429338424973709522ull, 822752278660603021ull}}, {{9218345743565239655ull, 11598587458601950116ull, 3975216499736652227ull, 164550455732120604ull}}, {{18436691487130479310ull, 4750430843494348616ull, 7950432999473304455ull, 329100911464241208ull}}, {{18426638900551407003ull, 9500861686988697233ull, 15900865998946608910ull, 658201822928482416ull}}, {{18442723039077922694ull, 5589521152139649769ull, 6869522014531232105ull, 131640364585696483ull}}, {{18438702004446293771ull, 11179042304279299539ull, 13739044029062464210ull, 263280729171392966ull}}, {{18430659935183035926ull, 3911340534849047463ull, 9031343984415376805ull, 526561458342785933ull}}, {{18414575796656520236ull, 7822681069698094927ull, 18062687968830753610ull, 1053122916685571866ull}}, {{14750961603557035017ull, 5253885028681529308ull, 7301886408508061045ull, 210624583337114373ull}}, {{11055179133404518418ull, 10507770057363058617ull, 14603772817016122090ull, 421249166674228746ull}}, {{3663614193099485219ull, 2568796041016565619ull, 10760801560322692565ull, 842498333348457493ull}}, {{8111420468103717691ull, 11581805652429044093ull, 13220206756290269482ull, 168499666669691498ull}}, {{16222840936207435381ull, 4716867231148536570ull, 7993669438870987349ull, 336999333339382997ull}}, {{13998937798705319145ull, 9433734462297073141ull, 15987338877741974698ull, 673998666678765994ull}}, {{13867834003966794799ull, 9265444521943235274ull, 17954863034516036232ull, 134799733335753198ull}}, {{9288923934224037981ull, 84144970176918933ull, 17462981995322520849ull, 269599466671506397ull}}, {{131103794738524346ull, 168289940353837867ull, 16479219916935490082ull, 539198933343012795ull}}, {{262207589477048692ull, 336579880707675734ull, 14511695760161428548ull, 1078397866686025591ull}}, {{11120487962121140708ull, 14824711235109176439ull, 6591687966774196032ull, 215679573337205118ull}}, {{3794231850532729800ull, 11202678396508801263ull, 13183375933548392065ull, 431359146674410236ull}}, {{7588463701065459600ull, 3958612719308050910ull, 7920007793387232515ull, 862718293348820473ull}}, {{12585739184438822890ull, 11859768988087341151ull, 12652048002903177472ull, 172543658669764094ull}}, {{6724734295168094164ull, 5272793902465130687ull, 6857351932096803329ull, 345087317339528189ull}}, {{13449468590336188327ull, 10545587804930261374ull, 13714703864193606658ull, 690174634679056378ull}}, {{2689893718067237666ull, 5798466375727962598ull, 13810987217064452301ull, 138034926935811275ull}}, {{5379787436134475331ull, 11596932751455925196ull, 9175230360419352986ull, 276069853871622551ull}}, {{10759574872268950662ull, 4747121429202298776ull, 18350460720838705973ull, 552139707743245102ull}}, {{3072405670828349707ull, 9494242858404597553ull, 18254177367967860330ull, 1104279415486490205ull}}, {{11682527578391400911ull, 1898848571680919510ull, 3650835473593572066ull, 220855883097298041ull}}, {{4918311083073250206ull, 3797697143361839021ull, 7301670947187144132ull, 441711766194596082ull}}, {{9836622166146500412ull, 7595394286723678042ull, 14603341894374288264ull, 883423532389192164ull}}, {{1967324433229300083ull, 12587125301570466578ull, 17678063637842498945ull, 176684706477838432ull}}, {{3934648866458600165ull, 6727506529431381540ull, 16909383201975446275ull, 353369412955676865ull}}, {{7869297732917200330ull, 13455013058862763080ull, 15372022330241340934ull, 706738825911353731ull}}, {{1573859546583440066ull, 2691002611772552616ull, 6763753280790178510ull, 141347765182270746ull}}, {{3147719093166880132ull, 5382005223545105232ull, 13527506561580357020ull, 282695530364541492ull}}, {{6295438186333760264ull, 10764010447090210464ull, 8608269049451162424ull, 565391060729082985ull}}, {{12590876372667520527ull, 3081276820470869312ull, 17216538098902324849ull, 1130782121458165970ull}}, {{6207524089275414429ull, 15373650623061815155ull, 3443307619780464969ull, 226156424291633194ull}}, {{12415048178550828857ull, 12300557172414078694ull, 6886615239560929939ull, 452312848583266388ull}}, {{6383352283392106098ull, 6154370271118605773ull, 13773230479121859879ull, 904625697166532776ull}}, {{12344716900904152190ull, 1230874054223721154ull, 6443994910566282299ull, 180925139433306555ull}}, {{6242689728098752763ull, 2461748108447442309ull, 12887989821132564598ull, 361850278866613110ull}}, {{12485379456197505525ull, 4923496216894884618ull, 7329235568555577580ull, 723700557733226221ull}}, {{17254471150207142398ull, 4674048058120887246ull, 5155195928453025839ull, 144740111546645244ull}}, {{16062198226704733180ull, 9348096116241774493ull, 10310391856906051678ull, 289480223093290488ull}}, {{13677652379699914743ull, 249448158773997371ull, 2174039640102551741ull, 578960446186580977ull}}, {{8908560685690277870ull, 498896317547994743ull, 4348079280205103482ull, 1157920892373161954ull}}, {{16539107396105696867ull, 3789128078251509271ull, 15627011115008661989ull, 231584178474632390ull}}, {{14631470718501842118ull, 7578256156503018543ull, 12807278156307772362ull, 463168356949264781ull}}, {{10816197363294132620ull, 15156512313006037087ull, 7167812238905993108ull, 926336713898529563ull}}, {{13231285916884557494ull, 6720651277343117740ull, 12501608892006929591ull, 185267342779705912ull}}, {{8015827760059563371ull, 13441302554686235481ull, 6556473710304307566ull, 370534685559411825ull}}, {{16031655520119126742ull, 8435861035662919346ull, 13112947420608615133ull, 741069371118823650ull}}, {{17963726362991466642ull, 12755218651358314838ull, 2622589484121723026ull, 148213874223764730ull}}, {{17480708652273381667ull, 7063693229007078061ull, 5245178968243446053ull, 296427748447529460ull}}, {{16514673230837211717ull, 14127386458014156123ull, 10490357936486892106ull, 592855496895058920ull}}, {{14582602387964871818ull, 9808028842318760631ull, 2533971799264232597ull, 1185710993790117841ull}}, {{17673915736560615657ull, 13029652212689483095ull, 4196143174594756842ull, 237142198758023568ull}}, {{16901087399411679697ull, 7612560351669414575ull, 8392286349189513685ull, 474284397516047136ull}}, {{15355430725113807777ull, 15225120703338829151ull, 16784572698379027370ull, 948568795032094272ull}}, {{14139132589248492525ull, 10423721770151586476ull, 10735612169159626120ull, 189713759006418854ull}}, {{9831521104787433434ull, 2400699466593621337ull, 3024480264609700625ull, 379427518012837709ull}}, {{1216298135865315252ull, 4801398933187242675ull, 6048960529219401250ull, 758855036025675418ull}}, {{11311306071398794020ull, 12028326230863179504ull, 12277838550069611219ull, 151771007205135083ull}}, {{4175868069088036424ull, 5609908388016807393ull, 6108933026429670823ull, 303542014410270167ull}}, {{8351736138176072848ull, 11219816776033614786ull, 12217866052859341646ull, 607084028820540334ull}}, {{16703472276352145696ull, 3992889478357677956ull, 5988988032009131677ull, 1214168057641080669ull}}, {{10719392084754249786ull, 4487926710413445914ull, 15955192865369467628ull, 242833611528216133ull}}, {{2992040095798947956ull, 8975853420826891829ull, 13463641657029383640ull, 485667223056432267ull}}, {{5984080191597895911ull, 17951706841653783658ull, 8480539240349215664ull, 971334446112864535ull}}, {{8575513667803399829ull, 18347736627298398024ull, 1696107848069843132ull, 194266889222572907ull}}, {{17151027335606799657ull, 18248729180887244432ull, 3392215696139686265ull, 388533778445145814ull}}, {{15855310597504047698ull, 18050714288064937249ull, 6784431392279372531ull, 777067556890291628ull}}, {{14239108563726540510ull, 18367538116580628742ull, 12424932722681605475ull, 155413511378058325ull}}, {{10031473053743529403ull, 18288332159451705869ull, 6403121371653659335ull, 310827022756116651ull}}, {{1616202033777507189ull, 18129920245193860123ull, 12806242743307318671ull, 621654045512233302ull}}, {{3232404067555014378ull, 17813096416678168630ull, 7165741412905085727ull, 1243308091024466605ull}}, {{8025178442994823522ull, 10941316912819454372ull, 1433148282581017145ull, 248661618204893321ull}}, {{16050356885989647044ull, 3435889751929357128ull, 2866296565162034291ull, 497323236409786642ull}}, {{13653969698269742472ull, 6871779503858714257ull, 5732593130324068582ull, 994646472819573284ull}}, {{13798840383879679464ull, 5063704715513653174ull, 15903913885032455009ull, 198929294563914656ull}}, {{9150936694049807312ull, 10127409431027306349ull, 13361083696355358402ull, 397858589127829313ull}}, {{18301873388099614624ull, 1808074788345061082ull, 8275423319001165189ull, 795717178255658627ull}}, {{14728421121845653895ull, 4050963772410922539ull, 9033782293284053684ull, 159143435651131725ull}}, {{11010098169981756173ull, 8101927544821845079ull, 18067564586568107368ull, 318286871302263450ull}}, {{3573452266253960730ull, 16203855089643690159ull, 17688385099426663120ull, 636573742604526901ull}}, {{7146904532507921459ull, 13960966105577828702ull, 16930026125143774625ull, 1273147485209053803ull}}, {{1429380906501584292ull, 13860239665341296710ull, 14454051669254485894ull, 254629497041810760ull}}, {{2858761813003168584ull, 9273735256973041804ull, 10461359264799420173ull, 509258994083621521ull}}, {{5717523626006337167ull, 100726440236531992ull, 2475974455889288731ull, 1018517988167243043ull}}, {{4832853539943177757ull, 14777540547014947691ull, 11563241335403588715ull, 203703597633448608ull}}, {{9665707079886355514ull, 11108337020320343766ull, 4679738597097625815ull, 407407195266897217ull}}, {{884670086063159411ull, 3769929966931135917ull, 9359477194195251631ull, 814814390533794434ull}}, {{7555631646696452529ull, 753985993386227183ull, 16629290697806691619ull, 162962878106758886ull}}, {{15111263293392905057ull, 1507971986772454366ull, 14811837321903831622ull, 325925756213517773ull}}, {{11775782513076258498ull, 3015943973544908733ull, 11176930570098111628ull, 651851512427035547ull}}, {{13423202946840982670ull, 603188794708981746ull, 9614083743503442972ull, 130370302485407109ull}}, {{8399661819972413723ull, 1206377589417963493ull, 781423413297334328ull, 260740604970814219ull}}, {{16799323639944827445ull, 2412755178835926986ull, 1562846826594668656ull, 521481209941628438ull}}, {{15151903206180103274ull, 4825510357671853973ull, 3125693653189337312ull, 1042962419883256876ull}}, {{6719729455977930978ull, 12033148515760101764ull, 4314487545379777785ull, 208592483976651375ull}}, {{13439458911955861956ull, 5619552957810651912ull, 8628975090759555571ull, 417184967953302750ull}}, {{8432173750202172296ull, 11239105915621303825ull, 17257950181519111142ull, 834369935906605500ull}}, {{9065132379524255106ull, 9626518812608081411ull, 3451590036303822228ull, 166873987181321100ull}}, {{18130264759048510211ull, 806293551506611206ull, 6903180072607644457ull, 333747974362642200ull}}, {{17813785444387468806ull, 1612587103013222413ull, 13806360145215288914ull, 667495948725284400ull}}, {{10941454718361314408ull, 15079912679570285775ull, 2761272029043057782ull, 133499189745056880ull}}, {{3436165363013077200ull, 11713081285431019935ull, 5522544058086115565ull, 266998379490113760ull}}, {{6872330726026154399ull, 4979418497152488254ull, 11045088116172231131ull, 533996758980227520ull}}, {{13744661452052308797ull, 9958836994304976508ull, 3643432158634910646ull, 1067993517960455041ull}}, {{2748932290410461760ull, 9370465028344815948ull, 4418035246468892452ull, 213598703592091008ull}}, {{5497864580820923519ull, 294185982980080280ull, 8836070492937784905ull, 427197407184182016ull}}, {{10995729161641847038ull, 588371965960160560ull, 17672140985875569810ull, 854394814368364032ull}}, {{9577843461812190054ull, 7496372022675852758ull, 10913125826658934608ull, 170878962873672806ull}}, {{708942849914828492ull, 14992744045351705517ull, 3379507579608317600ull, 341757925747345613ull}}, {{1417885699829656984ull, 11538744016993859418ull, 6759015159216635201ull, 683515851494691226ull}}, {{283577139965931397ull, 9686446432882592530ull, 5041151846585237363ull, 136703170298938245ull}}, {{567154279931862794ull, 926148792055633444ull, 10082303693170474727ull, 273406340597876490ull}}, {{1134308559863725587ull, 1852297584111266888ull, 1717863312631397838ull, 546812681195752981ull}}, {{2268617119727451174ull, 3704595168222533776ull, 3435726625262795676ull, 1093625362391505962ull}}, {{15211118682913131528ull, 11808965477870237724ull, 8065842954536379781ull, 218725072478301192ull}}, {{11975493292116711440ull, 5171186882030923833ull, 16131685909072759563ull, 437450144956602384ull}}, {{5504242510523871263ull, 10342373764061847667ull, 13816627744435967510ull, 874900289913204769ull}}, {{4790197316846684576ull, 16825870011780010826ull, 17520720807854834794ull, 174980057982640953ull}}, {{9580394633693369152ull, 15204995949850470036ull, 16594697542000117973ull, 349960115965281907ull}}, {{714045193677186687ull, 11963247825991388457ull, 14742651010290684331ull, 699920231930563815ull}}, {{11210855482961168307ull, 6081998379940188014ull, 2948530202058136866ull, 139984046386112763ull}}, {{3974966892212784998ull, 12163996759880376029ull, 5897060404116273732ull, 279968092772225526ull}}, {{7949933784425569996ull, 5881249446051200442ull, 11794120808232547465ull, 559936185544451052ull}}, {{15899867568851139992ull, 11762498892102400884ull, 5141497542755543314ull, 1119872371088902105ull}}, {{14248019957995958968ull, 17109895037388121469ull, 1028299508551108662ull, 223974474217780421ull}}, {{10049295842282366320ull, 15773046001066691323ull, 2056599017102217325ull, 447948948435560842ull}}, {{1651847610855181024ull, 13099347928423831031ull, 4113198034204434651ull, 895897896871121684ull}}, {{4019718336912946528ull, 2619869585684766206ull, 15580034865808528223ull, 179179579374224336ull}}, {{8039436673825893056ull, 5239739171369532412ull, 12713325657907504830ull, 358359158748448673ull}}, {{16078873347651786112ull, 10479478342739064824ull, 6979907242105458044ull, 716718317496897347ull}}, {{3215774669530357223ull, 5785244483289723288ull, 8774679077904912255ull, 143343663499379469ull}}, {{6431549339060714445ull, 11570488966579446576ull, 17549358155809824510ull, 286687326998758938ull}}, {{12863098678121428890ull, 4694233859449341536ull, 16651972237910097405ull, 573374653997517877ull}}, {{7279453282533306163ull, 9388467718898683073ull, 14857200402110643194ull, 1146749307995035755ull}}, {{8834588285990481879ull, 16635088802747377907ull, 2971440080422128638ull, 229349861599007151ull}}, {{17669176571980963758ull, 14823433531785204198ull, 5942880160844257277ull, 458699723198014302ull}}, {{16891609070252375900ull, 11200122989860856781ull, 11885760321688514555ull, 917399446396028604ull}}, {{3378321814050475180ull, 16997419856939812649ull, 17134547323305344203ull, 183479889279205720ull}}, {{6756643628100950360ull, 15548095640170073682ull, 15822350572901136791ull, 366959778558411441ull}}, {{13513287256201900720ull, 12649447206630595748ull, 13197957072092721967ull, 733919557116822883ull}}, {{13770703895466111114ull, 2529889441326119149ull, 13707637858644275363ull, 146783911423364576ull}}, {{9094663717222670612ull, 5059778882652238299ull, 8968531643578999110ull, 293567822846729153ull}}, {{18189327434445341223ull, 10119557765304476598ull, 17937063287157998220ull, 587135645693458306ull}}, {{17931910795181130829ull, 1792371456899401581ull, 17427382500606444825ull, 1174271291386916613ull}}, {{18343777418003867459ull, 11426520735605611285ull, 14553522944347019934ull, 234854258277383322ull}}, {{18240810762298183301ull, 4406297397501670955ull, 10660301814984488253ull, 469708516554766645ull}}, {{18034877450886814986ull, 8812594795003341911ull, 2873859556259424890ull, 939417033109533291ull}}, {{10985673119661183644ull, 5451867773742578705ull, 4264120725993795301ull, 187883406621906658ull}}, {{3524602165612815672ull, 10903735547485157411ull, 8528241451987590602ull, 375766813243813316ull}}, {{7049204331225631343ull, 3360727021260763206ull, 17056482903975181205ull, 751533626487626632ull}}, {{12477887310470857239ull, 8050843033735973287ull, 10789994210278856887ull, 150306725297525326ull}}, {{6509030547232162861ull, 16101686067471946575ull, 3133244346848162158ull, 300613450595050653ull}}, {{13018061094464325721ull, 13756628061234341534ull, 6266488693696324317ull, 601226901190101306ull}}, {{7589378115219099825ull, 9066512048759131453ull, 12532977387392648635ull, 1202453802380202612ull}}, {{1517875623043819965ull, 9192000039235646937ull, 9885293106962350373ull, 240490760476040522ull}}, {{3035751246087639930ull, 18384000078471293874ull, 1323842140215149130ull, 480981520952081045ull}}, {{6071502492175279860ull, 18321256083233036132ull, 2647684280430298261ull, 961963041904162090ull}}, {{12282346942660786942ull, 7353600031388517549ull, 529536856086059652ull, 192392608380832418ull}}, {{6117949811612022267ull, 14707200062777035099ull, 1059073712172119304ull, 384785216761664836ull}}, {{12235899623224044534ull, 10967656051844518582ull, 2118147424344238609ull, 769570433523329672ull}}, {{13515226368870539877ull, 5882880025110814039ull, 7802327114352668368ull, 153914086704665934ull}}, {{8583708664031528137ull, 11765760050221628079ull, 15604654228705336736ull, 307828173409331868ull}}, {{17167417328063056274ull, 5084776026733704542ull, 12762564383701121857ull, 615656346818663737ull}}, {{15888090582416560932ull, 10169552053467409085ull, 7078384693692692098ull, 1231312693637327475ull}}, {{14245664560709043156ull, 13101956854919212786ull, 1415676938738538419ull, 246262538727465495ull}}, {{10044585047708534696ull, 7757169636128873957ull, 2831353877477076839ull, 492525077454930990ull}}, {{1642426021707517776ull, 15514339272257747915ull, 5662707754954153678ull, 985050154909861980ull}}, {{11396531648567234525ull, 14170914298677280552ull, 1132541550990830735ull, 197010030981972396ull}}, {{4346319223424917434ull, 9895084523645009489ull, 2265083101981661471ull, 394020061963944792ull}}, {{8692638446849834867ull, 1343424973580467362ull, 4530166203963322943ull, 788040123927889584ull}}, {{16495922948337608267ull, 7647382624199914118ull, 15663428499760305881ull, 157608024785577916ull}}, {{14545101822965664917ull, 15294765248399828237ull, 12880112925811060146ull, 315216049571155833ull}}, {{10643459572221778217ull, 12142786423090104859ull, 7313481777912568677ull, 630432099142311667ull}}, {{2840175070734004818ull, 5838828772470658103ull, 14626963555825137355ull, 1260864198284623334ull}}, {{7946732643630621610ull, 15925161013461772913ull, 17682787970132668763ull, 252172839656924666ull}}, {{15893465287261243220ull, 13403577953213994210ull, 16918831866555785911ull, 504345679313849333ull}}, {{13340186500812934824ull, 8360411832718436805ull, 15390919659402020207ull, 1008691358627698667ull}}, {{17425432559130228258ull, 16429477625511328653ull, 10456881561364224687ull, 201738271725539733ull}}, {{16404121044550904899ull, 14412211177313105691ull, 2467019049018897759ull, 403476543451079467ull}}, {{14361498015392258182ull, 10377678280916659767ull, 4934038098037795519ull, 806953086902158934ull}}, {{2872299603078451637ull, 13143582100409062923ull, 15744202878575200396ull, 161390617380431786ull}}, {{5744599206156903273ull, 7840420127108574230ull, 13041661683440849177ull, 322781234760863573ull}}, {{11489198412313806546ull, 15680840254217148460ull, 7636579293172146738ull, 645562469521727147ull}}, {{2297839682462761310ull, 3136168050843429692ull, 8906013488118249994ull, 129112493904345429ull}}, {{4595679364925522619ull, 6272336101686859384ull, 17812026976236499988ull, 258224987808690858ull}}, {{9191358729851045237ull, 12544672203373718768ull, 17177309878763448360ull, 516449975617381717ull}}, {{18382717459702090473ull, 6642600333037885920ull, 15907875683817345105ull, 1032899951234763435ull}}, {{3676543491940418095ull, 1328520066607577184ull, 3181575136763469021ull, 206579990246952687ull}}, {{7353086983880836190ull, 2657040133215154368ull, 6363150273526938042ull, 413159980493905374ull}}, {{14706173967761672379ull, 5314080266430308736ull, 12726300547053876084ull, 826319960987810748ull}}, {{14009281237778065446ull, 8441513682769882393ull, 13613306553636506186ull, 165263992197562149ull}}, {{9571818401846579275ull, 16883027365539764787ull, 8779869033563460756ull, 330527984395124299ull}}, {{696892729983606933ull, 15319310657369977959ull, 17559738067126921513ull, 661055968790248598ull}}, {{139378545996721387ull, 6753210946215905915ull, 14579994057651115272ull, 132211193758049719ull}}, {{278757091993442774ull, 13506421892431811830ull, 10713244041592678928ull, 264422387516099439ull}}, {{557514183986885547ull, 8566099711154072044ull, 2979744009475806241ull, 528844775032198879ull}}, {{1115028367973771093ull, 17132199422308144088ull, 5959488018951612482ull, 1057689550064397758ull}}, {{11291052117820485189ull, 3426439884461628817ull, 12259944048016053466ull, 211537910012879551ull}}, {{4135360161931418761ull, 6852879768923257635ull, 6073144022322555316ull, 423075820025759103ull}}, {{8270720323862837521ull, 13705759537846515270ull, 12146288044645110632ull, 846151640051518206ull}}, {{12722190508998298474ull, 13809198351795034023ull, 6118606423670932449ull, 169230328010303641ull}}, {{6997636944287045332ull, 9171652629880516431ull, 12237212847341864899ull, 338460656020607282ull}}, {{13995273888574090663ull, 18343305259761032862ull, 6027681620974178182ull, 676921312041214565ull}}, {{17556450036682459426ull, 11047358681436027218ull, 1205536324194835636ull, 135384262408242913ull}}, {{16666155999655367235ull, 3647973289162502821ull, 2411072648389671273ull, 270768524816485826ull}}, {{14885567925601182854ull, 7295946578325005643ull, 4822145296779342546ull, 541537049632971652ull}}, {{11324391777492814091ull, 14591893156650011287ull, 9644290593558685092ull, 1083074099265943304ull}}, {{13332924799724293788ull, 6607727446071912580ull, 16686253377679378311ull, 216614819853188660ull}}, {{8219105525739035960ull, 13215454892143825161ull, 14925762681649205006ull, 433229639706377321ull}}, {{16438211051478071920ull, 7984165710578098706ull, 11404781289588858397ull, 866459279412754643ull}}, {{6976991025037524708ull, 1596833142115619741ull, 13349002702143502649ull, 173291855882550928ull}}, {{13953982050075049415ull, 3193666284231239482ull, 8251261330577453682ull, 346583711765101857ull}}, {{9461220026440547213ull, 6387332568462478965ull, 16502522661154907364ull, 693167423530203714ull}}, {{12960290449513840413ull, 12345512957918226762ull, 18057899791198622765ull, 138633484706040742ull}}, {{7473836825318129209ull, 6244281842126901909ull, 17669055508687693915ull, 277266969412081485ull}}, {{14947673650636258417ull, 12488563684253803818ull, 16891366943665836214ull, 554533938824162971ull}}, {{11448603227562965217ull, 6530383294798056021ull, 15335989813622120813ull, 1109067877648325943ull}}, {{9668418274996413690ull, 4995425473701521527ull, 14135244406950155132ull, 221813575529665188ull}}, {{890092476283275764ull, 9990850947403043055ull, 9823744740190758648ull, 443627151059330377ull}}, {{1780184952566551527ull, 1534957821096534494ull, 1200745406671965681ull, 887254302118660755ull}}, {{356036990513310306ull, 3996340378961217222ull, 240149081334393136ull, 177450860423732151ull}}, {{712073981026620611ull, 7992680757922434444ull, 480298162668786272ull, 354901720847464302ull}}, {{1424147962053241222ull, 15985361515844868888ull, 960596325337572544ull, 709803441694928604ull}}, {{3974178407152558568ull, 14265118747394704747ull, 14949514524035155801ull, 141960688338985720ull}}, {{7948356814305117135ull, 10083493421079857878ull, 11452284974360759987ull, 283921376677971441ull}}, {{15896713628610234270ull, 1720242768450164140ull, 4457825875011968359ull, 567842753355942883ull}}, {{13346683183510916924ull, 3440485536900328281ull, 8915651750023936718ull, 1135685506711885766ull}}, {{2669336636702183385ull, 15445492366347706949ull, 5472479164746697666ull, 227137101342377153ull}}, {{5338673273404366770ull, 12444240658985862282ull, 10944958329493395333ull, 454274202684754306ull}}, {{10677346546808733539ull, 6441737244262172948ull, 3443172585277239051ull, 908548405369508613ull}}, {{9514166938845567355ull, 16045742707820075882ull, 11756680961281178779ull, 181709681073901722ull}}, {{581589803981583093ull, 13644741341930600149ull, 5066617848852805943ull, 363419362147803445ull}}, {{1163179607963166185ull, 8842738610151648682ull, 10133235697705611887ull, 726838724295606890ull}}, {{14990031180560274530ull, 9147245351514150382ull, 2026647139541122377ull, 145367744859121378ull}}, {{11533318287410997444ull, 18294490703028300765ull, 4053294279082244754ull, 290735489718242756ull}}, {{4619892501112443271ull, 18142237332347049915ull, 8106588558164489509ull, 581470979436485512ull}}, {{9239785002224886542ull, 17837730590984548214ull, 16213177116328979019ull, 1162941958872971024ull}}, {{9226654629928797955ull, 14635592562422640612ull, 18000030682233437096ull, 232588391774594204ull}}, {{6565186148044294ull, 10824441051135729609ull, 17553317290757322577ull, 465176783549188409ull}}, {{13130372296088588ull, 3202138028561907602ull, 16659890507805093539ull, 930353567098376819ull}}, {{2626074459217718ull, 11708474049938112490ull, 18089373360528660000ull, 186070713419675363ull}}, {{5252148918435435ull, 4970204026166673364ull, 17732002647347768385ull, 372141426839350727ull}}, {{10504297836870870ull, 9940408052333346728ull, 17017261220985985154ull, 744282853678701455ull}}, {{7380798489051194821ull, 16745476869434310638ull, 3403452244197197030ull, 148856570735740291ull}}, {{14761596978102389641ull, 15044209665159069660ull, 6806904488394394061ull, 297713141471480582ull}}, {{11076449882495227666ull, 11641675256608587705ull, 13613808976788788123ull, 595426282942961164ull}}, {{3706155691280903715ull, 4836606439507623795ull, 8780873879868024631ull, 1190852565885922329ull}}, {{741231138256180743ull, 967321287901524759ull, 16513570034941246219ull, 238170513177184465ull}}, {{1482462276512361486ull, 1934642575803049518ull, 14580395996172940822ull, 476341026354368931ull}}, {{2964924553024722972ull, 3869285151606099036ull, 10714047918636330028ull, 952682052708737863ull}}, {{7971682540088765241ull, 4463205845063130130ull, 13210856027952996975ull, 190536410541747572ull}}, {{15943365080177530482ull, 8926411690126260260ull, 7974967982196442334ull, 381072821083495145ull}}, {{13439986086645509348ull, 17852823380252520521ull, 15949935964392884668ull, 762145642166990290ull}}, {{17445392476296743163ull, 14638611120276235073ull, 3189987192878576933ull, 152429128433398058ull}}, {{16444040878883934709ull, 10830478166842918531ull, 6379974385757153867ull, 304858256866796116ull}}, {{14441337684058317801ull, 3214212259976285447ull, 12759948771514307735ull, 609716513733592232ull}}, {{10435931294407083986ull, 6428424519952570895ull, 7073153469319063854ull, 1219433027467184465ull}}, {{16844581517849058090ull, 16043080162958155471ull, 1414630693863812770ull, 243886605493436893ull}}, {{15242418961988564564ull, 13639416252206759327ull, 2829261387727625541ull, 487773210986873786ull}}, {{12038093850267577512ull, 8832088430703967039ull, 5658522775455251083ull, 975546421973747572ull}}, {{17165014029021156796ull, 1766417686140793407ull, 8510402184574870863ull, 195109284394749514ull}}, {{15883283984332761975ull, 3532835372281586815ull, 17020804369149741726ull, 390218568789499028ull}}, {{13319823894955972333ull, 7065670744563173631ull, 15594864664589931836ull, 780437137578998057ull}}, {{17421360037958835760ull, 12481180593138365695ull, 10497670562401807013ull, 156087427515799611ull}}, {{16395976002208119903ull, 6515617112567179775ull, 2548597051094062411ull, 312174855031599223ull}}, {{14345207930706688190ull, 13031234225134359551ull, 5097194102188124822ull, 624349710063198446ull}}, {{10243671787703824763ull, 7615724376559167487ull, 10194388204376249645ull, 1248699420126396892ull}}, {{16806129616508406246ull, 8901842504795654143ull, 9417575270359070575ull, 249739884025279378ull}}, {{15165515159307260875ull, 17803685009591308287ull, 388406467008589534ull, 499479768050558757ull}}, {{11884286244904970134ull, 17160625945473064959ull, 776812934017179069ull, 998959536101117514ull}}, {{9755554878464814674ull, 14500171633320343961ull, 14912757845771077106ull, 199791907220223502ull}}, {{1064365683220077731ull, 10553599192931136307ull, 11378771617832602597ull, 399583814440447005ull}}, {{2128731366440155461ull, 2660454312152720998ull, 4310799161955653579ull, 799167628880894011ull}}, {{11493792717513762062ull, 532090862430544199ull, 4551508647133041039ull, 159833525776178802ull}}, {{4540841361317972508ull, 1064181724861088399ull, 9103017294266082078ull, 319667051552357604ull}}, {{9081682722635945015ull, 2128363449722176798ull, 18206034588532164156ull, 639334103104715208ull}}, {{18163365445271890030ull, 4256726899444353596ull, 17965325103354776696ull, 1278668206209430417ull}}, {{18390068348022019299ull, 11919391824114601688ull, 10971762650154775985ull, 255733641241886083ull}}, {{18333392622334486982ull, 5392039574519651761ull, 3496781226600000355ull, 511467282483772167ull}}, {{18220041170959422347ull, 10784079149039303523ull, 6993562453200000710ull, 1022934564967544334ull}}, {{11022705863675705116ull, 16914211088775501997ull, 16156107749607641434ull, 204586912993508866ull}}, {{3598667653641858616ull, 15381678103841452379ull, 13865471425505731253ull, 409173825987017733ull}}, {{7197335307283717231ull, 12316612133973353142ull, 9284198777301910891ull, 818347651974035467ull}}, {{1439467061456743447ull, 13531368871020401598ull, 9235537384944202824ull, 163669530394807093ull}}, {{2878934122913486893ull, 8615993668331251580ull, 24330696178854033ull, 327339060789614187ull}}, {{5757868245826973785ull, 17231987336662503160ull, 48661392357708066ull, 654678121579228374ull}}, {{1151573649165394757ull, 3446397467332500632ull, 14767127537439182906ull, 130935624315845674ull}}, {{2303147298330789514ull, 6892794934665001264ull, 11087511001168814196ull, 261871248631691349ull}}, {{4606294596661579028ull, 13785589869330002528ull, 3728277928628076776ull, 523742497263382699ull}}, {{9212589193323158056ull, 9124435664950453440ull, 7456555857256153553ull, 1047484994526765398ull}}, {{5531866653406541935ull, 5514235947732001011ull, 12559357615676961680ull, 209496998905353079ull}}, {{11063733306813083869ull, 11028471895464002022ull, 6671971157644371744ull, 418993997810706159ull}}, {{3680722539916616122ull, 3610199717218452429ull, 13343942315288743489ull, 837987995621412318ull}}, {{4425493322725233548ull, 8100737572927511132ull, 13736834907283479667ull, 167597599124282463ull}}, {{8850986645450467095ull, 16201475145855022264ull, 9026925740857407718ull, 335195198248564927ull}}, {{17701973290900934190ull, 13956206218000492912ull, 18053851481714815437ull, 670390396497129854ull}}, {{14608441102405917808ull, 6480590058342008905ull, 18368165555310604380ull, 134078079299425970ull}}, {{10770138131102284000ull, 12961180116684017811ull, 18289587036911657144ull, 268156158598851941ull}}, {{3093532188495016383ull, 7475616159658484007ull, 18132430000113762673ull, 536312317197703883ull}}, {{6187064376990032765ull, 14951232319316968014ull, 17818115926517973730ull, 1072624634395407767ull}}, {{4926761690139916877ull, 10368944093347214249ull, 10942320814787415392ull, 214524926879081553ull}}, {{9853523380279833753ull, 2291144112984876882ull, 3437897555865279169ull, 429049853758163107ull}}, {{1260302686850115889ull, 4582288225969753765ull, 6875795111730558338ull, 858099707516326214ull}}, {{7630758166853843825ull, 8295155274677771399ull, 16132554281313752960ull, 171619941503265242ull}}, {{15261516333707687649ull, 16590310549355542798ull, 13818364488917954304ull, 343239883006530485ull}}, {{12076288593705823681ull, 14733877025001533981ull, 9189984904126356993ull, 686479766013060971ull}}, {{2415257718741164737ull, 17704170663967948089ull, 5527345795567181721ull, 137295953202612194ull}}, {{4830515437482329473ull, 16961597254226344562ull, 11054691591134363443ull, 274591906405224388ull}}, {{9661030874964658945ull, 15476450434743137508ull, 3662639108559175271ull, 549183812810448777ull}}, {{875317676219766273ull, 12506156795776723401ull, 7325278217118350543ull, 1098367625620897554ull}}, {{11243109979469684225ull, 9879928988639165326ull, 16222450902391311401ull, 219673525124179510ull}}, {{4039475885229816833ull, 1313113903568779037ull, 13998157731073071187ull, 439347050248359021ull}}, {{8078951770459633665ull, 2626227807137558074ull, 9549571388436590758ull, 878694100496718043ull}}, {{1615790354091926733ull, 4214594376169421938ull, 12977960721913049121ull, 175738820099343608ull}}, {{3231580708183853466ull, 8429188752338843876ull, 7509177370116546626ull, 351477640198687217ull}}, {{6463161416367706932ull, 16858377504677687752ull, 15018354740233093252ull, 702955280397374434ull}}, {{12360678727499272356ull, 7061024315677447873ull, 17761066207014259943ull, 140591056079474886ull}}, {{6274613381288993096ull, 14122048631354895747ull, 17075388340318968270ull, 281182112158949773ull}}, {{12549226762577986192ull, 9797353189000239878ull, 15704032606928384925ull, 562364224317899547ull}}, {{6651709451446420767ull, 1147962304290928141ull, 12961321140147218235ull, 1124728448635799095ull}}, {{5019690705031194477ull, 229592460858185628ull, 2592264228029443647ull, 224945689727159819ull}}, {{10039381410062388954ull, 459184921716371256ull, 5184528456058887294ull, 449891379454319638ull}}, {{1632018746415226291ull, 918369843432742513ull, 10369056912117774588ull, 899782758908639276ull}}, {{7705101378766865905ull, 14941069227654189795ull, 5763160197165465240ull, 179956551781727855ull}}, {{15410202757533731809ull, 11435394381598827974ull, 11526320394330930481ull, 359913103563455710ull}}, {{12373661441357912002ull, 4424044689488104333ull, 4605896714952309347ull, 719826207126911421ull}}, {{6164081103013492724ull, 11952855382123351836ull, 4610528157732372192ull, 143965241425382284ull}}, {{12328162206026985448ull, 5458966690537152056ull, 9221056315464744385ull, 287930482850764568ull}}, {{6209580338344419279ull, 10917933381074304113ull, 18442112630929488770ull, 575860965701529136ull}}, {{12419160676688838557ull, 3389122688439056610ull, 18437481188149425925ull, 1151721931403058273ull}}, {{13551878579563498681ull, 11745870981913542291ull, 14755542681855616154ull, 230344386280611654ull}}, {{8657013085417445746ull, 5044997890117532967ull, 11064341290001680693ull, 460688772561223309ull}}, {{17314026170834891492ull, 10089995780235065934ull, 3681938506293809770ull, 921377545122446619ull}}, {{14530851678392709268ull, 16775394415014654479ull, 15493782960226403246ull, 184275509024489323ull}}, {{10614959283075866920ull, 15104044756319757343ull, 12540821846743254877ull, 368551018048978647ull}}, {{2783174492442182224ull, 11761345438929963071ull, 6634899619776958139ull, 737102036097957295ull}}, {{556634898488436445ull, 17109664346753633907ull, 1326979923955391627ull, 147420407219591459ull}}, {{1113269796976872890ull, 15772584619797716198ull, 2653959847910783255ull, 294840814439182918ull}}, {{2226539593953745780ull, 13098425165885880780ull, 5307919695821566511ull, 589681628878365836ull}}, {{4453079187907491559ull, 7750106258062209944ull, 10615839391643133023ull, 1179363257756731672ull}}, {{15648011096549139605ull, 1550021251612441988ull, 9501865507812447251ull, 235872651551346334ull}}, {{12849278119388727593ull, 3100042503224883977ull, 556986941915342886ull, 471745303102692669ull}}, {{7251812165067903570ull, 6200085006449767955ull, 1113973883830685772ull, 943490606205385338ull}}, {{1450362433013580714ull, 1240017001289953591ull, 11290841220991868124ull, 188698121241077067ull}}, {{2900724866027161428ull, 2480034002579907182ull, 4134938368274184632ull, 377396242482154135ull}}, {{5801449732054322856ull, 4960068005159814364ull, 8269876736548369264ull, 754792484964308270ull}}, {{12228336390636595541ull, 15749408859999604165ull, 1653975347309673852ull, 150958496992861654ull}}, {{6009928707563639466ull, 13052073646289656715ull, 3307950694619347705ull, 301916993985723308ull}}, {{12019857415127278931ull, 7657403218869761814ull, 6615901389238695411ull, 603833987971446616ull}}, {{5592970756545006246ull, 15314806437739523629ull, 13231802778477390822ull, 1207667975942893232ull}}, {{12186640595534732219ull, 17820356546515546018ull, 10025058185179298810ull, 241533595188578646ull}}, {{5926537117359912822ull, 17193969019321540421ull, 1603372296649046005ull, 483067190377157293ull}}, {{11853074234719825644ull, 15941193964933529226ull, 3206744593298092011ull, 966134380754314586ull}}, {{13438661291169696099ull, 10566936422470526491ull, 4330697733401528725ull, 193226876150862917ull}}, {{8430578508629840581ull, 2687128771231501367ull, 8661395466803057451ull, 386453752301725834ull}}, {{16861157017259681161ull, 5374257542463002734ull, 17322790933606114902ull, 772907504603451668ull}}, {{18129626662419577525ull, 1074851508492600546ull, 14532604630946953950ull, 154581500920690333ull}}, {{17812509251129603434ull, 2149703016985201093ull, 10618465188184356284ull, 309163001841380667ull}}, {{17178274428549655252ull, 4299406033970402187ull, 2790186302659160952ull, 618326003682761335ull}}, {{15909804783389758888ull, 8598812067940804375ull, 5580372605318321904ull, 1236652007365522670ull}}, {{17939356215645593071ull, 16477157672555802167ull, 1116074521063664380ull, 247330401473104534ull}}, {{17431968357581634525ull, 14507571271402052719ull, 2232149042127328761ull, 494660802946209068ull}}, {{16417192641453717434ull, 10568398469094553823ull, 4464298084254657523ull, 989321605892418136ull}}, {{10662136157774564134ull, 16871074952786552057ull, 4582208431592841827ull, 197864321178483627ull}}, {{2877528241839576651ull, 15295405831863552499ull, 9164416863185683655ull, 395728642356967254ull}}, {{5755056483679153301ull, 12144067590017553382ull, 18328833726371367311ull, 791457284713934508ull}}, {{4840360111477740984ull, 17186208776971151969ull, 14733813189500004431ull, 158291456942786901ull}}, {{9680720222955481967ull, 15925673480232752322ull, 11020882305290457247ull, 316582913885573803ull}}, {{914696372201412318ull, 13404602886755953029ull, 3595020536871362879ull, 633165827771147607ull}}, {{1829392744402824635ull, 8362461699802354442ull, 7190041073742725759ull, 1266331655542295214ull}}, {{365878548880564927ull, 12740538784186201858ull, 16195403473716186444ull, 253266331108459042ull}}, {{731757097761129854ull, 7034333494662852100ull, 13944062873722821273ull, 506532662216918085ull}}, {{1463514195522259708ull, 14068666989325704200ull, 9441381673736090930ull, 1013065324433836171ull}}, {{3982051653846362265ull, 6503082212607051163ull, 5577625149489128509ull, 202613064886767234ull}}, {{7964103307692724530ull, 13006164425214102326ull, 11155250298978257018ull, 405226129773534468ull}}, {{15928206615385449059ull, 7565584776718653036ull, 3863756524246962421ull, 810452259547068937ull}}, {{17943036582044731105ull, 12581163399569461576ull, 8151448934333213130ull, 162090451909413787ull}}, {{17439329090379910594ull, 6715582725429371537ull, 16302897868666426261ull, 324180903818827574ull}}, {{16431914107050269571ull, 13431165450858743075ull, 14159051663623300906ull, 648361807637655149ull}}, {{3286382821410053915ull, 2686233090171748615ull, 17589205591692301474ull, 129672361527531029ull}}, {{6572765642820107829ull, 5372466180343497230ull, 16731667109675051332ull, 259344723055062059ull}}, {{13145531285640215657ull, 10744932360686994460ull, 15016590145640551048ull, 518689446110124119ull}}, {{7844318497570879697ull, 3043120647664437305ull, 11586436217571550481ull, 1037378892220248239ull}}, {{1568863699514175940ull, 608624129532887461ull, 17074682502481951389ull, 207475778444049647ull}}, {{3137727399028351879ull, 1217248259065774922ull, 15702620931254351162ull, 414951556888099295ull}}, {{6275454798056703758ull, 2434496518131549844ull, 12958497788799150708ull, 829903113776198591ull}}, {{12323137403837071722ull, 15244294562593951261ull, 6281048372501740464ull, 165980622755239718ull}}, {{6199530733964591827ull, 12041845051478350907ull, 12562096745003480929ull, 331961245510479436ull}}, {{12399061467929183653ull, 5636946029247150198ull, 6677449416297410243ull, 663922491020958873ull}}, {{17237207552553478024ull, 4816738020591340362ull, 12403536327485213018ull, 132784498204191774ull}}, {{16027671031397404431ull, 9633476041182680725ull, 6360328581260874420ull, 265568996408383549ull}}, {{13608597989085257245ull, 820208008655809835ull, 12720657162521748841ull, 531137992816767098ull}}, {{8770451904460962874ull, 1640416017311619671ull, 6994570251333946066ull, 1062275985633534197ull}}, {{16511485639859833868ull, 11396129647688054903ull, 8777611679750609859ull, 212455197126706839ull}}, {{14576227206010116120ull, 4345515221666558191ull, 17555223359501219719ull, 424910394253413678ull}}, {{10705710338310680623ull, 8691030443333116383ull, 16663702645292887822ull, 849820788506827357ull}}, {{9519839697145956771ull, 16495601347634264569ull, 10711438158542398210ull, 169964157701365471ull}}, {{592935320582361926ull, 14544458621558977523ull, 2976132243375244805ull, 339928315402730943ull}}, {{1185870641164723852ull, 10642173169408403430ull, 5952264486750489611ull, 679856630805461886ull}}, {{7615871757716765417ull, 9507132263365501332ull, 4879801712092008245ull, 135971326161092377ull}}, {{15231743515433530834ull, 567520453021451048ull, 9759603424184016491ull, 271942652322184754ull}}, {{12016742957157510051ull, 1135040906042902097ull, 1072462774658481366ull, 543885304644369509ull}}, {{5586741840605468486ull, 2270081812085804195ull, 2144925549316962732ull, 1087770609288739018ull}}, {{1117348368121093698ull, 454016362417160839ull, 11497031554089123516ull, 217554121857747803ull}}, {{2234696736242187395ull, 908032724834321678ull, 4547319034468695416ull, 435108243715495607ull}}, {{4469393472484374789ull, 1816065449668643356ull, 9094638068937390832ull, 870216487430991214ull}}, {{8272576323980695605ull, 4052561904675638994ull, 16576322872755119459ull, 174043297486198242ull}}, {{16545152647961391209ull, 8105123809351277988ull, 14705901671800687302ull, 348086594972396485ull}}, {{14643561222213230801ull, 16210247618702555977ull, 10965059269891822988ull, 696173189944792971ull}}, {{6618061059184556484ull, 17999444782708152488ull, 5882360668720274920ull, 139234637988958594ull}}, {{13236122118369112967ull, 17552145491706753360ull, 11764721337440549841ull, 278469275977917188ull}}, {{8025500163028674317ull, 16657546909703955105ull, 5082698601171548067ull, 556938551955834377ull}}, {{16051000326057348634ull, 14868349745698358594ull, 10165397202343096135ull, 1113877103911668754ull}}, {{14278246509437200697ull, 17731065208107313011ull, 16790474699436260519ull, 222775420782333750ull}}, {{10109748945164849777ull, 17015386342505074407ull, 15134205325162969423ull, 445550841564667501ull}}, {{1772753816620147938ull, 15584028611300597199ull, 11821666576616387231ull, 891101683129335003ull}}, {{11422597207549760558ull, 17874200981227760732ull, 13432379759549008415ull, 178220336625867000ull}}, {{4398450341389969499ull, 17301657888745969849ull, 8418015445388465215ull, 356440673251734001ull}}, {{8796900682779938997ull, 16156571703782388082ull, 16836030890776930431ull, 712881346503468002ull}}, {{1759380136555987800ull, 14299360784982208586ull, 10745903807639206732ull, 142576269300693600ull}}, {{3518760273111975599ull, 10151977496254865556ull, 3045063541568861849ull, 285152538601387201ull}}, {{7037520546223951198ull, 1857210918800179496ull, 6090127083137723699ull, 570305077202774402ull}}, {{14075041092447902395ull, 3714421837600358992ull, 12180254166275447398ull, 1140610154405548804ull}}, {{17572403477457221772ull, 8121581997003892444ull, 17193446092222730772ull, 228122030881109760ull}}, {{16698062881204891928ull, 16243163994007784889ull, 15940148110735909928ull, 456244061762219521ull}}, {{14949381688700232239ull, 14039583914306018163ull, 13433552147762268241ull, 912488123524439043ull}}, {{10368573967223867095ull, 17565312041828844925ull, 13754756873778184617ull, 182497624704887808ull}}, {{2290403860738182573ull, 16683880009948138235ull, 9062769673846817619ull, 364995249409775617ull}}, {{4580807721476365145ull, 14921015946186724854ull, 18125539347693635239ull, 729990498819551234ull}}, {{8294859173779093676ull, 14052249633463075940ull, 18382503128506368340ull, 145998099763910246ull}}, {{16589718347558187351ull, 9657755193216600264ull, 18318262183303185065ull, 291996199527820493ull}}, {{14732692621406823086ull, 868766312723648913ull, 18189780292896818515ull, 583992399055640987ull}}, {{11018641169104094555ull, 1737532625447297827ull, 17932816512084085414ull, 1167984798111281975ull}}, {{5893077048562729235ull, 15104901784057100858ull, 3586563302416817082ull, 233596959622256395ull}}, {{11786154097125458469ull, 11763059494404650100ull, 7173126604833634165ull, 467193919244512790ull}}, {{5125564120541365321ull, 5079374915099748585ull, 14346253209667268331ull, 934387838489025580ull}}, {{4714461638850183388ull, 4705223797761860040ull, 2869250641933453666ull, 186877567697805116ull}}, {{9428923277700366775ull, 9410447595523720080ull, 5738501283866907332ull, 373755135395610232ull}}, {{411102481691181934ull, 374151117337888545ull, 11477002567733814665ull, 747510270791220464ull}}, {{14839615755305877680ull, 14832225482435219001ull, 17052795772514404225ull, 149502054158244092ull}}, {{11232487436902203743ull, 11217706891160886387ull, 15658847471319256835ull, 299004108316488185ull}}, {{4018230800094855870ull, 3988669708612221159ull, 12870950868928962055ull, 598008216632976371ull}}, {{8036461600189711740ull, 7977339417224442318ull, 7295157664148372494ull, 1196016433265952743ull}}, {{1607292320037942348ull, 8974165512928709110ull, 12527077977055405468ull, 239203286653190548ull}}, {{3214584640075884696ull, 17948331025857418220ull, 6607411880401259320ull, 478406573306381097ull}}, {{6429169280151769392ull, 17449917978005284824ull, 13214823760802518641ull, 956813146612762194ull}}, {{16043229114997995172ull, 3489983595601056964ull, 17400360011128145021ull, 191362629322552438ull}}, {{13639714156286438727ull, 6979967191202113929ull, 16353975948546738426ull, 382725258645104877ull}}, {{8832684238863325837ull, 13959934382404227859ull, 14261207823383925236ull, 765450517290209755ull}}, {{1766536847772665168ull, 6481335691222755895ull, 2852241564676785047ull, 153090103458041951ull}}, {{3533073695545330335ull, 12962671382445511790ull, 5704483129353570094ull, 306180206916083902ull}}, {{7066147391090660670ull, 7478598691181471964ull, 11408966258707140189ull, 612360413832167804ull}}, {{14132294782181321339ull, 14957197382362943928ull, 4371188443704728762ull, 1224720827664335609ull}}, {{17583854215403905561ull, 6680788291214499108ull, 15631632947708587045ull, 244944165532867121ull}}, {{16720964357098259505ull, 13361576582428998217ull, 12816521821707622474ull, 489888331065734243ull}}, {{14995184640486967394ull, 8276409091148444819ull, 7186299569705693333ull, 979776662131468487ull}}, {{17756432187065034772ull, 1655281818229688963ull, 8815957543424959313ull, 195955332426293697ull}}, {{17066120300420517928ull, 3310563636459377927ull, 17631915086849918626ull, 391910664852587394ull}}, {{15685496527131484239ull, 6621127272918755855ull, 16817086099990285636ull, 783821329705174789ull}}, {{3137099305426296848ull, 1324225454583751171ull, 18120812478965698420ull, 156764265941034957ull}}, {{6274198610852593696ull, 2648450909167502342ull, 17794880884221845224ull, 313528531882069915ull}}, {{12548397221705187391ull, 5296901818335004684ull, 17143017694734138832ull, 627057063764139831ull}}, {{6650050369700823166ull, 10593803636670009369ull, 15839291315758726048ull, 1254114127528279663ull}}, {{1330010073940164634ull, 5808109542075912197ull, 14235904707377476179ull, 250822825505655932ull}}, {{2660020147880329267ull, 11616219084151824394ull, 10025065341045400742ull, 501645651011311865ull}}, {{5320040295760658533ull, 4785694094594097172ull, 1603386608381249869ull, 1003291302022623731ull}}, {{8442705688635952353ull, 957138818918819434ull, 4010026136418160297ull, 200658260404524746ull}}, {{16885411377271904706ull, 1914277637837638868ull, 8020052272836320594ull, 401316520809049492ull}}, {{15324078680834257796ull, 3828555275675277737ull, 16040104545672641188ull, 802633041618098984ull}}, {{17822210995134492852ull, 8144408684618876193ull, 17965416168102169530ull, 160526608323619796ull}}, {{17197677916559434088ull, 16288817369237752387ull, 17484088262494787444ull, 321053216647239593ull}}, {{15948611759409316560ull, 14130890664765953159ull, 16521432451280023273ull, 642106433294479187ull}}, {{17947117610849504605ull, 2826178132953190631ull, 10682984119739825301ull, 128421286658895837ull}}, {{17447491147989457594ull, 5652356265906381263ull, 2919224165770098986ull, 256842573317791675ull}}, {{16448238222269363571ull, 11304712531812762527ull, 5838448331540197972ull, 513685146635583350ull}}, {{14449732370829175526ull, 4162680989915973439ull, 11676896663080395945ull, 1027370293271166700ull}}, {{17647341733133476398ull, 832536197983194687ull, 2335379332616079189ull, 205474058654233340ull}}, {{16847939392557401180ull, 1665072395966389375ull, 4670758665232158378ull, 410948117308466680ull}}, {{15249134711405250744ull, 3330144791932778751ull, 9341517330464316756ull, 821896234616933360ull}}, {{10428524571764870796ull, 4355377773128466073ull, 1868303466092863351ull, 164379246923386672ull}}, {{2410305069820189975ull, 8710755546256932147ull, 3736606932185726702ull, 328758493846773344ull}}, {{4820610139640379949ull, 17421511092513864294ull, 7473213864371453404ull, 657516987693546688ull}}, {{4653470842669986313ull, 10862999847986593505ull, 12562689217100021650ull, 131503397538709337ull}}, {{9306941685339972626ull, 3279255622263635394ull, 6678634360490491685ull, 263006795077418675ull}}, {{167139296970393636ull, 6558511244527270789ull, 13357268720980983370ull, 526013590154837350ull}}, {{334278593940787272ull, 13117022489054541578ull, 8267793368252415124ull, 1052027180309674701ull}}, {{11134902163013888424ull, 2623404497810908315ull, 5342907488392393348ull, 210405436061934940ull}}, {{3823060252318225232ull, 5246808995621816631ull, 10685814976784786696ull, 420810872123869880ull}}, {{7646120504636450464ull, 10493617991243633262ull, 2924885879860021776ull, 841621744247739761ull}}, {{16286619359894931386ull, 9477421227732547298ull, 4274325990713914678ull, 168324348849547952ull}}, {{14126494646080311155ull, 508098381755542981ull, 8548651981427829357ull, 336648697699095904ull}}, {{9806245218451070694ull, 1016196763511085963ull, 17097303962855658714ull, 673297395398191808ull}}, {{1961249043690214139ull, 7581936982186037839ull, 14487507236796862712ull, 134659479079638361ull}}, {{3922498087380428278ull, 15163873964372075678ull, 10528270399884173808ull, 269318958159276723ull}}, {{7844996174760856556ull, 11881003855034599740ull, 2609796726058796001ull, 538637916318553447ull}}, {{15689992349521713111ull, 5315263636359647864ull, 5219593452117592003ull, 1077275832637106894ull}}, {{6827347284646252946ull, 8441750356755750219ull, 15801313949391159693ull, 215455166527421378ull}}, {{13654694569292505891ull, 16883500713511500438ull, 13155883825072767770ull, 430910333054842757ull}}, {{8862645064875460165ull, 15320257353313449261ull, 7865023576435983925ull, 861820666109685515ull}}, {{5461877827717002357ull, 3064051470662689852ull, 1573004715287196785ull, 172364133221937103ull}}, {{10923755655434004713ull, 6128102941325379704ull, 3146009430574393570ull, 344728266443874206ull}}, {{3400767237158457809ull, 12256205882650759409ull, 6292018861148787140ull, 689456532887748412ull}}, {{4369502262173601885ull, 9829938806013972528ull, 8637101401713578074ull, 137891306577549682ull}}, {{8739004524347203770ull, 1213133538318393440ull, 17274202803427156149ull, 275782613155099364ull}}, {{17478009048694407540ull, 2426267076636786880ull, 16101661533144760682ull, 551565226310198729ull}}, {{16509274023679263464ull, 4852534153273573761ull, 13756578992579969748ull, 1103130452620397459ull}}, {{14369901248961583663ull, 8349204460138535398ull, 17508711057483635242ull, 220626090524079491ull}}, {{10293058424213615709ull, 16698408920277070797ull, 16570678041257718868ull, 441252181048158983ull}}, {{2139372774717679802ull, 14950073766844589979ull, 14694612008805886121ull, 882504362096317967ull}}, {{7806572184427356607ull, 14058061197594648965ull, 10317620031244997870ull, 176500872419263593ull}}, {{15613144368854713214ull, 9669378321479746314ull, 2188495988780444125ull, 353001744838527187ull}}, {{12779544663999874811ull, 892012569249941013ull, 4376991977560888251ull, 706003489677054374ull}}, {{13623955377025705932ull, 178402513849988202ull, 15632793654479818943ull, 141200697935410874ull}}, {{8801166680341860248ull, 356805027699976405ull, 12818843235250086270ull, 282401395870821749ull}}, {{17602333360683720495ull, 713610055399952810ull, 7190942396790620924ull, 564802791741643499ull}}, {{16757922647657889374ull, 1427220110799905621ull, 14381884793581241848ull, 1129605583483286998ull}}, {{10730282159015398522ull, 3974792836901891447ull, 13944423402941979339ull, 225921116696657399ull}}, {{3013820244321245427ull, 7949585673803782895ull, 9442102732174407062ull, 451842233393314799ull}}, {{6027640488642490853ull, 15899171347607565790ull, 437461390639262508ull, 903684466786629599ull}}, {{8584225727212318817ull, 10558531899005333804ull, 14844887537095493794ull, 180736893357325919ull}}, {{17168451454424637634ull, 2670319724301115992ull, 11243031000481435973ull, 361473786714651839ull}}, {{15890158835139723652ull, 5340639448602231985ull, 4039317927253320330ull, 722947573429303679ull}}, {{17935427025995586024ull, 15825523148688087689ull, 15565258844418305358ull, 144589514685860735ull}}, {{17424109978281620431ull, 13204302223666623763ull, 12683773615127059101ull, 289179029371721471ull}}, {{16401475882853689245ull, 7961860373623695911ull, 6920803156544566587ull, 578358058743442943ull}}, {{14356207691997826874ull, 15923720747247391823ull, 13841606313089133174ull, 1156716117486885886ull}}, {{13939287982625296345ull, 3184744149449478364ull, 6457670077359736958ull, 231343223497377177ull}}, {{9431831891541041073ull, 6369488298898956729ull, 12915340154719473916ull, 462686446994754354ull}}, {{416919709372530529ull, 12738976597797913459ull, 7383936235729396216ull, 925372893989508709ull}}, {{14840779200842147399ull, 2547795319559582691ull, 16234182506113520536ull, 185074578797901741ull}}, {{11234814327974743182ull, 5095590639119165383ull, 14021620938517489456ull, 370149157595803483ull}}, {{4022884582239934747ull, 10191181278238330767ull, 9596497803325427296ull, 740298315191606967ull}}, {{804576916447986950ull, 13106282699873397123ull, 9297997190148906105ull, 148059663038321393ull}}, {{1609153832895973899ull, 7765821326037242630ull, 149250306588260595ull, 296119326076642787ull}}, {{3218307665791947798ull, 15531642652074485260ull, 298500613176521190ull, 592238652153285574ull}}, {{6436615331583895595ull, 12616541230439418904ull, 597001226353042381ull, 1184477304306571148ull}}, {{12355369510542510089ull, 17280703505055525073ull, 11187446689496339445ull, 236895460861314229ull}}, {{6263994947375468561ull, 16114662936401498531ull, 3928149305283127275ull, 473790921722628459ull}}, {{12527989894750937122ull, 13782581799093445446ull, 7856298610566254551ull, 947581843445256918ull}}, {{2505597978950187425ull, 17513911618786330382ull, 12639306166338981879ull, 189516368689051383ull}}, {{5011195957900374849ull, 16581079163863109148ull, 6831868258968412143ull, 379032737378102767ull}}, {{10022391915800749698ull, 14715414254016666680ull, 13663736517936824287ull, 758065474756205534ull}}, {{5693827197902060263ull, 6632431665545243659ull, 17490142562555006150ull, 151613094951241106ull}}, {{11387654395804120526ull, 13264863331090487318ull, 16533541051400460684ull, 303226189902482213ull}}, {{4328564717898689435ull, 8082982588471423021ull, 14620338029091369753ull, 606452379804964427ull}}, {{8657129435797378870ull, 16165965176942846042ull, 10793931984473187890ull, 1212904759609928855ull}}, {{9110123516643296421ull, 3233193035388569208ull, 2158786396894637578ull, 242580951921985771ull}}, {{18220247033286592841ull, 6466386070777138416ull, 4317572793789275156ull, 485161903843971542ull}}, {{17993749992863634066ull, 12932772141554276833ull, 8635145587578550312ull, 970323807687943084ull}}, {{18356145257540368106ull, 6275903243052765689ull, 16484424376483351355ull, 194064761537588616ull}}, {{18265546441371184596ull, 12551806486105531379ull, 14522104679257151094ull, 388129523075177233ull}}, {{18084348809032817576ull, 6656868898501511143ull, 10597465284804750573ull, 776259046150354467ull}}, {{14684916206032294485ull, 1331373779700302228ull, 9498190686444770761ull, 155251809230070893ull}}, {{10923088338355037354ull, 2662747559400604457ull, 549637299179989906ull, 310503618460141787ull}}, {{3399432603000523091ull, 5325495118801208915ull, 1099274598359979812ull, 621007236920283574ull}}, {{6798865206001046182ull, 10650990237602417830ull, 2198549196719959624ull, 1242014473840567148ull}}, {{8738470670684029883ull, 9508895677004304212ull, 11507756283569722894ull, 248402894768113429ull}}, {{17476941341368059766ull, 571047280299056808ull, 4568768493429894173ull, 496805789536226859ull}}, {{16507138609026567915ull, 1142094560598113617ull, 9137536986859788346ull, 993611579072453718ull}}, {{6990776536547223907ull, 14985814171087264016ull, 12895553841597688638ull, 198722315814490743ull}}, {{13981553073094447813ull, 11524884268464976416ull, 7344363609485825661ull, 397444631628981487ull}}, {{9516362072479344009ull, 4603024463220401217ull, 14688727218971651323ull, 794889263257962974ull}}, {{16660667673463510095ull, 8299302522127900889ull, 17695140702761971557ull, 158977852651592594ull}}, {{14874591273217468573ull, 16598605044255801779ull, 16943537331814391498ull, 317955705303185189ull}}, {{11302438472725385530ull, 14750466014802051943ull, 15440330589919231381ull, 635911410606370379ull}}, {{4158132871741219444ull, 11054187955894552271ull, 12433917106128911147ull, 1271822821212740759ull}}, {{8210324203832064536ull, 5900186405920820777ull, 17244178680193423522ull, 254364564242548151ull}}, {{16420648407664129071ull, 11800372811841641554ull, 16041613286677295428ull, 508729128485096303ull}}, {{14394552741618706525ull, 5154001549973731493ull, 13636482499645039241ull, 1017458256970192607ull}}, {{6568259363065651629ull, 12098846754220477268ull, 10105994129412828494ull, 203491651394038521ull}}, {{13136518726131303257ull, 5750949434731402920ull, 1765244185116105373ull, 406983302788077043ull}}, {{7826293378553054897ull, 11501898869462805841ull, 3530488370232210746ull, 813966605576154086ull}}, {{12633305119936341949ull, 9679077403376381814ull, 4395446488788352472ull, 162793321115230817ull}}, {{6819866166163132282ull, 911410733043212013ull, 8790892977576704945ull, 325586642230461634ull}}, {{13639732332326264564ull, 1822821466086424026ull, 17581785955153409890ull, 651173284460923268ull}}, {{17485341725432894206ull, 11432610737443015774ull, 14584403635256412947ull, 130234656892184653ull}}, {{16523939377156236796ull, 4418477401176479933ull, 10722063196803274279ull, 260469313784369307ull}}, {{14601134680602921975ull, 8836954802352959867ull, 2997382319896996942ull, 520938627568738615ull}}, {{10755525287496292333ull, 17673909604705919735ull, 5994764639793993884ull, 1041877255137477230ull}}, {{16908500316466899760ull, 18292177179908825239ull, 1198952927958798776ull, 208375451027495446ull}}, {{15370256559224247903ull, 18137610286108098863ull, 2397905855917597553ull, 416750902054990892ull}}, {{12293769044738944189ull, 17828476498506646111ull, 4795811711835195107ull, 833501804109981784ull}}, {{9837451438431609485ull, 7255044114443239545ull, 15716557601334680314ull, 166700360821996356ull}}, {{1228158803153667353ull, 14510088228886479091ull, 12986371128959809012ull, 333400721643992713ull}}, {{2456317606307334705ull, 10573432384063406566ull, 7525998184210066409ull, 666801443287985427ull}}, {{7869961150745287588ull, 5804035291554591636ull, 8883897266325833928ull, 133360288657597085ull}}, {{15739922301490575175ull, 11608070583109183272ull, 17767794532651667856ull, 266720577315194170ull}}, {{13033100529271598734ull, 4769397092508814929ull, 17088844991593784097ull, 533441154630388341ull}}, {{7619456984833645851ull, 9538794185017629859ull, 15730945909478016578ull, 1066882309260776683ull}}, {{1523891396966729171ull, 5597107651745436295ull, 14214235626121334285ull, 213376461852155336ull}}, {{3047782793933458341ull, 11194215303490872590ull, 9981727178533116954ull, 426752923704310673ull}}, {{6095565587866916681ull, 3941686533272193564ull, 1516710283356682293ull, 853505847408621347ull}}, {{15976508376541024629ull, 788337306654438712ull, 7682039686155157105ull, 170701169481724269ull}}, {{13506272679372497642ull, 1576674613308877425ull, 15364079372310314210ull, 341402338963448538ull}}, {{8565801285035443668ull, 3153349226617754851ull, 12281414670911076804ull, 682804677926897077ull}}, {{9091857886490909380ull, 4320018660065461293ull, 9834980563666036007ull, 136560935585379415ull}}, {{18183715772981818760ull, 8640037320130922586ull, 1223217053622520398ull, 273121871170758831ull}}, {{17920687472254085904ull, 17280074640261845173ull, 2446434107245040796ull, 546243742341517662ull}}, {{17394630870798620192ull, 16113405206814138731ull, 4892868214490081593ull, 1092487484683035324ull}}, {{14546972618385455008ull, 10601378670846648392ull, 15735968901865657611ull, 218497496936607064ull}}, {{10647201163061358400ull, 2756013267983745169ull, 13025193730021763607ull, 436994993873214129ull}}, {{2847658252413165184ull, 5512026535967490339ull, 7603643386333975598ull, 873989987746428259ull}}, {{4258880465224543360ull, 8481102936677318714ull, 16278123936234436412ull, 174797997549285651ull}}, {{8517760930449086720ull, 16962205873354637428ull, 14109503798759321208ull, 349595995098571303ull}}, {{17035521860898173440ull, 15477667672999723240ull, 9772263523809090801ull, 699191990197142607ull}}, {{14475150816405365658ull, 14163579978825675617ull, 9333150334245638806ull, 139838398039428521ull}}, {{10503557559101179700ull, 9880415883941799619ull, 219556594781725997ull, 279676796078857043ull}}, {{2560371044492807783ull, 1314087694174047623ull, 439113189563451995ull, 559353592157714086ull}}, {{5120742088985615565ull, 2628175388348095246ull, 878226379126903990ull, 1118707184315428172ull}}, {{12092194862022854083ull, 7904332707153439695ull, 7554342905309201444ull, 223741436863085634ull}}, {{5737645650336156549ull, 15808665414306879391ull, 15108685810618402888ull, 447482873726171268ull}}, {{11475291300672313098ull, 13170586754904207166ull, 11770627547527254161ull, 894965747452342537ull}}, {{17052453519102103913ull, 13702163795206572402ull, 9732823138989271478ull, 178993149490468507ull}}, {{15658162964494656209ull, 8957583516703593189ull, 1018902204268991341ull, 357986298980937015ull}}, {{12869581855279760802ull, 17915167033407186379ull, 2037804408537982682ull, 715972597961874030ull}}, {{6263265185797862484ull, 10961731036165257922ull, 407560881707596536ull, 143194519592374806ull}}, {{12526530371595724968ull, 3476717998620964228ull, 815121763415193073ull, 286389039184749612ull}}, {{6606316669481898319ull, 6953435997241928457ull, 1630243526830386146ull, 572778078369499224ull}}, {{13212633338963796637ull, 13906871994483856914ull, 3260487053660772292ull, 1145556156738998448ull}}, {{17399921926760400621ull, 2781374398896771382ull, 11720143854957885428ull, 229111231347799689ull}}, {{16353099779811249625ull, 5562748797793542765ull, 4993543636206219240ull, 458222462695599379ull}}, {{14259455485912947633ull, 11125497595587085531ull, 9987087272412438480ull, 916444925391198758ull}}, {{17609286356150230820ull, 13293145963343148075ull, 13065463898708218665ull, 183288985078239751ull}}, {{16771828638590910023ull, 8139547852976744535ull, 7684183723706885715ull, 366577970156479503ull}}, {{15096913203472268429ull, 16279095705953489071ull, 15368367447413771430ull, 733155940312959006ull}}, {{10398080270178274333ull, 6945167955932608137ull, 6763022304224664609ull, 146631188062591801ull}}, {{2349416466646997049ull, 13890335911865216275ull, 13526044608449329218ull, 293262376125183602ull}}, {{4698832933293994097ull, 9333927750020880934ull, 8605345143189106821ull, 586524752250367205ull}}, {{9397665866587988194ull, 221111426332210252ull, 17210690286378213643ull, 1173049504500734410ull}}, {{1879533173317597639ull, 11112268729492173020ull, 3442138057275642728ull, 234609900900146882ull}}, {{3759066346635195278ull, 3777793385274794424ull, 6884276114551285457ull, 469219801800293764ull}}, {{7518132693270390555ull, 7555586770549588848ull, 13768552229102570914ull, 938439603600587528ull}}, {{1503626538654078111ull, 8889814983593738416ull, 13821756890046245152ull, 187687920720117505ull}}, {{3007253077308156222ull, 17779629967187476832ull, 9196769706382938688ull, 375375841440235011ull}}, {{6014506154616312444ull, 17112515860665402048ull, 18393539412765877377ull, 750751682880470022ull}}, {{8581598860407083136ull, 18179898431100721702ull, 11057405512036996121ull, 150150336576094004ull}}, {{17163197720814166271ull, 17913052788491891788ull, 3668066950364440627ull, 300300673152188009ull}}, {{15879651367918780925ull, 17379361503274231961ull, 7336133900728881255ull, 600601346304376018ull}}, {{13312558662128010234ull, 16311978932838912307ull, 14672267801457762511ull, 1201202692608752036ull}}, {{17419906991393243340ull, 10641093416051603107ull, 6623802375033462825ull, 240240538521750407ull}}, {{16393069909076935063ull, 2835442758393654599ull, 13247604750066925651ull, 480481077043500814ull}}, {{14339395744444318510ull, 5670885516787309199ull, 8048465426424299686ull, 960962154087001629ull}}, {{17625274407856504995ull, 1134177103357461839ull, 16367088344252501230ull, 192192430817400325ull}}, {{16803804742003458374ull, 2268354206714923679ull, 14287432614795450844ull, 384384861634800651ull}}, {{15160865410297365131ull, 4536708413429847359ull, 10128121155881350072ull, 768769723269601303ull}}, {{17789568341027114319ull, 907341682685969471ull, 13093670675402000984ull, 153753944653920260ull}}, {{17132392608344677022ull, 1814683365371938943ull, 7740597277094450352ull, 307507889307840521ull}}, {{15818041142979802428ull, 3629366730743877887ull, 15481194554188900704ull, 615015778615681042ull}}, {{13189338212250053240ull, 7258733461487755775ull, 12515645034668249792ull, 1230031557231362085ull}}, {{10016565271933831295ull, 8830444321781371801ull, 2503129006933649958ull, 246006311446272417ull}}, {{1586386470158110973ull, 17660888643562743603ull, 5006258013867299916ull, 492012622892544834ull}}, {{3172772940316221946ull, 16875033213415935590ull, 10012516027734599833ull, 984025245785089668ull}}, {{4323903402805154713ull, 7064355457425097441ull, 13070549649772650936ull, 196805049157017933ull}}, {{8647806805610309425ull, 14128710914850194882ull, 7694355225835750256ull, 393610098314035867ull}}, {{17295613611220618850ull, 9810677755990838148ull, 15388710451671500513ull, 787220196628071734ull}}, {{3459122722244123770ull, 9340833180681988276ull, 17835137349301941395ull, 157444039325614346ull}}, {{6918245444488247540ull, 234922287654424936ull, 17223530624894331175ull, 314888078651228693ull}}, {{13836490888976495080ull, 469844575308849872ull, 16000317176079110734ull, 629776157302457387ull}}, {{9226237704243438543ull, 939689150617699745ull, 13553890278448669852ull, 1259552314604914775ull}}, {{9223945170332508355ull, 7566635459607360595ull, 2710778055689733970ull, 251910462920982955ull}}, {{1146266955465094ull, 15133270919214721191ull, 5421556111379467940ull, 503820925841965910ull}}, {{2292533910930188ull, 11819797764719890766ull, 10843112222758935881ull, 1007641851683931820ull}}, {{7379156136266006684ull, 6053308367685888476ull, 2168622444551787176ull, 201528370336786364ull}}, {{14758312272532013368ull, 12106616735371776952ull, 4337244889103574352ull, 403056740673572728ull}}, {{11069880471354475120ull, 5766489397034002289ull, 8674489778207148705ull, 806113481347145456ull}}, {{2213976094270895024ull, 4842646694148710781ull, 5424246770383340064ull, 161222696269429091ull}}, {{4427952188541790048ull, 9685293388297421562ull, 10848493540766680128ull, 322445392538858182ull}}, {{8855904377083580096ull, 923842702885291508ull, 3250243007823808641ull, 644890785077716365ull}}, {{16528576134384357312ull, 3874117355318968624ull, 650048601564761728ull, 128978157015543273ull}}, {{14610408195059163008ull, 7748234710637937249ull, 1300097203129523456ull, 257956314031086546ull}}, {{10774072316408774400ull, 15496469421275874499ull, 2600194406259046912ull, 515912628062173092ull}}, {{3101400559107997184ull, 12546194768842197383ull, 5200388812518093825ull, 1031825256124346184ull}}, {{7998977741305420084ull, 17266634212736080769ull, 15797473021471260057ull, 206365051224869236ull}}, {{15997955482610840167ull, 16086524351762609922ull, 13148201969232968499ull, 412730102449738473ull}}, {{13549166891512128717ull, 13726304629815668229ull, 7849659864756385383ull, 825460204899476947ull}}, {{17467228637270067037ull, 2745260925963133645ull, 8948629602435097723ull, 165092040979895389ull}}, {{16487713200830582457ull, 5490521851926267291ull, 17897259204870195446ull, 330184081959790778ull}}, {{14528682327951613297ull, 10981043703852534583ull, 17347774336030839276ull, 660368163919581557ull}}, {{6595085280332232983ull, 13264255184996237886ull, 10848252496689988501ull, 132073632783916311ull}}, {{13190170560664465966ull, 8081766296282924156ull, 3249760919670425387ull, 264147265567832623ull}}, {{7933597047619380315ull, 16163532592565848313ull, 6499521839340850774ull, 528294531135665246ull}}, {{15867194095238760629ull, 13880321111422145010ull, 12999043678681701549ull, 1056589062271330492ull}}, {{6862787633789662449ull, 6465413037026339325ull, 9978506365220160956ull, 211317812454266098ull}}, {{13725575267579324898ull, 12930826074052678650ull, 1510268656730770296ull, 422635624908532197ull}}, {{9004406461449098180ull, 7414908074395805685ull, 3020537313461540593ull, 845271249817064394ull}}, {{9179578921773640283ull, 8861679244362981783ull, 15361502721659949411ull, 169054249963412878ull}}, {{18359157843547280565ull, 17723358488725963566ull, 12276261369610347206ull, 338108499926825757ull}}, {{18271571613385009514ull, 16999972903742375517ull, 6105778665511142797ull, 676216999853651515ull}}, {{18411709581644643196ull, 10778692210232295749ull, 1221155733102228559ull, 135243399970730303ull}}, {{18376675089579734775ull, 3110640346755039883ull, 2442311466204457119ull, 270486799941460606ull}}, {{18306606105449917934ull, 6221280693510079767ull, 4884622932408914238ull, 540973599882921212ull}}, {{18166468137190284252ull, 12442561387020159535ull, 9769245864817828476ull, 1081947199765842424ull}}, {{3633293627438056851ull, 2488512277404031907ull, 16711244431931206988ull, 216389439953168484ull}}, {{7266587254876113701ull, 4977024554808063814ull, 14975744790152862360ull, 432778879906336969ull}}, {{14533174509752227401ull, 9954049109616127628ull, 11504745506596173104ull, 865557759812673939ull}}, {{6595983716692355804ull, 13058856266148956495ull, 17058344360286875913ull, 173111551962534787ull}}, {{13191967433384711607ull, 7670968458588361374ull, 15669944646864200211ull, 346223103925069575ull}}, {{7937190793059871598ull, 15341936917176722749ull, 12893145220018848806ull, 692446207850139151ull}}, {{5276786973353884643ull, 10447085012919165196ull, 6267977858745680084ull, 138489241570027830ull}}, {{10553573946707769286ull, 2447425952128778776ull, 12535955717491360169ull, 276978483140055660ull}}, {{2660403819705986955ull, 4894851904257557553ull, 6625167361273168722ull, 553956966280111321ull}}, {{5320807639411973910ull, 9789703808515115106ull, 13250334722546337444ull, 1107913932560222642ull}}, {{8442859157366215429ull, 5647289576444933344ull, 10028764573993088135ull, 221582786512044528ull}}, {{16885718314732430857ull, 11294579152889866688ull, 1610785074276624654ull, 443165573024089057ull}}, {{15324692555755310098ull, 4142414232070181761ull, 3221570148553249309ull, 886331146048178114ull}}, {{17822333770118703313ull, 11896529290639767321ull, 15401709288678291154ull, 177266229209635622ull}}, {{17197923466527855009ull, 5346314507569983027ull, 12356674503647030693ull, 354532458419271245ull}}, {{15949102859346158402ull, 10692629015139966055ull, 6266604933584509770ull, 709064916838542491ull}}, {{6879169386611142004ull, 5827874617769903534ull, 4942669801458812277ull, 141812983367708498ull}}, {{13758338773222284007ull, 11655749235539807068ull, 9885339602917624554ull, 283625966735416996ull}}, {{9069933472735016398ull, 4864754397370062521ull, 1323935132125697493ull, 567251933470833993ull}}, {{18139866945470032796ull, 9729508794740125042ull, 2647870264251394986ull, 1134503866941667986ull}}, {{18385368648061647852ull, 9324599388431845654ull, 4218922867592189320ull, 226900773388333597ull}}, {{18323993222413744088ull, 202454703154139693ull, 8437845735184378641ull, 453801546776667194ull}}, {{18201242371117936560ull, 404909406308279387ull, 16875691470368757282ull, 907603093553334388ull}}, {{11018946103707407959ull, 80981881261655877ull, 14443184738299482426ull, 181520618710666877ull}}, {{3591148133705264301ull, 161963762523311755ull, 10439625402889413236ull, 363041237421333755ull}}, {{7182296267410528602ull, 323927525046623510ull, 2432506732069274856ull, 726082474842667511ull}}, {{8815156882965926367ull, 7443483134493145348ull, 4175850161155765294ull, 145216494968533502ull}}, {{17630313765931852734ull, 14886966268986290696ull, 8351700322311530588ull, 290432989937067004ull}}, {{16813883458154153851ull, 11327188464263029777ull, 16703400644623061177ull, 580865979874134008ull}}, {{15181022842598756086ull, 4207632854816507939ull, 14960057215536570739ull, 1161731959748268017ull}}, {{3036204568519751218ull, 4530875385705211911ull, 10370709072591134794ull, 232346391949653603ull}}, {{6072409137039502435ull, 9061750771410423822ull, 2294674071472717972ull, 464692783899307207ull}}, {{12144818274079004869ull, 18123501542820847644ull, 4589348142945435944ull, 929385567798614414ull}}, {{9807661284299621621ull, 14692746752789900498ull, 15675264887556728481ull, 185877113559722882ull}}, {{1168578494889691625ull, 10938749431870249381ull, 12903785701403905347ull, 371754227119445765ull}}, {{2337156989779383249ull, 3430754790030947146ull, 7360827329098259079ull, 743508454238891531ull}}, {{4156780212697786973ull, 686150958006189429ull, 5161514280561562139ull, 148701690847778306ull}}, {{8313560425395573946ull, 1372301916012378858ull, 10323028561123124278ull, 297403381695556612ull}}, {{16627120850791147892ull, 2744603832024757716ull, 2199313048536696940ull, 594806763391113225ull}}, {{14807497627872744167ull, 5489207664049515433ull, 4398626097073393880ull, 1189613526782226450ull}}, {{14029545969800279803ull, 1097841532809903086ull, 879725219414678776ull, 237922705356445290ull}}, {{9612347865891007990ull, 2195683065619806173ull, 1759450438829357552ull, 475845410712890580ull}}, {{777951658072464364ull, 4391366131239612347ull, 3518900877658715104ull, 951690821425781160ull}}, {{3844939146356403196ull, 15635668485215563762ull, 703780175531743020ull, 190338164285156232ull}}, {{7689878292712806392ull, 12824592896721575908ull, 1407560351063486041ull, 380676328570312464ull}}, {{15379756585425612784ull, 7202441719733600200ull, 2815120702126972083ull, 761352657140624928ull}}, {{6765300131827032880ull, 5129837158688630363ull, 11631070584651125386ull, 152270531428124985ull}}, {{13530600263654065760ull, 10259674317377260726ull, 4815397095592699156ull, 304541062856249971ull}}, {{8614456453598579904ull, 2072604561044969837ull, 9630794191185398313ull, 609082125712499942ull}}, {{17228912907197159808ull, 4145209122089939674ull, 814844308661245010ull, 1218164251424999885ull}}, {{18203177840407073255ull, 829041824417987934ull, 162968861732249002ull, 243632850284999977ull}}, {{17959611607104594893ull, 1658083648835975869ull, 325937723464498004ull, 487265700569999954ull}}, {{17472479140499638170ull, 3316167297671951739ull, 651875446928996008ull, 974531401139999908ull}}, {{3494495828099927634ull, 4352582274276300671ull, 11198421533611530171ull, 194906280227999981ull}}, {{6988991656199855268ull, 8705164548552601342ull, 3950098993513508726ull, 389812560455999963ull}}, {{13977983312399710536ull, 17410329097105202684ull, 7900197987027017452ull, 779625120911999926ull}}, {{10174294291963762754ull, 14550112263646771506ull, 5269388412147313813ull, 155925024182399985ull}}, {{1901844510217973891ull, 10653480453583991397ull, 10538776824294627627ull, 311850048364799970ull}}, {{3803689020435947782ull, 2860216833458431178ull, 2630809574879703639ull, 623700096729599941ull}}, {{7607378040871895564ull, 5720433666916862356ull, 5261619149759407278ull, 1247400193459199882ull}}, {{5210824422916289436ull, 1144086733383372471ull, 8431021459435702102ull, 249480038691839976ull}}, {{10421648845832578872ull, 2288173466766744942ull, 16862042918871404204ull, 498960077383679952ull}}, {{2396553617955606128ull, 4576346933533489885ull, 15277341764033256792ull, 997920154767359905ull}}, {{7858008353074941872ull, 8293967016190518623ull, 3055468352806651358ull, 199584030953471981ull}}, {{15716016706149883744ull, 16587934032381037246ull, 6110936705613302716ull, 399168061906943962ull}}, {{12985289338590215872ull, 14729123991052522877ull, 12221873411226605433ull, 798336123813887924ull}}, {{17354453126685684468ull, 10324522427694325221ull, 17201769941212962379ull, 159667224762777584ull}}, {{16262162179661817319ull, 2202300781679098827ull, 15956795808716373143ull, 319334449525555169ull}}, {{14077580285614083021ull, 4404601563358197655ull, 13466847543723194670ull, 638668899051110339ull}}, {{9708416497518614426ull, 8809203126716395311ull, 8486951013736837724ull, 1277337798102220679ull}}, {{16699078558471364178ull, 12829887069569010031ull, 16454785461715008837ull, 255467559620444135ull}}, {{14951413043233176740ull, 7213030065428468447ull, 14462826849720466059ull, 510935119240888271ull}}, {{11456082012756801864ull, 14426060130856936895ull, 10478909625731380502ull, 1021870238481776543ull}}, {{2291216402551360373ull, 2885212026171387379ull, 13163828369372007070ull, 204374047696355308ull}}, {{4582432805102720746ull, 5770424052342774758ull, 7880912665034462524ull, 408748095392710617ull}}, {{9164865610205441491ull, 11540848104685549516ull, 15761825330068925048ull, 817496190785421234ull}}, {{12901019566266819268ull, 9686867250420930549ull, 17909760324981426302ull, 163499238157084246ull}}, {{7355295058824086920ull, 926990427132309483ull, 17372776576253300989ull, 326998476314168493ull}}, {{14710590117648173840ull, 1853980854264618966ull, 16298809078797050362ull, 653996952628336987ull}}, {{2942118023529634768ull, 15128191429820565086ull, 10638459445243230718ull, 130799390525667397ull}}, {{5884236047059269536ull, 11809638785931578556ull, 2830174816776909821ull, 261598781051334795ull}}, {{11768472094118539072ull, 5172533498153605496ull, 5660349633553819643ull, 523197562102669590ull}}, {{5090200114527526527ull, 10345066996307210993ull, 11320699267107639286ull, 1046395124205339180ull}}, {{15775435281873146599ull, 5758362214003352521ull, 2264139853421527857ull, 209279024841067836ull}}, {{13104126490036741581ull, 11516724428006705043ull, 4528279706843055714ull, 418558049682135672ull}}, {{7761508906363931545ull, 4586704782303858471ull, 9056559413686111429ull, 837116099364271344ull}}, {{16309697040240427602ull, 11985387400686502663ull, 16568707141704863578ull, 167423219872854268ull}}, {{14172650006771303588ull, 5524030727663453711ull, 14690670209700175541ull, 334846439745708537ull}}, {{9898555939833055559ull, 11048061455326907423ull, 10934596345690799466ull, 669692879491417075ull}}, {{16737106446934252405ull, 5898961105807291807ull, 2186919269138159893ull, 133938575898283415ull}}, {{15027468820158953194ull, 11797922211614583615ull, 4373838538276319786ull, 267877151796566830ull}}, {{11608193566608354771ull, 5149100349519615615ull, 8747677076552639573ull, 535754303593133660ull}}, {{4769643059507157925ull, 10298200699039231231ull, 17495354153105279146ull, 1071508607186267320ull}}, {{8332626241385252232ull, 5748988954549756569ull, 3499070830621055829ull, 214301721437253464ull}}, {{16665252482770504463ull, 11497977909099513138ull, 6998141661242111658ull, 428603442874506928ull}}, {{14883760891831457310ull, 4549211744489474661ull, 13996283322484223317ull, 857206885749013856ull}}, {{17734147437333932755ull, 11977888793123625901ull, 6488605479238754986ull, 171441377149802771ull}}, {{17021550800958313894ull, 5509033512537700187ull, 12977210958477509973ull, 342882754299605542ull}}, {{15596357528207076171ull, 11018067025075400375ull, 7507677843245468330ull, 685765508599211085ull}}, {{3119271505641415235ull, 2203613405015080075ull, 1501535568649093666ull, 137153101719842217ull}}, {{6238543011282830469ull, 4407226810030160150ull, 3003071137298187332ull, 274306203439684434ull}}, {{12477086022565660937ull, 8814453620060320300ull, 6006142274596374664ull, 548612406879368868ull}}, {{6507427971421770257ull, 17628907240120640601ull, 12012284549192749328ull, 1097224813758737736ull}}, {{1301485594284354052ull, 18283176706991769413ull, 6091805724580460188ull, 219444962751747547ull}}, {{2602971188568708103ull, 18119609340273987210ull, 12183611449160920377ull, 438889925503495094ull}}, {{5205942377137416206ull, 17792474606838422804ull, 5920478824612289139ull, 877779851006990189ull}}, {{8419886104911303888ull, 14626541365593415530ull, 15941491023890099120ull, 175555970201398037ull}}, {{16839772209822607775ull, 10806338657477279444ull, 13436237974070646625ull, 351111940402796075ull}}, {{15232800345935663934ull, 3165933241245007273ull, 8425731874431741635ull, 702223880805592151ull}}, {{17803955328154774080ull, 4322535462990911777ull, 5374495189628258650ull, 140444776161118430ull}}, {{17161166582599996544ull, 8645070925981823555ull, 10748990379256517300ull, 280889552322236860ull}}, {{15875589091490441471ull, 17290141851963647111ull, 3051236684803482984ull, 561779104644473721ull}}, {{13304434109271331325ull, 16133539630217742607ull, 6102473369606965969ull, 1123558209288947442ull}}, {{13728933266079997235ull, 6916056740785458844ull, 8599192303405213840ull, 224711641857789488ull}}, {{9011122458450442854ull, 13832113481570917689ull, 17198384606810427680ull, 449423283715578976ull}}, {{18022244916900885707ull, 9217482889432283762ull, 15950025139911303745ull, 898846567431157953ull}}, {{3604448983380177142ull, 12911543022112187722ull, 14258051472207991718ull, 179769313486231590ull}}, {{7208897966760354283ull, 7376341970514823828ull, 10069358870706431821ull, 359538626972463181ull}}, {{14417795933520708565ull, 14752683941029647656ull, 1691973667703312026ull, 719077253944926363ull}}, {{2883559186704141713ull, 17707932047173570824ull, 11406441177766393374ull, 143815450788985272ull}}, {{5767118373408283426ull, 16969120020637590032ull, 4366138281823235133ull, 287630901577970545ull}}, {{11534236746816566852ull, 15491495967565628448ull, 8732276563646470267ull, 575261803155941090ull}}, {{4621729419923582088ull, 12536247861421705281ull, 17464553127292940535ull, 1150523606311882180ull}}, {{4613694698726626741ull, 2507249572284341056ull, 3492910625458588107ull, 230104721262376436ull}}, {{9227389397453253482ull, 5014499144568682112ull, 6985821250917176214ull, 460209442524752872ull}}, {{8034721196955348ull, 10028998289137364225ull, 13971642501834352428ull, 920418885049505744ull}}, {{7380304573723211716ull, 9384497287311293491ull, 17551723759334511778ull, 184083777009901148ull}}, {{14760609147446423432ull, 322250500913035366ull, 16656703444959471941ull, 368167554019802297ull}}, {{11074474221183295248ull, 644501001826070733ull, 14866662816209392266ull, 736335108039604595ull}}, {{16972290103204300343ull, 3818249015107124469ull, 2973332563241878453ull, 147267021607920919ull}}, {{15497836132699049069ull, 7636498030214248939ull, 5946665126483756906ull, 294534043215841838ull}}, {{12548928191688546521ull, 15272996060428497879ull, 11893330252967513812ull, 589068086431683676ull}}, {{6651112309667541426ull, 12099248047147444143ull, 5339916432225476009ull, 1178136172863367353ull}}, {{1330222461933508286ull, 9798547238913309475ull, 12136029730670826171ull, 235627234572673470ull}}, {{2660444923867016571ull, 1150350404117067334ull, 5825315387632100727ull, 471254469145346941ull}}, {{5320889847734033141ull, 2300700808234134668ull, 11650630775264201454ull, 942508938290693882ull}}, {{15821573228514447921ull, 4149488976388737256ull, 9708823784536660937ull, 188501787658138776ull}}, {{13196402383319344226ull, 8298977952777474513ull, 970903495363770258ull, 377003575316277553ull}}, {{7946060692929136836ull, 16597955905554949027ull, 1941806990727540516ull, 754007150632555106ull}}, {{16346607397553468660ull, 10698288810594810451ull, 4077710212887418426ull, 150801430126511021ull}}, {{14246470721397385704ull, 2949833547480069287ull, 8155420425774836853ull, 301602860253022042ull}}, {{10046197369085219792ull, 5899667094960138575ull, 16310840851549673706ull, 603205720506044084ull}}, {{1645650664460887968ull, 11799334189920277151ull, 14174937629389795796ull, 1206411441012088169ull}}, {{4018478947634087917ull, 2359866837984055430ull, 17592382784845600452ull, 241282288202417633ull}}, {{8036957895268175834ull, 4719733675968110860ull, 16738021495981649288ull, 482564576404835267ull}}, {{16073915790536351667ull, 9439467351936221720ull, 15029298918253746960ull, 965129152809670535ull}}, {{3214783158107270334ull, 1887893470387244344ull, 3005859783650749392ull, 193025830561934107ull}}, {{6429566316214540667ull, 3775786940774488688ull, 6011719567301498784ull, 386051661123868214ull}}, {{12859132632429081334ull, 7551573881548977376ull, 12023439134602997568ull, 772103322247736428ull}}, {{9950524155969636914ull, 5199663591051705798ull, 13472734271146330483ull, 154420664449547285ull}}, {{1454304238229722211ull, 10399327182103411597ull, 8498724468583109350ull, 308841328899094571ull}}, {{2908608476459444421ull, 2351910290497271578ull, 16997448937166218701ull, 617682657798189142ull}}, {{5817216952918888841ull, 4703820580994543156ull, 15548153800622885786ull, 1235365315596378285ull}}, {{8542141020067598415ull, 4630112930940818954ull, 3109630760124577157ull, 247073063119275657ull}}, {{17084282040135196830ull, 9260225861881637908ull, 6219261520249154314ull, 494146126238551314ull}}, {{15721820006560842043ull, 73707650053724201ull, 12438523040498308629ull, 988292252477102628ull}}, {{14212410445537899379ull, 7393439159494565486ull, 13555751052325392695ull, 197658450495420525ull}}, {{9978076817366247141ull, 14786878318989130973ull, 8664758030941233774ull, 395316900990841051ull}}, {{1509409561022942665ull, 11127012564268710331ull, 17329516061882467549ull, 790633801981682102ull}}, {{7680579541688409180ull, 5914751327595652389ull, 10844600841860314156ull, 158126760396336420ull}}, {{15361159083376818359ull, 11829502655191304778ull, 3242457610011076696ull, 316253520792672841ull}}, {{12275574093044085102ull, 5212261236673057941ull, 6484915220022153393ull, 632507041585345682ull}}, {{6104404112378618587ull, 10424522473346115883ull, 12969830440044306786ull, 1265014083170691364ull}}, {{12288927266701454687ull, 2084904494669223176ull, 17351361346976502650ull, 253002816634138272ull}}, {{6131110459693357758ull, 4169808989338446353ull, 16255978620243453684ull, 506005633268276545ull}}, {{12262220919386715516ull, 8339617978676892706ull, 14065213166777355752ull, 1012011266536553091ull}}, {{17209839442844984396ull, 12735970039961109510ull, 6502391448097381473ull, 202402253307310618ull}}, {{15972934811980417176ull, 7025196006212667405ull, 13004782896194762947ull, 404804506614621236ull}}, {{13499125550251282736ull, 14050392012425334811ull, 7562821718679974278ull, 809609013229242473ull}}, {{10078522739534077194ull, 6499427217226977285ull, 12580610787961725825ull, 161921802645848494ull}}, {{1710301405358602771ull, 12998854434453954571ull, 6714477502213900034ull, 323843605291696989ull}}, {{3420602810717205542ull, 7550964795198357526ull, 13428955004427800069ull, 647687210583393978ull}}, {{11752167006369172078ull, 8888890588523492151ull, 13753837445111290983ull, 129537442116678795ull}}, {{5057589939028792540ull, 17777781177046984303ull, 9060930816513030350ull, 259074884233357591ull}}, {{10115179878057585080ull, 17108818280384416990ull, 18121861633026060701ull, 518149768466715182ull}}, {{1783615682405618544ull, 15770892487059282365ull, 17796979192342569787ull, 1036299536933430365ull}}, {{7735420765964944356ull, 10532876126895677119ull, 3559395838468513957ull, 207259907386686073ull}}, {{15470841531929888711ull, 2619008180081802622ull, 7118791676937027915ull, 414519814773372146ull}}, {{12494938990150225805ull, 5238016360163605245ull, 14237583353874055830ull, 829039629546744292ull}}, {{9877685427513865808ull, 8426300901516541695ull, 10226214300258631812ull, 165807925909348858ull}}, {{1308626781318179999ull, 16852601803033083391ull, 2005684526807712008ull, 331615851818697717ull}}, {{2617253562636359998ull, 15258459532356615166ull, 4011369053615424017ull, 663231703637395434ull}}, {{7902148342011092646ull, 6741040721213233356ull, 15559669069690726096ull, 132646340727479086ull}}, {{15804296684022185292ull, 13482081442426466712ull, 12672594065671900576ull, 265292681454958173ull}}, {{13161849294334818968ull, 8517418811143381809ull, 6898444057634249537ull, 530585362909916347ull}}, {{7876954514960086319ull, 17034837622286763619ull, 13796888115268499074ull, 1061170725819832694ull}}, {{8954088532475837911ull, 14475013968683083693ull, 17516772882021341107ull, 212234145163966538ull}}, {{17908177064951675821ull, 10503283863656615770ull, 16586801690333130599ull, 424468290327933077ull}}, {{17369610056193800025ull, 2559823653603679925ull, 14726859306956709583ull, 848936580655866155ull}}, {{14541968455464490975ull, 11580011174946466954ull, 2945371861391341916ull, 169787316131173231ull}}, {{10637192837219430334ull, 4713278276183382293ull, 5890743722782683833ull, 339574632262346462ull}}, {{2827641600729309051ull, 9426556552366764587ull, 11781487445565367666ull, 679149264524692924ull}}, {{7944225949629682457ull, 1885311310473352917ull, 17113692748080714826ull, 135829852904938584ull}}, {{15888451899259364913ull, 3770622620946705834ull, 15780641422451878036ull, 271659705809877169ull}}, {{13330159724809178210ull, 7541245241893411669ull, 13114538771194204456ull, 543319411619754339ull}}, {{8213575375908804804ull, 15082490483786823339ull, 7782333468678857296ull, 1086638823239508679ull}}, {{16400110334149402254ull, 3016498096757364667ull, 16313861952703412752ull, 217327764647901735ull}}, {{14353476594589252892ull, 6032996193514729335ull, 14180979831697273888ull, 434655529295803471ull}}, {{10260209115468954167ull, 12065992387029458671ull, 9915215589684996160ull, 869311058591606943ull}}, {{16809437082061432127ull, 13481244921631622703ull, 13051089562162730201ull, 173862211718321388ull}}, {{15172130090413312637ull, 8515745769553693791ull, 7655435050615908787ull, 347724423436642777ull}}, {{11897516107117073657ull, 17031491539107387583ull, 15310870101231817574ull, 695448846873285554ull}}, {{6068852036165325055ull, 14474344752047208486ull, 17819569279214004807ull, 139089769374657110ull}}, {{12137704072330650109ull, 10501945430384865356ull, 17192394484718457999ull, 278179538749314221ull}}, {{5828664070951748602ull, 2557146787060179097ull, 15938044895727364383ull, 556359077498628443ull}}, {{11657328141903497204ull, 5114293574120358194ull, 13429345717745177150ull, 1112718154997256887ull}}, {{6020814443122609764ull, 8401556344307892285ull, 10064566773032856076ull, 222543630999451377ull}}, {{12041628886245219528ull, 16803112688615784570ull, 1682389472356160536ull, 445087261998902755ull}}, {{5636513698780887440ull, 15159481303522017525ull, 3364778944712321073ull, 890174523997805510ull}}, {{12195349183981908458ull, 14099942704930134474ull, 672955788942464214ull, 178034904799561102ull}}, {{5943954294254265299ull, 9753141336150717333ull, 1345911577884928429ull, 356069809599122204ull}}, {{11887908588508530598ull, 1059538598591883050ull, 2691823155769856859ull, 712139619198244408ull}}, {{9756279347185526766ull, 7590605349202197256ull, 11606411075379702341ull, 142427923839648881ull}}, {{1065814620661501916ull, 15181210698404394513ull, 4766078077049853066ull, 284855847679297763ull}}, {{2131629241323003832ull, 11915677323099237410ull, 9532156154099706133ull, 569711695358595526ull}}, {{4263258482646007664ull, 5384610572488923204ull, 617568234489860651ull, 1139423390717191053ull}}, {{11920698140754932503ull, 15834317373465425933ull, 11191560091123703099ull, 227884678143438210ull}}, {{5394652207800313389ull, 13221890673221300251ull, 3936376108537854583ull, 455769356286876421ull}}, {{10789304415600626778ull, 7997037272733048886ull, 7872752217075709167ull, 911538712573752842ull}}, {{2157860883120125356ull, 16356802713514251070ull, 8953248072898962479ull, 182307742514750568ull}}, {{4315721766240250711ull, 14266861353318950524ull, 17906496145797924959ull, 364615485029501136ull}}, {{8631443532480501422ull, 10086978632928349432ull, 17366248217886298303ull, 729230970059002273ull}}, {{12794335150721831254ull, 5706744541327580209ull, 14541296087802990630ull, 145846194011800454ull}}, {{7141926227734110892ull, 11413489082655160419ull, 10635848101896429644ull, 291692388023600909ull}}, {{14283852455468221784ull, 4380234091600769222ull, 2824952130083307673ull, 583384776047201819ull}}, {{10120960837226891952ull, 8760468183201538445ull, 5649904260166615346ull, 1166769552094403638ull}}, {{16781587426413019684ull, 16509488895607948981ull, 12198027296259054038ull, 233353910418880727ull}}, {{15116430779116487751ull, 14572233717506346347ull, 5949310518808556461ull, 466707820837761455ull}}, {{11786117484523423885ull, 10697723361303141079ull, 11898621037617112923ull, 933415641675522910ull}}, {{9735921126388505424ull, 13207591116486359185ull, 2379724207523422584ull, 186683128335104582ull}}, {{1025098179067459231ull, 7968438159263166755ull, 4759448415046845169ull, 373366256670209164ull}}, {{2050196358134918462ull, 15936876318526333510ull, 9518896830093690338ull, 746732513340418328ull}}, {{4099388086368894016ull, 6876724078447177025ull, 12971825810244469037ull, 149346502668083665ull}}, {{8198776172737788031ull, 13753448156894354050ull, 7496907546779386458ull, 298693005336167331ull}}, {{16397552345475576062ull, 9060152240079156484ull, 14993815093558772917ull, 597386010672334662ull}}, {{14348360617241600508ull, 18120304480158312969ull, 11540886113407994218ull, 1194772021344669325ull}}, {{10248369752932140748ull, 14692107340257393563ull, 2308177222681598843ull, 238954404268933865ull}}, {{2049995432154729880ull, 10937470606805235511ull, 4616354445363197687ull, 477908808537867730ull}}, {{4099990864309459760ull, 3428197139900919406ull, 9232708890726395375ull, 955817617075735460ull}}, {{4509346987603802276ull, 685639427980183881ull, 1846541778145279075ull, 191163523415147092ull}}, {{9018693975207604551ull, 1371278855960367762ull, 3693083556290558150ull, 382327046830294184ull}}, {{18037387950415209101ull, 2742557711920735524ull, 7386167112581116300ull, 764654093660588368ull}}, {{10986175219566862467ull, 11616557986609878074ull, 12545279866741954229ull, 152930818732117673ull}}, {{3525606365424173318ull, 4786371899510204533ull, 6643815659774356843ull, 305861637464235347ull}}, {{7051212730848346635ull, 9572743799020409066ull, 13287631319548713686ull, 611723274928470694ull}}, {{14102425461696693269ull, 698743524331266516ull, 8128518565387875757ull, 1223446549856941389ull}}, {{10199182721823159301ull, 3829097519608163626ull, 16383098972045216444ull, 244689309971388277ull}}, {{1951621369936766985ull, 7658195039216327253ull, 14319453870380881272ull, 489378619942776555ull}}, {{3903242739873533969ull, 15316390078432654506ull, 10192163667052210928ull, 978757239885553111ull}}, {{780648547974706794ull, 17820673274654172194ull, 5727781548152352508ull, 195751447977110622ull}}, {{1561297095949413588ull, 17194602475598792772ull, 11455563096304705017ull, 391502895954221244ull}}, {{3122594191898827175ull, 15942460877488033928ull, 4464382118899858419ull, 783005791908442489ull}}, {{4313867653121675759ull, 14256538619723337755ull, 15650271682747612976ull, 156601158381688497ull}}, {{8627735306243351517ull, 10066333165737123894ull, 12853799291785674337ull, 313202316763376995ull}}, {{17255470612486703033ull, 1685922257764696172ull, 7260854509861797059ull, 626404633526753991ull}}, {{16064197151263854450ull, 3371844515529392345ull, 14521709019723594118ull, 1252809267053507982ull}}, {{3212839430252770890ull, 674368903105878469ull, 10283039433428539470ull, 250561853410701596ull}}, {{6425678860505541780ull, 1348737806211756938ull, 2119334793147527324ull, 501123706821403193ull}}, {{12851357721011083560ull, 2697475612423513876ull, 4238669586295054648ull, 1002247413642806386ull}}, {{2570271544202216712ull, 15296890381452344068ull, 4537082732000921252ull, 200449482728561277ull}}, {{5140543088404433424ull, 12147036689195136520ull, 9074165464001842505ull, 400898965457122554ull}}, {{10281086176808866848ull, 5847329304680721424ull, 18148330928003685011ull, 801797930914245108ull}}, {{13124263679587504340ull, 15926861119903785577ull, 14697712629826467971ull, 160359586182849021ull}}, {{7801783285465457063ull, 13406978166098019539ull, 10948681185943384327ull, 320719172365698043ull}}, {{15603566570930914125ull, 8367212258486487462ull, 3450618298177217039ull, 641438344731396087ull}}, {{14188759758411913795ull, 5362791266439207815ull, 8068821289119264054ull, 128287668946279217ull}}, {{9930775443114275973ull, 10725582532878415631ull, 16137642578238528108ull, 256575337892558434ull}}, {{1414806812519000330ull, 3004420992047279647ull, 13828541082767504601ull, 513150675785116869ull}}, {{2829613625038000660ull, 6008841984094559294ull, 9210338091825457586ull, 1026301351570233739ull}}, {{15323317983975241425ull, 1201768396818911858ull, 16599462877332732810ull, 205260270314046747ull}}, {{12199891894240931234ull, 2403536793637823717ull, 14752181680955914004ull, 410520540628093495ull}}, {{5953039714772310851ull, 4807073587275647435ull, 11057619288202276392ull, 821041081256186991ull}}, {{12258654387180193140ull, 12029461161680860456ull, 5900872672382365601ull, 164208216251237398ull}}, {{6070564700650834664ull, 5612178249652169297ull, 11801745344764731203ull, 328416432502474796ull}}, {{12141129401301669328ull, 11224356499304338594ull, 5156746615819910790ull, 656832865004949593ull}}, {{9806923509744154512ull, 13312917744086598688ull, 12099395767389713127ull, 131366573000989918ull}}, {{1167102945778757408ull, 8179091414463645761ull, 5752047461069874639ull, 262733146001979837ull}}, {{2334205891557514816ull, 16358182828927291522ull, 11504094922139749278ull, 525466292003959674ull}}, {{4668411783115029631ull, 14269621584145031428ull, 4561445770569946941ull, 1050932584007919349ull}}, {{12001728800848736896ull, 2853924316829006285ull, 15669684413081630681ull, 210186516801583869ull}}, {{5556713527987922176ull, 5707848633658012571ull, 12892624752453709746ull, 420373033603167739ull}}, {{11113427055975844351ull, 11415697267316025142ull, 7338505431197867876ull, 840746067206335479ull}}, {{9601383040678989517ull, 2283139453463205028ull, 16225096345207214868ull, 168149213441267095ull}}, {{756022007648427418ull, 4566278906926410057ull, 14003448616704878120ull, 336298426882534191ull}}, {{1512044015296854835ull, 9132557813852820114ull, 9560153159700204624ull, 672596853765068383ull}}, {{3991757617801281291ull, 9205209192254384669ull, 12980077076165771894ull, 134519370753013676ull}}, {{7983515235602562581ull, 18410418384508769338ull, 7513410078621992172ull, 269038741506027353ull}}, {{15967030471205125161ull, 18374092695307987060ull, 15026820157243984345ull, 538077483012054706ull}}, {{13487316868700698705ull, 18301441316906422505ull, 11606896240778417075ull, 1076154966024109413ull}}, {{13765509817965870711ull, 14728334707607015470ull, 13389425692381414384ull, 215230993204821882ull}}, {{9084275562222189806ull, 11009925341504479325ull, 8332107311053277153ull, 430461986409643765ull}}, {{18168551124444379611ull, 3573106609299407034ull, 16664214622106554307ull, 860923972819287530ull}}, {{7323059039630786246ull, 8093318951343702053ull, 3332842924421310861ull, 172184794563857506ull}}, {{14646118079261572491ull, 16186637902687404106ull, 6665685848842621722ull, 344369589127715012ull}}, {{10845492084813593365ull, 13926531731665256597ull, 13331371697685243445ull, 688739178255430024ull}}, {{5858447231704628997ull, 17542701605300692612ull, 17423669598504689981ull, 137747835651086004ull}}, {{11716894463409257993ull, 16638659136891833608ull, 16400595123299828347ull, 275495671302172009ull}}, {{4987044853108964369ull, 14830574200074115601ull, 14354446172890105079ull, 550991342604344019ull}}, {{9974089706217928738ull, 11214404326438679586ull, 10262148272070658543ull, 1101982685208688039ull}}, {{13062864385469316718ull, 9621578494771556563ull, 16809824913381773001ull, 220396537041737607ull}}, {{7678984697229081819ull, 796412915833561511ull, 15172905753053994387ull, 440793074083475215ull}}, {{15357969394458163637ull, 1592825831667123022ull, 11899067432398437158ull, 881586148166950431ull}}, {{6760942693633543051ull, 15075960425301065897ull, 6069162301221597754ull, 176317229633390086ull}}, {{13521885387267086101ull, 11705176776892580178ull, 12138324602443195509ull, 352634459266780172ull}}, {{8597026700824620586ull, 4963609480075608741ull, 5829905131176839403ull, 705268918533560345ull}}, {{16476800599132565410ull, 12060768340240852717ull, 1165981026235367880ull, 141053783706712069ull}}, {{14506857124555579204ull, 5674792606772153819ull, 2331962052470735761ull, 282107567413424138ull}}, {{10566970175401606792ull, 11349585213544307639ull, 4663924104941471522ull, 564215134826848276ull}}, {{2687196277093661968ull, 4252426353379063663ull, 9327848209882943045ull, 1128430269653696552ull}}, {{537439255418732394ull, 8229182900159633379ull, 9244267271460409255ull, 225686053930739310ull}}, {{1074878510837464788ull, 16458365800319266758ull, 41790469211266894ull, 451372107861478621ull}}, {{2149757021674929575ull, 14469987526928981900ull, 83580938422533789ull, 902744215722957242ull}}, {{4119300219076896239ull, 6583346320127706703ull, 7395413817168327404ull, 180548843144591448ull}}, {{8238600438153792477ull, 13166692640255413406ull, 14790827634336654808ull, 361097686289182896ull}}, {{16477200876307584953ull, 7886641206801275196ull, 11134911194963758001ull, 722195372578365793ull}}, {{3295440175261516991ull, 16334723500327896332ull, 13295028683218482569ull, 144439074515673158ull}}, {{6590880350523033981ull, 14222702926946241048ull, 8143313292727413523ull, 288878149031346317ull}}, {{13181760701046067962ull, 9998661780182930480ull, 16286626585454827047ull, 577756298062692634ull}}, {{7916777328382584308ull, 1550579486656309345ull, 14126509097200102479ull, 1155512596125385269ull}}, {{12651401909902247832ull, 11378162341556992838ull, 17582697078407661788ull, 231102519225077053ull}}, {{6856059746094944047ull, 4309580609404434061ull, 16718650083105771961ull, 462205038450154107ull}}, {{13712119492189888093ull, 8619161218808868122ull, 14990556092501992306ull, 924410076900308215ull}}, {{13810470342663708589ull, 5413181058503683947ull, 2998111218500398461ull, 184882015380061643ull}}, {{9174196611617865561ull, 10826362117007367895ull, 5996222437000796922ull, 369764030760123286ull}}, {{18348393223235731121ull, 3205980160305184174ull, 11992444874001593845ull, 739528061520246572ull}}, {{7359027459389056548ull, 8019893661544857481ull, 9777186604284139415ull, 147905612304049314ull}}, {{14718054918778113095ull, 16039787323089714962ull, 1107629134858727214ull, 295811224608098629ull}}, {{10989365763846674573ull, 13632830572469878309ull, 2215258269717454429ull, 591622449216197258ull}}, {{3531987453983797530ull, 8818917071230205003ull, 4430516539434908859ull, 1183244898432394516ull}}, {{11774443935022490476ull, 1763783414246041000ull, 4575452122628892095ull, 236648979686478903ull}}, {{5102143796335429336ull, 3527566828492082001ull, 9150904245257784190ull, 473297959372957806ull}}, {{10204287592670858671ull, 7055133656984164002ull, 18301808490515568380ull, 946595918745915612ull}}, {{16798252777501813027ull, 8789724360880653446ull, 11039059327586934322ull, 189319183749183122ull}}, {{15149761481294074438ull, 17579448721761306893ull, 3631374581464317028ull, 378638367498366245ull}}, {{11852778888878597260ull, 16712153369813062171ull, 7262749162928634057ull, 757276734996732490ull}}, {{13438602222001450422ull, 10721128303446433080ull, 1452549832585726811ull, 151455346999346498ull}}, {{8430460370293349228ull, 2995512533183314545ull, 2905099665171453623ull, 302910693998692996ull}}, {{16860920740586698455ull, 5991025066366629090ull, 5810199330342907246ull, 605821387997385992ull}}, {{15275097407463845293ull, 11982050132733258181ull, 11620398660685814492ull, 1211642775994771984ull}}, {{10433717110976589705ull, 6085758841288561959ull, 17081474991104804191ull, 242328555198954396ull}}, {{2420690148243627794ull, 12171517682577123919ull, 15716205908500056766ull, 484657110397908793ull}}, {{4841380296487255588ull, 5896291291444696222ull, 12985667743290561917ull, 969314220795817587ull}}, {{4657624874039361441ull, 15936653517256580537ull, 9975831178141933029ull, 193862844159163517ull}}, {{9315249748078722882ull, 13426562960803609458ull, 1504918282574314443ull, 387725688318327035ull}}, {{183755422447894147ull, 8406381847897667301ull, 3009836565148628887ull, 775451376636654070ull}}, {{11104797528715309799ull, 9059973999063354106ull, 601967313029725777ull, 155090275327330814ull}}, {{3762850983721067982ull, 18119947998126708213ull, 1203934626059451554ull, 310180550654661628ull}}, {{7525701967442135964ull, 17793151922543864810ull, 2407869252118903109ull, 620361101309323256ull}}, {{15051403934884271928ull, 17139559771378178004ull, 4815738504237806219ull, 1240722202618646512ull}}, {{3010280786976854386ull, 7117260769017545924ull, 8341845330331381890ull, 248144440523729302ull}}, {{6020561573953708771ull, 14234521538035091848ull, 16683690660662763780ull, 496288881047458604ull}}, {{12041123147907417542ull, 10022299002360632080ull, 14920637247615975945ull, 992577762094917209ull}}, {{17165619888549124802ull, 16761855059439767708ull, 17741522708490836481ull, 198515552418983441ull}}, {{15884495703388697987ull, 15076966045169983801ull, 17036301343272121347ull, 397031104837966883ull}}, {{13322247333067844357ull, 11707188016630415987ull, 15625858612834691079ull, 794062209675933767ull}}, {{13732495910839299841ull, 6030786418067993520ull, 10503869352050758862ull, 158812441935186753ull}}, {{9018247747969048066ull, 12061572836135987041ull, 2560994630391966108ull, 317624883870373507ull}}, {{18036495495938096132ull, 5676401598562422466ull, 5121989260783932217ull, 635249767740747014ull}}, {{17626246918166640648ull, 11352803197124844933ull, 10243978521567864434ull, 1270499535481494028ull}}, {{3525249383633328130ull, 9649258268908789633ull, 13116842148539303856ull, 254099907096298805ull}}, {{7050498767266656259ull, 851772464108027650ull, 7786940223369056097ull, 508199814192597611ull}}, {{14100997534533312518ull, 1703544928216055300ull, 15573880446738112194ull, 1016399628385195222ull}}, {{6509548321648572827ull, 4030057800385121383ull, 10493473718831443085ull, 203279925677039044ull}}, {{13019096643297145654ull, 8060115600770242766ull, 2540203363953334554ull, 406559851354078089ull}}, {{7591449212884739692ull, 16120231201540485533ull, 5080406727906669108ull, 813119702708156178ull}}, {{16275685101544589232ull, 6913395055050007429ull, 12084127789807064791ull, 162623940541631235ull}}, {{14104626129379626847ull, 13826790110100014859ull, 5721511505904577966ull, 325247881083262471ull}}, {{9762508185049702077ull, 9206836146490478103ull, 11443023011809155933ull, 650495762166524942ull}}, {{13020548081235671385ull, 1841367229298095620ull, 9667302231845651833ull, 130099152433304988ull}}, {{7594352088761791154ull, 3682734458596191241ull, 887860389981752050ull, 260198304866609977ull}}, {{15188704177523582308ull, 7365468917192382482ull, 1775720779963504100ull, 520396609733219954ull}}, {{11930664281337612999ull, 14730937834384764965ull, 3551441559927008200ull, 1040793219466439908ull}}, {{13454179300493253570ull, 14014234011102683962ull, 11778334756211132609ull, 208158643893287981ull}}, {{8461614527276955523ull, 9581723948495816309ull, 5109925438712713603ull, 416317287786575963ull}}, {{16923229054553911046ull, 716703823282081002ull, 10219850877425427207ull, 832634575573151926ull}}, {{3384645810910782210ull, 11211387208882147170ull, 5733318990226995764ull, 166526915114630385ull}}, {{6769291621821564419ull, 3976030344054742724ull, 11466637980453991529ull, 333053830229260770ull}}, {{13538583243643128837ull, 7952060688109485448ull, 4486531887198431442ull, 666107660458521541ull}}, {{6397065463470536091ull, 12658458581847628059ull, 4586655192181596611ull, 133221532091704308ull}}, {{12794130926941072181ull, 6870173089985704502ull, 9173310384363193223ull, 266443064183408616ull}} }; static const BID_UINT128 bid_coefflimits_bid64[] = { {{10000000000000000ull, 0ull}}, {{2000000000000000ull, 0ull}}, {{400000000000000ull, 0ull}}, {{80000000000000ull, 0ull}}, {{16000000000000ull, 0ull}}, {{3200000000000ull, 0ull}}, {{640000000000ull, 0ull}}, {{128000000000ull, 0ull}}, {{25600000000ull, 0ull}}, {{5120000000ull, 0ull}}, {{1024000000ull, 0ull}}, {{204800000ull, 0ull}}, {{40960000ull, 0ull}}, {{8192000ull, 0ull}}, {{1638400ull, 0ull}}, {{327680ull, 0ull}}, {{65536ull, 0ull}}, {{13107ull, 0ull}}, {{2621ull, 0ull}}, {{524ull, 0ull}}, {{104ull, 0ull}}, {{20ull, 0ull}}, {{4ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}}, {{0ull, 0ull}} }; // ********************************************************************** static const BID_UINT128 bid_coefflimits_bid128[] = { {{4003012203950112768ull, 542101086242752ull}}, {{8179300070273843200ull, 108420217248550ull}}, {{1635860014054768640ull, 21684043449710ull}}, {{327172002810953728ull, 4336808689942ull}}, {{7444132030046011392ull, 867361737988ull}}, {{12556872850234933248ull, 173472347597ull}}, {{9890072199530807296ull, 34694469519ull}}, {{16735409698873802752ull, 6938893903ull}}, {{14415128384000491520ull, 1387778780ull}}, {{2883025676800098304ull, 277555756ull}}, {{4265953950101929984ull, 55511151ull}}, {{4542539604762296320ull, 11102230ull}}, {{908507920952459264ull, 2220446ull}}, {{3871050398932402176ull, 444089ull}}, {{15531605338754121728ull, 88817ull}}, {{10485018697234644992ull, 17763ull}}, {{13165050183672659968ull, 3552ull}}, {{10011707666218352640ull, 710ull}}, {{2002341533243670528ull, 142ull}}, {{7779165936132554752ull, 28ull}}, {{12623879631452241920ull, 5ull}}, {{2524775926290448384ull, 1ull}}, {{4194304000000000000ull, 0ull}}, {{838860800000000000ull, 0ull}}, {{167772160000000000ull, 0ull}}, {{33554432000000000ull, 0ull}}, {{6710886400000000ull, 0ull}}, {{1342177280000000ull, 0ull}}, {{268435456000000ull, 0ull}}, {{53687091200000ull, 0ull}}, {{10737418240000ull, 0ull}}, {{2147483648000ull, 0ull}}, {{429496729600ull, 0ull}}, {{85899345920ull, 0ull}}, {{17179869184ull, 0ull}}, {{3435973836ull, 0ull}}, {{687194767ull, 0ull}}, {{137438953ull, 0ull}}, {{27487790ull, 0ull}}, {{5497558ull, 0ull}}, {{1099511ull, 0ull}}, {{219902ull, 0ull}}, {{43980ull, 0ull}}, {{8796ull, 0ull}}, {{1759ull, 0ull}}, {{351ull, 0ull}}, {{70ull, 0ull}}, {{14ull, 0ull}}, {{2ull, 0ull}} }; // These are the different, bipartite, tables for conversion to bid128 // Using the same approach, the tables become extremely large // And things are more amenable here since there's never overflow/underflow static const BID_UINT256 bid_outertable_sig[] = { {{16710528681477587410ull, 1427578414467097172ull, 17470362193306814444ull, 17633471421292828081ull}}, {{15880413049339289368ull, 3169162604521042544ull, 12421848348224877000ull, 10175591536883283100ull}}, {{728324709502741634ull, 5487234822932806241ull, 14277366029702694882ull, 11743877385420605756ull}}, {{5270439690693945016ull, 5335305964155802506ull, 4731239033579481048ull, 13553871098685738146ull}}, {{15770926697301461842ull, 17478494563481727979ull, 12172666691698088779ull, 15642825255298684824ull}}, {{6706015564063194464ull, 9524484409513358023ull, 3584925281718916951ull, 18053733887991431306ull}}, {{11970480524618434228ull, 11405570099769256704ull, 15462553542164535233ull, 10418108684938663938ull}}, {{6786207772287397676ull, 2319456072422691258ull, 3306628541457879036ull, 12023771840725819358ull}}, {{11981052113010165492ull, 3504057943690712651ull, 1876153621163772099ull, 13876903538819465956ull}}, {{9393164661428669080ull, 12786250932199773041ull, 1469280998340568779ull, 16015644206874417279ull}}, {{16924685242153318850ull, 18017830257179898541ull, 8443357802200517361ull, 9242006282008467740ull}}, {{10964968671057563176ull, 5039440430669711539ull, 5426243050445487622ull, 10666405798403203685ull}}, {{10955754838860298353ull, 7697974614691938479ull, 5802604364043796934ull, 12310337083160321132ull}}, {{2020816881108765590ull, 11827301330378587775ull, 11428107909474365520ull, 14207634883319258514ull}}, {{17088069107880998350ull, 4283872614129133981ull, 3596834484036483711ull, 16397348635874181367ull}}, {{17878879927905357932ull, 16765016545576715295ull, 16689816215723394984ull, 9462273083962776199ull}}, {{13121733289080687293ull, 18283685101712419716ull, 16276586284347626380ull, 10920620632484725600ull}}, {{17814811358648632259ull, 13245640156276305425ull, 16363965810173909683ull, 12603732099085151178ull}}, {{4756697993914874888ull, 11508234184157253656ull, 5137266535116401279ull, 14546248621894116172ull}}, {{5318236458935323174ull, 6543830884414701181ull, 6453355338781772809ull, 16788150311867950084ull}}, {{6485710970464102310ull, 9658720758000782538ull, 1405691438411884535ull, 9687789553853107178ull}}, {{16668567668910748869ull, 7353216905500064137ull, 16398637311140236340ull, 11180894225541718927ull}}, {{10250898639443956700ull, 17209112682100433509ull, 10404161081088486903ull, 12904119664018836844ull}}, {{8190593687966138954ull, 9395575747272723417ull, 5270639644724875979ull, 14892932617404296676ull}}, {{16096765186944088526ull, 5812137315202163815ull, 13827109944906121794ull, 17188266051577202911ull}}, {{13125058493821651226ull, 13878096157524874998ull, 7819283672493662452ull, 9918680808189048078ull}}, {{10784977039313888136ull, 7095114120404217728ull, 5980679097159643429ull, 11447370977331402726ull}}, {{18074025829186132275ull, 1141984379626550674ull, 7557580538320593620ull, 13211666432945230258ull}}, {{884127375074722974ull, 5630658839879210216ull, 8888788495242174599ull, 15247879210087606793ull}}, {{14794677677148287412ull, 15991859528909753139ull, 2255166953101703543ull, 17597917839164816062ull}}, {{11781503818372409883ull, 16487377189598053250ull, 1614766483381505408ull, 10155074945409931597ull}}, {{13901203812957478350ull, 17671725616207330354ull, 9774501520532043416ull, 11720198729122693309ull}}, {{2841277750318224700ull, 62614824260888948ull, 7875289095414864909ull, 13526543032773672749ull}}, {{4177215723684349918ull, 5549883551398310595ull, 6548711429670794128ull, 15611285324269742443ull}}, {{10113135653152274419ull, 1238174514434849746ull, 15010187426055142985ull, 18017332949391848572ull}}, {{15332868447221136909ull, 16659234357027498643ull, 8156814090647504084ull, 10397103116953834012ull}}, {{15245187402216469644ull, 12129929088655149192ull, 9861651730211963150ull, 11999528845718521943ull}}, {{11169863271521019024ull, 11690833164181629132ull, 18055231442152805128ull, 13848924157002783033ull}}, {{5681139181384005971ull, 16315598095635316730ull, 12429006944274865118ull, 15983352577617880224ull}}, {{0ull, 0ull, 0ull, 9223372036854775808ull}}, {{847738094735128551ull, 159020156881263929ull, 14298703881791668535ull, 10644899600020376799ull}}, {{12571812103339493257ull, 9592188640606484874ull, 15977522551232326327ull, 12285516299433008781ull}}, {{11255846670375652269ull, 16219642565822741785ull, 1164180458167399492ull, 14178988662640388631ull}}, {{4768530159026621925ull, 11269558331910606010ull, 14728279675391465720ull, 16364287392998134214ull}}, {{10435171899994305314ull, 3358688235984080491ull, 10873005112892106269ull, 9443194724678278428ull}}, {{9001934648837042518ull, 12742858465034581069ull, 7821978264675184102ull, 10898601872067700364ull}}, {{17621267265258286727ull, 4697230115438671198ull, 9730745556445007669ull, 12578319756070083561ull}}, {{15489206033570711069ull, 5939008219696634639ull, 7281543418588385486ull, 14516919669433371671ull}}, {{5582382164278045428ull, 1021128504191590019ull, 15859662269683349667ull, 16754301112998936544ull}}, {{13306060077138970688ull, 17077419079040409017ull, 602300193611639289ull, 9668256495766433483ull}}, {{16144900726383728979ull, 6332437060439625781ull, 3394061071468721991ull, 11158350687084940805ull}}, {{841527738022137013ull, 8576187517129556015ull, 4780478900157118356ull, 12878101662951253988ull}}, {{6209518431268106959ull, 6563228687006195825ull, 8680557599339190037ull, 14862904661462481806ull}}, {{13777918056850427098ull, 13980713634323581067ull, 3260730320187665275ull, 17153610117183879308ull}}, {{14026398967643035423ull, 16044002814696042637ull, 13563648246219923183ull, 9898682214361989196ull}}, {{8580849201736980837ull, 7652064075251385167ull, 12055336643618066002ull, 11424290153682525668ull}}, {{7703450277136593061ull, 30939122015382097ull, 1733744904199768989ull, 13185028339041359606ull}}, {{16645858086931268484ull, 268706294728574543ull, 4562366333509913804ull, 15217135591158481007ull}}, {{1535817262145462730ull, 16249574698204674087ull, 1726174694286833848ull, 17562435942139069664ull}}, {{1327779613951528273ull, 12607890553358950732ull, 6773080245737622022ull, 10134599720625107110ull}}, {{10146669700226523625ull, 6816618733538609533ull, 17338427607494047961ull, 11696567815043613180ull}}, {{1218646606393179524ull, 8053984438814192242ull, 5512554737593155320ull, 13499270067222312908ull}}, {{8529816360522570005ull, 2898610325645650649ull, 12799329154556421864ull, 15579808985797328396ull}}, {{8976626101186384018ull, 17306366585957786234ull, 18289272351796647404ull, 17981005404381600394ull}}, {{13259258789938866699ull, 3853966764738768487ull, 3962898110873089456ull, 10376139901559067117ull}}, {{899097863387258947ull, 18205835716688941338ull, 5828614502416977816ull, 11975334730781032005ull}}, {{6805696657844643720ull, 11269663690239600300ull, 15713752492130876427ull, 13821001188766021149ull}}, {{1390669429605106863ull, 9874674503958832077ull, 10784451562526769943ull, 15951126056533488631ull}}, {{5704986635434998471ull, 13359511205918707297ull, 13484363347568202582ull, 18409550726197325520ull}}, {{8031416311578790746ull, 15203770801091158414ull, 10108131133879485063ull, 10623436763626360685ull}}, {{14540970352057967818ull, 10823414366732926995ull, 16152175176069010361ull, 12260745560745135745ull}}, {{15950896424073439808ull, 7311065895593189991ull, 14504991862333000338ull, 14150400200058902426ull}}, {{5978819348613013533ull, 5596367464999577452ull, 9804643584580705193ull, 16331292810031855499ull}}, {{8586457898440847299ull, 6018330550275346810ull, 7956755163056284140ull, 9424154832238877876ull}}, {{1114429888821394320ull, 1760611426277998851ull, 9839409379426382903ull, 10876627507095459665ull}}, {{7554605751361075608ull, 6504275622057553570ull, 9148491728899045148ull, 12552958650829068784ull}}, {{9208049516541304162ull, 15518058123431536615ull, 17563500997894963674ull, 14487649851631658771ull}}, {{1484107481346855224ull, 16657394431011607502ull, 12009304572091620947ull, 16720520162760224108ull}}, {{14325586681310127114ull, 11250726580617083666ull, 2403442209646777766ull, 9648762821313776241ull}}, {{14963893077912294692ull, 3450059817568720983ull, 15313875826588494017ull, 11135852602159508258ull}} }; static const BID_UINT256 bid_innertable_sig[] = { {{1014026100135492416ull, 3035406636157676337ull, 4549648098962661924ull, 12141680576410806693ull}}, {{5879218643596753424ull, 3794258295197095421ull, 10298746142130715309ull, 15177100720513508366ull}}, {{5980354661461664842ull, 4677254443711878590ull, 1825030320404309164ull, 9485687950320942729ull}}, {{16698815363681856860ull, 5846568054639848237ull, 6892973918932774359ull, 11857109937901178411ull}}, {{7038461149320157363ull, 2696524049872422393ull, 4004531380238580045ull, 14821387422376473014ull}}, {{15928253264393568112ull, 3991170540383957947ull, 16337890167931276240ull, 9263367138985295633ull}}, {{15298630562064572236ull, 4988963175479947434ull, 6587304654631931588ull, 11579208923731619542ull}}, {{9899916165725939487ull, 6236203969349934293ull, 17457502855144690293ull, 14474011154664524427ull}}, {{16986581225584812263ull, 12406940980114805770ull, 17210192550503474962ull, 18092513943330655534ull}}, {{15228299284417895569ull, 12366024130999141510ull, 6144684325637283947ull, 11307821214581659709ull}}, {{9812002068667593653ull, 10845844145321538984ull, 12292541425473992838ull, 14134776518227074636ull}}, {{12265002585834492066ull, 4333933144797147922ull, 15365676781842491048ull, 17668470647783843295ull}}, {{12277312634573945445ull, 2708708215498217451ull, 16521077016292638761ull, 11042794154864902059ull}}, {{10734954774790043902ull, 7997571287800159718ull, 16039660251938410547ull, 13803492693581127574ull}}, {{4195321431632779070ull, 5385278091322811744ull, 10826203278068237376ull, 17254365866976409468ull}}, {{2622075894770486919ull, 3365798807076757340ull, 15989749085647424168ull, 10783978666860255917ull}}, {{3277594868463108648ull, 4207248508845946675ull, 6152128301777116498ull, 13479973333575319897ull}}, {{17932051640861049522ull, 14482432672912209151ull, 12301846395648783526ull, 16849966666969149871ull}}, {{18125061303179237808ull, 4439834402142742815ull, 14606183024921571560ull, 10531229166855718669ull}}, {{18044640610546659355ull, 5549793002678428519ull, 4422670725869800738ull, 13164036458569648337ull}}, {{17944114744755936290ull, 16160613290202811457ull, 10140024425764638826ull, 16455045573212060421ull}}, {{4297542687831378326ull, 14712069324804145065ull, 8643358275316593218ull, 10284403483257537763ull}}, {{9983614378216610811ull, 9166714619150405523ull, 6192511825718353619ull, 12855504354071922204ull}}, {{7867831954343375609ull, 6846707255510619000ull, 7740639782147942024ull, 16069380442589902755ull}}, {{4917394971464609756ull, 4279192034694136875ull, 2532056854628769813ull, 10043362776618689222ull}}, {{1535057695903374291ull, 9960676061795058998ull, 12388443105140738074ull, 12554203470773361527ull}}, {{11142194156733993672ull, 3227473040389047939ull, 10873867862998534689ull, 15692754338466701909ull}}, {{4658028338745052093ull, 13546385696311624722ull, 9102010423587778132ull, 9807971461541688693ull}}, {{15045907460286090924ull, 16932982120389530902ull, 15989199047912110569ull, 12259964326927110866ull}}, {{9584012288502837847ull, 7331169595204749916ull, 10763126773035362404ull, 15324955408658888583ull}}, {{15213379717169049462ull, 13805353033857744505ull, 13644483260788183358ull, 9578097130411805364ull}}, {{5181666591179148116ull, 8033319255467404824ull, 17055604075985229198ull, 11972621413014756705ull}}, {{6477083238973935145ull, 818277032479480222ull, 7484447039699372786ull, 14965776766268445882ull}}, {{17883235079640873178ull, 5123109163727063042ull, 9289465418239495895ull, 9353610478917778676ull}}, {{13130671812696315664ull, 1792200436231440899ull, 11611831772799369869ull, 11692013098647223345ull}}, {{11801653747443006676ull, 6851936563716689028ull, 679731660717048624ull, 14615016373309029182ull}}, {{14752067184303758345ull, 8564920704645861285ull, 10073036612751086588ull, 18268770466636286477ull}}, {{11525884999403542918ull, 14576447477258439111ull, 8601490892183123069ull, 11417981541647679048ull}}, {{9795670230827040743ull, 4385501291290885177ull, 10751863615228903837ull, 14272476927059598810ull}}, {{16856273806961188833ull, 10093562632540994375ull, 4216457482181353988ull, 17840596158824498513ull}}, {{17452700156991824877ull, 15531848682192897292ull, 14164500972431816002ull, 11150372599265311570ull}}, {{3369131122530229480ull, 10191438815886345808ull, 8482254178684994195ull, 13937965749081639463ull}}, {{4211413903162786849ull, 8127612501430544356ull, 5991131704928854840ull, 17422457186352049329ull}}, {{11855505726331517589ull, 5079757813394090222ull, 15273672361649004035ull, 10889035741470030830ull}}, {{5596010121059621178ull, 1738011248315224874ull, 9868718415206479236ull, 13611294676837538538ull}}, {{16218384688179302281ull, 2172514060394031092ull, 3112525982153323237ull, 17014118346046923173ull}}, {{913118393257288118ull, 3663664296959963385ull, 4251171748059520975ull, 10633823966279326983ull}}, {{5753084009998998051ull, 18414638426482117943ull, 702278666647013314ull, 13292279957849158729ull}}, {{2579668994071359659ull, 13794925996247871621ull, 5489534351736154547ull, 16615349947311448411ull}}, {{3918136130508293739ull, 6315985738441225811ull, 1125115960621402640ull, 10384593717069655257ull}}, {{285984144707979270ull, 7894982173051532264ull, 6018080969204141204ull, 12980742146337069071ull}}, {{357480180884974087ull, 9868727716314415330ull, 2910915193077788601ull, 16225927682921336339ull}}, {{4835111131480496709ull, 17697169868764979341ull, 17960223060169475539ull, 10141204801825835211ull}}, {{10655574932778008790ull, 17509776317528836272ull, 17838592806784456520ull, 12676506002282294014ull}}, {{13319468665972510987ull, 3440476323201493724ull, 13074868971625794843ull, 15845632502852867518ull}}, {{17548039953087595175ull, 18291198766496791241ull, 3560107088838733872ull, 9903520314283042199ull}}, {{8099991886077330257ull, 4417254384411437436ull, 18285191916330581053ull, 12379400392853802748ull}}, {{10124989857596662821ull, 10133253998941684699ull, 4409745821703674700ull, 15474250491067253436ull}}, {{4022275651784220311ull, 15556655786193328745ull, 11979463175419572495ull, 9671406556917033397ull}}, {{9639530583157663293ull, 14834133714314273027ull, 1139270913992301907ull, 12089258196146291747ull}}, {{7437727210519691212ull, 13930981124465453380ull, 15259146697772541096ull, 15111572745182864683ull}}, {{13871951543429582816ull, 8706863202790908362ull, 7231123676894144233ull, 9444732965739290427ull}}, {{8116567392432202712ull, 15495265021916023357ull, 4427218577690292387ull, 11805916207174113034ull}}, {{14757395258967641293ull, 14757395258967641292ull, 14757395258967641292ull, 14757395258967641292ull}}, {{0ull, 0ull, 0ull, 9223372036854775808ull}}, {{0ull, 0ull, 0ull, 11529215046068469760ull}}, {{0ull, 0ull, 0ull, 14411518807585587200ull}}, {{0ull, 0ull, 0ull, 18014398509481984000ull}}, {{0ull, 0ull, 0ull, 11258999068426240000ull}}, {{0ull, 0ull, 0ull, 14073748835532800000ull}}, {{0ull, 0ull, 0ull, 17592186044416000000ull}}, {{0ull, 0ull, 0ull, 10995116277760000000ull}}, {{0ull, 0ull, 0ull, 13743895347200000000ull}}, {{0ull, 0ull, 0ull, 17179869184000000000ull}}, {{0ull, 0ull, 0ull, 10737418240000000000ull}}, {{0ull, 0ull, 0ull, 13421772800000000000ull}}, {{0ull, 0ull, 0ull, 16777216000000000000ull}}, {{0ull, 0ull, 0ull, 10485760000000000000ull}}, {{0ull, 0ull, 0ull, 13107200000000000000ull}}, {{0ull, 0ull, 0ull, 16384000000000000000ull}}, {{0ull, 0ull, 0ull, 10240000000000000000ull}}, {{0ull, 0ull, 0ull, 12800000000000000000ull}}, {{0ull, 0ull, 0ull, 16000000000000000000ull}}, {{0ull, 0ull, 0ull, 10000000000000000000ull}}, {{0ull, 0ull, 0ull, 12500000000000000000ull}}, {{0ull, 0ull, 0ull, 15625000000000000000ull}}, {{0ull, 0ull, 0ull, 9765625000000000000ull}}, {{0ull, 0ull, 0ull, 12207031250000000000ull}}, {{0ull, 0ull, 0ull, 15258789062500000000ull}}, {{0ull, 0ull, 0ull, 9536743164062500000ull}}, {{0ull, 0ull, 0ull, 11920928955078125000ull}}, {{0ull, 0ull, 0ull, 14901161193847656250ull}}, {{0ull, 0ull, 4611686018427387904ull, 9313225746154785156ull}}, {{0ull, 0ull, 5764607523034234880ull, 11641532182693481445ull}}, {{0ull, 0ull, 11817445422220181504ull, 14551915228366851806ull}}, {{0ull, 0ull, 5548434740920451072ull, 18189894035458564758ull}}, {{0ull, 0ull, 17302829768357445632ull, 11368683772161602973ull}}, {{0ull, 0ull, 7793479155164643328ull, 14210854715202003717ull}}, {{0ull, 0ull, 14353534962383192064ull, 17763568394002504646ull}}, {{0ull, 0ull, 4359273333062107136ull, 11102230246251565404ull}}, {{0ull, 0ull, 5449091666327633920ull, 13877787807814456755ull}}, {{0ull, 0ull, 2199678564482154496ull, 17347234759768070944ull}}, {{0ull, 0ull, 1374799102801346560ull, 10842021724855044340ull}}, {{0ull, 0ull, 1718498878501683200ull, 13552527156068805425ull}}, {{0ull, 0ull, 6759809616554491904ull, 16940658945086006781ull}}, {{0ull, 0ull, 6530724019560251392ull, 10587911840678754238ull}}, {{0ull, 0ull, 17386777061305090048ull, 13234889800848442797ull}}, {{0ull, 0ull, 7898413271349198848ull, 16543612251060553497ull}}, {{0ull, 0ull, 16465723340661719040ull, 10339757656912845935ull}}, {{0ull, 0ull, 15970468157399760896ull, 12924697071141057419ull}}, {{0ull, 0ull, 15351399178322313216ull, 16155871338926321774ull}}, {{0ull, 0ull, 4982938468024057856ull, 10097419586828951109ull}}, {{0ull, 0ull, 10840359103457460224ull, 12621774483536188886ull}}, {{0ull, 0ull, 4327076842467049472ull, 15777218104420236108ull}}, {{0ull, 0ull, 11927795063396681728ull, 9860761315262647567ull}}, {{0ull, 0ull, 10298057810818464256ull, 12325951644078309459ull}}, {{0ull, 0ull, 8260886245095692416ull, 15407439555097886824ull}}, {{0ull, 0ull, 5163053903184807760ull, 9629649721936179265ull}}, {{0ull, 0ull, 11065503397408397604ull, 12037062152420224081ull}}, {{0ull, 0ull, 18443565265187884909ull, 15046327690525280101ull}}, {{0ull, 2305843009213693952ull, 13833071299956122020ull, 9403954806578300063ull}}, {{0ull, 2882303761517117440ull, 12679653106517764621ull, 11754943508222875079ull}}, {{0ull, 8214565720323784704ull, 11237880364719817872ull, 14693679385278593849ull}}, {{0ull, 10268207150404730880ull, 212292400617608628ull, 18367099231598242312ull}}, {{0ull, 15641001505857732608ull, 132682750386005392ull, 11479437019748901445ull}}, {{0ull, 1104507808612614144ull, 4777539456409894645ull, 14349296274686126806ull}}, {{0ull, 5992320779193155584ull, 15195296357367144114ull, 17936620343357658507ull}}, {{0ull, 8356886505423110144ull, 7191217214140771119ull, 11210387714598536567ull}} }; static const int bid_outertable_exp[] = { -16839, -16413, -15988, -15563, -15138, -14713, -14287, -13862, -13437, -13012, -12586, -12161, -11736, -11311, -10886, -10460, -10035, -9610, -9185, -8760, -8334, -7909, -7484, -7059, -6634, -6208, -5783, -5358, -4933, -4508, -4082, -3657, -3232, -2807, -2382, -1956, -1531, -1106, -681, -255, 170, 595, 1020, 1445, 1871, 2296, 2721, 3146, 3571, 3997, 4422, 4847, 5272, 5697, 6123, 6548, 6973, 7398, 7823, 8249, 8674, 9099, 9524, 9949, 10375, 10800, 11225, 11650, 12075, 12501, 12926, 13351, 13776, 14202, 14627, 15052, 15477, 15902, 16328, 16753, }; static const int bid_innertable_exp[] = { -468, -465, -461, -458, -455, -451, -448, -445, -442, -438, -435, -432, -428, -425, -422, -418, -415, -412, -408, -405, -402, -398, -395, -392, -388, -385, -382, -378, -375, -372, -368, -365, -362, -358, -355, -352, -349, -345, -342, -339, -335, -332, -329, -325, -322, -319, -315, -312, -309, -305, -302, -299, -295, -292, -289, -285, -282, -279, -275, -272, -269, -265, -262, -259, -255, -252, -249, -246, -242, -239, -236, -232, -229, -226, -222, -219, -216, -212, -209, -206, -202, -199, -196, -192, -189, -186, -182, -179, -176, -172, -169, -166, -162, -159, -156, -153, -149, -146, -143, -139, -136, -133, -129, -126, -123, -119, -116, -113, -109, -106, -103, -99, -96, -93, -89, -86, -83, -79, -76, -73, -69, -66, -63, -60, -56, -53, -50, -46, }; // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void bid32_to_binary32 (float *pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(float, bid32_to_binary32, 32) float bid32_to_binary32 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 c_prov; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif unpack_bid32 (x, s, e, k, (c.w[1]), return_binary32_zero (s), return_binary32_inf (s), return_binary32_nan); // Correct to 2^112 <= c < 2^113 with corresponding exponent adding 113-24=89 // Thus a shift of 25 given that we've already upacked in c.w[1] c.w[1] = c.w[1] << 25; c.w[0] = 0; k = k + 89; // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is e >= ceil(128 * log_10(2)) = 39 if (e >= 39) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary32_ovf (s); } // Also check for "trivial" underflow, when 10^e * 2^113 <= 2^emin * 1/4, // so test e <= floor((emin - 115) * log_10(2)) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -80) e = -80; // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary32 + 80)[e]; e_out = (bid_exponents_binary32 + 80)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (c.w[1] <= m_min.w[1]) { r = (bid_multipliers1_binary32 + 80)[e]; } else { r = (bid_multipliers2_binary32 + 80)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_64x256_to_320(z, c.w[1], r); z.w[5]=z.w[4]; z.w[4]=z.w[3]; z.w[3]=z.w[2]; z.w[2]=z.w[1]; z.w[1]=z.w[0]; z.w[0]=0; // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further if (e_out < 1) { int d; d = 1 - e_out; if (d > 26) d = 26; e_out = 1; srl256_short (z.w[5], z.w[4], z.w[3], z.w[2], d); } c_prov = z.w[5]; // Round using round-sticky words // If we spill into the next binade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == (1ull << 24)) { c_prov = 1ull << 23; e_out = e_out + 1; } } // Check for overflow if (e_out >= 255) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary32_ovf (s); } // Modify exponent for a tiny result, otherwise lop the implicit bit if (c_prov < (1ull << 23)) e_out = 0; else c_prov = c_prov & ((1ull << 23) - 1); // Set the inexact and underflow flag as appropriate (tiny after rounding) if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (e_out == 0) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } // Package up the result as a binary floating-point number return_binary32 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void bid64_to_binary32 (float *pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(float, bid64_to_binary32, 64) float bid64_to_binary32 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 c_prov; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif unpack_bid64 (x, s, e, k, (c.w[0]), return_binary32_zero (s), return_binary32_inf (s), return_binary32_nan); c.w[1] = 0; // Correct to 2^112 <= c < 2^113 with corresponding exponent adding 113-54=59 sll128_short (c.w[1], c.w[0], 59); k = k + 59; // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is e >= ceil(128 * log_10(2)) = 39 if (e >= 39) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary32_ovf (s); } // Also check for "trivial" underflow, when 10^e * 2^113 <= 2^emin * 1/4, // so test e <= floor((emin - 115) * log_10(2)) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -80) e = -80; // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary32 + 80)[e]; e_out = (bid_exponents_binary32 + 80)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_binary32 + 80)[e]; } else { r = (bid_multipliers2_binary32 + 80)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further if (e_out < 1) { int d; d = 1 - e_out; if (d > 26) d = 26; e_out = 1; srl256_short (z.w[5], z.w[4], z.w[3], z.w[2], d); } c_prov = z.w[5]; // Round using round-sticky words // If we spill into the next binade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == (1ull << 24)) { c_prov = 1ull << 23; e_out = e_out + 1; } #if BINARY_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov == (1ull << 23)) && (e_out == 1)) { if ((((rnd_mode & 3) == 0) && (z.w[4] < (3ull << 62))) || ((rnd_mode + (s & 1) == 2) && (z.w[4] < (1ull << 63)))) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } // Check for overflow if (e_out >= 255) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary32_ovf (s); } // Modify exponent for a tiny result, otherwise lop the implicit bit if (c_prov < (1ull << 23)) e_out = 0; else c_prov = c_prov & ((1ull << 23) - 1); // Set the inexact and underflow flag as appropriate if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (e_out == 0) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } // Package up the result as a binary floating-point number return_binary32 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void bid128_to_binary32 (float *pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(float, bid128_to_binary32, 128) float bid128_to_binary32 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 c_prov; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif unpack_bid128 (x, s, e, k, c, return_binary32_zero (s), return_binary32_inf (s), return_binary32_nan); // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is e >= ceil(128 * log_10(2)) = 39 if (e >= 39) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary32_ovf (s); } // Also check for "trivial" underflow, when 10^e * 2^113 <= 2^emin * 1/4, // so test e <= floor((emin - 115) * log_10(2)) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -80) e = -80; // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary32 + 80)[e]; e_out = (bid_exponents_binary32 + 80)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_binary32 + 80)[e]; } else { r = (bid_multipliers2_binary32 + 80)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further if (e_out < 1) { int d; d = 1 - e_out; if (d > 26) d = 26; e_out = 1; srl256_short (z.w[5], z.w[4], z.w[3], z.w[2], d); } c_prov = z.w[5]; // Round using round-sticky words // If we spill into the next binade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == (1ull << 24)) { c_prov = 1ull << 23; e_out = e_out + 1; } #if BINARY_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov == (1ull << 23)) && (e_out == 1)) { if ((((rnd_mode & 3) == 0) && (z.w[4] < (3ull << 62))) || ((rnd_mode + (s & 1) == 2) && (z.w[4] < (1ull << 63)))) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } // Check for overflow if (e_out >= 255) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary32_ovf (s); } // Modify exponent for a tiny result, otherwise lop the implicit bit if (c_prov < (1ull << 23)) e_out = 0; else c_prov = c_prov & ((1ull << 23) - 1); // Set the inexact and underflow flag as appropriate if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (e_out == 0) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } // Package up the result as a binary floating-point number return_binary32 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void bid32_to_binary64 (double *pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #else RES_WRAPFN_DFP(double, bid32_to_binary64, 32) double bid32_to_binary64 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 c_prov; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; unpack_bid32 (x, s, e, k, (c.w[1]), return_binary64_zero (s), return_binary64_inf (s), return_binary64_nan); // Correct to 2^112 <= c < 2^113 with corresponding exponent adding 113-24=89 // In fact shift a further 6 places ready for reciprocal multiplication // Thus (113-24)+6=95, a shift of 31 given that we've already upacked in c.w[1] c.w[1] = c.w[1] << 31; c.w[0] = 0; k = k + 89; // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is e >= ceil(1024 * log_10(2)) = ceil(308.25) = 309 // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary64 + 358)[e]; e_out = (bid_exponents_binary64 + 358)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (c.w[1] < m_min.w[1]) { r = (bid_multipliers1_binary64 + 358)[e]; } else { r = (bid_multipliers2_binary64 + 358)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_64x256_to_320(z, c.w[1], r); z.w[5]=z.w[4]; z.w[4]=z.w[3]; z.w[3]=z.w[2]; z.w[2]=z.w[1]; z.w[1]=z.w[0]; z.w[0]=0; // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further c_prov = z.w[5]; // Round using round-sticky words // If we spill into the next binade, correct if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; } c_prov = c_prov & ((1ull << 52) - 1); // Set the inexact and underflow flag as appropriate if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); } // Package up the result as a binary floating-point number return_binary64 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void bid64_to_binary64 (double *pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #else RES_WRAPFN_DFP(double, bid64_to_binary64, 64) double bid64_to_binary64 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 c_prov; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; unpack_bid64 (x, s, e, k, (c.w[1]), return_binary64_zero (s), return_binary64_inf (s), return_binary64_nan); // Correct to 2^112 <= c < 2^113 with corresponding exponent adding 113-54=59 // In fact shift a further 6 places ready for reciprocal multiplication // Thus (113-54)+6=65, a shift of 1 given that we've already upacked in c.w[1] c.w[1] = c.w[1] << 1; c.w[0] = 0; k = k + 59; // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is 2 >= ceil(1024 * log_10(2)) = ceil(308.25) = 309 if (e >= 309) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary64_ovf (s); } // Also check for "trivial" underflow, when 10^e * 2^113 <= 2^emin * 1/4, // so test e <= floor((emin - 115) * log_10(2)) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -358) e = -358; // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary64 + 358)[e]; e_out = (bid_exponents_binary64 + 358)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_binary64 + 358)[e]; } else { r = (bid_multipliers2_binary64 + 358)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_64x256_to_320(z, c.w[1], r); z.w[5]=z.w[4]; z.w[4]=z.w[3]; z.w[3]=z.w[2]; z.w[2]=z.w[1]; z.w[1]=z.w[0]; z.w[0]=0; // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further if (e_out < 1) { int d; d = 1 - e_out; if (d > 55) d = 55; e_out = 1; srl256_short (z.w[5], z.w[4], z.w[3], z.w[2], d); } c_prov = z.w[5]; // Round using round-sticky words // If we spill into the next binade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == (1ull << 53)) { c_prov = 1ull << 52; e_out = e_out + 1; } #if BINARY_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov == (1ull << 52)) && (e_out == 1)) { if (rnd_mode + (s & 1) == 2) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } // Check for overflow if (e_out >= 2047) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary64_ovf (s); } // Modify exponent for a tiny result, otherwise lop the implicit bit if (c_prov < (1ull << 52)) e_out = 0; else c_prov = c_prov & ((1ull << 52) - 1); // Set the inexact and underflow flag as appropriate if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (e_out == 0) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } // Package up the result as a binary floating-point number return_binary64 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void bid128_to_binary64 (double *pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #else RES_WRAPFN_DFP(double, bid128_to_binary64, 128) double bid128_to_binary64 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 c_prov; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; unpack_bid128 (x, s, e, k, c, return_binary64_zero (s), return_binary64_inf (s), return_binary64_nan); // Shift 6 more places left ready for reciprocal multiplication sll128_short (c.w[1], c.w[0], 6); // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is 2 >= ceil(1024 * log_10(2)) = ceil(308.25) = 309 if (e >= 309) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary64_ovf (s); } // Also check for "trivial" underflow, when 10^e * 2^113 <= 2^emin * 1/4, // so test e <= floor((emin - 115) * log_10(2)) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -358) e = -358; // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary64 + 358)[e]; e_out = (bid_exponents_binary64 + 358)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_binary64 + 358)[e]; } else { r = (bid_multipliers2_binary64 + 358)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further if (e_out < 1) { int d; d = 1 - e_out; if (d > 55) d = 55; e_out = 1; srl256_short (z.w[5], z.w[4], z.w[3], z.w[2], d); } c_prov = z.w[5]; // Round using round-sticky words // If we spill into the next binade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == (1ull << 53)) { c_prov = 1ull << 52; e_out = e_out + 1; } #if BINARY_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov == (1ull << 52)) && (e_out == 1)) { if ((((rnd_mode & 3) == 0) && (z.w[4] < (3ull << 62))) || ((rnd_mode + (s & 1) == 2) && (z.w[4] < (1ull << 63)))) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } // Check for overflow if (e_out >= 2047) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary64_ovf (s); } // Modify exponent for a tiny result, otherwise lop the implicit bit if (c_prov < (1ull << 52)) e_out = 0; else c_prov = c_prov & ((1ull << 52) - 1); // Set the inexact and underflow flag as appropriate if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (e_out == 0) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } // Package up the result as a binary floating-point number return_binary64 (s, e_out, c_prov); } // ********************************************************************** #if __ENABLE_BINARY80__ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_binary80 (BINARY80 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BINARY80, bid32_to_binary80, 32) BINARY80 bid32_to_binary80 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 c_prov; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif unpack_bid32 (x, s, e, k, (c.w[1]), return_binary80_zero (s), return_binary80_inf (s), return_binary80_nan); // Correct to 2^112 <= c < 2^113 with corresponding exponent adding 113-24=89 // Given that we've unpacked in the high part (<<64), that's just <<25 c.w[1] = c.w[1] << 25; c.w[0] = 0; k = k + 89; // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is 2 >= ceil(16384 * log_10(2)) = ceil(4932.07544) = 4933 // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary80 + 4985)[e]; e_out = (bid_exponents_binary80 + 4985)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (c.w[1] < m_min.w[1]) { r = (bid_multipliers1_binary80 + 4985)[e]; } else { r = (bid_multipliers2_binary80 + 4985)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication; make an effective shift of 303 bits // by shifting 47 places right and taking the result from word 4 __mul_64x256_to_320(z, c.w[1], r); z.w[5]=z.w[4]; z.w[4]=z.w[3]; z.w[3]=z.w[2]; z.w[2]=z.w[1]; z.w[1]=z.w[0]; z.w[0]=0; srl256_short (z.w[5], z.w[4], z.w[3], z.w[2], 47); c_prov = z.w[4]; // Round using round-sticky words // If we spill into the next binade, correct if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[3], z.w[2])) { c_prov = c_prov + 1; } // Check for overflow // Set the inexact and underflow flag as appropriate if ((z.w[3] != 0) || (z.w[2] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); } // Package up the result as a binary floating-point number return_binary80 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void bid64_to_binary80 (BINARY80 * pres, BID_UINT64 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else RES_WRAPFN_DFP(BINARY80, bid64_to_binary80, 64) BINARY80 bid64_to_binary80 (BID_UINT64 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 c_prov; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif unpack_bid64 (x, s, e, k, (c.w[0]), return_binary80_zero (s), return_binary80_inf (s), return_binary80_nan); c.w[1] = 0; // Correct to 2^112 <= c < 2^113 with corresponding exponent adding 113-54=59 sll128_short (c.w[1], c.w[0], 59); k = k + 59; // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is 2 >= ceil(16384 * log_10(2)) = ceil(4932.07544) = 4933 // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary80 + 4985)[e]; e_out = (bid_exponents_binary80 + 4985)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_binary80 + 4985)[e]; } else { r = (bid_multipliers2_binary80 + 4985)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication; make an effective shift of 303 bits // by shifting 47 places right and taking the result from word 4 __mul_128x256_to_384 (z, c, r) srl256_short (z.w[5], z.w[4], z.w[3], z.w[2], 47); // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further c_prov = z.w[4]; // Round using round-sticky words // If we spill into the next binade, correct if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[3], z.w[2])) { c_prov = c_prov + 1; } // Check for overflow // Modify exponent for a tiny result // Set the inexact and underflow flag as appropriate if ((z.w[3] != 0) || (z.w[2] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); } // Package up the result as a binary floating-point number return_binary80 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void bid128_to_binary80 (BINARY80 * pres, BID_UINT128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(BINARY80, bid128_to_binary80, 128) BINARY80 bid128_to_binary80 (BID_UINT128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 c_prov; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif unpack_bid128 (x, s, e, k, c, return_binary80_zero (s), return_binary80_inf (s), return_binary80_nan); // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is 2 >= ceil(16384 * log_10(2)) = ceil(4932.07544) = 4933 if (e >= 4933) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary80_ovf (s); } // Also check for "trivial" underflow, when 10^e * 2^113 <= 2^emin * 1/4, // so test e <= floor((emin - 115) * log_10(2)) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -4985) e = -4985; // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary80 + 4985)[e]; e_out = (bid_exponents_binary80 + 4985)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_binary80 + 4985)[e]; } else { r = (bid_multipliers2_binary80 + 4985)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication; make an effective shift of 303 bits // by shifting 47 places right and taking the result from word 4 __mul_128x256_to_384 (z, c, r) srl256_short (z.w[5], z.w[4], z.w[3], z.w[2], 47); // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further if (e_out < 1) { int d; d = 1 - e_out; if (d > 66) d = 66; if (d >= 64) { d -= 64; z.w[1] = z.w[2], z.w[2] = z.w[3], z.w[3] = z.w[4], z.w[4] = 0; } e_out = 1; if (d > 0) srl256_short (z.w[4], z.w[3], z.w[2], z.w[1], d); } c_prov = z.w[4]; // Round using round-sticky words // If we spill into the next binade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[3], z.w[2])) { c_prov = c_prov + 1; if (c_prov == 0) { c_prov = 1ull << 63; e_out = e_out + 1; } #if BINARY_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov == (1ull << 63)) && (e_out == 1)) { if ((((rnd_mode & 3) == 0) && (z.w[3] < (3ull << 62))) || ((rnd_mode + (s & 1) == 2) && (z.w[3] < (1ull << 63)))) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } // Check for overflow if (e_out >= 32767) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary80_ovf (s); } // Modify exponent for a tiny result if (c_prov < (1ull << 63)) e_out = 0; // Set the inexact and underflow flag as appropriate if ((z.w[3] != 0) || (z.w[2] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (e_out == 0) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } // Package up the result as a binary floating-point number return_binary80 (s, e_out, c_prov); } #endif // matches #if __ENABLE_BINARY80__ // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void bid32_to_binary128 (BINARY128 * pres, BID_UINT32 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(BINARY128, bid32_to_binary128, 32) BINARY128 bid32_to_binary128 (BID_UINT32 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 c_prov_hi, c_prov_lo; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif unpack_bid32 (x, s, e, k, (c.w[1]), return_binary128_zero (s), return_binary128_inf (s), return_binary128_nan); // Correct to 2^112 <= c < 2^113 with corresponding exponent adding 113-24=89 // But also make an additional shift of 2 places to get a whole-word lop: // (c * r) >> 254 = ((c << 2) * r) >> 256. Given that we unpack in the high // end, our shift is (89+2)-64 = 27 c.w[0] = 0; c.w[1] = c.w[1] << 27; k = k + 89; // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is 2 >= ceil(16384 * log_10(2)) = ceil(4932.07544) = 4933 // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary128 + 5000)[e]; e_out = (bid_exponents_binary128 + 5000)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (c.w[1] < m_min.w[1]) { r = (bid_multipliers1_binary128 + 5000)[e]; } else { r = (bid_multipliers2_binary128 + 5000)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication; make an effective shift of 254 bits // (given that we already shifted left 2 places) by lopping from word 4 __mul_64x256_to_320(z, c.w[1], r); z.w[5]=z.w[4]; z.w[4]=z.w[3]; z.w[3]=z.w[2]; z.w[2]=z.w[1]; z.w[1]=z.w[0]; z.w[0]=0; // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further c_prov_hi = z.w[5]; c_prov_lo = z.w[4]; // Round using round-sticky words // If we spill into the next binade, correct if (lt128 (bid_roundbound_128 [(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[0], z.w[3], z.w[2])) { c_prov_lo = c_prov_lo + 1; // codecov: // The following "if" block seems to be redundant (hard to prove...). // Here we process any bid32 points x such that x is close to some binary128 // value b with zero low part, so that x> 254 = ((c << 2) * r) >> 256 sll128_short (c.w[1], c.w[0], 61); k = k + 59; // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is 2 >= ceil(16384 * log_10(2)) = ceil(4932.07544) = 4933 // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary128 + 5000)[e]; e_out = (bid_exponents_binary128 + 5000)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_binary128 + 5000)[e]; } else { r = (bid_multipliers2_binary128 + 5000)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication; make an effective shift of 254 bits // (given that we already shifted left 2 places) by lopping from word 4 __mul_128x256_to_384 (z, c, r) // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further c_prov_hi = z.w[5]; c_prov_lo = z.w[4]; // Round using round-sticky words // If we spill into the next binade, correct if (lt128 (bid_roundbound_128 [(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[0], z.w[3], z.w[2])) { c_prov_lo = c_prov_lo + 1; // codecov: // The following "if" block seems to be redundant (hard to prove...). // Here we process any bid64 points x such that x is close to some binary128 // value b with zero low part, so that x 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is 2 >= ceil(16384 * log_10(2)) = ceil(4932.07544) = 4933 if (e >= 4933) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary128_ovf (s); } // Also check for "trivial" underflow, when 10^e * 2^113 <= 2^emin * 1/4, // so test e <= floor((emin - 114) * log_10(2)) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -5000) e = -5000; // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary128 + 5000)[e]; e_out = (bid_exponents_binary128 + 5000)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_binary128 + 5000)[e]; } else { r = (bid_multipliers2_binary128 + 5000)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication; make an effective shift of 254 bits // (given that we already shifted left 2 places) by lopping from word 4 __mul_128x256_to_384 (z, c, r) // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further if (e_out < 1) { int d; d = 1 - e_out; if (d > 115) d = 115; if (d >= 64) { d -= 64; z.w[2] = z.w[3], z.w[3] = z.w[4], z.w[4] = z.w[5], z.w[5] = 0; } e_out = 1; if (d > 0) srl256_short (z.w[5], z.w[4], z.w[3], z.w[2], d); } c_prov_hi = z.w[5]; c_prov_lo = z.w[4]; // Round using round-sticky words // If we spill into the next binade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128 [(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[0], z.w[3], z.w[2])) { c_prov_lo = c_prov_lo + 1; if (c_prov_lo == 0) { c_prov_hi = c_prov_hi + 1; if (c_prov_hi == 1ull << 49) { c_prov_hi = 1ull << 48; e_out = e_out + 1; } #if BINARY_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov_hi == (1ull << 48)) && (e_out == 1)) { if (((rnd_mode + (s & 1) == 2) && (z.w[3] < (1ull << 63)))) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } } // Check for overflow if (e_out >= 32767) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_binary128_ovf (s); } // Modify exponent for a tiny result; otherwise lop off the implicit bit if (c_prov_hi < (1ull << 48)) e_out = 0; else c_prov_hi = c_prov_hi & ((1ull << 48) - 1); // Set the inexact and underflow flag as appropriate if ((z.w[3] != 0) || (z.w[2] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (e_out == 0) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } // Package up the result as a binary floating-point number return_binary128 (s, e_out, c_prov_hi, c_prov_lo); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void binary32_to_bid32 (BID_UINT32 * pres, float *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { float x = *px; #else DFP_WRAPFN_OTHERTYPE(32, binary32_to_bid32, float) BID_UINT32 binary32_to_bid32 (float x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov; BID_UINT128 m_min; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary32 (x, s, e, c.w[1], t, return_bid32_zero (s), return_bid32_inf (s), return_bid32_nan); // Now -172<=e<=104 (104 for max normal, -149 for min normal, -172 for min denormal) // Treat like a quad input for uniformity, so (2^{113-24} * c * r) >> 320, // where 320 is the truncation value for the reciprocal multiples, exactly // five 64-bit words. So we shift 113-24=89 places. Since we unpacked in // the high end, shift a further 89-64=25 places // // Remember to compensate for the fact that exponents are integer for quad c.w[0] = 0; c.w[1] = c.w[1] << 25; t += (113 - 24); e -= (113 - 24); // Now e belongs [-238..15] // Check for "trivial" overflow, when 2^e * 2^112 > 10^emax * 10^d. // We actually check if e >= ceil((emax + d) * log_2(10) - 112) // This could be intercepted later, but it's convenient to keep tables smaller // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], -e); if ((cint.w[1] == 0) && (cint.w[0] < 10000000ull)) return_bid32 (s, 101, cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid32[a]; srl128 (cint.w[1], cint.w[0], t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid32 (s, 101 - a, cc.w[0]); } } } // Check for "trivial" underflow, when 2^e * 2^113 <= 10^emin * 1/4, // so test e <= floor(emin * log_2(10) - 115) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method // Now look up our exponent e, and the breakpoint between e and e+1 m_min = (bid_breakpoints_bid32 + 450)[e]; e_out = (bid_exponents_bid32 + 450)[e]; // Choose exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_bid32 + 450)[e]; } else { r = (bid_multipliers2_bid32 + 450)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) c_prov = z.w[5]; // Round using round-sticky words // If we spill over into the next decade, correct if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == 10000000ull) { c_prov = 1000000ull; e_out = e_out + 1; } } // Check for overflow // Set the inexact flag as appropriate and check underflow // It's no doubt superfluous to check inexactness, but anyway... if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); } // Package up the result return_bid32 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void binary64_to_bid32 (BID_UINT32 * pres, double *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { double x = *px; #else DFP_WRAPFN_OTHERTYPE(32, binary64_to_bid32, double) DECLSPEC_OPT BID_UINT32 binary64_to_bid32 (double x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov; BID_UINT128 m_min; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary64 (x, s, e, c.w[0], t, return_bid32_zero (s), return_bid32_inf (s), return_bid32_nan); // Now -1126<=e<=971 (971 for max normal, -1074 for min normal, -1126 for min denormal) // Treat like a quad input for uniformity, so (2^{113-53} * c * r) >> 320, // where 320 is the truncation value for the reciprocal multiples, exactly // five 64-bit words. So we shift 113-53=60 places // // Remember to compensate for the fact that exponents are integer for quad c.w[1] = 0; sll128_short (c.w[1], c.w[0], 60); t += (113 - 53); e -= (113 - 53); // Now e belongs [-1186;911]. // Check for "trivial" overflow, when 2^e * 2^112 > 10^emax * 10^d. // We actually check if e >= ceil((emax + d) * log_2(10) - 112) // This could be intercepted later, but it's convenient to keep tables smaller if (e >= 211) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_bid32_ovf (s); } // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], -e); if ((cint.w[1] == 0) && (cint.w[0] < 10000000ull)) return_bid32 (s, 101, cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid32[a]; srl128 (cint.w[1], cint.w[0], t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid32 (s, 101 - a, cc.w[0]); } } } // Check for "trivial" underflow, when 2^e * 2^113 <= 10^emin * 1/4, // so test e <= floor(emin * log_2(10) - 115) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -450) e = -450; // Now look up our exponent e, and the breakpoint between e and e+1 m_min = (bid_breakpoints_bid32 + 450)[e]; e_out = (bid_exponents_bid32 + 450)[e]; // Choose exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_bid32 + 450)[e]; } else { r = (bid_multipliers2_bid32 + 450)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) c_prov = z.w[5]; // Test inexactness and underflow (when testing tininess before rounding) #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (c_prov < 1000000ull) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif // Round using round-sticky words // If we spill over into the next decade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == 10000000ull) { c_prov = 1000000ull; e_out = e_out + 1; } #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov == 1000000ull) && (e_out == 0)) { if ((((rnd_mode & 3) == 0) && (z.w[4] <= 17524406870024074035ull)) || ((rnd_mode + (s & 1) == 2) && (z.w[4] <= 16602069666338596454ull))) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } // Check for overflow if (e_out > 90 + 101) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_bid32_ovf (s); } // Set the inexact flag as appropriate and check underflow // It's no doubt superfluous to check inexactness, but anyway... #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (c_prov < 1000000ull) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif // Package up the result return_bid32 (s, e_out, c_prov); } // ********************************************************************** #if __ENABLE_BINARY80__ #if DECIMAL_CALL_BY_REFERENCE void binary80_to_bid32 (BID_UINT32 * pres, BINARY80 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BINARY80 x = *px; #else DFP_WRAPFN_OTHERTYPE(32, binary80_to_bid32, BINARY80) BID_UINT32 binary80_to_bid32 (BINARY80 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov; BID_UINT128 m_min; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary80 (x, s, e, c.w[0], t, return_bid32_zero (s), return_bid32_inf (s), return_bid32_nan); // Now -16508<=e<=16320 (16320 for max normal, -16445 for min normal, -16508 for min denormal) // Treat like a quad input for uniformity, so (2^{113-64} * c * r) >> 320, // where 320 is the truncation value for the reciprocal multiples, exactly // five 64-bit words. So we shift 113-64=49 places // // Remember to compensate for the fact that exponents are integer for quad c.w[1] = 0; sll128_short (c.w[1], c.w[0], 49); t += (113 - 64); e -= (113 - 64); // Now e belongs [-16557;16271]. // Check for "trivial" overflow, when 2^e * 2^112 > 10^emax * 10^d. // We actually check if e >= ceil((emax + d) * log_2(10) - 112) // This could be intercepted later, but it's convenient to keep tables smaller if (e >= 211) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_bid32_ovf (s); } // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], -e); if ((cint.w[1] == 0) && (cint.w[0] < 10000000ull)) return_bid32 (s, 101, cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid32[a]; srl128 (cint.w[1], cint.w[0], t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid32 (s, 101 - a, cc.w[0]); } } } // Check for "trivial" underflow, when 2^e * 2^113 <= 10^emin * 1/4, // so test e <= floor(emin * log_2(10) - 115) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -450) e = -450; // Now look up our exponent e, and the breakpoint between e and e+1 m_min = (bid_breakpoints_bid32 + 450)[e]; e_out = (bid_exponents_bid32 + 450)[e]; // Choose exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_bid32 + 450)[e]; } else { r = (bid_multipliers2_bid32 + 450)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) c_prov = z.w[5]; // Test inexactness and underflow (when testing tininess before rounding) #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (c_prov < 1000000ull) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif // Round using round-sticky words // If we spill over into the next decade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == 10000000ull) { c_prov = 1000000ull; e_out = e_out + 1; } #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov == 1000000ull) && (e_out == 0)) { if ((((rnd_mode & 3) == 0) && (z.w[4] <= 17524406870024074035ull)) || ((rnd_mode + (s & 1) == 2) && (z.w[4] <= 16602069666338596454ull))) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } // Check for overflow if (e_out > 90 + 101) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_bid32_ovf (s); } // Set the inexact flag as appropriate and check underflow // It's no doubt superfluous to check inexactness, but anyway... #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (c_prov < 1000000ull) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif // Package up the result return_bid32 (s, e_out, c_prov); } #endif // matches #if __ENABLE_BINARY80__ // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void binary128_to_bid32 (BID_UINT32 * pres, BINARY128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BINARY128 x = *px; #else DFP_WRAPFN_OTHERTYPE(32, binary128_to_bid32, BINARY128) BID_UINT32 binary128_to_bid32 (BINARY128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov; BID_UINT128 m_min; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary128 (x, s, e, c.w[1], c.w[0], t, return_bid32_zero (s), return_bid32_inf (s), return_bid32_nan); // Now -16606<=e<=16271 (16271 for max normal, -16494 for min normal, -16606 for min denormal) // Check for "trivial" overflow, when 2^e * 2^112 > 10^emax * 10^d. // We actually check if e >= ceil((emax + d) * log_2(10) - 112) // This could be intercepted later, but it's convenient to keep tables smaller if (e >= 211) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_bid32_ovf (s); } // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], -e); if ((cint.w[1] == 0) && (cint.w[0] < 10000000ull)) return_bid32 (s, 101, cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid32[a]; srl128 (cint.w[1], cint.w[0], t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid32 (s, 101 - a, cc.w[0]); } } } // Check for "trivial" underflow, when 2^e * 2^113 <= 10^emin * 1/4, // so test e <= floor(emin * log_2(10) - 115) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -450) e = -450; // Now look up our exponent e, and the breakpoint between e and e+1 m_min = (bid_breakpoints_bid32 + 450)[e]; e_out = (bid_exponents_bid32 + 450)[e]; // Choose exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_bid32 + 450)[e]; } else { r = (bid_multipliers2_bid32 + 450)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) c_prov = z.w[5]; // Test inexactness and underflow (when testing tininess before rounding) #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (c_prov < 1000000ull) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif // Round using round-sticky words // If we spill over into the next decade, correct // Flag underflow where it may be needed even for |result| = SNN // This needs to be done in extra precision because of the precision disparity // and the fact that the breakpoint isn't an exact binary number. if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == 10000000ull) { c_prov = 1000000ull; e_out = e_out + 1; } #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov == 1000000ull) && (e_out == 0)) { if ((((rnd_mode & 3) == 0) && le128 (z.w[4], z.w[3], 17524406870024074035ull, 3689348814741910323ull)) || ((rnd_mode + (s & 1) == 2) && le128 (z.w[4], z.w[3], 16602069666338596454ull, 7378697629483820646ull))) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } // Check for overflow if (e_out > 90 + 101) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_bid32_ovf (s); } // Set the inexact flag as appropriate and check underflow // It's no doubt superfluous to check inexactness, but anyway... #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (c_prov < 1000000ull) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif // Package up the result return_bid32 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void binary32_to_bid64 (BID_UINT64 * pres, float *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { float x = *px; #else DFP_WRAPFN_OTHERTYPE(64, binary32_to_bid64, float) BID_UINT64 binary32_to_bid64 (float x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov; BID_UINT128 m_min; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary32 (x, s, e, c.w[1], t, return_bid64_zero (s), return_bid64_inf (s), return_bid64_nan); // Now -172<=e<=104 (104 for max normal, -149 for min normal, -172 for min denormal) // Treat like a quad input for uniformity, so (2^{113-24} * c * r) >> 312 // (312 is the shift value for these tables) which can be written as // (2^97 c * r) >> 320, lopping off exactly 320 bits = 5 words. Thus we put // input coefficient as the high part of c (<<64) shifted by 33 bits (<<97) // // Remember to compensate for the fact that exponents are integer for quad c.w[1] = c.w[1] << 33; c.w[0] = 0; t += (113 - 24); e -= (113 - 24); // Now e belongs [-238..15] // Check for "trivial" overflow, when 2^e * 2^112 > 10^emax * 10^d. // We actually check if e >= ceil((emax + d) * log_2(10) - 112) // This could be intercepted later, but it's convenient to keep tables smaller // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. // // Note that when we shift, we need to take into account the fact that // c is already 8 places to the left in preparation for the reciprocal // multiplication; thus we add 8 to all the shift counts if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], 8 - e); if ((cint.w[1] == 0) && (cint.w[0] < 10000000000000000ull)) return_bid64 (s, 398, cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid64[a]; srl128 (cint.w[1], cint.w[0], 8 + t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid64 (s, 398 - a, cc.w[0]); } } } // Check for "trivial" underflow, when 2^e * 2^113 <= 10^emin * 1/4, // so test e <= floor(emin * log_2(10) - 115) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method // Now look up our exponent e, and the breakpoint between e and e+1 m_min = (bid_breakpoints_bid64 + 1437)[e]; e_out = (bid_exponents_bid64 + 1437)[e]; // Choose exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_bid64 + 1437)[e]; } else { r = (bid_multipliers2_bid64 + 1437)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) c_prov = z.w[5]; // Round using round-sticky words // If we spill over into the next decade, correct if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == 10000000000000000ull) { c_prov = 1000000000000000ull; e_out = e_out + 1; } } // Check for overflow // Set the inexact flag as appropriate and check underflow // It's no doubt superfluous to check inexactness, but anyway... if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); } // Package up the result return_bid64 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void binary64_to_bid64 (BID_UINT64 * pres, double *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { double x = *px; #else DFP_WRAPFN_OTHERTYPE(64, binary64_to_bid64, double) DECLSPEC_OPT BID_UINT64 binary64_to_bid64 (double x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov; BID_UINT128 m_min; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary64 (x, s, e, c.w[1], t, return_bid64_zero (s), return_bid64_inf (s), return_bid64_nan); // Now -1126<=e<=971 (971 for max normal, -1074 for min normal, -1126 for min denormal) // Treat like a quad input for uniformity, so (2^{113-53} * c * r) >> 312 // (312 is the shift value for these tables) which can be written as // (2^68 c * r) >> 320, lopping off exactly 320 bits = 5 words. Thus we put // input coefficient as the high part of c (<<64) shifted by 4 bits (<<68) // // Remember to compensate for the fact that exponents are integer for quad c.w[1] = c.w[1] << 4; c.w[0] = 0; t += (113 - 53); e -= (113 - 53); // Now e belongs [-1186;911]. // Check for "trivial" overflow, when 2^e * 2^112 > 10^emax * 10^d. // We actually check if e >= ceil((emax + d) * log_2(10) - 112) // This could be intercepted later, but it's convenient to keep tables smaller // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. // // Note that when we shift, we need to take into account the fact that // c is already 8 places to the left in preparation for the reciprocal // multiplication; thus we add 8 to all the shift counts if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], 8 - e); if ((cint.w[1] == 0) && (cint.w[0] < 10000000000000000ull)) return_bid64 (s, 398, cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid64[a]; srl128 (cint.w[1], cint.w[0], 8 + t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid64 (s, 398 - a, cc.w[0]); } } } // Check for "trivial" underflow, when 2^e * 2^113 <= 10^emin * 1/4, // so test e <= floor(emin * log_2(10) - 115) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method // Now look up our exponent e, and the breakpoint between e and e+1 m_min = (bid_breakpoints_bid64 + 1437)[e]; e_out = (bid_exponents_bid64 + 1437)[e]; // Choose exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_bid64 + 1437)[e]; } else { r = (bid_multipliers2_bid64 + 1437)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) c_prov = z.w[5]; // Round using round-sticky words // If we spill over into the next decade, correct if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == 10000000000000000ull) { c_prov = 1000000000000000ull; e_out = e_out + 1; } } // Check for overflow // Set the inexact flag as appropriate and check underflow // It's no doubt superfluous to check inexactness, but anyway... if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); } // Package up the result return_bid64 (s, e_out, c_prov); } // ********************************************************************** #if __ENABLE_BINARY80__ #if DECIMAL_CALL_BY_REFERENCE void binary80_to_bid64 (BID_UINT64 * pres, BINARY80 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BINARY80 x = *px; #else DFP_WRAPFN_OTHERTYPE(64, binary80_to_bid64, BINARY80) BID_UINT64 binary80_to_bid64 (BINARY80 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov; BID_UINT128 m_min; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary80 (x, s, e, c.w[1], t, return_bid64_zero (s), return_bid64_inf (s), return_bid64_nan); // Now -16508<=e<=16320 (16320 for max normal, -16445 for min normal, -16508 for min denormal) // Treat like a quad input for uniformity, so (2^{113-64} * c * r) >> 312 // (312 is the shift value for these tables) which can be written as // (2^57 c * r) >> 320, lopping off exactly 320 bits = 5 words. Thus we put the // input in the high part then shift right 7 places c.w[0] = 0; srl128_short (c.w[1], c.w[0], 7); t += (113 - 64); e -= (113 - 64); // Now e belongs [-16557;16271]. // Check for "trivial" overflow, when 2^e * 2^112 > 10^emax * 10^d. // We actually check if e >= ceil((emax + d) * log_2(10) - 112) // This could be intercepted later, but it's convenient to keep tables smaller if (e >= 1168) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_bid64_ovf (s); } // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. // // Note that when we shift, we need to take into account the fact that // c is already 8 places to the left in preparation for the reciprocal // multiplication; thus we add 8 to all the shift counts if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], 8 - e); if ((cint.w[1] == 0) && (cint.w[0] < 10000000000000000ull)) return_bid64 (s, 398, cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid64[a]; srl128 (cint.w[1], cint.w[0], 8 + t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid64 (s, 398 - a, cc.w[0]); } } } // Check for "trivial" underflow, when 2^e * 2^113 <= 10^emin * 1/4, // so test e <= floor(emin * log_2(10) - 115) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -1437) e = -1437; // Now look up our exponent e, and the breakpoint between e and e+1 m_min = (bid_breakpoints_bid64 + 1437)[e]; e_out = (bid_exponents_bid64 + 1437)[e]; // Choose exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_bid64 + 1437)[e]; } else { r = (bid_multipliers2_bid64 + 1437)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) c_prov = z.w[5]; // Test inexactness and underflow (when testing tininess before rounding) #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (c_prov < 1000000000000000ull) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif // Round using round-sticky words // If we spill over into the next decade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == 10000000000000000ull) { c_prov = 1000000000000000ull; e_out = e_out + 1; } #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov == 1000000000000000ull) && (e_out == 0)) { if ((((rnd_mode & 3) == 0) && (z.w[4] <= 17524406870024074035ull)) || ((rnd_mode + (s & 1) == 2) && (z.w[4] <= 16602069666338596454ull))) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } // Check for overflow if (e_out > 369 + 398) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_bid64_ovf (s); } // Set the inexact flag as appropriate and check underflow // It's no doubt superfluous to check inexactness, but anyway... #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (c_prov < 1000000000000000ull) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif // Package up the result return_bid64 (s, e_out, c_prov); } #endif // matches #if __ENABLE_BINARY80__ // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void binary128_to_bid64 (BID_UINT64 * pres, BINARY128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BINARY128 x = *px; #else DFP_WRAPFN_OTHERTYPE(64, binary128_to_bid64, BINARY128) BID_UINT64 binary128_to_bid64 (BINARY128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov; BID_UINT128 m_min; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary128 (x, s, e, c.w[1], c.w[0], t, return_bid64_zero (s), return_bid64_inf (s), return_bid64_nan); // Now -16606<=e<=16271 (16271 for max normal, -16494 for min normal, -16606 for min denormal) // Shift left 8 spaces so (c * r) >> 312 = ((c<<8) * r) >> 320 and we // can lop off exactly 5 words sll128_short (c.w[1], c.w[0], 8); // Check for "trivial" overflow, when 2^e * 2^112 > 10^emax * 10^d. // We actually check if e >= ceil((emax + d) * log_2(10) - 112) // This could be intercepted later, but it's convenient to keep tables smaller if (e >= 1168) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_bid64_ovf (s); } // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. // // Note that when we shift, we need to take into account the fact that // c is already 8 places to the left in preparation for the reciprocal // multiplication; thus we add 8 to all the shift counts if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], 8 - e); if ((cint.w[1] == 0) && (cint.w[0] < 10000000000000000ull)) return_bid64 (s, 398, cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid64[a]; srl128 (cint.w[1], cint.w[0], 8 + t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid64 (s, 398 - a, cc.w[0]); } } } // Check for "trivial" underflow, when 2^e * 2^113 <= 10^emin * 1/4, // so test e <= floor(emin * log_2(10) - 115) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -1437) e = -1437; // Now look up our exponent e, and the breakpoint between e and e+1 m_min = (bid_breakpoints_bid64 + 1437)[e]; e_out = (bid_exponents_bid64 + 1437)[e]; // Choose exponent and reciprocal multiplier based on breakpoint if (le128 (c.w[1], c.w[0], m_min.w[1], m_min.w[0])) { r = (bid_multipliers1_bid64 + 1437)[e]; } else { r = (bid_multipliers2_bid64 + 1437)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication __mul_128x256_to_384 (z, c, r) c_prov = z.w[5]; // Test inexactness and underflow (when testing tininess before rounding) #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (c_prov < 1000000000000000ull) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif // Round using round-sticky words // If we spill over into the next decade, correct // Flag underflow where it may be needed even for |result| = SNN if (lt128 (bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)]. w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov & 1)].w[0], z.w[4], z.w[3])) { c_prov = c_prov + 1; if (c_prov == 10000000000000000ull) { c_prov = 1000000000000000ull; e_out = e_out + 1; } #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING else if ((c_prov == 1000000000000000ull) && (e_out == 0)) { if ((((rnd_mode & 3) == 0) && (z.w[4] <= 17524406870024074035ull)) || ((rnd_mode + (s & 1) == 2) && (z.w[4] <= 16602069666338596454ull))) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif } // Check for overflow if (e_out > 369 + 398) { __set_status_flags(pfpsf, BID_OVERFLOW_INEXACT_EXCEPTION); return_bid64_ovf (s); } // Set the inexact flag as appropriate and check underflow // It's no doubt superfluous to check inexactness, but anyway... #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if ((z.w[4] != 0) || (z.w[3] != 0)) { __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); if (c_prov < 1000000000000000ull) __set_status_flags(pfpsf,BID_UNDERFLOW_EXCEPTION); } #endif // Package up the result return_bid64 (s, e_out, c_prov); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void binary32_to_bid128 (BID_UINT128 * pres, float *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { float x = *px; #else DFP_WRAPFN_OTHERTYPE(128, binary32_to_bid128, float) BID_UINT128 binary32_to_bid128 (float x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov_hi, c_prov_lo; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out, e_plus, e_hi, e_lo, f; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary32 (x, s, e, c.w[1], t, return_bid128_zero (s), return_bid128_inf (s), return_bid128_nan); // Now -172<=e<=104 (104 for max normal, -149 for min normal, -172 for min denormal) // Shift up to the top: like a pure quad coefficient with a shift of 15. // In our case, this is 2^{113-24+15} times the core, so unpack at the // high end shifted by 40. c.w[0] = 0; c.w[1] = c.w[1] << 40; t += (113 - 24); e -= (113 - 24); // Now e belongs [-238..15] // (We never need to check for overflow: this format is the biggest of all!) // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. // // Note that when we shift, we need to take into account the fact that // c is already 15 places to the left in preparation for the reciprocal // multiplication; thus we add 15 to all the shift counts if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], 15 - e); if (lt128 (cint.w[1], cint.w[0], 542101086242752ull, 4003012203950112768ull)) return_bid128 (s, 6176, cint.w[1], cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid128[a]; srl128 (cint.w[1], cint.w[0], 15 + t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid128 (s, 6176 - a, cc.w[1], cc.w[0]); } } } // Input exponent can stretch between the maximal and minimal // exponents (remembering we force normalization): -16607 <= e <= 16271 // Compute the estimated decimal exponent e_out; the provisional exponent // will be either "e_out" or "e_out-1" depending on later significand check // NB: this is the *biased* exponent e_plus = e + 42152; e_out = (((19728 * e_plus) + ((19779 * e_plus) >> 16)) >> 16) - 6512; // Set up pointers into the bipartite table e_hi = 11232 - e_out; e_lo = e_hi & 127; e_hi = e_hi >> 7; // Look up the inner entry first r = bid_innertable_sig[e_lo], f = bid_innertable_exp[e_lo]; // If we need the other entry, multiply significands and add exponents if (e_hi != 39) { BID_UINT256 s_prime = bid_outertable_sig[e_hi]; BID_UINT512 t_prime; f = f + 256 + bid_outertable_exp[e_hi]; __mul_256x256_to_512 (t_prime, r, s_prime); r.w[0] = t_prime.w[4] + 1, r.w[1] = t_prime.w[5], r.w[2] = t_prime.w[6], r.w[3] = t_prime.w[7]; } __mul_128x256_to_384 (z, c, r); // Make adjustive shift, ignoring the lower 128 bits e = -(241 + e + f); srl384_short (z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0], e); // Now test against 10^33 and so decide on adjustment // I feel there ought to be a smarter way of doing the multiplication if (lt128 (z.w[5], z.w[4], 54210108624275ull, 4089650035136921600ull)) { __mul_10x384_to_384 (z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0], z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0]); e_out = e_out - 1; } // Set up provisional results c_prov_hi = z.w[5]; c_prov_lo = z.w[4]; // Round using round-sticky words // If we spill over into the next decade, correct if (lt128 (bid_roundbound_128 [(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[0], z.w[3], z.w[2])) { c_prov_lo = c_prov_lo + 1; if (c_prov_lo == 0) c_prov_hi = c_prov_hi + 1; else if ((c_prov_lo == 4003012203950112768ull) && (c_prov_hi == 542101086242752ull)) { c_prov_hi = 54210108624275ull; c_prov_lo = 4089650035136921600ull; e_out = e_out + 1; } } // Don't need to check overflow or underflow; however set inexact flag if ((z.w[3] != 0) || (z.w[2] != 0)) __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); // Package up the result return_bid128 (s, e_out, c_prov_hi, c_prov_lo); } // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void binary64_to_bid128 (BID_UINT128 * pres, double *px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { double x = *px; #else DFP_WRAPFN_OTHERTYPE(128, binary64_to_bid128, double) DECLSPEC_OPT BID_UINT128 binary64_to_bid128 (double x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov_hi, c_prov_lo; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out, e_plus, e_hi, e_lo, f; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary64 (x, s, e, c.w[1], t, return_bid128_zero (s), return_bid128_inf (s), return_bid128_nan); // Now -1126<=e<=971 (971 for max normal, -1074 for min normal, -1126 for min denormal) // Shift up to the top: like a pure quad coefficient with a shift of 15. // In our case, this is 2^{113-53+15} times the core, so unpack at the // high end shifted by 11. c.w[0] = 0; c.w[1] = c.w[1] << 11; t += (113 - 53); e -= (113 - 53); // Now e belongs [-1186;911]. // (We never need to check for overflow: this format is the biggest of all!) // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. // // Note that when we shift, we need to take into account the fact that // c is already 15 places to the left in preparation for the reciprocal // multiplication; thus we add 15 to all the shift counts if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], 15 - e); if (lt128 (cint.w[1], cint.w[0], 542101086242752ull, 4003012203950112768ull)) return_bid128 (s, 6176, cint.w[1], cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid128[a]; srl128 (cint.w[1], cint.w[0], 15 + t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid128 (s, 6176 - a, cc.w[1], cc.w[0]); } } } // Input exponent can stretch between the maximal and minimal // exponents (remembering we force normalization): -16607 <= e <= 16271 // Compute the estimated decimal exponent e_out; the provisional exponent // will be either "e_out" or "e_out-1" depending on later significand check // NB: this is the *biased* exponent e_plus = e + 42152; e_out = (((19728 * e_plus) + ((19779 * e_plus) >> 16)) >> 16) - 6512; // Set up pointers into the bipartite table e_hi = 11232 - e_out; e_lo = e_hi & 127; e_hi = e_hi >> 7; // Look up the inner entry first r = bid_innertable_sig[e_lo], f = bid_innertable_exp[e_lo]; // If we need the other entry, multiply significands and add exponents if (e_hi != 39) { BID_UINT256 s_prime = bid_outertable_sig[e_hi]; BID_UINT512 t_prime; f = f + 256 + bid_outertable_exp[e_hi]; __mul_256x256_to_512 (t_prime, r, s_prime); r.w[0] = t_prime.w[4] + 1, r.w[1] = t_prime.w[5], r.w[2] = t_prime.w[6], r.w[3] = t_prime.w[7]; } __mul_128x256_to_384 (z, c, r); // Make adjustive shift, ignoring the lower 128 bits e = -(241 + e + f); srl384_short (z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0], e); // Now test against 10^33 and so decide on adjustment // I feel there ought to be a smarter way of doing the multiplication if (lt128 (z.w[5], z.w[4], 54210108624275ull, 4089650035136921600ull)) { __mul_10x384_to_384 (z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0], z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0]); e_out = e_out - 1; } // Set up provisional results c_prov_hi = z.w[5]; c_prov_lo = z.w[4]; // Round using round-sticky words // If we spill over into the next decade, correct if (lt128 (bid_roundbound_128 [(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[0], z.w[3], z.w[2])) { c_prov_lo = c_prov_lo + 1; if (c_prov_lo == 0) c_prov_hi = c_prov_hi + 1; else if ((c_prov_lo == 4003012203950112768ull) && (c_prov_hi == 542101086242752ull)) { c_prov_hi = 54210108624275ull; c_prov_lo = 4089650035136921600ull; e_out = e_out + 1; } } // Don't need to check overflow or underflow; however set inexact flag if ((z.w[3] != 0) || (z.w[2] != 0)) __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); // Package up the result return_bid128 (s, e_out, c_prov_hi, c_prov_lo); } // ********************************************************************** #if __ENABLE_BINARY80__ #if DECIMAL_CALL_BY_REFERENCE void binary80_to_bid128 (BID_UINT128 * pres, BINARY80 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BINARY80 x = *px; #else DFP_WRAPFN_OTHERTYPE(128, binary80_to_bid128, BINARY80) BID_UINT128 binary80_to_bid128 (BINARY80 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov_hi, c_prov_lo; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out, e_plus, e_hi, e_lo, f; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary80 (x, s, e, c.w[1], t, return_bid128_zero (s), return_bid128_inf (s), return_bid128_nan); // Now -16508<=e<=16320 (16320 for max normal, -16445 for min normal, -16508 for min denormal) // Treat like a pure quad coefficient with a shift of 15. We get this // just by unpacking at the high end c.w[0] = 0; t += (113 - 64); e -= (113 - 64); // Now e belongs [-16557;16271]. // (We never need to check for overflow: this format is the biggest of all!) // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. // // Note that when we shift, we need to take into account the fact that // c is already 15 places to the left in preparation for the reciprocal // multiplication; thus we add 15 to all the shift counts if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], 15 - e); if (lt128 (cint.w[1], cint.w[0], 542101086242752ull, 4003012203950112768ull)) return_bid128 (s, 6176, cint.w[1], cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid128[a]; srl128 (cint.w[1], cint.w[0], 15 + t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid128 (s, 6176 - a, cc.w[1], cc.w[0]); } } } // Input exponent can stretch between the maximal and minimal // exponents (remembering we force normalization): -16607 <= e <= 16271 // Compute the estimated decimal exponent e_out; the provisional exponent // will be either "e_out" or "e_out-1" depending on later significand check // NB: this is the *biased* exponent e_plus = e + 42152; e_out = (((19728 * e_plus) + ((19779 * e_plus) >> 16)) >> 16) - 6512; // Set up pointers into the bipartite table e_hi = 11232 - e_out; e_lo = e_hi & 127; e_hi = e_hi >> 7; // Look up the inner entry first r = bid_innertable_sig[e_lo], f = bid_innertable_exp[e_lo]; // If we need the other entry, multiply significands and add exponents if (e_hi != 39) { BID_UINT256 s_prime = bid_outertable_sig[e_hi]; BID_UINT512 t_prime; f = f + 256 + bid_outertable_exp[e_hi]; __mul_256x256_to_512 (t_prime, r, s_prime); r.w[0] = t_prime.w[4] + 1, r.w[1] = t_prime.w[5], r.w[2] = t_prime.w[6], r.w[3] = t_prime.w[7]; } __mul_128x256_to_384 (z, c, r); // Make adjustive shift, ignoring the lower 128 bits e = -(241 + e + f); srl384_short (z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0], e); // Now test against 10^33 and so decide on adjustment // I feel there ought to be a smarter way of doing the multiplication if (lt128 (z.w[5], z.w[4], 54210108624275ull, 4089650035136921600ull)) { __mul_10x384_to_384 (z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0], z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0]); e_out = e_out - 1; } // Set up provisional results c_prov_hi = z.w[5]; c_prov_lo = z.w[4]; // Round using round-sticky words // If we spill over into the next decade, correct if (lt128 (bid_roundbound_128 [(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[0], z.w[3], z.w[2])) { c_prov_lo = c_prov_lo + 1; if (c_prov_lo == 0) c_prov_hi = c_prov_hi + 1; else if ((c_prov_lo == 4003012203950112768ull) && (c_prov_hi == 542101086242752ull)) { c_prov_hi = 54210108624275ull; c_prov_lo = 4089650035136921600ull; e_out = e_out + 1; } } // Don't need to check overflow or underflow; however set inexact flag if ((z.w[3] != 0) || (z.w[2] != 0)) __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); // Package up the result return_bid128 (s, e_out, c_prov_hi, c_prov_lo); } #endif // matches #if __ENABLE_BINARY80__ // ********************************************************************** #if DECIMAL_CALL_BY_REFERENCE void binary128_to_bid128 (BID_UINT128 * pres, BINARY128 * px _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BINARY128 x = *px; #else DFP_WRAPFN_OTHERTYPE(128, binary128_to_bid128, BINARY128) BID_UINT128 binary128_to_bid128 (BINARY128 x _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 c; BID_UINT64 c_prov_hi, c_prov_lo; BID_UINT256 r; BID_UINT384 z; int e, s, t, e_out, e_plus, e_hi, e_lo, f; #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = *prnd_mode; #endif #endif // Unpack the input unpack_binary128 (x, s, e, c.w[1], c.w[0], t, return_bid128_zero (s), return_bid128_inf (s), return_bid128_nan); // Now -16606<=e<=16271 (16271 for max normal, -16494 for min normal, -16606 for min denormal) // Shift up 15 places to move to the top sll128_short (c.w[1], c.w[0], 15); // (We never need to check for overflow: this format is the biggest of all!) // Now filter out all the exact cases where we need to specially force // the exponent to 0. We can let through inexact cases and those where the // main path will do the right thing anyway, e.g. integers outside coeff range. // // First check that e <= 0, because if e > 0, the input must be >= 2^113, // which is too large for the coefficient of any target decimal format. // We write a = -(e + t) // // (1) If e + t >= 0 <=> a <= 0 the input is an integer; treat it specially // iff it fits in the coefficient range. Shift c' = c >> -e, and // compare with the coefficient range; if it's in range then c' is // our coefficient, exponent is 0. Otherwise we pass through. // // (2) If a > 0 then we have a non-integer input. The special case would // arise as c' / 2^a where c' = c >> t, i.e. 10^-a * (5^a c'). Now // if a > 48 we can immediately forget this, since 5^49 > 10^34. // Otherwise we determine whether we're in range by a table based on // a, and if so get the multiplier also from a table based on a. // // Note that when we shift, we need to take into account the fact that // c is already 15 places to the left in preparation for the reciprocal // multiplication; thus we add 15 to all the shift counts if (e <= 0) { BID_UINT128 cint; int a = -(e + t); cint.w[1] = c.w[1], cint.w[0] = c.w[0]; if (a <= 0) { srl128 (cint.w[1], cint.w[0], 15 - e); if (lt128 (cint.w[1], cint.w[0], 542101086242752ull, 4003012203950112768ull)) return_bid128 (s, 6176, cint.w[1], cint.w[0]); } else if (a <= 48) { BID_UINT128 pow5 = bid_coefflimits_bid128[a]; srl128 (cint.w[1], cint.w[0], 15 + t); if (le128 (cint.w[1], cint.w[0], pow5.w[1], pow5.w[0])) { BID_UINT128 cc; cc.w[1] = cint.w[1]; cc.w[0] = cint.w[0]; pow5 = bid_power_five[a]; __mul_128x128_low (cc, cc, pow5); return_bid128 (s, 6176 - a, cc.w[1], cc.w[0]); } } } // Input exponent can stretch between the maximal and minimal // exponents (remembering we force normalization): -16607 <= e <= 16271 // Compute the estimated decimal exponent e_out; the provisional exponent // will be either "e_out" or "e_out-1" depending on later significand check // NB: this is the *biased* exponent e_plus = e + 42152; e_out = (((19728 * e_plus) + ((19779 * e_plus) >> 16)) >> 16) - 6512; // Set up pointers into the bipartite table e_hi = 11232 - e_out; e_lo = e_hi & 127; e_hi = e_hi >> 7; // Look up the inner entry first r = bid_innertable_sig[e_lo], f = bid_innertable_exp[e_lo]; // If we need the other entry, multiply significands and add exponents if (e_hi != 39) { BID_UINT256 s_prime = bid_outertable_sig[e_hi]; BID_UINT512 t_prime; f = f + 256 + bid_outertable_exp[e_hi]; __mul_256x256_to_512 (t_prime, r, s_prime); // *** NB I should run an exhaustive check this +1 doesn't overflow r.w[0] = t_prime.w[4] + 1, r.w[1] = t_prime.w[5], r.w[2] = t_prime.w[6], r.w[3] = t_prime.w[7]; } __mul_128x256_to_384 (z, c, r); // Make adjustive shift, ignoring the lower 128 bits e = -(241 + e + f); srl384_short (z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0], e); // Now test against 10^33 and so decide on adjustment // I feel there ought to be a smarter way of doing the multiplication if (lt128 (z.w[5], z.w[4], 54210108624275ull, 4089650035136921600ull)) { __mul_10x384_to_384 (z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0], z.w[5], z.w[4], z.w[3], z.w[2], z.w[1], z.w[0]); e_out = e_out - 1; } // Set up provisional results c_prov_hi = z.w[5]; c_prov_lo = z.w[4]; // Round using round-sticky words // If we spill over into the next decade, correct if (lt128 (bid_roundbound_128 [(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[1], bid_roundbound_128[(rnd_mode << 2) + ((s & 1) << 1) + (c_prov_lo & 1)].w[0], z.w[3], z.w[2])) { c_prov_lo = c_prov_lo + 1; if (c_prov_lo == 0) c_prov_hi = c_prov_hi + 1; else if ((c_prov_lo == 4003012203950112768ull) && (c_prov_hi == 542101086242752ull)) { c_prov_hi = 54210108624275ull; c_prov_lo = 4089650035136921600ull; e_out = e_out + 1; } } // Don't need to check overflow or underflow; however set inexact flag if ((z.w[3] != 0) || (z.w[2] != 0)) __set_status_flags(pfpsf,BID_INEXACT_EXCEPTION); // Package up the result return_bid128 (s, e_out, c_prov_hi, c_prov_lo); } // ********************************************************************** // Special conversion returning 2-part result, for use in transcendentals // ********************************************************************** #define assign_binary128(ptr,s,e,c_hi,c_lo) \ { union {BID_UINT128 i; BINARY128 f; } x_out; \ x_out.i.w[BID_LOW_128W] = (c_lo); \ x_out.i.w[BID_HIGH_128W] = (((BID_UINT64)(s)) << 63) + \ (((BID_UINT64)(e)) << 48) + \ (c_hi); \ *ptr = x_out.f; \ } \ #define return_binary128_zero_2part(s) \ { assign_binary128(res_hi,s,0,0,0); \ return; \ } \ #define return_binary128_inf_2part(s) \ { assign_binary128(res_hi,s,32767,0,0); \ return; \ } \ #define return_binary128_nan_2part(s,c_hi,c_lo) \ { assign_binary128(res_hi,s,32767,(c_hi>>17)+(1ull<<47), \ ((c_lo>>17)+(c_hi<<47))); \ return; \ } #define unpack_bid128_nostat(x,s,e,k,c,zero,inf,nan) \ { s = x.w[BID_HIGH_128W] >> 63; \ if ((x.w[BID_HIGH_128W] & (3ull<<61)) == (3ull<<61)) \ { if ((x.w[BID_HIGH_128W] & (0xFull<<59)) == (0xFull<<59)) \ { if ((x.w[BID_HIGH_128W] & (0x1Full<<58)) != (0x1Full<<58)) inf; \ if (lt128(54210108624275ull,4089650035136921599ull, \ (x.w[BID_HIGH_128W] & 0x3FFFFFFFFFFFull),x.w[BID_LOW_128W])) \ nan(s,0ull,0ull); \ nan(s,((((unsigned long long) x.w[BID_HIGH_128W]) << 18) + \ (((unsigned long long) x.w[BID_LOW_128W]) >> 46)), \ (((unsigned long long) x.w[BID_LOW_128W]) << 18)); \ } \ zero; \ } \ else \ { e = ((x.w[BID_HIGH_128W] >> 49) & ((1ull<<14)-1)) - 6176; \ c.w[1] = x.w[BID_HIGH_128W] & ((1ull<<49)-1); \ c.w[0] = x.w[BID_LOW_128W]; \ if (lt128(542101086242752ull,4003012203950112767ull, \ c.w[1],c.w[0])) \ { c.w[1] = 0ull; c.w[0] = 0ull; } \ if ((c.w[1] == 0) && (c.w[0] == 0)) zero; \ k = clz128_nz(c.w[1],c.w[0]) - 15; \ sll128(c.w[1],c.w[0],k); \ } \ } void bid128_to_binary128_2part(BINARY128 *res_hi,BINARY128 *res_lo,BID_UINT128 x) { BID_UINT64 c_prov_hi, c_prov_lo; BID_UINT64 d_prov_hi, d_prov_lo; BID_UINT128 c; BID_UINT128 m_min; int s, e, k, e_out; BID_UINT256 r; BID_UINT384 z; // Unpack the input and shift two further places for reciprocal multiplication unpack_bid128_nostat(x,s,e,k,c,return_binary128_zero_2part(s), return_binary128_inf_2part(s),return_binary128_nan_2part); sll128_short(c.w[1],c.w[0],2); // Check for "trivial" overflow, when 10^e * 1 > 2^{sci_emax+1}, just to // keep tables smaller (it would be intercepted later otherwise). // // (Note that we may have normalized the coefficient, but we have a // corresponding exponent postcorrection to account for; this can // afford to be conservative anyway.) // // We actually check if e >= ceil((sci_emax + 1) * log_10(2)) // which in this case is 2 >= ceil(16384 * log_10(2)) = ceil(4932.07544) = 4933 if (e >= 4933) return_binary128_inf_2part(s); // Also check for "trivial" underflow, when 10^e * 2^113 <= 2^emin * 1/4, // so test e <= floor((emin - 114) * log_10(2)) // In this case just fix ourselves at that value for uniformity. // // This is important not only to keep the tables small but to maintain the // testing of the round/sticky words as a correct rounding method if (e <= -5000) e = -5000; // Look up the breakpoint and approximate exponent m_min = (bid_breakpoints_binary128+5000)[e]; e_out = (bid_exponents_binary128+5000)[e] - k; // Choose provisional exponent and reciprocal multiplier based on breakpoint if (le128(c.w[1],c.w[0],m_min.w[1],m_min.w[0])) { r = (bid_multipliers1_binary128+5000)[e]; } else { r = (bid_multipliers2_binary128+5000)[e]; e_out = e_out + 1; } // Do the reciprocal multiplication; make an effective shift of 254 bits // (given that we already shifted left 2 places) by lopping from word 4 __mul_128x256_to_384(z,c,r) // Check for exponent underflow and compensate by shifting the product // Cut off the process at precision+2, since we can't really shift further if (e_out < 1) { int d; d = 1 - e_out; if (d > 115) d = 115; if (d >= 64) { d -= 64; z.w[2] = z.w[3],z.w[3] = z.w[4], z.w[4] = z.w[5], z.w[5] = 0; } e_out = 1; if (d > 0) srl256_short(z.w[5],z.w[4],z.w[3],z.w[2],d); } c_prov_hi = z.w[5]; c_prov_lo = z.w[4]; // Check for overflow if (e_out >= 32767) return_binary128_inf_2part(s); // Modify exponent for a tiny result; otherwise lop off the implicit bit if (c_prov_hi < (1ull<<48)) e_out = 0; else c_prov_hi = c_prov_hi & ((1ull<<48)-1); // Package up high part as binary floating-point number assign_binary128(res_hi,s,e_out,c_prov_hi,c_prov_lo); // Convert low part also to a binary floating-point number e_out = e_out - 113; d_prov_hi = z.w[3]; d_prov_lo = z.w[2]; if (d_prov_hi == 0) { e_out = e_out - 64; d_prov_hi = d_prov_lo; d_prov_lo = 0; } if (d_prov_hi == 0) { assign_binary128(res_lo,s,0,0,0); return; } k = clz64(d_prov_hi); e_out = e_out - k; if (e_out < 0) { assign_binary128(res_lo,s,0,0,0); return; } if (k <= 15) srl128(d_prov_hi,d_prov_lo,15 - k); else sll128(d_prov_hi,d_prov_lo,k - 15); d_prov_hi = d_prov_hi & ((1ull<<48)-1); assign_binary128(res_lo,s,e_out,d_prov_hi,d_prov_lo); return; } LIBRARY/src/bid128_rem.c0000644€­ Q01134020000002006415113665770013640 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #define BID_128RES #include "bid_div_macros.h" #include BID128_FUNCTION_ARG2_NORND ( bid128_rem, x, y) BID_UINT256 P256; BID_UINT128 CX, CY, CX2, CQ, CR, T, CXS, P128, res; BID_UINT64 sign_x, sign_y, valid_y; BID_SINT64 D; int_float f64, fx; int exponent_x, exponent_y, diff_expon, bin_expon_cx, scale, scale0; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } // unpack arguments, check for NaN or Infinity valid_y = unpack_BID128_value (&sign_y, &exponent_y, &CY, y); if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[1] & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = CX.w[1] & QUIET_MASK64; res.w[0] = CX.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x is Infinity? if ((x.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is Inf. if (((y.w[1] & 0x7c00000000000000ull) != 0x7c00000000000000ull)) // return NaN { #ifdef BID_SET_STATUS_FLAGS // set status flags __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } // x is 0 if ((!CY.w[1]) && (!CY.w[0])) { #ifdef BID_SET_STATUS_FLAGS // set status flags __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=y=0, return NaN res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } if (valid_y || ((y.w[1] & NAN_MASK64) == INFINITY_MASK64)) { // return 0 if ((exponent_x > exponent_y) && ((y.w[1] & NAN_MASK64) != INFINITY_MASK64)) exponent_x = exponent_y; res.w[1] = sign_x | (((BID_UINT64) exponent_x) << 49); res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((y.w[1] & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = CY.w[1] & QUIET_MASK64; res.w[0] = CY.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is Infinity? if ((y.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { // return x res.w[1] = x.w[1]; res.w[0] = x.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // y is 0 #ifdef BID_SET_STATUS_FLAGS // set status flags __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } diff_expon = exponent_x - exponent_y; if (diff_expon <= 0) { diff_expon = -diff_expon; if (diff_expon > 34) { // |x|<|y| in this case res = x; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // set exponent of y to exponent_x, scale coefficient_y T = bid_power10_table_128[diff_expon]; __mul_128x128_to_256 (P256, CY, T); if (P256.w[2] || P256.w[3]) { // |x|<|y| in this case res = x; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } CX2.w[1] = (CX.w[1] << 1) | (CX.w[0] >> 63); CX2.w[0] = CX.w[0] << 1; if (__unsigned_compare_ge_128 (P256, CX2)) { // |x|<|y| in this case res = x; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } P128.w[0] = P256.w[0]; P128.w[1] = P256.w[1]; bid___div_128_by_128 (&CQ, &CR, CX, P128); CX2.w[1] = (CR.w[1] << 1) | (CR.w[0] >> 63); CX2.w[0] = CR.w[0] << 1; if ((__unsigned_compare_gt_128 (CX2, P256)) || (CX2.w[1] == P256.w[1] && CX2.w[0] == P256.w[0] && (CQ.w[0] & 1))) { __sub_128_128 (CR, P256, CR); sign_x ^= 0x8000000000000000ull; } bid_get_BID128_very_fast (&res, sign_x, exponent_x, CR); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // 2^64 f64.i = 0x5f800000; scale0 = 38; if (!CY.w[1]) scale0 = 34; while (diff_expon > 0) { // get number of digits in CX and scale=38-digits // fx ~ CX fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; bin_expon_cx = ((fx.i >> 23) & 0xff) - 0x7f; scale = scale0 - bid_estimate_decimal_digits[bin_expon_cx]; // scale = 38-estimate_decimal_digits[bin_expon_cx]; D = CX.w[1] - bid_power10_index_binexp_128[bin_expon_cx].w[1]; if (D > 0 || (!D && CX.w[0] >= bid_power10_index_binexp_128[bin_expon_cx].w[0])) scale--; if (diff_expon >= scale) diff_expon -= scale; else { scale = diff_expon; diff_expon = 0; } T = bid_power10_table_128[scale]; __mul_128x128_low (CXS, CX, T); bid___div_128_by_128 (&CQ, &CX, CXS, CY); // check for remainder == 0 if (!CX.w[1] && !CX.w[0]) { bid_get_BID128_very_fast (&res, sign_x, exponent_y, CX); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } CX2.w[1] = (CX.w[1] << 1) | (CX.w[0] >> 63); CX2.w[0] = CX.w[0] << 1; if ((__unsigned_compare_gt_128 (CX2, CY)) || (CX2.w[1] == CY.w[1] && CX2.w[0] == CY.w[0] && (CQ.w[0] & 1))) { __sub_128_128 (CX, CY, CX); sign_x ^= 0x8000000000000000ull; } bid_get_BID128_very_fast (&res, sign_x, exponent_y, CX); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } LIBRARY/src/bid128_to_int16.c0000644€­ Q01134020000000641415113665770014523 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffff8000 #define INVALID_RESULT 0x8000 BID_TO_SMALL_INT_CVT_FUNCTION (short, bid128_to_int16_rnint, BID_UINT128, x, bid128_to_int32_rnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid128_to_int16_xrnint, BID_UINT128, x, bid128_to_int32_xrnint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid128_to_int16_rninta, BID_UINT128, x, bid128_to_int32_rninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid128_to_int16_xrninta, BID_UINT128, x, bid128_to_int32_xrninta, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid128_to_int16_int, BID_UINT128, x, bid128_to_int32_int, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid128_to_int16_xint, BID_UINT128, x, bid128_to_int32_xint, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid128_to_int16_floor, BID_UINT128, x, bid128_to_int32_floor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid128_to_int16_ceil, BID_UINT128, x, bid128_to_int32_ceil, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid128_to_int16_xfloor, BID_UINT128, x, bid128_to_int32_xfloor, int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_INT_CVT_FUNCTION (short, bid128_to_int16_xceil, BID_UINT128, x, bid128_to_int32_xceil, int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid32_quantize.c0000644€­ Q01134020000001637015113665770014634 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2(BID_UINT32, bid32_quantize, BID_UINT32, x, BID_UINT32, y) BID_UINT64 CT; BID_UINT32 sign_x, sign_y, coefficient_x, coefficient_y, remainder_h, C64, valid_x, CT0; BID_UINT32 carry, res; int_float tempx; int exponent_x, exponent_y, digits_x, extra_digits, amount, amount2; int expon_diff, total_digits, bin_expon_cx; unsigned rmode, status; BID_OPT_SAVE_BINARY_FLAGS() valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); // unpack arguments, check for NaN or Infinity if (!unpack_BID32 (&sign_y, &exponent_y, &coefficient_y, y)) { // Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=Inf, y=Inf? if (((coefficient_x << 1) == 0xf0000000ul) && ((coefficient_y << 1) == 0xf0000000ul)) { res = coefficient_x; BID_RETURN (res); } // Inf or NaN? if ((y & 0x78000000ul) == 0x78000000ul) { #ifdef BID_SET_STATUS_FLAGS if (((y & SNAN_MASK32) == SNAN_MASK32) // sNaN || (((y & NAN_MASK32) == INFINITY_MASK32) && //Inf ((x & NAN_MASK32) < INFINITY_MASK32))) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if ((y & NAN_MASK32) != NAN_MASK32) coefficient_y = 0; if ((x & NAN_MASK32) != NAN_MASK32) { res = 0x7c000000ul | (coefficient_y & QUIET_MASK32); if (((y & NAN_MASK32) != NAN_MASK32) && ((x & NAN_MASK32) == INFINITY_MASK32)) res = x; BID_RETURN (res); } } } // unpack arguments, check for NaN or Infinity if (!valid_x) { // x is Inf. or NaN or 0 // Inf or NaN? if ((x & INFINITY_MASK32) == INFINITY_MASK32) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK32) == SNAN_MASK32) // sNaN || ((x & NAN_MASK32) == INFINITY_MASK32)) //Inf __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if ((x & NAN_MASK32) != NAN_MASK32) coefficient_x = 0; res = NAN_MASK32 | (coefficient_x & QUIET_MASK32); BID_RETURN (res); } res = very_fast_get_BID32 (sign_x, exponent_y, 0); BID_RETURN (res); } // get number of decimal digits in coefficient_x tempx.d = (float) coefficient_x; bin_expon_cx = ((tempx.i >> 23) & 0xff) - 0x7f; digits_x = bid_estimate_decimal_digits[bin_expon_cx]; if (coefficient_x >= bid_power10_table_128[digits_x].w[0]) digits_x++; expon_diff = exponent_x - exponent_y; total_digits = digits_x + expon_diff; // check range of scaled coefficient if ((BID_UINT32) (total_digits + 1) <= 8) { if (expon_diff >= 0) { coefficient_x *= (BID_UINT32)bid_power10_table_128[expon_diff].w[0]; res = very_fast_get_BID32 (sign_x, exponent_y, coefficient_x); BID_RETURN (res); } // must round off -expon_diff digits extra_digits = -expon_diff; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_x && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif coefficient_x += bid_round_const_table[rmode][extra_digits]; // get P*(2^M[extra_digits])/10^extra_digits CT = (BID_UINT64)coefficient_x * bid_bid_reciprocals10_32[extra_digits]; // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_bid_bid_recip_scale32[extra_digits]; CT0 = (CT >>32); C64 = CT0 >> amount; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rnd_mode == 0) #endif if (C64 & 1) { // check whether fractional part of initial_P/10^extra_digits // is exactly .5 // this is the same as fractional part of // (initial_P + 0.5*10^extra_digits)/10^extra_digits is exactly zero // get remainder amount2 = 32 - amount; remainder_h = 0; remainder_h--; remainder_h >>= amount2; remainder_h = remainder_h & CT0; // test whether fractional part is 0 if (!remainder_h && ((BID_UINT32)CT < (BID_UINT32)bid_bid_reciprocals10_32[extra_digits])) { C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS status = BID_INEXACT_EXCEPTION; // get remainder remainder_h = CT0 << (32 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if ((remainder_h == 0x80000000ul) && ((BID_UINT32)CT < bid_bid_reciprocals10_32[extra_digits])) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && ((BID_UINT32)CT < bid_bid_reciprocals10_32[extra_digits])) status = BID_EXACT_STATUS; break; default: // round up carry = ((((BID_UINT32)CT)+((BID_UINT32)bid_bid_reciprocals10_32[extra_digits]))<((BID_UINT32)CT))?1:0; if ((remainder_h >> (32 - amount)) + carry >= (((BID_UINT32) 1) << amount)) status = BID_EXACT_STATUS; break; } __set_status_flags (pfpsf, status); #endif res = very_fast_get_BID32 (sign_x, exponent_y, C64); BID_RETURN (res); } if (total_digits < 0) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif C64 = 0; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_x && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; if (rmode == BID_ROUNDING_UP) C64 = 1; #endif #endif res = very_fast_get_BID32 (sign_x, exponent_y, C64); BID_RETURN (res); } // else more than 16 digits in coefficient #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c000000ul; BID_RETURN (res); } LIBRARY/src/bid128_cosh.c0000644€­ Q01134020000001514315113665770014013 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // +10^-40, used in trivial path static BID_UINT128 BID128_10PM40 = {BID128_LH_INIT( 0x0000000000000001ull, 0x2ff0000000000000ull )}; // Constants +1, +1/2 and -1/2 used elsewhere static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_POSHALF = {BID128_LH_INIT( 0x0000000000000005ull, 0x303e000000000000ull )}; static BID_UINT128 BID128_EXP_11000 = {BID128_LH_INIT( 0xd43ede775707fd0aull, 0x5550558ada285f8bull )}; static BID_UINT128 BID128_SHIFTER = {BID128_LH_INIT( 0xbe00000000000000ull, 0x3040363bf3b1ceeeull )}; // +Infinity static BID_UINT128 BID128_INF = {BID128_LH_INIT( 0x0000000000000000ull, 0x7800000000000000ull )}; BID_F128_CONST_DEF( c_1em40, 3f7a16c262777579, c58c46475896767b); // 1e-40 BID_F128_CONST_DEF(c_64, 4005000000000000, 0000000000000000); // 64 BID_F128_CONST_DEF( c_11000, 400c57c000000000, 0000000000000000); // 11000 BID_F128_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F128_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 BID_F128_CONST_DEF( c_zero, 0000000000000000, 0000000000000000); // 0.0 BID128_FUNCTION_ARG1 (bid128_cosh, x) // Declare local variables BID_UINT128 res; BID_F128_TYPE xd, yd, abs_xd, rt; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // Deal with infinite inputs if ((x.w[BID_HIGH_128W] & INFINITY_MASK64) == INFINITY_MASK64) { BID_RETURN(BID128_INF); } // Convert to binary BIDECIMAL_CALL1(bid128_to_binary128,xd,x); // If the input is really small, the result is about 1 + x^2/2, which // we do weakly just to make sure all the directed roundings are OK. __bid_f128_fabs(abs_xd, xd); if (__bid_f128_le(abs_xd, c_1em40.v)) { BIDECIMAL_CALL2(bid128_add,res,BID128_1,BID128_10PM40); BID_RETURN(res); } // Otherwise if the input is <= 1 in magnitude, the naive computation is // well-conditioned and will neither overflow nor underflow else if (__bid_f128_le(abs_xd, c_one.v)) { __bid_f128_cosh(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } // Otherwise, unless the input is totally huge, just "using the formula" // cosh(x) = (e^x + e^-x) / 2 is OK, but we need to to it directly in // decimal so that we don't hit ill-conditioning. Also use an FMA to try // to minimize the additional rounding errors, and take care to isolate // which is the dominant part to control these errors better: it depends // on the sign of the input. else if (__bid_f128_le(abs_xd, c_64.v)) { BID_UINT128 e, i; if (__bid_f128_le(c_zero.v, xd)) { BIDECIMAL_CALL1(bid128_exp,e,x); BIDECIMAL_CALL2(bid128_div,i,BID128_1,e); BIDECIMAL_CALL2(bid128_mul,i,BID128_POSHALF,i); BIDECIMAL_CALL3(bid128_fma,res,e,BID128_POSHALF,i); } else { x.w[BID_HIGH_128W] &= 0x7FFFFFFFFFFFFFFFull; BIDECIMAL_CALL1(bid128_exp,e,x); BIDECIMAL_CALL2(bid128_div,i,BID128_1,e); BIDECIMAL_CALL2(bid128_mul,i,BID128_POSHALF,i); BIDECIMAL_CALL3(bid128_fma,res,e,BID128_POSHALF,i); } BID_RETURN (res); } // For huge arguments, it's effectively exp |x| / 2. // We need to copy and tweak the exp code rather than call it // in order to avoid cases where e^x/2 < MAXNUM < e^x. else { BID_UINT128 m, n, t; BID_F128_TYPE rd, md, nd; x.w[BID_HIGH_128W] &= 0x7FFFFFFFFFFFFFFFull; BIDECIMAL_CALL2(bid128_add, t, x, BID128_SHIFTER); BIDECIMAL_CALL2(bid128_sub, n, t, BID128_SHIFTER); BIDECIMAL_CALL2(bid128_sub, m, x, n); BIDECIMAL_CALL1(bid128_to_binary128, nd, n); BIDECIMAL_CALL1(bid128_to_binary128, md, m); if (__bid_f128_gt(nd, c_11000.v)) { __bid_f128_sub(nd, nd, c_11000.v); __bid_f128_exp(rt, nd); __bid_f128_mul(rd, c_half.v, rt); __bid_f128_exp(rt, md); __bid_f128_mul(rd, rd, rt); BIDECIMAL_CALL1 (binary128_to_bid128, res, rd); BIDECIMAL_CALL2 (bid128_mul, res, res, BID128_EXP_11000); } else { __bid_f128_exp(rt, nd); __bid_f128_mul(rd, c_half.v, rt); __bid_f128_exp(rt, md); __bid_f128_mul(rd, rd, rt); BIDECIMAL_CALL1 (binary128_to_bid128, res, rd); } BID_RETURN (res); } } LIBRARY/src/bid128_log1p.c0000644€­ Q01134020000001225715113665770014104 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" static BID_UINT128 BID128_MINUS_HALF = {BID128_LH_INIT( 0x0000000000000005ull, 0xb03e000000000000ull )}; static BID_UINT128 BID128_1 = {BID128_LH_INIT( 0x0000000000000001ull, 0x3040000000000000ull )}; static BID_UINT128 BID128_10POW4464 = { BID128_LH_INIT( 0x0000000000000001ull, 0x5320000000000000ull ) }; static BID_UINT128 BID128_10POWN4464 = { BID128_LH_INIT( 0x0000000000000001ull, 0x0d60000000000000ull ) }; static BID_UINT128 BID128_NAN = { BID128_LH_INIT( 0x0000000000000000ull, 0x7c00000000000000ull ) }; BID_F128_CONST_DEF( c_4464_ln_10, 400c4135eb3929fb, a719f2c946d2d728); // 4454*ln(10) BID128_FUNCTION_ARG1 (bid128_log1p, x) // Declare local variables BID_UINT128 res, y, x_abs; int sm; BID_F128_TYPE xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // If x < -1/2 we have condition issues with the naive computation. // Instead, do y = 1 + x exactly in decimal and call usual log function. // Deal with negative values 1 + x, returning NaN explicitly BIDECIMAL_CALL2_NORND(bid128_quiet_less,sm,x,BID128_MINUS_HALF); if (sm) { BIDECIMAL_CALL2(bid128_add,y,x,BID128_1); if ((y.w[BID_HIGH_128W] & MASK_SIGN) == MASK_SIGN) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(BID128_NAN); } BIDECIMAL_CALL1(bid128_to_binary128,xd,y); __bid_f128_log(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } // If x > 10^4464 we have overflow worries for quad. In this case, // to all intents and purposes log(1 + x) = log(x), so we can simply // do the same thing as for the basic log function BIDECIMAL_CALL2_NORND (bid128_quiet_greater,sm, x, BID128_10POW4464); if (sm) { BID_UINT128 x_mod; BIDECIMAL_CALL2 (bid128_mul, x_mod, x, BID128_10POWN4464); BIDECIMAL_CALL1 (bid128_to_binary128, xd, x_mod); __bid_f128_log(yd, xd); __bid_f128_add(yd, yd, c_4464_ln_10.v); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } // If the input is so small it would underflow to zero in quad, the // computation is effectively x * (1 - x/2), which we can approximate // by (-x) * x + x just to get directed rounding sensible. x_abs = x; x_abs.w[BID_HIGH_128W] &= ~MASK_SIGN; BIDECIMAL_CALL2_NORND(bid128_quiet_less,sm,x_abs,BID128_10POWN4464); if (sm) { BID_UINT128 x_neg = x; x_neg.w[BID_HIGH_128W] ^= MASK_SIGN; BIDECIMAL_CALL3(bid128_fma,res,x,x_neg,x); BID_RETURN (res); } // Otherwise just do the operation "naively". // Inherit all other special cases (infinity, negative,...) from binary. { BIDECIMAL_CALL1(bid128_to_binary128,xd,x); __bid_f128_log1p(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } } LIBRARY/src/bid128_asin.c0000644€­ Q01134020000001233315113665770014007 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // -1, used in sqrt(1 - x^2) computation static BID_UINT128 BID128_MINUS1 = {BID128_LH_INIT( 0x0000000000000001ull, 0xb040000000000000ull )}; // 10^-40, used in trivial path static BID_UINT128 BID128_10PM40 = {BID128_LH_INIT( 0x0000000000000001ull, 0x2ff0000000000000ull )}; // NaN for inputs |x| > 1 static BID_UINT128 BID128_NAN = {BID128_LH_INIT( 0x0000000000000000ull, 0x7c00000000000000ull )}; BID_F128_CONST_DEF( c_1em40, 3f7a16c262777579, c58c46475896767b); // 1e-40 BID_F128_CONST_DEF( c_7_10ths, 3ffe666666666666, 6666666666666666); // .7 BID_F128_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F128_CONST_DEF( c_zero, 0000000000000000, 0000000000000000); // 0.0 BID128_FUNCTION_ARG1 (bid128_asin, x) // Declare local variables BID_UINT128 res, t; BID_F128_TYPE xd, td, yd, abs_xd; BID_UINT128 tm1 = BID128_MINUS1; BID_UINT128 t10pm40 = BID128_10PM40; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // Convert to binary BIDECIMAL_CALL1(bid128_to_binary128,xd,x); // If the input is very small indeed, do a special computation, since // the conversion to binary may already have underflowed to zero. // The computation is just x * (1 + e), to work with directed rounding. __bid_f128_fabs(abs_xd, xd); if (__bid_f128_lt(abs_xd, c_1em40.v)) { BIDECIMAL_CALL3(bid128_fma,res,x,t10pm40,x); BID_RETURN(res); } // If the input is not too close to +/- 1 then do it "naively" if (__bid_f128_le(abs_xd, c_7_10ths.v)) { __bid_f128_asin(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN (res); } // If the input is > 1 in magnitude, fail else if (__bid_f128_gt(abs_xd, c_one.v)) { res = BID128_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(res) } // Otherwise compute sqrt(1 - x^2) accurately and use acos instead. else { BIDECIMAL_CALL3(bid128_fma,t,x,x,tm1); BIDECIMAL_CALL1(bid128_to_binary128,td,t); __bid_f128_neg(yd, td); __bid_f128_sqrt(yd, yd); __bid_f128_acos(yd, yd); if (__bid_f128_lt(xd, c_zero.v)) __bid_f128_neg(yd, yd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN (res); } } LIBRARY/src/bid32_exp10.c0000644€­ Q01134020000000520415113665770013723 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_EXTERN_C double pow(double, double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_exp10, BID_UINT32, x) BID_UINT32 sign_x, coefficient_x; BID_UINT32 valid_x, res; double xd, zd; int exponent_x; valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN if ((x & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e000000) == 0x7e000000) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK32; BID_RETURN (res); } // x is Infinity? if ((x & 0x78000000) == 0x78000000) { res = sign_x ? 0 : 0x78000000; BID_RETURN (res); } // x is 0 res = 0x32800001; BID_RETURN (res); } BIDECIMAL_CALL1(bid32_to_binary64,xd,x); if (xd >= 97.0) zd = 1.0e200; else if (xd < -101.0) zd = 1.0e-200; else zd = pow(10.0, xd); BIDECIMAL_CALL1(binary64_to_bid32,res,zd); BID_RETURN (res); } LIBRARY/src/bid128_fma.c0000644€­ Q01134020000054475515113665770013642 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * * BID128 fma x * y + z * ****************************************************************************/ #include "bid_internal.h" static void bid_rounding_correction (unsigned int rnd_mode, unsigned int is_inexact_lt_midpoint, unsigned int is_inexact_gt_midpoint, unsigned int is_midpoint_lt_even, unsigned int is_midpoint_gt_even, int unbexp, BID_UINT128 * ptrres, _IDEC_flags * ptrfpsf) { // unbiased true exponent unbexp may be larger than emax BID_UINT128 res = *ptrres; // expected to have the correct sign and coefficient // (the exponent field is ignored, as unbexp is used instead) BID_UINT64 sign, exp; BID_UINT64 C_hi, C_lo; // general correction from RN to RA, RM, RP, RZ // Note: if the result is negative, then is_inexact_lt_midpoint, // is_inexact_gt_midpoint, is_midpoint_lt_even, and is_midpoint_gt_even // have to be considered as if determined for the absolute value of the // result (so they seem to be reversed) if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) { *ptrfpsf |= BID_INEXACT_EXCEPTION; } // apply correction to result calculated with unbounded exponent sign = res.w[1] & MASK_SIGN; exp = (BID_UINT64) (unbexp + 6176) << 49; // valid only if expmin<=unbexp<=expmax C_hi = res.w[1] & MASK_COEFF; C_lo = res.w[0]; if ((!sign && ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even))) || (sign && ((rnd_mode == BID_ROUNDING_DOWN && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_DOWN) && is_midpoint_gt_even)))) { // C = C + 1 C_lo = C_lo + 1; if (C_lo == 0) C_hi = C_hi + 1; if (C_hi == 0x0001ed09bead87c0ull && C_lo == 0x378d8e6400000000ull) { // C = 10^34 => rounding overflow C_hi = 0x0000314dc6448d93ull; C_lo = 0x38c15b0a00000000ull; // 10^33 // exp = exp + EXP_P1; unbexp = unbexp + 1; exp = (BID_UINT64) (unbexp + 6176) << 49; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && ((sign && (rnd_mode == BID_ROUNDING_UP || rnd_mode == BID_ROUNDING_TO_ZERO)) || (!sign && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)))) { // C = C - 1 C_lo = C_lo - 1; if (C_lo == 0xffffffffffffffffull) C_hi--; // check if we crossed into the lower decade if (C_hi == 0x0000314dc6448d93ull && C_lo == 0x38c15b09ffffffffull) { // C = 10^33 - 1 if (exp > 0) { C_hi = 0x0001ed09bead87c0ull; // 10^34 - 1 C_lo = 0x378d8e63ffffffffull; // exp = exp - EXP_P1; unbexp = unbexp - 1; exp = (BID_UINT64) (unbexp + 6176) << 49; } else { // if exp = 0 the result is tiny & inexact *ptrfpsf |= BID_UNDERFLOW_EXCEPTION; } } } else { ; // the result is already correct } if (unbexp > expmax) { // 6111 *ptrfpsf |= (BID_INEXACT_EXCEPTION | BID_OVERFLOW_EXCEPTION); exp = 0; if (!sign) { // result is positive if (rnd_mode == BID_ROUNDING_UP || rnd_mode == BID_ROUNDING_TIES_AWAY) { // +inf C_hi = 0x7800000000000000ull; C_lo = 0x0000000000000000ull; } else { // res = +MAXFP = (10^34-1) * 10^emax C_hi = 0x5fffed09bead87c0ull; C_lo = 0x378d8e63ffffffffull; } } else { // result is negative if (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TIES_AWAY) { // -inf C_hi = 0xf800000000000000ull; C_lo = 0x0000000000000000ull; } else { // res = -MAXFP = -(10^34-1) * 10^emax C_hi = 0xdfffed09bead87c0ull; C_lo = 0x378d8e63ffffffffull; } } } // assemble the result res.w[1] = sign | exp | C_hi; res.w[0] = C_lo; *ptrres = res; } static void bid_add256 (BID_UINT256 x, BID_UINT256 y, BID_UINT256 * pz) { // *z = x + yl assume the sum fits in 256 bits BID_UINT256 z; z.w[0] = x.w[0] + y.w[0]; if (z.w[0] < x.w[0]) { x.w[1]++; if (x.w[1] == 0x0000000000000000ull) { x.w[2]++; if (x.w[2] == 0x0000000000000000ull) { x.w[3]++; } } } z.w[1] = x.w[1] + y.w[1]; if (z.w[1] < x.w[1]) { x.w[2]++; if (x.w[2] == 0x0000000000000000ull) { x.w[3]++; } } z.w[2] = x.w[2] + y.w[2]; if (z.w[2] < x.w[2]) { x.w[3]++; } z.w[3] = x.w[3] + y.w[3]; // it was assumed that no carry is possible *pz = z; } static void bid_sub256 (BID_UINT256 x, BID_UINT256 y, BID_UINT256 * pz) { // *z = x - y; assume x >= y BID_UINT256 z; z.w[0] = x.w[0] - y.w[0]; if (z.w[0] > x.w[0]) { x.w[1]--; if (x.w[1] == 0xffffffffffffffffull) { x.w[2]--; if (x.w[2] == 0xffffffffffffffffull) { x.w[3]--; } } } z.w[1] = x.w[1] - y.w[1]; if (z.w[1] > x.w[1]) { x.w[2]--; if (x.w[2] == 0xffffffffffffffffull) { x.w[3]--; } } z.w[2] = x.w[2] - y.w[2]; if (z.w[2] > x.w[2]) { x.w[3]--; } z.w[3] = x.w[3] - y.w[3]; // no borrow possible, because x >= y *pz = z; } static int bid_bid_nr_digits256 (BID_UINT256 R256) { int ind; // determine the number of decimal digits in R256 if (R256.w[3] == 0x0 && R256.w[2] == 0x0 && R256.w[1] == 0x0) { // between 1 and 19 digits for (ind = 1; ind <= 19; ind++) { if (R256.w[0] < bid_ten2k64[ind]) { break; } } // ind digits } else if (R256.w[3] == 0x0 && R256.w[2] == 0x0 && (R256.w[1] < bid_ten2k128[0].w[1] || (R256.w[1] == bid_ten2k128[0].w[1] && R256.w[0] < bid_ten2k128[0].w[0]))) { // 20 digits ind = 20; } else if (R256.w[3] == 0x0 && R256.w[2] == 0x0) { // between 21 and 38 digits for (ind = 1; ind <= 18; ind++) { if (R256.w[1] < bid_ten2k128[ind].w[1] || (R256.w[1] == bid_ten2k128[ind].w[1] && R256.w[0] < bid_ten2k128[ind].w[0])) { break; } } // ind + 20 digits ind = ind + 20; } else if (R256.w[3] == 0x0 && (R256.w[2] < bid_ten2k256[0].w[2] || (R256.w[2] == bid_ten2k256[0].w[2] && R256.w[1] < bid_ten2k256[0].w[1]) || (R256.w[2] == bid_ten2k256[0].w[2] && R256.w[1] == bid_ten2k256[0].w[1] && R256.w[0] < bid_ten2k256[0].w[0]))) { // 39 digits ind = 39; } else { // between 40 and 68 digits for (ind = 1; ind <= 29; ind++) { if (R256.w[3] < bid_ten2k256[ind].w[3] || (R256.w[3] == bid_ten2k256[ind].w[3] && R256.w[2] < bid_ten2k256[ind].w[2]) || (R256.w[3] == bid_ten2k256[ind].w[3] && R256.w[2] == bid_ten2k256[ind].w[2] && R256.w[1] < bid_ten2k256[ind].w[1]) || (R256.w[3] == bid_ten2k256[ind].w[3] && R256.w[2] == bid_ten2k256[ind].w[2] && R256.w[1] == bid_ten2k256[ind].w[1] && R256.w[0] < bid_ten2k256[ind].w[0])) { break; } } // ind + 39 digits ind = ind + 39; } return (ind); } // add/subtract C4 and C3 * 10^scale; this may follow a previous rounding, so // use the rounding information from ptr_is_* to avoid a double rounding error static void bid_add_and_round (int q3, int q4, int e4, int delta, int p34, BID_UINT64 z_sign, BID_UINT64 p_sign, BID_UINT128 C3, BID_UINT256 C4, int rnd_mode, int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint, _IDEC_flags * ptrfpsf, BID_UINT128 * ptrres) { int scale; int x0; int ind; BID_UINT64 R64; BID_UINT128 P128, R128; BID_UINT192 P192, R192; BID_UINT256 R256; int is_midpoint_lt_even = 0; int is_midpoint_gt_even = 0; int is_inexact_lt_midpoint = 0; int is_inexact_gt_midpoint = 0; int is_midpoint_lt_even0 = 0; int is_midpoint_gt_even0 = 0; int is_inexact_lt_midpoint0 = 0; int is_inexact_gt_midpoint0 = 0; int incr_exp = 0; int is_tiny = 0; int lt_half_ulp = 0; int eq_half_ulp = 0; // int gt_half_ulp = 0; BID_UINT128 res = *ptrres; // scale C3 up by 10^(q4-delta-q3), 0 <= q4-delta-q3 <= 2*P34-2 = 66 scale = q4 - delta - q3; // 0 <= scale <= 66 (or 0 <= scale <= 68 if this // comes from Cases (2), (3), (4), (5), (6), with 0 <= |delta| <= 1 // calculate C3 * 10^scale in R256 (it has at most 67 decimal digits for // Cases (15),(16),(17) and at most 69 for Cases (2),(3),(4),(5),(6)) if (scale == 0) { R256.w[3] = 0x0ull; R256.w[2] = 0x0ull; R256.w[1] = C3.w[1]; R256.w[0] = C3.w[0]; } else if (scale <= 19) { // 10^scale fits in 64 bits P128.w[1] = 0; P128.w[0] = bid_ten2k64[scale]; __mul_128x128_to_256 (R256, P128, C3); } else if (scale <= 38) { // 10^scale fits in 128 bits __mul_128x128_to_256 (R256, bid_ten2k128[scale - 20], C3); } else if (scale <= 57) { // 39 <= scale <= 57 // 10^scale fits in 192 bits but C3 * 10^scale fits in 223 or 230 bits // (10^67 has 223 bits; 10^69 has 230 bits); // must split the computation: // 10^scale * C3 = 10*38 * 10^(scale-38) * C3 where 10^38 takes 127 // bits and so 10^(scale-38) * C3 fits in 128 bits with certainty // Note that 1 <= scale - 38 <= 19 => 10^(scale-38) fits in 64 bits __mul_64x128_to_128 (R128, bid_ten2k64[scale - 38], C3); // now multiply R128 by 10^38 __mul_128x128_to_256 (R256, R128, bid_ten2k128[18]); } else { // 58 <= scale <= 66 // 10^scale takes between 193 and 220 bits, // and C3 * 10^scale fits in 223 bits (10^67/10^69 has 223/230 bits) // must split the computation: // 10^scale * C3 = 10*38 * 10^(scale-38) * C3 where 10^38 takes 127 // bits and so 10^(scale-38) * C3 fits in 128 bits with certainty // Note that 20 <= scale - 38 <= 30 => 10^(scale-38) fits in 128 bits // Calculate first 10^(scale-38) * C3, which fits in 128 bits; because // 10^(scale-38) takes more than 64 bits, C3 will take less than 64 __mul_64x128_to_128 (R128, C3.w[0], bid_ten2k128[scale - 58]); // now calculate 10*38 * 10^(scale-38) * C3 __mul_128x128_to_256 (R256, R128, bid_ten2k128[18]); } // C3 * 10^scale is now in R256 // for Cases (15), (16), (17) C4 > C3 * 10^scale because C4 has at least // one extra digit; for Cases (2), (3), (4), (5), or (6) any order is // possible // add/subtract C4 and C3 * 10^scale; the exponent is e4 if (p_sign == z_sign) { // R256 = C4 + R256 // calculate R256 = C4 + C3 * 10^scale = C4 + R256 which is exact, // but may require rounding bid_add256 (C4, R256, &R256); } else { // if (p_sign != z_sign) { // R256 = C4 - R256 // calculate R256 = C4 - C3 * 10^scale = C4 - R256 or // R256 = C3 * 10^scale - C4 = R256 - C4 which is exact, // but may require rounding // compare first R256 = C3 * 10^scale and C4 if (R256.w[3] > C4.w[3] || (R256.w[3] == C4.w[3] && R256.w[2] > C4.w[2]) || (R256.w[3] == C4.w[3] && R256.w[2] == C4.w[2] && R256.w[1] > C4.w[1]) || (R256.w[3] == C4.w[3] && R256.w[2] == C4.w[2] && R256.w[1] == C4.w[1] && R256.w[0] >= C4.w[0])) { // C3 * 10^scale >= C4 // calculate R256 = C3 * 10^scale - C4 = R256 - C4, which is exact, // but may require rounding bid_sub256 (R256, C4, &R256); // flip p_sign too, because the result has the sign of z p_sign = z_sign; } else { // if C4 > C3 * 10^scale // calculate R256 = C4 - C3 * 10^scale = C4 - R256, which is exact, // but may require rounding bid_sub256 (C4, R256, &R256); } // if the result is pure zero, the sign depends on the rounding mode // (x*y and z had opposite signs) if (R256.w[3] == 0x0ull && R256.w[2] == 0x0ull && R256.w[1] == 0x0ull && R256.w[0] == 0x0ull) { if (rnd_mode != BID_ROUNDING_DOWN) p_sign = 0x0000000000000000ull; else p_sign = 0x8000000000000000ull; // the exponent is max (e4, expmin) if (e4 < -6176) e4 = expmin; // assemble result res.w[1] = p_sign | ((BID_UINT64) (e4 + 6176) << 49); res.w[0] = 0x0; *ptrres = res; return; } } // determine the number of decimal digits in R256 ind = bid_bid_nr_digits256 (R256); // the exact result is (-1)^p_sign * R256 * 10^e4 where q (R256) = ind; // round to the destination precision, with unbounded exponent if (ind <= p34) { // result rounded to the destination precision with unbounded exponent // is exact if (ind + e4 < p34 + expmin) { is_tiny = 1; // applies to all rounding modes // (regardless of the tininess detection method) } res.w[1] = p_sign | ((BID_UINT64) (e4 + 6176) << 49) | R256.w[1]; res.w[0] = R256.w[0]; // Note: res is correct only if expmin <= e4 <= expmax } else { // if (ind > p34) // if more than P digits, round to nearest to P digits // round R256 to p34 digits x0 = ind - p34; // 1 <= x0 <= 34 as 35 <= ind <= 68 if (ind <= 38) { P128.w[1] = R256.w[1]; P128.w[0] = R256.w[0]; bid_round128_19_38 (ind, x0, P128, &R128, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); } else if (ind <= 57) { P192.w[2] = R256.w[2]; P192.w[1] = R256.w[1]; P192.w[0] = R256.w[0]; bid_round192_39_57 (ind, x0, P192, &R192, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); R128.w[1] = R192.w[1]; R128.w[0] = R192.w[0]; } else { // if (ind <= 68) bid_round256_58_76 (ind, x0, R256, &R256, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); R128.w[1] = R256.w[1]; R128.w[0] = R256.w[0]; } #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (e4 + x0 < expmin) { // for all rounding modes is_tiny = 1; } #endif // the rounded result has p34 = 34 digits e4 = e4 + x0 + incr_exp; if (rnd_mode == BID_ROUNDING_TO_NEAREST) { #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (e4 < expmin) { is_tiny = 1; // for other rounding modes apply correction } #endif } else { // for RM, RP, RZ, RA apply correction in order to determine tininess // but do not save the result; apply the correction to // (-1)^p_sign * significand * 10^0 P128.w[1] = p_sign | 0x3040000000000000ull | R128.w[1]; P128.w[0] = R128.w[0]; bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, 0, &P128, ptrfpsf); scale = ((P128.w[1] & MASK_EXP) >> 49) - 6176; // -1, 0, or +1 // the number of digits in the significand is p34 = 34 #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (e4 + scale < expmin) { is_tiny = 1; } #endif } ind = p34; // the number of decimal digits in the signifcand of res res.w[1] = p_sign | ((BID_UINT64) (e4 + 6176) << 49) | R128.w[1]; // RN res.w[0] = R128.w[0]; // Note: res is correct only if expmin <= e4 <= expmax // set the inexact flag after rounding with bounded exponent, if any } // at this point we have the result rounded with unbounded exponent in // res and we know its tininess: // res = (-1)^p_sign * significand * 10^e4, // where q (significand) = ind <= p34 // Note: res is correct only if expmin <= e4 <= expmax // check for overflow if RN if (rnd_mode == BID_ROUNDING_TO_NEAREST && (ind + e4) > (p34 + expmax)) { res.w[1] = p_sign | 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; *ptrres = res; *ptrfpsf |= (BID_INEXACT_EXCEPTION | BID_OVERFLOW_EXCEPTION); return; // BID_RETURN (res) } // else not overflow or not RN, so continue // if (e4 >= expmin) we have the result rounded with bounded exponent if (e4 < expmin) { x0 = expmin - e4; // x0 >= 1; the number of digits to chop off of res // where the result rounded [at most] once is // (-1)^p_sign * significand_res * 10^e4 // avoid double rounding error is_inexact_lt_midpoint0 = is_inexact_lt_midpoint; is_inexact_gt_midpoint0 = is_inexact_gt_midpoint; is_midpoint_lt_even0 = is_midpoint_lt_even; is_midpoint_gt_even0 = is_midpoint_gt_even; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; if (x0 > ind) { // nothing is left of res when moving the decimal point left x0 digits is_inexact_lt_midpoint = 1; res.w[1] = p_sign | 0x0000000000000000ull; res.w[0] = 0x0000000000000000ull; e4 = expmin; } else if (x0 == ind) { // 1 <= x0 = ind <= p34 = 34 // this is <, =, or > 1/2 ulp // compare the ind-digit value in the significand of res with // 1/2 ulp = 5*10^(ind-1), i.e. determine whether it is // less than, equal to, or greater than 1/2 ulp (significand of res) R128.w[1] = res.w[1] & MASK_COEFF; R128.w[0] = res.w[0]; if (ind <= 19) { if (R128.w[0] < bid_midpoint64[ind - 1]) { // < 1/2 ulp lt_half_ulp = 1; is_inexact_lt_midpoint = 1; } else if (R128.w[0] == bid_midpoint64[ind - 1]) { // = 1/2 ulp eq_half_ulp = 1; is_midpoint_gt_even = 1; } else { // > 1/2 ulp // gt_half_ulp = 1; is_inexact_gt_midpoint = 1; } } else { // if (ind <= 38) { if (R128.w[1] < bid_midpoint128[ind - 20].w[1] || (R128.w[1] == bid_midpoint128[ind - 20].w[1] && R128.w[0] < bid_midpoint128[ind - 20].w[0])) { // < 1/2 ulp lt_half_ulp = 1; is_inexact_lt_midpoint = 1; } else if (R128.w[1] == bid_midpoint128[ind - 20].w[1] && R128.w[0] == bid_midpoint128[ind - 20].w[0]) { // = 1/2 ulp eq_half_ulp = 1; is_midpoint_gt_even = 1; } else { // > 1/2 ulp // gt_half_ulp = 1; is_inexact_gt_midpoint = 1; } } if (lt_half_ulp || eq_half_ulp) { // res = +0.0 * 10^expmin res.w[1] = 0x0000000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // if (gt_half_ulp) // res = +1 * 10^expmin res.w[1] = 0x0000000000000000ull; res.w[0] = 0x0000000000000001ull; } res.w[1] = p_sign | res.w[1]; e4 = expmin; } else { // if (1 <= x0 <= ind - 1 <= 33) // round the ind-digit result to ind - x0 digits if (ind <= 18) { // 2 <= ind <= 18 bid_round64_2_18 (ind, x0, res.w[0], &R64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res.w[1] = 0x0; res.w[0] = R64; } else if (ind <= 38) { P128.w[1] = res.w[1] & MASK_COEFF; P128.w[0] = res.w[0]; bid_round128_19_38 (ind, x0, P128, &res, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); } e4 = e4 + x0; // expmin // we want the exponent to be expmin, so if incr_exp = 1 then // multiply the rounded result by 10 - it will still fit in 113 bits if (incr_exp) { // 64 x 128 -> 128 P128.w[1] = res.w[1] & MASK_COEFF; P128.w[0] = res.w[0]; __mul_64x128_to_128 (res, bid_ten2k64[1], P128); } res.w[1] = p_sign | ((BID_UINT64) (e4 + 6176) << 49) | (res.w[1] & MASK_COEFF); // avoid a double rounding error if ((is_inexact_gt_midpoint0 || is_midpoint_lt_even0) && is_midpoint_lt_even) { // double rounding error upward // res = res - 1 res.w[0]--; if (res.w[0] == 0xffffffffffffffffull) res.w[1]--; // Note: a double rounding error upward is not possible; for this // the result after the first rounding would have to be 99...95 // (35 digits in all), possibly followed by a number of zeros; this // is not possible in Cases (2)-(6) or (15)-(17) which may get here is_midpoint_lt_even = 0; is_inexact_lt_midpoint = 1; } else if ((is_inexact_lt_midpoint0 || is_midpoint_gt_even0) && is_midpoint_gt_even) { // double rounding error downward // res = res + 1 res.w[0]++; if (res.w[0] == 0) res.w[1]++; is_midpoint_gt_even = 0; is_inexact_gt_midpoint = 1; } else if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { // if this second rounding was exact the result may still be // inexact because of the first rounding if (is_inexact_gt_midpoint0 || is_midpoint_lt_even0) { is_inexact_gt_midpoint = 1; } if (is_inexact_lt_midpoint0 || is_midpoint_gt_even0) { is_inexact_lt_midpoint = 1; } } else if (is_midpoint_gt_even && (is_inexact_gt_midpoint0 || is_midpoint_lt_even0)) { // pulled up to a midpoint is_inexact_lt_midpoint = 1; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else if (is_midpoint_lt_even && (is_inexact_lt_midpoint0 || is_midpoint_gt_even0)) { // pulled down to a midpoint is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else { ; } } } // res contains the correct result // apply correction if not rounding to nearest if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e4, &res, ptrfpsf); } if (is_midpoint_lt_even || is_midpoint_gt_even || is_inexact_lt_midpoint || is_inexact_gt_midpoint) { // set the inexact flag *ptrfpsf |= BID_INEXACT_EXCEPTION; if (is_tiny) *ptrfpsf |= BID_UNDERFLOW_EXCEPTION; } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; *ptrres = res; return; } #if DECIMAL_CALL_BY_REFERENCE static void bid128_ext_fma (int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint, BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px, y = *py, z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else static BID_UINT128 bid128_ext_fma (int *ptr_is_midpoint_lt_even, int *ptr_is_midpoint_gt_even, int *ptr_is_inexact_lt_midpoint, int *ptr_is_inexact_gt_midpoint, BID_UINT128 x, BID_UINT128 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT64 x_sign, y_sign, z_sign, p_sign, tmp_sign; BID_UINT64 x_exp = 0, y_exp = 0, z_exp = 0, p_exp; int true_p_exp; BID_UINT128 C1, C2, C3; BID_UINT256 C4; int q1 = 0, q2 = 0, q3 = 0, q4; int e1, e2, e3, e4; int scale, ind, delta, x0; int p34 = P34; // used to modify the limit on the number of digits BID_UI64DOUBLE tmp; int x_nr_bits, y_nr_bits, z_nr_bits; unsigned int save_fpsf; int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0; int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; int is_midpoint_lt_even0 = 0, is_midpoint_gt_even0 = 0; int is_inexact_lt_midpoint0 = 0, is_inexact_gt_midpoint0 = 0; int incr_exp = 0; int lsb; int lt_half_ulp = 0; int eq_half_ulp = 0; int gt_half_ulp = 0; int is_tiny = 0; BID_UINT64 R64, tmp64; BID_UINT128 P128, R128; BID_UINT192 P192, R192; BID_UINT256 R256; #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING unsigned int C4gt5toq4m1; #endif // the following are based on the table of special cases for fma; the NaN // behavior is similar to that of the IA-64 Architecture fma // identify cases where at least one operand is NaN BID_SWAP128 (x); BID_SWAP128 (y); BID_SWAP128 (z); if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN // if x = {0, f, inf, NaN}, y = NaN, z = {0, f, inf, NaN} then res = Q (y) // check first for non-canonical NaN payload if (((y.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((y.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (y.w[0] > 0x38c15b09ffffffffull))) { y.w[1] = y.w[1] & 0xffffc00000000000ull; y.w[0] = 0x0ull; } if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (y) res.w[1] = y.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = y.w[0]; } else { // y is QNaN // return y res.w[1] = y.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = y.w[0]; // if z = SNaN or x = SNaN signal invalid exception if ((z.w[1] & MASK_SNAN) == MASK_SNAN || (x.w[1] & MASK_SNAN) == MASK_SNAN) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else if ((z.w[1] & MASK_NAN) == MASK_NAN) { // z is NAN // if x = {0, f, inf, NaN}, y = {0, f, inf}, z = NaN then res = Q (z) // check first for non-canonical NaN payload if (((z.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((z.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (z.w[0] > 0x38c15b09ffffffffull))) { z.w[1] = z.w[1] & 0xffffc00000000000ull; z.w[0] = 0x0ull; } if ((z.w[1] & MASK_SNAN) == MASK_SNAN) { // z is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (z) res.w[1] = z.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = z.w[0]; } else { // z is QNaN // return z res.w[1] = z.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = z.w[0]; // if x = SNaN signal invalid exception if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, y = {0, f, inf}, z = {0, f, inf} then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } // x, y, z are 0, f, or inf but not NaN => unpack the arguments and check // for non-canonical values x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; if ((x.w[1] & MASK_ANY_INF) != MASK_INF) { // x != inf // if x is not infinity check for non-canonical values - treated as zero if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } } y_sign = y.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C2.w[1] = y.w[1] & MASK_COEFF; C2.w[0] = y.w[0]; if ((y.w[1] & MASK_ANY_INF) != MASK_INF) { // y != inf // if y is not infinity check for non-canonical values - treated as zero if ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical y_exp = (y.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C2.w[1] = 0; // significand high C2.w[0] = 0; // significand low } else { // G0_G1 != 11 y_exp = y.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C2.w[1] > 0x0001ed09bead87c0ull || (C2.w[1] == 0x0001ed09bead87c0ull && C2.w[0] > 0x378d8e63ffffffffull)) { // y is non-canonical if coefficient is larger than 10^34 -1 C2.w[1] = 0; C2.w[0] = 0; } else { // canonical ; } } } z_sign = z.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C3.w[1] = z.w[1] & MASK_COEFF; C3.w[0] = z.w[0]; if ((z.w[1] & MASK_ANY_INF) != MASK_INF) { // z != inf // if z is not infinity check for non-canonical values - treated as zero if ((z.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical z_exp = (z.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C3.w[1] = 0; // significand high C3.w[0] = 0; // significand low } else { // G0_G1 != 11 z_exp = z.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C3.w[1] > 0x0001ed09bead87c0ull || (C3.w[1] == 0x0001ed09bead87c0ull && C3.w[0] > 0x378d8e63ffffffffull)) { // z is non-canonical if coefficient is larger than 10^34 -1 C3.w[1] = 0; C3.w[0] = 0; } else { // canonical ; } } } p_sign = x_sign ^ y_sign; // sign of the product // identify cases where at least one operand is infinity if ((x.w[1] & MASK_ANY_INF) == MASK_INF) { // x = inf if ((y.w[1] & MASK_ANY_INF) == MASK_INF) { // y = inf if ((z.w[1] & MASK_ANY_INF) == MASK_INF) { // z = inf if (p_sign == z_sign) { res.w[1] = z_sign | MASK_INF; res.w[0] = 0x0; } else { // return QNaN Indefinite res.w[1] = 0x7c00000000000000ull; res.w[0] = 0x0000000000000000ull; // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } } else { // z = 0 or z = f res.w[1] = p_sign | MASK_INF; res.w[0] = 0x0; } } else if (C2.w[1] != 0 || C2.w[0] != 0) { // y = f if ((z.w[1] & MASK_ANY_INF) == MASK_INF) { // z = inf if (p_sign == z_sign) { res.w[1] = z_sign | MASK_INF; res.w[0] = 0x0; } else { // return QNaN Indefinite res.w[1] = 0x7c00000000000000ull; res.w[0] = 0x0000000000000000ull; // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } } else { // z = 0 or z = f res.w[1] = p_sign | MASK_INF; res.w[0] = 0x0; } } else { // y = 0 // return QNaN Indefinite res.w[1] = 0x7c00000000000000ull; res.w[0] = 0x0000000000000000ull; // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else if ((y.w[1] & MASK_ANY_INF) == MASK_INF) { // y = inf if ((z.w[1] & MASK_ANY_INF) == MASK_INF) { // z = inf // x = f, necessarily if ((p_sign != z_sign) || (C1.w[1] == 0x0ull && C1.w[0] == 0x0ull)) { // return QNaN Indefinite res.w[1] = 0x7c00000000000000ull; res.w[0] = 0x0000000000000000ull; // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } else { res.w[1] = z_sign | MASK_INF; res.w[0] = 0x0; } } else if (C1.w[1] == 0x0 && C1.w[0] == 0x0) { // x = 0 // z = 0, f, inf // return QNaN Indefinite res.w[1] = 0x7c00000000000000ull; res.w[0] = 0x0000000000000000ull; // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } else { // x = f and z = 0, f, necessarily res.w[1] = p_sign | MASK_INF; res.w[0] = 0x0; } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else if ((z.w[1] & MASK_ANY_INF) == MASK_INF) { // z = inf // x = 0, f and y = 0, f, necessarily res.w[1] = z_sign | MASK_INF; res.w[0] = 0x0; *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } true_p_exp = (x_exp >> 49) - 6176 + (y_exp >> 49) - 6176; if (true_p_exp < -6176) p_exp = 0; // cannot be less than EXP_MIN else p_exp = (BID_UINT64) (true_p_exp + 6176) << 49; if (((C1.w[1] == 0x0 && C1.w[0] == 0x0) || (C2.w[1] == 0x0 && C2.w[0] == 0x0)) && C3.w[1] == 0x0 && C3.w[0] == 0x0) { // (x = 0 or y = 0) and z = 0 // the result is 0 if (p_exp < z_exp) res.w[1] = p_exp; // preferred exponent else res.w[1] = z_exp; // preferred exponent if (p_sign == z_sign) { res.w[1] |= z_sign; res.w[0] = 0x0; } else { // x * y and z have opposite signs if (rnd_mode == BID_ROUNDING_DOWN) { // res = -0.0 res.w[1] |= MASK_SIGN; res.w[0] = 0x0; } else { // res = +0.0 // res.w[1] |= 0x0; res.w[0] = 0x0; } } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } // from this point on, we may need to know the number of decimal digits // in the significands of x, y, z when x, y, z != 0 if (C1.w[1] != 0 || C1.w[0] != 0) { // x = f (non-zero finite) // q1 = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } q1 = bid_nr_digits[x_nr_bits - 1].digits; if (q1 == 0) { q1 = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q1++; } } if (C2.w[1] != 0 || C2.w[0] != 0) { // y = f (non-zero finite) // q2 = nr. of decimal digits in y // determine first the nr. of bits in y if (C2.w[1] == 0) { if (C2.w[0] >= 0x0020000000000000ull) { // y >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp.d = (double) (C2.w[0] >> 32); // exact conversion y_nr_bits = 33 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if y < 2^53 tmp.d = (double) C2.w[0]; // exact conversion y_nr_bits = 1 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C2.w[1] != 0 => nr. bits = 64 + nr_bits (C2.w[1]) tmp.d = (double) C2.w[1]; // exact conversion y_nr_bits = 65 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } q2 = bid_nr_digits[y_nr_bits - 1].digits; if (q2 == 0) { q2 = bid_nr_digits[y_nr_bits - 1].digits1; if (C2.w[1] > bid_nr_digits[y_nr_bits - 1].threshold_hi || (C2.w[1] == bid_nr_digits[y_nr_bits - 1].threshold_hi && C2.w[0] >= bid_nr_digits[y_nr_bits - 1].threshold_lo)) q2++; } } if (C3.w[1] != 0 || C3.w[0] != 0) { // z = f (non-zero finite) // q3 = nr. of decimal digits in z // determine first the nr. of bits in z if (C3.w[1] == 0) { if (C3.w[0] >= 0x0020000000000000ull) { // z >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp.d = (double) (C3.w[0] >> 32); // exact conversion z_nr_bits = 33 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if z < 2^53 tmp.d = (double) C3.w[0]; // exact conversion z_nr_bits = 1 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C3.w[1] != 0 => nr. bits = 64 + nr_bits (C3.w[1]) tmp.d = (double) C3.w[1]; // exact conversion z_nr_bits = 65 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } q3 = bid_nr_digits[z_nr_bits - 1].digits; if (q3 == 0) { q3 = bid_nr_digits[z_nr_bits - 1].digits1; if (C3.w[1] > bid_nr_digits[z_nr_bits - 1].threshold_hi || (C3.w[1] == bid_nr_digits[z_nr_bits - 1].threshold_hi && C3.w[0] >= bid_nr_digits[z_nr_bits - 1].threshold_lo)) q3++; } } if ((C1.w[1] == 0x0 && C1.w[0] == 0x0) || (C2.w[1] == 0x0 && C2.w[0] == 0x0)) { // x = 0 or y = 0 // z = f, necessarily; for 0 + z return z, with the preferred exponent // the result is z, but need to get the preferred exponent if (z_exp <= p_exp) { // the preferred exponent is z_exp res.w[1] = z_sign | (z_exp & MASK_EXP) | C3.w[1]; res.w[0] = C3.w[0]; } else { // if (p_exp < z_exp) the preferred exponent is p_exp // return (C3 * 10^scale) * 10^(z_exp - scale) // where scale = min (p34-q3, (z_exp-p_exp) >> 49) scale = p34 - q3; ind = (z_exp - p_exp) >> 49; if (ind < scale) scale = ind; if (scale == 0) { res.w[1] = z.w[1]; // & MASK_COEFF, which is redundant res.w[0] = z.w[0]; } else if (q3 <= 19) { // z fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 C3.w[0] * bid_ten2k64[scale] __mul_64x64_to_128MACH (res, C3.w[0], bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 C3.w[0] * bid_ten2k128[scale - 20] __mul_128x64_to_128 (res, C3.w[0], bid_ten2k128[scale - 20]); } } else { // z fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * C3 __mul_128x64_to_128 (res, bid_ten2k64[scale], C3); } // subtract scale from the exponent z_exp = z_exp - ((BID_UINT64) scale << 49); res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else { ; // continue with x = f, y = f, z = 0 or x = f, y = f, z = f } e1 = (x_exp >> 49) - 6176; // unbiased exponent of x e2 = (y_exp >> 49) - 6176; // unbiased exponent of y e3 = (z_exp >> 49) - 6176; // unbiased exponent of z e4 = e1 + e2; // unbiased exponent of the exact x * y // calculate C1 * C2 and its number of decimal digits, q4 // the exact product has either q1 + q2 - 1 or q1 + q2 decimal digits // where 2 <= q1 + q2 <= 68 // calculate C4 = C1 * C2 and determine q C4.w[3] = C4.w[2] = C4.w[1] = C4.w[0] = 0; if (q1 + q2 <= 19) { // if 2 <= q1 + q2 <= 19, C4 = C1 * C2 fits in 64 bits C4.w[0] = C1.w[0] * C2.w[0]; // if C4 < 10^(q1+q2-1) then q4 = q1 + q2 - 1 else q4 = q1 + q2 if (C4.w[0] < bid_ten2k64[q1 + q2 - 1]) q4 = q1 + q2 - 1; // q4 in [1, 18] else q4 = q1 + q2; // q4 in [2, 19] // length of C1 * C2 rounded up to a multiple of 64 bits is len = 64; } else if (q1 + q2 == 20) { // C4 = C1 * C2 fits in 64 or 128 bits // q1 <= 19 and q2 <= 19 so both C1 and C2 fit in 64 bits __mul_64x64_to_128MACH (C4, C1.w[0], C2.w[0]); // if C4 < 10^(q1+q2-1) = 10^19 then q4 = q1+q2-1 = 19 else q4 = q1+q2 = 20 if (C4.w[1] == 0 && C4.w[0] < bid_ten2k64[19]) { // 19 = q1+q2-1 // length of C1 * C2 rounded up to a multiple of 64 bits is len = 64; q4 = 19; // 19 = q1 + q2 - 1 } else { // if (C4.w[1] == 0) // length of C1 * C2 rounded up to a multiple of 64 bits is len = 64; // else // length of C1 * C2 rounded up to a multiple of 64 bits is len = 128; q4 = 20; // 20 = q1 + q2 } } else if (q1 + q2 <= 38) { // 21 <= q1 + q2 <= 38 // C4 = C1 * C2 fits in 64 or 128 bits // (64 bits possibly, but only when q1 + q2 = 21 and C4 has 20 digits) // at least one of C1, C2 has at most 19 decimal digits & fits in 64 bits if (q1 <= 19) { __mul_128x64_to_128 (C4, C1.w[0], C2); } else { // q2 <= 19 __mul_128x64_to_128 (C4, C2.w[0], C1); } // if C4 < 10^(q1+q2-1) then q4 = q1 + q2 - 1 else q4 = q1 + q2 if (C4.w[1] < bid_ten2k128[q1 + q2 - 21].w[1] || (C4.w[1] == bid_ten2k128[q1 + q2 - 21].w[1] && C4.w[0] < bid_ten2k128[q1 + q2 - 21].w[0])) { // if (C4.w[1] == 0) // q4 = 20, necessarily // length of C1 * C2 rounded up to a multiple of 64 bits is len = 64; // else // length of C1 * C2 rounded up to a multiple of 64 bits is len = 128; q4 = q1 + q2 - 1; // q4 in [20, 37] } else { // length of C1 * C2 rounded up to a multiple of 64 bits is len = 128; q4 = q1 + q2; // q4 in [21, 38] } } else if (q1 + q2 == 39) { // C4 = C1 * C2 fits in 128 or 192 bits // both C1 and C2 fit in 128 bits (actually in 113 bits) // may replace this by 128x128_to192 __mul_128x128_to_256 (C4, C1, C2); // C4.w[3] is 0 // if C4 < 10^(q1+q2-1) = 10^38 then q4 = q1+q2-1 = 38 else q4 = q1+q2 = 39 if (C4.w[2] == 0 && (C4.w[1] < bid_ten2k128[18].w[1] || (C4.w[1] == bid_ten2k128[18].w[1] && C4.w[0] < bid_ten2k128[18].w[0]))) { // 18 = 38 - 20 = q1+q2-1 - 20 // length of C1 * C2 rounded up to a multiple of 64 bits is len = 128; q4 = 38; // 38 = q1 + q2 - 1 } else { // if (C4.w[2] == 0) // length of C1 * C2 rounded up to a multiple of 64 bits is len = 128; // else // length of C1 * C2 rounded up to a multiple of 64 bits is len = 192; q4 = 39; // 39 = q1 + q2 } } else if (q1 + q2 <= 57) { // 40 <= q1 + q2 <= 57 // C4 = C1 * C2 fits in 128 or 192 bits // (128 bits possibly, but only when q1 + q2 = 40 and C4 has 39 digits) // both C1 and C2 fit in 128 bits (actually in 113 bits); at most one // may fit in 64 bits if (C1.w[1] == 0) { // C1 fits in 64 bits // __mul_64x128_full (REShi64, RESlo128, A64, B128) __mul_64x128_full (C4.w[2], C4, C1.w[0], C2); } else if (C2.w[1] == 0) { // C2 fits in 64 bits // __mul_64x128_full (REShi64, RESlo128, A64, B128) __mul_64x128_full (C4.w[2], C4, C2.w[0], C1); } else { // both C1 and C2 require 128 bits // may use __mul_128x128_to_192 (C4.w[2], C4.w[0], C2.w[0], C1); __mul_128x128_to_256 (C4, C1, C2); // C4.w[3] = 0 } // if C4 < 10^(q1+q2-1) then q4 = q1 + q2 - 1 else q4 = q1 + q2 if (C4.w[2] < bid_ten2k256[q1 + q2 - 40].w[2] || (C4.w[2] == bid_ten2k256[q1 + q2 - 40].w[2] && (C4.w[1] < bid_ten2k256[q1 + q2 - 40].w[1] || (C4.w[1] == bid_ten2k256[q1 + q2 - 40].w[1] && C4.w[0] < bid_ten2k256[q1 + q2 - 40].w[0])))) { // if (C4.w[2] == 0) // q4 = 39, necessarily // length of C1 * C2 rounded up to a multiple of 64 bits is len = 128; // else // length of C1 * C2 rounded up to a multiple of 64 bits is len = 192; q4 = q1 + q2 - 1; // q4 in [39, 56] } else { // length of C1 * C2 rounded up to a multiple of 64 bits is len = 192; q4 = q1 + q2; // q4 in [40, 57] } } else if (q1 + q2 == 58) { // C4 = C1 * C2 fits in 192 or 256 bits; // both C1 and C2 fit in 128 bits (actually in 113 bits); none can // fit in 64 bits, because each number must have at least 24 decimal // digits for the sum to have 58 (as the max. nr. of digits is 34) => // C1.w[1] != 0 and C2.w[1] != 0 __mul_128x128_to_256 (C4, C1, C2); // if C4 < 10^(q1+q2-1) = 10^57 then q4 = q1+q2-1 = 57 else q4 = q1+q2 = 58 if (C4.w[3] == 0 && (C4.w[2] < bid_ten2k256[18].w[2] || (C4.w[2] == bid_ten2k256[18].w[2] && (C4.w[1] < bid_ten2k256[18].w[1] || (C4.w[1] == bid_ten2k256[18].w[1] && C4.w[0] < bid_ten2k256[18].w[0]))))) { // 18 = 57 - 39 = q1+q2-1 - 39 // length of C1 * C2 rounded up to a multiple of 64 bits is len = 192; q4 = 57; // 57 = q1 + q2 - 1 } else { // if (C4.w[3] == 0) // length of C1 * C2 rounded up to a multiple of 64 bits is len = 192; // else // length of C1 * C2 rounded up to a multiple of 64 bits is len = 256; q4 = 58; // 58 = q1 + q2 } } else { // if 59 <= q1 + q2 <= 68 // C4 = C1 * C2 fits in 192 or 256 bits // (192 bits possibly, but only when q1 + q2 = 59 and C4 has 58 digits) // both C1 and C2 fit in 128 bits (actually in 113 bits); none fits in // 64 bits // may use __mul_128x128_to_192 (C4.w[2], C4.w[0], C2.w[0], C1); __mul_128x128_to_256 (C4, C1, C2); // C4.w[3] = 0 // if C4 < 10^(q1+q2-1) then q4 = q1 + q2 - 1 else q4 = q1 + q2 if (C4.w[3] < bid_ten2k256[q1 + q2 - 40].w[3] || (C4.w[3] == bid_ten2k256[q1 + q2 - 40].w[3] && (C4.w[2] < bid_ten2k256[q1 + q2 - 40].w[2] || (C4.w[2] == bid_ten2k256[q1 + q2 - 40].w[2] && (C4.w[1] < bid_ten2k256[q1 + q2 - 40].w[1] || (C4.w[1] == bid_ten2k256[q1 + q2 - 40].w[1] && C4.w[0] < bid_ten2k256[q1 + q2 - 40].w[0])))))) { // if (C4.w[3] == 0) // q4 = 58, necessarily // length of C1 * C2 rounded up to a multiple of 64 bits is len = 192; // else // length of C1 * C2 rounded up to a multiple of 64 bits is len = 256; q4 = q1 + q2 - 1; // q4 in [58, 67] } else { // length of C1 * C2 rounded up to a multiple of 64 bits is len = 256; q4 = q1 + q2; // q4 in [59, 68] } } if (C3.w[1] == 0x0 && C3.w[0] == 0x0) { // x = f, y = f, z = 0 save_fpsf = *pfpsf; // sticky bits - caller value must be preserved *pfpsf = 0; if (q4 > p34) { // truncate C4 to p34 digits into res // x = q4-p34, 1 <= x <= 34 because 35 <= q4 <= 68 x0 = q4 - p34; if (q4 <= 38) { P128.w[1] = C4.w[1]; P128.w[0] = C4.w[0]; bid_round128_19_38 (q4, x0, P128, &res, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); } else if (q4 <= 57) { // 35 <= q4 <= 57 P192.w[2] = C4.w[2]; P192.w[1] = C4.w[1]; P192.w[0] = C4.w[0]; bid_round192_39_57 (q4, x0, P192, &R192, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res.w[0] = R192.w[0]; res.w[1] = R192.w[1]; } else { // if (q4 <= 68) bid_round256_58_76 (q4, x0, C4, &R256, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res.w[0] = R256.w[0]; res.w[1] = R256.w[1]; } e4 = e4 + x0; q4 = p34; if (incr_exp) { e4 = e4 + 1; #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (q4 + e4 == expmin + p34) *pfpsf |= (BID_INEXACT_EXCEPTION | BID_UNDERFLOW_EXCEPTION); #endif } // res is now the coefficient of the result rounded to the destination // precision, with unbounded exponent; the exponent is e4; q4=digits(res) } else { // if (q4 <= p34) // C4 * 10^e4 is the result rounded to the destination precision, with // unbounded exponent (which is exact) if ((q4 + e4 <= p34 + expmax) && (e4 > expmax)) { // e4 is too large, but can be brought within range by scaling up C4 scale = e4 - expmax; // 1 <= scale < P-q4 <= P-1 => 1 <= scale <= P-2 // res = (C4 * 10^scale) * 10^expmax if (q4 <= 19) { // C4 fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 C4.w[0] * bid_ten2k64[scale] __mul_64x64_to_128MACH (res, C4.w[0], bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 C4.w[0] * bid_ten2k128[scale - 20] __mul_128x64_to_128 (res, C4.w[0], bid_ten2k128[scale - 20]); } } else { // C4 fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * CC43 __mul_128x64_to_128 (res, bid_ten2k64[scale], C4); } e4 = e4 - scale; // expmax q4 = q4 + scale; } else { res.w[1] = C4.w[1]; res.w[0] = C4.w[0]; } // res is the coefficient of the result rounded to the destination // precision, with unbounded exponent (it has q4 digits); the exponent // is e4 (exact result) } // check for overflow if (q4 + e4 > p34 + expmax) { if (rnd_mode == BID_ROUNDING_TO_NEAREST) { res.w[1] = p_sign | 0x7800000000000000ull; // +/-inf res.w[0] = 0x0000000000000000ull; *pfpsf |= (BID_INEXACT_EXCEPTION | BID_OVERFLOW_EXCEPTION); } else { res.w[1] = p_sign | res.w[1]; bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e4, &res, pfpsf); } *pfpsf |= save_fpsf; *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } // check for underflow if (q4 + e4 < expmin + p34) { is_tiny = 1; // the result is tiny // (good also for most cases if 'before rounding') if (e4 < expmin) { // if e4 < expmin, we must truncate more of res x0 = expmin - e4; // x0 >= 1 is_inexact_lt_midpoint0 = is_inexact_lt_midpoint; is_inexact_gt_midpoint0 = is_inexact_gt_midpoint; is_midpoint_lt_even0 = is_midpoint_lt_even; is_midpoint_gt_even0 = is_midpoint_gt_even; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; // the number of decimal digits in res is q4 if (x0 < q4) { // 1 <= x0 <= q4-1 => round res to q4 - x0 digits if (q4 <= 18) { // 2 <= q4 <= 18, 1 <= x0 <= 17 bid_round64_2_18 (q4, x0, res.w[0], &R64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); if (incr_exp) { // R64 = 10^(q4-x0), 1 <= q4 - x0 <= q4 - 1, 1 <= q4 - x0 <= 17 R64 = bid_ten2k64[q4 - x0]; } // res.w[1] = 0; (from above) res.w[0] = R64; } else { // if (q4 <= 34) // 19 <= q4 <= 38 P128.w[1] = res.w[1]; P128.w[0] = res.w[0]; bid_round128_19_38 (q4, x0, P128, &res, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); if (incr_exp) { // increase coefficient by a factor of 10; this will be <= 10^33 // R128 = 10^(q4-x0), 1 <= q4 - x0 <= q4 - 1, 1 <= q4 - x0 <= 37 if (q4 - x0 <= 19) { // 1 <= q4 - x0 <= 19 // res.w[1] = 0; res.w[0] = bid_ten2k64[q4 - x0]; } else { // 20 <= q4 - x0 <= 37 res.w[0] = bid_ten2k128[q4 - x0 - 20].w[0]; res.w[1] = bid_ten2k128[q4 - x0 - 20].w[1]; } } } e4 = e4 + x0; // expmin } else if (x0 == q4) { // the second rounding is for 0.d(0)d(1)...d(q4-1) * 10^emin // determine relationship with 1/2 ulp if (q4 <= 19) { if (res.w[0] < bid_midpoint64[q4 - 1]) { // < 1/2 ulp lt_half_ulp = 1; is_inexact_lt_midpoint = 1; } else if (res.w[0] == bid_midpoint64[q4 - 1]) { // = 1/2 ulp eq_half_ulp = 1; is_midpoint_gt_even = 1; } else { // > 1/2 ulp // gt_half_ulp = 1; is_inexact_gt_midpoint = 1; } } else { // if (q4 <= 34) if (res.w[1] < bid_midpoint128[q4 - 20].w[1] || (res.w[1] == bid_midpoint128[q4 - 20].w[1] && res.w[0] < bid_midpoint128[q4 - 20].w[0])) { // < 1/2 ulp lt_half_ulp = 1; is_inexact_lt_midpoint = 1; } else if (res.w[1] == bid_midpoint128[q4 - 20].w[1] && res.w[0] == bid_midpoint128[q4 - 20].w[0]) { // = 1/2 ulp eq_half_ulp = 1; is_midpoint_gt_even = 1; } else { // > 1/2 ulp // gt_half_ulp = 1; is_inexact_gt_midpoint = 1; } } if (lt_half_ulp || eq_half_ulp) { // res = +0.0 * 10^expmin res.w[1] = 0x0000000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // if (gt_half_ulp) // res = +1 * 10^expmin res.w[1] = 0x0000000000000000ull; res.w[0] = 0x0000000000000001ull; } e4 = expmin; } else { // if (x0 > q4) // the second rounding is for 0.0...d(0)d(1)...d(q4-1) * 10^emin res.w[1] = 0; res.w[0] = 0; e4 = expmin; is_inexact_lt_midpoint = 1; } // avoid a double rounding error if ((is_inexact_gt_midpoint0 || is_midpoint_lt_even0) && is_midpoint_lt_even) { // double rounding error upward // res = res - 1 res.w[0]--; if (res.w[0] == 0xffffffffffffffffull) res.w[1]--; // Note: a double rounding error upward is not possible; for this // the result after the first rounding would have to be 99...95 // (35 digits in all), possibly followed by a number of zeros; this // not possible for f * f + 0 is_midpoint_lt_even = 0; is_inexact_lt_midpoint = 1; } else if ((is_inexact_lt_midpoint0 || is_midpoint_gt_even0) && is_midpoint_gt_even) { // double rounding error downward // res = res + 1 res.w[0]++; if (res.w[0] == 0) res.w[1]++; is_midpoint_gt_even = 0; is_inexact_gt_midpoint = 1; } else if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { // if this second rounding was exact the result may still be // inexact because of the first rounding if (is_inexact_gt_midpoint0 || is_midpoint_lt_even0) { is_inexact_gt_midpoint = 1; } if (is_inexact_lt_midpoint0 || is_midpoint_gt_even0) { is_inexact_lt_midpoint = 1; } } else if (is_midpoint_gt_even && (is_inexact_gt_midpoint0 || is_midpoint_lt_even0)) { // pulled up to a midpoint is_inexact_lt_midpoint = 1; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else if (is_midpoint_lt_even && (is_inexact_lt_midpoint0 || is_midpoint_gt_even0)) { // pulled down to a midpoint is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else { ; } } else { // if e4 >= emin then q4 < P and the result is tiny and exact if (e3 < e4) { // if (e3 < e4) the preferred exponent is e3 // return (C4 * 10^scale) * 10^(e4 - scale) // where scale = min (p34-q4, (e4 - e3)) scale = p34 - q4; ind = e4 - e3; if (ind < scale) scale = ind; if (scale == 0) { ; // res and e4 are unchanged } else if (q4 <= 19) { // C4 fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 res.w[0] * bid_ten2k64[scale] __mul_64x64_to_128MACH (res, res.w[0], bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 res.w[0] * bid_ten2k128[scale - 20] __mul_128x64_to_128 (res, res.w[0], bid_ten2k128[scale - 20]); } } else { // res fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * C3 __mul_128x64_to_128 (res, bid_ten2k64[scale], res); } // subtract scale from the exponent e4 = e4 - scale; } } // check for inexact result if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) { // set the inexact flag and the underflow flag *pfpsf |= BID_INEXACT_EXCEPTION; *pfpsf |= BID_UNDERFLOW_EXCEPTION; } res.w[1] = p_sign | ((BID_UINT64) (e4 + 6176) << 49) | res.w[1]; if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e4, &res, pfpsf); } *pfpsf |= save_fpsf; *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } // no overflow, and no underflow for rounding to nearest // (although if tininess is detected 'before rounding', we may // get here if incr_exp = 1 and then q4 + e4 == expmin + p34) res.w[1] = p_sign | ((BID_UINT64) (e4 + 6176) << 49) | res.w[1]; if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e4, &res, pfpsf); // if e4 = expmin && significand < 10^33 => result is tiny (for RD, RZ) if (e4 == expmin) { if ((res.w[1] & MASK_COEFF) < 0x0000314dc6448d93ull || ((res.w[1] & MASK_COEFF) == 0x0000314dc6448d93ull && res.w[0] < 0x38c15b0a00000000ull)) { is_tiny = 1; } } } if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; if (is_tiny) *pfpsf |= BID_UNDERFLOW_EXCEPTION; } if ((*pfpsf & BID_INEXACT_EXCEPTION) == 0) { // x * y is exact // need to ensure that the result has the preferred exponent p_exp = res.w[1] & MASK_EXP; if (z_exp < p_exp) { // the preferred exponent is z_exp // signficand of res in C3 C3.w[1] = res.w[1] & MASK_COEFF; C3.w[0] = res.w[0]; // the number of decimal digits of x * y is q4 <= 34 // Note: the coefficient fits in 128 bits // return (C3 * 10^scale) * 10^(p_exp - scale) // where scale = min (p34-q4, (p_exp-z_exp) >> 49) scale = p34 - q4; ind = (p_exp - z_exp) >> 49; if (ind < scale) scale = ind; // subtract scale from the exponent p_exp = p_exp - ((BID_UINT64) scale << 49); if (scale == 0) { ; // leave res unchanged } else if (q4 <= 19) { // x * y fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 C3.w[0] * bid_ten2k64[scale] __mul_64x64_to_128MACH (res, C3.w[0], bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 C3.w[0] * bid_ten2k128[scale - 20] __mul_128x64_to_128 (res, C3.w[0], bid_ten2k128[scale - 20]); } res.w[1] = p_sign | (p_exp & MASK_EXP) | res.w[1]; } else { // x * y fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * C3 __mul_128x64_to_128 (res, bid_ten2k64[scale], C3); res.w[1] = p_sign | (p_exp & MASK_EXP) | res.w[1]; } } // else leave the result as it is, because p_exp <= z_exp } *pfpsf |= save_fpsf; *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } // else we have f * f + f // continue with x = f, y = f, z = f delta = q3 + e3 - q4 - e4; delta_ge_zero: if (delta >= 0) { if (p34 <= delta - 1 || // Case (1') (p34 == delta && e3 + 6176 < p34 - q3)) { // Case (1''A) // check for overflow, which can occur only in Case (1') if ((q3 + e3) > (p34 + expmax) && p34 <= delta - 1) { // e3 > expmax implies p34 <= delta-1 and e3 > expmax is a necessary // condition for (q3 + e3) > (p34 + expmax) if (rnd_mode == BID_ROUNDING_TO_NEAREST) { res.w[1] = z_sign | 0x7800000000000000ull; // +/-inf res.w[0] = 0x0000000000000000ull; *pfpsf |= (BID_INEXACT_EXCEPTION | BID_OVERFLOW_EXCEPTION); } else { if (p_sign == z_sign) { is_inexact_lt_midpoint = 1; } else { is_inexact_gt_midpoint = 1; } // q3 <= p34; if (q3 < p34) scale C3 up by 10^(p34-q3) scale = p34 - q3; if (scale == 0) { res.w[1] = z_sign | C3.w[1]; res.w[0] = C3.w[0]; } else { if (q3 <= 19) { // C3 fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 C3.w[0] * bid_ten2k64[scale] __mul_64x64_to_128MACH (res, C3.w[0], bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 C3.w[0] * bid_ten2k128[scale - 20] __mul_128x64_to_128 (res, C3.w[0], bid_ten2k128[scale - 20]); } } else { // C3 fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * C3 __mul_128x64_to_128 (res, bid_ten2k64[scale], C3); } // the coefficient in res has q3 + scale = p34 digits } e3 = e3 - scale; res.w[1] = z_sign | res.w[1]; bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e3, &res, pfpsf); } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } // res = z if (q3 < p34) { // the preferred exponent is z_exp - (p34 - q3) // return (C3 * 10^scale) * 10^(z_exp - scale) // where scale = min (p34-q3, z_exp-EMIN) scale = p34 - q3; ind = e3 + 6176; if (ind < scale) scale = ind; if (scale == 0) { res.w[1] = C3.w[1]; res.w[0] = C3.w[0]; } else if (q3 <= 19) { // z fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 C3.w[0] * bid_ten2k64[scale] __mul_64x64_to_128MACH (res, C3.w[0], bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 C3.w[0] * bid_ten2k128[scale - 20] __mul_128x64_to_128 (res, C3.w[0], bid_ten2k128[scale - 20]); } } else { // z fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * C3 __mul_128x64_to_128 (res, bid_ten2k64[scale], C3); } // the coefficient in res has q3 + scale digits // subtract scale from the exponent z_exp = z_exp - ((BID_UINT64) scale << 49); e3 = e3 - scale; res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; if (scale + q3 < p34) *pfpsf |= BID_UNDERFLOW_EXCEPTION; // OK for tininess detection // before or after rounding, because the exponent of the // rounded result with unbounded exponent does not change // due to rounding overflow } else { // if q3 = p34 scale = 0; res.w[1] = z_sign | ((BID_UINT64) (e3 + 6176) << 49) | C3.w[1]; res.w[0] = C3.w[0]; } // use the following to avoid double rounding errors when operating on // mixed formats in rounding to nearest, and for correcting the result // if not rounding to nearest if ((p_sign != z_sign) && (delta == (q3 + scale + 1))) { // there is a gap of exactly one digit between the scaled C3 and C4 // C3 * 10^ scale = 10^(q3+scale-1) <=> C3 = 10^(q3-1) is a special case if ((q3 <= 19 && C3.w[0] != bid_ten2k64[q3 - 1]) || (q3 == 20 && (C3.w[1] != 0 || C3.w[0] != bid_ten2k64[19])) || (q3 >= 21 && (C3.w[1] != bid_ten2k128[q3 - 21].w[1] || C3.w[0] != bid_ten2k128[q3 - 21].w[0]))) { // C3 * 10^ scale != 10^(q3-1) // if ((res.w[1] & MASK_COEFF) != 0x0000314dc6448d93ull || // res.w[0] != 0x38c15b0a00000000ull) { // C3 * 10^scale != 10^33 is_inexact_gt_midpoint = 1; // if (z_sign), set as if for abs. value } else { // if C3 * 10^scale = 10^(q3+scale-1) // ok from above e3 = (z_exp >> 49) - 6176; // the result is always inexact if (q4 == 1) { R64 = C4.w[0]; } else { // if q4 > 1 then truncate C4 from q4 digits to 1 digit; // x = q4-1, 1 <= x <= 67 and check if this operation is exact if (q4 <= 18) { // 2 <= q4 <= 18 bid_round64_2_18 (q4, q4 - 1, C4.w[0], &R64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); } else if (q4 <= 38) { P128.w[1] = C4.w[1]; P128.w[0] = C4.w[0]; bid_round128_19_38 (q4, q4 - 1, P128, &R128, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); R64 = R128.w[0]; // one decimal digit } else if (q4 <= 57) { P192.w[2] = C4.w[2]; P192.w[1] = C4.w[1]; P192.w[0] = C4.w[0]; bid_round192_39_57 (q4, q4 - 1, P192, &R192, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); R64 = R192.w[0]; // one decimal digit } else { // if (q4 <= 68) bid_round256_58_76 (q4, q4 - 1, C4, &R256, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); R64 = R256.w[0]; // one decimal digit } if (incr_exp) { R64 = 10; } } if (R64 == 5 && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint && !is_midpoint_lt_even && !is_midpoint_gt_even) { is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 1; is_midpoint_gt_even = 0; } else if ((e3 == expmin) || R64 < 5 || (R64 == 5 && is_inexact_gt_midpoint)) { // result does not change is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else { is_inexact_lt_midpoint = 1; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; // result decremented is 10^(q3+scale) - 1 if ((q3 + scale) <= 19) { res.w[1] = 0; res.w[0] = bid_ten2k64[q3 + scale]; } else { // if ((q3 + scale + 1) <= 35) res.w[1] = bid_ten2k128[q3 + scale - 20].w[1]; res.w[0] = bid_ten2k128[q3 + scale - 20].w[0]; } res.w[0] = res.w[0] - 1; // borrow never occurs z_exp = z_exp - EXP_P1; e3 = e3 - 1; res.w[1] = z_sign | ((BID_UINT64) (e3 + 6176) << 49) | res.w[1]; } if (e3 == expmin) { #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (R64 < 5 || (R64 == 5 && !is_inexact_lt_midpoint)) { ; // result not tiny (in round-to-nearest mode) // rounds to 10^33 * 10^emin } else { *pfpsf |= BID_UNDERFLOW_EXCEPTION; } #else *pfpsf |= BID_UNDERFLOW_EXCEPTION; // tiny if detected before rounding #endif } } // end 10^(q3+scale-1) // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { if (p_sign == z_sign) { // if (z_sign), set as if for absolute value is_inexact_lt_midpoint = 1; } else { // if (p_sign != z_sign) // if (z_sign), set as if for absolute value is_inexact_gt_midpoint = 1; } *pfpsf |= BID_INEXACT_EXCEPTION; } // the result is always inexact => set the inexact flag // Determine tininess: // if (exp > expmin) // the result is not tiny // else // if exp = emin // if (q3 + scale < p34) // the result is tiny // else // if (q3 + scale = p34) // if (C3 * 10^scale > 10^33) // the result is not tiny // else // if C3 * 10^scale = 10^33 // if (xy * z > 0) // the result is not tiny // else // if (xy * z < 0) // if (rnd_mode = RN || rnd_mode = RA) and (delta = P+1) and // C4 > 5 * 10^(q4-1) // the result is tiny // else // the result is not tiny // endif // endif // endif // endif #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING // determine if C4 > 5 * 10^(q4-1) if (q4 <= 19) { C4gt5toq4m1 = C4.w[0] > bid_midpoint64[q4 - 1]; } else if (q4 <= 38) { C4gt5toq4m1 = C4.w[1] > bid_midpoint128[q4 - 1].w[1] || (C4.w[1] == bid_midpoint128[q4 - 1].w[1] && C4.w[0] > bid_midpoint128[q4 - 1].w[0]); } else if (q4 <= 58) { C4gt5toq4m1 = C4.w[2] > bid_midpoint192[q4 - 1].w[2] || (C4.w[2] == bid_midpoint192[q4 - 1].w[2] && C4.w[1] > bid_midpoint192[q4 - 1].w[1]) || (C4.w[2] == bid_midpoint192[q4 - 1].w[2] && C4.w[1] == bid_midpoint192[q4 - 1].w[1] && C4.w[0] > bid_midpoint192[q4 - 1].w[0]); } else { // if (q4 <= 68) C4gt5toq4m1 = C4.w[3] > bid_midpoint256[q4 - 1].w[3] || (C4.w[3] == bid_midpoint256[q4 - 1].w[3] && C4.w[2] > bid_midpoint256[q4 - 1].w[2]) || (C4.w[3] == bid_midpoint256[q4 - 1].w[3] && C4.w[2] == bid_midpoint256[q4 - 1].w[2] && C4.w[1] > bid_midpoint256[q4 - 1].w[1]) || (C4.w[3] == bid_midpoint256[q4 - 1].w[3] && C4.w[2] == bid_midpoint256[q4 - 1].w[2] && C4.w[1] == bid_midpoint256[q4 - 1].w[1] && C4.w[0] > bid_midpoint256[q4 - 1].w[0]); } if ((e3 == expmin && (q3 + scale) < p34) || (e3 == expmin && (q3 + scale) == p34 && (res.w[1] & MASK_COEFF) == 0x0000314dc6448d93ull && // 10^33_high res.w[0] == 0x38c15b0a00000000ull && // 10^33_low z_sign != p_sign && (rnd_mode == BID_ROUNDING_TO_NEAREST || rnd_mode == BID_ROUNDING_TIES_AWAY) && (delta == (p34 + 1)) && C4gt5toq4m1)) { *pfpsf |= BID_UNDERFLOW_EXCEPTION; } #else if ((e3 == expmin && (q3 + scale) < p34) || (e3 == expmin && (q3 + scale) == p34 && (res.w[1] & MASK_COEFF) == 0x0000314dc6448d93ull && // 10^33_high res.w[0] == 0x38c15b0a00000000ull && // 10^33_low z_sign != p_sign)) { *pfpsf |= BID_UNDERFLOW_EXCEPTION; // for all rounding modes } #endif if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e3, &res, pfpsf); } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else if (p34 == delta) { // Case (1''B) // because Case (1''A) was treated above, e3 + 6176 >= p34 - q3 // and C3 can be scaled up to p34 digits if needed // scale C3 to p34 digits if needed scale = p34 - q3; // 0 <= scale <= p34 - 1 if (scale == 0) { res.w[1] = C3.w[1]; res.w[0] = C3.w[0]; } else if (q3 <= 19) { // z fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 C3.w[0] * bid_ten2k64[scale] __mul_64x64_to_128MACH (res, C3.w[0], bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 C3.w[0] * bid_ten2k128[scale - 20] __mul_128x64_to_128 (res, C3.w[0], bid_ten2k128[scale - 20]); } } else { // z fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * C3 __mul_128x64_to_128 (res, bid_ten2k64[scale], C3); } // subtract scale from the exponent z_exp = z_exp - ((BID_UINT64) scale << 49); e3 = e3 - scale; // now z_sign, z_exp, and res correspond to a z scaled to p34 = 34 digits // determine whether x * y is less than, equal to, or greater than // 1/2 ulp (z) if (q4 <= 19) { if (C4.w[0] < bid_midpoint64[q4 - 1]) { // < 1/2 ulp lt_half_ulp = 1; } else if (C4.w[0] == bid_midpoint64[q4 - 1]) { // = 1/2 ulp eq_half_ulp = 1; } else { // > 1/2 ulp gt_half_ulp = 1; } } else if (q4 <= 38) { if (C4.w[2] == 0 && (C4.w[1] < bid_midpoint128[q4 - 20].w[1] || (C4.w[1] == bid_midpoint128[q4 - 20].w[1] && C4.w[0] < bid_midpoint128[q4 - 20].w[0]))) { // < 1/2 ulp lt_half_ulp = 1; } else if (C4.w[2] == 0 && C4.w[1] == bid_midpoint128[q4 - 20].w[1] && C4.w[0] == bid_midpoint128[q4 - 20].w[0]) { // = 1/2 ulp eq_half_ulp = 1; } else { // > 1/2 ulp gt_half_ulp = 1; } } else if (q4 <= 58) { if (C4.w[3] == 0 && (C4.w[2] < bid_midpoint192[q4 - 39].w[2] || (C4.w[2] == bid_midpoint192[q4 - 39].w[2] && C4.w[1] < bid_midpoint192[q4 - 39].w[1]) || (C4.w[2] == bid_midpoint192[q4 - 39].w[2] && C4.w[1] == bid_midpoint192[q4 - 39].w[1] && C4.w[0] < bid_midpoint192[q4 - 39].w[0]))) { // < 1/2 ulp lt_half_ulp = 1; } else if (C4.w[3] == 0 && C4.w[2] == bid_midpoint192[q4 - 39].w[2] && C4.w[1] == bid_midpoint192[q4 - 39].w[1] && C4.w[0] == bid_midpoint192[q4 - 39].w[0]) { // = 1/2 ulp eq_half_ulp = 1; } else { // > 1/2 ulp gt_half_ulp = 1; } } else { if (C4.w[3] < bid_midpoint256[q4 - 59].w[3] || (C4.w[3] == bid_midpoint256[q4 - 59].w[3] && C4.w[2] < bid_midpoint256[q4 - 59].w[2]) || (C4.w[3] == bid_midpoint256[q4 - 59].w[3] && C4.w[2] == bid_midpoint256[q4 - 59].w[2] && C4.w[1] < bid_midpoint256[q4 - 59].w[1]) || (C4.w[3] == bid_midpoint256[q4 - 59].w[3] && C4.w[2] == bid_midpoint256[q4 - 59].w[2] && C4.w[1] == bid_midpoint256[q4 - 59].w[1] && C4.w[0] < bid_midpoint256[q4 - 59].w[0])) { // < 1/2 ulp lt_half_ulp = 1; } else if (C4.w[3] == bid_midpoint256[q4 - 59].w[3] && C4.w[2] == bid_midpoint256[q4 - 59].w[2] && C4.w[1] == bid_midpoint256[q4 - 59].w[1] && C4.w[0] == bid_midpoint256[q4 - 59].w[0]) { // = 1/2 ulp eq_half_ulp = 1; } else { // > 1/2 ulp gt_half_ulp = 1; } } if (p_sign == z_sign) { if (lt_half_ulp) { res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; // use the following to avoid double rounding errors when operating on // mixed formats in rounding to nearest is_inexact_lt_midpoint = 1; // if (z_sign), as if for absolute value } else if ((eq_half_ulp && (res.w[0] & 0x01)) || gt_half_ulp) { // add 1 ulp to the significand res.w[0]++; if (res.w[0] == 0x0ull) res.w[1]++; // check for rounding overflow, when coeff == 10^34 if ((res.w[1] & MASK_COEFF) == 0x0001ed09bead87c0ull && res.w[0] == 0x378d8e6400000000ull) { // coefficient = 10^34 e3 = e3 + 1; // coeff = 10^33 z_exp = ((BID_UINT64) (e3 + 6176) << 49) & MASK_EXP; res.w[1] = 0x0000314dc6448d93ull; res.w[0] = 0x38c15b0a00000000ull; } // end add 1 ulp res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; if (eq_half_ulp) { is_midpoint_lt_even = 1; // if (z_sign), as if for absolute value } else { is_inexact_gt_midpoint = 1; // if (z_sign), as if for absolute value } } else { // if (eq_half_ulp && !(res.w[0] & 0x01)) // leave unchanged res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; is_midpoint_gt_even = 1; // if (z_sign), as if for absolute value } // the result is always inexact, and never tiny // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // check for overflow if (e3 > expmax && rnd_mode == BID_ROUNDING_TO_NEAREST) { res.w[1] = z_sign | 0x7800000000000000ull; // +/-inf res.w[0] = 0x0000000000000000ull; *pfpsf |= (BID_INEXACT_EXCEPTION | BID_OVERFLOW_EXCEPTION); *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e3, &res, pfpsf); z_exp = res.w[1] & MASK_EXP; } } else { // if (p_sign != z_sign) // consider two cases, because C3 * 10^scale = 10^33 is a special case if (res.w[1] != 0x0000314dc6448d93ull || res.w[0] != 0x38c15b0a00000000ull) { // C3 * 10^scale != 10^33 if (lt_half_ulp) { res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; // use the following to avoid double rounding errors when operating // on mixed formats in rounding to nearest is_inexact_gt_midpoint = 1; // if (z_sign), as if for absolute value } else if ((eq_half_ulp && (res.w[0] & 0x01)) || gt_half_ulp) { // subtract 1 ulp from the significand res.w[0]--; if (res.w[0] == 0xffffffffffffffffull) res.w[1]--; res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; if (eq_half_ulp) { is_midpoint_gt_even = 1; // if (z_sign), as if for absolute value } else { is_inexact_lt_midpoint = 1; //if(z_sign), as if for absolute value } } else { // if (eq_half_ulp && !(res.w[0] & 0x01)) // leave unchanged res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; is_midpoint_lt_even = 1; // if (z_sign), as if for absolute value } // the result is always inexact, and never tiny // check for overflow for RN if (e3 > expmax) { if (rnd_mode == BID_ROUNDING_TO_NEAREST) { res.w[1] = z_sign | 0x7800000000000000ull; // +/-inf res.w[0] = 0x0000000000000000ull; *pfpsf |= (BID_INEXACT_EXCEPTION | BID_OVERFLOW_EXCEPTION); } else { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e3, &res, pfpsf); } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e3, &res, pfpsf); } z_exp = res.w[1] & MASK_EXP; } else { // if C3 * 10^scale = 10^33 e3 = (z_exp >> 49) - 6176; if (e3 > expmin) { // the result is exact if exp > expmin and C4 = d*10^(q4-1), // where d = 1, 2, 3, ..., 9; it could be tiny too, but exact if (q4 == 1) { // if q4 = 1 the result is exact // result coefficient = 10^34 - C4 res.w[1] = 0x0001ed09bead87c0ull; res.w[0] = 0x378d8e6400000000ull - C4.w[0]; z_exp = z_exp - EXP_P1; e3 = e3 - 1; res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; } else { // if q4 > 1 then truncate C4 from q4 digits to 1 digit; // x = q4-1, 1 <= x <= 67 and check if this operation is exact if (q4 <= 18) { // 2 <= q4 <= 18 bid_round64_2_18 (q4, q4 - 1, C4.w[0], &R64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); } else if (q4 <= 38) { P128.w[1] = C4.w[1]; P128.w[0] = C4.w[0]; bid_round128_19_38 (q4, q4 - 1, P128, &R128, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); R64 = R128.w[0]; // one decimal digit } else if (q4 <= 57) { P192.w[2] = C4.w[2]; P192.w[1] = C4.w[1]; P192.w[0] = C4.w[0]; bid_round192_39_57 (q4, q4 - 1, P192, &R192, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); R64 = R192.w[0]; // one decimal digit } else { // if (q4 <= 68) bid_round256_58_76 (q4, q4 - 1, C4, &R256, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); R64 = R256.w[0]; // one decimal digit } if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { // the result is exact: 10^34 - R64 // incr_exp = 0 with certainty z_exp = z_exp - EXP_P1; e3 = e3 - 1; res.w[1] = z_sign | (z_exp & MASK_EXP) | 0x0001ed09bead87c0ull; res.w[0] = 0x378d8e6400000000ull - R64; } else { // We want R64 to be the top digit of C4, but we actually // obtained (C4 * 10^(-q4+1))RN; a correction may be needed, // because the top digit is (C4 * 10^(-q4+1))RZ // however, if incr_exp = 1 then R64 = 10 with certainty if (incr_exp) { R64 = 10; } // the result is inexact as C4 has more than 1 significant digit // and C3 * 10^scale = 10^33 // example of case that is treated here: // 100...0 * 10^e3 - 0.41 * 10^e3 = // 0999...9.59 * 10^e3 -> rounds to 99...96*10^(e3-1) // note that (e3 > expmin} // in order to round, subtract R64 from 10^34 and then compare // C4 - R64 * 10^(q4-1) with 1/2 ulp // calculate 10^34 - R64 res.w[1] = 0x0001ed09bead87c0ull; res.w[0] = 0x378d8e6400000000ull - R64; z_exp = z_exp - EXP_P1; // will be OR-ed with sign & significand // calculate C4 - R64 * 10^(q4-1); this is a rare case and // R64 is small, 1 <= R64 <= 9 e3 = e3 - 1; if (is_inexact_lt_midpoint) { is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; } else if (is_inexact_gt_midpoint) { is_inexact_gt_midpoint = 0; is_inexact_lt_midpoint = 1; } else if (is_midpoint_lt_even) { is_midpoint_lt_even = 0; is_midpoint_gt_even = 1; } else if (is_midpoint_gt_even) { is_midpoint_gt_even = 0; is_midpoint_lt_even = 1; } else { ; } // the result is always inexact, and never tiny // check for overflow for RN if (e3 > expmax) { if (rnd_mode == BID_ROUNDING_TO_NEAREST) { res.w[1] = z_sign | 0x7800000000000000ull; // +/-inf res.w[0] = 0x0000000000000000ull; *pfpsf |= (BID_INEXACT_EXCEPTION | BID_OVERFLOW_EXCEPTION); } else { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e3, &res, pfpsf); } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; res.w[1] = z_sign | ((BID_UINT64) (e3 + 6176) << 49) | res.w[1]; if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e3, &res, pfpsf); } z_exp = res.w[1] & MASK_EXP; } // end result is inexact } // end q4 > 1 } else { // if (e3 = emin) // if e3 = expmin the result is also tiny (the condition for // tininess is C4 > 050...0 [q4 digits] which is met because // the msd of C4 is not zero) // the result is tiny and inexact in all rounding modes; // it is either 100...0 or 0999...9 (use lt_half_ulp, eq_half_ulp, // gt_half_ulp to calculate) // if (lt_half_ulp || eq_half_ulp) res = 10^33 stays unchanged // p_sign != z_sign so swap gt_half_ulp and lt_half_ulp if (gt_half_ulp) { // res = 10^33 - 1 res.w[1] = 0x0000314dc6448d93ull; res.w[0] = 0x38c15b09ffffffffull; } else { res.w[1] = 0x0000314dc6448d93ull; res.w[0] = 0x38c15b0a00000000ull; } res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; *pfpsf |= BID_UNDERFLOW_EXCEPTION; // inexact is set later if (eq_half_ulp) { is_midpoint_lt_even = 1; // if (z_sign), as if for absolute value } else if (lt_half_ulp) { is_inexact_gt_midpoint = 1; //if(z_sign), as if for absolute value } else { // if (gt_half_ulp) is_inexact_lt_midpoint = 1; //if(z_sign), as if for absolute value } if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e3, &res, pfpsf); z_exp = res.w[1] & MASK_EXP; } } // end e3 = emin // set the inexact flag (if the result was not exact) if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) *pfpsf |= BID_INEXACT_EXCEPTION; } // end 10^33 } // end if (p_sign != z_sign) res.w[1] = z_sign | (z_exp & MASK_EXP) | res.w[1]; *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else if (((q3 <= delta && delta < p34 && p34 < delta + q4) || // Case (2) (q3 <= delta && delta + q4 <= p34) || // Case (3) (delta < q3 && p34 < delta + q4) || // Case (4) (delta < q3 && q3 <= delta + q4 && delta + q4 <= p34) || // Case (5) (delta + q4 < q3)) && // Case (6) !(delta <= 1 && p_sign != z_sign)) { // Case (2), (3), (4), (5) or (6) // the result has the sign of z if ((q3 <= delta && delta < p34 && p34 < delta + q4) || // Case (2) (delta < q3 && p34 < delta + q4)) { // Case (4) // round first the sum x * y + z with unbounded exponent // scale C3 up by scale = p34 - q3, 1 <= scale <= p34-1, // 1 <= scale <= 33 // calculate res = C3 * 10^scale scale = p34 - q3; x0 = delta + q4 - p34; } else if (delta + q4 < q3) { // Case (6) // make Case (6) look like Case (3) or Case (5) with scale = 0 // by scaling up C4 by 10^(q3 - delta - q4) scale = q3 - delta - q4; // 1 <= scale <= 33 if (q4 <= 19) { // 1 <= scale <= 19; C4 fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 C4.w[0] * bid_ten2k64[scale] __mul_64x64_to_128MACH (P128, C4.w[0], bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 C4.w[0] * bid_ten2k128[scale - 20] __mul_128x64_to_128 (P128, C4.w[0], bid_ten2k128[scale - 20]); } } else { // C4 fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * C4 __mul_128x64_to_128 (P128, bid_ten2k64[scale], C4); } C4.w[0] = P128.w[0]; C4.w[1] = P128.w[1]; // e4 does not need adjustment, as it is not used from this point on scale = 0; x0 = 0; // now Case (6) looks like Case (3) or Case (5) with scale = 0 } else { // if Case (3) or Case (5) // Note: Case (3) is similar to Case (2), but scale differs and the // result is exact, unless it is tiny (so x0 = 0 when calculating the // result with unbounded exponent) // calculate first the sum x * y + z with unbounded exponent (exact) // scale C3 up by scale = delta + q4 - q3, 1 <= scale <= p34-1, // 1 <= scale <= 33 // calculate res = C3 * 10^scale scale = delta + q4 - q3; x0 = 0; // Note: the comments which follow refer [mainly] to Case (2)] } case2_repeat: if (scale == 0) { // this could happen e.g. if we return to case2_repeat // or in Case (4) res.w[1] = C3.w[1]; res.w[0] = C3.w[0]; } else if (q3 <= 19) { // 1 <= scale <= 19; z fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 C3.w[0] * bid_ten2k64[scale] __mul_64x64_to_128MACH (res, C3.w[0], bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 C3.w[0] * bid_ten2k128[scale - 20] __mul_128x64_to_128 (res, C3.w[0], bid_ten2k128[scale - 20]); } } else { // z fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * C3 __mul_128x64_to_128 (res, bid_ten2k64[scale], C3); } // e3 is already calculated e3 = e3 - scale; // now res = C3 * 10^scale and e3 = e3 - scale // Note: C3 * 10^scale could be 10^34 if we returned to case2_repeat // because the result was too small // round C4 to nearest to q4 - x0 digits, where x0 = delta + q4 - p34, // 1 <= x0 <= min (q4 - 1, 2 * p34 - 1) <=> 1 <= x0 <= min (q4 - 1, 67) // Also: 1 <= q4 - x0 <= p34 -1 => 1 <= q4 - x0 <= 33 (so the result of // the rounding fits in 128 bits!) // x0 = delta + q4 - p34 (calculated before reaching case2_repeat) // because q3 + q4 - x0 <= P => x0 >= q3 + q4 - p34 if (x0 == 0) { // this could happen only if we return to case2_repeat, or // for Case (3) or Case (6) R128.w[1] = C4.w[1]; R128.w[0] = C4.w[0]; } else if (q4 <= 18) { // 2 <= q4 <= 18, max(1, q3+q4-p34) <= x0 <= q4 - 1, 1 <= x0 <= 17 bid_round64_2_18 (q4, x0, C4.w[0], &R64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); if (incr_exp) { // R64 = 10^(q4-x0), 1 <= q4 - x0 <= q4 - 1, 1 <= q4 - x0 <= 17 R64 = bid_ten2k64[q4 - x0]; } R128.w[1] = 0; R128.w[0] = R64; } else if (q4 <= 38) { // 19 <= q4 <= 38, max(1, q3+q4-p34) <= x0 <= q4 - 1, 1 <= x0 <= 37 P128.w[1] = C4.w[1]; P128.w[0] = C4.w[0]; bid_round128_19_38 (q4, x0, P128, &R128, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); if (incr_exp) { // R128 = 10^(q4-x0), 1 <= q4 - x0 <= q4 - 1, 1 <= q4 - x0 <= 37 if (q4 - x0 <= 19) { // 1 <= q4 - x0 <= 19 R128.w[0] = bid_ten2k64[q4 - x0]; // R128.w[1] stays 0 } else { // 20 <= q4 - x0 <= 37 R128.w[0] = bid_ten2k128[q4 - x0 - 20].w[0]; R128.w[1] = bid_ten2k128[q4 - x0 - 20].w[1]; } } } else if (q4 <= 57) { // 38 <= q4 <= 57, max(1, q3+q4-p34) <= x0 <= q4 - 1, 5 <= x0 <= 56 P192.w[2] = C4.w[2]; P192.w[1] = C4.w[1]; P192.w[0] = C4.w[0]; bid_round192_39_57 (q4, x0, P192, &R192, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); // R192.w[2] is always 0 if (incr_exp) { // R192 = 10^(q4-x0), 1 <= q4 - x0 <= q4 - 5, 1 <= q4 - x0 <= 52 if (q4 - x0 <= 19) { // 1 <= q4 - x0 <= 19 R192.w[0] = bid_ten2k64[q4 - x0]; // R192.w[1] stays 0 // R192.w[2] stays 0 } else { // 20 <= q4 - x0 <= 33 R192.w[0] = bid_ten2k128[q4 - x0 - 20].w[0]; R192.w[1] = bid_ten2k128[q4 - x0 - 20].w[1]; // R192.w[2] stays 0 } } R128.w[1] = R192.w[1]; R128.w[0] = R192.w[0]; } else { // 58 <= q4 <= 68, max(1, q3+q4-p34) <= x0 <= q4 - 1, 25 <= x0 <= 67 bid_round256_58_76 (q4, x0, C4, &R256, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); // R256.w[3] and R256.w[2] are always 0 if (incr_exp) { // R256 = 10^(q4-x0), 1 <= q4 - x0 <= q4 - 25, 1 <= q4 - x0 <= 43 if (q4 - x0 <= 19) { // 1 <= q4 - x0 <= 19 R256.w[0] = bid_ten2k64[q4 - x0]; // R256.w[1] stays 0 // R256.w[2] stays 0 // R256.w[3] stays 0 } else { // 20 <= q4 - x0 <= 33 R256.w[0] = bid_ten2k128[q4 - x0 - 20].w[0]; R256.w[1] = bid_ten2k128[q4 - x0 - 20].w[1]; // R256.w[2] stays 0 // R256.w[3] stays 0 } } R128.w[1] = R256.w[1]; R128.w[0] = R256.w[0]; } // now add C3 * 10^scale in res and the signed top (q4-x0) digits of C4, // rounded to nearest, which were copied into R128 if (z_sign == p_sign) { lsb = res.w[0] & 0x01; // lsb of C3 * 10^scale // the sum can result in [up to] p34 or p34 + 1 digits res.w[0] = res.w[0] + R128.w[0]; res.w[1] = res.w[1] + R128.w[1]; if (res.w[0] < R128.w[0]) res.w[1]++; // carry // if res > 10^34 - 1 need to increase x0 and decrease scale by 1 if (res.w[1] > 0x0001ed09bead87c0ull || (res.w[1] == 0x0001ed09bead87c0ull && res.w[0] > 0x378d8e63ffffffffull)) { // avoid double rounding error is_inexact_lt_midpoint0 = is_inexact_lt_midpoint; is_inexact_gt_midpoint0 = is_inexact_gt_midpoint; is_midpoint_lt_even0 = is_midpoint_lt_even; is_midpoint_gt_even0 = is_midpoint_gt_even; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; P128.w[1] = res.w[1]; P128.w[0] = res.w[0]; bid_round128_19_38 (35, 1, P128, &res, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); // incr_exp is 0 with certainty in this case // avoid a double rounding error if ((is_inexact_gt_midpoint0 || is_midpoint_lt_even0) && is_midpoint_lt_even) { // double rounding error upward // res = res - 1 res.w[0]--; if (res.w[0] == 0xffffffffffffffffull) res.w[1]--; // Note: a double rounding error upward is not possible; for this // the result after the first rounding would have to be 99...95 // (35 digits in all), possibly followed by a number of zeros; this // not possible in Cases (2)-(6) or (15)-(17) which may get here is_midpoint_lt_even = 0; is_inexact_lt_midpoint = 1; } else if ((is_inexact_lt_midpoint0 || is_midpoint_gt_even0) && is_midpoint_gt_even) { // double rounding error downward // res = res + 1 res.w[0]++; if (res.w[0] == 0) res.w[1]++; is_midpoint_gt_even = 0; is_inexact_gt_midpoint = 1; } else if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { // if this second rounding was exact the result may still be // inexact because of the first rounding if (is_inexact_gt_midpoint0 || is_midpoint_lt_even0) { is_inexact_gt_midpoint = 1; } if (is_inexact_lt_midpoint0 || is_midpoint_gt_even0) { is_inexact_lt_midpoint = 1; } } else if (is_midpoint_gt_even && (is_inexact_gt_midpoint0 || is_midpoint_lt_even0)) { // pulled up to a midpoint is_inexact_lt_midpoint = 1; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else if (is_midpoint_lt_even && (is_inexact_lt_midpoint0 || is_midpoint_gt_even0)) { // pulled down to a midpoint is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else { ; } // adjust exponent e3 = e3 + 1; if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { if (is_midpoint_lt_even0 || is_midpoint_gt_even0 || is_inexact_lt_midpoint0 || is_inexact_gt_midpoint0) { is_inexact_lt_midpoint = 1; } } } else { // this is the result rounded with unbounded exponent, unless a // correction is needed res.w[1] = res.w[1] & MASK_COEFF; if (lsb == 1) { if (is_midpoint_gt_even) { // res = res + 1 is_midpoint_gt_even = 0; is_midpoint_lt_even = 1; res.w[0]++; if (res.w[0] == 0x0) res.w[1]++; // check for rounding overflow if (res.w[1] == 0x0001ed09bead87c0ull && res.w[0] == 0x378d8e6400000000ull) { // res = 10^34 => rounding overflow res.w[1] = 0x0000314dc6448d93ull; res.w[0] = 0x38c15b0a00000000ull; // 10^33 e3++; } } else if (is_midpoint_lt_even) { // res = res - 1 is_midpoint_lt_even = 0; is_midpoint_gt_even = 1; res.w[0]--; if (res.w[0] == 0xffffffffffffffffull) res.w[1]--; // if the result is pure zero, the sign depends on the rounding // mode (x*y and z had opposite signs) if (res.w[1] == 0x0ull && res.w[0] == 0x0ull) { if (rnd_mode != BID_ROUNDING_DOWN) z_sign = 0x0000000000000000ull; else z_sign = 0x8000000000000000ull; // the exponent is max (e3, expmin) res.w[1] = 0x0; res.w[0] = 0x0; *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } } else { ; } } } } else { // if (z_sign != p_sign) lsb = res.w[0] & 0x01; // lsb of C3 * 10^scale; R128 contains rounded C4 // used to swap rounding indicators if p_sign != z_sign // the sum can result in [up to] p34 or p34 - 1 digits tmp64 = res.w[0]; res.w[0] = res.w[0] - R128.w[0]; res.w[1] = res.w[1] - R128.w[1]; if (res.w[0] > tmp64) res.w[1]--; // borrow // if res < 10^33 and exp > expmin need to decrease x0 and // increase scale by 1 if (e3 > expmin && ((res.w[1] < 0x0000314dc6448d93ull || (res.w[1] == 0x0000314dc6448d93ull && res.w[0] < 0x38c15b0a00000000ull)) || ((is_inexact_lt_midpoint | is_midpoint_gt_even) && res.w[1] == 0x0000314dc6448d93ull && res.w[0] == 0x38c15b0a00000000ull)) && x0 >= 1) { x0 = x0 - 1; // first restore e3, otherwise it will be too small e3 = e3 + scale; scale = scale + 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; incr_exp = 0; goto case2_repeat; } // else this is the result rounded with unbounded exponent; // because the result has opposite sign to that of C4 which was // rounded, need to change the rounding indicators if (is_inexact_lt_midpoint) { is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; } else if (is_inexact_gt_midpoint) { is_inexact_gt_midpoint = 0; is_inexact_lt_midpoint = 1; } else if (lsb == 0) { if (is_midpoint_lt_even) { is_midpoint_lt_even = 0; is_midpoint_gt_even = 1; } else if (is_midpoint_gt_even) { is_midpoint_gt_even = 0; is_midpoint_lt_even = 1; } else { ; } } else if (lsb == 1) { if (is_midpoint_lt_even) { // res = res + 1 res.w[0]++; if (res.w[0] == 0x0) res.w[1]++; // check for rounding overflow if (res.w[1] == 0x0001ed09bead87c0ull && res.w[0] == 0x378d8e6400000000ull) { // res = 10^34 => rounding overflow res.w[1] = 0x0000314dc6448d93ull; res.w[0] = 0x38c15b0a00000000ull; // 10^33 e3++; } } else if (is_midpoint_gt_even) { // res = res - 1 res.w[0]--; if (res.w[0] == 0xffffffffffffffffull) res.w[1]--; // if the result is pure zero, the sign depends on the rounding // mode (x*y and z had opposite signs) if (res.w[1] == 0x0ull && res.w[0] == 0x0ull) { if (rnd_mode != BID_ROUNDING_DOWN) z_sign = 0x0000000000000000ull; else z_sign = 0x8000000000000000ull; // the exponent is max (e3, expmin) res.w[1] = 0x0; res.w[0] = 0x0; *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } } else { ; } } else { ; } } // check for underflow if (e3 == expmin) { // and if significand < 10^33 => result is tiny if ((res.w[1] & MASK_COEFF) < 0x0000314dc6448d93ull || ((res.w[1] & MASK_COEFF) == 0x0000314dc6448d93ull && res.w[0] < 0x38c15b0a00000000ull)) { is_tiny = 1; } #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (((res.w[1] & 0x7fffffffffffffffull) == 0x0000314dc6448d93ull) && (res.w[0] == 0x38c15b0a00000000ull) && // 10^33*10^-6176 (z_sign != p_sign)) is_tiny = 1; #endif } else if (e3 < expmin) { // the result is tiny, so we must truncate more of res is_tiny = 1; x0 = expmin - e3; is_inexact_lt_midpoint0 = is_inexact_lt_midpoint; is_inexact_gt_midpoint0 = is_inexact_gt_midpoint; is_midpoint_lt_even0 = is_midpoint_lt_even; is_midpoint_gt_even0 = is_midpoint_gt_even; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; // determine the number of decimal digits in res if (res.w[1] == 0x0) { // between 1 and 19 digits for (ind = 1; ind <= 19; ind++) { if (res.w[0] < bid_ten2k64[ind]) { break; } } // ind digits } else if (res.w[1] < bid_ten2k128[0].w[1] || (res.w[1] == bid_ten2k128[0].w[1] && res.w[0] < bid_ten2k128[0].w[0])) { // 20 digits ind = 20; } else { // between 21 and 38 digits for (ind = 1; ind <= 18; ind++) { if (res.w[1] < bid_ten2k128[ind].w[1] || (res.w[1] == bid_ten2k128[ind].w[1] && res.w[0] < bid_ten2k128[ind].w[0])) { break; } } // ind + 20 digits ind = ind + 20; } // at this point ind >= x0; because delta >= 2 on this path, the case // ind = x0 can occur only in Case (2) or case (3), when C3 has one // digit (q3 = 1) equal to 1 (C3 = 1), e3 is expmin (e3 = expmin), // the signs of x * y and z are opposite, and through cancellation // the most significant decimal digit in res has the weight // 10^(emin-1); however, it is clear that in this case the most // significant digit is 9, so the result before rounding is // 0.9... * 10^emin // Otherwise, ind > x0 because there are non-zero decimal digits in the // result with weight of at least 10^emin, and correction for underflow // can be carried out using the round*_*_2_* () routines if (x0 == ind) { // the result before rounding is 0.9... * 10^emin res.w[1] = 0x0; res.w[0] = 0x1; is_inexact_gt_midpoint = 1; } else if (ind <= 18) { // check that 2 <= ind // 2 <= ind <= 18, 1 <= x0 <= 17 bid_round64_2_18 (ind, x0, res.w[0], &R64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); if (incr_exp) { // R64 = 10^(ind-x0), 1 <= ind - x0 <= ind - 1, 1 <= ind - x0 <= 17 R64 = bid_ten2k64[ind - x0]; } res.w[1] = 0; res.w[0] = R64; } else if (ind <= 38) { // 19 <= ind <= 38 P128.w[1] = res.w[1]; P128.w[0] = res.w[0]; bid_round128_19_38 (ind, x0, P128, &res, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); if (incr_exp) { // R128 = 10^(ind-x0), 1 <= ind - x0 <= ind - 1, 1 <= ind - x0 <= 37 if (ind - x0 <= 19) { // 1 <= ind - x0 <= 19 res.w[0] = bid_ten2k64[ind - x0]; // res.w[1] stays 0 } else { // 20 <= ind - x0 <= 37 res.w[0] = bid_ten2k128[ind - x0 - 20].w[0]; res.w[1] = bid_ten2k128[ind - x0 - 20].w[1]; } } } // avoid a double rounding error if ((is_inexact_gt_midpoint0 || is_midpoint_lt_even0) && is_midpoint_lt_even) { // double rounding error upward // res = res - 1 res.w[0]--; if (res.w[0] == 0xffffffffffffffffull) res.w[1]--; // Note: a double rounding error upward is not possible; for this // the result after the first rounding would have to be 99...95 // (35 digits in all), possibly followed by a number of zeros; this // not possible in Cases (2)-(6) which may get here is_midpoint_lt_even = 0; is_inexact_lt_midpoint = 1; } else if ((is_inexact_lt_midpoint0 || is_midpoint_gt_even0) && is_midpoint_gt_even) { // double rounding error downward // res = res + 1 res.w[0]++; if (res.w[0] == 0) res.w[1]++; is_midpoint_gt_even = 0; is_inexact_gt_midpoint = 1; } else if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { // if this second rounding was exact the result may still be // inexact because of the first rounding if (is_inexact_gt_midpoint0 || is_midpoint_lt_even0) { is_inexact_gt_midpoint = 1; } if (is_inexact_lt_midpoint0 || is_midpoint_gt_even0) { is_inexact_lt_midpoint = 1; } } else if (is_midpoint_gt_even && (is_inexact_gt_midpoint0 || is_midpoint_lt_even0)) { // pulled up to a midpoint is_inexact_lt_midpoint = 1; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else if (is_midpoint_lt_even && (is_inexact_lt_midpoint0 || is_midpoint_gt_even0)) { // pulled down to a midpoint is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else { ; } // adjust exponent e3 = e3 + x0; if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { if (is_midpoint_lt_even0 || is_midpoint_gt_even0 || is_inexact_lt_midpoint0 || is_inexact_gt_midpoint0) { is_inexact_lt_midpoint = 1; } } } else { ; // not underflow } // check for inexact result if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; if (is_tiny) *pfpsf |= BID_UNDERFLOW_EXCEPTION; } // now check for significand = 10^34 (may have resulted from going // back to case2_repeat) if (res.w[1] == 0x0001ed09bead87c0ull && res.w[0] == 0x378d8e6400000000ull) { // if res = 10^34 res.w[1] = 0x0000314dc6448d93ull; // res = 10^33 res.w[0] = 0x38c15b0a00000000ull; e3 = e3 + 1; } res.w[1] = z_sign | ((BID_UINT64) (e3 + 6176) << 49) | res.w[1]; // check for overflow if (rnd_mode == BID_ROUNDING_TO_NEAREST && e3 > expmax) { res.w[1] = z_sign | 0x7800000000000000ull; // +/-inf res.w[0] = 0x0000000000000000ull; *pfpsf |= (BID_INEXACT_EXCEPTION | BID_OVERFLOW_EXCEPTION); } if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e3, &res, pfpsf); } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else { // we get here only if delta <= 1 in Cases (2), (3), (4), (5), or (6) and // the signs of x*y and z are opposite; in these cases massive // cancellation can occur, so it is better to scale either C3 or C4 and // to perform the subtraction before rounding; rounding is performed // next, depending on the number of decimal digits in the result and on // the exponent value // Note: overlow is not possible in this case // this is similar to Cases (15), (16), and (17) if (delta + q4 < q3) { // from Case (6) // Case (6) with 0<= delta <= 1 is similar to Cases (15), (16), and // (17) if we swap (C3, C4), (q3, q4), (e3, e4), (z_sign, p_sign) // and call bid_add_and_round; delta stays positive // C4.w[3] = 0 and C4.w[2] = 0, so swap just the low part of C4 with C3 P128.w[1] = C3.w[1]; P128.w[0] = C3.w[0]; C3.w[1] = C4.w[1]; C3.w[0] = C4.w[0]; C4.w[1] = P128.w[1]; C4.w[0] = P128.w[0]; ind = q3; q3 = q4; q4 = ind; ind = e3; e3 = e4; e4 = ind; tmp_sign = z_sign; z_sign = p_sign; p_sign = tmp_sign; } else { // from Cases (2), (3), (4), (5) // In Cases (2), (3), (4), (5) with 0 <= delta <= 1 C3 has to be // scaled up by q4 + delta - q3; this is the same as in Cases (15), // (16), and (17) if we just change the sign of delta delta = -delta; } bid_add_and_round (q3, q4, e4, delta, p34, z_sign, p_sign, C3, C4, rnd_mode, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, pfpsf, &res); *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } } else { // if delta < 0 delta = -delta; if (p34 < q4 && q4 <= delta) { // Case (7) // truncate C4 to p34 digits into res // x = q4-p34, 1 <= x <= 34 because 35 <= q4 <= 68 x0 = q4 - p34; if (q4 <= 38) { P128.w[1] = C4.w[1]; P128.w[0] = C4.w[0]; bid_round128_19_38 (q4, x0, P128, &res, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); } else if (q4 <= 57) { // 35 <= q4 <= 57 P192.w[2] = C4.w[2]; P192.w[1] = C4.w[1]; P192.w[0] = C4.w[0]; bid_round192_39_57 (q4, x0, P192, &R192, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res.w[0] = R192.w[0]; res.w[1] = R192.w[1]; } else { // if (q4 <= 68) bid_round256_58_76 (q4, x0, C4, &R256, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res.w[0] = R256.w[0]; res.w[1] = R256.w[1]; } e4 = e4 + x0; if (incr_exp) { e4 = e4 + 1; } if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { // if C4 rounded to p34 digits is exact then the result is inexact, // in a way that depends on the signs of x * y and z if (p_sign == z_sign) { is_inexact_lt_midpoint = 1; } else { // if (p_sign != z_sign) if (res.w[1] != 0x0000314dc6448d93ull || res.w[0] != 0x38c15b0a00000000ull) { // res != 10^33 is_inexact_gt_midpoint = 1; } else { // res = 10^33 and exact is a special case // if C3 < 1/2 ulp then res = 10^33 and is_inexact_gt_midpoint = 1 // if C3 = 1/2 ulp then res = 10^33 and is_midpoint_lt_even = 1 // if C3 > 1/2 ulp then res = 10^34-1 and is_inexact_lt_midpoint = 1 // Note: ulp is really ulp/10 (after borrow which propagates to msd) if (delta > p34 + 1) { // C3 < 1/2 // res = 10^33, unchanged is_inexact_gt_midpoint = 1; } else { // if (delta == p34 + 1) if (q3 <= 19) { if (C3.w[0] < bid_midpoint64[q3 - 1]) { // C3 < 1/2 ulp // res = 10^33, unchanged is_inexact_gt_midpoint = 1; } else if (C3.w[0] == bid_midpoint64[q3 - 1]) { // C3 = 1/2 ulp // res = 10^33, unchanged is_midpoint_lt_even = 1; } else { // if (C3.w[0] > bid_midpoint64[q3-1]), C3 > 1/2 ulp res.w[1] = 0x0001ed09bead87c0ull; // 10^34 - 1 res.w[0] = 0x378d8e63ffffffffull; e4 = e4 - 1; is_inexact_lt_midpoint = 1; } } else { // if (20 <= q3 <=34) if (C3.w[1] < bid_midpoint128[q3 - 20].w[1] || (C3.w[1] == bid_midpoint128[q3 - 20].w[1] && C3.w[0] < bid_midpoint128[q3 - 20].w[0])) { // C3 < 1/2 ulp // res = 10^33, unchanged is_inexact_gt_midpoint = 1; } else if (C3.w[1] == bid_midpoint128[q3 - 20].w[1] && C3.w[0] == bid_midpoint128[q3 - 20].w[0]) { // C3 = 1/2 ulp // res = 10^33, unchanged is_midpoint_lt_even = 1; } else { // if (C3 > bid_midpoint128[q3-20]), C3 > 1/2 ulp res.w[1] = 0x0001ed09bead87c0ull; // 10^34 - 1 res.w[0] = 0x378d8e63ffffffffull; e4 = e4 - 1; is_inexact_lt_midpoint = 1; } } } } } } else if (is_midpoint_lt_even) { if (z_sign != p_sign) { // needs correction: res = res - 1 res.w[0] = res.w[0] - 1; if (res.w[0] == 0xffffffffffffffffull) res.w[1]--; // if it is (10^33-1)*10^e4 then the corect result is // (10^34-1)*10(e4-1) if (res.w[1] == 0x0000314dc6448d93ull && res.w[0] == 0x38c15b09ffffffffull) { res.w[1] = 0x0001ed09bead87c0ull; // 10^34 - 1 res.w[0] = 0x378d8e63ffffffffull; e4 = e4 - 1; } is_midpoint_lt_even = 0; is_inexact_lt_midpoint = 1; } else { // if (z_sign == p_sign) is_midpoint_lt_even = 0; is_inexact_gt_midpoint = 1; } } else if (is_midpoint_gt_even) { if (z_sign == p_sign) { // needs correction: res = res + 1 (cannot cross in the next binade) res.w[0] = res.w[0] + 1; if (res.w[0] == 0x0000000000000000ull) res.w[1]++; is_midpoint_gt_even = 0; is_inexact_gt_midpoint = 1; } else { // if (z_sign != p_sign) is_midpoint_gt_even = 0; is_inexact_lt_midpoint = 1; } } else { ; // the rounded result is already correct } // check for overflow if (rnd_mode == BID_ROUNDING_TO_NEAREST && e4 > expmax) { res.w[1] = p_sign | 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; *pfpsf |= (BID_OVERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); } else { // no overflow or not RN p_exp = ((BID_UINT64) (e4 + 6176) << 49); res.w[1] = p_sign | (p_exp & MASK_EXP) | res.w[1]; } if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e4, &res, pfpsf); } if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else if ((q4 <= p34 && p34 <= delta) || // Case (8) (q4 <= delta && delta < p34 && p34 < delta + q3) || // Case (9) (q4 <= delta && delta + q3 <= p34) || // Case (10) (delta < q4 && q4 <= p34 && p34 < delta + q3) || // Case (13) (delta < q4 && q4 <= delta + q3 && delta + q3 <= p34) || // Case (14) (delta + q3 < q4 && q4 <= p34)) { // Case (18) // Case (8) is similar to Case (1), with C3 and C4 swapped // Case (9) is similar to Case (2), with C3 and C4 swapped // Case (10) is similar to Case (3), with C3 and C4 swapped // Case (13) is similar to Case (4), with C3 and C4 swapped // Case (14) is similar to Case (5), with C3 and C4 swapped // Case (18) is similar to Case (6), with C3 and C4 swapped // swap (C3, C4), (q3, q4), (e3, 34), (z_sign, p_sign), (z_exp, p_exp) // and go back to delta_ge_zero // C4.w[3] = 0 and C4.w[2] = 0, so swap just the low part of C4 with C3 P128.w[1] = C3.w[1]; P128.w[0] = C3.w[0]; C3.w[1] = C4.w[1]; C3.w[0] = C4.w[0]; C4.w[1] = P128.w[1]; C4.w[0] = P128.w[0]; ind = q3; q3 = q4; q4 = ind; ind = e3; e3 = e4; e4 = ind; tmp_sign = z_sign; z_sign = p_sign; p_sign = tmp_sign; tmp.ui64 = z_exp; z_exp = p_exp; p_exp = tmp.ui64; goto delta_ge_zero; } else if ((p34 <= delta && delta < q4 && q4 < delta + q3) || // Case (11) (delta < p34 && p34 < q4 && q4 < delta + q3)) { // Case (12) // round C3 to nearest to q3 - x0 digits, where x0 = e4 - e3, // 1 <= x0 <= q3 - 1 <= p34 - 1 x0 = e4 - e3; // or x0 = delta + q3 - q4 if (q3 <= 18) { // 2 <= q3 <= 18 bid_round64_2_18 (q3, x0, C3.w[0], &R64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); // C3.w[1] = 0; C3.w[0] = R64; } else if (q3 <= 38) { bid_round128_19_38 (q3, x0, C3, &R128, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); C3.w[1] = R128.w[1]; C3.w[0] = R128.w[0]; } // the rounded result has q3 - x0 digits // we want the exponent to be e4, so if incr_exp = 1 then // multiply the rounded result by 10 - it will still fit in 113 bits if (incr_exp) { // 64 x 128 -> 128 P128.w[1] = C3.w[1]; P128.w[0] = C3.w[0]; __mul_64x128_to_128 (C3, bid_ten2k64[1], P128); } e3 = e3 + x0; // this is e4 // now add/subtract the 256-bit C4 and the new (and shorter) 128-bit C3; // the result will have the sign of x * y; the exponent is e4 R256.w[3] = 0; R256.w[2] = 0; R256.w[1] = C3.w[1]; R256.w[0] = C3.w[0]; if (p_sign == z_sign) { // R256 = C4 + R256 bid_add256 (C4, R256, &R256); } else { // if (p_sign != z_sign) { // R256 = C4 - R256 bid_sub256 (C4, R256, &R256); // the result cannot be pure zero // because the result has opposite sign to that of R256 which was // rounded, need to change the rounding indicators lsb = C4.w[0] & 0x01; if (is_inexact_lt_midpoint) { is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; } else if (is_inexact_gt_midpoint) { is_inexact_gt_midpoint = 0; is_inexact_lt_midpoint = 1; } else if (lsb == 0) { if (is_midpoint_lt_even) { is_midpoint_lt_even = 0; is_midpoint_gt_even = 1; } else if (is_midpoint_gt_even) { is_midpoint_gt_even = 0; is_midpoint_lt_even = 1; } else { ; } } else if (lsb == 1) { if (is_midpoint_lt_even) { // res = res + 1 R256.w[0]++; if (R256.w[0] == 0x0) { R256.w[1]++; if (R256.w[1] == 0x0) { R256.w[2]++; if (R256.w[2] == 0x0) { R256.w[3]++; } } } // no check for rounding overflow - R256 was a difference } else if (is_midpoint_gt_even) { // res = res - 1 R256.w[0]--; if (R256.w[0] == 0xffffffffffffffffull) { R256.w[1]--; if (R256.w[1] == 0xffffffffffffffffull) { R256.w[2]--; if (R256.w[2] == 0xffffffffffffffffull) { R256.w[3]--; } } } } else { ; } } else { ; } } // determine the number of decimal digits in R256 ind = bid_bid_nr_digits256 (R256); // ind >= p34 // if R256 is sum, then ind > p34; if R256 is a difference, then // ind >= p34; this means that we can calculate the result rounded to // the destination precision, with unbounded exponent, starting from R256 // and using the indicators from the rounding of C3 to avoid a double // rounding error if (ind < p34) { ; } else if (ind == p34) { // the result rounded to the destination precision with // unbounded exponent // is (-1)^p_sign * R256 * 10^e4 res.w[1] = R256.w[1]; res.w[0] = R256.w[0]; } else { // if (ind > p34) // if more than P digits, round to nearest to P digits // round R256 to p34 digits x0 = ind - p34; // 1 <= x0 <= 34 as 35 <= ind <= 68 // save C3 rounding indicators to help avoid double rounding error is_inexact_lt_midpoint0 = is_inexact_lt_midpoint; is_inexact_gt_midpoint0 = is_inexact_gt_midpoint; is_midpoint_lt_even0 = is_midpoint_lt_even; is_midpoint_gt_even0 = is_midpoint_gt_even; // initialize rounding indicators is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; // round to p34 digits; the result fits in 113 bits if (ind <= 38) { P128.w[1] = R256.w[1]; P128.w[0] = R256.w[0]; bid_round128_19_38 (ind, x0, P128, &R128, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); } else if (ind <= 57) { P192.w[2] = R256.w[2]; P192.w[1] = R256.w[1]; P192.w[0] = R256.w[0]; bid_round192_39_57 (ind, x0, P192, &R192, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); R128.w[1] = R192.w[1]; R128.w[0] = R192.w[0]; } else { // if (ind <= 68) bid_round256_58_76 (ind, x0, R256, &R256, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); R128.w[1] = R256.w[1]; R128.w[0] = R256.w[0]; } // the rounded result has p34 = 34 digits e4 = e4 + x0 + incr_exp; res.w[1] = R128.w[1]; res.w[0] = R128.w[0]; // avoid a double rounding error if ((is_inexact_gt_midpoint0 || is_midpoint_lt_even0) && is_midpoint_lt_even) { // double rounding error upward // res = res - 1 res.w[0]--; if (res.w[0] == 0xffffffffffffffffull) res.w[1]--; is_midpoint_lt_even = 0; is_inexact_lt_midpoint = 1; // Note: a double rounding error upward is not possible; for this // the result after the first rounding would have to be 99...95 // (35 digits in all), possibly followed by a number of zeros; this // not possible in Cases (2)-(6) or (15)-(17) which may get here // if this is 10^33 - 1 make it 10^34 - 1 and decrement exponent if (res.w[1] == 0x0000314dc6448d93ull && res.w[0] == 0x38c15b09ffffffffull) { // 10^33 - 1 res.w[1] = 0x0001ed09bead87c0ull; // 10^34 - 1 res.w[0] = 0x378d8e63ffffffffull; e4--; } } else if ((is_inexact_lt_midpoint0 || is_midpoint_gt_even0) && is_midpoint_gt_even) { // double rounding error downward // res = res + 1 res.w[0]++; if (res.w[0] == 0) res.w[1]++; is_midpoint_gt_even = 0; is_inexact_gt_midpoint = 1; } else if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { // if this second rounding was exact the result may still be // inexact because of the first rounding if (is_inexact_gt_midpoint0 || is_midpoint_lt_even0) { is_inexact_gt_midpoint = 1; } if (is_inexact_lt_midpoint0 || is_midpoint_gt_even0) { is_inexact_lt_midpoint = 1; } } else if (is_midpoint_gt_even && (is_inexact_gt_midpoint0 || is_midpoint_lt_even0)) { // pulled up to a midpoint is_inexact_lt_midpoint = 1; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else if (is_midpoint_lt_even && (is_inexact_lt_midpoint0 || is_midpoint_gt_even0)) { // pulled down to a midpoint is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else { ; } } // determine tininess if (rnd_mode == BID_ROUNDING_TO_NEAREST) { if (e4 < expmin) { is_tiny = 1; // for other rounding modes apply correction } } else { // for RM, RP, RZ, RA apply correction in order to determine tininess // but do not save the result; apply the correction to // (-1)^p_sign * res * 10^0 P128.w[1] = p_sign | 0x3040000000000000ull | res.w[1]; P128.w[0] = res.w[0]; bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, 0, &P128, pfpsf); scale = ((P128.w[1] & MASK_EXP) >> 49) - 6176; // -1, 0, or +1 // the number of digits in the significand is p34 = 34 if (e4 + scale < expmin) { is_tiny = 1; } } // the result rounded to the destination precision with unbounded exponent // is (-1)^p_sign * res * 10^e4 res.w[1] = p_sign | ((BID_UINT64) (e4 + 6176) << 49) | res.w[1]; // RN // res.w[0] unchanged; // Note: res is correct only if expmin <= e4 <= expmax ind = p34; // the number of decimal digits in the signifcand of res // at this point we have the result rounded with unbounded exponent in // res and we know its tininess: // res = (-1)^p_sign * significand * 10^e4, // where q (significand) = ind = p34 // Note: res is correct only if expmin <= e4 <= expmax // check for overflow if RN if (rnd_mode == BID_ROUNDING_TO_NEAREST && (ind + e4) > (p34 + expmax)) { res.w[1] = p_sign | 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; *pfpsf |= (BID_INEXACT_EXCEPTION | BID_OVERFLOW_EXCEPTION); *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } // else not overflow or not RN, so continue // from this point on this is similar to the last part of the computation // for Cases (15), (16), (17) // if (e4 >= expmin) we have the result rounded with bounded exponent if (e4 < expmin) { x0 = expmin - e4; // x0 >= 1; the number of digits to chop off of res // where the result rounded [at most] once is // (-1)^p_sign * significand_res * 10^e4 // avoid double rounding error is_inexact_lt_midpoint0 = is_inexact_lt_midpoint; is_inexact_gt_midpoint0 = is_inexact_gt_midpoint; is_midpoint_lt_even0 = is_midpoint_lt_even; is_midpoint_gt_even0 = is_midpoint_gt_even; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; if (x0 > ind) { // nothing is left of res when moving the decimal point left x0 digits is_inexact_lt_midpoint = 1; res.w[1] = p_sign | 0x0000000000000000ull; res.w[0] = 0x0000000000000000ull; e4 = expmin; } else if (x0 == ind) { // 1 <= x0 = ind <= p34 = 34 // this is <, =, or > 1/2 ulp // compare the ind-digit value in the significand of res with // 1/2 ulp = 5*10^(ind-1), i.e. determine whether it is // less than, equal to, or greater than 1/2 ulp (significand of res) R128.w[1] = res.w[1] & MASK_COEFF; R128.w[0] = res.w[0]; if (ind <= 19) { if (R128.w[0] < bid_midpoint64[ind - 1]) { // < 1/2 ulp lt_half_ulp = 1; is_inexact_lt_midpoint = 1; } else if (R128.w[0] == bid_midpoint64[ind - 1]) { // = 1/2 ulp eq_half_ulp = 1; is_midpoint_gt_even = 1; } else { // > 1/2 ulp gt_half_ulp = 1; is_inexact_gt_midpoint = 1; } } else { // if (ind <= 38) if (R128.w[1] < bid_midpoint128[ind - 20].w[1] || (R128.w[1] == bid_midpoint128[ind - 20].w[1] && R128.w[0] < bid_midpoint128[ind - 20].w[0])) { // < 1/2 ulp lt_half_ulp = 1; is_inexact_lt_midpoint = 1; } else if (R128.w[1] == bid_midpoint128[ind - 20].w[1] && R128.w[0] == bid_midpoint128[ind - 20].w[0]) { // = 1/2 ulp eq_half_ulp = 1; is_midpoint_gt_even = 1; } else { // > 1/2 ulp gt_half_ulp = 1; is_inexact_gt_midpoint = 1; } } if (lt_half_ulp || eq_half_ulp) { // res = +0.0 * 10^expmin res.w[1] = 0x0000000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // if (gt_half_ulp) // res = +1 * 10^expmin res.w[1] = 0x0000000000000000ull; res.w[0] = 0x0000000000000001ull; } res.w[1] = p_sign | res.w[1]; e4 = expmin; } else { // if (1 <= x0 <= ind - 1 <= 33) // round the ind-digit result to ind - x0 digits if (ind <= 18) { // 2 <= ind <= 18 bid_round64_2_18 (ind, x0, res.w[0], &R64, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res.w[1] = 0x0; res.w[0] = R64; } else if (ind <= 38) { P128.w[1] = res.w[1] & MASK_COEFF; P128.w[0] = res.w[0]; bid_round128_19_38 (ind, x0, P128, &res, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); } e4 = e4 + x0; // expmin // we want the exponent to be expmin, so if incr_exp = 1 then // multiply the rounded result by 10 - it will still fit in 113 bits if (incr_exp) { // 64 x 128 -> 128 P128.w[1] = res.w[1] & MASK_COEFF; P128.w[0] = res.w[0]; __mul_64x128_to_128 (res, bid_ten2k64[1], P128); } res.w[1] = p_sign | ((BID_UINT64) (e4 + 6176) << 49) | (res. w[1] & MASK_COEFF); // avoid a double rounding error if ((is_inexact_gt_midpoint0 || is_midpoint_lt_even0) && is_midpoint_lt_even) { // double rounding error upward // res = res - 1 res.w[0]--; if (res.w[0] == 0xffffffffffffffffull) res.w[1]--; // Note: a double rounding error upward is not possible; for this // the result after the first rounding would have to be 99...95 // (35 digits in all), possibly followed by a number of zeros; this // not possible in this underflow case is_midpoint_lt_even = 0; is_inexact_lt_midpoint = 1; } else if ((is_inexact_lt_midpoint0 || is_midpoint_gt_even0) && is_midpoint_gt_even) { // double rounding error downward // res = res + 1 res.w[0]++; if (res.w[0] == 0) res.w[1]++; is_midpoint_gt_even = 0; is_inexact_gt_midpoint = 1; } else if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { // if this second rounding was exact the result may still be // inexact because of the first rounding if (is_inexact_gt_midpoint0 || is_midpoint_lt_even0) { is_inexact_gt_midpoint = 1; } if (is_inexact_lt_midpoint0 || is_midpoint_gt_even0) { is_inexact_lt_midpoint = 1; } } else if (is_midpoint_gt_even && (is_inexact_gt_midpoint0 || is_midpoint_lt_even0)) { // pulled up to a midpoint is_inexact_lt_midpoint = 1; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else if (is_midpoint_lt_even && (is_inexact_lt_midpoint0 || is_midpoint_gt_even0)) { // pulled down to a midpoint is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else { ; } } } // res contains the correct result // apply correction if not rounding to nearest if (rnd_mode != BID_ROUNDING_TO_NEAREST) { bid_rounding_correction (rnd_mode, is_inexact_lt_midpoint, is_inexact_gt_midpoint, is_midpoint_lt_even, is_midpoint_gt_even, e4, &res, pfpsf); } #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING // correction needed for tininess detection before rounding if ((((res.w[1] & 0x7fffffffffffffffull) == 0x0000314dc6448d93ull) && // 10^33*10^-6176_high (res.w[0] == 0x38c15b0a00000000ull)) && // 10^33*10^-6176_low (((rnd_mode == BID_ROUNDING_TO_NEAREST || rnd_mode == BID_ROUNDING_TIES_AWAY) && (is_midpoint_lt_even || is_inexact_gt_midpoint)) || ((((rnd_mode == BID_ROUNDING_UP) && !(res.w[1] & MASK_SIGN)) || ((rnd_mode == BID_ROUNDING_DOWN) && (res.w[1] & MASK_SIGN))) && (is_midpoint_lt_even || is_midpoint_gt_even || is_inexact_lt_midpoint || is_inexact_gt_midpoint)))) { is_tiny = 1; } #endif if (is_midpoint_lt_even || is_midpoint_gt_even || is_inexact_lt_midpoint || is_inexact_gt_midpoint) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; if (is_tiny) *pfpsf |= BID_UNDERFLOW_EXCEPTION; } *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else if ((p34 <= delta && delta + q3 <= q4) || // Case (15) (delta < p34 && p34 < delta + q3 && delta + q3 <= q4) || //Case (16) (delta + q3 <= p34 && p34 < q4)) { // Case (17) // calculate first the result rounded to the destination precision, with // unbounded exponent bid_add_and_round (q3, q4, e4, delta, p34, z_sign, p_sign, C3, C4, rnd_mode, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, pfpsf, &res); *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } else { ; } } // end if delta < 0 *ptr_is_midpoint_lt_even = is_midpoint_lt_even; *ptr_is_midpoint_gt_even = is_midpoint_gt_even; *ptr_is_inexact_lt_midpoint = is_inexact_lt_midpoint; *ptr_is_inexact_gt_midpoint = is_inexact_gt_midpoint; BID_SWAP128 (res); BID_RETURN (res) } #if DECIMAL_CALL_BY_REFERENCE void bid128_fma (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px, y = *py, z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else DFP_WRAPFN_DFP_DFP_DFP(128, bid128_fma, 128, 128, 128) BID_UINT128 bid128_fma (BID_UINT128 x, BID_UINT128 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int is_midpoint_lt_even, is_midpoint_gt_even, is_inexact_lt_midpoint, is_inexact_gt_midpoint; BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; #if DECIMAL_CALL_BY_REFERENCE bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, &res, &x, &y, &z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, x, y, z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128ddd_fma (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px, y = *py, z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128ddd_fma (BID_UINT64 x, BID_UINT64 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0, is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 x1, y1, z1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&z1, &z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, &res, &x1, &y1, &z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); z1 = bid64_to_bid128 (z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, x1, y1, z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128ddq_fma (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px, y = *py; BID_UINT128 z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128ddq_fma (BID_UINT64 x, BID_UINT64 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0, is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 x1, y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, &res, &x1, &y1, &z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, x1, y1, z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128dqd_fma (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px, z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128dqd_fma (BID_UINT64 x, BID_UINT128 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0, is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 x1, z1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&z1, &z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, &res, &x1, py, &z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); z1 = bid64_to_bid128 (z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, x1, y, z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128dqq_fma (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128dqq_fma (BID_UINT64 x, BID_UINT128 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0, is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 x1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, &res, &x1, py, pz _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, x1, y, z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128qdd_fma (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py, z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128qdd_fma (BID_UINT128 x, BID_UINT64 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0, is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 y1, z1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&z1, &z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, &res, px, &y1, &z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); z1 = bid64_to_bid128 (z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, x, y1, z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128qdq_fma (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128qdq_fma (BID_UINT128 x, BID_UINT64 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0, is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, &res, px, &y1, pz _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, x, y1, z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128qqd_fma (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128qqd_fma (BID_UINT128 x, BID_UINT128 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0, is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 z1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&z1, &z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, &res, px, py, &z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else z1 = bid64_to_bid128 (z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_ext_fma (&is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint, x, y, z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } // Note: bid128qqq_fma is represented by bid128_fma // Note: bid64ddd_fma is represented by bid64_fma #if DECIMAL_CALL_BY_REFERENCE void bid64ddq_fma (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px, y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64ddq_fma (BID_UINT64 x, BID_UINT64 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res1 = 0xbaddbaddbaddbaddull; BID_UINT128 x1, y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qqq_fma (&res1, &x1, &y1, pz _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res1 = bid64qqq_fma (x1, y1, z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res1); } #if DECIMAL_CALL_BY_REFERENCE void bid64dqd_fma (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px, z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64dqd_fma (BID_UINT64 x, BID_UINT128 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res1 = 0xbaddbaddbaddbaddull; BID_UINT128 x1, z1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&z1, &z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qqq_fma (&res1, &x1, py, &z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); z1 = bid64_to_bid128 (z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res1 = bid64qqq_fma (x1, y, z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res1); } #if DECIMAL_CALL_BY_REFERENCE void bid64dqq_fma (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64dqq_fma (BID_UINT64 x, BID_UINT128 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res1 = 0xbaddbaddbaddbaddull; BID_UINT128 x1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qqq_fma (&res1, &x1, py, pz _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res1 = bid64qqq_fma (x1, y, z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res1); } #if DECIMAL_CALL_BY_REFERENCE void bid64qdd_fma (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py, z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64qdd_fma (BID_UINT128 x, BID_UINT64 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res1 = 0xbaddbaddbaddbaddull; BID_UINT128 y1, z1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&z1, &z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qqq_fma (&res1, px, &y1, &z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); z1 = bid64_to_bid128 (z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res1 = bid64qqq_fma (x, y1, z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res1); } #if DECIMAL_CALL_BY_REFERENCE void bid64qdq_fma (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64qdq_fma (BID_UINT128 x, BID_UINT64 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res1 = 0xbaddbaddbaddbaddull; BID_UINT128 y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qqq_fma (&res1, px, &y1, pz _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res1 = bid64qqq_fma (x, y1, z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res1); } #if DECIMAL_CALL_BY_REFERENCE void bid64qqd_fma (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py, BID_UINT64 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64qqd_fma (BID_UINT128 x, BID_UINT128 y, BID_UINT64 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res1 = 0xbaddbaddbaddbaddull; BID_UINT128 z1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&z1, &z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qqq_fma (&res1, px, py, &z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else z1 = bid64_to_bid128 (z _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res1 = bid64qqq_fma (x, y, z1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res1); } #if DECIMAL_CALL_BY_REFERENCE void bid64qqq_fma (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py, BID_UINT128 * pz _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px, y = *py, z = *pz; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64qqq_fma (BID_UINT128 x, BID_UINT128 y, BID_UINT128 z _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int is_midpoint_lt_even0 = 0, is_midpoint_gt_even0 = 0, is_inexact_lt_midpoint0 = 0, is_inexact_gt_midpoint0 = 0; int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0, is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; int incr_exp; BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 res128 = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT64 res1 = 0xbaddbaddbaddbaddull; unsigned int save_fpsf; // needed because of the call to bid128_ext_fma BID_UINT64 sign; BID_UINT64 exp; int unbexp; BID_UINT128 C; BID_UI64DOUBLE tmp; int nr_bits; int q, x0; int scale; int lt_half_ulp = 0, eq_half_ulp = 0; // Note: for rounding modes other than RN or RA, the result can be obtained // by rounding first to BID128 and then to BID64 save_fpsf = *pfpsf; // sticky bits - caller value must be preserved *pfpsf = 0; #if DECIMAL_CALL_BY_REFERENCE bid128_ext_fma (&is_midpoint_lt_even0, &is_midpoint_gt_even0, &is_inexact_lt_midpoint0, &is_inexact_gt_midpoint0, &res, &x, &y, &z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid128_ext_fma (&is_midpoint_lt_even0, &is_midpoint_gt_even0, &is_inexact_lt_midpoint0, &is_inexact_gt_midpoint0, x, y, z _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif if ((rnd_mode == BID_ROUNDING_DOWN) || (rnd_mode == BID_ROUNDING_UP) || (rnd_mode == BID_ROUNDING_TO_ZERO) || // no double rounding error is possible ((res.w[BID_HIGH_128W] & MASK_NAN) == MASK_NAN) || //res=QNaN (cannot be SNaN) ((res.w[BID_HIGH_128W] & MASK_ANY_INF) == MASK_INF)) { // result is infinity #if DECIMAL_CALL_BY_REFERENCE bid128_to_bid64 (&res1, &res _RND_MODE_ARG _EXC_FLAGS_ARG); #else res1 = bid128_to_bid64 (res _RND_MODE_ARG _EXC_FLAGS_ARG); #endif // determine the unbiased exponent of the result unbexp = ((res1 >> 53) & 0x3ff) - 398; if (!((res1 & MASK_NAN) == MASK_NAN)) { // res1 not NaN // if subnormal, res1 must have exp = -398 // if tiny and inexact set underflow and inexact status flags if ((unbexp == -398) && ((res1 & MASK_BINARY_SIG1) < 1000000000000000ull) && (is_inexact_lt_midpoint0 || is_inexact_gt_midpoint0 || is_midpoint_lt_even0 || is_midpoint_gt_even0)) { // set the inexact flag and the underflow flag *pfpsf |= (BID_INEXACT_EXCEPTION | BID_UNDERFLOW_EXCEPTION); } else if (is_inexact_lt_midpoint0 || is_inexact_gt_midpoint0 || is_midpoint_lt_even0 || is_midpoint_gt_even0) { // set the inexact flag and the underflow flag *pfpsf |= BID_INEXACT_EXCEPTION; } #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING // correction needed for tininess detection before rounding if (((res1 & 0x7fffffffffffffffull) == 1000000000000000ull) && // 10^15*10^-398 (((rnd_mode == BID_ROUNDING_TO_NEAREST || rnd_mode == BID_ROUNDING_TIES_AWAY) && (is_midpoint_lt_even || is_inexact_gt_midpoint)) || ((((rnd_mode == BID_ROUNDING_UP) && !(res1 & MASK_SIGN)) || ((rnd_mode == BID_ROUNDING_DOWN) && (res1 & MASK_SIGN))) && (is_midpoint_lt_even || is_midpoint_gt_even || is_inexact_lt_midpoint || is_inexact_gt_midpoint)))) { *pfpsf |= BID_UNDERFLOW_EXCEPTION; } #endif } // else the result is NaN *pfpsf |= save_fpsf; BID_RETURN (res1); } // else continue, and use rounding to nearest to round to 16 digits // at this point the result is rounded to nearest (even or away) to 34 digits // (or less if exact), and it is zero or finite non-zero canonical [sub]normal sign = res.w[BID_HIGH_128W] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative exp = res.w[BID_HIGH_128W] & MASK_EXP; // biased and shifted left 49 bits unbexp = (exp >> 49) - 6176; C.w[1] = res.w[BID_HIGH_128W] & MASK_COEFF; C.w[0] = res.w[BID_LOW_128W]; if ((C.w[1] == 0x0 && C.w[0] == 0x0) || // result is zero (unbexp <= (-398 - 35)) || (unbexp >= (369 + 16))) { // clear under/overflow #if DECIMAL_CALL_BY_REFERENCE bid128_to_bid64 (&res1, &res _RND_MODE_ARG _EXC_FLAGS_ARG); #else res1 = bid128_to_bid64 (res _RND_MODE_ARG _EXC_FLAGS_ARG); #endif *pfpsf |= save_fpsf; BID_RETURN (res1); } // else continue // -398 - 34 <= unbexp <= 369 + 15 if (rnd_mode == BID_ROUNDING_TIES_AWAY) { // apply correction, if needed, to make the result rounded to nearest-even if (is_midpoint_gt_even) { // res = res - 1 res1--; // res1 is now even } // else the result is already correctly rounded to nearest-even } // at this point the result is finite, non-zero canonical normal or subnormal, // and in most cases overflow or underflow will not occur // determine the number of digits q in the result // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C.w[1] == 0) { if (C.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp.d = (double) (C.w[0] >> 32); // exact conversion nr_bits = 33 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp.d = (double) C.w[0]; // exact conversion nr_bits = 1 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C.w[1] != 0 => nr. bits = 64 + nr_bits (C.w[1]) tmp.d = (double) C.w[1]; // exact conversion nr_bits = 65 + ((((unsigned int) (tmp.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[nr_bits - 1].digits1; if (C.w[1] > bid_nr_digits[nr_bits - 1].threshold_hi || (C.w[1] == bid_nr_digits[nr_bits - 1].threshold_hi && C.w[0] >= bid_nr_digits[nr_bits - 1].threshold_lo)) q++; } // if q > 16, round to nearest even to 16 digits (but for underflow it may // have to be truncated even more) if (q > 16) { x0 = q - 16; if (q <= 18) { bid_round64_2_18 (q, x0, C.w[0], &res1, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); } else { // 19 <= q <= 34 bid_round128_19_38 (q, x0, C, &res128, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); res1 = res128.w[0]; // the result fits in 64 bits } unbexp = unbexp + x0; if (incr_exp) unbexp++; q = 16; // need to set in case denormalization is necessary } else { // the result does not require a second rounding (and it must have // been exact in the first rounding, since q <= 16) res1 = C.w[0]; } // avoid a double rounding error if ((is_inexact_gt_midpoint0 || is_midpoint_lt_even0) && is_midpoint_lt_even) { // double rounding error upward // res = res - 1 res1--; // res1 becomes odd is_midpoint_lt_even = 0; is_inexact_lt_midpoint = 1; if (res1 == 0x00038d7ea4c67fffull) { // 10^15 - 1 res1 = 0x002386f26fc0ffffull; // 10^16 - 1 unbexp--; } } else if ((is_inexact_lt_midpoint0 || is_midpoint_gt_even0) && is_midpoint_gt_even) { // double rounding error downward // res = res + 1 res1++; // res1 becomes odd (so it cannot be 10^16) is_midpoint_gt_even = 0; is_inexact_gt_midpoint = 1; } else if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { // if this second rounding was exact the result may still be // inexact because of the first rounding if (is_inexact_gt_midpoint0 || is_midpoint_lt_even0) { is_inexact_gt_midpoint = 1; } if (is_inexact_lt_midpoint0 || is_midpoint_gt_even0) { is_inexact_lt_midpoint = 1; } } else if (is_midpoint_gt_even && (is_inexact_gt_midpoint0 || is_midpoint_lt_even0)) { // pulled up to a midpoint is_inexact_lt_midpoint = 1; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else if (is_midpoint_lt_even && (is_inexact_lt_midpoint0 || is_midpoint_gt_even0)) { // pulled down to a midpoint is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else { ; } // this is the result rounded correctly to nearest even, with unbounded exp. // check for overflow if (q + unbexp > P16 + expmax16) { res1 = sign | 0x7800000000000000ull; *pfpsf |= (BID_INEXACT_EXCEPTION | BID_OVERFLOW_EXCEPTION); *pfpsf |= save_fpsf; BID_RETURN (res1) } else if (unbexp > expmax16) { // q + unbexp <= P16 + expmax16 // not overflow; the result must be exact, and we can multiply res1 by // 10^(unbexp - expmax16) and the product will fit in 16 decimal digits scale = unbexp - expmax16; res1 = res1 * bid_ten2k64[scale]; // res1 * 10^scale unbexp = expmax16; // unbexp - scale } else { ; // continue } // check for underflow if (q + unbexp < P16 + expmin16) { if (unbexp < expmin16) { // we must truncate more of res x0 = expmin16 - unbexp; // x0 >= 1 is_inexact_lt_midpoint0 = is_inexact_lt_midpoint; is_inexact_gt_midpoint0 = is_inexact_gt_midpoint; is_midpoint_lt_even0 = is_midpoint_lt_even; is_midpoint_gt_even0 = is_midpoint_gt_even; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; // the number of decimal digits in res1 is q if (x0 < q) { // 1 <= x0 <= q-1 => round res to q - x0 digits // 2 <= q <= 16, 1 <= x0 <= 15 bid_round64_2_18 (q, x0, res1, &res1, &incr_exp, &is_midpoint_lt_even, &is_midpoint_gt_even, &is_inexact_lt_midpoint, &is_inexact_gt_midpoint); if (incr_exp) { // res1 = 10^(q-x0), 1 <= q - x0 <= q - 1, 1 <= q - x0 <= 15 res1 = bid_ten2k64[q - x0]; } unbexp = unbexp + x0; // expmin16 } else if (x0 == q) { // the second rounding is for 0.d(0)d(1)...d(q-1) * 10^emin // determine relationship with 1/2 ulp // q <= 16 if (res1 < bid_midpoint64[q - 1]) { // < 1/2 ulp lt_half_ulp = 1; is_inexact_lt_midpoint = 1; } else if (res1 == bid_midpoint64[q - 1]) { // = 1/2 ulp eq_half_ulp = 1; is_midpoint_gt_even = 1; } else { // > 1/2 ulp // gt_half_ulp = 1; is_inexact_gt_midpoint = 1; } if (lt_half_ulp || eq_half_ulp) { // res = +0.0 * 10^expmin16 res1 = 0x0000000000000000ull; } else { // if (gt_half_ulp) // res = +1 * 10^expmin16 res1 = 0x0000000000000001ull; } unbexp = expmin16; } else { // if (x0 > q) // the second rounding is for 0.0...d(0)d(1)...d(q-1) * 10^emin res1 = 0x0000000000000000ull; unbexp = expmin16; is_inexact_lt_midpoint = 1; } // avoid a double rounding error if ((is_inexact_gt_midpoint0 || is_midpoint_lt_even0) && is_midpoint_lt_even) { // double rounding error upward // res = res - 1 res1--; // res1 becomes odd is_midpoint_lt_even = 0; is_inexact_lt_midpoint = 1; } else if ((is_inexact_lt_midpoint0 || is_midpoint_gt_even0) && is_midpoint_gt_even) { // double rounding error downward // res = res + 1 res1++; // res1 becomes odd is_midpoint_gt_even = 0; is_inexact_gt_midpoint = 1; } else if (!is_midpoint_lt_even && !is_midpoint_gt_even && !is_inexact_lt_midpoint && !is_inexact_gt_midpoint) { // if this rounding was exact the result may still be // inexact because of the previous roundings if (is_inexact_gt_midpoint0 || is_midpoint_lt_even0) { is_inexact_gt_midpoint = 1; } if (is_inexact_lt_midpoint0 || is_midpoint_gt_even0) { is_inexact_lt_midpoint = 1; } } else if (is_midpoint_gt_even && (is_inexact_gt_midpoint0 || is_midpoint_lt_even0)) { // pulled up to a midpoint is_inexact_lt_midpoint = 1; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else if (is_midpoint_lt_even && (is_inexact_lt_midpoint0 || is_midpoint_gt_even0)) { // pulled down to a midpoint is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 1; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } else { ; } } // else if unbexp >= emin then q < P (because q + unbexp < P16 + expmin16) // and the result is tiny and exact // check for inexact result if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even || is_inexact_lt_midpoint0 || is_inexact_gt_midpoint0 || is_midpoint_lt_even0 || is_midpoint_gt_even0) { // set the inexact flag and the underflow flag *pfpsf |= (BID_INEXACT_EXCEPTION | BID_UNDERFLOW_EXCEPTION); } } else if (is_inexact_lt_midpoint || is_inexact_gt_midpoint || is_midpoint_lt_even || is_midpoint_gt_even) { *pfpsf |= BID_INEXACT_EXCEPTION; } // this is the result rounded correctly to nearest, with bounded exponent if (rnd_mode == BID_ROUNDING_TIES_AWAY && is_midpoint_gt_even) { // correction // res = res + 1 res1++; // res1 is now odd } // else the result is already correct // assemble the result if (res1 < 0x0020000000000000ull) { // res < 2^53 res1 = sign | ((BID_UINT64) (unbexp + 398) << 53) | res1; } else { // res1 >= 2^53 res1 = sign | MASK_STEERING_BITS | ((BID_UINT64) (unbexp + 398) << 51) | (res1 & MASK_BINARY_SIG2); } #if !DECIMAL_TINY_DETECTION_AFTER_ROUNDING // correction needed for tininess detection before rounding if (((res1 & 0x7fffffffffffffffull) == 1000000000000000ull) && // 10^15*10^-398 (((rnd_mode == BID_ROUNDING_TO_NEAREST || rnd_mode == BID_ROUNDING_TIES_AWAY) && (is_midpoint_lt_even || is_inexact_gt_midpoint)) || ((((rnd_mode == BID_ROUNDING_UP) && !(res1 & MASK_SIGN)) || ((rnd_mode == BID_ROUNDING_DOWN) && (res1 & MASK_SIGN))) && (is_midpoint_lt_even || is_midpoint_gt_even || is_inexact_lt_midpoint || is_inexact_gt_midpoint)))) { *pfpsf |= BID_UNDERFLOW_EXCEPTION; } #endif *pfpsf |= save_fpsf; BID_RETURN (res1); } LIBRARY/src/bid64_fmod.c0000644€­ Q01134020000001537215113665770013727 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID64 remainder ***************************************************************************** * * Algorithm description: * * if(exponent_x < exponent_y) * scale coefficient_y so exponents are aligned * perform coefficient divide (64-bit integer divide), unless * coefficient_y is longer than 64 bits (clearly larger * than coefficient_x) * else // exponent_x > exponent_y * use a loop to scale coefficient_x to 18_digits, divide by * coefficient_y (64-bit integer divide), calculate remainder * as new_coefficient_x and repeat until final remainder is obtained * (when new_exponent_x < exponent_y) * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" #define MAX_FORMAT_DIGITS 16 #define DECIMAL_EXPONENT_BIAS 398 #define MASK_BINARY_EXPONENT 0x7ff0000000000000ull #define BINARY_EXPONENT_BIAS 0x3ff #define UPPER_EXPON_LIMIT 51 BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT64, bid64_fmod, BID_UINT64, x, BID_UINT64, y) BID_UINT128 CY; BID_UINT64 sign_x, sign_y, coefficient_x, coefficient_y, res; BID_UINT64 Q, R, T, valid_y, valid_x; int_float tempx; int exponent_x, exponent_y, bin_expon, e_scale; int digits_x, diff_expon; BID_OPT_SAVE_BINARY_FLAGS() valid_y = unpack_BID64 (&sign_y, &exponent_y, &coefficient_y, y); valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); // unpack arguments, check for NaN or Infinity if (!valid_x) { // x is Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_x & QUIET_MASK64;; BID_RETURN (res); } // x is Infinity? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { if (((y & NAN_MASK64) != NAN_MASK64)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // return NaN res = 0x7c00000000000000ull; BID_RETURN (res); } } // x is 0 // return x if y != 0 if (((y & 0x7800000000000000ull) < 0x7800000000000000ull) && coefficient_y) { if ((y & 0x6000000000000000ull) == 0x6000000000000000ull) exponent_y = (y >> 51) & 0x3ff; else exponent_y = (y >> 53) & 0x3ff; if (exponent_y < exponent_x) exponent_x = exponent_y; x = exponent_x; x <<= 53; res = x | sign_x; BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if (((y & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_y & QUIET_MASK64;; BID_RETURN (res); } // y is Infinity? if ((y & 0x7800000000000000ull) == 0x7800000000000000ull) { res = very_fast_get_BID64 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } // y is 0, return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c00000000000000ull; BID_RETURN (res); } } diff_expon = exponent_x - exponent_y; if (diff_expon <= 0) { diff_expon = -diff_expon; if (diff_expon > 16) { // |x|<|y| in this case res = x; BID_RETURN (res); } // set exponent of y to exponent_x, scale coefficient_y T = bid_power10_table_128[diff_expon].w[0]; __mul_64x64_to_128 (CY, coefficient_y, T); if (CY.w[1] || CY.w[0] > (coefficient_x)) { res = x; BID_RETURN (res); } Q = coefficient_x / CY.w[0]; R = coefficient_x - Q * CY.w[0]; res = very_fast_get_BID64 (sign_x, exponent_x, R); BID_RETURN (res); } while (diff_expon > 0) { // get number of digits in coeff_x tempx.d = (float) coefficient_x; bin_expon = ((tempx.i >> 23) & 0xff) - 0x7f; digits_x = bid_estimate_decimal_digits[bin_expon]; // will not use this test, dividend will have 18 or 19 digits //if(coefficient_x >= bid_power10_table_128[digits_x].w[0]) // digits_x++; e_scale = 18 - digits_x; if (diff_expon >= e_scale) { diff_expon -= e_scale; } else { e_scale = diff_expon; diff_expon = 0; } // scale dividend to 18 or 19 digits coefficient_x *= bid_power10_table_128[e_scale].w[0]; // quotient Q = coefficient_x / coefficient_y; // remainder coefficient_x -= Q * coefficient_y; // check for remainder == 0 if (!coefficient_x) { res = very_fast_get_BID64_small_mantissa (sign_x, exponent_y, 0); BID_RETURN (res); } } res = very_fast_get_BID64 (sign_x, exponent_y, coefficient_x); BID_RETURN (res); } LIBRARY/src/bid32_rem.c0000644€­ Q01134020000001532215113665770013553 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID64 remainder ***************************************************************************** * * Algorithm description: * * if(exponent_x < exponent_y) * scale coefficient_y so exponents are aligned * perform coefficient divide (64-bit integer divide), unless * coefficient_y is longer than 64 bits (clearly larger * than coefficient_x) * else // exponent_x > exponent_y * use a loop to scale coefficient_x to 18_digits, divide by * coefficient_y (64-bit integer divide), calculate remainder * as new_coefficient_x and repeat until final remainder is obtained * (when new_exponent_x < exponent_y) * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT32, bid32_rem, BID_UINT32, x, BID_UINT32, y) BID_UINT64 CX, Q64, CYL; BID_UINT32 CY, sign_x, sign_y, coefficient_x, coefficient_y, res; BID_UINT32 Q, R, R2, T, valid_y, valid_x; int_float tempx; int exponent_x, exponent_y, bin_expon, e_scale; int digits_x, diff_expon; BID_OPT_SAVE_BINARY_FLAGS() valid_y = unpack_BID32 (&sign_y, &exponent_y, &coefficient_y, y); valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); // unpack arguments, check for NaN or Infinity if (!valid_x) { // x is Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK32) == SNAN_MASK32) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // test if x is NaN if ((x & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK32) == SNAN_MASK32)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_x & QUIET_MASK32;; BID_RETURN (res); } // x is Infinity? if ((x & 0x78000000) == 0x78000000) { if (((y & NAN_MASK32) != NAN_MASK32)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // return NaN res = 0x7c000000; BID_RETURN (res); } } // x is 0 // return x if y != 0 if (((y & 0x78000000) < 0x78000000) && coefficient_y) { if ((y & 0x60000000) == 0x60000000) exponent_y = (y >> 21) & 0xff; else exponent_y = (y >> 23) & 0xff; if (exponent_y < exponent_x) exponent_x = exponent_y; x = exponent_x; x <<= 23; res = x | sign_x; BID_RETURN (res); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if (((y & SNAN_MASK32) == SNAN_MASK32)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = coefficient_y & QUIET_MASK32;; BID_RETURN (res); } // y is Infinity? if ((y & 0x78000000) == 0x78000000) { res = very_fast_get_BID32 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } // y is 0, return NaN { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c000000; BID_RETURN (res); } } diff_expon = exponent_x - exponent_y; if (diff_expon <= 0) { diff_expon = -diff_expon; if (diff_expon > 7) { // |x|<|y| in this case res = x; BID_RETURN (res); } // set exponent of y to exponent_x, scale coefficient_y T = bid_power10_table_128[diff_expon].w[0]; CYL = ((BID_UINT64)coefficient_y) * T; if (CYL > (BID_UINT64)(coefficient_x << 1)) { res = x; BID_RETURN (res); } CY = CYL; Q = coefficient_x / CY; R = coefficient_x - Q * CY; R2 = R + R; if (R2 > CY || (R2 == CY && (Q & 1))) { R = CY - R; sign_x ^= 0x80000000; } res = very_fast_get_BID32 (sign_x, exponent_x, R); BID_RETURN (res); } CX = coefficient_x; while (diff_expon > 0) { // get number of digits in coeff_x tempx.d = (float) CX; bin_expon = ((tempx.i >> 23) & 0xff) - 0x7f; digits_x = bid_estimate_decimal_digits[bin_expon]; // will not use this test, dividend will have 18 or 19 digits //if(CX >= bid_power10_table_128[digits_x].w[0]) // digits_x++; e_scale = 18 - digits_x; if (diff_expon >= e_scale) { diff_expon -= e_scale; } else { e_scale = diff_expon; diff_expon = 0; } // scale dividend to 18 or 19 digits CX *= bid_power10_table_128[e_scale].w[0]; // quotient Q64 = CX / coefficient_y; // remainder CX -= Q64 * (BID_UINT64)coefficient_y; // check for remainder == 0 if (!CX) { res = very_fast_get_BID32 (sign_x, exponent_y, 0); BID_RETURN (res); } } coefficient_x = (BID_UINT32)CX; R2 = coefficient_x + coefficient_x; if (R2 > coefficient_y || (R2 == coefficient_y && (Q64 & 1))) { coefficient_x = coefficient_y - coefficient_x; sign_x ^= 0x80000000ul; } res = very_fast_get_BID32 (sign_x, exponent_y, coefficient_x); BID_RETURN (res); } LIBRARY/src/bid32_scalb.c0000644€­ Q01134020000000664415113665770014063 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_TYPE0_FUNCTION_ARGTYPE1_OTHER_ARGTYPE2(BID_UINT32, bid32_scalbn, BID_UINT32, x, int, n) BID_UINT32 sign_x, coefficient_x, res; BID_SINT64 exp64; int exponent_x, rmode; // unpack arguments, check for NaN or Infinity if (!unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x)) { // x is Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if (coefficient_x) res = coefficient_x & QUIET_MASK32; else { exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; if(exp64<0) exp64=0; if(exp64>DECIMAL_MAX_EXPON_32) exp64=DECIMAL_MAX_EXPON_32; exponent_x = exp64; res = very_fast_get_BID32 (sign_x, exponent_x, coefficient_x); // 0 } BID_RETURN (res); } exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; exponent_x = exp64; if ((BID_UINT32) exponent_x <= DECIMAL_MAX_EXPON_32) { res = very_fast_get_BID32 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } // check for overflow if (exp64 > DECIMAL_MAX_EXPON_32) { // try to normalize coefficient while ((coefficient_x < 1000000ul) && (exp64 > DECIMAL_MAX_EXPON_32)) { // coefficient_x < 10^15, scale by 10 coefficient_x = (coefficient_x << 1) + (coefficient_x << 3); exponent_x--; exp64--; } if (exp64 <= DECIMAL_MAX_EXPON_32) { res = very_fast_get_BID32 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } else exponent_x = 0x7fffffff; // overflow } // exponent < 0 // the BID pack routine will round the coefficient rmode = rnd_mode; res = get_BID32 (sign_x, exponent_x, coefficient_x, rmode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid128_noncomp.c0000644€­ Q01134020000012244615113665770014535 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * * BID128 non-computational functions: * - bid128_isSigned * - bid128_isNormal * - bid128_isSubnormal * - bid128_isFinite * - bid128_isZero * - bid128_isInf * - bid128_isSignaling * - bid128_isCanonical * - bid128_isNaN * - bid128_copy * - bid128_negate * - bid128_abs * - bid128_copySign * - bid128_class * - bid128_totalOrder * - bid128_totalOrderMag * - bid128_sameQuantum * - bid128_radix ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid128_isSigned (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_isSigned, 128) int bid128_isSigned (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x.w[BID_HIGH_128W] & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // return 1 iff x is not zero, nor NaN nor subnormal nor infinity #if DECIMAL_CALL_BY_REFERENCE void bid128_isNormal (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_isNormal, 128) int bid128_isNormal (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_exp, C1_hi, C1_lo; BID_UI64DOUBLE tmp1; int exp, q, x_nr_bits; BID_SWAP128 (x); // test for special values - infinity or NaN if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special res = 0; BID_RETURN (res); } // unpack x x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1_hi = x.w[1] & MASK_COEFF; C1_lo = x.w[0]; // test for zero if (C1_hi == 0 && C1_lo == 0) { res = 0; BID_RETURN (res); } // test for non-canonical values of the argument x if ((((C1_hi > 0x0001ed09bead87c0ull) || ((C1_hi == 0x0001ed09bead87c0ull) && (C1_lo > 0x378d8e63ffffffffull))) && ((x.w[1] & 0x6000000000000000ull) != 0x6000000000000000ull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0; BID_RETURN (res); } // x is subnormal or normal // determine the number of digits q in the significand // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1_hi == 0) { if (C1_lo >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1_lo >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1_lo; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1_hi != 0 => nr. bits = 64 + nr_bits (C1_hi) tmp1.d = (double) C1_hi; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1_hi > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1_hi == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1_lo >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (int) (x_exp >> 49) - 6176; // test for subnormal values of x if (exp + q <= -6143) { res = 0; BID_RETURN (res); } else { res = 1; BID_RETURN (res); } } // return 1 iff x is not zero, nor NaN nor normal nor infinity #if DECIMAL_CALL_BY_REFERENCE void bid128_isSubnormal (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_isSubnormal, 128) int bid128_isSubnormal (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_exp, C1_hi, C1_lo; BID_UI64DOUBLE tmp1; int exp, q, x_nr_bits; BID_SWAP128 (x); // test for special values - infinity or NaN if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special res = 0; BID_RETURN (res); } // unpack x x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bit positions C1_hi = x.w[1] & MASK_COEFF; C1_lo = x.w[0]; // test for zero if (C1_hi == 0 && C1_lo == 0) { res = 0; BID_RETURN (res); } // test for non-canonical values of the argument x if ((((C1_hi > 0x0001ed09bead87c0ull) || ((C1_hi == 0x0001ed09bead87c0ull) && (C1_lo > 0x378d8e63ffffffffull))) && ((x.w[1] & 0x6000000000000000ull) != 0x6000000000000000ull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0; BID_RETURN (res); } // x is subnormal or normal // determine the number of digits q in the significand // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1_hi == 0) { if (C1_lo >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1_lo >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1_lo; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1_hi != 0 => nr. bits = 64 + nr_bits (C1_hi) tmp1.d = (double) C1_hi; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1_hi > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1_hi == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1_lo >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (int) (x_exp >> 49) - 6176; // test for subnormal values of x if (exp + q <= -6143) { res = 1; } else { res = 0; } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_isFinite (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_isFinite, 128) int bid128_isFinite (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x.w[BID_HIGH_128W] & MASK_INF) != MASK_INF); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_isZero (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_isZero, 128) int bid128_isZero (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT128 sig_x; BID_SWAP128 (x); if ((x.w[1] & MASK_INF) == MASK_INF) { res = 0; BID_RETURN (res); } sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || // significand is non-canonical ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || // significand is non-canonical ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) || // significand is non-canonical (sig_x.w[1] == 0 && sig_x.w[0] == 0)) { // significand is 0 res = 1; BID_RETURN (res); } res = 0; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_isInf (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_isInf, 128) int bid128_isInf (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x.w[BID_HIGH_128W] & MASK_INF) == MASK_INF) && ((x.w[BID_HIGH_128W] & MASK_NAN) != MASK_NAN); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_isSignaling (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_isSignaling, 128) int bid128_isSignaling (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x.w[BID_HIGH_128W] & MASK_SNAN) == MASK_SNAN); BID_RETURN (res); } // return 1 iff x is a canonical number ,infinity, or NaN. #if DECIMAL_CALL_BY_REFERENCE void bid128_isCanonical (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_isCanonical, 128) int bid128_isCanonical (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT128 sig_x; BID_SWAP128 (x); if ((x.w[1] & MASK_NAN) == MASK_NAN) { // NaN if (x.w[1] & 0x01ffc00000000000ull) { res = 0; BID_RETURN (res); } sig_x.w[1] = x.w[1] & 0x00003fffffffffffull; // 46 bits sig_x.w[0] = x.w[0]; // 64 bits // payload must be < 10^33 = 0x0000314dc6448d93_38c15b0a00000000 if (sig_x.w[1] < 0x0000314dc6448d93ull || (sig_x.w[1] == 0x0000314dc6448d93ull && sig_x.w[0] < 0x38c15b0a00000000ull)) { res = 1; } else { res = 0; } BID_RETURN (res); } else if ((x.w[1] & MASK_INF) == MASK_INF) { // infinity if ((x.w[1] & 0x03ffffffffffffffull) || x.w[0]) { res = 0; } else { res = 1; } BID_RETURN (res); } // not NaN or infinity; extract significand to ensure it is canonical sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; // a canonical number has a coefficient < 10^34 // (0x0001ed09_bead87c0_378d8e64_00000000) if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || // significand is non-canonical ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || // significand is non-canonical ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull)) { res = 0; } else { res = 1; } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_isNaN (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_isNaN, 128) int bid128_isNaN (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x.w[BID_HIGH_128W] & MASK_NAN) == MASK_NAN); BID_RETURN (res); } // copies a floating-point operand x to destination y, with no change #if DECIMAL_CALL_BY_REFERENCE void bid128_copy (BID_UINT128 * pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else DFP_WRAPFN_DFP(128, bid128_copy, 128) BID_UINT128 bid128_copy (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res; res = x; BID_RETURN (res); } // copies a floating-point operand x to destination y, reversing the sign #if DECIMAL_CALL_BY_REFERENCE void bid128_negate (BID_UINT128 * pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else DFP_WRAPFN_DFP(128, bid128_negate, 128) BID_UINT128 bid128_negate (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res; x.w[BID_HIGH_128W] ^= MASK_SIGN; res = x; BID_RETURN (res); } // copies a floating-point operand x to destination y, changing the sign to positive #if DECIMAL_CALL_BY_REFERENCE void bid128_abs (BID_UINT128 * pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else DFP_WRAPFN_DFP(128, bid128_abs, 128) BID_UINT128 bid128_abs (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res; x.w[BID_HIGH_128W] &= ~MASK_SIGN; res = x; BID_RETURN (res); } // copies operand x to destination in the same format as x, but with the sign of y #if DECIMAL_CALL_BY_REFERENCE void bid128_copySign (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; BID_UINT128 y = *py; #else DFP_WRAPFN_DFP_DFP(128, bid128_copySign, 128, 128) BID_UINT128 bid128_copySign (BID_UINT128 x, BID_UINT128 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res; x.w[BID_HIGH_128W] = (x.w[BID_HIGH_128W] & ~MASK_SIGN) | (y.w[BID_HIGH_128W] & MASK_SIGN); res = x; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_class (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_class, 128) class_t bid128_class (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT256 sig_x_prime256; BID_UINT192 sig_x_prime192; BID_UINT128 sig_x; int exp_x; BID_SWAP128 (x); if ((x.w[1] & MASK_NAN) == MASK_NAN) { if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { res = signalingNaN; } else { res = quietNaN; } BID_RETURN (res); } if ((x.w[1] & MASK_INF) == MASK_INF) { if ((x.w[1] & MASK_SIGN) == MASK_SIGN) { res = negativeInfinity; } else { res = positiveInfinity; } BID_RETURN (res); } // decode number into exponent and significand sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; // check for zero or non-canonical if ((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { if ((x.w[1] & MASK_SIGN) == MASK_SIGN) { res = negativeZero; } else { res = positiveZero; } BID_RETURN (res); } exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // if exponent is less than -6176, the number may be subnormal // (less than the smallest normal value) // the smallest normal value is 1 x 10^-6143 = 10^33 x 10^-6176 // if (exp_x - 6176 < -6143) if (exp_x < 33) { // sig_x * 10^exp_x if (exp_x > 19) { __mul_128x128_to_256 (sig_x_prime256, sig_x, bid_ten2k128[exp_x - 20]); // 10^33 = 0x0000314dc6448d93_38c15b0a00000000 if ((sig_x_prime256.w[3] == 0) && (sig_x_prime256.w[2] == 0) && ((sig_x_prime256.w[1] < 0x0000314dc6448d93ull) || ((sig_x_prime256.w[1] == 0x0000314dc6448d93ull) && (sig_x_prime256.w[0] < 0x38c15b0a00000000ull)))) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN) ? negativeSubnormal : positiveSubnormal; BID_RETURN (res); } } else { __mul_64x128_to_192 (sig_x_prime192, bid_ten2k64[exp_x], sig_x); // 10^33 = 0x0000314dc6448d93_38c15b0a00000000 if ((sig_x_prime192.w[2] == 0) && ((sig_x_prime192.w[1] < 0x0000314dc6448d93ull) || ((sig_x_prime192.w[1] == 0x0000314dc6448d93ull) && (sig_x_prime192.w[0] < 0x38c15b0a00000000ull)))) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN) ? negativeSubnormal : positiveSubnormal; BID_RETURN (res); } } } // otherwise, normal number, determine the sign res = ((x.w[1] & MASK_SIGN) == MASK_SIGN) ? negativeNormal : positiveNormal; BID_RETURN (res); } // true if the exponents of x and y are the same, false otherwise. // The special cases of sameQuantum(NaN, NaN) and sameQuantum(Inf, Inf) are true // If exactly one operand is infinite or exactly one operand is NaN, then false #if DECIMAL_CALL_BY_REFERENCE void bid128_sameQuantum (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; BID_UINT128 y = *py; #else RES_WRAPFN_DFP_DFP(int, bid128_sameQuantum, 128, 128) int bid128_sameQuantum (BID_UINT128 x, BID_UINT128 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 x_exp, y_exp; BID_SWAP128 (x); BID_SWAP128 (y); // if both operands are NaN, return true if ((x.w[1] & MASK_NAN) == MASK_NAN || ((y.w[1] & MASK_NAN) == MASK_NAN)) { res = ((x.w[1] & MASK_NAN) == MASK_NAN && (y.w[1] & MASK_NAN) == MASK_NAN); BID_RETURN (res); } // if both operands are INF, return true if ((x.w[1] & MASK_INF) == MASK_INF || (y.w[1] & MASK_INF) == MASK_INF) { res = ((x.w[1] & MASK_INF) == MASK_INF) && ((y.w[1] & MASK_INF) == MASK_INF); BID_RETURN (res); } // decode exponents for both numbers, and return true if they match if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits } if ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 y_exp = (y.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits } else { // G0_G1 != 11 y_exp = y.w[1] & MASK_EXP; // biased and shifted left 49 bits } res = (x_exp == y_exp); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_totalOrder (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; BID_UINT128 y = *py; #else RES_WRAPFN_DFP_DFP(int, bid128_totalOrder, 128, 128) int bid128_totalOrder (BID_UINT128 x, BID_UINT128 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; int exp_x, exp_y; BID_UINT128 sig_x, sig_y, pyld_y, pyld_x; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0; BID_SWAP128 (x); BID_SWAP128 (y); // NaN (CASE 1) // if x and y are unordered numerically because either operand is NaN // (1) totalOrder(-NaN, number) is true // (2) totalOrder(number, +NaN) is true // (3) if x and y are both NaN: // i) negative sign bit < positive sign bit // ii) signaling < quiet for +NaN, reverse for -NaN // iii) lesser payload < greater payload for +NaN (reverse for -NaN) // iv) else if bitwise identical (in canonical form), return 1 if ((x.w[1] & MASK_NAN) == MASK_NAN) { // if x is -NaN if ((x.w[1] & MASK_SIGN) == MASK_SIGN) { // return true, unless y is -NaN also if ((y.w[1] & MASK_NAN) != MASK_NAN || (y.w[1] & MASK_SIGN) != MASK_SIGN) { res = 1; // y is a number, return 1 BID_RETURN (res); } else { // if y and x are both -NaN pyld_x.w[1] = x.w[1] & 0x00003fffffffffffull; pyld_x.w[0] = x.w[0]; pyld_y.w[1] = y.w[1] & 0x00003fffffffffffull; pyld_y.w[0] = y.w[0]; if ((pyld_x.w[1] > 0x0000314dc6448d93ull) || ((pyld_x.w[1] == 0x0000314dc6448d93ull) && (pyld_x.w[0] > 0x38c15b09ffffffffull))) { pyld_x.w[1] = 0; pyld_x.w[0] = 0; } if ((pyld_y.w[1] > 0x0000314dc6448d93ull) || ((pyld_y.w[1] == 0x0000314dc6448d93ull) && (pyld_y.w[0] > 0x38c15b09ffffffffull))) { pyld_y.w[1] = 0; pyld_y.w[0] = 0; } // if x and y are both -SNaN or both -QNaN, we have to compare payloads // this statement evaluates to true if both are SNaN or QNaN if (! (((y.w[1] & MASK_SNAN) == MASK_SNAN) ^ ((x.w[1] & MASK_SNAN) == MASK_SNAN))) { // it comes down to the payload. we want to return true if x has a // larger payload, or if the payloads are equal (canonical forms // are bitwise identical) if ((pyld_x.w[1] > pyld_y.w[1]) || ((pyld_x.w[1] == pyld_y.w[1]) && (pyld_x.w[0] >= pyld_y.w[0]))) res = 1; else res = 0; BID_RETURN (res); } else { // either x = -SNaN and y = -QNaN or x = -QNaN and y = -SNaN res = ((y.w[1] & MASK_SNAN) == MASK_SNAN); // totalOrder (-QNaN, -SNaN) == 1 BID_RETURN (res); } } } else { // x is +NaN // return false, unless y is +NaN also if ((y.w[1] & MASK_NAN) != MASK_NAN || (y.w[1] & MASK_SIGN) == MASK_SIGN) { res = 0; // y is a number, return 1 BID_RETURN (res); } else { // x and y are both +NaN; pyld_x.w[1] = x.w[1] & 0x00003fffffffffffull; pyld_x.w[0] = x.w[0]; pyld_y.w[1] = y.w[1] & 0x00003fffffffffffull; pyld_y.w[0] = y.w[0]; if ((pyld_x.w[1] > 0x0000314dc6448d93ull) || ((pyld_x.w[1] == 0x0000314dc6448d93ull) && (pyld_x.w[0] > 0x38c15b09ffffffffull))) { pyld_x.w[1] = 0; pyld_x.w[0] = 0; } if ((pyld_y.w[1] > 0x0000314dc6448d93ull) || ((pyld_y.w[1] == 0x0000314dc6448d93ull) && (pyld_y.w[0] > 0x38c15b09ffffffffull))) { pyld_y.w[1] = 0; pyld_y.w[0] = 0; } // if x and y are both +SNaN or both +QNaN, we have to compare payloads // this statement evaluates to true if both are SNaN or QNaN if (! (((y.w[1] & MASK_SNAN) == MASK_SNAN) ^ ((x.w[1] & MASK_SNAN) == MASK_SNAN))) { // it comes down to the payload. we want to return true if x has a // smaller payload, or if the payloads are equal (canonical forms // are bitwise identical) if ((pyld_x.w[1] < pyld_y.w[1]) || ((pyld_x.w[1] == pyld_y.w[1]) && (pyld_x.w[0] <= pyld_y.w[0]))) res = 1; else res = 0; BID_RETURN (res); } else { // either x = SNaN and y = QNaN or x = QNaN and y = SNaN res = ((x.w[1] & MASK_SNAN) == MASK_SNAN); // totalOrder (-QNaN, -SNaN) == 1 BID_RETURN (res); } } } } else if ((y.w[1] & MASK_NAN) == MASK_NAN) { // x is certainly not NAN in this case. // return true if y is positive res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // SIMPLE (CASE 2) // if all the bits are the same, the numbers are equal. if ((x.w[1] == y.w[1]) && (x.w[0] == y.w[0])) { res = 1; BID_RETURN (res); } // OPPOSITE SIGNS (CASE 3) // if signs are opposite, return 1 if x is negative // (if x < y, totalOrder is true) if (((x.w[1] & MASK_SIGN) == MASK_SIGN) ^ ((y.w[1] & MASK_SIGN) == MASK_SIGN)) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // INFINITY (CASE 4) if ((x.w[1] & MASK_INF) == MASK_INF) { // if x == neg_inf, return (y == neg_inf); if ((x.w[1] & MASK_SIGN) == MASK_SIGN) { res = 1; BID_RETURN (res); } else { // x is positive infinity, only return1 if y is positive infinity as well res = ((y.w[1] & MASK_INF) == MASK_INF); BID_RETURN (res); // && (y & MASK_SIGN) != MASK_SIGN); (we know y has same sign as x) } } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so: // if y is +inf, xy res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // CONVERT x sig_x.w[1] = x.w[1] & 0x0001ffffffffffffull; sig_x.w[0] = x.w[0]; exp_x = (x.w[1] >> 49) & 0x000000000003fffull; // CHECK IF x IS CANONICAL // 9999999999999999999999999999999999 (decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull))) && ((x.w[1] & 0x6000000000000000ull) != 0x6000000000000000ull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; // check for the case where the exponent is shifted right by 2 bits! if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { exp_x = (x.w[1] >> 47) & 0x000000000003fffull; } } // CONVERT y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull))) && ((y.w[1] & 0x6000000000000000ull) != 0x6000000000000000ull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; // check for the case where the exponent is shifted right by 2 bits! if ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { exp_y = (y.w[1] >> 47) & 0x000000000003fffull; } } // ZERO (CASE 5) // if x and y represent the same entities, and both are negative // return true iff exp_x <= exp_y if (x_is_zero && y_is_zero) { // we know that signs must be the same because we would have caught it // in case3 if signs were different // totalOrder(x,y) iff exp_x >= exp_y for negative numbers // totalOrder(x,y) iff exp_x <= exp_y for positive numbers if (exp_x == exp_y) { res = 1; BID_RETURN (res); } res = ((exp_x <= exp_y) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } // if x is zero and y isn't, clearly x has the smaller payload if (x_is_zero) { res = ((y.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if y is zero, and x isn't, clearly y has the smaller payload if (y_is_zero) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE 6) // if both components are either bigger or smaller if (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } if (((sig_x.w[1] < sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (exp_x > exp_y) { // if exp_x is 33 greater than exp_y, it is definitely larger, // so no need for compensation if (exp_x - exp_y > 33) { res = ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); // difference cannot be greater than 10^33 } // otherwise adjust the x significand upwards if (exp_x - exp_y > 19) { __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[exp_x - exp_y - 20]); // the compensated significands are equal (ie "x and y represent the same // entities") return 1 if (negative && expx > expy) || // (positive && expx < expy) if ((sig_n_prime256.w[3] == 0) && (sig_n_prime256.w[2] == 0) && (sig_n_prime256.w[1] == sig_y.w[1]) && (sig_n_prime256.w[0] == sig_y.w[0])) { // the case exp_x == exp_y cannot occur, because all bits must be // the same - would have been caught if (x == y) res = ((exp_x <= exp_y) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } // if positive, return 1 if adjusted x is smaller than y res = (((sig_n_prime256.w[3] == 0) && (sig_n_prime256.w[2] == 0) && ((sig_n_prime256.w[1] < sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] < sig_y.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[exp_x - exp_y], sig_x); // if positive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = ((exp_x <= exp_y) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } res = (((sig_n_prime192.w[2] == 0) && ((sig_n_prime192.w[1] < sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] < sig_y.w[0]))) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } // if exp_x is 33 less than exp_y, it is definitely smaller, // no need for compensation if (exp_y - exp_x > 33) { res = ((x.w[1] & MASK_SIGN) != MASK_SIGN); BID_RETURN (res); } if (exp_y - exp_x > 19) { // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[exp_y - exp_x - 20]); // if x and y represent the same entities and both are negative // return true iff exp_x <= exp_y if ((sig_n_prime256.w[3] == 0) && (sig_n_prime256.w[2] == 0) && (sig_n_prime256.w[1] == sig_x.w[1]) && (sig_n_prime256.w[0] == sig_x.w[0])) { res = (exp_x <= exp_y) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } // values are not equal, for positive numbers return 1 if x is less than y // and 0 otherwise res = (((sig_n_prime256.w[3] != 0) || // if upper128 bits of compensated y are non-zero, y is bigger (sig_n_prime256.w[2] != 0) || // if upper128 bits of compensated y are non-zero, y is bigger (sig_n_prime256.w[1] > sig_x.w[1]) || // if compensated y is bigger, y is bigger (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[exp_y - exp_x], sig_y); if ((sig_n_prime192.w[2] == 0) && (sig_n_prime192.w[1] == sig_x.w[1]) && (sig_n_prime192.w[0] == sig_x.w[0])) { res = (exp_x <= exp_y) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN); BID_RETURN (res); } res = (((sig_n_prime192.w[2] != 0) || // if upper128 bits of compensated y are non-zero, y is bigger (sig_n_prime192.w[1] > sig_x.w[1]) || // if compensated y is bigger, y is bigger (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0])) ^ ((x.w[1] & MASK_SIGN) == MASK_SIGN)); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_totalOrderMag (int *pres, BID_UINT128 * px, BID_UINT128 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; BID_UINT128 y = *py; #else RES_WRAPFN_DFP_DFP(int, bid128_totalOrderMag, 128, 128) int bid128_totalOrderMag (BID_UINT128 x, BID_UINT128 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; int exp_x, exp_y; BID_UINT128 sig_x, sig_y, pyld_y, pyld_x; BID_UINT192 sig_n_prime192; BID_UINT256 sig_n_prime256; char x_is_zero = 0, y_is_zero = 0; BID_SWAP128 (x); BID_SWAP128 (y); x.w[1] = x.w[1] & 0x7fffffffffffffffull; y.w[1] = y.w[1] & 0x7fffffffffffffffull; // NaN (CASE 1) // if x and y are unordered numerically because either operand is NaN // (1) totalOrder(number, +NaN) is true // (2) if x and y are both NaN: // i) signaling < quiet for +NaN // ii) lesser payload < greater payload for +NaN // iii) else if bitwise identical (in canonical form), return 1 if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is +NaN // return false, unless y is +NaN also if ((y.w[1] & MASK_NAN) != MASK_NAN) { res = 0; // y is a number, return 0 BID_RETURN (res); } else { // x and y are both +NaN; pyld_x.w[1] = x.w[1] & 0x00003fffffffffffull; pyld_x.w[0] = x.w[0]; pyld_y.w[1] = y.w[1] & 0x00003fffffffffffull; pyld_y.w[0] = y.w[0]; if ((pyld_x.w[1] > 0x0000314dc6448d93ull) || ((pyld_x.w[1] == 0x0000314dc6448d93ull) && (pyld_x.w[0] > 0x38c15b09ffffffffull))) { pyld_x.w[1] = 0; pyld_x.w[0] = 0; } if ((pyld_y.w[1] > 0x0000314dc6448d93ull) || ((pyld_y.w[1] == 0x0000314dc6448d93ull) && (pyld_y.w[0] > 0x38c15b09ffffffffull))) { pyld_y.w[1] = 0; pyld_y.w[0] = 0; } // if x and y are both +SNaN or both +QNaN, we have to compare payloads // this statement evaluates to true if both are SNaN or QNaN if (! (((y.w[1] & MASK_SNAN) == MASK_SNAN) ^ ((x.w[1] & MASK_SNAN) == MASK_SNAN))) { // it comes down to the payload. we want to return true if x has a // smaller payload, or if the payloads are equal (canonical forms // are bitwise identical) if ((pyld_x.w[1] < pyld_y.w[1]) || ((pyld_x.w[1] == pyld_y.w[1]) && (pyld_x.w[0] <= pyld_y.w[0]))) { res = 1; } else { res = 0; } BID_RETURN (res); } else { // either x = SNaN and y = QNaN or x = QNaN and y = SNaN res = ((x.w[1] & MASK_SNAN) == MASK_SNAN); // totalOrder (-QNaN, -SNaN) == 1 BID_RETURN (res); } } } else if ((y.w[1] & MASK_NAN) == MASK_NAN) { // x is certainly not NAN in this case. // return true because y is positive res = 1; BID_RETURN (res); } // SIMPLE (CASE 2) // if all the bits are the same, the numbers are equal. if ((x.w[1] == y.w[1]) && (x.w[0] == y.w[0])) { res = 1; BID_RETURN (res); } // INFINITY (CASE 3) if ((x.w[1] & MASK_INF) == MASK_INF) { // x is positive infinity, only return 1 if y is positive infinity as well res = ((y.w[1] & MASK_INF) == MASK_INF); BID_RETURN (res); // (we know y has same sign as x) } else if ((y.w[1] & MASK_INF) == MASK_INF) { // x is finite, so: // since y is +inf, x> 49) & 0x000000000003fffull; // CHECK IF x IS CANONICAL // 9999999999999999999999999999999999 (decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((((sig_x.w[1] > 0x0001ed09bead87c0ull) || ((sig_x.w[1] == 0x0001ed09bead87c0ull) && (sig_x.w[0] > 0x378d8e63ffffffffull))) && ((x.w[1] & 0x6000000000000000ull) != 0x6000000000000000ull)) || ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) || ((sig_x.w[1] == 0) && (sig_x.w[0] == 0))) { x_is_zero = 1; // check for the case where the exponent is shifted right by 2 bits! if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { exp_x = (x.w[1] >> 47) & 0x000000000003fffull; } } // CONVERT y exp_y = (y.w[1] >> 49) & 0x0000000000003fffull; sig_y.w[1] = y.w[1] & 0x0001ffffffffffffull; sig_y.w[0] = y.w[0]; // CHECK IF y IS CANONICAL // 9999999999999999999999999999999999(decimal) = // 1ed09_bead87c0_378d8e63_ffffffff(hexadecimal) // [0, 10^34) is the 754 supported canonical range. // If the value exceeds that, it is interpreted as 0. if ((((sig_y.w[1] > 0x0001ed09bead87c0ull) || ((sig_y.w[1] == 0x0001ed09bead87c0ull) && (sig_y.w[0] > 0x378d8e63ffffffffull))) && ((y.w[1] & 0x6000000000000000ull) != 0x6000000000000000ull)) || ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) || ((sig_y.w[1] == 0) && (sig_y.w[0] == 0))) { y_is_zero = 1; // check for the case where the exponent is shifted right by 2 bits! if ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { exp_y = (y.w[1] >> 47) & 0x000000000003fffull; } } // ZERO (CASE 4) if (x_is_zero && y_is_zero) { // we know that signs must be the same because we would have caught it // in case3 if signs were different // totalOrder(x,y) iff exp_x <= exp_y for positive numbers if (exp_x == exp_y) { res = 1; BID_RETURN (res); } res = (exp_x <= exp_y); BID_RETURN (res); } // if x is zero and y isn't, clearly x has the smaller payload if (x_is_zero) { res = 1; BID_RETURN (res); } // if y is zero, and x isn't, clearly y has the smaller payload if (y_is_zero) { res = 0; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE 5) // if both components are either bigger or smaller if (((sig_x.w[1] > sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] > sig_y.w[0])) && exp_x >= exp_y) { res = 0; BID_RETURN (res); } if (((sig_x.w[1] < sig_y.w[1]) || (sig_x.w[1] == sig_y.w[1] && sig_x.w[0] < sig_y.w[0])) && exp_x <= exp_y) { res = 1; BID_RETURN (res); } // if |exp_x - exp_y| < 33, it comes down to the compensated significand if (exp_x > exp_y) { // if exp_x is 33 greater than exp_y, it is definitely larger, // so no need for compensation if (exp_x - exp_y > 33) { res = 0; // difference cannot be greater than 10^33 BID_RETURN (res); } // otherwise adjust the x significand upwards if (exp_x - exp_y > 19) { __mul_128x128_to_256 (sig_n_prime256, sig_x, bid_ten2k128[exp_x - exp_y - 20]); // the compensated significands are equal (ie "x and y represent the same // entities") return 1 if (negative && expx > expy) || // (positive && expx < expy) if ((sig_n_prime256.w[3] == 0) && (sig_n_prime256.w[2] == 0) && (sig_n_prime256.w[1] == sig_y.w[1]) && (sig_n_prime256.w[0] == sig_y.w[0])) { // the case (exp_x == exp_y) cannot occur, because all bits must be // the same - would have been caught if (x == y) res = 0; // res = (exp_x <= exp_y); but exp_x > exp_y in this case BID_RETURN (res); } // since positive, return 1 if adjusted x is smaller than y res = ((sig_n_prime256.w[3] == 0) && (sig_n_prime256.w[2] == 0) && ((sig_n_prime256.w[1] < sig_y.w[1]) || (sig_n_prime256.w[1] == sig_y.w[1] && sig_n_prime256.w[0] < sig_y.w[0]))); BID_RETURN (res); } __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[exp_x - exp_y], sig_x); // if positive, return whichever significand is larger // (converse if negative) if ((sig_n_prime192.w[2] == 0) && sig_n_prime192.w[1] == sig_y.w[1] && (sig_n_prime192.w[0] == sig_y.w[0])) { res = 0; // res = (exp_x <= exp_y); but exp_x > exp_y in this case BID_RETURN (res); } res = ((sig_n_prime192.w[2] == 0) && ((sig_n_prime192.w[1] < sig_y.w[1]) || (sig_n_prime192.w[1] == sig_y.w[1] && sig_n_prime192.w[0] < sig_y.w[0]))); BID_RETURN (res); } // if exp_x is 33 less than exp_y, it is definitely smaller, // no need for compensation if (exp_y - exp_x > 33) { res = 1; BID_RETURN (res); } // from this point on 0 <= exp_y - exp_x <= 32 if (exp_y - exp_x > 19) { // adjust the y significand upwards __mul_128x128_to_256 (sig_n_prime256, sig_y, bid_ten2k128[exp_y - exp_x - 20]); if ((sig_n_prime256.w[3] == 0) && (sig_n_prime256.w[2] == 0) && (sig_n_prime256.w[1] == sig_x.w[1]) && (sig_n_prime256.w[0] == sig_x.w[0])) { res = 1; // res = (exp_x <= exp_y); but 0 <= exp_y - exp_x <= 32 in this case BID_RETURN (res); } // values are not equal, for positive numbers return 1 if x is less than y // and 0 otherwise res = ((sig_n_prime256.w[3] != 0) || // if upper128 bits of compensated y are non-zero, y is bigger (sig_n_prime256.w[2] != 0) || // if upper128 bits of compensated y are non-zero, y is bigger (sig_n_prime256.w[1] > sig_x.w[1]) || // if compensated y is bigger, y is bigger (sig_n_prime256.w[1] == sig_x.w[1] && sig_n_prime256.w[0] > sig_x.w[0])); BID_RETURN (res); } // from this point on 0 <= exp_y - exp_x <= 19 __mul_64x128_to_192 (sig_n_prime192, bid_ten2k64[exp_y - exp_x], sig_y); if ((sig_n_prime192.w[2] == 0) && (sig_n_prime192.w[1] == sig_x.w[1]) && (sig_n_prime192.w[0] == sig_x.w[0])) { res = 1; // res = (exp_x <= exp_y); but 0 <= exp_y - exp_x <= 19 in this case BID_RETURN (res); } res = ((sig_n_prime192.w[2] != 0) || // if upper128 bits of compensated y are non-zero, y is bigger (sig_n_prime192.w[1] > sig_x.w[1]) || // if compensated y is bigger, y is bigger (sig_n_prime192.w[1] == sig_x.w[1] && sig_n_prime192.w[0] > sig_x.w[0])); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_radix (int *pres, BID_UINT128 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px; #else RES_WRAPFN_DFP(int, bid128_radix, 128) int bid128_radix (BID_UINT128 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; if (x.w[BID_LOW_128W]) // dummy test res = 10; else res = 10; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_inf (BID_UINT128 *pres) { #else BID_UINT128 bid128_inf (void) { #endif BID_UINT128 res; res.w[BID_HIGH_128W] = 0x7800000000000000ull; // +inf res.w[BID_LOW_128W] = 0x0000000000000000ull; BID_RETURN(res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_nan (BID_UINT128 *pres, const char *tagp) { #else DFP_WRAPFN_OTHERTYPE(128, bid128_nan, const char *) BID_UINT128 bid128_nan (const char *tagp) { #endif BID_UINT128 res, x; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = BID_ROUNDING_TO_NEAREST; #endif #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS unsigned int fpsf; unsigned int *pfpsf = &fpsf; #endif res.w[BID_HIGH_128W] = 0x7c00000000000000ull; // +QNaN res.w[BID_LOW_128W] = 0x0000000000000000ull; if (!tagp) BID_RETURN(res); #if DECIMAL_CALL_BY_REFERENCE bid128_from_string (&x, (char *)tagp _RND_MODE_ARG _EXC_FLAGS_ARG); #else x = bid128_from_string ((char *)tagp _RND_MODE_ARG _EXC_FLAGS_ARG); #endif x.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0x00003fffffffffffull; // valid values fit in 110 bits=46+64 res.w[BID_HIGH_128W] = res.w[BID_HIGH_128W] | x.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; BID_RETURN(res); } LIBRARY/src/bid64_fdimd.c0000644€­ Q01134020000000570415113665770014063 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64 fdim ****************************************************************************/ /* fdim returns x - y if x > y, and +0 is x <= y Exceptions: P, O, I (U could only be unmasked, which is not supported) */ BID_TYPE_FUNCTION_ARG2(BID_UINT64, bid64_fdim, x, y) BID_UINT64 res; int cmpres; BID_FPSC tmp_fpsf = 0; // dummy fpsf for calls to comparison functions tmp_fpsf = *pfpsf; // save fpsf #if DECIMAL_CALL_BY_REFERENCE bid64_quiet_greater (&cmpres, &x, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else cmpres = bid64_quiet_greater (x, y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif *pfpsf = tmp_fpsf; // restore fpsf if (((x & MASK_NAN) != MASK_NAN) && ((y & MASK_NAN) != MASK_NAN) && !cmpres) { // if x != NaN and y != NaN and x <= y return +0 res = 0x31c0000000000000ull; BID_RETURN (res); } // else if x = NaN or y = NaN or x > y return x - y #if DECIMAL_CALL_BY_REFERENCE bid64_sub (&res, &x, &y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid64_sub (x, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } LIBRARY/src/bid_decimal_globals.c0000644€­ Q01134020000000670515113665770015731 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #include "bid_gcc_intrinsics.h" #if DECIMAL_GLOBAL_ROUNDING BID_THREAD _IDEC_round _IDEC_glbround = BID_ROUNDING_TO_NEAREST; #if DECIMAL_GLOBAL_ROUNDING_ACCESS_FUNCTIONS void __dfp_set_round (int mode) { _IDEC_glbround = mode; } int __dfp_get_round (void) { return _IDEC_glbround; } #endif #endif #if DECIMAL_GLOBAL_EXCEPTION_FLAGS BID_THREAD _IDEC_flags _IDEC_glbflags = BID_EXACT_STATUS; #if DECIMAL_GLOBAL_EXCEPTION_FLAGS_ACCESS_FUNCTIONS #include void __dfp_clear_except (void) { _IDEC_glbflags &= ~BID_FLAG_MASK; } int __dfp_test_except (int mask) { int flags = 0; if ((_IDEC_glbflags & BID_INEXACT_EXCEPTION) != 0) flags |= mask & FE_INEXACT; if ((_IDEC_glbflags & BID_UNDERFLOW_EXCEPTION) != 0) flags |= mask & FE_UNDERFLOW; if ((_IDEC_glbflags & BID_OVERFLOW_EXCEPTION) != 0) flags |= mask & FE_OVERFLOW; if ((_IDEC_glbflags & BID_ZERO_DIVIDE_EXCEPTION) != 0) flags |= mask & FE_DIVBYZERO; if ((_IDEC_glbflags & BID_INVALID_EXCEPTION) != 0) flags |= mask & FE_INVALID; return flags; } void __dfp_raise_except (int mask) { _IDEC_flags flags = 0; if ((mask & FE_INEXACT) != 0) flags |= BID_INEXACT_EXCEPTION; if ((mask & FE_UNDERFLOW) != 0) flags |= BID_UNDERFLOW_EXCEPTION; if ((mask & FE_OVERFLOW) != 0) flags |= BID_OVERFLOW_EXCEPTION; if ((mask & FE_DIVBYZERO) != 0) flags |= BID_ZERO_DIVIDE_EXCEPTION; if ((mask & FE_INVALID) != 0) flags |= BID_INVALID_EXCEPTION; _IDEC_glbflags |= flags; } #endif #endif #if DECIMAL_ALTERNATE_EXCEPTION_HANDLING #if DECIMAL_GLOBAL_EXCEPTION_MASKS BID_THREAD _IDEC_exceptionmasks _IDEC_glbexceptionmasks = _IDEC_allexcmasksset; #endif #if DECIMAL_GLOBAL_EXCEPTION_INFO BID_THREAD _IDEC_excepthandling _IDEC_glbexcepthandling; #endif #endif LIBRARY/src/bid64_asinh.c0000644€­ Q01134020000000515015113665770014075 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_asinh, BID_UINT64, x) BID_UINT64 sign_x, coefficient_x; BID_UINT64 valid_x, res; BID_F80_TYPE xd, zd; int exponent_x; valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN if ((x & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK64; BID_RETURN (res); } // x is Infinity? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { res = sign_x | 0x7800000000000000ull; BID_RETURN (res); } // x is 0 res = sign_x | coefficient_x; BID_RETURN (res); } BIDECIMAL_CALL1(bid64_to_binary80,xd,x); __bid_f80_asinh(zd, xd); BIDECIMAL_CALL1(binary80_to_bid64,res,zd); BID_RETURN (res); } LIBRARY/src/bid64_modf.c0000644€­ Q01134020000000500615113665770013720 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #if DECIMAL_CALL_BY_REFERENCE void bid64_modf (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * iptr _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM){ BID_UINT64 x=*px; #else DFP_WRAPFN_DFP_DFP_POINTER(64, bid64_modf, 64, 64) BID_UINT64 bid64_modf (BID_UINT64 x, BID_UINT64 * iptr _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM){ #endif BID_UINT64 xi, res; #if !DECIMAL_GLOBAL_ROUNDING _IDEC_round rnd_mode = 0; #else rnd_mode=0; #endif BIDECIMAL_CALL1_NORND(bid64_round_integral_zero, xi, x); // check for Infinity if((x & 0x7c00000000000000ull) == 0x7800000000000000ull) res = (x & 0x8000000000000000ull)|0x5fe0000000000000ull; else BIDECIMAL_CALL2 (bid64_sub, res, x, xi); *iptr = (xi) | (x & 0x8000000000000000ull); res |= (x & 0x8000000000000000ull); BID_RETURN (res); } LIBRARY/src/bid128_scalb.c0000644€­ Q01134020000000717615113665770014152 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" #define DECIMAL_EXPONENT_BIAS_128 6176 #define MAX_DECIMAL_EXPONENT_128 12287 BID128_FUNCTION_ARG128_CUSTOMARGTYPE2 (bid128_scalbn, x, int, n) BID_UINT128 CX, CX2, CBID_X8, res; BID_SINT64 exp64; BID_UINT64 sign_x; int exponent_x, rmode; // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { // x is Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = CX.w[1] & QUIET_MASK64; res.w[0] = CX.w[0]; if (!CX.w[1]) { exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; if(exp64<0) exp64=0; if(exp64>MAX_DECIMAL_EXPONENT_128) exp64=MAX_DECIMAL_EXPONENT_128; exponent_x = exp64; bid_get_BID128_very_fast (&res, sign_x, exponent_x, CX); } BID_RETURN (res); } exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; exponent_x = exp64; if ((BID_UINT32) exponent_x <= MAX_DECIMAL_EXPONENT_128) { bid_get_BID128_very_fast (&res, sign_x, exponent_x, CX); BID_RETURN (res); } // check for overflow if (exp64 > MAX_DECIMAL_EXPONENT_128) { if (CX.w[1] < 0x314dc6448d93ull) { // try to normalize coefficient do { CBID_X8.w[1] = (CX.w[1] << 3) | (CX.w[0] >> 61); CBID_X8.w[0] = CX.w[0] << 3; CX2.w[1] = (CX.w[1] << 1) | (CX.w[0] >> 63); CX2.w[0] = CX.w[0] << 1; __add_128_128 (CX, CX2, CBID_X8); exponent_x--; exp64--; } while (CX.w[1] < 0x314dc6448d93ull && exp64 > MAX_DECIMAL_EXPONENT_128); } if (exp64 <= MAX_DECIMAL_EXPONENT_128) { bid_get_BID128_very_fast (&res, sign_x, exponent_x, CX); BID_RETURN (res); } else exponent_x = 0x7fffffff; // overflow } // exponent < 0 // the BID pack routine will round the coefficient rmode = rnd_mode; bid_get_BID128 (&res, sign_x, exponent_x, CX, (unsigned int *) &rmode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid32_asin.c0000644€­ Q01134020000000652015113665770013722 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double acos(double); double asin(double); double fabs(double); double sqrt(double); #define BID32_1 0x32800001ul // NaN for inputs |x| > 1 #define BID32_NAN 0x7c000000ul BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_asin, BID_UINT32, x) // Declare local variables BID_UINT32 res, t, t1 = BID32_1; double xd, td, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Convert to binary BIDECIMAL_CALL1(bid32_to_binary64,xd,x); // If the input is not too close to +/- 1 then do it "naively" if (fabs(xd) <= 0.9) { yd = asin(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } // If the input is > 1 in magnitude, fail else if (fabs(xd) > 1.0) { res = BID32_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(res) } // Otherwise compute sqrt(1 - x^2) accurately and use acos instead. // Use 1 - |x| as direct decimal computation, since direct fma would // give only about working precision error near +1 else { BIDECIMAL_CALL1_NORND_NOSTAT(bid32_abs,t,x); BIDECIMAL_CALL2(bid32_sub,t,t1,t); BIDECIMAL_CALL1(bid32_to_binary64,td,t); td = (2.0 - td) * td; yd = acos(sqrt(td)); if (xd < 0.0) yd = -yd; BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } } LIBRARY/src/bid32_lgamma.c0000644€­ Q01134020000000754315113665770014234 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double lgamma(double); double fabs(double); double log(double); double sin(double); #define BID32_INF 0x78000000ul BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_lgamma, BID_UINT32, x) // Declare local variables BID_UINT32 res, x_int, x_frac; double xd, yd, fd; int cmp_res; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Convert to binary BIDECIMAL_CALL1(bid32_to_binary64,xd,x); // If x >= 1/2 then we're very safe doing the operation naively. // This applies even to the case x = +inf where lgamma(x) = +inf if (xd >= 0.5) { yd = lgamma(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } // Filter out the case of negative infinity, where we return +inf BIDECIMAL_CALL1_NORND_NOSTAT(bid32_isInf,cmp_res,x); if (cmp_res) { res = BID32_INF; BID_RETURN (res); } // Otherwise, even with the huge extra precision, we may need to worry // about the singularities at nonnegative integers. So we use the reflection // formula // // Gamma(x) = pi / (sin (pi * x) * Gamma(1 - x)) // log|Gamma(x)| = log pi - lgamma(1 - x) - log|sin(pi * x)| // Form the integer and fractional parts of x, and convert fractional // part to double. BIDECIMAL_CALL1_NORND(bid32_round_integral_nearest_even, x_int, x); BIDECIMAL_CALL2(bid32_sub,x_frac,x,x_int); // If the fractional part is 0, return +inf BIDECIMAL_CALL1_NORND_NOSTAT(bid32_isZero,cmp_res,x_frac); if (cmp_res) { res = BID32_INF; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } // Otherwise do the main computation in double. BIDECIMAL_CALL1(bid32_to_binary64,fd,x_frac); yd = 1.144729885849400174143 - log(fabs(sin(3.14159265358979323846 * fd))) - lgamma(1.0 - xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } LIBRARY/src/bid32_exp2.c0000644€­ Q01134020000000614715113665770013653 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double exp2(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_exp2, BID_UINT32, x) // Declare local variables BID_UINT32 res; double xd, yd; int z; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid32_isZero, z, x); if (z) { // 1 according C99 res = 0x32800001; BID_RETURN (res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid32_isInf, z, x); if (z) { // 0 or Inf according C99 if (x & MASK_SIGN32) { res = 0x32800000; } else { res = 0x78000000; } #ifdef BID_SET_STATUS_FLAGS *pfpsf = 0; #endif BID_RETURN (res); } // Otherwise just do the operation "naively". // We inherit the special cases from the binary function, // but deal with overflowing finite inputs carefully so // things work in directed rounding modes. BIDECIMAL_CALL1(bid32_to_binary64,xd,x); if (xd > 1000.0) yd = 1.0e200; else if (xd < -1000.0) yd = 1.0e-200; else yd = exp2(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } LIBRARY/src/bid64_log2.c0000644€­ Q01134020000000725215113665770013643 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" #define BID64_NAN 0x7c00000000000000ull #define BID64_1 0x31c0000000000001ull BID_F80_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F80_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 BID_F80_CONST_DEF( c_1_ov_ln_2, 3fff71547652b82f, e1777d0ffda0d23a); // 1/ln(2) BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_log2, BID_UINT64, x) // Declare local variables BID_UINT64 res; BID_F80_TYPE xd, rd, e_bin, abs_e_bin; int z; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid64_isZero, z, x); if (z) { // -Infinite and Divide by Zero according C99 res = 0xf800000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } if (x & MASK_SIGN) { // QNaN Indefinite res = 0x7c00000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } BIDECIMAL_CALL1 (bid64_to_binary80, xd, x); __bid_f80_log2( rd, xd ); __bid_f80_sub( e_bin, xd, c_one.v); __bid_f80_fabs( abs_e_bin, e_bin); if ( __bid_f80_lt( abs_e_bin, c_half.v ) ) { BID_F80_TYPE tmp_e; BID_UINT64 e; BID_UINT64 b64 = (BID_UINT64) BID64_1; BIDECIMAL_CALL2 (bid64_sub, e, x, b64); BIDECIMAL_CALL1 (bid64_to_binary80, tmp_e, e); __bid_f80_sub( tmp_e, e_bin, tmp_e ); __bid_f80_mul( tmp_e, c_1_ov_ln_2.v, tmp_e ); __bid_f80_div( tmp_e, tmp_e, xd ); __bid_f80_sub( rd, rd, tmp_e ); } BIDECIMAL_CALL1 (binary80_to_bid64, res, rd); BID_RETURN (res); } LIBRARY/src/bid64_sqrt.c0000644€­ Q01134020000003731315113665770013772 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID64 square root ***************************************************************************** * * Algorithm description: * * if(exponent_x is odd) * scale coefficient_x by 10, adjust exponent * - get lower estimate for number of digits in coefficient_x * - scale coefficient x to between 31 and 33 decimal digits * - in parallel, check for exact case and return if true * - get high part of result coefficient using double precision sqrt * - compute remainder and refine coefficient in one iteration (which * modifies it by at most 1) * - result exponent is easy to compute from the adjusted arg. exponent * ****************************************************************************/ #define BID_128RES #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" #include "bid_sqrt_macros.h" #include BID_EXTERN_C double sqrt (double); BID_TYPE_FUNCTION_ARG1(BID_UINT64, bid64_sqrt, x) BID_UINT128 CA, CT; BID_UINT64 sign_x, coefficient_x; BID_UINT64 Q, Q2, A10, C4, R, R2, QE, res; BID_SINT64 D; int_double t_scale; int_float tempx; double da, dq, da_h, da_l, dqe; int exponent_x, exponent_q, bin_expon_cx; int digits_x; int scale; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } // unpack arguments, check for NaN or Infinity if (!unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x)) { // x is Inf. or NaN or 0 if ((x & INFINITY_MASK64) == INFINITY_MASK64) { res = coefficient_x; if ((coefficient_x & SSNAN_MASK64) == SINFINITY_MASK64) // -Infinity { res = NAN_MASK64; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif } #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res & QUIET_MASK64); } // x is 0 exponent_x = (exponent_x + DECIMAL_EXPONENT_BIAS) >> 1; res = sign_x | (((BID_UINT64) exponent_x) << 53); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // x<0? if (sign_x && coefficient_x) { res = NAN_MASK64; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif //--- get number of bits in the coefficient of x --- tempx.d = (float) coefficient_x; bin_expon_cx = ((tempx.i >> 23) & 0xff) - 0x7f; digits_x = bid_estimate_decimal_digits[bin_expon_cx]; // add test for range if (coefficient_x >= bid_power10_index_binexp[bin_expon_cx]) digits_x++; A10 = coefficient_x; if (exponent_x & 1) { A10 = (A10 << 2) + A10; A10 += A10; } dqe = sqrt ((double) A10); //dq=(double)A10; dqe=sqrt(dq); QE = (BID_UINT32) dqe; //printf("QE=%I64d, A10=%I64d, P=%I64d, dq=%016I64x,dqe=%016I64x\n",QE,A10,QE*QE,*(BID_UINT64*)&dq,*(BID_UINT64*)&dqe); if (QE * QE == A10) { res = very_fast_get_BID64 (0, (exponent_x + DECIMAL_EXPONENT_BIAS) >> 1, QE); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // if exponent is odd, scale coefficient by 10 scale = 31 - digits_x; exponent_q = exponent_x - scale; scale += (exponent_q & 1); // exp. bias is even CT = bid_power10_table_128[scale]; __mul_64x128_short (CA, coefficient_x, CT); // 2^64 t_scale.i = 0x43f0000000000000ull; // convert CA to DP da_h = CA.w[1]; da_l = CA.w[0]; da = da_h * t_scale.d + da_l; dq = sqrt (da); Q = (BID_UINT64) dq; // get sign(sqrt(CA)-Q) R = CA.w[0] - Q * Q; R = ((BID_SINT64) R) >> 63; D = R + R + 1; exponent_q = (exponent_q + DECIMAL_EXPONENT_BIAS) >> 1; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY if (!((rnd_mode) & 3)) { #endif #endif // midpoint to check Q2 = Q + Q + D; C4 = CA.w[0] << 2; // get sign(-sqrt(CA)+Midpoint) R2 = Q2 * Q2 - C4; R2 = ((BID_SINT64) R2) >> 63; // adjust Q if R!=R2 Q += (D & (R ^ R2)); #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY } else { C4 = CA.w[0]; Q += D; if ((BID_SINT64) (Q * Q - C4) > 0) Q--; if (rnd_mode == BID_ROUNDING_UP) Q++; } #endif #endif res = fast_get_BID64 (0, exponent_q, Q); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } BID_TYPE0_FUNCTION_ARG1 (BID_UINT64, bid64q_sqrt, x) BID_UINT256 M256, C4, C8; BID_UINT128 CX, CX2, A10, S2, T128, CS, CSM, CS2, C256, CS1, mul_factor2_long = { {0x0ull, 0x0ull} }, QH, Tmp, TP128, Qh, Ql; BID_UINT64 sign_x, Carry, B10, res, mul_factor, mul_factor2 = 0x0ull, CS0; BID_SINT64 D; int_float fx, f64; int exponent_x, bin_expon_cx, done = 0; int digits, scale, exponent_q = 0, exact = 1, amount, extra_digits; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { res = CX.w[1]; // NaN ? if ((x.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif Tmp.w[1] = (CX.w[1] & 0x00003fffffffffffull); Tmp.w[0] = CX.w[0]; TP128 = bid_reciprocals10_128[18]; __mul_128x128_full (Qh, Ql, Tmp, TP128); amount = bid_recip_scale[18]; __shr_128 (Tmp, Qh, amount); res = (CX.w[1] & 0xfc00000000000000ull) | Tmp.w[0]; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // x is Infinity? if ((x.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { if (sign_x) { // -Inf, return NaN res = 0x7c00000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif } // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } // x is 0 otherwise exponent_x = ((exponent_x - DECIMAL_EXPONENT_BIAS_128) >> 1) + DECIMAL_EXPONENT_BIAS; if (exponent_x < 0) exponent_x = 0; if (exponent_x > DECIMAL_MAX_EXPON_64) exponent_x = DECIMAL_MAX_EXPON_64; //res= sign_x | (((BID_UINT64)exponent_x)<<53); res = get_BID64 (sign_x, exponent_x, 0, rnd_mode, pfpsf); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } if (sign_x) { res = 0x7c00000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // 2^64 f64.i = 0x5f800000; // fx ~ CX fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; bin_expon_cx = ((fx.i >> 23) & 0xff) - 0x7f; digits = bid_estimate_decimal_digits[bin_expon_cx]; A10 = CX; if (exponent_x & 1) { A10.w[1] = (CX.w[1] << 3) | (CX.w[0] >> 61); A10.w[0] = CX.w[0] << 3; CX2.w[1] = (CX.w[1] << 1) | (CX.w[0] >> 63); CX2.w[0] = CX.w[0] << 1; __add_128_128 (A10, A10, CX2); } C256.w[1] = A10.w[1]; C256.w[0] = A10.w[0]; CS.w[0] = short_sqrt128 (A10); CS.w[1] = 0; mul_factor = 0; // check for exact result if (CS.w[0] < 10000000000000000ull) { if (CS.w[0] * CS.w[0] == A10.w[0]) { __sqr64_fast (S2, CS.w[0]); if (S2.w[1] == A10.w[1]) // && S2.w[0]==A10.w[0]) { res = get_BID64 (0, ((exponent_x - DECIMAL_EXPONENT_BIAS_128) >> 1) + DECIMAL_EXPONENT_BIAS, CS.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } } if (CS.w[0] >= 1000000000000000ull) { done = 1; exponent_q = exponent_x; C256.w[1] = A10.w[1]; C256.w[0] = A10.w[0]; } #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif exact = 0; } else { B10 = 0x3333333333333334ull; __mul_64x64_to_128_full (CS2, CS.w[0], B10); CS0 = CS2.w[1] >> 1; if (CS.w[0] != ((CS0 << 3) + (CS0 << 1))) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif exact = 0; } done = 1; CS.w[0] = CS0; exponent_q = exponent_x + 2; mul_factor = 10; mul_factor2 = 100; if (CS.w[0] >= 10000000000000000ull) { __mul_64x64_to_128_full (CS2, CS.w[0], B10); CS0 = CS2.w[1] >> 1; if (CS.w[0] != ((CS0 << 3) + (CS0 << 1))) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif exact = 0; } exponent_q += 2; CS.w[0] = CS0; mul_factor = 100; mul_factor2 = 10000; } if (exact) { CS0 = CS.w[0] * mul_factor; __sqr64_fast (CS1, CS0) if ((CS1.w[0] != A10.w[0]) || (CS1.w[1] != A10.w[1])) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif exact = 0; } } } if (!done) { // get number of digits in CX D = CX.w[1] - bid_power10_index_binexp_128[bin_expon_cx].w[1]; if (D > 0 || (!D && CX.w[0] >= bid_power10_index_binexp_128[bin_expon_cx].w[0])) digits++; // if exponent is odd, scale coefficient by 10 scale = 31 - digits; exponent_q = exponent_x - scale; scale += (exponent_q & 1); // exp. bias is even T128 = bid_power10_table_128[scale]; __mul_128x128_low (C256, CX, T128); CS.w[0] = short_sqrt128 (C256); } exponent_q = ((exponent_q - DECIMAL_EXPONENT_BIAS_128) >> 1) + DECIMAL_EXPONENT_BIAS; if ((exponent_q < 0) && (exponent_q + MAX_FORMAT_DIGITS >= 0)) { extra_digits = -exponent_q; exponent_q = 0; // get coeff*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (QH, CS.w[0], bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; CS0 = QH.w[1] >> amount; #ifdef BID_SET_STATUS_FLAGS if (exact) { if (CS.w[0] != CS0 * bid_power10_table_128[extra_digits].w[0]) exact = 0; } if (!exact) __set_status_flags (pfpsf, BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION); #endif CS.w[0] = CS0; if (!mul_factor) mul_factor = 1; mul_factor *= bid_power10_table_128[extra_digits].w[0]; __mul_64x64_to_128 (mul_factor2_long, mul_factor, mul_factor); if (mul_factor2_long.w[1]) mul_factor2 = 0; else mul_factor2 = mul_factor2_long.w[1]; } // 4*C256 C4.w[1] = (C256.w[1] << 2) | (C256.w[0] >> 62); C4.w[0] = C256.w[0] << 2; #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY if (!((rnd_mode) & 3)) { #endif #endif // compare to midpoints CSM.w[0] = (CS.w[0] + CS.w[0]) | 1; if (mul_factor) CSM.w[0] *= mul_factor; // CSM^2 __mul_64x64_to_128 (M256, CSM.w[0], CSM.w[0]); if (C4.w[1] > M256.w[1] || (C4.w[1] == M256.w[1] && C4.w[0] > M256.w[0])) { // round up CS.w[0]++; } else { C8.w[0] = CS.w[0] << 3; C8.w[1] = 0; if (mul_factor) { if (mul_factor2) { __mul_64x64_to_128 (C8, C8.w[0], mul_factor2); } else { __mul_64x128_low (C8, C8.w[0], mul_factor2_long); } } // M256 - 8*CSM __sub_borrow_out (M256.w[0], Carry, M256.w[0], C8.w[0]); M256.w[1] = M256.w[1] - C8.w[1] - Carry; // if CSM' > C256, round up if (M256.w[1] > C4.w[1] || (M256.w[1] == C4.w[1] && M256.w[0] > C4.w[0])) { // round down if (CS.w[0]) CS.w[0]--; } } #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY } else { CS.w[0]++; CSM.w[0] = CS.w[0]; C8.w[0] = CSM.w[0] << 1; if (mul_factor) CSM.w[0] *= mul_factor; __mul_64x64_to_128 (M256, CSM.w[0], CSM.w[0]); C8.w[1] = 0; if (mul_factor) { if (mul_factor2) { __mul_64x64_to_128 (C8, C8.w[0], mul_factor2); } else { __mul_64x128_low (C8, C8.w[0], mul_factor2_long); } } if (M256.w[1] > C256.w[1] || (M256.w[1] == C256.w[1] && M256.w[0] > C256.w[0])) { __sub_borrow_out (M256.w[0], Carry, M256.w[0], C8.w[0]); M256.w[1] = M256.w[1] - Carry - C8.w[1]; M256.w[0]++; if (!M256.w[0]) { M256.w[1]++; } if ((M256.w[1] > C256.w[1] || (M256.w[1] == C256.w[1] && M256.w[0] > C256.w[0])) && (CS.w[0] > 1)) { CS.w[0]--; if (CS.w[0] > 1) { __sub_borrow_out (M256.w[0], Carry, M256.w[0], C8.w[0]); M256.w[1] = M256.w[1] - Carry - C8.w[1]; M256.w[0]++; if (!M256.w[0]) { M256.w[1]++; } if (M256.w[1] > C256.w[1] || (M256.w[1] == C256.w[1] && M256.w[0] > C256.w[0])) CS.w[0]--; } } } else { CS.w[0]++; } // RU? if (((rnd_mode) != BID_ROUNDING_UP) || exact) { if (CS.w[0]) CS.w[0]--; } } #endif #endif res = get_BID64 (0, exponent_q, CS.w[0], rnd_mode, pfpsf); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN_VAL (res); } LIBRARY/src/bid64_scalb.c0000644€­ Q01134020000000702415113665770014061 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define MAX_FORMAT_DIGITS 16 #define DECIMAL_EXPONENT_BIAS 398 #define MAX_DECIMAL_EXPONENT 767 BID_TYPE0_FUNCTION_ARGTYPE1_OTHER_ARGTYPE2(BID_UINT64, bid64_scalbn, BID_UINT64, x, int, n) BID_UINT64 sign_x, coefficient_x, res; BID_SINT64 exp64; int exponent_x, rmode; // unpack arguments, check for NaN or Infinity if (!unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x)) { // x is Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if (coefficient_x) res = coefficient_x & QUIET_MASK64; else { exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; if(exp64<0) exp64=0; if(exp64>MAX_DECIMAL_EXPONENT) exp64=MAX_DECIMAL_EXPONENT; exponent_x = exp64; res = very_fast_get_BID64 (sign_x, exponent_x, coefficient_x); // 0 } BID_RETURN (res); } exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; exponent_x = exp64; if ((BID_UINT32) exponent_x <= MAX_DECIMAL_EXPONENT) { res = very_fast_get_BID64 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } // check for overflow if (exp64 > MAX_DECIMAL_EXPONENT) { // try to normalize coefficient while ((coefficient_x < 1000000000000000ull) && (exp64 > MAX_DECIMAL_EXPONENT)) { // coefficient_x < 10^15, scale by 10 coefficient_x = (coefficient_x << 1) + (coefficient_x << 3); exponent_x--; exp64--; } if (exp64 <= MAX_DECIMAL_EXPONENT) { res = very_fast_get_BID64 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } else exponent_x = 0x7fffffff; // overflow } // exponent < 0 // the BID pack routine will round the coefficient rmode = rnd_mode; res = get_BID64 (sign_x, exponent_x, coefficient_x, rmode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid64_lrintd.c0000644€­ Q01134020000000676315113665770014302 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID64_lrintd ****************************************************************************/ /* DESCRIPTION: The lrint function rounds its argument to the nearest integer value of type long int, rounding according to the current rounding direction. RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid and inexact */ BID_RESTYPE0_FUNCTION_ARGTYPE1(long int, bid64_lrint, BID_UINT64, x) #if BID_SIZE_LONG==4 BID_SINT32 res; if (rnd_mode == BID_ROUNDING_TO_NEAREST) BIDECIMAL_CALL1_NORND (bid64_to_int32_xrnint, res, x); else if (rnd_mode == BID_ROUNDING_TIES_AWAY) BIDECIMAL_CALL1_NORND (bid64_to_int32_xrninta, res, x); else if (rnd_mode == BID_ROUNDING_DOWN) BIDECIMAL_CALL1_NORND (bid64_to_int32_xfloor, res, x); else if (rnd_mode == BID_ROUNDING_UP) BIDECIMAL_CALL1_NORND (bid64_to_int32_xceil, res, x); else // if (rnd_mode == BID_ROUNDING_TO_ZERO) BIDECIMAL_CALL1_NORND (bid64_to_int32_xint, res, x); #else // if BID_SIZE_LONG==8 BID_SINT64 res; if (rnd_mode == BID_ROUNDING_TO_NEAREST) BIDECIMAL_CALL1_NORND (bid64_to_int64_xrnint, res, x); else if (rnd_mode == BID_ROUNDING_TIES_AWAY) BIDECIMAL_CALL1_NORND (bid64_to_int64_xrninta, res, x); else if (rnd_mode == BID_ROUNDING_DOWN) BIDECIMAL_CALL1_NORND (bid64_to_int64_xfloor, res, x); else if (rnd_mode == BID_ROUNDING_UP) BIDECIMAL_CALL1_NORND (bid64_to_int64_xceil, res, x); else // if (rnd_mode == BID_ROUNDING_TO_ZERO) BIDECIMAL_CALL1_NORND (bid64_to_int64_xint, res, x); #endif BID_RETURN ((long int)res); } LIBRARY/src/bid_decimal_data.c0000644€­ Q01134020000010437015113665770015214 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_UINT64 bid_round_const_table[][19] = { { // RN 0ull, // 0 extra digits 5ull, // 1 extra digits 50ull, // 2 extra digits 500ull, // 3 extra digits 5000ull, // 4 extra digits 50000ull, // 5 extra digits 500000ull, // 6 extra digits 5000000ull, // 7 extra digits 50000000ull, // 8 extra digits 500000000ull, // 9 extra digits 5000000000ull, // 10 extra digits 50000000000ull, // 11 extra digits 500000000000ull, // 12 extra digits 5000000000000ull, // 13 extra digits 50000000000000ull, // 14 extra digits 500000000000000ull, // 15 extra digits 5000000000000000ull, // 16 extra digits 50000000000000000ull, // 17 extra digits 500000000000000000ull // 18 extra digits } , { // RD 0ull, // 0 extra digits 0ull, // 1 extra digits 0ull, // 2 extra digits 00ull, // 3 extra digits 000ull, // 4 extra digits 0000ull, // 5 extra digits 00000ull, // 6 extra digits 000000ull, // 7 extra digits 0000000ull, // 8 extra digits 00000000ull, // 9 extra digits 000000000ull, // 10 extra digits 0000000000ull, // 11 extra digits 00000000000ull, // 12 extra digits 000000000000ull, // 13 extra digits 0000000000000ull, // 14 extra digits 00000000000000ull, // 15 extra digits 000000000000000ull, // 16 extra digits 0000000000000000ull, // 17 extra digits 00000000000000000ull // 18 extra digits } , { // round to Inf 0ull, // 0 extra digits 9ull, // 1 extra digits 99ull, // 2 extra digits 999ull, // 3 extra digits 9999ull, // 4 extra digits 99999ull, // 5 extra digits 999999ull, // 6 extra digits 9999999ull, // 7 extra digits 99999999ull, // 8 extra digits 999999999ull, // 9 extra digits 9999999999ull, // 10 extra digits 99999999999ull, // 11 extra digits 999999999999ull, // 12 extra digits 9999999999999ull, // 13 extra digits 99999999999999ull, // 14 extra digits 999999999999999ull, // 15 extra digits 9999999999999999ull, // 16 extra digits 99999999999999999ull, // 17 extra digits 999999999999999999ull // 18 extra digits } , { // RZ 0ull, // 0 extra digits 0ull, // 1 extra digits 0ull, // 2 extra digits 00ull, // 3 extra digits 000ull, // 4 extra digits 0000ull, // 5 extra digits 00000ull, // 6 extra digits 000000ull, // 7 extra digits 0000000ull, // 8 extra digits 00000000ull, // 9 extra digits 000000000ull, // 10 extra digits 0000000000ull, // 11 extra digits 00000000000ull, // 12 extra digits 000000000000ull, // 13 extra digits 0000000000000ull, // 14 extra digits 00000000000000ull, // 15 extra digits 000000000000000ull, // 16 extra digits 0000000000000000ull, // 17 extra digits 00000000000000000ull // 18 extra digits } , { // round ties away from 0 0ull, // 0 extra digits 5ull, // 1 extra digits 50ull, // 2 extra digits 500ull, // 3 extra digits 5000ull, // 4 extra digits 50000ull, // 5 extra digits 500000ull, // 6 extra digits 5000000ull, // 7 extra digits 50000000ull, // 8 extra digits 500000000ull, // 9 extra digits 5000000000ull, // 10 extra digits 50000000000ull, // 11 extra digits 500000000000ull, // 12 extra digits 5000000000000ull, // 13 extra digits 50000000000000ull, // 14 extra digits 500000000000000ull, // 15 extra digits 5000000000000000ull, // 16 extra digits 50000000000000000ull, // 17 extra digits 500000000000000000ull // 18 extra digits } , }; BID_UINT128 bid_round_const_table_128[][36] = { { //RN {{0ull, 0ull} } , // 0 extra digits {{5ull, 0ull} } , // 1 extra digits {{50ull, 0ull} } , // 2 extra digits {{500ull, 0ull} } , // 3 extra digits {{5000ull, 0ull} } , // 4 extra digits {{50000ull, 0ull} } , // 5 extra digits {{500000ull, 0ull} } , // 6 extra digits {{5000000ull, 0ull} } , // 7 extra digits {{50000000ull, 0ull} } , // 8 extra digits {{500000000ull, 0ull} } , // 9 extra digits {{5000000000ull, 0ull} } , // 10 extra digits {{50000000000ull, 0ull} } , // 11 extra digits {{500000000000ull, 0ull} } , // 12 extra digits {{5000000000000ull, 0ull} } , // 13 extra digits {{50000000000000ull, 0ull} } , // 14 extra digits {{500000000000000ull, 0ull} } , // 15 extra digits {{5000000000000000ull, 0ull} } , // 16 extra digits {{50000000000000000ull, 0ull} } , // 17 extra digits {{500000000000000000ull, 0ull} } , // 18 extra digits {{5000000000000000000ull, 0ull} } , // 19 extra digits {{0xb5e3af16b1880000ull, 2ull} } , //20 {{0x1ae4d6e2ef500000ull, 27ull} } , //21 {{0xcf064dd59200000ull, 271ull} } , //22 {{0x8163f0a57b400000ull, 2710ull} } , //23 {{0xde76676d0800000ull, 27105ull} } , //24 {{0x8b0a00a425000000ull, 0x422caull} } , //25 {{0x6e64066972000000ull, 0x295be9ull} } , //26 {{0x4fe8401e74000000ull, 0x19d971eull} } , //27 {{0x1f12813088000000ull, 0x1027e72full} } , //28 {{0x36b90be550000000ull, 0xa18f07d7ull} } , //29 {{0x233a76f520000000ull, 0x64f964e68ull} } , //30 {{0x6048a59340000000ull, 0x3f1bdf1011ull} } , //31 {{0xc2d677c080000000ull, 0x27716b6a0adull} } , //32 {{0x9c60ad8500000000ull, 0x18a6e32246c9ull} } , //33 {{0x1bc6c73200000000ull, 0xf684df56c3e0ull} } , //34 {{0x15c3c7f400000000ull, 0x9a130b963a6c1ull} } , //35 } , { //RD {{0ull, 0ull} } , // 0 extra digits {{0ull, 0ull} } , // 1 extra digits {{0ull, 0ull} } , // 2 extra digits {{00ull, 0ull} } , // 3 extra digits {{000ull, 0ull} } , // 4 extra digits {{0000ull, 0ull} } , // 5 extra digits {{00000ull, 0ull} } , // 6 extra digits {{000000ull, 0ull} } , // 7 extra digits {{0000000ull, 0ull} } , // 8 extra digits {{00000000ull, 0ull} } , // 9 extra digits {{000000000ull, 0ull} } , // 10 extra digits {{0000000000ull, 0ull} } , // 11 extra digits {{00000000000ull, 0ull} } , // 12 extra digits {{000000000000ull, 0ull} } , // 13 extra digits {{0000000000000ull, 0ull} } , // 14 extra digits {{00000000000000ull, 0ull} } , // 15 extra digits {{000000000000000ull, 0ull} } , // 16 extra digits {{0000000000000000ull, 0ull} } , // 17 extra digits {{00000000000000000ull, 0ull} } , // 18 extra digits {{000000000000000000ull, 0ull} } , // 19 extra digits {{0ull, 0ull} } , //20 {{0ull, 0ull} } , //21 {{0ull, 0ull} } , //22 {{0ull, 0ull} } , //23 {{0ull, 0ull} } , //24 {{0ull, 0ull} } , //25 {{0ull, 0ull} } , //26 {{0ull, 0ull} } , //27 {{0ull, 0ull} } , //28 {{0ull, 0ull} } , //29 {{0ull, 0ull} } , //30 {{0ull, 0ull} } , //31 {{0ull, 0ull} } , //32 {{0ull, 0ull} } , //33 {{0ull, 0ull} } , //34 {{0ull, 0ull} } , //35 } , { //RU {{0ull, 0ull} } , // 0 extra digits {{9ull, 0ull} } , // 1 extra digits {{99ull, 0ull} } , // 2 extra digits {{999ull, 0ull} } , // 3 extra digits {{9999ull, 0ull} } , // 4 extra digits {{99999ull, 0ull} } , // 5 extra digits {{999999ull, 0ull} } , // 6 extra digits {{9999999ull, 0ull} } , // 7 extra digits {{99999999ull, 0ull} } , // 8 extra digits {{999999999ull, 0ull} } , // 9 extra digits {{9999999999ull, 0ull} } , // 10 extra digits {{99999999999ull, 0ull} } , // 11 extra digits {{999999999999ull, 0ull} } , // 12 extra digits {{9999999999999ull, 0ull} } , // 13 extra digits {{99999999999999ull, 0ull} } , // 14 extra digits {{999999999999999ull, 0ull} } , // 15 extra digits {{9999999999999999ull, 0ull} } , // 16 extra digits {{99999999999999999ull, 0ull} } , // 17 extra digits {{999999999999999999ull, 0ull} } , // 18 extra digits {{9999999999999999999ull, 0ull} } , // 19 extra digits {{0x6BC75E2D630FFFFFull, 0x5ull} } , //20 {{0x35C9ADC5DE9FFFFFull, 0x36ull} } , //21 {{0x19E0C9BAB23FFFFFull, 0x21eull} } , //22 {{0x2C7E14AF67FFFFFull, 0x152dull} } , //23 {{0x1BCECCEDA0FFFFFFull, 0xd3c2ull} } , //24 {{0x1614014849FFFFFFull, 0x84595ull} } , //25 {{0xDCC80CD2E3FFFFFFull, 0x52b7d2ull} } , //26 {{0x9FD0803CE7FFFFFFull, 0x33B2E3Cull} } , //27 {{0x3E2502610FFFFFFFull, 0x204FCE5Eull} } , //28 {{0x6D7217CA9FFFFFFFull, 0x1431E0FAEull} } , //29 {{0x4674EDEA3FFFFFFFull, 0xC9F2C9CD0ull} } , //30 {{0xC0914B267FFFFFFFull, 0x7E37BE2022ull} } , //31 {{0x85ACEF80FFFFFFFFull, 0x4EE2D6D415Bull} } , //32 {{0x38c15b09ffffffffull, 0x314dc6448d93ull} } , //33 {{0x378d8e63ffffffffull, 0x1ed09bead87c0ull} } , //34 {{0x2b878fe7ffffffffull, 0x13426172c74d82ull} } , //35 } , { //RZ {{0ull, 0ull} } , // 0 extra digits {{0ull, 0ull} } , // 1 extra digits {{0ull, 0ull} } , // 2 extra digits {{00ull, 0ull} } , // 3 extra digits {{000ull, 0ull} } , // 4 extra digits {{0000ull, 0ull} } , // 5 extra digits {{00000ull, 0ull} } , // 6 extra digits {{000000ull, 0ull} } , // 7 extra digits {{0000000ull, 0ull} } , // 8 extra digits {{00000000ull, 0ull} } , // 9 extra digits {{000000000ull, 0ull} } , // 10 extra digits {{0000000000ull, 0ull} } , // 11 extra digits {{00000000000ull, 0ull} } , // 12 extra digits {{000000000000ull, 0ull} } , // 13 extra digits {{0000000000000ull, 0ull} } , // 14 extra digits {{00000000000000ull, 0ull} } , // 15 extra digits {{000000000000000ull, 0ull} } , // 16 extra digits {{0000000000000000ull, 0ull} } , // 17 extra digits {{00000000000000000ull, 0ull} } , // 18 extra digits {{000000000000000000ull, 0ull} } , // 19 extra digits {{0ull, 0ull} } , //20 {{0ull, 0ull} } , //21 {{0ull, 0ull} } , //22 {{0ull, 0ull} } , //23 {{0ull, 0ull} } , //24 {{0ull, 0ull} } , //25 {{0ull, 0ull} } , //26 {{0ull, 0ull} } , //27 {{0ull, 0ull} } , //28 {{0ull, 0ull} } , //29 {{0ull, 0ull} } , //30 {{0ull, 0ull} } , //31 {{0ull, 0ull} } , //32 {{0ull, 0ull} } , //33 {{0ull, 0ull} } , //34 {{0ull, 0ull} } , //35 } , { //RN, ties away {{0ull, 0ull} } , // 0 extra digits {{5ull, 0ull} } , // 1 extra digits {{50ull, 0ull} } , // 2 extra digits {{500ull, 0ull} } , // 3 extra digits {{5000ull, 0ull} } , // 4 extra digits {{50000ull, 0ull} } , // 5 extra digits {{500000ull, 0ull} } , // 6 extra digits {{5000000ull, 0ull} } , // 7 extra digits {{50000000ull, 0ull} } , // 8 extra digits {{500000000ull, 0ull} } , // 9 extra digits {{5000000000ull, 0ull} } , // 10 extra digits {{50000000000ull, 0ull} } , // 11 extra digits {{500000000000ull, 0ull} } , // 12 extra digits {{5000000000000ull, 0ull} } , // 13 extra digits {{50000000000000ull, 0ull} } , // 14 extra digits {{500000000000000ull, 0ull} } , // 15 extra digits {{5000000000000000ull, 0ull} } , // 16 extra digits {{50000000000000000ull, 0ull} } , // 17 extra digits {{500000000000000000ull, 0ull} } , // 18 extra digits {{5000000000000000000ull, 0ull} } , // 19 extra digits {{0xb5e3af16b1880000ull, 2ull} } , //20 {{0x1ae4d6e2ef500000ull, 27ull} } , //21 {{0xcf064dd59200000ull, 271ull} } , //22 {{0x8163f0a57b400000ull, 2710ull} } , //23 {{0xde76676d0800000ull, 27105ull} } , //24 {{0x8b0a00a425000000ull, 0x422caull} } , //25 {{0x6e64066972000000ull, 0x295be9ull} } , //26 {{0x4fe8401e74000000ull, 0x19d971eull} } , //27 {{0x1f12813088000000ull, 0x1027e72full} } , //28 {{0x36b90be550000000ull, 0xa18f07d7ull} } , //29 {{0x233a76f520000000ull, 0x64f964e68ull} } , //30 {{0x6048a59340000000ull, 0x3f1bdf1011ull} } , //31 {{0xc2d677c080000000ull, 0x27716b6a0adull} } , //32 {{0x9c60ad8500000000ull, 0x18a6e32246c9ull} } , //33 {{0x1bc6c73200000000ull, 0xf684df56c3e0ull} } , //34 {{0x15c3c7f400000000ull, 0x9a130b963a6c1ull} } , //35 } }; BID_UINT128 bid_reciprocals10_128[] = { {{0ull, 0ull} } , // 0 extra digits {{0x3333333333333334ull, 0x3333333333333333ull} } , // 1 extra digit {{0x51eb851eb851eb86ull, 0x051eb851eb851eb8ull} } , // 2 extra digits {{0x3b645a1cac083127ull, 0x0083126e978d4fdfull} } , // 3 extra digits {{0x4af4f0d844d013aaULL, 0x00346dc5d6388659ULL} } , // 10^(-4) * 2^131 {{0x08c3f3e0370cdc88ULL, 0x0029f16b11c6d1e1ULL} } , // 10^(-5) * 2^134 {{0x6d698fe69270b06dULL, 0x00218def416bdb1aULL} } , // 10^(-6) * 2^137 {{0xaf0f4ca41d811a47ULL, 0x0035afe535795e90ULL} } , // 10^(-7) * 2^141 {{0xbf3f70834acdaea0ULL, 0x002af31dc4611873ULL} } , // 10^(-8) * 2^144 {{0x65cc5a02a23e254dULL, 0x00225c17d04dad29ULL} } , // 10^(-9) * 2^147 {{0x6fad5cd10396a214ULL, 0x0036f9bfb3af7b75ULL} } , // 10^(-10) * 2^151 {{0xbfbde3da69454e76ULL, 0x002bfaffc2f2c92aULL} } , // 10^(-11) * 2^154 {{0x32fe4fe1edd10b92ULL, 0x00232f33025bd422ULL} } , // 10^(-12) * 2^157 {{0x84ca19697c81ac1cULL, 0x00384b84d092ed03ULL} } , // 10^(-13) * 2^161 {{0x03d4e1213067bce4ULL, 0x002d09370d425736ULL} } , // 10^(-14) * 2^164 {{0x3643e74dc052fd83ULL, 0x0024075f3dceac2bULL} } , // 10^(-15) * 2^167 {{0x56d30baf9a1e626bULL, 0x0039a5652fb11378ULL} } , // 10^(-16) * 2^171 {{0x12426fbfae7eb522ULL, 0x002e1dea8c8da92dULL} } , // 10^(-17) * 2^174 {{0x41cebfcc8b9890e8ULL, 0x0024e4bba3a48757ULL} } , // 10^(-18) * 2^177 {{0x694acc7a78f41b0dULL, 0x003b07929f6da558ULL} } , // 10^(-19) * 2^181 {{0xbaa23d2ec729af3eULL, 0x002f394219248446ULL} } , // 10^(-20) * 2^184 {{0xfbb4fdbf05baf298ULL, 0x0025c768141d369eULL} } , // 10^(-21) * 2^187 {{0x2c54c931a2c4b759ULL, 0x003c7240202ebdcbULL} } , // 10^(-22) * 2^191 {{0x89dd6dc14f03c5e1ULL, 0x00305b66802564a2ULL} } , // 10^(-23) * 2^194 {{0xd4b1249aa59c9e4eULL, 0x0026af8533511d4eULL} } , // 10^(-24) * 2^197 {{0x544ea0f76f60fd49ULL, 0x003de5a1ebb4fbb1ULL} } , // 10^(-25) * 2^201 {{0x76a54d92bf80caa1ULL, 0x00318481895d9627ULL} } , // 10^(-26) * 2^204 {{0x921dd7a89933d54eULL, 0x00279d346de4781fULL} } , // 10^(-27) * 2^207 {{0x8362f2a75b862215ULL, 0x003f61ed7ca0c032ULL} } , // 10^(-28) * 2^211 {{0xcf825bb91604e811ULL, 0x0032b4bdfd4d668eULL} } , // 10^(-29) * 2^214 {{0x0c684960de6a5341ULL, 0x00289097fdd7853fULL} } , // 10^(-30) * 2^217 {{0x3d203ab3e521dc34ULL, 0x002073accb12d0ffULL} } , // 10^(-31) * 2^220 {{0x2e99f7863b696053ULL, 0x0033ec47ab514e65ULL} } , // 10^(-32) * 2^224 {{0x587b2c6b62bab376ULL, 0x002989d2ef743eb7ULL} } , // 10^(-33) * 2^227 {{0xad2f56bc4efbc2c5ULL, 0x00213b0f25f69892ULL} } , // 10^(-34) * 2^230 {{0x0f2abc9d8c9689d1ull, 0x01a95a5b7f87a0efull} } , // 35 extra digits }; int bid_recip_scale[] = { 129 - 128, // 1 129 - 128, // 1/10 129 - 128, // 1/10^2 129 - 128, // 1/10^3 3, // 131 - 128 6, // 134 - 128 9, // 137 - 128 13, // 141 - 128 16, // 144 - 128 19, // 147 - 128 23, // 151 - 128 26, // 154 - 128 29, // 157 - 128 33, // 161 - 128 36, // 164 - 128 39, // 167 - 128 43, // 171 - 128 46, // 174 - 128 49, // 177 - 128 53, // 181 - 128 56, // 184 - 128 59, // 187 - 128 63, // 191 - 128 66, // 194 - 128 69, // 197 - 128 73, // 201 - 128 76, // 204 - 128 79, // 207 - 128 83, // 211 - 128 86, // 214 - 128 89, // 217 - 128 92, // 220 - 128 96, // 224 - 128 99, // 227 - 128 102, // 230 - 128 109, // 237 - 128, 1/10^35 }; // tables used in computation int bid_estimate_decimal_digits[129] = { 1, //2^0 =1 < 10^0 1, //2^1 =2 < 10^1 1, //2^2 =4 < 10^1 1, //2^3 =8 < 10^1 2, //2^4 =16 < 10^2 2, //2^5 =32 < 10^2 2, //2^6 =64 < 10^2 3, //2^7 =128 < 10^3 3, //2^8 =256 < 10^3 3, //2^9 =512 < 10^3 4, //2^10=1024 < 10^4 4, //2^11=2048 < 10^4 4, //2^12=4096 < 10^4 4, //2^13=8192 < 10^4 5, //2^14=16384 < 10^5 5, //2^15=32768 < 10^5 5, //2^16=65536 < 10^5 6, //2^17=131072 < 10^6 6, //2^18=262144 < 10^6 6, //2^19=524288 < 10^6 7, //2^20=1048576 < 10^7 7, //2^21=2097152 < 10^7 7, //2^22=4194304 < 10^7 7, //2^23=8388608 < 10^7 8, //2^24=16777216 < 10^8 8, //2^25=33554432 < 10^8 8, //2^26=67108864 < 10^8 9, //2^27=134217728 < 10^9 9, //2^28=268435456 < 10^9 9, //2^29=536870912 < 10^9 10, //2^30=1073741824< 10^10 10, //2^31=2147483648< 10^10 10, //2^32=4294967296 < 10^10 10, //2^33=8589934592 < 10^10 11, //2^34=17179869184 < 10^11 11, //2^35=34359738368 < 10^11 11, //2^36=68719476736 < 10^11 12, //2^37=137438953472 < 10^12 12, //2^38=274877906944 < 10^12 12, //2^39=549755813888 < 10^12 13, //2^40=1099511627776 < 10^13 13, //2^41=2199023255552 < 10^13 13, //2^42=4398046511104 < 10^13 13, //2^43=8796093022208 < 10^13 14, //2^44=17592186044416 < 10^14 14, //2^45=35184372088832 < 10^14 14, //2^46=70368744177664 < 10^14 15, //2^47=140737488355328< 10^15 15, //2^48=281474976710656 < 10^15 15, //2^49=562949953421312 < 10^15 16, //2^50=1125899906842624 < 10^16 16, //2^51=2251799813685248 < 10^16 16, //2^52=4503599627370496 < 10^16 16, //2^53=9007199254740992 < 10^16 17, //2^54=18014398509481984 < 10^17 17, //2^55=36028797018963968 < 10^17 17, //2^56=72057594037927936 < 10^17 18, //2^57=144115188075855872 < 10^18 18, //2^58=288230376151711744 < 10^18 18, //2^59=576460752303423488 < 10^18 19, //2^60=1152921504606846976< 10^19 19, //2^61=2305843009213693952< 10^19 19, //2^62=4611686018427387904< 10^19 19, //2^63=9223372036854775808< 10^19 20, //2^64=18446744073709551616 20, //2^65=36893488147419103232 20, //2^66=73786976294838206464 21, //2^67=147573952589676412928 21, //2^68=295147905179352825856 21, //2^69=590295810358705651712 22, //2^70=1180591620717411303424 22, //2^71=2361183241434822606848 22, //2^72=4722366482869645213696 22, //2^73=9444732965739290427392 23, //2^74=18889465931478580854784 23, //2^75=37778931862957161709568 23, //2^76=75557863725914323419136 24, //2^77=151115727451828646838272 24, //2^78=302231454903657293676544 24, //2^79=604462909807314587353088 25, //2^80=1208925819614629174706176 25, //2^81=2417851639229258349412352 25, //2^82=4835703278458516698824704 25, //2^83=9671406556917033397649408 26, //2^84=19342813113834066795298816 26, //2^85=38685626227668133590597632 26, //2^86=77371252455336267181195264 27, //2^87=154742504910672534362390528 27, //2^88=309485009821345068724781056 27, //2^89=618970019642690137449562112 28, //2^90=1237940039285380274899124224 28, //2^91=2475880078570760549798248448 28, //2^92=4951760157141521099596496896 28, //2^93=9903520314283042199192993792 29, //2^94=19807040628566084398385987584 29, //2^95=39614081257132168796771975168 29, //2^96=79228162514264337593543950336 30, //2^97=158456325028528675187087900672 30, //2^98=316912650057057350374175801344 30, //2^99=633825300114114700748351602688 31, //2^100=1267650600228229401496703205376 31, //2^101=2535301200456458802993406410752 31, //2^102=5070602400912917605986812821504 32, //2^103=10141204801825835211973625643008 32, //2^104=20282409603651670423947251286016 32, //2^105=40564819207303340847894502572032 32, //2^106=81129638414606681695789005144064 33, //2^107=162259276829213363391578010288128 33, // 2^108 33, // 2^109 34, // 2^110 34, // 2^111 34, // 2^112 35, // 2^113 35, // 2^114 35, // 2^115 35, // 2^116 36, // 2^117 36, // 2^118 36, // 2^119 37, // 2^120 37, // 2^121 37, // 2^122 38, // 2^123 38, // 2^124 38, // 2^125 38, // 2^126 39, // 2^127 39 // 2^128 }; BID_UINT128 bid_power10_table_128[] = { {{0x0000000000000001ull, 0x0000000000000000ull}}, // 10^0 {{0x000000000000000aull, 0x0000000000000000ull}}, // 10^1 {{0x0000000000000064ull, 0x0000000000000000ull}}, // 10^2 {{0x00000000000003e8ull, 0x0000000000000000ull}}, // 10^3 {{0x0000000000002710ull, 0x0000000000000000ull}}, // 10^4 {{0x00000000000186a0ull, 0x0000000000000000ull}}, // 10^5 {{0x00000000000f4240ull, 0x0000000000000000ull}}, // 10^6 {{0x0000000000989680ull, 0x0000000000000000ull}}, // 10^7 {{0x0000000005f5e100ull, 0x0000000000000000ull}}, // 10^8 {{0x000000003b9aca00ull, 0x0000000000000000ull}}, // 10^9 {{0x00000002540be400ull, 0x0000000000000000ull}}, // 10^10 {{0x000000174876e800ull, 0x0000000000000000ull}}, // 10^11 {{0x000000e8d4a51000ull, 0x0000000000000000ull}}, // 10^12 {{0x000009184e72a000ull, 0x0000000000000000ull}}, // 10^13 {{0x00005af3107a4000ull, 0x0000000000000000ull}}, // 10^14 {{0x00038d7ea4c68000ull, 0x0000000000000000ull}}, // 10^15 {{0x002386f26fc10000ull, 0x0000000000000000ull}}, // 10^16 {{0x016345785d8a0000ull, 0x0000000000000000ull}}, // 10^17 {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}}, // 10^18 {{0x8ac7230489e80000ull, 0x0000000000000000ull}}, // 10^19 {{0x6bc75e2d63100000ull, 0x0000000000000005ull}}, // 10^20 {{0x35c9adc5dea00000ull, 0x0000000000000036ull}}, // 10^21 {{0x19e0c9bab2400000ull, 0x000000000000021eull}}, // 10^22 {{0x02c7e14af6800000ull, 0x000000000000152dull}}, // 10^23 {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}}, // 10^24 {{0x161401484a000000ull, 0x0000000000084595ull}}, // 10^25 {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}}, // 10^26 {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}}, // 10^27 {{0x3e25026110000000ull, 0x00000000204fce5eull}}, // 10^28 {{0x6d7217caa0000000ull, 0x00000001431e0faeull}}, // 10^29 {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}}, // 10^30 {{0xc0914b2680000000ull, 0x0000007e37be2022ull}}, // 10^31 {{0x85acef8100000000ull, 0x000004ee2d6d415bull}}, // 10^32 {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}}, // 10^33 {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}}, // 10^34 {{0x2b878fe800000000ull, 0x0013426172c74d82ull}}, // 10^35 {{0xb34b9f1000000000ull, 0x00c097ce7bc90715ull}}, // 10^36 {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}}, // 10^37 {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}}, // 10^38 }; int bid_estimate_bin_expon[] = { 0, // 10^0 3, // 10^1 6, // 10^2 9, // 10^3 13, // 10^4 16, // 10^5 19, // 10^6 23, // 10^7 26, // 10^8 29, // 10^9 33, // 10^10 36, // 10^11 39, // 10^12 43, // 10^13 46, // 10^14 49, // 10^15 53 // 10^16 }; BID_UINT64 bid_power10_index_binexp[] = { 0x000000000000000aull, 0x000000000000000aull, 0x000000000000000aull, 0x000000000000000aull, 0x0000000000000064ull, 0x0000000000000064ull, 0x0000000000000064ull, 0x00000000000003e8ull, 0x00000000000003e8ull, 0x00000000000003e8ull, 0x0000000000002710ull, 0x0000000000002710ull, 0x0000000000002710ull, 0x0000000000002710ull, 0x00000000000186a0ull, 0x00000000000186a0ull, 0x00000000000186a0ull, 0x00000000000f4240ull, 0x00000000000f4240ull, 0x00000000000f4240ull, 0x0000000000989680ull, 0x0000000000989680ull, 0x0000000000989680ull, 0x0000000000989680ull, 0x0000000005f5e100ull, 0x0000000005f5e100ull, 0x0000000005f5e100ull, 0x000000003b9aca00ull, 0x000000003b9aca00ull, 0x000000003b9aca00ull, 0x00000002540be400ull, 0x00000002540be400ull, 0x00000002540be400ull, 0x00000002540be400ull, 0x000000174876e800ull, 0x000000174876e800ull, 0x000000174876e800ull, 0x000000e8d4a51000ull, 0x000000e8d4a51000ull, 0x000000e8d4a51000ull, 0x000009184e72a000ull, 0x000009184e72a000ull, 0x000009184e72a000ull, 0x000009184e72a000ull, 0x00005af3107a4000ull, 0x00005af3107a4000ull, 0x00005af3107a4000ull, 0x00038d7ea4c68000ull, 0x00038d7ea4c68000ull, 0x00038d7ea4c68000ull, 0x002386f26fc10000ull, 0x002386f26fc10000ull, 0x002386f26fc10000ull, 0x002386f26fc10000ull, 0x016345785d8a0000ull, 0x016345785d8a0000ull, 0x016345785d8a0000ull, 0x0de0b6b3a7640000ull, 0x0de0b6b3a7640000ull, 0x0de0b6b3a7640000ull, 0x8ac7230489e80000ull, 0x8ac7230489e80000ull, 0x8ac7230489e80000ull, 0x8ac7230489e80000ull }; int bid_short_recip_scale[] = { 1, 65 - 64, 69 - 64, 71 - 64, 75 - 64, 78 - 64, 81 - 64, 85 - 64, 88 - 64, 91 - 64, 95 - 64, 98 - 64, 101 - 64, 105 - 64, 108 - 64, 111 - 64, 115 - 64, //114 - 64 118 - 64 }; BID_UINT64 bid_reciprocals10_64[] = { 1ull, // dummy value for 0 extra digits 0x3333333333333334ull, // 1 extra digit 0x51eb851eb851eb86ull, 0x20c49ba5e353f7cfull, 0x346dc5d63886594bull, 0x29f16b11c6d1e109ull, 0x218def416bdb1a6eull, 0x35afe535795e90b0ull, 0x2af31dc4611873c0ull, 0x225c17d04dad2966ull, 0x36f9bfb3af7b7570ull, 0x2bfaffc2f2c92ac0ull, 0x232f33025bd42233ull, 0x384b84d092ed0385ull, 0x2d09370d42573604ull, 0x24075f3dceac2b37ull, 0x39a5652fb1137857ull, 0x2e1dea8c8da92d13ull }; int bid_bid_bid_recip_scale32 [] = { 1, 33-32, 35-32, 39-32, 43-32, 46-32, 50-32, 53-32, 57-32 }; BID_UINT64 bid_bid_reciprocals10_32[] = { 1ull, //dummy, 0x33333334ull, 0x147AE148ull, 0x20C49BA6ull, 0x346DC5D7ull, //4 0x29F16B12ull, 0x431BDE83ull, 0x35AFE536ull, 0x55E63B89ull }; BID_UINT128 bid_power10_index_binexp_128[] = { {{0x000000000000000aull, 0x0000000000000000ull}}, {{0x000000000000000aull, 0x0000000000000000ull}}, {{0x000000000000000aull, 0x0000000000000000ull}}, {{0x000000000000000aull, 0x0000000000000000ull}}, {{0x0000000000000064ull, 0x0000000000000000ull}}, {{0x0000000000000064ull, 0x0000000000000000ull}}, {{0x0000000000000064ull, 0x0000000000000000ull}}, {{0x00000000000003e8ull, 0x0000000000000000ull}}, {{0x00000000000003e8ull, 0x0000000000000000ull}}, {{0x00000000000003e8ull, 0x0000000000000000ull}}, {{0x0000000000002710ull, 0x0000000000000000ull}}, {{0x0000000000002710ull, 0x0000000000000000ull}}, {{0x0000000000002710ull, 0x0000000000000000ull}}, {{0x0000000000002710ull, 0x0000000000000000ull}}, {{0x00000000000186a0ull, 0x0000000000000000ull}}, {{0x00000000000186a0ull, 0x0000000000000000ull}}, {{0x00000000000186a0ull, 0x0000000000000000ull}}, {{0x00000000000f4240ull, 0x0000000000000000ull}}, {{0x00000000000f4240ull, 0x0000000000000000ull}}, {{0x00000000000f4240ull, 0x0000000000000000ull}}, {{0x0000000000989680ull, 0x0000000000000000ull}}, {{0x0000000000989680ull, 0x0000000000000000ull}}, {{0x0000000000989680ull, 0x0000000000000000ull}}, {{0x0000000000989680ull, 0x0000000000000000ull}}, {{0x0000000005f5e100ull, 0x0000000000000000ull}}, {{0x0000000005f5e100ull, 0x0000000000000000ull}}, {{0x0000000005f5e100ull, 0x0000000000000000ull}}, {{0x000000003b9aca00ull, 0x0000000000000000ull}}, {{0x000000003b9aca00ull, 0x0000000000000000ull}}, {{0x000000003b9aca00ull, 0x0000000000000000ull}}, {{0x00000002540be400ull, 0x0000000000000000ull}}, {{0x00000002540be400ull, 0x0000000000000000ull}}, {{0x00000002540be400ull, 0x0000000000000000ull}}, {{0x00000002540be400ull, 0x0000000000000000ull}}, {{0x000000174876e800ull, 0x0000000000000000ull}}, {{0x000000174876e800ull, 0x0000000000000000ull}}, {{0x000000174876e800ull, 0x0000000000000000ull}}, {{0x000000e8d4a51000ull, 0x0000000000000000ull}}, {{0x000000e8d4a51000ull, 0x0000000000000000ull}}, {{0x000000e8d4a51000ull, 0x0000000000000000ull}}, {{0x000009184e72a000ull, 0x0000000000000000ull}}, {{0x000009184e72a000ull, 0x0000000000000000ull}}, {{0x000009184e72a000ull, 0x0000000000000000ull}}, {{0x000009184e72a000ull, 0x0000000000000000ull}}, {{0x00005af3107a4000ull, 0x0000000000000000ull}}, {{0x00005af3107a4000ull, 0x0000000000000000ull}}, {{0x00005af3107a4000ull, 0x0000000000000000ull}}, {{0x00038d7ea4c68000ull, 0x0000000000000000ull}}, {{0x00038d7ea4c68000ull, 0x0000000000000000ull}}, {{0x00038d7ea4c68000ull, 0x0000000000000000ull}}, {{0x002386f26fc10000ull, 0x0000000000000000ull}}, {{0x002386f26fc10000ull, 0x0000000000000000ull}}, {{0x002386f26fc10000ull, 0x0000000000000000ull}}, {{0x002386f26fc10000ull, 0x0000000000000000ull}}, {{0x016345785d8a0000ull, 0x0000000000000000ull}}, {{0x016345785d8a0000ull, 0x0000000000000000ull}}, {{0x016345785d8a0000ull, 0x0000000000000000ull}}, {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}}, {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}}, {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}}, {{0x8ac7230489e80000ull, 0x0000000000000000ull}}, {{0x8ac7230489e80000ull, 0x0000000000000000ull}}, {{0x8ac7230489e80000ull, 0x0000000000000000ull}}, {{0x8ac7230489e80000ull, 0x0000000000000000ull}}, {{0x6bc75e2d63100000ull, 0x0000000000000005ull}}, // 10^20 {{0x6bc75e2d63100000ull, 0x0000000000000005ull}}, // 10^20 {{0x6bc75e2d63100000ull, 0x0000000000000005ull}}, // 10^20 {{0x35c9adc5dea00000ull, 0x0000000000000036ull}}, // 10^21 {{0x35c9adc5dea00000ull, 0x0000000000000036ull}}, // 10^21 {{0x35c9adc5dea00000ull, 0x0000000000000036ull}}, // 10^21 {{0x19e0c9bab2400000ull, 0x000000000000021eull}}, // 10^22 {{0x19e0c9bab2400000ull, 0x000000000000021eull}}, // 10^22 {{0x19e0c9bab2400000ull, 0x000000000000021eull}}, // 10^22 {{0x19e0c9bab2400000ull, 0x000000000000021eull}}, // 10^22 {{0x02c7e14af6800000ull, 0x000000000000152dull}}, // 10^23 {{0x02c7e14af6800000ull, 0x000000000000152dull}}, // 10^23 {{0x02c7e14af6800000ull, 0x000000000000152dull}}, // 10^23 {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}}, // 10^24 {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}}, // 10^24 {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}}, // 10^24 {{0x161401484a000000ull, 0x0000000000084595ull}}, // 10^25 {{0x161401484a000000ull, 0x0000000000084595ull}}, // 10^25 {{0x161401484a000000ull, 0x0000000000084595ull}}, // 10^25 {{0x161401484a000000ull, 0x0000000000084595ull}}, // 10^25 {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}}, // 10^26 {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}}, // 10^26 {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}}, // 10^26 {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}}, // 10^27 {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}}, // 10^27 {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}}, // 10^27 {{0x3e25026110000000ull, 0x00000000204fce5eull}}, // 10^28 {{0x3e25026110000000ull, 0x00000000204fce5eull}}, // 10^28 {{0x3e25026110000000ull, 0x00000000204fce5eull}}, // 10^28 {{0x3e25026110000000ull, 0x00000000204fce5eull}}, // 10^28 {{0x6d7217caa0000000ull, 0x00000001431e0faeull}}, // 10^29 {{0x6d7217caa0000000ull, 0x00000001431e0faeull}}, // 10^29 {{0x6d7217caa0000000ull, 0x00000001431e0faeull}}, // 10^29 {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}}, // 10^30 {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}}, // 10^30 {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}}, // 10^30 {{0xc0914b2680000000ull, 0x0000007e37be2022ull}}, // 10^31 {{0xc0914b2680000000ull, 0x0000007e37be2022ull}}, // 10^31 {{0xc0914b2680000000ull, 0x0000007e37be2022ull}}, // 10^31 {{0x85acef8100000000ull, 0x000004ee2d6d415bull}}, // 10^32 {{0x85acef8100000000ull, 0x000004ee2d6d415bull}}, // 10^32 {{0x85acef8100000000ull, 0x000004ee2d6d415bull}}, // 10^32 {{0x85acef8100000000ull, 0x000004ee2d6d415bull}}, // 10^32 {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}}, // 10^33 {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}}, // 10^33 {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}}, // 10^33, entry 112 {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}}, // 10^34 {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}}, // 10^34 {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}}, // 10^34 {{0x2b878fe800000000ull, 0x0013426172c74d82ull}}, // 10^35 {{0x2b878fe800000000ull, 0x0013426172c74d82ull}}, // 10^35 {{0x2b878fe800000000ull, 0x0013426172c74d82ull}}, // 10^35 {{0x2b878fe800000000ull, 0x0013426172c74d82ull}}, // 10^35 {{0xb34b9f1000000000ull, 0x00c097ce7bc90715ull}}, // 10^36 {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}}, // 10^37 {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}}, // 10^37 {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}}, // 10^37 {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}}, // 10^38 {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}}, // 10^38 {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}}, // 10^38 {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}}, // 10^38 }; LIBRARY/src/bid64_exp2.c0000644€­ Q01134020000000730015113665770013650 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_F80_CONST_DEF( c_12000, 400c770000000000, 0000000000000000); // 12000 BID_F80_CONST_DEF( c_neg_12000, c00c770000000000, 0000000000000000); // -12000 BID_F80_CONST_DEF( c_1e2000, 59f2cf6c9c9bc5f8, 84a294e53edc955f); // 1e2000 BID_F80_CONST_DEF( c_1em2000, 260b1ad56d712a5d, 7f02384e5ded39be); // 1e-2000 BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_exp2, BID_UINT64, x) // Declare local variables BID_UINT64 res; BID_F80_TYPE xd, yd; int z; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Treat zero and infinity specially regardless of rounding mode BIDECIMAL_CALL1_NORND_NOSTAT (bid64_isZero, z, x); if (z) { // 1 according C99 res = 0x31c0000000000001ull; BID_RETURN (res); } BIDECIMAL_CALL1_NORND_NOSTAT (bid64_isInf, z, x); if (z) { // 0 or Inf according C99 if (x & MASK_SIGN) { res = 0x31c0000000000000ull; } else { res = 0x7800000000000000ull; } #ifdef BID_SET_STATUS_FLAGS *pfpsf = 0; #endif BID_RETURN (res); } // Otherwise just do the operation "naively". // We inherit the special cases from the binary function // except for ensuring correct overflow behaviour in // directed rounding modes. BIDECIMAL_CALL1(bid64_to_binary80,xd,x); if (__bid_f80_gt( xd, c_12000.v ) ) { BID_F80_ASSIGN(yd, c_1e2000); } else if (__bid_f80_lt( xd, c_neg_12000.v ) ) { BID_F80_ASSIGN(yd, c_1em2000); } else __bid_f80_exp2( yd, xd ); BIDECIMAL_CALL1(binary80_to_bid64,res,yd); BID_RETURN (res); } LIBRARY/src/bid64_to_uint16.c0000644€­ Q01134020000000656015113665770014631 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffff0000 #define INVALID_RESULT 0x8000 BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid64_to_uint16_rnint, BID_UINT64, x, bid64_to_uint32_rnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid64_to_uint16_xrnint, BID_UINT64, x, bid64_to_uint32_xrnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid64_to_uint16_rninta, BID_UINT64, x, bid64_to_uint32_rninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid64_to_uint16_xrninta, BID_UINT64, x, bid64_to_uint32_xrninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid64_to_uint16_int, BID_UINT64, x, bid64_to_uint32_int, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid64_to_uint16_xint, BID_UINT64, x, bid64_to_uint32_xint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid64_to_uint16_floor, BID_UINT64, x, bid64_to_uint32_floor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid64_to_uint16_ceil, BID_UINT64, x, bid64_to_uint32_ceil, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid64_to_uint16_xfloor, BID_UINT64, x, bid64_to_uint32_xfloor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned short, bid64_to_uint16_xceil, BID_UINT64, x, bid64_to_uint32_xceil, unsigned int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid32_pow.c0000644€­ Q01134020000001622615113665770013601 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define BID32_NAN 0x7c000000ul #define BID32_1 0x32800001ul #define BID32_0 0x00000000ul #define BID32_INF 0x78000000ul int abs(int); double fabs(double); double pow(double, double); BID_TYPE_FUNCTION_ARG2(BID_UINT32, bid32_pow, x, y) BID_UINT32 res, y_int; double xd, yd, rd; int cmp_res, is_int, is_odd; BID_UINT32 lval_1 = BID32_1; // We will always signal on signalling NaNs anyway #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK32) == SNAN_MASK32) || ((y & SNAN_MASK32) == SNAN_MASK32)) { __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); } #endif // We have 1^y = x^+0 = x^-0 = 1 even when x or y is a NaN BIDECIMAL_CALL1_NORND_NOSTAT(bid32_isZero,cmp_res,y); if (cmp_res && ((x & SNAN_MASK32) != SNAN_MASK32)) { res = BID32_1; BID_RETURN(res); } BIDECIMAL_CALL2_NORND(bid32_quiet_equal,cmp_res,x,lval_1); if (cmp_res && ((y & SNAN_MASK32) != SNAN_MASK32)) { res = BID32_1; BID_RETURN(res); } // Otherwise a NaN input leads to a NaN result. // Just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } else if ((y & NAN_MASK32) == NAN_MASK32) { res = y & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Deal with other cases where second arg is infinite: // // pow(-1,+-inf) = 1 // pow(x,+inf) = +inf when |x| > 1 // pow(x,+inf) = +0 when |x| < 1 // pow(x,-inf) = +0 when |x| > 1 // pow(x,-inf) = +inf when |x| < 1 BIDECIMAL_CALL1_NORND_NOSTAT(bid32_isInf,cmp_res,y); if (cmp_res) { BID_UINT32 a = x & ~SIGNMASK32; BIDECIMAL_CALL2_NORND(bid32_quiet_equal,cmp_res,a,lval_1); if (cmp_res) { res = BID32_1; BID_RETURN(res); } BIDECIMAL_CALL2_NORND(bid32_quiet_less,cmp_res,a,lval_1); if (cmp_res) if ((y & SIGNMASK32) != 0) res = BID32_INF; else res = BID32_0; else if ((y & SIGNMASK32) != 0) res = BID32_0; else res = BID32_INF; BID_RETURN(res); } // See if the exponent is an integer, and if so, find its parity. // We can assume that bid32_round_integral_nearest_even returns a // result with exponent >= 0, and if it's > 0 it's trivially even. BIDECIMAL_CALL1_NORND(bid32_round_integral_nearest_even, y_int, y); BIDECIMAL_CALL2_NORND(bid32_quiet_equal,is_int,y_int,y); is_odd = 0; if (is_int) { int e = (((y_int & (3ull<<29)) == (3ull<<29)) ? (y_int >> 21) : (y_int >> 23)) & ((1ull<<8)-1); if ((e == 101) && (y_int & 1)) is_odd = 1; } // Now the cases where the first arg is infinite: // // pow(+inf,y) = 0 for y < 0 // pow(+inf,y) = +inf for y > 0 // and pow(-inf,y) the same with sign swapped for odd integers BIDECIMAL_CALL1_NORND_NOSTAT(bid32_isInf,cmp_res,x); if (cmp_res) { if ((y & SIGNMASK32) != 0) res = BID32_0; else res = BID32_INF; if (is_odd && ((x & SIGNMASK32) != 0)) res = res ^ SIGNMASK32; BID_RETURN(res); } // Now cases where first argument is 0, where we return +0 or +inf, // or -0 or -inf if the second argument is an odd integer. BIDECIMAL_CALL1_NORND_NOSTAT(bid32_isZero,cmp_res,x); if (cmp_res) { if ((y & SIGNMASK32) != 0) { res = BID32_INF; __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); } else res = BID32_0; if (is_odd && ((x & SIGNMASK32) != 0)) res = res ^ SIGNMASK32; BID_RETURN(res); } // Check for appropriately small (unsigned int) exponent, and compute as // x^N where N is that integer if EXACTLY an integer, or 1/(x^|N|) for N < 0 { int exact_y; int inexact = 0; int save_flags = *pfpsf; *pfpsf &= ~(BID_INEXACT_EXCEPTION | BID_INVALID_EXCEPTION); BIDECIMAL_CALL1_NORND(bid32_to_int32_xrnint, exact_y, y); if ((*pfpsf & (BID_INEXACT_EXCEPTION | BID_INVALID_EXCEPTION)) == 0) { BID_UINT32 p; if (exact_y < 0) { BID_UINT32 tmp = BID32_1; BIDECIMAL_CALL2(bid32_div, p, tmp, x); if (*pfpsf & BID_INEXACT_EXCEPTION) { inexact = 1; } exact_y *= (-1); } else { p = x; } if((!inexact) && (((unsigned)exact_y) <= 101)) { // exact_y >= 0 here BID_UINT32 r = BID32_1; for (; exact_y; exact_y >>= 1) { if (exact_y & 1) { BIDECIMAL_CALL2(bid32_mul, r, r, p); } if (exact_y > 1) { BIDECIMAL_CALL2(bid32_mul, p, p, p); } } BID_RETURN(r); } } else { *pfpsf = save_flags; } } // Finally, we can assume all arguments are finite and nonzero. // So launch into the naive computation. But because we can be // more discriminating about integer status prior to conversion, // separate out the sign and correct it later. BIDECIMAL_CALL1 (bid32_to_binary64, xd, x); xd = fabs(xd); BIDECIMAL_CALL1 (bid32_to_binary64, yd, y); rd = pow(xd, yd); BIDECIMAL_CALL1 (binary64_to_bid32, res, rd); // If we got a NaN from all that, then canonize it // Also raise exception since it wasn't from the input. // Do likewise for negative^noninteger if (((res & NAN_MASK32) == NAN_MASK32) || (((x & SIGNMASK32) != 0) && !is_int)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(BID32_NAN); } // Otherwise correct the sign. if (is_odd && ((x & SIGNMASK32) != 0)) res = res ^ SIGNMASK32; BID_RETURN(res); } LIBRARY/src/bid64_quantize.c0000644€­ Q01134020000001706215113665770014640 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" #define MAX_FORMAT_DIGITS 16 #define DECIMAL_EXPONENT_BIAS 398 #define MAX_DECIMAL_EXPONENT 767 BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2(BID_UINT64, bid64_quantize, BID_UINT64, x, BID_UINT64, y) BID_UINT128 CT; BID_UINT64 sign_x, sign_y, coefficient_x, coefficient_y, remainder_h, C64, valid_x; BID_UINT64 tmp, carry, res; int_float tempx; int exponent_x, exponent_y, digits_x, extra_digits, amount, amount2; int expon_diff, total_digits, bin_expon_cx; unsigned rmode, status; BID_OPT_SAVE_BINARY_FLAGS() valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); // unpack arguments, check for NaN or Infinity if (!unpack_BID64 (&sign_y, &exponent_y, &coefficient_y, y)) { // Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x=Inf, y=Inf? if (((coefficient_x << 1) == 0xf000000000000000ull) && ((coefficient_y << 1) == 0xf000000000000000ull)) { res = coefficient_x; BID_RETURN (res); } // Inf or NaN? if ((y & 0x7800000000000000ull) == 0x7800000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if (((y & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN || (((y & 0x7c00000000000000ull) == 0x7800000000000000ull) && //Inf ((x & 0x7c00000000000000ull) < 0x7800000000000000ull))) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if ((y & NAN_MASK64) != NAN_MASK64) coefficient_y = 0; if ((x & NAN_MASK64) != NAN_MASK64) { res = 0x7c00000000000000ull | (coefficient_y & QUIET_MASK64); if (((y & NAN_MASK64) != NAN_MASK64) && ((x & NAN_MASK64) == 0x7800000000000000ull)) res = x; BID_RETURN (res); } } } // unpack arguments, check for NaN or Infinity if (!valid_x) { // x is Inf. or NaN or 0 // Inf or NaN? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if (((x & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN || ((x & 0x7c00000000000000ull) == 0x7800000000000000ull)) //Inf __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if ((x & NAN_MASK64) != NAN_MASK64) coefficient_x = 0; res = 0x7c00000000000000ull | (coefficient_x & QUIET_MASK64); BID_RETURN (res); } res = very_fast_get_BID64_small_mantissa (sign_x, exponent_y, 0); BID_RETURN (res); } // get number of decimal digits in coefficient_x tempx.d = (float) coefficient_x; bin_expon_cx = ((tempx.i >> 23) & 0xff) - 0x7f; digits_x = bid_estimate_decimal_digits[bin_expon_cx]; if (coefficient_x >= bid_power10_table_128[digits_x].w[0]) digits_x++; expon_diff = exponent_x - exponent_y; total_digits = digits_x + expon_diff; // check range of scaled coefficient if ((BID_UINT32) (total_digits + 1) <= 17) { if (expon_diff >= 0) { coefficient_x *= bid_power10_table_128[expon_diff].w[0]; res = very_fast_get_BID64 (sign_x, exponent_y, coefficient_x); BID_RETURN (res); } // must round off -expon_diff digits extra_digits = -expon_diff; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_x && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif coefficient_x += bid_round_const_table[rmode][extra_digits]; // get P*(2^M[extra_digits])/10^extra_digits __mul_64x64_to_128 (CT, coefficient_x, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift C64 right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; C64 = CT.w[1] >> amount; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rnd_mode == 0) #endif if (C64 & 1) { // check whether fractional part of initial_P/10^extra_digits // is exactly .5 // this is the same as fractional part of // (initial_P + 0.5*10^extra_digits)/10^extra_digits is exactly zero // get remainder amount2 = 64 - amount; remainder_h = 0; remainder_h--; remainder_h >>= amount2; remainder_h = remainder_h & CT.w[1]; // test whether fractional part is 0 if (!remainder_h && (CT.w[0] < bid_reciprocals10_64[extra_digits])) { C64--; } } #endif #ifdef BID_SET_STATUS_FLAGS status = BID_INEXACT_EXCEPTION; // get remainder remainder_h = CT.w[1] << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if ((remainder_h == 0x8000000000000000ull) && (CT.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (CT.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; //if(!C64 && rmode==BID_ROUNDING_DOWN) sign_s=sign_y; break; default: // round up __add_carry_out (tmp, carry, CT.w[0], bid_reciprocals10_64[extra_digits]); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; break; } __set_status_flags (pfpsf, status); #endif res = very_fast_get_BID64_small_mantissa (sign_x, exponent_y, C64); BID_RETURN (res); } if (total_digits < 0) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif C64 = 0; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_x && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; if (rmode == BID_ROUNDING_UP) C64 = 1; #endif #endif res = very_fast_get_BID64_small_mantissa (sign_x, exponent_y, C64); BID_RETURN (res); } // else more than 16 digits in coefficient #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c00000000000000ull; BID_RETURN (res); } LIBRARY/src/bid128_to_uint8.c0000644€­ Q01134020000000657015113665770014634 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffffff00 #define INVALID_RESULT 0x80 BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid128_to_uint8_rnint, BID_UINT128, x, bid128_to_uint32_rnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid128_to_uint8_xrnint, BID_UINT128, x, bid128_to_uint32_xrnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid128_to_uint8_rninta, BID_UINT128, x, bid128_to_uint32_rninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid128_to_uint8_xrninta, BID_UINT128, x, bid128_to_uint32_xrninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid128_to_uint8_int, BID_UINT128, x, bid128_to_uint32_int, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid128_to_uint8_xint, BID_UINT128, x, bid128_to_uint32_xint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid128_to_uint8_floor, BID_UINT128, x, bid128_to_uint32_floor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid128_to_uint8_ceil, BID_UINT128, x, bid128_to_uint32_ceil, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid128_to_uint8_xfloor, BID_UINT128, x, bid128_to_uint32_xfloor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid128_to_uint8_xceil, BID_UINT128, x, bid128_to_uint32_xceil, unsigned int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid64_pow.c0000644€­ Q01134020000002051615113665770013603 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" int abs(int); #define BID64_0 0x31c0000000000000ull #define BID64_1 0x31c0000000000001ull #define BID64_NAN 0x7c00000000000000ull #define BID64_INF 0x7800000000000000ull #define BID64_ABS 0x7fffffffffffffffull BID_F80_CONST_DEF( c_one, 3fff000000000000, 0000000000000000); // 1.0 BID_F80_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 #if DECIMAL_CALL_BY_REFERENCE void bid64_pow (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); #else BID_UINT64 bid64_pow (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); #endif BID_TYPE_FUNCTION_ARG2(BID_UINT64, bid64_pow, x, y) BID_UINT64 y_int, res, xa; BID_F80_TYPE xd, yd, rd, ld, e_bin, abs_e_bin; int cmp_res, is_odd, is_int; BID_UINT64 lval_1 = BID64_1; // We will always signal on signalling NaNs anyway #ifdef BID_SET_STATUS_FLAGS if (((x & SNAN_MASK64) == SNAN_MASK64) || ((y & SNAN_MASK64) == SNAN_MASK64)) { __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); } #endif // We have 1^y = x^+0 = x^-0 = 1 even when x or y is a NaN BIDECIMAL_CALL1_NORND_NOSTAT(bid64_isZero,cmp_res,y); if (cmp_res && ((x & SNAN_MASK64) != SNAN_MASK64)) { res = BID64_1; BID_RETURN(res); } BIDECIMAL_CALL2_NORND(bid64_quiet_equal,cmp_res,x,lval_1); if (cmp_res && ((y & SNAN_MASK64) != SNAN_MASK64)) { res = BID64_1; BID_RETURN(res); } // Otherwise a NaN input leads to a NaN result. // Just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } else if ((y & NAN_MASK64) == NAN_MASK64) { res = y & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Deal with other cases where second arg is infinite: // // pow(-1,+-inf) = 1 // pow(x,+inf) = +inf when |x| > 1 // pow(x,+inf) = +0 when |x| < 1 // pow(x,-inf) = +0 when |x| > 1 // pow(x,-inf) = +inf when |x| < 1 BIDECIMAL_CALL1_NORND_NOSTAT(bid64_isInf,cmp_res,y); if (cmp_res) { BID_UINT64 a = x & ~SIGNMASK64; BIDECIMAL_CALL2_NORND(bid64_quiet_equal,cmp_res,a,lval_1); if (cmp_res) { res = BID64_1; BID_RETURN(res); } BIDECIMAL_CALL2_NORND(bid64_quiet_less,cmp_res,a,lval_1); if (cmp_res) if ((y & SIGNMASK64) != 0) res = BID64_INF; else res = BID64_0; else if ((y & SIGNMASK64) != 0) res = BID64_0; else res = BID64_INF; BID_RETURN(res); } // See if the exponent is an integer, and if so, find its parity. // We can assume that bid64_round_integral_nearest_even returns a // result with exponent >= 0, and if it's > 0 it's trivially even. BIDECIMAL_CALL1_NORND(bid64_round_integral_nearest_even, y_int, y); BIDECIMAL_CALL2_NORND(bid64_quiet_equal,is_int,y_int,y); is_odd = 0; if (is_int) { int e = (((y_int & (3ull<<61)) == (3ull<<61)) ? (y_int >> 51) : (y_int >> 53)) & ((1ull<<10)-1); if ((e == 398) && (y_int & 1)) is_odd = 1; } // Now the cases where the first arg is infinite: // // pow(+inf,y) = 0 for y < 0 // pow(+inf,y) = +inf for y > 0 // and pow(-inf,y) the same with sign swapped for odd integers BIDECIMAL_CALL1_NORND_NOSTAT(bid64_isInf,cmp_res,x); if (cmp_res) { if ((y & SIGNMASK64) != 0) res = BID64_0; else res = BID64_INF; if (is_odd && ((x & SIGNMASK64) != 0)) res = res ^ SIGNMASK64; BID_RETURN(res); } // Now cases where first argument is 0, where we return +0 or +inf, // or -0 or -inf if the second argument is an odd integer. BIDECIMAL_CALL1_NORND_NOSTAT(bid64_isZero,cmp_res,x); if (cmp_res) { if ((y & SIGNMASK64) != 0) { res = BID64_INF; __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); } else res = BID64_0; if (is_odd && ((x & SIGNMASK64) != 0)) res = res ^ SIGNMASK64; BID_RETURN(res); } // Check for appropriately small (unsigned int) exponent, and compute as // x^N where N is that integer if EXACTLY an integer, or 1/(x^|N|) for N < 0 { int exact_y; int inexact = 0; int save_flags = *pfpsf; *pfpsf &= ~(BID_INEXACT_EXCEPTION | BID_INVALID_EXCEPTION); BIDECIMAL_CALL1_NORND(bid64_to_int32_xrnint, exact_y, y); if ((*pfpsf & (BID_INEXACT_EXCEPTION | BID_INVALID_EXCEPTION)) == 0) { BID_UINT64 p; if (exact_y < 0) { BID_UINT64 tmp = BID64_1; BIDECIMAL_CALL2(bid64_div, p, tmp, x); if (*pfpsf & BID_INEXACT_EXCEPTION) { inexact = 1; } exact_y *= (-1); } else { p = x; } if((!inexact) && (((unsigned)exact_y) <= 398)) { // exact_y >= 0 here BID_UINT64 r = BID64_1; for (; exact_y; exact_y >>= 1) { if (exact_y & 1) { BIDECIMAL_CALL2(bid64_mul, r, r, p); } if (exact_y > 1) { BIDECIMAL_CALL2(bid64_mul, p, p, p); } } BID_RETURN(r); } } else { *pfpsf = save_flags; } } // Finally, we can assume all arguments are finite and nonzero. // So launch into the naive computation. But because we can be // more discriminating about integer status prior to conversion, // separate out the sign and correct it later. BIDECIMAL_CALL1 (bid64_to_binary80, xd, x); __bid_f80_fabs( xd, xd ); BIDECIMAL_CALL1 (bid64_to_binary80, yd, y); __bid_f80_log( ld, xd ); __bid_f80_sub( e_bin, xd, c_one.v); __bid_f80_fabs( abs_e_bin, e_bin); if ( __bid_f80_lt( abs_e_bin, c_half.v ) ) { BID_F80_TYPE tmp_e_bin; BID_UINT64 e; BID_UINT64 local1 = BID64_1; xa = x & BID64_ABS; BIDECIMAL_CALL2 (bid64_sub, e, xa, local1); BIDECIMAL_CALL1 (bid64_to_binary80, tmp_e_bin, e); __bid_f80_sub( tmp_e_bin, e_bin, tmp_e_bin ); __bid_f80_div( tmp_e_bin, tmp_e_bin, xd ); __bid_f80_sub( ld, ld, tmp_e_bin ); } __bid_f80_mul( rd, yd, ld ); __bid_f80_exp( rd, rd ); BIDECIMAL_CALL1 (binary80_to_bid64, res, rd); // If we got a NaN from all that, then canonize it // Also raise exception since it wasn't from the input. // Do likewise for negative^noninteger if (((res & NAN_MASK64) == NAN_MASK64) || (((x & SIGNMASK64) != 0) && !is_int)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN(BID64_NAN); } // Otherwise correct the sign. if (is_odd && ((x & SIGNMASK64) != 0)) res = res ^ SIGNMASK64; BID_RETURN(res); } LIBRARY/src/bid128_add.c0000644€­ Q01134020000031520515113665770013611 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #if DECIMAL_CALL_BY_REFERENCE void bid64dq_add (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64dq_add (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT128 x1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qq_add (&res, &x1, py _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid64qq_add (x1, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64qd_add (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64qd_add (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT128 y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qq_add (&res, px, &y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid64qq_add (x, y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64qq_add (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px, y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64qq_add (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 one = { {0x0000000000000001ull, 0x3040000000000000ull} }; BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_SWAP128 (one); #if DECIMAL_CALL_BY_REFERENCE bid64qqq_fma (&res, &one, &x, &y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid64qqq_fma (one, x, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128dd_add (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px, y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128dd_add (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 x1, y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_add (&res, &x1, &y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_add (x1, y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128dq_add (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128dq_add (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 x1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_add (&res, &x1, py _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_add (x1, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128qd_add (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128qd_add (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_add (&res, px, &y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_add (x, y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } // bid128_add stands for bid128qq_add /***************************************************************************** * BID64/BID128 sub ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid64dq_sub (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64dq_sub (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT128 x1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qq_sub (&res, &x1, py _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid64qq_sub (x1, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64qd_sub (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64qd_sub (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT128 y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64qq_sub (&res, px, &y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid64qq_sub (x, y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid64qq_sub (BID_UINT64 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px, y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT64 bid64qq_sub (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 one = { {0x0000000000000001ull, 0x3040000000000000ull} }; BID_UINT64 res = 0xbaddbaddbaddbaddull; BID_UINT64 y_sign; BID_SWAP128 (one); if ((y.w[BID_HIGH_128W] & MASK_NAN) != MASK_NAN) { // y is not NAN // change its sign y_sign = y.w[BID_HIGH_128W] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative if (y_sign) y.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0x7fffffffffffffffull; else y.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] | 0x8000000000000000ull; } #if DECIMAL_CALL_BY_REFERENCE bid64qqq_fma (&res, &one, &x, &y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid64qqq_fma (one, x, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128dd_sub (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px, y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128dd_sub (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 x1, y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_sub (&res, &x1, &y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_sub (x1, y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128dq_sub (BID_UINT128 * pres, BID_UINT64 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128dq_sub (BID_UINT64 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 x1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&x1, &x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_sub (&res, &x1, py _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else x1 = bid64_to_bid128 (x _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_sub (x1, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128qd_sub (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else BID_UINT128 bid128qd_sub (BID_UINT128 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT128 y1; #if DECIMAL_CALL_BY_REFERENCE bid64_to_bid128 (&y1, &y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); bid128_sub (&res, px, &y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else y1 = bid64_to_bid128 (y _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); res = bid128_sub (x, y1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid128_add (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px, y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else DFP_WRAPFN_DFP_DFP(128, bid128_add, 128, 128) BID_UINT128 bid128_add (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT64 x_sign, y_sign, tmp_sign; BID_UINT64 x_exp, y_exp, tmp_exp; // e1 = x_exp, e2 = y_exp BID_UINT64 C1_hi, C2_hi, tmp_signif_hi; BID_UINT64 C1_lo, C2_lo, tmp_signif_lo; // Note: C1.w[1], C1.w[0] represent C1_hi, C1_lo (all BID_UINT64) // Note: C2.w[1], C2.w[0] represent C2_hi, C2_lo (all BID_UINT64) BID_UINT64 tmp64, tmp64A, tmp64B; BID_UI64DOUBLE tmp1, tmp2; int x_nr_bits, y_nr_bits; int q1, q2, delta, scale, x1, ind, shift, tmp_inexact = 0; BID_UINT64 halfulp64; BID_UINT128 halfulp128; BID_UINT128 C1, C2; BID_UINT128 ten2m1; BID_UINT128 highf2star; // top 128 bits in f2*; low 128 bits in R256[1], R256[0] BID_UINT256 P256, Q256, R256; int is_inexact = 0, is_midpoint_lt_even = 0, is_midpoint_gt_even = 0; int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0; int second_pass = 0; BID_SWAP128 (x); BID_SWAP128 (y); x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative y_sign = y.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative // check for NaN or Infinity if (((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) || ((y.w[1] & MASK_SPECIAL) == MASK_SPECIAL)) { // x is special or y is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; // if y = SNaN signal invalid exception if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } } BID_SWAP128 (res); BID_RETURN (res); } else if ((y.w[1] & MASK_NAN) == MASK_NAN) { // y is NAN // check first for non-canonical NaN payload if (((y.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((y.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (y.w[0] > 0x38c15b09ffffffffull))) { y.w[1] = y.w[1] & 0xffffc00000000000ull; y.w[0] = 0x0ull; } if ((y.w[1] & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (y) res.w[1] = y.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = y.w[0]; } else { // y is QNaN // return y res.w[1] = y.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = y.w[0]; } BID_SWAP128 (res); BID_RETURN (res); } else { // neither x not y is NaN; at least one is infinity if ((x.w[1] & MASK_ANY_INF) == MASK_INF) { // x is infinity if ((y.w[1] & MASK_ANY_INF) == MASK_INF) { // y is infinity // if same sign, return either of them if ((x.w[1] & MASK_SIGN) == (y.w[1] & MASK_SIGN)) { res.w[1] = x_sign | MASK_INF; res.w[0] = 0x0ull; } else { // x and y are infinities of opposite signs // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return QNaN Indefinite res.w[1] = 0x7c00000000000000ull; res.w[0] = 0x0000000000000000ull; } } else { // y is 0 or finite // return x res.w[1] = x_sign | MASK_INF; res.w[0] = 0x0ull; } } else { // x is not NaN or infinity, so y must be infinity res.w[1] = y_sign | MASK_INF; res.w[0] = 0x0ull; } BID_SWAP128 (res); BID_RETURN (res); } } // unpack the arguments // unpack x C1_hi = x.w[1] & MASK_COEFF; C1_lo = x.w[0]; // test for non-canonical values: // - values whose encoding begins with x00, x01, or x10 and whose // coefficient is larger than 10^34 -1, or // - values whose encoding begins with x1100, x1101, x1110 (if NaNs // and infinitis were eliminated already this test is reduced to // checking for x10x) // x is not infinity; check for non-canonical values - treated as zero if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11; non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1_hi = 0; // significand high C1_lo = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1_hi > 0x0001ed09bead87c0ull || (C1_hi == 0x0001ed09bead87c0ull && C1_lo > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1_hi = 0; C1_lo = 0; } else { // canonical ; } } // unpack y C2_hi = y.w[1] & MASK_COEFF; C2_lo = y.w[0]; // y is not infinity; check for non-canonical values - treated as zero if ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11; non-canonical y_exp = (y.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C2_hi = 0; // significand high C2_lo = 0; // significand low } else { // G0_G1 != 11 y_exp = y.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C2_hi > 0x0001ed09bead87c0ull || (C2_hi == 0x0001ed09bead87c0ull && C2_lo > 0x378d8e63ffffffffull)) { // y is non-canonical if coefficient is larger than 10^34 -1 C2_hi = 0; C2_lo = 0; } else { // canonical ; } } if ((C1_hi == 0x0ull) && (C1_lo == 0x0ull)) { // x is 0 and y is not special // if y is 0 return 0 with the smaller exponent if ((C2_hi == 0x0ull) && (C2_lo == 0x0ull)) { if (x_exp < y_exp) res.w[1] = x_exp; else res.w[1] = y_exp; if (x_sign && y_sign) res.w[1] = res.w[1] | x_sign; // both negative else if (rnd_mode == BID_ROUNDING_DOWN && x_sign != y_sign) res.w[1] = res.w[1] | 0x8000000000000000ull; // -0 // else; // res = +0 res.w[0] = 0; } else { // for 0 + y return y, with the preferred exponent if (y_exp <= x_exp) { res.w[1] = y.w[1]; res.w[0] = y.w[0]; } else { // if y_exp > x_exp // return (C2 * 10^scale) * 10^(y_exp - scale) // where scale = min (P34-q2, y_exp-x_exp) // determine q2 = nr. of decimal digits in y // determine first the nr. of bits in y (y_nr_bits) if (C2_hi == 0) { // y_bits is the nr. of bits in C2_lo if (C2_lo >= 0x0020000000000000ull) { // y >= 2^53 // split the 64-bit value in two 32-bit halves to avoid // rounding errors tmp2.d = (double) (C2_lo >> 32); // exact conversion y_nr_bits = 32 + ((((unsigned int) (tmp2.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if y < 2^53 tmp2.d = (double) C2_lo; // exact conversion y_nr_bits = ((((unsigned int) (tmp2.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C2_hi != 0 => nr. bits = 64 + nr_bits (C2_hi) tmp2.d = (double) C2_hi; // exact conversion y_nr_bits = 64 + ((((unsigned int) (tmp2.ui64 >> 52)) & 0x7ff) - 0x3ff); } q2 = bid_nr_digits[y_nr_bits].digits; if (q2 == 0) { q2 = bid_nr_digits[y_nr_bits].digits1; if (C2_hi > bid_nr_digits[y_nr_bits].threshold_hi || (C2_hi == bid_nr_digits[y_nr_bits].threshold_hi && C2_lo >= bid_nr_digits[y_nr_bits].threshold_lo)) q2++; } // return (C2 * 10^scale) * 10^(y_exp - scale) // where scale = min (P34-q2, y_exp-x_exp) scale = P34 - q2; ind = (y_exp - x_exp) >> 49; if (ind < scale) scale = ind; if (scale == 0) { res.w[1] = y.w[1]; res.w[0] = y.w[0]; } else if (q2 <= 19) { // y fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 C2_lo * bid_ten2k64[scale] __mul_64x64_to_128MACH (res, C2_lo, bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 C2_lo * bid_ten2k128[scale - 20] __mul_128x64_to_128 (res, C2_lo, bid_ten2k128[scale - 20]); } } else { // y fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * C2 C2.w[1] = C2_hi; C2.w[0] = C2_lo; __mul_128x64_to_128 (res, bid_ten2k64[scale], C2); } // subtract scale from the exponent y_exp = y_exp - ((BID_UINT64) scale << 49); res.w[1] = res.w[1] | y_sign | y_exp; } } BID_SWAP128 (res); BID_RETURN (res); } else if ((C2_hi == 0x0ull) && (C2_lo == 0x0ull)) { // y is 0 and x is not special, and not zero // for x + 0 return x, with the preferred exponent if (x_exp <= y_exp) { res.w[1] = x.w[1]; res.w[0] = x.w[0]; } else { // if x_exp > y_exp // return (C1 * 10^scale) * 10^(x_exp - scale) // where scale = min (P34-q1, x_exp-y_exp) // determine q1 = nr. of decimal digits in x // determine first the nr. of bits in x if (C1_hi == 0) { // x_bits is the nr. of bits in C1_lo if (C1_lo >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid // rounding errors tmp1.d = (double) (C1_lo >> 32); // exact conversion x_nr_bits = 32 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1_lo; // exact conversion x_nr_bits = ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1_hi != 0 => nr. bits = 64 + nr_bits (C1_hi) tmp1.d = (double) C1_hi; // exact conversion x_nr_bits = 64 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q1 = bid_nr_digits[x_nr_bits].digits; if (q1 == 0) { q1 = bid_nr_digits[x_nr_bits].digits1; if (C1_hi > bid_nr_digits[x_nr_bits].threshold_hi || (C1_hi == bid_nr_digits[x_nr_bits].threshold_hi && C1_lo >= bid_nr_digits[x_nr_bits].threshold_lo)) q1++; } // return (C1 * 10^scale) * 10^(x_exp - scale) // where scale = min (P34-q1, x_exp-y_exp) scale = P34 - q1; ind = (x_exp - y_exp) >> 49; if (ind < scale) scale = ind; if (scale == 0) { res.w[1] = x.w[1]; res.w[0] = x.w[0]; } else if (q1 <= 19) { // x fits in 64 bits if (scale <= 19) { // 10^scale fits in 64 bits // 64 x 64 C1_lo * bid_ten2k64[scale] __mul_64x64_to_128MACH (res, C1_lo, bid_ten2k64[scale]); } else { // 10^scale fits in 128 bits // 64 x 128 C1_lo * bid_ten2k128[scale - 20] __mul_128x64_to_128 (res, C1_lo, bid_ten2k128[scale - 20]); } } else { // x fits in 128 bits, but 10^scale must fit in 64 bits // 64 x 128 bid_ten2k64[scale] * C1 C1.w[1] = C1_hi; C1.w[0] = C1_lo; __mul_128x64_to_128 (res, bid_ten2k64[scale], C1); } // subtract scale from the exponent x_exp = x_exp - ((BID_UINT64) scale << 49); res.w[1] = res.w[1] | x_sign | x_exp; } BID_SWAP128 (res); BID_RETURN (res); } else { // x and y are not canonical, not special, and are not zero // note that the result may still be zero, and then it has to have the // preferred exponent if (x_exp < y_exp) { // if exp_x < exp_y then swap x and y tmp_sign = x_sign; tmp_exp = x_exp; tmp_signif_hi = C1_hi; tmp_signif_lo = C1_lo; x_sign = y_sign; x_exp = y_exp; C1_hi = C2_hi; C1_lo = C2_lo; y_sign = tmp_sign; y_exp = tmp_exp; C2_hi = tmp_signif_hi; C2_lo = tmp_signif_lo; } // q1 = nr. of decimal digits in x // determine first the nr. of bits in x if (C1_hi == 0) { // x_bits is the nr. of bits in C1_lo if (C1_lo >= 0x0020000000000000ull) { // x >= 2^53 //split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1_lo >> 32); // exact conversion x_nr_bits = 32 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1_lo; // exact conversion x_nr_bits = ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1_hi != 0 => nr. bits = 64 + nr_bits (C1_hi) tmp1.d = (double) C1_hi; // exact conversion x_nr_bits = 64 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q1 = bid_nr_digits[x_nr_bits].digits; if (q1 == 0) { q1 = bid_nr_digits[x_nr_bits].digits1; if (C1_hi > bid_nr_digits[x_nr_bits].threshold_hi || (C1_hi == bid_nr_digits[x_nr_bits].threshold_hi && C1_lo >= bid_nr_digits[x_nr_bits].threshold_lo)) q1++; } // q2 = nr. of decimal digits in y // determine first the nr. of bits in y (y_nr_bits) if (C2_hi == 0) { // y_bits is the nr. of bits in C2_lo if (C2_lo >= 0x0020000000000000ull) { // y >= 2^53 //split the 64-bit value in two 32-bit halves to avoid rounding errors tmp2.d = (double) (C2_lo >> 32); // exact conversion y_nr_bits = 32 + ((((unsigned int) (tmp2.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if y < 2^53 tmp2.d = (double) C2_lo; // exact conversion y_nr_bits = ((((unsigned int) (tmp2.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C2_hi != 0 => nr. bits = 64 + nr_bits (C2_hi) tmp2.d = (double) C2_hi; // exact conversion y_nr_bits = 64 + ((((unsigned int) (tmp2.ui64 >> 52)) & 0x7ff) - 0x3ff); } q2 = bid_nr_digits[y_nr_bits].digits; if (q2 == 0) { q2 = bid_nr_digits[y_nr_bits].digits1; if (C2_hi > bid_nr_digits[y_nr_bits].threshold_hi || (C2_hi == bid_nr_digits[y_nr_bits].threshold_hi && C2_lo >= bid_nr_digits[y_nr_bits].threshold_lo)) q2++; } delta = q1 + (int) (x_exp >> 49) - q2 - (int) (y_exp >> 49); if (delta >= P34) { // round the result directly because 0 < C2 < ulp (C1 * 10^(x_exp-e2)) // n = C1 * 10^e1 or n = C1 +/- 10^(q1-P34)) * 10^e1 // the result is inexact; the preferred exponent is the least possible if (delta >= P34 + 1) { // for RN the result is the operand with the larger magnitude, // possibly scaled up by 10^(P34-q1) // an overflow cannot occur in this case (rounding to nearest) if (q1 < P34) { // scale C1 up by 10^(P34-q1) // Note: because delta >= P34+1 it is certain that // x_exp - ((BID_UINT64)scale << 49) will stay above e_min scale = P34 - q1; if (q1 <= 19) { // C1 fits in 64 bits // 1 <= q1 <= 19 => 15 <= scale <= 33 if (scale <= 19) { // 10^scale fits in 64 bits __mul_64x64_to_128MACH (C1, bid_ten2k64[scale], C1_lo); } else { // if 20 <= scale <= 33 // C1 * 10^scale = (C1 * 10^(scale-19)) * 10^19 where // (C1 * 10^(scale-19)) fits in 64 bits C1_lo = C1_lo * bid_ten2k64[scale - 19]; __mul_64x64_to_128MACH (C1, bid_ten2k64[19], C1_lo); } } else { //if 20 <= q1 <= 33=P34-1 then C1 fits only in 128 bits // => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits C1.w[1] = C1_hi; C1.w[0] = C1_lo; // C1 = bid_ten2k64[P34 - q1] * C1 __mul_128x64_to_128 (C1, bid_ten2k64[P34 - q1], C1); } x_exp = x_exp - ((BID_UINT64) scale << 49); C1_hi = C1.w[1]; C1_lo = C1.w[0]; } // some special cases arise: if delta = P34 + 1 and C1 = 10^(P34-1) // (after scaling) and x_sign != y_sign and C2 > 5*10^(q2-1) => // subtract 1 ulp // Note: do this only for rounding to nearest; for other rounding // modes the correction will be applied next if ((rnd_mode == BID_ROUNDING_TO_NEAREST || rnd_mode == BID_ROUNDING_TIES_AWAY) && delta == (P34 + 1) && C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b0a00000000ull && x_sign != y_sign && ((q2 <= 19 && C2_lo > bid_midpoint64[q2 - 1]) || (q2 >= 20 && (C2_hi > bid_midpoint128 [q2 - 20].w[1] || (C2_hi == bid_midpoint128 [q2 - 20].w[1] && C2_lo > bid_midpoint128 [q2 - 20].w[0]))))) { // C1 = 10^34 - 1 and decrement x_exp by 1 (no underflow possible) C1_hi = 0x0001ed09bead87c0ull; C1_lo = 0x378d8e63ffffffffull; x_exp = x_exp - EXP_P1; } if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((rnd_mode == BID_ROUNDING_DOWN && x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && !x_sign && !y_sign)) { // add 1 ulp and then check for overflow C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 x_exp = x_exp + EXP_P1; if (x_exp == EXP_MAX_P1) { // overflow C1_hi = 0x7800000000000000ull; // +inf C1_lo = 0x0ull; x_exp = 0; // x_sign is preserved // set overflow flag (the inexact flag was set too) *pfpsf |= BID_OVERFLOW_EXCEPTION; } } } else if ((rnd_mode == BID_ROUNDING_DOWN && !x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && x_sign && !y_sign) || (rnd_mode == BID_ROUNDING_TO_ZERO && x_sign != y_sign)) { // subtract 1 ulp from C1 // Note: because delta >= P34 + 1 the result cannot be zero C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi = C1_hi - 1; // if the coefficient is 10^33 - 1 then make it 10^34 - 1 and // decrease the exponent by 1 (because delta >= P34 + 1 the // exponent will not become less than e_min) // 10^33 - 1 = 0x0000314dc6448d9338c15b09ffffffff // 10^34 - 1 = 0x0001ed09bead87c0378d8e63ffffffff if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // make C1 = 10^34 - 1 C1_hi = 0x0001ed09bead87c0ull; C1_lo = 0x378d8e63ffffffffull; x_exp = x_exp - EXP_P1; } } else { ; // the result is already correct } } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // assemble the result res.w[1] = x_sign | x_exp | C1_hi; res.w[0] = C1_lo; } else { // delta = P34 // in most cases, the smaller operand may be < or = or > 1/2 ulp of the // larger operand // however, the case C1 = 10^(q1-1) and x_sign != y_sign is special due // to accuracy loss after subtraction, and will be treated separately if (x_sign == y_sign || (q1 <= 20 && (C1_hi != 0 || C1_lo != bid_ten2k64[q1 - 1])) || (q1 >= 21 && (C1_hi != bid_ten2k128[q1 - 21].w[1] || C1_lo != bid_ten2k128[q1 - 21].w[0]))) { // if x_sign == y_sign or C1 != 10^(q1-1) // compare C2 with 1/2 ulp = 5 * 10^(q2-1), the latter read from table // Note: cases q1<=19 and q1>=20 can be coalesced at some latency cost if (q2 <= 19) { // C2 and 5*10^(q2-1) both fit in 64 bits halfulp64 = bid_midpoint64[q2 - 1]; // 5 * 10^(q2-1) if (C2_lo < halfulp64) { // n2 < 1/2 ulp (n1) // for RN the result is the operand with the larger magnitude, // possibly scaled up by 10^(P34-q1) // an overflow cannot occur in this case (rounding to nearest) if (q1 < P34) { // scale C1 up by 10^(P34-q1) // Note: because delta = P34 it is certain that // x_exp - ((BID_UINT64)scale << 49) will stay above e_min scale = P34 - q1; if (q1 <= 19) { // C1 fits in 64 bits // 1 <= q1 <= 19 => 15 <= scale <= 33 if (scale <= 19) { // 10^scale fits in 64 bits __mul_64x64_to_128MACH (C1, bid_ten2k64[scale], C1_lo); } else { // if 20 <= scale <= 33 // C1 * 10^scale = (C1 * 10^(scale-19)) * 10^19 where // (C1 * 10^(scale-19)) fits in 64 bits C1_lo = C1_lo * bid_ten2k64[scale - 19]; __mul_64x64_to_128MACH (C1, bid_ten2k64[19], C1_lo); } } else { //if 20 <= q1 <= 33=P34-1 then C1 fits only in 128 bits // => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits C1.w[1] = C1_hi; C1.w[0] = C1_lo; // C1 = bid_ten2k64[P34 - q1] * C1 __mul_128x64_to_128 (C1, bid_ten2k64[P34 - q1], C1); } x_exp = x_exp - ((BID_UINT64) scale << 49); C1_hi = C1.w[1]; C1_lo = C1.w[0]; } if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((rnd_mode == BID_ROUNDING_DOWN && x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && !x_sign && !y_sign)) { // add 1 ulp and then check for overflow C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 x_exp = x_exp + EXP_P1; if (x_exp == EXP_MAX_P1) { // overflow C1_hi = 0x7800000000000000ull; // +inf C1_lo = 0x0ull; x_exp = 0; // x_sign is preserved // set overflow flag (the inexact flag was set too) *pfpsf |= BID_OVERFLOW_EXCEPTION; } } } else if ((rnd_mode == BID_ROUNDING_DOWN && !x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && x_sign && !y_sign) || (rnd_mode == BID_ROUNDING_TO_ZERO && x_sign != y_sign)) { // subtract 1 ulp from C1 // Note: because delta >= P34 + 1 the result cannot be zero C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi = C1_hi - 1; // if the coefficient is 10^33-1 then make it 10^34-1 and // decrease the exponent by 1 (because delta >= P34 + 1 the // exponent will not become less than e_min) // 10^33 - 1 = 0x0000314dc6448d9338c15b09ffffffff // 10^34 - 1 = 0x0001ed09bead87c0378d8e63ffffffff if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // make C1 = 10^34 - 1 C1_hi = 0x0001ed09bead87c0ull; C1_lo = 0x378d8e63ffffffffull; x_exp = x_exp - EXP_P1; } } else { ; // the result is already correct } } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // assemble the result res.w[1] = x_sign | x_exp | C1_hi; res.w[0] = C1_lo; } else if ((C2_lo == halfulp64) && (q1 < P34 || ((C1_lo & 0x1) == 0))) { // n2 = 1/2 ulp (n1) and q1 < P34 or C1 is even // the result is the operand with the larger magnitude, // possibly scaled up by 10^(P34-q1) // an overflow cannot occur in this case (rounding to nearest) if (q1 < P34) { // scale C1 up by 10^(P34-q1) // Note: because delta = P34 it is certain that // x_exp - ((BID_UINT64)scale << 49) will stay above e_min scale = P34 - q1; if (q1 <= 19) { // C1 fits in 64 bits // 1 <= q1 <= 19 => 15 <= scale <= 33 if (scale <= 19) { // 10^scale fits in 64 bits __mul_64x64_to_128MACH (C1, bid_ten2k64[scale], C1_lo); } else { // if 20 <= scale <= 33 // C1 * 10^scale = (C1 * 10^(scale-19)) * 10^19 where // (C1 * 10^(scale-19)) fits in 64 bits C1_lo = C1_lo * bid_ten2k64[scale - 19]; __mul_64x64_to_128MACH (C1, bid_ten2k64[19], C1_lo); } } else { //if 20 <= q1 <= 33=P34-1 then C1 fits only in 128 bits // => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits C1.w[1] = C1_hi; C1.w[0] = C1_lo; // C1 = bid_ten2k64[P34 - q1] * C1 __mul_128x64_to_128 (C1, bid_ten2k64[P34 - q1], C1); } x_exp = x_exp - ((BID_UINT64) scale << 49); C1_hi = C1.w[1]; C1_lo = C1.w[0]; } if ((rnd_mode == BID_ROUNDING_TO_NEAREST && x_sign == y_sign && (C1_lo & 0x01)) || (rnd_mode == BID_ROUNDING_TIES_AWAY && x_sign == y_sign) || (rnd_mode == BID_ROUNDING_UP && !x_sign && !y_sign) || (rnd_mode == BID_ROUNDING_DOWN && x_sign && y_sign)) { // add 1 ulp and then check for overflow C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 x_exp = x_exp + EXP_P1; if (x_exp == EXP_MAX_P1) { // overflow C1_hi = 0x7800000000000000ull; // +inf C1_lo = 0x0ull; x_exp = 0; // x_sign is preserved // set overflow flag (the inexact flag was set too) *pfpsf |= BID_OVERFLOW_EXCEPTION; } } } else if ((rnd_mode == BID_ROUNDING_TO_NEAREST && x_sign != y_sign && (C1_lo & 0x01)) || (rnd_mode == BID_ROUNDING_DOWN && !x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && x_sign && !y_sign) || (rnd_mode == BID_ROUNDING_TO_ZERO && x_sign != y_sign)) { // subtract 1 ulp from C1 // Note: because delta >= P34 + 1 the result cannot be zero C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi = C1_hi - 1; // if the coefficient is 10^33 - 1 then make it 10^34 - 1 // and decrease the exponent by 1 (because delta >= P34 + 1 // the exponent will not become less than e_min) // 10^33 - 1 = 0x0000314dc6448d9338c15b09ffffffff // 10^34 - 1 = 0x0001ed09bead87c0378d8e63ffffffff if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // make C1 = 10^34 - 1 C1_hi = 0x0001ed09bead87c0ull; C1_lo = 0x378d8e63ffffffffull; x_exp = x_exp - EXP_P1; } } else { ; // the result is already correct } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // assemble the result res.w[1] = x_sign | x_exp | C1_hi; res.w[0] = C1_lo; } else { // if C2_lo > halfulp64 || // (C2_lo == halfulp64 && q1 == P34 && ((C1_lo & 0x1) == 1)), i.e. // 1/2 ulp(n1) < n2 < 1 ulp(n1) or n2 = 1/2 ulp(n1) and C1 odd // res = x+1 ulp if n1*n2 > 0 and res = x-1 ulp if n1*n2 < 0 if (q1 < P34) { // then 1 ulp = 10^(e1+q1-P34) < 10^e1 // Note: if (q1 == P34) then 1 ulp = 10^(e1+q1-P34) = 10^e1 // because q1 < P34 we must first replace C1 by // C1 * 10^(P34-q1), and must decrease the exponent by // (P34-q1) (it will still be at least e_min) scale = P34 - q1; if (q1 <= 19) { // C1 fits in 64 bits // 1 <= q1 <= 19 => 15 <= scale <= 33 if (scale <= 19) { // 10^scale fits in 64 bits __mul_64x64_to_128MACH (C1, bid_ten2k64[scale], C1_lo); } else { // if 20 <= scale <= 33 // C1 * 10^scale = (C1 * 10^(scale-19)) * 10^19 where // (C1 * 10^(scale-19)) fits in 64 bits C1_lo = C1_lo * bid_ten2k64[scale - 19]; __mul_64x64_to_128MACH (C1, bid_ten2k64[19], C1_lo); } } else { //if 20 <= q1 <= 33=P34-1 then C1 fits only in 128 bits // => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits C1.w[1] = C1_hi; C1.w[0] = C1_lo; // C1 = bid_ten2k64[P34 - q1] * C1 __mul_128x64_to_128 (C1, bid_ten2k64[P34 - q1], C1); } x_exp = x_exp - ((BID_UINT64) scale << 49); C1_hi = C1.w[1]; C1_lo = C1.w[0]; // check for rounding overflow if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 x_exp = x_exp + EXP_P1; } } if ((rnd_mode == BID_ROUNDING_TO_NEAREST && x_sign != y_sign) || (rnd_mode == BID_ROUNDING_TIES_AWAY && x_sign != y_sign && C2_lo != halfulp64) || (rnd_mode == BID_ROUNDING_DOWN && !x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && x_sign && !y_sign) || (rnd_mode == BID_ROUNDING_TO_ZERO && x_sign != y_sign)) { // the result is x - 1 // for RN n1 * n2 < 0; underflow not possible C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi--; // check if we crossed into the lower decade if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // 10^33 - 1 C1_hi = 0x0001ed09bead87c0ull; // 10^34 - 1 C1_lo = 0x378d8e63ffffffffull; x_exp = x_exp - EXP_P1; // no underflow, because n1 >> n2 } } else if ((rnd_mode == BID_ROUNDING_TO_NEAREST && x_sign == y_sign) || (rnd_mode == BID_ROUNDING_TIES_AWAY && x_sign == y_sign) || (rnd_mode == BID_ROUNDING_DOWN && x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && !x_sign && !y_sign)) { // the result is x + 1 // for RN x_sign = y_sign, i.e. n1*n2 > 0 C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 x_exp = x_exp + EXP_P1; if (x_exp == EXP_MAX_P1) { // overflow C1_hi = 0x7800000000000000ull; // +inf C1_lo = 0x0ull; x_exp = 0; // x_sign is preserved // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; } } } else { ; // the result is x } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // assemble the result res.w[1] = x_sign | x_exp | C1_hi; res.w[0] = C1_lo; } } else { // if q2 >= 20 then 5*10^(q2-1) and C2 (the latter in // most cases) fit only in more than 64 bits halfulp128 = bid_midpoint128[q2 - 20]; // 5 * 10^(q2-1) if ((C2_hi < halfulp128.w[1]) || (C2_hi == halfulp128.w[1] && C2_lo < halfulp128.w[0])) { // n2 < 1/2 ulp (n1) // the result is the operand with the larger magnitude, // possibly scaled up by 10^(P34-q1) // an overflow cannot occur in this case (rounding to nearest) if (q1 < P34) { // scale C1 up by 10^(P34-q1) // Note: because delta = P34 it is certain that // x_exp - ((BID_UINT64)scale << 49) will stay above e_min scale = P34 - q1; if (q1 <= 19) { // C1 fits in 64 bits // 1 <= q1 <= 19 => 15 <= scale <= 33 if (scale <= 19) { // 10^scale fits in 64 bits __mul_64x64_to_128MACH (C1, bid_ten2k64[scale], C1_lo); } else { // if 20 <= scale <= 33 // C1 * 10^scale = (C1 * 10^(scale-19)) * 10^19 where // (C1 * 10^(scale-19)) fits in 64 bits C1_lo = C1_lo * bid_ten2k64[scale - 19]; __mul_64x64_to_128MACH (C1, bid_ten2k64[19], C1_lo); } } else { //if 20 <= q1 <= 33=P34-1 then C1 fits only in 128 bits // => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits C1.w[1] = C1_hi; C1.w[0] = C1_lo; // C1 = bid_ten2k64[P34 - q1] * C1 __mul_128x64_to_128 (C1, bid_ten2k64[P34 - q1], C1); } C1_hi = C1.w[1]; C1_lo = C1.w[0]; x_exp = x_exp - ((BID_UINT64) scale << 49); } if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((rnd_mode == BID_ROUNDING_DOWN && x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && !x_sign && !y_sign)) { // add 1 ulp and then check for overflow C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 x_exp = x_exp + EXP_P1; if (x_exp == EXP_MAX_P1) { // overflow C1_hi = 0x7800000000000000ull; // +inf C1_lo = 0x0ull; x_exp = 0; // x_sign is preserved // set overflow flag (the inexact flag was set too) *pfpsf |= BID_OVERFLOW_EXCEPTION; } } } else if ((rnd_mode == BID_ROUNDING_DOWN && !x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && x_sign && !y_sign) || (rnd_mode == BID_ROUNDING_TO_ZERO && x_sign != y_sign)) { // subtract 1 ulp from C1 // Note: because delta >= P34 + 1 the result cannot be zero C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi = C1_hi - 1; // if the coefficient is 10^33-1 then make it 10^34-1 and // decrease the exponent by 1 (because delta >= P34 + 1 the // exponent will not become less than e_min) // 10^33 - 1 = 0x0000314dc6448d9338c15b09ffffffff // 10^34 - 1 = 0x0001ed09bead87c0378d8e63ffffffff if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // make C1 = 10^34 - 1 C1_hi = 0x0001ed09bead87c0ull; C1_lo = 0x378d8e63ffffffffull; x_exp = x_exp - EXP_P1; } } else { ; // the result is already correct } } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // assemble the result res.w[1] = x_sign | x_exp | C1_hi; res.w[0] = C1_lo; } else if ((C2_hi == halfulp128.w[1] && C2_lo == halfulp128.w[0]) && (q1 < P34 || ((C1_lo & 0x1) == 0))) { // set the inexact flag // midpoint & lsb in C1 is 0 // n2 = 1/2 ulp (n1) and C1 is even // the result is the operand with the larger magnitude, // possibly scaled up by 10^(P34-q1) // an overflow cannot occur in this case (rounding to nearest) if (q1 < P34) { // scale C1 up by 10^(P34-q1) // Note: because delta = P34 it is certain that // x_exp - ((BID_UINT64)scale << 49) will stay above e_min scale = P34 - q1; if (q1 <= 19) { // C1 fits in 64 bits // 1 <= q1 <= 19 => 15 <= scale <= 33 if (scale <= 19) { // 10^scale fits in 64 bits __mul_64x64_to_128MACH (C1, bid_ten2k64[scale], C1_lo); } else { // if 20 <= scale <= 33 // C1 * 10^scale = (C1 * 10^(scale-19)) * 10^19 where // (C1 * 10^(scale-19)) fits in 64 bits C1_lo = C1_lo * bid_ten2k64[scale - 19]; __mul_64x64_to_128MACH (C1, bid_ten2k64[19], C1_lo); } } else { //if 20 <= q1 <= 33=P34-1 then C1 fits only in 128 bits // => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits C1.w[1] = C1_hi; C1.w[0] = C1_lo; // C1 = bid_ten2k64[P34 - q1] * C1 __mul_128x64_to_128 (C1, bid_ten2k64[P34 - q1], C1); } x_exp = x_exp - ((BID_UINT64) scale << 49); C1_hi = C1.w[1]; C1_lo = C1.w[0]; } if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((rnd_mode == BID_ROUNDING_TIES_AWAY && x_sign == y_sign) || (rnd_mode == BID_ROUNDING_UP && !x_sign && !y_sign) || (rnd_mode == BID_ROUNDING_DOWN && x_sign && y_sign)) { // add 1 ulp and then check for overflow C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 x_exp = x_exp + EXP_P1; if (x_exp == EXP_MAX_P1) { // overflow C1_hi = 0x7800000000000000ull; // +inf C1_lo = 0x0ull; x_exp = 0; // x_sign is preserved // set overflow flag (the inexact flag was set too) *pfpsf |= BID_OVERFLOW_EXCEPTION; } } } else if ((rnd_mode == BID_ROUNDING_DOWN && !x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && x_sign && !y_sign) || (rnd_mode == BID_ROUNDING_TO_ZERO && x_sign != y_sign)) { // subtract 1 ulp from C1 // Note: because delta >= P34 + 1 the result cannot be zero C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi = C1_hi - 1; // if the coefficient is 10^33 - 1 then make it 10^34 - 1 // and decrease the exponent by 1 (because delta >= P34 + 1 // the exponent will not become less than e_min) // 10^33 - 1 = 0x0000314dc6448d9338c15b09ffffffff // 10^34 - 1 = 0x0001ed09bead87c0378d8e63ffffffff if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // make C1 = 10^34 - 1 C1_hi = 0x0001ed09bead87c0ull; C1_lo = 0x378d8e63ffffffffull; x_exp = x_exp - EXP_P1; } } else { ; // the result is already correct } } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // assemble the result res.w[1] = x_sign | x_exp | C1_hi; res.w[0] = C1_lo; } else { // if C2 > halfulp128 || // (C2 == halfulp128 && q1 == P34 && ((C1 & 0x1) == 1)), i.e. // 1/2 ulp(n1) < n2 < 1 ulp(n1) or n2 = 1/2 ulp(n1) and C1 odd // res = x+1 ulp if n1*n2 > 0 and res = x-1 ulp if n1*n2 < 0 if (q1 < P34) { // then 1 ulp = 10^(e1+q1-P34) < 10^e1 // Note: if (q1 == P34) then 1 ulp = 10^(e1+q1-P34) = 10^e1 // because q1 < P34 we must first replace C1 by C1*10^(P34-q1), // and must decrease the exponent by (P34-q1) (it will still be // at least e_min) scale = P34 - q1; if (q1 <= 19) { // C1 fits in 64 bits // 1 <= q1 <= 19 => 15 <= scale <= 33 if (scale <= 19) { // 10^scale fits in 64 bits __mul_64x64_to_128MACH (C1, bid_ten2k64[scale], C1_lo); } else { // if 20 <= scale <= 33 // C1 * 10^scale = (C1 * 10^(scale-19)) * 10^19 where // (C1 * 10^(scale-19)) fits in 64 bits C1_lo = C1_lo * bid_ten2k64[scale - 19]; __mul_64x64_to_128MACH (C1, bid_ten2k64[19], C1_lo); } } else { //if 20 <= q1 <= 33=P34-1 then C1 fits only in 128 bits // => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits C1.w[1] = C1_hi; C1.w[0] = C1_lo; // C1 = bid_ten2k64[P34 - q1] * C1 __mul_128x64_to_128 (C1, bid_ten2k64[P34 - q1], C1); } C1_hi = C1.w[1]; C1_lo = C1.w[0]; x_exp = x_exp - ((BID_UINT64) scale << 49); } if ((rnd_mode == BID_ROUNDING_TO_NEAREST && x_sign != y_sign) || (rnd_mode == BID_ROUNDING_TIES_AWAY && x_sign != y_sign && (C2_hi != halfulp128.w[1] || C2_lo != halfulp128.w[0])) || (rnd_mode == BID_ROUNDING_DOWN && !x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && x_sign && !y_sign) || (rnd_mode == BID_ROUNDING_TO_ZERO && x_sign != y_sign)) { // the result is x - 1 // for RN n1 * n2 < 0; underflow not possible C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi--; // check if we crossed into the lower decade if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // 10^33 - 1 C1_hi = 0x0001ed09bead87c0ull; // 10^34 - 1 C1_lo = 0x378d8e63ffffffffull; x_exp = x_exp - EXP_P1; // no underflow, because n1 >> n2 } } else if ((rnd_mode == BID_ROUNDING_TO_NEAREST && x_sign == y_sign) || (rnd_mode == BID_ROUNDING_TIES_AWAY && x_sign == y_sign) || (rnd_mode == BID_ROUNDING_DOWN && x_sign && y_sign) || (rnd_mode == BID_ROUNDING_UP && !x_sign && !y_sign)) { // the result is x + 1 // for RN x_sign = y_sign, i.e. n1*n2 > 0 C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 x_exp = x_exp + EXP_P1; if (x_exp == EXP_MAX_P1) { // overflow C1_hi = 0x7800000000000000ull; // +inf C1_lo = 0x0ull; x_exp = 0; // x_sign is preserved // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; } } } else { ; // the result is x } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // assemble the result res.w[1] = x_sign | x_exp | C1_hi; res.w[0] = C1_lo; } } // end q1 >= 20 // end case where C1 != 10^(q1-1) } else { // C1 = 10^(q1-1) and x_sign != y_sign // instead of C' = (C1 * 10^(e1-e2) + C2)rnd,P34 // calculate C' = C1 * 10^(e1-e2-x1) + (C2 * 10^(-x1))rnd,P34 // where x1 = q2 - 1, 0 <= x1 <= P34 - 1 // Because C1 = 10^(q1-1) and x_sign != y_sign, C' will have P34 // digits and n = C' * 10^(e2+x1) // If the result has P34+1 digits, redo the steps above with x1+1 // If the result has P34-1 digits or less, redo the steps above with // x1-1 but only if initially x1 >= 1 // NOTE: these two steps can be improved, e.g we could guess if // P34+1 or P34-1 digits will be obtained by adding/subtracting // just the top 64 bits of the two operands // The result cannot be zero, and it cannot overflow x1 = q2 - 1; // 0 <= x1 <= P34-1 // Calculate C1 * 10^(e1-e2-x1) where 1 <= e1-e2-x1 <= P34 // scale = (int)(e1 >> 49) - (int)(e2 >> 49) - x1; 0 <= scale <= P34-1 scale = P34 - q1 + 1; // scale=e1-e2-x1 = P34+1-q1; 1<=scale<=P34 // either C1 or 10^(e1-e2-x1) may not fit is 64 bits, // but their product fits with certainty in 128 bits if (scale >= 20) { //10^(e1-e2-x1) doesn't fit in 64 bits, but C1 does __mul_128x64_to_128 (C1, C1_lo, bid_ten2k128[scale - 20]); } else { // if (scale >= 1 // if 1 <= scale <= 19 then 10^(e1-e2-x1) fits in 64 bits if (q1 <= 19) { // C1 fits in 64 bits __mul_64x64_to_128MACH (C1, C1_lo, bid_ten2k64[scale]); } else { // q1 >= 20 C1.w[1] = C1_hi; C1.w[0] = C1_lo; __mul_128x64_to_128 (C1, bid_ten2k64[scale], C1); } } tmp64 = C1.w[0]; // C1.w[1], C1.w[0] contains C1 * 10^(e1-e2-x1) // now round C2 to q2-x1 = 1 decimal digit // C2' = C2 + 1/2 * 10^x1 = C2 + 5 * 10^(x1-1) ind = x1 - 1; // -1 <= ind <= P34 - 2 if (ind >= 0) { // if (x1 >= 1) C2.w[0] = C2_lo; C2.w[1] = C2_hi; if (ind <= 18) { C2.w[0] = C2.w[0] + bid_midpoint64[ind]; if (C2.w[0] < C2_lo) C2.w[1]++; } else { // 19 <= ind <= 32 C2.w[0] = C2.w[0] + bid_midpoint128[ind - 19].w[0]; C2.w[1] = C2.w[1] + bid_midpoint128[ind - 19].w[1]; if (C2.w[0] < C2_lo) C2.w[1]++; } // the approximation of 10^(-x1) was rounded up to 118 bits __mul_128x128_to_256 (R256, C2, bid_ten2mk128[ind]); // R256 = C2*, f2* // calculate C2* and f2* // C2* is actually floor(C2*) in this case // C2* and f2* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // the top Ex bits of 10^(-x1) are T* = bid_ten2mk128trunc[ind], e.g. // if x1=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f2* < 10^(-x1)) then // if floor(C1+C2*) is even then C2* = floor(C2*) - logical right // shift; C2* has p decimal digits, correct by Prop. 1) // else if floor(C1+C2*) is odd C2* = floor(C2*)-1 (logical right // shift; C2* has p decimal digits, correct by Pr. 1) // else // C2* = floor(C2*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C2* * 10^(e2+x1) if (ind <= 2) { highf2star.w[1] = 0x0; highf2star.w[0] = 0x0; // low f2* ok } else if (ind <= 21) { highf2star.w[1] = 0x0; highf2star.w[0] = R256.w[2] & bid_maskhigh128[ind]; // low f2* ok } else { highf2star.w[1] = R256.w[3] & bid_maskhigh128[ind]; highf2star.w[0] = R256.w[2]; // low f2* is ok } // shift right C2* by Ex-128 = bid_shiftright128[ind] if (ind >= 3) { shift = bid_shiftright128[ind]; if (shift < 64) { // 3 <= shift <= 63 R256.w[2] = (R256.w[2] >> shift) | (R256.w[3] << (64 - shift)); R256.w[3] = (R256.w[3] >> shift); } else { // 66 <= shift <= 102 R256.w[2] = (R256.w[3] >> (shift - 64)); R256.w[3] = 0x0ULL; } } // redundant is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; // determine inexactness of the rounding of C2* // (cannot be followed by a second rounding) // if (0 < f2* - 1/2 < 10^(-x1)) then // the result is exact // else (if f2* - 1/2 > T* then) // the result of is inexact if (ind <= 2) { if (R256.w[1] > 0x8000000000000000ull || (R256.w[1] == 0x8000000000000000ull && R256.w[0] > 0x0ull)) { // f2* > 1/2 and the result may be exact tmp64A = R256.w[1] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64A > bid_ten2mk128trunc[ind].w[1] || (tmp64A == bid_ten2mk128trunc[ind].w[1] && R256.w[0] >= bid_ten2mk128trunc[ind].w[0]))) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // this rounding is applied to C2 only! // x_sign != y_sign is_inexact_gt_midpoint = 1; } // else the result is exact // rounding down, unless a midpoint in [ODD, EVEN] } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // this rounding is applied to C2 only! // x_sign != y_sign is_inexact_lt_midpoint = 1; } } else if (ind <= 21) { // if 3 <= ind <= 21 if (highf2star.w[1] > 0x0 || (highf2star.w[1] == 0x0 && highf2star.w[0] > bid_onehalf128[ind]) || (highf2star.w[1] == 0x0 && highf2star.w[0] == bid_onehalf128[ind] && (R256.w[1] || R256.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64A = highf2star.w[0] - bid_onehalf128[ind]; tmp64B = highf2star.w[1]; if (tmp64A > highf2star.w[0]) tmp64B--; if (tmp64B || tmp64A || R256.w[1] > bid_ten2mk128trunc[ind].w[1] || (R256.w[1] == bid_ten2mk128trunc[ind].w[1] && R256.w[0] > bid_ten2mk128trunc[ind].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // this rounding is applied to C2 only! // x_sign != y_sign is_inexact_gt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // this rounding is applied to C2 only! // x_sign != y_sign is_inexact_lt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (highf2star.w[1] > bid_onehalf128[ind] || (highf2star.w[1] == bid_onehalf128[ind] && (highf2star.w[0] || R256.w[1] || R256.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 // tmp64A = highf2star.w[0]; tmp64B = highf2star.w[1] - bid_onehalf128[ind]; if (tmp64B || highf2star.w[0] || R256.w[1] > bid_ten2mk128trunc[ind].w[1] || (R256.w[1] == bid_ten2mk128trunc[ind].w[1] && R256.w[0] > bid_ten2mk128trunc[ind].w[0])) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // this rounding is applied to C2 only! // x_sign != y_sign is_inexact_gt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // this rounding is applied to C2 only! // x_sign != y_sign is_inexact_lt_midpoint = 1; } } // check for midpoints after determining inexactness if ((R256.w[1] || R256.w[0]) && (highf2star.w[1] == 0) && (highf2star.w[0] == 0) && (R256.w[1] < bid_ten2mk128trunc[ind].w[1] || (R256.w[1] == bid_ten2mk128trunc[ind].w[1] && R256.w[0] <= bid_ten2mk128trunc[ind].w[0]))) { // the result is a midpoint if ((tmp64 + R256.w[2]) & 0x01) { // MP in [EVEN, ODD] // if floor(C2*) is odd C = floor(C2*) - 1; the result may be 0 R256.w[2]--; if (R256.w[2] == 0xffffffffffffffffull) R256.w[3]--; // this rounding is applied to C2 only! // x_sign != y_sign is_midpoint_lt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] // this rounding is applied to C2 only! // x_sign != y_sign is_midpoint_gt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } } } else { // if (ind == -1) only when x1 = 0 R256.w[2] = C2_lo; R256.w[3] = C2_hi; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } // and now subtract C1 * 10^(e1-e2-x1) - (C2 * 10^(-x1))rnd,P34 // because x_sign != y_sign this last operation is exact C1.w[0] = C1.w[0] - R256.w[2]; C1.w[1] = C1.w[1] - R256.w[3]; if (C1.w[0] > tmp64) C1.w[1]--; // borrow if (C1.w[1] >= 0x8000000000000000ull) { // negative coefficient! C1.w[0] = ~C1.w[0]; C1.w[0]++; C1.w[1] = ~C1.w[1]; if (C1.w[0] == 0x0) C1.w[1]++; tmp_sign = y_sign; // the result will have the sign of y } else { tmp_sign = x_sign; } // the difference has exactly P34 digits x_sign = tmp_sign; if (x1 >= 1) y_exp = y_exp + ((BID_UINT64) x1 << 49); C1_hi = C1.w[1]; C1_lo = C1.w[0]; // general correction from RN to RA, RM, RP, RZ; result uses y_exp if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((!x_sign && ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even))) || (x_sign && ((rnd_mode == BID_ROUNDING_DOWN && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_DOWN) && is_midpoint_gt_even)))) { // C1 = C1 + 1 C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 y_exp = y_exp + EXP_P1; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && ((x_sign && (rnd_mode == BID_ROUNDING_UP || rnd_mode == BID_ROUNDING_TO_ZERO)) || (!x_sign && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)))) { // C1 = C1 - 1 C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi--; // check if we crossed into the lower decade if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // 10^33 - 1 C1_hi = 0x0001ed09bead87c0ull; // 10^34 - 1 C1_lo = 0x378d8e63ffffffffull; y_exp = y_exp - EXP_P1; // no underflow, because delta + q2 >= P34 + 1 } } else { ; // exact, the result is already correct } } // assemble the result res.w[1] = x_sign | y_exp | C1_hi; res.w[0] = C1_lo; } } // end delta = P34 } else { // if (|delta| <= P34 - 1) if (delta >= 0) { // if (0 <= delta <= P34 - 1) if (delta <= P34 - 1 - q2) { // calculate C' directly; the result is exact // in this case 1<=q1<=P34-1, 1<=q2<=P34-1 and 0 <= e1-e2 <= P34-2 // The coefficient of the result is C1 * 10^(e1-e2) + C2 and the // exponent is e2; either C1 or 10^(e1-e2) may not fit is 64 bits, // but their product fits with certainty in 128 bits (actually in 113) scale = delta - q1 + q2; // scale = (int)(e1 >> 49) - (int)(e2 >> 49) if (scale >= 20) { // 10^(e1-e2) does not fit in 64 bits, but C1 does __mul_128x64_to_128 (C1, C1_lo, bid_ten2k128[scale - 20]); C1_hi = C1.w[1]; C1_lo = C1.w[0]; } else if (scale >= 1) { // if 1 <= scale <= 19 then 10^(e1-e2) fits in 64 bits if (q1 <= 19) { // C1 fits in 64 bits __mul_64x64_to_128MACH (C1, C1_lo, bid_ten2k64[scale]); } else { // q1 >= 20 C1.w[1] = C1_hi; C1.w[0] = C1_lo; __mul_128x64_to_128 (C1, bid_ten2k64[scale], C1); } C1_hi = C1.w[1]; C1_lo = C1.w[0]; } else { // if (scale == 0) C1 is unchanged C1.w[0] = C1_lo; // C1.w[1] = C1_hi; } // now add C2 if (x_sign == y_sign) { // the result cannot overflow C1_lo = C1_lo + C2_lo; C1_hi = C1_hi + C2_hi; if (C1_lo < C1.w[0]) C1_hi++; } else { // if x_sign != y_sign C1_lo = C1_lo - C2_lo; C1_hi = C1_hi - C2_hi; if (C1_lo > C1.w[0]) C1_hi--; // the result can be zero, but it cannot overflow if (C1_lo == 0 && C1_hi == 0) { // assemble the result if (x_exp < y_exp) res.w[1] = x_exp; else res.w[1] = y_exp; res.w[0] = 0; if (rnd_mode == BID_ROUNDING_DOWN) { res.w[1] |= 0x8000000000000000ull; } BID_SWAP128 (res); BID_RETURN (res); } if (C1_hi >= 0x8000000000000000ull) { // negative coefficient! C1_lo = ~C1_lo; C1_lo++; C1_hi = ~C1_hi; if (C1_lo == 0x0) C1_hi++; x_sign = y_sign; // the result will have the sign of y } } // assemble the result res.w[1] = x_sign | y_exp | C1_hi; res.w[0] = C1_lo; } else if (delta == P34 - q2) { // calculate C' directly; the result may be inexact if it requires // P34+1 decimal digits; in this case the 'cutoff' point for addition // is at the position of the lsb of C2, so 0 <= e1-e2 <= P34-1 // The coefficient of the result is C1 * 10^(e1-e2) + C2 and the // exponent is e2; either C1 or 10^(e1-e2) may not fit is 64 bits, // but their product fits with certainty in 128 bits (actually in 113) scale = delta - q1 + q2; // scale = (int)(e1 >> 49) - (int)(e2 >> 49) if (scale >= 20) { // 10^(e1-e2) does not fit in 64 bits, but C1 does __mul_128x64_to_128 (C1, C1_lo, bid_ten2k128[scale - 20]); } else if (scale >= 1) { // if 1 <= scale <= 19 then 10^(e1-e2) fits in 64 bits if (q1 <= 19) { // C1 fits in 64 bits __mul_64x64_to_128MACH (C1, C1_lo, bid_ten2k64[scale]); } else { // q1 >= 20 C1.w[1] = C1_hi; C1.w[0] = C1_lo; __mul_128x64_to_128 (C1, bid_ten2k64[scale], C1); } } else { // if (scale == 0) C1 is unchanged C1.w[1] = C1_hi; C1.w[0] = C1_lo; // only the low part is necessary } C1_hi = C1.w[1]; C1_lo = C1.w[0]; // now add C2 if (x_sign == y_sign) { // the result can overflow! C1_lo = C1_lo + C2_lo; C1_hi = C1_hi + C2_hi; if (C1_lo < C1.w[0]) C1_hi++; // test for overflow, possible only when C1 >= 10^34 if (C1_hi > 0x0001ed09bead87c0ull || (C1_hi == 0x0001ed09bead87c0ull && C1_lo >= 0x378d8e6400000000ull)) { // C1 >= 10^34 // in this case q = P34 + 1 and x = q - P34 = 1, so multiply // C'' = C'+ 5 = C1 + 5 by k1 ~ 10^(-1) calculated for P34 + 1 // decimal digits // Calculate C'' = C' + 1/2 * 10^x if (C1_lo >= 0xfffffffffffffffbull) { // low half add has carry C1_lo = C1_lo + 5; C1_hi = C1_hi + 1; } else { C1_lo = C1_lo + 5; } // the approximation of 10^(-1) was rounded up to 118 bits // 10^(-1) =~ 33333333333333333333333333333400 * 2^-129 // 10^(-1) =~ 19999999999999999999999999999a00 * 2^-128 C1.w[1] = C1_hi; C1.w[0] = C1_lo; // C'' ten2m1.w[1] = 0x1999999999999999ull; ten2m1.w[0] = 0x9999999999999a00ull; __mul_128x128_to_256 (P256, C1, ten2m1); // P256 = C*, f* // C* is actually floor(C*) in this case // the top Ex = 128 bits of 10^(-1) are // T* = 0x00199999999999999999999999999999 // if (0 < f* < 10^(-x)) then // if floor(C*) is even then C = floor(C*) - logical right // shift; C has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C = floor(C*) - 1 (logical right // shift; C has p decimal digits, correct by Pr. 1) // else // C = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C * 10^(e2+x) if ((P256.w[1] || P256.w[0]) && (P256.w[1] < 0x1999999999999999ull || (P256.w[1] == 0x1999999999999999ull && P256.w[0] <= 0x9999999999999999ull))) { // the result is a midpoint if (P256.w[2] & 0x01) { is_midpoint_gt_even = 1; // if floor(C*) is odd C = floor(C*) - 1; the result is not 0 P256.w[2]--; if (P256.w[2] == 0xffffffffffffffffull) P256.w[3]--; } else { is_midpoint_lt_even = 1; } } // n = Cstar * 10^(e2+1) y_exp = y_exp + EXP_P1; // C* != 10^P because C* has P34 digits // check for overflow if (y_exp == EXP_MAX_P1 && (rnd_mode == BID_ROUNDING_TO_NEAREST || rnd_mode == BID_ROUNDING_TIES_AWAY)) { // overflow for RN res.w[1] = x_sign | 0x7800000000000000ull; // +/-inf res.w[0] = 0x0ull; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; BID_SWAP128 (res); BID_RETURN (res); } // if (0 < f* - 1/2 < 10^(-x)) then // the result of the addition is exact // else // the result of the addition is inexact if (P256.w[1] > 0x8000000000000000ull || (P256.w[1] == 0x8000000000000000ull && P256.w[0] > 0x0ull)) { // the result may be exact tmp64 = P256.w[1] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > 0x1999999999999999ull || (tmp64 == 0x1999999999999999ull && P256.w[0] >= 0x9999999999999999ull))) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact = 1; } // else the result is exact } else { // the result is inexact // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact = 1; } C1_hi = P256.w[3]; C1_lo = P256.w[2]; if (!is_midpoint_gt_even && !is_midpoint_lt_even) { is_inexact_lt_midpoint = is_inexact && (P256.w[1] & 0x8000000000000000ull); is_inexact_gt_midpoint = is_inexact && !(P256.w[1] & 0x8000000000000000ull); } // general correction from RN to RA, RM, RP, RZ; // result uses y_exp if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((!x_sign && ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even))) || (x_sign && ((rnd_mode == BID_ROUNDING_DOWN && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_DOWN) && is_midpoint_gt_even)))) { // C1 = C1 + 1 C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 y_exp = y_exp + EXP_P1; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && ((x_sign && (rnd_mode == BID_ROUNDING_UP || rnd_mode == BID_ROUNDING_TO_ZERO)) || (!x_sign && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)))) { // C1 = C1 - 1 C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi--; // check if we crossed into the lower decade if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // 10^33 - 1 C1_hi = 0x0001ed09bead87c0ull; // 10^34 - 1 C1_lo = 0x378d8e63ffffffffull; y_exp = y_exp - EXP_P1; // no underflow, because delta + q2 >= P34 + 1 } } else { ; // exact, the result is already correct } // in all cases check for overflow (RN and RA solved already) if (y_exp == EXP_MAX_P1) { // overflow if ((rnd_mode == BID_ROUNDING_DOWN && x_sign) || // RM and res < 0 (rnd_mode == BID_ROUNDING_UP && !x_sign)) { // RP and res > 0 C1_hi = 0x7800000000000000ull; // +inf C1_lo = 0x0ull; } else { // RM and res > 0, RP and res < 0, or RZ C1_hi = 0x5fffed09bead87c0ull; C1_lo = 0x378d8e63ffffffffull; } y_exp = 0; // x_sign is preserved // set the inexact flag (in case the exact addition was exact) *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; } } } // else if (C1 < 10^34) then C1 is the coeff.; the result is exact } else { // if x_sign != y_sign the result is exact C1_lo = C1_lo - C2_lo; C1_hi = C1_hi - C2_hi; if (C1_lo > C1.w[0]) C1_hi--; // the result can be zero, but it cannot overflow if (C1_lo == 0 && C1_hi == 0) { // assemble the result if (x_exp < y_exp) res.w[1] = x_exp; else res.w[1] = y_exp; res.w[0] = 0; if (rnd_mode == BID_ROUNDING_DOWN) { res.w[1] |= 0x8000000000000000ull; } BID_SWAP128 (res); BID_RETURN (res); } if (C1_hi >= 0x8000000000000000ull) { // negative coefficient! C1_lo = ~C1_lo; C1_lo++; C1_hi = ~C1_hi; if (C1_lo == 0x0) C1_hi++; x_sign = y_sign; // the result will have the sign of y } } // assemble the result res.w[1] = x_sign | y_exp | C1_hi; res.w[0] = C1_lo; } else { // if (delta >= P34 + 1 - q2) // instead of C' = (C1 * 10^(e1-e2) + C2)rnd,P34 // calculate C' = C1 * 10^(e1-e2-x1) + (C2 * 10^(-x1))rnd,P34 // where x1 = q1 + e1 - e2 - P34, 1 <= x1 <= P34 - 1 // In most cases C' will have P34 digits, and n = C' * 10^(e2+x1) // If the result has P34+1 digits, redo the steps above with x1+1 // If the result has P34-1 digits or less, redo the steps above with // x1-1 but only if initially x1 >= 1 // NOTE: these two steps can be improved, e.g we could guess if // P34+1 or P34-1 digits will be obtained by adding/subtracting just // the top 64 bits of the two operands // The result cannot be zero, but it can overflow x1 = delta + q2 - P34; // 1 <= x1 <= P34-1 roundC2: // Calculate C1 * 10^(e1-e2-x1) where 0 <= e1-e2-x1 <= P34 - 1 // scale = (int)(e1 >> 49) - (int)(e2 >> 49) - x1; 0 <= scale <= P34-1 scale = delta - q1 + q2 - x1; // scale = e1 - e2 - x1 = P34 - q1 // either C1 or 10^(e1-e2-x1) may not fit is 64 bits, // but their product fits with certainty in 128 bits (actually in 113) if (scale >= 20) { //10^(e1-e2-x1) doesn't fit in 64 bits, but C1 does __mul_128x64_to_128 (C1, C1_lo, bid_ten2k128[scale - 20]); } else if (scale >= 1) { // if 1 <= scale <= 19 then 10^(e1-e2-x1) fits in 64 bits if (q1 <= 19) { // C1 fits in 64 bits __mul_64x64_to_128MACH (C1, C1_lo, bid_ten2k64[scale]); } else { // q1 >= 20 C1.w[1] = C1_hi; C1.w[0] = C1_lo; __mul_128x64_to_128 (C1, bid_ten2k64[scale], C1); } } else { // if (scale == 0) C1 is unchanged C1.w[1] = C1_hi; C1.w[0] = C1_lo; } tmp64 = C1.w[0]; // C1.w[1], C1.w[0] contains C1 * 10^(e1-e2-x1) // now round C2 to q2-x1 decimal digits, where 1<=x1<=q2-1<=P34-1 // (but if we got here a second time after x1 = x1 - 1, then // x1 >= 0; note that for x1 = 0 C2 is unchanged) // C2' = C2 + 1/2 * 10^x1 = C2 + 5 * 10^(x1-1) ind = x1 - 1; // 0 <= ind <= q2-2<=P34-2=32; but note that if x1 = 0 // during a second pass, then ind = -1 if (ind >= 0) { // if (x1 >= 1) C2.w[0] = C2_lo; C2.w[1] = C2_hi; if (ind <= 18) { C2.w[0] = C2.w[0] + bid_midpoint64[ind]; if (C2.w[0] < C2_lo) C2.w[1]++; } else { // 19 <= ind <= 32 C2.w[0] = C2.w[0] + bid_midpoint128[ind - 19].w[0]; C2.w[1] = C2.w[1] + bid_midpoint128[ind - 19].w[1]; if (C2.w[0] < C2_lo) C2.w[1]++; } // the approximation of 10^(-x1) was rounded up to 118 bits __mul_128x128_to_256 (R256, C2, bid_ten2mk128[ind]); // R256 = C2*, f2* // calculate C2* and f2* // C2* is actually floor(C2*) in this case // C2* and f2* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // the top Ex bits of 10^(-x1) are T* = bid_ten2mk128trunc[ind], e.g. // if x1=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f2* < 10^(-x1)) then // if floor(C1+C2*) is even then C2* = floor(C2*) - logical right // shift; C2* has p decimal digits, correct by Prop. 1) // else if floor(C1+C2*) is odd C2* = floor(C2*)-1 (logical right // shift; C2* has p decimal digits, correct by Pr. 1) // else // C2* = floor(C2*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C2* * 10^(e2+x1) if (ind <= 2) { highf2star.w[1] = 0x0; highf2star.w[0] = 0x0; // low f2* ok } else if (ind <= 21) { highf2star.w[1] = 0x0; highf2star.w[0] = R256.w[2] & bid_maskhigh128[ind]; // low f2* ok } else { highf2star.w[1] = R256.w[3] & bid_maskhigh128[ind]; highf2star.w[0] = R256.w[2]; // low f2* is ok } // shift right C2* by Ex-128 = bid_shiftright128[ind] if (ind >= 3) { shift = bid_shiftright128[ind]; if (shift < 64) { // 3 <= shift <= 63 R256.w[2] = (R256.w[2] >> shift) | (R256.w[3] << (64 - shift)); R256.w[3] = (R256.w[3] >> shift); } else { // 66 <= shift <= 102 R256.w[2] = (R256.w[3] >> (shift - 64)); R256.w[3] = 0x0ULL; } } if (second_pass) { is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; } // determine inexactness of the rounding of C2* (this may be // followed by a second rounding only if we get P34+1 // decimal digits) // if (0 < f2* - 1/2 < 10^(-x1)) then // the result is exact // else (if f2* - 1/2 > T* then) // the result of is inexact if (ind <= 2) { if (R256.w[1] > 0x8000000000000000ull || (R256.w[1] == 0x8000000000000000ull && R256.w[0] > 0x0ull)) { // f2* > 1/2 and the result may be exact tmp64A = R256.w[1] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64A > bid_ten2mk128trunc[ind].w[1] || (tmp64A == bid_ten2mk128trunc[ind].w[1] && R256.w[0] >= bid_ten2mk128trunc[ind].w[0]))) { // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; // may be set again during a second pass // this rounding is applied to C2 only! if (x_sign == y_sign) is_inexact_lt_midpoint = 1; else // if (x_sign != y_sign) is_inexact_gt_midpoint = 1; } // else the result is exact // rounding down, unless a midpoint in [ODD, EVEN] } else { // the result is inexact; f2* <= 1/2 // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; // just in case we will round a second time // rounding up, unless a midpoint in [EVEN, ODD] // this rounding is applied to C2 only! if (x_sign == y_sign) is_inexact_gt_midpoint = 1; else // if (x_sign != y_sign) is_inexact_lt_midpoint = 1; } } else if (ind <= 21) { // if 3 <= ind <= 21 if (highf2star.w[1] > 0x0 || (highf2star.w[1] == 0x0 && highf2star.w[0] > bid_onehalf128[ind]) || (highf2star.w[1] == 0x0 && highf2star.w[0] == bid_onehalf128[ind] && (R256.w[1] || R256.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64A = highf2star.w[0] - bid_onehalf128[ind]; tmp64B = highf2star.w[1]; if (tmp64A > highf2star.w[0]) tmp64B--; if (tmp64B || tmp64A || R256.w[1] > bid_ten2mk128trunc[ind].w[1] || (R256.w[1] == bid_ten2mk128trunc[ind].w[1] && R256.w[0] > bid_ten2mk128trunc[ind].w[0])) { // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; // may be set again during a second pass // this rounding is applied to C2 only! if (x_sign == y_sign) is_inexact_lt_midpoint = 1; else // if (x_sign != y_sign) is_inexact_gt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; // may be set again during a second pass // rounding up, unless a midpoint in [EVEN, ODD] // this rounding is applied to C2 only! if (x_sign == y_sign) is_inexact_gt_midpoint = 1; else // if (x_sign != y_sign) is_inexact_lt_midpoint = 1; } } else { // if 22 <= ind <= 33 if (highf2star.w[1] > bid_onehalf128[ind] || (highf2star.w[1] == bid_onehalf128[ind] && (highf2star.w[0] || R256.w[1] || R256.w[0]))) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 // tmp64A = highf2star.w[0]; tmp64B = highf2star.w[1] - bid_onehalf128[ind]; if (tmp64B || highf2star.w[0] || R256.w[1] > bid_ten2mk128trunc[ind].w[1] || (R256.w[1] == bid_ten2mk128trunc[ind].w[1] && R256.w[0] > bid_ten2mk128trunc[ind].w[0])) { // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; // may be set again during a second pass // this rounding is applied to C2 only! if (x_sign == y_sign) is_inexact_lt_midpoint = 1; else // if (x_sign != y_sign) is_inexact_gt_midpoint = 1; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag // *pfpsf |= BID_INEXACT_EXCEPTION; tmp_inexact = 1; // may be set again during a second pass // rounding up, unless a midpoint in [EVEN, ODD] // this rounding is applied to C2 only! if (x_sign == y_sign) is_inexact_gt_midpoint = 1; else // if (x_sign != y_sign) is_inexact_lt_midpoint = 1; } } // check for midpoints if ((R256.w[1] || R256.w[0]) && (highf2star.w[1] == 0) && (highf2star.w[0] == 0) && (R256.w[1] < bid_ten2mk128trunc[ind].w[1] || (R256.w[1] == bid_ten2mk128trunc[ind].w[1] && R256.w[0] <= bid_ten2mk128trunc[ind].w[0]))) { // the result is a midpoint if ((tmp64 + R256.w[2]) & 0x01) { // MP in [EVEN, ODD] // if floor(C2*) is odd C = floor(C2*) - 1; the result may be 0 R256.w[2]--; if (R256.w[2] == 0xffffffffffffffffull) R256.w[3]--; // this rounding is applied to C2 only! if (x_sign == y_sign) is_midpoint_gt_even = 1; else // if (x_sign != y_sign) is_midpoint_lt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } else { // else MP in [ODD, EVEN] // this rounding is applied to C2 only! if (x_sign == y_sign) is_midpoint_lt_even = 1; else // if (x_sign != y_sign) is_midpoint_gt_even = 1; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } } // end if (ind >= 0) } else { // if (ind == -1); only during a 2nd pass, and when x1 = 0 R256.w[2] = C2_lo; R256.w[3] = C2_hi; tmp_inexact = 0; // to correct a possible setting to 1 from 1st pass if (second_pass) { is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; } } // and now add/subtract C1 * 10^(e1-e2-x1) +/- (C2 * 10^(-x1))rnd,P34 if (x_sign == y_sign) { // addition; could overflow // no second pass is possible this way (only for x_sign != y_sign) C1.w[0] = C1.w[0] + R256.w[2]; C1.w[1] = C1.w[1] + R256.w[3]; if (C1.w[0] < tmp64) C1.w[1]++; // carry // if the sum has P34+1 digits, i.e. C1>=10^34 redo the calculation // with x1=x1+1 if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] >= 0x378d8e6400000000ull)) { // C1 >= 10^34 // chop off one more digit from the sum, but make sure there is // no double-rounding error (see table - double rounding logic) // now round C1 from P34+1 to P34 decimal digits // C1' = C1 + 1/2 * 10 = C1 + 5 if (C1.w[0] >= 0xfffffffffffffffbull) { // low half add has carry C1.w[0] = C1.w[0] + 5; C1.w[1] = C1.w[1] + 1; } else { C1.w[0] = C1.w[0] + 5; } // the approximation of 10^(-1) was rounded up to 118 bits __mul_128x128_to_256 (Q256, C1, bid_ten2mk128[0]); // Q256 = C1*, f1* // C1* is actually floor(C1*) in this case // the top 128 bits of 10^(-1) are // T* = bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f1* < 10^(-1)) then // if floor(C1*) is even then C1* = floor(C1*) - logical right // shift; C1* has p decimal digits, correct by Prop. 1) // else if floor(C1*) is odd C1* = floor(C1*) - 1 (logical right // shift; C1* has p decimal digits, correct by Pr. 1) // else // C1* = floor(C1*) (logical right shift; C has p decimal digits // correct by Property 1) // n = C1* * 10^(e2+x1+1) if ((Q256.w[1] || Q256.w[0]) && (Q256.w[1] < bid_ten2mk128trunc[0].w[1] || (Q256.w[1] == bid_ten2mk128trunc[0].w[1] && Q256.w[0] <= bid_ten2mk128trunc[0].w[0]))) { // the result is a midpoint if (is_inexact_lt_midpoint) { // for the 1st rounding is_inexact_gt_midpoint = 1; is_inexact_lt_midpoint = 0; is_midpoint_gt_even = 0; is_midpoint_lt_even = 0; } else if (is_inexact_gt_midpoint) { // for the 1st rounding Q256.w[2]--; if (Q256.w[2] == 0xffffffffffffffffull) Q256.w[3]--; is_inexact_gt_midpoint = 0; is_inexact_lt_midpoint = 1; is_midpoint_gt_even = 0; is_midpoint_lt_even = 0; } else if (is_midpoint_gt_even) { // for the 1st rounding // Note: cannot have is_midpoint_lt_even is_inexact_gt_midpoint = 0; is_inexact_lt_midpoint = 1; is_midpoint_gt_even = 0; is_midpoint_lt_even = 0; } else { // the first rounding must have been exact if (Q256.w[2] & 0x01) { // MP in [EVEN, ODD] // the truncated result is correct Q256.w[2]--; if (Q256.w[2] == 0xffffffffffffffffull) Q256.w[3]--; is_inexact_gt_midpoint = 0; is_inexact_lt_midpoint = 0; is_midpoint_gt_even = 1; is_midpoint_lt_even = 0; } else { // MP in [ODD, EVEN] is_inexact_gt_midpoint = 0; is_inexact_lt_midpoint = 0; is_midpoint_gt_even = 0; is_midpoint_lt_even = 1; } } tmp_inexact = 1; // in all cases } else { // the result is not a midpoint // determine inexactness of the rounding of C1 (the sum C1+C2*) // if (0 < f1* - 1/2 < 10^(-1)) then // the result is exact // else (if f1* - 1/2 > T* then) // the result of is inexact // ind = 0 if (Q256.w[1] > 0x8000000000000000ull || (Q256.w[1] == 0x8000000000000000ull && Q256.w[0] > 0x0ull)) { // f1* > 1/2 and the result may be exact Q256.w[1] = Q256.w[1] - 0x8000000000000000ull; // f1* - 1/2 if ((Q256.w[1] > bid_ten2mk128trunc[0].w[1] || (Q256.w[1] == bid_ten2mk128trunc[0].w[1] && Q256.w[0] > bid_ten2mk128trunc[0].w[0]))) { is_inexact_gt_midpoint = 0; is_inexact_lt_midpoint = 1; is_midpoint_gt_even = 0; is_midpoint_lt_even = 0; // set the inexact flag tmp_inexact = 1; // *pfpsf |= BID_INEXACT_EXCEPTION; } else { // else the result is exact for the 2nd rounding if (tmp_inexact) { // if the previous rounding was inexact if (is_midpoint_lt_even) { is_inexact_gt_midpoint = 1; is_midpoint_lt_even = 0; } else if (is_midpoint_gt_even) { is_inexact_lt_midpoint = 1; is_midpoint_gt_even = 0; } else { ; // no change } } } // rounding down, unless a midpoint in [ODD, EVEN] } else { // the result is inexact; f1* <= 1/2 is_inexact_gt_midpoint = 1; is_inexact_lt_midpoint = 0; is_midpoint_gt_even = 0; is_midpoint_lt_even = 0; // set the inexact flag tmp_inexact = 1; // *pfpsf |= BID_INEXACT_EXCEPTION; } } // end 'the result is not a midpoint' // n = C1 * 10^(e2+x1) C1.w[1] = Q256.w[3]; C1.w[0] = Q256.w[2]; y_exp = y_exp + ((BID_UINT64) (x1 + 1) << 49); } else { // C1 < 10^34 // C1.w[1] and C1.w[0] already set // n = C1 * 10^(e2+x1) y_exp = y_exp + ((BID_UINT64) x1 << 49); } // check for overflow if (y_exp == EXP_MAX_P1 && (rnd_mode == BID_ROUNDING_TO_NEAREST || rnd_mode == BID_ROUNDING_TIES_AWAY)) { res.w[1] = 0x7800000000000000ull | x_sign; // +/-inf res.w[0] = 0x0ull; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; BID_SWAP128 (res); BID_RETURN (res); } // else no overflow } else { // if x_sign != y_sign the result of this subtract. is exact C1.w[0] = C1.w[0] - R256.w[2]; C1.w[1] = C1.w[1] - R256.w[3]; if (C1.w[0] > tmp64) C1.w[1]--; // borrow if (C1.w[1] >= 0x8000000000000000ull) { // negative coefficient! C1.w[0] = ~C1.w[0]; C1.w[0]++; C1.w[1] = ~C1.w[1]; if (C1.w[0] == 0x0) C1.w[1]++; tmp_sign = y_sign; // the result will have the sign of y if last rnd } else { tmp_sign = x_sign; } // if the difference has P34-1 digits or less, i.e. C1 < 10^33 then // redo the calculation with x1=x1-1; // redo the calculation also if C1 = 10^33 and // (is_inexact_gt_midpoint or is_midpoint_lt_even); // (the last part should have really been // (is_inexact_lt_midpoint or is_midpoint_gt_even) from // the rounding of C2, but the position flags have been reversed) // 10^33 = 0x0000314dc6448d93 0x38c15b0a00000000 if ((C1.w[1] < 0x0000314dc6448d93ull || (C1.w[1] == 0x0000314dc6448d93ull && C1.w[0] < 0x38c15b0a00000000ull)) || (C1.w[1] == 0x0000314dc6448d93ull && C1.w[0] == 0x38c15b0a00000000ull && (is_inexact_gt_midpoint || is_midpoint_lt_even))) { // C1=10^33 x1 = x1 - 1; // x1 >= 0 if (x1 >= 0) { // clear position flags and tmp_inexact is_midpoint_lt_even = 0; is_midpoint_gt_even = 0; is_inexact_lt_midpoint = 0; is_inexact_gt_midpoint = 0; tmp_inexact = 0; second_pass = 1; goto roundC2; // else result has less than P34 digits } } // if the coefficient of the result is 10^34 it means that this // must be the second pass, and we are done if (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] == 0x378d8e6400000000ull) { // if C1 = 10^34 C1.w[1] = 0x0000314dc6448d93ull; // C1 = 10^33 C1.w[0] = 0x38c15b0a00000000ull; y_exp = y_exp + ((BID_UINT64) 1 << 49); } x_sign = tmp_sign; if (x1 >= 1) y_exp = y_exp + ((BID_UINT64) x1 << 49); // x1 = -1 is possible at the end of a second pass when the // first pass started with x1 = 1 } C1_hi = C1.w[1]; C1_lo = C1.w[0]; // general correction from RN to RA, RM, RP, RZ; result uses y_exp if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((!x_sign && ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even))) || (x_sign && ((rnd_mode == BID_ROUNDING_DOWN && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_DOWN) && is_midpoint_gt_even)))) { // C1 = C1 + 1 C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 y_exp = y_exp + EXP_P1; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && ((x_sign && (rnd_mode == BID_ROUNDING_UP || rnd_mode == BID_ROUNDING_TO_ZERO)) || (!x_sign && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)))) { // C1 = C1 - 1 C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi--; // check if we crossed into the lower decade if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // 10^33 - 1 C1_hi = 0x0001ed09bead87c0ull; // 10^34 - 1 C1_lo = 0x378d8e63ffffffffull; y_exp = y_exp - EXP_P1; // no underflow, because delta + q2 >= P34 + 1 } } else { ; // exact, the result is already correct } // in all cases check for overflow (RN and RA solved already) if (y_exp == EXP_MAX_P1) { // overflow if ((rnd_mode == BID_ROUNDING_DOWN && x_sign) || // RM and res < 0 (rnd_mode == BID_ROUNDING_UP && !x_sign)) { // RP and res > 0 C1_hi = 0x7800000000000000ull; // +inf C1_lo = 0x0ull; } else { // RM and res > 0, RP and res < 0, or RZ C1_hi = 0x5fffed09bead87c0ull; C1_lo = 0x378d8e63ffffffffull; } y_exp = 0; // x_sign is preserved // set the inexact flag (in case the exact addition was exact) *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; } } // assemble the result res.w[1] = x_sign | y_exp | C1_hi; res.w[0] = C1_lo; if (tmp_inexact) *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if (-P34 + 1 <= delta <= -1) <=> 1 <= -delta <= P34 - 1 // NOTE: the following, up to "} else { // if x_sign != y_sign // the result is exact" is identical to "else if (delta == P34 - q2) {" // from above; also, the code is not symmetric: a+b and b+a may take // different paths (need to unify eventually!) // calculate C' = C2 + C1 * 10^(e1-e2) directly; the result may be // inexact if it requires P34 + 1 decimal digits; in either case the // 'cutoff' point for addition is at the position of the lsb of C2 // The coefficient of the result is C1 * 10^(e1-e2) + C2 and the // exponent is e2; either C1 or 10^(e1-e2) may not fit is 64 bits, // but their product fits with certainty in 128 bits (actually in 113) // Note that 0 <= e1 - e2 <= P34 - 2 // -P34 + 1 <= delta <= -1 <=> -P34 + 1 <= delta <= -1 <=> // -P34 + 1 <= q1 + e1 - q2 - e2 <= -1 <=> // q2 - q1 - P34 + 1 <= e1 - e2 <= q2 - q1 - 1 <=> // 1 - P34 - P34 + 1 <= e1-e2 <= P34 - 1 - 1 => 0 <= e1-e2 <= P34 - 2 scale = delta - q1 + q2; // scale = (int)(e1 >> 49) - (int)(e2 >> 49) if (scale >= 20) { // 10^(e1-e2) does not fit in 64 bits, but C1 does __mul_128x64_to_128 (C1, C1_lo, bid_ten2k128[scale - 20]); } else if (scale >= 1) { // if 1 <= scale <= 19 then 10^(e1-e2) fits in 64 bits if (q1 <= 19) { // C1 fits in 64 bits __mul_64x64_to_128MACH (C1, C1_lo, bid_ten2k64[scale]); } else { // q1 >= 20 C1.w[1] = C1_hi; C1.w[0] = C1_lo; __mul_128x64_to_128 (C1, bid_ten2k64[scale], C1); } } else { // if (scale == 0) C1 is unchanged C1.w[1] = C1_hi; C1.w[0] = C1_lo; // only the low part is necessary } C1_hi = C1.w[1]; C1_lo = C1.w[0]; // now add C2 if (x_sign == y_sign) { // the result can overflow! C1_lo = C1_lo + C2_lo; C1_hi = C1_hi + C2_hi; if (C1_lo < C1.w[0]) C1_hi++; // test for overflow, possible only when C1 >= 10^34 if (C1_hi > 0x0001ed09bead87c0ull || (C1_hi == 0x0001ed09bead87c0ull && C1_lo >= 0x378d8e6400000000ull)) { // C1 >= 10^34 // in this case q = P34 + 1 and x = q - P34 = 1, so multiply // C'' = C'+ 5 = C1 + 5 by k1 ~ 10^(-1) calculated for P34 + 1 // decimal digits // Calculate C'' = C' + 1/2 * 10^x if (C1_lo >= 0xfffffffffffffffbull) { // low half add has carry C1_lo = C1_lo + 5; C1_hi = C1_hi + 1; } else { C1_lo = C1_lo + 5; } // the approximation of 10^(-1) was rounded up to 118 bits // 10^(-1) =~ 33333333333333333333333333333400 * 2^-129 // 10^(-1) =~ 19999999999999999999999999999a00 * 2^-128 C1.w[1] = C1_hi; C1.w[0] = C1_lo; // C'' ten2m1.w[1] = 0x1999999999999999ull; ten2m1.w[0] = 0x9999999999999a00ull; __mul_128x128_to_256 (P256, C1, ten2m1); // P256 = C*, f* // C* is actually floor(C*) in this case // the top Ex = 128 bits of 10^(-1) are // T* = 0x00199999999999999999999999999999 // if (0 < f* < 10^(-x)) then // if floor(C*) is even then C = floor(C*) - logical right // shift; C has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C = floor(C*) - 1 (logical right // shift; C has p decimal digits, correct by Pr. 1) // else // C = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C * 10^(e2+x) if ((P256.w[1] || P256.w[0]) && (P256.w[1] < 0x1999999999999999ull || (P256.w[1] == 0x1999999999999999ull && P256.w[0] <= 0x9999999999999999ull))) { // the result is a midpoint if (P256.w[2] & 0x01) { is_midpoint_gt_even = 1; // if floor(C*) is odd C = floor(C*) - 1; the result is not 0 P256.w[2]--; if (P256.w[2] == 0xffffffffffffffffull) P256.w[3]--; } else { is_midpoint_lt_even = 1; } } // n = Cstar * 10^(e2+1) y_exp = y_exp + EXP_P1; // C* != 10^P34 because C* has P34 digits // check for overflow if (y_exp == EXP_MAX_P1 && (rnd_mode == BID_ROUNDING_TO_NEAREST || rnd_mode == BID_ROUNDING_TIES_AWAY)) { // overflow for RN res.w[1] = x_sign | 0x7800000000000000ull; // +/-inf res.w[0] = 0x0ull; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; BID_SWAP128 (res); BID_RETURN (res); } // if (0 < f* - 1/2 < 10^(-x)) then // the result of the addition is exact // else // the result of the addition is inexact if (P256.w[1] > 0x8000000000000000ull || (P256.w[1] == 0x8000000000000000ull && P256.w[0] > 0x0ull)) { // the result may be exact tmp64 = P256.w[1] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > 0x1999999999999999ull || (tmp64 == 0x1999999999999999ull && P256.w[0] >= 0x9999999999999999ull))) { // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact = 1; } // else the result is exact } else { // the result is inexact // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; is_inexact = 1; } C1_hi = P256.w[3]; C1_lo = P256.w[2]; if (!is_midpoint_gt_even && !is_midpoint_lt_even) { is_inexact_lt_midpoint = is_inexact && (P256.w[1] & 0x8000000000000000ull); is_inexact_gt_midpoint = is_inexact && !(P256.w[1] & 0x8000000000000000ull); } // general correction from RN to RA, RM, RP, RZ; result uses y_exp if (rnd_mode != BID_ROUNDING_TO_NEAREST) { if ((!x_sign && ((rnd_mode == BID_ROUNDING_UP && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_UP) && is_midpoint_gt_even))) || (x_sign && ((rnd_mode == BID_ROUNDING_DOWN && is_inexact_lt_midpoint) || ((rnd_mode == BID_ROUNDING_TIES_AWAY || rnd_mode == BID_ROUNDING_DOWN) && is_midpoint_gt_even)))) { // C1 = C1 + 1 C1_lo = C1_lo + 1; if (C1_lo == 0) { // rounding overflow in the low 64 bits C1_hi = C1_hi + 1; } if (C1_hi == 0x0001ed09bead87c0ull && C1_lo == 0x378d8e6400000000ull) { // C1 = 10^34 => rounding overflow C1_hi = 0x0000314dc6448d93ull; C1_lo = 0x38c15b0a00000000ull; // 10^33 y_exp = y_exp + EXP_P1; } } else if ((is_midpoint_lt_even || is_inexact_gt_midpoint) && ((x_sign && (rnd_mode == BID_ROUNDING_UP || rnd_mode == BID_ROUNDING_TO_ZERO)) || (!x_sign && (rnd_mode == BID_ROUNDING_DOWN || rnd_mode == BID_ROUNDING_TO_ZERO)))) { // C1 = C1 - 1 C1_lo = C1_lo - 1; if (C1_lo == 0xffffffffffffffffull) C1_hi--; // check if we crossed into the lower decade if (C1_hi == 0x0000314dc6448d93ull && C1_lo == 0x38c15b09ffffffffull) { // 10^33 - 1 C1_hi = 0x0001ed09bead87c0ull; // 10^34 - 1 C1_lo = 0x378d8e63ffffffffull; y_exp = y_exp - EXP_P1; // no underflow, because delta + q2 >= P34 + 1 } } else { ; // exact, the result is already correct } // in all cases check for overflow (RN and RA solved already) if (y_exp == EXP_MAX_P1) { // overflow if ((rnd_mode == BID_ROUNDING_DOWN && x_sign) || // RM and res < 0 (rnd_mode == BID_ROUNDING_UP && !x_sign)) { // RP and res > 0 C1_hi = 0x7800000000000000ull; // +inf C1_lo = 0x0ull; } else { // RM and res > 0, RP and res < 0, or RZ C1_hi = 0x5fffed09bead87c0ull; C1_lo = 0x378d8e63ffffffffull; } y_exp = 0; // x_sign is preserved // set the inexact flag (in case the exact addition was exact) *pfpsf |= BID_INEXACT_EXCEPTION; // set the overflow flag *pfpsf |= BID_OVERFLOW_EXCEPTION; } } } // else if (C1 < 10^34) then C1 is the coeff.; the result is exact // assemble the result res.w[1] = x_sign | y_exp | C1_hi; res.w[0] = C1_lo; } else { // if x_sign != y_sign the result is exact C1_lo = C2_lo - C1_lo; C1_hi = C2_hi - C1_hi; if (C1_lo > C2_lo) C1_hi--; if (C1_hi >= 0x8000000000000000ull) { // negative coefficient! C1_lo = ~C1_lo; C1_lo++; C1_hi = ~C1_hi; if (C1_lo == 0x0) C1_hi++; x_sign = y_sign; // the result will have the sign of y } // the result can be zero, but it cannot overflow if (C1_lo == 0 && C1_hi == 0) { // assemble the result if (x_exp < y_exp) res.w[1] = x_exp; else res.w[1] = y_exp; res.w[0] = 0; if (rnd_mode == BID_ROUNDING_DOWN) { res.w[1] |= 0x8000000000000000ull; } BID_SWAP128 (res); BID_RETURN (res); } // assemble the result res.w[1] = y_sign | y_exp | C1_hi; res.w[0] = C1_lo; } } } BID_SWAP128 (res); BID_RETURN (res) } } // bid128_sub stands for bid128qq_sub /***************************************************************************** * BID128 sub ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid128_sub (BID_UINT128 * pres, BID_UINT128 * px, BID_UINT128 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT128 x = *px, y = *py; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = *prnd_mode; #endif #else DFP_WRAPFN_DFP_DFP(128, bid128_sub, 128, 128) BID_UINT128 bid128_sub (BID_UINT128 x, BID_UINT128 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT128 res; BID_UINT64 y_sign; if ((y.w[BID_HIGH_128W] & MASK_NAN) != MASK_NAN) { // y is not NAN // change its sign y_sign = y.w[BID_HIGH_128W] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative if (y_sign) y.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] & 0x7fffffffffffffffull; else y.w[BID_HIGH_128W] = y.w[BID_HIGH_128W] | 0x8000000000000000ull; } #if DECIMAL_CALL_BY_REFERENCE bid128_add (&res, &x, &y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid128_add (x, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } LIBRARY/src/bid128_asinh.c0000644€­ Q01134020000000656715113665770014173 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_F128_CONST_DEF( c_log10, 400026bb1bbb5551, 582dd4adac5705a6); // ln(10) BID128_FUNCTION_ARG1 (bid128_asinh, x) BID_UINT128 CX, xn, res; BID_UINT64 sign_x; int exponent_x; BID_F128_TYPE rq, xq, yq, rt; // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value_BLE (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN if ((x.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = (CX.w[BID_HIGH_128W]) & QUIET_MASK64; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; BID_RETURN (res); } // x is Infinity? if ((x.w[BID_HIGH_128W] & 0x7800000000000000ull) == 0x7800000000000000ull) { res.w[BID_HIGH_128W] = sign_x | 0x7800000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } // x is 0 res.w[BID_HIGH_128W] = sign_x | CX.w[BID_HIGH_128W]; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; BID_RETURN (res); } if(exponent_x > (DECIMAL_EXPONENT_BIAS_128+34)) { bid_get_BID128_very_fast_BLE(&xn, 0, DECIMAL_EXPONENT_BIAS_128, CX); BIDECIMAL_CALL1 (bid128_to_binary128, xq, xn); __bid_f128_add(xq, xq, xq); __bid_f128_itof(yq, exponent_x-DECIMAL_EXPONENT_BIAS_128); __bid_f128_mul(rq, yq, c_log10.v); __bid_f128_log(rt, xq); __bid_f128_add(rq, rq, rt); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); res.w[BID_HIGH_128W] |= sign_x; BID_RETURN (res); } BIDECIMAL_CALL1 (bid128_to_binary128, xq, x); __bid_f128_asinh(rq, xq); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } LIBRARY/src/bid128_lgamma.c0000644€­ Q01134020000002273215113665770014317 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // 2-part conversion. BID_EXTERN_C void bid128_to_binary128_2part(BID_F128_TYPE *,BID_F128_TYPE *,BID_UINT128); // +Infinity static BID_UINT128 BID128_INF = {BID128_LH_INIT( 0x0000000000000000ull, 0x7800000000000000ull )}; // 1/2 static BID_UINT128 BID128_HALF = {BID128_LH_INIT( 0x0000000000000005ull, 0x303e000000000000ull )}; // log(2 pi) / 2 static BID_UINT128 BID128_LOG_2PI_OVER_2 = {BID128_LH_INIT( 0x8512e0b1f71b1870ull, 0x2ffdc512596bf2beull )}; BID_F128_CONST_DEF(c_m1e34, c06fed09defd561e, 75b290c510000000); // -1.000001e34Q BID_F128_CONST_DEF(c_1e34, 406fed09defd561e, 75b290c510000000); // 1.000001e34Q BID_F128_CONST_DEF(c_1_plus_eps, 3fff250d048e7a1b, 0000000000000034); // 1+1e-34 BID_F128_CONST_DEF(c_log_pi, 3fff250d048e7a1b, d0bd5f956c6a843f); // log(pi) BID_F128_CONST_DEF(c_one, 3fff000000000000, 0000000000000000); // 1. BID_F128_CONST_DEF(c_minus_one, bfff000000000000, 0000000000000000); // -1. BID_F128_CONST_DEF(c_half, 3ffe000000000000, 0000000000000000); // .5 BID_F128_CONST_DEF(c_1em100, 3eb2bff2ee48e052, fd7ab2f0fc572779); // 1e-100 BID_F128_CONST_DEF(c_pi, 4000921fb54442d1, 8469898cc51701b8); // pi BID128_FUNCTION_ARG1 (bid128_lgamma, x) // Declare local variables BID_UINT128 res, x_int, x_frac; BID_F128_TYPE xd_hi, xd_up, xd_lo, yd, zd, fd, xd_tmp, xd_rem, rd, rt, abs_xd_hi; int cmp_res; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[0] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // If the input is 0, return +infinity BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isZero,cmp_res,x); if (cmp_res) { res = BID128_INF; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } // For infinite inputs, return +infinity BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isInf,cmp_res,x); if (cmp_res) { res = BID128_INF; BID_RETURN (res); } // Perform 2-part conversion to quad bid128_to_binary128_2part(&xd_hi,&xd_lo,x); // If x <= -10^34 then it's a nonnegative integer so return NaN // Leave a little slop in comparison just in case. if (__bid_f128_le(xd_hi, c_m1e34.v)) { res = BID128_INF; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } // Otherwise if x >= 10^34, we may if it's much more than that need to // worry about the quad lgamma overflowing, but by even 10^34 it's safe // to just use the top terms of Stirling's approximation // // log(Gamma(x)) = (x - 1/2) * log(x) - x + log(2 * pi) / 2 // // We would be safe doing the operation in binary since log is // well-conditioned at that point, except that we need also to // worry about overflow. So we basically do it all in decimal. if (__bid_f128_ge(xd_hi, c_1e34.v)) { BID_UINT128 lg1, lg2, lg3; BIDECIMAL_CALL2(bid128_sub,lg1,x,BID128_HALF); BIDECIMAL_CALL1(bid128_log,lg2,x); BIDECIMAL_CALL2(bid128_sub,lg3,BID128_LOG_2PI_OVER_2,x); BIDECIMAL_CALL3(bid128_fma,res,lg1,lg2,lg3); BID_RETURN (res); } // Check that the input is not exactly a nonpositive integer. // If it is, then return +infinity as usual. if (__bid_f128_le(xd_hi, c_half.v)) { BIDECIMAL_CALL1_NORND(bid128_round_integral_nearest_even, x_int, x); BIDECIMAL_CALL2_NORND(bid128_quiet_equal,cmp_res,x_int,x); if (cmp_res) { res = BID128_INF; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } } // Given that the input is *not* a nonpositive integer, neither is // xd_hi, since |xd_lo| <= xd_hi / 2^113, whereas if x is around n, // |x - n| / |x| >= 10^-34 >= 2^-113. // // Otherwise, we can assume |x| <= 1.000001e34, and this means that // |x| < 2^113, so if x is an exact integer, we will have xd_hi = x // and xd_lo = 0. // Otherwise, if x >= 0.5, use the binary function but make a // simple interpolating correction for the low part of the conversion if (__bid_f128_ge(xd_hi, c_half.v)) { __bid_f128_lgamma(yd, xd_hi); __bid_f128_mul(xd_up, c_1_plus_eps.v, xd_hi); __bid_f128_nextafter(xd_up, xd_hi, xd_up); __bid_f128_lgamma(zd, xd_up); __bid_f128_sub(rt, zd, yd); __bid_f128_sub(rd, xd_up, xd_hi); __bid_f128_div(rd, xd_lo, rd); __bid_f128_mul(rd, rd, rt); __bid_f128_add(yd, yd, rd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } // Handle the case of really tiny inputs, where the computation // might otherwise underflow or become inaccurate. // By the reflection formula we have // // Gamma(e) = pi/(sin(pi e) * Gamma(1 - e)) =~= 1/e // so return -log|e|. __bid_f128_fabs(abs_xd_hi, xd_hi); if (__bid_f128_le(abs_xd_hi, c_1em100.v)) { x.w[BID_HIGH_128W] &= ~SIGNMASK64; BIDECIMAL_CALL1(bid128_log,res,x); res.w[BID_HIGH_128W] ^= SIGNMASK64; BID_RETURN(res); } // Otherwise we have even more condition worries: do all that *and* // factor out the singularities using the reflection formula // // Gamma(x) = pi / (sin (pi * x) * Gamma(1 - x)) // log|Gamma(x)| = log pi - lgamma(1 - x) - log|sin(pi * x)| // // Form the integer and fractional parts of x, and convert fractional // part to quad. BIDECIMAL_CALL1_NORND(bid128_round_integral_nearest_even, x_int, x); BIDECIMAL_CALL2(bid128_sub,x_frac,x,x_int); /*// If the fractional part is 0, return Inf BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isZero,cmp_res,x_frac); if (cmp_res) { res = BID128_INF; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); }*/ // Get representation x_hi + x_lo = 1 - x // Maintain 2-part accuracy by appropriate compensated sum. // // Note: if x <= 0 then |1 - x| = 1 + |x| >= |x| // while if 0 <= x <= 1/2 then |1 - x| >= 1/2 >= |x| // so in either case the low part is still proportionally small. // and we can then just add up the tails. __bid_f128_sub(xd_tmp, c_one.v, xd_hi); if (__bid_f128_le(xd_hi, c_minus_one.v)) { __bid_f128_add(xd_rem, xd_tmp, xd_hi); __bid_f128_sub(xd_rem, c_one.v, xd_rem); } else { __bid_f128_sub(xd_rem, c_one.v, xd_tmp); __bid_f128_sub(xd_rem, xd_rem, xd_hi); } xd_hi = xd_tmp; __bid_f128_sub(xd_lo, xd_rem, xd_lo); // Compute lgamma(1 - x) using exactly the same interpolating correction // as before. __bid_f128_lgamma(yd, xd_hi); __bid_f128_mul(xd_up, c_1_plus_eps.v, xd_hi); __bid_f128_lgamma(zd, xd_up); __bid_f128_sub(rt, zd, yd); __bid_f128_sub(rd, xd_up, xd_hi); __bid_f128_div(rd, xd_lo, rd); __bid_f128_mul(rd, rd, rt); __bid_f128_add(yd, yd, rd); // Perform the rest of the computation in quad. // // NB: this is not really perfect because we may get cancellation // when the overall gamma function is close to 1, and hence lgamma // is small and errors in the bits get blown up. BIDECIMAL_CALL1(bid128_to_binary128,fd,x_frac); __bid_f128_mul(rt, c_pi.v, fd); __bid_f128_sin(rt, rt); __bid_f128_fabs(rt, rt); __bid_f128_log(rt, rt); __bid_f128_sub(rt, c_log_pi.v, rt); __bid_f128_sub(yd, rt, yd); // Convert back and return. BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN (res); } LIBRARY/src/bid_flag_operations.c0000644€­ Q01134020000003447215113665770016006 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * Non-computational Operations on Flags: ****************************************************************************/ #include "bid_internal.h" // Note the following definitions from bid_conf.h: if the status flags are // global, they have a fixed name recognized by the library functions: // _IDEC_glbflags; pfpsf, defined as &_IDEC_glbflags, can be used instead; no // argument is passed for the status flags to the library functions; if the // status flags are local then they are passed as an arument, always by // reference, to the library functions // // #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS // #define _EXC_FLAGS_PARAM , _IDEC_flags *pfpsf // #else // BID_EXTERN_C _IDEC_flags _IDEC_glbflags; // #define _EXC_FLAGS_PARAM // #define pfpsf &_IDEC_glbflags // #endif #if DECIMAL_CALL_BY_REFERENCE void bid_signalException (_IDEC_flags * pflagsmask _EXC_FLAGS_PARAM) { // *pflagsmask is the logical OR of the flags to be set, e.g. // *pflagsmask =BID_INVALID_EXCEPTION | BID_ZERO_DIVIDE_EXCEPTION | BID_OVERFLOW_EXCEPTION // BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION to set all five IEEE 754 // exception flags *pfpsf = *pfpsf | (*pflagsmask & BID_IEEE_FLAGS); } #else void bid_signalException (_IDEC_flags flagsmask _EXC_FLAGS_PARAM) { // flagsmask is the logical OR of the flags to be set, e.g. // flagsmask = BID_INVALID_EXCEPTION | BID_ZERO_DIVIDE_EXCEPTION | BID_OVERFLOW_EXCEPTION // BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION to set all five IEEE 754 // exception flags *pfpsf = *pfpsf | (flagsmask & BID_IEEE_FLAGS); } #endif #if DECIMAL_CALL_BY_REFERENCE void bid_lowerFlags (_IDEC_flags * pflagsmask _EXC_FLAGS_PARAM) { // *pflagsmask is the logical OR of the flags to be cleared, e.g. // *pflagsmask =BID_INVALID_EXCEPTION | BID_ZERO_DIVIDE_EXCEPTION | BID_OVERFLOW_EXCEPTION // BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION to clear all five IEEE 754 // exception flags *pfpsf = *pfpsf & ~(*pflagsmask & BID_IEEE_FLAGS); } #else void bid_lowerFlags (_IDEC_flags flagsmask _EXC_FLAGS_PARAM) { // flagsmask is the logical OR of the flags to be cleared, e.g. // flagsmask = BID_INVALID_EXCEPTION | BID_ZERO_DIVIDE_EXCEPTION | BID_OVERFLOW_EXCEPTION // BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION to clear all five IEEE 754 // exception flags *pfpsf = *pfpsf & ~(flagsmask & BID_IEEE_FLAGS); } #endif #if DECIMAL_CALL_BY_REFERENCE void bid_testFlags (_IDEC_flags * praised, _IDEC_flags * pflagsmask _EXC_FLAGS_PARAM) { // *praised is a pointer to the result, i.e. the logical OR of the flags // selected by *pflagsmask that are set; e.g. if // *pflagsmask = BID_INVALID_EXCEPTION | BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION // and only the invalid and inexact flags are raised (set) then upon return // *praised = BID_INVALID_EXCEPTION | BID_INEXACT_EXCEPTION *praised = *pfpsf & (*pflagsmask & BID_IEEE_FLAGS); } #else _IDEC_flags bid_testFlags (_IDEC_flags flagsmask _EXC_FLAGS_PARAM) { _IDEC_flags raised; // the raturn value raised is the logical OR of the flags // selected by flagsmask, that are set; e.g. if // flagsmask = BID_INVALID_EXCEPTION | BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION and // only the invalid and inexact flags are raised (set) then the return value // is raised = BID_INVALID_EXCEPTION | BID_INEXACT_EXCEPTION raised = *pfpsf & (flagsmask & BID_IEEE_FLAGS); return (raised); } #endif #if DECIMAL_CALL_BY_REFERENCE void bid_testSavedFlags (_IDEC_flags * praised, _IDEC_flags * psavedflags, _IDEC_flags * pflagsmask) { // *praised is a pointer to the result, i.e. the logical OR of the flags // selected by *pflagsmask that are set in *psavedflags; e.g. if // *pflagsmask = BID_INVALID_EXCEPTION | BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION // and only the invalid and inexact flags are raised (set) in *psavedflags // then upon return *praised = BID_INVALID_EXCEPTION | BID_INEXACT_EXCEPTION // Note that the flags could be saved in a global variable, but this function // would still expect that value as an argument passed by reference *praised = *psavedflags & (*pflagsmask & BID_IEEE_FLAGS); } #else _IDEC_flags bid_testSavedFlags (_IDEC_flags savedflags, _IDEC_flags flagsmask) { _IDEC_flags raised; // the raturn value raised is the logical OR of the flags // selected by flagsmask, that are set in savedflags; e.g. if // flagsmask = BID_INVALID_EXCEPTION | BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION and // only the invalid and inexact flags are raised (set) in savedflags // then the return value is raised = BID_INVALID_EXCEPTION | BID_INEXACT_EXCEPTION // Note that the flags could be saved in a global variable, but this function // would still expect that value as an argument passed by value raised = savedflags & (flagsmask & BID_IEEE_FLAGS); return (raised); } #endif #if DECIMAL_CALL_BY_REFERENCE void bid_restoreFlags (_IDEC_flags * pflagsvalues, _IDEC_flags * pflagsmask _EXC_FLAGS_PARAM) { // restore the status flags selected by *pflagsmask to the values speciafied // (as a logical OR) in *pflagsvalues; e.g. if // *pflagsmask = BID_INVALID_EXCEPTION | BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION // and only the invalid and inexact flags are raised (set) in *pflagsvalues // then upon return the invalid status flag will be set, the underflow status // flag will be clear, and the inexact status flag will be set *pfpsf = *pfpsf & ~(*pflagsmask & BID_IEEE_FLAGS); // clear flags that have to be restored *pfpsf = *pfpsf | (*pflagsvalues & (*pflagsmask & BID_IEEE_FLAGS)); // restore flags } #else void bid_restoreFlags (_IDEC_flags flagsvalues, _IDEC_flags flagsmask _EXC_FLAGS_PARAM) { // restore the status flags selected by flagsmask to the values speciafied // (as a logical OR) in flagsvalues; e.g. if // flagsmask = BID_INVALID_EXCEPTION | BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION // and only the invalid and inexact flags are raised (set) in flagsvalues // then upon return the invalid status flag will be set, the underflow status // flag will be clear, and the inexact status flag will be set *pfpsf = *pfpsf & ~(flagsmask & BID_IEEE_FLAGS); // clear flags that have to be restored *pfpsf = *pfpsf | (flagsvalues & (flagsmask & BID_IEEE_FLAGS)); // restore flags } #endif #if DECIMAL_CALL_BY_REFERENCE void bid_saveFlags (_IDEC_flags * pflagsvalues, _IDEC_flags * pflagsmask _EXC_FLAGS_PARAM) { // return in *pflagsvalues the status flags specified (as a logical OR) in // *pflagsmask; e.g. if // *pflagsmask = BID_INVALID_EXCEPTION | BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION // and only the invalid and inexact flags are raised (set) in the status word, // then upon return the value in *pflagsvalues will have the invalid status // flag set, the underflow status flag clear, and the inexact status flag set *pflagsvalues = *pfpsf & (*pflagsmask & BID_IEEE_FLAGS); } #else _IDEC_flags bid_saveFlags (_IDEC_flags flagsmask _EXC_FLAGS_PARAM) { _IDEC_flags flagsvalues; // return the status flags specified (as a logical OR) in flagsmask; e.g. if // flagsmask = BID_INVALID_EXCEPTION | BID_UNDERFLOW_EXCEPTION | BID_INEXACT_EXCEPTION // and only the invalid and inexact flags are raised (set) in the status word, // then the return value will have the invalid status flag set, the // underflow status flag clear, and the inexact status flag set flagsvalues = *pfpsf & (flagsmask & BID_IEEE_FLAGS); return (flagsvalues); } #endif // Note the following definitions from bid_conf.h (rearranged): if the rounding // mode is global, it has a fixed name recognized by the library functions: // _IDEC_glbround; rnd_mode, defined as &_IDEC_glbround, can be used instead; no // argument is passed for the rounding mode to the library functions; if the // rounding mode is local then it is passed as an arument, by reference or by // value, to the library functions // // #if DECIMAL_CALL_BY_REFERENCE // #if !DECIMAL_GLOBAL_ROUNDING // #define _RND_MODE_PARAM , _IDEC_round *prnd_mode // #else // #define _RND_MODE_PARAM // #define rnd_mode _IDEC_glbround // #endif // #else // #if !DECIMAL_GLOBAL_ROUNDING // #define _RND_MODE_PARAM , _IDEC_round rnd_mode // #else // #define _RND_MODE_PARAM // #define rnd_mode _IDEC_glbround // #endif // #endif #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING // #define _RND_MODE_PARAM , _IDEC_round *prnd_mode void bid_getDecimalRoundingDirection (_IDEC_round * rounding_mode _RND_MODE_PARAM) { // returns the current rounding mode *rounding_mode = *prnd_mode; } #else // #define _RND_MODE_PARAM // #define rnd_mode _IDEC_glbround void bid_getDecimalRoundingDirection (_IDEC_round * rounding_mode _RND_MODE_PARAM) { // returns the current rounding mode *rounding_mode = rnd_mode; } #endif #else #if !DECIMAL_GLOBAL_ROUNDING // #define _RND_MODE_PARAM , _IDEC_round rnd_mode _IDEC_round bid_getDecimalRoundingDirection (_IDEC_round rnd_mode) { // returns the current rounding mode return (rnd_mode); } #else // #define _RND_MODE_PARAM // #define rnd_mode _IDEC_glbround _IDEC_round bid_getDecimalRoundingDirection (void) { // returns the current rounding mode return (rnd_mode); } #endif #endif #if DECIMAL_CALL_BY_REFERENCE #if !DECIMAL_GLOBAL_ROUNDING // #define _RND_MODE_PARAM , _IDEC_round *prnd_mode void bid_setDecimalRoundingDirection (_IDEC_round * rounding_mode _RND_MODE_PARAM) { // sets the current rounding mode to the value in *rounding_mode, if valid if (*rounding_mode == BID_ROUNDING_TO_NEAREST || *rounding_mode == BID_ROUNDING_DOWN || *rounding_mode == BID_ROUNDING_UP || *rounding_mode == BID_ROUNDING_TO_ZERO || *rounding_mode == BID_ROUNDING_TIES_AWAY) { *prnd_mode = *rounding_mode; } } #else // #define _RND_MODE_PARAM // #define rnd_mode _IDEC_glbround void bid_setDecimalRoundingDirection (_IDEC_round * rounding_mode ) { // sets the global rounding mode to the value in *rounding_mode, if valid if (*rounding_mode == BID_ROUNDING_TO_NEAREST || *rounding_mode == BID_ROUNDING_DOWN || *rounding_mode == BID_ROUNDING_UP || *rounding_mode == BID_ROUNDING_TO_ZERO || *rounding_mode == BID_ROUNDING_TIES_AWAY) { rnd_mode = *rounding_mode; } } #endif #else #if !DECIMAL_GLOBAL_ROUNDING // #define _RND_MODE_PARAM , _IDEC_round rnd_mode _IDEC_round bid_setDecimalRoundingDirection (_IDEC_round rounding_mode _RND_MODE_PARAM) { // sets the current rounding mode to the value in rounding_mode; // however, when arguments are passed by value and the rounding mode // is a local variable, this is not of any use if (rounding_mode == BID_ROUNDING_TO_NEAREST || rounding_mode == BID_ROUNDING_DOWN || rounding_mode == BID_ROUNDING_UP || rounding_mode == BID_ROUNDING_TO_ZERO || rounding_mode == BID_ROUNDING_TIES_AWAY) { return (rounding_mode); } return (rnd_mode); } #else // #define _RND_MODE_PARAM // #define rnd_mode _IDEC_glbround void bid_setDecimalRoundingDirection (_IDEC_round rounding_mode) { // sets the current rounding mode to the value in rounding_mode, if valid; if (rounding_mode == BID_ROUNDING_TO_NEAREST || rounding_mode == BID_ROUNDING_DOWN || rounding_mode == BID_ROUNDING_UP || rounding_mode == BID_ROUNDING_TO_ZERO || rounding_mode == BID_ROUNDING_TIES_AWAY) { rnd_mode = rounding_mode; } } #endif #endif #if DECIMAL_CALL_BY_REFERENCE void bid_is754 (int *retval) { *retval = 0; } #else int bid_is754 (void) { return 0; } #endif #if DECIMAL_CALL_BY_REFERENCE void bid_is754R (int *retval) { *retval = 1; } #else int bid_is754R (void) { return 1; } #endif #ifdef BID_MS_FLAGS #include extern unsigned int __bid_flag_mask; unsigned int __bid_ms_restore_flags(unsigned int* pflags) { unsigned int crt_flags, n=0; int_float tmp; crt_flags = _statusfp(); if(crt_flags != *pflags) { _clearfp(); if(crt_flags & _SW_INEXACT) { tmp.i = 0x3f800001; tmp.d *= tmp.d; n |= tmp.i; } if(crt_flags & _SW_UNDERFLOW) { tmp.i = 0x00800001; tmp.d *= tmp.d; n |= tmp.i; } if(crt_flags & _SW_OVERFLOW) { tmp.i = 0x7f000001; tmp.d *= tmp.d; n |= tmp.i; } if(crt_flags & _SW_ZERODIVIDE) { tmp.i = 0x80000000; tmp.d = 1.0/tmp.d; n |= tmp.i; } if(crt_flags & _SW_INVALID) { tmp.i = 0x80000000; tmp.d /= tmp.d; n |= tmp.i; } if(crt_flags & _SW_DENORMAL) { tmp.i = 0x80000001; tmp.d = 1.0+tmp.d; n |= tmp.i; } } n &= __bid_flag_mask; return n; } #endif LIBRARY/src/bid32_atanh.c0000644€­ Q01134020000000673215113665770014070 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_EXTERN_C double log1p(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_atanh, BID_UINT32, x) BID_UINT32 sign_x, coefficient_x, xn, tmp, y; BID_UINT32 valid_x, res, one, one_m_x; double xq, rq; int exponent_x; valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN if ((x & 0x7c000000) == 0x7c000000) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e000000) == 0x7e000000) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK32; BID_RETURN (res); } // x is Infinity? if ((x & 0x78000000) == 0x78000000) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c000000; BID_RETURN (res); } // x is 0 res = sign_x | coefficient_x; BID_RETURN (res); } if(exponent_x <= DECIMAL_EXPONENT_BIAS_32 - 12) { res = x; BID_RETURN (res); } // |x| xn = x & 0x7fffffff; // 1.0 one = 0x32800001ull; // 1 - |x| BIDECIMAL_CALL2 (bid32_sub, one_m_x, one, xn); if(one_m_x & 0x80000000) { // |x|>1 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = 0x7c000000; BID_RETURN (res); } if(!(one_m_x<<(32-23)) && ((one_m_x & SPECIAL_ENCODING_MASK32)!=SPECIAL_ENCODING_MASK32)) { // |x|==1 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif res = sign_x | 0x78000000; BID_RETURN (res); } // (2*|x|)/(1-|x|) BIDECIMAL_CALL2 (bid32_div, tmp, xn, one_m_x); BIDECIMAL_CALL2 (bid32_add, y, tmp, tmp); BIDECIMAL_CALL1 (bid32_to_binary64, xq, y); rq = log1p(xq); rq = rq * (double)0.5; BIDECIMAL_CALL1 (binary64_to_bid32, res, rq); res ^= sign_x; BID_RETURN (res); } LIBRARY/src/bid128_acosh.c0000644€­ Q01134020000001052115113665770014147 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_F128_CONST_DEF( c_log10, 400026bb1bbb5551, 582dd4adac5705a6); // ln(10) BID128_FUNCTION_ARG1 (bid128_acosh, x) BID_UINT128 CX, xn, res, one, z, z2, near_one; BID_UINT64 sign_x; int exponent_x, cmp_res; BID_F128_TYPE rq, xq, yq, rt; // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value_BLE (&sign_x, &exponent_x, &CX, x)) { // test if x is NaN if ((x.w[BID_HIGH_128W] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[BID_HIGH_128W] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = (CX.w[BID_HIGH_128W]) & QUIET_MASK64; res.w[BID_LOW_128W] = CX.w[BID_LOW_128W]; BID_RETURN (res); } // x is Infinity? if ((x.w[BID_HIGH_128W] & 0x7800000000000000ull) == 0x7800000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if (sign_x) // -Inf __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = sign_x? 0x7c00000000000000ull : 0x7800000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } // x is 0 } // calculate asinh(sqrt(x*x-1)) for x near 1 (x<1+1/32 = (10^5 + 5^5)/10^5 ) near_one.w[BID_LOW_128W] = 103125; near_one.w[BID_HIGH_128W] = 0x3036000000000000ull; BIDECIMAL_CALL2_NORND (bid128_quiet_less, cmp_res, x, near_one); if(cmp_res) { // x<1+1/32 one.w[BID_HIGH_128W] = 0x3040000000000000ull; one.w[BID_LOW_128W]=1; BIDECIMAL_CALL2_NORND (bid128_quiet_greater, cmp_res, one, x); if(cmp_res) { // x < 1 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = 0x7c00000000000000ull; res.w[BID_LOW_128W] = 0; BID_RETURN (res); } // -1 one.w[BID_HIGH_128W] = 0xb040000000000000ull; // x*x-1 BIDECIMAL_CALL3(bid128_fma, z2, x, x, one); // sqrt(x*x-1) BIDECIMAL_CALL1 (bid128_sqrt, z, z2); BIDECIMAL_CALL1 (bid128_to_binary128, xq, z); __bid_f128_asinh(rq, xq); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } if(exponent_x > (DECIMAL_EXPONENT_BIAS_128+34)) { bid_get_BID128_very_fast_BLE(&xn, 0, DECIMAL_EXPONENT_BIAS_128, CX); BIDECIMAL_CALL1 (bid128_to_binary128, xq, xn); __bid_f128_add(xq, xq, xq); __bid_f128_itof(yq, exponent_x-DECIMAL_EXPONENT_BIAS_128); __bid_f128_log(rq, xq); __bid_f128_mul(rt, yq, c_log10.v); __bid_f128_add(rq, rq, rt); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } BIDECIMAL_CALL1 (bid128_to_binary128, xq, x); __bid_f128_acosh(rq, xq); BIDECIMAL_CALL1 (binary128_to_bid128, res, rq); BID_RETURN (res); } LIBRARY/src/bid32_minmax.c0000644€­ Q01134020000006773715113665770014302 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32 minimum function - returns greater of two numbers *****************************************************************************/ static const BID_UINT32 bid_mult_factor[7] = { 1, 10, 100, 1000, 10000, 100000, 1000000 }; BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT32, bid32_minnum, BID_UINT32, x, BID_UINT32, y) BID_UINT32 res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0; // check for non-canonical x if ((x & MASK_NAN32) == MASK_NAN32) { // x is NaN x = x & 0xfe0fffff; // clear G6-G10 if ((x & 0x000fffff) > 999999) { x = x & 0xfe000000; // clear G6-G10 and the payload bits } } else if ((x & MASK_INF32) == MASK_INF32) { // check for Infinity x = x & (MASK_SIGN32 | MASK_INF32); } else { // x is not special // check for non-canonical values - treated as zero if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999) { // non-canonical x = (x & MASK_SIGN32) | ((x & MASK_BINARY_EXPONENT2_32) << 2); } // else canonical } // else canonical } // check for non-canonical y if ((y & MASK_NAN32) == MASK_NAN32) { // y is NaN y = y & 0xfe0fffff; // clear G6-G10 if ((y & 0x000fffff) > 999999) { y = y & 0xfe000000; // clear G6-G10 and the payload bits } } else if ((y & MASK_INF32) == MASK_INF32) { // check for Infinity y = y & (MASK_SIGN32 | MASK_INF32); } else { // y is not special // check for non-canonical values - treated as zero if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999) { // non-canonical y = (y & MASK_SIGN32) | ((y & MASK_BINARY_EXPONENT2_32) << 2); } // else canonical } // else canonical } // NaN (CASE1) if ((x & MASK_NAN32) == MASK_NAN32) { // x is NAN if ((x & MASK_SNAN32) == MASK_SNAN32) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x = x & 0xfdffffff; // quietize x res = x; } else { // x is QNaN if ((y & MASK_NAN32) == MASK_NAN32) { // y is NAN if ((y & MASK_SNAN32) == MASK_SNAN32) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y & MASK_NAN32) == MASK_NAN32) { // y is NaN, but x is not if ((y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y = y & 0xfdffffff; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal, return either number if (x == y) { res = x; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // if x is neg infinity, there is no way it is greater than y, return x if (((x & MASK_SIGN32) == MASK_SIGN32)) { res = x; BID_RETURN (res); } // x is pos infinity, return y else { res = y; BID_RETURN (res); } } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so if y is positive infinity, then x is less, return y // if y is negative infinity, then x is greater, return x res = ((y & MASK_SIGN32) == MASK_SIGN32) ? y : x; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); } // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore // ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // ignore the exponent field // (Any non-canonical # is considered 0) if (sig_x == 0) { x_is_zero = 1; } if (sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, neither is greater => return either res = y; BID_RETURN (res); } else if (x_is_zero) { // is x is zero, it is greater if Y is negative res = ((y & MASK_SIGN32) == MASK_SIGN32) ? y : x; BID_RETURN (res); } else if (y_is_zero) { // is y is zero, X is greater if it is positive res = ((x & MASK_SIGN32) != MASK_SIGN32) ? y : x;; BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) == MASK_SIGN32) ? y : x; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32) ? y : x; BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32) ? y : x; BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32) ? y : x; // difference cannot be >10^6 BID_RETURN (res); } // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32) ? y : x; BID_RETURN (res); } // if |exp_x - exp_y|< 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime == sig_y) { res = y; BID_RETURN (res); } res = ((sig_n_prime > sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)) ? y : x; BID_RETURN (res); } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // if postitive, return whichever significand is larger (converse if negative) if (sig_n_prime == sig_x) { res = y; BID_RETURN (res); } res = ((sig_x > sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)) ? y : x; BID_RETURN (res); } /***************************************************************************** * BID32 minimum magnitude function - returns greater of two numbers *****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT32, bid32_minnum_mag, BID_UINT32, x, BID_UINT32, y) BID_UINT32 res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; // check for non-canonical x if ((x & MASK_NAN32) == MASK_NAN32) { // x is NaN x = x & 0xfe0fffff; // clear G6-G10 if ((x & 0x000fffff) > 999999) { x = x & 0xfe000000; // clear G6-G10 and the payload bits } } else if ((x & MASK_INF32) == MASK_INF32) { // check for Infinity x = x & (MASK_SIGN32 | MASK_INF32); } else { // x is not special // check for non-canonical values - treated as zero if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999) { // non-canonical x = (x & MASK_SIGN32) | ((x & MASK_BINARY_EXPONENT2_32) << 2); } // else canonical } // else canonical } // check for non-canonical y if ((y & MASK_NAN32) == MASK_NAN32) { // y is NaN y = y & 0xfe0fffff; // clear G6-G10 if ((y & 0x000fffff) > 999999) { y = y & 0xfe000000; // clear G6-G10 and the payload bits } } else if ((y & MASK_INF32) == MASK_INF32) { // check for Infinity y = y & (MASK_SIGN32 | MASK_INF32); } else { // y is not special // check for non-canonical values - treated as zero if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999) { // non-canonical y = (y & MASK_SIGN32) | ((y & MASK_BINARY_EXPONENT2_32) << 2); } // else canonical } // else canonical } // NaN (CASE1) if ((x & MASK_NAN32) == MASK_NAN32) { // x is NAN if ((x & MASK_SNAN32) == MASK_SNAN32) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x = x & 0xfdffffff; // quietize x res = x; } else { // x is QNaN if ((y & MASK_NAN32) == MASK_NAN32) { // y is NAN if ((y & MASK_SNAN32) == MASK_SNAN32) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y & MASK_NAN32) == MASK_NAN32) { // y is NaN, but x is not if ((y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y = y & 0xfdffffff; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal, return either number if (x == y) { res = x; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // x is infinity, its magnitude is greater than or equal to y // return x only if y is infinity and x is negative res = ((x & MASK_SIGN32) == MASK_SIGN32 && (y & MASK_INF32) == MASK_INF32) ? x : y; BID_RETURN (res); } else if ((y & MASK_INF32) == MASK_INF32) { // y is infinity, then it must be greater in magnitude, return x res = x; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); } // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore // ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // ignore the exponent field // (Any non-canonical # is considered 0) if (sig_x == 0) { res = x; // x_is_zero, its magnitude must be smaller than y BID_RETURN (res); } if (sig_y == 0) { res = y; // y_is_zero, its magnitude must be smaller than x BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = y; BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = x; BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = y; // difference cannot be greater than 10^6 BID_RETURN (res); } // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = x; BID_RETURN (res); } // if |exp_x - exp_y|< 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // now, sig_n_prime has: sig_x * 10^(exp_x-exp_y), this is // the compensated signif. if (sig_n_prime == sig_y) { // two numbers are equal, return minNum(x,y) res = ((y & MASK_SIGN32) == MASK_SIGN32) ? y : x; BID_RETURN (res); } // now, if compensated_x (sig_n_prime) is greater than y, return y, // otherwise return x res = (sig_n_prime > sig_y) ? y : x; BID_RETURN (res); } // exp_y must be greater than exp_x, thus adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; if (sig_n_prime == sig_x) { res = ((y & MASK_SIGN32) == MASK_SIGN32) ? y : x; // two numbers are equal, return either BID_RETURN (res); } res = (sig_x > sig_n_prime) ? y : x; BID_RETURN (res); } /***************************************************************************** * BID32 maximum function - returns greater of two numbers *****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT32, bid32_maxnum, BID_UINT32, x, BID_UINT32, y) BID_UINT32 res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0; // check for non-canonical x if ((x & MASK_NAN32) == MASK_NAN32) { // x is NaN x = x & 0xfe0fffff; // clear G6-G10 if ((x & 0x000fffff) > 999999) { x = x & 0xfe000000; // clear G6-G10 and the payload bits } } else if ((x & MASK_INF32) == MASK_INF32) { // check for Infinity x = x & (MASK_SIGN32 | MASK_INF32); } else { // x is not special // check for non-canonical values - treated as zero if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999) { // non-canonical x = (x & MASK_SIGN32) | ((x & MASK_BINARY_EXPONENT2_32) << 2); } // else canonical } // else canonical } // check for non-canonical y if ((y & MASK_NAN32) == MASK_NAN32) { // y is NaN y = y & 0xfe0fffff; // clear G6-G10 if ((y & 0x000fffff) > 999999) { y = y & 0xfe000000; // clear G6-G10 and the payload bits } } else if ((y & MASK_INF32) == MASK_INF32) { // check for Infinity y = y & (MASK_SIGN32 | MASK_INF32); } else { // y is not special // check for non-canonical values - treated as zero if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999) { // non-canonical y = (y & MASK_SIGN32) | ((y & MASK_BINARY_EXPONENT2_32) << 2); } // else canonical } // else canonical } // NaN (CASE1) if ((x & MASK_NAN32) == MASK_NAN32) { // x is NAN if ((x & MASK_SNAN32) == MASK_SNAN32) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x = x & 0xfdffffff; // quietize x res = x; } else { // x is QNaN if ((y & MASK_NAN32) == MASK_NAN32) { // y is NAN if ((y & MASK_SNAN32) == MASK_SNAN32) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y & MASK_NAN32) == MASK_NAN32) { // y is NaN, but x is not if ((y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y = y & 0xfdffffff; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x == y) { res = x; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // x = +/-infinity // if x is neg infinity, there is no way it is greater than y, return y // x is pos infinity, it is greater, unless y is positive infinity => // return y!=pos_infinity if (((x & MASK_SIGN32) == MASK_SIGN32)) { // x = -infinity res = y; } else { // x = +infinity res = x; } BID_RETURN (res); } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so if y is positive infinity, then x is less, return y // if y is negative infinity, then x is greater, return x res = ((y & MASK_SIGN32) == MASK_SIGN32) ? x : y; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); } // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore // ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // ignore the exponent field // (Any non-canonical # is considered 0) if (sig_x == 0) { x_is_zero = 1; } if (sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, neither is greater => return NOTGREATERTHAN res = y; BID_RETURN (res); } else if (x_is_zero) { // is x is zero, it is greater if Y is negative res = ((y & MASK_SIGN32) == MASK_SIGN32) ? x : y; BID_RETURN (res); } else if (y_is_zero) { // is y is zero, X is greater if it is positive res = ((x & MASK_SIGN32) != MASK_SIGN32) ? x : y;; BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN32) == MASK_SIGN32) { res = ((y & MASK_SIGN32) == MASK_SIGN32) ? x : y; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32) ? x : y; BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32) ? x : y; BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32) ? x : y; // difference cannot be > 10^6 BID_RETURN (res); } // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) == MASK_SIGN32) ? x : y; BID_RETURN (res); } // if |exp_x - exp_y|< 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime == sig_y) { res = y; BID_RETURN (res); } res = ((sig_n_prime > sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32)) ? x : y; BID_RETURN (res); } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // if postitive, return whichever significand is larger (converse if negative) if (sig_n_prime == sig_x) { res = y; BID_RETURN (res); } res = ((sig_x > sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32)) ? x : y; BID_RETURN (res); } /***************************************************************************** * BID32 maximum magnitude function - returns greater of two numbers *****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT32, bid32_maxnum_mag, BID_UINT32, x, BID_UINT32, y) BID_UINT32 res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y; BID_UINT64 sig_n_prime; // check for non-canonical x if ((x & MASK_NAN32) == MASK_NAN32) { // x is NaN x = x & 0xfe0fffff; // clear G6-G10 if ((x & 0x000fffff) > 999999) { x = x & 0xfe000000; // clear G6-G10 and the payload bits } } else if ((x & MASK_INF32) == MASK_INF32) { // check for Infinity x = x & (MASK_SIGN32 | MASK_INF32); } else { // x is not special // check for non-canonical values - treated as zero if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999) { // non-canonical x = (x & MASK_SIGN32) | ((x & MASK_BINARY_EXPONENT2_32) << 2); } // else canonical } // else canonical } // check for non-canonical y if ((y & MASK_NAN32) == MASK_NAN32) { // y is NaN y = y & 0xfe0fffff; // clear G6-G10 if ((y & 0x000fffff) > 999999) { y = y & 0xfe000000; // clear G6-G10 and the payload bits } } else if ((y & MASK_INF32) == MASK_INF32) { // check for Infinity y = y & (MASK_SIGN32 | MASK_INF32); } else { // y is not special // check for non-canonical values - treated as zero if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999) { // non-canonical y = (y & MASK_SIGN32) | ((y & MASK_BINARY_EXPONENT2_32) << 2); } // else canonical } // else canonical } // NaN (CASE1) if ((x & MASK_NAN32) == MASK_NAN32) { // x is NAN if ((x & MASK_SNAN32) == MASK_SNAN32) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x = x & 0xfdffffff; // quietize x res = x; } else { // x is QNaN if ((y & MASK_NAN32) == MASK_NAN32) { // y is NAN if ((y & MASK_SNAN32) == MASK_SNAN32) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y & MASK_NAN32) == MASK_NAN32) { // y is NaN, but x is not if ((y & MASK_SNAN32) == MASK_SNAN32) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y = y & 0xfdffffff; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal, return either number if (x == y) { res = x; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // x is infinity, its magnitude is greater than or equal to y // return y as long as x isn't negative infinity res = ((x & MASK_SIGN32) == MASK_SIGN32 && (y & MASK_INF32) == MASK_INF32) ? y : x; BID_RETURN (res); } else if ((y & MASK_INF32) == MASK_INF32) { // y is infinity, then it must be greater in magnitude res = y; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); } // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore // ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // ignore the exponent field // (Any non-canonical # is considered 0) if (sig_x == 0) { res = y; // x_is_zero, its magnitude must be smaller than y BID_RETURN (res); } if (sig_y == 0) { res = x; // y_is_zero, its magnitude must be smaller than x BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = x; BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = y; BID_RETURN (res); } // if exp_x is 6 greater than exp_y, no need for compensation if (exp_x - exp_y > 6) { res = x; // difference cannot be greater than 10^6 BID_RETURN (res); } // if exp_x is 6 less than exp_y, no need for compensation if (exp_y - exp_x > 6) { res = y; BID_RETURN (res); } // if |exp_x - exp_y|< 6, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // now, sig_n_prime has: sig_x * 10^(exp_x-exp_y), // this is the compensated signif. if (sig_n_prime == sig_y) { // two numbers are equal, return maxNum(x,y) res = ((y & MASK_SIGN32) == MASK_SIGN32) ? x : y; BID_RETURN (res); } // now, if compensated_x (sig_n_prime) is greater than y return y, // otherwise return x res = (sig_n_prime > sig_y) ? x : y; BID_RETURN (res); } // exp_y must be greater than exp_x, thus adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; if (sig_n_prime == sig_x) { res = ((y & MASK_SIGN32) == MASK_SIGN32) ? x : y; // two numbers are equal, return either BID_RETURN (res); } res = (sig_x > sig_n_prime) ? x : y; BID_RETURN (res); } LIBRARY/src/wcstod128.c0000644€­ Q01134020000000450415113665770013543 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_strtod.h" DFP_WRAPFN_TYPE1_TYPE2(128, bid_wcstod128, const wchar_t* RESTRICT , wchar_t** RESTRICT) BID_UINT128 bid_wcstod128(const wchar_t* RESTRICT ps_in, wchar_t** RESTRICT endptr) { char* ps0_c; BID_UINT128 DR; #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS unsigned fpsc=0, *pfpsf=&fpsc; #endif #if !DECIMAL_GLOBAL_ROUNDING unsigned rnd_mode=0; #endif ps0_c = wcstod_conversion(ps_in, endptr); if(!ps0_c) { DR.w[BID_HIGH_128W] = 0x3040000000000000ull; DR.w[BID_LOW_128W] = 0ull; return DR; // 0.0 } BIDECIMAL_CALL1_RESARG (bid128_from_string, DR, (char*)ps0_c); free(ps0_c); return DR; } LIBRARY/src/bid128_atan.c0000644€­ Q01134020000001001015113665770013766 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // -10^-40, used in trivial path static BID_UINT128 BID128_10PM40 = {{ 0x0000000000000001ull, 0xaff0000000000000ull }}; // 1 for dummy canonizing operation static BID_UINT128 BID128_1 = {{ 0x0000000000000001ull, 0x3040000000000000ull }}; BID_F128_CONST_DEF( c_1em40, 3f7a16c262777579, c58c46475896767b); // 1e-40 BID128_FUNCTION_ARG1 (bid128_atan, x) // Declare local variables BID_UINT128 res; BID_F128_TYPE xd, yd, abs_xd; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // Otherwise just do the operation "naively". // // However, we need to handle the case of very small inputs, which can // underflow to zero in quad and incorrectly return zero instead of the // argument. Trap this after conversion and do a crude operation to get // appropriate directed rounding. Deal with zero specially to copy sign. // // Note that for very large decimal128 inputs, the result of conversion // will be infinity. However, since the binary atan function will return // the right answer of pi/2 [zero] in such cases, it hardly seems worth putting // in a special-case check, which will rarely be needed and slows down the // usual cases. BIDECIMAL_CALL1(bid128_to_binary128,xd,x); __bid_f128_fabs(abs_xd, xd); if (__bid_f128_lt(abs_xd, c_1em40.v)) { int zf; BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isZero,zf,x); if (zf) { BIDECIMAL_CALL2(bid128_mul,res,x,BID128_1); } else { BIDECIMAL_CALL3(bid128_fma,res,x,BID128_10PM40,x); } BID_RETURN(res); } else { __bid_f128_atan(yd, xd); BIDECIMAL_CALL1(binary128_to_bid128,res,yd); BID_RETURN(res); } } LIBRARY/src/bid32_tgamma.c0000644€­ Q01134020000001171315113665770014236 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double sin(double); double tgamma(double); #define BID32_NAN 0x7c000000ul #define BID32_SHIFTER 0x329e8480ul #define BID32_INF 0x78000000ul BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_tgamma, BID_UINT32, x) // Declare local variables BID_UINT32 res, x_int, x_frac; double xd, fd, yd; int cmp_res, e; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // If the input is 0, return signed infinity // and raise division by zero BIDECIMAL_CALL1_NORND_NOSTAT(bid32_isZero,cmp_res,x); if (cmp_res) { res = BID32_INF ^ (x & SIGNMASK32); *pfpsf |= BID_ZERO_DIVIDE_EXCEPTION; BID_RETURN (res); } // For infinite inputs, return NaN or infinity BIDECIMAL_CALL1_NORND_NOSTAT(bid32_isInf,cmp_res,x); if (cmp_res) { if ((x & SIGNMASK32) != 0) { res = BID32_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif } else res = BID32_INF; BID_RETURN (res); } // Convert to binary BIDECIMAL_CALL1(bid32_to_binary64,xd,x); // If x >= 1/2 then we're very safe doing the operation naively. // However, separate out very large inputs for appropriate // clamping in directed rounding modes. if (xd >= 0.5) { if (xd >= 700.0) yd = 1e200; else yd = tgamma(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } // Otherwise, even with the huge extra precision, we may need to worry // about the singularities at nonnegative integers. So we use the reflection // formula // // Gamma(x) = pi / (sin (pi * x) * Gamma(1 - x)) // // Form the integer and fractional parts of x, and convert fractional // part to double. BIDECIMAL_CALL1_NORND(bid32_round_integral_nearest_even, x_int, x); BIDECIMAL_CALL2(bid32_sub,x_frac,x,x_int); // If the fractional part is 0, return a NaN BIDECIMAL_CALL1_NORND_NOSTAT(bid32_isZero,cmp_res,x_frac); if (cmp_res) { res = BID32_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } // Otherwise do the main computation in double. BIDECIMAL_CALL1(bid32_to_binary64,fd,x_frac); yd = 3.14159265358979323846 / (sin(3.14159265358979323846 * fd) * tgamma(1.0 - xd)); // If the integer part is odd, negate the result since // sin(pi * x) = -sin(pi * xf) // // To avoid relying on the fact that bid32_round_integral_nearest_even // gives a canonical integer, add a shifter where it might be needed. // If the exponent is -ve then |x| < 10^6, so adding to 2 * 10^6 will // give something with exactly the complement of digits. e = (((x_int & (3ull<<29)) == (3ull<<29)) ? (x_int >> 21) : (x_int >> 23)) & ((1ull<<8)-1); if (e <= 101) { if (e < 101) { BID_UINT32 localshifter = BID32_SHIFTER; BIDECIMAL_CALL2 (bid32_add, x_int, localshifter, x_int); } if (x_int & 1) yd = -yd; } // Convert back and return BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } LIBRARY/src/bid32_noncomp.c0000644€­ Q01134020000007360215113665770014446 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" static const BID_UINT32 bid_mult_factor[7] = { 1, 10, 100, 1000, 10000, 100000, 1000000 }; /***************************************************************************** * BID32 non-computational functions: * - bid32_isSigned * - bid32_isNormal * - bid32_isSubnormal * - bid32_isFinite * - bid32_isZero * - bid32_isInf * - bid32_isSignaling * - bid32_isCanonical * - bid32_isNaN * - bid32_copy * - bid32_negate * - bid32_abs * - bid32_copySign * - bid32_class * - bid32_sameQuantum * - bid32_totalOrder * - bid32_totalOrderMag * - bid32_radix ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_isSigned (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_isSigned, 32) int bid32_isSigned (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // return 1 iff x is not zero, nor NaN nor subnormal nor infinity #if DECIMAL_CALL_BY_REFERENCE void bid32_isNormal (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_isNormal, 32) int bid32_isNormal (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 sig_x_prime; BID_UINT32 sig_x; unsigned int exp_x; if ((x & MASK_INF32) == MASK_INF32) { // x is either INF or NaN res = 0; } else { // decode number into exponent and significand if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; // check for zero or non-canonical if (sig_x > 9999999 || sig_x == 0) { res = 0; // zero or non-canonical BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; } else { sig_x = (x & MASK_BINARY_SIG1_32); if (sig_x == 0) { res = 0; // zero BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; } // if exponent is less than -95, the number may be subnormal // if (exp_x - 101 = -95) the number may be subnormal if (exp_x < 6) { sig_x_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x]; if (sig_x_prime < 1000000ull) { res = 0; // subnormal } else { res = 1; // normal } } else { res = 1; // normal } } BID_RETURN (res); } // return 1 iff x is not zero, NaN, normal, or infinity #if DECIMAL_CALL_BY_REFERENCE void bid32_isSubnormal (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_isSubnormal, 32) int bid32_isSubnormal (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 sig_x_prime; BID_UINT32 sig_x; unsigned int exp_x; if ((x & MASK_INF32) == MASK_INF32) { // x is either INF or NaN res = 0; } else { // decode number into exponent and significand if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; // check for zero or non-canonical if (sig_x > 9999999 || sig_x == 0) { res = 0; // zero or non-canonical BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; } else { sig_x = (x & MASK_BINARY_SIG1_32); if (sig_x == 0) { res = 0; // zero BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; } // if exponent is less than -95, the number may be subnormal // if (exp_x - 101 = -95) the number may be subnormal if (exp_x < 6) { sig_x_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x]; if (sig_x_prime < 1000000ull) { res = 1; // subnormal } else { res = 0; // normal } } else { res = 0; // normal } } BID_RETURN (res); } //iff x is zero, subnormal or normal (not infinity or NaN) #if DECIMAL_CALL_BY_REFERENCE void bid32_isFinite (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_isFinite, 32) int bid32_isFinite (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x & MASK_INF32) != MASK_INF32); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_isZero (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_isZero, 32) int bid32_isZero (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; // if infinity or nan, return 0 if ((x & MASK_INF32) == MASK_INF32) { res = 0; } else if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] // => sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; // if(sig_x > 9999999) {return 1;} res = (((x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) > 9999999); } else { res = ((x & MASK_BINARY_SIG1_32) == 0); } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_isInf (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_isInf, 32) int bid32_isInf (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x & MASK_INF32) == MASK_INF32) && ((x & MASK_NAN32) != MASK_NAN32); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_isSignaling (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_isSignaling, 32) int bid32_isSignaling (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x & MASK_SNAN32) == MASK_SNAN32); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_isCanonical (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_isCanonical, 32) int bid32_isCanonical (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; if ((x & MASK_NAN32) == MASK_NAN32) { // NaN if (x & 0x01f00000) { res = 0; } else if ((x & 0x000fffff) > 999999) { // payload res = 0; } else { res = 1; } } else if ((x & MASK_INF32) == MASK_INF32) { if (x & 0x03ffffff) { res = 0; } else { res = 1; } } else if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // 24-bit res = (((x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32) <= 9999999); } else { // 23-bit coeff. res = 1; } BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_isNaN (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_isNaN, 32) int bid32_isNaN (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; res = ((x & MASK_NAN32) == MASK_NAN32); BID_RETURN (res); } // copies a floating-point operand x to destination y, with no change #if DECIMAL_CALL_BY_REFERENCE void bid32_copy (BID_UINT32 * pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else DFP_WRAPFN_DFP(32, bid32_copy, 32) BID_UINT32 bid32_copy (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 res; res = x; BID_RETURN (res); } // copies a floating-point operand x to destination y, reversing the sign #if DECIMAL_CALL_BY_REFERENCE void bid32_negate (BID_UINT32 * pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else DFP_WRAPFN_DFP(32, bid32_negate, 32) BID_UINT32 bid32_negate (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 res; res = x ^ MASK_SIGN32; BID_RETURN (res); } // copies a floating-point operand x to destination y, changing the sign to positive #if DECIMAL_CALL_BY_REFERENCE void bid32_abs (BID_UINT32 * pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else DFP_WRAPFN_DFP(32, bid32_abs, 32) BID_UINT32 bid32_abs (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 res; res = x & ~MASK_SIGN32; BID_RETURN (res); } // copies operand x to destination in the same format as x, but // with the sign of y DFP_WRAPFN_DFP_DFP(32, bid32_copySign, 32, 32); #if DECIMAL_CALL_BY_REFERENCE void bid32_copySign (BID_UINT32 * pres, BID_UINT32 * px, BID_UINT32 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; BID_UINT32 y = *py; #else BID_UINT32 bid32_copySign (BID_UINT32 x, BID_UINT32 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif BID_UINT32 res; res = (x & ~MASK_SIGN32) | (y & MASK_SIGN32); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_class (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_class, 32) class_t bid32_class (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT64 sig_x_prime; BID_UINT32 sig_x; int exp_x; if ((x & MASK_NAN32) == MASK_NAN32) { // is the NaN signaling? if ((x & MASK_SNAN32) == MASK_SNAN32) { res = signalingNaN; BID_RETURN (res); } // if NaN and not signaling, must be quietNaN res = quietNaN; BID_RETURN (res); } else if ((x & MASK_INF32) == MASK_INF32) { // is the Infinity negative? if ((x & MASK_SIGN32) == MASK_SIGN32) { res = negativeInfinity; } else { // otherwise, must be positive infinity res = positiveInfinity; } BID_RETURN (res); } else if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { // decode number into exponent and significand sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; // check for zero or non-canonical if (sig_x > 9999999 || sig_x == 0) { if ((x & MASK_SIGN32) == MASK_SIGN32) { res = negativeZero; } else { res = positiveZero; } BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; } else { sig_x = (x & MASK_BINARY_SIG1_32); if (sig_x == 0) { res = ((x & MASK_SIGN32) == MASK_SIGN32) ? negativeZero : positiveZero; BID_RETURN (res); } exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; } // if exponent is less than -95, number may be subnormal // if (exp_x - 101 < -95) if (exp_x < 6) { // sig_x *10^exp_x sig_x_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x]; if (sig_x_prime < 1000000ull) { res = ((x & MASK_SIGN32) == MASK_SIGN32) ? negativeSubnormal : positiveSubnormal; BID_RETURN (res); } } // otherwise, normal number, determine the sign res = ((x & MASK_SIGN32) == MASK_SIGN32) ? negativeNormal : positiveNormal; BID_RETURN (res); } // true if the exponents of x and y are the same, false otherwise. // The special cases of sameQuantum (NaN, NaN) and sameQuantum (Inf, Inf) are // true. // If exactly one operand is infinite or exactly one operand is NaN, then false #if DECIMAL_CALL_BY_REFERENCE void bid32_sameQuantum (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; BID_UINT32 y = *py; #else RES_WRAPFN_DFP_DFP(int, bid32_sameQuantum, 32, 32) int bid32_sameQuantum (BID_UINT32 x, BID_UINT32 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; unsigned int exp_x, exp_y; // if both operands are NaN, return true; if just one is NaN, return false if ((x & MASK_NAN32) == MASK_NAN32 || ((y & MASK_NAN32) == MASK_NAN32)) { res = ((x & MASK_NAN32) == MASK_NAN32 && (y & MASK_NAN32) == MASK_NAN32); BID_RETURN (res); } // if both operands are INF, return true; if just one is INF, return false if ((x & MASK_INF32) == MASK_INF32 || (y & MASK_INF32) == MASK_INF32) { res = ((x & MASK_INF32) == MASK_INF32 && (y & MASK_INF32) == MASK_INF32); BID_RETURN (res); } // decode exponents for both numbers, and return true if they match if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; } if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; } res = (exp_x == exp_y); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_totalOrder (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; BID_UINT32 y = *py; #else RES_WRAPFN_DFP_DFP(int, bid32_totalOrder, 32, 32) int bid32_totalOrder (BID_UINT32 x, BID_UINT32 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y, pyld_y, pyld_x; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0; // NaN (CASE1) // if x and y are unordered numerically because either operand is NaN // (1) totalOrder(-NaN, number) is true // (2) totalOrder(number, +NaN) is true // (3) if x and y are both NaN: // i) negative sign bit < positive sign bit // ii) signaling < quiet for +NaN, reverse for -NaN // iii) lesser payload < greater payload for +NaN(reverse for -NaN) // iv) else if bitwise identical (in canonical form), return 1 if ((x & MASK_NAN32) == MASK_NAN32) { // if x is -NaN if ((x & MASK_SIGN32) == MASK_SIGN32) { // return true, unless y is -NaN also if ((y & MASK_NAN32) != MASK_NAN32 || (y & MASK_SIGN32) != MASK_SIGN32) { res = 1; // y is a number, return 1 BID_RETURN (res); } else { // if y and x are both -NaN // if x and y are both -sNaN or both -qNaN, we have to compare payloads // this xnor statement evaluates to true if both are sNaN or qNaN if (!(((y & MASK_SNAN32) == MASK_SNAN32) ^ ((x & MASK_SNAN32) == MASK_SNAN32))) { // it comes down to the payload. we want to return true if x has a // larger payload, or if the payloads are equal (canonical forms // are bitwise identical) pyld_y = y & 0x000fffff; pyld_x = x & 0x000fffff; if (pyld_y > 999999 || pyld_y == 0) { // if y is zero, x must be less than or numerically equal // y's payload is 0 res = 1; BID_RETURN (res); } // if x is zero and y isn't, x has the smaller payload // definitely (since we know y isn't 0 at this point) if (pyld_x > 999999 || pyld_x == 0) { // x's payload is 0 res = 0; BID_RETURN (res); } res = (pyld_x >= pyld_y); BID_RETURN (res); } else { // either x = -sNaN and y = -qNaN or x = -qNaN and y = -sNaN res = (y & MASK_SNAN32) == MASK_SNAN32; // totalOrder(-qNaN,-sNaN)==1 BID_RETURN (res); } } } else { // x is +NaN // return false, unless y is +NaN also if ((y & MASK_NAN32) != MASK_NAN32 || (y & MASK_SIGN32) == MASK_SIGN32) { res = 0; // y is a number, return 1 BID_RETURN (res); } else { // x and y are both +NaN; // must investigate payload if both quiet or both signaling // this xnor statement will be true if both x and y are +qNaN or +sNaN if (!(((y & MASK_SNAN32) == MASK_SNAN32) ^ ((x & MASK_SNAN32) == MASK_SNAN32))) { // it comes down to the payload. we want to return true if x has a // smaller payload, or if the payloads are equal (canonical forms // are bitwise identical) pyld_y = y & 0x000fffff; pyld_x = x & 0x000fffff; // if x is zero and y isn't, x has the smaller // payload definitely (since we know y isn't 0 at this point) if (pyld_x > 999999 || pyld_x == 0) { res = 1; BID_RETURN (res); } if (pyld_y > 999999 || pyld_y == 0) { // if y is zero, x must be less than or numerically equal res = 0; BID_RETURN (res); } res = (pyld_x <= pyld_y); BID_RETURN (res); } else { // return true if y is +qNaN and x is +sNaN // (we know they're different bc of xor if_stmt above) res = ((x & MASK_SNAN32) == MASK_SNAN32); BID_RETURN (res); } } } } else if ((y & MASK_NAN32) == MASK_NAN32) { // x is certainly not NAN in this case. // return true if y is positive res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal. if (x == y) { res = 1; BID_RETURN (res); } // OPPOSITE SIGNS (CASE 3) // if signs are opposite, return 1 if x is negative // (if xy res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999 || sig_x == 0) { x_is_zero = 1; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); if (sig_x == 0) { x_is_zero = 1; } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999 || sig_y == 0) { y_is_zero = 1; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); if (sig_y == 0) { y_is_zero = 1; } } // ZERO (CASE 5) // if x and y represent the same entities, and // both are negative , return true iff exp_x <= exp_y if (x_is_zero && y_is_zero) { // the signs are the same: // totalOrder(x,y) iff exp_x >= exp_y for negative numbers // totalOrder(x,y) iff exp_x <= exp_y for positive numbers if (exp_x == exp_y) { res = 1; BID_RETURN (res); } res = (exp_x <= exp_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if x is zero and y isn't, clearly x has the smaller payload. if (x_is_zero) { res = ((y & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if y is zero, and x isn't, clearly y has the smaller payload. if (y_is_zero) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 greater than exp_y, it is // definitely larger, so no need for compensation if (exp_x - exp_y > 6) { // difference cannot be greater than 10^6 res = ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if exp_x is 6 less than exp_y, it is // definitely smaller, no need for compensation if (exp_y - exp_x > 6) { res = ((x & MASK_SIGN32) != MASK_SIGN32); BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down // to the compensated significand if (exp_x > exp_y) { // otherwise adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // if x and y represent the same entities, // and both are negative, return true iff exp_x <= exp_y if (sig_n_prime == (BID_UINT64)sig_y) { // case cannot occur, because all bits must // be the same - would have been caught if (x==y) res = (exp_x <= exp_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // if positive, return 1 if adjusted x is smaller than y res = (sig_n_prime < (BID_UINT64)sig_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // if x and y represent the same entities, // and both are negative, return true iff exp_x <= exp_y if (sig_n_prime == (BID_UINT64)sig_x) { // Cannot occur, because all bits must be the same. // Case would have been caught if (x==y) res = (exp_x <= exp_y) ^ ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // values are not equal, for positive numbers return 1 // if x is less than y. 0 otherwise res = ((BID_UINT64)sig_x < sig_n_prime) ^ ((x & MASK_SIGN32) == MASK_SIGN32); BID_RETURN (res); } // totalOrderMag is TotalOrder(abs(x), abs(y)) #if DECIMAL_CALL_BY_REFERENCE void bid32_totalOrderMag (int *pres, BID_UINT32 * px, BID_UINT32 * py _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; BID_UINT32 y = *py; #else RES_WRAPFN_DFP_DFP(int, bid32_totalOrderMag, 32, 32) int bid32_totalOrderMag (BID_UINT32 x, BID_UINT32 y _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; int exp_x, exp_y; BID_UINT32 sig_x, sig_y, pyld_y, pyld_x; BID_UINT64 sig_n_prime; char x_is_zero = 0, y_is_zero = 0; // NaN (CASE 1) // if x and y are unordered numerically because either operand is NaN // (1) totalOrder(number, +NaN) is true // (2) if x and y are both NaN: // i) signaling < quiet for +NaN // ii) lesser payload < greater payload for +NaN // iii) else if bitwise identical (in canonical form), return 1 if ((x & MASK_NAN32) == MASK_NAN32) { // x is +NaN // return false, unless y is +NaN also if ((y & MASK_NAN32) != MASK_NAN32) { res = 0; // y is a number, return 1 BID_RETURN (res); } else { // x and y are both +NaN; // must investigate payload if both quiet or both signaling // this xnor statement will be true if both x and y are +qNaN or +sNaN if (!(((y & MASK_SNAN32) == MASK_SNAN32) ^ ((x & MASK_SNAN32) == MASK_SNAN32))) { // it comes down to the payload. we want to return true if x has a // smaller payload, or if the payloads are equal (canonical forms // are bitwise identical) pyld_y = y & 0x000fffff; pyld_x = x & 0x000fffff; // if x is zero and y isn't, x has the smaller // payload definitely (since we know y isn't 0 at this point) if (pyld_x > 999999 || pyld_x == 0) { res = 1; BID_RETURN (res); } if (pyld_y > 999999 || pyld_y == 0) { // if y is zero, x must be less than or numerically equal res = 0; BID_RETURN (res); } res = (pyld_x <= pyld_y); BID_RETURN (res); } else { // return true if y is +qNaN and x is +sNaN // (we know they're different bc of xor if_stmt above) res = ((x & MASK_SNAN32) == MASK_SNAN32); BID_RETURN (res); } } } else if ((y & MASK_NAN32) == MASK_NAN32) { // x is certainly not NAN in this case. // return true if y is positive res = 1; BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits (except sign bit) are the same, // these numbers are equal. if ((x & ~MASK_SIGN32) == (y & ~MASK_SIGN32)) { res = 1; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF32) == MASK_INF32) { // x is positive infinity; return 1 only // if y is positive infinity as well res = ((y & MASK_INF32) == MASK_INF32); BID_RETURN (res); } else if ((y & MASK_INF32) == MASK_INF32) { // x is finite, so: // if y is +inf, x> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_x > 9999999 || sig_x == 0) { x_is_zero = 1; sig_x = 0; } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); if (sig_x == 0) { x_is_zero = 1; sig_x = 0; } } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] if ((y & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_y = (y & MASK_BINARY_EXPONENT2_32) >> 21; sig_y = (y & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (sig_y > 9999999 || sig_y == 0) { y_is_zero = 1; sig_y = 0; } } else { exp_y = (y & MASK_BINARY_EXPONENT1_32) >> 23; sig_y = (y & MASK_BINARY_SIG1_32); if (sig_y == 0) { y_is_zero = 1; sig_y = 0; } } // ZERO (CASE 5) // if x and y represent the same entities, // and both are negative , return true iff exp_x <= exp_y if (x_is_zero && y_is_zero) { // totalOrder(x,y) iff exp_x <= exp_y for positive numbers res = (exp_x <= exp_y); BID_RETURN (res); } // if x is zero and y isn't, clearly x has the smaller payload. if (x_is_zero) { res = 1; BID_RETURN (res); } // if y is zero, and x isn't, clearly y has the smaller payload. if (y_is_zero) { res = 0; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller if (sig_x > sig_y && exp_x >= exp_y) { res = 0; BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = 1; BID_RETURN (res); } // if exp_x is 6 greater than exp_y, it is definitely // larger, so no need for compensation if (exp_x - exp_y > 6) { res = 0; // difference cannot be greater than 10^6 BID_RETURN (res); } // if exp_x is 6 less than exp_y, it is definitely // smaller, no need for compensation if (exp_y - exp_x > 6) { res = 1; BID_RETURN (res); } // if |exp_x - exp_y| < 6, it comes down // to the compensated significand if (exp_x > exp_y) { // adjust the x significand upwards sig_n_prime = (BID_UINT64)sig_x * (BID_UINT64)bid_mult_factor[exp_x - exp_y]; // if x and y represent the same entities // and both are negative, return true iff exp_x <= exp_y if (sig_n_prime == (BID_UINT64)sig_y) { // case cannot occur, because all bits // must be the same - would have been caught if (x==y) res = 0; // res = (exp_x <= exp_y); but 0 < exp_x - exp_y <= 5 BID_RETURN (res); } // if positive, return 1 if adjusted x is smaller than y res = (sig_n_prime < (BID_UINT64)sig_y); BID_RETURN (res); } // from this point on -5 <= exp_x - exp_y <= 0 // adjust the y significand upwards sig_n_prime = (BID_UINT64)sig_y * (BID_UINT64)bid_mult_factor[exp_y - exp_x]; // if x and y represent the same entities, // and both are negative, return true iff exp_x <= exp_y if (sig_n_prime == (BID_UINT64)sig_x) { res = 1; // res = (exp_x <= exp_y); but -5 <= exp_x - exp_y <= 0 BID_RETURN (res); } // values are not equal, for positive numbers // return 1 if x is less than y, and 0 otherwise res = ((BID_UINT64)sig_x < sig_n_prime); BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_radix (int *pres, BID_UINT32 * px _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_radix, 32) int bid32_radix (BID_UINT32 x _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; if (x) // dummy test res = 10; else res = 10; BID_RETURN (res); } #if DECIMAL_CALL_BY_REFERENCE void bid32_inf (BID_UINT32 *pres) { #else BID_UINT32 bid32_inf (void) { #endif BID_UINT32 res; res = 0x78000000; // + inf BID_RETURN(res); } DFP_WRAPFN_OTHERTYPE(32, bid32_nan, const char *); #if DECIMAL_CALL_BY_REFERENCE void bid32_nan (BID_UINT32 *pres, const char *tagp) { #else BID_UINT32 bid32_nan (const char *tagp) { #endif BID_UINT32 res, x; #if !DECIMAL_GLOBAL_ROUNDING unsigned int rnd_mode = BID_ROUNDING_TO_NEAREST; #endif #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS unsigned int fpsf; unsigned int *pfpsf = &fpsf; #endif res = 0x7c000000; // +QNaN if (!tagp) BID_RETURN(res); #if DECIMAL_CALL_BY_REFERENCE bid32_from_string (&x, (char *)tagp _RND_MODE_ARG _EXC_FLAGS_ARG); #else x = bid32_from_string ((char *)tagp _RND_MODE_ARG _EXC_FLAGS_ARG); #endif x = x & 0x000fffff; // valid values fit in 20 bits res = res | x; BID_RETURN(res); } LIBRARY/src/bid64_fma.c0000644€­ Q01134020000003665315113665770013552 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /***************************************************************************** * BID64 fma ***************************************************************************** * * Algorithm description: * * if multiplication is guranteed exact (short coefficients) * call the unpacked arg. equivalent of bid64_add(x*y, z) * else * get full coefficient_x*coefficient_y product * call subroutine to perform addition of 64-bit argument * to 128-bit product * ****************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_inline_add.h" #if DECIMAL_CALL_BY_REFERENCE BID_EXTERN_C void bid64_mul (BID_UINT64 * pres, BID_UINT64 * px, BID_UINT64 * py _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); #else BID_EXTERN_C BID_UINT64 bid64_mul (BID_UINT64 x, BID_UINT64 y _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM); #endif BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_ARGTYPE3(BID_UINT64, bid64_fma, BID_UINT64, x, BID_UINT64, y, BID_UINT64, z) BID_UINT128 P, CT, CZ; #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING BID_UINT128 PU; #endif BID_UINT64 sign_x, sign_y, coefficient_x, coefficient_y, sign_z, coefficient_z; BID_UINT64 C64, remainder_y, res; BID_UINT64 CYh, CY0L, T, valid_x, valid_y, valid_z; int_double tempx, tempy; int extra_digits, exponent_x, exponent_y, bin_expon_cx, bin_expon_cy, bin_expon_product; #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING int rmode; #endif int digits_p, bp, final_exponent, exponent_z, digits_z, ez, ey, scale_z, uf_status; BID_OPT_SAVE_BINARY_FLAGS() valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID64 (&sign_y, &exponent_y, &coefficient_y, y); valid_z = unpack_BID64 (&sign_z, &exponent_z, &coefficient_z, z); // unpack arguments, check for NaN, Infinity, or 0 if (!valid_x || !valid_y || !valid_z) { if ((y & MASK_NAN) == MASK_NAN) { // y is NAN // if x = {0, f, inf, NaN}, y = NaN, z = {0, f, inf, NaN} then res = Q (y) // check first for non-canonical NaN payload y = y & 0xfe03ffffffffffffull; // clear G6-G12 if ((y & 0x0003ffffffffffffull) > 999999999999999ull) { y = y & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } if ((y & MASK_SNAN) == MASK_SNAN) { // y is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (y) res = y & 0xfdffffffffffffffull; } else { // y is QNaN // return y res = y; // if z = SNaN or x = SNaN signal invalid exception if ((z & MASK_SNAN) == MASK_SNAN || (x & MASK_SNAN) == MASK_SNAN) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } } BID_RETURN (res) } else if ((z & MASK_NAN) == MASK_NAN) { // z is NAN // if x = {0, f, inf, NaN}, y = {0, f, inf}, z = NaN then res = Q (z) // check first for non-canonical NaN payload z = z & 0xfe03ffffffffffffull; // clear G6-G12 if ((z & 0x0003ffffffffffffull) > 999999999999999ull) { z = z & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } if ((z & MASK_SNAN) == MASK_SNAN) { // z is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (z) res = z & 0xfdffffffffffffffull; } else { // z is QNaN // return z res = z; // if x = SNaN signal invalid exception if ((x & MASK_SNAN) == MASK_SNAN) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; } } BID_RETURN (res) } else if ((x & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, y = {0, f, inf}, z = {0, f, inf} then res = Q (x) // check first for non-canonical NaN payload x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & 0x0003ffffffffffffull) > 999999999999999ull) { x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } if ((x & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res = x & 0xfdffffffffffffffull; } else { // x is QNaN // return x res = x; // clear out G[6]-G[16] } BID_RETURN (res) } if (!valid_x) { // x is Inf. or 0 // x is Infinity? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if y is 0 if (!coefficient_y) { // y==0, return NaN #ifdef BID_SET_STATUS_FLAGS if ((z & 0x7e00000000000000ull) != 0x7c00000000000000ull) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (0x7c00000000000000ull); } // test if z is Inf of oposite sign if (((z & 0x7c00000000000000ull) == 0x7800000000000000ull) && (((x ^ y) ^ z) & 0x8000000000000000ull)) { // return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (0x7c00000000000000ull); } // otherwise return +/-Inf BID_RETURN (((x ^ y) & 0x8000000000000000ull) | 0x7800000000000000ull); } // x is 0 if (((y & 0x7800000000000000ull) != 0x7800000000000000ull) && ((z & 0x7800000000000000ull) != 0x7800000000000000ull)) { if (coefficient_z) { exponent_y = exponent_x - DECIMAL_EXPONENT_BIAS + exponent_y; sign_z = z & 0x8000000000000000ull; if (exponent_y >= exponent_z) BID_RETURN (z); res = add_zero64 (exponent_y, sign_z, exponent_z, coefficient_z, &rnd_mode, pfpsf); BID_RETURN (res); } } } if (!valid_y) { // y is Inf. or 0 // y is Infinity? if ((y & 0x7800000000000000ull) == 0x7800000000000000ull) { // check if x is 0 if (!coefficient_x) { // y==0, return NaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (0x7c00000000000000ull); } // test if z is Inf of oposite sign if (((z & 0x7c00000000000000ull) == 0x7800000000000000ull) && (((x ^ y) ^ z) & 0x8000000000000000ull)) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // return NaN BID_RETURN (0x7c00000000000000ull); } // otherwise return +/-Inf BID_RETURN (((x ^ y) & 0x8000000000000000ull) | 0x7800000000000000ull); } // y is 0 if (((z & 0x7800000000000000ull) != 0x7800000000000000ull)) { if (coefficient_z) { exponent_y += exponent_x - DECIMAL_EXPONENT_BIAS; sign_z = z & 0x8000000000000000ull; if (exponent_y >= exponent_z) BID_RETURN (z); res = add_zero64 (exponent_y, sign_z, exponent_z, coefficient_z, &rnd_mode, pfpsf); BID_RETURN (res); } } } if (!valid_z) { // y is Inf. or 0 // test if y is NaN/Inf if ((z & 0x7800000000000000ull) == 0x7800000000000000ull) { BID_RETURN (coefficient_z & QUIET_MASK64); } // z is 0, return x*y if ((!coefficient_x) || (!coefficient_y)) { //0+/-0 exponent_x += exponent_y - DECIMAL_EXPONENT_BIAS; if (exponent_x > DECIMAL_MAX_EXPON_64) exponent_x = DECIMAL_MAX_EXPON_64; else if (exponent_x < 0) exponent_x = 0; if (exponent_x <= exponent_z) res = ((BID_UINT64) exponent_x) << 53; else res = ((BID_UINT64) exponent_z) << 53; if ((sign_x ^ sign_y) == sign_z) res |= sign_z; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST else if (rnd_mode == BID_ROUNDING_DOWN) res |= 0x8000000000000000ull; #endif #endif BID_RETURN (res); } } } /* get binary coefficients of x and y */ //--- get number of bits in the coefficients of x and y --- // version 2 (original) tempx.d = (double) coefficient_x; bin_expon_cx = ((tempx.i & MASK_BINARY_EXPONENT) >> 52); tempy.d = (double) coefficient_y; bin_expon_cy = ((tempy.i & MASK_BINARY_EXPONENT) >> 52); // magnitude estimate for coefficient_x*coefficient_y is // 2^(unbiased_bin_expon_cx + unbiased_bin_expon_cx) bin_expon_product = bin_expon_cx + bin_expon_cy; // check if coefficient_x*coefficient_y<2^(10*k+3) // equivalent to unbiased_bin_expon_cx + unbiased_bin_expon_cx < 10*k+1 if (bin_expon_product < UPPER_EXPON_LIMIT + 2 * BINARY_EXPONENT_BIAS) { // easy multiply C64 = coefficient_x * coefficient_y; final_exponent = exponent_x + exponent_y - DECIMAL_EXPONENT_BIAS; if ((final_exponent > 0) || (!coefficient_z)) { res = bid_get_add64 (sign_x ^ sign_y, final_exponent, C64, sign_z, exponent_z, coefficient_z, rnd_mode, pfpsf); BID_RETURN (res); } else { P.w[0] = C64; P.w[1] = 0; extra_digits = 0; } } else { if (!coefficient_z) { #if DECIMAL_CALL_BY_REFERENCE bid64_mul (&res, &x, &y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #else res = bid64_mul (x, y _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG); #endif BID_RETURN (res); } // get 128-bit product: coefficient_x*coefficient_y __mul_64x64_to_128 (P, coefficient_x, coefficient_y); // tighten binary range of P: leading bit is 2^bp // unbiased_bin_expon_product <= bp <= unbiased_bin_expon_product+1 bin_expon_product -= 2 * BINARY_EXPONENT_BIAS; __tight_bin_range_128 (bp, P, bin_expon_product); // get number of decimal digits in the product digits_p = bid_estimate_decimal_digits[bp]; if (!(__unsigned_compare_gt_128 (bid_power10_table_128[digits_p], P))) digits_p++; // if bid_power10_table_128[digits_p] <= P // determine number of decimal digits to be rounded out extra_digits = digits_p - MAX_FORMAT_DIGITS; final_exponent = exponent_x + exponent_y + extra_digits - DECIMAL_EXPONENT_BIAS; } if (((unsigned) final_exponent) >= 3 * 256) { if (final_exponent < 0) { //--- get number of bits in the coefficients of z --- tempx.d = (double) coefficient_z; bin_expon_cx = ((tempx.i & MASK_BINARY_EXPONENT) >> 52) - 0x3ff; // get number of decimal digits in the coeff_x digits_z = bid_estimate_decimal_digits[bin_expon_cx]; if (coefficient_z >= bid_power10_table_128[digits_z].w[0]) digits_z++; // underflow if ((final_exponent + 16 < 0) || (exponent_z + digits_z > 33 + final_exponent)) { res = BID_normalize (sign_z, exponent_z, coefficient_z, sign_x ^ sign_y, 1, rnd_mode, pfpsf); BID_RETURN (res); } ez = exponent_z + digits_z - 16; if (ez < 0) ez = 0; scale_z = exponent_z - ez; coefficient_z *= bid_power10_table_128[scale_z].w[0]; ey = final_exponent - extra_digits; extra_digits = ez - ey; if (extra_digits > 17) { CYh = __truncate (P, 16); // get remainder T = bid_power10_table_128[16].w[0]; __mul_64x64_to_64 (CY0L, CYh, T); remainder_y = P.w[0] - CY0L; extra_digits -= 16; P.w[0] = CYh; P.w[1] = 0; } else remainder_y = 0; // align coeff_x, CYh __mul_64x64_to_128 (CZ, coefficient_z, bid_power10_table_128[extra_digits].w[0]); if (sign_z == (sign_y ^ sign_x)) { __add_128_128 (CT, CZ, P); if (__unsigned_compare_ge_128 (CT, bid_power10_table_128[16 + extra_digits])) { extra_digits++; ez++; } } else { if (remainder_y && (__unsigned_compare_ge_128 (CZ, P))) { P.w[0]++; if (!P.w[0]) P.w[1]++; } __sub_128_128 (CT, CZ, P); if (((BID_SINT64) CT.w[1]) < 0) { sign_z = sign_y ^ sign_x; CT.w[0] = 0 - CT.w[0]; CT.w[1] = 0 - CT.w[1]; if (CT.w[0]) CT.w[1]--; } else if(!(CT.w[1]|CT.w[0])) sign_z = (rnd_mode!=BID_ROUNDING_DOWN)? 0: 0x8000000000000000ull; if (ez && (__unsigned_compare_gt_128 (bid_power10_table_128[15 + extra_digits], CT))) { extra_digits--; ez--; } } #ifdef BID_SET_STATUS_FLAGS uf_status = 0; if ((!ez) && __unsigned_compare_gt_128 (bid_power10_table_128 [extra_digits + 15], CT)) { #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING rmode = rnd_mode; if (sign_z && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; PU = bid_power10_table_128[extra_digits + 15]; PU.w[0]--; if (__unsigned_compare_gt_128 (PU, CT) || (rmode == BID_ROUNDING_DOWN) || (rmode == BID_ROUNDING_TO_ZERO)) uf_status = BID_UNDERFLOW_EXCEPTION; else if (extra_digits < 2) { if ((rmode == BID_ROUNDING_UP)) { if (!extra_digits) uf_status = BID_UNDERFLOW_EXCEPTION; else { if (remainder_y && (sign_z != (sign_y ^ sign_x))) remainder_y = bid_power10_table_128[16].w[0] - remainder_y; if (bid_power10_table_128[15].w[0] > remainder_y) uf_status = BID_UNDERFLOW_EXCEPTION; } } else // RN or RN_away { if (remainder_y && (sign_z != (sign_y ^ sign_x))) remainder_y = bid_power10_table_128[16].w[0] - remainder_y; if (!extra_digits) { remainder_y += bid_round_const_table[rmode][15]; if (remainder_y < bid_power10_table_128[16].w[0]) uf_status = BID_UNDERFLOW_EXCEPTION; } else { if (remainder_y < bid_round_const_table[rmode][16]) uf_status = BID_UNDERFLOW_EXCEPTION; } } //__set_status_flags (pfpsf, uf_status); } #else // DECIMAL_TINY_DETECTION_AFTER_ROUNDING uf_status = BID_UNDERFLOW_EXCEPTION; #endif } #endif res = __bid_full_round64_remainder (sign_z, ez - extra_digits, CT, extra_digits, remainder_y, rnd_mode, pfpsf, uf_status); BID_RETURN (res); } else { if ((sign_z == (sign_x ^ sign_y)) || (final_exponent > 3 * 256 + 15)) { res = fast_get_BID64_check_OF (sign_x ^ sign_y, final_exponent, 1000000000000000ull, rnd_mode, pfpsf); BID_RETURN (res); } } } if (extra_digits > 0) { res = bid_get_add128 (sign_z, exponent_z, coefficient_z, sign_x ^ sign_y, final_exponent, P, extra_digits, rnd_mode, pfpsf); BID_RETURN (res); } // go to convert_format and exit else { C64 = __low_64 (P); res = bid_get_add64 (sign_x ^ sign_y, exponent_x + exponent_y - DECIMAL_EXPONENT_BIAS, C64, sign_z, exponent_z, coefficient_z, rnd_mode, pfpsf); BID_RETURN (res); } } LIBRARY/src/bid_feclearexcept.c0000644€­ Q01134020000000376615113665770015446 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" void bid_feclearexcept( int excepts _EXC_FLAGS_PARAM ) { _IDEC_flags new_sw; /* Take only supported exceptions */ excepts &= DEC_FE_ALL_EXCEPT; if (excepts) { /* Do we have anyting to do? */ new_sw = get_bid_sw() & ~excepts; // set BID status word set_bid_sw(new_sw); } } LIBRARY/src/bid128_lround.c0000644€­ Q01134020000000510515113665770014357 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID128_lroundd ****************************************************************************/ /* DESCRIPTION: The lround function rounds its argument to the nearest integer value of type long int, using rounding to nearest-away RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid */ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE(long int, bid128_lround, x) #if BID_SIZE_LONG==4 BID_SINT32 res; BIDECIMAL_CALL1_NORND (bid128_to_int32_rninta, res, x); #else // if BID_SIZE_LONG==8 BID_SINT64 res; BIDECIMAL_CALL1_NORND (bid128_to_int64_rninta, res, x); #endif BID_RETURN ((long int)res); } LIBRARY/src/bid128_quantexpd.c0000644€­ Q01134020000000457115113665770015073 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" /***************************************************************************** * BID128_quantexpd ****************************************************************************/ /* Exceptions signaled: invalid */ BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE(int, bid128_quantexp, x) int res; // quantum if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; res = 0x80000000; BID_RETURN_VAL (res); } if ((x.w[1] & MASK_STEERING_BITS) == MASK_STEERING_BITS) res = (int)((x.w[1] >> 47) & 0x3fff) - 6176; else res = ((int)(x.w[1] >> 49) & 0x3fff) - 6176; BID_RETURN_VAL (res); } LIBRARY/src/bid32_llrintd.c0000644€­ Q01134020000000571315113665770014443 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_llrint ****************************************************************************/ /* DESCRIPTION: The llrint function rounds its argument to the nearest integer value of type long long int, rounding according to the current rounding direction. RETURN VALUE: If the rounded value is outside the range of the return type or the argument is infinity or NaN, the result is the largest negative value and the invalid exception is signaled EXCEPTIONS SIGNALED: invalid and inexact */ BID_RESTYPE0_FUNCTION_ARGTYPE1(long long int, bid32_llrint, BID_UINT32, x) long long int res; // assume sizeof (long long) = 8 if (rnd_mode == BID_ROUNDING_TO_NEAREST) BIDECIMAL_CALL1_NORND (bid32_to_int64_xrnint, res, x); else if (rnd_mode == BID_ROUNDING_TIES_AWAY) BIDECIMAL_CALL1_NORND (bid32_to_int64_xrninta, res, x); else if (rnd_mode == BID_ROUNDING_DOWN) BIDECIMAL_CALL1_NORND (bid32_to_int64_xfloor, res, x); else if (rnd_mode == BID_ROUNDING_UP) BIDECIMAL_CALL1_NORND (bid32_to_int64_xceil, res, x); else // if (rnd_mode == BID_ROUNDING_TO_ZERO) BIDECIMAL_CALL1_NORND (bid32_to_int64_xint, res, x); BID_RETURN (res); } LIBRARY/src/bid32_to_uint32.c0000644€­ Q01134020000021566515113665770014632 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_to_uint32_rnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint32_rnint (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid32_to_uint32_rnint, 32) unsigned int bid32_to_uint32_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^32-1/2 // <=> C * 10^(11-q) >= 0x9fffffffb, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffffb has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32 if -1/2 <= n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if ((BID_UINT64)C1 <= bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // n > 0 res = 0x00000001; // return +1 } } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^32-1/2 <= x <= -1 or 1 <= x < 2^32-1/2 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32-1/2 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint32_xrnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint32_xrnint (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid32_to_uint32_xrnint, 32) unsigned int bid32_to_uint32_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^32-1/2 // <=> C * 10^(11-q) >= 0x9fffffffb, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffffb has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32 if -1/2 <= n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if ((BID_UINT64)C1 <= bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // n > 0 res = 0x00000001; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^32-1/2 <= x <= -1 or 1 <= x < 2^32-1/2 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32-1/2 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint32_floor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint32_floor (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid32_to_uint32_floor, 32) unsigned int bid32_to_uint32_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero if (x_sign) { // if n < 0 the conversion is invalid // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' // n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^32 // <=> C * 10^(11-q) >= 0xa00000000, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0xa00000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // 1 <= x < 2^32 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint32_xfloor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint32_xfloor (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid32_to_uint32_xfloor, 32) unsigned int bid32_to_uint32_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero if (x_sign) { // if n < 0 the conversion is invalid // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' // if n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^32 // <=> C * 10^(11-q) >= 0xa00000000, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0xa00000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // 1 <= x < 2^32 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint32_ceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint32_ceil (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid32_to_uint32_ceil, 32) unsigned int bid32_to_uint32_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n > 2^32 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^32 - 1 // <=> C * 10^(11-q) > 0x9fffffff6, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffff6 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 > 0x9fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // x <= -1 or 1 <= x <= 2^32 - 1 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x <= 2^32 - 1 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint32_xceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint32_xceil (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid32_to_uint32_xceil, 32) unsigned int bid32_to_uint32_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n > 2^32 - 1 then n is too large // too large if c(0)c(1)...c(9).c(10)...c(q-1) > 2^32 - 1 // <=> C * 10^(11-q) > 0x9fffffff6, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffff6 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 > 0x9fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // x <= -1 or 1 <= x < 2^32 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] Cstar++; // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint32_int ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint32_int (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid32_to_uint32_int, 32) unsigned int bid32_to_uint32_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^32 // <=> C * 10^(11-q) >= 0xa00000000, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0xa00000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // x <= -1 or 1 <= x < 2^32 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint32_xint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint32_xint (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid32_to_uint32_xint, 32) unsigned int bid32_to_uint32_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^32 // <=> C * 10^(11-q) >= 0xa00000000, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0xa00000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 >= 0xa00000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32 if -1 < n < 2^32 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // x <= -1 or 1 <= x < 2^32 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 64 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint32_rninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint32_rninta (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid32_to_uint32_rninta, 32) unsigned int bid32_to_uint32_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^32-1/2 // <=> C * 10^(11-q) >= 0x9fffffffb, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffffb has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32 if -1/2 < n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (C1 < bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // n > 0 res = 0x00000001; // return +1 } } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^32-1/2 <= x <= -1 or 1 <= x < 2^32-1/2 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32-1/2 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } /***************************************************************************** * BID32_to_uint32_xrninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_uint32_xrninta (unsigned int *pres, BID_UINT32 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(unsigned int, bid32_to_uint32_xrninta, 32) unsigned int bid32_to_uint32_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif unsigned int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 16 decimal digits ~ 54 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in an unsigned 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 then x is much less than -1/2 // => set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // if n > 0 and q + exp = 10 // if n >= 2^32 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^32-1/2 // <=> C * 10^(11-q) >= 0x9fffffffb, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x9fffffffb has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 >= 0x9fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit unsigned int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32 if -1/2 < n < 2^32 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) < 0.5 <=> c(0)c(1)...c(q-1) < 5 * 10^(q-1) // res = 0 // else if x > 0 // res = +1 // else // if x < 0 // invalid exc ind = q - 1; if (C1 < bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else { // n > 0 res = 0x00000001; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^32-1/2 <= x <= -1 or 1 <= x < 2^32-1/2 so if positive, x can be // rounded to nearest to a 32-bit unsigned integer if (x_sign) { // x <= -1 // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // 1 <= x < 2^32-1/2 so x can be rounded // to nearest to a 32-bit unsigned integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 64 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 54 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { // fstar.w[1] is 0 if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero res = Cstar; // the result is positive } else if (exp == 0) { // 1 <= q <= 10 // res = +C (exact) res = C1; // the result is positive } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +C * 10^exp (exact) res = C1 * bid_ten2k64[exp]; // the result is positive } } BID_RETURN (res); } LIBRARY/src/bid32_mul.c0000644€­ Q01134020000001567115113665770013574 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" BID_TYPE_FUNCTION_ARG2(BID_UINT32, bid32_mul, x, y) BID_UINT128 Tmp; BID_UINT64 P, Q, R; BID_UINT32 sign_x, sign_y, coefficient_x, coefficient_y, res; BID_UINT32 valid_x, valid_y; int exponent_x, exponent_y, bin_expon_p, amount, n_digits, extra_digits, status, rmode; int_double tempx; valid_x = unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x); valid_y = unpack_BID32 (&sign_y, &exponent_y, &coefficient_y, y); // unpack arguments, check for NaN or Infinity if (!valid_x) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK32) == SNAN_MASK32) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // x is Inf. or NaN // test if x is NaN if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (coefficient_x & QUIET_MASK32); } // x is Infinity? if ((x & INFINITY_MASK32) == INFINITY_MASK32) { // check if y is 0 if (((y & INFINITY_MASK32) != INFINITY_MASK32) && !coefficient_y) { #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // y==0 , return NaN BID_RETURN (NAN_MASK32); } // check if y is NaN if ((y & NAN_MASK32) == NAN_MASK32) // y==NaN , return NaN BID_RETURN (coefficient_y & QUIET_MASK32); // otherwise return +/-Inf BID_RETURN (((x ^ y) & 0x80000000) | INFINITY_MASK32); } // x is 0 if (((y & INFINITY_MASK32) != INFINITY_MASK32)) { if ((y & SPECIAL_ENCODING_MASK32) == SPECIAL_ENCODING_MASK32) exponent_y = ((BID_UINT32) (y >> 21)) & 0xff; else exponent_y = ((BID_UINT32) (y >> 23)) & 0xff; sign_y = y & 0x80000000; exponent_x += exponent_y - DECIMAL_EXPONENT_BIAS_32; if (exponent_x > DECIMAL_MAX_EXPON_32) exponent_x = DECIMAL_MAX_EXPON_32; else if (exponent_x < 0) exponent_x = 0; BID_RETURN ((sign_x ^ sign_y) | (((BID_UINT64) exponent_x) << 23)); } } if (!valid_y) { // y is Inf. or NaN // test if y is NaN if ((y & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((y & SNAN_MASK32) == SNAN_MASK32) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (coefficient_y & QUIET_MASK32); } // y is Infinity? if ((y & INFINITY_MASK32) == INFINITY_MASK32) { // check if x is 0 if (!coefficient_x) { __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); // x==0, return NaN BID_RETURN (NAN_MASK32); } // otherwise return +/-Inf BID_RETURN (((x ^ y) & 0x80000000) | INFINITY_MASK32); } // y is 0 exponent_x += exponent_y - DECIMAL_EXPONENT_BIAS_32; if (exponent_x > DECIMAL_MAX_EXPON_32) exponent_x = DECIMAL_MAX_EXPON_32; else if (exponent_x < 0) exponent_x = 0; BID_RETURN ((sign_x ^ sign_y) | (((BID_UINT64) exponent_x) << 23)); } P = (BID_UINT64)coefficient_x * (BID_UINT64)coefficient_y; //--- get number of bits in C64 --- // version 2 (original) tempx.d = (double) P; bin_expon_p = ((tempx.i & MASK_BINARY_EXPONENT) >> 52)-0x3ff; n_digits = bid_estimate_decimal_digits[bin_expon_p]; if(P >=bid_power10_table_128[n_digits].w[0]) n_digits++; exponent_x += exponent_y - DECIMAL_EXPONENT_BIAS_32; extra_digits = (n_digits<=7)? 0 : (n_digits - 7); exponent_x += extra_digits; if(!extra_digits) { res = get_BID32 (sign_x ^ sign_y, exponent_x, P, rnd_mode, pfpsf); BID_RETURN (res); } #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if ((sign_x ^ sign_y) && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif if(exponent_x<0) rmode=3; // RZ // add a constant to P, depending on rounding mode // 0.5*10^(digits_p - 16) for round-to-nearest P += bid_round_const_table[rmode][extra_digits]; __mul_64x64_to_128(Tmp, P, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-64 amount = bid_short_recip_scale[extra_digits]; Q = Tmp.w[1] >> amount; // remainder R = P - Q * bid_power10_table_128[extra_digits].w[0]; if(R==bid_round_const_table[rmode][extra_digits]) status = 0; else status = BID_INEXACT_EXCEPTION; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, status); #endif #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if(R==0) Q &= 0xfffffffe; #endif #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if((exponent_x==-1) && (Q==9999999) && (rnd_mode!=BID_ROUNDING_TO_ZERO)) { rmode = rnd_mode; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if ((sign_x^sign_y) && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif if((R && (rmode==BID_ROUNDING_UP)) || ((!(rmode&3)) && (R+R>=bid_power10_table_128[extra_digits].w[0]))) { res = very_fast_get_BID32(sign_x^sign_y, 0, 1000000); BID_RETURN (res); } } #endif res = get_BID32_UF (sign_x^sign_y, exponent_x, Q, (BID_UINT32)R, rnd_mode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid32_frexp.c0000644€­ Q01134020000001140215113665770014107 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /* If x is not a floating-point number, the results are unspecified (this implementation returns x and *exp = 0). Otherwise, the frexp function returns the value res, such that res has a magnitude in the interval [1/10, 1) or zero, and x = res*2^*exp. If x is zero, both parts of the result are zero frexp does not raise any exceptions */ #if DECIMAL_CALL_BY_REFERENCE void bid32_frexp (BID_UINT32 *pres, BID_UINT32 *px, int *exp) { BID_UINT32 x = *px; #else DFP_WRAPFN_DFP_OTHERTYPE(32, bid32_frexp, 32, int*) BID_UINT32 bid32_frexp (BID_UINT32 x, int *exp) { #endif BID_UINT32 res; BID_UINT32 sig_x; unsigned int exp_x; BID_UI32FLOAT tmp; int x_nr_bits, q; if ((x & MASK_INF32) == MASK_INF32) { // if NaN or infinity *exp = 0; res = x; // the binary frexp quitetizes SNaNs, so do the same if ((x & MASK_SNAN32) == MASK_SNAN32) { // x is SNAN // // set invalid flag // *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res = x & 0xfdffffff; // } else { // res = x; } BID_RETURN (res); } else { // x is 0, non-canonical, normal, or subnormal // decode number into exponent and significand if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { exp_x = (x & MASK_BINARY_EXPONENT2_32) >> 21; sig_x = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; // check for zero or non-canonical if (sig_x > 9999999 || sig_x == 0) { *exp = 0; res = (x & 0x80000000) | (exp_x << 23); // zero of the same sign BID_RETURN (res); } } else { exp_x = (x & MASK_BINARY_EXPONENT1_32) >> 23; sig_x = (x & MASK_BINARY_SIG1_32); if (sig_x == 0) { *exp = 0; res = (x & 0x80000000) | (exp_x << 23); // zero of the same sign BID_RETURN (res); } } // x is normal or subnormal, with exp_x=biased exponent & sig_x=coefficient // determine the number of decimal digits in sig_x, which fits in 24 bits // q = nr. of decimal digits in sig_x (1 <= q <= 7) // determine first the nr. of bits in sig_x tmp.f = (float) sig_x; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp.ui32 >> 23)) & 0xff) - 0x7f); q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if ((BID_UINT64)sig_x >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } // Do not add trailing zeros if q < 7; leave sig_x with q digits // sig_x = sig_x * bid_mult_factor[7 - q]; // sig_x has now 7 digits *exp = exp_x - 101 + q; // assemble the result if (sig_x < 0x00800000) { // sig_x < 2^23 (fits in 23 bits) // res = (x & 0x80000000) | ((-q + 101) << 23) | sig_x; res = (x & 0x807fffff) | ((-q + 101) << 23); // replace exponent } else { // sig_x fits in 24 bits, but not in 23 // res = (x & 0x80000000) | 0x60000000 | // ((-q + 101) << 21) | (sig_x & 0x001fffff); res = (x & 0xe01fffff) | ((-q + 101) << 21); // replace exponent } BID_RETURN (res); } } LIBRARY/src/bid_convert_data.c0000644€­ Q01134020000010647015113665770015301 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #ifdef BID_MS_FLAGS unsigned int __bid_flag_mask=0; #endif // bid_convert_table[j][k][i] = digit i (base 10^8) of k*2^(26+7*j) const BID_UINT32 bid_convert_table[5][128][2] = { {{0, 0} , {67108864, 0} , {34217728, 1} , {1326592, 2} , {68435456, 2} , {35544320, 3} , {2653184, 4} , {69762048, 4} , {36870912, 5} , {3979776, 6} , {71088640, 6} , {38197504, 7} , {5306368, 8} , {72415232, 8} , {39524096, 9} , {6632960, 10} , {73741824, 10} , {40850688, 11} , {7959552, 12} , {75068416, 12} , {42177280, 13} , {9286144, 14} , {76395008, 14} , {43503872, 15} , {10612736, 16} , {77721600, 16} , {44830464, 17} , {11939328, 18} , {79048192, 18} , {46157056, 19} , {13265920, 20} , {80374784, 20} , {47483648, 21} , {14592512, 22} , {81701376, 22} , {48810240, 23} , {15919104, 24} , {83027968, 24} , {50136832, 25} , {17245696, 26} , {84354560, 26} , {51463424, 27} , {18572288, 28} , {85681152, 28} , {52790016, 29} , {19898880, 30} , {87007744, 30} , {54116608, 31} , {21225472, 32} , {88334336, 32} , {55443200, 33} , {22552064, 34} , {89660928, 34} , {56769792, 35} , {23878656, 36} , {90987520, 36} , {58096384, 37} , {25205248, 38} , {92314112, 38} , {59422976, 39} , {26531840, 40} , {93640704, 40} , {60749568, 41} , {27858432, 42} , {94967296, 42} , {62076160, 43} , {29185024, 44} , {96293888, 44} , {63402752, 45} , {30511616, 46} , {97620480, 46} , {64729344, 47} , {31838208, 48} , {98947072, 48} , {66055936, 49} , {33164800, 50} , {273664, 51} , {67382528, 51} , {34491392, 52} , {1600256, 53} , {68709120, 53} , {35817984, 54} , {2926848, 55} , {70035712, 55} , {37144576, 56} , {4253440, 57} , {71362304, 57} , {38471168, 58} , {5580032, 59} , {72688896, 59} , {39797760, 60} , {6906624, 61} , {74015488, 61} , {41124352, 62} , {8233216, 63} , {75342080, 63} , {42450944, 64} , {9559808, 65} , {76668672, 65} , {43777536, 66} , {10886400, 67} , {77995264, 67} , {45104128, 68} , {12212992, 69} , {79321856, 69} , {46430720, 70} , {13539584, 71} , {80648448, 71} , {47757312, 72} , {14866176, 73} , {81975040, 73} , {49083904, 74} , {16192768, 75} , {83301632, 75} , {50410496, 76} , {17519360, 77} , {84628224, 77} , {51737088, 78} , {18845952, 79} , {85954816, 79} , {53063680, 80} , {20172544, 81} , {87281408, 81} , {54390272, 82} , {21499136, 83} , {88608000, 83} , {55716864, 84} , {22825728, 85} , } , {{0, 0} , {89934592, 85} , {79869184, 171} , {69803776, 257} , {59738368, 343} , {49672960, 429} , {39607552, 515} , {29542144, 601} , {19476736, 687} , {9411328, 773} , {99345920, 858} , {89280512, 944} , {79215104, 1030} , {69149696, 1116} , {59084288, 1202} , {49018880, 1288} , {38953472, 1374} , {28888064, 1460} , {18822656, 1546} , {8757248, 1632} , {98691840, 1717} , {88626432, 1803} , {78561024, 1889} , {68495616, 1975} , {58430208, 2061} , {48364800, 2147} , {38299392, 2233} , {28233984, 2319} , {18168576, 2405} , {8103168, 2491} , {98037760, 2576} , {87972352, 2662} , {77906944, 2748} , {67841536, 2834} , {57776128, 2920} , {47710720, 3006} , {37645312, 3092} , {27579904, 3178} , {17514496, 3264} , {7449088, 3350} , {97383680, 3435} , {87318272, 3521} , {77252864, 3607} , {67187456, 3693} , {57122048, 3779} , {47056640, 3865} , {36991232, 3951} , {26925824, 4037} , {16860416, 4123} , {6795008, 4209} , {96729600, 4294} , {86664192, 4380} , {76598784, 4466} , {66533376, 4552} , {56467968, 4638} , {46402560, 4724} , {36337152, 4810} , {26271744, 4896} , {16206336, 4982} , {6140928, 5068} , {96075520, 5153} , {86010112, 5239} , {75944704, 5325} , {65879296, 5411} , {55813888, 5497} , {45748480, 5583} , {35683072, 5669} , {25617664, 5755} , {15552256, 5841} , {5486848, 5927} , {95421440, 6012} , {85356032, 6098} , {75290624, 6184} , {65225216, 6270} , {55159808, 6356} , {45094400, 6442} , {35028992, 6528} , {24963584, 6614} , {14898176, 6700} , {4832768, 6786} , {94767360, 6871} , {84701952, 6957} , {74636544, 7043} , {64571136, 7129} , {54505728, 7215} , {44440320, 7301} , {34374912, 7387} , {24309504, 7473} , {14244096, 7559} , {4178688, 7645} , {94113280, 7730} , {84047872, 7816} , {73982464, 7902} , {63917056, 7988} , {53851648, 8074} , {43786240, 8160} , {33720832, 8246} , {23655424, 8332} , {13590016, 8418} , {3524608, 8504} , {93459200, 8589} , {83393792, 8675} , {73328384, 8761} , {63262976, 8847} , {53197568, 8933} , {43132160, 9019} , {33066752, 9105} , {23001344, 9191} , {12935936, 9277} , {2870528, 9363} , {92805120, 9448} , {82739712, 9534} , {72674304, 9620} , {62608896, 9706} , {52543488, 9792} , {42478080, 9878} , {32412672, 9964} , {22347264, 10050} , {12281856, 10136} , {2216448, 10222} , {92151040, 10307} , {82085632, 10393} , {72020224, 10479} , {61954816, 10565} , {51889408, 10651} , {41824000, 10737} , {31758592, 10823} , {21693184, 10909} , } , {{0, 0} , {11627776, 10995} , {23255552, 21990} , {34883328, 32985} , {46511104, 43980} , {58138880, 54975} , {69766656, 65970} , {81394432, 76965} , {93022208, 87960} , {4649984, 98956} , {16277760, 109951} , {27905536, 120946} , {39533312, 131941} , {51161088, 142936} , {62788864, 153931} , {74416640, 164926} , {86044416, 175921} , {97672192, 186916} , {9299968, 197912} , {20927744, 208907} , {32555520, 219902} , {44183296, 230897} , {55811072, 241892} , {67438848, 252887} , {79066624, 263882} , {90694400, 274877} , {2322176, 285873} , {13949952, 296868} , {25577728, 307863} , {37205504, 318858} , {48833280, 329853} , {60461056, 340848} , {72088832, 351843} , {83716608, 362838} , {95344384, 373833} , {6972160, 384829} , {18599936, 395824} , {30227712, 406819} , {41855488, 417814} , {53483264, 428809} , {65111040, 439804} , {76738816, 450799} , {88366592, 461794} , {99994368, 472789} , {11622144, 483785} , {23249920, 494780} , {34877696, 505775} , {46505472, 516770} , {58133248, 527765} , {69761024, 538760} , {81388800, 549755} , {93016576, 560750} , {4644352, 571746} , {16272128, 582741} , {27899904, 593736} , {39527680, 604731} , {51155456, 615726} , {62783232, 626721} , {74411008, 637716} , {86038784, 648711} , {97666560, 659706} , {9294336, 670702} , {20922112, 681697} , {32549888, 692692} , {44177664, 703687} , {55805440, 714682} , {67433216, 725677} , {79060992, 736672} , {90688768, 747667} , {2316544, 758663} , {13944320, 769658} , {25572096, 780653} , {37199872, 791648} , {48827648, 802643} , {60455424, 813638} , {72083200, 824633} , {83710976, 835628} , {95338752, 846623} , {6966528, 857619} , {18594304, 868614} , {30222080, 879609} , {41849856, 890604} , {53477632, 901599} , {65105408, 912594} , {76733184, 923589} , {88360960, 934584} , {99988736, 945579} , {11616512, 956575} , {23244288, 967570} , {34872064, 978565} , {46499840, 989560} , {58127616, 1000555} , {69755392, 1011550} , {81383168, 1022545} , {93010944, 1033540} , {4638720, 1044536} , {16266496, 1055531} , {27894272, 1066526} , {39522048, 1077521} , {51149824, 1088516} , {62777600, 1099511} , {74405376, 1110506} , {86033152, 1121501} , {97660928, 1132496} , {9288704, 1143492} , {20916480, 1154487} , {32544256, 1165482} , {44172032, 1176477} , {55799808, 1187472} , {67427584, 1198467} , {79055360, 1209462} , {90683136, 1220457} , {2310912, 1231453} , {13938688, 1242448} , {25566464, 1253443} , {37194240, 1264438} , {48822016, 1275433} , {60449792, 1286428} , {72077568, 1297423} , {83705344, 1308418} , {95333120, 1319413} , {6960896, 1330409} , {18588672, 1341404} , {30216448, 1352399} , {41844224, 1363394} , {53472000, 1374389} , {65099776, 1385384} , {76727552, 1396379} , } , {{0, 0} , {88355328, 1407374} , {76710656, 2814749} , {65065984, 4222124} , {53421312, 5629499} , {41776640, 7036874} , {30131968, 8444249} , {18487296, 9851624} , {6842624, 11258999} , {95197952, 12666373} , {83553280, 14073748} , {71908608, 15481123} , {60263936, 16888498} , {48619264, 18295873} , {36974592, 19703248} , {25329920, 21110623} , {13685248, 22517998} , {2040576, 23925373} , {90395904, 25332747} , {78751232, 26740122} , {67106560, 28147497} , {55461888, 29554872} , {43817216, 30962247} , {32172544, 32369622} , {20527872, 33776997} , {8883200, 35184372} , {97238528, 36591746} , {85593856, 37999121} , {73949184, 39406496} , {62304512, 40813871} , {50659840, 42221246} , {39015168, 43628621} , {27370496, 45035996} , {15725824, 46443371} , {4081152, 47850746} , {92436480, 49258120} , {80791808, 50665495} , {69147136, 52072870} , {57502464, 53480245} , {45857792, 54887620} , {34213120, 56294995} , {22568448, 57702370} , {10923776, 59109745} , {99279104, 60517119} , {87634432, 61924494} , {75989760, 63331869} , {64345088, 64739244} , {52700416, 66146619} , {41055744, 67553994} , {29411072, 68961369} , {17766400, 70368744} , {6121728, 71776119} , {94477056, 73183493} , {82832384, 74590868} , {71187712, 75998243} , {59543040, 77405618} , {47898368, 78812993} , {36253696, 80220368} , {24609024, 81627743} , {12964352, 83035118} , {1319680, 84442493} , {89675008, 85849867} , {78030336, 87257242} , {66385664, 88664617} , {54740992, 90071992} , {43096320, 91479367} , {31451648, 92886742} , {19806976, 94294117} , {8162304, 95701492} , {96517632, 97108866} , {84872960, 98516241} , {73228288, 99923616} , {61583616, 1330991} , {49938944, 2738366} , {38294272, 4145741} , {26649600, 5553116} , {15004928, 6960491} , {3360256, 8367866} , {91715584, 9775240} , {80070912, 11182615} , {68426240, 12589990} , {56781568, 13997365} , {45136896, 15404740} , {33492224, 16812115} , {21847552, 18219490} , {10202880, 19626865} , {98558208, 21034239} , {86913536, 22441614} , {75268864, 23848989} , {63624192, 25256364} , {51979520, 26663739} , {40334848, 28071114} , {28690176, 29478489} , {17045504, 30885864} , {5400832, 32293239} , {93756160, 33700613} , {82111488, 35107988} , {70466816, 36515363} , {58822144, 37922738} , {47177472, 39330113} , {35532800, 40737488} , {23888128, 42144863} , {12243456, 43552238} , {598784, 44959613} , {88954112, 46366987} , {77309440, 47774362} , {65664768, 49181737} , {54020096, 50589112} , {42375424, 51996487} , {30730752, 53403862} , {19086080, 54811237} , {7441408, 56218612} , {95796736, 57625986} , {84152064, 59033361} , {72507392, 60440736} , {60862720, 61848111} , {49218048, 63255486} , {37573376, 64662861} , {25928704, 66070236} , {14284032, 67477611} , {2639360, 68884986} , {90994688, 70292360} , {79350016, 71699735} , {67705344, 73107110} , {56060672, 74514485} , {44416000, 75921860} , {32771328, 77329235} , {21126656, 78736610} , } , {{0, 0} , {9481984, 80143985} , {18963968, 60287970} , {28445952, 40431955} , {37927936, 20575940} , {47409920, 719925} , {56891904, 80863910} , {66373888, 61007895} , {75855872, 41151880} , {85337856, 21295865} , {94819840, 1439850} , {4301824, 81583836} , {13783808, 61727821} , {23265792, 41871806} , {32747776, 22015791} , {42229760, 2159776} , {51711744, 82303761} , {61193728, 62447746} , {70675712, 42591731} , {80157696, 22735716} , {89639680, 2879701} , {99121664, 83023686} , {8603648, 63167672} , {18085632, 43311657} , {27567616, 23455642} , {37049600, 3599627} , {46531584, 83743612} , {56013568, 63887597} , {65495552, 44031582} , {74977536, 24175567} , {84459520, 4319552} , {93941504, 84463537} , {3423488, 64607523} , {12905472, 44751508} , {22387456, 24895493} , {31869440, 5039478} , {41351424, 85183463} , {50833408, 65327448} , {60315392, 45471433} , {69797376, 25615418} , {79279360, 5759403} , {88761344, 85903388} , {98243328, 66047373} , {7725312, 46191359} , {17207296, 26335344} , {26689280, 6479329} , {36171264, 86623314} , {45653248, 66767299} , {55135232, 46911284} , {64617216, 27055269} , {74099200, 7199254} , {83581184, 87343239} , {93063168, 67487224} , {2545152, 47631210} , {12027136, 27775195} , {21509120, 7919180} , {30991104, 88063165} , {40473088, 68207150} , {49955072, 48351135} , {59437056, 28495120} , {68919040, 8639105} , {78401024, 88783090} , {87883008, 68927075} , {97364992, 49071060} , {6846976, 29215046} , {16328960, 9359031} , {25810944, 89503016} , {35292928, 69647001} , {44774912, 49790986} , {54256896, 29934971} , {63738880, 10078956} , {73220864, 90222941} , {82702848, 70366926} , {92184832, 50510911} , {1666816, 30654897} , {11148800, 10798882} , {20630784, 90942867} , {30112768, 71086852} , {39594752, 51230837} , {49076736, 31374822} , {58558720, 11518807} , {68040704, 91662792} , {77522688, 71806777} , {87004672, 51950762} , {96486656, 32094747} , {5968640, 12238733} , {15450624, 92382718} , {24932608, 72526703} , {34414592, 52670688} , {43896576, 32814673} , {53378560, 12958658} , {62860544, 93102643} , {72342528, 73246628} , {81824512, 53390613} , {91306496, 33534598} , {788480, 13678584} , {10270464, 93822569} , {19752448, 73966554} , {29234432, 54110539} , {38716416, 34254524} , {48198400, 14398509} , {57680384, 94542494} , {67162368, 74686479} , {76644352, 54830464} , {86126336, 34974449} , {95608320, 15118434} , {5090304, 95262420} , {14572288, 75406405} , {24054272, 55550390} , {33536256, 35694375} , {43018240, 15838360} , {52500224, 95982345} , {61982208, 76126330} , {71464192, 56270315} , {80946176, 36414300} , {90428160, 16558285} , {99910144, 96702270} , {9392128, 76846256} , {18874112, 56990241} , {28356096, 37134226} , {37838080, 17278211} , {47320064, 97422196} , {56802048, 77566181} , {66284032, 57710166} , {75766016, 37854151} , {85248000, 17998136} , {94729984, 98142121} , {4211968, 78286107} , } , }; // for j>=min_j[i+1], there is k s.t. bid_convert_table[i][j][k]>0 // int min_j[] = { 0, 0, 0, 3 }; // for even k, ((bid_packed_10000_zeros[k>>3])>>(k&7))&3)=greatest(i) s.t. 10^i divides k const BID_UINT8 bid_packed_10000_zeros[] = { 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, }; const BID_SINT8 bid_factors[1024][2] = { {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {4, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 2} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {5, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {4, 0} , {0, 0} , {1, 2} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {6, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 2} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {4, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {5, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 2} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {4, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 3} , {1, 0} , {0, 0} , {7, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {4, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 2} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {5, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 2} , {4, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {6, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 2} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {4, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {5, 0} , {0, 2} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {4, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 3} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {8, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {4, 0} , {0, 0} , {1, 0} , {0, 2} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {5, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 2} , {0, 0} , {1, 0} , {0, 0} , {4, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {6, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 2} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {4, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 2} , {0, 0} , {5, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {4, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 3} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {7, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {4, 2} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {5, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 2} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {4, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {6, 0} , {0, 0} , {1, 2} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {4, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 2} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {5, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {4, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 3} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {9, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 2} , {1, 0} , {0, 0} , {4, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {5, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 2} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {4, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 2} , {6, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {4, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 2} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {5, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {4, 0} , {0, 4} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {7, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 2} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {4, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {5, 0} , {0, 0} , {1, 0} , {0, 2} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {4, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 2} , {0, 0} , {1, 0} , {0, 0} , {6, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {4, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 2} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {5, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 3} , {0, 0} , {4, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {8, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 2} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {4, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {5, 2} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {4, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 2} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {6, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {4, 0} , {0, 0} , {1, 2} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {5, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 3} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {4, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {7, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 2} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {4, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 2} , {1, 0} , {0, 0} , {5, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {4, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 2} , {0, 0} , {3, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {6, 1} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {3, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 2} , {4, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {3, 0} , {0, 1} , {1, 0} , {0, 0} , {2, 0} , {0, 0} , {1, 1} , {0, 0} , {5, 0} , {0, 0} , {1, 0} , {0, 1} , {2, 0} , {0, 0} , {1, 0} , {0, 0} , {3, 3} , {0, 0} , {1, 0} , {0, 0} , {2, 0} , {0, 1} , {1, 0} , {0, 0} , {4, 0} , {0, 0} , {1, 1} , {0, 0} , {2, 0} , {0, 0} , {1, 0} , {0, 1} , {3, 0} , {0, 0} , {1, 0} , {0, 0} , {2, 1} , {0, 0} , {1, 0} , {0, 0} , {10, 0} , }; LIBRARY/src/bid32_to_bid64.c0000644€­ Q01134020000001504415113665770014403 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" /* * Takes a BID32 as input and converts it to a BID64 and returns it. */ BID_TYPE0_FUNCTION_ARGTYPE1_NORND_NOFLAGS (BID_UINT64, bid32_to_bid64, BID_UINT32, x) BID_UINT64 res; BID_UINT32 sign_x; int exponent_x; BID_UINT32 coefficient_x; if (!unpack_BID32 (&sign_x, &exponent_x, &coefficient_x, x)) { // Inf, NaN, 0 if (((x) & 0x78000000) == 0x78000000) { if (((x) & 0x7e000000) == 0x7e000000) { // sNaN #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif } res = (coefficient_x & 0x000fffff); res *= 1000000000; res |= ((((BID_UINT64) coefficient_x) << 32) & 0xfc00000000000000ull); BID_RETURN_NOFLAGS (res); } } res = very_fast_get_BID64_small_mantissa (((BID_UINT64) sign_x) << 32, exponent_x + DECIMAL_EXPONENT_BIAS - DECIMAL_EXPONENT_BIAS_32, (BID_UINT64) coefficient_x); BID_RETURN_NOFLAGS (res); } // convert_bid32_to_bid64 /* * Takes a BID64 as input and converts it to a BID32 and returns it. */ BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid64_to_bid32, BID_UINT64, x) BID_UINT128 Q; BID_UINT64 sign_x, coefficient_x, remainder_h, carry, Stemp; BID_UINT32 res; BID_UINT64 t64; int_float tempx; int exponent_x, bin_expon_cx, extra_digits, rmode = 0, amount; unsigned status = 0; BID_OPT_SAVE_BINARY_FLAGS() // unpack arguments, check for NaN or Infinity, 0 if (!unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x)) { if (((x) & 0x7800000000000000ull) == 0x7800000000000000ull) { t64 = (coefficient_x & 0x0003ffffffffffffull); res = t64/1000000000ull; res |= ((coefficient_x >> 32) & 0xfc000000); #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } exponent_x = exponent_x - DECIMAL_EXPONENT_BIAS + DECIMAL_EXPONENT_BIAS_32; if (exponent_x < 0) exponent_x = 0; if (exponent_x > DECIMAL_MAX_EXPON_32) exponent_x = DECIMAL_MAX_EXPON_32; res = (sign_x >> 32) | (exponent_x << 23); BID_RETURN (res); } exponent_x = exponent_x - DECIMAL_EXPONENT_BIAS + DECIMAL_EXPONENT_BIAS_32; // check number of digits if (coefficient_x >= 10000000) { tempx.d = (float) coefficient_x; bin_expon_cx = ((tempx.i >> 23) & 0xff) - 0x7f; extra_digits = bid_estimate_decimal_digits[bin_expon_cx] - 7; // add test for range if (coefficient_x >= bid_power10_index_binexp[bin_expon_cx]) extra_digits++; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST rmode = rnd_mode; if (sign_x && (unsigned) (rmode - 1) < 2) rmode = 3 - rmode; #else rmode = 0; #endif #else rmode = 0; #endif exponent_x += extra_digits; if ((exponent_x < 0) && (exponent_x + MAX_FORMAT_DIGITS_32 >= 0)) { status = BID_UNDERFLOW_EXCEPTION; #if DECIMAL_TINY_DETECTION_AFTER_ROUNDING if (exponent_x == -1) if (coefficient_x + bid_round_const_table[rmode][extra_digits] >= bid_power10_table_128[extra_digits + 7].w[0]) status = 0; #endif extra_digits -= exponent_x; exponent_x = 0; } coefficient_x += bid_round_const_table[rmode][extra_digits]; __mul_64x64_to_128 (Q, coefficient_x, bid_reciprocals10_64[extra_digits]); // now get P/10^extra_digits: shift Q_high right by M[extra_digits]-128 amount = bid_short_recip_scale[extra_digits]; coefficient_x = Q.w[1] >> amount; #ifndef IEEE_ROUND_NEAREST_TIES_AWAY #ifndef IEEE_ROUND_NEAREST if (rmode == 0) //BID_ROUNDING_TO_NEAREST #endif if (coefficient_x & 1) { // check whether fractional part of initial_P/10^extra_digits // is exactly .5 // get remainder remainder_h = Q.w[1] << (64 - amount); if (!remainder_h && (Q.w[0] < bid_reciprocals10_64[extra_digits])) coefficient_x--; } #endif #ifdef BID_SET_STATUS_FLAGS { status |= BID_INEXACT_EXCEPTION; // get remainder remainder_h = Q.w[1] << (64 - amount); switch (rmode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // test whether fractional part is 0 if (remainder_h == 0x8000000000000000ull && (Q.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; break; case BID_ROUNDING_DOWN: case BID_ROUNDING_TO_ZERO: if (!remainder_h && (Q.w[0] < bid_reciprocals10_64[extra_digits])) status = BID_EXACT_STATUS; break; default: // round up __add_carry_out (Stemp, carry, Q.w[0], bid_reciprocals10_64[extra_digits]); if ((remainder_h >> (64 - amount)) + carry >= (((BID_UINT64) 1) << amount)) status = BID_EXACT_STATUS; } if (status != BID_EXACT_STATUS) __set_status_flags (pfpsf, status); } #endif } res = get_BID32 ((BID_UINT32) (sign_x >> 32), exponent_x, coefficient_x, rnd_mode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid32_to_int32.c0000644€­ Q01134020000022405215113665770014433 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" /***************************************************************************** * BID32_to_int32_rnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int32_rnint (int *pres, BID_UINT32* px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_to_int32_rnint, 32) int bid32_to_int32_rnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 7 decimal digits ~ 24 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 > 2^31+1/2 // <=> C * 10^(11-q) > 0x500000005, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 > 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31-1/2 // <=> C * 10^(11-q) >= 0x4fffffffb, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)00...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: -2^31 - 1/2 <= n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if ((BID_UINT64)C1 <= bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^31-1/2 <= x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 32 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 24 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int32_xrnint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int32_xrnint (int *pres, BID_UINT32* px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_to_int32_xrnint, 32) int bid32_to_int32_xrnint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 7 decimal digits ~ 24 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 > 2^31+1/2 // <=> C * 10^(11-q) > 0x500000005, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31-1/2 // <=> C * 10^(11-q) >= 0x4fffffffb, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: -2^31 - 1/2 < n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if ((BID_UINT64)C1 <= bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^31-1/2 <= x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 32 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 24 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero, so // it will need a correction // check for midpoints if ((fstar.w[1] == 0) && fstar.w[0] && (fstar.w[0] <= bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // the result is a midpoint; round to nearest if (Cstar & 0x01) { // Cstar is odd; MP in [EVEN, ODD] // if floor(C*) is odd C = floor(C*) - 1; the result >= 1 Cstar--; // Cstar is now even } // else MP in [ODD, EVEN] } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int32_floor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int32_floor (int *pres, BID_UINT32* px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_to_int32_floor, 32) int bid32_to_int32_floor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 7 decimal digits ~ 24 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 then n is too large // too large if c(0)c(1)...c(q-1)00...0 > 2^31 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: -2^31 <= n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return -1 or 0 if (x_sign) res = 0xffffffff; else res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x < 2^31 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 32 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 24 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int32_xfloor ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int32_xfloor (int *pres, BID_UINT32* px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_to_int32_xfloor, 32) int bid32_to_int32_xfloor (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 7 decimal digits ~ 24 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n < -2^31 then n is too large // too large if c(0)c(1)...c(q-1)00...0 > 2^31 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: -2^31 <= n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return -1 or 0 if (x_sign) res = 0xffffffff; else res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x < 2^31 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 32 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 24 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (x_sign) { // negative and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int32_ceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int32_ceil (int *pres, BID_UINT32* px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_to_int32_ceil, 32) int bid32_to_int32_ceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 7 decimal digits ~ 24 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31+1 // <=> C * 10^(11-q) >= 0x50000000a, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x50000000a has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if n > 0 and q + exp = 10 // if n > 2^31 - 1 then n is too large // too large if c(0)c(1)...c(q-1)00...0 > 2^31 - 1 // <=> C * 10^(11-q) > 0x4fffffff6, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x4fffffff6 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x4fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: -2^31 - 1 < n <= 2^31 - 1 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x <= 2^31-1 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 32 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 24 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int32_xceil ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int32_xceil (int *pres, BID_UINT32* px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_to_int32_xceil, 32) int bid32_to_int32_xceil (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 7 decimal digits ~ 24 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31+1 // <=> C * 10^(11-q) >= 0x50000000a, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x50000000a has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if n > 0 and q + exp = 10 // if n > 2^31 - 1 then n is too large // too large if c(0)c(1)...c(q-1)00...0 > 2^31 - 1 // <=> C * 10^(11-q) > 0x4fffffff6, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x4fffffff6 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 > 0x4fffffff6ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: -2^31 - 1 < n <= 2^31 - 1 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 or 1 if (x_sign) res = 0x00000000; else res = 0x00000001; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x <= 2^31-1 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 32 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 24 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] if (!x_sign) { // positive and inexact Cstar++; } // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int32_int ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int32_int (int *pres, BID_UINT32* px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_to_int32_int, 32) int bid32_to_int32_int (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 7 decimal digits ~ 24 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31+1 // <=> C * 10^(11-q) >= 0x50000000a, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x50000000a has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: -2^31 - 1 < n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x < 2^31 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 32 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 24 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int32_xint ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int32_xint (int *pres, BID_UINT32* px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_to_int32_xint, 32) int bid32_to_int32_xint (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 7 decimal digits ~ 24 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31+1 // <=> C * 10^(11-q) >= 0x50000000a, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x50000000a has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x50000000aull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if n > 0 and q + exp = 10 // if n >= 2^31 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31 // <=> C * 10^(11-q) >= 0x500000000, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000000 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000000ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: -2^31 - 1 < n < 2^31 // Note: some of the cases tested for above fall through to this point if ((q + exp) <= 0) { // n = +/-0.[0...0]c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^31-1 < x <= -1 or 1 <= x < 2^31 so x can be rounded // to nearest to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 fits in 32 bits // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 24 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* < 10^(-x)) then // the result is exact // else // if (f* > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int32_rninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int32_rninta (int *pres, BID_UINT32* px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_to_int32_rninta, 32) int bid32_to_int32_rninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 7 decimal digits ~ 24 bits BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31+1/2 // <=> C * 10^(11-q) >= 0x500000005, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31-1/2 // <=> C * 10^(11-q) >= 0x4fffffffb, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: -2^31 - 1/2 < n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (C1 < bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^31-1/2 <= x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest away to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 32 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 24 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*)-1 (logical right shift; C* has p decimal digits, // correct by Pr. 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // if the result was a midpoint it was rounded away from zero if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } /***************************************************************************** * BID32_to_int32_xrninta ****************************************************************************/ #if DECIMAL_CALL_BY_REFERENCE void bid32_to_int32_xrninta (int *pres, BID_UINT32* px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT32 x = *px; #else RES_WRAPFN_DFP(int, bid32_to_int32_xrninta, 32) int bid32_to_int32_xrninta (BID_UINT32 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int res; BID_UINT32 x_sign; BID_UINT32 x_exp; int exp; // unbiased exponent // Note: C1 represents x_significand (BID_UINT32) BID_UINT64 tmp64; BID_UI32FLOAT tmp1; unsigned int x_nr_bits; int q, ind, shift; BID_UINT32 C1; BID_UINT64 Cstar; // C* represents up to 7 decimal digits ~ 24 bits BID_UINT128 fstar; BID_UINT128 P128; // check for NaN or Infinity if ((x & MASK_NAN32) == MASK_NAN32 || (x & MASK_INF32) == MASK_INF32) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // unpack x x_sign = x & MASK_SIGN32; // 0 for positive, MASK_SIGN32 for negative // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS32) == MASK_STEERING_BITS32) { x_exp = (x & MASK_BINARY_EXPONENT2_32) >> 21; // biased C1 = (x & MASK_BINARY_SIG2_32) | MASK_BINARY_OR2_32; if (C1 > 9999999) { // non-canonical x_exp = 0; C1 = 0; } } else { x_exp = (x & MASK_BINARY_EXPONENT1_32) >> 23; // biased C1 = x & MASK_BINARY_SIG1_32; } // check for zeros (possibly from non-canonical values) if (C1 == 0x0) { // x is 0 res = 0x00000000; BID_RETURN (res); } // x is not special and is not zero // q = nr. of decimal digits in x (1 <= q <= 7) // determine first the nr. of bits in x tmp1.f = (float) C1; // exact conversion x_nr_bits = 1 + ((tmp1.ui32 >> 23) & 0xff) - 0x7f; q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1 >= bid_nr_digits[x_nr_bits - 1].threshold_lo) q++; } exp = x_exp - 101; // unbiased exponent if ((q + exp) > 10) { // x >= 10^10 ~= 2^33.2... (cannot fit in 32 bits) // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } else if ((q + exp) == 10) { // x = c(0)c(1)...c(q-1)00..0 (10 dec. digits) // in this case 2^29.89... ~= 10^9 <= x < 10^10 ~= 2^33.2... // so x rounded to an integer may or may not fit in a signed 32-bit int // the cases that do not fit are identified here; the ones that fit // fall through and will be handled with other cases further, // under '1 <= q + exp <= 10' if (x_sign) { // if n < 0 and q + exp = 10 // if n <= -2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31+1/2 // <=> C * 10^(11-q) >= 0x500000005, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x500000005ull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } else { // if n > 0 and q + exp = 10 // if n >= 2^31 - 1/2 then n is too large // too large if c(0)c(1)...c(q-1)00...0 >= 2^31-1/2 // <=> C * 10^(11-q) >= 0x4fffffffb, 1<=q<=7 // Note: C * 10^(11-q) has 10 or 11 digits; 0x500000005 has 11 digits tmp64 = C1 * bid_ten2k64[11 - q]; // C scaled up to 11-digit int // c(0)c(1)...c(q-1)0...0 (11 digits) if (tmp64 >= 0x4fffffffbull) { // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return Integer Indefinite res = 0x80000000; BID_RETURN (res); } // else cases that can be rounded to a 32-bit int fall through // to '1 <= q + exp <= 10' } } // n is not too large to be converted to int32: -2^31 - 1/2 < n < 2^31 - 1/2 // Note: some of the cases tested for above fall through to this point if ((q + exp) < 0) { // n = +/-0.0...c(0)c(1)...c(q-1) // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; // return 0 res = 0x00000000; BID_RETURN (res); } else if ((q + exp) == 0) { // n = +/-0.c(0)c(1)...c(q-1) // if 0.c(0)c(1)...c(q-1) <= 0.5 <=> c(0)c(1)...c(q-1) <= 5 * 10^(q-1) // res = 0 // else // res = +/-1 ind = q - 1; if (C1 < bid_midpoint64[ind]) { res = 0x00000000; // return 0 } else if (x_sign) { // n < 0 res = 0xffffffff; // return -1 } else { // n > 0 res = 0x00000001; // return +1 } // set inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } else { // if (1 <= q + exp <= 10, 1 <= q <= 7, -6 <= exp <= 9) // -2^31-1/2 <= x <= -1 or 1 <= x < 2^31-1/2 so x can be rounded // to nearest away to a 32-bit signed integer if (exp < 0) { // 2 <= q <= 7, -6 <= exp <= -1, 1 <= q + exp <= 10 ind = -exp; // 1 <= ind <= 6; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^ind where the result C1 fits in 32 bits C1 = C1 + (BID_UINT32)bid_midpoint64[ind - 1]; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 6 // kx = 10^(-x) = bid_ten2mk64[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 24 bits __mul_64x64_to_128MACH (P128, (BID_UINT64)C1, bid_ten2mk64[ind - 1]); Cstar = P128.w[1]; fstar.w[1] = P128.w[1] & bid_maskhigh128[ind - 1]; fstar.w[0] = P128.w[0]; // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind].w[0], e.g. // if x=1, T*=bid_ten2mk128trunc[0].w[0]=0x1999999999999999 // C* = floor(C*)-1 (logical right shift; C* has p decimal digits, // correct by Pr. 1) // n = C* * 10^(e+x) // shift right C* by Ex-64 = bid_shiftright128[ind] shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 39 Cstar = Cstar >> shift; // determine inexactness of the rounding of C* // if (0 < f* - 1/2 < 10^(-x)) then // the result is exact // else // if (f* - 1/2 > T*) then // the result is inexact if (ind - 1 <= 2) { if (fstar.w[0] > 0x8000000000000000ull) { // f* > 1/2 and the result may be exact tmp64 = fstar.w[0] - 0x8000000000000000ull; // f* - 1/2 if ((tmp64 > bid_ten2mk128trunc[ind - 1].w[1])) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } else { // if 3 <= ind - 1 <= 14 if (fstar.w[1] > bid_onehalf128[ind - 1] || (fstar.w[1] == bid_onehalf128[ind - 1] && fstar.w[0])) { // f2* > 1/2 and the result may be exact // Calculate f2* - 1/2 tmp64 = fstar.w[1] - bid_onehalf128[ind - 1]; if (tmp64 || fstar.w[0] > bid_ten2mk128trunc[ind - 1].w[1]) { // bid_ten2mk128trunc[ind -1].w[1] is identical to // bid_ten2mk128[ind -1].w[1] // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } // else the result is exact } else { // the result is inexact; f2* <= 1/2 // set the inexact flag *pfpsf |= BID_INEXACT_EXCEPTION; } } // if the result was a midpoint it was rounded away from zero if (x_sign) res = -Cstar; else res = Cstar; } else if (exp == 0) { // 1 <= q <= 10 // res = +/-C (exact) if (x_sign) res = -C1; else res = C1; } else { // if (exp > 0) => 1 <= exp <= 9, 1 <= q < 9, 2 <= q + exp <= 10 // res = +/-C * 10^exp (exact) if (x_sign) res = -C1 * bid_ten2k64[exp]; else res = C1 * bid_ten2k64[exp]; } } BID_RETURN (res); } LIBRARY/src/bid32_erfc.c0000644€­ Q01134020000000500215113665770013701 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double erfc(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_erfc, BID_UINT32, x) // Declare local variables BID_UINT32 res; double xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Otherwise just do the operation "naively". // We inherit the erfc([-]inf) = [-]pi/2 case from the binary function // rather than having a special case for it. BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = erfc(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } LIBRARY/src/bid32_tanh.c0000644€­ Q01134020000000477715113665770013736 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double tanh(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_tanh, BID_UINT32, x) // Declare local variables BID_UINT32 res; double xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Otherwise just do the operation "naively". // We inherit the tanh([-]inf) = [-]1 case from the binary function // rather than having a special case for it. BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = tanh(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } LIBRARY/src/bid128_sqrt.c0000644€­ Q01134020000004121415113665770014046 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #define BID_FUNCTION_SETS_BINARY_FLAGS #include "bid_internal.h" #include "bid_sqrt_macros.h" #include BID128_FUNCTION_ARG1 (bid128_sqrt, x) BID_UINT256 M256, C256, C4, C8; BID_UINT128 CX, CX1, CX2, A10, S2, T128, TP128, CS, CSM, res; BID_UINT64 sign_x, Carry; BID_SINT64 D; int_float fx, f64; int exponent_x, bin_expon_cx; int digits, scale, exponent_q; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } // unpack arguments, check for NaN or Infinity if (!unpack_BID128_value (&sign_x, &exponent_x, &CX, x)) { res.w[1] = CX.w[1]; res.w[0] = CX.w[0]; // NaN ? if ((x.w[1] & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x.w[1] & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[1] = CX.w[1] & QUIET_MASK64; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x is Infinity? if ((x.w[1] & 0x7800000000000000ull) == 0x7800000000000000ull) { res.w[1] = CX.w[1]; if (sign_x) { // -Inf, return NaN res.w[1] = 0x7c00000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif } // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x is 0 otherwise res.w[1] = sign_x | ((((BID_UINT64) (exponent_x + DECIMAL_EXPONENT_BIAS_128)) >> 1) << 49); res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } if (sign_x) { res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // 2^64 f64.i = 0x5f800000; // fx ~ CX fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; bin_expon_cx = ((fx.i >> 23) & 0xff) - 0x7f; digits = bid_estimate_decimal_digits[bin_expon_cx]; A10 = CX; if (exponent_x & 1) { A10.w[1] = (CX.w[1] << 3) | (CX.w[0] >> 61); A10.w[0] = CX.w[0] << 3; CX2.w[1] = (CX.w[1] << 1) | (CX.w[0] >> 63); CX2.w[0] = CX.w[0] << 1; __add_128_128 (A10, A10, CX2); } CS.w[0] = short_sqrt128 (A10); CS.w[1] = 0; // check for exact result if (CS.w[0] * CS.w[0] == A10.w[0]) { __mul_64x64_to_128_fast (S2, CS.w[0], CS.w[0]); if (S2.w[1] == A10.w[1]) // && S2.w[0]==A10.w[0]) { bid_get_BID128_very_fast (&res, 0, (exponent_x + DECIMAL_EXPONENT_BIAS_128) >> 1, CS); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } // get number of digits in CX D = CX.w[1] - bid_power10_index_binexp_128[bin_expon_cx].w[1]; if (D > 0 || (!D && CX.w[0] >= bid_power10_index_binexp_128[bin_expon_cx].w[0])) digits++; // if exponent is odd, scale coefficient by 10 scale = 67 - digits; exponent_q = exponent_x - scale; scale += (exponent_q & 1); // exp. bias is even if (scale > 38) { T128 = bid_power10_table_128[scale - 37]; __mul_128x128_low (CX1, CX, T128); TP128 = bid_power10_table_128[37]; __mul_128x128_to_256 (C256, CX1, TP128); } else { T128 = bid_power10_table_128[scale]; __mul_128x128_to_256 (C256, CX, T128); } // 4*C256 C4.w[3] = (C256.w[3] << 2) | (C256.w[2] >> 62); C4.w[2] = (C256.w[2] << 2) | (C256.w[1] >> 62); C4.w[1] = (C256.w[1] << 2) | (C256.w[0] >> 62); C4.w[0] = C256.w[0] << 2; bid_long_sqrt128 (&CS, C256); //printf("C256=%016I64x %016I64x %016I64x %016I64x, CS=%016I64x %016I64x \n",C256.w[3],C256.w[2],C256.w[1],C256.w[0],CS.w[1],CS.w[0]); #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY if (!((rnd_mode) & 3)) { #endif #endif // compare to midpoints CSM.w[1] = (CS.w[1] << 1) | (CS.w[0] >> 63); CSM.w[0] = (CS.w[0] + CS.w[0]) | 1; // CSM^2 //__mul_128x128_to_256(M256, CSM, CSM); __sqr128_to_256 (M256, CSM); if (C4.w[3] > M256.w[3] || (C4.w[3] == M256.w[3] && (C4.w[2] > M256.w[2] || (C4.w[2] == M256.w[2] && (C4.w[1] > M256.w[1] || (C4.w[1] == M256.w[1] && C4.w[0] > M256.w[0])))))) { // round up CS.w[0]++; if (!CS.w[0]) CS.w[1]++; } else { C8.w[1] = (CS.w[1] << 3) | (CS.w[0] >> 61); C8.w[0] = CS.w[0] << 3; // M256 - 8*CSM __sub_borrow_out (M256.w[0], Carry, M256.w[0], C8.w[0]); __sub_borrow_in_out (M256.w[1], Carry, M256.w[1], C8.w[1], Carry); __sub_borrow_in_out (M256.w[2], Carry, M256.w[2], 0, Carry); M256.w[3] = M256.w[3] - Carry; // if CSM' > C256, round up if (M256.w[3] > C4.w[3] || (M256.w[3] == C4.w[3] && (M256.w[2] > C4.w[2] || (M256.w[2] == C4.w[2] && (M256.w[1] > C4.w[1] || (M256.w[1] == C4.w[1] && M256.w[0] > C4.w[0])))))) { // round down if (!CS.w[0]) CS.w[1]--; CS.w[0]--; } } #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY } else { __sqr128_to_256 (M256, CS); C8.w[1] = (CS.w[1] << 1) | (CS.w[0] >> 63); C8.w[0] = CS.w[0] << 1; if (M256.w[3] > C256.w[3] || (M256.w[3] == C256.w[3] && (M256.w[2] > C256.w[2] || (M256.w[2] == C256.w[2] && (M256.w[1] > C256.w[1] || (M256.w[1] == C256.w[1] && M256.w[0] > C256.w[0])))))) { __sub_borrow_out (M256.w[0], Carry, M256.w[0], C8.w[0]); __sub_borrow_in_out (M256.w[1], Carry, M256.w[1], C8.w[1], Carry); __sub_borrow_in_out (M256.w[2], Carry, M256.w[2], 0, Carry); M256.w[3] = M256.w[3] - Carry; M256.w[0]++; if (!M256.w[0]) { M256.w[1]++; if (!M256.w[1]) { M256.w[2]++; if (!M256.w[2]) M256.w[3]++; } } if (!CS.w[0]) CS.w[1]--; CS.w[0]--; if (M256.w[3] > C256.w[3] || (M256.w[3] == C256.w[3] && (M256.w[2] > C256.w[2] || (M256.w[2] == C256.w[2] && (M256.w[1] > C256.w[1] || (M256.w[1] == C256.w[1] && M256.w[0] > C256.w[0])))))) { if (!CS.w[0]) CS.w[1]--; CS.w[0]--; } } else { __add_carry_out (M256.w[0], Carry, M256.w[0], C8.w[0]); __add_carry_in_out (M256.w[1], Carry, M256.w[1], C8.w[1], Carry); __add_carry_in_out (M256.w[2], Carry, M256.w[2], 0, Carry); M256.w[3] = M256.w[3] + Carry; M256.w[0]++; if (!M256.w[0]) { M256.w[1]++; if (!M256.w[1]) { M256.w[2]++; if (!M256.w[2]) M256.w[3]++; } } if (M256.w[3] < C256.w[3] || (M256.w[3] == C256.w[3] && (M256.w[2] < C256.w[2] || (M256.w[2] == C256.w[2] && (M256.w[1] < C256.w[1] || (M256.w[1] == C256.w[1] && M256.w[0] <= C256.w[0])))))) { CS.w[0]++; if (!CS.w[0]) CS.w[1]++; } } // RU? if ((rnd_mode) == BID_ROUNDING_UP) { CS.w[0]++; if (!CS.w[0]) CS.w[1]++; } } #endif #endif #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif bid_get_BID128_fast (&res, 0, (exponent_q + DECIMAL_EXPONENT_BIAS_128) >> 1, CS); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } BID128_FUNCTION_ARGTYPE1 (bid128d_sqrt, BID_UINT64, x) BID_UINT256 M256, C256, C4, C8; BID_UINT128 CX, CX1, CX2, A10, S2, T128, TP128, CS, CSM, res; BID_UINT64 sign_x, Carry; BID_SINT64 D; int_float fx, f64; int exponent_x, bin_expon_cx; int digits, scale, exponent_q; int old_rm, rm_changed=0; BID_OPT_SAVE_BINARY_FLAGS() // Set it to round-to-nearest (if different) if ((old_rm=fegetround()) != FE_TONEAREST) { rm_changed=1; fesetround(FE_TONEAREST); } // unpack arguments, check for NaN or Infinity // unpack arguments, check for NaN or Infinity CX.w[1] = 0; if (!unpack_BID64 (&sign_x, &exponent_x, &CX.w[0], x)) { res.w[1] = CX.w[0]; res.w[0] = 0; // NaN ? if ((x & 0x7c00000000000000ull) == 0x7c00000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[0] = (CX.w[0] & 0x0003ffffffffffffull); __mul_64x64_to_128 (res, res.w[0], bid_power10_table_128[18].w[0]); res.w[1] |= ((CX.w[0]) & 0xfc00000000000000ull); // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x is Infinity? if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { if (sign_x) { // -Inf, return NaN res.w[1] = 0x7c00000000000000ull; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif } // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } // x is 0 otherwise exponent_x = exponent_x - DECIMAL_EXPONENT_BIAS + DECIMAL_EXPONENT_BIAS_128; res.w[1] = sign_x | ((((BID_UINT64) (exponent_x + DECIMAL_EXPONENT_BIAS_128)) >> 1) << 49); res.w[0] = 0; // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } if (sign_x) { res.w[1] = 0x7c00000000000000ull; res.w[0] = 0; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fegetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif exponent_x = exponent_x - DECIMAL_EXPONENT_BIAS + DECIMAL_EXPONENT_BIAS_128; // 2^64 f64.i = 0x5f800000; // fx ~ CX fx.d = (float) CX.w[1] * f64.d + (float) CX.w[0]; bin_expon_cx = ((fx.i >> 23) & 0xff) - 0x7f; digits = bid_estimate_decimal_digits[bin_expon_cx]; A10 = CX; if (exponent_x & 1) { A10.w[1] = (CX.w[1] << 3) | (CX.w[0] >> 61); A10.w[0] = CX.w[0] << 3; CX2.w[1] = (CX.w[1] << 1) | (CX.w[0] >> 63); CX2.w[0] = CX.w[0] << 1; __add_128_128 (A10, A10, CX2); } CS.w[0] = short_sqrt128 (A10); CS.w[1] = 0; // check for exact result if (CS.w[0] * CS.w[0] == A10.w[0]) { __mul_64x64_to_128_fast (S2, CS.w[0], CS.w[0]); if (S2.w[1] == A10.w[1]) { bid_get_BID128_very_fast (&res, 0, (exponent_x + DECIMAL_EXPONENT_BIAS_128) >> 1, CS); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } } // get number of digits in CX D = CX.w[1] - bid_power10_index_binexp_128[bin_expon_cx].w[1]; if (D > 0 || (!D && CX.w[0] >= bid_power10_index_binexp_128[bin_expon_cx].w[0])) digits++; // if exponent is odd, scale coefficient by 10 scale = 67 - digits; exponent_q = exponent_x - scale; scale += (exponent_q & 1); // exp. bias is even if (scale > 38) { T128 = bid_power10_table_128[scale - 37]; __mul_128x128_low (CX1, CX, T128); TP128 = bid_power10_table_128[37]; __mul_128x128_to_256 (C256, CX1, TP128); } else { T128 = bid_power10_table_128[scale]; __mul_128x128_to_256 (C256, CX, T128); } // 4*C256 C4.w[3] = (C256.w[3] << 2) | (C256.w[2] >> 62); C4.w[2] = (C256.w[2] << 2) | (C256.w[1] >> 62); C4.w[1] = (C256.w[1] << 2) | (C256.w[0] >> 62); C4.w[0] = C256.w[0] << 2; bid_long_sqrt128 (&CS, C256); #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY if (!((rnd_mode) & 3)) { #endif #endif // compare to midpoints CSM.w[1] = (CS.w[1] << 1) | (CS.w[0] >> 63); CSM.w[0] = (CS.w[0] + CS.w[0]) | 1; // CSM^2 //__mul_128x128_to_256(M256, CSM, CSM); __sqr128_to_256 (M256, CSM); if (C4.w[3] > M256.w[3] || (C4.w[3] == M256.w[3] && (C4.w[2] > M256.w[2] || (C4.w[2] == M256.w[2] && (C4.w[1] > M256.w[1] || (C4.w[1] == M256.w[1] && C4.w[0] > M256.w[0])))))) { // round up CS.w[0]++; if (!CS.w[0]) CS.w[1]++; } else { C8.w[1] = (CS.w[1] << 3) | (CS.w[0] >> 61); C8.w[0] = CS.w[0] << 3; // M256 - 8*CSM __sub_borrow_out (M256.w[0], Carry, M256.w[0], C8.w[0]); __sub_borrow_in_out (M256.w[1], Carry, M256.w[1], C8.w[1], Carry); __sub_borrow_in_out (M256.w[2], Carry, M256.w[2], 0, Carry); M256.w[3] = M256.w[3] - Carry; // if CSM' > C256, round up if (M256.w[3] > C4.w[3] || (M256.w[3] == C4.w[3] && (M256.w[2] > C4.w[2] || (M256.w[2] == C4.w[2] && (M256.w[1] > C4.w[1] || (M256.w[1] == C4.w[1] && M256.w[0] > C4.w[0])))))) { // round down if (!CS.w[0]) CS.w[1]--; CS.w[0]--; } } #ifndef IEEE_ROUND_NEAREST #ifndef IEEE_ROUND_NEAREST_TIES_AWAY } else { __sqr128_to_256 (M256, CS); C8.w[1] = (CS.w[1] << 1) | (CS.w[0] >> 63); C8.w[0] = CS.w[0] << 1; if (M256.w[3] > C256.w[3] || (M256.w[3] == C256.w[3] && (M256.w[2] > C256.w[2] || (M256.w[2] == C256.w[2] && (M256.w[1] > C256.w[1] || (M256.w[1] == C256.w[1] && M256.w[0] > C256.w[0])))))) { __sub_borrow_out (M256.w[0], Carry, M256.w[0], C8.w[0]); __sub_borrow_in_out (M256.w[1], Carry, M256.w[1], C8.w[1], Carry); __sub_borrow_in_out (M256.w[2], Carry, M256.w[2], 0, Carry); M256.w[3] = M256.w[3] - Carry; M256.w[0]++; if (!M256.w[0]) { M256.w[1]++; if (!M256.w[1]) { M256.w[2]++; if (!M256.w[2]) M256.w[3]++; } } if (!CS.w[0]) CS.w[1]--; CS.w[0]--; if (M256.w[3] > C256.w[3] || (M256.w[3] == C256.w[3] && (M256.w[2] > C256.w[2] || (M256.w[2] == C256.w[2] && (M256.w[1] > C256.w[1] || (M256.w[1] == C256.w[1] && M256.w[0] > C256.w[0])))))) { if (!CS.w[0]) CS.w[1]--; CS.w[0]--; } } else { __add_carry_out (M256.w[0], Carry, M256.w[0], C8.w[0]); __add_carry_in_out (M256.w[1], Carry, M256.w[1], C8.w[1], Carry); __add_carry_in_out (M256.w[2], Carry, M256.w[2], 0, Carry); M256.w[3] = M256.w[3] + Carry; M256.w[0]++; if (!M256.w[0]) { M256.w[1]++; if (!M256.w[1]) { M256.w[2]++; if (!M256.w[2]) M256.w[3]++; } } if (M256.w[3] < C256.w[3] || (M256.w[3] == C256.w[3] && (M256.w[2] < C256.w[2] || (M256.w[2] == C256.w[2] && (M256.w[1] < C256.w[1] || (M256.w[1] == C256.w[1] && M256.w[0] <= C256.w[0])))))) { CS.w[0]++; if (!CS.w[0]) CS.w[1]++; } } // RU? if ((rnd_mode) == BID_ROUNDING_UP) { CS.w[0]++; if (!CS.w[0]) CS.w[1]++; } } #endif #endif #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INEXACT_EXCEPTION); #endif bid_get_BID128_fast (&res, 0, (exponent_q + DECIMAL_EXPONENT_BIAS_128) >> 1, CS); #ifdef UNCHANGED_BINARY_STATUS_FLAGS // (void) fesetexceptflag (&binaryflags, BID_FE_ALL_FLAGS); #endif // restore the rounding mode back if it has been changed if (rm_changed) fesetround(old_rm); BID_RETURN (res); } LIBRARY/src/bid64_lgamma.c0000644€­ Q01134020000000752215113665770014236 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" BID_F80_CONST_DEF( c_half, 3ffe000000000000, 0000000000000000); // 0.5 #define BID64_INF 0x7800000000000000ull BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT64, bid64_lgamma, BID_UINT64, x) // Declare local variables BID_UINT64 res, x_int, x_frac; BID_F128_TYPE xd, yd, fd, rt; int cmp_res; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc03ffffffffffffull; if ((res & 0x0003ffffffffffffull) > 999999999999999ull) res &= ~0x0003ffffffffffffull; BID_RETURN(res); } // Convert to binary BIDECIMAL_CALL1(bid64_to_binary128,xd,x); // If x >= 1/2 then we're just safe doing the operation naively; // the condition at the top is a bit marginal but within reasonable bounds. // This applies even to the case x = +inf where lgamma(x) = +inf if (__bid_f128_ge(xd, c_half.v) ) { __bid_f128_lgamma(yd,xd); BIDECIMAL_CALL1(binary128_to_bid64,res,yd); BID_RETURN (res); } // Filter out the case of negative infinity, where we return +inf BIDECIMAL_CALL1_NORND_NOSTAT(bid64_isInf,cmp_res,x); if (cmp_res) { res = BID64_INF; BID_RETURN (res); } // Otherwise, even with the extra precision, we may need to worry // about the singularities at nonnegative integers. So we use the reflection // formula // // Gamma(x) = pi / (sin (pi * x) * Gamma(1 - x)) // log|Gamma(x)| = log pi - lgamma(1 - x) - log|sin(pi * x)| // // Form the integer and fractional parts of x, and convert fractional // part to long double. BIDECIMAL_CALL1_NORND(bid64_round_integral_nearest_even, x_int, x); BIDECIMAL_CALL2(bid64_sub,x_frac,x,x_int); // If the fractional part is 0, return +inf BIDECIMAL_CALL1_NORND_NOSTAT(bid64_isZero,cmp_res,x_frac); if (cmp_res) { res = BID64_INF; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif BID_RETURN (res); } __bid_f128_lgamma(yd, xd); BIDECIMAL_CALL1(binary128_to_bid64,res,yd); BID_RETURN (res); } LIBRARY/src/bid32_cosh.c0000644€­ Q01134020000000462215113665770013725 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double cosh(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_cosh, BID_UINT32, x) // Declare local variables BID_UINT32 res; double xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Convert to binary and do the operation naively BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = cosh(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } LIBRARY/src/bid64_to_uint8.c0000644€­ Q01134020000000653215113665770014551 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define SIZE_MASK 0xffffff00 #define INVALID_RESULT 0x80 BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid64_to_uint8_rnint, BID_UINT64, x, bid64_to_uint32_rnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid64_to_uint8_xrnint, BID_UINT64, x, bid64_to_uint32_xrnint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid64_to_uint8_rninta, BID_UINT64, x, bid64_to_uint32_rninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid64_to_uint8_xrninta, BID_UINT64, x, bid64_to_uint32_xrninta, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid64_to_uint8_int, BID_UINT64, x, bid64_to_uint32_int, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid64_to_uint8_xint, BID_UINT64, x, bid64_to_uint32_xint, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid64_to_uint8_floor, BID_UINT64, x, bid64_to_uint32_floor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid64_to_uint8_ceil, BID_UINT64, x, bid64_to_uint32_ceil, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid64_to_uint8_xfloor, BID_UINT64, x, bid64_to_uint32_xfloor, unsigned int, SIZE_MASK, INVALID_RESULT) BID_TO_SMALL_BID_UINT_CVT_FUNCTION (unsigned char, bid64_to_uint8_xceil, BID_UINT64, x, bid64_to_uint32_xceil, unsigned int, SIZE_MASK, INVALID_RESULT) LIBRARY/src/bid_strtod.h0000644€­ Q01134020000001452615113665770014154 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include #include #include #include #include #include "bid_internal.h" //#define RESTRICT restrict #define RESTRICT #define set_str_end(e,p) if(e) { *e=(char*)p; } #define isdigit_macro(x) ((x)>='0' && (x)<='9') #define set_wcs_end(e,p) if(e) { *(e)=(wchar_t*)p; } #define towlower_macro(x) (((x)>=L'A' && (x)<=L'Z')? ((x)-L'A'+L'a') : (x)) #define iswdigit_macro(x) ((x)>=L'0' && (x)<=L'9') __BID_INLINE__ char * strtod_conversion (const char* RESTRICT ps_in, char** RESTRICT endptr) { char * ps0, *ps, *ptail; if(!ps_in) { if(endptr) *endptr=NULL; return NULL; } while(isspace(*ps_in)) ps_in++; ps = malloc((strlen(ps_in)+2)*sizeof(char)); if(!ps) { set_str_end(endptr, ps_in); return NULL; } strcpy(ps, ps_in); ptail = (char*)ps_in; ps0 = (char*)ps; if((*ps == '+') || (*ps=='-')) { ps++; ptail++; } // Infinity? if ((tolower_macro (ps[0]) == 'i' && tolower_macro (ps[1]) == 'n' && tolower_macro (ps[2]) == 'f')) { if(tolower_macro (ps[3]) == 'i' && tolower_macro (ps[4]) == 'n' && tolower_macro (ps[5]) == 'i' && tolower_macro (ps[6]) == 't' && tolower_macro (ps[7]) == 'y') { ps+=8; ptail+=8; set_str_end(endptr, ptail); } else { ps+=3; ptail+=3; set_str_end(endptr, ptail);} } else if(tolower_macro (ps[0]) == 'n' && tolower_macro (ps[1]) == 'a' && tolower_macro (ps[2]) == 'n') { ps+=3; ptail+=3; while(isdigit_macro(*ps)) { ps++; ptail++; } set_str_end(endptr, ptail); if(*ps0=='-') strcpy(ps0,"-QNAN"); else strcpy(ps0, "QNAN"); } else { if(!isdigit_macro(*ps) && ((*ps)!='.')) { if(endptr) *endptr=(char*)ps_in; free(ps0); return NULL; // no conversion } while(isdigit_macro(*ps)) { ps++; ptail++; } if((*ps) == '.') { if((ps0!=ps) || isdigit_macro(ps[1])) { ps++; ptail++; while(isdigit_macro(*ps)) {ps++; ptail++;} } else { if(endptr) *endptr=(char*)ps_in; free(ps0); return NULL; // no conversion } } if(tolower_macro(*ps) == 'e') { if((ps[1]=='+') || (ps[1]=='-') || (isdigit_macro(ps[1]))) { ps+=2; ptail+=2; while(isdigit_macro(*ps)) {ps++; ptail++;} } } set_str_end(endptr, ptail); } *ps = '\0'; return ps0; } __BID_INLINE__ char * wcstod_conversion (const wchar_t* RESTRICT ps_in, wchar_t** RESTRICT endptr) { wchar_t * ps0, *ps, *ptail; char* ps0_c; int i,k; if(!ps_in) { if(endptr) *endptr=NULL; return NULL; } while(iswspace(*ps_in)) ps_in++; k = 1+wcslen(ps_in); ps = malloc((k+1)*sizeof(wchar_t)); if(!ps) { set_wcs_end(endptr,ps_in); return NULL; } wcscpy(ps, ps_in); ptail = (wchar_t*)ps_in; ps0 = ps; k=1; if((*ps == L'+') || (*ps==L'-')) {ps++; ptail++; k++;} // Infinity? if ((towlower_macro (ps[0]) == L'i' && towlower_macro (ps[1]) == L'n' && towlower_macro (ps[2]) == L'f')) { if(towlower_macro (ps[3]) == L'i' && towlower_macro (ps[4]) == L'n' && towlower_macro (ps[5]) == L'i' && towlower_macro (ps[6]) == L't' && towlower_macro (ps[7]) == L'y') { ps+=8; ptail+=8; set_wcs_end(endptr, ptail); k+=8; } else { ps+=3; ptail+=3; set_wcs_end(endptr, ptail); k+=3; } } else if(towlower_macro (ps[0]) == L'n' && towlower_macro (ps[1]) == L'a' && towlower_macro (ps[2]) == L'n') { ps+=3; ptail+=3; while(iswdigit_macro(*ps)) {ps++; ptail++;} set_wcs_end(endptr, ptail); if(*ps0==L'-') { ps0[0] = L'-'; ps0[1] = L'Q'; ps0[2] = L'N'; ps0[3] = L'A'; ps0[4] = L'N'; ps0[5] = L'\0'; k=6; } else { ps0[0] = L'Q'; ps0[1] = L'N'; ps0[2] = L'A'; ps0[3] = L'N'; ps0[4] = L'\0'; k=5; } } else { if(!iswdigit_macro(*ps) && ((*ps)!=L'.')) { if(endptr) *endptr=(wchar_t*)ps_in; free(ps0); return NULL; // no conversion } while(iswdigit_macro(*ps)) { ps++; ptail++; k++; } if((*ps) == L'.') { if((ps0!=ps) || iswdigit_macro(ps[1])) { ps++; ptail++; k++; while(iswdigit_macro(*ps)) { ps++; ptail++; k++; } } else { if(endptr) *endptr=(wchar_t*)ps_in; free(ps0); return NULL; // no conversion } } if(towlower_macro(*ps) == L'e') { if((ps[1]=='+') || (ps[1]=='-') || (iswdigit_macro(ps[1]))) { { ps+=2; ptail+=2; k+=2; } while(iswdigit_macro(*ps)) { ps++; ptail++; k++; } } } set_wcs_end(endptr, ptail); } *ps = L'\0'; ps0_c = malloc(k*sizeof(char)); if(!ps0_c) { free(ps0); return NULL;} for(i=0; i 999999999999999ull) { x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity x = x & (MASK_SIGN | MASK_INF); } else { // x is not special // check for non-canonical values - treated as zero if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((x & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull) { // non-canonical x = (x & MASK_SIGN) | ((x & MASK_BINARY_EXPONENT2) << 2); } // else canonical } // else canonical } // check for non-canonical y if ((y & MASK_NAN) == MASK_NAN) { // y is NaN y = y & 0xfe03ffffffffffffull; // clear G6-G12 if ((y & 0x0003ffffffffffffull) > 999999999999999ull) { y = y & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } } else if ((y & MASK_INF) == MASK_INF) { // check for Infinity y = y & (MASK_SIGN | MASK_INF); } else { // y is not special // check for non-canonical values - treated as zero if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((y & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull) { // non-canonical y = (y & MASK_SIGN) | ((y & MASK_BINARY_EXPONENT2) << 2); } // else canonical } // else canonical } // NaN (CASE1) if ((x & MASK_NAN) == MASK_NAN) { // x is NAN if ((x & MASK_SNAN) == MASK_SNAN) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x = x & 0xfdffffffffffffffull; // quietize x res = x; } else { // x is QNaN if ((y & MASK_NAN) == MASK_NAN) { // y is NAN if ((y & MASK_SNAN) == MASK_SNAN) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y & MASK_NAN) == MASK_NAN) { // y is NaN, but x is not if ((y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y = y & 0xfdffffffffffffffull; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal, return either number if (x == y) { res = x; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // if x is neg infinity, there is no way it is greater than y, return x if (((x & MASK_SIGN) == MASK_SIGN)) { res = x; BID_RETURN (res); } // x is pos infinity, return y else { res = y; BID_RETURN (res); } } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return y // if y is negative infinity, then x is greater, return x res = ((y & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); } // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore // ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // ignore the exponent field // (Any non-canonical # is considered 0) if (sig_x == 0) { x_is_zero = 1; } if (sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, neither is greater => return either res = y; BID_RETURN (res); } else if (x_is_zero) { // is x is zero, it is greater if Y is negative res = ((y & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } else if (y_is_zero) { // is y is zero, X is greater if it is positive res = ((x & MASK_SIGN) != MASK_SIGN) ? y : x;; BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN) ? y : x; BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) != MASK_SIGN) ? y : x; // difference cannot be >10^15 BID_RETURN (res); } // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = y; BID_RETURN (res); } res = (((sig_n_prime.w[1] > 0) || sig_n_prime.w[0] > sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)) ? y : x; BID_RETURN (res); } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // if postitive, return whichever significand is larger (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = y; BID_RETURN (res); } res = (((sig_n_prime.w[1] == 0) && (sig_x > sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)) ? y : x; BID_RETURN (res); } /***************************************************************************** * BID64 minimum magnitude function - returns greater of two numbers *****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT64, bid64_minnum_mag, BID_UINT64, x, BID_UINT64, y) BID_UINT64 res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; // check for non-canonical x if ((x & MASK_NAN) == MASK_NAN) { // x is NaN x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & 0x0003ffffffffffffull) > 999999999999999ull) { x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity x = x & (MASK_SIGN | MASK_INF); } else { // x is not special // check for non-canonical values - treated as zero if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((x & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull) { // non-canonical x = (x & MASK_SIGN) | ((x & MASK_BINARY_EXPONENT2) << 2); } // else canonical } // else canonical } // check for non-canonical y if ((y & MASK_NAN) == MASK_NAN) { // y is NaN y = y & 0xfe03ffffffffffffull; // clear G6-G12 if ((y & 0x0003ffffffffffffull) > 999999999999999ull) { y = y & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } } else if ((y & MASK_INF) == MASK_INF) { // check for Infinity y = y & (MASK_SIGN | MASK_INF); } else { // y is not special // check for non-canonical values - treated as zero if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((y & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull) { // non-canonical y = (y & MASK_SIGN) | ((y & MASK_BINARY_EXPONENT2) << 2); } // else canonical } // else canonical } // NaN (CASE1) if ((x & MASK_NAN) == MASK_NAN) { // x is NAN if ((x & MASK_SNAN) == MASK_SNAN) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x = x & 0xfdffffffffffffffull; // quietize x res = x; } else { // x is QNaN if ((y & MASK_NAN) == MASK_NAN) { // y is NAN if ((y & MASK_SNAN) == MASK_SNAN) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y & MASK_NAN) == MASK_NAN) { // y is NaN, but x is not if ((y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y = y & 0xfdffffffffffffffull; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal, return either number if (x == y) { res = x; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // x is infinity, its magnitude is greater than or equal to y // return x only if y is infinity and x is negative res = ((x & MASK_SIGN) == MASK_SIGN && (y & MASK_INF) == MASK_INF) ? x : y; BID_RETURN (res); } else if ((y & MASK_INF) == MASK_INF) { // y is infinity, then it must be greater in magnitude, return x res = x; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); } // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore // ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // ignore the exponent field // (Any non-canonical # is considered 0) if (sig_x == 0) { res = x; // x_is_zero, its magnitude must be smaller than y BID_RETURN (res); } if (sig_y == 0) { res = y; // y_is_zero, its magnitude must be smaller than x BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = y; BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = x; BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = y; // difference cannot be greater than 10^15 BID_RETURN (res); } // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = x; BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // now, sig_n_prime has: sig_x * 10^(exp_x-exp_y), this is // the compensated signif. if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { // two numbers are equal, return minNum(x,y) res = ((y & MASK_SIGN) == MASK_SIGN) ? y : x; BID_RETURN (res); } // now, if compensated_x (sig_n_prime) is greater than y, return y, // otherwise return x res = ((sig_n_prime.w[1] != 0) || sig_n_prime.w[0] > sig_y) ? y : x; BID_RETURN (res); } // exp_y must be greater than exp_x, thus adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = ((y & MASK_SIGN) == MASK_SIGN) ? y : x; // two numbers are equal, return either BID_RETURN (res); } res = ((sig_n_prime.w[1] == 0) && (sig_x > sig_n_prime.w[0])) ? y : x; BID_RETURN (res); } /***************************************************************************** * BID64 maximum function - returns greater of two numbers *****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT64, bid64_maxnum, BID_UINT64, x, BID_UINT64, y) BID_UINT64 res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; char x_is_zero = 0, y_is_zero = 0; // check for non-canonical x if ((x & MASK_NAN) == MASK_NAN) { // x is NaN x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & 0x0003ffffffffffffull) > 999999999999999ull) { x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity x = x & (MASK_SIGN | MASK_INF); } else { // x is not special // check for non-canonical values - treated as zero if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((x & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull) { // non-canonical x = (x & MASK_SIGN) | ((x & MASK_BINARY_EXPONENT2) << 2); } // else canonical } // else canonical } // check for non-canonical y if ((y & MASK_NAN) == MASK_NAN) { // y is NaN y = y & 0xfe03ffffffffffffull; // clear G6-G12 if ((y & 0x0003ffffffffffffull) > 999999999999999ull) { y = y & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } } else if ((y & MASK_INF) == MASK_INF) { // check for Infinity y = y & (MASK_SIGN | MASK_INF); } else { // y is not special // check for non-canonical values - treated as zero if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((y & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull) { // non-canonical y = (y & MASK_SIGN) | ((y & MASK_BINARY_EXPONENT2) << 2); } // else canonical } // else canonical } // NaN (CASE1) if ((x & MASK_NAN) == MASK_NAN) { // x is NAN if ((x & MASK_SNAN) == MASK_SNAN) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x = x & 0xfdffffffffffffffull; // quietize x res = x; } else { // x is QNaN if ((y & MASK_NAN) == MASK_NAN) { // y is NAN if ((y & MASK_SNAN) == MASK_SNAN) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y & MASK_NAN) == MASK_NAN) { // y is NaN, but x is not if ((y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y = y & 0xfdffffffffffffffull; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal (not Greater). if (x == y) { res = x; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // x = +/-infinity // if x is neg infinity, there is no way it is greater than y, return y // x is pos infinity, it is greater, unless y is positive infinity => // return y!=pos_infinity if (((x & MASK_SIGN) == MASK_SIGN)) { // x = -infinity res = y; } else { // x = +infinity res = x; } BID_RETURN (res); } else if ((y & MASK_INF) == MASK_INF) { // x is finite, so if y is positive infinity, then x is less, return y // if y is negative infinity, then x is greater, return x res = ((y & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); } // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore // ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // ignore the exponent field // (Any non-canonical # is considered 0) if (sig_x == 0) { x_is_zero = 1; } if (sig_y == 0) { y_is_zero = 1; } if (x_is_zero && y_is_zero) { // if both numbers are zero, neither is greater => return NOTGREATERTHAN res = y; BID_RETURN (res); } else if (x_is_zero) { // is x is zero, it is greater if Y is negative res = ((y & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } else if (y_is_zero) { // is y is zero, X is greater if it is positive res = ((x & MASK_SIGN) != MASK_SIGN) ? x : y;; BID_RETURN (res); } // OPPOSITE SIGN (CASE5) // now, if the sign bits differ, x is greater if y is negative if (((x ^ y) & MASK_SIGN) == MASK_SIGN) { res = ((y & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = ((x & MASK_SIGN) != MASK_SIGN) ? x : y; BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = ((x & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = ((x & MASK_SIGN) != MASK_SIGN) ? x : y; // difference cannot be > 10^15 BID_RETURN (res); } // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = ((x & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // if postitive, return whichever significand is larger // (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { res = y; BID_RETURN (res); } res = (((sig_n_prime.w[1] > 0) || sig_n_prime.w[0] > sig_y) ^ ((x & MASK_SIGN) == MASK_SIGN)) ? x : y; BID_RETURN (res); } // adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); // if postitive, return whichever significand is larger (converse if negative) if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = y; BID_RETURN (res); } res = (((sig_n_prime.w[1] == 0) && (sig_x > sig_n_prime.w[0])) ^ ((x & MASK_SIGN) == MASK_SIGN)) ? x : y; BID_RETURN (res); } /***************************************************************************** * BID64 maximum magnitude function - returns greater of two numbers *****************************************************************************/ BID_TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2_NORND(BID_UINT64, bid64_maxnum_mag, BID_UINT64, x, BID_UINT64, y) BID_UINT64 res; int exp_x, exp_y; BID_UINT64 sig_x, sig_y; BID_UINT128 sig_n_prime; // check for non-canonical x if ((x & MASK_NAN) == MASK_NAN) { // x is NaN x = x & 0xfe03ffffffffffffull; // clear G6-G12 if ((x & 0x0003ffffffffffffull) > 999999999999999ull) { x = x & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } } else if ((x & MASK_INF) == MASK_INF) { // check for Infinity x = x & (MASK_SIGN | MASK_INF); } else { // x is not special // check for non-canonical values - treated as zero if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((x & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull) { // non-canonical x = (x & MASK_SIGN) | ((x & MASK_BINARY_EXPONENT2) << 2); } // else canonical } // else canonical } // check for non-canonical y if ((y & MASK_NAN) == MASK_NAN) { // y is NaN y = y & 0xfe03ffffffffffffull; // clear G6-G12 if ((y & 0x0003ffffffffffffull) > 999999999999999ull) { y = y & 0xfe00000000000000ull; // clear G6-G12 and the payload bits } } else if ((y & MASK_INF) == MASK_INF) { // check for Infinity y = y & (MASK_SIGN | MASK_INF); } else { // y is not special // check for non-canonical values - treated as zero if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { // if the steering bits are 11, then the exponent is G[0:w+1] if (((y & MASK_BINARY_SIG2) | MASK_BINARY_OR2) > 9999999999999999ull) { // non-canonical y = (y & MASK_SIGN) | ((y & MASK_BINARY_EXPONENT2) << 2); } // else canonical } // else canonical } // NaN (CASE1) if ((x & MASK_NAN) == MASK_NAN) { // x is NAN if ((x & MASK_SNAN) == MASK_SNAN) { // x is SNaN // if x is SNAN, then return quiet (x) *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN x = x & 0xfdffffffffffffffull; // quietize x res = x; } else { // x is QNaN if ((y & MASK_NAN) == MASK_NAN) { // y is NAN if ((y & MASK_SNAN) == MASK_SNAN) { // y is SNAN *pfpsf |= BID_INVALID_EXCEPTION; // set invalid flag } res = x; } else { res = y; } } BID_RETURN (res); } else if ((y & MASK_NAN) == MASK_NAN) { // y is NaN, but x is not if ((y & MASK_SNAN) == MASK_SNAN) { *pfpsf |= BID_INVALID_EXCEPTION; // set exception if SNaN y = y & 0xfdffffffffffffffull; // quietize y res = y; } else { // will return x (which is not NaN) res = x; } BID_RETURN (res); } // SIMPLE (CASE2) // if all the bits are the same, these numbers are equal, return either number if (x == y) { res = x; BID_RETURN (res); } // INFINITY (CASE3) if ((x & MASK_INF) == MASK_INF) { // x is infinity, its magnitude is greater than or equal to y // return y as long as x isn't negative infinity res = ((x & MASK_SIGN) == MASK_SIGN && (y & MASK_INF) == MASK_INF) ? y : x; BID_RETURN (res); } else if ((y & MASK_INF) == MASK_INF) { // y is infinity, then it must be greater in magnitude res = y; BID_RETURN (res); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_x = (x & MASK_BINARY_EXPONENT2) >> 51; sig_x = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2; } else { exp_x = (x & MASK_BINARY_EXPONENT1) >> 53; sig_x = (x & MASK_BINARY_SIG1); } // if steering bits are 11 (condition will be 0), then exponent is G[0:w+1] => if ((y & MASK_STEERING_BITS) == MASK_STEERING_BITS) { exp_y = (y & MASK_BINARY_EXPONENT2) >> 51; sig_y = (y & MASK_BINARY_SIG2) | MASK_BINARY_OR2; } else { exp_y = (y & MASK_BINARY_EXPONENT1) >> 53; sig_y = (y & MASK_BINARY_SIG1); } // ZERO (CASE4) // some properties: // (+ZERO == -ZERO) => therefore // ignore the sign, and neither number is greater // (ZERO x 10^A == ZERO x 10^B) for any valid A, B => // ignore the exponent field // (Any non-canonical # is considered 0) if (sig_x == 0) { res = y; // x_is_zero, its magnitude must be smaller than y BID_RETURN (res); } if (sig_y == 0) { res = x; // y_is_zero, its magnitude must be smaller than x BID_RETURN (res); } // REDUNDANT REPRESENTATIONS (CASE6) // if both components are either bigger or smaller, // it is clear what needs to be done if (sig_x > sig_y && exp_x >= exp_y) { res = x; BID_RETURN (res); } if (sig_x < sig_y && exp_x <= exp_y) { res = y; BID_RETURN (res); } // if exp_x is 15 greater than exp_y, no need for compensation if (exp_x - exp_y > 15) { res = x; // difference cannot be greater than 10^15 BID_RETURN (res); } // if exp_x is 15 less than exp_y, no need for compensation if (exp_y - exp_x > 15) { res = y; BID_RETURN (res); } // if |exp_x - exp_y| < 15, it comes down to the compensated significand if (exp_x > exp_y) { // to simplify the loop below, // otherwise adjust the x significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_x, bid_mult_factor[exp_x - exp_y]); // now, sig_n_prime has: sig_x * 10^(exp_x-exp_y), // this is the compensated signif. if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_y)) { // two numbers are equal, return maxNum(x,y) res = ((y & MASK_SIGN) == MASK_SIGN) ? x : y; BID_RETURN (res); } // now, if compensated_x (sig_n_prime) is greater than y return y, // otherwise return x res = ((sig_n_prime.w[1] != 0) || sig_n_prime.w[0] > sig_y) ? x : y; BID_RETURN (res); } // exp_y must be greater than exp_x, thus adjust the y significand upwards __mul_64x64_to_128MACH (sig_n_prime, sig_y, bid_mult_factor[exp_y - exp_x]); if (sig_n_prime.w[1] == 0 && (sig_n_prime.w[0] == sig_x)) { res = ((y & MASK_SIGN) == MASK_SIGN) ? x : y; // two numbers are equal, return either BID_RETURN (res); } res = ((sig_n_prime.w[1] == 0) && (sig_x > sig_n_prime.w[0])) ? x : y; BID_RETURN (res); } LIBRARY/src/bid32_atan.c0000644€­ Q01134020000000500215113665770013705 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" double atan(double); BID_TYPE0_FUNCTION_ARGTYPE1(BID_UINT32, bid32_atan, BID_UINT32, x) // Declare local variables BID_UINT32 res; double xd, yd; // Check for NaN and just return the same NaN, quieted and canonized if ((x & NAN_MASK32) == NAN_MASK32) { #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK32) == SNAN_MASK32) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = x & 0xfc0ffffful; if ((res & 0x000ffffful) > 999999ul) res &= ~0x000ffffful; BID_RETURN(res); } // Otherwise just do the operation "naively". // We inherit the atan([-]inf) = [-]pi/2 case from the binary function // rather than having a special case for it. BIDECIMAL_CALL1(bid32_to_binary64,xd,x); yd = atan(xd); BIDECIMAL_CALL1(binary64_to_bid32,res,yd); BID_RETURN (res); } LIBRARY/src/strtod32.c0000644€­ Q01134020000000430415113665770013467 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_strtod.h" DFP_WRAPFN_TYPE1_TYPE2(32, bid_strtod32, const char* RESTRICT , char** RESTRICT) BID_UINT32 bid_strtod32(const char* RESTRICT ps_in, char** RESTRICT endptr) { char * ps0; BID_UINT32 DR; #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS unsigned fpsc=0, *pfpsf=&fpsc; #endif #if !DECIMAL_GLOBAL_ROUNDING unsigned rnd_mode=0; #endif ps0 = strtod_conversion(ps_in, endptr); if(!ps0) return 0x32800000ull; // 0.0 BIDECIMAL_CALL1_RESARG (bid32_from_string, DR, ps0); free(ps0); return DR; } LIBRARY/src/bid128_nearbyintd.c0000644€­ Q01134020000006461315113665770015224 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BID_128RES #include "bid_internal.h" /***************************************************************************** * BID128_nearbyintd ****************************************************************************/ BID128_FUNCTION_ARG1(bid128_nearbyint, x) BID_UINT128 res = { {0xbaddbaddbaddbaddull, 0xbaddbaddbaddbaddull} }; BID_UINT64 x_sign; BID_UINT64 x_exp; int exp; // unbiased exponent // Note: C1.w[1], C1.w[0] represent x_signif_hi, x_signif_lo (all are BID_UINT64) BID_UINT64 tmp64; BID_UI64DOUBLE tmp1; unsigned int x_nr_bits = 0; int q, ind, shift; BID_UINT128 C1; BID_UINT256 fstar; BID_UINT256 P256; // check for NaN or Infinity if ((x.w[1] & MASK_SPECIAL) == MASK_SPECIAL) { // x is special if ((x.w[1] & MASK_NAN) == MASK_NAN) { // x is NAN // if x = NaN, then res = Q (x) // check first for non-canonical NaN payload if (((x.w[1] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((x.w[1] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && (x.w[0] > 0x38c15b09ffffffffull))) { x.w[1] = x.w[1] & 0xffffc00000000000ull; x.w[0] = 0x0ull; } if ((x.w[1] & MASK_SNAN) == MASK_SNAN) { // x is SNAN // set invalid flag *pfpsf |= BID_INVALID_EXCEPTION; // return quiet (x) res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out also G[6]-G[16] res.w[0] = x.w[0]; } else { // x is QNaN // return x res.w[1] = x.w[1] & 0xfc003fffffffffffull; // clear out G[6]-G[16] res.w[0] = x.w[0]; } BID_RETURN(res) } else { // x is not a NaN, so it must be infinity if ((x.w[1] & MASK_SIGN) == 0x0ull) { // x is +inf // return +inf res.w[1] = 0x7800000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // x is -inf // return -inf res.w[1] = 0xf800000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN(res); } } // unpack x x_sign = x.w[1] & MASK_SIGN; // 0 for positive, MASK_SIGN for negative C1.w[1] = x.w[1] & MASK_COEFF; C1.w[0] = x.w[0]; // check for non-canonical values (treated as zero) if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) { // G0_G1=11 // non-canonical x_exp = (x.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits C1.w[1] = 0; // significand high C1.w[0] = 0; // significand low } else { // G0_G1 != 11 x_exp = x.w[1] & MASK_EXP; // biased and shifted left 49 bits if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] > 0x378d8e63ffffffffull)) { // x is non-canonical if coefficient is larger than 10^34 -1 C1.w[1] = 0; C1.w[0] = 0; } else { // canonical ; } } // test for input equal to zero if ((C1.w[1] == 0x0ull) && (C1.w[0] == 0x0ull)) { // x is 0 // return 0 preserving the sign bit and the preferred exponent // of MAX(Q(x), 0) if (x_exp <= (0x1820ull << 49)) { res.w[1] = (x.w[1] & 0x8000000000000000ull) | 0x3040000000000000ull; } else { res.w[1] = x_sign | x_exp; } res.w[0] = 0x0000000000000000ull; BID_RETURN(res); } // x is not special and is not zero switch (rnd_mode) { case BID_ROUNDING_TO_NEAREST: case BID_ROUNDING_TIES_AWAY: // if (exp <= -(p+1)) return 0.0 if (x_exp <= 0x2ffa000000000000ull) { // 0x2ffa000000000000ull == -35 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN(res); } break; case BID_ROUNDING_DOWN: // if (exp <= -p) return -1.0 or +0.0 if (x_exp <= 0x2ffc000000000000ull) { // 0x2ffa000000000000ull == -34 if (x_sign) { // if negative, return negative 1, because we know coefficient // is non-zero (would have been caught above) res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000001ull; } else { // if positive, return positive 0, because we know coefficient is // non-zero (would have been caught above) res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN(res); } break; case BID_ROUNDING_UP: // if (exp <= -p) return -0.0 or +1.0 if (x_exp <= 0x2ffc000000000000ull) { // 0x2ffc000000000000ull == -34 if (x_sign) { // if negative, return negative 0, because we know the coefficient // is non-zero (would have been caught above) res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // if positive, return positive 1, because we know coefficient is // non-zero (would have been caught above) res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000001ull; } BID_RETURN(res); } break; case BID_ROUNDING_TO_ZERO: // if (exp <= -p) return -0.0 or +0.0 if (x_exp <= 0x2ffc000000000000ull) { // 0x2ffc000000000000ull == -34 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN(res); } break; default: break; // default added to avoid compiler warning } // q = nr. of decimal digits in x // determine first the nr. of bits in x if (C1.w[1] == 0) { if (C1.w[0] >= 0x0020000000000000ull) { // x >= 2^53 // split the 64-bit value in two 32-bit halves to avoid rounding errors tmp1.d = (double) (C1.w[0] >> 32); // exact conversion x_nr_bits = 33 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } else { // if x < 2^53 tmp1.d = (double) C1.w[0]; // exact conversion x_nr_bits = 1 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } } else { // C1.w[1] != 0 => nr. bits = 64 + nr_bits (C1.w[1]) tmp1.d = (double) C1.w[1]; // exact conversion x_nr_bits = 65 + ((((unsigned int) (tmp1.ui64 >> 52)) & 0x7ff) - 0x3ff); } q = bid_nr_digits[x_nr_bits - 1].digits; if (q == 0) { q = bid_nr_digits[x_nr_bits - 1].digits1; if (C1.w[1] > bid_nr_digits[x_nr_bits - 1].threshold_hi || (C1.w[1] == bid_nr_digits[x_nr_bits - 1].threshold_hi && C1.w[0] >= bid_nr_digits[x_nr_bits - 1].threshold_lo)) q++; } exp = (x_exp >> 49) - 6176; if (exp >= 0) { // -exp <= 0 // the argument is an integer already res.w[1] = x.w[1]; res.w[0] = x.w[0]; BID_RETURN(res); } // exp < 0 switch (rnd_mode) { case BID_ROUNDING_TO_NEAREST: if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256(P256, C1, bid_ten2mk128[ind - 1]); // determine the value of res and fstar if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 // redundant shift = bid_shiftright128[ind - 1]; // shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* < 10^(-x) <=> midpoint // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] // if 0 < fstar < 10^(-x), subtract 1 if odd (for rounding to even) if ((res.w[0] & 0x0000000000000001ull) && // is result odd and from a midpoint? ((fstar.w[1] < (bid_ten2mk128[ind - 1].w[1])) || ((fstar.w[1] == bid_ten2mk128[ind - 1].w[1]) && (fstar.w[0] < bid_ten2mk128[ind - 1].w[0])))) { // subtract 1 to make even res.w[0]--; } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* < 10^(-x) <=> midpoint // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((res.w[0] & 0x0000000000000001ull) && // is result odd and from a midpoint? fstar.w[2] == 0 && (fstar.w[1] < bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] < bid_ten2mk128[ind - 1].w[0]))) { // subtract 1 to make even res.w[0]--; } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // fraction f* < 10^(-x) <=> midpoint // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((res.w[0] & 0x0000000000000001ull) && // is result odd and from a midpoint? fstar.w[3] == 0 && fstar.w[2] == 0 && (fstar.w[1] < bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] < bid_ten2mk128[ind - 1].w[0]))) { // subtract 1 to make even res.w[0]--; } } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN(res); } else { // if ((q + exp) < 0) <=> q < -exp // the result is +0 or -0 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN(res); } break; case BID_ROUNDING_TIES_AWAY: if ((q + exp) >= 0) { // exp < 0 and 1 <= -exp <= q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // chop off ind digits from the lower part of C1 // C1 = C1 + 1/2 * 10^x where the result C1 fits in 127 bits tmp64 = C1.w[0]; if (ind <= 19) { C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; } else { C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; } if (C1.w[0] < tmp64) C1.w[1]++; // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256(P256, C1, bid_ten2mk128[ind - 1]); // the top Ex bits of 10^(-x) are T* = bid_ten2mk128trunc[ind], e.g. // if x=1, T*=bid_ten2mk128trunc[0]=0x19999999999999999999999999999999 // if (0 < f* < 10^(-x)) then the result is a midpoint // if floor(C*) is even then C* = floor(C*) - logical right // shift; C* has p decimal digits, correct by Prop. 1) // else if floor(C*) is odd C* = floor(C*)-1 (logical right // shift; C* has p decimal digits, correct by Pr. 1) // else // C* = floor(C*) (logical right shift; C has p decimal digits, // correct by Property 1) // n = C* * 10^(e+x) if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 // redundant shift = bid_shiftright128[ind - 1]; // shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; } // if the result was a midpoint, it was already rounded away from zero res.w[1] |= x_sign | 0x3040000000000000ull; BID_RETURN(res); } else { // if ((q + exp) < 0) <=> q < -exp // the result is +0 or -0 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN(res); } break; case BID_ROUNDING_DOWN: if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // (number of digits to be chopped off) // chop off ind digits from the lower part of C1 // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate // FOR ROUND_TO_ZERO, WE DON'T NEED TO ADD 1/2 ULP // FOR ROUND_TO_POSITIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF POSITIVE // FOR ROUND_TO_NEGATIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF NEGATIVE // tmp64 = C1.w[0]; // if (ind <= 19) { // C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; // } else { // C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; // C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; // } // if (C1.w[0] < tmp64) C1.w[1]++; // if carry-out from C1.w[0], increment C1.w[1] // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256(P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; // redundant fstar.w[1] = P256.w[1]; // redundant fstar.w[0] = P256.w[0]; // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((P256.w[1] > bid_ten2mk128[ind - 1].w[1]) || (P256.w[1] == bid_ten2mk128[ind - 1].w[1] && (P256.w[0] >= bid_ten2mk128[ind - 1].w[0]))) { // if positive, the truncated value is already the correct result if (x_sign) { // if negative if (++res.w[0] == 0) { res.w[1]++; } } } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 0 <= shift <= 102 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { // if positive, the truncated value is already the correct result if (x_sign) { // if negative if (++res.w[0] == 0) { res.w[1]++; } } } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { // if positive, the truncated value is already the correct result if (x_sign) { // if negative if (++res.w[0] == 0) { res.w[1]++; } } } } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN(res); } else { // if exp < 0 and q + exp <= 0 if (x_sign) { // negative rounds down to -1.0 res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000001ull; } else { // positive rpunds down to +0.0 res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; } BID_RETURN(res); } break; case BID_ROUNDING_UP: if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // (number of digits to be chopped off) // chop off ind digits from the lower part of C1 // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate // FOR ROUND_TO_ZERO, WE DON'T NEED TO ADD 1/2 ULP // FOR ROUND_TO_POSITIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF POSITIVE // FOR ROUND_TO_NEGATIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF NEGATIVE // tmp64 = C1.w[0]; // if (ind <= 19) { // C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; // } else { // C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; // C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; // } // if (C1.w[0] < tmp64) C1.w[1]++; // if carry-out from C1.w[0], increment C1.w[1] // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = C1 * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256(P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; // redundant fstar.w[1] = P256.w[1]; // redundant fstar.w[0] = P256.w[0]; // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if ((P256.w[1] > bid_ten2mk128[ind - 1].w[1]) || (P256.w[1] == bid_ten2mk128[ind - 1].w[1] && (P256.w[0] >= bid_ten2mk128[ind - 1].w[0]))) { // if negative, the truncated value is already the correct result if (!x_sign) { // if positive if (++res.w[0] == 0) { res.w[1]++; } } } } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; fstar.w[2] = P256.w[2] & bid_maskhigh128[ind - 1]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { // if negative, the truncated value is already the correct result if (!x_sign) { // if positive if (++res.w[0] == 0) { res.w[1]++; } } } } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; fstar.w[3] = P256.w[3] & bid_maskhigh128[ind - 1]; fstar.w[2] = P256.w[2]; fstar.w[1] = P256.w[1]; fstar.w[0] = P256.w[0]; // f* is in the right position to be compared with // 10^(-x) from bid_ten2mk128[] if (fstar.w[3] || fstar.w[2] || fstar.w[1] > bid_ten2mk128[ind - 1].w[1] || (fstar.w[1] == bid_ten2mk128[ind - 1].w[1] && fstar.w[0] >= bid_ten2mk128[ind - 1].w[0])) { // if negative, the truncated value is already the correct result if (!x_sign) { // if positive if (++res.w[0] == 0) { res.w[1]++; } } } } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN(res); } else { // if exp < 0 and q + exp <= 0 if (x_sign) { // negative rounds up to -0.0 res.w[1] = 0xb040000000000000ull; res.w[0] = 0x0000000000000000ull; } else { // positive rpunds up to +1.0 res.w[1] = 0x3040000000000000ull; res.w[0] = 0x0000000000000001ull; } BID_RETURN(res); } break; case BID_ROUNDING_TO_ZERO: if ((q + exp) > 0) { // exp < 0 and 1 <= -exp < q // need to shift right -exp digits from the coefficient; exp will be 0 ind = -exp; // 1 <= ind <= 34; ind is a synonym for 'x' // (number of digits to be chopped off) // chop off ind digits from the lower part of C1 // FOR ROUND_TO_NEAREST, WE ADD 1/2 ULP(y) then truncate // FOR ROUND_TO_ZERO, WE DON'T NEED TO ADD 1/2 ULP // FOR ROUND_TO_POSITIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF POSITIVE // FOR ROUND_TO_NEGATIVE_INFINITY, WE TRUNCATE, THEN ADD 1 IF NEGATIVE //tmp64 = C1.w[0]; // if (ind <= 19) { // C1.w[0] = C1.w[0] + bid_midpoint64[ind - 1]; // } else { // C1.w[0] = C1.w[0] + bid_midpoint128[ind - 20].w[0]; // C1.w[1] = C1.w[1] + bid_midpoint128[ind - 20].w[1]; // } // if (C1.w[0] < tmp64) C1.w[1]++; // if carry-out from C1.w[0], increment C1.w[1] // calculate C* and f* // C* is actually floor(C*) in this case // C* and f* need shifting and masking, as shown by // bid_shiftright128[] and bid_maskhigh128[] // 1 <= x <= 34 // kx = 10^(-x) = bid_ten2mk128[ind - 1] // C* = (C1 + 1/2 * 10^x) * 10^(-x) // the approximation of 10^(-x) was rounded up to 118 bits __mul_128x128_to_256(P256, C1, bid_ten2mk128[ind - 1]); if (ind - 1 <= 2) { // 0 <= ind - 1 <= 2 => shift = 0 res.w[1] = P256.w[3]; res.w[0] = P256.w[2]; // redundant fstar.w[3] = 0; // redundant fstar.w[2] = 0; // redundant fstar.w[1] = P256.w[1]; // redundant fstar.w[0] = P256.w[0]; } else if (ind - 1 <= 21) { // 3 <= ind - 1 <= 21 => 3 <= shift <= 63 shift = bid_shiftright128[ind - 1]; // 3 <= shift <= 63 res.w[1] = (P256.w[3] >> shift); res.w[0] = (P256.w[3] << (64 - shift)) | (P256.w[2] >> shift); // redundant fstar.w[3] = 0; } else { // 22 <= ind - 1 <= 33 shift = bid_shiftright128[ind - 1] - 64; // 2 <= shift <= 38 res.w[1] = 0; res.w[0] = P256.w[3] >> shift; } res.w[1] = x_sign | 0x3040000000000000ull | res.w[1]; BID_RETURN(res); } else { // if exp < 0 and q + exp <= 0 the result is +0 or -0 res.w[1] = x_sign | 0x3040000000000000ull; res.w[0] = 0x0000000000000000ull; BID_RETURN(res); } break; default: break; // default added to avoid compiler warning } BID_RETURN(res); } LIBRARY/src/bid64_ldexp.c0000644€­ Q01134020000000702415113665770014111 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #define MAX_FORMAT_DIGITS 16 #define DECIMAL_EXPONENT_BIAS 398 #define MAX_DECIMAL_EXPONENT 767 BID_TYPE0_FUNCTION_ARGTYPE1_OTHER_ARGTYPE2(BID_UINT64, bid64_ldexp, BID_UINT64, x, int, n) BID_UINT64 sign_x, coefficient_x, res; BID_SINT64 exp64; int exponent_x, rmode; // unpack arguments, check for NaN or Infinity if (!unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x)) { // x is Inf. or NaN or 0 #ifdef BID_SET_STATUS_FLAGS if ((x & SNAN_MASK64) == SNAN_MASK64) // y is sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif if (coefficient_x) res = coefficient_x & QUIET_MASK64; else { exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; if(exp64<0) exp64=0; if(exp64>MAX_DECIMAL_EXPONENT) exp64=MAX_DECIMAL_EXPONENT; exponent_x = exp64; res = very_fast_get_BID64 (sign_x, exponent_x, coefficient_x); // 0 } BID_RETURN (res); } exp64 = (BID_SINT64) exponent_x + (BID_SINT64) n; exponent_x = exp64; if ((BID_UINT32) exponent_x <= MAX_DECIMAL_EXPONENT) { res = very_fast_get_BID64 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } // check for overflow if (exp64 > MAX_DECIMAL_EXPONENT) { // try to normalize coefficient while ((coefficient_x < 1000000000000000ull) && (exp64 > MAX_DECIMAL_EXPONENT)) { // coefficient_x < 10^15, scale by 10 coefficient_x = (coefficient_x << 1) + (coefficient_x << 3); exponent_x--; exp64--; } if (exp64 <= MAX_DECIMAL_EXPONENT) { res = very_fast_get_BID64 (sign_x, exponent_x, coefficient_x); BID_RETURN (res); } else exponent_x = 0x7fffffff; // overflow } // exponent < 0 // the BID pack routine will round the coefficient rmode = rnd_mode; res = get_BID64 (sign_x, exponent_x, coefficient_x, rmode, pfpsf); BID_RETURN (res); } LIBRARY/src/bid64_logbd.c0000644€­ Q01134020000000565215113665770014071 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_internal.h" #if DECIMAL_CALL_BY_REFERENCE void bid64_logb (BID_UINT64 * pres, BID_UINT64 * px _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { BID_UINT64 x = *px; #else DFP_WRAPFN_DFP(64, bid64_logb, 64) BID_UINT64 bid64_logb (BID_UINT64 x _EXC_FLAGS_PARAM _EXC_MASKS_PARAM _EXC_INFO_PARAM) { #endif int ires, exponent_x; BID_UINT64 sign_x, coefficient_x; BID_UINT64 valid_x, res; valid_x = unpack_BID64 (&sign_x, &exponent_x, &coefficient_x, x); if (!valid_x) { // test if x is NaN/Inf if ((x & 0x7800000000000000ull) == 0x7800000000000000ull) { #ifdef BID_SET_STATUS_FLAGS if ((x & 0x7e00000000000000ull) == 0x7e00000000000000ull) // sNaN __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res = (coefficient_x) & QUIET_MASK64; if ((x & 0x7c00000000000000ull) == 0x7800000000000000ull) res &= 0x7fffffffffffffffull; BID_RETURN (res); } // x is 0 #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_ZERO_DIVIDE_EXCEPTION); #endif res = 0xf800000000000000ull; BID_RETURN (res); } BIDECIMAL_CALL1_NORND (bid64_ilogb, ires, x); if (ires & 0x80000000) res = 0xb1c0000000000000ull | (BID_UINT64)(-ires); else res = 0x31c0000000000000ull | (BID_UINT64)ires; BID_RETURN (res); } LIBRARY/src/bid128_tgamma.c0000644€­ Q01134020000001243515113665770014326 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "bid_trans.h" // 2-part conversion. BID_EXTERN_C void bid128_to_binary128_2part(BID_F128_TYPE *,BID_F128_TYPE *,BID_UINT128); // Standard NaN static BID_UINT128 BID128_NAN = {BID128_LH_INIT( 0x0000000000000000ull, 0x7c00000000000000ull )}; // +Infinity static BID_UINT128 BID128_INF = {BID128_LH_INIT( 0x0000000000000000ull, 0x7800000000000000ull )}; // Shifter 2 * 10^33 static BID_UINT128 BID128_SHIFTER = {BID128_LH_INIT( 0x7182b61400000000ull, 0x3040629b8c891b26ull )}; static BID_UINT128 BID128_ZERO = {BID128_LH_INIT( 0x0000000000000000ull, 0x0000000000000000ull )}; BID128_FUNCTION_ARG1 (bid128_tgamma, x) // Declare local variables BID_UINT128 res, y, x_int, x_frac; int e, cmp_res; // Check for NaN and just return the same NaN, quieted and canonized if ((x.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) { #ifdef BID_SET_STATUS_FLAGS if (((x.w[BID_HIGH_128W] & SNAN_MASK64) == SNAN_MASK64)) __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif res.w[BID_HIGH_128W] = x.w[BID_HIGH_128W] & 0xfc003fffffffffffull; res.w[BID_LOW_128W] = x.w[BID_LOW_128W]; if (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) > 0x0000314dc6448d93ull) || (((res.w[BID_HIGH_128W] & 0x00003fffffffffffull) == 0x0000314dc6448d93ull) && res.w[BID_LOW_128W] >= 0x38c15b0a00000000ull)) { res.w[BID_HIGH_128W] &= ~0x00003fffffffffffull; res.w[BID_LOW_128W] = 0ull; } BID_RETURN(res); } // If the input is 0, return signed infinity BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isZero,cmp_res,x); if (cmp_res) { res = BID128_INF; res.w[BID_HIGH_128W] ^= (x.w[BID_HIGH_128W] & SIGNMASK64); *pfpsf |= BID_ZERO_DIVIDE_EXCEPTION; BID_RETURN (res); } // For infinite inputs, return NaN or infinity BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isInf,cmp_res,x); if (cmp_res) { if ((x.w[BID_HIGH_128W] & SIGNMASK64) != 0) { res = BID128_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif } else res = BID128_INF; BID_RETURN (res); } // check for nonpositive integers BIDECIMAL_CALL2_NORND (bid128_quiet_less_equal, cmp_res, x, BID128_ZERO); if(cmp_res) { BIDECIMAL_CALL1_NORND(bid128_round_integral_nearest_even, x_int, x); BIDECIMAL_CALL2(bid128_sub,x_frac,x,x_int); // If the fractional part is 0, return NaN BIDECIMAL_CALL1_NORND_NOSTAT(bid128_isZero,cmp_res,x_frac); if (cmp_res) { res = BID128_NAN; #ifdef BID_SET_STATUS_FLAGS __set_status_flags (pfpsf, BID_INVALID_EXCEPTION); #endif BID_RETURN (res); } } // Compute lgamma and take the exponential. // This is crude and inaccurate, but it is what the quad gamma // function does anyway, so we can't improve things using that. BIDECIMAL_CALL1(bid128_lgamma,y,x); BIDECIMAL_CALL1(bid128_exp,res,y); // If we somehow got a NaN from that, just give up // The result is also final if the input is nonnegative. if (((res.w[BID_HIGH_128W] & NAN_MASK64) == NAN_MASK64) || ((x.w[BID_HIGH_128W] & SIGNMASK64) == 0)) { BID_RETURN(res); } // Otherwise need to fix up the sign. If the input is // negative and falls in an -odd < x < -even interval, then negate. BIDECIMAL_CALL1_NORND(bid128_round_integral_zero, x_int, x); e = ((x_int.w[BID_HIGH_128W] >> 49) & ((1ull<<14)-1)); if (e <= 6176) { if (e < 6176) { BID_UINT128 localshifter = BID128_SHIFTER; BIDECIMAL_CALL2 (bid128_add, x_int, localshifter, x_int); } if ((x_int.w[BID_LOW_128W] & 1) == 0) res.w[BID_HIGH_128W] ^= SIGNMASK64; } BID_RETURN(res); } LIBRARY/RUNWINDOWSINTEL64_CL.bat0000755€­ Q01134020000000017115113665770014604 0ustar aakkasmklecho "BEGIN BUILDING LIBRARY IN WINDOWS..." del *.lib call windowsbuild_cl.bat echo "END BUILDING LIBRARY IN WINDOWS..." LIBRARY/RUNWINDOWS_nmake.bat0000755€­ Q01134020000000022715113665770014435 0ustar aakkasmklecho "BEGIN BUILDING LIBRARY IN WINDOWS..." del *.lib call windowsbuild_nmake.bat -fmakefile.mak echo "END BUILDING LIBRARY IN WINDOWS..." LIBRARY/float128/0002755€­ Q01134020000000000015113665770012411 5ustar aakkasmklLIBRARY/float128/dpml_pow_x.h0000644€­ Q01134020000001765615113665770014747 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" static const TABLE_UNION __pow_x_table[] = { /* ansi-c class-to-action-mapping */ /* 000 */ DATA_1x2( 0x00000000, 0x10000000 ), /* 008 */ DATA_1x2( 0x98765432, 0x000000ba ), /* 016 */ DATA_1x2( 0x08208208, 0xa4d32082 ), /* 024 */ DATA_1x2( 0x10410410, 0x94d34104 ), /* 032 */ DATA_1x2( 0x94494449, 0x84d34944 ), /* 040 */ DATA_1x2( 0x3d4bd449, 0x74d34bd0 ), /* 048 */ DATA_1x2( 0x00000449, 0x64d34d30 ), /* 056 */ DATA_1x2( 0x00000449, 0x54d3f7d0 ), /* 064 */ DATA_1x2( 0x00512449, 0x44d34d30 ), /* 072 */ DATA_1x2( 0x00f52449, 0x34d3f7d0 ), /* 080 */ DATA_1x2( 0x92512449, 0x24d3f92f ), /* 088 */ DATA_1x2( 0x40f92449, 0x14d3f92f ), /* data for the above mapping */ /* 096 */ DATA_1x2( 0x00000000, 0x00000000 ), /* 104 */ DATA_1x2( 0x00000000, 0x00000000 ), /* 112 */ DATA_1x2( 0x00000001, 0x00000000 ), /* 120 */ DATA_1x2( 0x00000009, 0x00000000 ), /* 128 */ DATA_1x2( 0x00000046, 0x00000000 ), /* 136 */ DATA_1x2( 0x00000047, 0x00000000 ), /* fortran class-to-action-mapping */ /* 144 */ DATA_1x2( 0x00000408, 0x00000000 ), /* 152 */ DATA_1x2( 0x25242300, 0x00000076 ), /* 160 */ DATA_1x2( 0x7df7d449, 0x6f7df7df ), /* 168 */ DATA_1x2( 0x94494449, 0x5f7d4944 ), /* 176 */ DATA_1x2( 0x00000449, 0x44d34d30 ), /* 184 */ DATA_1x2( 0x00512449, 0x34d34d30 ), /* 192 */ DATA_1x2( 0x92512449, 0x2f7df92f ), /* 200 */ DATA_1x2( 0x5af52449, 0x1f7df52f ), /* data for the above mapping */ /* 208 */ DATA_1x2( 0x00000000, 0x00000000 ), /* 216 */ DATA_1x2( 0x00000000, 0x00000000 ), /* 224 */ DATA_1x2( 0x00000001, 0x00000000 ), /* 232 */ DATA_1x2( 0x00000009, 0x00000000 ), /* 240 */ DATA_1x2( 0x00000046, 0x00000000 ), /* 248 */ DATA_1x2( 0x00000047, 0x00000000 ), /* exp2 class-to-action-mapping */ /* 256 */ DATA_1x2( 0x00ebb408, 0x14514510 ), /* Data for the class to action mappings */ /* 264 */ DATA_1x2( 0x00000001, 0x00000000 ), /* 272 */ DATA_1x2( 0x00000091, 0x00000000 ), /* 280 */ DATA_1x2( 0x00000090, 0x00000000 ), /* high word of sqrt(2) and ln2 */ /* 288 */ DATA_1x2( 0xf9de6484, 0xb504f333 ), /* 296 */ DATA_1x2( 0xd1cf79ab, 0xb17217f7 ), /* 1, 1/ln2 and log2_lo/ln2 in unpacked format */ /* 304 */ POS, 0001, DATA_2x2( 0x00000000, 0x80000000, 0x00000000, 0x00000000 ), /* 328 */ POS, 0002, DATA_2x2( 0x5c17f0bb, 0xb8aa3b29, 0x691d3e88, 0xbe87fed0 ), /* 352 */ POS, 0-63, DATA_2x2( 0x9e45c2c0, 0x91a1e8f2, 0x505ad73a, 0xb3dc7e64 ), /* Fixed point coefficients for log2 evaluation */ /* 376 */ DATA_4( 0x9c3d3269, 0x846f0cdb, 0x00000116, 0x00000000 ), /* 392 */ DATA_4( 0x54ec30fa, 0x0ed54db2, 0x0000072b, 0x00000000 ), /* 408 */ DATA_4( 0xdfe33a4b, 0xc9fa6284, 0x000041bc, 0x00000000 ), /* 424 */ DATA_4( 0xfc256daa, 0x99f674de, 0x00024519, 0x00000000 ), /* 440 */ DATA_4( 0xfbd9eaf3, 0xd7b95b07, 0x00143436, 0x00000000 ), /* 456 */ DATA_4( 0x7dba85bc, 0xa13ba581, 0x00b4aaab, 0x00000000 ), /* 472 */ DATA_4( 0x19ecd788, 0xb7a943e6, 0x06587797, 0x00000000 ), /* 488 */ DATA_4( 0x0e2310dc, 0x50fcda14, 0x396c809c, 0x00000000 ), /* 504 */ DATA_4( 0xfc4954a4, 0x20dc94f8, 0x0b9cbe4a, 0x00000002 ), /* 520 */ DATA_4( 0xa00351a9, 0x726ae205, 0xd2328609, 0x00000012 ), /* 536 */ DATA_4( 0x2e72008c, 0x746df395, 0x210e17e1, 0x000000af ), /* 552 */ DATA_4( 0xfb43dec4, 0x13599009, 0x700e7651, 0x00000674 ), /* 568 */ DATA_4( 0xf62944cf, 0xd038e4ea, 0xd7c437db, 0x00003e01 ), /* 584 */ DATA_4( 0x28865f8f, 0xaee9df3b, 0xe54d1542, 0x00026219 ), /* 600 */ DATA_4( 0x7a082390, 0x5d557e39, 0x56fd52e7, 0x00184022 ), /* 616 */ DATA_4( 0x7aa6f59b, 0x2932877a, 0x87a04e84, 0x01039501 ), /* 632 */ DATA_4( 0x8c267804, 0x47a3ed39, 0xd62f144c, 0x0bd19a0f ), /* 648 */ DATA_4( 0xdd11fee3, 0x5079024e, 0x641da382, 0xa3fe9ffd ), /* 664 */ DATA_1x2( 0x000000-4, 0x00000000 ), /* Fixed point coefficients for 2^h evaluation */ /* 672 */ DATA_4( 0x151832ab, 0x00002b4c, 0x00000000, 0x00000000 ), /* 688 */ DATA_4( 0x42ddb787, 0x000561d1, 0x00000000, 0x00000000 ), /* 704 */ DATA_4( 0xd1c367c8, 0x00a2d67f, 0x00000000, 0x00000000 ), /* 720 */ DATA_4( 0x57182134, 0x125a7da0, 0x00000000, 0x00000000 ), /* 736 */ DATA_4( 0xba507c6d, 0xf7176bc7, 0x00000001, 0x00000000 ), /* 752 */ DATA_4( 0x8fac4875, 0x088968a2, 0x00000033, 0x00000000 ), /* 768 */ DATA_4( 0x115b54c3, 0xa26b9e85, 0x000004e3, 0x00000000 ), /* 784 */ DATA_4( 0xd6ab2988, 0xa10ec0e8, 0x000070db, 0x00000000 ), /* 800 */ DATA_4( 0x3fcb6035, 0x26ac3c53, 0x00098a4b, 0x00000000 ), /* 816 */ DATA_4( 0x8532c06f, 0x8b3687ce, 0x00c0b0c9, 0x00000000 ), /* 832 */ DATA_4( 0x8e3a0b6b, 0x7e14c2f1, 0x0e1deb28, 0x00000000 ), /* 848 */ DATA_4( 0x57ee4711, 0x8dd92607, 0xf465639a, 0x00000000 ), /* 864 */ DATA_4( 0xcc717d30, 0xc764fb7e, 0x267a8ac5, 0x0000000f ), /* 880 */ DATA_4( 0x8c4cb47e, 0x3e1ed253, 0x929e9caf, 0x000000da ), /* 896 */ DATA_4( 0x3074cb1a, 0x11fec7ff, 0x0111d2e4, 0x00000b16 ), /* 912 */ DATA_4( 0x31ee7ad0, 0x1a1ac547, 0xff1622c3, 0x00007ff2 ), /* 928 */ DATA_4( 0x61aa9a77, 0xdbd2c2a2, 0x4be1b1e1, 0x00050c24 ), /* 944 */ DATA_4( 0x4a2a80b1, 0x20e2fed3, 0xcf14ce62, 0x002bb0ff ), /* 960 */ DATA_4( 0x53eeb456, 0x9ccbbe0b, 0xfba4e772, 0x013b2ab6 ), /* 976 */ DATA_4( 0xccaf4903, 0xcce9d8ae, 0xc1282fe2, 0x071ac235 ), /* 992 */ DATA_4( 0xc9735fbe, 0x6f16b06e, 0x82c58ea8, 0x1ebfbdff ), /* 1008 */ DATA_4( 0x01f97b59, 0xe4f1d9cc, 0xe8e7bcd5, 0x58b90bfb ), /* 1024 */ DATA_4( 0x00000000, 0x00000000, 0x00000000, 0x80000000 ), /* 1040 */ DATA_1x2( 0x00000001, 0x00000000 ), }; #define ANSI_C_POW_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) __pow_x_table + 0)) #define FORTRAN_POW_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) __pow_x_table + 144)) #define EXP2_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) __pow_x_table + 256)) #define ONE_OVER_SQRT_2 *((UX_FRACTION_DIGIT_TYPE *) ((char *) __pow_x_table + 288)) #define MSD_OF_LN2 *((UX_FRACTION_DIGIT_TYPE *) ((char *) __pow_x_table + 296)) #define UX_ONE ((UX_FLOAT *) ((char *) __pow_x_table + 304)) #define UX_TWO_OVER_LN2 ((UX_FLOAT *) ((char *) __pow_x_table + 328)) #define UX_LN2_LO_OVER_LN2 ((UX_FLOAT *) ((char *) __pow_x_table + 352)) #define POW_LOG2_COEF_ARRAY ((FIXED_128 *) ((char *) __pow_x_table + 376)) #define POW_LOG2_COEF_ARRAY_DEGREE (( signed __int64 ) 0x0000000000000011 ) #define POW2_COEF_ARRAY ((FIXED_128 *) ((char *) __pow_x_table + 672)) #define POW2_COEF_ARRAY_DEGREE (( signed __int64 ) 0x0000000000000016 ) LIBRARY/float128/dpml_acosh_t.h0000644€­ Q01134020000000475115113665770015223 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" static const TABLE_UNION max_direct_x[] = { DATA_1x2( 0x02ccc470, 0x400fe8cf ) }; static const TABLE_UNION max_asym_x[] = { DATA_1x2( 0xd1a81cd8, 0x41a46ac2 ) }; #define EVALUATE_ASYM_RANGE_POLYNOMIAL(x,c,y) \ POLY_9(x,c,y) static const TABLE_UNION asym_range_coef[] = { DATA_1x2( 0x00000000, 0x3fd00000 ), DATA_1x2( 0xffffff07, 0x3fb7ffff ), DATA_1x2( 0xaaaddfbf, 0x3faaaaaa ), DATA_1x2( 0xfdf6faba, 0x3fa17fff ), DATA_1x2( 0x7de0c4ff, 0x3f993334 ), DATA_1x2( 0x3680db02, 0x3f933fc5 ), DATA_1x2( 0xa311158b, 0x3f8eb0ca ), DATA_1x2( 0x0a8b1f0a, 0x3f88674b ), DATA_1x2( 0x0da7b094, 0x3f8b082b ), }; static const TABLE_UNION half_huge_x[] = { DATA_1x2( 0xffffffff, 0x7fdfffff ) }; static const TABLE_UNION log_2[] = { DATA_1x2( 0xfefa39ef, 0x3fe62e42 ) }; LIBRARY/float128/architecture.h0000644€­ Q01134020000004002615113665770015244 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef ARCHITECTURE_H #define ARCHITECTURE_H /* ** for historic reasons, map ia64 architecture to merced and ct architecture to amd64 */ #if (defined(ia64) || defined(__ia64) || defined(__ia64__)) && !defined(HPUX_OS) # undef merced # define merced #endif #if defined(ct) || defined(efi2) # undef _M_AMD64 # define _M_AMD64 #endif #if defined(HPUX_OS) #define sparc #endif #if (defined(vax) || defined(VAX)) # undef vax # undef mips # undef hp_pa # undef cray # undef alpha # undef ix86 # undef merced # undef amd64 # undef sparc # define vax 1 # define ARCHITECTURE vax # undef LOCAL_DATA # undef STATIC_ROUNDING_MODES # undef DYNAMIC_ROUNDING_MODES # undef DENORMS_EMULATED # undef SEPARATE_FLOAT_REGS # undef MULTIPLE_ISSUE # undef UNSIGNED_TO_FLOAT # undef UNSIGNED_MULTIPLY # define ENDIANESS little_endian # define SCALE_METHOD by_int # define CVT_TO_HI_LO_METHOD by_int # define BITS_PER_CHAR 8 # define BITS_PER_SHORT 16 # define BITS_PER_INT 32 # define BITS_PER_LONG 32 # define BITS_PER_FLOAT 32 # define BITS_PER_DOUBLE 64 # define BITS_PER_LONG_DOUBLE 128 # define INT_8 signed char # define INT_16 signed short # define INT_32 signed int # undef INT_64 # undef INT_128 # define U_INT_8 unsigned char # define U_INT_16 unsigned short # define U_INT_32 unsigned int # undef U_INT_64 # undef U_INT_128 # define WORD INT_32 # define U_WORD U_INT_32 # define BITS_PER_WORD 32 # define HALF_WORD INT_16 # define U_HALF_WORD U_INT_16 # define BITS_PER_HALF_WORD 16 #elif (defined(mips) || defined(MIPS)) # undef vax # undef mips # undef hp_pa # undef cray # undef alpha # undef ix86 # undef merced # undef amd64 # undef sparc # define mips 2 # define ARCHITECTURE mips # define LOCAL_DATA 1 # undef STATIC_ROUNDING_MODES # define DYNAMIC_ROUNDING_MODES 1 # define DENORMS_EMULATED 1 # define SEPARATE_FLOAT_REGS 1 # undef MULTIPLE_ISSUE # undef UNSIGNED_TO_FLOAT # define UNSIGNED_MULTIPLY 1 # define ENDIANESS little_endian # define SCALE_METHOD by_int # define CVT_TO_HI_LO_METHOD by_flt # define BITS_PER_CHAR 8 # define BITS_PER_SHORT 16 # define BITS_PER_INT 32 # define BITS_PER_LONG 32 # define BITS_PER_FLOAT 32 # define BITS_PER_DOUBLE 64 # define BITS_PER_LONG_DOUBLE 64 # define INT_8 signed char # define INT_16 signed short # define INT_32 signed int # undef INT_64 # undef INT_128 # define U_INT_8 unsigned char # define U_INT_16 unsigned short # define U_INT_32 unsigned int # undef U_INT_64 # undef U_INT_128 # define WORD INT_32 # define U_WORD U_INT_32 # define BITS_PER_WORD 32 # define HALF_WORD INT_16 # define U_HALF_WORD U_INT_16 # define BITS_PER_HALF_WORD 16 #elif (defined(hp_pa) || defined(HP_PA) || defined(__hppa) || defined(__HPPA)) # undef vax # undef mips # undef hp_pa # undef cray # undef alpha # undef ix86 # undef merced # undef amd64 # undef sparc # define hp_pa 3 # define ARCHITECTURE hp_pa # define LOCAL_DATA 1 # undef STATIC_ROUNDING_MODES # define DYNAMIC_ROUNDING_MODES 1 # define DENORMS_EMULATED 1 # define SEPARATE_FLOAT_REGS 1 # undef MULTIPLE_ISSUE # undef UNSIGNED_TO_FLOAT # define UNSIGNED_MULTIPLY 1 # define ENDIANESS big_endian # define SCALE_METHOD by_int # define CVT_TO_HI_LO_METHOD by_flt # define BITS_PER_CHAR 8 # define BITS_PER_SHORT 16 # define BITS_PER_INT 32 # define BITS_PER_LONG 32 # define BITS_PER_FLOAT 32 # define BITS_PER_DOUBLE 64 # define BITS_PER_LONG_DOUBLE 128 # define INT_8 signed char # define INT_16 signed short # define INT_32 signed int # undef INT_64 # undef INT_128 # define U_INT_8 unsigned char # define U_INT_16 unsigned short # define U_INT_32 unsigned int # undef U_INT_64 # undef U_INT_128 # define WORD INT_32 # define U_WORD U_INT_32 # define BITS_PER_WORD 32 # define HALF_WORD INT_16 # define U_HALF_WORD U_INT_16 # define BITS_PER_HALF_WORD 16 #elif (defined(cray) || defined(CRAY)) # undef vax # undef mips # undef hp_pa # undef cray # undef alpha # undef ix86 # undef merced # undef amd64 # undef sparc # define cray 4 # define ARCHITECTURE cray # undef LOCAL_DATA 1 # undef STATIC_ROUNDING_MODES # undef DYNAMIC_ROUNDING_MODES # define DENORMS_EMULATED ??? # define SEPARATE_FLOAT_REGS 1 # undef MULTIPLE_ISSUE # undef UNSIGNED_TO_FLOAT # define UNSIGNED_MULTIPLY 1 # define ENDIANESS big_endian # define SCALE_METHOD by_int # define CVT_TO_HI_LO_METHOD by_int # define BITS_PER_CHAR 8 # define BITS_PER_SHORT 16 # define BITS_PER_INT 32 # define BITS_PER_LONG 64 # define BITS_PER_FLOAT 64 # define BITS_PER_DOUBLE 64 # define BITS_PER_LONG_DOUBLE 128 # define INT_8 signed char # define INT_16 signed short # define INT_32 signed int # define INT_64 signed long # undef INT_128 # define U_INT_8 unsigned char # define U_INT_16 unsigned short # define U_INT_32 unsigned int # define U_INT_64 unsigned long # undef U_INT_128 # define WORD INT_32 # define U_WORD U_INT_32 # define BITS_PER_WORD 32 # define HALF_WORD INT_16 # define U_HALF_WORD U_INT_16 # define BITS_PER_HALF_WORD 16 #elif ( defined(alpha) || defined(ALPHA) \ || defined(__alpha) || defined(__ALPHA) \ || defined(_ALPHA_) || defined(__Alpha_AXP) ) # undef vax # undef mips # undef hp_pa # undef cray # undef alpha # undef ix86 # undef merced # undef amd64 # undef sparc # define alpha 5 # define ARCHITECTURE alpha # define LOCAL_DATA 1 # define STATIC_ROUNDING_MODES 1 # undef DYNAMIC_ROUNDING_MODES # define DENORMS_EMULATED 1 # define SEPARATE_FLOAT_REGS 1 # define MULTIPLE_ISSUE 1 # undef UNSIGNED_TO_FLOAT # define UNSIGNED_MULTIPLY 1 # define ENDIANESS little_endian # define SCALE_METHOD by_int # define CVT_TO_HI_LO_METHOD by_flt # define BITS_PER_FLOAT 32 # define BITS_PER_DOUBLE 64 # define BITS_PER_LONG_DOUBLE 128 # define BITS_PER_CHAR 8 # define BITS_PER_SHORT 16 # define BITS_PER_INT 32 # if defined(__32BITS) # define BITS_PER_LONG 32 # else # define BITS_PER_LONG 64 # endif # define INT_8 signed char # define INT_16 signed short # define INT_32 signed int # undef INT_128 # define U_INT_8 unsigned char # define U_INT_16 unsigned short # define U_INT_32 unsigned int # undef U_INT_128 # if ((OP_SYSTEM == osf) || (OP_SYSTEM == linux)) # define INT_64 signed long # define U_INT_64 unsigned long # else # define INT_64 signed __int64 # define U_INT_64 unsigned __int64 # endif # if defined(__32BITS) # define WORD INT_32 # define U_WORD U_INT_32 # define BITS_PER_WORD 32 # define HALF_WORD INT_16 # define U_HALF_WORD U_INT_16 # define BITS_PER_HALF_WORD 16 # else # define WORD INT_64 # define U_WORD U_INT_64 # define BITS_PER_WORD 64 # define HALF_WORD INT_32 # define U_HALF_WORD U_INT_32 # define BITS_PER_HALF_WORD 32 # endif #elif (defined(_M_IX86) || defined(ix86) || defined(IX86) || defined(ia32) ) # undef vax # undef mips # undef hp_pa # undef cray # undef alpha # undef ix86 # undef merced # undef amd64 # undef sparc # define ix86 6 # define ARCHITECTURE ix86 # define LOCAL_DATA 1 # undef STATIC_ROUNDING_MODES # define DYNAMIC_ROUNDING_MODES 1 # define DENORMS_EMULATED 1 # define SEPARATE_FLOAT_REGS 1 # undef MULTIPLE_ISSUE # undef UNSIGNED_TO_FLOAT # define UNSIGNED_MULTIPLY 1 # define ENDIANESS little_endian # define SCALE_METHOD by_int # define CVT_TO_HI_LO_METHOD by_flt # define BITS_PER_CHAR 8 # define BITS_PER_SHORT 16 # define BITS_PER_INT 32 # define BITS_PER_LONG 32 # define BITS_PER_FLOAT 32 # define BITS_PER_DOUBLE 64 # if !defined(LONG_DOUBLE_128) # define BITS_PER_LONG_DOUBLE 80 # else # define BITS_PER_LONG_DOUBLE 128 # define LONG_DOUBLE_128_TYPE _Quad # endif # define INT_8 signed char # define INT_16 signed short # define INT_32 signed int # define INT_64 long long # undef INT_128 # define U_INT_8 unsigned char # define U_INT_16 unsigned short # define U_INT_32 unsigned int # define U_INT_64 unsigned long long # undef U_INT_128 # if 0 # define WORD INT_32 # define U_WORD U_INT_32 # define BITS_PER_WORD 32 # else # define WORD INT_64 # define U_WORD U_INT_64 # define BITS_PER_WORD 64 # endif # define HALF_WORD INT_16 # define U_HALF_WORD U_INT_16 # define BITS_PER_HALF_WORD 16 #elif ( defined(merced) || defined(MERCED)) # undef vax # undef mips # undef hp_pa # undef cray # undef alpha # undef ix86 # undef merced # undef amd64 # undef sparc # define merced 7 # define ARCHITECTURE merced # define LOCAL_DATA 1 # define STATIC_ROUNDING_MODES 1 # undef DYNAMIC_ROUNDING_MODES # define DENORMS_EMULATED 1 # define SEPARATE_FLOAT_REGS 1 # define MULTIPLE_ISSUE 1 # undef UNSIGNED_TO_FLOAT # define UNSIGNED_MULTIPLY 1 # define ENDIANESS little_endian # define SCALE_METHOD by_int # define CVT_TO_HI_LO_METHOD by_flt # define BITS_PER_FLOAT 32 # define BITS_PER_DOUBLE 64 # define BITS_PER_LONG_DOUBLE 128 # define LONG_DOUBLE_128_TYPE _Quad # define BITS_PER_CHAR 8 # define BITS_PER_SHORT 16 # define BITS_PER_INT 32 # define BITS_PER_LONG 64 # define INT_8 signed char # define INT_16 signed short # define INT_32 signed int # undef INT_128 # define U_INT_8 unsigned char # define U_INT_16 unsigned short # define U_INT_32 unsigned int # undef U_INT_128 # if ( COMPILER == gnu_cc ) # define INT_64 signed long # define U_INT_64 unsigned long # else # define INT_64 signed __int64 # define U_INT_64 unsigned __int64 # endif # define WORD INT_64 # define U_WORD U_INT_64 # define BITS_PER_WORD 64 # define HALF_WORD INT_32 # define U_HALF_WORD U_INT_32 # define BITS_PER_HALF_WORD 32 #elif (defined(__sparc) || defined(sparc)) # undef vax # undef mips # undef hp_pa # undef cray # undef alpha # undef ix86 # undef merced # undef amd64 # undef sparc # define sparc 9 # define ARCHITECTURE sparc # define LOCAL_DATA 1 # undef STATIC_ROUNDING_MODES # define DYNAMIC_ROUNDING_MODES 1 # define DENORMS_EMULATED 1 # define SEPARATE_FLOAT_REGS 1 # undef MULTIPLE_ISSUE # undef UNSIGNED_TO_FLOAT # define UNSIGNED_MULTIPLY 1 # define ENDIANESS big_endian # define SCALE_METHOD by_int # define CVT_TO_HI_LO_METHOD by_flt # define BITS_PER_CHAR 8 # define BITS_PER_SHORT 16 # define BITS_PER_INT 32 # define BITS_PER_LONG 32 # define BITS_PER_ADDRESS 32 # define BITS_PER_FLOAT 32 # define BITS_PER_DOUBLE 64 # define BITS_PER_LONG_DOUBLE 128 # define LONG_DOUBLE_128_TYPE _Quad # if ( COMPILER == gnu_cc ) # define __INT_64 long long # else # define __INT_64 __int64 # endif # define INT_8 signed char # define INT_16 signed short # define INT_32 signed int # define INT_64 signed __INT_64 # undef INT_128 # define U_INT_8 unsigned char # define U_INT_16 unsigned short # define U_INT_32 unsigned int # define U_INT_64 unsigned __INT_64 # undef U_INT_128 # if 0 /* Setup for 32-bits */ # define WORD INT_32 # define U_WORD U_INT_32 # define BITS_PER_WORD 32 # define HALF_WORD INT_16 # define U_HALF_WORD U_INT_16 # define BITS_PER_HALF_WORD 16 # else /* Setup for 64 bits */ # define WORD INT_64 # define U_WORD U_INT_64 # define BITS_PER_WORD 64 # define HALF_WORD INT_32 # define U_HALF_WORD U_INT_32 # define BITS_PER_HALF_WORD 32 # endif #elif (defined(_M_AMD64)) # undef vax # undef mips # undef hp_pa # undef cray # undef alpha # undef ix86 # undef merced # undef amd64 # undef sparc # define amd64 8 # define ARCHITECTURE amd64 # define LOCAL_DATA 1 # undef STATIC_ROUNDING_MODES # define DYNAMIC_ROUNDING_MODES 1 # define DENORMS_EMULATED 1 # define SEPARATE_FLOAT_REGS 1 # undef MULTIPLE_ISSUE # undef UNSIGNED_TO_FLOAT # define UNSIGNED_MULTIPLY 1 # define ENDIANESS little_endian # define SCALE_METHOD by_int # define CVT_TO_HI_LO_METHOD by_flt # define BITS_PER_CHAR 8 # define BITS_PER_SHORT 16 # define BITS_PER_INT 32 # if (OP_SYSTEM == linux) # define BITS_PER_LONG 64 # else # define BITS_PER_LONG 32 # endif # define BITS_PER_ADDRESS 64 # define BITS_PER_FLOAT 32 # define BITS_PER_DOUBLE 64 # define BITS_PER_LONG_DOUBLE 128 # define LONG_DOUBLE_128_TYPE _Quad # if ( COMPILER == gnu_cc ) # define __INT_64 long long # else # define __INT_64 __int64 # endif # define INT_8 signed char # define INT_16 signed short # define INT_32 signed int # define INT_64 signed __INT_64 # undef INT_128 # define U_INT_8 unsigned char # define U_INT_16 unsigned short # define U_INT_32 unsigned int # define U_INT_64 unsigned __INT_64 # undef U_INT_128 # if 0 /* Setup for 32-bits */ # define WORD INT_32 # define U_WORD U_INT_32 # define BITS_PER_WORD 32 # define HALF_WORD INT_16 # define U_HALF_WORD U_INT_16 # define BITS_PER_HALF_WORD 16 # else /* Setup for 64 bits */ # define WORD INT_64 # define U_WORD U_INT_64 # define BITS_PER_WORD 64 # define HALF_WORD INT_32 # define U_HALF_WORD U_INT_32 # define BITS_PER_HALF_WORD 32 # endif #else # error Architecture must be specified. #endif #if !defined(BITS_PER_ADDRESS) # define BITS_PER_ADDRESS BITS_PER_LONG #endif #if !defined(ADDRESS) # define ADDRESS PASTE(U_INT_, BITS_PER_ADDRESS) #endif #undef little_endian #undef big_endian #define little_endian 0 #define big_endian 1 #undef by_int #undef by_flt #define by_int 0 #define by_flt 1 #if (ARCHITECTURE == vax) # define FLOAT_TYPES VAX_TYPES #elif ((ARCHITECTURE == alpha) || (ARCHITECTURE == merced)) && (OP_SYSTEM == vms) # define FLOAT_TYPES (VAX_TYPES + IEEE_TYPES) #else # define FLOAT_TYPES IEEE_TYPES #endif #endif /* ARCHITECTURE_H */ LIBRARY/float128/dpml_tgamma.c0000644€­ Q01134020000000704115113665770015037 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "dpml_private.h" #include "dpml_special_exp.h" #ifndef BASE_NAME # define BASE_NAME TGAMMA_BASE_NAME #endif #if !defined F_ENTRY_NAME # define F_ENTRY_NAME F_TGAMMA_NAME #endif #if USE_BACKUP # define LO_PART_DECL #else # define LO_PART pow2_low # define LO_PART_DECL , F_TYPE *LO_PART #endif extern F_TYPE F_RT_LGAMMA_NAME(F_TYPE , int *); extern B_TYPE F_EXP_SPECIAL_ENTRY_NAME ( F_TYPE , WORD * LO_PART_DECL ); extern F_TYPE F_LDEXP_NAME( F_TYPE, int ); static const U_INT_64 Inf = 0x7ff0000000000000; #define INF (((D_UNION *) &Inf)->f) F_TYPE F_ENTRY_NAME(F_TYPE x) { EXCEPTION_RECORD_DECLARATION F_TYPE y; F_TYPE mantissa_lo; WORD pow_of_two, bExp, j; int signgam = 0; F_UNION u; u.f = x; j = u.F_HI_WORD; if ( j & F_SIGN_BIT_MASK) { // In put is negative if ( (j & F_EXP_MASK) >= (((WORD) (F_EXP_BIAS + F_PRECISION)) << F_EXP_POS)) { // Argument is a negitive integer return INF; } } else if ( x > 171.6243769563027208124443787857704267196259) { // Large positive value is garanteed to overflow return INF; } else if ( x != x ) { return (x); } // Normal argument, may or may not overflow u.f = F_RT_LGAMMA_NAME(x, &signgam); j = u.F_HI_WORD; bExp = j & F_EXP_MASK; if ( bExp == F_EXP_MASK ) { // Overflow or invalid return (signgam < 0) ? -u.f : u.f; } else if ( u.f < -750 ) { // Certain Underflow return (F_TYPE) 0.0; } else if ( u.f > 710 ) { // Certain overflow return signgam < 0 ? -INF : INF; } else { y = F_EXP_SPECIAL_ENTRY_NAME(u.f, &pow_of_two, &mantissa_lo ); y += mantissa_lo; if ( signgam < 0 ) y = -y; return F_LDEXP_NAME( y, pow_of_two >> POW2_K ); } } LIBRARY/float128/sizeof.c0000644€­ Q01134020000000420715113665770014055 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include #define PRINT(tag, val) printf( "sizeof(%s) = %d\n", tag, (int) val ) #define SIZEOF(type) PRINT( #type, sizeof(type)) main() { long double ld[2]; SIZEOF(char); SIZEOF(short); SIZEOF(int); SIZEOF(long); SIZEOF(long long); #if __INT64 SIZEOF(__int64); #endif SIZEOF(void *); SIZEOF(size_t); SIZEOF(float); SIZEOF(double); SIZEOF(long double); PRINT("long double[2]", sizeof(ld)); } LIBRARY/float128/dpml_ux_cbrt.c0000644€­ Q01134020000002305615113665770015243 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BASE_NAME cbrt #include "dpml_ux.h" #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif /* ** The algorithms used for the cbrt function are detailed in the X_FLOAT_NOTES ** file (notes 18.*). ** ** The basic approach is to factor the input x into f * 2^n, where ** 1 <= f < 2 and n = 3*m + i, where i = 0, 1, or 2. Then ** ** cbrt(x) = cbrt(2^n * f) ** = cbrt(2^(3*m+i) * f) ** = 2^m * cbrt(2^i) * cbrt(f). ** ** To get cbrt(f), we do a poly approx y = P(f) good to about 15 bits, then ** perform one Newton's iterations in double precision to get 45 bits and then ** one Newton's iteration in unpacked format good to about 135 bits. We fetch ** 2^(i/3) from a table in double precision and incorporate during the ** double precision Newton's iteration. The result of the unpacked Newton's ** iteration is scaled by m and has its sign bit adjusted to get the final ** result. ** ** The poly coefficients and a small table of the roots, 2^(i/3), is generated ** from dpml_cbrt.c and is shared between this file and the routines generated ** form dpml_cbrt.c ** ** Given z, an approximation to 1/cbrt(f)^2, the double precision Newton's ** iteration is of the form: ** ** y <-- z * f * (14 - 7 * z^3 * f^2 + 2 * z^6 * f^4 ) * 1/9 ** ** and the unpacked iteration is: ** ** y y^3 + 2*x ** y <-- --- * --------- ** 2 y^3 + x/2 ** ** ** Instead of unbiasing the exponent right away, we add and later subtract ** small corrective quantities (ADD_ADJUST, SUB_ADJUST) to get rid of the ** BIAS/3 exactly: ** ** (true_expon + BIAS + ADD_ADJUST)*(1/3) - SUB_ADJUST = true_expon/3 ** ** true_expon + BIAS >= 0, so we can do unsigned arithmetic, which has ** better performance. */ #define SUB_ADJUST (F_PRECISION + F_EXP_BIAS + 2)/3 #define ADD_ADJUST (3*(SUB_ADJUST)) /* ** Instead of doing integer division, we can multiply by an integer that ** corresponds to 1/3 in "fixed point". ** ** If the number is small enough and in the right form, the compiler may ** optimize the multiply into shifts and adds. */ #define ONE_THIRD 0x1111 #define SHIFT_PROD 17 #define DIV_BY_3(num) (( (10 * num) * ONE_THIRD + num) >> SHIFT_PROD) #if !defined(F_ENTRY_NAME) # define F_ENTRY_NAME F_CBRT_NAME #endif X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { DECLARE_X_FLOAT(packed_result) WORD fp_class; UX_UNSIGNED_EXPONENT_TYPE m, i, j; UX_FRACTION_DIGIT_TYPE msd, tmp_digit; UX_FLOAT unpacked_argument, unpacked_result, y_cubed, tmp[2]; D_UNION u; double y, f, z, f2, z2, z4; EXCEPTION_INFO_DECL INIT_EXCEPTION_INFO; fp_class = UNPACK( PASS_ARG_X_FLOAT(packed_argument), & unpacked_argument, CBRT_CLASS_TO_ACTION_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); if (0 >= fp_class) RETURN_X_FLOAT(packed_result); /* ** Get f as a double precision value z ~ 1/cbrt(f)^2 by a polynomial ** approximation */ msd = G_UX_MSD(&unpacked_argument); u.D_HI_WORD = ((WORD)(D_EXP_BIAS-1) << D_EXP_POS) + (msd >> D_EXP_WIDTH); # if (BITS_PER_UX_FRACTION_DIGIT_TYPE == 32) tmp_digit = G_UX_2nd_MSD(&unpacked_argument); u.F_LO_WORD = (msd << (BITS_PER_UX_FRACTION_DIGIT_TYPE - D_EXP_WIDTH)) | (lsd >> D_EXP_WIDTH); # endif f = u.f; z = RECIP_CBRT_POLY(f); /* Get m and i */ j = G_UX_EXPONENT(&unpacked_argument) + (ADD_ADJUST - 1); m = DIV_BY_3(j); i = j - 3*m; /* ** Now evaluate the Newton's iterations and incorporate the factor of ** 2^(i/3). The grouping chosen here is an attempt to maximize parallelism ** and is probably not a good choice on a sequential machine */ z2 = z*z; z4 = z2*z2; f2 = f*f; y = POW_CBRT_2_TABLE[i]*((((FOURTEEN_NINTHS*f)*z) - z4*((SEVEN_NINTHS*f)*f2)) + (z4*(z2*z))*((TWO_NINTHS*f)*(f2*f2))); /* Convert the double precision result to unpacked x_float */ u.f = y; msd = u.D_HI_WORD; P_UX_EXPONENT(&unpacked_result, (msd >> D_EXP_POS) + m - (D_EXP_BIAS + SUB_ADJUST - 1)); P_UX_SIGN(&unpacked_result, G_UX_SIGN(&unpacked_argument)); msd = (msd << D_EXP_WIDTH) | UX_MSB; # if (BITS_PER_UX_FRACTION_DIGIT_TYPE == 32) tmp_digit = u.F_LO_WORD; P_UX_2nd_MSD(&unpacked_result, tmp_digit << D_EXP_POS); msd |= (tmp_digit >> (BITS_PER_WORD - D_EXP_POS)); P_UX_2nd_LSD(&unpacked_result, 0); # endif P_UX_MSD(&unpacked_result, msd); P_UX_LSD(&unpacked_result, 0); /* Do the Newton's iteration */ MULTIPLY(&unpacked_result, &unpacked_result, &y_cubed); MULTIPLY(&unpacked_result, &y_cubed, &y_cubed); UX_INCR_EXPONENT(&unpacked_argument, 1); /* 2*x */ ADDSUB(&y_cubed, &unpacked_argument, ADD, &tmp[0]); UX_DECR_EXPONENT(&unpacked_argument, 2); /* x/2 */ ADDSUB(&y_cubed, &unpacked_argument, ADD, &tmp[1]); DIVIDE(&tmp[0], &tmp[1], FULL_PRECISION, &tmp[0]); MULTIPLY(&unpacked_result, &tmp[0], &unpacked_result); UX_DECR_EXPONENT(&unpacked_result, 1); PACK( &unpacked_result, PASS_RET_X_FLOAT(packed_result), NOT_USED, NOT_USED OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #if defined(MAKE_INCLUDE) @divert -append divertText function recip_cbrt(z) { auto t; t = cbrt(z); return 1/(t * t); } # undef TABLE_NAME START_TABLE; TABLE_COMMENT("Cbrt root class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "CBRT_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); /* Generate coefficients and polynomial form for 1/cbrt(f)^2 */ PRINT_R_TBL_COM_ADEF("coefs to approx 1/cbrt(f)^2", "COEFS\t\t\t"); remes(REMES_FIND_POLYNOMIAL + REMES_ABSOLUTE_WEIGHT + REMES_LINEAR_ARG, 1.0, 2.0, recip_cbrt, 15, °ree, &poly_coefs); for (i = 0; i <= degree ; i++) { PRINT_R_TBL_ITEM( poly_coefs[i] ); } GENPOLY(COEFS[%%d], RECIP_CBRT_POLY(x), degree); /* Now get powers of cbrt(2) */ PRINT_R_TBL_COM_ADEF("cube roots of 2^i, i = 0, 1, 2","POW_CBRT_2_TABLE\t"); c = cbrt(2); for( i = 0; i <= 2; i++) { PRINT_R_TBL_ITEM(c^i); } /* Last but not least, the Newton's iteration constants */ TABLE_COMMENT("14/9, 7/9 and 2/9 in double precision"); PRINT_R_TBL_VDEF_ITEM( "FOURTEEN_NINTHS\t\t", 14/9); PRINT_R_TBL_VDEF_ITEM( "SEVEN_NINTHS\t\t", 7/9); PRINT_R_TBL_VDEF_ITEM( "TWO_NINTHS\t\t", 2/9); END_TABLE; @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ my $polyText = Egrep( STR(GENPOLY_EXECUTABLE), $tableText, \ \$tableText ); \ $polyText = GenPoly( $polyText ); \ $outText = "$tableText\n\n$defineText\n\n$polyText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants cbrt", \ __FILE__ ); \ print "$headerText\n$outText"; #endif LIBRARY/float128/dpml_error_codes.h0000644€­ Q01134020000001635315113665770016112 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define RESPONSE_TABLE __dpml_response_table static const DPML_EXCEPTION_RESPONSE RESPONSE_TABLE[] = { /* 0 */ {0, 1, 1, 1, 0}, /* 1 */ {1, 1, 1, 1, 0}, /* 2 */ {2, 1, 1, 1, 0}, /* 3 */ {3, 1, 1, 1, 0}, /* 4 */ {4, 1, 1, 1, 0}, /* 5 */ {8, 1, 1, 1, 0}, /* 6 */ {8, 3, 5, 3, 7}, /* 7 */ {8, 3, 6, 3, 8}, /* 8 */ {9, 1, 1, 1, 0}, /* 9 */ {9, 1, 1, 1, 0}, /* 10 */ {9, 4, 1, 4, 1}, /* 11 */ {10, 1, 1, 1, 0}, /* 12 */ {10, 1, 1, 1, 0}, /* 13 */ {10, 4, 1, 4, 1}, /* 14 */ {11, 3, 5, 3, 7}, /* 15 */ {39, 1, 1, 1, 0}, /* 16 */ {39, 3, 5, 3, 7}, /* 17 */ {12, 1, 1, 1, 0}, /* 18 */ {13, 1, 1, 1, 0}, /* 19 */ {14, 3, 5, 3, 7}, /* 20 */ {33, 4, 1, 4, 1}, /* 21 */ {33, 3, 5, 3, 7}, /* 22 */ {33, 3, 6, 3, 8}, /* 23 */ {33, 1, 1, 1, 0}, /* 24 */ {33, 2, 5, 2, 7}, /* 25 */ {33, 2, 6, 2, 8}, /* 26 */ {34, 4, 1, 4, 1}, /* 27 */ {34, 3, 5, 3, 7}, /* 28 */ {34, 3, 6, 3, 8}, /* 29 */ {34, 1, 1, 1, 0}, /* 30 */ {34, 2, 5, 2, 7}, /* 31 */ {34, 2, 6, 2, 8}, /* 32 */ {34, 2, 5, 2, 7}, /* 33 */ {16, 3, 5, 3, 7}, /* 34 */ {16, 4, 1, 4, 1}, /* 35 */ {16, 3, 5, 3, 7}, /* 36 */ {16, 4, 1, 4, 1}, /* 37 */ {17, 3, 5, 3, 7}, /* 38 */ {17, 0, 7, 0, 7}, /* 39 */ {17, 0, 12, 0, 12}, /* 40 */ {38, 3, 5, 3, 7}, /* 41 */ {38, 3, 6, 3, 8}, /* 42 */ {38, 4, 1, 4, 1}, /* 43 */ {47, 3, 5, 3, 7}, /* 44 */ {47, 3, 6, 3, 8}, /* 45 */ {47, 4, 1, 4, 1}, /* 46 */ {47, 3, 5, 3, 7}, /* 47 */ {47, 3, 6, 3, 8}, /* 48 */ {47, 4, 1, 4, 1}, /* 49 */ {47, 1, 1, 1, 0}, /* 50 */ {47, 1, 1, 1, 0}, /* 51 */ {37, 2, 6, 2, 8}, /* 52 */ {18, 1, 6, 1, 0}, /* 53 */ {18, 3, 6, 3, 8}, /* 54 */ {19, 1, 6, 1, 0}, /* 55 */ {19, 3, 6, 3, 8}, /* 56 */ {20, 1, 6, 1, 0}, /* 57 */ {20, 3, 6, 3, 8}, /* 58 */ {45, 1, 6, 1, 0}, /* 59 */ {45, 3, 6, 3, 8}, /* 60 */ {21, 4, 1, 4, 1}, /* 61 */ {21, 1, 1, 1, 1}, /* 62 */ {21, 1, 1, 1, 0}, /* 63 */ {40, 3, 5, 3, 7}, /* 64 */ {40, 3, 6, 3, 8}, /* 65 */ {40, 4, 1, 4, 1}, /* 66 */ {40, 4, 2, 4, 2}, /* 67 */ {22, 3, 5, 3, 7}, /* 68 */ {22, 3, 6, 3, 8}, /* 69 */ {22, 4, 1, 4, 1}, /* 70 */ {22, 1, 1, 1, 0}, /* 71 */ {22, 2, 6, 2, 8}, /* 72 */ {22, 1, 1, 1, 0}, /* 73 */ {22, 1, 1, 1, 0}, /* 74 */ {22, 3, 6, 3, 8}, /* 75 */ {22, 1, 1, 1, 0}, /* 76 */ {22, 0, 7, 0, 7}, /* 77 */ {22, 0, 7, 0, 7}, /* 78 */ {22, 0, 8, 0, 8}, /* 79 */ {22, 3, 5, 3, 7}, /* 80 */ {22, 0, 1, 0, 1}, /* 81 */ {22, 4, 1, 4, 1}, /* 82 */ {41, 3, 5, 3, 7}, /* 83 */ {41, 3, 6, 3, 8}, /* 84 */ {41, 4, 1, 4, 1}, /* 85 */ {41, 4, 2, 4, 2}, /* 86 */ {41, 1, 1, 1, 0}, /* 87 */ {41, 2, 5, 2, 7}, /* 88 */ {41, 2, 6, 2, 8}, /* 89 */ {48, 3, 5, 3, 7}, /* 90 */ {48, 1, 1, 1, 0}, /* 91 */ {23, 4, 1, 4, 1}, /* 92 */ {23, 1, 1, 1, 1}, /* 93 */ {23, 1, 1, 1, 0}, /* 94 */ {24, 1, 1, 1, 0}, /* 95 */ {31, 1, 1, 1, 0}, /* 96 */ {32, 1, 1, 1, 0}, /* 97 */ {32, 4, 1, 4, 1}, /* 98 */ {25, 1, 1, 1, 0}, /* 99 */ {25, 4, 1, 4, 1}, /* 100 */ {26, 3, 5, 3, 7}, /* 101 */ {26, 3, 6, 3, 8}, /* 102 */ {26, 4, 1, 4, 1}, /* 103 */ {27, 1, 1, 1, 0}, /* 104 */ {61, 2, 5, 2, 7}, /* 105 */ {61, 2, 6, 2, 8}, /* 106 */ {28, 1, 1, 1, 0}, /* 107 */ {29, 4, 1, 4, 1}, /* 108 */ {29, 3, 5, 3, 7}, /* 109 */ {29, 1, 1, 1, 0}, /* 110 */ {29, 2, 5, 2, 7}, /* 111 */ {30, 3, 5, 3, 7}, /* 112 */ {30, 4, 1, 4, 1}, /* 113 */ {35, 1, 1, 1, 0}, /* 114 */ {36, 1, 1, 1, 0}, /* 115 */ {36, 4, 1, 4, 1}, /* 116 */ {49, 0, 1, 0, 1}, /* 117 */ {50, 0, 1, 0, 1}, /* 118 */ {51, 0, 1, 0, 1}, /* 119 */ {50, 4, 1, 4, 1}, /* 120 */ {50, 4, 2, 4, 2}, /* 121 */ {51, 4, 1, 4, 1}, /* 122 */ {51, 4, 2, 4, 2}, /* 123 */ {42, 0, 1, 0, 1}, /* 124 */ {43, 0, 1, 0, 1}, /* 125 */ {44, 0, 1, 0, 1}, /* 126 */ {42, 1, 6, 1, 0}, /* 127 */ {42, 2, 6, 2, 8}, /* 128 */ {43, 1, 6, 1, 0}, /* 129 */ {43, 2, 6, 2, 8}, /* 130 */ {43, 3, 6, 3, 8}, /* 131 */ {44, 1, 6, 1, 0}, /* 132 */ {44, 2, 6, 2, 8}, /* 133 */ {44, 3, 6, 3, 8}, /* 134 */ {44, 3, 5, 3, 7}, /* 135 */ {46, 3, 5, 3, 7}, /* 136 */ {46, 0, 7, 0, 7}, /* 137 */ {46, 1, 1, 1, 0}, /* 138 */ {46, 2, 5, 2, 7}, /* 139 */ {46, 2, 5, 2, 7}, /* 140 */ {53, 4, 1, 4, 1}, /* 141 */ {76, 0, 1, 0, 0}, /* 142 */ {62, 3, 5, 3, 7}, /* 143 */ {62, 4, 1, 4, 1}, /* 144 */ {62, 0, 7, 0, 7}, /* 145 */ {62, 0, 1, 0, 1}, /* 146 */ {64, 3, 5, 3, 7}, /* 147 */ {64, 3, 6, 3, 8}, /* 148 */ {64, 4, 1, 4, 1}, /* 149 */ {65, 3, 5, 3, 7}, /* 150 */ {65, 3, 6, 3, 8}, /* 151 */ {65, 4, 1, 4, 1}, /* 152 */ {63, 3, 5, 3, 7}, /* 153 */ {63, 3, 6, 3, 8}, /* 154 */ {63, 0, 7, 0, 7}, /* 155 */ {63, 1, 1, 1, 0}, /* 156 */ {63, 2, 5, 2, 7}, /* 157 */ {63, 2, 6, 2, 8}, /* 158 */ {63, 2, 5, 2, 7}, /* 159 */ {66, 1, 1, 1, 0}, /* 160 */ {67, 1, 1, 1, 0}, /* 161 */ {68, 1, 1, 1, 0}, /* 162 */ {69, 1, 1, 1, 0}, /* 163 */ {70, 4, 1, 4, 1}, /* 164 */ {70, 0, 1, 0, 1}, /* 165 */ {70, 1, 1, 1, 0}, /* 166 */ {71, 3, 5, 3, 7}, /* 167 */ {71, 3, 6, 3, 8}, /* 168 */ {71, 4, 1, 4, 1}, /* 169 */ {71, 4, 2, 4, 2}, /* 170 */ {72, 3, 5, 3, 7}, /* 171 */ {72, 4, 1, 4, 1}, /* 172 */ {75, 4, 1, 4, 1}, /* 173 */ {75, 4, 2, 4, 2}, /* 174 */ {75, 3, 5, 3, 7}, /* 175 */ {75, 3, 6, 3, 8}, /* 176 */ {75, 1, 1, 1, 0}, /* 177 */ {75, 1, 1, 1, 0}, }; LIBRARY/float128/dpml_erf_t.h0000644€­ Q01134020000001224715113665770014701 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" #include "dpml_private.h" static const TABLE_UNION __erf_t_table[] = { /* 2/sqrt(pi) - 1, 8 and 1/8 */ /* 000 */ DATA_1x2( 0x8214db69, 0x3fc06eba ), /* 008 */ DATA_1x2( 0x00000000, 0x40200000 ), /* 016 */ DATA_1x2( 0x00000000, 0x3fc00000 ), /* erf_poly_coefs */ /* 024 */ DATA_1x2( 0x8214db68, 0x3fc06eba ), /* 032 */ DATA_1x2( 0x6b0379d7, 0xbfd81274 ), /* 040 */ DATA_1x2( 0x1a041744, 0x3fbce2f2 ), /* 048 */ DATA_1x2( 0x311dc6de, 0xbf9b82ce ), /* 056 */ DATA_1x2( 0xce0a2da1, 0x3f7565bc ), /* 064 */ DATA_1x2( 0x5ffe8f72, 0xbf4c02da ), /* 072 */ DATA_1x2( 0x9fa4ab37, 0x3f1f9a08 ), /* 080 */ DATA_1x2( 0xc7f1f6bd, 0xbeef484c ), /* 088 */ DATA_1x2( 0x9fc13017, 0x3ebb46e6 ), /* 096 */ DATA_1x2( 0xeb9ff2e4, 0xbe827e83 ), /* erfc_poly_coefs */ /* 104 */ DATA_1x2( 0x8214db5f, 0x3fc06eba ), /* 112 */ DATA_1x2( 0x50428ad8, 0xbfe20dd7 ), /* 120 */ DATA_1x2( 0xf83622e8, 0x3feb14c2 ), /* 128 */ DATA_1x2( 0xcaa86b40, 0xc000ecf9 ), /* 136 */ DATA_1x2( 0x190ca828, 0x401d9eae ), /* 144 */ DATA_1x2( 0x347768e2, 0xc040a8c8 ), /* 152 */ DATA_1x2( 0xdd844934, 0x4066dd4b ), /* 160 */ DATA_1x2( 0xa98aebab, 0xc09242bc ), /* 168 */ DATA_1x2( 0x1c9651bb, 0x40bf1c16 ), /* 176 */ DATA_1x2( 0x0cb29ff7, 0xc0e74cd5 ), /* 184 */ DATA_1x2( 0x2a73c822, 0x4104919c ), /* exp_poly_coefs */ /* 192 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* 200 */ DATA_1x2( 0xfffffffb, 0xbfdfffff ), /* 208 */ DATA_1x2( 0x5545c0c3, 0x3fc55555 ), /* 216 */ DATA_1x2( 0x29d0ed6b, 0xbfa55538 ), /* erfc_num_coefs */ /* 224 */ DATA_1x2( 0xffe79cf3, 0x401bffff ), /* 232 */ DATA_1x2( 0xa989a44c, 0x40263831 ), /* 240 */ DATA_1x2( 0xd0373e5f, 0x4020c4f1 ), /* 248 */ DATA_1x2( 0x59b3d5b9, 0x400cae45 ), /* 256 */ DATA_1x2( 0x03e63df7, 0x3fe9cd95 ), /* 264 */ DATA_1x2( 0x441b612f, 0x3f926090 ), /* 272 */ DATA_1x2( 0x9728084a, 0xbfa60aad ), /* 280 */ DATA_1x2( 0x34324425, 0xbf8813c7 ), /* 288 */ DATA_1x2( 0x5f9d0ff9, 0xbf531d7a ), /* erfc_den_coefs */ /* 296 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* 304 */ DATA_1x2( 0xd7801f25, 0x40070372 ), /* 312 */ DATA_1x2( 0xfb4b2616, 0x400e1e02 ), /* 320 */ DATA_1x2( 0x0e3e418e, 0x40078329 ), /* 328 */ DATA_1x2( 0xd8fa46c6, 0x3ff812aa ), /* 336 */ DATA_1x2( 0x94d3d4f6, 0x3fe0a7f9 ), /* 344 */ DATA_1x2( 0x030763e1, 0x3fbeb086 ), /* 352 */ DATA_1x2( 0x37f6be5c, 0x3f916e50 ), /* 360 */ DATA_1x2( 0x668fd10f, 0x3f531d7a ), }; #define TWO_OVER_SQRT_PI_M1 *((double *) ((char *)__erf_t_table + 0)) #define EIGHT *((double *) ((char *)__erf_t_table + 8)) #define ONE_EIGTH *((double *) ((char *)__erf_t_table + 16)) #define ERF_POLY_COEFS ((double *) ((char *)__erf_t_table + 24)) #define ERFC_POLY_COEFS ((double *) ((char *)__erf_t_table + 104)) #define EXP_POLY_COEFS ((double *) ((char *)__erf_t_table + 192)) #define ERFC_NUM_COEFS ((double *) ((char *)__erf_t_table + 224)) #define ERFC_DEN_COEFS ((double *) ((char *)__erf_t_table + 296)) #define ERF_POLY(t,z) POLY_9_ALL(t, ERF_POLY_COEFS, z) #define ERFC_POLY(t,z) POLY_10_ALL(t, ERFC_POLY_COEFS, z) #define EXP_POLY(t,z) POLY_3_ALL(t, EXP_POLY_COEFS, z) #define ERFC_NUM_POLY(t,z) POLY_8_ALL(t, ERFC_NUM_COEFS, z) #define ERFC_DEN_POLY(t,z) POLY_8_ALL(t, ERFC_DEN_COEFS, z) #define MAX_POLY_ARG 0x3fe3c21ff5156423 #define MIN_ERF_POLY_ARG 0x3e43988e144022d1 #define MIN_ERFC_POLY_ARG 0x3c8c5bf891b4ef6a #define ERFC_MAX_CONSTANT_ARG (0x4017afb48dc96626 - (U_WORD) 0x8000000000000000) #define ERF_MIN_CONSTANT_ARG 0x4017afb48dc96626 #define MIN_ASYMTOTIC_ARG 0x4017afb48dc96626 #define MIN_UNDERFLOW_ARG 0x403b58df9656ccc3 LIBRARY/float128/dpml_ux_radian_reduce.c0000644€­ Q01134020000012235115113665770017074 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if defined(MAKE_INCLUDE) # define BASE_NAME rdx #elif !defined(DPML_UX_RDX_BUILD_FILE_NAME) # define DPML_UX_RDX_BUILD_FILE_NAME dpml_rdx_x.h #endif #include "dpml_ux.h" /* ** This file contains the code for performing radian argument reduction ** for unpacked x-float arguments. The code here is liberally borrowed ** from dpml_trig_reduce.c and assumes the existence of a file that contains ** the bits of 4/pi and appropriate definitions for accessing it. This ** file is denoted by FOUR_OVER_PI_BUILD_FILE_NAME in dpml_names.h. ** ** The reduction routine returns the reduced argument accurate to F_PRECISION + ** EXTRA_PRECISION and the quadrant (modulo 4) that contained the original ** argument. Special cases like infinites and NaN's are assumed to have been ** screened out prior to calling this routine. */ #if !defined(EXTRA_PRECISION) # define EXTRA_PRECISION 6 #endif #if !defined(MAKE_INCLUDE) //# undef FOUR_OVER_PI_BUILD_FILE_NAME # include STR(DPML_UX_RDX_BUILD_FILE_NAME) #endif #define DEFINES #include STR(FOUR_OVER_PI_BUILD_FILE_NAME) /* ** BASIC ALGORITHM: ** ---------------- ** ** Let z = x + octant*(pi/4). We want to produce ** ** y = rem( z, pi/2 ) ** ** or equivalently, ** ** Q = nint( z/(pi/2) ) ** y = z - Q*(pi/2) ** ** Note that the reduce argument is in "radians". For computational ** purposes, it is convenient to first obtain the reduced argument in ** cycles - i.e. compute y as ** ** c = z/(pi/2) ** Q = nint(c) ** w = c - Q ** y = w*(pi/2) ** ** If in the above calculations, we substitute x + octant*(pi/4) for x, we get ** ** c = x/(pi/2) + octant/2 ** Q = nint(c) ** w = c - Q ** y = w*(pi/2) ** ** Now, suppose instead of computing, c, Q and w, we compute c' = 2*c, Q' = 2*Q ** and w' = 2*w. Then the above becomes ** ** c' = x/(pi/4) + octant ** Q' = 2*nint(c'/2) ** w' = x/(pi/4) + octant - Q' ** y = w'*(pi/4) ** ** We see that the key operation is to compute x/(pi/4). With this in mind, ** let x = 2^n*f, where 1/2 <= f < 1 and f has P' ( = 128 ) significant bits. ** If F is defined as F = 2^P'*f, it follows that F is an integer. ** Now ** ** x/(pi/4) = x*(4/pi) ** = (2^n*f)*(4/pi) ** = [2^(n-P')]*[2^P'*f] *(4/pi) ** = [2^(n-P')]*F*(4/pi) ** = F*{2^(n-P')*(4/pi)} ** ** Suppose that we have stored a large bit string that represents the value ** of 4/pi, then we can obtain the value of 2^(n-P')*(4/pi) by moving the ** binary point in 4/pi by n-P' places. In particular, let ** ** 2^(n-P')*(4/pi) = J*8 + g ** ** That is, J is an integer formed from the first n-P'-3 bits of 4/pi and ** g is value formed by the remaining bits. It follows that ** ** x/(pi/4) = F*{2^(n-P')*(4/pi)} ** = F*(J*8 + g) ** = F*J*8 + F*g ** ** Note that we need only compute x/(pi/4) modulo 8. Since F and J are both ** integers, the above gives ** ** x/(pi/4) (mod 8) = (F*J*8 + F*g) (mod 8) ** = F*g (mod 8) ** ** At this point the algorithm for large argument reduction has the following ** flavor: ** ** (1) index into a precomputed bit string for 4/pi to ** obtain g ** (2) compute w = F*g (mod 8) ** (3) w <-- integer part of w + octant (mod 8) ** (4) Q <-- nint(w) ** (5) y = w - Q ** (6) y = y*(pi/4) ** ** Algorithm I ** ----------- ** ** The following sections describe the implementation issues associated with ** each of the steps in algorithm I as well as present the code for the ** overall implementation. ** ** ** THE 4/pi TABLE ** -------------- ** ** Step (1) of Algorithm I requires indexing into a bit string for 4/pi using ** the exponent field of the argument. Specifically, if n is the argument ** exponent we want to shift the binary point of 4/pi by n - P' bits to the ** right. If |x| < pi/4, there is no need to compute x/(pi/4), so we assume ** that we only index into the table if |x| >= 1/2. Under this assumption, ** it is possible that n - P' is negative. Thus to facilitate the indexing ** operation, it is necessary for the bit string to have some leading 0's. ** ** Assume the bit string for 4/pi has T leading zeros and that the bits are ** numbered in increasing order starting from 0. I.e. the string looks like: ** ** bit number: 0 T ** 00...001.01000101111..... ** ^ ** | ** binary point ** ** From the above discussion, we want to shift the binary point of the bit ** string n-P' bits to the right and extract g as some (as yet undetermined) ** number of bits, starting 3 bits to the left of the shifted binary point. ** Consequently, the position of the most significant bit we would like to ** access is k = T + n - P' - 2. Since we want the bit position to be greater ** than or equal to zero, and we are assuming that the argument is greater ** than or equal to 1/2 (i.e. n >= 0), it follows that T >= P' + 2. */ #if FOUR_OV_PI_ZERO_PAD_LEN < (UX_PRECISION + 2) # error "Insufficient zero padding in 4/pi table" #endif /* ** Since most architectures do not efficiently support bit addressing, the ** argument reduction routine assumes that the 4/pi bit string is stored ** in L-bit "digits". Getting the right bits of 4/pi requires getting the set ** of "digits" that begin with the digit that contains the leading bit and ** doing a sequence of shifts and logical ors. The index of the digit that ** contains the initial bit is trunc(n/L) and the bit position within that ** digit is n - L*trunc(n/L) = n % L. For the unpacked reduction routine, ** we require the 4/pi table "digit" and a UX_FRACTION_DIGIT have the same ** length (which implies the digit length is either 32 or 64 bits). */ #if (BITS_PER_DIGIT != BITS_PER_UX_FRACTION_DIGIT_TYPE) # error "Digit type mis-match" #endif #define DIGIT_MASK(width,pos) ((( DIGIT_TYPE_CAST 1 << (width)) - 1) << (pos)) #define DIGIT_BIT(pos) ( DIGIT_TYPE_CAST 1 << (pos)) #if defined(MAKE_COMMON) || defined(MAKE_INCLUDE) #define DIGIT_TYPE_CAST /* MPHOC doesn't do casts */ #else #define DIGIT_TYPE_CAST (DIGIT_TYPE) #endif #define DIV_REM_BY_L(n,q,r) (q) = (n) >> __LOG2(BITS_PER_DIGIT); \ (r) = (n) & (BITS_PER_DIGIT - 1) /******************************************************************************/ /* */ /* Generate code for multi-precision multiplication */ /* */ /******************************************************************************/ /* ** Many of the operation used in the radian reduction scheme depend on the ** digit size. The following code is used generate macros that hide the ** dependencies on digit size. */ #if defined(MAKE_INCLUDE) @divert -append divertText /* ** Record FOUR_OVER_PI_BUILD_FILE_NAME so we don't have to keep specifying ** it on the command line. */ printf("#if !defined FOUR_OVER_PI_BUILD_FILE_NAME\n"); printf("#define FOUR_OVER_PI_BUILD_FILE_NAME\t" STR(FOUR_OVER_PI_BUILD_FILE_NAME) "\n"); printf("#endif\n"); /* ** COMPUTING F*g ** ------------- ** ** The goal of step (2) in Algorithm I is to produce a reduced argument ** that is accurate to P + k bits, where k is the specified number of ** extra bits of precision. Also, we need to get the quadrant bits, Q. ** Consequently, the value of w = F*g, must be accurately computed to ** P + k + 3 bits. Note however, that if x is close to a multiple of ** pi/2 the reduced argument will have a large number of leading zeros ** (in fixed point) and consequently the actual number of required bits ** in w will depend upon the input argument. Since computing w is the ** most time consuming part of the algorithm, we would like to compute ** the minimum number of bits possible. Specifically, compute w to enough ** bits so that if x is not near a multiple of pi/2, then the reduced ** argument will be accurate. After w is computed, we can check how close ** the original argument was to pi/2 by examining the number of leading ** fractional 1's or 0's in w. If there are too many (i.e. the reduced ** argument will not have enough significant bits) then we can compute ** additional bits of w. ** ** In order to compute F*g to P + k + 3 bits, we must perform some form of ** extended precision arithmetic. For the sake of uniformity across data ** types and architectures, the implementation described here computes F*g ** by expressing F and g as fixed point values in "arrays" of some basic ** integer unit of computation. As indicated above, we shall refer to this ** integer unit as a digit. The choice of digit is arbitrary, however, it ** is best if the double length product of two digits is efficiently ** computed. ** ** Now we need to represent w to at least P + k + 3 bits. Since F has P' ** significant bits, if we use a finite precision approximation of g, call ** it g', then the last P' bits of the product F*g' are inaccurate. ** Therefore we need to represent g' to N = P' + P + k + 3 bits. If the ** number of bits in a digit is L, then F and g' must be represented in at ** least ceil(P'/L) and D = ceil(N/L) digits respectively. */ num_f_digits = ceil(UX_PRECISION/BITS_PER_DIGIT); num_req_bits = (F_PRECISION + UX_PRECISION + EXTRA_PRECISION + 3); num_w_digits = ceil(num_req_bits/BITS_PER_DIGIT); num_g_digits = num_w_digits; num_extra_bits = num_w_digits*BITS_PER_DIGIT - num_req_bits; printf("#define NUM_F_DIGITS\t%i\n", num_f_digits); printf("#define NUM_G_DIGITS\t%i\n", num_g_digits); printf("#define NUM_W_DIGITS\t%i\n", num_w_digits); printf("#define NUM_REQ_BITS\t%i\n", num_req_bits); printf("#define NUM_EXTRA_BITS\t%i\n", num_extra_bits); print; /* ** Now consider the computation of F*g' in terms of digits. For the ** purpose of discussion, suppose F requires 2 digits and g' requires 4 ** digits. ** Then using "black board" arithmetic F*g' looks like: ** ** binary point ** | ** | ** | ** +--------+--------+--------+--------+ ** g': | g1 | g2 | g3 | g4 | ** +--------+--------+--------+--------+ ** +--------+--------+ ** F: | F1 | F2 | ** +--------+--------+ ** ---------------------------------------------------------- ** | +--------+--------+ ** | | F2*g4 | ** | +--------+--------+--------+ ** | | F1*g4 | ** | +--------+--------+ ** | | F2*g3 | ** +--------+--------+--------+ ** | F1*g3 | ** +--------+--------+ ** | F2*g2 | ** +--------+--------+--------+ ** | F1*g2 | ** +--------+--------+ ** | F2*g1 | ** +--------+--------+--------+ ** | F1*g1 | | ** +--------+--------+ | ** | ** ---------------------------------------------------------- ** +--------+--------+--------+--------+--------+--------+ ** | Not required | w1 | w2 | w3 | w4 | ** +--------+--------+--------+--------+--------+--------+ ** ** Figure 1 ** -------- ** ** The high two digits of the product are not required since we are ** interested in the result modulo 8. ** ** In general the number of digits used to express g' will contain more ** than N bits. Let the number of bits in excess of N be M. Then if x is ** close to pi/2 and the number of leading fractional 0's or 1's in F*g' is ** less than M, F*g' still contains enough significant bits to return an ** accurate reduced argument. If we denote the 3 most significant bits ** of w1 as o, then x will be close to pi/2 if o is odd the bits below ** o are 1's or o is even and the bits below o are 0's. Therefore there ** will be loss of significance if w1 (in the picture above) has a binary ** representation of the form ** ** +----------------------+ ** |xx00000...00000xxxxxxx| ** +----------------------+ ** - or - ** +----------------------+ ** |xx11111...11111xxxxxxx| ** +----------------------+ ** |<-- M+2 -->| ** ** These two bit patterns can be detected by add and mask operations. ** ** Assuming that M+2 0's or 1's appear in w1, we know that there are not ** enough significant bits in w to guarantee the accuracy of the answer. ** Consequently, we need to generate more bits of w. This can be done by ** getting the next digit of g, computing the product of that digit with ** F and adding it into the previous value of w. This process can be ** repeated until there are a sufficient number of significant bits. Note ** that each additional digit of g will add one digit (L bits) of ** significance to w. ** ** If the processes of adding additional significant bits is implemented ** in a naive fashion, each time through the loop will require an ** additional digit of storage. Consider the situation where the first ** additional digit has been added to w and there are still insufficient ** significant bits for an accurate result. This means that there are at ** least M + L leading fractional 0's or 1's. Then w must have the form ** ** |<------------ D + 1 digits ---------->| ** +----------+----------+ +----------+ ** |xx########|######xxxx| ... |xxxxxxxxxx| ** +----------+----------+ +----------+ ** |<-- M+L+2 -->| ** ** where the #'s indicate a string of 0's or 1's. Since there are more ** than L consecutive 0's or 1's, we can compress the representation of w ** by one digit by removing L consecutive 0's or 1's from the first two ** digits of w. If this is done w will look like ** ** |<-------------- D digits ------------>| ** +----------+----------+ +----------+ ** |xx#####xxx|xxxxxxxxxx| ... |xxxxxxxxxx| ** +----------+----------+ +----------+ ** -->|M+2|<-- ** ** Which is the same as for when the first additional digit was added. ** It follows that we need storage for only D+1 digits of w and a counter ** indicating the number of additional digits that were added. ** ** To recap the above discussion, algorithm I is expanded as follows: ** ** (1) s <-- 0 ** (2) w <-- first D digits of F*g ** (3) if w has less than or equal to M leading fractional ** 0's or 1's, go to step 9 ** (4) add an additional digit of F*g to w ** (5) if w has less than L leading leading fractional 0's ** or 1's, go to step 9 ** (6) Compact w by removing L 0's or 1's ** (7) s <-- s + 1 ** (8) go to step 3. ** (9) o <-- high three bits of w ** (10) z' <-- w - nint(w) (taking into account what ** ever compaction took place, i.e. what the current ** value of s is.) ** (11) y = z*(pi/4) ** ** Algorithm II ** ------------ ** ** The above loop has two exits. An exit from step 3 yields an ** approximation to w containing D digits while an exit from step 5 ** contains D+1 digits. In the second case, there are fewer than L ** leading 0's and 1's and this implies that there are enough "good" bits ** in the first D digits to generate the return values. Consequently, ** from either exit, it is sufficient to use only the first D digits of w. ** ** The exposition above on the number of leading zeros was a little loose, ** in that for the general case, the leading zeros and ones may not always ** lie entirely in the first digit of w. In general, there can be as many ** as L-1 extra bits, in which case, we would need to examine both the ** first and second word of w. However, for the digit sizes we are ** considering combined with the number of extra bits we are returning, ** examining one digit will suffice. */ p = BITS_PER_DIGIT - (num_extra_bits + 4); if (p < 0) { printf("ERROR: mask spans two digits\n"); exit; } else { i = DIGIT_BIT(p); /* to 'add 1' at position p */ m = DIGIT_MASK(num_extra_bits + 1, p + 1); printf("#define W_HAS_M_BIT_LOSS\t" "(((MSD_OF_W + 0x%..16i) & 0x%..16i) == 0)\n", i, m); } /* ** DIGIT ARITHMETIC ** ---------------- ** ** In step (2) of Algorithm 2, we are computing the first D digits of the ** product F*g. From figure 1, we see that, (in general) we are computing ** a 2*L bit product and incorporating it into the sum of previously ** computed 2*L bit products. If we think of F, g and w as multi-digit ** integers with their digits numbered from least significant to most ** significant (starting at zero) and denoting the i-th digit of F by F(i) ** and the j-th digit of g by g(j), then the product in figure 1 can be ** obtained as follows: ** ** t = 0; ** for (i = 0; i < num_g_digits; i++) ** { ** for (j = 0; j < num_F_digits; j++) ** t = t + F[j]*g[i]*2^(j*L) ** w[i] = t mod 2^L; ** t = (t >> L); ** } ** ** Example 1 ** --------- ** ** Note that each time through the loop, t is accumulating the product ** g[i]*F plus "the high digits" of g[i-1]*F. It follows that t can be ** represented in (num_F_digits + 1) digits. ** ** If F contains n digits, then the sum in the above loops looks like: ** ** +--------+ +--------+--------+--------+--------+ +--------+ ** t: | t(n) | ... | t(j+3) | t(j+2) | t(j+1) | t(j) | ... | t(0) | ** +--------+ +--------+--------+--------+--------+ +--------+ ** +--------+--------+ ** + | F[j]*g[i] | ** +--------+--------+ ** -------------------------------------------------------------------- ** +--------+ +--------+--------+--------+--------+ +--------+ ** t: | t'(n) | ... | t'(j+3)| t'(j+2)| t'(j+1)| t'(j) | ... | t(0) | ** +--------+ +--------+--------+--------+--------+ +--------+ ** ** Note that t(0) through t(j-1) are unaffected and that t(j+2) through ** t(n) are affected only by the carry out when computing t'(j+1). It ** follows that if we keep the carry out of t'(j+1) as a separate quantity, ** then the addition in the inner loop only affects two digits of t. If ** we denote the separate carry by c(j), the picture on the next iteration ** of the loop (i.e. replace j by j+1) looks like: ** ** +--------+ +--------+--------+--------+--------+ +--------+ ** t: | t(n) | ... | t(j+3) | t(j+2) | t(j+1) | t(j) | ... | t(0) | ** +--------+ +--------+--------+--------+--------+ +--------+ ** +--------+--------+ ** | F(i)*g(j+1) | ** +--------+--------+ ** +--------+ ** + | c(j) | ** +--------+ ** -------------------------------------------------------------------- ** +--------+ +--------+--------+--------+--------+ +--------+ ** t': | t(n) | ... | t(j+3) | t'(j+2)| t'(j+1)| t(j) | ... | t(0) | ** +--------+ +--------+--------+--------+--------+ +--------+ ** +--------+ ** + | c(k+1) | ** +--------+ ** ** Figure 1 ** -------- ** ** The above gives rise to the notion of a multiply/add primitive that has 5 ** inputs and 3 output: ** ** Inputs: N, M the most and least significant digits ** of t that are being added to ** C the carry out from the previous mul/add ** A, B The two digits that are to be multiplied ** ** Outputs: C' The carry out of the final sum ** N',M' The updated values of N and M. ** ** Recalling that the number of bits per digit is denoted by L, the mul/add ** primitive is algebraicly defined by: ** ** s <-- (N + C)*2^L + A*B ** M' <-- s % 2^L ** N' <-- floor(s/2^L) % 2^L ** C' <-- floor(s/2^(2*L)) % 2^L ** ** Note that in example 1, there are several special cases of the mul/add ** macro which might be faster depending on the values of i and j: ** ** i and j Special case ** ------------------ --------------------------------- ** 1) i = 0, j = 0 N = M = C = 0, C' = 0 ** 2) i = 0, j < n-1 N = C = 0, C' = 0 ** 3) i = 0, j = n-1 N = C = 0, C' = 0 and N' not needed ** ** 4) i > 0, j = 0 C = 0 ** 5) i > 0, j < n-1 general case ** 6) i > 0, j = n-1 N = 0, C' not needed ** ** 7) i + j = n-2 C' not needed ** 8) i + j = n-1 C, N, C' and N' not needed ** ** Note that cases 3 and 7 are functionally identical. For purposes of ** this discussion we will use the mnemonic XMUL to refer to producing a ** 2*L-bit product from 2 L-bit digits and XADD/XADDC to refer to the ** addition of one 2*L-bit integer to another without/with producing a ** carry out. With this naming convention we denote the following 6 ** mul/add operations that correspond to the 6 special cases as follows: ** ** case mul/add operator name ** ---- --------------------- ** 1) XMUL(A,B, N',M') ** 2) XMUL_ADD(A,B,M,N',M') ** 3) MUL_ADD(A,B,M,M') ** 4) XMUL_XADDC(A,B,N,M,C',N',M') ** 5) XMUL_XADDC_W_C_IN(C,A,B,N,M,C',N',M') ** 6) XMUL_XADD_W_C_IN(N,M,C,A,B,C',N',M') ** ** [XMUL_XADD_W_C_IN is described with more parameters than are actually ** used.] ** [There are 8 cases, two of which are "functionally identical". That ** leaves 7 cases, but only 6 have a "mul/add operator name".] ** ** The mphoc code following these comments generates macros for computing ** the initial multiplication of F*g as a function of the number of digits ** in both F and g. It assumes that NUM_F_DIGITS <= NUM_G_DIGITS ** ** ** ** The description of digit arithmetic above indicates that we need ** NUM_F_DIGITS + 1 temporary locations to hold the intermediate products ** and sums plus one extra for dealing with carries. For adding ** additional digits of the product F*g, we need at least 3 temporary ** locations. */ num_t_digits = max(3, num_f_digits + 2); /* ** Print macros for declaring the appropriate number of digits */ # define PRINT_DECL_DEF(tag,name,k) \ /* define 'name'0 thru 'name''k-1' */ \ printf("#define " tag STR(name) "0"); \ for (i = 1; i < k; i++) printf(", " STR(name) "%i", i); \ printf("\n") PRINT_DECL_DEF("G_DIGITS\t", g, num_g_digits); PRINT_DECL_DEF("F_DIGITS\t", F, num_f_digits); PRINT_DECL_DEF("TMP_DIGITS\t", t, num_t_digits); # undef PRINT_DECL_DEF print; /* ** Print macros for referencing the most significant digits of F and g ** as well as declaring the high temporary as the carry digit. */ printf("#define MSD_OF_W\tg%i\n", num_w_digits - 1); printf("#define LSD_OF_W\tg%i\n", num_w_digits - 1 - num_f_digits); printf("#define SECOND_MSD_OF_W\tg%i\n", num_w_digits - 2); printf("#define CARRY_DIGIT\tt%i\n", num_t_digits - 1); print; /* ** GET_F_DIGITS(x) fetches the initial digits of f from x. We assume ** that num_f_digits has the same value as NUM_UX_FRACTION_DIGITS ** ** PUT_W_DIGITS(x) stores the result digits into an UX_FLOAT fraction ** field. */ if (num_f_digits != NUM_UX_FRACTION_DIGITS) { printf("ERROR: num_f_digits != NUM_UX_FRACTION_DIGITS\n"); exit; } # define sMAC2 "; \\\n\t" # define MAC2 " \\\n\t" # define MAC3 "\n\n" printf("#define GET_F_DIGITS(x)" ); for (i = 0; i < num_f_digits; i++) printf( sMAC2 "F%i = G_UX_FRACTION_DIGIT(x, %i)", NUM_UX_FRACTION_DIGITS - 1 - i, i); printf(MAC3); printf("#define PUT_W_DIGITS(x)" ); for (i = 0; i < num_f_digits; i++) printf( sMAC2 "P_UX_FRACTION_DIGIT(x, %i, g%i)", i, num_g_digits - 1 - i); printf(MAC3); /* ** NEGATE_W negates the high num_f_digits + 1 digits of w */ printf("#define NEGATE_W {" ); j = num_g_digits; for (i = 0; i <= num_f_digits; i++) { j--; printf( " \\\n\t" "g%i = ~g%i;", j, j); } printf( " \\\n\t" "g%i += 1; CARRY_DIGIT = (g%i == 0);", j, j); for (i = 1; i < num_f_digits; i++) { j++; printf(" \\\n\t" "g%i += CARRY_DIGIT; CARRY_DIGIT = (g%i == 0);", j, j); } printf(" \\\n\t" "g%i += CARRY_DIGIT; }\n\n", j + 1); /* ** GET_G_DIGITS_FROM_TABLE fetches the initial digits of g ** (and the extra_digit) from the table. */ printf("#define GET_G_DIGITS_FROM_TABLE(p, extra_digit)"); /* Better performance with DEC C -- don't auto-increment! */ for (i = num_g_digits - 1; i >= 0; i--) printf(MAC2 "g%i = p[%i]; ", i, num_g_digits - 1 - i); printf(MAC2 "extra_digit = p[%i]; ", num_g_digits); printf(MAC2 "p += %i", num_g_digits + 1); printf(MAC3); /* ** Generate macro that aligns g bits ** ** LEFT_SHIFT_G_DIGITS(lshift,BITS_PER_WORD-lshift,extra_digit) == ** g = (g << lshift) | (extra_digit >> (BITS_PER_WORD-lshift) **/ printf("#define LEFT_SHIFT_G_DIGITS(lshift, rshift, extra_digit)"); for (i = num_g_digits - 1; i > 0; i--) printf(MAC2 "g%i = (g%i << (lshift)) | (g%i >> (rshift));", i, i, i-1); printf(MAC2 "g0 = (g0 << (lshift)) | (extra_digit >> (rshift))"); printf(MAC3); /* ** MULTIPLY_F_AND_G_DIGITS(c) == g = F* g */ printf("#define MULTIPLY_F_AND_G_DIGITS(c)"); if (num_g_digits == 1) printf("\t" "g0 = F0*g0\n"); else if (num_f_digits == 1) { printf(MAC2 "XMUL(F0,g0,t0,g0)"); for (i = 1; i < num_w_digits - 1; i++) printf(sMAC2 "XMUL_ADD(F0,g%i,t0,t0,g%i)", i, i); printf(sMAC2 "MUL_ADD(F0,g%i,t0,g%i)", i, i); } else { /* Get first product */ printf(MAC2 "XMUL(g0,F0,t1,t0)"); /* ** Accumulate additional products until we use up all of the F ** digits, or we no longer need the high digit of the XMUL. */ msd_of_mul_add = 1; for (i = 1; i < num_f_digits; i++) { msd_of_mul_add++; if (msd_of_mul_add >= num_w_digits) break; printf(sMAC2 "XMUL_ADD(g0,F%i,t%i,t%i,t%i)", i, i, i+1, i); } /* ** If we no longer needed the high digit of the XMUL before using ** all of the F digits, add in the low bits of the final product. */ if (msd_of_mul_add >= num_w_digits) printf(sMAC2 "MUL_ADD(g0,F%i,t%i)", i, i); /* Move the low bits of t to w */ printf(sMAC2 "g0 = t0"); /* ** Now multiply by the remaining digits of g. In the code that ** follows, the digits of t are reused each time through the loop ** modulo (NUM_F_DIGITS + 1). For example, suppose NUM_F_DIGITS ** is 3. In the multiplications above, the digits of t (in most to ** least significant order were t[3]:t[2]:t[1]:t[0]. In the first ** iterations below the order is t[0]:t[3]:t[2]:t[1], and on the ** next iteration t[1]:t[0]:t[3]:t[2], and so on. The variables ** hi, lo and first are used to track the order of the digits and ** the least significant digit. Note that the high tmp digit is ** used as a carry digit. */ for (i = 0; i < num_t_digits - 1; i++) next_index[i] = i + 1; next_index[num_t_digits - 2] = 0; # define UPDATE_DIGIT_INDEX(lo,hi) lo = hi; hi = next_index[hi] first = 0; for (i = 1; i < num_w_digits; i++) { first = next_index[first]; lo = first; hi = next_index[lo]; msd_of_mul_add = i + 2; /* msd is the carry out */ if (msd_of_mul_add < num_w_digits) printf(sMAC2 "XMUL_XADDC(g%i,F0,t%i,t%i,c,t%i,t%i)", i, hi, lo, hi, lo); else if (msd_of_mul_add <= num_w_digits) printf(sMAC2 "XMUL_XADD(g%i,F0,t%i,t%i,t%i,t%i)", i, hi, lo, hi, lo); else printf(sMAC2 "MUL_ADD(g%i,F0,t%i,t%i)", i, lo, lo); UPDATE_DIGIT_INDEX(lo,hi); for (j = 1; j < num_f_digits; j++) { msd_of_mul_add++; if (msd_of_mul_add < num_w_digits) { if (j == (num_f_digits - 1)) printf(sMAC2 "XMUL_XADDC(g%i,F%i,c,t%i,c,t%i,t%i)", i, j, lo, hi, lo); else printf(sMAC2 "XMUL_XADDC_W_C_IN(g%i,F%i,t%i,t%i,c,c,t%i,t%i)", i, j, hi, lo, hi, lo); } else if (msd_of_mul_add <= num_w_digits) { if (j == (num_f_digits - 1)) printf(sMAC2 "XMUL_XADD(g%i,F%i,c,t%i,t%i,t%i)", i, j, lo, hi, lo); else printf(sMAC2 "XMUL_XADD_W_C_IN(g%i,F%i,t%i,t%i,c,t%i,t%i)", i, j, hi, lo, hi, lo); } else if (msd_of_mul_add <= num_w_digits + 1) { printf(sMAC2 "MUL_ADD(g%i,F%i,t%i,t%i)", i, j, lo, lo); } else break; UPDATE_DIGIT_INDEX(lo,hi); } /* Move low digit of t to W */ printf(sMAC2 "g%i = t%i", i, first); } } print; print; /* ** Generate the macro that multiplies F by an additional digit of g ** and adds the product to w. */ printf("#define GET_NEXT_PRODUCT(g, w, c)"); if (num_g_digits == 1) printf("\t" "XMUL_XADD(g,F0,g0,w,g0,w)"); else { printf(MAC2 "XMUL_XADDC(g,F0,g0,(DIGIT_TYPE)0,c,g0,w)"); msd_of_mul_add = 1; for (i = 1; i < num_f_digits; i++) { j = i-1; if (msd_of_mul_add < num_w_digits) printf(sMAC2 "XMUL_XADDC_W_C_IN(g,F%i,g%i,g%i,c,c,g%i,g%i)", i, i, j, i, j); else if (msd_of_mul_add <= num_w_digits + 1) printf(sMAC2 "XMUL_XADD_W_C_IN(g,F%i,g%i,g%i,c,g%i,g%i)", i, i, j, i, j); else if (msd_of_mul_add <= num_w_digits + 2) printf(sMAC2 "MUL_ADD(g,F%i,g%i,g%i)", i, j, j); else break; msd_of_mul_add++; } printf(";"); /* ** If there was a carry out on the last add and we are not past the ** last w digit, then the carry has to be propagated to the remaining ** w digits as necessary. */ if (msd_of_mul_add < num_w_digits) { if (msd_of_mul_add != (num_w_digits - 1)) { printf(MAC2 "if (c) "); i = msd_of_mul_add; while (i < num_w_digits - 1) printf(MAC2 "if (++g%i == 0) ", i++); printf(MAC2 "g%i++", i); } else printf(MAC2 "g%i += c", i); } } printf(MAC3); /* Generate the macro that shifts w left by 1 digit */ printf("#define LEFT_SHIFT_W_LOW_DIGITS_BY_ONE(extra_w_digit)"); if (num_w_digits != 1) { for (i = num_w_digits - 2; i > 0; i--) printf(MAC2 "g%i = g%i;", i, i-1); printf(MAC2 "g0 = extra_w_digit"); } printf(MAC3); print; @end_divert @eval my $outText = MphocEval( GetStream( "divertText" ) ); \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants for large " . \ "radian argument reduction",__FILE__ ); \ print "$headerText\n\n$outText"; #endif #define TMP_DIGIT t0 #define EXTRA_W_DIGIT t1 static U_WORD UX_RADIAN_REDUCE( UX_FLOAT * x, WORD octant, UX_FLOAT * reduced_argument ) { WORD offset, scale, j; UX_EXPONENT_TYPE exponent; UX_SIGN_TYPE sign, sign_x; DIGIT_TYPE quadrant; DIGIT_TYPE F_DIGITS; /* declare F0, ... Fm */ DIGIT_TYPE G_DIGITS; /* declare g0, ... gn */ DIGIT_TYPE TMP_DIGITS; /* declare t0, ... tm+1 */ DIGIT_TYPE next_g_digit; const DIGIT_TYPE *p; /* ** Get the fractional part of x into the fraction digits F. While */ GET_F_DIGITS(x); /* ** Assuming the input argument x has the form x = 2^n*f, where .5 <= f < 1, ** then F at this point is a multi-precision integer, F = 2^128*f ** ** Now, use the exponent to get the bit offset of the first interesting ** bit in the 4/pi table. */ exponent = G_UX_EXPONENT(x); sign_x = G_UX_SIGN(x); /* ** A negative offset would have us access memory before the start of ** the 4/pi table. This indicates that the x was pretty small already, ** so we'll make a quick exit. */ if (exponent < 0) { /* ** At this point the argument has absolute value less than pi/4. ** We need to compute the quadrant bits based on octant and possibly ** adjust x by a +/- pi/4. ** ** If x < 0, then x + octant lies in octant - 1, not octant. */ j = octant + (sign_x >> (BITS_PER_UX_SIGN_TYPE - 1)); /* ** We can now get actual quadrant by looking a the parity of effective ** octant. Depending on whether we round up or down, we might need ** to adjust x by +/- pi/4. */ j = j + (j & 1); quadrant = j >> 1; j = octant - j; if ( j ) ADDSUB(x, UX_PI_OVER_FOUR, j < 0 ? SUB : ADD, reduced_argument); else UX_COPY(x, reduced_argument); return quadrant; } /* ** Get the address of the digit containing the first interesting bit, ** and its bit offset within that digit. Load G from the the table, ** shifting the digits by that bit offset, so that the interesting bit ** will become the high bit of G. */ offset = exponent - ( UX_PRECISION + 2 - FOUR_OV_PI_ZERO_PAD_LEN ); DIV_REM_BY_L(offset, j, offset); p = &FOUR_OVER_PI_TABLE_NAME[j]; GET_G_DIGITS_FROM_TABLE(p, next_g_digit); if (offset) { j = BITS_PER_DIGIT - offset; LEFT_SHIFT_G_DIGITS(offset, j, next_g_digit); } /* ** The extended-precision multiply: w = F*g. */ MULTIPLY_F_AND_G_DIGITS( /* F_DIGITS, G_DIGITS, T_DIGITS, */ CARRY_DIGIT ); /* ** Add in the variable octant. */ octant = sign_x ? -octant : octant; MSD_OF_W += (DIGIT_TYPE)octant << (BITS_PER_DIGIT - 3); scale = 0; do { /* ** If there isn't enough significance in w, then: ** get more bits from the table, form the new digit into TMP_DIGIT, ** and add the partial product F*TMP_DIGIT to w. */ if ( !W_HAS_M_BIT_LOSS ) break; TMP_DIGIT = next_g_digit; next_g_digit = *p++; if (offset) TMP_DIGIT = (TMP_DIGIT << offset) | (next_g_digit >> j); GET_NEXT_PRODUCT(TMP_DIGIT, EXTRA_W_DIGIT, CARRY_DIGIT); /* ** We're done if the there are fewer than L bits of 0's or 1's. */ TMP_DIGIT = ( SECOND_MSD_OF_W >> (BITS_PER_DIGIT - NUM_EXTRA_BITS - 3)) | (MSD_OF_W << (NUM_EXTRA_BITS + 3)); TMP_DIGIT ^= ((SIGNED_DIGIT_TYPE) TMP_DIGIT >> (BITS_PER_DIGIT - 1)); if ( TMP_DIGIT ) break; /* ** Compress the current value of w and increment scale to reflect ** the compression */ # define OCTANT_MASK MAKE_MASK(3, BITS_PER_DIGIT - 3) MSD_OF_W = (MSD_OF_W & OCTANT_MASK) | (SECOND_MSD_OF_W & ~OCTANT_MASK); LEFT_SHIFT_W_LOW_DIGITS_BY_ONE(EXTRA_W_DIGIT); EXTRA_W_DIGIT = 0; scale += BITS_PER_DIGIT; } while (1); /* ** "Sign extend" w and get the quadrant. In the process, if the MSD_OF_W ** is "all" 0's or 1's, we need to shift up one digit in order to insure ** the proper number of significant bits in the final result. */ quadrant = MSD_OF_W; MSD_OF_W = MSD_OF_W << 2; MSD_OF_W = ((SIGNED_DIGIT_TYPE) MSD_OF_W) >> 2; TMP_DIGIT = MSD_OF_W; quadrant -= MSD_OF_W; if ( MSD_OF_W == ((SIGNED_DIGIT_TYPE) MSD_OF_W >> (BITS_PER_DIGIT - 1)) ) { MSD_OF_W = SECOND_MSD_OF_W; LEFT_SHIFT_W_LOW_DIGITS_BY_ONE(EXTRA_W_DIGIT); scale += BITS_PER_DIGIT; } /* ** If the sign bit of the original MSD of w is set, then "negate" the ** result */ sign = ((SIGNED_DIGIT_TYPE) TMP_DIGIT) < 0 ? UX_SIGN_BIT : 0; if (sign) NEGATE_W /* ** Put w into unpacked format and normalize. Make up for any zero bits ** that were shift in during the normalization. Note that by the way the ** reduced argument was constructed, normalization shift cannot be bigger ** than the digit size. */ quadrant = G_UX_SIGN(x) ? -quadrant : quadrant; P_UX_SIGN(reduced_argument, sign ^ sign_x); P_UX_EXPONENT(reduced_argument, 3); PUT_W_DIGITS(reduced_argument); NORMALIZE(reduced_argument); exponent = G_UX_EXPONENT(reduced_argument); offset = exponent - 3; if (offset) { offset += BITS_PER_DIGIT; TMP_DIGIT = G_UX_LSD( reduced_argument); TMP_DIGIT |= (LSD_OF_W >> offset); P_UX_LSD(reduced_argument, TMP_DIGIT); } P_UX_EXPONENT(reduced_argument, exponent - scale); MULTIPLY(reduced_argument, UX_PI_OVER_FOUR, reduced_argument); return quadrant >> (BITS_PER_DIGIT - 2); } LIBRARY/float128/op_system.h0000644€­ Q01134020000001210115113665770014575 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef OP_SYSTEM_H #define OP_SYSTEM_H #if (defined(dos) || defined(DOS)) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define dos 1 # define OP_SYSTEM dos #elif (defined(vms) || defined(VMS)) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define vms 2 # define OP_SYSTEM vms #elif ( defined(wnt) || defined(WNT) || defined(winnt)) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define wnt 3 # define OP_SYSTEM wnt #elif (defined(linux) || defined(LINUX) || defined(__linux)) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define linux 8 # define OP_SYSTEM linux #elif (defined(osf) || defined(OSF) || defined(__osf__)) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define osf 4 # define OP_SYSTEM osf #elif (defined(hp_ux) || defined(HP_UX) || defined(__hpux) || defined(__HPUX)) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define hp_ux 5 # define OP_SYSTEM hp_ux #elif (defined(unicos) || defined(UNICOS)) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define unicos 6 # define OP_SYSTEM unicos #elif (defined(ultrix) || defined(ULTRIX)) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define ultrix 7 # define OP_SYSTEM ultrix #elif (defined(win64) || defined(WIN64)) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define win64 9 # define OP_SYSTEM win64 #elif defined(__APPLE__) || defined(darwin) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define darwin 10 # define OP_SYSTEM darwin #elif defined(interix) # undef dos # undef vms # undef wnt # undef osf # undef hp_ux # undef linux # undef unicos # undef ultrix # undef win64 # undef darwin # undef interix # define interix 11 # define OP_SYSTEM interix #else # error Operating system must be specified. #endif #define IS_UNIX ( \ OP_SYSTEM == hp_ux || \ OP_SYSTEM == linux || \ OP_SYSTEM == osf || \ OP_SYSTEM == ultrix || \ OP_SYSTEM == unicos \ ) #endif /* OP_SYSTEM_H */ LIBRARY/float128/dpml_rdx_x.h0000644€­ Q01134020000000665715113665770014736 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if !defined FOUR_OVER_PI_BUILD_FILE_NAME #define FOUR_OVER_PI_BUILD_FILE_NAME dpml_four_over_pi.c #endif #define NUM_F_DIGITS 2 #define NUM_G_DIGITS 4 #define NUM_W_DIGITS 4 #define NUM_REQ_BITS 250 #define NUM_EXTRA_BITS 6 #define W_HAS_M_BIT_LOSS (((MSD_OF_W + 0x40000000000000ull) & 0x3f80000000000000ull) == 0) #define G_DIGITS g0, g1, g2, g3 #define F_DIGITS F0, F1 #define TMP_DIGITS t0, t1, t2, t3 #define MSD_OF_W g3 #define LSD_OF_W g1 #define SECOND_MSD_OF_W g2 #define CARRY_DIGIT t3 #define GET_F_DIGITS(x); \ F1 = G_UX_FRACTION_DIGIT(x, 0); \ F0 = G_UX_FRACTION_DIGIT(x, 1) #define PUT_W_DIGITS(x); \ P_UX_FRACTION_DIGIT(x, 0, g3); \ P_UX_FRACTION_DIGIT(x, 1, g2) #define NEGATE_W { \ g3 = ~g3; \ g2 = ~g2; \ g1 = ~g1; \ g1 += 1; CARRY_DIGIT = (g1 == 0); \ g2 += CARRY_DIGIT; CARRY_DIGIT = (g2 == 0); \ g3 += CARRY_DIGIT; } #define GET_G_DIGITS_FROM_TABLE(p, extra_digit) \ g3 = p[0]; \ g2 = p[1]; \ g1 = p[2]; \ g0 = p[3]; \ extra_digit = p[4]; \ p += 5 #define LEFT_SHIFT_G_DIGITS(lshift, rshift, extra_digit) \ g3 = (g3 << (lshift)) | (g2 >> (rshift)); \ g2 = (g2 << (lshift)) | (g1 >> (rshift)); \ g1 = (g1 << (lshift)) | (g0 >> (rshift)); \ g0 = (g0 << (lshift)) | (extra_digit >> (rshift)) #define MULTIPLY_F_AND_G_DIGITS(c) \ XMUL(g0,F0,t1,t0); \ XMUL_ADD(g0,F1,t1,t2,t1); \ g0 = t0; \ XMUL_XADDC(g1,F0,t2,t1,c,t2,t1); \ XMUL_XADD(g1,F1,c,t2,t0,t2); \ g1 = t1; \ XMUL_XADD(g2,F0,t0,t2,t0,t2); \ MUL_ADD(g2,F1,t0,t0); \ g2 = t2; \ MUL_ADD(g3,F0,t0,t0); \ g3 = t0 #define GET_NEXT_PRODUCT(g, w, c) \ XMUL_XADDC(g,F0,g0,(DIGIT_TYPE)0,c,g0,w); \ XMUL_XADDC_W_C_IN(g,F1,g1,g0,c,c,g1,g0); \ if (c) \ if (++g2 == 0) \ g3++ #define LEFT_SHIFT_W_LOW_DIGITS_BY_ONE(extra_w_digit) \ g2 = g1; \ g1 = g0; \ g0 = extra_w_digit LIBRARY/float128/dpml_ux_bessel.c0000644€­ Q01134020000025111415113665770015564 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define DYNAMIC #undef DYNAMIC #define BASE_NAME bessel #include "dpml_ux.h" #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif #if !defined(DYNAMIC) # define DYNAMIC 0 #else # undef DYNAMIC # define DYNAMIC 1 #endif /* ** This following is a discussion of the implementation of the unpacked x-float ** bessel functions. The algorithmic aspects of these routines are virtually ** identical to the existing DPML x-float bessel function routines. ** Consequently, the primary focus of the comments in this file is the ** implementation details for the unpacked x-float case. For details about the ** algorithms used, the reader should refer to the file dpml_bessel.c. ** ** ** 1.0 BACKGROUND AND BASICS ** ------------------------- ** ** This note discusses the bessel functions of the first and second kind, j(n,x) ** and y(n,x) respectively. In this document, we use the notation C(n,x) to ** refer to j(n,x) and y(n,x) simultaneously. Further, we distinguish between ** the first and second arguments to C(n,x) by the names 'order' and 'argument' ** respectively. ** ** Broadly speaking, the existing DPML algorithm for C(n,x) is divided into ** three ranges: ** ** (1) |n| >= 2 ** (2) asymptotic approximations to C(0,x) and C(1,x) ** (3) polynomial approximations to C(0,x) and C(1,x) ** ** ** 2.0 IMPLEMENTATION DISCUSSION ** ----------------------------- ** ** In this section we present an overview of the organization of the unpacked ** x-float bessel function routines. The following sections discuss the ** implementation details on each of the ranges specified in section 1.0. ** ** Each of the six user level bessel functions call a common interface routine, ** C_BESSEL. C_BESSEL unpacks the argument and determines s = 1 or ** -1 so that C(n,x) = s*C(|n|,|x|). C(|n|,|x|) is computed in unpacked form ** by the routine UX_BESSEL, which may call out to UX_ASYMPTOTIC_BESSEL or ** UX_LARGE_ORDER_BESSEL. ** ** C_BESSEL invokes UX_BESSEL to actually determine which of the three ** evaluation ranges to use and calls UX_ASYMPTOTIC_BESSEL and ** UX_LARGE_ORDER_BESSEL for ranges (1) and (2), or processes range (3) ** directly. The reason this is not done directly by C_BESSEL is so that ** UX_BESSEL can be called recursively without having to unpack the arguments ** again. ** ** ** 2.1 ASYMPTOTIC RANGE FOR ORDER LESS THAN 2 ** ------------------------------------------ ** ** The simplest evaluation region is when the order less than 2 and the ** arguments are large. (See section 2.3.1 for a more precise definition of ** "large arguments".) On this range C(n,x) is be approximated as: ** ** j(n,x) = w(x)*{ P(n,z)*cos(X(n,x)) - Q(n,z)*sin(X(n,x)) } (1) ** y(n,x) = w(x)*{ P(n,z)*sin(X(n,x)) + Q(n,z)*cos(X(n,x)) } ** ** where z = 1/x, w(x) = sqrt[2/(x*pi)], X(n,x) = x - (2n+1)*(pi/4) and ** P(n,z) and Q(n,z) are rational expressions in z. ** ** In order to make the processing of C(n,x) more uniform, we note that ** cos(x + pi/2) = -sin(x) and sin(x + pi/2) = cos(x), so that we can replace ** the cos and sin terms in (1) with sin(pi/2+X(n,x)) and cos(pi/2+X(n,x)) ** respectively. But pi/2 + X(n,x) = x - (pi/4)*(2n-1) = X(n-1,x) so that we ** have ** ** j(n,x) = w(x)*{ P(n,z)*sin(X(n-1,x)) + Q(n,z)*cos(X(n-1,x)) } ** y(n,x) = w(x)*{ P(n,z)*sin(X(n,x)) + Q(n,z)*cos(X(n,x)) } ** ** Since we are only dealing the cases n = 0 and 1, in order to ease the ** implementation, we pad the coefficients of P(0,z), Q(0,z), P(1,z) and Q(1,z) ** with zeros to insure they all have the same degree. Further, we assume ** that the coefficients are laid out in memory in the order presented. */ #if !defined(UX_ASYMPTOTIC_BESSEL) # define UX_ASYMPTOTIC_BESSEL __INTERNAL_NAME(ux_asymptotic_bessel__) #endif static void UX_ASYMPTOTIC_BESSEL( UX_FLOAT * unpacked_argument, WORD order, WORD kind, UX_FLOAT * unpacked_result) { UX_FLOAT tmp[5]; WORD p_degree, q_degree; FIXED_128 * p_coefs, * q_coefs; /* Get reciprocal */ DIVIDE( NOT_USED, unpacked_argument, FULL_PRECISION, &tmp[4]); /* ** Compute P(x, n) and Q(x,n) as rational functions in z = 2^t/x, where ** t = MIN_ASYMPTOTIC_EXPONENT - 1. Since we eventually need to multiply ** the final result by w = sqrt[2/(x*pi)] = sqrt(z)/sqrt[ pi*2^(t-1) ], ** we actually compute tmp[0,1] = P and Q respectively, with P = c*P(x,n) ** and Q = c*Q(x,n), where c = 1/sqrt[ pi*2^(t-1) ] */ if (0 == order) { p_degree = P0_DEGREE; q_degree = Q0_DEGREE; p_coefs = P0_COEFFICIENTS; q_coefs = Q0_COEFFICIENTS; } else { p_degree = P1_DEGREE; q_degree = Q1_DEGREE; p_coefs = P1_COEFFICIENTS; q_coefs = Q1_COEFFICIENTS; } EVALUATE_RATIONAL( &tmp[4], p_coefs, p_degree, NUMERATOR_FLAGS( SQUARE_TERM ) | DENOMINATOR_FLAGS( SQUARE_TERM ) | P_SCALE(4), &tmp[0]); /* ** Because the value of q0 is negative and the value of q1 is positive, ** and EVALUATE_RATIONAL only deal with positive coefficients, tmp[1] ** contains (-1)^(order+1)*Q rather than Q */ EVALUATE_RATIONAL( &tmp[4], /* Already been scaled by previous call */ q_coefs, q_degree, NUMERATOR_FLAGS( SQUARE_TERM | POST_MULTIPLY ) | DENOMINATOR_FLAGS( SQUARE_TERM ), &tmp[1]); /* get tmp[2,3] = sin and cos values respectively */ UX_SINCOS( unpacked_argument, 1 - kind - 2*order, SINCOS_FUNC, &tmp[2]); /* Now multiply the results */ MULTIPLY(&tmp[0], &tmp[2], &tmp[0]); /* tmp[0] = P*sin */ MULTIPLY(&tmp[1], &tmp[3], &tmp[1]); /* tmp[1] = +/-Q*cos */ ADDSUB(&tmp[0], &tmp[1], order ? ADD : SUB, &tmp[0]); /* Get sqrt and do final multiply */ UX_SQRT(&tmp[4], &tmp[1]); MULTIPLY(&tmp[0], &tmp[1], unpacked_result); } /* ** 2.2 LARGE ORDER RANGE ** --------------------- ** ** The implementation of bessel functions of large order are based on the ** recurrence relations ** ** 2n ** C(n+1,x) = --- C(n,x) - C(n-1,x) (2) ** x ** ** For y(n,x), (2) is used by first computing y(0,x) and y(1,x) and iterating ** until y(n,x) is obtained. This approach is referred as a "forward" ** recurrence. The same approach can by used for j(n,x), if x > n. ** ** When x <= n, the forward recurrence for j(n,x) is unstable, and a backward ** recurrence must be used. This technique is a little more subtle. It is ** based on the identity ** ** 1 = j(0,x) + 2*{ j(2,x) + j(4,x) + j(6,x) ... } (3) ** ** and the fact that j(n+1,x)/j(n,x) --> 0 as n gets large. ** ** The process begins by chosing an integer, N, and two real values, t(N+1,x) ** and t(N,x) and define t(k,x) for 0 <= k < N by ** ** t(k-1,x) = (2k/x)*t(k,x) - t(k+1,x) ** ** Now, we can find two real numbers, A and B such that ** ** t(N+1,x) = A*j(N+1,x) + B*y(N+1,x) (4) ** t(N,x) = A*j(N,x) + B*y(N,x) ** ** It follows from (2) and the definition of t(k,x), that ** ** t(k,x) = A*j(k,x) + B*y(k,x) ** ** Ultimately, we want to find j(n,x) for a given n and x. If we could ** arrange it so that the term B*y(n,x) was insignificant to A*j(n,x), then ** to machine precision t(n,x) = A*j(n,x). Further, if we could estimate ** A, then we could compute j(n,x) to machine precision as t(n,x)/A. ** Toward this end, we solve (4) for A and B: ** ** A = [t(N+1,x)*y(N,x) - t(N,x)*y(N+1,x)]/[2/(pi*x)] ** B = - [t(N+1,x)*j(N,x) - t(N,x)*j(N+1,x)]/[2/(pi*x)] ** ** NOTE: The above expressions for A and B make use of the identity ** j(n+1,x)*y(n,x) - j(n,x)*y(n+1,x) = 2/(pi*z) ** ** Now consider the ratio: ** ** | B*y(n,x) | | [t(N+1,x)*j(N,x) - t(N,x)*j(N+1,x)]*y(n,x) | ** r = | -------- | = | ------------------------------------------ | ** | A*j(n,x) | | [t(N+1,x)*y(N,x) - t(N,x)*y(N+1,x)]*j(n,x) | ** ** Now the choice of t(N+1,x) and t(N,x) was arbitrary, so to simplify things, ** we take t(N+1,x) = 0 and t(N,x) = 1. Then ** ** A = - (pi*x/2)*y(N+1,x)] ** B = (pi*x/2)*j(N+1,x)] ** ** | j(N+1,x)]*y(n,x) | ** r = | ---------------- | ** | y(N+1,x)]*j(n,x) | ** ** Using asymptotic approximations for large orders (See Abramowitz and Stegun, ** page 365, eq 9.3.1), we get ** ** [ex/(2N+2)]^(2N+2) ** r = ------------------ (5) ** [ex/(2n)]^2n ** ** So, if given x and n, we can find N, such that (5) is less that 1/2^(p+1) ** then B*y(n,x) will be insignificant to A*j(n,x). What we need to do ** now is estimate A. This is done via the identity in (3). Specifically, ** letting N' = 2*floor(N/2), we "replace" the j(k,x)'s in (3) with the ** t(k,x)'s to get ** ** S = t(0,x) + 2*[ t(2,x) + t(4,x) + t(6,x) ... + t( 2N',x) ] ** = A*{ j(0,x) + 2*[ j(2,x) + j(4,x) + j(6,x) ... + j( 2N',x) ] } + ** B*{ y(0,x) + 2*[ y(2,x) + y(4,x) + y(6,x) ... + y( 2N',x) ] } ** = A*J + B*Y ** ** The assumption here is that if N is chosen large enough, then J will equal ** 1 to machine precision and that B*Y will be insignificant to A*J. If this ** true, then j(n,x) = t(n,x)/S. So the key here is to choose N large enough ** to the process work. ** ** Brent uses the solution to (5) in his MP package. However, this choice ** of N does not guarantee that that B*Y is small enough. The DPML bessel ** functions assume that if j(N,x) is insignificant compared to 1, then N is ** big enough. So the DPML routines use that asymptotic approximation for ** j(n,x) and "solve" ** ** (ex/(2N))^N ** ------------ < 1/2^(p+1) ** sqrt(2*pi*N) ** ** for N. This choice of N "works" in the sense that the answer is accurate, ** however, N chosen this way is much larger than is necessary, especially for ** small n. ** ** There is a passing comment in Abramowitz and Stegun (pg. 386) that ** ** "The number of correct significant figures in the final ** values [ i.e. j(n,x) ] is the same as the number of digits ** in the respective trial values. [ i.e. t(n,x) ]" ** ** Using the asymptotic estimates for j(n,x) and y(n,x) and noting that ** t(n,x) ~ A*j(n,x), we can try to find N such that ** ** (x/2)* [ 2N/(ex) ]^N * [ ex/(2n) ]^n = 2^t * sqrt(N*n) (6) ** ** with t = p + 1. This seems to give accurate results without making N unduly ** large. ** ** Solving (6) for N is difficult and requires an iterative numerical approach. ** ** ** 2.2.1 ERROR CHECKING ** -------------------- ** ** For large orders and small arguments, y(n,x) can overflow and j(n,x) can ** underflow. Using the relationships: ** ** | y(n,x) | > (n-1)!*(2/x)^n | j(n,x) | < (x/2)^n/n! ** ** We can screen out guaranteed overflow and underflow conditions via the ** comparisons: ** ** (n-1)!*(2/x)^n >= 2^EMAX (x/2)^n/n! <= 2^EMIN ** ** where EMAX = F_MAX_BIN_EXP + 1 and EMIN = F_MIN_BIN_EXP - F_PRECISION + 1. ** The above comparisons are equivalent to: ** ** log2[(n-1)!] + n*[1 - log2(x)] >= EMAX ** n*[log2(x) - 1] - log2(n!) <= EMIN ** ** Noting that x = 2^k*f, f in [1/2, 1) and that log2(n!) = log2[(n-1)!] + ** log2(n), the two comparisons are equivalent to: ** ** log2[(n-1)!] + n*[1 - k - log2(f)] >= EMAX (7) ** n*[k + log2(f) - 1] - log2[(n-1)!] - log2(n) <= EMIN (8) ** ** Now we need to estimate the value of log2[(n-1)!]. Since doing this ** precisely is equivalent to evaluating the lgamma function, we will use an ** upper and lower bound for log2[(n-1)!] in (7) and (8) to get comparisons ** that give less precise error range boundaries, but are easier to compute. ** ** From Hart, we show that if n = 2^E*g, where g is in the interval [1/2, 1), ** then, ** ** (n-.5)*bexp(n) - n*(1/ln2 + 1) + (1 + .5*log2(pi)) <= log2((n-1)!) ** log2((n-1)!) <= (n-.5)*E - n/ln2 + .5 + .5*log2(pi) ** ** Noting that -1 <= log2(f) < 0, and using the bounds for log2[(n-1)!], we ** can transform (7) and (8) to: ** ** (n-.5)*E - n*(1/ln2+1) + 1 +.5*log2(pi) + n*(1-k) - EMAX >= 0 (9) ** n*(k-1) - (n-.5)*E + n/ln2 - .5 - .5*log2(pi) - (E-1) - EMIN <= 0 (10) ** ** If we denote the left hand sides of (9) and (10) as A and B respectively, ** the we can define c = (A + B)/2 and d = (A - B)/2 and the above comparisons ** are equivalent to ** ** c + d >= 0 ** c <= 0 ** ** where ** ** c = .5*(3/2 - EMAX - EMIN) - .5*(n + E) ** d = n*[ E - k + (1/2 - 1/ln2) ] + [ 1/2 + log2(pi) - EMAX + EMIN ]/2 ** ** ** 2.2.2 COMPUTING 2*N ** ------------------- ** ** For both the forward and backward recurrence, the computation of 2*k for ** k increasing or decreasing is required. In the process of creating the ** unpacked representation for the initial value of 2*k, we can create an ** integer value that is an unnormalized representation of 2. This integer ** can be added/subtracted to the high word of 2*k to get the unpacked ** representation of the next value of 2*k. If the addition/subtraction ** results in a carry out or borrow from the MSB of the fraction, then the ** exponent of the result and the unnormalized representation of two needs to ** be adjusted. */ #define J_BESSEL 0 #define Y_BESSEL 2 #if !defined UX_LARGE_ORDER_BESSEL # define UX_LARGE_ORDER_BESSEL __INTERNAL_NAME(ux_large_order_bessel__) #endif #if !defined(UX_BESSEL) # define UX_BESSEL __INTERNAL_NAME(ux_bessel__) #endif static void UX_BESSEL( UX_FLOAT *, WORD, WORD, UX_FLOAT *); #if (OP_SYSTEM == vms) # define S_SUFFIX PASTE_2(_, S_CHAR) #else # define S_SUFFIX f #endif #ifndef S_LOG2_NAME #define S_LOG2_NAME PASTE_2(__SYSTEM_NAME(LOG2_BASE_NAME), S_SUFFIX) #endif extern S_TYPE S_LOG2_NAME( S_TYPE ); static void UX_LARGE_ORDER_BESSEL( UX_FLOAT * unpacked_argument, WORD order, WORD kind, UX_FLOAT * unpacked_result) { double c, d; float forder, fN, fx, log2_n, delta, ftmp, A, B; WORD n_exponent, exp_diff, i; UX_EXPONENT_TYPE exponent; UX_FRACTION_DIGIT_TYPE f_hi, incr, N; UX_FLOAT tmp[4], *C0, *C1, *C2, twice_n, sum, *save; /* ** For both the forward and backward recurrence we need 1/x ** and pointers into the tmp[] array to hold the results of ** recursion. */ DIVIDE( NOT_USED, unpacked_argument, FULL_PRECISION, &tmp[3]); C0 = &tmp[0]; C1 = &tmp[1]; C2 = &tmp[2]; /* ** Determine if a forward or backward recurrence is needed. ** In the process, do underflow and overflow screening. */ n_exponent = BITS_PER_UX_FRACTION_DIGIT_TYPE - U_WORD_TO_UX(order, &tmp[0]); exponent = G_UX_EXPONENT(unpacked_argument); c = .5*( 111.5 - (double) (n_exponent + order)); exp_diff = n_exponent - exponent; d = ((double) order)*( (double) exp_diff + .942) -16437.924251; /* ** if evaluating Y_BESSEL functions or if x >= n, use a ** forward recurrence. */ if (kind == Y_BESSEL) { /* Check for certain overflow */ if (c + d > 0) { exponent = UX_OVERFLOW_EXPONENT; goto return_exception; } } else { /* J_BESSEL, check for underflow */ if (c < 0 ) { exponent = UX_UNDERFLOW_EXPONENT; goto return_exception; } /* ** if x < n use backward recurrence. Use N as a temporary location ** to hold the "aligned" fraction part of x */ f_hi = G_UX_MSD(unpacked_argument); N = f_hi >> (BITS_PER_UX_FRACTION_DIGIT_TYPE - n_exponent); if ((0 < exp_diff) || ((0 == exp_diff) && (N < order))) goto backward_recurrence; } //forward_recurrence: /* ** We want to compute C(k+1,x) = (2k/x)*C(k,x) - C(k-1,x) ** for k = 1,2, ... n-1. The initialization phase requires ** the computation of 2, C(1,x) and C(0,x) */ UX_BESSEL(unpacked_argument, 0, kind, C0); UX_BESSEL(unpacked_argument, 1, kind, C1); UX_SET_SIGN_EXP_MSD(&twice_n, 0, 2, UX_MSB); incr = UX_MSB; order--; /* Now do the recursions */ while(1) { MULTIPLY(&tmp[3], &twice_n, C2); MULTIPLY(C1, C2, C2); ADDSUB(C2, C0, SUB, C2); if ((--order) <= 0) break; /* Adjust pointers, check for overflow or underflow */ save = C0; C0 = C1; C1 = C2; C2 = save; f_hi = G_UX_MSD(&twice_n) + incr; if (f_hi < incr) { /* carry out occurred on the addition */ UX_INCR_EXPONENT(&twice_n, 1); f_hi = (f_hi >> 1) + UX_MSB; incr >>= 1; } P_UX_MSD(&twice_n, f_hi); } /* Copy result of iteration to unpacked result */ UX_COPY(C2, unpacked_result); return; backward_recurrence: /* ** In order to solve (11) iteratively to find the starting point N, we ** set up the recursion ** ** t*ln2 - log(x/2) - n*log(.5*e*x/n) + .5*log(N*n) ** N = ------------------------------------------------ ** log(2N/(ex)) ** ** B + .5*log2(N) ** = -------------- ** log2(N) - A ** ** where ** ** A = log2(.5*e*x) and ** B = t - .5*A - (n + .5)*[ A - log2(n)] + 1/ln2 ** ** The initial choice of N is important for the iteration. It can be ** shown analytically, that n+1 <= N < n + 1 + t. Experimentally, we ** have found that taking N = n + 1 + (x/n)*(C*log2(n) + D) yields ** very good results. ** ** Start by computing x/n to get the initial value for N. */ # define MSD_TO_FLOAT(p) \ (float)(( UX_SIGNED_FRACTION_DIGIT_TYPE) (G_UX_MSD(p) >> 1)) # define SCALE_DOWN ((float) 1./ S_POW_2(BITS_PER_UX_FRACTION_DIGIT_TYPE - 1)) fx = MSD_TO_FLOAT(unpacked_argument); forder = MSD_TO_FLOAT(&tmp[0]); delta = fx/forder; exp_diff = (BITS_PER_UX_FRACTION_DIGIT_TYPE - 1) - exp_diff; exp_diff = (exp_diff < 0) ? 0 : exp_diff; ftmp = (float) (((UX_FRACTION_DIGIT_TYPE) 1) << exp_diff); ftmp = delta*ftmp*SCALE_DOWN; /* ftmp = x/n at this point. Get initial value of N */ #define SLOPE ((float) 8.9740928556490771841809829330372159128901 ) #define INTERCEPT ((float) 20.4831861112546093392565170669627840871099 ) forder = (float) order; log2_n = S_LOG2_NAME( forder ); delta = SLOPE*log2_n + INTERCEPT; fN = ftmp*( SLOPE*log2_n + INTERCEPT ); fN = (fN > delta) ? delta : fN; fN = (forder + ((float) 1)) + delta; /* ** Now compute the constants A and B, so that we can start the iteration */ # define R_LOG2 ((float) 1.4426950408889634073599246810018921374266) A = S_LOG2_NAME(fx) + (float) (exponent - BITS_PER_UX_FRACTION_DIGIT_TYPE) + R_LOG2; B = ((((float) F_PRECISION + 1) + R_LOG2) - .5*A) - (forder + .5)*(A - log2_n); /* Iterate three times to get a good approximation to N */ for (i = 3; i > 0; i--) { ftmp = S_LOG2_NAME( fN ); ftmp = (B + 5.*ftmp)/(ftmp - A); fN = .5*(fN + ftmp); } /* ** Convert to integer and do one last check. */ N = (UX_FRACTION_DIGIT_TYPE) (fN + 9.99999940395355224609375e-1); N = (N < (order + 1) ) ? (order + 1) : N; /* ** We want to compute C(k-1,x) = (2k/x)*C(k,x) - C(k+1,x) ** for k = N,N-1, ... 0. The initialization phase requires ** the computation of 2*N and setting C(N,x) = 1 and ** C(N+1, x) = 0 and the running sum to C(N,x) or C(N+1,x) ** depending on the parity of n */ UX_SET_SIGN_EXP_MSD(&tmp[0], 0, UX_ZERO_EXPONENT, 0); UX_SET_SIGN_EXP_MSD(&tmp[1], 0, 1, UX_MSB); P_UX_SIGN(&sum, 0); if (N & 1) UX_SET_SIGN_EXP_MSD(&sum, 0, UX_ZERO_EXPONENT, 0); else UX_SET_SIGN_EXP_MSD(&sum, 0, 1, UX_MSB); (void) U_WORD_TO_UX( 2*N, &twice_n); incr = UX_MSB >> (G_UX_EXPONENT(&twice_n) - 2); /* Now do the recursions */ while(1) { MULTIPLY(&tmp[3], &twice_n, C2); MULTIPLY(C1, C2, C2); NORMALIZE(C2); NORMALIZE(C0); ADDSUB(C2, C0, SUB, C2); if (--N == 0) break; /* if N == n, C2 = K*J(n,x). Save it for later */ if (N == order) UX_COPY(C2, unpacked_result); /* Add to sum if N is even */ if ( 0 == (N & 1) ) ADDSUB(&sum, C2, ADD, &sum); /* Adjust pointers */ save = C0; C0 = C1; C1 = C2; C2 = save; /* decrement twice_n by 2 */ f_hi = G_UX_MSD(&twice_n) - incr; if (f_hi < UX_MSB) { /* borrow from MSB on the subtraction */ UX_DECR_EXPONENT(&twice_n, 1); f_hi += f_hi; incr += incr; } P_UX_MSD(&twice_n, f_hi); } /* ** at this point sum = K*sum{ k=1,2,... | J(2k,x) }, and C2 points ** to K*J(0,x). Compute K from the relation ** ** 1 = J(0,x) + 2*{ J(2,x) + J(4,x) + J(6,x) ... } */ UX_INCR_EXPONENT(&sum, 1); ADDSUB(C2, &sum, ADD, &sum); DIVIDE( unpacked_result, &sum, FULL_PRECISION, unpacked_result); return; return_exception: UX_SET_SIGN_EXP_MSD( unpacked_result, UX_OVERFLOW_EXPONENT == exponent ? UX_SIGN_BIT : 0, exponent, UX_MSB); } /* ** 2.3 POLYNOMIAL RANGE FOR ORDER LESS THAN 2 ** ------------------------------------------ ** ** C(n,x) oscillates much like an attenuated sin or cos curve, and consequently ** has infinite number of zeros. The polynomial range is divided into ** intervals, each of which contains a zero of the function. We then expand ** C(n,x) in a "polynomial" around that zero. ** ** The primary issue in the polynomial range is determining the appropriate ** zero and corresponding set of polynomial coefficients for a given argument. ** Generally speaking, if e[i] and e[i+1] are i-th and i+1st extrema locations ** of C(n,x), and z[i] is the zero located between e[i] and e[i+1], then we ** approximate C(n,x) on [ e[i], e[i+1] ) in a polynomial around z[i]. ** ** NOTE: The above 'algorithm' requires some special case code when ** the function has a zero at x = 0 and for the first interval of ** y0 and y1. See the comments in the MPHOC code below for details. ** ** ** 2.3.1 CONSTRUCTING THE ARRAYS ** ----------------------------- ** ** The first step in constructing the arrays is to establish the number of ** entries in the arrays. As a side effect of this computation, we determine ** the range for the asymptotic evaluations. It should be noted here, that ** while the asymptotic expansion is useful for x as small as 8, if x is less ** that (approximately) 22, the terms of the asymptotic approximation do not ** decrease in magnitude, which is a problem for the unpacked rational ** evaluation routine. Consequently, we need to force the lower limit of the ** asymptotic range to be at least 22. ** ** For each of the four bessel functions, f = j0, j1, y0, and y1, denote intial ** local extrema by e(f,0) and recursively define e(f, i+1) to be the first ** extrema value of f after e(f,i). Further, we define z(f,i) to be the zero ** of f between e(f,i) and e(f,i+1). Lastly, define n(f) to be the smallest ** their local extrema by e(f,1), e(f,2) ... and define n(f) to be the ** integer such that e(f, n(f)) > 22. ** ** The precise locations of the extrema points are not critical to the ** algorithm, so we need not store them in full precision. In fact, all of ** the extrema points are less than 32, so we can store them in true fixed ** point format consisting of one integer word with the binary point after ** the 5-th most significant bit. ** ** The values of the zeros on the other hand must be stored to twice the normal ** precision. Toward this end, we represent the zeros using a 256 bit fraction. ** Since the input argument has 113 significant bits, if we compute the reduced ** argument to 128 bits, the zeros need only be accurate to 241 bits, which ** leaves 15 "extra" bits in the 256 bit fraction. Since the signs of the ** zeros are all positive, and the exponents are small, we can conserve overall ** storage by encoding the exponent of the zeros in the low order 5 bits of the ** fraction field and construct the unpacked form of the zero at run-time. ** ** The interval data is stored as: */ typedef struct { UX_FRACTION_DIGIT_TYPE extrema; WORD eval_data; # if (BITS_PER_WORD < 64) WORD eval_data_hi; # endif UX_FRACTION_DIGIT_TYPE zero[2*NUM_UX_FRACTION_DIGITS]; FIXED_128 coefficients[1]; } INTERVAL_DATA; #define FIXED_BITS_PER_INTERVAL_DATA \ ((2*NUM_UX_FRACTION_DIGITS + 1)*BITS_PER_UX_FRACTION_DIGIT_TYPE \ + __NUM_WORDS * BITS_PER_WORD) #define OFFSET_POS 32 #define OFFSET_WIDTH 10 #define OFFSET_MASK MAKE_MASK(OFFSET_WIDTH, 0) #if (BITS_PER_WORD < 64) # define __NUM_WORDS 2 # define G_OFFSET(ip) ((ip)->eval_data_hi & OFFSET_MASK) #else # define __NUM_WORDS 1 # define G_OFFSET(ip) ((((ip)->eval_data) >> OFFSET_POS) & OFFSET_MASK) #endif /* ** where ** ** extrema is the fixed point value of the upper limit ** of the evaluation interval. ** zero is the zero associated with this particular ** interval ** eval_data is miscellaneous information about the evaluation ** on this interval, including the degree of the ** polynomial ** eval_data_hi is a hack to deal with storing all of the evaluation ** data required in 32 bit chunks. ** ** Since the number of intervals and coefficients per interval vary, we ** create an auxiliary data structure that can be indexed by 'kind' and 'order' ** to determine the minimum asymptotic value and the start of the interval ** data: */ typedef struct { UX_FRACTION_DIGIT_TYPE min_asymptotic_value; WORD interval_data_offset; WORD asymptotic_coef_offset; } TABLE_DATA_MAP; /* ** The following definitions are used to pack and extract data from the ** eval_data field of the INTERVAL_DATA structure. In order to insure that ** all of the information fits in 32 bit chunks, the format of the eval_data ** field is different depending on whether we are doing a packed or unpacked ** evaluation. ** ** For the unpacked, case, we want to have the eval_data field look like a ** super set of the flags passed to the unpacked rational evaluation routine. ** In this case the eval_data field looks like: ** ** 2 2 2 2 2 1 1 11 1 ** 4 3 2 1 0 4 3 21 0 8 7 4 3 0 ** +-------+-+-+-+-+-------+-+--+---+----+----+ ** | |P|X|M|N| D |n| O| | | | ** +-------+-+-+-+-+-------+-+--+---+----+----+ ** ** Bits Name Meaning ** --------- ----------------------------------- ** P Packed or unpacked evaluation: 1 = packed ** X Expand the polynomial around the zero of the interval ** M Post multiply the result of the polynomial evaluation ** by the argument. I.e. compute z*P(z) ** N Indicates a Neumann evaluation ** D The degree of the polynomial ** n Negate the final result ** O Indicates how (if needed) to combine the odd and even ** terms of the polynomial. Choices are add/sub/none ** ** Bits 0 through 10 are the standard rational evaluation flags defined in ** dpml_ux.h. */ #define BESSEL_PACKED_POLY SET_BIT(24) #define BESSEL_USE_ZERO SET_BIT(23) #define BESSEL_POST_MULTIPLY SET_BIT(22) #define BESSEL_NEUMANN_POLY SET_BIT(21) #define BESSEL_NEGATE_POLY SET_BIT(13) #define BESSEL_NO_DIVIDE SET_BIT(2*NUM_DEN_FIELD_WIDTH) #define BESSEL_COMMON_FLAGS_MASK (SET_BIT(25) - SET_BIT(21)) #define BESSEL_EVEN_ODD_OP_POS 11 #define BESSEL_EVEN_ODD_OP_WIDTH 2 #define BESSEL_DEGREE_POS 14 #define BESSEL_DEGREE_WIDTH 7 #undef DEGREE /* ** For the packed case, eval_data looks like; ** ** 2 22 2 2 1 1 ** 4 32 1 0 4 3 7 6 0 ** +-------+-+-+-+-+-------+-------+-------+ ** | |P|X|M|N| D | W | B | ** +-------+-+-+-+-+-------+-------+-------+ ** ** Where P, X, M, N nd D ar as above and B and W are used to endcode the ** relative expoenent bias and width for the packed coefficients */ #define BESSEL_EXP_BIAS_POS 0 #define BESSEL_EXP_BIAS_WIDTH 7 #define BESSEL_EXP_WIDTH_POS 7 #define BESSEL_EXP_WIDTH_WIDTH 7 #define EXTR_BITS(name,val) (((val) >> PASTE_3(BESSEL_,name,_POS)) & \ MAKE_MASK(PASTE_3(BESSEL_,name,_WIDTH),0)) /* ** The next 4 definitions are used to extract the exponent information from ** the zero values */ #define MIN_ASYMPTOTIC_EXPONENT 5 #define LAST (2*NUM_UX_FRACTION_DIGITS-1) #define ZERO_EXPONENT_BITS 3 #define G_ZERO_EXPONENT(p) ((((INTERVAL_DATA *)(p))->zero[LAST]) & \ MAKE_MASK(ZERO_EXPONENT_BITS, 0)) static void UX_BESSEL( UX_FLOAT * unpacked_argument, WORD order, WORD kind, UX_FLOAT * unpacked_result) { INTERVAL_DATA * interval_data; TABLE_DATA_MAP * table_data_map; WORD eval_data, op; UX_FRACTION_DIGIT_TYPE f_hi; UX_EXPONENT_TYPE exponent; UX_FLOAT tmp[3], *multiplier, *poly_argument; if (2 <= order) { UX_LARGE_ORDER_BESSEL(unpacked_argument, order, kind, unpacked_result); return; } f_hi = G_UX_MSD(unpacked_argument); exponent = G_UX_EXPONENT(unpacked_argument); /* ** Compare the input argument with the minimum asymptotic value for this ** bessel function */ table_data_map = BESSEL_TABLE_DATA_MAP + (kind + order); if ((exponent > MIN_ASYMPTOTIC_EXPONENT) || ((exponent == MIN_ASYMPTOTIC_EXPONENT) && (f_hi > table_data_map->min_asymptotic_value))) { UX_ASYMPTOTIC_BESSEL(unpacked_argument, order, kind, unpacked_result); return; } /* ** Get the extrema, zeros and coefficients for this particular ** function. */ interval_data = (INTERVAL_DATA *) ((char *) TABLE_NAME + table_data_map->interval_data_offset); /* ** Now scan through the extrema values to determine the ** nearest zero. For the comparison, convert the high word ** and exponent of the argument to fixed point form */ if (exponent >= 0) { f_hi >>= (5 - exponent); while (1) { if (f_hi <= interval_data->extrema) break; interval_data = (INTERVAL_DATA *) ((char *) interval_data + G_OFFSET(interval_data)); } } /* ** Having located the appropriate zero, call it a, put it in ** unpacked form and carefully compute the reduced argument, ** x - a. */ eval_data = interval_data->eval_data; if ((eval_data & BESSEL_USE_ZERO) == 0) poly_argument = unpacked_argument; else { COPY_TO_UX_FRACTION(interval_data->zero, &tmp[1]); P_UX_SIGN(&tmp[1], 0); exponent = G_ZERO_EXPONENT(interval_data); P_UX_EXPONENT(&tmp[1], exponent); ADDSUB(unpacked_argument, &tmp[1], SUB, &tmp[0]); COPY_TO_UX_FRACTION( &interval_data->zero[NUM_UX_FRACTION_DIGITS], &tmp[1]); P_UX_EXPONENT(&tmp[1], exponent - UX_PRECISION); ADDSUB(&tmp[0], &tmp[1], SUB, &tmp[0]); poly_argument = &tmp[0]; } /* ** Evaluate the polynomial. */ if ( eval_data & BESSEL_PACKED_POLY) EVALUATE_PACKED_POLY( poly_argument, EXTR_BITS( DEGREE, eval_data), interval_data->coefficients, MAKE_MASK( EXTR_BITS( EXP_WIDTH, eval_data), 0), EXTR_BITS( EXP_BIAS, eval_data), unpacked_result); else { EVALUATE_RATIONAL( poly_argument, interval_data->coefficients, EXTR_BITS( DEGREE, eval_data), eval_data, unpacked_result); #if 0 /* ** The call to EVALUATE_RATIONAL will have scaled poly_argument, so ** unscale it for possible use in the POST_MULTIPLY code. */ UX_DECR_EXPONENT(poly_argument, G_SCALE(eval_data)); #endif } op = EXTR_BITS( EVEN_ODD_OP, eval_data); if ( op ) ADDSUB(unpacked_result, unpacked_result + 1, op - 1, unpacked_result); if ( eval_data & BESSEL_POST_MULTIPLY ) MULTIPLY( poly_argument, unpacked_result, unpacked_result); if ( eval_data & BESSEL_NEGATE_POLY ) UX_TOGGLE_SIGN( unpacked_result, UX_SIGN_BIT); /* For y bessel functions, add in jn(x)*ln(x) term */ if ( eval_data & BESSEL_NEUMANN_POLY ) { /* ** For Y_BESSEL: ** ** y0(x) = (2/pi)*j0(x)*ln(x) - y0_hat(x) (11) ** y1(x) = (2/pi)*j1(x)*ln(x) - (1/pi)/x - y1_hat(x) ** ** where y0_hat(x) and y1_hat(x) are polynomials that ** have just been evaluated ** ** The previous call to the polynomial evaluation routines may ** have implicitly scaled the input argument, so we may need to ** unscale before proceeding */ if (poly_argument == unpacked_argument) UX_DECR_EXPONENT(unpacked_argument, G_SCALE(eval_data)); if (1 == order) { DIVIDE( UX_TWO_OVER_PI, unpacked_argument, FULL_PRECISION, &tmp[1]); ADDSUB( unpacked_result, &tmp[1], ADD, unpacked_result); } UX_LOG(unpacked_argument, UX_TWO_LN2_OVER_PI, &tmp[0]); UX_BESSEL(unpacked_argument, order, J_BESSEL, &tmp[1]); MULTIPLY(&tmp[1], &tmp[0], &tmp[0]); ADDSUB(&tmp[0], unpacked_result, SUB, unpacked_result); } return; } /* ** All of the bessel functions call a common routine C_BESSEL, to unpacked ** their argument and account for negative orders and arguments. Some of the ** bessel functions can overflow or underflow. In order to make the selection ** of the error codes more uniform, we use an array of error codes for the ** bessel functions. Each user level bessel function will pass C_BESSEL an ** integer, error_map, that consists of three fields corresponding to underflow, ** positive overflow and negative overflow. These fields will be indices into ** the bessel_error_code table. */ #if !defined (BESSEL_ERROR_CODE_TABLE) # define BESSEL_ERROR_CODE_TABLE __TABLE_NAME(bessel_error_codes) #endif static WORD const BESSEL_ERROR_CODE_TABLE[] = { NULL, BES_J1_UNDERFLOW, BES_J1_NEG_UNDERFLOW, BES_JN_UNDERFLOW, BES_JN_NEG_UNDERFLOW, BES_Y1_OVERFLOW, BES_YN_POS_OVERFLOW, BES_YN_NEG_OVERFLOW, }; #define NO_ERROR 0 #define J1_UNDERFLOW 1 #define J1_NEG_UNDERFLOW 2 #define JN_UNDERFLOW 3 #define JN_NEG_UNDERFLOW 4 #define Y1_OVERFLOW 5 #define YN_POS_OVERFLOW 6 #define YN_NEG_OVERFLOW 7 #define _FIELD_WITDTH 8 #define P_UNDERFLOW_POS 0 #define N_UNDERFLOW_POS (P_UNDERFLOW_POS + _FIELD_WITDTH) #define P_OVERFLOW_POS (N_UNDERFLOW_POS + _FIELD_WITDTH) #define N_OVERFLOW_POS (P_OVERFLOW_POS + _FIELD_WITDTH) #define ERROR_MAP(pu,nu,po,no) (((pu) << P_UNDERFLOW_POS) | \ ((nu) << N_UNDERFLOW_POS) | \ ((po) << P_OVERFLOW_POS) | \ ((no) << N_OVERFLOW_POS) ) #define MAP_MASK MAKE_MASK(_FIELD_WITDTH,0) #define ERROR_INDEX(s,m,n,p) (m >> (s ? n : p)) & MAP_MASK #define ERROR(s,m,n,p) BESSEL_ERROR_CODE_TABLE[ ERROR_INDEX(s,m,n,p) ] #define OVERFLOW_ERROR(s,m) ERROR(s, m, N_OVERFLOW_POS, P_OVERFLOW_POS) #define UNDERFLOW_ERROR(s,m) ERROR(s, m, N_UNDERFLOW_POS, P_UNDERFLOW_POS) #if !defined(C_BESSEL) # define C_BESSEL __INTERNAL_NAME(C_bessel__) #endif static void C_BESSEL(_X_FLOAT * packed_argument, WORD order, WORD bessel_kind, U_WORD const * class_to_action_map, WORD const error_map, _X_FLOAT * packed_result OPT_EXCEPTION_INFO_DECLARATION ) { WORD fp_class; UX_SIGN_TYPE sign, sign_toggle; UX_FRACTION_DIGIT_TYPE hi; UX_FLOAT unpacked_argument, unpacked_result[2]; fp_class = UNPACK( packed_argument, & unpacked_argument, class_to_action_map, packed_result OPT_EXCEPTION_INFO_ARGUMENT ); /* Map negative arguments onto positive arguments */ sign = G_UX_SIGN(&unpacked_argument); P_UX_SIGN(&unpacked_argument, 0); /* Account for reflection formula: C(-n,x) = (-1)^n*C(x) */ sign_toggle = UX_SIGN_BIT; if (order < 0) { order = -order; sign ^= sign_toggle; } sign_toggle &= ((order & 1) ? sign : 0); if (0 > fp_class) { if (1 < order) { /* ** If orders >= 2, the unpack routine returns C(|n|,|x|), so ** we have to adjust the sign of the packed result. */ hi = G_X_DIGIT( packed_result, 0); if ( (hi & F_EXP_MASK) != F_EXP_MASK ) hi |= (((UX_FRACTION_DIGIT_TYPE) sign_toggle) << (BITS_PER_UX_FRACTION_DIGIT_TYPE - BITS_PER_UX_SIGN_TYPE)); P_X_DIGIT( packed_result, 0, hi ); } return; } UX_BESSEL(&unpacked_argument, order, bessel_kind, unpacked_result); UX_TOGGLE_SIGN( unpacked_result, sign_toggle ); sign_toggle = G_UX_SIGN(unpacked_result); PACK( unpacked_result, packed_result, UNDERFLOW_ERROR(sign_toggle, error_map), OVERFLOW_ERROR(sign_toggle, error_map) OPT_EXCEPTION_INFO_ARGUMENT ); } /* ** The following six routines are the user level bessel functions j0, j1, jn, ** y0, y1 and yn. Each of the interfaces simply passes information onto the ** C_BESSEL routine. */ #define BESSEL_0_1_ENTRY(order, kind, class, map) \ X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) \ BESSEL_BODY(order, kind, class, map) #define BESSEL_N_ENTRY(kind, class, map) \ X_IX_PROTO(F_ENTRY_NAME, packed_result, order, packed_argument) \ BESSEL_BODY(order, kind, class, map) #define BESSEL_BODY(order, kind, class, map) \ { \ EXCEPTION_INFO_DECL \ DECLARE_X_FLOAT(packed_result) \ \ INIT_EXCEPTION_INFO; \ C_BESSEL( \ PASS_ARG_X_FLOAT(packed_argument), \ order, kind, class, map, \ PASS_RET_X_FLOAT(packed_result) \ OPT_EXCEPTION_INFO); \ RETURN_X_FLOAT(packed_result); \ } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_J0_NAME BESSEL_0_1_ENTRY(0, J_BESSEL, J0_CLASS_TO_ACTION_MAP, ERROR_MAP( NO_ERROR, NO_ERROR, NO_ERROR, NO_ERROR )) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_J1_NAME BESSEL_0_1_ENTRY(1, J_BESSEL, J1_CLASS_TO_ACTION_MAP, ERROR_MAP( J1_UNDERFLOW, J1_NEG_UNDERFLOW, NO_ERROR, NO_ERROR )) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_JN_NAME BESSEL_N_ENTRY(J_BESSEL, JN_CLASS_TO_ACTION_MAP, ERROR_MAP( JN_UNDERFLOW, JN_NEG_UNDERFLOW, NO_ERROR, NO_ERROR )) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_Y0_NAME BESSEL_0_1_ENTRY(0, Y_BESSEL, Y0_CLASS_TO_ACTION_MAP, ERROR_MAP( NO_ERROR, NO_ERROR, NO_ERROR, NO_ERROR )) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_Y1_NAME BESSEL_0_1_ENTRY(1, Y_BESSEL, Y1_CLASS_TO_ACTION_MAP, ERROR_MAP( NO_ERROR, NO_ERROR, NO_ERROR, Y1_OVERFLOW )) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_YN_NAME BESSEL_N_ENTRY(Y_BESSEL, YN_CLASS_TO_ACTION_MAP, ERROR_MAP( NO_ERROR, NO_ERROR, YN_POS_OVERFLOW, YN_NEG_OVERFLOW )) #if defined(MAKE_INCLUDE) # define ASSERT_TOL(tol, p, str) \ if (tol < (p)) { \ printf("ERROR: insufficient degree for " str "\n"); \ exit; \ } @divert -append divertText precision = ceil(UX_PRECISION/8) + 4; # undef TABLE_NAME # undef SET_BIT # define SET_BIT(n) (1 << n) START_TABLE; TABLE_COMMENT("j0 class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "J0_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(3) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 2) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 2) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 2) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 2) ); TABLE_COMMENT("j1 class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "J1_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(2) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("jn class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "JN_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_NEGATIVE, 0) ); TABLE_COMMENT("Data for the above mappings"); PRINT_U_TBL_ITEM( /* data 1 */ ZERO ); PRINT_U_TBL_ITEM( /* data 2 */ ONE ); TABLE_COMMENT("y0 class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "Y0_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(3) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 3) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 3) ); TABLE_COMMENT("y1 class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "Y1_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(2) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 4) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ERROR, 4) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ERROR, 4) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 5) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 5) ); TABLE_COMMENT("yn class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "YN_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 6) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ERROR, 6) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ERROR, 6) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 7) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 7) ); TABLE_COMMENT("Data for the above mappings"); PRINT_U_TBL_ITEM( /* data 1 */ ZERO ); PRINT_U_TBL_ITEM( /* data 2 */ BES_Y0_OF_NEGATIVE ); PRINT_U_TBL_ITEM( /* data 3 */ BES_Y0_OF_ZERO ); PRINT_U_TBL_ITEM( /* data 4 */ BES_Y1_OF_NEGATIVE ); PRINT_U_TBL_ITEM( /* data 5 */ BES_Y1_OF_ZERO ); PRINT_U_TBL_ITEM( /* data 6 */ BES_YN_OF_NEGATIVE ); PRINT_U_TBL_ITEM( /* data 7 */ BES_YN_OF_ZERO ); J0_ENUM = 0; J1_ENUM = 1; Y0_ENUM = 2; Y1_ENUM = 3; /* ** The following MPHOC code is used to generate polynomials to evaluate ** the bessel functions on sub-intervals that are bounded by their ** consecutive extrema values. On each subinterval, we evaluate a ** polynomial of the form x^i*p(x^2) or z^i*q(z) where z = x - a and i ** is 0 or 1. ** ** The polynomial evaluation process for the bessel function presents ** a bit of a problem. We would like to use the unpacked polynomial ** evaluation routine because of its performance characteristics. ** However, the unpacked polynomial evaluation routine requires that ** the polynomials be "well formed": i.e. the terms decrease in size ** and either alternate in sign or have the same sign. Most of the ** bessel polynomials do not meet this definition of "well formed". The ** good news is that most of the bessel polynomials made into "well formed" ** polynomials by evaluating their even and odd terms separately. There ** are a few exceptions for the y0 and y1 function: The first couple of ** intervals near zero cannot be made "well formed" so we need to evaluate ** in packed form (see the discussion of packed form polynomial evaluation ** in dpml_ux_ops.c). ** ** In order to deal with the different types of evaluation strategies ** along with the polynomial coefficients, we store a number of flags ** defining the evaluation type and any additional information that ** might be required for computing the final result. The flags are ** stored in the word preceeding the coefficient and include items ** like: ** ** o The form of the polynomial - packed vs. unpacked. ** o pre/post processing information ** o The degree of the polynomial ** o The bias and exponent mask used for unpacking */ precision = ceil(UX_PRECISION/MP_RADIX_BITS) + 4; /* ** In order to locate the extrema and zero values as well as generate ** the interval coefficient, many auxillary functions are required. ** In most cases, we need both jn and yn versions of these function ** for n = 0 and 1. In order to consolidate much of the code, we ** parameterize all of the function to deal with the 0 and 1 cases and ** refer to the jn and yn cases "indirectly" as follows: ** ** Suppose __jn_func and __yn_func are the two versions of the functions ** we are interested in. Then, when we need to refer to __jn_func, we ** include the line ** ** function __bessel_func(x) { return __jn_func(x); } ** ** in the mphoc and use __bessel_func to refer to __jn_func. Similarly ** we can include the line ** ** function __bessel_func(x) { return __yn_func(x); } ** ** in the mphoc and use __bessel_func to refer to __yn_func. ** ** The following "table" give forward definitions for the various ** __bessel_ that are used and indicates what they are used for. ** The forward definitions are required so that mphoc doesn't report ** syntax errors. */ function __bessel(x) { return x; } /* find zeros */ function __bessel_prime(x) { return x; } /* find extrema */ function __bessel_hat(x) { return x; } /* find coef about x = a */ /* ** init_bessel sets up global values that are dependent on the order of the ** bessel function under consideration (order is 0 or 1). These values ** are use by routines defining the functions that we are going to ** approximating with polynomials or rationals. */ recip_pi = 1/pi; procedure init_bessel(n) { bessel_order = n; qn_asymptotic_zero_value = bessel_order*bessel_order - 1/4; } /* ** polynomial evaluation of jn'(x). Used to find the extrema of j0 and j1. ** Actually, __jn_prime doesn't calculate jn'(x), rather it calculates ** jn'(x)/x^i, where i is chosen so that the leading term of the series ** is constant. */ function __jn_prime(x) { auto z; z = -j1(x); if (bessel_order == 1) z = j0(x) + z/x; return z; } /* ** __jn_hat(z) is used to find the Remes coefficients for jn expanded ** around one of its zeros, call it a. Specifically, jn_hat(z) = ** j(n,z + a)/z^i, where i = 0 or 1. */ function __jn_hat(z) { auto x, y; if (z == 0) y = __jn_hat_zero_result; else { x = z + bessel_zero; y = jn(x, bessel_order); if (bessel_do_divide) y /= z; } return y; } /* ** __yn_prime is used (primarily) to locate the extrema of y0 and y1 by ** finding the zeros of __yn_prime. Actually, __yn_prime doesn't calculate ** yn'(x), rather it calculates yn'(x)/x^i, where i is chosen so that the ** leading term of the series is constant. */ function __yn_prime(x) { auto z; z = -y1(x); if (bessel_order == 1) z = y0(x) + z/x; return z; } /* ** __yn_hat(z) is used to find the Remes coefficients for yn(x) expanded ** around one of its zeros, call it a. Specifically, ** yn_hat(z) = y(n,x+a)/z. */ function __yn_hat(z) { auto x, y; if (z == 0) y = __yn_hat_zero_result; else y = yn(z + bessel_zero, bessel_order)/z; return y; } /* ** __yn_neumann_hat(z) is used to find the Remes coefficients for ** neumann_yn(x) expanded around one of its zeros, call it a. ** Specifically, __yn_neumann_hat(z) = neumann_yn(n,z+a)/(pi*z^i), where ** i = 0 or 1 */ function __yn_neumann_hat(z) { auto x, y; if (z == 0) y = __yn_hat_zero_result; else { y = neumann_yn(z + bessel_zero, bessel_order)*recip_pi; if (bessel_do_divide) y /= z; } return y; } procedure init_bessel_hat(a, do_divide) { auto t; bessel_zero = a; bessel_do_divide = do_divide; if (a == 0) { __jn_hat_zero_result = 1 - .5*bessel_order; __yn_hat_zero_result = (2*(log(2) - euler_gamma) + bessel_order) * (1 - .5*bessel_order) * recip_pi; remes_arg_flags = REMES_SQUARE_ARG; } else { __jn_hat_zero_result = __jn_prime(a); __yn_hat_zero_result = __yn_prime(a); remes_arg_flags = REMES_LINEAR_ARG; } } /* ** find_bessel_zero attempts to find a zero of jn or yn in the "interval" ** [a,b) using an approximate Newton's method to precision p. ** ** Since we are using the MPHOC find_root operator, a and b must bracket ** the root that is being searched for. ** ** __bessel(x) is a dummy function that is redefined later on to be ** one of __jn or __yn. */ function find_bessel_zero(a, b, p) { auto saved_precision, zero; saved_precision = precision; precision = p; zero = find_root(0, a, b, 0, __bessel); precision = saved_precision; return zero; } /* ** find_next_bessel_extrema(z, p) attempts to find the next extrema after ** the extrema, z, to precision p. It does this by searching for a ** bracketing pair of values, (a,b) for a zero of the derivative of the ** function, and then uses the MPHOC find_root operator. ** ** __bessel_prime(x) is a dummy function that is redefined later on to be ** one of __jn_prime or __yn_prime. */ function find_next_bessel_extrema(z, p) { auto a, b, saved_precision; /* ** Since the difference of consecutive zeros of the bessel functions ** asymptotically approach pi, take a and b to be z + pi/2 and ** z + 3*pi/2 respectively */ saved_precision = precision; precision = p; a = z + .5*pi; b = a + pi; if (__bessel_prime(a)*__bessel_prime(b) > 0) { printf("ERROR: non-bracketing pair in find_bessel_extrema\n"); exit; } z = find_root(0, a, b, 0, __bessel_prime); precision = saved_precision; return z; } /* ** The following two routines are used to generate the coefficients for ** the asymptotic region. */ pn_zero_value = 0; /* Forward references. Will be defined later */ qn_zero_value = 0; __Pn_Qn_scale = bldexp(1, MIN_ASYMPTOTIC_EXPONENT - 1); function __Pn(z) { if (z == 0) return pn_zero_value; return pn_zero_value*hankel_p(__Pn_Qn_scale/z, bessel_order); } function __Qn(z) { auto x; if (z == 0) return qn_zero_value; x = __Pn_Qn_scale/z; return x * pn_zero_value*hankel_q(x, bessel_order); } /* ** As noted above, the coefficients for the bessel functions are not ** particularly well behaved: Sometimes they do not decrease in size ** and sometimes, they neither alternate in sign nor all have the same ** sign. The function check_em checks to see that the coefficients are ** decreasing and have a "nice" sign pattern. */ # define FAILED 0 # define PASSED 1 function check_em( start, end, index ) { auto i, tmp, last_sign, toggle, new_exp, old_exp; i = start + 1; old_exp = bexp(ux_rational_coefs[start]); ux_rational_coefs[index] = old_exp; last_sign = ux_rational_coefs[start] < 0 ? -1 : 1; while (i <= end) { tmp = ux_rational_coefs[i]; new_exp = bexp(ux_rational_coefs[i]); if (new_exp > old_exp) { /* The second term not less than the first term is OK */ if ( i <= (start + 1)) ux_rational_coefs[index] = new_exp; else { TABLE_COMMENT("Exponents don't decrease"); return FAILED; } } old_exp = new_exp; if (last_sign*tmp > 0) { TABLE_COMMENT("Signs don't alternate"); return FAILED; } last_sign = -last_sign; i++; } return PASSED; } /* ** As pointed out above, the ill formed coefficients of the bessel ** polynomials are can frequently be put into a format that is well ** structured. Specifically, many of the polynomials have their even and ** odd coefficients form an alternating series. That is we can write the ** polynomial as: ** ** p(x) = e(x^2) + x*o(x^2) ** ** where e(x) and o(x) have alternating signs and decreasing terms even ** though p(x) does not have decreasing terms. The function reform_coefs ** takes the the coefficients of p and attempts to rearranges them into ** a well formed set. Failing that, it converts the coefficients to ** packed form. */ # define FLAGS_OFFSET 0 # define NUM_DEGREE_OFFSET 1 # define DEN_DEGREE_OFFSET 2 # define NUM_SCALE_OFFSET 3 # define DEN_SCALE_OFFSET 4 # define NUM_DATA_LOCATIONS 5 procedure reform_coefs(a, z, b, degree) { auto j, t, s, k, num_degree, den_degree, status, flags, index, offset; /* ** As part of the reforming process, we scale the coefficients so ** that we normalize the input argument to between 1/2 and 1. */ t = z - a; s = b - z; if (s > t) t = s; i = 0; t = bexp(t); if ( 0 == z ) { /* ** The bessel expansions around zero are known to be alternating ** in sign, so just scale the coefficients. ** ** We know these polynomials use a square term and are even or ** odd depending on the order of the bessel function */ if ( 0 == bessel_order ) { s = 0; flags = 0; } else { s = t; flags = POST_MULTIPLY; } flags = NUMERATOR_FLAGS( SQUARE_TERM + ALTERNATE_SIGN + flags ); num_degree = degree; den_degree = 0; k = 2*t; for (j = 0; j <= num_degree; j++ ) { ux_rational_coefs[ j ] = bldexp(ux_tmp_coefs[ j ], s); s += k; } offset = (128*(num_degree + 1) + BITS_PER_WORD); } else { /* ** These coefficients need to be split up into even and odd ** terms. ** ** if we are dividing out a zero of the function, we need to ** post multiply. Also, if the first two terms of the original ** series have different signs, then we need to subtract the ** even and odd terms rather than add them. */ flags = DENOMINATOR_FLAGS(POST_MULTIPLY + SQUARE_TERM + ALTERNATE_SIGN) + NUMERATOR_FLAGS(SQUARE_TERM + ALTERNATE_SIGN) + BESSEL_USE_ZERO + BESSEL_NO_DIVIDE; s = 0; if (bessel_do_divide) { flags += BESSEL_POST_MULTIPLY; s = t; } flags += ((((ux_tmp_coefs[0]*ux_tmp_coefs[1] < 0) ? SUB : ADD) + 1) << BESSEL_EVEN_ODD_OP_POS); if ((ux_tmp_coefs[0] < 0)) flags += BESSEL_NEGATE_POLY; num_degree = floor(degree/2); k = num_degree + 1; den_degree = degree - k; ux_rational_coefs[degree + 1 ] = 0; /* make sure its initialized */ for (j = 0; j <= num_degree; /* NULL */ ) { ux_rational_coefs[ j++ ] = bldexp(ux_tmp_coefs[ i++ ], s); s += t; ux_rational_coefs[ k++ ] = bldexp(ux_tmp_coefs[ i++ ], s); s += t; } offset = 2*(128*(num_degree + 1) + BITS_PER_WORD); } flags += (num_degree << BESSEL_DEGREE_POS); index = degree + 1; status = check_em( 0, num_degree, index + NUM_SCALE_OFFSET ); if (den_degree > 0) status = status & check_em( num_degree + 1, degree, index + DEN_SCALE_OFFSET); if (FAILED != status) /* Add scale factor for unpacked evaluations */ flags += (((t > 0) ? ((1 << SCALE_WIDTH) - t) : t) << SCALE_POS); else { /* ** Need to use packed evaluation here, so do the conversion. ** ** The call to find_exponent_width and bias sets the global ** values packed_exponent_width and packed_exponent_bias. ** Since find_exponent_width_and_bias and cvt_to_packed expected ** the coefficients to be in the array ux_rational_coefs, copy ** them there in the correct order */ for (i = 0; i <= degree; i++) ux_rational_coefs[i] = ux_tmp_coefs[i]; find_exponent_width_and_bias(degree, 0); cvt_to_packed(degree, 0, packed_exponent_width, packed_exponent_bias); if (packed_exponent_width >= (1 << BESSEL_EXP_WIDTH_WIDTH)) printf( "\tERROR: packed_exponent_width = %i exceeds field width\n", packed_exponent_width); if (packed_exponent_bias >= (1 << BESSEL_EXP_BIAS_WIDTH)) printf( "\tERROR: packed_exponent_bias = %i exceeds field width\n", packed_exponent_bias); offset = 128*(degree + 1); flags = (flags & BESSEL_COMMON_FLAGS_MASK) + BESSEL_PACKED_POLY + ((degree << BESSEL_DEGREE_POS) + (packed_exponent_bias << BESSEL_EXP_BIAS_POS) + (packed_exponent_width << BESSEL_EXP_WIDTH_POS)); num_degree = degree; den_degree = 0; } offset = (offset + FIXED_BITS_PER_INTERVAL_DATA) / BITS_PER_CHAR; flags += (offset << OFFSET_POS); ux_rational_coefs[index + FLAGS_OFFSET ] = flags; ux_rational_coefs[index + NUM_DEGREE_OFFSET ] = num_degree; ux_rational_coefs[index + DEN_DEGREE_OFFSET ] = den_degree; /* Save degree in ux_tmp_coefs[0] in case we need it later */ ux_tmp_coefs[0] = degree; } /* ** The function foo is used to determine the points at which we can ** approximate y0 and y1 using the neumann_yn functions without losing ** signficance (see (11)). In particular, we require the the ratio of ** yn and yn(x) - (2/pi)*jn(x)*ln(x) be greater than 1/2. */ two_over_pi = 2*recip_pi; function foo(x) { auto num, den; num = yn(x, bessel_order); den = num - two_over_pi*jn(x, bessel_order)*log(x); return abs(num/den) - .5; } /* ** print_interval_data prints the Remes coefficients and the associated ** zeros in the order/format specified in the INTERVAL_DATA structure ** definitions. ** ** The Remes coefficients are implicitly passed to this routine via the ** global array ux_fraction_digits. The evaluation flags for the ** polynomial, the numerator/denominator degrees and the scale factor ** are stored in ux_fraction_digits[index, index+1, index+2, index+3] ** respectively */ function five_digits(x) { return nint(100000*x)/100000; } function low_32_bits(i) { return i - bldexp(floor(bldexp(i,-32)), 32); } function print_interval_data(a, z, b, k, index) { auto flags, num_degree, den_degree, poly_degree, saved_precision; printf("\n\t/* Data for interval %i : [ %r, %r ) - zero = %r */\n", k, five_digits(a), five_digits(b), five_digits(z)); /* ** print the most significant digit of the upper limit of the interval ** in fixed point and the evaluation flags */ extrema_value_high_word = floor(bldexp(b, BITS_PER_UX_FRACTION_DIGIT_TYPE - 5)); PRINT_64_TBL_ITEM( extrema_value_high_word ); flags = ux_rational_coefs[index + FLAGS_OFFSET]; PRINT_64_TBL_ITEM( flags ); /* ** Now print out the zero in extended format. First, add in the ** exponent, and then print out digits from high to low */ saved_precision = precision; precision = ceil(2*UX_PRECISION/MP_RADIX_BITS); z = bround(z, 2*UX_PRECISION - ZERO_EXPONENT_BITS); exponent = bexp(z); z = bldexp(z, -exponent) + bldexp(exponent, - 2*UX_PRECISION); for (i = 2; i > 0; i--) { printf( "\t/* %3i */", BYTES(MP_BIT_OFFSET)); z = print_ux_fraction_digits(z); MP_BIT_OFFSET += UX_PRECISION; } precision = saved_precision; num_degree = ux_rational_coefs[index + NUM_DEGREE_OFFSET]; den_degree = ux_rational_coefs[index + DEN_DEGREE_OFFSET]; if ( (low_32_bits(flags) & BESSEL_PACKED_POLY) != 0) { printf("\t/* degree = %i - packed coefficients */\n", num_degree); print_packed(num_degree, 0); } else { poly_degree = num_degree + den_degree; if (den_degree) poly_degree++; printf("\t/* degree = %i - unpacked coefficients */\n",poly_degree); print_ux_poly_coefs(0, num_degree, 0, 0); if (den_degree) print_ux_poly_coefs(num_degree - den_degree, den_degree, 0, num_degree + 1); } return k+1; } /* ** get_coefficients computes the remes coefficients for "current" function ** on the interval [a,b] expanded around the point, z. When z is zero, ** a square term polynomial approximation is assumed. ** ** get_coefficients invokes reform_coefs to see if then can be made into ** a well formed set of coefficients. The following table lists the ** possible out comes of get_coefficients based on the result reform_coefs ** and the value of action ** ** reform ** result action Processing ** ------ -------- ------------------------------ ** FAILED NO_PRINT returns k ** PRINT prints packed coefficients; return k+1; ** SIGNAL print error message and quit ** PASSED NO_PRINT returns k+1 ** PRINT prints packed coefficients; return k+1; ** SIGNAL prints packed coefficients; return k+1; */ # define NO_PRINT 0 # define PRINT 1 # define SIGNAL 2 # if STANDARD != 0 # define AUXILIARY 0 # else # define AUXILIARY 1 # endif function get_coefficients(a, z, b, k, p, bessel_enum, type, do_divide, tol, action) { auto low, high, save_precision, actual_tol, index, tmp, flags; save_precision = precision; precision = p; /* ** We assume here that if z == 0 ==> a == 0 */ if ((z == 0) && (a != 0) ) { printf("\tERROR: Invalid arguments to get_coefficients\n"); exit; } low = a - z; high = b - z; init_bessel_hat(z, do_divide); flags = REMES_RELATIVE_WEIGHT + remes_arg_flags; if (DYNAMIC) { flags += REMES_FIND_POLYNOMIAL; if ( STANDARD == type) remes( flags, low, high, __bessel_hat, tol, &poly_degree, &ux_tmp_coefs); else /* need auxillary function */ remes( flags, low, high, __yn_neumann_hat, tol, &poly_degree, &ux_tmp_coefs); } else { /* Extract fixed degree from "packed" list */ tmp = fixed_degrees[ bessel_enum ] * 64; poly_degree = floor(tmp); fixed_degrees[ bessel_enum ] = tmp - poly_degree; if (0 == poly_degree) return k; flags += REMES_STATIC; if ( STANDARD == type) actual_tol = remes( flags, low, high, __bessel_hat, poly_degree, 0, &ux_tmp_coefs); else /* need auxillary function */ actual_tol = remes( flags, low, high, __yn_neumann_hat, poly_degree, 0, &ux_tmp_coefs); if (actual_tol < tol) { printf( "ERROR: insufficient degree for subinterval polynomial\n" " expected tol = %r, got %r\n", five_digits(tol), five_digits(actual_tol)); /* exit; */ } } precision = save_precision; reform_coefs(a, z, b, poly_degree, type); /* Check for ill formed coefficients */ index = poly_degree + 1; flags = ux_rational_coefs[index + FLAGS_OFFSET] + ((STANDARD == type) ? 0 : BESSEL_NEUMANN_POLY); ux_rational_coefs[index + FLAGS_OFFSET] = flags; if ((low_32_bits(flags) & BESSEL_PACKED_POLY) != 0) { if ( SIGNAL == action ) { printf("\tERROR: expected well form coefficients\n"); exit; } else if ( NO_PRINT == action ) return k; } else if (action == NO_PRINT) return k+1; return print_interval_data(a, z, b, k, index); } /* ** The function, get_neumann_coefficients generates the coefficients of ** the neumann function on the interval [a,b] expanded around z, where z ** is a zero of the neumann function in the interval [a,b] if it exists ** or .5*(a+b) if it doesn't. */ function get_neumann_coefficients(a, b, k, remes_prec, zero_prec, bessel_enum, tol) { auto do_divide, neumann_zero, saved_precision; if ((a == 0) && (bessel_order == 1)) { do_divide = TRUE; neumann_zero = 0; } else { init_bessel_hat(0, 0 != bessel_order); do_divide = ( __yn_neumann_hat(a)*__yn_neumann_hat(b) < 0 ); saved_precision = precision; precision = zero_prec; neumann_zero = do_divide ? find_root(0, a, b, 0, __yn_neumann_hat) : .5*(a + b); precision = saved_precision; } return get_coefficients(a, neumann_zero, b, k, remes_prec, bessel_enum, AUXILIARY, do_divide, tol, PRINT); } /* ** the function find_yn_bound is a "helper" function that is used to ** locate the boundaries of an interval were using the neumann ** approximations will not result in a sever cancellation error. */ function find_yn_bound(z, z_inc) { auto w; w = z; while (1) { w = z + z_inc; if (foo(z)*foo(w) < 0) break; z = w; } return find_root(0, z, w, 0, foo); } /* ** find_interval_data(bessel_enum, a, x) finds all of the zeros ** and extrema values of jn or yn in the interval (0, x) as well as ** the first extrema greater than or equal to x. For each zero, the Remes ** coefficients are computed for the bessel function on [e,f], where e and ** f are the extrema values that bracket the zero. (There's one exception ** to scheme described below.) ** ** The value a is used to determine the location of the "first" extrema. ** if a != 0, we find remes coefficients on the interval (0,a) and then ** proceed as defined above on the interval (a,x) rather than (0,x). The ** value of 'a' need not actually be the location of the first extrema. ** If it is not, then a + pi/2 and a + 3*pi/2 should bracket the location ** of the first extrema. ** ** The zeros, extrema values and coefficients are written to the coefficient ** table. */ function find_interval_data(bessel_enum, a, x) { auto b, c, save_precision, zero_precision, extrema_precision, tol, remes_precision, order, k, last_extrema, t, poly_degree, flags, index; /* ** In order to insure 'tol' bits in the zeros of jn, we need to ** compute bessel to at least 2*'tol' bits. */ if (bessel_enum < Y0_ENUM) tol = F_PRECISION + 3; else tol = F_PRECISION + 1; save_precision = precision; extrema_precision = ceil(BITS_PER_WORD/MP_RADIX_BITS) + 4; zero_precision = ceil(2*tol/MP_RADIX_BITS) + 4; remes_precision = ceil(tol/MP_RADIX_BITS) + 6; order = bessel_enum % 2; k = 0; init_bessel(order); last_extrema = a; table_offset[bessel_enum] = MP_BIT_OFFSET; if (bessel_enum < Y0_ENUM) { printf( "\n\t/* Interval polynomial coefficients for j%i */\n", order); if (a != 0) /* Get coefficients on (0,a) */ k = get_coefficients(0, 0, a, k, remes_precision, bessel_enum, STANDARD, 1 == order, tol, SIGNAL); } else { printf( "\n\t/* Interval polynomial coefficients for y%i */\n", order); /* ** Near 0, we need to compute yn via the neumann functions (see eq. ** (11)). However, if the interval on which we use the neumann ** function includes a zero of yn, then we will have accuracy ** problems. So the first thing we do, is find the smallest zero ** of yn, call it z, and compute b, so that if t is in [0,b] then ** ** | yn(t) | ** | -------------------------- | > 1/2 ** | yn(t) - (2/pi)*jn(x)*ln(x) | ** ** That way, we know there can be no massive loss of significance ** when using the neumann functions */ z = find_bessel_zero(a, a+1, zero_precision); b = find_yn_bound(z, -.1); k = get_neumann_coefficients(0, b, k, remes_precision, zero_precision, bessel_enum, tol); /* ** We know that expansion around the first zero of y0 or y1 between ** its first extrema values is ill conditioned and extremely large ** (hundreds of terms), so we take a *TINY* interval around the zero ** so that polynomial is not too long (i.e. the performance of the ** packed polynomial evaluation is not to bad) and the accuracy will ** be OK. */ c = find_yn_bound(z, .1); k = get_coefficients(b, z, c, k, remes_precision, bessel_enum, STANDARD, TRUE, tol, PRINT); /* ** We finish up the "first interval" by approximating yn via the ** neumann approximation on [c, e] where e is the first extrema ** location of yn */ last_extrema = find_next_bessel_extrema(z - pi/4,extrema_precision); k = get_neumann_coefficients(c, last_extrema, k, remes_precision, zero_precision, bessel_enum, tol); a = last_extrema; } /* ** Now loop through the remaining intervals */ flags = 0; while (a <= x) { a = find_next_bessel_extrema(last_extrema, extrema_precision); z = find_bessel_zero(last_extrema, a, zero_precision); k = get_coefficients(last_extrema, z, a, k, remes_precision, bessel_enum, STANDARD, TRUE, tol, PRINT); last_extrema = a; } if (!DYNAMIC) { /* Check for the correct number of intervals */ if (num_intervals[ bessel_enum ] != k) { printf( "ERROR: Incorrect number of intervals for non DYNAMIC mode\n"); exit; } } return last_extrema; } /* ** The function, get_neumann_coefficients is a helper function that ** generates the coefficients of the neumann functions expanded around ** z, where z is a zero of the neumann function in the interval [a,b] ** if it exists or .5*(a+b) if it doesn't */ function get_neumann_coefficients(a, b, k, remes_prec, zero_prec, bessel_enum, tol) { auto do_divide, neumann_zero, saved_precision; if ((a == 0) && (bessel_order == 1)) { do_divide = TRUE; neumann_zero = 0; } else { init_bessel_hat(0, 0 != bessel_order); do_divide = ( __yn_neumann_hat(a)*__yn_neumann_hat(b) < 0 ); saved_precision = precision; precision = zero_prec; neumann_zero = do_divide ? find_root(0, a, b, 0, __yn_neumann_hat) : .5*(a + b); precision = saved_precision; } return get_coefficients(a, neumann_zero, b, k, remes_prec, bessel_enum, AUXILIARY, do_divide, tol, PRINT); } function find_yn_bound(z, z_inc) { auto w; w = z; while (1) { w = z + z_inc; if (foo(z)*foo(w) < 0) break; z = w; } return find_root(0, z, w, 0, foo); } /* ** get_asymptotic_coefficients computes the Remes rational approximations ** to Pn and Qn for n = 0 and 1. It also writes its results to the ** the coefficient table. */ procedure get_asymptotic_coefficients(j_min, y_min, n) { auto max_z, saved_precision, remes_precision, num_degree, den_degree, degree, remes_base_flags; saved_precision = precision; remes_precision = ceil(F_PRECISION/MP_RADIX_BITS) + 6; precision = remes_precision; max_z = bldexp(1, MIN_ASYMPTOTIC_EXPONENT - 1)/min(j_min, y_min); if ( max_z >= 1 ) { printf("ERROR: scale factor (%i) too big for min asymptotic x\n", MIN_ASYMPTOTIC_EXPONENT - 1); exit; } pn_zero_value = 1/sqrt(bldexp(pi, MIN_ASYMPTOTIC_EXPONENT - 2)); bessel_order = n; qn_zero_value = .5*(n - .25)*pn_zero_value; remes_base_flags = REMES_RELATIVE_WEIGHT + REMES_SQUARE_ARG; if (DYNAMIC) remes( remes_base_flags + REMES_FIND_RATIONAL, 0, max_z, __Pn, F_PRECISION + 6, &num_degree, &den_degree, &ux_rational_coefs); else { num_degree = 9; den_degree = 9 - n; tol = remes( remes_base_flags + REMES_STATIC, 0, max_z, __Pn, num_degree, den_degree, &ux_rational_coefs); ASSERT_TOL(tol, F_PRECISION + 6, "Pn" ) } printf("#define\tP%i_COEFFICIENTS\t\t((FIXED_128 *) ((char *) " STR(MP_TABLE_NAME) " + %i))\n", n, BYTES(MP_BIT_OFFSET)); degree = print_ux_rational_coefs( num_degree, den_degree, 0); printf("#define\tP%i_DEGREE\t\t%i\n", n, degree); if (DYNAMIC) remes( remes_base_flags + REMES_FIND_RATIONAL, 0, max_z, __Qn, F_PRECISION + 6, &num_degree, &den_degree, &ux_rational_coefs); else { num_degree = 9; den_degree = 10 - n; tol = remes( remes_base_flags + REMES_STATIC, 0, max_z, __Qn, num_degree, den_degree, &ux_rational_coefs); ASSERT_TOL(tol, F_PRECISION + 6, "Qn" ) } printf("#define\tQ%i_COEFFICIENTS\t\t((FIXED_128 *) ((char *) " STR(MP_TABLE_NAME) " + %i))\n", n, BYTES(MP_BIT_OFFSET)); degree = print_ux_rational_coefs( num_degree, den_degree, -(MIN_ASYMPTOTIC_EXPONENT - 1)); printf("#define\tQ%i_DEGREE\t\t%i\n", n, degree); precision = saved_precision; } /* ** If we aren't using "FIND" mode, specify the number of intervals and ** the associated degrees of the polynomials. */ if (!DYNAMIC) { num_intervals[J0_ENUM] = 7; num_intervals[J1_ENUM] = 8; num_intervals[Y0_ENUM] = 10; num_intervals[Y1_ENUM] = 9; # define PACK6(a,b,c,d,e,f) \ (a + (b + (c + (d + (e + f/64)/64)/64)/64)/64)/64 # define PACK7(a,b,c,d,e,f,g) (a + PACK6(b,c,d,e,f,g))/64 # define PACK8(a,b,c,d,e,f,g,h) (a + PACK7(b,c,d,e,f,g,h))/64 # define PACK9(a,b,c,d,e,f,g,h,i) (a + PACK8(b,c,d,e,f,g,h,i))/64 # define PACK10(a,b,c,d,e,f,g,h,i,j) (a + PACK9(b,c,d,e,f,g,h,i,j))/64 save_precision = precision; precision = ceil(16*6/8) + 1; fixed_degrees[ J0_ENUM ] = PACK7(30, 28, 28, 28, 28, 28, 28); fixed_degrees[ J1_ENUM ] = PACK8(14, 29, 28, 28, 28, 28, 28, 28); fixed_degrees[ Y0_ENUM ] = PACK10(20, 19, 23, 49, 34, 29, 28, 28, 28, 28); fixed_degrees[ Y1_ENUM ] = PACK9(14, 29, 23, 41, 32, 28, 28, 28, 28); precision = save_precision; } else __tmp = 0; /* ** Set up __bessel() to get locations of the extrema and zeros of j0 and j1. */ function __bessel(x) { return jn(x, bessel_order); } function __bessel_hat(x) { return __jn_hat(x); } function __bessel_prime(x) { return __jn_prime(x); } /* ** Since the necessary value of "t" used in the each of the calls to ** find_interval_data is known prior to build time and the accuracy of the ** algorithm as a hole is not affected by it precision, we pre-compute ** t to save time. ** ** For j0 and j1, t is the actual location of the first extrema. */ t = 0; min_asymptotic_value[J0_ENUM] = find_interval_data(J0_ENUM, t, 22); t = 1.8411837813406593026436295136444433224361; min_asymptotic_value[J1_ENUM] = find_interval_data(J1_ENUM, t, 22); /* ** Now set up __bessel() to get extrema locations of y0 and y1 */ function __bessel(x) { return yn(x, bessel_order); } function __bessel_hat(x) { return __yn_hat(x); } function __bessel_prime(x) { return __yn_prime(x); } /* ** For y0 and y1 the value of t is chosen as the lower bound of an interval ** in which to find the first zero of y0 or y1. We don't pre-compute ** this value, since it need to be known to a specific accuracy. */ t = .65; min_asymptotic_value[Y0_ENUM] = find_interval_data(Y0_ENUM, t, 22); t = 1.25; min_asymptotic_value[Y1_ENUM] = find_interval_data(Y1_ENUM, t, 22); TABLE_COMMENT("P0 and Q0 rational coefficients"); asymptotic_coef_offset[J0_ENUM] = MP_BIT_OFFSET; asymptotic_coef_offset[Y0_ENUM] = MP_BIT_OFFSET; get_asymptotic_coefficients( min_asymptotic_value[J0_ENUM], min_asymptotic_value[Y0_ENUM], 0 ); TABLE_COMMENT("P1 and Q1 rational coefficients"); asymptotic_coef_offset[J1_ENUM] = MP_BIT_OFFSET; asymptotic_coef_offset[Y1_ENUM] = MP_BIT_OFFSET; get_asymptotic_coefficients( min_asymptotic_value[J1_ENUM], min_asymptotic_value[Y1_ENUM], 1 ); printf("#define BESSEL_TABLE_DATA_MAP\t" "(TABLE_DATA_MAP *)((char *) TABLE_NAME + %i)\n", BYTES(MP_BIT_OFFSET)); for (i = 0; i < 4; i++) { tmp = min_asymptotic_value[i]; tmp = bldexp(tmp, BITS_PER_UX_FRACTION_DIGIT_TYPE - 5); PRINT_64_TBL_ITEM( tmp ); PRINT_64_TBL_ITEM( BYTES(table_offset[i] )); PRINT_64_TBL_ITEM( BYTES(asymptotic_coef_offset[i] )); } /* ** Generate miscellaneous constants */ TABLE_COMMENT("1/pi, 2/pi, 2*ln2/pi"); tmp = 2/pi; PRINT_UX_TBL_ADEF_ITEM( "UX_TWO_OVER_PI", tmp); tmp *= log(2); PRINT_UX_TBL_ADEF_ITEM( "UX_TWO_LN2_OVER_PI", tmp); END_TABLE; @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ $outText = "$tableText\n\n$defineText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants for bessel " . \ "routines", __FILE__ ); \ print "$headerText\n\n$outText\n"; #endif LIBRARY/float128/dpml_lgamma_x.h0000644€­ Q01134020000001550215113665770015364 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" static const TABLE_UNION TABLE_NAME[] = { /* lgamma class-to-action-mapping */ /* 000 */ DATA_1x2( 0x00eb9408, 0x1efb0000 ), /* 008 */ DATA_1x2( 0x00000088, 0x00000000 ), /* 016 */ DATA_1x2( 0x00000089, 0x00000000 ), /* 024 */ DATA_1x2( 0x0000008b, 0x00000000 ), /* Unpacked values of 1, 1/2, 3, ln2, pi/2, ln(2*pi)/2 and ln(pi/2)/2 */ /* 032 */ POS, 0001, DATA_2x2( 0x00000000, 0x80000000, 0x00000000, 0x00000000 ), /* 056 */ POS, 0000, DATA_2x2( 0x00000000, 0x80000000, 0x00000000, 0x00000000 ), /* 080 */ POS, 0002, DATA_2x2( 0x00000000, 0xc0000000, 0x00000000, 0x00000000 ), /* 104 */ POS, 0000, DATA_2x2( 0xd1cf79ab, 0xb17217f7, 0x03f2f6af, 0xc9e3b398 ), /* 128 */ POS, 0001, DATA_2x2( 0x2168c234, 0xc90fdaa2, 0x80dc1cd1, 0xc4c6628b ), /* 152 */ POS, 0000, DATA_2x2( 0x25f5a534, 0xeb3f8e43, 0x44192023, 0x94bc9001 ), /* 176 */ NEG, 00-2, DATA_2x2( 0x5098ae23, 0xe735d92d, 0x0098a5d2, 0x2b6371a5 ), /* Fixed point coefficients for lgamma on [1,2) */ /* 200 */ DATA_2x2( 0x00000000, 0x00000000, 0x00000000, 0x00000000 ), /* 216 */ DATA_4( 0x60a9b302, 0x251114f8, 0x000a9755, 0x00000000 ), /* 232 */ DATA_4( 0x2cc9bd10, 0x4a93d634, 0x10f9922b, 0x00000000 ), /* 248 */ DATA_4( 0xee192d70, 0x82f37577, 0xa7292d3c, 0x00000007 ), /* 264 */ DATA_4( 0x66c06a08, 0xa21e1b64, 0x4eb14ba2, 0x00000193 ), /* 280 */ DATA_4( 0x0be50f9f, 0x49519e8b, 0x7e5a1213, 0x00002e54 ), /* 296 */ DATA_4( 0x390dbcb7, 0x01bedab0, 0x79f1e1e9, 0x00034d19 ), /* 312 */ DATA_4( 0xe9de96be, 0x8c803c56, 0x8033da1a, 0x0027b25a ), /* 328 */ DATA_4( 0xc35545a5, 0x04688452, 0xfac6a931, 0x0145ce49 ), /* 344 */ DATA_4( 0x96c7ab7c, 0x52635611, 0xe0e409ba, 0x073eb570 ), /* 360 */ DATA_4( 0x21e7042e, 0xc8eb5b37, 0x8c27bb64, 0x1c98e3bf ), /* 376 */ DATA_4( 0x7e72db3d, 0x80c9f91f, 0x6f117f09, 0x4ccac2fa ), /* 392 */ DATA_4( 0x9081feb0, 0x99782df4, 0x590f0953, 0x85d5f505 ), /* 408 */ DATA_4( 0x6c10b7f7, 0x1b6c7514, 0x39f9e37e, 0x88814a09 ), /* 424 */ DATA_4( 0x83a6a3c6, 0x3431fac5, 0x2983229a, 0x3dd72b61 ), /* 440 */ DATA_1x2( 0x000000-1, 0x00000000 ), /* 448 */ DATA_4( 0xc67ddea9, 0x27e51e40, 0x0000731a, 0x00000000 ), /* 464 */ DATA_4( 0x5b1c0e74, 0xc97fab18, 0x0115d73c, 0x00000000 ), /* 480 */ DATA_4( 0x1d79d56f, 0x6e9d2e49, 0xa6315e07, 0x00000000 ), /* 496 */ DATA_4( 0xf4cb1e90, 0x00133167, 0x5e5a31c5, 0x0000002b ), /* 512 */ DATA_4( 0x216b5ee3, 0xc14d67db, 0x17b80486, 0x0000062f ), /* 528 */ DATA_4( 0x5598dbab, 0x5e4616f4, 0x89d3ba81, 0x00008abf ), /* 544 */ DATA_4( 0x04f76b07, 0x2f86a645, 0x77d3affa, 0x000801ae ), /* 560 */ DATA_4( 0xf8d34de2, 0x21b7e21e, 0xeeb8ec9f, 0x00512a20 ), /* 576 */ DATA_4( 0xb9653bbe, 0xde7adeae, 0xf89914ba, 0x0241d70a ), /* 592 */ DATA_4( 0x979ac908, 0x9b14aeee, 0xedde5c80, 0x0b628f84 ), /* 608 */ DATA_4( 0xdb6f3010, 0xac217782, 0xf57d41e9, 0x28786839 ), /* 624 */ DATA_4( 0xa00e1d50, 0x1c26652e, 0xd536e872, 0x63216f20 ), /* 640 */ DATA_4( 0xd4c5cd55, 0x2fe415ce, 0xc53819f2, 0x9f39f1ec ), /* 656 */ DATA_4( 0x97207a40, 0x7d9ed1ea, 0x01fb71ed, 0x96f0820b ), /* 672 */ DATA_4( 0x00000000, 0x00000000, 0x00000000, 0x40000000 ), /* 688 */ DATA_1x2( 0x00000002, 0x00000000 ), /* Fixed point coefficients for lgamma(8*x) on [0, 1/16) */ /* 696 */ DATA_4( 0x943ed058, 0xc3b7bbca, 0xbc3dce5c, 0x00000000 ), /* 712 */ DATA_4( 0x0da9290d, 0x2bb58f01, 0x0a447bf9, 0x00000324 ), /* 728 */ DATA_4( 0x8ceb762a, 0xaab155aa, 0x4234fdef, 0x0001e4ce ), /* 744 */ DATA_4( 0xe9bcf260, 0xb5270ed6, 0x948dbace, 0x00588e2c ), /* 760 */ DATA_4( 0x1484eea6, 0x26aa99f0, 0xa5074a12, 0x064912e4 ), /* 776 */ DATA_4( 0x229f11bd, 0x77235e20, 0x430459cf, 0x30a1be32 ), /* 792 */ DATA_4( 0x257c5853, 0x5544fc19, 0x91178da0, 0x9d3bed71 ), /* 808 */ DATA_4( 0xaaaaaaab, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa ), /* 824 */ DATA_1x2( 0x000000-6, 0x00000000 ), /* 832 */ DATA_4( 0xef3685a9, 0xb0eb5698, 0xbfa75404, 0x00000000 ), /* 848 */ DATA_4( 0xad31e3f2, 0xf0e52018, 0x3c335fc5, 0x00000284 ), /* 864 */ DATA_4( 0x13d425ca, 0x21bf8b59, 0x77594c75, 0x000173e1 ), /* 880 */ DATA_4( 0x679bc1ac, 0x9f5eb7a8, 0x10c65cbd, 0x004306d1 ), /* 896 */ DATA_4( 0x15a6dce6, 0x8cea58be, 0xfddab044, 0x04bb9b7a ), /* 912 */ DATA_4( 0x4834b491, 0xb1c1f9d3, 0x5d26f16f, 0x2488f69c ), /* 928 */ DATA_4( 0xed2e52e1, 0x5104ce23, 0x3de2bb49, 0x75fe0326 ), /* 944 */ DATA_4( 0x00000000, 0x00000000, 0x00000000, 0x80000000 ), /* 960 */ DATA_1x2( 0x00000001, 0x00000000 ), }; #define LGAMMA_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 0)) #define UX_ONE ((UX_FLOAT *) ((char *) TABLE_NAME + 32)) #define UX_HALF ((UX_FLOAT *) ((char *) TABLE_NAME + 56)) #define UX_THREE ((UX_FLOAT *) ((char *) TABLE_NAME + 80)) #define UX_LN2 ((UX_FLOAT *) ((char *) TABLE_NAME + 104)) #define UX_PI_OVER_2 ((UX_FLOAT *) ((char *) TABLE_NAME + 128)) #define UX_HALF_LN_TWO_PI ((UX_FLOAT *) ((char *) TABLE_NAME + 152)) #define UX_HALF_LN_TWO_OVER_PI ((UX_FLOAT *) ((char *) TABLE_NAME + 176)) #define LGAMMA_P_COEF_ARRAY ((FIXED_128 *) ((char *) TABLE_NAME + 200)) #define LGAMMA_P_COEF_ARRAY_DEGREE (( signed __int64 ) 0x000000000000000e ) #define LGAMMA_PHI_COEF_ARRAY ((FIXED_128 *) ((char *) TABLE_NAME + 696)) #define LGAMMA_PHI_COEF_ARRAY_DEGREE (( signed __int64 ) 0x0000000000000007 ) LIBRARY/float128/dpml_powi_x.h0000644€­ Q01134020000000566315113665770015113 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" static const TABLE_UNION __powi_x_table[] = { /* powi class-to-action-mapping */ /* ... for n < 0, even and odd */ /* 000 */ DATA_1x2( 0x00514408, 0x7eba0000 ), /* 008 */ DATA_1x2( 0x00714408, 0x6efa0000 ), /* ... for n = 0, 0^0 = 0 */ /* 016 */ DATA_1x2( 0x55555408, 0x55145555 ), /* ... for n = 0, 0^0 = 1 */ /* 024 */ DATA_1x2( 0x55555408, 0x45555555 ), /* ... for n = 0, 0^0 = error */ /* 032 */ DATA_1x2( 0x55555408, 0x3fff5555 ), /* ... for n > 0, even and odd */ /* 040 */ DATA_1x2( 0x00610408, 0x26100000 ), /* 048 */ DATA_1x2( 0x00410408, 0x14100000 ), /* Data for the above mappings */ /* 056 */ DATA_1x2( 0x00000000, 0x00000000 ), /* 064 */ DATA_1x2( 0x00000057, 0x00000000 ), /* 072 */ DATA_1x2( 0x00000058, 0x00000000 ), /* 080 */ DATA_1x2( 0x00000000, 0x00000000 ), /* 088 */ DATA_1x2( 0x00000001, 0x00000000 ), /* 096 */ DATA_1x2( 0x00000009, 0x00000000 ), /* 104 */ DATA_1x2( 0x00000056, 0x00000000 ), }; #define POWI_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) __powi_x_table + 0)) #define NEG_EXPONENT_INDEX 0 #define ZERO_EXPONENT_RETURN_0_INDEX 2 #define ZERO_EXPONENT_RETURN_1_INDEX 3 #define ZERO_EXPONENT_RETURN_ERROR_INDEX 4 #define POS_EXPONENT_INDEX 5 #define EXPONENT_INDEX_FIELD_WIDTH 3 LIBRARY/float128/dpml_sqrt.c0000644€­ Q01134020000007747515113665770014604 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if defined(FAST_SQRT) + defined(SQRT) + defined(RSQRT) + defined(MAKE_INCLUDE) != 1 # error Exactly one of SQRT, FAST_SQRT, RSQRT, or MAKE_INCLUDE must be defined. #endif #if defined(FAST_SQRT) # define __ENTRY_NAME F_FAST_SQRT_NAME # define ___BASE_NAME FAST_SQRT_BASE_NAME # define IF_SQRT(x) x # define IF_RSQRT(x) #elif defined(RSQRT) # define __ENTRY_NAME F_RSQRT_NAME # define ___BASE_NAME RSQRT_BASE_NAME # define IF_SQRT(x) # define IF_RSQRT(x) x #elif defined(SQRT) # define __ENTRY_NAME F_SQRT_NAME # define ___BASE_NAME SQRT_BASE_NAME # define IF_SQRT(x) x # define IF_RSQRT(x) #endif #if !defined(F_ENTRY_NAME) # define F_ENTRY_NAME __ENTRY_NAME #endif #if !defined(BASE_NAME) # define BASE_NAME ___BASE_NAME #endif #if !defined(BUILD_FILE_EXTENSION) # define BUILD_FILE_EXTENSION c #endif #include "dpml_private.h" #if (DYNAMIC_ROUNDING_MODES) || (COMPILER == epc_cc) # define ESTABLISH_ROUND_TO_ZERO(old_mode) \ INIT_FPU_STATE_AND_ROUND_TO_ZERO(old_mode) # define RESTORE_ROUNDING_MODE(old_mode) \ RESTORE_FPU_STATE(old_mode) #else # define ESTABLISH_ROUND_TO_ZERO(old_mode) # define RESTORE_ROUNDING_MODE(old_mode) #endif #if !defined(F_MUL_CHOPPED) /* This definition of F_MUL_CHOPPED is used for dynamic rounding modes and when no directed rounding is available. In the later case results will not be correctly rounded. */ # define F_MUL_CHOPPED(x,y,z) (z) = (x) * (y) #endif /* ** NUM_FRAC_BITS specifies the number of mantissa bits used for ** indexing the table (the table index also includes the low-order ** exponent bit). NUM_FRAC_BITS also affects the table size: ** ** sizeof(D_SQRT_TABLE_NAME) = (1 << (NUM_FRAC_BITS + 1)) ** * (2*sizeof(float)+sizeof(double)) */ #define NUM_FRAC_BITS 7 #define INDEX_MASK MAKE_MASK((NUM_FRAC_BITS + 1), 0) #if (IEEE_FLOATING) /* ** LOC_OF_EXPON is the bit offset within u.B_SIGNED_HI_32 of the ** low-order exponent bit of u.f, where u is a B_UNION. (We assume ** the highest bits of B_SIGNED_HI_32 hold the sign bit and exponent). ** ** From LOC_OF_EXPON, EXP_BITS_OF_ONE_HALF and HI_EXP_BIT_MASK are derived. */ # define LOC_OF_EXPON ((BITS_PER_LS_INT_TYPE - 1) - B_EXP_WIDTH) # define EXP_BITS_OF_ONE_HALF ((U_LS_INT_TYPE)(B_EXP_BIAS-B_NORM-1) << LOC_OF_EXPON) # define HI_EXP_BIT_MASK (MAKE_MASK(B_EXP_WIDTH-1, 1) << LOC_OF_EXPON) # define GET_SQRT_TABLE_INDEX(exp,index) \ index = (exp >> (LOC_OF_EXPON - NUM_FRAC_BITS)); \ index &= INDEX_MASK /* ** SAVE_EXP saves the exponent in a temporary so it can be used in ** the INPUT_IS_ABNORMAL macro */ # define SAVE_EXP(exp) save_exp = (exp) # define INPUT_IS_ABNORMAL \ ((U_LS_INT_TYPE)(save_exp-((LS_INT_TYPE)1 << LOC_OF_EXPON)) >= \ (U_LS_INT_TYPE)hi_exp_mask) #endif #if (VAX_FLOATING) # define EXP_BITS_OF_ONE_HALF 0x4000 # define HI_EXP_BIT_MASK 0x7fe0 # define GET_SQRT_TABLE_INDEX(exp,index) \ index = ((exp << 3) | ((U_INT_32)exp >> 29)); \ index &= INDEX_MASK # define SAVE_EXP(exp) /* INPUT_IS_ABNORMAL doesn't need it */ # define INPUT_IS_ABNORMAL (x <= (F_TYPE)0.0) #endif #if ((ARCHITECTURE == alpha) || (BITS_PER_WORD == 64)) /* We can do 64-bit stores */ /* This is an optimization of the 'else' clause below */ # if QUAD_PRECISION # define STORE_EXP_TO_V_UNION \ V_UNION_128_BIT_STORE # else # define STORE_EXP_TO_V_UNION \ V_UNION_64_BIT_STORE # endif #else /* Store it in 32-bits pieces */ # if QUAD_PRECISION # define STORE_EXP_TO_V_UNION \ v.B_SIGNED_HI_32 = ((U_INT_32)exp) >> 1; \ v.B_SIGNED_LO1_32 = 0; \ v.B_SIGNED_LO2_32 = 0; \ v.B_SIGNED_LO3_32 = 0 # else # define STORE_EXP_TO_V_UNION \ v.B_SIGNED_HI_32 = ((U_INT_32)exp) >> 1; \ v.B_SIGNED_LO_32 = 0 # endif #endif /* This condition is complicated. */ #if (VAX_FLOATING) == (ENDIANESS == little_endian) # define V_UNION_64_BIT_STORE \ v.B_UNSIGNED_HI_64 = ((U_INT_64)(U_INT_32)exp) >> 1 # define V_UNION_128_BIT_STORE \ v.B_UNSIGNED_HI_64 = ((U_INT_64)(U_INT_32)exp) >> 1; \ v.B_UNSIGNED_LO_64 = 0 #elif ((ARCHITECTURE == alpha) && defined(HAS_LOAD_WRONG_STORE_SIZE_PENALTY)) # define V_UNION_64_BIT_STORE \ v.B_UNSIGNED_HI_64 = ((U_WORD)exp) >> 1 # define V_UNION_128_BIT_STORE \ v.B_UNSIGNED_HI_64 = ((U_WORD)exp) >> 1; \ v.B_UNSIGNED_LO_64 = 0 #else # define V_UNION_64_BIT_STORE \ v.B_UNSIGNED_HI_64 = ((U_INT_64)(U_INT_32)exp) << 31 # define V_UNION_128_BIT_STORE \ v.B_UNSIGNED_HI_64 = ((U_INT_64)(U_INT_32)exp) << 31; \ v.B_UNSIGNED_LO_64 = 0 #endif /* ** The definitions of SQRT_COEF_STRUCT and D_SQRT_TABLE_NAME also ** appear in the generated .c file for the table. */ typedef struct { float a, b; double c; } SQRT_COEF_STRUCT; extern const SQRT_COEF_STRUCT D_SQRT_TABLE_NAME[(1<<(NUM_FRAC_BITS+1))]; /* ** SCALE_AND_DO_INDEXED_POLY_APPROX ** ** Inputs: ** x any number ** = f * 2^(2*i+j) ** where 1/2 <= f < 1, integer i and j, ** and j = 0 or 1 ** ignoring f <= 0 ** ** Outputs: ** half_scale = 2^(i-1) (SQRT, F_SQRT) ** ** flah_scale = 2^(1-i) (RSQRT) ** (the name is clear, albeit cute) ** ** scaled_x = f * 2^j ** so 1/2 <= scaled_x < 2 ** ** y ~= 1/sqrt(scaled_x) ** ** so sqrt(x) ~= y * scaled_x * 2 * half_scale ** and 1/sqrt(x) ~= y / (2 * half_scale) ** ** Temporaries: ** u, a, b, c, index */ #define SCALE_AND_DO_INDEXED_POLY_APPROX \ u.f = (B_TYPE)x; \ exp = u.B_HI_LS_INT_TYPE; \ B_COPY_SIGN_AND_EXP((B_TYPE)x, half, y); \ ASSERT( ((0.5 <= y) && (y < 1.0)) ); \ GET_SQRT_TABLE_INDEX(exp,index); \ b = (B_TYPE)D_SQRT_TABLE_NAME[index].b; \ b *= y; \ c = (B_TYPE)D_SQRT_TABLE_NAME[index].c; \ lo_exp_bit_and_hi_frac = exp & ~hi_exp_mask; \ u.B_HI_LS_INT_TYPE = (exp_of_one_half | lo_exp_bit_and_hi_frac); \ c += b; \ scaled_x = u.f; \ ASSERT( (((0.5 <= scaled_x) && (scaled_x < 2.0)) || (scaled_x < 0.0)) ); \ y *= y; \ a = (B_TYPE)D_SQRT_TABLE_NAME[index].a; \ SAVE_EXP(exp); \ IF_SQRT ({ \ exp ^= lo_exp_bit_and_hi_frac; \ exp += exp_of_one_half; \ }) \ IF_RSQRT({ \ exp ^= lo_exp_bit_and_hi_frac; \ exp = 3*exp_of_one_half - exp; \ }) \ y *= a; \ STORE_EXP_TO_V_UNION; \ y += c; \ IF_SQRT ( half_scale = v.f ); \ IF_RSQRT( flah_scale = v.f ); \ /* end of SCALE_AND_DO_INDEXED_POLY_APPROX */ /*----------------------------------------------------------------------------*/ /* Tuckerman's Rounding */ /*----------------------------------------------------------------------------*/ /* ** Tuckerman's rounding is used to compute the correctly rounded sqrt(x). ** It's 'good to the last bit', or more precisely 'to within 1/2 lsb(sqrt(x))'. ** This is a short proof of Tuckerman's rounding. ** ** Let z be a machine-precision approximation to sqrt(x); then z+lsb(z) is the ** smallest representable number larger than z (NB: z-lsb(z) is the largest ** representable number less than z, _except_ when z is a power of 2). ** Within this proof, let [] represent _truncation_ to machine precision, ** and {} represent _rounding_ to machine precision. ** ** Note that for _any_ y (not necessarily representable in machine precision), ** ** z + 1/2 lsb(z) <= y <==> z < {y}. ** ** For sqrt(x), we never have equality: ** z + 1/2 lsb(z) <= sqrt(x) ==> z + 1/2 lsb(z) < sqrt(x), ** because if they were equal, we'd have: ** (z + 1/2 lsb(z))^2 = x ** which is impossible, because to represent the left hand side requires more ** than twice the machine precision, while the right hand side is representable. ** ** Now the following statements are equivalent in turn: ** ** z < {sqrt(x)} ** z + 1/2 lsb(z) <= sqrt(x) ** z + 1/2 lsb(z) < sqrt(x) ** (z + 1/2 lsb(z))^2 < x ** z (z + 1/2 lsb(z)) < x (the reverse is proved below) ** [ z (z + 1/2 lsb(z)) ] < x. ** ** To complete the reverse of the third inference above, suppose it were false. ** Then: z (z + 1/2 lsb(z)) < x <= (z + 1/2 lsb(z))^2. The left hand side is ** some multiple of 1/2 lsb(z)^2. The right hand side is only larger by ** d = 1/4 lsb(z)^2, so [rhs] = [rhs-d] = [lhs]. But the inequality implies ** [lhs] < x <= [rhs], and we have a contradiction. ** ** In conclusion, ** z < {sqrt(x)} <==> [ z (z + 1/2 lsb(z)) ] < x. */ /* ** Here we cover another question: How closely must y approximate sqrt(x) to ** ensure {y} = {sqrt(x)}, where x is a representable number? We state without ** proof that the closest sqrt(x) approaches a value halfway between consecutive ** representable numbers occurs either when x is just larger than a power of 4, ** or just less than a power of 4. We have: ** ** sqrt(4^k*(1+lsb( 1 ))) = 2^k*(1 + lsb( 1 )/2 - lsb( 1 )^2/8 + ...), and ** sqrt(4^k*(1-lsb(1/2)) = 2^k*(1 - lsb(1/2)/2 - lsb(1/2)^2/8 - ...). ** ** So if |y - sqrt(x)| < lsb(sqrt(x))^2/8 - O(lsb^3), {y} = {sqrt(x)}. ** For our purposes, this means that 50-bit accuracy (barely) suffices to ** produce a correctly-rounded 24-bit result, since (2^(1-24))^2/8 = 2^(1-50). ** After our Newton's iteration, we have nearly 53-bit accuracy. All is well. */ /*----------------------------------------------------------------------------*/ /* Computing 'x+' and 'x-' */ /*----------------------------------------------------------------------------*/ /* ** For Tuckerman's rounding, we need to compute the (machine-)representable ** numbers just after and before a representable x: 'x+' = x + lsb(x) and ** 'x-' = x - lsb(x-lsb(x)). Letting '{}' denote rounding to machine precision, ** we compute these by: ** ** 'x+' = {x + {c x}} (1) ** 'x-' = {x - {c x}} (2) ** ** for some appropriate constant c, where neither x+{c x} nor x-{c x} are midway ** between two consecutive representable numbers. ** ** The weakest preconditions that satisfy the above are: ** ** 1/2 lsb(x) < {c x} < 3/2 lsb(x) (1a), when x != 2^n(1-lsb(1/2)) ** 1/2 lsb(x) < {c x} < 2 lsb(x) (1b), when x = 2^n(1-lsb(1/2)) ** 1/2 lsb(x) < {c x} < 3/2 lsb(x) (2a), when x != 2^n ** 1/4 lsb(x) < {c x} < 3/4 lsb(x) (2b), when x = 2^n ** ** For (1a), (1b), and (2a), we can take: ** ** 1/2 lsb(x)/x < c < 3/2 lsb(x)/x, which we can 'shrink' to simplify: ** 1/2 lsb(1)/1 < c < 3/2 lsb(1)/2 ** 1/2 lsb(1) < c < 3/4 lsb(1) ** ** For (2b), we require: ** ** 1/4 lsb(1) < c < 3/4 lsb(1) ** ** Thus, in any case, we can use any c in the range: ** ** 1/2 lsb(1) < c < 3/4 lsb(1) ** ** We choose the midpoint: ** ** c = 5/8 lsb(1) = 5/8 2^(1-p) = 5/4 2^(-p) ** ** FWIW: It's possibly to compute 'x-' by: 'x-' = {x * (1-lsb(1/2))}, ** but 'x+' isn't necessarily computed by: 'x+' = {x * (1+lsb(1))}. */ #if defined(SQRT) # if (F_PRECISION == 24) # define ULP_FACTOR (F_TYPE)7.450580596923828125e-8 # elif (F_PRECISION == 53) # define ULP_FACTOR (F_TYPE)1.387778780781445675529539585113525390625e-16 # elif (F_PRECISION == 56) # define ULP_FACTOR (F_TYPE)1.7347234759768070944119244813919067382813e-17 # elif (F_PRECISION == 113) # define ULP_FACTOR (F_TYPE)1.203706215242022408159986214115579574086314e-34 # else # define ULP_FACTOR (F_TYPE)1.25/(F_POW_2(F_PRECISION)) # endif #endif /*----------------------------------------------------------------------------*/ /* Newton's Iteration */ /*----------------------------------------------------------------------------*/ /* Newton's iteration for 1 / (nth root of x) is: y' = y + [ (1 - x * y^n) * y / n ] So, the iteration for 1 / sqrt(x) is: y' = y + [ (1 - x * y^2) * y * 0.5 ] If we want to do one iteration, multiply the result by x, and multiply the result by a scale factor we get: y' = scale * x * ( y + [ (1 - x * y^2) * y * 0.5 ] ) y' = scale * x * y * ( 1 + [ (1 - x * y^2) * 0.5 ] ) y' = scale/2 * x * y * ( 2 + [ (1 - x * y^2) ] ) gives about 5/4 lsb error y' = scale/2 * x * y * ( 3 - x * y^2 ) gives about 8/4 lsb error So iterate to get better 1/sqrt(x) and multiply by x to get sqrt(x). */ /* ** For quad precision, we need additional Newton's iterations. ** For lower precisions, the iteration (if needed) is embedded ** in the ITERATE_AND_MAYBE_CHECK_LAST_BIT macro. */ #if QUAD_PRECISION /* ** NEWTONS_ITERATION ** ** Inputs: ** scaled_x any number ** ignoring scaled_x <= 0 ** ** y ~= 1/sqrt(scaled_x) ** ** Outputs: ** y ~= 1/sqrt(scaled_x) ** y becomes a better approximation ** ** Temporaries: ** a, b, c */ # define NEWTONS_ITERATION \ a = y * scaled_x; \ b = a * y; \ b = one - b; \ b *= y; \ c = y + y; \ c += b; \ y = c * half #else # define NEWTONS_ITERATION #endif /*----------------------------------------------------------------------------*/ /* ITERATE_AND_MAYBE_CHECK_LAST_BIT */ /*----------------------------------------------------------------------------*/ #if 0 /* To make all arms 'elif's */ #elif FAST_SQRT && (F_PRECISION <= 24) /* Don't do a Newton's iteration */ # define ITERATE_AND_MAYBE_CHECK_LAST_BIT \ a = y * scaled_x; \ b = half_scale + half_scale; \ f_type_y = (F_TYPE)(a * b) # define RESULT f_type_y #elif RSQRT && (F_PRECISION <= 24) /* Don't do a Newton's iteration */ # define ITERATE_AND_MAYBE_CHECK_LAST_BIT \ b = flah_scale + flah_scale; \ f_type_y = (F_TYPE)(y * b) # define RESULT f_type_y #elif SQRT && (F_PRECISION <= 24) && (B_PRECISION < 2*F_PRECISION) /* This case is unlikely enough that we will worry about it when we need to (if ever). There is code in older versions of sqrt that does a tuckermans rounding on single prec values. */ # error "We need to worry about it now." #elif SQRT && (F_PRECISION <= 24) && (B_PRECISION >= 2*F_PRECISION) /* Make sure the last bit is correctly rounded by computing a double-precision result, and then rounding it to single. */ # define ITERATE_AND_MAYBE_CHECK_LAST_BIT \ a = y * scaled_x; \ b = a * y; \ c = a * half_scale; \ b = three - b; \ f_type_y = (F_TYPE)(c * b) # define RESULT f_type_y #elif RSQRT /* Do more accurate iteration (about 1 lsb error) */ # define ITERATE_AND_MAYBE_CHECK_LAST_BIT \ c = y * flah_scale; \ f_type_y = (F_TYPE)((c+c)+c*(one-scaled_x*(y*y))); # define RESULT f_type_y #elif RSQRT /* Do sloppy iteration (about 2 lsb error). y = (y * flah_scale) * (three - (y*scaled_x) * y) */ # define ITERATE_AND_MAYBE_CHECK_LAST_BIT \ a = y * scaled_x; \ b = a * y; \ c = y * flah_scale; \ b = three - b; \ y = c * b # define RESULT y #elif FAST_SQRT /* Do sloppy iteration (about 2 lsb error). y = ((y*scaled_x) * half_scale) * (three - (y*scaled_x) * y) */ # define ITERATE_AND_MAYBE_CHECK_LAST_BIT \ a = y * scaled_x; \ b = a * y; \ c = a * half_scale; \ b = three - b; \ y = c * b # define RESULT y #elif SQRT /* Do more accurate iteration and check last bit. [ NB: we compute ulp = 2*ULP_FACTOR*c, because y ~= 2*c.] */ # define DECLARE_old_mode U_WORD old_mode; # define DECLARE_ulp_stuff F_TYPE ulp, y_less_1_ulp, y_plus_1_ulp; # define ITERATE_AND_MAYBE_CHECK_LAST_BIT \ a = y * scaled_x; \ ulp = 2.0*ULP_FACTOR; \ b = a * y; \ c = a * half_scale; \ b = one - b; \ a = c + c; \ b = c * b; \ ulp *= c; \ y = a + b; \ y_less_1_ulp = y - ulp; \ ASSERT( y_less_1_ulp < y ); \ y_plus_1_ulp = y + ulp; \ ASSERT( y_plus_1_ulp > y ); \ ESTABLISH_ROUND_TO_ZERO(old_mode); \ F_MUL_CHOPPED(y, y_less_1_ulp, a); \ F_MUL_CHOPPED(y, y_plus_1_ulp, b); \ RESTORE_ROUNDING_MODE(old_mode); \ y = ((a >= x) ? y_less_1_ulp : y); \ y = ((b < x) ? y_plus_1_ulp : y); # define RESULT y #else error "Can't define ITERATE_AND_MAYBE_CHECK_LAST_BIT" #endif #ifndef DECLARE_old_mode #define DECLARE_old_mode #endif #ifndef DECLARE_ulp_stuff #define DECLARE_ulp_stuff #endif /*----------------------------------------------------------------------------*/ /* The Function Itself! */ /*----------------------------------------------------------------------------*/ F_TYPE F_ENTRY_NAME(F_TYPE x) { EXCEPTION_RECORD_DECLARATION B_UNION u, v; F_TYPE f_type_y; B_TYPE y, a, b, c; B_TYPE scaled_x; B_TYPE IF_SQRT (half_scale) IF_RSQRT(flah_scale); const B_TYPE half = (B_TYPE)0.5; const B_TYPE one = (B_TYPE)1.0; const B_TYPE three = (B_TYPE)3.0; DECLARE_old_mode DECLARE_ulp_stuff LS_INT_TYPE exp, save_exp; U_LS_INT_TYPE index; U_LS_INT_TYPE lo_exp_bit_and_hi_frac; U_LS_INT_TYPE hi_exp_mask = HI_EXP_BIT_MASK; U_LS_INT_TYPE exp_of_one_half = EXP_BITS_OF_ONE_HALF; #if defined(HAS_SQRT_INSTRUCTION) && ( FAST_SQRT || SQRT ) && ( SINGLE_PRECISION || DOUBLE_PRECISION ) u.f = (B_TYPE)x; save_exp = u.B_HI_LS_INT_TYPE; if INPUT_IS_ABNORMAL goto abnormal_input; F_HW_SQRT(x,RESULT); return RESULT; #else SCALE_AND_DO_INDEXED_POLY_APPROX; if INPUT_IS_ABNORMAL goto abnormal_input; NEWTONS_ITERATION; NEWTONS_ITERATION; ITERATE_AND_MAYBE_CHECK_LAST_BIT; return RESULT; #endif abnormal_input: #if VAX_FLOATING /* x is either 0 or negative */ if (x == (F_TYPE)0.0) { #if RSQRT GET_EXCEPTION_RESULT_1(RSQRT_OF_POS_ZERO, x, RESULT); #else RESULT = x; #endif } else { GET_EXCEPTION_RESULT_1(SQRT_OF_NEGATIVE, x, RESULT); } return RESULT; #elif (IEEE_FLOATING) F_CLASSIFY(x, index); switch (index) { case F_C_SIG_NAN: case F_C_QUIET_NAN: RESULT = x; return RESULT; break; #if RSQRT case F_C_POS_INF: RESULT = (F_TYPE)0.0; return RESULT; break; case F_C_POS_ZERO: GET_EXCEPTION_RESULT_1(RSQRT_OF_POS_ZERO, x, RESULT); return RESULT; break; case F_C_NEG_ZERO: GET_EXCEPTION_RESULT_1(RSQRT_OF_NEG_ZERO, x, RESULT); return RESULT; break; #else case F_C_POS_INF: case F_C_POS_ZERO: case F_C_NEG_ZERO: RESULT = x; return RESULT; break; #endif case F_C_NEG_INF: case F_C_NEG_NORM: case F_C_NEG_DENORM: GET_EXCEPTION_RESULT_1(SQRT_OF_NEGATIVE, x, RESULT); return RESULT; break; default: /* must be positive denorm */ F_MAKE_FLOAT( ((WORD) (2*F_PRECISION + 1) << F_EXP_POS), f_type_y); F_COPY_SIGN_AND_EXP(x, f_type_y, x); x -= f_type_y; #if defined(HAS_SQRT_INSTRUCTION) && ( FAST_SQRT || SQRT ) && ( SINGLE_PRECISION || DOUBLE_PRECISION ) F_HW_SQRT(x,RESULT); #else SCALE_AND_DO_INDEXED_POLY_APPROX; NEWTONS_ITERATION; NEWTONS_ITERATION; ITERATE_AND_MAYBE_CHECK_LAST_BIT; #endif /* Scale down again (up for RSQRT) */ IF_SQRT ( SUB_FROM_EXP_FIELD(RESULT, F_PRECISION) ); IF_RSQRT( ADD_TO_EXP_FIELD(RESULT, F_PRECISION) ); return RESULT; break; } #endif } /* sqrt */ /*----------------------------------------------------------------------------*/ /* MPHOC code to generate the table */ /*----------------------------------------------------------------------------*/ #if MAKE_INCLUDE #undef F_NAME_SUFFIX #define F_NAME_SUFFIX TABLE_SUFFIX @divert divertText /* ** Print header information. */ print; print "#include \"dpml_private.h\""; print; print "#define NUM_FRAC_BITS ", STR(NUM_FRAC_BITS); print; /* ** The definitions of SQRT_COEF_STRUCT and D_SQRT_TABLE_NAME also ** appear in the code. */ print "typedef struct {"; print " float a, b;"; print " double c;"; print "} SQRT_COEF_STRUCT;"; print; print "const SQRT_COEF_STRUCT D_SQRT_TABLE_NAME[(1<<(NUM_FRAC_BITS+1))] = {"; print; /* ** Generate and print the polynomial coefficients. */ function rsqrt_f(r) { return 1/sqrt(r); } precision = ceil( (D_PRECISION + 16)/MP_RADIX_BITS ); /* ** For each half fo the table, ... */ for (h = 1; h <= 2; h++) { xaa = 0.5; xbb = 1.0; xkk = 1.0/h; print; printf("/*\n**\t"); printf("a*x^2 + b*x + c"); printf(" ~= sqrt(%5r/x),\t\t%5r <= x < %5r", xkk, xaa, xbb); printf("\n*/\n"); for (i = 0; i < 2^NUM_FRAC_BITS; i++) { xa = xaa + (xbb-xaa) * i /2^NUM_FRAC_BITS; xb = xaa + (xbb-xaa) * (i+1)/2^NUM_FRAC_BITS; /* ** Determine a minimum-error quadratic approximation to ** sqrt(xkk/x) in the range xa <= x <= xb. (This doesn't ** minimize the error after a Newton's iteration; that'd ** require a weighting function of x^(1/4), a needless ** complication for this single-precision approximation). */ tol = S_PRECISION+2; flags = 0; err = remes(flags, xa, xb, rsqrt_f, tol, °ree, &rsqrt_c); if (degree != 2) print("*** degree = %i\n", degree); for (j = 0; j <= degree; j++) rsqrt_c[j] = rsqrt_c[j] * sqrt(xkk); /* ** Now round the x^2 and x coefficients to single precision, ** by subtracting Chebyshev polynomials. The additional error ** is negligible (less than 3%; e.g., if the polynomial was good to ** 27 bits, it's degraded to only 27-log2(1.03) = 26.96 bits). ** ** The algebra is simplified by expressing the range xa..xb in terms of ** the range's midpoint and radius. */ xm = (xb + xa)/2; xr = (xb - xa)/2; z = xm / xr; /* ** The Chebyshev polynomials we subtract are multiples of: ** ** w <-> (x-xm)/xr ** 1-2*w^2 <-> 1-2*((x-xm)/xr)^2 ** ** The x terms are collected, scaled (by t), and subtracted from the ** polynomial coefficients. ** ** First we subtract (a multiple of) the 2nd degree Chebyshev polynomial ** to produce a new polynomial with the desired (representable in single ** precision) 2nd degree polynomial coefficient. This minimizes the ** maximum absolute error between the 'Remes' polynomial and the new ** polynomial (since the difference is a Chebyshev polynomial, which ** has the 'equal ripple' property). ** ** Then we subtract (a multiple of) the 1st degree Chebyshev polynomial ** to produce a new polynomial with the desired (representable in single ** precision) 1st degree coefficient. This minimizes the maximum ** absolute error between the previous polynomial and the newer one ** (under the constraints of having the same 2nd degree coefficient, ** and the desired 1st degree coefficient). The 0th degree coefficient ** is rounded to double precision (somebody's got to!), and this has ** no significant effect on the single precision result. ** ** Is the resulting polynomial optimal? Nope; nobody claims it is. ** Is it 'best' in some sense? Yes -- the theory is clear and the code ** is short (disregarding this phillipic). Is it close enough? Yep. ** Why? That's a good question.... ** ** To see why this works, consider the polynomial for 1/sqrt(x) for ** 1 <= x < 1+2^-7, ** ** 0.37... x^2 + -1.24... x + 1.87... ** ** Simply rounding the x coefficient to 24 bits may corrupt the result ** of the polynomial by as much as (1+2^-7) * 0.5*s_lsb(1.24), where ** s_lsb(z) = 2^floor(log2(|z|) + 1 - 24) is the value of z's least ** significant bit when z is expressed in single precision. This is ** as much as 2^-24, which is 2*s_lsb(1/sqrt(x)) -- two single-precision ** lsb of the result! Rounding the x^2 coefficient has similar effects, ** affecting the result by 1/2 single-precision lsb. We can do better. ** ** If rounding increases the x coefficient by t, |t| <= 0.5*lsb(1.24), ** the corruption can be partly compensated by adjusting the constant ** coefficient, decreasing it by (for example) t*(1 + 1+2^-7)/2. ** The corruption is then: ** ** t*( x - (1+1+2^-7)/2 ) ** ** Since 1 <= x < 1+2^-7, and |t| <= 0.5*lsb(1.24), we have: ** ** | t*( x - (1+1+2^-7)/2 ) | <= 0.5*lsb(1.24) * 2^-8 = 2^(-24 -8) ** ** which is only 0.0078125*s_lsb(1/sqrt(x)) -- a factor of 256 smaller ** than the corruption from simply rounding the x coefficient. ** ** To minimize the (absolute value of the) maximum corruption, we add ** a multiple of a Chebyshev polynomial, for the particular range of x, ** because Chebyshev polynomials are 'minimax' (or 'equal ripple') ** polynomials. ** For the range -1 <= w <= 1, the Chebyshev polynomials are: ** ** 1, w, 2*w^2-1, 4*w^3-3*w, .... ** ** To convert these to polynomials in x for the range a <= x <= b, ** substitute (x-m)/r, with m = (b+a)/2, r = (b-a)/2, and z = m/r. ** The Chebyshev polynomials become: ** ** 1, x/r - z, 2*(x/r)^2 - 4*z*(x/r) + 2*z^2-1, ** 4*(x/r)^3 - 12*z*(x/r)^2 + (12*z^2-3)*(x/r) - 4*z^3+3*z, .... ** ** For 1 <= x < 1+2^-7, these are: ** ** 1, 2^8*x - (2^8+1), 2^17*x^2 - (2^18+2^10)*x + (2^17+2^10+1), ** 2^26*x^3 - 3*(2^26+2^18)*x^2 + 3*(2^26+2^19+3*2^8)*x ** - (2^26+3*2^18+2^11+2^8+1), .... ** ** Each of these are 'equal ripple', oscillating between +/-1. We see ** our previous adjustment, ( x - (1+1+2^-7)/2 ), appear here with a ** factor of 2^8. Scaling it by t*2^-8 gives our previous result; this ** scaling also reduces the 'ripple' to +/-t*2^-8. ** ** When we use the 2nd degree Chebyshev polynomial to round the 2nd ** degree coefficient to single precision, we must scale the polynomial ** by a factor of t*2^-17, where here |t| <= 0.5*lsb(0.37). This means ** that the effect of this corruption, the size of the 'ripple', is less ** than 0.5*lsb(0.37)*2^-17 = 2^-43, or 2^-18*s_lsb(1/sqrt(x)). This is ** far better than the the 1/2 lsb we got when we simply rounded the x^2 ** coefficient. ** ** Can this technique be applied to other polynomial coefficients? ** It is an invention of my own conception developed outside the term ** of my contract, and for which I've received no compensation. */ t = rsqrt_c[2] - bround(rsqrt_c[2], S_PRECISION); rsqrt_c[2] = rsqrt_c[2] - t; rsqrt_c[1] = rsqrt_c[1] + t * 2*z * xr; rsqrt_c[0] = rsqrt_c[0] + t * (0.5-z^2) * xr^2; t = rsqrt_c[1] - bround(rsqrt_c[1], S_PRECISION); rsqrt_c[2] = rsqrt_c[2]; rsqrt_c[1] = rsqrt_c[1] - t; rsqrt_c[0] = rsqrt_c[0] + t * z * xr; t = rsqrt_c[0] - bround(rsqrt_c[1], D_PRECISION); printf("{\t%.10r,\t%.10r,\t%.20r\t},\n", rsqrt_c[2], rsqrt_c[1], rsqrt_c[0]); } } /* ** Print the trailer. */ print; print "};"; print; @end_divert @eval my $outText = MphocEval( GetStream( "divertText" ) ); \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Double precision square root table", __FILE__); \ print "$headerText\n\n$outText"; #endif /* MAKE_INCLUDE */ /*----------------------------------------------------------------------------*/ /* Testing */ /*----------------------------------------------------------------------------*/ #if MAKE_MTC @divert > dpml_sqrt.mtc build default = "sqrt.a"; function SINGLE_SQRT = F_CHAR F_SQRT_NAME(F_CHAR.v.r); function FAST_SINGLE_SQRT = F_CHAR F_FAST_SQRT_NAME(F_CHAR.v.r); function DOUBLE_SQRT = B_CHAR B_SQRT_NAME(B_CHAR.v.r); function FAST_DOUBLE_SQRT = B_CHAR B_FAST_SQRT_NAME(B_CHAR.v.r); function MP_SQRT = void mp_sqrt(m.r.r, m.r.w); type SQRT_ACCURACY = accuracy error = lsb; stats = max; points = 1024; ; domain SINGLE_SQRT_DENORMS = { [ 0.0 , 1e-37 ]:uniform:10001 } ; domain DOUBLE_SQRT_DENORMS = { [ 0.0 , 1e-307 ]:uniform:10001 } ; domain SINGLE_SQRT_ACCURACY = { [ 0.0 , 17.0 ]:uniform:100001 } ; domain DOUBLE_SQRT_ACCURACY = { [ 0.0 , 17.0 ]:uniform:100001 } ; domain SQRT_KEYPOINTS = lsb = 0.5; { 2.0 | der } { 5.0 | der } { 10.0 | der } lsb = 0.5; { MTC_POS_TINY | der } { MTC_POS_HUGE | der } { 0.0 | 0.0 } { 1.0 | 1.0 } { MTC_NEG_ZERO | MTC_NEG_ZERO } { MTC_POS_INFINITY | MTC_POS_INFINITY } { MTC_NAN | MTC_NAN } ; domain FAST_SINGLE_SQRT_KEYPOINTS = lsb = 1.0; { 2.0 | der } { 5.0 | der } { 10.0 | der } lsb = 1.0; { MTC_POS_TINY | der } { MTC_POS_HUGE | der } { 0.0 | 0.0 } { 1.0 | 1.0 } { MTC_NEG_ZERO | MTC_NEG_ZERO } { MTC_POS_INFINITY | MTC_POS_INFINITY } { MTC_NAN | MTC_NAN } ; domain FAST_DOUBLE_SQRT_KEYPOINTS = lsb = 2.0; { 2.0 | der } { 5.0 | der } { 10.0 | der } lsb = 2.0; { MTC_POS_TINY | der } { MTC_POS_HUGE | der } { 0.0 | 0.0 } { 1.0 | 1.0 } { MTC_NEG_ZERO | MTC_NEG_ZERO } { MTC_POS_INFINITY | MTC_POS_INFINITY } { MTC_NAN | MTC_NAN } ; test sqrt_acc_sd = type = SQRT_ACCURACY; domain = SINGLE_SQRT_ACCURACY; function = SINGLE_SQRT; comparison_function = FAST_DOUBLE_SQRT; output = file = "sqrt_acc_sd.out"; ; ; test sqrt_denorm_acc_sd = type = SQRT_ACCURACY; domain = SINGLE_SQRT_DENORMS; function = SINGLE_SQRT; comparison_function = FAST_DOUBLE_SQRT; output = file = "sqrt_denorm_acc_sd.out"; ; ; test fast_sqrt_acc_sd = type = SQRT_ACCURACY; domain = SINGLE_SQRT_ACCURACY; function = FAST_SINGLE_SQRT; comparison_function = FAST_DOUBLE_SQRT; output = file = "fast_sqrt_acc_sd.out"; ; ; test sqrt_acc_dm = type = SQRT_ACCURACY; domain = DOUBLE_SQRT_ACCURACY; function = DOUBLE_SQRT; comparison_function = MP_SQRT; output = file = "sqrt_acc_dm.out"; ; ; test sqrt_denorm_acc_dm = type = SQRT_ACCURACY; domain = DOUBLE_SQRT_DENORMS; function = DOUBLE_SQRT; comparison_function = MP_SQRT; output = file = "sqrt_denorm_acc_dm.out"; ; ; test fast_sqrt_acc_dm = type = SQRT_ACCURACY; domain = DOUBLE_SQRT_ACCURACY; function = FAST_DOUBLE_SQRT; comparison_function = MP_SQRT; output = file = "fast_sqrt_acc_dm.out"; ; ; test sqrt_key_sd = type = key_point; domain = SQRT_KEYPOINTS; function = SINGLE_SQRT; comparison_function = DOUBLE_SQRT; output = file = "sqrt_key_sd.out" ; style = verbose; ; ; test sqrt_key_dm = type = key_point; domain = SQRT_KEYPOINTS; function = DOUBLE_SQRT; comparison_function = MP_SQRT; output = file = "sqrt_key_dm.out" ; style = verbose; ; ; test fast_sqrt_key_sd = type = key_point; domain = FAST_SINGLE_SQRT_KEYPOINTS; function = FAST_SINGLE_SQRT; comparison_function = FAST_DOUBLE_SQRT; output = file = "fast_sqrt_key_sd.out" ; style = verbose; ; ; test fast_sqrt_key_dm = type = key_point; domain = FAST_DOUBLE_SQRT_KEYPOINTS; function = FAST_DOUBLE_SQRT; comparison_function = MP_SQRT; output = file = "fast_sqrt_key_dm.out" ; style = verbose; ; ; @end_divert #endif /* MAKE_MTC */ LIBRARY/float128/dpml_ux_erf.c0000644€­ Q01134020000004764015113665770015072 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BASE_NAME erf #include "dpml_ux.h" #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif /* ** BASIC DESIGN ** ------------ ** ** The erf/erfc design is based on the following identities: ** ** 2*x __inf (-x^2)^k ** erf(x) = -------- > -------- (1) ** sqrt(pi) /__0 (k+1)*k! ** ** erfc(x) = 1 - erf(x) (2) ** ** exp(-x^2) __inf (2k)! ** erfc(x) ~ ---------- > ------------- (3) ** x*sqrt(pi) /__0 k!*(-4*x^2)^k ** ** exp(-x^2) / 1 1/2 2/2 3/2 \ ** erfc(x) = --------- | --- --- --- --- ... | (4) ** sqrt(pi) \ x + x + x + x + / ** ** ** The domain of the two functions is divided into 8 subintervals, symmetrically ** placed around 0. For each subinterval, the general approach is to perform ** some primary evaluation and then adjust its sign and add or subtract a ** constant. ** ** On the first subinterval, from 0 to 1, the primary evaluation is a rational ** approximation to erf(x) of the form x*R(x^2), based on (1). It should be ** noted here that the upper bound of this interval could be taken as large as ** 2 and still have the terms of R(x^2) be decreasing. However, as the upper ** limit increases past 1, loss of significance when computing 1 - erf(x) ** becomes a problem, so we take the upper limit of the first interval a 1 ** because it simplifies the interval determination logic. ** ** The second subinterval spans 1 to A, where A is chosen so that if x >= A, the ** correctly rounded value of erf(x) is 1. On this subinterval, the primary ** evaluation is an approximation to erfc(x), of the form exp(-x*x)*S(x), where ** S(x) is a rational approximation based on (4). ** ** The third subinterval spans A to B, where B is chosen so that if x >= B, then ** erfc(x) underflows. On this subinterval, the primary evaluation is an ** approximation to erfc(x) of the form exp(-x*x)*T(1/x^2)/x, where T(1/x^2) ** is a rational approximation based on (3). ** ** The actual values of A and B are somewhat arbitrary. For this design we take ** B = 128, since that choice helps simplify the determination of the intervals. ** A is chosen to be 8.75. The reason for this choice of A is that: ** ** o it meets the requirement that x >= A ==> erf(x) = 1, ** o A has very few significant bits, so its fraction can be represented ** in one word ** o For this choice of A or larger, the terms in T(1/x^2) decrease */ #define HI_WORD_OF_8_PT_75 0x8c00000000000000ull /* ** ** IMPLEMENTATION STRATEGY ** ----------------------- ** ** Based on the above definitions and equation (2) we can construct table 1 ** which shows how erf(x) and erfc(x) are computed based on which interval ** they lie in. In the table we refer to the primary evaluations in the first, ** second and third subintervals as ERF(x), MID(x) and ERFC(x) respectively. ** ** ** Sub-Interval Index erf(x) erfc(x) ** ------------ ----- ----------- ------------ ** (-Inf, -128] 7 -1 2 ** (-128, -8.75] 6 -1 2 ** [-8.75, -1) 5 -1 + MID(|x|) 2 - MID(|x|) ** (-1, 0) 4 0 - ERF(|x|) 1 + ERF(|x|) ** ( 0, 1) 0 0 + ERF(|x|) 1 - ERF(|x|) ** [ 1, 8.75] 1 1 - MID(|x|) 0 + MID(x) ** ( 8.75, 128] 2 1 0 + ERFC(|x|) ** ( 128, +Inf] 3 1 underflow ** ** Table 1 ** ------- ** ** Ignoring for the time being, that underflows may need to be signaled, the ** evaluation scheme for each subinterval, for both functions, is of the form: ** ** c + t*F(x) (5) ** where ** ** o t is +/-1 ** o c is -1, 0, 1 or 2 ** o F(x) is ERF(x), MID(x), ERFC(x), UNDERFLOW(x) or 0 ** ** Based on the above, we implement erf and erfc as calls into a common ** evaluation routine, C_UX_ERF, that determines the interval the argument ** lies in and then dispatches to the appropriate evaluation code. ** ** ** MAPPING INTERVALS TO EVALUATIONS ** -------------------------------- ** ** The mapping from interval to evaluation function can be done via a switch ** statement on the interval. The cases for ERFC(x) and UNDERFLOW need to check ** for whether an erf(x) or erfc(x) evaluation is being performed. ** ** The selection of the constants, c can be accomplished by encoding the ** appropriate values of c for erfc(x) in a "bit string" that can be indexed ** by the interval number. Actually, rather then encoding the constants ** themselves we encode the index into an unpacked constant table. Letting ** the index for c = -1, 0, 1 and 2 be c + 1 (i.e the indices 0, 1, 2 and ** 3 correspond to the constants -1, 0, 1 and 2), we can create two integers, ** defined by: ** ** 1 1 1 ** 4 2 0 8 6 4 2 0: bit position ** +---+---+---+---+---+---+---+---+ ** erfc: | 3 | 3 | 3 | 2 | 1 | 1 | 1 | 2 | ** +---+---+---+---+---+---+---+---+ ** +---+---+---+---+---+---+---+---+ ** erf: | 0 | 0 | 0 | 1 | 2 | 2 | 2 | 1 | ** +---+---+---+---+---+---+---+---+ ** ** that map indices of the constants to the intervals. Note that given one of ** the above integers, we can determine if an erf or erfc evaluation is being ** performed by looking at the low bit. */ #define MAP_BIT_WIDTH 0x2 #define MAP_MASK MAKE_MASK(MAP_BIT_WIDTH, 0) #define MAP_IT(a,b,c,s) \ ((a << (7*MAP_BIT_WIDTH)) | \ (a << (6*MAP_BIT_WIDTH)) | \ (a << (5*MAP_BIT_WIDTH)) | \ (b << (4*MAP_BIT_WIDTH)) | \ (c << (3*MAP_BIT_WIDTH)) | \ (c << (2*MAP_BIT_WIDTH)) | \ (c << (1*MAP_BIT_WIDTH)) | \ (b << (0*MAP_BIT_WIDTH)) | \ s) #define ERFC_INTERVAL_TO_CONSTANT_MAP MAP_IT(3, 2, 1, UX_SIGN_BIT) #define ERF_INTERVAL_TO_CONSTANT_MAP MAP_IT(0, 1, 2, 0) #define IS_ERF_EVALUATION(i) (i & 1) #define IS_ERFC_EVALUATION(i) ((i & 1) == 0) #define INTERVAL(i) i /* ** CALCULATING MID(x) ** ------------------- ** ** The rational expression that needs to be evaluated for mid(x) is particularly ** ill behaved from the point of view of the general unpacked rational ** evaluation routine. So ill behaved in fact, that the general routine can ** not be used for the evaluation. The problem is that over the range ** [1, 8.75), the evaluation cannot be formulated in such a way that the ** terms decrease in magnitude and at the same time have the argument be less ** that 1 is absolute value. Since this is the evaluation in the math library ** that has these characteristics, the special evaluation code for this case ** is included here. ** ** The solution to the problem is to use a special (less efficient) packed format for ** the evaluation. See dpml_ux_ops.c for at description of the format. */ /* ** C_UX_ERF is the common erf/erfc evaluation routine */ #if !defined(C_UX_ERF) # define C_UX_ERF __INTERNAL_NAME(C_ux_erf__) #endif static void C_UX_ERF( _X_FLOAT * packed_argument, U_WORD interval_to_constant_map, _X_FLOAT * packed_result OPT_EXCEPTION_INFO_DECLARATION ) { WORD fp_class, index; WORD const * class_to_action_map; UX_SIGN_TYPE sign; UX_EXPONENT_TYPE exponent; UX_FLOAT unpacked_argument, tmp[3], *eval_result; fp_class = UNPACK( packed_argument, &unpacked_argument, IS_ERF_EVALUATION(interval_to_constant_map) ? ERF_CLASS_TO_ACTION_MAP : ERFC_CLASS_TO_ACTION_MAP, packed_result OPT_EXCEPTION_INFO_ARGUMENT); if (0 > fp_class) return; /* Determine interval */ exponent = G_UX_EXPONENT(&unpacked_argument); if (exponent < 4) index = (exponent <= 0) ? 0 : 1; else if (exponent > 4) index = (exponent < 8) ? 2 : 3; else index = (G_UX_MSD(&unpacked_argument) < HI_WORD_OF_8_PT_75) ? 1 : 2; index += G_UX_SIGN(&unpacked_argument) ? 4 : 0; P_UX_SIGN(&unpacked_argument, 0); /* ** Branch to appropriate action code. */ sign = UX_SIGN_BIT & interval_to_constant_map; eval_result = & tmp[0]; switch (index) { case INTERVAL(4): sign ^= UX_SIGN_BIT; /* Fall through */ case INTERVAL(0): EVALUATE_RATIONAL( &unpacked_argument, ERF_COEF_ARRAY, ERF_COEF_ARRAY_DEGREE, NUMERATOR_FLAGS(SQUARE_TERM | POST_MULTIPLY) | DENOMINATOR_FLAGS(SQUARE_TERM), eval_result); break; case INTERVAL(1): sign ^= UX_SIGN_BIT; /* Fall through */ case INTERVAL(5): EVALUATE_PACKED_POLY( &unpacked_argument, MID_NUM_COEF_ARRAY_DEGREE, MID_NUM_COEF_ARRAY, MID_NUM_SCALE_MASK, MID_NUM_SCALE_BIAS, &tmp[1]); EVALUATE_PACKED_POLY( &unpacked_argument, MID_DEN_COEF_ARRAY_DEGREE, MID_DEN_COEF_ARRAY, MID_DEN_SCALE_MASK, MID_DEN_SCALE_BIAS, &tmp[2]); DIVIDE(&tmp[1], &tmp[2], FULL_PRECISION, eval_result); goto multiply_by_exp_m_x_sqr; break; case INTERVAL(2): if (IS_ERF_EVALUATION(interval_to_constant_map)) goto default_label; /* Compute z*T(z^2) for z = 8/x */ sign = 0; DIVIDE( NOT_USED, &unpacked_argument, FULL_PRECISION, &tmp[2]); EVALUATE_RATIONAL( &tmp[2], ERFC_COEF_ARRAY, ERFC_COEF_ARRAY_DEGREE, NUMERATOR_FLAGS(SQUARE_TERM | POST_MULTIPLY) | DENOMINATOR_FLAGS(SQUARE_TERM) | P_SCALE(3), eval_result); /* Fall through */ multiply_by_exp_m_x_sqr: /* ** In order to avoid excessive errors in the final result, we ** compute exp(-x^2) as ** ** exp(-x^2) = exp(-(hi + lo)) ** = exp(-hi)*exp(-lo) ** ~ exp(-hi)*(1 - lo) ** = exp(-hi) - lo*exp(-hi) */ EXTENDED_MULTIPLY(&unpacked_argument, &unpacked_argument, &tmp[1], &tmp[2]); P_UX_SIGN( &tmp[1], UX_SIGN_BIT); UX_EXP( &tmp[1], &tmp[1]); MULTIPLY(&tmp[2], &tmp[1], &tmp[2]); ADDSUB(&tmp[1], &tmp[2], SUB | NO_NORMALIZATION, &tmp[1]); MULTIPLY(&tmp[1], eval_result, eval_result); break; case INTERVAL(3): if (IS_ERFC_EVALUATION(interval_to_constant_map)) { /* Dummy up underflow result and "zero" index */ UX_SET_SIGN_EXP_MSD(&tmp[0], 0, UX_UNDERFLOW_EXPONENT, UX_MSB); break; } /* Fall through */ default: default_label: eval_result = UX_ZERO; break; } /* Adjust sign of the evaluation and add in constant */ P_UX_SIGN(&tmp[0], sign); index = (interval_to_constant_map >> (MAP_BIT_WIDTH*index)) & MAP_MASK; WORD_TO_UX(index - 1, &tmp[1]); ADDSUB(eval_result, &tmp[1], ADD | NO_NORMALIZATION, &tmp[0]); PACK( &tmp[0], packed_result, ERFC_UNDERFLOW, NOT_USED OPT_EXCEPTION_INFO_ARGUMENT); } /* ** The following two entry points implement erfl and erfcl by calling the ** C_UX_ERF routine with the appropriate parameters */ #undef F_ENTRY_NAME #define F_ENTRY_NAME F_ERF_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_ERF( PASS_ARG_X_FLOAT(packed_argument), ERF_INTERVAL_TO_CONSTANT_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_ERFC_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_ERF( PASS_ARG_X_FLOAT(packed_argument), ERFC_INTERVAL_TO_CONSTANT_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO); RETURN_X_FLOAT(packed_result); } #if defined(MAKE_INCLUDE) @divert -append divertText precision = ceil(UX_PRECISION/8) + 4; # undef TABLE_NAME START_TABLE; TABLE_COMMENT("erf class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "ERF_CLASS_TO_ACTION_MAP\t"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_NEGATIVE, 1) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); PRINT_U_TBL_ITEM( /* data 1 */ ONE ); TABLE_COMMENT("erfc class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "ERFC_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 3) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 2) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 2) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 2) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 2) ); PRINT_U_TBL_ITEM( /* data 1 */ ZERO ); PRINT_U_TBL_ITEM( /* data 2 */ ONE ); PRINT_U_TBL_ITEM( /* data 3 */ TWO ); TABLE_COMMENT("unpacked 0 constant"); PRINT_UX_TBL_ADEF_ITEM( "UX_ZERO\t\t\t", 0); /* ** The remaining mphoc computes the coefficients for the various rational ** evaluations. The erf/erfc approximations are rather difficult to ** compute and consequently the Remes algorithm requires a long time to ** converge. In order to speed up the process for the normal case, we ** compute rational approximation of specific degrees, rather than using ** the REMES_FIND_RATIONAL option. */ # if UX_PRECISION != 128 # error "Rational coefficient degrees may be invalid for this precision" # endif /* ** Generate coefficients for erf(x) evaluation on [0,1) */ zero_value = 2/sqrt(pi); function __erf(x) { if (x == 0) return zero_value; else return erf(x)/x; } save_precision = precision; precision = ceil(UX_PRECISION/8) + 8; max_arg = 1; num_degree = 10; den_degree = 10; TABLE_COMMENT("Fixed point coefficients for erf(x) evaluation"); remes(REMES_STATIC + REMES_RELATIVE_WEIGHT + REMES_SQUARE_ARG, 0, max_arg, __erf, num_degree, den_degree, &ux_rational_coefs); precision = save_precision; PRINT_FIXED_128_TBL_ADEF("ERF_COEF_ARRAY\t\t"); degree = print_ux_rational_coefs(num_degree, den_degree, 0); PRINT_WORD_DEF("ERF_COEF_ARRAY_DEGREE\t", degree); /* ** Generate coefficients for erfc(x) evaluation on [8.75, 128) */ zero_value = 1/sqrt(pi); function __erfc(z) { auto x; if (z == 0) return zero_value; x = 8/z; return exp(x*x)*x*erfc(x); } save_precision = precision; precision = ceil(UX_PRECISION/8) + 8; min_arg = 0; max_arg = 8/8.75; num_degree = 10; den_degree = 10; TABLE_COMMENT("Fixed point coefficients for erfc(x) evaluation"); remes(REMES_STATIC + REMES_RELATIVE_WEIGHT + REMES_SQUARE_ARG, min_arg, max_arg, __erfc, num_degree, den_degree, &ux_rational_coefs); precision = save_precision; PRINT_FIXED_128_TBL_ADEF("ERFC_COEF_ARRAY\t\t"); degree = print_ux_rational_coefs(num_degree, den_degree, -3); PRINT_WORD_DEF("ERFC_COEF_ARRAY_DEGREE\t", degree); /* ** Generate coefficients for mid(x) evaluation on [1,8.75). */ function __mid(x) { return exp(x*x)*erfc(x); } save_precision = precision; precision = ceil(UX_PRECISION/8) + 8; min_arg = 1; max_arg = 8.75; num_degree = 16; den_degree = 17; remes(REMES_STATIC + REMES_RELATIVE_WEIGHT + REMES_LINEAR_ARG + REMES_INIT_LEFT_CHEBY, min_arg, max_arg, __mid, num_degree, den_degree, &ux_rational_coefs); precision = save_precision; /* ** Now convert numerator and denominator to "packed" form and print them out */ procedure cvt_and_print_packed(degree, base_index) { find_exponent_width_and_bias(degree, base_index); cvt_to_packed(degree, base_index, packed_exponent_width, packed_exponent_bias); print_packed(degree, base_index); } TABLE_COMMENT("Packed coefficients for mid numerator evaluation"); PRINT_FIXED_128_TBL_ADEF("MID_NUM_COEF_ARRAY\t"); PRINT_WORD_DEF("MID_NUM_COEF_ARRAY_DEGREE", num_degree); cvt_and_print_packed(num_degree, 0); PRINT_WORD_DEF("MID_NUM_SCALE_BIAS\t", packed_exponent_bias); PRINT_WORD_DEF("MID_NUM_SCALE_MASK\t", (1 << packed_exponent_width) - 1); TABLE_COMMENT("Packed coefficients for mid denominator evaluation"); PRINT_FIXED_128_TBL_ADEF("MID_DEN_COEF_ARRAY\t"); PRINT_WORD_DEF("MID_DEN_COEF_ARRAY_DEGREE", den_degree); cvt_and_print_packed(den_degree, num_degree + 1); PRINT_WORD_DEF("MID_DEN_SCALE_BIAS\t", packed_exponent_bias); PRINT_WORD_DEF("MID_DEN_SCALE_MASK\t", (1 << packed_exponent_width) - 1); END_TABLE; @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ $outText = "$tableText\n\n$defineText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants erf and erfc", \ __FILE__ ); \ print "$headerText\n\n$outText\n"; #endif LIBRARY/float128/dpml_cbrt.c0000644€­ Q01134020000007065215113665770014533 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define MAKE_COMMON 1 #if !defined(BUILD_FILE_NAME) # define BUILD_FILE_NAME CBRT_BUILD_FILE_NAME #endif #if !defined(TMP_FILE) # define TMP_FILE ADD_EXTENSION(BUILD_FILE_NAME,tmp) #endif #define NEW_DPML_MACROS 1 #include "dpml_private.h" #if !defined(F_ENTRY_NAME) # define F_ENTRY_NAME F_CBRT_NAME #endif #if !defined( BASE_NAME) # define BASE_NAME CBRT_BASE_NAME #endif #if !defined(CBRT_BUILD_FILE_NAME) # define CBRT_BUILD_FILE_NAME __D_TABLE_FILE_NAME(CBRT_BASE_NAME) #endif #if !defined(CBRT_TABLE_NAME) # define CBRT_TABLE_NAME __D_TABLE_NAME(CBRT_BASE_NAME) #endif /* * The algorithms used for the cbrt function are detailed in the X_FLOAT_NOTES * file (notes 18.*). * * The basic approach is to factor the input x into f * 2^n, where * 1 <= f < 2 and n = 3*m + i, where i = 0, 1, or 2. Then * * cbrt(x) = cbrt(2^n * f) * = cbrt(2^(3*m+i) * f) * = 2^m * cbrt(2^i) * cbrt(f). * * To get cbrt(f), we do a poly approx y = P(f), and then enough Newton's * iterations to get the required accuracy. We fetch 2^(i/3) from a table * and multiply the result; then add m to the final exponent and adjust the * final sign. * * The generated file contains the poly coefficients and a small table of * the roots, 2^(i/3), in full double precision and in lo parts (the short * hi part can be computed when the code executes). * The generated file also contains a few other constants, and some #defines. * * An optimization: instead of fetching 2^(i/3) as a floating point number * and multiplying right away, we can fetch it into an integer register; * add (sign + m) to its sign/exponent field; and then move * it to a floating point register. On pipelined machines, this integer * manipulation is done in parallel with the polynomial and/or Newton's * iteration, so has "zero cost". On sequential machines, these steps * have to be done at some point in time anyway. * * * Single precision is implemented by computing a 9th degree double precision * poly approx of cbrt(f). The poly is good to about 30 bits, so we don't * need any Newton's iterations. We fetch the full-precision double * precision floating point number 2^(i/3) from the table, put it in an * integer variable, adjust its exponent and sign, move it to a floating * point variable, multiply times the poly approx, and round back to * single precision. * * * Double and quad precision need to do Newton's iteration(s) after the * poly approx. There are many choices of Newton's iterations for cbrt, * with varying convergence. Three interesting candidates with cubic * convergence are: * * A: y' = y - (y/2) * (y^3 - f) where y = P(f) ~ f^(1/3) * --------- * (y^3 + f/2) * * * B: y' = y - f * z^3 * (y^3 - f) * (z*f + 7*y - 5* z^2 * y^2 *f) * 1/9 * * where y = P(f) ~ f^(1/3) and z = Q(f) ~ f^(-2/3) * * * C: y' = z * f * (14 - 7 * z^3 * f^2 + 2 * z^6 * f^4 ) * 1/9 * * where y ~ f^(1/3) and z ~ f^(-2/3) as above. * * * The first Newton's iteration (A) comes from y' = y - f(y)/f'(y), * where f(y) = y^2 - x/y maps out the curve y^3 = x. It has cubic * convergence: the number of "good" bits in y' is 3*n, where * n = number of "good" bits we started with. The initial approximation * y = P(f) approximates f^(1/3). The numerator y^3 - f can suffer * massive cancellation error; we'd have to compute it in extra precision. * * The second Newton's iteration (B) is a variation on A. It has the same * "residual" y^3 - f, and has some extra factors that force the convergence * to be cubic (replace y with y*(1 + eps); the rapidity of convergence * depends on which powers of eps drop out). In this case the number of * "good" bits in y' is 3*n - 2. This form of Newton's iteration needs two * initial approximations: y = P(f) approximating f^(1/3) and * z = Q(f) approximating f^(-2/3) - but we can get y from z by multiplying * z * f. * * The third Newton's iteration (C) is also a variation on A. It has cubic * convergence. It has no divide, and also has no "residual". The error * is not small enough to use for double precision, but it is sufficient for * a quick (40 bit) approximation for quad precision. * * * All three Newton's iterations have to be scaled by 2^(i/3). We compute * the residual y^3 - f in A and B very carefully to avoid cancellation: * shorten y so that y*y is exact and a little short * split the shortened y into hi and lo parts so that (y*y)*y_hi is * also exact; * y approximates f^1/3, so (y*y)*y_hi - f is exact; * then the residual * y^3 - f ~ ((y*y)*y_hi - f) - (y*y)*y_lo * Since C doesn't use the residual, there's no need to shorten or split y. * * The first Newton's iteration has a divide, which is slow on Alpha (but * not too bad in X_FLOAT). The second Newton's iteration has no divide; * it does have more arithmetic operations, which can be pipelined; * furthermore, it requires two initial poly approximations, but we can avoid * one of them by using y = f * z. The third Newton's iteration is the * fastest but least accurate. * * * For double precision code, we use the second Newton's iteration, slightly * altered to maximize pipelining and to minimize cancellation; thus avoiding * double precision floating divide. * * We start with a degree 8 poly approx for z, to get 23 bits, and then * compute y = f * z. We shorten y to NUM_Y_BITS by masking out the * low 32 bits (n = 21). Then split y into y_hi and y_lo, by masking out * the low bits in the shortened y. * * Let t = y * y. t is exact and has NUM_Y_HI_BITS trailing zeros. * Then y^3 = t * y_hi + t * y_lo is an extended precision quantity * with NUM_Y_HI_BITS extra bits. The first term has no roundoff error. * We compute the residual as the sum of the exact first part and a * second part which is not exact but is small: * * y^3 - f = (t * y_hi - f) + t * y_lo * * There's a tradeoff here: the shorter y is (n bits), the smaller * the number of bits we get from the Newton's iteration 3*n - 2. * We definitely want 3*n - 2 to be larger than F_PRECISION. But the shorter * y is, the more bits we can get in y_hi, and the more extra precision we * get. We definitely want n < F_PRECISION/2. Another consideration is * the accuracy of the initial approximation, which gives us the n "good" * bits to begin with: z had only 23 bits, so y really has only 22. * * Let n = NUM_Y_BITS = 21. y_hi has D_PRECISION - 2 * n = 11 bits. * The Newton's iteration gives 3*n - 2 = 61 bits, which gives us a double * precision cbrt with excellent error characteristics. * * We have to scale up the Newton's iteration by 2^m * 2^(i/3). * To do the scaling, let c_full and c_lo be the full precision and the lo * parts of 2^(i/3). c_hi is computed = c_full - c_lo; c_lo is chosen so * that c_hi is short and y * c_hi is exact. Then the Newton's iteration * including scaling is computed as * * y' = y * (c_full - c_lo) + * * ( y * c_lo + * * ((f - t*y_hi) - t*y_lo) * * ( (c_full * (7/9 * (f*z)*(z*z))) * * (1/7 * (z*f) + y + (z*z)*(5/7 * f)*t)) ) * * The Newton's iteration takes about 8 chimes after z (poly) is finished. * * * * To do quad precision, since each X_FLOAT floating point operation is so * slow, we do an initial approximation in double precision, convert the * results to quad, and then do a quad precision Newton's iteration. * We postpone adding m to the exponent until the last quad precision * operation; this simplifies the earlier steps. * * Rather than actually calling double precision cbrt(), we cast f to * double precision df and compute a simplified double precision cbrt * approximation in-line. We know 1 <= df < 2, so no need to normalize df * or process the exponent. We start with a poly, then do the third * Newton's iteration (C). We scale times 2^(i/3) by loading the full * precision c_full into a double precision floating point register and doing * a floating multiply. Then split the double precision result dy into * dy_hi and dy_lo, and convert all three to quad. * * The cost of the double precision cbrt approx is probably comparable to * one quad precision floating point operation. * * After dy, dy_hi and dy_lo have been converted to y, y_hi, and y_lo, we * need to do a Newton's iteration. Each quad precision floating point * operation is costly, but a divide is relatively less than for double * precision. Therefore we use the first proposed Newton iteration, in * the following decomposition: t = y * y * * y' = y - y * (( t * y_hi - f) + t * y_lo) * ---------------------------- * (t*y + t*y) + f * * This requires 5 multiplies, 5 adds and 1 divide. We have to scale f * by 2^i, by adding i to the exponent. Finally, add (sign + m) to the * sign/exponent field. * * * The accuracy for all 3 precisions is quite satisfactory, just a little * over .5 lsb. The performance is more than twice as fast as the routines * they replace. */ #define NUM_Y_BITS 21 /* * MPHOC code to do the polynomials and the table of cbrts: 2^(i/3), * double precision floating point. * * The hi part of 2^(i/3) will be loaded into an integer register; the * exponent will be adjusted by m; then hi (and any lo) part of 2^(i/3) * will be moved into a floating point register. If BITS_PER_WORD >= * BITS_PER_D_TYPE, then the entire 64-bit entry is moved as a unit between * integer and floating point registers. Otherwise, we have to fetch * the lo part and store it into the "lo" part of a D_UNION. The address * of the lo 32-bits (endianness) is hidden in the D_HI_WORD and D_LO_WORD. */ #if MAKE_INCLUDE # define WORKING_PRECISION ceil( (D_PRECISION + 1) / MP_RADIX_BITS) + 2 # define REMES_PREC ( ceil(2*D_PRECISION/MP_RADIX_BITS) + 5) + 10 # define PRINT_D_ITEM(a) PRINT_1_TYPE_ENTRY(D_CHAR, a, offset) @divert divertText function do_cbrt(z) { return cbrt(z); } function recip_cbrt(z) { auto t; t = cbrt(z); return 1/(t * t); } function cbrt_approx_poly(remes_bits_of_accuracy) { remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT + REMES_LINEAR_ARG, 1.0, 2.0, do_cbrt, remes_bits_of_accuracy, &remes_degree_numer, &remes_coeff_numer); for (i = 0; i <= remes_degree_numer ; i++) { y = remes_coeff_numer[i]; PRINT_D_ITEM( y ); } return (remes_degree_numer); } function recip_cbrt_poly(remes_bits_of_accuracy) { remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT + REMES_LINEAR_ARG, 1.0, 2.0, recip_cbrt, remes_bits_of_accuracy, &remes_degree_numer, &remes_coeff_numer); for (i = 0; i <= remes_degree_numer ; i++) { y = remes_coeff_numer[i]; PRINT_D_ITEM( y ); } return (remes_degree_numer); } /* * Make sure that both hi and lo words of 2^(i/3) are non-negative, to * simplify the sign/exponent manipulation in the code. If the lo word * is 0 (i.e. 2^0), put in a tiny number instead, so that we can add * (sign + exp) to it. */ procedure generate_root_table() { for( i = 0; i <= 2; i++) { c = cbrt(2^i); PRINT_D_ITEM(c); c_hi = bchop(c, D_PRECISION - NUM_Y_BITS); c = c - c_hi; if (c == 0) c = 2^( D_MIN_BIN_EXP/2 ); PRINT_D_ITEM(c); } } precision = REMES_PREC; printf("\n#include \"dpml_private.h\"\n\n"); printf("\n#if !TABLE_IS_EXTERNAL\n\n"); START_GLOBAL_TABLE(CBRT_TABLE_NAME,offset); TABLE_COMMENT("1.0 in double precision"); PRINT_TABLE_VALUE_DEFINE(ONE_D, CBRT_TABLE_NAME, offset, D_TYPE); x = 1; PRINT_D_ITEM(x); /* * This poly gives a cbrt approx good to about 30 bits. It will be used * only for single precision. */ TABLE_COMMENT("coeffs to approx cbrt(f)"); PRINT_TABLE_ADDRESS_DEFINE(CBRT_POLY_ADDR, CBRT_TABLE_NAME, offset, D_TYPE); num_bits = S_PRECISION + 5; cbrt_deg = cbrt_approx_poly(num_bits); GENPOLY(CBRT_POLY_ADDR[%%d], CBRT_POLY(x), cbrt_deg); /* * This poly gives around 22 bit approx of 1/cbrt(f)^2. It is used as * the initial approx in the two double precision Newton's iterations, * which are used in double and quad precision respectively. */ TABLE_COMMENT("coeffs to approx 1/cbrt(f)^2"); PRINT_TABLE_ADDRESS_DEFINE(REC_CBRT_POLY_ADDR, CBRT_TABLE_NAME, offset, D_TYPE); num_bits = 2*D_PRECISION/5; recip_cbrt_deg = recip_cbrt_poly(num_bits); GENPOLY(REC_CBRT_POLY_ADDR[%%d], RECIP_CBRT_POLY(x), recip_cbrt_deg); precision = WORKING_PRECISION; TABLE_COMMENT("cube roots of 2^i, i = 0,1,2 in full and lo"); printf("\n#define OFFSET_OF_CBRTS_OF_2 %i \n", BYTES(offset) ); generate_root_table(); TABLE_COMMENT("Numerical constants"); PRINT_TABLE_VALUE_DEFINE(BIG_QUAD, CBRT_TABLE_NAME, offset, D_TYPE); x = 2^(D_PRECISION - (Q_PRECISION - 2*D_PRECISION)); PRINT_D_ITEM(x); PRINT_TABLE_VALUE_DEFINE(SEVEN_NINTHS, CBRT_TABLE_NAME, offset, D_TYPE); x = 7/9; PRINT_D_ITEM(x); PRINT_TABLE_VALUE_DEFINE(ONE_SEVENTH, CBRT_TABLE_NAME, offset, D_TYPE); x = 1/7; PRINT_D_ITEM(x); PRINT_TABLE_VALUE_DEFINE(FIVE_SEVENTHS, CBRT_TABLE_NAME, offset,D_TYPE); x = 5/7; PRINT_D_ITEM(x); PRINT_TABLE_VALUE_DEFINE(FOURTEEN, CBRT_TABLE_NAME, offset, D_TYPE); x = 14; PRINT_D_ITEM(x); PRINT_TABLE_VALUE_DEFINE(SEVEN, CBRT_TABLE_NAME, offset, D_TYPE); x = 7; PRINT_D_ITEM(x); PRINT_TABLE_VALUE_DEFINE(NINTH, CBRT_TABLE_NAME, offset, D_TYPE); x = 1/9; PRINT_D_ITEM(x); END_TABLE; /* * Declaring the size of the table in the "extern" will allow the compiler * to generate memory accesses more freely. */ printf("\n#else\n"); printf("\n extern const TABLE_UNION "STR(CBRT_TABLE_NAME)"[%i]; \n", offset/BITS_PER_TABLE_WORD); printf("\n#endif\n"); printf("\n\n"); @end_divert @eval my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ my $polyText = Egrep( STR(GENPOLY_EXECUTABLE), $tableText, \ \$tableText ); \ $polyText = GenPoly( $polyText ); \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants for " . \ STR(F_ENTRY_NAME), __FILE__); \ print "$headerText\n\n$tableText\n\n$defineText\n\n$polyText"; /* * if not MAKE_INCLUDE */ #else /* * Macros for the code. */ #define TABLE_IS_EXTERNAL 1 #include STR(BUILD_FILE_NAME) /* * Fetch D_PRECISION 1.0 from the table early to use in COPYSIGN_EXP, and * also to encourage early calculation of the table's address and fetching * coeffs for the poly, etc. Quad precision uses constant 1.0 instead, * for better performance. */ #if QUAD_PRECISION # define ONE_CONST (B_TYPE)1.0 #else # define ONE_CONST ONE_D #endif /* * Macros to facilitate integer division * * Instead of unbiasing the exponent right away, we add and later subtract * small corrective quantities (ADD_ADJUST, SUB_ADJUST) to get rid of the * BIAS/3 exactly: * * (true_expon + BIAS + ADD_ADJUST)*(1/3) - SUB_ADJUST = true_expon/3 * * true_expon + BIAS >= 0, so we can do unsigned arithmetic, which has * better performance. * */ #define SUB_ADJUST (F_PRECISION + F_EXP_BIAS + 2)/3 #define ADD_ADJUST (3*(SUB_ADJUST) - F_EXP_BIAS + (WORD)F_NORM) /* * Instead of doing integer division, we can multiply by an integer that * corresponds to 1/3 in "fixed point". * * If the number is small enough and in the right form, the compiler may * optimize the multiply into shifts and adds. */ #if SINGLE_PRECISION # define ONE_THIRD 0x11 # define SHIFT_PROD 9 #elif DOUBLE_PRECISION # define ONE_THIRD 0x111 # define SHIFT_PROD 13 #elif QUAD_PRECISION # define ONE_THIRD 0x1111 # define SHIFT_PROD 17 #endif #define DIV_BY_3(num) (( (10 * num) * ONE_THIRD + num) >> SHIFT_PROD) /* * Macros to shorten y and split y into y_hi and y_lo. Only used for double * precision, and for the first Newton's iteration for X_FLOAT, which is * also done in double precision. * * y is double precision floating point number, containing about 22 good * bits of approximation to cbrt(f). * * To shorten y, we zero out the low 32 bits of y (y has 53 - 32 = 21 bits). * Then mask out the hi 11 bits of y to get y_hi (11 bits). * Then y_lo = y - y_hi (10 bits). * * This decomposition of y (21 = 11 + 10) turns out to give optimal accuracy * in the subsequent Newton's iteration. * * Instead of shortening y with masks, etc., we could use floating point * instructions: cast y to single precision, then add/sub a suitable BIG * constant. */ #if VAX_FLOATING # define YHI_MASK ((U_WORD) 0xfe00ffff) #else # define NUM_Y_HI_BITS 11 # define YHI_MASK \ MAKE_MASK((D_EXP_WIDTH + NUM_Y_HI_BITS + 1), D_EXP_POS - NUM_Y_HI_BITS) #endif #if (BITS_PER_WORD == 64) # if IEEE_FLOATING # define CLEAR_LO1_32_MASK MAKE_MASK(32,32) # else # define CLEAR_LO1_32_MASK MAKE_MASK(32,0) # endif #else # define CLEAR_LO1_32_MASK 0 #endif #define SPLIT_UP_Y(input_y, utmp, output_y, y_var_hi) \ utmp.f = input_y; \ utmp.D_UNSIGNED_LO1_WORD &= CLEAR_LO1_32_MASK; \ output_y = utmp.f; \ utmp.D_HI_WORD &= YHI_MASK; \ y_var_hi = utmp.f; /* * Macros to fetch the full precision words and possibly also the lo words * of 2^(i/3) from the table, either as D_HI_WORD in an integer register, * or as a double precision floating point number. * * The table items are double precision (64-bits). If BITS_PER_WORD is 32, * fetch the lo 32 bits into the D_LO_WORD of a D_UNION (thus hiding the * endianness). * * Single precision code fetches only the full precision root, as integer. * Quad precision code also fetches only the full precision root, as double. * Double precision code fetches both hi and lo parts of 2^(i/3), parameter * 'which' in the macro. */ #if BITS_PER_WORD < BITS_PER_D_TYPE # define IF_SMALL_WORD(x) x #else # define IF_SMALL_WORD(x) #endif #define GET_ROOT(index,utmp,which,hiword) \ hiword = ((U_WORD) root->which.D_HI_WORD); \ IF_SMALL_WORD(ROOT_LO(index,which,utmp)); #define ROOT_LO(index,which,utmp) \ utmp.D_LO_WORD = ((WORD) root->which.D_LO_WORD); #define GET_ROOT_AS_FLOAT(index,flt) \ flt = ((D_TYPE)root->full.f); #define ROOT_TO_FLOAT(hiword,utmp,floating) \ utmp.D_HI_WORD = hiword; \ floating = utmp.f; typedef struct { D_UNION full, lo ;} CUBE_ROOT_TABLE_ITEM; /* * Constants for screening and for adjusting the denorm exponent. */ #define LSB_OF_EXPON ((U_WORD)1 << F_EXP_POS) #define HI_WORD_OF_HALF ((U_WORD)(F_EXP_BIAS - 1) << F_EXP_POS) #if IEEE_FLOATING # define SIGN_MASK_EXT (-F_SIGN_BIT_MASK) #else # define SIGN_MASK_EXT F_SIGN_BIT_MASK #endif /* * The code. */ F_TYPE F_ENTRY_NAME(F_TYPE x) { WORD j, m, k, sign; U_WORD um, i, uj; B_TYPE f, y, one, z; B_TYPE r, y_hi, y_lo, c_hi, c_lo, t, w; #if QUAD_PRECISION D_TYPE dy, dy_hi, dy_lo, df, dz, dr, dt, dw; #endif F_UNION work_u; D_UNION stk_tmp_u, stk_tmp_v; CUBE_ROOT_TABLE_ITEM * root; /* * First, reduce x to f, where 1 <= f < 2. f will be the variable for * the poly. Get the hi word of x and isolate the (biased) exponent * and the sign. * * Screen out x = 0 and the IEEE denorms, infinities and NaNs. * * The variable sign holds either F_SIGN_BIT_MASK (sign extended) or 0. * For single and double precision, it will be convenient for sign to be * D_SIGN_BIT_MASK instead - modify the single precision variable shortly. */ one = ONE_CONST; B_COPY_SIGN_AND_EXP((B_TYPE) x, one, f); work_u.f = x; j = work_u.F_SIGNED_HI_WORD; sign = (j & SIGN_MASK_EXT); #if IEEE_FLOATING i = MAKE_MASK( (F_EXP_WIDTH - 1), (F_EXP_POS + 1) ); if ( (WORD)( (j + LSB_OF_EXPON) & i ) == 0 ) goto special; #else i = F_EXP_MASK; if ((j & i) == 0) return x; #endif /* * Denorm cases rejoin the normal path here. * * Start the poly as soon as possible. * * But in the meantime, add the constant to the exponent field, fix its sign, * and prepare to start the "division" expon * 1/3. * * Single precision replaces the 'sign' variable with * sign << (D_EXP_POS - F_EXP_POS). * Double precision case follows the poly with a Newton's iteration. * Quad precision casts f to double and does the poly and one Newton's * iteration in double precision. */ normal_path: j -= sign; #if SINGLE_PRECISION z = CBRT_POLY(f); sign = ((sign) ? D_SIGN_BIT_MASK : 0); #elif DOUBLE_PRECISION z = RECIP_CBRT_POLY(f); w = f * z; SPLIT_UP_Y(w, stk_tmp_u, y, y_hi); y_lo = y - y_hi; r = w * ((z * z) * SEVEN_NINTHS); t = y * y; w = ( ONE_SEVENTH * w + y - (((z * z) *(FIVE_SEVENTHS * f)) * t ) ); t = (f - t * y_hi) - (t * y_lo) ; #elif QUAD_PRECISION df = (D_TYPE) f; dz = RECIP_CBRT_POLY(df); dw = df * dz; dt = dw * dw; dr = dz * dz; dr += dr; dy = FOURTEEN - ((SEVEN * dz)* dt); dy += ( (dt * dt) * dr ); dy *= (dw * NINTH); #endif /* * While the poly and Newton's iteration are executing, divide the (biased) * exponent by 3 and compute the remainder mod 3. We added a constant to the * biased exponent so that the BIAS etc. will be divisible by 3. We * also subtract the constant/3 from the quotient. * * The true exponent = 3*m + i, where i = 0, 1 or 2. * * Later, the final cbrt approx will be multiplied by 2^(i/3), * and (sign + m) will be added to the final exponent. */ uj = (U_WORD) (j >> F_EXP_POS); #if VAX_FLOATING uj &= MAKE_MASK(F_EXP_WIDTH,0); #endif uj += ADD_ADJUST; um = DIV_BY_3(uj); i = uj - 3*um; m = (WORD) (um - SUB_ADJUST); root = (CUBE_ROOT_TABLE_ITEM *) ((char *) CBRT_TABLE_NAME + OFFSET_OF_CBRTS_OF_2 + (i * sizeof(CUBE_ROOT_TABLE_ITEM) )) ; m <<= (B_EXP_POS); m += sign; /* * While the poly and Newton's iteration still continue to execute ... * * Fetch 2^(i/3) from the table. T(i) = 2^(i/3) consists of double precision * entries, stored in full precision and lo parts. * * For single and double precision, fetch the "full word" of T(i) into an * integer register. We've already shifted m into "exponent position" and * added the sign; we add this to T(i) and move T(i) to a floating register. * * Single precision requires only the full root T(i), in double precision. * Double precision requires full T(i) as well as a short hi part and a * lo part. The algorithm requires the "hi" part quite late, so plenty of * time to compute it from full - lo. We need to add (sign + m) to the * sign/exponent field of both T(i)_full and T(i)_lo. Note that both * T(i)_full and T(i)_lo are positive, so that adding (sign + exp) works. * * For quad precision, we'll fix up m and the sign much later. Just fetch * T(i) in full precision, as a floating point number. * * If only the hi 32 bits of T(i) fit into an integer register (IF_SMALL_WORD) * we also fetch the lo 32 bits of T(i) from the table and put it into the * D_UNION that we'll use to create the floating point number. */ #if SINGLE_PRECISION GET_ROOT(i, stk_tmp_u, full, j); j += m; ROOT_TO_FLOAT(j,stk_tmp_u,c_hi); #elif DOUBLE_PRECISION GET_ROOT(i, stk_tmp_u, full, j); GET_ROOT(i, stk_tmp_v, lo, k); j += m; k += m; ROOT_TO_FLOAT(j,stk_tmp_u,c_hi); ROOT_TO_FLOAT(k,stk_tmp_v,c_lo); #elif QUAD_PRECISION GET_ROOT_AS_FLOAT(i, dr); #endif /* * Single and double precision are nearly finished. Put the floating T(i) * together with the poly (single) or the pieces of the Newton's iteration * (double precision). * * Quad precision needs a Newton's iteration in quad. First, multiply the * double precision Newton's iteration parts together with the double * precision T(i). Then split the double precision result dy into hi and * lo parts, dy_hi and dy_lo. Convert the three double precision numbers * to quad precision and do another Newton's iteration. * Add m to the result's exponent and correct the sign. */ #if SINGLE_PRECISION z = c_hi * z; #elif DOUBLE_PRECISION z = y*(c_hi - c_lo) + (y * c_lo + (((c_hi * r) * w) * t) ); #elif QUAD_PRECISION dy *= dr; dy_lo = BIG_QUAD; dy_hi = dy; ADD_SUB_BIG(dy_hi, dy_lo); dy_lo = dy - dy_hi; y = (F_TYPE) dy; y_hi = (F_TYPE) dy_hi; y_lo = (F_TYPE) dy_lo; t = y * y; ADD_TO_EXP_FIELD(f, i); z = ((t * y_hi) - f) + t * y_lo; w = t * y; w += w; w += f; z *= y; z = z/w; z = y - z; work_u.f = z; work_u.F_HI_WORD += m; z = work_u.f; #endif /* * Done! Cast the result to F_PRECISION and return. */ return (F_TYPE) z; /* * Processing of IEEE special cases: zeros, denorms, infinities, NaNs. * * j = hi word of x; * one = (B_TYPE) 1.0; * f = "fraction field" of x - denorms have a spurious hidden bit set. * * If exponent == EXP_MASK, x must be a NaN or signed infinity. We really * should transform signalling NaNs into quiet NaNs - for now, just return x. * * Otherwise, x is zero or denormalized. f is x's fraction with hidden bit * presumed to be set and with exponent of 1.0. Subtract f - 1, fetch the * hi word. If x was really zero, f is now 1, and the exponent of f - 1 * is zero. Otherwise, the difference represents the number of bits to * shift the original denormalized number. Subtract it from x's old * exponent - it will be negative, but we'll add the ADD_ADJUST to make it * positive and we'll subtract out the (propagated) negative sign. * * Prepare the new fraction f and we're ready to compute the poly. */ special: if ((j & F_EXP_MASK) == F_EXP_MASK) return x; work_u.f = (F_TYPE)(f - one) ; k = work_u.F_SIGNED_HI_WORD; k &= F_EXP_MASK; if (k == 0) return x; B_COPY_SIGN_AND_EXP((B_TYPE)work_u.f, one, f); j = j + ( k - HI_WORD_OF_HALF ); goto normal_path; } /* * not MAKE_INCLUDE */ #endif LIBRARY/float128/dpml_int_x.h0000644€­ Q01134020000000476215113665770014726 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" static const TABLE_UNION TABLE_NAME[] = { /* floor class-to-action-mapping */ /* 000 */ DATA_1x2( 0x00410408, 0x44106910 ), /* ceil class-to-action-mapping */ /* 008 */ DATA_1x2( 0x00410408, 0x34106520 ), /* trunc, nint, rint and modf class-to-action-mapping */ /* 016 */ DATA_1x2( 0x00410408, 0x24104510 ), /* this class-to-action-mapping used by modf only */ /* 024 */ DATA_1x2( 0x00451408, 0x14104100 ), /* data for the above class to action mappings */ /* 032 */ DATA_1x2( 0x00000000, 0x00000000 ), /* 040 */ DATA_1x2( 0x00000001, 0x00000000 ), }; #define FLOOR_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 0)) #define CEIL_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 8)) #define TRUNC_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 16)) LIBRARY/float128/dpml_log_x.h0000644€­ Q01134020000001225115113665770014705 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" static const TABLE_UNION TABLE_NAME[] = { /* log class-to-action-mapping */ /* 000 */ DATA_1x2( 0x40e50408, 0x1e7ae40e ), /* 008 */ DATA_1x2( 0x00000034, 0x00000000 ), /* 016 */ DATA_1x2( 0x00000035, 0x00000000 ), /* log2 class-to-action-mapping */ /* 024 */ DATA_1x2( 0x40e50408, 0x1e7ae40e ), /* 032 */ DATA_1x2( 0x00000036, 0x00000000 ), /* 040 */ DATA_1x2( 0x00000037, 0x00000000 ), /* log10 class-to-action-mapping */ /* 048 */ DATA_1x2( 0x40e50408, 0x1e7ae40e ), /* 056 */ DATA_1x2( 0x00000038, 0x00000000 ), /* 064 */ DATA_1x2( 0x00000039, 0x00000000 ), /* log1p class-to-action-mapping */ /* 072 */ DATA_1x2( 0x00e50408, 0x14104100 ), /* 080 */ DATA_1x2( 0x00000034, 0x00000000 ), /* MSD of sqrt(2) and 1/sqrt(2) (in fixed point) */ /* 088 */ DATA_1x2( 0xf9de6484, 0xb504f333 ), /* 096 */ DATA_1x2( 0xfcef3242, 0x5a827999 ), /* Fixed point coefficients for log2 evaluation */ /* 104 */ DATA_2x2( 0x56dac09b, 0x271eee7d, 0x2a1966ce, 0x06cc4d0d ), /* 120 */ DATA_2x2( 0x6f81e43d, 0x1ba3468b, 0x9caac22d, 0x05671139 ), /* 136 */ DATA_2x2( 0xa20f818f, 0xf7ca0b25, 0x32b2540a, 0x05f8b502 ), /* 152 */ DATA_2x2( 0x3f28f8fe, 0x7adfa93e, 0xcb8d055c, 0x065df4e9 ), /* 168 */ DATA_2x2( 0xf7891d9d, 0xce5c4ea3, 0x4c87d854, 0x06d6e780 ), /* 184 */ DATA_2x2( 0x9feb8d1e, 0xe820f58a, 0x5c44b19a, 0x0762f814 ), /* 200 */ DATA_2x2( 0xf720bb2c, 0xe8c1f4c0, 0x41dad530, 0x080766bf ), /* 216 */ DATA_2x2( 0x1df3812c, 0x80535f75, 0x7d59049f, 0x08cb2763 ), /* 232 */ DATA_2x2( 0x2c2ac1eb, 0x96e6a1d7, 0xa68ac838, 0x09b81e0f ), /* 248 */ DATA_2x2( 0x7df70971, 0x8c3b0c94, 0xba1f8070, 0x0adcd64d ), /* 264 */ DATA_2x2( 0x11d8754e, 0xa70095aa, 0x4a67ff05, 0x0c4f9d8b ), /* 280 */ DATA_2x2( 0x05f3cefe, 0x64f2a61e, 0x698bb00e, 0x0e347ab4 ), /* 296 */ DATA_2x2( 0x3936b199, 0x572dc64d, 0x94022d28, 0x10c9a849 ), /* 312 */ DATA_2x2( 0x8c4ac6fe, 0x6a80ddd5, 0x7c02a8f8, 0x1484b13d ), /* 328 */ DATA_2x2( 0xa5c4559c, 0x645c921f, 0x7aded93f, 0x1a61762a ), /* 344 */ DATA_2x2( 0xae4a965a, 0x594e6629, 0xdf37fcf2, 0x24eed8a1 ), /* 360 */ DATA_2x2( 0x785f1acb, 0x3f82aa45, 0x7407fae9, 0x3d8e13b8 ), /* 376 */ DATA_2x2( 0x691d3e89, 0xbe87fed0, 0x5c17f0bb, 0xb8aa3b29 ), /* 392 */ DATA_1x2( 0x00000002, 0x00000000 ), /* Unpacked constants 1, 2, log(2) and log(10) */ /* 400 */ POS, 0001, DATA_2x2( 0x00000000, 0x80000000, 0x00000000, 0x00000000 ), /* 424 */ POS, 0002, DATA_2x2( 0x00000000, 0x80000000, 0x00000000, 0x00000000 ), /* 448 */ POS, 0000, DATA_2x2( 0xd1cf79ab, 0xb17217f7, 0x03f2f6af, 0xc9e3b398 ), /* 472 */ POS, 00-1, DATA_2x2( 0xfbcff798, 0x9a209a84, 0x0b7c9178, 0x8f8959ac ), }; #define LOG_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 0)) #define LOG2_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 24)) #define LOG10_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 48)) #define LOG1P_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 72)) #define ONE_OVER_SQRT_2 *((UX_FRACTION_DIGIT_TYPE *) ((char *) TABLE_NAME + 88)) #define I_SQRT_2 *((UX_FRACTION_DIGIT_TYPE *) ((char *) TABLE_NAME + 88)) #define I_RECIP_SQRT_2 *((UX_FRACTION_DIGIT_TYPE *) ((char *) TABLE_NAME + 96)) #define LOG2_COEF_ARRAY ((FIXED_128 *) ((char *) TABLE_NAME + 104)) #define LOG2_COEF_ARRAY_DEGREE (( signed __int64 ) 0x0000000000000011 ) #define UX_ONE ((UX_FLOAT *) ((char *) TABLE_NAME + 400)) #define UX_TWO ((UX_FLOAT *) ((char *) TABLE_NAME + 424)) #define LN_2 ((UX_FLOAT *) ((char *) TABLE_NAME + 448)) #define LOG10_2 ((UX_FLOAT *) ((char *) TABLE_NAME + 472)) LIBRARY/float128/dpml_error_codes_enum.h0000644€­ Q01134020000002022615113665770017130 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define M_ACOS 0 #define M_ACOSD 1 #define M_ACOSH 2 #define M_ASIN 3 #define M_ASIND 4 #define M_ASINH 5 #define M_ATAN 6 #define M_ATAND 7 #define M_ATANH 8 #define M_ATAN2 9 #define M_ATAND2 10 #define M_CABS 11 #define M_COS 12 #define M_COSD 13 #define M_COSH 14 #define M_CSQRT 15 #define M_EXP 16 #define M_EXPM1 17 #define M_LOG 18 #define M_LOG2 19 #define M_LOG10 20 #define M_MOD 21 #define M_POWER 22 #define M_REM 23 #define M_SIN 24 #define M_SIND 25 #define M_SINH 26 #define M_SQRT 27 #define M_TAN 28 #define M_TAND 29 #define M_TANH 30 #define M_SINCOS 31 #define M_SINCOSD 32 #define M_COT 33 #define M_COTD 34 #define M_TANCOT 35 #define M_TANCOTD 36 #define M_LOGB 37 #define M_LDEXP 38 #define M_CDIV 39 #define M_NEXTAFTER 40 #define M_INTPOWER 41 #define M_BES_Y0 42 #define M_BES_Y1 43 #define M_BES_YN 44 #define M_LOG1P 45 #define M_LGAMMA 46 #define M_SCALB 47 #define M_INTINTPOWER 48 #define M_BES_J0 49 #define M_BES_J1 50 #define M_BES_JN 51 #define M_ERF 52 #define M_ERFC 53 #define M_TRUNC 54 #define M_FLOOR 55 #define M_CEIL 56 #define M_FABS 57 #define M_FREXP 58 #define M_HYPOT 59 #define M_MODF 60 #define M_RSQRT 61 #define M_EXP2 62 #define M_TGAMMA 63 #define M_SCALBN 64 #define M_SCALBLN 65 #define M_LRINT 66 #define M_LROUND 67 #define M_LLRINT 68 #define M_LLROUND 69 #define M_REMQUO 70 #define M_NEXTTOWARD 71 #define M_FDIM 72 #define M_FMAX 73 #define M_FMIN 74 #define M_FMA 75 #define M_NANFUNC 76 #define M_LAST 77 #define ACOS_ARG_GT_ONE 0 #define ACOSD_ARG_GT_ONE 1 #define ACOSH_ARG_LT_ONE 2 #define ASIN_ARG_GT_ONE 3 #define ASIND_ARG_GT_ONE 4 #define ATANH_ABS_ARG_GT_ONE 5 #define ATANH_OF_ONE 6 #define ATANH_OF_NEG_ONE 7 #define ATAN2_BOTH_ZERO 8 #define ATAN2_BOTH_INF 9 #define ATAN2_UNDERFLOW 10 #define ATAND2_BOTH_ZERO 11 #define ATAND2_BOTH_INF 12 #define ATAND2_UNDERFLOW 13 #define CABS_OVERFLOW 14 #define CDIV_DIV_BY_ZERO 15 #define CDIV_OVERFLOW 16 #define COS_OF_INFINITY 17 #define COSD_OF_INFINITY 18 #define COSH_OVERFLOW 19 #define COT_UNDERFLOW 20 #define COT_POS_OVERFLOW 21 #define COT_NEG_OVERFLOW 22 #define COT_OF_INFINITY 23 #define COT_OF_ZERO 24 #define COT_OF_NEG_ZERO 25 #define COTD_UNDERFLOW 26 #define COTD_POS_OVERFLOW 27 #define COTD_NEG_OVERFLOW 28 #define COTD_OF_INFINITY 29 #define COTD_OF_ZERO 30 #define COTD_OF_NEG_ZERO 31 #define COTD_MULTIPLE_OF_180 32 #define EXP_OVERFLOW 33 #define EXP_UNDERFLOW 34 #define EXP_OF_INF 35 #define EXP_OF_NEG_INF 36 #define EXPM1_OVERFLOW 37 #define EXPM1_OF_INF 38 #define EXPM1_OF_NEG_INF 39 #define LDEXP_OVERFLOW 40 #define LDEXP_NEG_OVERFLOW 41 #define LDEXP_UNDERFLOW 42 #define SCALB_OVERFLOW 43 #define SCALB_NEG_OVERFLOW 44 #define SCALB_UNDERFLOW 45 #define SCALB_OF_POS_TO_POS_INF 46 #define SCALB_OF_NEG_TO_POS_INF 47 #define SCALB_OF_FINITE_TO_NEG_INF 48 #define SCALB_OF_INF_TO_NEG_INF 49 #define SCALB_INVALID 50 #define LOGB_OF_ZERO 51 #define LOG_OF_NEGATIVE 52 #define LOG_OF_ZERO 53 #define LOG2_OF_NEGATIVE 54 #define LOG2_OF_ZERO 55 #define LOG10_OF_NEGATIVE 56 #define LOG10_OF_ZERO 57 #define LOG1P_LESS_M1 58 #define LOG1P_M1 59 #define MOD_UNDERFLOW 60 #define MOD_BY_ZERO 61 #define MOD_OF_INF 62 #define NEXTAFTER_POS_OVERFLOW 63 #define NEXTAFTER_NEG_OVERFLOW 64 #define NEXTAFTER_POS_UNDERFLOW 65 #define NEXTAFTER_NEG_UNDERFLOW 66 #define POWER_POS_OVERFLOW 67 #define POWER_NEG_OVERFLOW 68 #define POWER_UNDERFLOW 69 #define POWER_NEG_BASE 70 #define POWER_ZERO_TO_NEG 71 #define POWER_INF_TO_ZERO 72 #define POWER_ONE_TO_INF 73 #define POWER_NEG_ZERO_TO_NEG 74 #define POWER_ZERO_TO_ZERO 75 #define POWER_POS_INF_TO_POS 76 #define POWER_NEG_INF_TO_POS 77 #define POWER_NEG_INF_TO_POS_ODD 78 #define POWER_FINITE_TO_INF 79 #define POWER_INF_TO_NEG 80 #define POWER_SMALL_TO_INF 81 #define INTPOWER_POS_OVERFLOW 82 #define INTPOWER_NEG_OVERFLOW 83 #define INTPOWER_POS_UNDERFLOW 84 #define INTPOWER_NEG_UNDERFLOW 85 #define INTPOWER_ZERO_TO_ZERO 86 #define INTPOWER_POS_DIV_BY_ZERO 87 #define INTPOWER_NEG_DIV_BY_ZERO 88 #define INTINTPOWER_OVERFLOW 89 #define INTINTPOWER_ZERODIV 90 #define REM_UNDERFLOW 91 #define REM_BY_ZERO 92 #define REM_OF_INF 93 #define SIN_OF_INFINITY 94 #define SINCOS_OF_INFINITY 95 #define SINCOSD_OF_INFINITY 96 #define SINCOSD_UNDERFLOW 97 #define SIND_OF_INFINITY 98 #define SIND_UNDERFLOW 99 #define SINH_OVERFLOW 100 #define SINH_NEG_OVERFLOW 101 #define SINH_UNDERFLOW 102 #define SQRT_OF_NEGATIVE 103 #define RSQRT_OF_POS_ZERO 104 #define RSQRT_OF_NEG_ZERO 105 #define TAN_OF_INFINITY 106 #define TAND_UNDERFLOW 107 #define TAND_OVERFLOW 108 #define TAND_OF_INFINITY 109 #define TAND_ODD_MULTIPLE_OF_90 110 #define TANH_OVERFLOW 111 #define TANH_UNDERFLOW 112 #define TANCOT_OF_INFINITY 113 #define TANCOTD_OF_INFINITY 114 #define TANCOTD_UNDERFLOW 115 #define BES_J0_OF_INFINITY 116 #define BES_J1_OF_INFINITY 117 #define BES_JN_OF_INFINITY 118 #define BES_J1_UNDERFLOW 119 #define BES_J1_NEG_UNDERFLOW 120 #define BES_JN_UNDERFLOW 121 #define BES_JN_NEG_UNDERFLOW 122 #define BES_Y0_OF_INFINITY 123 #define BES_Y1_OF_INFINITY 124 #define BES_YN_OF_INFINITY 125 #define BES_Y0_OF_NEGATIVE 126 #define BES_Y0_OF_ZERO 127 #define BES_Y1_OF_NEGATIVE 128 #define BES_Y1_OF_ZERO 129 #define BES_Y1_OVERFLOW 130 #define BES_YN_OF_NEGATIVE 131 #define BES_YN_OF_ZERO 132 #define BES_YN_NEG_OVERFLOW 133 #define BES_YN_POS_OVERFLOW 134 #define LGAMMA_OVERFLOW 135 #define LGAMMA_POS_INF 136 #define LGAMMA_NEG_INF 137 #define LGAMMA_NON_POS_INT 138 #define LGAMMA_OF_ZERO 139 #define ERFC_UNDERFLOW 140 #define NANFUNC_CANONICAL_NAN 141 #define EXP2_OVERFLOW 142 #define EXP2_UNDERFLOW 143 #define EXP2_OF_INF 144 #define EXP2_OF_NEG_INF 145 #define SCALBN_OVERFLOW 146 #define SCALBN_NEG_OVERFLOW 147 #define SCALBN_UNDERFLOW 148 #define SCALBLN_OVERFLOW 149 #define SCALBLN_NEG_OVERFLOW 150 #define SCALBLN_UNDERFLOW 151 #define TGAMMA_OVERFLOW 152 #define TGAMMA_NEG_OVERFLOW 153 #define TGAMMA_POS_INF 154 #define TGAMMA_NEG_INF 155 #define TGAMMA_EVEN_NEG_INT 156 #define TGAMMA_ODD_NEG_INT 157 #define TGAMMA_OF_ZERO 158 #define LRINT_OVERFLOW 159 #define LROUND_OVERFLOW 160 #define LLRINT_OVERFLOW 161 #define LLROUND_OVERFLOW 162 #define REMQUO_UNDERFLOW 163 #define REMQUO_BY_ZERO 164 #define REMQUO_OF_INF 165 #define NEXTTOWARD_POS_OVERFLOW 166 #define NEXTTOWARD_NEG_OVERFLOW 167 #define NEXTTOWARD_POS_UNDERFLOW 168 #define NEXTTOWARD_NEG_UNDERFLOW 169 #define FDIM_POS_OVERFLOW 170 #define FDIM_POS_UNDERFLOW 171 #define FMA_POS_UNDERFLOW 172 #define FMA_NEG_UNDERFLOW 173 #define FMA_POS_OVERFLOW 174 #define FMA_NEG_OVERFLOW 175 #define FMA_INF_AND_ZERO 176 #define FMA_INF_AND_INF 177 #define LAST_ERROR_CODE 178 LIBRARY/float128/dpml_globals.h0000644€­ Q01134020000001103715113665770015221 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" #if !defined(GLOBALS_TABLE) # define GLOBALS_TABLE __INTERNAL_NAME(globals_table) #endif #ifdef GLOBAL_TABLE_VALUES const unsigned int GLOBALS_TABLE[] = { S_NAN_HI, 0, NAN_LO, T_NAN_HI, NAN_LO, NAN_LO, NAN_LO, X_NAN_HI, 0x00000000, 0, DATA_1x2( 0x00000000, 0x00000000 ), DATA_2x2( 0x00000000, 0x00000000, 0x00000000, 0x00000000 ), 0x80000000, 0, DATA_1x2( 0x00000000, 0x80000000 ), DATA_4R( 0x00000000, 0x00000000, 0x00000000, 0x80000000 ), 0x00000001, 0, DATA_1x2( 0x00000001, 0x00000000 ), DATA_4R( 0x00000001, 0x00000000, 0x00000000, 0x00000000 ), 0x80000001, 0, DATA_1x2( 0x00000001, 0x80000000 ), DATA_4R( 0x00000001, 0x00000000, 0x00000000, 0x80000000 ), 0x7f7fffff, 0, DATA_1x2( 0xffffffff, 0x7fefffff ), DATA_4R( 0xffffffff, 0xffffffff, 0xffffffff, 0x7ffeffff ), 0xff7fffff, 0, DATA_1x2( 0xffffffff, 0xffefffff ), DATA_4R( 0xffffffff, 0xffffffff, 0xffffffff, 0xfffeffff ), 0x7f800000, 0, DATA_1x2( 0x00000000, 0x7ff00000 ), DATA_4R( 0x00000000, 0x00000000, 0x00000000, 0x7fff0000 ), 0xff800000, 0, DATA_1x2( 0x00000000, 0xfff00000 ), DATA_4R( 0x00000000, 0x00000000, 0x00000000, 0xffff0000 ), 0x34000000, 0, DATA_1x2( 0x00000000, 0x3cb00000 ), DATA_4R( 0x00000000, 0x00000000, 0x00000000, 0x3f8f0000 ), 0xb4000000, 0, DATA_1x2( 0x00000000, 0xbcb00000 ), DATA_4R( 0x00000000, 0x00000000, 0x00000000, 0xbf8f0000 ), 0x3f800000, 0, DATA_1x2( 0x00000000, 0x3ff00000 ), DATA_4R( 0x00000000, 0x00000000, 0x00000000, 0x3fff0000 ), 0xbf800000, 0, DATA_1x2( 0x00000000, 0xbff00000 ), DATA_4R( 0x00000000, 0x00000000, 0x00000000, 0xbfff0000 ), }; #else extern TABLE_UNION GLOBALS_TABLE[]; #endif #define _s_TYPE 0 #define _t_TYPE 1 #define _x_TYPE 2 #define NAN_INDEX 0 #define POS_ZERO_INDEX 1 #define NEG_ZERO_INDEX 2 #define POS_TINY_INDEX 3 #define NEG_TINY_INDEX 4 #define POS_HUGE_INDEX 5 #define NEG_HUGE_INDEX 6 #define POS_INFINITY_INDEX 7 #define NEG_INFINITY_INDEX 8 #define POS_ULP_FACTOR_INDEX 9 #define NEG_ULP_FACTOR_INDEX 10 #define POS_ONE_INDEX 11 #define NEG_ONE_INDEX 12 #define F_TYPE_ENUM PASTE_3(_, F_CHAR, _TYPE) #define GLOBALS_OFFSET( t, n ) ( ( t << 3 ) + ( n << 5 ) ) #define GLOBAL(n) *((F_TYPE *) ((char *) GLOBALS_TABLE + GLOBALS_OFFSET(F_TYPE_ENUM,n) )) #define GLOBAL_ADDR(t,n) ((void *) ((char *) GLOBALS_TABLE + GLOBALS_OFFSET(t,n) )) #define NAN GLOBAL(NAN_INDEX) #define POS_ZERO GLOBAL(POS_ZERO_INDEX) #define NEG_ZERO GLOBAL(NEG_ZERO_INDEX) #define POS_TINY GLOBAL(POS_TINY_INDEX) #define NEG_TINY GLOBAL(NEG_TINY_INDEX) #define POS_HUGE GLOBAL(POS_HUGE_INDEX) #define NEG_HUGE GLOBAL(NEG_HUGE_INDEX) #define POS_INFINITY GLOBAL(POS_INFINITY_INDEX) #define NEG_INFINITY GLOBAL(NEG_INFINITY_INDEX) #define POS_ULP_FACTOR GLOBAL(POS_ULP_FACTOR_INDEX) #define NEG_ULP_FACTOR GLOBAL(NEG_ULP_FACTOR_INDEX) #define POS_ONE GLOBAL(POS_ONE_INDEX) #define NEG_ONE GLOBAL(NEG_ONE_INDEX) LIBRARY/float128/dpml_ux_powi.c0000644€­ Q01134020000003374215113665770015272 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BASE_NAME powi #include "dpml_ux.h" #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif /* ** The DPML can potentially support 6 different types of power functions with ** a floating point base and a integer power. Six types are determined by ** whether the integer power is a signed or unsigned integer and whether 0^0 ** retun 0, 1 or an error. The following note discusses a common subroutine, ** __powil, that supports all 6 types of powi functions. ** ** ** 1.0 BASIC DESIGN AND INTERFACE ** ------------------------------ ** ** The basic approach to __powil to to encode the behavior of the 0^0 case in ** the class-to-action mapping array. Specifically, if we denote the exponent ** as n, we create a class-to-action mapping array that has mappings for n < 0, ** n > 0 (both even and odd cases) and three entries for n = 0. The three ** entries for n = 0 correspond to the three choices for 0^0. ** ** For each of the six possible powi routines, we define an integer, call it ** index_map, consisting of 3, k-bit fields. The first field contains the ** index into the class-to-action mapping table for n < 0; the second for n = 0; ** and the third for n > 0. Note that the unsigned integer case is handled by ** making the first and third field of index_map identical. ** ** The actual algorithm for __powil is fairly simple - it uses the standard ** iterative "square and multiply" approach. The only difference from the basic ** DPML implementation is that for negative exponents, the reciprocal of the ** argument is used for the iterations rather than performing the reciprocal ** after the iterations. ** ** It should be pointed out, that this will most likely mean the __powil routine ** will be slightly *SLOWER* than the existing DPML routines for the ** non-exceptional cases. We might want to consider expanding the MULTIPLY and ** SQUARE operations in-line to improve performance. The resulting code ** expansion should not be too great (i.e. less that 10%). */ #if !defined(C_UX_POW_I) # define C_UX_POW_I __INTERNAL_NAME(C_ux_pow_i) #endif #define INDEX_INC (64/BITS_PER_WORD) #define POWI_INDEX_MASK MAKE_MASK(EXPONENT_INDEX_FIELD_WIDTH,0) #define INDEX_MAP(n,z,p) \ (((z) << 0*EXPONENT_INDEX_FIELD_WIDTH) | \ ((p) << 1*EXPONENT_INDEX_FIELD_WIDTH) | \ (((p)+INDEX_INC) << 2*EXPONENT_INDEX_FIELD_WIDTH) | \ ((n) << 3*EXPONENT_INDEX_FIELD_WIDTH) | \ (((n)+INDEX_INC) << 4*EXPONENT_INDEX_FIELD_WIDTH) ) static void C_UX_POW_I(_X_FLOAT * packed_argument, WORD n, WORD index_map, _X_FLOAT * packed_result OPT_EXCEPTION_INFO_DECLARATION ) { WORD fp_class, exponent, index; UX_FLOAT unpacked_argument, unpacked_result; /* ** Get correct index for class-to-action array. The next line computes ** index according to the following table: ** ** n index ** --------- ----- ** zero 0 ** pos, even 1 ** pos, odd 2 ** neg, even 3 ** neg, odd 4 ** ** the macro INDEX_MAP, needs to adhere to the above ordering and the ** class to action mappings for the odd cases must immediately follow ** the even cases. */ index = (((n >> (BITS_PER_WORD - 1)) & 2) | (n & 1)) + (n != 0); index = (index_map >> (EXPONENT_INDEX_FIELD_WIDTH*index)) & POWI_INDEX_MASK; fp_class = UNPACK( packed_argument, & unpacked_argument, POWI_CLASS_TO_ACTION_MAP + index, packed_result OPT_EXCEPTION_INFO_ARGUMENT ); if (0 > fp_class) return; /* Initialize result to 1 */ UX_SET_SIGN_EXP_MSD(&unpacked_result, 0, 1, UX_MSB); if (index <= (NEG_EXPONENT_INDEX + INDEX_INC)) { /* For negative exponents use reciprocal of the argument */ n = -n; DIVIDE(0, &unpacked_argument, FULL_PRECISION, &unpacked_argument); } while (1) { if (n & 1) { MULTIPLY(&unpacked_result, &unpacked_argument, &unpacked_result); NORMALIZE(&unpacked_result); } exponent = G_UX_EXPONENT(&unpacked_result) - UX_UNDERFLOW_EXPONENT; n = (U_WORD)(n >> 1); if (( 0 == n ) || (((unsigned) exponent) > (UX_OVERFLOW_EXPONENT - UX_UNDERFLOW_EXPONENT ))) break; SQUARE(&unpacked_argument, &unpacked_argument); NORMALIZE(&unpacked_argument); } PACK( &unpacked_result, packed_result, G_UX_SIGN(&unpacked_result) ? INTPOWER_NEG_UNDERFLOW : INTPOWER_POS_UNDERFLOW, G_UX_SIGN(&unpacked_result) ? INTPOWER_NEG_OVERFLOW : INTPOWER_POS_OVERFLOW OPT_EXCEPTION_INFO_ARGUMENT ); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_POW_I_NAME X_XI_PROTO(F_ENTRY_NAME, packed_result, packed_base, n) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_POW_I( PASS_ARG_X_FLOAT(packed_base), n, INDEX_MAP(NEG_EXPONENT_INDEX, ZERO_EXPONENT_RETURN_1_INDEX, POS_EXPONENT_INDEX), PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_POW_I_E_NAME X_XI_PROTO(F_ENTRY_NAME, packed_result, packed_base, n) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_POW_I( PASS_ARG_X_FLOAT(packed_base), n, INDEX_MAP(NEG_EXPONENT_INDEX, ZERO_EXPONENT_RETURN_ERROR_INDEX, POS_EXPONENT_INDEX), PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO); RETURN_X_FLOAT(packed_result); } #if defined(POW_Z) # undef F_ENTRY_NAME # define F_ENTRY_NAME F_POW_I_Z_NAME X_XI_PROTO(F_ENTRY_NAME, packed_result, packed_base, n) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_POW_I( PASS_ARG_X_FLOAT(packed_base), n, INDEX_MAP(NEG_EXPONENT_INDEX, ZERO_EXPONENT_RETURN_0_INDEX, POS_EXPONENT_INDEX), PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO); RETURN_X_FLOAT(packed_result); } #endif #if defined(MAKE_INCLUDE) @divert -append divertText precision = ceil(UX_PRECISION/8) + 4; START_TABLE; TABLE_COMMENT("powi class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "POWI_CLASS_TO_ACTION_MAP"); # define PRINT_INDEX_DEF(name) \ printf("#define " name "\t%i\n", \ (MP_BIT_OFFSET - base_offset)/BITS_PER_WORD ) base_offset = MP_BIT_OFFSET; TABLE_COMMENT("... for n < 0, even and odd"); PRINT_INDEX_DEF( "NEG_EXPONENT_INDEX\t\t" ); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(7) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 4) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 4) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 2) ); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(6) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 4) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_NEGATIVE, 4) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 3) ); TABLE_COMMENT("... for n = 0, 0^0 = 0"); PRINT_INDEX_DEF( "ZERO_EXPONENT_RETURN_0_INDEX\t" ); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(5) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 4) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 4) ); TABLE_COMMENT("... for n = 0, 0^0 = 1"); PRINT_INDEX_DEF( "ZERO_EXPONENT_RETURN_1_INDEX\t" ); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(4) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 5) ); TABLE_COMMENT("... for n = 0, 0^0 = error"); PRINT_INDEX_DEF( "ZERO_EXPONENT_RETURN_ERROR_INDEX" ); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(3) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_VALUE, 5) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 7) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 7) ); TABLE_COMMENT("... for n > 0, even and odd"); PRINT_INDEX_DEF( "POS_EXPONENT_INDEX\t\t" ); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(2) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_NEGATIVE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_NEGATIVE, 0) ); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); printf("#define EXPONENT_INDEX_FIELD_WIDTH\t\t%i\n", bexp((MP_BIT_OFFSET - base_offset)/BITS_PER_WORD)); TABLE_COMMENT("Data for the above mappings"); PRINT_U_TBL_ITEM( /* data 1 */ NULL ); PRINT_U_TBL_ITEM( /* data 2 */ INTPOWER_POS_DIV_BY_ZERO ); PRINT_U_TBL_ITEM( /* data 3 */ INTPOWER_NEG_DIV_BY_ZERO ); PRINT_U_TBL_ITEM( /* data 4 */ ZERO ); PRINT_U_TBL_ITEM( /* data 5 */ ONE ); PRINT_U_TBL_ITEM( /* data 6 */ INF ); PRINT_U_TBL_ITEM( /* data 7 */ INTPOWER_ZERO_TO_ZERO ); END_TABLE; @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ $outText = "$tableText\n\n$defineText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants floating base " . \ "integer power routines", __FILE__ ); \ print "$headerText\n\n$outText\n"; #endif LIBRARY/float128/dpml_ux_trig.c0000644€­ Q01134020000012243215113665770015254 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BASE_NAME trig #include "dpml_ux.h" #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif /* ** OVERVIEW ** -------- ** ** The implementation of the trig functions is based on four support routines: ** two common evaluation routine (one for sin/cos/sind/cosd and one for ** tan/cot/tand/cotd) together with two argument reduction routines, one for ** radian arguments and one for degree arguments. ** ** There are various reduction schemes that can be used for trigonometric ** functions. The polynomial evaluation routines require that the terms in ** the series decrease in magnitude. For the trig functions, this implies ** that an argument reduction scheme should return a reduce argument with ** magnitude less than or equal to pi/4 is an appropriate choice. In ** particular, we assume that for a given value, x, the argument reduction ** scheme (for both radian and degrees) produces two integers, I1 and I and an ** unpacked floating point result, z, such that ** ** x = (2*pi)*I1 + I*(pi/2) + z, |z| <= pi/4 ** ** NOTE: having the degree reduction return the reduced ** argument in radian permits the use of only one set ** of polynomial coefficient and simplifies the evaluation ** logic. ** ** The value of I we will refer to as the quadrant bits and z as the reduced ** argument. We assume also that argument reduction routines returns both I ** and z to its caller. (I1 is never needed in the subsequent computations, ** so it is not returned.) ** ** The following table gives an estimate of the number of terms in a polynomial ** and rational approximation for each of the basic trig functions. For ** rational approximations the degree of the numerator and denominator are ** presented as an ordered pair. The approximation is assumed to be good to ** 128 bits for |x| <= pi/4. The values in this table were extrapolated from ** the tables given in Hart et. al. ** ** approximation form ** ------------------------ ** function polynomial rational ** -------- ---------- -------- ** sin 12 (6, 6) ** cos 12 (6, 6) ** tan 29 (7, 7) ** ** So from the above table, it seems most efficient to evaluate sin and cos via ** polynomials and evaluate tangent via a rational approximation. So we assume ** that for |x| <= pi/4, we have polynomials, S, C, P and Q such that ** ** sin(x) ~ x*S(x^2) ** cos(x) ~ C(x^2) ** tan(x) ~ x*P(x^2) / Q(x^2) ** cot(x) ~ Q(x^2) / *[x*P(x^2)] ** ** Now, for any argument, x, given its reduced argument, z, and its quadrant ** bits, I, we can evaluate sin, cos, tan and cot of x according to Table 1. ** ( For brevity we denote z*P(z^2) by p, Q(z^2) by q, etc): ** ** Quadrant bits, I ** ---------------------------- ** function 0 1 2 3 ** -------- ----- ----- ----- ----- ** sin s c -s -c ** cos c -s -c s ** tan p/q -q/p p/q -q/p ** cot q/p -p/q q/p -p/q ** ** Table 1 ** ------- ** ** ** REDUCTION INTERFACE: ** -------------------- ** ** As mentioned earlier, the overall design of the the trig routines is ** dependent on two routines to do argument reduction. The prototype for ** these functions is; ** ** WORD ** __reduce( ** _UX_FLOAT * unpacked_argument, ** INT_64 octant, ** _UX_FLOAT * reduced_argument ** ) ** ** Assuming that 'unpacked_argument' points to a _UX_FLOAT data item with value ** x, then the semantics of the reduction routines are to compute integers I1 ** and I, and a floating point value, z, such that ** ** x + octant*(CYCLE/4) = (2*CYCLE)*I1 + (CYCLE/2) + z, |z| < CYCLE/4 ** ** Note that performing the reduction on x + octant*(CYCLE/4), rather than x, ** not only allows us to deal with the _vo entry points easily, it also ** permits easy use of the identities cos(x) = sin(x + CYCLE/2) and cot(x) = ** tan(CYCLE/2) to consolidate the overall processing. ** ** ** ** EVALUATION INTERFACE: ** --------------------- ** ** The prototypes for each of the two evaluation routines is; ** ** void ** __trig_evaluate( ** UX_FLOAT * unpacked_argument, ** WORD octant, ** U_WORD function_code, ** UX_FLOAT * unpacked_result ** ); ** ** The evaluation routines need not know whether the evaluation is for degrees ** because the appropriate reduction is done based on the value of ** function_code. */ #if !defined(UX_RADIAN_REDUCE) # define UX_RADIAN_REDUCE __INTERNAL_NAME(ux_radian_reduce__) #endif /* ** The radian reduction code is rather large and has a rather detailed ** explanation. Consequently, its contained in a separate file and is ** included here. */ #if !defined(MAKE_INCLUDE) # include "dpml_ux_radian_reduce.c" #endif /* ** UX_DEGREE_REDUCE performs argument reduction for degree arguments. The ** reduction is performed in three phases: ** ** (1) if |x| >= 2^141, reduce modulo 360 to a value less than 2^141 ** by operating on the exponent field of x ** (2) if |x| > 2^15, reduce modulo 360 to a value less that 2^15 ** by operating on the integer portion of x ** (3) if |x| < 2^15, compute I = nint(x/90) and the reduced argument ** as x - I*90 ** ** The details of each of these phases is discussed in more detail in the ** code. */ #if !defined(UX_DEGREE_REDUCE) # define UX_DEGREE_REDUCE __INTERNAL_NAME(ux_degree_reduce__) #endif static U_WORD UX_DEGREE_REDUCE( UX_FLOAT * argument, WORD octant, UX_FLOAT * reduced_argument) { WORD cnt, digit_with_binary_pt, digit_num, w_tmp, quadrant; UX_SIGN_TYPE sign; UX_EXPONENT_TYPE exponent, k; UX_FRACTION_DIGIT_TYPE current_digit, tmp_digit, sum_digit, borrow; sign = G_UX_SIGN(argument); exponent = G_UX_EXPONENT(argument); if (exponent > (UX_PRECISION + 14)) { /* ** This is a very large argument. We make use of the identity ** ** 8*(2^12)^(n+1) = 8*(136)^(n+1) (mod 360) ** = [8*(136)]*(136)^n ** = (1088)*(136)^n ** = 8*(136)^n (mod 360) ** ** Or employing induction, 8*(2^12)^n = 8 (mod 360) ** ** If p is the precision of the data type, we begin by writing the ** input argument x as: ** ** x = 2^n*f ** = 2^(n-p)*(2^p*f) ** = 2^(n-p)*F ** ** where F = 2^p*f is an integer. Now let k = floor((n - p - 3)/12) ** and r = n - p - 3 - 12*k. Then ** ** x = 2^(n-p)*F ** = 2^(12k + r + 3)*F ** = 8*2^(12k)]*(2^r*F) ** = [8*(2^12)^k]*(2^r*F) ** = 8*(2^r*F) (mod 360) ** = 2^(3 + r + p)*f ** = 2^(n - 12*k)*f ** ** So the approach is to find k and subtract 12*k from the exponent ** field. This will reduce the input argument to a number less than ** 2^(p + 14) ** ** One last note. We don't actually do an integer divide to get ** k. Rather we multiply n by an integer that is effectively the ** reciprocal of 12. This is easier to do if the exponent field ** is positive so we want to add a bias to the exponent that is ** divisible by 12 and that will force the exponent to be positive. ** We assume at this point that |exponent| < (1 << F_EXP_WIDTH). ** ** Let the bias = 12*B, then ** ** k = floor((n - p - 3)/12) ** = floor((n - p - 3 + 12*B - 12*B)/12) ** = floor((n - p - 3 + 12*B)/12 - B) ** = floor((n - p - 3 + 12*B)/12) - B ** = floor((n + (12*B - p - 3))/12) - B ** ** ==> n - 12*k = n - 12*[floor((n + (12*B - p - 3))/12) - B] ** = n - 12*floor((n + (12*B - p - 3))/12) - 12*B */ # define BIAS (12*(((1 << F_EXP_WIDTH) + 11)/12)) exponent += (BIAS - UX_PRECISION - 3); UMULH((UX_FRACTION_DIGIT_TYPE) exponent, RECIP_TWELVE, k); exponent = (exponent + (UX_PRECISION + 3)) - 12*k; P_UX_EXPONENT(argument, exponent); } if (exponent >= 16) { /* ** For a medium arguments, 2^15 < |x| < 2^142, we consider the fraction ** field of x as a sequence of digit. The digits that are comprised ** entirely of "integer" bits are reduced modulo 360 using the ** identity 8*2^12 = 8 (mod 360). ** ** Begin by writing |x| = 2^n*f, with f in the interval [1/2, 1) and ** define s = (n - 15) % k, where k is the number of bits per fraction ** digit. If there are 4 digits per UX_FLOAT, then the following ** diagram indicates the relationship between n, s and the binary point ** of x: ** ** |<---------- n - 15 -------->| 15 |<-- ** +-----------+-----------+-----------+-----------+ ** f : | F1 | F2 | F3 | F4 | ** +-----------+-----------+-----------+-----------+ ** -->| s |<-- ^ ** binary pt ** ** Suppose we now shift the bits of f, s bits to the left to get f'. ** Then the diagram would look like ** ** -->| 15 |<-- ** +-----------+-----------+-----------+-----------+-----------+ ** f': | F0' | F1' | F2' | F3' | F4' | ** +-----------+-----------+-----------+-----------+-----------+ ** ^ ** binary pt ** ** and if we denote the number of digits per UX_FLOAT by N, then ** ** x = 2^(n-s)*(F0' + F1'/K + F2'/K^2 + ... + F4'/K^N) ** ** Now n - 15 - s is multiple of k, i.e. n - s = j*k + 15, so that ** 2^(n-s) = 2^(j*k+15) = 2^15*K^j and ** ** x = 2^(n-s)*(F0' + F1'/K + F2'/K^2 + ... + FN'/K^N) ** = 2^15*(K^j)*(F0' + F1'/K + F2'/K^2 + .... + FN'/K^N) ** = 2^15*[F0'*K^j + F1'*K^(j-1) + ... + FN'/K^(j-N)] ** = 2^15*A + 2^15*b ** ** A = F0'*K^j + F1'*K^(j-1) + ... + Fj ** b = Fj+1'/K + ... + FN'/K^(N-j) ** ** If we denote B = trunc(2^12*b) as B and b' = 2^15*b - 2^3*B, then ** ** x = 2^15*A + 2^15*b ** = 2^15*A + 2^3*B + b' ** = 2^15*A + 2^3*B + b' ** = 8*(2^12*A + B) + b' ** = 8*C + b' ** ** Now let C_lo be the low 12 bits of C and C_hi be the remaining ** bits, then ** ** 8*C = 8*(C_lo + 2^12*C_hi) ** = 8*(C_lo + 136*C_hi) (mod 360) ** = 8*C_lo + 8*136*C_hi) ** = 8*C_lo + 8*C_hi) (mod 360) ** = 8*(C_lo + C_hi) ** ** Thus we effectively reduced the value of 8*C by (almost) 12 bits ** modulo 360. Obviously, we can iterate on this process until until ** we produce a value C' which is less that 2^12 and 8*C' = 8*C modulo ** 360. In order to increase performance (and simplify the ** implementation) the actual code below doesn't do the reduction 12 ** bits at a time initially. Rather it first does the reduction 24 or ** 60 bits bits at a time (depending on the digit size), and then does ** 12 bit reduction on that result. ** ** NOTE: In order to avoid copying the input argument to ** a work buffer and to simplify the logic, the follow code ** overlays the sign and exponent field of a UX_FLOAT type ** with an "extra" digit. */ # if BITS_PER_UX_FRACTION_DIGIT_TYPE > (BITS_PER_UX_EXPONENT_TYPE + \ BITS_PER_UX_SIGN_TYPE) # error "Need work buffer for this UX_FLOAT struct" # endif digit_with_binary_pt = exponent - 15; cnt = digit_with_binary_pt & (BITS_PER_UX_FRACTION_DIGIT_TYPE - 1); digit_with_binary_pt >>= __LOG2(BITS_PER_UX_FRACTION_DIGIT_TYPE); tmp_digit = 0; exponent -= cnt; if (cnt) { /* shift digit right (in memory) */ w_tmp = BITS_PER_UX_FRACTION_DIGIT_TYPE - cnt; current_digit = G_UX_LSD(argument); P_UX_LSD(argument, current_digit << cnt); # if NUM_UX_FRACTION_DIGITS == 4 tmp_digit = G_UX_FRACTION_DIGIT(argument, 2); P_UX_FRACTION_DIGIT(argument, 2, (tmp_digit << cnt) | ( current_digit >> w_tmp)); current_digit = G_UX_FRACTION_DIGIT(argument, 1); P_UX_FRACTION_DIGIT(argument, 1, (current_digit << cnt) | ( tmpt_digit >> w_tmp)); # endif tmp_digit = G_UX_MSD(argument); P_UX_MSD(argument, (tmp_digit << cnt) | ( current_digit >> w_tmp)); tmp_digit >>= w_tmp; } /* P_UX_FRACTION_DIGIT(argument, -1, tmp_digit); */ /* ** Because of the compiler warning we are replacing the above ** line in the source. */ *(&(((UX_FLOAT*)(argument))->fraction[0])-1) = tmp_digit; /* ** Extract B from the digit that contains the binary point */ sum_digit = G_UX_FRACTION_DIGIT(argument, digit_with_binary_pt) >> (BITS_PER_UX_FRACTION_DIGIT_TYPE - 12); /* ** Loop through the remaining integer digits and add them to B */ # define MOD_360_BITS_PER_DIGIT (12*(BITS_PER_UX_FRACTION_DIGIT_TYPE/12)) # define MOD_360_DIGIT_MASK MAKE_MASK(MOD_360_BITS_PER_DIGIT, 0) digit_num = digit_with_binary_pt; cnt = 0; while (digit_num >= 0) { current_digit = G_UX_FRACTION_DIGIT(argument, --digit_num); P_UX_FRACTION_DIGIT(argument, digit_num, 0); if (cnt) { sum_digit += ((current_digit << cnt) & 0xfff); w_tmp = 12 - cnt; current_digit >>= w_tmp; cnt = -w_tmp; } sum_digit = (sum_digit + (current_digit & MOD_360_DIGIT_MASK)) + (current_digit >> MOD_360_BITS_PER_DIGIT); cnt += (BITS_PER_UX_FRACTION_DIGIT_TYPE - MOD_360_BITS_PER_DIGIT); } /* ** For 64 bit digits, at this point sum_digit can have five 12 bit ** "digits" plus a carry "digit" for a total of six. So it is ** more efficient to compress sum_digit 24 bits at a time rather than ** 12 bits at a time. */ # if (BITS_PER_UX_FRACTION_DIGIT_TYPE == 64) sum_digit = (sum_digit & 0xffffff) + ((sum_digit >> 24) & 0xffffff) + ((sum_digit >> 48) & 0xffffff); # endif /* ** At this point sum_digit may contain two 12 bit "digits" plus a ** carry "digit". So we recurse (at most twice) to reduce it to 12 ** bits modulo 360. */ while ((tmp_digit = (sum_digit >> 12))) sum_digit = (sum_digit & 0xfff) + tmp_digit; /* ** Now put the reduced integer into the original fraction field, ** normalize the result, and calculate the exponent value. */ current_digit = G_UX_FRACTION_DIGIT(argument, digit_with_binary_pt); current_digit &= MAKE_MASK(BITS_PER_UX_FRACTION_DIGIT_TYPE - 12, 0); current_digit |= (sum_digit << (BITS_PER_UX_FRACTION_DIGIT_TYPE - 12)); P_UX_FRACTION_DIGIT(argument, digit_with_binary_pt, current_digit); P_UX_EXPONENT(argument, exponent); exponent -= NORMALIZE(argument); } /* ** At this point |x| < 2^15 so that if I = nint(x/90), I < 2^9 and ** I*90 requires at most 15 significant bits. This means that we ** can reduce x by working only with its most significant digit. ** ** Let F be the high k bits of the fraction of x, where k is the number ** of bits per fraction digit and K = 2^k. Further, let R an k-1 bit ** integer such that 1/90 ~ R/(32*K). (I.e. R is the high bits of 1/90 ** unnormalized by one bit.) We can now write x = 2^n*(F + e)/K and ** 1/90 = (R + d)/(32*K), where |e| < 1 and |d| < 1/2. Consequently ** we have: ** ** x/90 = (2^n*f)*(1/90) ** = 2^n*[(F + e)/K]*[(R + d)/(32*K)] ** = 2^(n-5)*(F*R + e*R + d*F + e*d)/K^2 ** = 2^(n-5)*(K*hi(F*R) + lo(F*R) + e*R + d*F + e*d)/K^2 ** ** Now K*hi(F*R) > K^2/8 and | lo(F*R) + e*R + d*F + e*d | < 2K and ** so the relative error in neglecting lo(F*R) + e*R + d*F + e*d is less ** that one part in 2^(k-4). Since k is at least 32, the relative error ** is very small. We have then ** ** x/90 = 2^(n-5)*[K*hi(F*R) + lo(F*R) + e*R + d*F + e*d]/K^2 ** ~ 2^(n-5)*hi(F*R)/K */ w_tmp = exponent - 5; P_UX_SIGN(argument, 0); current_digit = G_UX_MSD(argument); if (w_tmp > 0) { UMULH( current_digit, MSD_OF_RECIP_90, tmp_digit); } else { /* I = 0 */ w_tmp = 1; tmp_digit = 0; } /* I ~ x/90, "add in octant" and round to nearest integer */ cnt = BITS_PER_UX_FRACTION_DIGIT_TYPE - w_tmp; tmp_digit = (tmp_digit + ((octant & 1) << (cnt - 1)) + SET_BIT(cnt - 1)) & ~MAKE_MASK(cnt, 0); /* Get quadrant bits and adjust for sign of the argument */ quadrant = (tmp_digit >> cnt); quadrant = (sign) ? -quadrant : quadrant; quadrant += (octant >> 1); /* now subtract I*90 from x */ # define MSD_OF_NINETY (((UX_FRACTION_DIGIT_TYPE) 45) << \ (BITS_PER_UX_FRACTION_DIGIT_TYPE - 6)) UMULH(tmp_digit, MSD_OF_NINETY, tmp_digit); tmp_digit = (current_digit >> 2) - tmp_digit; current_digit = (current_digit & 3) | (4*tmp_digit); if (((UX_SIGNED_FRACTION_DIGIT_TYPE) tmp_digit) < 0) { sign ^= UX_SIGN_BIT; sum_digit = G_UX_LSD(argument); tmp_digit = -sum_digit; borrow = (sum_digit != 0); P_UX_LSD(argument, tmp_digit); # if ( NUM_UX_FRACTION_DIGITS == 4) sum_digit = G_UX_FRACTION_DIGIT(argument, 2); tmp_digit = - (sum_digit + borrow); borrow = (sum_digit != 0) | borrow; P_UX_FRACTION_DIGIT(argument, 2, tmp_digit); sum_digit = G_UX_FRACTION_DIGIT(argument, 1); tmp_digit = - (sum_digit + borrow); borrow = (sum_digit != 0) | borrow; P_UX_FRACTION_DIGIT(argument, 1, tmp_digit); # endif current_digit = - (current_digit + borrow); } P_UX_MSD(argument, current_digit); NORMALIZE(argument); /* Last by not least, convert to radians */ MULTIPLY(argument, UX_PI_OVER_180, reduced_argument); UX_TOGGLE_SIGN(reduced_argument, sign); return quadrant; } /* ** UX_SINCOS is the common evaluation routine for all of the sin/cos and ** sind/cosd entry points. UX_SINCOS invokes the appropriate reduction ** routine (radian or degrees) and then performs 1 or 2 polynomial evaluation ** on the reduced argument to get the result (or results, for sincos and ** sincosd) */ #define ODD_POLY_FLAGS SQUARE_TERM | ALTERNATE_SIGN | POST_MULTIPLY #define EVEN_POLY_FLAGS SQUARE_TERM | ALTERNATE_SIGN #define SIN_POLY_FLAGS NUMERATOR_FLAGS( ODD_POLY_FLAGS ) #define COS_POLY_FLAGS DENOMINATOR_FLAGS( EVEN_POLY_FLAGS ) WORD UX_SINCOS( UX_FLOAT * unpacked_argument, WORD octant, WORD function_code, UX_FLOAT * unpacked_result) { WORD quadrant, poly_type; UX_FLOAT reduced_argument; U_WORD (* reduce)( UX_FLOAT *, WORD, UX_FLOAT *); /* Get the quadrant bits and the reduced argument */ reduce = (function_code & DEGREE) ? UX_DEGREE_REDUCE : UX_RADIAN_REDUCE; quadrant = reduce( unpacked_argument, octant, &reduced_argument ); function_code &= ~DEGREE; /* ** Select the polynomial coefficients and the form of the ** polynomial based on the quadrant the reduced argument ** lies in. NOTE: the difference between the sin and cos ** has been accounted for in the value of octant. */ if ( SINCOS_FUNC == function_code ) { poly_type = SIN_POLY_FLAGS | COS_POLY_FLAGS | NO_DIVIDE; /* Adjust location of sin/cos polynomials */ poly_type |= ( (quadrant & 1) ? SWAP : NULL ); } else if (quadrant & 1) /* We need to evaluate C(x^2) */ poly_type = SKIP | COS_POLY_FLAGS; else /* We need to evaluate x*S(x^2) */ poly_type = SKIP | SIN_POLY_FLAGS; /* ** Evaluate the polynomial and set the sign based on the quadrant */ EVALUATE_RATIONAL( &reduced_argument, SINCOS_COEF_ARRAY, SINCOS_COEF_ARRAY_DEGREE, poly_type, unpacked_result); if (quadrant & 2) UX_TOGGLE_SIGN(&unpacked_result[0], UX_SIGN_BIT); /* ** If this is a sincos entry point, set the sign on the second ** result */ if ((SINCOS_FUNC == function_code) && ((quadrant + 1) & 2)) UX_TOGGLE_SIGN(&unpacked_result[1], UX_SIGN_BIT); return 0; /* No error conditions for sin/cos */ } /* ** UX_TANCOT is the common evaluation routine fo tan, cot, tand and cotd. ** UX_TANCOT invokes the appropriate reduction routine (radian or degrees) and ** then computes tan or cot as the ratio of two polynomials ** ** An important difference between UX_TANCOT and UX_SINCOS is that for the ** tand/cotd routines, the reduced argument may be zero. Depending on the ** quadrant bits, the correct result would then be either 0 or +/- Inf. The ** common tan/cot evaluation routine detects the +/- Inf case and returns an ** unpacked result with its exponent field set to a large positive value, ** denoted by UX_INFINITY_EXPONENT. */ #if !defined(UX_TANCOT) # define UX_TANCOT __INTERNAL_NAME(ux_tancot__) #endif static WORD UX_TANCOT( UX_FLOAT * unpacked_argument, WORD octant, WORD function_code, UX_FLOAT * unpacked_result) { WORD quadrant, div_flag; UX_FLOAT reduced_argument; U_WORD (* reduce)(UX_FLOAT *, WORD, UX_FLOAT *); /* ** Get the quadrant bits and the reduced argument, check for ** zero and process accordingly. */ reduce = (function_code & DEGREE) ? UX_DEGREE_REDUCE : UX_RADIAN_REDUCE; quadrant = reduce( unpacked_argument, octant, &reduced_argument ); div_flag = ((quadrant + (function_code >> 3)) & 1) ? SWAP : 0; if (0 == G_UX_MSD(&reduced_argument)) { /* reduced argument is zero */ UX_SET_SIGN_EXP_MSD(unpacked_result, 0, UX_ZERO_EXPONENT, 0); if ( div_flag /* == SWAP */ ) { P_UX_EXPONENT(unpacked_result, UX_INFINITY_EXPONENT); P_UX_MSD(unpacked_result, UX_MSB); } return (function_code & TAN_FUNC) ? TAND_ODD_MULTIPLE_OF_90 : COTD_MULTIPLE_OF_180; } /* ** Evaluate z*P(z^2) and and Q(z^2) and perform the appropriate ** division. Set the sign bit according to the quadrant. */ EVALUATE_RATIONAL( &reduced_argument, TANCOT_COEF_ARRAY, TANCOT_COEF_ARRAY_DEGREE, NUMERATOR_FLAGS( SQUARE_TERM | ALTERNATE_SIGN | POST_MULTIPLY) | DENOMINATOR_FLAGS( SQUARE_TERM | ALTERNATE_SIGN) | div_flag, unpacked_result); if (quadrant & 1) UX_TOGGLE_SIGN(unpacked_result, UX_SIGN_BIT); return G_UX_SIGN(unpacked_result) ? COTD_NEG_OVERFLOW : COTD_POS_OVERFLOW; } /* ** Each of the of trig routines call a common routine C_UX_TRIG, to unpack the ** input argument and then dispatch the result to UX_SINCOS or UX_TANCOT ** evaluation routine. For sincos and sincosd entry points, if the return ** value is written by the unpack routine, the common routine must take care ** to write the second result. */ #if !defined(C_UX_TRIG) # define C_UX_TRIG __INTERNAL_NAME(C_ux_trig__) #endif #define F_C_NAN_OR_INF_MASK (SET_BIT(F_C_INF) | SET_BIT(F_C_NAN)) static void C_UX_TRIG( _X_FLOAT * packed_argument, WORD octant, WORD function_code, U_WORD const * class_to_action_map, WORD underflow_error, _X_FLOAT * packed_result OPT_EXCEPTION_INFO_DECLARATION ) { _X_FLOAT *second_value; WORD fp_class, overflow_error; UX_FLOAT unpacked_result[3], unpacked_argument; WORD (* trig_eval)( UX_FLOAT *, WORD, WORD, UX_FLOAT *); trig_eval = (SINCOS_FUNC & function_code) ? UX_SINCOS : UX_TANCOT; fp_class = UNPACK( packed_argument, &unpacked_argument, class_to_action_map, packed_result OPT_EXCEPTION_INFO_ARGUMENT ); if (0 > fp_class) { /* If this is a SINCOS evaluation, write second result */ if (SINCOS_FUNC == (function_code & ~DEGREE)) { second_value = ((1 << F_C_BASE_CLASS(fp_class)) & F_C_NAN_OR_INF_MASK) ? &packed_result[0] : (_X_FLOAT *) _X_ONE; _X_COPY(second_value, &packed_result[1]); } return; } overflow_error = trig_eval( &unpacked_argument, octant, function_code, unpacked_result); PACK( unpacked_result, packed_result, underflow_error, overflow_error OPT_EXCEPTION_INFO_ARGUMENT ); if (SINCOS_FUNC == (function_code & ~DEGREE)) { /* pack second result for sincos evaluations */ PACK( unpacked_result + 1, packed_result + 1, NOT_USED, NOT_USED OPT_EXCEPTION_INFO_ARGUMENT ); } } /* ** The following 6 entry points implement the user level x-float sin/cos and ** sind/cosd functions */ #define TRIG_ENTRY(oct, code, map, under) \ X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) \ { \ EXCEPTION_INFO_DECL \ DECLARE_X_FLOAT(packed_result) \ \ INIT_EXCEPTION_INFO; \ C_UX_TRIG( \ PASS_ARG_X_FLOAT(packed_argument), \ oct, code, map, under, \ PASS_RET_X_FLOAT(packed_result) \ OPT_EXCEPTION_INFO); \ RETURN_X_FLOAT(packed_result); \ } # #define TRIG_ENTRY_RR(oct, code, map, under) \ RR_X_PROTO(F_ENTRY_NAME, packed_result1, packed_result2, packed_argument) \ { \ EXCEPTION_INFO_DECL \ _X_FLOAT packed_result[2]; \ \ INIT_EXCEPTION_INFO; \ C_UX_TRIG( \ PASS_ARG_X_FLOAT(packed_argument), \ oct, code, map, under, \ packed_result /*PASS_RET_X_FLOAT(packed_result)*/ \ OPT_EXCEPTION_INFO); \ *packed_result1 = packed_result[0]; \ *packed_result2 = packed_result[1]; \ } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_SIN_NAME TRIG_ENTRY(0, SIN_FUNC, SIN_CLASS_TO_ACTION_MAP, NOT_USED) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_COS_NAME TRIG_ENTRY(2, COS_FUNC, COS_CLASS_TO_ACTION_MAP, NOT_USED) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_SINCOS_NAME TRIG_ENTRY_RR(0, SINCOS_FUNC, SINCOS_CLASS_TO_ACTION_MAP, NOT_USED) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_SIND_NAME TRIG_ENTRY(0, SIND_FUNC, SIND_CLASS_TO_ACTION_MAP, SIND_UNDERFLOW) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_COSD_NAME TRIG_ENTRY(2, COSD_FUNC, COSD_CLASS_TO_ACTION_MAP, NOT_USED) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_SINCOSD_NAME TRIG_ENTRY_RR(0, SINCOSD_FUNC, SINCOSD_CLASS_TO_ACTION_MAP, SIND_UNDERFLOW) /* ** The following 4 entry points implement the user level x-float tan/cot and ** tand/cotd functions */ #undef F_ENTRY_NAME #define F_ENTRY_NAME F_TAN_NAME TRIG_ENTRY(0, TAN_FUNC, TAN_CLASS_TO_ACTION_MAP, NOT_USED) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_COT_NAME TRIG_ENTRY(0, COT_FUNC, COT_CLASS_TO_ACTION_MAP, NOT_USED) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_TAND_NAME TRIG_ENTRY(0, TAND_FUNC, TAND_CLASS_TO_ACTION_MAP, TAND_UNDERFLOW) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_COTD_NAME TRIG_ENTRY(0, COTD_FUNC, COTD_CLASS_TO_ACTION_MAP, NOT_USED) #if defined(MAKE_INCLUDE) @divert -append divertText precision = ceil(UX_PRECISION/8) + 4; # undef TABLE_NAME START_TABLE; TABLE_COMMENT("sin class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "SIN_CLASS_TO_ACTION_MAP\t"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(6) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("cos class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "COS_CLASS_TO_ACTION_MAP\t"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(5) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 3) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 3) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 1) ); TABLE_COMMENT("sincos class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "SINCOS_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(4) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 4) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 4) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("sind class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "SIND_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(3) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 5) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 5) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("cosd class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "COSD_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(2) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 6) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 6) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 1) ); TABLE_COMMENT("sincosd class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "SINCOSD_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 7) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 7) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("Data for the above mappings"); PRINT_U_TBL_ITEM( /* data 1 */ ONE); PRINT_U_TBL_ITEM( /* data 2 */ SIN_OF_INFINITY); PRINT_U_TBL_ITEM( /* data 3 */ COS_OF_INFINITY); PRINT_U_TBL_ITEM( /* data 4 */ SINCOS_OF_INFINITY); PRINT_U_TBL_ITEM( /* data 5 */ SIND_OF_INFINITY); PRINT_U_TBL_ITEM( /* data 6 */ COSD_OF_INFINITY); PRINT_U_TBL_ITEM( /* data 7 */ SINCOSD_OF_INFINITY); TABLE_COMMENT("tan class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "TAN_CLASS_TO_ACTION_MAP\t"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); PRINT_U_TBL_ITEM( /* data 1 */ TAN_OF_INFINITY); TABLE_COMMENT("tand class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "TAND_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); PRINT_U_TBL_ITEM( /* data 1 */ TAND_OF_INFINITY); TABLE_COMMENT("cot class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "COT_CLASS_TO_ACTION_MAP\t"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 3) ); PRINT_U_TBL_ITEM( /* data 1 */ COT_OF_INFINITY); PRINT_U_TBL_ITEM( /* data 2 */ COT_OF_ZERO); PRINT_U_TBL_ITEM( /* data 3 */ COT_OF_NEG_ZERO); TABLE_COMMENT("cotd class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "COTD_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ERROR, 3) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 4) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 5) ); PRINT_U_TBL_ITEM( /* data 1 */ COTD_OF_INFINITY); PRINT_U_TBL_ITEM( /* data 2 */ COTD_POS_OVERFLOW); PRINT_U_TBL_ITEM( /* data 3 */ COTD_NEG_OVERFLOW); PRINT_U_TBL_ITEM( /* data 4 */ COTD_OF_ZERO); PRINT_U_TBL_ITEM( /* data 5 */ COTD_OF_NEG_ZERO); TABLE_COMMENT("Unpacked constants pi/180"); PRINT_UX_TBL_ADEF_ITEM( "UX_PI_OVER_180\t\t", pi/180); TABLE_COMMENT("Packed constants 1"); PRINT_F_TBL_ADEF_ITEM( "_X_ONE\t\t\t", 1); /* ** Now we compute the "high" digit of 1/90 and 1/12. For 1/12, we would ** to compute and integer R, such that trunc(E/12) = UMULH(R*E). We ** state without proof here that if the number of bits per digit is ** 2*k + d, where d = 0 or 1, then N = 2^(2*k+d) + 2^(3-d) is divisible ** by 12 and taking R = N/12 gives the appropriate result. */ PRINT_UX_FRACTION_DIGIT_TBL_VDEF_ITEM( "MSD_OF_RECIP_90\t\t", nint(bldexp(1/90, BITS_PER_UX_FRACTION_DIGIT_TYPE + 5))); PRINT_UX_FRACTION_DIGIT_TBL_VDEF_ITEM( "RECIP_TWELVE\t\t", ceil(bldexp(1/12, BITS_PER_UX_FRACTION_DIGIT_TYPE))); /* ** Now generate coefficients for computing sin. */ function __sin(x) { if (x == 0) return 1; else return sin(x)/x; } save_precision = precision; precision = ceil(UX_PRECISION/8) + 8; max_arg = pi/4; remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT + REMES_SQUARE_ARG, 0, max_arg, __sin, UX_PRECISION, &sin_degree, &ux_rational_coefs); /* ** Now generate coefficients for computing cos and add them to the ** ux_rational coefficient array so that they can be accessed by the ** rational evaluation routine. */ function __cos(x) { return cos(x); } remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT + REMES_SQUARE_ARG, 0, max_arg, __cos, UX_PRECISION, &cos_degree, &dummy_coefs); precision = save_precision; k = sin_degree + 1; for (i = 0; i <= cos_degree; i++) ux_rational_coefs[k++] = dummy_coefs[i]; TABLE_COMMENT("Fixed point coefficients for sin and cos evaluation"); PRINT_FIXED_128_TBL_ADEF("SINCOS_COEF_ARRAY\t"); degree = print_ux_rational_coefs(sin_degree, cos_degree, 0); PRINT_WORD_DEF("SINCOS_COEF_ARRAY_DEGREE", degree ); /* ** Last but not least, get the rational coefficients for tan/cot */ function __tan(x) { if (x == 0) return 1; else return tan(x)/x; } save_precision = precision; precision = ceil(UX_PRECISION/8) + 8; max_arg = pi/4; remes(REMES_FIND_RATIONAL + REMES_RELATIVE_WEIGHT + REMES_SQUARE_ARG, 0, max_arg, __tan, UX_PRECISION, &num_degree, &den_degree, &ux_rational_coefs); precision = save_precision; TABLE_COMMENT("Fixed point coefficients for tan and cot evaluation"); PRINT_FIXED_128_TBL_ADEF("TANCOT_COEF_ARRAY\t"); degree = print_ux_rational_coefs(num_degree, den_degree, 0); PRINT_WORD_DEF("TANCOT_COEF_ARRAY_DEGREE", degree ); TABLE_COMMENT("Unpacked value of pi/4"); PRINT_UX_TBL_ADEF_ITEM( "UX_PI_OVER_FOUR", pi/4); END_TABLE; @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ $outText = "$tableText\n\n$defineText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants trigonometric " . \ "routines", __FILE__ ); \ print "$headerText\n\n$outText\n"; #endif LIBRARY/float128/dpml_expm1.c0000644€­ Q01134020000003462515113665770014633 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef BASE_NAME # define BASE_NAME EXPM1_BASE_NAME #endif #if !defined F_ENTRY_NAME # define F_ENTRY_NAME F_EXPM1_NAME #endif /* ** Get build file name. Since the constant table is shared, alway define ** MAKE_COMMON */ #define MAKE_COMMON #if !defined(BUILD_FILE_NAME) # define BUILD_FILE_NAME F_POW_BUILD_FILE_NAME #endif /* ** Pick up the latest default DPML definitions. however, don't let ** dpml_private.h default TABLE_NAME. This has already been done or over- ** ridden when the constant file was generated. */ #define DONT_DEFAULT_TABLE_NAME 1 #define NEW_DPML_MACROS 1 #include "dpml_private.h" #if defined(UNDEF_TABLE_NAME) # undef TABLE_NAME #endif /* ** Pick up common build time constants and definitions from the generated ** power constant table file */ #define DEFINE_SYMBOLIC_CONSTANTS 1 #include STR( BUILD_FILE_NAME ) /* ** Pick up common compile time constants and definitions */ #include "dpml_pow.h" /* ** Design Overview: ** --------------- ** ** The implementation of expm1 is based on the implementation of exp(x). ** Specifically, exp is computed as follows: ** ** o Let fm be the value of x/ln2 rounded to POW2_K bits, where POW2_K ** is a small positive integer value. ** o Let I and j be the integer and fraction bits of fm and z = x - ln2*fm ** ** Then ** ** e^x = 2^(I + j/2^POW2_K)*e^z ** = 2^I * 2^(j/2^POW2_K) * [1 + z*p(z)] ** ** where p(z) is a polynomial approximation to (e^x - 1)/x. The value of ** 2^(j/2^POW2_K) is obtained from a table in hi and lo pieces: T(j) the ** correctly rounded value of 2^(j/2^POW2_K) and R(j) = ** [2^(j/2^POW2_K) - T(j)]/T(j). Then ** ** e^x = 2^I * [ T(j) + T(j)* R(j)] * [ 1 + z*p(z) ] ** = 2^I * T(j) * [ 1 + R(j)] * [ 1 + z*p(z) ] ** = 2^I * T(j) * [ 1 + R(j) + z*p(z) + R(j)*z*p(z) ] ** ** If we denote by V(I,j) the product 2^I*T(j) we have ** ** e^x = V(I,j) + V(I,j)*{ R(j) + [1 + R(j)]*z*p(z) } ** ** Note that V(I,j) is exact and there is an alignment shift of at least ** POW2_K + 1 bits between V(I,j) and V(I,j)*{ R(j) + [1 + R(j)]*z*p(z) }, ** there by allowing for a very accurate final result. ** ** Based on the above, e^x - 1 is simply ** ** expm1(x) = V(I,j) + V(I,j)*{ R(j) + [1 + R(j)]*z*p(z) } - 1. (1) ** ** Note that the polynomial p(z) has the form p(z) = 1 + z*q(z). If we ** define U(j,z) = R(j)*(1 + z) + z^2*q(z) and W(j,z) = U(j,z) + z, then ** ** expm1(x) = V(I,j) + V(I,j)*{ R(j) + [1 + R(j)]*z*p(z) } - 1 ** = V(I,j) + V(I,j)*{ R(j) + [1 + R(j)]*z*[1 + z*q(z)] } - 1 ** = V(I,j) + V(I,j)*{ R(j) + [1 + R(j)]*z*[1 + z*q(z)] } - 1 ** = V(I,j) + V(I,j)*{ R(j)*(1 + z) + z^2*q(z) + z + ** R(j)*z^2*q(z) } - 1 ** = V(I,j) + V(I,j)*{ U(j,z) + z + R(j)*z^2*q(z) } - 1 ** = V(I,j) + V(I,j)*{ W(j,z) + R(j)*z^2*q(z) } - 1. ** ** Finally, we note that for machine precision arithmetic, the term ** R(j)*z^2*q(z) is insignificant relative to W(j,z) so that ** ** expm1(x) = V(I,j) + V(I,j)*W(j,z)) - 1 (2) ** ** The trick in evaluating (2) is determining where to add the -1 term so ** that no accuracy is lost. The tack chosen in this routine is to divide ** the domain of expm1 into several subdomains based on the value of I. ** ** NOTE: When backup precision is available, only one of the subdomains, ** the polynomial range need be implemented. ** ** ** Constant Range: ** ** If I < -(F_PRECISION + 1), all of the terms except -1 are insignificant ** in the current precision, so just return -1 ** ** Hi/lo Range: ** ** If -(F_PRECISION + 1) <= I <= -2, -1 is the dominate term, but ** the sum V(I,j) - 1 will lose some precision. In this case, we ** break V(I,j) - 1 into hi and lo pieces as follows: ** ** hi = V(I,j) - 1 ** lo = V(I,j) - (hi + 1) ** ** and then write (2) as ** ** expm1(x) = hi + [ lo + V(I,j)*W(j,z)] ** ** Problem Range: ** ** When I = 0 or -1, V(I,j) is very close to 1, so that V(I,j) - 1 can be ** very small (zero in fact), which effectively eliminates the alignment ** shift required to maintain accuracy. In this case, we need to reorder ** the sum in (1) in order to restore the original overhang. Recalling ** that W(j,z) = U(j,z) + z, and denoting V(I,j) - 1 by V1(I,j), ** ** expm1(x) = V(I,j) + V(I,j)*W(j,z) - 1 ** = [V(I,j) - 1] + V(I,j)*[ U(j,z) + z ] ** = V1(I,j) + [ V1(I,j) + 1 ]*[ U(j,z) + z ] ** = V1(I,j) + U(j,z) + z + V1(I,j)*[ U(j,z) + z ] ** = V1(I,j) + z + U(j,z) + V1(I,j)*W(j,z) ** ** Now, suppose that z, the reduced argument is computed in hi and lo ** pieces. Then the above equation becomes: ** ** expm1(x) = V1(I,j) + z + U(j,z) + V1(I,j)*W(j,z) ** = [V1(I,j) + z_hi] + [z_lo + U(j,z) + V1(I,j)*W(j,z)] ** ** Note that [ V1(I,j) + z_hi ]/[ z_lo + U(j,z) + V1(I,j)*W(j,z) ] ~ ** [ V1(I,j) + z ]/[ z^2/2 + V1(I,j)*z ] so that the first term overhangs ** the second by at least POW2_K bits. With all of the above in mind, the ** final calculation looks like: ** ** hi = V1(I,j) + z_hi ** lo = (z_hi - (hi - V1(I,j))) + z_lo ** expm1(x) = hi + { lo + [ U(j,z) + V1(I,j)*W(j,z) ] } ** ** Normal Range: ** ** When 1 <= I <= F_PRECISION - 1, V(I,j) - 1 is exact and loses at most ** one bit of alignment shift. In this case we can compute expm1 as ** ** expm1(x) = [V(I,j) - 1] + V(I,j)*W(j,z) ** ** Big range: ** ** When F_PRECISION <= I, then 1 is insignificant relative to V(I,j). ** In this case we can compute expm1 as ** ** expm1(x) = V(I,j) + [ V(I,j)*W(j,z) - 1 ] ** ** Note that on this range, overflow might occur. ** ** Polynomial Range: ** ** When |x| is relatively small, then I and j are both zero and no ** alignment shift is available using (2). In this situation, we ** base are approximation on the Taylor series expansion: ** ** expm1(x) = sum { x^n/n! | n = 1, ... } ** ** ** The following diagram summerizes the evaluation ranges for expm1 ** ** -inf 0 +inf ** +----------+---------+--------+---+---+--------+-----------+--------+ ** | | | | | | | | ** constant hi/lo problem poly problem normal big */ /* Select data type function dependent table values */ #define SUFFIX BACKUP_SELECT(R, F) #define EXPM1_HI_CHECK PASTE( EXPM1_HI_CHECK_, SUFFIX ) #define EXPM1_LO_CHECK PASTE( EXPM1_LO_CHECK_, SUFFIX ) #define POLY_CHECK PASTE( EXPM1_POLY_CHECK_, SUFFIX ) #define POW2_MAX_SCALE PASTE( POW2_MAX_SCALE_, SUFFIX ) #define POLY(x) BACKUP_SELECT( EXPM1_POLY_R(x), EXPM1_POLY_F(x) ) #define BIG ACC_BIG /* 'big' for accurate pow */ /* Miscellaneous local definitions */ #define ALIGN_WITH_I(n) ((WORD) (n) << POW2_K) F_TYPE F_ENTRY_NAME( F_TYPE x ) { EXCEPTION_RECORD_DECLARATION B_TYPE fm, z, w, t, v, one; B_UNION stack_tmp_u; F_UNION stack_tmp_v; U_WORD status_word; WORD m, i, j; # if !USE_BACKUP B_TYPE z_hi, z_lo, u, v1; # endif /* ** Weed out: near overflow, certain -1 cases, NaN's, Inf's, denorms and ** polynomial cases. */ stack_tmp_v.f = x; i = stack_tmp_v.F_HI_WORD; m = i & MAKE_MASK(F_SIGN_BIT_POS, 0); IF_VAX(i &= MAKE_MASK(F_SIGN_BIT_POS + 1, 0);) /* ** The product x*(1/ln2) is on the critical path of this routine. ** Because the code is structured with a branch prior to the multiply, ** it is difficult for some compilers to schedule the load of ** the constant 1/ln2 early enough to avoid delaying the reduced argument ** computation. To avoid this delay, we preload (1/ln2) */ t = RECIP_LN2; one = ONE; /* ** Screen out cases where expm1(x) = -1, or overflow as well as x = NaN ** or infinity. We also need to screen out denorms and small argument ** (polynomial range). In order to avoid code schedule issues, pre-compute ** the check for the polynomial range. */ j = (m <= POLY_CHECK); if (((U_WORD) i >= EXPM1_HI_CHECK) && ((U_WORD) (i - F_SIGN_BIT_MASK) >= EXPM1_LO_CHECK)) goto possible_problems; if (j) goto poly_range; /* ** compute the reduced argument, z. */ w = ((B_TYPE) x) * t; INIT_FPU_STATE_AND_ROUND_TO_NEAREST(status_word); t = BIG + w; /* Save for getting m later on */ fm = t - BIG; BACKUP_SELECT( z = w - fm;, z_hi = x - fm*LN2_HI; z_lo = fm*LN2_LO; z = z_hi - z_lo; ) /* ** Now get the bits of m as a integer and break it up into I and j */ stack_tmp_u.f = t; GET_LOW_32_BITS(m, stack_tmp_u); j = (m & POW2_INDEX_MASK) << POW2_INDEX_POS; i = m & (~POW2_INDEX_MASK); BACKUP_SELECT( w = EXPM1_RED_POLY_R(z);, u = POW2_LO_OV_POW2_HI(j)*(one + z); u = EXPM1_RED_POLY_F( u, z ); w = u + z; ) /* Scale 2^(j/2^POW2_K) by 2^I, so that only one multiply is done */ IF_SMALL_WORD(IPOW2_LO(stack_tmp_u, j);) m = IPOW2(j); m = W_ADD_TO_EXP_FIELD(m, ALIGN_SCALE_WITH_EXP(i)); stack_tmp_u.B_HI_WORD = m; IF_VAX( m &= MAKE_MASK(F_SIGN_BIT_POS + 1, 0); ) v = stack_tmp_u.f; /* We no longer care about the rounding mode, so restore it. */ RESTORE_FPU_STATE(status_word); # if USE_BACKUP /* Scale polynomial result and check for possible overflow */ z = (v - one) + v*w; if (m > POW2_MAX_SCALE) goto boundary_check; # else /* ** Strip out the big case since once thats done, its safe to use ** V(i,j) in arithmetic expressions */ if ( i >= ALIGN_WITH_I(F_PRECISION)) goto big_region; /* * Normal, problem and hi/lo ranges get here */ v1 = v - one; if (i >= ALIGN_WITH_I(1)) goto normal_region; if (i <= ALIGN_WITH_I(-2)) goto hi_lo_region; /* problem_region: */ t = v1 + z; z_lo = (z_hi - (t - v1)) - z_lo; z = t + (z_lo + (u + v1*w)); goto return_z; hi_lo_region: z = v1 + ((v - (v1 + one)) + w*v); goto return_z; normal_region: z = v1 + w*v; goto return_z; big_region: /* ** Screen for overflows with moderate care. If no overflow possible, ** just go ahead and compute the result. At this point, m is the ** hi bits of V(I,j) = 2^I*T(j) */ if (m > POW2_MAX_SCALE) goto boundary_check; z = v + (v*w - one); /* Fall through */ return_z: # endif return (F_TYPE) z; poly_range: /* ** At this point x is small and m is the high word of |x|. If x is ** really tiny (including denorms), we can just return x. Otherwise ** compute the series evaluation for expm1. */ if (m > ALIGN_W_EXP_FIELD(F_EXP_BIAS - F_PRECISION - F_NORM)) x = POLY(x); return x; boundary_check: /* ** Do the "final" multiple. However, when no backup is available ** the final multiply might involve a NaN or dirty zero, so we need to ** do this scaling carefully */ IF_NO_BACKUP( /* Multiply by table entry */ t = POW2_HI(j); z = t + t*w; ) stack_tmp_u.f = z; m = stack_tmp_u.B_HI_WORD; IF_NO_BACKUP( /* "Multiply" by 2^i */ m = W_ADD_TO_EXP_FIELD(m, ALIGN_SCALE_WITH_EXP(i)); stack_tmp_u.B_HI_WORD = m; z = stack_tmp_u.f; ) /* Isolate exponent field and check for overflow */ j = EXPM1_OVERFLOW; IF_VAX( m &= B_SIGN_EXP_MASK; ) if ((U_WORD) m >= ALIGN_WITH_B_TYPE_EXP(F_MAX_BIN_EXP + B_EXP_BIAS + 1)) goto do_exception; return (F_TYPE) z; NaN_or_Inf: /* * If we get here, i and m are the high words of x and |x| * respectively. If m doesn't contain all of the bits of x, * check for non-zero bits in the low word */ m <<= (BITS_PER_WORD - F_EXP_POS); IF_SMALL_WORD( m = m OR_LOW_BITS_SET(stack_tmp_v); ) if ( m == 0 ) { /* x was +/- infinity */ j = (i & F_SIGN_BIT_MASK) ? EXPM1_OF_NEG_INF : EXPM1_OF_INF; goto do_exception; } return x; return_minus_1: return (F_TYPE) -one; possible_problems: /* ** If we get here, x is: large or an IEEE special case (NaN or Inf). ** Start by weeding out NaN and infinities */ IF_IEEE( /* Screen out NaN's and Inf's */ if (m >= F_EXP_MASK) goto NaN_or_Inf; ) /* ** If x is negative, expm1(x) = -1 to machine precision. Otherwise, ** expm1(x) overflows. ** ** NOTE: at this point i is the high word of x and m ** is i &= ~F_SIGN_BIT_MASK */ if (i & F_SIGN_BIT_MASK) goto return_minus_1; j = EXP_OVERFLOW; do_exception: GET_EXCEPTION_RESULT_1(j, x, x); return x; } LIBRARY/float128/dpml_exp_x.h0000644€­ Q01134020000002244315113665770014724 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" static const TABLE_UNION TABLE_NAME[] = { /* exp class-to-action-mapping */ /* 000 */ DATA_1x2( 0x00ebb408, 0x54514510 ), /* expm1 class-to-action-mapping */ /* 008 */ DATA_1x2( 0x00650408, 0x44104100 ), /* sinh class-to-action-mapping */ /* 016 */ DATA_1x2( 0x00410400, 0x34104100 ), /* cosh class-to-action-mapping */ /* 024 */ DATA_1x2( 0x00610408, 0x24514510 ), /* tanh class-to-action-mapping */ /* 032 */ DATA_1x2( 0x00651408, 0x14104100 ), /* Data for the class to action mappings */ /* 040 */ DATA_1x2( 0x00000001, 0x00000000 ), /* 048 */ DATA_1x2( 0x00000024, 0x00000000 ), /* 056 */ DATA_1x2( 0x00000023, 0x00000000 ), /* Constant structure for exp based evaluations */ /* High digits of 1/ln2, ln2 and binary exponent of ln2 */ /* 064 */ DATA_1x2( 0xae0bf85e, 0x5c551d94 ), /* 072 */ DATA_1x2( 0xd1cf79ac, 0xb17217f7 ), /* 080 */ DATA_1x2( 0x00000000, 0x00000000 ), /* ln2_lo = ln2 - ln2_hi in unpacked form */ /* 088 */ NEG, 0-66, DATA_2x2( 0xf0342542, 0xd871319f, 0x359d2749, 0xfc32f366 ), /* Polynomial degree */ /* 112 */ DATA_1x2( 0x00000016, 0x00000000 ), /* Fixed point coefficients for exp/expm1 evaluation */ /* 120 */ DATA_4( 0x0393a749, 0x0219c729, 0x00000000, 0x00000000 ), /* 136 */ DATA_4( 0xb47b630c, 0x2e468fc7, 0x00000000, 0x00000000 ), /* 152 */ DATA_4( 0x7f5c80bd, 0xca85ad65, 0x00000003, 0x00000000 ), /* 168 */ DATA_4( 0x49b64eae, 0xd268b2cb, 0x0000004b, 0x00000000 ), /* 184 */ DATA_4( 0xeb90c661, 0x9e18d9e0, 0x000005a0, 0x00000000 ), /* 200 */ DATA_4( 0x8fe824f4, 0x1dc17846, 0x0000654b, 0x00000000 ), /* 216 */ DATA_4( 0x2631a1a2, 0xf9ccf184, 0x0006b9fc, 0x00000000 ), /* 232 */ DATA_4( 0x2f079eeb, 0x9ccece54, 0x006b9fcf, 0x00000000 ), /* 248 */ DATA_4( 0xf3934011, 0x301f26ef, 0x064e5d2a, 0x00000000 ), /* 264 */ DATA_4( 0x14562c06, 0xa1b4271d, 0x5849184e, 0x00000000 ), /* 280 */ DATA_4( 0x97a1173a, 0x3625ed56, 0x7bb63bfe, 0x00000004 ), /* 296 */ DATA_4( 0x4062e495, 0x89c71fc2, 0xcc8acfea, 0x00000035 ), /* 312 */ DATA_4( 0xf9b4c26e, 0xeb8e5ddf, 0xc9f6ef13, 0x0000024f ), /* 328 */ DATA_4( 0x198cd02d, 0x338faac2, 0xe3a556c7, 0x0000171d ), /* 344 */ DATA_4( 0x0e2c1d71, 0xd00d00d0, 0x00d00d00, 0x0000d00d ), /* 360 */ DATA_4( 0x66cfb7b5, 0x80680680, 0x06806806, 0x00068068 ), /* 376 */ DATA_4( 0xd829d3b1, 0x82d82d82, 0x2d82d82d, 0x002d82d8 ), /* 392 */ DATA_4( 0x1113746f, 0x11111111, 0x11111111, 0x01111111 ), /* 408 */ DATA_4( 0x55555aa3, 0x55555555, 0x55555555, 0x05555555 ), /* 424 */ DATA_4( 0x55555380, 0x55555555, 0x55555555, 0x15555555 ), /* 440 */ DATA_4( 0xfffffffe, 0xffffffff, 0xffffffff, 0x3fffffff ), /* 456 */ DATA_4( 0x00000000, 0x00000000, 0x00000000, 0x80000000 ), /* 472 */ DATA_4( 0x00000000, 0x00000000, 0x00000000, 0x80000000 ), /* 488 */ DATA_1x2( 0x00000001, 0x00000000 ), /* 1 in unpacked format */ /* 496 */ POS, 0001, DATA_2x2( 0x00000000, 0x80000000, 0x00000000, 0x00000000 ), /* Constant structure for exp10 based evaluations */ /* High digits of ln10/ln2, ln2/ln10 and binary exponent of ln2/ln10 */ /* 520 */ DATA_1x2( 0xcd1b8afe, 0xd49a784b ), /* 528 */ DATA_1x2( 0xfbcff799, 0x9a209a84 ), /* 536 */ DATA_1x2( 0x000000-1, 0x00000000 ), /* ln2_ov_ln10_lo = ln2 - ln2_ov_ln10__hi in unpacked form */ /* 544 */ NEG, 0-66, DATA_2x2( 0xe906dd0f, 0xe0ed4ca7, 0x785c196c, 0xb2a59e75 ), /* Polynomial degree */ /* 568 */ DATA_1x2( 0x00000016, 0x00000000 ), /* Fixed point coefficients for exp10 evaluation */ /* 576 */ DATA_4( 0xe12a5f3d, 0xaa326d76, 0x0005d18c, 0x00000000 ), /* 592 */ DATA_4( 0x6a135c14, 0xbb46d2d7, 0x0037bd19, 0x00000000 ), /* 608 */ DATA_4( 0x74d6a84b, 0x2188762e, 0x01fba820, 0x00000000 ), /* 624 */ DATA_4( 0xe5e25723, 0x10a5eeba, 0x11396f18, 0x00000000 ), /* 640 */ DATA_4( 0x246ea126, 0xb3fcd05a, 0x8e20e630, 0x00000000 ), /* 656 */ DATA_4( 0x20dd37fd, 0x11f8f23a, 0x570fb29c, 0x00000004 ), /* 672 */ DATA_4( 0x64bf3431, 0x167b5d1d, 0x0af8fbff, 0x00000020 ), /* 688 */ DATA_4( 0x854435f8, 0xb407c79f, 0xa8177bc6, 0x000000de ), /* 704 */ DATA_4( 0x0616e83b, 0xaef77a1b, 0x7a612e29, 0x000005aa ), /* 720 */ DATA_4( 0xd3c5fba9, 0x119b2348, 0x15a5882e, 0x00002273 ), /* 736 */ DATA_4( 0x1e07d507, 0x20d8613a, 0x096fc05f, 0x0000c27f ), /* 752 */ DATA_4( 0x3dd8f81c, 0x7f472bc7, 0xabb213ac, 0x0003f59f ), /* 768 */ DATA_4( 0x91a76481, 0x674c9f45, 0xb2d182af, 0x0012ea52 ), /* 784 */ DATA_4( 0x893bb4f4, 0xc9822f93, 0x1764f507, 0x005225f1 ), /* 800 */ DATA_4( 0xf92f4908, 0xf088ae28, 0x5fdaa5cd, 0x014116b0 ), /* 816 */ DATA_4( 0xaa4224b1, 0xc160bba8, 0x0ccea1ac, 0x045b937f ), /* 832 */ DATA_4( 0x6ebee310, 0xd9f3dcd3, 0x23e45aeb, 0x0d3f6b84 ), /* 848 */ DATA_4( 0x9124b3bc, 0x5c654225, 0x3a9aec44, 0x22853ffa ), /* 864 */ DATA_4( 0xd9f90d3b, 0xea51f65e, 0xf6631131, 0x4af5d827 ), /* 880 */ DATA_4( 0x0d46ba57, 0x6a4f9d82, 0xf1652304, 0x82382c8e ), /* 896 */ DATA_4( 0x2d65a6ec, 0x80a99ce5, 0xe753443a, 0xa9a92639 ), /* 912 */ DATA_4( 0x82d30a2c, 0xea56d62b, 0xaaa8ac16, 0x935d8ddd ), /* 928 */ DATA_4( 0x00000000, 0x00000000, 0x00000000, 0x40000000 ), /* 944 */ DATA_1x2( 0x00000002, 0x00000000 ), /* Fixed point coefficients for sinh/cosh evaluation */ /* 952 */ DATA_2x2( 0x00000000, 0x00000000, 0x00000000, 0x00000000 ), /* 968 */ DATA_4( 0x84e45693, 0x2e4690eb, 0x00000000, 0x00000000 ), /* 984 */ DATA_4( 0x12ffd219, 0xd268b21c, 0x0000004b, 0x00000000 ), /* 1000 */ DATA_4( 0x45bbf199, 0x1dc17873, 0x0000654b, 0x00000000 ), /* 1016 */ DATA_4( 0xde16535a, 0x9ccece4d, 0x006b9fcf, 0x00000000 ), /* 1032 */ DATA_4( 0x9e5e08b2, 0xa1b4271d, 0x5849184e, 0x00000000 ), /* 1048 */ DATA_4( 0x391817aa, 0x89c71fc2, 0xcc8acfea, 0x00000035 ), /* 1064 */ DATA_4( 0x19c8d92f, 0x338faac2, 0xe3a556c7, 0x0000171d ), /* 1080 */ DATA_4( 0x66ce9bd9, 0x80680680, 0x06806806, 0x00068068 ), /* 1096 */ DATA_4( 0x11137719, 0x11111111, 0x11111111, 0x01111111 ), /* 1112 */ DATA_4( 0x5555537e, 0x55555555, 0x55555555, 0x15555555 ), /* 1128 */ DATA_4( 0x00000000, 0x00000000, 0x00000000, 0x80000000 ), /* 1144 */ DATA_1x2( 0x00000001, 0x00000000 ), /* 1152 */ DATA_4( 0xab2871a0, 0x021a7acf, 0x00000000, 0x00000000 ), /* 1168 */ DATA_4( 0x72a41925, 0xca853bed, 0x00000003, 0x00000000 ), /* 1184 */ DATA_4( 0xf7b71018, 0x9e18f89a, 0x000005a0, 0x00000000 ), /* 1200 */ DATA_4( 0x5c564d82, 0xf9ccecdb, 0x0006b9fc, 0x00000000 ), /* 1216 */ DATA_4( 0xee64c398, 0x301f275e, 0x064e5d2a, 0x00000000 ), /* 1232 */ DATA_4( 0x108a94fe, 0x3625ed50, 0x7bb63bfe, 0x00000004 ), /* 1248 */ DATA_4( 0x376e0580, 0xeb8e5de0, 0xc9f6ef13, 0x0000024f ), /* 1264 */ DATA_4( 0x0ccc1e48, 0xd00d00d0, 0x00d00d00, 0x0000d00d ), /* 1280 */ DATA_4( 0xd82e2a61, 0x82d82d82, 0x2d82d82d, 0x002d82d8 ), /* 1296 */ DATA_4( 0x55555442, 0x55555555, 0x55555555, 0x05555555 ), /* 1312 */ DATA_4( 0x00000001, 0x00000000, 0x00000000, 0x40000000 ), /* 1328 */ DATA_4( 0x00000000, 0x00000000, 0x00000000, 0x80000000 ), /* 1344 */ DATA_1x2( 0x00000001, 0x00000000 ), }; #define EXP_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 0)) #define EXPM1_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 8)) #define SINH_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 16)) #define COSH_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 24)) #define TANH_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 32)) #define EXP_CONSTANT_TABLE_ADDRESS ((UX_FRACTION_DIGIT_TYPE *) ((char *) TABLE_NAME + 64)) #define EXP_DEGREE_INDEX 6 #define EXP_COEF_INDEX 7 #define UX_ONE ((UX_FLOAT *) ((char *) TABLE_NAME + 496)) #define EXP10_CONSTANT_TABLE_ADDRESS ((UX_FRACTION_DIGIT_TYPE *) ((char *) TABLE_NAME + 520)) #define SINHCOSH_COEF_ARRAY ((FIXED_128 *) ((char *) TABLE_NAME + 952)) #define SINHCOSH_COEF_ARRAY_DEGREE (( signed __int64 ) 0x000000000000000b ) LIBRARY/float128/dpml_ux.h0000644€­ Q01134020000010313415113665770014232 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if !defined(DPML_UX_H) #define DPML_UX_H #if !defined(X_FLOAT) # define X_FLOAT #endif #define NEW_DPML_MACROS 1 #define DPML_PROTOTYPES_H #include "dpml_private.h" /* Alignment macros for 16-byte floating point types _Quad and _Decimal128. */ #if defined(_WIN32)||defined(_WIN64) #define F128_ALIGN_16 __declspec(align(16)) #else #if !defined(HPUX_OS) #define F128_ALIGN_16 __attribute__((aligned(16))) #else #define F128_ALIGN_16 #endif #endif /* ** Types: ** ** Define the basic data types that are used by the unpacked x_float routines ** as well as macros to access their fields and define specific values */ typedef INT_32 UX_SIGN_TYPE; typedef INT_32 UX_EXPONENT_TYPE; typedef U_INT_32 UX_UNSIGNED_EXPONENT_TYPE; typedef U_WORD UX_FRACTION_DIGIT_TYPE; typedef WORD UX_SIGNED_FRACTION_DIGIT_TYPE; #define BITS_PER_UX_SIGN_TYPE 32 #define BITS_PER_UX_EXPONENT_TYPE 32 #define BITS_PER_UX_FRACTION_DIGIT_TYPE BITS_PER_WORD #define NUM_UX_FRACTION_DIGITS (128/BITS_PER_UX_FRACTION_DIGIT_TYPE) #define NUM_X_FRACTION_DIGITS (128/BITS_PER_UX_FRACTION_DIGIT_TYPE) #if (VAX_FLOATING) || (ENDIANESS == big_endian) # define DIGIT(n) digit[n] #else # define DIGIT(n) digit[NUM_UX_FRACTION_DIGITS - 1 - (n)] #endif typedef struct F128_ALIGN_16 { UX_FRACTION_DIGIT_TYPE digit[ NUM_X_FRACTION_DIGITS ]; } _X_FLOAT; #define G_X_DIGIT(p,n) (((_X_FLOAT *)(p))->DIGIT(n)) #define P_X_DIGIT(p,n,v) (((_X_FLOAT *)(p))->DIGIT(n) = (v)) #define X_TOGGLE_SIGN(p,v) (((_X_FLOAT *)(p))->DIGIT(0) ^= (v)) #define SHIFT F_EXP_WIDTH #define CSHIFT (BITS_PER_UX_FRACTION_DIGIT_TYPE - F_EXP_WIDTH) typedef struct { UX_SIGN_TYPE sign; UX_EXPONENT_TYPE exponent; UX_FRACTION_DIGIT_TYPE fraction[ NUM_UX_FRACTION_DIGITS ]; } UX_FLOAT; typedef struct { UX_FRACTION_DIGIT_TYPE digits[ NUM_UX_FRACTION_DIGITS ]; } FIXED_128; #define UX_SIGN_SHIFT (BITS_PER_UX_FRACTION_DIGIT_TYPE - BITS_PER_UX_SIGN_TYPE) #define UX_PRECISION 128 #define LSD_NUM (NUM_UX_FRACTION_DIGITS - 1) #define MSD_NUM 0 #define G_UX_SIGN(x) (((UX_FLOAT*)(x))->sign) #define G_UX_EXPONENT(x) (((UX_FLOAT*)(x))->exponent) #define G_UX_MSD(x) (((UX_FLOAT*)(x))->fraction[0]) #define G_UX_2nd_MSD(x) (((UX_FLOAT*)(x))->fraction[1]) #define G_UX_LSD(x) (((UX_FLOAT*)(x))->fraction[LSD_NUM]) #define G_UX_2nd_LSD(x) (((UX_FLOAT*)(x))->fraction[LSD_NUM-1]) #define G_UX_FRACTION_DIGIT(x,n) (((UX_FLOAT*)(x))->fraction[n]) #define P_UX_SIGN(x,v) ((((UX_FLOAT*)(x))->sign)=(v)) #define P_UX_EXPONENT(x,v) ((((UX_FLOAT*)(x))->exponent)=(v)) #define P_UX_MSD(x,v) ((((UX_FLOAT*)(x))->fraction[0])=(v)) #define P_UX_2nd_MSD(x,v) ((((UX_FLOAT*)(x))->fraction[1])=(v)) #define P_UX_LSD(x,v) ((((UX_FLOAT*)(x))->fraction[LSD_NUM])=(v)) #define P_UX_2nd_LSD(x,v) ((((UX_FLOAT*)(x))->fraction[LSD_NUM-1])=(v)) #define P_UX_FRACTION_DIGIT(x,n,v) (((UX_FLOAT*)(x))->fraction[n] = (v)) #define UX_INCR_EXPONENT(x,v) ((((UX_FLOAT *)(x))->exponent) += (v)) #define UX_DECR_EXPONENT(x,v) ((((UX_FLOAT *)(x))->exponent) -= (v)) #define UX_TOGGLE_SIGN(x,v) ((((UX_FLOAT *)(x))->sign) ^= (v)) #define MINUS_ONE 0xFFFFFFFF #define UX_SIGN_BIT ((U_WORD) 1 << 31) #define UX_MSB ((U_WORD)1 <<(BITS_PER_UX_FRACTION_DIGIT_TYPE-1)) #define UX_OVERFLOW_EXPONENT (1 << F_EXP_WIDTH) #define UX_UNDERFLOW_EXPONENT (- UX_OVERFLOW_EXPONENT) #define UX_ZERO_EXPONENT (MINUS_ONE << (F_EXP_WIDTH + 2)) #define UX_INFINITY_EXPONENT (-(UX_ZERO_EXPONENT + 1)) #define AS_DIGIT(p,n) (((UX_FRACTION_DIGIT_TYPE *)(p))[n]) #include "dpml_ux_32_64.h" #define UX_LOW_FRACTION_IS_ZERO(p) (UX_OR_LOW_FRACTION_DIGITS(p) == 0) #define UX_FRACTION_IS_ONE_HALF(p) ((G_UX_MSD(p) == UX_MSB) & \ (UX_OR_LOW_FRACTION_DIGITS(p) == 0)) #define UX_SET_SIGN_EXP_MSD(p,s,e,m) ( P_UX_SIGN(p,s), \ P_UX_EXPONENT(p,e), \ P_UX_MSD(p,m), \ CLR_UX_LOW_FRACTION(p)) #define UX_COPY(p,q) ( P_UX_SIGN(q, G_UX_SIGN(p)), \ P_UX_EXPONENT(q, G_UX_EXPONENT(p)), \ COPY_TO_UX_FRACTION(&G_UX_MSD(p),q)) typedef U_WORD ERROR_CODE; /******************************************************************************/ /******************************************************************************/ /** **/ /** Name Macros **/ /** **/ /******************************************************************************/ /******************************************************************************/ /* ** Following macros are defined to modify the interface of X_FLOAT routines ** for different architectures variants at compile time. The macros are ** defined as returnType_Arg1Arg2_PROTO. For example X_X_PROTO defines a ** function which takes X_FLOAT argument and result is X_FLOAT argument. ** ** X_FLOAT_RES_OR_VOID defines what functions is returning. It can be void, ** X_FLOAT or X_FLOAT *. ** ** X_FLOAT_RET_TYPE(x) defines the return type when result is part of the ** argument list i.e a pointer is provided in the argument list to ** put the result. It can be Nothing or X_FLOAT *x. ** ** X_FLOAT_ARG_TYPE(x) defines the argument type. It can be X_FLOAT *x, or ** X_FLOAT x. ** ** X_FLOAT_INT_TYPE defines the integer type in the argument list. This should ** be int in case of intel compilers. ** ** RETURN_X_FLOAT(x) defines the return statement of the function. It can be ** be Nothing, return *x or return x */ #if defined(EMT64_LINUX_QUAD_INTERFACE) # define X_FLOAT_RET_TYPE(x) # define X_FLOAT_ARG_TYPE(x) _Quad x # define X_FLOAT_INT_TYPE int # define X_FLOAT_RES_OR_VOID _Quad # define DECLARE_X_FLOAT(res) _X_FLOAT res; # define PASS_RET_X_FLOAT(x) &x //# define PASS_ARG_X_FLOAT(x) &x # define PASS_ARG_X_FLOAT(x) (_X_FLOAT *) &x # define RETURN_X_FLOAT(x) return *(_Quad *) &(x) # define PACKED_ARG_IS_NEG(p) ((WORD)((_X_FLOAT *)(&p))->DIGIT(0) < 0) #elif defined(X_NONVOID_RES_VAL_ARG_VAL) # define X_FLOAT_RET_TYPE(x) # define X_FLOAT_ARG_TYPE(x) _X_FLOAT x # define X_FLOAT_INT_TYPE int # define X_FLOAT_RES_OR_VOID _X_FLOAT # define DECLARE_X_FLOAT(res) _X_FLOAT res; # define PASS_RET_X_FLOAT(x) &x # define PASS_ARG_X_FLOAT(x) &x # define RETURN_X_FLOAT(x) return x; # define PACKED_ARG_IS_NEG(p) ((WORD)((_X_FLOAT *)(&p))->DIGIT(0) < 0) #elif defined(X_VOID_RES_REF_ARG_VAL) # define X_FLOAT_RET_TYPE(x) _X_FLOAT *x, # define X_FLOAT_ARG_TYPE(x) _X_FLOAT x # define X_FLOAT_INT_TYPE int # define X_FLOAT_RES_OR_VOID void # define DECLARE_X_FLOAT(res) # define PASS_RET_X_FLOAT(x) x # define PASS_ARG_X_FLOAT(x) &x # define RETURN_X_FLOAT(x) return; # define PACKED_ARG_IS_NEG(p) ((WORD)((_X_FLOAT *)(&p))->DIGIT(0) < 0) #else # define X_FLOAT_RET_TYPE(x) _X_FLOAT *x, # define X_FLOAT_ARG_TYPE(x) _X_FLOAT *x # define X_FLOAT_INT_TYPE WORD # define X_FLOAT_RES_OR_VOID void # define DECLARE_X_FLOAT(res) # define PASS_RET_X_FLOAT(x) x # define PASS_ARG_X_FLOAT(x) x # define RETURN_X_FLOAT(x) return; # define PACKED_ARG_IS_NEG(p) ((WORD)((_X_FLOAT *)(p))->DIGIT(0) < 0) #endif #if !defined(X_FLOAT_INT_TYPE) # define X_FLOAT_INT_TYPE WORD #endif # define X_I_PROTO(name,res,arg) \ X_FLOAT_RES_OR_VOID name(X_FLOAT_RET_TYPE(res) int arg) # define X_X_PROTO(name,res,arg) \ X_FLOAT_RES_OR_VOID name(X_FLOAT_RET_TYPE(res) \ X_FLOAT_ARG_TYPE(arg)) \ # define X_XX_PROTO(name, res, arg1, arg2) \ X_FLOAT_RES_OR_VOID name(X_FLOAT_RET_TYPE(res) \ X_FLOAT_ARG_TYPE(arg1), X_FLOAT_ARG_TYPE(arg2)) \ # define X_XI_PROTO(name, res, arg,i) \ X_FLOAT_RES_OR_VOID name(X_FLOAT_RET_TYPE(res) \ X_FLOAT_ARG_TYPE(arg), X_FLOAT_INT_TYPE i) \ # define X_IX_PROTO(name, res, i, arg) \ X_FLOAT_RES_OR_VOID name(X_FLOAT_RET_TYPE(res) \ X_FLOAT_INT_TYPE i, X_FLOAT_ARG_TYPE(arg)) \ # define X_XIptr_PROTO(name, res, arg,i) \ X_FLOAT_RES_OR_VOID name(X_FLOAT_RET_TYPE(res) \ X_FLOAT_ARG_TYPE(arg), X_FLOAT_INT_TYPE *i) \ # define X_XXptr_PROTO(name, res, arg, p) \ X_FLOAT_RES_OR_VOID name(X_FLOAT_RET_TYPE(res) \ X_FLOAT_ARG_TYPE(arg), _X_FLOAT * p) \ # define X_XXIptr_PROTO(name, res, arg1, arg2, i) \ X_FLOAT_RES_OR_VOID name(X_FLOAT_RET_TYPE(res) \ X_FLOAT_ARG_TYPE(arg1), X_FLOAT_ARG_TYPE(arg2), \ X_FLOAT_INT_TYPE *i) \ # define I_XXI_PROTO(name, arg1, arg2, i) \ int name( X_FLOAT_ARG_TYPE(arg1), X_FLOAT_ARG_TYPE(arg2), int i) # define RR_X_PROTO(name, res1, res2, arg) \ void name(X_FLOAT_ARG_TYPE(arg), _X_FLOAT *res1, _X_FLOAT *res2) /******************************************************************************/ /******************************************************************************/ /** **/ /** Packed and Unpacked Constant Tables **/ /** **/ /******************************************************************************/ /******************************************************************************/ #if !defined(PACKED_CONSTANT_TABLE) # define PACKED_CONSTANT_TABLE __TABLE_NAME(x_constants__ ) #endif #undef NAN #if !defined(DPML_UX_CONS_FILE_NAME) # define DPML_UX_CONS_FILE_NAME dpml_cons_x.h #endif #if !defined(BUILD_UX_CONS_TABLE) # define INSTANTIATE_TABLE 0 # define INSTANTIATE_DEFINES 1 # include STR(DPML_UX_CONS_FILE_NAME) #endif /******************************************************************************/ /******************************************************************************/ /** **/ /** Pack and Unpacked Routines **/ /** **/ /******************************************************************************/ /******************************************************************************/ /* ** There's a slight complication here because the interface to these routines ** depend on the interface to the exception handler. Specifically, if we ** need to pass the original arguments and/or the name of the function to the ** exception handler, that information must be passed to pack and unpack. */ typedef struct { U_WORD arg_classes; char * name; _X_FLOAT * args[2]; } UX_EXCEPTION_INFO_STRUCT; #define EXCPTN_INFO __INTERNAL_NAME(ux_excptn_info__) #define EXCEPTION_INFO_DECL UX_EXCEPTION_INFO_STRUCT EXCEPTION_INFO; #define OPT_EXCEPTION_INFO , &EXCEPTION_INFO #define OPT_EXCEPTION_INFO_DECLARATION , UX_EXCEPTION_INFO_STRUCT * EXCPTN_INFO #define OPT_EXCEPTION_INFO_ARGUMENT , EXCPTN_INFO #define IF_OPTNL_ERROR_INFO(x) x #if (EXCEPTION_INTERFACE_SEND & send_function_name ) # define INIT_EXCEPTION_INFO EXCPTN_INFO.name = STR(F_ENTRY_NAME) #else # define INIT_EXCEPTION_INFO #endif #define UNPACK(a,b,c,d) UNPACK_X_OR_Y(a,0,b,c,d) #if !defined( UNPACK_X_OR_Y ) # define UNPACK_X_OR_Y __INTERNAL_NAME( unpack_x_or_y__ ) #endif #if !defined( UNPACK2 ) # define UNPACK2 __INTERNAL_NAME( unpack2__ ) #endif #if !defined( PACK ) # define PACK __INTERNAL_NAME( pack__ ) #endif extern WORD UNPACK_X_OR_Y ( _X_FLOAT *, /* packed argument 1 */ _X_FLOAT *, /* packed argument 2 */ UX_FLOAT *, /* unpacked argument */ U_WORD const *, /* class-to-action map */ _X_FLOAT * /* packed result */ OPT_EXCEPTION_INFO_DECLARATION ); extern WORD UNPACK2 ( _X_FLOAT *, /* packed argument 1 */ _X_FLOAT *, /* packed argument 2 */ UX_FLOAT *, /* unpacked argument 1 */ UX_FLOAT *, /* unpacked argument 2 */ U_WORD const *, /* class-to-action map */ _X_FLOAT * /* packed result */ OPT_EXCEPTION_INFO_DECLARATION ); extern void PACK ( UX_FLOAT *, /* unpacked result */ _X_FLOAT *, /* packed result */ ERROR_CODE, /* underflow code */ ERROR_CODE /* overflow code */ OPT_EXCEPTION_INFO_DECLARATION ); /* ** Include the class-to-action-mapping definitions here, since they are used ** primarily by the unpack routines. */ #define INDEX_POS 0 #define INDEX_WIDTH 3 #define INDEX_MASK 0x7 #define ACTION_POS 3 #define ACTION_WIDTH 3 #define ACTION_MASK 0x7 #define CLASS_TO_ACTION(class, action, index) \ (((action << INDEX_WIDTH) | (index)) << \ ((INDEX_WIDTH + ACTION_WIDTH)*(class))) #define CLASS_TO_ACTION_DISP(n) \ ((n) << ((INDEX_WIDTH + ACTION_WIDTH)*F_C_NUM_CLASSES)) #define RETURN_UNPACKED 0 #define RETURN_QUIET_NAN 1 #define RETURN_VALUE 2 #define RETURN_NEGATIVE 3 #define RETURN_ABSOLUTE 4 #define RETURN_CPYSN_ARG_0 5 #define RETURN_ERROR 7 #define CLASS_TO_INDEX_WIDTH 4 #define CLASS_TO_INDEX(n,m) ((m) << ((n)*CLASS_TO_INDEX_WIDTH)) #define CLASS_TO_INDEX_MASK MAKE_MASK(CLASS_TO_INDEX_WIDTH, 0) #define WORDS_PER_CLASS_TO_ACTION_MAP (64/BITS_PER_WORD) /******************************************************************************/ /******************************************************************************/ /** **/ /** Rational Evaluation Routine **/ /** **/ /******************************************************************************/ /******************************************************************************/ #if !defined( EVALUATE_RATIONAL ) # define EVALUATE_RATIONAL __INTERNAL_NAME( evaluate_rational__ ) #endif extern void EVALUATE_RATIONAL( UX_FLOAT *, /* Argument */ FIXED_128 *, /* Coefficient array */ U_WORD, /* Number of coefficients */ U_WORD, /* Evaluation flags */ UX_FLOAT * /* Result */ ); #define STANDARD 0x001 #define POST_MULTIPLY 0x002 #define SQUARE_TERM 0x004 #define ALTERNATE_SIGN 0x008 #define NUM_DEN_FIELD_WIDTH 4 #define NO_DIVIDE ((WORD) 1 << (2*NUM_DEN_FIELD_WIDTH)) #define SWAP ((WORD) 2 << (2*NUM_DEN_FIELD_WIDTH)) #define SKIP ((WORD) 4 << (2*NUM_DEN_FIELD_WIDTH)) #define SCALE_WIDTH 6 #define SCALE_POS (BITS_PER_WORD - SCALE_WIDTH) #define P_SCALE(n) (((WORD) (n)) << SCALE_POS) #define G_SCALE(n) (((WORD) (n)) >> SCALE_POS) #define POLY_SHIFT(u,n) ((((UX_FLOAT *)(u))->exponent)*(n)) #define NUMERATOR_FLAGS(n) (n) #define DENOMINATOR_FLAGS(n) ((n) << NUM_DEN_FIELD_WIDTH) #if !defined(EVALUATE_PACKED_POLY) # define EVALUATE_PACKED_POLY __INTERNAL_NAME(evaluate_packed_poly__) #endif void EVALUATE_PACKED_POLY( UX_FLOAT * argument, WORD degree, FIXED_128 * coefs, U_WORD mask, WORD bias, UX_FLOAT * result); /******************************************************************************/ /******************************************************************************/ /** **/ /** Rational Evaluation Routine **/ /** **/ /******************************************************************************/ /******************************************************************************/ #if !defined( ADDSUB ) # define ADDSUB __INTERNAL_NAME( addsub__ ) #endif extern void ADDSUB( UX_FLOAT *, /* arg1 */ UX_FLOAT *, /* arg2 */ U_WORD, /* operation flags */ UX_FLOAT * /* result */ ); /* ** The logic of the add/sub routine depends on theses symbols have ** these *SPECIFIC* values. !!! DO NOT CHANGE THEM !!! */ #define ADD 0 #define SUB 1 #define ADD_SUB 2 #define SUB_ADD 3 #define MAGNITUDE_ONLY 4 #define NO_NORMALIZATION 8 /******************************************************************************/ /******************************************************************************/ /** **/ /** Round to Integer Routine **/ /** **/ /******************************************************************************/ /******************************************************************************/ #if !defined(UX_RND_TO_INT) # define UX_RND_TO_INT __INTERNAL_NAME(ux_rnd_to_int__) #endif extern WORD UX_RND_TO_INT( /* return val is integer part as int */ UX_FLOAT *, /* argument */ WORD, /* rounding mode bit vector */ UX_FLOAT *, /* Integer part as float, ignored if 0 */ UX_FLOAT *); /* fraction part, ignored if 0 */ #define RZ_BIT_VECTOR 0x0000 /* 0000 0000 0000 0000 */ #define RP_BIT_VECTOR 0x00fa /* 0000 0000 1111 1010 */ #define RM_BIT_VECTOR 0xfa00 /* 1111 1010 0000 0000 */ #define RN_BIT_VECTOR 0xa8a8 /* 1010 1000 1010 1000 */ #define RV_BIT_VECTOR 0xaaaa /* 1010 1010 1010 1010 */ #define INTEGER_RESULT 0x10000 #define FRACTION_RESULT 0x20000 /******************************************************************************/ /******************************************************************************/ /** **/ /** Normalization Routines **/ /** **/ /******************************************************************************/ /******************************************************************************/ #if !defined(FFS_AND_SHIFT) # define FFS_AND_SHIFT __INTERNAL_NAME(ffs_and_shift__) #endif extern WORD FFS_AND_SHIFT( /* returns shift count */ UX_FLOAT *, /* source and destination */ U_WORD); /* 'opcode' */ #define FFS_NORMALIZE 0 #define FFS_CVT_WORD 1 #define FFS_CVT_U_WORD 2 #define NORMALIZE(x) FFS_AND_SHIFT(x, FFS_NORMALIZE) #define WORD_TO_UX(n,x) (P_UX_MSD(x, n), FFS_AND_SHIFT(x, FFS_CVT_WORD)) #define U_WORD_TO_UX(n,x) (P_UX_MSD(x, n), FFS_AND_SHIFT(x, FFS_CVT_U_WORD)) /******************************************************************************/ /******************************************************************************/ /** **/ /** Radian Trig Prototypes **/ /** **/ /******************************************************************************/ /******************************************************************************/ #if !defined(UX_SINCOS) # define UX_SINCOS __INTERNAL_NAME(ux_sincos) #endif extern WORD UX_SINCOS( UX_FLOAT *, /* unpacked_argument */ WORD, /* octant */ WORD, /* function_code, */ UX_FLOAT *); /* unpacked_result */ #define DEGREE 16 #define SIN_FUNC 1 #define COS_FUNC 2 #define SINCOS_FUNC (SIN_FUNC | COS_FUNC) #define SIND_FUNC (SIN_FUNC | DEGREE) #define COSD_FUNC (COS_FUNC | DEGREE) #define SINCOSD_FUNC (SINCOS_FUNC | DEGREE) #define TAN_FUNC 4 #define COT_FUNC 8 #define TAND_FUNC (TAN_FUNC | DEGREE) #define COTD_FUNC (COT_FUNC | DEGREE) #define SIN(a,b) EVAL_SINCOS(a, 0, SIN_FUNC, b) #define COS(a,b) EVAL_SINCOS(a, 0, COS_FUNC, b) #define SINCOS(a,b) EVAL_SINCOS(a, 0, SINCOS_FUNC, b) #define SINCOS_COEF_ARRAY_LENGTH 12 extern FIXED_128 sincos_coef_array[2*SINCOS_COEF_ARRAY_LENGTH]; /******************************************************************************/ /******************************************************************************/ /** **/ /** Log Prototypes **/ /** **/ /******************************************************************************/ /******************************************************************************/ #if !defined(UX_LOG) # define UX_LOG __INTERNAL_NAME( ux_log__ ) #endif extern void UX_LOG( UX_FLOAT *, /* Argument */ UX_FLOAT *, /* scale - LOG(x) = scale*log2(x) */ UX_FLOAT *); /* Result */ #define LOG(a,b) UX_LOG( a, & UX_CON( LN_2 ), b) #if !defined(UX_LOG_POLY) # define UX_LOG_POLY __INTERNAL_NAME( ux_log_poly__ ) #endif extern void UX_LOG_POLY( UX_FLOAT *, /* Argument */ UX_FLOAT *); /* Result */ /******************************************************************************/ /******************************************************************************/ /** **/ /** Miscellaneous Prototypes **/ /** **/ /******************************************************************************/ /******************************************************************************/ #if !defined( EXP ) # define UX_EXP __INTERNAL_NAME( ux_exp__ ) #endif extern void UX_EXP( UX_FLOAT *, /* argument */ UX_FLOAT * /* result */ ); #if !defined( DIVIDE ) # define DIVIDE __INTERNAL_NAME( divide__ ) #endif extern void DIVIDE( UX_FLOAT *, /* numerator - assume 1 if ptr is 0 */ UX_FLOAT *, /* denominator */ U_WORD, /* result precision */ UX_FLOAT * /* result */ ); #define HALF_PRECISION 1 #define FULL_PRECISION 2 #if !defined( MULTIPLY ) # define MULTIPLY __INTERNAL_NAME( multiply__ ) #endif extern void MULTIPLY( UX_FLOAT *, /* arg1 */ UX_FLOAT *, /* arg1 */ UX_FLOAT * /* result */ ); #define SQUARE(a,b) MULTIPLY(a, a, b) #if !defined( EXTENDED_MULTIPLY ) # define EXTENDED_MULTIPLY __INTERNAL_NAME( extended_multiply__ ) #endif extern void EXTENDED_MULTIPLY( UX_FLOAT *, /* arg1 */ UX_FLOAT *, /* arg1 */ UX_FLOAT *, /* hi result */ UX_FLOAT * /* lo result */ ); #if !defined(UX_SQRT_EVALUATION) # define UX_SQRT_EVALUATION __INTERNAL_NAME( ux_sqrt_evaluation__ ) #endif #define EVALUATE_SQRT 0 #define EVALUATE_RSQRT 1 extern void UX_SQRT_EVALUATION( UX_FLOAT *, /* Argument */ WORD, /* evaluation type - sqrt or rsqrt */ UX_FLOAT *); /* Result */ #define UX_SQRT(a,b) UX_SQRT_EVALUATION(a, EVALUATE_SQRT, b) #if !defined(HYPOT) # define HYPOT __INTERNAL_NAME( hypot__ ) #endif extern void HYPOT( UX_FLOAT *, /* Argument 1 */ UX_FLOAT *, /* Argument 2 */ UX_FLOAT *); /* Result */ /******************************************************************************/ /******************************************************************************/ /** **/ /** Miscellaneous Definitions **/ /** **/ /******************************************************************************/ /******************************************************************************/ #define NONE 0 #define NOT_USED 0 #if defined(NULL) # undef NULL #endif #define NULL 0 #if defined GROUP # define D_GROUP(x) GROUP(x) #else # define D_GROUP_NAME PASTE_2(__INTERNAL_NAME(group),_d) extern double D_GROUP_NAME( double ); # define D_GROUP(x) D_GROUP_NAME(x) #endif /******************************************************************************/ /******************************************************************************/ /** **/ /** MPHOC Macros for Class-to-Action Table Definitions **/ /** **/ /******************************************************************************/ /******************************************************************************/ #define POS 0 #define NEG UX_SIGN_BIT #if defined(MAKE_INCLUDE) # define PRINT_64_TBL_ITEM(i) \ printf( "\t/* %3i */ %#16.4.16i,\n", BYTES(MP_BIT_OFFSET), i);\ MP_BIT_OFFSET += 64 # define PRINT_UX_FRACTION_DIGIT_TBL_ITEM(val) PRINT_64_TBL_ITEM(val) # define PRINT_CLASS_TO_ACTION_TBL_DEF(name) \ printf("#define\t" name "\t((U_WORD const *) ((char *) "\ STR(MP_TABLE_NAME) " + %i))\n", BYTES(MP_BIT_OFFSET)) # define PRINT_UX_FRACTION_DIGIT_TBL_VDEF(name) \ printf("#define\t" name \ "\t*((UX_FRACTION_DIGIT_TYPE *) ((char *) " \ STR(MP_TABLE_NAME) " + %i))\n", BYTES(MP_BIT_OFFSET)) # define PRINT_UX_FRACTION_DIGIT_TBL_VDEF_ITEM(name, val) \ printf("#define\t" name \ "\t*((UX_FRACTION_DIGIT_TYPE *) ((char *) " \ STR(MP_TABLE_NAME) " + %i))\n", BYTES(MP_BIT_OFFSET)); \ PRINT_64_TBL_ITEM(val) # define PRINT_FIXED_128_TBL_ADEF(name) \ printf("#define\t" name "\t((FIXED_128 *) ((char *) " \ STR(MP_TABLE_NAME) " + %i))\n", BYTES(MP_BIT_OFFSET)) # define PRINT_UX_FRACTION_DIGIT_TBL_ADEF(name) \ printf("#define\t" name "\t((UX_FRACTION_DIGIT_TYPE *) ((char *) " \ STR(MP_TABLE_NAME) " + %i))\n", BYTES(MP_BIT_OFFSET)) # define PRINT_UX_TBL_ADEF(name) \ printf("#define\t" name "\t((UX_FLOAT *) ((char *) " \ STR(MP_TABLE_NAME) " + %i))\n", BYTES(MP_BIT_OFFSET)) # define PRINT_UX_TBL_ITEM(val) \ MP_BIT_OFFSET = print_ux_table_value(val, MP_BIT_OFFSET) # define PRINT_UX_TBL_ADEF_ITEM(name, val) \ PRINT_UX_TBL_ADEF(name); PRINT_UX_TBL_ITEM(val) @divert divertText function print_ux_fraction_digits(value) { auto hi, i; if (value >= 1) { printf("ERROR: value out of range in print_ux_fraction_digits\n"); exit; } for (i = NUM_UX_FRACTION_DIGITS; i > 0; i--) { value = bldexp(value, BITS_PER_UX_FRACTION_DIGIT_TYPE); hi = trunc(value); if (hi) printf( DIGIT_FORMAT, hi); else printf( ZERO_FORMAT ); value -= hi; } printf("\n"); return value; } function print_ux_table_value(value, offset) { auto exponent, hi, sign_bit, i; sign_bit = 0; if (value == 0) exponent = bldexp(-1, F_EXP_WIDTH + 2); else { exponent = bexp(value); if (value < 0) { sign_bit = 1; value = -value; } value = bldexp(value, -exponent); } if (sign_bit) printf("\t/* %3i */ NEG, %4i,", BYTES(offset), exponent); else printf("\t/* %3i */ POS, %4i,", BYTES(offset), exponent); print_ux_fraction_digits(value); return offset + BITS_PER_UX_SIGN_TYPE + BITS_PER_UX_EXPONENT_TYPE + UX_PRECISION; } function find_max_exponent(degree, index) { auto i, max_exponent; max_exponent = -128; for (i = 0; i <= degree; i++) { exponent = bexp(bround(ux_rational_coefs[index + i], 128)); if (exponent > max_exponent) max_exponent = exponent; } return max_exponent; } /* ** The following routine prints out coefficients in the array ** 'ux_rational_coefs' in fixed point format. */ procedure print_ux_poly_coefs(pad_len, degree, final_scale, index) { auto scale, exponent, i; for (i = 0; i < pad_len; i++) { printf( "\t/* %3i */ %#32.4.16i,\n", BYTES(MP_BIT_OFFSET), 0); MP_BIT_OFFSET += 128; } exponent = find_max_exponent(degree, index); scale = 128 - exponent; index += degree; for (i = degree; i >= 0; i--) { printf( "\t/* %3i */ %#32.4.16i,\n", BYTES(MP_BIT_OFFSET), abs(nint(bldexp(ux_rational_coefs[index], scale )))); MP_BIT_OFFSET += 128; index--; } PRINT_U_TBL_ITEM(exponent + final_scale); } function print_ux_rational_coefs( num_degree, den_degree, scale) { auto max_degree; max_degree = max(num_degree, den_degree); print_ux_poly_coefs(max_degree - num_degree , num_degree, scale, 0); if (den_degree) print_ux_poly_coefs(max_degree - den_degree, den_degree, 0, num_degree + 1); return max_degree; } /* ** This routine finds the "width" and "bias" for converting MP numbers ** to a special 128 bit packed format used for special polynomial ** evaluations. The coefficients are contained in the global array ** ux_rational_coef and the both the width and the bias are returned ** via global values. See the description in dpml_ux_ops.c */ procedure find_exponent_width_and_bias(degree, base_index) { auto i, top, _diff, min_diff, max_diff, old_exp, new_exp, width; top = base_index + degree; min_diff = max_diff = 0; old_exp = 0; for (i = base_index; i <= top; i++) { new_exp = bexp(ux_rational_coefs[i]); _diff = new_exp - old_exp; if (_diff < min_diff) min_diff = _diff; else if (_diff > max_diff) max_diff = _diff; old_exp = new_exp; } _diff = max_diff - min_diff + 1; width = bexp(_diff); if (bldexp(.5, width) == _diff) width--; packed_exponent_width = width; packed_exponent_bias = -min_diff; } /* ** After we know the bias and the width, we need to pack the coefficient ** values */ procedure cvt_to_packed(degree, base_index, width, bias) { auto i, top, num_bits, tmp, old_exp, new_exp, sign_bit; find_exponent_width_and_bias(degree, base_index); top = base_index + degree; old_exp = 0; num_bits = UX_PRECISION - width - 1; for (i = base_index; i <= top; i++) { sign_bit = 0; tmp = bround(ux_rational_coefs[i], num_bits); if (tmp < 0) { tmp = -tmp; sign_bit = 1; } new_exp = bexp(tmp); tmp = nint(bldexp(tmp, num_bits - new_exp)); tmp = bldexp(tmp, width + 1) + 2*(new_exp - old_exp + bias) + sign_bit; old_exp = new_exp; ux_rational_coefs[i] = tmp; } } /* ** After converting to pack format, we need to print them out */ procedure print_packed(degree, base_index) { auto i, top; top = base_index + degree; for (i = degree; i >= 0; i--) { printf( "\t/* %3i */ %#32.4.16i,\n", BYTES(MP_BIT_OFFSET), ux_rational_coefs[top--]); MP_BIT_OFFSET += 128; } } @end_divert #endif #if !defined(EXTENDED_DIGIT_MULTIPLY) # define EXTENDED_DIGIT_MULTIPLY(a,b,h,l) (l) = (a)*(b); UMULH(a,b,h) #endif #endif LIBRARY/float128/dpml_ux_int.c0000644€­ Q01134020000004076615113665770015112 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BASE_NAME int #include "dpml_ux.h" #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif /* ** The basic approach is based on the observation that directed rounding ** can be done by "incrementing" the fraction field based on the value of ** four bits. Consider the following diagram: ** ** +-+-----------+------------------------+-+-+--------------+ ** |S| exp | |L|R| | ** +-+-----------+------------------------+-+-+--------------+ ** ^ / | \ ** | Least significant bit | Rounding bit ** sign bit Rounding Position ** ** Define K to be the "sticky" bit - i.e. the 'logical or' of all of the bits ** to the right of R. Then, for a given rounding mode, the values of S, L, R ** and K uniquely determine whether or not to increment L. Or to put it ** another way, S, L, R and K defines a binary value I to be added to L. The ** following table defines I as a function of rounding mode and S, L, R and K ** ** I ** ------------------------------------- ** S K L R RZ RP RM RN RV ** ------- ---- ---- ---- ---- ---- ** 0 0 0 0 0 0 0 0 0 ** 0 0 0 1 0 1 0 0 1 ** 0 0 1 0 0 0 0 0 0 ** 0 0 1 1 0 1 0 1 1 ** 0 1 0 0 0 1 0 0 0 ** 0 1 0 1 0 1 0 1 1 ** 0 1 1 0 0 1 0 0 0 ** 0 1 1 1 0 1 0 1 1 ** 1 0 0 0 0 0 0 0 0 ** 1 0 0 1 0 0 1 0 1 ** 1 0 1 0 0 0 0 0 0 ** 1 0 1 1 0 0 1 1 1 ** 1 1 0 0 0 0 1 0 0 ** 1 1 0 1 0 0 1 1 1 ** 1 1 1 0 0 0 1 0 0 ** 1 1 1 1 0 0 1 1 1 ** ** The above table gives rise to bit vectors, one per rounding mode, that ** determines I as a function of index = 8*S + 4*K + 2*L + R ** ** #define RZ_BIT_VECTOR 0x0000 (* 0000 0000 0000 0000 *) ** #define RP_BIT_VECTOR 0x00fa (* 0000 0000 1111 1010 *) ** #define RM_BIT_VECTOR 0xfa00 (* 1111 1010 0000 0000 *) ** #define RN_BIT_VECTOR 0xa8a8 (* 1010 1000 1010 1000 *) ** #define RV_BIT_VECTOR 0xaaaa (* 1010 1010 1010 1010 *) ** ** the UX_RND_TO_INT routine is the common logic for all of the "round-to- ** integer" routines. Most of the arguments are self explanatory. The ** low 16 bits of the 'flags' is one of the R_BIT_VECTOR's ** described above. Bits 16 and 17 of 'flags' determine which results to ** compute according to the flags: ** ** INTEGER_PART ** FRACTION_PART ** ** Additionally, UX_RND_TO_INT returns the low BITS_PER_WORD of the integer ** result. */ WORD UX_RND_TO_INT( UX_FLOAT * unpacked_argument, WORD flags, UX_FLOAT * unpacked_result, UX_FLOAT * unpacked_fraction ) { WORD index, num_digits, shift, LR, SKLR; UX_EXPONENT_TYPE exponent, int_exponent; UX_FRACTION_DIGIT_TYPE *arg_ptr, *int_ptr, current_digit, new_digit, incr, sticky, lsd, mask; UX_FLOAT dummy; /* ** Get fraction digits into integer variables and initialize state */ unpacked_result = unpacked_result ? unpacked_result : &dummy; sticky = 0; num_digits = NUM_UX_FRACTION_DIGITS; exponent = G_UX_EXPONENT(unpacked_argument); arg_ptr = &G_UX_LSD(unpacked_argument); int_ptr = &G_UX_LSD(unpacked_result); shift = 128 - exponent; current_digit = 0; do { current_digit = *arg_ptr--; if (shift < BITS_PER_UX_FRACTION_DIGIT_TYPE) goto get_LR; /* ** The current digit is completely to the right of the binary point ** so zero out the corresponding digit in the result and accumulate ** the current digit into the sticky bits */ *int_ptr-- = 0; sticky = current_digit | (sticky != 0); shift -= BITS_PER_UX_FRACTION_DIGIT_TYPE; } while (--num_digits > 0); sticky = (shift) ? (sticky != 0) : sticky; current_digit = 0; shift = 0; get_LR: if (shift < 0) shift = 0; incr = (UX_FRACTION_DIGIT_TYPE) 1 << shift; mask = incr - 1; /* ** At this point, we introduce a bit or a wort, but it makes processing in ** other routines easier. We compute the least significant digit of the ** abs(int(x)) as the return value. This mean we have to fetch one extra ** digit. */ new_digit = 2*current_digit; if (mask == 0) { /* The L and R bits straddle a digit. Get them back together */ LR = (new_digit & 2) | ((UX_SIGNED_FRACTION_DIGIT_TYPE) sticky < 0); sticky += sticky; lsd = current_digit; } else { /* L and R are contiguous */ LR = (current_digit >> (shift - 1)) & 0x3; sticky |= (new_digit & mask); lsd = (num_digits > 1) ? *arg_ptr : 0; lsd = (lsd << (BITS_PER_UX_FRACTION_DIGIT_TYPE - shift)) | (current_digit >> shift); } SKLR = ((G_UX_SIGN(unpacked_argument) >> (BITS_PER_UX_SIGN_TYPE - 3)) & 0x8) + (((sticky != 0) << 2) + LR); /* Get increment value, add it in and propagate the carry */ SKLR = (flags >> SKLR) & 1; incr = SKLR ? incr : 0; current_digit &= ~mask; lsd += SKLR; while (num_digits-- > 0) { new_digit = current_digit + incr; incr = (new_digit < incr); *int_ptr-- = new_digit; current_digit = *arg_ptr--; } if (incr) /* ** A carry out from the last add ==> result = 2^(exponent + 1) or ** 1, depending on whether or not exponent >= 0. */ { exponent++; exponent = (exponent < 1) ? 1 : exponent; int_ptr[1] = UX_MSB; } P_UX_SIGN(unpacked_result, G_UX_SIGN(unpacked_argument)); P_UX_EXPONENT(unpacked_result, exponent); if ( flags & FRACTION_RESULT ) /* subtract int_func(x) from x */ ADDSUB(unpacked_argument, unpacked_result, SUB, unpacked_fraction); return lsd; } /* ** Each of the round-to-int functions calls a common routine C_UX_RND_TO_INT, ** to unpack its arguments; handle special input, and pack the results. */ #if !defined(C_UX_RND_TO_INT) # define C_UX_RND_TO_INT __INTERNAL_NAME(C_rnd_to_int__) #endif static void C_UX_RND_TO_INT( _X_FLOAT * packed_argument, U_WORD const * class_to_action_map, WORD flags, _X_FLOAT * packed_result, _X_FLOAT * packed_fraction OPT_EXCEPTION_INFO_DECLARATION ) { WORD fp_class; UX_FLOAT unpacked_argument, unpacked_result, unpacked_fraction; fp_class = UNPACK( packed_argument, & unpacked_argument, class_to_action_map, packed_result OPT_EXCEPTION_INFO_ARGUMENT ); if (0 > fp_class) { /* Set error value for fraction also */ if (flags & FRACTION_RESULT) (void) UNPACK( packed_argument, & unpacked_argument, class_to_action_map + WORDS_PER_CLASS_TO_ACTION_MAP, packed_fraction OPT_EXCEPTION_INFO_ARGUMENT ); return; } (void) UX_RND_TO_INT( &unpacked_argument, flags, &unpacked_result, &unpacked_fraction ); if (flags & INTEGER_RESULT) PACK( & unpacked_result, packed_result, NOT_USED, NOT_USED OPT_EXCEPTION_INFO_ARGUMENT ); /* We assume the following call will normalize unpacked_result */ if (flags & FRACTION_RESULT) PACK( & unpacked_fraction, packed_fraction, NOT_USED, NOT_USED OPT_EXCEPTION_INFO_ARGUMENT ); } /* ** The following code provides the user level interfaces to the trunc, modf, ** nint, ceil, float and nint routines */ #undef F_ENTRY_NAME #define F_ENTRY_NAME F_FLOOR_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_RND_TO_INT( PASS_ARG_X_FLOAT(packed_argument), FLOOR_CLASS_TO_ACTION_MAP, RM_BIT_VECTOR | INTEGER_RESULT, PASS_RET_X_FLOAT(packed_result), NOT_USED OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_CEIL_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_RND_TO_INT( PASS_ARG_X_FLOAT(packed_argument), CEIL_CLASS_TO_ACTION_MAP, RP_BIT_VECTOR | INTEGER_RESULT, PASS_RET_X_FLOAT(packed_result), NOT_USED OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_TRUNC_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_RND_TO_INT( PASS_ARG_X_FLOAT(packed_argument), TRUNC_CLASS_TO_ACTION_MAP, RZ_BIT_VECTOR | INTEGER_RESULT, PASS_RET_X_FLOAT(packed_result), NOT_USED OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_NINT_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_RND_TO_INT( PASS_ARG_X_FLOAT(packed_argument), TRUNC_CLASS_TO_ACTION_MAP, RV_BIT_VECTOR | INTEGER_RESULT, PASS_RET_X_FLOAT(packed_result), NOT_USED OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_RINT_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) C_UX_RND_TO_INT( PASS_ARG_X_FLOAT(packed_argument), TRUNC_CLASS_TO_ACTION_MAP, RN_BIT_VECTOR | INTEGER_RESULT, PASS_RET_X_FLOAT(packed_result), NOT_USED OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_MODF_NAME X_XXptr_PROTO(F_ENTRY_NAME, packed_result, packed_argument, packed_n) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_RND_TO_INT( PASS_ARG_X_FLOAT(packed_argument), TRUNC_CLASS_TO_ACTION_MAP, RZ_BIT_VECTOR | INTEGER_RESULT | FRACTION_RESULT, packed_n, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #if defined(F_NEAREST_NAME) # undef F_ENTRY_NAME # define F_ENTRY_NAME F_NEAREST_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_RND_TO_INT( PASS_ARG_X_FLOAT(packed_argument), TRUNC_CLASS_TO_ACTION_MAP, RV_BIT_VECTOR | INTEGER_RESULT, PASS_RET_X_FLOAT(packed_result), NOT_USED OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #endif #if defined(MAKE_INCLUDE) @divert -append divertText # undef TABLE_NAME START_TABLE; TABLE_COMMENT("floor class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "FLOOR_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(4) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_NEGATIVE, 2) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("ceil class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "CEIL_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(3) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 2) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_NEGATIVE, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); /* ** the trunc class to action mapping is used by trunc, nint, rint and ** modf. In order to accommodate returns for both results in modf, there ** are actually two mappings, the first one is for the integer result, and ** the second one is for the fraction result. */ TABLE_COMMENT("trunc, nint, rint and modf class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "TRUNC_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(2) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("this class-to-action-mapping used by modf only"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("data for the above class to action mappings"); PRINT_U_TBL_ITEM( /* data 1 */ ZERO ); PRINT_U_TBL_ITEM( /* data 2 */ ONE ); END_TABLE; @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ $outText = "$tableText\n\n$defineText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants 'round to int'" . \ " routines", __FILE__ ); \ print "$headerText\n\n$outText\n"; #endif LIBRARY/float128/dpml_ux_alpha_macros.h0000644€­ Q01134020000000336615113665770016751 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define EXTENDED_DIGIT_MULTIPLY(a,b,h,l) ((l) = (a)*(b), UMULH(a,b,h)) LIBRARY/float128/dpml_pow_cons.c0000644€­ Q01134020000020421715113665770015424 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define ENDIF foo = 1; /* Explain this */ /* File: dpml_pow_cons.c */ /* ** Facility: ** ** DPML ** ** Abstract: ** ** This file is used to generate common include files for the ** DPML functions that are related to the exp function. Currently ** the generated file is shared by: ** ** o exp (fast and accurate) ** o pow (fast and accurate) ** o expm1 ** o sinh and cosh ** ** Where appropriate, this file also contains brief description of the ** algorithms used in the above functions. ** ** Modification History: ** ** 1-001 Initial implementation. Martha Jaffe 27-May-1994. ** ** 2-001 Initial implementation. RNH 01-Feb-95 ** 2-002 Added hi-limit check const for exp2. MJ 10-Dec-98 ** 2-003 Added 'rm TMP_FILE'. RNH 04-Sep-2002 */ /* ** SUMMARY OF BUILD INFORMATION ** ---------------------------- ** ** Since the total size of the constants and tables required to build the power ** routines is large, by default we assume that the constants will be shared ** whenever possible between data types and functions. Switches are provided ** to over-ride the default sharing behavior. ** ** Also, there is a switch to determine if the argument reduction scheme for ** the accurate power routine uses a divide operation or not. The default is ** to not use divide. ** ** The following table summerizes the supportted switches ** ** Switch Meaning ** ----------- ------------------------------------------------- ** NO_FAST Don't generate values for the fast routines. ** ** NO_ACC Don't generate values for the accurate routines. ** ** ONE_TYPE Only generate values for the specified type ** ** USE_DIVIDE Generate constant necessary for doing the log argument ** reduction using division ** ** The defualt values of the above switches are a function of data type: ** ** Default ** --------------------- ** Switch Single Double Quad ** ----------- --------------------- ** NO_FAST False False True ** NO_ACC False False False ** ONE_TYPE False False True ** USE_DIVIDE False False True ** ** ** NOTE: when sharing the generated table between type, ** the larger precision type must be specified when ** processing this file. ** ** In addition to the above build flags, users can also specify the size ** (actually, the log2 of the size) of the exp and log tables by defining ** POW2_K and LOG2_K respectively. The default values are POW2_K = 8 and ** LOG2_K = 7. The implications of changing these values is discussed ** below. (Look for the string "DEFINING THE TABLE SIZES"); */ #if defined X_FLOAT # define _X_FLT_DEF 1 #else # define _X_FLT_DEF 0 #endif #if defined(NO_FAST) # undef NO_FAST # define NO_FAST 1 #else # define NO_FAST _X_FLT_DEF #endif #if defined(NO_ACC) # undef NO_ACC # define NO_ACC 1 #else # define NO_ACC 0 #endif #if defined(ONE_TYPE) # undef ONE_TYPE # define ONE_TYPE 1 #else # define ONE_TYPE _X_FLT_DEF #endif #if defined(USE_DIVIDE) # undef USE_DIVIDE # define USE_DIVIDE 1 #else # define USE_DIVIDE _X_FLT_DEF #endif #if NO_FAST && NO_ACC # error "ERROR: Can't define both NO_FAST and NO_ACC" #endif #if USE_DIVIDE && NO_ACC # error "ERROR: USE_DIVIDE only valid for accurate pow" #endif /* * MAKE_INCLUDE and MAKE_COMMON are always defined for this file. */ #undef MAKE_INCLUDE #define MAKE_INCLUDE #undef MAKE_COMMON #define MAKE_COMMON /* * Pick up default names */ #define __POW_BASE_NAME POW_BASE_NAME #ifndef BASE_NAME # define BASE_NAME __POW_BASE_NAME #endif #if defined(MAKE_COMMON) # define POW_TABLE_NAME F_POW_TABLE_NAME # define _BUILD_FILE_NAME F_POW_BUILD_FILE_NAME #else # define POW_TABLE_NAME __F_TABLE_NAME(POW_TABLE_BASE_NAME) # define _BUILD_FILE_NAME __BUILD_FILE_NAME(POW_TABLE_BASE_NAME) #endif #if !defined(BUILD_FILE_NAME) # define BUILD_FILE_NAME _F_POW_BUILD_FILE_NAME #endif #if !defined(TABLE_NAME) # define TABLE_NAME POW_TABLE_NAME #endif /* * Get default setting for table sizes */ #if !defined(LOG2_K) # define LOG2_K 7 #endif #if !defined(POW2_K) # define POW2_K 8 #endif /* ** Set types for default print macros. Also set flag to pickup latest ** version of the mphoc macros. */ #define MP_T_TYPE B_TYPE #define MP_T_CHAR B_CHAR #define MP_T_PRECISION B_PRECISION #define NEW_DPML_MACROS 1 #include "dpml_private.h" #include "dpml_pow.h" #if !ONE_TYPE && (R_PRECISION + R_EXP_WIDTH + POW2_K - 1 > F_PRECISION) # error "ERROR: Floating types incompatible for shared tables" #endif /* ** ORGANIZATION OF THE GENERATED FILE ** ---------------------------------- ** ** The size of the table in generated file is quite large, and for the default ** values, the single/double precision table is greater than 8k in size. In ** order to help eliminate cache misses and ease finding problems with this ** code and values in the tables, the table is laid out as follows: ** ** +---------------------------------------+ ** | | ** | | ** | table of 2^(j/2^POW2_K) values | ** | | ** | | ** +---------------------------------------+ ** | Constants for fast exp | ** +---------------------------------------+ ** | Constants for 2^x portion of fast pow | ** +---------------------------------------+ ** | Constants for 2^x portion of acc pow | ** +---------------------------------------+ ** | Constants for acc exp | ** +---------------------------------------+ ** | Constants for expm1 | ** +---------------------------------------+ ** | Constants for sinh/cosh | ** +---------------------------------------+ ** | Miscellaneous shared Constants | ** +---------------------------------------+ ** | Constants for log2 portion of pow | ** +---------------------------------------+ ** | | ** | | ** | table of log(1 + j/2^LOG2_K) values | ** | | ** | | ** +---------------------------------------+ ** */ @divert divertText /* ** GENERATING POLYNOMIAL COEFFICIENTS: ** ----------------------------------- ** ** All of the polynomial coefficients in this file are generated via the ** Remes min/max error algorithm. This algorithm takes as one of its input ** arguments, the function to be approximated, F(x). For example, if we ** look at generating the exp and pow polynomials, F(x) can be one of e^x, ** (e^x - 1)/x, [e^x - (1 + x)]/x^2, 2^x, or (2^x - 1)/x. ** ** In order to minimize the number of different functions defined for remes ** algorithm, we define F(x) as a polynomial evaluation routine, with an ** external (global) scale factor and initial term. This not only reduces ** the number of functions that need to be defined, but also reduces the ** required MP precision in the calculation of the coefficients, since, ** the cancellation error in computations like e^x - 1 and log(x) - ** (x - x^2/2) have been eliminated. ** ** Also, in order to insure the polynomial evaluation macro matches the ** coefficients, the invocation of genpoly that generates the evaluation ** macros is encoded as a macro definition at the time the coefficients ** are generated. The macro is instantiated after the constant table is ** generated. ** ** Lastly, each set of coefficients is generated into the array 'coefs', so ** that it can be printed via a subroutine. This requires that the ** coefficients are printed immediately after they are generated. **/ # define SET_POLY_GLOBALS(k, s, xs, fs) \ first_term = (k); \ first_term_value = (s); \ x_scale = (xs); \ final_scale = (fs) # define PRINT_TBL_COM_ADEF_ARRAY(com, def, deg) \ PRINT_TBL_COM_ADEF(com, def); \ print_array(deg) procedure print_array(n) { for (i = 0; i <= n; i++) { PRINT_TBL_ITEM(coefs[i]); } } # define WORKING_PRECISION (ceil(2*B_PRECISION/MP_RADIX_BITS) + 2) precision = WORKING_PRECISION; bit_precision = MP_RADIX_BITS*precision; /* ** Pick up definitions of common MP functions and print out the ** initial boiler plate for the generated file. As part of the boiler ** plate, record the current definitions of the macro TABLE_NAME. ** Once that has been done, undefine TABLE_NAME so that we can define ** items in the generated file relative to the symbolic value TABLE_NAME ** rather than the actual value of TABLE_NAME */ # include "mphoc_functions.h" printf( "\n" "/* Define default table name */\n" "\n" "#if !defined(TABLE_NAME)\n" "# define TABLE_NAME\t" STR(TABLE_NAME) "\n" "#endif\n" "\n" "#include \"dpml_private.h\"\n" "\n"); # undef TABLE_NAME printf("\n#if !DEFINE_SYMBOLIC_CONSTANTS\n\n"); START_TABLE; /* ** ** GENERAL DISCUSSION OF 2^x, e^x and 10^x ** --------------------------------------- ** ** The computation of b^x for b = 2, e and 10 is based on a table look-up ** scheme, where the number of entries in the table is a power of 2, ** say 2^k. Writing x*(lnb/ln2) as the sum of its integer, first k fraction ** bits and a reduced arguement we have: ** ** x(lnb/ln2) = I + j/2^k + w, |w| < 2^(k+1) ** ** Letting z = w*(ln2/lnb) = x - (I + j/2^k)*(ln2/lnb), the computation of ** e^x proceeds as: ** ** b^x = 2^(x(lnb/ln2)) ** = 2^(I + j/2^k + w) ** = 2^I * 2^(j/2^k) * 2^w ** = 2^I * 2^(j/2^k) * e^z ** = 2^I * 2^(j/2^k) * [ 1 + z*p(z) ] (1) ** ** In (1), the alignment shift between 1 and z*p(z) is at least k+1 bits, ** so if care is taken in computing 2^I*2^(j/2^k) high accuracy in the ** final answer is possible. Toward this end, we suppose the values of ** 2^(j/2^k) are stored in a table in hi and lo pieces, T(j) and L(j). ** Then (1) can be re-written as: ** ** b^x = 2^I * 2^(j/2^k) * [ 1 + z*p(z) ] ** = 2^I * [ T(j) + L(j) ] * [ 1 + z*p(z) ] ** = 2^I * { T(j) + L(j) + [ T(j) + L(j) ]*z*p(z) } ** ** There are various way to define T(j) and L(j) so that "extra" ** precision is obtained. The definition we use here was chosen to ** optimize the performance of the fast exp and pow routines. In ** particular: ** ** T(j) = bround( 2^(j/2^k), F_PRECISION) ** L(j) = 2^(j/2^k) - T(j) ** ** With this definition, the term L(j)*z*p(z) is insignificant in the ** final sum and may be dropped, so that e^x can be approximated by: ** ** b^x = 2^I * { T(j) + [ L(j) + T(j)*z*p(z) ] } (2) ** ** In order to expose more parallelism in the computation, rather than ** storing the values of T(j) and L(j) in the tables, we store T(j) and ** R(j) = L(j)/T(j) and write (2) as: ** ** b^x = 2^I * { T(j) + [ L(j) + T(j)*z*p(z) ] } ** = 2^I * { T(j) + T(j)* [ R(j) + z*p(z) ] } ** = 2^I * T(j) + 2^I*T(j)* [ R(j) + z*p(z) ] ** = V(I,j) + V(I, j)* [ R(j) + z*p(z) ] (3) ** ** where V(I,j) = 2^I * T(j). Note that on pipelined architectures, ** R(j) + z*p(z) can be computed with the same latancy as z*p(z) and ** on architectures with multiple functional units V(I,j) can be computed ** in the integer unit while R(j) + z*p(z) is computed in the floating ** point unit. */ /* ** POW2 TABLE ** ---------- ** ** The pow2 table contains the 2^POW2_K th roots of 2, 2^(j/2^POW2_K). ** The table has a different form depending on whether backup precision ** is available or not. ** ** When back up precision is not available, the table contain the values ** T(j) and R(j) as defined above. When backup precision is available, ** only T(j) is stored. */ # define __PRINT_TABLE_VALUE(tchar, value) \ printf( "\t/* %4i */ %#.4" STR(tchar) ",\n", \ BYTES(MP_BIT_OFFSET), value); \ MP_BIT_OFFSET += CHAR_TO_BITS(tchar) # define __PRINT_TABLE_DEF(name, tchar, disp) \ printf("#define " name "\t*((" STR(CHAR_TO_TYPE(tchar)) \ " *) ((char *) " STR(MP_TABLE_NAME) \ " + %i + (j)))\n", BYTES(disp)); \ disp += CHAR_TO_BITS(tchar) # if (USE_BACKUP) # define POW2_TABLE_BANNER \ "\n\t * Tj = 2^(j/2^POW2_K)" \ "\n\t *" \ "\n\t * offset row" \ "\n\t" # define PRINT_POW2_TABLE_ACCESS_MACROS(disp) \ PRINT_LOG_TABLE_DEF("GET_POW2(j)\t", B_CHAR, disp) # define POW2_INDEX_POS (__LOG2(BITS_PER_B_TYPE) - 3) # define PRINT_POW2_TABLE_ENTRY(j, Pj) \ printf( "\t/* %4i */ %#.4" STR(B_CHAR), ", /* %3i */", \ BYTES(MP_BIT_OFFSET), Pj, j); \ MP_BIT_OFFSET += BITS_PER_B_TYPE # else /* USE_BACKUP */ # define POW2_TABLE_BANNER \ "\n\t * Tj = 2^(j/2^POW2_K) and Rj = [2^(j/2^POW2_K) - Tj]/Tj." \ "\n\t *" \ "\n\t * offset row" \ "\n\t" # define PRINT_POW2_TABLE_ACCESS_MACROS(disp) \ __PRINT_TABLE_DEF("POW2_HI(j)\t", F_CHAR, disp); \ __PRINT_TABLE_DEF("POW2_LO_OV_POW2_HI(j)", F_CHAR, disp) # define POW2_INDEX_POS (__LOG2(BITS_PER_F_TYPE) - 2) # define PRINT_POW2_TABLE_ENTRY(j, Pj) \ Pj_hi = bround(Pj, F_PRECISION); \ printf("\t/* %4i */ %#.4" STR(F_CHAR) ", /* %3i */\n", \ BYTES(MP_BIT_OFFSET), Pj, j); \ MP_BIT_OFFSET += BITS_PER_F_TYPE; \ __PRINT_TABLE_VALUE(F_CHAR, (Pj - Pj_hi)/Pj) #endif disp = MP_BIT_OFFSET; root_disp = disp; PRINT_POW2_TABLE_ACCESS_MACROS(disp); /* ** As noted above, the quantity V(I,j) = 2^I*T(j) is computed in an ** integer register. The follow code prints out definitions for accessing ** T(j) an integer. If the word size is smaller that the F_TYPE size, we ** need to access it in two pieces. Make sure to take into account ** "endianess" */ if (BITS_PER_WORD < BITS_PER_F_TYPE) { disp_lo = root_disp; if ((VAX_FLOATING) || (ENDIANESS == big_endian)) disp_lo = root_disp + (BITS_PER_F_TYPE - BITS_PER_WORD); else root_disp += (BITS_PER_F_TYPE - BITS_PER_WORD); /* ** If the word size is verfy small relative to the floating point ** type, get the low order bits in a F_UNION by loading the whole ** floating point type. Otherwise, just load the low word */ if (BITS_PER_WORD*2 < BITS_PER_F_TYPE) { printf("#define IPOW2_LO(u,j)\t\tu.f = " "*((B_TYPE *) ((char *) " STR(MP_TABLE_NAME) " + (j)))\n"); } else { printf("#define IPOW2_LO(u,j)\t\tu.B_LO_WORD = " "*((WORD *) ((char *) " STR(MP_TABLE_NAME) " + %i + (j)))\n", BYTES(disp_lo)); } } __PRINT_TABLE_DEF("IPOW2(j)\t", w, root_disp); printf("#define POW2_INDEX_POS\t\t%i \n", POW2_INDEX_POS); TABLE_COMMENT( POW2_TABLE_BANNER ); pow2_table_size = 2^POW2_K; for (j = 0; j < pow2_table_size; j++) { Pj = 2^(j/pow2_table_size); PRINT_POW2_TABLE_ENTRY( j, Pj); } /* ** Error Checking: ** --------------- ** ** b^x can both underflow and overflow. Consequently some type of error ** check (screening) must eventually take place. Since the appropriate ** timing and nature of the screening varies from function to function, it ** is discussed with the individual functions. ** ** That said, all of the function using the pow2 table, have a "final" ** underflow/overflow check near the very end of the routine. The check ** is based on the fact that the computation of V(I,j) is done in an ** integer register and provides a very good approximation to the final ** answer. We can use integer comparisons on the bit pattern for V(I,j) ** to eliminate all potential overflows and underflows just prior to or ** just after the last floating point operation(s). */ c = 2^(1/pow2_table_size); lo = F_HI_BITS_RND(2^(F_MIN_BIN_EXP + F_NORM + F_PRECISION + POW2_K)*c, MP_RP); hi = F_HI_BITS_RND(2^(F_MAX_BIN_EXP + F_NORM + 1)/c, MP_RM); PRINT_U_TBL_COM_VDEF_ITEM("F_PRECISION acc pow2 result range check", "POW2_LO_CHECK_F\t", lo); PRINT_U_TBL_VDEF_ITEM("POW2_HI_CHECK_F\t", hi - lo); PRINT_U_TBL_VDEF_ITEM("POW2_MAX_SCALE_F\t", hi); if (!ONE_TYPE) { lo = F_HI_BITS_RND(2^(R_MIN_BIN_EXP + R_NORM + R_PRECISION + POW2_K)*c, MP_RP); hi = F_HI_BITS_RND(2^(R_MAX_BIN_EXP + R_NORM + 1)/c, MP_RM); PRINT_U_TBL_COM_VDEF_ITEM("R_PRECISION acc pow2 result range check", "POW2_LO_CHECK_R\t", lo); PRINT_U_TBL_VDEF_ITEM("POW2_HI_CHECK_R\t", hi - lo); PRINT_U_TBL_VDEF_ITEM("POW2_MAX_SCALE_R\t", hi); } ENDIF /* ** Computation of I, j and w: ** -------------------------- ** ** From the above discussion, we see that at some point in the evaluation ** of b^x, we need to take a floating point value and break it into its ** integer part, high fraction bits and low fraction bits. If z is the ** value we want to break apart, then the conceptual computation that is ** performed is: ** ** t <-- rint(2^k*z) ** w = z - t/2^k ** m <-- (WORD) t ** i <-- m >> k ** j <-- m & (2^k - 1) ** ** In actuality, the first three steps of the above is performed by taking ** z, adding and then subtracting a large positive constant, BIG. BIG is ** chosen so that the low order fraction bits of z are discarded due to ** the alignment shift leaving only the integer and high fraction bits. ** Specifically: ** ** BIG <-- 3*2^(B_PRECISION - k - 2) ** u <-- BIG + z ** fm <-- u - BIG ** ** Note that if B_PRECISION > 32 and the rounding mode is round to nearest, ** then the low order 32 bits of t are the twos complement representation ** m and fm = u/2^k. ** ** ** Polynomial Generation For 2^x, e^x and 10^x: ** -------------------------------------------- ** ** The coefficients for 2^x are based on the Taylor series expansion ** for e^x: ** ** e^x = 1 + x + x^2/2! + x^3/3! + .... ** ** with the variable x replaced by x = z * ln2: ** ** 2^z = 1 + ln2*z + z^2*(ln2)^2/2! + z^3*(ln2)^3/3! + .... ** = 1 + z*(ln2 + z*(ln2)^2/2! + z^2*(ln2)^3/3! + ....) ** = 1 + z*P(z) ** ** In both cases, the size of the argument being evaluated is dictated ** by k. */ ln2 = log(2.0); recip_ln2 = 1/ln2; ln2_ov_ln10 = ln2/log(10.); ln10_ov_ln2 = log(10.0)/ln2; max_exp_x = .5/pow2_table_size; max_pow2_x = max_exp_x*ln2; /* ** The following function is used by the Remes algorithm to generate ** min/max coefficients for e^x and 2^x. We can approximate e^x, e^x - 1 ** and e^x - (1 + x) by specifying the (first_term, first_value) parameters ** as (0,1), (1, 1) and (2, .5) respectively. By changing the x_scale and ** last scale values from 1 to appropiate powers of ln2, we can similarly ** evaluate 2^x, 2^x - 1 and 2^x - (1 + x*ln2) ** */ function e_to_x_poly(x) { auto s, z, k, t; s = first_term_value; if (x != 0) { k = first_term; z = x*x_scale; t = first_term_value; while(1) { k++; t = (t*z)/k; if ((bexp(s) - bexp(t)) > bit_precision) break; s += t; } } ENDIF return s*final_scale; } /* ** All of the Remes invocations for exp/pow2 coeffient generations have ** the same form, so we make the corresponding code a macro. */ # define GEN_EXP_COEFS(max_x, prec, deg, com, tag) \ { \ remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT + \ REMES_LINEAR_ARG, -max_x, max_x, e_to_x_poly, prec, \ °, &coefs); \ PRINT_TBL_COM_ADEF_ARRAY(com, tag, deg); \ } /* ** CONSTANTS FOR FAST EXP ** ---------------------- ** ** In fast exp, we use the identity e^x = 2^(x/ln2). Since we would like ** to delay the screening for overflow and underflow for as long as ** possible (to increase parallelism) and since x/ln2 might overflow, ** we perform the initial calculation as: ** ** w <-- x*[ 1/(2^n*ln2) ] ** t <-- BIG/2^n + w ** fm <-- t - BIG/2^n ** z <-- w - fm ** ** This produces a reduced argument, z, "scaled down" by 2^n. We can ** compensate for the scale factor in z by adjusting the coefficients ** in the polynomial evaluation. ** ** Note that if backup precision is not available, the compuation of ** z is more complicated that inidicate. Specificly, we must compute ** w = x*[ 1/(2^n*ln2) ] to extra precision by break x and 1/(2^n*ln2) ** into high and low pieces. ** ** Other than requiring that n >= 1, the exact choice of n in the above ** discussion is arbitrary. We choose n = F_EXP_WIDTH because, we can ** then share the constants with the fast pow routine. (See below) */ scale_down = 2^-F_EXP_WIDTH; fast_big = 3*2^(B_PRECISION - POW2_K - 2 - F_EXP_WIDTH); printf("#define SCALE_DOWN_EXP\t%i \n", F_EXP_WIDTH); if (!NO_FAST) { PRINT_TBL_COM_VDEF_ITEM("'big' for fast pow/exp rint computation", "FAST_BIG\t", fast_big); c = scale_down*recip_ln2; if (ONE_TYPE) { PRINT_TBL_COM_VDEF_ITEM("2^-F_EXP_WIDTH/ln2", "SCALE_DOWN_OVER_LN2\t", c); } else { TABLE_COMMENT("2^-F_EXP_WIDTH/log(2) in full, hi, lo"); c_hi = bround(c, F_PRECISION - F_HI_HALF_PRECISION - 2*LOG2_K + 1); PRINT_TBL_VDEF_ITEM("SCALE_DOWN_OV_LN2", c); PRINT_TBL_VDEF_ITEM("SCALE_DOWN_OV_LN2_HI", c_hi); PRINT_TBL_VDEF_ITEM("SCALE_DOWN_OV_LN2_LO", c - c_hi); } /* ** For fast exp, we delay screening for overflow and underflow ** until just before the polynomial evaluation. At that point ** we have obtained the high bits of the input argument as an ** integer and can perform the screening with integer operations. */ c = ln2*max(-(F_MIN_BIN_EXP + F_NORM), F_MAX_BIN_EXP + 1 + F_NORM); PRINT_U_TBL_COM_VDEF_ITEM("Fast exp F_PRECISION arg range check", "FAST_EXP_RANGE_CHECK_F", F_HI_BITS_RND(c, MP_RP)); if (!ONE_TYPE) { c = ln2*max(-(R_MIN_BIN_EXP + R_NORM), R_MAX_BIN_EXP + 1 + R_NORM); PRINT_U_TBL_COM_VDEF_ITEM("Fast exp R_PRECISION arg range check", "FAST_EXP_RANGE_CHECK_R", F_HI_BITS_RND(c, MP_RP)); } ENDIF /* ** As noted above, the fast pow and exp routines scale there input ** argument down to avoid premature overflow and we need to ** compensated for it in the polynomial coefficients. ** ** The actual form of the polynomial evaluated depends on whether ** or not backup precision is available. If it is, we use a polynomial ** for 2^x otherwise we use one for 2^x - 1 */ if (USE_BACKUP) { SET_POLY_GLOBALS(0, 1, ln2, 1); GEN_EXP_COEFS(max_pow2_x, F_PRECISION + 1, fast_pow2_deg_f, "F_PRECISION fast pow2 poly coeffs", "FAST_POW2_F\t") GENPOLY(FAST_POW2_F[%%d], FAST_POW2_POLY_F(x), fast_pow2_deg_f); } else { max_arg = max_pow2_x*scale_down; c = ln2/scale_down; SET_POLY_GLOBALS(0, 1, c, 1); GEN_EXP_COEFS(max_arg, F_PRECISION + 1, fast_pow2_deg_f, "F_PRECISION fast pow2 poly coeffs", "FAST_POW2_F\t") GENPOLY(FAST_POW2_F[%%d], FAST_POW2_POLY_F(x), fast_pow2_deg_f); if (!ONE_TYPE) { SET_POLY_GLOBALS(0, 1, ln2, 1); GEN_EXP_COEFS(max_pow2_x, R_PRECISION + 1, fast_pow2_deg_r, "R_PRECISION fast pow2 poly coeffs", "FAST_POW2_R\t") GENPOLY(FAST_POW2_R[%%d], FAST_POW2_POLY_R(x), fast_pow2_deg_r); } ENDIF } } ENDIF /* ** CONSTANTS FOR 2^x EVALUATION IN FAST POW ** ---------------------------------------- ** ** In fast pow, we use the identity x^y = 2^(y*log2(x)). As in fast exp, ** we would like to delay the screening for overflow and underflow for as ** long as possible but we need to avoid overflow when computing the ** product y*log2(x). To do this, we scale y down by an appropriate ** power of 2 prior to performing the multiplication. Since ** ** 2^(F_MIN_BIN_EXP - F_PRECISION + 1) <= x < 2^F_MAX_BIN_EXP ** ** It follows that ** ** (F_MIN_BIN_EXP - F_PRECISION + 1)*ln2 <= log2(x) < F_MAX_BIN_EXP*ln2 ** ** On the platforms currently supportted: ** ** 2^F_EXP_WIDTH > | F_MIN_BIN_EXP-F_PRECISION+1 | >= | F_MAX_BIN_EXP | ** ** So that log2(x) < 2^F_EXP_WIDTH. Therefore, the product ** (y * 2^-F_EXP_WIDTH)*log2(x) is guarenteed not to overflow. Note that ** (y * 2^-F_EXP_WIDTH) might underflow. But in this case the correct ** result of x^y is 1 to machine precision. So even if underflow occurs ** the correct result we be returned. ** ** For fast pow, we delay any overflow underflow checks until just before ** the evaluation of exponential polynomial. At that point we perform ** a gross level check on x and y to sceen out all guarenteed exceptions. ** Specifically we need to check for very large (positive or negative) ** y since these will cause guarenteed overflows or underflows. */ acc_big = 3*2^(B_PRECISION - POW2_K - 2); if (!NO_FAST) { PRINT_TBL_COM_VDEF_ITEM( "Power of 2 to scale down y: 2^-F_EXP_WIDTH", "SCALE_DOWN\t", scale_down); tmp = as_int(acc_big, 32, F_EXP_WIDTH, MP_F_EXP_BIAS, MP_RZ); printf("#define ACC_BIG_HI_32\t\t0x%8.8.16i \n", tmp + 1); tmp = as_int(fast_big, 32, F_EXP_WIDTH, MP_F_EXP_BIAS, MP_RZ); printf("#define FAST_BIG_HI_32\t\t0x%8.8.16i \n", tmp + 1); } ENDIF /* ** CONSTANTS FOR 2^x EVALUATION IN ACCURATE POW ** --------------------------------------------- ** ** In the accurate power routine, both x and y are screened prior to ** any computation, so it is unnecesary to scale y to avoid overflow, ** and consequently we don't need to compensate for the scale in the ** polynomial coefficients. Also, in order to minimize the number of ** operations performed, the argument reduction is performed as ** z = (x - fm*LN2_HI) - fm*LN2_LO, when backup precision is not ** available. */ if (!USE_BACKUP) { /* ln2_ are also used in the log2 part of pow */ c_hi = bround(ln2, R_PRECISION); PRINT_TBL_COM_VDEF_ITEM("ln2 in hi/lo", "LN2_HI\t\t", c_hi); PRINT_TBL_VDEF_ITEM("LN2_LO\t\t", ln2 - c_hi); c_hi = bround(ln2_ov_ln10, R_PRECISION); PRINT_TBL_COM_VDEF_ITEM("ln2/ln10 in hi/lo", "LN2_OV_LN10_HI\t\t", c_hi); PRINT_TBL_VDEF_ITEM("LN2_OV_LN10_LO\t\t", ln2_ov_ln10 - c_hi); } if (!NO_ACC) { if (USE_BACKUP) { /* Approximate 2^x to extra precision */ SET_POLY_GLOBALS(0, 1, ln2, 1); GEN_EXP_COEFS(max_pow2_x, F_PRECISION + POW2_K + 1, acc_pow2_deg_f, "F_PRECISION acc pow2 poly coeffs", "ACC_POW2_F\t") GENPOLY(ACC_POW2_F[%%d], ACC_POW2_POLY_F(x), acc_pow2_deg_f); } else { /* Approximate 2^x - 1 to base precision */ SET_POLY_GLOBALS(1, 1, ln2, ln2); GEN_EXP_COEFS(max_pow2_x, F_PRECISION + 1, acc_pow2_deg_f, "F_PRECISION acc pow2 poly coeffs", "ACC_POW2_F\t"); _GENPOLY(ACC_POW2_F[%%d], ACC_POW2_POLY_F(t,x), -1, c0=t, acc_pow2_deg_f + 1); if (!ONE_TYPE) { SET_POLY_GLOBALS(0, 1, ln2, 1); GEN_EXP_COEFS(max_pow2_x, R_PRECISION + POW2_K + 1, acc_pow2_deg_r, "R_PRECISION acc pow2 poly coeffs", "ACC_POW2_R\t") GENPOLY(ACC_POW2_R[%%d], ACC_POW2_POLY_R(x), acc_pow2_deg_r); } } } ENDIF /* ** CONSTANTS FOR ACCURATE EXP ** -------------------------- ** ** As with accurate power, accurate exp screens it argument prior to ** to any floating point calculation, so it is un-neccessary to scale ** the product x*(1/ln2). This means that the value of BIG and the ** polynomial coefficients also don't require any scaling */ if (!NO_ACC) { PRINT_TBL_COM_VDEF_ITEM("'big' for accurate pow/exp rint computation", "ACC_BIG\t\t", acc_big); /* ** For accurate exp, the initial screening weeds out large arguments ** (guarenteed overflow or underflow), NaNs and Infinities and very ** small arguements (for which the final result is 1.) */ if (IEEE_FLOATING) lo = (F_MIN_BIN_EXP + F_NORM - F_PRECISION)*ln2; else lo = (F_MIN_BIN_EXP + F_NORM)*ln2; hi = (F_MAX_BIN_EXP + F_NORM)*ln2 + log((2 - 2^-F_PRECISION)); lo_check = F_HI_BITS_RND(2^-(F_PRECISION + 1), MP_RM); hi_check = F_HI_BITS_RND(max(-lo, hi), MP_RP); TABLE_COMMENT("F_PRECISION argument and result sreening values"); PRINT_U_TBL_VDEF_ITEM("EXP_LO_CHECK_F\t", lo_check); PRINT_U_TBL_VDEF_ITEM("EXP_HI_CHECK_F\t", hi_check - lo_check); if (!ONE_TYPE) { if (IEEE_FLOATING) lo = (R_MIN_BIN_EXP - R_NORM - R_PRECISION)*ln2; else lo = (R_MIN_BIN_EXP - R_NORM)*ln2; hi = (R_MAX_BIN_EXP - R_NORM)*ln2 + log((2 - 2^-R_PRECISION)); lo_check = R_HI_BITS_RND(2^-(R_PRECISION + 1), MP_RM); hi_check = R_HI_BITS_RND(max(-lo, hi), MP_RP); TABLE_COMMENT( "R_PRECISION argument and result sreening values"); PRINT_U_TBL_VDEF_ITEM("EXP_LO_CHECK_R\t", lo_check); PRINT_U_TBL_VDEF_ITEM("EXP_HI_CHECK_R\t", hi_check - lo_check); } ENDIF /* ** Similarly, for 2^x, initial screening to weed out large arguments ** (guaranteed overflow or underflow), NaNs and Infinities. */ if (IEEE_FLOATING) lo = (F_MIN_BIN_EXP + F_NORM - F_PRECISION) ; else lo = (F_MIN_BIN_EXP + F_NORM); hi = (F_MAX_BIN_EXP + F_NORM) + log2((2 - 2^-F_PRECISION)); hi_check = F_HI_BITS_RND(max(-lo, hi), MP_RP); lo_check = F_HI_BITS_RND(2^-(F_PRECISION + 1), MP_RM); TABLE_COMMENT("F_PRECISION argument screening values for 2^x"); PRINT_U_TBL_VDEF_ITEM("EXP2_HI_CHECK_F\t", hi_check - lo_check); if (!ONE_TYPE) { if (IEEE_FLOATING) lo = (R_MIN_BIN_EXP - R_NORM - R_PRECISION); else lo = (R_MIN_BIN_EXP - R_NORM); hi = (R_MAX_BIN_EXP - R_NORM) + log2((2 - 2^-R_PRECISION)); hi_check = R_HI_BITS_RND(max(-lo, hi), MP_RP); lo_check = R_HI_BITS_RND(2^-(R_PRECISION + 1), MP_RM); TABLE_COMMENT( "R_PRECISION argument and result sreening values"); PRINT_U_TBL_VDEF_ITEM("EXP2_HI_CHECK_R\t",hi_check - lo_check); } ENDIF /* ** Once again for the 10^x case */ if (IEEE_FLOATING) lo = (F_MIN_BIN_EXP + F_NORM - F_PRECISION)*ln2_ov_ln10; else lo = (F_MIN_BIN_EXP + F_NORM)*ln2_ov_ln10; hi = (F_MAX_BIN_EXP + F_NORM)*ln2_ov_ln10 + log((2 - 2^-F_PRECISION)); lo_check = F_HI_BITS_RND(2^-(F_PRECISION + 1), MP_RM); hi_check = F_HI_BITS_RND(max(-lo, hi), MP_RP); TABLE_COMMENT("F_PRECISION argument and result sreening values for 10^x"); PRINT_U_TBL_VDEF_ITEM("EXP10_LO_CHECK_F\t", lo_check); PRINT_U_TBL_VDEF_ITEM("EXP10_HI_CHECK_F\t", hi_check - lo_check); if (!ONE_TYPE) { if (IEEE_FLOATING) lo = (R_MIN_BIN_EXP - R_NORM - R_PRECISION)*ln2_ov_ln10; else lo = (R_MIN_BIN_EXP - R_NORM)*ln2_ov_ln10; hi = (R_MAX_BIN_EXP - R_NORM)*ln2_ov_ln10 + log((2 - 2^-R_PRECISION)); lo_check = R_HI_BITS_RND(2^-(R_PRECISION + 1), MP_RM); hi_check = R_HI_BITS_RND(max(-lo, hi), MP_RP); TABLE_COMMENT( "R_PRECISION argument and result sreening values for 10^x"); PRINT_U_TBL_VDEF_ITEM("EXP10_LO_CHECK_R\t", lo_check); PRINT_U_TBL_VDEF_ITEM("EXP10_HI_CHECK_R\t", hi_check - lo_check); } ENDIF /* ** When backup precision is available, accurate exp uses a polynomial ** for 2^x otherwise it uses one for e^x. **/ if (USE_BACKUP) { SET_POLY_GLOBALS(0, 1, ln2, 1); GEN_EXP_COEFS(max_exp_x, F_PRECISION + POW2_K + 1, acc_exp_deg_f, "F_PRECISION acc exp poly coeffs", "ACC_EXP_F\t"); GENPOLY(ACC_EXP_F[%%d], ACC_EXP_POLY_F(x), acc_exp_deg_f); } else { SET_POLY_GLOBALS(1, 1, 1, 1); GEN_EXP_COEFS(max_exp_x, F_PRECISION + 1, acc_exp_deg_f, "F_PRECISION acc exp poly coeffs", "ACC_EXP_F\t"); _GENPOLY(ACC_EXP_F[%%d], ACC_EXP_POLY_F(t,x), -1, c0=t, acc_exp_deg_f + 1); /* ** NOTE: if (!ONE_TYPE) then ACC_EXP_POLY is identical ** to ACC_POW2_POLY */ } } ENDIF /* ** CONSTANTS FOR EXPM1 ** ------------------- ** ** For expm1, we essentially compute the accurate exp function and ** subtract 1. However, to maintain accuracy in all cases, when ** backup precision is not available, we need to compute evaluate ** e^z as 1 + z + z^2*q(z) rather than as 1 + z*p(z) ** ** Also, screening the input argument is a little more involved. We need ** to screen for large arguments (both positive and negative) and small ** arguments (where a polynomial approximation is appropriate). ** ** The bound for large positive arguments is the same as for exp. For ** large negative arguments, we want to know where expm1(x) = -1 to ** machine precision. Because the check is done on both positive and ** negative arguments on a sign/magnitude value, it is done in two ** parts, one for the positive arguments and one for the negative ** arguments. ** ** We arbitrarily define the polynomial range to have at least the same ** "effective" overhang as the table range. ("Effective" overhang is ** actual overhang less the number of bits of error in the smaller term.) */ expm1_max_poly_arg = 2/pow2_table_size; poly = F_HI_BITS_RND(expm1_max_poly_arg, MP_RM); lo = F_HI_BITS_RND((F_PRECISION + 1)*ln2, MP_RP); hi = F_HI_BITS_RND((F_MAX_BIN_EXP + F_NORM + 1)*ln2, MP_RP); PRINT_U_TBL_COM_VDEF_ITEM("F_PRECISION expm1 initial screening constants", "EXPM1_POLY_CHECK_F", poly); PRINT_U_TBL_VDEF_ITEM("EXPM1_HI_CHECK_F", hi); PRINT_U_TBL_VDEF_ITEM("EXPM1_LO_CHECK_F", lo); if (!ONE_TYPE) { poly = R_HI_BITS_RND(expm1_max_poly_arg, MP_RM); lo = R_HI_BITS_RND((R_PRECISION + 1)*ln2, MP_RM); hi = R_HI_BITS_RND((R_MAX_BIN_EXP + R_NORM + 1)*ln2, MP_RP); PRINT_U_TBL_COM_VDEF_ITEM( "R_PRECISION expm1 initial screening constants", "EXPM1_POLY_CHECK_R", poly); PRINT_U_TBL_VDEF_ITEM("EXPM1_HI_CHECK_R", hi); PRINT_U_TBL_VDEF_ITEM("EXPM1_LO_CHECK_R", lo); } ENDIF expm1_max_red_arg = 2/2^POW2_K; if (USE_BACKUP) { SET_POLY_GLOBALS(1, 1, 1, 1); GEN_EXP_COEFS(expm1_max_poly_arg, F_PRECISION + POW2_K, expm1_poly_deg_f, "F_PRECISION expm1 poly range poly coeffs", "EXPM1_F\t\t"); _GENPOLY(EXPM1_F[%%d], EXPM1_POLY_F(x), -1, c0=0, expm1_poly_deg_f + 1); SET_POLY_GLOBALS(1, 1, ln2, ln2); GEN_EXP_COEFS(expm1_max_red_arg, F_PRECISION + POW2_K, expm1_red_deg_f, "F_PRECISION expm1 reduce range poly coeffs", "EXPM1_RED_F\t"); _GENPOLY(EXPM1_RED_F[%%d], EXPM1_RED_POLY_F(x), -1, c0=0, expm1_red_deg_f + 1); } else { SET_POLY_GLOBALS(2, .5, 1, 1); GEN_EXP_COEFS(expm1_max_poly_arg, F_PRECISION + 1, expm1_poly_deg_f, "F_PRECISION expm1 poly range poly coeffs", "EXPM1_F\t\t"); _GENPOLY(EXPM1_F[%%d], EXPM1_POLY_F(x) (x) +, -2, c0=0 c1=0, expm1_poly_deg_f + 2); GEN_EXP_COEFS(expm1_max_red_arg, F_PRECISION + 1, expm1_red_deg_f, "F_PRECISION expm1 reduce range poly coeffs", "EXPM1_RED_F\t"); _GENPOLY(EXPM1_RED_F[%%d], EXPM1_RED_POLY_F(t,x), -2, c0=t c1=0, expm1_red_deg_f + 2); if (!ONE_TYPE) { SET_POLY_GLOBALS(1, 1, 1, 1); GEN_EXP_COEFS(expm1_max_poly_arg, R_PRECISION + POW2_K, expm1_poly_deg_r, "R_PRECISION expm1 poly range poly coeffs", "EXPM1_R\t\t"); _GENPOLY(EXPM1_R[%%d], EXPM1_POLY_R(x), -1, c0=0, expm1_poly_deg_r + 1); SET_POLY_GLOBALS(1, 1, ln2, ln2); GEN_EXP_COEFS(expm1_max_red_arg, R_PRECISION + POW2_K, expm1_red_deg_r, "R_PRECISION expm1 reduce range poly coeffs", "EXPM1_RED_R\t"); _GENPOLY(EXPM1_RED_R[%%d], EXPM1_RED_POLY_R(x), -1, c0=0, expm1_red_deg_r + 1); } ENDIF } /* ** CONSTANTS FOR SINH/COSH ** ----------------------- ** ** For sinh/cosh, we screen for large arguments (both positive and ** negative) and small arguments (where a polynomial approximation is ** appropriate). ** ** The bound for large arguments is log(2*F_MAX). ** ** We arbitrarily define the polynomial range to have at least the same ** "effective" overhang as the table range. ("Effective" overhang is ** actual overhang less the number of bits of error in the smaller term.) */ sinhcosh_max_poly_arg = sqrt(8/pow2_table_size); hi = F_HI_BITS_RND( (F_MAX_BIN_EXP + 1 + F_NORM)*ln2 + log((2 - 2^-(F_PRECISION - 1))), MP_RP); lo = F_HI_BITS_RND(sinhcosh_max_poly_arg, MP_RM); TABLE_COMMENT("F_PRECISION sinh/cosh argument screening constants"); PRINT_U_TBL_VDEF_ITEM("SINHCOSH_OVERFLOW_CHECK_F", hi); PRINT_U_TBL_VDEF_ITEM("SINHCOSH_BIG_CHECK_F", hi - lo); PRINT_U_TBL_VDEF_ITEM("SINHCOSH_POLY_CHECK_F", lo); if (!ONE_TYPE) { hi = R_HI_BITS_RND((R_MAX_BIN_EXP + 1 - R_NORM)*ln2 + log((2 - 2^-(R_PRECISION - 1))), MP_RP); lo = R_HI_BITS_RND(sinhcosh_max_poly_arg, MP_RM); TABLE_COMMENT("R_PRECISION sinh/cosh argument screening constants"); PRINT_U_TBL_VDEF_ITEM("SINHCOSH_OVERFLOW_CHECK_R", hi); PRINT_U_TBL_VDEF_ITEM("SINHCOSH_BIG_CHECK_R", hi - lo); PRINT_U_TBL_VDEF_ITEM("SINHCOSH_POLY_CHECK_R", lo); } ENDIF /* ** ** The coefficients for sinh/cosh are based on the Taylor series expansions ** ** sinh(x) = x + x^3/3! + x^5/5! .... ** = x*[1 + x^2*P(x^2)] ** ** cosh(x) = 1 + x^2/2! + x^4/4! .... ** = 1 + x^2*Q(x^2)] ** ** On the reduced range, the coefficients for accurate exp(x) are used and ** simply broken up into even and odd polynomials ** ** The following function is used for the Remes approximation in much the ** same way as the e_to_x_poly() function is used. That is by ** appropriately setting the values first_term, first_term_value, x_scale ** and final_scale, we can approximate, sinh(x), cosh(x), sinh(x) - x, ** cosh(x) - 1, sinh(x*ln2), cosh(x*ln2), ... */ function sinh_cosh_poly(x) { auto s, z, k, t; s = first_term_value; if (x != 0) { k = first_term; z = (x*x)*x_scale; t = first_term_value; while(1) { k += 2; t = (t*z)/(k*k - k); if ((bexp(s) - bexp(t)) > bit_precision) break; s += t; } } ENDIF return s*final_scale; } # define GEN_SINH_COSH_COEFS(max_x, prec, deg, com, tag) \ { \ remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT + \ REMES_SQUARE_ARG, 0, max_x, sinh_cosh_poly, \ prec, °, &coefs); \ PRINT_TBL_COM_ADEF_ARRAY(com, tag, deg); \ } if (USE_BACKUP) { SET_POLY_GLOBALS(1, 1, 1, 1); GEN_SINH_COSH_COEFS(sinhcosh_max_poly_arg, F_PRECISION + POW2_K, sinh_poly_deg_f, "F_PRECISION sinh poly range poly coeffs", "SINH_F\t\t"); _GENPOLY(SINH_F[%%d], SINH_POLY_F(x), -1, odd stride=2, 2*sinh_poly_deg_f + 1); SET_POLY_GLOBALS(0, 1, 1, 1); GEN_SINH_COSH_COEFS(sinhcosh_max_poly_arg, F_PRECISION + POW2_K, cosh_poly_deg_f, "F_PRECISION cosh poly range poly coeffs", "COSH_F\t\t"); _GENPOLY(COSH_F[%%d], COSH_POLY_F(x), -1, even stride=2, 2*cosh_poly_deg_f); _GENPOLY(ACC_POW2_F[%%d], SINHCOSH_ODD_POLY_F(x), 0, odd, acc_pow2_deg_f); _GENPOLY(ACC_POW2_F[%%d], SINHCOSH_EVEN_POLY_F(x), 0, even, acc_pow2_deg_f); } else { SET_POLY_GLOBALS(3, 1/6, 1, 1); GEN_SINH_COSH_COEFS(sinhcosh_max_poly_arg, F_PRECISION + 1, sinh_poly_deg_f, "F_PRECISION sinh poly range poly coeffs", "SINH_F\t\t"); _GENPOLY(SINH_F[%%d], SINH_POLY_F(x) (x) +, -3, odd stride=2 c1=0, 2*sinh_poly_deg_f + 3); SET_POLY_GLOBALS(2, .5, 1, 1); GEN_SINH_COSH_COEFS(sinhcosh_max_poly_arg, F_PRECISION + 1, cosh_poly_deg_f, "F_PRECISION cosh poly range poly coeffs", "COSH_F\t\t"); _GENPOLY(COSH_F[%%d], COSH_POLY_F(x) ONE +, -2, even stride=2 c0=0, 2*cosh_poly_deg_f + 2); _GENPOLY(ACC_EXP_F[%%d], SINHCOSH_ODD_POLY_F(x), -1, odd, acc_exp_deg_f + 1); _GENPOLY(ACC_EXP_F[%%d], SINHCOSH_EVEN_POLY_F(x), -1, even c0=0, acc_exp_deg_f + 1); if (!ONE_TYPE) { SET_POLY_GLOBALS(1, 1, 1, 1); GEN_SINH_COSH_COEFS(sinhcosh_max_poly_arg, R_PRECISION + POW2_K, sinh_poly_deg_r, "R_PRECISION sinh poly range poly coeffs", "SINH_R\t\t"); _GENPOLY(SINH_R[%%d], SINH_POLY_R(x), -1, odd stride=2, 2*sinh_poly_deg_r + 1); SET_POLY_GLOBALS(0, 1, 1, 1); GEN_SINH_COSH_COEFS(sinhcosh_max_poly_arg, R_PRECISION + POW2_K, cosh_poly_deg_r, "R_PRECISION cosh poly range poly coeffs", "COSH_R\t\t"); _GENPOLY(COSH_R[%%d], COSH_POLY_R(x), 0, even stride=2, 2*cosh_poly_deg_r); _GENPOLY(ACC_POW2_R[%%d], SINHCOSH_ODD_POLY_R(x), 0, odd, acc_pow2_deg_r); _GENPOLY(ACC_POW2_R[%%d], SINHCOSH_EVEN_POLY_R(x), 0, even, acc_pow2_deg_r); } ENDIF } /* ** MISCELLANEOUS SHARED CONSTANTS: ** ------------------------------- ** ** This section of MP code records the current build parameters that ** must be passed on to the functions that use the generated table and ** also generates constants that are not assocaiated with any particular ** function. Begin by recording the current build parameters. */ printf("#define LOG2_K\t\t\t%i\n", LOG2_K); printf("#define POW2_K\t\t\t%i\n", POW2_K); printf("#define NO_FAST\t\t\t%i\n", NO_FAST); printf("#define NO_ACC\t\t\t%i\n", NO_ACC); printf("#define USE_DIVIDE\t\t%i\n", USE_DIVIDE); /* ** Generate a floating point 1.0 for use in expm1 and scaling the input ** argument in the power functions. Also generate 1/ln2 for scaling the ** input argument in exp, expm1 and sinh/cosh and .5 for near ** overflow/underflow fixup. */ PRINT_TBL_COM_VDEF_ITEM("B_PRECISION .5, 1.0 and 2.0", "HALF\t\t", .5); PRINT_TBL_VDEF_ITEM("ONE\t\t", 1.0); PRINT_TBL_VDEF_ITEM("TWO\t\t", 2.0); PRINT_TBL_COM_VDEF_ITEM("B_PRECISION max float", "MAX_FLOAT\t", MP_MAX_FLOAT); PRINT_TBL_COM_VDEF_ITEM("1/ln2 in B_PRECISION", "RECIP_LN2\t", recip_ln2); /* ** GENERAL DISCUSSION OF x^y AND log2(x) ** ------------------------------------- ** ** This implementation computes the power x^y in three conceptual stages: ** ** o compute log2(x), with some extra bits of precision ** o multiply y * log2(x), maintaining the extra precision ** o evaluate 2 ^ product. ** ** In the actual implementations, the first two steps are combined. ** ** ** DEFINING THE TABLE SIZES: ** ------------------------- ** ** The evaluation of log2(x) and 2^product both use table look-up schemes ** to increase accuracy and performance. The number of extra bits of ** precision required for log2(x) is F_EXP_WIDTH - 1 + POW2_K, where ** 2^POW2_K is the number of entries in the 2^x table (See the previous ** discussion on 2^x). ** ** The total amount of extra precision in the log2(x) computation is a ** function of the log2 table size and the argument reduction scheme used. ** By way of explaination, consider calculating log2(f) for f in the ** interval [1,2). Let the table size for the log2 evaluation be 2^LOG2_K ** and let j the integer such that Fj = 1 + j/2^LOG2_K is closest to f. ** With the above definitions, we consider two possible argument reduction ** schemes: ** ** With : z = (f - Fj)/(f + Fj) ** divide: log2(f) = log2(Fj) + (2/ln2)*[z + z^3/3 + z^5/5 + ...] ** ** Without: w = (f - Fj)/Fj ** divide: log2(f) = log2(Fj) + (1/ln2)*[w - w^2/2 + w^3/3 - ... ] ** ** The worst case senario for accuracy is when f = 1 + 1/2^(LOG2_K + 1). ** This implies that log2(Fj) = 0 and that we can only get extended ** precision in the log2 computation by computing the first "few" terms ** of the series in extended precision. ** ** In the "with divide" case, we compute z in extended precision, and the ** amount of extra precision in the final result is (essentially) the ** alignment shift between z and z^3/3, or 2*LOG2_K + 5. ** ** In the "without divide" case, we compute s = w - w^2/2 in extended ** precision, and the amount of extra precision in the final result is ** (essentially) the alignment shift between s and w^3/3, or 2*LOG2_K + 3. ** ** If we are only considering accuracy, then we should chose LOG2_K and ** POW2_K according to the relationship: ** ** 2*LOG2_K + R = F_EXP_WIDTH - 1 + POW2_K ** ** where R is 5 or 3 depending on whether the argument reduction is uses a ** divide or not. However, since the power table is used for fast exp and ** regular exp (and possibly log2 and fast log2) the values of LOG2_K and ** POW2_K may be taken to be bigger than those prescribed by the above ** relation to increase the performance of any or all of the routines ** dependent upon the table. In particular, the default values of LOG2_K ** and POW2_K do not satify the above relationship, but were chosen to ** optimize the performance of fast exp and fast pow. ** ** ** COMPUTATION OF LOG2(x) ** ---------------------- ** ** The computation of log2(x) proceeds as follows: ** ** log2(2^I*f) = I + log2(f) ** = I + log2(Fj) + log2(f/Fj) ** = I + log2(Fj) + p(z) ** ** where f is in [1, 2 ), Fj = 1 + j/2^LOG2_K and z is the "reduced" ** argument (using one of the two methods described above) and p is ** is a polynomial. The form of p depends on the reduction methods. ** ** NOTE: A more detailed discussion of the follow ** two sections is contained in dpml_pow.c ** ** ** Reduction With Divides: ** ----------------------- ** ** If the argument reduction for log2(x) is going to use a divide, then ** we need to compute z = [(f - Fj)/(f + Fj)]*(2/ln2) and p(z) is evaluated ** as: ** ** p(z) = z + z^3*q(z^2) ** ** where ** ** q(t) = (ln2/2)^2 * sum{ [t*(ln2/2)^2]^n/(2n+3) | n = 0, 1, ... } ** ** It is necessary to compute z extra precision. If no backup precision ** is available, then z must be computed in hi and lo pieces in order to ** obtain required accuracy for log2(x). In this case the computation ** proceeds as follows: ** ** t = f - Fj ** s = (f + Fj) ** r = 1/s ** z = t*r ** z_hi = hi_bits(z) ** f_hi = hi_bits(f) ** f_lo = lo_bits(f) ** z_lo = {([(f_hi - Fj)*hi_bits(2/ln2) - z_hi*s] + ** f_lo*hi_bits(2/ln2)) + ** [t*lo_bits(2/ln2) - z_hi*f_lo]}*g; ** ** ** Reduction Without Divides: ** -------------------------- ** ** If the argument reduction for log2(x) is not going to use a divide, then ** we need to compute z = (f - Fj)/(Fj*ln2) and p(z) is evaluated ** as: ** ** p(z) = z - z^2*ln2/2 + z^3*q(z) ** ** where ** ** q(t) = -(ln2)^2 * sum{ [-t*ln2]^n/(n+3) | n = 0, 1, ... } ** ** It is necessary to compute s = z - z^2*ln2/2 to extra precision. If no ** backup precision is available, then s must be computed in hi and lo ** pieces in order to obtain required accuracy for log2(x). In this case ** the computation proceeds as follows: ** ** t = f - Fj ** z = t*(1/(Fj*ln2)) ** g = Fj*Fj*(ln2/2) ** u = 2*Fj ** s = (u - t)*t*g ** s_hi = hi_bits(s) ** v = Fj*s_hi ** t_hi = hi_bits(t) ** t_lo = lo_bits(t) ** s_lo = {[u*(t - v*hi_bits(ln2)) + t_hi^2] + ** [t_lo*(t + t_hi) - u*v*lo_bits(ln2))]}*g ** ** For the fast pow routine, we use the "no divide" reduction. However, ** we "cheat" on the accuracy of final result by computing the polynomial ** as ** p(z) = z_hi + z_lo - z*q(z) ** ** where ** ** q(t) = ln2 * sum{ [-t*ln2]^n/(n+2) | n = 0, 1, ... } ** */ /* ** CONSTANTS FOR LOG2 ** ------------------ ** ** When no backup is available, computing the reduced arguement requires ** 2/ln2 in hi an lo pieces or ln2/2 in full precision and ln2 in hi ** and lo pieces, depending on whether divide is used or not. */ if (!USE_BACKUP) { if (USE_DIVIDE) { c = 2*recip_ln2; PRINT_TBL_COM_VDEF_ITEM("2/ln2 in F_PRECISION and hi/lo", "TWO_OVER_LN2\t", c); c_hi = bround(c, R_PRECISION); PRINT_TBL_VDEF_ITEM("TWO_OVER_LN2_HI\t", c_hi); PRINT_TBL_VDEF_ITEM("TWO_OVER_LN2_LO\t", c - c_hi); } else { PRINT_TBL_COM_VDEF_ITEM("ln2/2 in F_PRECISION", "LN2_OVER_TWO\t", .5*ln2); } } ENDIF /* ** Log Polynomials: ** ---------------- ** ** As indicated above, we use two different polynomial log evaluations ** depending on whether division is used or not. when using a divide: ** ** ln(F/Fj) = 2z + 2*z^3/3 + 2*z^5/5 + ...., z = (F - Fj)/(x + Fj) ** ** or letting u = 2*z/ln2, ** ** log2(F/Fj) = u + u^3*ln2^2/12 + u^5*ln2^4/80 + ...., ** = u + u^3*(ln2^2/12 + u^2*ln2^4/80 + u^4*ln2^6/448....) ** = u + u^3*P(u^2) ( if no backup precision ) ** = u*Q(u^2) ( if backup precision ) */ function divide_log2_poly(x) { auto s, z, k, u, t; s = first_term_value; if (x != 0) { k = 2*first_term + 1; z = (x*x)*x_scale; t = z; while(1) { k += 2; u = t/k; if ((bexp(s) - bexp(u)) > bit_precision) break; s += u; t *= z; } } ENDIF return s*final_scale; } /* ** When not using a divide: ** ** ln(F/Fj) = w - w^2/2 + w^3/3 ... , w = (F - Fj)/Fj ** ** For the accurate pow, we let v = w/ln2, and write the above as: ** ** log2(F/Fj) = v - v^2*ln2/2 + v^3*ln2^2/3 ... ** = (v - v^2*ln2/2) + v^3*(ln2^2/3 - v*ln2^3/4 ...) ** = (v - v^2*ln2/2) + v^3*P(v) ( if no backup prec ) ** ** For fast pow we write the power series as: ** ** log2(F/Fj) = v - v^2*ln2/2 + v^3*ln2^2/3 ... ** = v + v^2*(-ln2/2 + v*ln2^2/3 - v^2*ln2^2/4 + ...) ** = v + v^2*P(v) ( if no backup prec ) ** ** If backup precision is available we can write the series as ** ** log2(F/Fj) = v - v^2*ln2/2 + v^3*ln2^2/3 ... ** = v*P(v) ** ** Note that whether using the divide or non-divide form, the reduced ** argument is most negative, when j = 1 and F = F0; and is most positive ** when j = 0 and F = F1. */ function no_divide_log2_poly(x) { auto s, z, k, u, t; s = first_term_value; if (x != 0) { k = first_term + 2; z = x*x_scale; t = z; while(1) { u = t/k; if (bexp(s) - bexp(u) > bit_precision) break; s += u; t *= z; k++; } } ENDIF return s*final_scale; } # define __GEN_LOG_COEFS(term, min, max, func, prec, deg, com, tag) \ { \ remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT + \ (term), min, max, func, prec, °, &coefs); \ PRINT_TBL_COM_ADEF_ARRAY(com, tag, deg); \ } # define GEN_DIV_LOG_COEFS(max, prec, deg, com, tag) \ __GEN_LOG_COEFS(REMES_SQUARE_ARG, 0., max, \ divide_log2_poly, prec, deg, com, tag) # define GEN_NO_DIV_LOG_COEFS(min, max, prec, deg, com, tag) \ __GEN_LOG_COEFS(REMES_LINEAR_ARG, min, max, \ no_divide_log2_poly, prec, deg, com, tag) log2_table_size = 2^LOG2_K; min_arg = -1/((2*log2_table_size + 2)*ln2); max_arg = 1/(2*log2_table_size*ln2); if (!NO_ACC) { if (USE_DIVIDE) { c = ln2/2; max_div_arg = 2/((4*log2_table_size + 1)*ln2); if (USE_BACKUP) { SET_POLY_GLOBALS(0, 1, c*c, 1); GEN_DIV_LOG_COEFS(max_div_arg, F_PRECISION + 2*LOG2_K + 3, acc_log2_deg_f, "F_PRECISION acc log2 poly coeffs", "ACC_LOG2_F\t"); _GENPOLY(ACC_LOG2_F[%%d], ACC_LOG2_POLY_F(t,x), 0, odd stride=2 c0=t, 2*acc_log2_deg_f + 1); } else { SET_POLY_GLOBALS(1, 1/3, c*c, c*c); GEN_DIV_LOG_COEFS(max_div_arg, F_PRECISION + 1, acc_log2_deg_f, "F_PRECISION acc log2 poly coeffs", "ACC_LOG2_F\t"); _GENPOLY(ACC_LOG2_F[%%d], ACC_LOG2_POLY_F(t,x), -3, odd stride=2 c0=t c1=0, 2*acc_log2_deg_f + 3); if (!ONE_TYPE) { /* Get R_PRECISION coefficients - backup prec assumed. */ SET_POLY_GLOBALS(0, 1, c*c, 1); GEN_DIV_LOG_COEFS(max_div_arg, R_PRECISION + 2*LOG2_K + 3, acc_log2_deg_r, "R_PRECISION acc log2 poly coeffs", "ACC_LOG2_R\t"); _GENPOLY(ACC_LOG2_R[%%d], ACC_LOG2_POLY_R(t,x), 0, odd stride=2 c0=t, 2*acc_log2_deg_r + 1); } ENDIF } } else /* !USE_DIVIDE */ { if (USE_BACKUP) { SET_POLY_GLOBALS(0, 1, -c, 1); GEN_NO_DIV_LOG_COEFS(min_arg, max_arg, F_PRECISION + LOG2_K + 3, acc_log2_deg_f, "F_PRECISION acc log2 poly coeffs", "ACC_LOG2_F\t"); _GENPOLY(ACC_LOG2_F[%%d], ACC_LOG2_POLY_F(t,x), -1, c0=t, acc_log2_deg_f); } else { SET_POLY_GLOBALS(2, 1/3, -ln2, ln2*ln2); GEN_NO_DIV_LOG_COEFS(min_arg, max_arg, F_PRECISION + 1, acc_log2_deg_f, "F_PRECISION acc log2 poly coeffs", "ACC_LOG2_F\t"); _GENPOLY(ACC_LOG2_F[%%d], ACC_LOG2_POLY_F(t,x), -3, c0=t c1=0 c2=0, acc_log2_deg_f + 3); } if (!ONE_TYPE) { /* ** backup precision is assumed. Also, we can combine the ** addition of the hi bits of log2(x) with the polynomial ** evaluation. */ SET_POLY_GLOBALS(0, 1, -ln2, 1); GEN_NO_DIV_LOG_COEFS(min_arg, max_arg, R_PRECISION + LOG2_K + 3, acc_log2_deg_r, "R_PRECISION acc log2 poly coeffs", "ACC_LOG2_R\t"); _GENPOLY(ACC_LOG2_R[%%d], ACC_LOG2_POLY_R(t,x), -1, c0=t, acc_log2_deg_r + 1); } ENDIF } } ENDIF if (!NO_FAST) { /* ** We assume that we are not using the divide reduction for the ** fast case. Additionally, we assume that if backup precision ** is available, the fast polynomial is the same as the accurate ** polynomial except that the first two terms are computed ** separately and added in afterwards. */ if (USE_BACKUP) printf("#define FAST_LOG2_POLY_F\t\tACC_LOG2_POLY_F\n"); else { SET_POLY_GLOBALS(1, 1/2, -ln2, -ln2); GEN_NO_DIV_LOG_COEFS(min_arg, max_arg, F_PRECISION + 1, fast_log2_deg_f, "F_PRECISION fast log2 poly coeffs", "FAST_LOG2_F\t"); _GENPOLY(FAST_LOG2_F[%%d], FAST_LOG2_POLY_F(t,x), -2, c0=t c1=0 c2=0, fast_log2_deg_f + 2); if (!ONE_TYPE) { _GENPOLY(ACC_LOG2_R[%%d], FAST_LOG2_POLY_R(t,x), -1, c0=t c1=0 c2=0, acc_log2_deg_r + 1); } } } ENDIF /* ** THE LOG2 TABLE ** ---------------- ** ** The actual format of the log2 table depends on whether it will be shared ** between functions and/or data types and whether or not backup precision ** is available. In general, for j = 0, 1, ... 2^LOG2_K, the table needs to ** contain the following values: ** ** Fj = 1 + j/2^LOG2_K ** Rj = 1/(Fj*ln2) ** Lj = log2(Fj) ** ** If there is no back-up data type available, then the values Rj and Lj ** need to be stored in hi and lo pieces. The following table gives the ** required table values: ** ** Function Fj Rj Rj_hi Rj_lo Lj Lj_hi Lj_lo ** ---------------------------------+---+---------------+---------------+ ** fast pow / backup | x | x | x | ** acc pow / backup / divide | x | | x | ** acc pow / backup / no divide | x | x | x | ** fast pow / no backup | x | x x | x x | ** acc pow / no backup / divide | x | | x x | ** acc pow / no backup / no divide | x | x | x x | ** ---------------------------------+---+---------------+---------------+ ** ** Based on the above table and the number of possible combinations ** for sharing of the table, the log table can have many different formats. ** In the interest of time and simplicity, only the two combination ** suitable for building the DPML on Alpha are inlcude here. */ # if (ONE_TYPE && NO_FAST && !USE_BACKUP && USE_DIVIDE) /* ** These macros build the log table for a single, accurate power ** function when backup precision is not available and division is ** used. (This is the quad-precision case) */ # define LOG_TABLE_BANNER \ "\n\t * Fj, hi(log2(Fj)) and lo(log2(Fj) in base precision" \ "\n\t *\n\t * offset" \ " row" \ "\n\t" # define PRINT_LOG_TABLE_ACCESS_MACROS(disp) \ printf("#define POW_EVAL_FLAGS\t\tUSE_DIVIDE\n"); \ __PRINT_TABLE_DEF("GET_F(j)\t", F_CHAR, disp); \ __PRINT_TABLE_DEF("LOG_F_HI(j)\t", F_CHAR, disp); \ __PRINT_TABLE_DEF("LOG_F_LO(j)\t", F_CHAR, disp) # define LOG_INDEX_BASE_POS (__LOG2(BITS_PER_F_TYPE) - 3) # define LOG_INDEX_SCALE 3 # define PRINT_LOG_TABLE_ENTRY(j, Fj, Rj, Lj) \ printf( "\t/* %4i */ %#.4" STR(F_CHAR) ", /* %3i */\n", \ BYTES(MP_BIT_OFFSET), Fj, j); \ MP_BIT_OFFSET += BITS_PER_F_TYPE; \ Lj_hi = bround(Lj, F_HI_HALF_PRECISION); \ __PRINT_TABLE_VALUE(F_CHAR, Lj_hi); \ __PRINT_TABLE_VALUE(F_CHAR, Lj - Lj_hi) # elif !(ONE_TYPE || NO_FAST || NO_ACC || USE_DIVIDE) /* ** These macros build the log table for a shared table for both ** accurate and fast pow in two types, the larger of which has no ** backup precision and no divide is used. */ # define LOG_TABLE_BANNER \ "\n\t * Fj, Rj = 1/(Fj*ln2) and Lj = log2(Fj). Lj and Rj are" \ "\n\t * given in hi and low parts. Fj and the hi part or Lj are" \ "\n\t * in reduced precision; Rj, lo(Rj) and lo(Lj) in standard" \ "\n\t * precision with hi(Rj) = Rj - lo(Rj)" \ "\n\t *" \ "\n\t * offset row" \ "\n\t" # define PRINT_LOG_TABLE_ACCESS_MACROS(disp) \ __PRINT_TABLE_DEF("GET_F(j)\t", R_CHAR, disp); \ __PRINT_TABLE_DEF("LOG_F_HI(j)\t", R_CHAR, disp); \ __PRINT_TABLE_DEF("RECIP_F(j)\t", F_CHAR, disp); \ __PRINT_TABLE_DEF("RECIP_F_LO(j)\t", F_CHAR, disp); \ __PRINT_TABLE_DEF("LOG_F_LO(j)\t", F_CHAR, disp) # define LOG_INDEX_BASE_POS (__LOG2(BITS_PER_F_TYPE) - 1) # define LOG_INDEX_SCALE 1 # define PRINT_LOG_TABLE_ENTRY(j, Fj, Rj, Lj) \ Lj_hi = bround(Lj, R_PRECISION); \ printf( "\t/* %4i */ %#.4" STR(R_CHAR) ", %#.4" \ STR(R_CHAR) ", /* %3i */\n", BYTES(MP_BIT_OFFSET), \ Fj, Lj_hi, j); \ MP_BIT_OFFSET += 2*BITS_PER_R_TYPE; \ __PRINT_TABLE_VALUE(F_CHAR, Rj); \ __PRINT_TABLE_VALUE(F_CHAR, Rj - bround(Rj, LOG2_K)); \ __PRINT_TABLE_VALUE(F_CHAR, Lj - Lj_hi) # else # error "ERROR: Log table generation for this set of switches NYI" # endif disp = MP_BIT_OFFSET; PRINT_LOG_TABLE_ACCESS_MACROS(disp); printf("#define LOG_INDEX_BASE_POS\t%i \n", LOG_INDEX_BASE_POS); printf("#define LOG_INDEX_SCALE\t\t%i \n", LOG_INDEX_SCALE); TABLE_COMMENT( LOG_TABLE_BANNER ); for (i = 0; i <= log2_table_size; i++) { Fj = 1 + (i/log2_table_size); Rj = 1/(Fj*ln2); Lj = log2(Fj); PRINT_LOG_TABLE_ENTRY( i, Fj, Rj, Lj); } END_TABLE; printf( "#else\n" "\n extern const "STR(B_TYPE)" "STR(MP_TABLE_NAME)"[%i]; \n" "\n#endif\n\n", MP_BIT_OFFSET/BITS_PER_F_TYPE - 1); @end_divert @eval my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ my $polyText = Egrep( STR(GENPOLY_EXECUTABLE), $tableText, \ \$tableText ); \ $polyText = GenPoly( $polyText ); \ $outText = "$tableText\n\n$defineText\n\n$polyText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants for " . \ "power and related functions", __FILE__); \ print "$headerText\n\n$outText"; /* end of the MAKE_INCLUDE mphoc code section */ LIBRARY/float128/dpml_globals.c0000644€­ Q01134020000003372515113665770015224 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #undef MAKE_INCLUDE #define MAKE_INCLUDE #undef F_FLOAT #define F_FLOAT #define __F_SUFFIX DPML_NULL_MACRO_TOKEN #ifndef BUILD_FILE_NAME # define BUILD_FILE_NAME dpml_globals.h #endif #include "build.h" #include "op_system.h" #include "compiler.h" #include "architecture.h" #include "f_format.h" #include "dpml_names.h" /* * For each data type required by the system, this routine generates bit * patterns for the indicated values in the following order: */ #define NAN_INDEX 0 #define POS_ZERO_INDEX 1 #define NEG_ZERO_INDEX 2 #define POS_TINY_INDEX 3 #define NEG_TINY_INDEX 4 #define POS_HUGE_INDEX 5 #define NEG_HUGE_INDEX 6 #define POS_INFINITY_INDEX 7 #define NEG_INFINITY_INDEX 8 #define POS_ULP_FACTOR_INDEX 9 #define NEG_ULP_FACTOR_INDEX 10 #define POS_ONE_INDEX 11 #define NEG_ONE_INDEX 12 /* * The globals data is stored in the GLOBALS TABLE as a sequence of * records. If only IEEE values are needed, each record is 32 bytes in * length; if VAX values are required in addition to the IEEE values, then * each record is 64 bytes in length. The fields in the records are * arranged in the following format: * * IEEE values only: * +---+---+---+---+---+---+---+---+---+---+ * | s | | t | x | * byte +---+---+---+---+---+---+---+---+---+---+ * offset: 0 8 16 * * Both IEEE and VAX values: * +---+---+---+---+---+---+---+---+---+---+ * | s | | t | x | * byte +---+---+---+---+---+---+---+---+---+---+ * offset: 0 8 16 * +---+---+---+---+---+---+---+---+---+---+ * | f | | g | | * byte +---+---+---+---+---+---+---+---+---+---+ * offset: 32 40 * * * The address of the global item with index N and data type T is given by * * GLOBAL_ADDR( T, N ) = ( char* )GLOBALS_TABLE + * 8 * T + * BYTES_PER_TABLE_ENTRY * I * */ /* * In addition to the actual values, this routine also sets up a table * of address that allows type independent accessing of the values. * Values are generated only for those data types actually supported by * the platform. The BIT_IS_SET macro is used to determine which * "bits" are set in the FLOAT_TYPES macro */ #define BIT_IS_SET(i,n) (((i) >> (n)) - (((i) >> ((n)+1)) << 1)) /* * Along with each set of constants, a symbolic constant for an enumerated * type is generated. These constants have been chosen to allow for easy access * to the globals table. * * #define _s_TYPE 0 * #define _t_TYPE 1 * #define _x_TYPE 2 * #define _f_TYPE 4 * #define _g_TYPE 5 * #define _d_TYPE 5 * * (Note: These _{g,t,f,s,x}_TYPE constants are only referenced by * nt_exception.c, and the F_TYPE_ENUM macro (see below). * The F_TYPE_ENUM macro, in turn, is only referenced via the GLOBAL macro * (see below) and via ADD_ERR_CODE_TYPE defined in dpml_exception.h.) * * These enumerated types are used to provide type independent access of all * DPML global values. For example, to access a positive one, use either: * * *((F_TYPE*)GLOBAL_ADDR(PASTE_3(_,F_CHAR,_TYPE),POS_ONE_INDEX)) * or * GLOBAL(POS_ONE_INDEX) * or * POS_ONE */ /* * These macros are used to print out the table values and ensure that * the values are printed out in the right order. * * NOTE: Extending mphoc to deal with NaN's, infinities, signed * zeros and ROP's would make life a lot simpler here. * * NOTE: Although platforms that contain the VAX g and d float data type * are little endian, the word containing the exponent comes first. */ # define PR_SINGLE(a) printf("\t"#a", 0, \n") ; #if (ENDIANESS == big_endian) # define PR_DOUBLE(a,b) printf("\t"#a", "#b", \n") ; # define PR_QUAD(a,b,x,y) printf("\t"#a", "#b", "#x", "#y", \n") ; #else # define PR_DOUBLE(a,b) printf("\t"#b", "#a", \n") ; # define PR_QUAD(a,b,x,y) printf("\t"#y", "#x", "#b", "#a", \n") ; #endif #if (BITS_PER_TABLE_WORD != 32) # error "BITS_PER_TABLE_WORD must be 32" #endif #include "mphoc_macros.h" # define TMP_FILE ADD_EXTENSION(BUILD_FILE_NAME,tmp) @divert divertText printf( "#if !defined(GLOBALS_TABLE)\n" "# define GLOBALS_TABLE __INTERNAL_NAME(globals_table)\n" "#endif\n\n" ); do_f = (BIT_IS_SET(FLOAT_TYPES, f_floating)); do_g = (BIT_IS_SET(FLOAT_TYPES, g_floating)); do_s = (BIT_IS_SET(FLOAT_TYPES, s_floating)); do_t = (BIT_IS_SET(FLOAT_TYPES, t_floating)); do_x = (BIT_IS_SET(FLOAT_TYPES, x_floating)); do_d = (BIT_IS_SET(FLOAT_TYPES, d_floating)); /* We assume there are really only 2 different table formats: {s, t, x} */ /* and {s, t, x, f, g}, which use 32 and 64 bytes respectively. */ bytes_per_table_entry = 0 ; table_padding = 0 ; if ( do_s ) { printf( "#define _s_TYPE 0\n" ) ; bytes_per_table_entry = bytes_per_table_entry + 8 ; } if ( do_t ) { printf( "#define _t_TYPE 1\n" ) ; bytes_per_table_entry = bytes_per_table_entry + 8 ; } if ( do_x ) { printf( "#define _x_TYPE 2\n" ) ; bytes_per_table_entry = bytes_per_table_entry + 16 ; } if ( do_f ) { printf( "#define _f_TYPE 4\n" ) ; bytes_per_table_entry = bytes_per_table_entry + 8 ; } if ( do_g ) { printf( "#define _g_TYPE 5\n" ) ; bytes_per_table_entry = bytes_per_table_entry + 8 ; } if ( do_d ) { printf( "#define _d_TYPE 5\n" ) ; bytes_per_table_entry = bytes_per_table_entry + 8 ; } if ( bytes_per_table_entry <= 32 ) { table_padding = 32 - bytes_per_table_entry ; bytes_per_table_entry = 32 ; } else { table_padding = 64 - bytes_per_table_entry ; bytes_per_table_entry = 64 ; } table_padding = table_padding / 4 ; # define PAD_TABLE \ if ( table_padding ) { \ printf( "\t0," ) ; \ for ( i = 1 ; i < table_padding ; i++ ) \ printf( " 0," ) ; \ printf( "\n" ) ; \ } \ printf("#ifdef GLOBAL_TABLE_VALUES\n\n"); START_GLOBAL_TABLE(GLOBALS_TABLE, offset); /* NOTE: the order in which the following statements occur *MUST* match */ /* the enumeration for the _{s,t,x,f,g,d}_TYPE constants above. */ /* NaNs and reserved operands */ if (do_s) PR_SINGLE(S_NAN_HI) if (do_t) PR_DOUBLE(T_NAN_HI, NAN_LO) if (do_x) PR_QUAD(X_NAN_HI, NAN_LO, NAN_LO, NAN_LO) if (do_f) PR_SINGLE(0x00008000) if (do_g) PR_DOUBLE(0x00000000, 0x00008000) if (do_d) PR_DOUBLE(0x00000000, 0x00008000) PAD_TABLE ; /* POS ZERO */ if (do_s) PR_SINGLE(0x00000000) if (do_t) PR_DOUBLE(0x00000000, 0x00000000) if (do_x) PR_QUAD(0x00000000, 0x00000000, 0x00000000, 0x00000000) if (do_f) PR_SINGLE(0x00000000) if (do_g) PR_DOUBLE(0x00000000, 0x00000000) if (do_d) PR_DOUBLE(0x00000000, 0x00000000) PAD_TABLE ; /* NEG ZERO */ if (do_s) PR_SINGLE(0x80000000) if (do_t) PR_DOUBLE(0x80000000, 0x00000000) if (do_x) PR_QUAD(0x80000000, 0x00000000, 0x00000000, 0x00000000) if (do_f) PR_SINGLE(0x00000000) if (do_g) PR_DOUBLE(0x00000000, 0x00000000) if (do_d) PR_DOUBLE(0x00000000, 0x00000000) PAD_TABLE ; /* POS TINY */ if (do_s) PR_SINGLE(0x00000001) if (do_t) PR_DOUBLE(0x00000000, 0x00000001) if (do_x) PR_QUAD(0x00000000, 0x00000000, 0x00000000, 0x00000001) if (do_f) PR_SINGLE(0x00000080) if (do_g) PR_DOUBLE(0x00000000, 0x00000010) if (do_d) PR_DOUBLE(0x00000000, 0x00000080) PAD_TABLE ; /* NEG TINY */ if (do_s) PR_SINGLE(0x80000001) if (do_t) PR_DOUBLE(0x80000000, 0x00000001) if (do_x) PR_QUAD(0x80000000, 0x00000000, 0x00000000, 0x00000001) if (do_f) PR_SINGLE(0x00008080) if (do_g) PR_DOUBLE(0x00000000, 0x00008010) if (do_d) PR_DOUBLE(0x00000000, 0x00008080) PAD_TABLE ; /* POS HUGE */ if (do_s) PR_SINGLE(0x7f7fffff) if (do_t) PR_DOUBLE(0x7fefffff, 0xffffffff) if (do_x) PR_QUAD(0x7ffeffff, 0xffffffff, 0xffffffff, 0xffffffff) if (do_f) PR_SINGLE(0xffff7fff) if (do_g) PR_DOUBLE(0xffffffff, 0xffff7fff) if (do_d) PR_DOUBLE(0xffffffff, 0xffff7fff) PAD_TABLE ; /* NEG HUGE */ if (do_s) PR_SINGLE(0xff7fffff) if (do_t) PR_DOUBLE(0xffefffff, 0xffffffff) if (do_x) PR_QUAD(0xfffeffff, 0xffffffff, 0xffffffff, 0xffffffff) if (do_f) PR_SINGLE(0xffffffff) if (do_g) PR_DOUBLE(0xffffffff, 0xffffffff) if (do_d) PR_DOUBLE(0xffffffff, 0xffffffff) PAD_TABLE ; /* POS INFINITY */ if (do_s) PR_SINGLE(0x7f800000) if (do_t) PR_DOUBLE(0x7ff00000, 0x00000000) if (do_x) PR_QUAD(0x7fff0000, 0x00000000, 0x00000000, 0x00000000) if (do_f) PR_SINGLE(0xffff7fff) if (do_g) PR_DOUBLE(0xffffffff, 0xffff7fff) if (do_d) PR_DOUBLE(0xffffffff, 0xffff7fff) PAD_TABLE ; /* NEG INFINITY */ if (do_s) PR_SINGLE(0xff800000) if (do_t) PR_DOUBLE(0xfff00000, 0x00000000) if (do_x) PR_QUAD(0xffff0000, 0x00000000, 0x00000000, 0x00000000) if (do_f) PR_SINGLE(0xffffffff) if (do_g) PR_DOUBLE(0xffffffff, 0xffffffff) if (do_d) PR_DOUBLE(0xffffffff, 0xffffffff) PAD_TABLE ; /* POS ULP FACTOR */ if (do_s) PR_SINGLE(0x34000000) if (do_t) PR_DOUBLE(0x3cb00000, 0x00000000) if (do_x) PR_QUAD(0x3f8f0000, 0x00000000, 0x00000000, 0x00000000) if (do_f) PR_SINGLE(0x00003500) if (do_g) PR_DOUBLE(0x00000000, 0x00003cd0) if (do_d) PR_DOUBLE(0x00000000, 0x00002500) PAD_TABLE ; /* NEG ULP FACTOR */ if (do_s) PR_SINGLE(0xb4000000) if (do_t) PR_DOUBLE(0xbcb00000, 0x00000000) if (do_x) PR_QUAD(0xbf8f0000, 0x00000000, 0x00000000, 0x00000000) if (do_f) PR_SINGLE(0x0000b500) if (do_g) PR_DOUBLE(0x00000000, 0x0000bcd0) if (do_d) PR_DOUBLE(0x00000000, 0x0000a500) PAD_TABLE ; /* POS ONE */ if (do_s) PR_SINGLE(0x3f800000) if (do_t) PR_DOUBLE(0x3ff00000, 0x00000000) if (do_x) PR_QUAD(0x3fff0000, 0x00000000, 0x00000000, 0x00000000) if (do_f) PR_SINGLE(0x00004080) if (do_g) PR_DOUBLE(0x00000000, 0x00004010) if (do_d) PR_DOUBLE(0x00000000, 0x00004080) PAD_TABLE ; /* NEG ONE */ if (do_s) PR_SINGLE(0xbf800000) if (do_t) PR_DOUBLE(0xbff00000, 0x00000000) if (do_x) PR_QUAD(0xbfff0000, 0x00000000, 0x00000000, 0x00000000) if (do_f) PR_SINGLE(0x0000c080) if (do_g) PR_DOUBLE(0x00000000, 0x0000c010) if (do_d) PR_DOUBLE(0x00000000, 0x0000c080) PAD_TABLE ; END_TABLE; printf("#else\n\n"); printf(" extern TABLE_UNION GLOBALS_TABLE[];\n"); printf("#endif\n\n"); /* * Print out defines so that other routines can access the tables * Specifically, for each generic value in the globals table * generate a type independent symbolic constant (these are only used * by dpml_error_codes.c). */ # define DEFINE_INDEX(n) printf("#define\t" STR(n) "_INDEX\t%i\n", PASTE_2(n, _INDEX)) DEFINE_INDEX(NAN); DEFINE_INDEX(POS_ZERO); DEFINE_INDEX(NEG_ZERO); DEFINE_INDEX(POS_TINY); DEFINE_INDEX(NEG_TINY); DEFINE_INDEX(POS_HUGE); DEFINE_INDEX(NEG_HUGE); DEFINE_INDEX(POS_INFINITY); DEFINE_INDEX(NEG_INFINITY); DEFINE_INDEX(POS_ULP_FACTOR); DEFINE_INDEX(NEG_ULP_FACTOR); DEFINE_INDEX(POS_ONE); DEFINE_INDEX(NEG_ONE); printf("#define\tF_TYPE_ENUM\tPASTE_3(_, F_CHAR, _TYPE)\n"); if ( bytes_per_table_entry == 32 ) printf( "#define GLOBALS_OFFSET( t, n ) ( ( t << 3 ) + ( n << 5 ) )\n" ) ; else printf( "#define GLOBALS_OFFSET( t, n ) ( ( t << 3 ) + ( n << 6 ) )\n" ) ; printf("#define\tGLOBAL(n)\t*((F_TYPE *)" " ((char *) GLOBALS_TABLE + GLOBALS_OFFSET(F_TYPE_ENUM,n) ))\n"); printf("#define\tGLOBAL_ADDR(t,n)\t((void *)" " ((char *) GLOBALS_TABLE + GLOBALS_OFFSET(t,n) ))\n"); # define DEFINE_VALUE(n) printf("#define\t" STR(n) \ "\tGLOBAL(" STR(n) "_INDEX)\n") DEFINE_VALUE(NAN); DEFINE_VALUE(POS_ZERO); DEFINE_VALUE(NEG_ZERO); DEFINE_VALUE(POS_TINY); DEFINE_VALUE(NEG_TINY); DEFINE_VALUE(POS_HUGE); DEFINE_VALUE(NEG_HUGE); DEFINE_VALUE(POS_INFINITY); DEFINE_VALUE(NEG_INFINITY); DEFINE_VALUE(POS_ULP_FACTOR); DEFINE_VALUE(NEG_ULP_FACTOR); DEFINE_VALUE(POS_ONE); DEFINE_VALUE(NEG_ONE); @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ $outText = "$tableText\n\n$defineText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "DPML global constants", __FILE__ ); \ print "$headerText\n\n$outText\n"; LIBRARY/float128/dpml_ux_ops_64.c0000644€­ Q01134020000007211215113665770015420 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "dpml_ux.h" #if (NUM_UX_FRACTION_DIGITS != 2) # error "Must have 64 bit integers" #endif /* ** MULTIPLY essentially computes the high 128 bits of the product of two ** unpacked x-float values. The algorithm attempts to limit the number ** of integer multiplications performed. The resulting product has roughly ** a 6 lsb error bound in the worst case. */ void MULTIPLY(UX_FLOAT * x, UX_FLOAT *y, UX_FLOAT *z) { U_WORD x_hi, x_lo, y_hi, y_lo, z_hi, z_lo, p1, p2; x_hi = G_UX_MSD(x); y_hi = G_UX_MSD(y); z_lo = y_hi*x_hi; x_lo = G_UX_LSD(x); y_lo = G_UX_LSD(y); UMULH(y_hi, x_lo, p2); P_UX_SIGN(z, G_UX_SIGN(x) ^ G_UX_SIGN(y)); P_UX_EXPONENT(z, G_UX_EXPONENT(x) + G_UX_EXPONENT(y)); UMULH(y_lo, x_hi, p1); z_lo += p2; z_hi = (z_lo < p2); UMULH(y_hi, x_hi, p2); z_lo = z_lo + p1; z_hi += (z_lo < p1); P_UX_LSD(z, z_lo); z_hi = z_hi + p2; P_UX_MSD(z, z_hi); } /* ** EXTENDED_MULTIPLY computes the exact 256 bit product of two unpacked ** x-float values. The result is stored in two unpacked x-float values ** containing the high and low 128 bits of the result */ void EXTENDED_MULTIPLY(UX_FLOAT * x, UX_FLOAT * y, UX_FLOAT * hi, UX_FLOAT * lo) { UX_EXPONENT_TYPE exponent; UX_SIGN_TYPE sign; UX_FRACTION_DIGIT_TYPE x_hi, x_lo, y_hi, y_lo, tmp_digit, carry, p1, p2; x_lo = G_UX_LSD(x); y_lo = G_UX_LSD(y); p1 = y_lo*x_lo; x_hi = G_UX_MSD(x); y_hi = G_UX_MSD(y); UMULH(y_lo, x_lo, tmp_digit); P_UX_LSD(lo, p1); sign = G_UX_SIGN(x) ^ G_UX_SIGN(y); exponent = G_UX_EXPONENT(x) + G_UX_EXPONENT(y); P_UX_SIGN(lo, sign); P_UX_EXPONENT(lo, exponent - 128); p1 = y_lo*x_hi; P_UX_SIGN(hi, sign); P_UX_EXPONENT(hi, exponent); p2 = y_hi*x_lo; P_UX_SIGN(lo, sign); P_UX_EXPONENT(lo, exponent - 128); tmp_digit += p1; carry = (tmp_digit < p1); p1 = x_hi*y_hi; tmp_digit += p2; carry += (tmp_digit < p2); P_UX_MSD(lo, tmp_digit); UMULH(y_hi, x_lo, p2); tmp_digit = p1 + carry; carry = (tmp_digit < p1); UMULH(y_lo, x_hi, p1); tmp_digit += p2; carry += (tmp_digit < p2); UMULH(y_hi, x_hi, p2); tmp_digit += p1; carry += (tmp_digit < p1); P_UX_LSD(hi, tmp_digit); tmp_digit = p2 + carry; P_UX_MSD(hi, tmp_digit); } /* ** This routine divides two unpacked numbers: ** ** o The 'flags' argument controls whether a FULL or HALF precision ** result is generated. ** o If the pointer to one of the unpacked results is 0, then that ** argument is implicitly treated as being equal to 1. ** o both argument pointers *CANNOT* be zero. * ** A detailed description of the algorithm is presented in note 6.2 of the ** X_FLOAT notes conference. Note that to the extent possible, the variable ** names in this routine were chosen to match the description in the design ** note. In particular, upper case name imply 64 bit integer data types, while ** double precision values are denoted with lower case names. */ #define _D_POW_2(n) ((double) ((U_WORD)1 << n)) #define TWO_POW_62 (_D_POW_2(62)) #define TWO_POW_124 (TWO_POW_62*TWO_POW_62) #define RECIP_TWO_POW_16 (1./_D_POW_2(16)) #define RECIP_TWO_POW_60 (1./_D_POW_2(60)) #define RECIP_TWO_POW_184 (4./(TWO_POW_124 * TWO_POW_62 )) static const UX_FLOAT __ux_one__ = { 0, 1, ((U_WORD) 1 << 63), 0 }; void DIVIDE( UX_FLOAT * aPtr, UX_FLOAT * bPtr, U_WORD flags, UX_FLOAT * cPtr) { UX_EXPONENT_TYPE exponent; UX_FRACTION_DIGIT_TYPE A1, A2, B1, B2, Q1, Q2, S, R, P00, P01, P11, N0, N1, N2, C1, mask, E; D_TYPE r, b_hi, b_lo, r_hi, r_lo, a_hi, a_lo, a, q_hi, q_lo; /* ** for performance reasons, pre-load some of the interesting items even ** though we might not actually use them. Specifically, by loading B1 ** and B2 before the normalization check allows the compiler to better ** schedule the code after the check. */ bPtr = (bPtr == 0) ? (UX_FLOAT *)&__ux_one__ : bPtr; aPtr = (aPtr == 0) ? (UX_FLOAT *)&__ux_one__ : aPtr; B1 = G_UX_MSD(bPtr); B2 = G_UX_LSD(bPtr); if (bPtr == &__ux_one__) { UX_COPY(aPtr, cPtr); return; } /* ** If b isn't normalized, then the whole algorithm falls apart. So make ** sure that b is normalized. */ if ((UX_SIGNED_FRACTION_DIGIT_TYPE) B1 >= 0) { NORMALIZE(bPtr); B1 = G_UX_MSD(bPtr); B2 = G_UX_LSD(bPtr); } /* ** The first step is to estimate 1/b in double precsion to more then 70 ** bits. This is done by getting an initial estimate to 1/b and use a ** variation of Newton's iteration to improve the accuracy. The basic ** approach is ** ** b' = high 53 bits of b ** b_hi' = high 26 bits of b ** b_lo' = bits 27 through 80 of b ** ** r' = 1/b' ** r_hi' = high 26 bits of r ** r_lo' = [ (1 - b_hi'*r_hi') - b_lo'*r_hi'] * r' ** ** However, there is certain amount of weird scaling of the values that ** takes place to deal with the integer to float conversion and subsequent ** uses of the results. ** ** Note that the two macros below are used to convert *signed* integers ** to and from double precision. We use signed conversions because they ** are generally faster than unsigned conversions. */ # define TO_DOUBLE(a) ((double) ((UX_SIGNED_FRACTION_DIGIT_TYPE) (a))) # define TO_DIGIT(a) ((UX_SIGNED_FRACTION_DIGIT_TYPE) (a)) r = TWO_POW_124 / TO_DOUBLE( B1 >> 1 ); /* ** While the divide is going on, we can compute all sorts of stuff */ mask = MAKE_MASK( 38, 0 ); b_hi = TO_DOUBLE((B1 & ~mask) >> 1); b_lo = RECIP_TWO_POW_16 * TO_DOUBLE(((B1 & mask) << 15) | (B2 >> 49)); A1 = G_UX_MSD(aPtr); A2 = G_UX_LSD(aPtr); P_UX_SIGN( cPtr, G_UX_SIGN(aPtr) ^ G_UX_SIGN(bPtr) ); exponent = G_UX_EXPONENT(aPtr) - G_UX_EXPONENT(bPtr); /* ** Get the high part of r as both an integer and a floating point value. ** In the process, bias r_hi downward to insure that r_lo is positive. ** (See the design note for details.) */ R = TO_DIGIT( r ); R = (R - (5 << 8)) & ~MAKE_MASK( 36, 0 ); r_hi = TO_DOUBLE(R); /* ** At this point we have: ** ** r = 2^61 * r' ** r_hi = 2^61 * r_hi' ** b_hi = 2^63 * b_hi' ** b_lo = 2^63 * b_lo' ** ** so that ** ** 2*r_lo' = [ (2^124 - b_hi*r_hi) - b_lo*r_hi ] * (r/2^184) */ r_lo = D_GROUP(D_GROUP((TWO_POW_124) - b_hi*r_hi) - (b_lo*r_hi)) * (RECIP_TWO_POW_184*r); /* ** Now that we have 1/b ~ r_hi' + r_lo' (scaling notwithstanding), we can ** compute an approximation to q = a/b = a*(1/b), where the product is ** performed in high and low pieces: ** ** q = (a_hi' + a_lo') * (r_hi' + r_lo') ** = a_hi' * r_hi' + [ a_lo' * r_hi' + (a_hi' + a_lo') * r_lo' ] ** = a_hi' * r_hi' + [ a_lo' * r_hi' + a' * r_lo' ] ** = q_hi' + q_lo' ** ** Note that in the above, we want to insure that a' ~ a_hi' + a_lo' is ** less than the actual value of a to insure that the computed value of ** q is less that 2. */ a = TO_DOUBLE( (A1 >> 11) << 10 ); a_hi = TO_DOUBLE( (A1 & ~mask) >> 1); a_lo = RECIP_TWO_POW_16 * TO_DOUBLE(((A1 & mask) << 15) | (A2 >> 49)); r_hi = RECIP_TWO_POW_60 * r_hi; q_hi = a_hi*r_hi; q_lo = a_lo*r_hi + a*r_lo; /* ** With the above conversions and computations we have ** ** a = 2^63*a' ** a_hi = 2^63*a_hi' ** a_lo = 2^63*a_lo' ** r_hi = 2*r_hi' ** r_lo = 2*r_lo' ** q_hi = 2^64 * q_hi' ** q_lo = 2^64 * q_lo' ** ** We would like to convert the high 65 bits of q_hi + q_lo into integers, ** S' and Q1'. Note that converting q_hi to an integer can cause an ** overflow. However since q_hi contains only 52 significant bits, we ** can convert .25 * q_hi instead which won't overflow. */ Q1 = TO_DIGIT(.25 * q_hi); E = TO_DIGIT( q_lo ); S = ( Q1 >> 62 ); Q1 = (4*Q1) + E; S += (Q1 < E); Q2 = 0; if (flags == HALF_PRECISION) goto pack_it; /* ** While we're at it, compute an integer approximation to 1/b. I.e. get ** and integer R such that R/2^63 ~ 1/b. ** ** R = 2^63 * (r_hi' + r_lo' ) ** = 2^63 * r_hi' + 2^63 * r_lo' ** = 2^63 * r_hi' + 2^62 * r_lo ** ** Recall that in the original computation of r_hi, we previously computed ** the integer value R as 2^61*r_hi', so that we can now compute ** ** R <-- 4*R + 2^62 * r_lo ** ** Note that for b very close to 1/2, R will be 2^64 which can't be ** represented in 64 bits. In this case, we take R = 2^64 - 1 which is ** close enough and can be represented in 64 bits. */ R = (R << 2) + TO_DIGIT( TWO_POW_62*r_lo ); R = ( R == 0 ) ? ( (UX_SIGNED_FRACTION_DIGIT_TYPE) -1 ) : R; /* ** Using S and Q1 as the current guess for the high 65 bits of the result ** compute the remainder: ** ** +----------+----------+ ** | A1 | A2 | 2^128*(2^64*A1 + A2) ** +----------+----------+ ** ** +----------+----------+ ** | B1 | B2 | s'*2^128*(2^64*B1 + B2) ** +----------+----------+ ** | Q1'*B1 | 2^128*Q1'*B1 ** +----------+----------+----------+ ** | Q1'*B2 | 2^64*Q1'*B2 ** +----------+----------+ ** ** +----------+----------+----------+----------+ ** | N0' | N1' | N2' | N3' | ** +----------+----------+----------+----------+ ** ** Start by summing all the products into N0:N1:N2:N3 ** ** NOTE: for performance reasons, we don't actually ** compute N3' */ mask = -S; UMULH( Q1, B2, P11 ); P01 = Q1 * B1; UMULH( Q1, B1, P00 ); N2 = B2 & mask; /* N2/N1 = B2/B1 if S = 1, 0 otherwise */ N1 = B1 & mask; N2 += P11; C1 = (N2 < P11); N2 += P01; C1 += (N2 < P01); N1 += P00; N0 = (N1 < P00); N1 += C1; N0 += (N1 < C1); /* Subtract the sum from A1:A2 */ N0 = -N0; C1 = (A2 < N2); N2 = A2 - N2; N0 -= (A1 < N1); N1 = A1 - N1; N0 -= (N1 < C1); N1 -= C1; /* ** Since the original estimate to S:Q1 was good to more then 70 bits, the ** current value of S:Q1 can be off by at most one. By looking at the ** values of N0 and N1, we can determine an adjustment, E, to S:Q1. ** With the adjusted S:Q1 we know that N0 = N1 = 0, so we only need to ** adjust N2. */ E = (N0 | (N1 != 0)); mask = (E == 0) ? B1 : N0; N2 = N2 - (mask ^ B1); /* ** Using R/2^63 ~ 1/b and the adjusted N2, compute an approximation to Q2 ** Note that if Q2 has it's high bit set, then the original value of E was ** one too low. */ UMULH( R, N2, Q2 ); E += ( ( (UX_SIGNED_FRACTION_DIGIT_TYPE) Q2 ) < 0); Q2 = 2*Q2 + ((A1 | A2) != 0); /* Make sure 0/b is zero */ /* Adjust S and Q1 using the final value of E */ Q1 += E; S = S + (((UX_SIGNED_FRACTION_DIGIT_TYPE) E) >> 63) + (Q1 < E); /* Last but not least, pack it */ pack_it: P_UX_MSD( cPtr, (S << 63) | (Q1 >> S) ); P_UX_LSD( cPtr, ((Q1 & S) << 63) | (Q2 >> S) ); P_UX_EXPONENT(cPtr, exponent + S); return; } /* ** ** The following two routines evaluate polynomials, P(x), via Horner's ** scheme for positive x: ** ** s(k) <-- c(k) +/- x*s(k+1) for k = n-1, ..., 0 ** ** where the c(k)'s are the polynomial coefficients and s(n) = c(n). The ** arguments to these routines (not in order) are ** ** x a pointer to the unpacked bits of x ** cnt the degree of the polynomial ** coef A pointer to pairs of quadwords specifying the hi/lo ** bits of the coefficient. We assume the coefficients ** are stored reverse order: c(n) to c(0) ** shift cnt*(x->exp) - This is passed in rather than computed ** here sense on the calling side, cnt is a known ** constant, so the multiply can be done by shifts and ** adds rather than a real integer multiply. ** p a pointer to the unpacked result. ** ** The routines return the high bits of the result. ** ** IMPORTANT ASSUMPTIONS: ** ###################### ** ** o This routine assumes that the terms of the polynomial are decreasing. ** I.e. that c(k) > x*s(k+1) for all k. ** ** o shift = cnt*(x->exp), so that if shift is decremented by x->exp ** each time cnt decremented, then shift will become 0 before cnt ** becomes negative. */ static void __eval_pos_poly(UX_FLOAT * x, WORD shift, FIXED_128 * coef, WORD cnt, UX_FLOAT * p) { UX_FRACTION_DIGIT_TYPE c_hi, c_lo, s_hi, s_lo, p1, p2; UX_FRACTION_DIGIT_TYPE x_hi, x_lo, carry; UX_EXPONENT_TYPE exponent; WORD shift_inc; /* Initialize internal copies and accumulators */ x_hi = G_UX_MSD(x); x_lo = G_UX_LSD(x); shift_inc = G_UX_EXPONENT(x); s_lo = s_hi = 0; /* ** If the shift count is >= 128, than this product won't contribute to ** the final product. Skip over all of the coefficients that correspond ** to large shifts */ if (shift < 128) goto p_check_shift_64_to_127; p_shift_ge_128: shift += shift_inc; coef++; cnt--; if (shift >= 128) goto p_shift_ge_128; //printf("Eval_pos_poly, shift=%lld !!\n",shift); /* ** Each time through this loop, c_hi = 0. Since we assume that c(k) > ** x*s(k+1), if there is a carry out on the sum s(k) = c(k) + x*s(k*1), ** then the shift count for the next iteration must be less than 64. ** Consequently, we need only worry about the carry out from the sum ** when we leave this loop. That means each time we enter the top of ** the loop, both c_hi and s_hi = 0; */ p_check_shift_64_to_127: if (shift < 64) goto p_check_shift_1_to_63; /* ** Depending on the size of shift_inc and the rate at which the ** coefficients decrease, several of the next Horner's scheme iterations ** will yield zero results, so there is no need to do the multiply. ** Since multiplies are likely to be expensive, we check for this case ** and skip over them. */ if (s_lo) goto p_shift_64_to_127; p_shift_64_to_127_zero_loop: s_lo = coef->digits[1] >> (shift - 64); //printf("s_lo, sh, sh_inc, c: %llx, %llx, %llx, %llx (%llx)\n",s_lo,shift, shift_inc,coef->digits[1],coef->digits[0]); shift += shift_inc; coef++; cnt--; if (shift < 64) goto p_check_shift_1_to_63; if (s_lo == 0) goto p_shift_64_to_127_zero_loop; /* ** s_lo is no longer zero, so do the multiply and accumulate the ** products. */ p_shift_64_to_127: //printf("s_lo,x_hi,p1: %llx, %llx, %llx\n",s_lo,x_hi,p1); UMULH(s_lo, x_hi, p1); //printf("s_lo,x_hi,p1: %llx, %llx, %llx\n",s_lo,x_hi,p1); c_lo = coef->digits[1] >> (shift - 64); shift += shift_inc; coef++; cnt--; s_lo = c_lo + p1; if (shift >= 64) goto p_shift_64_to_127; /* Set carry out from last add */ s_hi = (s_lo < p1); /* ** When shift = 0, the complementary shift is 64. ANSI C does not ** specify the result of a shift by 64, so we need to handle this as ** a special case. */ p_check_shift_1_to_63: exponent = 0; if (shift == 0) goto p_shift_eq_0; /* ** Depending on the size of shift_inc and the rate at which the ** coefficients decrease, several of the next Horner's scheme iterations ** will yield zero results for s_hi, so there is no need to do the ** multiplies associated with s_hi. Since multiplies are likely to be ** expensive, we check for this case and skip over them. */ if (s_hi) goto p_shift_1_to_63; p_shift_1_to_63_zero_loop: UMULH(s_lo, x_hi, p1); c_hi = coef->digits[1]; c_lo = coef->digits[0]; c_lo = (c_lo >> shift) | (c_hi << (64 - shift)); s_hi = c_hi >> shift; shift += shift_inc; coef++; cnt--; s_lo = c_lo + p1; s_hi += (s_lo < p1); if (shift == 0) goto p_shift_eq_0; if (s_hi == 0) goto p_shift_1_to_63_zero_loop; p_shift_1_to_63: while (cnt >= 0) { p1 = s_hi*x_hi; c_hi = coef->digits[1]; c_lo = coef->digits[0]; c_lo = (c_lo >> shift) | (c_hi << (64 - shift)); c_hi >>= shift; UMULH(s_hi, x_lo, p2); c_lo += p1; carry = (c_lo < p1); cnt--; UMULH(s_lo, x_hi, p1); c_lo += p2; carry += (c_lo < p2); shift += shift_inc; UMULH(s_hi, x_hi, p2); s_lo = c_lo + p1; carry += (s_lo < p1); c_hi += carry; carry = (c_hi < carry); coef++; s_hi = c_hi + p2; carry += (s_hi < p2); if (carry) { s_lo = (s_lo >> 1) | (s_hi << 63); s_hi = (s_hi >> 1) | SET_BIT(63); shift++; exponent++; } if (shift == 0) break; } p_shift_eq_0: while (cnt >= 0) { p1 = s_hi*x_hi; c_hi = coef->digits[1]; c_lo = coef->digits[0]; UMULH(s_hi, x_lo, p2); c_lo += p1; carry = (c_lo < p1); cnt--; UMULH(s_lo, x_hi, p1); c_lo += p2; carry += (c_lo < p2); UMULH(s_hi, x_hi, p2); s_lo = c_lo + p1; carry += (s_lo < p1); c_hi += carry; carry = (c_hi < carry); coef++; s_hi = c_hi + p2; carry += (s_hi < p2); if (carry) { s_lo = (s_lo >> 1) | (s_hi << 63); s_hi = (s_hi >> 1) | SET_BIT(63); shift = 1; exponent++; if (cnt >= 0) goto p_shift_1_to_63; } } P_UX_LSD(p, s_lo); P_UX_MSD(p, s_hi); P_UX_EXPONENT(p, exponent); P_UX_SIGN(p, 0); } static void __eval_neg_poly(UX_FLOAT * x, WORD shift, FIXED_128 * coef, WORD cnt, UX_FLOAT * p) { UX_FRACTION_DIGIT_TYPE c_hi, c_lo, s_hi, s_lo, p1, p2, tmp; UX_FRACTION_DIGIT_TYPE x_hi, x_lo; WORD shift_inc; x_hi = G_UX_MSD(x); x_lo = G_UX_LSD(x); shift_inc = G_UX_EXPONENT(x); s_lo = s_hi = 0; if (shift < 128) goto n_check_shift_64_to_127; /* Skip over all the big shifts */ n_shift_ge_128: shift += shift_inc; coef++; cnt--; if (shift >= 128) goto n_shift_ge_128; /* * Each time through this loop, c_hi = 0. Since we assume that c(k) > * x*s(k+1), s(k) = c(k) - x*s(k*1) < c(k). Consequently, there is * no borrow from the computation of s(k) into it high 64 bits. * That means each time we enter the top of the loop, both c_hi and * s_hi = 0; */ n_check_shift_64_to_127: if (shift < 64) goto n_check_shift_1_to_63; /* * Depending on the size of shift_inc and the rate at which the * coefficients decrease, several of the next Horner's scheme iterations * will yield zero results, so there is no need to do the multiply. * Since multiplies are likely to be expensive, we check for this case * and skip over them. */ if (s_lo) goto n_shift_64_to_127; n_shift_64_to_127_zero_loop: s_lo = coef->digits[1] >> (shift - 64); shift += shift_inc; coef++; cnt--; if (shift < 64) goto n_check_shift_1_to_63; if (s_lo == 0) goto n_shift_64_to_127_zero_loop; /* * s_lo is no longer zero, so do the multiply and accumulate the * products. */ n_shift_64_to_127: UMULH(s_lo, x_hi, p1); c_lo = coef->digits[1] >> (shift - 64); shift += shift_inc; coef++; cnt--; s_lo = c_lo - p1; if (shift >= 64) goto n_shift_64_to_127; /* * When shift = 0, the complementary shift is 64. ANSI C does not * specify the result of a shift by 64, so we need to handle this as * a special case. */ n_check_shift_1_to_63: if (shift == 0) goto n_shift_eq_0; /* * Depending on the size of shift_inc and the rate at which the * coefficients decrease, several of the next Horner's scheme iterations * will yield zero results for s_hi, so there is no need to do the * multiplies associated with s_hi. Since multiplies are likely to be * expensive, we check for this case and skip over them. */ if (s_hi) goto n_shift_1_to_63; n_shift_1_to_63_zero_loop: UMULH(s_lo, x_hi, p1); c_hi = coef->digits[1]; c_lo = coef->digits[0]; c_lo = (c_lo >> shift) | (c_hi << (64 - shift)); s_hi = (c_hi >> shift); shift += shift_inc; coef++; cnt--; s_lo = c_lo - p1; s_hi -= (s_lo > c_lo); if (shift == 0) goto n_shift_eq_0; if (s_hi == 0) goto n_shift_1_to_63_zero_loop; n_shift_1_to_63: p1 = s_hi*x_hi; c_hi = coef->digits[1]; c_lo = coef->digits[0]; c_lo = (c_lo >> shift) | (c_hi << (64 - shift)); c_hi >>= shift; UMULH(s_hi, x_lo, p2); tmp = c_lo - p1; c_hi -= (tmp > c_lo); cnt--; UMULH(s_lo, x_hi, p1); c_lo = tmp - p2; c_hi -= (c_lo > tmp); shift += shift_inc; UMULH(s_hi, x_hi, p2); s_lo = c_lo - p1; c_hi -= (s_lo > c_lo); coef++; s_hi = c_hi - p2; if (shift) goto n_shift_1_to_63; n_shift_eq_0: while (cnt >= 0) { p1 = s_hi*x_hi; c_hi = coef->digits[1]; c_lo = coef->digits[0]; UMULH(s_hi, x_lo, p2); tmp = c_lo - p1; c_hi -= (tmp > c_lo); cnt--; UMULH(s_lo, x_hi, p1); c_lo = tmp - p2; c_hi -= (c_lo > tmp); UMULH(s_hi, x_hi, p2); s_lo = c_lo - p1; c_hi -= (s_lo > c_lo); coef++; s_hi = c_hi - p2; } P_UX_LSD(p, s_lo); P_UX_MSD(p, s_hi); P_UX_EXPONENT(p, 0); P_UX_SIGN(p, 0); } /* ** EVALUATE_RATIONAL is a driver routine for the two polynomial evaluation ** routines. Even though it is architecture and word size independent, it ** is included in this file to increase "locality". ** ** EVALUATE_RATIONAL generally computes a rational approximation, however, ** by specifying the appropriate set of flags, one, or two polynomial ** evaluation can be performed. ** ** The following flags are used to independently control the "form" of the ** numerator and denominator polynomials: ** ** SQUARE_TERM ** ALTERNATE_SIGN ** POST_MULTIPLY ** STANDARD ** ** The following flags control whether or not a rational approximation is ** performed and what form it has: ** ** SWAP ** SKIP ** NO_DIVIDE ** ** If the SKIP flag is specified in conjunction with the flags for either ** the numerator or denominator being zero, only one part of a rational ** will be evaluated. */ #define EITHER(n) (DENOMINATOR_FLAGS(n) | NUMERATOR_FLAGS(n)) #define NUMERATOR_MASK NUMERATOR_FLAGS(MAKE_MASK(NUM_DEN_FIELD_WIDTH, 0)) #define DENOMINATOR_MASK DENOMINATOR_FLAGS(MAKE_MASK(NUM_DEN_FIELD_WIDTH, 0)) #define UPDATE_COEF_PTR(c,d) (c) = ((FIXED_128 *)((char *) (c) + (d))) #define G_EXPONENT(c) ((UX_EXPONENT_TYPE) ((WORD *) (c))[-1]) void EVALUATE_RATIONAL( UX_FLOAT * argument, FIXED_128 * coefficients, U_WORD degree, U_WORD flags, UX_FLOAT * result) { WORD tmp; WORD sign, shift, byte_length, poly_shift; UX_EXPONENT_TYPE exponent; UX_FLOAT * first_result, *second_result, arg_squared, *poly_arg; void (* poly_func)(UX_FLOAT *, WORD, FIXED_128 *, WORD, UX_FLOAT *); /* Scale argument and squared it if its needed */ sign = flags; UX_INCR_EXPONENT(argument, G_SCALE(flags)); if (flags & EITHER(SQUARE_TERM)) { poly_arg = &arg_squared; MULTIPLY(argument, argument, &arg_squared); } else { poly_arg = argument; tmp = G_UX_SIGN(argument) ? EITHER(ALTERNATE_SIGN) : 0; sign = flags ^ tmp; } /* Start calculation of shift parameter. */ NORMALIZE(poly_arg); exponent = G_UX_EXPONENT(poly_arg); P_UX_EXPONENT(poly_arg, exponent); shift = -degree*exponent; byte_length = (degree + 1)*sizeof(FIXED_128) + sizeof(WORD); /* allocate locations for 1st and 2nd result */ tmp = (((flags & SWAP) == 0) || (flags & SKIP)) ? 0 : 1; first_result = result + tmp; second_result = result + 1 - tmp; if (NUMERATOR_MASK & flags) { //printf("NUMERATOR_MASK !!\n"); poly_func = (ALTERNATE_SIGN & sign) ? __eval_neg_poly : __eval_pos_poly; first_result = (DENOMINATOR_MASK & flags) ? first_result : result; poly_func( poly_arg, shift, coefficients, degree, first_result); //printf("f_result= (%x %x) %llx %llx\n",first_result->sign,first_result->exponent,first_result->fraction[0],first_result->fraction[1]); //printf("fl & NUMERATOR_FLAGS(POST_MULTIPLY) = %llx (%llx)\n", flags & NUMERATOR_FLAGS(POST_MULTIPLY), flags); if (flags & NUMERATOR_FLAGS(POST_MULTIPLY)) MULTIPLY(argument, first_result, first_result); //printf("result..= (%x %x) %llx %llx\n",result->sign,result->exponent,result->fraction[0],result->fraction[1]); UPDATE_COEF_PTR(coefficients, byte_length); UX_INCR_EXPONENT(first_result, G_EXPONENT(coefficients)); } else { second_result = result; flags |= NO_DIVIDE; if ( flags & SKIP ) UPDATE_COEF_PTR(coefficients, byte_length); } if (DENOMINATOR_MASK & flags) { //printf("DENOMINATOR_MASK !!\n"); poly_func = ( DENOMINATOR_FLAGS(ALTERNATE_SIGN) & sign ) ? __eval_neg_poly : __eval_pos_poly; poly_func( poly_arg, shift, coefficients, degree, second_result); if (flags & DENOMINATOR_FLAGS(POST_MULTIPLY)) MULTIPLY(argument, second_result, second_result); UPDATE_COEF_PTR(coefficients, byte_length); UX_INCR_EXPONENT(second_result, G_EXPONENT(coefficients)); if ( flags & SKIP ) /* Numerator was skipped, we're done */ return; } else { flags |= NO_DIVIDE; if ( flags & SKIP ) UPDATE_COEF_PTR(coefficients, byte_length); } //printf("fl & NO_DIV = %llx\n", flags & NO_DIVIDE); //printf("result0= (%x %x) %llx %llx\n",result->sign,result->exponent,result->fraction[0],result->fraction[1]); if ((flags & NO_DIVIDE) == 0) DIVIDE(result, result + 1, FULL_PRECISION, result); } #if 0 U_INT_64 __umulh( U_INT_64 i, U_INT_64 j ) { U_INT_64 k; { U_INT_64 iLo, iHi, jLo, jHi, p0, p1, p2; iLo = __LO(i); iHi = __HI(i); jLo = __LO(j); jHi = __HI(j); p0 = iLo * jLo; p1 = (iLo * jHi); p2 = (iHi * jLo) + __HI(p0) + __LO(p1);\ k = (iHi * jHi) + __HI(p1) + __HI(p2); } return k; } #endif LIBRARY/float128/dpml_names.h0000644€­ Q01134020000016071615113665770014712 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef DPML_NAMES_H #define DPML_NAMES_H /* * If this file is used without dpml_private.h, then DPML_NULL_MACRO_TOKEN will * be undefined. Consequently, many of the following macros will not be * defined as intended. So check for a definintion, if one doesn't exist, * provide one. The only requirement is that DPML_NULL_MACRO_TOKEN have a * non-zero integer value */ #if !defined(DPML_NULL_MACRO_TOKEN) # define DPML_NULL_MACRO_TOKEN 1 #endif /* * Set up platform specific name that over-ride default names */ #if (OP_SYSTEM == vms) # define __VMS_POW_NAME(name,suf) PASTE_2(__F_SYSTEM_NAME(name),suf) # define __VMS_B_POW_NAME(name,suf) PASTE_2(__B_SYSTEM_NAME(name),suf) # define __VMS_INT_POW_NAME(name) PASTE_2(__USER_NAME(name),_qq) # if !defined(LN_BASE_NAME) # define LN_BASE_NAME ln # endif # if !defined(REM_BASE_NAME) # define REM_BASE_NAME rem # endif # if !defined(MOD_BASE_NAME) # define MOD_BASE_NAME mod # endif # if !defined(POW_E_BASE_NAME) # define POW_E_BASE_NAME pow # endif # if !defined(POW_BASE_NAME) # define POW_BASE_NAME pow_o # endif # if !defined(POW_Z_BASE_NAME) # define POW_Z_BASE_NAME pow_z # endif # if !defined(F_POW_E_NAME) # define F_POW_E_NAME __VMS_POW_NAME(POW_E_BASE_NAME, F_CHAR) # endif # if !defined(F_POW_NAME) # define F_POW_NAME __VMS_POW_NAME(POW_BASE_NAME, F_CHAR) # endif # if !defined(F_POW_I_NAME) # define F_POW_I_NAME __VMS_POW_NAME(POW_BASE_NAME, q) # endif # if !defined(F_POW_I_E_NAME) # define F_POW_I_E_NAME __VMS_POW_NAME(POW_E_BASE_NAME, q) # endif # if !defined(F_POW_I_Z_NAME) # define F_POW_I_Z_NAME __VMS_POW_NAME(POW_Z_BASE_NAME, q) # endif # if !defined(F_POW_I_II_NAME) # define F_POW_I_II_NAME __VMS_INT_POW_NAME(POW_BASE_NAME) # endif # if !defined(F_POW_E_I_II_NAME) # define F_POW_E_I_II_NAME __VMS_INT_POW_NAME(POW_E_BASE_NAME) # endif # if !defined(F_CPOWI_NAME) # define F_CPOWI_NAME __VMS_POW_NAME(CPOW_BASE_NAME, q) # endif # if !defined(F_FAST_POW_NAME) # define F_FAST_POW_NAME __VMS_POW_NAME(FAST_POW_BASE_NAME, F_CHAR) # endif # if !defined(F_FAST_POW_E_NAME) # define F_FAST_POW_E_NAME __VMS_POW_NAME(FAST_POW_E_BASE_NAME, F_CHAR) # endif # if !defined(B_POW_NAME) # define B_POW_NAME __VMS_B_POW_NAME(POW_BASE_NAME, B_CHAR) # endif # if !defined(B_POW_E_NAME) # define B_POW_E_NAME __VMS_B_POW_NAME(POW_E_BASE_NAME, B_CHAR) # endif # if !defined(B_POW_I_NAME) # define B_POW_I_NAME __VMS_B_POW_NAME(POW_BASE_NAME, q) # endif # if !defined(B_POW_I_E_NAME) # define B_POW_I_E_NAME __VMS_B_POW_NAME(POW_E_BASE_NAME, q) # endif # if !defined(B_POW_I_Z_NAME) # define B_POW_I_Z_NAME __VMS_B_POW_NAME(POW_Z_BASE_NAME, q) # endif # if !defined(B_CPOWI_NAME) # define B_CPOWI_NAME __VMS_B_POW_NAME(CPOW_BASE_NAME, q) # endif # if !defined(B_FAST_POW_NAME) # define B_FAST_POW_NAME __VMS_B_POW_NAME(FAST_POW_BASE_NAME, B_CHAR) # endif # if !defined(B_FAST_POW_E_NAME) # define B_FAST_POW_E_NAME __VMS_B_POW_NAME(FAST_POW_E_BASE_NAME, B_CHAR) # endif # define __CVT_NAME(type) __INTERNAL_NAME(PASTE_3(cvt_,type,IEEE_VAX_SUFFIX)) # if !defined(F_CVT_IEEE_TO_VAX_NAME) # define F_CVT_FLOAT_IEEE_TO_VAX_NAME __CVT_NAME(float) # endif # if !defined(F_CVT_CMPLX_IEEE_TO_VAX_NAME) # define F_CVT_CMPLX_IEEE_TO_VAX_NAME __CVT_NAME(complex) # endif # if !defined(F_NAME_PREFIX) # define F_NAME_PREFIX math$ # endif # if !defined(F_CVTAS_NAME_PREFIX) # define F_CVTAS_NAME_PREFIX cvtas$ # endif # if !defined(F_CVTAS_SUFFIX) # define F_CVTAS_SUFFIX __F_SUFFIX # endif # if !defined(F_NAME_SUFFIX) # define F_NAME_SUFFIX __F_SUFFIX # endif # if !defined(B_NAME_SUFFIX) # define B_NAME_SUFFIX __B_SUFFIX # endif # if !defined(INTERNAL_PREFIX) # define INTERNAL_PREFIX math$ # endif #else # if !defined(USER_PREFIX) # define USER_PREFIX __ # endif # if !defined(INTERNAL_PREFIX) # define INTERNAL_PREFIX __dpml_ # endif # if !defined(F_CVTAS_NAME_PREFIX) # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define F_CVTAS_NAME_PREFIX cvtas_ # else # define F_CVTAS_NAME_PREFIX __cvtas_ # endif # endif #endif /* ** Default definitions for the "base" name of each funcion. */ #ifndef ASIND_BASE_NAME # define ASIND_BASE_NAME asind #endif #ifndef ASINH_BASE_NAME # define ASINH_BASE_NAME asinh #endif #ifndef ACOSD_BASE_NAME # define ACOSD_BASE_NAME acosd #endif #ifndef ACOSH_BASE_NAME # define ACOSH_BASE_NAME acosh #endif #ifndef ASIN_BASE_NAME # define ASIN_BASE_NAME asin #endif #ifndef ACOS_BASE_NAME # define ACOS_BASE_NAME acos #endif #ifndef ATAND_BASE_NAME # define ATAND_BASE_NAME atand #endif #ifndef ATAND2_BASE_NAME # define ATAND2_BASE_NAME atand2 #endif #ifndef ATAN2_BASE_NAME # define ATAN2_BASE_NAME atan2 #endif #ifndef ATAN_BASE_NAME # define ATAN_BASE_NAME atan #endif #ifndef ATANH_BASE_NAME # define ATANH_BASE_NAME atanh #endif #ifndef CEIL_BASE_NAME # define CEIL_BASE_NAME ceil #endif #ifndef CLASS_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define CLASS_BASE_NAME _fpclass # else # define CLASS_BASE_NAME fp_class # endif #endif #ifndef COPYSIGN_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define COPYSIGN_BASE_NAME _copysign # else # define COPYSIGN_BASE_NAME copysign # endif #endif #ifndef ERF_BASE_NAME # define ERF_BASE_NAME erf #endif #ifndef ERFC_BASE_NAME # define ERFC_BASE_NAME erfc #endif #ifndef ERFCX_BASE_NAME # define ERFCX_BASE_NAME erfcx #endif #ifndef EXP_BASE_NAME # define EXP_BASE_NAME exp #endif #ifndef EXP2_BASE_NAME # define EXP2_BASE_NAME exp2 #endif #ifndef EXP10_BASE_NAME # define EXP10_BASE_NAME exp10 #endif #ifndef EXPM1_BASE_NAME # define EXPM1_BASE_NAME expm1 #endif #ifndef FABS_BASE_NAME # define FABS_BASE_NAME fabs #endif #ifndef FINITE_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define FINITE_BASE_NAME _finite # else # define FINITE_BASE_NAME finite # endif #endif #ifndef FLOOR_BASE_NAME # define FLOOR_BASE_NAME floor #endif #ifndef FREXP_BASE_NAME # define FREXP_BASE_NAME frexp #endif #ifndef HYPOT_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define HYPOT_BASE_NAME _hypot # else # define HYPOT_BASE_NAME hypot # endif #endif #ifndef NT_CABS_BASE_NAME # define NT_CABS_BASE_NAME _cabs #endif #ifndef CABS_BASE_NAME # define CABS_BASE_NAME cabs #endif #ifndef ISNAN_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define ISNAN_BASE_NAME _isnan # else # define ISNAN_BASE_NAME isnan # endif #endif #ifndef LDEXP_BASE_NAME # define LDEXP_BASE_NAME ldexp #endif #ifndef SCALB_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define SCALB_BASE_NAME _scalb # else # define SCALB_BASE_NAME scalb # endif #endif #ifndef SCALBN_BASE_NAME # define SCALBN_BASE_NAME scalbn #endif #ifndef SCALBLN_BASE_NAME # define SCALBLN_BASE_NAME scalbln #endif #ifndef J0_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define J0_BASE_NAME _j0 # else # define J0_BASE_NAME j0 # endif #endif #ifndef J1_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define J1_BASE_NAME _j1 # else # define J1_BASE_NAME j1 # endif #endif #ifndef JN_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define JN_BASE_NAME _jn # else # define JN_BASE_NAME jn # endif #endif #ifndef Y0_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define Y0_BASE_NAME _y0 # else # define Y0_BASE_NAME y0 # endif #endif #ifndef Y1_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define Y1_BASE_NAME _y1 # else # define Y1_BASE_NAME y1 # endif #endif #ifndef YN_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM ==win64)) # define YN_BASE_NAME _yn # else # define YN_BASE_NAME yn # endif #endif #ifndef GAMMA_BASE_NAME # define GAMMA_BASE_NAME gamma #endif #ifndef LGAMMA_BASE_NAME # define LGAMMA_BASE_NAME lgamma #endif #ifndef TGAMMA_BASE_NAME # define TGAMMA_BASE_NAME tgamma #endif #ifndef RT_LGAMMA_BASE_NAME # define RT_LGAMMA_BASE_NAME __lgamma #endif #ifndef LOG1P_BASE_NAME # define LOG1P_BASE_NAME log1p #endif #ifndef LOG2_BASE_NAME # define LOG2_BASE_NAME log2 #endif #ifndef LOG10_BASE_NAME # define LOG10_BASE_NAME log10 #endif #ifndef LN_BASE_NAME # define LN_BASE_NAME log #endif #ifndef CMP_BASE_NAME # define CMP_BASE_NAME cmp #endif #ifndef LOG_TABLE_BASE_NAME # define LOG_TABLE_BASE_NAME log #endif #ifndef LOG2_TABLE_BASE_NAME # define LOG2_TABLE_BASE_NAME log2 #endif #ifndef LOG10_TABLE_BASE_NAME # define LOG10_TABLE_BASE_NAME log10 #endif #ifndef F_LOG_TABLE_NAME # define F_LOG_TABLE_NAME __D_TABLE_NAME(LOG_TABLE_BASE_NAME) #endif #ifndef F_LOG2_TABLE_NAME # define F_LOG2_TABLE_NAME __D_TABLE_NAME(LOG2_TABLE_BASE_NAME) #endif #ifndef F_LOG10_TABLE_NAME # define F_LOG10_TABLE_NAME __D_TABLE_NAME(LOG10_TABLE_BASE_NAME) #endif #ifndef F_LOG_BUILD_FILE_NAME # define F_LOG_BUILD_FILE_NAME __D_TABLE_FILE_NAME(LOG_TABLE_BASE_NAME) #endif #ifndef F_LOG2_BUILD_FILE_NAME # define F_LOG2_BUILD_FILE_NAME __D_TABLE_FILE_NAME(LOG2_TABLE_BASE_NAME) #endif #ifndef F_LOG10_BUILD_FILE_NAME # define F_LOG10_BUILD_FILE_NAME __D_TABLE_FILE_NAME(LOG10_TABLE_BASE_NAME) #endif #ifndef LOGB_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define LOGB_BASE_NAME _logb # else # define LOGB_BASE_NAME logb # endif #endif #ifndef ILOGB_BASE_NAME # define ILOGB_BASE_NAME ilogb #endif #ifndef REM_BASE_NAME # define REM_BASE_NAME drem #endif #ifndef REMAINDER_BASE_NAME # define REMAINDER_BASE_NAME remainder #endif #ifndef REMQUO_BASE_NAME # define REMQUO_BASE_NAME remquo #endif #ifndef MOD_BASE_NAME # define MOD_BASE_NAME fmod #endif #ifndef MODF_BASE_NAME # define MODF_BASE_NAME modf #endif #ifndef NINT_BASE_NAME # define NINT_BASE_NAME nint #endif #ifndef NEXTAFTER_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define NEXTAFTER_BASE_NAME _nextafter # else # define NEXTAFTER_BASE_NAME nextafter # endif #endif #ifndef NEXTTOWARD_BASE_NAME # define NEXTTOWARD_BASE_NAME nexttoward #endif #ifndef NXTAFTR_BASE_NAME # define NXTAFTR_BASE_NAME nxtaftr #endif #ifndef POW_BASE_NAME # define POW_BASE_NAME pow #endif #ifndef POW_E_BASE_NAME # define POW_E_BASE_NAME pow_e #endif #ifndef POW_TABLE_BASE_NAME # define POW_TABLE_BASE_NAME pow #endif #ifndef RANDOM_BASE_NAME # define RANDOM_BASE_NAME random #endif #ifndef RINT_BASE_NAME # define RINT_BASE_NAME rint #endif #ifndef LRINT_BASE_NAME # define LRINT_BASE_NAME lrint #endif #ifndef LROUND_BASE_NAME # define LROUND_BASE_NAME lround #endif #ifndef LLRINT_BASE_NAME # define LLRINT_BASE_NAME llrint #endif #ifndef LLROUND_BASE_NAME # define LLROUND_BASE_NAME llround #endif #ifndef FMAX_BASE_NAME # define FMAX_BASE_NAME fmax #endif #ifndef FMIN_BASE_NAME # define FMIN_BASE_NAME fmin #endif #ifndef VMS_RANDOM_BASE_NAME # define VMS_RANDOM_BASE_NAME random_L #endif #ifndef SIN_BASE_NAME # define SIN_BASE_NAME sin #endif #ifndef SIN_VO_BASE_NAME # define SIN_VO_BASE_NAME sin_vo #endif #ifndef COS_BASE_NAME # define COS_BASE_NAME cos #endif #ifndef COS_VO_BASE_NAME # define COS_VO_BASE_NAME cos_vo #endif #ifndef SINCOS_BASE_NAME # define SINCOS_BASE_NAME sincos #endif #ifndef SINCOS_VO_BASE_NAME # define SINCOS_VO_BASE_NAME sincos_vo #endif #ifndef SIND_BASE_NAME # define SIND_BASE_NAME sind #endif #ifndef COSD_BASE_NAME # define COSD_BASE_NAME cosd #endif #ifndef SINCOSD_BASE_NAME # define SINCOSD_BASE_NAME sincosd #endif #ifndef SINH_BASE_NAME # define SINH_BASE_NAME sinh #endif #ifndef COSH_BASE_NAME # define COSH_BASE_NAME cosh #endif #ifndef SQRT_BASE_NAME # define SQRT_BASE_NAME sqrt #endif #ifndef RSQRT_BASE_NAME # define RSQRT_BASE_NAME rsqrt #endif #ifndef CBRT_BASE_NAME # define CBRT_BASE_NAME cbrt #endif #ifndef TAN_BASE_NAME # define TAN_BASE_NAME tan #endif #ifndef COT_BASE_NAME # define COT_BASE_NAME cot #endif #ifndef TANCOT_BASE_NAME # define TANCOT_BASE_NAME tancot #endif #ifndef TAND_BASE_NAME # define TAND_BASE_NAME tand #endif #ifndef COTD_BASE_NAME # define COTD_BASE_NAME cotd #endif #ifndef TANCOTD_BASE_NAME # define TANCOTD_BASE_NAME tancotd #endif #ifndef TANH_BASE_NAME # define TANH_BASE_NAME tanh #endif #ifndef TRIG_CONS_BASE_NAME # define TRIG_CONS_BASE_NAME trig_cons #endif #ifndef TRIGD_CONS_BASE_NAME # define TRIGD_CONS_BASE_NAME trigd_cons #endif #ifndef TRIG_REDUCE_BASE_NAME # define TRIG_REDUCE_BASE_NAME trig_reduce #endif #ifndef TRIG_REDUCE_VO_BASE_NAME # define TRIG_REDUCE_VO_BASE_NAME trig_reduce_vo #endif #ifndef TRIGD_REDUCE_BASE_NAME # define TRIGD_REDUCE_BASE_NAME trigd_reduce #endif #ifndef TRUNC_BASE_NAME # define TRUNC_BASE_NAME trunc #endif #ifndef UNORDERED_BASE_NAME # define UNORDERED_BASE_NAME unordered #endif #ifndef CCOS_BASE_NAME # define CCOS_BASE_NAME ccos #endif #ifndef CDIV_BASE_NAME # define CDIV_BASE_NAME cdiv #endif #ifndef CEXP_BASE_NAME # define CEXP_BASE_NAME cexp #endif #ifndef CLOG_BASE_NAME # define CLOG_BASE_NAME clog #endif #ifndef CMUL_BASE_NAME # define CMUL_BASE_NAME cmul #endif #ifndef CPOW_BASE_NAME # define CPOW_BASE_NAME cpow #endif #ifndef CPOWI_BASE_NAME # define CPOWI_BASE_NAME cpowi #endif #ifndef CSIN_BASE_NAME # define CSIN_BASE_NAME csin #endif #ifndef CSQRT_BASE_NAME # define CSQRT_BASE_NAME csqrt #endif #ifndef CACOS_BASE_NAME # define CACOS_BASE_NAME cacos #endif #ifndef CASIN_BASE_NAME # define CASIN_BASE_NAME casin #endif #ifndef CATAN_BASE_NAME # define CATAN_BASE_NAME catan #endif #ifndef CTAN_BASE_NAME # define CTAN_BASE_NAME ctan #endif #ifndef CCOSH_BASE_NAME # define CCOSH_BASE_NAME ccosh #endif #ifndef CSINH_BASE_NAME # define CSINH_BASE_NAME csinh #endif #ifndef CTANH_BASE_NAME # define CTANH_BASE_NAME ctanh #endif #ifndef CACOSH_BASE_NAME # define CACOSH_BASE_NAME cacosh #endif #ifndef CASINH_BASE_NAME # define CASINH_BASE_NAME casinh #endif #ifndef CATANH_BASE_NAME # define CATANH_BASE_NAME catanh #endif #ifndef CARG_BASE_NAME # define CARG_BASE_NAME carg #endif #ifndef CIMAG_BASE_NAME # define CIMAG_BASE_NAME cimag #endif #ifndef CREAL_BASE_NAME # define CREAL_BASE_NAME creal #endif #ifndef CPROJ_BASE_NAME # define CPROJ_BASE_NAME cproj #endif #ifndef CONJ_BASE_NAME # define CONJ_BASE_NAME conj #endif #ifndef NAN_BASE_NAME # define NAN_BASE_NAME nan #endif #ifndef STRING_TO_NAN_BASE_NAME # define STRING_TO_NAN_BASE_NAME string_to_nan #endif #ifndef FDIM_BASE_NAME # define FDIM_BASE_NAME fdim #endif #ifndef FMA_BASE_NAME # define FMA_BASE_NAME fma #endif #ifndef SIGNIFICAND_BASE_NAME # define SIGNIFICAND_BASE_NAME significand #endif #ifndef POW_I_BASE_NAME # define POW_I_BASE_NAME powi #endif #ifndef POW_I_E_BASE_NAME # define POW_I_E_BASE_NAME powi_e #endif #ifndef POW_I_Z_BASE_NAME # define POW_I_Z_BASE_NAME powi_z #endif #ifndef POW_I_II_BASE_NAME # define POW_I_II_BASE_NAME powii #endif #ifndef POW_E_I_II_BASE_NAME # define POW_E_I_II_BASE_NAME powii_e #endif #ifndef SINHCOSH_BASE_NAME # define SINHCOSH_BASE_NAME sinhcosh #endif #ifndef MUL_BASE_NAME # define MUL_BASE_NAME mul #endif #ifndef DIV_BASE_NAME # define DIV_BASE_NAME div #endif #ifndef ADD_BASE_NAME # define ADD_BASE_NAME add #endif #ifndef SUB_BASE_NAME # define SUB_BASE_NAME sub #endif #ifndef NEG_BASE_NAME # define NEG_BASE_NAME neg #endif #ifndef ITOF_BASE_NAME # define ITOF_BASE_NAME itof #endif #ifndef CMP_BASE_NAME # define CMP_BASE_NAME cmp #endif /* ** Default base names for the fast routines. */ #ifndef FAST_ACOS_BASE_NAME # define FAST_ACOS_BASE_NAME __FAST_NAME(ACOS_BASE_NAME) #endif #ifndef FAST_ASIN_BASE_NAME # define FAST_ASIN_BASE_NAME __FAST_NAME(ASIN_BASE_NAME) #endif #ifndef FAST_ATAN_BASE_NAME # define FAST_ATAN_BASE_NAME __FAST_NAME(ATAN_BASE_NAME) #endif #ifndef FAST_EXP_BASE_NAME # define FAST_EXP_BASE_NAME __FAST_NAME(EXP_BASE_NAME) #endif #ifndef FAST_LN_BASE_NAME # define FAST_LN_BASE_NAME __FAST_NAME(LN_BASE_NAME) #endif #ifndef FAST_LOG10_BASE_NAME # define FAST_LOG10_BASE_NAME __FAST_NAME(LOG10_BASE_NAME) #endif #ifndef FAST_SINCOS_BASE_NAME # define FAST_SINCOS_BASE_NAME __FAST_NAME(SINCOS_BASE_NAME) #endif #ifndef FAST_SIN_BASE_NAME # define FAST_SIN_BASE_NAME __FAST_NAME(SIN_BASE_NAME) #endif #ifndef FAST_COS_BASE_NAME # define FAST_COS_BASE_NAME __FAST_NAME(COS_BASE_NAME) #endif #ifndef FAST_SINCOSD_BASE_NAME # define FAST_SINCOSD_BASE_NAME __FAST_NAME(SINCOSD_BASE_NAME) #endif #ifndef FAST_SIND_BASE_NAME # define FAST_SIND_BASE_NAME __FAST_NAME(SIND_BASE_NAME) #endif #ifndef FAST_COSD_BASE_NAME # define FAST_COSD_BASE_NAME __FAST_NAME(COSD_BASE_NAME) #endif #ifndef FAST_TAN_BASE_NAME # define FAST_TAN_BASE_NAME __FAST_NAME(TAN_BASE_NAME) #endif #ifndef FAST_ATAN2_BASE_NAME # define FAST_ATAN2_BASE_NAME __FAST_NAME(ATAN2_BASE_NAME) #endif #ifndef FAST_HYPOT_BASE_NAME # if ((OP_SYSTEM == wnt) || (OP_SYSTEM == win64)) # define FAST_HYPOT_BASE_NAME __FAST_NAME(hypot) # else # define FAST_HYPOT_BASE_NAME __FAST_NAME(HYPOT_BASE_NAME) # endif #endif #ifndef FAST_POW_BASE_NAME # define FAST_POW_BASE_NAME __FAST_NAME(POW_BASE_NAME) #endif #ifndef FAST_POW_E_BASE_NAME # define FAST_POW_E_BASE_NAME __FAST_NAME(POW_E_BASE_NAME) #endif #ifndef FAST_SQRT_BASE_NAME # define FAST_SQRT_BASE_NAME __FAST_NAME(SQRT_BASE_NAME) #endif #ifndef FAST_POW_TABLE_BASE_NAME # define FAST_POW_TABLE_BASE_NAME F_pow #endif /* ** Default definitions for the entry point name of each dpml function. */ #ifndef F_ASIND_NAME # define F_ASIND_NAME __F_SYSTEM_NAME(ASIND_BASE_NAME) #endif #ifndef F_ASINH_NAME # define F_ASINH_NAME __F_SYSTEM_NAME(ASINH_BASE_NAME) #endif #ifndef F_ACOSD_NAME # define F_ACOSD_NAME __F_SYSTEM_NAME(ACOSD_BASE_NAME) #endif #ifndef F_ACOSH_NAME # define F_ACOSH_NAME __F_SYSTEM_NAME(ACOSH_BASE_NAME) #endif #ifndef F_ASIN_NAME # define F_ASIN_NAME __F_SYSTEM_NAME(ASIN_BASE_NAME) #endif #ifndef F_ACOS_NAME # define F_ACOS_NAME __F_SYSTEM_NAME(ACOS_BASE_NAME) #endif #ifndef F_ATAND_NAME # define F_ATAND_NAME __F_SYSTEM_NAME(ATAND_BASE_NAME) #endif #ifndef F_ATAND2_NAME # define F_ATAND2_NAME __F_SYSTEM_NAME(ATAND2_BASE_NAME) #endif #ifndef F_ATAN2_NAME # define F_ATAN2_NAME __F_SYSTEM_NAME(ATAN2_BASE_NAME) #endif #ifndef F_ATAN_NAME # define F_ATAN_NAME __F_SYSTEM_NAME(ATAN_BASE_NAME) #endif #ifndef F_ATANH_NAME # define F_ATANH_NAME __F_SYSTEM_NAME(ATANH_BASE_NAME) #endif #ifndef F_CEIL_NAME # define F_CEIL_NAME __F_SYSTEM_NAME(CEIL_BASE_NAME) #endif #ifndef F_CLASS_NAME # define F_CLASS_NAME __F_SYSTEM_NAME(CLASS_BASE_NAME) #endif #ifndef F_COPYSIGN_NAME # define F_COPYSIGN_NAME __F_SYSTEM_NAME(COPYSIGN_BASE_NAME) #endif #ifndef F_ERF_NAME # define F_ERF_NAME __F_SYSTEM_NAME(ERF_BASE_NAME) #endif #ifndef F_ERFC_NAME # define F_ERFC_NAME __F_SYSTEM_NAME(ERFC_BASE_NAME) #endif #ifndef F_ERFCX_NAME # define F_ERFCX_NAME __F_SYSTEM_NAME(ERFCX_BASE_NAME) #endif #ifndef F_EXP_NAME # define F_EXP_NAME __F_SYSTEM_NAME(EXP_BASE_NAME) #endif #ifndef F_EXP2_NAME # define F_EXP2_NAME __F_SYSTEM_NAME(EXP2_BASE_NAME) #endif #ifndef F_EXP10_NAME # define F_EXP10_NAME __F_SYSTEM_NAME(EXP10_BASE_NAME) #endif #ifndef F_EXP_TABLE_NAME # define F_EXP_TABLE_NAME __D_TABLE_NAME(EXP_BASE_NAME) #endif #ifndef F_EXP_BUILD_FILE_NAME # define F_EXP_BUILD_FILE_NAME __D_TABLE_FILE_NAME(EXP_BASE_NAME) #endif #ifndef F_EXP_SPECIAL_ENTRY_NAME # define F_EXP_SPECIAL_ENTRY_NAME \ PASTE_2(__F_INTERNAL_NAME(EXP_BASE_NAME), _special_entry_point) #endif #ifndef F_EXPM1_NAME # define F_EXPM1_NAME __F_SYSTEM_NAME(EXPM1_BASE_NAME) #endif #ifndef F_FABS_NAME # define F_FABS_NAME __F_SYSTEM_NAME(FABS_BASE_NAME) #endif #ifndef F_FINITE_NAME # define F_FINITE_NAME __F_SYSTEM_NAME(FINITE_BASE_NAME) #endif #ifndef F_FLOOR_NAME # define F_FLOOR_NAME __F_SYSTEM_NAME(FLOOR_BASE_NAME) #endif #ifndef F_FREXP_NAME # define F_FREXP_NAME __F_SYSTEM_NAME(FREXP_BASE_NAME) #endif #ifndef F_HYPOT_NAME # define F_HYPOT_NAME __F_SYSTEM_NAME(HYPOT_BASE_NAME) #endif #ifndef F_NT_CABS_NAME # define F_NT_CABS_NAME __F_SYSTEM_NAME( NT_CABS_BASE_NAME ) #endif #ifndef F_CABS_NAME # define F_CABS_NAME __F_SYSTEM_NAME(CABS_BASE_NAME ) #endif #ifndef F_ISNAN_NAME # define F_ISNAN_NAME __F_SYSTEM_NAME(ISNAN_BASE_NAME) #endif #ifndef F_LDEXP_NAME # define F_LDEXP_NAME __F_SYSTEM_NAME(LDEXP_BASE_NAME) #endif #ifndef F_SCALB_NAME # define F_SCALB_NAME __F_SYSTEM_NAME(SCALB_BASE_NAME) #endif #ifndef F_SCALBN_NAME # define F_SCALBN_NAME __F_SYSTEM_NAME(SCALBN_BASE_NAME) #endif #ifndef F_SCALBLN_NAME # define F_SCALBLN_NAME __F_SYSTEM_NAME(SCALBLN_BASE_NAME) #endif #ifndef F_J0_NAME # define F_J0_NAME __F_SYSTEM_NAME(J0_BASE_NAME) #endif #ifndef F_J1_NAME # define F_J1_NAME __F_SYSTEM_NAME(J1_BASE_NAME) #endif #ifndef F_JN_NAME # define F_JN_NAME __F_SYSTEM_NAME(JN_BASE_NAME) #endif #ifndef F_Y0_NAME # define F_Y0_NAME __F_SYSTEM_NAME(Y0_BASE_NAME) #endif #ifndef F_Y1_NAME # define F_Y1_NAME __F_SYSTEM_NAME(Y1_BASE_NAME) #endif #ifndef F_YN_NAME # define F_YN_NAME __F_SYSTEM_NAME(YN_BASE_NAME) #endif #ifndef F_GAMMA_NAME # define F_GAMMA_NAME __F_SYSTEM_NAME(GAMMA_BASE_NAME) #endif #ifndef F_LGAMMA_NAME # define F_LGAMMA_NAME __F_SYSTEM_NAME(LGAMMA_BASE_NAME) #endif #ifndef F_TGAMMA_NAME # define F_TGAMMA_NAME __F_SYSTEM_NAME(TGAMMA_BASE_NAME) #endif #ifndef F_RT_LGAMMA_NAME # define F_RT_LGAMMA_NAME __F_SYSTEM_NAME(RT_LGAMMA_BASE_NAME) #endif #ifndef F_LOG1P_NAME # define F_LOG1P_NAME __F_SYSTEM_NAME(LOG1P_BASE_NAME) #endif #ifndef F_LOG2_NAME # define F_LOG2_NAME __F_SYSTEM_NAME(LOG2_BASE_NAME) #endif #ifndef F_LOG10_NAME # define F_LOG10_NAME __F_SYSTEM_NAME(LOG10_BASE_NAME) #endif #ifndef F_LN_NAME # define F_LN_NAME __F_SYSTEM_NAME(LN_BASE_NAME) #endif #ifndef F_LOGB_NAME # define F_LOGB_NAME __F_SYSTEM_NAME(LOGB_BASE_NAME) #endif #ifndef F_ILOGB_NAME # define F_ILOGB_NAME __F_SYSTEM_NAME(ILOGB_BASE_NAME) #endif #ifndef F_REM_NAME # define F_REM_NAME __F_SYSTEM_NAME(REM_BASE_NAME) #endif #ifndef F_REMAINDER_NAME # define F_REMAINDER_NAME __F_SYSTEM_NAME(REMAINDER_BASE_NAME) #endif #ifndef F_REMQUO_NAME # define F_REMQUO_NAME __F_SYSTEM_NAME(REMQUO_BASE_NAME) #endif #ifndef F_MOD_NAME # define F_MOD_NAME __F_SYSTEM_NAME(MOD_BASE_NAME) #endif #ifndef F_MODF_NAME # define F_MODF_NAME __F_SYSTEM_NAME(MODF_BASE_NAME) #endif #ifndef F_NINT_NAME # define F_NINT_NAME __F_SYSTEM_NAME(NINT_BASE_NAME) #endif #ifndef F_NEXTAFTER_NAME # define F_NEXTAFTER_NAME __F_SYSTEM_NAME(NEXTAFTER_BASE_NAME) #endif #ifndef F_NEXTTOWARD_NAME # define F_NEXTTOWARD_NAME __F_SYSTEM_NAME(NEXTTOWARD_BASE_NAME) #endif #ifndef F_NXTAFTR_NAME # define F_NXTAFTR_NAME __F_USER_NAME(NXTAFTR_BASE_NAME) #endif #ifndef F_POW_NAME # define F_POW_NAME __F_SYSTEM_NAME(POW_BASE_NAME) #endif #ifndef F_POW_E_NAME # define F_POW_E_NAME __F_USER_NAME(POW_E_BASE_NAME) #endif #ifndef F_POW_TABLE_NAME # define F_POW_TABLE_NAME __F_TABLE_NAME(POW_TABLE_BASE_NAME) #endif #ifndef F_POW_BUILD_FILE_NAME # if defined(ONE_TYPE) # define F_POW_BUILD_FILE_NAME __F_TABLE_FILE_NAME(POW_TABLE_BASE_NAME) # else # define F_POW_BUILD_FILE_NAME __B_TABLE_FILE_NAME(POW_TABLE_BASE_NAME) # endif #endif #if !defined(SPECIAL_EXP_HEADER) # define SPECIAL_EXP_HEADER ADD_EXTENSION(ADD_BUILD_PREFIX(special_exp),h) #endif #ifndef F_RANDOM_NAME # define F_RANDOM_NAME __F_SYSTEM_NAME(RANDOM_BASE_NAME) #endif #ifndef F_VMS_RANDOM_NAME # define F_VMS_RANDOM_NAME __F_SYSTEM_NAME(VMS_RANDOM_BASE_NAME) #endif #ifndef F_RINT_NAME # define F_RINT_NAME __F_SYSTEM_NAME(RINT_BASE_NAME) #endif #ifndef F_LRINT_NAME # define F_LRINT_NAME __F_SYSTEM_NAME(LRINT_BASE_NAME) #endif #ifndef F_LROUND_NAME # define F_LROUND_NAME __F_SYSTEM_NAME(LROUND_BASE_NAME) #endif #ifndef F_LLRINT_NAME # define F_LLRINT_NAME __F_SYSTEM_NAME(LLRINT_BASE_NAME) #endif #ifndef F_LLROUND_NAME # define F_LLROUND_NAME __F_SYSTEM_NAME(LLROUND_BASE_NAME) #endif #ifndef F_SIN_NAME # define F_SIN_NAME __F_SYSTEM_NAME(SIN_BASE_NAME) #endif #ifndef F_SIN_VO_NAME # define F_SIN_VO_NAME __F_USER_NAME(SIN_VO_BASE_NAME) #endif #ifndef F_COS_NAME # define F_COS_NAME __F_SYSTEM_NAME(COS_BASE_NAME) #endif #ifndef F_COS_VO_NAME # define F_COS_VO_NAME __F_USER_NAME(COS_VO_BASE_NAME) #endif #ifndef F_SINCOS_NAME # define F_SINCOS_NAME __F_SYSTEM_NAME(SINCOS_BASE_NAME) #endif #ifndef F_SINCOS_VO_NAME # define F_SINCOS_VO_NAME __F_USER_NAME(SINCOS_VO_BASE_NAME) #endif #ifndef F_SIND_NAME # define F_SIND_NAME __F_SYSTEM_NAME(SIND_BASE_NAME) #endif #ifndef F_COSD_NAME # define F_COSD_NAME __F_SYSTEM_NAME(COSD_BASE_NAME) #endif #ifndef F_SINCOSD_NAME # define F_SINCOSD_NAME __F_SYSTEM_NAME(SINCOSD_BASE_NAME) #endif #ifndef F_SINH_NAME # define F_SINH_NAME __F_SYSTEM_NAME(SINH_BASE_NAME) #endif #ifndef F_COSH_NAME # define F_COSH_NAME __F_SYSTEM_NAME(COSH_BASE_NAME) #endif #ifndef F_SQRT_NAME # define F_SQRT_NAME __F_SYSTEM_NAME(SQRT_BASE_NAME) #endif #ifndef F_SQRT_TABLE_NAME # define F_SQRT_TABLE_NAME __F_TABLE_NAME(SQRT_BASE_NAME) #endif #ifndef F_RSQRT_NAME # define F_RSQRT_NAME __F_USER_NAME(RSQRT_BASE_NAME) #endif #ifndef F_RSQRT_TABLE_NAME # define F_RSQRT_TABLE_NAME __F_TABLE_NAME(RSQRT_BASE_NAME) #endif #ifndef F_CBRT_NAME # define F_CBRT_NAME __F_SYSTEM_NAME(CBRT_BASE_NAME) #endif #ifndef F_CBRT_TABLE_NAME # define F_CBRT_TABLE_NAME __F_TABLE_NAME(CBRT_BASE_NAME) #endif #ifndef F_TAN_NAME # define F_TAN_NAME __F_SYSTEM_NAME(TAN_BASE_NAME) #endif #ifndef F_COT_NAME # define F_COT_NAME __F_SYSTEM_NAME(COT_BASE_NAME) #endif #ifndef F_TANCOT_NAME # define F_TANCOT_NAME __F_SYSTEM_NAME(TANCOT_BASE_NAME) #endif #ifndef F_TAND_NAME # define F_TAND_NAME __F_SYSTEM_NAME(TAND_BASE_NAME) #endif #ifndef F_COTD_NAME # define F_COTD_NAME __F_SYSTEM_NAME(COTD_BASE_NAME) #endif #ifndef F_TANCOTD_NAME # define F_TANCOTD_NAME __F_SYSTEM_NAME(TANCOTD_BASE_NAME) #endif #ifndef F_TANH_NAME # define F_TANH_NAME __F_SYSTEM_NAME(TANH_BASE_NAME) #endif #ifndef F_TRIG_CONS_NAME # define F_TRIG_CONS_NAME __F_USER_NAME(TRIG_CONS_BASE_NAME) #endif #ifndef F_TRIGD_CONS_NAME # define F_TRIGD_CONS_NAME __F_USER_NAME(TRIGD_CONS_BASE_NAME) #endif #ifndef F_TRIG_REDUCE_NAME # define F_TRIG_REDUCE_NAME __F_USER_NAME(TRIG_REDUCE_BASE_NAME) #endif #ifndef F_TRIG_REDUCE_VO_NAME # define F_TRIG_REDUCE_VO_NAME __F_USER_NAME(TRIG_REDUCE_VO_BASE_NAME) #endif #ifndef F_TRIGD_REDUCE_NAME # define F_TRIGD_REDUCE_NAME __F_USER_NAME(TRIGD_REDUCE_BASE_NAME) #endif #ifndef F_TRUNC_NAME # define F_TRUNC_NAME __F_SYSTEM_NAME(TRUNC_BASE_NAME) #endif #ifndef F_UNORDERED_NAME # define F_UNORDERED_NAME __F_SYSTEM_NAME(UNORDERED_BASE_NAME) #endif #ifndef F_CCOS_NAME # define F_CCOS_NAME __F_SYSTEM_NAME(CCOS_BASE_NAME) #endif #ifndef F_CDIV_NAME # define F_CDIV_NAME __F_SYSTEM_NAME(CDIV_BASE_NAME) #endif #ifndef F_CEXP_NAME # define F_CEXP_NAME __F_SYSTEM_NAME(CEXP_BASE_NAME) #endif #ifndef F_CLOG_NAME # define F_CLOG_NAME __F_SYSTEM_NAME(CLOG_BASE_NAME) #endif #ifndef F_CMUL_NAME # define F_CMUL_NAME __F_SYSTEM_NAME(CMUL_BASE_NAME) #endif #ifndef F_CPOW_NAME # define F_CPOW_NAME __F_SYSTEM_NAME(CPOW_BASE_NAME) #endif #ifndef F_CPOWI_NAME # define F_CPOWI_NAME __F_SYSTEM_NAME(CPOWI_BASE_NAME) #endif #ifndef F_CSIN_NAME # define F_CSIN_NAME __F_SYSTEM_NAME(CSIN_BASE_NAME) #endif #ifndef F_CSQRT_NAME # define F_CSQRT_NAME __F_SYSTEM_NAME(CSQRT_BASE_NAME) #endif #ifndef F_CACOS_NAME # define F_CACOS_NAME __F_SYSTEM_NAME(CACOS_BASE_NAME) #endif #ifndef F_CASIN_NAME # define F_CASIN_NAME __F_SYSTEM_NAME(CASIN_BASE_NAME) #endif #ifndef F_CATAN_NAME # define F_CATAN_NAME __F_SYSTEM_NAME(CATAN_BASE_NAME) #endif #ifndef F_CTAN_NAME # define F_CTAN_NAME __F_SYSTEM_NAME(CTAN_BASE_NAME) #endif #ifndef F_CCOSH_NAME # define F_CCOSH_NAME __F_SYSTEM_NAME(CCOSH_BASE_NAME) #endif #ifndef F_CSINH_NAME # define F_CSINH_NAME __F_SYSTEM_NAME(CSINH_BASE_NAME) #endif #ifndef F_CTANH_NAME # define F_CTANH_NAME __F_SYSTEM_NAME(CTANH_BASE_NAME) #endif #ifndef F_CACOSH_NAME # define F_CACOSH_NAME __F_SYSTEM_NAME(CACOSH_BASE_NAME) #endif #ifndef F_CASINH_NAME # define F_CASINH_NAME __F_SYSTEM_NAME(CASINH_BASE_NAME) #endif #ifndef F_CATANH_NAME # define F_CATANH_NAME __F_SYSTEM_NAME(CATANH_BASE_NAME) #endif #ifndef F_CARG_NAME # define F_CARG_NAME __F_SYSTEM_NAME(CARG_BASE_NAME) #endif #ifndef F_CIMAG_NAME # define F_CIMAG_NAME __F_SYSTEM_NAME(CIMAG_BASE_NAME) #endif #ifndef F_CREAL_NAME # define F_CREAL_NAME __F_SYSTEM_NAME(CREAL_BASE_NAME) #endif #ifndef F_CPROJ_NAME # define F_CPROJ_NAME __F_SYSTEM_NAME(CPROJ_BASE_NAME) #endif #ifndef F_CONJ_NAME # define F_CONJ_NAME __F_SYSTEM_NAME(CONJ_BASE_NAME) #endif #ifndef F_NAN_NAME # define F_NAN_NAME __F_SYSTEM_NAME(NAN_BASE_NAME) #endif #ifndef F_CVTAS_NAN_NAME # define F_CVTAS_NAN_NAME \ PASTE_3(F_CVTAS_NAME_PREFIX, STRING_TO_NAN_BASE_NAME, F_CVTAS_SUFFIX) #endif #ifndef F_FDIM_NAME # define F_FDIM_NAME __F_SYSTEM_NAME(FDIM_BASE_NAME) #endif #ifndef F_FMAX_NAME # define F_FMAX_NAME __F_SYSTEM_NAME(FMAX_BASE_NAME) #endif #ifndef F_FMIN_NAME # define F_FMIN_NAME __F_SYSTEM_NAME(FMIN_BASE_NAME) #endif #ifndef F_FMA_NAME # define F_FMA_NAME __F_SYSTEM_NAME(FMA_BASE_NAME) #endif #ifndef F_SIGNIFICAND_NAME # define F_SIGNIFICAND_NAME __F_SYSTEM_NAME(SIGNIFICAND_BASE_NAME) #endif #ifndef F_POW_I_NAME # define F_POW_I_NAME __F_SYSTEM_NAME(POW_I_BASE_NAME) #endif #ifndef F_POW_I_Z_NAME # define F_POW_I_Z_NAME __F_SYSTEM_NAME(POW_I_Z_BASE_NAME) #endif #ifndef F_POW_I_E_NAME # define F_POW_I_E_NAME __F_USER_NAME(POW_I_E_BASE_NAME) #endif #ifndef F_POW_I_II_NAME # define F_POW_I_II_NAME __SYSTEM_NAME(POW_I_II_BASE_NAME) #endif #ifndef F_POW_E_I_II_NAME # define F_POW_E_I_II_NAME __USER_NAME(POW_E_I_II_BASE_NAME) #endif #ifndef F_SINHCOSH_NAME # define F_SINHCOSH_NAME __F_SYSTEM_NAME(SINHCOSH_BASE_NAME) #endif #ifndef F_MUL_NAME # define F_MUL_NAME __F_SYSTEM_NAME(MUL_BASE_NAME) #endif #ifndef F_DIV_NAME # define F_DIV_NAME __F_SYSTEM_NAME(DIV_BASE_NAME) #endif #ifndef F_ADD_NAME # define F_ADD_NAME __F_SYSTEM_NAME(ADD_BASE_NAME) #endif #ifndef F_SUB_NAME # define F_SUB_NAME __F_SYSTEM_NAME(SUB_BASE_NAME ) #endif #ifndef F_NEG_NAME # define F_NEG_NAME __F_SYSTEM_NAME(NEG_BASE_NAME) #endif #ifndef F_ITOF_NAME # define F_ITOF_NAME __F_SYSTEM_NAME(ITOF_BASE_NAME) #endif #ifndef F_CMP_NAME # define F_CMP_NAME __F_SYSTEM_NAME(CMP_BASE_NAME) #endif /* ** Default definitions for the fast entry points. */ #ifndef F_FAST_ACOS_NAME # define F_FAST_ACOS_NAME __F_SYSTEM_NAME(FAST_ACOS_BASE_NAME) #endif #ifndef F_FAST_ASIN_NAME # define F_FAST_ASIN_NAME __F_SYSTEM_NAME(FAST_ASIN_BASE_NAME) #endif #ifndef F_FAST_ATAN_NAME # define F_FAST_ATAN_NAME __F_SYSTEM_NAME(FAST_ATAN_BASE_NAME) #endif #ifndef F_FAST_EXP_NAME # define F_FAST_EXP_NAME __F_SYSTEM_NAME(FAST_EXP_BASE_NAME) #endif #ifndef F_FAST_EXP_TABLE_NAME # define F_FAST_EXP_TABLE_NAME __D_TABLE_NAME(FAST_EXP_BASE_NAME) #endif #ifndef F_FAST_EXP_BUILD_FILE_NAME # define F_FAST_EXP_BUILD_FILE_NAME __D_TABLE_FILE_NAME(FAST_EXP_BASE_NAME) #endif #ifndef F_FAST_LN_NAME # define F_FAST_LN_NAME __F_SYSTEM_NAME(FAST_LN_BASE_NAME) #endif #ifndef F_FAST_LOG10_NAME # define F_FAST_LOG10_NAME __F_SYSTEM_NAME(FAST_LOG10_BASE_NAME) #endif #ifndef F_FAST_SINCOS_NAME # define F_FAST_SINCOS_NAME __F_SYSTEM_NAME(FAST_SINCOS_BASE_NAME) #endif #ifndef F_FAST_SIN_NAME # define F_FAST_SIN_NAME __F_SYSTEM_NAME(FAST_SIN_BASE_NAME) #endif #ifndef F_FAST_COS_NAME # define F_FAST_COS_NAME __F_SYSTEM_NAME(FAST_COS_BASE_NAME) #endif #ifndef F_FAST_SINCOSD_NAME # define F_FAST_SINCOSD_NAME __F_SYSTEM_NAME(FAST_SINCOSD_BASE_NAME) #endif #ifndef F_FAST_SIND_NAME # define F_FAST_SIND_NAME __F_SYSTEM_NAME(FAST_SIND_BASE_NAME) #endif #ifndef F_FAST_COSD_NAME # define F_FAST_COSD_NAME __F_SYSTEM_NAME(FAST_COSD_BASE_NAME) #endif #ifndef F_FAST_TAN_NAME # define F_FAST_TAN_NAME __F_SYSTEM_NAME(FAST_TAN_BASE_NAME) #endif #ifndef F_FAST_ATAN2_NAME # define F_FAST_ATAN2_NAME __F_SYSTEM_NAME(FAST_ATAN2_BASE_NAME) #endif #ifndef F_FAST_HYPOT_NAME # define F_FAST_HYPOT_NAME __F_SYSTEM_NAME(FAST_HYPOT_BASE_NAME) #endif #ifndef F_FAST_POW_NAME # define F_FAST_POW_NAME __F_SYSTEM_NAME(FAST_POW_BASE_NAME) #endif #ifndef F_FAST_POW_E_NAME # define F_FAST_POW_E_NAME __F_USER_NAME(FAST_POW_E_BASE_NAME) #endif #ifndef F_FAST_POW_TABLE_NAME # define F_FAST_POW_TABLE_NAME __B_TABLE_NAME(FAST_POW_TABLE_BASE_NAME) #endif #ifndef F_FAST_POW_BUILD_FILE_NAME # define F_FAST_POW_BUILD_FILE_NAME F_POW_BUILD_FILE_NAME #endif #ifndef F_FAST_SQRT_NAME # define F_FAST_SQRT_NAME __F_SYSTEM_NAME(FAST_SQRT_BASE_NAME) #endif /* ** Backup function name definitions */ #ifdef B_TYPE #ifndef B_ASIND_NAME # define B_ASIND_NAME __B_SYSTEM_NAME(ASIND_BASE_NAME) #endif #ifndef B_ASINH_NAME # define B_ASINH_NAME __B_SYSTEM_NAME(ASINH_BASE_NAME) #endif #ifndef B_ACOSD_NAME # define B_ACOSD_NAME __B_SYSTEM_NAME(ACOSD_BASE_NAME) #endif #ifndef B_ACOSH_NAME # define B_ACOSH_NAME __B_SYSTEM_NAME(ACOSH_BASE_NAME) #endif #ifndef B_ASIN_NAME # define B_ASIN_NAME __B_SYSTEM_NAME(ASIN_BASE_NAME) #endif #ifndef B_ACOS_NAME # define B_ACOS_NAME __B_SYSTEM_NAME(ACOS_BASE_NAME) #endif #ifndef B_ATAND_NAME # define B_ATAND_NAME __B_SYSTEM_NAME(ATAND_BASE_NAME) #endif #ifndef B_ATAND2_NAME # define B_ATAND2_NAME __B_SYSTEM_NAME(ATAND2_BASE_NAME) #endif #ifndef B_ATAN2_NAME # define B_ATAN2_NAME __B_SYSTEM_NAME(ATAN2_BASE_NAME) #endif #ifndef B_ATAN_NAME # define B_ATAN_NAME __B_SYSTEM_NAME(ATAN_BASE_NAME) #endif #ifndef B_ATANH_NAME # define B_ATANH_NAME __B_SYSTEM_NAME(ATANH_BASE_NAME) #endif #ifndef B_CEIL_NAME # define B_CEIL_NAME __B_SYSTEM_NAME(CEIL_BASE_NAME) #endif #ifndef B_CLASS_NAME # define B_CLASS_NAME __B_SYSTEM_NAME(CLASS_BASE_NAME) #endif #ifndef B_COPYSIGN_NAME # define B_COPYSIGN_NAME __B_SYSTEM_NAME(COPYSIGN_BASE_NAME) #endif #ifndef B_ERF_NAME # define B_ERF_NAME __B_SYSTEM_NAME(ERF_BASE_NAME) #endif #ifndef B_ERFC_NAME # define B_ERFC_NAME __B_SYSTEM_NAME(ERFC_BASE_NAME) #endif #ifndef B_ERFCX_NAME # define B_ERFCX_NAME __B_SYSTEM_NAME(ERFCX_BASE_NAME) #endif #ifndef B_EXP_NAME # define B_EXP_NAME __B_SYSTEM_NAME(EXP_BASE_NAME) #endif #ifndef B_EXP2_NAME # define B_EXP2_NAME __B_SYSTEM_NAME(EXP2_BASE_NAME) #endif #ifndef B_EXP_SPECIAL_ENTRY_NAME # define B_EXP_SPECIAL_ENTRY_NAME \ PASTE_2(__B_INTERNAL_NAME(EXP_BASE_NAME), _special_entry_point) #endif #ifndef B_EXPM1_NAME # define B_EXPM1_NAME __B_SYSTEM_NAME(EXPM1_BASE_NAME) #endif #ifndef B_FABS_NAME # define B_FABS_NAME __B_SYSTEM_NAME(FABS_BASE_NAME) #endif #ifndef B_FINITE_NAME # define B_FINITE_NAME __B_SYSTEM_NAME(FINITE_BASE_NAME) #endif #ifndef B_FLOOR_NAME # define B_FLOOR_NAME __B_SYSTEM_NAME(FLOOR_BASE_NAME) #endif #ifndef B_FREXP_NAME # define B_FREXP_NAME __B_SYSTEM_NAME(FREXP_BASE_NAME) #endif #ifndef B_HYPOT_NAME # define B_HYPOT_NAME __B_SYSTEM_NAME(HYPOT_BASE_NAME) #endif #ifndef B_CABS_NAME # define B_CABS_NAME __B_SYSTEM_NAME(CABS_BASE_NAME) #endif #ifndef B_ISNAN_NAME # define B_ISNAN_NAME __B_SYSTEM_NAME(ISNAN_BASE_NAME) #endif #ifndef B_LDEXP_NAME # define B_LDEXP_NAME __B_SYSTEM_NAME(LDEXP_BASE_NAME) #endif #ifndef B_SCALB_NAME # define B_SCALB_NAME __B_SYSTEM_NAME(SCALB_BASE_NAME) #endif #ifndef B_SCALBN_NAME # define B_SCALBN_NAME __B_SYSTEM_NAME(SCALBN_BASE_NAME) #endif #ifndef B_SCALBLN_NAME # define B_SCALBLN_NAME __B_SYSTEM_NAME(SCALBLN_BASE_NAME) #endif #ifndef B_J0_NAME # define B_J0_NAME __B_SYSTEM_NAME(J0_BASE_NAME) #endif #ifndef B_J1_NAME # define B_J1_NAME __B_SYSTEM_NAME(J1_BASE_NAME) #endif #ifndef B_JN_NAME # define B_JN_NAME __B_SYSTEM_NAME(JN_BASE_NAME) #endif #ifndef B_Y0_NAME # define B_Y0_NAME __B_SYSTEM_NAME(Y0_BASE_NAME) #endif #ifndef B_Y1_NAME # define B_Y1_NAME __B_SYSTEM_NAME(Y1_BASE_NAME) #endif #ifndef B_YN_NAME # define B_YN_NAME __B_SYSTEM_NAME(YN_BASE_NAME) #endif #ifndef B_GAMMA_NAME # define B_GAMMA_NAME __B_SYSTEM_NAME(GAMMA_BASE_NAME) #endif #ifndef B_LGAMMA_NAME # define B_LGAMMA_NAME __B_SYSTEM_NAME(LGAMMA_BASE_NAME) #endif #ifndef B_TGAMMA_NAME # define B_TGAMMA_NAME __B_SYSTEM_NAME(TGAMMA_BASE_NAME) #endif #ifndef B_RT_LGAMMA_NAME # define B_RT_LGAMMA_NAME __B_SYSTEM_NAME(RT_LGAMMA_BASE_NAME) #endif #ifndef B_LOG1P_NAME # define B_LOG1P_NAME __B_SYSTEM_NAME(LOG1P_BASE_NAME) #endif #ifndef B_LOG2_NAME # define B_LOG2_NAME __B_SYSTEM_NAME(LOG2_BASE_NAME) #endif #ifndef B_LOG10_NAME # define B_LOG10_NAME __B_SYSTEM_NAME(LOG10_BASE_NAME) #endif #ifndef B_LN_NAME # define B_LN_NAME __B_SYSTEM_NAME(LN_BASE_NAME) #endif #ifndef B_LOGB_NAME # define B_LOGB_NAME __B_SYSTEM_NAME(LOGB_BASE_NAME) #endif #ifndef B_ILOGB_NAME # define B_ILOGB_NAME __B_SYSTEM_NAME(ILOGB_BASE_NAME) #endif #ifndef B_REM_NAME # define B_REM_NAME __B_SYSTEM_NAME(REM_BASE_NAME) #endif #ifndef B_REMAINDER_NAME # define B_REMAINDER_NAME __B_SYSTEM_NAME(REMAINDER_BASE_NAME) #endif #ifndef B_REMQUO_NAME # define B_REMQUO_NAME __B_SYSTEM_NAME(REMQUO_BASE_NAME) #endif #ifndef B_MOD_NAME # define B_MOD_NAME __B_SYSTEM_NAME(MOD_BASE_NAME) #endif #ifndef B_MODF_NAME # define B_MODF_NAME __B_SYSTEM_NAME(MODF_BASE_NAME) #endif #ifndef B_NINT_NAME # define B_NINT_NAME __B_SYSTEM_NAME(NINT_BASE_NAME) #endif #ifndef B_NEXTAFTER_NAME # define B_NEXTAFTER_NAME __B_SYSTEM_NAME(NEXTAFTER_BASE_NAME) #endif #ifndef B_NEXTTOWARD_NAME # define B_NEXTTOWARD_NAME __B_SYSTEM_NAME(NEXTTOWARD_BASE_NAME) #endif #ifndef B_NXTAFTR_NAME # define B_NXTAFTR_NAME __B_USER_NAME(NXTAFTR_BASE_NAME) #endif #ifndef B_POW_NAME # define B_POW_NAME __B_SYSTEM_NAME(POW_BASE_NAME) #endif #ifndef B_POW_E_NAME # define B_POW_E_NAME __B_USER_NAME(POW_E_BASE_NAME) #endif #ifndef B_RANDOM_NAME # define B_RANDOM_NAME __B_SYSTEM_NAME(RANDOM_BASE_NAME) #endif #ifndef B_VMS_RANDOM_NAME # define B_VMS_RANDOM_NAME __B_SYSTEM_NAME(VMS_RANDOM_BASE_NAME) #endif #ifndef B_RINT_NAME # define B_RINT_NAME __B_SYSTEM_NAME(RINT_BASE_NAME) #endif #ifndef B_LRINT_NAME # define B_LRINT_NAME __B_SYSTEM_NAME(LRINT_BASE_NAME) #endif #ifndef B_LROUND_NAME # define B_LROUND_NAME __B_SYSTEM_NAME(LROUND_BASE_NAME) #endif #ifndef B_LLRINT_NAME # define B_LLRINT_NAME __B_SYSTEM_NAME(LLRINT_BASE_NAME) #endif #ifndef B_LLROUND_NAME # define B_LLROUND_NAME __B_SYSTEM_NAME(LLROUND_BASE_NAME) #endif #ifndef B_SIN_NAME # define B_SIN_NAME __B_SYSTEM_NAME(SIN_BASE_NAME) #endif #ifndef B_SIN_VO_NAME # define B_SIN_VO_NAME __B_SYSTEM_NAME(SIN_VO_BASE_NAME) #endif #ifndef B_COS_NAME # define B_COS_NAME __B_SYSTEM_NAME(COS_BASE_NAME) #endif #ifndef B_COS_VO_NAME # define B_COS_VO_NAME __B_SYSTEM_NAME(COS_VO_BASE_NAME) #endif #ifndef B_SINCOS_NAME # define B_SINCOS_NAME __B_SYSTEM_NAME(SINCOS_BASE_NAME) #endif #ifndef B_SINCOS_VO_NAME # define B_SINCOS_VO_NAME __B_SYSTEM_NAME(SINCOS_VO_BASE_NAME) #endif #ifndef B_SIND_NAME # define B_SIND_NAME __B_SYSTEM_NAME(SIND_BASE_NAME) #endif #ifndef B_COSD_NAME # define B_COSD_NAME __B_SYSTEM_NAME(COSD_BASE_NAME) #endif #ifndef B_SINCOSD_NAME # define B_SINCOSD_NAME __B_SYSTEM_NAME(SINCOSD_BASE_NAME) #endif #ifndef B_SINH_NAME # define B_SINH_NAME __B_SYSTEM_NAME(SINH_BASE_NAME) #endif #ifndef B_COSH_NAME # define B_COSH_NAME __B_SYSTEM_NAME(COSH_BASE_NAME) #endif #ifndef B_SQRT_NAME # define B_SQRT_NAME __B_SYSTEM_NAME(SQRT_BASE_NAME) #endif #ifndef B_SQRT_TABLE_NAME # define B_SQRT_TABLE_NAME __B_TABLE_NAME(SQRT_BASE_NAME) #endif #ifndef B_RSQRT_NAME # define B_RSQRT_NAME __B_USER_NAME(RSQRT_BASE_NAME) #endif #ifndef B_RSQRT_TABLE_NAME # define B_RSQRT_TABLE_NAME __B_TABLE_NAME(RSQRT_BASE_NAME) #endif #ifndef B_CBRT_NAME # define B_CBRT_NAME __B_SYSTEM_NAME(CBRT_BASE_NAME) #endif #ifndef B_CBRT_TABLE_NAME # define B_CBRT_TABLE_NAME __B_TABLE_NAME(CBRT_BASE_NAME) #endif #ifndef B_TAN_NAME # define B_TAN_NAME __B_SYSTEM_NAME(TAN_BASE_NAME) #endif #ifndef B_COT_NAME # define B_COT_NAME __B_SYSTEM_NAME(COT_BASE_NAME) #endif #ifndef B_TANCOT_NAME # define B_TANCOT_NAME __B_SYSTEM_NAME(TANCOT_BASE_NAME) #endif #ifndef B_TAND_NAME # define B_TAND_NAME __B_SYSTEM_NAME(TAND_BASE_NAME) #endif #ifndef B_COTD_NAME # define B_COTD_NAME __B_SYSTEM_NAME(COTD_BASE_NAME) #endif #ifndef B_TANCOTD_NAME # define B_TANCOTD_NAME __B_SYSTEM_NAME(TANCOTD_BASE_NAME) #endif #ifndef B_TANH_NAME # define B_TANH_NAME __B_SYSTEM_NAME(TANH_BASE_NAME) #endif #ifndef B_TRIG_CONS_NAME # define B_TRIG_CONS_NAME __B_USER_NAME(TRIG_CONS_BASE_NAME) #endif #ifndef B_TRIGD_CONS_NAME # define B_TRIGD_CONS_NAME __B_USER_NAME(TRIGD_CONS_BASE_NAME) #endif #ifndef B_TRIG_REDUCE_NAME # define B_TRIG_REDUCE_NAME __B_USER_NAME(TRIG_REDUCE_BASE_NAME) #endif #ifndef B_TRIG_REDUCE_VO_NAME # define B_TRIG_REDUCE_VO_NAME __B_USER_NAME(TRIG_REDUCE_VO_BASE_NAME) #endif #ifndef B_TRIGD_REDUCE_NAME # define B_TRIGD_REDUCE_NAME __B_USER_NAME(TRIGD_REDUCE_BASE_NAME) #endif #ifndef B_TRUNC_NAME # define B_TRUNC_NAME __B_SYSTEM_NAME(TRUNC_BASE_NAME) #endif #ifndef B_UNORDERED_NAME # define B_UNORDERED_NAME __B_SYSTEM_NAME(UNORDERED_BASE_NAME) #endif #ifndef B_CCOS_NAME # define B_CCOS_NAME __B_SYSTEM_NAME(CCOS_BASE_NAME) #endif #ifndef B_CDIV_NAME # define B_CDIV_NAME __B_SYSTEM_NAME(CDIV_BASE_NAME) #endif #ifndef B_CEXP_NAME # define B_CEXP_NAME __B_SYSTEM_NAME(CEXP_BASE_NAME) #endif #ifndef B_CLOG_NAME # define B_CLOG_NAME __B_SYSTEM_NAME(CLOG_BASE_NAME) #endif #ifndef B_CMUL_NAME # define B_CMUL_NAME __B_SYSTEM_NAME(CMUL_BASE_NAME) #endif #ifndef B_CPOW_NAME # define B_CPOW_NAME __B_SYSTEM_NAME(CPOW_BASE_NAME) #endif #ifndef B_CPOWI_NAME # define B_CPOWI_NAME __B_SYSTEM_NAME(CPOWI_BASE_NAME) #endif #ifndef B_CSIN_NAME # define B_CSIN_NAME __B_SYSTEM_NAME(CSIN_BASE_NAME) #endif #ifndef B_CSQRT_NAME # define B_CSQRT_NAME __B_SYSTEM_NAME(CSQRT_BASE_NAME) #endif #ifndef B_CACOS_NAME # define B_CACOS_NAME __B_SYSTEM_NAME(CACOS_BASE_NAME) #endif #ifndef B_CASIN_NAME # define B_CASIN_NAME __B_SYSTEM_NAME(CASIN_BASE_NAME) #endif #ifndef B_CATAN_NAME # define B_CATAN_NAME __B_SYSTEM_NAME(CATAN_BASE_NAME) #endif #ifndef B_CTAN_NAME # define B_CTAN_NAME __B_SYSTEM_NAME(CTAN_BASE_NAME) #endif #ifndef B_CCOSH_NAME # define B_CCOSH_NAME __B_SYSTEM_NAME(CCOSH_BASE_NAME) #endif #ifndef B_CSINH_NAME # define B_CSINH_NAME __B_SYSTEM_NAME(CSINH_BASE_NAME) #endif #ifndef B_CTANH_NAME # define B_CTANH_NAME __B_SYSTEM_NAME(CTANH_BASE_NAME) #endif #ifndef B_CACOSH_NAME # define B_CACOSH_NAME __B_SYSTEM_NAME(CACOSH_BASE_NAME) #endif #ifndef B_CASINH_NAME # define B_CASINH_NAME __B_SYSTEM_NAME(CASINH_BASE_NAME) #endif #ifndef B_CATANH_NAME # define B_CATANH_NAME __B_SYSTEM_NAME(CATANH_BASE_NAME) #endif #ifndef B_CARG_NAME # define B_CARG_NAME __B_SYSTEM_NAME(CARG_BASE_NAME) #endif #ifndef B_CIMAG_NAME # define B_CIMAG_NAME __B_SYSTEM_NAME(CIMAG_BASE_NAME) #endif #ifndef B_CREAL_NAME # define B_CREAL_NAME __B_SYSTEM_NAME(CREAL_BASE_NAME) #endif #ifndef B_CPROJ_NAME # define B_CPROJ_NAME __B_SYSTEM_NAME(CPROJ_BASE_NAME) #endif #ifndef B_CONJ_NAME # define B_CONJ_NAME __B_SYSTEM_NAME(CONJ_BASE_NAME) #endif #ifndef B_NAN_NAME # define B_NAN_NAME __B_SYSTEM_NAME(NAN_BASE_NAME) #endif #ifndef B_FDIM_NAME # define B_FDIM_NAME __B_SYSTEM_NAME(FDIM_BASE_NAME) #endif #ifndef B_FMAX_NAME # define B_FMAX_NAME __B_SYSTEM_NAME(FMAX_BASE_NAME) #endif #ifndef B_FMIN_NAME # define B_FMIN_NAME __B_SYSTEM_NAME(FMIN_BASE_NAME) #endif #ifndef B_SIGNIFICAND_NAME # define B_SIGNIFICAND_NAME __B_SYSTEM_NAME(SIGNIFICAND_BASE_NAME) #endif #ifndef B_FMA_NAME # define B_FMA_NAME __B_SYSTEM_NAME(FMA_BASE_NAME) #endif #ifndef B_POW_I_NAME # define B_POW_I_NAME __B_SYSTEM_NAME(POW_I_BASE_NAME) #endif #ifndef B_POW_I_II_NAME # define B_POW_I_II_NAME __B_SYSTEM_NAME(POW_I_II_BASE_NAME) #endif #ifndef B_SINHCOSH_NAME # define B_SINHCOSH_NAME __B_SYSTEM_NAME(SINHCOSH_BASE_NAME) #endif #ifndef B_MUL_NAME # define B_MUL_NAME __B_SYSTEM_NAME(MUL_BASE_NAME) #endif #ifndef B_DIV_NAME # define B_DIV_NAME __B_SYSTEM_NAME(DIV_BASE_NAME) #endif #ifndef B_ADD_NAME # define B_ADD_NAME __B_SYSTEM_NAME(ADD_BASE_NAME) #endif #ifndef B_SUB_NAME # define B_SUB_NAME __B_SYSTEM_NAME(SUB_BASE_NAME ) #endif #ifndef B_NEG_NAME # define B_NEG_NAME __B_SYSTEM_NAME(NEG_BASE_NAME) #endif #ifndef B_ITOF_NAME # define B_ITOF_NAME __B_SYSTEM_NAME(ITOF_BASE_NAME) #endif #ifndef B_CMP_NAME # define B_CMP_NAME __B_SYSTEM_NAME(CMP_BASE_NAME) #endif /* ** Default definitions for the fast backup entry points. */ #ifndef B_FAST_ACOS_NAME # define B_FAST_ACOS_NAME __B_SYSTEM_NAME(FAST_ACOS_BASE_NAME) #endif #ifndef B_FAST_ASIN_NAME # define B_FAST_ASIN_NAME __B_SYSTEM_NAME(FAST_ASIN_BASE_NAME) #endif #ifndef B_FAST_ATAN_NAME # define B_FAST_ATAN_NAME __B_SYSTEM_NAME(FAST_ATAN_BASE_NAME) #endif #ifndef B_FAST_EXP_NAME # define B_FAST_EXP_NAME __B_SYSTEM_NAME(FAST_EXP_BASE_NAME) #endif #ifndef B_FAST_LN_NAME # define B_FAST_LN_NAME __B_SYSTEM_NAME(FAST_LN_BASE_NAME) #endif #ifndef B_FAST_LOG10_NAME # define B_FAST_LOG10_NAME __B_SYSTEM_NAME(FAST_LOG10_BASE_NAME) #endif #ifndef B_FAST_SINCOS_NAME # define B_FAST_SINCOS_NAME __B_SYSTEM_NAME(FAST_SINCOS_BASE_NAME) #endif #ifndef B_FAST_SIN_NAME # define B_FAST_SIN_NAME __B_SYSTEM_NAME(FAST_SIN_BASE_NAME) #endif #ifndef B_FAST_COS_NAME # define B_FAST_COS_NAME __B_SYSTEM_NAME(FAST_COS_BASE_NAME) #endif #ifndef B_FAST_SINCOSD_NAME # define B_FAST_SINCOSD_NAME __B_SYSTEM_NAME(FAST_SINCOSD_BASE_NAME) #endif #ifndef B_FAST_SIND_NAME # define B_FAST_SIND_NAME __B_SYSTEM_NAME(FAST_SIND_BASE_NAME) #endif #ifndef B_FAST_COSD_NAME # define B_FAST_COSD_NAME __B_SYSTEM_NAME(FAST_COSD_BASE_NAME) #endif #ifndef B_FAST_TAN_NAME # define B_FAST_TAN_NAME __B_SYSTEM_NAME(FAST_TAN_BASE_NAME) #endif #ifndef B_FAST_ATAN2_NAME # define B_FAST_ATAN2_NAME __B_SYSTEM_NAME(FAST_ATAN2_BASE_NAME) #endif #ifndef B_FAST_HYPOT_NAME # define B_FAST_HYPOT_NAME __B_SYSTEM_NAME(FAST_HYPOT_BASE_NAME) #endif #ifndef B_FAST_POW_NAME # define B_FAST_POW_NAME __B_SYSTEM_NAME(FAST_POW_BASE_NAME) #endif #ifndef B_FAST_POW_E_NAME # define B_FAST_POW_E_NAME __B_USER_NAME(FAST_POW_E_BASE_NAME) #endif #ifndef B_FAST_SQRT_NAME # define B_FAST_SQRT_NAME __B_SYSTEM_NAME(FAST_SQRT_BASE_NAME) #endif #endif /* B_TYPE */ /* ** Special names for 128 bits. */ #ifndef D_SQRT_TABLE_NAME # define D_SQRT_TABLE_NAME __D_TABLE_NAME(SQRT_BASE_NAME) #endif #ifndef D_RSQRT_TABLE_NAME # define D_RSQRT_TABLE_NAME __D_TABLE_NAME(RSQRT_BASE_NAME) #endif /* ** Default names for include files which need to be globally visible within ** the DPML. */ #ifndef F_TRIG_CONS_BUILD_FILE_NAME # define F_TRIG_CONS_BUILD_FILE_NAME __BUILD_FILE_NAME_C(TRIG_CONS_BASE_NAME) #endif #ifndef F_TRIGD_CONS_BUILD_FILE_NAME # define F_TRIGD_CONS_BUILD_FILE_NAME __BUILD_FILE_NAME_C(TRIGD_CONS_BASE_NAME) #endif #ifndef F_SINCOS_BUILD_FILE_NAME # define F_SINCOS_BUILD_FILE_NAME __BUILD_FILE_NAME_C(SINCOS_BASE_NAME) #endif #ifndef F_TANCOT_BUILD_FILE_NAME # define F_TANCOT_BUILD_FILE_NAME __F_TABLE_FILE_NAME(TANCOT_BASE_NAME) #endif #ifndef FOUR_OVER_PI_TABLE_NAME # define FOUR_OVER_PI_TABLE_NAME __TABLE_NAME(four_over_pi) #endif #ifndef FOUR_OVER_PI_BUILD_FILE_NAME # define FOUR_OVER_PI_BUILD_FILE_NAME \ ADD_EXTENSION(ADD_BUILD_PREFIX(four_over_pi),c) #endif #ifndef POW_ANSI_C_ERROR_BUILD_FILE_NAME # define POW_ANSI_C_ERROR_BUILD_FILE_NAME \ ADD_EXTENSION(ADD_BUILD_PREFIX(pow_ansi_c_error),c) #endif #ifndef POW_FORTRAN_ERROR_BUILD_FILE_NAME # define POW_FORTRAN_ERROR_BUILD_FILE_NAME \ ADD_EXTENSION(ADD_BUILD_PREFIX(pow_fortran_error),c) #endif #ifndef POW_ANSI_C_ERROR_TABLE_NAME # define POW_ANSI_C_ERROR_TABLE_NAME __TABLE_NAME(pow_ansi_c_error) #endif #ifndef POW_FORTRAN_ERROR_TABLE_NAME # define POW_FORTRAN_ERROR_TABLE_NAME __TABLE_NAME(pow_fortran_error) #endif /* ** Establish default prefixes, suffixes and file extensions. */ #ifndef F_NAME_PREFIX # define F_NAME_PREFIX DPML_NULL_MACRO_TOKEN #endif #ifndef BUILD_PREFIX # define BUILD_PREFIX dpml_ #endif #ifndef USER_PREFIX # define USER_PREFIX F_NAME_PREFIX #endif #ifndef TABLE_PREFIX # define TABLE_PREFIX USER_PREFIX #endif #ifndef INTERNAL_PREFIX # define INTERNAL_PREFIX dpml_ #endif #ifndef __F_SUFFIX # define __F_SUFFIX PASTE_2(_, F_CHAR) #endif #if !defined(F_CVTAS_SUFFIX) # define F_CVTAS_SUFFIX __F_SUFFIX #endif #ifndef F_NAME_SUFFIX # if SINGLE_PRECISION # define F_NAME_SUFFIX f # elif QUAD_PRECISION # define F_NAME_SUFFIX l # else # define F_NAME_SUFFIX DPML_NULL_MACRO_TOKEN # endif #endif #ifndef BUILD_SUFFIX # define BUILD_SUFFIX __F_SUFFIX #endif #ifndef D_BUILD_SUFFIX # define D_BUILD_SUFFIX __D_SUFFIX #endif #ifndef TABLE_SUFFIX # if (__F_SUFFIX == DPML_NULL_MACRO_TOKEN) # define TABLE_SUFFIX _table # else # define TABLE_SUFFIX PASTE_2(__F_SUFFIX, _table) # endif #endif #ifndef F_TABLE_SUFFIX # if (__F_SUFFIX == DPML_NULL_MACRO_TOKEN) # define F_TABLE_SUFFIX _table # else # define F_TABLE_SUFFIX PASTE_2(__F_SUFFIX, _table) # endif #endif #ifndef BUILD_FILE_EXTENSION # if defined(MAKE_COMMON) # define BUILD_FILE_EXTENSION c # else # define BUILD_FILE_EXTENSION h # endif #endif #ifdef B_TYPE #ifndef __B_SUFFIX # define __B_SUFFIX PASTE_2(_, B_CHAR) #endif #ifndef B_NAME_SUFFIX # if QUAD_PRECISION # define B_NAME_SUFFIX Q_CHAR # else # define B_NAME_SUFFIX DPML_NULL_MACRO_TOKEN # endif #endif #ifndef B_TABLE_SUFFIX # if (__B_SUFFIX == DPML_NULL_MACRO_TOKEN) # define B_TABLE_SUFFIX _table # else # define B_TABLE_SUFFIX PASTE_2(__B_SUFFIX, _table) # endif #endif #endif /* B_TYPE */ /* ** Macros for D tables (128 bits). */ #ifndef __D_SUFFIX # define __D_SUFFIX PASTE_2(_, D_CHAR) #endif #ifndef D_TABLE_SUFFIX # if (__D_SUFFIX == DPML_NULL_MACRO_TOKEN) # define D_TABLE_SUFFIX _table # else # define D_TABLE_SUFFIX PASTE_2(__D_SUFFIX, _table) # endif #endif /* ** Macros for constructing file names. */ #define ADD_EXTENSION(filename,ext) filename.ext /* ** The following code is designed to test for "null" macros before choosing ** an appropriate PASTE macro. The ANSI C standard does not define how macros ** should behave when given null arguments and some compilers signal errors ** under these conditions (e.g. at the time of this writing, HP's ANSI C ** compiler under HP/UX). ** ** First define macro for adding prefixes */ #if (F_NAME_PREFIX == DPML_NULL_MACRO_TOKEN) # define __SYSTEM_NAME(base) base #else # define __SYSTEM_NAME(base) PASTE_2(F_NAME_PREFIX, base) #endif #if (USER_PREFIX == DPML_NULL_MACRO_TOKEN) # define __USER_NAME(base) base #else # define __USER_NAME(base) PASTE_2(USER_PREFIX, base) #endif #if (TABLE_PREFIX == DPML_NULL_MACRO_TOKEN) # define __TABLE_NAME(base) base #else # define __TABLE_NAME(base) PASTE_2(TABLE_PREFIX, base) #endif #if (INTERNAL_PREFIX == DPML_NULL_MACRO_TOKEN) # define __INTERNAL_NAME(base) base #else # define __INTERNAL_NAME(base) PASTE_2(INTERNAL_PREFIX, base) #endif #if (BUILD_PREFIX == DPML_NULL_MACRO_TOKEN) # define ADD_BUILD_PREFIX(base) base #else # define ADD_BUILD_PREFIX(base) PASTE_2(BUILD_PREFIX, base) #endif /* ** Define macros for adding suffixes */ #if (F_NAME_SUFFIX == DPML_NULL_MACRO_TOKEN) # define ADD_F_SUFFIX(base) base #else # define ADD_F_SUFFIX(base) PASTE_2(base, F_NAME_SUFFIX) #endif #if (B_NAME_SUFFIX == DPML_NULL_MACRO_TOKEN) # define ADD_B_SUFFIX(base) base #else # define ADD_B_SUFFIX(base) PASTE_2(base, B_NAME_SUFFIX) #endif #if (D_NAME_SUFFIX == DPML_NULL_MACRO_TOKEN) # define ADD_D_SUFFIX(base) base #else # define ADD_D_SUFFIX(base) PASTE_2(base, D_NAME_SUFFIX) #endif #if (BUILD_SUFFIX == DPML_NULL_MACRO_TOKEN) # define __BUILD_NAME(base) ADD_BUILD_PREFIX(base) #else # define __BUILD_NAME(base) PASTE_2(ADD_BUILD_PREFIX(base), BUILD_SUFFIX) #endif #define __F_USER_NAME(base) ADD_F_SUFFIX(__USER_NAME(base)) #define __F_INTERNAL_NAME(base) ADD_F_SUFFIX(__INTERNAL_NAME(base)) #define __F_SYSTEM_NAME(base) ADD_F_SUFFIX(__SYSTEM_NAME(base)) #define __F_TABLE_NAME(base) PASTE_2(__TABLE_NAME(base), TABLE_SUFFIX) #define __F_TABLE_FILE_ROOT(base) PASTE_2(ADD_BUILD_PREFIX(base),F_TABLE_SUFFIX) #define __F_TABLE_FILE_NAME(base) ADD_EXTENSION(__F_TABLE_FILE_ROOT(base),BUILD_FILE_EXTENSION) #define __B_USER_NAME(base) ADD_B_SUFFIX(__USER_NAME(base)) #define __B_INTERNAL_NAME(base) ADD_B_SUFFIX(__INTERNAL_NAME(base)) #define __B_SYSTEM_NAME(base) ADD_B_SUFFIX(__SYSTEM_NAME(base)) #define __B_TABLE_NAME(base) PASTE_2(__TABLE_NAME(base), B_TABLE_SUFFIX) #define __B_TABLE_FILE_ROOT(base) PASTE_2(ADD_BUILD_PREFIX(base),B_TABLE_SUFFIX) #define __B_TABLE_FILE_NAME(base) ADD_EXTENSION(__B_TABLE_FILE_ROOT(base),BUILD_FILE_EXTENSION) #ifndef __FAST_NAME # define __FAST_NAME(base) PASTE_2(F_, base) #endif #define __D_TABLE_NAME(base) PASTE_2(__TABLE_NAME(base), D_TABLE_SUFFIX) #define __D_BUILD_FILE_NAME(base) ADD_EXTENSION(__D_BUILD_NAME(base),BUILD_FILE_EXTENSION) #define __D_TABLE_FILE_ROOT(base) PASTE_2(ADD_BUILD_PREFIX(base),D_TABLE_SUFFIX) #define __D_TABLE_FILE_NAME(base) ADD_EXTENSION(__D_TABLE_FILE_ROOT(base),BUILD_FILE_EXTENSION) #define __BUILD_FILE_NAME(base) ADD_EXTENSION(__BUILD_NAME(base),BUILD_FILE_EXTENSION) #define __MP_FILE_NAME(base) ADD_EXTENSION(__BUILD_NAME(base),mp) #define __BUILD_FILE_NAME_C(base) ADD_EXTENSION(__BUILD_NAME(base),c) #define __BUILD_FILE_NAME_H(base) ADD_EXTENSION(__BUILD_NAME(base),h) /* ** Macros defining "generic" file names. */ #if !defined(TABLE_NAME) && !DONT_DEFAULT_TABLE_NAME # define TABLE_NAME __F_TABLE_NAME(BASE_NAME) #endif #ifndef BUILD_NAME # define BUILD_NAME __BUILD_NAME(BASE_NAME) #endif #ifndef BUILD_FILE_NAME # define BUILD_FILE_NAME __BUILD_FILE_NAME(BASE_NAME) #endif #ifndef TMP_FILE # define TMP_FILE ADD_EXTENSION(BUILD_FILE_NAME,tmp) #endif #ifndef MP_FILE_NAME # define MP_FILE_NAME __MP_FILE_NAME(BASE_NAME) #endif #endif /* DPML_NAMES_H */ LIBRARY/float128/dpml_ux_sqrt.c0000644€­ Q01134020000005041315113665770015277 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BASE_NAME sqrt #include "dpml_ux.h" #undef INDEX_MASK /* Conflict with sqrt_macros.h */ #include "sqrt_macros.h" #undef INDEX_MASK /* Restore original definition */ #define INDEX_MASK MAKE_MASK(INDEX_WIDTH, 0) #if D_PRECISION < 53 # error "ux_divide required D_PRECISION >= 53" #endif extern const SQRT_COEF_STRUCT D_SQRT_TABLE_NAME[(1<<(NUM_FRAC_BITS+1))]; #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif /* ** The following routine computes either sqrt(x) or 1/sqrt(x) for an unpacked ** argument x = 2^(2n-d)*f', f' in [1/2, 1), and d = 0 or 1. Defining ** f = f'/2^d, the basic approach is to convert the high bits of f' to double ** precision and index into the sqrt table to evaluate a polynomial, ** p(f') ~ 1/sqrt(f), good to about 28 bits. Then carefully perform a Newton's ** iteration to produce an approximation to sqrt(f) or 1/sqrt(f) good to about ** 72 bits. This result (represented by two double precision values) is then ** converted to integers and stored as the high 64 bits of the unpacked x-float ** result. Call this result s. Then sqrt(x) or 1/sqrt(x) is computed ** via a Newton's iteration in unpacked format as: ** ** t <-- f*s ** d <-- (3 - t*s)/2 ** if (sqrt) ** result <-- t*d ** else ** result <-- s*d ** */ #define EVALUATE_SQRT 0 #define EVALUATE_RSQRT 1 void UX_SQRT_EVALUATION( UX_FLOAT * x, WORD evaluation_type, UX_FLOAT * y) { U_WORD index, shift, cshift; UX_SIGNED_FRACTION_DIGIT_TYPE signed_digit; UX_FRACTION_DIGIT_TYPE msd, lsd, tmp_digit; UX_EXPONENT_TYPE exponent, exponent_parity; UX_FLOAT s, ux_tmp; D_UNION u; D_TYPE f, f_hi, f_lo, g, g_lo, t, w; SQRT_COEF_STRUCT const * p; /* ** Given x = 2^(2n-d)*f', where d = 0 or 1 and f' is in the interval ** [1/2,1), the first step is to get an approximation to f' as a floating ** point value. We will use f' in a polynomial evaluation to approximate ** 1/sqrt(f), where f = f'/2^d. As part of the Newton's iterations we ** will need f_hi as the high 24 bits of f and f_lo as the high 53 bits ** of f - f_hi. */ msd = G_UX_MSD(x); lsd = G_UX_2nd_MSD(x); u.D_UNSIGNED_HI_WORD = (msd >> D_EXP_WIDTH) + ((WORD) (D_EXP_BIAS - D_NORM - 2) << D_EXP_POS); exponent = G_UX_EXPONENT(x); exponent_parity = exponent & 1; exponent = (exponent + exponent_parity) >> 1; shift = (BITS_PER_UX_FRACTION_DIGIT_TYPE + exponent_parity - S_PRECISION); # if (NUM_UX_FRACTION_DIGITS == 2) lsd = ((msd << (BITS_PER_UX_FRACTION_DIGIT_TYPE - shift)) | (lsd >> shift)) >> (BITS_PER_UX_FRACTION_DIGIT_TYPE - D_PRECISION); f_lo = (double) lsd; # else /* this code is *WRONG* */ u.D_UNSIGNED_LO_WORD = (msd << (BITS_PER_WORD - D_EXP_WIDTH - 1) | (lsd >> (D_EXP_WIDTH + 1)); shift = D_EXP_WIDTH + exponent_parity; cshift = 32 - shift; tmp_digit = G_UX_FRACTION_DIGIT(x, 2); tmp_digit = (tmp_digit >> ? ) | (lsd << ?); lsd = (lsd >> ?) | ((msd << ?) >> ?); f_lo = ((double) msd)*D_TWO_POW_32 + (double) lsd; #endif f = u.f; /* This is actually f' at this point */ f_hi = ((double) (msd >> shift)) * D_RECIP_TWO_POW_24; f_lo *= D_RECIP_TWO_POW_77; /* ** Now compute a polynomial in f to obtain an approximation to 1/sqrt(f'), ** call it g. ** ** Get index into the square root polynomial coefficient table as the ** low exponent bit and the high fraction bits and calculate g. ** ** There is a little bit of a problem with using the DPML sqrt tables. ** Specifically, the table assume that f' is normalized between 1/2 and ** 2, so that the polynomials from the table yield a result in the ** interval ( 1/sqrt(2), sqrt(2) ]. For a floating point implementation, ** this is not a problem, but for fixed point, the interval crosses an ** exponent boundary. It is much easier in fixed point to normalize ** between 1/4 and 1, with the result in the interval ( 1, 2 ] ( We ** actually force the interval to be (1, 2)). The following table ** summerizes the "skew" problem and solution: ** ** Exponent "Swapped" ** parity table gives We want table gives ** --------- ------------ ------------ ------------ ** even 1/sqrt(f) 1/sqrt(f) 1/sqrt(2f) ** odd 1/sqrt(2f) sqrt2/sqrt(f) 1/sqrt(f) ** ** The sqrt table is divide into two halves, depending on the parity ** of the exponent. If we "swap" the sense of the parity, we can ** get the result we need by multiplying by sqrt(2). */ index = msd >> (BITS_PER_UX_FRACTION_DIGIT_TYPE - NUM_FRAC_BITS - 1); index = (index & MAKE_MASK(NUM_FRAC_BITS + 1, 0)) ^ (exponent_parity << NUM_FRAC_BITS); p = &D_SQRT_TABLE_NAME[ index ]; g = ( (p->a)*(f*f) + ((p->b)*f + p->c) ); g *= D_SQRT_TWO; /* ** Given g ~ 1/sqrt(f), we want to compute ** ** g_lo = (g/8)*(1 - f*g^2)*(7 - 3*f*g^2) ** ** However, computing g_lo is somewhat problematic, since there is ** a potential for a massive loss of significance when computing ** 1 - f*g^2. To deal with this problem, we introduce the quantity, t, ** defined by: ** ** t <-- (double)((float) f*g) ** ** and reduce g to only 24 significant bits */ f = f_hi + f_lo; t = (double) ((float) (f*g)); g = (double) ((float) g); /* ** Note that f*g and t are essentially the same values up to about ** 24 bits. Then we can write ** ** w = 1 - f*g^2 ** = 1 - (f*g)*g ** = 1 - [t + (f*g - t)]*g ** = (1 - t*g) - (f*g - t)*g ** ~ (1 - t*g) - [(f_hi + f_lo)*g - t]*g ** = (1 - t*g) - [(f_hi*g - t) + f_lo*g]*g ** ** Note that since g, t and f_hi have at most 24 significant bits, ** and since f*g ~ t, the products t*g and f_hi*g as well as the ** sums 1 - t*g and f_hi*g - t are all exact. This basicly ** reduces the roundoff error in computing 1 - f*g^2 to a few lsbs. ** With the above in mind, we compute g_lo as ** ** ** g_lo = {g*[(7/16) - ((3/16)*f)*(g*g)]} * w */ w = D_GROUP(D_ONE - t*g) - D_GROUP(D_GROUP(f_hi*g - t) + f_lo*g)*g; g_lo = (g*D_GROUP(D_SEVEN_EIGHTS - (D_THREE_EIGHTS*f)*(g*g)))*w; /* ** At this point, g + g_lo approximates 1/sqrt(f) to roughly 72 bits ** and g_hi contains at most 24 significant bits. ** ** The next step is to convert g + g_lo to an unpacked x-float value ** rounding g + g_lo to 64 bits. This is done a little differently ** depending on the size of the integer format. Also, we must be careful ** to insure that the approximation is in the interval [1, 2) */ msd = (UX_FRACTION_DIGIT_TYPE) (D_TWO_POW_24*g); # if NUM_UX_FRACTION_DIGITS == 2 signed_digit = (UX_SIGNED_FRACTION_DIGIT_TYPE) (D_TWO_POW_75*g_lo); msd = (msd << 39) + (signed_digit >> 12) + ((signed_digit >> 11) & 1); tmp_digit = (msd & SET_BIT(62)) ? (UX_MSB - 1) : ((UX_FRACTION_DIGIT_TYPE) -1); msd = ((UX_SIGNED_FRACTION_DIGIT_TYPE) msd < 0) ? msd : tmp_digit; # else # error "Sqrt not NYI for 32 bit integers" # endif /* ** Get the current approximation, s, into unpacked format and compute ** 3 - x*s^2 */ P_UX_SIGN(&s, 0); P_UX_EXPONENT(&s, 1-exponent); P_UX_MSD(&s, msd); P_UX_LSD(&s, 0); MULTIPLY(&s, x, &ux_tmp); MULTIPLY(&s, &ux_tmp, y); ADDSUB(UX_THREE, y, SUB | NO_NORMALIZATION, y); /* ** Depending on the evaluation, multiply by s/2 or x*s/2 */ MULTIPLY(y, (evaluation_type == EVALUATE_SQRT) ? &ux_tmp : &s, y); UX_DECR_EXPONENT(y, 1); return; } #if !defined(C_UX_SQRT) # define C_UX_SQRT __INTERNAL_NAME(C_ux_sqrt__) #endif #define RND_CHECK_MASK MAKE_MASK(10, 4) #define RND_CHECK_INC SET_BIT(3) #define HALF_LSB SET_BIT(14) #define CLEAR_EXTRA_BITS(l) ((l) & ~MAKE_MASK(15,0)) static void C_UX_SQRT(_X_FLOAT * packed_argument, WORD evaluation_code, _X_FLOAT * packed_result OPT_EXCEPTION_INFO_DECLARATION ) { WORD fp_class; UX_FRACTION_DIGIT_TYPE lsd, tmp_digit; UX_FLOAT unpacked_argument, unpacked_result, diff, hi, lo; fp_class = UNPACK( packed_argument, & unpacked_argument, (EVALUATE_SQRT == evaluation_code) ? SQRT_CLASS_TO_ACTION_MAP : RSQRT_CLASS_TO_ACTION_MAP, packed_result OPT_EXCEPTION_INFO_ARGUMENT ); if (0 > fp_class) return; UX_SQRT_EVALUATION(&unpacked_argument, evaluation_code, &unpacked_result); if (EVALUATE_SQRT == evaluation_code) { /* ** Now we have to fool around with the low digit of the result to ** insure that correct rounding takes place. If the result is ** sufficiently far away from the half way case, the PACK routine will ** do the correct rounding. However, "too close to call", we need ** to force the low bits of the result to insure PACK does the right ** thing. We do this by looking at the sign of the difference ** argument - (result + 1/2lsb)^2. */ NORMALIZE(&unpacked_result); lsd = G_UX_LSD(&unpacked_result); if ( 0 == ((lsd + RND_CHECK_INC) & RND_CHECK_MASK)) { /* too close to the middle. Check sign of difference */ lsd = CLEAR_EXTRA_BITS(lsd); tmp_digit = lsd + HALF_LSB; P_UX_LSD(&unpacked_result, tmp_digit); EXTENDED_MULTIPLY(&unpacked_result, &unpacked_result, &hi, &lo); ADDSUB(&unpacked_argument, &hi, SUB, &diff); ADDSUB(&diff, &lo, SUB, &diff); lsd = G_UX_SIGN(&diff) ? lsd : tmp_digit; P_UX_LSD(&unpacked_result, lsd); } } PACK( &unpacked_result, packed_result, NOT_USED, NOT_USED OPT_EXCEPTION_INFO_ARGUMENT ); } /* ** The following two routines implement the user level functions sqrtl and ** rsqrtl calling C_UX_SQRT */ #if !defined(F_ENTRY_NAME) # define F_ENTRY_NAME F_SQRT_NAME #endif X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_SQRT( PASS_ARG_X_FLOAT(packed_argument), EVALUATE_SQRT, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_RSQRT_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_SQRT( PASS_ARG_X_FLOAT(packed_argument), EVALUATE_RSQRT, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } /* ** UX_HYPOT computes the sqrt(x^2 + y^2) for unpacked x-float arguments ** x and y. */ #if !defined(UX_HYPOT) # define UX_HYPOT __INTERNAL_NAME(ux_hypot__) #endif void UX_HYPOT( UX_FLOAT * unpacked_x, UX_FLOAT * unpacked_y, UX_FLOAT * unpacked_result) { UX_FLOAT sum; MULTIPLY(unpacked_x, unpacked_x, &sum); MULTIPLY(unpacked_y, unpacked_y, unpacked_result); ADDSUB(unpacked_result, &sum, ADD, &sum); NORMALIZE(&sum); UX_SQRT(&sum, unpacked_result); return; } /* ** F_HYPOT_NAME is the user lever hypot function */ #undef F_ENTRY_NAME #define F_ENTRY_NAME F_HYPOT_NAME X_XX_PROTO(F_ENTRY_NAME, packed_result, packed_x, packed_y) { WORD fp_class; UX_FLOAT unpacked_x, unpacked_y, unpacked_result; EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) fp_class = UNPACK2( PASS_ARG_X_FLOAT(packed_x), PASS_ARG_X_FLOAT(packed_y), & unpacked_x, & unpacked_y, HYPOT_CLASS_TO_ACTION_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); if (0 > fp_class) RETURN_X_FLOAT(packed_result); UX_HYPOT( &unpacked_x, &unpacked_y, &unpacked_result); PACK( &unpacked_result, PASS_RET_X_FLOAT(packed_result), /* Not Used */ 0, CABS_OVERFLOW OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #if defined(MAKE_INCLUDE) @divert -append divertText # undef TABLE_NAME START_TABLE; TABLE_COMMENT("Square root class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "SQRT_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(2) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("Reciprocal square root class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "RSQRT_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 4) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 3)); TABLE_COMMENT("Data for the above mapping"); PRINT_U_TBL_ITEM( /* data 1 */ SQRT_OF_NEGATIVE ); PRINT_U_TBL_ITEM( /* data 2 */ RSQRT_OF_POS_ZERO ); PRINT_U_TBL_ITEM( /* data 3 */ RSQRT_OF_NEG_ZERO ); PRINT_U_TBL_ITEM( /* data 4 */ ZERO ); TABLE_COMMENT("Hypot(x,y) root class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "HYPOT_CLASS_TO_ACTION_MAP"); /* Index 0: mapping for x */ PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) ); /* Index 1: class-to-index mapping */ PRINT_64_TBL_ITEM( CLASS_TO_INDEX( F_C_POS_ZERO, 2) + CLASS_TO_INDEX( F_C_NEG_ZERO , 2) + CLASS_TO_INDEX( F_C_POS_DENORM, 3) + CLASS_TO_INDEX( F_C_NEG_DENORM, 3) + CLASS_TO_INDEX( F_C_POS_NORM, 3) + CLASS_TO_INDEX( F_C_NEG_NORM, 3) + CLASS_TO_INDEX( F_C_POS_INF, 4) + CLASS_TO_INDEX( F_C_NEG_INF, 4) ); /* Index 2: y class-to-index mapping for x = +/- zero */ PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ABSOLUTE, 1) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ABSOLUTE, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_ABSOLUTE, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ABSOLUTE, 1) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_ABSOLUTE, 1) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ABSOLUTE, 1) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ABSOLUTE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ABSOLUTE, 1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 1) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 1) ); /* Index 3: y class-to-index mapping for x = +/- norm or denorm */ PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ABSOLUTE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ABSOLUTE, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_UNPACKED, 1) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 1) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_UNPACKED, 1) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ABSOLUTE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ABSOLUTE, 1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 1) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 1) ); /* Index 4: y class-to-index mapping for x = +/- Inf */ PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ABSOLUTE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ABSOLUTE, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_ABSOLUTE, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ABSOLUTE, 0) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_ABSOLUTE, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ABSOLUTE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ABSOLUTE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ABSOLUTE, 0) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 1) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 1) ); PAD_IF_NEEDED(MP_BIT_OFFSET, 64); /* Print various powers of 2 */ TABLE_COMMENT("2^n, n = .5, 0, 24, 75, -24, -77 in double precision"); PRINT_R_TBL_VDEF_ITEM( "D_SQRT_TWO\t", sqrt(2)); PRINT_R_TBL_VDEF_ITEM( "D_ONE\t\t", 1); PRINT_R_TBL_VDEF_ITEM( "D_TWO_POW_24\t", bldexp(1, 24)); PRINT_R_TBL_VDEF_ITEM( "D_TWO_POW_75\t", bldexp(1, 75)); PRINT_R_TBL_VDEF_ITEM( "D_RECIP_TWO_POW_24", bldexp(1, -24)); PRINT_R_TBL_VDEF_ITEM( "D_RECIP_TWO_POW_77", bldexp(1, -77)); TABLE_COMMENT( "Rsqrt iteration (double precision) constants: 7/8 and 3/8"); PRINT_R_TBL_VDEF_ITEM( "D_SEVEN_EIGHTS", 7/8); PRINT_R_TBL_VDEF_ITEM( "D_THREE_EIGHTS", 3/8); TABLE_COMMENT("3 in unpacked format"); PRINT_UX_TBL_ADEF_ITEM( "UX_THREE\t\t", 3); END_TABLE; @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ $outText = "$tableText\n\n$defineText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants square root " . \ "related routines", __FILE__ ); \ print "$headerText\n\n$outText\n"; #endif LIBRARY/float128/dpml_log2_t.h0000644€­ Q01134020000005577515113665770015005 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" static const TABLE_UNION __log2_t_table[] = { /* 1.0 in working precision */ /* 000 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* poly coeffs, near 1 */ /* 008 */ DATA_1x2( 0x652b82fe, 0xbfe71547 ), /* 016 */ DATA_1x2( 0xdc3a05d3, 0x3fdec709 ), /* 024 */ DATA_1x2( 0x652b871a, 0xbfd71547 ), /* 032 */ DATA_1x2( 0x50e135f1, 0x3fd2776c ), /* 040 */ DATA_1x2( 0xdc0d1e80, 0xbfcec709 ), /* 048 */ DATA_1x2( 0x7d1eeff0, 0x3fca6176 ), /* 056 */ DATA_1x2( 0xcdda1141, 0xbfc71547 ), /* 064 */ DATA_1x2( 0x1c4cb82d, 0x3fc48446 ), /* 072 */ DATA_1x2( 0x0542bb33, 0xbfc276f6 ), /* 080 */ DATA_1x2( 0x60821257, 0x3fc10990 ), /* 088 */ DATA_1x2( 0xea869e4b, 0xbfbf46f0 ), /* poly coeffs, quotient, near 1 */ /* 096 */ DATA_1x2( 0xdc3a05d3, 0x3fbec709 ), /* 104 */ DATA_1x2( 0x50e13578, 0x3f92776c ), /* 112 */ DATA_1x2( 0x7d20b59a, 0x3f6a6176 ), /* 120 */ DATA_1x2( 0x1aefa4b8, 0x3f448446 ), /* 128 */ DATA_1x2( 0xbe846c21, 0x3f210990 ), /* poly coeffs, away from 1 */ /* 136 */ DATA_1x2( 0x652b82ff, 0xbfe71547 ), /* 144 */ DATA_1x2( 0xdc32988b, 0x3fdec709 ), /* 152 */ DATA_1x2( 0x6521ed89, 0xbfd71547 ), /* 160 */ DATA_1x2( 0x1a1a29cb, 0x3fd27780 ), /* 168 */ DATA_1x2( 0x6e93af0c, 0xbfcec731 ), /* poly coeffs, quotient, away from 1 */ /* 176 */ DATA_1x2( 0xdc3a04a2, 0x3fbec709 ), /* 184 */ DATA_1x2( 0x5022681e, 0x3f92776c ), /* 192 */ DATA_1x2( 0x52fb6584, 0x3f6a621a ), /* log of 2 in hi and lo parts */ /* 200 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* 208 */ DATA_1x2( 0x00000000, 0x00000000 ), /* log of e, in hi and lo parts */ /* 216 */ DATA_1x2( 0x652b82fe, 0x3ff71547 ), /* 224 */ DATA_1x2( 0x68000000, 0x3ff71547 ), /* 232 */ DATA_1x2( 0x00000000, 0x3c778000 ), /* 240 */ DATA_1x2( 0x0f440000, 0xbe46a3e8 ), /* Table of F, 1/F, and hi and lo log of F */ /* 248 */ DATA_4x2( 0x00000000, 0x3ff01000, 0xe01fe020, 0x3fefe01f, 0x6d7c0000, 0x3f7709c4, 0x52642db7, 0xbd35388b ), /* row 0 */ /* 280 */ DATA_4x2( 0x00000000, 0x3ff03000, 0xaa01fa12, 0x3fefa11c, 0x17a90000, 0x3f913631, 0xed069b24, 0x3d3ec312 ), /* row 1 */ /* 312 */ DATA_4x2( 0x00000000, 0x3ff05000, 0xaca0dbb5, 0x3fef6310, 0xba850000, 0x3f9c9363, 0xdd01ee2f, 0x3d0f0ccc ), /* row 2 */ /* 344 */ DATA_4x2( 0x00000000, 0x3ff07000, 0x44230ab5, 0x3fef25f6, 0x94688000, 0x3fa3ed30, 0xec5a47e0, 0xbd32ecef ), /* row 3 */ /* 376 */ DATA_4x2( 0x00000000, 0x3ff09000, 0xf8458e02, 0x3feee9c7, 0xc3498000, 0x3fa985bf, 0xaf8e2578, 0xbd3735cf ), /* row 4 */ /* 408 */ DATA_4x2( 0x00000000, 0x3ff0b000, 0x7aba01eb, 0x3feeae80, 0x83328000, 0x3faf1389, 0x197ca224, 0xbd36302f ), /* row 5 */ /* 440 */ DATA_4x2( 0x00000000, 0x3ff0d000, 0xa59750e4, 0x3fee741a, 0x7e134000, 0x3fb24b5b, 0xa2cf3516, 0x3d3a3c89 ), /* row 6 */ /* 472 */ DATA_4x2( 0x00000000, 0x3ff0f000, 0x79dc1a73, 0x3fee3a91, 0x36034000, 0x3fb507b8, 0x34b21259, 0xbd1124ac ), /* row 7 */ /* 504 */ DATA_4x2( 0x00000000, 0x3ff11000, 0x1e01e01e, 0x3fee01e0, 0x96b8c000, 0x3fb7beee, 0xbe51cdcb, 0xbd3d7ec3 ), /* row 8 */ /* 536 */ DATA_4x2( 0x00000000, 0x3ff13000, 0xdca01dca, 0x3fedca01, 0xdf348000, 0x3fba7111, 0x116078ef, 0x3d124fad ), /* row 9 */ /* 568 */ DATA_4x2( 0x00000000, 0x3ff15000, 0x231e7f8a, 0x3fed92f2, 0xe35b8000, 0x3fbd1e34, 0x59c7991e, 0x3d06d268 ), /* row 10 */ /* 600 */ DATA_4x2( 0x00000000, 0x3ff17000, 0x807572b2, 0x3fed5cac, 0x0f0b0000, 0x3fbfc66a, 0xa68c72a1, 0x3ce49209 ), /* row 11 */ /* 632 */ DATA_4x2( 0x00000000, 0x3ff19000, 0xa3fc5b1a, 0x3fed272c, 0xb4890000, 0x3fc134e1, 0xd690403e, 0x3d28b7fc ), /* row 12 */ /* 664 */ DATA_4x2( 0x00000000, 0x3ff1b000, 0x5c44bfc6, 0x3fecf26e, 0x4b07a000, 0x3fc28429, 0xda2ab291, 0x3d28fe35 ), /* row 13 */ /* 696 */ DATA_4x2( 0x00000000, 0x3ff1d000, 0x9601cbe7, 0x3fecbe6d, 0x6d9a8000, 0x3fc3d114, 0x166e1f56, 0x3d34c7e0 ), /* row 14 */ /* 728 */ DATA_4x2( 0x00000000, 0x3ff1f000, 0x5afb8a42, 0x3fec8b26, 0x907a6000, 0x3fc51bab, 0x7fbb3d20, 0xbd1badba ), /* row 15 */ /* 760 */ DATA_4x2( 0x00000000, 0x3ff21000, 0xd10d4986, 0x3fec5894, 0xfac92000, 0x3fc663f6, 0x6758fb3d, 0xbd39d306 ), /* row 16 */ /* 792 */ DATA_4x2( 0x00000000, 0x3ff23000, 0x392ea01c, 0x3fec26b5, 0xc7d06000, 0x3fc7a9fe, 0x0d92f890, 0xbd110874 ), /* row 17 */ /* 824 */ DATA_4x2( 0x00000000, 0x3ff25000, 0xee868d8b, 0x3febf583, 0xe8352000, 0x3fc8edca, 0x9a843329, 0x3d36d76b ), /* row 18 */ /* 856 */ DATA_4x2( 0x00000000, 0x3ff27000, 0x65883e7b, 0x3febc4fd, 0x2320c000, 0x3fca2f63, 0x1deb636a, 0xbd2e54d7 ), /* row 19 */ /* 888 */ DATA_4x2( 0x00000000, 0x3ff29000, 0x2b18ff23, 0x3feb951e, 0x175fa000, 0x3fcb6ecf, 0x24e663a1, 0xbd342d28 ), /* row 20 */ /* 920 */ DATA_4x2( 0x00000000, 0x3ff2b000, 0xe3beee05, 0x3feb65e2, 0x3c770000, 0x3fccac16, 0x8994b162, 0x3d3b912d ), /* row 21 */ /* 952 */ DATA_4x2( 0x00000000, 0x3ff2d000, 0x4ad806ce, 0x3feb3748, 0xe3b14000, 0x3fcde73f, 0x7c84e79a, 0x3d301dc3 ), /* row 22 */ /* 984 */ DATA_4x2( 0x00000000, 0x3ff2f000, 0x31d922a4, 0x3feb094b, 0x39208000, 0x3fcf2053, 0xea54ce63, 0x3d3e4e8e ), /* row 23 */ /* 1016 */ DATA_4x2( 0x00000000, 0x3ff31000, 0x7f94905e, 0x3feadbe8, 0xa24d0000, 0x3fd02bab, 0x5e85b29f, 0x3d398eec ), /* row 24 */ /* 1048 */ DATA_4x2( 0x00000000, 0x3ff33000, 0x2f87ebfd, 0x3feaaf1d, 0x75543000, 0x3fd0c629, 0x13816f9f, 0xbd35c56c ), /* row 25 */ /* 1080 */ DATA_4x2( 0x00000000, 0x3ff35000, 0x5130e159, 0x3fea82e6, 0x76bb1000, 0x3fd15fa6, 0x071eeb10, 0xbd3c029a ), /* row 26 */ /* 1112 */ DATA_4x2( 0x00000000, 0x3ff37000, 0x07688a4a, 0x3fea5741, 0xf6d89000, 0x3fd1f825, 0x7972c083, 0xbd1ecd41 ), /* row 27 */ /* 1144 */ DATA_4x2( 0x00000000, 0x3ff39000, 0x87c51ca0, 0x3fea2c2a, 0x35b32000, 0x3fd28fab, 0x0e85a909, 0x3d3a0d8c ), /* row 28 */ /* 1176 */ DATA_4x2( 0x00000000, 0x3ff3b000, 0x1a01a01a, 0x3fea01a0, 0x636b3000, 0x3fd32639, 0x7070fc4b, 0xbd3f2994 ), /* row 29 */ /* 1208 */ DATA_4x2( 0x00000000, 0x3ff3d000, 0x176b682d, 0x3fe9d79f, 0xa0a1e000, 0x3fd3bbd3, 0xe791792d, 0xbd282b53 ), /* row 30 */ /* 1240 */ DATA_4x2( 0x00000000, 0x3ff3f000, 0xea5510da, 0x3fe9ae24, 0xfedd5000, 0x3fd4507c, 0x2fb0019d, 0xbcee3595 ), /* row 31 */ /* 1272 */ DATA_4x2( 0x00000000, 0x3ff41000, 0x0d8ec0ff, 0x3fe9852f, 0x80e90000, 0x3fd4e438, 0x0a38f4e9, 0xbd325811 ), /* row 32 */ /* 1304 */ DATA_4x2( 0x00000000, 0x3ff43000, 0x0be377ae, 0x3fe95cbb, 0x1b338000, 0x3fd57709, 0xe1f94c50, 0xbd3cd53b ), /* row 33 */ /* 1336 */ DATA_4x2( 0x00000000, 0x3ff45000, 0x7f9b2ce6, 0x3fe934c6, 0xb4295000, 0x3fd608f1, 0x3fc62b7e, 0xbd3d49a4 ), /* row 34 */ /* 1368 */ DATA_4x2( 0x00000000, 0x3ff47000, 0x120190d5, 0x3fe90d4f, 0x248cd000, 0x3fd699f5, 0x152150d3, 0x3d32e1a3 ), /* row 35 */ /* 1400 */ DATA_4x2( 0x00000000, 0x3ff49000, 0x7af1373f, 0x3fe8e652, 0x37cbc000, 0x3fd72a16, 0x4d994a2a, 0x3d182943 ), /* row 36 */ /* 1432 */ DATA_4x2( 0x00000000, 0x3ff4b000, 0x8062ff3a, 0x3fe8bfce, 0xac51b000, 0x3fd7b957, 0x7240b049, 0xbd34eea2 ), /* row 37 */ /* 1464 */ DATA_4x2( 0x00000000, 0x3ff4d000, 0xf601899c, 0x3fe899c0, 0x33d86000, 0x3fd847bc, 0x094eee51, 0x3d18dc7c ), /* row 38 */ /* 1496 */ DATA_4x2( 0x00000000, 0x3ff4f000, 0xbcc092b9, 0x3fe87427, 0x73b5c000, 0x3fd8d546, 0xe8492d6e, 0x3d2b8d59 ), /* row 39 */ /* 1528 */ DATA_4x2( 0x00000000, 0x3ff51000, 0xc2780614, 0x3fe84f00, 0x05274000, 0x3fd961f9, 0xb3af5b8d, 0x3d03719e ), /* row 40 */ /* 1560 */ DATA_4x2( 0x00000000, 0x3ff53000, 0x0182a4a0, 0x3fe82a4a, 0x759b2000, 0x3fd9edd6, 0x6c73e71b, 0x3d377e23 ), /* row 41 */ /* 1592 */ DATA_4x2( 0x00000000, 0x3ff55000, 0x80601806, 0x3fe80601, 0x46f7c000, 0x3fda78e1, 0xdfa568f7, 0xbd10bad7 ), /* row 42 */ /* 1624 */ DATA_4x2( 0x00000000, 0x3ff57000, 0x515a4f1d, 0x3fe7e225, 0xefe06000, 0x3fdb031b, 0x805b0aec, 0x3d30d199 ), /* row 43 */ /* 1656 */ DATA_4x2( 0x00000000, 0x3ff59000, 0x922e017c, 0x3fe7beb3, 0xdbf88000, 0x3fdb8c88, 0xd77582e2, 0x3d39e65c ), /* row 44 */ /* 1688 */ DATA_4x2( 0x00000000, 0x3ff5b000, 0x6bb6398b, 0x3fe79baa, 0x6c24d000, 0x3fdc152a, 0x68d6d2d3, 0xbd3468ff ), /* row 45 */ /* 1720 */ DATA_4x2( 0x00000000, 0x3ff5d000, 0x119ac60d, 0x3fe77908, 0xf6ca4000, 0x3fdc9d02, 0xff1e8ea2, 0x3d3ecf4d ), /* row 46 */ /* 1752 */ DATA_4x2( 0x00000000, 0x3ff5f000, 0xc201756d, 0x3fe756ca, 0xc80bf000, 0x3fdd2414, 0xadf6a54a, 0x3d23ea90 ), /* row 47 */ /* 1784 */ DATA_4x2( 0x00000000, 0x3ff61000, 0xc541fe8d, 0x3fe734f0, 0x22065000, 0x3fddaa62, 0x2d6a3aa8, 0xbcf1bfb6 ), /* row 48 */ /* 1816 */ DATA_4x2( 0x00000000, 0x3ff63000, 0x6d9c7c09, 0x3fe71378, 0x3d097000, 0x3fde2fed, 0x912ab9d1, 0x3d24c06f ), /* row 49 */ /* 1848 */ DATA_4x2( 0x00000000, 0x3ff65000, 0x16f26017, 0x3fe6f260, 0x47d16000, 0x3fdeb4b8, 0x68d867f1, 0xbd30c6b0 ), /* row 50 */ /* 1880 */ DATA_4x2( 0x00000000, 0x3ff67000, 0x2681c861, 0x3fe6d1a6, 0x67bcc000, 0x3fdf38c5, 0xf8df4b43, 0x3d350343 ), /* row 51 */ /* 1912 */ DATA_4x2( 0x00000000, 0x3ff69000, 0x0aa31a3d, 0x3fe6b149, 0xb9027000, 0x3fdfbc16, 0x5c999d62, 0xbd3fd771 ), /* row 52 */ /* 1944 */ DATA_4x2( 0x00000000, 0x3ff6b000, 0x3a88d0c0, 0x3fe69147, 0x27726800, 0x3fe01f57, 0x6a042173, 0xbd39006e ), /* row 53 */ /* 1976 */ DATA_4x2( 0x00000000, 0x3ff6d000, 0x3601671a, 0x3fe6719f, 0x19f25000, 0x3fe06047, 0x6e0e0c68, 0xbd24dc16 ), /* row 54 */ /* 2008 */ DATA_4x2( 0x00000000, 0x3ff6f000, 0x853b4aa3, 0x3fe6524f, 0x34f8e000, 0x3fe0a0dc, 0xd8d6cbcf, 0x3d2fbc00 ), /* row 55 */ /* 2040 */ DATA_4x2( 0x00000000, 0x3ff71000, 0xb88ac0de, 0x3fe63356, 0x754d8000, 0x3fe0e117, 0x8aa1aed8, 0xbd3f7762 ), /* row 56 */ /* 2072 */ DATA_4x2( 0x00000000, 0x3ff73000, 0x6831ae94, 0x3fe614b3, 0xd39e1800, 0x3fe120f9, 0x4581174d, 0x3cccb52b ), /* row 57 */ /* 2104 */ DATA_4x2( 0x00000000, 0x3ff75000, 0x34292dfc, 0x3fe5f664, 0x4495e000, 0x3fe16084, 0x378ff59d, 0x3cc81e2b ), /* row 58 */ /* 2136 */ DATA_4x2( 0x00000000, 0x3ff77000, 0xc3ece2a5, 0x3fe5d867, 0xb8f32800, 0x3fe19fb7, 0xf1e559fe, 0xbd3ef474 ), /* row 59 */ /* 2168 */ DATA_4x2( 0x00000000, 0x3ff79000, 0xc647fa91, 0x3fe5babc, 0x1d9cb800, 0x3fe1de95, 0xd2643639, 0x3d3d30c3 ), /* row 60 */ /* 2200 */ DATA_4x2( 0x00000000, 0x3ff7b000, 0xf123ccaa, 0x3fe59d61, 0x5bb6d800, 0x3fe21d1d, 0x785e97ab, 0xbd332e75 ), /* row 61 */ /* 2232 */ DATA_4x2( 0x00000000, 0x3ff7d000, 0x01580560, 0x3fe58056, 0x58b74000, 0x3fe25b51, 0xcb97f73c, 0xbd37dd4b ), /* row 62 */ /* 2264 */ DATA_4x2( 0x00000000, 0x3ff7f000, 0xba7c52e2, 0x3fe56397, 0xf6791800, 0x3fe29931, 0x61311744, 0xbd34fd70 ), /* row 63 */ /* 2296 */ DATA_4x2( 0x00000000, 0x3ff81000, 0xe6bb82fe, 0x3fe54725, 0x13501000, 0x3fe2d6c0, 0x4a7145e3, 0x3d3c0325 ), /* row 64 */ /* 2328 */ DATA_4x2( 0x00000000, 0x3ff83000, 0x56a8054b, 0x3fe52aff, 0x8a1b3800, 0x3fe313fc, 0xdc5befec, 0xbd20dc60 ), /* row 65 */ /* 2360 */ DATA_4x2( 0x00000000, 0x3ff85000, 0xe111c4c5, 0x3fe50f22, 0x32570800, 0x3fe350e8, 0x9b3611ce, 0xbcf38bc9 ), /* row 66 */ /* 2392 */ DATA_4x2( 0x00000000, 0x3ff87000, 0x62dd4c9b, 0x3fe4f38f, 0xe02f6000, 0x3fe38d83, 0x20f1e8c4, 0xbd37b6bf ), /* row 67 */ /* 2424 */ DATA_4x2( 0x00000000, 0x3ff89000, 0xbedc2c4c, 0x3fe4d843, 0x6490b000, 0x3fe3c9d0, 0x3ea4d6f1, 0xbd2eddd3 ), /* row 68 */ /* 2456 */ DATA_4x2( 0x00000000, 0x3ff8b000, 0xdda68fe1, 0x3fe4bd3e, 0x8d38f800, 0x3fe405ce, 0x968271ab, 0xbd3a20a0 ), /* row 69 */ /* 2488 */ DATA_4x2( 0x00000000, 0x3ff8d000, 0xad76014a, 0x3fe4a27f, 0x24c82000, 0x3fe4417f, 0x1adca9a8, 0x3d264adb ), /* row 70 */ /* 2520 */ DATA_4x2( 0x00000000, 0x3ff8f000, 0x22014880, 0x3fe48805, 0xf2d02800, 0x3fe47ce2, 0xe378b903, 0xbd33c8e5 ), /* row 71 */ /* 2552 */ DATA_4x2( 0x00000000, 0x3ff91000, 0x34596066, 0x3fe46dce, 0xbbe49800, 0x3fe4b7fa, 0xe6bca777, 0xbd0aa0e9 ), /* row 72 */ /* 2584 */ DATA_4x2( 0x00000000, 0x3ff93000, 0xe2c776ca, 0x3fe453d9, 0x41a9f000, 0x3fe4f2c7, 0x83f85c08, 0x3d39f3ba ), /* row 73 */ /* 2616 */ DATA_4x2( 0x00000000, 0x3ff95000, 0x30abee4d, 0x3fe43a27, 0x42e47800, 0x3fe52d49, 0x49b8484b, 0x3d2094ef ), /* row 74 */ /* 2648 */ DATA_4x2( 0x00000000, 0x3ff97000, 0x265e5951, 0x3fe420b5, 0x7b86b000, 0x3fe56781, 0xd35fdc18, 0x3cf63d8b ), /* row 75 */ /* 2680 */ DATA_4x2( 0x00000000, 0x3ff99000, 0xd10e6566, 0x3fe40782, 0xa4bf9000, 0x3fe5a170, 0xcbe86c17, 0xbd351ea1 ), /* row 76 */ /* 2712 */ DATA_4x2( 0x00000000, 0x3ff9b000, 0x42a5af07, 0x3fe3ee8f, 0x75084000, 0x3fe5db17, 0x247ab6af, 0x3d23c49c ), /* row 77 */ /* 2744 */ DATA_4x2( 0x00000000, 0x3ff9d000, 0x91aa75c6, 0x3fe3d5d9, 0xa031b000, 0x3fe61476, 0xee46ebe4, 0x3d20899c ), /* row 78 */ /* 2776 */ DATA_4x2( 0x00000000, 0x3ff9f000, 0xd9232955, 0x3fe3bd60, 0xd7719800, 0x3fe64d8e, 0xdf8803d1, 0x3d3f7cc3 ), /* row 79 */ /* 2808 */ DATA_4x2( 0x00000000, 0x3ffa1000, 0x387ac822, 0x3fe3a524, 0xc96f7000, 0x3fe68660, 0x11f8a0ce, 0xbd0e321d ), /* row 80 */ /* 2840 */ DATA_4x2( 0x00000000, 0x3ffa3000, 0xd366088e, 0x3fe38d22, 0x2250d000, 0x3fe6beed, 0xaac2fde9, 0xbd328fa3 ), /* row 81 */ /* 2872 */ DATA_4x2( 0x00000000, 0x3ffa5000, 0xd1c945ee, 0x3fe3755b, 0x8bc5c800, 0x3fe6f734, 0x80f0cdc7, 0xbd2e8597 ), /* row 82 */ /* 2904 */ DATA_4x2( 0x00000000, 0x3ffa7000, 0x5f9f2af8, 0x3fe35dce, 0xad14c800, 0x3fe72f37, 0x174c8d06, 0xbd3281a3 ), /* row 83 */ /* 2936 */ DATA_4x2( 0x00000000, 0x3ffa9000, 0xace01346, 0x3fe34679, 0x2b264000, 0x3fe766f7, 0xea4cc5a4, 0xbd309190 ), /* row 84 */ /* 2968 */ DATA_4x2( 0x00000000, 0x3ffab000, 0xed6a1dfa, 0x3fe32f5c, 0xa8900800, 0x3fe79e73, 0x36c24b74, 0xbd2e03b3 ), /* row 85 */ /* 3000 */ DATA_4x2( 0x00000000, 0x3ffad000, 0x58e9ebb6, 0x3fe31877, 0xc5a07800, 0x3fe7d5ad, 0x4776534a, 0x3d148808 ), /* row 86 */ /* 3032 */ DATA_4x2( 0x00000000, 0x3ffaf000, 0x2ac40260, 0x3fe301c8, 0x20695000, 0x3fe80ca6, 0x72eda08e, 0xbd3039b7 ), /* row 87 */ /* 3064 */ DATA_4x2( 0x00000000, 0x3ffb1000, 0xa1fed14b, 0x3fe2eb4e, 0x54ca3800, 0x3fe8435d, 0x313e79cf, 0xbd118906 ), /* row 88 */ /* 3096 */ DATA_4x2( 0x00000000, 0x3ffb3000, 0x012d50a0, 0x3fe2d50a, 0xfc7b3800, 0x3fe879d3, 0x204507b9, 0x3d3b85f3 ), /* row 89 */ /* 3128 */ DATA_4x2( 0x00000000, 0x3ffb5000, 0x8e5a3711, 0x3fe2bef9, 0xaf16d800, 0x3fe8b00a, 0x9b9239d6, 0xbd3ab8f4 ), /* row 90 */ /* 3160 */ DATA_4x2( 0x00000000, 0x3ffb7000, 0x92f3c105, 0x3fe2a91c, 0x0223d800, 0x3fe8e602, 0x53fcfec0, 0xbd29f781 ), /* row 91 */ /* 3192 */ DATA_4x2( 0x00000000, 0x3ffb9000, 0x5bb804a5, 0x3fe29372, 0x891f1800, 0x3fe91bba, 0xa95f528f, 0xbd1ee969 ), /* row 92 */ /* 3224 */ DATA_4x2( 0x00000000, 0x3ffbb000, 0x38a1ce4d, 0x3fe27dfa, 0xd584e000, 0x3fe95134, 0x63cddadf, 0x3d371b3a ), /* row 93 */ /* 3256 */ DATA_4x2( 0x00000000, 0x3ffbd000, 0x7cd60127, 0x3fe268b3, 0x76da3800, 0x3fe98671, 0xb2827cf0, 0x3cf742a6 ), /* row 94 */ /* 3288 */ DATA_4x2( 0x00000000, 0x3ffbf000, 0x7e9177b2, 0x3fe2539d, 0xfab5d000, 0x3fe9bb70, 0x36337985, 0xbd2b37bd ), /* row 95 */ /* 3320 */ DATA_4x2( 0x00000000, 0x3ffc1000, 0x9717605b, 0x3fe23eb7, 0xecc8e800, 0x3fe9f033, 0xcd0e0880, 0x3d25651c ), /* row 96 */ /* 3352 */ DATA_4x2( 0x00000000, 0x3ffc3000, 0x22a0122a, 0x3fe22a01, 0xd6e7f800, 0x3fea24ba, 0x30409355, 0x3d3bb557 ), /* row 97 */ /* 3384 */ DATA_4x2( 0x00000000, 0x3ffc5000, 0x804855e6, 0x3fe21579, 0x41131800, 0x3fea5906, 0xcc0d43ba, 0xbd34ded0 ), /* row 98 */ /* 3416 */ DATA_4x2( 0x00000000, 0x3ffc7000, 0x12012012, 0x3fe20120, 0xb17e2800, 0x3fea8d16, 0xe6b40f5e, 0xbd1769a8 ), /* row 99 */ /* 3448 */ DATA_4x2( 0x00000000, 0x3ffc9000, 0x3c7fb84c, 0x3fe1ecf4, 0xac991000, 0x3feac0ec, 0xe9e746a4, 0x3d39d941 ), /* row 100 */ /* 3480 */ DATA_4x2( 0x00000000, 0x3ffcb000, 0x672e4abd, 0x3fe1d8f5, 0xb5179000, 0x3feaf488, 0xac74b87f, 0x3d36ad5b ), /* row 101 */ /* 3512 */ DATA_4x2( 0x00000000, 0x3ffcd000, 0xfc1ce059, 0x3fe1c522, 0x4bf8f000, 0x3feb27eb, 0xd646cb9d, 0x3d1148da ), /* row 102 */ /* 3544 */ DATA_4x2( 0x00000000, 0x3ffcf000, 0x67f2bae3, 0x3fe1b17c, 0xf08f9800, 0x3feb5b14, 0x9619fe2f, 0xbd29a197 ), /* row 103 */ /* 3576 */ DATA_4x2( 0x00000000, 0x3ffd1000, 0x19e0119e, 0x3fe19e01, 0x20887000, 0x3feb8e06, 0xd1d92d88, 0x3d3848e9 ), /* row 104 */ /* 3608 */ DATA_4x2( 0x00000000, 0x3ffd3000, 0x83902bdb, 0x3fe18ab0, 0x57f23800, 0x3febc0bf, 0xac948d1a, 0xbd2fa6e2 ), /* row 105 */ /* 3640 */ DATA_4x2( 0x00000000, 0x3ffd5000, 0x191bd684, 0x3fe1778a, 0x11446800, 0x3febf341, 0x05c241a2, 0xbd3aca19 ), /* row 106 */ /* 3672 */ DATA_4x2( 0x00000000, 0x3ffd7000, 0x50fc3201, 0x3fe1648d, 0xc5664800, 0x3fec258b, 0xdf4083bc, 0x3cf455be ), /* row 107 */ /* 3704 */ DATA_4x2( 0x00000000, 0x3ffd9000, 0xa3fdd5c9, 0x3fe151b9, 0xebb5b800, 0x3fec579f, 0x66976b91, 0xbd2a82ed ), /* row 108 */ /* 3736 */ DATA_4x2( 0x00000000, 0x3ffdb000, 0x8d344724, 0x3fe13f0e, 0xfa0db800, 0x3fec897d, 0x64ed16b7, 0xbd3393c6 ), /* row 109 */ /* 3768 */ DATA_4x2( 0x00000000, 0x3ffdd000, 0x89edc0ac, 0x3fe12c8b, 0x64cd0000, 0x3fecbb26, 0x9427dd61, 0xbd385289 ), /* row 110 */ /* 3800 */ DATA_4x2( 0x00000000, 0x3ffdf000, 0x19a74826, 0x3fe11a30, 0x9edc5000, 0x3fecec99, 0x15bb7de4, 0x3d3017eb ), /* row 111 */ /* 3832 */ DATA_4x2( 0x00000000, 0x3ffe1000, 0xbe011080, 0x3fe107fb, 0x19b4c000, 0x3fed1dd8, 0x3917b407, 0x3d3f8649 ), /* row 112 */ /* 3864 */ DATA_4x2( 0x00000000, 0x3ffe3000, 0xfab325a2, 0x3fe0f5ed, 0x4565c800, 0x3fed4ee2, 0x44e2aaee, 0xbd2d54d2 ), /* row 113 */ /* 3896 */ DATA_4x2( 0x00000000, 0x3ffe5000, 0x55826011, 0x3fe0e406, 0x909b2800, 0x3fed7fb8, 0x81400bcf, 0x3d33623c ), /* row 114 */ /* 3928 */ DATA_4x2( 0x00000000, 0x3ffe7000, 0x56359e3a, 0x3fe0d244, 0x68a2f800, 0x3fedb05b, 0xff5e0495, 0x3d3b253d ), /* row 115 */ /* 3960 */ DATA_4x2( 0x00000000, 0x3ffe9000, 0x868b4171, 0x3fe0c0a7, 0x39733800, 0x3fede0cb, 0xa7bb24b2, 0x3d148cd0 ), /* row 116 */ /* 3992 */ DATA_4x2( 0x00000000, 0x3ffeb000, 0x722eecb5, 0x3fe0af2f, 0x6daf7800, 0x3fee1108, 0x9b992dce, 0xbd3b4eb0 ), /* row 117 */ /* 4024 */ DATA_4x2( 0x00000000, 0x3ffed000, 0xa6af8360, 0x3fe09ddb, 0x6eae5800, 0x3fee4113, 0xd82263ed, 0xbd361728 ), /* row 118 */ /* 4056 */ DATA_4x2( 0x00000000, 0x3ffef000, 0xb37565e2, 0x3fe08cab, 0xa47ef800, 0x3fee70ec, 0xfdf33295, 0x3d0bb98a ), /* row 119 */ /* 4088 */ DATA_4x2( 0x00000000, 0x3fff1000, 0x29b8eae2, 0x3fe07b9f, 0x75ee4000, 0x3feea094, 0x31517b71, 0xbd3e308e ), /* row 120 */ /* 4120 */ DATA_4x2( 0x00000000, 0x3fff3000, 0x9c7912fb, 0x3fe06ab5, 0x488bf000, 0x3feed00b, 0x81c547e6, 0xbd3ee547 ), /* row 121 */ /* 4152 */ DATA_4x2( 0x00000000, 0x3fff5000, 0xa0727586, 0x3fe059ee, 0x80afd000, 0x3feeff51, 0x799da52d, 0x3d3f1e32 ), /* row 122 */ /* 4184 */ DATA_4x2( 0x00000000, 0x3fff7000, 0xcc1664c5, 0x3fe04949, 0x817eb800, 0x3fef2e67, 0x8bb672e8, 0x3d0142b0 ), /* row 123 */ /* 4216 */ DATA_4x2( 0x00000000, 0x3fff9000, 0xb78247fc, 0x3fe038c6, 0xacef3800, 0x3fef5d4d, 0x220ccf53, 0xbd241a2f ), /* row 124 */ /* 4248 */ DATA_4x2( 0x00000000, 0x3fffb000, 0xfc7729e9, 0x3fe02864, 0x63ce9000, 0x3fef8c04, 0x7240b4e8, 0xbd3cbb8d ), /* row 125 */ /* 4280 */ DATA_4x2( 0x00000000, 0x3fffd000, 0x36517a37, 0x3fe01824, 0x05c54800, 0x3fefba8c, 0x8ac00d0f, 0xbd390602 ), /* row 126 */ /* 4312 */ DATA_4x2( 0x00000000, 0x3ffff000, 0x02010080, 0x3fe00804, 0xf15bd000, 0x3fefe8e4, 0x9e2442e6, 0x3d2a025d ), /* row 127 */ }; # define POLY_NEAR_M(x,y) y = (((x*(x*x))*(((POLY_ADDRESS_NEAR[1] \ +x*POLY_ADDRESS_NEAR[2])+(x*x)*POLY_ADDRESS_NEAR[3])+(x*(x*x))*(POLY_ADDRESS_NEAR[4]+x*POLY_ADDRESS_NEAR[5]))) \ +(((x*x)*(x*x))*((x*x)*(x*x)))*(((POLY_ADDRESS_NEAR[6]+x*POLY_ADDRESS_NEAR[7])+(x*x)*POLY_ADDRESS_NEAR[8])+(x*(x*x))*(POLY_ADDRESS_NEAR[9] \ +x*POLY_ADDRESS_NEAR[10]))) # define POLY_NEAR_C(x,y) y = ((x*(x*x))*(POLY_ADDRESS_NEAR[1] \ +x*(POLY_ADDRESS_NEAR[2]+x*(POLY_ADDRESS_NEAR[3]+x*(POLY_ADDRESS_NEAR[4]+x*(POLY_ADDRESS_NEAR[5] \ +x*(POLY_ADDRESS_NEAR[6]+x*(POLY_ADDRESS_NEAR[7]+x*(POLY_ADDRESS_NEAR[8]+x*(POLY_ADDRESS_NEAR[9] \ +x*POLY_ADDRESS_NEAR[10])))))))))) # define POLY_NEAR SELECT_POLY(POLY_NEAR_) # define POLY_NEAR_Q_M(x,y) y = ((x*(x*x))*(((B3+(x*x)*B5)+((x*x)*(x*x))*B7)+((x*x)*((x*x)*(x*x)))*(B9+(x*x)*B11))) # define POLY_NEAR_Q_C(x,y) y = ((x*(x*x))*(B3+(x*x)*(B5+(x*x)*(B7+(x*x)*(B9+(x*x)*B11))))) # define POLY_NEAR_Q SELECT_POLY(POLY_NEAR_Q_) # define POLY_AWAY_M(x,y) y = ((x*x)*(((POLY_ADDRESS_AWAY[0]+x*POLY_ADDRESS_AWAY[1]) \ +(x*x)*POLY_ADDRESS_AWAY[2])+(x*(x*x))*(POLY_ADDRESS_AWAY[3]+x*POLY_ADDRESS_AWAY[4]))) # define POLY_AWAY_C(x,y) y = ((x*x)*(POLY_ADDRESS_AWAY[0]+x*(POLY_ADDRESS_AWAY[1] \ +x*(POLY_ADDRESS_AWAY[2]+x*(POLY_ADDRESS_AWAY[3]+x*POLY_ADDRESS_AWAY[4]))))) # define POLY_AWAY SELECT_POLY(POLY_AWAY_) # define POLY_AWAY_Q_M(x,y) y = ((x*(x*x))*((C3+(x*x)*C5)+((x*x)*(x*x))*C7)) # define POLY_AWAY_Q_C(x,y) y = ((x*(x*x))*(C3+(x*x)*(C5+(x*x)*C7))) # define POLY_AWAY_Q SELECT_POLY(POLY_AWAY_Q_) #define LOG_TABLE_NAME __log2_t_table #define TABLE_CONST 7 #define F_ONE *((double *) ((char *)__log2_t_table + 0)) #define POLY_ADDRESS_NEAR ((double *) ((char *)__log2_t_table + 8)) #define POLY_ADD_N_Q ((double *) ((char *)__log2_t_table + 96)) #define B3 POLY_ADD_N_Q[0] #define B5 POLY_ADD_N_Q[1] #define B7 POLY_ADD_N_Q[2] #define B9 POLY_ADD_N_Q[3] #define B11 POLY_ADD_N_Q[4] #define POLY_ADDRESS_AWAY ((double *) ((char *)__log2_t_table + 136)) #define POLY_ADD_A_Q ((double *) ((char *)__log2_t_table + 176)) #define C3 POLY_ADD_A_Q[0] #define C5 POLY_ADD_A_Q[1] #define C7 POLY_ADD_A_Q[2] #define LOG2_HI *((double *) ((char *)__log2_t_table + 200)) #define LOG2_LO *((double *) ((char *)__log2_t_table + 208)) #define LOGE_HI *((double *) ((char *)__log2_t_table + 216)) #define LOGE_HI2 *((double *) ((char *)__log2_t_table + 224)) #define LOGE_LO *((double *) ((char *)__log2_t_table + 232)) #define LOGE_LO2 *((double *) ((char *)__log2_t_table + 240)) #define LOG_F_TABLE 248 #define T1_64 (WORD) 0x3fed900000000000 #define T2_64 (WORD) 0x3ff1380000000000 #define T1_32 (WORD) 0x3fed9000 #define T2_32 (WORD) 0x3ff13800 #define T2_MINUS_T1 (T2 - T1) LIBRARY/float128/mphoc_macros.h0000644€­ Q01134020000004455015113665770015242 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef MPHOC_MACROS_H #define MPHOC_MACROS_H #include "mp.h" #ifndef MPHOC_EXECUTABLE # ifndef ENDIANESS # error ENDIANESS is not defined # else # if (ENDIANESS == big_endian) # define MPHOC_EXECUTABLE mphoc -b # else # define MPHOC_EXECUTABLE mphoc # endif # endif #endif #ifndef GENPOLY_EXECUTABLE # define GENPOLY_EXECUTABLE genpoly #endif /* "MAX" and "MIN" denote a combination of magnitude and sign attributes. */ #define MPHOC_MAX_CHAR ((2 ^ (BITS_PER_CHAR - 1)) - 1) #define MPHOC_MAX_SHORT ((2 ^ (BITS_PER_SHORT - 1)) - 1) #define MPHOC_MAX_INT ((2 ^ (BITS_PER_INT - 1)) - 1) #define MPHOC_MAX_LONG ((2 ^ (BITS_PER_LONG - 1)) - 1) #define MPHOC_MAX_WORD ((2 ^ (BITS_PER_WORD - 1)) - 1) #define MPHOC_MIN_CHAR (-(2 ^ (BITS_PER_CHAR - 1))) #define MPHOC_MIN_SHORT (-(2 ^ (BITS_PER_SHORT - 1))) #define MPHOC_MIN_INT (-(2 ^ (BITS_PER_INT - 1))) #define MPHOC_MIN_LONG (-(2 ^ (BITS_PER_LONG - 1))) #define MPHOC_MIN_WORD (-(2 ^ (BITS_PER_WORD - 1))) #define MPHOC_MAX_U_CHAR ((2 ^ BITS_PER_CHAR) - 1) #define MPHOC_MAX_U_SHORT ((2 ^ BITS_PER_SHORT) - 1) #define MPHOC_MAX_U_INT ((2 ^ BITS_PER_INT) - 1) #define MPHOC_MAX_U_LONG ((2 ^ BITS_PER_LONG) - 1) #define MPHOC_MAX_U_WORD ((2 ^ BITS_PER_WORD) - 1) /* "TINY" and "HUGE" denote only a magnitude attribute. */ #define MPHOC_F_POS_ZERO 0.0 #define MPHOC_F_POS_NORMAL_TINY (2 ^ (F_MIN_BIN_EXP + F_NORM)) #define MPHOC_F_NEG_NORMAL_TINY (-MPHOC_F_POS_NORMAL_TINY) #if IEEE_FLOATING # define MPHOC_F_POS_TINY (MPHOC_F_POS_NORMAL_TINY / 2 ^ (F_PRECISION - 1)) #else # define MPHOC_F_POS_TINY MPHOC_F_POS_NORMAL_TINY #endif #define MPHOC_F_NEG_TINY (-MPHOC_F_POS_TINY) #define MPHOC_F_POS_HUGE (2 ^ (F_MAX_BIN_EXP + F_NORM + 1) * (1 - 1 / (2 ^ F_PRECISION))) #define MPHOC_F_NEG_HUGE (-MPHOC_F_POS_HUGE) #if (F_FORMAT == f_floating) # define MPHOC_F_NAN f:00008000 # define MPHOC_F_NEG_ZERO f:00000000 # define MPHOC_F_POS_INFINITY f:ffff7fff # define MPHOC_F_NEG_INFINITY f:ffffffff #elif (F_FORMAT == d_floating) # define MPHOC_F_NAN d:0000000000008000 # define MPHOC_F_NEG_ZERO d:0000000000000000 # define MPHOC_F_POS_INFINITY d:ffffffffffff7fff # define MPHOC_F_NEG_INFINITY d:ffffffffffffffff #elif (F_FORMAT == g_floating) # define MPHOC_F_NAN g:0000000000008000 # define MPHOC_F_NEG_ZERO g:0000000000000000 # define MPHOC_F_POS_INFINITY g:ffffffffffff7fff # define MPHOC_F_NEG_INFINITY g:ffffffffffffffff #elif (F_FORMAT == h_floating) # error H_floating not supported. #elif (F_FORMAT == s_floating) # define MPHOC_F_NAN s:7fbfffff # define MPHOC_F_NEG_ZERO s:80000000 # define MPHOC_F_POS_INFINITY s:7f800000 # define MPHOC_F_NEG_INFINITY s:ff800000 #elif (F_FORMAT == t_floating) # define MPHOC_F_NAN t:7ff7ffffffffffff # define MPHOC_F_NEG_ZERO t:8000000000000000 # define MPHOC_F_POS_INFINITY t:7ff0000000000000 # define MPHOC_F_NEG_INFINITY t:fff0000000000000 #elif (F_FORMAT == x_floating) # define MPHOC_F_NAN x:7fff7fffffffffffffffffffffffffff # define MPHOC_F_NEG_ZERO x:80000000000000000000000000000000 # define MPHOC_F_POS_INFINITY x:7fff0000000000000000000000000000 # define MPHOC_F_NEG_INFINITY x:ffff0000000000000000000000000000 #else # error Unsupported floating format. #endif #define MPHOC_F_POS_PI 3.1415926535897932384626433832795028841972 #define MPHOC_F_NEG_PI -3.1415926535897932384626433832795028841972 #define MPHOC_F_POS_PI_OVER_2 1.5707963267948966192313216916397514420986 #define MPHOC_F_NEG_PI_OVER_2 -1.5707963267948966192313216916397514420986 /* Obsolete definitions */ #define MP_MAX_POS_SIGNED_INT (2^(BITS_PER_WORD - 1) - 1) #define MP_MAX_UNSIGNED_INT (2^BITS_PER_WORD - 1) #define MP_MIN_NORMAL_FLOAT (2^(F_MIN_BIN_EXP + F_NORM)) #define MP_MAX_FLOAT (2^(F_MAX_BIN_EXP + F_NORM + 1) * (1 - 1/2^F_PRECISION)) #ifdef VAX_FLOATING # define MP_MIN_FLOAT MP_MIN_NORMAL_FLOAT #else # define MP_MIN_FLOAT (MP_MIN_NORMAL_FLOAT/2^(F_PRECISION - 1)) #endif #define MPHOC_S_POS_NORMAL_TINY (2 ^ (S_MIN_BIN_EXP + F_NORM)) #define MPHOC_D_POS_NORMAL_TINY (2 ^ (D_MIN_BIN_EXP + F_NORM)) #if IEEE_FLOATING # define MPHOC_S_POS_TINY \ ( MPHOC_S_POS_NORMAL_TINY / 2 ^ (S_PRECISION - 1) ) # define MPHOC_D_POS_TINY \ ( MPHOC_D_POS_NORMAL_TINY / 2 ^ (D_PRECISION - 1) ) #else # define MPHOC_S_POS_TINY MPHOC_S_POS_NORMAL_TINY # define MPHOC_D_POS_TINY MPHOC_D_POS_NORMAL_TINY #endif #define MPHOC_S_POS_HUGE \ (2 ^ (S_MAX_BIN_EXP + F_NORM + 1) * (1 - 1 / (2 ^ S_PRECISION))) #define MPHOC_D_POS_HUGE \ (2 ^ (D_MAX_BIN_EXP + F_NORM + 1) * (1 - 1 / (2 ^ D_PRECISION))) #define BYTES(n) ((n) >> 3) #define START_STATIC_TABLE(name, offset) \ printf(" static const TABLE_UNION " STR(name) "[] = { \n"); \ offset = 0 #define START_GLOBAL_TABLE(name, offset) \ printf(" const " STR(TABLE_WORD) " " STR(name) "[] = { \n"); \ offset = 0 #define END_TABLE printf("};\n\n") #define TABLE_COMMENT(s) printf("\n\t/* " s " */\n") #define PRINT_1_TYPE_ENTRY(c,x,o) printf("\t/* %3i */ %#.4" STR(c) ",\n", BYTES(o), x); \ o += PASTE(BITS_PER_, c) #define PRINT_2_TYPE_ENTRY(c,x,y,o) printf("\t/* %3i */ %#.4" STR(c) \ ", %#.4" STR(c) ", \n", BYTES(o), x, y); \ o += 2*PASTE(BITS_PER_, c) #define PRINT_1_F_TYPE_ENTRY(x,o) PRINT_1_TYPE_ENTRY(F_CHAR, x, o) #define PRINT_2_F_TYPE_ENTRY(x,y,o) PRINT_2_TYPE_ENTRY(F_CHAR, x, y, o) #define PAD_IF_NEEDED(o, i) while ((i)*floor(o/(i)) != o) { \ printf( "\t/* padding for alignment */ " \ "0x00000000,\n"); \ o += BITS_PER_TABLE_WORD; } #define BITS_PER_f BITS_PER_FLOAT #define BITS_PER_s BITS_PER_FLOAT #define BITS_PER_g BITS_PER_DOUBLE #define BITS_PER_t BITS_PER_DOUBLE #define BITS_PER_x BITS_PER_LONG_DOUBLE #define BITS_PER_w BITS_PER_WORD #define PRINT_TABLE_DEFINE(name,table,offset,type,xxx) \ printf("#define\t" STR(name) "\t" xxx \ "((" STR(type) " *) ((char *)" STR(table) \ " + %i))\n", BYTES(offset)) #define PRINT_TABLE_VALUE_DEFINE(name,table,offset,type) \ PRINT_TABLE_DEFINE(name,table,offset,type,"*") #define PRINT_TABLE_ADDRESS_DEFINE(name,table,offset,type) \ PRINT_TABLE_DEFINE(name,table,offset,type,"") #define BREAK_INTO_HI_LO(x,h,l,p) h = TRUNCATE(x, p); l = x - h /* Some global definitions for the remes program */ #define SET_REMES_ABSOLUTE_ERROR remes_weight = 1 #define SET_REMES_RELATIVE_ERROR remes_weight = 2 #define SET_REMES_GENERAL_ERROR remes_weight = 3 #define SET_REMES_MODE_TO_STATIC remes_mode = 1 #define SET_REMES_MODE_TO_FIND_POLY remes_mode = 2 /* * Format specifiers for print integers in hex format */ #define HEX_FORMAT_FOR_16_BITS "0x%4.4.16i" #define HEX_FORMAT_FOR_32_BITS "0x%8.8.16i" #define HEX_FORMAT_FOR_64_BITS "0x%16.16.16i" #if NEW_DPML_MACROS == 1 /* * Set up default table name and offset for printing macros */ # if !defined(MP_TABLE_NAME) # define MP_TABLE_NAME TABLE_NAME # endif # if !defined(MP_BIT_OFFSET) # define MP_BIT_OFFSET offset # endif # if defined(MAKE_COMMON) # define _START_TABLE START_GLOBAL_TABLE(MP_TABLE_NAME, MP_BIT_OFFSET) # else # define _START_TABLE START_STATIC_TABLE(MP_TABLE_NAME, MP_BIT_OFFSET) # endif # if !defined(START_TABLE) # define START_TABLE _START_TABLE # endif #undef END_TABLE #define END_TABLE printf("\t};\n\n") # if !defined(MP_T_TYPE) # define MP_T_TYPE F_TYPE # define MP_T_CHAR F_CHAR # define MP_T_PRECISION F_PRECISION # endif # define W_CHAR w # define U_CHAR u # define BITS_PER_u BITS_PER_WORD # define f_TYPE float # define s_TYPE float # define g_TYPE double # define t_TYPE double # define x_TYPE long double # define w_TYPE WORD # define u_TYPE U_WORD # define f_FMT "%#.4f" # define s_FMT "%#.4s" # define g_FMT "%#.4g" # define t_FMT "%#.4t" # define x_FMT "%#.4x" # if (BITS_PER_WORD <= 32) # define w_FMT "%#8.4.16i" # define u_FMT "%#8.4.16i" # else # define w_FMT "%#16.4.16i" # define u_FMT "%#16.4.16i" # endif # define CHAR_TO_TYPE(tchar) PASTE(tchar,_TYPE) # define CHAR_TO_BITS(tchar) PASTE(BITS_PER_, tchar) # define CHAR_TO_FMT(tchar) PASTE(tchar, _FMT) # define PRINT_TBL_DEF(name, table, offset, tchar, xxx) \ printf("#define\t" name "\t" xxx "((" STR(CHAR_TO_TYPE(tchar)) \ " *) ((char *) " STR(table) " + %i))\n", BYTES(offset)) # define PRINT_TYPED_TBL_ITEM(v,tchar) \ printf( "\t/* %3i */ " CHAR_TO_FMT(tchar) \ ",\n", BYTES(MP_BIT_OFFSET), v); \ MP_BIT_OFFSET += CHAR_TO_BITS(tchar) # define PRINT_TYPED_TBL_VDEF(name, tchar) \ PRINT_TBL_DEF(name, MP_TABLE_NAME, MP_BIT_OFFSET, \ tchar, "*") # define PRINT_TYPED_TBL_ADEF(name, tchar) \ PRINT_TBL_DEF(name, MP_TABLE_NAME, MP_BIT_OFFSET, \ tchar, "") # define PRINT_TYPED_TBL_VDEF_ITEM(n,v,tchar) \ PRINT_TYPED_TBL_VDEF(n, tchar); PRINT_TYPED_TBL_ITEM(v, tchar) # define PRINT_TYPED_TBL_ADEF_ITEM(n,v,tchar) \ PRINT_TYPED_TBL_ADEF(n, tchar); PRINT_TYPED_TBL_ITEM(v, tchar) # define PRINT_TYPED_COM_VDEF(c,n,tchar) \ TABLE_COMMENT(c); PRINT_TYPED_TBL_VDEF(n,tchar) # define PRINT_TYPED_COM_ADEF(c,n,tchar) \ TABLE_COMMENT(c); PRINT_TYPED_TBL_ADEF(n,tchar) # define PRINT_TYPED_TBL_COM_VDEF_ITEM(c,n,v,tchar) \ TABLE_COMMENT(c); PRINT_TYPED_TBL_VDEF_ITEM(n,v,tchar) # define PRINT_TYPED_TBL_COM_ADEF_ITEM(c,n,v,tchar) \ TABLE_COMMENT(c); PRINT_TYPED_BL_ADEF_ITEM(n,v,tchar) # define PRINT_TBL_ITEM(v) PRINT_TYPED_TBL_ITEM(v, MP_T_CHAR) # define PRINT_TBL_VDEF(n) PRINT_TYPED_TBL_VDEF(n, MP_T_CHAR) # define PRINT_TBL_ADEF(n) PRINT_TYPED_TBL_ADEF(n, MP_T_CHAR) # define PRINT_TBL_VDEF_ITEM(n,v) PRINT_TYPED_TBL_VDEF_ITEM(n,v,MP_T_CHAR) # define PRINT_TBL_ADEF_ITEM(n,v) PRINT_TYPED_TBL_ADEF_ITEM(n,v,MP_T_CHAR) # define PRINT_TBL_COM_VDEF(c,n) PRINT_TYPED_COM_VDEF(c,n,MP_T_CHAR) # define PRINT_TBL_COM_ADEF(c,n) PRINT_TYPED_COM_ADEF(c,n,MP_T_CHAR) # define PRINT_TBL_COM_VDEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_VDEF_ITEM(c,n,v,MP_T_CHAR) # define PRINT_TBL_COM_ADEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_ADEF_ITEM(c,n,v,MP_T_CHAR) # define PRINT_R_TBL_ITEM(v) PRINT_TYPED_TBL_ITEM(v,R_CHAR) # define PRINT_R_TBL_VDEF(n) PRINT_TYPED_TBL_VDEF(n,R_CHAR) # define PRINT_R_TBL_ADEF(n) PRINT_TYPED_TBL_ADEF(n,R_CHAR) # define PRINT_R_TBL_VDEF_ITEM(n,v) PRINT_TYPED_TBL_VDEF_ITEM(n,v,R_CHAR) # define PRINT_R_TBL_ADEF_ITEM(n,v) PRINT_TYPED_TBL_ADEF_ITEM(n,v,R_CHAR) # define PRINT_R_TBL_COM_VDEF(c,n) PRINT_TYPED_COM_VDEF(c,n,R_CHAR) # define PRINT_R_TBL_COM_ADEF(c,n) PRINT_TYPED_COM_ADEF(c,n,R_CHAR) # define PRINT_R_TBL_COM_VDEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_VDEF_ITEM(c,n,v,R_CHAR) # define PRINT_R_TBL_COM_ADEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_ADEF_ITEM(c,n,v,R_CHAR) # define PRINT_F_TBL_ITEM(v) PRINT_TYPED_TBL_ITEM(v,F_CHAR) # define PRINT_F_TBL_VDEF(n) PRINT_TYPED_TBL_VDEF(n,F_CHAR) # define PRINT_F_TBL_ADEF(n) PRINT_TYPED_TBL_ADEF(n,F_CHAR) # define PRINT_F_TBL_VDEF_ITEM(n,v) PRINT_TYPED_TBL_VDEF_ITEM(n,v,F_CHAR) # define PRINT_F_TBL_ADEF_ITEM(n,v) PRINT_TYPED_TBL_ADEF_ITEM(n,v,F_CHAR) # define PRINT_F_TBL_COM_VDEF(c,n) PRINT_TYPED_COM_VDEF(c,n,F_CHAR) # define PRINT_F_TBL_COM_ADEF(c,n) PRINT_TYPED_COM_ADEF(c,n,F_CHAR) # define PRINT_F_TBL_COM_VDEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_VDEF_ITEM(c,n,v,F_CHAR) # define PRINT_F_TBL_COM_ADEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_ADEF_ITEM(c,n,v,F_CHAR) # define PRINT_B_TBL_ITEM(v) PRINT_TYPED_TBL_ITEM(v,B_CHAR) # define PRINT_B_TBL_VDEF(n) PRINT_TYPED_TBL_VDEF(n,B_CHAR) # define PRINT_B_TBL_ADEF(n) PRINT_TYPED_TBL_ADEF(n,B_CHAR) # define PRINT_B_TBL_VDEF_ITEM(n,v) PRINT_TYPED_TBL_VDEF_ITEM(n,v,B_CHAR) # define PRINT_B_TBL_ADEF_ITEM(n,v) PRINT_TYPED_TBL_ADEF_ITEM(n,v,B_CHAR) # define PRINT_B_COM_VDEF(c,n) PRINT_TYPED_COM_VDEF(c,n,B_CHAR) # define PRINT_B_COM_ADEF(c,n) PRINT_TYPED_COM_ADEF(c,n,B_CHAR) # define PRINT_B_TBL_COM_VDEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_VDEF_ITEM(c,n,v,B_CHAR) # define PRINT_B_TBL_COM_ADEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_ADEF_ITEM(c,n,v,B_CHAR) # define PRINT_W_TBL_ITEM(v) PRINT_TYPED_TBL_ITEM(v,W_CHAR) # define PRINT_W_TBL_VDEF(n) PRINT_TYPED_TBL_VDEF(n,W_CHAR) # define PRINT_W_TBL_ADEF(n) PRINT_TYPED_TBL_ADEF(n,W_CHAR) # define PRINT_W_TBL_VDEF_ITEM(n,v) PRINT_TYPED_TBL_VDEF_ITEM(n,v,W_CHAR) # define PRINT_W_TBL_ADEF_ITEM(n,v) PRINT_TYPED_TBL_ADEF_ITEM(n,v,W_CHAR) # define PRINT_W_COM_VDEF(c,n) PRINT_TYPED_COM_VDEF(c,n,W_CHAR) # define PRINT_W_COM_ADEF(c,n) PRINT_TYPED_COM_ADEF(c,n,W_CHAR) # define PRINT_W_TBL_COM_VDEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_VDEF_ITEM(c,n,v,W_CHAR) # define PRINT_W_TBL_COM_ADEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_ADEF_ITEM(c,n,v,W_CHAR) # define PRINT_U_TBL_ITEM(v) PRINT_TYPED_TBL_ITEM(v,U_CHAR) # define PRINT_U_TBL_VDEF(n) PRINT_TYPED_TBL_VDEF(n,U_CHAR) # define PRINT_U_TBL_ADEF(n) PRINT_TYPED_TBL_ADEF(n,U_CHAR) # define PRINT_U_TBL_VDEF_ITEM(n,v) PRINT_TYPED_TBL_VDEF_ITEM(n,v,U_CHAR) # define PRINT_U_TBL_ADEF_ITEM(n,v) PRINT_TYPED_TBL_ADEF_ITEM(n,v,U_CHAR) # define PRINT_U_COM_VDEF(c,n) PRINT_TYPED_COM_VDEF(c,n,U_CHAR) # define PRINT_U_COM_ADEF(c,n) PRINT_TYPED_COM_ADEF(c,n,U_CHAR) # define PRINT_U_TBL_COM_VDEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_VDEF_ITEM(c,n,v,U_CHAR) # define PRINT_U_TBL_COM_ADEF_ITEM(c,n,v) PRINT_TYPED_TBL_COM_ADEF_ITEM(c,n,v,U_CHAR) # define I16_HEX_FORMAT "0x%4.4.16i" # define I32_HEX_FORMAT "0x%8.8.16i" # define I64_HEX_FORMAT "0x%16.16.16i" # define WORD_HEX_FORMAT PASTE_3(I, BITS_PER_WORD, _HEX_FORMAT) # define PRINT_ITYPE_DEF(name, value, itype, format) \ printf("#define\t" name "\t(( " STR(itype) " ) " format " )\n", value) # define PRINT_WORD_DEF(n, v) PRINT_ITYPE_DEF(n, v, WORD, WORD_HEX_FORMAT) # define PRINT_I32_DEF( n, v) PRINT_ITYPE_DEF(n, v, INT_32, I32_HEX_FORMAT) # define PRINT_I64_DEF( n, v) PRINT_ITYPE_DEF(n, v, INT_64, I64_HEX_FORMAT) # define PRINT_U_WORD_DEF(n, v) PRINT_ITYPE_DEF(n, v, U_WORD, WORD_HEX_FORMAT) # define PRINT_U32_DEF( n, v) PRINT_ITYPE_DEF(n, v, U_INT_32, I32_HEX_FORMAT) # define PRINT_U64_DEF( n, v) PRINT_ITYPE_DEF(n, v, U_INT_64, I64_HEX_FORMAT) # define MP_RN 0 /* ieee round to nearest */ # define MP_RZ 1 /* ieee round to zero (i.e. chop) */ # define MP_RP 2 /* ieee round to positive infinity */ # define MP_RM 3 /* ieee round to minus infinity */ # define PRINT_TYPED_ARRAY(array, first, last, scale, type) \ { \ auto i, tmp; \ tmp = scale^first; \ for (i = first; i <= last; i++) \ { \ PRINT_1_TYPE_ENTRY(type, array[i]*tmp, MP_BIT_OFFSET); \ tmp *= scale; \ } \ } # define PRINT_R_ARRAY(a,f,l,s) PRINT_TYPED_ARRAY(a,f,l,s,R_CHAR) # define PRINT_F_ARRAY(a,f,l,s) PRINT_TYPED_ARRAY(a,f,l,s,F_CHAR) # define PRINT_B_ARRAY(a,f,l,s) PRINT_TYPED_ARRAY(a,f,l,s,B_CHAR) #if IEEE_FLOATING # define MPHOC_R_DENORM_FACTOR 2^(1 - R_PRECISION) # define MPHOC_F_DENORM_FACTOR 2^(1 - F_PRECISION) # define MPHOC_B_DENORM_FACTOR 2^(1 - B_PRECISION) #else # define MPHOC_R_DENORM_FACTOR 1 # define MPHOC_F_DENORM_FACTOR 1 # define MPHOC_B_DENORM_FACTOR 1 #endif #define MPHOC_R_POS_NORMAL_TINY (2 ^ (R_MIN_BIN_EXP + R_NORM)) #define MPHOC_R_POS_TINY (MPHOC_R_POS_NORMAL_TINY*MPHOC_R_DENORM_FACTOR) #define MPHOC_R_POS_HUGE (2^(R_MAX_BIN_EXP + R_NORM + 1)*(1 - 2^(-R_PRECISION))) #define MPHOC_R_NEG_NORMAL_TINY (-MPHOC_R_POS_NORMAL_TINY) #define MPHOC_R_NEG_TINY (-MPHOC_R_POS_TINY) #define MPHOC_R_NEG_HUGE (-MPHOC_R_POS_HUGE) #define MPHOC_B_POS_NORMAL_TINY (2 ^ (B_MIN_BIN_EXP + B_NORM)) #define MPHOC_B_POS_TINY (MPHOC_B_POS_NORMAL_TINY*MPHOC_B_DENORM_FACTOR) #define MPHOC_B_POS_HUGE (2^(B_MAX_BIN_EXP + B_NORM + 1)*(1 - 2^(-B_PRECISION))) #define MPHOC_B_NEG_NORMAL_TINY (-MPHOC_B_POS_NORMAL_TINY) #define MPHOC_B_NEG_TINY (-MPHOC_B_POS_TINY) #define MPHOC_B_NEG_HUGE (-MPHOC_B_POS_HUGE) #define _GENPOLY(coef, name, _offset, options, _degree) \ printf(STR(GENPOLY_EXECUTABLE one degree=%i cn=), _degree); \ printf(STR(STR(coef) define=)); \ printf(STR(STR(name) offset=%i options), _offset); \ printf(" ; echo \"\"\n" ) #define GENPOLY(coef, name, _degree) \ printf(STR(GENPOLY_EXECUTABLE one degree=%i cn=), _degree); \ printf(STR(STR(coef) define=)); \ printf(STR(STR(name))); \ printf(" ; echo \"\"\n" ) #endif /* defined(NEW_MPHOC_MACROS) */ #endif /* MPHOC_MACROS_H */ LIBRARY/float128/dpml_ux_exp.c0000644€­ Q01134020000007146415113665770015113 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BASE_NAME exp #include "dpml_ux.h" #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif extern _X_FLOAT PACKED_CONSTANT_TABLE[ LAST_CONS_INDEX ]; /* ** UX_EXP_REDUCE performs argument reduction for the exponential family of ** functions. Given and input argument, x, UX_EXP_REDUCE computes the reduced ** argument, z, and the scale factor, s, as: ** ** lnb*x = s*ln2 + z, |z| < ln2/2 ** ** where b is equal to e or 10. If |x| > 2^16, UX_EXP_REDUCE returns a value of ** s and z that will force underflow or overflow in the pack routine. */ #if !defined(UX_EXP_REDUCE) # define UX_EXP_REDUCE __INTERNAL_NAME(ux_exp_reduce__) #endif static WORD UX_EXP_REDUCE(UX_FLOAT * orig_argument, UX_FLOAT * reduced_argument, UX_FRACTION_DIGIT_TYPE * constants ) { U_WORD shift, reduce_constant_exp; UX_SIGN_TYPE sign; UX_EXPONENT_TYPE exponent, scale_exponent; UX_FRACTION_DIGIT_TYPE scale, msd, lsd; UX_FLOAT ux_scale, tmp; exponent = G_UX_EXPONENT(orig_argument); sign = G_UX_SIGN(orig_argument); reduce_constant_exp = constants[2]; if ( (UX_UNSIGNED_EXPONENT_TYPE) (exponent + 1 - reduce_constant_exp) > 18) { /* Either no reduction is necessary, or exponent > 17 */ scale = 0; UX_COPY(orig_argument, reduced_argument); if (exponent > 0) { /* exponent > 17, force underflow or overflow */ P_UX_EXPONENT(reduced_argument, -128); scale = sign ? UX_UNDERFLOW_EXPONENT : UX_OVERFLOW_EXPONENT; } return scale; } /* ** Given an input argument of the form x = 2^n*f, we want to compute ** lnb*x = scale*ln2 + z, |z| <= ln2/2. Or equivalently, scale = ** nint(x*lnb/ln2) and z = scale*ln2. Suppose, the number of bits in a ** fraction digit is k, and we define K = 2^k. Further suppose that F is ** the high k-1 bits of f and L is the high k bits of lnb/ln2. Then ** ** scale = nint(x*lnb/ln2) ** = nint[ 2^n*f*(lnb/ln2) ] ** ~ nint{ 2^n*[F/(K/2)]*[L/(K/4)] } ** = nint{ 2^(n+3)*(F*L)/K^2 } ** = nint{ 2^(n+3)*[ Hi(F*L)*K + Lo(F*L) ]/K^2 } ** ~ nint{ 2^(n+3)*H(F*L)/K } ** = nint{ H(F*L)/2^(k - n - 3) } ** ** so that we can compute scale by computing the high k bits of F*L and ** "shifting" right k-n-3 bits. Since we want to multiply by scale, ** we actually mask out the low order bits after rounding. Note that ** since we took only the high k-1 bits of f, there is no possibility ** of a carry out on the round. */ msd = G_UX_MSD(orig_argument) >> 1; UMULH( msd, constants[0], scale); shift = (BITS_PER_UX_FRACTION_DIGIT_TYPE - 3) - exponent; scale += SET_BIT(shift - 1); scale &= -SET_BIT(shift); /* ** Now compute (x - scale*high_bits_of_ln2) - scale*low_bits_of_ln2 ** Begin by make sure scale is normalized. It could have at most two ** leading zeros */ while ((UX_SIGNED_FRACTION_DIGIT_TYPE) scale > 0) { scale += scale; shift++; } /* ** Get scale*high_bits_of_ln2 and subtract from x. Theres a small ** complication that needs to be dealt with here: When computing ** scale*high_bits_of_ln2, it may be unnormalized by one bit. Which ** causes x to be right shifted one bit on the subtraction, there by ** losing the last bit of x. Most of the time, this is unimportant. ** However, for very large arguments with a non-zero lsb, this results ** in very large error in the final answer, so we need to normalize ** scale*high_bits_of_ln2 before subtracting */ scale_exponent = BITS_PER_UX_FRACTION_DIGIT_TYPE - shift; EXTENDED_DIGIT_MULTIPLY(scale, constants[1], msd, lsd); exponent = scale_exponent; if (((UX_SIGNED_FRACTION_DIGIT_TYPE) msd) > 0) { exponent--; msd = (msd + msd) + (lsd >> (BITS_PER_UX_FRACTION_DIGIT_TYPE - 1)); lsd += lsd; } /* adjust the product exponent by the exponent of the constant */ UX_SET_SIGN_EXP_MSD(&tmp, sign, exponent + reduce_constant_exp, msd); P_UX_FRACTION_DIGIT(&tmp, 1, lsd); ADDSUB(orig_argument, &tmp, SUB, &tmp); /* scale*low_bits_of_ln2 and subtract from x - scale*high_bits_of_ln2 */ UX_SET_SIGN_EXP_MSD(&ux_scale, sign, scale_exponent, scale); MULTIPLY(&ux_scale, (UX_FLOAT *)&constants[3], reduced_argument); ADDSUB(&tmp, reduced_argument, SUB | NO_NORMALIZATION, reduced_argument); scale >>= shift; scale = (sign) ? -scale : scale; return scale; } /* ** UX_EXP_COMMON is the unpacked interface to routine that will compute b^x for ** b = e or 10. It calls UX_EXP_REDUCE to get the exponent and reduced ** argument and then evaluates the exp polynomial */ #if !defined(UX_EXP_COMMON) # define UX_EXP_COMMON __INTERNAL_NAME(ux_exp_common__) #endif void UX_EXP_COMMON( UX_FLOAT * unpacked_argument, UX_FLOAT * unpacked_result, UX_FRACTION_DIGIT_TYPE * constant_table) { UX_EXPONENT_TYPE scale; UX_FLOAT reduced_argument; /* Get reduced argument */ scale = UX_EXP_REDUCE(unpacked_argument, &reduced_argument, constant_table); /* Compute e^reduced_argument */ EVALUATE_RATIONAL( &reduced_argument, (FIXED_128 *) &constant_table[EXP_COEF_INDEX], constant_table[EXP_DEGREE_INDEX], NUMERATOR_FLAGS(STANDARD), unpacked_result); /* Scale e^reduced_argument */ UX_INCR_EXPONENT(unpacked_result, scale); } /* ** UX_EXP is the unpacked interface to the exponential routine. It calls ** UX_EXP_COMMONN routine to compute its result. */ #if !defined(UX_EXP) # define UX_EXP __INTERNAL_NAME(ux_exp__) #endif void UX_EXP( UX_FLOAT * unpacked_argument, UX_FLOAT * unpacked_result) { UX_EXP_COMMON(unpacked_argument, unpacked_result, EXP_CONSTANT_TABLE_ADDRESS); } /* ** F_EXP_NAME is the user level packed x-float exp routine */ #undef F_ENTRY_NAME #define F_ENTRY_NAME F_EXP_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { WORD fp_class; UX_FLOAT unpacked_argument, unpacked_result; EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; fp_class = UNPACK( PASS_ARG_X_FLOAT(packed_argument), & unpacked_argument, EXP_CLASS_TO_ACTION_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); if (0 > fp_class) RETURN_X_FLOAT(packed_result); UX_EXP( &unpacked_argument, &unpacked_result); PACK( &unpacked_result, PASS_RET_X_FLOAT(packed_result), EXP_UNDERFLOW, EXP_OVERFLOW OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } /* ** F_EXPM1_NAME is the packed x-float expm1 function. F_EXPM1_NAME exam the ** size of the reduced argument. If it is small enough, a direct polynomial ** evaluation is perform. Otherwise, UX_EXP computes expm1(x) = exp(x) - 1 */ #undef F_ENTRY_NAME #define F_ENTRY_NAME F_EXPM1_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { WORD fp_class; UX_EXPONENT_TYPE scale; UX_FLOAT unpacked_argument, unpacked_result, reduced_argument, one; UX_FRACTION_DIGIT_TYPE * constants; EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; fp_class = UNPACK( PASS_ARG_X_FLOAT(packed_argument), & unpacked_argument, EXPM1_CLASS_TO_ACTION_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO); if (0 > fp_class) RETURN_X_FLOAT(packed_result); constants = EXP_CONSTANT_TABLE_ADDRESS; scale = UX_EXP_REDUCE( &unpacked_argument, &reduced_argument, constants); if (scale == 0) { /* ** abs(reduced_argument) < ln2/2. computing expm1(x) as ** exp(x) - 1, could result in a serve loss of significance, ** so use a direct polynomial evaluation instead. We use the ** low EXP_COEF_ARRAY_DEGREE - 1 terms of the exp polynomial. ** This has the side effect that the exponent field of the ** result is 1 to small. */ EVALUATE_RATIONAL( &reduced_argument, (FIXED_128 *) &constants[EXP_COEF_INDEX], constants[EXP_DEGREE_INDEX] - 1, NUMERATOR_FLAGS(POST_MULTIPLY),/* Post multiply by x */ &unpacked_result); UX_INCR_EXPONENT(&unpacked_result, 1); } else { /* ** Compute expm1(x) = exp(x) - 1. Since |scale| >= 1, ** exp(x) <= 1/sqrt(2) and exp(x) >= sqrt(2) */ EVALUATE_RATIONAL( &reduced_argument, (FIXED_128 *) &constants[EXP_COEF_INDEX], constants[EXP_DEGREE_INDEX], NUMERATOR_FLAGS(STANDARD), &unpacked_result); UX_INCR_EXPONENT(&unpacked_result, scale); ADDSUB( &unpacked_result, UX_ONE, SUB | NO_NORMALIZATION | MAGNITUDE_ONLY, &unpacked_result ); } PACK( &unpacked_result, PASS_RET_X_FLOAT(packed_result), NOT_USED, EXPM1_OVERFLOW OPT_EXCEPTION_INFO); RETURN_X_FLOAT(packed_result); } /* ** F_EXP10_NAME is the user level packed x-float exp10 routine */ #undef F_ENTRY_NAME #define F_ENTRY_NAME F_EXP10_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { WORD fp_class; UX_FLOAT unpacked_argument, unpacked_result; EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; fp_class = UNPACK( PASS_ARG_X_FLOAT(packed_argument), & unpacked_argument, EXP_CLASS_TO_ACTION_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); if (0 > fp_class) RETURN_X_FLOAT(packed_result); UX_EXP_COMMON( &unpacked_argument, &unpacked_result, EXP10_CONSTANT_TABLE_ADDRESS); PACK( &unpacked_result, PASS_RET_X_FLOAT(packed_result), EXP_UNDERFLOW, EXP_OVERFLOW OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } /* ** UX_HYPERBOLIC is the core processing for hyperbolic function of an unpacked ** argument. Depending on the evaluation flags to UX_HYPERBOLIC, it computes ** one of sinh, cosh, sinhcosh or tanh. In order to promote "efficiency" and ** clarity, then evaluation flags are divided into three separate fields ** containing (somewhat redundant) evaluation information. One field contains ** the function to be evaluated (SINH, COSH, SINHCOSH or TANH); one field ** contains the appropriate evaluation flags for EVALUATION_RATIONAL; and ** one field containing the opcode to be used by the ADDSUB routine */ #define __FLAGS(i,w,p) (((i) >> (p)) & MAKE_MASK(w,0)) #define EVAL_RATIONAL_POS 0 #define EVAL_RATIONAL_WIDTH (2*NUM_DEN_FIELD_WIDTH + 3) #define EVAL_RATIONAL_FLAGS(i) __FLAGS(i,EVAL_RATIONAL_WIDTH,EVAL_RATIONAL_POS) #define SINH_EVAL ( NUMERATOR_FLAGS( SQUARE_TERM | POST_MULTIPLY ) | SKIP) #define COSH_EVAL ( SKIP | DENOMINATOR_FLAGS(SQUARE_TERM)) #define TANH_EVAL ( NUMERATOR_FLAGS( SQUARE_TERM | POST_MULTIPLY ) | \ DENOMINATOR_FLAGS(SQUARE_TERM) ) #define SINHCOSH_EVAL ( TANH_EVAL | NO_DIVIDE ) #define ADDSUB_POS (EVAL_RATIONAL_WIDTH + EVAL_RATIONAL_POS) #define ADDSUB_WIDTH 2 #define ADDSUB_FLAGS(i) __FLAGS(i, ADDSUB_WIDTH, ADDSUB_POS) #define FUNC_CODE_POS (ADDSUB_POS + ADDSUB_WIDTH) #define SINH (1 << FUNC_CODE_POS) #define COSH (2 << FUNC_CODE_POS) #define SINHCOSH (4 << FUNC_CODE_POS) #define TANH (8 << FUNC_CODE_POS) #define EVAL_FLAGS(f,r,a) ( (f) | ((r) << EVAL_RATIONAL_POS) | \ ((a) << ADDSUB_POS)) #define UX_HYPERBOLIC __INTERNAL_NAME(ux_hyperbolic__) void UX_HYPERBOLIC( UX_FLOAT * unpacked_argument, WORD evaluation_flags, UX_FLOAT * unpacked_result) { UX_EXPONENT_TYPE scale; UX_SIGN_TYPE sign; UX_FLOAT reduced_argument, tmp[2]; /* ** save sign of input and its absolute value before performing ** argument reduction, x = I*ln2 + z, |z| < ln2/2. Note that ** if this is a cosh(x) evaluation, we treat the sign as positive. */ sign = G_UX_SIGN(unpacked_argument); P_UX_SIGN(unpacked_argument, 0); sign = ( evaluation_flags & COSH ) ? 0 : sign; scale = UX_EXP_REDUCE( unpacked_argument, &reduced_argument, EXP_CONSTANT_TABLE_ADDRESS); /* ** if scale == 0, then abs(x) < ln2/2 ==> sinh(x) or tanh(x) may have ** a loss of significance if computed via the definition, so compute ** by polynomial instead. Otherwise, we compute exp(z) and ** exp(-z) as cosh(z) + sinh(z) and cosh(z) - sinh(z) respectively. ** So, if scale == 0, used the passed in evaluation flags, otherwise ** Force a SINHCOSH evaluation. */ EVALUATE_RATIONAL( &reduced_argument, SINHCOSH_COEF_ARRAY, SINHCOSH_COEF_ARRAY_DEGREE, (scale == 0) ? EVAL_RATIONAL_FLAGS(evaluation_flags) : SINHCOSH_EVAL, unpacked_result ); if (scale) { /* ** We want to compute sinh(x)/cosh(x) = (exp(x) -/+ exp(-x))/2. ** Begin by computing exp(z) and exp(-z) and then scale them ** to get exp(x)/2 and exp(-x)/2. */ ADDSUB( &unpacked_result[1], /* cosh(z) */ &unpacked_result[0], /* sinh(z) */ ADD_SUB | NO_NORMALIZATION, &tmp[0] /* exp(z):exp(-z)*/ ); UX_INCR_EXPONENT(&tmp[0], (scale - 1)); UX_DECR_EXPONENT(&tmp[1], (scale + 1)); /* ** Now add/sub exp(x)/2 and exp(-x)/2 to get sinh/cosh, if this ** is a tanh evaluation, do the divide */ ADDSUB( &tmp[0], /* exp(x)/2 */ &tmp[1], /* exp(-x)/2 */ ADDSUB_FLAGS(evaluation_flags) | MAGNITUDE_ONLY | NO_NORMALIZATION, &unpacked_result[0] /* sinh(x)/cosh(x) */ ); if (evaluation_flags & TANH) DIVIDE(&unpacked_result[0], &unpacked_result[1], FULL_PRECISION, &unpacked_result[0]); } P_UX_SIGN(unpacked_result, sign); } /* ** C_UX_HYPERBOLIC is the common processing routine for the hyperbolic ** routines: sinh, cosh, sinhcosh and tanh. It unpacks the input argument, ** calls UX_HYPERBOLIC to computes sinh, cosh, sinhcosh or tanh, and packs the ** results. */ #define C_UX_HYPERBOLIC __INTERNAL_NAME(C_ux_hyperbolic__) static void C_UX_HYPERBOLIC( _X_FLOAT * packed_result, _X_FLOAT * packed_argument, U_WORD const * class_to_action_map, WORD evaluation_flags, WORD overflow_code OPT_EXCEPTION_INFO_DECLARATION ) { WORD fp_class; UX_FLOAT unpacked_argument, unpacked_result[2]; fp_class = UNPACK( packed_argument, &unpacked_argument, class_to_action_map, &packed_result[0] OPT_EXCEPTION_INFO_ARGUMENT ); if (0 > fp_class) { /* If this is a SINHCOSH evaluation, write second result */ if (evaluation_flags & SINHCOSH) { (void) UNPACK( packed_argument, &unpacked_argument, COSH_CLASS_TO_ACTION_MAP, &packed_result[1] OPT_EXCEPTION_INFO_ARGUMENT ); } return; } UX_HYPERBOLIC( &unpacked_argument, evaluation_flags, &unpacked_result[0]); PACK( &unpacked_result[0], packed_result, NOT_USED, overflow_code OPT_EXCEPTION_INFO_ARGUMENT ); if (evaluation_flags & SINHCOSH) /* This was a sinhcosh evaluation */ PACK( &unpacked_result[1], &packed_result[1], NOT_USED, COSH_OVERFLOW OPT_EXCEPTION_INFO_ARGUMENT ); } /* ** F_SINH_NAME, F_COSH_NAME, F_SINHCOSH_NAME and F_TANH_NAME are the packed ** x-float sinh, cosh, sinhcosh and tanh routines. Each of these routines ** simply invokes the common routine C_UX_HYPERBOLIC to unpack its arguments, ** compute the result and pack it. */ #undef F_ENTRY_NAME #define F_ENTRY_NAME F_SINH_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_HYPERBOLIC( PASS_RET_X_FLOAT(packed_result), PASS_ARG_X_FLOAT(packed_argument), SINH_CLASS_TO_ACTION_MAP, EVAL_FLAGS( SINH, SINH_EVAL, SUB ), PACKED_ARG_IS_NEG(packed_argument) ? SINH_NEG_OVERFLOW : SINH_OVERFLOW OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_COSH_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_HYPERBOLIC( PASS_RET_X_FLOAT(packed_result), PASS_ARG_X_FLOAT(packed_argument), COSH_CLASS_TO_ACTION_MAP, EVAL_FLAGS( COSH, COSH_EVAL, ADD), COSH_OVERFLOW OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_SINHCOSH_NAME RR_X_PROTO(F_ENTRY_NAME, packed_result0, packed_result1, packed_argument) { EXCEPTION_INFO_DECL _X_FLOAT packed_result[2]; INIT_EXCEPTION_INFO; C_UX_HYPERBOLIC( packed_result, /*PASS_RET_X_FLOAT(packed_result)*/ PASS_ARG_X_FLOAT(packed_argument), SINH_CLASS_TO_ACTION_MAP, EVAL_FLAGS( SINHCOSH, SINHCOSH_EVAL, SUB_ADD), PACKED_ARG_IS_NEG(packed_argument) ? SINH_NEG_OVERFLOW : SINH_OVERFLOW OPT_EXCEPTION_INFO ); *packed_result0 = packed_result[0]; *packed_result1 = packed_result[1]; } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_TANH_NAME X_X_PROTO(F_ENTRY_NAME, packed_result, packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) C_UX_HYPERBOLIC( PASS_RET_X_FLOAT(packed_result), PASS_ARG_X_FLOAT(packed_argument), TANH_CLASS_TO_ACTION_MAP, EVAL_FLAGS( TANH, TANH_EVAL, SUB_ADD), NOT_USED OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #if defined(MAKE_INCLUDE) @divert -append divertText precision = ceil(UX_PRECISION/8) + 4; # undef TABLE_NAME START_TABLE; TABLE_COMMENT("exp class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "EXP_CLASS_TO_ACTION_MAP\t"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(5) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 3) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 1) ); TABLE_COMMENT("expm1 class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "EXPM1_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(4) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_NEGATIVE, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("sinh class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "SINH_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(3) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("cosh class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "COSH_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(2) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_NEGATIVE, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 1) ); TABLE_COMMENT("tanh class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "TANH_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_NEGATIVE, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); TABLE_COMMENT("Data for the class to action mappings"); PRINT_U_TBL_ITEM( /* data 1 */ ONE ); PRINT_U_TBL_ITEM( /* data 2 */ EXP_OF_NEG_INF ); PRINT_U_TBL_ITEM( /* data 3 */ EXP_OF_INF ); /* ** Create the "table" of exp constants. The table includes the constants ** for the argument reduction, the degree of the polynomial and the ** polynomial coefficients. */ TABLE_COMMENT("Constant structure for exp based evaluations"); PRINT_UX_FRACTION_DIGIT_TBL_ADEF("EXP_CONSTANT_TABLE_ADDRESS"); save_precision = precision; precision = ceil(2*UX_PRECISION/8); ln2 = log(2); precision = save_precision; TABLE_COMMENT("High digits of 1/ln2, ln2 and binary exponent of ln2"); exp_cons_base_offset = MP_BIT_OFFSET; ln2_hi = bround(ln2, BITS_PER_UX_FRACTION_DIGIT_TYPE); tmp = bround(bldexp(1/ln2, BITS_PER_UX_FRACTION_DIGIT_TYPE - 2), BITS_PER_UX_FRACTION_DIGIT_TYPE); PRINT_UX_FRACTION_DIGIT_TBL_ITEM(tmp); PRINT_UX_FRACTION_DIGIT_TBL_ITEM( bldexp(ln2, BITS_PER_UX_FRACTION_DIGIT_TYPE) ); PRINT_UX_FRACTION_DIGIT_TBL_ITEM(0); TABLE_COMMENT("ln2_lo = ln2 - ln2_hi in unpacked form"); PRINT_UX_TBL_ITEM( ln2 - ln2_hi); /* ** Compute polynomial coefficient for exp and expm1. Get coefficients ** for expm1 and prepend a 1 to the front of the list */ function __expm1(x) { if (x == 0) return 1.; else return expm1(x)/x; } save_precision = precision; precision = ceil(UX_PRECISION/8) + 8; max_arg = ln2/2; remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT, -max_arg, max_arg, __expm1, UX_PRECISION, °ree, &ux_rational_coefs); precision = save_precision; for (i = degree + 1; i > 0; /* NULL */ ) ux_rational_coefs[i] = ux_rational_coefs[--i]; ux_rational_coefs[0] = 1; #define __INDEX(z,b) ((z - b)/BITS_PER_UX_FRACTION_DIGIT_TYPE) TABLE_COMMENT("Polynomial degree"); printf("#define EXP_DEGREE_INDEX\t\t%i\n", __INDEX(MP_BIT_OFFSET, exp_cons_base_offset)); PRINT_UX_FRACTION_DIGIT_TBL_ITEM(degree+1); TABLE_COMMENT("Fixed point coefficients for exp/expm1 evaluation"); printf("#define EXP_COEF_INDEX\t\t\t%i\n", __INDEX(MP_BIT_OFFSET, exp_cons_base_offset)); print_ux_rational_coefs(degree + 1, 0, 0); TABLE_COMMENT("1 in unpacked format"); PRINT_UX_TBL_ADEF_ITEM( "UX_ONE\t\t\t", 1); /* ** Create the "table" of exp10 constants. The layout is the same as for ** the exp constants. */ TABLE_COMMENT("Constant structure for exp10 based evaluations"); PRINT_UX_FRACTION_DIGIT_TBL_ADEF("EXP10_CONSTANT_TABLE_ADDRESS"); save_precision = precision; precision = ceil(2*UX_PRECISION/8); ln2_ov_ln10 = log(2)/log(10); precision = save_precision; TABLE_COMMENT( "High digits of ln10/ln2, ln2/ln10 and binary exponent of ln2/ln10"); exp_cons_base_offset = MP_BIT_OFFSET; ln2_ov_ln10_hi = bround(ln2_ov_ln10, BITS_PER_UX_FRACTION_DIGIT_TYPE); tmp = bround(bldexp(1/ln2_ov_ln10, BITS_PER_UX_FRACTION_DIGIT_TYPE - 2), BITS_PER_UX_FRACTION_DIGIT_TYPE); PRINT_UX_FRACTION_DIGIT_TBL_ITEM(tmp); PRINT_UX_FRACTION_DIGIT_TBL_ITEM( bldexp(ln2_ov_ln10, BITS_PER_UX_FRACTION_DIGIT_TYPE + 1) ); PRINT_UX_FRACTION_DIGIT_TBL_ITEM(-1); TABLE_COMMENT("ln2_ov_ln10_lo = ln2 - ln2_ov_ln10__hi in unpacked form"); PRINT_UX_TBL_ITEM( ln2_ov_ln10 - ln2_ov_ln10_hi); /* ** Compute polynomial coefficient for exp10. */ function __exp10(x) { return exp(x*log(10)); } save_precision = precision; precision = ceil(UX_PRECISION/8) + 8; max_arg = ln2_ov_ln10/2; remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT, -max_arg, max_arg, __exp10, UX_PRECISION, °ree, &ux_rational_coefs); precision = save_precision; TABLE_COMMENT("Polynomial degree"); PRINT_UX_FRACTION_DIGIT_TBL_ITEM(degree); TABLE_COMMENT("Fixed point coefficients for exp10 evaluation"); print_ux_rational_coefs(degree, 0, 0); /* ** Now get sinh and cosh coefficients in the same array */ function __cosh(x) { return cosh(x); } function __sinh(x) { if (x == 0) return 1.; else return sinh(x)/x; } save_precision = precision; precision = ceil(UX_PRECISION/8) + 8; max_arg = ln2/2; remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT + REMES_SQUARE_ARG, 0, max_arg, __sinh, UX_PRECISION, °ree, &ux_rational_coefs); remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT + REMES_SQUARE_ARG, 0, max_arg, __cosh, UX_PRECISION, &tmp_degree, &tmp_coefs); for (i = 0; i <= tmp_degree; i++) ux_rational_coefs[i + degree + 1] = tmp_coefs[i]; TABLE_COMMENT("Fixed point coefficients for sinh/cosh evaluation"); PRINT_FIXED_128_TBL_ADEF("SINHCOSH_COEF_ARRAY\t"); degree = print_ux_rational_coefs(degree, tmp_degree, 0); PRINT_WORD_DEF("SINHCOSH_COEF_ARRAY_DEGREE", degree); END_TABLE; @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ $outText = "$tableText\n\n$defineText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants exponential" . \ " and hyperbolic routines", __FILE__ ); \ print "$headerText\n\n$outText\n"; #endif LIBRARY/float128/dpml_lgamma.c0000644€­ Q01134020000005301115113665770015025 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef BASE_NAME # define BASE_NAME LGAMMA_BASE_NAME #endif #include "dpml_private.h" #if (F_NAME_SUFFIX == DPML_NULL_MACRO_TOKEN) # define SIGNGAM_NAME signgam #else # if (OP_SYSTEM == vms) # define SIGNGAM_NAME PASTE_3(F_NAME_PREFIX,signgam, F_NAME_SUFFIX) # else # define SIGNGAM_NAME PASTE_2(signgam, F_NAME_SUFFIX) # endif #endif #if HACK_GAMMAS_INLINE # define SIGNGAM SIGNGAM_NAME #else # define SIGNGAM *SIGNGAM_NAME #endif /* * Lgamma(x) is defined as the log(|gamma(x)|), where gamma(x) is defined * for positive x as * * gamma(x) = integral{ 0 to infinity | t^(x-1)e^t dt } * * From the definition of gamma(x) it follows that * * x*gamma(x) = gamma(x+1) (1) * * and the limit as x --> +0 of gamma(x) = +infinity. Equation (1) can be * used to extend gamma(x) to negitive numbers by recursively applying: * * gamma(-x) = gamma(1 - x)/(-x) (2) * * Since gamma(0) = + infinity, it follows that gamma(n) is undefined for * any non-positive integer. An alternative extension of gamma to negative * arguments is the reflection fomula * * gamma(-x) = -pi/(sin(pi*x)*gamma(1 + x)) (3) * * Evalutation of lgamma(x) suffers potential loss of significance at * its zeros or alternatively, when |gamma(x)| = 1. From the definition * of gamma and (1) we see that |gamma(x)| = 1 for positive x only at * x = 1 and 2. From equation (2), we see that |gamma(x)| = 1 when x * is a negative integer +/- epsilon, where epsilon is on the order * of 1/n!. * * Computation of lgamma(x) is based on two identities: * * zeta(2)-1 zeta(3)-1 * lgamma(1+x) = (1-G)x - ln(1+x) + ---------x^2 - ---------x^3 + ... * 2 3 * * zeta(n)-1 * ---------(-x)^n ... (4) * n * * = -ln(1+x) + x*Q(x) * * where G is Euler's constant and zeta(n) is the Reimann zeta function: * * 1 1 1 * zeta(n) = 1 + --- + --- + --- + ... * 2^n 3^n 4^n * * and Stirlings asymtotic approximation to gamma(x): * * 1 1 1 1 * lgamma(x) ~ ---ln(2*pi) - x + (x - ---)*ln(x) + ---*phi(---) (5) * 2 2 x x^2 * * 1 B(2) B(4) B(6) B(8) * phi(---) = ----- - ------- + ------- - ------- ..... (6) * x^2 2*1 4*3*x^2 6*5*x^4 8*7*x^6 * * where B(n) is the n-th bernoulli number. */ # define TMP_FILE ADD_EXTENSION(BUILD_FILE_NAME,tmp) # define RND_TO_FMT(x) bround(x, F_PRECISION) # define PRINT_TABLE_ENTRY(a) PRINT_1_F_TYPE_ENTRY(a, offset) # define PRINT_TABLE_VALUE_F_DEFINE(n) \ PRINT_TABLE_VALUE_DEFINE(n, TABLE_NAME, offset, F_TYPE) # define F_PRINT_A_DEFINE(name) PRINT_TABLE_ADDRESS_DEFINE(name, \ TABLE_NAME, offset, F_TYPE) #ifndef MAKE_INCLUDE # include STR(BUILD_FILE_NAME) #else @divert divertText precision = ceil(2*F_PRECISION/MP_RADIX_BITS) + 2; /* * The following macro defines an mphoc routine that finds a root of * the function f between x_0 and x_1 to precsion p and returns the * result in y. */ # define FIND_ROOT(x_0, x_1, f, p, y) \ y_0 = f(x_0); y_1 = f(x_1); \ if (y_0 * y_1 > 0) \ { \ printf("Invalid input to FIND_ROOT\n"); \ exit; \ } \ while (1) \ { \ delta = x_1 - x_0; \ if (bexp(x_1) - bexp(delta) > p) \ break; \ x = x_1 - y_1*(delta/(y_1 - y_0)); \ x_0 = x_1; x_1 = x; \ y_0 = y_1; y_1 = f(x); \ } \ y = x_1 START_STATIC_TABLE(TABLE_NAME, offset); TABLE_COMMENT("Miscelaneous constants"); /* * lgamma(x) will overflow for large positive values of x. Note that * For large negative values of x, x is a negative integer, and hence * the function is not defined. To compute the overflow threshold * we need to solve the equatation lgamma(x) = MP_MAX_FLOAT + 1/2 lsb * and rounding down the result to working precision. We do this using * the macro FIND_ROOT defined above with f = lgamma(x) - MP_MAX_FLOAT + * 1/2 lsb. To find the starting values we note that lgamma is ~ x*log(x) * and assume that x = 2^k/k*log(2). Then x*log(x) ~ MP_MAX_FLOAT when * k = F_MAX_BIN_EXP */ k = F_MAX_BIN_EXP; x0 = 2^k/(k*log(2)); x1 = 3*x0; c = MP_MAX_FLOAT + 2^(bexp(MP_MAX_FLOAT) - F_PRECISION); function f() { return lgamma($1) - MP_MAX_FLOAT; } FIND_ROOT(x0, x1, f, F_PRECISION + 1, y); y = bchop(y, F_PRECISION); PRINT_TABLE_VALUE_F_DEFINE(OVERFLOW_THRESHOLD); PRINT_TABLE_ENTRY(y); /* * For large values of x, it is most efficient to use equation (5). * When x is very large, 1/x^2 will underflow. However, long before * the underflow threshold is reached, (1/x)*phi(1/x^2) will become * insignificant when compared with the other terms in (5). * Consequently, we should stop computing z(x) = (1/x)*phi(1/x^2) when * x is big enough. This is more efficient and avoids the underflow. * * z(x) will be insignificant when z(x)/lgamma(x) < 1/2^(F_PRECISION + 1), * or when * * (1 - 2^-(F_PRECISION+1))*lgamma(x)-.5*ln(2*pi)+x-(x-.5)*ln(x) < 0 * * Using the macro, FIND_ROOT, we determine an x that satisfies the above. */ a = 1 - 1/2^(F_PRECISION + 1); b = .5*log(2*pi); function g() { s = a*lgamma($1); t = ($1 - .5)*log($1) - $1 + b; return s - t; } k = .5*(F_PRECISION + 1 - log2(12.)); x0 = 2^k/sqrt(k*log(2)); x1 = x0 + x0; FIND_ROOT(x0, x1, g, F_PRECISION + 1, real_big); PRINT_TABLE_VALUE_F_DEFINE(REAL_BIG); PRINT_TABLE_ENTRY(real_big); /* * Using equation (5) requires the constant .5*ln(2*pi) */ y = .5*log(2*pi); PRINT_TABLE_VALUE_F_DEFINE(HALF_LN_2_PI); PRINT_TABLE_ENTRY(y); /* * For suitably large negative x, we would like to a computation * based on equation (3). * * lgamma(-x) = ln|gamma(-x)| * = ln|-pi/(sin(pi*x)*x*gamma(x))| * = ln(pi) - ln|sin(pi*x)| - ln(x) - ln(gamma(x)) * = ln(pi) - ln|sin(pi*x)| - ln(x) - lgamma(x) * = ln(pi) - ln|sin(pi*x)| - ln(x) - lgamma(x) * * combined with (5) this gives: * * lgamma(-x) ~ ln(pi) - ln|sin(pi*x)| - ln(x) - * [.5*ln(2*pi) - x + (x - .5)*ln(x) + phi(x)/x] * ~ .5*ln(pi/2) - ln|sin(pi*x)| + x - (x + .5)*ln(x) - phi(x)/x * * Consequently, we also need the constants .5*ln(pi/2) and pi */ y = .5*log(pi/2); PRINT_TABLE_VALUE_F_DEFINE(HALF_LN_PI_OVER_2); PRINT_TABLE_ENTRY(y); y = pi; PRINT_TABLE_VALUE_F_DEFINE(PI); PRINT_TABLE_ENTRY(y); /* * When x is not large, the computation of lgamma is based on equations * (1) and (2). Specifically, let * * lgamma(n+x) = log(F(n,x)) + x*Q(x) * * where Q(x) is defined by equation (4). From equation (1) it follows * that * * lgamma(n+1+x) = log((n+x)*gamma(n+x) * = log(n+x) + lgamma(n+x) * = log(n+x) + log(F(n,x)) + x*Q(x) * = log[(n+x)*F(n,x)] + x*Q(x) * * From the above and equation (4) it follows that F(1,x) = 1+x and * F(n+1, x) = (n+x)*F(n,x). Note the F(n,x) is define for both * negative and positive integers. * * Since we know the range of our x value for this evaluation we can * increase the accuracy of the computation of x*Q(x) by performing * the following transformation: * * Given Q(x) = p(x)/q(x), define R(X) as * * Q(x) = 1/2 - R(x) * * This yields * * R(x) = p(x) - q(x)/2 * ------------- * q(x) * * Now x*Q(x) can be computed as x*(1/2 - R(x)), or rather x*(1/2) - x*R(x) * which forces, x*(1/2), the most significant term, to be exact. * * * NOTE: We need coefficients for Q and phi. From (4) we obtain * Q by approximating * * (lgamma(1+x) + ln(1 + x))/x * * on the interval [-.5, .5]. A rational approximation for Q * has competative performance on ALPHA with a polynomial * approximation. * * From (5) we obtain phi by approximating * * x * [lgamma(x) - .5*ln(2*pi) + x - (x - .5)*ln(x)] * * on the range [8,max_val], where max_val is the largest * value of x which will be evaluated by phi (i.e. for X>x, phi(x) * is insignificant to the other terms of the sum in (5). */ old_precision = precision; precision = ceil(2*F_PRECISION/MP_RADIX_BITS) + 4; function lgamma_approx() { if ($1 == 0) return (1 - euler_gamma); else { /* logx1(x) is more accurate than ln(x) for |x| < 1/MP_RADIX */ if ( abs($1) < (1 / MP_RADIX)) return (lgamma(1+$1) + logx1($1))/$1; else return (lgamma(1+$1) + ln(1 + $1))/$1; } } /* To shorten our search time we'll make some initial estimates based on experience. (These estimates are on the low side to assure we don't over step the optimal degree) */ #if (F_PRECISION == 24) degree = 3; #elif (F_PRECISION == 53) degree = 5; #elif (F_PRECISION == 113) degree = 11; #else degree = 0; #endif tol = 0; while (tol < (F_PRECISION + 1 + 3)) { den_degree = num_degree = ++degree; tol = remes( REMES_STATIC + REMES_LINEAR_ARG + REMES_RELATIVE_WEIGHT, -0.5, 0.5, lgamma_approx, num_degree, den_degree, &rational_coefs); } precision = old_precision; /* Extract denominator coefficients */ first_den_coef = num_degree + 1; for (i = 0; i <= den_degree; i++) q[i] = rational_coefs[i + first_den_coef]; /* Extract numerator coefficients */ for (i = 0; i <= num_degree; i++) p[i] = rational_coefs[i] - q[i]/2; /* Generate constants for Phi */ old_precision = precision; precision = ceil(2*F_PRECISION/MP_RADIX_BITS) + 4; half_ln_of_2pi = .5*ln(2*pi); function lgamma_asym_approx() { x = $1; if (x == 0) return (1/12); /* B2(0)/2 where B2(x) = x^2 - x + 1/6 */ else return x*(lgamma(x) - half_ln_of_2pi + x - (x - .5)*ln(x)); } max_arg = real_big; #if QUAD_PRECISION max_arg = 100000; /* This is temporary until mp_remes is corrected */ #endif remes(REMES_FIND_POLYNOMIAL+ REMES_RELATIVE_WEIGHT+ REMES_RECIP_SQUARE_ARG, 8.0, max_arg, lgamma_asym_approx, (F_PRECISION + 1), &poly_degree, &r); precision = old_precision; #define PRINT_COEFS(n,p) for (i = 0; i <= n; i++) \ { PRINT_TABLE_ENTRY(p[i]); } TABLE_COMMENT("Rational Coefficents for Q(x)"); F_PRINT_A_DEFINE(P_COEFS); PRINT_COEFS(num_degree, p); printf("\n"); F_PRINT_A_DEFINE(Q_COEFS); PRINT_COEFS(den_degree, q); TABLE_COMMENT("Polynomial Coefficents phi(x)"); F_PRINT_A_DEFINE(PHI_COEFS); PRINT_COEFS(poly_degree, r); END_TABLE; /* * Print out defines for polynomial and rational approximations */ printf("#define PHI(a,u) u = a*a; u = a*POLY%i(PHI_COEFS, u)\n", poly_degree); printf("#define Q(x) (POLY%i(P_COEFS, x)/POLY%i(Q_COEFS, x))\n", num_degree, den_degree); @end_divert @eval my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants for " . \ STR(F_ENTRY_NAME), __FILE__); \ print "$headerText\n\n$tableText\n\n$defineText"; #endif #if IEEE_FLOATING # define SCREEN_SPECIAL_ARGS(x,i) GET_EXP_WORD(x, i); \ if (F_EXP_WORD_IS_ABNORMAL(i)) \ goto special_args #else # define SCREEN_SPECIAL_ARGS(x,i) #endif #define NEG_2_POW_F_PRECISION ALIGN_W_EXP_FIELD(F_PRECISION + F_EXP_BIAS - F_NORM) + \ F_SIGN_BIT_MASK #ifdef F_COPY_SIGN_FAST # define F_SET_SIGN(val, sign, res) F_COPY_SIGN(val, sign, result) #else # define F_SET_SIGN(val, sign, res) res = val; if ((sign) < 0) F_NEGATE(res) #endif #if DO_LGAMMA int SIGNGAM_NAME = 0; # define _F_ENTRY_NAME F_LGAMMA_NAME # define OPT_PTR_ARG # define USE_CALL !HACK_GAMMAS_INLINE #elif DO_GAMMA extern int SIGNGAM_NAME; # define _F_ENTRY_NAME F_GAMMA_NAME # define OPT_PTR_ARG # define USE_CALL !HACK_GAMMAS_INLINE #else # define _F_ENTRY_NAME F_RT_LGAMMA_NAME # define OPT_PTR_ARG , int *SIGNGAM_NAME # undef HACK_GAMMAS_INLINE # define USE_CALL 0 #endif #if !defined F_ENTRY_NAME # define F_ENTRY_NAME _F_ENTRY_NAME #endif F_F_PROTO( F_LN_NAME ) ; F_F_PROTO( F_SIN_NAME ) ; F_TYPE F_ENTRY_NAME(F_TYPE x OPT_PTR_ARG) { F_TYPE y; WORD i; #if USE_CALL F_FpI_PROTO( F_RT_LGAMMA_NAME ) ; y = F_RT_LGAMMA_NAME(x, &i); SIGNGAM_NAME = i; return y; #else EXCEPTION_RECORD_DECLARATION F_TYPE s, t; SIGNGAM = 1; /* screen for NaNs, infinities, zeros & denorms */ SCREEN_SPECIAL_ARGS(x, i); /* * Initialize the SIGNGAM to 1 and send large arguments to asymtotic * region. Note the choice of asymtotic region being |x| >= 8 is * fairly arbitrary and need not be symetric. As the lower bound of * the asymtotic region increases, the more multiplies are performed * in computing F(n,x). Eventually, it is faster to use the asymtotic * approximations. Experimentally, it appears that the asymtotic * regions are not as accurate. However, that might be caused by a * sloppy implementation in that region. * * For the non-asymtotic region, we need to compute rint(x). Get 1/2 * with the correct sign now. */ F_SET_SIGN((F_TYPE) .5, x, y); if (x >= (F_TYPE) 8.) goto pos_asymtotic; if (x <= (F_TYPE) -8.) goto neg_asymtotic; /* For small x, get i = rint(x), y = x - i */ i = (WORD)(x + y); y = x - (F_TYPE) i; t = (F_TYPE) 1.; /* * Compute F(n,x) and take its log. In most cases this switch statement * is faster than a loop. */ switch (i) { case -8: t *= (y - 8); /* Fall through */ case -7: t *= (y - 7); /* Fall through */ case -6: t *= (y - 6); /* Fall through */ case -5: t *= (y - 5); /* Fall through */ case -4: t *= (y - 4); /* Fall through */ case -3: t *= (y - 3); /* Fall through */ case -2: t *= (y - 2); /* Fall through */ case -1: t *= (y - 1); /* Fall through */ case 0: /* * Since all of the negative cases come through here, we need * to check for integer values and set signgam correctly; */ t *= (y*(y+1)); if (y == 0) goto non_pos_int; if (t < 0) SIGNGAM = -1; F_ABS(t, t); t = - F_LN_NAME(t); goto pos_eval; case 1: t = - F_LN_NAME(x); goto pos_eval; case 2: t = 0; goto pos_eval; case 8: t *= (x-6); /* Fall through */ case 7: t *= (x-5); /* Fall through */ case 6: t *= (x-4); /* Fall through */ case 5: t *= (x-3); /* Fall through */ case 4: t *= (x - 2); /* Fall through */ case 3: t *= (x - 1); t = F_LN_NAME(t); goto pos_eval; } pos_eval: /* * OK - just need to compute rational approximation and we're done. */ t = t + (y*0.5 + y*Q(y)); return t; pos_asymtotic: /* * In this region we compute lgamma using an asymtotic expansion. * If x is really big, we don't need phi(x), so we can skip it. */ t = HALF_LN_2_PI; if (x > REAL_BIG) goto skip_poly; y = 1/x; PHI(y, s); t += s; add_in_log: y = F_LN_NAME(x); s = x * (y - 1); s -= (F_TYPE) .5 * y; t += s; return t; skip_poly: /* If x is reaally, really big, result will overflow */ if (x <= OVERFLOW_THRESHOLD) goto add_in_log; GET_EXCEPTION_RESULT_1(LGAMMA_OVERFLOW, x, t); return t; neg_asymtotic: /* * Here we are dealing with large negative arguments we need to * determine an integer n, such that n <= x < n+1. The parity * of n determines whether SIGNGAM is + or - 1. Also, we are * going to compute log(|sin(pi*x)|). If we can find and integer * k such that k = rint(x) and define y = x - k, then log(|sin(pi*x)|) * = log(sin(|y|*pi)). We begin by using "+ big - big" to determine * k and y. */ x = -x; s = F_POW_2(F_PRECISION - 1); if (x >= s) /* x is so big that it must be an integer */ goto non_pos_int; y = x + s; /* * get the low fraction bits of y. These are the same as the low * bits of k */ GET_LO_FRAC_WORD(y,i); i = PDP_SHUFFLE(i); t = y - s; y = x - t; /* Figure out n so we can set signgam correctly, and get |y| */ if (y < 0) { i--; t--; y = -y; } if (x == t) goto non_pos_int; SIGNGAM = ((i + i) & 2) - 1; /* OK compute aymtotic polynomial approximation for lgamma(|x|) */ s = ((F_TYPE) 1.)/x; PHI(s, t); t = HALF_LN_PI_OVER_2 - t; /* Get log(|sin(pi*x)|) and remainder of asymtotic approximation */ s = F_LN_NAME(F_SIN_NAME(y*PI)); t = x + (t - s); s = (x + (F_TYPE) .5)*F_LN_NAME(x); t = t - s; return t; special_args: #if IEEE_FLOATING /* Note: The code below assumes that SIGNGAM has already been set to 1. Thus, we only bother to set it here when gamma(x) is known to be negative. */ F_CLASSIFY(x, i); switch (i) { case F_C_POS_INF: GET_EXCEPTION_RESULT_1(LGAMMA_POS_INF, x, t); break; case F_C_NEG_INF: GET_EXCEPTION_RESULT_1(LGAMMA_NEG_INF, x, t); break; case F_C_QUIET_NAN: case F_C_SIG_NAN: t = x; break; case F_C_NEG_ZERO: SIGNGAM = -1; /* fall through */ case F_C_POS_ZERO: GET_EXCEPTION_RESULT_1(LGAMMA_OF_ZERO, x, t); break; default: /* +-denorm */ if (F_C_IS_NEG_CLASS(i)) { SIGNGAM = -1; F_ABS(x, x); } t = -F_LN_NAME(x); } return t; #endif non_pos_int: GET_EXCEPTION_RESULT_1(LGAMMA_NON_POS_INT, -x, t); return t; #endif } LIBRARY/float128/dpml_pow_t_table.c0000644€­ Q01134020000022004015113665770016064 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" /* Define default table name */ #if !defined(TABLE_NAME) # define TABLE_NAME __pow_t_table #endif #include "dpml_private.h" #if !DEFINE_SYMBOLIC_CONSTANTS const unsigned int TABLE_NAME[] = { /* * Tj = 2^(j/2^POW2_K) and Rj = [2^(j/2^POW2_K) - Tj]/Tj. * * offset row */ /* 0000 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* 000 */ /* 0008 */ DATA_1x2( 0x00000000, 0x00000000 ), /* 0016 */ DATA_1x2( 0xfa5abcbf, 0x3ff00b1a ), /* 001 */ /* 0024 */ DATA_1x2( 0xc61851ac, 0xbc84e82f ), /* 0032 */ DATA_1x2( 0xa9fb3335, 0x3ff0163d ), /* 002 */ /* 0040 */ DATA_1x2( 0x1a88bf6d, 0x3c9b3b4f ), /* 0048 */ DATA_1x2( 0x143b0281, 0x3ff02168 ), /* 003 */ /* 0056 */ DATA_1x2( 0xd8521d32, 0xbc82985d ), /* 0064 */ DATA_1x2( 0x3e778061, 0x3ff02c9a ), /* 004 */ /* 0072 */ DATA_1x2( 0x9cd8dc5d, 0xbc716013 ), /* 0080 */ DATA_1x2( 0x2e11bbcc, 0x3ff037d4 ), /* 005 */ /* 0088 */ DATA_1x2( 0x7061bfbd, 0x3c651e61 ), /* 0096 */ DATA_1x2( 0xe86e7f85, 0x3ff04315 ), /* 006 */ /* 0104 */ DATA_1x2( 0x108766d1, 0xbc905e7a ), /* 0112 */ DATA_1x2( 0x72f654b1, 0x3ff04e5f ), /* 007 */ /* 0120 */ DATA_1x2( 0x437fa426, 0x3c845fad ), /* 0128 */ DATA_1x2( 0xd3158574, 0x3ff059b0 ), /* 008 */ /* 0136 */ DATA_1x2( 0x3567f613, 0x3c8cd252 ), /* 0144 */ DATA_1x2( 0x0e3c1f89, 0x3ff0650a ), /* 009 */ /* 0152 */ DATA_1x2( 0x642b232f, 0xbc954529 ), /* 0160 */ DATA_1x2( 0x29ddf6de, 0x3ff0706b ), /* 010 */ /* 0168 */ DATA_1x2( 0x23f98efa, 0xbc8bce80 ), /* 0176 */ DATA_1x2( 0x2b72a836, 0x3ff07bd4 ), /* 011 */ /* 0184 */ DATA_1x2( 0x8ef5c32e, 0x3c829370 ), /* 0192 */ DATA_1x2( 0x18759bc8, 0x3ff08745 ), /* 012 */ /* 0200 */ DATA_1x2( 0x61e6c861, 0x3c60f74e ), /* 0208 */ DATA_1x2( 0xf66607e0, 0x3ff092bd ), /* 013 */ /* 0216 */ DATA_1x2( 0x0905b2a5, 0xbc95b928 ), /* 0224 */ DATA_1x2( 0xcac6f383, 0x3ff09e3e ), /* 014 */ /* 0232 */ DATA_1x2( 0x5b33d398, 0x3c90a3e4 ), /* 0240 */ DATA_1x2( 0x9b1f3919, 0x3ff0a9c7 ), /* 015 */ /* 0248 */ DATA_1x2( 0x32c4b7e7, 0x3c84f31f ), /* 0256 */ DATA_1x2( 0x6cf9890f, 0x3ff0b558 ), /* 016 */ /* 0264 */ DATA_1x2( 0x5d837b6c, 0x3c979aa6 ), /* 0272 */ DATA_1x2( 0x45e46c85, 0x3ff0c0f1 ), /* 017 */ /* 0280 */ DATA_1x2( 0x30d06420, 0x3c9407fb ), /* 0288 */ DATA_1x2( 0x2b7247f7, 0x3ff0cc92 ), /* 018 */ /* 0296 */ DATA_1x2( 0x92fdeffb, 0x3c8eb51a ), /* 0304 */ DATA_1x2( 0x23395dec, 0x3ff0d83b ), /* 019 */ /* 0312 */ DATA_1x2( 0xb3b9911c, 0xbc9a5d04 ), /* 0320 */ DATA_1x2( 0x32d3d1a2, 0x3ff0e3ec ), /* 020 */ /* 0328 */ DATA_1x2( 0x702f9cd1, 0x3c3ebe3d ), /* 0336 */ DATA_1x2( 0x5fdfa9c5, 0x3ff0efa5 ), /* 021 */ /* 0344 */ DATA_1x2( 0xf0739547, 0xbc937a01 ), /* 0352 */ DATA_1x2( 0xaffed31b, 0x3ff0fb66 ), /* 022 */ /* 0360 */ DATA_1x2( 0x89906e0b, 0xbc6a0334 ), /* 0368 */ DATA_1x2( 0x28d7233e, 0x3ff10730 ), /* 023 */ /* 0376 */ DATA_1x2( 0xb04ef0a5, 0x3c8b8268 ), /* 0384 */ DATA_1x2( 0xd0125b51, 0x3ff11301 ), /* 024 */ /* 0392 */ DATA_1x2( 0x2a2fbd0e, 0xbc955652 ), /* 0400 */ DATA_1x2( 0xab5e2ab6, 0x3ff11edb ), /* 025 */ /* 0408 */ DATA_1x2( 0x44a2ebcc, 0xbc9ac46e ), /* 0416 */ DATA_1x2( 0xc06c31cc, 0x3ff12abd ), /* 026 */ /* 0424 */ DATA_1x2( 0x8c4eea55, 0xbc5080ef ), /* 0432 */ DATA_1x2( 0x14f204ab, 0x3ff136a8 ), /* 027 */ /* 0440 */ DATA_1x2( 0x90c9f860, 0xbc65704e ), /* 0448 */ DATA_1x2( 0xaea92de0, 0x3ff1429a ), /* 028 */ /* 0456 */ DATA_1x2( 0xb9d5f416, 0xbc91c923 ), /* 0464 */ DATA_1x2( 0x934f312e, 0x3ff14e95 ), /* 029 */ /* 0472 */ DATA_1x2( 0x57e46280, 0xbc897cea ), /* 0480 */ DATA_1x2( 0xc8a58e51, 0x3ff15a98 ), /* 030 */ /* 0488 */ DATA_1x2( 0xe95c55af, 0x3c80d3e3 ), /* 0496 */ DATA_1x2( 0x5471c3c2, 0x3ff166a4 ), /* 031 */ /* 0504 */ DATA_1x2( 0x29e2b9d2, 0x3c56f014 ), /* 0512 */ DATA_1x2( 0x3c7d517b, 0x3ff172b8 ), /* 032 */ /* 0520 */ DATA_1x2( 0xeaa59348, 0xbc801b15 ), /* 0528 */ DATA_1x2( 0x8695bbc0, 0x3ff17ed4 ), /* 033 */ /* 0536 */ DATA_1x2( 0x2459034b, 0x3c6e653b ), /* 0544 */ DATA_1x2( 0x388c8dea, 0x3ff18af9 ), /* 034 */ /* 0552 */ DATA_1x2( 0x55de323d, 0xbc8f1ff0 ), /* 0560 */ DATA_1x2( 0x58375d2f, 0x3ff19726 ), /* 035 */ /* 0568 */ DATA_1x2( 0xa345b7dc, 0x3c92cc7e ), /* 0576 */ DATA_1x2( 0xeb6fcb75, 0x3ff1a35b ), /* 036 */ /* 0584 */ DATA_1x2( 0x3f1353bf, 0x3c8b898c ), /* 0592 */ DATA_1x2( 0xf8138a1c, 0x3ff1af99 ), /* 037 */ /* 0600 */ DATA_1x2( 0x2876ea9e, 0x3c957bfb ), /* 0608 */ DATA_1x2( 0x84045cd4, 0x3ff1bbe0 ), /* 038 */ /* 0616 */ DATA_1x2( 0x7611eb27, 0xbc96d99c ), /* 0624 */ DATA_1x2( 0x95281c6b, 0x3ff1c82f ), /* 039 */ /* 0632 */ DATA_1x2( 0x73af2154, 0x3c8cdc18 ), /* 0640 */ DATA_1x2( 0x3168b9aa, 0x3ff1d487 ), /* 040 */ /* 0648 */ DATA_1x2( 0x3e3a2f5f, 0x3c9aecf7 ), /* 0656 */ DATA_1x2( 0x5eb44027, 0x3ff1e0e7 ), /* 041 */ /* 0664 */ DATA_1x2( 0x4653a131, 0xbc949368 ), /* 0672 */ DATA_1x2( 0x22fcd91d, 0x3ff1ed50 ), /* 042 */ /* 0680 */ DATA_1x2( 0xcb86389e, 0xbc8fe782 ), /* 0688 */ DATA_1x2( 0x8438ce4d, 0x3ff1f9c1 ), /* 043 */ /* 0696 */ DATA_1x2( 0x9077520a, 0xbc98e289 ), /* 0704 */ DATA_1x2( 0x88628cd6, 0x3ff2063b ), /* 044 */ /* 0712 */ DATA_1x2( 0x44a6c38c, 0x3c8a6f41 ), /* 0720 */ DATA_1x2( 0x3578a819, 0x3ff212be ), /* 045 */ /* 0728 */ DATA_1x2( 0xd4f59273, 0x3c9120fc ), /* 0736 */ DATA_1x2( 0x917ddc96, 0x3ff21f49 ), /* 046 */ /* 0744 */ DATA_1x2( 0xb0e4047d, 0x3c807a05 ), /* 0752 */ DATA_1x2( 0xa27912d1, 0x3ff22bdd ), /* 047 */ /* 0760 */ DATA_1x2( 0xc188c9b8, 0x3c89b788 ), /* 0768 */ DATA_1x2( 0x6e756238, 0x3ff2387a ), /* 048 */ /* 0776 */ DATA_1x2( 0xe3a8a893, 0x3c968efd ), /* 0784 */ DATA_1x2( 0xfb82140a, 0x3ff2451f ), /* 049 */ /* 0792 */ DATA_1x2( 0xca90ef84, 0x3c877afb ), /* 0800 */ DATA_1x2( 0x4fb2a63f, 0x3ff251ce ), /* 050 */ /* 0808 */ DATA_1x2( 0xf274487d, 0x3c875e18 ), /* 0816 */ DATA_1x2( 0x711ece75, 0x3ff25e85 ), /* 051 */ /* 0824 */ DATA_1x2( 0x082876ee, 0x3c91512f ), /* 0832 */ DATA_1x2( 0x65e27cdd, 0x3ff26b45 ), /* 052 */ /* 0840 */ DATA_1x2( 0x981fe7f2, 0x3c80472b ), /* 0848 */ DATA_1x2( 0x341ddf29, 0x3ff2780e ), /* 053 */ /* 0856 */ DATA_1x2( 0xc7d75ec5, 0x3c9a02f0 ), /* 0864 */ DATA_1x2( 0xe1f56381, 0x3ff284df ), /* 054 */ /* 0872 */ DATA_1x2( 0x3f71085e, 0xbc96b87b ), /* 0880 */ DATA_1x2( 0x7591bb70, 0x3ff291ba ), /* 055 */ /* 0888 */ DATA_1x2( 0xe78260bf, 0xbc803297 ), /* 0896 */ DATA_1x2( 0xf51fdee1, 0x3ff29e9d ), /* 056 */ /* 0904 */ DATA_1x2( 0x6d09ab31, 0x3c82f7e1 ), /* 0912 */ DATA_1x2( 0x66d10f13, 0x3ff2ab8a ), /* 057 */ /* 0920 */ DATA_1x2( 0x5ccd9fbf, 0xbc95b77e ), /* 0928 */ DATA_1x2( 0xd0dad990, 0x3ff2b87f ), /* 058 */ /* 0936 */ DATA_1x2( 0x1a6fbffb, 0xbc3d219b ), /* 0944 */ DATA_1x2( 0x39771b2f, 0x3ff2c57e ), /* 059 */ /* 0952 */ DATA_1x2( 0x40b4251e, 0xbc91e75c ), /* 0960 */ DATA_1x2( 0xa6e4030b, 0x3ff2d285 ), /* 060 */ /* 0968 */ DATA_1x2( 0x720c0ab3, 0x3c8b3782 ), /* 0976 */ DATA_1x2( 0x1f641589, 0x3ff2df96 ), /* 061 */ /* 0984 */ DATA_1x2( 0xf1f77859, 0x3c98a911 ), /* 0992 */ DATA_1x2( 0xa93e2f56, 0x3ff2ecaf ), /* 062 */ /* 1000 */ DATA_1x2( 0x89cecb8f, 0x3c6e1492 ), /* 1008 */ DATA_1x2( 0x4abd886b, 0x3ff2f9d2 ), /* 063 */ /* 1016 */ DATA_1x2( 0x98db7dbc, 0xbc61e7c9 ), /* 1024 */ DATA_1x2( 0x0a31b715, 0x3ff306fe ), /* 064 */ /* 1032 */ DATA_1x2( 0x4db0abb6, 0x3c834d75 ), /* 1040 */ DATA_1x2( 0xedeeb2fd, 0x3ff31432 ), /* 065 */ /* 1048 */ DATA_1x2( 0x11faadf4, 0x3c85425c ), /* 1056 */ DATA_1x2( 0xfc4cd831, 0x3ff32170 ), /* 066 */ /* 1064 */ DATA_1x2( 0xe2ac744c, 0x3c864201 ), /* 1072 */ DATA_1x2( 0x3ba8ea32, 0x3ff32eb8 ), /* 067 */ /* 1080 */ DATA_1x2( 0xa03e2848, 0xbc979517 ), /* 1088 */ DATA_1x2( 0xb26416ff, 0x3ff33c08 ), /* 068 */ /* 1096 */ DATA_1x2( 0x5dd3f84a, 0x3c8fdd39 ), /* 1104 */ DATA_1x2( 0x66e3fa2d, 0x3ff34962 ), /* 069 */ /* 1112 */ DATA_1x2( 0x46da4bee, 0xbc800e2a ), /* 1120 */ DATA_1x2( 0x5f929ff1, 0x3ff356c5 ), /* 070 */ /* 1128 */ DATA_1x2( 0x3b8e5b04, 0xbc86a380 ), /* 1136 */ DATA_1x2( 0xa2de883b, 0x3ff36431 ), /* 071 */ /* 1144 */ DATA_1x2( 0x03972b34, 0xbc874308 ), /* 1152 */ DATA_1x2( 0x373aa9cb, 0x3ff371a7 ), /* 072 */ /* 1160 */ DATA_1x2( 0xcc4b5069, 0xbc924aed ), /* 1168 */ DATA_1x2( 0x231e754a, 0x3ff37f26 ), /* 073 */ /* 1176 */ DATA_1x2( 0x0ae02d95, 0xbc954de3 ), /* 1184 */ DATA_1x2( 0x6d05d866, 0x3ff38cae ), /* 074 */ /* 1192 */ DATA_1x2( 0x1b512d8f, 0xbc9907f8 ), /* 1200 */ DATA_1x2( 0x1b7140ef, 0x3ff39a40 ), /* 075 */ /* 1208 */ DATA_1x2( 0x7e1c03ec, 0xbc94f248 ), /* 1216 */ DATA_1x2( 0x34e59ff7, 0x3ff3a7db ), /* 076 */ /* 1224 */ DATA_1x2( 0x3e9436d2, 0xbc71d1e8 ), /* 1232 */ DATA_1x2( 0xbfec6cf4, 0x3ff3b57f ), /* 077 */ /* 1240 */ DATA_1x2( 0x32fcb2f4, 0x3c914a54 ), /* 1248 */ DATA_1x2( 0xc313a8e5, 0x3ff3c32d ), /* 078 */ /* 1256 */ DATA_1x2( 0xb3ce1b15, 0xbc991919 ), /* 1264 */ DATA_1x2( 0x44ede173, 0x3ff3d0e5 ), /* 079 */ /* 1272 */ DATA_1x2( 0xa5562a2f, 0x3c79c3bb ), /* 1280 */ DATA_1x2( 0x4c123422, 0x3ff3dea6 ), /* 080 */ /* 1288 */ DATA_1x2( 0xa72a4c6c, 0x3c859f48 ), /* 1296 */ DATA_1x2( 0xdf1c5175, 0x3ff3ec70 ), /* 081 */ /* 1304 */ DATA_1x2( 0x12e21658, 0xbc85a716 ), /* 1312 */ DATA_1x2( 0x04ac801c, 0x3ff3fa45 ), /* 082 */ /* 1320 */ DATA_1x2( 0x7a28698a, 0xbc931260 ), /* 1328 */ DATA_1x2( 0xc367a024, 0x3ff40822 ), /* 083 */ /* 1336 */ DATA_1x2( 0x6f1d24d6, 0x3c86421f ), /* 1344 */ DATA_1x2( 0x21f72e2a, 0x3ff4160a ), /* 084 */ /* 1352 */ DATA_1x2( 0x4817895b, 0xbc58a78f ), /* 1360 */ DATA_1x2( 0x2709468a, 0x3ff423fb ), /* 085 */ /* 1368 */ DATA_1x2( 0x815fce65, 0xbc9348a6 ), /* 1376 */ DATA_1x2( 0xd950a897, 0x3ff431f5 ), /* 086 */ /* 1384 */ DATA_1x2( 0x67499a1b, 0xbc7c2c9b ), /* 1392 */ DATA_1x2( 0x3f84b9d4, 0x3ff43ffa ), /* 087 */ /* 1400 */ DATA_1x2( 0x984d9871, 0x3c835c43 ), /* 1408 */ DATA_1x2( 0x6061892d, 0x3ff44e08 ), /* 088 */ /* 1416 */ DATA_1x2( 0x60c2ac11, 0x3c4363ed ), /* 1424 */ DATA_1x2( 0x42a7d232, 0x3ff45c20 ), /* 089 */ /* 1432 */ DATA_1x2( 0x8d9473a0, 0xbc632afc ), /* 1440 */ DATA_1x2( 0xed1d0057, 0x3ff46a41 ), /* 090 */ /* 1448 */ DATA_1x2( 0x3b0664ef, 0x3c966609 ), /* 1456 */ DATA_1x2( 0x668b3237, 0x3ff4786d ), /* 091 */ /* 1464 */ DATA_1x2( 0x44de020e, 0xbc95fc5e ), /* 1472 */ DATA_1x2( 0xb5c13cd0, 0x3ff486a2 ), /* 092 */ /* 1480 */ DATA_1x2( 0xdaa10379, 0x3c6ecce1 ), /* 1488 */ DATA_1x2( 0xe192aed2, 0x3ff494e1 ), /* 093 */ /* 1496 */ DATA_1x2( 0x8327c42f, 0xbc7ea014 ), /* 1504 */ DATA_1x2( 0xf0d7d3de, 0x3ff4a32a ), /* 094 */ /* 1512 */ DATA_1x2( 0x3f0f1230, 0x3c93ff8e ), /* 1520 */ DATA_1x2( 0xea6db7d7, 0x3ff4b17d ), /* 095 */ /* 1528 */ DATA_1x2( 0xd1a88022, 0xbc7a843a ), /* 1536 */ DATA_1x2( 0xd5362a27, 0x3ff4bfda ), /* 096 */ /* 1544 */ DATA_1x2( 0xbb7aafb0, 0x3c7690ce ), /* 1552 */ DATA_1x2( 0xb817c114, 0x3ff4ce41 ), /* 097 */ /* 1560 */ DATA_1x2( 0xbf144e62, 0x3c892ca3 ), /* 1568 */ DATA_1x2( 0x99fddd0d, 0x3ff4dcb2 ), /* 098 */ /* 1576 */ DATA_1x2( 0xeb54e077, 0x3c931dbd ), /* 1584 */ DATA_1x2( 0x81d8abff, 0x3ff4eb2d ), /* 099 */ /* 1592 */ DATA_1x2( 0xb04aa8b0, 0xbc902c99 ), /* 1600 */ DATA_1x2( 0x769d2ca7, 0x3ff4f9b2 ), /* 100 */ /* 1608 */ DATA_1x2( 0x0071a38f, 0xbc8f9434 ), /* 1616 */ DATA_1x2( 0x7f4531ee, 0x3ff50841 ), /* 101 */ /* 1624 */ DATA_1x2( 0x67e67117, 0x3c73e34f ), /* 1632 */ DATA_1x2( 0xa2cf6642, 0x3ff516da ), /* 102 */ /* 1640 */ DATA_1x2( 0xdc93a34a, 0xbc87decc ), /* 1648 */ DATA_1x2( 0xe83f4eef, 0x3ff5257d ), /* 103 */ /* 1656 */ DATA_1x2( 0x197ba0f0, 0xbc75a3b1 ), /* 1664 */ DATA_1x2( 0x569d4f82, 0x3ff5342b ), /* 104 */ /* 1672 */ DATA_1x2( 0xbd0f3860, 0xbc78dec6 ), /* 1680 */ DATA_1x2( 0xf4f6ad27, 0x3ff542e2 ), /* 105 */ /* 1688 */ DATA_1x2( 0x88075068, 0x3c81bd28 ), /* 1696 */ DATA_1x2( 0xca5d920f, 0x3ff551a4 ), /* 106 */ /* 1704 */ DATA_1x2( 0xec7b5cf6, 0xbc861246 ), /* 1712 */ DATA_1x2( 0xdde910d2, 0x3ff56070 ), /* 107 */ /* 1720 */ DATA_1x2( 0xae89ef8f, 0xbc896be8 ), /* 1728 */ DATA_1x2( 0x36b527da, 0x3ff56f47 ), /* 108 */ /* 1736 */ DATA_1x2( 0x18fdd78d, 0x3c933505 ), /* 1744 */ DATA_1x2( 0xdbe2c4cf, 0x3ff57e27 ), /* 109 */ /* 1752 */ DATA_1x2( 0x90348602, 0xbc88e6ac ), /* 1760 */ DATA_1x2( 0xd497c7fd, 0x3ff58d12 ), /* 110 */ /* 1768 */ DATA_1x2( 0x2f8a9b05, 0x3c7b98b7 ), /* 1776 */ DATA_1x2( 0x27ff07cc, 0x3ff59c08 ), /* 111 */ /* 1784 */ DATA_1x2( 0x1365c3ac, 0xbc91af7f ), /* 1792 */ DATA_1x2( 0xdd485429, 0x3ff5ab07 ), /* 112 */ /* 1800 */ DATA_1x2( 0xe21c5409, 0x3c9063e1 ), /* 1808 */ DATA_1x2( 0xfba87a03, 0x3ff5ba11 ), /* 113 */ /* 1816 */ DATA_1x2( 0x40d1898a, 0xbc943a35 ), /* 1824 */ DATA_1x2( 0x8a5946b7, 0x3ff5c926 ), /* 114 */ /* 1832 */ DATA_1x2( 0x5019c6ea, 0x3c34c785 ), /* 1840 */ DATA_1x2( 0x90998b93, 0x3ff5d845 ), /* 115 */ /* 1848 */ DATA_1x2( 0xddaa8090, 0xbc951f58 ), /* 1856 */ DATA_1x2( 0x15ad2148, 0x3ff5e76f ), /* 116 */ /* 1864 */ DATA_1x2( 0x2b64c035, 0x3c9432e6 ), /* 1872 */ DATA_1x2( 0x20dceb71, 0x3ff5f6a3 ), /* 117 */ /* 1880 */ DATA_1x2( 0x8e50a17c, 0xbc82e164 ), /* 1888 */ DATA_1x2( 0xb976dc09, 0x3ff605e1 ), /* 118 */ /* 1896 */ DATA_1x2( 0x6199769f, 0xbc8ce44a ), /* 1904 */ DATA_1x2( 0xe6cdf6f4, 0x3ff6152a ), /* 119 */ /* 1912 */ DATA_1x2( 0xda98a574, 0x3c95f30e ), /* 1920 */ DATA_1x2( 0xb03a5585, 0x3ff6247e ), /* 120 */ /* 1928 */ DATA_1x2( 0x3bef4da8, 0xbc8c33c5 ), /* 1936 */ DATA_1x2( 0x1d1929fd, 0x3ff633dd ), /* 121 */ /* 1944 */ DATA_1x2( 0xa8a72158, 0x3c917ecd ), /* 1952 */ DATA_1x2( 0x34ccc320, 0x3ff64346 ), /* 122 */ /* 1960 */ DATA_1x2( 0x892be9ae, 0xbc845378 ), /* 1968 */ DATA_1x2( 0xfebc8fb7, 0x3ff652b9 ), /* 123 */ /* 1976 */ DATA_1x2( 0xcee1ae6e, 0xbc9345f3 ), /* 1984 */ DATA_1x2( 0x82552225, 0x3ff66238 ), /* 124 */ /* 1992 */ DATA_1x2( 0x78565858, 0xbc93cedd ), /* 2000 */ DATA_1x2( 0xc70833f6, 0x3ff671c1 ), /* 125 */ /* 2008 */ DATA_1x2( 0xdf910406, 0xbc85c33f ), /* 2016 */ DATA_1x2( 0xd44ca973, 0x3ff68155 ), /* 126 */ /* 2024 */ DATA_1x2( 0x807e1964, 0x3c5710aa ), /* 2032 */ DATA_1x2( 0xb19e9538, 0x3ff690f4 ), /* 127 */ /* 2040 */ DATA_1x2( 0xb5789604, 0x3c81079a ), /* 2048 */ DATA_1x2( 0x667f3bcd, 0x3ff6a09e ), /* 128 */ /* 2056 */ DATA_1x2( 0xbf5e2229, 0xbc93b3ef ), /* 2064 */ DATA_1x2( 0xfa75173e, 0x3ff6b052 ), /* 129 */ /* 2072 */ DATA_1x2( 0x61cd7778, 0x3c727df1 ), /* 2080 */ DATA_1x2( 0x750bdabf, 0x3ff6c012 ), /* 130 */ /* 2088 */ DATA_1x2( 0x8734b982, 0xbc6a12ad ), /* 2096 */ DATA_1x2( 0xddd47645, 0x3ff6cfdc ), /* 131 */ /* 2104 */ DATA_1x2( 0x4a05b767, 0x3c93f992 ), /* 2112 */ DATA_1x2( 0x3c651a2f, 0x3ff6dfb2 ), /* 132 */ /* 2120 */ DATA_1x2( 0xb86da9ee, 0xbc6367ef ), /* 2128 */ DATA_1x2( 0x98593ae5, 0x3ff6ef92 ), /* 133 */ /* 2136 */ DATA_1x2( 0x39a8b5f0, 0xbc875579 ), /* 2144 */ DATA_1x2( 0xf9519484, 0x3ff6ff7d ), /* 134 */ /* 2152 */ DATA_1x2( 0x54e08851, 0xbc80dc3d ), /* 2160 */ DATA_1x2( 0x66f42e87, 0x3ff70f74 ), /* 135 */ /* 2168 */ DATA_1x2( 0x56fa9d1a, 0x3c51ed2f ), /* 2176 */ DATA_1x2( 0xe8ec5f74, 0x3ff71f75 ), /* 136 */ /* 2184 */ DATA_1x2( 0x7e5a3ecf, 0xbc781f64 ), /* 2192 */ DATA_1x2( 0x86ead08a, 0x3ff72f82 ), /* 137 */ /* 2200 */ DATA_1x2( 0x9006c909, 0xbc88e67a ), /* 2208 */ DATA_1x2( 0x48a58174, 0x3ff73f9a ), /* 138 */ /* 2216 */ DATA_1x2( 0xc08b7db0, 0xbc86ee4a ), /* 2224 */ DATA_1x2( 0x35d7cbfd, 0x3ff74fbd ), /* 139 */ /* 2232 */ DATA_1x2( 0x66977ac8, 0x3c865975 ), /* 2240 */ DATA_1x2( 0x564267c9, 0x3ff75feb ), /* 140 */ /* 2248 */ DATA_1x2( 0x1e55e68a, 0xbc861932 ), /* 2256 */ DATA_1x2( 0xb1ab6e09, 0x3ff77024 ), /* 141 */ /* 2264 */ DATA_1x2( 0x028a5c3a, 0x3c92c0b7 ), /* 2272 */ DATA_1x2( 0x4fde5d3f, 0x3ff78069 ), /* 142 */ /* 2280 */ DATA_1x2( 0x5e09d4d2, 0x3c909ccb ), /* 2288 */ DATA_1x2( 0x38ac1cf6, 0x3ff790b9 ), /* 143 */ /* 2296 */ DATA_1x2( 0xf49cc78b, 0x3c8a30fa ), /* 2304 */ DATA_1x2( 0x73eb0187, 0x3ff7a114 ), /* 144 */ /* 2312 */ DATA_1x2( 0xb94da51d, 0xbc7b32dc ), /* 2320 */ DATA_1x2( 0x0976cfdb, 0x3ff7b17b ), /* 145 */ /* 2328 */ DATA_1x2( 0x519d7b5c, 0xbc92dad3 ), /* 2336 */ DATA_1x2( 0x0130c132, 0x3ff7c1ed ), /* 146 */ /* 2344 */ DATA_1x2( 0x5467c06b, 0x3c94ecfd ), /* 2352 */ DATA_1x2( 0x62ff86f0, 0x3ff7d26a ), /* 147 */ /* 2360 */ DATA_1x2( 0x10fd15c2, 0x3c87d514 ), /* 2368 */ DATA_1x2( 0x36cf4e62, 0x3ff7e2f3 ), /* 148 */ /* 2376 */ DATA_1x2( 0xabd66c55, 0x3c65ebe1 ), /* 2384 */ DATA_1x2( 0x8491c491, 0x3ff7f387 ), /* 149 */ /* 2392 */ DATA_1x2( 0x29969871, 0xbc760a36 ), /* 2400 */ DATA_1x2( 0x543e1a12, 0x3ff80427 ), /* 150 */ /* 2408 */ DATA_1x2( 0x2fb3cf42, 0xbc88a1c5 ), /* 2416 */ DATA_1x2( 0xadd106d9, 0x3ff814d2 ), /* 151 */ /* 2424 */ DATA_1x2( 0xe3fdef5c, 0x3c8b18c6 ), /* 2432 */ DATA_1x2( 0x994cce13, 0x3ff82589 ), /* 152 */ /* 2440 */ DATA_1x2( 0xf13b3734, 0xbc9369b6 ), /* 2448 */ DATA_1x2( 0x1eb941f7, 0x3ff8364c ), /* 153 */ /* 2456 */ DATA_1x2( 0xdcb1390a, 0x3c90ec1d ), /* 2464 */ DATA_1x2( 0x4623c7ad, 0x3ff8471a ), /* 154 */ /* 2472 */ DATA_1x2( 0x3a19ff1e, 0xbc805e84 ), /* 2480 */ DATA_1x2( 0x179f5b21, 0x3ff857f4 ), /* 155 */ /* 2488 */ DATA_1x2( 0x4f3afa1e, 0xbc522cea ), /* 2496 */ DATA_1x2( 0x9b4492ed, 0x3ff868d9 ), /* 156 */ /* 2504 */ DATA_1x2( 0xd872576e, 0xbc94d450 ), /* 2512 */ DATA_1x2( 0xd931a436, 0x3ff879ca ), /* 157 */ /* 2520 */ DATA_1x2( 0x9b958471, 0x3c7c8854 ), /* 2528 */ DATA_1x2( 0xd98a6699, 0x3ff88ac7 ), /* 158 */ /* 2536 */ DATA_1x2( 0x5b0e8a00, 0x3c90ad67 ), /* 2544 */ DATA_1x2( 0xa478580f, 0x3ff89bd0 ), /* 159 */ /* 2552 */ DATA_1x2( 0x962f7877, 0x3c931143 ), /* 2560 */ DATA_1x2( 0x422aa0db, 0x3ff8ace5 ), /* 160 */ /* 2568 */ DATA_1x2( 0xc1f0eab4, 0x3c8db72f ), /* 2576 */ DATA_1x2( 0xbad61778, 0x3ff8be05 ), /* 161 */ /* 2584 */ DATA_1x2( 0x6f112478, 0x3c93e9e9 ), /* 2592 */ DATA_1x2( 0x16b5448c, 0x3ff8cf32 ), /* 162 */ /* 2600 */ DATA_1x2( 0x9cc5e7ff, 0xbc65b660 ), /* 2608 */ DATA_1x2( 0x5e0866d9, 0x3ff8e06a ), /* 163 */ /* 2616 */ DATA_1x2( 0xa4a38df0, 0xbc8dac42 ), /* 2624 */ DATA_1x2( 0x99157736, 0x3ff8f1ae ), /* 164 */ /* 2632 */ DATA_1x2( 0x59f35f44, 0x3c7bf683 ), /* 2640 */ DATA_1x2( 0xd0282c8a, 0x3ff902fe ), /* 165 */ /* 2648 */ DATA_1x2( 0x98b1ed84, 0x3c8b99dd ), /* 2656 */ DATA_1x2( 0x0b91ffc6, 0x3ff9145b ), /* 166 */ /* 2664 */ DATA_1x2( 0xa71e3d83, 0xbc93091f ), /* 2672 */ DATA_1x2( 0x53aa2fe2, 0x3ff925c3 ), /* 167 */ /* 2680 */ DATA_1x2( 0x50cbb750, 0xbc7885ad ), /* 2688 */ DATA_1x2( 0xb0cdc5e5, 0x3ff93737 ), /* 168 */ /* 2696 */ DATA_1x2( 0x8b6c1e29, 0xbc5da9b8 ), /* 2704 */ DATA_1x2( 0x2b5f98e5, 0x3ff948b8 ), /* 169 */ /* 2712 */ DATA_1x2( 0x5f3e0301, 0xbc82d5e8 ), /* 2720 */ DATA_1x2( 0xcbc8520f, 0x3ff95a44 ), /* 170 */ /* 2728 */ DATA_1x2( 0x7c90b959, 0xbc6c23f9 ), /* 2736 */ DATA_1x2( 0x9a7670b3, 0x3ff96bdd ), /* 171 */ /* 2744 */ DATA_1x2( 0x28996971, 0xbc516694 ), /* 2752 */ DATA_1x2( 0x9fde4e50, 0x3ff97d82 ), /* 172 */ /* 2760 */ DATA_1x2( 0x22f4f9aa, 0xbc924343 ), /* 2768 */ DATA_1x2( 0xe47a22a2, 0x3ff98f33 ), /* 173 */ /* 2776 */ DATA_1x2( 0xc1c4c014, 0x3c71f2b2 ), /* 2784 */ DATA_1x2( 0x70ca07ba, 0x3ff9a0f1 ), /* 174 */ /* 2792 */ DATA_1x2( 0xd7668e4b, 0xbc85ca6c ), /* 2800 */ DATA_1x2( 0x4d53fe0d, 0x3ff9b2bb ), /* 175 */ /* 2808 */ DATA_1x2( 0x04f166b6, 0xbc9294f3 ), /* 2816 */ DATA_1x2( 0x82a3f090, 0x3ff9c491 ), /* 176 */ /* 2824 */ DATA_1x2( 0x2b91ce27, 0x3c71affc ), /* 2832 */ DATA_1x2( 0x194bb8d5, 0x3ff9d674 ), /* 177 */ /* 2840 */ DATA_1x2( 0x414c07d3, 0xbc8a1e58 ), /* 2848 */ DATA_1x2( 0x19e32323, 0x3ff9e863 ), /* 178 */ /* 2856 */ DATA_1x2( 0xe10a73bb, 0x3c6dd235 ), /* 2864 */ DATA_1x2( 0x8d07f29e, 0x3ff9fa5e ), /* 179 */ /* 2872 */ DATA_1x2( 0x58a20091, 0xbc79740b ), /* 2880 */ DATA_1x2( 0x7b5de565, 0x3ffa0c66 ), /* 180 */ /* 2888 */ DATA_1x2( 0x22622263, 0xbc87c504 ), /* 2896 */ DATA_1x2( 0xed8eb8bb, 0x3ffa1e7a ), /* 181 */ /* 2904 */ DATA_1x2( 0x0a2b96c2, 0x3c916583 ), /* 2912 */ DATA_1x2( 0xec4a2d33, 0x3ffa309b ), /* 182 */ /* 2920 */ DATA_1x2( 0xe3e231d5, 0x3c8b1c86 ), /* 2928 */ DATA_1x2( 0x80460ad8, 0x3ffa42c9 ), /* 183 */ /* 2936 */ DATA_1x2( 0xbe27874b, 0xbc903d5c ), /* 2944 */ DATA_1x2( 0xb23e255d, 0x3ffa5503 ), /* 184 */ /* 2952 */ DATA_1x2( 0xd3bcbb15, 0xbc91bbd1 ), /* 2960 */ DATA_1x2( 0x8af46052, 0x3ffa674a ), /* 185 */ /* 2968 */ DATA_1x2( 0x8980fce0, 0x3c598617 ), /* 2976 */ DATA_1x2( 0x1330b358, 0x3ffa799e ), /* 186 */ /* 2984 */ DATA_1x2( 0x9cee31d2, 0x3c90cc31 ), /* 2992 */ DATA_1x2( 0x53c12e59, 0x3ffa8bfe ), /* 187 */ /* 3000 */ DATA_1x2( 0x75b1f2a6, 0xbc894729 ), /* 3008 */ DATA_1x2( 0x5579fdbf, 0x3ffa9e6b ), /* 188 */ /* 3016 */ DATA_1x2( 0x6e735ab3, 0x3c846984 ), /* 3024 */ DATA_1x2( 0x21356eba, 0x3ffab0e5 ), /* 189 */ /* 3032 */ DATA_1x2( 0xa34b7e7f, 0x3c7d8157 ), /* 3040 */ DATA_1x2( 0xbfd3f37a, 0x3ffac36b ), /* 190 */ /* 3048 */ DATA_1x2( 0x978e9db4, 0xbc82dfcd ), /* 3056 */ DATA_1x2( 0x3a3c2774, 0x3ffad5ff ), /* 191 */ /* 3064 */ DATA_1x2( 0x231ebb7d, 0x3c8c8a4e ), /* 3072 */ DATA_1x2( 0x995ad3ad, 0x3ffae89f ), /* 192 */ /* 3080 */ DATA_1x2( 0x92cb3386, 0x3c8c1a77 ), /* 3088 */ DATA_1x2( 0xe622f2ff, 0x3ffafb4c ), /* 193 */ /* 3096 */ DATA_1x2( 0x11a142e5, 0xbc888c8d ), /* 3104 */ DATA_1x2( 0x298db666, 0x3ffb0e07 ), /* 194 */ /* 3112 */ DATA_1x2( 0x4ad1d9fa, 0xbc907b8f ), /* 3120 */ DATA_1x2( 0x6c9a8952, 0x3ffb20ce ), /* 195 */ /* 3128 */ DATA_1x2( 0xa41433c7, 0x3c889c2e ), /* 3136 */ DATA_1x2( 0xb84f15fb, 0x3ffb33a2 ), /* 196 */ /* 3144 */ DATA_1x2( 0x56dcaeba, 0xbc55c3d9 ), /* 3152 */ DATA_1x2( 0x15b749b1, 0x3ffb4684 ), /* 197 */ /* 3160 */ DATA_1x2( 0xdac8ff80, 0xbc7274ae ), /* 3168 */ DATA_1x2( 0x8de5593a, 0x3ffb5972 ), /* 198 */ /* 3176 */ DATA_1x2( 0x3da6f640, 0xbc90a40e ), /* 3184 */ DATA_1x2( 0x29f1c52a, 0x3ffb6c6e ), /* 199 */ /* 3192 */ DATA_1x2( 0xce76df06, 0x3c85c620 ), /* 3200 */ DATA_1x2( 0xf2fb5e47, 0x3ffb7f76 ), /* 200 */ /* 3208 */ DATA_1x2( 0x38ad9334, 0xbc68d6f4 ), /* 3216 */ DATA_1x2( 0xf22749e4, 0x3ffb928c ), /* 201 */ /* 3224 */ DATA_1x2( 0xe1b51e41, 0xbc8fda52 ), /* 3232 */ DATA_1x2( 0x30a1064a, 0x3ffba5b0 ), /* 202 */ /* 3240 */ DATA_1x2( 0x6b588a36, 0xbc91eee2 ), /* 3248 */ DATA_1x2( 0xb79a6f1f, 0x3ffbb8e0 ), /* 203 */ /* 3256 */ DATA_1x2( 0x7b3e2cd8, 0xbc32141a ), /* 3264 */ DATA_1x2( 0x904bc1d2, 0x3ffbcc1e ), /* 204 */ /* 3272 */ DATA_1x2( 0x0a5fddcd, 0x3c74ffd7 ), /* 3280 */ DATA_1x2( 0xc3f3a207, 0x3ffbdf69 ), /* 205 */ /* 3288 */ DATA_1x2( 0x507554e5, 0xbc302899 ), /* 3296 */ DATA_1x2( 0x5bd71e09, 0x3ffbf2c2 ), /* 206 */ /* 3304 */ DATA_1x2( 0xfa9298ad, 0xbc91bdfb ), /* 3312 */ DATA_1x2( 0x6141b33d, 0x3ffc0628 ), /* 207 */ /* 3320 */ DATA_1x2( 0xd4c0010c, 0xbc80dda2 ), /* 3328 */ DATA_1x2( 0xdd85529c, 0x3ffc199b ), /* 208 */ /* 3336 */ DATA_1x2( 0x30af0cb3, 0x3c736eae ), /* 3344 */ DATA_1x2( 0xd9fa652c, 0x3ffc2d1c ), /* 209 */ /* 3352 */ DATA_1x2( 0xaadf8d68, 0xbc8a007d ), /* 3360 */ DATA_1x2( 0x5fffd07a, 0x3ffc40ab ), /* 210 */ /* 3368 */ DATA_1x2( 0x5c9ffd93, 0x3c8ee332 ), /* 3376 */ DATA_1x2( 0x78fafb22, 0x3ffc5447 ), /* 211 */ /* 3384 */ DATA_1x2( 0x391181d3, 0x3c836909 ), /* 3392 */ DATA_1x2( 0x2e57d14b, 0x3ffc67f1 ), /* 212 */ /* 3400 */ DATA_1x2( 0xd10959ac, 0x3c84e08f ), /* 3408 */ DATA_1x2( 0x8988c933, 0x3ffc7ba8 ), /* 213 */ /* 3416 */ DATA_1x2( 0xdbdf9547, 0xbc811cd7 ), /* 3424 */ DATA_1x2( 0x9406e7b5, 0x3ffc8f6d ), /* 214 */ /* 3432 */ DATA_1x2( 0x384e1a67, 0x3c63cdaf ), /* 3440 */ DATA_1x2( 0x5751c4db, 0x3ffca340 ), /* 215 */ /* 3448 */ DATA_1x2( 0x7bef6622, 0xbc7ac28b ), /* 3456 */ DATA_1x2( 0xdcef9069, 0x3ffcb720 ), /* 216 */ /* 3464 */ DATA_1x2( 0x6c921968, 0x3c676b2c ), /* 3472 */ DATA_1x2( 0x2e6d1675, 0x3ffccb0f ), /* 217 */ /* 3480 */ DATA_1x2( 0x7207b9e1, 0xbc703058 ), /* 3488 */ DATA_1x2( 0x555dc3fa, 0x3ffcdf0b ), /* 218 */ /* 3496 */ DATA_1x2( 0x83ccb5d2, 0xbc808a18 ), /* 3504 */ DATA_1x2( 0x5b5bab74, 0x3ffcf315 ), /* 219 */ /* 3512 */ DATA_1x2( 0x592af7fc, 0xbc8cc734 ), /* 3520 */ DATA_1x2( 0x4a07897c, 0x3ffd072d ), /* 220 */ /* 3528 */ DATA_1x2( 0x3ffffa6f, 0xbc8fad5d ), /* 3536 */ DATA_1x2( 0x2b08c968, 0x3ffd1b53 ), /* 221 */ /* 3544 */ DATA_1x2( 0x44f587e8, 0x3c87752a ), /* 3552 */ DATA_1x2( 0x080d89f2, 0x3ffd2f87 ), /* 222 */ /* 3560 */ DATA_1x2( 0x3875a949, 0xbc900dae ), /* 3568 */ DATA_1x2( 0xeacaa1d6, 0x3ffd43c8 ), /* 223 */ /* 3576 */ DATA_1x2( 0xefeef52d, 0x3c85b66f ), /* 3584 */ DATA_1x2( 0xdcfba487, 0x3ffd5818 ), /* 224 */ /* 3592 */ DATA_1x2( 0xa63d07a7, 0x3c74a385 ), /* 3600 */ DATA_1x2( 0xe862e6d3, 0x3ffd6c76 ), /* 225 */ /* 3608 */ DATA_1x2( 0xd908a96e, 0x3c5159d9 ), /* 3616 */ DATA_1x2( 0x16c98398, 0x3ffd80e3 ), /* 226 */ /* 3624 */ DATA_1x2( 0x2040220f, 0xbc82919e ), /* 3632 */ DATA_1x2( 0x71ff6075, 0x3ffd955d ), /* 227 */ /* 3640 */ DATA_1x2( 0x16117a68, 0x3c8c254d ), /* 3648 */ DATA_1x2( 0x03db3285, 0x3ffda9e6 ), /* 228 */ /* 3656 */ DATA_1x2( 0xd5c192ac, 0x3c8e5a50 ), /* 3664 */ DATA_1x2( 0xd63a8315, 0x3ffdbe7c ), /* 229 */ /* 3672 */ DATA_1x2( 0x9fbd0e04, 0xbc8d8c32 ), /* 3680 */ DATA_1x2( 0xf301b460, 0x3ffdd321 ), /* 230 */ /* 3688 */ DATA_1x2( 0xac016b4b, 0x3c843a59 ), /* 3696 */ DATA_1x2( 0x641c0658, 0x3ffde7d5 ), /* 231 */ /* 3704 */ DATA_1x2( 0xfbd5f2a6, 0xbc8ea6e6 ), /* 3712 */ DATA_1x2( 0x337b9b5f, 0x3ffdfc97 ), /* 232 */ /* 3720 */ DATA_1x2( 0x07b43e1f, 0xbc82d521 ), /* 3728 */ DATA_1x2( 0x6b197d17, 0x3ffe1167 ), /* 233 */ /* 3736 */ DATA_1x2( 0xeab2cbb4, 0xbc63e8e3 ), /* 3744 */ DATA_1x2( 0x14f5a129, 0x3ffe2646 ), /* 234 */ /* 3752 */ DATA_1x2( 0x3b470dc9, 0xbc892ab9 ), /* 3760 */ DATA_1x2( 0x3b16ee12, 0x3ffe3b33 ), /* 235 */ /* 3768 */ DATA_1x2( 0xcd0d2cda, 0xbc8b7966 ), /* 3776 */ DATA_1x2( 0xe78b3ff6, 0x3ffe502e ), /* 236 */ /* 3784 */ DATA_1x2( 0x603a88d3, 0x3c74b604 ), /* 3792 */ DATA_1x2( 0x24676d76, 0x3ffe6539 ), /* 237 */ /* 3800 */ DATA_1x2( 0x4c2ff1cf, 0xbc776caa ), /* 3808 */ DATA_1x2( 0xfbc74c83, 0x3ffe7a51 ), /* 238 */ /* 3816 */ DATA_1x2( 0x519d7271, 0x3c83c5ec ), /* 3824 */ DATA_1x2( 0x77cdb740, 0x3ffe8f79 ), /* 239 */ /* 3832 */ DATA_1x2( 0x525d9940, 0xbc81d5fc ), /* 3840 */ DATA_1x2( 0xa2a490da, 0x3ffea4af ), /* 240 */ /* 3848 */ DATA_1x2( 0x8fd391f1, 0xbc8ff712 ), /* 3856 */ DATA_1x2( 0x867cca6e, 0x3ffeb9f4 ), /* 241 */ /* 3864 */ DATA_1x2( 0xaaea3d21, 0x3c855cd8 ), /* 3872 */ DATA_1x2( 0x2d8e67f1, 0x3ffecf48 ), /* 242 */ /* 3880 */ DATA_1x2( 0xe223747d, 0xbc8dae98 ), /* 3888 */ DATA_1x2( 0xa2188510, 0x3ffee4aa ), /* 243 */ /* 3896 */ DATA_1x2( 0x7c2bed49, 0x3c826994 ), /* 3904 */ DATA_1x2( 0xee615a27, 0x3ffefa1b ), /* 244 */ /* 3912 */ DATA_1x2( 0x41aa2008, 0x3c8ec3bc ), /* 3920 */ DATA_1x2( 0x1cb6412a, 0x3fff0f9c ), /* 245 */ /* 3928 */ DATA_1x2( 0x7e9afe9e, 0xbc83b613 ), /* 3936 */ DATA_1x2( 0x376bba97, 0x3fff252b ), /* 246 */ /* 3944 */ DATA_1x2( 0xc3a9eb32, 0x3c842b94 ), /* 3952 */ DATA_1x2( 0x48dd7274, 0x3fff3ac9 ), /* 247 */ /* 3960 */ DATA_1x2( 0x878ba7c7, 0xbc69fa74 ), /* 3968 */ DATA_1x2( 0x5b6e4540, 0x3fff5076 ), /* 248 */ /* 3976 */ DATA_1x2( 0x31d185ed, 0x3c8a64a9 ), /* 3984 */ DATA_1x2( 0x798844f8, 0x3fff6632 ), /* 249 */ /* 3992 */ DATA_1x2( 0x75ee0efd, 0x3c901f3a ), /* 4000 */ DATA_1x2( 0xad9cbe14, 0x3fff7bfd ), /* 250 */ /* 4008 */ DATA_1x2( 0xe43be3ed, 0xbc8e37ba ), /* 4016 */ DATA_1x2( 0x02243c89, 0x3fff91d8 ), /* 251 */ /* 4024 */ DATA_1x2( 0xe6ed84fa, 0xbc516a9c ), /* 4032 */ DATA_1x2( 0x819e90d8, 0x3fffa7c1 ), /* 252 */ /* 4040 */ DATA_1x2( 0x4d91cd9c, 0x3c77893b ), /* 4048 */ DATA_1x2( 0x3692d514, 0x3fffbdba ), /* 253 */ /* 4056 */ DATA_1x2( 0xb2effc76, 0xbc699c7d ), /* 4064 */ DATA_1x2( 0x2b8f71f1, 0x3fffd3c2 ), /* 254 */ /* 4072 */ DATA_1x2( 0x4160cc89, 0x3c5305c1 ), /* 4080 */ DATA_1x2( 0x6b2a23d9, 0x3fffe9d9 ), /* 255 */ /* 4088 */ DATA_1x2( 0x677f983f, 0x3c64b458 ), /* F_PRECISION acc pow2 result range check */ /* 4096 */ DATA_1x2( 0xfa5abcbf, 0x03e00b1a ), /* 4104 */ DATA_1x2( 0x70cf671a, 0x7c0fdebe ), /* 4112 */ DATA_1x2( 0x6b2a23d9, 0x7fefe9d9 ), /* R_PRECISION acc pow2 result range check */ /* 4120 */ DATA_1x2( 0xfa5abcbf, 0x3a100b1a ), /* 4128 */ DATA_1x2( 0x70cf671a, 0x0ddfdebe ), /* 4136 */ DATA_1x2( 0x6b2a23d9, 0x47efe9d9 ), /* 'big' for fast pow/exp rint computation */ /* 4144 */ DATA_1x2( 0x00000000, 0x42080000 ), /* 2^-F_EXP_WIDTH/log(2) in full, hi, lo */ /* 4152 */ DATA_1x2( 0x652b82fe, 0x3f471547 ), /* 4160 */ DATA_1x2( 0x00000000, 0x3f471548 ), /* 4168 */ DATA_1x2( 0xa03d1106, 0xbdf35a8f ), /* Fast exp F_PRECISION arg range check */ /* 4176 */ DATA_1x2( 0xfefa39f0, 0x40862e42 ), /* Fast exp R_PRECISION arg range check */ /* 4184 */ DATA_1x2( 0xfefa39f0, 0x40562e42 ), /* F_PRECISION fast pow2 poly coeffs */ /* 4192 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* 4200 */ DATA_1x2( 0xfefa39e3, 0x40962e42 ), /* 4208 */ DATA_1x2( 0xff82c5b7, 0x412ebfbd ), /* 4216 */ DATA_1x2( 0xf141f5f9, 0x41bc6b08 ), /* 4224 */ DATA_1x2( 0x639a3d4f, 0x4243b2ab ), /* R_PRECISION fast pow2 poly coeffs */ /* 4232 */ DATA_1x2( 0x0000006d, 0x3ff00000 ), /* 4240 */ DATA_1x2( 0x27f0298e, 0x3fe62e43 ), /* 4248 */ DATA_1x2( 0xe31e7970, 0x3fcebfbd ), /* Power of 2 to scale down y: 2^-F_EXP_WIDTH */ /* 4256 */ DATA_1x2( 0x00000000, 0x3f400000 ), /* ln2 in hi/lo */ /* 4264 */ DATA_1x2( 0x00000000, 0x3fe62e43 ), /* 4272 */ DATA_1x2( 0x0ca86c39, 0xbe205c61 ), /* ln2/ln10 in hi/lo */ /* 4280 */ DATA_1x2( 0x60000000, 0x3fd34413 ), /* 4288 */ DATA_1x2( 0x0219dc1e, 0xbe4ec10c ), /* F_PRECISION acc pow2 poly coeffs */ /* 4296 */ DATA_1x2( 0xfefa39ef, 0x3fe62e42 ), /* 4304 */ DATA_1x2( 0xff82c589, 0x3fcebfbd ), /* 4312 */ DATA_1x2( 0xd704a0c6, 0x3fac6b08 ), /* 4320 */ DATA_1x2( 0x7bda5fa2, 0x3f83b2ab ), /* 4328 */ DATA_1x2( 0xe78a6731, 0x3f55d87f ), /* R_PRECISION acc pow2 poly coeffs */ /* 4336 */ DATA_1x2( 0x0000006d, 0x3ff00000 ), /* 4344 */ DATA_1x2( 0x27f0298e, 0x3fe62e43 ), /* 4352 */ DATA_1x2( 0xe31e7970, 0x3fcebfbd ), /* 'big' for accurate pow/exp rint computation */ /* 4360 */ DATA_1x2( 0x00000000, 0x42b80000 ), /* F_PRECISION argument and result sreening values */ /* 4368 */ DATA_1x2( 0x00000000, 0x3c900000 ), /* 4376 */ DATA_1x2( 0xd52d3052, 0x03f74910 ), /* R_PRECISION argument and result sreening values */ /* 4384 */ DATA_1x2( 0x33000000, 0x00000000 ), /* 4392 */ DATA_1x2( 0x0fcff1b5, 0x00000000 ), /* F_PRECISION argument screening values for 2^x */ /* 4400 */ DATA_1x2( 0x00000000, 0x0400cc00 ), /* R_PRECISION argument and result sreening values */ /* 4408 */ DATA_1x2( 0x10160000, 0x00000000 ), /* F_PRECISION argument and result sreening values for 10^x */ /* 4416 */ DATA_1x2( 0x00000000, 0x3c900000 ), /* 4424 */ DATA_1x2( 0x46e36b53, 0x03e439b7 ), /* R_PRECISION argument and result sreening values for 10^x */ /* 4432 */ DATA_1x2( 0x33000000, 0x00000000 ), /* 4440 */ DATA_1x2( 0x0f349e36, 0x00000000 ), /* F_PRECISION acc exp poly coeffs */ /* 4448 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* 4456 */ DATA_1x2( 0xffffff8e, 0x3fdfffff ), /* 4464 */ DATA_1x2( 0x555555b7, 0x3fc55555 ), /* 4472 */ DATA_1x2( 0x8e38e382, 0x3fa55555 ), /* 4480 */ DATA_1x2( 0x1111110a, 0x3f811111 ), /* F_PRECISION acc exp poly coeffs */ /* 4488 */ DATA_1x2( 0xbbb55516, 0x40026bb1 ), /* 4496 */ DATA_1x2( 0xc73cea69, 0x40053524 ), /* 4504 */ DATA_1x2( 0x91de27bd, 0x40004705 ), /* 4512 */ DATA_1x2( 0x09fd9f5a, 0x3ff2bd76 ), /* 4520 */ DATA_1x2( 0xce48f476, 0x3fe142a0 ), /* 4528 */ DATA_1x2( 0x0847c7c4, 0x3fca7ed7 ), /* F_PRECISION expm1 initial screening constants */ /* 4536 */ DATA_1x2( 0x00000000, 0x3f800000 ), /* 4544 */ DATA_1x2( 0xfefa39f0, 0x40862e42 ), /* 4552 */ DATA_1x2( 0x872320e2, 0x4042b708 ), /* R_PRECISION expm1 initial screening constants */ /* 4560 */ DATA_1x2( 0x3c000000, 0x00000000 ), /* 4568 */ DATA_1x2( 0x42b17218, 0x00000000 ), /* 4576 */ DATA_1x2( 0x418aa122, 0x00000000 ), /* F_PRECISION expm1 poly range poly coeffs */ /* 4584 */ DATA_1x2( 0x00000000, 0x3fe00000 ), /* 4592 */ DATA_1x2( 0x55555555, 0x3fc55555 ), /* 4600 */ DATA_1x2( 0x55553814, 0x3fa55555 ), /* 4608 */ DATA_1x2( 0x111120f6, 0x3f811111 ), /* 4616 */ DATA_1x2( 0x86e87992, 0x3f56c16e ), /* 4624 */ DATA_1x2( 0xd2f0b5c7, 0x3f2a01a0 ), /* F_PRECISION expm1 reduce range poly coeffs */ /* 4632 */ DATA_1x2( 0x00000000, 0x3fe00000 ), /* 4640 */ DATA_1x2( 0x55555555, 0x3fc55555 ), /* 4648 */ DATA_1x2( 0x55553814, 0x3fa55555 ), /* 4656 */ DATA_1x2( 0x111120f6, 0x3f811111 ), /* 4664 */ DATA_1x2( 0x86e87992, 0x3f56c16e ), /* 4672 */ DATA_1x2( 0xd2f0b5c7, 0x3f2a01a0 ), /* R_PRECISION expm1 poly range poly coeffs */ /* 4680 */ DATA_1x2( 0xffff7778, 0x3fefffff ), /* 4688 */ DATA_1x2( 0x000071c7, 0x3fe00000 ), /* 4696 */ DATA_1x2( 0x99998843, 0x3fc55559 ), /* 4704 */ DATA_1x2( 0x555549c6, 0x3fa55555 ), /* R_PRECISION expm1 reduce range poly coeffs */ /* 4712 */ DATA_1x2( 0xfefa2417, 0x3fe62e42 ), /* 4720 */ DATA_1x2( 0xff82f808, 0x3fcebfbd ), /* 4728 */ DATA_1x2( 0x9214985c, 0x3fac6b0b ), /* 4736 */ DATA_1x2( 0x6fba4c01, 0x3f83b2ab ), /* F_PRECISION sinh/cosh argument screening constants */ /* 4744 */ DATA_1x2( 0x8fb9f87e, 0x408633ce ), /* 4752 */ DATA_1x2( 0x293abcb2, 0x00bf9330 ), /* 4760 */ DATA_1x2( 0x667f3bcc, 0x3fc6a09e ), /* R_PRECISION sinh/cosh argument screening constants */ /* 4768 */ DATA_1x2( 0x42b2d4fd, 0x00000000 ), /* 4776 */ DATA_1x2( 0x047dd00a, 0x00000000 ), /* 4784 */ DATA_1x2( 0x3e3504f3, 0x00000000 ), /* F_PRECISION sinh poly range poly coeffs */ /* 4792 */ DATA_1x2( 0x55555555, 0x3fc55555 ), /* 4800 */ DATA_1x2( 0x11111108, 0x3f811111 ), /* 4808 */ DATA_1x2( 0x1a03c7ed, 0x3f2a01a0 ), /* 4816 */ DATA_1x2( 0x750cdc28, 0x3ec71de3 ), /* 4824 */ DATA_1x2( 0x69964294, 0x3e5ae9b8 ), /* F_PRECISION cosh poly range poly coeffs */ /* 4832 */ DATA_1x2( 0x00000000, 0x3fe00000 ), /* 4840 */ DATA_1x2( 0x55555539, 0x3fa55555 ), /* 4848 */ DATA_1x2( 0x16c4ecab, 0x3f56c16c ), /* 4856 */ DATA_1x2( 0xcb8adc6c, 0x3efa019f ), /* 4864 */ DATA_1x2( 0x264635c5, 0x3e92811d ), /* R_PRECISION sinh poly range poly coeffs */ /* 4872 */ DATA_1x2( 0x000cfb0b, 0x3ff00000 ), /* 4880 */ DATA_1x2( 0x6b60aac4, 0x3fc55554 ), /* 4888 */ DATA_1x2( 0x7c0f16b2, 0x3f8115f1 ), /* R_PRECISION cosh poly range poly coeffs */ /* 4896 */ DATA_1x2( 0xfffff98b, 0x3fefffff ), /* 4904 */ DATA_1x2( 0x0019e9bb, 0x3fe00000 ), /* 4912 */ DATA_1x2( 0x51b349b1, 0x3fa55554 ), /* 4920 */ DATA_1x2( 0xb5354813, 0x3f56c7eb ), /* B_PRECISION .5, 1.0 and 2.0 */ /* 4928 */ DATA_1x2( 0x00000000, 0x3fe00000 ), /* 4936 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* 4944 */ DATA_1x2( 0x00000000, 0x40000000 ), /* B_PRECISION max float */ /* 4952 */ DATA_1x2( 0xffffffff, 0x7fefffff ), /* 1/ln2 in B_PRECISION */ /* 4960 */ DATA_1x2( 0x652b82fe, 0x3ff71547 ), /* ln10/ln2 in B_PRECISION */ /* 4968 */ DATA_1x2( 0x0979a371, 0x400a934f ), /* ln2/2 in F_PRECISION */ /* 4976 */ DATA_1x2( 0xfefa39ef, 0x3fd62e42 ), /* F_PRECISION acc log2 poly coeffs */ /* 4984 */ DATA_1x2( 0xffac83b5, 0x3fc47fd3 ), /* 4992 */ DATA_1x2( 0xa1437886, 0xbfb55046 ), /* 5000 */ DATA_1x2( 0x1fa518cf, 0x3fa7a334 ), /* 5008 */ DATA_1x2( 0xe1cdc887, 0xbf9b4e9f ), /* 5016 */ DATA_1x2( 0xdfbf11c7, 0x3f903962 ), /* 5024 */ DATA_1x2( 0x93bf219c, 0xbf83adb0 ), /* R_PRECISION acc log2 poly coeffs */ /* 5032 */ DATA_1x2( 0xffff3663, 0x3fefffff ), /* 5040 */ DATA_1x2( 0xff09b1bc, 0xbfd62e42 ), /* 5048 */ DATA_1x2( 0x33b3b950, 0x3fc47fe0 ), /* 5056 */ DATA_1x2( 0xe00972df, 0xbfb55013 ), /* F_PRECISION fast log2 poly coeffs */ /* 5064 */ DATA_1x2( 0xfefa39ef, 0xbfd62e42 ), /* 5072 */ DATA_1x2( 0xffac83ac, 0x3fc47fd3 ), /* 5080 */ DATA_1x2( 0xa13d920a, 0xbfb55046 ), /* 5088 */ DATA_1x2( 0x1ffa5722, 0x3fa7a334 ), /* 5096 */ DATA_1x2( 0x5bcb09e0, 0xbf9b4ebe ), /* 5104 */ DATA_1x2( 0xeddab426, 0x3f90390f ), /* * Fj, Rj = 1/(Fj*ln2) and Lj = log2(Fj). Lj and Rj are * given in hi and low parts. Fj and the hi part or Lj are * in reduced precision; Rj, lo(Rj) and lo(Lj) in standard * precision with hi(Rj) = Rj - lo(Rj) * * offset row */ /* 5112 */ 0x3f800000, 0x00000000, /* 000 */ /* 5120 */ DATA_1x2( 0x652b82fe, 0x3ff71547 ), /* 5128 */ DATA_1x2( 0x2b82fe17, 0x3f754765 ), /* 5136 */ DATA_1x2( 0x00000000, 0x00000000 ), /* 5144 */ 0x3f810000, 0x3c37f286, /* 001 */ /* 5152 */ DATA_1x2( 0x7442fd04, 0x3ff6e778 ), /* 5160 */ DATA_1x2( 0xbd02fbf1, 0xbf78878b ), /* 5168 */ DATA_1x2( 0x5d00e391, 0xbdf221ef ), /* 5176 */ 0x3f820000, 0x3cb73cb4, /* 002 */ /* 5184 */ DATA_1x2( 0xed75ac4d, 0x3ff6ba5d ), /* 5192 */ DATA_1x2( 0x294ecc70, 0xbf56884a ), /* 5200 */ DATA_1x2( 0xa629b8a0, 0x3df70b48 ), /* 5208 */ 0x3f830000, 0x3d08e68f, /* 003 */ /* 5216 */ DATA_1x2( 0xaf111c54, 0x3ff68df3 ), /* 5224 */ DATA_1x2( 0x2238a83d, 0x3f6be75e ), /* 5232 */ DATA_1x2( 0xda24fd76, 0xbe15d997 ), /* 5240 */ 0x3f840000, 0x3d35d69c, /* 004 */ /* 5248 */ DATA_1x2( 0xb77002e7, 0x3ff66235 ), /* 5256 */ DATA_1x2( 0x8ffd1920, 0xbf7dca48 ), /* 5264 */ DATA_1x2( 0xf19d93f2, 0xbe14e204 ), /* 5272 */ 0x3f850000, 0x3d626fd6, /* 005 */ /* 5280 */ DATA_1x2( 0x23c5c923, 0x3ff63720 ), /* 5288 */ DATA_1x2( 0x746dba88, 0xbf61bfb8 ), /* 5296 */ DATA_1x2( 0x842c1c1e, 0xbe0bd552 ), /* 5304 */ 0x3f860000, 0x3d8759c5, /* 006 */ /* 5312 */ DATA_1x2( 0x2ef7e44b, 0x3ff60caf ), /* 5320 */ DATA_1x2( 0xefc89531, 0x3f695e5d ), /* 5328 */ DATA_1x2( 0x530c22d1, 0xbdd75819 ), /* 5336 */ 0x3f870000, 0x3d9d517f, /* 007 */ /* 5344 */ DATA_1x2( 0x3084471b, 0x3ff5e2df ), /* 5352 */ DATA_1x2( 0x7bb8e55d, 0xbf7d20cf ), /* 5360 */ DATA_1x2( 0xe93fd977, 0xbe06c071 ), /* 5368 */ 0x3f880000, 0x3db31fb8, /* 008 */ /* 5376 */ DATA_1x2( 0x9b743f0d, 0x3ff5b9ac ), /* 5384 */ DATA_1x2( 0x2f03caf3, 0xbf594d92 ), /* 5392 */ DATA_1x2( 0xa60cceb2, 0xbe14dbb3 ), /* 5400 */ 0x3f890000, 0x3dc8c50b, /* 009 */ /* 5408 */ DATA_1x2( 0xfd5b1b17, 0x3ff59113 ), /* 5416 */ DATA_1x2( 0x5b1b1682, 0x3f7113fd ), /* 5424 */ DATA_1x2( 0xb55ce465, 0x3e2c8c66 ), /* 5432 */ 0x3f8a0000, 0x3dde4212, /* 010 */ /* 5440 */ DATA_1x2( 0xfd6002c7, 0x3ff56911 ), /* 5448 */ DATA_1x2( 0x9ffd396c, 0xbf76ee02 ), /* 5456 */ DATA_1x2( 0x4c7658b5, 0x3de5b577 ), /* 5464 */ 0x3f8b0000, 0x3df39761, /* 011 */ /* 5472 */ DATA_1x2( 0x5b526d93, 0x3ff541a3 ), /* 5480 */ DATA_1x2( 0x26d936c3, 0x3f3a35b5 ), /* 5488 */ DATA_1x2( 0x9bc68494, 0xbe2d00b4 ), /* 5496 */ 0x3f8c0000, 0x3e0462c4, /* 012 */ /* 5504 */ DATA_1x2( 0xeec8b247, 0x3ff51ac4 ), /* 5512 */ DATA_1x2( 0xc8b24766, 0x3f7ac4ee ), /* 5520 */ DATA_1x2( 0xc72c4f79, 0x3e39b4f3 ), /* 5528 */ 0x3f8d0000, 0x3e0ee68d, /* 013 */ /* 5536 */ DATA_1x2( 0xa6482e4b, 0x3ff4f473 ), /* 5544 */ DATA_1x2( 0x6fa36af4, 0xbf6718b3 ), /* 5552 */ DATA_1x2( 0x0942b758, 0xbe3155a9 ), /* 5560 */ 0x3f8e0000, 0x3e19574f, /* 014 */ /* 5568 */ DATA_1x2( 0x86768bb6, 0x3ff4ceac ), /* 5576 */ DATA_1x2( 0xed176c56, 0x3f6d590c ), /* 5584 */ DATA_1x2( 0xd0fa8f96, 0x3e13c570 ), /* 5592 */ 0x3f8f0000, 0x3e23b550, /* 015 */ /* 5600 */ DATA_1x2( 0xa953b3e9, 0x3ff4a96c ), /* 5608 */ DATA_1x2( 0xac4c1731, 0xbf769356 ), /* 5616 */ DATA_1x2( 0xcb3b1c5b, 0xbe29f022 ), /* 5624 */ 0x3f900000, 0x3e2e00d2, /* 016 */ /* 5632 */ DATA_1x2( 0x3d7c02a9, 0x3ff484b1 ), /* 5640 */ DATA_1x2( 0xf00aa3e2, 0x3f52c4f5 ), /* 5648 */ DATA_1x2( 0xe1817fd4, 0xbe2810a5 ), /* 5656 */ 0x3f910000, 0x3e383a17, /* 017 */ /* 5664 */ DATA_1x2( 0x857253db, 0x3ff46077 ), /* 5672 */ DATA_1x2( 0x8dac24ff, 0xbf7f887a ), /* 5680 */ DATA_1x2( 0x01ac7fc6, 0xbe3621fb ), /* 5688 */ 0x3f920000, 0x3e42615f, /* 018 */ /* 5696 */ DATA_1x2( 0xd6f18b64, 0x3ff43cbc ), /* 5704 */ DATA_1x2( 0x73a4dfcc, 0xbf4a1948 ), /* 5712 */ DATA_1x2( 0x9a045bb7, 0xbe3fa1f8 ), /* 5720 */ 0x3f930000, 0x3e4c76e8, /* 019 */ /* 5728 */ DATA_1x2( 0x9a453c13, 0x3ff4197e ), /* 5736 */ DATA_1x2( 0x453c133c, 0x3f797e9a ), /* 5744 */ DATA_1x2( 0x7c0beb3a, 0x3e2df9c3 ), /* 5752 */ 0x3f940000, 0x3e567af1, /* 020 */ /* 5760 */ DATA_1x2( 0x49a91758, 0x3ff3f6ba ), /* 5768 */ DATA_1x2( 0xadd14f69, 0xbf628b6c ), /* 5776 */ DATA_1x2( 0x27dfc23e, 0x3e3b69d9 ), /* 5784 */ 0x3f950000, 0x3e606db6, /* 021 */ /* 5792 */ DATA_1x2( 0x70aed42e, 0x3ff3d46d ), /* 5800 */ DATA_1x2( 0xaed42e78, 0x3f746d70 ), /* 5808 */ DATA_1x2( 0xdc81c4db, 0x3e3bb29b ), /* 5816 */ 0x3f960000, 0x3e6a4f72, /* 022 */ /* 5824 */ DATA_1x2( 0xabaa3ffe, 0x3ff3b295 ), /* 5832 */ DATA_1x2( 0xab800342, 0xbf6ad4a8 ), /* 5840 */ DATA_1x2( 0xdf91e96b, 0x3e3864b2 ), /* 5848 */ 0x3f970000, 0x3e74205f, /* 023 */ /* 5856 */ DATA_1x2( 0xa7233050, 0x3ff39130 ), /* 5864 */ DATA_1x2( 0x23304fc3, 0x3f7130a7 ), /* 5872 */ DATA_1x2( 0x331f27cf, 0x3e2d39a9 ), /* 5880 */ 0x3f980000, 0x3e7de0b6, /* 024 */ /* 5888 */ DATA_1x2( 0x1f4d0ffe, 0x3ff3703c ), /* 5896 */ DATA_1x2( 0x65e00337, 0xbf6f87c1 ), /* 5904 */ DATA_1x2( 0xd7715c9a, 0xbe2bf65f ), /* 5912 */ 0x3f990000, 0x3e83c857, /* 025 */ /* 5920 */ DATA_1x2( 0xdf83c645, 0x3ff34fb5 ), /* 5928 */ DATA_1x2( 0x078c895b, 0x3f6f6bbf ), /* 5936 */ DATA_1x2( 0xda43f396, 0xbe313f3f ), /* 5944 */ 0x3f9a0000, 0x3e88983f, /* 026 */ /* 5952 */ DATA_1x2( 0xc1cdb958, 0x3ff32f9b ), /* 5960 */ DATA_1x2( 0x3246a7d2, 0xbf70643e ), /* 5968 */ DATA_1x2( 0x28d3da3f, 0xbe34b3d2 ), /* 5976 */ 0x3f9b0000, 0x3e8d602e, /* 027 */ /* 5984 */ DATA_1x2( 0xae62b18b, 0x3ff30feb ), /* 5992 */ DATA_1x2( 0xc563159f, 0x3f6fd75c ), /* 6000 */ DATA_1x2( 0x1f5ae719, 0xbe4adc1f ), /* 6008 */ 0x3f9c0000, 0x3e92203d, /* 028 */ /* 6016 */ DATA_1x2( 0x9b3764eb, 0x3ff2f0a3 ), /* 6024 */ DATA_1x2( 0x91362a84, 0xbf6eb8c9 ), /* 6032 */ DATA_1x2( 0x73048b73, 0x3e461c0e ), /* 6040 */ 0x3f9d0000, 0x3e96d888, /* 029 */ /* 6048 */ DATA_1x2( 0x8b8d7636, 0x3ff2d1c1 ), /* 6056 */ DATA_1x2( 0x8d7635e2, 0x3f71c18b ), /* 6064 */ DATA_1x2( 0x8487642e, 0xbe2d932a ), /* 6072 */ 0x3f9e0000, 0x3e9b8926, /* 030 */ /* 6080 */ DATA_1x2( 0x8f87b4a7, 0x3ff2b343 ), /* 6088 */ DATA_1x2( 0xf096b214, 0xbf6978e0 ), /* 6096 */ DATA_1x2( 0xd9b32267, 0x3e4d499b ), /* 6104 */ 0x3f9f0000, 0x3ea03232, /* 031 */ /* 6112 */ DATA_1x2( 0xc3c26cac, 0x3ff29527 ), /* 6120 */ DATA_1x2( 0xc26cac5a, 0x3f7527c3 ), /* 6128 */ DATA_1x2( 0xda293433, 0xbe3393ee ), /* 6136 */ 0x3fa00000, 0x3ea4d3c2, /* 032 */ /* 6144 */ DATA_1x2( 0x50ef9bfe, 0x3ff2776c ), /* 6152 */ DATA_1x2( 0x20c8030e, 0xbf61275e ), /* 6160 */ DATA_1x2( 0x15fc9258, 0x3e479a37 ), /* 6168 */ 0x3fa10000, 0x3ea96df0, /* 033 */ /* 6176 */ DATA_1x2( 0x6b76ddcf, 0x3ff25a0f ), /* 6184 */ DATA_1x2( 0x76ddcec8, 0x3f7a0f6b ), /* 6192 */ DATA_1x2( 0x641184f9, 0xbe2d9b4a ), /* 6200 */ 0x3fa20000, 0x3eae00d2, /* 034 */ /* 6208 */ DATA_1x2( 0x5318e5ec, 0x3ff23d0f ), /* 6216 */ DATA_1x2( 0x38d0a3c4, 0xbf478567 ), /* 6224 */ DATA_1x2( 0xe1817fd4, 0xbe3810a5 ), /* 6232 */ 0x3fa30000, 0x3eb28c7f, /* 035 */ /* 6240 */ DATA_1x2( 0x529663b9, 0x3ff2206a ), /* 6248 */ DATA_1x2( 0x699c469a, 0xbf7f95ad ), /* 6256 */ DATA_1x2( 0x9b9489e4, 0x3e319dee ), /* 6264 */ 0x3fa40000, 0x3eb7110e, /* 036 */ /* 6272 */ DATA_1x2( 0xbf5a27cd, 0x3ff2041e ), /* 6280 */ DATA_1x2( 0x689f323d, 0x3f507afd ), /* 6288 */ DATA_1x2( 0xbcaf1aa4, 0x3e4b3a19 ), /* 6296 */ 0x3fa50000, 0x3ebb8e96, /* 037 */ /* 6304 */ DATA_1x2( 0xf92668b9, 0x3ff1e82a ), /* 6312 */ DATA_1x2( 0xd997474c, 0xbf77d506 ), /* 6320 */ DATA_1x2( 0x106e404d, 0xbe360413 ), /* 6328 */ 0x3fa60000, 0x3ec0052b, /* 038 */ /* 6336 */ DATA_1x2( 0x69c50564, 0x3ff1cc8d ), /* 6344 */ DATA_1x2( 0x8a0ac8a0, 0x3f691ad3 ), /* 6352 */ DATA_1x2( 0xa19575b0, 0x3e28b0e2 ), /* 6360 */ 0x3fa70000, 0x3ec474e4, /* 039 */ /* 6368 */ DATA_1x2( 0x84baa4c9, 0x3ff1b144 ), /* 6376 */ DATA_1x2( 0x8ab66e3b, 0xbf6d76f6 ), /* 6384 */ DATA_1x2( 0xb4b69337, 0xbe4a3e9b ), /* 6392 */ 0x3fa80000, 0x3ec8ddd4, /* 040 */ /* 6400 */ DATA_1x2( 0xc6fc9491, 0x3ff1964e ), /* 6408 */ DATA_1x2( 0xfc9490d5, 0x3f764ec6 ), /* 6416 */ DATA_1x2( 0x1169656a, 0x3e423e2e ), /* 6424 */ 0x3fa90000, 0x3ecd4012, /* 041 */ /* 6432 */ DATA_1x2( 0xb6a94976, 0x3ff17baa ), /* 6440 */ DATA_1x2( 0x5ada271b, 0xbf515525 ), /* 6448 */ DATA_1x2( 0x432d124c, 0xbe3b8773 ), /* 6456 */ 0x3faa0000, 0x3ed19bb0, /* 042 */ /* 6464 */ DATA_1x2( 0xe2c365a4, 0x3ff16156 ), /* 6472 */ DATA_1x2( 0x3c9a5bca, 0xbf7ea91d ), /* 6480 */ DATA_1x2( 0xa13af882, 0x3e44fec0 ), /* 6488 */ 0x3fab0000, 0x3ed5f0c4, /* 043 */ /* 6496 */ DATA_1x2( 0xe2ef2aa9, 0x3ff14751 ), /* 6504 */ DATA_1x2( 0xbcaaa4f4, 0x3f5d478b ), /* 6512 */ DATA_1x2( 0xdc796e37, 0xbe3a0382 ), /* 6520 */ 0x3fac0000, 0x3eda3f60, /* 044 */ /* 6528 */ DATA_1x2( 0x57323dc3, 0x3ff12d9a ), /* 6536 */ DATA_1x2( 0xcdc23cf4, 0xbf7265a8 ), /* 6544 */ DATA_1x2( 0xbeb7d722, 0xbe418efa ), /* 6552 */ 0x3fad0000, 0x3ede8797, /* 045 */ /* 6560 */ DATA_1x2( 0xe7b5a678, 0x3ff1142e ), /* 6568 */ DATA_1x2( 0xb5a677ee, 0x3f742ee7 ), /* 6576 */ DATA_1x2( 0x6156885a, 0x3e43cf20 ), /* 6584 */ 0x3fae0000, 0x3ee2c97d, /* 046 */ /* 6592 */ DATA_1x2( 0x4489f08c, 0x3ff0fb0e ), /* 6600 */ DATA_1x2( 0xd83dd0a6, 0xbf53c6ed ), /* 6608 */ DATA_1x2( 0xacfcfdcb, 0x3e4a52b6 ), /* 6616 */ 0x3faf0000, 0x3ee70525, /* 047 */ /* 6624 */ DATA_1x2( 0x256d5b6c, 0x3ff0e237 ), /* 6632 */ DATA_1x2( 0x92a493ae, 0xbf7dc8da ), /* 6640 */ DATA_1x2( 0x066d45ec, 0xbe4b8b4f ), /* 6648 */ 0x3fb00000, 0x3eeb3a9f, /* 048 */ /* 6656 */ DATA_1x2( 0x4994022d, 0x3ff0c9a8 ), /* 6664 */ DATA_1x2( 0x28045a51, 0x3f635093 ), /* 6672 */ DATA_1x2( 0x7f1f5f0d, 0x3de97507 ), /* 6680 */ 0x3fb10000, 0x3eef69ff, /* 049 */ /* 6688 */ DATA_1x2( 0x7771e821, 0x3ff0b160 ), /* 6696 */ DATA_1x2( 0x1c2fbd56, 0xbf6d3f11 ), /* 6704 */ DATA_1x2( 0x676289cd, 0xbe477b93 ), /* 6712 */ 0x3fb20000, 0x3ef39355, /* 050 */ /* 6720 */ DATA_1x2( 0x7c86d702, 0x3ff0995e ), /* 6728 */ DATA_1x2( 0x86d70181, 0x3f795e7c ), /* 6736 */ DATA_1x2( 0x20c519e1, 0x3e1e754d ), /* 6744 */ 0x3fb30000, 0x3ef7b6b4, /* 051 */ /* 6752 */ DATA_1x2( 0x2d2bfc6b, 0x3ff081a1 ), /* 6760 */ DATA_1x2( 0xbfc6b540, 0x3f3a12d2 ), /* 6768 */ DATA_1x2( 0xbf05c3fd, 0xbe49ae3b ), /* 6776 */ 0x3fb40000, 0x3efbd42b, /* 052 */ /* 6784 */ DATA_1x2( 0x64633554, 0x3ff06a27 ), /* 6792 */ DATA_1x2( 0x9ccaac06, 0xbf75d89b ), /* 6800 */ DATA_1x2( 0x9d9c3263, 0x3e41960d ), /* 6808 */ 0x3fb50000, 0x3effebcd, /* 053 */ /* 6816 */ DATA_1x2( 0x03a7f6cd, 0x3ff052f0 ), /* 6824 */ DATA_1x2( 0xa7f6cd26, 0x3f72f003 ), /* 6832 */ DATA_1x2( 0x9518ce03, 0xbe35f001 ), /* 6840 */ 0x3fb60000, 0x3f01fed4, /* 054 */ /* 6848 */ DATA_1x2( 0xf2c1c437, 0x3ff03bf9 ), /* 6856 */ DATA_1x2( 0xf8ef2450, 0xbf501834 ), /* 6864 */ DATA_1x2( 0xfe672869, 0x3e572f32 ), /* 6872 */ 0x3fb70000, 0x3f0404e8, /* 055 */ /* 6880 */ DATA_1x2( 0x1f9823ab, 0x3ff02544 ), /* 6888 */ DATA_1x2( 0x67dc5545, 0xbf7abbe0 ), /* 6896 */ DATA_1x2( 0x855b4988, 0xbe5b011f ), /* 6904 */ 0x3fb80000, 0x3f060828, /* 056 */ /* 6912 */ DATA_1x2( 0x7e080215, 0x3ff00ecd ), /* 6920 */ DATA_1x2( 0x100429de, 0x3f6d9afc ), /* 6928 */ DATA_1x2( 0xcb104aea, 0x3e1ac754 ), /* 6936 */ 0x3fb90000, 0x3f08089e, /* 057 */ /* 6944 */ DATA_1x2( 0x0f74f227, 0x3feff12a ), /* 6952 */ DATA_1x2( 0x161bb241, 0xbf5dabe1 ), /* 6960 */ DATA_1x2( 0x2b09c645, 0xbe5d586e ), /* 6968 */ 0x3fba0000, 0x3f0a0650, /* 058 */ /* 6976 */ DATA_1x2( 0x77f9d292, 0x3fefc533 ), /* 6984 */ DATA_1x2( 0xe74a4813, 0x3f44cddf ), /* 6992 */ DATA_1x2( 0xf187a96b, 0xbe45786a ), /* 7000 */ 0x3fbb0000, 0x3f0c0146, /* 059 */ /* 7008 */ DATA_1x2( 0x3f34b8cd, 0x3fef99b5 ), /* 7016 */ DATA_1x2( 0x34b8cd79, 0x3f69b53f ), /* 7024 */ DATA_1x2( 0xd49d71d3, 0x3e5ee52e ), /* 7032 */ 0x3fbc0000, 0x3f0df989, /* 060 */ /* 7040 */ DATA_1x2( 0x796c4570, 0x3fef6ead ), /* 7048 */ DATA_1x2( 0x93ba9037, 0xbf615286 ), /* 7056 */ DATA_1x2( 0x21c4aec5, 0xbe26a2ff ), /* 7064 */ 0x3fbd0000, 0x3f0fef1f, /* 061 */ /* 7072 */ DATA_1x2( 0x454f4101, 0x3fef441a ), /* 7080 */ DATA_1x2( 0x3d0405ea, 0x3f406915 ), /* 7088 */ DATA_1x2( 0xb37b7d45, 0xbe59e2fd ), /* 7096 */ 0x3fbe0000, 0x3f11e20f, /* 062 */ /* 7104 */ DATA_1x2( 0xcbae7ffd, 0x3fef19f9 ), /* 7112 */ DATA_1x2( 0xae7ffd6e, 0x3f69f9cb ), /* 7120 */ DATA_1x2( 0x6fefe267, 0xbe57b1b0 ), /* 7128 */ 0x3fbf0000, 0x3f13d260, /* 063 */ /* 7136 */ DATA_1x2( 0x3f38faa1, 0x3feef04a ), /* 7144 */ DATA_1x2( 0x8e0abe14, 0xbf5f6b81 ), /* 7152 */ DATA_1x2( 0xe015e13c, 0x3e46172f ), /* 7160 */ 0x3fc00000, 0x3f15c01a, /* 064 */ /* 7168 */ DATA_1x2( 0xdc3a03fd, 0x3feec709 ), /* 7176 */ DATA_1x2( 0xe80ff5d2, 0x3f4c2770 ), /* 7184 */ DATA_1x2( 0x43cfd006, 0x3e4cfdeb ), /* 7192 */ 0x3fc10000, 0x3f17ab44, /* 065 */ /* 7200 */ DATA_1x2( 0xe8598c97, 0x3fee9e36 ), /* 7208 */ DATA_1x2( 0x598c9756, 0x3f6e36e8 ), /* 7216 */ DATA_1x2( 0xb3d7b0e6, 0xbe542981 ), /* 7224 */ 0x3fc20000, 0x3f1993e3, /* 066 */ /* 7232 */ DATA_1x2( 0xb25e5dae, 0x3fee75cf ), /* 7240 */ DATA_1x2( 0x4344a363, 0xbf54609b ), /* 7248 */ DATA_1x2( 0x4d90d724, 0x3e556939 ), /* 7256 */ 0x3fc30000, 0x3f1b7a00, /* 067 */ /* 7264 */ DATA_1x2( 0x91f23b11, 0x3fee4dd2 ), /* 7272 */ DATA_1x2( 0xe4762260, 0x3f5ba523 ), /* 7280 */ DATA_1x2( 0x76fee235, 0xbe4249ba ), /* 7288 */ 0x3fc40000, 0x3f1d5da0, /* 068 */ /* 7296 */ DATA_1x2( 0xe767da1d, 0x3fee263d ), /* 7304 */ DATA_1x2( 0x9825e325, 0xbf69c218 ), /* 7312 */ DATA_1x2( 0x64ccd537, 0xbe457f7a ), /* 7320 */ 0x3fc50000, 0x3f1f3eca, /* 069 */ /* 7328 */ DATA_1x2( 0x1b829d3b, 0x3fedff10 ), /* 7336 */ DATA_1x2( 0xac58aceb, 0xbf1dfc8f ), /* 7344 */ DATA_1x2( 0xd32a3ab1, 0xbe50c11f ), /* 7352 */ 0x3fc60000, 0x3f211d84, /* 070 */ /* 7360 */ DATA_1x2( 0x9f4003df, 0x3fedd847 ), /* 7368 */ DATA_1x2( 0x4003de81, 0x3f68479f ), /* 7376 */ DATA_1x2( 0x698f89e3, 0xbe267955 ), /* 7384 */ 0x3fc70000, 0x3f22f9d5, /* 071 */ /* 7392 */ DATA_1x2( 0xeba2bfab, 0x3fedb1e2 ), /* 7400 */ DATA_1x2( 0xba80a993, 0xbf5c3a28 ), /* 7408 */ DATA_1x2( 0x1d6ca000, 0xbe4d77e3 ), /* 7416 */ 0x3fc80000, 0x3f24d3c2, /* 072 */ /* 7424 */ DATA_1x2( 0x817f5ffe, 0x3fed8be0 ), /* 7432 */ DATA_1x2( 0xfebffb1d, 0x3f57c102 ), /* 7440 */ DATA_1x2( 0x15fc9258, 0x3e579a37 ), /* 7448 */ 0x3fc90000, 0x3f26ab53, /* 073 */ /* 7456 */ DATA_1x2( 0xe94a85b9, 0x3fed663e ), /* 7464 */ DATA_1x2( 0xb57a4735, 0xbf69c116 ), /* 7472 */ DATA_1x2( 0xeed64840, 0xbe4330c4 ), /* 7480 */ 0x3fca0000, 0x3f28808c, /* 074 */ /* 7488 */ DATA_1x2( 0xb2e891bc, 0x3fed40fc ), /* 7496 */ DATA_1x2( 0x123775c7, 0x3f1f965d ), /* 7504 */ DATA_1x2( 0xe377a525, 0x3e4c22a3 ), /* 7512 */ 0x3fcb0000, 0x3f2a5374, /* 075 */ /* 7520 */ DATA_1x2( 0x757ec0f0, 0x3fed1c18 ), /* 7528 */ DATA_1x2( 0x7ec0efb9, 0x3f6c1875 ), /* 7536 */ DATA_1x2( 0x1b636195, 0x3e594a87 ), /* 7544 */ 0x3fcc0000, 0x3f2c2411, /* 076 */ /* 7552 */ DATA_1x2( 0xcf45a967, 0x3fecf790 ), /* 7560 */ DATA_1x2( 0x74ad31f7, 0xbf50de61 ), /* 7568 */ DATA_1x2( 0xcf0e362f, 0x3e4a6274 ), /* 7576 */ 0x3fcd0000, 0x3f2df268, /* 077 */ /* 7584 */ DATA_1x2( 0x655d0c7a, 0x3fecd364 ), /* 7592 */ DATA_1x2( 0x5d0c7a7f, 0x3f636465 ), /* 7600 */ DATA_1x2( 0x6955d67e, 0x3e596a28 ), /* 7608 */ 0x3fce0000, 0x3f2fbe80, /* 078 */ /* 7616 */ DATA_1x2( 0xe3a0f252, 0x3fecaf91 ), /* 7624 */ DATA_1x2( 0x5f0dadde, 0xbf606e1c ), /* 7632 */ DATA_1x2( 0xa28e69ca, 0xbe57c3ec ), /* 7640 */ 0x3fcf0000, 0x3f31885c, /* 079 */ /* 7648 */ DATA_1x2( 0xfc8003b3, 0x3fec8c17 ), /* 7656 */ DATA_1x2( 0x000766e0, 0x3f582ff9 ), /* 7664 */ DATA_1x2( 0x9080d4b4, 0x3e5eaa60 ), /* 7672 */ 0x3fd00000, 0x3f335004, /* 080 */ /* 7680 */ DATA_1x2( 0x68d31760, 0x3fec68f5 ), /* 7688 */ DATA_1x2( 0x2ce89fe3, 0xbf670a97 ), /* 7696 */ DATA_1x2( 0x979a5db7, 0x3e5c8f11 ), /* 7704 */ 0x3fd10000, 0x3f35157d, /* 081 */ /* 7712 */ DATA_1x2( 0xe7b5e8b8, 0x3fec4628 ), /* 7720 */ DATA_1x2( 0xd7a2df61, 0x3f48a39e ), /* 7728 */ DATA_1x2( 0x5f7f66a9, 0xbe2a5f0f ), /* 7736 */ 0x3fd20000, 0x3f36d8cb, /* 082 */ /* 7744 */ DATA_1x2( 0x3e60edb5, 0x3fec23b1 ), /* 7752 */ DATA_1x2( 0x9f124b78, 0xbf6c4ec1 ), /* 7760 */ DATA_1x2( 0x93b2fbe1, 0x3e54ec32 ), /* 7768 */ 0x3fd30000, 0x3f3899f5, /* 083 */ /* 7776 */ DATA_1x2( 0x380442b9, 0x3fec018d ), /* 7784 */ DATA_1x2( 0x442b8874, 0x3f28d380 ), /* 7792 */ DATA_1x2( 0x106ba601, 0xbe43aa4e ), /* 7800 */ 0x3fd40000, 0x3f3a58ff, /* 084 */ /* 7808 */ DATA_1x2( 0xa5a3a303, 0x3febdfbb ), /* 7816 */ DATA_1x2( 0xa3a30287, 0x3f6fbba5 ), /* 7824 */ DATA_1x2( 0x58723510, 0xbe5363f1 ), /* 7832 */ 0x3fd50000, 0x3f3c15ee, /* 085 */ /* 7840 */ DATA_1x2( 0x5df364f3, 0x3febbe3b ), /* 7848 */ DATA_1x2( 0xc9b0d1c5, 0xbf2c4a20 ), /* 7856 */ DATA_1x2( 0x421bc0f7, 0xbdf12cd4 ), /* 7864 */ 0x3fd60000, 0x3f3dd0c8, /* 086 */ /* 7872 */ DATA_1x2( 0x3d3671a3, 0x3feb9d0b ), /* 7880 */ DATA_1x2( 0x3671a2cd, 0x3f6d0b3d ), /* 7888 */ DATA_1x2( 0x6fd85522, 0xbe4b2bf4 ), /* 7896 */ 0x3fd70000, 0x3f3f8991, /* 087 */ /* 7904 */ DATA_1x2( 0x251d2f9e, 0x3feb7c2a ), /* 7912 */ DATA_1x2( 0x16830c39, 0xbf3eaed7 ), /* 7920 */ DATA_1x2( 0x5d12ecd7, 0x3e282cf1 ), /* 7928 */ 0x3fd80000, 0x3f41404f, /* 088 */ /* 7936 */ DATA_1x2( 0xfca558e1, 0x3feb5b96 ), /* 7944 */ DATA_1x2( 0xa558e14b, 0x3f6b96fc ), /* 7952 */ DATA_1x2( 0x1a4847f8, 0xbe54831f ), /* 7960 */ 0x3fd90000, 0x3f42f506, /* 089 */ /* 7968 */ DATA_1x2( 0xaffab47d, 0x3feb3b50 ), /* 7976 */ DATA_1x2( 0x152e0b5d, 0xbf42bd40 ), /* 7984 */ DATA_1x2( 0xb3def206, 0xbe5e9b09 ), /* 7992 */ 0x3fda0000, 0x3f44a7ba, /* 090 */ /* 8000 */ DATA_1x2( 0x3058ac9d, 0x3feb1b56 ), /* 8008 */ DATA_1x2( 0x58ac9d77, 0x3f6b5630 ), /* 8016 */ DATA_1x2( 0x1680dd46, 0x3e560ddf ), /* 8024 */ 0x3fdb0000, 0x3f465872, /* 091 */ /* 8032 */ DATA_1x2( 0x73ecb9db, 0x3feafba6 ), /* 8040 */ DATA_1x2( 0x4d189532, 0xbf416630 ), /* 8048 */ DATA_1x2( 0x09325dd6, 0xbe42d311 ), /* 8056 */ 0x3fdc0000, 0x3f480731, /* 092 */ /* 8064 */ DATA_1x2( 0x75b99d15, 0x3feadc40 ), /* 8072 */ DATA_1x2( 0xb99d150d, 0x3f6c4075 ), /* 8080 */ DATA_1x2( 0x66037816, 0xbe53fffa ), /* 8088 */ 0x3fdd0000, 0x3f49b3fb, /* 093 */ /* 8096 */ DATA_1x2( 0x357b614b, 0x3feabd23 ), /* 8104 */ DATA_1x2( 0x24f5a4cc, 0xbf36e654 ), /* 8112 */ DATA_1x2( 0x5d3990cb, 0x3e5b4156 ), /* 8120 */ 0x3fde0000, 0x3f4b5ed7, /* 094 */ /* 8128 */ DATA_1x2( 0xb78c1f20, 0x3fea9e4d ), /* 8136 */ DATA_1x2( 0x8c1f2065, 0x3f6e4db7 ), /* 8144 */ DATA_1x2( 0x1420276e, 0xbe5aa694 ), /* 8152 */ 0x3fdf0000, 0x3f4d07c7, /* 095 */ /* 8160 */ DATA_1x2( 0x04c97bf9, 0x3fea7fbf ), /* 8168 */ DATA_1x2( 0xa101b217, 0xbf003ecd ), /* 8176 */ DATA_1x2( 0x6042d519, 0xbe589e3f ), /* 8184 */ 0x3fe00000, 0x3f4eaed0, /* 096 */ /* 8192 */ DATA_1x2( 0x2a7aded9, 0x3fea6176 ), /* 8200 */ DATA_1x2( 0x852126c1, 0xbf6e89d5 ), /* 8208 */ DATA_1x2( 0x64ccd537, 0xbe357f7a ), /* 8216 */ 0x3fe10000, 0x3f5053f7, /* 097 */ /* 8224 */ DATA_1x2( 0x3a385553, 0x3fea4372 ), /* 8232 */ DATA_1x2( 0xc2aa994c, 0x3f3b91d1 ), /* 8240 */ DATA_1x2( 0x4c673b45, 0xbe46cfbb ), /* 8248 */ 0x3fe20000, 0x3f51f740, /* 098 */ /* 8256 */ DATA_1x2( 0x49d2231b, 0x3fea25b2 ), /* 8264 */ DATA_1x2( 0x2ddce4b6, 0xbf6a4db6 ), /* 8272 */ DATA_1x2( 0xc25f0ce6, 0xbe58e3cf ), /* 8280 */ 0x3fe30000, 0x3f5398af, /* 099 */ /* 8288 */ DATA_1x2( 0x7338f6f8, 0x3fea0835 ), /* 8296 */ DATA_1x2( 0x71edf06b, 0x3f506ae6 ), /* 8304 */ DATA_1x2( 0x708553ec, 0xbe5fa1be ), /* 8312 */ 0x3fe40000, 0x3f553848, /* 100 */ /* 8320 */ DATA_1x2( 0xd466bffe, 0x3fe9eafa ), /* 8328 */ DATA_1x2( 0x99400225, 0xbf65052b ), /* 8336 */ DATA_1x2( 0x59064390, 0xbe54ffd6 ), /* 8344 */ 0x3fe50000, 0x3f56d60f, /* 101 */ /* 8352 */ DATA_1x2( 0x8f481e2d, 0x3fe9ce01 ), /* 8360 */ DATA_1x2( 0x903c59a3, 0x3f5c031e ), /* 8368 */ DATA_1x2( 0xcb4558b6, 0x3e4c4720 ), /* 8376 */ 0x3fe60000, 0x3f587209, /* 102 */ /* 8384 */ DATA_1x2( 0xc9a669bb, 0x3fe9b148 ), /* 8392 */ DATA_1x2( 0xb32c89d0, 0xbf5d6e6c ), /* 8400 */ DATA_1x2( 0xaf5e9bb5, 0x3e4af321 ), /* 8408 */ 0x3fe70000, 0x3f5a0c3a, /* 103 */ /* 8416 */ DATA_1x2( 0xad124c76, 0x3fe994cf ), /* 8424 */ DATA_1x2( 0x124c7593, 0x3f64cfad ), /* 8432 */ DATA_1x2( 0xe84d0e8d, 0xbe56adfe ), /* 8440 */ 0x3fe80000, 0x3f5ba4a4, /* 104 */ /* 8448 */ DATA_1x2( 0x66cee8d2, 0x3fe97895 ), /* 8456 */ DATA_1x2( 0xc45cb8fa, 0xbf4daa64 ), /* 8464 */ DATA_1x2( 0xb49696e3, 0x3e5eaa65 ), /* 8472 */ 0x3fe90000, 0x3f5d3b4e, /* 105 */ /* 8480 */ DATA_1x2( 0x27bd8a6e, 0x3fe95c99 ), /* 8488 */ DATA_1x2( 0xbd8a6df9, 0x3f6c9927 ), /* 8496 */ DATA_1x2( 0x37e20f02, 0xbe58c36d ), /* 8504 */ 0x3fea0000, 0x3f5ed039, /* 106 */ /* 8512 */ DATA_1x2( 0x2449dbe4, 0x3fe940da ), /* 8520 */ DATA_1x2( 0x3b7c74fd, 0x3f1b4489 ), /* 8528 */ DATA_1x2( 0x92574910, 0xbe39cc0c ), /* 8536 */ 0x3feb0000, 0x3f60636a, /* 107 */ /* 8544 */ DATA_1x2( 0x94569df3, 0x3fe92557 ), /* 8552 */ DATA_1x2( 0xa9620cf9, 0xbf6aa86b ), /* 8560 */ DATA_1x2( 0x4d8b66a7, 0x3e41f177 ), /* 8568 */ 0x3fec0000, 0x3f61f4e5, /* 108 */ /* 8576 */ DATA_1x2( 0xb32adc32, 0x3fe90a10 ), /* 8584 */ DATA_1x2( 0x55b863ff, 0x3f542166 ), /* 8592 */ DATA_1x2( 0xa99b4c5a, 0x3e370d02 ), /* 8600 */ 0x3fed0000, 0x3f6384ad, /* 109 */ /* 8608 */ DATA_1x2( 0xbf5f9b89, 0x3fe8ef04 ), /* 8616 */ DATA_1x2( 0xa06476b8, 0xbf60fb40 ), /* 8624 */ DATA_1x2( 0x8ec17936, 0x3e5d23c3 ), /* 8632 */ 0x3fee0000, 0x3f6512c7, /* 110 */ /* 8640 */ DATA_1x2( 0xfacdfeeb, 0x3fe8d432 ), /* 8648 */ DATA_1x2( 0xcdfeea96, 0x3f6432fa ), /* 8656 */ DATA_1x2( 0x4e5008e3, 0xbe3ab667 ), /* 8664 */ 0x3fef0000, 0x3f669f35, /* 111 */ /* 8672 */ DATA_1x2( 0xaa7ddec9, 0x3fe8b99a ), /* 8680 */ DATA_1x2( 0x0884da1e, 0xbf499556 ), /* 8688 */ DATA_1x2( 0xd8486e92, 0x3e195120 ), /* 8696 */ 0x3ff00000, 0x3f6829fb, /* 112 */ /* 8704 */ DATA_1x2( 0x1694cffe, 0x3fe89f3b ), /* 8712 */ DATA_1x2( 0x94cffdf7, 0x3f6f3b16 ), /* 8720 */ DATA_1x2( 0x2ce6312f, 0x3e5a4c11 ), /* 8728 */ 0x3ff10000, 0x3f69b31e, /* 113 */ /* 8736 */ DATA_1x2( 0x8a4596d5, 0x3fe88513 ), /* 8744 */ DATA_1x2( 0x165b522f, 0x3f444e29 ), /* 8752 */ DATA_1x2( 0x55ad0f91, 0xbe5b019c ), /* 8760 */ 0x3ff20000, 0x3f6b3a9f, /* 114 */ /* 8768 */ DATA_1x2( 0x53c0032a, 0x3fe86b23 ), /* 8776 */ DATA_1x2( 0x3ffcd597, 0xbf64dcac ), /* 8784 */ DATA_1x2( 0x7f1f5f0d, 0x3df97507 ), /* 8792 */ 0x3ff30000, 0x3f6cc083, /* 115 */ /* 8800 */ DATA_1x2( 0xc421328f, 0x3fe85169 ), /* 8808 */ DATA_1x2( 0x21328f5f, 0x3f6169c4 ), /* 8816 */ DATA_1x2( 0x530f101c, 0x3e40f598 ), /* 8824 */ 0x3ff40000, 0x3f6e44cd, /* 116 */ /* 8832 */ DATA_1x2( 0x2f643580, 0x3fe837e6 ), /* 8840 */ DATA_1x2( 0x3794ffcf, 0xbf5033a1 ), /* 8848 */ DATA_1x2( 0xd8bcce75, 0x3e567fea ), /* 8856 */ 0x3ff50000, 0x3f6fc781, /* 117 */ /* 8864 */ DATA_1x2( 0xec5314e4, 0x3fe81e97 ), /* 8872 */ DATA_1x2( 0x5314e3e2, 0x3f6e97ec ), /* 8880 */ DATA_1x2( 0x897de908, 0x3e10d5e5 ), /* 8888 */ 0x3ff60000, 0x3f7148a1, /* 118 */ /* 8896 */ DATA_1x2( 0x54783511, 0x3fe8057e ), /* 8904 */ DATA_1x2( 0xe0d442fc, 0x3f45f951 ), /* 8912 */ DATA_1x2( 0x803f7555, 0x3e5c1c02 ), /* 8920 */ 0x3ff70000, 0x3f72c832, /* 119 */ /* 8928 */ DATA_1x2( 0xc41013af, 0x3fe7ec98 ), /* 8936 */ DATA_1x2( 0xefec50bf, 0xbf63673b ), /* 8944 */ DATA_1x2( 0x8d4f3773, 0xbe3bbee9 ), /* 8952 */ 0x3ff80000, 0x3f744636, /* 120 */ /* 8960 */ DATA_1x2( 0x99fb5dee, 0x3fe7d3e6 ), /* 8968 */ DATA_1x2( 0xfb5ded84, 0x3f63e699 ), /* 8976 */ DATA_1x2( 0x1aabbcb8, 0xbe593b2b ), /* 8984 */ 0x3ff90000, 0x3f75c2b0, /* 121 */ /* 8992 */ DATA_1x2( 0x37b15c86, 0x3fe7bb67 ), /* 9000 */ DATA_1x2( 0x3a8de901, 0xbf426321 ), /* 9008 */ DATA_1x2( 0x13cad28e, 0xbe4cd5dc ), /* 9016 */ 0x3ffa0000, 0x3f773da4, /* 122 */ /* 9024 */ DATA_1x2( 0x0132b331, 0x3fe7a31a ), /* 9032 */ DATA_1x2( 0xcd4ccec1, 0xbf6ce5fe ), /* 9040 */ DATA_1x2( 0x5f05247c, 0xbe5c98ad ), /* 9048 */ 0x3ffb0000, 0x3f78b714, /* 123 */ /* 9056 */ DATA_1x2( 0x5cfc7134, 0x3fe78afe ), /* 9064 */ DATA_1x2( 0xf8e26838, 0x3f55fcb9 ), /* 9072 */ DATA_1x2( 0x03b21929, 0x3e2db763 ), /* 9080 */ 0x3ffc0000, 0x3f7a2f04, /* 124 */ /* 9088 */ DATA_1x2( 0xb3fb70c1, 0x3fe77313 ), /* 9096 */ DATA_1x2( 0x091e7dc8, 0xbf59d898 ), /* 9104 */ DATA_1x2( 0xaa9c9ab8, 0x3e579e0c ), /* 9112 */ 0x3ffd0000, 0x3f7ba578, /* 125 */ /* 9120 */ DATA_1x2( 0x71800307, 0x3fe75b59 ), /* 9128 */ DATA_1x2( 0x8003072d, 0x3f6b5971 ), /* 9136 */ DATA_1x2( 0xa450bc93, 0xbe5e20a0 ), /* 9144 */ 0x3ffe0000, 0x3f7d1a71, /* 126 */ /* 9152 */ DATA_1x2( 0x0331e6cc, 0x3fe743cf ), /* 9160 */ DATA_1x2( 0x8f365d77, 0x3f3e7819 ), /* 9168 */ DATA_1x2( 0x993adae9, 0xbe5d107b ), /* 9176 */ 0x3fff0000, 0x3f7e8df2, /* 127 */ /* 9184 */ DATA_1x2( 0xd9048786, 0x3fe72c73 ), /* 9192 */ DATA_1x2( 0xfb787a63, 0xbf638c26 ), /* 9200 */ DATA_1x2( 0xf2856444, 0x3e58fe55 ), /* 9208 */ 0x40000000, 0x3f800000, /* 128 */ /* 9216 */ DATA_1x2( 0x652b82fe, 0x3fe71547 ), /* 9224 */ DATA_1x2( 0x2b82fe17, 0x3f654765 ), /* 9232 */ DATA_1x2( 0x00000000, 0x00000000 ), }; #else extern const double TABLE_NAME[1154]; #endif #define POW2_HI(j) *((double *) ((char *) TABLE_NAME + 0 + (j))) #define POW2_LO_OV_POW2_HI(j) *((double *) ((char *) TABLE_NAME + 8 + (j))) #define IPOW2(j) *((signed __int64 *) ((char *) TABLE_NAME + 0 + (j))) #define POW2_INDEX_POS 4 #define POW2_LO_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4096)) #define POW2_HI_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4104)) #define POW2_MAX_SCALE_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4112)) #define POW2_LO_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4120)) #define POW2_HI_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4128)) #define POW2_MAX_SCALE_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4136)) #define SCALE_DOWN_EXP 11 #define FAST_BIG *((double *) ((char *) TABLE_NAME + 4144)) #define SCALE_DOWN_OV_LN2 *((double *) ((char *) TABLE_NAME + 4152)) #define SCALE_DOWN_OV_LN2_HI *((double *) ((char *) TABLE_NAME + 4160)) #define SCALE_DOWN_OV_LN2_LO *((double *) ((char *) TABLE_NAME + 4168)) #define FAST_EXP_RANGE_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4176)) #define FAST_EXP_RANGE_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4184)) #define FAST_POW2_F ((double *) ((char *) TABLE_NAME + 4192)) #define FAST_POW2_R ((double *) ((char *) TABLE_NAME + 4232)) #define SCALE_DOWN *((double *) ((char *) TABLE_NAME + 4256)) #define ACC_BIG_HI_32 0x42b80001 #define FAST_BIG_HI_32 0x42080001 #define LN2_HI *((double *) ((char *) TABLE_NAME + 4264)) #define LN2_LO *((double *) ((char *) TABLE_NAME + 4272)) #define LN2_OV_LN10_HI *((double *) ((char *) TABLE_NAME + 4280)) #define LN2_OV_LN10_LO *((double *) ((char *) TABLE_NAME + 4288)) #define ACC_POW2_F ((double *) ((char *) TABLE_NAME + 4296)) #define ACC_POW2_R ((double *) ((char *) TABLE_NAME + 4336)) #define ACC_BIG *((double *) ((char *) TABLE_NAME + 4360)) #define EXP_LO_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4368)) #define EXP_HI_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4376)) #define EXP_LO_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4384)) #define EXP_HI_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4392)) #define EXP2_HI_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4400)) #define EXP2_HI_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4408)) #define EXP10_LO_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4416)) #define EXP10_HI_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4424)) #define EXP10_LO_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4432)) #define EXP10_HI_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4440)) #define ACC_EXP_F ((double *) ((char *) TABLE_NAME + 4448)) #define ACC_EXP10_F ((double *) ((char *) TABLE_NAME + 4488)) #define EXPM1_POLY_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4536)) #define EXPM1_HI_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4544)) #define EXPM1_LO_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4552)) #define EXPM1_POLY_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4560)) #define EXPM1_HI_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4568)) #define EXPM1_LO_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4576)) #define EXPM1_F ((double *) ((char *) TABLE_NAME + 4584)) #define EXPM1_RED_F ((double *) ((char *) TABLE_NAME + 4632)) #define EXPM1_R ((double *) ((char *) TABLE_NAME + 4680)) #define EXPM1_RED_R ((double *) ((char *) TABLE_NAME + 4712)) #define SINHCOSH_OVERFLOW_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4744)) #define SINHCOSH_BIG_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4752)) #define SINHCOSH_POLY_CHECK_F *((unsigned __int64 *) ((char *) TABLE_NAME + 4760)) #define SINHCOSH_OVERFLOW_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4768)) #define SINHCOSH_BIG_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4776)) #define SINHCOSH_POLY_CHECK_R *((unsigned __int64 *) ((char *) TABLE_NAME + 4784)) #define SINH_F ((double *) ((char *) TABLE_NAME + 4792)) #define COSH_F ((double *) ((char *) TABLE_NAME + 4832)) #define SINH_R ((double *) ((char *) TABLE_NAME + 4872)) #define COSH_R ((double *) ((char *) TABLE_NAME + 4896)) #define LOG2_K 7 #define POW2_K 8 #define NO_FAST 0 #define NO_ACC 0 #define USE_DIVIDE 0 #define HALF *((double *) ((char *) TABLE_NAME + 4928)) #define ONE *((double *) ((char *) TABLE_NAME + 4936)) #define TWO *((double *) ((char *) TABLE_NAME + 4944)) #define MAX_FLOAT *((double *) ((char *) TABLE_NAME + 4952)) #define RECIP_LN2 *((double *) ((char *) TABLE_NAME + 4960)) #define LN10_OV_LN2 *((double *) ((char *) TABLE_NAME + 4968)) #define LN2_OVER_TWO *((double *) ((char *) TABLE_NAME + 4976)) #define ACC_LOG2_F ((double *) ((char *) TABLE_NAME + 4984)) #define ACC_LOG2_R ((double *) ((char *) TABLE_NAME + 5032)) #define FAST_LOG2_F ((double *) ((char *) TABLE_NAME + 5064)) #define GET_F(j) *((float *) ((char *) TABLE_NAME + 5112 + (j))) #define LOG_F_HI(j) *((float *) ((char *) TABLE_NAME + 5116 + (j))) #define RECIP_F(j) *((double *) ((char *) TABLE_NAME + 5120 + (j))) #define RECIP_F_LO(j) *((double *) ((char *) TABLE_NAME + 5128 + (j))) #define LOG_F_LO(j) *((double *) ((char *) TABLE_NAME + 5136 + (j))) #define LOG_INDEX_BASE_POS 5 #define LOG_INDEX_SCALE 1 # define FAST_POW2_POLY_F_M(x) (((FAST_POW2_F[0]+x*FAST_POW2_F[1])+(x*x)*FAST_POW2_F[2])+(x*(x*x))*(FAST_POW2_F[3] \ +x*FAST_POW2_F[4])) # define FAST_POW2_POLY_F_C(x) (FAST_POW2_F[0]+x*(FAST_POW2_F[1]+x*(FAST_POW2_F[2]+x*(FAST_POW2_F[3] \ +x*FAST_POW2_F[4])))) # define FAST_POW2_POLY_F SELECT_POLY(FAST_POW2_POLY_F_) # define FAST_POW2_POLY_R_M(x) ((FAST_POW2_R[0]+x*FAST_POW2_R[1])+(x*x)*FAST_POW2_R[2]) # define FAST_POW2_POLY_R_C(x) (FAST_POW2_R[0]+x*(FAST_POW2_R[1]+x*FAST_POW2_R[2])) # define FAST_POW2_POLY_R SELECT_POLY(FAST_POW2_POLY_R_) # define ACC_POW2_POLY_F_M(t,x) (((t+x*ACC_POW2_F[0])+(x*x)*ACC_POW2_F[1])+(x*(x*x))*((ACC_POW2_F[2] \ +x*ACC_POW2_F[3])+(x*x)*ACC_POW2_F[4])) # define ACC_POW2_POLY_F_C(t,x) (t+x*(ACC_POW2_F[0]+x*(ACC_POW2_F[1]+x*(ACC_POW2_F[2] \ +x*(ACC_POW2_F[3]+x*ACC_POW2_F[4]))))) # define ACC_POW2_POLY_F SELECT_POLY(ACC_POW2_POLY_F_) # define ACC_POW2_POLY_R_M(x) ((ACC_POW2_R[0]+x*ACC_POW2_R[1])+(x*x)*ACC_POW2_R[2]) # define ACC_POW2_POLY_R_C(x) (ACC_POW2_R[0]+x*(ACC_POW2_R[1]+x*ACC_POW2_R[2])) # define ACC_POW2_POLY_R SELECT_POLY(ACC_POW2_POLY_R_) # define ACC_EXP_POLY_F_M(t,x) (((t+x*ACC_EXP_F[0])+(x*x)*ACC_EXP_F[1])+(x*(x*x))*((ACC_EXP_F[2] \ +x*ACC_EXP_F[3])+(x*x)*ACC_EXP_F[4])) # define ACC_EXP_POLY_F_C(t,x) (t+x*(ACC_EXP_F[0]+x*(ACC_EXP_F[1]+x*(ACC_EXP_F[2] \ +x*(ACC_EXP_F[3]+x*ACC_EXP_F[4]))))) # define ACC_EXP_POLY_F SELECT_POLY(ACC_EXP_POLY_F_) # define ACC_EXP10_POLY_F_M(t,x) (((t+x*ACC_EXP10_F[0])+(x*x)*(ACC_EXP10_F[1]+x*ACC_EXP10_F[2])) \ +((x*x)*(x*x))*((ACC_EXP10_F[3]+x*ACC_EXP10_F[4])+(x*x)*ACC_EXP10_F[5])) # define ACC_EXP10_POLY_F_C(t,x) (t+x*(ACC_EXP10_F[0]+x*(ACC_EXP10_F[1]+x*(ACC_EXP10_F[2] \ +x*(ACC_EXP10_F[3]+x*(ACC_EXP10_F[4]+x*ACC_EXP10_F[5])))))) # define ACC_EXP10_POLY_F SELECT_POLY(ACC_EXP10_POLY_F_) # define EXPM1_POLY_F_M(x) (x) + (((x*x)*((EXPM1_F[0]+x*EXPM1_F[1]) \ +(x*x)*EXPM1_F[2]))+((x*x)*(x*(x*x)))*((EXPM1_F[3]+x*EXPM1_F[4])+(x*x)*EXPM1_F[5])) # define EXPM1_POLY_F_C(x) (x) + ((x*x)*(EXPM1_F[0]+x*(EXPM1_F[1] \ +x*(EXPM1_F[2]+x*(EXPM1_F[3]+x*(EXPM1_F[4]+x*EXPM1_F[5])))))) # define EXPM1_POLY_F SELECT_POLY(EXPM1_POLY_F_) # define EXPM1_RED_POLY_F_M(t,x) (((t+(x*x)*EXPM1_RED_F[0])+(x*(x*x))*(EXPM1_RED_F[1] \ +x*EXPM1_RED_F[2]))+((x*x)*(x*(x*x)))*((EXPM1_RED_F[3]+x*EXPM1_RED_F[4])+(x*x)*EXPM1_RED_F[5])) # define EXPM1_RED_POLY_F_C(t,x) (t+(x*x)*(EXPM1_RED_F[0]+x*(EXPM1_RED_F[1] \ +x*(EXPM1_RED_F[2]+x*(EXPM1_RED_F[3]+x*(EXPM1_RED_F[4]+x*EXPM1_RED_F[5])))))) # define EXPM1_RED_POLY_F SELECT_POLY(EXPM1_RED_POLY_F_) # define EXPM1_POLY_R_M(x) ((x*(EXPM1_R[0]+x*EXPM1_R[1]))+(x*(x*x))*(EXPM1_R[2] \ +x*EXPM1_R[3])) # define EXPM1_POLY_R_C(x) (x*(EXPM1_R[0]+x*(EXPM1_R[1]+x*(EXPM1_R[2] \ +x*EXPM1_R[3])))) # define EXPM1_POLY_R SELECT_POLY(EXPM1_POLY_R_) # define EXPM1_RED_POLY_R_M(x) ((x*(EXPM1_RED_R[0]+x*EXPM1_RED_R[1]))+(x*(x*x))*(EXPM1_RED_R[2] \ +x*EXPM1_RED_R[3])) # define EXPM1_RED_POLY_R_C(x) (x*(EXPM1_RED_R[0]+x*(EXPM1_RED_R[1]+x*(EXPM1_RED_R[2] \ +x*EXPM1_RED_R[3])))) # define EXPM1_RED_POLY_R SELECT_POLY(EXPM1_RED_POLY_R_) # define SINH_POLY_F_M(x) (x) + ((x*(x*x))*(((SINH_F[0]+(x*x)*SINH_F[1])+((x*x)*(x*x))*SINH_F[2])+((x*x)*((x*x)*(x*x)))*(SINH_F[3]+(x*x)*SINH_F[4]))) # define SINH_POLY_F_C(x) (x) + ((x*(x*x))*(SINH_F[0]+(x*x)*(SINH_F[1]+(x*x)*(SINH_F[2]+(x*x)*(SINH_F[3]+(x*x)*SINH_F[4]))))) # define SINH_POLY_F SELECT_POLY(SINH_POLY_F_) # define COSH_POLY_F_M(x) ONE + (((x*x)*(COSH_F[0] \ +(x*x)*COSH_F[1]))+((x*x)*((x*x)*(x*x)))*((COSH_F[2] \ +(x*x)*COSH_F[3])+((x*x)*(x*x))*COSH_F[4])) # define COSH_POLY_F_C(x) ONE + ((x*x)*(COSH_F[0] \ +(x*x)*(COSH_F[1]+(x*x)*(COSH_F[2] \ +(x*x)*(COSH_F[3]+(x*x)*COSH_F[4]))))) # define COSH_POLY_F SELECT_POLY(COSH_POLY_F_) # define SINHCOSH_ODD_POLY_F_M(x) (((x*ACC_EXP_F[0])+(x*x)*(x*ACC_EXP_F[2])) \ +((x*x)*(x*x))*(x*ACC_EXP_F[4])) # define SINHCOSH_ODD_POLY_F_C(x) (x*(ACC_EXP_F[0]+(x*x)*(ACC_EXP_F[2]+(x*x)*ACC_EXP_F[4]))) # define SINHCOSH_ODD_POLY_F SELECT_POLY(SINHCOSH_ODD_POLY_F_) # define SINHCOSH_EVEN_POLY_F_M(x) ((x*x)*(ACC_EXP_F[1] \ +(x*x)*ACC_EXP_F[3])) # define SINHCOSH_EVEN_POLY_F_C(x) ((x*x)*(ACC_EXP_F[1] \ +(x*x)*ACC_EXP_F[3])) # define SINHCOSH_EVEN_POLY_F SELECT_POLY(SINHCOSH_EVEN_POLY_F_) # define SINH_POLY_R_M(x) (((x*SINH_R[0])+(x*x)*(x*SINH_R[1])) \ +((x*x)*(x*x))*(x*SINH_R[2])) # define SINH_POLY_R_C(x) (x*(SINH_R[0]+(x*x)*(SINH_R[1]+(x*x)*SINH_R[2]))) # define SINH_POLY_R SELECT_POLY(SINH_POLY_R_) # define COSH_POLY_R_M(x) ((COSH_R[0]+(x*x)*COSH_R[1]) \ +((x*x)*(x*x))*(COSH_R[2]+(x*x)*COSH_R[3])) # define COSH_POLY_R_C(x) (COSH_R[0]+(x*x)*(COSH_R[1] \ +(x*x)*(COSH_R[2]+(x*x)*COSH_R[3]))) # define COSH_POLY_R SELECT_POLY(COSH_POLY_R_) # define SINHCOSH_ODD_POLY_R_M(x) (x*ACC_POW2_R[1]) # define SINHCOSH_ODD_POLY_R_C(x) (x*ACC_POW2_R[1]) # define SINHCOSH_ODD_POLY_R SELECT_POLY(SINHCOSH_ODD_POLY_R_) # define SINHCOSH_EVEN_POLY_R_M(x) (ACC_POW2_R[0]+(x*x)*ACC_POW2_R[2]) # define SINHCOSH_EVEN_POLY_R_C(x) (ACC_POW2_R[0]+(x*x)*ACC_POW2_R[2]) # define SINHCOSH_EVEN_POLY_R SELECT_POLY(SINHCOSH_EVEN_POLY_R_) # define ACC_LOG2_POLY_F_M(t,x) (((t+(x*x)*(x*ACC_LOG2_F[0])) \ +((x*x)*(x*x))*(ACC_LOG2_F[1]+x*ACC_LOG2_F[2]))+((x*x)*((x*x)*(x*x)))*((ACC_LOG2_F[3]+x*ACC_LOG2_F[4]) \ +(x*x)*ACC_LOG2_F[5])) # define ACC_LOG2_POLY_F_C(t,x) (t+(x*(x*x))*(ACC_LOG2_F[0] \ +x*(ACC_LOG2_F[1]+x*(ACC_LOG2_F[2]+x*(ACC_LOG2_F[3]+x*(ACC_LOG2_F[4] \ +x*ACC_LOG2_F[5])))))) # define ACC_LOG2_POLY_F SELECT_POLY(ACC_LOG2_POLY_F_) # define ACC_LOG2_POLY_R_M(t,x) (((t+x*ACC_LOG2_R[0])+(x*x)*ACC_LOG2_R[1])+(x*(x*x))*(ACC_LOG2_R[2] \ +x*ACC_LOG2_R[3])) # define ACC_LOG2_POLY_R_C(t,x) (t+x*(ACC_LOG2_R[0]+x*(ACC_LOG2_R[1]+x*(ACC_LOG2_R[2] \ +x*ACC_LOG2_R[3])))) # define ACC_LOG2_POLY_R SELECT_POLY(ACC_LOG2_POLY_R_) # define FAST_LOG2_POLY_F_M(t,x) ((t+(x*(x*x))*(FAST_LOG2_F[1] \ +x*FAST_LOG2_F[2]))+((x*x)*(x*(x*x)))*((FAST_LOG2_F[3]+x*FAST_LOG2_F[4])+(x*x)*FAST_LOG2_F[5])) # define FAST_LOG2_POLY_F_C(t,x) (t+(x*(x*x))*(FAST_LOG2_F[1] \ +x*(FAST_LOG2_F[2]+x*(FAST_LOG2_F[3]+x*(FAST_LOG2_F[4]+x*FAST_LOG2_F[5]))))) # define FAST_LOG2_POLY_F SELECT_POLY(FAST_LOG2_POLY_F_) # define FAST_LOG2_POLY_R_M(t,x) (t+(x*(x*x))*(ACC_LOG2_R[2] \ +x*ACC_LOG2_R[3])) # define FAST_LOG2_POLY_R_C(t,x) (t+(x*(x*x))*(ACC_LOG2_R[2] \ +x*ACC_LOG2_R[3])) # define FAST_LOG2_POLY_R SELECT_POLY(FAST_LOG2_POLY_R_) LIBRARY/float128/dpml_ux_log.c0000644€­ Q01134020000004155315113665770015074 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BASE_NAME log #include "dpml_ux.h" #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif /* The basic design of for the log functions relies on a common evaluation ** routine. The evaluation routine is based on the identities: ** ** logb(x) = ln(x)/ln(b) (1) ** ln(2^n*f) = n*ln(2) + ln(f) (2) ** ln[(1+x)/(1-x)] = 2*sum{ k = 0,... | x^(2k+1)/(2k+1) } (3) ** ** Assuming that x = 2^n*f, where 1/2 <= f < 1, we define g and m as: ** ** g = f; ** m = n; ** if (f < 1/sqrt(2)) ** { ** g = 2*f; ** m = n - 1; ** } ** ** Then x = 2^m*g where 1/sqrt(2) <= g < sqrt(2). From (2) and (3) it follows ** that ** g - 1 ** ln(x) = m*ln(2) + z*p(z^2) where z = ----- ** g + 1 ** ** Then from (1) it follows that ** ** logb(x) = m*ln(2)/ln(b) + z*p(z^2)/ln(b) ** = [m + z*r(z^2)]*[1/ln(b)] ** ** UX_LOG_POLY is a convenience functions that allows for the evaluation of ** the log polynomial without having to know the address of the coefficients ** and automatically multiplies by ln2. */ void UX_LOG_POLY( UX_FLOAT * unpacked_argument, UX_FLOAT * unpacked_result) { EVALUATE_RATIONAL( unpacked_argument, LOG2_COEF_ARRAY, LOG2_COEF_ARRAY_DEGREE, NUMERATOR_FLAGS(SQUARE_TERM | POST_MULTIPLY), unpacked_result); MULTIPLY(unpacked_result, LN_2, unpacked_result); } void UX_LOG( UX_FLOAT * unpacked_argument, UX_FLOAT * scale, UX_FLOAT * unpacked_result) { UX_FLOAT tmp[2]; UX_EXPONENT_TYPE m; UX_FRACTION_DIGIT_TYPE f_hi; /* ** Compute z = (g - 1)/(g + 1). Make sure to restore the input ** argument to its original value in case the caller needs to use ** it again. */ m = G_UX_EXPONENT(unpacked_argument); f_hi = G_UX_MSD(unpacked_argument); if (f_hi <= ONE_OVER_SQRT_2) m--; UX_DECR_EXPONENT(unpacked_argument, m); ADDSUB(unpacked_argument, UX_ONE, ADD_SUB | MAGNITUDE_ONLY, &tmp[0]); UX_INCR_EXPONENT(unpacked_argument, m); DIVIDE(&tmp[1], &tmp[0], FULL_PRECISION, unpacked_result); /*printf("UX_LOG: tmp1=(%x %x) %llx %llx, tmp0=(%x %x) %llx %llx, r=(%x %x) %llx %llx\n", tmp[1].sign,tmp[1].exponent,tmp[1].fraction[0],tmp[1].fraction[1], tmp[0].sign,tmp[0].exponent,tmp[0].fraction[0],tmp[0].fraction[1], unpacked_result->sign,unpacked_result->exponent,unpacked_result->fraction[0],unpacked_result->fraction[1]);*/ /* Evaluate z*p(z^2) */ EVALUATE_RATIONAL( unpacked_result, LOG2_COEF_ARRAY, LOG2_COEF_ARRAY_DEGREE, NUMERATOR_FLAGS(SQUARE_TERM | POST_MULTIPLY), &tmp[0] ); /* Get m as a packed value and add to polynomial */ /*printf("UX_LOG: tmp1=(%x %x) %llx %llx, tmp0=(%x %x) %llx %llx, u_res=(%x %x) %llx %llx\n", tmp[1].sign,tmp[1].exponent,tmp[1].fraction[0],tmp[1].fraction[1], tmp[0].sign,tmp[0].exponent,tmp[0].fraction[0],tmp[0].fraction[1], unpacked_result->sign,unpacked_result->exponent,unpacked_result->fraction[0],unpacked_result->fraction[1]);*/ WORD_TO_UX(m, unpacked_result); //printf("m=%llx\n",(long long)m); ADDSUB(unpacked_result, &tmp[0], ADD | NO_NORMALIZATION, unpacked_result); /* multiply by scale */ //printf("u_res= (%x %x) %llx %llx\n",unpacked_result->sign,unpacked_result->exponent,unpacked_result->fraction[0],unpacked_result->fraction[1]); if (scale) MULTIPLY( unpacked_result, scale, unpacked_result); return; } #if !defined(C_UX_LOG) # define C_UX_LOG __INTERNAL_NAME(C_ux_log__) #endif static void C_UX_LOG( _X_FLOAT * packed_argument, U_WORD const * class_to_action_map, UX_FLOAT * scale, _X_FLOAT * packed_result OPT_EXCEPTION_INFO_DECLARATION ) { WORD fp_class, index; UX_FLOAT unpacked_argument, unpacked_result; fp_class = UNPACK( packed_argument, & unpacked_argument, class_to_action_map, packed_result OPT_EXCEPTION_INFO_ARGUMENT ); //printf("UX_LOG: packed arg=%llx %llx, unpacked_arg=(%x %x) %llx %llx\n",packed_argument->digit[0],packed_argument->digit[1],unpacked_argument.sign,unpacked_argument.exponent,unpacked_argument.fraction[0],unpacked_argument.fraction[1]); if (0 > fp_class) return; UX_LOG( &unpacked_argument, scale, &unpacked_result); PACK( &unpacked_result, packed_result, NOT_USED, NOT_USED OPT_EXCEPTION_INFO_ARGUMENT ); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_LN_NAME X_X_PROTO(F_ENTRY_NAME, packed_result,packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_LOG( PASS_ARG_X_FLOAT(packed_argument), LOG_CLASS_TO_ACTION_MAP, LN_2, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_LOG2_NAME X_X_PROTO(F_ENTRY_NAME, packed_result,packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_LOG( PASS_ARG_X_FLOAT(packed_argument), LOG2_CLASS_TO_ACTION_MAP, 0, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_LOG10_NAME X_X_PROTO(F_ENTRY_NAME, packed_result,packed_argument) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_LOG( PASS_ARG_X_FLOAT(packed_argument), LOG10_CLASS_TO_ACTION_MAP, LOG10_2, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO); RETURN_X_FLOAT(packed_result); } /* ** If we compute log1p(x) as log(1+x), then for small arguments a loss of ** significance will occur when computing the reduced argument for the generic ** log evaluation. Consequently we screen out x such that ** ** 1/sqrt(2) <= 1 + x < sqrt(2), ** ** or equivalently, ** ** 1/sqrt(2) - 1 <= x < sqrt(2) - 1 (4) ** ** We do this comparison "approximately" and in several phases. First we ** screen x to lie in the interval (-1/2, 1/2) by looking at the exponent ** field of x. Then we eliminate arguments with |x| <= 1/4, since these are ** known to satisfy (4). At this point |x| = 2^(-1)*f and we can approximate ** 1 + x using only the high fraction digit x, F1. Letting ** N = BITS_PER_DIGIT_TYPE: ** ** 1 + x = 2^(N-1)/2^(N-1) + 2^(-1)*F1/2^N ** = 2^(N-1)/2^(N-1) + F1/2^(N+1) ** = [2^(N-1) + F1/4]/2^(N-1) ** ** So we define an integer G such that G/2^(N-1) ~ 1 + x by, ** ** G <-- F1 >> 2 ** if (x < 0) ** G <-- -G ** G <-- G + (1 << (N-1)) ** ** At this point we define two other integers: ** ** I_RECIP_SQRT_2 <-- nint[2^(N-1)/sqrt(2)] ** I_SQRT_2 <-- nint[2^(N-1)*sqrt(2)] ** ** Then the range check: 1/sqrt(2) < 1 + x < sqrt(2) is "equivalent" to ** ** I_RECIP_SQRT_2 < G < I_SQRT_2. */ #undef F_ENTRY_NAME #define F_ENTRY_NAME F_LOG1P_NAME X_X_PROTO(F_ENTRY_NAME, packed_result,packed_argument) { WORD fp_class; UX_SIGN_TYPE sign; UX_EXPONENT_TYPE exponent; UX_FRACTION_DIGIT_TYPE f_hi; UX_FLOAT unpacked_argument, unpacked_result, tmp; DECLARE_X_FLOAT(packed_result) EXCEPTION_INFO_DECL INIT_EXCEPTION_INFO; fp_class = UNPACK( PASS_ARG_X_FLOAT(packed_argument), & unpacked_argument, LOG1P_CLASS_TO_ACTION_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); if (0 > fp_class) RETURN_X_FLOAT(packed_result); /* ** Screen out negative values <= -1. For values less than ** -1, force "underflow". For arguments equal to -1, force ** "overflow". */ exponent = G_UX_EXPONENT( &unpacked_argument ); sign = G_UX_SIGN( &unpacked_argument ); f_hi = G_UX_MSD( &unpacked_argument ); if (exponent >= 0) { /* |arg| >= 1/2. */ if ( exponent >= 1 ) { /* |arg| >= 1. Check for arg <= -1 */ if (sign) { /* arg <= -1, start by forcing overflow */ P_UX_MSD( &unpacked_result, UX_MSB); P_UX_EXPONENT( &unpacked_result, UX_OVERFLOW_EXPONENT); if ((exponent == 1) && (f_hi == UX_MSB) && UX_LOW_FRACTION_IS_ZERO( &unpacked_argument )) /* This is -1. Force underflow */ P_UX_EXPONENT(&unpacked_result, UX_UNDERFLOW_EXPONENT); goto pack_it; } } goto big_argument; } else if (exponent <= -2) /* |arg| <= 1/4. */ goto small_argument; /* ** If we get here, 1/4 < |arg| < 1/2. We need to check see if ** 1/sqrt(2) < 1 + x < sqrt(2) */ f_hi = f_hi >> 2; f_hi = (sign) ? -f_hi : f_hi; f_hi += UX_MSB; if ( (UX_FRACTION_DIGIT_TYPE) (f_hi - I_RECIP_SQRT_2) >= (I_SQRT_2 - I_RECIP_SQRT_2)) goto big_argument; small_argument: /* ** If we get here, we know 1/sqrt(2) < 1 + x < sqrt(2). To ** avoid loss of significance, compute the reduced argument ** as x/(2+x) and evaluate the log polynomial. */ ADDSUB( UX_TWO, &unpacked_argument, ADD, &tmp); DIVIDE(&unpacked_argument, &tmp, FULL_PRECISION, &tmp); EVALUATE_RATIONAL( &tmp, LOG2_COEF_ARRAY, LOG2_COEF_ARRAY_DEGREE, NUMERATOR_FLAGS(SQUARE_TERM | POST_MULTIPLY), &unpacked_result ); MULTIPLY( &unpacked_result, LN_2, &unpacked_result); goto pack_it; big_argument: /* If we get here, just compute 1 + x and call the log */ ADDSUB( UX_ONE, &unpacked_argument, ADD, &unpacked_result); UX_LOG( &unpacked_result, LN_2, &unpacked_result); pack_it: PACK( &unpacked_result, PASS_RET_X_FLOAT(packed_result), LOG_OF_ZERO, LOG_OF_NEGATIVE OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #if defined(MAKE_INCLUDE) @divert -append divertText precision = ceil(UX_PRECISION/8) + 4; # undef TABLE_NAME START_TABLE; TABLE_COMMENT("log class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "LOG_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 1) ); PRINT_U_TBL_ITEM( /* data 1 */ LOG_OF_NEGATIVE ); PRINT_U_TBL_ITEM( /* data 2 */ LOG_OF_ZERO ); TABLE_COMMENT("log2 class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "LOG2_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 1) ); PRINT_U_TBL_ITEM( /* data 1 */ LOG2_OF_NEGATIVE ); PRINT_U_TBL_ITEM( /* data 2 */ LOG2_OF_ZERO ); TABLE_COMMENT("log10 class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "LOG10_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_ERROR, 1) ); PRINT_U_TBL_ITEM( /* data 1 */ LOG10_OF_NEGATIVE ); PRINT_U_TBL_ITEM( /* data 2 */ LOG10_OF_ZERO ); TABLE_COMMENT("log1p class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "LOG1P_CLASS_TO_ACTION_MAP"); PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_ZERO , RETURN_VALUE, 0) ); PRINT_U_TBL_ITEM( /* data 1 */ LOG_OF_NEGATIVE); /* ** NOTE: the fraction fields of 1/sqrt(2) and sqrt(2) are identical, so ** that in the above code, the symbolic constants ONE_OVER_SQRT_2 and ** I_SQRT_2 have the same numerical value. */ TABLE_COMMENT("MSD of sqrt(2) and 1/sqrt(2) (in fixed point)"); tmp = trunc(bldexp(sqrt(2), BITS_PER_UX_FRACTION_DIGIT_TYPE - 1)); PRINT_UX_FRACTION_DIGIT_TBL_VDEF( "ONE_OVER_SQRT_2\t\t"); PRINT_UX_FRACTION_DIGIT_TBL_VDEF_ITEM( "I_SQRT_2\t\t", tmp); PRINT_UX_FRACTION_DIGIT_TBL_VDEF_ITEM( "I_RECIP_SQRT_2\t\t", trunc(tmp/2)); /* ** Now generate coefficients for computing log. */ zero_value = 2/log(2); function __log2(x) { if (x == 0) return zero_value; else return atanh(x)*zero_value/x; } save_precision = precision; precision = ceil(UX_PRECISION/8) + 8; max_arg = (sqrt(2) - 1)^2; TABLE_COMMENT("Fixed point coefficients for log2 evaluation"); remes(REMES_FIND_POLYNOMIAL + REMES_RELATIVE_WEIGHT + REMES_SQUARE_ARG, 0, max_arg, __log2, UX_PRECISION, °ree, &ux_rational_coefs); precision = save_precision; PRINT_FIXED_128_TBL_ADEF("LOG2_COEF_ARRAY\t\t"); PRINT_WORD_DEF("LOG2_COEF_ARRAY_DEGREE\t", degree); print_ux_rational_coefs(degree, 0, 0); TABLE_COMMENT("Unpacked constants 1, 2, log(2) and log(10)"); PRINT_UX_TBL_ADEF_ITEM( "UX_ONE", 1); PRINT_UX_TBL_ADEF_ITEM( "UX_TWO", 2); PRINT_UX_TBL_ADEF_ITEM( "LN_2", log(2)); PRINT_UX_TBL_ADEF_ITEM( "LOG10_2", log10(2)); END_TABLE; @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ $outText = "$tableText\n\n$defineText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants logarithmic" . \ " routines", __FILE__ ); \ print "$headerText\n\n$outText\n"; #endif LIBRARY/float128/dpml_cbrt_t_table.c0000644€­ Q01134020000001274515113665770016224 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" #include "dpml_private.h" #if !defined(CBRT_TABLE_NAME) #define CBRT_TABLE_NAME __dpml_bid_cbrt_t_table #endif #if !TABLE_IS_EXTERNAL const unsigned int CBRT_TABLE_NAME[] = { /* 1.0 in double precision */ /* 000 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* coeffs to approx cbrt(f) */ /* 008 */ DATA_1x2( 0x39cf22de, 0x3fd929ac ), /* 016 */ DATA_1x2( 0x87730846, 0x3ff40b90 ), /* 024 */ DATA_1x2( 0xd7a3e848, 0xbff68ee7 ), /* 032 */ DATA_1x2( 0x80541937, 0x3ff6fbd1 ), /* 040 */ DATA_1x2( 0xdf5da719, 0xbff16685 ), /* 048 */ DATA_1x2( 0x1e6f904c, 0x3fe2d9c2 ), /* 056 */ DATA_1x2( 0xe1c69901, 0xbfcc5a29 ), /* 064 */ DATA_1x2( 0xda48850f, 0x3fac1c77 ), /* 072 */ DATA_1x2( 0xdc0d2f07, 0xbf8086db ), /* 080 */ DATA_1x2( 0x917c7fe0, 0x3f417636 ), /* coeffs to approx 1/cbrt(f)^2 */ /* 088 */ DATA_1x2( 0x881b89ed, 0x400e1506 ), /* 096 */ DATA_1x2( 0xc23a3b85, 0xc020ed35 ), /* 104 */ DATA_1x2( 0x7264fecc, 0x4029d89a ), /* 112 */ DATA_1x2( 0xae7a02bd, 0xc02a0b85 ), /* 120 */ DATA_1x2( 0xb037ffa0, 0x402196ed ), /* 128 */ DATA_1x2( 0xec98f3cd, 0xc00fa3c4 ), /* 136 */ DATA_1x2( 0x7b6b49c4, 0x3ff2394e ), /* 144 */ DATA_1x2( 0xc4f387a6, 0xbfc85e9d ), /* 152 */ DATA_1x2( 0x3810ace9, 0x3f8cce2f ), /* cube roots of 2^i, i = 0,1,2 in full and lo */ /* 160 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* 168 */ DATA_1x2( 0x00000000, 0x20000000 ), /* 176 */ DATA_1x2( 0xf98d728b, 0x3ff428a2 ), /* 184 */ DATA_1x2( 0xc4400000, 0x3deae515 ), /* 192 */ DATA_1x2( 0xa53d6e3d, 0x3ff965fe ), /* 200 */ DATA_1x2( 0x82b00000, 0x3dfd6e3c ), /* Numerical constants */ /* 208 */ DATA_1x2( 0x00000000, 0x42d00000 ), /* 216 */ DATA_1x2( 0x38e38e39, 0x3fe8e38e ), /* 224 */ DATA_1x2( 0x92492492, 0x3fc24924 ), /* 232 */ DATA_1x2( 0xb6db6db7, 0x3fe6db6d ), /* 240 */ DATA_1x2( 0x00000000, 0x402c0000 ), /* 248 */ DATA_1x2( 0x00000000, 0x401c0000 ), /* 256 */ DATA_1x2( 0x1c71c71c, 0x3fbc71c7 ), }; #else extern const TABLE_UNION CBRT_TABLE_NAME[66]; #endif #define ONE_D *((double *) ((char *)CBRT_TABLE_NAME + 0)) #define CBRT_POLY_ADDR ((double *) ((char *)CBRT_TABLE_NAME + 8)) #define REC_CBRT_POLY_ADDR ((double *) ((char *)CBRT_TABLE_NAME + 88)) #define OFFSET_OF_CBRTS_OF_2 160 #define BIG_QUAD *((double *) ((char *)CBRT_TABLE_NAME + 208)) #define SEVEN_NINTHS *((double *) ((char *)CBRT_TABLE_NAME + 216)) #define ONE_SEVENTH *((double *) ((char *)CBRT_TABLE_NAME + 224)) #define FIVE_SEVENTHS *((double *) ((char *)CBRT_TABLE_NAME + 232)) #define FOURTEEN *((double *) ((char *)CBRT_TABLE_NAME + 240)) #define SEVEN *((double *) ((char *)CBRT_TABLE_NAME + 248)) #define NINTH *((double *) ((char *)CBRT_TABLE_NAME + 256)) # define CBRT_POLY_M(x) ((((CBRT_POLY_ADDR[0]+x*CBRT_POLY_ADDR[1])+(x*x)*CBRT_POLY_ADDR[2])+(x*(x*x))*(CBRT_POLY_ADDR[3] \ +x*CBRT_POLY_ADDR[4]))+((x*x)*(x*(x*x)))*(((CBRT_POLY_ADDR[5]+x*CBRT_POLY_ADDR[6])+(x*x)*CBRT_POLY_ADDR[7]) \ +(x*(x*x))*(CBRT_POLY_ADDR[8]+x*CBRT_POLY_ADDR[9]))) # define CBRT_POLY_C(x) (CBRT_POLY_ADDR[0]+x*(CBRT_POLY_ADDR[1]+x*(CBRT_POLY_ADDR[2]+x*(CBRT_POLY_ADDR[3] \ +x*(CBRT_POLY_ADDR[4]+x*(CBRT_POLY_ADDR[5]+x*(CBRT_POLY_ADDR[6]+x*(CBRT_POLY_ADDR[7] \ +x*(CBRT_POLY_ADDR[8]+x*CBRT_POLY_ADDR[9]))))))))) # define CBRT_POLY SELECT_POLY(CBRT_POLY_) # define RECIP_CBRT_POLY_M(x) (((REC_CBRT_POLY_ADDR[0]+x*REC_CBRT_POLY_ADDR[1])+(x*x)*(REC_CBRT_POLY_ADDR[2]+x*REC_CBRT_POLY_ADDR[3])) \ +((x*x)*(x*x))*(((REC_CBRT_POLY_ADDR[4]+x*REC_CBRT_POLY_ADDR[5])+(x*x)*REC_CBRT_POLY_ADDR[6])+(x*(x*x))*(REC_CBRT_POLY_ADDR[7] \ +x*REC_CBRT_POLY_ADDR[8]))) # define RECIP_CBRT_POLY_C(x) (REC_CBRT_POLY_ADDR[0]+x*(REC_CBRT_POLY_ADDR[1]+x*(REC_CBRT_POLY_ADDR[2]+x*(REC_CBRT_POLY_ADDR[3] \ +x*(REC_CBRT_POLY_ADDR[4]+x*(REC_CBRT_POLY_ADDR[5]+x*(REC_CBRT_POLY_ADDR[6]+x*(REC_CBRT_POLY_ADDR[7] \ +x*REC_CBRT_POLY_ADDR[8])))))))) # define RECIP_CBRT_POLY SELECT_POLY(RECIP_CBRT_POLY_) LIBRARY/float128/dpml_ux_mod.c0000644€­ Q01134020000007627015113665770015076 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define BASE_NAME mod #include "dpml_ux.h" #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif #define KMASK (((U_WORD) 1 << (BITS_PER_INT - 2)) - 1) /* ** PRELIMINARIES ** ------------- ** ** The mod and rem functions are defined as: ** ** mod(x,y) = x - y*trunc(x/y) ** ** rem(x,y) = x - y*rint(x/y) ** ** If we denote by R any of the rounding modes defined in x_float note 19.x, ** then we can consider mod and rem as specific cases of the more general ** function, Mod, defined by: ** ** Mod(x,y,R) = x - y*rnd_to_int(x/y, R) (1) ** ** Now, consider the following decomposition of the binary representation of ** |x|/|y|: ** ** x/y = qqqqqqqqql.rpppppppp.... ** \_______/ \__________/ ** q u ** ** = 2*q + l + r/2 + u/2 ** ** As in note 19.x, if we know the sign of x/y (call it s), and we define k, ** the sticky bit, to be 0 if u = 0 and 1 otherwise, then for each of the ** possible rounding modes, R, there is a binary function, B(R,s,l,r,k), such ** that ** ** rnd_to_int(x/y, R) = (-1)^s*[2*q + l + B(R,s,l,r,k)] ** = (-1)^[sx + sy]*[2*q + l + B(R,s,l,r,k)] ** ** where sx and sy are the sign bits of x and y respectively. If we denote ** B(R,s,l,r,k) by B and 2*q + l by Q, it follows that ** ** Mod(x,y,R) = x - y*rnd_to_int(x/y, R) ** = x - y*(-1)^[sx + sy]*[Q + B] ** = (-1)^sx*|x| - (-1)^sy*|y|*(-1)^[sx + sy]*[Q + B] ** = (-1)^sx*|x| - (-1)^[sx + 2*sy]*|y|*[Q + B] ** = (-1)^sx*|x| - (-1)^sx*|y|*[Q + B] ** = (-1)^sx*{ |x| - |y|*[Q + B] } ** = (-1)^sx*{ |x| - |y|*Q - |y|*B] } ** ** Now Q = 2*q + l = trunc(x/y) so we have: ** ** Mod(x,y,R) = (-1)^sx*{ |x| - |y|*Q - |y|*B] } ** = (-1)^sx*{ |x| - |y|*trunc(|x|/|y|) - |y|*B] } ** = (-1)^sx*{ mod(|x|, |y|) - |y|*B] } (2) ** ** That is, we can compute the generalized Mod function by computing ** mod(|x|,|y|), adjusting by 0 or |y|, and then optionally negating the ** result. With the above result in mind, for the remainder of this ** discussion, we assume that x and y are positive. ** ** A slight variation on the above description is to compute mod(2*x, y). The ** binary expansion of 2x/y is ** ** 2x/y = qqqqqqqqqlr.pppppppp.... ** \_______/ \__________/ ** q u ** ** = 4*q + 2*l + r + u ** ** If we denote Q = trunc(2*x/y), then l and r are the two low bits of Q and ** k = 0 or 1 if mod(2x,y) = 0 or not. Now ** ** mod(2*x,y) = 2*x - y*trunc(2*x/y) ** = 2*x - y*(4*q + 2*l + r) ** = 2*x - y*(4*q + 2*l) - y*r ** = 2*[x - y*(2*q + l)] - y*r ** = 2*[x - y*trunc(x/y)] - y*r ** = 2*mod(x,y) - y*r ** ** Substituting the above result into (2) we get ** ** Mod(x,y,R) = mod(x, y) - y*B ** = [ mod(2*x) + y*r ]/2 - y*B ** = mod(2*x,y)/2 + y*(r/2 - B) ** ** Since B = 0 or 1 depending on the values of s, l, r and k, and r = 0 or 1, ** it follows that r/2 - B = -1, -1/2, 0 or 1/2 depending on s, l, r and k. ** This means we can define a function, B'(R,s,l,r,k) that takes on the values ** -2, -1, 0 or 1 and compute Mod(x,y,R) as mod(2*x)/2 + y*(B'/2) ** ** So we are led to the following basic approach to computing the generalized ** mod function: ** ** o Compute u = mod(2*|x|, |y|) keeping track of the low order ** digit, Q, of the quotient 2*|x|/|y| ** o Based on the sign bits of x and y, the low 2 bits of Q, and x', ** determine the increment value B' ** o Compute the generalized mod function as x' + y*B' with the sign ** appropriately adjusted. ** ** ** LONG DIVISION REVISITED ** ----------------------- ** ** Given x = 2^n*f and y = 2^m*g where f and g are in the interval [1/2, 1), ** the basic approach to computing the quotient, 2*x/y, is to do it one ** "digit" at a time. That is, we essentially perform long division, ** computing one quotient digit at a time while simultaneously producing ** the remainder in the process. Continuing the analogy to long division, ** the basic process is as follows: ** ** (1) At each stage, we know the current remainder, x, and the ** divisor, y. ** (2) We make a guess at the next quotient digit, Q ** (3) Compute a new remainder, x', as x' = x - Q*y. ** ** Since the value of Q at in step (2) was a guess, the new remainder may be ** greater than y or less than zero depending on whether Q was too small or ** too large. In any case, we can obtain the correct Q and x' by ** incrementing or decrementing Q and adding or subtracting y from x'. ** ** An important conclusion to draw from the above discussion is that the ** correct computation of Q is very closely tied to the computation of the ** remainder. In particular, the two computations are not done ** independently from one another, but rather they overlap each other. ** ** In the discussion, that follows, we present a method for computing Q ** and x' that involve a 3 step process: ** ** Step 1: Obtain a mediocre estimate of Q, call it Q" based on only ** the high digit of x and y. ** Step 2: Obtain a fairly good estimate of Q, call it Q', based on ** the high two digits of x and Q". In the process, we compute ** the high two digits of the new remainder. ** Step 3: Compute the low order digits of the remaider, and adjust it ** and Q' accordingly to obtain the final remainder and the ** exact value of Q */ #define EXT_SHIFT(a,s,b,c) (((a) << (s)) | ((b) >> (c))) #if BITS_PER_UX_FRACTION_TYPE == 32 # define EXTENDED_DIGIT_SHIFT_LEFT_UX_FRACTION(g, m) \ (m) = G_UX_FRACTION_DIGIT(g,0); \ P_UX_FRACTION_DIGIT(g, 0, G_UX_FRACTION_DIGIT(g, 1)); \ P_UX_FRACTION_DIGIT(g, 1, G_UX_FRACTION_DIGIT(g, 2)); \ P_UX_FRACTION_DIGIT(g, 2, G_UX_FRACTION_DIGIT(g, 3)); \ P_UX_FRACTION_DIGIT(g, 3, 0); # define EXTENDED_BIT_SHIFT_LEFT_UX_FRACTION(g, m, s, c) \ { \ UX_FRACTION_DIGIT_TYPE _t0, _t1, _t2, _t3; \ \ _t0 = G_UX_FRACTION_DIGIT(g,0); \ (m) = _t0 >> (c); \ _t1 = G_UX_FRACTION_DIGIT(g,1); \ P_UX_FRACTION_DIGIT(g, 0, EXT_SHIFT(_t0, s, _t1, c)); \ _t2 = G_UX_FRACTION_DIGIT(g,2); \ P_UX_FRACTION_DIGIT(g, 1, EXT_SHIFT(_t1, s, _t2, c)); \ _t3 = G_UX_FRACTION_DIGIT(g,3); \ P_UX_FRACTION_DIGIT(g, 2, EXT_SHIFT(_t2, s, _t3, c)); \ P_UX_FRACTION_DIGIT(g, 1, _t3 << (s)); \ } # define DIGIT_SHIFT_LEFT_UX_FRACTION(g,p) \ P_UX_FRACTION_DIGIT(p, 0, G_UX_FRACTION_DIGIT(g, 1)); \ P_UX_FRACTION_DIGIT(p, 1, G_UX_FRACTION_DIGIT(g, 2)); \ P_UX_FRACTION_DIGIT(p, 2, G_UX_FRACTION_DIGIT(g, 3)); \ P_UX_FRACTION_DIGIT(p, 3, 0); #else # define EXTENDED_DIGIT_SHIFT_LEFT_UX_FRACTION(g, m) \ (m) = G_UX_FRACTION_DIGIT(g,0); \ P_UX_FRACTION_DIGIT(g, 0, G_UX_FRACTION_DIGIT(g, 1)); \ P_UX_FRACTION_DIGIT(g, 1, 0); # define EXTENDED_BIT_SHIFT_LEFT_UX_FRACTION(g, m, s, c) \ { \ UX_FRACTION_DIGIT_TYPE _t0, _t1; \ \ _t0 = G_UX_FRACTION_DIGIT(g,0); \ (m) = _t0 >> (c); \ _t1 = G_UX_FRACTION_DIGIT(g,1); \ P_UX_FRACTION_DIGIT(g, 0, EXT_SHIFT(_t0, s, _t1, c)); \ P_UX_FRACTION_DIGIT(g, 1, _t1 << (s)); \ } # define DIGIT_SHIFT_LEFT_UX_FRACTION(g,p) \ P_UX_FRACTION_DIGIT(p, 0, G_UX_FRACTION_DIGIT(g, 1)); \ P_UX_FRACTION_DIGIT(p, 1, 0); #endif #define MINUS_2_FLAG 0 #define MINUS_1_FLAG 1 #define ZERO_FLAG 2 #define ONE_FLAG 3 #define FLAGS_BIT_WIDTH 2 #define FLAGS_MASK MAKE_MASK(2,0) #if !defined(UX_MOD) # define UX_MOD __INTERNAL_NAME(ux_mod__) #endif static WORD UX_MOD( UX_FLOAT * x, UX_FLOAT * y, WORD rounding_flags, UX_FLOAT * result ) { U_WORD SKLR; UX_EXPONENT_TYPE J, tmp, exponent_y; UX_SIGN_TYPE sign_x, sign_xor; UX_FLOAT ux_tmp, ux_g_lo, ux_q, product, *addend; UX_FRACTION_DIGIT_TYPE F1, F2, G1, R, Q, T1, T2; UX_FRACTION_DIGIT_TYPE old_quot; WORD quotient; D_TYPE r, r_hi, g_hi, g_lo, r_lo; sign_x = G_UX_SIGN(x); sign_xor = (sign_x ^ G_UX_SIGN(y)); P_UX_SIGN(x, 0); P_UX_SIGN(y, 0); /* ** At this point, we consider the general algorithm for long division. ** With x = 2^n*f, y = 2^m*g consider the following algorithm: ** ** (1) J = n - m + 1 ** (2) if (J < 0) goto (11) ** (3) if f < g ** f' <-- f ** Q <-- 0 ** else ** Q <-- 1 ** f' <-- f - g ** (4) if (J <= 0) goto (11) ** (5) t <-- (J >= k) ? k : J ** (6) f" <-- 2^t*f' ** (7) Q <-- trunc(f"/g) ** (8) f' <-- f" - Q*g ** (9) J <-- j - t ** (10) goto 4 ** (11) ** ** Algorithm 1 ** ----------- ** ** We state here without proof that at step (11), Q is the low order digit ** of the quotient 2*x/y and f' is mod(2*x, y). ** ** The next section of code implements the first four steps of algorithm 1. */ exponent_y = G_UX_EXPONENT(y); J = G_UX_EXPONENT(x) - exponent_y + 1; P_UX_EXPONENT(x, 0); P_UX_EXPONENT(y, 0); UX_COPY(x, result); Q = 0; if (J >= 0) { ADDSUB(x, y, SUB | NO_NORMALIZATION, &ux_tmp); if ( G_UX_SIGN(&ux_tmp) == 0 ) { Q = 1; UX_COPY(&ux_tmp, result); } } if (J <= 0) goto final_step; /* ** COMPUTING Q" ** ------------ ** ** In step 7, we compute an estimate for Q, call it Q" by multiplying the ** high digit of 1/g by the high digit of f". That is, we assume that we ** have a k-bit integer R, such that r = 2*R/M is a good approximation to ** 1/g. For reasons that will be discussed later, we want r < 1/g. In this ** section we describe how to compute R. ** ** We note that the method for computing of R is almost identical to the ** method used to obtain the initial reciprocal approximation in the divide ** algorithm (see note 6.x). The main difference being that in divide ** algorithm, r was to be as close to 1/g as possible, and for mod, we want ** r to underestimate 1/g. ** ** The value of R is computed using multi-precision floating point ** arithmetic and then is converted back to an integer data type. We ** assume the existence of a floating point type with 53 bits of precision. */ # if (D_PRECISION < 53) # error "Must have D_PRECISION >= 53" # endif /* ** Let G1 be the high digit of g, K = 2^k and define g" = (G1 + 1)/K. ** Note that 1/g" < 1/g. The remainder of this section is concerned ** with the computation R = trunc[(K/2)/g"]. The computation of R depends ** on the relative size of a digit, k, compared to the floating point ** precision. */ G1 = G_UX_MSD(y); # if (BITS_PER_UX_FRACTION_DIGIT_TYPE < D_PRECISION) /* ** If k <= 53, then define gt = high k bits of g plus 1/K - i.e. ** gt = (G1 + 1)/K. Then let R = trunc[(K/2)/gt - 1/2^53]. (NOTE: ** the 1/2^53 term is to compensate for a possible round up on the ** division.) */ R = (UX_FRACTION_DIGIT_TYPE) (D_TWO_POW_2Km1/((double) (G1 + 1)) - D_TWO_POW_Km53); # else /* ** If 53 < k < 78, then define the following double precision floating ** point values: ** ** gt = high 53 bits of g ** r = 1/gt ** r_hi = high 24 bits of r ** g_hi = high 26 bits of g ** g_lo = next (k - 26) bits of g incremented by 1/K ** r_lo = [ (1 - g_hi*r_hi) - g_lo*r_hi] * r ** ** and then compute ** ** R = floor[ K*(r_hi + r_lo) - 1/2^78 ] (1) ** ** The 1/2^78 term corrects for any possible "rounding-up" that might ** take place so that taking r = 2*R/K is guaranteed to be less than ** 1/g and R is in the interval [K/2, K-1]. In order to ease the ** conversion to integer, force r_hi to be less than 1/g. This will ** make r_lo positive. */ r = D_TWO_POW_53 / ((double) (G1 >> 11)); r_hi = ((double)((float) r)) - D_RECIP_TWO_POW_23; g_hi = D_RECIP_TWO_POW_26 * ((double) ((WORD) (G1 >> 38))); g_lo = D_RECIP_TWO_POW_64 * ((double) ((WORD) ((G1 & MAKE_MASK(38, 0)) + 1))); r_lo = (D_GROUP( D_ONE - g_hi*r_hi) - g_lo*r_hi)*r; /* ** Some care is required in computing (1) in order to insure no ** additional rounding takes place. We begin by defining ** ** R1 = floor(2^23*r_hi) ** R2 = floor(2^78*r_lo) ** ** Since r_hi has at most 24 significant bits and r_hi > 1, ** R1 = 2^23*r_hi. Also, since |r_lo| < 1/2^24, no integer overflow ** will occur when computing R2. It follows that ** ** r_hi + r_lo = R1/2^23 + (R2 + e)/2^78 ** ** where 0 <= e < 1 is the error in truncating 2^78*r_lo. This implies ** that ** ** R = floor[ K*(r_hi + r_lo) - 1/2^75 ] ** = floor[ K*(R1/2^23 + (R2 + e))/2^78 - 1/2^75] ** = floor[ K*(2^25*R1 + R2 + e - 8)/2^78 ] ** = floor[ K*(2^25*R1 + R2 + e - 8)/2^78 ] ** = 2^*(k-53)*R1 + floor[K*(R2 + e - 8)/2^78 ] ** = [R1 << (k-53)] + [(R2 - 8) >> (78-k)] ** ** Note that the shift of (R2-8) should be a signed shift. */ R = (UX_SIGNED_FRACTION_DIGIT_TYPE) (D_TWO_POW_23*r_hi); T1 = (UX_SIGNED_FRACTION_DIGIT_TYPE) (D_TWO_POW_78*r_lo); R = (R << (BITS_PER_UX_FRACTION_DIGIT_TYPE - S_PRECISION)) + ((T1 - 8) >> (79 - BITS_PER_UX_FRACTION_DIGIT_TYPE)); # endif /* ** Eventually, we will want to compute Q*g exactly. We will do that ** by Q*g in high and low pieces, with g_hi being the first digit of ** g and g_lo being the remaining digits. At this point we create ** g_lo by shifting the digits of g "up" one and bringing in a zero. ** ** While we're at it, we create an unpacked x-float quantity, q, so we ** can convert the integer Q, to an unpacked format. */ DIGIT_SHIFT_LEFT_UX_FRACTION(y, &ux_g_lo); P_UX_SIGN(&ux_g_lo, 0); P_UX_EXPONENT(&ux_g_lo, 0); UX_SET_SIGN_EXP_MSD(&ux_q, 0, 0, 0); do { J -= BITS_PER_UX_FRACTION_DIGIT_TYPE; if (J >= 0) { EXTENDED_DIGIT_SHIFT_LEFT_UX_FRACTION(result, F1); old_quot = 0; } else { WORD shift, cshift; shift = BITS_PER_UX_FRACTION_DIGIT_TYPE + J; cshift = -J; old_quot = (Q << shift); EXTENDED_BIT_SHIFT_LEFT_UX_FRACTION(result, F1, shift, cshift); J = 0; } /* ** COMPUTING THE REAL Q AND NEW F' ** ------------------------------ ** ** The two key issues associated with algorithm 1 from a computational ** point of view is getting Q = trunc(2^t*f'/g) and updating f' to ** 2^t*f' - Q*g. In this section we address these two issues. ** ** Denoting the high k bits of f' by F1, the next k bits by F2, the ** first 2k bits by F1:F2, and denoting the high k bits of g by G1, ** consider the following algorithm: ** ** ** if (F1 == G1) // line 1 ** { // line 2 ** Q' <-- K - 1 // line 3 ** T1:T2 <-- F2 + G1 // line 4 ** } // line 5 ** else // line 6 ** { // line 7 ** Q' <-- 2*umulh(F1*R) // line 8 ** T1:T2 <-- F1:F2 - Q'*G1 // line 9 ** while ((T1 != 0) || (T2 >= G1)) // line 10 ** { // line 11 ** T1:T2 <-- T1:T2 - 0:G1 // line 12 ** Q' <-- Q' + 1 // line 13 ** } // line 14 ** } // line 15 ** ** Algorithm 2 ** ----------- ** ** We note that since 2*R/K underestimates 1/g and F1/K underestimates ** f', the Q' in line 8 underestimates Q. Lines 9 through 15 continue ** to increment Q' by one until the following condition is satisfied: ** ** 0 <= (K*F1 + F2) - Q'*G1 <= G1 - 1 (5) ** ** or equivalently ** ** Q' = trunc[(K*F1 + F2)/G1] ** ** We note without proof that Q' <= K-1 and Q <= Q' <= Q + 2. I.e. ** Q' overestimates Q by at most 2. */ F2 = G_UX_FRACTION_DIGIT(result, 0); if (F1 == G1) { Q = -1; T2 = F2 + G1; T1 = (T2 < G1); } else { UMULH(F1, R, Q); Q += Q; EXTENDED_DIGIT_MULTIPLY(Q, G1, T1, T2); T2 = F2 - T2; T1 = F1 - T1 - (T2 > F2); while ((T1 != 0) || (T2 >= G1)) { T1 -= (T2 < G1); T2 -= G1; Q++; } } /* ** UPDATING F' ** ----------- ** ** With Q' defined as above, define: ** ** fh' the high two digits of f' ** fl' the remaining digits of f' ** gh the high digit of g ** gl the remaining digits of g ** ** we proceed with the updating of f': ** ** f' <-- K*f' - Q'g ** <-- K*(fh' + fl') - Q'(gh + gl) ** <-- K*[(K*F1 + F2)/K^2 + fl'] - Q'(G1/K + gl) ** <-- (K*F1 + F2)/K + K*fl' - Q'*G1/K - Q'*gl ** <-- [(K*F1 + F2) - Q'*G1]/K + K*fl' - Q'*gl ** ** Now the quantity in square brackets has already been computed by ** algorithm 2. In particular, [(K*F1 + F2) - Q'*G1] = K*T1 + T2, ** and T1 is guaranteed to be 0 or 1. Consequently we can write ** ** f' <-- [(K*F1 + F2) - Q'*G1]/K + K*fl' - Q'*gl ** <-- (K*T1+T2)/K + K*fl' - Q'*gl ** ** Since Q' overestimates Q by at most 2, we know that we may need to ** adjust f' by adding in g at most twice. */ P_UX_MSD(result, T2); P_UX_MSD(&ux_q, Q); MULTIPLY(&ux_q, &ux_g_lo, &product); ADDSUB(result, &product, SUB | NO_NORMALIZATION, result); while (G_UX_SIGN(result)) { if (!T1) { addend = y; Q--; } else { T1--; addend = UX_HALF; ADDSUB(result, addend, ADD | NO_NORMALIZATION, result); } ADDSUB(result, addend, ADD | NO_NORMALIZATION, result); } Q |= old_quot; } while (J > 0); /* ** Now we need to deal with the rounding modes. Get the SKLR, the sign, ** stick, lsb and rounding bit of the quotient and index into the rounding ** flags to determine how (if) x should be modified */ NORMALIZE(result); final_step: SKLR = ((sign_xor >> (BITS_PER_UX_SIGN_TYPE - 4)) & 8) | (((UX_OR_LOW_FRACTION_DIGITS(result) | G_UX_MSD(result)) == 0) ? 0 : 4) | (Q & 3); rounding_flags = (rounding_flags >> (SKLR*FLAGS_BIT_WIDTH)) & FLAGS_MASK; Q >>= 1; UX_DECR_EXPONENT(result, 1); if (rounding_flags != ZERO_FLAG ) { UX_DECR_EXPONENT(y, rounding_flags & 1); ADDSUB(result, y, (rounding_flags & 2) ? ADD : SUB, result); if (!(rounding_flags & 2)) Q += 1; } /* ** remquo returns a pointer to the lo (BITS_PER_INT - 2) bits ** of the signed quotient */ Q &= KMASK; quotient = ((sign_xor) ? -Q : Q ); /* add final sign */ UX_TOGGLE_SIGN(result, sign_x); UX_INCR_EXPONENT(result, exponent_y + J); return quotient; } /* ** C_UX_MOD is the common processing for both mod and rem. It unpacks its ** input arguments and invokes UX_MOD to get the appropriate result. */ #if !defined(C_UX_MOD) # define C_UX_MOD __INTERNAL_NAME(C_ux_mod__) #endif static WORD C_UX_MOD(_X_FLOAT * packed_x, _X_FLOAT * packed_y, U_WORD bit_vector, WORD underflow_error, const U_WORD * class_to_action_map, _X_FLOAT * packed_result OPT_EXCEPTION_INFO_DECLARATION) { WORD fp_class, index; WORD quot; UX_FLOAT unpacked_x, unpacked_y, unpacked_result; quot = 0; fp_class = UNPACK2( packed_x, packed_y, & unpacked_x, & unpacked_y, class_to_action_map, packed_result OPT_EXCEPTION_INFO_ARGUMENT ); if (0 > fp_class) return quot; quot = UX_MOD( &unpacked_x, &unpacked_y, bit_vector, &unpacked_result); PACK( &unpacked_result, packed_result, underflow_error, NOT_USED OPT_EXCEPTION_INFO_ARGUMENT ); return quot; } /* ** The following three routines are the user level entry points for mod, ** rem, and remquo. ** ** The following macros convert the rounding flags defined in dpml_ux.h ** (referred to at B above) to the flags used by UX_MOD (referred to at B' above) */ #define R_minus_2B(B,i) \ ((2 + ((i & 1) - (((2*B) >> i) & 2))) << (i * FLAGS_BIT_WIDTH)) #define CVT_B_TO_B_PRIME(B) ( R_minus_2B(B, 0) | R_minus_2B(B, 1) | \ R_minus_2B(B, 2) | R_minus_2B(B, 3) | \ R_minus_2B(B, 4) | R_minus_2B(B, 5) | \ R_minus_2B(B, 6) | R_minus_2B(B, 7) | \ R_minus_2B(B, 8) | R_minus_2B(B, 9) | \ R_minus_2B(B,10) | R_minus_2B(B,11) | \ R_minus_2B(B,12) | R_minus_2B(B,13) | \ R_minus_2B(B,14) | R_minus_2B(B,15) ) #undef F_ENTRY_NAME #define F_ENTRY_NAME F_MOD_NAME X_XX_PROTO(F_ENTRY_NAME, packed_result, packed_x, packed_y) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_MOD( PASS_ARG_X_FLOAT(packed_x), PASS_ARG_X_FLOAT(packed_y), CVT_B_TO_B_PRIME(RZ_BIT_VECTOR), MOD_UNDERFLOW, MOD_CLASS_TO_ACTION_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_REM_NAME X_XX_PROTO(F_ENTRY_NAME, packed_result, packed_x, packed_y) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_MOD( PASS_ARG_X_FLOAT(packed_x), PASS_ARG_X_FLOAT(packed_y), CVT_B_TO_B_PRIME(RN_BIT_VECTOR), REM_UNDERFLOW, REM_CLASS_TO_ACTION_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_REMAINDER_NAME X_XX_PROTO(F_ENTRY_NAME, packed_result, packed_x, packed_y) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) INIT_EXCEPTION_INFO; C_UX_MOD( PASS_ARG_X_FLOAT(packed_x), PASS_ARG_X_FLOAT(packed_y), CVT_B_TO_B_PRIME(RN_BIT_VECTOR), REM_UNDERFLOW, REM_CLASS_TO_ACTION_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); RETURN_X_FLOAT(packed_result); } #undef F_ENTRY_NAME #define F_ENTRY_NAME F_REMQUO_NAME X_XXIptr_PROTO(F_ENTRY_NAME, packed_result, packed_x, packed_y, quotient) { EXCEPTION_INFO_DECL DECLARE_X_FLOAT(packed_result) WORD quot; INIT_EXCEPTION_INFO; quot = C_UX_MOD( PASS_ARG_X_FLOAT(packed_x), PASS_ARG_X_FLOAT(packed_y), CVT_B_TO_B_PRIME(RN_BIT_VECTOR), REMQUO_UNDERFLOW, REMQUO_CLASS_TO_ACTION_MAP, PASS_RET_X_FLOAT(packed_result) OPT_EXCEPTION_INFO ); *quotient = (int) quot; RETURN_X_FLOAT(packed_result); } #if defined(MAKE_INCLUDE) @divert -append divertText precision = ceil(UX_PRECISION/8) + 4; START_TABLE; /* ** Unfortunately, because the error codes for mod and rem are different, ** we need to duplicate the class to action mapping tables with different ** error codes. Consequently, we use a subroutine to print them out */ procedure print_class_to_action_table( infinity_error, zero_error ) { /* Index 0: mapping for x */ PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(6) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 0) ); /* Index 1: class-to-index mapping */ PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(5) + CLASS_TO_INDEX( F_C_POS_INF, 2) + CLASS_TO_INDEX( F_C_NEG_INF, 2) + CLASS_TO_INDEX( F_C_POS_NORM, 3) + CLASS_TO_INDEX( F_C_NEG_NORM, 3) + CLASS_TO_INDEX( F_C_POS_DENORM, 4) + CLASS_TO_INDEX( F_C_NEG_DENORM, 4) + CLASS_TO_INDEX( F_C_POS_ZERO, 5) + CLASS_TO_INDEX( F_C_NEG_ZERO , 5) ); /* Index 2: mapping for y given x was +/- Infinity */ PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(4) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 1) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_ERROR, 2) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 3) + CLASS_TO_ACTION( F_C_NEG_ZERO, RETURN_ERROR, 3) ); /* Index 3: mapping for y given x was +/- Norm */ PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(3) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 1) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_UNPACKED, 1) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_UNPACKED, 1) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_UNPACKED, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 3) + CLASS_TO_ACTION( F_C_NEG_ZERO, RETURN_ERROR, 3) ); /* Index 4: mapping for y given x was +/- Denorm */ PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(2) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 1) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_UNPACKED, 1) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_UNPACKED, 1) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 3) + CLASS_TO_ACTION( F_C_NEG_ZERO, RETURN_ERROR, 3) ); /* Index 5: mapping for y given x was +/- zero */ PRINT_64_TBL_ITEM( CLASS_TO_ACTION_DISP(1) + CLASS_TO_ACTION( F_C_SIG_NAN, RETURN_QUIET_NAN, 1) + CLASS_TO_ACTION( F_C_QUIET_NAN, RETURN_VALUE, 1) + CLASS_TO_ACTION( F_C_POS_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_INF, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_NORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_NORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_NEG_DENORM, RETURN_VALUE, 0) + CLASS_TO_ACTION( F_C_POS_ZERO, RETURN_ERROR, 3) + CLASS_TO_ACTION( F_C_NEG_ZERO, RETURN_ERROR, 3) ); PRINT_U_TBL_ITEM( /* data 1 */ NULL ); PRINT_U_TBL_ITEM( /* data 2 */ infinity_error ); PRINT_U_TBL_ITEM( /* data 3 */ zero_error ); } TABLE_COMMENT("mod class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "MOD_CLASS_TO_ACTION_MAP"); print_class_to_action_table( MOD_OF_INF, MOD_BY_ZERO ); TABLE_COMMENT("rem class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "REM_CLASS_TO_ACTION_MAP"); print_class_to_action_table( REM_OF_INF, REM_BY_ZERO ); TABLE_COMMENT("remquo class-to-action-mapping"); PRINT_CLASS_TO_ACTION_TBL_DEF( "REMQUO_CLASS_TO_ACTION_MAP"); print_class_to_action_table( REMQUO_OF_INF, REMQUO_BY_ZERO ); TABLE_COMMENT("Unpacked constants 1/2"); PRINT_UX_TBL_ADEF_ITEM( "UX_HALF\t\t", 1/2); k = BITS_PER_UX_FRACTION_DIGIT_TYPE; TABLE_COMMENT( "2^n, for n = -64, -26, -23, 0, 23, 53, 78, k-53, 2k-1, in double"); PRINT_R_TBL_VDEF_ITEM( "D_RECIP_TWO_POW_64", bldexp(1, -64)); PRINT_R_TBL_VDEF_ITEM( "D_RECIP_TWO_POW_26", bldexp(1, -26)); PRINT_R_TBL_VDEF_ITEM( "D_RECIP_TWO_POW_23", bldexp(1, -23)); PRINT_R_TBL_VDEF_ITEM( "D_ONE\t\t", 1); PRINT_R_TBL_VDEF_ITEM( "D_TWO_POW_23\t", bldexp(1, 23)); PRINT_R_TBL_VDEF_ITEM( "D_TWO_POW_53\t", bldexp(1, 53)); PRINT_R_TBL_VDEF_ITEM( "D_TWO_POW_78\t", bldexp(1, 78)); PRINT_R_TBL_VDEF_ITEM( "D_TWO_POW_Km53\t", bldexp(1, k - 53)); PRINT_R_TBL_VDEF_ITEM( "D_TWO_POW_2Km1\t", bldexp(1, 2*k - 1)); END_TABLE; @end_divert @eval my $tableText; \ my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText ); \ $outText = "$tableText\n\n$defineText"; \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants remainder " . \ "related routines", __FILE__ ); \ print "$headerText\n\n$outText\n"; #endif LIBRARY/float128/dpml_erf.c0000644€­ Q01134020000011377015113665770014354 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if defined(ERFC) # define BASE_NAME ERFC_BASE_NAME # define _F_ENTRY_NAME F_ERFC_NAME # define SELECT(x,y) y # define IF_ERFC(x) x # define IF_ERF(x) #else # define BASE_NAME ERF_BASE_NAME # define _F_ENTRY_NAME F_ERF_NAME # define SELECT(x,y) x # define IF_ERFC(x) # define IF_ERF(x) x #endif #if defined(MAKE_COMMON) # define DEFINES_ONLY # define COMMON_NAME erf # if !defined(BUILD_FILE_NAME) # define BUILD_FILE_EXTENSION c # define BUILD_SUFFIX TABLE_SUFFIX # define BUILD_FILE_NAME __BUILD_FILE_NAME(COMMON_NAME) # endif # if !defined(MP_FILE_NAME) # define MP_FILE_NAME __MP_FILE_NAME(COMMON_NAME) # endif # if !defined(TABLE_NAME) # define TABLE_NAME __F_TABLE_NAME(COMMON_NAME) # endif # define IF_MAKE_COMMON(x) x # define START_TABLE(name, offset) START_GLOBAL_TABLE(TABLE_NAME, offset) #else # undef DEFINES_ONLY # define IF_MAKE_COMMON(x) # define START_TABLE(name, offset) START_STATIC_TABLE(TABLE_NAME, offset) #endif #define __NEEDS_SIGNED_DENORM_TO_NORM #define __LOG2_DENORM_SCALE (F_PRECISION + 3) #define NEW_DPML_MACROS 1 #include "dpml_private.h" /* * NOTE: This routine accesses the special exp entry point. * Consequently it needs to know the alignment of the scale * factor. */ #include STR(SPECIAL_EXP_HEADER) /* * This is a hack on Alpha VMS and NT for the function * F_EXP_SPECIAL_ENTRY_NAME. In particular, the return argument * WORD *pow_of_two. Since WORD is defined as int_32 on these two platforms * and dpml_exp.c changes the WORD definition there to int_64, we need to make * sure *pow_of_two is defined as int_64 (since that is what dpml_exp.c * declared). These #if defined can be removed as soon as those platforms * support 64 bits. */ #if ((defined(ALPHA) || defined(alpha)) && (defined(wnt) || defined(vms))) # define EXP_WORD_TYPE INT_64 #else # define EXP_WORD_TYPE WORD #endif #if defined(PRECISION_BACKUP_AVAILABLE) # define EXP_OTHER_ARGS EXP_WORD_TYPE *pow_of_two #else # define EXP_OTHER_ARGS EXP_WORD_TYPE *pow_of_two, F_TYPE *pow2_low #endif extern B_TYPE F_EXP_SPECIAL_ENTRY_NAME (F_TYPE x, EXP_OTHER_ARGS); #if !defined(IEEE_FLOATING) # define IEEE_FLOATING 0 #endif /* * GENERAL COMMENTS: * ----------------- * * The error function, erf(x) is defined for all values of x by the integral: * * /\ x * 2 | * erf(x) = -------- | exp(-t^2)dt * sqrt(pi) | * \/ 0 * * From the definition and the taylor expansion for exp(x) is follows that * * erf(-x) = - erf(x) (1) * * ____ * 2 \ (-x)^(2k+1) * erf(x) = -------- / ----------- (2) * sqrt(pi) /____ k! (2k+1) * k = 0 * * The complementary error function, erfc(x) is defined as 1 - erf(x). erfc(x) * can be approximated asymtotically by: * * / ____ \ * exp(-x^2) | \ (-1)^k (2k)! | * erfc(x) ~ ---------- | 1 + / -------------- | (3) * x*sqrt(pi) | /____ 4^k k! x^(2k) | * \ k = 1 / * * and computed directly as a continued fraction: * * / \ * exp(-x^2) | 1 1/2 2/2 3/2 4/2 | * erfc(x) = ---------- | --- --- --- --- --- | (4) * sqrt(pi) | x + x + x + x + x + | * \ / * * For large values of x, computing erf(x) via (2) is time consuming and * incurs significant roundoff error. Consequently, for large x, it is * best to compute erf(x) as 1 - erfc(x), where erfc(x) is computed via (3). * Similarly computing erfc(x) for small values of x is time consuming and * inaccurate, so it is best to compute erfc(x) = 1 - erf(x) for small x. * Since erf(x) and erfc(x) are bounded between 0 and 1 for positive x, there * is no loss of significance in computing 1 - erf(x) or 1 - erfc(x) if * erf(x) and erfc(x) are less than or equal to 1/2. Let s be a point such * that erf(s) = 1/2. It follows from the definition of erfc that erfc(x) = * 1/2. * * IMPLEMENTATION ISSUES: * ---------------------- * * When x is small, erf(x) = 2*x/sqrt(pi) to machine precision. In particular * if x satifies * * 2*x/sqrt(pi) - erf(x) * ---------------------- < 2^-(F_PRECISION + 1) * erf(x) * * then erf(x) = 2*x/sqrt(pi) to machine precision. For k >= 1, let rho(k) = * 1 + 2^-(F_PRECISION + k), if r satifies * * erf(r)/r = 2/(rho(k)*sqrt(pi)) * * then it follows that for |x| < r, erf(x) = 2*x/sqrt(pi) to machine precision. * The reason for not fixing k = 1 in the above equation, is because we need * to consider the manner in which x*(2/sqrt(pi)) is computed. Since * 2/sqrt(pi) is not exact, but close to 1, we can improve the accuracy of the * final approximation by computing erf(x) for small x as: * * erf(x) = x + (2/sqrt(pi) - 1)*x * * The final error will the error in the above computation, plus the error * induced by truncating the series. For k = 1, the induced error is 1/2 bit. * In order to keep the final error below 1 lsb, it is better to increase * k to 2. This will limit the induced error to 1/4 lsb. * * Also note that for very small x, (2/sqrt(pi) - 1)*x will underflow, even * though the final result doesn't. To avoid this problem, we note that * (2/sqrt(pi) - 1) > (1/8) and compute erf(x) for small x as: * * erf(x) = (8*x + 8*(2/sqrt(pi) - 1)*x)*(1/8) * * Similarly, when x is small, erfc(x) = 1 to machine precision. Specifically * if r' satisfies * * erfc(r') = 1/rho(1), * * then for |x| < r', erf(x) = 1 to machine precision. */ #if defined(MAKE_INCLUDE) @divert divertText /* * The following subroutine "purifies" a floating point number by * zeroing out low order bits that will not appear when the floating * value is fetched as a WORD into an integer register. We assume * that for VAX formats, the floating point numbers have been * "PDP_SHUFFLED" */ # if BITS_PER_WORD < BITS_PER_F_TYPE # define NUM_INT_BITS BITS_PER_WORD # else # define NUM_INT_BITS BITS_PER_F_TYPE # endif function purify() { _n = bexp($1) - NUM_INT_BITS; _y = bldexp($1, -_n); _y = trunc(_y); _y = bldexp(_y, _n); return _y; } /* * the following macro solves the equation F(x) = c to a relative error * of t. The input points a and b are two points near the solution that * are used as the starting points for the modified Newton's iteration */ # define FIND_ROOT(a, b, c, t, p, r) \ old_precision = precision; \ precision = ceil((p)/MP_RADIX_BITS) + 4; \ x1 = (a); x2 = (b); \ f1 = F(x1); f2 = F(x2); \ while (1) \ { \ r = ((x1*f2 - x2*f1) + (c)*(x2 - x1))/(f2 - f1); \ err = 2*abs((r - x2)/(r + x2)); \ if (err < (t)) \ break; \ x1 = x2; x2 = r; \ f1 = f2; f2 = F(x2); \ } \ precision = old_precision; /* Set working precision an start computing */ precision = ceil(F_PRECISION/MP_RADIX_BITS) + 4; mu = 2/sqrt(pi); rho = 1 + 2^-(F_PRECISION + 2); c = mu/rho; /* * Find the smallest polynomial argument for erf, by solving the * equation erf(x)/x = 2/(rho*sqrt(pi)) using Newton's method. The * starting points, a and b, are obtained by truncating the Taylor * series for erf(x)/x to 2 and 3 terms respectively and solving for * x. Since f(x) = erf(x)/x = 2/sqrt(pi)*[1 - x^2/3 + x^4/(5*2!) ...] * and the solution we are looking for is on the order of 1/2^(p+1), * it follows that we must have something on the order of 3*p + 3bits * in the MP calculations to insure that f(x2) - f(x1) term in the * Newton's iteration has at least p + 1 bits of accuracy */ lambda = 1/(2^(F_PRECISION + 1) + 1); a = sqrt(3*lambda); b = sqrt((5 - sqrt(25 - 90*lambda))/3); tol = 2^-(F_PRECISION + 1); # undef F # define F(x) (erf(x)/x) FIND_ROOT(a, b, c, tol, 3*(F_PRECISION + 1), smallest_erf_poly_arg); smallest_erf_poly_arg = purify(smallest_erf_poly_arg); #if 0 /* * Find the smallest polynomial argument for erfc, by solving the * equation erfc(x) = 1/rho(1). */ lambda = 1/(1 + 2^(F_PRECISION + 1)); a = lambda; b = a/(1 - a*a/3); # undef F(x) # define F(x) (erf(x)) FIND_ROOT(a, b, lambda, tol, 2*F_PRECISION, smallest_erfc_poly_arg); #endif /* * Find the smallest polynomial argument for erfc, by solving the * equation erfc(x) = 1/rho(1). This is equivalent to solving * erf(x) = 1 - 1/rho(1) or letting lambda = 1/(2^(F_PRECISION + 1), * x = arc_erf(lambda). Since lambda is so small, using the Newton's * interations for the solution is some what combersom. However, * arc_erf(x) can be Taylor series of the form: * * arc_erf(x) = * sum{ k = 0,.. | C(2k+1)*(x*sqrt(pi)/2)^(2k+1)/(2k+1)! } * * where C(k) is the constant of the polynomial P(k,x) which is defined * recursively by: * * P(k+1,x) = P'(k,x) + 2*k*x*P(k,x) * * Letting z = x*sqrt(pi)/2, it follows that * * arc_erf(x) = z + (2/2!)*z^3 + (28/5!)*z^5 + ... * * Since we are only interested in generating constants good to * machine precision and since lambda < 1/2^F_PRECISION, we need only * take two terms in the series. */ lambda = (sqrt(pi)/2)/(1 + 2^(F_PRECISION + 1)); smallest_erfc_poly_arg = lambda*(1 + lambda*lambda); smallest_erfc_poly_arg = purify(smallest_erfc_poly_arg); /* * DENORM PROCESSING: * ------------------ * * Since 2/sqrt(pi) > 1, if x is not denormalized, then erf(x) will not be * denormalized. However, for certain values of x just below the denormalized * threshold, erf(x) will be normalized. Consequently, we can deal with * denorms by scaling up, multipling and then scaling down. As in the small * case we will want to perform the multiplication as x + (2/sqrt(pi) - 1)*x, * so we want to scale up high enough so that (2/sqrt(pi) - 1)*x does not * become denormalized. Since (2/sqrt(pi) - 1) > 1/8, we can scale up by * the precision + 3 and still avoid denormalized results. Use the * denorm scaling macros in dpml_private.h by defining an appropriate * value of __LOG2_DENORM_SCALE. */ /* * ERF(x) and ERFC(x) EVALUATION FOR SMALL ARGUMENTS: * --------------------------------------------------- * * Using (2) to approximate erf(x) is fairly straight forward. We assume that * the (2) can be written as x*R(x^2), where R is a rational function. We note * that R(0) = 2/sqrt(pi) ~ 1.12837916. So we can reformulate the computation * and improve the accuracy by evaluating (2) in the form x + x*S(x^2). Since * 2/sqrt(pi) ~ 1.12837916, when x is small, the overhang between x and x*S(x) * is 3 bits unless x is close to a power of two, in which case it is 2 bits. * As x increases to about .617 the overhang increases to about 13 bits. As x * continues to increase, the overhang decreases until it reaches a 3 bit * overhang at .942. The reason for the dramatic increase in overhang near * .617 is that the function x*S(x^2) has zero in that region. This means * that x*S(x^2) has a massive loss of significance near .617. Fortunately, * for x < .617, the alignment shift between x and x*S(x^2) is sufficient to * compensate for the loss of significance. For x > .617, the alignment * shift is not as effective at compensatating. * * We can use (2) to compute erfc(x) when x is small as: * * erfc(x) = 1 - x*R(x^2) * = 1 - {x + x*[R(x^2) - 1]} * = (1 - x) + x*[R(x^2) - 1] * * Graphing the overhang between (1-x) and x*[R(x^2) - 1], we note the the * overhang decreases with x to a 4 bit overhang near .5, then increases to * 12 bits near .617 and then steadily decreases as x gets larger. At x = .75 * the overhang is 3 bits and for x > .75 the overhang is less than 3 bits. * Problems with loss of significance near .617 are similar to the erf case. * * The upshot of the above, is that if approximate erf(x) - x on the interval * [0, .617] then we can compute both erf(x) and erfc(x) using that * approximation and obtain (almost always) a 3 bit overhang on the last * add. This should result in an error bound < 1 ulp on that interval for * both functions. * * Note that when computing 1 - x in the erfc case, the subtraction is not * exact so some care needs to be taken. Specifically, let z = 1 - x and * y = x + (z - 1), then we can compute erfc as: * * erfc(x) = (1 - x) + x*[R(x^2) - 1] * = (z - y) + x*[R(x^2) - 1] * = z + { x*[R(x^2) - 1] - y } * * At first glance, approximating the function on the interval [0, .617] may * seem quite wasteful, since the interval is relatively large and consequently * the evaluation will be slow. However, the terms in the series decrease * as 1/n! so the convergence is fast. Also, the alternative is to use an * approximation based on equations (3) or (4), both of which require an * evaluation of exp(-x^2). */ # undef F # define F(x) (erf(x)/x) a = .617; b = .616; FIND_ROOT(a, b, 1, tol, 2*F_PRECISION, largest_poly_arg); largest_poly_arg = purify(largest_poly_arg); old_precision = precision; precision = ceil(2*F_PRECISION/MP_RADIX_BITS) + 4; function erf_x_over_x () { if ($1 == 0) return mu; else return erf($1)/$1; } remes(REMES_FIND_POLYNOMIAL + REMES_SQUARE_ARG + REMES_RELATIVE_WEIGHT, 0, largest_poly_arg, erf_x_over_x, F_PRECISION + 1 + 3, &erf_poly_degree, &erf_poly_coefs); precision = old_precision; /* * ERF(x) and ERFC(x) EVALUATION WHEN x IS NOT SMALL: * -------------------------------------------------- * * As x approaches infinity, erf(x) approaches 1. Eventually, erf(x) becomes * indistinguishable from 1 in machine format. * * Let t satisfy the equation * * erf(t) = 1 - 1/2^(F_PRECISION + 1) * * Then if x >= t, erf(x) = 1 correctly rounded to machine precision. Note * that the above equation is equivalent to * * erfc(t) = 1/2^(F_PRECISION + 1) */ rho = 1 - 1/2^(F_PRECISION + 1); a = rho/mu; b = a/(1 - a*a/3); # undef F # define F(x) (erfc(x)) FIND_ROOT(a, b, 1/2^(F_PRECISION + 1), tol, 3*F_PRECISION, erf_max_x); /* * Similarly, ss x approaches minus infinity, erfc(x) approaches 2. Eventually, * erf(x) becomes indistinguishable from 2 in machine format. * * Let t satisfy the equation * * erfc(t) = 2 - 1/2^F_PRECISION * * Then if x < t, erfc(x) = 2 correctly rounded to machine precision. */ rho = 2 - 1/2^F_PRECISION; a = -erf_max_x; b = a/(1 - a*a/3); # undef F # define F(x) (erfc(x)) FIND_ROOT(a, b, rho, tol, 3*F_PRECISION, erfc_min_x); /* * Similarly, as x approaches infinity, erfc(x) approaches 0. If m is the * smallest power of two that is representable, and v statisfies the equation * * erfc(v) = 2^(m - 1) * * it follows that for x > v, the erfc(x) underflows to zero, while for x <= v, * erfc(v) is non-zero. * * For IEEE data types, there is a point at which erfc(x) becomes * denormalized. If m' is the smallest power of 2 that is representable as * a normalized number, and u statisfies the equation * * erfc(u) = 2^(m' - 1) * * If follows that if x > u, the erfc(x) is denormalized, while for x <= u, * erfc(x) is normalized. */ min_bin_exp = IEEE_FLOATING ? (F_MIN_BIN_EXP - F_PRECISION + 1) : F_MIN_BIN_EXP; /* use erfc(x) ~ exp(-x^2)/(x*sqrt(pi)) to get a and b */ a = sqrt(-((min_bin_exp - 1)*log(2) + log(pi)/2)); b = sqrt(-((min_bin_exp - 1)*log(2) + log(pi)/2) + log(a)); c = 2^(min_bin_exp - 1); # undef F # define F(x) (erfc(x)) FIND_ROOT(a, b, c, tol, 3*F_PRECISION, erfc_underflow_x); if ( IEEE_FLOATING ) { /* Compute denorm threshold */ a = sqrt(-((F_MIN_BIN_EXP - 1)*log(2) + log(pi)/2)); b = sqrt(-((F_MIN_BIN_EXP - 1)*log(2) + log(pi)/2) + log(a)); c = 2^F_MIN_BIN_EXP; FIND_ROOT(a, b, c, tol, 3*F_PRECISION, erfc_denorm_x); } /* * For large x, using the asymtotic approximation (3) is the most efficient * means of computing erfc(x) and erf(x) as 1 - erfc(x). Since (3) is an * asymtotic approximation, there is a smallest x for each precision for * which (3) can be used to approximate erfc(x). I.e. there is a value x0, * such that if x < x0, then the relative error in (3) is greater than * 2^(F_PRECISION + 1), regardless on how many terms are used. As noted * above, there is an x1, such that if x > x1 then erf(x) = 1 to machine * precision. Using equation (3) and Sterling's approximation for n!, it * possible to show that x0 and x1 are very close and that x0 < x1. What * this implies is that the evaluation for erf(x) and erfc(x) on the * non-polynomial range be divided into two pieces: * * Argument range erf(x) evaluation erfc(x) evaluation * -------------- ----------------- ------------------ * x < x1 based on (4) based on (4) * x1 <= x 1 based on (3) * * When evaluating erfc(x) based on (3), we include the constant 1/sqrt(pi) * into the polynomial coefficients and consequently the lead coefficient is * 1/sqrt(pi) = .5641895... = 1/2 + alpha, where alpha = 1/sqrt(pi) - .5. * Note that 1/2 and alpha have a 3 bit alignment shift. Therefore we can * can improve the overall accuracy of the approximation by rewritting (3) * in the form: * * erfc(x) = exp(-x^2)*z*[.5 + p(z^2)] where z = 1/x (5) * */ old_precision = precision; precision = ceil(2*F_PRECISION/MP_RADIX_BITS) + 4; function x_exp_x2_erfc_x() { return ($1)*exp($1*$1)*erfc($1); } erf_max_x = purify(erf_max_x); erfc_underflow_x = purify(erfc_underflow_x); remes( REMES_FIND_POLYNOMIAL + REMES_RECIP_SQUARE_ARG + REMES_RELATIVE_WEIGHT, erf_max_x, erfc_underflow_x, x_exp_x2_erfc_x, F_PRECISION + 1 + 3, &erfc_poly_degree, &erfc_poly_coefs); precision = old_precision; /* * When evaluating erfc(x) using (4) it is useful to note that it can be * rewritten as: * * erfc(x) = exp(-x*x)*f(x) * * where f(x) = exp(x*x)*erfc(x). It can be shown that f(x) positive and * monotonicly decreasing. Further, f(x) decreases ~ 1/x. If we are * going to approximate erfc(x) on the interval [a, b], then for each * negative power of two between f(a) and f(b) we can find an interval * in [a, b], call it [c(n), c(n+1)], such that * * 1/2^n - f(c(n)) f(c(n)) - 1/2^(n+1) * --------------- = -------------------- * 1/2^n 1/2^(n+1) * * An then approximate erfc(x) on [c(n), c(n+1)] as * * erfc(x) = exp(-x*x)*[1/2^n + R(x)] * = exp(-x*x)/2^n*[1 + 2^n*R(x)] * * Where R(x) is a rational function, exp(-x*x)/2^n can be computed by * adjusting the scale factor for the special exp entry point and the scale * factor of 2^n can be incorporated into the coefficients of R. * * NOTE: for the precision we are interested in (23, 53 and 113) * at most 4 intervals are required. However, time does not * permit implementation of this scheme. Instead we will use one * expansion with n = 3. */ old_precision = precision; precision = ceil(2*F_PRECISION/MP_RADIX_BITS) + 4; function exp_x2_erfc_x() { return exp($1*$1)*erfc($1); } erf_max_x = purify(erf_max_x); remes( REMES_FIND_RATIONAL + REMES_LINEAR_ARG + REMES_RELATIVE_WEIGHT + REMES_INIT_LEFT_CHEBY, largest_poly_arg, erf_max_x, exp_x2_erfc_x, F_PRECISION + 1 + 3, &erfc_num_degree, &erfc_den_degree, &erfc_rational_coefs); precision = old_precision; /* Copy numerator coefficients and pad out to same number as denominator */ first_den_coef = erfc_num_degree + 1; for (i = 0; i <= erfc_num_degree; i++) erfc_num_coefs[i] = erfc_rational_coefs[i]; while (erfc_num_degree < erfc_den_degree) erfc_num_coefs[++erfc_num_degree] = 0; /* Copy denominator coefficients and subtract from numerator */ for (i = 0; i <= erfc_den_degree; i++) { erfc_den_coefs[i] = erfc_rational_coefs[i + first_den_coef]; erfc_num_coefs[i] = 8*erfc_num_coefs[i] - erfc_den_coefs[i]; } /* * * COMPUTING EXP(-x^2) * ------------------- * * Expansion (3) involves the compution of exp(-x^2). Since small variations * in the argument to exp results in large errors in the result, it is * necessary to compute -x^2 to extra precision. The basic approach is to * compute x^2 in hi and lo pieces and note that exp(-hi) can be computed * in extra precision (using the special exp entry point) as exp(-hi) = * 2^I*(fhi + flo). Exp(-lo) can be computed as a polynomial of the form * 1 - lo*Q(lo). Combining the above, we have: * * exp(-x^2) = exp(-(hi + lo)) * = exp(-hi) * exp(-lo) * = 2^I*(fhi + flo) * [1 - lo*Q(lo)] * = 2^I*{ fhi + flo - (fhi + flo)*lo*Q(lo) } * = 2^I*{ fhi + [flo - f*lo*Q(lo)]} * = 2^I*{ fhi + V } * * Noting the computation of exp(-x^2), using expansion (3) to compute erfc(x) * results in a computation of the form: * * erfc(x) = exp(-x^2)*z*[.5 + P(z^2)] (5) * = 2^I*[ fhi + V ]*z*[.5 + P(z^2)] * = 2^(I - 1)*z*[ fhi + V ]*z*[1 + 2*P(z^2)] * = 2^(I - 1)*z*[ fhi + V + (fhi + V)*2*P(z^2)] * = 2^(I - 1)*z*[ fhi + U(x)] * * Based on the above, we have the following approach to computing erfc(x) * * (1) get x^2 as hi and lo pieces * (2) call special exp entry to get I(x), fhi and flo * (3) V <-- flo - (fhi + flo)*lo*Q(lo) * (4) z <-- 1/x * (4) U <-- V + (fhi + V)*2*P(z^2) * (5) result <-- 2^(I - 1)*z*(fhi + V) * * Note that in step 4, the factor of 2 can be incorporated into the * coefficients of P */ /* Adjust erfc coefficients */ for (i = 0; i <= erfc_poly_degree; i++) erfc_poly_coefs[i] = 2*erfc_poly_coefs[i]; erfc_poly_coefs[0] = erfc_poly_coefs[0] - 1; @end_divert #endif /* * In the above discussion, we needed to compute x^2 = hi + lo and Q(lo). * There are basically two ways to obtain hi and lo, depending on whether or * not there is backup precision. * * If there is backup precision then * * t <-- ((B_TYPE) x)^2 * hi <-- (F_TYPE) t * lo <-- (F_TYPE) (t - (B_TYPE) hi) * * When computed this way, the alignment shift between hi and lo is at least * F_PRECISION + 1 bits. * * If there is no backup precision, then x must be broken into hi and lo * pieces. Then * * x^2 = (xhi + xlo)^2 * = (xhi + xlo)*(xhi + xlo) * = xhi*(xhi + xlo) + xlo*(xhi + xlo) * = xhi*xhi + xhi*xlo + xlo*(xhi + xlo) * = xhi^2 + xlo*(xhi + xhi + xlo) * = xhi^2 + xlo*(xhi + x) * = hi + lo * * There are several ways to obtain xhi and xlo, but for simplicity we will * assume that they are obtained by conversion to R_TYPE. * * NOTE: the macro SPECIAL_EXP uses a temporary location _scale. * This is to accommodate a hack in exp for Alpha VMS and NT. * When these platforms handle 64 integers, then the use of _scale * can be removed. */ #if defined(PRECISION_BACKUP_AVAILABLE) # undef PRECISION_BACKUP_AVAILABLE # define PRECISION_BACKUP_AVAILABLE 1 # if !defined(X_SQR_TO_HI_LO) # define X_SQR_TO_HI_LO(x, t, hi, lo) { \ t = (B_TYPE) x; \ t = t*t; \ hi = (F_TYPE) t; \ lo = (F_TYPE)(t - (B_TYPE) hi) ; \ } # endif # if !defined(SPECIAL_EXP) # define SPECIAL_EXP(x, t, i, hi, lo) { \ EXP_WORD_TYPE _scale; \ t = F_EXP_SPECIAL_ENTRY_NAME(x, &_scale); \ i = (WORD) _scale; \ hi = (F_TYPE) t; \ lo = (F_TYPE) (t - (B_TYPE)hi); \ } # endif #else # define PRECISION_BACKUP_AVAILABLE 0 # if !defined(X_SQR_TO_HI_LO) # define X_SQR_TO_HI_LO(x, t, hi, lo) { \ hi = (F_TYPE)((R_TYPE) x); \ lo = x - hi; \ lo = lo*(hi + x); \ hi = hi*hi ; \ } # endif # if !defined(SPECIAL_EXP) # define SPECIAL_EXP(x, t, i, hi, lo) { \ EXP_WORD_TYPE _scale; \ hi = F_EXP_SPECIAL_ENTRY_NAME(x, &_scale, &lo); \ i = (WORD) _scale; \ } # endif #endif /* * The low order POW2_K bits in the scale factor from the special exp * entry point contains the index into the exp table. Since its use is not * required in erf/erfc we want to mask off the low bits. While we're at it, * we can align it with the exponent field. */ #define EXP_SCALE_MASK ((WORD) ~ MAKE_MASK(POW2_K, 0)) #if (F_EXP_POS >= POW2_K) # define ADJUST_AND_ALIGN_SCALE(s) (((s) & EXP_SCALE_MASK) \ << (F_EXP_POS - POW2_K)); #else # define ADJUST_AND_ALIGN_SCALE(s) (((s) & EXP_SCALE_MASK) \ >> (POW2_K - F_EXP_POS)); #endif #if defined(MAKE_INCLUDE) @divert -append divertText if (PRECISION_BACKUP_AVAILABLE) { t = bround(erfc_underflow_x*erfc_underflow_x, F_PRECISION); n = bexp(t); max_x_sqr_lo = bldexp(1., n - F_PRECISION); } else { n = bexp(erfc_underflow_x); t = bround(erfc_underflow_x, R_PRECISION); s = bldexp(1., n - (R_PRECISION + 1)); max_x_sqr_lo = s*(t + erfc_underflow_x); } /* Now compute the polynomial for exp(lo) */ old_precision = precision; precision = ceil(2*F_PRECISION/MP_RADIX_BITS) + 8; function exp_m1_ov_x() { if ($1 == 0) return 1; else return expm1(-$1)/(-$1); } remes(REMES_FIND_POLYNOMIAL + REMES_LINEAR_ARG + REMES_RELATIVE_WEIGHT, 0, max_x_sqr_lo, exp_m1_ov_x, F_PRECISION + 1, &exp_poly_degree, &exp_poly_coefs); precision = old_precision; # define F_PRINT_A_DEFINE(name) PRINT_TABLE_ADDRESS_DEFINE(name, \ TABLE_NAME, offset, F_TYPE) # define F_PRINT_V_DEFINE(name) PRINT_TABLE_VALUE_DEFINE(name, \ TABLE_NAME, offset, F_TYPE) # define F_PRINT_ENTRY(value) PRINT_1_F_TYPE_ENTRY(value, offset) # define PRINT_COEFS(a, n, d) F_PRINT_A_DEFINE(d); \ TABLE_COMMENT(STR(a)); \ for (i = 0; i <= n; i++) \ { F_PRINT_ENTRY(a[i]); } printf("\n#include \"dpml_private.h\"\n\n"); IF_MAKE_COMMON( printf("\n#if !defined(DEFINES_ONLY)\n\n"); ) START_TABLE(TABLE_NAME, offset); TABLE_COMMENT("2/sqrt(pi) - 1, 8 and 1/8" ); F_PRINT_V_DEFINE(TWO_OVER_SQRT_PI_M1); F_PRINT_ENTRY(mu - 1); F_PRINT_V_DEFINE(EIGHT); F_PRINT_ENTRY(8); F_PRINT_V_DEFINE(ONE_EIGTH); F_PRINT_ENTRY(1/8); erf_poly_coefs[0] = erf_poly_coefs[0] - 1; PRINT_COEFS(erf_poly_coefs, erf_poly_degree, ERF_POLY_COEFS); PRINT_COEFS(erfc_poly_coefs, erfc_poly_degree, ERFC_POLY_COEFS); PRINT_COEFS(exp_poly_coefs, exp_poly_degree, EXP_POLY_COEFS); PRINT_COEFS(erfc_num_coefs, erfc_num_degree, ERFC_NUM_COEFS); PRINT_COEFS(erfc_den_coefs, erfc_den_degree, ERFC_DEN_COEFS); END_TABLE; IF_MAKE_COMMON( printf("\n#else\n\n"); printf(" extern const " STR(F_TYPE) " " STR(TABLE_NAME) "[];\n"); printf("\n#endif\n\n"); ) printf("#define ERF_POLY(t,z)\t\tPOLY_%i_ALL(t, ERF_POLY_COEFS, z)\n", erf_poly_degree); printf("#define ERFC_POLY(t,z)\t\tPOLY_%i_ALL(t, ERFC_POLY_COEFS, z)\n", erfc_poly_degree); printf("#define EXP_POLY(t,z)\t\tPOLY_%i_ALL(t, EXP_POLY_COEFS, z)\n", exp_poly_degree); printf("#define ERFC_NUM_POLY(t,z)\tPOLY_%i_ALL(t, ERFC_NUM_COEFS, z)\n", erfc_num_degree); printf("#define ERFC_DEN_POLY(t,z)\tPOLY_%i_ALL(t, ERFC_DEN_COEFS, z)\n", erfc_den_degree); /* * The following function returns an "integer" that has the same bit * pattern as the floating point value. (NOTE: for VAX data types * the floating point "bit pattern" is after a PDP_SHUFFLE.) */ # if IEEE_FLOATING # define _F_SIGN_BIT_POS F_SIGN_BIT_POS # define _F_EXP_POS F_EXP_POS # else # define _F_POS_ADJ (NUM_INT_BITS - 16) # define _F_SIGN_BIT_POS (F_SIGN_BIT_POS + _F_POS_ADJ) # define _F_EXP_POS (F_EXP_POS + _F_POS_ADJ) # endif # define HEX_FMT PASTE_3(HEX_FORMAT_FOR_, NUM_INT_BITS, _BITS) function as_int() { _sign = 0; if ($1 < 0) _sign = 1; exponent = bexp($1); _y = trunc(bldexp($1, _F_EXP_POS + 1 - exponent)); _i = (_sign << _F_SIGN_BIT_POS) + ((exponent + F_EXP_BIAS - F_NORM - 2) << _F_EXP_POS) + _y; return _i; } printf("#define MAX_POLY_ARG\t\t" HEX_FMT "\n", as_int(largest_poly_arg)); printf("#define MIN_ERF_POLY_ARG\t" HEX_FMT "\n", as_int(smallest_erf_poly_arg)); printf("#define MIN_ERFC_POLY_ARG\t" HEX_FMT "\n", as_int(smallest_erfc_poly_arg)); printf("#define ERFC_MAX_CONSTANT_ARG\t(" HEX_FMT " - (U_WORD) " HEX_FMT ")\n", as_int(-erfc_min_x), bldexp(1, _F_SIGN_BIT_POS)); printf("#define ERF_MIN_CONSTANT_ARG\t" HEX_FMT "\n", as_int(erf_max_x)); printf("#define MIN_ASYMTOTIC_ARG\t" HEX_FMT "\n", as_int(erf_max_x)); printf("#define MIN_UNDERFLOW_ARG\t" HEX_FMT "\n", as_int(erfc_underflow_x)); @end_divert # define TMP_FILE ADD_EXTENSION(BUILD_FILE_NAME,tmp) @eval my $outText = MphocEval( GetStream( "divertText" ) ); \ my $defineText = Egrep( "#define", $outText, \$tableText); \ my $headerText = GetHeaderText( STR(BUILD_FILE_NAME), \ "Definitions and constants for " . \ "erf and erfc functions", __FILE__); \ print "$headerText\n\n$tableText\n\n$defineText\n"; #endif #if !defined(MAKE_INCLUDE) # include STR(BUILD_FILE_NAME) #endif #define EXP_INC SET_BIT(F_EXP_POS) #if IEEE_FLOATING # define HAS_ABNORMAL_EXP(e) ((((e) + EXP_INC) & \ MAKE_MASK(F_EXP_WIDTH - 1, F_EXP_POS + 1)) == 0) # define _F_SIGN_BIT_MASK F_SIGN_BIT_MASK #else # if (BITS_PER_WORD <= BITS_PER_F_TYPE) # define _F_SIGN_BIT_MASK SET_BIT(BITS_PER_WORD - 1) # else # define _F_SIGN_BIT_MASK SET_BIT(BITS_PER_F_TYPE - 1) # endif #endif /* * Depending on the sign of x, erfc(x) will be the "computed" value or * 2 + the "computed" value. */ #if F_COPY_SIGN_IS_FAST # define ADD_IN_ERFC_CONST(i,x,u,z) F_COPY_SIGN((F_TYPE) 1.0, x, u); \ u = (F_TYPE) 1.0 - u; \ z += u #else # define ADD_IN_ERFC_CONST(i,x,u,z) if ((i) < 0) z += (F_TYPE) 2.0 #endif #if !defined F_ENTRY_NAME # define F_ENTRY_NAME _F_ENTRY_NAME #endif F_TYPE F_ENTRY_NAME (F_TYPE x) { EXCEPTION_RECORD_DECLARATION F_TYPE z, w, y, u, fhi, flo, hi, lo; WORD s_exp_word, exp_word, scale; F_UNION _u_; # if defined(PRECISION_BACKUP_AVAILABLE) B_TYPE t; # endif # if defined(ERF) WORD exp_field, index; # else F_TYPE v; # endif _u_.f = x; IF_IEEE(s_exp_word = _u_.F_SIGNED_HI_WORD;) IF_VAX( s_exp_word = _u_.F_HI_WORD; s_exp_word = SIGN_EXTENDED_PDP_SHUFFLE(s_exp_word);) IF_IEEE(if (HAS_ABNORMAL_EXP(s_exp_word)) goto ieee_abnormal_arguments;) /* Get "|x|" and branch to the right code for the size of x */ exp_word = s_exp_word & (~(-_F_SIGN_BIT_MASK)); if (exp_word > MAX_POLY_ARG) goto not_a_poly_argument; if (exp_word <= SELECT(MIN_ERF_POLY_ARG, MIN_ERFC_POLY_ARG)) goto identity_range; /* Just need to do a polynomial evaluation for these arguments */ w = x*x; ERF_POLY(w, z); z = x*z; /* * Add in last term. For erf, add in x, for erfc, carefully add in * 1 - x */ SELECT( z = x + z; , y = (F_TYPE) 1. - x; w = x - ((F_TYPE) 1. - y); z = y - (w + z); ) return z; not_a_poly_argument: /* * If x is large positive number (erf) or a large negative number (erfc) * then we can just return a constant */ if ( SELECT(exp_word > ERF_MIN_CONSTANT_ARG , s_exp_word >= ERFC_MAX_CONSTANT_ARG) ) goto return_constant; /* If x is a large positive number, erfc will underflow */ IF_ERFC( if (exp_word > MIN_UNDERFLOW_ARG) goto underflow; ) /* * To approximate erf or erfc for arguments in this range, we need to * compute exp(-x^2). Note that the special exp entry returns scale * as the value 2^L*n + m, where n is the binary exponent of exp(-x^2) * and m is the index into the exp data table. Since we only need n, * mask of low bits and align with exponent field */ X_SQR_TO_HI_LO(x, t, hi, lo); SPECIAL_EXP(-hi, t, scale, fhi, flo); scale = ADJUST_AND_ALIGN_SCALE(scale); /* * For erfc, if x is really big, we need to use an asymtotic approximation */ IF_ERFC(if (exp_word > MIN_ASYMTOTIC_ARG) goto needs_asymtotic;) /* * In the medium range, we use approximation (4) in the form * * erfc(x) = exp(-x^2)/4*[1 + R(x)] * * In this range, we also need to work with |x| and restore the sign * at the end. */ F_ABS(x, z); ERFC_NUM_POLY(z, u); ERFC_DEN_POLY(z, y); y = u/y; EXP_POLY(lo, u); flo = flo - (fhi + flo)*lo*u; z = fhi + (flo + (fhi + flo)*y); /* z = fhi*y + flo*y; */ _u_.f = z; _u_.F_HI_WORD += (scale - 3*EXP_INC); z = _u_.f; IF_ERF(z = (F_TYPE) 1.0 - z;) if (s_exp_word >= 0) goto return_z; /* Negate for erf, subtract from 2 for erfc */ z = SELECT(-z, (F_TYPE) 2.0 - z); return_z: return z; #if defined(ERFC) needs_asymtotic: z = ((F_TYPE) 1.)/x; EXP_POLY(lo, u); v = flo - (fhi + flo)*lo*u; u = fhi + v; w = z*z; ERFC_POLY(w, y); u = v + u*y; z = (z*fhi) + (z*u); /* Slightly better error bound this way */ /* Scale by power of two, looking out for underflows and denorms */ _u_.f = z; scale -= EXP_INC; /* Adj for factor of 2 in ERFC_POLY */ s_exp_word = _u_.F_HI_WORD; _u_.F_HI_WORD = s_exp_word + scale; scale = (s_exp_word & F_EXP_MASK) + scale; if (scale <= 0) goto denorm_or_underflow; z = _u_.f; return z; denorm_or_underflow: # if IEEE_FLOATING if ((WORD) (scale + ALIGN_W_EXP_FIELD(F_PRECISION - 1)) >= 0) { /* ** At this point, we have z = 2^n*f is in the denormalized range. ** Redefine z to be 2^0*f. */ s_exp_word = (s_exp_word & ~F_SIGN_EXP_MASK) | ALIGN_W_EXP_FIELD(F_EXP_BIAS); _u_.F_HI_WORD = s_exp_word; z = _u_.f; /* Get 'w' = 2^k, where k is the number of bits "of denormalization" */ CLEAR_LOW_BITS(_u_); s_exp_word = (s_exp_word & F_SIGN_EXP_MASK) - scale + EXP_INC; _u_.F_HI_WORD = s_exp_word; /* ** compute 2^k + z and unscale the exponent field to get the correct ** denormalized result */ _u_.f += z; _u_.F_HI_WORD -= (s_exp_word & F_EXP_MASK); z = _u_.f; if ( (z != (F_TYPE) 0.) && PROCESS_DENORMS) return z; } # endif #endif #if defined(ERFC) underflow: #endif GET_EXCEPTION_RESULT_1(ERFC_UNDERFLOW, x, z); return z; identity_range: SELECT( z = EIGHT*x; z = (z + TWO_OVER_SQRT_PI_M1*z)*ONE_EIGTH, z = (F_TYPE) 1.0); return z; #if IEEE_FLOATING ieee_abnormal_arguments: if ((s_exp_word & F_EXP_MASK) == F_EXP_MASK) goto nan_or_inf; /* If we get here, x is either 0 or denorm. */ # if defined(ERFC) return (F_TYPE) 1.0; # else /* Scale up argument so that we can safely muliply by 2/sqrt(pi) - 1 */ DENORM_TO_NORM(x, z); z = z + TWO_OVER_SQRT_PI_M1*z; /* * Now unscale. Underflow is not possible here but the result may * be denormal. So we need to check the exponent field. */ _u_.f = z; exp_word = _u_.F_HI_WORD; exp_field = exp_word & F_EXP_MASK; exp_word ^= exp_field; index = exp_field - __LOG2_DENORM_SCALE_ALIGNED_W_EXP; if (index <= 0) goto erf_denorm; _u_.F_HI_WORD = exp_word | index; z = _u_.f; return z; erf_denorm: exp_field -= (index - ALIGN_W_EXP_FIELD(1)); _u_.F_HI_WORD = (exp_word | exp_field) & F_SIGN_EXP_MASK; CLEAR_LOW_BITS(_u_); _u_.f += z; _u_.F_HI_WORD -= exp_field; z = _u_.f; return z; # endif nan_or_inf: /* If x is a NaN, return it. */ if ((s_exp_word & F_MANTISSA_MASK) OR_LOW_BITS_SET(_u_)) return x; /* Otherwise, x is an infinity. Fall through to return_constant. */ #endif return_constant: if (s_exp_word & _F_SIGN_BIT_MASK) z = (F_TYPE) SELECT( -1.0, 2.0); else z = (F_TYPE) SELECT( 1.0, 0.0); return z; } LIBRARY/float128/compiler.h0000644€­ Q01134020000003455315113665770014404 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef COMPILER_H #define COMPILER_H #undef INLINE #define INLINE_DIRECTIVE #if ((defined(epc_cc) || defined(EPC_CC)) || defined(ecc) || defined(__ECC) || \ defined(__ICC) || defined(icc) ) # define __ecc__ #endif #if (defined(dec_cc) || defined(DEC_CC) || defined(__DECC)) # define __xxx_dec_cc #elif (defined(mips_cc) || defined(MIPS_CC) || defined(_CFE) \ || (defined(host_mips) && !defined(__GNUC__)) ) # define __xxx_mips_cc #elif (defined(vax_cc) || defined(VAX_CC) \ || defined(vaxc) || defined(VAXC) || defined(__VAXC)) # define __xxx_vax_cc #elif (defined(msc_cc) || defined(MSC_CC) || defined(_MSC_VER)) && !defined(__ICL) # define __xxx_msc_cc #elif (defined(hp_cc) || defined(HP_CC)) # define __xxx_hp_cc #elif ((defined(gnu_cc) || defined(GNU_CC) || defined(__GNUC__)) \ && !defined(__ecc__)) # define __xxx_gnu_cc #elif defined(__ecc__) # define __xxx_intel_icc #elif ( defined(__ICL) || defined(icl) ) # define __xxx_intel_icl #else # define __xxx_just_cc #endif #undef dec_cc #undef gnu_cc #undef mips_cc #undef vax_cc #undef msc_cc #undef hp_cc #undef intel_icc #undef intel_icl #undef just_cc #if defined __xxx_dec_cc # undef __xxx_dec_cc 1 # define dec_cc 1 # define COMPILER dec_cc # define INLINE # undef INLINE_DIRECTIVE # define INLINE_DIRECTIVE static #elif defined __xxx_mips_cc # undef __xxx_mips_cc # define mips_cc 2 # define COMPILER mips_cc #elif defined __xxx_vax_cc # undef __xxx_vax_cc # define vax_cc 3 # define COMPILER vax_cc #elif defined __xxx_msc_cc # undef __xxx_msc_cc # define msc_cc 4 # define COMPILER msc_cc #elif defined __xxx_hp_cc # undef __xxx_hp_cc # define hp_cc 5 # define COMPILER hp_cc #elif defined __xxx_gnu_cc # define gnu_cc 6 # define COMPILER gnu_cc # define INLINE # undef INLINE_DIRECTIVE # define INLINE_DIRECTIVE static __inline__ #elif defined __xxx_intel_icc # undef __xxx_intel_icc # define intel_icc 7 # define COMPILER intel_icc #elif defined __xxx_intel_icl # undef __xxx_intel_icl # define intel_icl 8 # define COMPILER intel_icl #else # undef __xxx_just_cc # define just_cc 9 # define COMPILER just_cc #endif #define NULL_MACRO(a) a #define tmp_TRY 0 #define tmp_THIS + 0 #define tmp_TRYtmp_THIS 1 #ifndef GLUE # define GLUE(a,b) a/**/b # if (GLUE(tmp_TRY,tmp_THIS) != tmp_TRYtmp_THIS) # undef GLUE # endif #endif #ifndef GLUE # define GLUE(a,b) a ## b # if (GLUE(tmp_TRY,tmp_THIS) != tmp_TRYtmp_THIS) # undef GLUE # endif #endif #ifndef GLUE # define GLUE(a,b) NULL_MACRO(a)b # if (GLUE(tmp_TRY,tmp_THIS) != tmp_TRYtmp_THIS) # undef GLUE # endif #endif #ifndef GLUE # error GLUE macro not defined #endif #undef tmp_TRY #undef tmp_THIS #undef tmp_TRYtmp_THIS #define PASTE(a,b) GLUE(a,b) #define PASTE_2(a,b) PASTE(a,b) #define PASTE_3(a,b,c) PASTE(PASTE(a,b),c) #define PASTE_4(a,b,c,d) PASTE(PASTE(PASTE(a,b),c),d) #define PASTE_5(a,b,c,d,e) PASTE(PASTE(PASTE(PASTE(a,b),c),d),e) #define PASTE_6(a,b,c,d,e,f) PASTE(PASTE(PASTE(PASTE(PASTE(a,b),c),d),e),f) #define PASTE_7(a,b,c,d,e,f,g) PASTE(PASTE(PASTE(PASTE(PASTE(PASTE(a,b),c),d),e),f),g) #define QUOTE_IT(s) #s /* Defining QUOTE_IT(s) to be "s" might work with some compilers. */ #define STR(s) QUOTE_IT(s) // ============================================================================= // At higher optimization levels, some compilers will ignore parenthesis and // re-arrange floating point calculation. Doing so will break some of the // algorithms in the DPML (eg. divide). The intel compiler in particular has // this problem. However, the Intel compiler has an opperator to avoid // reassociations. // ============================================================================= #if COMPILER == intel_icc || COMPILER == intel_icl # define GROUP(x) __fence(x) #endif #if (COMPILER == dec_cc) /* Declare decc linkages for various platforms */ # if ((OP_SYSTEM == osf) || (OP_SYSTEM == linux)) # if ((OP_SYSTEM == linux) || ( __DECC_VER >= 60000000 )) # pragma message disable (nofntpdefdecl) # endif # if 0 /* * For reference, the Alpha AXP Calling Standard has: */ # pragma linkage standard_linkage = ( parameters( r16, r17, r18, r19, r20, r21, f16, f17, f18, f19, f20, f21 ), result( r0, f0, f1 ), /**/ nopreserve ( r0, r1, r2, r3, r4, r5, r6, r7, r8 ), preserved( r9, r10, r11, r12, r13, r14 ), preserved( r15 ), /* Frame Pointer */ nopreserve ( r16, r17, r18, r19, r20, r21 ), /* Parameters */ nopreserve ( r22, r23, r24, r25 ), preserved( r26 ), /* Return Address */ nopreserve ( r27 ), /* Bound Procedure Value */ nopreserve ( r28 ), /* Volatile Scratch */ nopreserve ( r29 ), /* Global Pointer */ preserved( r30 ), /* Stack Pointer */ /*preserved( r31 ),*/ /* Read as Zero */ nopreserve ( f0, f1 ), preserved( f2, f3, f4, f5, f6, f7, f8, f9 ), nopreserve ( f10, f11, f12, f13, f14, f15 ), nopreserve ( f16, f17, f18, f19, f20, f21 ), /* Parameters */ nopreserve ( f22, f23, f24, f25, f26, f27 ), nopreserve ( f28, f29, f30 ), /*preserved( f31 ),*/ /* Read as Zero */ notneeded(ai) ) # endif # pragma linkage complex_linkage = ( result (f0, f1) ) # pragma use_linkage complex_linkage ( \ F_sincosd, F_sincosdf, \ F_sincos, F_sincosf, ccos, ccosf, cdiv, cdivf, cexp, cexpf, clog, clogf, \ cmul, cmulf, cpow, cpowf, cpowi, cpowif, csin, csinf, csqrt, csqrtf, \ r_ccos, r_ccosf, r_cexp, r_cexpf, r_clog, r_clogf, r_cmplx, r_cmplxf, \ r_conjg, r_conjgf, r_csin, r_csinf, r_csqrt, r_csqrtf, sincos, sincos_vo, \ sincosd, sincosdf, sincosf, sincosf_vo, sinhcosh, sinhcoshf, \ csinh, ctan, ctanh, ccosh, catanh, catan, casin, casinh, cacos, \ cacosh, conj, cproj, ccoshf, catanf, csinhf,\ ctanf, ctanhf,catanhf, casinf, casinhf, cacosf, cacoshf, conjf, cprojf \ ) # pragma linkage res_vec_4_linkage = ( result (f20, f21, f22, f23) ) # pragma use_linkage res_vec_4_linkage ( \ __F_sqrt4, __F_sqrt4f, \ __rsqrt4, __rsqrt4f, \ __sqrt4, __sqrt4f \ ) /* ** The trig reduce functions can have a bad effect on routines ** that call them, because the DECC compiler saves registers ** for _any_ path through the routine, rather than deferring ** until it's known whether a call to a trig reduce function ** is actually needed. ** ** To avoid this problem (which is likely to be inherent in most ** compilers), we specify a linkage for the trig reduce functions ** that allows their callers (nearly) maximal freedom in register use. ** I.e., specify that they preserve (nearly) all registers. */ # pragma linkage trig_reduce_linkage = ( \ parameters (f0, r0, r1, r2), \ result (r0), \ preserved( r16, r17, r18, r19, r20, r21 ), /* Parameters */ \ preserved( f16, f17, f18, f19, f20, f21 ), /* Parameters */ \ preserved( f22, f23, f24, f25, f26, f27 ), \ preserved( f28, f29, f30 ), \ notneeded(ai) \ ) # pragma linkage trigd_reduce_linkage = ( \ parameters (f0, r0, r1), \ result (r0), \ preserved( r16, r17, r18, r19, r20, r21 ), /* Parameters */ \ preserved( f16, f17, f18, f19, f20, f21 ), /* Parameters */ \ preserved( f22, f23, f24, f25, f26, f27 ), \ preserved( f28, f29, f30 ), \ notneeded(ai) \ ) # pragma linkage trig_reduce_linkage_l = ( \ parameters (r3, r0, r1, r2), \ result (r0), \ preserved( r16, r17, r18, r19, r20, r21 ), /* Parameters */ \ preserved( f16, f17, f18, f19, f20, f21 ), /* Parameters */ \ preserved( f22, f23, f24, f25, f26, f27 ), \ preserved( f28, f29, f30 ), \ notneeded(ai) \ ) # pragma use_linkage trig_reduce_linkage ( \ __trig_reduce, \ __trig_reducef \ ) # pragma use_linkage trigd_reduce_linkage ( \ __trigd_reduce, \ __trigd_reducef \ ) /* some recent decc compilers can not do this */ /* # pragma use_linkage trig_reduce_linkage_l ( __trig_reducel, __trigd_reducel ) */ # endif /* OSF */ /* ** NOTE: the "&&" clause is to turn off the pragma definitions for iVMS when ** compiling f, g or d floating types because the compiler issues an error */ # if (OP_SYSTEM == vms) # if ( __DECC_VER >= 60260000 ) # pragma message disable (nofntpdefdecl) # endif # if ( __ia64__ ) # pragma message disable (showmaplinkage,mapregignored) # endif # if __ia64__ && !__IEEE_FLOAT # pragma linkage complex_linkage = ( result (r0, r1) ) # else # pragma linkage complex_linkage = ( result (f0, f1) ) # endif # pragma use_linkage complex_linkage ( \ math$cacos_f, math$cacos_g, math$cacos_s, math$cacos_t, \ math$cacosh_f, math$cacosh_g, math$cacosh_s, math$cacosh_t, \ math$casin_f, math$casin_g, math$casin_s, math$casin_t, \ math$casinh_f, math$casinh_g, math$casinh_s, math$casinh_t, \ math$catan_f, math$catan_g, math$catan_s, math$catan_t, \ math$catanh_f, math$catanh_g, math$catanh_s, math$catanh_t, \ math$ccosh_f, math$ccosh_g, math$ccosh_s, math$ccosh_t, \ math$ctanh_f, math$ctanh_g, math$ctanh_s, math$ctanh_t, \ math$csinh_f, math$csinh_g, math$csinh_s, math$csinh_t, \ math$ctan_f, math$ctan_g, math$ctan_s, math$ctan_t, \ math$conj_f, math$conj_g, math$conj_s, math$conj_t, \ math$cproj_f, math$cproj_g, math$cproj_s, math$cproj_t, \ math$F_sincosd_f, math$F_sincosd_g, math$F_sincosd_s, math$F_sincosd_t, \ math$F_sincos_f, math$F_sincos_g, math$F_sincos_s, math$F_sincos_t, \ math$ccos_f, math$ccos_g, math$ccos_s, math$ccos_t, math$cdiv_f, \ math$cdiv_g, math$cdiv_s, math$cdiv_t, math$cexp_f, math$cexp_g, \ math$cexp_s, math$cexp_t, math$clog_f, math$clog_g, math$clog_s, \ math$clog_t, math$cmul_f, math$cmul_g, math$cmul_s, math$cmul_t, \ math$cpow_f, math$cpow_g, math$cpow_s, math$cpow_t, math$cpow_fq, \ math$cpow_gq, math$cpow_sq, math$cpow_tq, math$cpowi_f, math$cpowi_g, \ math$cpowi_s, math$cpowi_t, math$csin_f, math$csin_g, math$csin_s, \ math$csin_t, math$csqrt_f, math$csqrt_g, math$csqrt_s, math$csqrt_t, \ math$sincos_f, math$sincos_g, math$sincos_s, math$sincos_t, \ math$sincos_vo_f, math$sincos_vo_g, math$sincos_vo_s, math$sincos_vo_t, \ math$sincosd_f, math$sincosd_g, math$sincosd_s, math$sincosd_t, \ math$sinhcosh_f, math$sinhcosh_g, math$sinhcosh_s, math$sinhcosh_t, \ mth$ccos, mth$cdcos, mth$cdexp, mth$cdlog, mth$cdsin, mth$cdsqrt, mth$cexp, \ mth$cgcos, mth$cgexp, mth$cglog, mth$cgsin, mth$cgsqrt, mth$clog, \ mth$cmplx, mth$conjg, mth$cscos, mth$csexp, mth$csin, mth$cslog, mth$csqrt, \ mth$cssin, mth$cssqrt, mth$ctcos, mth$ctexp, mth$ctlog, mth$ctsin, \ mth$ctsqrt, mth$dcmplx, mth$dconjg, mth$gcmplx, mth$gconjg, mth$scmplx, \ mth$sconjg, mth$tcmplx, mth$tconjg, ots$divc, ots$divcd_r3, ots$divcg_r3, \ ots$mulc, ots$mulcd_r3, ots$mulcg_r3, ots$powcc, ots$powcc_r3, \ ots$powcdcd_r3, ots$powcdj, ots$powcgcg_r3, ots$powcgj, ots$powcj \ ) # define PRESERVED_REGISTERS preserved( \ r1, \ r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, \ f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, \ f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, \ f30 \ ) # if !__ia64__ || __IEEE_FLOAT # pragma linkage trig_reduce_linkage = ( \ parameters (f0, r0, r1, r16), \ result (r0), \ PRESERVED_REGISTERS, \ notneeded(ai) \ ) # pragma use_linkage trig_reduce_linkage ( \ math$trig_reduce_f, \ math$trig_reduce_g, \ math$trig_reduce_s, \ math$trig_reduce_t \ ) # pragma linkage trigd_reduce_linkage = ( \ parameters (f0, r0, r1), \ result (r0), \ PRESERVED_REGISTERS, \ notneeded(ai) \ ) # pragma use_linkage trigd_reduce_linkage ( \ math$trigd_reduce_f, \ math$trigd_reduce_g, \ math$trigd_reduce_s, \ math$trigd_reduce_t \ ) # endif # endif /* VMS */ #endif /* (COMPILER == dec_cc) */ #endif /* COMPILER_H */ LIBRARY/float128/dpml_lgamma_t.h0000644€­ Q01134020000000726115113665770015363 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" static const TABLE_UNION __lgamma_t_table[] = { /* Miscelaneous constants */ /* 000 */ DATA_1x2( 0x278b51a7, 0x7f5754d9 ), /* 008 */ DATA_1x2( 0x93c1bb66, 0x41630232 ), /* 016 */ DATA_1x2( 0xc864beb5, 0x3fed67f1 ), /* 024 */ DATA_1x2( 0x25aa1316, 0x3fcce6bb ), /* 032 */ DATA_1x2( 0x54442d18, 0x400921fb ), /* Rational Coefficents for Q(x) */ /* 040 */ DATA_1x2( 0xe37db0c8, 0xbfb3c467 ), /* 048 */ DATA_1x2( 0x736b184d, 0x3fca92d0 ), /* 056 */ DATA_1x2( 0xd307f71e, 0x3fd64276 ), /* 064 */ DATA_1x2( 0xe0c4c055, 0x3fc6220c ), /* 072 */ DATA_1x2( 0x2b5a189c, 0x3fa23e88 ), /* 080 */ DATA_1x2( 0xd793fd1b, 0x3f67a815 ), /* 088 */ DATA_1x2( 0x062913a2, 0x3f104902 ), /* 096 */ DATA_1x2( 0x00000000, 0x3ff00000 ), /* 104 */ DATA_1x2( 0xd55bd332, 0x3ff7ccf9 ), /* 112 */ DATA_1x2( 0x220544da, 0x3feabd93 ), /* 120 */ DATA_1x2( 0xa77dd24b, 0x3fcc168b ), /* 128 */ DATA_1x2( 0xe906da19, 0x3f9b84eb ), /* 136 */ DATA_1x2( 0x853dd82d, 0x3f556e14 ), /* 144 */ DATA_1x2( 0x14128311, 0x3eef83a4 ), /* Polynomial Coefficents phi(x) */ /* 152 */ DATA_1x2( 0x55555555, 0x3fb55555 ), /* 160 */ DATA_1x2( 0x16c14af4, 0xbf66c16c ), /* 168 */ DATA_1x2( 0x17e88ee8, 0x3f4a01a0 ), /* 176 */ DATA_1x2( 0xe14af2a1, 0xbf438134 ), /* 184 */ DATA_1x2( 0x2d63c94c, 0x3f4b92c9 ), /* 192 */ DATA_1x2( 0xa8dfce6f, 0xbf5ef97f ), /* 200 */ DATA_1x2( 0x735455ae, 0x3f74c37d ), }; #define OVERFLOW_THRESHOLD *((double *) ((char *)__lgamma_t_table + 0)) #define REAL_BIG *((double *) ((char *)__lgamma_t_table + 8)) #define HALF_LN_2_PI *((double *) ((char *)__lgamma_t_table + 16)) #define HALF_LN_PI_OVER_2 *((double *) ((char *)__lgamma_t_table + 24)) #define PI *((double *) ((char *)__lgamma_t_table + 32)) #define P_COEFS ((double *) ((char *)__lgamma_t_table + 40)) #define Q_COEFS ((double *) ((char *)__lgamma_t_table + 96)) #define PHI_COEFS ((double *) ((char *)__lgamma_t_table + 152)) #define PHI(a,u) u = a*a; u = a*POLY6(PHI_COEFS, u) #define Q(x) (POLY6(P_COEFS, x)/POLY6(Q_COEFS, x)) LIBRARY/float128/dpml_exception.c0000644€­ Q01134020000001733315113665770015574 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if !defined(DPML_DO_SIDE_EFFECTS_NAME) # define DPML_DO_SIDE_EFFECTS_NAME __INTERNAL_NAME(do_side_effects) #endif #if !defined(DPML_GET_ENVIRONMENT_NAME) # define DPML_GET_ENVIRONMENT_NAME __INTERNAL_NAME(get_environment) #endif #if !defined(DPML_SIGNAL_NAME) # define DPML_SIGNAL_NAME __INTERNAL_NAME(signal) #endif #define GLOBAL_TABLE_VALUES #include "dpml_private.h" #include "dpml_error_codes.h" /* * Include platform specific headers. Anything not defined in them will * be defaulted below. */ #if defined(PLATFORM_SPECIFIC_HEADER_FILE) # include PLATFORM_SPECIFIC_HEADER_FILE #endif /* * The follow macros and code are used to to define the default exception * model. If no exception definitions were made in the above files then * the default behavior will be determined by whether or not IEEE floating * point is defined. * * If IEEE floating point is defined, the exception handler assumes the * existance of a control register and a set of routines to read and write * it. Otherwise the default behavior is defined to signal all exceptions * except underflow which is flushed to zero. The default exception behaviors * do not allow for the mixing of IEEE behavior and non-IEEE. I.e. by default * you get one or the other. * * * * If IEEE exception behavior make sure things that are supposed to be * defined, are defined */ #if IEEE_EXCEPTION_BEHAVIOR # if !defined(DPML_GET_FPCSR) # error "DPML_GET_FPCSR must be defined for IEEE exception behavior" # endif # if !defined(DPML_SET_FPCSR) # error "DPML_SET_FPCSR must be defined for IEEE exception behavior" # endif /* * The data type of the FPCSR needs to be known. If not specified, * assume it has the same type as the basic integer type on the platform. */ # if !defined(FP_CSR_TYPE) # define FP_CSR_TYPE WORD # endif /* * We need to be able to map the five basic DPML exceptions onto the bit * positions of the sticky bits in the FPCSR. If no mapping function is * provided assume that the DPML exception enumerations match the bit * positions of the sticky bits in the FPCSR */ # if !defined(DPML_FPCSR_STICKY_BITS) # define DPML_FPCSR_STICKY_BITS(d) SET_BIT(d) # endif #endif /* * If no user exception environment is defined, read the enviornment from * the exception enable in the FPCSR for the IEEE case and just set to * signal everything except underflow otherwise. */ #if !defined(DPML_GET_ENVIRONMENT) # if IEEE_EXCEPTION_BEHAVIOR # define DPML_GET_ENVIRONMENT(e) \ P_EXCPT_REC_ENVIRONMENT(p, DPML_GET_FPCSR(e)) # else # define DPML_GET_ENVIRONMENT(e) \ P_EXCPT_REC_ENVIRONMENT(p, ( ENABLE_FLUSH_TO_ZERO \ | ENABLE_SINGULARITY \ | ENABLE_OVERFLOW \ | ENABLE_INVALID \ | ENABLE_LOST_SIGNIFICANCE )) # endif #endif /* * If no user supplied signal mechanism, use the ANSI C raise() to generate * signal */ extern int raise(int); #if !defined(DPML_SIGNAL) && !defined(MINIMAL_SILENT_MODE_EXCEPTION_HANDLER) && \ !defined(wnt) # include # define DPML_SIGNAL(p) raise(SIGFPE) #else # define DPML_SIGNAL(p) #endif /* * If no side effects are specified then set errno, signal if the envirnment * indicates a signal and for the IEEE case update the sticky bits */ #if !defined(SET_ERRNO) # include # define SET_ERRNO(p) errno = ERRNO_VALUE(G_EXCPT_REC_DPML_ECODE(p)) #endif #if defined(IEEE_EXCEPTION_BEHAVIOR) # if !defined(DPML_UPDATE_STICKY_BITS) # define DPML_UPDATE_STICKY_BITS(p) \ { \ FP_CSR_TYPE fpcsr; \ DPML_GET_FPCSR(fpcsr); \ fpcsr |= FPCSR_STICKY_BITS(G_EXCPT_REC_DPML_ECODE(p)); \ DPML_SET_FPCSR(fpcsr); \ } # endif #else # define DPML_UPDATE_STICKY_BITS(p) #endif #if !defined(DPML_DO_SIDE_EFFECTS) # define DPML_DO_SIDE_EFFECTS(p) DPML_DO_SIDE_EFFECTS_NAME(p) static void DPML_DO_SIDE_EFFECTS_NAME(DPML_EXCEPTION_RECORD *p) { SET_ERRNO(p); # if !defined (MINIMAL_SILENT_MODE_EXCEPTION_HANDLER) /* set ieee sticky bit before signaling exception */ DPML_UPDATE_STICKY_BITS(p); if (G_EXCPT_REC_ENVIRONMENT(p) & SET_BIT(G_EXCPT_REC_DPML_ECODE(p))) DPML_SIGNAL(p); # endif } #endif /* !defined(DPML_DO_SIDE_EFFECTS) */ #define RET_VAL(type,val) GLOBAL_ADDR(type,val) #if !defined(GET_DPML_EXCEPTION_AND_VALUE) /* * NOTE: This should be fixed. The response table should * have only one set of (err,value) pairs if only one * behavior is supportted. */ # if IEEE_EXCEPTION_BEHAVIOR # define GET_DPML_EXCEPTION_AND_VALUE(p) \ { \ WORD e, v, t; \ e = G_EXCPT_REC_FUNC_ECODE(p); \ P_EXCPT_REC_DPML_ECODE(p, GET_IEEE_ERROR(e)); \ v = GET_IEEE_VALUE(e); \ t = G_EXCPT_REC_DATA_TYPE(p); \ P_EXCPT_REC_RET_VAL_PTR(p, RET_VAL(t,v)); \ } # else # define GET_DPML_EXCEPTION_AND_VALUE(p) \ { \ WORD e, v, t; \ e = G_EXCPT_REC_FUNC_ECODE(p); \ P_EXCPT_REC_DPML_ECODE(p, GET_FAST_ERROR(e)); \ v = GET_FAST_VALUE(e); \ t = G_EXCPT_REC_DATA_TYPE(p); \ P_EXCPT_REC_RET_VAL_PTR(p, RET_VAL(t,v)); \ } # endif #endif #if (EXCEPTION_INTERFACE_RECEIVE == receive_exception_record) # define EXCPTN_ARG DPML_EXCEPTION_RECORD *p # define DECLARATIONS WORD err = G_EXCPT_REC_FUNC_ECODE(p) #else # define EXCPTN_ARG WORD err # define DECLARATIONS DPML_EXCEPTION_RECORD __tmp, *p = &__tmp; #endif #if !defined(DPML_EXCEPTION) void * DPML_EXCEPTION_NAME(EXCPTN_ARG) { DECLARATIONS; /* Split input error code into type, and base error */ P_EXCPT_REC_DATA_TYPE(p, GET_ERR_CODE_TYPE(err)); P_EXCPT_REC_FUNC_ECODE(p, GET_TYPELESS_ERR_CODE(err)); DPML_GET_ENVIRONMENT(p); if (err < 0) /* Just a request for info */ return (void *) G_EXCPT_REC_ENVIRONMENT(p); GET_DPML_EXCEPTION_AND_VALUE(p); if (G_EXCPT_REC_DPML_ECODE(p) != DPML_NO_ERROR) DPML_DO_SIDE_EFFECTS(p); return G_EXCPT_REC_RET_VAL_PTR(p); } #endif LIBRARY/float128/assert.h0000644€­ Q01134020000000365115113665770014066 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #ifndef ASSERT #if (DPML_DEBUG) #define ASSERT(x) { \ if (!(x)) { \ printf("Assertion %s failed: file %s line %d\n", \ STR(x), __FILE__, __LINE__); \ } \ } #else #define ASSERT(x) #endif /* DPML_DEBUG */ #endif /* defined ASSERT */ LIBRARY/float128/dpml_exp.c0000644€­ Q01134020000004532115113665770014370 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #define MAKE_COMMON #if !defined(BUILD_FILE_NAME) # define BUILD_FILE_NAME F_POW_BUILD_FILE_NAME #endif /* ** Pick up the latest default DPML definitions. however, don't let ** dpml_private.h default TABLE_NAME. This has already been done or over- ** ridden when the constant file was generated. */ #define DONT_DEFAULT_TABLE_NAME 1 #define NEW_DPML_MACROS 1 #include "dpml_private.h" #if defined(UNDEF_TABLE_NAME) # undef TABLE_NAME #endif /* ** Pick up common build time constants and definitions from the generated ** power constant table file */ #define DEFINE_SYMBOLIC_CONSTANTS 1 #include STR( BUILD_FILE_NAME ) /* ** Pick up common compile time constants and definitions shared by ** pow and exp. */ #include "dpml_pow.h" /* Must come after BUILD_FILE_NAME */ /* ** Select data type and algorithm specific constants from the included file */ #if EXP2 # define EXP_SELECT(a,b,c) a # define EXP_EXP10_SELECT(a,b) # define EXP2_SELECT(a,b) a # define NOT_EXP2(a) #elif EXP10 # define EXP_SELECT(a,b,c) b # define EXP_EXP10_SELECT(a,b) b # define EXP2_SELECT(a,b) b # define NOT_EXP2(a) a #else # define EXP_SELECT(a,b,c) c # define EXP_EXP10_SELECT(a,b) a # define EXP2_SELECT(a,b) b # define NOT_EXP2(a) a #endif #if (!ONE_TYPE && USE_BACKUP) # define EXP_HI_CHECK EXP_SELECT(EXP2_HI_CHECK_R, \ EXP_HI_CHECK_R, \ EXP10_HI_CHECK_R) # define EXP_LO_CHECK EXP_LO_CHECK_R # define POW2_LO_CHECK POW2_LO_CHECK_R # define POW2_HI_CHECK POW2_HI_CHECK_R #else # define EXP_HI_CHECK EXP_SELECT(EXP2_HI_CHECK_F, \ EXP_HI_CHECK_F, \ EXP10_HI_CHECK_F) # define EXP_LO_CHECK EXP_LO_CHECK_F # define POW2_LO_CHECK POW2_LO_CHECK_F # define POW2_HI_CHECK POW2_HI_CHECK_F #endif #define BIG ACC_BIG /* ** Design Overview: ** --------------- ** ** Given x and a positive integer POW2_K, for b = 2, e or 10 define: ** ** t = x * (lnb/ln2) ** m = nint(t * (2^POW2_K))/2^POW2_K (1) ** z = x - m ( ln2/lnb) ** w = t - m ** ** Then ** ** e^x = 2^(x*(lnb/ln2)) ** = 2^(m + w) ** = 2^m * 2^w (2) ** = 2^m * e^z (3) ** ** From the definition of m, it follows that m can be re-written as ** ** m = I + j/(2^POW2_K) ** ** where I and j are integers and 0 <= j <= 2^POW2_K - 1. It follows that (3) ** can be written as: ** ** e^x = 2^(I + j/(2^POW2_K)) * e^z ** = 2^I * 2^(j/(2^POW2_K)) * e^z (4) ** ** Now e^z can be approximated by a polynomial of the form: ** ** e^z = 1 + z*p(z) ** ** So that (4) can be rewritten as: ** ** e^x = 2^I * 2^(j/(2^POW2_K))*(1 + z*p(z)) (5) ** ** Design Details: ** -------------- ** ** o The multiplication by 2^I can be accomplished by adding I to the ** exponent field of a binary floating point number or creating an ** appropriate floating point value and multiplying. ** ** o There are exactly 2^(POW2_K) possible values represented by ** 2^(j/(2^POW2_K)). These can be stored in a table and looked up ** at run time using the bit sequence in 'j' as an index. The form of ** the table values (hi and lo pieces) is determined by efficiency ** considerations for fast pow and exp, although the performance ** impact on exp is minimal: one floating point add, if sequential ** polynomial evaluation is used; none if parallel evaluation is used. ** */ /* ** IMPLEMENTATION ISSUES: ** ---------------------- ** ** In general, extra precision is required at two key points in the algorithm: ** the argument reduction (computing z or w), and the scaling by 2^(j/2^POW2_K). ** On systems where no backup precision is available, these calculations are ** performed in hi and lo pieces to preserve the overall accuracy of the final ** result. ** ** Let T(j) = 2^(j/2^POW2_K) correctly rounded to F_PRECISION and define ** R(j) = [2^(j/2^POW2_K) - T(j)]/T(j). We assume that these values are ** precomputed and stored in a table. ** ** ** Data Types With No Backup ** ------------------------- ** ** Compute the reduced argument, z = x - m*(ln2/lnb), carefully, using ** ln2 in hi and lo pieces: ** ** z <-- [ x - m*hi_bits(ln2/lnb) ] - m*lo_bits(ln2/lnb) ** ** Perform the evaluation as: ** ** e^x = 2^I * 2^(j/(2^POW2_K)) * [ 1 + z*p(z) ] ** = 2^I * [ T(j) + T(j)*R(j) ] * [ 1 + z*p(z) ] ** = 2^I * T(j) * [ 1 + R(j) ] * [ 1 + z*p(z) ] ** = [ 2^I * T(j) ] * [ 1 + R(j) + z*p(z) + R(j)*z*p(z) ] ** ** Denote 2^I*T(j) as V(I,j) and note that the last term is insignificant ** relative to the final result, then we have: ** ** e^x = [ 2^I * T(j) ] * [ 1 + R(j) + z*p(z) + R(j)*z*p(z) ] ** = V(I,j) * { 1 + [ R(j) + z*p(z) ] } ** = V(I,j) + V(I,j)*[ R(j) + z*p(z) ] ** ** Data Types With Backup ** ---------------------- ** ** Compute all intermediate results in backup precision: ** ** w <-- (x/ln2) - m ** ** e^x = 2^I * 2^(j/(2^POW2_K)) * 2^w ** = 2^I * T(j) * [1 + w*q(w)] ** = V(I,j) * Q(w) ** ** where V(I,j) is as above. */ #ifndef BASE_NAME # define BASE_NAME EXP_SELECT( EXP2_BASE_NAME, \ EXP10_BASE_NAME, \ EXP_BASE_NAME) #endif #define ACC_POLY_F EXP_SELECT(ACC_POW2_POLY_F, ACC_EXP10_POLY_F, ACC_EXP_POLY_F) #define ERROR_OVERFLOW EXP2_SELECT(EXP2_OVERFLOW, EXP_OVERFLOW) #define ERROR_UNDERFLOW EXP2_SELECT(EXP2_UNDERFLOW, EXP_UNDERFLOW) #define NO_ERR_POS_INF EXP2_SELECT(EXP2_OF_INF, EXP_OF_INF) #define NO_ERR_NEG_INF EXP2_SELECT(EXP2_OF_NEG_INF, EXP_OF_NEG_INF) #if !defined(SPECIAL_EXP) # if !defined F_ENTRY_NAME # define F_ENTRY_NAME EXP_SELECT(F_EXP2_NAME, \ F_EXP10_NAME, \ F_EXP_NAME) # endif F_TYPE F_ENTRY_NAME( F_TYPE x ) { EXCEPTION_RECORD_DECLARATION B_TYPE fm, z, w, t; B_UNION stack_tmp_u; F_UNION stack_tmp_v; U_WORD status_word; WORD m, i, j; # if !COMPATIBILITY_MODE WORD func_error_word ; # endif /* ** Weed out: near overflow and underflow cases; NaN's, Inf's and ** denorms; arguments that would underflow during polynomial ** evaluation. ** ** The product x*(1/ln2) is on the critical path of this routine. ** Because the code is structured with a branch prior to the ** multiplication, some compilers fail to schedule the load of the ** constant 1/ln2 early enough to avoid delaying the reduced argument ** computation. To avoid this delay, we preload (1/ln2). */ stack_tmp_v.f = x; i = stack_tmp_v.F_SIGNED_HI_WORD; m = i & MAKE_MASK(F_SIGN_BIT_POS, 0); NOT_EXP2( t = EXP_EXP10_SELECT(RECIP_LN2, LN10_OV_LN2); ) if (((U_WORD) m - EXP_LO_CHECK) >= EXP_HI_CHECK) goto possible_problems; /* ** compute the reduced argument, w. Note that we obtain ** nint((x/ln2) * (2^POW2_K)) by adding x/ln2 to a suitably large ** constant (BIG). This requires that the rounding mode in effect ** at the time the add takes place must be round-to-nearest. */ z = EXP2_SELECT( (B_TYPE) x , ((B_TYPE) x) * t ) ; INIT_FPU_STATE_AND_ROUND_TO_NEAREST(status_word); t = BIG + z; /* Save for getting m later on */ fm = D_GROUP(t - BIG); #define CONS_HI EXP_EXP10_SELECT( LN2_HI, LN2_OV_LN10_HI ) #define CONS_LO EXP_EXP10_SELECT( LN2_LO, LN2_OV_LN10_LO ) w = EXP2_SELECT( z - fm , BACKUP_SELECT( z - fm, D_GROUP(x - fm*CONS_HI) - fm*CONS_LO ) ); /* ** Now get the bits of m as a integer and break it up into I and j */ stack_tmp_u.f = t; GET_LOW_32_BITS(m, stack_tmp_u); j = (m & POW2_INDEX_MASK) << POW2_INDEX_POS; i = m & (~POW2_INDEX_MASK); z = BACKUP_SELECT( ACC_POW2_POLY_R(w), ACC_POLY_F( POW2_LO_OV_POW2_HI(j), w ) ); /* ** Scale 2^(j/2^POW2_K) by 2^I, so that only one multiply is done. ** Note that the macros IPOW2(j) and IPOW2_LO(u,j) are used to access ** the table value T(j) as an integer rather than as a floating point ** value. */ IF_SMALL_WORD(IPOW2_LO(stack_tmp_u,j);) m = IPOW2(j); i = ALIGN_SCALE_WITH_EXP(i); m = W_ADD_TO_EXP_FIELD(m, i); stack_tmp_u.B_HI_WORD = m; t = stack_tmp_u.f; /* Check for possible problems and do the final multiply */ if (((U_WORD) IEEE_SELECT(m, (m & LO_MASK)) - POW2_LO_CHECK) >= POW2_HI_CHECK) goto boundary_check; z = BACKUP_SELECT(z*t, t + t*z); RESTORE_FPU_STATE(status_word); return (F_TYPE) z; boundary_check: /* ** Need to check for overflow, underflow and denormals. Don't need ** round to nearest state any more so restore original state */ RESTORE_FPU_STATE(status_word); /* ** Do the "final" multiple. However, when no backup is available ** the final multiply might involve a denormal or NaN, so we need to ** do this scaling carefully. Note that for the no-backup case, ** we are essentially re-doing the calculation as ** 2^I*(T(j) + T(j)*p(z)) */ BACKUP_SELECT(z = t*z;, t = POW2_HI(j); z = t + t*z; ) stack_tmp_u.f = z; m = stack_tmp_u.B_HI_WORD; IF_NO_BACKUP( /* "Multiply" by 2^i */ m = W_ADD_TO_EXP_FIELD(m, i); stack_tmp_u.B_HI_WORD = m; z = stack_tmp_u.f; ) /* ** Isolate exponent field and check for overflow and underflow. Note ** that subtracting 1 from the biased exponent field causes 0 exponents ** (which indicate underflows or denormal results) to be mapped to the ** high integer range. This allows testing for OK results, overflows ** and underflow by checking the size of (i-1) */ i = ((U_WORD) m) >> B_EXP_POS; IF_VAX( i &= MAKE_MASK(B_EXP_WIDTH + 1, 0); ) i -= BACKUP_SELECT( (F_MIN_BIN_EXP + B_EXP_BIAS), 1); if ((U_WORD) i <= F_MAX_BIN_EXP - BACKUP_SELECT( F_MIN_BIN_EXP, (1 - B_EXP_BIAS))) /* No exceptions, return final result */ return (F_TYPE) z; # if COMPATIBILITY_MODE j = ERROR_OVERFLOW; # else func_error_word = ERROR_WORD( STATUS_OVERFLOW, POS_HUGE_INDEX, POS_INFINITY_INDEX, F_TYPE_ENUM, DPML_ERANGE, 0 ) ; # endif if (((U_WORD) i) < (2*F_MAX_BIN_EXP + B_EXP_BIAS)) goto do_exception; /* ** OK, If we get here, the result is (most likely) an underflow or ** a denormal value. */ # if COMPATIBILITY_MODE j = ERROR_UNDERFLOW; # else func_error_word = ERROR_WORD( STATUS_UNDERFLOW, POS_ZERO_INDEX, POS_ZERO_INDEX, F_TYPE_ENUM, DPML_ERANGE, 0 ) ; # endif # if IEEE_FLOATING i += (F_PRECISION + 1); if ((WORD) i < 0) goto do_exception; /* ** The result is probably denormal so we have to (carefully) ** generate the result. Begin by setting the exponent field to ** the exponent field of 1, minus the number of bits of ** "denormalization" and convert to F_TYPE */ { F_TYPE u, v; stack_tmp_u.B_HI_WORD = m - ALIGN_WITH_B_TYPE_EXP(F_MIN_BIN_EXP); v = (F_TYPE) stack_tmp_u.f; /* ** Now add 1 to scaled result to force an alignment shift. The ** result of the addition will have correct fraction field for ** the denormalized result, but not the correct exponent */ u = (F_TYPE) ONE; v += u; stack_tmp_v.f = v; /* ** If the result of the sum is equal to one, then the final result ** will underflow. Otherwise remove the scale factor (i.e. get ** the correct exponent field) by subtracting the exponent of 1 ** from v. */ if (v == u) goto do_exception; m = stack_tmp_v.F_HI_WORD - ALIGN_W_EXP_FIELD(F_EXP_BIAS - F_NORM); stack_tmp_v.F_HI_WORD = m; v = stack_tmp_v.f; /* ** check to see if final result really was a denorm */ # if COMPATIBILITY_MODE if (((m & F_EXP_MASK) == 0) && !PROCESS_DENORMS) goto do_exception; # else if ( ( m & F_EXP_MASK ) == 0 ) { P_EXCPTN_VALUE_F( tmp_rec.value_under_test, v ) ; func_error_word = ERROR_WORD( STATUS_DENORM_PROCESSING | STATUS_UNDERFLOW, POS_ZERO_INDEX, POS_ZERO_INDEX, F_TYPE_ENUM, DPML_ERANGE, 0 ) ; goto do_exception ; } # endif return v ; } NaN_or_Inf: /* ** If we get here, i and m are the high words of x and |x| ** respectively. If m doesn't contain all of the bits of x, ** (i.e. BITS_PER_WORD < BITS_PER_F_TYPE) check for non-zero bits ** in the low word */ m <<= (BITS_PER_WORD - F_EXP_POS); IF_SMALL_WORD( m = m OR_LOW_BITS_SET(stack_tmp_v); ) if (m != 0) /* x was NaN, just return it */ return x; /* x was +/- infinity */ # if COMPATIBILITY_MODE j = ((WORD) i < 0) ? NO_ERR_NEG_INF : NO_ERR_POS_INF; # else func_error_word = ( ( WORD )i < 0 ) ? ERROR_WORD( EXP2_SELECT(STATUS_NO_ERROR,STATUS_UNDERFLOW), POS_ZERO_INDEX, POS_ZERO_INDEX, F_TYPE_ENUM, DPML_ERANGE, 0 ) : ERROR_WORD( EXP2_SELECT(STATUS_NO_ERROR,STATUS_OVERFLOW), POS_HUGE_INDEX, POS_INFINITY_INDEX, F_TYPE_ENUM, DPML_ERANGE, 0 ) ; # endif # endif goto do_exception; possible_problems: /* ** If we get here, x was either very small (e^x = 1), very big (e^x is ** overflow or underflow) or and IEEE special case (NaN or Inf) */ IF_IEEE( /* Screen out NaN's and Inf's */ if (m >= F_EXP_MASK) goto NaN_or_Inf; ) /* If argument is tiny (including denorms and zero) just return 1. */ if (m <= EXP_LO_CHECK) return (F_TYPE) ONE; /* ** If we get here, the final result is guaranteed to overflow or ** underflow, depending on the sign of x. Since i contains the high ** bits of x, just branch on the sign bit of x. */ # if COMPATIBILITY_MODE j = (i & F_SIGN_BIT_MASK) ? ERROR_UNDERFLOW : ERROR_OVERFLOW; /* Argument was positive */ # else func_error_word = ( i & F_SIGN_BIT_MASK ) ? ERROR_WORD( STATUS_UNDERFLOW, POS_ZERO_INDEX, POS_ZERO_INDEX, F_TYPE_ENUM, DPML_ERANGE, 0 ) : ERROR_WORD( STATUS_OVERFLOW, POS_HUGE_INDEX, POS_INFINITY_INDEX, F_TYPE_ENUM, DPML_ERANGE, 0 ) ; # endif goto do_exception; do_exception: # if COMPATIBILITY_MODE GET_EXCEPTION_RESULT_1(j, x, x); return x; # else RETURN_EXCEPTION_RESULT_1( func_error_word, x, F_F, _FpCodeExp ) ; # endif } #else /* defined(SPECIAL_EXP) */ # if USE_BACKUP # define LO_PART_DECL # else # define LO_PART pow2_low # define LO_PART_DECL , F_TYPE *LO_PART # endif B_TYPE F_EXP_SPECIAL_ENTRY_NAME (F_TYPE x, EXP_WORD_TYPE *pow_of_two LO_PART_DECL) { B_TYPE fm, z, w, t; B_UNION stack_tmp_u; WORD m, j; /* ** compute the reduced argument, w. */ z = (B_TYPE) x * RECIP_LN2; t = BIG + z; /* Save for getting m later on */ fm = t - BIG; w = BACKUP_SELECT( (z - fm), (x - fm*LN2_HI) - fm*LN2_LO ); /* ** Now get the bits of m as a integer and break it up into I and j. ** Return the value of I in *pow_of_two. */ stack_tmp_u.f = t; GET_LOW_32_BITS(m, stack_tmp_u); j = (m & POW2_INDEX_MASK) << POW2_INDEX_POS; # if USE_BACKUP z = POW2_HI(j) * ACC_POW2_POLY_R(w); # else z = POW2_HI(j); *LO_PART = z*ACC_EXP_POLY_F( POW2_LO_OV_POW2_HI(j), w ); # endif *pow_of_two = m & (~POW2_INDEX_MASK); return z; } #endif LIBRARY/float128/dpml_pow.h0000644€­ Q01134020000001354015113665770014404 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #if ANSI_C_DEF # define IF_ANSI_C(x) x # define ANSI_C_SELECT(x,y) x # define ERROR_FILE_NAME POW_ANSI_C_ERROR_BUILD_FILE_NAME # define ANSI_C_DEF 1 #else # define IF_ANSI_C(x) # define ANSI_C_SELECT(x,y) y # define ERROR_FILE_NAME POW_FORTRAN_ERROR_BUILD_FILE_NAME # define ANSI_C_DEF 0 #endif /* Define the evalution precision characteristics and parameters */ #define ALIGN_WITH_B_TYPE_EXP(w) ((U_WORD)(w) << B_EXP_POS) #define S32_PER_B_TYPE (BITS_PER_B_TYPE >> 5) #define __LO_32(n) UNION_IX(n, (n-1)) #define SIGNED_LO_32 i32[__LO_32(S32_PER_B_TYPE)] #define UNSIGNED_LO_32 u32[__LO_32(S32_PER_B_TYPE)] #if BITS_PER_WORD < BITS_PER_B_TYPE # define IF_SMALL_WORD(x) x #else # define IF_SMALL_WORD(x) #endif /* ** When BITS_PER_F_TYPE < BITS_PER_WORD, the sign bit of IEEE floating point ** values is not at the high end of a WORD, so that integer tests on the ** sign of the value don't yield the correct result. */ #if BITS_PER_F_TYPE < BITS_PER_WORD # define R_WORD PASTE(INT_, BITS_PER_F_TYPE) # define SIGN_EXTEND(x) ((WORD)((R_WORD) (x))) #else # define SIGN_EXTEND(x) ((WORD) (x)) #endif #define NORMALIZE(x,f) BACKUP_SELECT( \ B_COPY_SIGN_AND_EXP(x, ONE, f), \ F_COPY_SIGN_AND_EXP((B_TYPE) x, ONE, f) \ ) /* ** For IEEE types, we get the index bits for the log table by shifting ** right. But for VAX types we need to do a PDP_SHUFFLE and shift left ** ** NOTES: ** o LOG_INDEX_BASE_POS is computed at table generation time and is ** defined in the power table include file. ** o For VAX data types, the macro, POSITION_BITS, combines the index ** alignment with the PDP_SHUFFLE. */ #define LOG_INDEX_SHIFT (LOG2_K + LOG_INDEX_BASE_POS) #define LOG_INDEX_AND_RND_BIT_MASK MAKE_MASK(LOG2_K+1, LOG_INDEX_BASE_POS-1) #define LOG_INDEX_MASK MAKE_MASK(LOG2_K + 1, LOG_INDEX_BASE_POS) #define LOG_INDEX_ROUND_BIT SET_BIT(LOG_INDEX_BASE_POS - 1) #if IEEE_FLOATING # define POSITION_BITS(ix, exp_pos) (ix >> (exp_pos - LOG_INDEX_SHIFT)) #else # define POSITION_BITS(ix, exp_pos) \ ((ix << (LOG_INDEX_SHIFT - (exp_pos))) | \ ((U_INT_32)ix >> ((exp_pos) + (32 - LOG_INDEX_SHIFT)))) #endif /* ** When aligning the scale factor with the exponent field of the POW2 table ** entries, we may need to shift right or left depending on the relative ** sizes of POW2_K and E_EXP_POS. Also, when adding to the exponent field ** of a VAX data type, we must make sure that the addition does not propagate ** beyond the exponent field. To insure this, we mask off the sign, exponent ** and high bits using LO_MASK (since these bits are in the low part of the ** integer). Last, but not least, when determining if x^y has an integer ** exponent, we need to do some shifting *AFTER* a PDP_SHUFFLE for VAX ** data types. */ #if (B_EXP_POS - POW2_K) >= 0 # define ALIGN_SCALE_WITH_EXP(m) ((m) << (B_EXP_POS - POW2_K)) # define PDP_F_EXP_POS F_EXP_POS # define PDP_B_EXP_POS B_EXP_POS #else # define ALIGN_SCALE_WITH_EXP(m) ((m) >> (POW2_K - B_EXP_POS)) # define PDP_F_EXP_POS (F_EXP_POS + BITS_PER_F_TYPE - 16) # define PDP_B_EXP_POS (B_EXP_POS + BITS_PER_B_TYPE - 16) #endif #if IEEE_FLOATING # define W_ADD_TO_EXP_FIELD(i, j) ((i) + (j)) #else # define LO_MASK MAKE_MASK(F_SIGN_BIT_POS + 1, 0) # define W_ADD_TO_EXP_FIELD(i, j) ((i & ~LO_MASK) | ((i + j) & LO_MASK)) #endif #define POW2_INDEX_MASK MAKE_MASK(POW2_K, 0) #if USE_DIVIDE # define DIV_SELECT(x,y) x #else # define DIV_SELECT(x,y) y #endif /* ** We obtain the nearest integer part of x*(1/ln2) as a floating point value ** by an "add big/sub big" operation. Getting the nearest integer as an ** integer value is done by extracting the low 32 bits of the "add big" ** operation. For VAX data types, the low 32 bits must be PDP_SHUFFLED ** before they can be used. */ #if IEEE_FLOATING # define GET_LOW_32_BITS(i,u) i = (WORD) ( (INT_32) u.B_LO_WORD ) #else # define GET_LOW_32_BITS(i,u) { \ U_INT_32 u32; \ u32 = ( U_INT_32) (u.uw[0] >> \ (BITS_PER_WORD - 32)); \ u32 = ((u32 >> 16) | (u32 << 16)); \ i = (WORD) ((INT_32) u32); \ } #endif LIBRARY/float128/dpml_erf_x.h0000644€­ Q01134020000002177715113665770014715 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "endian.h" static const TABLE_UNION TABLE_NAME[] = { /* erf class-to-action-mapping */ /* 000 */ DATA_1x2( 0x00651408, 0x14100000 ), /* 008 */ DATA_1x2( 0x00000001, 0x00000000 ), /* erfc class-to-action-mapping */ /* 016 */ DATA_1x2( 0x004d1408, 0x14924920 ), /* 024 */ DATA_1x2( 0x00000000, 0x00000000 ), /* 032 */ DATA_1x2( 0x00000001, 0x00000000 ), /* 040 */ DATA_1x2( 0x00000002, 0x00000000 ), /* unpacked 0 constant */ /* 048 */ POS, -131072, DATA_2x2( 0x00000000, 0x00000000, 0x00000000, 0x00000000 ), /* Fixed point coefficients for erf(x) evaluation */ /* 072 */ DATA_4( 0x690507d1, 0xeef69e7e, 0x0009a2c0, 0x00000000 ), /* 088 */ DATA_4( 0xd62f6ded, 0x5454a9ce, 0x04d23552, 0x00000000 ), /* 104 */ DATA_4( 0x651e03c7, 0x75c1acc3, 0x74cae68d, 0x00000002 ), /* 120 */ DATA_4( 0x45cd8894, 0x118d2231, 0x7e1a5137, 0x00000043 ), /* 136 */ DATA_4( 0x581434c9, 0x446de774, 0xb054a6dc, 0x00000cb0 ), /* 152 */ DATA_4( 0x8c034d61, 0x23f4d991, 0xed51c1a6, 0x0000af42 ), /* 168 */ DATA_4( 0xaaa84f23, 0x05d22b6b, 0x2d422b00, 0x001193ae ), /* 184 */ DATA_4( 0xe5f4276d, 0x6cab325d, 0xf115285e, 0x007ff6a2 ), /* 200 */ DATA_4( 0x67f8b051, 0x5aeb9398, 0x443544d8, 0x0721a9a1 ), /* 216 */ DATA_4( 0x07c1312a, 0xe0da6e19, 0x751f6dc1, 0x15a28319 ), /* 232 */ DATA_4( 0x6bfec344, 0x71d48a7f, 0x14db688d, 0x906eba82 ), /* 248 */ DATA_1x2( 0x00000001, 0x00000000 ), /* 256 */ DATA_4( 0x5cde0345, 0x90c5a9a4, 0x008bc747, 0x00000000 ), /* 272 */ DATA_4( 0x74f5c2f8, 0x701ae2c3, 0x3eefe2f7, 0x00000000 ), /* 288 */ DATA_4( 0x6d581ca3, 0xcbcfcd58, 0xe5a7e267, 0x0000000d ), /* 304 */ DATA_4( 0x92ce8b13, 0xe89a8870, 0xa4a51881, 0x000001f7 ), /* 320 */ DATA_4( 0xd99eb0ef, 0xdf999924, 0xb407b7f2, 0x00003250 ), /* 336 */ DATA_4( 0xd77e2406, 0xdb9f0613, 0x68ec5b75, 0x0003affc ), /* 352 */ DATA_4( 0xb9d4bb0d, 0x21313bcc, 0xcdf4329f, 0x00332b1d ), /* 368 */ DATA_4( 0xc8a7cf9d, 0x5cc64048, 0x002b192c, 0x02048bcb ), /* 384 */ DATA_4( 0xe524025a, 0x0060238b, 0xf665cb1c, 0x0e222a9b ), /* 400 */ DATA_4( 0x6d9018fe, 0xb4bd5070, 0xbc469270, 0x3dd70b93 ), /* 416 */ DATA_4( 0x00000000, 0x00000000, 0x00000000, 0x80000000 ), /* 432 */ DATA_1x2( 0x00000001, 0x00000000 ), /* Fixed point coefficients for erfc(x) evaluation */ /* 440 */ DATA_4( 0xed06573b, 0x512796c0, 0x009aba1f, 0x00000000 ), /* 456 */ DATA_4( 0xc0316b85, 0xd5ef03cb, 0x8737cadd, 0x00000002 ), /* 472 */ DATA_4( 0x84785e50, 0xfea641fd, 0xa89094fc, 0x000001a8 ), /* 488 */ DATA_4( 0xa40b5daf, 0x671a4ac7, 0xdf02c17c, 0x0000669e ), /* 504 */ DATA_4( 0xe691a849, 0x73fe6ac1, 0xe337f4e7, 0x000bf3cd ), /* 520 */ DATA_4( 0x6d5b4479, 0x9e22ec73, 0x7386ca8c, 0x00c251fe ), /* 536 */ DATA_4( 0x70d74b54, 0xff37636b, 0xaac6d558, 0x072327fe ), /* 552 */ DATA_4( 0xfda3ec67, 0xb10f37fc, 0x2ed79804, 0x2780b9f3 ), /* 568 */ DATA_4( 0x6fcba7b4, 0x663ae3dc, 0xabb226b4, 0x7dd1ffd9 ), /* 584 */ DATA_4( 0x6ae846ad, 0x61d40831, 0x18de9d28, 0xd396d32d ), /* 600 */ DATA_4( 0x6bfec344, 0x71d48a7f, 0x14db688d, 0x906eba82 ), /* 616 */ DATA_1x2( 0x000000-3, 0x00000000 ), /* 624 */ DATA_4( 0xa522fa40, 0x38900912, 0x02199f19, 0x00000000 ), /* 640 */ DATA_4( 0x4c93f48a, 0x5070d6ad, 0xed6686d5, 0x00000003 ), /* 656 */ DATA_4( 0x82a6ef78, 0xc9d7c414, 0x37e89742, 0x000001fb ), /* 672 */ DATA_4( 0xe05a1b8f, 0x16233622, 0xc0459e24, 0x00006c38 ), /* 688 */ DATA_4( 0x34408ea6, 0x539920f1, 0x36c389eb, 0x000bc6aa ), /* 704 */ DATA_4( 0xb302fa6d, 0x473e17d5, 0x0191c399, 0x00b7e45a ), /* 720 */ DATA_4( 0x7c5a230c, 0x10b9f27f, 0x1a1c27c2, 0x069606ff ), /* 736 */ DATA_4( 0xabbaddef, 0x7aff09fc, 0x170844cb, 0x23db7a3b ), /* 752 */ DATA_4( 0x91212a77, 0xf0d73ba7, 0xf7b1db1a, 0x70f46698 ), /* 768 */ DATA_4( 0x12d9c217, 0xf77fbd27, 0x526b5b36, 0xbc841944 ), /* 784 */ DATA_4( 0x00000000, 0x00000000, 0x00000000, 0x80000000 ), /* 800 */ DATA_1x2( 0x00000001, 0x00000000 ), /* Packed coefficients for mid numerator evaluation */ /* 808 */ DATA_4( 0xe2a7cbc0, 0xd824dff5, 0x2cf8e12d, 0xcbd29966 ), /* 824 */ DATA_4( 0x14a8dcf4, 0x17295b8a, 0x01782242, 0x88e5f042 ), /* 840 */ DATA_4( 0x7115fef4, 0x5861def3, 0xe7164162, 0xb66d0a3e ), /* 856 */ DATA_4( 0xed898946, 0x010150cf, 0xed17a27e, 0x9f024216 ), /* 872 */ DATA_4( 0xdacad206, 0x13319615, 0xf98f246f, 0xca00d3a2 ), /* 888 */ DATA_4( 0xee3b6486, 0x06462369, 0x1d6f83c8, 0xc5a1bc70 ), /* 904 */ DATA_4( 0x3ed3e2c8, 0xcc0060f7, 0x49be1d68, 0x99a7e90d ), /* 920 */ DATA_4( 0xe750aeb8, 0xca9bbf22, 0x2dd2d670, 0xc158e9c4 ), /* 936 */ DATA_4( 0xe1f88d88, 0x8cd95e49, 0x4d0fbe75, 0xc6beb986 ), /* 952 */ DATA_4( 0x0c71a92a, 0xc67ac67a, 0xf964e260, 0xa75abf3d ), /* 968 */ DATA_4( 0xf0b36cea, 0x28de78ed, 0xd4d57310, 0xe62294ca ), /* 984 */ DATA_4( 0x26f2d00a, 0x228cf6d2, 0x11d8c668, 0xffe345bc ), /* 1000 */ DATA_4( 0x0073676a, 0x43d22116, 0x122673b5, 0xe1e5d119 ), /* 1016 */ DATA_4( 0x23fc903c, 0x63895404, 0x69b73a2d, 0x997b13f1 ), /* 1032 */ DATA_4( 0x43669c7e, 0xdb71a733, 0x3be837ea, 0x9806802a ), /* 1048 */ DATA_4( 0x4f807f2e, 0xc4dfff5e, 0x3e94bd84, 0xc571ee37 ), /* 1064 */ DATA_4( 0x7630dbde, 0x67e257e9, 0x00000000, 0x80000000 ), /* Packed coefficients for mid denominator evaluation */ /* 1080 */ DATA_4( 0xd89b76c0, 0x05d4fe61, 0xd97e2ef3, 0xb4a2145d ), /* 1096 */ DATA_4( 0x31a6bc30, 0x9d9984a3, 0xb5e650f0, 0xf2a54f04 ), /* 1112 */ DATA_4( 0x9e7af042, 0xe97ce9f3, 0x6dc7ed1e, 0xa1c24c5a ), /* 1128 */ DATA_4( 0xc4c6fce4, 0x91b02101, 0x4754004e, 0x8d27a4b9 ), /* 1144 */ DATA_4( 0x7ec3ea24, 0xa0b199ce, 0x36b707b1, 0xb3a6cb36 ), /* 1160 */ DATA_4( 0x8319d0f4, 0x760a21f7, 0xcb561e52, 0xb03e6b4c ), /* 1176 */ DATA_4( 0xffcbf966, 0x13ab93a3, 0x54317f40, 0x899010a9 ), /* 1192 */ DATA_4( 0xb88b23a6, 0x930021bf, 0x030064e4, 0xae0d59ab ), /* 1208 */ DATA_4( 0x5250ffe6, 0x39761e97, 0x5586fbb9, 0xb44d80d5 ), /* 1224 */ DATA_4( 0xd048dc48, 0xe580fe89, 0xcd0c4ce7, 0x9980c3e0 ), /* 1240 */ DATA_4( 0x675bac48, 0x04253cdb, 0x5175b4d4, 0xd67474e1 ), /* 1256 */ DATA_4( 0x64c5aa78, 0x379d4d7d, 0x707f3016, 0xf413c5e7 ), /* 1272 */ DATA_4( 0x0c6e9318, 0xb23f0eb3, 0x440397fc, 0xdf3f2022 ), /* 1288 */ DATA_4( 0x7590a22a, 0x78a99e1c, 0x070ff8a1, 0xa07972f0 ), /* 1304 */ DATA_4( 0x07c619ca, 0x7d0a6907, 0xdae3e255, 0xaee9fe93 ), /* 1320 */ DATA_4( 0x163780fc, 0x30c4b60f, 0x2cb78373, 0x88152ee9 ), /* 1336 */ DATA_4( 0x63af014e, 0xa8344a43, 0x248138e7, 0x86d4a5bc ), /* 1352 */ DATA_4( 0x0000000c, 0x00000000, 0x00000000, 0x80000000 ), }; #define ERF_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 0)) #define ERFC_CLASS_TO_ACTION_MAP ((U_WORD const *) ((char *) TABLE_NAME + 16)) #define UX_ZERO ((UX_FLOAT *) ((char *) TABLE_NAME + 48)) #define ERF_COEF_ARRAY ((FIXED_128 *) ((char *) TABLE_NAME + 72)) #define ERF_COEF_ARRAY_DEGREE (( signed __int64 ) 0x000000000000000a ) #define ERFC_COEF_ARRAY ((FIXED_128 *) ((char *) TABLE_NAME + 440)) #define ERFC_COEF_ARRAY_DEGREE (( signed __int64 ) 0x000000000000000a ) #define MID_NUM_COEF_ARRAY ((FIXED_128 *) ((char *) TABLE_NAME + 808)) #define MID_NUM_COEF_ARRAY_DEGREE (( signed __int64 ) 0x0000000000000010 ) #define MID_NUM_SCALE_BIAS (( signed __int64 ) 0x0000000000000006 ) #define MID_NUM_SCALE_MASK (( signed __int64 ) 0x0000000000000007 ) #define MID_DEN_COEF_ARRAY ((FIXED_128 *) ((char *) TABLE_NAME + 1080)) #define MID_DEN_COEF_ARRAY_DEGREE (( signed __int64 ) 0x0000000000000011 ) #define MID_DEN_SCALE_BIAS (( signed __int64 ) 0x0000000000000005 ) #define MID_DEN_SCALE_MASK (( signed __int64 ) 0x0000000000000007 ) LIBRARY/float128/dpml_asinh.c0000644€­ Q01134020000012772115113665770014703 0ustar aakkasmkl/****************************************************************************** Copyright (c) 2007-2025, Intel Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "dpml_private.h" #include "sqrt_macros.h" #undef MAKE_ASINH #undef MAKE_ACOSH #if defined(ASINH) # define MAKE_ASINH # define BASE_NAME ASINH_BASE_NAME # define _F_ENTRY_NAME F_ASINH_NAME #elif defined(ACOSH) # define BASE_NAME ACOSH_BASE_NAME # define _F_ENTRY_NAME F_ACOSH_NAME #else # error "Must have one of ASINH, ACOSH defined" #endif #if !defined(F_ENTRY_NAME) # define F_ENTRY_NAME _F_ENTRY_NAME #endif /* Arcsinh & Arccosh -------------------------------------- This source can be compiled into both Arcsine and Arccosine routines. The definitions necessary to create the function follow. Function Generation: Along with any standard compile time definitions required by the dpml the following items should be defined on the compilation command line to create the indicated routine. Arcsinh : ASINH Arccosh : ACOSH To create each routine's 'include' file an initial compilation should be done using the following definition in addition to those above. MAKE_INCLUDE Selectable Build-time Parameters: The definitions below define the minimum "overhang" limits for those ranges of the routine with adjustable accuracy bounds. The numbers specified in the definitions are the number of binary digits of overhang. A complete discussion of these values and their use is included in the individual routine documentation. */ #define POLY_RANGE_OVERHANG 5 #define REDUCE_RANGE_OVERHANG 5 #define ASYM_RANGE_OVERHANG 7 #define LARGE_RANGE_OVERHANG 7 #if !defined(MAKE_INCLUDE) #include STR(BUILD_FILE_NAME) #endif /* Arcsinh -------------------------- The Arcsinh designs described here are the result of an effort to create a fast Arcsinh routine with error bounds near 1/2 lsb. The inherent conflict is that, to create fast routines we generally need to give up some accuracy, and conversely, to increase accuracy we often must give up speed. As a result, the design we're presenting defines a user (builder) configureable routine. That is, it is set up such that the builder of a routine may choose, through the proper setting of parameters, the degree of accuracy of the generated routine and hence, indirectly, its speed. The Design: The overall domain of the Arcsinh function has been divided up into six regions or paths as follows: (1) (2) (3) (4) (5) (6) |--------|------------|-----------|-----------|-------|----------| 0 small polynomial reduction asymptotic large huge (Note: Although the domain of Arcsinh extends from -infinite to +infinite, the problem can be considered one of only positive arguments through the application of the identity asinh(-x) = - asinh(x). ) Within each region a unique approximation to the Arcsinh function is used. Each is chosen for its error characteristics, efficiency and the range over which it can be applied. 1. Small region: asinh(x) = x (x <= max_small) Within the "small" region the Arcsinh function is approximated as asinh(x) = x. This is a very quick approximation but it may only be applied to small input values. There is effectively no associated storage costs. By limiting the magnitude of x the error bound can be limited to <= 1/2 lsb. 2. Polynomial region: Within the "polynomial" region the function is approximated as asinh(x) = x (1 + x^2 P(x)) (max_small_x